{
  "version": 3,
  "sources": ["../../../../../node_modules/jquery/dist/jquery.js", "../../../../../node_modules/react/cjs/react.development.js", "../../../../../node_modules/react/index.js", "../../../../../node_modules/scheduler/cjs/scheduler.development.js", "../../../../../node_modules/scheduler/index.js", "../../../../../node_modules/react-dom/cjs/react-dom.development.js", "../../../../../node_modules/react-dom/index.js", "../../../../../node_modules/react-dom/client.js", "../../../../../node_modules/react-is/cjs/react-is.development.js", "../../../../../node_modules/react-is/index.js", "../../../../../node_modules/object-assign/index.js", "../../../../../node_modules/prop-types/lib/ReactPropTypesSecret.js", "../../../../../node_modules/prop-types/lib/has.js", "../../../../../node_modules/prop-types/checkPropTypes.js", "../../../../../node_modules/prop-types/factoryWithTypeCheckers.js", "../../../../../node_modules/prop-types/index.js", "../../../../../node_modules/@popperjs/core/src/dom-utils/getWindow.js", "../../../../../node_modules/@popperjs/core/src/dom-utils/instanceOf.js", "../../../../../node_modules/@popperjs/core/src/utils/math.js", "../../../../../node_modules/@popperjs/core/src/utils/userAgent.js", "../../../../../node_modules/@popperjs/core/src/dom-utils/isLayoutViewport.js", "../../../../../node_modules/@popperjs/core/src/dom-utils/getBoundingClientRect.js", "../../../../../node_modules/@popperjs/core/src/dom-utils/getWindowScroll.js", "../../../../../node_modules/@popperjs/core/src/dom-utils/getHTMLElementScroll.js", "../../../../../node_modules/@popperjs/core/src/dom-utils/getNodeScroll.js", "../../../../../node_modules/@popperjs/core/src/dom-utils/getNodeName.js", "../../../../../node_modules/@popperjs/core/src/dom-utils/getDocumentElement.js", "../../../../../node_modules/@popperjs/core/src/dom-utils/getWindowScrollBarX.js", "../../../../../node_modules/@popperjs/core/src/dom-utils/getComputedStyle.js", "../../../../../node_modules/@popperjs/core/src/dom-utils/isScrollParent.js", "../../../../../node_modules/@popperjs/core/src/dom-utils/getCompositeRect.js", "../../../../../node_modules/@popperjs/core/src/dom-utils/getLayoutRect.js", "../../../../../node_modules/@popperjs/core/src/dom-utils/getParentNode.js", "../../../../../node_modules/@popperjs/core/src/dom-utils/getScrollParent.js", "../../../../../node_modules/@popperjs/core/src/dom-utils/listScrollParents.js", "../../../../../node_modules/@popperjs/core/src/dom-utils/isTableElement.js", "../../../../../node_modules/@popperjs/core/src/dom-utils/getOffsetParent.js", "../../../../../node_modules/@popperjs/core/src/enums.js", "../../../../../node_modules/@popperjs/core/src/utils/orderModifiers.js", "../../../../../node_modules/@popperjs/core/src/utils/debounce.js", "../../../../../node_modules/@popperjs/core/src/utils/mergeByName.js", "../../../../../node_modules/@popperjs/core/src/dom-utils/getViewportRect.js", "../../../../../node_modules/@popperjs/core/src/dom-utils/getDocumentRect.js", "../../../../../node_modules/@popperjs/core/src/dom-utils/contains.js", "../../../../../node_modules/@popperjs/core/src/utils/rectToClientRect.js", "../../../../../node_modules/@popperjs/core/src/dom-utils/getClippingRect.js", "../../../../../node_modules/@popperjs/core/src/utils/getBasePlacement.js", "../../../../../node_modules/@popperjs/core/src/utils/getVariation.js", "../../../../../node_modules/@popperjs/core/src/utils/getMainAxisFromPlacement.js", "../../../../../node_modules/@popperjs/core/src/utils/computeOffsets.js", "../../../../../node_modules/@popperjs/core/src/utils/getFreshSideObject.js", "../../../../../node_modules/@popperjs/core/src/utils/mergePaddingObject.js", "../../../../../node_modules/@popperjs/core/src/utils/expandToHashMap.js", "../../../../../node_modules/@popperjs/core/src/utils/detectOverflow.js", "../../../../../node_modules/@popperjs/core/src/createPopper.js", "../../../../../node_modules/@popperjs/core/src/modifiers/eventListeners.js", "../../../../../node_modules/@popperjs/core/src/modifiers/popperOffsets.js", "../../../../../node_modules/@popperjs/core/src/modifiers/computeStyles.js", "../../../../../node_modules/@popperjs/core/src/modifiers/applyStyles.js", "../../../../../node_modules/@popperjs/core/src/modifiers/offset.js", "../../../../../node_modules/@popperjs/core/src/utils/getOppositePlacement.js", "../../../../../node_modules/@popperjs/core/src/utils/getOppositeVariationPlacement.js", "../../../../../node_modules/@popperjs/core/src/utils/computeAutoPlacement.js", "../../../../../node_modules/@popperjs/core/src/modifiers/flip.js", "../../../../../node_modules/@popperjs/core/src/utils/getAltAxis.js", "../../../../../node_modules/@popperjs/core/src/utils/within.js", "../../../../../node_modules/@popperjs/core/src/modifiers/preventOverflow.js", "../../../../../node_modules/@popperjs/core/src/modifiers/arrow.js", "../../../../../node_modules/@popperjs/core/src/modifiers/hide.js", "../../../../../node_modules/@popperjs/core/src/popper-lite.js", "../../../../../node_modules/@popperjs/core/src/popper.js", "../../../../../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js", "../../../../../node_modules/react-modal/lib/helpers/tabbable.js", "../../../../../node_modules/react-modal/lib/helpers/focusManager.js", "../../../../../node_modules/react-modal/lib/helpers/scopeTab.js", "../../../../../node_modules/warning/warning.js", "../../../../../node_modules/exenv/index.js", "../../../../../node_modules/react-modal/lib/helpers/safeHTMLElement.js", "../../../../../node_modules/react-modal/lib/helpers/ariaAppHider.js", "../../../../../node_modules/react-modal/lib/helpers/classList.js", "../../../../../node_modules/react-modal/lib/helpers/portalOpenInstances.js", "../../../../../node_modules/react-modal/lib/helpers/bodyTrap.js", "../../../../../node_modules/react-modal/lib/components/ModalPortal.js", "../../../../../node_modules/react-lifecycles-compat/react-lifecycles-compat.cjs.js", "../../../../../node_modules/react-modal/lib/components/Modal.js", "../../../../../node_modules/react-modal/lib/index.js", "../../../../../node_modules/react-collapsible/dist/index.js", "../../../../../node_modules/axios/lib/helpers/bind.js", "../../../../../node_modules/axios/lib/utils.js", "../../../../../node_modules/axios/lib/helpers/buildURL.js", "../../../../../node_modules/axios/lib/core/InterceptorManager.js", "../../../../../node_modules/axios/lib/helpers/normalizeHeaderName.js", "../../../../../node_modules/axios/lib/core/AxiosError.js", "../../../../../node_modules/axios/lib/defaults/transitional.js", "../../../../../node_modules/axios/lib/helpers/toFormData.js", "../../../../../node_modules/axios/lib/core/settle.js", "../../../../../node_modules/axios/lib/helpers/cookies.js", "../../../../../node_modules/axios/lib/helpers/isAbsoluteURL.js", "../../../../../node_modules/axios/lib/helpers/combineURLs.js", "../../../../../node_modules/axios/lib/core/buildFullPath.js", "../../../../../node_modules/axios/lib/helpers/parseHeaders.js", "../../../../../node_modules/axios/lib/helpers/isURLSameOrigin.js", "../../../../../node_modules/axios/lib/cancel/CanceledError.js", "../../../../../node_modules/axios/lib/helpers/parseProtocol.js", "../../../../../node_modules/axios/lib/adapters/xhr.js", "../../../../../node_modules/axios/lib/helpers/null.js", "../../../../../node_modules/axios/lib/defaults/index.js", "../../../../../node_modules/axios/lib/core/transformData.js", "../../../../../node_modules/axios/lib/cancel/isCancel.js", "../../../../../node_modules/axios/lib/core/dispatchRequest.js", "../../../../../node_modules/axios/lib/core/mergeConfig.js", "../../../../../node_modules/axios/lib/env/data.js", "../../../../../node_modules/axios/lib/helpers/validator.js", "../../../../../node_modules/axios/lib/core/Axios.js", "../../../../../node_modules/axios/lib/cancel/CancelToken.js", "../../../../../node_modules/axios/lib/helpers/spread.js", "../../../../../node_modules/axios/lib/helpers/isAxiosError.js", "../../../../../node_modules/axios/lib/axios.js", "../../../../../node_modules/axios/index.js", "../../../../../node_modules/classnames/index.js", "../../../../../node_modules/react/cjs/react-jsx-runtime.development.js", "../../../../../node_modules/react/jsx-runtime.js", "../../../../../node_modules/leaflet/src/core/Util.js", "../../../../../node_modules/leaflet/src/core/Class.js", "../../../../../node_modules/leaflet/src/core/Events.js", "../../../../../node_modules/leaflet/src/geometry/Point.js", "../../../../../node_modules/leaflet/src/geometry/Bounds.js", "../../../../../node_modules/leaflet/src/geo/LatLngBounds.js", "../../../../../node_modules/leaflet/src/geo/LatLng.js", "../../../../../node_modules/leaflet/src/geo/crs/CRS.js", "../../../../../node_modules/leaflet/src/geo/crs/CRS.Earth.js", "../../../../../node_modules/leaflet/src/geo/projection/Projection.SphericalMercator.js", "../../../../../node_modules/leaflet/src/geometry/Transformation.js", "../../../../../node_modules/leaflet/src/geo/crs/CRS.EPSG3857.js", "../../../../../node_modules/leaflet/src/layer/vector/SVG.Util.js", "../../../../../node_modules/leaflet/src/core/Browser.js", "../../../../../node_modules/leaflet/src/dom/DomEvent.Pointer.js", "../../../../../node_modules/leaflet/src/dom/DomEvent.DoubleTap.js", "../../../../../node_modules/leaflet/src/dom/DomUtil.js", "../../../../../node_modules/leaflet/src/dom/DomEvent.js", "../../../../../node_modules/leaflet/src/dom/PosAnimation.js", "../../../../../node_modules/leaflet/src/map/Map.js", "../../../../../node_modules/leaflet/src/control/Control.js", "../../../../../node_modules/leaflet/src/control/Control.Layers.js", "../../../../../node_modules/leaflet/src/control/Control.Zoom.js", "../../../../../node_modules/leaflet/src/control/Control.Scale.js", "../../../../../node_modules/leaflet/src/control/Control.Attribution.js", "../../../../../node_modules/leaflet/src/control/index.js", "../../../../../node_modules/leaflet/src/core/Handler.js", "../../../../../node_modules/leaflet/src/core/index.js", "../../../../../node_modules/leaflet/src/dom/Draggable.js", "../../../../../node_modules/leaflet/src/geometry/PolyUtil.js", "../../../../../node_modules/leaflet/src/geometry/LineUtil.js", "../../../../../node_modules/leaflet/src/geo/projection/Projection.LonLat.js", "../../../../../node_modules/leaflet/src/geo/projection/Projection.Mercator.js", "../../../../../node_modules/leaflet/src/geo/projection/index.js", "../../../../../node_modules/leaflet/src/geo/crs/CRS.EPSG3395.js", "../../../../../node_modules/leaflet/src/geo/crs/CRS.EPSG4326.js", "../../../../../node_modules/leaflet/src/geo/crs/CRS.Simple.js", "../../../../../node_modules/leaflet/src/geo/crs/index.js", "../../../../../node_modules/leaflet/src/layer/Layer.js", "../../../../../node_modules/leaflet/src/layer/LayerGroup.js", "../../../../../node_modules/leaflet/src/layer/FeatureGroup.js", "../../../../../node_modules/leaflet/src/layer/marker/Icon.js", "../../../../../node_modules/leaflet/src/layer/marker/Icon.Default.js", "../../../../../node_modules/leaflet/src/layer/marker/Marker.Drag.js", "../../../../../node_modules/leaflet/src/layer/marker/Marker.js", "../../../../../node_modules/leaflet/src/layer/vector/Path.js", "../../../../../node_modules/leaflet/src/layer/vector/CircleMarker.js", "../../../../../node_modules/leaflet/src/layer/vector/Circle.js", "../../../../../node_modules/leaflet/src/layer/vector/Polyline.js", "../../../../../node_modules/leaflet/src/layer/vector/Polygon.js", "../../../../../node_modules/leaflet/src/layer/GeoJSON.js", "../../../../../node_modules/leaflet/src/layer/ImageOverlay.js", "../../../../../node_modules/leaflet/src/layer/VideoOverlay.js", "../../../../../node_modules/leaflet/src/layer/SVGOverlay.js", "../../../../../node_modules/leaflet/src/layer/DivOverlay.js", "../../../../../node_modules/leaflet/src/layer/Popup.js", "../../../../../node_modules/leaflet/src/layer/Tooltip.js", "../../../../../node_modules/leaflet/src/layer/marker/DivIcon.js", "../../../../../node_modules/leaflet/src/layer/marker/index.js", "../../../../../node_modules/leaflet/src/layer/tile/GridLayer.js", "../../../../../node_modules/leaflet/src/layer/tile/TileLayer.js", "../../../../../node_modules/leaflet/src/layer/tile/TileLayer.WMS.js", "../../../../../node_modules/leaflet/src/layer/tile/index.js", "../../../../../node_modules/leaflet/src/layer/vector/Renderer.js", "../../../../../node_modules/leaflet/src/layer/vector/Canvas.js", "../../../../../node_modules/leaflet/src/layer/vector/SVG.VML.js", "../../../../../node_modules/leaflet/src/layer/vector/SVG.js", "../../../../../node_modules/leaflet/src/layer/vector/Renderer.getRenderer.js", "../../../../../node_modules/leaflet/src/layer/vector/Rectangle.js", "../../../../../node_modules/leaflet/src/layer/vector/index.js", "../../../../../node_modules/leaflet/src/layer/index.js", "../../../../../node_modules/leaflet/src/map/handler/Map.BoxZoom.js", "../../../../../node_modules/leaflet/src/map/handler/Map.DoubleClickZoom.js", "../../../../../node_modules/leaflet/src/map/handler/Map.Drag.js", "../../../../../node_modules/leaflet/src/map/handler/Map.Keyboard.js", "../../../../../node_modules/leaflet/src/map/handler/Map.ScrollWheelZoom.js", "../../../../../node_modules/leaflet/src/map/handler/Map.TapHold.js", "../../../../../node_modules/leaflet/src/map/handler/Map.TouchZoom.js", "../../../../../node_modules/leaflet/src/map/index.js", "../../../../../node_modules/moment/moment.js", "../../../../../node_modules/react-image-file-resizer/build/index.js", "../../../../../node_modules/react-table/src/publicUtils.js", "../../../../../node_modules/react-table/src/utils.js", "../../../../../node_modules/react-table/src/makeDefaultPluginHooks.js", "../../../../../node_modules/react-table/src/hooks/useColumnVisibility.js", "../../../../../node_modules/react-table/src/hooks/useTable.js", "../../../../../node_modules/react-table/src/plugin-hooks/useExpanded.js", "../../../../../node_modules/react-table/src/filterTypes.js", "../../../../../node_modules/react-table/src/plugin-hooks/useFilters.js", "../../../../../node_modules/react-table/src/plugin-hooks/useGlobalFilter.js", "../../../../../node_modules/react-table/src/aggregations.js", "../../../../../node_modules/react-table/src/plugin-hooks/useGroupBy.js", "../../../../../node_modules/react-table/src/sortTypes.js", "../../../../../node_modules/react-table/src/plugin-hooks/useSortBy.js", "../../../../../node_modules/react-table/src/plugin-hooks/usePagination.js", "../../../../../node_modules/react-table/src/plugin-hooks/_UNSTABLE_usePivotColumns.js", "../../../../../node_modules/react-table/src/plugin-hooks/useRowSelect.js", "../../../../../node_modules/react-table/src/plugin-hooks/useRowState.js", "../../../../../node_modules/react-table/src/plugin-hooks/useColumnOrder.js", "../../../../../node_modules/react-table/src/plugin-hooks/useResizeColumns.js", "../../../../../node_modules/react-table/src/plugin-hooks/useAbsoluteLayout.js", "../../../../../node_modules/react-table/src/plugin-hooks/useBlockLayout.js", "../../../../../node_modules/react-table/src/plugin-hooks/useFlexLayout.js", "../../../../../node_modules/react-table/src/plugin-hooks/useGridLayout.js", "../../../../../node_modules/react-table/index.js", "../../../../../node_modules/react-toggle/dist/component/check.js", "../../../../../node_modules/react-toggle/dist/component/x.js", "../../../../../node_modules/react-toggle/dist/component/util.js", "../../../../../node_modules/react-toggle/dist/component/index.js", "../../../../../node_modules/@babel/runtime/helpers/interopRequireDefault.js", "../../../../../node_modules/@babel/runtime/helpers/typeof.js", "../../../../../node_modules/date-fns/_lib/requiredArgs/index.js", "../../../../../node_modules/date-fns/isDate/index.js", "../../../../../node_modules/date-fns/toDate/index.js", "../../../../../node_modules/date-fns/isValid/index.js", "../../../../../node_modules/date-fns/_lib/toInteger/index.js", "../../../../../node_modules/date-fns/addMilliseconds/index.js", "../../../../../node_modules/date-fns/subMilliseconds/index.js", "../../../../../node_modules/date-fns/_lib/getUTCDayOfYear/index.js", "../../../../../node_modules/date-fns/_lib/startOfUTCISOWeek/index.js", "../../../../../node_modules/date-fns/_lib/getUTCISOWeekYear/index.js", "../../../../../node_modules/date-fns/_lib/startOfUTCISOWeekYear/index.js", "../../../../../node_modules/date-fns/_lib/getUTCISOWeek/index.js", "../../../../../node_modules/date-fns/_lib/defaultOptions/index.js", "../../../../../node_modules/date-fns/_lib/startOfUTCWeek/index.js", "../../../../../node_modules/date-fns/_lib/getUTCWeekYear/index.js", "../../../../../node_modules/date-fns/_lib/startOfUTCWeekYear/index.js", "../../../../../node_modules/date-fns/_lib/getUTCWeek/index.js", "../../../../../node_modules/date-fns/_lib/addLeadingZeros/index.js", "../../../../../node_modules/date-fns/_lib/format/lightFormatters/index.js", "../../../../../node_modules/date-fns/_lib/format/formatters/index.js", "../../../../../node_modules/date-fns/_lib/format/longFormatters/index.js", "../../../../../node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds/index.js", "../../../../../node_modules/date-fns/_lib/protectedTokens/index.js", "../../../../../node_modules/date-fns/locale/en-US/_lib/formatDistance/index.js", "../../../../../node_modules/date-fns/locale/_lib/buildFormatLongFn/index.js", "../../../../../node_modules/date-fns/locale/en-US/_lib/formatLong/index.js", "../../../../../node_modules/date-fns/locale/en-US/_lib/formatRelative/index.js", "../../../../../node_modules/date-fns/locale/_lib/buildLocalizeFn/index.js", "../../../../../node_modules/date-fns/locale/en-US/_lib/localize/index.js", "../../../../../node_modules/date-fns/locale/_lib/buildMatchFn/index.js", "../../../../../node_modules/date-fns/locale/_lib/buildMatchPatternFn/index.js", "../../../../../node_modules/date-fns/locale/en-US/_lib/match/index.js", "../../../../../node_modules/date-fns/locale/en-US/index.js", "../../../../../node_modules/date-fns/_lib/defaultLocale/index.js", "../../../../../node_modules/date-fns/format/index.js", "../../../../../node_modules/date-fns/addMinutes/index.js", "../../../../../node_modules/date-fns/addHours/index.js", "../../../../../node_modules/date-fns/addDays/index.js", "../../../../../node_modules/date-fns/addWeeks/index.js", "../../../../../node_modules/date-fns/addMonths/index.js", "../../../../../node_modules/date-fns/addQuarters/index.js", "../../../../../node_modules/date-fns/addYears/index.js", "../../../../../node_modules/date-fns/subDays/index.js", "../../../../../node_modules/date-fns/subWeeks/index.js", "../../../../../node_modules/date-fns/subMonths/index.js", "../../../../../node_modules/date-fns/subQuarters/index.js", "../../../../../node_modules/date-fns/subYears/index.js", "../../../../../node_modules/date-fns/getSeconds/index.js", "../../../../../node_modules/date-fns/getMinutes/index.js", "../../../../../node_modules/date-fns/getHours/index.js", "../../../../../node_modules/date-fns/getDay/index.js", "../../../../../node_modules/date-fns/getDate/index.js", "../../../../../node_modules/date-fns/startOfWeek/index.js", "../../../../../node_modules/date-fns/startOfISOWeek/index.js", "../../../../../node_modules/date-fns/getISOWeekYear/index.js", "../../../../../node_modules/date-fns/startOfISOWeekYear/index.js", "../../../../../node_modules/date-fns/getISOWeek/index.js", "../../../../../node_modules/date-fns/getMonth/index.js", "../../../../../node_modules/date-fns/getQuarter/index.js", "../../../../../node_modules/date-fns/getYear/index.js", "../../../../../node_modules/date-fns/getTime/index.js", "../../../../../node_modules/date-fns/setSeconds/index.js", "../../../../../node_modules/date-fns/setMinutes/index.js", "../../../../../node_modules/date-fns/setHours/index.js", "../../../../../node_modules/date-fns/getDaysInMonth/index.js", "../../../../../node_modules/date-fns/setMonth/index.js", "../../../../../node_modules/date-fns/setQuarter/index.js", "../../../../../node_modules/date-fns/setYear/index.js", "../../../../../node_modules/date-fns/min/index.js", "../../../../../node_modules/date-fns/max/index.js", "../../../../../node_modules/date-fns/startOfDay/index.js", "../../../../../node_modules/date-fns/differenceInCalendarDays/index.js", "../../../../../node_modules/date-fns/differenceInCalendarMonths/index.js", "../../../../../node_modules/date-fns/differenceInCalendarYears/index.js", "../../../../../node_modules/date-fns/startOfMonth/index.js", "../../../../../node_modules/date-fns/startOfQuarter/index.js", "../../../../../node_modules/date-fns/startOfYear/index.js", "../../../../../node_modules/date-fns/endOfDay/index.js", "../../../../../node_modules/date-fns/endOfWeek/index.js", "../../../../../node_modules/date-fns/endOfMonth/index.js", "../../../../../node_modules/date-fns/endOfYear/index.js", "../../../../../node_modules/date-fns/isEqual/index.js", "../../../../../node_modules/date-fns/isSameDay/index.js", "../../../../../node_modules/date-fns/isSameMonth/index.js", "../../../../../node_modules/date-fns/isSameYear/index.js", "../../../../../node_modules/date-fns/isSameQuarter/index.js", "../../../../../node_modules/date-fns/isAfter/index.js", "../../../../../node_modules/date-fns/isBefore/index.js", "../../../../../node_modules/date-fns/isWithinInterval/index.js", "../../../../../node_modules/@babel/runtime/helpers/arrayLikeToArray.js", "../../../../../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js", "../../../../../node_modules/@babel/runtime/helpers/createForOfIteratorHelper.js", "../../../../../node_modules/date-fns/_lib/assign/index.js", "../../../../../node_modules/@babel/runtime/helpers/assertThisInitialized.js", "../../../../../node_modules/@babel/runtime/helpers/setPrototypeOf.js", "../../../../../node_modules/@babel/runtime/helpers/inherits.js", "../../../../../node_modules/@babel/runtime/helpers/getPrototypeOf.js", "../../../../../node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js", "../../../../../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js", "../../../../../node_modules/@babel/runtime/helpers/createSuper.js", "../../../../../node_modules/@babel/runtime/helpers/classCallCheck.js", "../../../../../node_modules/@babel/runtime/helpers/toPrimitive.js", "../../../../../node_modules/@babel/runtime/helpers/toPropertyKey.js", "../../../../../node_modules/@babel/runtime/helpers/createClass.js", "../../../../../node_modules/@babel/runtime/helpers/defineProperty.js", "../../../../../node_modules/date-fns/parse/_lib/Setter.js", "../../../../../node_modules/date-fns/parse/_lib/Parser.js", "../../../../../node_modules/date-fns/parse/_lib/parsers/EraParser.js", "../../../../../node_modules/date-fns/constants/index.js", "../../../../../node_modules/date-fns/parse/_lib/constants.js", "../../../../../node_modules/date-fns/parse/_lib/utils.js", "../../../../../node_modules/date-fns/parse/_lib/parsers/YearParser.js", "../../../../../node_modules/date-fns/parse/_lib/parsers/LocalWeekYearParser.js", "../../../../../node_modules/date-fns/parse/_lib/parsers/ISOWeekYearParser.js", "../../../../../node_modules/date-fns/parse/_lib/parsers/ExtendedYearParser.js", "../../../../../node_modules/date-fns/parse/_lib/parsers/QuarterParser.js", "../../../../../node_modules/date-fns/parse/_lib/parsers/StandAloneQuarterParser.js", "../../../../../node_modules/date-fns/parse/_lib/parsers/MonthParser.js", "../../../../../node_modules/date-fns/parse/_lib/parsers/StandAloneMonthParser.js", "../../../../../node_modules/date-fns/_lib/setUTCWeek/index.js", "../../../../../node_modules/date-fns/parse/_lib/parsers/LocalWeekParser.js", "../../../../../node_modules/date-fns/_lib/setUTCISOWeek/index.js", "../../../../../node_modules/date-fns/parse/_lib/parsers/ISOWeekParser.js", "../../../../../node_modules/date-fns/parse/_lib/parsers/DateParser.js", "../../../../../node_modules/date-fns/parse/_lib/parsers/DayOfYearParser.js", "../../../../../node_modules/date-fns/_lib/setUTCDay/index.js", "../../../../../node_modules/date-fns/parse/_lib/parsers/DayParser.js", "../../../../../node_modules/date-fns/parse/_lib/parsers/LocalDayParser.js", "../../../../../node_modules/date-fns/parse/_lib/parsers/StandAloneLocalDayParser.js", "../../../../../node_modules/date-fns/_lib/setUTCISODay/index.js", "../../../../../node_modules/date-fns/parse/_lib/parsers/ISODayParser.js", "../../../../../node_modules/date-fns/parse/_lib/parsers/AMPMParser.js", "../../../../../node_modules/date-fns/parse/_lib/parsers/AMPMMidnightParser.js", "../../../../../node_modules/date-fns/parse/_lib/parsers/DayPeriodParser.js", "../../../../../node_modules/date-fns/parse/_lib/parsers/Hour1to12Parser.js", "../../../../../node_modules/date-fns/parse/_lib/parsers/Hour0to23Parser.js", "../../../../../node_modules/date-fns/parse/_lib/parsers/Hour0To11Parser.js", "../../../../../node_modules/date-fns/parse/_lib/parsers/Hour1To24Parser.js", "../../../../../node_modules/date-fns/parse/_lib/parsers/MinuteParser.js", "../../../../../node_modules/date-fns/parse/_lib/parsers/SecondParser.js", "../../../../../node_modules/date-fns/parse/_lib/parsers/FractionOfSecondParser.js", "../../../../../node_modules/date-fns/parse/_lib/parsers/ISOTimezoneWithZParser.js", "../../../../../node_modules/date-fns/parse/_lib/parsers/ISOTimezoneParser.js", "../../../../../node_modules/date-fns/parse/_lib/parsers/TimestampSecondsParser.js", "../../../../../node_modules/date-fns/parse/_lib/parsers/TimestampMillisecondsParser.js", "../../../../../node_modules/date-fns/parse/_lib/parsers/index.js", "../../../../../node_modules/date-fns/parse/index.js", "../../../../../node_modules/date-fns/parseISO/index.js", "../../../../../node_modules/react-onclickoutside/dist/react-onclickoutside.cjs.js", "../../../../../node_modules/react-popper/lib/cjs/Manager.js", "../../../../../node_modules/react-popper/lib/cjs/utils.js", "../../../../../node_modules/react-fast-compare/index.js", "../../../../../node_modules/react-popper/lib/cjs/usePopper.js", "../../../../../node_modules/react-popper/lib/cjs/Popper.js", "../../../../../node_modules/react-popper/lib/cjs/Reference.js", "../../../../../node_modules/react-popper/lib/cjs/index.js", "../../../../../node_modules/date-fns/set/index.js", "../../../../../node_modules/react-datepicker/dist/react-datepicker.min.js", "../../../../../node_modules/lodash/isNil.js", "../../../../../node_modules/lodash/_freeGlobal.js", "../../../../../node_modules/lodash/_root.js", "../../../../../node_modules/lodash/_Symbol.js", "../../../../../node_modules/lodash/_getRawTag.js", "../../../../../node_modules/lodash/_objectToString.js", "../../../../../node_modules/lodash/_baseGetTag.js", "../../../../../node_modules/lodash/isObject.js", "../../../../../node_modules/lodash/isFunction.js", "../../../../../node_modules/lodash/_coreJsData.js", "../../../../../node_modules/lodash/_isMasked.js", "../../../../../node_modules/lodash/_toSource.js", "../../../../../node_modules/lodash/_baseIsNative.js", "../../../../../node_modules/lodash/_getValue.js", "../../../../../node_modules/lodash/_getNative.js", "../../../../../node_modules/lodash/_defineProperty.js", "../../../../../node_modules/lodash/_baseAssignValue.js", "../../../../../node_modules/lodash/eq.js", "../../../../../node_modules/lodash/_assignValue.js", "../../../../../node_modules/lodash/_copyObject.js", "../../../../../node_modules/lodash/identity.js", "../../../../../node_modules/lodash/_apply.js", "../../../../../node_modules/lodash/_overRest.js", "../../../../../node_modules/lodash/constant.js", "../../../../../node_modules/lodash/_baseSetToString.js", "../../../../../node_modules/lodash/_shortOut.js", "../../../../../node_modules/lodash/_setToString.js", "../../../../../node_modules/lodash/_baseRest.js", "../../../../../node_modules/lodash/isLength.js", "../../../../../node_modules/lodash/isArrayLike.js", "../../../../../node_modules/lodash/_isIndex.js", "../../../../../node_modules/lodash/_isIterateeCall.js", "../../../../../node_modules/lodash/_createAssigner.js", "../../../../../node_modules/lodash/_isPrototype.js", "../../../../../node_modules/lodash/_baseTimes.js", "../../../../../node_modules/lodash/isObjectLike.js", "../../../../../node_modules/lodash/_baseIsArguments.js", "../../../../../node_modules/lodash/isArguments.js", "../../../../../node_modules/lodash/isArray.js", "../../../../../node_modules/lodash/stubFalse.js", "../../../../../node_modules/lodash/isBuffer.js", "../../../../../node_modules/lodash/_baseIsTypedArray.js", "../../../../../node_modules/lodash/_baseUnary.js", "../../../../../node_modules/lodash/_nodeUtil.js", "../../../../../node_modules/lodash/isTypedArray.js", "../../../../../node_modules/lodash/_arrayLikeKeys.js", "../../../../../node_modules/lodash/_overArg.js", "../../../../../node_modules/lodash/_nativeKeys.js", "../../../../../node_modules/lodash/_baseKeys.js", "../../../../../node_modules/lodash/keys.js", "../../../../../node_modules/lodash/assign.js", "../../../../../node_modules/lodash/_arrayMap.js", "../../../../../node_modules/lodash/isSymbol.js", "../../../../../node_modules/lodash/_isKey.js", "../../../../../node_modules/lodash/_nativeCreate.js", "../../../../../node_modules/lodash/_hashClear.js", "../../../../../node_modules/lodash/_hashDelete.js", "../../../../../node_modules/lodash/_hashGet.js", "../../../../../node_modules/lodash/_hashHas.js", "../../../../../node_modules/lodash/_hashSet.js", "../../../../../node_modules/lodash/_Hash.js", "../../../../../node_modules/lodash/_listCacheClear.js", "../../../../../node_modules/lodash/_assocIndexOf.js", "../../../../../node_modules/lodash/_listCacheDelete.js", "../../../../../node_modules/lodash/_listCacheGet.js", "../../../../../node_modules/lodash/_listCacheHas.js", "../../../../../node_modules/lodash/_listCacheSet.js", "../../../../../node_modules/lodash/_ListCache.js", "../../../../../node_modules/lodash/_Map.js", "../../../../../node_modules/lodash/_mapCacheClear.js", "../../../../../node_modules/lodash/_isKeyable.js", "../../../../../node_modules/lodash/_getMapData.js", "../../../../../node_modules/lodash/_mapCacheDelete.js", "../../../../../node_modules/lodash/_mapCacheGet.js", "../../../../../node_modules/lodash/_mapCacheHas.js", "../../../../../node_modules/lodash/_mapCacheSet.js", "../../../../../node_modules/lodash/_MapCache.js", "../../../../../node_modules/lodash/memoize.js", "../../../../../node_modules/lodash/_memoizeCapped.js", "../../../../../node_modules/lodash/_stringToPath.js", "../../../../../node_modules/lodash/_baseToString.js", "../../../../../node_modules/lodash/toString.js", "../../../../../node_modules/lodash/_castPath.js", "../../../../../node_modules/lodash/_toKey.js", "../../../../../node_modules/lodash/_baseGet.js", "../../../../../node_modules/lodash/_stackClear.js", "../../../../../node_modules/lodash/_stackDelete.js", "../../../../../node_modules/lodash/_stackGet.js", "../../../../../node_modules/lodash/_stackHas.js", "../../../../../node_modules/lodash/_stackSet.js", "../../../../../node_modules/lodash/_Stack.js", "../../../../../node_modules/lodash/_setCacheAdd.js", "../../../../../node_modules/lodash/_setCacheHas.js", "../../../../../node_modules/lodash/_SetCache.js", "../../../../../node_modules/lodash/_arraySome.js", "../../../../../node_modules/lodash/_cacheHas.js", "../../../../../node_modules/lodash/_equalArrays.js", "../../../../../node_modules/lodash/_Uint8Array.js", "../../../../../node_modules/lodash/_mapToArray.js", "../../../../../node_modules/lodash/_setToArray.js", "../../../../../node_modules/lodash/_equalByTag.js", "../../../../../node_modules/lodash/_arrayPush.js", "../../../../../node_modules/lodash/_baseGetAllKeys.js", "../../../../../node_modules/lodash/_arrayFilter.js", "../../../../../node_modules/lodash/stubArray.js", "../../../../../node_modules/lodash/_getSymbols.js", "../../../../../node_modules/lodash/_getAllKeys.js", "../../../../../node_modules/lodash/_equalObjects.js", "../../../../../node_modules/lodash/_DataView.js", "../../../../../node_modules/lodash/_Promise.js", "../../../../../node_modules/lodash/_Set.js", "../../../../../node_modules/lodash/_WeakMap.js", "../../../../../node_modules/lodash/_getTag.js", "../../../../../node_modules/lodash/_baseIsEqualDeep.js", "../../../../../node_modules/lodash/_baseIsEqual.js", "../../../../../node_modules/lodash/_baseIsMatch.js", "../../../../../node_modules/lodash/_isStrictComparable.js", "../../../../../node_modules/lodash/_getMatchData.js", "../../../../../node_modules/lodash/_matchesStrictComparable.js", "../../../../../node_modules/lodash/_baseMatches.js", "../../../../../node_modules/lodash/get.js", "../../../../../node_modules/lodash/_baseHasIn.js", "../../../../../node_modules/lodash/_hasPath.js", "../../../../../node_modules/lodash/hasIn.js", "../../../../../node_modules/lodash/_baseMatchesProperty.js", "../../../../../node_modules/lodash/_baseProperty.js", "../../../../../node_modules/lodash/_basePropertyDeep.js", "../../../../../node_modules/lodash/property.js", "../../../../../node_modules/lodash/_baseIteratee.js", "../../../../../node_modules/lodash/_createBaseFor.js", "../../../../../node_modules/lodash/_baseFor.js", "../../../../../node_modules/lodash/_baseForOwn.js", "../../../../../node_modules/lodash/_createBaseEach.js", "../../../../../node_modules/lodash/_baseEach.js", "../../../../../node_modules/lodash/_baseMap.js", "../../../../../node_modules/lodash/_baseSortBy.js", "../../../../../node_modules/lodash/_compareAscending.js", "../../../../../node_modules/lodash/_compareMultiple.js", "../../../../../node_modules/lodash/_baseOrderBy.js", "../../../../../node_modules/lodash/orderBy.js", "../../../../../node_modules/lodash/_getPrototype.js", "../../../../../node_modules/lodash/isPlainObject.js", "../../../../../node_modules/lodash/uniqueId.js", "../../../../../node_modules/lodash/_nativeKeysIn.js", "../../../../../node_modules/lodash/_baseKeysIn.js", "../../../../../node_modules/lodash/keysIn.js", "../../../../../node_modules/lodash/defaults.js", "../../../../../node_modules/lodash/_baseIsRegExp.js", "../../../../../node_modules/lodash/isRegExp.js", "../../../../../node_modules/lodash/_createFind.js", "../../../../../node_modules/lodash/_baseFindIndex.js", "../../../../../node_modules/lodash/_trimmedEndIndex.js", "../../../../../node_modules/lodash/_baseTrim.js", "../../../../../node_modules/lodash/toNumber.js", "../../../../../node_modules/lodash/toFinite.js", "../../../../../node_modules/lodash/toInteger.js", "../../../../../node_modules/lodash/findIndex.js", "../../../../../node_modules/lodash/find.js", "../../../../../node_modules/lodash/_baseIsNaN.js", "../../../../../node_modules/lodash/_strictIndexOf.js", "../../../../../node_modules/lodash/_baseIndexOf.js", "../../../../../node_modules/lodash/isString.js", "../../../../../node_modules/lodash/_baseValues.js", "../../../../../node_modules/lodash/values.js", "../../../../../node_modules/lodash/includes.js", "../../../../../node_modules/lodash/_baseSet.js", "../../../../../node_modules/lodash/_basePickBy.js", "../../../../../node_modules/lodash/_basePick.js", "../../../../../node_modules/lodash/_isFlattenable.js", "../../../../../node_modules/lodash/_baseFlatten.js", "../../../../../node_modules/lodash/flatten.js", "../../../../../node_modules/lodash/_flatRest.js", "../../../../../node_modules/lodash/pick.js", "../../../../../node_modules/lodash/isEmpty.js", "../../../../../node_modules/lodash/_baseRange.js", "../../../../../node_modules/lodash/_createRange.js", "../../../../../node_modules/lodash/range.js", "../../../../../node_modules/lodash/_arrayIncludes.js", "../../../../../node_modules/lodash/_arrayIncludesWith.js", "../../../../../node_modules/lodash/_baseDifference.js", "../../../../../node_modules/lodash/isArrayLikeObject.js", "../../../../../node_modules/lodash/without.js", "../../../../../node_modules/lodash/difference.js", "../../../../../node_modules/lodash/noop.js", "../../../../../node_modules/lodash/_createSet.js", "../../../../../node_modules/lodash/_baseUniq.js", "../../../../../node_modules/lodash/uniq.js", "../../../../../node_modules/lodash/negate.js", "../../../../../node_modules/lodash/_getSymbolsIn.js", "../../../../../node_modules/lodash/_getAllKeysIn.js", "../../../../../node_modules/lodash/pickBy.js", "../../../../../node_modules/lodash/omitBy.js", "../../../../../node_modules/lodash/_baseInverter.js", "../../../../../node_modules/lodash/_createInverter.js", "../../../../../node_modules/lodash/invert.js", "../../../../../node_modules/lodash/_baseIsDate.js", "../../../../../node_modules/lodash/isDate.js", "../../../../../node_modules/lodash/_baseSortedUniq.js", "../../../../../node_modules/lodash/sortedUniq.js", "../../../../../node_modules/lodash/isUndefined.js", "../../../../../node_modules/lodash/isEqual.js", "../../../../../node_modules/lodash/last.js", "../../../../../node_modules/lodash/_baseSome.js", "../../../../../node_modules/lodash/some.js", "../../../../../node_modules/lodash/uniqBy.js", "../../../../../node_modules/lodash/_arrayAggregator.js", "../../../../../node_modules/lodash/_baseAggregator.js", "../../../../../node_modules/lodash/_createAggregator.js", "../../../../../node_modules/lodash/groupBy.js", "../../../../../node_modules/lodash/now.js", "../../../../../node_modules/lodash/debounce.js", "../../../../../node_modules/lodash/throttle.js", "../../../../../node_modules/lodash/fromPairs.js", "../../../../../node_modules/json-stringify-safe/stringify.js", "../../../../../node_modules/delaunator/delaunator.js", "../../../../../node_modules/delaunay-find/lib/index.js", "../../../../../node_modules/lodash/_baseSum.js", "../../../../../node_modules/lodash/sum.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/webpack/universalModuleDefinition", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/assert/build/assert.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/assert/build/internal/assert/assertion_error.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/assert/build/internal/errors.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/assert/build/internal/util/comparisons.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/@foliojs-fork/linebreak/src/classes.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/@foliojs-fork/linebreak/src/pairs.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/@foliojs-fork/restructure/index.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/@foliojs-fork/restructure/src/Array.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/@foliojs-fork/restructure/src/Bitfield.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/@foliojs-fork/restructure/src/Boolean.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/@foliojs-fork/restructure/src/Buffer.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/@foliojs-fork/restructure/src/DecodeStream.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/@foliojs-fork/restructure/src/EncodeStream.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/@foliojs-fork/restructure/src/Enum.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/@foliojs-fork/restructure/src/LazyArray.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/@foliojs-fork/restructure/src/Number.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/@foliojs-fork/restructure/src/Optional.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/@foliojs-fork/restructure/src/Pointer.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/@foliojs-fork/restructure/src/Reserved.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/@foliojs-fork/restructure/src/String.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/@foliojs-fork/restructure/src/Struct.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/@foliojs-fork/restructure/src/VersionedStruct.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/@foliojs-fork/restructure/src/utils.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/buffer/index.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/array-buffer-native.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/array-buffer-view-core.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/array-buffer.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.array-buffer.constructor.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/crypto-js/aes.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/crypto-js/cipher-core.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/crypto-js/core.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/crypto-js/enc-base64.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/crypto-js/enc-base64url.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/crypto-js/enc-utf16.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/crypto-js/evpkdf.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/crypto-js/format-hex.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/crypto-js/hmac.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/crypto-js/index.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/crypto-js/lib-typedarrays.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/crypto-js/md5.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/crypto-js/mode-cfb.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/crypto-js/mode-ctr-gladman.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/crypto-js/mode-ctr.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/crypto-js/mode-ecb.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/crypto-js/mode-ofb.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/crypto-js/pad-ansix923.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/crypto-js/pad-iso10126.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/crypto-js/pad-iso97971.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/crypto-js/pad-nopadding.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/crypto-js/pad-zeropadding.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/crypto-js/pbkdf2.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/crypto-js/rabbit-legacy.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/crypto-js/rabbit.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/crypto-js/rc4.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/crypto-js/ripemd160.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/crypto-js/sha1.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/crypto-js/sha224.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/crypto-js/sha256.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/crypto-js/sha3.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/crypto-js/sha384.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/crypto-js/sha512.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/crypto-js/tripledes.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/crypto-js/x64-core.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/src/StateMachine.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/png-js/png-node.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/safer-buffer/safer.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/buffer_list.js", "../../../../../node_modules/pdfmake/build/webpack:/lib/abstract_reference.js", "../../../../../node_modules/pdfmake/build/webpack:/lib/tree.js", "../../../../../node_modules/pdfmake/build/webpack:/lib/object.js", "../../../../../node_modules/pdfmake/build/webpack:/lib/reference.js", "../../../../../node_modules/pdfmake/build/webpack:/lib/page.js", "../../../../../node_modules/pdfmake/build/webpack:/lib/name_tree.js", "../../../../../node_modules/pdfmake/build/webpack:/lib/saslprep/lib/util.js", "../../../../../node_modules/pdfmake/build/webpack:/lib/saslprep/lib/code-points.js", "../../../../../node_modules/pdfmake/build/webpack:/lib/saslprep/index.js", "../../../../../node_modules/pdfmake/build/webpack:/lib/security.js", "../../../../../node_modules/pdfmake/build/webpack:/lib/gradient.js", "../../../../../node_modules/pdfmake/build/webpack:/lib/pattern.js", "../../../../../node_modules/pdfmake/build/webpack:/lib/mixins/color.js", "../../../../../node_modules/pdfmake/build/webpack:/lib/path.js", "../../../../../node_modules/pdfmake/build/webpack:/lib/mixins/vector.js", "../../../../../node_modules/pdfmake/build/webpack:/lib/font/afm.js", "../../../../../node_modules/pdfmake/build/webpack:/lib/font.js", "../../../../../node_modules/pdfmake/build/webpack:/lib/font/standard.js", "../../../../../node_modules/pdfmake/build/webpack:/lib/font/embedded.js", "../../../../../node_modules/pdfmake/build/webpack:/lib/font_factory.js", "../../../../../node_modules/pdfmake/build/webpack:/lib/mixins/fonts.js", "../../../../../node_modules/pdfmake/build/webpack:/lib/line_wrapper.js", "../../../../../node_modules/pdfmake/build/webpack:/lib/mixins/text.js", "../../../../../node_modules/pdfmake/build/webpack:/lib/image/jpeg.js", "../../../../../node_modules/pdfmake/build/webpack:/lib/image/png.js", "../../../../../node_modules/pdfmake/build/webpack:/lib/image.js", "../../../../../node_modules/pdfmake/build/webpack:/lib/mixins/images.js", "../../../../../node_modules/pdfmake/build/webpack:/lib/mixins/annotations.js", "../../../../../node_modules/pdfmake/build/webpack:/lib/outline.js", "../../../../../node_modules/pdfmake/build/webpack:/lib/mixins/outline.js", "../../../../../node_modules/pdfmake/build/webpack:/lib/structure_content.js", "../../../../../node_modules/pdfmake/build/webpack:/lib/structure_element.js", "../../../../../node_modules/pdfmake/build/webpack:/lib/number_tree.js", "../../../../../node_modules/pdfmake/build/webpack:/lib/mixins/markings.js", "../../../../../node_modules/pdfmake/build/webpack:/lib/mixins/acroform.js", "../../../../../node_modules/pdfmake/build/webpack:/lib/mixins/attachments.js", "../../../../../node_modules/pdfmake/build/webpack:/lib/document.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/string_decoder/node_modules/safe-buffer/index.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/unicode-trie/index.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/unicode-trie/swap.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/src/3rd-party/svg-to-pdfkit.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/src/3rd-party/svg-to-pdfkit/source.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/base64-js/index.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/brotli/dec/bit_reader.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/brotli/dec/context.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/brotli/dec/decode.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/brotli/dec/dictionary-browser.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/brotli/dec/dictionary.bin.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/brotli/dec/dictionary.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/brotli/dec/huffman.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/brotli/dec/prefix.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/brotli/dec/streams.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/brotli/dec/transform.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/brotli/decompress.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/browserify-zlib/lib/binding.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/browserify-zlib/lib/index.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/call-bind/callBound.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/call-bind/index.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/clone/clone.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/es/object/values.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/es/promise/index.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/features/promise/index.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/a-callable.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/a-constructor.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/a-possible-prototype.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/add-to-unscopables.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/advance-string-index.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/an-instance.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/an-object.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/array-copy-within.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/array-fill.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/array-for-each.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/array-from-constructor-and-list.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/array-from.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/array-includes.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/array-iteration.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/array-last-index-of.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/array-method-has-species-support.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/array-method-is-strict.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/array-reduce.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/array-slice.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/array-sort.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/array-species-constructor.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/array-species-create.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/call-with-safe-iteration-closing.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/check-correctness-of-iteration.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/classof-raw.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/classof.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/clear-error-stack.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/collection-strong.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/collection.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/copy-constructor-properties.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/correct-is-regexp-logic.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/correct-prototype-getter.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/create-html.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/create-iterator-constructor.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/create-non-enumerable-property.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/create-property-descriptor.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/create-property.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/date-to-primitive.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/define-iterator.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/define-well-known-symbol.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/descriptors.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/document-create-element.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/dom-iterables.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/dom-token-list-prototype.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/engine-ff-version.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/engine-is-browser.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/engine-is-ie-or-edge.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/engine-is-ios-pebble.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/engine-is-ios.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/engine-is-node.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/engine-is-webos-webkit.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/engine-user-agent.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/engine-v8-version.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/engine-webkit-version.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/enum-bug-keys.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/error-stack-installable.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/export.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/fails.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/freezing.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/function-apply.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/function-bind-context.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/function-bind.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/function-call.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/function-name.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/function-uncurry-this.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/get-built-in.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/get-iterator-method.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/get-iterator.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/get-method.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/get-substitution.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/global.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/has-own-property.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/hidden-keys.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/host-report-errors.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/html.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/ie8-dom-define.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/ieee754.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/indexed-object.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/inherit-if-required.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/inspect-source.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/install-error-cause.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/internal-metadata.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/internal-state.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/is-array-iterator-method.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/is-array.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/is-callable.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/is-constructor.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/is-forced.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/is-integral-number.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/is-object.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/is-pure.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/is-regexp.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/is-symbol.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/iterate.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/iterator-close.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/iterators-core.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/iterators.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/length-of-array-like.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/microtask.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/native-promise-constructor.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/native-symbol.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/native-weak-map.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/new-promise-capability.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/normalize-string-argument.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/not-a-regexp.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/number-is-finite.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/object-assign.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/object-create.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/object-define-properties.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/object-define-property.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/object-get-own-property-descriptor.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/object-get-own-property-names-external.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/object-get-own-property-names.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/object-get-own-property-symbols.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/object-get-prototype-of.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/object-is-prototype-of.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/object-keys-internal.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/object-keys.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/object-property-is-enumerable.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/object-set-prototype-of.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/object-to-array.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/object-to-string.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/ordinary-to-primitive.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/own-keys.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/path.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/perform.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/promise-resolve.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/redefine-all.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/redefine.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/regexp-exec-abstract.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/regexp-exec.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/regexp-flags.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/regexp-sticky-helpers.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/regexp-unsupported-dot-all.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/regexp-unsupported-ncg.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/require-object-coercible.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/set-global.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/set-species.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/set-to-string-tag.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/shared-key.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/shared-store.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/shared.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/species-constructor.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/string-html-forced.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/string-multibyte.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/string-repeat.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/string-trim-forced.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/string-trim.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/task.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/this-number-value.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/to-absolute-index.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/to-index.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/to-indexed-object.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/to-integer-or-infinity.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/to-length.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/to-object.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/to-offset.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/to-positive-integer.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/to-primitive.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/to-property-key.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/to-string-tag-support.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/to-string.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/try-to-string.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/typed-array-constructor.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/typed-array-constructors-require-wrappers.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/typed-array-from-species-and-list.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/typed-array-from.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/typed-array-species-constructor.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/uid.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/use-symbol-as-uid.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/well-known-symbol-wrapped.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/well-known-symbol.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/internals/whitespaces.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.aggregate-error.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.array.concat.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.array.copy-within.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.array.fill.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.array.filter.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.array.from.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.array.includes.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.array.iterator.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.array.join.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.array.map.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.array.slice.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.array.sort.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.array.splice.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.date.to-primitive.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.function.name.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.global-this.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.json.to-string-tag.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.map.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.math.to-string-tag.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.number.constructor.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.number.epsilon.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.number.is-finite.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.number.is-integer.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.number.to-fixed.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.object.assign.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.object.freeze.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.object.get-own-property-descriptor.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.object.get-own-property-descriptors.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.object.get-prototype-of.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.object.keys.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.object.to-string.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.object.values.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.promise.all-settled.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.promise.any.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.promise.finally.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.promise.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.reflect.construct.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.regexp.exec.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.regexp.flags.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.regexp.to-string.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.set.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.string.code-point-at.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.string.from-code-point.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.string.includes.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.string.italics.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.string.iterator.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.string.link.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.string.match-all.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.string.match.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.string.repeat.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.string.replace.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.string.split.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.string.strike.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.string.trim.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.symbol.async-iterator.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.symbol.description.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.symbol.iterator.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.symbol.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.symbol.to-primitive.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.symbol.to-string-tag.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.typed-array.copy-within.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.typed-array.every.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.typed-array.fill.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.typed-array.filter.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.typed-array.find-index.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.typed-array.find.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.typed-array.float32-array.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.typed-array.float64-array.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.typed-array.for-each.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.typed-array.from.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.typed-array.includes.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.typed-array.index-of.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.typed-array.int16-array.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.typed-array.int32-array.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.typed-array.int8-array.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.typed-array.iterator.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.typed-array.join.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.typed-array.last-index-of.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.typed-array.map.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.typed-array.reduce-right.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.typed-array.reduce.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.typed-array.reverse.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.typed-array.set.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.typed-array.slice.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.typed-array.some.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.typed-array.sort.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.typed-array.subarray.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.typed-array.to-locale-string.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.typed-array.to-string.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.typed-array.uint16-array.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.typed-array.uint32-array.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.typed-array.uint8-array.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/es.typed-array.uint8-clamped-array.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/esnext.aggregate-error.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/esnext.global-this.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/esnext.promise.all-settled.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/esnext.promise.any.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/esnext.promise.try.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/esnext.string.match-all.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/web.dom-collections.for-each.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/web.dom-collections.iterator.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/modules/web.url.to-json.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/core-js/stable/promise/index.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/deep-equal/index.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/define-properties/index.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/es6-object-assign/index.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/events/events.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/src/browser-extensions/pdfMake-exposed.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/expose-loader/dist/runtime/getGlobalThis.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/for-each/index.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/function-bind/implementation.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/function-bind/index.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/functions-have-names/index.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/get-intrinsic/index.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/gopd/index.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/has-property-descriptors/index.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/has-symbols/index.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/has-symbols/shams.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/has-tostringtag/shams.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/has/src/index.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/iconv-lite/encodings/dbcs-codec.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/iconv-lite/encodings/dbcs-data.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/iconv-lite/encodings/index.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/iconv-lite/encodings/internal.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/iconv-lite/encodings/sbcs-codec.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/iconv-lite/encodings/sbcs-data-generated.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/iconv-lite/encodings/sbcs-data.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/iconv-lite/encodings/utf16.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/iconv-lite/encodings/utf32.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/iconv-lite/encodings/utf7.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/iconv-lite/lib/bom-handling.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/iconv-lite/lib/index.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/iconv-lite/lib/streams.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/ieee754/index.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/inherits/inherits_browser.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/is-arguments/index.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/is-callable/index.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/is-date-object/index.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/is-generator-function/index.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/is-nan/implementation.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/is-nan/index.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/is-nan/polyfill.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/is-nan/shim.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/is-regex/index.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/is-typed-array/index.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/object-is/implementation.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/object-is/index.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/object-is/polyfill.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/object-is/shim.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/object-keys/implementation.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/object-keys/index.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/object-keys/isArguments.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/pako/lib/utils/common.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/pako/lib/zlib/adler32.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/pako/lib/zlib/constants.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/pako/lib/zlib/crc32.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/pako/lib/zlib/deflate.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/pako/lib/zlib/inffast.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/pako/lib/zlib/inflate.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/pako/lib/zlib/inftrees.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/pako/lib/zlib/messages.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/pako/lib/zlib/trees.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/pako/lib/zlib/zstream.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/process/browser.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/regexp.prototype.flags/implementation.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/regexp.prototype.flags/index.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/regexp.prototype.flags/polyfill.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/regexp.prototype.flags/shim.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/sax/lib/sax.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/stream-browserify/index.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/stream-browserify/node_modules/readable-stream/errors-browser.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_duplex.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_passthrough.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_readable.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_transform.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_writable.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/async_iterator.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/destroy.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/end-of-stream.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/from-browser.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/pipeline.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/state.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/stream-browser.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/file-saver/dist/FileSaver.min.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/string_decoder/lib/string_decoder.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/tiny-inflate/index.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/@foliojs-fork/fontkit/index.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/@foliojs-fork/linebreak/src/linebreaker.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/util-deprecate/browser.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/util/support/isBufferBrowser.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/util/support/types.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/util/util.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/which-typed-array/index.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/xmldoc/index.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/xmldoc/lib/xmldoc.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/src/browser-extensions/URLBrowserResolver.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/src/browser-extensions/pdfMake.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/src/browser-extensions/virtual-fs.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/src/columnCalculator.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/src/docMeasure.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/src/docPreprocessor.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/src/documentContext.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/src/elementWriter.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/src/fontProvider.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/src/helpers.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/src/imageMeasure.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/src/layoutBuilder.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/src/line.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/src/pageElementWriter.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/src/pdfKitEngine.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/src/printer.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/src/qrEnc.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/src/standardPageSizes.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/src/styleContextStack.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/src/svgMeasure.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/src/tableProcessor.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/src/textDecorator.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/src/textTools.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/src/traversalTracker.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/ignored|C:/_ke_smazani/test3-build02/pdfmake/node_modules/crypto-js|crypto", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/ignored|C:/_ke_smazani/test3-build02/pdfmake/node_modules/iconv-lite/lib|stream", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/ignored|C:/_ke_smazani/test3-build02/pdfmake/node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams|util", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/ignored|C:/_ke_smazani/test3-build02/pdfmake/node_modules/stream-browserify/node_modules/readable-stream/lib|util", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/available-typed-arrays/index.js", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/node_modules/unicode-properties/dist/main.cjs", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/webpack/bootstrap", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/webpack/runtime/global", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/webpack/runtime/node module decorator", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/webpack/before-startup", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/webpack/startup", "../../../../../node_modules/pdfmake/build/webpack:/pdfmake/webpack/after-startup", "../../../../../node_modules/pdfmake/build/vfs_fonts.js", "../../../../../node_modules/select2/dist/js/select2.js", "../../../../../node_modules/chart.js/dist/chart.min.js", "../../../../../node_modules/@rails/ujs/lib/assets/compiled/rails-ujs.js", "../../../../javascript/packs/application.js", "../../../../../node_modules/bootstrap/js/src/dom/data.js", "../../../../../node_modules/bootstrap/js/src/util/index.js", "../../../../../node_modules/bootstrap/js/src/dom/event-handler.js", "../../../../../node_modules/bootstrap/js/src/dom/manipulator.js", "../../../../../node_modules/bootstrap/js/src/util/config.js", "../../../../../node_modules/bootstrap/js/src/base-component.js", "../../../../../node_modules/bootstrap/js/src/dom/selector-engine.js", "../../../../../node_modules/bootstrap/js/src/util/component-functions.js", "../../../../../node_modules/bootstrap/js/src/alert.js", "../../../../../node_modules/bootstrap/js/src/button.js", "../../../../../node_modules/bootstrap/js/src/util/swipe.js", "../../../../../node_modules/bootstrap/js/src/carousel.js", "../../../../../node_modules/bootstrap/js/src/collapse.js", "../../../../../node_modules/bootstrap/js/src/dropdown.js", "../../../../../node_modules/bootstrap/js/src/util/backdrop.js", "../../../../../node_modules/bootstrap/js/src/util/focustrap.js", "../../../../../node_modules/bootstrap/js/src/util/scrollbar.js", "../../../../../node_modules/bootstrap/js/src/modal.js", "../../../../../node_modules/bootstrap/js/src/offcanvas.js", "../../../../../node_modules/bootstrap/js/src/util/sanitizer.js", "../../../../../node_modules/bootstrap/js/src/util/template-factory.js", "../../../../../node_modules/bootstrap/js/src/tooltip.js", "../../../../../node_modules/bootstrap/js/src/popover.js", "../../../../../node_modules/bootstrap/js/src/scrollspy.js", "../../../../../node_modules/bootstrap/js/src/tab.js", "../../../../../node_modules/bootstrap/js/src/toast.js", "../../../../../node_modules/@rails/actioncable/app/assets/javascripts/actioncable.esm.js", "../../../../javascript/channels/consumer.js", "../../../../javascript/components/dashboard/MainUI.js", "../../../../javascript/components/SkCubeLoading.js", "../../../../javascript/components/dashboard/DashboardOAS.js", "../../../../../node_modules/@babel/runtime/helpers/esm/typeof.js", "../../../../../node_modules/@babel/runtime/helpers/esm/toPrimitive.js", "../../../../../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js", "../../../../../node_modules/@babel/runtime/helpers/esm/defineProperty.js", "../../../../../node_modules/@babel/runtime/helpers/esm/objectSpread2.js", "../../../../../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js", "../../../../../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js", "../../../../../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js", "../../../../../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js", "../../../../../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js", "../../../../../node_modules/@babel/runtime/helpers/esm/slicedToArray.js", "../../../../../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js", "../../../../../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js", "../../../../../node_modules/react-select/dist/useStateManager-7e1e8489.esm.js", "../../../../../node_modules/@babel/runtime/helpers/esm/extends.js", "../../../../../node_modules/react-select/dist/react-select.esm.js", "../../../../../node_modules/@babel/runtime/helpers/esm/classCallCheck.js", "../../../../../node_modules/@babel/runtime/helpers/esm/createClass.js", "../../../../../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js", "../../../../../node_modules/@babel/runtime/helpers/esm/inherits.js", "../../../../../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js", "../../../../../node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js", "../../../../../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js", "../../../../../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js", "../../../../../node_modules/@babel/runtime/helpers/esm/createSuper.js", "../../../../../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js", "../../../../../node_modules/@babel/runtime/helpers/esm/iterableToArray.js", "../../../../../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js", "../../../../../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js", "../../../../../node_modules/react-select/dist/Select-aecb2a80.esm.js", "../../../../../node_modules/@emotion/react/dist/emotion-element-c39617d8.browser.esm.js", "../../../../../node_modules/@emotion/sheet/dist/emotion-sheet.browser.esm.js", "../../../../../node_modules/stylis/src/Enum.js", "../../../../../node_modules/stylis/src/Utility.js", "../../../../../node_modules/stylis/src/Tokenizer.js", "../../../../../node_modules/stylis/src/Parser.js", "../../../../../node_modules/stylis/src/Serializer.js", "../../../../../node_modules/stylis/src/Middleware.js", "../../../../../node_modules/@emotion/memoize/dist/emotion-memoize.esm.js", "../../../../../node_modules/@emotion/cache/dist/emotion-cache.browser.esm.js", "../../../../../node_modules/@emotion/utils/dist/emotion-utils.browser.esm.js", "../../../../../node_modules/@emotion/hash/dist/emotion-hash.esm.js", "../../../../../node_modules/@emotion/unitless/dist/emotion-unitless.esm.js", "../../../../../node_modules/@emotion/serialize/dist/emotion-serialize.browser.esm.js", "../../../../../node_modules/@emotion/use-insertion-effect-with-fallbacks/dist/emotion-use-insertion-effect-with-fallbacks.browser.esm.js", "../../../../../node_modules/@emotion/react/dist/emotion-react.browser.esm.js", "../../../../../node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js", "../../../../../node_modules/react-select/dist/index-baa8dc4f.esm.js", "../../../../../node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs", "../../../../../node_modules/@floating-ui/utils/dom/dist/floating-ui.utils.dom.mjs", "../../../../../node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs", "../../../../../node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.js", "../../../../../node_modules/memoize-one/dist/memoize-one.esm.js", "../../../../javascript/components/utils/helpers.js", "../../../../../node_modules/react-accessible-accordion/dist/es/index.js", "../../../../javascript/components/dashboard/DashboardMII.js", "../../../../javascript/components/dashboard/DashboardManagementMii.js", "../../../../javascript/components/dashboard/ManagementOverviewMii.js", "../../../../javascript/components/dashboard/ManagementOverview.js", "../../../../javascript/components/dashboard/MapOverview.js", "../../../../../node_modules/react-bootstrap/esm/Modal.js", "../../../../../node_modules/dom-helpers/esm/canUseDOM.js", "../../../../../node_modules/dom-helpers/esm/addEventListener.js", "../../../../../node_modules/dom-helpers/esm/ownerDocument.js", "../../../../../node_modules/dom-helpers/esm/removeEventListener.js", "../../../../../node_modules/dom-helpers/esm/scrollbarSize.js", "../../../../../node_modules/@restart/hooks/esm/useCallbackRef.js", "../../../../../node_modules/@restart/hooks/esm/useEventCallback.js", "../../../../../node_modules/@restart/hooks/esm/useCommittedRef.js", "../../../../../node_modules/@restart/hooks/esm/useMergedRefs.js", "../../../../../node_modules/@restart/hooks/esm/useUpdatedRef.js", "../../../../../node_modules/@restart/hooks/esm/useWillUnmount.js", "../../../../../node_modules/dom-helpers/esm/ownerWindow.js", "../../../../../node_modules/dom-helpers/esm/getComputedStyle.js", "../../../../../node_modules/dom-helpers/esm/hyphenate.js", "../../../../../node_modules/dom-helpers/esm/hyphenateStyle.js", "../../../../../node_modules/dom-helpers/esm/isTransform.js", "../../../../../node_modules/dom-helpers/esm/css.js", "../../../../../node_modules/dom-helpers/esm/listen.js", "../../../../../node_modules/dom-helpers/esm/triggerEvent.js", "../../../../../node_modules/dom-helpers/esm/transitionEnd.js", "../../../../../node_modules/dom-helpers/esm/activeElement.js", "../../../../../node_modules/dom-helpers/esm/contains.js", "../../../../../node_modules/@restart/ui/esm/Modal.js", "../../../../../node_modules/@restart/hooks/esm/useMounted.js", "../../../../../node_modules/@restart/hooks/esm/usePrevious.js", "../../../../../node_modules/@restart/ui/esm/DataKey.js", "../../../../../node_modules/@restart/ui/esm/getScrollbarWidth.js", "../../../../../node_modules/@restart/ui/esm/ModalManager.js", "../../../../../node_modules/@restart/ui/esm/useWaitForDOMRef.js", "../../../../../node_modules/@restart/ui/esm/useWindow.js", "../../../../../node_modules/@restart/hooks/esm/useIsomorphicEffect.js", "../../../../../node_modules/@restart/ui/esm/ImperativeTransition.js", "../../../../../node_modules/@restart/ui/esm/NoopTransition.js", "../../../../../node_modules/@restart/ui/esm/utils.js", "../../../../../node_modules/dom-helpers/esm/hasClass.js", "../../../../../node_modules/dom-helpers/esm/addClass.js", "../../../../../node_modules/dom-helpers/esm/querySelectorAll.js", "../../../../../node_modules/dom-helpers/esm/removeClass.js", "../../../../../node_modules/react-bootstrap/esm/BootstrapModalManager.js", "../../../../../node_modules/react-bootstrap/esm/Fade.js", "../../../../../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js", "../../../../../node_modules/react-transition-group/esm/Transition.js", "../../../../../node_modules/react-transition-group/esm/config.js", "../../../../../node_modules/react-transition-group/esm/utils/PropTypes.js", "../../../../../node_modules/react-transition-group/esm/TransitionGroupContext.js", "../../../../../node_modules/react-transition-group/esm/utils/reflow.js", "../../../../../node_modules/react-bootstrap/esm/transitionEndListener.js", "../../../../../node_modules/react-bootstrap/esm/triggerBrowserReflow.js", "../../../../../node_modules/react-bootstrap/esm/TransitionWrapper.js", "../../../../../node_modules/react-bootstrap/esm/safeFindDOMNode.js", "../../../../../node_modules/react-bootstrap/esm/createWithBsPrefix.js", "../../../../../node_modules/dom-helpers/esm/camelize.js", "../../../../../node_modules/react-bootstrap/esm/ThemeProvider.js", "../../../../../node_modules/react-bootstrap/esm/ModalBody.js", "../../../../../node_modules/react-bootstrap/esm/ModalContext.js", "../../../../../node_modules/react-bootstrap/esm/ModalDialog.js", "../../../../../node_modules/react-bootstrap/esm/ModalFooter.js", "../../../../../node_modules/react-bootstrap/esm/ModalHeader.js", "../../../../../node_modules/react-bootstrap/esm/AbstractModalHeader.js", "../../../../../node_modules/react-bootstrap/esm/CloseButton.js", "../../../../../node_modules/react-bootstrap/esm/divWithClassName.js", "../../../../../node_modules/react-bootstrap/esm/ModalTitle.js", "../../../../../node_modules/@react-leaflet/core/lib/attribution.js", "../../../../../node_modules/@react-leaflet/core/lib/component.js", "../../../../../node_modules/@react-leaflet/core/lib/context.js", "../../../../../node_modules/@react-leaflet/core/lib/events.js", "../../../../../node_modules/@react-leaflet/core/lib/pane.js", "../../../../../node_modules/@react-leaflet/core/lib/element.js", "../../../../../node_modules/@react-leaflet/core/lib/layer.js", "../../../../../node_modules/@react-leaflet/core/lib/generic.js", "../../../../../node_modules/@react-leaflet/core/lib/grid-layer.js", "../../../../../node_modules/react-leaflet/lib/MapContainer.js", "../../../../../node_modules/react-leaflet/lib/Marker.js", "../../../../../node_modules/react-leaflet/lib/TileLayer.js", "../../../../javascript/components/dashboard/Disbursement.js", "../../../../javascript/components/members/MembersProfile.js", "../../../../../node_modules/react-bootstrap/esm/Button.js", "../../../../../node_modules/@restart/ui/esm/Button.js", "../../../../javascript/components/ErrorList.js", "../../../../javascript/components/members/MembersProfileHome.js", "../../../../javascript/components/members/MembersProfileLegalDependents.js", "../../../../javascript/components/members/MembersProfileBeneficiaries.js", "../../../../javascript/components/members/MembersProfileResignationRecords.js", "../../../../javascript/components/members/MembersProfileProjectType.js", "../../../../javascript/components/members/MembersProfilePrincipalBorrowers.js", "../../../../javascript/components/utils/brgy.json", "../../../../javascript/components/utils/AddressService.js", "../../../../javascript/components/members/MembersProfileLoans.js", "../../../../../node_modules/datatables.net-dt/js/dataTables.dataTables.mjs", "../../../../../node_modules/datatables.net/js/jquery.dataTables.mjs", "../../../../javascript/components/members/MembersProfileSavings.js", "../../../../javascript/components/members/MembersProfileInsurance.js", "../../../../javascript/components/members/MembersProfileEquities.js", "../../../../javascript/components/members/MembersProfileSurveyAnswers.js", "../../../../javascript/components/members/MembersProfileShares.js", "../../../../javascript/components/members/MembersProfileAttachmentFiles.js", "../../../../javascript/components/members/MembersProfileMembershipPayments.js", "../../../../javascript/components/members/MembersProfileMyKoins.js", "../../../../javascript/components/members/MembersProfileActions.js", "../../../../javascript/components/utils/ToggleSwitch.js", "../../../../../node_modules/jwt-decode/lib/atob.js", "../../../../../node_modules/jwt-decode/lib/base64_url_decode.js", "../../../../../node_modules/jwt-decode/lib/index.js", "../../../../javascript/components/members/FormDisplay.js", "../../../../javascript/components/ErrorDisplay.js", "../../../../javascript/components/members/FormApplicationHeader.js", "../../../../javascript/components/members/FormPersonalInfo.js", "../../../../javascript/components/members/FormNumChildren.js", "../../../../javascript/components/members/FormContactNumbers.js", "../../../../javascript/components/members/FormGovernmentIdentificationNumbers.js", "../../../../javascript/components/members/FormSpouse.js", "../../../../javascript/components/members/FormExperience.js", "../../../../javascript/components/members/FormRecruit.js", "../../../../javascript/components/members/FormBankAccounts.js", "../../../../javascript/components/members/FormLegalDependents.js", "../../../../javascript/components/members/FormBeneficiaries.js", "../../../../javascript/components/members/FormReferrals.js", "../../../../javascript/components/members/SurveyAnswerUIDisplay.js", "../../../../javascript/components/loans/ApplicationFormComponent.js", "../../../../javascript/components/loans/ApplicationFormFinancialInformation.js", "../../../../javascript/components/loans/ApplicationFormCLIPBeneficiary.js", "../../../../javascript/components/loans/ApplicationFormProjectType.js", "../../../../javascript/components/loans/ApplicationTransferOption.js", "../../../../javascript/components/loans/ApplicationFormActiveLoans.js", "../../../../javascript/components/utils/consts.js", "../../../../javascript/components/loans/AccountingEntryComponent.js", "../../../../javascript/components/accounting/AccountingEntryPreview.js", "../../../../../node_modules/@restart/ui/esm/Anchor.js", "../../../../../node_modules/@restart/hooks/esm/useEventListener.js", "../../../../../node_modules/@restart/hooks/esm/useGlobalListener.js", "../../../../../node_modules/@restart/hooks/esm/useInterval.js", "../../../../../node_modules/@restart/hooks/esm/useRafInterval.js", "../../../../../node_modules/@restart/hooks/esm/useMergeState.js", "../../../../../node_modules/@restart/hooks/esm/useImage.js", "../../../../../node_modules/@restart/hooks/esm/useResizeObserver.js", "../../../../../node_modules/react-bootstrap/esm/Breadcrumb.js", "../../../../../node_modules/react-bootstrap/esm/BreadcrumbItem.js", "../../../../../node_modules/react-bootstrap/esm/ElementChildren.js", "../../../../../node_modules/react-bootstrap/esm/Col.js", "../../../../../node_modules/react-bootstrap/esm/Form.js", "../../../../../node_modules/react-bootstrap/esm/FormCheck.js", "../../../../../node_modules/react-bootstrap/esm/Feedback.js", "../../../../../node_modules/react-bootstrap/esm/FormCheckInput.js", "../../../../../node_modules/react-bootstrap/esm/FormContext.js", "../../../../../node_modules/react-bootstrap/esm/FormCheckLabel.js", "../../../../../node_modules/react-bootstrap/esm/FormControl.js", "../../../../../node_modules/react-bootstrap/esm/FormFloating.js", "../../../../../node_modules/react-bootstrap/esm/FormGroup.js", "../../../../../node_modules/react-bootstrap/esm/FormLabel.js", "../../../../../node_modules/react-bootstrap/esm/FormRange.js", "../../../../../node_modules/react-bootstrap/esm/FormSelect.js", "../../../../../node_modules/react-bootstrap/esm/FormText.js", "../../../../../node_modules/react-bootstrap/esm/Switch.js", "../../../../../node_modules/react-bootstrap/esm/FloatingLabel.js", "../../../../javascript/components/accounting/AccountingEntryPreviewForFullPayment.js", "../../../../javascript/components/billings/BillingUIComponent.js", "../../../../javascript/components/billings/BillingUITable.js", "../../../../javascript/components/billings/BillingUITableTablet.js", "../../../../javascript/components/membership_payment_collections/MembershipPaymentCollectionUIComponent.js", "../../../../javascript/components/membership_payment_collections/MembershipPaymentCollectionUITable.js", "../../../../javascript/components/membership_payment_collections/AddRecord.js", "../../../../javascript/components/deposit_collections/DepositCollectionUIComponent.js", "../../../../javascript/components/deposit_collections/DepositCollectionUITable.js", "../../../../javascript/components/deposit_collections/AddRecord.js", "../../../../javascript/components/deposit_collections/LoadCenter.js", "../../../../javascript/components/deposit_collections/AddAccountingFund.js", "../../../../javascript/components/time_deposit_collections/TimeDepositCollectionUIComponent.js", "../../../../javascript/components/time_deposit_collections/TimeDepositCollectionUITable.js", "../../../../javascript/components/time_deposit_collections/AddRecord.js", "../../../../javascript/components/withdrawal_collections/WithdrawalCollectionUIComponent.js", "../../../../javascript/components/withdrawal_collections/WithdrawalCollectionUITable.js", "../../../../javascript/components/withdrawal_collections/AddRecord.js", "../../../../javascript/components/insurance_fund_transfer_collections/InsuranceFundTransferCollectionUIComponent.js", "../../../../javascript/components/insurance_fund_transfer_collections/InsuranceFundTransferCollectionUITable.js", "../../../../javascript/components/insurance_fund_transfer_collections/AddRecord.js", "../../../../javascript/components/insurance_fund_transfer_collections/LoadCenter.js", "../../../../javascript/components/insurance_withdrawal_collections/InsuranceWithdrawalCollectionUIComponent.js", "../../../../javascript/components/insurance_withdrawal_collections/InsuranceWithdrawalCollectionUITable.js", "../../../../javascript/components/insurance_withdrawal_collections/AddRecord.js", "../../../../javascript/components/monthly_closing_collections/ShowUI.js", "../../../../javascript/components/monthly_closing_collections/MemberRecord.js", "../../../../javascript/components/insurance_monthly_closing_collections/ShowUI.js", "../../../../javascript/components/insurance_monthly_closing_collections/MemberRecord.js", "../../../../javascript/components/member_accounts/InsuranceStatusComponent.js", "../../../../javascript/components/accounting/TrialBalanceComponent.js", "../../../../javascript/components/accounting/GeneralLedgerComponent.js", "../../../../javascript/components/accounting/GeneralLedgerEntry.js", "../../../../javascript/components/accounting/AccountingCodeMultiSelect.js", "../../../../javascript/components/accounting/AccountingEntryFormComponent.js", "../../../../javascript/components/data_stores/icpr/ShowComponent.js", "../../../../javascript/components/data_stores/patronage_refund/ShowComponent.js", "../../../../javascript/components/administration/surveys/survey_questions/SurveyQuestionUIComponent.js", "../../../../javascript/components/administration/surveys/survey_questions/OptionEditor.js", "../../../../javascript/components/data_stores/repayment_rates/ShowComponent.js", "../../../../javascript/components/data_stores/repayment_rates/Filter.js", "../../../../javascript/components/data_stores/repayment_rates/MasterListView.js", "../../../../javascript/components/data_stores/repayment_rates/RepaymentRatesView.js", "../../../../javascript/components/data_stores/repayment_rates/AgingOfReceivablesView.js", "../../../../javascript/components/data_stores/repayment_rates/AgingOfReceivablesMFIView.js", "../../../../javascript/services/RepaymentRatesService.js", "env-ns:env", "../../../../javascript/services/AuthService.js", "../../../../javascript/helpers/AppHelper.js", "../../../../javascript/components/data_stores/manual_aging/ShowComponent.js", "../../../../javascript/components/data_stores/manual_aging/Filter.js", "../../../../javascript/components/data_stores/manual_aging/MasterListView.js", "../../../../javascript/components/data_stores/manual_aging/ManualAgingView.js", "../../../../javascript/components/data_stores/manual_aging/AgingOfReceivablesView.js", "../../../../javascript/services/ManualAgingService.js", "../../../../javascript/components/data_stores/personal_funds/ShowComponent.js", "../../../../javascript/components/data_stores/insurance_personal_funds/ShowComponent.js", "../../../../javascript/components/data_stores/soa_expenses/ShowComponent.js", "../../../../javascript/components/data_stores/soa_loans/ShowComponent.js", "../../../../javascript/components/data_stores/soa_funds/ShowComponent.js", "../../../../javascript/components/data_stores/watchlists/ShowComponent.js", "../../../../javascript/components/data_stores/x_weeks_to_pay/ShowComponent.js", "../../../../javascript/components/data_stores/branch_resignations/ShowComponent.js", "../../../../javascript/components/data_stores/branch_resignations/ResignationDisplay.js", "../../../../javascript/components/monitoring/AccountingEntrySubsidiaryBalancingComponent.js", "../../../../javascript/components/monitoring/AccountingEntryPrecisionComponent.js", "../../../../javascript/components/members/FormResignationComponent.js", "../../../../javascript/components/equity_withdrawal_collections/EquityWithdrawalCollectionUIComponent.js", "../../../../javascript/components/equity_withdrawal_collections/EquityWithdrawalCollectionUITable.js", "../../../../javascript/components/equity_withdrawal_collections/AddRecord.js", "../../../../javascript/components/accounting/GeneralLedgerDisplayComponent.js", "../../../../javascript/components/MembershipArrangementShow.js", "../../../../javascript/components/MembershipArrangementLoanProductConfig.js", "../../../../javascript/components/data_stores/monthly_new_and_resigned/ShowComponent.js", "../../../../javascript/components/data_stores/members_in_good_standing/ShowComponent.js", "../../../../javascript/components/data_stores/for_writeoff/ShowComponent.js", "../../../../javascript/components/administration/membership_types/MembershpTypesShow.js", "../../../../javascript/components/administration/pages/AdministrationDashboard.js", "../../../../javascript/components/closing_records/ClosingRecordsManager.js", "../../../../javascript/components/closing_records/ClosingRecordsList.js", "../../../../javascript/components/closing_records/ClosingRecordsControls.js", "../../../../javascript/components/administration/branches/Show.js", "../../../../javascript/components/administration/centers/Show.js", "../../../../javascript/components/branch_psr_records/Show.js", "../../../../javascript/components/visualize/MonthlyPsr.js", "../../../../javascript/components/visualize/MonthlyPsrFinancialStatus.js", "../../../../../node_modules/victory-core/es/victory-animation/victory-animation.js", "../../../../../node_modules/victory-vendor/es/d3-ease.js", "../../../../../node_modules/d3-ease/src/linear.js", "../../../../../node_modules/d3-ease/src/quad.js", "../../../../../node_modules/d3-ease/src/cubic.js", "../../../../../node_modules/d3-ease/src/poly.js", "../../../../../node_modules/d3-ease/src/sin.js", "../../../../../node_modules/d3-ease/src/math.js", "../../../../../node_modules/d3-ease/src/exp.js", "../../../../../node_modules/d3-ease/src/circle.js", "../../../../../node_modules/d3-ease/src/bounce.js", "../../../../../node_modules/d3-ease/src/back.js", "../../../../../node_modules/d3-ease/src/elastic.js", "../../../../../node_modules/victory-core/es/victory-animation/util.js", "../../../../../node_modules/d3-color/src/define.js", "../../../../../node_modules/d3-color/src/color.js", "../../../../../node_modules/d3-interpolate/src/basis.js", "../../../../../node_modules/d3-interpolate/src/basisClosed.js", "../../../../../node_modules/d3-interpolate/src/constant.js", "../../../../../node_modules/d3-interpolate/src/color.js", "../../../../../node_modules/d3-interpolate/src/rgb.js", "../../../../../node_modules/d3-interpolate/src/numberArray.js", "../../../../../node_modules/d3-interpolate/src/array.js", "../../../../../node_modules/d3-interpolate/src/date.js", "../../../../../node_modules/d3-interpolate/src/number.js", "../../../../../node_modules/d3-interpolate/src/object.js", "../../../../../node_modules/d3-interpolate/src/string.js", "../../../../../node_modules/d3-interpolate/src/value.js", "../../../../../node_modules/d3-interpolate/src/round.js", "../../../../../node_modules/d3-interpolate/src/piecewise.js", "../../../../../node_modules/victory-core/es/victory-util/timer-context.js", "../../../../../node_modules/d3-timer/src/timer.js", "../../../../../node_modules/victory-core/es/victory-util/timer.js", "../../../../../node_modules/victory-core/es/victory-container/victory-container.js", "../../../../../node_modules/victory-core/es/victory-util/prop-types.js", "../../../../../node_modules/victory-core/es/victory-util/log.js", "../../../../../node_modules/victory-core/es/victory-util/scale.js", "../../../../../node_modules/victory-core/es/victory-util/helpers.js", "../../../../../node_modules/victory-core/es/victory-util/collection.js", "../../../../../node_modules/victory-vendor/es/d3-scale.js", "../../../../../node_modules/d3-array/src/ascending.js", "../../../../../node_modules/d3-array/src/descending.js", "../../../../../node_modules/d3-array/src/bisector.js", "../../../../../node_modules/d3-array/src/number.js", "../../../../../node_modules/d3-array/src/bisect.js", "../../../../../node_modules/internmap/src/index.js", "../../../../../node_modules/d3-array/src/sort.js", "../../../../../node_modules/d3-array/src/ticks.js", "../../../../../node_modules/d3-array/src/max.js", "../../../../../node_modules/d3-array/src/min.js", "../../../../../node_modules/d3-array/src/quickselect.js", "../../../../../node_modules/d3-array/src/quantile.js", "../../../../../node_modules/d3-array/src/range.js", "../../../../../node_modules/d3-scale/src/init.js", "../../../../../node_modules/d3-scale/src/ordinal.js", "../../../../../node_modules/d3-scale/src/band.js", "../../../../../node_modules/d3-scale/src/constant.js", "../../../../../node_modules/d3-scale/src/number.js", "../../../../../node_modules/d3-scale/src/continuous.js", "../../../../../node_modules/d3-format/src/formatDecimal.js", "../../../../../node_modules/d3-format/src/exponent.js", "../../../../../node_modules/d3-format/src/formatGroup.js", "../../../../../node_modules/d3-format/src/formatNumerals.js", "../../../../../node_modules/d3-format/src/formatSpecifier.js", "../../../../../node_modules/d3-format/src/formatTrim.js", "../../../../../node_modules/d3-format/src/formatPrefixAuto.js", "../../../../../node_modules/d3-format/src/formatRounded.js", "../../../../../node_modules/d3-format/src/formatTypes.js", "../../../../../node_modules/d3-format/src/identity.js", "../../../../../node_modules/d3-format/src/locale.js", "../../../../../node_modules/d3-format/src/defaultLocale.js", "../../../../../node_modules/d3-format/src/precisionFixed.js", "../../../../../node_modules/d3-format/src/precisionPrefix.js", "../../../../../node_modules/d3-format/src/precisionRound.js", "../../../../../node_modules/d3-scale/src/tickFormat.js", "../../../../../node_modules/d3-scale/src/linear.js", "../../../../../node_modules/d3-scale/src/identity.js", "../../../../../node_modules/d3-scale/src/nice.js", "../../../../../node_modules/d3-scale/src/log.js", "../../../../../node_modules/d3-scale/src/symlog.js", "../../../../../node_modules/d3-scale/src/pow.js", "../../../../../node_modules/d3-scale/src/radial.js", "../../../../../node_modules/d3-scale/src/quantile.js", "../../../../../node_modules/d3-scale/src/quantize.js", "../../../../../node_modules/d3-scale/src/threshold.js", "../../../../../node_modules/d3-time/src/interval.js", "../../../../../node_modules/d3-time/src/millisecond.js", "../../../../../node_modules/d3-time/src/duration.js", "../../../../../node_modules/d3-time/src/second.js", "../../../../../node_modules/d3-time/src/minute.js", "../../../../../node_modules/d3-time/src/hour.js", "../../../../../node_modules/d3-time/src/day.js", "../../../../../node_modules/d3-time/src/week.js", "../../../../../node_modules/d3-time/src/month.js", "../../../../../node_modules/d3-time/src/year.js", "../../../../../node_modules/d3-time/src/ticks.js", "../../../../../node_modules/d3-time-format/src/locale.js", "../../../../../node_modules/d3-time-format/src/defaultLocale.js", "../../../../../node_modules/d3-scale/src/time.js", "../../../../../node_modules/d3-scale/src/utcTime.js", "../../../../../node_modules/d3-scale/src/sequential.js", "../../../../../node_modules/d3-scale/src/sequentialQuantile.js", "../../../../../node_modules/d3-scale/src/diverging.js", "../../../../../node_modules/victory-core/es/victory-portal/portal.js", "../../../../../node_modules/victory-core/es/victory-portal/portal-context.js", "../../../../../node_modules/victory-core/es/victory-util/user-props.js", "../../../../../node_modules/victory-core/es/victory-label/victory-label.js", "../../../../../node_modules/victory-core/es/victory-portal/victory-portal.js", "../../../../../node_modules/victory-core/es/victory-primitives/rect.js", "../../../../../node_modules/victory-core/es/victory-primitives/text.js", "../../../../../node_modules/victory-core/es/victory-primitives/tspan.js", "../../../../../node_modules/victory-core/es/victory-util/label-helpers.js", "../../../../../node_modules/victory-core/es/victory-util/style.js", "../../../../../node_modules/victory-core/es/victory-util/textsize.js", "../../../../../node_modules/victory-core/es/victory-transition/victory-transition.js", "../../../../../node_modules/victory-core/es/victory-util/transitions.js", "../../../../../node_modules/victory-core/es/victory-clip-container/victory-clip-container.js", "../../../../../node_modules/victory-core/es/victory-primitives/clip-path.js", "../../../../../node_modules/victory-core/es/victory-primitives/circle.js", "../../../../../node_modules/victory-core/es/victory-theme/grayscale.js", "../../../../../node_modules/victory-core/es/victory-theme/material.js", "../../../../../node_modules/victory-core/es/victory-theme/victory-theme.js", "../../../../../node_modules/victory-core/es/victory-primitives/arc.js", "../../../../../node_modules/victory-core/es/victory-util/common-props.js", "../../../../../node_modules/victory-core/es/victory-primitives/path.js", "../../../../../node_modules/victory-core/es/victory-primitives/background.js", "../../../../../node_modules/victory-core/es/victory-primitives/border.js", "../../../../../node_modules/victory-core/es/victory-primitives/line.js", "../../../../../node_modules/victory-core/es/victory-primitives/line-segment.js", "../../../../../node_modules/victory-core/es/victory-primitives/point.js", "../../../../../node_modules/victory-core/es/victory-util/point-path-helpers.js", "../../../../../node_modules/victory-core/es/victory-util/add-events.js", "../../../../../node_modules/victory-core/es/victory-util/events.js", "../../../../../node_modules/victory-core/es/victory-util/axis.js", "../../../../../node_modules/victory-core/es/victory-util/domain.js", "../../../../../node_modules/victory-core/es/victory-util/data.js", "../../../../../node_modules/victory-core/es/victory-util/immutable.js", "../../../../../node_modules/victory-core/es/victory-util/default-transitions.js", "../../../../../node_modules/victory-core/es/victory-util/hooks/index.js", "../../../../../node_modules/victory-core/es/victory-util/hooks/use-previous-props.js", "../../../../../node_modules/victory-core/es/victory-util/hooks/use-animation-state.js", "../../../../../node_modules/victory-core/es/victory-util/line-helpers.js", "../../../../../node_modules/victory-vendor/es/d3-shape.js", "../../../../../node_modules/d3-shape/src/constant.js", "../../../../../node_modules/d3-shape/src/math.js", "../../../../../node_modules/d3-path/src/path.js", "../../../../../node_modules/d3-shape/src/path.js", "../../../../../node_modules/d3-shape/src/arc.js", "../../../../../node_modules/d3-shape/src/array.js", "../../../../../node_modules/d3-shape/src/curve/linear.js", "../../../../../node_modules/d3-shape/src/point.js", "../../../../../node_modules/d3-shape/src/line.js", "../../../../../node_modules/d3-shape/src/area.js", "../../../../../node_modules/d3-shape/src/descending.js", "../../../../../node_modules/d3-shape/src/identity.js", "../../../../../node_modules/d3-shape/src/pie.js", "../../../../../node_modules/d3-shape/src/curve/radial.js", "../../../../../node_modules/d3-shape/src/lineRadial.js", "../../../../../node_modules/d3-shape/src/areaRadial.js", "../../../../../node_modules/d3-shape/src/pointRadial.js", "../../../../../node_modules/d3-shape/src/curve/bump.js", "../../../../../node_modules/d3-shape/src/link.js", "../../../../../node_modules/d3-shape/src/symbol/asterisk.js", "../../../../../node_modules/d3-shape/src/symbol/circle.js", "../../../../../node_modules/d3-shape/src/symbol/cross.js", "../../../../../node_modules/d3-shape/src/symbol/diamond.js", "../../../../../node_modules/d3-shape/src/symbol/diamond2.js", "../../../../../node_modules/d3-shape/src/symbol/plus.js", "../../../../../node_modules/d3-shape/src/symbol/square.js", "../../../../../node_modules/d3-shape/src/symbol/square2.js", "../../../../../node_modules/d3-shape/src/symbol/star.js", "../../../../../node_modules/d3-shape/src/symbol/triangle.js", "../../../../../node_modules/d3-shape/src/symbol/triangle2.js", "../../../../../node_modules/d3-shape/src/symbol/wye.js", "../../../../../node_modules/d3-shape/src/symbol/times.js", "../../../../../node_modules/d3-shape/src/symbol.js", "../../../../../node_modules/d3-shape/src/noop.js", "../../../../../node_modules/d3-shape/src/curve/basis.js", "../../../../../node_modules/d3-shape/src/curve/basisClosed.js", "../../../../../node_modules/d3-shape/src/curve/basisOpen.js", "../../../../../node_modules/d3-shape/src/curve/bundle.js", "../../../../../node_modules/d3-shape/src/curve/cardinal.js", "../../../../../node_modules/d3-shape/src/curve/cardinalClosed.js", "../../../../../node_modules/d3-shape/src/curve/cardinalOpen.js", "../../../../../node_modules/d3-shape/src/curve/catmullRom.js", "../../../../../node_modules/d3-shape/src/curve/catmullRomClosed.js", "../../../../../node_modules/d3-shape/src/curve/catmullRomOpen.js", "../../../../../node_modules/d3-shape/src/curve/linearClosed.js", "../../../../../node_modules/d3-shape/src/curve/monotone.js", "../../../../../node_modules/d3-shape/src/curve/natural.js", "../../../../../node_modules/d3-shape/src/curve/step.js", "../../../../../node_modules/d3-shape/src/offset/none.js", "../../../../../node_modules/d3-shape/src/order/none.js", "../../../../../node_modules/d3-shape/src/stack.js", "../../../../../node_modules/d3-shape/src/offset/expand.js", "../../../../../node_modules/d3-shape/src/offset/diverging.js", "../../../../../node_modules/d3-shape/src/offset/silhouette.js", "../../../../../node_modules/d3-shape/src/offset/wiggle.js", "../../../../../node_modules/d3-shape/src/order/appearance.js", "../../../../../node_modules/d3-shape/src/order/ascending.js", "../../../../../node_modules/d3-shape/src/order/descending.js", "../../../../../node_modules/d3-shape/src/order/insideOut.js", "../../../../../node_modules/d3-shape/src/order/reverse.js", "../../../../../node_modules/victory-core/es/victory-util/selection.js", "../../../../../node_modules/victory-core/es/victory-util/wrapper.js", "../../../../../node_modules/victory-axis/es/victory-axis.js", "../../../../../node_modules/victory-axis/es/helper-methods.js", "../../../../../node_modules/victory-chart/es/victory-chart.js", "../../../../../node_modules/victory-shared-events/es/victory-shared-events.js", "../../../../../node_modules/victory-polar-axis/es/victory-polar-axis.js", "../../../../../node_modules/victory-polar-axis/es/helper-methods.js", "../../../../../node_modules/victory-chart/es/helper-methods.js", "../../../../../node_modules/victory-voronoi-container/es/victory-voronoi-container.js", "../../../../../node_modules/victory-tooltip/es/victory-tooltip.js", "../../../../../node_modules/victory-tooltip/es/flyout.js", "../../../../../node_modules/victory-voronoi-container/es/voronoi-helpers.js", "../../../../../node_modules/victory-legend/es/victory-legend.js", "../../../../../node_modules/victory-legend/es/helper-methods.js", "../../../../../node_modules/victory-line/es/victory-line.js", "../../../../../node_modules/victory-line/es/helper-methods.js", "../../../../../node_modules/victory-line/es/curve.js", "../../../../../node_modules/victory-scatter/es/victory-scatter.js", "../../../../../node_modules/victory-scatter/es/helper-methods.js", "../../../../javascript/components/visualize/MonthlyPsrPortfolio.js", "../../../../javascript/components/visualize/MonthlyPsrPrincipalPaid.js", "../../../../javascript/components/visualize/MonthlyPsrPastDue.js", "../../../../javascript/components/visualize/MonthlyPsrMemberCount.js", "../../../../javascript/components/transfer_savings/ShowComponent.js", "../../../../javascript/components/share_capital_summary/ShowComponents.js", "../../../../javascript/components/psr_schedules/Generate.js", "../../../../javascript/components/services/PsrScheduleService.js", "../../../../javascript/components/administration/users/Form.js", "../../../../javascript/services/UsersService.js", "../../../../javascript/components/administration/users/Index.js", "../../../../javascript/components/commons/Pagination.js", "../../../../javascript/components/administration/users/Show.js", "../../../../javascript/components/administration/users/ModalDelete.js", "../../../../javascript/components/administration/users/BranchManager.js", "../../../../javascript/components/data_stores/allowance_computation_report/ShowComponents.js", "../../../../javascript/components/users/Login.js", "../../../../javascript/components/users/ModalForgotPassword.js", "../../../../javascript/components/allowance_losses/Generate.js", "../../../../javascript/components/services/AllowanceLossesService.js", "../../../../../node_modules/mustache/mustache.mjs", "../../../../javascript/models/SavingsAccountsShow.js", "../../../../javascript/models/ShowWithdrawalRequest.js", "../../../../javascript/models/AccountingCodesIndex.js", "../../../../javascript/models/AccountingBooksIndex.js", "../../../../javascript/models/LoansShow.js", "../../../../javascript/models/LoanFormDocumentBuilder.js", "../../../../javascript/models/BillingsIndex.js", "../../../../javascript/models/BillingsShow.js", "../../../../javascript/models/MembershipPaymentCollectionsIndex.js", "../../../../javascript/models/MembershipPaymentCollectionsShow.js", "../../../../javascript/models/DepositCollectionsIndex.js", "../../../../javascript/models/DepositCollectionsShow.js", "../../../../javascript/models/TimeDepositCollectionsIndex.js", "../../../../javascript/models/TimeDepositCollectionsShow.js", "../../../../javascript/models/WithdrawalCollectionsIndex.js", "../../../../javascript/models/WithdrawalCollectionsShow.js", "../../../../javascript/models/MembersIndex.js", "../../../../javascript/models/SurveyAnswer.js", "../../../../javascript/models/SavingsInsuranceTransferCollectionsIndex.js", "../../../../javascript/models/SavingsInsuranceTransferCollectionsShow.js", "../../../../javascript/models/InsuranceLoanBundleEnrollmentsIndex.js", "../../../../javascript/models/InsuranceLoanBundleEnrollmentsShow.js", "../../../../javascript/models/KpfLoanClipsIndex.js", "../../../../javascript/models/KpfLoanClipsShow.js", "../../../../javascript/models/InsuranceFundTransferCollectionsIndex.js", "../../../../javascript/models/InsuranceFundTransferCollectionsShow.js", "../../../../javascript/models/InsuranceWithdrawalCollectionsIndex.js", "../../../../javascript/models/InsuranceWithdrawalCollectionsShow.js", "../../../../javascript/models/MonthlyClosingCollectionsIndex.js", "../../../../javascript/models/MonthlyClosingCollectionsShow.js", "../../../../javascript/models/InsuranceMonthlyClosingCollectionsIndex.js", "../../../../javascript/models/InsuranceMonthlyClosingCollectionsShow.js", "../../../../javascript/models/CommissionCollectionsIndex.js", "../../../../javascript/models/CommissionCollectionsShow.js", "../../../../javascript/models/YearEndClosingsIndex.js", "../../../../javascript/models/YearEndClosingsShow.js", "../../../../javascript/models/DataStoresIcprIndex.js", "../../../../javascript/models/DataStoresIcprShow.js", "../../../../javascript/models/PatronageRefundIndex.js", "../../../../javascript/models/PatronageRefundShow.js", "../../../../javascript/models/BalanceSheetsIndex.js", "../../../../javascript/models/IncomeStatementsIndex.js", "../../../../javascript/models/SubsidiaryAdjustmentsIndex.js", "../../../../javascript/models/SubsidiaryAdjustmentsShow.js", "../../../../javascript/models/BatchMoratoriumAdjustmentsIndex.js", "../../../../javascript/models/BatchMoratoriumAdjustmentsShow.js", "../../../../javascript/models/MemberAccountValidationsIndex.js", "../../../../javascript/models/MemberAccountValidationsShow.js", "../../../../javascript/models/MemberAccountValidationsForm.js", "../../../../javascript/models/ClaimsShow.js", "../../../../javascript/models/ValidationsReport.js", "../../../../javascript/models/AccountingEntriesShow.js", "../../../../javascript/models/InsuranceAccountStatusIndex.js", "../../../../javascript/models/Seriatim.js", "../../../../javascript/models/AdministrationLoanProductsShow.js", "../../../../javascript/models/AdministrationLoanProductsIndex.js", "../../../../javascript/models/AdministrationAreasIndex.js", "../../../../javascript/models/AdministrationClustersIndex.js", "../../../../javascript/models/AdministrationBranchesIndex.js", "../../../../javascript/models/AdministrationSurveysIndex.js", "../../../../javascript/models/AdministrationSurveysShow.js", "../../../../javascript/models/MemberSharesShow.js", "../../../../javascript/models/MemberSharesForm.js", "../../../../javascript/models/MemberSharesPrintShareCertificate.js", "../../../../javascript/models/ExportsBillingPerCenter.js", "../../../../javascript/models/MonthlyNewAndResignedIndex.js", "../../../../javascript/models/ExportTools.js", "../../../../javascript/models/RepaymentRatesIndex.js", "../../../../javascript/models/ManualAgingIndex.js", "../../../../javascript/models/PersonalFundsIndex.js", "../../../../javascript/models/PersonalFundsShow.js", "../../../../javascript/models/InsurancePersonalFundsIndex.js", "../../../../javascript/models/InsurancePersonalFundsShow.js", "../../../../javascript/models/BranchLoansStatsIndex.js", "../../../../javascript/models/BranchLoansStatsShow.js", "../../../../javascript/models/MemberCountsIndex.js", "../../../../javascript/models/MemberCountsShow.js", "../../../../javascript/models/InsuranceMemberCountsIndex.js", "../../../../javascript/models/InsuranceMemberCountsShow.js", "../../../../javascript/models/ClaimsCountsIndex.js", "../../../../javascript/models/ClaimsCountsShow.js", "../../../../javascript/models/AccountingEntriesSummariesIndex.js", "../../../../javascript/models/SOAExpensesIndex.js", "../../../../javascript/models/SOALoansIndex.js", "../../../../javascript/models/SOAFundsIndex.js", "../../../../javascript/models/WatchlistsIndex.js", "../../../../javascript/models/MonthlyIncentivesIndex.js", "../../../../javascript/models/XWeeksToPayIndex.js", "../../../../javascript/models/BranchResignationsIndex.js", "../../../../javascript/models/ReportsMonthlyRemittance.js", "../../../../javascript/models/ReportsInsuranceInterest.js", "../../../../javascript/models/ReportsInsuredLoans.js", "../../../../javascript/models/ReportsHiipReport.js", "../../../../javascript/models/ReportsMemberReports.js", "../../../../javascript/models/ReportsCollectionsCLIP.js", "../../../../javascript/models/ReportsCollectionsBLIP.js", "../../../../javascript/models/ReportsMemberDependents.js", "../../../../javascript/models/ReportsMemberQuarterlyReports.js", "../../../../javascript/models/ReportsInsuranceQuarterlyReports.js", "../../../../javascript/models/ReportsMemberCounts.js", "../../../../javascript/models/ReportsCIC.js", "../../../../javascript/models/ReportsMonthlyCollection.js", "../../../../javascript/models/ReportsSummaryOfCertificatesAndPolicies.js", "../../../../javascript/models/ReportsSavingsInsuranceTransferReports.js", "../../../../javascript/models/ReportsInsuranceLoanBundleReports.js", "../../../../javascript/models/ReportsKpfLoanClipReports.js", "../../../../javascript/models/ReportsClaimsProcessingTimeReport.js", "../../../../javascript/models/ReportsClaimsProcessingTimeReportSummary.js", "../../../../javascript/models/ReportsReclassifiedReport.js", "../../../../javascript/models/ReportsPersonalDocuments.js", "../../../../javascript/models/ReportsClaims.js", "../../../../javascript/models/UserDemeritsShow.js", "../../../../javascript/models/EquityWithdrawalCollectionsIndex.js", "../../../../javascript/models/EquityWithdrawalCollectionsShow.js", "../../../../javascript/models/ClaimsIndex.js", "../../../../javascript/models/AdjustmentsMoratoriumsIndex.js", "../../../../javascript/models/ChangePassword.js", "../../../../javascript/models/TrialBalancesIndex.js", "../../../../javascript/models/TrialBalancesShow.js", "../../../../javascript/models/GeneralLedgersIndex.js", "../../../../javascript/models/GeneralLedgersShow.js", "../../../../javascript/models/MembersSearch.js", "../../../../javascript/models/AdjustmentsAccruedInterestsIndex.js", "../../../../javascript/models/AdjustmentsAccruedInterestsShow.js", "../../../../javascript/models/AccruedPaymentCollectionsIndex.js", "../../../../javascript/models/AccruedPaymentCollectionsShow.js", "../../../../javascript/models/AdjustmentsRecomputeRestructuresIndex.js", "../../../../javascript/models/AdjustmentsRecomputeRestructuresShow.js", "../../../../javascript/models/DailyBranchMetricsIndex.js", "../../../../javascript/models/Dashboard.js", "../../../../javascript/models/MonthlyAccountingCodeSummariesIndex.js", "../../../../javascript/models/TrendsIndex.js", "../../../../javascript/models/OnlineApplicationsShow.js", "../../../../javascript/models/MembershipApplicationFormDocumentBuilder.js", "../../../../javascript/models/OnlineLoanApplicationsShow.js", "../../../../javascript/models/OnlineLoanApplicationsEdit.js", "../../../../javascript/models/BillingForFullPaymentsIndex.js", "../../../../javascript/models/BillingForFullPaymentsShow.js", "../../../../javascript/models/LoansReverseForm.js", "../../../../javascript/models/MidasIndex.js", "../../../../javascript/models/MembersInGoodStandingIndex.js", "../../../../javascript/models/MembersInGoodStandingShow.js", "../../../../javascript/models/ForWriteoffIndex.js", "../../../../javascript/models/ForWriteoffShow.js", "../../../../javascript/models/TransferMemberRecordsIndex.js", "../../../../javascript/models/TransferMemberRecordsShow.js", "../../../../javascript/models/MembersMakePayment.js", "../../../../javascript/models/BillingForWriteoffIndex.js", "../../../../javascript/models/BillingForWriteoffShow.js", "../../../../javascript/models/MemberIdGeneratorsIndex.js", "../../../../javascript/models/MemberIdGeneratorsShow.js", "../../../../javascript/models/MonthlyIncentivesShow.js", "../../../../javascript/models/Sidebar.js", "../../../../javascript/models/BillingForWriteoffCollectionIndex.js", "../../../../javascript/models/BillingForWriteoffCollectionShow.js", "../../../../javascript/models/AdditionalShareIndex.js", "../../../../javascript/models/AdditionalShareShow.js", "../../../../javascript/models/Profile.js", "../../../../javascript/models/MembersProjectTypesIndex.js", "../../../../javascript/models/MembersProjectTypesShow.js", "../../../../javascript/models/TransferSavingsIndex.js", "../../../../javascript/models/TransferSavingsShow.js", "../../../../javascript/models/MbsTransferIndex.js", "../../../../javascript/models/MbsTransferShow.js", "../../../../javascript/models/InvoluntaryMembersIndex.js", "../../../../javascript/models/InvoluntaryMembersShow.js", "../../../../javascript/models/BankTransferIndex.js", "../../../../javascript/models/ShareCapitalSummaryIndex.js", "../../../../javascript/models/ProjectTypeSummaryIndex.js", "../../../../javascript/models/AssetsLiabilitiesIndex.js", "../../../../javascript/models/BranchCashFlowIndex.js", "../../../../javascript/models/ShareCapitalInvoluntary.js", "../../../../javascript/models/ShareCapitalInvoluntaryShow.js", "../../../../javascript/models/BillingForInvoluntaryIndex.js", "../../../../javascript/models/BillingForInvoluntaryShow.js", "../../../../javascript/models/AllowanceComputationIndex.js", "../../../../javascript/models/AdministrationAddressIndex.js", "../../../../javascript/models/AdministrationProvinceIndex.js", "../../../../javascript/models/AdministrationMunicipalityIndex.js", "../../../../javascript/models/AdministrationBarangayIndex.js", "../../../../javascript/models/WrittenOffReportIndex.js", "../../../../javascript/models/WrittenOffReportShow.js", "../../../../javascript/models/InvoluntaryPaymentIndex.js", "../../../../javascript/models/InvoluntaryPaymentShow.js", "../../../../javascript/models/ApiReceiveMembersIndex.js", "../../../../javascript/models/ApiReceiveMembersShow.js", "../../../../javascript/models/DormantIndex.js", "../../../../javascript/models/DormantShow.js", "../../../../javascript/models/HolidayIndex.js", "../../../../javascript/models/ReportsBillingLapsedMemberReports.js", "../../../../javascript/models/BoardResolutionIndex.js", "../../../../javascript/models/BoardResolutionShow.js", "../../../../javascript/models/UploadLoansIndex.js"],
  "sourcesContent": ["/*!\n * jQuery JavaScript Library v3.7.0\n * https://jquery.com/\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2023-05-11T18:29Z\n */\n( function( global, factory ) {\n\n\t\"use strict\";\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket trac-14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n} )( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n// enough that all such attempts are guarded in a try block.\n\"use strict\";\n\nvar arr = [];\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar flat = arr.flat ? function( array ) {\n\treturn arr.flat.call( array );\n} : function( array ) {\n\treturn arr.concat.apply( [], array );\n};\n\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\nvar support = {};\n\nvar isFunction = function isFunction( obj ) {\n\n\t\t// Support: Chrome <=57, Firefox <=52\n\t\t// In some browsers, typeof returns \"function\" for HTML <object> elements\n\t\t// (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n\t\t// We don't want to classify *any* DOM node as a function.\n\t\t// Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5\n\t\t// Plus for old WebKit, typeof returns \"function\" for HTML collections\n\t\t// (e.g., `typeof document.getElementsByTagName(\"div\") === \"function\"`). (gh-4756)\n\t\treturn typeof obj === \"function\" && typeof obj.nodeType !== \"number\" &&\n\t\t\ttypeof obj.item !== \"function\";\n\t};\n\n\nvar isWindow = function isWindow( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t};\n\n\nvar document = window.document;\n\n\n\n\tvar preservedScriptAttributes = {\n\t\ttype: true,\n\t\tsrc: true,\n\t\tnonce: true,\n\t\tnoModule: true\n\t};\n\n\tfunction DOMEval( code, node, doc ) {\n\t\tdoc = doc || document;\n\n\t\tvar i, val,\n\t\t\tscript = doc.createElement( \"script\" );\n\n\t\tscript.text = code;\n\t\tif ( node ) {\n\t\t\tfor ( i in preservedScriptAttributes ) {\n\n\t\t\t\t// Support: Firefox 64+, Edge 18+\n\t\t\t\t// Some browsers don't support the \"nonce\" property on scripts.\n\t\t\t\t// On the other hand, just using `getAttribute` is not enough as\n\t\t\t\t// the `nonce` attribute is reset to an empty string whenever it\n\t\t\t\t// becomes browsing-context connected.\n\t\t\t\t// See https://github.com/whatwg/html/issues/2369\n\t\t\t\t// See https://html.spec.whatwg.org/#nonce-attributes\n\t\t\t\t// The `node.getAttribute` check was added for the sake of\n\t\t\t\t// `jQuery.globalEval` so that it can fake a nonce-containing node\n\t\t\t\t// via an object.\n\t\t\t\tval = node[ i ] || node.getAttribute && node.getAttribute( i );\n\t\t\t\tif ( val ) {\n\t\t\t\t\tscript.setAttribute( i, val );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n\n\nfunction toType( obj ) {\n\tif ( obj == null ) {\n\t\treturn obj + \"\";\n\t}\n\n\t// Support: Android <=2.3 only (functionish RegExp)\n\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\ttypeof obj;\n}\n/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\n\n\nvar version = \"3.7.0\",\n\n\trhtmlSuffix = /HTML$/i,\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t};\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teven: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn ( i + 1 ) % 2;\n\t\t} ) );\n\t},\n\n\todd: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn i % 2;\n\t\t} ) );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent Object.prototype pollution\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( name === \"__proto__\" || target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\t\t\t\t\tsrc = target[ name ];\n\n\t\t\t\t\t// Ensure proper type for the source value\n\t\t\t\t\tif ( copyIsArray && !Array.isArray( src ) ) {\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {\n\t\t\t\t\t\tclone = {};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src;\n\t\t\t\t\t}\n\t\t\t\t\tcopyIsArray = false;\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\t// Evaluates a script in a provided context; falls back to the global one\n\t// if not specified.\n\tglobalEval: function( code, options, doc ) {\n\t\tDOMEval( code, { nonce: options && options.nonce }, doc );\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\n\t// Retrieve the text value of an array of DOM nodes\n\ttext: function( elem ) {\n\t\tvar node,\n\t\t\tret = \"\",\n\t\t\ti = 0,\n\t\t\tnodeType = elem.nodeType;\n\n\t\tif ( !nodeType ) {\n\n\t\t\t// If no nodeType, this is expected to be an array\n\t\t\twhile ( ( node = elem[ i++ ] ) ) {\n\n\t\t\t\t// Do not traverse comment nodes\n\t\t\t\tret += jQuery.text( node );\n\t\t\t}\n\t\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\t\t\treturn elem.textContent;\n\t\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\t\treturn elem.nodeValue;\n\t\t}\n\n\t\t// Do not include comment or processing instruction nodes\n\n\t\treturn ret;\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\tisXMLDoc: function( elem ) {\n\t\tvar namespace = elem && elem.namespaceURI,\n\t\t\tdocElem = elem && ( elem.ownerDocument || elem ).documentElement;\n\n\t\t// Assume HTML when documentElement doesn't yet exist, such as inside\n\t\t// document fragments.\n\t\treturn !rhtmlSuffix.test( namespace || docElem && docElem.nodeName || \"HTML\" );\n\t},\n\n\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn flat( ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\n\tfunction( _i, name ) {\n\t\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n\t} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = toType( obj );\n\n\tif ( isFunction( obj ) || isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\n\n\nfunction nodeName( elem, name ) {\n\n\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\n}\nvar pop = arr.pop;\n\n\nvar sort = arr.sort;\n\n\nvar splice = arr.splice;\n\n\nvar whitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\";\n\n\nvar rtrimCSS = new RegExp(\n\t\"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\",\n\t\"g\"\n);\n\n\n\n\n// Note: an element does not contain itself\njQuery.contains = function( a, b ) {\n\tvar bup = b && b.parentNode;\n\n\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\n\t\t// Support: IE 9 - 11+\n\t\t// IE doesn't have `contains` on SVG.\n\t\ta.contains ?\n\t\t\ta.contains( bup ) :\n\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t) );\n};\n\n\n\n\n// CSS string/identifier serialization\n// https://drafts.csswg.org/cssom/#common-serializing-idioms\nvar rcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\x80-\\uFFFF\\w-]/g;\n\nfunction fcssescape( ch, asCodePoint ) {\n\tif ( asCodePoint ) {\n\n\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\tif ( ch === \"\\0\" ) {\n\t\t\treturn \"\\uFFFD\";\n\t\t}\n\n\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\treturn ch.slice( 0, -1 ) + \"\\\\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t}\n\n\t// Other potentially-special ASCII characters get backslash-escaped\n\treturn \"\\\\\" + ch;\n}\n\njQuery.escapeSelector = function( sel ) {\n\treturn ( sel + \"\" ).replace( rcssescape, fcssescape );\n};\n\n\n\n\nvar preferredDoc = document,\n\tpushNative = push;\n\n( function() {\n\nvar i,\n\tExpr,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\tpush = pushNative,\n\n\t// Local document vars\n\tdocument,\n\tdocumentElement,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\tmatches,\n\n\t// Instance-specific data\n\texpando = jQuery.expando,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tnonnativeSelectorCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|\" +\n\t\t\"loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// https://www.w3.org/TR/css-syntax-3/#ident-token-diagram\n\tidentifier = \"(?:\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace +\n\t\t\"?|\\\\\\\\[^\\\\r\\\\n\\\\f]|[\\\\w-]|[^\\0-\\\\x7f])+\",\n\n\t// Attribute selectors: https://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\n\t\t// \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" +\n\t\twhitespace + \"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trleadingCombinator = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" +\n\t\twhitespace + \"*\" ),\n\trdescend = new RegExp( whitespace + \"|>\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\tID: new RegExp( \"^#(\" + identifier + \")\" ),\n\t\tCLASS: new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\tTAG: new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\tATTR: new RegExp( \"^\" + attributes ),\n\t\tPSEUDO: new RegExp( \"^\" + pseudos ),\n\t\tCHILD: new RegExp(\n\t\t\t\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" +\n\t\t\t\twhitespace + \"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" +\n\t\t\t\twhitespace + \"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\tbool: new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\tneedsContext: new RegExp( \"^\" + whitespace +\n\t\t\t\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" + whitespace +\n\t\t\t\"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\n\t// CSS escapes\n\t// https://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace +\n\t\t\"?|\\\\\\\\([^\\\\r\\\\n\\\\f])\", \"g\" ),\n\tfunescape = function( escape, nonHex ) {\n\t\tvar high = \"0x\" + escape.slice( 1 ) - 0x10000;\n\n\t\tif ( nonHex ) {\n\n\t\t\t// Strip the backslash prefix from a non-hex escape sequence\n\t\t\treturn nonHex;\n\t\t}\n\n\t\t// Replace a hexadecimal escape sequence with the encoded Unicode code point\n\t\t// Support: IE <=11+\n\t\t// For values outside the Basic Multilingual Plane (BMP), manually construct a\n\t\t// surrogate pair\n\t\treturn high < 0 ?\n\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// Used for iframes; see `setDocument`.\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE/Edge.\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tinDisabledFieldset = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && nodeName( elem, \"fieldset\" );\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\n\n// Support: IE <=9 only\n// Accessing document.activeElement can throw unexpectedly\n// https://bugs.jquery.com/ticket/13393\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t( arr = slice.call( preferredDoc.childNodes ) ),\n\t\tpreferredDoc.childNodes\n\t);\n\n\t// Support: Android <=4.0\n\t// Detect silently failing push.apply\n\t// eslint-disable-next-line no-unused-expressions\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = {\n\t\tapply: function( target, els ) {\n\t\t\tpushNative.apply( target, slice.call( els ) );\n\t\t},\n\t\tcall: function( target ) {\n\t\t\tpushNative.apply( target, slice.call( arguments, 1 ) );\n\t\t}\n\t};\n}\n\nfunction find( selector, context, results, seed ) {\n\tvar m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\t\tsetDocument( context );\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( ( m = match[ 1 ] ) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( ( elem = context.getElementById( m ) ) ) {\n\n\t\t\t\t\t\t\t// Support: IE 9 only\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tpush.call( results, elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE 9 only\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && ( elem = newContext.getElementById( m ) ) &&\n\t\t\t\t\t\t\tfind.contains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tpush.call( results, elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[ 2 ] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( ( m = match[ 3 ] ) && context.getElementsByClassName ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( !nonnativeSelectorCache[ selector + \" \" ] &&\n\t\t\t\t( !rbuggyQSA || !rbuggyQSA.test( selector ) ) ) {\n\n\t\t\t\tnewSelector = selector;\n\t\t\t\tnewContext = context;\n\n\t\t\t\t// qSA considers elements outside a scoping root when evaluating child or\n\t\t\t\t// descendant combinators, which is not what we want.\n\t\t\t\t// In such cases, we work around the behavior by prefixing every selector in the\n\t\t\t\t// list with an ID selector referencing the scope context.\n\t\t\t\t// The technique has to be used as well when a leading combinator is used\n\t\t\t\t// as such selectors are not recognized by querySelectorAll.\n\t\t\t\t// Thanks to Andrew Dupont for this technique.\n\t\t\t\tif ( nodeType === 1 &&\n\t\t\t\t\t( rdescend.test( selector ) || rleadingCombinator.test( selector ) ) ) {\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\n\t\t\t\t\t// We can use :scope instead of the ID hack if the browser\n\t\t\t\t\t// supports it & if we're not changing the context.\n\t\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when\n\t\t\t\t\t// strict-comparing two documents; shallow comparisons work.\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\t\tif ( newContext != context || !support.scope ) {\n\n\t\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\t\tif ( ( nid = context.getAttribute( \"id\" ) ) ) {\n\t\t\t\t\t\t\tnid = jQuery.escapeSelector( nid );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcontext.setAttribute( \"id\", ( nid = expando ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[ i ] = ( nid ? \"#\" + nid : \":scope\" ) + \" \" +\n\t\t\t\t\t\t\ttoSelector( groups[ i ] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t);\n\t\t\t\t\treturn results;\n\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\tnonnativeSelectorCache( selector, true );\n\t\t\t\t} finally {\n\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrimCSS, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\n\t\t// Use (key + \" \") to avoid collision with native prototype properties\n\t\t// (see https://github.com/jquery/sizzle/issues/157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn ( cache[ key + \" \" ] = value );\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by jQuery selector module\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\nfunction assert( fn ) {\n\tvar el = document.createElement( \"fieldset\" );\n\n\ttry {\n\t\treturn !!fn( el );\n\t} catch ( e ) {\n\t\treturn false;\n\t} finally {\n\n\t\t// Remove from its parent by default\n\t\tif ( el.parentNode ) {\n\t\t\tel.parentNode.removeChild( el );\n\t\t}\n\n\t\t// release memory in IE\n\t\tel = null;\n\t}\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\treturn nodeName( elem, \"input\" ) && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\treturn ( nodeName( elem, \"input\" ) || nodeName( elem, \"button\" ) ) &&\n\t\t\telem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\nfunction createDisabledPseudo( disabled ) {\n\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Only certain elements can match :enabled or :disabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n\t\tif ( \"form\" in elem ) {\n\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\n\t\t\t// * listed form-associated elements in a disabled fieldset\n\t\t\t//   https://html.spec.whatwg.org/multipage/forms.html#category-listed\n\t\t\t//   https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n\t\t\t// * option elements in a disabled optgroup\n\t\t\t//   https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n\t\t\t// All such elements have a \"form\" property.\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\n\n\t\t\t\t// Option elements defer to a parent optgroup if present\n\t\t\t\tif ( \"label\" in elem ) {\n\t\t\t\t\tif ( \"label\" in elem.parentNode ) {\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.disabled === disabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Support: IE 6 - 11+\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\t\t\t\treturn elem.isDisabled === disabled ||\n\n\t\t\t\t\t// Where there is no isDisabled, check manually\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\t\tinDisabledFieldset( elem ) === disabled;\n\t\t\t}\n\n\t\t\treturn elem.disabled === disabled;\n\n\t\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n\t\t// even exist on them, let alone have a boolean value.\n\t\t} else if ( \"label\" in elem ) {\n\t\t\treturn elem.disabled === disabled;\n\t\t}\n\n\t\t// Remaining elements are neither :enabled nor :disabled\n\t\treturn false;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction( function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction( function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ ( j = matchIndexes[ i ] ) ] ) {\n\t\t\t\t\tseed[ j ] = !( matches[ j ] = seed[ j ] );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t} );\n}\n\n/**\n * Checks a node for validity as a jQuery selector context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [node] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nfunction setDocument( node ) {\n\tvar subWindow,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocumentElement = document.documentElement;\n\tdocumentIsHTML = !jQuery.isXMLDoc( document );\n\n\t// Support: iOS 7 only, IE 9 - 11+\n\t// Older browsers didn't support unprefixed `matches`.\n\tmatches = documentElement.matches ||\n\t\tdocumentElement.webkitMatchesSelector ||\n\t\tdocumentElement.msMatchesSelector;\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (see trac-13936)\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( preferredDoc != document &&\n\t\t( subWindow = document.defaultView ) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t\tsubWindow.addEventListener( \"unload\", unloadHandler );\n\t}\n\n\t// Support: IE <10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programmatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert( function( el ) {\n\t\tdocumentElement.appendChild( el ).id = jQuery.expando;\n\t\treturn !document.getElementsByName ||\n\t\t\t!document.getElementsByName( jQuery.expando ).length;\n\t} );\n\n\t// Support: IE 9 only\n\t// Check to see if it's possible to do matchesSelector\n\t// on a disconnected node.\n\tsupport.disconnectedMatch = assert( function( el ) {\n\t\treturn matches.call( el, \"*\" );\n\t} );\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// IE/Edge don't support the :scope pseudo-class.\n\tsupport.scope = assert( function() {\n\t\treturn document.querySelectorAll( \":scope\" );\n\t} );\n\n\t// Support: Chrome 105 - 111 only, Safari 15.4 - 16.3 only\n\t// Make sure the `:has()` argument is parsed unforgivingly.\n\t// We include `*` in the test to detect buggy implementations that are\n\t// _selectively_ forgiving (specifically when the list includes at least\n\t// one valid selector).\n\t// Note that we treat complete lack of support for `:has()` as if it were\n\t// spec-compliant support, which is fine because use of `:has()` in such\n\t// environments will fail in the qSA path and fall back to jQuery traversal\n\t// anyway.\n\tsupport.cssHas = assert( function() {\n\t\ttry {\n\t\t\tdocument.querySelector( \":has(*,:jqfake)\" );\n\t\t\treturn false;\n\t\t} catch ( e ) {\n\t\t\treturn true;\n\t\t}\n\t} );\n\n\t// ID filter and find\n\tif ( support.getById ) {\n\t\tExpr.filter.ID = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute( \"id\" ) === attrId;\n\t\t\t};\n\t\t};\n\t\tExpr.find.ID = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar elem = context.getElementById( id );\n\t\t\t\treturn elem ? [ elem ] : [];\n\t\t\t}\n\t\t};\n\t} else {\n\t\tExpr.filter.ID =  function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode( \"id\" );\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\n\t\t// Support: IE 6 - 7 only\n\t\t// getElementById is not reliable as a find shortcut\n\t\tExpr.find.ID = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar node, i, elems,\n\t\t\t\t\telem = context.getElementById( id );\n\n\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t// Verify the id attribute\n\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fall back on getElementsByName\n\t\t\t\t\telems = context.getElementsByName( id );\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile ( ( elem = elems[ i++ ] ) ) {\n\t\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn [];\n\t\t\t}\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find.TAG = function( tag, context ) {\n\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t// DocumentFragment nodes don't have gEBTN\n\t\t} else {\n\t\t\treturn context.querySelectorAll( tag );\n\t\t}\n\t};\n\n\t// Class\n\tExpr.find.CLASS = function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\trbuggyQSA = [];\n\n\t// Build QSA regex\n\t// Regex strategy adopted from Diego Perini\n\tassert( function( el ) {\n\n\t\tvar input;\n\n\t\tdocumentElement.appendChild( el ).innerHTML =\n\t\t\t\"<a id='\" + expando + \"' href='' disabled='disabled'></a>\" +\n\t\t\t\"<select id='\" + expando + \"-\\r\\\\' disabled='disabled'>\" +\n\t\t\t\"<option selected=''></option></select>\";\n\n\t\t// Support: iOS <=7 - 8 only\n\t\t// Boolean attributes and \"value\" are not treated correctly in some XML documents\n\t\tif ( !el.querySelectorAll( \"[selected]\" ).length ) {\n\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t}\n\n\t\t// Support: iOS <=7 - 8 only\n\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\trbuggyQSA.push( \"~=\" );\n\t\t}\n\n\t\t// Support: iOS 8 only\n\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\trbuggyQSA.push( \".#.+[+~]\" );\n\t\t}\n\n\t\t// Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+\n\t\t// In some of the document kinds, these selectors wouldn't work natively.\n\t\t// This is probably OK but for backwards compatibility we want to maintain\n\t\t// handling them through jQuery traversal in jQuery 3.x.\n\t\tif ( !el.querySelectorAll( \":checked\" ).length ) {\n\t\t\trbuggyQSA.push( \":checked\" );\n\t\t}\n\n\t\t// Support: Windows 8 Native Apps\n\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\tinput = document.createElement( \"input\" );\n\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t// Support: IE 9 - 11+\n\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t// Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+\n\t\t// In some of the document kinds, these selectors wouldn't work natively.\n\t\t// This is probably OK but for backwards compatibility we want to maintain\n\t\t// handling them through jQuery traversal in jQuery 3.x.\n\t\tdocumentElement.appendChild( el ).disabled = true;\n\t\tif ( el.querySelectorAll( \":disabled\" ).length !== 2 ) {\n\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t}\n\n\t\t// Support: IE 11+, Edge 15 - 18+\n\t\t// IE 11/Edge don't find elements on a `[name='']` query in some cases.\n\t\t// Adding a temporary attribute to the document before the selection works\n\t\t// around the issue.\n\t\t// Interestingly, IE 10 & older don't seem to have the issue.\n\t\tinput = document.createElement( \"input\" );\n\t\tinput.setAttribute( \"name\", \"\" );\n\t\tel.appendChild( input );\n\t\tif ( !el.querySelectorAll( \"[name='']\" ).length ) {\n\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*name\" + whitespace + \"*=\" +\n\t\t\t\twhitespace + \"*(?:''|\\\"\\\")\" );\n\t\t}\n\t} );\n\n\tif ( !support.cssHas ) {\n\n\t\t// Support: Chrome 105 - 110+, Safari 15.4 - 16.3+\n\t\t// Our regular `try-catch` mechanism fails to detect natively-unsupported\n\t\t// pseudo-classes inside `:has()` (such as `:has(:contains(\"Foo\"))`)\n\t\t// in browsers that parse the `:has()` argument as a forgiving selector list.\n\t\t// https://drafts.csswg.org/selectors/#relational now requires the argument\n\t\t// to be parsed unforgivingly, but browsers have not yet fully adjusted.\n\t\trbuggyQSA.push( \":has\" );\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( \"|\" ) );\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = function( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t// two documents; shallow comparisons work.\n\t\t// eslint-disable-next-line eqeqeq\n\t\tcompare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( a === document || a.ownerDocument == preferredDoc &&\n\t\t\t\tfind.contains( preferredDoc, a ) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( b === document || b.ownerDocument == preferredDoc &&\n\t\t\t\tfind.contains( preferredDoc, b ) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t};\n\n\treturn document;\n}\n\nfind.matches = function( expr, elements ) {\n\treturn find( expr, null, null, elements );\n};\n\nfind.matchesSelector = function( elem, expr ) {\n\tsetDocument( elem );\n\n\tif ( documentIsHTML &&\n\t\t!nonnativeSelectorCache[ expr + \" \" ] &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\n\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t// fragment in IE 9\n\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch ( e ) {\n\t\t\tnonnativeSelectorCache( expr, true );\n\t\t}\n\t}\n\n\treturn find( expr, document, null, [ elem ] ).length > 0;\n};\n\nfind.contains = function( context, elem ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( context.ownerDocument || context ) != document ) {\n\t\tsetDocument( context );\n\t}\n\treturn jQuery.contains( context, elem );\n};\n\n\nfind.attr = function( elem, name ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( elem.ownerDocument || elem ) != document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\n\t\t// Don't get fooled by Object.prototype properties (see trac-13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\tif ( val !== undefined ) {\n\t\treturn val;\n\t}\n\n\treturn elem.getAttribute( name );\n};\n\nfind.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\njQuery.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\t//\n\t// Support: Android <=4.0+\n\t// Testing for detecting duplicates is unpredictable so instead assume we can't\n\t// depend on duplicate detection in all browsers without a stable sort.\n\thasDuplicate = !support.sortStable;\n\tsortInput = !support.sortStable && slice.call( results, 0 );\n\tsort.call( results, sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tsplice.call( results, duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\njQuery.fn.uniqueSort = function() {\n\treturn this.pushStack( jQuery.uniqueSort( slice.apply( this ) ) );\n};\n\nExpr = jQuery.expr = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\tATTR: function( match ) {\n\t\t\tmatch[ 1 ] = match[ 1 ].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[ 3 ] = ( match[ 3 ] || match[ 4 ] || match[ 5 ] || \"\" )\n\t\t\t\t.replace( runescape, funescape );\n\n\t\t\tif ( match[ 2 ] === \"~=\" ) {\n\t\t\t\tmatch[ 3 ] = \" \" + match[ 3 ] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\tCHILD: function( match ) {\n\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[ 1 ] = match[ 1 ].toLowerCase();\n\n\t\t\tif ( match[ 1 ].slice( 0, 3 ) === \"nth\" ) {\n\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[ 3 ] ) {\n\t\t\t\t\tfind.error( match[ 0 ] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[ 4 ] = +( match[ 4 ] ?\n\t\t\t\t\tmatch[ 5 ] + ( match[ 6 ] || 1 ) :\n\t\t\t\t\t2 * ( match[ 3 ] === \"even\" || match[ 3 ] === \"odd\" )\n\t\t\t\t);\n\t\t\t\tmatch[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === \"odd\" );\n\n\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[ 3 ] ) {\n\t\t\t\tfind.error( match[ 0 ] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\tPSEUDO: function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[ 6 ] && match[ 2 ];\n\n\t\t\tif ( matchExpr.CHILD.test( match[ 0 ] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[ 3 ] ) {\n\t\t\t\tmatch[ 2 ] = match[ 4 ] || match[ 5 ] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t( excess = tokenize( unquoted, true ) ) &&\n\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t( excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length ) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[ 0 ] = match[ 0 ].slice( 0, excess );\n\t\t\t\tmatch[ 2 ] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\tTAG: function( nodeNameSelector ) {\n\t\t\tvar expectedNodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() {\n\t\t\t\t\treturn true;\n\t\t\t\t} :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn nodeName( elem, expectedNodeName );\n\t\t\t\t};\n\t\t},\n\n\t\tCLASS: function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t( pattern = new RegExp( \"(^|\" + whitespace + \")\" + className +\n\t\t\t\t\t\"(\" + whitespace + \"|$)\" ) ) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test(\n\t\t\t\t\t\ttypeof elem.className === \"string\" && elem.className ||\n\t\t\t\t\t\t\ttypeof elem.getAttribute !== \"undefined\" &&\n\t\t\t\t\t\t\t\telem.getAttribute( \"class\" ) ||\n\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t);\n\t\t\t\t} );\n\t\t},\n\n\t\tATTR: function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = find.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\tif ( operator === \"=\" ) {\n\t\t\t\t\treturn result === check;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"!=\" ) {\n\t\t\t\t\treturn result !== check;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"^=\" ) {\n\t\t\t\t\treturn check && result.indexOf( check ) === 0;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"*=\" ) {\n\t\t\t\t\treturn check && result.indexOf( check ) > -1;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"$=\" ) {\n\t\t\t\t\treturn check && result.slice( -check.length ) === check;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"~=\" ) {\n\t\t\t\t\treturn ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" )\n\t\t\t\t\t\t.indexOf( check ) > -1;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"|=\" ) {\n\t\t\t\t\treturn result === check || result.slice( 0, check.length + 1 ) === check + \"-\";\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t};\n\t\t},\n\n\t\tCHILD: function( type, what, _argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tvar cache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( ( node = node[ dir ] ) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnodeName( node, name ) :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\t\t\t\t\t\t\touterCache = parent[ expando ] || ( parent[ expando ] = {} );\n\t\t\t\t\t\t\tcache = outerCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\touterCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\touterCache = elem[ expando ] || ( elem[ expando ] = {} );\n\t\t\t\t\t\t\t\tcache = outerCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnodeName( node, name ) :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( node[ expando ] = {} );\n\t\t\t\t\t\t\t\t\t\t\touterCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\tPSEUDO: function( pseudo, argument ) {\n\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// https://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tfind.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as jQuery does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction( function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf.call( seed, matched[ i ] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} ) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\n\t\t// Potentially complex pseudos\n\t\tnot: markFunction( function( selector ) {\n\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrimCSS, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction( function( seed, matches, _context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\t\t\t\t\tseed[ i ] = !( matches[ i ] = elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} ) :\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tinput[ 0 ] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\n\t\t\t\t\t// Don't keep the element\n\t\t\t\t\t// (see https://github.com/jquery/sizzle/issues/299)\n\t\t\t\t\tinput[ 0 ] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t} ),\n\n\t\thas: markFunction( function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn find( selector, elem ).length > 0;\n\t\t\t};\n\t\t} ),\n\n\t\tcontains: markFunction( function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || jQuery.text( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t} ),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// https://www.w3.org/TR/selectors/#lang-pseudo\n\t\tlang: markFunction( function( lang ) {\n\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test( lang || \"\" ) ) {\n\t\t\t\tfind.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( ( elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute( \"xml:lang\" ) || elem.getAttribute( \"lang\" ) ) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( ( elem = elem.parentNode ) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t} ),\n\n\t\t// Miscellaneous\n\t\ttarget: function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\troot: function( elem ) {\n\t\t\treturn elem === documentElement;\n\t\t},\n\n\t\tfocus: function( elem ) {\n\t\t\treturn elem === safeActiveElement() &&\n\t\t\t\tdocument.hasFocus() &&\n\t\t\t\t!!( elem.type || elem.href || ~elem.tabIndex );\n\t\t},\n\n\t\t// Boolean properties\n\t\tenabled: createDisabledPseudo( false ),\n\t\tdisabled: createDisabledPseudo( true ),\n\n\t\tchecked: function( elem ) {\n\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// https://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\treturn ( nodeName( elem, \"input\" ) && !!elem.checked ) ||\n\t\t\t\t( nodeName( elem, \"option\" ) && !!elem.selected );\n\t\t},\n\n\t\tselected: function( elem ) {\n\n\t\t\t// Support: IE <=11+\n\t\t\t// Accessing the selectedIndex property\n\t\t\t// forces the browser to treat the default option as\n\t\t\t// selected when in an optgroup.\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\tempty: function( elem ) {\n\n\t\t\t// https://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t//   but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\tparent: function( elem ) {\n\t\t\treturn !Expr.pseudos.empty( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\theader: function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\tinput: function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\tbutton: function( elem ) {\n\t\t\treturn nodeName( elem, \"input\" ) && elem.type === \"button\" ||\n\t\t\t\tnodeName( elem, \"button\" );\n\t\t},\n\n\t\ttext: function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn nodeName( elem, \"input\" ) && elem.type === \"text\" &&\n\n\t\t\t\t// Support: IE <10 only\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear\n\t\t\t\t// with elem.type === \"text\"\n\t\t\t\t( ( attr = elem.getAttribute( \"type\" ) ) == null ||\n\t\t\t\t\tattr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\tfirst: createPositionalPseudo( function() {\n\t\t\treturn [ 0 ];\n\t\t} ),\n\n\t\tlast: createPositionalPseudo( function( _matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t} ),\n\n\t\teq: createPositionalPseudo( function( _matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t} ),\n\n\t\teven: createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\todd: createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\tlt: createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i;\n\n\t\t\tif ( argument < 0 ) {\n\t\t\t\ti = argument + length;\n\t\t\t} else if ( argument > length ) {\n\t\t\t\ti = length;\n\t\t\t} else {\n\t\t\t\ti = argument;\n\t\t\t}\n\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\tgt: createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} )\n\t}\n};\n\nExpr.pseudos.nth = Expr.pseudos.eq;\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\nfunction tokenize( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || ( match = rcomma.exec( soFar ) ) ) {\n\t\t\tif ( match ) {\n\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[ 0 ].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( ( tokens = [] ) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( ( match = rleadingCombinator.exec( soFar ) ) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push( {\n\t\t\t\tvalue: matched,\n\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[ 0 ].replace( rtrimCSS, \" \" )\n\t\t\t} );\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] ||\n\t\t\t\t( match = preFilters[ type ]( match ) ) ) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push( {\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t} );\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\tif ( parseOnly ) {\n\t\treturn soFar.length;\n\t}\n\n\treturn soFar ?\n\t\tfind.error( selector ) :\n\n\t\t// Cache the tokens\n\t\ttokenCache( selector, groups ).slice( 0 );\n}\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[ i ].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || ( elem[ expando ] = {} );\n\n\t\t\t\t\t\tif ( skip && nodeName( elem, skip ) ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( ( oldCache = outerCache[ key ] ) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn ( newCache[ 2 ] = oldCache[ 2 ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\touterCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[ i ]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[ 0 ];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tfind( selector, contexts[ i ], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction( function( seed, results, context, xml ) {\n\t\tvar temp, i, elem, matcherOut,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed ||\n\t\t\t\tmultipleContexts( selector || \"*\",\n\t\t\t\t\tcontext.nodeType ? [ context ] : context, [] ),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems;\n\n\t\tif ( matcher ) {\n\n\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter\n\t\t\t// or preexisting results,\n\t\t\tmatcherOut = postFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t[] :\n\n\t\t\t\t// ...otherwise use results directly\n\t\t\t\tresults;\n\n\t\t\t// Find primary matches\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t} else {\n\t\t\tmatcherOut = matcherIn;\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( ( elem = temp[ i ] ) ) {\n\t\t\t\t\tmatcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) ) {\n\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( ( matcherIn[ i ] = elem ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, ( matcherOut = [] ), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) &&\n\t\t\t\t\t\t( temp = postFinder ? indexOf.call( seed, elem ) : preMap[ i ] ) > -1 ) {\n\n\t\t\t\t\t\tseed[ temp ] = !( results[ temp ] = elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t} );\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[ 0 ].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[ \" \" ],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf.call( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tvar ret = ( !leadingRelative && ( xml || context != outermostContext ) ) || (\n\t\t\t\t( checkContext = context ).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\n\t\t\t// Avoid hanging onto element\n\t\t\t// (see https://github.com/jquery/sizzle/issues/299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) {\n\t\t\tmatchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[ j ].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\n\t\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\t\ttokens.slice( 0, i - 1 )\n\t\t\t\t\t\t\t.concat( { value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" } )\n\t\t\t\t\t).replace( rtrimCSS, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find.TAG( \"*\", outermost ),\n\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\n\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\toutermostContext = context == document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: iOS <=7 - 9 only\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: <number>) matching\n\t\t\t// elements by id. (see trac-14142)\n\t\t\tfor ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\n\t\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\t\tif ( !context && elem.ownerDocument != document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( ( matcher = elementMatchers[ j++ ] ) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml ) ) {\n\t\t\t\t\t\t\tpush.call( results, elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( ( elem = !matcher && elem ) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( ( matcher = setMatchers[ j++ ] ) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !( unmatched[ i ] || setMatched[ i ] ) ) {\n\t\t\t\t\t\t\t\tsetMatched[ i ] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tjQuery.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\nfunction compile( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[ i ] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache( selector,\n\t\t\tmatcherFromGroupMatchers( elementMatchers, setMatchers ) );\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n}\n\n/**\n * A low-level selection function that works with jQuery's compiled\n *  selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n *  selector function built with jQuery selector compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nfunction select( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( ( selector = compiled.selector || selector ) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[ 0 ] = match[ 0 ].slice( 0 );\n\t\tif ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === \"ID\" &&\n\t\t\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) {\n\n\t\t\tcontext = ( Expr.find.ID(\n\t\t\t\ttoken.matches[ 0 ].replace( runescape, funescape ),\n\t\t\t\tcontext\n\t\t\t) || [] )[ 0 ];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr.needsContext.test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[ i ];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ ( type = token.type ) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( ( find = Expr.find[ type ] ) ) {\n\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( ( seed = find(\n\t\t\t\t\ttoken.matches[ 0 ].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[ 0 ].type ) &&\n\t\t\t\t\t\ttestContext( context.parentNode ) || context\n\t\t\t\t) ) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n}\n\n// One-time assignments\n\n// Support: Android <=4.0 - 4.1+\n// Sort stability\nsupport.sortStable = expando.split( \"\" ).sort( sortOrder ).join( \"\" ) === expando;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Android <=4.0 - 4.1+\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert( function( el ) {\n\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement( \"fieldset\" ) ) & 1;\n} );\n\njQuery.find = find;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.unique = jQuery.uniqueSort;\n\n// These have always been private, but they used to be documented\n// as part of Sizzle so let's maintain them in the 3.x line\n// for backwards compatibility purposes.\nfind.compile = compile;\nfind.select = select;\nfind.setDocument = setDocument;\n\nfind.escape = jQuery.escapeSelector;\nfind.getText = jQuery.text;\nfind.isXML = jQuery.isXMLDoc;\nfind.selectors = jQuery.expr;\nfind.support = jQuery.support;\nfind.uniqueSort = jQuery.uniqueSort;\n\n\t/* eslint-enable */\n\n} )();\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\nvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n\n\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Filtered directly for both simple and complex selectors\n\treturn jQuery.filter( qualifier, elements, not );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over <tag> to avoid XSS via location.hash (trac-9521)\n\t// Strict HTML recognition (trac-11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to jQuery#find\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\tif ( elem.contentDocument != null &&\n\n\t\t\t// Support: IE 11+\n\t\t\t// <object> elements with no `data` attribute has an object\n\t\t\t// `contentDocument` with a `null` prototype.\n\t\t\tgetProto( elem.contentDocument ) ) {\n\n\t\t\treturn elem.contentDocument;\n\t\t}\n\n\t\t// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n\t\t// Treat the template element as a regular one in browsers that\n\t\t// don't support it.\n\t\tif ( nodeName( elem, \"template\" ) ) {\n\t\t\telem = elem.content || elem;\n\t\t}\n\n\t\treturn jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnothtmlwhite = ( /[^\\x20\\t\\r\\n\\f]+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && toType( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && isFunction( ( method = value.promise ) ) ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && isFunction( ( method = value.then ) ) ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\n\t\t// Support: Android 4.0 only\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\treject.apply( undefined, [ value ] );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\t\"catch\": function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( _i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.error );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the error, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getErrorHook ) {\n\t\t\t\t\t\t\t\t\tprocess.error = jQuery.Deferred.getErrorHook();\n\n\t\t\t\t\t\t\t\t// The deprecated alias of the above. While the name suggests\n\t\t\t\t\t\t\t\t// returning the stack, not an error instance, jQuery just passes\n\t\t\t\t\t\t\t\t// it directly to `console.warn` so both will work; an instance\n\t\t\t\t\t\t\t\t// just better cooperates with source maps.\n\t\t\t\t\t\t\t\t} else if ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.error = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// rejected_handlers.disable\n\t\t\t\t\t// fulfilled_handlers.disable\n\t\t\t\t\ttuples[ 3 - i ][ 3 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock,\n\n\t\t\t\t\t// progress_handlers.lock\n\t\t\t\t\ttuples[ 0 ][ 3 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the primary Deferred\n\t\t\tprimary = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tprimary.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( primary.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn primary.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), primary.reject );\n\t\t}\n\n\t\treturn primary.promise();\n\t}\n} );\n\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\n// If `jQuery.Deferred.getErrorHook` is defined, `asyncError` is an error\n// captured before the async barrier to get the original error cause\n// which may otherwise be hidden.\njQuery.Deferred.exceptionHook = function( error, asyncError ) {\n\n\t// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message,\n\t\t\terror.stack, asyncError );\n\t}\n};\n\n\n\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n\n\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See trac-6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\n// Support: IE <=9 - 10 only\n// Older IE sometimes signals \"interactive\" too soon\nif ( document.readyState === \"complete\" ||\n\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( toType( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, _key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\t\tvalue :\n\t\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n};\n\n\n// Matches dashed string for camelizing\nvar rmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g;\n\n// Used by camelCase as callback to replace()\nfunction fcamelCase( _all, letter ) {\n\treturn letter.toUpperCase();\n}\n\n// Convert dashed to camelCase; used by the css and data modules\n// Support: IE <=9 - 11, Edge 12 - 15\n// Microsoft forgot to hump their vendor prefix (trac-9572)\nfunction camelCase( string ) {\n\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n}\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t//  - Node\n\t//    - Node.ELEMENT_NODE\n\t//    - Node.DOCUMENT_NODE\n\t//  - Object\n\t//    - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see trac-8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t//   1. No key was specified\n\t\t//   2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t//   1. The entire cache object\n\t\t//   2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t//   1. An object of properties\n\t\t//   2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( Array.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( camelCase );\n\t\t\t} else {\n\t\t\t\tkey = camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction getData( data ) {\n\tif ( data === \"true\" ) {\n\t\treturn true;\n\t}\n\n\tif ( data === \"false\" ) {\n\t\treturn false;\n\t}\n\n\tif ( data === \"null\" ) {\n\t\treturn null;\n\t}\n\n\t// Only convert to a number if it doesn't change the string\n\tif ( data === +data + \"\" ) {\n\t\treturn +data;\n\t}\n\n\tif ( rbrace.test( data ) ) {\n\t\treturn JSON.parse( data );\n\t}\n\n\treturn data;\n}\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = getData( data );\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11 only\n\t\t\t\t\t\t// The attrs elements can be null (trac-14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || Array.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar documentElement = document.documentElement;\n\n\n\n\tvar isAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem );\n\t\t},\n\t\tcomposed = { composed: true };\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only\n\t// Check attachment across shadow DOM boundaries when possible (gh-3504)\n\t// Support: iOS 10.0-10.2 only\n\t// Early iOS 10 versions support `attachShadow` but not `getRootNode`,\n\t// leading to errors. We need to check for `getRootNode`.\n\tif ( documentElement.getRootNode ) {\n\t\tisAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem ) ||\n\t\t\t\telem.getRootNode( composed ) === elem.ownerDocument;\n\t\t};\n\t}\nvar isHiddenWithinTree = function( elem, el ) {\n\n\t\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\n\t\t// Inline style trumps all\n\t\treturn elem.style.display === \"none\" ||\n\t\t\telem.style.display === \"\" &&\n\n\t\t\t// Otherwise, check computed style\n\t\t\t// Support: Firefox <=43 - 45\n\t\t\t// Disconnected elements can have computed display: none, so first confirm that elem is\n\t\t\t// in the document.\n\t\t\tisAttached( elem ) &&\n\n\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\n\t};\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted, scale,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() {\n\t\t\t\treturn tween.cur();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\treturn jQuery.css( elem, prop, \"\" );\n\t\t\t},\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = elem.nodeType &&\n\t\t\t( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Support: Firefox <=54\n\t\t// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n\t\tinitial = initial / 2;\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\twhile ( maxIterations-- ) {\n\n\t\t\t// Evaluate and update our best guess (doubling guesses that zero out).\n\t\t\t// Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\t\t\tif ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {\n\t\t\t\tmaxIterations = 0;\n\t\t\t}\n\t\t\tinitialInUnit = initialInUnit / scale;\n\n\t\t}\n\n\t\tinitialInUnit = initialInUnit * 2;\n\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\n\tdisplay = jQuery.css( temp, \"display\" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === \"none\" ) {\n\t\tdisplay = \"block\";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== \"none\" ) {\n\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t// Remember what we're overwriting\n\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i );\n\nvar rscriptType = ( /^$|^module$|\\/(?:java|ecma)script/i );\n\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0 - 4.3 only\n\t// Check state lost if the name is set (trac-11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (trac-14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Android <=4.1 only\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE <=11 only\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"<textarea>x</textarea>\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n\n\t// Support: IE <=9 only\n\t// IE <=9 replaces <option> tags with their contents when inserted outside of\n\t// the select element.\n\tdiv.innerHTML = \"<option></option>\";\n\tsupport.option = !!div.lastChild;\n} )();\n\n\n// We have to close these tags to support XHTML (trac-13200)\nvar wrapMap = {\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting <tbody> or other required elements.\n\tthead: [ 1, \"<table>\", \"</table>\" ],\n\tcol: [ 2, \"<table><colgroup>\", \"</colgroup></table>\" ],\n\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// Support: IE <=9 only\nif ( !support.option ) {\n\twrapMap.optgroup = wrapMap.option = [ 1, \"<select multiple='multiple'>\", \"</select>\" ];\n}\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (trac-15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\tret = context.getElementsByTagName( tag || \"*\" );\n\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\n\t\tret = context.querySelectorAll( tag || \"*\" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, attached, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( toType( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (trac-12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tattached = isAttached( elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( attached ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\nvar rtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Only attach events to objects that accept data\n\t\tif ( !acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = Object.create( null );\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\n\t\t\t// Make a writable jQuery.Event from the native event object\n\t\t\tevent = jQuery.event.fix( nativeEvent ),\n\n\t\t\thandlers = (\n\t\t\t\tdataPriv.get( this, \"events\" ) || Object.create( null )\n\t\t\t)[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// If the event is namespaced, then each handler is only invoked if it is\n\t\t\t\t// specially universal or its namespaces are a superset of the event's.\n\t\t\t\tif ( !event.rnamespace || handleObj.namespace === false ||\n\t\t\t\t\tevent.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG <use> instance trees (trac-13180)\n\t\t\tcur.nodeType &&\n\n\t\t\t// Support: Firefox <=42\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11 only\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (trac-13208)\n\t\t\t\t// Don't process clicks on disabled elements (trac-6911, trac-8165, trac-11382, trac-11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (trac-13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: isFunction( hook ) ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tclick: {\n\n\t\t\t// Utilize native event to ensure correct state for checkable inputs\n\t\t\tsetup: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Claim the first handler\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\t// dataPriv.set( el, \"click\", ... )\n\t\t\t\t\tleverageNative( el, \"click\", true );\n\t\t\t\t}\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\ttrigger: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Force setup before triggering a click\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\tleverageNative( el, \"click\" );\n\t\t\t\t}\n\n\t\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, suppress native .click() on links\n\t\t\t// Also prevent it if we're currently inside a leveraged native-event stack\n\t\t\t_default: function( event ) {\n\t\t\t\tvar target = event.target;\n\t\t\t\treturn rcheckableType.test( target.type ) &&\n\t\t\t\t\ttarget.click && nodeName( target, \"input\" ) &&\n\t\t\t\t\tdataPriv.get( target, \"click\" ) ||\n\t\t\t\t\tnodeName( target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Ensure the presence of an event listener that handles manually-triggered\n// synthetic events by interrupting progress until reinvoked in response to\n// *native* events that it fires directly, ensuring that state changes have\n// already occurred before other listeners are invoked.\nfunction leverageNative( el, type, isSetup ) {\n\n\t// Missing `isSetup` indicates a trigger call, which must force setup through jQuery.event.add\n\tif ( !isSetup ) {\n\t\tif ( dataPriv.get( el, type ) === undefined ) {\n\t\t\tjQuery.event.add( el, type, returnTrue );\n\t\t}\n\t\treturn;\n\t}\n\n\t// Register the controller as a special universal handler for all event namespaces\n\tdataPriv.set( el, type, false );\n\tjQuery.event.add( el, type, {\n\t\tnamespace: false,\n\t\thandler: function( event ) {\n\t\t\tvar result,\n\t\t\t\tsaved = dataPriv.get( this, type );\n\n\t\t\tif ( ( event.isTrigger & 1 ) && this[ type ] ) {\n\n\t\t\t\t// Interrupt processing of the outer synthetic .trigger()ed event\n\t\t\t\tif ( !saved ) {\n\n\t\t\t\t\t// Store arguments for use when handling the inner native event\n\t\t\t\t\t// There will always be at least one argument (an event object), so this array\n\t\t\t\t\t// will not be confused with a leftover capture object.\n\t\t\t\t\tsaved = slice.call( arguments );\n\t\t\t\t\tdataPriv.set( this, type, saved );\n\n\t\t\t\t\t// Trigger the native event and capture its result\n\t\t\t\t\tthis[ type ]();\n\t\t\t\t\tresult = dataPriv.get( this, type );\n\t\t\t\t\tdataPriv.set( this, type, false );\n\n\t\t\t\t\tif ( saved !== result ) {\n\n\t\t\t\t\t\t// Cancel the outer synthetic event\n\t\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t}\n\n\t\t\t\t// If this is an inner synthetic event for an event with a bubbling surrogate\n\t\t\t\t// (focus or blur), assume that the surrogate already propagated from triggering\n\t\t\t\t// the native event and prevent that from happening again here.\n\t\t\t\t// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the\n\t\t\t\t// bubbling surrogate propagates *after* the non-bubbling base), but that seems\n\t\t\t\t// less bad than duplication.\n\t\t\t\t} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\n\t\t\t// If this is a native event triggered above, everything is now in order\n\t\t\t// Fire an inner synthetic event with the original arguments\n\t\t\t} else if ( saved ) {\n\n\t\t\t\t// ...and capture the result\n\t\t\t\tdataPriv.set( this, type, jQuery.event.trigger(\n\t\t\t\t\tsaved[ 0 ],\n\t\t\t\t\tsaved.slice( 1 ),\n\t\t\t\t\tthis\n\t\t\t\t) );\n\n\t\t\t\t// Abort handling of the native event by all jQuery handlers while allowing\n\t\t\t\t// native handlers on the same element to run. On target, this is achieved\n\t\t\t\t// by stopping immediate propagation just on the jQuery event. However,\n\t\t\t\t// the native event is re-wrapped by a jQuery one on each level of the\n\t\t\t\t// propagation so the only way to stop it for jQuery is to stop it for\n\t\t\t\t// everyone via native `stopPropagation()`. This is not a problem for\n\t\t\t\t// focus/blur which don't bubble, but it does also stop click on checkboxes\n\t\t\t\t// and radios. We accept this limitation.\n\t\t\t\tevent.stopPropagation();\n\t\t\t\tevent.isImmediatePropagationStopped = returnTrue;\n\t\t\t}\n\t\t}\n\t} );\n}\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (trac-504, trac-13143)\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\tsrc.target.parentNode :\n\t\t\tsrc.target;\n\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || Date.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcode: true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\twhich: true\n}, jQuery.event.addProp );\n\njQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( type, delegateType ) {\n\n\tfunction focusMappedHandler( nativeEvent ) {\n\t\tif ( document.documentMode ) {\n\n\t\t\t// Support: IE 11+\n\t\t\t// Attach a single focusin/focusout handler on the document while someone wants\n\t\t\t// focus/blur. This is because the former are synchronous in IE while the latter\n\t\t\t// are async. In other browsers, all those handlers are invoked synchronously.\n\n\t\t\t// `handle` from private data would already wrap the event, but we need\n\t\t\t// to change the `type` here.\n\t\t\tvar handle = dataPriv.get( this, \"handle\" ),\n\t\t\t\tevent = jQuery.event.fix( nativeEvent );\n\t\t\tevent.type = nativeEvent.type === \"focusin\" ? \"focus\" : \"blur\";\n\t\t\tevent.isSimulated = true;\n\n\t\t\t// First, handle focusin/focusout\n\t\t\thandle( nativeEvent );\n\n\t\t\t// ...then, handle focus/blur\n\t\t\t//\n\t\t\t// focus/blur don't bubble while focusin/focusout do; simulate the former by only\n\t\t\t// invoking the handler at the lower level.\n\t\t\tif ( event.target === event.currentTarget ) {\n\n\t\t\t\t// The setup part calls `leverageNative`, which, in turn, calls\n\t\t\t\t// `jQuery.event.add`, so event handle will already have been set\n\t\t\t\t// by this point.\n\t\t\t\thandle( event );\n\t\t\t}\n\t\t} else {\n\n\t\t\t// For non-IE browsers, attach a single capturing handler on the document\n\t\t\t// while someone wants focusin/focusout.\n\t\t\tjQuery.event.simulate( delegateType, nativeEvent.target,\n\t\t\t\tjQuery.event.fix( nativeEvent ) );\n\t\t}\n\t}\n\n\tjQuery.event.special[ type ] = {\n\n\t\t// Utilize native event if possible so blur/focus sequence is correct\n\t\tsetup: function() {\n\n\t\t\tvar attaches;\n\n\t\t\t// Claim the first handler\n\t\t\t// dataPriv.set( this, \"focus\", ... )\n\t\t\t// dataPriv.set( this, \"blur\", ... )\n\t\t\tleverageNative( this, type, true );\n\n\t\t\tif ( document.documentMode ) {\n\n\t\t\t\t// Support: IE 9 - 11+\n\t\t\t\t// We use the same native handler for focusin & focus (and focusout & blur)\n\t\t\t\t// so we need to coordinate setup & teardown parts between those events.\n\t\t\t\t// Use `delegateType` as the key as `type` is already used by `leverageNative`.\n\t\t\t\tattaches = dataPriv.get( this, delegateType );\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tthis.addEventListener( delegateType, focusMappedHandler );\n\t\t\t\t}\n\t\t\t\tdataPriv.set( this, delegateType, ( attaches || 0 ) + 1 );\n\t\t\t} else {\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\t\ttrigger: function() {\n\n\t\t\t// Force setup before trigger\n\t\t\tleverageNative( this, type );\n\n\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\treturn true;\n\t\t},\n\n\t\tteardown: function() {\n\t\t\tvar attaches;\n\n\t\t\tif ( document.documentMode ) {\n\t\t\t\tattaches = dataPriv.get( this, delegateType ) - 1;\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tthis.removeEventListener( delegateType, focusMappedHandler );\n\t\t\t\t\tdataPriv.remove( this, delegateType );\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.set( this, delegateType, attaches );\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Return false to indicate standard teardown should be applied\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\n\t\t// Suppress native focus or blur if we're currently inside\n\t\t// a leveraged native-event stack\n\t\t_default: function( event ) {\n\t\t\treturn dataPriv.get( event.target, type );\n\t\t},\n\n\t\tdelegateType: delegateType\n\t};\n\n\t// Support: Firefox <=44\n\t// Firefox doesn't have focus(in | out) events\n\t// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n\t//\n\t// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n\t// focus(in | out) events fire after focus & blur events,\n\t// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n\t// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\n\t//\n\t// Support: IE 9 - 11+\n\t// To preserve relative focusin/focus & focusout/blur event order guaranteed on the 3.x branch,\n\t// attach a single handler for both events in IE.\n\tjQuery.event.special[ delegateType ] = {\n\t\tsetup: function() {\n\n\t\t\t// Handle: regular nodes (via `this.ownerDocument`), window\n\t\t\t// (via `this.document`) & document (via `this`).\n\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\tdataHolder = document.documentMode ? this : doc,\n\t\t\t\tattaches = dataPriv.get( dataHolder, delegateType );\n\n\t\t\t// Support: IE 9 - 11+\n\t\t\t// We use the same native handler for focusin & focus (and focusout & blur)\n\t\t\t// so we need to coordinate setup & teardown parts between those events.\n\t\t\t// Use `delegateType` as the key as `type` is already used by `leverageNative`.\n\t\t\tif ( !attaches ) {\n\t\t\t\tif ( document.documentMode ) {\n\t\t\t\t\tthis.addEventListener( delegateType, focusMappedHandler );\n\t\t\t\t} else {\n\t\t\t\t\tdoc.addEventListener( type, focusMappedHandler, true );\n\t\t\t\t}\n\t\t\t}\n\t\t\tdataPriv.set( dataHolder, delegateType, ( attaches || 0 ) + 1 );\n\t\t},\n\t\tteardown: function() {\n\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\tdataHolder = document.documentMode ? this : doc,\n\t\t\t\tattaches = dataPriv.get( dataHolder, delegateType ) - 1;\n\n\t\t\tif ( !attaches ) {\n\t\t\t\tif ( document.documentMode ) {\n\t\t\t\t\tthis.removeEventListener( delegateType, focusMappedHandler );\n\t\t\t\t} else {\n\t\t\t\t\tdoc.removeEventListener( type, focusMappedHandler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( dataHolder, delegateType );\n\t\t\t} else {\n\t\t\t\tdataPriv.set( dataHolder, delegateType, attaches );\n\t\t\t}\n\t\t}\n\t};\n} );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event )  dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\n\t// Support: IE <=10 - 11, Edge 12 - 13 only\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /<script|<style|<link/i,\n\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\n\trcleanScript = /^\\s*<!\\[CDATA\\[|\\]\\]>\\s*$/g;\n\n// Prefer a tbody over its parent table for containing new rows\nfunction manipulationTarget( elem, content ) {\n\tif ( nodeName( elem, \"table\" ) &&\n\t\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\treturn jQuery( elem ).children( \"tbody\" )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tif ( ( elem.type || \"\" ).slice( 0, 5 ) === \"true/\" ) {\n\t\telem.type = elem.type.slice( 5 );\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.get( src );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdataPriv.remove( dest, \"handle events\" );\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = flat( args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tvalueIsFunction = isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( valueIsFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (trac-8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Reenable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src && ( node.type || \"\" ).toLowerCase()  !== \"module\" ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl && !node.noModule ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src, {\n\t\t\t\t\t\t\t\t\tnonce: node.nonce || node.getAttribute( \"nonce\" )\n\t\t\t\t\t\t\t\t}, doc );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Unwrap a CDATA section containing script contents. This shouldn't be\n\t\t\t\t\t\t\t// needed as in XML documents they're already not visible when\n\t\t\t\t\t\t\t// inspecting element contents and in HTML documents they have no\n\t\t\t\t\t\t\t// meaning but we're preserving that logic for backwards compatibility.\n\t\t\t\t\t\t\t// This will be removed completely in 4.0. See gh-4904.\n\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, \"\" ), node, doc );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && isAttached( node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html;\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = isAttached( elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew jQuery#find here for performance reasons:\n\t\t\t// https://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar rcustomProp = /^--/;\n\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (trac-15098, trac-14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n\nvar swap = function( elem, options, callback ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.call( elem );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\nvar rboxStyle = new RegExp( cssExpand.join( \"|\" ), \"i\" );\n\n\n\n( function() {\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computeStyleTests() {\n\n\t\t// This is a singleton, we need to execute it only once\n\t\tif ( !div ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer.style.cssText = \"position:absolute;left:-11111px;width:60px;\" +\n\t\t\t\"margin-top:1px;padding:0;border:0\";\n\t\tdiv.style.cssText =\n\t\t\t\"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" +\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\"width:60%;top:1%\";\n\t\tdocumentElement.appendChild( container ).appendChild( div );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\n\t\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\t\treliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;\n\n\t\t// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\tdiv.style.right = \"60%\";\n\t\tpixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;\n\n\t\t// Support: IE 9 - 11 only\n\t\t// Detect misreporting of content dimensions for box-sizing:border-box elements\n\t\tboxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;\n\n\t\t// Support: IE 9 only\n\t\t// Detect overflow:scroll screwiness (gh-3699)\n\t\t// Support: Chrome <=64\n\t\t// Don't get tricked when zoom affects offsetWidth (gh-4029)\n\t\tdiv.style.position = \"absolute\";\n\t\tscrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;\n\n\t\tdocumentElement.removeChild( container );\n\n\t\t// Nullify the div so it wouldn't be stored in the memory and\n\t\t// it will also be a sign that checks already performed\n\t\tdiv = null;\n\t}\n\n\tfunction roundPixelMeasures( measure ) {\n\t\treturn Math.round( parseFloat( measure ) );\n\t}\n\n\tvar pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,\n\t\treliableTrDimensionsVal, reliableMarginLeftVal,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE <=9 - 11 only\n\t// Style of cloned element affects source element cloned (trac-8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tjQuery.extend( support, {\n\t\tboxSizingReliable: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelBoxStyles: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelBoxStylesVal;\n\t\t},\n\t\tpixelPosition: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn reliableMarginLeftVal;\n\t\t},\n\t\tscrollboxSize: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn scrollboxSizeVal;\n\t\t},\n\n\t\t// Support: IE 9 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Behavior in IE 9 is more subtle than in newer versions & it passes\n\t\t// some versions of this test; make sure not to make it pass there!\n\t\t//\n\t\t// Support: Firefox 70+\n\t\t// Only Firefox includes border widths\n\t\t// in computed dimensions. (gh-4529)\n\t\treliableTrDimensions: function() {\n\t\t\tvar table, tr, trChild, trStyle;\n\t\t\tif ( reliableTrDimensionsVal == null ) {\n\t\t\t\ttable = document.createElement( \"table\" );\n\t\t\t\ttr = document.createElement( \"tr\" );\n\t\t\t\ttrChild = document.createElement( \"div\" );\n\n\t\t\t\ttable.style.cssText = \"position:absolute;left:-11111px;border-collapse:separate\";\n\t\t\t\ttr.style.cssText = \"border:1px solid\";\n\n\t\t\t\t// Support: Chrome 86+\n\t\t\t\t// Height set through cssText does not get applied.\n\t\t\t\t// Computed height then comes back as 0.\n\t\t\t\ttr.style.height = \"1px\";\n\t\t\t\ttrChild.style.height = \"9px\";\n\n\t\t\t\t// Support: Android 8 Chrome 86+\n\t\t\t\t// In our bodyBackground.html iframe,\n\t\t\t\t// display for all div elements is set to \"inline\",\n\t\t\t\t// which causes a problem only in Android 8 Chrome 86.\n\t\t\t\t// Ensuring the div is display: block\n\t\t\t\t// gets around this issue.\n\t\t\t\ttrChild.style.display = \"block\";\n\n\t\t\t\tdocumentElement\n\t\t\t\t\t.appendChild( table )\n\t\t\t\t\t.appendChild( tr )\n\t\t\t\t\t.appendChild( trChild );\n\n\t\t\t\ttrStyle = window.getComputedStyle( tr );\n\t\t\t\treliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderTopWidth, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight;\n\n\t\t\t\tdocumentElement.removeChild( table );\n\t\t\t}\n\t\t\treturn reliableTrDimensionsVal;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\t\tisCustomProp = rcustomProp.test( name ),\n\n\t\t// Support: Firefox 51+\n\t\t// Retrieving style before computed somehow\n\t\t// fixes an issue with getting wrong values\n\t\t// on detached elements\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\n\t// getPropertyValue is needed for:\n\t//   .css('filter') (IE 9 only, trac-12537)\n\t//   .css('--customProperty) (gh-3144)\n\tif ( computed ) {\n\n\t\t// Support: IE <=9 - 11+\n\t\t// IE only supports `\"float\"` in `getPropertyValue`; in computed styles\n\t\t// it's only available as `\"cssFloat\"`. We no longer modify properties\n\t\t// sent to `.css()` apart from camelCasing, so we need to check both.\n\t\t// Normally, this would create difference in behavior: if\n\t\t// `getPropertyValue` returns an empty string, the value returned\n\t\t// by `.css()` would be `undefined`. This is usually the case for\n\t\t// disconnected elements. However, in IE even disconnected elements\n\t\t// with no styles return `\"none\"` for `getPropertyValue( \"float\" )`\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\tif ( isCustomProp && ret ) {\n\n\t\t\t// Support: Firefox 105+, Chrome <=105+\n\t\t\t// Spec requires trimming whitespace for custom properties (gh-4926).\n\t\t\t// Firefox only trims leading whitespace. Chrome just collapses\n\t\t\t// both leading & trailing whitespace to a single space.\n\t\t\t//\n\t\t\t// Fall back to `undefined` if empty string returned.\n\t\t\t// This collapses a missing definition with property defined\n\t\t\t// and set to an empty string but there's no standard API\n\t\t\t// allowing us to differentiate them without a performance penalty\n\t\t\t// and returning `undefined` aligns with older jQuery.\n\t\t\t//\n\t\t\t// rtrimCSS treats U+000D CARRIAGE RETURN and U+000C FORM FEED\n\t\t\t// as whitespace while CSS does not, but this is not a problem\n\t\t\t// because CSS preprocessing replaces them with U+000A LINE FEED\n\t\t\t// (which *is* CSS whitespace)\n\t\t\t// https://www.w3.org/TR/css-syntax-3/#input-preprocessing\n\t\t\tret = ret.replace( rtrimCSS, \"$1\" ) || undefined;\n\t\t}\n\n\t\tif ( ret === \"\" && !isAttached( elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// Android Browser returns percentage for some values,\n\t\t// but width seems to be reliably pixels.\n\t\t// This is against the CSSOM draft spec:\n\t\t// https://drafts.csswg.org/cssom/#resolved-values\n\t\tif ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11 only\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\nvar cssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style,\n\tvendorProps = {};\n\n// Return a vendor-prefixed property or undefined\nfunction vendorPropName( name ) {\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\n// Return a potentially-mapped jQuery.cssProps or vendor prefixed property\nfunction finalPropName( name ) {\n\tvar final = jQuery.cssProps[ name ] || vendorProps[ name ];\n\n\tif ( final ) {\n\t\treturn final;\n\t}\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\treturn vendorProps[ name ] = vendorPropName( name ) || name;\n}\n\n\nvar\n\n\t// Swappable if display is none or starts with table\n\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t};\n\nfunction setPositiveNumber( _elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {\n\tvar i = dimension === \"width\" ? 1 : 0,\n\t\textra = 0,\n\t\tdelta = 0,\n\t\tmarginDelta = 0;\n\n\t// Adjustment may not be necessary\n\tif ( box === ( isBorderBox ? \"border\" : \"content\" ) ) {\n\t\treturn 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin\n\t\t// Count margin delta separately to only add it after scroll gutter adjustment.\n\t\t// This is needed to make negative margins work with `outerHeight( true )` (gh-3982).\n\t\tif ( box === \"margin\" ) {\n\t\t\tmarginDelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\t// If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\t\tif ( !isBorderBox ) {\n\n\t\t\t// Add padding\n\t\t\tdelta += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// For \"border\" or \"margin\", add border\n\t\t\tif ( box !== \"padding\" ) {\n\t\t\t\tdelta += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\n\t\t\t// But still keep track of it otherwise\n\t\t\t} else {\n\t\t\t\textra += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\n\t\t// If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n\t\t// \"padding\" or \"margin\"\n\t\t} else {\n\n\t\t\t// For \"content\", subtract padding\n\t\t\tif ( box === \"content\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// For \"content\" or \"padding\", subtract border\n\t\t\tif ( box !== \"margin\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Account for positive content-box scroll gutter when requested by providing computedVal\n\tif ( !isBorderBox && computedVal >= 0 ) {\n\n\t\t// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n\t\t// Assuming integer scroll gutter, subtract the rest and round down\n\t\tdelta += Math.max( 0, Math.ceil(\n\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\tcomputedVal -\n\t\t\tdelta -\n\t\t\textra -\n\t\t\t0.5\n\n\t\t// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter\n\t\t// Use an explicit zero to avoid NaN (gh-3964)\n\t\t) ) || 0;\n\t}\n\n\treturn delta + marginDelta;\n}\n\nfunction getWidthOrHeight( elem, dimension, extra ) {\n\n\t// Start with computed style\n\tvar styles = getStyles( elem ),\n\n\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).\n\t\t// Fake content-box until we know it's needed to know the true value.\n\t\tboxSizingNeeded = !support.boxSizingReliable() || extra,\n\t\tisBorderBox = boxSizingNeeded &&\n\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\tvalueIsBorderBox = isBorderBox,\n\n\t\tval = curCSS( elem, dimension, styles ),\n\t\toffsetProp = \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );\n\n\t// Support: Firefox <=54\n\t// Return a confounding non-pixel value or feign ignorance, as appropriate.\n\tif ( rnumnonpx.test( val ) ) {\n\t\tif ( !extra ) {\n\t\t\treturn val;\n\t\t}\n\t\tval = \"auto\";\n\t}\n\n\n\t// Support: IE 9 - 11 only\n\t// Use offsetWidth/offsetHeight for when box sizing is unreliable.\n\t// In those cases, the computed value can be trusted to be border-box.\n\tif ( ( !support.boxSizingReliable() && isBorderBox ||\n\n\t\t// Support: IE 10 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Interestingly, in some cases IE 9 doesn't suffer from this issue.\n\t\t!support.reliableTrDimensions() && nodeName( elem, \"tr\" ) ||\n\n\t\t// Fall back to offsetWidth/offsetHeight when value is \"auto\"\n\t\t// This happens for inline elements with no explicit setting (gh-3571)\n\t\tval === \"auto\" ||\n\n\t\t// Support: Android <=4.1 - 4.3 only\n\t\t// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n\t\t!parseFloat( val ) && jQuery.css( elem, \"display\", false, styles ) === \"inline\" ) &&\n\n\t\t// Make sure the element is visible & connected\n\t\telem.getClientRects().length ) {\n\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t\t// Where available, offsetWidth/offsetHeight approximate border box dimensions.\n\t\t// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the\n\t\t// retrieved value as a content box dimension.\n\t\tvalueIsBorderBox = offsetProp in elem;\n\t\tif ( valueIsBorderBox ) {\n\t\t\tval = elem[ offsetProp ];\n\t\t}\n\t}\n\n\t// Normalize \"\" and auto\n\tval = parseFloat( val ) || 0;\n\n\t// Adjust for the element's box model\n\treturn ( val +\n\t\tboxModelAdjustment(\n\t\t\telem,\n\t\t\tdimension,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles,\n\n\t\t\t// Provide the current computed size to request scroll gutter calculation (gh-3589)\n\t\t\tval\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\tanimationIterationCount: true,\n\t\taspectRatio: true,\n\t\tborderImageSlice: true,\n\t\tcolumnCount: true,\n\t\tflexGrow: true,\n\t\tflexShrink: true,\n\t\tfontWeight: true,\n\t\tgridArea: true,\n\t\tgridColumn: true,\n\t\tgridColumnEnd: true,\n\t\tgridColumnStart: true,\n\t\tgridRow: true,\n\t\tgridRowEnd: true,\n\t\tgridRowStart: true,\n\t\tlineHeight: true,\n\t\topacity: true,\n\t\torder: true,\n\t\torphans: true,\n\t\tscale: true,\n\t\twidows: true,\n\t\tzIndex: true,\n\t\tzoom: true,\n\n\t\t// SVG-related\n\t\tfillOpacity: true,\n\t\tfloodOpacity: true,\n\t\tstopOpacity: true,\n\t\tstrokeMiterlimit: true,\n\t\tstrokeOpacity: true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name ),\n\t\t\tstyle = elem.style;\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to query the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (trac-7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug trac-9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (trac-7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\t// The isCustomProp check can be removed in jQuery 4.0 when we only auto-append\n\t\t\t// \"px\" to a few hardcoded values.\n\t\t\tif ( type === \"number\" && !isCustomProp ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t}\n\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tif ( isCustomProp ) {\n\t\t\t\t\tstyle.setProperty( name, value );\n\t\t\t\t} else {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name );\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to modify the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( _i, dimension ) {\n\tjQuery.cssHooks[ dimension ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\n\n\t\t\t\t\t// Support: Safari 8+\n\t\t\t\t\t// Table columns in Safari have non-zero offsetWidth & zero\n\t\t\t\t\t// getBoundingClientRect().width unless display is changed.\n\t\t\t\t\t// Support: IE <=11 only\n\t\t\t\t\t// Running getBoundingClientRect on a disconnected node\n\t\t\t\t\t// in IE throws an error.\n\t\t\t\t\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\n\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t} ) :\n\t\t\t\t\tgetWidthOrHeight( elem, dimension, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = getStyles( elem ),\n\n\t\t\t\t// Only read styles.position if the test has a chance to fail\n\t\t\t\t// to avoid forcing a reflow.\n\t\t\t\tscrollboxSizeBuggy = !support.scrollboxSize() &&\n\t\t\t\t\tstyles.position === \"absolute\",\n\n\t\t\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)\n\t\t\t\tboxSizingNeeded = scrollboxSizeBuggy || extra,\n\t\t\t\tisBorderBox = boxSizingNeeded &&\n\t\t\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\tsubtract = extra ?\n\t\t\t\t\tboxModelAdjustment(\n\t\t\t\t\t\telem,\n\t\t\t\t\t\tdimension,\n\t\t\t\t\t\textra,\n\t\t\t\t\t\tisBorderBox,\n\t\t\t\t\t\tstyles\n\t\t\t\t\t) :\n\t\t\t\t\t0;\n\n\t\t\t// Account for unreliable border-box dimensions by comparing offset* to computed and\n\t\t\t// faking a content-box to get border and padding (gh-3699)\n\t\t\tif ( isBorderBox && scrollboxSizeBuggy ) {\n\t\t\t\tsubtract -= Math.ceil(\n\t\t\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\t\t\tparseFloat( styles[ dimension ] ) -\n\t\t\t\t\tboxModelAdjustment( elem, dimension, \"border\", false, styles ) -\n\t\t\t\t\t0.5\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ dimension ] = value;\n\t\t\t\tvalue = jQuery.css( elem, dimension );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t) + \"px\";\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( prefix !== \"margin\" ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 && (\n\t\t\t\tjQuery.cssHooks[ tween.prop ] ||\n\t\t\t\t\ttween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9 only\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, inProgress,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction schedule() {\n\tif ( inProgress ) {\n\t\tif ( document.hidden === false && window.requestAnimationFrame ) {\n\t\t\twindow.requestAnimationFrame( schedule );\n\t\t} else {\n\t\t\twindow.setTimeout( schedule, jQuery.fx.interval );\n\t\t}\n\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = Date.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = \"width\" in props || \"height\" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict \"overflow\" and \"display\" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11, Edge 12 - 15\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY and Edge just mirrors\n\t\t// the overflowX value there.\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\tif ( display === \"none\" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t/* eslint-disable no-loop-func */\n\n\t\t\tanim.done( function() {\n\n\t\t\t\t/* eslint-enable no-loop-func */\n\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( Array.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t// Support: Android 2.3 only\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (trac-12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\t// If there's more to do, yield\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t}\n\n\t\t\t// If this was an empty animation, synthesize a final progress notification\n\t\t\tif ( !length ) {\n\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t}\n\n\t\t\t// Resolve the animation and report its conclusion\n\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\treturn false;\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tresult.stop.bind( result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\t// Attach callbacks from options\n\tanimation\n\t\t.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\treturn animation;\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnothtmlwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tisFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !isFunction( easing ) && easing\n\t};\n\n\t// Go to the end state if fx are off\n\tif ( jQuery.fx.off ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\tif ( typeof opt.duration !== \"number\" ) {\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\n\n\t\t\t} else {\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\n\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( _i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = Date.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Run the timer and safely remove it when done (allowing for external removal)\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tjQuery.fx.start();\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( inProgress ) {\n\t\treturn;\n\t}\n\n\tinProgress = true;\n\tschedule();\n};\n\njQuery.fx.stop = function() {\n\tinProgress = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\n\n( function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: Android <=4.3 only\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE <=11 only\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: IE <=11 only\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( \"input\" );\n\tinput.value = \"t\";\n\tinput.type = \"radio\";\n\tsupport.radioValue = input.value === \"t\";\n} )();\n\n\nvar boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// Attribute hooks are determined by the lowercase version\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = jQuery.find.attr( elem, name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\tnodeName( elem, \"input\" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name,\n\t\t\ti = 0,\n\n\t\t\t// Attribute names can contain non-HTML whitespace characters\n\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n\t\t\tattrNames = value && value.match( rnothtmlwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\n\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( _i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle,\n\t\t\tlowercaseName = name.toLowerCase();\n\n\t\tif ( !isXML ) {\n\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ lowercaseName ];\n\t\t\tattrHandle[ lowercaseName ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tlowercaseName :\n\t\t\t\tnull;\n\t\t\tattrHandle[ lowercaseName ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n} );\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// Support: IE <=9 - 11 only\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// Use proper attribute retrieval (trac-12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\tif ( tabindex ) {\n\t\t\t\t\treturn parseInt( tabindex, 10 );\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\trclickable.test( elem.nodeName ) &&\n\t\t\t\t\telem.href\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\n} );\n\n// Support: IE <=11 only\n// Accessing the selectedIndex property\n// forces the browser to respect setting selected\n// on the option\n// The getter ensures a default option is selected\n// when in an optgroup\n// eslint rule \"no-unused-expressions\" is disabled for this code\n// since it considers such accessions noop\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n\n\n\n\t// Strip and collapse whitespace according to HTML spec\n\t// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n\tfunction stripAndCollapse( value ) {\n\t\tvar tokens = value.match( rnothtmlwhite ) || [];\n\t\treturn tokens.join( \" \" );\n\t}\n\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\nfunction classesToArray( value ) {\n\tif ( Array.isArray( value ) ) {\n\t\treturn value;\n\t}\n\tif ( typeof value === \"string\" ) {\n\t\treturn value.match( rnothtmlwhite ) || [];\n\t}\n\treturn [];\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classNames, cur, curValue, className, i, finalValue;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\tif ( classNames.length ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tcurValue = getClass( this );\n\t\t\t\tcur = this.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\t\tclassName = classNames[ i ];\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + className + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += className + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\tthis.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classNames, cur, curValue, className, i, finalValue;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\tif ( classNames.length ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tcurValue = getClass( this );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = this.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\t\tclassName = classNames[ i ];\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + className + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + className + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\tthis.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar classNames, className, i, self,\n\t\t\ttype = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\tif ( typeof stateVal === \"boolean\" && isValidValue ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\treturn this.each( function() {\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\tself = jQuery( this );\n\n\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\tclassName = classNames[ i ];\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\t\"\" :\n\t\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, valueIsFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle most common string cases\n\t\t\t\tif ( typeof ret === \"string\" ) {\n\t\t\t\t\treturn ret.replace( rreturn, \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalueIsFunction = isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( Array.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE <=10 - 11 only\n\t\t\t\t\t// option.text throws exceptions (trac-14686, trac-14858)\n\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\tstripAndCollapse( jQuery.text( elem ) );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option, i,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\",\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length;\n\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\ti = max;\n\n\t\t\t\t} else {\n\t\t\t\t\ti = one ? index : 0;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t// IE8-9 doesn't update selected after form reset (trac-2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t/* eslint-disable no-cond-assign */\n\n\t\t\t\t\tif ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* eslint-enable no-cond-assign */\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute( \"value\" ) === null ? \"on\" : elem.value;\n\t\t};\n\t}\n} );\n\n\n\n\n// Return jQuery for attributes-only inclusion\nvar location = window.location;\n\nvar nonce = { guid: Date.now() };\n\nvar rquery = ( /\\?/ );\n\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml, parserErrorElem;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {}\n\n\tparserErrorElem = xml && xml.getElementsByTagName( \"parsererror\" )[ 0 ];\n\tif ( !xml || parserErrorElem ) {\n\t\tjQuery.error( \"Invalid XML: \" + (\n\t\t\tparserErrorElem ?\n\t\t\t\tjQuery.map( parserErrorElem.childNodes, function( el ) {\n\t\t\t\t\treturn el.textContent;\n\t\t\t\t} ).join( \"\\n\" ) :\n\t\t\t\tdata\n\t\t) );\n\t}\n\treturn xml;\n};\n\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\tstopPropagationCallback = function( e ) {\n\t\te.stopPropagation();\n\t};\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special, lastElement,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = lastElement = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (trac-9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (trac-9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tlastElement = cur;\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( dataPriv.get( cur, \"events\" ) || Object.create( null ) )[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (trac-6170)\n\t\t\t\tif ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.addEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\telem[ type ]();\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.removeEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && toType( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = isFunction( valueOrFunction ) ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\tif ( a == null ) {\n\t\treturn \"\";\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} ).filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} ).map( function( _i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// trac-7653, trac-8125, trac-8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t *    - BEFORE asking for a transport\n\t *    - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (trac-10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document.createElement( \"a\" );\n\noriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\n\n\t\tif ( isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes trac-9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() + \" \" ] =\n\t\t\t\t\t\t\t\t\t( responseHeaders[ match[ 1 ].toLowerCase() + \" \" ] || [] )\n\t\t\t\t\t\t\t\t\t\t.concat( match[ 2 ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() + \" \" ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match.join( \", \" );\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (trac-10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket trac-12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = ( s.dataType || \"*\" ).toLowerCase().match( rnothtmlwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document.createElement( \"a\" );\n\n\t\t\t// Support: IE <=8 - 11, Edge 12 - 15\n\t\t\t// IE throws exception on accessing the href property if url is malformed,\n\t\t\t// e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE <=8 - 11 only\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( completed ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (trac-15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\t// Remove hash to simplify url manipulation\n\t\tcacheURL = s.url.replace( rhash, \"\" );\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// Remember the hash so we can put it back\n\t\t\tuncached = s.url.slice( cacheURL.length );\n\n\t\t\t// If data is available and should be processed, append data to url\n\t\t\tif ( s.data && ( s.processData || typeof s.data === \"string\" ) ) {\n\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data;\n\n\t\t\t\t// trac-9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add or update anti-cache param if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\tcacheURL = cacheURL.replace( rantiCache, \"$1\" );\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ( nonce.guid++ ) +\n\t\t\t\t\tuncached;\n\t\t\t}\n\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\ts.url = cacheURL + uncached;\n\n\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t\t} else if ( s.data && s.processData &&\n\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\n\t\t\ts.data = s.data.replace( r20, \"+\" );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tcompleteDeferred.add( s.complete );\n\t\tjqXHR.done( s.success );\n\t\tjqXHR.fail( s.error );\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcompleted = false;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\tif ( completed ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\t// Propagate others as results\n\t\t\t\tdone( -1, e );\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Ignore repeat invocations\n\t\t\tif ( completed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcompleted = true;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Use a noop converter for missing script but not if jsonp\n\t\t\tif ( !isSuccess &&\n\t\t\t\tjQuery.inArray( \"script\", s.dataTypes ) > -1 &&\n\t\t\t\tjQuery.inArray( \"json\", s.dataTypes ) < 0 ) {\n\t\t\t\ts.converters[ \"text script\" ] = function() {};\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( _i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\njQuery.ajaxPrefilter( function( s ) {\n\tvar i;\n\tfor ( i in s.headers ) {\n\t\tif ( i.toLowerCase() === \"content-type\" ) {\n\t\t\ts.contentType = s.headers[ i ] || \"\";\n\t\t}\n\t}\n} );\n\n\njQuery._evalUrl = function( url, options, doc ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (trac-11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tcache: true,\n\t\tasync: false,\n\t\tglobal: false,\n\n\t\t// Only evaluate the response if it is successful (gh-4126)\n\t\t// dataFilter is not invoked for failure responses, so using it instead\n\t\t// of the default converter is kludgy but it works.\n\t\tconverters: {\n\t\t\t\"text script\": function() {}\n\t\t},\n\t\tdataFilter: function( response ) {\n\t\t\tjQuery.globalEval( response, options, doc );\n\t\t}\n\t} );\n};\n\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( this[ 0 ] ) {\n\t\t\tif ( isFunction( html ) ) {\n\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t}\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar htmlIsFunction = isFunction( html );\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function( selector ) {\n\t\tthis.parent( selector ).not( \"body\" ).each( function() {\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\n\njQuery.expr.pseudos.hidden = function( elem ) {\n\treturn !jQuery.expr.pseudos.visible( elem );\n};\njQuery.expr.pseudos.visible = function( elem ) {\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n};\n\n\n\n\njQuery.ajaxSettings.xhr = function() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch ( e ) {}\n};\n\nvar xhrSuccessStatus = {\n\n\t\t// File protocol always yields status code 0, assume 200\n\t\t0: 200,\n\n\t\t// Support: IE <=9 only\n\t\t// trac-1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback, errorCallback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr();\n\n\t\t\t\txhr.open(\n\t\t\t\t\toptions.type,\n\t\t\t\t\toptions.url,\n\t\t\t\t\toptions.async,\n\t\t\t\t\toptions.username,\n\t\t\t\t\toptions.password\n\t\t\t\t);\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\n\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.ontimeout =\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = null;\n\n\t\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\n\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\n\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\n\t\t\t\t\t\t\t\tif ( typeof xhr.status !== \"number\" ) {\n\t\t\t\t\t\t\t\t\tcomplete( 0, \"error\" );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see trac-8605, trac-14207\n\t\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t\t// IE9 has no XHR2 but throws on binary (trac-11426)\n\t\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) !== \"text\"  ||\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText !== \"string\" ?\n\t\t\t\t\t\t\t\t\t\t{ binary: xhr.response } :\n\t\t\t\t\t\t\t\t\t\t{ text: xhr.responseText },\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t\t// Listen to events\n\t\t\t\txhr.onload = callback();\n\t\t\t\terrorCallback = xhr.onerror = xhr.ontimeout = callback( \"error\" );\n\n\t\t\t\t// Support: IE 9 only\n\t\t\t\t// Use onreadystatechange to replace onabort\n\t\t\t\t// to handle uncaught aborts\n\t\t\t\tif ( xhr.onabort !== undefined ) {\n\t\t\t\t\txhr.onabort = errorCallback;\n\t\t\t\t} else {\n\t\t\t\t\txhr.onreadystatechange = function() {\n\n\t\t\t\t\t\t// Check readyState before timeout as it changes\n\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\n\n\t\t\t\t\t\t\t// Allow onerror to be called first,\n\t\t\t\t\t\t\t// but that will not handle a native abort\n\t\t\t\t\t\t\t// Also, save errorCallback to a variable\n\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\n\t\t\t\t\t\t\twindow.setTimeout( function() {\n\t\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\t\terrorCallback();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Create the abort callback\n\t\t\t\tcallback = callback( \"abort\" );\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// trac-14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\n// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\njQuery.ajaxPrefilter( function( s ) {\n\tif ( s.crossDomain ) {\n\t\ts.contents.script = false;\n\t}\n} );\n\n// Install script dataType\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /\\b(?:java|ecma)script\\b/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\n\t// This transport only deals with cross domain or forced-by-attrs requests\n\tif ( s.crossDomain || s.scriptAttrs ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \"<script>\" )\n\t\t\t\t\t.attr( s.scriptAttrs || {} )\n\t\t\t\t\t.prop( { charset: s.scriptCharset, src: s.url } )\n\t\t\t\t\t.on( \"load error\", callback = function( evt ) {\n\t\t\t\t\t\tscript.remove();\n\t\t\t\t\t\tcallback = null;\n\t\t\t\t\t\tif ( evt ) {\n\t\t\t\t\t\t\tcomplete( evt.type === \"error\" ? 404 : 200, evt.type );\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\n\t\t\t\t// Use native DOM manipulation to avoid our domManip AJAX trickery\n\t\t\t\tdocument.head.appendChild( script[ 0 ] );\n\t\t\t},\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\nvar oldCallbacks = [],\n\trjsonp = /(=)\\?(?=&|$)|\\?\\?/;\n\n// Default jsonp settings\njQuery.ajaxSetup( {\n\tjsonp: \"callback\",\n\tjsonpCallback: function() {\n\t\tvar callback = oldCallbacks.pop() || ( jQuery.expando + \"_\" + ( nonce.guid++ ) );\n\t\tthis[ callback ] = true;\n\t\treturn callback;\n\t}\n} );\n\n// Detect, normalize options and install callbacks for jsonp requests\njQuery.ajaxPrefilter( \"json jsonp\", function( s, originalSettings, jqXHR ) {\n\n\tvar callbackName, overwritten, responseContainer,\n\t\tjsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?\n\t\t\t\"url\" :\n\t\t\ttypeof s.data === \"string\" &&\n\t\t\t\t( s.contentType || \"\" )\n\t\t\t\t\t.indexOf( \"application/x-www-form-urlencoded\" ) === 0 &&\n\t\t\t\trjsonp.test( s.data ) && \"data\"\n\t\t);\n\n\t// Handle iff the expected data type is \"jsonp\" or we have a parameter to set\n\tif ( jsonProp || s.dataTypes[ 0 ] === \"jsonp\" ) {\n\n\t\t// Get callback name, remembering preexisting value associated with it\n\t\tcallbackName = s.jsonpCallback = isFunction( s.jsonpCallback ) ?\n\t\t\ts.jsonpCallback() :\n\t\t\ts.jsonpCallback;\n\n\t\t// Insert callback into url or form data\n\t\tif ( jsonProp ) {\n\t\t\ts[ jsonProp ] = s[ jsonProp ].replace( rjsonp, \"$1\" + callbackName );\n\t\t} else if ( s.jsonp !== false ) {\n\t\t\ts.url += ( rquery.test( s.url ) ? \"&\" : \"?\" ) + s.jsonp + \"=\" + callbackName;\n\t\t}\n\n\t\t// Use data converter to retrieve json after script execution\n\t\ts.converters[ \"script json\" ] = function() {\n\t\t\tif ( !responseContainer ) {\n\t\t\t\tjQuery.error( callbackName + \" was not called\" );\n\t\t\t}\n\t\t\treturn responseContainer[ 0 ];\n\t\t};\n\n\t\t// Force json dataType\n\t\ts.dataTypes[ 0 ] = \"json\";\n\n\t\t// Install callback\n\t\toverwritten = window[ callbackName ];\n\t\twindow[ callbackName ] = function() {\n\t\t\tresponseContainer = arguments;\n\t\t};\n\n\t\t// Clean-up function (fires after converters)\n\t\tjqXHR.always( function() {\n\n\t\t\t// If previous value didn't exist - remove it\n\t\t\tif ( overwritten === undefined ) {\n\t\t\t\tjQuery( window ).removeProp( callbackName );\n\n\t\t\t// Otherwise restore preexisting value\n\t\t\t} else {\n\t\t\t\twindow[ callbackName ] = overwritten;\n\t\t\t}\n\n\t\t\t// Save back as free\n\t\t\tif ( s[ callbackName ] ) {\n\n\t\t\t\t// Make sure that re-using the options doesn't screw things around\n\t\t\t\ts.jsonpCallback = originalSettings.jsonpCallback;\n\n\t\t\t\t// Save the callback name for future use\n\t\t\t\toldCallbacks.push( callbackName );\n\t\t\t}\n\n\t\t\t// Call if it was a function and we have a response\n\t\t\tif ( responseContainer && isFunction( overwritten ) ) {\n\t\t\t\toverwritten( responseContainer[ 0 ] );\n\t\t\t}\n\n\t\t\tresponseContainer = overwritten = undefined;\n\t\t} );\n\n\t\t// Delegate to script\n\t\treturn \"script\";\n\t}\n} );\n\n\n\n\n// Support: Safari 8 only\n// In Safari 8 documents created via document.implementation.createHTMLDocument\n// collapse sibling forms: the second one becomes a child of the first one.\n// Because of that, this security measure has to be disabled in Safari 8.\n// https://bugs.webkit.org/show_bug.cgi?id=137337\nsupport.createHTMLDocument = ( function() {\n\tvar body = document.implementation.createHTMLDocument( \"\" ).body;\n\tbody.innerHTML = \"<form></form><form></form>\";\n\treturn body.childNodes.length === 2;\n} )();\n\n\n// Argument \"data\" should be string of html\n// context (optional): If specified, the fragment will be created in this context,\n// defaults to document\n// keepScripts (optional): If true, will include scripts passed in the html string\njQuery.parseHTML = function( data, context, keepScripts ) {\n\tif ( typeof data !== \"string\" ) {\n\t\treturn [];\n\t}\n\tif ( typeof context === \"boolean\" ) {\n\t\tkeepScripts = context;\n\t\tcontext = false;\n\t}\n\n\tvar base, parsed, scripts;\n\n\tif ( !context ) {\n\n\t\t// Stop scripts or inline event handlers from being executed immediately\n\t\t// by using document.implementation\n\t\tif ( support.createHTMLDocument ) {\n\t\t\tcontext = document.implementation.createHTMLDocument( \"\" );\n\n\t\t\t// Set the base href for the created document\n\t\t\t// so any parsed elements with URLs\n\t\t\t// are based on the document's URL (gh-2965)\n\t\t\tbase = context.createElement( \"base\" );\n\t\t\tbase.href = document.location.href;\n\t\t\tcontext.head.appendChild( base );\n\t\t} else {\n\t\t\tcontext = document;\n\t\t}\n\t}\n\n\tparsed = rsingleTag.exec( data );\n\tscripts = !keepScripts && [];\n\n\t// Single tag\n\tif ( parsed ) {\n\t\treturn [ context.createElement( parsed[ 1 ] ) ];\n\t}\n\n\tparsed = buildFragment( [ data ], context, scripts );\n\n\tif ( scripts && scripts.length ) {\n\t\tjQuery( scripts ).remove();\n\t}\n\n\treturn jQuery.merge( [], parsed.childNodes );\n};\n\n\n/**\n * Load a url into a page\n */\njQuery.fn.load = function( url, params, callback ) {\n\tvar selector, type, response,\n\t\tself = this,\n\t\toff = url.indexOf( \" \" );\n\n\tif ( off > -1 ) {\n\t\tselector = stripAndCollapse( url.slice( off ) );\n\t\turl = url.slice( 0, off );\n\t}\n\n\t// If it's a function\n\tif ( isFunction( params ) ) {\n\n\t\t// We assume that it's the callback\n\t\tcallback = params;\n\t\tparams = undefined;\n\n\t// Otherwise, build a param string\n\t} else if ( params && typeof params === \"object\" ) {\n\t\ttype = \"POST\";\n\t}\n\n\t// If we have elements to modify, make the request\n\tif ( self.length > 0 ) {\n\t\tjQuery.ajax( {\n\t\t\turl: url,\n\n\t\t\t// If \"type\" variable is undefined, then \"GET\" method will be used.\n\t\t\t// Make value of this field explicit since\n\t\t\t// user can override it through ajaxSetup method\n\t\t\ttype: type || \"GET\",\n\t\t\tdataType: \"html\",\n\t\t\tdata: params\n\t\t} ).done( function( responseText ) {\n\n\t\t\t// Save response for use in complete callback\n\t\t\tresponse = arguments;\n\n\t\t\tself.html( selector ?\n\n\t\t\t\t// If a selector was specified, locate the right elements in a dummy div\n\t\t\t\t// Exclude scripts to avoid IE 'Permission Denied' errors\n\t\t\t\tjQuery( \"<div>\" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :\n\n\t\t\t\t// Otherwise use the full result\n\t\t\t\tresponseText );\n\n\t\t// If the request succeeds, this function gets \"data\", \"status\", \"jqXHR\"\n\t\t// but they are ignored because response was set above.\n\t\t// If it fails, this function gets \"jqXHR\", \"status\", \"error\"\n\t\t} ).always( callback && function( jqXHR, status ) {\n\t\t\tself.each( function() {\n\t\t\t\tcallback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] );\n\t\t\t} );\n\t\t} );\n\t}\n\n\treturn this;\n};\n\n\n\n\njQuery.expr.pseudos.animated = function( elem ) {\n\treturn jQuery.grep( jQuery.timers, function( fn ) {\n\t\treturn elem === fn.elem;\n\t} ).length;\n};\n\n\n\n\njQuery.offset = {\n\tsetOffset: function( elem, options, i ) {\n\t\tvar curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,\n\t\t\tposition = jQuery.css( elem, \"position\" ),\n\t\t\tcurElem = jQuery( elem ),\n\t\t\tprops = {};\n\n\t\t// Set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tcurOffset = curElem.offset();\n\t\tcurCSSTop = jQuery.css( elem, \"top\" );\n\t\tcurCSSLeft = jQuery.css( elem, \"left\" );\n\t\tcalculatePosition = ( position === \"absolute\" || position === \"fixed\" ) &&\n\t\t\t( curCSSTop + curCSSLeft ).indexOf( \"auto\" ) > -1;\n\n\t\t// Need to be able to calculate position if either\n\t\t// top or left is auto and position is either absolute or fixed\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t\tcurTop = curPosition.top;\n\t\t\tcurLeft = curPosition.left;\n\n\t\t} else {\n\t\t\tcurTop = parseFloat( curCSSTop ) || 0;\n\t\t\tcurLeft = parseFloat( curCSSLeft ) || 0;\n\t\t}\n\n\t\tif ( isFunction( options ) ) {\n\n\t\t\t// Use jQuery.extend here to allow modification of coordinates argument (gh-1848)\n\t\t\toptions = options.call( elem, i, jQuery.extend( {}, curOffset ) );\n\t\t}\n\n\t\tif ( options.top != null ) {\n\t\t\tprops.top = ( options.top - curOffset.top ) + curTop;\n\t\t}\n\t\tif ( options.left != null ) {\n\t\t\tprops.left = ( options.left - curOffset.left ) + curLeft;\n\t\t}\n\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\njQuery.fn.extend( {\n\n\t// offset() relates an element's border box to the document origin\n\toffset: function( options ) {\n\n\t\t// Preserve chaining for setter\n\t\tif ( arguments.length ) {\n\t\t\treturn options === undefined ?\n\t\t\t\tthis :\n\t\t\t\tthis.each( function( i ) {\n\t\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t\t} );\n\t\t}\n\n\t\tvar rect, win,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !elem ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Return zeros for disconnected and hidden (display: none) elements (gh-2310)\n\t\t// Support: IE <=11 only\n\t\t// Running getBoundingClientRect on a\n\t\t// disconnected node in IE throws an error\n\t\tif ( !elem.getClientRects().length ) {\n\t\t\treturn { top: 0, left: 0 };\n\t\t}\n\n\t\t// Get document-relative position by adding viewport scroll to viewport-relative gBCR\n\t\trect = elem.getBoundingClientRect();\n\t\twin = elem.ownerDocument.defaultView;\n\t\treturn {\n\t\t\ttop: rect.top + win.pageYOffset,\n\t\t\tleft: rect.left + win.pageXOffset\n\t\t};\n\t},\n\n\t// position() relates an element's margin box to its offset parent's padding box\n\t// This corresponds to the behavior of CSS absolute positioning\n\tposition: function() {\n\t\tif ( !this[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar offsetParent, offset, doc,\n\t\t\telem = this[ 0 ],\n\t\t\tparentOffset = { top: 0, left: 0 };\n\n\t\t// position:fixed elements are offset from the viewport, which itself always has zero offset\n\t\tif ( jQuery.css( elem, \"position\" ) === \"fixed\" ) {\n\n\t\t\t// Assume position:fixed implies availability of getBoundingClientRect\n\t\t\toffset = elem.getBoundingClientRect();\n\n\t\t} else {\n\t\t\toffset = this.offset();\n\n\t\t\t// Account for the *real* offset parent, which can be the document or its root element\n\t\t\t// when a statically positioned element is identified\n\t\t\tdoc = elem.ownerDocument;\n\t\t\toffsetParent = elem.offsetParent || doc.documentElement;\n\t\t\twhile ( offsetParent &&\n\t\t\t\t( offsetParent === doc.body || offsetParent === doc.documentElement ) &&\n\t\t\t\tjQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\n\t\t\t\toffsetParent = offsetParent.parentNode;\n\t\t\t}\n\t\t\tif ( offsetParent && offsetParent !== elem && offsetParent.nodeType === 1 ) {\n\n\t\t\t\t// Incorporate borders into its offset, since they are outside its content origin\n\t\t\t\tparentOffset = jQuery( offsetParent ).offset();\n\t\t\t\tparentOffset.top += jQuery.css( offsetParent, \"borderTopWidth\", true );\n\t\t\t\tparentOffset.left += jQuery.css( offsetParent, \"borderLeftWidth\", true );\n\t\t\t}\n\t\t}\n\n\t\t// Subtract parent offsets and element margins\n\t\treturn {\n\t\t\ttop: offset.top - parentOffset.top - jQuery.css( elem, \"marginTop\", true ),\n\t\t\tleft: offset.left - parentOffset.left - jQuery.css( elem, \"marginLeft\", true )\n\t\t};\n\t},\n\n\t// This method will return documentElement in the following cases:\n\t// 1) For the element inside the iframe without offsetParent, this method will return\n\t//    documentElement of the parent window\n\t// 2) For the hidden or detached element\n\t// 3) For body or html element, i.e. in case of the html node - it will return itself\n\t//\n\t// but those exceptions were never presented as a real life use-cases\n\t// and might be considered as more preferable results.\n\t//\n\t// This logic, however, is not guaranteed and can change at any point in the future\n\toffsetParent: function() {\n\t\treturn this.map( function() {\n\t\t\tvar offsetParent = this.offsetParent;\n\n\t\t\twhile ( offsetParent && jQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\n\t\t\treturn offsetParent || documentElement;\n\t\t} );\n\t}\n} );\n\n// Create scrollLeft and scrollTop methods\njQuery.each( { scrollLeft: \"pageXOffset\", scrollTop: \"pageYOffset\" }, function( method, prop ) {\n\tvar top = \"pageYOffset\" === prop;\n\n\tjQuery.fn[ method ] = function( val ) {\n\t\treturn access( this, function( elem, method, val ) {\n\n\t\t\t// Coalesce documents and windows\n\t\t\tvar win;\n\t\t\tif ( isWindow( elem ) ) {\n\t\t\t\twin = elem;\n\t\t\t} else if ( elem.nodeType === 9 ) {\n\t\t\t\twin = elem.defaultView;\n\t\t\t}\n\n\t\t\tif ( val === undefined ) {\n\t\t\t\treturn win ? win[ prop ] : elem[ method ];\n\t\t\t}\n\n\t\t\tif ( win ) {\n\t\t\t\twin.scrollTo(\n\t\t\t\t\t!top ? val : win.pageXOffset,\n\t\t\t\t\ttop ? val : win.pageYOffset\n\t\t\t\t);\n\n\t\t\t} else {\n\t\t\t\telem[ method ] = val;\n\t\t\t}\n\t\t}, method, val, arguments.length );\n\t};\n} );\n\n// Support: Safari <=7 - 9.1, Chrome <=37 - 49\n// Add the top/left cssHooks using jQuery.fn.position\n// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084\n// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347\n// getComputedStyle returns percent when specified for top/left/bottom/right;\n// rather than make the css module depend on the offset module, just check for it here\njQuery.each( [ \"top\", \"left\" ], function( _i, prop ) {\n\tjQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,\n\t\tfunction( elem, computed ) {\n\t\t\tif ( computed ) {\n\t\t\t\tcomputed = curCSS( elem, prop );\n\n\t\t\t\t// If curCSS returns percentage, fallback to offset\n\t\t\t\treturn rnumnonpx.test( computed ) ?\n\t\t\t\t\tjQuery( elem ).position()[ prop ] + \"px\" :\n\t\t\t\t\tcomputed;\n\t\t\t}\n\t\t}\n\t);\n} );\n\n\n// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods\njQuery.each( { Height: \"height\", Width: \"width\" }, function( name, type ) {\n\tjQuery.each( {\n\t\tpadding: \"inner\" + name,\n\t\tcontent: type,\n\t\t\"\": \"outer\" + name\n\t}, function( defaultExtra, funcName ) {\n\n\t\t// Margin is only for outerHeight, outerWidth\n\t\tjQuery.fn[ funcName ] = function( margin, value ) {\n\t\t\tvar chainable = arguments.length && ( defaultExtra || typeof margin !== \"boolean\" ),\n\t\t\t\textra = defaultExtra || ( margin === true || value === true ? \"margin\" : \"border\" );\n\n\t\t\treturn access( this, function( elem, type, value ) {\n\t\t\t\tvar doc;\n\n\t\t\t\tif ( isWindow( elem ) ) {\n\n\t\t\t\t\t// $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)\n\t\t\t\t\treturn funcName.indexOf( \"outer\" ) === 0 ?\n\t\t\t\t\t\telem[ \"inner\" + name ] :\n\t\t\t\t\t\telem.document.documentElement[ \"client\" + name ];\n\t\t\t\t}\n\n\t\t\t\t// Get document width or height\n\t\t\t\tif ( elem.nodeType === 9 ) {\n\t\t\t\t\tdoc = elem.documentElement;\n\n\t\t\t\t\t// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],\n\t\t\t\t\t// whichever is greatest\n\t\t\t\t\treturn Math.max(\n\t\t\t\t\t\telem.body[ \"scroll\" + name ], doc[ \"scroll\" + name ],\n\t\t\t\t\t\telem.body[ \"offset\" + name ], doc[ \"offset\" + name ],\n\t\t\t\t\t\tdoc[ \"client\" + name ]\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn value === undefined ?\n\n\t\t\t\t\t// Get width or height on the element, requesting but not forcing parseFloat\n\t\t\t\t\tjQuery.css( elem, type, extra ) :\n\n\t\t\t\t\t// Set width or height on the element\n\t\t\t\t\tjQuery.style( elem, type, value, extra );\n\t\t\t}, type, chainable ? margin : undefined, chainable );\n\t\t};\n\t} );\n} );\n\n\njQuery.each( [\n\t\"ajaxStart\",\n\t\"ajaxStop\",\n\t\"ajaxComplete\",\n\t\"ajaxError\",\n\t\"ajaxSuccess\",\n\t\"ajaxSend\"\n], function( _i, type ) {\n\tjQuery.fn[ type ] = function( fn ) {\n\t\treturn this.on( type, fn );\n\t};\n} );\n\n\n\n\njQuery.fn.extend( {\n\n\tbind: function( types, data, fn ) {\n\t\treturn this.on( types, null, data, fn );\n\t},\n\tunbind: function( types, fn ) {\n\t\treturn this.off( types, null, fn );\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.on( types, selector, data, fn );\n\t},\n\tundelegate: function( selector, types, fn ) {\n\n\t\t// ( namespace ) or ( selector, types [, fn] )\n\t\treturn arguments.length === 1 ?\n\t\t\tthis.off( selector, \"**\" ) :\n\t\t\tthis.off( types, selector || \"**\", fn );\n\t},\n\n\thover: function( fnOver, fnOut ) {\n\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n\t}\n} );\n\njQuery.each(\n\t( \"blur focus focusin focusout resize scroll click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup contextmenu\" ).split( \" \" ),\n\tfunction( _i, name ) {\n\n\t\t// Handle event binding\n\t\tjQuery.fn[ name ] = function( data, fn ) {\n\t\t\treturn arguments.length > 0 ?\n\t\t\t\tthis.on( name, null, data, fn ) :\n\t\t\t\tthis.trigger( name );\n\t\t};\n\t}\n);\n\n\n\n\n// Support: Android <=4.0 only\n// Make sure we trim BOM and NBSP\n// Require that the \"whitespace run\" starts from a non-whitespace\n// to avoid O(N^2) behavior when the engine would try matching \"\\s+$\" at each space position.\nvar rtrim = /^[\\s\\uFEFF\\xA0]+|([^\\s\\uFEFF\\xA0])[\\s\\uFEFF\\xA0]+$/g;\n\n// Bind a function to a context, optionally partially applying any\n// arguments.\n// jQuery.proxy is deprecated to promote standards (specifically Function#bind)\n// However, it is not slated for removal any time soon\njQuery.proxy = function( fn, context ) {\n\tvar tmp, args, proxy;\n\n\tif ( typeof context === \"string\" ) {\n\t\ttmp = fn[ context ];\n\t\tcontext = fn;\n\t\tfn = tmp;\n\t}\n\n\t// Quick check to determine if target is callable, in the spec\n\t// this throws a TypeError, but we will just return undefined.\n\tif ( !isFunction( fn ) ) {\n\t\treturn undefined;\n\t}\n\n\t// Simulated bind\n\targs = slice.call( arguments, 2 );\n\tproxy = function() {\n\t\treturn fn.apply( context || this, args.concat( slice.call( arguments ) ) );\n\t};\n\n\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n\n\treturn proxy;\n};\n\njQuery.holdReady = function( hold ) {\n\tif ( hold ) {\n\t\tjQuery.readyWait++;\n\t} else {\n\t\tjQuery.ready( true );\n\t}\n};\njQuery.isArray = Array.isArray;\njQuery.parseJSON = JSON.parse;\njQuery.nodeName = nodeName;\njQuery.isFunction = isFunction;\njQuery.isWindow = isWindow;\njQuery.camelCase = camelCase;\njQuery.type = toType;\n\njQuery.now = Date.now;\n\njQuery.isNumeric = function( obj ) {\n\n\t// As of jQuery 3.0, isNumeric is limited to\n\t// strings and numbers (primitives or objects)\n\t// that can be coerced to finite numbers (gh-2662)\n\tvar type = jQuery.type( obj );\n\treturn ( type === \"number\" || type === \"string\" ) &&\n\n\t\t// parseFloat NaNs numeric-cast false positives (\"\")\n\t\t// ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n\t\t// subtraction forces infinities to NaN\n\t\t!isNaN( obj - parseFloat( obj ) );\n};\n\njQuery.trim = function( text ) {\n\treturn text == null ?\n\t\t\"\" :\n\t\t( text + \"\" ).replace( rtrim, \"$1\" );\n};\n\n\n\n// Register as a named AMD module, since jQuery can be concatenated with other\n// files that may use define, but not via a proper concatenation script that\n// understands anonymous AMD modules. A named AMD is safest and most robust\n// way to register. Lowercase jquery is used because AMD module names are\n// derived from file names, and jQuery is normally delivered in a lowercase\n// file name. Do this after creating the global so that if an AMD module wants\n// to call noConflict to hide this version of jQuery, it will work.\n\n// Note that for maximum portability, libraries that are not jQuery should\n// declare themselves as anonymous modules, and avoid setting a global if an\n// AMD loader is present. jQuery is a special case. For more information, see\n// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon\n\nif ( typeof define === \"function\" && define.amd ) {\n\tdefine( \"jquery\", [], function() {\n\t\treturn jQuery;\n\t} );\n}\n\n\n\n\nvar\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$;\n\njQuery.noConflict = function( deep ) {\n\tif ( window.$ === jQuery ) {\n\t\twindow.$ = _$;\n\t}\n\n\tif ( deep && window.jQuery === jQuery ) {\n\t\twindow.jQuery = _jQuery;\n\t}\n\n\treturn jQuery;\n};\n\n// Expose jQuery and $ identifiers, even in AMD\n// (trac-7102#comment:10, https://github.com/jquery/jquery/pull/557)\n// and CommonJS for browser emulators (trac-13566)\nif ( typeof noGlobal === \"undefined\" ) {\n\twindow.jQuery = window.$ = jQuery;\n}\n\n\n\n\nreturn jQuery;\n} );\n", "/**\n * @license React\n * react.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nif (process.env.NODE_ENV !== \"production\") {\n  (function() {\n\n          'use strict';\n\n/* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\nif (\n  typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&\n  typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart ===\n    'function'\n) {\n  __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error());\n}\n          var ReactVersion = '18.2.0';\n\n// ATTENTION\n// When adding new symbols to this file,\n// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'\n// The Symbol used to tag the ReactElement-like types.\nvar REACT_ELEMENT_TYPE = Symbol.for('react.element');\nvar REACT_PORTAL_TYPE = Symbol.for('react.portal');\nvar REACT_FRAGMENT_TYPE = Symbol.for('react.fragment');\nvar REACT_STRICT_MODE_TYPE = Symbol.for('react.strict_mode');\nvar REACT_PROFILER_TYPE = Symbol.for('react.profiler');\nvar REACT_PROVIDER_TYPE = Symbol.for('react.provider');\nvar REACT_CONTEXT_TYPE = Symbol.for('react.context');\nvar REACT_FORWARD_REF_TYPE = Symbol.for('react.forward_ref');\nvar REACT_SUSPENSE_TYPE = Symbol.for('react.suspense');\nvar REACT_SUSPENSE_LIST_TYPE = Symbol.for('react.suspense_list');\nvar REACT_MEMO_TYPE = Symbol.for('react.memo');\nvar REACT_LAZY_TYPE = Symbol.for('react.lazy');\nvar REACT_OFFSCREEN_TYPE = Symbol.for('react.offscreen');\nvar MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator';\nfunction getIteratorFn(maybeIterable) {\n  if (maybeIterable === null || typeof maybeIterable !== 'object') {\n    return null;\n  }\n\n  var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL];\n\n  if (typeof maybeIterator === 'function') {\n    return maybeIterator;\n  }\n\n  return null;\n}\n\n/**\n * Keeps track of the current dispatcher.\n */\nvar ReactCurrentDispatcher = {\n  /**\n   * @internal\n   * @type {ReactComponent}\n   */\n  current: null\n};\n\n/**\n * Keeps track of the current batch's configuration such as how long an update\n * should suspend for if it needs to.\n */\nvar ReactCurrentBatchConfig = {\n  transition: null\n};\n\nvar ReactCurrentActQueue = {\n  current: null,\n  // Used to reproduce behavior of `batchedUpdates` in legacy mode.\n  isBatchingLegacy: false,\n  didScheduleLegacyUpdate: false\n};\n\n/**\n * Keeps track of the current owner.\n *\n * The current owner is the component who should own any components that are\n * currently being constructed.\n */\nvar ReactCurrentOwner = {\n  /**\n   * @internal\n   * @type {ReactComponent}\n   */\n  current: null\n};\n\nvar ReactDebugCurrentFrame = {};\nvar currentExtraStackFrame = null;\nfunction setExtraStackFrame(stack) {\n  {\n    currentExtraStackFrame = stack;\n  }\n}\n\n{\n  ReactDebugCurrentFrame.setExtraStackFrame = function (stack) {\n    {\n      currentExtraStackFrame = stack;\n    }\n  }; // Stack implementation injected by the current renderer.\n\n\n  ReactDebugCurrentFrame.getCurrentStack = null;\n\n  ReactDebugCurrentFrame.getStackAddendum = function () {\n    var stack = ''; // Add an extra top frame while an element is being validated\n\n    if (currentExtraStackFrame) {\n      stack += currentExtraStackFrame;\n    } // Delegate to the injected renderer-specific implementation\n\n\n    var impl = ReactDebugCurrentFrame.getCurrentStack;\n\n    if (impl) {\n      stack += impl() || '';\n    }\n\n    return stack;\n  };\n}\n\n// -----------------------------------------------------------------------------\n\nvar enableScopeAPI = false; // Experimental Create Event Handle API.\nvar enableCacheElement = false;\nvar enableTransitionTracing = false; // No known bugs, but needs performance testing\n\nvar enableLegacyHidden = false; // Enables unstable_avoidThisFallback feature in Fiber\n// stuff. Intended to enable React core members to more easily debug scheduling\n// issues in DEV builds.\n\nvar enableDebugTracing = false; // Track which Fiber(s) schedule render work.\n\nvar ReactSharedInternals = {\n  ReactCurrentDispatcher: ReactCurrentDispatcher,\n  ReactCurrentBatchConfig: ReactCurrentBatchConfig,\n  ReactCurrentOwner: ReactCurrentOwner\n};\n\n{\n  ReactSharedInternals.ReactDebugCurrentFrame = ReactDebugCurrentFrame;\n  ReactSharedInternals.ReactCurrentActQueue = ReactCurrentActQueue;\n}\n\n// by calls to these methods by a Babel plugin.\n//\n// In PROD (or in packages without access to React internals),\n// they are left as they are instead.\n\nfunction warn(format) {\n  {\n    {\n      for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n        args[_key - 1] = arguments[_key];\n      }\n\n      printWarning('warn', format, args);\n    }\n  }\n}\nfunction error(format) {\n  {\n    {\n      for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n        args[_key2 - 1] = arguments[_key2];\n      }\n\n      printWarning('error', format, args);\n    }\n  }\n}\n\nfunction printWarning(level, format, args) {\n  // When changing this logic, you might want to also\n  // update consoleWithStackDev.www.js as well.\n  {\n    var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n    var stack = ReactDebugCurrentFrame.getStackAddendum();\n\n    if (stack !== '') {\n      format += '%s';\n      args = args.concat([stack]);\n    } // eslint-disable-next-line react-internal/safe-string-coercion\n\n\n    var argsWithFormat = args.map(function (item) {\n      return String(item);\n    }); // Careful: RN currently depends on this prefix\n\n    argsWithFormat.unshift('Warning: ' + format); // We intentionally don't use spread (or .apply) directly because it\n    // breaks IE9: https://github.com/facebook/react/issues/13610\n    // eslint-disable-next-line react-internal/no-production-logging\n\n    Function.prototype.apply.call(console[level], console, argsWithFormat);\n  }\n}\n\nvar didWarnStateUpdateForUnmountedComponent = {};\n\nfunction warnNoop(publicInstance, callerName) {\n  {\n    var _constructor = publicInstance.constructor;\n    var componentName = _constructor && (_constructor.displayName || _constructor.name) || 'ReactClass';\n    var warningKey = componentName + \".\" + callerName;\n\n    if (didWarnStateUpdateForUnmountedComponent[warningKey]) {\n      return;\n    }\n\n    error(\"Can't call %s on a component that is not yet mounted. \" + 'This is a no-op, but it might indicate a bug in your application. ' + 'Instead, assign to `this.state` directly or define a `state = {};` ' + 'class property with the desired state in the %s component.', callerName, componentName);\n\n    didWarnStateUpdateForUnmountedComponent[warningKey] = true;\n  }\n}\n/**\n * This is the abstract API for an update queue.\n */\n\n\nvar ReactNoopUpdateQueue = {\n  /**\n   * Checks whether or not this composite component is mounted.\n   * @param {ReactClass} publicInstance The instance we want to test.\n   * @return {boolean} True if mounted, false otherwise.\n   * @protected\n   * @final\n   */\n  isMounted: function (publicInstance) {\n    return false;\n  },\n\n  /**\n   * Forces an update. This should only be invoked when it is known with\n   * certainty that we are **not** in a DOM transaction.\n   *\n   * You may want to call this when you know that some deeper aspect of the\n   * component's state has changed but `setState` was not called.\n   *\n   * This will not invoke `shouldComponentUpdate`, but it will invoke\n   * `componentWillUpdate` and `componentDidUpdate`.\n   *\n   * @param {ReactClass} publicInstance The instance that should rerender.\n   * @param {?function} callback Called after component is updated.\n   * @param {?string} callerName name of the calling function in the public API.\n   * @internal\n   */\n  enqueueForceUpdate: function (publicInstance, callback, callerName) {\n    warnNoop(publicInstance, 'forceUpdate');\n  },\n\n  /**\n   * Replaces all of the state. Always use this or `setState` to mutate state.\n   * You should treat `this.state` as immutable.\n   *\n   * There is no guarantee that `this.state` will be immediately updated, so\n   * accessing `this.state` after calling this method may return the old value.\n   *\n   * @param {ReactClass} publicInstance The instance that should rerender.\n   * @param {object} completeState Next state.\n   * @param {?function} callback Called after component is updated.\n   * @param {?string} callerName name of the calling function in the public API.\n   * @internal\n   */\n  enqueueReplaceState: function (publicInstance, completeState, callback, callerName) {\n    warnNoop(publicInstance, 'replaceState');\n  },\n\n  /**\n   * Sets a subset of the state. This only exists because _pendingState is\n   * internal. This provides a merging strategy that is not available to deep\n   * properties which is confusing. TODO: Expose pendingState or don't use it\n   * during the merge.\n   *\n   * @param {ReactClass} publicInstance The instance that should rerender.\n   * @param {object} partialState Next partial state to be merged with state.\n   * @param {?function} callback Called after component is updated.\n   * @param {?string} Name of the calling function in the public API.\n   * @internal\n   */\n  enqueueSetState: function (publicInstance, partialState, callback, callerName) {\n    warnNoop(publicInstance, 'setState');\n  }\n};\n\nvar assign = Object.assign;\n\nvar emptyObject = {};\n\n{\n  Object.freeze(emptyObject);\n}\n/**\n * Base class helpers for the updating state of a component.\n */\n\n\nfunction Component(props, context, updater) {\n  this.props = props;\n  this.context = context; // If a component has string refs, we will assign a different object later.\n\n  this.refs = emptyObject; // We initialize the default updater but the real one gets injected by the\n  // renderer.\n\n  this.updater = updater || ReactNoopUpdateQueue;\n}\n\nComponent.prototype.isReactComponent = {};\n/**\n * Sets a subset of the state. Always use this to mutate\n * state. You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * There is no guarantee that calls to `setState` will run synchronously,\n * as they may eventually be batched together.  You can provide an optional\n * callback that will be executed when the call to setState is actually\n * completed.\n *\n * When a function is provided to setState, it will be called at some point in\n * the future (not synchronously). It will be called with the up to date\n * component arguments (state, props, context). These values can be different\n * from this.* because your function may be called after receiveProps but before\n * shouldComponentUpdate, and this new state, props, and context will not yet be\n * assigned to this.\n *\n * @param {object|function} partialState Next partial state or function to\n *        produce next partial state to be merged with current state.\n * @param {?function} callback Called after state is updated.\n * @final\n * @protected\n */\n\nComponent.prototype.setState = function (partialState, callback) {\n  if (typeof partialState !== 'object' && typeof partialState !== 'function' && partialState != null) {\n    throw new Error('setState(...): takes an object of state variables to update or a ' + 'function which returns an object of state variables.');\n  }\n\n  this.updater.enqueueSetState(this, partialState, callback, 'setState');\n};\n/**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {?function} callback Called after update is complete.\n * @final\n * @protected\n */\n\n\nComponent.prototype.forceUpdate = function (callback) {\n  this.updater.enqueueForceUpdate(this, callback, 'forceUpdate');\n};\n/**\n * Deprecated APIs. These APIs used to exist on classic React classes but since\n * we would like to deprecate them, we're not going to move them over to this\n * modern base class. Instead, we define a getter that warns if it's accessed.\n */\n\n\n{\n  var deprecatedAPIs = {\n    isMounted: ['isMounted', 'Instead, make sure to clean up subscriptions and pending requests in ' + 'componentWillUnmount to prevent memory leaks.'],\n    replaceState: ['replaceState', 'Refactor your code to use setState instead (see ' + 'https://github.com/facebook/react/issues/3236).']\n  };\n\n  var defineDeprecationWarning = function (methodName, info) {\n    Object.defineProperty(Component.prototype, methodName, {\n      get: function () {\n        warn('%s(...) is deprecated in plain JavaScript React classes. %s', info[0], info[1]);\n\n        return undefined;\n      }\n    });\n  };\n\n  for (var fnName in deprecatedAPIs) {\n    if (deprecatedAPIs.hasOwnProperty(fnName)) {\n      defineDeprecationWarning(fnName, deprecatedAPIs[fnName]);\n    }\n  }\n}\n\nfunction ComponentDummy() {}\n\nComponentDummy.prototype = Component.prototype;\n/**\n * Convenience component with default shallow equality check for sCU.\n */\n\nfunction PureComponent(props, context, updater) {\n  this.props = props;\n  this.context = context; // If a component has string refs, we will assign a different object later.\n\n  this.refs = emptyObject;\n  this.updater = updater || ReactNoopUpdateQueue;\n}\n\nvar pureComponentPrototype = PureComponent.prototype = new ComponentDummy();\npureComponentPrototype.constructor = PureComponent; // Avoid an extra prototype jump for these methods.\n\nassign(pureComponentPrototype, Component.prototype);\npureComponentPrototype.isPureReactComponent = true;\n\n// an immutable object with a single mutable value\nfunction createRef() {\n  var refObject = {\n    current: null\n  };\n\n  {\n    Object.seal(refObject);\n  }\n\n  return refObject;\n}\n\nvar isArrayImpl = Array.isArray; // eslint-disable-next-line no-redeclare\n\nfunction isArray(a) {\n  return isArrayImpl(a);\n}\n\n/*\n * The `'' + value` pattern (used in in perf-sensitive code) throws for Symbol\n * and Temporal.* types. See https://github.com/facebook/react/pull/22064.\n *\n * The functions in this module will throw an easier-to-understand,\n * easier-to-debug exception with a clear errors message message explaining the\n * problem. (Instead of a confusing exception thrown inside the implementation\n * of the `value` object).\n */\n// $FlowFixMe only called in DEV, so void return is not possible.\nfunction typeName(value) {\n  {\n    // toStringTag is needed for namespaced types like Temporal.Instant\n    var hasToStringTag = typeof Symbol === 'function' && Symbol.toStringTag;\n    var type = hasToStringTag && value[Symbol.toStringTag] || value.constructor.name || 'Object';\n    return type;\n  }\n} // $FlowFixMe only called in DEV, so void return is not possible.\n\n\nfunction willCoercionThrow(value) {\n  {\n    try {\n      testStringCoercion(value);\n      return false;\n    } catch (e) {\n      return true;\n    }\n  }\n}\n\nfunction testStringCoercion(value) {\n  // If you ended up here by following an exception call stack, here's what's\n  // happened: you supplied an object or symbol value to React (as a prop, key,\n  // DOM attribute, CSS property, string ref, etc.) and when React tried to\n  // coerce it to a string using `'' + value`, an exception was thrown.\n  //\n  // The most common types that will cause this exception are `Symbol` instances\n  // and Temporal objects like `Temporal.Instant`. But any object that has a\n  // `valueOf` or `[Symbol.toPrimitive]` method that throws will also cause this\n  // exception. (Library authors do this to prevent users from using built-in\n  // numeric operators like `+` or comparison operators like `>=` because custom\n  // methods are needed to perform accurate arithmetic or comparison.)\n  //\n  // To fix the problem, coerce this object or symbol value to a string before\n  // passing it to React. The most reliable way is usually `String(value)`.\n  //\n  // To find which value is throwing, check the browser or debugger console.\n  // Before this exception was thrown, there should be `console.error` output\n  // that shows the type (Symbol, Temporal.PlainDate, etc.) that caused the\n  // problem and how that type was used: key, atrribute, input value prop, etc.\n  // In most cases, this console output also shows the component and its\n  // ancestor components where the exception happened.\n  //\n  // eslint-disable-next-line react-internal/safe-string-coercion\n  return '' + value;\n}\nfunction checkKeyStringCoercion(value) {\n  {\n    if (willCoercionThrow(value)) {\n      error('The provided key is an unsupported type %s.' + ' This value must be coerced to a string before before using it here.', typeName(value));\n\n      return testStringCoercion(value); // throw (to help callers find troubleshooting comments)\n    }\n  }\n}\n\nfunction getWrappedName(outerType, innerType, wrapperName) {\n  var displayName = outerType.displayName;\n\n  if (displayName) {\n    return displayName;\n  }\n\n  var functionName = innerType.displayName || innerType.name || '';\n  return functionName !== '' ? wrapperName + \"(\" + functionName + \")\" : wrapperName;\n} // Keep in sync with react-reconciler/getComponentNameFromFiber\n\n\nfunction getContextName(type) {\n  return type.displayName || 'Context';\n} // Note that the reconciler package should generally prefer to use getComponentNameFromFiber() instead.\n\n\nfunction getComponentNameFromType(type) {\n  if (type == null) {\n    // Host root, text node or just invalid type.\n    return null;\n  }\n\n  {\n    if (typeof type.tag === 'number') {\n      error('Received an unexpected object in getComponentNameFromType(). ' + 'This is likely a bug in React. Please file an issue.');\n    }\n  }\n\n  if (typeof type === 'function') {\n    return type.displayName || type.name || null;\n  }\n\n  if (typeof type === 'string') {\n    return type;\n  }\n\n  switch (type) {\n    case REACT_FRAGMENT_TYPE:\n      return 'Fragment';\n\n    case REACT_PORTAL_TYPE:\n      return 'Portal';\n\n    case REACT_PROFILER_TYPE:\n      return 'Profiler';\n\n    case REACT_STRICT_MODE_TYPE:\n      return 'StrictMode';\n\n    case REACT_SUSPENSE_TYPE:\n      return 'Suspense';\n\n    case REACT_SUSPENSE_LIST_TYPE:\n      return 'SuspenseList';\n\n  }\n\n  if (typeof type === 'object') {\n    switch (type.$$typeof) {\n      case REACT_CONTEXT_TYPE:\n        var context = type;\n        return getContextName(context) + '.Consumer';\n\n      case REACT_PROVIDER_TYPE:\n        var provider = type;\n        return getContextName(provider._context) + '.Provider';\n\n      case REACT_FORWARD_REF_TYPE:\n        return getWrappedName(type, type.render, 'ForwardRef');\n\n      case REACT_MEMO_TYPE:\n        var outerName = type.displayName || null;\n\n        if (outerName !== null) {\n          return outerName;\n        }\n\n        return getComponentNameFromType(type.type) || 'Memo';\n\n      case REACT_LAZY_TYPE:\n        {\n          var lazyComponent = type;\n          var payload = lazyComponent._payload;\n          var init = lazyComponent._init;\n\n          try {\n            return getComponentNameFromType(init(payload));\n          } catch (x) {\n            return null;\n          }\n        }\n\n      // eslint-disable-next-line no-fallthrough\n    }\n  }\n\n  return null;\n}\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar RESERVED_PROPS = {\n  key: true,\n  ref: true,\n  __self: true,\n  __source: true\n};\nvar specialPropKeyWarningShown, specialPropRefWarningShown, didWarnAboutStringRefs;\n\n{\n  didWarnAboutStringRefs = {};\n}\n\nfunction hasValidRef(config) {\n  {\n    if (hasOwnProperty.call(config, 'ref')) {\n      var getter = Object.getOwnPropertyDescriptor(config, 'ref').get;\n\n      if (getter && getter.isReactWarning) {\n        return false;\n      }\n    }\n  }\n\n  return config.ref !== undefined;\n}\n\nfunction hasValidKey(config) {\n  {\n    if (hasOwnProperty.call(config, 'key')) {\n      var getter = Object.getOwnPropertyDescriptor(config, 'key').get;\n\n      if (getter && getter.isReactWarning) {\n        return false;\n      }\n    }\n  }\n\n  return config.key !== undefined;\n}\n\nfunction defineKeyPropWarningGetter(props, displayName) {\n  var warnAboutAccessingKey = function () {\n    {\n      if (!specialPropKeyWarningShown) {\n        specialPropKeyWarningShown = true;\n\n        error('%s: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);\n      }\n    }\n  };\n\n  warnAboutAccessingKey.isReactWarning = true;\n  Object.defineProperty(props, 'key', {\n    get: warnAboutAccessingKey,\n    configurable: true\n  });\n}\n\nfunction defineRefPropWarningGetter(props, displayName) {\n  var warnAboutAccessingRef = function () {\n    {\n      if (!specialPropRefWarningShown) {\n        specialPropRefWarningShown = true;\n\n        error('%s: `ref` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);\n      }\n    }\n  };\n\n  warnAboutAccessingRef.isReactWarning = true;\n  Object.defineProperty(props, 'ref', {\n    get: warnAboutAccessingRef,\n    configurable: true\n  });\n}\n\nfunction warnIfStringRefCannotBeAutoConverted(config) {\n  {\n    if (typeof config.ref === 'string' && ReactCurrentOwner.current && config.__self && ReactCurrentOwner.current.stateNode !== config.__self) {\n      var componentName = getComponentNameFromType(ReactCurrentOwner.current.type);\n\n      if (!didWarnAboutStringRefs[componentName]) {\n        error('Component \"%s\" contains the string ref \"%s\". ' + 'Support for string refs will be removed in a future major release. ' + 'This case cannot be automatically converted to an arrow function. ' + 'We ask you to manually fix this case by using useRef() or createRef() instead. ' + 'Learn more about using refs safely here: ' + 'https://reactjs.org/link/strict-mode-string-ref', componentName, config.ref);\n\n        didWarnAboutStringRefs[componentName] = true;\n      }\n    }\n  }\n}\n/**\n * Factory method to create a new React element. This no longer adheres to\n * the class pattern, so do not use new to call it. Also, instanceof check\n * will not work. Instead test $$typeof field against Symbol.for('react.element') to check\n * if something is a React Element.\n *\n * @param {*} type\n * @param {*} props\n * @param {*} key\n * @param {string|object} ref\n * @param {*} owner\n * @param {*} self A *temporary* helper to detect places where `this` is\n * different from the `owner` when React.createElement is called, so that we\n * can warn. We want to get rid of owner and replace string `ref`s with arrow\n * functions, and as long as `this` and owner are the same, there will be no\n * change in behavior.\n * @param {*} source An annotation object (added by a transpiler or otherwise)\n * indicating filename, line number, and/or other information.\n * @internal\n */\n\n\nvar ReactElement = function (type, key, ref, self, source, owner, props) {\n  var element = {\n    // This tag allows us to uniquely identify this as a React Element\n    $$typeof: REACT_ELEMENT_TYPE,\n    // Built-in properties that belong on the element\n    type: type,\n    key: key,\n    ref: ref,\n    props: props,\n    // Record the component responsible for creating this element.\n    _owner: owner\n  };\n\n  {\n    // The validation flag is currently mutative. We put it on\n    // an external backing store so that we can freeze the whole object.\n    // This can be replaced with a WeakMap once they are implemented in\n    // commonly used development environments.\n    element._store = {}; // To make comparing ReactElements easier for testing purposes, we make\n    // the validation flag non-enumerable (where possible, which should\n    // include every environment we run tests in), so the test framework\n    // ignores it.\n\n    Object.defineProperty(element._store, 'validated', {\n      configurable: false,\n      enumerable: false,\n      writable: true,\n      value: false\n    }); // self and source are DEV only properties.\n\n    Object.defineProperty(element, '_self', {\n      configurable: false,\n      enumerable: false,\n      writable: false,\n      value: self\n    }); // Two elements created in two different places should be considered\n    // equal for testing purposes and therefore we hide it from enumeration.\n\n    Object.defineProperty(element, '_source', {\n      configurable: false,\n      enumerable: false,\n      writable: false,\n      value: source\n    });\n\n    if (Object.freeze) {\n      Object.freeze(element.props);\n      Object.freeze(element);\n    }\n  }\n\n  return element;\n};\n/**\n * Create and return a new ReactElement of the given type.\n * See https://reactjs.org/docs/react-api.html#createelement\n */\n\nfunction createElement(type, config, children) {\n  var propName; // Reserved names are extracted\n\n  var props = {};\n  var key = null;\n  var ref = null;\n  var self = null;\n  var source = null;\n\n  if (config != null) {\n    if (hasValidRef(config)) {\n      ref = config.ref;\n\n      {\n        warnIfStringRefCannotBeAutoConverted(config);\n      }\n    }\n\n    if (hasValidKey(config)) {\n      {\n        checkKeyStringCoercion(config.key);\n      }\n\n      key = '' + config.key;\n    }\n\n    self = config.__self === undefined ? null : config.__self;\n    source = config.__source === undefined ? null : config.__source; // Remaining properties are added to a new props object\n\n    for (propName in config) {\n      if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n        props[propName] = config[propName];\n      }\n    }\n  } // Children can be more than one argument, and those are transferred onto\n  // the newly allocated props object.\n\n\n  var childrenLength = arguments.length - 2;\n\n  if (childrenLength === 1) {\n    props.children = children;\n  } else if (childrenLength > 1) {\n    var childArray = Array(childrenLength);\n\n    for (var i = 0; i < childrenLength; i++) {\n      childArray[i] = arguments[i + 2];\n    }\n\n    {\n      if (Object.freeze) {\n        Object.freeze(childArray);\n      }\n    }\n\n    props.children = childArray;\n  } // Resolve default props\n\n\n  if (type && type.defaultProps) {\n    var defaultProps = type.defaultProps;\n\n    for (propName in defaultProps) {\n      if (props[propName] === undefined) {\n        props[propName] = defaultProps[propName];\n      }\n    }\n  }\n\n  {\n    if (key || ref) {\n      var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type;\n\n      if (key) {\n        defineKeyPropWarningGetter(props, displayName);\n      }\n\n      if (ref) {\n        defineRefPropWarningGetter(props, displayName);\n      }\n    }\n  }\n\n  return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props);\n}\nfunction cloneAndReplaceKey(oldElement, newKey) {\n  var newElement = ReactElement(oldElement.type, newKey, oldElement.ref, oldElement._self, oldElement._source, oldElement._owner, oldElement.props);\n  return newElement;\n}\n/**\n * Clone and return a new ReactElement using element as the starting point.\n * See https://reactjs.org/docs/react-api.html#cloneelement\n */\n\nfunction cloneElement(element, config, children) {\n  if (element === null || element === undefined) {\n    throw new Error(\"React.cloneElement(...): The argument must be a React element, but you passed \" + element + \".\");\n  }\n\n  var propName; // Original props are copied\n\n  var props = assign({}, element.props); // Reserved names are extracted\n\n  var key = element.key;\n  var ref = element.ref; // Self is preserved since the owner is preserved.\n\n  var self = element._self; // Source is preserved since cloneElement is unlikely to be targeted by a\n  // transpiler, and the original source is probably a better indicator of the\n  // true owner.\n\n  var source = element._source; // Owner will be preserved, unless ref is overridden\n\n  var owner = element._owner;\n\n  if (config != null) {\n    if (hasValidRef(config)) {\n      // Silently steal the ref from the parent.\n      ref = config.ref;\n      owner = ReactCurrentOwner.current;\n    }\n\n    if (hasValidKey(config)) {\n      {\n        checkKeyStringCoercion(config.key);\n      }\n\n      key = '' + config.key;\n    } // Remaining properties override existing props\n\n\n    var defaultProps;\n\n    if (element.type && element.type.defaultProps) {\n      defaultProps = element.type.defaultProps;\n    }\n\n    for (propName in config) {\n      if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n        if (config[propName] === undefined && defaultProps !== undefined) {\n          // Resolve default props\n          props[propName] = defaultProps[propName];\n        } else {\n          props[propName] = config[propName];\n        }\n      }\n    }\n  } // Children can be more than one argument, and those are transferred onto\n  // the newly allocated props object.\n\n\n  var childrenLength = arguments.length - 2;\n\n  if (childrenLength === 1) {\n    props.children = children;\n  } else if (childrenLength > 1) {\n    var childArray = Array(childrenLength);\n\n    for (var i = 0; i < childrenLength; i++) {\n      childArray[i] = arguments[i + 2];\n    }\n\n    props.children = childArray;\n  }\n\n  return ReactElement(element.type, key, ref, self, source, owner, props);\n}\n/**\n * Verifies the object is a ReactElement.\n * See https://reactjs.org/docs/react-api.html#isvalidelement\n * @param {?object} object\n * @return {boolean} True if `object` is a ReactElement.\n * @final\n */\n\nfunction isValidElement(object) {\n  return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\n\nvar SEPARATOR = '.';\nvar SUBSEPARATOR = ':';\n/**\n * Escape and wrap key so it is safe to use as a reactid\n *\n * @param {string} key to be escaped.\n * @return {string} the escaped key.\n */\n\nfunction escape(key) {\n  var escapeRegex = /[=:]/g;\n  var escaperLookup = {\n    '=': '=0',\n    ':': '=2'\n  };\n  var escapedString = key.replace(escapeRegex, function (match) {\n    return escaperLookup[match];\n  });\n  return '$' + escapedString;\n}\n/**\n * TODO: Test that a single child and an array with one item have the same key\n * pattern.\n */\n\n\nvar didWarnAboutMaps = false;\nvar userProvidedKeyEscapeRegex = /\\/+/g;\n\nfunction escapeUserProvidedKey(text) {\n  return text.replace(userProvidedKeyEscapeRegex, '$&/');\n}\n/**\n * Generate a key string that identifies a element within a set.\n *\n * @param {*} element A element that could contain a manual key.\n * @param {number} index Index that is used if a manual key is not provided.\n * @return {string}\n */\n\n\nfunction getElementKey(element, index) {\n  // Do some typechecking here since we call this blindly. We want to ensure\n  // that we don't block potential future ES APIs.\n  if (typeof element === 'object' && element !== null && element.key != null) {\n    // Explicit key\n    {\n      checkKeyStringCoercion(element.key);\n    }\n\n    return escape('' + element.key);\n  } // Implicit key determined by the index in the set\n\n\n  return index.toString(36);\n}\n\nfunction mapIntoArray(children, array, escapedPrefix, nameSoFar, callback) {\n  var type = typeof children;\n\n  if (type === 'undefined' || type === 'boolean') {\n    // All of the above are perceived as null.\n    children = null;\n  }\n\n  var invokeCallback = false;\n\n  if (children === null) {\n    invokeCallback = true;\n  } else {\n    switch (type) {\n      case 'string':\n      case 'number':\n        invokeCallback = true;\n        break;\n\n      case 'object':\n        switch (children.$$typeof) {\n          case REACT_ELEMENT_TYPE:\n          case REACT_PORTAL_TYPE:\n            invokeCallback = true;\n        }\n\n    }\n  }\n\n  if (invokeCallback) {\n    var _child = children;\n    var mappedChild = callback(_child); // If it's the only child, treat the name as if it was wrapped in an array\n    // so that it's consistent if the number of children grows:\n\n    var childKey = nameSoFar === '' ? SEPARATOR + getElementKey(_child, 0) : nameSoFar;\n\n    if (isArray(mappedChild)) {\n      var escapedChildKey = '';\n\n      if (childKey != null) {\n        escapedChildKey = escapeUserProvidedKey(childKey) + '/';\n      }\n\n      mapIntoArray(mappedChild, array, escapedChildKey, '', function (c) {\n        return c;\n      });\n    } else if (mappedChild != null) {\n      if (isValidElement(mappedChild)) {\n        {\n          // The `if` statement here prevents auto-disabling of the safe\n          // coercion ESLint rule, so we must manually disable it below.\n          // $FlowFixMe Flow incorrectly thinks React.Portal doesn't have a key\n          if (mappedChild.key && (!_child || _child.key !== mappedChild.key)) {\n            checkKeyStringCoercion(mappedChild.key);\n          }\n        }\n\n        mappedChild = cloneAndReplaceKey(mappedChild, // Keep both the (mapped) and old keys if they differ, just as\n        // traverseAllChildren used to do for objects as children\n        escapedPrefix + ( // $FlowFixMe Flow incorrectly thinks React.Portal doesn't have a key\n        mappedChild.key && (!_child || _child.key !== mappedChild.key) ? // $FlowFixMe Flow incorrectly thinks existing element's key can be a number\n        // eslint-disable-next-line react-internal/safe-string-coercion\n        escapeUserProvidedKey('' + mappedChild.key) + '/' : '') + childKey);\n      }\n\n      array.push(mappedChild);\n    }\n\n    return 1;\n  }\n\n  var child;\n  var nextName;\n  var subtreeCount = 0; // Count of children found in the current subtree.\n\n  var nextNamePrefix = nameSoFar === '' ? SEPARATOR : nameSoFar + SUBSEPARATOR;\n\n  if (isArray(children)) {\n    for (var i = 0; i < children.length; i++) {\n      child = children[i];\n      nextName = nextNamePrefix + getElementKey(child, i);\n      subtreeCount += mapIntoArray(child, array, escapedPrefix, nextName, callback);\n    }\n  } else {\n    var iteratorFn = getIteratorFn(children);\n\n    if (typeof iteratorFn === 'function') {\n      var iterableChildren = children;\n\n      {\n        // Warn about using Maps as children\n        if (iteratorFn === iterableChildren.entries) {\n          if (!didWarnAboutMaps) {\n            warn('Using Maps as children is not supported. ' + 'Use an array of keyed ReactElements instead.');\n          }\n\n          didWarnAboutMaps = true;\n        }\n      }\n\n      var iterator = iteratorFn.call(iterableChildren);\n      var step;\n      var ii = 0;\n\n      while (!(step = iterator.next()).done) {\n        child = step.value;\n        nextName = nextNamePrefix + getElementKey(child, ii++);\n        subtreeCount += mapIntoArray(child, array, escapedPrefix, nextName, callback);\n      }\n    } else if (type === 'object') {\n      // eslint-disable-next-line react-internal/safe-string-coercion\n      var childrenString = String(children);\n      throw new Error(\"Objects are not valid as a React child (found: \" + (childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString) + \"). \" + 'If you meant to render a collection of children, use an array ' + 'instead.');\n    }\n  }\n\n  return subtreeCount;\n}\n\n/**\n * Maps children that are typically specified as `props.children`.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrenmap\n *\n * The provided mapFunction(child, index) will be called for each\n * leaf child.\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} func The map function.\n * @param {*} context Context for mapFunction.\n * @return {object} Object containing the ordered map of results.\n */\nfunction mapChildren(children, func, context) {\n  if (children == null) {\n    return children;\n  }\n\n  var result = [];\n  var count = 0;\n  mapIntoArray(children, result, '', '', function (child) {\n    return func.call(context, child, count++);\n  });\n  return result;\n}\n/**\n * Count the number of children that are typically specified as\n * `props.children`.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrencount\n *\n * @param {?*} children Children tree container.\n * @return {number} The number of children.\n */\n\n\nfunction countChildren(children) {\n  var n = 0;\n  mapChildren(children, function () {\n    n++; // Don't return anything\n  });\n  return n;\n}\n\n/**\n * Iterates through children that are typically specified as `props.children`.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrenforeach\n *\n * The provided forEachFunc(child, index) will be called for each\n * leaf child.\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} forEachFunc\n * @param {*} forEachContext Context for forEachContext.\n */\nfunction forEachChildren(children, forEachFunc, forEachContext) {\n  mapChildren(children, function () {\n    forEachFunc.apply(this, arguments); // Don't return anything.\n  }, forEachContext);\n}\n/**\n * Flatten a children object (typically specified as `props.children`) and\n * return an array with appropriately re-keyed children.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrentoarray\n */\n\n\nfunction toArray(children) {\n  return mapChildren(children, function (child) {\n    return child;\n  }) || [];\n}\n/**\n * Returns the first child in a collection of children and verifies that there\n * is only one child in the collection.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrenonly\n *\n * The current implementation of this function assumes that a single child gets\n * passed without a wrapper, but the purpose of this helper function is to\n * abstract away the particular structure of children.\n *\n * @param {?object} children Child collection structure.\n * @return {ReactElement} The first and only `ReactElement` contained in the\n * structure.\n */\n\n\nfunction onlyChild(children) {\n  if (!isValidElement(children)) {\n    throw new Error('React.Children.only expected to receive a single React element child.');\n  }\n\n  return children;\n}\n\nfunction createContext(defaultValue) {\n  // TODO: Second argument used to be an optional `calculateChangedBits`\n  // function. Warn to reserve for future use?\n  var context = {\n    $$typeof: REACT_CONTEXT_TYPE,\n    // As a workaround to support multiple concurrent renderers, we categorize\n    // some renderers as primary and others as secondary. We only expect\n    // there to be two concurrent renderers at most: React Native (primary) and\n    // Fabric (secondary); React DOM (primary) and React ART (secondary).\n    // Secondary renderers store their context values on separate fields.\n    _currentValue: defaultValue,\n    _currentValue2: defaultValue,\n    // Used to track how many concurrent renderers this context currently\n    // supports within in a single renderer. Such as parallel server rendering.\n    _threadCount: 0,\n    // These are circular\n    Provider: null,\n    Consumer: null,\n    // Add these to use same hidden class in VM as ServerContext\n    _defaultValue: null,\n    _globalName: null\n  };\n  context.Provider = {\n    $$typeof: REACT_PROVIDER_TYPE,\n    _context: context\n  };\n  var hasWarnedAboutUsingNestedContextConsumers = false;\n  var hasWarnedAboutUsingConsumerProvider = false;\n  var hasWarnedAboutDisplayNameOnConsumer = false;\n\n  {\n    // A separate object, but proxies back to the original context object for\n    // backwards compatibility. It has a different $$typeof, so we can properly\n    // warn for the incorrect usage of Context as a Consumer.\n    var Consumer = {\n      $$typeof: REACT_CONTEXT_TYPE,\n      _context: context\n    }; // $FlowFixMe: Flow complains about not setting a value, which is intentional here\n\n    Object.defineProperties(Consumer, {\n      Provider: {\n        get: function () {\n          if (!hasWarnedAboutUsingConsumerProvider) {\n            hasWarnedAboutUsingConsumerProvider = true;\n\n            error('Rendering <Context.Consumer.Provider> is not supported and will be removed in ' + 'a future major release. Did you mean to render <Context.Provider> instead?');\n          }\n\n          return context.Provider;\n        },\n        set: function (_Provider) {\n          context.Provider = _Provider;\n        }\n      },\n      _currentValue: {\n        get: function () {\n          return context._currentValue;\n        },\n        set: function (_currentValue) {\n          context._currentValue = _currentValue;\n        }\n      },\n      _currentValue2: {\n        get: function () {\n          return context._currentValue2;\n        },\n        set: function (_currentValue2) {\n          context._currentValue2 = _currentValue2;\n        }\n      },\n      _threadCount: {\n        get: function () {\n          return context._threadCount;\n        },\n        set: function (_threadCount) {\n          context._threadCount = _threadCount;\n        }\n      },\n      Consumer: {\n        get: function () {\n          if (!hasWarnedAboutUsingNestedContextConsumers) {\n            hasWarnedAboutUsingNestedContextConsumers = true;\n\n            error('Rendering <Context.Consumer.Consumer> is not supported and will be removed in ' + 'a future major release. Did you mean to render <Context.Consumer> instead?');\n          }\n\n          return context.Consumer;\n        }\n      },\n      displayName: {\n        get: function () {\n          return context.displayName;\n        },\n        set: function (displayName) {\n          if (!hasWarnedAboutDisplayNameOnConsumer) {\n            warn('Setting `displayName` on Context.Consumer has no effect. ' + \"You should set it directly on the context with Context.displayName = '%s'.\", displayName);\n\n            hasWarnedAboutDisplayNameOnConsumer = true;\n          }\n        }\n      }\n    }); // $FlowFixMe: Flow complains about missing properties because it doesn't understand defineProperty\n\n    context.Consumer = Consumer;\n  }\n\n  {\n    context._currentRenderer = null;\n    context._currentRenderer2 = null;\n  }\n\n  return context;\n}\n\nvar Uninitialized = -1;\nvar Pending = 0;\nvar Resolved = 1;\nvar Rejected = 2;\n\nfunction lazyInitializer(payload) {\n  if (payload._status === Uninitialized) {\n    var ctor = payload._result;\n    var thenable = ctor(); // Transition to the next state.\n    // This might throw either because it's missing or throws. If so, we treat it\n    // as still uninitialized and try again next time. Which is the same as what\n    // happens if the ctor or any wrappers processing the ctor throws. This might\n    // end up fixing it if the resolution was a concurrency bug.\n\n    thenable.then(function (moduleObject) {\n      if (payload._status === Pending || payload._status === Uninitialized) {\n        // Transition to the next state.\n        var resolved = payload;\n        resolved._status = Resolved;\n        resolved._result = moduleObject;\n      }\n    }, function (error) {\n      if (payload._status === Pending || payload._status === Uninitialized) {\n        // Transition to the next state.\n        var rejected = payload;\n        rejected._status = Rejected;\n        rejected._result = error;\n      }\n    });\n\n    if (payload._status === Uninitialized) {\n      // In case, we're still uninitialized, then we're waiting for the thenable\n      // to resolve. Set it as pending in the meantime.\n      var pending = payload;\n      pending._status = Pending;\n      pending._result = thenable;\n    }\n  }\n\n  if (payload._status === Resolved) {\n    var moduleObject = payload._result;\n\n    {\n      if (moduleObject === undefined) {\n        error('lazy: Expected the result of a dynamic imp' + 'ort() call. ' + 'Instead received: %s\\n\\nYour code should look like: \\n  ' + // Break up imports to avoid accidentally parsing them as dependencies.\n        'const MyComponent = lazy(() => imp' + \"ort('./MyComponent'))\\n\\n\" + 'Did you accidentally put curly braces around the import?', moduleObject);\n      }\n    }\n\n    {\n      if (!('default' in moduleObject)) {\n        error('lazy: Expected the result of a dynamic imp' + 'ort() call. ' + 'Instead received: %s\\n\\nYour code should look like: \\n  ' + // Break up imports to avoid accidentally parsing them as dependencies.\n        'const MyComponent = lazy(() => imp' + \"ort('./MyComponent'))\", moduleObject);\n      }\n    }\n\n    return moduleObject.default;\n  } else {\n    throw payload._result;\n  }\n}\n\nfunction lazy(ctor) {\n  var payload = {\n    // We use these fields to store the result.\n    _status: Uninitialized,\n    _result: ctor\n  };\n  var lazyType = {\n    $$typeof: REACT_LAZY_TYPE,\n    _payload: payload,\n    _init: lazyInitializer\n  };\n\n  {\n    // In production, this would just set it on the object.\n    var defaultProps;\n    var propTypes; // $FlowFixMe\n\n    Object.defineProperties(lazyType, {\n      defaultProps: {\n        configurable: true,\n        get: function () {\n          return defaultProps;\n        },\n        set: function (newDefaultProps) {\n          error('React.lazy(...): It is not supported to assign `defaultProps` to ' + 'a lazy component import. Either specify them where the component ' + 'is defined, or create a wrapping component around it.');\n\n          defaultProps = newDefaultProps; // Match production behavior more closely:\n          // $FlowFixMe\n\n          Object.defineProperty(lazyType, 'defaultProps', {\n            enumerable: true\n          });\n        }\n      },\n      propTypes: {\n        configurable: true,\n        get: function () {\n          return propTypes;\n        },\n        set: function (newPropTypes) {\n          error('React.lazy(...): It is not supported to assign `propTypes` to ' + 'a lazy component import. Either specify them where the component ' + 'is defined, or create a wrapping component around it.');\n\n          propTypes = newPropTypes; // Match production behavior more closely:\n          // $FlowFixMe\n\n          Object.defineProperty(lazyType, 'propTypes', {\n            enumerable: true\n          });\n        }\n      }\n    });\n  }\n\n  return lazyType;\n}\n\nfunction forwardRef(render) {\n  {\n    if (render != null && render.$$typeof === REACT_MEMO_TYPE) {\n      error('forwardRef requires a render function but received a `memo` ' + 'component. Instead of forwardRef(memo(...)), use ' + 'memo(forwardRef(...)).');\n    } else if (typeof render !== 'function') {\n      error('forwardRef requires a render function but was given %s.', render === null ? 'null' : typeof render);\n    } else {\n      if (render.length !== 0 && render.length !== 2) {\n        error('forwardRef render functions accept exactly two parameters: props and ref. %s', render.length === 1 ? 'Did you forget to use the ref parameter?' : 'Any additional parameter will be undefined.');\n      }\n    }\n\n    if (render != null) {\n      if (render.defaultProps != null || render.propTypes != null) {\n        error('forwardRef render functions do not support propTypes or defaultProps. ' + 'Did you accidentally pass a React component?');\n      }\n    }\n  }\n\n  var elementType = {\n    $$typeof: REACT_FORWARD_REF_TYPE,\n    render: render\n  };\n\n  {\n    var ownName;\n    Object.defineProperty(elementType, 'displayName', {\n      enumerable: false,\n      configurable: true,\n      get: function () {\n        return ownName;\n      },\n      set: function (name) {\n        ownName = name; // The inner component shouldn't inherit this display name in most cases,\n        // because the component may be used elsewhere.\n        // But it's nice for anonymous functions to inherit the name,\n        // so that our component-stack generation logic will display their frames.\n        // An anonymous function generally suggests a pattern like:\n        //   React.forwardRef((props, ref) => {...});\n        // This kind of inner function is not used elsewhere so the side effect is okay.\n\n        if (!render.name && !render.displayName) {\n          render.displayName = name;\n        }\n      }\n    });\n  }\n\n  return elementType;\n}\n\nvar REACT_MODULE_REFERENCE;\n\n{\n  REACT_MODULE_REFERENCE = Symbol.for('react.module.reference');\n}\n\nfunction isValidElementType(type) {\n  if (typeof type === 'string' || typeof type === 'function') {\n    return true;\n  } // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill).\n\n\n  if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing  || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden  || type === REACT_OFFSCREEN_TYPE || enableScopeAPI  || enableCacheElement  || enableTransitionTracing ) {\n    return true;\n  }\n\n  if (typeof type === 'object' && type !== null) {\n    if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object\n    // types supported by any Flight configuration anywhere since\n    // we don't know which Flight build this will end up being used\n    // with.\n    type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== undefined) {\n      return true;\n    }\n  }\n\n  return false;\n}\n\nfunction memo(type, compare) {\n  {\n    if (!isValidElementType(type)) {\n      error('memo: The first argument must be a component. Instead ' + 'received: %s', type === null ? 'null' : typeof type);\n    }\n  }\n\n  var elementType = {\n    $$typeof: REACT_MEMO_TYPE,\n    type: type,\n    compare: compare === undefined ? null : compare\n  };\n\n  {\n    var ownName;\n    Object.defineProperty(elementType, 'displayName', {\n      enumerable: false,\n      configurable: true,\n      get: function () {\n        return ownName;\n      },\n      set: function (name) {\n        ownName = name; // The inner component shouldn't inherit this display name in most cases,\n        // because the component may be used elsewhere.\n        // But it's nice for anonymous functions to inherit the name,\n        // so that our component-stack generation logic will display their frames.\n        // An anonymous function generally suggests a pattern like:\n        //   React.memo((props) => {...});\n        // This kind of inner function is not used elsewhere so the side effect is okay.\n\n        if (!type.name && !type.displayName) {\n          type.displayName = name;\n        }\n      }\n    });\n  }\n\n  return elementType;\n}\n\nfunction resolveDispatcher() {\n  var dispatcher = ReactCurrentDispatcher.current;\n\n  {\n    if (dispatcher === null) {\n      error('Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for' + ' one of the following reasons:\\n' + '1. You might have mismatching versions of React and the renderer (such as React DOM)\\n' + '2. You might be breaking the Rules of Hooks\\n' + '3. You might have more than one copy of React in the same app\\n' + 'See https://reactjs.org/link/invalid-hook-call for tips about how to debug and fix this problem.');\n    }\n  } // Will result in a null access error if accessed outside render phase. We\n  // intentionally don't throw our own error because this is in a hot path.\n  // Also helps ensure this is inlined.\n\n\n  return dispatcher;\n}\nfunction useContext(Context) {\n  var dispatcher = resolveDispatcher();\n\n  {\n    // TODO: add a more generic warning for invalid values.\n    if (Context._context !== undefined) {\n      var realContext = Context._context; // Don't deduplicate because this legitimately causes bugs\n      // and nobody should be using this in existing code.\n\n      if (realContext.Consumer === Context) {\n        error('Calling useContext(Context.Consumer) is not supported, may cause bugs, and will be ' + 'removed in a future major release. Did you mean to call useContext(Context) instead?');\n      } else if (realContext.Provider === Context) {\n        error('Calling useContext(Context.Provider) is not supported. ' + 'Did you mean to call useContext(Context) instead?');\n      }\n    }\n  }\n\n  return dispatcher.useContext(Context);\n}\nfunction useState(initialState) {\n  var dispatcher = resolveDispatcher();\n  return dispatcher.useState(initialState);\n}\nfunction useReducer(reducer, initialArg, init) {\n  var dispatcher = resolveDispatcher();\n  return dispatcher.useReducer(reducer, initialArg, init);\n}\nfunction useRef(initialValue) {\n  var dispatcher = resolveDispatcher();\n  return dispatcher.useRef(initialValue);\n}\nfunction useEffect(create, deps) {\n  var dispatcher = resolveDispatcher();\n  return dispatcher.useEffect(create, deps);\n}\nfunction useInsertionEffect(create, deps) {\n  var dispatcher = resolveDispatcher();\n  return dispatcher.useInsertionEffect(create, deps);\n}\nfunction useLayoutEffect(create, deps) {\n  var dispatcher = resolveDispatcher();\n  return dispatcher.useLayoutEffect(create, deps);\n}\nfunction useCallback(callback, deps) {\n  var dispatcher = resolveDispatcher();\n  return dispatcher.useCallback(callback, deps);\n}\nfunction useMemo(create, deps) {\n  var dispatcher = resolveDispatcher();\n  return dispatcher.useMemo(create, deps);\n}\nfunction useImperativeHandle(ref, create, deps) {\n  var dispatcher = resolveDispatcher();\n  return dispatcher.useImperativeHandle(ref, create, deps);\n}\nfunction useDebugValue(value, formatterFn) {\n  {\n    var dispatcher = resolveDispatcher();\n    return dispatcher.useDebugValue(value, formatterFn);\n  }\n}\nfunction useTransition() {\n  var dispatcher = resolveDispatcher();\n  return dispatcher.useTransition();\n}\nfunction useDeferredValue(value) {\n  var dispatcher = resolveDispatcher();\n  return dispatcher.useDeferredValue(value);\n}\nfunction useId() {\n  var dispatcher = resolveDispatcher();\n  return dispatcher.useId();\n}\nfunction useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot) {\n  var dispatcher = resolveDispatcher();\n  return dispatcher.useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n}\n\n// Helpers to patch console.logs to avoid logging during side-effect free\n// replaying on render function. This currently only patches the object\n// lazily which won't cover if the log function was extracted eagerly.\n// We could also eagerly patch the method.\nvar disabledDepth = 0;\nvar prevLog;\nvar prevInfo;\nvar prevWarn;\nvar prevError;\nvar prevGroup;\nvar prevGroupCollapsed;\nvar prevGroupEnd;\n\nfunction disabledLog() {}\n\ndisabledLog.__reactDisabledLog = true;\nfunction disableLogs() {\n  {\n    if (disabledDepth === 0) {\n      /* eslint-disable react-internal/no-production-logging */\n      prevLog = console.log;\n      prevInfo = console.info;\n      prevWarn = console.warn;\n      prevError = console.error;\n      prevGroup = console.group;\n      prevGroupCollapsed = console.groupCollapsed;\n      prevGroupEnd = console.groupEnd; // https://github.com/facebook/react/issues/19099\n\n      var props = {\n        configurable: true,\n        enumerable: true,\n        value: disabledLog,\n        writable: true\n      }; // $FlowFixMe Flow thinks console is immutable.\n\n      Object.defineProperties(console, {\n        info: props,\n        log: props,\n        warn: props,\n        error: props,\n        group: props,\n        groupCollapsed: props,\n        groupEnd: props\n      });\n      /* eslint-enable react-internal/no-production-logging */\n    }\n\n    disabledDepth++;\n  }\n}\nfunction reenableLogs() {\n  {\n    disabledDepth--;\n\n    if (disabledDepth === 0) {\n      /* eslint-disable react-internal/no-production-logging */\n      var props = {\n        configurable: true,\n        enumerable: true,\n        writable: true\n      }; // $FlowFixMe Flow thinks console is immutable.\n\n      Object.defineProperties(console, {\n        log: assign({}, props, {\n          value: prevLog\n        }),\n        info: assign({}, props, {\n          value: prevInfo\n        }),\n        warn: assign({}, props, {\n          value: prevWarn\n        }),\n        error: assign({}, props, {\n          value: prevError\n        }),\n        group: assign({}, props, {\n          value: prevGroup\n        }),\n        groupCollapsed: assign({}, props, {\n          value: prevGroupCollapsed\n        }),\n        groupEnd: assign({}, props, {\n          value: prevGroupEnd\n        })\n      });\n      /* eslint-enable react-internal/no-production-logging */\n    }\n\n    if (disabledDepth < 0) {\n      error('disabledDepth fell below zero. ' + 'This is a bug in React. Please file an issue.');\n    }\n  }\n}\n\nvar ReactCurrentDispatcher$1 = ReactSharedInternals.ReactCurrentDispatcher;\nvar prefix;\nfunction describeBuiltInComponentFrame(name, source, ownerFn) {\n  {\n    if (prefix === undefined) {\n      // Extract the VM specific prefix used by each line.\n      try {\n        throw Error();\n      } catch (x) {\n        var match = x.stack.trim().match(/\\n( *(at )?)/);\n        prefix = match && match[1] || '';\n      }\n    } // We use the prefix to ensure our stacks line up with native stack frames.\n\n\n    return '\\n' + prefix + name;\n  }\n}\nvar reentry = false;\nvar componentFrameCache;\n\n{\n  var PossiblyWeakMap = typeof WeakMap === 'function' ? WeakMap : Map;\n  componentFrameCache = new PossiblyWeakMap();\n}\n\nfunction describeNativeComponentFrame(fn, construct) {\n  // If something asked for a stack inside a fake render, it should get ignored.\n  if ( !fn || reentry) {\n    return '';\n  }\n\n  {\n    var frame = componentFrameCache.get(fn);\n\n    if (frame !== undefined) {\n      return frame;\n    }\n  }\n\n  var control;\n  reentry = true;\n  var previousPrepareStackTrace = Error.prepareStackTrace; // $FlowFixMe It does accept undefined.\n\n  Error.prepareStackTrace = undefined;\n  var previousDispatcher;\n\n  {\n    previousDispatcher = ReactCurrentDispatcher$1.current; // Set the dispatcher in DEV because this might be call in the render function\n    // for warnings.\n\n    ReactCurrentDispatcher$1.current = null;\n    disableLogs();\n  }\n\n  try {\n    // This should throw.\n    if (construct) {\n      // Something should be setting the props in the constructor.\n      var Fake = function () {\n        throw Error();\n      }; // $FlowFixMe\n\n\n      Object.defineProperty(Fake.prototype, 'props', {\n        set: function () {\n          // We use a throwing setter instead of frozen or non-writable props\n          // because that won't throw in a non-strict mode function.\n          throw Error();\n        }\n      });\n\n      if (typeof Reflect === 'object' && Reflect.construct) {\n        // We construct a different control for this case to include any extra\n        // frames added by the construct call.\n        try {\n          Reflect.construct(Fake, []);\n        } catch (x) {\n          control = x;\n        }\n\n        Reflect.construct(fn, [], Fake);\n      } else {\n        try {\n          Fake.call();\n        } catch (x) {\n          control = x;\n        }\n\n        fn.call(Fake.prototype);\n      }\n    } else {\n      try {\n        throw Error();\n      } catch (x) {\n        control = x;\n      }\n\n      fn();\n    }\n  } catch (sample) {\n    // This is inlined manually because closure doesn't do it for us.\n    if (sample && control && typeof sample.stack === 'string') {\n      // This extracts the first frame from the sample that isn't also in the control.\n      // Skipping one frame that we assume is the frame that calls the two.\n      var sampleLines = sample.stack.split('\\n');\n      var controlLines = control.stack.split('\\n');\n      var s = sampleLines.length - 1;\n      var c = controlLines.length - 1;\n\n      while (s >= 1 && c >= 0 && sampleLines[s] !== controlLines[c]) {\n        // We expect at least one stack frame to be shared.\n        // Typically this will be the root most one. However, stack frames may be\n        // cut off due to maximum stack limits. In this case, one maybe cut off\n        // earlier than the other. We assume that the sample is longer or the same\n        // and there for cut off earlier. So we should find the root most frame in\n        // the sample somewhere in the control.\n        c--;\n      }\n\n      for (; s >= 1 && c >= 0; s--, c--) {\n        // Next we find the first one that isn't the same which should be the\n        // frame that called our sample function and the control.\n        if (sampleLines[s] !== controlLines[c]) {\n          // In V8, the first line is describing the message but other VMs don't.\n          // If we're about to return the first line, and the control is also on the same\n          // line, that's a pretty good indicator that our sample threw at same line as\n          // the control. I.e. before we entered the sample frame. So we ignore this result.\n          // This can happen if you passed a class to function component, or non-function.\n          if (s !== 1 || c !== 1) {\n            do {\n              s--;\n              c--; // We may still have similar intermediate frames from the construct call.\n              // The next one that isn't the same should be our match though.\n\n              if (c < 0 || sampleLines[s] !== controlLines[c]) {\n                // V8 adds a \"new\" prefix for native classes. Let's remove it to make it prettier.\n                var _frame = '\\n' + sampleLines[s].replace(' at new ', ' at '); // If our component frame is labeled \"<anonymous>\"\n                // but we have a user-provided \"displayName\"\n                // splice it in to make the stack more readable.\n\n\n                if (fn.displayName && _frame.includes('<anonymous>')) {\n                  _frame = _frame.replace('<anonymous>', fn.displayName);\n                }\n\n                {\n                  if (typeof fn === 'function') {\n                    componentFrameCache.set(fn, _frame);\n                  }\n                } // Return the line we found.\n\n\n                return _frame;\n              }\n            } while (s >= 1 && c >= 0);\n          }\n\n          break;\n        }\n      }\n    }\n  } finally {\n    reentry = false;\n\n    {\n      ReactCurrentDispatcher$1.current = previousDispatcher;\n      reenableLogs();\n    }\n\n    Error.prepareStackTrace = previousPrepareStackTrace;\n  } // Fallback to just using the name if we couldn't make it throw.\n\n\n  var name = fn ? fn.displayName || fn.name : '';\n  var syntheticFrame = name ? describeBuiltInComponentFrame(name) : '';\n\n  {\n    if (typeof fn === 'function') {\n      componentFrameCache.set(fn, syntheticFrame);\n    }\n  }\n\n  return syntheticFrame;\n}\nfunction describeFunctionComponentFrame(fn, source, ownerFn) {\n  {\n    return describeNativeComponentFrame(fn, false);\n  }\n}\n\nfunction shouldConstruct(Component) {\n  var prototype = Component.prototype;\n  return !!(prototype && prototype.isReactComponent);\n}\n\nfunction describeUnknownElementTypeFrameInDEV(type, source, ownerFn) {\n\n  if (type == null) {\n    return '';\n  }\n\n  if (typeof type === 'function') {\n    {\n      return describeNativeComponentFrame(type, shouldConstruct(type));\n    }\n  }\n\n  if (typeof type === 'string') {\n    return describeBuiltInComponentFrame(type);\n  }\n\n  switch (type) {\n    case REACT_SUSPENSE_TYPE:\n      return describeBuiltInComponentFrame('Suspense');\n\n    case REACT_SUSPENSE_LIST_TYPE:\n      return describeBuiltInComponentFrame('SuspenseList');\n  }\n\n  if (typeof type === 'object') {\n    switch (type.$$typeof) {\n      case REACT_FORWARD_REF_TYPE:\n        return describeFunctionComponentFrame(type.render);\n\n      case REACT_MEMO_TYPE:\n        // Memo may contain any component type so we recursively resolve it.\n        return describeUnknownElementTypeFrameInDEV(type.type, source, ownerFn);\n\n      case REACT_LAZY_TYPE:\n        {\n          var lazyComponent = type;\n          var payload = lazyComponent._payload;\n          var init = lazyComponent._init;\n\n          try {\n            // Lazy may contain any component type so we recursively resolve it.\n            return describeUnknownElementTypeFrameInDEV(init(payload), source, ownerFn);\n          } catch (x) {}\n        }\n    }\n  }\n\n  return '';\n}\n\nvar loggedTypeFailures = {};\nvar ReactDebugCurrentFrame$1 = ReactSharedInternals.ReactDebugCurrentFrame;\n\nfunction setCurrentlyValidatingElement(element) {\n  {\n    if (element) {\n      var owner = element._owner;\n      var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n      ReactDebugCurrentFrame$1.setExtraStackFrame(stack);\n    } else {\n      ReactDebugCurrentFrame$1.setExtraStackFrame(null);\n    }\n  }\n}\n\nfunction checkPropTypes(typeSpecs, values, location, componentName, element) {\n  {\n    // $FlowFixMe This is okay but Flow doesn't know it.\n    var has = Function.call.bind(hasOwnProperty);\n\n    for (var typeSpecName in typeSpecs) {\n      if (has(typeSpecs, typeSpecName)) {\n        var error$1 = void 0; // Prop type validation may throw. In case they do, we don't want to\n        // fail the render phase where it didn't fail before. So we log it.\n        // After these have been cleaned up, we'll let them throw.\n\n        try {\n          // This is intentionally an invariant that gets caught. It's the same\n          // behavior as without this statement except with a better message.\n          if (typeof typeSpecs[typeSpecName] !== 'function') {\n            // eslint-disable-next-line react-internal/prod-error-codes\n            var err = Error((componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' + 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.');\n            err.name = 'Invariant Violation';\n            throw err;\n          }\n\n          error$1 = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED');\n        } catch (ex) {\n          error$1 = ex;\n        }\n\n        if (error$1 && !(error$1 instanceof Error)) {\n          setCurrentlyValidatingElement(element);\n\n          error('%s: type specification of %s' + ' `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error$1);\n\n          setCurrentlyValidatingElement(null);\n        }\n\n        if (error$1 instanceof Error && !(error$1.message in loggedTypeFailures)) {\n          // Only monitor this failure once because there tends to be a lot of the\n          // same error.\n          loggedTypeFailures[error$1.message] = true;\n          setCurrentlyValidatingElement(element);\n\n          error('Failed %s type: %s', location, error$1.message);\n\n          setCurrentlyValidatingElement(null);\n        }\n      }\n    }\n  }\n}\n\nfunction setCurrentlyValidatingElement$1(element) {\n  {\n    if (element) {\n      var owner = element._owner;\n      var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n      setExtraStackFrame(stack);\n    } else {\n      setExtraStackFrame(null);\n    }\n  }\n}\n\nvar propTypesMisspellWarningShown;\n\n{\n  propTypesMisspellWarningShown = false;\n}\n\nfunction getDeclarationErrorAddendum() {\n  if (ReactCurrentOwner.current) {\n    var name = getComponentNameFromType(ReactCurrentOwner.current.type);\n\n    if (name) {\n      return '\\n\\nCheck the render method of `' + name + '`.';\n    }\n  }\n\n  return '';\n}\n\nfunction getSourceInfoErrorAddendum(source) {\n  if (source !== undefined) {\n    var fileName = source.fileName.replace(/^.*[\\\\\\/]/, '');\n    var lineNumber = source.lineNumber;\n    return '\\n\\nCheck your code at ' + fileName + ':' + lineNumber + '.';\n  }\n\n  return '';\n}\n\nfunction getSourceInfoErrorAddendumForProps(elementProps) {\n  if (elementProps !== null && elementProps !== undefined) {\n    return getSourceInfoErrorAddendum(elementProps.__source);\n  }\n\n  return '';\n}\n/**\n * Warn if there's no key explicitly set on dynamic arrays of children or\n * object keys are not valid. This allows us to keep track of children between\n * updates.\n */\n\n\nvar ownerHasKeyUseWarning = {};\n\nfunction getCurrentComponentErrorInfo(parentType) {\n  var info = getDeclarationErrorAddendum();\n\n  if (!info) {\n    var parentName = typeof parentType === 'string' ? parentType : parentType.displayName || parentType.name;\n\n    if (parentName) {\n      info = \"\\n\\nCheck the top-level render call using <\" + parentName + \">.\";\n    }\n  }\n\n  return info;\n}\n/**\n * Warn if the element doesn't have an explicit key assigned to it.\n * This element is in an array. The array could grow and shrink or be\n * reordered. All children that haven't already been validated are required to\n * have a \"key\" property assigned to it. Error statuses are cached so a warning\n * will only be shown once.\n *\n * @internal\n * @param {ReactElement} element Element that requires a key.\n * @param {*} parentType element's parent's type.\n */\n\n\nfunction validateExplicitKey(element, parentType) {\n  if (!element._store || element._store.validated || element.key != null) {\n    return;\n  }\n\n  element._store.validated = true;\n  var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType);\n\n  if (ownerHasKeyUseWarning[currentComponentErrorInfo]) {\n    return;\n  }\n\n  ownerHasKeyUseWarning[currentComponentErrorInfo] = true; // Usually the current owner is the offender, but if it accepts children as a\n  // property, it may be the creator of the child that's responsible for\n  // assigning it a key.\n\n  var childOwner = '';\n\n  if (element && element._owner && element._owner !== ReactCurrentOwner.current) {\n    // Give the component that originally created this child.\n    childOwner = \" It was passed a child from \" + getComponentNameFromType(element._owner.type) + \".\";\n  }\n\n  {\n    setCurrentlyValidatingElement$1(element);\n\n    error('Each child in a list should have a unique \"key\" prop.' + '%s%s See https://reactjs.org/link/warning-keys for more information.', currentComponentErrorInfo, childOwner);\n\n    setCurrentlyValidatingElement$1(null);\n  }\n}\n/**\n * Ensure that every element either is passed in a static location, in an\n * array with an explicit keys property defined, or in an object literal\n * with valid key property.\n *\n * @internal\n * @param {ReactNode} node Statically passed child of any type.\n * @param {*} parentType node's parent's type.\n */\n\n\nfunction validateChildKeys(node, parentType) {\n  if (typeof node !== 'object') {\n    return;\n  }\n\n  if (isArray(node)) {\n    for (var i = 0; i < node.length; i++) {\n      var child = node[i];\n\n      if (isValidElement(child)) {\n        validateExplicitKey(child, parentType);\n      }\n    }\n  } else if (isValidElement(node)) {\n    // This element was passed in a valid location.\n    if (node._store) {\n      node._store.validated = true;\n    }\n  } else if (node) {\n    var iteratorFn = getIteratorFn(node);\n\n    if (typeof iteratorFn === 'function') {\n      // Entry iterators used to provide implicit keys,\n      // but now we print a separate warning for them later.\n      if (iteratorFn !== node.entries) {\n        var iterator = iteratorFn.call(node);\n        var step;\n\n        while (!(step = iterator.next()).done) {\n          if (isValidElement(step.value)) {\n            validateExplicitKey(step.value, parentType);\n          }\n        }\n      }\n    }\n  }\n}\n/**\n * Given an element, validate that its props follow the propTypes definition,\n * provided by the type.\n *\n * @param {ReactElement} element\n */\n\n\nfunction validatePropTypes(element) {\n  {\n    var type = element.type;\n\n    if (type === null || type === undefined || typeof type === 'string') {\n      return;\n    }\n\n    var propTypes;\n\n    if (typeof type === 'function') {\n      propTypes = type.propTypes;\n    } else if (typeof type === 'object' && (type.$$typeof === REACT_FORWARD_REF_TYPE || // Note: Memo only checks outer props here.\n    // Inner props are checked in the reconciler.\n    type.$$typeof === REACT_MEMO_TYPE)) {\n      propTypes = type.propTypes;\n    } else {\n      return;\n    }\n\n    if (propTypes) {\n      // Intentionally inside to avoid triggering lazy initializers:\n      var name = getComponentNameFromType(type);\n      checkPropTypes(propTypes, element.props, 'prop', name, element);\n    } else if (type.PropTypes !== undefined && !propTypesMisspellWarningShown) {\n      propTypesMisspellWarningShown = true; // Intentionally inside to avoid triggering lazy initializers:\n\n      var _name = getComponentNameFromType(type);\n\n      error('Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?', _name || 'Unknown');\n    }\n\n    if (typeof type.getDefaultProps === 'function' && !type.getDefaultProps.isReactClassApproved) {\n      error('getDefaultProps is only used on classic React.createClass ' + 'definitions. Use a static property named `defaultProps` instead.');\n    }\n  }\n}\n/**\n * Given a fragment, validate that it can only be provided with fragment props\n * @param {ReactElement} fragment\n */\n\n\nfunction validateFragmentProps(fragment) {\n  {\n    var keys = Object.keys(fragment.props);\n\n    for (var i = 0; i < keys.length; i++) {\n      var key = keys[i];\n\n      if (key !== 'children' && key !== 'key') {\n        setCurrentlyValidatingElement$1(fragment);\n\n        error('Invalid prop `%s` supplied to `React.Fragment`. ' + 'React.Fragment can only have `key` and `children` props.', key);\n\n        setCurrentlyValidatingElement$1(null);\n        break;\n      }\n    }\n\n    if (fragment.ref !== null) {\n      setCurrentlyValidatingElement$1(fragment);\n\n      error('Invalid attribute `ref` supplied to `React.Fragment`.');\n\n      setCurrentlyValidatingElement$1(null);\n    }\n  }\n}\nfunction createElementWithValidation(type, props, children) {\n  var validType = isValidElementType(type); // We warn in this case but don't throw. We expect the element creation to\n  // succeed and there will likely be errors in render.\n\n  if (!validType) {\n    var info = '';\n\n    if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) {\n      info += ' You likely forgot to export your component from the file ' + \"it's defined in, or you might have mixed up default and named imports.\";\n    }\n\n    var sourceInfo = getSourceInfoErrorAddendumForProps(props);\n\n    if (sourceInfo) {\n      info += sourceInfo;\n    } else {\n      info += getDeclarationErrorAddendum();\n    }\n\n    var typeString;\n\n    if (type === null) {\n      typeString = 'null';\n    } else if (isArray(type)) {\n      typeString = 'array';\n    } else if (type !== undefined && type.$$typeof === REACT_ELEMENT_TYPE) {\n      typeString = \"<\" + (getComponentNameFromType(type.type) || 'Unknown') + \" />\";\n      info = ' Did you accidentally export a JSX literal instead of a component?';\n    } else {\n      typeString = typeof type;\n    }\n\n    {\n      error('React.createElement: type is invalid -- expected a string (for ' + 'built-in components) or a class/function (for composite ' + 'components) but got: %s.%s', typeString, info);\n    }\n  }\n\n  var element = createElement.apply(this, arguments); // The result can be nullish if a mock or a custom function is used.\n  // TODO: Drop this when these are no longer allowed as the type argument.\n\n  if (element == null) {\n    return element;\n  } // Skip key warning if the type isn't valid since our key validation logic\n  // doesn't expect a non-string/function type and can throw confusing errors.\n  // We don't want exception behavior to differ between dev and prod.\n  // (Rendering will throw with a helpful message and as soon as the type is\n  // fixed, the key warnings will appear.)\n\n\n  if (validType) {\n    for (var i = 2; i < arguments.length; i++) {\n      validateChildKeys(arguments[i], type);\n    }\n  }\n\n  if (type === REACT_FRAGMENT_TYPE) {\n    validateFragmentProps(element);\n  } else {\n    validatePropTypes(element);\n  }\n\n  return element;\n}\nvar didWarnAboutDeprecatedCreateFactory = false;\nfunction createFactoryWithValidation(type) {\n  var validatedFactory = createElementWithValidation.bind(null, type);\n  validatedFactory.type = type;\n\n  {\n    if (!didWarnAboutDeprecatedCreateFactory) {\n      didWarnAboutDeprecatedCreateFactory = true;\n\n      warn('React.createFactory() is deprecated and will be removed in ' + 'a future major release. Consider using JSX ' + 'or use React.createElement() directly instead.');\n    } // Legacy hook: remove it\n\n\n    Object.defineProperty(validatedFactory, 'type', {\n      enumerable: false,\n      get: function () {\n        warn('Factory.type is deprecated. Access the class directly ' + 'before passing it to createFactory.');\n\n        Object.defineProperty(this, 'type', {\n          value: type\n        });\n        return type;\n      }\n    });\n  }\n\n  return validatedFactory;\n}\nfunction cloneElementWithValidation(element, props, children) {\n  var newElement = cloneElement.apply(this, arguments);\n\n  for (var i = 2; i < arguments.length; i++) {\n    validateChildKeys(arguments[i], newElement.type);\n  }\n\n  validatePropTypes(newElement);\n  return newElement;\n}\n\nfunction startTransition(scope, options) {\n  var prevTransition = ReactCurrentBatchConfig.transition;\n  ReactCurrentBatchConfig.transition = {};\n  var currentTransition = ReactCurrentBatchConfig.transition;\n\n  {\n    ReactCurrentBatchConfig.transition._updatedFibers = new Set();\n  }\n\n  try {\n    scope();\n  } finally {\n    ReactCurrentBatchConfig.transition = prevTransition;\n\n    {\n      if (prevTransition === null && currentTransition._updatedFibers) {\n        var updatedFibersCount = currentTransition._updatedFibers.size;\n\n        if (updatedFibersCount > 10) {\n          warn('Detected a large number of updates inside startTransition. ' + 'If this is due to a subscription please re-write it to use React provided hooks. ' + 'Otherwise concurrent mode guarantees are off the table.');\n        }\n\n        currentTransition._updatedFibers.clear();\n      }\n    }\n  }\n}\n\nvar didWarnAboutMessageChannel = false;\nvar enqueueTaskImpl = null;\nfunction enqueueTask(task) {\n  if (enqueueTaskImpl === null) {\n    try {\n      // read require off the module object to get around the bundlers.\n      // we don't want them to detect a require and bundle a Node polyfill.\n      var requireString = ('require' + Math.random()).slice(0, 7);\n      var nodeRequire = module && module[requireString]; // assuming we're in node, let's try to get node's\n      // version of setImmediate, bypassing fake timers if any.\n\n      enqueueTaskImpl = nodeRequire.call(module, 'timers').setImmediate;\n    } catch (_err) {\n      // we're in a browser\n      // we can't use regular timers because they may still be faked\n      // so we try MessageChannel+postMessage instead\n      enqueueTaskImpl = function (callback) {\n        {\n          if (didWarnAboutMessageChannel === false) {\n            didWarnAboutMessageChannel = true;\n\n            if (typeof MessageChannel === 'undefined') {\n              error('This browser does not have a MessageChannel implementation, ' + 'so enqueuing tasks via await act(async () => ...) will fail. ' + 'Please file an issue at https://github.com/facebook/react/issues ' + 'if you encounter this warning.');\n            }\n          }\n        }\n\n        var channel = new MessageChannel();\n        channel.port1.onmessage = callback;\n        channel.port2.postMessage(undefined);\n      };\n    }\n  }\n\n  return enqueueTaskImpl(task);\n}\n\nvar actScopeDepth = 0;\nvar didWarnNoAwaitAct = false;\nfunction act(callback) {\n  {\n    // `act` calls can be nested, so we track the depth. This represents the\n    // number of `act` scopes on the stack.\n    var prevActScopeDepth = actScopeDepth;\n    actScopeDepth++;\n\n    if (ReactCurrentActQueue.current === null) {\n      // This is the outermost `act` scope. Initialize the queue. The reconciler\n      // will detect the queue and use it instead of Scheduler.\n      ReactCurrentActQueue.current = [];\n    }\n\n    var prevIsBatchingLegacy = ReactCurrentActQueue.isBatchingLegacy;\n    var result;\n\n    try {\n      // Used to reproduce behavior of `batchedUpdates` in legacy mode. Only\n      // set to `true` while the given callback is executed, not for updates\n      // triggered during an async event, because this is how the legacy\n      // implementation of `act` behaved.\n      ReactCurrentActQueue.isBatchingLegacy = true;\n      result = callback(); // Replicate behavior of original `act` implementation in legacy mode,\n      // which flushed updates immediately after the scope function exits, even\n      // if it's an async function.\n\n      if (!prevIsBatchingLegacy && ReactCurrentActQueue.didScheduleLegacyUpdate) {\n        var queue = ReactCurrentActQueue.current;\n\n        if (queue !== null) {\n          ReactCurrentActQueue.didScheduleLegacyUpdate = false;\n          flushActQueue(queue);\n        }\n      }\n    } catch (error) {\n      popActScope(prevActScopeDepth);\n      throw error;\n    } finally {\n      ReactCurrentActQueue.isBatchingLegacy = prevIsBatchingLegacy;\n    }\n\n    if (result !== null && typeof result === 'object' && typeof result.then === 'function') {\n      var thenableResult = result; // The callback is an async function (i.e. returned a promise). Wait\n      // for it to resolve before exiting the current scope.\n\n      var wasAwaited = false;\n      var thenable = {\n        then: function (resolve, reject) {\n          wasAwaited = true;\n          thenableResult.then(function (returnValue) {\n            popActScope(prevActScopeDepth);\n\n            if (actScopeDepth === 0) {\n              // We've exited the outermost act scope. Recursively flush the\n              // queue until there's no remaining work.\n              recursivelyFlushAsyncActWork(returnValue, resolve, reject);\n            } else {\n              resolve(returnValue);\n            }\n          }, function (error) {\n            // The callback threw an error.\n            popActScope(prevActScopeDepth);\n            reject(error);\n          });\n        }\n      };\n\n      {\n        if (!didWarnNoAwaitAct && typeof Promise !== 'undefined') {\n          // eslint-disable-next-line no-undef\n          Promise.resolve().then(function () {}).then(function () {\n            if (!wasAwaited) {\n              didWarnNoAwaitAct = true;\n\n              error('You called act(async () => ...) without await. ' + 'This could lead to unexpected testing behaviour, ' + 'interleaving multiple act calls and mixing their ' + 'scopes. ' + 'You should - await act(async () => ...);');\n            }\n          });\n        }\n      }\n\n      return thenable;\n    } else {\n      var returnValue = result; // The callback is not an async function. Exit the current scope\n      // immediately, without awaiting.\n\n      popActScope(prevActScopeDepth);\n\n      if (actScopeDepth === 0) {\n        // Exiting the outermost act scope. Flush the queue.\n        var _queue = ReactCurrentActQueue.current;\n\n        if (_queue !== null) {\n          flushActQueue(_queue);\n          ReactCurrentActQueue.current = null;\n        } // Return a thenable. If the user awaits it, we'll flush again in\n        // case additional work was scheduled by a microtask.\n\n\n        var _thenable = {\n          then: function (resolve, reject) {\n            // Confirm we haven't re-entered another `act` scope, in case\n            // the user does something weird like await the thenable\n            // multiple times.\n            if (ReactCurrentActQueue.current === null) {\n              // Recursively flush the queue until there's no remaining work.\n              ReactCurrentActQueue.current = [];\n              recursivelyFlushAsyncActWork(returnValue, resolve, reject);\n            } else {\n              resolve(returnValue);\n            }\n          }\n        };\n        return _thenable;\n      } else {\n        // Since we're inside a nested `act` scope, the returned thenable\n        // immediately resolves. The outer scope will flush the queue.\n        var _thenable2 = {\n          then: function (resolve, reject) {\n            resolve(returnValue);\n          }\n        };\n        return _thenable2;\n      }\n    }\n  }\n}\n\nfunction popActScope(prevActScopeDepth) {\n  {\n    if (prevActScopeDepth !== actScopeDepth - 1) {\n      error('You seem to have overlapping act() calls, this is not supported. ' + 'Be sure to await previous act() calls before making a new one. ');\n    }\n\n    actScopeDepth = prevActScopeDepth;\n  }\n}\n\nfunction recursivelyFlushAsyncActWork(returnValue, resolve, reject) {\n  {\n    var queue = ReactCurrentActQueue.current;\n\n    if (queue !== null) {\n      try {\n        flushActQueue(queue);\n        enqueueTask(function () {\n          if (queue.length === 0) {\n            // No additional work was scheduled. Finish.\n            ReactCurrentActQueue.current = null;\n            resolve(returnValue);\n          } else {\n            // Keep flushing work until there's none left.\n            recursivelyFlushAsyncActWork(returnValue, resolve, reject);\n          }\n        });\n      } catch (error) {\n        reject(error);\n      }\n    } else {\n      resolve(returnValue);\n    }\n  }\n}\n\nvar isFlushing = false;\n\nfunction flushActQueue(queue) {\n  {\n    if (!isFlushing) {\n      // Prevent re-entrance.\n      isFlushing = true;\n      var i = 0;\n\n      try {\n        for (; i < queue.length; i++) {\n          var callback = queue[i];\n\n          do {\n            callback = callback(true);\n          } while (callback !== null);\n        }\n\n        queue.length = 0;\n      } catch (error) {\n        // If something throws, leave the remaining callbacks on the queue.\n        queue = queue.slice(i + 1);\n        throw error;\n      } finally {\n        isFlushing = false;\n      }\n    }\n  }\n}\n\nvar createElement$1 =  createElementWithValidation ;\nvar cloneElement$1 =  cloneElementWithValidation ;\nvar createFactory =  createFactoryWithValidation ;\nvar Children = {\n  map: mapChildren,\n  forEach: forEachChildren,\n  count: countChildren,\n  toArray: toArray,\n  only: onlyChild\n};\n\nexports.Children = Children;\nexports.Component = Component;\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.Profiler = REACT_PROFILER_TYPE;\nexports.PureComponent = PureComponent;\nexports.StrictMode = REACT_STRICT_MODE_TYPE;\nexports.Suspense = REACT_SUSPENSE_TYPE;\nexports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = ReactSharedInternals;\nexports.cloneElement = cloneElement$1;\nexports.createContext = createContext;\nexports.createElement = createElement$1;\nexports.createFactory = createFactory;\nexports.createRef = createRef;\nexports.forwardRef = forwardRef;\nexports.isValidElement = isValidElement;\nexports.lazy = lazy;\nexports.memo = memo;\nexports.startTransition = startTransition;\nexports.unstable_act = act;\nexports.useCallback = useCallback;\nexports.useContext = useContext;\nexports.useDebugValue = useDebugValue;\nexports.useDeferredValue = useDeferredValue;\nexports.useEffect = useEffect;\nexports.useId = useId;\nexports.useImperativeHandle = useImperativeHandle;\nexports.useInsertionEffect = useInsertionEffect;\nexports.useLayoutEffect = useLayoutEffect;\nexports.useMemo = useMemo;\nexports.useReducer = useReducer;\nexports.useRef = useRef;\nexports.useState = useState;\nexports.useSyncExternalStore = useSyncExternalStore;\nexports.useTransition = useTransition;\nexports.version = ReactVersion;\n          /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\nif (\n  typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&\n  typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop ===\n    'function'\n) {\n  __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(new Error());\n}\n        \n  })();\n}\n", "'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react.production.min.js');\n} else {\n  module.exports = require('./cjs/react.development.js');\n}\n", "/**\n * @license React\n * scheduler.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nif (process.env.NODE_ENV !== \"production\") {\n  (function() {\n\n          'use strict';\n\n/* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\nif (\n  typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&\n  typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart ===\n    'function'\n) {\n  __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error());\n}\n          var enableSchedulerDebugging = false;\nvar enableProfiling = false;\nvar frameYieldMs = 5;\n\nfunction push(heap, node) {\n  var index = heap.length;\n  heap.push(node);\n  siftUp(heap, node, index);\n}\nfunction peek(heap) {\n  return heap.length === 0 ? null : heap[0];\n}\nfunction pop(heap) {\n  if (heap.length === 0) {\n    return null;\n  }\n\n  var first = heap[0];\n  var last = heap.pop();\n\n  if (last !== first) {\n    heap[0] = last;\n    siftDown(heap, last, 0);\n  }\n\n  return first;\n}\n\nfunction siftUp(heap, node, i) {\n  var index = i;\n\n  while (index > 0) {\n    var parentIndex = index - 1 >>> 1;\n    var parent = heap[parentIndex];\n\n    if (compare(parent, node) > 0) {\n      // The parent is larger. Swap positions.\n      heap[parentIndex] = node;\n      heap[index] = parent;\n      index = parentIndex;\n    } else {\n      // The parent is smaller. Exit.\n      return;\n    }\n  }\n}\n\nfunction siftDown(heap, node, i) {\n  var index = i;\n  var length = heap.length;\n  var halfLength = length >>> 1;\n\n  while (index < halfLength) {\n    var leftIndex = (index + 1) * 2 - 1;\n    var left = heap[leftIndex];\n    var rightIndex = leftIndex + 1;\n    var right = heap[rightIndex]; // If the left or right node is smaller, swap with the smaller of those.\n\n    if (compare(left, node) < 0) {\n      if (rightIndex < length && compare(right, left) < 0) {\n        heap[index] = right;\n        heap[rightIndex] = node;\n        index = rightIndex;\n      } else {\n        heap[index] = left;\n        heap[leftIndex] = node;\n        index = leftIndex;\n      }\n    } else if (rightIndex < length && compare(right, node) < 0) {\n      heap[index] = right;\n      heap[rightIndex] = node;\n      index = rightIndex;\n    } else {\n      // Neither child is smaller. Exit.\n      return;\n    }\n  }\n}\n\nfunction compare(a, b) {\n  // Compare sort index first, then task id.\n  var diff = a.sortIndex - b.sortIndex;\n  return diff !== 0 ? diff : a.id - b.id;\n}\n\n// TODO: Use symbols?\nvar ImmediatePriority = 1;\nvar UserBlockingPriority = 2;\nvar NormalPriority = 3;\nvar LowPriority = 4;\nvar IdlePriority = 5;\n\nfunction markTaskErrored(task, ms) {\n}\n\n/* eslint-disable no-var */\n\nvar hasPerformanceNow = typeof performance === 'object' && typeof performance.now === 'function';\n\nif (hasPerformanceNow) {\n  var localPerformance = performance;\n\n  exports.unstable_now = function () {\n    return localPerformance.now();\n  };\n} else {\n  var localDate = Date;\n  var initialTime = localDate.now();\n\n  exports.unstable_now = function () {\n    return localDate.now() - initialTime;\n  };\n} // Max 31 bit integer. The max integer size in V8 for 32-bit systems.\n// Math.pow(2, 30) - 1\n// 0b111111111111111111111111111111\n\n\nvar maxSigned31BitInt = 1073741823; // Times out immediately\n\nvar IMMEDIATE_PRIORITY_TIMEOUT = -1; // Eventually times out\n\nvar USER_BLOCKING_PRIORITY_TIMEOUT = 250;\nvar NORMAL_PRIORITY_TIMEOUT = 5000;\nvar LOW_PRIORITY_TIMEOUT = 10000; // Never times out\n\nvar IDLE_PRIORITY_TIMEOUT = maxSigned31BitInt; // Tasks are stored on a min heap\n\nvar taskQueue = [];\nvar timerQueue = []; // Incrementing id counter. Used to maintain insertion order.\n\nvar taskIdCounter = 1; // Pausing the scheduler is useful for debugging.\nvar currentTask = null;\nvar currentPriorityLevel = NormalPriority; // This is set while performing work, to prevent re-entrance.\n\nvar isPerformingWork = false;\nvar isHostCallbackScheduled = false;\nvar isHostTimeoutScheduled = false; // Capture local references to native APIs, in case a polyfill overrides them.\n\nvar localSetTimeout = typeof setTimeout === 'function' ? setTimeout : null;\nvar localClearTimeout = typeof clearTimeout === 'function' ? clearTimeout : null;\nvar localSetImmediate = typeof setImmediate !== 'undefined' ? setImmediate : null; // IE and Node.js + jsdom\n\nvar isInputPending = typeof navigator !== 'undefined' && navigator.scheduling !== undefined && navigator.scheduling.isInputPending !== undefined ? navigator.scheduling.isInputPending.bind(navigator.scheduling) : null;\n\nfunction advanceTimers(currentTime) {\n  // Check for tasks that are no longer delayed and add them to the queue.\n  var timer = peek(timerQueue);\n\n  while (timer !== null) {\n    if (timer.callback === null) {\n      // Timer was cancelled.\n      pop(timerQueue);\n    } else if (timer.startTime <= currentTime) {\n      // Timer fired. Transfer to the task queue.\n      pop(timerQueue);\n      timer.sortIndex = timer.expirationTime;\n      push(taskQueue, timer);\n    } else {\n      // Remaining timers are pending.\n      return;\n    }\n\n    timer = peek(timerQueue);\n  }\n}\n\nfunction handleTimeout(currentTime) {\n  isHostTimeoutScheduled = false;\n  advanceTimers(currentTime);\n\n  if (!isHostCallbackScheduled) {\n    if (peek(taskQueue) !== null) {\n      isHostCallbackScheduled = true;\n      requestHostCallback(flushWork);\n    } else {\n      var firstTimer = peek(timerQueue);\n\n      if (firstTimer !== null) {\n        requestHostTimeout(handleTimeout, firstTimer.startTime - currentTime);\n      }\n    }\n  }\n}\n\nfunction flushWork(hasTimeRemaining, initialTime) {\n\n\n  isHostCallbackScheduled = false;\n\n  if (isHostTimeoutScheduled) {\n    // We scheduled a timeout but it's no longer needed. Cancel it.\n    isHostTimeoutScheduled = false;\n    cancelHostTimeout();\n  }\n\n  isPerformingWork = true;\n  var previousPriorityLevel = currentPriorityLevel;\n\n  try {\n    if (enableProfiling) {\n      try {\n        return workLoop(hasTimeRemaining, initialTime);\n      } catch (error) {\n        if (currentTask !== null) {\n          var currentTime = exports.unstable_now();\n          markTaskErrored(currentTask, currentTime);\n          currentTask.isQueued = false;\n        }\n\n        throw error;\n      }\n    } else {\n      // No catch in prod code path.\n      return workLoop(hasTimeRemaining, initialTime);\n    }\n  } finally {\n    currentTask = null;\n    currentPriorityLevel = previousPriorityLevel;\n    isPerformingWork = false;\n  }\n}\n\nfunction workLoop(hasTimeRemaining, initialTime) {\n  var currentTime = initialTime;\n  advanceTimers(currentTime);\n  currentTask = peek(taskQueue);\n\n  while (currentTask !== null && !(enableSchedulerDebugging )) {\n    if (currentTask.expirationTime > currentTime && (!hasTimeRemaining || shouldYieldToHost())) {\n      // This currentTask hasn't expired, and we've reached the deadline.\n      break;\n    }\n\n    var callback = currentTask.callback;\n\n    if (typeof callback === 'function') {\n      currentTask.callback = null;\n      currentPriorityLevel = currentTask.priorityLevel;\n      var didUserCallbackTimeout = currentTask.expirationTime <= currentTime;\n\n      var continuationCallback = callback(didUserCallbackTimeout);\n      currentTime = exports.unstable_now();\n\n      if (typeof continuationCallback === 'function') {\n        currentTask.callback = continuationCallback;\n      } else {\n\n        if (currentTask === peek(taskQueue)) {\n          pop(taskQueue);\n        }\n      }\n\n      advanceTimers(currentTime);\n    } else {\n      pop(taskQueue);\n    }\n\n    currentTask = peek(taskQueue);\n  } // Return whether there's additional work\n\n\n  if (currentTask !== null) {\n    return true;\n  } else {\n    var firstTimer = peek(timerQueue);\n\n    if (firstTimer !== null) {\n      requestHostTimeout(handleTimeout, firstTimer.startTime - currentTime);\n    }\n\n    return false;\n  }\n}\n\nfunction unstable_runWithPriority(priorityLevel, eventHandler) {\n  switch (priorityLevel) {\n    case ImmediatePriority:\n    case UserBlockingPriority:\n    case NormalPriority:\n    case LowPriority:\n    case IdlePriority:\n      break;\n\n    default:\n      priorityLevel = NormalPriority;\n  }\n\n  var previousPriorityLevel = currentPriorityLevel;\n  currentPriorityLevel = priorityLevel;\n\n  try {\n    return eventHandler();\n  } finally {\n    currentPriorityLevel = previousPriorityLevel;\n  }\n}\n\nfunction unstable_next(eventHandler) {\n  var priorityLevel;\n\n  switch (currentPriorityLevel) {\n    case ImmediatePriority:\n    case UserBlockingPriority:\n    case NormalPriority:\n      // Shift down to normal priority\n      priorityLevel = NormalPriority;\n      break;\n\n    default:\n      // Anything lower than normal priority should remain at the current level.\n      priorityLevel = currentPriorityLevel;\n      break;\n  }\n\n  var previousPriorityLevel = currentPriorityLevel;\n  currentPriorityLevel = priorityLevel;\n\n  try {\n    return eventHandler();\n  } finally {\n    currentPriorityLevel = previousPriorityLevel;\n  }\n}\n\nfunction unstable_wrapCallback(callback) {\n  var parentPriorityLevel = currentPriorityLevel;\n  return function () {\n    // This is a fork of runWithPriority, inlined for performance.\n    var previousPriorityLevel = currentPriorityLevel;\n    currentPriorityLevel = parentPriorityLevel;\n\n    try {\n      return callback.apply(this, arguments);\n    } finally {\n      currentPriorityLevel = previousPriorityLevel;\n    }\n  };\n}\n\nfunction unstable_scheduleCallback(priorityLevel, callback, options) {\n  var currentTime = exports.unstable_now();\n  var startTime;\n\n  if (typeof options === 'object' && options !== null) {\n    var delay = options.delay;\n\n    if (typeof delay === 'number' && delay > 0) {\n      startTime = currentTime + delay;\n    } else {\n      startTime = currentTime;\n    }\n  } else {\n    startTime = currentTime;\n  }\n\n  var timeout;\n\n  switch (priorityLevel) {\n    case ImmediatePriority:\n      timeout = IMMEDIATE_PRIORITY_TIMEOUT;\n      break;\n\n    case UserBlockingPriority:\n      timeout = USER_BLOCKING_PRIORITY_TIMEOUT;\n      break;\n\n    case IdlePriority:\n      timeout = IDLE_PRIORITY_TIMEOUT;\n      break;\n\n    case LowPriority:\n      timeout = LOW_PRIORITY_TIMEOUT;\n      break;\n\n    case NormalPriority:\n    default:\n      timeout = NORMAL_PRIORITY_TIMEOUT;\n      break;\n  }\n\n  var expirationTime = startTime + timeout;\n  var newTask = {\n    id: taskIdCounter++,\n    callback: callback,\n    priorityLevel: priorityLevel,\n    startTime: startTime,\n    expirationTime: expirationTime,\n    sortIndex: -1\n  };\n\n  if (startTime > currentTime) {\n    // This is a delayed task.\n    newTask.sortIndex = startTime;\n    push(timerQueue, newTask);\n\n    if (peek(taskQueue) === null && newTask === peek(timerQueue)) {\n      // All tasks are delayed, and this is the task with the earliest delay.\n      if (isHostTimeoutScheduled) {\n        // Cancel an existing timeout.\n        cancelHostTimeout();\n      } else {\n        isHostTimeoutScheduled = true;\n      } // Schedule a timeout.\n\n\n      requestHostTimeout(handleTimeout, startTime - currentTime);\n    }\n  } else {\n    newTask.sortIndex = expirationTime;\n    push(taskQueue, newTask);\n    // wait until the next time we yield.\n\n\n    if (!isHostCallbackScheduled && !isPerformingWork) {\n      isHostCallbackScheduled = true;\n      requestHostCallback(flushWork);\n    }\n  }\n\n  return newTask;\n}\n\nfunction unstable_pauseExecution() {\n}\n\nfunction unstable_continueExecution() {\n\n  if (!isHostCallbackScheduled && !isPerformingWork) {\n    isHostCallbackScheduled = true;\n    requestHostCallback(flushWork);\n  }\n}\n\nfunction unstable_getFirstCallbackNode() {\n  return peek(taskQueue);\n}\n\nfunction unstable_cancelCallback(task) {\n  // remove from the queue because you can't remove arbitrary nodes from an\n  // array based heap, only the first one.)\n\n\n  task.callback = null;\n}\n\nfunction unstable_getCurrentPriorityLevel() {\n  return currentPriorityLevel;\n}\n\nvar isMessageLoopRunning = false;\nvar scheduledHostCallback = null;\nvar taskTimeoutID = -1; // Scheduler periodically yields in case there is other work on the main\n// thread, like user events. By default, it yields multiple times per frame.\n// It does not attempt to align with frame boundaries, since most tasks don't\n// need to be frame aligned; for those that do, use requestAnimationFrame.\n\nvar frameInterval = frameYieldMs;\nvar startTime = -1;\n\nfunction shouldYieldToHost() {\n  var timeElapsed = exports.unstable_now() - startTime;\n\n  if (timeElapsed < frameInterval) {\n    // The main thread has only been blocked for a really short amount of time;\n    // smaller than a single frame. Don't yield yet.\n    return false;\n  } // The main thread has been blocked for a non-negligible amount of time. We\n\n\n  return true;\n}\n\nfunction requestPaint() {\n\n}\n\nfunction forceFrameRate(fps) {\n  if (fps < 0 || fps > 125) {\n    // Using console['error'] to evade Babel and ESLint\n    console['error']('forceFrameRate takes a positive int between 0 and 125, ' + 'forcing frame rates higher than 125 fps is not supported');\n    return;\n  }\n\n  if (fps > 0) {\n    frameInterval = Math.floor(1000 / fps);\n  } else {\n    // reset the framerate\n    frameInterval = frameYieldMs;\n  }\n}\n\nvar performWorkUntilDeadline = function () {\n  if (scheduledHostCallback !== null) {\n    var currentTime = exports.unstable_now(); // Keep track of the start time so we can measure how long the main thread\n    // has been blocked.\n\n    startTime = currentTime;\n    var hasTimeRemaining = true; // If a scheduler task throws, exit the current browser task so the\n    // error can be observed.\n    //\n    // Intentionally not using a try-catch, since that makes some debugging\n    // techniques harder. Instead, if `scheduledHostCallback` errors, then\n    // `hasMoreWork` will remain true, and we'll continue the work loop.\n\n    var hasMoreWork = true;\n\n    try {\n      hasMoreWork = scheduledHostCallback(hasTimeRemaining, currentTime);\n    } finally {\n      if (hasMoreWork) {\n        // If there's more work, schedule the next message event at the end\n        // of the preceding one.\n        schedulePerformWorkUntilDeadline();\n      } else {\n        isMessageLoopRunning = false;\n        scheduledHostCallback = null;\n      }\n    }\n  } else {\n    isMessageLoopRunning = false;\n  } // Yielding to the browser will give it a chance to paint, so we can\n};\n\nvar schedulePerformWorkUntilDeadline;\n\nif (typeof localSetImmediate === 'function') {\n  // Node.js and old IE.\n  // There's a few reasons for why we prefer setImmediate.\n  //\n  // Unlike MessageChannel, it doesn't prevent a Node.js process from exiting.\n  // (Even though this is a DOM fork of the Scheduler, you could get here\n  // with a mix of Node.js 15+, which has a MessageChannel, and jsdom.)\n  // https://github.com/facebook/react/issues/20756\n  //\n  // But also, it runs earlier which is the semantic we want.\n  // If other browsers ever implement it, it's better to use it.\n  // Although both of these would be inferior to native scheduling.\n  schedulePerformWorkUntilDeadline = function () {\n    localSetImmediate(performWorkUntilDeadline);\n  };\n} else if (typeof MessageChannel !== 'undefined') {\n  // DOM and Worker environments.\n  // We prefer MessageChannel because of the 4ms setTimeout clamping.\n  var channel = new MessageChannel();\n  var port = channel.port2;\n  channel.port1.onmessage = performWorkUntilDeadline;\n\n  schedulePerformWorkUntilDeadline = function () {\n    port.postMessage(null);\n  };\n} else {\n  // We should only fallback here in non-browser environments.\n  schedulePerformWorkUntilDeadline = function () {\n    localSetTimeout(performWorkUntilDeadline, 0);\n  };\n}\n\nfunction requestHostCallback(callback) {\n  scheduledHostCallback = callback;\n\n  if (!isMessageLoopRunning) {\n    isMessageLoopRunning = true;\n    schedulePerformWorkUntilDeadline();\n  }\n}\n\nfunction requestHostTimeout(callback, ms) {\n  taskTimeoutID = localSetTimeout(function () {\n    callback(exports.unstable_now());\n  }, ms);\n}\n\nfunction cancelHostTimeout() {\n  localClearTimeout(taskTimeoutID);\n  taskTimeoutID = -1;\n}\n\nvar unstable_requestPaint = requestPaint;\nvar unstable_Profiling =  null;\n\nexports.unstable_IdlePriority = IdlePriority;\nexports.unstable_ImmediatePriority = ImmediatePriority;\nexports.unstable_LowPriority = LowPriority;\nexports.unstable_NormalPriority = NormalPriority;\nexports.unstable_Profiling = unstable_Profiling;\nexports.unstable_UserBlockingPriority = UserBlockingPriority;\nexports.unstable_cancelCallback = unstable_cancelCallback;\nexports.unstable_continueExecution = unstable_continueExecution;\nexports.unstable_forceFrameRate = forceFrameRate;\nexports.unstable_getCurrentPriorityLevel = unstable_getCurrentPriorityLevel;\nexports.unstable_getFirstCallbackNode = unstable_getFirstCallbackNode;\nexports.unstable_next = unstable_next;\nexports.unstable_pauseExecution = unstable_pauseExecution;\nexports.unstable_requestPaint = unstable_requestPaint;\nexports.unstable_runWithPriority = unstable_runWithPriority;\nexports.unstable_scheduleCallback = unstable_scheduleCallback;\nexports.unstable_shouldYield = shouldYieldToHost;\nexports.unstable_wrapCallback = unstable_wrapCallback;\n          /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\nif (\n  typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&\n  typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop ===\n    'function'\n) {\n  __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(new Error());\n}\n        \n  })();\n}\n", "'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n  module.exports = require('./cjs/scheduler.development.js');\n}\n", "/**\n * @license React\n * react-dom.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nif (process.env.NODE_ENV !== \"production\") {\n  (function() {\n\n          'use strict';\n\n/* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\nif (\n  typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&\n  typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart ===\n    'function'\n) {\n  __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error());\n}\n          var React = require('react');\nvar Scheduler = require('scheduler');\n\nvar ReactSharedInternals = React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n\nvar suppressWarning = false;\nfunction setSuppressWarning(newSuppressWarning) {\n  {\n    suppressWarning = newSuppressWarning;\n  }\n} // In DEV, calls to console.warn and console.error get replaced\n// by calls to these methods by a Babel plugin.\n//\n// In PROD (or in packages without access to React internals),\n// they are left as they are instead.\n\nfunction warn(format) {\n  {\n    if (!suppressWarning) {\n      for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n        args[_key - 1] = arguments[_key];\n      }\n\n      printWarning('warn', format, args);\n    }\n  }\n}\nfunction error(format) {\n  {\n    if (!suppressWarning) {\n      for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n        args[_key2 - 1] = arguments[_key2];\n      }\n\n      printWarning('error', format, args);\n    }\n  }\n}\n\nfunction printWarning(level, format, args) {\n  // When changing this logic, you might want to also\n  // update consoleWithStackDev.www.js as well.\n  {\n    var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n    var stack = ReactDebugCurrentFrame.getStackAddendum();\n\n    if (stack !== '') {\n      format += '%s';\n      args = args.concat([stack]);\n    } // eslint-disable-next-line react-internal/safe-string-coercion\n\n\n    var argsWithFormat = args.map(function (item) {\n      return String(item);\n    }); // Careful: RN currently depends on this prefix\n\n    argsWithFormat.unshift('Warning: ' + format); // We intentionally don't use spread (or .apply) directly because it\n    // breaks IE9: https://github.com/facebook/react/issues/13610\n    // eslint-disable-next-line react-internal/no-production-logging\n\n    Function.prototype.apply.call(console[level], console, argsWithFormat);\n  }\n}\n\nvar FunctionComponent = 0;\nvar ClassComponent = 1;\nvar IndeterminateComponent = 2; // Before we know whether it is function or class\n\nvar HostRoot = 3; // Root of a host tree. Could be nested inside another node.\n\nvar HostPortal = 4; // A subtree. Could be an entry point to a different renderer.\n\nvar HostComponent = 5;\nvar HostText = 6;\nvar Fragment = 7;\nvar Mode = 8;\nvar ContextConsumer = 9;\nvar ContextProvider = 10;\nvar ForwardRef = 11;\nvar Profiler = 12;\nvar SuspenseComponent = 13;\nvar MemoComponent = 14;\nvar SimpleMemoComponent = 15;\nvar LazyComponent = 16;\nvar IncompleteClassComponent = 17;\nvar DehydratedFragment = 18;\nvar SuspenseListComponent = 19;\nvar ScopeComponent = 21;\nvar OffscreenComponent = 22;\nvar LegacyHiddenComponent = 23;\nvar CacheComponent = 24;\nvar TracingMarkerComponent = 25;\n\n// -----------------------------------------------------------------------------\n\nvar enableClientRenderFallbackOnTextMismatch = true; // TODO: Need to review this code one more time before landing\n// the react-reconciler package.\n\nvar enableNewReconciler = false; // Support legacy Primer support on internal FB www\n\nvar enableLazyContextPropagation = false; // FB-only usage. The new API has different semantics.\n\nvar enableLegacyHidden = false; // Enables unstable_avoidThisFallback feature in Fiber\n\nvar enableSuspenseAvoidThisFallback = false; // Enables unstable_avoidThisFallback feature in Fizz\n// React DOM Chopping Block\n//\n// Similar to main Chopping Block but only flags related to React DOM. These are\n// grouped because we will likely batch all of them into a single major release.\n// -----------------------------------------------------------------------------\n// Disable support for comment nodes as React DOM containers. Already disabled\n// in open source, but www codebase still relies on it. Need to remove.\n\nvar disableCommentsAsDOMContainers = true; // Disable javascript: URL strings in href for XSS protection.\n// and client rendering, mostly to allow JSX attributes to apply to the custom\n// element's object properties instead of only HTML attributes.\n// https://github.com/facebook/react/issues/11347\n\nvar enableCustomElementPropertySupport = false; // Disables children for <textarea> elements\nvar warnAboutStringRefs = false; // -----------------------------------------------------------------------------\n// Debugging and DevTools\n// -----------------------------------------------------------------------------\n// Adds user timing marks for e.g. state updates, suspense, and work loop stuff,\n// for an experimental timeline tool.\n\nvar enableSchedulingProfiler = true; // Helps identify side effects in render-phase lifecycle hooks and setState\n\nvar enableProfilerTimer = true; // Record durations for commit and passive effects phases.\n\nvar enableProfilerCommitHooks = true; // Phase param passed to onRender callback differentiates between an \"update\" and a \"cascading-update\".\n\nvar allNativeEvents = new Set();\n/**\n * Mapping from registration name to event name\n */\n\n\nvar registrationNameDependencies = {};\n/**\n * Mapping from lowercase registration names to the properly cased version,\n * used to warn in the case of missing event handlers. Available\n * only in true.\n * @type {Object}\n */\n\nvar possibleRegistrationNames =  {} ; // Trust the developer to only use possibleRegistrationNames in true\n\nfunction registerTwoPhaseEvent(registrationName, dependencies) {\n  registerDirectEvent(registrationName, dependencies);\n  registerDirectEvent(registrationName + 'Capture', dependencies);\n}\nfunction registerDirectEvent(registrationName, dependencies) {\n  {\n    if (registrationNameDependencies[registrationName]) {\n      error('EventRegistry: More than one plugin attempted to publish the same ' + 'registration name, `%s`.', registrationName);\n    }\n  }\n\n  registrationNameDependencies[registrationName] = dependencies;\n\n  {\n    var lowerCasedName = registrationName.toLowerCase();\n    possibleRegistrationNames[lowerCasedName] = registrationName;\n\n    if (registrationName === 'onDoubleClick') {\n      possibleRegistrationNames.ondblclick = registrationName;\n    }\n  }\n\n  for (var i = 0; i < dependencies.length; i++) {\n    allNativeEvents.add(dependencies[i]);\n  }\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined');\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\n/*\n * The `'' + value` pattern (used in in perf-sensitive code) throws for Symbol\n * and Temporal.* types. See https://github.com/facebook/react/pull/22064.\n *\n * The functions in this module will throw an easier-to-understand,\n * easier-to-debug exception with a clear errors message message explaining the\n * problem. (Instead of a confusing exception thrown inside the implementation\n * of the `value` object).\n */\n// $FlowFixMe only called in DEV, so void return is not possible.\nfunction typeName(value) {\n  {\n    // toStringTag is needed for namespaced types like Temporal.Instant\n    var hasToStringTag = typeof Symbol === 'function' && Symbol.toStringTag;\n    var type = hasToStringTag && value[Symbol.toStringTag] || value.constructor.name || 'Object';\n    return type;\n  }\n} // $FlowFixMe only called in DEV, so void return is not possible.\n\n\nfunction willCoercionThrow(value) {\n  {\n    try {\n      testStringCoercion(value);\n      return false;\n    } catch (e) {\n      return true;\n    }\n  }\n}\n\nfunction testStringCoercion(value) {\n  // If you ended up here by following an exception call stack, here's what's\n  // happened: you supplied an object or symbol value to React (as a prop, key,\n  // DOM attribute, CSS property, string ref, etc.) and when React tried to\n  // coerce it to a string using `'' + value`, an exception was thrown.\n  //\n  // The most common types that will cause this exception are `Symbol` instances\n  // and Temporal objects like `Temporal.Instant`. But any object that has a\n  // `valueOf` or `[Symbol.toPrimitive]` method that throws will also cause this\n  // exception. (Library authors do this to prevent users from using built-in\n  // numeric operators like `+` or comparison operators like `>=` because custom\n  // methods are needed to perform accurate arithmetic or comparison.)\n  //\n  // To fix the problem, coerce this object or symbol value to a string before\n  // passing it to React. The most reliable way is usually `String(value)`.\n  //\n  // To find which value is throwing, check the browser or debugger console.\n  // Before this exception was thrown, there should be `console.error` output\n  // that shows the type (Symbol, Temporal.PlainDate, etc.) that caused the\n  // problem and how that type was used: key, atrribute, input value prop, etc.\n  // In most cases, this console output also shows the component and its\n  // ancestor components where the exception happened.\n  //\n  // eslint-disable-next-line react-internal/safe-string-coercion\n  return '' + value;\n}\n\nfunction checkAttributeStringCoercion(value, attributeName) {\n  {\n    if (willCoercionThrow(value)) {\n      error('The provided `%s` attribute is an unsupported type %s.' + ' This value must be coerced to a string before before using it here.', attributeName, typeName(value));\n\n      return testStringCoercion(value); // throw (to help callers find troubleshooting comments)\n    }\n  }\n}\nfunction checkKeyStringCoercion(value) {\n  {\n    if (willCoercionThrow(value)) {\n      error('The provided key is an unsupported type %s.' + ' This value must be coerced to a string before before using it here.', typeName(value));\n\n      return testStringCoercion(value); // throw (to help callers find troubleshooting comments)\n    }\n  }\n}\nfunction checkPropStringCoercion(value, propName) {\n  {\n    if (willCoercionThrow(value)) {\n      error('The provided `%s` prop is an unsupported type %s.' + ' This value must be coerced to a string before before using it here.', propName, typeName(value));\n\n      return testStringCoercion(value); // throw (to help callers find troubleshooting comments)\n    }\n  }\n}\nfunction checkCSSPropertyStringCoercion(value, propName) {\n  {\n    if (willCoercionThrow(value)) {\n      error('The provided `%s` CSS property is an unsupported type %s.' + ' This value must be coerced to a string before before using it here.', propName, typeName(value));\n\n      return testStringCoercion(value); // throw (to help callers find troubleshooting comments)\n    }\n  }\n}\nfunction checkHtmlStringCoercion(value) {\n  {\n    if (willCoercionThrow(value)) {\n      error('The provided HTML markup uses a value of unsupported type %s.' + ' This value must be coerced to a string before before using it here.', typeName(value));\n\n      return testStringCoercion(value); // throw (to help callers find troubleshooting comments)\n    }\n  }\n}\nfunction checkFormFieldValueStringCoercion(value) {\n  {\n    if (willCoercionThrow(value)) {\n      error('Form field values (value, checked, defaultValue, or defaultChecked props)' + ' must be strings, not %s.' + ' This value must be coerced to a string before before using it here.', typeName(value));\n\n      return testStringCoercion(value); // throw (to help callers find troubleshooting comments)\n    }\n  }\n}\n\n// A reserved attribute.\n// It is handled by React separately and shouldn't be written to the DOM.\nvar RESERVED = 0; // A simple string attribute.\n// Attributes that aren't in the filter are presumed to have this type.\n\nvar STRING = 1; // A string attribute that accepts booleans in React. In HTML, these are called\n// \"enumerated\" attributes with \"true\" and \"false\" as possible values.\n// When true, it should be set to a \"true\" string.\n// When false, it should be set to a \"false\" string.\n\nvar BOOLEANISH_STRING = 2; // A real boolean attribute.\n// When true, it should be present (set either to an empty string or its name).\n// When false, it should be omitted.\n\nvar BOOLEAN = 3; // An attribute that can be used as a flag as well as with a value.\n// When true, it should be present (set either to an empty string or its name).\n// When false, it should be omitted.\n// For any other value, should be present with that value.\n\nvar OVERLOADED_BOOLEAN = 4; // An attribute that must be numeric or parse as a numeric.\n// When falsy, it should be removed.\n\nvar NUMERIC = 5; // An attribute that must be positive numeric or parse as a positive numeric.\n// When falsy, it should be removed.\n\nvar POSITIVE_NUMERIC = 6;\n\n/* eslint-disable max-len */\nvar ATTRIBUTE_NAME_START_CHAR = \":A-Z_a-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD\";\n/* eslint-enable max-len */\n\nvar ATTRIBUTE_NAME_CHAR = ATTRIBUTE_NAME_START_CHAR + \"\\\\-.0-9\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040\";\nvar VALID_ATTRIBUTE_NAME_REGEX = new RegExp('^[' + ATTRIBUTE_NAME_START_CHAR + '][' + ATTRIBUTE_NAME_CHAR + ']*$');\nvar illegalAttributeNameCache = {};\nvar validatedAttributeNameCache = {};\nfunction isAttributeNameSafe(attributeName) {\n  if (hasOwnProperty.call(validatedAttributeNameCache, attributeName)) {\n    return true;\n  }\n\n  if (hasOwnProperty.call(illegalAttributeNameCache, attributeName)) {\n    return false;\n  }\n\n  if (VALID_ATTRIBUTE_NAME_REGEX.test(attributeName)) {\n    validatedAttributeNameCache[attributeName] = true;\n    return true;\n  }\n\n  illegalAttributeNameCache[attributeName] = true;\n\n  {\n    error('Invalid attribute name: `%s`', attributeName);\n  }\n\n  return false;\n}\nfunction shouldIgnoreAttribute(name, propertyInfo, isCustomComponentTag) {\n  if (propertyInfo !== null) {\n    return propertyInfo.type === RESERVED;\n  }\n\n  if (isCustomComponentTag) {\n    return false;\n  }\n\n  if (name.length > 2 && (name[0] === 'o' || name[0] === 'O') && (name[1] === 'n' || name[1] === 'N')) {\n    return true;\n  }\n\n  return false;\n}\nfunction shouldRemoveAttributeWithWarning(name, value, propertyInfo, isCustomComponentTag) {\n  if (propertyInfo !== null && propertyInfo.type === RESERVED) {\n    return false;\n  }\n\n  switch (typeof value) {\n    case 'function': // $FlowIssue symbol is perfectly valid here\n\n    case 'symbol':\n      // eslint-disable-line\n      return true;\n\n    case 'boolean':\n      {\n        if (isCustomComponentTag) {\n          return false;\n        }\n\n        if (propertyInfo !== null) {\n          return !propertyInfo.acceptsBooleans;\n        } else {\n          var prefix = name.toLowerCase().slice(0, 5);\n          return prefix !== 'data-' && prefix !== 'aria-';\n        }\n      }\n\n    default:\n      return false;\n  }\n}\nfunction shouldRemoveAttribute(name, value, propertyInfo, isCustomComponentTag) {\n  if (value === null || typeof value === 'undefined') {\n    return true;\n  }\n\n  if (shouldRemoveAttributeWithWarning(name, value, propertyInfo, isCustomComponentTag)) {\n    return true;\n  }\n\n  if (isCustomComponentTag) {\n\n    return false;\n  }\n\n  if (propertyInfo !== null) {\n\n    switch (propertyInfo.type) {\n      case BOOLEAN:\n        return !value;\n\n      case OVERLOADED_BOOLEAN:\n        return value === false;\n\n      case NUMERIC:\n        return isNaN(value);\n\n      case POSITIVE_NUMERIC:\n        return isNaN(value) || value < 1;\n    }\n  }\n\n  return false;\n}\nfunction getPropertyInfo(name) {\n  return properties.hasOwnProperty(name) ? properties[name] : null;\n}\n\nfunction PropertyInfoRecord(name, type, mustUseProperty, attributeName, attributeNamespace, sanitizeURL, removeEmptyString) {\n  this.acceptsBooleans = type === BOOLEANISH_STRING || type === BOOLEAN || type === OVERLOADED_BOOLEAN;\n  this.attributeName = attributeName;\n  this.attributeNamespace = attributeNamespace;\n  this.mustUseProperty = mustUseProperty;\n  this.propertyName = name;\n  this.type = type;\n  this.sanitizeURL = sanitizeURL;\n  this.removeEmptyString = removeEmptyString;\n} // When adding attributes to this list, be sure to also add them to\n// the `possibleStandardNames` module to ensure casing and incorrect\n// name warnings.\n\n\nvar properties = {}; // These props are reserved by React. They shouldn't be written to the DOM.\n\nvar reservedProps = ['children', 'dangerouslySetInnerHTML', // TODO: This prevents the assignment of defaultValue to regular\n// elements (not just inputs). Now that ReactDOMInput assigns to the\n// defaultValue property -- do we need this?\n'defaultValue', 'defaultChecked', 'innerHTML', 'suppressContentEditableWarning', 'suppressHydrationWarning', 'style'];\n\nreservedProps.forEach(function (name) {\n  properties[name] = new PropertyInfoRecord(name, RESERVED, false, // mustUseProperty\n  name, // attributeName\n  null, // attributeNamespace\n  false, // sanitizeURL\n  false);\n}); // A few React string attributes have a different name.\n// This is a mapping from React prop names to the attribute names.\n\n[['acceptCharset', 'accept-charset'], ['className', 'class'], ['htmlFor', 'for'], ['httpEquiv', 'http-equiv']].forEach(function (_ref) {\n  var name = _ref[0],\n      attributeName = _ref[1];\n  properties[name] = new PropertyInfoRecord(name, STRING, false, // mustUseProperty\n  attributeName, // attributeName\n  null, // attributeNamespace\n  false, // sanitizeURL\n  false);\n}); // These are \"enumerated\" HTML attributes that accept \"true\" and \"false\".\n// In React, we let users pass `true` and `false` even though technically\n// these aren't boolean attributes (they are coerced to strings).\n\n['contentEditable', 'draggable', 'spellCheck', 'value'].forEach(function (name) {\n  properties[name] = new PropertyInfoRecord(name, BOOLEANISH_STRING, false, // mustUseProperty\n  name.toLowerCase(), // attributeName\n  null, // attributeNamespace\n  false, // sanitizeURL\n  false);\n}); // These are \"enumerated\" SVG attributes that accept \"true\" and \"false\".\n// In React, we let users pass `true` and `false` even though technically\n// these aren't boolean attributes (they are coerced to strings).\n// Since these are SVG attributes, their attribute names are case-sensitive.\n\n['autoReverse', 'externalResourcesRequired', 'focusable', 'preserveAlpha'].forEach(function (name) {\n  properties[name] = new PropertyInfoRecord(name, BOOLEANISH_STRING, false, // mustUseProperty\n  name, // attributeName\n  null, // attributeNamespace\n  false, // sanitizeURL\n  false);\n}); // These are HTML boolean attributes.\n\n['allowFullScreen', 'async', // Note: there is a special case that prevents it from being written to the DOM\n// on the client side because the browsers are inconsistent. Instead we call focus().\n'autoFocus', 'autoPlay', 'controls', 'default', 'defer', 'disabled', 'disablePictureInPicture', 'disableRemotePlayback', 'formNoValidate', 'hidden', 'loop', 'noModule', 'noValidate', 'open', 'playsInline', 'readOnly', 'required', 'reversed', 'scoped', 'seamless', // Microdata\n'itemScope'].forEach(function (name) {\n  properties[name] = new PropertyInfoRecord(name, BOOLEAN, false, // mustUseProperty\n  name.toLowerCase(), // attributeName\n  null, // attributeNamespace\n  false, // sanitizeURL\n  false);\n}); // These are the few React props that we set as DOM properties\n// rather than attributes. These are all booleans.\n\n['checked', // Note: `option.selected` is not updated if `select.multiple` is\n// disabled with `removeAttribute`. We have special logic for handling this.\n'multiple', 'muted', 'selected' // NOTE: if you add a camelCased prop to this list,\n// you'll need to set attributeName to name.toLowerCase()\n// instead in the assignment below.\n].forEach(function (name) {\n  properties[name] = new PropertyInfoRecord(name, BOOLEAN, true, // mustUseProperty\n  name, // attributeName\n  null, // attributeNamespace\n  false, // sanitizeURL\n  false);\n}); // These are HTML attributes that are \"overloaded booleans\": they behave like\n// booleans, but can also accept a string value.\n\n['capture', 'download' // NOTE: if you add a camelCased prop to this list,\n// you'll need to set attributeName to name.toLowerCase()\n// instead in the assignment below.\n].forEach(function (name) {\n  properties[name] = new PropertyInfoRecord(name, OVERLOADED_BOOLEAN, false, // mustUseProperty\n  name, // attributeName\n  null, // attributeNamespace\n  false, // sanitizeURL\n  false);\n}); // These are HTML attributes that must be positive numbers.\n\n['cols', 'rows', 'size', 'span' // NOTE: if you add a camelCased prop to this list,\n// you'll need to set attributeName to name.toLowerCase()\n// instead in the assignment below.\n].forEach(function (name) {\n  properties[name] = new PropertyInfoRecord(name, POSITIVE_NUMERIC, false, // mustUseProperty\n  name, // attributeName\n  null, // attributeNamespace\n  false, // sanitizeURL\n  false);\n}); // These are HTML attributes that must be numbers.\n\n['rowSpan', 'start'].forEach(function (name) {\n  properties[name] = new PropertyInfoRecord(name, NUMERIC, false, // mustUseProperty\n  name.toLowerCase(), // attributeName\n  null, // attributeNamespace\n  false, // sanitizeURL\n  false);\n});\nvar CAMELIZE = /[\\-\\:]([a-z])/g;\n\nvar capitalize = function (token) {\n  return token[1].toUpperCase();\n}; // This is a list of all SVG attributes that need special casing, namespacing,\n// or boolean value assignment. Regular attributes that just accept strings\n// and have the same names are omitted, just like in the HTML attribute filter.\n// Some of these attributes can be hard to find. This list was created by\n// scraping the MDN documentation.\n\n\n['accent-height', 'alignment-baseline', 'arabic-form', 'baseline-shift', 'cap-height', 'clip-path', 'clip-rule', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'dominant-baseline', 'enable-background', 'fill-opacity', 'fill-rule', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'glyph-name', 'glyph-orientation-horizontal', 'glyph-orientation-vertical', 'horiz-adv-x', 'horiz-origin-x', 'image-rendering', 'letter-spacing', 'lighting-color', 'marker-end', 'marker-mid', 'marker-start', 'overline-position', 'overline-thickness', 'paint-order', 'panose-1', 'pointer-events', 'rendering-intent', 'shape-rendering', 'stop-color', 'stop-opacity', 'strikethrough-position', 'strikethrough-thickness', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke-width', 'text-anchor', 'text-decoration', 'text-rendering', 'underline-position', 'underline-thickness', 'unicode-bidi', 'unicode-range', 'units-per-em', 'v-alphabetic', 'v-hanging', 'v-ideographic', 'v-mathematical', 'vector-effect', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'word-spacing', 'writing-mode', 'xmlns:xlink', 'x-height' // NOTE: if you add a camelCased prop to this list,\n// you'll need to set attributeName to name.toLowerCase()\n// instead in the assignment below.\n].forEach(function (attributeName) {\n  var name = attributeName.replace(CAMELIZE, capitalize);\n  properties[name] = new PropertyInfoRecord(name, STRING, false, // mustUseProperty\n  attributeName, null, // attributeNamespace\n  false, // sanitizeURL\n  false);\n}); // String SVG attributes with the xlink namespace.\n\n['xlink:actuate', 'xlink:arcrole', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type' // NOTE: if you add a camelCased prop to this list,\n// you'll need to set attributeName to name.toLowerCase()\n// instead in the assignment below.\n].forEach(function (attributeName) {\n  var name = attributeName.replace(CAMELIZE, capitalize);\n  properties[name] = new PropertyInfoRecord(name, STRING, false, // mustUseProperty\n  attributeName, 'http://www.w3.org/1999/xlink', false, // sanitizeURL\n  false);\n}); // String SVG attributes with the xml namespace.\n\n['xml:base', 'xml:lang', 'xml:space' // NOTE: if you add a camelCased prop to this list,\n// you'll need to set attributeName to name.toLowerCase()\n// instead in the assignment below.\n].forEach(function (attributeName) {\n  var name = attributeName.replace(CAMELIZE, capitalize);\n  properties[name] = new PropertyInfoRecord(name, STRING, false, // mustUseProperty\n  attributeName, 'http://www.w3.org/XML/1998/namespace', false, // sanitizeURL\n  false);\n}); // These attribute exists both in HTML and SVG.\n// The attribute name is case-sensitive in SVG so we can't just use\n// the React name like we do for attributes that exist only in HTML.\n\n['tabIndex', 'crossOrigin'].forEach(function (attributeName) {\n  properties[attributeName] = new PropertyInfoRecord(attributeName, STRING, false, // mustUseProperty\n  attributeName.toLowerCase(), // attributeName\n  null, // attributeNamespace\n  false, // sanitizeURL\n  false);\n}); // These attributes accept URLs. These must not allow javascript: URLS.\n// These will also need to accept Trusted Types object in the future.\n\nvar xlinkHref = 'xlinkHref';\nproperties[xlinkHref] = new PropertyInfoRecord('xlinkHref', STRING, false, // mustUseProperty\n'xlink:href', 'http://www.w3.org/1999/xlink', true, // sanitizeURL\nfalse);\n['src', 'href', 'action', 'formAction'].forEach(function (attributeName) {\n  properties[attributeName] = new PropertyInfoRecord(attributeName, STRING, false, // mustUseProperty\n  attributeName.toLowerCase(), // attributeName\n  null, // attributeNamespace\n  true, // sanitizeURL\n  true);\n});\n\n// and any newline or tab are filtered out as if they're not part of the URL.\n// https://url.spec.whatwg.org/#url-parsing\n// Tab or newline are defined as \\r\\n\\t:\n// https://infra.spec.whatwg.org/#ascii-tab-or-newline\n// A C0 control is a code point in the range \\u0000 NULL to \\u001F\n// INFORMATION SEPARATOR ONE, inclusive:\n// https://infra.spec.whatwg.org/#c0-control-or-space\n\n/* eslint-disable max-len */\n\nvar isJavaScriptProtocol = /^[\\u0000-\\u001F ]*j[\\r\\n\\t]*a[\\r\\n\\t]*v[\\r\\n\\t]*a[\\r\\n\\t]*s[\\r\\n\\t]*c[\\r\\n\\t]*r[\\r\\n\\t]*i[\\r\\n\\t]*p[\\r\\n\\t]*t[\\r\\n\\t]*\\:/i;\nvar didWarn = false;\n\nfunction sanitizeURL(url) {\n  {\n    if (!didWarn && isJavaScriptProtocol.test(url)) {\n      didWarn = true;\n\n      error('A future version of React will block javascript: URLs as a security precaution. ' + 'Use event handlers instead if you can. If you need to generate unsafe HTML try ' + 'using dangerouslySetInnerHTML instead. React was passed %s.', JSON.stringify(url));\n    }\n  }\n}\n\n/**\n * Get the value for a property on a node. Only used in DEV for SSR validation.\n * The \"expected\" argument is used as a hint of what the expected value is.\n * Some properties have multiple equivalent values.\n */\nfunction getValueForProperty(node, name, expected, propertyInfo) {\n  {\n    if (propertyInfo.mustUseProperty) {\n      var propertyName = propertyInfo.propertyName;\n      return node[propertyName];\n    } else {\n      // This check protects multiple uses of `expected`, which is why the\n      // react-internal/safe-string-coercion rule is disabled in several spots\n      // below.\n      {\n        checkAttributeStringCoercion(expected, name);\n      }\n\n      if ( propertyInfo.sanitizeURL) {\n        // If we haven't fully disabled javascript: URLs, and if\n        // the hydration is successful of a javascript: URL, we\n        // still want to warn on the client.\n        // eslint-disable-next-line react-internal/safe-string-coercion\n        sanitizeURL('' + expected);\n      }\n\n      var attributeName = propertyInfo.attributeName;\n      var stringValue = null;\n\n      if (propertyInfo.type === OVERLOADED_BOOLEAN) {\n        if (node.hasAttribute(attributeName)) {\n          var value = node.getAttribute(attributeName);\n\n          if (value === '') {\n            return true;\n          }\n\n          if (shouldRemoveAttribute(name, expected, propertyInfo, false)) {\n            return value;\n          } // eslint-disable-next-line react-internal/safe-string-coercion\n\n\n          if (value === '' + expected) {\n            return expected;\n          }\n\n          return value;\n        }\n      } else if (node.hasAttribute(attributeName)) {\n        if (shouldRemoveAttribute(name, expected, propertyInfo, false)) {\n          // We had an attribute but shouldn't have had one, so read it\n          // for the error message.\n          return node.getAttribute(attributeName);\n        }\n\n        if (propertyInfo.type === BOOLEAN) {\n          // If this was a boolean, it doesn't matter what the value is\n          // the fact that we have it is the same as the expected.\n          return expected;\n        } // Even if this property uses a namespace we use getAttribute\n        // because we assume its namespaced name is the same as our config.\n        // To use getAttributeNS we need the local name which we don't have\n        // in our config atm.\n\n\n        stringValue = node.getAttribute(attributeName);\n      }\n\n      if (shouldRemoveAttribute(name, expected, propertyInfo, false)) {\n        return stringValue === null ? expected : stringValue; // eslint-disable-next-line react-internal/safe-string-coercion\n      } else if (stringValue === '' + expected) {\n        return expected;\n      } else {\n        return stringValue;\n      }\n    }\n  }\n}\n/**\n * Get the value for a attribute on a node. Only used in DEV for SSR validation.\n * The third argument is used as a hint of what the expected value is. Some\n * attributes have multiple equivalent values.\n */\n\nfunction getValueForAttribute(node, name, expected, isCustomComponentTag) {\n  {\n    if (!isAttributeNameSafe(name)) {\n      return;\n    }\n\n    if (!node.hasAttribute(name)) {\n      return expected === undefined ? undefined : null;\n    }\n\n    var value = node.getAttribute(name);\n\n    {\n      checkAttributeStringCoercion(expected, name);\n    }\n\n    if (value === '' + expected) {\n      return expected;\n    }\n\n    return value;\n  }\n}\n/**\n * Sets the value for a property on a node.\n *\n * @param {DOMElement} node\n * @param {string} name\n * @param {*} value\n */\n\nfunction setValueForProperty(node, name, value, isCustomComponentTag) {\n  var propertyInfo = getPropertyInfo(name);\n\n  if (shouldIgnoreAttribute(name, propertyInfo, isCustomComponentTag)) {\n    return;\n  }\n\n  if (shouldRemoveAttribute(name, value, propertyInfo, isCustomComponentTag)) {\n    value = null;\n  }\n\n\n  if (isCustomComponentTag || propertyInfo === null) {\n    if (isAttributeNameSafe(name)) {\n      var _attributeName = name;\n\n      if (value === null) {\n        node.removeAttribute(_attributeName);\n      } else {\n        {\n          checkAttributeStringCoercion(value, name);\n        }\n\n        node.setAttribute(_attributeName,  '' + value);\n      }\n    }\n\n    return;\n  }\n\n  var mustUseProperty = propertyInfo.mustUseProperty;\n\n  if (mustUseProperty) {\n    var propertyName = propertyInfo.propertyName;\n\n    if (value === null) {\n      var type = propertyInfo.type;\n      node[propertyName] = type === BOOLEAN ? false : '';\n    } else {\n      // Contrary to `setAttribute`, object properties are properly\n      // `toString`ed by IE8/9.\n      node[propertyName] = value;\n    }\n\n    return;\n  } // The rest are treated as attributes with special cases.\n\n\n  var attributeName = propertyInfo.attributeName,\n      attributeNamespace = propertyInfo.attributeNamespace;\n\n  if (value === null) {\n    node.removeAttribute(attributeName);\n  } else {\n    var _type = propertyInfo.type;\n    var attributeValue;\n\n    if (_type === BOOLEAN || _type === OVERLOADED_BOOLEAN && value === true) {\n      // If attribute type is boolean, we know for sure it won't be an execution sink\n      // and we won't require Trusted Type here.\n      attributeValue = '';\n    } else {\n      // `setAttribute` with objects becomes only `[object]` in IE8/9,\n      // ('' + value) makes it output the correct toString()-value.\n      {\n        {\n          checkAttributeStringCoercion(value, attributeName);\n        }\n\n        attributeValue = '' + value;\n      }\n\n      if (propertyInfo.sanitizeURL) {\n        sanitizeURL(attributeValue.toString());\n      }\n    }\n\n    if (attributeNamespace) {\n      node.setAttributeNS(attributeNamespace, attributeName, attributeValue);\n    } else {\n      node.setAttribute(attributeName, attributeValue);\n    }\n  }\n}\n\n// ATTENTION\n// When adding new symbols to this file,\n// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'\n// The Symbol used to tag the ReactElement-like types.\nvar REACT_ELEMENT_TYPE = Symbol.for('react.element');\nvar REACT_PORTAL_TYPE = Symbol.for('react.portal');\nvar REACT_FRAGMENT_TYPE = Symbol.for('react.fragment');\nvar REACT_STRICT_MODE_TYPE = Symbol.for('react.strict_mode');\nvar REACT_PROFILER_TYPE = Symbol.for('react.profiler');\nvar REACT_PROVIDER_TYPE = Symbol.for('react.provider');\nvar REACT_CONTEXT_TYPE = Symbol.for('react.context');\nvar REACT_FORWARD_REF_TYPE = Symbol.for('react.forward_ref');\nvar REACT_SUSPENSE_TYPE = Symbol.for('react.suspense');\nvar REACT_SUSPENSE_LIST_TYPE = Symbol.for('react.suspense_list');\nvar REACT_MEMO_TYPE = Symbol.for('react.memo');\nvar REACT_LAZY_TYPE = Symbol.for('react.lazy');\nvar REACT_SCOPE_TYPE = Symbol.for('react.scope');\nvar REACT_DEBUG_TRACING_MODE_TYPE = Symbol.for('react.debug_trace_mode');\nvar REACT_OFFSCREEN_TYPE = Symbol.for('react.offscreen');\nvar REACT_LEGACY_HIDDEN_TYPE = Symbol.for('react.legacy_hidden');\nvar REACT_CACHE_TYPE = Symbol.for('react.cache');\nvar REACT_TRACING_MARKER_TYPE = Symbol.for('react.tracing_marker');\nvar MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator';\nfunction getIteratorFn(maybeIterable) {\n  if (maybeIterable === null || typeof maybeIterable !== 'object') {\n    return null;\n  }\n\n  var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL];\n\n  if (typeof maybeIterator === 'function') {\n    return maybeIterator;\n  }\n\n  return null;\n}\n\nvar assign = Object.assign;\n\n// Helpers to patch console.logs to avoid logging during side-effect free\n// replaying on render function. This currently only patches the object\n// lazily which won't cover if the log function was extracted eagerly.\n// We could also eagerly patch the method.\nvar disabledDepth = 0;\nvar prevLog;\nvar prevInfo;\nvar prevWarn;\nvar prevError;\nvar prevGroup;\nvar prevGroupCollapsed;\nvar prevGroupEnd;\n\nfunction disabledLog() {}\n\ndisabledLog.__reactDisabledLog = true;\nfunction disableLogs() {\n  {\n    if (disabledDepth === 0) {\n      /* eslint-disable react-internal/no-production-logging */\n      prevLog = console.log;\n      prevInfo = console.info;\n      prevWarn = console.warn;\n      prevError = console.error;\n      prevGroup = console.group;\n      prevGroupCollapsed = console.groupCollapsed;\n      prevGroupEnd = console.groupEnd; // https://github.com/facebook/react/issues/19099\n\n      var props = {\n        configurable: true,\n        enumerable: true,\n        value: disabledLog,\n        writable: true\n      }; // $FlowFixMe Flow thinks console is immutable.\n\n      Object.defineProperties(console, {\n        info: props,\n        log: props,\n        warn: props,\n        error: props,\n        group: props,\n        groupCollapsed: props,\n        groupEnd: props\n      });\n      /* eslint-enable react-internal/no-production-logging */\n    }\n\n    disabledDepth++;\n  }\n}\nfunction reenableLogs() {\n  {\n    disabledDepth--;\n\n    if (disabledDepth === 0) {\n      /* eslint-disable react-internal/no-production-logging */\n      var props = {\n        configurable: true,\n        enumerable: true,\n        writable: true\n      }; // $FlowFixMe Flow thinks console is immutable.\n\n      Object.defineProperties(console, {\n        log: assign({}, props, {\n          value: prevLog\n        }),\n        info: assign({}, props, {\n          value: prevInfo\n        }),\n        warn: assign({}, props, {\n          value: prevWarn\n        }),\n        error: assign({}, props, {\n          value: prevError\n        }),\n        group: assign({}, props, {\n          value: prevGroup\n        }),\n        groupCollapsed: assign({}, props, {\n          value: prevGroupCollapsed\n        }),\n        groupEnd: assign({}, props, {\n          value: prevGroupEnd\n        })\n      });\n      /* eslint-enable react-internal/no-production-logging */\n    }\n\n    if (disabledDepth < 0) {\n      error('disabledDepth fell below zero. ' + 'This is a bug in React. Please file an issue.');\n    }\n  }\n}\n\nvar ReactCurrentDispatcher = ReactSharedInternals.ReactCurrentDispatcher;\nvar prefix;\nfunction describeBuiltInComponentFrame(name, source, ownerFn) {\n  {\n    if (prefix === undefined) {\n      // Extract the VM specific prefix used by each line.\n      try {\n        throw Error();\n      } catch (x) {\n        var match = x.stack.trim().match(/\\n( *(at )?)/);\n        prefix = match && match[1] || '';\n      }\n    } // We use the prefix to ensure our stacks line up with native stack frames.\n\n\n    return '\\n' + prefix + name;\n  }\n}\nvar reentry = false;\nvar componentFrameCache;\n\n{\n  var PossiblyWeakMap = typeof WeakMap === 'function' ? WeakMap : Map;\n  componentFrameCache = new PossiblyWeakMap();\n}\n\nfunction describeNativeComponentFrame(fn, construct) {\n  // If something asked for a stack inside a fake render, it should get ignored.\n  if ( !fn || reentry) {\n    return '';\n  }\n\n  {\n    var frame = componentFrameCache.get(fn);\n\n    if (frame !== undefined) {\n      return frame;\n    }\n  }\n\n  var control;\n  reentry = true;\n  var previousPrepareStackTrace = Error.prepareStackTrace; // $FlowFixMe It does accept undefined.\n\n  Error.prepareStackTrace = undefined;\n  var previousDispatcher;\n\n  {\n    previousDispatcher = ReactCurrentDispatcher.current; // Set the dispatcher in DEV because this might be call in the render function\n    // for warnings.\n\n    ReactCurrentDispatcher.current = null;\n    disableLogs();\n  }\n\n  try {\n    // This should throw.\n    if (construct) {\n      // Something should be setting the props in the constructor.\n      var Fake = function () {\n        throw Error();\n      }; // $FlowFixMe\n\n\n      Object.defineProperty(Fake.prototype, 'props', {\n        set: function () {\n          // We use a throwing setter instead of frozen or non-writable props\n          // because that won't throw in a non-strict mode function.\n          throw Error();\n        }\n      });\n\n      if (typeof Reflect === 'object' && Reflect.construct) {\n        // We construct a different control for this case to include any extra\n        // frames added by the construct call.\n        try {\n          Reflect.construct(Fake, []);\n        } catch (x) {\n          control = x;\n        }\n\n        Reflect.construct(fn, [], Fake);\n      } else {\n        try {\n          Fake.call();\n        } catch (x) {\n          control = x;\n        }\n\n        fn.call(Fake.prototype);\n      }\n    } else {\n      try {\n        throw Error();\n      } catch (x) {\n        control = x;\n      }\n\n      fn();\n    }\n  } catch (sample) {\n    // This is inlined manually because closure doesn't do it for us.\n    if (sample && control && typeof sample.stack === 'string') {\n      // This extracts the first frame from the sample that isn't also in the control.\n      // Skipping one frame that we assume is the frame that calls the two.\n      var sampleLines = sample.stack.split('\\n');\n      var controlLines = control.stack.split('\\n');\n      var s = sampleLines.length - 1;\n      var c = controlLines.length - 1;\n\n      while (s >= 1 && c >= 0 && sampleLines[s] !== controlLines[c]) {\n        // We expect at least one stack frame to be shared.\n        // Typically this will be the root most one. However, stack frames may be\n        // cut off due to maximum stack limits. In this case, one maybe cut off\n        // earlier than the other. We assume that the sample is longer or the same\n        // and there for cut off earlier. So we should find the root most frame in\n        // the sample somewhere in the control.\n        c--;\n      }\n\n      for (; s >= 1 && c >= 0; s--, c--) {\n        // Next we find the first one that isn't the same which should be the\n        // frame that called our sample function and the control.\n        if (sampleLines[s] !== controlLines[c]) {\n          // In V8, the first line is describing the message but other VMs don't.\n          // If we're about to return the first line, and the control is also on the same\n          // line, that's a pretty good indicator that our sample threw at same line as\n          // the control. I.e. before we entered the sample frame. So we ignore this result.\n          // This can happen if you passed a class to function component, or non-function.\n          if (s !== 1 || c !== 1) {\n            do {\n              s--;\n              c--; // We may still have similar intermediate frames from the construct call.\n              // The next one that isn't the same should be our match though.\n\n              if (c < 0 || sampleLines[s] !== controlLines[c]) {\n                // V8 adds a \"new\" prefix for native classes. Let's remove it to make it prettier.\n                var _frame = '\\n' + sampleLines[s].replace(' at new ', ' at '); // If our component frame is labeled \"<anonymous>\"\n                // but we have a user-provided \"displayName\"\n                // splice it in to make the stack more readable.\n\n\n                if (fn.displayName && _frame.includes('<anonymous>')) {\n                  _frame = _frame.replace('<anonymous>', fn.displayName);\n                }\n\n                {\n                  if (typeof fn === 'function') {\n                    componentFrameCache.set(fn, _frame);\n                  }\n                } // Return the line we found.\n\n\n                return _frame;\n              }\n            } while (s >= 1 && c >= 0);\n          }\n\n          break;\n        }\n      }\n    }\n  } finally {\n    reentry = false;\n\n    {\n      ReactCurrentDispatcher.current = previousDispatcher;\n      reenableLogs();\n    }\n\n    Error.prepareStackTrace = previousPrepareStackTrace;\n  } // Fallback to just using the name if we couldn't make it throw.\n\n\n  var name = fn ? fn.displayName || fn.name : '';\n  var syntheticFrame = name ? describeBuiltInComponentFrame(name) : '';\n\n  {\n    if (typeof fn === 'function') {\n      componentFrameCache.set(fn, syntheticFrame);\n    }\n  }\n\n  return syntheticFrame;\n}\n\nfunction describeClassComponentFrame(ctor, source, ownerFn) {\n  {\n    return describeNativeComponentFrame(ctor, true);\n  }\n}\nfunction describeFunctionComponentFrame(fn, source, ownerFn) {\n  {\n    return describeNativeComponentFrame(fn, false);\n  }\n}\n\nfunction shouldConstruct(Component) {\n  var prototype = Component.prototype;\n  return !!(prototype && prototype.isReactComponent);\n}\n\nfunction describeUnknownElementTypeFrameInDEV(type, source, ownerFn) {\n\n  if (type == null) {\n    return '';\n  }\n\n  if (typeof type === 'function') {\n    {\n      return describeNativeComponentFrame(type, shouldConstruct(type));\n    }\n  }\n\n  if (typeof type === 'string') {\n    return describeBuiltInComponentFrame(type);\n  }\n\n  switch (type) {\n    case REACT_SUSPENSE_TYPE:\n      return describeBuiltInComponentFrame('Suspense');\n\n    case REACT_SUSPENSE_LIST_TYPE:\n      return describeBuiltInComponentFrame('SuspenseList');\n  }\n\n  if (typeof type === 'object') {\n    switch (type.$$typeof) {\n      case REACT_FORWARD_REF_TYPE:\n        return describeFunctionComponentFrame(type.render);\n\n      case REACT_MEMO_TYPE:\n        // Memo may contain any component type so we recursively resolve it.\n        return describeUnknownElementTypeFrameInDEV(type.type, source, ownerFn);\n\n      case REACT_LAZY_TYPE:\n        {\n          var lazyComponent = type;\n          var payload = lazyComponent._payload;\n          var init = lazyComponent._init;\n\n          try {\n            // Lazy may contain any component type so we recursively resolve it.\n            return describeUnknownElementTypeFrameInDEV(init(payload), source, ownerFn);\n          } catch (x) {}\n        }\n    }\n  }\n\n  return '';\n}\n\nfunction describeFiber(fiber) {\n  var owner =  fiber._debugOwner ? fiber._debugOwner.type : null ;\n  var source =  fiber._debugSource ;\n\n  switch (fiber.tag) {\n    case HostComponent:\n      return describeBuiltInComponentFrame(fiber.type);\n\n    case LazyComponent:\n      return describeBuiltInComponentFrame('Lazy');\n\n    case SuspenseComponent:\n      return describeBuiltInComponentFrame('Suspense');\n\n    case SuspenseListComponent:\n      return describeBuiltInComponentFrame('SuspenseList');\n\n    case FunctionComponent:\n    case IndeterminateComponent:\n    case SimpleMemoComponent:\n      return describeFunctionComponentFrame(fiber.type);\n\n    case ForwardRef:\n      return describeFunctionComponentFrame(fiber.type.render);\n\n    case ClassComponent:\n      return describeClassComponentFrame(fiber.type);\n\n    default:\n      return '';\n  }\n}\n\nfunction getStackByFiberInDevAndProd(workInProgress) {\n  try {\n    var info = '';\n    var node = workInProgress;\n\n    do {\n      info += describeFiber(node);\n      node = node.return;\n    } while (node);\n\n    return info;\n  } catch (x) {\n    return '\\nError generating stack: ' + x.message + '\\n' + x.stack;\n  }\n}\n\nfunction getWrappedName(outerType, innerType, wrapperName) {\n  var displayName = outerType.displayName;\n\n  if (displayName) {\n    return displayName;\n  }\n\n  var functionName = innerType.displayName || innerType.name || '';\n  return functionName !== '' ? wrapperName + \"(\" + functionName + \")\" : wrapperName;\n} // Keep in sync with react-reconciler/getComponentNameFromFiber\n\n\nfunction getContextName(type) {\n  return type.displayName || 'Context';\n} // Note that the reconciler package should generally prefer to use getComponentNameFromFiber() instead.\n\n\nfunction getComponentNameFromType(type) {\n  if (type == null) {\n    // Host root, text node or just invalid type.\n    return null;\n  }\n\n  {\n    if (typeof type.tag === 'number') {\n      error('Received an unexpected object in getComponentNameFromType(). ' + 'This is likely a bug in React. Please file an issue.');\n    }\n  }\n\n  if (typeof type === 'function') {\n    return type.displayName || type.name || null;\n  }\n\n  if (typeof type === 'string') {\n    return type;\n  }\n\n  switch (type) {\n    case REACT_FRAGMENT_TYPE:\n      return 'Fragment';\n\n    case REACT_PORTAL_TYPE:\n      return 'Portal';\n\n    case REACT_PROFILER_TYPE:\n      return 'Profiler';\n\n    case REACT_STRICT_MODE_TYPE:\n      return 'StrictMode';\n\n    case REACT_SUSPENSE_TYPE:\n      return 'Suspense';\n\n    case REACT_SUSPENSE_LIST_TYPE:\n      return 'SuspenseList';\n\n  }\n\n  if (typeof type === 'object') {\n    switch (type.$$typeof) {\n      case REACT_CONTEXT_TYPE:\n        var context = type;\n        return getContextName(context) + '.Consumer';\n\n      case REACT_PROVIDER_TYPE:\n        var provider = type;\n        return getContextName(provider._context) + '.Provider';\n\n      case REACT_FORWARD_REF_TYPE:\n        return getWrappedName(type, type.render, 'ForwardRef');\n\n      case REACT_MEMO_TYPE:\n        var outerName = type.displayName || null;\n\n        if (outerName !== null) {\n          return outerName;\n        }\n\n        return getComponentNameFromType(type.type) || 'Memo';\n\n      case REACT_LAZY_TYPE:\n        {\n          var lazyComponent = type;\n          var payload = lazyComponent._payload;\n          var init = lazyComponent._init;\n\n          try {\n            return getComponentNameFromType(init(payload));\n          } catch (x) {\n            return null;\n          }\n        }\n\n      // eslint-disable-next-line no-fallthrough\n    }\n  }\n\n  return null;\n}\n\nfunction getWrappedName$1(outerType, innerType, wrapperName) {\n  var functionName = innerType.displayName || innerType.name || '';\n  return outerType.displayName || (functionName !== '' ? wrapperName + \"(\" + functionName + \")\" : wrapperName);\n} // Keep in sync with shared/getComponentNameFromType\n\n\nfunction getContextName$1(type) {\n  return type.displayName || 'Context';\n}\n\nfunction getComponentNameFromFiber(fiber) {\n  var tag = fiber.tag,\n      type = fiber.type;\n\n  switch (tag) {\n    case CacheComponent:\n      return 'Cache';\n\n    case ContextConsumer:\n      var context = type;\n      return getContextName$1(context) + '.Consumer';\n\n    case ContextProvider:\n      var provider = type;\n      return getContextName$1(provider._context) + '.Provider';\n\n    case DehydratedFragment:\n      return 'DehydratedFragment';\n\n    case ForwardRef:\n      return getWrappedName$1(type, type.render, 'ForwardRef');\n\n    case Fragment:\n      return 'Fragment';\n\n    case HostComponent:\n      // Host component type is the display name (e.g. \"div\", \"View\")\n      return type;\n\n    case HostPortal:\n      return 'Portal';\n\n    case HostRoot:\n      return 'Root';\n\n    case HostText:\n      return 'Text';\n\n    case LazyComponent:\n      // Name comes from the type in this case; we don't have a tag.\n      return getComponentNameFromType(type);\n\n    case Mode:\n      if (type === REACT_STRICT_MODE_TYPE) {\n        // Don't be less specific than shared/getComponentNameFromType\n        return 'StrictMode';\n      }\n\n      return 'Mode';\n\n    case OffscreenComponent:\n      return 'Offscreen';\n\n    case Profiler:\n      return 'Profiler';\n\n    case ScopeComponent:\n      return 'Scope';\n\n    case SuspenseComponent:\n      return 'Suspense';\n\n    case SuspenseListComponent:\n      return 'SuspenseList';\n\n    case TracingMarkerComponent:\n      return 'TracingMarker';\n    // The display name for this tags come from the user-provided type:\n\n    case ClassComponent:\n    case FunctionComponent:\n    case IncompleteClassComponent:\n    case IndeterminateComponent:\n    case MemoComponent:\n    case SimpleMemoComponent:\n      if (typeof type === 'function') {\n        return type.displayName || type.name || null;\n      }\n\n      if (typeof type === 'string') {\n        return type;\n      }\n\n      break;\n\n  }\n\n  return null;\n}\n\nvar ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\nvar current = null;\nvar isRendering = false;\nfunction getCurrentFiberOwnerNameInDevOrNull() {\n  {\n    if (current === null) {\n      return null;\n    }\n\n    var owner = current._debugOwner;\n\n    if (owner !== null && typeof owner !== 'undefined') {\n      return getComponentNameFromFiber(owner);\n    }\n  }\n\n  return null;\n}\n\nfunction getCurrentFiberStackInDev() {\n  {\n    if (current === null) {\n      return '';\n    } // Safe because if current fiber exists, we are reconciling,\n    // and it is guaranteed to be the work-in-progress version.\n\n\n    return getStackByFiberInDevAndProd(current);\n  }\n}\n\nfunction resetCurrentFiber() {\n  {\n    ReactDebugCurrentFrame.getCurrentStack = null;\n    current = null;\n    isRendering = false;\n  }\n}\nfunction setCurrentFiber(fiber) {\n  {\n    ReactDebugCurrentFrame.getCurrentStack = fiber === null ? null : getCurrentFiberStackInDev;\n    current = fiber;\n    isRendering = false;\n  }\n}\nfunction getCurrentFiber() {\n  {\n    return current;\n  }\n}\nfunction setIsRendering(rendering) {\n  {\n    isRendering = rendering;\n  }\n}\n\n// Flow does not allow string concatenation of most non-string types. To work\n// around this limitation, we use an opaque type that can only be obtained by\n// passing the value through getToStringValue first.\nfunction toString(value) {\n  // The coercion safety check is performed in getToStringValue().\n  // eslint-disable-next-line react-internal/safe-string-coercion\n  return '' + value;\n}\nfunction getToStringValue(value) {\n  switch (typeof value) {\n    case 'boolean':\n    case 'number':\n    case 'string':\n    case 'undefined':\n      return value;\n\n    case 'object':\n      {\n        checkFormFieldValueStringCoercion(value);\n      }\n\n      return value;\n\n    default:\n      // function, symbol are assigned as empty strings\n      return '';\n  }\n}\n\nvar hasReadOnlyValue = {\n  button: true,\n  checkbox: true,\n  image: true,\n  hidden: true,\n  radio: true,\n  reset: true,\n  submit: true\n};\nfunction checkControlledValueProps(tagName, props) {\n  {\n    if (!(hasReadOnlyValue[props.type] || props.onChange || props.onInput || props.readOnly || props.disabled || props.value == null)) {\n      error('You provided a `value` prop to a form field without an ' + '`onChange` handler. This will render a read-only field. If ' + 'the field should be mutable use `defaultValue`. Otherwise, ' + 'set either `onChange` or `readOnly`.');\n    }\n\n    if (!(props.onChange || props.readOnly || props.disabled || props.checked == null)) {\n      error('You provided a `checked` prop to a form field without an ' + '`onChange` handler. This will render a read-only field. If ' + 'the field should be mutable use `defaultChecked`. Otherwise, ' + 'set either `onChange` or `readOnly`.');\n    }\n  }\n}\n\nfunction isCheckable(elem) {\n  var type = elem.type;\n  var nodeName = elem.nodeName;\n  return nodeName && nodeName.toLowerCase() === 'input' && (type === 'checkbox' || type === 'radio');\n}\n\nfunction getTracker(node) {\n  return node._valueTracker;\n}\n\nfunction detachTracker(node) {\n  node._valueTracker = null;\n}\n\nfunction getValueFromNode(node) {\n  var value = '';\n\n  if (!node) {\n    return value;\n  }\n\n  if (isCheckable(node)) {\n    value = node.checked ? 'true' : 'false';\n  } else {\n    value = node.value;\n  }\n\n  return value;\n}\n\nfunction trackValueOnNode(node) {\n  var valueField = isCheckable(node) ? 'checked' : 'value';\n  var descriptor = Object.getOwnPropertyDescriptor(node.constructor.prototype, valueField);\n\n  {\n    checkFormFieldValueStringCoercion(node[valueField]);\n  }\n\n  var currentValue = '' + node[valueField]; // if someone has already defined a value or Safari, then bail\n  // and don't track value will cause over reporting of changes,\n  // but it's better then a hard failure\n  // (needed for certain tests that spyOn input values and Safari)\n\n  if (node.hasOwnProperty(valueField) || typeof descriptor === 'undefined' || typeof descriptor.get !== 'function' || typeof descriptor.set !== 'function') {\n    return;\n  }\n\n  var get = descriptor.get,\n      set = descriptor.set;\n  Object.defineProperty(node, valueField, {\n    configurable: true,\n    get: function () {\n      return get.call(this);\n    },\n    set: function (value) {\n      {\n        checkFormFieldValueStringCoercion(value);\n      }\n\n      currentValue = '' + value;\n      set.call(this, value);\n    }\n  }); // We could've passed this the first time\n  // but it triggers a bug in IE11 and Edge 14/15.\n  // Calling defineProperty() again should be equivalent.\n  // https://github.com/facebook/react/issues/11768\n\n  Object.defineProperty(node, valueField, {\n    enumerable: descriptor.enumerable\n  });\n  var tracker = {\n    getValue: function () {\n      return currentValue;\n    },\n    setValue: function (value) {\n      {\n        checkFormFieldValueStringCoercion(value);\n      }\n\n      currentValue = '' + value;\n    },\n    stopTracking: function () {\n      detachTracker(node);\n      delete node[valueField];\n    }\n  };\n  return tracker;\n}\n\nfunction track(node) {\n  if (getTracker(node)) {\n    return;\n  } // TODO: Once it's just Fiber we can move this to node._wrapperState\n\n\n  node._valueTracker = trackValueOnNode(node);\n}\nfunction updateValueIfChanged(node) {\n  if (!node) {\n    return false;\n  }\n\n  var tracker = getTracker(node); // if there is no tracker at this point it's unlikely\n  // that trying again will succeed\n\n  if (!tracker) {\n    return true;\n  }\n\n  var lastValue = tracker.getValue();\n  var nextValue = getValueFromNode(node);\n\n  if (nextValue !== lastValue) {\n    tracker.setValue(nextValue);\n    return true;\n  }\n\n  return false;\n}\n\nfunction getActiveElement(doc) {\n  doc = doc || (typeof document !== 'undefined' ? document : undefined);\n\n  if (typeof doc === 'undefined') {\n    return null;\n  }\n\n  try {\n    return doc.activeElement || doc.body;\n  } catch (e) {\n    return doc.body;\n  }\n}\n\nvar didWarnValueDefaultValue = false;\nvar didWarnCheckedDefaultChecked = false;\nvar didWarnControlledToUncontrolled = false;\nvar didWarnUncontrolledToControlled = false;\n\nfunction isControlled(props) {\n  var usesChecked = props.type === 'checkbox' || props.type === 'radio';\n  return usesChecked ? props.checked != null : props.value != null;\n}\n/**\n * Implements an <input> host component that allows setting these optional\n * props: `checked`, `value`, `defaultChecked`, and `defaultValue`.\n *\n * If `checked` or `value` are not supplied (or null/undefined), user actions\n * that affect the checked state or value will trigger updates to the element.\n *\n * If they are supplied (and not null/undefined), the rendered element will not\n * trigger updates to the element. Instead, the props must change in order for\n * the rendered element to be updated.\n *\n * The rendered element will be initialized as unchecked (or `defaultChecked`)\n * with an empty value (or `defaultValue`).\n *\n * See http://www.w3.org/TR/2012/WD-html5-20121025/the-input-element.html\n */\n\n\nfunction getHostProps(element, props) {\n  var node = element;\n  var checked = props.checked;\n  var hostProps = assign({}, props, {\n    defaultChecked: undefined,\n    defaultValue: undefined,\n    value: undefined,\n    checked: checked != null ? checked : node._wrapperState.initialChecked\n  });\n  return hostProps;\n}\nfunction initWrapperState(element, props) {\n  {\n    checkControlledValueProps('input', props);\n\n    if (props.checked !== undefined && props.defaultChecked !== undefined && !didWarnCheckedDefaultChecked) {\n      error('%s contains an input of type %s with both checked and defaultChecked props. ' + 'Input elements must be either controlled or uncontrolled ' + '(specify either the checked prop, or the defaultChecked prop, but not ' + 'both). Decide between using a controlled or uncontrolled input ' + 'element and remove one of these props. More info: ' + 'https://reactjs.org/link/controlled-components', getCurrentFiberOwnerNameInDevOrNull() || 'A component', props.type);\n\n      didWarnCheckedDefaultChecked = true;\n    }\n\n    if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValueDefaultValue) {\n      error('%s contains an input of type %s with both value and defaultValue props. ' + 'Input elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled input ' + 'element and remove one of these props. More info: ' + 'https://reactjs.org/link/controlled-components', getCurrentFiberOwnerNameInDevOrNull() || 'A component', props.type);\n\n      didWarnValueDefaultValue = true;\n    }\n  }\n\n  var node = element;\n  var defaultValue = props.defaultValue == null ? '' : props.defaultValue;\n  node._wrapperState = {\n    initialChecked: props.checked != null ? props.checked : props.defaultChecked,\n    initialValue: getToStringValue(props.value != null ? props.value : defaultValue),\n    controlled: isControlled(props)\n  };\n}\nfunction updateChecked(element, props) {\n  var node = element;\n  var checked = props.checked;\n\n  if (checked != null) {\n    setValueForProperty(node, 'checked', checked, false);\n  }\n}\nfunction updateWrapper(element, props) {\n  var node = element;\n\n  {\n    var controlled = isControlled(props);\n\n    if (!node._wrapperState.controlled && controlled && !didWarnUncontrolledToControlled) {\n      error('A component is changing an uncontrolled input to be controlled. ' + 'This is likely caused by the value changing from undefined to ' + 'a defined value, which should not happen. ' + 'Decide between using a controlled or uncontrolled input ' + 'element for the lifetime of the component. More info: https://reactjs.org/link/controlled-components');\n\n      didWarnUncontrolledToControlled = true;\n    }\n\n    if (node._wrapperState.controlled && !controlled && !didWarnControlledToUncontrolled) {\n      error('A component is changing a controlled input to be uncontrolled. ' + 'This is likely caused by the value changing from a defined to ' + 'undefined, which should not happen. ' + 'Decide between using a controlled or uncontrolled input ' + 'element for the lifetime of the component. More info: https://reactjs.org/link/controlled-components');\n\n      didWarnControlledToUncontrolled = true;\n    }\n  }\n\n  updateChecked(element, props);\n  var value = getToStringValue(props.value);\n  var type = props.type;\n\n  if (value != null) {\n    if (type === 'number') {\n      if (value === 0 && node.value === '' || // We explicitly want to coerce to number here if possible.\n      // eslint-disable-next-line\n      node.value != value) {\n        node.value = toString(value);\n      }\n    } else if (node.value !== toString(value)) {\n      node.value = toString(value);\n    }\n  } else if (type === 'submit' || type === 'reset') {\n    // Submit/reset inputs need the attribute removed completely to avoid\n    // blank-text buttons.\n    node.removeAttribute('value');\n    return;\n  }\n\n  {\n    // When syncing the value attribute, the value comes from a cascade of\n    // properties:\n    //  1. The value React property\n    //  2. The defaultValue React property\n    //  3. Otherwise there should be no change\n    if (props.hasOwnProperty('value')) {\n      setDefaultValue(node, props.type, value);\n    } else if (props.hasOwnProperty('defaultValue')) {\n      setDefaultValue(node, props.type, getToStringValue(props.defaultValue));\n    }\n  }\n\n  {\n    // When syncing the checked attribute, it only changes when it needs\n    // to be removed, such as transitioning from a checkbox into a text input\n    if (props.checked == null && props.defaultChecked != null) {\n      node.defaultChecked = !!props.defaultChecked;\n    }\n  }\n}\nfunction postMountWrapper(element, props, isHydrating) {\n  var node = element; // Do not assign value if it is already set. This prevents user text input\n  // from being lost during SSR hydration.\n\n  if (props.hasOwnProperty('value') || props.hasOwnProperty('defaultValue')) {\n    var type = props.type;\n    var isButton = type === 'submit' || type === 'reset'; // Avoid setting value attribute on submit/reset inputs as it overrides the\n    // default value provided by the browser. See: #12872\n\n    if (isButton && (props.value === undefined || props.value === null)) {\n      return;\n    }\n\n    var initialValue = toString(node._wrapperState.initialValue); // Do not assign value if it is already set. This prevents user text input\n    // from being lost during SSR hydration.\n\n    if (!isHydrating) {\n      {\n        // When syncing the value attribute, the value property should use\n        // the wrapperState._initialValue property. This uses:\n        //\n        //   1. The value React property when present\n        //   2. The defaultValue React property when present\n        //   3. An empty string\n        if (initialValue !== node.value) {\n          node.value = initialValue;\n        }\n      }\n    }\n\n    {\n      // Otherwise, the value attribute is synchronized to the property,\n      // so we assign defaultValue to the same thing as the value property\n      // assignment step above.\n      node.defaultValue = initialValue;\n    }\n  } // Normally, we'd just do `node.checked = node.checked` upon initial mount, less this bug\n  // this is needed to work around a chrome bug where setting defaultChecked\n  // will sometimes influence the value of checked (even after detachment).\n  // Reference: https://bugs.chromium.org/p/chromium/issues/detail?id=608416\n  // We need to temporarily unset name to avoid disrupting radio button groups.\n\n\n  var name = node.name;\n\n  if (name !== '') {\n    node.name = '';\n  }\n\n  {\n    // When syncing the checked attribute, both the checked property and\n    // attribute are assigned at the same time using defaultChecked. This uses:\n    //\n    //   1. The checked React property when present\n    //   2. The defaultChecked React property when present\n    //   3. Otherwise, false\n    node.defaultChecked = !node.defaultChecked;\n    node.defaultChecked = !!node._wrapperState.initialChecked;\n  }\n\n  if (name !== '') {\n    node.name = name;\n  }\n}\nfunction restoreControlledState(element, props) {\n  var node = element;\n  updateWrapper(node, props);\n  updateNamedCousins(node, props);\n}\n\nfunction updateNamedCousins(rootNode, props) {\n  var name = props.name;\n\n  if (props.type === 'radio' && name != null) {\n    var queryRoot = rootNode;\n\n    while (queryRoot.parentNode) {\n      queryRoot = queryRoot.parentNode;\n    } // If `rootNode.form` was non-null, then we could try `form.elements`,\n    // but that sometimes behaves strangely in IE8. We could also try using\n    // `form.getElementsByName`, but that will only return direct children\n    // and won't include inputs that use the HTML5 `form=` attribute. Since\n    // the input might not even be in a form. It might not even be in the\n    // document. Let's just use the local `querySelectorAll` to ensure we don't\n    // miss anything.\n\n\n    {\n      checkAttributeStringCoercion(name, 'name');\n    }\n\n    var group = queryRoot.querySelectorAll('input[name=' + JSON.stringify('' + name) + '][type=\"radio\"]');\n\n    for (var i = 0; i < group.length; i++) {\n      var otherNode = group[i];\n\n      if (otherNode === rootNode || otherNode.form !== rootNode.form) {\n        continue;\n      } // This will throw if radio buttons rendered by different copies of React\n      // and the same name are rendered into the same form (same as #1939).\n      // That's probably okay; we don't support it just as we don't support\n      // mixing React radio buttons with non-React ones.\n\n\n      var otherProps = getFiberCurrentPropsFromNode(otherNode);\n\n      if (!otherProps) {\n        throw new Error('ReactDOMInput: Mixing React and non-React radio inputs with the ' + 'same `name` is not supported.');\n      } // We need update the tracked value on the named cousin since the value\n      // was changed but the input saw no event or value set\n\n\n      updateValueIfChanged(otherNode); // If this is a controlled radio button group, forcing the input that\n      // was previously checked to update will cause it to be come re-checked\n      // as appropriate.\n\n      updateWrapper(otherNode, otherProps);\n    }\n  }\n} // In Chrome, assigning defaultValue to certain input types triggers input validation.\n// For number inputs, the display value loses trailing decimal points. For email inputs,\n// Chrome raises \"The specified value <x> is not a valid email address\".\n//\n// Here we check to see if the defaultValue has actually changed, avoiding these problems\n// when the user is inputting text\n//\n// https://github.com/facebook/react/issues/7253\n\n\nfunction setDefaultValue(node, type, value) {\n  if ( // Focused number inputs synchronize on blur. See ChangeEventPlugin.js\n  type !== 'number' || getActiveElement(node.ownerDocument) !== node) {\n    if (value == null) {\n      node.defaultValue = toString(node._wrapperState.initialValue);\n    } else if (node.defaultValue !== toString(value)) {\n      node.defaultValue = toString(value);\n    }\n  }\n}\n\nvar didWarnSelectedSetOnOption = false;\nvar didWarnInvalidChild = false;\nvar didWarnInvalidInnerHTML = false;\n/**\n * Implements an <option> host component that warns when `selected` is set.\n */\n\nfunction validateProps(element, props) {\n  {\n    // If a value is not provided, then the children must be simple.\n    if (props.value == null) {\n      if (typeof props.children === 'object' && props.children !== null) {\n        React.Children.forEach(props.children, function (child) {\n          if (child == null) {\n            return;\n          }\n\n          if (typeof child === 'string' || typeof child === 'number') {\n            return;\n          }\n\n          if (!didWarnInvalidChild) {\n            didWarnInvalidChild = true;\n\n            error('Cannot infer the option value of complex children. ' + 'Pass a `value` prop or use a plain string as children to <option>.');\n          }\n        });\n      } else if (props.dangerouslySetInnerHTML != null) {\n        if (!didWarnInvalidInnerHTML) {\n          didWarnInvalidInnerHTML = true;\n\n          error('Pass a `value` prop if you set dangerouslyInnerHTML so React knows ' + 'which value should be selected.');\n        }\n      }\n    } // TODO: Remove support for `selected` in <option>.\n\n\n    if (props.selected != null && !didWarnSelectedSetOnOption) {\n      error('Use the `defaultValue` or `value` props on <select> instead of ' + 'setting `selected` on <option>.');\n\n      didWarnSelectedSetOnOption = true;\n    }\n  }\n}\nfunction postMountWrapper$1(element, props) {\n  // value=\"\" should make a value attribute (#6219)\n  if (props.value != null) {\n    element.setAttribute('value', toString(getToStringValue(props.value)));\n  }\n}\n\nvar isArrayImpl = Array.isArray; // eslint-disable-next-line no-redeclare\n\nfunction isArray(a) {\n  return isArrayImpl(a);\n}\n\nvar didWarnValueDefaultValue$1;\n\n{\n  didWarnValueDefaultValue$1 = false;\n}\n\nfunction getDeclarationErrorAddendum() {\n  var ownerName = getCurrentFiberOwnerNameInDevOrNull();\n\n  if (ownerName) {\n    return '\\n\\nCheck the render method of `' + ownerName + '`.';\n  }\n\n  return '';\n}\n\nvar valuePropNames = ['value', 'defaultValue'];\n/**\n * Validation function for `value` and `defaultValue`.\n */\n\nfunction checkSelectPropTypes(props) {\n  {\n    checkControlledValueProps('select', props);\n\n    for (var i = 0; i < valuePropNames.length; i++) {\n      var propName = valuePropNames[i];\n\n      if (props[propName] == null) {\n        continue;\n      }\n\n      var propNameIsArray = isArray(props[propName]);\n\n      if (props.multiple && !propNameIsArray) {\n        error('The `%s` prop supplied to <select> must be an array if ' + '`multiple` is true.%s', propName, getDeclarationErrorAddendum());\n      } else if (!props.multiple && propNameIsArray) {\n        error('The `%s` prop supplied to <select> must be a scalar ' + 'value if `multiple` is false.%s', propName, getDeclarationErrorAddendum());\n      }\n    }\n  }\n}\n\nfunction updateOptions(node, multiple, propValue, setDefaultSelected) {\n  var options = node.options;\n\n  if (multiple) {\n    var selectedValues = propValue;\n    var selectedValue = {};\n\n    for (var i = 0; i < selectedValues.length; i++) {\n      // Prefix to avoid chaos with special keys.\n      selectedValue['$' + selectedValues[i]] = true;\n    }\n\n    for (var _i = 0; _i < options.length; _i++) {\n      var selected = selectedValue.hasOwnProperty('$' + options[_i].value);\n\n      if (options[_i].selected !== selected) {\n        options[_i].selected = selected;\n      }\n\n      if (selected && setDefaultSelected) {\n        options[_i].defaultSelected = true;\n      }\n    }\n  } else {\n    // Do not set `select.value` as exact behavior isn't consistent across all\n    // browsers for all cases.\n    var _selectedValue = toString(getToStringValue(propValue));\n\n    var defaultSelected = null;\n\n    for (var _i2 = 0; _i2 < options.length; _i2++) {\n      if (options[_i2].value === _selectedValue) {\n        options[_i2].selected = true;\n\n        if (setDefaultSelected) {\n          options[_i2].defaultSelected = true;\n        }\n\n        return;\n      }\n\n      if (defaultSelected === null && !options[_i2].disabled) {\n        defaultSelected = options[_i2];\n      }\n    }\n\n    if (defaultSelected !== null) {\n      defaultSelected.selected = true;\n    }\n  }\n}\n/**\n * Implements a <select> host component that allows optionally setting the\n * props `value` and `defaultValue`. If `multiple` is false, the prop must be a\n * stringable. If `multiple` is true, the prop must be an array of stringables.\n *\n * If `value` is not supplied (or null/undefined), user actions that change the\n * selected option will trigger updates to the rendered options.\n *\n * If it is supplied (and not null/undefined), the rendered options will not\n * update in response to user actions. Instead, the `value` prop must change in\n * order for the rendered options to update.\n *\n * If `defaultValue` is provided, any options with the supplied values will be\n * selected.\n */\n\n\nfunction getHostProps$1(element, props) {\n  return assign({}, props, {\n    value: undefined\n  });\n}\nfunction initWrapperState$1(element, props) {\n  var node = element;\n\n  {\n    checkSelectPropTypes(props);\n  }\n\n  node._wrapperState = {\n    wasMultiple: !!props.multiple\n  };\n\n  {\n    if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValueDefaultValue$1) {\n      error('Select elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled select ' + 'element and remove one of these props. More info: ' + 'https://reactjs.org/link/controlled-components');\n\n      didWarnValueDefaultValue$1 = true;\n    }\n  }\n}\nfunction postMountWrapper$2(element, props) {\n  var node = element;\n  node.multiple = !!props.multiple;\n  var value = props.value;\n\n  if (value != null) {\n    updateOptions(node, !!props.multiple, value, false);\n  } else if (props.defaultValue != null) {\n    updateOptions(node, !!props.multiple, props.defaultValue, true);\n  }\n}\nfunction postUpdateWrapper(element, props) {\n  var node = element;\n  var wasMultiple = node._wrapperState.wasMultiple;\n  node._wrapperState.wasMultiple = !!props.multiple;\n  var value = props.value;\n\n  if (value != null) {\n    updateOptions(node, !!props.multiple, value, false);\n  } else if (wasMultiple !== !!props.multiple) {\n    // For simplicity, reapply `defaultValue` if `multiple` is toggled.\n    if (props.defaultValue != null) {\n      updateOptions(node, !!props.multiple, props.defaultValue, true);\n    } else {\n      // Revert the select back to its default unselected state.\n      updateOptions(node, !!props.multiple, props.multiple ? [] : '', false);\n    }\n  }\n}\nfunction restoreControlledState$1(element, props) {\n  var node = element;\n  var value = props.value;\n\n  if (value != null) {\n    updateOptions(node, !!props.multiple, value, false);\n  }\n}\n\nvar didWarnValDefaultVal = false;\n\n/**\n * Implements a <textarea> host component that allows setting `value`, and\n * `defaultValue`. This differs from the traditional DOM API because value is\n * usually set as PCDATA children.\n *\n * If `value` is not supplied (or null/undefined), user actions that affect the\n * value will trigger updates to the element.\n *\n * If `value` is supplied (and not null/undefined), the rendered element will\n * not trigger updates to the element. Instead, the `value` prop must change in\n * order for the rendered element to be updated.\n *\n * The rendered element will be initialized with an empty value, the prop\n * `defaultValue` if specified, or the children content (deprecated).\n */\nfunction getHostProps$2(element, props) {\n  var node = element;\n\n  if (props.dangerouslySetInnerHTML != null) {\n    throw new Error('`dangerouslySetInnerHTML` does not make sense on <textarea>.');\n  } // Always set children to the same thing. In IE9, the selection range will\n  // get reset if `textContent` is mutated.  We could add a check in setTextContent\n  // to only set the value if/when the value differs from the node value (which would\n  // completely solve this IE9 bug), but Sebastian+Sophie seemed to like this\n  // solution. The value can be a boolean or object so that's why it's forced\n  // to be a string.\n\n\n  var hostProps = assign({}, props, {\n    value: undefined,\n    defaultValue: undefined,\n    children: toString(node._wrapperState.initialValue)\n  });\n\n  return hostProps;\n}\nfunction initWrapperState$2(element, props) {\n  var node = element;\n\n  {\n    checkControlledValueProps('textarea', props);\n\n    if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValDefaultVal) {\n      error('%s contains a textarea with both value and defaultValue props. ' + 'Textarea elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled textarea ' + 'and remove one of these props. More info: ' + 'https://reactjs.org/link/controlled-components', getCurrentFiberOwnerNameInDevOrNull() || 'A component');\n\n      didWarnValDefaultVal = true;\n    }\n  }\n\n  var initialValue = props.value; // Only bother fetching default value if we're going to use it\n\n  if (initialValue == null) {\n    var children = props.children,\n        defaultValue = props.defaultValue;\n\n    if (children != null) {\n      {\n        error('Use the `defaultValue` or `value` props instead of setting ' + 'children on <textarea>.');\n      }\n\n      {\n        if (defaultValue != null) {\n          throw new Error('If you supply `defaultValue` on a <textarea>, do not pass children.');\n        }\n\n        if (isArray(children)) {\n          if (children.length > 1) {\n            throw new Error('<textarea> can only have at most one child.');\n          }\n\n          children = children[0];\n        }\n\n        defaultValue = children;\n      }\n    }\n\n    if (defaultValue == null) {\n      defaultValue = '';\n    }\n\n    initialValue = defaultValue;\n  }\n\n  node._wrapperState = {\n    initialValue: getToStringValue(initialValue)\n  };\n}\nfunction updateWrapper$1(element, props) {\n  var node = element;\n  var value = getToStringValue(props.value);\n  var defaultValue = getToStringValue(props.defaultValue);\n\n  if (value != null) {\n    // Cast `value` to a string to ensure the value is set correctly. While\n    // browsers typically do this as necessary, jsdom doesn't.\n    var newValue = toString(value); // To avoid side effects (such as losing text selection), only set value if changed\n\n    if (newValue !== node.value) {\n      node.value = newValue;\n    }\n\n    if (props.defaultValue == null && node.defaultValue !== newValue) {\n      node.defaultValue = newValue;\n    }\n  }\n\n  if (defaultValue != null) {\n    node.defaultValue = toString(defaultValue);\n  }\n}\nfunction postMountWrapper$3(element, props) {\n  var node = element; // This is in postMount because we need access to the DOM node, which is not\n  // available until after the component has mounted.\n\n  var textContent = node.textContent; // Only set node.value if textContent is equal to the expected\n  // initial value. In IE10/IE11 there is a bug where the placeholder attribute\n  // will populate textContent as well.\n  // https://developer.microsoft.com/microsoft-edge/platform/issues/101525/\n\n  if (textContent === node._wrapperState.initialValue) {\n    if (textContent !== '' && textContent !== null) {\n      node.value = textContent;\n    }\n  }\n}\nfunction restoreControlledState$2(element, props) {\n  // DOM component is still mounted; update\n  updateWrapper$1(element, props);\n}\n\nvar HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\nvar MATH_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\nvar SVG_NAMESPACE = 'http://www.w3.org/2000/svg'; // Assumes there is no parent namespace.\n\nfunction getIntrinsicNamespace(type) {\n  switch (type) {\n    case 'svg':\n      return SVG_NAMESPACE;\n\n    case 'math':\n      return MATH_NAMESPACE;\n\n    default:\n      return HTML_NAMESPACE;\n  }\n}\nfunction getChildNamespace(parentNamespace, type) {\n  if (parentNamespace == null || parentNamespace === HTML_NAMESPACE) {\n    // No (or default) parent namespace: potential entry point.\n    return getIntrinsicNamespace(type);\n  }\n\n  if (parentNamespace === SVG_NAMESPACE && type === 'foreignObject') {\n    // We're leaving SVG.\n    return HTML_NAMESPACE;\n  } // By default, pass namespace below.\n\n\n  return parentNamespace;\n}\n\n/* globals MSApp */\n\n/**\n * Create a function which has 'unsafe' privileges (required by windows8 apps)\n */\nvar createMicrosoftUnsafeLocalFunction = function (func) {\n  if (typeof MSApp !== 'undefined' && MSApp.execUnsafeLocalFunction) {\n    return function (arg0, arg1, arg2, arg3) {\n      MSApp.execUnsafeLocalFunction(function () {\n        return func(arg0, arg1, arg2, arg3);\n      });\n    };\n  } else {\n    return func;\n  }\n};\n\nvar reusableSVGContainer;\n/**\n * Set the innerHTML property of a node\n *\n * @param {DOMElement} node\n * @param {string} html\n * @internal\n */\n\nvar setInnerHTML = createMicrosoftUnsafeLocalFunction(function (node, html) {\n  if (node.namespaceURI === SVG_NAMESPACE) {\n\n    if (!('innerHTML' in node)) {\n      // IE does not have innerHTML for SVG nodes, so instead we inject the\n      // new markup in a temp node and then move the child nodes across into\n      // the target node\n      reusableSVGContainer = reusableSVGContainer || document.createElement('div');\n      reusableSVGContainer.innerHTML = '<svg>' + html.valueOf().toString() + '</svg>';\n      var svgNode = reusableSVGContainer.firstChild;\n\n      while (node.firstChild) {\n        node.removeChild(node.firstChild);\n      }\n\n      while (svgNode.firstChild) {\n        node.appendChild(svgNode.firstChild);\n      }\n\n      return;\n    }\n  }\n\n  node.innerHTML = html;\n});\n\n/**\n * HTML nodeType values that represent the type of the node\n */\nvar ELEMENT_NODE = 1;\nvar TEXT_NODE = 3;\nvar COMMENT_NODE = 8;\nvar DOCUMENT_NODE = 9;\nvar DOCUMENT_FRAGMENT_NODE = 11;\n\n/**\n * Set the textContent property of a node. For text updates, it's faster\n * to set the `nodeValue` of the Text node directly instead of using\n * `.textContent` which will remove the existing node and create a new one.\n *\n * @param {DOMElement} node\n * @param {string} text\n * @internal\n */\n\nvar setTextContent = function (node, text) {\n  if (text) {\n    var firstChild = node.firstChild;\n\n    if (firstChild && firstChild === node.lastChild && firstChild.nodeType === TEXT_NODE) {\n      firstChild.nodeValue = text;\n      return;\n    }\n  }\n\n  node.textContent = text;\n};\n\n// List derived from Gecko source code:\n// https://github.com/mozilla/gecko-dev/blob/4e638efc71/layout/style/test/property_database.js\nvar shorthandToLonghand = {\n  animation: ['animationDelay', 'animationDirection', 'animationDuration', 'animationFillMode', 'animationIterationCount', 'animationName', 'animationPlayState', 'animationTimingFunction'],\n  background: ['backgroundAttachment', 'backgroundClip', 'backgroundColor', 'backgroundImage', 'backgroundOrigin', 'backgroundPositionX', 'backgroundPositionY', 'backgroundRepeat', 'backgroundSize'],\n  backgroundPosition: ['backgroundPositionX', 'backgroundPositionY'],\n  border: ['borderBottomColor', 'borderBottomStyle', 'borderBottomWidth', 'borderImageOutset', 'borderImageRepeat', 'borderImageSlice', 'borderImageSource', 'borderImageWidth', 'borderLeftColor', 'borderLeftStyle', 'borderLeftWidth', 'borderRightColor', 'borderRightStyle', 'borderRightWidth', 'borderTopColor', 'borderTopStyle', 'borderTopWidth'],\n  borderBlockEnd: ['borderBlockEndColor', 'borderBlockEndStyle', 'borderBlockEndWidth'],\n  borderBlockStart: ['borderBlockStartColor', 'borderBlockStartStyle', 'borderBlockStartWidth'],\n  borderBottom: ['borderBottomColor', 'borderBottomStyle', 'borderBottomWidth'],\n  borderColor: ['borderBottomColor', 'borderLeftColor', 'borderRightColor', 'borderTopColor'],\n  borderImage: ['borderImageOutset', 'borderImageRepeat', 'borderImageSlice', 'borderImageSource', 'borderImageWidth'],\n  borderInlineEnd: ['borderInlineEndColor', 'borderInlineEndStyle', 'borderInlineEndWidth'],\n  borderInlineStart: ['borderInlineStartColor', 'borderInlineStartStyle', 'borderInlineStartWidth'],\n  borderLeft: ['borderLeftColor', 'borderLeftStyle', 'borderLeftWidth'],\n  borderRadius: ['borderBottomLeftRadius', 'borderBottomRightRadius', 'borderTopLeftRadius', 'borderTopRightRadius'],\n  borderRight: ['borderRightColor', 'borderRightStyle', 'borderRightWidth'],\n  borderStyle: ['borderBottomStyle', 'borderLeftStyle', 'borderRightStyle', 'borderTopStyle'],\n  borderTop: ['borderTopColor', 'borderTopStyle', 'borderTopWidth'],\n  borderWidth: ['borderBottomWidth', 'borderLeftWidth', 'borderRightWidth', 'borderTopWidth'],\n  columnRule: ['columnRuleColor', 'columnRuleStyle', 'columnRuleWidth'],\n  columns: ['columnCount', 'columnWidth'],\n  flex: ['flexBasis', 'flexGrow', 'flexShrink'],\n  flexFlow: ['flexDirection', 'flexWrap'],\n  font: ['fontFamily', 'fontFeatureSettings', 'fontKerning', 'fontLanguageOverride', 'fontSize', 'fontSizeAdjust', 'fontStretch', 'fontStyle', 'fontVariant', 'fontVariantAlternates', 'fontVariantCaps', 'fontVariantEastAsian', 'fontVariantLigatures', 'fontVariantNumeric', 'fontVariantPosition', 'fontWeight', 'lineHeight'],\n  fontVariant: ['fontVariantAlternates', 'fontVariantCaps', 'fontVariantEastAsian', 'fontVariantLigatures', 'fontVariantNumeric', 'fontVariantPosition'],\n  gap: ['columnGap', 'rowGap'],\n  grid: ['gridAutoColumns', 'gridAutoFlow', 'gridAutoRows', 'gridTemplateAreas', 'gridTemplateColumns', 'gridTemplateRows'],\n  gridArea: ['gridColumnEnd', 'gridColumnStart', 'gridRowEnd', 'gridRowStart'],\n  gridColumn: ['gridColumnEnd', 'gridColumnStart'],\n  gridColumnGap: ['columnGap'],\n  gridGap: ['columnGap', 'rowGap'],\n  gridRow: ['gridRowEnd', 'gridRowStart'],\n  gridRowGap: ['rowGap'],\n  gridTemplate: ['gridTemplateAreas', 'gridTemplateColumns', 'gridTemplateRows'],\n  listStyle: ['listStyleImage', 'listStylePosition', 'listStyleType'],\n  margin: ['marginBottom', 'marginLeft', 'marginRight', 'marginTop'],\n  marker: ['markerEnd', 'markerMid', 'markerStart'],\n  mask: ['maskClip', 'maskComposite', 'maskImage', 'maskMode', 'maskOrigin', 'maskPositionX', 'maskPositionY', 'maskRepeat', 'maskSize'],\n  maskPosition: ['maskPositionX', 'maskPositionY'],\n  outline: ['outlineColor', 'outlineStyle', 'outlineWidth'],\n  overflow: ['overflowX', 'overflowY'],\n  padding: ['paddingBottom', 'paddingLeft', 'paddingRight', 'paddingTop'],\n  placeContent: ['alignContent', 'justifyContent'],\n  placeItems: ['alignItems', 'justifyItems'],\n  placeSelf: ['alignSelf', 'justifySelf'],\n  textDecoration: ['textDecorationColor', 'textDecorationLine', 'textDecorationStyle'],\n  textEmphasis: ['textEmphasisColor', 'textEmphasisStyle'],\n  transition: ['transitionDelay', 'transitionDuration', 'transitionProperty', 'transitionTimingFunction'],\n  wordWrap: ['overflowWrap']\n};\n\n/**\n * CSS properties which accept numbers but are not in units of \"px\".\n */\nvar isUnitlessNumber = {\n  animationIterationCount: true,\n  aspectRatio: true,\n  borderImageOutset: true,\n  borderImageSlice: true,\n  borderImageWidth: true,\n  boxFlex: true,\n  boxFlexGroup: true,\n  boxOrdinalGroup: true,\n  columnCount: true,\n  columns: true,\n  flex: true,\n  flexGrow: true,\n  flexPositive: true,\n  flexShrink: true,\n  flexNegative: true,\n  flexOrder: true,\n  gridArea: true,\n  gridRow: true,\n  gridRowEnd: true,\n  gridRowSpan: true,\n  gridRowStart: true,\n  gridColumn: true,\n  gridColumnEnd: true,\n  gridColumnSpan: true,\n  gridColumnStart: true,\n  fontWeight: true,\n  lineClamp: true,\n  lineHeight: true,\n  opacity: true,\n  order: true,\n  orphans: true,\n  tabSize: true,\n  widows: true,\n  zIndex: true,\n  zoom: true,\n  // SVG-related properties\n  fillOpacity: true,\n  floodOpacity: true,\n  stopOpacity: true,\n  strokeDasharray: true,\n  strokeDashoffset: true,\n  strokeMiterlimit: true,\n  strokeOpacity: true,\n  strokeWidth: true\n};\n/**\n * @param {string} prefix vendor-specific prefix, eg: Webkit\n * @param {string} key style name, eg: transitionDuration\n * @return {string} style name prefixed with `prefix`, properly camelCased, eg:\n * WebkitTransitionDuration\n */\n\nfunction prefixKey(prefix, key) {\n  return prefix + key.charAt(0).toUpperCase() + key.substring(1);\n}\n/**\n * Support style names that may come passed in prefixed by adding permutations\n * of vendor prefixes.\n */\n\n\nvar prefixes = ['Webkit', 'ms', 'Moz', 'O']; // Using Object.keys here, or else the vanilla for-in loop makes IE8 go into an\n// infinite loop, because it iterates over the newly added props too.\n\nObject.keys(isUnitlessNumber).forEach(function (prop) {\n  prefixes.forEach(function (prefix) {\n    isUnitlessNumber[prefixKey(prefix, prop)] = isUnitlessNumber[prop];\n  });\n});\n\n/**\n * Convert a value into the proper css writable value. The style name `name`\n * should be logical (no hyphens), as specified\n * in `CSSProperty.isUnitlessNumber`.\n *\n * @param {string} name CSS property name such as `topMargin`.\n * @param {*} value CSS property value such as `10px`.\n * @return {string} Normalized style value with dimensions applied.\n */\n\nfunction dangerousStyleValue(name, value, isCustomProperty) {\n  // Note that we've removed escapeTextForBrowser() calls here since the\n  // whole string will be escaped when the attribute is injected into\n  // the markup. If you provide unsafe user data here they can inject\n  // arbitrary CSS which may be problematic (I couldn't repro this):\n  // https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet\n  // http://www.thespanner.co.uk/2007/11/26/ultimate-xss-css-injection/\n  // This is not an XSS hole but instead a potential CSS injection issue\n  // which has lead to a greater discussion about how we're going to\n  // trust URLs moving forward. See #2115901\n  var isEmpty = value == null || typeof value === 'boolean' || value === '';\n\n  if (isEmpty) {\n    return '';\n  }\n\n  if (!isCustomProperty && typeof value === 'number' && value !== 0 && !(isUnitlessNumber.hasOwnProperty(name) && isUnitlessNumber[name])) {\n    return value + 'px'; // Presumes implicit 'px' suffix for unitless numbers\n  }\n\n  {\n    checkCSSPropertyStringCoercion(value, name);\n  }\n\n  return ('' + value).trim();\n}\n\nvar uppercasePattern = /([A-Z])/g;\nvar msPattern = /^ms-/;\n/**\n * Hyphenates a camelcased CSS property name, for example:\n *\n *   > hyphenateStyleName('backgroundColor')\n *   < \"background-color\"\n *   > hyphenateStyleName('MozTransition')\n *   < \"-moz-transition\"\n *   > hyphenateStyleName('msTransition')\n *   < \"-ms-transition\"\n *\n * As Modernizr suggests (http://modernizr.com/docs/#prefixed), an `ms` prefix\n * is converted to `-ms-`.\n */\n\nfunction hyphenateStyleName(name) {\n  return name.replace(uppercasePattern, '-$1').toLowerCase().replace(msPattern, '-ms-');\n}\n\nvar warnValidStyle = function () {};\n\n{\n  // 'msTransform' is correct, but the other prefixes should be capitalized\n  var badVendoredStyleNamePattern = /^(?:webkit|moz|o)[A-Z]/;\n  var msPattern$1 = /^-ms-/;\n  var hyphenPattern = /-(.)/g; // style values shouldn't contain a semicolon\n\n  var badStyleValueWithSemicolonPattern = /;\\s*$/;\n  var warnedStyleNames = {};\n  var warnedStyleValues = {};\n  var warnedForNaNValue = false;\n  var warnedForInfinityValue = false;\n\n  var camelize = function (string) {\n    return string.replace(hyphenPattern, function (_, character) {\n      return character.toUpperCase();\n    });\n  };\n\n  var warnHyphenatedStyleName = function (name) {\n    if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) {\n      return;\n    }\n\n    warnedStyleNames[name] = true;\n\n    error('Unsupported style property %s. Did you mean %s?', name, // As Andi Smith suggests\n    // (http://www.andismith.com/blog/2012/02/modernizr-prefixed/), an `-ms` prefix\n    // is converted to lowercase `ms`.\n    camelize(name.replace(msPattern$1, 'ms-')));\n  };\n\n  var warnBadVendoredStyleName = function (name) {\n    if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) {\n      return;\n    }\n\n    warnedStyleNames[name] = true;\n\n    error('Unsupported vendor-prefixed style property %s. Did you mean %s?', name, name.charAt(0).toUpperCase() + name.slice(1));\n  };\n\n  var warnStyleValueWithSemicolon = function (name, value) {\n    if (warnedStyleValues.hasOwnProperty(value) && warnedStyleValues[value]) {\n      return;\n    }\n\n    warnedStyleValues[value] = true;\n\n    error(\"Style property values shouldn't contain a semicolon. \" + 'Try \"%s: %s\" instead.', name, value.replace(badStyleValueWithSemicolonPattern, ''));\n  };\n\n  var warnStyleValueIsNaN = function (name, value) {\n    if (warnedForNaNValue) {\n      return;\n    }\n\n    warnedForNaNValue = true;\n\n    error('`NaN` is an invalid value for the `%s` css style property.', name);\n  };\n\n  var warnStyleValueIsInfinity = function (name, value) {\n    if (warnedForInfinityValue) {\n      return;\n    }\n\n    warnedForInfinityValue = true;\n\n    error('`Infinity` is an invalid value for the `%s` css style property.', name);\n  };\n\n  warnValidStyle = function (name, value) {\n    if (name.indexOf('-') > -1) {\n      warnHyphenatedStyleName(name);\n    } else if (badVendoredStyleNamePattern.test(name)) {\n      warnBadVendoredStyleName(name);\n    } else if (badStyleValueWithSemicolonPattern.test(value)) {\n      warnStyleValueWithSemicolon(name, value);\n    }\n\n    if (typeof value === 'number') {\n      if (isNaN(value)) {\n        warnStyleValueIsNaN(name, value);\n      } else if (!isFinite(value)) {\n        warnStyleValueIsInfinity(name, value);\n      }\n    }\n  };\n}\n\nvar warnValidStyle$1 = warnValidStyle;\n\n/**\n * Operations for dealing with CSS properties.\n */\n\n/**\n * This creates a string that is expected to be equivalent to the style\n * attribute generated by server-side rendering. It by-passes warnings and\n * security checks so it's not safe to use this value for anything other than\n * comparison. It is only used in DEV for SSR validation.\n */\n\nfunction createDangerousStringForStyles(styles) {\n  {\n    var serialized = '';\n    var delimiter = '';\n\n    for (var styleName in styles) {\n      if (!styles.hasOwnProperty(styleName)) {\n        continue;\n      }\n\n      var styleValue = styles[styleName];\n\n      if (styleValue != null) {\n        var isCustomProperty = styleName.indexOf('--') === 0;\n        serialized += delimiter + (isCustomProperty ? styleName : hyphenateStyleName(styleName)) + ':';\n        serialized += dangerousStyleValue(styleName, styleValue, isCustomProperty);\n        delimiter = ';';\n      }\n    }\n\n    return serialized || null;\n  }\n}\n/**\n * Sets the value for multiple styles on a node.  If a value is specified as\n * '' (empty string), the corresponding style property will be unset.\n *\n * @param {DOMElement} node\n * @param {object} styles\n */\n\nfunction setValueForStyles(node, styles) {\n  var style = node.style;\n\n  for (var styleName in styles) {\n    if (!styles.hasOwnProperty(styleName)) {\n      continue;\n    }\n\n    var isCustomProperty = styleName.indexOf('--') === 0;\n\n    {\n      if (!isCustomProperty) {\n        warnValidStyle$1(styleName, styles[styleName]);\n      }\n    }\n\n    var styleValue = dangerousStyleValue(styleName, styles[styleName], isCustomProperty);\n\n    if (styleName === 'float') {\n      styleName = 'cssFloat';\n    }\n\n    if (isCustomProperty) {\n      style.setProperty(styleName, styleValue);\n    } else {\n      style[styleName] = styleValue;\n    }\n  }\n}\n\nfunction isValueEmpty(value) {\n  return value == null || typeof value === 'boolean' || value === '';\n}\n/**\n * Given {color: 'red', overflow: 'hidden'} returns {\n *   color: 'color',\n *   overflowX: 'overflow',\n *   overflowY: 'overflow',\n * }. This can be read as \"the overflowY property was set by the overflow\n * shorthand\". That is, the values are the property that each was derived from.\n */\n\n\nfunction expandShorthandMap(styles) {\n  var expanded = {};\n\n  for (var key in styles) {\n    var longhands = shorthandToLonghand[key] || [key];\n\n    for (var i = 0; i < longhands.length; i++) {\n      expanded[longhands[i]] = key;\n    }\n  }\n\n  return expanded;\n}\n/**\n * When mixing shorthand and longhand property names, we warn during updates if\n * we expect an incorrect result to occur. In particular, we warn for:\n *\n * Updating a shorthand property (longhand gets overwritten):\n *   {font: 'foo', fontVariant: 'bar'} -> {font: 'baz', fontVariant: 'bar'}\n *   becomes .style.font = 'baz'\n * Removing a shorthand property (longhand gets lost too):\n *   {font: 'foo', fontVariant: 'bar'} -> {fontVariant: 'bar'}\n *   becomes .style.font = ''\n * Removing a longhand property (should revert to shorthand; doesn't):\n *   {font: 'foo', fontVariant: 'bar'} -> {font: 'foo'}\n *   becomes .style.fontVariant = ''\n */\n\n\nfunction validateShorthandPropertyCollisionInDev(styleUpdates, nextStyles) {\n  {\n    if (!nextStyles) {\n      return;\n    }\n\n    var expandedUpdates = expandShorthandMap(styleUpdates);\n    var expandedStyles = expandShorthandMap(nextStyles);\n    var warnedAbout = {};\n\n    for (var key in expandedUpdates) {\n      var originalKey = expandedUpdates[key];\n      var correctOriginalKey = expandedStyles[key];\n\n      if (correctOriginalKey && originalKey !== correctOriginalKey) {\n        var warningKey = originalKey + ',' + correctOriginalKey;\n\n        if (warnedAbout[warningKey]) {\n          continue;\n        }\n\n        warnedAbout[warningKey] = true;\n\n        error('%s a style property during rerender (%s) when a ' + 'conflicting property is set (%s) can lead to styling bugs. To ' + \"avoid this, don't mix shorthand and non-shorthand properties \" + 'for the same value; instead, replace the shorthand with ' + 'separate values.', isValueEmpty(styleUpdates[originalKey]) ? 'Removing' : 'Updating', originalKey, correctOriginalKey);\n      }\n    }\n  }\n}\n\n// For HTML, certain tags should omit their close tag. We keep a list for\n// those special-case tags.\nvar omittedCloseTags = {\n  area: true,\n  base: true,\n  br: true,\n  col: true,\n  embed: true,\n  hr: true,\n  img: true,\n  input: true,\n  keygen: true,\n  link: true,\n  meta: true,\n  param: true,\n  source: true,\n  track: true,\n  wbr: true // NOTE: menuitem's close tag should be omitted, but that causes problems.\n\n};\n\n// `omittedCloseTags` except that `menuitem` should still have its closing tag.\n\nvar voidElementTags = assign({\n  menuitem: true\n}, omittedCloseTags);\n\nvar HTML = '__html';\n\nfunction assertValidProps(tag, props) {\n  if (!props) {\n    return;\n  } // Note the use of `==` which checks for null or undefined.\n\n\n  if (voidElementTags[tag]) {\n    if (props.children != null || props.dangerouslySetInnerHTML != null) {\n      throw new Error(tag + \" is a void element tag and must neither have `children` nor \" + 'use `dangerouslySetInnerHTML`.');\n    }\n  }\n\n  if (props.dangerouslySetInnerHTML != null) {\n    if (props.children != null) {\n      throw new Error('Can only set one of `children` or `props.dangerouslySetInnerHTML`.');\n    }\n\n    if (typeof props.dangerouslySetInnerHTML !== 'object' || !(HTML in props.dangerouslySetInnerHTML)) {\n      throw new Error('`props.dangerouslySetInnerHTML` must be in the form `{__html: ...}`. ' + 'Please visit https://reactjs.org/link/dangerously-set-inner-html ' + 'for more information.');\n    }\n  }\n\n  {\n    if (!props.suppressContentEditableWarning && props.contentEditable && props.children != null) {\n      error('A component is `contentEditable` and contains `children` managed by ' + 'React. It is now your responsibility to guarantee that none of ' + 'those nodes are unexpectedly modified or duplicated. This is ' + 'probably not intentional.');\n    }\n  }\n\n  if (props.style != null && typeof props.style !== 'object') {\n    throw new Error('The `style` prop expects a mapping from style properties to values, ' + \"not a string. For example, style={{marginRight: spacing + 'em'}} when \" + 'using JSX.');\n  }\n}\n\nfunction isCustomComponent(tagName, props) {\n  if (tagName.indexOf('-') === -1) {\n    return typeof props.is === 'string';\n  }\n\n  switch (tagName) {\n    // These are reserved SVG and MathML elements.\n    // We don't mind this list too much because we expect it to never grow.\n    // The alternative is to track the namespace in a few places which is convoluted.\n    // https://w3c.github.io/webcomponents/spec/custom/#custom-elements-core-concepts\n    case 'annotation-xml':\n    case 'color-profile':\n    case 'font-face':\n    case 'font-face-src':\n    case 'font-face-uri':\n    case 'font-face-format':\n    case 'font-face-name':\n    case 'missing-glyph':\n      return false;\n\n    default:\n      return true;\n  }\n}\n\n// When adding attributes to the HTML or SVG allowed attribute list, be sure to\n// also add them to this module to ensure casing and incorrect name\n// warnings.\nvar possibleStandardNames = {\n  // HTML\n  accept: 'accept',\n  acceptcharset: 'acceptCharset',\n  'accept-charset': 'acceptCharset',\n  accesskey: 'accessKey',\n  action: 'action',\n  allowfullscreen: 'allowFullScreen',\n  alt: 'alt',\n  as: 'as',\n  async: 'async',\n  autocapitalize: 'autoCapitalize',\n  autocomplete: 'autoComplete',\n  autocorrect: 'autoCorrect',\n  autofocus: 'autoFocus',\n  autoplay: 'autoPlay',\n  autosave: 'autoSave',\n  capture: 'capture',\n  cellpadding: 'cellPadding',\n  cellspacing: 'cellSpacing',\n  challenge: 'challenge',\n  charset: 'charSet',\n  checked: 'checked',\n  children: 'children',\n  cite: 'cite',\n  class: 'className',\n  classid: 'classID',\n  classname: 'className',\n  cols: 'cols',\n  colspan: 'colSpan',\n  content: 'content',\n  contenteditable: 'contentEditable',\n  contextmenu: 'contextMenu',\n  controls: 'controls',\n  controlslist: 'controlsList',\n  coords: 'coords',\n  crossorigin: 'crossOrigin',\n  dangerouslysetinnerhtml: 'dangerouslySetInnerHTML',\n  data: 'data',\n  datetime: 'dateTime',\n  default: 'default',\n  defaultchecked: 'defaultChecked',\n  defaultvalue: 'defaultValue',\n  defer: 'defer',\n  dir: 'dir',\n  disabled: 'disabled',\n  disablepictureinpicture: 'disablePictureInPicture',\n  disableremoteplayback: 'disableRemotePlayback',\n  download: 'download',\n  draggable: 'draggable',\n  enctype: 'encType',\n  enterkeyhint: 'enterKeyHint',\n  for: 'htmlFor',\n  form: 'form',\n  formmethod: 'formMethod',\n  formaction: 'formAction',\n  formenctype: 'formEncType',\n  formnovalidate: 'formNoValidate',\n  formtarget: 'formTarget',\n  frameborder: 'frameBorder',\n  headers: 'headers',\n  height: 'height',\n  hidden: 'hidden',\n  high: 'high',\n  href: 'href',\n  hreflang: 'hrefLang',\n  htmlfor: 'htmlFor',\n  httpequiv: 'httpEquiv',\n  'http-equiv': 'httpEquiv',\n  icon: 'icon',\n  id: 'id',\n  imagesizes: 'imageSizes',\n  imagesrcset: 'imageSrcSet',\n  innerhtml: 'innerHTML',\n  inputmode: 'inputMode',\n  integrity: 'integrity',\n  is: 'is',\n  itemid: 'itemID',\n  itemprop: 'itemProp',\n  itemref: 'itemRef',\n  itemscope: 'itemScope',\n  itemtype: 'itemType',\n  keyparams: 'keyParams',\n  keytype: 'keyType',\n  kind: 'kind',\n  label: 'label',\n  lang: 'lang',\n  list: 'list',\n  loop: 'loop',\n  low: 'low',\n  manifest: 'manifest',\n  marginwidth: 'marginWidth',\n  marginheight: 'marginHeight',\n  max: 'max',\n  maxlength: 'maxLength',\n  media: 'media',\n  mediagroup: 'mediaGroup',\n  method: 'method',\n  min: 'min',\n  minlength: 'minLength',\n  multiple: 'multiple',\n  muted: 'muted',\n  name: 'name',\n  nomodule: 'noModule',\n  nonce: 'nonce',\n  novalidate: 'noValidate',\n  open: 'open',\n  optimum: 'optimum',\n  pattern: 'pattern',\n  placeholder: 'placeholder',\n  playsinline: 'playsInline',\n  poster: 'poster',\n  preload: 'preload',\n  profile: 'profile',\n  radiogroup: 'radioGroup',\n  readonly: 'readOnly',\n  referrerpolicy: 'referrerPolicy',\n  rel: 'rel',\n  required: 'required',\n  reversed: 'reversed',\n  role: 'role',\n  rows: 'rows',\n  rowspan: 'rowSpan',\n  sandbox: 'sandbox',\n  scope: 'scope',\n  scoped: 'scoped',\n  scrolling: 'scrolling',\n  seamless: 'seamless',\n  selected: 'selected',\n  shape: 'shape',\n  size: 'size',\n  sizes: 'sizes',\n  span: 'span',\n  spellcheck: 'spellCheck',\n  src: 'src',\n  srcdoc: 'srcDoc',\n  srclang: 'srcLang',\n  srcset: 'srcSet',\n  start: 'start',\n  step: 'step',\n  style: 'style',\n  summary: 'summary',\n  tabindex: 'tabIndex',\n  target: 'target',\n  title: 'title',\n  type: 'type',\n  usemap: 'useMap',\n  value: 'value',\n  width: 'width',\n  wmode: 'wmode',\n  wrap: 'wrap',\n  // SVG\n  about: 'about',\n  accentheight: 'accentHeight',\n  'accent-height': 'accentHeight',\n  accumulate: 'accumulate',\n  additive: 'additive',\n  alignmentbaseline: 'alignmentBaseline',\n  'alignment-baseline': 'alignmentBaseline',\n  allowreorder: 'allowReorder',\n  alphabetic: 'alphabetic',\n  amplitude: 'amplitude',\n  arabicform: 'arabicForm',\n  'arabic-form': 'arabicForm',\n  ascent: 'ascent',\n  attributename: 'attributeName',\n  attributetype: 'attributeType',\n  autoreverse: 'autoReverse',\n  azimuth: 'azimuth',\n  basefrequency: 'baseFrequency',\n  baselineshift: 'baselineShift',\n  'baseline-shift': 'baselineShift',\n  baseprofile: 'baseProfile',\n  bbox: 'bbox',\n  begin: 'begin',\n  bias: 'bias',\n  by: 'by',\n  calcmode: 'calcMode',\n  capheight: 'capHeight',\n  'cap-height': 'capHeight',\n  clip: 'clip',\n  clippath: 'clipPath',\n  'clip-path': 'clipPath',\n  clippathunits: 'clipPathUnits',\n  cliprule: 'clipRule',\n  'clip-rule': 'clipRule',\n  color: 'color',\n  colorinterpolation: 'colorInterpolation',\n  'color-interpolation': 'colorInterpolation',\n  colorinterpolationfilters: 'colorInterpolationFilters',\n  'color-interpolation-filters': 'colorInterpolationFilters',\n  colorprofile: 'colorProfile',\n  'color-profile': 'colorProfile',\n  colorrendering: 'colorRendering',\n  'color-rendering': 'colorRendering',\n  contentscripttype: 'contentScriptType',\n  contentstyletype: 'contentStyleType',\n  cursor: 'cursor',\n  cx: 'cx',\n  cy: 'cy',\n  d: 'd',\n  datatype: 'datatype',\n  decelerate: 'decelerate',\n  descent: 'descent',\n  diffuseconstant: 'diffuseConstant',\n  direction: 'direction',\n  display: 'display',\n  divisor: 'divisor',\n  dominantbaseline: 'dominantBaseline',\n  'dominant-baseline': 'dominantBaseline',\n  dur: 'dur',\n  dx: 'dx',\n  dy: 'dy',\n  edgemode: 'edgeMode',\n  elevation: 'elevation',\n  enablebackground: 'enableBackground',\n  'enable-background': 'enableBackground',\n  end: 'end',\n  exponent: 'exponent',\n  externalresourcesrequired: 'externalResourcesRequired',\n  fill: 'fill',\n  fillopacity: 'fillOpacity',\n  'fill-opacity': 'fillOpacity',\n  fillrule: 'fillRule',\n  'fill-rule': 'fillRule',\n  filter: 'filter',\n  filterres: 'filterRes',\n  filterunits: 'filterUnits',\n  floodopacity: 'floodOpacity',\n  'flood-opacity': 'floodOpacity',\n  floodcolor: 'floodColor',\n  'flood-color': 'floodColor',\n  focusable: 'focusable',\n  fontfamily: 'fontFamily',\n  'font-family': 'fontFamily',\n  fontsize: 'fontSize',\n  'font-size': 'fontSize',\n  fontsizeadjust: 'fontSizeAdjust',\n  'font-size-adjust': 'fontSizeAdjust',\n  fontstretch: 'fontStretch',\n  'font-stretch': 'fontStretch',\n  fontstyle: 'fontStyle',\n  'font-style': 'fontStyle',\n  fontvariant: 'fontVariant',\n  'font-variant': 'fontVariant',\n  fontweight: 'fontWeight',\n  'font-weight': 'fontWeight',\n  format: 'format',\n  from: 'from',\n  fx: 'fx',\n  fy: 'fy',\n  g1: 'g1',\n  g2: 'g2',\n  glyphname: 'glyphName',\n  'glyph-name': 'glyphName',\n  glyphorientationhorizontal: 'glyphOrientationHorizontal',\n  'glyph-orientation-horizontal': 'glyphOrientationHorizontal',\n  glyphorientationvertical: 'glyphOrientationVertical',\n  'glyph-orientation-vertical': 'glyphOrientationVertical',\n  glyphref: 'glyphRef',\n  gradienttransform: 'gradientTransform',\n  gradientunits: 'gradientUnits',\n  hanging: 'hanging',\n  horizadvx: 'horizAdvX',\n  'horiz-adv-x': 'horizAdvX',\n  horizoriginx: 'horizOriginX',\n  'horiz-origin-x': 'horizOriginX',\n  ideographic: 'ideographic',\n  imagerendering: 'imageRendering',\n  'image-rendering': 'imageRendering',\n  in2: 'in2',\n  in: 'in',\n  inlist: 'inlist',\n  intercept: 'intercept',\n  k1: 'k1',\n  k2: 'k2',\n  k3: 'k3',\n  k4: 'k4',\n  k: 'k',\n  kernelmatrix: 'kernelMatrix',\n  kernelunitlength: 'kernelUnitLength',\n  kerning: 'kerning',\n  keypoints: 'keyPoints',\n  keysplines: 'keySplines',\n  keytimes: 'keyTimes',\n  lengthadjust: 'lengthAdjust',\n  letterspacing: 'letterSpacing',\n  'letter-spacing': 'letterSpacing',\n  lightingcolor: 'lightingColor',\n  'lighting-color': 'lightingColor',\n  limitingconeangle: 'limitingConeAngle',\n  local: 'local',\n  markerend: 'markerEnd',\n  'marker-end': 'markerEnd',\n  markerheight: 'markerHeight',\n  markermid: 'markerMid',\n  'marker-mid': 'markerMid',\n  markerstart: 'markerStart',\n  'marker-start': 'markerStart',\n  markerunits: 'markerUnits',\n  markerwidth: 'markerWidth',\n  mask: 'mask',\n  maskcontentunits: 'maskContentUnits',\n  maskunits: 'maskUnits',\n  mathematical: 'mathematical',\n  mode: 'mode',\n  numoctaves: 'numOctaves',\n  offset: 'offset',\n  opacity: 'opacity',\n  operator: 'operator',\n  order: 'order',\n  orient: 'orient',\n  orientation: 'orientation',\n  origin: 'origin',\n  overflow: 'overflow',\n  overlineposition: 'overlinePosition',\n  'overline-position': 'overlinePosition',\n  overlinethickness: 'overlineThickness',\n  'overline-thickness': 'overlineThickness',\n  paintorder: 'paintOrder',\n  'paint-order': 'paintOrder',\n  panose1: 'panose1',\n  'panose-1': 'panose1',\n  pathlength: 'pathLength',\n  patterncontentunits: 'patternContentUnits',\n  patterntransform: 'patternTransform',\n  patternunits: 'patternUnits',\n  pointerevents: 'pointerEvents',\n  'pointer-events': 'pointerEvents',\n  points: 'points',\n  pointsatx: 'pointsAtX',\n  pointsaty: 'pointsAtY',\n  pointsatz: 'pointsAtZ',\n  prefix: 'prefix',\n  preservealpha: 'preserveAlpha',\n  preserveaspectratio: 'preserveAspectRatio',\n  primitiveunits: 'primitiveUnits',\n  property: 'property',\n  r: 'r',\n  radius: 'radius',\n  refx: 'refX',\n  refy: 'refY',\n  renderingintent: 'renderingIntent',\n  'rendering-intent': 'renderingIntent',\n  repeatcount: 'repeatCount',\n  repeatdur: 'repeatDur',\n  requiredextensions: 'requiredExtensions',\n  requiredfeatures: 'requiredFeatures',\n  resource: 'resource',\n  restart: 'restart',\n  result: 'result',\n  results: 'results',\n  rotate: 'rotate',\n  rx: 'rx',\n  ry: 'ry',\n  scale: 'scale',\n  security: 'security',\n  seed: 'seed',\n  shaperendering: 'shapeRendering',\n  'shape-rendering': 'shapeRendering',\n  slope: 'slope',\n  spacing: 'spacing',\n  specularconstant: 'specularConstant',\n  specularexponent: 'specularExponent',\n  speed: 'speed',\n  spreadmethod: 'spreadMethod',\n  startoffset: 'startOffset',\n  stddeviation: 'stdDeviation',\n  stemh: 'stemh',\n  stemv: 'stemv',\n  stitchtiles: 'stitchTiles',\n  stopcolor: 'stopColor',\n  'stop-color': 'stopColor',\n  stopopacity: 'stopOpacity',\n  'stop-opacity': 'stopOpacity',\n  strikethroughposition: 'strikethroughPosition',\n  'strikethrough-position': 'strikethroughPosition',\n  strikethroughthickness: 'strikethroughThickness',\n  'strikethrough-thickness': 'strikethroughThickness',\n  string: 'string',\n  stroke: 'stroke',\n  strokedasharray: 'strokeDasharray',\n  'stroke-dasharray': 'strokeDasharray',\n  strokedashoffset: 'strokeDashoffset',\n  'stroke-dashoffset': 'strokeDashoffset',\n  strokelinecap: 'strokeLinecap',\n  'stroke-linecap': 'strokeLinecap',\n  strokelinejoin: 'strokeLinejoin',\n  'stroke-linejoin': 'strokeLinejoin',\n  strokemiterlimit: 'strokeMiterlimit',\n  'stroke-miterlimit': 'strokeMiterlimit',\n  strokewidth: 'strokeWidth',\n  'stroke-width': 'strokeWidth',\n  strokeopacity: 'strokeOpacity',\n  'stroke-opacity': 'strokeOpacity',\n  suppresscontenteditablewarning: 'suppressContentEditableWarning',\n  suppresshydrationwarning: 'suppressHydrationWarning',\n  surfacescale: 'surfaceScale',\n  systemlanguage: 'systemLanguage',\n  tablevalues: 'tableValues',\n  targetx: 'targetX',\n  targety: 'targetY',\n  textanchor: 'textAnchor',\n  'text-anchor': 'textAnchor',\n  textdecoration: 'textDecoration',\n  'text-decoration': 'textDecoration',\n  textlength: 'textLength',\n  textrendering: 'textRendering',\n  'text-rendering': 'textRendering',\n  to: 'to',\n  transform: 'transform',\n  typeof: 'typeof',\n  u1: 'u1',\n  u2: 'u2',\n  underlineposition: 'underlinePosition',\n  'underline-position': 'underlinePosition',\n  underlinethickness: 'underlineThickness',\n  'underline-thickness': 'underlineThickness',\n  unicode: 'unicode',\n  unicodebidi: 'unicodeBidi',\n  'unicode-bidi': 'unicodeBidi',\n  unicoderange: 'unicodeRange',\n  'unicode-range': 'unicodeRange',\n  unitsperem: 'unitsPerEm',\n  'units-per-em': 'unitsPerEm',\n  unselectable: 'unselectable',\n  valphabetic: 'vAlphabetic',\n  'v-alphabetic': 'vAlphabetic',\n  values: 'values',\n  vectoreffect: 'vectorEffect',\n  'vector-effect': 'vectorEffect',\n  version: 'version',\n  vertadvy: 'vertAdvY',\n  'vert-adv-y': 'vertAdvY',\n  vertoriginx: 'vertOriginX',\n  'vert-origin-x': 'vertOriginX',\n  vertoriginy: 'vertOriginY',\n  'vert-origin-y': 'vertOriginY',\n  vhanging: 'vHanging',\n  'v-hanging': 'vHanging',\n  videographic: 'vIdeographic',\n  'v-ideographic': 'vIdeographic',\n  viewbox: 'viewBox',\n  viewtarget: 'viewTarget',\n  visibility: 'visibility',\n  vmathematical: 'vMathematical',\n  'v-mathematical': 'vMathematical',\n  vocab: 'vocab',\n  widths: 'widths',\n  wordspacing: 'wordSpacing',\n  'word-spacing': 'wordSpacing',\n  writingmode: 'writingMode',\n  'writing-mode': 'writingMode',\n  x1: 'x1',\n  x2: 'x2',\n  x: 'x',\n  xchannelselector: 'xChannelSelector',\n  xheight: 'xHeight',\n  'x-height': 'xHeight',\n  xlinkactuate: 'xlinkActuate',\n  'xlink:actuate': 'xlinkActuate',\n  xlinkarcrole: 'xlinkArcrole',\n  'xlink:arcrole': 'xlinkArcrole',\n  xlinkhref: 'xlinkHref',\n  'xlink:href': 'xlinkHref',\n  xlinkrole: 'xlinkRole',\n  'xlink:role': 'xlinkRole',\n  xlinkshow: 'xlinkShow',\n  'xlink:show': 'xlinkShow',\n  xlinktitle: 'xlinkTitle',\n  'xlink:title': 'xlinkTitle',\n  xlinktype: 'xlinkType',\n  'xlink:type': 'xlinkType',\n  xmlbase: 'xmlBase',\n  'xml:base': 'xmlBase',\n  xmllang: 'xmlLang',\n  'xml:lang': 'xmlLang',\n  xmlns: 'xmlns',\n  'xml:space': 'xmlSpace',\n  xmlnsxlink: 'xmlnsXlink',\n  'xmlns:xlink': 'xmlnsXlink',\n  xmlspace: 'xmlSpace',\n  y1: 'y1',\n  y2: 'y2',\n  y: 'y',\n  ychannelselector: 'yChannelSelector',\n  z: 'z',\n  zoomandpan: 'zoomAndPan'\n};\n\nvar ariaProperties = {\n  'aria-current': 0,\n  // state\n  'aria-description': 0,\n  'aria-details': 0,\n  'aria-disabled': 0,\n  // state\n  'aria-hidden': 0,\n  // state\n  'aria-invalid': 0,\n  // state\n  'aria-keyshortcuts': 0,\n  'aria-label': 0,\n  'aria-roledescription': 0,\n  // Widget Attributes\n  'aria-autocomplete': 0,\n  'aria-checked': 0,\n  'aria-expanded': 0,\n  'aria-haspopup': 0,\n  'aria-level': 0,\n  'aria-modal': 0,\n  'aria-multiline': 0,\n  'aria-multiselectable': 0,\n  'aria-orientation': 0,\n  'aria-placeholder': 0,\n  'aria-pressed': 0,\n  'aria-readonly': 0,\n  'aria-required': 0,\n  'aria-selected': 0,\n  'aria-sort': 0,\n  'aria-valuemax': 0,\n  'aria-valuemin': 0,\n  'aria-valuenow': 0,\n  'aria-valuetext': 0,\n  // Live Region Attributes\n  'aria-atomic': 0,\n  'aria-busy': 0,\n  'aria-live': 0,\n  'aria-relevant': 0,\n  // Drag-and-Drop Attributes\n  'aria-dropeffect': 0,\n  'aria-grabbed': 0,\n  // Relationship Attributes\n  'aria-activedescendant': 0,\n  'aria-colcount': 0,\n  'aria-colindex': 0,\n  'aria-colspan': 0,\n  'aria-controls': 0,\n  'aria-describedby': 0,\n  'aria-errormessage': 0,\n  'aria-flowto': 0,\n  'aria-labelledby': 0,\n  'aria-owns': 0,\n  'aria-posinset': 0,\n  'aria-rowcount': 0,\n  'aria-rowindex': 0,\n  'aria-rowspan': 0,\n  'aria-setsize': 0\n};\n\nvar warnedProperties = {};\nvar rARIA = new RegExp('^(aria)-[' + ATTRIBUTE_NAME_CHAR + ']*$');\nvar rARIACamel = new RegExp('^(aria)[A-Z][' + ATTRIBUTE_NAME_CHAR + ']*$');\n\nfunction validateProperty(tagName, name) {\n  {\n    if (hasOwnProperty.call(warnedProperties, name) && warnedProperties[name]) {\n      return true;\n    }\n\n    if (rARIACamel.test(name)) {\n      var ariaName = 'aria-' + name.slice(4).toLowerCase();\n      var correctName = ariaProperties.hasOwnProperty(ariaName) ? ariaName : null; // If this is an aria-* attribute, but is not listed in the known DOM\n      // DOM properties, then it is an invalid aria-* attribute.\n\n      if (correctName == null) {\n        error('Invalid ARIA attribute `%s`. ARIA attributes follow the pattern aria-* and must be lowercase.', name);\n\n        warnedProperties[name] = true;\n        return true;\n      } // aria-* attributes should be lowercase; suggest the lowercase version.\n\n\n      if (name !== correctName) {\n        error('Invalid ARIA attribute `%s`. Did you mean `%s`?', name, correctName);\n\n        warnedProperties[name] = true;\n        return true;\n      }\n    }\n\n    if (rARIA.test(name)) {\n      var lowerCasedName = name.toLowerCase();\n      var standardName = ariaProperties.hasOwnProperty(lowerCasedName) ? lowerCasedName : null; // If this is an aria-* attribute, but is not listed in the known DOM\n      // DOM properties, then it is an invalid aria-* attribute.\n\n      if (standardName == null) {\n        warnedProperties[name] = true;\n        return false;\n      } // aria-* attributes should be lowercase; suggest the lowercase version.\n\n\n      if (name !== standardName) {\n        error('Unknown ARIA attribute `%s`. Did you mean `%s`?', name, standardName);\n\n        warnedProperties[name] = true;\n        return true;\n      }\n    }\n  }\n\n  return true;\n}\n\nfunction warnInvalidARIAProps(type, props) {\n  {\n    var invalidProps = [];\n\n    for (var key in props) {\n      var isValid = validateProperty(type, key);\n\n      if (!isValid) {\n        invalidProps.push(key);\n      }\n    }\n\n    var unknownPropString = invalidProps.map(function (prop) {\n      return '`' + prop + '`';\n    }).join(', ');\n\n    if (invalidProps.length === 1) {\n      error('Invalid aria prop %s on <%s> tag. ' + 'For details, see https://reactjs.org/link/invalid-aria-props', unknownPropString, type);\n    } else if (invalidProps.length > 1) {\n      error('Invalid aria props %s on <%s> tag. ' + 'For details, see https://reactjs.org/link/invalid-aria-props', unknownPropString, type);\n    }\n  }\n}\n\nfunction validateProperties(type, props) {\n  if (isCustomComponent(type, props)) {\n    return;\n  }\n\n  warnInvalidARIAProps(type, props);\n}\n\nvar didWarnValueNull = false;\nfunction validateProperties$1(type, props) {\n  {\n    if (type !== 'input' && type !== 'textarea' && type !== 'select') {\n      return;\n    }\n\n    if (props != null && props.value === null && !didWarnValueNull) {\n      didWarnValueNull = true;\n\n      if (type === 'select' && props.multiple) {\n        error('`value` prop on `%s` should not be null. ' + 'Consider using an empty array when `multiple` is set to `true` ' + 'to clear the component or `undefined` for uncontrolled components.', type);\n      } else {\n        error('`value` prop on `%s` should not be null. ' + 'Consider using an empty string to clear the component or `undefined` ' + 'for uncontrolled components.', type);\n      }\n    }\n  }\n}\n\nvar validateProperty$1 = function () {};\n\n{\n  var warnedProperties$1 = {};\n  var EVENT_NAME_REGEX = /^on./;\n  var INVALID_EVENT_NAME_REGEX = /^on[^A-Z]/;\n  var rARIA$1 = new RegExp('^(aria)-[' + ATTRIBUTE_NAME_CHAR + ']*$');\n  var rARIACamel$1 = new RegExp('^(aria)[A-Z][' + ATTRIBUTE_NAME_CHAR + ']*$');\n\n  validateProperty$1 = function (tagName, name, value, eventRegistry) {\n    if (hasOwnProperty.call(warnedProperties$1, name) && warnedProperties$1[name]) {\n      return true;\n    }\n\n    var lowerCasedName = name.toLowerCase();\n\n    if (lowerCasedName === 'onfocusin' || lowerCasedName === 'onfocusout') {\n      error('React uses onFocus and onBlur instead of onFocusIn and onFocusOut. ' + 'All React events are normalized to bubble, so onFocusIn and onFocusOut ' + 'are not needed/supported by React.');\n\n      warnedProperties$1[name] = true;\n      return true;\n    } // We can't rely on the event system being injected on the server.\n\n\n    if (eventRegistry != null) {\n      var registrationNameDependencies = eventRegistry.registrationNameDependencies,\n          possibleRegistrationNames = eventRegistry.possibleRegistrationNames;\n\n      if (registrationNameDependencies.hasOwnProperty(name)) {\n        return true;\n      }\n\n      var registrationName = possibleRegistrationNames.hasOwnProperty(lowerCasedName) ? possibleRegistrationNames[lowerCasedName] : null;\n\n      if (registrationName != null) {\n        error('Invalid event handler property `%s`. Did you mean `%s`?', name, registrationName);\n\n        warnedProperties$1[name] = true;\n        return true;\n      }\n\n      if (EVENT_NAME_REGEX.test(name)) {\n        error('Unknown event handler property `%s`. It will be ignored.', name);\n\n        warnedProperties$1[name] = true;\n        return true;\n      }\n    } else if (EVENT_NAME_REGEX.test(name)) {\n      // If no event plugins have been injected, we are in a server environment.\n      // So we can't tell if the event name is correct for sure, but we can filter\n      // out known bad ones like `onclick`. We can't suggest a specific replacement though.\n      if (INVALID_EVENT_NAME_REGEX.test(name)) {\n        error('Invalid event handler property `%s`. ' + 'React events use the camelCase naming convention, for example `onClick`.', name);\n      }\n\n      warnedProperties$1[name] = true;\n      return true;\n    } // Let the ARIA attribute hook validate ARIA attributes\n\n\n    if (rARIA$1.test(name) || rARIACamel$1.test(name)) {\n      return true;\n    }\n\n    if (lowerCasedName === 'innerhtml') {\n      error('Directly setting property `innerHTML` is not permitted. ' + 'For more information, lookup documentation on `dangerouslySetInnerHTML`.');\n\n      warnedProperties$1[name] = true;\n      return true;\n    }\n\n    if (lowerCasedName === 'aria') {\n      error('The `aria` attribute is reserved for future use in React. ' + 'Pass individual `aria-` attributes instead.');\n\n      warnedProperties$1[name] = true;\n      return true;\n    }\n\n    if (lowerCasedName === 'is' && value !== null && value !== undefined && typeof value !== 'string') {\n      error('Received a `%s` for a string attribute `is`. If this is expected, cast ' + 'the value to a string.', typeof value);\n\n      warnedProperties$1[name] = true;\n      return true;\n    }\n\n    if (typeof value === 'number' && isNaN(value)) {\n      error('Received NaN for the `%s` attribute. If this is expected, cast ' + 'the value to a string.', name);\n\n      warnedProperties$1[name] = true;\n      return true;\n    }\n\n    var propertyInfo = getPropertyInfo(name);\n    var isReserved = propertyInfo !== null && propertyInfo.type === RESERVED; // Known attributes should match the casing specified in the property config.\n\n    if (possibleStandardNames.hasOwnProperty(lowerCasedName)) {\n      var standardName = possibleStandardNames[lowerCasedName];\n\n      if (standardName !== name) {\n        error('Invalid DOM property `%s`. Did you mean `%s`?', name, standardName);\n\n        warnedProperties$1[name] = true;\n        return true;\n      }\n    } else if (!isReserved && name !== lowerCasedName) {\n      // Unknown attributes should have lowercase casing since that's how they\n      // will be cased anyway with server rendering.\n      error('React does not recognize the `%s` prop on a DOM element. If you ' + 'intentionally want it to appear in the DOM as a custom ' + 'attribute, spell it as lowercase `%s` instead. ' + 'If you accidentally passed it from a parent component, remove ' + 'it from the DOM element.', name, lowerCasedName);\n\n      warnedProperties$1[name] = true;\n      return true;\n    }\n\n    if (typeof value === 'boolean' && shouldRemoveAttributeWithWarning(name, value, propertyInfo, false)) {\n      if (value) {\n        error('Received `%s` for a non-boolean attribute `%s`.\\n\\n' + 'If you want to write it to the DOM, pass a string instead: ' + '%s=\"%s\" or %s={value.toString()}.', value, name, name, value, name);\n      } else {\n        error('Received `%s` for a non-boolean attribute `%s`.\\n\\n' + 'If you want to write it to the DOM, pass a string instead: ' + '%s=\"%s\" or %s={value.toString()}.\\n\\n' + 'If you used to conditionally omit it with %s={condition && value}, ' + 'pass %s={condition ? value : undefined} instead.', value, name, name, value, name, name, name);\n      }\n\n      warnedProperties$1[name] = true;\n      return true;\n    } // Now that we've validated casing, do not validate\n    // data types for reserved props\n\n\n    if (isReserved) {\n      return true;\n    } // Warn when a known attribute is a bad type\n\n\n    if (shouldRemoveAttributeWithWarning(name, value, propertyInfo, false)) {\n      warnedProperties$1[name] = true;\n      return false;\n    } // Warn when passing the strings 'false' or 'true' into a boolean prop\n\n\n    if ((value === 'false' || value === 'true') && propertyInfo !== null && propertyInfo.type === BOOLEAN) {\n      error('Received the string `%s` for the boolean attribute `%s`. ' + '%s ' + 'Did you mean %s={%s}?', value, name, value === 'false' ? 'The browser will interpret it as a truthy value.' : 'Although this works, it will not work as expected if you pass the string \"false\".', name, value);\n\n      warnedProperties$1[name] = true;\n      return true;\n    }\n\n    return true;\n  };\n}\n\nvar warnUnknownProperties = function (type, props, eventRegistry) {\n  {\n    var unknownProps = [];\n\n    for (var key in props) {\n      var isValid = validateProperty$1(type, key, props[key], eventRegistry);\n\n      if (!isValid) {\n        unknownProps.push(key);\n      }\n    }\n\n    var unknownPropString = unknownProps.map(function (prop) {\n      return '`' + prop + '`';\n    }).join(', ');\n\n    if (unknownProps.length === 1) {\n      error('Invalid value for prop %s on <%s> tag. Either remove it from the element, ' + 'or pass a string or number value to keep it in the DOM. ' + 'For details, see https://reactjs.org/link/attribute-behavior ', unknownPropString, type);\n    } else if (unknownProps.length > 1) {\n      error('Invalid values for props %s on <%s> tag. Either remove them from the element, ' + 'or pass a string or number value to keep them in the DOM. ' + 'For details, see https://reactjs.org/link/attribute-behavior ', unknownPropString, type);\n    }\n  }\n};\n\nfunction validateProperties$2(type, props, eventRegistry) {\n  if (isCustomComponent(type, props)) {\n    return;\n  }\n\n  warnUnknownProperties(type, props, eventRegistry);\n}\n\nvar IS_EVENT_HANDLE_NON_MANAGED_NODE = 1;\nvar IS_NON_DELEGATED = 1 << 1;\nvar IS_CAPTURE_PHASE = 1 << 2;\n// set to LEGACY_FB_SUPPORT. LEGACY_FB_SUPPORT only gets set when\n// we call willDeferLaterForLegacyFBSupport, thus not bailing out\n// will result in endless cycles like an infinite loop.\n// We also don't want to defer during event replaying.\n\nvar SHOULD_NOT_PROCESS_POLYFILL_EVENT_PLUGINS = IS_EVENT_HANDLE_NON_MANAGED_NODE | IS_NON_DELEGATED | IS_CAPTURE_PHASE;\n\n// This exists to avoid circular dependency between ReactDOMEventReplaying\n// and DOMPluginEventSystem.\nvar currentReplayingEvent = null;\nfunction setReplayingEvent(event) {\n  {\n    if (currentReplayingEvent !== null) {\n      error('Expected currently replaying event to be null. This error ' + 'is likely caused by a bug in React. Please file an issue.');\n    }\n  }\n\n  currentReplayingEvent = event;\n}\nfunction resetReplayingEvent() {\n  {\n    if (currentReplayingEvent === null) {\n      error('Expected currently replaying event to not be null. This error ' + 'is likely caused by a bug in React. Please file an issue.');\n    }\n  }\n\n  currentReplayingEvent = null;\n}\nfunction isReplayingEvent(event) {\n  return event === currentReplayingEvent;\n}\n\n/**\n * Gets the target node from a native browser event by accounting for\n * inconsistencies in browser DOM APIs.\n *\n * @param {object} nativeEvent Native browser event.\n * @return {DOMEventTarget} Target node.\n */\n\nfunction getEventTarget(nativeEvent) {\n  // Fallback to nativeEvent.srcElement for IE9\n  // https://github.com/facebook/react/issues/12506\n  var target = nativeEvent.target || nativeEvent.srcElement || window; // Normalize SVG <use> element events #4963\n\n  if (target.correspondingUseElement) {\n    target = target.correspondingUseElement;\n  } // Safari may fire events on text nodes (Node.TEXT_NODE is 3).\n  // @see http://www.quirksmode.org/js/events_properties.html\n\n\n  return target.nodeType === TEXT_NODE ? target.parentNode : target;\n}\n\nvar restoreImpl = null;\nvar restoreTarget = null;\nvar restoreQueue = null;\n\nfunction restoreStateOfTarget(target) {\n  // We perform this translation at the end of the event loop so that we\n  // always receive the correct fiber here\n  var internalInstance = getInstanceFromNode(target);\n\n  if (!internalInstance) {\n    // Unmounted\n    return;\n  }\n\n  if (typeof restoreImpl !== 'function') {\n    throw new Error('setRestoreImplementation() needs to be called to handle a target for controlled ' + 'events. This error is likely caused by a bug in React. Please file an issue.');\n  }\n\n  var stateNode = internalInstance.stateNode; // Guard against Fiber being unmounted.\n\n  if (stateNode) {\n    var _props = getFiberCurrentPropsFromNode(stateNode);\n\n    restoreImpl(internalInstance.stateNode, internalInstance.type, _props);\n  }\n}\n\nfunction setRestoreImplementation(impl) {\n  restoreImpl = impl;\n}\nfunction enqueueStateRestore(target) {\n  if (restoreTarget) {\n    if (restoreQueue) {\n      restoreQueue.push(target);\n    } else {\n      restoreQueue = [target];\n    }\n  } else {\n    restoreTarget = target;\n  }\n}\nfunction needsStateRestore() {\n  return restoreTarget !== null || restoreQueue !== null;\n}\nfunction restoreStateIfNeeded() {\n  if (!restoreTarget) {\n    return;\n  }\n\n  var target = restoreTarget;\n  var queuedTargets = restoreQueue;\n  restoreTarget = null;\n  restoreQueue = null;\n  restoreStateOfTarget(target);\n\n  if (queuedTargets) {\n    for (var i = 0; i < queuedTargets.length; i++) {\n      restoreStateOfTarget(queuedTargets[i]);\n    }\n  }\n}\n\n// the renderer. Such as when we're dispatching events or if third party\n// libraries need to call batchedUpdates. Eventually, this API will go away when\n// everything is batched by default. We'll then have a similar API to opt-out of\n// scheduled work and instead do synchronous work.\n// Defaults\n\nvar batchedUpdatesImpl = function (fn, bookkeeping) {\n  return fn(bookkeeping);\n};\n\nvar flushSyncImpl = function () {};\n\nvar isInsideEventHandler = false;\n\nfunction finishEventHandler() {\n  // Here we wait until all updates have propagated, which is important\n  // when using controlled components within layers:\n  // https://github.com/facebook/react/issues/1698\n  // Then we restore state of any controlled component.\n  var controlledComponentsHavePendingUpdates = needsStateRestore();\n\n  if (controlledComponentsHavePendingUpdates) {\n    // If a controlled event was fired, we may need to restore the state of\n    // the DOM node back to the controlled value. This is necessary when React\n    // bails out of the update without touching the DOM.\n    // TODO: Restore state in the microtask, after the discrete updates flush,\n    // instead of early flushing them here.\n    flushSyncImpl();\n    restoreStateIfNeeded();\n  }\n}\n\nfunction batchedUpdates(fn, a, b) {\n  if (isInsideEventHandler) {\n    // If we are currently inside another batch, we need to wait until it\n    // fully completes before restoring state.\n    return fn(a, b);\n  }\n\n  isInsideEventHandler = true;\n\n  try {\n    return batchedUpdatesImpl(fn, a, b);\n  } finally {\n    isInsideEventHandler = false;\n    finishEventHandler();\n  }\n} // TODO: Replace with flushSync\nfunction setBatchingImplementation(_batchedUpdatesImpl, _discreteUpdatesImpl, _flushSyncImpl) {\n  batchedUpdatesImpl = _batchedUpdatesImpl;\n  flushSyncImpl = _flushSyncImpl;\n}\n\nfunction isInteractive(tag) {\n  return tag === 'button' || tag === 'input' || tag === 'select' || tag === 'textarea';\n}\n\nfunction shouldPreventMouseEvent(name, type, props) {\n  switch (name) {\n    case 'onClick':\n    case 'onClickCapture':\n    case 'onDoubleClick':\n    case 'onDoubleClickCapture':\n    case 'onMouseDown':\n    case 'onMouseDownCapture':\n    case 'onMouseMove':\n    case 'onMouseMoveCapture':\n    case 'onMouseUp':\n    case 'onMouseUpCapture':\n    case 'onMouseEnter':\n      return !!(props.disabled && isInteractive(type));\n\n    default:\n      return false;\n  }\n}\n/**\n * @param {object} inst The instance, which is the source of events.\n * @param {string} registrationName Name of listener (e.g. `onClick`).\n * @return {?function} The stored callback.\n */\n\n\nfunction getListener(inst, registrationName) {\n  var stateNode = inst.stateNode;\n\n  if (stateNode === null) {\n    // Work in progress (ex: onload events in incremental mode).\n    return null;\n  }\n\n  var props = getFiberCurrentPropsFromNode(stateNode);\n\n  if (props === null) {\n    // Work in progress.\n    return null;\n  }\n\n  var listener = props[registrationName];\n\n  if (shouldPreventMouseEvent(registrationName, inst.type, props)) {\n    return null;\n  }\n\n  if (listener && typeof listener !== 'function') {\n    throw new Error(\"Expected `\" + registrationName + \"` listener to be a function, instead got a value of `\" + typeof listener + \"` type.\");\n  }\n\n  return listener;\n}\n\nvar passiveBrowserEventsSupported = false; // Check if browser support events with passive listeners\n// https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Safely_detecting_option_support\n\nif (canUseDOM) {\n  try {\n    var options = {}; // $FlowFixMe: Ignore Flow complaining about needing a value\n\n    Object.defineProperty(options, 'passive', {\n      get: function () {\n        passiveBrowserEventsSupported = true;\n      }\n    });\n    window.addEventListener('test', options, options);\n    window.removeEventListener('test', options, options);\n  } catch (e) {\n    passiveBrowserEventsSupported = false;\n  }\n}\n\nfunction invokeGuardedCallbackProd(name, func, context, a, b, c, d, e, f) {\n  var funcArgs = Array.prototype.slice.call(arguments, 3);\n\n  try {\n    func.apply(context, funcArgs);\n  } catch (error) {\n    this.onError(error);\n  }\n}\n\nvar invokeGuardedCallbackImpl = invokeGuardedCallbackProd;\n\n{\n  // In DEV mode, we swap out invokeGuardedCallback for a special version\n  // that plays more nicely with the browser's DevTools. The idea is to preserve\n  // \"Pause on exceptions\" behavior. Because React wraps all user-provided\n  // functions in invokeGuardedCallback, and the production version of\n  // invokeGuardedCallback uses a try-catch, all user exceptions are treated\n  // like caught exceptions, and the DevTools won't pause unless the developer\n  // takes the extra step of enabling pause on caught exceptions. This is\n  // unintuitive, though, because even though React has caught the error, from\n  // the developer's perspective, the error is uncaught.\n  //\n  // To preserve the expected \"Pause on exceptions\" behavior, we don't use a\n  // try-catch in DEV. Instead, we synchronously dispatch a fake event to a fake\n  // DOM node, and call the user-provided callback from inside an event handler\n  // for that fake event. If the callback throws, the error is \"captured\" using\n  // a global event handler. But because the error happens in a different\n  // event loop context, it does not interrupt the normal program flow.\n  // Effectively, this gives us try-catch behavior without actually using\n  // try-catch. Neat!\n  // Check that the browser supports the APIs we need to implement our special\n  // DEV version of invokeGuardedCallback\n  if (typeof window !== 'undefined' && typeof window.dispatchEvent === 'function' && typeof document !== 'undefined' && typeof document.createEvent === 'function') {\n    var fakeNode = document.createElement('react');\n\n    invokeGuardedCallbackImpl = function invokeGuardedCallbackDev(name, func, context, a, b, c, d, e, f) {\n      // If document doesn't exist we know for sure we will crash in this method\n      // when we call document.createEvent(). However this can cause confusing\n      // errors: https://github.com/facebook/create-react-app/issues/3482\n      // So we preemptively throw with a better message instead.\n      if (typeof document === 'undefined' || document === null) {\n        throw new Error('The `document` global was defined when React was initialized, but is not ' + 'defined anymore. This can happen in a test environment if a component ' + 'schedules an update from an asynchronous callback, but the test has already ' + 'finished running. To solve this, you can either unmount the component at ' + 'the end of your test (and ensure that any asynchronous operations get ' + 'canceled in `componentWillUnmount`), or you can change the test itself ' + 'to be asynchronous.');\n      }\n\n      var evt = document.createEvent('Event');\n      var didCall = false; // Keeps track of whether the user-provided callback threw an error. We\n      // set this to true at the beginning, then set it to false right after\n      // calling the function. If the function errors, `didError` will never be\n      // set to false. This strategy works even if the browser is flaky and\n      // fails to call our global error handler, because it doesn't rely on\n      // the error event at all.\n\n      var didError = true; // Keeps track of the value of window.event so that we can reset it\n      // during the callback to let user code access window.event in the\n      // browsers that support it.\n\n      var windowEvent = window.event; // Keeps track of the descriptor of window.event to restore it after event\n      // dispatching: https://github.com/facebook/react/issues/13688\n\n      var windowEventDescriptor = Object.getOwnPropertyDescriptor(window, 'event');\n\n      function restoreAfterDispatch() {\n        // We immediately remove the callback from event listeners so that\n        // nested `invokeGuardedCallback` calls do not clash. Otherwise, a\n        // nested call would trigger the fake event handlers of any call higher\n        // in the stack.\n        fakeNode.removeEventListener(evtType, callCallback, false); // We check for window.hasOwnProperty('event') to prevent the\n        // window.event assignment in both IE <= 10 as they throw an error\n        // \"Member not found\" in strict mode, and in Firefox which does not\n        // support window.event.\n\n        if (typeof window.event !== 'undefined' && window.hasOwnProperty('event')) {\n          window.event = windowEvent;\n        }\n      } // Create an event handler for our fake event. We will synchronously\n      // dispatch our fake event using `dispatchEvent`. Inside the handler, we\n      // call the user-provided callback.\n\n\n      var funcArgs = Array.prototype.slice.call(arguments, 3);\n\n      function callCallback() {\n        didCall = true;\n        restoreAfterDispatch();\n        func.apply(context, funcArgs);\n        didError = false;\n      } // Create a global error event handler. We use this to capture the value\n      // that was thrown. It's possible that this error handler will fire more\n      // than once; for example, if non-React code also calls `dispatchEvent`\n      // and a handler for that event throws. We should be resilient to most of\n      // those cases. Even if our error event handler fires more than once, the\n      // last error event is always used. If the callback actually does error,\n      // we know that the last error event is the correct one, because it's not\n      // possible for anything else to have happened in between our callback\n      // erroring and the code that follows the `dispatchEvent` call below. If\n      // the callback doesn't error, but the error event was fired, we know to\n      // ignore it because `didError` will be false, as described above.\n\n\n      var error; // Use this to track whether the error event is ever called.\n\n      var didSetError = false;\n      var isCrossOriginError = false;\n\n      function handleWindowError(event) {\n        error = event.error;\n        didSetError = true;\n\n        if (error === null && event.colno === 0 && event.lineno === 0) {\n          isCrossOriginError = true;\n        }\n\n        if (event.defaultPrevented) {\n          // Some other error handler has prevented default.\n          // Browsers silence the error report if this happens.\n          // We'll remember this to later decide whether to log it or not.\n          if (error != null && typeof error === 'object') {\n            try {\n              error._suppressLogging = true;\n            } catch (inner) {// Ignore.\n            }\n          }\n        }\n      } // Create a fake event type.\n\n\n      var evtType = \"react-\" + (name ? name : 'invokeguardedcallback'); // Attach our event handlers\n\n      window.addEventListener('error', handleWindowError);\n      fakeNode.addEventListener(evtType, callCallback, false); // Synchronously dispatch our fake event. If the user-provided function\n      // errors, it will trigger our global error handler.\n\n      evt.initEvent(evtType, false, false);\n      fakeNode.dispatchEvent(evt);\n\n      if (windowEventDescriptor) {\n        Object.defineProperty(window, 'event', windowEventDescriptor);\n      }\n\n      if (didCall && didError) {\n        if (!didSetError) {\n          // The callback errored, but the error event never fired.\n          // eslint-disable-next-line react-internal/prod-error-codes\n          error = new Error('An error was thrown inside one of your components, but React ' + \"doesn't know what it was. This is likely due to browser \" + 'flakiness. React does its best to preserve the \"Pause on ' + 'exceptions\" behavior of the DevTools, which requires some ' + \"DEV-mode only tricks. It's possible that these don't work in \" + 'your browser. Try triggering the error in production mode, ' + 'or switching to a modern browser. If you suspect that this is ' + 'actually an issue with React, please file an issue.');\n        } else if (isCrossOriginError) {\n          // eslint-disable-next-line react-internal/prod-error-codes\n          error = new Error(\"A cross-origin error was thrown. React doesn't have access to \" + 'the actual error object in development. ' + 'See https://reactjs.org/link/crossorigin-error for more information.');\n        }\n\n        this.onError(error);\n      } // Remove our event listeners\n\n\n      window.removeEventListener('error', handleWindowError);\n\n      if (!didCall) {\n        // Something went really wrong, and our event was not dispatched.\n        // https://github.com/facebook/react/issues/16734\n        // https://github.com/facebook/react/issues/16585\n        // Fall back to the production implementation.\n        restoreAfterDispatch();\n        return invokeGuardedCallbackProd.apply(this, arguments);\n      }\n    };\n  }\n}\n\nvar invokeGuardedCallbackImpl$1 = invokeGuardedCallbackImpl;\n\nvar hasError = false;\nvar caughtError = null; // Used by event system to capture/rethrow the first error.\n\nvar hasRethrowError = false;\nvar rethrowError = null;\nvar reporter = {\n  onError: function (error) {\n    hasError = true;\n    caughtError = error;\n  }\n};\n/**\n * Call a function while guarding against errors that happens within it.\n * Returns an error if it throws, otherwise null.\n *\n * In production, this is implemented using a try-catch. The reason we don't\n * use a try-catch directly is so that we can swap out a different\n * implementation in DEV mode.\n *\n * @param {String} name of the guard to use for logging or debugging\n * @param {Function} func The function to invoke\n * @param {*} context The context to use when calling the function\n * @param {...*} args Arguments for function\n */\n\nfunction invokeGuardedCallback(name, func, context, a, b, c, d, e, f) {\n  hasError = false;\n  caughtError = null;\n  invokeGuardedCallbackImpl$1.apply(reporter, arguments);\n}\n/**\n * Same as invokeGuardedCallback, but instead of returning an error, it stores\n * it in a global so it can be rethrown by `rethrowCaughtError` later.\n * TODO: See if caughtError and rethrowError can be unified.\n *\n * @param {String} name of the guard to use for logging or debugging\n * @param {Function} func The function to invoke\n * @param {*} context The context to use when calling the function\n * @param {...*} args Arguments for function\n */\n\nfunction invokeGuardedCallbackAndCatchFirstError(name, func, context, a, b, c, d, e, f) {\n  invokeGuardedCallback.apply(this, arguments);\n\n  if (hasError) {\n    var error = clearCaughtError();\n\n    if (!hasRethrowError) {\n      hasRethrowError = true;\n      rethrowError = error;\n    }\n  }\n}\n/**\n * During execution of guarded functions we will capture the first error which\n * we will rethrow to be handled by the top level error handler.\n */\n\nfunction rethrowCaughtError() {\n  if (hasRethrowError) {\n    var error = rethrowError;\n    hasRethrowError = false;\n    rethrowError = null;\n    throw error;\n  }\n}\nfunction hasCaughtError() {\n  return hasError;\n}\nfunction clearCaughtError() {\n  if (hasError) {\n    var error = caughtError;\n    hasError = false;\n    caughtError = null;\n    return error;\n  } else {\n    throw new Error('clearCaughtError was called but no error was captured. This error ' + 'is likely caused by a bug in React. Please file an issue.');\n  }\n}\n\n/**\n * `ReactInstanceMap` maintains a mapping from a public facing stateful\n * instance (key) and the internal representation (value). This allows public\n * methods to accept the user facing instance as an argument and map them back\n * to internal methods.\n *\n * Note that this module is currently shared and assumed to be stateless.\n * If this becomes an actual Map, that will break.\n */\nfunction get(key) {\n  return key._reactInternals;\n}\nfunction has(key) {\n  return key._reactInternals !== undefined;\n}\nfunction set(key, value) {\n  key._reactInternals = value;\n}\n\n// Don't change these two values. They're used by React Dev Tools.\nvar NoFlags =\n/*                      */\n0;\nvar PerformedWork =\n/*                */\n1; // You can change the rest (and add more).\n\nvar Placement =\n/*                    */\n2;\nvar Update =\n/*                       */\n4;\nvar ChildDeletion =\n/*                */\n16;\nvar ContentReset =\n/*                 */\n32;\nvar Callback =\n/*                     */\n64;\nvar DidCapture =\n/*                   */\n128;\nvar ForceClientRender =\n/*            */\n256;\nvar Ref =\n/*                          */\n512;\nvar Snapshot =\n/*                     */\n1024;\nvar Passive =\n/*                      */\n2048;\nvar Hydrating =\n/*                    */\n4096;\nvar Visibility =\n/*                   */\n8192;\nvar StoreConsistency =\n/*             */\n16384;\nvar LifecycleEffectMask = Passive | Update | Callback | Ref | Snapshot | StoreConsistency; // Union of all commit flags (flags with the lifetime of a particular commit)\n\nvar HostEffectMask =\n/*               */\n32767; // These are not really side effects, but we still reuse this field.\n\nvar Incomplete =\n/*                   */\n32768;\nvar ShouldCapture =\n/*                */\n65536;\nvar ForceUpdateForLegacySuspense =\n/* */\n131072;\nvar Forked =\n/*                       */\n1048576; // Static tags describe aspects of a fiber that are not specific to a render,\n// e.g. a fiber uses a passive effect (even if there are no updates on this particular render).\n// This enables us to defer more work in the unmount case,\n// since we can defer traversing the tree during layout to look for Passive effects,\n// and instead rely on the static flag as a signal that there may be cleanup work.\n\nvar RefStatic =\n/*                    */\n2097152;\nvar LayoutStatic =\n/*                 */\n4194304;\nvar PassiveStatic =\n/*                */\n8388608; // These flags allow us to traverse to fibers that have effects on mount\n// without traversing the entire tree after every commit for\n// double invoking\n\nvar MountLayoutDev =\n/*               */\n16777216;\nvar MountPassiveDev =\n/*              */\n33554432; // Groups of flags that are used in the commit phase to skip over trees that\n// don't contain effects, by checking subtreeFlags.\n\nvar BeforeMutationMask = // TODO: Remove Update flag from before mutation phase by re-landing Visibility\n// flag logic (see #20043)\nUpdate | Snapshot | ( 0);\nvar MutationMask = Placement | Update | ChildDeletion | ContentReset | Ref | Hydrating | Visibility;\nvar LayoutMask = Update | Callback | Ref | Visibility; // TODO: Split into PassiveMountMask and PassiveUnmountMask\n\nvar PassiveMask = Passive | ChildDeletion; // Union of tags that don't get reset on clones.\n// This allows certain concepts to persist without recalculating them,\n// e.g. whether a subtree contains passive effects or portals.\n\nvar StaticMask = LayoutStatic | PassiveStatic | RefStatic;\n\nvar ReactCurrentOwner = ReactSharedInternals.ReactCurrentOwner;\nfunction getNearestMountedFiber(fiber) {\n  var node = fiber;\n  var nearestMounted = fiber;\n\n  if (!fiber.alternate) {\n    // If there is no alternate, this might be a new tree that isn't inserted\n    // yet. If it is, then it will have a pending insertion effect on it.\n    var nextNode = node;\n\n    do {\n      node = nextNode;\n\n      if ((node.flags & (Placement | Hydrating)) !== NoFlags) {\n        // This is an insertion or in-progress hydration. The nearest possible\n        // mounted fiber is the parent but we need to continue to figure out\n        // if that one is still mounted.\n        nearestMounted = node.return;\n      }\n\n      nextNode = node.return;\n    } while (nextNode);\n  } else {\n    while (node.return) {\n      node = node.return;\n    }\n  }\n\n  if (node.tag === HostRoot) {\n    // TODO: Check if this was a nested HostRoot when used with\n    // renderContainerIntoSubtree.\n    return nearestMounted;\n  } // If we didn't hit the root, that means that we're in an disconnected tree\n  // that has been unmounted.\n\n\n  return null;\n}\nfunction getSuspenseInstanceFromFiber(fiber) {\n  if (fiber.tag === SuspenseComponent) {\n    var suspenseState = fiber.memoizedState;\n\n    if (suspenseState === null) {\n      var current = fiber.alternate;\n\n      if (current !== null) {\n        suspenseState = current.memoizedState;\n      }\n    }\n\n    if (suspenseState !== null) {\n      return suspenseState.dehydrated;\n    }\n  }\n\n  return null;\n}\nfunction getContainerFromFiber(fiber) {\n  return fiber.tag === HostRoot ? fiber.stateNode.containerInfo : null;\n}\nfunction isFiberMounted(fiber) {\n  return getNearestMountedFiber(fiber) === fiber;\n}\nfunction isMounted(component) {\n  {\n    var owner = ReactCurrentOwner.current;\n\n    if (owner !== null && owner.tag === ClassComponent) {\n      var ownerFiber = owner;\n      var instance = ownerFiber.stateNode;\n\n      if (!instance._warnedAboutRefsInRender) {\n        error('%s is accessing isMounted inside its render() function. ' + 'render() should be a pure function of props and state. It should ' + 'never access something that requires stale data from the previous ' + 'render, such as refs. Move this logic to componentDidMount and ' + 'componentDidUpdate instead.', getComponentNameFromFiber(ownerFiber) || 'A component');\n      }\n\n      instance._warnedAboutRefsInRender = true;\n    }\n  }\n\n  var fiber = get(component);\n\n  if (!fiber) {\n    return false;\n  }\n\n  return getNearestMountedFiber(fiber) === fiber;\n}\n\nfunction assertIsMounted(fiber) {\n  if (getNearestMountedFiber(fiber) !== fiber) {\n    throw new Error('Unable to find node on an unmounted component.');\n  }\n}\n\nfunction findCurrentFiberUsingSlowPath(fiber) {\n  var alternate = fiber.alternate;\n\n  if (!alternate) {\n    // If there is no alternate, then we only need to check if it is mounted.\n    var nearestMounted = getNearestMountedFiber(fiber);\n\n    if (nearestMounted === null) {\n      throw new Error('Unable to find node on an unmounted component.');\n    }\n\n    if (nearestMounted !== fiber) {\n      return null;\n    }\n\n    return fiber;\n  } // If we have two possible branches, we'll walk backwards up to the root\n  // to see what path the root points to. On the way we may hit one of the\n  // special cases and we'll deal with them.\n\n\n  var a = fiber;\n  var b = alternate;\n\n  while (true) {\n    var parentA = a.return;\n\n    if (parentA === null) {\n      // We're at the root.\n      break;\n    }\n\n    var parentB = parentA.alternate;\n\n    if (parentB === null) {\n      // There is no alternate. This is an unusual case. Currently, it only\n      // happens when a Suspense component is hidden. An extra fragment fiber\n      // is inserted in between the Suspense fiber and its children. Skip\n      // over this extra fragment fiber and proceed to the next parent.\n      var nextParent = parentA.return;\n\n      if (nextParent !== null) {\n        a = b = nextParent;\n        continue;\n      } // If there's no parent, we're at the root.\n\n\n      break;\n    } // If both copies of the parent fiber point to the same child, we can\n    // assume that the child is current. This happens when we bailout on low\n    // priority: the bailed out fiber's child reuses the current child.\n\n\n    if (parentA.child === parentB.child) {\n      var child = parentA.child;\n\n      while (child) {\n        if (child === a) {\n          // We've determined that A is the current branch.\n          assertIsMounted(parentA);\n          return fiber;\n        }\n\n        if (child === b) {\n          // We've determined that B is the current branch.\n          assertIsMounted(parentA);\n          return alternate;\n        }\n\n        child = child.sibling;\n      } // We should never have an alternate for any mounting node. So the only\n      // way this could possibly happen is if this was unmounted, if at all.\n\n\n      throw new Error('Unable to find node on an unmounted component.');\n    }\n\n    if (a.return !== b.return) {\n      // The return pointer of A and the return pointer of B point to different\n      // fibers. We assume that return pointers never criss-cross, so A must\n      // belong to the child set of A.return, and B must belong to the child\n      // set of B.return.\n      a = parentA;\n      b = parentB;\n    } else {\n      // The return pointers point to the same fiber. We'll have to use the\n      // default, slow path: scan the child sets of each parent alternate to see\n      // which child belongs to which set.\n      //\n      // Search parent A's child set\n      var didFindChild = false;\n      var _child = parentA.child;\n\n      while (_child) {\n        if (_child === a) {\n          didFindChild = true;\n          a = parentA;\n          b = parentB;\n          break;\n        }\n\n        if (_child === b) {\n          didFindChild = true;\n          b = parentA;\n          a = parentB;\n          break;\n        }\n\n        _child = _child.sibling;\n      }\n\n      if (!didFindChild) {\n        // Search parent B's child set\n        _child = parentB.child;\n\n        while (_child) {\n          if (_child === a) {\n            didFindChild = true;\n            a = parentB;\n            b = parentA;\n            break;\n          }\n\n          if (_child === b) {\n            didFindChild = true;\n            b = parentB;\n            a = parentA;\n            break;\n          }\n\n          _child = _child.sibling;\n        }\n\n        if (!didFindChild) {\n          throw new Error('Child was not found in either parent set. This indicates a bug ' + 'in React related to the return pointer. Please file an issue.');\n        }\n      }\n    }\n\n    if (a.alternate !== b) {\n      throw new Error(\"Return fibers should always be each others' alternates. \" + 'This error is likely caused by a bug in React. Please file an issue.');\n    }\n  } // If the root is not a host container, we're in a disconnected tree. I.e.\n  // unmounted.\n\n\n  if (a.tag !== HostRoot) {\n    throw new Error('Unable to find node on an unmounted component.');\n  }\n\n  if (a.stateNode.current === a) {\n    // We've determined that A is the current branch.\n    return fiber;\n  } // Otherwise B has to be current branch.\n\n\n  return alternate;\n}\nfunction findCurrentHostFiber(parent) {\n  var currentParent = findCurrentFiberUsingSlowPath(parent);\n  return currentParent !== null ? findCurrentHostFiberImpl(currentParent) : null;\n}\n\nfunction findCurrentHostFiberImpl(node) {\n  // Next we'll drill down this component to find the first HostComponent/Text.\n  if (node.tag === HostComponent || node.tag === HostText) {\n    return node;\n  }\n\n  var child = node.child;\n\n  while (child !== null) {\n    var match = findCurrentHostFiberImpl(child);\n\n    if (match !== null) {\n      return match;\n    }\n\n    child = child.sibling;\n  }\n\n  return null;\n}\n\nfunction findCurrentHostFiberWithNoPortals(parent) {\n  var currentParent = findCurrentFiberUsingSlowPath(parent);\n  return currentParent !== null ? findCurrentHostFiberWithNoPortalsImpl(currentParent) : null;\n}\n\nfunction findCurrentHostFiberWithNoPortalsImpl(node) {\n  // Next we'll drill down this component to find the first HostComponent/Text.\n  if (node.tag === HostComponent || node.tag === HostText) {\n    return node;\n  }\n\n  var child = node.child;\n\n  while (child !== null) {\n    if (child.tag !== HostPortal) {\n      var match = findCurrentHostFiberWithNoPortalsImpl(child);\n\n      if (match !== null) {\n        return match;\n      }\n    }\n\n    child = child.sibling;\n  }\n\n  return null;\n}\n\n// This module only exists as an ESM wrapper around the external CommonJS\nvar scheduleCallback = Scheduler.unstable_scheduleCallback;\nvar cancelCallback = Scheduler.unstable_cancelCallback;\nvar shouldYield = Scheduler.unstable_shouldYield;\nvar requestPaint = Scheduler.unstable_requestPaint;\nvar now = Scheduler.unstable_now;\nvar getCurrentPriorityLevel = Scheduler.unstable_getCurrentPriorityLevel;\nvar ImmediatePriority = Scheduler.unstable_ImmediatePriority;\nvar UserBlockingPriority = Scheduler.unstable_UserBlockingPriority;\nvar NormalPriority = Scheduler.unstable_NormalPriority;\nvar LowPriority = Scheduler.unstable_LowPriority;\nvar IdlePriority = Scheduler.unstable_IdlePriority;\n// this doesn't actually exist on the scheduler, but it *does*\n// on scheduler/unstable_mock, which we'll need for internal testing\nvar unstable_yieldValue = Scheduler.unstable_yieldValue;\nvar unstable_setDisableYieldValue = Scheduler.unstable_setDisableYieldValue;\n\nvar rendererID = null;\nvar injectedHook = null;\nvar injectedProfilingHooks = null;\nvar hasLoggedError = false;\nvar isDevToolsPresent = typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined';\nfunction injectInternals(internals) {\n  if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined') {\n    // No DevTools\n    return false;\n  }\n\n  var hook = __REACT_DEVTOOLS_GLOBAL_HOOK__;\n\n  if (hook.isDisabled) {\n    // This isn't a real property on the hook, but it can be set to opt out\n    // of DevTools integration and associated warnings and logs.\n    // https://github.com/facebook/react/issues/3877\n    return true;\n  }\n\n  if (!hook.supportsFiber) {\n    {\n      error('The installed version of React DevTools is too old and will not work ' + 'with the current version of React. Please update React DevTools. ' + 'https://reactjs.org/link/react-devtools');\n    } // DevTools exists, even though it doesn't support Fiber.\n\n\n    return true;\n  }\n\n  try {\n    if (enableSchedulingProfiler) {\n      // Conditionally inject these hooks only if Timeline profiler is supported by this build.\n      // This gives DevTools a way to feature detect that isn't tied to version number\n      // (since profiling and timeline are controlled by different feature flags).\n      internals = assign({}, internals, {\n        getLaneLabelMap: getLaneLabelMap,\n        injectProfilingHooks: injectProfilingHooks\n      });\n    }\n\n    rendererID = hook.inject(internals); // We have successfully injected, so now it is safe to set up hooks.\n\n    injectedHook = hook;\n  } catch (err) {\n    // Catch all errors because it is unsafe to throw during initialization.\n    {\n      error('React instrumentation encountered an error: %s.', err);\n    }\n  }\n\n  if (hook.checkDCE) {\n    // This is the real DevTools.\n    return true;\n  } else {\n    // This is likely a hook installed by Fast Refresh runtime.\n    return false;\n  }\n}\nfunction onScheduleRoot(root, children) {\n  {\n    if (injectedHook && typeof injectedHook.onScheduleFiberRoot === 'function') {\n      try {\n        injectedHook.onScheduleFiberRoot(rendererID, root, children);\n      } catch (err) {\n        if ( !hasLoggedError) {\n          hasLoggedError = true;\n\n          error('React instrumentation encountered an error: %s', err);\n        }\n      }\n    }\n  }\n}\nfunction onCommitRoot(root, eventPriority) {\n  if (injectedHook && typeof injectedHook.onCommitFiberRoot === 'function') {\n    try {\n      var didError = (root.current.flags & DidCapture) === DidCapture;\n\n      if (enableProfilerTimer) {\n        var schedulerPriority;\n\n        switch (eventPriority) {\n          case DiscreteEventPriority:\n            schedulerPriority = ImmediatePriority;\n            break;\n\n          case ContinuousEventPriority:\n            schedulerPriority = UserBlockingPriority;\n            break;\n\n          case DefaultEventPriority:\n            schedulerPriority = NormalPriority;\n            break;\n\n          case IdleEventPriority:\n            schedulerPriority = IdlePriority;\n            break;\n\n          default:\n            schedulerPriority = NormalPriority;\n            break;\n        }\n\n        injectedHook.onCommitFiberRoot(rendererID, root, schedulerPriority, didError);\n      } else {\n        injectedHook.onCommitFiberRoot(rendererID, root, undefined, didError);\n      }\n    } catch (err) {\n      {\n        if (!hasLoggedError) {\n          hasLoggedError = true;\n\n          error('React instrumentation encountered an error: %s', err);\n        }\n      }\n    }\n  }\n}\nfunction onPostCommitRoot(root) {\n  if (injectedHook && typeof injectedHook.onPostCommitFiberRoot === 'function') {\n    try {\n      injectedHook.onPostCommitFiberRoot(rendererID, root);\n    } catch (err) {\n      {\n        if (!hasLoggedError) {\n          hasLoggedError = true;\n\n          error('React instrumentation encountered an error: %s', err);\n        }\n      }\n    }\n  }\n}\nfunction onCommitUnmount(fiber) {\n  if (injectedHook && typeof injectedHook.onCommitFiberUnmount === 'function') {\n    try {\n      injectedHook.onCommitFiberUnmount(rendererID, fiber);\n    } catch (err) {\n      {\n        if (!hasLoggedError) {\n          hasLoggedError = true;\n\n          error('React instrumentation encountered an error: %s', err);\n        }\n      }\n    }\n  }\n}\nfunction setIsStrictModeForDevtools(newIsStrictMode) {\n  {\n    if (typeof unstable_yieldValue === 'function') {\n      // We're in a test because Scheduler.unstable_yieldValue only exists\n      // in SchedulerMock. To reduce the noise in strict mode tests,\n      // suppress warnings and disable scheduler yielding during the double render\n      unstable_setDisableYieldValue(newIsStrictMode);\n      setSuppressWarning(newIsStrictMode);\n    }\n\n    if (injectedHook && typeof injectedHook.setStrictMode === 'function') {\n      try {\n        injectedHook.setStrictMode(rendererID, newIsStrictMode);\n      } catch (err) {\n        {\n          if (!hasLoggedError) {\n            hasLoggedError = true;\n\n            error('React instrumentation encountered an error: %s', err);\n          }\n        }\n      }\n    }\n  }\n} // Profiler API hooks\n\nfunction injectProfilingHooks(profilingHooks) {\n  injectedProfilingHooks = profilingHooks;\n}\n\nfunction getLaneLabelMap() {\n  {\n    var map = new Map();\n    var lane = 1;\n\n    for (var index = 0; index < TotalLanes; index++) {\n      var label = getLabelForLane(lane);\n      map.set(lane, label);\n      lane *= 2;\n    }\n\n    return map;\n  }\n}\n\nfunction markCommitStarted(lanes) {\n  {\n    if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markCommitStarted === 'function') {\n      injectedProfilingHooks.markCommitStarted(lanes);\n    }\n  }\n}\nfunction markCommitStopped() {\n  {\n    if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markCommitStopped === 'function') {\n      injectedProfilingHooks.markCommitStopped();\n    }\n  }\n}\nfunction markComponentRenderStarted(fiber) {\n  {\n    if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markComponentRenderStarted === 'function') {\n      injectedProfilingHooks.markComponentRenderStarted(fiber);\n    }\n  }\n}\nfunction markComponentRenderStopped() {\n  {\n    if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markComponentRenderStopped === 'function') {\n      injectedProfilingHooks.markComponentRenderStopped();\n    }\n  }\n}\nfunction markComponentPassiveEffectMountStarted(fiber) {\n  {\n    if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markComponentPassiveEffectMountStarted === 'function') {\n      injectedProfilingHooks.markComponentPassiveEffectMountStarted(fiber);\n    }\n  }\n}\nfunction markComponentPassiveEffectMountStopped() {\n  {\n    if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markComponentPassiveEffectMountStopped === 'function') {\n      injectedProfilingHooks.markComponentPassiveEffectMountStopped();\n    }\n  }\n}\nfunction markComponentPassiveEffectUnmountStarted(fiber) {\n  {\n    if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markComponentPassiveEffectUnmountStarted === 'function') {\n      injectedProfilingHooks.markComponentPassiveEffectUnmountStarted(fiber);\n    }\n  }\n}\nfunction markComponentPassiveEffectUnmountStopped() {\n  {\n    if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markComponentPassiveEffectUnmountStopped === 'function') {\n      injectedProfilingHooks.markComponentPassiveEffectUnmountStopped();\n    }\n  }\n}\nfunction markComponentLayoutEffectMountStarted(fiber) {\n  {\n    if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markComponentLayoutEffectMountStarted === 'function') {\n      injectedProfilingHooks.markComponentLayoutEffectMountStarted(fiber);\n    }\n  }\n}\nfunction markComponentLayoutEffectMountStopped() {\n  {\n    if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markComponentLayoutEffectMountStopped === 'function') {\n      injectedProfilingHooks.markComponentLayoutEffectMountStopped();\n    }\n  }\n}\nfunction markComponentLayoutEffectUnmountStarted(fiber) {\n  {\n    if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markComponentLayoutEffectUnmountStarted === 'function') {\n      injectedProfilingHooks.markComponentLayoutEffectUnmountStarted(fiber);\n    }\n  }\n}\nfunction markComponentLayoutEffectUnmountStopped() {\n  {\n    if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markComponentLayoutEffectUnmountStopped === 'function') {\n      injectedProfilingHooks.markComponentLayoutEffectUnmountStopped();\n    }\n  }\n}\nfunction markComponentErrored(fiber, thrownValue, lanes) {\n  {\n    if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markComponentErrored === 'function') {\n      injectedProfilingHooks.markComponentErrored(fiber, thrownValue, lanes);\n    }\n  }\n}\nfunction markComponentSuspended(fiber, wakeable, lanes) {\n  {\n    if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markComponentSuspended === 'function') {\n      injectedProfilingHooks.markComponentSuspended(fiber, wakeable, lanes);\n    }\n  }\n}\nfunction markLayoutEffectsStarted(lanes) {\n  {\n    if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markLayoutEffectsStarted === 'function') {\n      injectedProfilingHooks.markLayoutEffectsStarted(lanes);\n    }\n  }\n}\nfunction markLayoutEffectsStopped() {\n  {\n    if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markLayoutEffectsStopped === 'function') {\n      injectedProfilingHooks.markLayoutEffectsStopped();\n    }\n  }\n}\nfunction markPassiveEffectsStarted(lanes) {\n  {\n    if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markPassiveEffectsStarted === 'function') {\n      injectedProfilingHooks.markPassiveEffectsStarted(lanes);\n    }\n  }\n}\nfunction markPassiveEffectsStopped() {\n  {\n    if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markPassiveEffectsStopped === 'function') {\n      injectedProfilingHooks.markPassiveEffectsStopped();\n    }\n  }\n}\nfunction markRenderStarted(lanes) {\n  {\n    if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markRenderStarted === 'function') {\n      injectedProfilingHooks.markRenderStarted(lanes);\n    }\n  }\n}\nfunction markRenderYielded() {\n  {\n    if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markRenderYielded === 'function') {\n      injectedProfilingHooks.markRenderYielded();\n    }\n  }\n}\nfunction markRenderStopped() {\n  {\n    if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markRenderStopped === 'function') {\n      injectedProfilingHooks.markRenderStopped();\n    }\n  }\n}\nfunction markRenderScheduled(lane) {\n  {\n    if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markRenderScheduled === 'function') {\n      injectedProfilingHooks.markRenderScheduled(lane);\n    }\n  }\n}\nfunction markForceUpdateScheduled(fiber, lane) {\n  {\n    if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markForceUpdateScheduled === 'function') {\n      injectedProfilingHooks.markForceUpdateScheduled(fiber, lane);\n    }\n  }\n}\nfunction markStateUpdateScheduled(fiber, lane) {\n  {\n    if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markStateUpdateScheduled === 'function') {\n      injectedProfilingHooks.markStateUpdateScheduled(fiber, lane);\n    }\n  }\n}\n\nvar NoMode =\n/*                         */\n0; // TODO: Remove ConcurrentMode by reading from the root tag instead\n\nvar ConcurrentMode =\n/*                 */\n1;\nvar ProfileMode =\n/*                    */\n2;\nvar StrictLegacyMode =\n/*               */\n8;\nvar StrictEffectsMode =\n/*              */\n16;\n\n// TODO: This is pretty well supported by browsers. Maybe we can drop it.\nvar clz32 = Math.clz32 ? Math.clz32 : clz32Fallback; // Count leading zeros.\n// Based on:\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/clz32\n\nvar log = Math.log;\nvar LN2 = Math.LN2;\n\nfunction clz32Fallback(x) {\n  var asUint = x >>> 0;\n\n  if (asUint === 0) {\n    return 32;\n  }\n\n  return 31 - (log(asUint) / LN2 | 0) | 0;\n}\n\n// If those values are changed that package should be rebuilt and redeployed.\n\nvar TotalLanes = 31;\nvar NoLanes =\n/*                        */\n0;\nvar NoLane =\n/*                          */\n0;\nvar SyncLane =\n/*                        */\n1;\nvar InputContinuousHydrationLane =\n/*    */\n2;\nvar InputContinuousLane =\n/*             */\n4;\nvar DefaultHydrationLane =\n/*            */\n8;\nvar DefaultLane =\n/*                     */\n16;\nvar TransitionHydrationLane =\n/*                */\n32;\nvar TransitionLanes =\n/*                       */\n4194240;\nvar TransitionLane1 =\n/*                        */\n64;\nvar TransitionLane2 =\n/*                        */\n128;\nvar TransitionLane3 =\n/*                        */\n256;\nvar TransitionLane4 =\n/*                        */\n512;\nvar TransitionLane5 =\n/*                        */\n1024;\nvar TransitionLane6 =\n/*                        */\n2048;\nvar TransitionLane7 =\n/*                        */\n4096;\nvar TransitionLane8 =\n/*                        */\n8192;\nvar TransitionLane9 =\n/*                        */\n16384;\nvar TransitionLane10 =\n/*                       */\n32768;\nvar TransitionLane11 =\n/*                       */\n65536;\nvar TransitionLane12 =\n/*                       */\n131072;\nvar TransitionLane13 =\n/*                       */\n262144;\nvar TransitionLane14 =\n/*                       */\n524288;\nvar TransitionLane15 =\n/*                       */\n1048576;\nvar TransitionLane16 =\n/*                       */\n2097152;\nvar RetryLanes =\n/*                            */\n130023424;\nvar RetryLane1 =\n/*                             */\n4194304;\nvar RetryLane2 =\n/*                             */\n8388608;\nvar RetryLane3 =\n/*                             */\n16777216;\nvar RetryLane4 =\n/*                             */\n33554432;\nvar RetryLane5 =\n/*                             */\n67108864;\nvar SomeRetryLane = RetryLane1;\nvar SelectiveHydrationLane =\n/*          */\n134217728;\nvar NonIdleLanes =\n/*                          */\n268435455;\nvar IdleHydrationLane =\n/*               */\n268435456;\nvar IdleLane =\n/*                        */\n536870912;\nvar OffscreenLane =\n/*                   */\n1073741824; // This function is used for the experimental timeline (react-devtools-timeline)\n// It should be kept in sync with the Lanes values above.\n\nfunction getLabelForLane(lane) {\n  {\n    if (lane & SyncLane) {\n      return 'Sync';\n    }\n\n    if (lane & InputContinuousHydrationLane) {\n      return 'InputContinuousHydration';\n    }\n\n    if (lane & InputContinuousLane) {\n      return 'InputContinuous';\n    }\n\n    if (lane & DefaultHydrationLane) {\n      return 'DefaultHydration';\n    }\n\n    if (lane & DefaultLane) {\n      return 'Default';\n    }\n\n    if (lane & TransitionHydrationLane) {\n      return 'TransitionHydration';\n    }\n\n    if (lane & TransitionLanes) {\n      return 'Transition';\n    }\n\n    if (lane & RetryLanes) {\n      return 'Retry';\n    }\n\n    if (lane & SelectiveHydrationLane) {\n      return 'SelectiveHydration';\n    }\n\n    if (lane & IdleHydrationLane) {\n      return 'IdleHydration';\n    }\n\n    if (lane & IdleLane) {\n      return 'Idle';\n    }\n\n    if (lane & OffscreenLane) {\n      return 'Offscreen';\n    }\n  }\n}\nvar NoTimestamp = -1;\nvar nextTransitionLane = TransitionLane1;\nvar nextRetryLane = RetryLane1;\n\nfunction getHighestPriorityLanes(lanes) {\n  switch (getHighestPriorityLane(lanes)) {\n    case SyncLane:\n      return SyncLane;\n\n    case InputContinuousHydrationLane:\n      return InputContinuousHydrationLane;\n\n    case InputContinuousLane:\n      return InputContinuousLane;\n\n    case DefaultHydrationLane:\n      return DefaultHydrationLane;\n\n    case DefaultLane:\n      return DefaultLane;\n\n    case TransitionHydrationLane:\n      return TransitionHydrationLane;\n\n    case TransitionLane1:\n    case TransitionLane2:\n    case TransitionLane3:\n    case TransitionLane4:\n    case TransitionLane5:\n    case TransitionLane6:\n    case TransitionLane7:\n    case TransitionLane8:\n    case TransitionLane9:\n    case TransitionLane10:\n    case TransitionLane11:\n    case TransitionLane12:\n    case TransitionLane13:\n    case TransitionLane14:\n    case TransitionLane15:\n    case TransitionLane16:\n      return lanes & TransitionLanes;\n\n    case RetryLane1:\n    case RetryLane2:\n    case RetryLane3:\n    case RetryLane4:\n    case RetryLane5:\n      return lanes & RetryLanes;\n\n    case SelectiveHydrationLane:\n      return SelectiveHydrationLane;\n\n    case IdleHydrationLane:\n      return IdleHydrationLane;\n\n    case IdleLane:\n      return IdleLane;\n\n    case OffscreenLane:\n      return OffscreenLane;\n\n    default:\n      {\n        error('Should have found matching lanes. This is a bug in React.');\n      } // This shouldn't be reachable, but as a fallback, return the entire bitmask.\n\n\n      return lanes;\n  }\n}\n\nfunction getNextLanes(root, wipLanes) {\n  // Early bailout if there's no pending work left.\n  var pendingLanes = root.pendingLanes;\n\n  if (pendingLanes === NoLanes) {\n    return NoLanes;\n  }\n\n  var nextLanes = NoLanes;\n  var suspendedLanes = root.suspendedLanes;\n  var pingedLanes = root.pingedLanes; // Do not work on any idle work until all the non-idle work has finished,\n  // even if the work is suspended.\n\n  var nonIdlePendingLanes = pendingLanes & NonIdleLanes;\n\n  if (nonIdlePendingLanes !== NoLanes) {\n    var nonIdleUnblockedLanes = nonIdlePendingLanes & ~suspendedLanes;\n\n    if (nonIdleUnblockedLanes !== NoLanes) {\n      nextLanes = getHighestPriorityLanes(nonIdleUnblockedLanes);\n    } else {\n      var nonIdlePingedLanes = nonIdlePendingLanes & pingedLanes;\n\n      if (nonIdlePingedLanes !== NoLanes) {\n        nextLanes = getHighestPriorityLanes(nonIdlePingedLanes);\n      }\n    }\n  } else {\n    // The only remaining work is Idle.\n    var unblockedLanes = pendingLanes & ~suspendedLanes;\n\n    if (unblockedLanes !== NoLanes) {\n      nextLanes = getHighestPriorityLanes(unblockedLanes);\n    } else {\n      if (pingedLanes !== NoLanes) {\n        nextLanes = getHighestPriorityLanes(pingedLanes);\n      }\n    }\n  }\n\n  if (nextLanes === NoLanes) {\n    // This should only be reachable if we're suspended\n    // TODO: Consider warning in this path if a fallback timer is not scheduled.\n    return NoLanes;\n  } // If we're already in the middle of a render, switching lanes will interrupt\n  // it and we'll lose our progress. We should only do this if the new lanes are\n  // higher priority.\n\n\n  if (wipLanes !== NoLanes && wipLanes !== nextLanes && // If we already suspended with a delay, then interrupting is fine. Don't\n  // bother waiting until the root is complete.\n  (wipLanes & suspendedLanes) === NoLanes) {\n    var nextLane = getHighestPriorityLane(nextLanes);\n    var wipLane = getHighestPriorityLane(wipLanes);\n\n    if ( // Tests whether the next lane is equal or lower priority than the wip\n    // one. This works because the bits decrease in priority as you go left.\n    nextLane >= wipLane || // Default priority updates should not interrupt transition updates. The\n    // only difference between default updates and transition updates is that\n    // default updates do not support refresh transitions.\n    nextLane === DefaultLane && (wipLane & TransitionLanes) !== NoLanes) {\n      // Keep working on the existing in-progress tree. Do not interrupt.\n      return wipLanes;\n    }\n  }\n\n  if ((nextLanes & InputContinuousLane) !== NoLanes) {\n    // When updates are sync by default, we entangle continuous priority updates\n    // and default updates, so they render in the same batch. The only reason\n    // they use separate lanes is because continuous updates should interrupt\n    // transitions, but default updates should not.\n    nextLanes |= pendingLanes & DefaultLane;\n  } // Check for entangled lanes and add them to the batch.\n  //\n  // A lane is said to be entangled with another when it's not allowed to render\n  // in a batch that does not also include the other lane. Typically we do this\n  // when multiple updates have the same source, and we only want to respond to\n  // the most recent event from that source.\n  //\n  // Note that we apply entanglements *after* checking for partial work above.\n  // This means that if a lane is entangled during an interleaved event while\n  // it's already rendering, we won't interrupt it. This is intentional, since\n  // entanglement is usually \"best effort\": we'll try our best to render the\n  // lanes in the same batch, but it's not worth throwing out partially\n  // completed work in order to do it.\n  // TODO: Reconsider this. The counter-argument is that the partial work\n  // represents an intermediate state, which we don't want to show to the user.\n  // And by spending extra time finishing it, we're increasing the amount of\n  // time it takes to show the final state, which is what they are actually\n  // waiting for.\n  //\n  // For those exceptions where entanglement is semantically important, like\n  // useMutableSource, we should ensure that there is no partial work at the\n  // time we apply the entanglement.\n\n\n  var entangledLanes = root.entangledLanes;\n\n  if (entangledLanes !== NoLanes) {\n    var entanglements = root.entanglements;\n    var lanes = nextLanes & entangledLanes;\n\n    while (lanes > 0) {\n      var index = pickArbitraryLaneIndex(lanes);\n      var lane = 1 << index;\n      nextLanes |= entanglements[index];\n      lanes &= ~lane;\n    }\n  }\n\n  return nextLanes;\n}\nfunction getMostRecentEventTime(root, lanes) {\n  var eventTimes = root.eventTimes;\n  var mostRecentEventTime = NoTimestamp;\n\n  while (lanes > 0) {\n    var index = pickArbitraryLaneIndex(lanes);\n    var lane = 1 << index;\n    var eventTime = eventTimes[index];\n\n    if (eventTime > mostRecentEventTime) {\n      mostRecentEventTime = eventTime;\n    }\n\n    lanes &= ~lane;\n  }\n\n  return mostRecentEventTime;\n}\n\nfunction computeExpirationTime(lane, currentTime) {\n  switch (lane) {\n    case SyncLane:\n    case InputContinuousHydrationLane:\n    case InputContinuousLane:\n      // User interactions should expire slightly more quickly.\n      //\n      // NOTE: This is set to the corresponding constant as in Scheduler.js.\n      // When we made it larger, a product metric in www regressed, suggesting\n      // there's a user interaction that's being starved by a series of\n      // synchronous updates. If that theory is correct, the proper solution is\n      // to fix the starvation. However, this scenario supports the idea that\n      // expiration times are an important safeguard when starvation\n      // does happen.\n      return currentTime + 250;\n\n    case DefaultHydrationLane:\n    case DefaultLane:\n    case TransitionHydrationLane:\n    case TransitionLane1:\n    case TransitionLane2:\n    case TransitionLane3:\n    case TransitionLane4:\n    case TransitionLane5:\n    case TransitionLane6:\n    case TransitionLane7:\n    case TransitionLane8:\n    case TransitionLane9:\n    case TransitionLane10:\n    case TransitionLane11:\n    case TransitionLane12:\n    case TransitionLane13:\n    case TransitionLane14:\n    case TransitionLane15:\n    case TransitionLane16:\n      return currentTime + 5000;\n\n    case RetryLane1:\n    case RetryLane2:\n    case RetryLane3:\n    case RetryLane4:\n    case RetryLane5:\n      // TODO: Retries should be allowed to expire if they are CPU bound for\n      // too long, but when I made this change it caused a spike in browser\n      // crashes. There must be some other underlying bug; not super urgent but\n      // ideally should figure out why and fix it. Unfortunately we don't have\n      // a repro for the crashes, only detected via production metrics.\n      return NoTimestamp;\n\n    case SelectiveHydrationLane:\n    case IdleHydrationLane:\n    case IdleLane:\n    case OffscreenLane:\n      // Anything idle priority or lower should never expire.\n      return NoTimestamp;\n\n    default:\n      {\n        error('Should have found matching lanes. This is a bug in React.');\n      }\n\n      return NoTimestamp;\n  }\n}\n\nfunction markStarvedLanesAsExpired(root, currentTime) {\n  // TODO: This gets called every time we yield. We can optimize by storing\n  // the earliest expiration time on the root. Then use that to quickly bail out\n  // of this function.\n  var pendingLanes = root.pendingLanes;\n  var suspendedLanes = root.suspendedLanes;\n  var pingedLanes = root.pingedLanes;\n  var expirationTimes = root.expirationTimes; // Iterate through the pending lanes and check if we've reached their\n  // expiration time. If so, we'll assume the update is being starved and mark\n  // it as expired to force it to finish.\n\n  var lanes = pendingLanes;\n\n  while (lanes > 0) {\n    var index = pickArbitraryLaneIndex(lanes);\n    var lane = 1 << index;\n    var expirationTime = expirationTimes[index];\n\n    if (expirationTime === NoTimestamp) {\n      // Found a pending lane with no expiration time. If it's not suspended, or\n      // if it's pinged, assume it's CPU-bound. Compute a new expiration time\n      // using the current time.\n      if ((lane & suspendedLanes) === NoLanes || (lane & pingedLanes) !== NoLanes) {\n        // Assumes timestamps are monotonically increasing.\n        expirationTimes[index] = computeExpirationTime(lane, currentTime);\n      }\n    } else if (expirationTime <= currentTime) {\n      // This lane expired\n      root.expiredLanes |= lane;\n    }\n\n    lanes &= ~lane;\n  }\n} // This returns the highest priority pending lanes regardless of whether they\n// are suspended.\n\nfunction getHighestPriorityPendingLanes(root) {\n  return getHighestPriorityLanes(root.pendingLanes);\n}\nfunction getLanesToRetrySynchronouslyOnError(root) {\n  var everythingButOffscreen = root.pendingLanes & ~OffscreenLane;\n\n  if (everythingButOffscreen !== NoLanes) {\n    return everythingButOffscreen;\n  }\n\n  if (everythingButOffscreen & OffscreenLane) {\n    return OffscreenLane;\n  }\n\n  return NoLanes;\n}\nfunction includesSyncLane(lanes) {\n  return (lanes & SyncLane) !== NoLanes;\n}\nfunction includesNonIdleWork(lanes) {\n  return (lanes & NonIdleLanes) !== NoLanes;\n}\nfunction includesOnlyRetries(lanes) {\n  return (lanes & RetryLanes) === lanes;\n}\nfunction includesOnlyNonUrgentLanes(lanes) {\n  var UrgentLanes = SyncLane | InputContinuousLane | DefaultLane;\n  return (lanes & UrgentLanes) === NoLanes;\n}\nfunction includesOnlyTransitions(lanes) {\n  return (lanes & TransitionLanes) === lanes;\n}\nfunction includesBlockingLane(root, lanes) {\n\n  var SyncDefaultLanes = InputContinuousHydrationLane | InputContinuousLane | DefaultHydrationLane | DefaultLane;\n  return (lanes & SyncDefaultLanes) !== NoLanes;\n}\nfunction includesExpiredLane(root, lanes) {\n  // This is a separate check from includesBlockingLane because a lane can\n  // expire after a render has already started.\n  return (lanes & root.expiredLanes) !== NoLanes;\n}\nfunction isTransitionLane(lane) {\n  return (lane & TransitionLanes) !== NoLanes;\n}\nfunction claimNextTransitionLane() {\n  // Cycle through the lanes, assigning each new transition to the next lane.\n  // In most cases, this means every transition gets its own lane, until we\n  // run out of lanes and cycle back to the beginning.\n  var lane = nextTransitionLane;\n  nextTransitionLane <<= 1;\n\n  if ((nextTransitionLane & TransitionLanes) === NoLanes) {\n    nextTransitionLane = TransitionLane1;\n  }\n\n  return lane;\n}\nfunction claimNextRetryLane() {\n  var lane = nextRetryLane;\n  nextRetryLane <<= 1;\n\n  if ((nextRetryLane & RetryLanes) === NoLanes) {\n    nextRetryLane = RetryLane1;\n  }\n\n  return lane;\n}\nfunction getHighestPriorityLane(lanes) {\n  return lanes & -lanes;\n}\nfunction pickArbitraryLane(lanes) {\n  // This wrapper function gets inlined. Only exists so to communicate that it\n  // doesn't matter which bit is selected; you can pick any bit without\n  // affecting the algorithms where its used. Here I'm using\n  // getHighestPriorityLane because it requires the fewest operations.\n  return getHighestPriorityLane(lanes);\n}\n\nfunction pickArbitraryLaneIndex(lanes) {\n  return 31 - clz32(lanes);\n}\n\nfunction laneToIndex(lane) {\n  return pickArbitraryLaneIndex(lane);\n}\n\nfunction includesSomeLane(a, b) {\n  return (a & b) !== NoLanes;\n}\nfunction isSubsetOfLanes(set, subset) {\n  return (set & subset) === subset;\n}\nfunction mergeLanes(a, b) {\n  return a | b;\n}\nfunction removeLanes(set, subset) {\n  return set & ~subset;\n}\nfunction intersectLanes(a, b) {\n  return a & b;\n} // Seems redundant, but it changes the type from a single lane (used for\n// updates) to a group of lanes (used for flushing work).\n\nfunction laneToLanes(lane) {\n  return lane;\n}\nfunction higherPriorityLane(a, b) {\n  // This works because the bit ranges decrease in priority as you go left.\n  return a !== NoLane && a < b ? a : b;\n}\nfunction createLaneMap(initial) {\n  // Intentionally pushing one by one.\n  // https://v8.dev/blog/elements-kinds#avoid-creating-holes\n  var laneMap = [];\n\n  for (var i = 0; i < TotalLanes; i++) {\n    laneMap.push(initial);\n  }\n\n  return laneMap;\n}\nfunction markRootUpdated(root, updateLane, eventTime) {\n  root.pendingLanes |= updateLane; // If there are any suspended transitions, it's possible this new update\n  // could unblock them. Clear the suspended lanes so that we can try rendering\n  // them again.\n  //\n  // TODO: We really only need to unsuspend only lanes that are in the\n  // `subtreeLanes` of the updated fiber, or the update lanes of the return\n  // path. This would exclude suspended updates in an unrelated sibling tree,\n  // since there's no way for this update to unblock it.\n  //\n  // We don't do this if the incoming update is idle, because we never process\n  // idle updates until after all the regular updates have finished; there's no\n  // way it could unblock a transition.\n\n  if (updateLane !== IdleLane) {\n    root.suspendedLanes = NoLanes;\n    root.pingedLanes = NoLanes;\n  }\n\n  var eventTimes = root.eventTimes;\n  var index = laneToIndex(updateLane); // We can always overwrite an existing timestamp because we prefer the most\n  // recent event, and we assume time is monotonically increasing.\n\n  eventTimes[index] = eventTime;\n}\nfunction markRootSuspended(root, suspendedLanes) {\n  root.suspendedLanes |= suspendedLanes;\n  root.pingedLanes &= ~suspendedLanes; // The suspended lanes are no longer CPU-bound. Clear their expiration times.\n\n  var expirationTimes = root.expirationTimes;\n  var lanes = suspendedLanes;\n\n  while (lanes > 0) {\n    var index = pickArbitraryLaneIndex(lanes);\n    var lane = 1 << index;\n    expirationTimes[index] = NoTimestamp;\n    lanes &= ~lane;\n  }\n}\nfunction markRootPinged(root, pingedLanes, eventTime) {\n  root.pingedLanes |= root.suspendedLanes & pingedLanes;\n}\nfunction markRootFinished(root, remainingLanes) {\n  var noLongerPendingLanes = root.pendingLanes & ~remainingLanes;\n  root.pendingLanes = remainingLanes; // Let's try everything again\n\n  root.suspendedLanes = NoLanes;\n  root.pingedLanes = NoLanes;\n  root.expiredLanes &= remainingLanes;\n  root.mutableReadLanes &= remainingLanes;\n  root.entangledLanes &= remainingLanes;\n  var entanglements = root.entanglements;\n  var eventTimes = root.eventTimes;\n  var expirationTimes = root.expirationTimes; // Clear the lanes that no longer have pending work\n\n  var lanes = noLongerPendingLanes;\n\n  while (lanes > 0) {\n    var index = pickArbitraryLaneIndex(lanes);\n    var lane = 1 << index;\n    entanglements[index] = NoLanes;\n    eventTimes[index] = NoTimestamp;\n    expirationTimes[index] = NoTimestamp;\n    lanes &= ~lane;\n  }\n}\nfunction markRootEntangled(root, entangledLanes) {\n  // In addition to entangling each of the given lanes with each other, we also\n  // have to consider _transitive_ entanglements. For each lane that is already\n  // entangled with *any* of the given lanes, that lane is now transitively\n  // entangled with *all* the given lanes.\n  //\n  // Translated: If C is entangled with A, then entangling A with B also\n  // entangles C with B.\n  //\n  // If this is hard to grasp, it might help to intentionally break this\n  // function and look at the tests that fail in ReactTransition-test.js. Try\n  // commenting out one of the conditions below.\n  var rootEntangledLanes = root.entangledLanes |= entangledLanes;\n  var entanglements = root.entanglements;\n  var lanes = rootEntangledLanes;\n\n  while (lanes) {\n    var index = pickArbitraryLaneIndex(lanes);\n    var lane = 1 << index;\n\n    if ( // Is this one of the newly entangled lanes?\n    lane & entangledLanes | // Is this lane transitively entangled with the newly entangled lanes?\n    entanglements[index] & entangledLanes) {\n      entanglements[index] |= entangledLanes;\n    }\n\n    lanes &= ~lane;\n  }\n}\nfunction getBumpedLaneForHydration(root, renderLanes) {\n  var renderLane = getHighestPriorityLane(renderLanes);\n  var lane;\n\n  switch (renderLane) {\n    case InputContinuousLane:\n      lane = InputContinuousHydrationLane;\n      break;\n\n    case DefaultLane:\n      lane = DefaultHydrationLane;\n      break;\n\n    case TransitionLane1:\n    case TransitionLane2:\n    case TransitionLane3:\n    case TransitionLane4:\n    case TransitionLane5:\n    case TransitionLane6:\n    case TransitionLane7:\n    case TransitionLane8:\n    case TransitionLane9:\n    case TransitionLane10:\n    case TransitionLane11:\n    case TransitionLane12:\n    case TransitionLane13:\n    case TransitionLane14:\n    case TransitionLane15:\n    case TransitionLane16:\n    case RetryLane1:\n    case RetryLane2:\n    case RetryLane3:\n    case RetryLane4:\n    case RetryLane5:\n      lane = TransitionHydrationLane;\n      break;\n\n    case IdleLane:\n      lane = IdleHydrationLane;\n      break;\n\n    default:\n      // Everything else is already either a hydration lane, or shouldn't\n      // be retried at a hydration lane.\n      lane = NoLane;\n      break;\n  } // Check if the lane we chose is suspended. If so, that indicates that we\n  // already attempted and failed to hydrate at that level. Also check if we're\n  // already rendering that lane, which is rare but could happen.\n\n\n  if ((lane & (root.suspendedLanes | renderLanes)) !== NoLane) {\n    // Give up trying to hydrate and fall back to client render.\n    return NoLane;\n  }\n\n  return lane;\n}\nfunction addFiberToLanesMap(root, fiber, lanes) {\n\n  if (!isDevToolsPresent) {\n    return;\n  }\n\n  var pendingUpdatersLaneMap = root.pendingUpdatersLaneMap;\n\n  while (lanes > 0) {\n    var index = laneToIndex(lanes);\n    var lane = 1 << index;\n    var updaters = pendingUpdatersLaneMap[index];\n    updaters.add(fiber);\n    lanes &= ~lane;\n  }\n}\nfunction movePendingFibersToMemoized(root, lanes) {\n\n  if (!isDevToolsPresent) {\n    return;\n  }\n\n  var pendingUpdatersLaneMap = root.pendingUpdatersLaneMap;\n  var memoizedUpdaters = root.memoizedUpdaters;\n\n  while (lanes > 0) {\n    var index = laneToIndex(lanes);\n    var lane = 1 << index;\n    var updaters = pendingUpdatersLaneMap[index];\n\n    if (updaters.size > 0) {\n      updaters.forEach(function (fiber) {\n        var alternate = fiber.alternate;\n\n        if (alternate === null || !memoizedUpdaters.has(alternate)) {\n          memoizedUpdaters.add(fiber);\n        }\n      });\n      updaters.clear();\n    }\n\n    lanes &= ~lane;\n  }\n}\nfunction getTransitionsForLanes(root, lanes) {\n  {\n    return null;\n  }\n}\n\nvar DiscreteEventPriority = SyncLane;\nvar ContinuousEventPriority = InputContinuousLane;\nvar DefaultEventPriority = DefaultLane;\nvar IdleEventPriority = IdleLane;\nvar currentUpdatePriority = NoLane;\nfunction getCurrentUpdatePriority() {\n  return currentUpdatePriority;\n}\nfunction setCurrentUpdatePriority(newPriority) {\n  currentUpdatePriority = newPriority;\n}\nfunction runWithPriority(priority, fn) {\n  var previousPriority = currentUpdatePriority;\n\n  try {\n    currentUpdatePriority = priority;\n    return fn();\n  } finally {\n    currentUpdatePriority = previousPriority;\n  }\n}\nfunction higherEventPriority(a, b) {\n  return a !== 0 && a < b ? a : b;\n}\nfunction lowerEventPriority(a, b) {\n  return a === 0 || a > b ? a : b;\n}\nfunction isHigherEventPriority(a, b) {\n  return a !== 0 && a < b;\n}\nfunction lanesToEventPriority(lanes) {\n  var lane = getHighestPriorityLane(lanes);\n\n  if (!isHigherEventPriority(DiscreteEventPriority, lane)) {\n    return DiscreteEventPriority;\n  }\n\n  if (!isHigherEventPriority(ContinuousEventPriority, lane)) {\n    return ContinuousEventPriority;\n  }\n\n  if (includesNonIdleWork(lane)) {\n    return DefaultEventPriority;\n  }\n\n  return IdleEventPriority;\n}\n\n// This is imported by the event replaying implementation in React DOM. It's\n// in a separate file to break a circular dependency between the renderer and\n// the reconciler.\nfunction isRootDehydrated(root) {\n  var currentState = root.current.memoizedState;\n  return currentState.isDehydrated;\n}\n\nvar _attemptSynchronousHydration;\n\nfunction setAttemptSynchronousHydration(fn) {\n  _attemptSynchronousHydration = fn;\n}\nfunction attemptSynchronousHydration(fiber) {\n  _attemptSynchronousHydration(fiber);\n}\nvar attemptContinuousHydration;\nfunction setAttemptContinuousHydration(fn) {\n  attemptContinuousHydration = fn;\n}\nvar attemptHydrationAtCurrentPriority;\nfunction setAttemptHydrationAtCurrentPriority(fn) {\n  attemptHydrationAtCurrentPriority = fn;\n}\nvar getCurrentUpdatePriority$1;\nfunction setGetCurrentUpdatePriority(fn) {\n  getCurrentUpdatePriority$1 = fn;\n}\nvar attemptHydrationAtPriority;\nfunction setAttemptHydrationAtPriority(fn) {\n  attemptHydrationAtPriority = fn;\n} // TODO: Upgrade this definition once we're on a newer version of Flow that\n// has this definition built-in.\n\nvar hasScheduledReplayAttempt = false; // The queue of discrete events to be replayed.\n\nvar queuedDiscreteEvents = []; // Indicates if any continuous event targets are non-null for early bailout.\n// if the last target was dehydrated.\n\nvar queuedFocus = null;\nvar queuedDrag = null;\nvar queuedMouse = null; // For pointer events there can be one latest event per pointerId.\n\nvar queuedPointers = new Map();\nvar queuedPointerCaptures = new Map(); // We could consider replaying selectionchange and touchmoves too.\n\nvar queuedExplicitHydrationTargets = [];\nvar discreteReplayableEvents = ['mousedown', 'mouseup', 'touchcancel', 'touchend', 'touchstart', 'auxclick', 'dblclick', 'pointercancel', 'pointerdown', 'pointerup', 'dragend', 'dragstart', 'drop', 'compositionend', 'compositionstart', 'keydown', 'keypress', 'keyup', 'input', 'textInput', // Intentionally camelCase\n'copy', 'cut', 'paste', 'click', 'change', 'contextmenu', 'reset', 'submit'];\nfunction isDiscreteEventThatRequiresHydration(eventType) {\n  return discreteReplayableEvents.indexOf(eventType) > -1;\n}\n\nfunction createQueuedReplayableEvent(blockedOn, domEventName, eventSystemFlags, targetContainer, nativeEvent) {\n  return {\n    blockedOn: blockedOn,\n    domEventName: domEventName,\n    eventSystemFlags: eventSystemFlags,\n    nativeEvent: nativeEvent,\n    targetContainers: [targetContainer]\n  };\n}\n\nfunction clearIfContinuousEvent(domEventName, nativeEvent) {\n  switch (domEventName) {\n    case 'focusin':\n    case 'focusout':\n      queuedFocus = null;\n      break;\n\n    case 'dragenter':\n    case 'dragleave':\n      queuedDrag = null;\n      break;\n\n    case 'mouseover':\n    case 'mouseout':\n      queuedMouse = null;\n      break;\n\n    case 'pointerover':\n    case 'pointerout':\n      {\n        var pointerId = nativeEvent.pointerId;\n        queuedPointers.delete(pointerId);\n        break;\n      }\n\n    case 'gotpointercapture':\n    case 'lostpointercapture':\n      {\n        var _pointerId = nativeEvent.pointerId;\n        queuedPointerCaptures.delete(_pointerId);\n        break;\n      }\n  }\n}\n\nfunction accumulateOrCreateContinuousQueuedReplayableEvent(existingQueuedEvent, blockedOn, domEventName, eventSystemFlags, targetContainer, nativeEvent) {\n  if (existingQueuedEvent === null || existingQueuedEvent.nativeEvent !== nativeEvent) {\n    var queuedEvent = createQueuedReplayableEvent(blockedOn, domEventName, eventSystemFlags, targetContainer, nativeEvent);\n\n    if (blockedOn !== null) {\n      var _fiber2 = getInstanceFromNode(blockedOn);\n\n      if (_fiber2 !== null) {\n        // Attempt to increase the priority of this target.\n        attemptContinuousHydration(_fiber2);\n      }\n    }\n\n    return queuedEvent;\n  } // If we have already queued this exact event, then it's because\n  // the different event systems have different DOM event listeners.\n  // We can accumulate the flags, and the targetContainers, and\n  // store a single event to be replayed.\n\n\n  existingQueuedEvent.eventSystemFlags |= eventSystemFlags;\n  var targetContainers = existingQueuedEvent.targetContainers;\n\n  if (targetContainer !== null && targetContainers.indexOf(targetContainer) === -1) {\n    targetContainers.push(targetContainer);\n  }\n\n  return existingQueuedEvent;\n}\n\nfunction queueIfContinuousEvent(blockedOn, domEventName, eventSystemFlags, targetContainer, nativeEvent) {\n  // These set relatedTarget to null because the replayed event will be treated as if we\n  // moved from outside the window (no target) onto the target once it hydrates.\n  // Instead of mutating we could clone the event.\n  switch (domEventName) {\n    case 'focusin':\n      {\n        var focusEvent = nativeEvent;\n        queuedFocus = accumulateOrCreateContinuousQueuedReplayableEvent(queuedFocus, blockedOn, domEventName, eventSystemFlags, targetContainer, focusEvent);\n        return true;\n      }\n\n    case 'dragenter':\n      {\n        var dragEvent = nativeEvent;\n        queuedDrag = accumulateOrCreateContinuousQueuedReplayableEvent(queuedDrag, blockedOn, domEventName, eventSystemFlags, targetContainer, dragEvent);\n        return true;\n      }\n\n    case 'mouseover':\n      {\n        var mouseEvent = nativeEvent;\n        queuedMouse = accumulateOrCreateContinuousQueuedReplayableEvent(queuedMouse, blockedOn, domEventName, eventSystemFlags, targetContainer, mouseEvent);\n        return true;\n      }\n\n    case 'pointerover':\n      {\n        var pointerEvent = nativeEvent;\n        var pointerId = pointerEvent.pointerId;\n        queuedPointers.set(pointerId, accumulateOrCreateContinuousQueuedReplayableEvent(queuedPointers.get(pointerId) || null, blockedOn, domEventName, eventSystemFlags, targetContainer, pointerEvent));\n        return true;\n      }\n\n    case 'gotpointercapture':\n      {\n        var _pointerEvent = nativeEvent;\n        var _pointerId2 = _pointerEvent.pointerId;\n        queuedPointerCaptures.set(_pointerId2, accumulateOrCreateContinuousQueuedReplayableEvent(queuedPointerCaptures.get(_pointerId2) || null, blockedOn, domEventName, eventSystemFlags, targetContainer, _pointerEvent));\n        return true;\n      }\n  }\n\n  return false;\n} // Check if this target is unblocked. Returns true if it's unblocked.\n\nfunction attemptExplicitHydrationTarget(queuedTarget) {\n  // TODO: This function shares a lot of logic with findInstanceBlockingEvent.\n  // Try to unify them. It's a bit tricky since it would require two return\n  // values.\n  var targetInst = getClosestInstanceFromNode(queuedTarget.target);\n\n  if (targetInst !== null) {\n    var nearestMounted = getNearestMountedFiber(targetInst);\n\n    if (nearestMounted !== null) {\n      var tag = nearestMounted.tag;\n\n      if (tag === SuspenseComponent) {\n        var instance = getSuspenseInstanceFromFiber(nearestMounted);\n\n        if (instance !== null) {\n          // We're blocked on hydrating this boundary.\n          // Increase its priority.\n          queuedTarget.blockedOn = instance;\n          attemptHydrationAtPriority(queuedTarget.priority, function () {\n            attemptHydrationAtCurrentPriority(nearestMounted);\n          });\n          return;\n        }\n      } else if (tag === HostRoot) {\n        var root = nearestMounted.stateNode;\n\n        if (isRootDehydrated(root)) {\n          queuedTarget.blockedOn = getContainerFromFiber(nearestMounted); // We don't currently have a way to increase the priority of\n          // a root other than sync.\n\n          return;\n        }\n      }\n    }\n  }\n\n  queuedTarget.blockedOn = null;\n}\n\nfunction queueExplicitHydrationTarget(target) {\n  // TODO: This will read the priority if it's dispatched by the React\n  // event system but not native events. Should read window.event.type, like\n  // we do for updates (getCurrentEventPriority).\n  var updatePriority = getCurrentUpdatePriority$1();\n  var queuedTarget = {\n    blockedOn: null,\n    target: target,\n    priority: updatePriority\n  };\n  var i = 0;\n\n  for (; i < queuedExplicitHydrationTargets.length; i++) {\n    // Stop once we hit the first target with lower priority than\n    if (!isHigherEventPriority(updatePriority, queuedExplicitHydrationTargets[i].priority)) {\n      break;\n    }\n  }\n\n  queuedExplicitHydrationTargets.splice(i, 0, queuedTarget);\n\n  if (i === 0) {\n    attemptExplicitHydrationTarget(queuedTarget);\n  }\n}\n\nfunction attemptReplayContinuousQueuedEvent(queuedEvent) {\n  if (queuedEvent.blockedOn !== null) {\n    return false;\n  }\n\n  var targetContainers = queuedEvent.targetContainers;\n\n  while (targetContainers.length > 0) {\n    var targetContainer = targetContainers[0];\n    var nextBlockedOn = findInstanceBlockingEvent(queuedEvent.domEventName, queuedEvent.eventSystemFlags, targetContainer, queuedEvent.nativeEvent);\n\n    if (nextBlockedOn === null) {\n      {\n        var nativeEvent = queuedEvent.nativeEvent;\n        var nativeEventClone = new nativeEvent.constructor(nativeEvent.type, nativeEvent);\n        setReplayingEvent(nativeEventClone);\n        nativeEvent.target.dispatchEvent(nativeEventClone);\n        resetReplayingEvent();\n      }\n    } else {\n      // We're still blocked. Try again later.\n      var _fiber3 = getInstanceFromNode(nextBlockedOn);\n\n      if (_fiber3 !== null) {\n        attemptContinuousHydration(_fiber3);\n      }\n\n      queuedEvent.blockedOn = nextBlockedOn;\n      return false;\n    } // This target container was successfully dispatched. Try the next.\n\n\n    targetContainers.shift();\n  }\n\n  return true;\n}\n\nfunction attemptReplayContinuousQueuedEventInMap(queuedEvent, key, map) {\n  if (attemptReplayContinuousQueuedEvent(queuedEvent)) {\n    map.delete(key);\n  }\n}\n\nfunction replayUnblockedEvents() {\n  hasScheduledReplayAttempt = false;\n\n\n  if (queuedFocus !== null && attemptReplayContinuousQueuedEvent(queuedFocus)) {\n    queuedFocus = null;\n  }\n\n  if (queuedDrag !== null && attemptReplayContinuousQueuedEvent(queuedDrag)) {\n    queuedDrag = null;\n  }\n\n  if (queuedMouse !== null && attemptReplayContinuousQueuedEvent(queuedMouse)) {\n    queuedMouse = null;\n  }\n\n  queuedPointers.forEach(attemptReplayContinuousQueuedEventInMap);\n  queuedPointerCaptures.forEach(attemptReplayContinuousQueuedEventInMap);\n}\n\nfunction scheduleCallbackIfUnblocked(queuedEvent, unblocked) {\n  if (queuedEvent.blockedOn === unblocked) {\n    queuedEvent.blockedOn = null;\n\n    if (!hasScheduledReplayAttempt) {\n      hasScheduledReplayAttempt = true; // Schedule a callback to attempt replaying as many events as are\n      // now unblocked. This first might not actually be unblocked yet.\n      // We could check it early to avoid scheduling an unnecessary callback.\n\n      Scheduler.unstable_scheduleCallback(Scheduler.unstable_NormalPriority, replayUnblockedEvents);\n    }\n  }\n}\n\nfunction retryIfBlockedOn(unblocked) {\n  // Mark anything that was blocked on this as no longer blocked\n  // and eligible for a replay.\n  if (queuedDiscreteEvents.length > 0) {\n    scheduleCallbackIfUnblocked(queuedDiscreteEvents[0], unblocked); // This is a exponential search for each boundary that commits. I think it's\n    // worth it because we expect very few discrete events to queue up and once\n    // we are actually fully unblocked it will be fast to replay them.\n\n    for (var i = 1; i < queuedDiscreteEvents.length; i++) {\n      var queuedEvent = queuedDiscreteEvents[i];\n\n      if (queuedEvent.blockedOn === unblocked) {\n        queuedEvent.blockedOn = null;\n      }\n    }\n  }\n\n  if (queuedFocus !== null) {\n    scheduleCallbackIfUnblocked(queuedFocus, unblocked);\n  }\n\n  if (queuedDrag !== null) {\n    scheduleCallbackIfUnblocked(queuedDrag, unblocked);\n  }\n\n  if (queuedMouse !== null) {\n    scheduleCallbackIfUnblocked(queuedMouse, unblocked);\n  }\n\n  var unblock = function (queuedEvent) {\n    return scheduleCallbackIfUnblocked(queuedEvent, unblocked);\n  };\n\n  queuedPointers.forEach(unblock);\n  queuedPointerCaptures.forEach(unblock);\n\n  for (var _i = 0; _i < queuedExplicitHydrationTargets.length; _i++) {\n    var queuedTarget = queuedExplicitHydrationTargets[_i];\n\n    if (queuedTarget.blockedOn === unblocked) {\n      queuedTarget.blockedOn = null;\n    }\n  }\n\n  while (queuedExplicitHydrationTargets.length > 0) {\n    var nextExplicitTarget = queuedExplicitHydrationTargets[0];\n\n    if (nextExplicitTarget.blockedOn !== null) {\n      // We're still blocked.\n      break;\n    } else {\n      attemptExplicitHydrationTarget(nextExplicitTarget);\n\n      if (nextExplicitTarget.blockedOn === null) {\n        // We're unblocked.\n        queuedExplicitHydrationTargets.shift();\n      }\n    }\n  }\n}\n\nvar ReactCurrentBatchConfig = ReactSharedInternals.ReactCurrentBatchConfig; // TODO: can we stop exporting these?\n\nvar _enabled = true; // This is exported in FB builds for use by legacy FB layer infra.\n// We'd like to remove this but it's not clear if this is safe.\n\nfunction setEnabled(enabled) {\n  _enabled = !!enabled;\n}\nfunction isEnabled() {\n  return _enabled;\n}\nfunction createEventListenerWrapperWithPriority(targetContainer, domEventName, eventSystemFlags) {\n  var eventPriority = getEventPriority(domEventName);\n  var listenerWrapper;\n\n  switch (eventPriority) {\n    case DiscreteEventPriority:\n      listenerWrapper = dispatchDiscreteEvent;\n      break;\n\n    case ContinuousEventPriority:\n      listenerWrapper = dispatchContinuousEvent;\n      break;\n\n    case DefaultEventPriority:\n    default:\n      listenerWrapper = dispatchEvent;\n      break;\n  }\n\n  return listenerWrapper.bind(null, domEventName, eventSystemFlags, targetContainer);\n}\n\nfunction dispatchDiscreteEvent(domEventName, eventSystemFlags, container, nativeEvent) {\n  var previousPriority = getCurrentUpdatePriority();\n  var prevTransition = ReactCurrentBatchConfig.transition;\n  ReactCurrentBatchConfig.transition = null;\n\n  try {\n    setCurrentUpdatePriority(DiscreteEventPriority);\n    dispatchEvent(domEventName, eventSystemFlags, container, nativeEvent);\n  } finally {\n    setCurrentUpdatePriority(previousPriority);\n    ReactCurrentBatchConfig.transition = prevTransition;\n  }\n}\n\nfunction dispatchContinuousEvent(domEventName, eventSystemFlags, container, nativeEvent) {\n  var previousPriority = getCurrentUpdatePriority();\n  var prevTransition = ReactCurrentBatchConfig.transition;\n  ReactCurrentBatchConfig.transition = null;\n\n  try {\n    setCurrentUpdatePriority(ContinuousEventPriority);\n    dispatchEvent(domEventName, eventSystemFlags, container, nativeEvent);\n  } finally {\n    setCurrentUpdatePriority(previousPriority);\n    ReactCurrentBatchConfig.transition = prevTransition;\n  }\n}\n\nfunction dispatchEvent(domEventName, eventSystemFlags, targetContainer, nativeEvent) {\n  if (!_enabled) {\n    return;\n  }\n\n  {\n    dispatchEventWithEnableCapturePhaseSelectiveHydrationWithoutDiscreteEventReplay(domEventName, eventSystemFlags, targetContainer, nativeEvent);\n  }\n}\n\nfunction dispatchEventWithEnableCapturePhaseSelectiveHydrationWithoutDiscreteEventReplay(domEventName, eventSystemFlags, targetContainer, nativeEvent) {\n  var blockedOn = findInstanceBlockingEvent(domEventName, eventSystemFlags, targetContainer, nativeEvent);\n\n  if (blockedOn === null) {\n    dispatchEventForPluginEventSystem(domEventName, eventSystemFlags, nativeEvent, return_targetInst, targetContainer);\n    clearIfContinuousEvent(domEventName, nativeEvent);\n    return;\n  }\n\n  if (queueIfContinuousEvent(blockedOn, domEventName, eventSystemFlags, targetContainer, nativeEvent)) {\n    nativeEvent.stopPropagation();\n    return;\n  } // We need to clear only if we didn't queue because\n  // queueing is accumulative.\n\n\n  clearIfContinuousEvent(domEventName, nativeEvent);\n\n  if (eventSystemFlags & IS_CAPTURE_PHASE && isDiscreteEventThatRequiresHydration(domEventName)) {\n    while (blockedOn !== null) {\n      var fiber = getInstanceFromNode(blockedOn);\n\n      if (fiber !== null) {\n        attemptSynchronousHydration(fiber);\n      }\n\n      var nextBlockedOn = findInstanceBlockingEvent(domEventName, eventSystemFlags, targetContainer, nativeEvent);\n\n      if (nextBlockedOn === null) {\n        dispatchEventForPluginEventSystem(domEventName, eventSystemFlags, nativeEvent, return_targetInst, targetContainer);\n      }\n\n      if (nextBlockedOn === blockedOn) {\n        break;\n      }\n\n      blockedOn = nextBlockedOn;\n    }\n\n    if (blockedOn !== null) {\n      nativeEvent.stopPropagation();\n    }\n\n    return;\n  } // This is not replayable so we'll invoke it but without a target,\n  // in case the event system needs to trace it.\n\n\n  dispatchEventForPluginEventSystem(domEventName, eventSystemFlags, nativeEvent, null, targetContainer);\n}\n\nvar return_targetInst = null; // Returns a SuspenseInstance or Container if it's blocked.\n// The return_targetInst field above is conceptually part of the return value.\n\nfunction findInstanceBlockingEvent(domEventName, eventSystemFlags, targetContainer, nativeEvent) {\n  // TODO: Warn if _enabled is false.\n  return_targetInst = null;\n  var nativeEventTarget = getEventTarget(nativeEvent);\n  var targetInst = getClosestInstanceFromNode(nativeEventTarget);\n\n  if (targetInst !== null) {\n    var nearestMounted = getNearestMountedFiber(targetInst);\n\n    if (nearestMounted === null) {\n      // This tree has been unmounted already. Dispatch without a target.\n      targetInst = null;\n    } else {\n      var tag = nearestMounted.tag;\n\n      if (tag === SuspenseComponent) {\n        var instance = getSuspenseInstanceFromFiber(nearestMounted);\n\n        if (instance !== null) {\n          // Queue the event to be replayed later. Abort dispatching since we\n          // don't want this event dispatched twice through the event system.\n          // TODO: If this is the first discrete event in the queue. Schedule an increased\n          // priority for this boundary.\n          return instance;\n        } // This shouldn't happen, something went wrong but to avoid blocking\n        // the whole system, dispatch the event without a target.\n        // TODO: Warn.\n\n\n        targetInst = null;\n      } else if (tag === HostRoot) {\n        var root = nearestMounted.stateNode;\n\n        if (isRootDehydrated(root)) {\n          // If this happens during a replay something went wrong and it might block\n          // the whole system.\n          return getContainerFromFiber(nearestMounted);\n        }\n\n        targetInst = null;\n      } else if (nearestMounted !== targetInst) {\n        // If we get an event (ex: img onload) before committing that\n        // component's mount, ignore it for now (that is, treat it as if it was an\n        // event on a non-React tree). We might also consider queueing events and\n        // dispatching them after the mount.\n        targetInst = null;\n      }\n    }\n  }\n\n  return_targetInst = targetInst; // We're not blocked on anything.\n\n  return null;\n}\nfunction getEventPriority(domEventName) {\n  switch (domEventName) {\n    // Used by SimpleEventPlugin:\n    case 'cancel':\n    case 'click':\n    case 'close':\n    case 'contextmenu':\n    case 'copy':\n    case 'cut':\n    case 'auxclick':\n    case 'dblclick':\n    case 'dragend':\n    case 'dragstart':\n    case 'drop':\n    case 'focusin':\n    case 'focusout':\n    case 'input':\n    case 'invalid':\n    case 'keydown':\n    case 'keypress':\n    case 'keyup':\n    case 'mousedown':\n    case 'mouseup':\n    case 'paste':\n    case 'pause':\n    case 'play':\n    case 'pointercancel':\n    case 'pointerdown':\n    case 'pointerup':\n    case 'ratechange':\n    case 'reset':\n    case 'resize':\n    case 'seeked':\n    case 'submit':\n    case 'touchcancel':\n    case 'touchend':\n    case 'touchstart':\n    case 'volumechange': // Used by polyfills:\n    // eslint-disable-next-line no-fallthrough\n\n    case 'change':\n    case 'selectionchange':\n    case 'textInput':\n    case 'compositionstart':\n    case 'compositionend':\n    case 'compositionupdate': // Only enableCreateEventHandleAPI:\n    // eslint-disable-next-line no-fallthrough\n\n    case 'beforeblur':\n    case 'afterblur': // Not used by React but could be by user code:\n    // eslint-disable-next-line no-fallthrough\n\n    case 'beforeinput':\n    case 'blur':\n    case 'fullscreenchange':\n    case 'focus':\n    case 'hashchange':\n    case 'popstate':\n    case 'select':\n    case 'selectstart':\n      return DiscreteEventPriority;\n\n    case 'drag':\n    case 'dragenter':\n    case 'dragexit':\n    case 'dragleave':\n    case 'dragover':\n    case 'mousemove':\n    case 'mouseout':\n    case 'mouseover':\n    case 'pointermove':\n    case 'pointerout':\n    case 'pointerover':\n    case 'scroll':\n    case 'toggle':\n    case 'touchmove':\n    case 'wheel': // Not used by React but could be by user code:\n    // eslint-disable-next-line no-fallthrough\n\n    case 'mouseenter':\n    case 'mouseleave':\n    case 'pointerenter':\n    case 'pointerleave':\n      return ContinuousEventPriority;\n\n    case 'message':\n      {\n        // We might be in the Scheduler callback.\n        // Eventually this mechanism will be replaced by a check\n        // of the current priority on the native scheduler.\n        var schedulerPriority = getCurrentPriorityLevel();\n\n        switch (schedulerPriority) {\n          case ImmediatePriority:\n            return DiscreteEventPriority;\n\n          case UserBlockingPriority:\n            return ContinuousEventPriority;\n\n          case NormalPriority:\n          case LowPriority:\n            // TODO: Handle LowSchedulerPriority, somehow. Maybe the same lane as hydration.\n            return DefaultEventPriority;\n\n          case IdlePriority:\n            return IdleEventPriority;\n\n          default:\n            return DefaultEventPriority;\n        }\n      }\n\n    default:\n      return DefaultEventPriority;\n  }\n}\n\nfunction addEventBubbleListener(target, eventType, listener) {\n  target.addEventListener(eventType, listener, false);\n  return listener;\n}\nfunction addEventCaptureListener(target, eventType, listener) {\n  target.addEventListener(eventType, listener, true);\n  return listener;\n}\nfunction addEventCaptureListenerWithPassiveFlag(target, eventType, listener, passive) {\n  target.addEventListener(eventType, listener, {\n    capture: true,\n    passive: passive\n  });\n  return listener;\n}\nfunction addEventBubbleListenerWithPassiveFlag(target, eventType, listener, passive) {\n  target.addEventListener(eventType, listener, {\n    passive: passive\n  });\n  return listener;\n}\n\n/**\n * These variables store information about text content of a target node,\n * allowing comparison of content before and after a given event.\n *\n * Identify the node where selection currently begins, then observe\n * both its text content and its current position in the DOM. Since the\n * browser may natively replace the target node during composition, we can\n * use its position to find its replacement.\n *\n *\n */\nvar root = null;\nvar startText = null;\nvar fallbackText = null;\nfunction initialize(nativeEventTarget) {\n  root = nativeEventTarget;\n  startText = getText();\n  return true;\n}\nfunction reset() {\n  root = null;\n  startText = null;\n  fallbackText = null;\n}\nfunction getData() {\n  if (fallbackText) {\n    return fallbackText;\n  }\n\n  var start;\n  var startValue = startText;\n  var startLength = startValue.length;\n  var end;\n  var endValue = getText();\n  var endLength = endValue.length;\n\n  for (start = 0; start < startLength; start++) {\n    if (startValue[start] !== endValue[start]) {\n      break;\n    }\n  }\n\n  var minEnd = startLength - start;\n\n  for (end = 1; end <= minEnd; end++) {\n    if (startValue[startLength - end] !== endValue[endLength - end]) {\n      break;\n    }\n  }\n\n  var sliceTail = end > 1 ? 1 - end : undefined;\n  fallbackText = endValue.slice(start, sliceTail);\n  return fallbackText;\n}\nfunction getText() {\n  if ('value' in root) {\n    return root.value;\n  }\n\n  return root.textContent;\n}\n\n/**\n * `charCode` represents the actual \"character code\" and is safe to use with\n * `String.fromCharCode`. As such, only keys that correspond to printable\n * characters produce a valid `charCode`, the only exception to this is Enter.\n * The Tab-key is considered non-printable and does not have a `charCode`,\n * presumably because it does not produce a tab-character in browsers.\n *\n * @param {object} nativeEvent Native browser event.\n * @return {number} Normalized `charCode` property.\n */\nfunction getEventCharCode(nativeEvent) {\n  var charCode;\n  var keyCode = nativeEvent.keyCode;\n\n  if ('charCode' in nativeEvent) {\n    charCode = nativeEvent.charCode; // FF does not set `charCode` for the Enter-key, check against `keyCode`.\n\n    if (charCode === 0 && keyCode === 13) {\n      charCode = 13;\n    }\n  } else {\n    // IE8 does not implement `charCode`, but `keyCode` has the correct value.\n    charCode = keyCode;\n  } // IE and Edge (on Windows) and Chrome / Safari (on Windows and Linux)\n  // report Enter as charCode 10 when ctrl is pressed.\n\n\n  if (charCode === 10) {\n    charCode = 13;\n  } // Some non-printable keys are reported in `charCode`/`keyCode`, discard them.\n  // Must not discard the (non-)printable Enter-key.\n\n\n  if (charCode >= 32 || charCode === 13) {\n    return charCode;\n  }\n\n  return 0;\n}\n\nfunction functionThatReturnsTrue() {\n  return true;\n}\n\nfunction functionThatReturnsFalse() {\n  return false;\n} // This is intentionally a factory so that we have different returned constructors.\n// If we had a single constructor, it would be megamorphic and engines would deopt.\n\n\nfunction createSyntheticEvent(Interface) {\n  /**\n   * Synthetic events are dispatched by event plugins, typically in response to a\n   * top-level event delegation handler.\n   *\n   * These systems should generally use pooling to reduce the frequency of garbage\n   * collection. The system should check `isPersistent` to determine whether the\n   * event should be released into the pool after being dispatched. Users that\n   * need a persisted event should invoke `persist`.\n   *\n   * Synthetic events (and subclasses) implement the DOM Level 3 Events API by\n   * normalizing browser quirks. Subclasses do not necessarily have to implement a\n   * DOM interface; custom application-specific events can also subclass this.\n   */\n  function SyntheticBaseEvent(reactName, reactEventType, targetInst, nativeEvent, nativeEventTarget) {\n    this._reactName = reactName;\n    this._targetInst = targetInst;\n    this.type = reactEventType;\n    this.nativeEvent = nativeEvent;\n    this.target = nativeEventTarget;\n    this.currentTarget = null;\n\n    for (var _propName in Interface) {\n      if (!Interface.hasOwnProperty(_propName)) {\n        continue;\n      }\n\n      var normalize = Interface[_propName];\n\n      if (normalize) {\n        this[_propName] = normalize(nativeEvent);\n      } else {\n        this[_propName] = nativeEvent[_propName];\n      }\n    }\n\n    var defaultPrevented = nativeEvent.defaultPrevented != null ? nativeEvent.defaultPrevented : nativeEvent.returnValue === false;\n\n    if (defaultPrevented) {\n      this.isDefaultPrevented = functionThatReturnsTrue;\n    } else {\n      this.isDefaultPrevented = functionThatReturnsFalse;\n    }\n\n    this.isPropagationStopped = functionThatReturnsFalse;\n    return this;\n  }\n\n  assign(SyntheticBaseEvent.prototype, {\n    preventDefault: function () {\n      this.defaultPrevented = true;\n      var event = this.nativeEvent;\n\n      if (!event) {\n        return;\n      }\n\n      if (event.preventDefault) {\n        event.preventDefault(); // $FlowFixMe - flow is not aware of `unknown` in IE\n      } else if (typeof event.returnValue !== 'unknown') {\n        event.returnValue = false;\n      }\n\n      this.isDefaultPrevented = functionThatReturnsTrue;\n    },\n    stopPropagation: function () {\n      var event = this.nativeEvent;\n\n      if (!event) {\n        return;\n      }\n\n      if (event.stopPropagation) {\n        event.stopPropagation(); // $FlowFixMe - flow is not aware of `unknown` in IE\n      } else if (typeof event.cancelBubble !== 'unknown') {\n        // The ChangeEventPlugin registers a \"propertychange\" event for\n        // IE. This event does not support bubbling or cancelling, and\n        // any references to cancelBubble throw \"Member not found\".  A\n        // typeof check of \"unknown\" circumvents this issue (and is also\n        // IE specific).\n        event.cancelBubble = true;\n      }\n\n      this.isPropagationStopped = functionThatReturnsTrue;\n    },\n\n    /**\n     * We release all dispatched `SyntheticEvent`s after each event loop, adding\n     * them back into the pool. This allows a way to hold onto a reference that\n     * won't be added back into the pool.\n     */\n    persist: function () {// Modern event system doesn't use pooling.\n    },\n\n    /**\n     * Checks if this event should be released back into the pool.\n     *\n     * @return {boolean} True if this should not be released, false otherwise.\n     */\n    isPersistent: functionThatReturnsTrue\n  });\n  return SyntheticBaseEvent;\n}\n/**\n * @interface Event\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\n\n\nvar EventInterface = {\n  eventPhase: 0,\n  bubbles: 0,\n  cancelable: 0,\n  timeStamp: function (event) {\n    return event.timeStamp || Date.now();\n  },\n  defaultPrevented: 0,\n  isTrusted: 0\n};\nvar SyntheticEvent = createSyntheticEvent(EventInterface);\n\nvar UIEventInterface = assign({}, EventInterface, {\n  view: 0,\n  detail: 0\n});\n\nvar SyntheticUIEvent = createSyntheticEvent(UIEventInterface);\nvar lastMovementX;\nvar lastMovementY;\nvar lastMouseEvent;\n\nfunction updateMouseMovementPolyfillState(event) {\n  if (event !== lastMouseEvent) {\n    if (lastMouseEvent && event.type === 'mousemove') {\n      lastMovementX = event.screenX - lastMouseEvent.screenX;\n      lastMovementY = event.screenY - lastMouseEvent.screenY;\n    } else {\n      lastMovementX = 0;\n      lastMovementY = 0;\n    }\n\n    lastMouseEvent = event;\n  }\n}\n/**\n * @interface MouseEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\n\n\nvar MouseEventInterface = assign({}, UIEventInterface, {\n  screenX: 0,\n  screenY: 0,\n  clientX: 0,\n  clientY: 0,\n  pageX: 0,\n  pageY: 0,\n  ctrlKey: 0,\n  shiftKey: 0,\n  altKey: 0,\n  metaKey: 0,\n  getModifierState: getEventModifierState,\n  button: 0,\n  buttons: 0,\n  relatedTarget: function (event) {\n    if (event.relatedTarget === undefined) return event.fromElement === event.srcElement ? event.toElement : event.fromElement;\n    return event.relatedTarget;\n  },\n  movementX: function (event) {\n    if ('movementX' in event) {\n      return event.movementX;\n    }\n\n    updateMouseMovementPolyfillState(event);\n    return lastMovementX;\n  },\n  movementY: function (event) {\n    if ('movementY' in event) {\n      return event.movementY;\n    } // Don't need to call updateMouseMovementPolyfillState() here\n    // because it's guaranteed to have already run when movementX\n    // was copied.\n\n\n    return lastMovementY;\n  }\n});\n\nvar SyntheticMouseEvent = createSyntheticEvent(MouseEventInterface);\n/**\n * @interface DragEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\n\nvar DragEventInterface = assign({}, MouseEventInterface, {\n  dataTransfer: 0\n});\n\nvar SyntheticDragEvent = createSyntheticEvent(DragEventInterface);\n/**\n * @interface FocusEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\n\nvar FocusEventInterface = assign({}, UIEventInterface, {\n  relatedTarget: 0\n});\n\nvar SyntheticFocusEvent = createSyntheticEvent(FocusEventInterface);\n/**\n * @interface Event\n * @see http://www.w3.org/TR/css3-animations/#AnimationEvent-interface\n * @see https://developer.mozilla.org/en-US/docs/Web/API/AnimationEvent\n */\n\nvar AnimationEventInterface = assign({}, EventInterface, {\n  animationName: 0,\n  elapsedTime: 0,\n  pseudoElement: 0\n});\n\nvar SyntheticAnimationEvent = createSyntheticEvent(AnimationEventInterface);\n/**\n * @interface Event\n * @see http://www.w3.org/TR/clipboard-apis/\n */\n\nvar ClipboardEventInterface = assign({}, EventInterface, {\n  clipboardData: function (event) {\n    return 'clipboardData' in event ? event.clipboardData : window.clipboardData;\n  }\n});\n\nvar SyntheticClipboardEvent = createSyntheticEvent(ClipboardEventInterface);\n/**\n * @interface Event\n * @see http://www.w3.org/TR/DOM-Level-3-Events/#events-compositionevents\n */\n\nvar CompositionEventInterface = assign({}, EventInterface, {\n  data: 0\n});\n\nvar SyntheticCompositionEvent = createSyntheticEvent(CompositionEventInterface);\n/**\n * @interface Event\n * @see http://www.w3.org/TR/2013/WD-DOM-Level-3-Events-20131105\n *      /#events-inputevents\n */\n// Happens to share the same list for now.\n\nvar SyntheticInputEvent = SyntheticCompositionEvent;\n/**\n * Normalization of deprecated HTML5 `key` values\n * @see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent#Key_names\n */\n\nvar normalizeKey = {\n  Esc: 'Escape',\n  Spacebar: ' ',\n  Left: 'ArrowLeft',\n  Up: 'ArrowUp',\n  Right: 'ArrowRight',\n  Down: 'ArrowDown',\n  Del: 'Delete',\n  Win: 'OS',\n  Menu: 'ContextMenu',\n  Apps: 'ContextMenu',\n  Scroll: 'ScrollLock',\n  MozPrintableKey: 'Unidentified'\n};\n/**\n * Translation from legacy `keyCode` to HTML5 `key`\n * Only special keys supported, all others depend on keyboard layout or browser\n * @see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent#Key_names\n */\n\nvar translateToKey = {\n  '8': 'Backspace',\n  '9': 'Tab',\n  '12': 'Clear',\n  '13': 'Enter',\n  '16': 'Shift',\n  '17': 'Control',\n  '18': 'Alt',\n  '19': 'Pause',\n  '20': 'CapsLock',\n  '27': 'Escape',\n  '32': ' ',\n  '33': 'PageUp',\n  '34': 'PageDown',\n  '35': 'End',\n  '36': 'Home',\n  '37': 'ArrowLeft',\n  '38': 'ArrowUp',\n  '39': 'ArrowRight',\n  '40': 'ArrowDown',\n  '45': 'Insert',\n  '46': 'Delete',\n  '112': 'F1',\n  '113': 'F2',\n  '114': 'F3',\n  '115': 'F4',\n  '116': 'F5',\n  '117': 'F6',\n  '118': 'F7',\n  '119': 'F8',\n  '120': 'F9',\n  '121': 'F10',\n  '122': 'F11',\n  '123': 'F12',\n  '144': 'NumLock',\n  '145': 'ScrollLock',\n  '224': 'Meta'\n};\n/**\n * @param {object} nativeEvent Native browser event.\n * @return {string} Normalized `key` property.\n */\n\nfunction getEventKey(nativeEvent) {\n  if (nativeEvent.key) {\n    // Normalize inconsistent values reported by browsers due to\n    // implementations of a working draft specification.\n    // FireFox implements `key` but returns `MozPrintableKey` for all\n    // printable characters (normalized to `Unidentified`), ignore it.\n    var key = normalizeKey[nativeEvent.key] || nativeEvent.key;\n\n    if (key !== 'Unidentified') {\n      return key;\n    }\n  } // Browser does not implement `key`, polyfill as much of it as we can.\n\n\n  if (nativeEvent.type === 'keypress') {\n    var charCode = getEventCharCode(nativeEvent); // The enter-key is technically both printable and non-printable and can\n    // thus be captured by `keypress`, no other non-printable key should.\n\n    return charCode === 13 ? 'Enter' : String.fromCharCode(charCode);\n  }\n\n  if (nativeEvent.type === 'keydown' || nativeEvent.type === 'keyup') {\n    // While user keyboard layout determines the actual meaning of each\n    // `keyCode` value, almost all function keys have a universal value.\n    return translateToKey[nativeEvent.keyCode] || 'Unidentified';\n  }\n\n  return '';\n}\n/**\n * Translation from modifier key to the associated property in the event.\n * @see http://www.w3.org/TR/DOM-Level-3-Events/#keys-Modifiers\n */\n\n\nvar modifierKeyToProp = {\n  Alt: 'altKey',\n  Control: 'ctrlKey',\n  Meta: 'metaKey',\n  Shift: 'shiftKey'\n}; // Older browsers (Safari <= 10, iOS Safari <= 10.2) do not support\n// getModifierState. If getModifierState is not supported, we map it to a set of\n// modifier keys exposed by the event. In this case, Lock-keys are not supported.\n\nfunction modifierStateGetter(keyArg) {\n  var syntheticEvent = this;\n  var nativeEvent = syntheticEvent.nativeEvent;\n\n  if (nativeEvent.getModifierState) {\n    return nativeEvent.getModifierState(keyArg);\n  }\n\n  var keyProp = modifierKeyToProp[keyArg];\n  return keyProp ? !!nativeEvent[keyProp] : false;\n}\n\nfunction getEventModifierState(nativeEvent) {\n  return modifierStateGetter;\n}\n/**\n * @interface KeyboardEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\n\n\nvar KeyboardEventInterface = assign({}, UIEventInterface, {\n  key: getEventKey,\n  code: 0,\n  location: 0,\n  ctrlKey: 0,\n  shiftKey: 0,\n  altKey: 0,\n  metaKey: 0,\n  repeat: 0,\n  locale: 0,\n  getModifierState: getEventModifierState,\n  // Legacy Interface\n  charCode: function (event) {\n    // `charCode` is the result of a KeyPress event and represents the value of\n    // the actual printable character.\n    // KeyPress is deprecated, but its replacement is not yet final and not\n    // implemented in any major browser. Only KeyPress has charCode.\n    if (event.type === 'keypress') {\n      return getEventCharCode(event);\n    }\n\n    return 0;\n  },\n  keyCode: function (event) {\n    // `keyCode` is the result of a KeyDown/Up event and represents the value of\n    // physical keyboard key.\n    // The actual meaning of the value depends on the users' keyboard layout\n    // which cannot be detected. Assuming that it is a US keyboard layout\n    // provides a surprisingly accurate mapping for US and European users.\n    // Due to this, it is left to the user to implement at this time.\n    if (event.type === 'keydown' || event.type === 'keyup') {\n      return event.keyCode;\n    }\n\n    return 0;\n  },\n  which: function (event) {\n    // `which` is an alias for either `keyCode` or `charCode` depending on the\n    // type of the event.\n    if (event.type === 'keypress') {\n      return getEventCharCode(event);\n    }\n\n    if (event.type === 'keydown' || event.type === 'keyup') {\n      return event.keyCode;\n    }\n\n    return 0;\n  }\n});\n\nvar SyntheticKeyboardEvent = createSyntheticEvent(KeyboardEventInterface);\n/**\n * @interface PointerEvent\n * @see http://www.w3.org/TR/pointerevents/\n */\n\nvar PointerEventInterface = assign({}, MouseEventInterface, {\n  pointerId: 0,\n  width: 0,\n  height: 0,\n  pressure: 0,\n  tangentialPressure: 0,\n  tiltX: 0,\n  tiltY: 0,\n  twist: 0,\n  pointerType: 0,\n  isPrimary: 0\n});\n\nvar SyntheticPointerEvent = createSyntheticEvent(PointerEventInterface);\n/**\n * @interface TouchEvent\n * @see http://www.w3.org/TR/touch-events/\n */\n\nvar TouchEventInterface = assign({}, UIEventInterface, {\n  touches: 0,\n  targetTouches: 0,\n  changedTouches: 0,\n  altKey: 0,\n  metaKey: 0,\n  ctrlKey: 0,\n  shiftKey: 0,\n  getModifierState: getEventModifierState\n});\n\nvar SyntheticTouchEvent = createSyntheticEvent(TouchEventInterface);\n/**\n * @interface Event\n * @see http://www.w3.org/TR/2009/WD-css3-transitions-20090320/#transition-events-\n * @see https://developer.mozilla.org/en-US/docs/Web/API/TransitionEvent\n */\n\nvar TransitionEventInterface = assign({}, EventInterface, {\n  propertyName: 0,\n  elapsedTime: 0,\n  pseudoElement: 0\n});\n\nvar SyntheticTransitionEvent = createSyntheticEvent(TransitionEventInterface);\n/**\n * @interface WheelEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\n\nvar WheelEventInterface = assign({}, MouseEventInterface, {\n  deltaX: function (event) {\n    return 'deltaX' in event ? event.deltaX : // Fallback to `wheelDeltaX` for Webkit and normalize (right is positive).\n    'wheelDeltaX' in event ? -event.wheelDeltaX : 0;\n  },\n  deltaY: function (event) {\n    return 'deltaY' in event ? event.deltaY : // Fallback to `wheelDeltaY` for Webkit and normalize (down is positive).\n    'wheelDeltaY' in event ? -event.wheelDeltaY : // Fallback to `wheelDelta` for IE<9 and normalize (down is positive).\n    'wheelDelta' in event ? -event.wheelDelta : 0;\n  },\n  deltaZ: 0,\n  // Browsers without \"deltaMode\" is reporting in raw wheel delta where one\n  // notch on the scroll is always +/- 120, roughly equivalent to pixels.\n  // A good approximation of DOM_DELTA_LINE (1) is 5% of viewport size or\n  // ~40 pixels, for DOM_DELTA_SCREEN (2) it is 87.5% of viewport size.\n  deltaMode: 0\n});\n\nvar SyntheticWheelEvent = createSyntheticEvent(WheelEventInterface);\n\nvar END_KEYCODES = [9, 13, 27, 32]; // Tab, Return, Esc, Space\n\nvar START_KEYCODE = 229;\nvar canUseCompositionEvent = canUseDOM && 'CompositionEvent' in window;\nvar documentMode = null;\n\nif (canUseDOM && 'documentMode' in document) {\n  documentMode = document.documentMode;\n} // Webkit offers a very useful `textInput` event that can be used to\n// directly represent `beforeInput`. The IE `textinput` event is not as\n// useful, so we don't use it.\n\n\nvar canUseTextInputEvent = canUseDOM && 'TextEvent' in window && !documentMode; // In IE9+, we have access to composition events, but the data supplied\n// by the native compositionend event may be incorrect. Japanese ideographic\n// spaces, for instance (\\u3000) are not recorded correctly.\n\nvar useFallbackCompositionData = canUseDOM && (!canUseCompositionEvent || documentMode && documentMode > 8 && documentMode <= 11);\nvar SPACEBAR_CODE = 32;\nvar SPACEBAR_CHAR = String.fromCharCode(SPACEBAR_CODE);\n\nfunction registerEvents() {\n  registerTwoPhaseEvent('onBeforeInput', ['compositionend', 'keypress', 'textInput', 'paste']);\n  registerTwoPhaseEvent('onCompositionEnd', ['compositionend', 'focusout', 'keydown', 'keypress', 'keyup', 'mousedown']);\n  registerTwoPhaseEvent('onCompositionStart', ['compositionstart', 'focusout', 'keydown', 'keypress', 'keyup', 'mousedown']);\n  registerTwoPhaseEvent('onCompositionUpdate', ['compositionupdate', 'focusout', 'keydown', 'keypress', 'keyup', 'mousedown']);\n} // Track whether we've ever handled a keypress on the space key.\n\n\nvar hasSpaceKeypress = false;\n/**\n * Return whether a native keypress event is assumed to be a command.\n * This is required because Firefox fires `keypress` events for key commands\n * (cut, copy, select-all, etc.) even though no character is inserted.\n */\n\nfunction isKeypressCommand(nativeEvent) {\n  return (nativeEvent.ctrlKey || nativeEvent.altKey || nativeEvent.metaKey) && // ctrlKey && altKey is equivalent to AltGr, and is not a command.\n  !(nativeEvent.ctrlKey && nativeEvent.altKey);\n}\n/**\n * Translate native top level events into event types.\n */\n\n\nfunction getCompositionEventType(domEventName) {\n  switch (domEventName) {\n    case 'compositionstart':\n      return 'onCompositionStart';\n\n    case 'compositionend':\n      return 'onCompositionEnd';\n\n    case 'compositionupdate':\n      return 'onCompositionUpdate';\n  }\n}\n/**\n * Does our fallback best-guess model think this event signifies that\n * composition has begun?\n */\n\n\nfunction isFallbackCompositionStart(domEventName, nativeEvent) {\n  return domEventName === 'keydown' && nativeEvent.keyCode === START_KEYCODE;\n}\n/**\n * Does our fallback mode think that this event is the end of composition?\n */\n\n\nfunction isFallbackCompositionEnd(domEventName, nativeEvent) {\n  switch (domEventName) {\n    case 'keyup':\n      // Command keys insert or clear IME input.\n      return END_KEYCODES.indexOf(nativeEvent.keyCode) !== -1;\n\n    case 'keydown':\n      // Expect IME keyCode on each keydown. If we get any other\n      // code we must have exited earlier.\n      return nativeEvent.keyCode !== START_KEYCODE;\n\n    case 'keypress':\n    case 'mousedown':\n    case 'focusout':\n      // Events are not possible without cancelling IME.\n      return true;\n\n    default:\n      return false;\n  }\n}\n/**\n * Google Input Tools provides composition data via a CustomEvent,\n * with the `data` property populated in the `detail` object. If this\n * is available on the event object, use it. If not, this is a plain\n * composition event and we have nothing special to extract.\n *\n * @param {object} nativeEvent\n * @return {?string}\n */\n\n\nfunction getDataFromCustomEvent(nativeEvent) {\n  var detail = nativeEvent.detail;\n\n  if (typeof detail === 'object' && 'data' in detail) {\n    return detail.data;\n  }\n\n  return null;\n}\n/**\n * Check if a composition event was triggered by Korean IME.\n * Our fallback mode does not work well with IE's Korean IME,\n * so just use native composition events when Korean IME is used.\n * Although CompositionEvent.locale property is deprecated,\n * it is available in IE, where our fallback mode is enabled.\n *\n * @param {object} nativeEvent\n * @return {boolean}\n */\n\n\nfunction isUsingKoreanIME(nativeEvent) {\n  return nativeEvent.locale === 'ko';\n} // Track the current IME composition status, if any.\n\n\nvar isComposing = false;\n/**\n * @return {?object} A SyntheticCompositionEvent.\n */\n\nfunction extractCompositionEvent(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget) {\n  var eventType;\n  var fallbackData;\n\n  if (canUseCompositionEvent) {\n    eventType = getCompositionEventType(domEventName);\n  } else if (!isComposing) {\n    if (isFallbackCompositionStart(domEventName, nativeEvent)) {\n      eventType = 'onCompositionStart';\n    }\n  } else if (isFallbackCompositionEnd(domEventName, nativeEvent)) {\n    eventType = 'onCompositionEnd';\n  }\n\n  if (!eventType) {\n    return null;\n  }\n\n  if (useFallbackCompositionData && !isUsingKoreanIME(nativeEvent)) {\n    // The current composition is stored statically and must not be\n    // overwritten while composition continues.\n    if (!isComposing && eventType === 'onCompositionStart') {\n      isComposing = initialize(nativeEventTarget);\n    } else if (eventType === 'onCompositionEnd') {\n      if (isComposing) {\n        fallbackData = getData();\n      }\n    }\n  }\n\n  var listeners = accumulateTwoPhaseListeners(targetInst, eventType);\n\n  if (listeners.length > 0) {\n    var event = new SyntheticCompositionEvent(eventType, domEventName, null, nativeEvent, nativeEventTarget);\n    dispatchQueue.push({\n      event: event,\n      listeners: listeners\n    });\n\n    if (fallbackData) {\n      // Inject data generated from fallback path into the synthetic event.\n      // This matches the property of native CompositionEventInterface.\n      event.data = fallbackData;\n    } else {\n      var customData = getDataFromCustomEvent(nativeEvent);\n\n      if (customData !== null) {\n        event.data = customData;\n      }\n    }\n  }\n}\n\nfunction getNativeBeforeInputChars(domEventName, nativeEvent) {\n  switch (domEventName) {\n    case 'compositionend':\n      return getDataFromCustomEvent(nativeEvent);\n\n    case 'keypress':\n      /**\n       * If native `textInput` events are available, our goal is to make\n       * use of them. However, there is a special case: the spacebar key.\n       * In Webkit, preventing default on a spacebar `textInput` event\n       * cancels character insertion, but it *also* causes the browser\n       * to fall back to its default spacebar behavior of scrolling the\n       * page.\n       *\n       * Tracking at:\n       * https://code.google.com/p/chromium/issues/detail?id=355103\n       *\n       * To avoid this issue, use the keypress event as if no `textInput`\n       * event is available.\n       */\n      var which = nativeEvent.which;\n\n      if (which !== SPACEBAR_CODE) {\n        return null;\n      }\n\n      hasSpaceKeypress = true;\n      return SPACEBAR_CHAR;\n\n    case 'textInput':\n      // Record the characters to be added to the DOM.\n      var chars = nativeEvent.data; // If it's a spacebar character, assume that we have already handled\n      // it at the keypress level and bail immediately. Android Chrome\n      // doesn't give us keycodes, so we need to ignore it.\n\n      if (chars === SPACEBAR_CHAR && hasSpaceKeypress) {\n        return null;\n      }\n\n      return chars;\n\n    default:\n      // For other native event types, do nothing.\n      return null;\n  }\n}\n/**\n * For browsers that do not provide the `textInput` event, extract the\n * appropriate string to use for SyntheticInputEvent.\n */\n\n\nfunction getFallbackBeforeInputChars(domEventName, nativeEvent) {\n  // If we are currently composing (IME) and using a fallback to do so,\n  // try to extract the composed characters from the fallback object.\n  // If composition event is available, we extract a string only at\n  // compositionevent, otherwise extract it at fallback events.\n  if (isComposing) {\n    if (domEventName === 'compositionend' || !canUseCompositionEvent && isFallbackCompositionEnd(domEventName, nativeEvent)) {\n      var chars = getData();\n      reset();\n      isComposing = false;\n      return chars;\n    }\n\n    return null;\n  }\n\n  switch (domEventName) {\n    case 'paste':\n      // If a paste event occurs after a keypress, throw out the input\n      // chars. Paste events should not lead to BeforeInput events.\n      return null;\n\n    case 'keypress':\n      /**\n       * As of v27, Firefox may fire keypress events even when no character\n       * will be inserted. A few possibilities:\n       *\n       * - `which` is `0`. Arrow keys, Esc key, etc.\n       *\n       * - `which` is the pressed key code, but no char is available.\n       *   Ex: 'AltGr + d` in Polish. There is no modified character for\n       *   this key combination and no character is inserted into the\n       *   document, but FF fires the keypress for char code `100` anyway.\n       *   No `input` event will occur.\n       *\n       * - `which` is the pressed key code, but a command combination is\n       *   being used. Ex: `Cmd+C`. No character is inserted, and no\n       *   `input` event will occur.\n       */\n      if (!isKeypressCommand(nativeEvent)) {\n        // IE fires the `keypress` event when a user types an emoji via\n        // Touch keyboard of Windows.  In such a case, the `char` property\n        // holds an emoji character like `\\uD83D\\uDE0A`.  Because its length\n        // is 2, the property `which` does not represent an emoji correctly.\n        // In such a case, we directly return the `char` property instead of\n        // using `which`.\n        if (nativeEvent.char && nativeEvent.char.length > 1) {\n          return nativeEvent.char;\n        } else if (nativeEvent.which) {\n          return String.fromCharCode(nativeEvent.which);\n        }\n      }\n\n      return null;\n\n    case 'compositionend':\n      return useFallbackCompositionData && !isUsingKoreanIME(nativeEvent) ? null : nativeEvent.data;\n\n    default:\n      return null;\n  }\n}\n/**\n * Extract a SyntheticInputEvent for `beforeInput`, based on either native\n * `textInput` or fallback behavior.\n *\n * @return {?object} A SyntheticInputEvent.\n */\n\n\nfunction extractBeforeInputEvent(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget) {\n  var chars;\n\n  if (canUseTextInputEvent) {\n    chars = getNativeBeforeInputChars(domEventName, nativeEvent);\n  } else {\n    chars = getFallbackBeforeInputChars(domEventName, nativeEvent);\n  } // If no characters are being inserted, no BeforeInput event should\n  // be fired.\n\n\n  if (!chars) {\n    return null;\n  }\n\n  var listeners = accumulateTwoPhaseListeners(targetInst, 'onBeforeInput');\n\n  if (listeners.length > 0) {\n    var event = new SyntheticInputEvent('onBeforeInput', 'beforeinput', null, nativeEvent, nativeEventTarget);\n    dispatchQueue.push({\n      event: event,\n      listeners: listeners\n    });\n    event.data = chars;\n  }\n}\n/**\n * Create an `onBeforeInput` event to match\n * http://www.w3.org/TR/2013/WD-DOM-Level-3-Events-20131105/#events-inputevents.\n *\n * This event plugin is based on the native `textInput` event\n * available in Chrome, Safari, Opera, and IE. This event fires after\n * `onKeyPress` and `onCompositionEnd`, but before `onInput`.\n *\n * `beforeInput` is spec'd but not implemented in any browsers, and\n * the `input` event does not provide any useful information about what has\n * actually been added, contrary to the spec. Thus, `textInput` is the best\n * available event to identify the characters that have actually been inserted\n * into the target node.\n *\n * This plugin is also responsible for emitting `composition` events, thus\n * allowing us to share composition fallback code for both `beforeInput` and\n * `composition` event types.\n */\n\n\nfunction extractEvents(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget, eventSystemFlags, targetContainer) {\n  extractCompositionEvent(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget);\n  extractBeforeInputEvent(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget);\n}\n\n/**\n * @see http://www.whatwg.org/specs/web-apps/current-work/multipage/the-input-element.html#input-type-attr-summary\n */\nvar supportedInputTypes = {\n  color: true,\n  date: true,\n  datetime: true,\n  'datetime-local': true,\n  email: true,\n  month: true,\n  number: true,\n  password: true,\n  range: true,\n  search: true,\n  tel: true,\n  text: true,\n  time: true,\n  url: true,\n  week: true\n};\n\nfunction isTextInputElement(elem) {\n  var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();\n\n  if (nodeName === 'input') {\n    return !!supportedInputTypes[elem.type];\n  }\n\n  if (nodeName === 'textarea') {\n    return true;\n  }\n\n  return false;\n}\n\n/**\n * Checks if an event is supported in the current execution environment.\n *\n * NOTE: This will not work correctly for non-generic events such as `change`,\n * `reset`, `load`, `error`, and `select`.\n *\n * Borrows from Modernizr.\n *\n * @param {string} eventNameSuffix Event name, e.g. \"click\".\n * @return {boolean} True if the event is supported.\n * @internal\n * @license Modernizr 3.0.0pre (Custom Build) | MIT\n */\n\nfunction isEventSupported(eventNameSuffix) {\n  if (!canUseDOM) {\n    return false;\n  }\n\n  var eventName = 'on' + eventNameSuffix;\n  var isSupported = (eventName in document);\n\n  if (!isSupported) {\n    var element = document.createElement('div');\n    element.setAttribute(eventName, 'return;');\n    isSupported = typeof element[eventName] === 'function';\n  }\n\n  return isSupported;\n}\n\nfunction registerEvents$1() {\n  registerTwoPhaseEvent('onChange', ['change', 'click', 'focusin', 'focusout', 'input', 'keydown', 'keyup', 'selectionchange']);\n}\n\nfunction createAndAccumulateChangeEvent(dispatchQueue, inst, nativeEvent, target) {\n  // Flag this event loop as needing state restore.\n  enqueueStateRestore(target);\n  var listeners = accumulateTwoPhaseListeners(inst, 'onChange');\n\n  if (listeners.length > 0) {\n    var event = new SyntheticEvent('onChange', 'change', null, nativeEvent, target);\n    dispatchQueue.push({\n      event: event,\n      listeners: listeners\n    });\n  }\n}\n/**\n * For IE shims\n */\n\n\nvar activeElement = null;\nvar activeElementInst = null;\n/**\n * SECTION: handle `change` event\n */\n\nfunction shouldUseChangeEvent(elem) {\n  var nodeName = elem.nodeName && elem.nodeName.toLowerCase();\n  return nodeName === 'select' || nodeName === 'input' && elem.type === 'file';\n}\n\nfunction manualDispatchChangeEvent(nativeEvent) {\n  var dispatchQueue = [];\n  createAndAccumulateChangeEvent(dispatchQueue, activeElementInst, nativeEvent, getEventTarget(nativeEvent)); // If change and propertychange bubbled, we'd just bind to it like all the\n  // other events and have it go through ReactBrowserEventEmitter. Since it\n  // doesn't, we manually listen for the events and so we have to enqueue and\n  // process the abstract event manually.\n  //\n  // Batching is necessary here in order to ensure that all event handlers run\n  // before the next rerender (including event handlers attached to ancestor\n  // elements instead of directly on the input). Without this, controlled\n  // components don't work properly in conjunction with event bubbling because\n  // the component is rerendered and the value reverted before all the event\n  // handlers can run. See https://github.com/facebook/react/issues/708.\n\n  batchedUpdates(runEventInBatch, dispatchQueue);\n}\n\nfunction runEventInBatch(dispatchQueue) {\n  processDispatchQueue(dispatchQueue, 0);\n}\n\nfunction getInstIfValueChanged(targetInst) {\n  var targetNode = getNodeFromInstance(targetInst);\n\n  if (updateValueIfChanged(targetNode)) {\n    return targetInst;\n  }\n}\n\nfunction getTargetInstForChangeEvent(domEventName, targetInst) {\n  if (domEventName === 'change') {\n    return targetInst;\n  }\n}\n/**\n * SECTION: handle `input` event\n */\n\n\nvar isInputEventSupported = false;\n\nif (canUseDOM) {\n  // IE9 claims to support the input event but fails to trigger it when\n  // deleting text, so we ignore its input events.\n  isInputEventSupported = isEventSupported('input') && (!document.documentMode || document.documentMode > 9);\n}\n/**\n * (For IE <=9) Starts tracking propertychange events on the passed-in element\n * and override the value property so that we can distinguish user events from\n * value changes in JS.\n */\n\n\nfunction startWatchingForValueChange(target, targetInst) {\n  activeElement = target;\n  activeElementInst = targetInst;\n  activeElement.attachEvent('onpropertychange', handlePropertyChange);\n}\n/**\n * (For IE <=9) Removes the event listeners from the currently-tracked element,\n * if any exists.\n */\n\n\nfunction stopWatchingForValueChange() {\n  if (!activeElement) {\n    return;\n  }\n\n  activeElement.detachEvent('onpropertychange', handlePropertyChange);\n  activeElement = null;\n  activeElementInst = null;\n}\n/**\n * (For IE <=9) Handles a propertychange event, sending a `change` event if\n * the value of the active element has changed.\n */\n\n\nfunction handlePropertyChange(nativeEvent) {\n  if (nativeEvent.propertyName !== 'value') {\n    return;\n  }\n\n  if (getInstIfValueChanged(activeElementInst)) {\n    manualDispatchChangeEvent(nativeEvent);\n  }\n}\n\nfunction handleEventsForInputEventPolyfill(domEventName, target, targetInst) {\n  if (domEventName === 'focusin') {\n    // In IE9, propertychange fires for most input events but is buggy and\n    // doesn't fire when text is deleted, but conveniently, selectionchange\n    // appears to fire in all of the remaining cases so we catch those and\n    // forward the event if the value has changed\n    // In either case, we don't want to call the event handler if the value\n    // is changed from JS so we redefine a setter for `.value` that updates\n    // our activeElementValue variable, allowing us to ignore those changes\n    //\n    // stopWatching() should be a noop here but we call it just in case we\n    // missed a blur event somehow.\n    stopWatchingForValueChange();\n    startWatchingForValueChange(target, targetInst);\n  } else if (domEventName === 'focusout') {\n    stopWatchingForValueChange();\n  }\n} // For IE8 and IE9.\n\n\nfunction getTargetInstForInputEventPolyfill(domEventName, targetInst) {\n  if (domEventName === 'selectionchange' || domEventName === 'keyup' || domEventName === 'keydown') {\n    // On the selectionchange event, the target is just document which isn't\n    // helpful for us so just check activeElement instead.\n    //\n    // 99% of the time, keydown and keyup aren't necessary. IE8 fails to fire\n    // propertychange on the first input event after setting `value` from a\n    // script and fires only keydown, keypress, keyup. Catching keyup usually\n    // gets it and catching keydown lets us fire an event for the first\n    // keystroke if user does a key repeat (it'll be a little delayed: right\n    // before the second keystroke). Other input methods (e.g., paste) seem to\n    // fire selectionchange normally.\n    return getInstIfValueChanged(activeElementInst);\n  }\n}\n/**\n * SECTION: handle `click` event\n */\n\n\nfunction shouldUseClickEvent(elem) {\n  // Use the `click` event to detect changes to checkbox and radio inputs.\n  // This approach works across all browsers, whereas `change` does not fire\n  // until `blur` in IE8.\n  var nodeName = elem.nodeName;\n  return nodeName && nodeName.toLowerCase() === 'input' && (elem.type === 'checkbox' || elem.type === 'radio');\n}\n\nfunction getTargetInstForClickEvent(domEventName, targetInst) {\n  if (domEventName === 'click') {\n    return getInstIfValueChanged(targetInst);\n  }\n}\n\nfunction getTargetInstForInputOrChangeEvent(domEventName, targetInst) {\n  if (domEventName === 'input' || domEventName === 'change') {\n    return getInstIfValueChanged(targetInst);\n  }\n}\n\nfunction handleControlledInputBlur(node) {\n  var state = node._wrapperState;\n\n  if (!state || !state.controlled || node.type !== 'number') {\n    return;\n  }\n\n  {\n    // If controlled, assign the value attribute to the current value on blur\n    setDefaultValue(node, 'number', node.value);\n  }\n}\n/**\n * This plugin creates an `onChange` event that normalizes change events\n * across form elements. This event fires at a time when it's possible to\n * change the element's value without seeing a flicker.\n *\n * Supported elements are:\n * - input (see `isTextInputElement`)\n * - textarea\n * - select\n */\n\n\nfunction extractEvents$1(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget, eventSystemFlags, targetContainer) {\n  var targetNode = targetInst ? getNodeFromInstance(targetInst) : window;\n  var getTargetInstFunc, handleEventFunc;\n\n  if (shouldUseChangeEvent(targetNode)) {\n    getTargetInstFunc = getTargetInstForChangeEvent;\n  } else if (isTextInputElement(targetNode)) {\n    if (isInputEventSupported) {\n      getTargetInstFunc = getTargetInstForInputOrChangeEvent;\n    } else {\n      getTargetInstFunc = getTargetInstForInputEventPolyfill;\n      handleEventFunc = handleEventsForInputEventPolyfill;\n    }\n  } else if (shouldUseClickEvent(targetNode)) {\n    getTargetInstFunc = getTargetInstForClickEvent;\n  }\n\n  if (getTargetInstFunc) {\n    var inst = getTargetInstFunc(domEventName, targetInst);\n\n    if (inst) {\n      createAndAccumulateChangeEvent(dispatchQueue, inst, nativeEvent, nativeEventTarget);\n      return;\n    }\n  }\n\n  if (handleEventFunc) {\n    handleEventFunc(domEventName, targetNode, targetInst);\n  } // When blurring, set the value attribute for number inputs\n\n\n  if (domEventName === 'focusout') {\n    handleControlledInputBlur(targetNode);\n  }\n}\n\nfunction registerEvents$2() {\n  registerDirectEvent('onMouseEnter', ['mouseout', 'mouseover']);\n  registerDirectEvent('onMouseLeave', ['mouseout', 'mouseover']);\n  registerDirectEvent('onPointerEnter', ['pointerout', 'pointerover']);\n  registerDirectEvent('onPointerLeave', ['pointerout', 'pointerover']);\n}\n/**\n * For almost every interaction we care about, there will be both a top-level\n * `mouseover` and `mouseout` event that occurs. Only use `mouseout` so that\n * we do not extract duplicate events. However, moving the mouse into the\n * browser from outside will not fire a `mouseout` event. In this case, we use\n * the `mouseover` top-level event.\n */\n\n\nfunction extractEvents$2(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget, eventSystemFlags, targetContainer) {\n  var isOverEvent = domEventName === 'mouseover' || domEventName === 'pointerover';\n  var isOutEvent = domEventName === 'mouseout' || domEventName === 'pointerout';\n\n  if (isOverEvent && !isReplayingEvent(nativeEvent)) {\n    // If this is an over event with a target, we might have already dispatched\n    // the event in the out event of the other target. If this is replayed,\n    // then it's because we couldn't dispatch against this target previously\n    // so we have to do it now instead.\n    var related = nativeEvent.relatedTarget || nativeEvent.fromElement;\n\n    if (related) {\n      // If the related node is managed by React, we can assume that we have\n      // already dispatched the corresponding events during its mouseout.\n      if (getClosestInstanceFromNode(related) || isContainerMarkedAsRoot(related)) {\n        return;\n      }\n    }\n  }\n\n  if (!isOutEvent && !isOverEvent) {\n    // Must not be a mouse or pointer in or out - ignoring.\n    return;\n  }\n\n  var win; // TODO: why is this nullable in the types but we read from it?\n\n  if (nativeEventTarget.window === nativeEventTarget) {\n    // `nativeEventTarget` is probably a window object.\n    win = nativeEventTarget;\n  } else {\n    // TODO: Figure out why `ownerDocument` is sometimes undefined in IE8.\n    var doc = nativeEventTarget.ownerDocument;\n\n    if (doc) {\n      win = doc.defaultView || doc.parentWindow;\n    } else {\n      win = window;\n    }\n  }\n\n  var from;\n  var to;\n\n  if (isOutEvent) {\n    var _related = nativeEvent.relatedTarget || nativeEvent.toElement;\n\n    from = targetInst;\n    to = _related ? getClosestInstanceFromNode(_related) : null;\n\n    if (to !== null) {\n      var nearestMounted = getNearestMountedFiber(to);\n\n      if (to !== nearestMounted || to.tag !== HostComponent && to.tag !== HostText) {\n        to = null;\n      }\n    }\n  } else {\n    // Moving to a node from outside the window.\n    from = null;\n    to = targetInst;\n  }\n\n  if (from === to) {\n    // Nothing pertains to our managed components.\n    return;\n  }\n\n  var SyntheticEventCtor = SyntheticMouseEvent;\n  var leaveEventType = 'onMouseLeave';\n  var enterEventType = 'onMouseEnter';\n  var eventTypePrefix = 'mouse';\n\n  if (domEventName === 'pointerout' || domEventName === 'pointerover') {\n    SyntheticEventCtor = SyntheticPointerEvent;\n    leaveEventType = 'onPointerLeave';\n    enterEventType = 'onPointerEnter';\n    eventTypePrefix = 'pointer';\n  }\n\n  var fromNode = from == null ? win : getNodeFromInstance(from);\n  var toNode = to == null ? win : getNodeFromInstance(to);\n  var leave = new SyntheticEventCtor(leaveEventType, eventTypePrefix + 'leave', from, nativeEvent, nativeEventTarget);\n  leave.target = fromNode;\n  leave.relatedTarget = toNode;\n  var enter = null; // We should only process this nativeEvent if we are processing\n  // the first ancestor. Next time, we will ignore the event.\n\n  var nativeTargetInst = getClosestInstanceFromNode(nativeEventTarget);\n\n  if (nativeTargetInst === targetInst) {\n    var enterEvent = new SyntheticEventCtor(enterEventType, eventTypePrefix + 'enter', to, nativeEvent, nativeEventTarget);\n    enterEvent.target = toNode;\n    enterEvent.relatedTarget = fromNode;\n    enter = enterEvent;\n  }\n\n  accumulateEnterLeaveTwoPhaseListeners(dispatchQueue, leave, enter, from, to);\n}\n\n/**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\nfunction is(x, y) {\n  return x === y && (x !== 0 || 1 / x === 1 / y) || x !== x && y !== y // eslint-disable-line no-self-compare\n  ;\n}\n\nvar objectIs = typeof Object.is === 'function' ? Object.is : is;\n\n/**\n * Performs equality by iterating through keys on an object and returning false\n * when any key has values which are not strictly equal between the arguments.\n * Returns true when the values of all keys are strictly equal.\n */\n\nfunction shallowEqual(objA, objB) {\n  if (objectIs(objA, objB)) {\n    return true;\n  }\n\n  if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n    return false;\n  }\n\n  var keysA = Object.keys(objA);\n  var keysB = Object.keys(objB);\n\n  if (keysA.length !== keysB.length) {\n    return false;\n  } // Test for A's keys different from B.\n\n\n  for (var i = 0; i < keysA.length; i++) {\n    var currentKey = keysA[i];\n\n    if (!hasOwnProperty.call(objB, currentKey) || !objectIs(objA[currentKey], objB[currentKey])) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\n/**\n * Given any node return the first leaf node without children.\n *\n * @param {DOMElement|DOMTextNode} node\n * @return {DOMElement|DOMTextNode}\n */\n\nfunction getLeafNode(node) {\n  while (node && node.firstChild) {\n    node = node.firstChild;\n  }\n\n  return node;\n}\n/**\n * Get the next sibling within a container. This will walk up the\n * DOM if a node's siblings have been exhausted.\n *\n * @param {DOMElement|DOMTextNode} node\n * @return {?DOMElement|DOMTextNode}\n */\n\n\nfunction getSiblingNode(node) {\n  while (node) {\n    if (node.nextSibling) {\n      return node.nextSibling;\n    }\n\n    node = node.parentNode;\n  }\n}\n/**\n * Get object describing the nodes which contain characters at offset.\n *\n * @param {DOMElement|DOMTextNode} root\n * @param {number} offset\n * @return {?object}\n */\n\n\nfunction getNodeForCharacterOffset(root, offset) {\n  var node = getLeafNode(root);\n  var nodeStart = 0;\n  var nodeEnd = 0;\n\n  while (node) {\n    if (node.nodeType === TEXT_NODE) {\n      nodeEnd = nodeStart + node.textContent.length;\n\n      if (nodeStart <= offset && nodeEnd >= offset) {\n        return {\n          node: node,\n          offset: offset - nodeStart\n        };\n      }\n\n      nodeStart = nodeEnd;\n    }\n\n    node = getLeafNode(getSiblingNode(node));\n  }\n}\n\n/**\n * @param {DOMElement} outerNode\n * @return {?object}\n */\n\nfunction getOffsets(outerNode) {\n  var ownerDocument = outerNode.ownerDocument;\n  var win = ownerDocument && ownerDocument.defaultView || window;\n  var selection = win.getSelection && win.getSelection();\n\n  if (!selection || selection.rangeCount === 0) {\n    return null;\n  }\n\n  var anchorNode = selection.anchorNode,\n      anchorOffset = selection.anchorOffset,\n      focusNode = selection.focusNode,\n      focusOffset = selection.focusOffset; // In Firefox, anchorNode and focusNode can be \"anonymous divs\", e.g. the\n  // up/down buttons on an <input type=\"number\">. Anonymous divs do not seem to\n  // expose properties, triggering a \"Permission denied error\" if any of its\n  // properties are accessed. The only seemingly possible way to avoid erroring\n  // is to access a property that typically works for non-anonymous divs and\n  // catch any error that may otherwise arise. See\n  // https://bugzilla.mozilla.org/show_bug.cgi?id=208427\n\n  try {\n    /* eslint-disable no-unused-expressions */\n    anchorNode.nodeType;\n    focusNode.nodeType;\n    /* eslint-enable no-unused-expressions */\n  } catch (e) {\n    return null;\n  }\n\n  return getModernOffsetsFromPoints(outerNode, anchorNode, anchorOffset, focusNode, focusOffset);\n}\n/**\n * Returns {start, end} where `start` is the character/codepoint index of\n * (anchorNode, anchorOffset) within the textContent of `outerNode`, and\n * `end` is the index of (focusNode, focusOffset).\n *\n * Returns null if you pass in garbage input but we should probably just crash.\n *\n * Exported only for testing.\n */\n\nfunction getModernOffsetsFromPoints(outerNode, anchorNode, anchorOffset, focusNode, focusOffset) {\n  var length = 0;\n  var start = -1;\n  var end = -1;\n  var indexWithinAnchor = 0;\n  var indexWithinFocus = 0;\n  var node = outerNode;\n  var parentNode = null;\n\n  outer: while (true) {\n    var next = null;\n\n    while (true) {\n      if (node === anchorNode && (anchorOffset === 0 || node.nodeType === TEXT_NODE)) {\n        start = length + anchorOffset;\n      }\n\n      if (node === focusNode && (focusOffset === 0 || node.nodeType === TEXT_NODE)) {\n        end = length + focusOffset;\n      }\n\n      if (node.nodeType === TEXT_NODE) {\n        length += node.nodeValue.length;\n      }\n\n      if ((next = node.firstChild) === null) {\n        break;\n      } // Moving from `node` to its first child `next`.\n\n\n      parentNode = node;\n      node = next;\n    }\n\n    while (true) {\n      if (node === outerNode) {\n        // If `outerNode` has children, this is always the second time visiting\n        // it. If it has no children, this is still the first loop, and the only\n        // valid selection is anchorNode and focusNode both equal to this node\n        // and both offsets 0, in which case we will have handled above.\n        break outer;\n      }\n\n      if (parentNode === anchorNode && ++indexWithinAnchor === anchorOffset) {\n        start = length;\n      }\n\n      if (parentNode === focusNode && ++indexWithinFocus === focusOffset) {\n        end = length;\n      }\n\n      if ((next = node.nextSibling) !== null) {\n        break;\n      }\n\n      node = parentNode;\n      parentNode = node.parentNode;\n    } // Moving from `node` to its next sibling `next`.\n\n\n    node = next;\n  }\n\n  if (start === -1 || end === -1) {\n    // This should never happen. (Would happen if the anchor/focus nodes aren't\n    // actually inside the passed-in node.)\n    return null;\n  }\n\n  return {\n    start: start,\n    end: end\n  };\n}\n/**\n * In modern non-IE browsers, we can support both forward and backward\n * selections.\n *\n * Note: IE10+ supports the Selection object, but it does not support\n * the `extend` method, which means that even in modern IE, it's not possible\n * to programmatically create a backward selection. Thus, for all IE\n * versions, we use the old IE API to create our selections.\n *\n * @param {DOMElement|DOMTextNode} node\n * @param {object} offsets\n */\n\nfunction setOffsets(node, offsets) {\n  var doc = node.ownerDocument || document;\n  var win = doc && doc.defaultView || window; // Edge fails with \"Object expected\" in some scenarios.\n  // (For instance: TinyMCE editor used in a list component that supports pasting to add more,\n  // fails when pasting 100+ items)\n\n  if (!win.getSelection) {\n    return;\n  }\n\n  var selection = win.getSelection();\n  var length = node.textContent.length;\n  var start = Math.min(offsets.start, length);\n  var end = offsets.end === undefined ? start : Math.min(offsets.end, length); // IE 11 uses modern selection, but doesn't support the extend method.\n  // Flip backward selections, so we can set with a single range.\n\n  if (!selection.extend && start > end) {\n    var temp = end;\n    end = start;\n    start = temp;\n  }\n\n  var startMarker = getNodeForCharacterOffset(node, start);\n  var endMarker = getNodeForCharacterOffset(node, end);\n\n  if (startMarker && endMarker) {\n    if (selection.rangeCount === 1 && selection.anchorNode === startMarker.node && selection.anchorOffset === startMarker.offset && selection.focusNode === endMarker.node && selection.focusOffset === endMarker.offset) {\n      return;\n    }\n\n    var range = doc.createRange();\n    range.setStart(startMarker.node, startMarker.offset);\n    selection.removeAllRanges();\n\n    if (start > end) {\n      selection.addRange(range);\n      selection.extend(endMarker.node, endMarker.offset);\n    } else {\n      range.setEnd(endMarker.node, endMarker.offset);\n      selection.addRange(range);\n    }\n  }\n}\n\nfunction isTextNode(node) {\n  return node && node.nodeType === TEXT_NODE;\n}\n\nfunction containsNode(outerNode, innerNode) {\n  if (!outerNode || !innerNode) {\n    return false;\n  } else if (outerNode === innerNode) {\n    return true;\n  } else if (isTextNode(outerNode)) {\n    return false;\n  } else if (isTextNode(innerNode)) {\n    return containsNode(outerNode, innerNode.parentNode);\n  } else if ('contains' in outerNode) {\n    return outerNode.contains(innerNode);\n  } else if (outerNode.compareDocumentPosition) {\n    return !!(outerNode.compareDocumentPosition(innerNode) & 16);\n  } else {\n    return false;\n  }\n}\n\nfunction isInDocument(node) {\n  return node && node.ownerDocument && containsNode(node.ownerDocument.documentElement, node);\n}\n\nfunction isSameOriginFrame(iframe) {\n  try {\n    // Accessing the contentDocument of a HTMLIframeElement can cause the browser\n    // to throw, e.g. if it has a cross-origin src attribute.\n    // Safari will show an error in the console when the access results in \"Blocked a frame with origin\". e.g:\n    // iframe.contentDocument.defaultView;\n    // A safety way is to access one of the cross origin properties: Window or Location\n    // Which might result in \"SecurityError\" DOM Exception and it is compatible to Safari.\n    // https://html.spec.whatwg.org/multipage/browsers.html#integration-with-idl\n    return typeof iframe.contentWindow.location.href === 'string';\n  } catch (err) {\n    return false;\n  }\n}\n\nfunction getActiveElementDeep() {\n  var win = window;\n  var element = getActiveElement();\n\n  while (element instanceof win.HTMLIFrameElement) {\n    if (isSameOriginFrame(element)) {\n      win = element.contentWindow;\n    } else {\n      return element;\n    }\n\n    element = getActiveElement(win.document);\n  }\n\n  return element;\n}\n/**\n * @ReactInputSelection: React input selection module. Based on Selection.js,\n * but modified to be suitable for react and has a couple of bug fixes (doesn't\n * assume buttons have range selections allowed).\n * Input selection module for React.\n */\n\n/**\n * @hasSelectionCapabilities: we get the element types that support selection\n * from https://html.spec.whatwg.org/#do-not-apply, looking at `selectionStart`\n * and `selectionEnd` rows.\n */\n\n\nfunction hasSelectionCapabilities(elem) {\n  var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();\n  return nodeName && (nodeName === 'input' && (elem.type === 'text' || elem.type === 'search' || elem.type === 'tel' || elem.type === 'url' || elem.type === 'password') || nodeName === 'textarea' || elem.contentEditable === 'true');\n}\nfunction getSelectionInformation() {\n  var focusedElem = getActiveElementDeep();\n  return {\n    focusedElem: focusedElem,\n    selectionRange: hasSelectionCapabilities(focusedElem) ? getSelection(focusedElem) : null\n  };\n}\n/**\n * @restoreSelection: If any selection information was potentially lost,\n * restore it. This is useful when performing operations that could remove dom\n * nodes and place them back in, resulting in focus being lost.\n */\n\nfunction restoreSelection(priorSelectionInformation) {\n  var curFocusedElem = getActiveElementDeep();\n  var priorFocusedElem = priorSelectionInformation.focusedElem;\n  var priorSelectionRange = priorSelectionInformation.selectionRange;\n\n  if (curFocusedElem !== priorFocusedElem && isInDocument(priorFocusedElem)) {\n    if (priorSelectionRange !== null && hasSelectionCapabilities(priorFocusedElem)) {\n      setSelection(priorFocusedElem, priorSelectionRange);\n    } // Focusing a node can change the scroll position, which is undesirable\n\n\n    var ancestors = [];\n    var ancestor = priorFocusedElem;\n\n    while (ancestor = ancestor.parentNode) {\n      if (ancestor.nodeType === ELEMENT_NODE) {\n        ancestors.push({\n          element: ancestor,\n          left: ancestor.scrollLeft,\n          top: ancestor.scrollTop\n        });\n      }\n    }\n\n    if (typeof priorFocusedElem.focus === 'function') {\n      priorFocusedElem.focus();\n    }\n\n    for (var i = 0; i < ancestors.length; i++) {\n      var info = ancestors[i];\n      info.element.scrollLeft = info.left;\n      info.element.scrollTop = info.top;\n    }\n  }\n}\n/**\n * @getSelection: Gets the selection bounds of a focused textarea, input or\n * contentEditable node.\n * -@input: Look up selection bounds of this input\n * -@return {start: selectionStart, end: selectionEnd}\n */\n\nfunction getSelection(input) {\n  var selection;\n\n  if ('selectionStart' in input) {\n    // Modern browser with input or textarea.\n    selection = {\n      start: input.selectionStart,\n      end: input.selectionEnd\n    };\n  } else {\n    // Content editable or old IE textarea.\n    selection = getOffsets(input);\n  }\n\n  return selection || {\n    start: 0,\n    end: 0\n  };\n}\n/**\n * @setSelection: Sets the selection bounds of a textarea or input and focuses\n * the input.\n * -@input     Set selection bounds of this input or textarea\n * -@offsets   Object of same form that is returned from get*\n */\n\nfunction setSelection(input, offsets) {\n  var start = offsets.start;\n  var end = offsets.end;\n\n  if (end === undefined) {\n    end = start;\n  }\n\n  if ('selectionStart' in input) {\n    input.selectionStart = start;\n    input.selectionEnd = Math.min(end, input.value.length);\n  } else {\n    setOffsets(input, offsets);\n  }\n}\n\nvar skipSelectionChangeEvent = canUseDOM && 'documentMode' in document && document.documentMode <= 11;\n\nfunction registerEvents$3() {\n  registerTwoPhaseEvent('onSelect', ['focusout', 'contextmenu', 'dragend', 'focusin', 'keydown', 'keyup', 'mousedown', 'mouseup', 'selectionchange']);\n}\n\nvar activeElement$1 = null;\nvar activeElementInst$1 = null;\nvar lastSelection = null;\nvar mouseDown = false;\n/**\n * Get an object which is a unique representation of the current selection.\n *\n * The return value will not be consistent across nodes or browsers, but\n * two identical selections on the same node will return identical objects.\n */\n\nfunction getSelection$1(node) {\n  if ('selectionStart' in node && hasSelectionCapabilities(node)) {\n    return {\n      start: node.selectionStart,\n      end: node.selectionEnd\n    };\n  } else {\n    var win = node.ownerDocument && node.ownerDocument.defaultView || window;\n    var selection = win.getSelection();\n    return {\n      anchorNode: selection.anchorNode,\n      anchorOffset: selection.anchorOffset,\n      focusNode: selection.focusNode,\n      focusOffset: selection.focusOffset\n    };\n  }\n}\n/**\n * Get document associated with the event target.\n */\n\n\nfunction getEventTargetDocument(eventTarget) {\n  return eventTarget.window === eventTarget ? eventTarget.document : eventTarget.nodeType === DOCUMENT_NODE ? eventTarget : eventTarget.ownerDocument;\n}\n/**\n * Poll selection to see whether it's changed.\n *\n * @param {object} nativeEvent\n * @param {object} nativeEventTarget\n * @return {?SyntheticEvent}\n */\n\n\nfunction constructSelectEvent(dispatchQueue, nativeEvent, nativeEventTarget) {\n  // Ensure we have the right element, and that the user is not dragging a\n  // selection (this matches native `select` event behavior). In HTML5, select\n  // fires only on input and textarea thus if there's no focused element we\n  // won't dispatch.\n  var doc = getEventTargetDocument(nativeEventTarget);\n\n  if (mouseDown || activeElement$1 == null || activeElement$1 !== getActiveElement(doc)) {\n    return;\n  } // Only fire when selection has actually changed.\n\n\n  var currentSelection = getSelection$1(activeElement$1);\n\n  if (!lastSelection || !shallowEqual(lastSelection, currentSelection)) {\n    lastSelection = currentSelection;\n    var listeners = accumulateTwoPhaseListeners(activeElementInst$1, 'onSelect');\n\n    if (listeners.length > 0) {\n      var event = new SyntheticEvent('onSelect', 'select', null, nativeEvent, nativeEventTarget);\n      dispatchQueue.push({\n        event: event,\n        listeners: listeners\n      });\n      event.target = activeElement$1;\n    }\n  }\n}\n/**\n * This plugin creates an `onSelect` event that normalizes select events\n * across form elements.\n *\n * Supported elements are:\n * - input (see `isTextInputElement`)\n * - textarea\n * - contentEditable\n *\n * This differs from native browser implementations in the following ways:\n * - Fires on contentEditable fields as well as inputs.\n * - Fires for collapsed selection.\n * - Fires after user input.\n */\n\n\nfunction extractEvents$3(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget, eventSystemFlags, targetContainer) {\n  var targetNode = targetInst ? getNodeFromInstance(targetInst) : window;\n\n  switch (domEventName) {\n    // Track the input node that has focus.\n    case 'focusin':\n      if (isTextInputElement(targetNode) || targetNode.contentEditable === 'true') {\n        activeElement$1 = targetNode;\n        activeElementInst$1 = targetInst;\n        lastSelection = null;\n      }\n\n      break;\n\n    case 'focusout':\n      activeElement$1 = null;\n      activeElementInst$1 = null;\n      lastSelection = null;\n      break;\n    // Don't fire the event while the user is dragging. This matches the\n    // semantics of the native select event.\n\n    case 'mousedown':\n      mouseDown = true;\n      break;\n\n    case 'contextmenu':\n    case 'mouseup':\n    case 'dragend':\n      mouseDown = false;\n      constructSelectEvent(dispatchQueue, nativeEvent, nativeEventTarget);\n      break;\n    // Chrome and IE fire non-standard event when selection is changed (and\n    // sometimes when it hasn't). IE's event fires out of order with respect\n    // to key and input events on deletion, so we discard it.\n    //\n    // Firefox doesn't support selectionchange, so check selection status\n    // after each key entry. The selection changes after keydown and before\n    // keyup, but we check on keydown as well in the case of holding down a\n    // key, when multiple keydown events are fired but only one keyup is.\n    // This is also our approach for IE handling, for the reason above.\n\n    case 'selectionchange':\n      if (skipSelectionChangeEvent) {\n        break;\n      }\n\n    // falls through\n\n    case 'keydown':\n    case 'keyup':\n      constructSelectEvent(dispatchQueue, nativeEvent, nativeEventTarget);\n  }\n}\n\n/**\n * Generate a mapping of standard vendor prefixes using the defined style property and event name.\n *\n * @param {string} styleProp\n * @param {string} eventName\n * @returns {object}\n */\n\nfunction makePrefixMap(styleProp, eventName) {\n  var prefixes = {};\n  prefixes[styleProp.toLowerCase()] = eventName.toLowerCase();\n  prefixes['Webkit' + styleProp] = 'webkit' + eventName;\n  prefixes['Moz' + styleProp] = 'moz' + eventName;\n  return prefixes;\n}\n/**\n * A list of event names to a configurable list of vendor prefixes.\n */\n\n\nvar vendorPrefixes = {\n  animationend: makePrefixMap('Animation', 'AnimationEnd'),\n  animationiteration: makePrefixMap('Animation', 'AnimationIteration'),\n  animationstart: makePrefixMap('Animation', 'AnimationStart'),\n  transitionend: makePrefixMap('Transition', 'TransitionEnd')\n};\n/**\n * Event names that have already been detected and prefixed (if applicable).\n */\n\nvar prefixedEventNames = {};\n/**\n * Element to check for prefixes on.\n */\n\nvar style = {};\n/**\n * Bootstrap if a DOM exists.\n */\n\nif (canUseDOM) {\n  style = document.createElement('div').style; // On some platforms, in particular some releases of Android 4.x,\n  // the un-prefixed \"animation\" and \"transition\" properties are defined on the\n  // style object but the events that fire will still be prefixed, so we need\n  // to check if the un-prefixed events are usable, and if not remove them from the map.\n\n  if (!('AnimationEvent' in window)) {\n    delete vendorPrefixes.animationend.animation;\n    delete vendorPrefixes.animationiteration.animation;\n    delete vendorPrefixes.animationstart.animation;\n  } // Same as above\n\n\n  if (!('TransitionEvent' in window)) {\n    delete vendorPrefixes.transitionend.transition;\n  }\n}\n/**\n * Attempts to determine the correct vendor prefixed event name.\n *\n * @param {string} eventName\n * @returns {string}\n */\n\n\nfunction getVendorPrefixedEventName(eventName) {\n  if (prefixedEventNames[eventName]) {\n    return prefixedEventNames[eventName];\n  } else if (!vendorPrefixes[eventName]) {\n    return eventName;\n  }\n\n  var prefixMap = vendorPrefixes[eventName];\n\n  for (var styleProp in prefixMap) {\n    if (prefixMap.hasOwnProperty(styleProp) && styleProp in style) {\n      return prefixedEventNames[eventName] = prefixMap[styleProp];\n    }\n  }\n\n  return eventName;\n}\n\nvar ANIMATION_END = getVendorPrefixedEventName('animationend');\nvar ANIMATION_ITERATION = getVendorPrefixedEventName('animationiteration');\nvar ANIMATION_START = getVendorPrefixedEventName('animationstart');\nvar TRANSITION_END = getVendorPrefixedEventName('transitionend');\n\nvar topLevelEventsToReactNames = new Map(); // NOTE: Capitalization is important in this list!\n//\n// E.g. it needs \"pointerDown\", not \"pointerdown\".\n// This is because we derive both React name (\"onPointerDown\")\n// and DOM name (\"pointerdown\") from the same list.\n//\n// Exceptions that don't match this convention are listed separately.\n//\n// prettier-ignore\n\nvar simpleEventPluginEvents = ['abort', 'auxClick', 'cancel', 'canPlay', 'canPlayThrough', 'click', 'close', 'contextMenu', 'copy', 'cut', 'drag', 'dragEnd', 'dragEnter', 'dragExit', 'dragLeave', 'dragOver', 'dragStart', 'drop', 'durationChange', 'emptied', 'encrypted', 'ended', 'error', 'gotPointerCapture', 'input', 'invalid', 'keyDown', 'keyPress', 'keyUp', 'load', 'loadedData', 'loadedMetadata', 'loadStart', 'lostPointerCapture', 'mouseDown', 'mouseMove', 'mouseOut', 'mouseOver', 'mouseUp', 'paste', 'pause', 'play', 'playing', 'pointerCancel', 'pointerDown', 'pointerMove', 'pointerOut', 'pointerOver', 'pointerUp', 'progress', 'rateChange', 'reset', 'resize', 'seeked', 'seeking', 'stalled', 'submit', 'suspend', 'timeUpdate', 'touchCancel', 'touchEnd', 'touchStart', 'volumeChange', 'scroll', 'toggle', 'touchMove', 'waiting', 'wheel'];\n\nfunction registerSimpleEvent(domEventName, reactName) {\n  topLevelEventsToReactNames.set(domEventName, reactName);\n  registerTwoPhaseEvent(reactName, [domEventName]);\n}\n\nfunction registerSimpleEvents() {\n  for (var i = 0; i < simpleEventPluginEvents.length; i++) {\n    var eventName = simpleEventPluginEvents[i];\n    var domEventName = eventName.toLowerCase();\n    var capitalizedEvent = eventName[0].toUpperCase() + eventName.slice(1);\n    registerSimpleEvent(domEventName, 'on' + capitalizedEvent);\n  } // Special cases where event names don't match.\n\n\n  registerSimpleEvent(ANIMATION_END, 'onAnimationEnd');\n  registerSimpleEvent(ANIMATION_ITERATION, 'onAnimationIteration');\n  registerSimpleEvent(ANIMATION_START, 'onAnimationStart');\n  registerSimpleEvent('dblclick', 'onDoubleClick');\n  registerSimpleEvent('focusin', 'onFocus');\n  registerSimpleEvent('focusout', 'onBlur');\n  registerSimpleEvent(TRANSITION_END, 'onTransitionEnd');\n}\n\nfunction extractEvents$4(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget, eventSystemFlags, targetContainer) {\n  var reactName = topLevelEventsToReactNames.get(domEventName);\n\n  if (reactName === undefined) {\n    return;\n  }\n\n  var SyntheticEventCtor = SyntheticEvent;\n  var reactEventType = domEventName;\n\n  switch (domEventName) {\n    case 'keypress':\n      // Firefox creates a keypress event for function keys too. This removes\n      // the unwanted keypress events. Enter is however both printable and\n      // non-printable. One would expect Tab to be as well (but it isn't).\n      if (getEventCharCode(nativeEvent) === 0) {\n        return;\n      }\n\n    /* falls through */\n\n    case 'keydown':\n    case 'keyup':\n      SyntheticEventCtor = SyntheticKeyboardEvent;\n      break;\n\n    case 'focusin':\n      reactEventType = 'focus';\n      SyntheticEventCtor = SyntheticFocusEvent;\n      break;\n\n    case 'focusout':\n      reactEventType = 'blur';\n      SyntheticEventCtor = SyntheticFocusEvent;\n      break;\n\n    case 'beforeblur':\n    case 'afterblur':\n      SyntheticEventCtor = SyntheticFocusEvent;\n      break;\n\n    case 'click':\n      // Firefox creates a click event on right mouse clicks. This removes the\n      // unwanted click events.\n      if (nativeEvent.button === 2) {\n        return;\n      }\n\n    /* falls through */\n\n    case 'auxclick':\n    case 'dblclick':\n    case 'mousedown':\n    case 'mousemove':\n    case 'mouseup': // TODO: Disabled elements should not respond to mouse events\n\n    /* falls through */\n\n    case 'mouseout':\n    case 'mouseover':\n    case 'contextmenu':\n      SyntheticEventCtor = SyntheticMouseEvent;\n      break;\n\n    case 'drag':\n    case 'dragend':\n    case 'dragenter':\n    case 'dragexit':\n    case 'dragleave':\n    case 'dragover':\n    case 'dragstart':\n    case 'drop':\n      SyntheticEventCtor = SyntheticDragEvent;\n      break;\n\n    case 'touchcancel':\n    case 'touchend':\n    case 'touchmove':\n    case 'touchstart':\n      SyntheticEventCtor = SyntheticTouchEvent;\n      break;\n\n    case ANIMATION_END:\n    case ANIMATION_ITERATION:\n    case ANIMATION_START:\n      SyntheticEventCtor = SyntheticAnimationEvent;\n      break;\n\n    case TRANSITION_END:\n      SyntheticEventCtor = SyntheticTransitionEvent;\n      break;\n\n    case 'scroll':\n      SyntheticEventCtor = SyntheticUIEvent;\n      break;\n\n    case 'wheel':\n      SyntheticEventCtor = SyntheticWheelEvent;\n      break;\n\n    case 'copy':\n    case 'cut':\n    case 'paste':\n      SyntheticEventCtor = SyntheticClipboardEvent;\n      break;\n\n    case 'gotpointercapture':\n    case 'lostpointercapture':\n    case 'pointercancel':\n    case 'pointerdown':\n    case 'pointermove':\n    case 'pointerout':\n    case 'pointerover':\n    case 'pointerup':\n      SyntheticEventCtor = SyntheticPointerEvent;\n      break;\n  }\n\n  var inCapturePhase = (eventSystemFlags & IS_CAPTURE_PHASE) !== 0;\n\n  {\n    // Some events don't bubble in the browser.\n    // In the past, React has always bubbled them, but this can be surprising.\n    // We're going to try aligning closer to the browser behavior by not bubbling\n    // them in React either. We'll start by not bubbling onScroll, and then expand.\n    var accumulateTargetOnly = !inCapturePhase && // TODO: ideally, we'd eventually add all events from\n    // nonDelegatedEvents list in DOMPluginEventSystem.\n    // Then we can remove this special list.\n    // This is a breaking change that can wait until React 18.\n    domEventName === 'scroll';\n\n    var _listeners = accumulateSinglePhaseListeners(targetInst, reactName, nativeEvent.type, inCapturePhase, accumulateTargetOnly);\n\n    if (_listeners.length > 0) {\n      // Intentionally create event lazily.\n      var _event = new SyntheticEventCtor(reactName, reactEventType, null, nativeEvent, nativeEventTarget);\n\n      dispatchQueue.push({\n        event: _event,\n        listeners: _listeners\n      });\n    }\n  }\n}\n\n// TODO: remove top-level side effect.\nregisterSimpleEvents();\nregisterEvents$2();\nregisterEvents$1();\nregisterEvents$3();\nregisterEvents();\n\nfunction extractEvents$5(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget, eventSystemFlags, targetContainer) {\n  // TODO: we should remove the concept of a \"SimpleEventPlugin\".\n  // This is the basic functionality of the event system. All\n  // the other plugins are essentially polyfills. So the plugin\n  // should probably be inlined somewhere and have its logic\n  // be core the to event system. This would potentially allow\n  // us to ship builds of React without the polyfilled plugins below.\n  extractEvents$4(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget, eventSystemFlags);\n  var shouldProcessPolyfillPlugins = (eventSystemFlags & SHOULD_NOT_PROCESS_POLYFILL_EVENT_PLUGINS) === 0; // We don't process these events unless we are in the\n  // event's native \"bubble\" phase, which means that we're\n  // not in the capture phase. That's because we emulate\n  // the capture phase here still. This is a trade-off,\n  // because in an ideal world we would not emulate and use\n  // the phases properly, like we do with the SimpleEvent\n  // plugin. However, the plugins below either expect\n  // emulation (EnterLeave) or use state localized to that\n  // plugin (BeforeInput, Change, Select). The state in\n  // these modules complicates things, as you'll essentially\n  // get the case where the capture phase event might change\n  // state, only for the following bubble event to come in\n  // later and not trigger anything as the state now\n  // invalidates the heuristics of the event plugin. We\n  // could alter all these plugins to work in such ways, but\n  // that might cause other unknown side-effects that we\n  // can't foresee right now.\n\n  if (shouldProcessPolyfillPlugins) {\n    extractEvents$2(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget);\n    extractEvents$1(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget);\n    extractEvents$3(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget);\n    extractEvents(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget);\n  }\n} // List of events that need to be individually attached to media elements.\n\n\nvar mediaEventTypes = ['abort', 'canplay', 'canplaythrough', 'durationchange', 'emptied', 'encrypted', 'ended', 'error', 'loadeddata', 'loadedmetadata', 'loadstart', 'pause', 'play', 'playing', 'progress', 'ratechange', 'resize', 'seeked', 'seeking', 'stalled', 'suspend', 'timeupdate', 'volumechange', 'waiting']; // We should not delegate these events to the container, but rather\n// set them on the actual target element itself. This is primarily\n// because these events do not consistently bubble in the DOM.\n\nvar nonDelegatedEvents = new Set(['cancel', 'close', 'invalid', 'load', 'scroll', 'toggle'].concat(mediaEventTypes));\n\nfunction executeDispatch(event, listener, currentTarget) {\n  var type = event.type || 'unknown-event';\n  event.currentTarget = currentTarget;\n  invokeGuardedCallbackAndCatchFirstError(type, listener, undefined, event);\n  event.currentTarget = null;\n}\n\nfunction processDispatchQueueItemsInOrder(event, dispatchListeners, inCapturePhase) {\n  var previousInstance;\n\n  if (inCapturePhase) {\n    for (var i = dispatchListeners.length - 1; i >= 0; i--) {\n      var _dispatchListeners$i = dispatchListeners[i],\n          instance = _dispatchListeners$i.instance,\n          currentTarget = _dispatchListeners$i.currentTarget,\n          listener = _dispatchListeners$i.listener;\n\n      if (instance !== previousInstance && event.isPropagationStopped()) {\n        return;\n      }\n\n      executeDispatch(event, listener, currentTarget);\n      previousInstance = instance;\n    }\n  } else {\n    for (var _i = 0; _i < dispatchListeners.length; _i++) {\n      var _dispatchListeners$_i = dispatchListeners[_i],\n          _instance = _dispatchListeners$_i.instance,\n          _currentTarget = _dispatchListeners$_i.currentTarget,\n          _listener = _dispatchListeners$_i.listener;\n\n      if (_instance !== previousInstance && event.isPropagationStopped()) {\n        return;\n      }\n\n      executeDispatch(event, _listener, _currentTarget);\n      previousInstance = _instance;\n    }\n  }\n}\n\nfunction processDispatchQueue(dispatchQueue, eventSystemFlags) {\n  var inCapturePhase = (eventSystemFlags & IS_CAPTURE_PHASE) !== 0;\n\n  for (var i = 0; i < dispatchQueue.length; i++) {\n    var _dispatchQueue$i = dispatchQueue[i],\n        event = _dispatchQueue$i.event,\n        listeners = _dispatchQueue$i.listeners;\n    processDispatchQueueItemsInOrder(event, listeners, inCapturePhase); //  event system doesn't use pooling.\n  } // This would be a good time to rethrow if any of the event handlers threw.\n\n\n  rethrowCaughtError();\n}\n\nfunction dispatchEventsForPlugins(domEventName, eventSystemFlags, nativeEvent, targetInst, targetContainer) {\n  var nativeEventTarget = getEventTarget(nativeEvent);\n  var dispatchQueue = [];\n  extractEvents$5(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget, eventSystemFlags);\n  processDispatchQueue(dispatchQueue, eventSystemFlags);\n}\n\nfunction listenToNonDelegatedEvent(domEventName, targetElement) {\n  {\n    if (!nonDelegatedEvents.has(domEventName)) {\n      error('Did not expect a listenToNonDelegatedEvent() call for \"%s\". ' + 'This is a bug in React. Please file an issue.', domEventName);\n    }\n  }\n\n  var isCapturePhaseListener = false;\n  var listenerSet = getEventListenerSet(targetElement);\n  var listenerSetKey = getListenerSetKey(domEventName, isCapturePhaseListener);\n\n  if (!listenerSet.has(listenerSetKey)) {\n    addTrappedEventListener(targetElement, domEventName, IS_NON_DELEGATED, isCapturePhaseListener);\n    listenerSet.add(listenerSetKey);\n  }\n}\nfunction listenToNativeEvent(domEventName, isCapturePhaseListener, target) {\n  {\n    if (nonDelegatedEvents.has(domEventName) && !isCapturePhaseListener) {\n      error('Did not expect a listenToNativeEvent() call for \"%s\" in the bubble phase. ' + 'This is a bug in React. Please file an issue.', domEventName);\n    }\n  }\n\n  var eventSystemFlags = 0;\n\n  if (isCapturePhaseListener) {\n    eventSystemFlags |= IS_CAPTURE_PHASE;\n  }\n\n  addTrappedEventListener(target, domEventName, eventSystemFlags, isCapturePhaseListener);\n} // This is only used by createEventHandle when the\nvar listeningMarker = '_reactListening' + Math.random().toString(36).slice(2);\nfunction listenToAllSupportedEvents(rootContainerElement) {\n  if (!rootContainerElement[listeningMarker]) {\n    rootContainerElement[listeningMarker] = true;\n    allNativeEvents.forEach(function (domEventName) {\n      // We handle selectionchange separately because it\n      // doesn't bubble and needs to be on the document.\n      if (domEventName !== 'selectionchange') {\n        if (!nonDelegatedEvents.has(domEventName)) {\n          listenToNativeEvent(domEventName, false, rootContainerElement);\n        }\n\n        listenToNativeEvent(domEventName, true, rootContainerElement);\n      }\n    });\n    var ownerDocument = rootContainerElement.nodeType === DOCUMENT_NODE ? rootContainerElement : rootContainerElement.ownerDocument;\n\n    if (ownerDocument !== null) {\n      // The selectionchange event also needs deduplication\n      // but it is attached to the document.\n      if (!ownerDocument[listeningMarker]) {\n        ownerDocument[listeningMarker] = true;\n        listenToNativeEvent('selectionchange', false, ownerDocument);\n      }\n    }\n  }\n}\n\nfunction addTrappedEventListener(targetContainer, domEventName, eventSystemFlags, isCapturePhaseListener, isDeferredListenerForLegacyFBSupport) {\n  var listener = createEventListenerWrapperWithPriority(targetContainer, domEventName, eventSystemFlags); // If passive option is not supported, then the event will be\n  // active and not passive.\n\n  var isPassiveListener = undefined;\n\n  if (passiveBrowserEventsSupported) {\n    // Browsers introduced an intervention, making these events\n    // passive by default on document. React doesn't bind them\n    // to document anymore, but changing this now would undo\n    // the performance wins from the change. So we emulate\n    // the existing behavior manually on the roots now.\n    // https://github.com/facebook/react/issues/19651\n    if (domEventName === 'touchstart' || domEventName === 'touchmove' || domEventName === 'wheel') {\n      isPassiveListener = true;\n    }\n  }\n\n  targetContainer =  targetContainer;\n  var unsubscribeListener; // When legacyFBSupport is enabled, it's for when we\n\n\n  if (isCapturePhaseListener) {\n    if (isPassiveListener !== undefined) {\n      unsubscribeListener = addEventCaptureListenerWithPassiveFlag(targetContainer, domEventName, listener, isPassiveListener);\n    } else {\n      unsubscribeListener = addEventCaptureListener(targetContainer, domEventName, listener);\n    }\n  } else {\n    if (isPassiveListener !== undefined) {\n      unsubscribeListener = addEventBubbleListenerWithPassiveFlag(targetContainer, domEventName, listener, isPassiveListener);\n    } else {\n      unsubscribeListener = addEventBubbleListener(targetContainer, domEventName, listener);\n    }\n  }\n}\n\nfunction isMatchingRootContainer(grandContainer, targetContainer) {\n  return grandContainer === targetContainer || grandContainer.nodeType === COMMENT_NODE && grandContainer.parentNode === targetContainer;\n}\n\nfunction dispatchEventForPluginEventSystem(domEventName, eventSystemFlags, nativeEvent, targetInst, targetContainer) {\n  var ancestorInst = targetInst;\n\n  if ((eventSystemFlags & IS_EVENT_HANDLE_NON_MANAGED_NODE) === 0 && (eventSystemFlags & IS_NON_DELEGATED) === 0) {\n    var targetContainerNode = targetContainer; // If we are using the legacy FB support flag, we\n\n    if (targetInst !== null) {\n      // The below logic attempts to work out if we need to change\n      // the target fiber to a different ancestor. We had similar logic\n      // in the legacy event system, except the big difference between\n      // systems is that the modern event system now has an event listener\n      // attached to each React Root and React Portal Root. Together,\n      // the DOM nodes representing these roots are the \"rootContainer\".\n      // To figure out which ancestor instance we should use, we traverse\n      // up the fiber tree from the target instance and attempt to find\n      // root boundaries that match that of our current \"rootContainer\".\n      // If we find that \"rootContainer\", we find the parent fiber\n      // sub-tree for that root and make that our ancestor instance.\n      var node = targetInst;\n\n      mainLoop: while (true) {\n        if (node === null) {\n          return;\n        }\n\n        var nodeTag = node.tag;\n\n        if (nodeTag === HostRoot || nodeTag === HostPortal) {\n          var container = node.stateNode.containerInfo;\n\n          if (isMatchingRootContainer(container, targetContainerNode)) {\n            break;\n          }\n\n          if (nodeTag === HostPortal) {\n            // The target is a portal, but it's not the rootContainer we're looking for.\n            // Normally portals handle their own events all the way down to the root.\n            // So we should be able to stop now. However, we don't know if this portal\n            // was part of *our* root.\n            var grandNode = node.return;\n\n            while (grandNode !== null) {\n              var grandTag = grandNode.tag;\n\n              if (grandTag === HostRoot || grandTag === HostPortal) {\n                var grandContainer = grandNode.stateNode.containerInfo;\n\n                if (isMatchingRootContainer(grandContainer, targetContainerNode)) {\n                  // This is the rootContainer we're looking for and we found it as\n                  // a parent of the Portal. That means we can ignore it because the\n                  // Portal will bubble through to us.\n                  return;\n                }\n              }\n\n              grandNode = grandNode.return;\n            }\n          } // Now we need to find it's corresponding host fiber in the other\n          // tree. To do this we can use getClosestInstanceFromNode, but we\n          // need to validate that the fiber is a host instance, otherwise\n          // we need to traverse up through the DOM till we find the correct\n          // node that is from the other tree.\n\n\n          while (container !== null) {\n            var parentNode = getClosestInstanceFromNode(container);\n\n            if (parentNode === null) {\n              return;\n            }\n\n            var parentTag = parentNode.tag;\n\n            if (parentTag === HostComponent || parentTag === HostText) {\n              node = ancestorInst = parentNode;\n              continue mainLoop;\n            }\n\n            container = container.parentNode;\n          }\n        }\n\n        node = node.return;\n      }\n    }\n  }\n\n  batchedUpdates(function () {\n    return dispatchEventsForPlugins(domEventName, eventSystemFlags, nativeEvent, ancestorInst);\n  });\n}\n\nfunction createDispatchListener(instance, listener, currentTarget) {\n  return {\n    instance: instance,\n    listener: listener,\n    currentTarget: currentTarget\n  };\n}\n\nfunction accumulateSinglePhaseListeners(targetFiber, reactName, nativeEventType, inCapturePhase, accumulateTargetOnly, nativeEvent) {\n  var captureName = reactName !== null ? reactName + 'Capture' : null;\n  var reactEventName = inCapturePhase ? captureName : reactName;\n  var listeners = [];\n  var instance = targetFiber;\n  var lastHostComponent = null; // Accumulate all instances and listeners via the target -> root path.\n\n  while (instance !== null) {\n    var _instance2 = instance,\n        stateNode = _instance2.stateNode,\n        tag = _instance2.tag; // Handle listeners that are on HostComponents (i.e. <div>)\n\n    if (tag === HostComponent && stateNode !== null) {\n      lastHostComponent = stateNode; // createEventHandle listeners\n\n\n      if (reactEventName !== null) {\n        var listener = getListener(instance, reactEventName);\n\n        if (listener != null) {\n          listeners.push(createDispatchListener(instance, listener, lastHostComponent));\n        }\n      }\n    } // If we are only accumulating events for the target, then we don't\n    // continue to propagate through the React fiber tree to find other\n    // listeners.\n\n\n    if (accumulateTargetOnly) {\n      break;\n    } // If we are processing the onBeforeBlur event, then we need to take\n\n    instance = instance.return;\n  }\n\n  return listeners;\n} // We should only use this function for:\n// - BeforeInputEventPlugin\n// - ChangeEventPlugin\n// - SelectEventPlugin\n// This is because we only process these plugins\n// in the bubble phase, so we need to accumulate two\n// phase event listeners (via emulation).\n\nfunction accumulateTwoPhaseListeners(targetFiber, reactName) {\n  var captureName = reactName + 'Capture';\n  var listeners = [];\n  var instance = targetFiber; // Accumulate all instances and listeners via the target -> root path.\n\n  while (instance !== null) {\n    var _instance3 = instance,\n        stateNode = _instance3.stateNode,\n        tag = _instance3.tag; // Handle listeners that are on HostComponents (i.e. <div>)\n\n    if (tag === HostComponent && stateNode !== null) {\n      var currentTarget = stateNode;\n      var captureListener = getListener(instance, captureName);\n\n      if (captureListener != null) {\n        listeners.unshift(createDispatchListener(instance, captureListener, currentTarget));\n      }\n\n      var bubbleListener = getListener(instance, reactName);\n\n      if (bubbleListener != null) {\n        listeners.push(createDispatchListener(instance, bubbleListener, currentTarget));\n      }\n    }\n\n    instance = instance.return;\n  }\n\n  return listeners;\n}\n\nfunction getParent(inst) {\n  if (inst === null) {\n    return null;\n  }\n\n  do {\n    inst = inst.return; // TODO: If this is a HostRoot we might want to bail out.\n    // That is depending on if we want nested subtrees (layers) to bubble\n    // events to their parent. We could also go through parentNode on the\n    // host node but that wouldn't work for React Native and doesn't let us\n    // do the portal feature.\n  } while (inst && inst.tag !== HostComponent);\n\n  if (inst) {\n    return inst;\n  }\n\n  return null;\n}\n/**\n * Return the lowest common ancestor of A and B, or null if they are in\n * different trees.\n */\n\n\nfunction getLowestCommonAncestor(instA, instB) {\n  var nodeA = instA;\n  var nodeB = instB;\n  var depthA = 0;\n\n  for (var tempA = nodeA; tempA; tempA = getParent(tempA)) {\n    depthA++;\n  }\n\n  var depthB = 0;\n\n  for (var tempB = nodeB; tempB; tempB = getParent(tempB)) {\n    depthB++;\n  } // If A is deeper, crawl up.\n\n\n  while (depthA - depthB > 0) {\n    nodeA = getParent(nodeA);\n    depthA--;\n  } // If B is deeper, crawl up.\n\n\n  while (depthB - depthA > 0) {\n    nodeB = getParent(nodeB);\n    depthB--;\n  } // Walk in lockstep until we find a match.\n\n\n  var depth = depthA;\n\n  while (depth--) {\n    if (nodeA === nodeB || nodeB !== null && nodeA === nodeB.alternate) {\n      return nodeA;\n    }\n\n    nodeA = getParent(nodeA);\n    nodeB = getParent(nodeB);\n  }\n\n  return null;\n}\n\nfunction accumulateEnterLeaveListenersForEvent(dispatchQueue, event, target, common, inCapturePhase) {\n  var registrationName = event._reactName;\n  var listeners = [];\n  var instance = target;\n\n  while (instance !== null) {\n    if (instance === common) {\n      break;\n    }\n\n    var _instance4 = instance,\n        alternate = _instance4.alternate,\n        stateNode = _instance4.stateNode,\n        tag = _instance4.tag;\n\n    if (alternate !== null && alternate === common) {\n      break;\n    }\n\n    if (tag === HostComponent && stateNode !== null) {\n      var currentTarget = stateNode;\n\n      if (inCapturePhase) {\n        var captureListener = getListener(instance, registrationName);\n\n        if (captureListener != null) {\n          listeners.unshift(createDispatchListener(instance, captureListener, currentTarget));\n        }\n      } else if (!inCapturePhase) {\n        var bubbleListener = getListener(instance, registrationName);\n\n        if (bubbleListener != null) {\n          listeners.push(createDispatchListener(instance, bubbleListener, currentTarget));\n        }\n      }\n    }\n\n    instance = instance.return;\n  }\n\n  if (listeners.length !== 0) {\n    dispatchQueue.push({\n      event: event,\n      listeners: listeners\n    });\n  }\n} // We should only use this function for:\n// - EnterLeaveEventPlugin\n// This is because we only process this plugin\n// in the bubble phase, so we need to accumulate two\n// phase event listeners.\n\n\nfunction accumulateEnterLeaveTwoPhaseListeners(dispatchQueue, leaveEvent, enterEvent, from, to) {\n  var common = from && to ? getLowestCommonAncestor(from, to) : null;\n\n  if (from !== null) {\n    accumulateEnterLeaveListenersForEvent(dispatchQueue, leaveEvent, from, common, false);\n  }\n\n  if (to !== null && enterEvent !== null) {\n    accumulateEnterLeaveListenersForEvent(dispatchQueue, enterEvent, to, common, true);\n  }\n}\nfunction getListenerSetKey(domEventName, capture) {\n  return domEventName + \"__\" + (capture ? 'capture' : 'bubble');\n}\n\nvar didWarnInvalidHydration = false;\nvar DANGEROUSLY_SET_INNER_HTML = 'dangerouslySetInnerHTML';\nvar SUPPRESS_CONTENT_EDITABLE_WARNING = 'suppressContentEditableWarning';\nvar SUPPRESS_HYDRATION_WARNING = 'suppressHydrationWarning';\nvar AUTOFOCUS = 'autoFocus';\nvar CHILDREN = 'children';\nvar STYLE = 'style';\nvar HTML$1 = '__html';\nvar warnedUnknownTags;\nvar validatePropertiesInDevelopment;\nvar warnForPropDifference;\nvar warnForExtraAttributes;\nvar warnForInvalidEventListener;\nvar canDiffStyleForHydrationWarning;\nvar normalizeHTML;\n\n{\n  warnedUnknownTags = {\n    // There are working polyfills for <dialog>. Let people use it.\n    dialog: true,\n    // Electron ships a custom <webview> tag to display external web content in\n    // an isolated frame and process.\n    // This tag is not present in non Electron environments such as JSDom which\n    // is often used for testing purposes.\n    // @see https://electronjs.org/docs/api/webview-tag\n    webview: true\n  };\n\n  validatePropertiesInDevelopment = function (type, props) {\n    validateProperties(type, props);\n    validateProperties$1(type, props);\n    validateProperties$2(type, props, {\n      registrationNameDependencies: registrationNameDependencies,\n      possibleRegistrationNames: possibleRegistrationNames\n    });\n  }; // IE 11 parses & normalizes the style attribute as opposed to other\n  // browsers. It adds spaces and sorts the properties in some\n  // non-alphabetical order. Handling that would require sorting CSS\n  // properties in the client & server versions or applying\n  // `expectedStyle` to a temporary DOM node to read its `style` attribute\n  // normalized. Since it only affects IE, we're skipping style warnings\n  // in that browser completely in favor of doing all that work.\n  // See https://github.com/facebook/react/issues/11807\n\n\n  canDiffStyleForHydrationWarning = canUseDOM && !document.documentMode;\n\n  warnForPropDifference = function (propName, serverValue, clientValue) {\n    if (didWarnInvalidHydration) {\n      return;\n    }\n\n    var normalizedClientValue = normalizeMarkupForTextOrAttribute(clientValue);\n    var normalizedServerValue = normalizeMarkupForTextOrAttribute(serverValue);\n\n    if (normalizedServerValue === normalizedClientValue) {\n      return;\n    }\n\n    didWarnInvalidHydration = true;\n\n    error('Prop `%s` did not match. Server: %s Client: %s', propName, JSON.stringify(normalizedServerValue), JSON.stringify(normalizedClientValue));\n  };\n\n  warnForExtraAttributes = function (attributeNames) {\n    if (didWarnInvalidHydration) {\n      return;\n    }\n\n    didWarnInvalidHydration = true;\n    var names = [];\n    attributeNames.forEach(function (name) {\n      names.push(name);\n    });\n\n    error('Extra attributes from the server: %s', names);\n  };\n\n  warnForInvalidEventListener = function (registrationName, listener) {\n    if (listener === false) {\n      error('Expected `%s` listener to be a function, instead got `false`.\\n\\n' + 'If you used to conditionally omit it with %s={condition && value}, ' + 'pass %s={condition ? value : undefined} instead.', registrationName, registrationName, registrationName);\n    } else {\n      error('Expected `%s` listener to be a function, instead got a value of `%s` type.', registrationName, typeof listener);\n    }\n  }; // Parse the HTML and read it back to normalize the HTML string so that it\n  // can be used for comparison.\n\n\n  normalizeHTML = function (parent, html) {\n    // We could have created a separate document here to avoid\n    // re-initializing custom elements if they exist. But this breaks\n    // how <noscript> is being handled. So we use the same document.\n    // See the discussion in https://github.com/facebook/react/pull/11157.\n    var testElement = parent.namespaceURI === HTML_NAMESPACE ? parent.ownerDocument.createElement(parent.tagName) : parent.ownerDocument.createElementNS(parent.namespaceURI, parent.tagName);\n    testElement.innerHTML = html;\n    return testElement.innerHTML;\n  };\n} // HTML parsing normalizes CR and CRLF to LF.\n// It also can turn \\u0000 into \\uFFFD inside attributes.\n// https://www.w3.org/TR/html5/single-page.html#preprocessing-the-input-stream\n// If we have a mismatch, it might be caused by that.\n// We will still patch up in this case but not fire the warning.\n\n\nvar NORMALIZE_NEWLINES_REGEX = /\\r\\n?/g;\nvar NORMALIZE_NULL_AND_REPLACEMENT_REGEX = /\\u0000|\\uFFFD/g;\n\nfunction normalizeMarkupForTextOrAttribute(markup) {\n  {\n    checkHtmlStringCoercion(markup);\n  }\n\n  var markupString = typeof markup === 'string' ? markup : '' + markup;\n  return markupString.replace(NORMALIZE_NEWLINES_REGEX, '\\n').replace(NORMALIZE_NULL_AND_REPLACEMENT_REGEX, '');\n}\n\nfunction checkForUnmatchedText(serverText, clientText, isConcurrentMode, shouldWarnDev) {\n  var normalizedClientText = normalizeMarkupForTextOrAttribute(clientText);\n  var normalizedServerText = normalizeMarkupForTextOrAttribute(serverText);\n\n  if (normalizedServerText === normalizedClientText) {\n    return;\n  }\n\n  if (shouldWarnDev) {\n    {\n      if (!didWarnInvalidHydration) {\n        didWarnInvalidHydration = true;\n\n        error('Text content did not match. Server: \"%s\" Client: \"%s\"', normalizedServerText, normalizedClientText);\n      }\n    }\n  }\n\n  if (isConcurrentMode && enableClientRenderFallbackOnTextMismatch) {\n    // In concurrent roots, we throw when there's a text mismatch and revert to\n    // client rendering, up to the nearest Suspense boundary.\n    throw new Error('Text content does not match server-rendered HTML.');\n  }\n}\n\nfunction getOwnerDocumentFromRootContainer(rootContainerElement) {\n  return rootContainerElement.nodeType === DOCUMENT_NODE ? rootContainerElement : rootContainerElement.ownerDocument;\n}\n\nfunction noop() {}\n\nfunction trapClickOnNonInteractiveElement(node) {\n  // Mobile Safari does not fire properly bubble click events on\n  // non-interactive elements, which means delegated click listeners do not\n  // fire. The workaround for this bug involves attaching an empty click\n  // listener on the target node.\n  // https://www.quirksmode.org/blog/archives/2010/09/click_event_del.html\n  // Just set it using the onclick property so that we don't have to manage any\n  // bookkeeping for it. Not sure if we need to clear it when the listener is\n  // removed.\n  // TODO: Only do this for the relevant Safaris maybe?\n  node.onclick = noop;\n}\n\nfunction setInitialDOMProperties(tag, domElement, rootContainerElement, nextProps, isCustomComponentTag) {\n  for (var propKey in nextProps) {\n    if (!nextProps.hasOwnProperty(propKey)) {\n      continue;\n    }\n\n    var nextProp = nextProps[propKey];\n\n    if (propKey === STYLE) {\n      {\n        if (nextProp) {\n          // Freeze the next style object so that we can assume it won't be\n          // mutated. We have already warned for this in the past.\n          Object.freeze(nextProp);\n        }\n      } // Relies on `updateStylesByID` not mutating `styleUpdates`.\n\n\n      setValueForStyles(domElement, nextProp);\n    } else if (propKey === DANGEROUSLY_SET_INNER_HTML) {\n      var nextHtml = nextProp ? nextProp[HTML$1] : undefined;\n\n      if (nextHtml != null) {\n        setInnerHTML(domElement, nextHtml);\n      }\n    } else if (propKey === CHILDREN) {\n      if (typeof nextProp === 'string') {\n        // Avoid setting initial textContent when the text is empty. In IE11 setting\n        // textContent on a <textarea> will cause the placeholder to not\n        // show within the <textarea> until it has been focused and blurred again.\n        // https://github.com/facebook/react/issues/6731#issuecomment-254874553\n        var canSetTextContent = tag !== 'textarea' || nextProp !== '';\n\n        if (canSetTextContent) {\n          setTextContent(domElement, nextProp);\n        }\n      } else if (typeof nextProp === 'number') {\n        setTextContent(domElement, '' + nextProp);\n      }\n    } else if (propKey === SUPPRESS_CONTENT_EDITABLE_WARNING || propKey === SUPPRESS_HYDRATION_WARNING) ; else if (propKey === AUTOFOCUS) ; else if (registrationNameDependencies.hasOwnProperty(propKey)) {\n      if (nextProp != null) {\n        if ( typeof nextProp !== 'function') {\n          warnForInvalidEventListener(propKey, nextProp);\n        }\n\n        if (propKey === 'onScroll') {\n          listenToNonDelegatedEvent('scroll', domElement);\n        }\n      }\n    } else if (nextProp != null) {\n      setValueForProperty(domElement, propKey, nextProp, isCustomComponentTag);\n    }\n  }\n}\n\nfunction updateDOMProperties(domElement, updatePayload, wasCustomComponentTag, isCustomComponentTag) {\n  // TODO: Handle wasCustomComponentTag\n  for (var i = 0; i < updatePayload.length; i += 2) {\n    var propKey = updatePayload[i];\n    var propValue = updatePayload[i + 1];\n\n    if (propKey === STYLE) {\n      setValueForStyles(domElement, propValue);\n    } else if (propKey === DANGEROUSLY_SET_INNER_HTML) {\n      setInnerHTML(domElement, propValue);\n    } else if (propKey === CHILDREN) {\n      setTextContent(domElement, propValue);\n    } else {\n      setValueForProperty(domElement, propKey, propValue, isCustomComponentTag);\n    }\n  }\n}\n\nfunction createElement(type, props, rootContainerElement, parentNamespace) {\n  var isCustomComponentTag; // We create tags in the namespace of their parent container, except HTML\n  // tags get no namespace.\n\n  var ownerDocument = getOwnerDocumentFromRootContainer(rootContainerElement);\n  var domElement;\n  var namespaceURI = parentNamespace;\n\n  if (namespaceURI === HTML_NAMESPACE) {\n    namespaceURI = getIntrinsicNamespace(type);\n  }\n\n  if (namespaceURI === HTML_NAMESPACE) {\n    {\n      isCustomComponentTag = isCustomComponent(type, props); // Should this check be gated by parent namespace? Not sure we want to\n      // allow <SVG> or <mATH>.\n\n      if (!isCustomComponentTag && type !== type.toLowerCase()) {\n        error('<%s /> is using incorrect casing. ' + 'Use PascalCase for React components, ' + 'or lowercase for HTML elements.', type);\n      }\n    }\n\n    if (type === 'script') {\n      // Create the script via .innerHTML so its \"parser-inserted\" flag is\n      // set to true and it does not execute\n      var div = ownerDocument.createElement('div');\n\n      div.innerHTML = '<script><' + '/script>'; // eslint-disable-line\n      // This is guaranteed to yield a script element.\n\n      var firstChild = div.firstChild;\n      domElement = div.removeChild(firstChild);\n    } else if (typeof props.is === 'string') {\n      // $FlowIssue `createElement` should be updated for Web Components\n      domElement = ownerDocument.createElement(type, {\n        is: props.is\n      });\n    } else {\n      // Separate else branch instead of using `props.is || undefined` above because of a Firefox bug.\n      // See discussion in https://github.com/facebook/react/pull/6896\n      // and discussion in https://bugzilla.mozilla.org/show_bug.cgi?id=1276240\n      domElement = ownerDocument.createElement(type); // Normally attributes are assigned in `setInitialDOMProperties`, however the `multiple` and `size`\n      // attributes on `select`s needs to be added before `option`s are inserted.\n      // This prevents:\n      // - a bug where the `select` does not scroll to the correct option because singular\n      //  `select` elements automatically pick the first item #13222\n      // - a bug where the `select` set the first item as selected despite the `size` attribute #14239\n      // See https://github.com/facebook/react/issues/13222\n      // and https://github.com/facebook/react/issues/14239\n\n      if (type === 'select') {\n        var node = domElement;\n\n        if (props.multiple) {\n          node.multiple = true;\n        } else if (props.size) {\n          // Setting a size greater than 1 causes a select to behave like `multiple=true`, where\n          // it is possible that no option is selected.\n          //\n          // This is only necessary when a select in \"single selection mode\".\n          node.size = props.size;\n        }\n      }\n    }\n  } else {\n    domElement = ownerDocument.createElementNS(namespaceURI, type);\n  }\n\n  {\n    if (namespaceURI === HTML_NAMESPACE) {\n      if (!isCustomComponentTag && Object.prototype.toString.call(domElement) === '[object HTMLUnknownElement]' && !hasOwnProperty.call(warnedUnknownTags, type)) {\n        warnedUnknownTags[type] = true;\n\n        error('The tag <%s> is unrecognized in this browser. ' + 'If you meant to render a React component, start its name with ' + 'an uppercase letter.', type);\n      }\n    }\n  }\n\n  return domElement;\n}\nfunction createTextNode(text, rootContainerElement) {\n  return getOwnerDocumentFromRootContainer(rootContainerElement).createTextNode(text);\n}\nfunction setInitialProperties(domElement, tag, rawProps, rootContainerElement) {\n  var isCustomComponentTag = isCustomComponent(tag, rawProps);\n\n  {\n    validatePropertiesInDevelopment(tag, rawProps);\n  } // TODO: Make sure that we check isMounted before firing any of these events.\n\n\n  var props;\n\n  switch (tag) {\n    case 'dialog':\n      listenToNonDelegatedEvent('cancel', domElement);\n      listenToNonDelegatedEvent('close', domElement);\n      props = rawProps;\n      break;\n\n    case 'iframe':\n    case 'object':\n    case 'embed':\n      // We listen to this event in case to ensure emulated bubble\n      // listeners still fire for the load event.\n      listenToNonDelegatedEvent('load', domElement);\n      props = rawProps;\n      break;\n\n    case 'video':\n    case 'audio':\n      // We listen to these events in case to ensure emulated bubble\n      // listeners still fire for all the media events.\n      for (var i = 0; i < mediaEventTypes.length; i++) {\n        listenToNonDelegatedEvent(mediaEventTypes[i], domElement);\n      }\n\n      props = rawProps;\n      break;\n\n    case 'source':\n      // We listen to this event in case to ensure emulated bubble\n      // listeners still fire for the error event.\n      listenToNonDelegatedEvent('error', domElement);\n      props = rawProps;\n      break;\n\n    case 'img':\n    case 'image':\n    case 'link':\n      // We listen to these events in case to ensure emulated bubble\n      // listeners still fire for error and load events.\n      listenToNonDelegatedEvent('error', domElement);\n      listenToNonDelegatedEvent('load', domElement);\n      props = rawProps;\n      break;\n\n    case 'details':\n      // We listen to this event in case to ensure emulated bubble\n      // listeners still fire for the toggle event.\n      listenToNonDelegatedEvent('toggle', domElement);\n      props = rawProps;\n      break;\n\n    case 'input':\n      initWrapperState(domElement, rawProps);\n      props = getHostProps(domElement, rawProps); // We listen to this event in case to ensure emulated bubble\n      // listeners still fire for the invalid event.\n\n      listenToNonDelegatedEvent('invalid', domElement);\n      break;\n\n    case 'option':\n      validateProps(domElement, rawProps);\n      props = rawProps;\n      break;\n\n    case 'select':\n      initWrapperState$1(domElement, rawProps);\n      props = getHostProps$1(domElement, rawProps); // We listen to this event in case to ensure emulated bubble\n      // listeners still fire for the invalid event.\n\n      listenToNonDelegatedEvent('invalid', domElement);\n      break;\n\n    case 'textarea':\n      initWrapperState$2(domElement, rawProps);\n      props = getHostProps$2(domElement, rawProps); // We listen to this event in case to ensure emulated bubble\n      // listeners still fire for the invalid event.\n\n      listenToNonDelegatedEvent('invalid', domElement);\n      break;\n\n    default:\n      props = rawProps;\n  }\n\n  assertValidProps(tag, props);\n  setInitialDOMProperties(tag, domElement, rootContainerElement, props, isCustomComponentTag);\n\n  switch (tag) {\n    case 'input':\n      // TODO: Make sure we check if this is still unmounted or do any clean\n      // up necessary since we never stop tracking anymore.\n      track(domElement);\n      postMountWrapper(domElement, rawProps, false);\n      break;\n\n    case 'textarea':\n      // TODO: Make sure we check if this is still unmounted or do any clean\n      // up necessary since we never stop tracking anymore.\n      track(domElement);\n      postMountWrapper$3(domElement);\n      break;\n\n    case 'option':\n      postMountWrapper$1(domElement, rawProps);\n      break;\n\n    case 'select':\n      postMountWrapper$2(domElement, rawProps);\n      break;\n\n    default:\n      if (typeof props.onClick === 'function') {\n        // TODO: This cast may not be sound for SVG, MathML or custom elements.\n        trapClickOnNonInteractiveElement(domElement);\n      }\n\n      break;\n  }\n} // Calculate the diff between the two objects.\n\nfunction diffProperties(domElement, tag, lastRawProps, nextRawProps, rootContainerElement) {\n  {\n    validatePropertiesInDevelopment(tag, nextRawProps);\n  }\n\n  var updatePayload = null;\n  var lastProps;\n  var nextProps;\n\n  switch (tag) {\n    case 'input':\n      lastProps = getHostProps(domElement, lastRawProps);\n      nextProps = getHostProps(domElement, nextRawProps);\n      updatePayload = [];\n      break;\n\n    case 'select':\n      lastProps = getHostProps$1(domElement, lastRawProps);\n      nextProps = getHostProps$1(domElement, nextRawProps);\n      updatePayload = [];\n      break;\n\n    case 'textarea':\n      lastProps = getHostProps$2(domElement, lastRawProps);\n      nextProps = getHostProps$2(domElement, nextRawProps);\n      updatePayload = [];\n      break;\n\n    default:\n      lastProps = lastRawProps;\n      nextProps = nextRawProps;\n\n      if (typeof lastProps.onClick !== 'function' && typeof nextProps.onClick === 'function') {\n        // TODO: This cast may not be sound for SVG, MathML or custom elements.\n        trapClickOnNonInteractiveElement(domElement);\n      }\n\n      break;\n  }\n\n  assertValidProps(tag, nextProps);\n  var propKey;\n  var styleName;\n  var styleUpdates = null;\n\n  for (propKey in lastProps) {\n    if (nextProps.hasOwnProperty(propKey) || !lastProps.hasOwnProperty(propKey) || lastProps[propKey] == null) {\n      continue;\n    }\n\n    if (propKey === STYLE) {\n      var lastStyle = lastProps[propKey];\n\n      for (styleName in lastStyle) {\n        if (lastStyle.hasOwnProperty(styleName)) {\n          if (!styleUpdates) {\n            styleUpdates = {};\n          }\n\n          styleUpdates[styleName] = '';\n        }\n      }\n    } else if (propKey === DANGEROUSLY_SET_INNER_HTML || propKey === CHILDREN) ; else if (propKey === SUPPRESS_CONTENT_EDITABLE_WARNING || propKey === SUPPRESS_HYDRATION_WARNING) ; else if (propKey === AUTOFOCUS) ; else if (registrationNameDependencies.hasOwnProperty(propKey)) {\n      // This is a special case. If any listener updates we need to ensure\n      // that the \"current\" fiber pointer gets updated so we need a commit\n      // to update this element.\n      if (!updatePayload) {\n        updatePayload = [];\n      }\n    } else {\n      // For all other deleted properties we add it to the queue. We use\n      // the allowed property list in the commit phase instead.\n      (updatePayload = updatePayload || []).push(propKey, null);\n    }\n  }\n\n  for (propKey in nextProps) {\n    var nextProp = nextProps[propKey];\n    var lastProp = lastProps != null ? lastProps[propKey] : undefined;\n\n    if (!nextProps.hasOwnProperty(propKey) || nextProp === lastProp || nextProp == null && lastProp == null) {\n      continue;\n    }\n\n    if (propKey === STYLE) {\n      {\n        if (nextProp) {\n          // Freeze the next style object so that we can assume it won't be\n          // mutated. We have already warned for this in the past.\n          Object.freeze(nextProp);\n        }\n      }\n\n      if (lastProp) {\n        // Unset styles on `lastProp` but not on `nextProp`.\n        for (styleName in lastProp) {\n          if (lastProp.hasOwnProperty(styleName) && (!nextProp || !nextProp.hasOwnProperty(styleName))) {\n            if (!styleUpdates) {\n              styleUpdates = {};\n            }\n\n            styleUpdates[styleName] = '';\n          }\n        } // Update styles that changed since `lastProp`.\n\n\n        for (styleName in nextProp) {\n          if (nextProp.hasOwnProperty(styleName) && lastProp[styleName] !== nextProp[styleName]) {\n            if (!styleUpdates) {\n              styleUpdates = {};\n            }\n\n            styleUpdates[styleName] = nextProp[styleName];\n          }\n        }\n      } else {\n        // Relies on `updateStylesByID` not mutating `styleUpdates`.\n        if (!styleUpdates) {\n          if (!updatePayload) {\n            updatePayload = [];\n          }\n\n          updatePayload.push(propKey, styleUpdates);\n        }\n\n        styleUpdates = nextProp;\n      }\n    } else if (propKey === DANGEROUSLY_SET_INNER_HTML) {\n      var nextHtml = nextProp ? nextProp[HTML$1] : undefined;\n      var lastHtml = lastProp ? lastProp[HTML$1] : undefined;\n\n      if (nextHtml != null) {\n        if (lastHtml !== nextHtml) {\n          (updatePayload = updatePayload || []).push(propKey, nextHtml);\n        }\n      }\n    } else if (propKey === CHILDREN) {\n      if (typeof nextProp === 'string' || typeof nextProp === 'number') {\n        (updatePayload = updatePayload || []).push(propKey, '' + nextProp);\n      }\n    } else if (propKey === SUPPRESS_CONTENT_EDITABLE_WARNING || propKey === SUPPRESS_HYDRATION_WARNING) ; else if (registrationNameDependencies.hasOwnProperty(propKey)) {\n      if (nextProp != null) {\n        // We eagerly listen to this even though we haven't committed yet.\n        if ( typeof nextProp !== 'function') {\n          warnForInvalidEventListener(propKey, nextProp);\n        }\n\n        if (propKey === 'onScroll') {\n          listenToNonDelegatedEvent('scroll', domElement);\n        }\n      }\n\n      if (!updatePayload && lastProp !== nextProp) {\n        // This is a special case. If any listener updates we need to ensure\n        // that the \"current\" props pointer gets updated so we need a commit\n        // to update this element.\n        updatePayload = [];\n      }\n    } else {\n      // For any other property we always add it to the queue and then we\n      // filter it out using the allowed property list during the commit.\n      (updatePayload = updatePayload || []).push(propKey, nextProp);\n    }\n  }\n\n  if (styleUpdates) {\n    {\n      validateShorthandPropertyCollisionInDev(styleUpdates, nextProps[STYLE]);\n    }\n\n    (updatePayload = updatePayload || []).push(STYLE, styleUpdates);\n  }\n\n  return updatePayload;\n} // Apply the diff.\n\nfunction updateProperties(domElement, updatePayload, tag, lastRawProps, nextRawProps) {\n  // Update checked *before* name.\n  // In the middle of an update, it is possible to have multiple checked.\n  // When a checked radio tries to change name, browser makes another radio's checked false.\n  if (tag === 'input' && nextRawProps.type === 'radio' && nextRawProps.name != null) {\n    updateChecked(domElement, nextRawProps);\n  }\n\n  var wasCustomComponentTag = isCustomComponent(tag, lastRawProps);\n  var isCustomComponentTag = isCustomComponent(tag, nextRawProps); // Apply the diff.\n\n  updateDOMProperties(domElement, updatePayload, wasCustomComponentTag, isCustomComponentTag); // TODO: Ensure that an update gets scheduled if any of the special props\n  // changed.\n\n  switch (tag) {\n    case 'input':\n      // Update the wrapper around inputs *after* updating props. This has to\n      // happen after `updateDOMProperties`. Otherwise HTML5 input validations\n      // raise warnings and prevent the new value from being assigned.\n      updateWrapper(domElement, nextRawProps);\n      break;\n\n    case 'textarea':\n      updateWrapper$1(domElement, nextRawProps);\n      break;\n\n    case 'select':\n      // <select> value update needs to occur after <option> children\n      // reconciliation\n      postUpdateWrapper(domElement, nextRawProps);\n      break;\n  }\n}\n\nfunction getPossibleStandardName(propName) {\n  {\n    var lowerCasedName = propName.toLowerCase();\n\n    if (!possibleStandardNames.hasOwnProperty(lowerCasedName)) {\n      return null;\n    }\n\n    return possibleStandardNames[lowerCasedName] || null;\n  }\n}\n\nfunction diffHydratedProperties(domElement, tag, rawProps, parentNamespace, rootContainerElement, isConcurrentMode, shouldWarnDev) {\n  var isCustomComponentTag;\n  var extraAttributeNames;\n\n  {\n    isCustomComponentTag = isCustomComponent(tag, rawProps);\n    validatePropertiesInDevelopment(tag, rawProps);\n  } // TODO: Make sure that we check isMounted before firing any of these events.\n\n\n  switch (tag) {\n    case 'dialog':\n      listenToNonDelegatedEvent('cancel', domElement);\n      listenToNonDelegatedEvent('close', domElement);\n      break;\n\n    case 'iframe':\n    case 'object':\n    case 'embed':\n      // We listen to this event in case to ensure emulated bubble\n      // listeners still fire for the load event.\n      listenToNonDelegatedEvent('load', domElement);\n      break;\n\n    case 'video':\n    case 'audio':\n      // We listen to these events in case to ensure emulated bubble\n      // listeners still fire for all the media events.\n      for (var i = 0; i < mediaEventTypes.length; i++) {\n        listenToNonDelegatedEvent(mediaEventTypes[i], domElement);\n      }\n\n      break;\n\n    case 'source':\n      // We listen to this event in case to ensure emulated bubble\n      // listeners still fire for the error event.\n      listenToNonDelegatedEvent('error', domElement);\n      break;\n\n    case 'img':\n    case 'image':\n    case 'link':\n      // We listen to these events in case to ensure emulated bubble\n      // listeners still fire for error and load events.\n      listenToNonDelegatedEvent('error', domElement);\n      listenToNonDelegatedEvent('load', domElement);\n      break;\n\n    case 'details':\n      // We listen to this event in case to ensure emulated bubble\n      // listeners still fire for the toggle event.\n      listenToNonDelegatedEvent('toggle', domElement);\n      break;\n\n    case 'input':\n      initWrapperState(domElement, rawProps); // We listen to this event in case to ensure emulated bubble\n      // listeners still fire for the invalid event.\n\n      listenToNonDelegatedEvent('invalid', domElement);\n      break;\n\n    case 'option':\n      validateProps(domElement, rawProps);\n      break;\n\n    case 'select':\n      initWrapperState$1(domElement, rawProps); // We listen to this event in case to ensure emulated bubble\n      // listeners still fire for the invalid event.\n\n      listenToNonDelegatedEvent('invalid', domElement);\n      break;\n\n    case 'textarea':\n      initWrapperState$2(domElement, rawProps); // We listen to this event in case to ensure emulated bubble\n      // listeners still fire for the invalid event.\n\n      listenToNonDelegatedEvent('invalid', domElement);\n      break;\n  }\n\n  assertValidProps(tag, rawProps);\n\n  {\n    extraAttributeNames = new Set();\n    var attributes = domElement.attributes;\n\n    for (var _i = 0; _i < attributes.length; _i++) {\n      var name = attributes[_i].name.toLowerCase();\n\n      switch (name) {\n        // Controlled attributes are not validated\n        // TODO: Only ignore them on controlled tags.\n        case 'value':\n          break;\n\n        case 'checked':\n          break;\n\n        case 'selected':\n          break;\n\n        default:\n          // Intentionally use the original name.\n          // See discussion in https://github.com/facebook/react/pull/10676.\n          extraAttributeNames.add(attributes[_i].name);\n      }\n    }\n  }\n\n  var updatePayload = null;\n\n  for (var propKey in rawProps) {\n    if (!rawProps.hasOwnProperty(propKey)) {\n      continue;\n    }\n\n    var nextProp = rawProps[propKey];\n\n    if (propKey === CHILDREN) {\n      // For text content children we compare against textContent. This\n      // might match additional HTML that is hidden when we read it using\n      // textContent. E.g. \"foo\" will match \"f<span>oo</span>\" but that still\n      // satisfies our requirement. Our requirement is not to produce perfect\n      // HTML and attributes. Ideally we should preserve structure but it's\n      // ok not to if the visible content is still enough to indicate what\n      // even listeners these nodes might be wired up to.\n      // TODO: Warn if there is more than a single textNode as a child.\n      // TODO: Should we use domElement.firstChild.nodeValue to compare?\n      if (typeof nextProp === 'string') {\n        if (domElement.textContent !== nextProp) {\n          if (rawProps[SUPPRESS_HYDRATION_WARNING] !== true) {\n            checkForUnmatchedText(domElement.textContent, nextProp, isConcurrentMode, shouldWarnDev);\n          }\n\n          updatePayload = [CHILDREN, nextProp];\n        }\n      } else if (typeof nextProp === 'number') {\n        if (domElement.textContent !== '' + nextProp) {\n          if (rawProps[SUPPRESS_HYDRATION_WARNING] !== true) {\n            checkForUnmatchedText(domElement.textContent, nextProp, isConcurrentMode, shouldWarnDev);\n          }\n\n          updatePayload = [CHILDREN, '' + nextProp];\n        }\n      }\n    } else if (registrationNameDependencies.hasOwnProperty(propKey)) {\n      if (nextProp != null) {\n        if ( typeof nextProp !== 'function') {\n          warnForInvalidEventListener(propKey, nextProp);\n        }\n\n        if (propKey === 'onScroll') {\n          listenToNonDelegatedEvent('scroll', domElement);\n        }\n      }\n    } else if (shouldWarnDev && true && // Convince Flow we've calculated it (it's DEV-only in this method.)\n    typeof isCustomComponentTag === 'boolean') {\n      // Validate that the properties correspond to their expected values.\n      var serverValue = void 0;\n      var propertyInfo = isCustomComponentTag && enableCustomElementPropertySupport ? null : getPropertyInfo(propKey);\n\n      if (rawProps[SUPPRESS_HYDRATION_WARNING] === true) ; else if (propKey === SUPPRESS_CONTENT_EDITABLE_WARNING || propKey === SUPPRESS_HYDRATION_WARNING || // Controlled attributes are not validated\n      // TODO: Only ignore them on controlled tags.\n      propKey === 'value' || propKey === 'checked' || propKey === 'selected') ; else if (propKey === DANGEROUSLY_SET_INNER_HTML) {\n        var serverHTML = domElement.innerHTML;\n        var nextHtml = nextProp ? nextProp[HTML$1] : undefined;\n\n        if (nextHtml != null) {\n          var expectedHTML = normalizeHTML(domElement, nextHtml);\n\n          if (expectedHTML !== serverHTML) {\n            warnForPropDifference(propKey, serverHTML, expectedHTML);\n          }\n        }\n      } else if (propKey === STYLE) {\n        // $FlowFixMe - Should be inferred as not undefined.\n        extraAttributeNames.delete(propKey);\n\n        if (canDiffStyleForHydrationWarning) {\n          var expectedStyle = createDangerousStringForStyles(nextProp);\n          serverValue = domElement.getAttribute('style');\n\n          if (expectedStyle !== serverValue) {\n            warnForPropDifference(propKey, serverValue, expectedStyle);\n          }\n        }\n      } else if (isCustomComponentTag && !enableCustomElementPropertySupport) {\n        // $FlowFixMe - Should be inferred as not undefined.\n        extraAttributeNames.delete(propKey.toLowerCase());\n        serverValue = getValueForAttribute(domElement, propKey, nextProp);\n\n        if (nextProp !== serverValue) {\n          warnForPropDifference(propKey, serverValue, nextProp);\n        }\n      } else if (!shouldIgnoreAttribute(propKey, propertyInfo, isCustomComponentTag) && !shouldRemoveAttribute(propKey, nextProp, propertyInfo, isCustomComponentTag)) {\n        var isMismatchDueToBadCasing = false;\n\n        if (propertyInfo !== null) {\n          // $FlowFixMe - Should be inferred as not undefined.\n          extraAttributeNames.delete(propertyInfo.attributeName);\n          serverValue = getValueForProperty(domElement, propKey, nextProp, propertyInfo);\n        } else {\n          var ownNamespace = parentNamespace;\n\n          if (ownNamespace === HTML_NAMESPACE) {\n            ownNamespace = getIntrinsicNamespace(tag);\n          }\n\n          if (ownNamespace === HTML_NAMESPACE) {\n            // $FlowFixMe - Should be inferred as not undefined.\n            extraAttributeNames.delete(propKey.toLowerCase());\n          } else {\n            var standardName = getPossibleStandardName(propKey);\n\n            if (standardName !== null && standardName !== propKey) {\n              // If an SVG prop is supplied with bad casing, it will\n              // be successfully parsed from HTML, but will produce a mismatch\n              // (and would be incorrectly rendered on the client).\n              // However, we already warn about bad casing elsewhere.\n              // So we'll skip the misleading extra mismatch warning in this case.\n              isMismatchDueToBadCasing = true; // $FlowFixMe - Should be inferred as not undefined.\n\n              extraAttributeNames.delete(standardName);\n            } // $FlowFixMe - Should be inferred as not undefined.\n\n\n            extraAttributeNames.delete(propKey);\n          }\n\n          serverValue = getValueForAttribute(domElement, propKey, nextProp);\n        }\n\n        var dontWarnCustomElement = enableCustomElementPropertySupport  ;\n\n        if (!dontWarnCustomElement && nextProp !== serverValue && !isMismatchDueToBadCasing) {\n          warnForPropDifference(propKey, serverValue, nextProp);\n        }\n      }\n    }\n  }\n\n  {\n    if (shouldWarnDev) {\n      if ( // $FlowFixMe - Should be inferred as not undefined.\n      extraAttributeNames.size > 0 && rawProps[SUPPRESS_HYDRATION_WARNING] !== true) {\n        // $FlowFixMe - Should be inferred as not undefined.\n        warnForExtraAttributes(extraAttributeNames);\n      }\n    }\n  }\n\n  switch (tag) {\n    case 'input':\n      // TODO: Make sure we check if this is still unmounted or do any clean\n      // up necessary since we never stop tracking anymore.\n      track(domElement);\n      postMountWrapper(domElement, rawProps, true);\n      break;\n\n    case 'textarea':\n      // TODO: Make sure we check if this is still unmounted or do any clean\n      // up necessary since we never stop tracking anymore.\n      track(domElement);\n      postMountWrapper$3(domElement);\n      break;\n\n    case 'select':\n    case 'option':\n      // For input and textarea we current always set the value property at\n      // post mount to force it to diverge from attributes. However, for\n      // option and select we don't quite do the same thing and select\n      // is not resilient to the DOM state changing so we don't do that here.\n      // TODO: Consider not doing this for input and textarea.\n      break;\n\n    default:\n      if (typeof rawProps.onClick === 'function') {\n        // TODO: This cast may not be sound for SVG, MathML or custom elements.\n        trapClickOnNonInteractiveElement(domElement);\n      }\n\n      break;\n  }\n\n  return updatePayload;\n}\nfunction diffHydratedText(textNode, text, isConcurrentMode) {\n  var isDifferent = textNode.nodeValue !== text;\n  return isDifferent;\n}\nfunction warnForDeletedHydratableElement(parentNode, child) {\n  {\n    if (didWarnInvalidHydration) {\n      return;\n    }\n\n    didWarnInvalidHydration = true;\n\n    error('Did not expect server HTML to contain a <%s> in <%s>.', child.nodeName.toLowerCase(), parentNode.nodeName.toLowerCase());\n  }\n}\nfunction warnForDeletedHydratableText(parentNode, child) {\n  {\n    if (didWarnInvalidHydration) {\n      return;\n    }\n\n    didWarnInvalidHydration = true;\n\n    error('Did not expect server HTML to contain the text node \"%s\" in <%s>.', child.nodeValue, parentNode.nodeName.toLowerCase());\n  }\n}\nfunction warnForInsertedHydratedElement(parentNode, tag, props) {\n  {\n    if (didWarnInvalidHydration) {\n      return;\n    }\n\n    didWarnInvalidHydration = true;\n\n    error('Expected server HTML to contain a matching <%s> in <%s>.', tag, parentNode.nodeName.toLowerCase());\n  }\n}\nfunction warnForInsertedHydratedText(parentNode, text) {\n  {\n    if (text === '') {\n      // We expect to insert empty text nodes since they're not represented in\n      // the HTML.\n      // TODO: Remove this special case if we can just avoid inserting empty\n      // text nodes.\n      return;\n    }\n\n    if (didWarnInvalidHydration) {\n      return;\n    }\n\n    didWarnInvalidHydration = true;\n\n    error('Expected server HTML to contain a matching text node for \"%s\" in <%s>.', text, parentNode.nodeName.toLowerCase());\n  }\n}\nfunction restoreControlledState$3(domElement, tag, props) {\n  switch (tag) {\n    case 'input':\n      restoreControlledState(domElement, props);\n      return;\n\n    case 'textarea':\n      restoreControlledState$2(domElement, props);\n      return;\n\n    case 'select':\n      restoreControlledState$1(domElement, props);\n      return;\n  }\n}\n\nvar validateDOMNesting = function () {};\n\nvar updatedAncestorInfo = function () {};\n\n{\n  // This validation code was written based on the HTML5 parsing spec:\n  // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-scope\n  //\n  // Note: this does not catch all invalid nesting, nor does it try to (as it's\n  // not clear what practical benefit doing so provides); instead, we warn only\n  // for cases where the parser will give a parse tree differing from what React\n  // intended. For example, <b><div></div></b> is invalid but we don't warn\n  // because it still parses correctly; we do warn for other cases like nested\n  // <p> tags where the beginning of the second element implicitly closes the\n  // first, causing a confusing mess.\n  // https://html.spec.whatwg.org/multipage/syntax.html#special\n  var specialTags = ['address', 'applet', 'area', 'article', 'aside', 'base', 'basefont', 'bgsound', 'blockquote', 'body', 'br', 'button', 'caption', 'center', 'col', 'colgroup', 'dd', 'details', 'dir', 'div', 'dl', 'dt', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'frame', 'frameset', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'iframe', 'img', 'input', 'isindex', 'li', 'link', 'listing', 'main', 'marquee', 'menu', 'menuitem', 'meta', 'nav', 'noembed', 'noframes', 'noscript', 'object', 'ol', 'p', 'param', 'plaintext', 'pre', 'script', 'section', 'select', 'source', 'style', 'summary', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'title', 'tr', 'track', 'ul', 'wbr', 'xmp']; // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-scope\n\n  var inScopeTags = ['applet', 'caption', 'html', 'table', 'td', 'th', 'marquee', 'object', 'template', // https://html.spec.whatwg.org/multipage/syntax.html#html-integration-point\n  // TODO: Distinguish by namespace here -- for <title>, including it here\n  // errs on the side of fewer warnings\n  'foreignObject', 'desc', 'title']; // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-button-scope\n\n  var buttonScopeTags = inScopeTags.concat(['button']); // https://html.spec.whatwg.org/multipage/syntax.html#generate-implied-end-tags\n\n  var impliedEndTags = ['dd', 'dt', 'li', 'option', 'optgroup', 'p', 'rp', 'rt'];\n  var emptyAncestorInfo = {\n    current: null,\n    formTag: null,\n    aTagInScope: null,\n    buttonTagInScope: null,\n    nobrTagInScope: null,\n    pTagInButtonScope: null,\n    listItemTagAutoclosing: null,\n    dlItemTagAutoclosing: null\n  };\n\n  updatedAncestorInfo = function (oldInfo, tag) {\n    var ancestorInfo = assign({}, oldInfo || emptyAncestorInfo);\n\n    var info = {\n      tag: tag\n    };\n\n    if (inScopeTags.indexOf(tag) !== -1) {\n      ancestorInfo.aTagInScope = null;\n      ancestorInfo.buttonTagInScope = null;\n      ancestorInfo.nobrTagInScope = null;\n    }\n\n    if (buttonScopeTags.indexOf(tag) !== -1) {\n      ancestorInfo.pTagInButtonScope = null;\n    } // See rules for 'li', 'dd', 'dt' start tags in\n    // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inbody\n\n\n    if (specialTags.indexOf(tag) !== -1 && tag !== 'address' && tag !== 'div' && tag !== 'p') {\n      ancestorInfo.listItemTagAutoclosing = null;\n      ancestorInfo.dlItemTagAutoclosing = null;\n    }\n\n    ancestorInfo.current = info;\n\n    if (tag === 'form') {\n      ancestorInfo.formTag = info;\n    }\n\n    if (tag === 'a') {\n      ancestorInfo.aTagInScope = info;\n    }\n\n    if (tag === 'button') {\n      ancestorInfo.buttonTagInScope = info;\n    }\n\n    if (tag === 'nobr') {\n      ancestorInfo.nobrTagInScope = info;\n    }\n\n    if (tag === 'p') {\n      ancestorInfo.pTagInButtonScope = info;\n    }\n\n    if (tag === 'li') {\n      ancestorInfo.listItemTagAutoclosing = info;\n    }\n\n    if (tag === 'dd' || tag === 'dt') {\n      ancestorInfo.dlItemTagAutoclosing = info;\n    }\n\n    return ancestorInfo;\n  };\n  /**\n   * Returns whether\n   */\n\n\n  var isTagValidWithParent = function (tag, parentTag) {\n    // First, let's check if we're in an unusual parsing mode...\n    switch (parentTag) {\n      // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inselect\n      case 'select':\n        return tag === 'option' || tag === 'optgroup' || tag === '#text';\n\n      case 'optgroup':\n        return tag === 'option' || tag === '#text';\n      // Strictly speaking, seeing an <option> doesn't mean we're in a <select>\n      // but\n\n      case 'option':\n        return tag === '#text';\n      // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intd\n      // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-incaption\n      // No special behavior since these rules fall back to \"in body\" mode for\n      // all except special table nodes which cause bad parsing behavior anyway.\n      // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intr\n\n      case 'tr':\n        return tag === 'th' || tag === 'td' || tag === 'style' || tag === 'script' || tag === 'template';\n      // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intbody\n\n      case 'tbody':\n      case 'thead':\n      case 'tfoot':\n        return tag === 'tr' || tag === 'style' || tag === 'script' || tag === 'template';\n      // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-incolgroup\n\n      case 'colgroup':\n        return tag === 'col' || tag === 'template';\n      // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intable\n\n      case 'table':\n        return tag === 'caption' || tag === 'colgroup' || tag === 'tbody' || tag === 'tfoot' || tag === 'thead' || tag === 'style' || tag === 'script' || tag === 'template';\n      // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inhead\n\n      case 'head':\n        return tag === 'base' || tag === 'basefont' || tag === 'bgsound' || tag === 'link' || tag === 'meta' || tag === 'title' || tag === 'noscript' || tag === 'noframes' || tag === 'style' || tag === 'script' || tag === 'template';\n      // https://html.spec.whatwg.org/multipage/semantics.html#the-html-element\n\n      case 'html':\n        return tag === 'head' || tag === 'body' || tag === 'frameset';\n\n      case 'frameset':\n        return tag === 'frame';\n\n      case '#document':\n        return tag === 'html';\n    } // Probably in the \"in body\" parsing mode, so we outlaw only tag combos\n    // where the parsing rules cause implicit opens or closes to be added.\n    // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inbody\n\n\n    switch (tag) {\n      case 'h1':\n      case 'h2':\n      case 'h3':\n      case 'h4':\n      case 'h5':\n      case 'h6':\n        return parentTag !== 'h1' && parentTag !== 'h2' && parentTag !== 'h3' && parentTag !== 'h4' && parentTag !== 'h5' && parentTag !== 'h6';\n\n      case 'rp':\n      case 'rt':\n        return impliedEndTags.indexOf(parentTag) === -1;\n\n      case 'body':\n      case 'caption':\n      case 'col':\n      case 'colgroup':\n      case 'frameset':\n      case 'frame':\n      case 'head':\n      case 'html':\n      case 'tbody':\n      case 'td':\n      case 'tfoot':\n      case 'th':\n      case 'thead':\n      case 'tr':\n        // These tags are only valid with a few parents that have special child\n        // parsing rules -- if we're down here, then none of those matched and\n        // so we allow it only if we don't know what the parent is, as all other\n        // cases are invalid.\n        return parentTag == null;\n    }\n\n    return true;\n  };\n  /**\n   * Returns whether\n   */\n\n\n  var findInvalidAncestorForTag = function (tag, ancestorInfo) {\n    switch (tag) {\n      case 'address':\n      case 'article':\n      case 'aside':\n      case 'blockquote':\n      case 'center':\n      case 'details':\n      case 'dialog':\n      case 'dir':\n      case 'div':\n      case 'dl':\n      case 'fieldset':\n      case 'figcaption':\n      case 'figure':\n      case 'footer':\n      case 'header':\n      case 'hgroup':\n      case 'main':\n      case 'menu':\n      case 'nav':\n      case 'ol':\n      case 'p':\n      case 'section':\n      case 'summary':\n      case 'ul':\n      case 'pre':\n      case 'listing':\n      case 'table':\n      case 'hr':\n      case 'xmp':\n      case 'h1':\n      case 'h2':\n      case 'h3':\n      case 'h4':\n      case 'h5':\n      case 'h6':\n        return ancestorInfo.pTagInButtonScope;\n\n      case 'form':\n        return ancestorInfo.formTag || ancestorInfo.pTagInButtonScope;\n\n      case 'li':\n        return ancestorInfo.listItemTagAutoclosing;\n\n      case 'dd':\n      case 'dt':\n        return ancestorInfo.dlItemTagAutoclosing;\n\n      case 'button':\n        return ancestorInfo.buttonTagInScope;\n\n      case 'a':\n        // Spec says something about storing a list of markers, but it sounds\n        // equivalent to this check.\n        return ancestorInfo.aTagInScope;\n\n      case 'nobr':\n        return ancestorInfo.nobrTagInScope;\n    }\n\n    return null;\n  };\n\n  var didWarn$1 = {};\n\n  validateDOMNesting = function (childTag, childText, ancestorInfo) {\n    ancestorInfo = ancestorInfo || emptyAncestorInfo;\n    var parentInfo = ancestorInfo.current;\n    var parentTag = parentInfo && parentInfo.tag;\n\n    if (childText != null) {\n      if (childTag != null) {\n        error('validateDOMNesting: when childText is passed, childTag should be null');\n      }\n\n      childTag = '#text';\n    }\n\n    var invalidParent = isTagValidWithParent(childTag, parentTag) ? null : parentInfo;\n    var invalidAncestor = invalidParent ? null : findInvalidAncestorForTag(childTag, ancestorInfo);\n    var invalidParentOrAncestor = invalidParent || invalidAncestor;\n\n    if (!invalidParentOrAncestor) {\n      return;\n    }\n\n    var ancestorTag = invalidParentOrAncestor.tag;\n    var warnKey = !!invalidParent + '|' + childTag + '|' + ancestorTag;\n\n    if (didWarn$1[warnKey]) {\n      return;\n    }\n\n    didWarn$1[warnKey] = true;\n    var tagDisplayName = childTag;\n    var whitespaceInfo = '';\n\n    if (childTag === '#text') {\n      if (/\\S/.test(childText)) {\n        tagDisplayName = 'Text nodes';\n      } else {\n        tagDisplayName = 'Whitespace text nodes';\n        whitespaceInfo = \" Make sure you don't have any extra whitespace between tags on \" + 'each line of your source code.';\n      }\n    } else {\n      tagDisplayName = '<' + childTag + '>';\n    }\n\n    if (invalidParent) {\n      var info = '';\n\n      if (ancestorTag === 'table' && childTag === 'tr') {\n        info += ' Add a <tbody>, <thead> or <tfoot> to your code to match the DOM tree generated by ' + 'the browser.';\n      }\n\n      error('validateDOMNesting(...): %s cannot appear as a child of <%s>.%s%s', tagDisplayName, ancestorTag, whitespaceInfo, info);\n    } else {\n      error('validateDOMNesting(...): %s cannot appear as a descendant of ' + '<%s>.', tagDisplayName, ancestorTag);\n    }\n  };\n}\n\nvar SUPPRESS_HYDRATION_WARNING$1 = 'suppressHydrationWarning';\nvar SUSPENSE_START_DATA = '$';\nvar SUSPENSE_END_DATA = '/$';\nvar SUSPENSE_PENDING_START_DATA = '$?';\nvar SUSPENSE_FALLBACK_START_DATA = '$!';\nvar STYLE$1 = 'style';\nvar eventsEnabled = null;\nvar selectionInformation = null;\nfunction getRootHostContext(rootContainerInstance) {\n  var type;\n  var namespace;\n  var nodeType = rootContainerInstance.nodeType;\n\n  switch (nodeType) {\n    case DOCUMENT_NODE:\n    case DOCUMENT_FRAGMENT_NODE:\n      {\n        type = nodeType === DOCUMENT_NODE ? '#document' : '#fragment';\n        var root = rootContainerInstance.documentElement;\n        namespace = root ? root.namespaceURI : getChildNamespace(null, '');\n        break;\n      }\n\n    default:\n      {\n        var container = nodeType === COMMENT_NODE ? rootContainerInstance.parentNode : rootContainerInstance;\n        var ownNamespace = container.namespaceURI || null;\n        type = container.tagName;\n        namespace = getChildNamespace(ownNamespace, type);\n        break;\n      }\n  }\n\n  {\n    var validatedTag = type.toLowerCase();\n    var ancestorInfo = updatedAncestorInfo(null, validatedTag);\n    return {\n      namespace: namespace,\n      ancestorInfo: ancestorInfo\n    };\n  }\n}\nfunction getChildHostContext(parentHostContext, type, rootContainerInstance) {\n  {\n    var parentHostContextDev = parentHostContext;\n    var namespace = getChildNamespace(parentHostContextDev.namespace, type);\n    var ancestorInfo = updatedAncestorInfo(parentHostContextDev.ancestorInfo, type);\n    return {\n      namespace: namespace,\n      ancestorInfo: ancestorInfo\n    };\n  }\n}\nfunction getPublicInstance(instance) {\n  return instance;\n}\nfunction prepareForCommit(containerInfo) {\n  eventsEnabled = isEnabled();\n  selectionInformation = getSelectionInformation();\n  var activeInstance = null;\n\n  setEnabled(false);\n  return activeInstance;\n}\nfunction resetAfterCommit(containerInfo) {\n  restoreSelection(selectionInformation);\n  setEnabled(eventsEnabled);\n  eventsEnabled = null;\n  selectionInformation = null;\n}\nfunction createInstance(type, props, rootContainerInstance, hostContext, internalInstanceHandle) {\n  var parentNamespace;\n\n  {\n    // TODO: take namespace into account when validating.\n    var hostContextDev = hostContext;\n    validateDOMNesting(type, null, hostContextDev.ancestorInfo);\n\n    if (typeof props.children === 'string' || typeof props.children === 'number') {\n      var string = '' + props.children;\n      var ownAncestorInfo = updatedAncestorInfo(hostContextDev.ancestorInfo, type);\n      validateDOMNesting(null, string, ownAncestorInfo);\n    }\n\n    parentNamespace = hostContextDev.namespace;\n  }\n\n  var domElement = createElement(type, props, rootContainerInstance, parentNamespace);\n  precacheFiberNode(internalInstanceHandle, domElement);\n  updateFiberProps(domElement, props);\n  return domElement;\n}\nfunction appendInitialChild(parentInstance, child) {\n  parentInstance.appendChild(child);\n}\nfunction finalizeInitialChildren(domElement, type, props, rootContainerInstance, hostContext) {\n  setInitialProperties(domElement, type, props, rootContainerInstance);\n\n  switch (type) {\n    case 'button':\n    case 'input':\n    case 'select':\n    case 'textarea':\n      return !!props.autoFocus;\n\n    case 'img':\n      return true;\n\n    default:\n      return false;\n  }\n}\nfunction prepareUpdate(domElement, type, oldProps, newProps, rootContainerInstance, hostContext) {\n  {\n    var hostContextDev = hostContext;\n\n    if (typeof newProps.children !== typeof oldProps.children && (typeof newProps.children === 'string' || typeof newProps.children === 'number')) {\n      var string = '' + newProps.children;\n      var ownAncestorInfo = updatedAncestorInfo(hostContextDev.ancestorInfo, type);\n      validateDOMNesting(null, string, ownAncestorInfo);\n    }\n  }\n\n  return diffProperties(domElement, type, oldProps, newProps);\n}\nfunction shouldSetTextContent(type, props) {\n  return type === 'textarea' || type === 'noscript' || typeof props.children === 'string' || typeof props.children === 'number' || typeof props.dangerouslySetInnerHTML === 'object' && props.dangerouslySetInnerHTML !== null && props.dangerouslySetInnerHTML.__html != null;\n}\nfunction createTextInstance(text, rootContainerInstance, hostContext, internalInstanceHandle) {\n  {\n    var hostContextDev = hostContext;\n    validateDOMNesting(null, text, hostContextDev.ancestorInfo);\n  }\n\n  var textNode = createTextNode(text, rootContainerInstance);\n  precacheFiberNode(internalInstanceHandle, textNode);\n  return textNode;\n}\nfunction getCurrentEventPriority() {\n  var currentEvent = window.event;\n\n  if (currentEvent === undefined) {\n    return DefaultEventPriority;\n  }\n\n  return getEventPriority(currentEvent.type);\n}\n// if a component just imports ReactDOM (e.g. for findDOMNode).\n// Some environments might not have setTimeout or clearTimeout.\n\nvar scheduleTimeout = typeof setTimeout === 'function' ? setTimeout : undefined;\nvar cancelTimeout = typeof clearTimeout === 'function' ? clearTimeout : undefined;\nvar noTimeout = -1;\nvar localPromise = typeof Promise === 'function' ? Promise : undefined; // -------------------\nvar scheduleMicrotask = typeof queueMicrotask === 'function' ? queueMicrotask : typeof localPromise !== 'undefined' ? function (callback) {\n  return localPromise.resolve(null).then(callback).catch(handleErrorInNextTick);\n} : scheduleTimeout; // TODO: Determine the best fallback here.\n\nfunction handleErrorInNextTick(error) {\n  setTimeout(function () {\n    throw error;\n  });\n} // -------------------\nfunction commitMount(domElement, type, newProps, internalInstanceHandle) {\n  // Despite the naming that might imply otherwise, this method only\n  // fires if there is an `Update` effect scheduled during mounting.\n  // This happens if `finalizeInitialChildren` returns `true` (which it\n  // does to implement the `autoFocus` attribute on the client). But\n  // there are also other cases when this might happen (such as patching\n  // up text content during hydration mismatch). So we'll check this again.\n  switch (type) {\n    case 'button':\n    case 'input':\n    case 'select':\n    case 'textarea':\n      if (newProps.autoFocus) {\n        domElement.focus();\n      }\n\n      return;\n\n    case 'img':\n      {\n        if (newProps.src) {\n          domElement.src = newProps.src;\n        }\n\n        return;\n      }\n  }\n}\nfunction commitUpdate(domElement, updatePayload, type, oldProps, newProps, internalInstanceHandle) {\n  // Apply the diff to the DOM node.\n  updateProperties(domElement, updatePayload, type, oldProps, newProps); // Update the props handle so that we know which props are the ones with\n  // with current event handlers.\n\n  updateFiberProps(domElement, newProps);\n}\nfunction resetTextContent(domElement) {\n  setTextContent(domElement, '');\n}\nfunction commitTextUpdate(textInstance, oldText, newText) {\n  textInstance.nodeValue = newText;\n}\nfunction appendChild(parentInstance, child) {\n  parentInstance.appendChild(child);\n}\nfunction appendChildToContainer(container, child) {\n  var parentNode;\n\n  if (container.nodeType === COMMENT_NODE) {\n    parentNode = container.parentNode;\n    parentNode.insertBefore(child, container);\n  } else {\n    parentNode = container;\n    parentNode.appendChild(child);\n  } // This container might be used for a portal.\n  // If something inside a portal is clicked, that click should bubble\n  // through the React tree. However, on Mobile Safari the click would\n  // never bubble through the *DOM* tree unless an ancestor with onclick\n  // event exists. So we wouldn't see it and dispatch it.\n  // This is why we ensure that non React root containers have inline onclick\n  // defined.\n  // https://github.com/facebook/react/issues/11918\n\n\n  var reactRootContainer = container._reactRootContainer;\n\n  if ((reactRootContainer === null || reactRootContainer === undefined) && parentNode.onclick === null) {\n    // TODO: This cast may not be sound for SVG, MathML or custom elements.\n    trapClickOnNonInteractiveElement(parentNode);\n  }\n}\nfunction insertBefore(parentInstance, child, beforeChild) {\n  parentInstance.insertBefore(child, beforeChild);\n}\nfunction insertInContainerBefore(container, child, beforeChild) {\n  if (container.nodeType === COMMENT_NODE) {\n    container.parentNode.insertBefore(child, beforeChild);\n  } else {\n    container.insertBefore(child, beforeChild);\n  }\n}\n\nfunction removeChild(parentInstance, child) {\n  parentInstance.removeChild(child);\n}\nfunction removeChildFromContainer(container, child) {\n  if (container.nodeType === COMMENT_NODE) {\n    container.parentNode.removeChild(child);\n  } else {\n    container.removeChild(child);\n  }\n}\nfunction clearSuspenseBoundary(parentInstance, suspenseInstance) {\n  var node = suspenseInstance; // Delete all nodes within this suspense boundary.\n  // There might be nested nodes so we need to keep track of how\n  // deep we are and only break out when we're back on top.\n\n  var depth = 0;\n\n  do {\n    var nextNode = node.nextSibling;\n    parentInstance.removeChild(node);\n\n    if (nextNode && nextNode.nodeType === COMMENT_NODE) {\n      var data = nextNode.data;\n\n      if (data === SUSPENSE_END_DATA) {\n        if (depth === 0) {\n          parentInstance.removeChild(nextNode); // Retry if any event replaying was blocked on this.\n\n          retryIfBlockedOn(suspenseInstance);\n          return;\n        } else {\n          depth--;\n        }\n      } else if (data === SUSPENSE_START_DATA || data === SUSPENSE_PENDING_START_DATA || data === SUSPENSE_FALLBACK_START_DATA) {\n        depth++;\n      }\n    }\n\n    node = nextNode;\n  } while (node); // TODO: Warn, we didn't find the end comment boundary.\n  // Retry if any event replaying was blocked on this.\n\n\n  retryIfBlockedOn(suspenseInstance);\n}\nfunction clearSuspenseBoundaryFromContainer(container, suspenseInstance) {\n  if (container.nodeType === COMMENT_NODE) {\n    clearSuspenseBoundary(container.parentNode, suspenseInstance);\n  } else if (container.nodeType === ELEMENT_NODE) {\n    clearSuspenseBoundary(container, suspenseInstance);\n  } // Retry if any event replaying was blocked on this.\n\n\n  retryIfBlockedOn(container);\n}\nfunction hideInstance(instance) {\n  // TODO: Does this work for all element types? What about MathML? Should we\n  // pass host context to this method?\n  instance = instance;\n  var style = instance.style;\n\n  if (typeof style.setProperty === 'function') {\n    style.setProperty('display', 'none', 'important');\n  } else {\n    style.display = 'none';\n  }\n}\nfunction hideTextInstance(textInstance) {\n  textInstance.nodeValue = '';\n}\nfunction unhideInstance(instance, props) {\n  instance = instance;\n  var styleProp = props[STYLE$1];\n  var display = styleProp !== undefined && styleProp !== null && styleProp.hasOwnProperty('display') ? styleProp.display : null;\n  instance.style.display = dangerousStyleValue('display', display);\n}\nfunction unhideTextInstance(textInstance, text) {\n  textInstance.nodeValue = text;\n}\nfunction clearContainer(container) {\n  if (container.nodeType === ELEMENT_NODE) {\n    container.textContent = '';\n  } else if (container.nodeType === DOCUMENT_NODE) {\n    if (container.documentElement) {\n      container.removeChild(container.documentElement);\n    }\n  }\n} // -------------------\nfunction canHydrateInstance(instance, type, props) {\n  if (instance.nodeType !== ELEMENT_NODE || type.toLowerCase() !== instance.nodeName.toLowerCase()) {\n    return null;\n  } // This has now been refined to an element node.\n\n\n  return instance;\n}\nfunction canHydrateTextInstance(instance, text) {\n  if (text === '' || instance.nodeType !== TEXT_NODE) {\n    // Empty strings are not parsed by HTML so there won't be a correct match here.\n    return null;\n  } // This has now been refined to a text node.\n\n\n  return instance;\n}\nfunction canHydrateSuspenseInstance(instance) {\n  if (instance.nodeType !== COMMENT_NODE) {\n    // Empty strings are not parsed by HTML so there won't be a correct match here.\n    return null;\n  } // This has now been refined to a suspense node.\n\n\n  return instance;\n}\nfunction isSuspenseInstancePending(instance) {\n  return instance.data === SUSPENSE_PENDING_START_DATA;\n}\nfunction isSuspenseInstanceFallback(instance) {\n  return instance.data === SUSPENSE_FALLBACK_START_DATA;\n}\nfunction getSuspenseInstanceFallbackErrorDetails(instance) {\n  var dataset = instance.nextSibling && instance.nextSibling.dataset;\n  var digest, message, stack;\n\n  if (dataset) {\n    digest = dataset.dgst;\n\n    {\n      message = dataset.msg;\n      stack = dataset.stck;\n    }\n  }\n\n  {\n    return {\n      message: message,\n      digest: digest,\n      stack: stack\n    };\n  } // let value = {message: undefined, hash: undefined};\n  // const nextSibling = instance.nextSibling;\n  // if (nextSibling) {\n  //   const dataset = ((nextSibling: any): HTMLTemplateElement).dataset;\n  //   value.message = dataset.msg;\n  //   value.hash = dataset.hash;\n  //   if (true) {\n  //     value.stack = dataset.stack;\n  //   }\n  // }\n  // return value;\n\n}\nfunction registerSuspenseInstanceRetry(instance, callback) {\n  instance._reactRetry = callback;\n}\n\nfunction getNextHydratable(node) {\n  // Skip non-hydratable nodes.\n  for (; node != null; node = node.nextSibling) {\n    var nodeType = node.nodeType;\n\n    if (nodeType === ELEMENT_NODE || nodeType === TEXT_NODE) {\n      break;\n    }\n\n    if (nodeType === COMMENT_NODE) {\n      var nodeData = node.data;\n\n      if (nodeData === SUSPENSE_START_DATA || nodeData === SUSPENSE_FALLBACK_START_DATA || nodeData === SUSPENSE_PENDING_START_DATA) {\n        break;\n      }\n\n      if (nodeData === SUSPENSE_END_DATA) {\n        return null;\n      }\n    }\n  }\n\n  return node;\n}\n\nfunction getNextHydratableSibling(instance) {\n  return getNextHydratable(instance.nextSibling);\n}\nfunction getFirstHydratableChild(parentInstance) {\n  return getNextHydratable(parentInstance.firstChild);\n}\nfunction getFirstHydratableChildWithinContainer(parentContainer) {\n  return getNextHydratable(parentContainer.firstChild);\n}\nfunction getFirstHydratableChildWithinSuspenseInstance(parentInstance) {\n  return getNextHydratable(parentInstance.nextSibling);\n}\nfunction hydrateInstance(instance, type, props, rootContainerInstance, hostContext, internalInstanceHandle, shouldWarnDev) {\n  precacheFiberNode(internalInstanceHandle, instance); // TODO: Possibly defer this until the commit phase where all the events\n  // get attached.\n\n  updateFiberProps(instance, props);\n  var parentNamespace;\n\n  {\n    var hostContextDev = hostContext;\n    parentNamespace = hostContextDev.namespace;\n  } // TODO: Temporary hack to check if we're in a concurrent root. We can delete\n  // when the legacy root API is removed.\n\n\n  var isConcurrentMode = (internalInstanceHandle.mode & ConcurrentMode) !== NoMode;\n  return diffHydratedProperties(instance, type, props, parentNamespace, rootContainerInstance, isConcurrentMode, shouldWarnDev);\n}\nfunction hydrateTextInstance(textInstance, text, internalInstanceHandle, shouldWarnDev) {\n  precacheFiberNode(internalInstanceHandle, textInstance); // TODO: Temporary hack to check if we're in a concurrent root. We can delete\n  // when the legacy root API is removed.\n\n  var isConcurrentMode = (internalInstanceHandle.mode & ConcurrentMode) !== NoMode;\n  return diffHydratedText(textInstance, text);\n}\nfunction hydrateSuspenseInstance(suspenseInstance, internalInstanceHandle) {\n  precacheFiberNode(internalInstanceHandle, suspenseInstance);\n}\nfunction getNextHydratableInstanceAfterSuspenseInstance(suspenseInstance) {\n  var node = suspenseInstance.nextSibling; // Skip past all nodes within this suspense boundary.\n  // There might be nested nodes so we need to keep track of how\n  // deep we are and only break out when we're back on top.\n\n  var depth = 0;\n\n  while (node) {\n    if (node.nodeType === COMMENT_NODE) {\n      var data = node.data;\n\n      if (data === SUSPENSE_END_DATA) {\n        if (depth === 0) {\n          return getNextHydratableSibling(node);\n        } else {\n          depth--;\n        }\n      } else if (data === SUSPENSE_START_DATA || data === SUSPENSE_FALLBACK_START_DATA || data === SUSPENSE_PENDING_START_DATA) {\n        depth++;\n      }\n    }\n\n    node = node.nextSibling;\n  } // TODO: Warn, we didn't find the end comment boundary.\n\n\n  return null;\n} // Returns the SuspenseInstance if this node is a direct child of a\n// SuspenseInstance. I.e. if its previous sibling is a Comment with\n// SUSPENSE_x_START_DATA. Otherwise, null.\n\nfunction getParentSuspenseInstance(targetInstance) {\n  var node = targetInstance.previousSibling; // Skip past all nodes within this suspense boundary.\n  // There might be nested nodes so we need to keep track of how\n  // deep we are and only break out when we're back on top.\n\n  var depth = 0;\n\n  while (node) {\n    if (node.nodeType === COMMENT_NODE) {\n      var data = node.data;\n\n      if (data === SUSPENSE_START_DATA || data === SUSPENSE_FALLBACK_START_DATA || data === SUSPENSE_PENDING_START_DATA) {\n        if (depth === 0) {\n          return node;\n        } else {\n          depth--;\n        }\n      } else if (data === SUSPENSE_END_DATA) {\n        depth++;\n      }\n    }\n\n    node = node.previousSibling;\n  }\n\n  return null;\n}\nfunction commitHydratedContainer(container) {\n  // Retry if any event replaying was blocked on this.\n  retryIfBlockedOn(container);\n}\nfunction commitHydratedSuspenseInstance(suspenseInstance) {\n  // Retry if any event replaying was blocked on this.\n  retryIfBlockedOn(suspenseInstance);\n}\nfunction shouldDeleteUnhydratedTailInstances(parentType) {\n  return parentType !== 'head' && parentType !== 'body';\n}\nfunction didNotMatchHydratedContainerTextInstance(parentContainer, textInstance, text, isConcurrentMode) {\n  var shouldWarnDev = true;\n  checkForUnmatchedText(textInstance.nodeValue, text, isConcurrentMode, shouldWarnDev);\n}\nfunction didNotMatchHydratedTextInstance(parentType, parentProps, parentInstance, textInstance, text, isConcurrentMode) {\n  if (parentProps[SUPPRESS_HYDRATION_WARNING$1] !== true) {\n    var shouldWarnDev = true;\n    checkForUnmatchedText(textInstance.nodeValue, text, isConcurrentMode, shouldWarnDev);\n  }\n}\nfunction didNotHydrateInstanceWithinContainer(parentContainer, instance) {\n  {\n    if (instance.nodeType === ELEMENT_NODE) {\n      warnForDeletedHydratableElement(parentContainer, instance);\n    } else if (instance.nodeType === COMMENT_NODE) ; else {\n      warnForDeletedHydratableText(parentContainer, instance);\n    }\n  }\n}\nfunction didNotHydrateInstanceWithinSuspenseInstance(parentInstance, instance) {\n  {\n    // $FlowFixMe: Only Element or Document can be parent nodes.\n    var parentNode = parentInstance.parentNode;\n\n    if (parentNode !== null) {\n      if (instance.nodeType === ELEMENT_NODE) {\n        warnForDeletedHydratableElement(parentNode, instance);\n      } else if (instance.nodeType === COMMENT_NODE) ; else {\n        warnForDeletedHydratableText(parentNode, instance);\n      }\n    }\n  }\n}\nfunction didNotHydrateInstance(parentType, parentProps, parentInstance, instance, isConcurrentMode) {\n  {\n    if (isConcurrentMode || parentProps[SUPPRESS_HYDRATION_WARNING$1] !== true) {\n      if (instance.nodeType === ELEMENT_NODE) {\n        warnForDeletedHydratableElement(parentInstance, instance);\n      } else if (instance.nodeType === COMMENT_NODE) ; else {\n        warnForDeletedHydratableText(parentInstance, instance);\n      }\n    }\n  }\n}\nfunction didNotFindHydratableInstanceWithinContainer(parentContainer, type, props) {\n  {\n    warnForInsertedHydratedElement(parentContainer, type);\n  }\n}\nfunction didNotFindHydratableTextInstanceWithinContainer(parentContainer, text) {\n  {\n    warnForInsertedHydratedText(parentContainer, text);\n  }\n}\nfunction didNotFindHydratableInstanceWithinSuspenseInstance(parentInstance, type, props) {\n  {\n    // $FlowFixMe: Only Element or Document can be parent nodes.\n    var parentNode = parentInstance.parentNode;\n    if (parentNode !== null) warnForInsertedHydratedElement(parentNode, type);\n  }\n}\nfunction didNotFindHydratableTextInstanceWithinSuspenseInstance(parentInstance, text) {\n  {\n    // $FlowFixMe: Only Element or Document can be parent nodes.\n    var parentNode = parentInstance.parentNode;\n    if (parentNode !== null) warnForInsertedHydratedText(parentNode, text);\n  }\n}\nfunction didNotFindHydratableInstance(parentType, parentProps, parentInstance, type, props, isConcurrentMode) {\n  {\n    if (isConcurrentMode || parentProps[SUPPRESS_HYDRATION_WARNING$1] !== true) {\n      warnForInsertedHydratedElement(parentInstance, type);\n    }\n  }\n}\nfunction didNotFindHydratableTextInstance(parentType, parentProps, parentInstance, text, isConcurrentMode) {\n  {\n    if (isConcurrentMode || parentProps[SUPPRESS_HYDRATION_WARNING$1] !== true) {\n      warnForInsertedHydratedText(parentInstance, text);\n    }\n  }\n}\nfunction errorHydratingContainer(parentContainer) {\n  {\n    // TODO: This gets logged by onRecoverableError, too, so we should be\n    // able to remove it.\n    error('An error occurred during hydration. The server HTML was replaced with client content in <%s>.', parentContainer.nodeName.toLowerCase());\n  }\n}\nfunction preparePortalMount(portalInstance) {\n  listenToAllSupportedEvents(portalInstance);\n}\n\nvar randomKey = Math.random().toString(36).slice(2);\nvar internalInstanceKey = '__reactFiber$' + randomKey;\nvar internalPropsKey = '__reactProps$' + randomKey;\nvar internalContainerInstanceKey = '__reactContainer$' + randomKey;\nvar internalEventHandlersKey = '__reactEvents$' + randomKey;\nvar internalEventHandlerListenersKey = '__reactListeners$' + randomKey;\nvar internalEventHandlesSetKey = '__reactHandles$' + randomKey;\nfunction detachDeletedInstance(node) {\n  // TODO: This function is only called on host components. I don't think all of\n  // these fields are relevant.\n  delete node[internalInstanceKey];\n  delete node[internalPropsKey];\n  delete node[internalEventHandlersKey];\n  delete node[internalEventHandlerListenersKey];\n  delete node[internalEventHandlesSetKey];\n}\nfunction precacheFiberNode(hostInst, node) {\n  node[internalInstanceKey] = hostInst;\n}\nfunction markContainerAsRoot(hostRoot, node) {\n  node[internalContainerInstanceKey] = hostRoot;\n}\nfunction unmarkContainerAsRoot(node) {\n  node[internalContainerInstanceKey] = null;\n}\nfunction isContainerMarkedAsRoot(node) {\n  return !!node[internalContainerInstanceKey];\n} // Given a DOM node, return the closest HostComponent or HostText fiber ancestor.\n// If the target node is part of a hydrated or not yet rendered subtree, then\n// this may also return a SuspenseComponent or HostRoot to indicate that.\n// Conceptually the HostRoot fiber is a child of the Container node. So if you\n// pass the Container node as the targetNode, you will not actually get the\n// HostRoot back. To get to the HostRoot, you need to pass a child of it.\n// The same thing applies to Suspense boundaries.\n\nfunction getClosestInstanceFromNode(targetNode) {\n  var targetInst = targetNode[internalInstanceKey];\n\n  if (targetInst) {\n    // Don't return HostRoot or SuspenseComponent here.\n    return targetInst;\n  } // If the direct event target isn't a React owned DOM node, we need to look\n  // to see if one of its parents is a React owned DOM node.\n\n\n  var parentNode = targetNode.parentNode;\n\n  while (parentNode) {\n    // We'll check if this is a container root that could include\n    // React nodes in the future. We need to check this first because\n    // if we're a child of a dehydrated container, we need to first\n    // find that inner container before moving on to finding the parent\n    // instance. Note that we don't check this field on  the targetNode\n    // itself because the fibers are conceptually between the container\n    // node and the first child. It isn't surrounding the container node.\n    // If it's not a container, we check if it's an instance.\n    targetInst = parentNode[internalContainerInstanceKey] || parentNode[internalInstanceKey];\n\n    if (targetInst) {\n      // Since this wasn't the direct target of the event, we might have\n      // stepped past dehydrated DOM nodes to get here. However they could\n      // also have been non-React nodes. We need to answer which one.\n      // If we the instance doesn't have any children, then there can't be\n      // a nested suspense boundary within it. So we can use this as a fast\n      // bailout. Most of the time, when people add non-React children to\n      // the tree, it is using a ref to a child-less DOM node.\n      // Normally we'd only need to check one of the fibers because if it\n      // has ever gone from having children to deleting them or vice versa\n      // it would have deleted the dehydrated boundary nested inside already.\n      // However, since the HostRoot starts out with an alternate it might\n      // have one on the alternate so we need to check in case this was a\n      // root.\n      var alternate = targetInst.alternate;\n\n      if (targetInst.child !== null || alternate !== null && alternate.child !== null) {\n        // Next we need to figure out if the node that skipped past is\n        // nested within a dehydrated boundary and if so, which one.\n        var suspenseInstance = getParentSuspenseInstance(targetNode);\n\n        while (suspenseInstance !== null) {\n          // We found a suspense instance. That means that we haven't\n          // hydrated it yet. Even though we leave the comments in the\n          // DOM after hydrating, and there are boundaries in the DOM\n          // that could already be hydrated, we wouldn't have found them\n          // through this pass since if the target is hydrated it would\n          // have had an internalInstanceKey on it.\n          // Let's get the fiber associated with the SuspenseComponent\n          // as the deepest instance.\n          var targetSuspenseInst = suspenseInstance[internalInstanceKey];\n\n          if (targetSuspenseInst) {\n            return targetSuspenseInst;\n          } // If we don't find a Fiber on the comment, it might be because\n          // we haven't gotten to hydrate it yet. There might still be a\n          // parent boundary that hasn't above this one so we need to find\n          // the outer most that is known.\n\n\n          suspenseInstance = getParentSuspenseInstance(suspenseInstance); // If we don't find one, then that should mean that the parent\n          // host component also hasn't hydrated yet. We can return it\n          // below since it will bail out on the isMounted check later.\n        }\n      }\n\n      return targetInst;\n    }\n\n    targetNode = parentNode;\n    parentNode = targetNode.parentNode;\n  }\n\n  return null;\n}\n/**\n * Given a DOM node, return the ReactDOMComponent or ReactDOMTextComponent\n * instance, or null if the node was not rendered by this React.\n */\n\nfunction getInstanceFromNode(node) {\n  var inst = node[internalInstanceKey] || node[internalContainerInstanceKey];\n\n  if (inst) {\n    if (inst.tag === HostComponent || inst.tag === HostText || inst.tag === SuspenseComponent || inst.tag === HostRoot) {\n      return inst;\n    } else {\n      return null;\n    }\n  }\n\n  return null;\n}\n/**\n * Given a ReactDOMComponent or ReactDOMTextComponent, return the corresponding\n * DOM node.\n */\n\nfunction getNodeFromInstance(inst) {\n  if (inst.tag === HostComponent || inst.tag === HostText) {\n    // In Fiber this, is just the state node right now. We assume it will be\n    // a host component or host text.\n    return inst.stateNode;\n  } // Without this first invariant, passing a non-DOM-component triggers the next\n  // invariant for a missing parent, which is super confusing.\n\n\n  throw new Error('getNodeFromInstance: Invalid argument.');\n}\nfunction getFiberCurrentPropsFromNode(node) {\n  return node[internalPropsKey] || null;\n}\nfunction updateFiberProps(node, props) {\n  node[internalPropsKey] = props;\n}\nfunction getEventListenerSet(node) {\n  var elementListenerSet = node[internalEventHandlersKey];\n\n  if (elementListenerSet === undefined) {\n    elementListenerSet = node[internalEventHandlersKey] = new Set();\n  }\n\n  return elementListenerSet;\n}\n\nvar loggedTypeFailures = {};\nvar ReactDebugCurrentFrame$1 = ReactSharedInternals.ReactDebugCurrentFrame;\n\nfunction setCurrentlyValidatingElement(element) {\n  {\n    if (element) {\n      var owner = element._owner;\n      var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n      ReactDebugCurrentFrame$1.setExtraStackFrame(stack);\n    } else {\n      ReactDebugCurrentFrame$1.setExtraStackFrame(null);\n    }\n  }\n}\n\nfunction checkPropTypes(typeSpecs, values, location, componentName, element) {\n  {\n    // $FlowFixMe This is okay but Flow doesn't know it.\n    var has = Function.call.bind(hasOwnProperty);\n\n    for (var typeSpecName in typeSpecs) {\n      if (has(typeSpecs, typeSpecName)) {\n        var error$1 = void 0; // Prop type validation may throw. In case they do, we don't want to\n        // fail the render phase where it didn't fail before. So we log it.\n        // After these have been cleaned up, we'll let them throw.\n\n        try {\n          // This is intentionally an invariant that gets caught. It's the same\n          // behavior as without this statement except with a better message.\n          if (typeof typeSpecs[typeSpecName] !== 'function') {\n            // eslint-disable-next-line react-internal/prod-error-codes\n            var err = Error((componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' + 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.');\n            err.name = 'Invariant Violation';\n            throw err;\n          }\n\n          error$1 = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED');\n        } catch (ex) {\n          error$1 = ex;\n        }\n\n        if (error$1 && !(error$1 instanceof Error)) {\n          setCurrentlyValidatingElement(element);\n\n          error('%s: type specification of %s' + ' `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error$1);\n\n          setCurrentlyValidatingElement(null);\n        }\n\n        if (error$1 instanceof Error && !(error$1.message in loggedTypeFailures)) {\n          // Only monitor this failure once because there tends to be a lot of the\n          // same error.\n          loggedTypeFailures[error$1.message] = true;\n          setCurrentlyValidatingElement(element);\n\n          error('Failed %s type: %s', location, error$1.message);\n\n          setCurrentlyValidatingElement(null);\n        }\n      }\n    }\n  }\n}\n\nvar valueStack = [];\nvar fiberStack;\n\n{\n  fiberStack = [];\n}\n\nvar index = -1;\n\nfunction createCursor(defaultValue) {\n  return {\n    current: defaultValue\n  };\n}\n\nfunction pop(cursor, fiber) {\n  if (index < 0) {\n    {\n      error('Unexpected pop.');\n    }\n\n    return;\n  }\n\n  {\n    if (fiber !== fiberStack[index]) {\n      error('Unexpected Fiber popped.');\n    }\n  }\n\n  cursor.current = valueStack[index];\n  valueStack[index] = null;\n\n  {\n    fiberStack[index] = null;\n  }\n\n  index--;\n}\n\nfunction push(cursor, value, fiber) {\n  index++;\n  valueStack[index] = cursor.current;\n\n  {\n    fiberStack[index] = fiber;\n  }\n\n  cursor.current = value;\n}\n\nvar warnedAboutMissingGetChildContext;\n\n{\n  warnedAboutMissingGetChildContext = {};\n}\n\nvar emptyContextObject = {};\n\n{\n  Object.freeze(emptyContextObject);\n} // A cursor to the current merged context object on the stack.\n\n\nvar contextStackCursor = createCursor(emptyContextObject); // A cursor to a boolean indicating whether the context has changed.\n\nvar didPerformWorkStackCursor = createCursor(false); // Keep track of the previous context object that was on the stack.\n// We use this to get access to the parent context after we have already\n// pushed the next context provider, and now need to merge their contexts.\n\nvar previousContext = emptyContextObject;\n\nfunction getUnmaskedContext(workInProgress, Component, didPushOwnContextIfProvider) {\n  {\n    if (didPushOwnContextIfProvider && isContextProvider(Component)) {\n      // If the fiber is a context provider itself, when we read its context\n      // we may have already pushed its own child context on the stack. A context\n      // provider should not \"see\" its own child context. Therefore we read the\n      // previous (parent) context instead for a context provider.\n      return previousContext;\n    }\n\n    return contextStackCursor.current;\n  }\n}\n\nfunction cacheContext(workInProgress, unmaskedContext, maskedContext) {\n  {\n    var instance = workInProgress.stateNode;\n    instance.__reactInternalMemoizedUnmaskedChildContext = unmaskedContext;\n    instance.__reactInternalMemoizedMaskedChildContext = maskedContext;\n  }\n}\n\nfunction getMaskedContext(workInProgress, unmaskedContext) {\n  {\n    var type = workInProgress.type;\n    var contextTypes = type.contextTypes;\n\n    if (!contextTypes) {\n      return emptyContextObject;\n    } // Avoid recreating masked context unless unmasked context has changed.\n    // Failing to do this will result in unnecessary calls to componentWillReceiveProps.\n    // This may trigger infinite loops if componentWillReceiveProps calls setState.\n\n\n    var instance = workInProgress.stateNode;\n\n    if (instance && instance.__reactInternalMemoizedUnmaskedChildContext === unmaskedContext) {\n      return instance.__reactInternalMemoizedMaskedChildContext;\n    }\n\n    var context = {};\n\n    for (var key in contextTypes) {\n      context[key] = unmaskedContext[key];\n    }\n\n    {\n      var name = getComponentNameFromFiber(workInProgress) || 'Unknown';\n      checkPropTypes(contextTypes, context, 'context', name);\n    } // Cache unmasked context so we can avoid recreating masked context unless necessary.\n    // Context is created before the class component is instantiated so check for instance.\n\n\n    if (instance) {\n      cacheContext(workInProgress, unmaskedContext, context);\n    }\n\n    return context;\n  }\n}\n\nfunction hasContextChanged() {\n  {\n    return didPerformWorkStackCursor.current;\n  }\n}\n\nfunction isContextProvider(type) {\n  {\n    var childContextTypes = type.childContextTypes;\n    return childContextTypes !== null && childContextTypes !== undefined;\n  }\n}\n\nfunction popContext(fiber) {\n  {\n    pop(didPerformWorkStackCursor, fiber);\n    pop(contextStackCursor, fiber);\n  }\n}\n\nfunction popTopLevelContextObject(fiber) {\n  {\n    pop(didPerformWorkStackCursor, fiber);\n    pop(contextStackCursor, fiber);\n  }\n}\n\nfunction pushTopLevelContextObject(fiber, context, didChange) {\n  {\n    if (contextStackCursor.current !== emptyContextObject) {\n      throw new Error('Unexpected context found on stack. ' + 'This error is likely caused by a bug in React. Please file an issue.');\n    }\n\n    push(contextStackCursor, context, fiber);\n    push(didPerformWorkStackCursor, didChange, fiber);\n  }\n}\n\nfunction processChildContext(fiber, type, parentContext) {\n  {\n    var instance = fiber.stateNode;\n    var childContextTypes = type.childContextTypes; // TODO (bvaughn) Replace this behavior with an invariant() in the future.\n    // It has only been added in Fiber to match the (unintentional) behavior in Stack.\n\n    if (typeof instance.getChildContext !== 'function') {\n      {\n        var componentName = getComponentNameFromFiber(fiber) || 'Unknown';\n\n        if (!warnedAboutMissingGetChildContext[componentName]) {\n          warnedAboutMissingGetChildContext[componentName] = true;\n\n          error('%s.childContextTypes is specified but there is no getChildContext() method ' + 'on the instance. You can either define getChildContext() on %s or remove ' + 'childContextTypes from it.', componentName, componentName);\n        }\n      }\n\n      return parentContext;\n    }\n\n    var childContext = instance.getChildContext();\n\n    for (var contextKey in childContext) {\n      if (!(contextKey in childContextTypes)) {\n        throw new Error((getComponentNameFromFiber(fiber) || 'Unknown') + \".getChildContext(): key \\\"\" + contextKey + \"\\\" is not defined in childContextTypes.\");\n      }\n    }\n\n    {\n      var name = getComponentNameFromFiber(fiber) || 'Unknown';\n      checkPropTypes(childContextTypes, childContext, 'child context', name);\n    }\n\n    return assign({}, parentContext, childContext);\n  }\n}\n\nfunction pushContextProvider(workInProgress) {\n  {\n    var instance = workInProgress.stateNode; // We push the context as early as possible to ensure stack integrity.\n    // If the instance does not exist yet, we will push null at first,\n    // and replace it on the stack later when invalidating the context.\n\n    var memoizedMergedChildContext = instance && instance.__reactInternalMemoizedMergedChildContext || emptyContextObject; // Remember the parent context so we can merge with it later.\n    // Inherit the parent's did-perform-work value to avoid inadvertently blocking updates.\n\n    previousContext = contextStackCursor.current;\n    push(contextStackCursor, memoizedMergedChildContext, workInProgress);\n    push(didPerformWorkStackCursor, didPerformWorkStackCursor.current, workInProgress);\n    return true;\n  }\n}\n\nfunction invalidateContextProvider(workInProgress, type, didChange) {\n  {\n    var instance = workInProgress.stateNode;\n\n    if (!instance) {\n      throw new Error('Expected to have an instance by this point. ' + 'This error is likely caused by a bug in React. Please file an issue.');\n    }\n\n    if (didChange) {\n      // Merge parent and own context.\n      // Skip this if we're not updating due to sCU.\n      // This avoids unnecessarily recomputing memoized values.\n      var mergedContext = processChildContext(workInProgress, type, previousContext);\n      instance.__reactInternalMemoizedMergedChildContext = mergedContext; // Replace the old (or empty) context with the new one.\n      // It is important to unwind the context in the reverse order.\n\n      pop(didPerformWorkStackCursor, workInProgress);\n      pop(contextStackCursor, workInProgress); // Now push the new context and mark that it has changed.\n\n      push(contextStackCursor, mergedContext, workInProgress);\n      push(didPerformWorkStackCursor, didChange, workInProgress);\n    } else {\n      pop(didPerformWorkStackCursor, workInProgress);\n      push(didPerformWorkStackCursor, didChange, workInProgress);\n    }\n  }\n}\n\nfunction findCurrentUnmaskedContext(fiber) {\n  {\n    // Currently this is only used with renderSubtreeIntoContainer; not sure if it\n    // makes sense elsewhere\n    if (!isFiberMounted(fiber) || fiber.tag !== ClassComponent) {\n      throw new Error('Expected subtree parent to be a mounted class component. ' + 'This error is likely caused by a bug in React. Please file an issue.');\n    }\n\n    var node = fiber;\n\n    do {\n      switch (node.tag) {\n        case HostRoot:\n          return node.stateNode.context;\n\n        case ClassComponent:\n          {\n            var Component = node.type;\n\n            if (isContextProvider(Component)) {\n              return node.stateNode.__reactInternalMemoizedMergedChildContext;\n            }\n\n            break;\n          }\n      }\n\n      node = node.return;\n    } while (node !== null);\n\n    throw new Error('Found unexpected detached subtree parent. ' + 'This error is likely caused by a bug in React. Please file an issue.');\n  }\n}\n\nvar LegacyRoot = 0;\nvar ConcurrentRoot = 1;\n\nvar syncQueue = null;\nvar includesLegacySyncCallbacks = false;\nvar isFlushingSyncQueue = false;\nfunction scheduleSyncCallback(callback) {\n  // Push this callback into an internal queue. We'll flush these either in\n  // the next tick, or earlier if something calls `flushSyncCallbackQueue`.\n  if (syncQueue === null) {\n    syncQueue = [callback];\n  } else {\n    // Push onto existing queue. Don't need to schedule a callback because\n    // we already scheduled one when we created the queue.\n    syncQueue.push(callback);\n  }\n}\nfunction scheduleLegacySyncCallback(callback) {\n  includesLegacySyncCallbacks = true;\n  scheduleSyncCallback(callback);\n}\nfunction flushSyncCallbacksOnlyInLegacyMode() {\n  // Only flushes the queue if there's a legacy sync callback scheduled.\n  // TODO: There's only a single type of callback: performSyncOnWorkOnRoot. So\n  // it might make more sense for the queue to be a list of roots instead of a\n  // list of generic callbacks. Then we can have two: one for legacy roots, one\n  // for concurrent roots. And this method would only flush the legacy ones.\n  if (includesLegacySyncCallbacks) {\n    flushSyncCallbacks();\n  }\n}\nfunction flushSyncCallbacks() {\n  if (!isFlushingSyncQueue && syncQueue !== null) {\n    // Prevent re-entrance.\n    isFlushingSyncQueue = true;\n    var i = 0;\n    var previousUpdatePriority = getCurrentUpdatePriority();\n\n    try {\n      var isSync = true;\n      var queue = syncQueue; // TODO: Is this necessary anymore? The only user code that runs in this\n      // queue is in the render or commit phases.\n\n      setCurrentUpdatePriority(DiscreteEventPriority);\n\n      for (; i < queue.length; i++) {\n        var callback = queue[i];\n\n        do {\n          callback = callback(isSync);\n        } while (callback !== null);\n      }\n\n      syncQueue = null;\n      includesLegacySyncCallbacks = false;\n    } catch (error) {\n      // If something throws, leave the remaining callbacks on the queue.\n      if (syncQueue !== null) {\n        syncQueue = syncQueue.slice(i + 1);\n      } // Resume flushing in the next tick\n\n\n      scheduleCallback(ImmediatePriority, flushSyncCallbacks);\n      throw error;\n    } finally {\n      setCurrentUpdatePriority(previousUpdatePriority);\n      isFlushingSyncQueue = false;\n    }\n  }\n\n  return null;\n}\n\n// TODO: Use the unified fiber stack module instead of this local one?\n// Intentionally not using it yet to derisk the initial implementation, because\n// the way we push/pop these values is a bit unusual. If there's a mistake, I'd\n// rather the ids be wrong than crash the whole reconciler.\nvar forkStack = [];\nvar forkStackIndex = 0;\nvar treeForkProvider = null;\nvar treeForkCount = 0;\nvar idStack = [];\nvar idStackIndex = 0;\nvar treeContextProvider = null;\nvar treeContextId = 1;\nvar treeContextOverflow = '';\nfunction isForkedChild(workInProgress) {\n  warnIfNotHydrating();\n  return (workInProgress.flags & Forked) !== NoFlags;\n}\nfunction getForksAtLevel(workInProgress) {\n  warnIfNotHydrating();\n  return treeForkCount;\n}\nfunction getTreeId() {\n  var overflow = treeContextOverflow;\n  var idWithLeadingBit = treeContextId;\n  var id = idWithLeadingBit & ~getLeadingBit(idWithLeadingBit);\n  return id.toString(32) + overflow;\n}\nfunction pushTreeFork(workInProgress, totalChildren) {\n  // This is called right after we reconcile an array (or iterator) of child\n  // fibers, because that's the only place where we know how many children in\n  // the whole set without doing extra work later, or storing addtional\n  // information on the fiber.\n  //\n  // That's why this function is separate from pushTreeId \u2014 it's called during\n  // the render phase of the fork parent, not the child, which is where we push\n  // the other context values.\n  //\n  // In the Fizz implementation this is much simpler because the child is\n  // rendered in the same callstack as the parent.\n  //\n  // It might be better to just add a `forks` field to the Fiber type. It would\n  // make this module simpler.\n  warnIfNotHydrating();\n  forkStack[forkStackIndex++] = treeForkCount;\n  forkStack[forkStackIndex++] = treeForkProvider;\n  treeForkProvider = workInProgress;\n  treeForkCount = totalChildren;\n}\nfunction pushTreeId(workInProgress, totalChildren, index) {\n  warnIfNotHydrating();\n  idStack[idStackIndex++] = treeContextId;\n  idStack[idStackIndex++] = treeContextOverflow;\n  idStack[idStackIndex++] = treeContextProvider;\n  treeContextProvider = workInProgress;\n  var baseIdWithLeadingBit = treeContextId;\n  var baseOverflow = treeContextOverflow; // The leftmost 1 marks the end of the sequence, non-inclusive. It's not part\n  // of the id; we use it to account for leading 0s.\n\n  var baseLength = getBitLength(baseIdWithLeadingBit) - 1;\n  var baseId = baseIdWithLeadingBit & ~(1 << baseLength);\n  var slot = index + 1;\n  var length = getBitLength(totalChildren) + baseLength; // 30 is the max length we can store without overflowing, taking into\n  // consideration the leading 1 we use to mark the end of the sequence.\n\n  if (length > 30) {\n    // We overflowed the bitwise-safe range. Fall back to slower algorithm.\n    // This branch assumes the length of the base id is greater than 5; it won't\n    // work for smaller ids, because you need 5 bits per character.\n    //\n    // We encode the id in multiple steps: first the base id, then the\n    // remaining digits.\n    //\n    // Each 5 bit sequence corresponds to a single base 32 character. So for\n    // example, if the current id is 23 bits long, we can convert 20 of those\n    // bits into a string of 4 characters, with 3 bits left over.\n    //\n    // First calculate how many bits in the base id represent a complete\n    // sequence of characters.\n    var numberOfOverflowBits = baseLength - baseLength % 5; // Then create a bitmask that selects only those bits.\n\n    var newOverflowBits = (1 << numberOfOverflowBits) - 1; // Select the bits, and convert them to a base 32 string.\n\n    var newOverflow = (baseId & newOverflowBits).toString(32); // Now we can remove those bits from the base id.\n\n    var restOfBaseId = baseId >> numberOfOverflowBits;\n    var restOfBaseLength = baseLength - numberOfOverflowBits; // Finally, encode the rest of the bits using the normal algorithm. Because\n    // we made more room, this time it won't overflow.\n\n    var restOfLength = getBitLength(totalChildren) + restOfBaseLength;\n    var restOfNewBits = slot << restOfBaseLength;\n    var id = restOfNewBits | restOfBaseId;\n    var overflow = newOverflow + baseOverflow;\n    treeContextId = 1 << restOfLength | id;\n    treeContextOverflow = overflow;\n  } else {\n    // Normal path\n    var newBits = slot << baseLength;\n\n    var _id = newBits | baseId;\n\n    var _overflow = baseOverflow;\n    treeContextId = 1 << length | _id;\n    treeContextOverflow = _overflow;\n  }\n}\nfunction pushMaterializedTreeId(workInProgress) {\n  warnIfNotHydrating(); // This component materialized an id. This will affect any ids that appear\n  // in its children.\n\n  var returnFiber = workInProgress.return;\n\n  if (returnFiber !== null) {\n    var numberOfForks = 1;\n    var slotIndex = 0;\n    pushTreeFork(workInProgress, numberOfForks);\n    pushTreeId(workInProgress, numberOfForks, slotIndex);\n  }\n}\n\nfunction getBitLength(number) {\n  return 32 - clz32(number);\n}\n\nfunction getLeadingBit(id) {\n  return 1 << getBitLength(id) - 1;\n}\n\nfunction popTreeContext(workInProgress) {\n  // Restore the previous values.\n  // This is a bit more complicated than other context-like modules in Fiber\n  // because the same Fiber may appear on the stack multiple times and for\n  // different reasons. We have to keep popping until the work-in-progress is\n  // no longer at the top of the stack.\n  while (workInProgress === treeForkProvider) {\n    treeForkProvider = forkStack[--forkStackIndex];\n    forkStack[forkStackIndex] = null;\n    treeForkCount = forkStack[--forkStackIndex];\n    forkStack[forkStackIndex] = null;\n  }\n\n  while (workInProgress === treeContextProvider) {\n    treeContextProvider = idStack[--idStackIndex];\n    idStack[idStackIndex] = null;\n    treeContextOverflow = idStack[--idStackIndex];\n    idStack[idStackIndex] = null;\n    treeContextId = idStack[--idStackIndex];\n    idStack[idStackIndex] = null;\n  }\n}\nfunction getSuspendedTreeContext() {\n  warnIfNotHydrating();\n\n  if (treeContextProvider !== null) {\n    return {\n      id: treeContextId,\n      overflow: treeContextOverflow\n    };\n  } else {\n    return null;\n  }\n}\nfunction restoreSuspendedTreeContext(workInProgress, suspendedContext) {\n  warnIfNotHydrating();\n  idStack[idStackIndex++] = treeContextId;\n  idStack[idStackIndex++] = treeContextOverflow;\n  idStack[idStackIndex++] = treeContextProvider;\n  treeContextId = suspendedContext.id;\n  treeContextOverflow = suspendedContext.overflow;\n  treeContextProvider = workInProgress;\n}\n\nfunction warnIfNotHydrating() {\n  {\n    if (!getIsHydrating()) {\n      error('Expected to be hydrating. This is a bug in React. Please file ' + 'an issue.');\n    }\n  }\n}\n\n// This may have been an insertion or a hydration.\n\nvar hydrationParentFiber = null;\nvar nextHydratableInstance = null;\nvar isHydrating = false; // This flag allows for warning supression when we expect there to be mismatches\n// due to earlier mismatches or a suspended fiber.\n\nvar didSuspendOrErrorDEV = false; // Hydration errors that were thrown inside this boundary\n\nvar hydrationErrors = null;\n\nfunction warnIfHydrating() {\n  {\n    if (isHydrating) {\n      error('We should not be hydrating here. This is a bug in React. Please file a bug.');\n    }\n  }\n}\n\nfunction markDidThrowWhileHydratingDEV() {\n  {\n    didSuspendOrErrorDEV = true;\n  }\n}\nfunction didSuspendOrErrorWhileHydratingDEV() {\n  {\n    return didSuspendOrErrorDEV;\n  }\n}\n\nfunction enterHydrationState(fiber) {\n\n  var parentInstance = fiber.stateNode.containerInfo;\n  nextHydratableInstance = getFirstHydratableChildWithinContainer(parentInstance);\n  hydrationParentFiber = fiber;\n  isHydrating = true;\n  hydrationErrors = null;\n  didSuspendOrErrorDEV = false;\n  return true;\n}\n\nfunction reenterHydrationStateFromDehydratedSuspenseInstance(fiber, suspenseInstance, treeContext) {\n\n  nextHydratableInstance = getFirstHydratableChildWithinSuspenseInstance(suspenseInstance);\n  hydrationParentFiber = fiber;\n  isHydrating = true;\n  hydrationErrors = null;\n  didSuspendOrErrorDEV = false;\n\n  if (treeContext !== null) {\n    restoreSuspendedTreeContext(fiber, treeContext);\n  }\n\n  return true;\n}\n\nfunction warnUnhydratedInstance(returnFiber, instance) {\n  {\n    switch (returnFiber.tag) {\n      case HostRoot:\n        {\n          didNotHydrateInstanceWithinContainer(returnFiber.stateNode.containerInfo, instance);\n          break;\n        }\n\n      case HostComponent:\n        {\n          var isConcurrentMode = (returnFiber.mode & ConcurrentMode) !== NoMode;\n          didNotHydrateInstance(returnFiber.type, returnFiber.memoizedProps, returnFiber.stateNode, instance, // TODO: Delete this argument when we remove the legacy root API.\n          isConcurrentMode);\n          break;\n        }\n\n      case SuspenseComponent:\n        {\n          var suspenseState = returnFiber.memoizedState;\n          if (suspenseState.dehydrated !== null) didNotHydrateInstanceWithinSuspenseInstance(suspenseState.dehydrated, instance);\n          break;\n        }\n    }\n  }\n}\n\nfunction deleteHydratableInstance(returnFiber, instance) {\n  warnUnhydratedInstance(returnFiber, instance);\n  var childToDelete = createFiberFromHostInstanceForDeletion();\n  childToDelete.stateNode = instance;\n  childToDelete.return = returnFiber;\n  var deletions = returnFiber.deletions;\n\n  if (deletions === null) {\n    returnFiber.deletions = [childToDelete];\n    returnFiber.flags |= ChildDeletion;\n  } else {\n    deletions.push(childToDelete);\n  }\n}\n\nfunction warnNonhydratedInstance(returnFiber, fiber) {\n  {\n    if (didSuspendOrErrorDEV) {\n      // Inside a boundary that already suspended. We're currently rendering the\n      // siblings of a suspended node. The mismatch may be due to the missing\n      // data, so it's probably a false positive.\n      return;\n    }\n\n    switch (returnFiber.tag) {\n      case HostRoot:\n        {\n          var parentContainer = returnFiber.stateNode.containerInfo;\n\n          switch (fiber.tag) {\n            case HostComponent:\n              var type = fiber.type;\n              var props = fiber.pendingProps;\n              didNotFindHydratableInstanceWithinContainer(parentContainer, type);\n              break;\n\n            case HostText:\n              var text = fiber.pendingProps;\n              didNotFindHydratableTextInstanceWithinContainer(parentContainer, text);\n              break;\n          }\n\n          break;\n        }\n\n      case HostComponent:\n        {\n          var parentType = returnFiber.type;\n          var parentProps = returnFiber.memoizedProps;\n          var parentInstance = returnFiber.stateNode;\n\n          switch (fiber.tag) {\n            case HostComponent:\n              {\n                var _type = fiber.type;\n                var _props = fiber.pendingProps;\n                var isConcurrentMode = (returnFiber.mode & ConcurrentMode) !== NoMode;\n                didNotFindHydratableInstance(parentType, parentProps, parentInstance, _type, _props, // TODO: Delete this argument when we remove the legacy root API.\n                isConcurrentMode);\n                break;\n              }\n\n            case HostText:\n              {\n                var _text = fiber.pendingProps;\n\n                var _isConcurrentMode = (returnFiber.mode & ConcurrentMode) !== NoMode;\n\n                didNotFindHydratableTextInstance(parentType, parentProps, parentInstance, _text, // TODO: Delete this argument when we remove the legacy root API.\n                _isConcurrentMode);\n                break;\n              }\n          }\n\n          break;\n        }\n\n      case SuspenseComponent:\n        {\n          var suspenseState = returnFiber.memoizedState;\n          var _parentInstance = suspenseState.dehydrated;\n          if (_parentInstance !== null) switch (fiber.tag) {\n            case HostComponent:\n              var _type2 = fiber.type;\n              var _props2 = fiber.pendingProps;\n              didNotFindHydratableInstanceWithinSuspenseInstance(_parentInstance, _type2);\n              break;\n\n            case HostText:\n              var _text2 = fiber.pendingProps;\n              didNotFindHydratableTextInstanceWithinSuspenseInstance(_parentInstance, _text2);\n              break;\n          }\n          break;\n        }\n\n      default:\n        return;\n    }\n  }\n}\n\nfunction insertNonHydratedInstance(returnFiber, fiber) {\n  fiber.flags = fiber.flags & ~Hydrating | Placement;\n  warnNonhydratedInstance(returnFiber, fiber);\n}\n\nfunction tryHydrate(fiber, nextInstance) {\n  switch (fiber.tag) {\n    case HostComponent:\n      {\n        var type = fiber.type;\n        var props = fiber.pendingProps;\n        var instance = canHydrateInstance(nextInstance, type);\n\n        if (instance !== null) {\n          fiber.stateNode = instance;\n          hydrationParentFiber = fiber;\n          nextHydratableInstance = getFirstHydratableChild(instance);\n          return true;\n        }\n\n        return false;\n      }\n\n    case HostText:\n      {\n        var text = fiber.pendingProps;\n        var textInstance = canHydrateTextInstance(nextInstance, text);\n\n        if (textInstance !== null) {\n          fiber.stateNode = textInstance;\n          hydrationParentFiber = fiber; // Text Instances don't have children so there's nothing to hydrate.\n\n          nextHydratableInstance = null;\n          return true;\n        }\n\n        return false;\n      }\n\n    case SuspenseComponent:\n      {\n        var suspenseInstance = canHydrateSuspenseInstance(nextInstance);\n\n        if (suspenseInstance !== null) {\n          var suspenseState = {\n            dehydrated: suspenseInstance,\n            treeContext: getSuspendedTreeContext(),\n            retryLane: OffscreenLane\n          };\n          fiber.memoizedState = suspenseState; // Store the dehydrated fragment as a child fiber.\n          // This simplifies the code for getHostSibling and deleting nodes,\n          // since it doesn't have to consider all Suspense boundaries and\n          // check if they're dehydrated ones or not.\n\n          var dehydratedFragment = createFiberFromDehydratedFragment(suspenseInstance);\n          dehydratedFragment.return = fiber;\n          fiber.child = dehydratedFragment;\n          hydrationParentFiber = fiber; // While a Suspense Instance does have children, we won't step into\n          // it during the first pass. Instead, we'll reenter it later.\n\n          nextHydratableInstance = null;\n          return true;\n        }\n\n        return false;\n      }\n\n    default:\n      return false;\n  }\n}\n\nfunction shouldClientRenderOnMismatch(fiber) {\n  return (fiber.mode & ConcurrentMode) !== NoMode && (fiber.flags & DidCapture) === NoFlags;\n}\n\nfunction throwOnHydrationMismatch(fiber) {\n  throw new Error('Hydration failed because the initial UI does not match what was ' + 'rendered on the server.');\n}\n\nfunction tryToClaimNextHydratableInstance(fiber) {\n  if (!isHydrating) {\n    return;\n  }\n\n  var nextInstance = nextHydratableInstance;\n\n  if (!nextInstance) {\n    if (shouldClientRenderOnMismatch(fiber)) {\n      warnNonhydratedInstance(hydrationParentFiber, fiber);\n      throwOnHydrationMismatch();\n    } // Nothing to hydrate. Make it an insertion.\n\n\n    insertNonHydratedInstance(hydrationParentFiber, fiber);\n    isHydrating = false;\n    hydrationParentFiber = fiber;\n    return;\n  }\n\n  var firstAttemptedInstance = nextInstance;\n\n  if (!tryHydrate(fiber, nextInstance)) {\n    if (shouldClientRenderOnMismatch(fiber)) {\n      warnNonhydratedInstance(hydrationParentFiber, fiber);\n      throwOnHydrationMismatch();\n    } // If we can't hydrate this instance let's try the next one.\n    // We use this as a heuristic. It's based on intuition and not data so it\n    // might be flawed or unnecessary.\n\n\n    nextInstance = getNextHydratableSibling(firstAttemptedInstance);\n    var prevHydrationParentFiber = hydrationParentFiber;\n\n    if (!nextInstance || !tryHydrate(fiber, nextInstance)) {\n      // Nothing to hydrate. Make it an insertion.\n      insertNonHydratedInstance(hydrationParentFiber, fiber);\n      isHydrating = false;\n      hydrationParentFiber = fiber;\n      return;\n    } // We matched the next one, we'll now assume that the first one was\n    // superfluous and we'll delete it. Since we can't eagerly delete it\n    // we'll have to schedule a deletion. To do that, this node needs a dummy\n    // fiber associated with it.\n\n\n    deleteHydratableInstance(prevHydrationParentFiber, firstAttemptedInstance);\n  }\n}\n\nfunction prepareToHydrateHostInstance(fiber, rootContainerInstance, hostContext) {\n\n  var instance = fiber.stateNode;\n  var shouldWarnIfMismatchDev = !didSuspendOrErrorDEV;\n  var updatePayload = hydrateInstance(instance, fiber.type, fiber.memoizedProps, rootContainerInstance, hostContext, fiber, shouldWarnIfMismatchDev); // TODO: Type this specific to this type of component.\n\n  fiber.updateQueue = updatePayload; // If the update payload indicates that there is a change or if there\n  // is a new ref we mark this as an update.\n\n  if (updatePayload !== null) {\n    return true;\n  }\n\n  return false;\n}\n\nfunction prepareToHydrateHostTextInstance(fiber) {\n\n  var textInstance = fiber.stateNode;\n  var textContent = fiber.memoizedProps;\n  var shouldUpdate = hydrateTextInstance(textInstance, textContent, fiber);\n\n  if (shouldUpdate) {\n    // We assume that prepareToHydrateHostTextInstance is called in a context where the\n    // hydration parent is the parent host component of this host text.\n    var returnFiber = hydrationParentFiber;\n\n    if (returnFiber !== null) {\n      switch (returnFiber.tag) {\n        case HostRoot:\n          {\n            var parentContainer = returnFiber.stateNode.containerInfo;\n            var isConcurrentMode = (returnFiber.mode & ConcurrentMode) !== NoMode;\n            didNotMatchHydratedContainerTextInstance(parentContainer, textInstance, textContent, // TODO: Delete this argument when we remove the legacy root API.\n            isConcurrentMode);\n            break;\n          }\n\n        case HostComponent:\n          {\n            var parentType = returnFiber.type;\n            var parentProps = returnFiber.memoizedProps;\n            var parentInstance = returnFiber.stateNode;\n\n            var _isConcurrentMode2 = (returnFiber.mode & ConcurrentMode) !== NoMode;\n\n            didNotMatchHydratedTextInstance(parentType, parentProps, parentInstance, textInstance, textContent, // TODO: Delete this argument when we remove the legacy root API.\n            _isConcurrentMode2);\n            break;\n          }\n      }\n    }\n  }\n\n  return shouldUpdate;\n}\n\nfunction prepareToHydrateHostSuspenseInstance(fiber) {\n\n  var suspenseState = fiber.memoizedState;\n  var suspenseInstance = suspenseState !== null ? suspenseState.dehydrated : null;\n\n  if (!suspenseInstance) {\n    throw new Error('Expected to have a hydrated suspense instance. ' + 'This error is likely caused by a bug in React. Please file an issue.');\n  }\n\n  hydrateSuspenseInstance(suspenseInstance, fiber);\n}\n\nfunction skipPastDehydratedSuspenseInstance(fiber) {\n\n  var suspenseState = fiber.memoizedState;\n  var suspenseInstance = suspenseState !== null ? suspenseState.dehydrated : null;\n\n  if (!suspenseInstance) {\n    throw new Error('Expected to have a hydrated suspense instance. ' + 'This error is likely caused by a bug in React. Please file an issue.');\n  }\n\n  return getNextHydratableInstanceAfterSuspenseInstance(suspenseInstance);\n}\n\nfunction popToNextHostParent(fiber) {\n  var parent = fiber.return;\n\n  while (parent !== null && parent.tag !== HostComponent && parent.tag !== HostRoot && parent.tag !== SuspenseComponent) {\n    parent = parent.return;\n  }\n\n  hydrationParentFiber = parent;\n}\n\nfunction popHydrationState(fiber) {\n\n  if (fiber !== hydrationParentFiber) {\n    // We're deeper than the current hydration context, inside an inserted\n    // tree.\n    return false;\n  }\n\n  if (!isHydrating) {\n    // If we're not currently hydrating but we're in a hydration context, then\n    // we were an insertion and now need to pop up reenter hydration of our\n    // siblings.\n    popToNextHostParent(fiber);\n    isHydrating = true;\n    return false;\n  } // If we have any remaining hydratable nodes, we need to delete them now.\n  // We only do this deeper than head and body since they tend to have random\n  // other nodes in them. We also ignore components with pure text content in\n  // side of them. We also don't delete anything inside the root container.\n\n\n  if (fiber.tag !== HostRoot && (fiber.tag !== HostComponent || shouldDeleteUnhydratedTailInstances(fiber.type) && !shouldSetTextContent(fiber.type, fiber.memoizedProps))) {\n    var nextInstance = nextHydratableInstance;\n\n    if (nextInstance) {\n      if (shouldClientRenderOnMismatch(fiber)) {\n        warnIfUnhydratedTailNodes(fiber);\n        throwOnHydrationMismatch();\n      } else {\n        while (nextInstance) {\n          deleteHydratableInstance(fiber, nextInstance);\n          nextInstance = getNextHydratableSibling(nextInstance);\n        }\n      }\n    }\n  }\n\n  popToNextHostParent(fiber);\n\n  if (fiber.tag === SuspenseComponent) {\n    nextHydratableInstance = skipPastDehydratedSuspenseInstance(fiber);\n  } else {\n    nextHydratableInstance = hydrationParentFiber ? getNextHydratableSibling(fiber.stateNode) : null;\n  }\n\n  return true;\n}\n\nfunction hasUnhydratedTailNodes() {\n  return isHydrating && nextHydratableInstance !== null;\n}\n\nfunction warnIfUnhydratedTailNodes(fiber) {\n  var nextInstance = nextHydratableInstance;\n\n  while (nextInstance) {\n    warnUnhydratedInstance(fiber, nextInstance);\n    nextInstance = getNextHydratableSibling(nextInstance);\n  }\n}\n\nfunction resetHydrationState() {\n\n  hydrationParentFiber = null;\n  nextHydratableInstance = null;\n  isHydrating = false;\n  didSuspendOrErrorDEV = false;\n}\n\nfunction upgradeHydrationErrorsToRecoverable() {\n  if (hydrationErrors !== null) {\n    // Successfully completed a forced client render. The errors that occurred\n    // during the hydration attempt are now recovered. We will log them in\n    // commit phase, once the entire tree has finished.\n    queueRecoverableErrors(hydrationErrors);\n    hydrationErrors = null;\n  }\n}\n\nfunction getIsHydrating() {\n  return isHydrating;\n}\n\nfunction queueHydrationError(error) {\n  if (hydrationErrors === null) {\n    hydrationErrors = [error];\n  } else {\n    hydrationErrors.push(error);\n  }\n}\n\nvar ReactCurrentBatchConfig$1 = ReactSharedInternals.ReactCurrentBatchConfig;\nvar NoTransition = null;\nfunction requestCurrentTransition() {\n  return ReactCurrentBatchConfig$1.transition;\n}\n\nvar ReactStrictModeWarnings = {\n  recordUnsafeLifecycleWarnings: function (fiber, instance) {},\n  flushPendingUnsafeLifecycleWarnings: function () {},\n  recordLegacyContextWarning: function (fiber, instance) {},\n  flushLegacyContextWarning: function () {},\n  discardPendingWarnings: function () {}\n};\n\n{\n  var findStrictRoot = function (fiber) {\n    var maybeStrictRoot = null;\n    var node = fiber;\n\n    while (node !== null) {\n      if (node.mode & StrictLegacyMode) {\n        maybeStrictRoot = node;\n      }\n\n      node = node.return;\n    }\n\n    return maybeStrictRoot;\n  };\n\n  var setToSortedString = function (set) {\n    var array = [];\n    set.forEach(function (value) {\n      array.push(value);\n    });\n    return array.sort().join(', ');\n  };\n\n  var pendingComponentWillMountWarnings = [];\n  var pendingUNSAFE_ComponentWillMountWarnings = [];\n  var pendingComponentWillReceivePropsWarnings = [];\n  var pendingUNSAFE_ComponentWillReceivePropsWarnings = [];\n  var pendingComponentWillUpdateWarnings = [];\n  var pendingUNSAFE_ComponentWillUpdateWarnings = []; // Tracks components we have already warned about.\n\n  var didWarnAboutUnsafeLifecycles = new Set();\n\n  ReactStrictModeWarnings.recordUnsafeLifecycleWarnings = function (fiber, instance) {\n    // Dedupe strategy: Warn once per component.\n    if (didWarnAboutUnsafeLifecycles.has(fiber.type)) {\n      return;\n    }\n\n    if (typeof instance.componentWillMount === 'function' && // Don't warn about react-lifecycles-compat polyfilled components.\n    instance.componentWillMount.__suppressDeprecationWarning !== true) {\n      pendingComponentWillMountWarnings.push(fiber);\n    }\n\n    if (fiber.mode & StrictLegacyMode && typeof instance.UNSAFE_componentWillMount === 'function') {\n      pendingUNSAFE_ComponentWillMountWarnings.push(fiber);\n    }\n\n    if (typeof instance.componentWillReceiveProps === 'function' && instance.componentWillReceiveProps.__suppressDeprecationWarning !== true) {\n      pendingComponentWillReceivePropsWarnings.push(fiber);\n    }\n\n    if (fiber.mode & StrictLegacyMode && typeof instance.UNSAFE_componentWillReceiveProps === 'function') {\n      pendingUNSAFE_ComponentWillReceivePropsWarnings.push(fiber);\n    }\n\n    if (typeof instance.componentWillUpdate === 'function' && instance.componentWillUpdate.__suppressDeprecationWarning !== true) {\n      pendingComponentWillUpdateWarnings.push(fiber);\n    }\n\n    if (fiber.mode & StrictLegacyMode && typeof instance.UNSAFE_componentWillUpdate === 'function') {\n      pendingUNSAFE_ComponentWillUpdateWarnings.push(fiber);\n    }\n  };\n\n  ReactStrictModeWarnings.flushPendingUnsafeLifecycleWarnings = function () {\n    // We do an initial pass to gather component names\n    var componentWillMountUniqueNames = new Set();\n\n    if (pendingComponentWillMountWarnings.length > 0) {\n      pendingComponentWillMountWarnings.forEach(function (fiber) {\n        componentWillMountUniqueNames.add(getComponentNameFromFiber(fiber) || 'Component');\n        didWarnAboutUnsafeLifecycles.add(fiber.type);\n      });\n      pendingComponentWillMountWarnings = [];\n    }\n\n    var UNSAFE_componentWillMountUniqueNames = new Set();\n\n    if (pendingUNSAFE_ComponentWillMountWarnings.length > 0) {\n      pendingUNSAFE_ComponentWillMountWarnings.forEach(function (fiber) {\n        UNSAFE_componentWillMountUniqueNames.add(getComponentNameFromFiber(fiber) || 'Component');\n        didWarnAboutUnsafeLifecycles.add(fiber.type);\n      });\n      pendingUNSAFE_ComponentWillMountWarnings = [];\n    }\n\n    var componentWillReceivePropsUniqueNames = new Set();\n\n    if (pendingComponentWillReceivePropsWarnings.length > 0) {\n      pendingComponentWillReceivePropsWarnings.forEach(function (fiber) {\n        componentWillReceivePropsUniqueNames.add(getComponentNameFromFiber(fiber) || 'Component');\n        didWarnAboutUnsafeLifecycles.add(fiber.type);\n      });\n      pendingComponentWillReceivePropsWarnings = [];\n    }\n\n    var UNSAFE_componentWillReceivePropsUniqueNames = new Set();\n\n    if (pendingUNSAFE_ComponentWillReceivePropsWarnings.length > 0) {\n      pendingUNSAFE_ComponentWillReceivePropsWarnings.forEach(function (fiber) {\n        UNSAFE_componentWillReceivePropsUniqueNames.add(getComponentNameFromFiber(fiber) || 'Component');\n        didWarnAboutUnsafeLifecycles.add(fiber.type);\n      });\n      pendingUNSAFE_ComponentWillReceivePropsWarnings = [];\n    }\n\n    var componentWillUpdateUniqueNames = new Set();\n\n    if (pendingComponentWillUpdateWarnings.length > 0) {\n      pendingComponentWillUpdateWarnings.forEach(function (fiber) {\n        componentWillUpdateUniqueNames.add(getComponentNameFromFiber(fiber) || 'Component');\n        didWarnAboutUnsafeLifecycles.add(fiber.type);\n      });\n      pendingComponentWillUpdateWarnings = [];\n    }\n\n    var UNSAFE_componentWillUpdateUniqueNames = new Set();\n\n    if (pendingUNSAFE_ComponentWillUpdateWarnings.length > 0) {\n      pendingUNSAFE_ComponentWillUpdateWarnings.forEach(function (fiber) {\n        UNSAFE_componentWillUpdateUniqueNames.add(getComponentNameFromFiber(fiber) || 'Component');\n        didWarnAboutUnsafeLifecycles.add(fiber.type);\n      });\n      pendingUNSAFE_ComponentWillUpdateWarnings = [];\n    } // Finally, we flush all the warnings\n    // UNSAFE_ ones before the deprecated ones, since they'll be 'louder'\n\n\n    if (UNSAFE_componentWillMountUniqueNames.size > 0) {\n      var sortedNames = setToSortedString(UNSAFE_componentWillMountUniqueNames);\n\n      error('Using UNSAFE_componentWillMount in strict mode is not recommended and may indicate bugs in your code. ' + 'See https://reactjs.org/link/unsafe-component-lifecycles for details.\\n\\n' + '* Move code with side effects to componentDidMount, and set initial state in the constructor.\\n' + '\\nPlease update the following components: %s', sortedNames);\n    }\n\n    if (UNSAFE_componentWillReceivePropsUniqueNames.size > 0) {\n      var _sortedNames = setToSortedString(UNSAFE_componentWillReceivePropsUniqueNames);\n\n      error('Using UNSAFE_componentWillReceiveProps in strict mode is not recommended ' + 'and may indicate bugs in your code. ' + 'See https://reactjs.org/link/unsafe-component-lifecycles for details.\\n\\n' + '* Move data fetching code or side effects to componentDidUpdate.\\n' + \"* If you're updating state whenever props change, \" + 'refactor your code to use memoization techniques or move it to ' + 'static getDerivedStateFromProps. Learn more at: https://reactjs.org/link/derived-state\\n' + '\\nPlease update the following components: %s', _sortedNames);\n    }\n\n    if (UNSAFE_componentWillUpdateUniqueNames.size > 0) {\n      var _sortedNames2 = setToSortedString(UNSAFE_componentWillUpdateUniqueNames);\n\n      error('Using UNSAFE_componentWillUpdate in strict mode is not recommended ' + 'and may indicate bugs in your code. ' + 'See https://reactjs.org/link/unsafe-component-lifecycles for details.\\n\\n' + '* Move data fetching code or side effects to componentDidUpdate.\\n' + '\\nPlease update the following components: %s', _sortedNames2);\n    }\n\n    if (componentWillMountUniqueNames.size > 0) {\n      var _sortedNames3 = setToSortedString(componentWillMountUniqueNames);\n\n      warn('componentWillMount has been renamed, and is not recommended for use. ' + 'See https://reactjs.org/link/unsafe-component-lifecycles for details.\\n\\n' + '* Move code with side effects to componentDidMount, and set initial state in the constructor.\\n' + '* Rename componentWillMount to UNSAFE_componentWillMount to suppress ' + 'this warning in non-strict mode. In React 18.x, only the UNSAFE_ name will work. ' + 'To rename all deprecated lifecycles to their new names, you can run ' + '`npx react-codemod rename-unsafe-lifecycles` in your project source folder.\\n' + '\\nPlease update the following components: %s', _sortedNames3);\n    }\n\n    if (componentWillReceivePropsUniqueNames.size > 0) {\n      var _sortedNames4 = setToSortedString(componentWillReceivePropsUniqueNames);\n\n      warn('componentWillReceiveProps has been renamed, and is not recommended for use. ' + 'See https://reactjs.org/link/unsafe-component-lifecycles for details.\\n\\n' + '* Move data fetching code or side effects to componentDidUpdate.\\n' + \"* If you're updating state whenever props change, refactor your \" + 'code to use memoization techniques or move it to ' + 'static getDerivedStateFromProps. Learn more at: https://reactjs.org/link/derived-state\\n' + '* Rename componentWillReceiveProps to UNSAFE_componentWillReceiveProps to suppress ' + 'this warning in non-strict mode. In React 18.x, only the UNSAFE_ name will work. ' + 'To rename all deprecated lifecycles to their new names, you can run ' + '`npx react-codemod rename-unsafe-lifecycles` in your project source folder.\\n' + '\\nPlease update the following components: %s', _sortedNames4);\n    }\n\n    if (componentWillUpdateUniqueNames.size > 0) {\n      var _sortedNames5 = setToSortedString(componentWillUpdateUniqueNames);\n\n      warn('componentWillUpdate has been renamed, and is not recommended for use. ' + 'See https://reactjs.org/link/unsafe-component-lifecycles for details.\\n\\n' + '* Move data fetching code or side effects to componentDidUpdate.\\n' + '* Rename componentWillUpdate to UNSAFE_componentWillUpdate to suppress ' + 'this warning in non-strict mode. In React 18.x, only the UNSAFE_ name will work. ' + 'To rename all deprecated lifecycles to their new names, you can run ' + '`npx react-codemod rename-unsafe-lifecycles` in your project source folder.\\n' + '\\nPlease update the following components: %s', _sortedNames5);\n    }\n  };\n\n  var pendingLegacyContextWarning = new Map(); // Tracks components we have already warned about.\n\n  var didWarnAboutLegacyContext = new Set();\n\n  ReactStrictModeWarnings.recordLegacyContextWarning = function (fiber, instance) {\n    var strictRoot = findStrictRoot(fiber);\n\n    if (strictRoot === null) {\n      error('Expected to find a StrictMode component in a strict mode tree. ' + 'This error is likely caused by a bug in React. Please file an issue.');\n\n      return;\n    } // Dedup strategy: Warn once per component.\n\n\n    if (didWarnAboutLegacyContext.has(fiber.type)) {\n      return;\n    }\n\n    var warningsForRoot = pendingLegacyContextWarning.get(strictRoot);\n\n    if (fiber.type.contextTypes != null || fiber.type.childContextTypes != null || instance !== null && typeof instance.getChildContext === 'function') {\n      if (warningsForRoot === undefined) {\n        warningsForRoot = [];\n        pendingLegacyContextWarning.set(strictRoot, warningsForRoot);\n      }\n\n      warningsForRoot.push(fiber);\n    }\n  };\n\n  ReactStrictModeWarnings.flushLegacyContextWarning = function () {\n    pendingLegacyContextWarning.forEach(function (fiberArray, strictRoot) {\n      if (fiberArray.length === 0) {\n        return;\n      }\n\n      var firstFiber = fiberArray[0];\n      var uniqueNames = new Set();\n      fiberArray.forEach(function (fiber) {\n        uniqueNames.add(getComponentNameFromFiber(fiber) || 'Component');\n        didWarnAboutLegacyContext.add(fiber.type);\n      });\n      var sortedNames = setToSortedString(uniqueNames);\n\n      try {\n        setCurrentFiber(firstFiber);\n\n        error('Legacy context API has been detected within a strict-mode tree.' + '\\n\\nThe old API will be supported in all 16.x releases, but applications ' + 'using it should migrate to the new version.' + '\\n\\nPlease update the following components: %s' + '\\n\\nLearn more about this warning here: https://reactjs.org/link/legacy-context', sortedNames);\n      } finally {\n        resetCurrentFiber();\n      }\n    });\n  };\n\n  ReactStrictModeWarnings.discardPendingWarnings = function () {\n    pendingComponentWillMountWarnings = [];\n    pendingUNSAFE_ComponentWillMountWarnings = [];\n    pendingComponentWillReceivePropsWarnings = [];\n    pendingUNSAFE_ComponentWillReceivePropsWarnings = [];\n    pendingComponentWillUpdateWarnings = [];\n    pendingUNSAFE_ComponentWillUpdateWarnings = [];\n    pendingLegacyContextWarning = new Map();\n  };\n}\n\nfunction resolveDefaultProps(Component, baseProps) {\n  if (Component && Component.defaultProps) {\n    // Resolve default props. Taken from ReactElement\n    var props = assign({}, baseProps);\n    var defaultProps = Component.defaultProps;\n\n    for (var propName in defaultProps) {\n      if (props[propName] === undefined) {\n        props[propName] = defaultProps[propName];\n      }\n    }\n\n    return props;\n  }\n\n  return baseProps;\n}\n\nvar valueCursor = createCursor(null);\nvar rendererSigil;\n\n{\n  // Use this to detect multiple renderers using the same context\n  rendererSigil = {};\n}\n\nvar currentlyRenderingFiber = null;\nvar lastContextDependency = null;\nvar lastFullyObservedContext = null;\nvar isDisallowedContextReadInDEV = false;\nfunction resetContextDependencies() {\n  // This is called right before React yields execution, to ensure `readContext`\n  // cannot be called outside the render phase.\n  currentlyRenderingFiber = null;\n  lastContextDependency = null;\n  lastFullyObservedContext = null;\n\n  {\n    isDisallowedContextReadInDEV = false;\n  }\n}\nfunction enterDisallowedContextReadInDEV() {\n  {\n    isDisallowedContextReadInDEV = true;\n  }\n}\nfunction exitDisallowedContextReadInDEV() {\n  {\n    isDisallowedContextReadInDEV = false;\n  }\n}\nfunction pushProvider(providerFiber, context, nextValue) {\n  {\n    push(valueCursor, context._currentValue, providerFiber);\n    context._currentValue = nextValue;\n\n    {\n      if (context._currentRenderer !== undefined && context._currentRenderer !== null && context._currentRenderer !== rendererSigil) {\n        error('Detected multiple renderers concurrently rendering the ' + 'same context provider. This is currently unsupported.');\n      }\n\n      context._currentRenderer = rendererSigil;\n    }\n  }\n}\nfunction popProvider(context, providerFiber) {\n  var currentValue = valueCursor.current;\n  pop(valueCursor, providerFiber);\n\n  {\n    {\n      context._currentValue = currentValue;\n    }\n  }\n}\nfunction scheduleContextWorkOnParentPath(parent, renderLanes, propagationRoot) {\n  // Update the child lanes of all the ancestors, including the alternates.\n  var node = parent;\n\n  while (node !== null) {\n    var alternate = node.alternate;\n\n    if (!isSubsetOfLanes(node.childLanes, renderLanes)) {\n      node.childLanes = mergeLanes(node.childLanes, renderLanes);\n\n      if (alternate !== null) {\n        alternate.childLanes = mergeLanes(alternate.childLanes, renderLanes);\n      }\n    } else if (alternate !== null && !isSubsetOfLanes(alternate.childLanes, renderLanes)) {\n      alternate.childLanes = mergeLanes(alternate.childLanes, renderLanes);\n    }\n\n    if (node === propagationRoot) {\n      break;\n    }\n\n    node = node.return;\n  }\n\n  {\n    if (node !== propagationRoot) {\n      error('Expected to find the propagation root when scheduling context work. ' + 'This error is likely caused by a bug in React. Please file an issue.');\n    }\n  }\n}\nfunction propagateContextChange(workInProgress, context, renderLanes) {\n  {\n    propagateContextChange_eager(workInProgress, context, renderLanes);\n  }\n}\n\nfunction propagateContextChange_eager(workInProgress, context, renderLanes) {\n\n  var fiber = workInProgress.child;\n\n  if (fiber !== null) {\n    // Set the return pointer of the child to the work-in-progress fiber.\n    fiber.return = workInProgress;\n  }\n\n  while (fiber !== null) {\n    var nextFiber = void 0; // Visit this fiber.\n\n    var list = fiber.dependencies;\n\n    if (list !== null) {\n      nextFiber = fiber.child;\n      var dependency = list.firstContext;\n\n      while (dependency !== null) {\n        // Check if the context matches.\n        if (dependency.context === context) {\n          // Match! Schedule an update on this fiber.\n          if (fiber.tag === ClassComponent) {\n            // Schedule a force update on the work-in-progress.\n            var lane = pickArbitraryLane(renderLanes);\n            var update = createUpdate(NoTimestamp, lane);\n            update.tag = ForceUpdate; // TODO: Because we don't have a work-in-progress, this will add the\n            // update to the current fiber, too, which means it will persist even if\n            // this render is thrown away. Since it's a race condition, not sure it's\n            // worth fixing.\n            // Inlined `enqueueUpdate` to remove interleaved update check\n\n            var updateQueue = fiber.updateQueue;\n\n            if (updateQueue === null) ; else {\n              var sharedQueue = updateQueue.shared;\n              var pending = sharedQueue.pending;\n\n              if (pending === null) {\n                // This is the first update. Create a circular list.\n                update.next = update;\n              } else {\n                update.next = pending.next;\n                pending.next = update;\n              }\n\n              sharedQueue.pending = update;\n            }\n          }\n\n          fiber.lanes = mergeLanes(fiber.lanes, renderLanes);\n          var alternate = fiber.alternate;\n\n          if (alternate !== null) {\n            alternate.lanes = mergeLanes(alternate.lanes, renderLanes);\n          }\n\n          scheduleContextWorkOnParentPath(fiber.return, renderLanes, workInProgress); // Mark the updated lanes on the list, too.\n\n          list.lanes = mergeLanes(list.lanes, renderLanes); // Since we already found a match, we can stop traversing the\n          // dependency list.\n\n          break;\n        }\n\n        dependency = dependency.next;\n      }\n    } else if (fiber.tag === ContextProvider) {\n      // Don't scan deeper if this is a matching provider\n      nextFiber = fiber.type === workInProgress.type ? null : fiber.child;\n    } else if (fiber.tag === DehydratedFragment) {\n      // If a dehydrated suspense boundary is in this subtree, we don't know\n      // if it will have any context consumers in it. The best we can do is\n      // mark it as having updates.\n      var parentSuspense = fiber.return;\n\n      if (parentSuspense === null) {\n        throw new Error('We just came from a parent so we must have had a parent. This is a bug in React.');\n      }\n\n      parentSuspense.lanes = mergeLanes(parentSuspense.lanes, renderLanes);\n      var _alternate = parentSuspense.alternate;\n\n      if (_alternate !== null) {\n        _alternate.lanes = mergeLanes(_alternate.lanes, renderLanes);\n      } // This is intentionally passing this fiber as the parent\n      // because we want to schedule this fiber as having work\n      // on its children. We'll use the childLanes on\n      // this fiber to indicate that a context has changed.\n\n\n      scheduleContextWorkOnParentPath(parentSuspense, renderLanes, workInProgress);\n      nextFiber = fiber.sibling;\n    } else {\n      // Traverse down.\n      nextFiber = fiber.child;\n    }\n\n    if (nextFiber !== null) {\n      // Set the return pointer of the child to the work-in-progress fiber.\n      nextFiber.return = fiber;\n    } else {\n      // No child. Traverse to next sibling.\n      nextFiber = fiber;\n\n      while (nextFiber !== null) {\n        if (nextFiber === workInProgress) {\n          // We're back to the root of this subtree. Exit.\n          nextFiber = null;\n          break;\n        }\n\n        var sibling = nextFiber.sibling;\n\n        if (sibling !== null) {\n          // Set the return pointer of the sibling to the work-in-progress fiber.\n          sibling.return = nextFiber.return;\n          nextFiber = sibling;\n          break;\n        } // No more siblings. Traverse up.\n\n\n        nextFiber = nextFiber.return;\n      }\n    }\n\n    fiber = nextFiber;\n  }\n}\nfunction prepareToReadContext(workInProgress, renderLanes) {\n  currentlyRenderingFiber = workInProgress;\n  lastContextDependency = null;\n  lastFullyObservedContext = null;\n  var dependencies = workInProgress.dependencies;\n\n  if (dependencies !== null) {\n    {\n      var firstContext = dependencies.firstContext;\n\n      if (firstContext !== null) {\n        if (includesSomeLane(dependencies.lanes, renderLanes)) {\n          // Context list has a pending update. Mark that this fiber performed work.\n          markWorkInProgressReceivedUpdate();\n        } // Reset the work-in-progress list\n\n\n        dependencies.firstContext = null;\n      }\n    }\n  }\n}\nfunction readContext(context) {\n  {\n    // This warning would fire if you read context inside a Hook like useMemo.\n    // Unlike the class check below, it's not enforced in production for perf.\n    if (isDisallowedContextReadInDEV) {\n      error('Context can only be read while React is rendering. ' + 'In classes, you can read it in the render method or getDerivedStateFromProps. ' + 'In function components, you can read it directly in the function body, but not ' + 'inside Hooks like useReducer() or useMemo().');\n    }\n  }\n\n  var value =  context._currentValue ;\n\n  if (lastFullyObservedContext === context) ; else {\n    var contextItem = {\n      context: context,\n      memoizedValue: value,\n      next: null\n    };\n\n    if (lastContextDependency === null) {\n      if (currentlyRenderingFiber === null) {\n        throw new Error('Context can only be read while React is rendering. ' + 'In classes, you can read it in the render method or getDerivedStateFromProps. ' + 'In function components, you can read it directly in the function body, but not ' + 'inside Hooks like useReducer() or useMemo().');\n      } // This is the first dependency for this component. Create a new list.\n\n\n      lastContextDependency = contextItem;\n      currentlyRenderingFiber.dependencies = {\n        lanes: NoLanes,\n        firstContext: contextItem\n      };\n    } else {\n      // Append a new context item.\n      lastContextDependency = lastContextDependency.next = contextItem;\n    }\n  }\n\n  return value;\n}\n\n// render. When this render exits, either because it finishes or because it is\n// interrupted, the interleaved updates will be transferred onto the main part\n// of the queue.\n\nvar concurrentQueues = null;\nfunction pushConcurrentUpdateQueue(queue) {\n  if (concurrentQueues === null) {\n    concurrentQueues = [queue];\n  } else {\n    concurrentQueues.push(queue);\n  }\n}\nfunction finishQueueingConcurrentUpdates() {\n  // Transfer the interleaved updates onto the main queue. Each queue has a\n  // `pending` field and an `interleaved` field. When they are not null, they\n  // point to the last node in a circular linked list. We need to append the\n  // interleaved list to the end of the pending list by joining them into a\n  // single, circular list.\n  if (concurrentQueues !== null) {\n    for (var i = 0; i < concurrentQueues.length; i++) {\n      var queue = concurrentQueues[i];\n      var lastInterleavedUpdate = queue.interleaved;\n\n      if (lastInterleavedUpdate !== null) {\n        queue.interleaved = null;\n        var firstInterleavedUpdate = lastInterleavedUpdate.next;\n        var lastPendingUpdate = queue.pending;\n\n        if (lastPendingUpdate !== null) {\n          var firstPendingUpdate = lastPendingUpdate.next;\n          lastPendingUpdate.next = firstInterleavedUpdate;\n          lastInterleavedUpdate.next = firstPendingUpdate;\n        }\n\n        queue.pending = lastInterleavedUpdate;\n      }\n    }\n\n    concurrentQueues = null;\n  }\n}\nfunction enqueueConcurrentHookUpdate(fiber, queue, update, lane) {\n  var interleaved = queue.interleaved;\n\n  if (interleaved === null) {\n    // This is the first update. Create a circular list.\n    update.next = update; // At the end of the current render, this queue's interleaved updates will\n    // be transferred to the pending queue.\n\n    pushConcurrentUpdateQueue(queue);\n  } else {\n    update.next = interleaved.next;\n    interleaved.next = update;\n  }\n\n  queue.interleaved = update;\n  return markUpdateLaneFromFiberToRoot(fiber, lane);\n}\nfunction enqueueConcurrentHookUpdateAndEagerlyBailout(fiber, queue, update, lane) {\n  var interleaved = queue.interleaved;\n\n  if (interleaved === null) {\n    // This is the first update. Create a circular list.\n    update.next = update; // At the end of the current render, this queue's interleaved updates will\n    // be transferred to the pending queue.\n\n    pushConcurrentUpdateQueue(queue);\n  } else {\n    update.next = interleaved.next;\n    interleaved.next = update;\n  }\n\n  queue.interleaved = update;\n}\nfunction enqueueConcurrentClassUpdate(fiber, queue, update, lane) {\n  var interleaved = queue.interleaved;\n\n  if (interleaved === null) {\n    // This is the first update. Create a circular list.\n    update.next = update; // At the end of the current render, this queue's interleaved updates will\n    // be transferred to the pending queue.\n\n    pushConcurrentUpdateQueue(queue);\n  } else {\n    update.next = interleaved.next;\n    interleaved.next = update;\n  }\n\n  queue.interleaved = update;\n  return markUpdateLaneFromFiberToRoot(fiber, lane);\n}\nfunction enqueueConcurrentRenderForLane(fiber, lane) {\n  return markUpdateLaneFromFiberToRoot(fiber, lane);\n} // Calling this function outside this module should only be done for backwards\n// compatibility and should always be accompanied by a warning.\n\nvar unsafe_markUpdateLaneFromFiberToRoot = markUpdateLaneFromFiberToRoot;\n\nfunction markUpdateLaneFromFiberToRoot(sourceFiber, lane) {\n  // Update the source fiber's lanes\n  sourceFiber.lanes = mergeLanes(sourceFiber.lanes, lane);\n  var alternate = sourceFiber.alternate;\n\n  if (alternate !== null) {\n    alternate.lanes = mergeLanes(alternate.lanes, lane);\n  }\n\n  {\n    if (alternate === null && (sourceFiber.flags & (Placement | Hydrating)) !== NoFlags) {\n      warnAboutUpdateOnNotYetMountedFiberInDEV(sourceFiber);\n    }\n  } // Walk the parent path to the root and update the child lanes.\n\n\n  var node = sourceFiber;\n  var parent = sourceFiber.return;\n\n  while (parent !== null) {\n    parent.childLanes = mergeLanes(parent.childLanes, lane);\n    alternate = parent.alternate;\n\n    if (alternate !== null) {\n      alternate.childLanes = mergeLanes(alternate.childLanes, lane);\n    } else {\n      {\n        if ((parent.flags & (Placement | Hydrating)) !== NoFlags) {\n          warnAboutUpdateOnNotYetMountedFiberInDEV(sourceFiber);\n        }\n      }\n    }\n\n    node = parent;\n    parent = parent.return;\n  }\n\n  if (node.tag === HostRoot) {\n    var root = node.stateNode;\n    return root;\n  } else {\n    return null;\n  }\n}\n\nvar UpdateState = 0;\nvar ReplaceState = 1;\nvar ForceUpdate = 2;\nvar CaptureUpdate = 3; // Global state that is reset at the beginning of calling `processUpdateQueue`.\n// It should only be read right after calling `processUpdateQueue`, via\n// `checkHasForceUpdateAfterProcessing`.\n\nvar hasForceUpdate = false;\nvar didWarnUpdateInsideUpdate;\nvar currentlyProcessingQueue;\n\n{\n  didWarnUpdateInsideUpdate = false;\n  currentlyProcessingQueue = null;\n}\n\nfunction initializeUpdateQueue(fiber) {\n  var queue = {\n    baseState: fiber.memoizedState,\n    firstBaseUpdate: null,\n    lastBaseUpdate: null,\n    shared: {\n      pending: null,\n      interleaved: null,\n      lanes: NoLanes\n    },\n    effects: null\n  };\n  fiber.updateQueue = queue;\n}\nfunction cloneUpdateQueue(current, workInProgress) {\n  // Clone the update queue from current. Unless it's already a clone.\n  var queue = workInProgress.updateQueue;\n  var currentQueue = current.updateQueue;\n\n  if (queue === currentQueue) {\n    var clone = {\n      baseState: currentQueue.baseState,\n      firstBaseUpdate: currentQueue.firstBaseUpdate,\n      lastBaseUpdate: currentQueue.lastBaseUpdate,\n      shared: currentQueue.shared,\n      effects: currentQueue.effects\n    };\n    workInProgress.updateQueue = clone;\n  }\n}\nfunction createUpdate(eventTime, lane) {\n  var update = {\n    eventTime: eventTime,\n    lane: lane,\n    tag: UpdateState,\n    payload: null,\n    callback: null,\n    next: null\n  };\n  return update;\n}\nfunction enqueueUpdate(fiber, update, lane) {\n  var updateQueue = fiber.updateQueue;\n\n  if (updateQueue === null) {\n    // Only occurs if the fiber has been unmounted.\n    return null;\n  }\n\n  var sharedQueue = updateQueue.shared;\n\n  {\n    if (currentlyProcessingQueue === sharedQueue && !didWarnUpdateInsideUpdate) {\n      error('An update (setState, replaceState, or forceUpdate) was scheduled ' + 'from inside an update function. Update functions should be pure, ' + 'with zero side-effects. Consider using componentDidUpdate or a ' + 'callback.');\n\n      didWarnUpdateInsideUpdate = true;\n    }\n  }\n\n  if (isUnsafeClassRenderPhaseUpdate()) {\n    // This is an unsafe render phase update. Add directly to the update\n    // queue so we can process it immediately during the current render.\n    var pending = sharedQueue.pending;\n\n    if (pending === null) {\n      // This is the first update. Create a circular list.\n      update.next = update;\n    } else {\n      update.next = pending.next;\n      pending.next = update;\n    }\n\n    sharedQueue.pending = update; // Update the childLanes even though we're most likely already rendering\n    // this fiber. This is for backwards compatibility in the case where you\n    // update a different component during render phase than the one that is\n    // currently renderings (a pattern that is accompanied by a warning).\n\n    return unsafe_markUpdateLaneFromFiberToRoot(fiber, lane);\n  } else {\n    return enqueueConcurrentClassUpdate(fiber, sharedQueue, update, lane);\n  }\n}\nfunction entangleTransitions(root, fiber, lane) {\n  var updateQueue = fiber.updateQueue;\n\n  if (updateQueue === null) {\n    // Only occurs if the fiber has been unmounted.\n    return;\n  }\n\n  var sharedQueue = updateQueue.shared;\n\n  if (isTransitionLane(lane)) {\n    var queueLanes = sharedQueue.lanes; // If any entangled lanes are no longer pending on the root, then they must\n    // have finished. We can remove them from the shared queue, which represents\n    // a superset of the actually pending lanes. In some cases we may entangle\n    // more than we need to, but that's OK. In fact it's worse if we *don't*\n    // entangle when we should.\n\n    queueLanes = intersectLanes(queueLanes, root.pendingLanes); // Entangle the new transition lane with the other transition lanes.\n\n    var newQueueLanes = mergeLanes(queueLanes, lane);\n    sharedQueue.lanes = newQueueLanes; // Even if queue.lanes already include lane, we don't know for certain if\n    // the lane finished since the last time we entangled it. So we need to\n    // entangle it again, just to be sure.\n\n    markRootEntangled(root, newQueueLanes);\n  }\n}\nfunction enqueueCapturedUpdate(workInProgress, capturedUpdate) {\n  // Captured updates are updates that are thrown by a child during the render\n  // phase. They should be discarded if the render is aborted. Therefore,\n  // we should only put them on the work-in-progress queue, not the current one.\n  var queue = workInProgress.updateQueue; // Check if the work-in-progress queue is a clone.\n\n  var current = workInProgress.alternate;\n\n  if (current !== null) {\n    var currentQueue = current.updateQueue;\n\n    if (queue === currentQueue) {\n      // The work-in-progress queue is the same as current. This happens when\n      // we bail out on a parent fiber that then captures an error thrown by\n      // a child. Since we want to append the update only to the work-in\n      // -progress queue, we need to clone the updates. We usually clone during\n      // processUpdateQueue, but that didn't happen in this case because we\n      // skipped over the parent when we bailed out.\n      var newFirst = null;\n      var newLast = null;\n      var firstBaseUpdate = queue.firstBaseUpdate;\n\n      if (firstBaseUpdate !== null) {\n        // Loop through the updates and clone them.\n        var update = firstBaseUpdate;\n\n        do {\n          var clone = {\n            eventTime: update.eventTime,\n            lane: update.lane,\n            tag: update.tag,\n            payload: update.payload,\n            callback: update.callback,\n            next: null\n          };\n\n          if (newLast === null) {\n            newFirst = newLast = clone;\n          } else {\n            newLast.next = clone;\n            newLast = clone;\n          }\n\n          update = update.next;\n        } while (update !== null); // Append the captured update the end of the cloned list.\n\n\n        if (newLast === null) {\n          newFirst = newLast = capturedUpdate;\n        } else {\n          newLast.next = capturedUpdate;\n          newLast = capturedUpdate;\n        }\n      } else {\n        // There are no base updates.\n        newFirst = newLast = capturedUpdate;\n      }\n\n      queue = {\n        baseState: currentQueue.baseState,\n        firstBaseUpdate: newFirst,\n        lastBaseUpdate: newLast,\n        shared: currentQueue.shared,\n        effects: currentQueue.effects\n      };\n      workInProgress.updateQueue = queue;\n      return;\n    }\n  } // Append the update to the end of the list.\n\n\n  var lastBaseUpdate = queue.lastBaseUpdate;\n\n  if (lastBaseUpdate === null) {\n    queue.firstBaseUpdate = capturedUpdate;\n  } else {\n    lastBaseUpdate.next = capturedUpdate;\n  }\n\n  queue.lastBaseUpdate = capturedUpdate;\n}\n\nfunction getStateFromUpdate(workInProgress, queue, update, prevState, nextProps, instance) {\n  switch (update.tag) {\n    case ReplaceState:\n      {\n        var payload = update.payload;\n\n        if (typeof payload === 'function') {\n          // Updater function\n          {\n            enterDisallowedContextReadInDEV();\n          }\n\n          var nextState = payload.call(instance, prevState, nextProps);\n\n          {\n            if ( workInProgress.mode & StrictLegacyMode) {\n              setIsStrictModeForDevtools(true);\n\n              try {\n                payload.call(instance, prevState, nextProps);\n              } finally {\n                setIsStrictModeForDevtools(false);\n              }\n            }\n\n            exitDisallowedContextReadInDEV();\n          }\n\n          return nextState;\n        } // State object\n\n\n        return payload;\n      }\n\n    case CaptureUpdate:\n      {\n        workInProgress.flags = workInProgress.flags & ~ShouldCapture | DidCapture;\n      }\n    // Intentional fallthrough\n\n    case UpdateState:\n      {\n        var _payload = update.payload;\n        var partialState;\n\n        if (typeof _payload === 'function') {\n          // Updater function\n          {\n            enterDisallowedContextReadInDEV();\n          }\n\n          partialState = _payload.call(instance, prevState, nextProps);\n\n          {\n            if ( workInProgress.mode & StrictLegacyMode) {\n              setIsStrictModeForDevtools(true);\n\n              try {\n                _payload.call(instance, prevState, nextProps);\n              } finally {\n                setIsStrictModeForDevtools(false);\n              }\n            }\n\n            exitDisallowedContextReadInDEV();\n          }\n        } else {\n          // Partial state object\n          partialState = _payload;\n        }\n\n        if (partialState === null || partialState === undefined) {\n          // Null and undefined are treated as no-ops.\n          return prevState;\n        } // Merge the partial state and the previous state.\n\n\n        return assign({}, prevState, partialState);\n      }\n\n    case ForceUpdate:\n      {\n        hasForceUpdate = true;\n        return prevState;\n      }\n  }\n\n  return prevState;\n}\n\nfunction processUpdateQueue(workInProgress, props, instance, renderLanes) {\n  // This is always non-null on a ClassComponent or HostRoot\n  var queue = workInProgress.updateQueue;\n  hasForceUpdate = false;\n\n  {\n    currentlyProcessingQueue = queue.shared;\n  }\n\n  var firstBaseUpdate = queue.firstBaseUpdate;\n  var lastBaseUpdate = queue.lastBaseUpdate; // Check if there are pending updates. If so, transfer them to the base queue.\n\n  var pendingQueue = queue.shared.pending;\n\n  if (pendingQueue !== null) {\n    queue.shared.pending = null; // The pending queue is circular. Disconnect the pointer between first\n    // and last so that it's non-circular.\n\n    var lastPendingUpdate = pendingQueue;\n    var firstPendingUpdate = lastPendingUpdate.next;\n    lastPendingUpdate.next = null; // Append pending updates to base queue\n\n    if (lastBaseUpdate === null) {\n      firstBaseUpdate = firstPendingUpdate;\n    } else {\n      lastBaseUpdate.next = firstPendingUpdate;\n    }\n\n    lastBaseUpdate = lastPendingUpdate; // If there's a current queue, and it's different from the base queue, then\n    // we need to transfer the updates to that queue, too. Because the base\n    // queue is a singly-linked list with no cycles, we can append to both\n    // lists and take advantage of structural sharing.\n    // TODO: Pass `current` as argument\n\n    var current = workInProgress.alternate;\n\n    if (current !== null) {\n      // This is always non-null on a ClassComponent or HostRoot\n      var currentQueue = current.updateQueue;\n      var currentLastBaseUpdate = currentQueue.lastBaseUpdate;\n\n      if (currentLastBaseUpdate !== lastBaseUpdate) {\n        if (currentLastBaseUpdate === null) {\n          currentQueue.firstBaseUpdate = firstPendingUpdate;\n        } else {\n          currentLastBaseUpdate.next = firstPendingUpdate;\n        }\n\n        currentQueue.lastBaseUpdate = lastPendingUpdate;\n      }\n    }\n  } // These values may change as we process the queue.\n\n\n  if (firstBaseUpdate !== null) {\n    // Iterate through the list of updates to compute the result.\n    var newState = queue.baseState; // TODO: Don't need to accumulate this. Instead, we can remove renderLanes\n    // from the original lanes.\n\n    var newLanes = NoLanes;\n    var newBaseState = null;\n    var newFirstBaseUpdate = null;\n    var newLastBaseUpdate = null;\n    var update = firstBaseUpdate;\n\n    do {\n      var updateLane = update.lane;\n      var updateEventTime = update.eventTime;\n\n      if (!isSubsetOfLanes(renderLanes, updateLane)) {\n        // Priority is insufficient. Skip this update. If this is the first\n        // skipped update, the previous update/state is the new base\n        // update/state.\n        var clone = {\n          eventTime: updateEventTime,\n          lane: updateLane,\n          tag: update.tag,\n          payload: update.payload,\n          callback: update.callback,\n          next: null\n        };\n\n        if (newLastBaseUpdate === null) {\n          newFirstBaseUpdate = newLastBaseUpdate = clone;\n          newBaseState = newState;\n        } else {\n          newLastBaseUpdate = newLastBaseUpdate.next = clone;\n        } // Update the remaining priority in the queue.\n\n\n        newLanes = mergeLanes(newLanes, updateLane);\n      } else {\n        // This update does have sufficient priority.\n        if (newLastBaseUpdate !== null) {\n          var _clone = {\n            eventTime: updateEventTime,\n            // This update is going to be committed so we never want uncommit\n            // it. Using NoLane works because 0 is a subset of all bitmasks, so\n            // this will never be skipped by the check above.\n            lane: NoLane,\n            tag: update.tag,\n            payload: update.payload,\n            callback: update.callback,\n            next: null\n          };\n          newLastBaseUpdate = newLastBaseUpdate.next = _clone;\n        } // Process this update.\n\n\n        newState = getStateFromUpdate(workInProgress, queue, update, newState, props, instance);\n        var callback = update.callback;\n\n        if (callback !== null && // If the update was already committed, we should not queue its\n        // callback again.\n        update.lane !== NoLane) {\n          workInProgress.flags |= Callback;\n          var effects = queue.effects;\n\n          if (effects === null) {\n            queue.effects = [update];\n          } else {\n            effects.push(update);\n          }\n        }\n      }\n\n      update = update.next;\n\n      if (update === null) {\n        pendingQueue = queue.shared.pending;\n\n        if (pendingQueue === null) {\n          break;\n        } else {\n          // An update was scheduled from inside a reducer. Add the new\n          // pending updates to the end of the list and keep processing.\n          var _lastPendingUpdate = pendingQueue; // Intentionally unsound. Pending updates form a circular list, but we\n          // unravel them when transferring them to the base queue.\n\n          var _firstPendingUpdate = _lastPendingUpdate.next;\n          _lastPendingUpdate.next = null;\n          update = _firstPendingUpdate;\n          queue.lastBaseUpdate = _lastPendingUpdate;\n          queue.shared.pending = null;\n        }\n      }\n    } while (true);\n\n    if (newLastBaseUpdate === null) {\n      newBaseState = newState;\n    }\n\n    queue.baseState = newBaseState;\n    queue.firstBaseUpdate = newFirstBaseUpdate;\n    queue.lastBaseUpdate = newLastBaseUpdate; // Interleaved updates are stored on a separate queue. We aren't going to\n    // process them during this render, but we do need to track which lanes\n    // are remaining.\n\n    var lastInterleaved = queue.shared.interleaved;\n\n    if (lastInterleaved !== null) {\n      var interleaved = lastInterleaved;\n\n      do {\n        newLanes = mergeLanes(newLanes, interleaved.lane);\n        interleaved = interleaved.next;\n      } while (interleaved !== lastInterleaved);\n    } else if (firstBaseUpdate === null) {\n      // `queue.lanes` is used for entangling transitions. We can set it back to\n      // zero once the queue is empty.\n      queue.shared.lanes = NoLanes;\n    } // Set the remaining expiration time to be whatever is remaining in the queue.\n    // This should be fine because the only two other things that contribute to\n    // expiration time are props and context. We're already in the middle of the\n    // begin phase by the time we start processing the queue, so we've already\n    // dealt with the props. Context in components that specify\n    // shouldComponentUpdate is tricky; but we'll have to account for\n    // that regardless.\n\n\n    markSkippedUpdateLanes(newLanes);\n    workInProgress.lanes = newLanes;\n    workInProgress.memoizedState = newState;\n  }\n\n  {\n    currentlyProcessingQueue = null;\n  }\n}\n\nfunction callCallback(callback, context) {\n  if (typeof callback !== 'function') {\n    throw new Error('Invalid argument passed as callback. Expected a function. Instead ' + (\"received: \" + callback));\n  }\n\n  callback.call(context);\n}\n\nfunction resetHasForceUpdateBeforeProcessing() {\n  hasForceUpdate = false;\n}\nfunction checkHasForceUpdateAfterProcessing() {\n  return hasForceUpdate;\n}\nfunction commitUpdateQueue(finishedWork, finishedQueue, instance) {\n  // Commit the effects\n  var effects = finishedQueue.effects;\n  finishedQueue.effects = null;\n\n  if (effects !== null) {\n    for (var i = 0; i < effects.length; i++) {\n      var effect = effects[i];\n      var callback = effect.callback;\n\n      if (callback !== null) {\n        effect.callback = null;\n        callCallback(callback, instance);\n      }\n    }\n  }\n}\n\nvar fakeInternalInstance = {}; // React.Component uses a shared frozen object by default.\n// We'll use it to determine whether we need to initialize legacy refs.\n\nvar emptyRefsObject = new React.Component().refs;\nvar didWarnAboutStateAssignmentForComponent;\nvar didWarnAboutUninitializedState;\nvar didWarnAboutGetSnapshotBeforeUpdateWithoutDidUpdate;\nvar didWarnAboutLegacyLifecyclesAndDerivedState;\nvar didWarnAboutUndefinedDerivedState;\nvar warnOnUndefinedDerivedState;\nvar warnOnInvalidCallback;\nvar didWarnAboutDirectlyAssigningPropsToState;\nvar didWarnAboutContextTypeAndContextTypes;\nvar didWarnAboutInvalidateContextType;\n\n{\n  didWarnAboutStateAssignmentForComponent = new Set();\n  didWarnAboutUninitializedState = new Set();\n  didWarnAboutGetSnapshotBeforeUpdateWithoutDidUpdate = new Set();\n  didWarnAboutLegacyLifecyclesAndDerivedState = new Set();\n  didWarnAboutDirectlyAssigningPropsToState = new Set();\n  didWarnAboutUndefinedDerivedState = new Set();\n  didWarnAboutContextTypeAndContextTypes = new Set();\n  didWarnAboutInvalidateContextType = new Set();\n  var didWarnOnInvalidCallback = new Set();\n\n  warnOnInvalidCallback = function (callback, callerName) {\n    if (callback === null || typeof callback === 'function') {\n      return;\n    }\n\n    var key = callerName + '_' + callback;\n\n    if (!didWarnOnInvalidCallback.has(key)) {\n      didWarnOnInvalidCallback.add(key);\n\n      error('%s(...): Expected the last optional `callback` argument to be a ' + 'function. Instead received: %s.', callerName, callback);\n    }\n  };\n\n  warnOnUndefinedDerivedState = function (type, partialState) {\n    if (partialState === undefined) {\n      var componentName = getComponentNameFromType(type) || 'Component';\n\n      if (!didWarnAboutUndefinedDerivedState.has(componentName)) {\n        didWarnAboutUndefinedDerivedState.add(componentName);\n\n        error('%s.getDerivedStateFromProps(): A valid state object (or null) must be returned. ' + 'You have returned undefined.', componentName);\n      }\n    }\n  }; // This is so gross but it's at least non-critical and can be removed if\n  // it causes problems. This is meant to give a nicer error message for\n  // ReactDOM15.unstable_renderSubtreeIntoContainer(reactDOM16Component,\n  // ...)) which otherwise throws a \"_processChildContext is not a function\"\n  // exception.\n\n\n  Object.defineProperty(fakeInternalInstance, '_processChildContext', {\n    enumerable: false,\n    value: function () {\n      throw new Error('_processChildContext is not available in React 16+. This likely ' + 'means you have multiple copies of React and are attempting to nest ' + 'a React 15 tree inside a React 16 tree using ' + \"unstable_renderSubtreeIntoContainer, which isn't supported. Try \" + 'to make sure you have only one copy of React (and ideally, switch ' + 'to ReactDOM.createPortal).');\n    }\n  });\n  Object.freeze(fakeInternalInstance);\n}\n\nfunction applyDerivedStateFromProps(workInProgress, ctor, getDerivedStateFromProps, nextProps) {\n  var prevState = workInProgress.memoizedState;\n  var partialState = getDerivedStateFromProps(nextProps, prevState);\n\n  {\n    if ( workInProgress.mode & StrictLegacyMode) {\n      setIsStrictModeForDevtools(true);\n\n      try {\n        // Invoke the function an extra time to help detect side-effects.\n        partialState = getDerivedStateFromProps(nextProps, prevState);\n      } finally {\n        setIsStrictModeForDevtools(false);\n      }\n    }\n\n    warnOnUndefinedDerivedState(ctor, partialState);\n  } // Merge the partial state and the previous state.\n\n\n  var memoizedState = partialState === null || partialState === undefined ? prevState : assign({}, prevState, partialState);\n  workInProgress.memoizedState = memoizedState; // Once the update queue is empty, persist the derived state onto the\n  // base state.\n\n  if (workInProgress.lanes === NoLanes) {\n    // Queue is always non-null for classes\n    var updateQueue = workInProgress.updateQueue;\n    updateQueue.baseState = memoizedState;\n  }\n}\n\nvar classComponentUpdater = {\n  isMounted: isMounted,\n  enqueueSetState: function (inst, payload, callback) {\n    var fiber = get(inst);\n    var eventTime = requestEventTime();\n    var lane = requestUpdateLane(fiber);\n    var update = createUpdate(eventTime, lane);\n    update.payload = payload;\n\n    if (callback !== undefined && callback !== null) {\n      {\n        warnOnInvalidCallback(callback, 'setState');\n      }\n\n      update.callback = callback;\n    }\n\n    var root = enqueueUpdate(fiber, update, lane);\n\n    if (root !== null) {\n      scheduleUpdateOnFiber(root, fiber, lane, eventTime);\n      entangleTransitions(root, fiber, lane);\n    }\n\n    {\n      markStateUpdateScheduled(fiber, lane);\n    }\n  },\n  enqueueReplaceState: function (inst, payload, callback) {\n    var fiber = get(inst);\n    var eventTime = requestEventTime();\n    var lane = requestUpdateLane(fiber);\n    var update = createUpdate(eventTime, lane);\n    update.tag = ReplaceState;\n    update.payload = payload;\n\n    if (callback !== undefined && callback !== null) {\n      {\n        warnOnInvalidCallback(callback, 'replaceState');\n      }\n\n      update.callback = callback;\n    }\n\n    var root = enqueueUpdate(fiber, update, lane);\n\n    if (root !== null) {\n      scheduleUpdateOnFiber(root, fiber, lane, eventTime);\n      entangleTransitions(root, fiber, lane);\n    }\n\n    {\n      markStateUpdateScheduled(fiber, lane);\n    }\n  },\n  enqueueForceUpdate: function (inst, callback) {\n    var fiber = get(inst);\n    var eventTime = requestEventTime();\n    var lane = requestUpdateLane(fiber);\n    var update = createUpdate(eventTime, lane);\n    update.tag = ForceUpdate;\n\n    if (callback !== undefined && callback !== null) {\n      {\n        warnOnInvalidCallback(callback, 'forceUpdate');\n      }\n\n      update.callback = callback;\n    }\n\n    var root = enqueueUpdate(fiber, update, lane);\n\n    if (root !== null) {\n      scheduleUpdateOnFiber(root, fiber, lane, eventTime);\n      entangleTransitions(root, fiber, lane);\n    }\n\n    {\n      markForceUpdateScheduled(fiber, lane);\n    }\n  }\n};\n\nfunction checkShouldComponentUpdate(workInProgress, ctor, oldProps, newProps, oldState, newState, nextContext) {\n  var instance = workInProgress.stateNode;\n\n  if (typeof instance.shouldComponentUpdate === 'function') {\n    var shouldUpdate = instance.shouldComponentUpdate(newProps, newState, nextContext);\n\n    {\n      if ( workInProgress.mode & StrictLegacyMode) {\n        setIsStrictModeForDevtools(true);\n\n        try {\n          // Invoke the function an extra time to help detect side-effects.\n          shouldUpdate = instance.shouldComponentUpdate(newProps, newState, nextContext);\n        } finally {\n          setIsStrictModeForDevtools(false);\n        }\n      }\n\n      if (shouldUpdate === undefined) {\n        error('%s.shouldComponentUpdate(): Returned undefined instead of a ' + 'boolean value. Make sure to return true or false.', getComponentNameFromType(ctor) || 'Component');\n      }\n    }\n\n    return shouldUpdate;\n  }\n\n  if (ctor.prototype && ctor.prototype.isPureReactComponent) {\n    return !shallowEqual(oldProps, newProps) || !shallowEqual(oldState, newState);\n  }\n\n  return true;\n}\n\nfunction checkClassInstance(workInProgress, ctor, newProps) {\n  var instance = workInProgress.stateNode;\n\n  {\n    var name = getComponentNameFromType(ctor) || 'Component';\n    var renderPresent = instance.render;\n\n    if (!renderPresent) {\n      if (ctor.prototype && typeof ctor.prototype.render === 'function') {\n        error('%s(...): No `render` method found on the returned component ' + 'instance: did you accidentally return an object from the constructor?', name);\n      } else {\n        error('%s(...): No `render` method found on the returned component ' + 'instance: you may have forgotten to define `render`.', name);\n      }\n    }\n\n    if (instance.getInitialState && !instance.getInitialState.isReactClassApproved && !instance.state) {\n      error('getInitialState was defined on %s, a plain JavaScript class. ' + 'This is only supported for classes created using React.createClass. ' + 'Did you mean to define a state property instead?', name);\n    }\n\n    if (instance.getDefaultProps && !instance.getDefaultProps.isReactClassApproved) {\n      error('getDefaultProps was defined on %s, a plain JavaScript class. ' + 'This is only supported for classes created using React.createClass. ' + 'Use a static property to define defaultProps instead.', name);\n    }\n\n    if (instance.propTypes) {\n      error('propTypes was defined as an instance property on %s. Use a static ' + 'property to define propTypes instead.', name);\n    }\n\n    if (instance.contextType) {\n      error('contextType was defined as an instance property on %s. Use a static ' + 'property to define contextType instead.', name);\n    }\n\n    {\n      if (instance.contextTypes) {\n        error('contextTypes was defined as an instance property on %s. Use a static ' + 'property to define contextTypes instead.', name);\n      }\n\n      if (ctor.contextType && ctor.contextTypes && !didWarnAboutContextTypeAndContextTypes.has(ctor)) {\n        didWarnAboutContextTypeAndContextTypes.add(ctor);\n\n        error('%s declares both contextTypes and contextType static properties. ' + 'The legacy contextTypes property will be ignored.', name);\n      }\n    }\n\n    if (typeof instance.componentShouldUpdate === 'function') {\n      error('%s has a method called ' + 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' + 'The name is phrased as a question because the function is ' + 'expected to return a value.', name);\n    }\n\n    if (ctor.prototype && ctor.prototype.isPureReactComponent && typeof instance.shouldComponentUpdate !== 'undefined') {\n      error('%s has a method called shouldComponentUpdate(). ' + 'shouldComponentUpdate should not be used when extending React.PureComponent. ' + 'Please extend React.Component if shouldComponentUpdate is used.', getComponentNameFromType(ctor) || 'A pure component');\n    }\n\n    if (typeof instance.componentDidUnmount === 'function') {\n      error('%s has a method called ' + 'componentDidUnmount(). But there is no such lifecycle method. ' + 'Did you mean componentWillUnmount()?', name);\n    }\n\n    if (typeof instance.componentDidReceiveProps === 'function') {\n      error('%s has a method called ' + 'componentDidReceiveProps(). But there is no such lifecycle method. ' + 'If you meant to update the state in response to changing props, ' + 'use componentWillReceiveProps(). If you meant to fetch data or ' + 'run side-effects or mutations after React has updated the UI, use componentDidUpdate().', name);\n    }\n\n    if (typeof instance.componentWillRecieveProps === 'function') {\n      error('%s has a method called ' + 'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?', name);\n    }\n\n    if (typeof instance.UNSAFE_componentWillRecieveProps === 'function') {\n      error('%s has a method called ' + 'UNSAFE_componentWillRecieveProps(). Did you mean UNSAFE_componentWillReceiveProps()?', name);\n    }\n\n    var hasMutatedProps = instance.props !== newProps;\n\n    if (instance.props !== undefined && hasMutatedProps) {\n      error('%s(...): When calling super() in `%s`, make sure to pass ' + \"up the same props that your component's constructor was passed.\", name, name);\n    }\n\n    if (instance.defaultProps) {\n      error('Setting defaultProps as an instance property on %s is not supported and will be ignored.' + ' Instead, define defaultProps as a static property on %s.', name, name);\n    }\n\n    if (typeof instance.getSnapshotBeforeUpdate === 'function' && typeof instance.componentDidUpdate !== 'function' && !didWarnAboutGetSnapshotBeforeUpdateWithoutDidUpdate.has(ctor)) {\n      didWarnAboutGetSnapshotBeforeUpdateWithoutDidUpdate.add(ctor);\n\n      error('%s: getSnapshotBeforeUpdate() should be used with componentDidUpdate(). ' + 'This component defines getSnapshotBeforeUpdate() only.', getComponentNameFromType(ctor));\n    }\n\n    if (typeof instance.getDerivedStateFromProps === 'function') {\n      error('%s: getDerivedStateFromProps() is defined as an instance method ' + 'and will be ignored. Instead, declare it as a static method.', name);\n    }\n\n    if (typeof instance.getDerivedStateFromError === 'function') {\n      error('%s: getDerivedStateFromError() is defined as an instance method ' + 'and will be ignored. Instead, declare it as a static method.', name);\n    }\n\n    if (typeof ctor.getSnapshotBeforeUpdate === 'function') {\n      error('%s: getSnapshotBeforeUpdate() is defined as a static method ' + 'and will be ignored. Instead, declare it as an instance method.', name);\n    }\n\n    var _state = instance.state;\n\n    if (_state && (typeof _state !== 'object' || isArray(_state))) {\n      error('%s.state: must be set to an object or null', name);\n    }\n\n    if (typeof instance.getChildContext === 'function' && typeof ctor.childContextTypes !== 'object') {\n      error('%s.getChildContext(): childContextTypes must be defined in order to ' + 'use getChildContext().', name);\n    }\n  }\n}\n\nfunction adoptClassInstance(workInProgress, instance) {\n  instance.updater = classComponentUpdater;\n  workInProgress.stateNode = instance; // The instance needs access to the fiber so that it can schedule updates\n\n  set(instance, workInProgress);\n\n  {\n    instance._reactInternalInstance = fakeInternalInstance;\n  }\n}\n\nfunction constructClassInstance(workInProgress, ctor, props) {\n  var isLegacyContextConsumer = false;\n  var unmaskedContext = emptyContextObject;\n  var context = emptyContextObject;\n  var contextType = ctor.contextType;\n\n  {\n    if ('contextType' in ctor) {\n      var isValid = // Allow null for conditional declaration\n      contextType === null || contextType !== undefined && contextType.$$typeof === REACT_CONTEXT_TYPE && contextType._context === undefined; // Not a <Context.Consumer>\n\n      if (!isValid && !didWarnAboutInvalidateContextType.has(ctor)) {\n        didWarnAboutInvalidateContextType.add(ctor);\n        var addendum = '';\n\n        if (contextType === undefined) {\n          addendum = ' However, it is set to undefined. ' + 'This can be caused by a typo or by mixing up named and default imports. ' + 'This can also happen due to a circular dependency, so ' + 'try moving the createContext() call to a separate file.';\n        } else if (typeof contextType !== 'object') {\n          addendum = ' However, it is set to a ' + typeof contextType + '.';\n        } else if (contextType.$$typeof === REACT_PROVIDER_TYPE) {\n          addendum = ' Did you accidentally pass the Context.Provider instead?';\n        } else if (contextType._context !== undefined) {\n          // <Context.Consumer>\n          addendum = ' Did you accidentally pass the Context.Consumer instead?';\n        } else {\n          addendum = ' However, it is set to an object with keys {' + Object.keys(contextType).join(', ') + '}.';\n        }\n\n        error('%s defines an invalid contextType. ' + 'contextType should point to the Context object returned by React.createContext().%s', getComponentNameFromType(ctor) || 'Component', addendum);\n      }\n    }\n  }\n\n  if (typeof contextType === 'object' && contextType !== null) {\n    context = readContext(contextType);\n  } else {\n    unmaskedContext = getUnmaskedContext(workInProgress, ctor, true);\n    var contextTypes = ctor.contextTypes;\n    isLegacyContextConsumer = contextTypes !== null && contextTypes !== undefined;\n    context = isLegacyContextConsumer ? getMaskedContext(workInProgress, unmaskedContext) : emptyContextObject;\n  }\n\n  var instance = new ctor(props, context); // Instantiate twice to help detect side-effects.\n\n  {\n    if ( workInProgress.mode & StrictLegacyMode) {\n      setIsStrictModeForDevtools(true);\n\n      try {\n        instance = new ctor(props, context); // eslint-disable-line no-new\n      } finally {\n        setIsStrictModeForDevtools(false);\n      }\n    }\n  }\n\n  var state = workInProgress.memoizedState = instance.state !== null && instance.state !== undefined ? instance.state : null;\n  adoptClassInstance(workInProgress, instance);\n\n  {\n    if (typeof ctor.getDerivedStateFromProps === 'function' && state === null) {\n      var componentName = getComponentNameFromType(ctor) || 'Component';\n\n      if (!didWarnAboutUninitializedState.has(componentName)) {\n        didWarnAboutUninitializedState.add(componentName);\n\n        error('`%s` uses `getDerivedStateFromProps` but its initial state is ' + '%s. This is not recommended. Instead, define the initial state by ' + 'assigning an object to `this.state` in the constructor of `%s`. ' + 'This ensures that `getDerivedStateFromProps` arguments have a consistent shape.', componentName, instance.state === null ? 'null' : 'undefined', componentName);\n      }\n    } // If new component APIs are defined, \"unsafe\" lifecycles won't be called.\n    // Warn about these lifecycles if they are present.\n    // Don't warn about react-lifecycles-compat polyfilled methods though.\n\n\n    if (typeof ctor.getDerivedStateFromProps === 'function' || typeof instance.getSnapshotBeforeUpdate === 'function') {\n      var foundWillMountName = null;\n      var foundWillReceivePropsName = null;\n      var foundWillUpdateName = null;\n\n      if (typeof instance.componentWillMount === 'function' && instance.componentWillMount.__suppressDeprecationWarning !== true) {\n        foundWillMountName = 'componentWillMount';\n      } else if (typeof instance.UNSAFE_componentWillMount === 'function') {\n        foundWillMountName = 'UNSAFE_componentWillMount';\n      }\n\n      if (typeof instance.componentWillReceiveProps === 'function' && instance.componentWillReceiveProps.__suppressDeprecationWarning !== true) {\n        foundWillReceivePropsName = 'componentWillReceiveProps';\n      } else if (typeof instance.UNSAFE_componentWillReceiveProps === 'function') {\n        foundWillReceivePropsName = 'UNSAFE_componentWillReceiveProps';\n      }\n\n      if (typeof instance.componentWillUpdate === 'function' && instance.componentWillUpdate.__suppressDeprecationWarning !== true) {\n        foundWillUpdateName = 'componentWillUpdate';\n      } else if (typeof instance.UNSAFE_componentWillUpdate === 'function') {\n        foundWillUpdateName = 'UNSAFE_componentWillUpdate';\n      }\n\n      if (foundWillMountName !== null || foundWillReceivePropsName !== null || foundWillUpdateName !== null) {\n        var _componentName = getComponentNameFromType(ctor) || 'Component';\n\n        var newApiName = typeof ctor.getDerivedStateFromProps === 'function' ? 'getDerivedStateFromProps()' : 'getSnapshotBeforeUpdate()';\n\n        if (!didWarnAboutLegacyLifecyclesAndDerivedState.has(_componentName)) {\n          didWarnAboutLegacyLifecyclesAndDerivedState.add(_componentName);\n\n          error('Unsafe legacy lifecycles will not be called for components using new component APIs.\\n\\n' + '%s uses %s but also contains the following legacy lifecycles:%s%s%s\\n\\n' + 'The above lifecycles should be removed. Learn more about this warning here:\\n' + 'https://reactjs.org/link/unsafe-component-lifecycles', _componentName, newApiName, foundWillMountName !== null ? \"\\n  \" + foundWillMountName : '', foundWillReceivePropsName !== null ? \"\\n  \" + foundWillReceivePropsName : '', foundWillUpdateName !== null ? \"\\n  \" + foundWillUpdateName : '');\n        }\n      }\n    }\n  } // Cache unmasked context so we can avoid recreating masked context unless necessary.\n  // ReactFiberContext usually updates this cache but can't for newly-created instances.\n\n\n  if (isLegacyContextConsumer) {\n    cacheContext(workInProgress, unmaskedContext, context);\n  }\n\n  return instance;\n}\n\nfunction callComponentWillMount(workInProgress, instance) {\n  var oldState = instance.state;\n\n  if (typeof instance.componentWillMount === 'function') {\n    instance.componentWillMount();\n  }\n\n  if (typeof instance.UNSAFE_componentWillMount === 'function') {\n    instance.UNSAFE_componentWillMount();\n  }\n\n  if (oldState !== instance.state) {\n    {\n      error('%s.componentWillMount(): Assigning directly to this.state is ' + \"deprecated (except inside a component's \" + 'constructor). Use setState instead.', getComponentNameFromFiber(workInProgress) || 'Component');\n    }\n\n    classComponentUpdater.enqueueReplaceState(instance, instance.state, null);\n  }\n}\n\nfunction callComponentWillReceiveProps(workInProgress, instance, newProps, nextContext) {\n  var oldState = instance.state;\n\n  if (typeof instance.componentWillReceiveProps === 'function') {\n    instance.componentWillReceiveProps(newProps, nextContext);\n  }\n\n  if (typeof instance.UNSAFE_componentWillReceiveProps === 'function') {\n    instance.UNSAFE_componentWillReceiveProps(newProps, nextContext);\n  }\n\n  if (instance.state !== oldState) {\n    {\n      var componentName = getComponentNameFromFiber(workInProgress) || 'Component';\n\n      if (!didWarnAboutStateAssignmentForComponent.has(componentName)) {\n        didWarnAboutStateAssignmentForComponent.add(componentName);\n\n        error('%s.componentWillReceiveProps(): Assigning directly to ' + \"this.state is deprecated (except inside a component's \" + 'constructor). Use setState instead.', componentName);\n      }\n    }\n\n    classComponentUpdater.enqueueReplaceState(instance, instance.state, null);\n  }\n} // Invokes the mount life-cycles on a previously never rendered instance.\n\n\nfunction mountClassInstance(workInProgress, ctor, newProps, renderLanes) {\n  {\n    checkClassInstance(workInProgress, ctor, newProps);\n  }\n\n  var instance = workInProgress.stateNode;\n  instance.props = newProps;\n  instance.state = workInProgress.memoizedState;\n  instance.refs = emptyRefsObject;\n  initializeUpdateQueue(workInProgress);\n  var contextType = ctor.contextType;\n\n  if (typeof contextType === 'object' && contextType !== null) {\n    instance.context = readContext(contextType);\n  } else {\n    var unmaskedContext = getUnmaskedContext(workInProgress, ctor, true);\n    instance.context = getMaskedContext(workInProgress, unmaskedContext);\n  }\n\n  {\n    if (instance.state === newProps) {\n      var componentName = getComponentNameFromType(ctor) || 'Component';\n\n      if (!didWarnAboutDirectlyAssigningPropsToState.has(componentName)) {\n        didWarnAboutDirectlyAssigningPropsToState.add(componentName);\n\n        error('%s: It is not recommended to assign props directly to state ' + \"because updates to props won't be reflected in state. \" + 'In most cases, it is better to use props directly.', componentName);\n      }\n    }\n\n    if (workInProgress.mode & StrictLegacyMode) {\n      ReactStrictModeWarnings.recordLegacyContextWarning(workInProgress, instance);\n    }\n\n    {\n      ReactStrictModeWarnings.recordUnsafeLifecycleWarnings(workInProgress, instance);\n    }\n  }\n\n  instance.state = workInProgress.memoizedState;\n  var getDerivedStateFromProps = ctor.getDerivedStateFromProps;\n\n  if (typeof getDerivedStateFromProps === 'function') {\n    applyDerivedStateFromProps(workInProgress, ctor, getDerivedStateFromProps, newProps);\n    instance.state = workInProgress.memoizedState;\n  } // In order to support react-lifecycles-compat polyfilled components,\n  // Unsafe lifecycles should not be invoked for components using the new APIs.\n\n\n  if (typeof ctor.getDerivedStateFromProps !== 'function' && typeof instance.getSnapshotBeforeUpdate !== 'function' && (typeof instance.UNSAFE_componentWillMount === 'function' || typeof instance.componentWillMount === 'function')) {\n    callComponentWillMount(workInProgress, instance); // If we had additional state updates during this life-cycle, let's\n    // process them now.\n\n    processUpdateQueue(workInProgress, newProps, instance, renderLanes);\n    instance.state = workInProgress.memoizedState;\n  }\n\n  if (typeof instance.componentDidMount === 'function') {\n    var fiberFlags = Update;\n\n    {\n      fiberFlags |= LayoutStatic;\n    }\n\n    if ( (workInProgress.mode & StrictEffectsMode) !== NoMode) {\n      fiberFlags |= MountLayoutDev;\n    }\n\n    workInProgress.flags |= fiberFlags;\n  }\n}\n\nfunction resumeMountClassInstance(workInProgress, ctor, newProps, renderLanes) {\n  var instance = workInProgress.stateNode;\n  var oldProps = workInProgress.memoizedProps;\n  instance.props = oldProps;\n  var oldContext = instance.context;\n  var contextType = ctor.contextType;\n  var nextContext = emptyContextObject;\n\n  if (typeof contextType === 'object' && contextType !== null) {\n    nextContext = readContext(contextType);\n  } else {\n    var nextLegacyUnmaskedContext = getUnmaskedContext(workInProgress, ctor, true);\n    nextContext = getMaskedContext(workInProgress, nextLegacyUnmaskedContext);\n  }\n\n  var getDerivedStateFromProps = ctor.getDerivedStateFromProps;\n  var hasNewLifecycles = typeof getDerivedStateFromProps === 'function' || typeof instance.getSnapshotBeforeUpdate === 'function'; // Note: During these life-cycles, instance.props/instance.state are what\n  // ever the previously attempted to render - not the \"current\". However,\n  // during componentDidUpdate we pass the \"current\" props.\n  // In order to support react-lifecycles-compat polyfilled components,\n  // Unsafe lifecycles should not be invoked for components using the new APIs.\n\n  if (!hasNewLifecycles && (typeof instance.UNSAFE_componentWillReceiveProps === 'function' || typeof instance.componentWillReceiveProps === 'function')) {\n    if (oldProps !== newProps || oldContext !== nextContext) {\n      callComponentWillReceiveProps(workInProgress, instance, newProps, nextContext);\n    }\n  }\n\n  resetHasForceUpdateBeforeProcessing();\n  var oldState = workInProgress.memoizedState;\n  var newState = instance.state = oldState;\n  processUpdateQueue(workInProgress, newProps, instance, renderLanes);\n  newState = workInProgress.memoizedState;\n\n  if (oldProps === newProps && oldState === newState && !hasContextChanged() && !checkHasForceUpdateAfterProcessing()) {\n    // If an update was already in progress, we should schedule an Update\n    // effect even though we're bailing out, so that cWU/cDU are called.\n    if (typeof instance.componentDidMount === 'function') {\n      var fiberFlags = Update;\n\n      {\n        fiberFlags |= LayoutStatic;\n      }\n\n      if ( (workInProgress.mode & StrictEffectsMode) !== NoMode) {\n        fiberFlags |= MountLayoutDev;\n      }\n\n      workInProgress.flags |= fiberFlags;\n    }\n\n    return false;\n  }\n\n  if (typeof getDerivedStateFromProps === 'function') {\n    applyDerivedStateFromProps(workInProgress, ctor, getDerivedStateFromProps, newProps);\n    newState = workInProgress.memoizedState;\n  }\n\n  var shouldUpdate = checkHasForceUpdateAfterProcessing() || checkShouldComponentUpdate(workInProgress, ctor, oldProps, newProps, oldState, newState, nextContext);\n\n  if (shouldUpdate) {\n    // In order to support react-lifecycles-compat polyfilled components,\n    // Unsafe lifecycles should not be invoked for components using the new APIs.\n    if (!hasNewLifecycles && (typeof instance.UNSAFE_componentWillMount === 'function' || typeof instance.componentWillMount === 'function')) {\n      if (typeof instance.componentWillMount === 'function') {\n        instance.componentWillMount();\n      }\n\n      if (typeof instance.UNSAFE_componentWillMount === 'function') {\n        instance.UNSAFE_componentWillMount();\n      }\n    }\n\n    if (typeof instance.componentDidMount === 'function') {\n      var _fiberFlags = Update;\n\n      {\n        _fiberFlags |= LayoutStatic;\n      }\n\n      if ( (workInProgress.mode & StrictEffectsMode) !== NoMode) {\n        _fiberFlags |= MountLayoutDev;\n      }\n\n      workInProgress.flags |= _fiberFlags;\n    }\n  } else {\n    // If an update was already in progress, we should schedule an Update\n    // effect even though we're bailing out, so that cWU/cDU are called.\n    if (typeof instance.componentDidMount === 'function') {\n      var _fiberFlags2 = Update;\n\n      {\n        _fiberFlags2 |= LayoutStatic;\n      }\n\n      if ( (workInProgress.mode & StrictEffectsMode) !== NoMode) {\n        _fiberFlags2 |= MountLayoutDev;\n      }\n\n      workInProgress.flags |= _fiberFlags2;\n    } // If shouldComponentUpdate returned false, we should still update the\n    // memoized state to indicate that this work can be reused.\n\n\n    workInProgress.memoizedProps = newProps;\n    workInProgress.memoizedState = newState;\n  } // Update the existing instance's state, props, and context pointers even\n  // if shouldComponentUpdate returns false.\n\n\n  instance.props = newProps;\n  instance.state = newState;\n  instance.context = nextContext;\n  return shouldUpdate;\n} // Invokes the update life-cycles and returns false if it shouldn't rerender.\n\n\nfunction updateClassInstance(current, workInProgress, ctor, newProps, renderLanes) {\n  var instance = workInProgress.stateNode;\n  cloneUpdateQueue(current, workInProgress);\n  var unresolvedOldProps = workInProgress.memoizedProps;\n  var oldProps = workInProgress.type === workInProgress.elementType ? unresolvedOldProps : resolveDefaultProps(workInProgress.type, unresolvedOldProps);\n  instance.props = oldProps;\n  var unresolvedNewProps = workInProgress.pendingProps;\n  var oldContext = instance.context;\n  var contextType = ctor.contextType;\n  var nextContext = emptyContextObject;\n\n  if (typeof contextType === 'object' && contextType !== null) {\n    nextContext = readContext(contextType);\n  } else {\n    var nextUnmaskedContext = getUnmaskedContext(workInProgress, ctor, true);\n    nextContext = getMaskedContext(workInProgress, nextUnmaskedContext);\n  }\n\n  var getDerivedStateFromProps = ctor.getDerivedStateFromProps;\n  var hasNewLifecycles = typeof getDerivedStateFromProps === 'function' || typeof instance.getSnapshotBeforeUpdate === 'function'; // Note: During these life-cycles, instance.props/instance.state are what\n  // ever the previously attempted to render - not the \"current\". However,\n  // during componentDidUpdate we pass the \"current\" props.\n  // In order to support react-lifecycles-compat polyfilled components,\n  // Unsafe lifecycles should not be invoked for components using the new APIs.\n\n  if (!hasNewLifecycles && (typeof instance.UNSAFE_componentWillReceiveProps === 'function' || typeof instance.componentWillReceiveProps === 'function')) {\n    if (unresolvedOldProps !== unresolvedNewProps || oldContext !== nextContext) {\n      callComponentWillReceiveProps(workInProgress, instance, newProps, nextContext);\n    }\n  }\n\n  resetHasForceUpdateBeforeProcessing();\n  var oldState = workInProgress.memoizedState;\n  var newState = instance.state = oldState;\n  processUpdateQueue(workInProgress, newProps, instance, renderLanes);\n  newState = workInProgress.memoizedState;\n\n  if (unresolvedOldProps === unresolvedNewProps && oldState === newState && !hasContextChanged() && !checkHasForceUpdateAfterProcessing() && !(enableLazyContextPropagation   )) {\n    // If an update was already in progress, we should schedule an Update\n    // effect even though we're bailing out, so that cWU/cDU are called.\n    if (typeof instance.componentDidUpdate === 'function') {\n      if (unresolvedOldProps !== current.memoizedProps || oldState !== current.memoizedState) {\n        workInProgress.flags |= Update;\n      }\n    }\n\n    if (typeof instance.getSnapshotBeforeUpdate === 'function') {\n      if (unresolvedOldProps !== current.memoizedProps || oldState !== current.memoizedState) {\n        workInProgress.flags |= Snapshot;\n      }\n    }\n\n    return false;\n  }\n\n  if (typeof getDerivedStateFromProps === 'function') {\n    applyDerivedStateFromProps(workInProgress, ctor, getDerivedStateFromProps, newProps);\n    newState = workInProgress.memoizedState;\n  }\n\n  var shouldUpdate = checkHasForceUpdateAfterProcessing() || checkShouldComponentUpdate(workInProgress, ctor, oldProps, newProps, oldState, newState, nextContext) || // TODO: In some cases, we'll end up checking if context has changed twice,\n  // both before and after `shouldComponentUpdate` has been called. Not ideal,\n  // but I'm loath to refactor this function. This only happens for memoized\n  // components so it's not that common.\n  enableLazyContextPropagation   ;\n\n  if (shouldUpdate) {\n    // In order to support react-lifecycles-compat polyfilled components,\n    // Unsafe lifecycles should not be invoked for components using the new APIs.\n    if (!hasNewLifecycles && (typeof instance.UNSAFE_componentWillUpdate === 'function' || typeof instance.componentWillUpdate === 'function')) {\n      if (typeof instance.componentWillUpdate === 'function') {\n        instance.componentWillUpdate(newProps, newState, nextContext);\n      }\n\n      if (typeof instance.UNSAFE_componentWillUpdate === 'function') {\n        instance.UNSAFE_componentWillUpdate(newProps, newState, nextContext);\n      }\n    }\n\n    if (typeof instance.componentDidUpdate === 'function') {\n      workInProgress.flags |= Update;\n    }\n\n    if (typeof instance.getSnapshotBeforeUpdate === 'function') {\n      workInProgress.flags |= Snapshot;\n    }\n  } else {\n    // If an update was already in progress, we should schedule an Update\n    // effect even though we're bailing out, so that cWU/cDU are called.\n    if (typeof instance.componentDidUpdate === 'function') {\n      if (unresolvedOldProps !== current.memoizedProps || oldState !== current.memoizedState) {\n        workInProgress.flags |= Update;\n      }\n    }\n\n    if (typeof instance.getSnapshotBeforeUpdate === 'function') {\n      if (unresolvedOldProps !== current.memoizedProps || oldState !== current.memoizedState) {\n        workInProgress.flags |= Snapshot;\n      }\n    } // If shouldComponentUpdate returned false, we should still update the\n    // memoized props/state to indicate that this work can be reused.\n\n\n    workInProgress.memoizedProps = newProps;\n    workInProgress.memoizedState = newState;\n  } // Update the existing instance's state, props, and context pointers even\n  // if shouldComponentUpdate returns false.\n\n\n  instance.props = newProps;\n  instance.state = newState;\n  instance.context = nextContext;\n  return shouldUpdate;\n}\n\nvar didWarnAboutMaps;\nvar didWarnAboutGenerators;\nvar didWarnAboutStringRefs;\nvar ownerHasKeyUseWarning;\nvar ownerHasFunctionTypeWarning;\n\nvar warnForMissingKey = function (child, returnFiber) {};\n\n{\n  didWarnAboutMaps = false;\n  didWarnAboutGenerators = false;\n  didWarnAboutStringRefs = {};\n  /**\n   * Warn if there's no key explicitly set on dynamic arrays of children or\n   * object keys are not valid. This allows us to keep track of children between\n   * updates.\n   */\n\n  ownerHasKeyUseWarning = {};\n  ownerHasFunctionTypeWarning = {};\n\n  warnForMissingKey = function (child, returnFiber) {\n    if (child === null || typeof child !== 'object') {\n      return;\n    }\n\n    if (!child._store || child._store.validated || child.key != null) {\n      return;\n    }\n\n    if (typeof child._store !== 'object') {\n      throw new Error('React Component in warnForMissingKey should have a _store. ' + 'This error is likely caused by a bug in React. Please file an issue.');\n    }\n\n    child._store.validated = true;\n    var componentName = getComponentNameFromFiber(returnFiber) || 'Component';\n\n    if (ownerHasKeyUseWarning[componentName]) {\n      return;\n    }\n\n    ownerHasKeyUseWarning[componentName] = true;\n\n    error('Each child in a list should have a unique ' + '\"key\" prop. See https://reactjs.org/link/warning-keys for ' + 'more information.');\n  };\n}\n\nfunction coerceRef(returnFiber, current, element) {\n  var mixedRef = element.ref;\n\n  if (mixedRef !== null && typeof mixedRef !== 'function' && typeof mixedRef !== 'object') {\n    {\n      // TODO: Clean this up once we turn on the string ref warning for\n      // everyone, because the strict mode case will no longer be relevant\n      if ((returnFiber.mode & StrictLegacyMode || warnAboutStringRefs) && // We warn in ReactElement.js if owner and self are equal for string refs\n      // because these cannot be automatically converted to an arrow function\n      // using a codemod. Therefore, we don't have to warn about string refs again.\n      !(element._owner && element._self && element._owner.stateNode !== element._self)) {\n        var componentName = getComponentNameFromFiber(returnFiber) || 'Component';\n\n        if (!didWarnAboutStringRefs[componentName]) {\n          {\n            error('A string ref, \"%s\", has been found within a strict mode tree. ' + 'String refs are a source of potential bugs and should be avoided. ' + 'We recommend using useRef() or createRef() instead. ' + 'Learn more about using refs safely here: ' + 'https://reactjs.org/link/strict-mode-string-ref', mixedRef);\n          }\n\n          didWarnAboutStringRefs[componentName] = true;\n        }\n      }\n    }\n\n    if (element._owner) {\n      var owner = element._owner;\n      var inst;\n\n      if (owner) {\n        var ownerFiber = owner;\n\n        if (ownerFiber.tag !== ClassComponent) {\n          throw new Error('Function components cannot have string refs. ' + 'We recommend using useRef() instead. ' + 'Learn more about using refs safely here: ' + 'https://reactjs.org/link/strict-mode-string-ref');\n        }\n\n        inst = ownerFiber.stateNode;\n      }\n\n      if (!inst) {\n        throw new Error(\"Missing owner for string ref \" + mixedRef + \". This error is likely caused by a \" + 'bug in React. Please file an issue.');\n      } // Assigning this to a const so Flow knows it won't change in the closure\n\n\n      var resolvedInst = inst;\n\n      {\n        checkPropStringCoercion(mixedRef, 'ref');\n      }\n\n      var stringRef = '' + mixedRef; // Check if previous string ref matches new string ref\n\n      if (current !== null && current.ref !== null && typeof current.ref === 'function' && current.ref._stringRef === stringRef) {\n        return current.ref;\n      }\n\n      var ref = function (value) {\n        var refs = resolvedInst.refs;\n\n        if (refs === emptyRefsObject) {\n          // This is a lazy pooled frozen object, so we need to initialize.\n          refs = resolvedInst.refs = {};\n        }\n\n        if (value === null) {\n          delete refs[stringRef];\n        } else {\n          refs[stringRef] = value;\n        }\n      };\n\n      ref._stringRef = stringRef;\n      return ref;\n    } else {\n      if (typeof mixedRef !== 'string') {\n        throw new Error('Expected ref to be a function, a string, an object returned by React.createRef(), or null.');\n      }\n\n      if (!element._owner) {\n        throw new Error(\"Element ref was specified as a string (\" + mixedRef + \") but no owner was set. This could happen for one of\" + ' the following reasons:\\n' + '1. You may be adding a ref to a function component\\n' + \"2. You may be adding a ref to a component that was not created inside a component's render method\\n\" + '3. You have multiple copies of React loaded\\n' + 'See https://reactjs.org/link/refs-must-have-owner for more information.');\n      }\n    }\n  }\n\n  return mixedRef;\n}\n\nfunction throwOnInvalidObjectType(returnFiber, newChild) {\n  var childString = Object.prototype.toString.call(newChild);\n  throw new Error(\"Objects are not valid as a React child (found: \" + (childString === '[object Object]' ? 'object with keys {' + Object.keys(newChild).join(', ') + '}' : childString) + \"). \" + 'If you meant to render a collection of children, use an array ' + 'instead.');\n}\n\nfunction warnOnFunctionType(returnFiber) {\n  {\n    var componentName = getComponentNameFromFiber(returnFiber) || 'Component';\n\n    if (ownerHasFunctionTypeWarning[componentName]) {\n      return;\n    }\n\n    ownerHasFunctionTypeWarning[componentName] = true;\n\n    error('Functions are not valid as a React child. This may happen if ' + 'you return a Component instead of <Component /> from render. ' + 'Or maybe you meant to call this function rather than return it.');\n  }\n}\n\nfunction resolveLazy(lazyType) {\n  var payload = lazyType._payload;\n  var init = lazyType._init;\n  return init(payload);\n} // This wrapper function exists because I expect to clone the code in each path\n// to be able to optimize each path individually by branching early. This needs\n// a compiler or we can do it manually. Helpers that don't need this branching\n// live outside of this function.\n\n\nfunction ChildReconciler(shouldTrackSideEffects) {\n  function deleteChild(returnFiber, childToDelete) {\n    if (!shouldTrackSideEffects) {\n      // Noop.\n      return;\n    }\n\n    var deletions = returnFiber.deletions;\n\n    if (deletions === null) {\n      returnFiber.deletions = [childToDelete];\n      returnFiber.flags |= ChildDeletion;\n    } else {\n      deletions.push(childToDelete);\n    }\n  }\n\n  function deleteRemainingChildren(returnFiber, currentFirstChild) {\n    if (!shouldTrackSideEffects) {\n      // Noop.\n      return null;\n    } // TODO: For the shouldClone case, this could be micro-optimized a bit by\n    // assuming that after the first child we've already added everything.\n\n\n    var childToDelete = currentFirstChild;\n\n    while (childToDelete !== null) {\n      deleteChild(returnFiber, childToDelete);\n      childToDelete = childToDelete.sibling;\n    }\n\n    return null;\n  }\n\n  function mapRemainingChildren(returnFiber, currentFirstChild) {\n    // Add the remaining children to a temporary map so that we can find them by\n    // keys quickly. Implicit (null) keys get added to this set with their index\n    // instead.\n    var existingChildren = new Map();\n    var existingChild = currentFirstChild;\n\n    while (existingChild !== null) {\n      if (existingChild.key !== null) {\n        existingChildren.set(existingChild.key, existingChild);\n      } else {\n        existingChildren.set(existingChild.index, existingChild);\n      }\n\n      existingChild = existingChild.sibling;\n    }\n\n    return existingChildren;\n  }\n\n  function useFiber(fiber, pendingProps) {\n    // We currently set sibling to null and index to 0 here because it is easy\n    // to forget to do before returning it. E.g. for the single child case.\n    var clone = createWorkInProgress(fiber, pendingProps);\n    clone.index = 0;\n    clone.sibling = null;\n    return clone;\n  }\n\n  function placeChild(newFiber, lastPlacedIndex, newIndex) {\n    newFiber.index = newIndex;\n\n    if (!shouldTrackSideEffects) {\n      // During hydration, the useId algorithm needs to know which fibers are\n      // part of a list of children (arrays, iterators).\n      newFiber.flags |= Forked;\n      return lastPlacedIndex;\n    }\n\n    var current = newFiber.alternate;\n\n    if (current !== null) {\n      var oldIndex = current.index;\n\n      if (oldIndex < lastPlacedIndex) {\n        // This is a move.\n        newFiber.flags |= Placement;\n        return lastPlacedIndex;\n      } else {\n        // This item can stay in place.\n        return oldIndex;\n      }\n    } else {\n      // This is an insertion.\n      newFiber.flags |= Placement;\n      return lastPlacedIndex;\n    }\n  }\n\n  function placeSingleChild(newFiber) {\n    // This is simpler for the single child case. We only need to do a\n    // placement for inserting new children.\n    if (shouldTrackSideEffects && newFiber.alternate === null) {\n      newFiber.flags |= Placement;\n    }\n\n    return newFiber;\n  }\n\n  function updateTextNode(returnFiber, current, textContent, lanes) {\n    if (current === null || current.tag !== HostText) {\n      // Insert\n      var created = createFiberFromText(textContent, returnFiber.mode, lanes);\n      created.return = returnFiber;\n      return created;\n    } else {\n      // Update\n      var existing = useFiber(current, textContent);\n      existing.return = returnFiber;\n      return existing;\n    }\n  }\n\n  function updateElement(returnFiber, current, element, lanes) {\n    var elementType = element.type;\n\n    if (elementType === REACT_FRAGMENT_TYPE) {\n      return updateFragment(returnFiber, current, element.props.children, lanes, element.key);\n    }\n\n    if (current !== null) {\n      if (current.elementType === elementType || ( // Keep this check inline so it only runs on the false path:\n       isCompatibleFamilyForHotReloading(current, element) ) || // Lazy types should reconcile their resolved type.\n      // We need to do this after the Hot Reloading check above,\n      // because hot reloading has different semantics than prod because\n      // it doesn't resuspend. So we can't let the call below suspend.\n      typeof elementType === 'object' && elementType !== null && elementType.$$typeof === REACT_LAZY_TYPE && resolveLazy(elementType) === current.type) {\n        // Move based on index\n        var existing = useFiber(current, element.props);\n        existing.ref = coerceRef(returnFiber, current, element);\n        existing.return = returnFiber;\n\n        {\n          existing._debugSource = element._source;\n          existing._debugOwner = element._owner;\n        }\n\n        return existing;\n      }\n    } // Insert\n\n\n    var created = createFiberFromElement(element, returnFiber.mode, lanes);\n    created.ref = coerceRef(returnFiber, current, element);\n    created.return = returnFiber;\n    return created;\n  }\n\n  function updatePortal(returnFiber, current, portal, lanes) {\n    if (current === null || current.tag !== HostPortal || current.stateNode.containerInfo !== portal.containerInfo || current.stateNode.implementation !== portal.implementation) {\n      // Insert\n      var created = createFiberFromPortal(portal, returnFiber.mode, lanes);\n      created.return = returnFiber;\n      return created;\n    } else {\n      // Update\n      var existing = useFiber(current, portal.children || []);\n      existing.return = returnFiber;\n      return existing;\n    }\n  }\n\n  function updateFragment(returnFiber, current, fragment, lanes, key) {\n    if (current === null || current.tag !== Fragment) {\n      // Insert\n      var created = createFiberFromFragment(fragment, returnFiber.mode, lanes, key);\n      created.return = returnFiber;\n      return created;\n    } else {\n      // Update\n      var existing = useFiber(current, fragment);\n      existing.return = returnFiber;\n      return existing;\n    }\n  }\n\n  function createChild(returnFiber, newChild, lanes) {\n    if (typeof newChild === 'string' && newChild !== '' || typeof newChild === 'number') {\n      // Text nodes don't have keys. If the previous node is implicitly keyed\n      // we can continue to replace it without aborting even if it is not a text\n      // node.\n      var created = createFiberFromText('' + newChild, returnFiber.mode, lanes);\n      created.return = returnFiber;\n      return created;\n    }\n\n    if (typeof newChild === 'object' && newChild !== null) {\n      switch (newChild.$$typeof) {\n        case REACT_ELEMENT_TYPE:\n          {\n            var _created = createFiberFromElement(newChild, returnFiber.mode, lanes);\n\n            _created.ref = coerceRef(returnFiber, null, newChild);\n            _created.return = returnFiber;\n            return _created;\n          }\n\n        case REACT_PORTAL_TYPE:\n          {\n            var _created2 = createFiberFromPortal(newChild, returnFiber.mode, lanes);\n\n            _created2.return = returnFiber;\n            return _created2;\n          }\n\n        case REACT_LAZY_TYPE:\n          {\n            var payload = newChild._payload;\n            var init = newChild._init;\n            return createChild(returnFiber, init(payload), lanes);\n          }\n      }\n\n      if (isArray(newChild) || getIteratorFn(newChild)) {\n        var _created3 = createFiberFromFragment(newChild, returnFiber.mode, lanes, null);\n\n        _created3.return = returnFiber;\n        return _created3;\n      }\n\n      throwOnInvalidObjectType(returnFiber, newChild);\n    }\n\n    {\n      if (typeof newChild === 'function') {\n        warnOnFunctionType(returnFiber);\n      }\n    }\n\n    return null;\n  }\n\n  function updateSlot(returnFiber, oldFiber, newChild, lanes) {\n    // Update the fiber if the keys match, otherwise return null.\n    var key = oldFiber !== null ? oldFiber.key : null;\n\n    if (typeof newChild === 'string' && newChild !== '' || typeof newChild === 'number') {\n      // Text nodes don't have keys. If the previous node is implicitly keyed\n      // we can continue to replace it without aborting even if it is not a text\n      // node.\n      if (key !== null) {\n        return null;\n      }\n\n      return updateTextNode(returnFiber, oldFiber, '' + newChild, lanes);\n    }\n\n    if (typeof newChild === 'object' && newChild !== null) {\n      switch (newChild.$$typeof) {\n        case REACT_ELEMENT_TYPE:\n          {\n            if (newChild.key === key) {\n              return updateElement(returnFiber, oldFiber, newChild, lanes);\n            } else {\n              return null;\n            }\n          }\n\n        case REACT_PORTAL_TYPE:\n          {\n            if (newChild.key === key) {\n              return updatePortal(returnFiber, oldFiber, newChild, lanes);\n            } else {\n              return null;\n            }\n          }\n\n        case REACT_LAZY_TYPE:\n          {\n            var payload = newChild._payload;\n            var init = newChild._init;\n            return updateSlot(returnFiber, oldFiber, init(payload), lanes);\n          }\n      }\n\n      if (isArray(newChild) || getIteratorFn(newChild)) {\n        if (key !== null) {\n          return null;\n        }\n\n        return updateFragment(returnFiber, oldFiber, newChild, lanes, null);\n      }\n\n      throwOnInvalidObjectType(returnFiber, newChild);\n    }\n\n    {\n      if (typeof newChild === 'function') {\n        warnOnFunctionType(returnFiber);\n      }\n    }\n\n    return null;\n  }\n\n  function updateFromMap(existingChildren, returnFiber, newIdx, newChild, lanes) {\n    if (typeof newChild === 'string' && newChild !== '' || typeof newChild === 'number') {\n      // Text nodes don't have keys, so we neither have to check the old nor\n      // new node for the key. If both are text nodes, they match.\n      var matchedFiber = existingChildren.get(newIdx) || null;\n      return updateTextNode(returnFiber, matchedFiber, '' + newChild, lanes);\n    }\n\n    if (typeof newChild === 'object' && newChild !== null) {\n      switch (newChild.$$typeof) {\n        case REACT_ELEMENT_TYPE:\n          {\n            var _matchedFiber = existingChildren.get(newChild.key === null ? newIdx : newChild.key) || null;\n\n            return updateElement(returnFiber, _matchedFiber, newChild, lanes);\n          }\n\n        case REACT_PORTAL_TYPE:\n          {\n            var _matchedFiber2 = existingChildren.get(newChild.key === null ? newIdx : newChild.key) || null;\n\n            return updatePortal(returnFiber, _matchedFiber2, newChild, lanes);\n          }\n\n        case REACT_LAZY_TYPE:\n          var payload = newChild._payload;\n          var init = newChild._init;\n          return updateFromMap(existingChildren, returnFiber, newIdx, init(payload), lanes);\n      }\n\n      if (isArray(newChild) || getIteratorFn(newChild)) {\n        var _matchedFiber3 = existingChildren.get(newIdx) || null;\n\n        return updateFragment(returnFiber, _matchedFiber3, newChild, lanes, null);\n      }\n\n      throwOnInvalidObjectType(returnFiber, newChild);\n    }\n\n    {\n      if (typeof newChild === 'function') {\n        warnOnFunctionType(returnFiber);\n      }\n    }\n\n    return null;\n  }\n  /**\n   * Warns if there is a duplicate or missing key\n   */\n\n\n  function warnOnInvalidKey(child, knownKeys, returnFiber) {\n    {\n      if (typeof child !== 'object' || child === null) {\n        return knownKeys;\n      }\n\n      switch (child.$$typeof) {\n        case REACT_ELEMENT_TYPE:\n        case REACT_PORTAL_TYPE:\n          warnForMissingKey(child, returnFiber);\n          var key = child.key;\n\n          if (typeof key !== 'string') {\n            break;\n          }\n\n          if (knownKeys === null) {\n            knownKeys = new Set();\n            knownKeys.add(key);\n            break;\n          }\n\n          if (!knownKeys.has(key)) {\n            knownKeys.add(key);\n            break;\n          }\n\n          error('Encountered two children with the same key, `%s`. ' + 'Keys should be unique so that components maintain their identity ' + 'across updates. Non-unique keys may cause children to be ' + 'duplicated and/or omitted \u2014 the behavior is unsupported and ' + 'could change in a future version.', key);\n\n          break;\n\n        case REACT_LAZY_TYPE:\n          var payload = child._payload;\n          var init = child._init;\n          warnOnInvalidKey(init(payload), knownKeys, returnFiber);\n          break;\n      }\n    }\n\n    return knownKeys;\n  }\n\n  function reconcileChildrenArray(returnFiber, currentFirstChild, newChildren, lanes) {\n    // This algorithm can't optimize by searching from both ends since we\n    // don't have backpointers on fibers. I'm trying to see how far we can get\n    // with that model. If it ends up not being worth the tradeoffs, we can\n    // add it later.\n    // Even with a two ended optimization, we'd want to optimize for the case\n    // where there are few changes and brute force the comparison instead of\n    // going for the Map. It'd like to explore hitting that path first in\n    // forward-only mode and only go for the Map once we notice that we need\n    // lots of look ahead. This doesn't handle reversal as well as two ended\n    // search but that's unusual. Besides, for the two ended optimization to\n    // work on Iterables, we'd need to copy the whole set.\n    // In this first iteration, we'll just live with hitting the bad case\n    // (adding everything to a Map) in for every insert/move.\n    // If you change this code, also update reconcileChildrenIterator() which\n    // uses the same algorithm.\n    {\n      // First, validate keys.\n      var knownKeys = null;\n\n      for (var i = 0; i < newChildren.length; i++) {\n        var child = newChildren[i];\n        knownKeys = warnOnInvalidKey(child, knownKeys, returnFiber);\n      }\n    }\n\n    var resultingFirstChild = null;\n    var previousNewFiber = null;\n    var oldFiber = currentFirstChild;\n    var lastPlacedIndex = 0;\n    var newIdx = 0;\n    var nextOldFiber = null;\n\n    for (; oldFiber !== null && newIdx < newChildren.length; newIdx++) {\n      if (oldFiber.index > newIdx) {\n        nextOldFiber = oldFiber;\n        oldFiber = null;\n      } else {\n        nextOldFiber = oldFiber.sibling;\n      }\n\n      var newFiber = updateSlot(returnFiber, oldFiber, newChildren[newIdx], lanes);\n\n      if (newFiber === null) {\n        // TODO: This breaks on empty slots like null children. That's\n        // unfortunate because it triggers the slow path all the time. We need\n        // a better way to communicate whether this was a miss or null,\n        // boolean, undefined, etc.\n        if (oldFiber === null) {\n          oldFiber = nextOldFiber;\n        }\n\n        break;\n      }\n\n      if (shouldTrackSideEffects) {\n        if (oldFiber && newFiber.alternate === null) {\n          // We matched the slot, but we didn't reuse the existing fiber, so we\n          // need to delete the existing child.\n          deleteChild(returnFiber, oldFiber);\n        }\n      }\n\n      lastPlacedIndex = placeChild(newFiber, lastPlacedIndex, newIdx);\n\n      if (previousNewFiber === null) {\n        // TODO: Move out of the loop. This only happens for the first run.\n        resultingFirstChild = newFiber;\n      } else {\n        // TODO: Defer siblings if we're not at the right index for this slot.\n        // I.e. if we had null values before, then we want to defer this\n        // for each null value. However, we also don't want to call updateSlot\n        // with the previous one.\n        previousNewFiber.sibling = newFiber;\n      }\n\n      previousNewFiber = newFiber;\n      oldFiber = nextOldFiber;\n    }\n\n    if (newIdx === newChildren.length) {\n      // We've reached the end of the new children. We can delete the rest.\n      deleteRemainingChildren(returnFiber, oldFiber);\n\n      if (getIsHydrating()) {\n        var numberOfForks = newIdx;\n        pushTreeFork(returnFiber, numberOfForks);\n      }\n\n      return resultingFirstChild;\n    }\n\n    if (oldFiber === null) {\n      // If we don't have any more existing children we can choose a fast path\n      // since the rest will all be insertions.\n      for (; newIdx < newChildren.length; newIdx++) {\n        var _newFiber = createChild(returnFiber, newChildren[newIdx], lanes);\n\n        if (_newFiber === null) {\n          continue;\n        }\n\n        lastPlacedIndex = placeChild(_newFiber, lastPlacedIndex, newIdx);\n\n        if (previousNewFiber === null) {\n          // TODO: Move out of the loop. This only happens for the first run.\n          resultingFirstChild = _newFiber;\n        } else {\n          previousNewFiber.sibling = _newFiber;\n        }\n\n        previousNewFiber = _newFiber;\n      }\n\n      if (getIsHydrating()) {\n        var _numberOfForks = newIdx;\n        pushTreeFork(returnFiber, _numberOfForks);\n      }\n\n      return resultingFirstChild;\n    } // Add all children to a key map for quick lookups.\n\n\n    var existingChildren = mapRemainingChildren(returnFiber, oldFiber); // Keep scanning and use the map to restore deleted items as moves.\n\n    for (; newIdx < newChildren.length; newIdx++) {\n      var _newFiber2 = updateFromMap(existingChildren, returnFiber, newIdx, newChildren[newIdx], lanes);\n\n      if (_newFiber2 !== null) {\n        if (shouldTrackSideEffects) {\n          if (_newFiber2.alternate !== null) {\n            // The new fiber is a work in progress, but if there exists a\n            // current, that means that we reused the fiber. We need to delete\n            // it from the child list so that we don't add it to the deletion\n            // list.\n            existingChildren.delete(_newFiber2.key === null ? newIdx : _newFiber2.key);\n          }\n        }\n\n        lastPlacedIndex = placeChild(_newFiber2, lastPlacedIndex, newIdx);\n\n        if (previousNewFiber === null) {\n          resultingFirstChild = _newFiber2;\n        } else {\n          previousNewFiber.sibling = _newFiber2;\n        }\n\n        previousNewFiber = _newFiber2;\n      }\n    }\n\n    if (shouldTrackSideEffects) {\n      // Any existing children that weren't consumed above were deleted. We need\n      // to add them to the deletion list.\n      existingChildren.forEach(function (child) {\n        return deleteChild(returnFiber, child);\n      });\n    }\n\n    if (getIsHydrating()) {\n      var _numberOfForks2 = newIdx;\n      pushTreeFork(returnFiber, _numberOfForks2);\n    }\n\n    return resultingFirstChild;\n  }\n\n  function reconcileChildrenIterator(returnFiber, currentFirstChild, newChildrenIterable, lanes) {\n    // This is the same implementation as reconcileChildrenArray(),\n    // but using the iterator instead.\n    var iteratorFn = getIteratorFn(newChildrenIterable);\n\n    if (typeof iteratorFn !== 'function') {\n      throw new Error('An object is not an iterable. This error is likely caused by a bug in ' + 'React. Please file an issue.');\n    }\n\n    {\n      // We don't support rendering Generators because it's a mutation.\n      // See https://github.com/facebook/react/issues/12995\n      if (typeof Symbol === 'function' && // $FlowFixMe Flow doesn't know about toStringTag\n      newChildrenIterable[Symbol.toStringTag] === 'Generator') {\n        if (!didWarnAboutGenerators) {\n          error('Using Generators as children is unsupported and will likely yield ' + 'unexpected results because enumerating a generator mutates it. ' + 'You may convert it to an array with `Array.from()` or the ' + '`[...spread]` operator before rendering. Keep in mind ' + 'you might need to polyfill these features for older browsers.');\n        }\n\n        didWarnAboutGenerators = true;\n      } // Warn about using Maps as children\n\n\n      if (newChildrenIterable.entries === iteratorFn) {\n        if (!didWarnAboutMaps) {\n          error('Using Maps as children is not supported. ' + 'Use an array of keyed ReactElements instead.');\n        }\n\n        didWarnAboutMaps = true;\n      } // First, validate keys.\n      // We'll get a different iterator later for the main pass.\n\n\n      var _newChildren = iteratorFn.call(newChildrenIterable);\n\n      if (_newChildren) {\n        var knownKeys = null;\n\n        var _step = _newChildren.next();\n\n        for (; !_step.done; _step = _newChildren.next()) {\n          var child = _step.value;\n          knownKeys = warnOnInvalidKey(child, knownKeys, returnFiber);\n        }\n      }\n    }\n\n    var newChildren = iteratorFn.call(newChildrenIterable);\n\n    if (newChildren == null) {\n      throw new Error('An iterable object provided no iterator.');\n    }\n\n    var resultingFirstChild = null;\n    var previousNewFiber = null;\n    var oldFiber = currentFirstChild;\n    var lastPlacedIndex = 0;\n    var newIdx = 0;\n    var nextOldFiber = null;\n    var step = newChildren.next();\n\n    for (; oldFiber !== null && !step.done; newIdx++, step = newChildren.next()) {\n      if (oldFiber.index > newIdx) {\n        nextOldFiber = oldFiber;\n        oldFiber = null;\n      } else {\n        nextOldFiber = oldFiber.sibling;\n      }\n\n      var newFiber = updateSlot(returnFiber, oldFiber, step.value, lanes);\n\n      if (newFiber === null) {\n        // TODO: This breaks on empty slots like null children. That's\n        // unfortunate because it triggers the slow path all the time. We need\n        // a better way to communicate whether this was a miss or null,\n        // boolean, undefined, etc.\n        if (oldFiber === null) {\n          oldFiber = nextOldFiber;\n        }\n\n        break;\n      }\n\n      if (shouldTrackSideEffects) {\n        if (oldFiber && newFiber.alternate === null) {\n          // We matched the slot, but we didn't reuse the existing fiber, so we\n          // need to delete the existing child.\n          deleteChild(returnFiber, oldFiber);\n        }\n      }\n\n      lastPlacedIndex = placeChild(newFiber, lastPlacedIndex, newIdx);\n\n      if (previousNewFiber === null) {\n        // TODO: Move out of the loop. This only happens for the first run.\n        resultingFirstChild = newFiber;\n      } else {\n        // TODO: Defer siblings if we're not at the right index for this slot.\n        // I.e. if we had null values before, then we want to defer this\n        // for each null value. However, we also don't want to call updateSlot\n        // with the previous one.\n        previousNewFiber.sibling = newFiber;\n      }\n\n      previousNewFiber = newFiber;\n      oldFiber = nextOldFiber;\n    }\n\n    if (step.done) {\n      // We've reached the end of the new children. We can delete the rest.\n      deleteRemainingChildren(returnFiber, oldFiber);\n\n      if (getIsHydrating()) {\n        var numberOfForks = newIdx;\n        pushTreeFork(returnFiber, numberOfForks);\n      }\n\n      return resultingFirstChild;\n    }\n\n    if (oldFiber === null) {\n      // If we don't have any more existing children we can choose a fast path\n      // since the rest will all be insertions.\n      for (; !step.done; newIdx++, step = newChildren.next()) {\n        var _newFiber3 = createChild(returnFiber, step.value, lanes);\n\n        if (_newFiber3 === null) {\n          continue;\n        }\n\n        lastPlacedIndex = placeChild(_newFiber3, lastPlacedIndex, newIdx);\n\n        if (previousNewFiber === null) {\n          // TODO: Move out of the loop. This only happens for the first run.\n          resultingFirstChild = _newFiber3;\n        } else {\n          previousNewFiber.sibling = _newFiber3;\n        }\n\n        previousNewFiber = _newFiber3;\n      }\n\n      if (getIsHydrating()) {\n        var _numberOfForks3 = newIdx;\n        pushTreeFork(returnFiber, _numberOfForks3);\n      }\n\n      return resultingFirstChild;\n    } // Add all children to a key map for quick lookups.\n\n\n    var existingChildren = mapRemainingChildren(returnFiber, oldFiber); // Keep scanning and use the map to restore deleted items as moves.\n\n    for (; !step.done; newIdx++, step = newChildren.next()) {\n      var _newFiber4 = updateFromMap(existingChildren, returnFiber, newIdx, step.value, lanes);\n\n      if (_newFiber4 !== null) {\n        if (shouldTrackSideEffects) {\n          if (_newFiber4.alternate !== null) {\n            // The new fiber is a work in progress, but if there exists a\n            // current, that means that we reused the fiber. We need to delete\n            // it from the child list so that we don't add it to the deletion\n            // list.\n            existingChildren.delete(_newFiber4.key === null ? newIdx : _newFiber4.key);\n          }\n        }\n\n        lastPlacedIndex = placeChild(_newFiber4, lastPlacedIndex, newIdx);\n\n        if (previousNewFiber === null) {\n          resultingFirstChild = _newFiber4;\n        } else {\n          previousNewFiber.sibling = _newFiber4;\n        }\n\n        previousNewFiber = _newFiber4;\n      }\n    }\n\n    if (shouldTrackSideEffects) {\n      // Any existing children that weren't consumed above were deleted. We need\n      // to add them to the deletion list.\n      existingChildren.forEach(function (child) {\n        return deleteChild(returnFiber, child);\n      });\n    }\n\n    if (getIsHydrating()) {\n      var _numberOfForks4 = newIdx;\n      pushTreeFork(returnFiber, _numberOfForks4);\n    }\n\n    return resultingFirstChild;\n  }\n\n  function reconcileSingleTextNode(returnFiber, currentFirstChild, textContent, lanes) {\n    // There's no need to check for keys on text nodes since we don't have a\n    // way to define them.\n    if (currentFirstChild !== null && currentFirstChild.tag === HostText) {\n      // We already have an existing node so let's just update it and delete\n      // the rest.\n      deleteRemainingChildren(returnFiber, currentFirstChild.sibling);\n      var existing = useFiber(currentFirstChild, textContent);\n      existing.return = returnFiber;\n      return existing;\n    } // The existing first child is not a text node so we need to create one\n    // and delete the existing ones.\n\n\n    deleteRemainingChildren(returnFiber, currentFirstChild);\n    var created = createFiberFromText(textContent, returnFiber.mode, lanes);\n    created.return = returnFiber;\n    return created;\n  }\n\n  function reconcileSingleElement(returnFiber, currentFirstChild, element, lanes) {\n    var key = element.key;\n    var child = currentFirstChild;\n\n    while (child !== null) {\n      // TODO: If key === null and child.key === null, then this only applies to\n      // the first item in the list.\n      if (child.key === key) {\n        var elementType = element.type;\n\n        if (elementType === REACT_FRAGMENT_TYPE) {\n          if (child.tag === Fragment) {\n            deleteRemainingChildren(returnFiber, child.sibling);\n            var existing = useFiber(child, element.props.children);\n            existing.return = returnFiber;\n\n            {\n              existing._debugSource = element._source;\n              existing._debugOwner = element._owner;\n            }\n\n            return existing;\n          }\n        } else {\n          if (child.elementType === elementType || ( // Keep this check inline so it only runs on the false path:\n           isCompatibleFamilyForHotReloading(child, element) ) || // Lazy types should reconcile their resolved type.\n          // We need to do this after the Hot Reloading check above,\n          // because hot reloading has different semantics than prod because\n          // it doesn't resuspend. So we can't let the call below suspend.\n          typeof elementType === 'object' && elementType !== null && elementType.$$typeof === REACT_LAZY_TYPE && resolveLazy(elementType) === child.type) {\n            deleteRemainingChildren(returnFiber, child.sibling);\n\n            var _existing = useFiber(child, element.props);\n\n            _existing.ref = coerceRef(returnFiber, child, element);\n            _existing.return = returnFiber;\n\n            {\n              _existing._debugSource = element._source;\n              _existing._debugOwner = element._owner;\n            }\n\n            return _existing;\n          }\n        } // Didn't match.\n\n\n        deleteRemainingChildren(returnFiber, child);\n        break;\n      } else {\n        deleteChild(returnFiber, child);\n      }\n\n      child = child.sibling;\n    }\n\n    if (element.type === REACT_FRAGMENT_TYPE) {\n      var created = createFiberFromFragment(element.props.children, returnFiber.mode, lanes, element.key);\n      created.return = returnFiber;\n      return created;\n    } else {\n      var _created4 = createFiberFromElement(element, returnFiber.mode, lanes);\n\n      _created4.ref = coerceRef(returnFiber, currentFirstChild, element);\n      _created4.return = returnFiber;\n      return _created4;\n    }\n  }\n\n  function reconcileSinglePortal(returnFiber, currentFirstChild, portal, lanes) {\n    var key = portal.key;\n    var child = currentFirstChild;\n\n    while (child !== null) {\n      // TODO: If key === null and child.key === null, then this only applies to\n      // the first item in the list.\n      if (child.key === key) {\n        if (child.tag === HostPortal && child.stateNode.containerInfo === portal.containerInfo && child.stateNode.implementation === portal.implementation) {\n          deleteRemainingChildren(returnFiber, child.sibling);\n          var existing = useFiber(child, portal.children || []);\n          existing.return = returnFiber;\n          return existing;\n        } else {\n          deleteRemainingChildren(returnFiber, child);\n          break;\n        }\n      } else {\n        deleteChild(returnFiber, child);\n      }\n\n      child = child.sibling;\n    }\n\n    var created = createFiberFromPortal(portal, returnFiber.mode, lanes);\n    created.return = returnFiber;\n    return created;\n  } // This API will tag the children with the side-effect of the reconciliation\n  // itself. They will be added to the side-effect list as we pass through the\n  // children and the parent.\n\n\n  function reconcileChildFibers(returnFiber, currentFirstChild, newChild, lanes) {\n    // This function is not recursive.\n    // If the top level item is an array, we treat it as a set of children,\n    // not as a fragment. Nested arrays on the other hand will be treated as\n    // fragment nodes. Recursion happens at the normal flow.\n    // Handle top level unkeyed fragments as if they were arrays.\n    // This leads to an ambiguity between <>{[...]}</> and <>...</>.\n    // We treat the ambiguous cases above the same.\n    var isUnkeyedTopLevelFragment = typeof newChild === 'object' && newChild !== null && newChild.type === REACT_FRAGMENT_TYPE && newChild.key === null;\n\n    if (isUnkeyedTopLevelFragment) {\n      newChild = newChild.props.children;\n    } // Handle object types\n\n\n    if (typeof newChild === 'object' && newChild !== null) {\n      switch (newChild.$$typeof) {\n        case REACT_ELEMENT_TYPE:\n          return placeSingleChild(reconcileSingleElement(returnFiber, currentFirstChild, newChild, lanes));\n\n        case REACT_PORTAL_TYPE:\n          return placeSingleChild(reconcileSinglePortal(returnFiber, currentFirstChild, newChild, lanes));\n\n        case REACT_LAZY_TYPE:\n          var payload = newChild._payload;\n          var init = newChild._init; // TODO: This function is supposed to be non-recursive.\n\n          return reconcileChildFibers(returnFiber, currentFirstChild, init(payload), lanes);\n      }\n\n      if (isArray(newChild)) {\n        return reconcileChildrenArray(returnFiber, currentFirstChild, newChild, lanes);\n      }\n\n      if (getIteratorFn(newChild)) {\n        return reconcileChildrenIterator(returnFiber, currentFirstChild, newChild, lanes);\n      }\n\n      throwOnInvalidObjectType(returnFiber, newChild);\n    }\n\n    if (typeof newChild === 'string' && newChild !== '' || typeof newChild === 'number') {\n      return placeSingleChild(reconcileSingleTextNode(returnFiber, currentFirstChild, '' + newChild, lanes));\n    }\n\n    {\n      if (typeof newChild === 'function') {\n        warnOnFunctionType(returnFiber);\n      }\n    } // Remaining cases are all treated as empty.\n\n\n    return deleteRemainingChildren(returnFiber, currentFirstChild);\n  }\n\n  return reconcileChildFibers;\n}\n\nvar reconcileChildFibers = ChildReconciler(true);\nvar mountChildFibers = ChildReconciler(false);\nfunction cloneChildFibers(current, workInProgress) {\n  if (current !== null && workInProgress.child !== current.child) {\n    throw new Error('Resuming work not yet implemented.');\n  }\n\n  if (workInProgress.child === null) {\n    return;\n  }\n\n  var currentChild = workInProgress.child;\n  var newChild = createWorkInProgress(currentChild, currentChild.pendingProps);\n  workInProgress.child = newChild;\n  newChild.return = workInProgress;\n\n  while (currentChild.sibling !== null) {\n    currentChild = currentChild.sibling;\n    newChild = newChild.sibling = createWorkInProgress(currentChild, currentChild.pendingProps);\n    newChild.return = workInProgress;\n  }\n\n  newChild.sibling = null;\n} // Reset a workInProgress child set to prepare it for a second pass.\n\nfunction resetChildFibers(workInProgress, lanes) {\n  var child = workInProgress.child;\n\n  while (child !== null) {\n    resetWorkInProgress(child, lanes);\n    child = child.sibling;\n  }\n}\n\nvar NO_CONTEXT = {};\nvar contextStackCursor$1 = createCursor(NO_CONTEXT);\nvar contextFiberStackCursor = createCursor(NO_CONTEXT);\nvar rootInstanceStackCursor = createCursor(NO_CONTEXT);\n\nfunction requiredContext(c) {\n  if (c === NO_CONTEXT) {\n    throw new Error('Expected host context to exist. This error is likely caused by a bug ' + 'in React. Please file an issue.');\n  }\n\n  return c;\n}\n\nfunction getRootHostContainer() {\n  var rootInstance = requiredContext(rootInstanceStackCursor.current);\n  return rootInstance;\n}\n\nfunction pushHostContainer(fiber, nextRootInstance) {\n  // Push current root instance onto the stack;\n  // This allows us to reset root when portals are popped.\n  push(rootInstanceStackCursor, nextRootInstance, fiber); // Track the context and the Fiber that provided it.\n  // This enables us to pop only Fibers that provide unique contexts.\n\n  push(contextFiberStackCursor, fiber, fiber); // Finally, we need to push the host context to the stack.\n  // However, we can't just call getRootHostContext() and push it because\n  // we'd have a different number of entries on the stack depending on\n  // whether getRootHostContext() throws somewhere in renderer code or not.\n  // So we push an empty value first. This lets us safely unwind on errors.\n\n  push(contextStackCursor$1, NO_CONTEXT, fiber);\n  var nextRootContext = getRootHostContext(nextRootInstance); // Now that we know this function doesn't throw, replace it.\n\n  pop(contextStackCursor$1, fiber);\n  push(contextStackCursor$1, nextRootContext, fiber);\n}\n\nfunction popHostContainer(fiber) {\n  pop(contextStackCursor$1, fiber);\n  pop(contextFiberStackCursor, fiber);\n  pop(rootInstanceStackCursor, fiber);\n}\n\nfunction getHostContext() {\n  var context = requiredContext(contextStackCursor$1.current);\n  return context;\n}\n\nfunction pushHostContext(fiber) {\n  var rootInstance = requiredContext(rootInstanceStackCursor.current);\n  var context = requiredContext(contextStackCursor$1.current);\n  var nextContext = getChildHostContext(context, fiber.type); // Don't push this Fiber's context unless it's unique.\n\n  if (context === nextContext) {\n    return;\n  } // Track the context and the Fiber that provided it.\n  // This enables us to pop only Fibers that provide unique contexts.\n\n\n  push(contextFiberStackCursor, fiber, fiber);\n  push(contextStackCursor$1, nextContext, fiber);\n}\n\nfunction popHostContext(fiber) {\n  // Do not pop unless this Fiber provided the current context.\n  // pushHostContext() only pushes Fibers that provide unique contexts.\n  if (contextFiberStackCursor.current !== fiber) {\n    return;\n  }\n\n  pop(contextStackCursor$1, fiber);\n  pop(contextFiberStackCursor, fiber);\n}\n\nvar DefaultSuspenseContext = 0; // The Suspense Context is split into two parts. The lower bits is\n// inherited deeply down the subtree. The upper bits only affect\n// this immediate suspense boundary and gets reset each new\n// boundary or suspense list.\n\nvar SubtreeSuspenseContextMask = 1; // Subtree Flags:\n// InvisibleParentSuspenseContext indicates that one of our parent Suspense\n// boundaries is not currently showing visible main content.\n// Either because it is already showing a fallback or is not mounted at all.\n// We can use this to determine if it is desirable to trigger a fallback at\n// the parent. If not, then we might need to trigger undesirable boundaries\n// and/or suspend the commit to avoid hiding the parent content.\n\nvar InvisibleParentSuspenseContext = 1; // Shallow Flags:\n// ForceSuspenseFallback can be used by SuspenseList to force newly added\n// items into their fallback state during one of the render passes.\n\nvar ForceSuspenseFallback = 2;\nvar suspenseStackCursor = createCursor(DefaultSuspenseContext);\nfunction hasSuspenseContext(parentContext, flag) {\n  return (parentContext & flag) !== 0;\n}\nfunction setDefaultShallowSuspenseContext(parentContext) {\n  return parentContext & SubtreeSuspenseContextMask;\n}\nfunction setShallowSuspenseContext(parentContext, shallowContext) {\n  return parentContext & SubtreeSuspenseContextMask | shallowContext;\n}\nfunction addSubtreeSuspenseContext(parentContext, subtreeContext) {\n  return parentContext | subtreeContext;\n}\nfunction pushSuspenseContext(fiber, newContext) {\n  push(suspenseStackCursor, newContext, fiber);\n}\nfunction popSuspenseContext(fiber) {\n  pop(suspenseStackCursor, fiber);\n}\n\nfunction shouldCaptureSuspense(workInProgress, hasInvisibleParent) {\n  // If it was the primary children that just suspended, capture and render the\n  // fallback. Otherwise, don't capture and bubble to the next boundary.\n  var nextState = workInProgress.memoizedState;\n\n  if (nextState !== null) {\n    if (nextState.dehydrated !== null) {\n      // A dehydrated boundary always captures.\n      return true;\n    }\n\n    return false;\n  }\n\n  var props = workInProgress.memoizedProps; // Regular boundaries always capture.\n\n  {\n    return true;\n  } // If it's a boundary we should avoid, then we prefer to bubble up to the\n}\nfunction findFirstSuspended(row) {\n  var node = row;\n\n  while (node !== null) {\n    if (node.tag === SuspenseComponent) {\n      var state = node.memoizedState;\n\n      if (state !== null) {\n        var dehydrated = state.dehydrated;\n\n        if (dehydrated === null || isSuspenseInstancePending(dehydrated) || isSuspenseInstanceFallback(dehydrated)) {\n          return node;\n        }\n      }\n    } else if (node.tag === SuspenseListComponent && // revealOrder undefined can't be trusted because it don't\n    // keep track of whether it suspended or not.\n    node.memoizedProps.revealOrder !== undefined) {\n      var didSuspend = (node.flags & DidCapture) !== NoFlags;\n\n      if (didSuspend) {\n        return node;\n      }\n    } else if (node.child !== null) {\n      node.child.return = node;\n      node = node.child;\n      continue;\n    }\n\n    if (node === row) {\n      return null;\n    }\n\n    while (node.sibling === null) {\n      if (node.return === null || node.return === row) {\n        return null;\n      }\n\n      node = node.return;\n    }\n\n    node.sibling.return = node.return;\n    node = node.sibling;\n  }\n\n  return null;\n}\n\nvar NoFlags$1 =\n/*   */\n0; // Represents whether effect should fire.\n\nvar HasEffect =\n/* */\n1; // Represents the phase in which the effect (not the clean-up) fires.\n\nvar Insertion =\n/*  */\n2;\nvar Layout =\n/*    */\n4;\nvar Passive$1 =\n/*   */\n8;\n\n// and should be reset before starting a new render.\n// This tracks which mutable sources need to be reset after a render.\n\nvar workInProgressSources = [];\nfunction resetWorkInProgressVersions() {\n  for (var i = 0; i < workInProgressSources.length; i++) {\n    var mutableSource = workInProgressSources[i];\n\n    {\n      mutableSource._workInProgressVersionPrimary = null;\n    }\n  }\n\n  workInProgressSources.length = 0;\n}\n// This ensures that the version used for server rendering matches the one\n// that is eventually read during hydration.\n// If they don't match there's a potential tear and a full deopt render is required.\n\nfunction registerMutableSourceForHydration(root, mutableSource) {\n  var getVersion = mutableSource._getVersion;\n  var version = getVersion(mutableSource._source); // TODO Clear this data once all pending hydration work is finished.\n  // Retaining it forever may interfere with GC.\n\n  if (root.mutableSourceEagerHydrationData == null) {\n    root.mutableSourceEagerHydrationData = [mutableSource, version];\n  } else {\n    root.mutableSourceEagerHydrationData.push(mutableSource, version);\n  }\n}\n\nvar ReactCurrentDispatcher$1 = ReactSharedInternals.ReactCurrentDispatcher,\n    ReactCurrentBatchConfig$2 = ReactSharedInternals.ReactCurrentBatchConfig;\nvar didWarnAboutMismatchedHooksForComponent;\nvar didWarnUncachedGetSnapshot;\n\n{\n  didWarnAboutMismatchedHooksForComponent = new Set();\n}\n\n// These are set right before calling the component.\nvar renderLanes = NoLanes; // The work-in-progress fiber. I've named it differently to distinguish it from\n// the work-in-progress hook.\n\nvar currentlyRenderingFiber$1 = null; // Hooks are stored as a linked list on the fiber's memoizedState field. The\n// current hook list is the list that belongs to the current fiber. The\n// work-in-progress hook list is a new list that will be added to the\n// work-in-progress fiber.\n\nvar currentHook = null;\nvar workInProgressHook = null; // Whether an update was scheduled at any point during the render phase. This\n// does not get reset if we do another render pass; only when we're completely\n// finished evaluating this component. This is an optimization so we know\n// whether we need to clear render phase updates after a throw.\n\nvar didScheduleRenderPhaseUpdate = false; // Where an update was scheduled only during the current render pass. This\n// gets reset after each attempt.\n// TODO: Maybe there's some way to consolidate this with\n// `didScheduleRenderPhaseUpdate`. Or with `numberOfReRenders`.\n\nvar didScheduleRenderPhaseUpdateDuringThisPass = false; // Counts the number of useId hooks in this component.\n\nvar localIdCounter = 0; // Used for ids that are generated completely client-side (i.e. not during\n// hydration). This counter is global, so client ids are not stable across\n// render attempts.\n\nvar globalClientIdCounter = 0;\nvar RE_RENDER_LIMIT = 25; // In DEV, this is the name of the currently executing primitive hook\n\nvar currentHookNameInDev = null; // In DEV, this list ensures that hooks are called in the same order between renders.\n// The list stores the order of hooks used during the initial render (mount).\n// Subsequent renders (updates) reference this list.\n\nvar hookTypesDev = null;\nvar hookTypesUpdateIndexDev = -1; // In DEV, this tracks whether currently rendering component needs to ignore\n// the dependencies for Hooks that need them (e.g. useEffect or useMemo).\n// When true, such Hooks will always be \"remounted\". Only used during hot reload.\n\nvar ignorePreviousDependencies = false;\n\nfunction mountHookTypesDev() {\n  {\n    var hookName = currentHookNameInDev;\n\n    if (hookTypesDev === null) {\n      hookTypesDev = [hookName];\n    } else {\n      hookTypesDev.push(hookName);\n    }\n  }\n}\n\nfunction updateHookTypesDev() {\n  {\n    var hookName = currentHookNameInDev;\n\n    if (hookTypesDev !== null) {\n      hookTypesUpdateIndexDev++;\n\n      if (hookTypesDev[hookTypesUpdateIndexDev] !== hookName) {\n        warnOnHookMismatchInDev(hookName);\n      }\n    }\n  }\n}\n\nfunction checkDepsAreArrayDev(deps) {\n  {\n    if (deps !== undefined && deps !== null && !isArray(deps)) {\n      // Verify deps, but only on mount to avoid extra checks.\n      // It's unlikely their type would change as usually you define them inline.\n      error('%s received a final argument that is not an array (instead, received `%s`). When ' + 'specified, the final argument must be an array.', currentHookNameInDev, typeof deps);\n    }\n  }\n}\n\nfunction warnOnHookMismatchInDev(currentHookName) {\n  {\n    var componentName = getComponentNameFromFiber(currentlyRenderingFiber$1);\n\n    if (!didWarnAboutMismatchedHooksForComponent.has(componentName)) {\n      didWarnAboutMismatchedHooksForComponent.add(componentName);\n\n      if (hookTypesDev !== null) {\n        var table = '';\n        var secondColumnStart = 30;\n\n        for (var i = 0; i <= hookTypesUpdateIndexDev; i++) {\n          var oldHookName = hookTypesDev[i];\n          var newHookName = i === hookTypesUpdateIndexDev ? currentHookName : oldHookName;\n          var row = i + 1 + \". \" + oldHookName; // Extra space so second column lines up\n          // lol @ IE not supporting String#repeat\n\n          while (row.length < secondColumnStart) {\n            row += ' ';\n          }\n\n          row += newHookName + '\\n';\n          table += row;\n        }\n\n        error('React has detected a change in the order of Hooks called by %s. ' + 'This will lead to bugs and errors if not fixed. ' + 'For more information, read the Rules of Hooks: https://reactjs.org/link/rules-of-hooks\\n\\n' + '   Previous render            Next render\\n' + '   ------------------------------------------------------\\n' + '%s' + '   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\\n', componentName, table);\n      }\n    }\n  }\n}\n\nfunction throwInvalidHookError() {\n  throw new Error('Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for' + ' one of the following reasons:\\n' + '1. You might have mismatching versions of React and the renderer (such as React DOM)\\n' + '2. You might be breaking the Rules of Hooks\\n' + '3. You might have more than one copy of React in the same app\\n' + 'See https://reactjs.org/link/invalid-hook-call for tips about how to debug and fix this problem.');\n}\n\nfunction areHookInputsEqual(nextDeps, prevDeps) {\n  {\n    if (ignorePreviousDependencies) {\n      // Only true when this component is being hot reloaded.\n      return false;\n    }\n  }\n\n  if (prevDeps === null) {\n    {\n      error('%s received a final argument during this render, but not during ' + 'the previous render. Even though the final argument is optional, ' + 'its type cannot change between renders.', currentHookNameInDev);\n    }\n\n    return false;\n  }\n\n  {\n    // Don't bother comparing lengths in prod because these arrays should be\n    // passed inline.\n    if (nextDeps.length !== prevDeps.length) {\n      error('The final argument passed to %s changed size between renders. The ' + 'order and size of this array must remain constant.\\n\\n' + 'Previous: %s\\n' + 'Incoming: %s', currentHookNameInDev, \"[\" + prevDeps.join(', ') + \"]\", \"[\" + nextDeps.join(', ') + \"]\");\n    }\n  }\n\n  for (var i = 0; i < prevDeps.length && i < nextDeps.length; i++) {\n    if (objectIs(nextDeps[i], prevDeps[i])) {\n      continue;\n    }\n\n    return false;\n  }\n\n  return true;\n}\n\nfunction renderWithHooks(current, workInProgress, Component, props, secondArg, nextRenderLanes) {\n  renderLanes = nextRenderLanes;\n  currentlyRenderingFiber$1 = workInProgress;\n\n  {\n    hookTypesDev = current !== null ? current._debugHookTypes : null;\n    hookTypesUpdateIndexDev = -1; // Used for hot reloading:\n\n    ignorePreviousDependencies = current !== null && current.type !== workInProgress.type;\n  }\n\n  workInProgress.memoizedState = null;\n  workInProgress.updateQueue = null;\n  workInProgress.lanes = NoLanes; // The following should have already been reset\n  // currentHook = null;\n  // workInProgressHook = null;\n  // didScheduleRenderPhaseUpdate = false;\n  // localIdCounter = 0;\n  // TODO Warn if no hooks are used at all during mount, then some are used during update.\n  // Currently we will identify the update render as a mount because memoizedState === null.\n  // This is tricky because it's valid for certain types of components (e.g. React.lazy)\n  // Using memoizedState to differentiate between mount/update only works if at least one stateful hook is used.\n  // Non-stateful hooks (e.g. context) don't get added to memoizedState,\n  // so memoizedState would be null during updates and mounts.\n\n  {\n    if (current !== null && current.memoizedState !== null) {\n      ReactCurrentDispatcher$1.current = HooksDispatcherOnUpdateInDEV;\n    } else if (hookTypesDev !== null) {\n      // This dispatcher handles an edge case where a component is updating,\n      // but no stateful hooks have been used.\n      // We want to match the production code behavior (which will use HooksDispatcherOnMount),\n      // but with the extra DEV validation to ensure hooks ordering hasn't changed.\n      // This dispatcher does that.\n      ReactCurrentDispatcher$1.current = HooksDispatcherOnMountWithHookTypesInDEV;\n    } else {\n      ReactCurrentDispatcher$1.current = HooksDispatcherOnMountInDEV;\n    }\n  }\n\n  var children = Component(props, secondArg); // Check if there was a render phase update\n\n  if (didScheduleRenderPhaseUpdateDuringThisPass) {\n    // Keep rendering in a loop for as long as render phase updates continue to\n    // be scheduled. Use a counter to prevent infinite loops.\n    var numberOfReRenders = 0;\n\n    do {\n      didScheduleRenderPhaseUpdateDuringThisPass = false;\n      localIdCounter = 0;\n\n      if (numberOfReRenders >= RE_RENDER_LIMIT) {\n        throw new Error('Too many re-renders. React limits the number of renders to prevent ' + 'an infinite loop.');\n      }\n\n      numberOfReRenders += 1;\n\n      {\n        // Even when hot reloading, allow dependencies to stabilize\n        // after first render to prevent infinite render phase updates.\n        ignorePreviousDependencies = false;\n      } // Start over from the beginning of the list\n\n\n      currentHook = null;\n      workInProgressHook = null;\n      workInProgress.updateQueue = null;\n\n      {\n        // Also validate hook order for cascading updates.\n        hookTypesUpdateIndexDev = -1;\n      }\n\n      ReactCurrentDispatcher$1.current =  HooksDispatcherOnRerenderInDEV ;\n      children = Component(props, secondArg);\n    } while (didScheduleRenderPhaseUpdateDuringThisPass);\n  } // We can assume the previous dispatcher is always this one, since we set it\n  // at the beginning of the render phase and there's no re-entrance.\n\n\n  ReactCurrentDispatcher$1.current = ContextOnlyDispatcher;\n\n  {\n    workInProgress._debugHookTypes = hookTypesDev;\n  } // This check uses currentHook so that it works the same in DEV and prod bundles.\n  // hookTypesDev could catch more cases (e.g. context) but only in DEV bundles.\n\n\n  var didRenderTooFewHooks = currentHook !== null && currentHook.next !== null;\n  renderLanes = NoLanes;\n  currentlyRenderingFiber$1 = null;\n  currentHook = null;\n  workInProgressHook = null;\n\n  {\n    currentHookNameInDev = null;\n    hookTypesDev = null;\n    hookTypesUpdateIndexDev = -1; // Confirm that a static flag was not added or removed since the last\n    // render. If this fires, it suggests that we incorrectly reset the static\n    // flags in some other part of the codebase. This has happened before, for\n    // example, in the SuspenseList implementation.\n\n    if (current !== null && (current.flags & StaticMask) !== (workInProgress.flags & StaticMask) && // Disable this warning in legacy mode, because legacy Suspense is weird\n    // and creates false positives. To make this work in legacy mode, we'd\n    // need to mark fibers that commit in an incomplete state, somehow. For\n    // now I'll disable the warning that most of the bugs that would trigger\n    // it are either exclusive to concurrent mode or exist in both.\n    (current.mode & ConcurrentMode) !== NoMode) {\n      error('Internal React error: Expected static flag was missing. Please ' + 'notify the React team.');\n    }\n  }\n\n  didScheduleRenderPhaseUpdate = false; // This is reset by checkDidRenderIdHook\n  // localIdCounter = 0;\n\n  if (didRenderTooFewHooks) {\n    throw new Error('Rendered fewer hooks than expected. This may be caused by an accidental ' + 'early return statement.');\n  }\n\n  return children;\n}\nfunction checkDidRenderIdHook() {\n  // This should be called immediately after every renderWithHooks call.\n  // Conceptually, it's part of the return value of renderWithHooks; it's only a\n  // separate function to avoid using an array tuple.\n  var didRenderIdHook = localIdCounter !== 0;\n  localIdCounter = 0;\n  return didRenderIdHook;\n}\nfunction bailoutHooks(current, workInProgress, lanes) {\n  workInProgress.updateQueue = current.updateQueue; // TODO: Don't need to reset the flags here, because they're reset in the\n  // complete phase (bubbleProperties).\n\n  if ( (workInProgress.mode & StrictEffectsMode) !== NoMode) {\n    workInProgress.flags &= ~(MountPassiveDev | MountLayoutDev | Passive | Update);\n  } else {\n    workInProgress.flags &= ~(Passive | Update);\n  }\n\n  current.lanes = removeLanes(current.lanes, lanes);\n}\nfunction resetHooksAfterThrow() {\n  // We can assume the previous dispatcher is always this one, since we set it\n  // at the beginning of the render phase and there's no re-entrance.\n  ReactCurrentDispatcher$1.current = ContextOnlyDispatcher;\n\n  if (didScheduleRenderPhaseUpdate) {\n    // There were render phase updates. These are only valid for this render\n    // phase, which we are now aborting. Remove the updates from the queues so\n    // they do not persist to the next render. Do not remove updates from hooks\n    // that weren't processed.\n    //\n    // Only reset the updates from the queue if it has a clone. If it does\n    // not have a clone, that means it wasn't processed, and the updates were\n    // scheduled before we entered the render phase.\n    var hook = currentlyRenderingFiber$1.memoizedState;\n\n    while (hook !== null) {\n      var queue = hook.queue;\n\n      if (queue !== null) {\n        queue.pending = null;\n      }\n\n      hook = hook.next;\n    }\n\n    didScheduleRenderPhaseUpdate = false;\n  }\n\n  renderLanes = NoLanes;\n  currentlyRenderingFiber$1 = null;\n  currentHook = null;\n  workInProgressHook = null;\n\n  {\n    hookTypesDev = null;\n    hookTypesUpdateIndexDev = -1;\n    currentHookNameInDev = null;\n    isUpdatingOpaqueValueInRenderPhase = false;\n  }\n\n  didScheduleRenderPhaseUpdateDuringThisPass = false;\n  localIdCounter = 0;\n}\n\nfunction mountWorkInProgressHook() {\n  var hook = {\n    memoizedState: null,\n    baseState: null,\n    baseQueue: null,\n    queue: null,\n    next: null\n  };\n\n  if (workInProgressHook === null) {\n    // This is the first hook in the list\n    currentlyRenderingFiber$1.memoizedState = workInProgressHook = hook;\n  } else {\n    // Append to the end of the list\n    workInProgressHook = workInProgressHook.next = hook;\n  }\n\n  return workInProgressHook;\n}\n\nfunction updateWorkInProgressHook() {\n  // This function is used both for updates and for re-renders triggered by a\n  // render phase update. It assumes there is either a current hook we can\n  // clone, or a work-in-progress hook from a previous render pass that we can\n  // use as a base. When we reach the end of the base list, we must switch to\n  // the dispatcher used for mounts.\n  var nextCurrentHook;\n\n  if (currentHook === null) {\n    var current = currentlyRenderingFiber$1.alternate;\n\n    if (current !== null) {\n      nextCurrentHook = current.memoizedState;\n    } else {\n      nextCurrentHook = null;\n    }\n  } else {\n    nextCurrentHook = currentHook.next;\n  }\n\n  var nextWorkInProgressHook;\n\n  if (workInProgressHook === null) {\n    nextWorkInProgressHook = currentlyRenderingFiber$1.memoizedState;\n  } else {\n    nextWorkInProgressHook = workInProgressHook.next;\n  }\n\n  if (nextWorkInProgressHook !== null) {\n    // There's already a work-in-progress. Reuse it.\n    workInProgressHook = nextWorkInProgressHook;\n    nextWorkInProgressHook = workInProgressHook.next;\n    currentHook = nextCurrentHook;\n  } else {\n    // Clone from the current hook.\n    if (nextCurrentHook === null) {\n      throw new Error('Rendered more hooks than during the previous render.');\n    }\n\n    currentHook = nextCurrentHook;\n    var newHook = {\n      memoizedState: currentHook.memoizedState,\n      baseState: currentHook.baseState,\n      baseQueue: currentHook.baseQueue,\n      queue: currentHook.queue,\n      next: null\n    };\n\n    if (workInProgressHook === null) {\n      // This is the first hook in the list.\n      currentlyRenderingFiber$1.memoizedState = workInProgressHook = newHook;\n    } else {\n      // Append to the end of the list.\n      workInProgressHook = workInProgressHook.next = newHook;\n    }\n  }\n\n  return workInProgressHook;\n}\n\nfunction createFunctionComponentUpdateQueue() {\n  return {\n    lastEffect: null,\n    stores: null\n  };\n}\n\nfunction basicStateReducer(state, action) {\n  // $FlowFixMe: Flow doesn't like mixed types\n  return typeof action === 'function' ? action(state) : action;\n}\n\nfunction mountReducer(reducer, initialArg, init) {\n  var hook = mountWorkInProgressHook();\n  var initialState;\n\n  if (init !== undefined) {\n    initialState = init(initialArg);\n  } else {\n    initialState = initialArg;\n  }\n\n  hook.memoizedState = hook.baseState = initialState;\n  var queue = {\n    pending: null,\n    interleaved: null,\n    lanes: NoLanes,\n    dispatch: null,\n    lastRenderedReducer: reducer,\n    lastRenderedState: initialState\n  };\n  hook.queue = queue;\n  var dispatch = queue.dispatch = dispatchReducerAction.bind(null, currentlyRenderingFiber$1, queue);\n  return [hook.memoizedState, dispatch];\n}\n\nfunction updateReducer(reducer, initialArg, init) {\n  var hook = updateWorkInProgressHook();\n  var queue = hook.queue;\n\n  if (queue === null) {\n    throw new Error('Should have a queue. This is likely a bug in React. Please file an issue.');\n  }\n\n  queue.lastRenderedReducer = reducer;\n  var current = currentHook; // The last rebase update that is NOT part of the base state.\n\n  var baseQueue = current.baseQueue; // The last pending update that hasn't been processed yet.\n\n  var pendingQueue = queue.pending;\n\n  if (pendingQueue !== null) {\n    // We have new updates that haven't been processed yet.\n    // We'll add them to the base queue.\n    if (baseQueue !== null) {\n      // Merge the pending queue and the base queue.\n      var baseFirst = baseQueue.next;\n      var pendingFirst = pendingQueue.next;\n      baseQueue.next = pendingFirst;\n      pendingQueue.next = baseFirst;\n    }\n\n    {\n      if (current.baseQueue !== baseQueue) {\n        // Internal invariant that should never happen, but feasibly could in\n        // the future if we implement resuming, or some form of that.\n        error('Internal error: Expected work-in-progress queue to be a clone. ' + 'This is a bug in React.');\n      }\n    }\n\n    current.baseQueue = baseQueue = pendingQueue;\n    queue.pending = null;\n  }\n\n  if (baseQueue !== null) {\n    // We have a queue to process.\n    var first = baseQueue.next;\n    var newState = current.baseState;\n    var newBaseState = null;\n    var newBaseQueueFirst = null;\n    var newBaseQueueLast = null;\n    var update = first;\n\n    do {\n      var updateLane = update.lane;\n\n      if (!isSubsetOfLanes(renderLanes, updateLane)) {\n        // Priority is insufficient. Skip this update. If this is the first\n        // skipped update, the previous update/state is the new base\n        // update/state.\n        var clone = {\n          lane: updateLane,\n          action: update.action,\n          hasEagerState: update.hasEagerState,\n          eagerState: update.eagerState,\n          next: null\n        };\n\n        if (newBaseQueueLast === null) {\n          newBaseQueueFirst = newBaseQueueLast = clone;\n          newBaseState = newState;\n        } else {\n          newBaseQueueLast = newBaseQueueLast.next = clone;\n        } // Update the remaining priority in the queue.\n        // TODO: Don't need to accumulate this. Instead, we can remove\n        // renderLanes from the original lanes.\n\n\n        currentlyRenderingFiber$1.lanes = mergeLanes(currentlyRenderingFiber$1.lanes, updateLane);\n        markSkippedUpdateLanes(updateLane);\n      } else {\n        // This update does have sufficient priority.\n        if (newBaseQueueLast !== null) {\n          var _clone = {\n            // This update is going to be committed so we never want uncommit\n            // it. Using NoLane works because 0 is a subset of all bitmasks, so\n            // this will never be skipped by the check above.\n            lane: NoLane,\n            action: update.action,\n            hasEagerState: update.hasEagerState,\n            eagerState: update.eagerState,\n            next: null\n          };\n          newBaseQueueLast = newBaseQueueLast.next = _clone;\n        } // Process this update.\n\n\n        if (update.hasEagerState) {\n          // If this update is a state update (not a reducer) and was processed eagerly,\n          // we can use the eagerly computed state\n          newState = update.eagerState;\n        } else {\n          var action = update.action;\n          newState = reducer(newState, action);\n        }\n      }\n\n      update = update.next;\n    } while (update !== null && update !== first);\n\n    if (newBaseQueueLast === null) {\n      newBaseState = newState;\n    } else {\n      newBaseQueueLast.next = newBaseQueueFirst;\n    } // Mark that the fiber performed work, but only if the new state is\n    // different from the current state.\n\n\n    if (!objectIs(newState, hook.memoizedState)) {\n      markWorkInProgressReceivedUpdate();\n    }\n\n    hook.memoizedState = newState;\n    hook.baseState = newBaseState;\n    hook.baseQueue = newBaseQueueLast;\n    queue.lastRenderedState = newState;\n  } // Interleaved updates are stored on a separate queue. We aren't going to\n  // process them during this render, but we do need to track which lanes\n  // are remaining.\n\n\n  var lastInterleaved = queue.interleaved;\n\n  if (lastInterleaved !== null) {\n    var interleaved = lastInterleaved;\n\n    do {\n      var interleavedLane = interleaved.lane;\n      currentlyRenderingFiber$1.lanes = mergeLanes(currentlyRenderingFiber$1.lanes, interleavedLane);\n      markSkippedUpdateLanes(interleavedLane);\n      interleaved = interleaved.next;\n    } while (interleaved !== lastInterleaved);\n  } else if (baseQueue === null) {\n    // `queue.lanes` is used for entangling transitions. We can set it back to\n    // zero once the queue is empty.\n    queue.lanes = NoLanes;\n  }\n\n  var dispatch = queue.dispatch;\n  return [hook.memoizedState, dispatch];\n}\n\nfunction rerenderReducer(reducer, initialArg, init) {\n  var hook = updateWorkInProgressHook();\n  var queue = hook.queue;\n\n  if (queue === null) {\n    throw new Error('Should have a queue. This is likely a bug in React. Please file an issue.');\n  }\n\n  queue.lastRenderedReducer = reducer; // This is a re-render. Apply the new render phase updates to the previous\n  // work-in-progress hook.\n\n  var dispatch = queue.dispatch;\n  var lastRenderPhaseUpdate = queue.pending;\n  var newState = hook.memoizedState;\n\n  if (lastRenderPhaseUpdate !== null) {\n    // The queue doesn't persist past this render pass.\n    queue.pending = null;\n    var firstRenderPhaseUpdate = lastRenderPhaseUpdate.next;\n    var update = firstRenderPhaseUpdate;\n\n    do {\n      // Process this render phase update. We don't have to check the\n      // priority because it will always be the same as the current\n      // render's.\n      var action = update.action;\n      newState = reducer(newState, action);\n      update = update.next;\n    } while (update !== firstRenderPhaseUpdate); // Mark that the fiber performed work, but only if the new state is\n    // different from the current state.\n\n\n    if (!objectIs(newState, hook.memoizedState)) {\n      markWorkInProgressReceivedUpdate();\n    }\n\n    hook.memoizedState = newState; // Don't persist the state accumulated from the render phase updates to\n    // the base state unless the queue is empty.\n    // TODO: Not sure if this is the desired semantics, but it's what we\n    // do for gDSFP. I can't remember why.\n\n    if (hook.baseQueue === null) {\n      hook.baseState = newState;\n    }\n\n    queue.lastRenderedState = newState;\n  }\n\n  return [newState, dispatch];\n}\n\nfunction mountMutableSource(source, getSnapshot, subscribe) {\n  {\n    return undefined;\n  }\n}\n\nfunction updateMutableSource(source, getSnapshot, subscribe) {\n  {\n    return undefined;\n  }\n}\n\nfunction mountSyncExternalStore(subscribe, getSnapshot, getServerSnapshot) {\n  var fiber = currentlyRenderingFiber$1;\n  var hook = mountWorkInProgressHook();\n  var nextSnapshot;\n  var isHydrating = getIsHydrating();\n\n  if (isHydrating) {\n    if (getServerSnapshot === undefined) {\n      throw new Error('Missing getServerSnapshot, which is required for ' + 'server-rendered content. Will revert to client rendering.');\n    }\n\n    nextSnapshot = getServerSnapshot();\n\n    {\n      if (!didWarnUncachedGetSnapshot) {\n        if (nextSnapshot !== getServerSnapshot()) {\n          error('The result of getServerSnapshot should be cached to avoid an infinite loop');\n\n          didWarnUncachedGetSnapshot = true;\n        }\n      }\n    }\n  } else {\n    nextSnapshot = getSnapshot();\n\n    {\n      if (!didWarnUncachedGetSnapshot) {\n        var cachedSnapshot = getSnapshot();\n\n        if (!objectIs(nextSnapshot, cachedSnapshot)) {\n          error('The result of getSnapshot should be cached to avoid an infinite loop');\n\n          didWarnUncachedGetSnapshot = true;\n        }\n      }\n    } // Unless we're rendering a blocking lane, schedule a consistency check.\n    // Right before committing, we will walk the tree and check if any of the\n    // stores were mutated.\n    //\n    // We won't do this if we're hydrating server-rendered content, because if\n    // the content is stale, it's already visible anyway. Instead we'll patch\n    // it up in a passive effect.\n\n\n    var root = getWorkInProgressRoot();\n\n    if (root === null) {\n      throw new Error('Expected a work-in-progress root. This is a bug in React. Please file an issue.');\n    }\n\n    if (!includesBlockingLane(root, renderLanes)) {\n      pushStoreConsistencyCheck(fiber, getSnapshot, nextSnapshot);\n    }\n  } // Read the current snapshot from the store on every render. This breaks the\n  // normal rules of React, and only works because store updates are\n  // always synchronous.\n\n\n  hook.memoizedState = nextSnapshot;\n  var inst = {\n    value: nextSnapshot,\n    getSnapshot: getSnapshot\n  };\n  hook.queue = inst; // Schedule an effect to subscribe to the store.\n\n  mountEffect(subscribeToStore.bind(null, fiber, inst, subscribe), [subscribe]); // Schedule an effect to update the mutable instance fields. We will update\n  // this whenever subscribe, getSnapshot, or value changes. Because there's no\n  // clean-up function, and we track the deps correctly, we can call pushEffect\n  // directly, without storing any additional state. For the same reason, we\n  // don't need to set a static flag, either.\n  // TODO: We can move this to the passive phase once we add a pre-commit\n  // consistency check. See the next comment.\n\n  fiber.flags |= Passive;\n  pushEffect(HasEffect | Passive$1, updateStoreInstance.bind(null, fiber, inst, nextSnapshot, getSnapshot), undefined, null);\n  return nextSnapshot;\n}\n\nfunction updateSyncExternalStore(subscribe, getSnapshot, getServerSnapshot) {\n  var fiber = currentlyRenderingFiber$1;\n  var hook = updateWorkInProgressHook(); // Read the current snapshot from the store on every render. This breaks the\n  // normal rules of React, and only works because store updates are\n  // always synchronous.\n\n  var nextSnapshot = getSnapshot();\n\n  {\n    if (!didWarnUncachedGetSnapshot) {\n      var cachedSnapshot = getSnapshot();\n\n      if (!objectIs(nextSnapshot, cachedSnapshot)) {\n        error('The result of getSnapshot should be cached to avoid an infinite loop');\n\n        didWarnUncachedGetSnapshot = true;\n      }\n    }\n  }\n\n  var prevSnapshot = hook.memoizedState;\n  var snapshotChanged = !objectIs(prevSnapshot, nextSnapshot);\n\n  if (snapshotChanged) {\n    hook.memoizedState = nextSnapshot;\n    markWorkInProgressReceivedUpdate();\n  }\n\n  var inst = hook.queue;\n  updateEffect(subscribeToStore.bind(null, fiber, inst, subscribe), [subscribe]); // Whenever getSnapshot or subscribe changes, we need to check in the\n  // commit phase if there was an interleaved mutation. In concurrent mode\n  // this can happen all the time, but even in synchronous mode, an earlier\n  // effect may have mutated the store.\n\n  if (inst.getSnapshot !== getSnapshot || snapshotChanged || // Check if the susbcribe function changed. We can save some memory by\n  // checking whether we scheduled a subscription effect above.\n  workInProgressHook !== null && workInProgressHook.memoizedState.tag & HasEffect) {\n    fiber.flags |= Passive;\n    pushEffect(HasEffect | Passive$1, updateStoreInstance.bind(null, fiber, inst, nextSnapshot, getSnapshot), undefined, null); // Unless we're rendering a blocking lane, schedule a consistency check.\n    // Right before committing, we will walk the tree and check if any of the\n    // stores were mutated.\n\n    var root = getWorkInProgressRoot();\n\n    if (root === null) {\n      throw new Error('Expected a work-in-progress root. This is a bug in React. Please file an issue.');\n    }\n\n    if (!includesBlockingLane(root, renderLanes)) {\n      pushStoreConsistencyCheck(fiber, getSnapshot, nextSnapshot);\n    }\n  }\n\n  return nextSnapshot;\n}\n\nfunction pushStoreConsistencyCheck(fiber, getSnapshot, renderedSnapshot) {\n  fiber.flags |= StoreConsistency;\n  var check = {\n    getSnapshot: getSnapshot,\n    value: renderedSnapshot\n  };\n  var componentUpdateQueue = currentlyRenderingFiber$1.updateQueue;\n\n  if (componentUpdateQueue === null) {\n    componentUpdateQueue = createFunctionComponentUpdateQueue();\n    currentlyRenderingFiber$1.updateQueue = componentUpdateQueue;\n    componentUpdateQueue.stores = [check];\n  } else {\n    var stores = componentUpdateQueue.stores;\n\n    if (stores === null) {\n      componentUpdateQueue.stores = [check];\n    } else {\n      stores.push(check);\n    }\n  }\n}\n\nfunction updateStoreInstance(fiber, inst, nextSnapshot, getSnapshot) {\n  // These are updated in the passive phase\n  inst.value = nextSnapshot;\n  inst.getSnapshot = getSnapshot; // Something may have been mutated in between render and commit. This could\n  // have been in an event that fired before the passive effects, or it could\n  // have been in a layout effect. In that case, we would have used the old\n  // snapsho and getSnapshot values to bail out. We need to check one more time.\n\n  if (checkIfSnapshotChanged(inst)) {\n    // Force a re-render.\n    forceStoreRerender(fiber);\n  }\n}\n\nfunction subscribeToStore(fiber, inst, subscribe) {\n  var handleStoreChange = function () {\n    // The store changed. Check if the snapshot changed since the last time we\n    // read from the store.\n    if (checkIfSnapshotChanged(inst)) {\n      // Force a re-render.\n      forceStoreRerender(fiber);\n    }\n  }; // Subscribe to the store and return a clean-up function.\n\n\n  return subscribe(handleStoreChange);\n}\n\nfunction checkIfSnapshotChanged(inst) {\n  var latestGetSnapshot = inst.getSnapshot;\n  var prevValue = inst.value;\n\n  try {\n    var nextValue = latestGetSnapshot();\n    return !objectIs(prevValue, nextValue);\n  } catch (error) {\n    return true;\n  }\n}\n\nfunction forceStoreRerender(fiber) {\n  var root = enqueueConcurrentRenderForLane(fiber, SyncLane);\n\n  if (root !== null) {\n    scheduleUpdateOnFiber(root, fiber, SyncLane, NoTimestamp);\n  }\n}\n\nfunction mountState(initialState) {\n  var hook = mountWorkInProgressHook();\n\n  if (typeof initialState === 'function') {\n    // $FlowFixMe: Flow doesn't like mixed types\n    initialState = initialState();\n  }\n\n  hook.memoizedState = hook.baseState = initialState;\n  var queue = {\n    pending: null,\n    interleaved: null,\n    lanes: NoLanes,\n    dispatch: null,\n    lastRenderedReducer: basicStateReducer,\n    lastRenderedState: initialState\n  };\n  hook.queue = queue;\n  var dispatch = queue.dispatch = dispatchSetState.bind(null, currentlyRenderingFiber$1, queue);\n  return [hook.memoizedState, dispatch];\n}\n\nfunction updateState(initialState) {\n  return updateReducer(basicStateReducer);\n}\n\nfunction rerenderState(initialState) {\n  return rerenderReducer(basicStateReducer);\n}\n\nfunction pushEffect(tag, create, destroy, deps) {\n  var effect = {\n    tag: tag,\n    create: create,\n    destroy: destroy,\n    deps: deps,\n    // Circular\n    next: null\n  };\n  var componentUpdateQueue = currentlyRenderingFiber$1.updateQueue;\n\n  if (componentUpdateQueue === null) {\n    componentUpdateQueue = createFunctionComponentUpdateQueue();\n    currentlyRenderingFiber$1.updateQueue = componentUpdateQueue;\n    componentUpdateQueue.lastEffect = effect.next = effect;\n  } else {\n    var lastEffect = componentUpdateQueue.lastEffect;\n\n    if (lastEffect === null) {\n      componentUpdateQueue.lastEffect = effect.next = effect;\n    } else {\n      var firstEffect = lastEffect.next;\n      lastEffect.next = effect;\n      effect.next = firstEffect;\n      componentUpdateQueue.lastEffect = effect;\n    }\n  }\n\n  return effect;\n}\n\nfunction mountRef(initialValue) {\n  var hook = mountWorkInProgressHook();\n\n  {\n    var _ref2 = {\n      current: initialValue\n    };\n    hook.memoizedState = _ref2;\n    return _ref2;\n  }\n}\n\nfunction updateRef(initialValue) {\n  var hook = updateWorkInProgressHook();\n  return hook.memoizedState;\n}\n\nfunction mountEffectImpl(fiberFlags, hookFlags, create, deps) {\n  var hook = mountWorkInProgressHook();\n  var nextDeps = deps === undefined ? null : deps;\n  currentlyRenderingFiber$1.flags |= fiberFlags;\n  hook.memoizedState = pushEffect(HasEffect | hookFlags, create, undefined, nextDeps);\n}\n\nfunction updateEffectImpl(fiberFlags, hookFlags, create, deps) {\n  var hook = updateWorkInProgressHook();\n  var nextDeps = deps === undefined ? null : deps;\n  var destroy = undefined;\n\n  if (currentHook !== null) {\n    var prevEffect = currentHook.memoizedState;\n    destroy = prevEffect.destroy;\n\n    if (nextDeps !== null) {\n      var prevDeps = prevEffect.deps;\n\n      if (areHookInputsEqual(nextDeps, prevDeps)) {\n        hook.memoizedState = pushEffect(hookFlags, create, destroy, nextDeps);\n        return;\n      }\n    }\n  }\n\n  currentlyRenderingFiber$1.flags |= fiberFlags;\n  hook.memoizedState = pushEffect(HasEffect | hookFlags, create, destroy, nextDeps);\n}\n\nfunction mountEffect(create, deps) {\n  if ( (currentlyRenderingFiber$1.mode & StrictEffectsMode) !== NoMode) {\n    return mountEffectImpl(MountPassiveDev | Passive | PassiveStatic, Passive$1, create, deps);\n  } else {\n    return mountEffectImpl(Passive | PassiveStatic, Passive$1, create, deps);\n  }\n}\n\nfunction updateEffect(create, deps) {\n  return updateEffectImpl(Passive, Passive$1, create, deps);\n}\n\nfunction mountInsertionEffect(create, deps) {\n  return mountEffectImpl(Update, Insertion, create, deps);\n}\n\nfunction updateInsertionEffect(create, deps) {\n  return updateEffectImpl(Update, Insertion, create, deps);\n}\n\nfunction mountLayoutEffect(create, deps) {\n  var fiberFlags = Update;\n\n  {\n    fiberFlags |= LayoutStatic;\n  }\n\n  if ( (currentlyRenderingFiber$1.mode & StrictEffectsMode) !== NoMode) {\n    fiberFlags |= MountLayoutDev;\n  }\n\n  return mountEffectImpl(fiberFlags, Layout, create, deps);\n}\n\nfunction updateLayoutEffect(create, deps) {\n  return updateEffectImpl(Update, Layout, create, deps);\n}\n\nfunction imperativeHandleEffect(create, ref) {\n  if (typeof ref === 'function') {\n    var refCallback = ref;\n\n    var _inst = create();\n\n    refCallback(_inst);\n    return function () {\n      refCallback(null);\n    };\n  } else if (ref !== null && ref !== undefined) {\n    var refObject = ref;\n\n    {\n      if (!refObject.hasOwnProperty('current')) {\n        error('Expected useImperativeHandle() first argument to either be a ' + 'ref callback or React.createRef() object. Instead received: %s.', 'an object with keys {' + Object.keys(refObject).join(', ') + '}');\n      }\n    }\n\n    var _inst2 = create();\n\n    refObject.current = _inst2;\n    return function () {\n      refObject.current = null;\n    };\n  }\n}\n\nfunction mountImperativeHandle(ref, create, deps) {\n  {\n    if (typeof create !== 'function') {\n      error('Expected useImperativeHandle() second argument to be a function ' + 'that creates a handle. Instead received: %s.', create !== null ? typeof create : 'null');\n    }\n  } // TODO: If deps are provided, should we skip comparing the ref itself?\n\n\n  var effectDeps = deps !== null && deps !== undefined ? deps.concat([ref]) : null;\n  var fiberFlags = Update;\n\n  {\n    fiberFlags |= LayoutStatic;\n  }\n\n  if ( (currentlyRenderingFiber$1.mode & StrictEffectsMode) !== NoMode) {\n    fiberFlags |= MountLayoutDev;\n  }\n\n  return mountEffectImpl(fiberFlags, Layout, imperativeHandleEffect.bind(null, create, ref), effectDeps);\n}\n\nfunction updateImperativeHandle(ref, create, deps) {\n  {\n    if (typeof create !== 'function') {\n      error('Expected useImperativeHandle() second argument to be a function ' + 'that creates a handle. Instead received: %s.', create !== null ? typeof create : 'null');\n    }\n  } // TODO: If deps are provided, should we skip comparing the ref itself?\n\n\n  var effectDeps = deps !== null && deps !== undefined ? deps.concat([ref]) : null;\n  return updateEffectImpl(Update, Layout, imperativeHandleEffect.bind(null, create, ref), effectDeps);\n}\n\nfunction mountDebugValue(value, formatterFn) {// This hook is normally a no-op.\n  // The react-debug-hooks package injects its own implementation\n  // so that e.g. DevTools can display custom hook values.\n}\n\nvar updateDebugValue = mountDebugValue;\n\nfunction mountCallback(callback, deps) {\n  var hook = mountWorkInProgressHook();\n  var nextDeps = deps === undefined ? null : deps;\n  hook.memoizedState = [callback, nextDeps];\n  return callback;\n}\n\nfunction updateCallback(callback, deps) {\n  var hook = updateWorkInProgressHook();\n  var nextDeps = deps === undefined ? null : deps;\n  var prevState = hook.memoizedState;\n\n  if (prevState !== null) {\n    if (nextDeps !== null) {\n      var prevDeps = prevState[1];\n\n      if (areHookInputsEqual(nextDeps, prevDeps)) {\n        return prevState[0];\n      }\n    }\n  }\n\n  hook.memoizedState = [callback, nextDeps];\n  return callback;\n}\n\nfunction mountMemo(nextCreate, deps) {\n  var hook = mountWorkInProgressHook();\n  var nextDeps = deps === undefined ? null : deps;\n  var nextValue = nextCreate();\n  hook.memoizedState = [nextValue, nextDeps];\n  return nextValue;\n}\n\nfunction updateMemo(nextCreate, deps) {\n  var hook = updateWorkInProgressHook();\n  var nextDeps = deps === undefined ? null : deps;\n  var prevState = hook.memoizedState;\n\n  if (prevState !== null) {\n    // Assume these are defined. If they're not, areHookInputsEqual will warn.\n    if (nextDeps !== null) {\n      var prevDeps = prevState[1];\n\n      if (areHookInputsEqual(nextDeps, prevDeps)) {\n        return prevState[0];\n      }\n    }\n  }\n\n  var nextValue = nextCreate();\n  hook.memoizedState = [nextValue, nextDeps];\n  return nextValue;\n}\n\nfunction mountDeferredValue(value) {\n  var hook = mountWorkInProgressHook();\n  hook.memoizedState = value;\n  return value;\n}\n\nfunction updateDeferredValue(value) {\n  var hook = updateWorkInProgressHook();\n  var resolvedCurrentHook = currentHook;\n  var prevValue = resolvedCurrentHook.memoizedState;\n  return updateDeferredValueImpl(hook, prevValue, value);\n}\n\nfunction rerenderDeferredValue(value) {\n  var hook = updateWorkInProgressHook();\n\n  if (currentHook === null) {\n    // This is a rerender during a mount.\n    hook.memoizedState = value;\n    return value;\n  } else {\n    // This is a rerender during an update.\n    var prevValue = currentHook.memoizedState;\n    return updateDeferredValueImpl(hook, prevValue, value);\n  }\n}\n\nfunction updateDeferredValueImpl(hook, prevValue, value) {\n  var shouldDeferValue = !includesOnlyNonUrgentLanes(renderLanes);\n\n  if (shouldDeferValue) {\n    // This is an urgent update. If the value has changed, keep using the\n    // previous value and spawn a deferred render to update it later.\n    if (!objectIs(value, prevValue)) {\n      // Schedule a deferred render\n      var deferredLane = claimNextTransitionLane();\n      currentlyRenderingFiber$1.lanes = mergeLanes(currentlyRenderingFiber$1.lanes, deferredLane);\n      markSkippedUpdateLanes(deferredLane); // Set this to true to indicate that the rendered value is inconsistent\n      // from the latest value. The name \"baseState\" doesn't really match how we\n      // use it because we're reusing a state hook field instead of creating a\n      // new one.\n\n      hook.baseState = true;\n    } // Reuse the previous value\n\n\n    return prevValue;\n  } else {\n    // This is not an urgent update, so we can use the latest value regardless\n    // of what it is. No need to defer it.\n    // However, if we're currently inside a spawned render, then we need to mark\n    // this as an update to prevent the fiber from bailing out.\n    //\n    // `baseState` is true when the current value is different from the rendered\n    // value. The name doesn't really match how we use it because we're reusing\n    // a state hook field instead of creating a new one.\n    if (hook.baseState) {\n      // Flip this back to false.\n      hook.baseState = false;\n      markWorkInProgressReceivedUpdate();\n    }\n\n    hook.memoizedState = value;\n    return value;\n  }\n}\n\nfunction startTransition(setPending, callback, options) {\n  var previousPriority = getCurrentUpdatePriority();\n  setCurrentUpdatePriority(higherEventPriority(previousPriority, ContinuousEventPriority));\n  setPending(true);\n  var prevTransition = ReactCurrentBatchConfig$2.transition;\n  ReactCurrentBatchConfig$2.transition = {};\n  var currentTransition = ReactCurrentBatchConfig$2.transition;\n\n  {\n    ReactCurrentBatchConfig$2.transition._updatedFibers = new Set();\n  }\n\n  try {\n    setPending(false);\n    callback();\n  } finally {\n    setCurrentUpdatePriority(previousPriority);\n    ReactCurrentBatchConfig$2.transition = prevTransition;\n\n    {\n      if (prevTransition === null && currentTransition._updatedFibers) {\n        var updatedFibersCount = currentTransition._updatedFibers.size;\n\n        if (updatedFibersCount > 10) {\n          warn('Detected a large number of updates inside startTransition. ' + 'If this is due to a subscription please re-write it to use React provided hooks. ' + 'Otherwise concurrent mode guarantees are off the table.');\n        }\n\n        currentTransition._updatedFibers.clear();\n      }\n    }\n  }\n}\n\nfunction mountTransition() {\n  var _mountState = mountState(false),\n      isPending = _mountState[0],\n      setPending = _mountState[1]; // The `start` method never changes.\n\n\n  var start = startTransition.bind(null, setPending);\n  var hook = mountWorkInProgressHook();\n  hook.memoizedState = start;\n  return [isPending, start];\n}\n\nfunction updateTransition() {\n  var _updateState = updateState(),\n      isPending = _updateState[0];\n\n  var hook = updateWorkInProgressHook();\n  var start = hook.memoizedState;\n  return [isPending, start];\n}\n\nfunction rerenderTransition() {\n  var _rerenderState = rerenderState(),\n      isPending = _rerenderState[0];\n\n  var hook = updateWorkInProgressHook();\n  var start = hook.memoizedState;\n  return [isPending, start];\n}\n\nvar isUpdatingOpaqueValueInRenderPhase = false;\nfunction getIsUpdatingOpaqueValueInRenderPhaseInDEV() {\n  {\n    return isUpdatingOpaqueValueInRenderPhase;\n  }\n}\n\nfunction mountId() {\n  var hook = mountWorkInProgressHook();\n  var root = getWorkInProgressRoot(); // TODO: In Fizz, id generation is specific to each server config. Maybe we\n  // should do this in Fiber, too? Deferring this decision for now because\n  // there's no other place to store the prefix except for an internal field on\n  // the public createRoot object, which the fiber tree does not currently have\n  // a reference to.\n\n  var identifierPrefix = root.identifierPrefix;\n  var id;\n\n  if (getIsHydrating()) {\n    var treeId = getTreeId(); // Use a captial R prefix for server-generated ids.\n\n    id = ':' + identifierPrefix + 'R' + treeId; // Unless this is the first id at this level, append a number at the end\n    // that represents the position of this useId hook among all the useId\n    // hooks for this fiber.\n\n    var localId = localIdCounter++;\n\n    if (localId > 0) {\n      id += 'H' + localId.toString(32);\n    }\n\n    id += ':';\n  } else {\n    // Use a lowercase r prefix for client-generated ids.\n    var globalClientId = globalClientIdCounter++;\n    id = ':' + identifierPrefix + 'r' + globalClientId.toString(32) + ':';\n  }\n\n  hook.memoizedState = id;\n  return id;\n}\n\nfunction updateId() {\n  var hook = updateWorkInProgressHook();\n  var id = hook.memoizedState;\n  return id;\n}\n\nfunction dispatchReducerAction(fiber, queue, action) {\n  {\n    if (typeof arguments[3] === 'function') {\n      error(\"State updates from the useState() and useReducer() Hooks don't support the \" + 'second callback argument. To execute a side effect after ' + 'rendering, declare it in the component body with useEffect().');\n    }\n  }\n\n  var lane = requestUpdateLane(fiber);\n  var update = {\n    lane: lane,\n    action: action,\n    hasEagerState: false,\n    eagerState: null,\n    next: null\n  };\n\n  if (isRenderPhaseUpdate(fiber)) {\n    enqueueRenderPhaseUpdate(queue, update);\n  } else {\n    var root = enqueueConcurrentHookUpdate(fiber, queue, update, lane);\n\n    if (root !== null) {\n      var eventTime = requestEventTime();\n      scheduleUpdateOnFiber(root, fiber, lane, eventTime);\n      entangleTransitionUpdate(root, queue, lane);\n    }\n  }\n\n  markUpdateInDevTools(fiber, lane);\n}\n\nfunction dispatchSetState(fiber, queue, action) {\n  {\n    if (typeof arguments[3] === 'function') {\n      error(\"State updates from the useState() and useReducer() Hooks don't support the \" + 'second callback argument. To execute a side effect after ' + 'rendering, declare it in the component body with useEffect().');\n    }\n  }\n\n  var lane = requestUpdateLane(fiber);\n  var update = {\n    lane: lane,\n    action: action,\n    hasEagerState: false,\n    eagerState: null,\n    next: null\n  };\n\n  if (isRenderPhaseUpdate(fiber)) {\n    enqueueRenderPhaseUpdate(queue, update);\n  } else {\n    var alternate = fiber.alternate;\n\n    if (fiber.lanes === NoLanes && (alternate === null || alternate.lanes === NoLanes)) {\n      // The queue is currently empty, which means we can eagerly compute the\n      // next state before entering the render phase. If the new state is the\n      // same as the current state, we may be able to bail out entirely.\n      var lastRenderedReducer = queue.lastRenderedReducer;\n\n      if (lastRenderedReducer !== null) {\n        var prevDispatcher;\n\n        {\n          prevDispatcher = ReactCurrentDispatcher$1.current;\n          ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;\n        }\n\n        try {\n          var currentState = queue.lastRenderedState;\n          var eagerState = lastRenderedReducer(currentState, action); // Stash the eagerly computed state, and the reducer used to compute\n          // it, on the update object. If the reducer hasn't changed by the\n          // time we enter the render phase, then the eager state can be used\n          // without calling the reducer again.\n\n          update.hasEagerState = true;\n          update.eagerState = eagerState;\n\n          if (objectIs(eagerState, currentState)) {\n            // Fast path. We can bail out without scheduling React to re-render.\n            // It's still possible that we'll need to rebase this update later,\n            // if the component re-renders for a different reason and by that\n            // time the reducer has changed.\n            // TODO: Do we still need to entangle transitions in this case?\n            enqueueConcurrentHookUpdateAndEagerlyBailout(fiber, queue, update, lane);\n            return;\n          }\n        } catch (error) {// Suppress the error. It will throw again in the render phase.\n        } finally {\n          {\n            ReactCurrentDispatcher$1.current = prevDispatcher;\n          }\n        }\n      }\n    }\n\n    var root = enqueueConcurrentHookUpdate(fiber, queue, update, lane);\n\n    if (root !== null) {\n      var eventTime = requestEventTime();\n      scheduleUpdateOnFiber(root, fiber, lane, eventTime);\n      entangleTransitionUpdate(root, queue, lane);\n    }\n  }\n\n  markUpdateInDevTools(fiber, lane);\n}\n\nfunction isRenderPhaseUpdate(fiber) {\n  var alternate = fiber.alternate;\n  return fiber === currentlyRenderingFiber$1 || alternate !== null && alternate === currentlyRenderingFiber$1;\n}\n\nfunction enqueueRenderPhaseUpdate(queue, update) {\n  // This is a render phase update. Stash it in a lazily-created map of\n  // queue -> linked list of updates. After this render pass, we'll restart\n  // and apply the stashed updates on top of the work-in-progress hook.\n  didScheduleRenderPhaseUpdateDuringThisPass = didScheduleRenderPhaseUpdate = true;\n  var pending = queue.pending;\n\n  if (pending === null) {\n    // This is the first update. Create a circular list.\n    update.next = update;\n  } else {\n    update.next = pending.next;\n    pending.next = update;\n  }\n\n  queue.pending = update;\n} // TODO: Move to ReactFiberConcurrentUpdates?\n\n\nfunction entangleTransitionUpdate(root, queue, lane) {\n  if (isTransitionLane(lane)) {\n    var queueLanes = queue.lanes; // If any entangled lanes are no longer pending on the root, then they\n    // must have finished. We can remove them from the shared queue, which\n    // represents a superset of the actually pending lanes. In some cases we\n    // may entangle more than we need to, but that's OK. In fact it's worse if\n    // we *don't* entangle when we should.\n\n    queueLanes = intersectLanes(queueLanes, root.pendingLanes); // Entangle the new transition lane with the other transition lanes.\n\n    var newQueueLanes = mergeLanes(queueLanes, lane);\n    queue.lanes = newQueueLanes; // Even if queue.lanes already include lane, we don't know for certain if\n    // the lane finished since the last time we entangled it. So we need to\n    // entangle it again, just to be sure.\n\n    markRootEntangled(root, newQueueLanes);\n  }\n}\n\nfunction markUpdateInDevTools(fiber, lane, action) {\n\n  {\n    markStateUpdateScheduled(fiber, lane);\n  }\n}\n\nvar ContextOnlyDispatcher = {\n  readContext: readContext,\n  useCallback: throwInvalidHookError,\n  useContext: throwInvalidHookError,\n  useEffect: throwInvalidHookError,\n  useImperativeHandle: throwInvalidHookError,\n  useInsertionEffect: throwInvalidHookError,\n  useLayoutEffect: throwInvalidHookError,\n  useMemo: throwInvalidHookError,\n  useReducer: throwInvalidHookError,\n  useRef: throwInvalidHookError,\n  useState: throwInvalidHookError,\n  useDebugValue: throwInvalidHookError,\n  useDeferredValue: throwInvalidHookError,\n  useTransition: throwInvalidHookError,\n  useMutableSource: throwInvalidHookError,\n  useSyncExternalStore: throwInvalidHookError,\n  useId: throwInvalidHookError,\n  unstable_isNewReconciler: enableNewReconciler\n};\n\nvar HooksDispatcherOnMountInDEV = null;\nvar HooksDispatcherOnMountWithHookTypesInDEV = null;\nvar HooksDispatcherOnUpdateInDEV = null;\nvar HooksDispatcherOnRerenderInDEV = null;\nvar InvalidNestedHooksDispatcherOnMountInDEV = null;\nvar InvalidNestedHooksDispatcherOnUpdateInDEV = null;\nvar InvalidNestedHooksDispatcherOnRerenderInDEV = null;\n\n{\n  var warnInvalidContextAccess = function () {\n    error('Context can only be read while React is rendering. ' + 'In classes, you can read it in the render method or getDerivedStateFromProps. ' + 'In function components, you can read it directly in the function body, but not ' + 'inside Hooks like useReducer() or useMemo().');\n  };\n\n  var warnInvalidHookAccess = function () {\n    error('Do not call Hooks inside useEffect(...), useMemo(...), or other built-in Hooks. ' + 'You can only call Hooks at the top level of your React function. ' + 'For more information, see ' + 'https://reactjs.org/link/rules-of-hooks');\n  };\n\n  HooksDispatcherOnMountInDEV = {\n    readContext: function (context) {\n      return readContext(context);\n    },\n    useCallback: function (callback, deps) {\n      currentHookNameInDev = 'useCallback';\n      mountHookTypesDev();\n      checkDepsAreArrayDev(deps);\n      return mountCallback(callback, deps);\n    },\n    useContext: function (context) {\n      currentHookNameInDev = 'useContext';\n      mountHookTypesDev();\n      return readContext(context);\n    },\n    useEffect: function (create, deps) {\n      currentHookNameInDev = 'useEffect';\n      mountHookTypesDev();\n      checkDepsAreArrayDev(deps);\n      return mountEffect(create, deps);\n    },\n    useImperativeHandle: function (ref, create, deps) {\n      currentHookNameInDev = 'useImperativeHandle';\n      mountHookTypesDev();\n      checkDepsAreArrayDev(deps);\n      return mountImperativeHandle(ref, create, deps);\n    },\n    useInsertionEffect: function (create, deps) {\n      currentHookNameInDev = 'useInsertionEffect';\n      mountHookTypesDev();\n      checkDepsAreArrayDev(deps);\n      return mountInsertionEffect(create, deps);\n    },\n    useLayoutEffect: function (create, deps) {\n      currentHookNameInDev = 'useLayoutEffect';\n      mountHookTypesDev();\n      checkDepsAreArrayDev(deps);\n      return mountLayoutEffect(create, deps);\n    },\n    useMemo: function (create, deps) {\n      currentHookNameInDev = 'useMemo';\n      mountHookTypesDev();\n      checkDepsAreArrayDev(deps);\n      var prevDispatcher = ReactCurrentDispatcher$1.current;\n      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;\n\n      try {\n        return mountMemo(create, deps);\n      } finally {\n        ReactCurrentDispatcher$1.current = prevDispatcher;\n      }\n    },\n    useReducer: function (reducer, initialArg, init) {\n      currentHookNameInDev = 'useReducer';\n      mountHookTypesDev();\n      var prevDispatcher = ReactCurrentDispatcher$1.current;\n      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;\n\n      try {\n        return mountReducer(reducer, initialArg, init);\n      } finally {\n        ReactCurrentDispatcher$1.current = prevDispatcher;\n      }\n    },\n    useRef: function (initialValue) {\n      currentHookNameInDev = 'useRef';\n      mountHookTypesDev();\n      return mountRef(initialValue);\n    },\n    useState: function (initialState) {\n      currentHookNameInDev = 'useState';\n      mountHookTypesDev();\n      var prevDispatcher = ReactCurrentDispatcher$1.current;\n      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;\n\n      try {\n        return mountState(initialState);\n      } finally {\n        ReactCurrentDispatcher$1.current = prevDispatcher;\n      }\n    },\n    useDebugValue: function (value, formatterFn) {\n      currentHookNameInDev = 'useDebugValue';\n      mountHookTypesDev();\n      return mountDebugValue();\n    },\n    useDeferredValue: function (value) {\n      currentHookNameInDev = 'useDeferredValue';\n      mountHookTypesDev();\n      return mountDeferredValue(value);\n    },\n    useTransition: function () {\n      currentHookNameInDev = 'useTransition';\n      mountHookTypesDev();\n      return mountTransition();\n    },\n    useMutableSource: function (source, getSnapshot, subscribe) {\n      currentHookNameInDev = 'useMutableSource';\n      mountHookTypesDev();\n      return mountMutableSource();\n    },\n    useSyncExternalStore: function (subscribe, getSnapshot, getServerSnapshot) {\n      currentHookNameInDev = 'useSyncExternalStore';\n      mountHookTypesDev();\n      return mountSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n    },\n    useId: function () {\n      currentHookNameInDev = 'useId';\n      mountHookTypesDev();\n      return mountId();\n    },\n    unstable_isNewReconciler: enableNewReconciler\n  };\n\n  HooksDispatcherOnMountWithHookTypesInDEV = {\n    readContext: function (context) {\n      return readContext(context);\n    },\n    useCallback: function (callback, deps) {\n      currentHookNameInDev = 'useCallback';\n      updateHookTypesDev();\n      return mountCallback(callback, deps);\n    },\n    useContext: function (context) {\n      currentHookNameInDev = 'useContext';\n      updateHookTypesDev();\n      return readContext(context);\n    },\n    useEffect: function (create, deps) {\n      currentHookNameInDev = 'useEffect';\n      updateHookTypesDev();\n      return mountEffect(create, deps);\n    },\n    useImperativeHandle: function (ref, create, deps) {\n      currentHookNameInDev = 'useImperativeHandle';\n      updateHookTypesDev();\n      return mountImperativeHandle(ref, create, deps);\n    },\n    useInsertionEffect: function (create, deps) {\n      currentHookNameInDev = 'useInsertionEffect';\n      updateHookTypesDev();\n      return mountInsertionEffect(create, deps);\n    },\n    useLayoutEffect: function (create, deps) {\n      currentHookNameInDev = 'useLayoutEffect';\n      updateHookTypesDev();\n      return mountLayoutEffect(create, deps);\n    },\n    useMemo: function (create, deps) {\n      currentHookNameInDev = 'useMemo';\n      updateHookTypesDev();\n      var prevDispatcher = ReactCurrentDispatcher$1.current;\n      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;\n\n      try {\n        return mountMemo(create, deps);\n      } finally {\n        ReactCurrentDispatcher$1.current = prevDispatcher;\n      }\n    },\n    useReducer: function (reducer, initialArg, init) {\n      currentHookNameInDev = 'useReducer';\n      updateHookTypesDev();\n      var prevDispatcher = ReactCurrentDispatcher$1.current;\n      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;\n\n      try {\n        return mountReducer(reducer, initialArg, init);\n      } finally {\n        ReactCurrentDispatcher$1.current = prevDispatcher;\n      }\n    },\n    useRef: function (initialValue) {\n      currentHookNameInDev = 'useRef';\n      updateHookTypesDev();\n      return mountRef(initialValue);\n    },\n    useState: function (initialState) {\n      currentHookNameInDev = 'useState';\n      updateHookTypesDev();\n      var prevDispatcher = ReactCurrentDispatcher$1.current;\n      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;\n\n      try {\n        return mountState(initialState);\n      } finally {\n        ReactCurrentDispatcher$1.current = prevDispatcher;\n      }\n    },\n    useDebugValue: function (value, formatterFn) {\n      currentHookNameInDev = 'useDebugValue';\n      updateHookTypesDev();\n      return mountDebugValue();\n    },\n    useDeferredValue: function (value) {\n      currentHookNameInDev = 'useDeferredValue';\n      updateHookTypesDev();\n      return mountDeferredValue(value);\n    },\n    useTransition: function () {\n      currentHookNameInDev = 'useTransition';\n      updateHookTypesDev();\n      return mountTransition();\n    },\n    useMutableSource: function (source, getSnapshot, subscribe) {\n      currentHookNameInDev = 'useMutableSource';\n      updateHookTypesDev();\n      return mountMutableSource();\n    },\n    useSyncExternalStore: function (subscribe, getSnapshot, getServerSnapshot) {\n      currentHookNameInDev = 'useSyncExternalStore';\n      updateHookTypesDev();\n      return mountSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n    },\n    useId: function () {\n      currentHookNameInDev = 'useId';\n      updateHookTypesDev();\n      return mountId();\n    },\n    unstable_isNewReconciler: enableNewReconciler\n  };\n\n  HooksDispatcherOnUpdateInDEV = {\n    readContext: function (context) {\n      return readContext(context);\n    },\n    useCallback: function (callback, deps) {\n      currentHookNameInDev = 'useCallback';\n      updateHookTypesDev();\n      return updateCallback(callback, deps);\n    },\n    useContext: function (context) {\n      currentHookNameInDev = 'useContext';\n      updateHookTypesDev();\n      return readContext(context);\n    },\n    useEffect: function (create, deps) {\n      currentHookNameInDev = 'useEffect';\n      updateHookTypesDev();\n      return updateEffect(create, deps);\n    },\n    useImperativeHandle: function (ref, create, deps) {\n      currentHookNameInDev = 'useImperativeHandle';\n      updateHookTypesDev();\n      return updateImperativeHandle(ref, create, deps);\n    },\n    useInsertionEffect: function (create, deps) {\n      currentHookNameInDev = 'useInsertionEffect';\n      updateHookTypesDev();\n      return updateInsertionEffect(create, deps);\n    },\n    useLayoutEffect: function (create, deps) {\n      currentHookNameInDev = 'useLayoutEffect';\n      updateHookTypesDev();\n      return updateLayoutEffect(create, deps);\n    },\n    useMemo: function (create, deps) {\n      currentHookNameInDev = 'useMemo';\n      updateHookTypesDev();\n      var prevDispatcher = ReactCurrentDispatcher$1.current;\n      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;\n\n      try {\n        return updateMemo(create, deps);\n      } finally {\n        ReactCurrentDispatcher$1.current = prevDispatcher;\n      }\n    },\n    useReducer: function (reducer, initialArg, init) {\n      currentHookNameInDev = 'useReducer';\n      updateHookTypesDev();\n      var prevDispatcher = ReactCurrentDispatcher$1.current;\n      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;\n\n      try {\n        return updateReducer(reducer, initialArg, init);\n      } finally {\n        ReactCurrentDispatcher$1.current = prevDispatcher;\n      }\n    },\n    useRef: function (initialValue) {\n      currentHookNameInDev = 'useRef';\n      updateHookTypesDev();\n      return updateRef();\n    },\n    useState: function (initialState) {\n      currentHookNameInDev = 'useState';\n      updateHookTypesDev();\n      var prevDispatcher = ReactCurrentDispatcher$1.current;\n      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;\n\n      try {\n        return updateState(initialState);\n      } finally {\n        ReactCurrentDispatcher$1.current = prevDispatcher;\n      }\n    },\n    useDebugValue: function (value, formatterFn) {\n      currentHookNameInDev = 'useDebugValue';\n      updateHookTypesDev();\n      return updateDebugValue();\n    },\n    useDeferredValue: function (value) {\n      currentHookNameInDev = 'useDeferredValue';\n      updateHookTypesDev();\n      return updateDeferredValue(value);\n    },\n    useTransition: function () {\n      currentHookNameInDev = 'useTransition';\n      updateHookTypesDev();\n      return updateTransition();\n    },\n    useMutableSource: function (source, getSnapshot, subscribe) {\n      currentHookNameInDev = 'useMutableSource';\n      updateHookTypesDev();\n      return updateMutableSource();\n    },\n    useSyncExternalStore: function (subscribe, getSnapshot, getServerSnapshot) {\n      currentHookNameInDev = 'useSyncExternalStore';\n      updateHookTypesDev();\n      return updateSyncExternalStore(subscribe, getSnapshot);\n    },\n    useId: function () {\n      currentHookNameInDev = 'useId';\n      updateHookTypesDev();\n      return updateId();\n    },\n    unstable_isNewReconciler: enableNewReconciler\n  };\n\n  HooksDispatcherOnRerenderInDEV = {\n    readContext: function (context) {\n      return readContext(context);\n    },\n    useCallback: function (callback, deps) {\n      currentHookNameInDev = 'useCallback';\n      updateHookTypesDev();\n      return updateCallback(callback, deps);\n    },\n    useContext: function (context) {\n      currentHookNameInDev = 'useContext';\n      updateHookTypesDev();\n      return readContext(context);\n    },\n    useEffect: function (create, deps) {\n      currentHookNameInDev = 'useEffect';\n      updateHookTypesDev();\n      return updateEffect(create, deps);\n    },\n    useImperativeHandle: function (ref, create, deps) {\n      currentHookNameInDev = 'useImperativeHandle';\n      updateHookTypesDev();\n      return updateImperativeHandle(ref, create, deps);\n    },\n    useInsertionEffect: function (create, deps) {\n      currentHookNameInDev = 'useInsertionEffect';\n      updateHookTypesDev();\n      return updateInsertionEffect(create, deps);\n    },\n    useLayoutEffect: function (create, deps) {\n      currentHookNameInDev = 'useLayoutEffect';\n      updateHookTypesDev();\n      return updateLayoutEffect(create, deps);\n    },\n    useMemo: function (create, deps) {\n      currentHookNameInDev = 'useMemo';\n      updateHookTypesDev();\n      var prevDispatcher = ReactCurrentDispatcher$1.current;\n      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnRerenderInDEV;\n\n      try {\n        return updateMemo(create, deps);\n      } finally {\n        ReactCurrentDispatcher$1.current = prevDispatcher;\n      }\n    },\n    useReducer: function (reducer, initialArg, init) {\n      currentHookNameInDev = 'useReducer';\n      updateHookTypesDev();\n      var prevDispatcher = ReactCurrentDispatcher$1.current;\n      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnRerenderInDEV;\n\n      try {\n        return rerenderReducer(reducer, initialArg, init);\n      } finally {\n        ReactCurrentDispatcher$1.current = prevDispatcher;\n      }\n    },\n    useRef: function (initialValue) {\n      currentHookNameInDev = 'useRef';\n      updateHookTypesDev();\n      return updateRef();\n    },\n    useState: function (initialState) {\n      currentHookNameInDev = 'useState';\n      updateHookTypesDev();\n      var prevDispatcher = ReactCurrentDispatcher$1.current;\n      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnRerenderInDEV;\n\n      try {\n        return rerenderState(initialState);\n      } finally {\n        ReactCurrentDispatcher$1.current = prevDispatcher;\n      }\n    },\n    useDebugValue: function (value, formatterFn) {\n      currentHookNameInDev = 'useDebugValue';\n      updateHookTypesDev();\n      return updateDebugValue();\n    },\n    useDeferredValue: function (value) {\n      currentHookNameInDev = 'useDeferredValue';\n      updateHookTypesDev();\n      return rerenderDeferredValue(value);\n    },\n    useTransition: function () {\n      currentHookNameInDev = 'useTransition';\n      updateHookTypesDev();\n      return rerenderTransition();\n    },\n    useMutableSource: function (source, getSnapshot, subscribe) {\n      currentHookNameInDev = 'useMutableSource';\n      updateHookTypesDev();\n      return updateMutableSource();\n    },\n    useSyncExternalStore: function (subscribe, getSnapshot, getServerSnapshot) {\n      currentHookNameInDev = 'useSyncExternalStore';\n      updateHookTypesDev();\n      return updateSyncExternalStore(subscribe, getSnapshot);\n    },\n    useId: function () {\n      currentHookNameInDev = 'useId';\n      updateHookTypesDev();\n      return updateId();\n    },\n    unstable_isNewReconciler: enableNewReconciler\n  };\n\n  InvalidNestedHooksDispatcherOnMountInDEV = {\n    readContext: function (context) {\n      warnInvalidContextAccess();\n      return readContext(context);\n    },\n    useCallback: function (callback, deps) {\n      currentHookNameInDev = 'useCallback';\n      warnInvalidHookAccess();\n      mountHookTypesDev();\n      return mountCallback(callback, deps);\n    },\n    useContext: function (context) {\n      currentHookNameInDev = 'useContext';\n      warnInvalidHookAccess();\n      mountHookTypesDev();\n      return readContext(context);\n    },\n    useEffect: function (create, deps) {\n      currentHookNameInDev = 'useEffect';\n      warnInvalidHookAccess();\n      mountHookTypesDev();\n      return mountEffect(create, deps);\n    },\n    useImperativeHandle: function (ref, create, deps) {\n      currentHookNameInDev = 'useImperativeHandle';\n      warnInvalidHookAccess();\n      mountHookTypesDev();\n      return mountImperativeHandle(ref, create, deps);\n    },\n    useInsertionEffect: function (create, deps) {\n      currentHookNameInDev = 'useInsertionEffect';\n      warnInvalidHookAccess();\n      mountHookTypesDev();\n      return mountInsertionEffect(create, deps);\n    },\n    useLayoutEffect: function (create, deps) {\n      currentHookNameInDev = 'useLayoutEffect';\n      warnInvalidHookAccess();\n      mountHookTypesDev();\n      return mountLayoutEffect(create, deps);\n    },\n    useMemo: function (create, deps) {\n      currentHookNameInDev = 'useMemo';\n      warnInvalidHookAccess();\n      mountHookTypesDev();\n      var prevDispatcher = ReactCurrentDispatcher$1.current;\n      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;\n\n      try {\n        return mountMemo(create, deps);\n      } finally {\n        ReactCurrentDispatcher$1.current = prevDispatcher;\n      }\n    },\n    useReducer: function (reducer, initialArg, init) {\n      currentHookNameInDev = 'useReducer';\n      warnInvalidHookAccess();\n      mountHookTypesDev();\n      var prevDispatcher = ReactCurrentDispatcher$1.current;\n      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;\n\n      try {\n        return mountReducer(reducer, initialArg, init);\n      } finally {\n        ReactCurrentDispatcher$1.current = prevDispatcher;\n      }\n    },\n    useRef: function (initialValue) {\n      currentHookNameInDev = 'useRef';\n      warnInvalidHookAccess();\n      mountHookTypesDev();\n      return mountRef(initialValue);\n    },\n    useState: function (initialState) {\n      currentHookNameInDev = 'useState';\n      warnInvalidHookAccess();\n      mountHookTypesDev();\n      var prevDispatcher = ReactCurrentDispatcher$1.current;\n      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;\n\n      try {\n        return mountState(initialState);\n      } finally {\n        ReactCurrentDispatcher$1.current = prevDispatcher;\n      }\n    },\n    useDebugValue: function (value, formatterFn) {\n      currentHookNameInDev = 'useDebugValue';\n      warnInvalidHookAccess();\n      mountHookTypesDev();\n      return mountDebugValue();\n    },\n    useDeferredValue: function (value) {\n      currentHookNameInDev = 'useDeferredValue';\n      warnInvalidHookAccess();\n      mountHookTypesDev();\n      return mountDeferredValue(value);\n    },\n    useTransition: function () {\n      currentHookNameInDev = 'useTransition';\n      warnInvalidHookAccess();\n      mountHookTypesDev();\n      return mountTransition();\n    },\n    useMutableSource: function (source, getSnapshot, subscribe) {\n      currentHookNameInDev = 'useMutableSource';\n      warnInvalidHookAccess();\n      mountHookTypesDev();\n      return mountMutableSource();\n    },\n    useSyncExternalStore: function (subscribe, getSnapshot, getServerSnapshot) {\n      currentHookNameInDev = 'useSyncExternalStore';\n      warnInvalidHookAccess();\n      mountHookTypesDev();\n      return mountSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n    },\n    useId: function () {\n      currentHookNameInDev = 'useId';\n      warnInvalidHookAccess();\n      mountHookTypesDev();\n      return mountId();\n    },\n    unstable_isNewReconciler: enableNewReconciler\n  };\n\n  InvalidNestedHooksDispatcherOnUpdateInDEV = {\n    readContext: function (context) {\n      warnInvalidContextAccess();\n      return readContext(context);\n    },\n    useCallback: function (callback, deps) {\n      currentHookNameInDev = 'useCallback';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      return updateCallback(callback, deps);\n    },\n    useContext: function (context) {\n      currentHookNameInDev = 'useContext';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      return readContext(context);\n    },\n    useEffect: function (create, deps) {\n      currentHookNameInDev = 'useEffect';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      return updateEffect(create, deps);\n    },\n    useImperativeHandle: function (ref, create, deps) {\n      currentHookNameInDev = 'useImperativeHandle';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      return updateImperativeHandle(ref, create, deps);\n    },\n    useInsertionEffect: function (create, deps) {\n      currentHookNameInDev = 'useInsertionEffect';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      return updateInsertionEffect(create, deps);\n    },\n    useLayoutEffect: function (create, deps) {\n      currentHookNameInDev = 'useLayoutEffect';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      return updateLayoutEffect(create, deps);\n    },\n    useMemo: function (create, deps) {\n      currentHookNameInDev = 'useMemo';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      var prevDispatcher = ReactCurrentDispatcher$1.current;\n      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;\n\n      try {\n        return updateMemo(create, deps);\n      } finally {\n        ReactCurrentDispatcher$1.current = prevDispatcher;\n      }\n    },\n    useReducer: function (reducer, initialArg, init) {\n      currentHookNameInDev = 'useReducer';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      var prevDispatcher = ReactCurrentDispatcher$1.current;\n      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;\n\n      try {\n        return updateReducer(reducer, initialArg, init);\n      } finally {\n        ReactCurrentDispatcher$1.current = prevDispatcher;\n      }\n    },\n    useRef: function (initialValue) {\n      currentHookNameInDev = 'useRef';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      return updateRef();\n    },\n    useState: function (initialState) {\n      currentHookNameInDev = 'useState';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      var prevDispatcher = ReactCurrentDispatcher$1.current;\n      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;\n\n      try {\n        return updateState(initialState);\n      } finally {\n        ReactCurrentDispatcher$1.current = prevDispatcher;\n      }\n    },\n    useDebugValue: function (value, formatterFn) {\n      currentHookNameInDev = 'useDebugValue';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      return updateDebugValue();\n    },\n    useDeferredValue: function (value) {\n      currentHookNameInDev = 'useDeferredValue';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      return updateDeferredValue(value);\n    },\n    useTransition: function () {\n      currentHookNameInDev = 'useTransition';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      return updateTransition();\n    },\n    useMutableSource: function (source, getSnapshot, subscribe) {\n      currentHookNameInDev = 'useMutableSource';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      return updateMutableSource();\n    },\n    useSyncExternalStore: function (subscribe, getSnapshot, getServerSnapshot) {\n      currentHookNameInDev = 'useSyncExternalStore';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      return updateSyncExternalStore(subscribe, getSnapshot);\n    },\n    useId: function () {\n      currentHookNameInDev = 'useId';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      return updateId();\n    },\n    unstable_isNewReconciler: enableNewReconciler\n  };\n\n  InvalidNestedHooksDispatcherOnRerenderInDEV = {\n    readContext: function (context) {\n      warnInvalidContextAccess();\n      return readContext(context);\n    },\n    useCallback: function (callback, deps) {\n      currentHookNameInDev = 'useCallback';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      return updateCallback(callback, deps);\n    },\n    useContext: function (context) {\n      currentHookNameInDev = 'useContext';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      return readContext(context);\n    },\n    useEffect: function (create, deps) {\n      currentHookNameInDev = 'useEffect';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      return updateEffect(create, deps);\n    },\n    useImperativeHandle: function (ref, create, deps) {\n      currentHookNameInDev = 'useImperativeHandle';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      return updateImperativeHandle(ref, create, deps);\n    },\n    useInsertionEffect: function (create, deps) {\n      currentHookNameInDev = 'useInsertionEffect';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      return updateInsertionEffect(create, deps);\n    },\n    useLayoutEffect: function (create, deps) {\n      currentHookNameInDev = 'useLayoutEffect';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      return updateLayoutEffect(create, deps);\n    },\n    useMemo: function (create, deps) {\n      currentHookNameInDev = 'useMemo';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      var prevDispatcher = ReactCurrentDispatcher$1.current;\n      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;\n\n      try {\n        return updateMemo(create, deps);\n      } finally {\n        ReactCurrentDispatcher$1.current = prevDispatcher;\n      }\n    },\n    useReducer: function (reducer, initialArg, init) {\n      currentHookNameInDev = 'useReducer';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      var prevDispatcher = ReactCurrentDispatcher$1.current;\n      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;\n\n      try {\n        return rerenderReducer(reducer, initialArg, init);\n      } finally {\n        ReactCurrentDispatcher$1.current = prevDispatcher;\n      }\n    },\n    useRef: function (initialValue) {\n      currentHookNameInDev = 'useRef';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      return updateRef();\n    },\n    useState: function (initialState) {\n      currentHookNameInDev = 'useState';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      var prevDispatcher = ReactCurrentDispatcher$1.current;\n      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;\n\n      try {\n        return rerenderState(initialState);\n      } finally {\n        ReactCurrentDispatcher$1.current = prevDispatcher;\n      }\n    },\n    useDebugValue: function (value, formatterFn) {\n      currentHookNameInDev = 'useDebugValue';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      return updateDebugValue();\n    },\n    useDeferredValue: function (value) {\n      currentHookNameInDev = 'useDeferredValue';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      return rerenderDeferredValue(value);\n    },\n    useTransition: function () {\n      currentHookNameInDev = 'useTransition';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      return rerenderTransition();\n    },\n    useMutableSource: function (source, getSnapshot, subscribe) {\n      currentHookNameInDev = 'useMutableSource';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      return updateMutableSource();\n    },\n    useSyncExternalStore: function (subscribe, getSnapshot, getServerSnapshot) {\n      currentHookNameInDev = 'useSyncExternalStore';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      return updateSyncExternalStore(subscribe, getSnapshot);\n    },\n    useId: function () {\n      currentHookNameInDev = 'useId';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      return updateId();\n    },\n    unstable_isNewReconciler: enableNewReconciler\n  };\n}\n\nvar now$1 = Scheduler.unstable_now;\nvar commitTime = 0;\nvar layoutEffectStartTime = -1;\nvar profilerStartTime = -1;\nvar passiveEffectStartTime = -1;\n/**\n * Tracks whether the current update was a nested/cascading update (scheduled from a layout effect).\n *\n * The overall sequence is:\n *   1. render\n *   2. commit (and call `onRender`, `onCommit`)\n *   3. check for nested updates\n *   4. flush passive effects (and call `onPostCommit`)\n *\n * Nested updates are identified in step 3 above,\n * but step 4 still applies to the work that was just committed.\n * We use two flags to track nested updates then:\n * one tracks whether the upcoming update is a nested update,\n * and the other tracks whether the current update was a nested update.\n * The first value gets synced to the second at the start of the render phase.\n */\n\nvar currentUpdateIsNested = false;\nvar nestedUpdateScheduled = false;\n\nfunction isCurrentUpdateNested() {\n  return currentUpdateIsNested;\n}\n\nfunction markNestedUpdateScheduled() {\n  {\n    nestedUpdateScheduled = true;\n  }\n}\n\nfunction resetNestedUpdateFlag() {\n  {\n    currentUpdateIsNested = false;\n    nestedUpdateScheduled = false;\n  }\n}\n\nfunction syncNestedUpdateFlag() {\n  {\n    currentUpdateIsNested = nestedUpdateScheduled;\n    nestedUpdateScheduled = false;\n  }\n}\n\nfunction getCommitTime() {\n  return commitTime;\n}\n\nfunction recordCommitTime() {\n\n  commitTime = now$1();\n}\n\nfunction startProfilerTimer(fiber) {\n\n  profilerStartTime = now$1();\n\n  if (fiber.actualStartTime < 0) {\n    fiber.actualStartTime = now$1();\n  }\n}\n\nfunction stopProfilerTimerIfRunning(fiber) {\n\n  profilerStartTime = -1;\n}\n\nfunction stopProfilerTimerIfRunningAndRecordDelta(fiber, overrideBaseTime) {\n\n  if (profilerStartTime >= 0) {\n    var elapsedTime = now$1() - profilerStartTime;\n    fiber.actualDuration += elapsedTime;\n\n    if (overrideBaseTime) {\n      fiber.selfBaseDuration = elapsedTime;\n    }\n\n    profilerStartTime = -1;\n  }\n}\n\nfunction recordLayoutEffectDuration(fiber) {\n\n  if (layoutEffectStartTime >= 0) {\n    var elapsedTime = now$1() - layoutEffectStartTime;\n    layoutEffectStartTime = -1; // Store duration on the next nearest Profiler ancestor\n    // Or the root (for the DevTools Profiler to read)\n\n    var parentFiber = fiber.return;\n\n    while (parentFiber !== null) {\n      switch (parentFiber.tag) {\n        case HostRoot:\n          var root = parentFiber.stateNode;\n          root.effectDuration += elapsedTime;\n          return;\n\n        case Profiler:\n          var parentStateNode = parentFiber.stateNode;\n          parentStateNode.effectDuration += elapsedTime;\n          return;\n      }\n\n      parentFiber = parentFiber.return;\n    }\n  }\n}\n\nfunction recordPassiveEffectDuration(fiber) {\n\n  if (passiveEffectStartTime >= 0) {\n    var elapsedTime = now$1() - passiveEffectStartTime;\n    passiveEffectStartTime = -1; // Store duration on the next nearest Profiler ancestor\n    // Or the root (for the DevTools Profiler to read)\n\n    var parentFiber = fiber.return;\n\n    while (parentFiber !== null) {\n      switch (parentFiber.tag) {\n        case HostRoot:\n          var root = parentFiber.stateNode;\n\n          if (root !== null) {\n            root.passiveEffectDuration += elapsedTime;\n          }\n\n          return;\n\n        case Profiler:\n          var parentStateNode = parentFiber.stateNode;\n\n          if (parentStateNode !== null) {\n            // Detached fibers have their state node cleared out.\n            // In this case, the return pointer is also cleared out,\n            // so we won't be able to report the time spent in this Profiler's subtree.\n            parentStateNode.passiveEffectDuration += elapsedTime;\n          }\n\n          return;\n      }\n\n      parentFiber = parentFiber.return;\n    }\n  }\n}\n\nfunction startLayoutEffectTimer() {\n\n  layoutEffectStartTime = now$1();\n}\n\nfunction startPassiveEffectTimer() {\n\n  passiveEffectStartTime = now$1();\n}\n\nfunction transferActualDuration(fiber) {\n  // Transfer time spent rendering these children so we don't lose it\n  // after we rerender. This is used as a helper in special cases\n  // where we should count the work of multiple passes.\n  var child = fiber.child;\n\n  while (child) {\n    fiber.actualDuration += child.actualDuration;\n    child = child.sibling;\n  }\n}\n\nfunction createCapturedValueAtFiber(value, source) {\n  // If the value is an error, call this function immediately after it is thrown\n  // so the stack is accurate.\n  return {\n    value: value,\n    source: source,\n    stack: getStackByFiberInDevAndProd(source),\n    digest: null\n  };\n}\nfunction createCapturedValue(value, digest, stack) {\n  return {\n    value: value,\n    source: null,\n    stack: stack != null ? stack : null,\n    digest: digest != null ? digest : null\n  };\n}\n\n// This module is forked in different environments.\n// By default, return `true` to log errors to the console.\n// Forks can return `false` if this isn't desirable.\nfunction showErrorDialog(boundary, errorInfo) {\n  return true;\n}\n\nfunction logCapturedError(boundary, errorInfo) {\n  try {\n    var logError = showErrorDialog(boundary, errorInfo); // Allow injected showErrorDialog() to prevent default console.error logging.\n    // This enables renderers like ReactNative to better manage redbox behavior.\n\n    if (logError === false) {\n      return;\n    }\n\n    var error = errorInfo.value;\n\n    if (true) {\n      var source = errorInfo.source;\n      var stack = errorInfo.stack;\n      var componentStack = stack !== null ? stack : ''; // Browsers support silencing uncaught errors by calling\n      // `preventDefault()` in window `error` handler.\n      // We record this information as an expando on the error.\n\n      if (error != null && error._suppressLogging) {\n        if (boundary.tag === ClassComponent) {\n          // The error is recoverable and was silenced.\n          // Ignore it and don't print the stack addendum.\n          // This is handy for testing error boundaries without noise.\n          return;\n        } // The error is fatal. Since the silencing might have\n        // been accidental, we'll surface it anyway.\n        // However, the browser would have silenced the original error\n        // so we'll print it first, and then print the stack addendum.\n\n\n        console['error'](error); // Don't transform to our wrapper\n        // For a more detailed description of this block, see:\n        // https://github.com/facebook/react/pull/13384\n      }\n\n      var componentName = source ? getComponentNameFromFiber(source) : null;\n      var componentNameMessage = componentName ? \"The above error occurred in the <\" + componentName + \"> component:\" : 'The above error occurred in one of your React components:';\n      var errorBoundaryMessage;\n\n      if (boundary.tag === HostRoot) {\n        errorBoundaryMessage = 'Consider adding an error boundary to your tree to customize error handling behavior.\\n' + 'Visit https://reactjs.org/link/error-boundaries to learn more about error boundaries.';\n      } else {\n        var errorBoundaryName = getComponentNameFromFiber(boundary) || 'Anonymous';\n        errorBoundaryMessage = \"React will try to recreate this component tree from scratch \" + (\"using the error boundary you provided, \" + errorBoundaryName + \".\");\n      }\n\n      var combinedMessage = componentNameMessage + \"\\n\" + componentStack + \"\\n\\n\" + (\"\" + errorBoundaryMessage); // In development, we provide our own message with just the component stack.\n      // We don't include the original error message and JS stack because the browser\n      // has already printed it. Even if the application swallows the error, it is still\n      // displayed by the browser thanks to the DEV-only fake event trick in ReactErrorUtils.\n\n      console['error'](combinedMessage); // Don't transform to our wrapper\n    } else {\n      // In production, we print the error directly.\n      // This will include the message, the JS stack, and anything the browser wants to show.\n      // We pass the error object instead of custom message so that the browser displays the error natively.\n      console['error'](error); // Don't transform to our wrapper\n    }\n  } catch (e) {\n    // This method must not throw, or React internal state will get messed up.\n    // If console.error is overridden, or logCapturedError() shows a dialog that throws,\n    // we want to report this error outside of the normal stack as a last resort.\n    // https://github.com/facebook/react/issues/13188\n    setTimeout(function () {\n      throw e;\n    });\n  }\n}\n\nvar PossiblyWeakMap$1 = typeof WeakMap === 'function' ? WeakMap : Map;\n\nfunction createRootErrorUpdate(fiber, errorInfo, lane) {\n  var update = createUpdate(NoTimestamp, lane); // Unmount the root by rendering null.\n\n  update.tag = CaptureUpdate; // Caution: React DevTools currently depends on this property\n  // being called \"element\".\n\n  update.payload = {\n    element: null\n  };\n  var error = errorInfo.value;\n\n  update.callback = function () {\n    onUncaughtError(error);\n    logCapturedError(fiber, errorInfo);\n  };\n\n  return update;\n}\n\nfunction createClassErrorUpdate(fiber, errorInfo, lane) {\n  var update = createUpdate(NoTimestamp, lane);\n  update.tag = CaptureUpdate;\n  var getDerivedStateFromError = fiber.type.getDerivedStateFromError;\n\n  if (typeof getDerivedStateFromError === 'function') {\n    var error$1 = errorInfo.value;\n\n    update.payload = function () {\n      return getDerivedStateFromError(error$1);\n    };\n\n    update.callback = function () {\n      {\n        markFailedErrorBoundaryForHotReloading(fiber);\n      }\n\n      logCapturedError(fiber, errorInfo);\n    };\n  }\n\n  var inst = fiber.stateNode;\n\n  if (inst !== null && typeof inst.componentDidCatch === 'function') {\n    update.callback = function callback() {\n      {\n        markFailedErrorBoundaryForHotReloading(fiber);\n      }\n\n      logCapturedError(fiber, errorInfo);\n\n      if (typeof getDerivedStateFromError !== 'function') {\n        // To preserve the preexisting retry behavior of error boundaries,\n        // we keep track of which ones already failed during this batch.\n        // This gets reset before we yield back to the browser.\n        // TODO: Warn in strict mode if getDerivedStateFromError is\n        // not defined.\n        markLegacyErrorBoundaryAsFailed(this);\n      }\n\n      var error$1 = errorInfo.value;\n      var stack = errorInfo.stack;\n      this.componentDidCatch(error$1, {\n        componentStack: stack !== null ? stack : ''\n      });\n\n      {\n        if (typeof getDerivedStateFromError !== 'function') {\n          // If componentDidCatch is the only error boundary method defined,\n          // then it needs to call setState to recover from errors.\n          // If no state update is scheduled then the boundary will swallow the error.\n          if (!includesSomeLane(fiber.lanes, SyncLane)) {\n            error('%s: Error boundaries should implement getDerivedStateFromError(). ' + 'In that method, return a state update to display an error message or fallback UI.', getComponentNameFromFiber(fiber) || 'Unknown');\n          }\n        }\n      }\n    };\n  }\n\n  return update;\n}\n\nfunction attachPingListener(root, wakeable, lanes) {\n  // Attach a ping listener\n  //\n  // The data might resolve before we have a chance to commit the fallback. Or,\n  // in the case of a refresh, we'll never commit a fallback. So we need to\n  // attach a listener now. When it resolves (\"pings\"), we can decide whether to\n  // try rendering the tree again.\n  //\n  // Only attach a listener if one does not already exist for the lanes\n  // we're currently rendering (which acts like a \"thread ID\" here).\n  //\n  // We only need to do this in concurrent mode. Legacy Suspense always\n  // commits fallbacks synchronously, so there are no pings.\n  var pingCache = root.pingCache;\n  var threadIDs;\n\n  if (pingCache === null) {\n    pingCache = root.pingCache = new PossiblyWeakMap$1();\n    threadIDs = new Set();\n    pingCache.set(wakeable, threadIDs);\n  } else {\n    threadIDs = pingCache.get(wakeable);\n\n    if (threadIDs === undefined) {\n      threadIDs = new Set();\n      pingCache.set(wakeable, threadIDs);\n    }\n  }\n\n  if (!threadIDs.has(lanes)) {\n    // Memoize using the thread ID to prevent redundant listeners.\n    threadIDs.add(lanes);\n    var ping = pingSuspendedRoot.bind(null, root, wakeable, lanes);\n\n    {\n      if (isDevToolsPresent) {\n        // If we have pending work still, restore the original updaters\n        restorePendingUpdaters(root, lanes);\n      }\n    }\n\n    wakeable.then(ping, ping);\n  }\n}\n\nfunction attachRetryListener(suspenseBoundary, root, wakeable, lanes) {\n  // Retry listener\n  //\n  // If the fallback does commit, we need to attach a different type of\n  // listener. This one schedules an update on the Suspense boundary to turn\n  // the fallback state off.\n  //\n  // Stash the wakeable on the boundary fiber so we can access it in the\n  // commit phase.\n  //\n  // When the wakeable resolves, we'll attempt to render the boundary\n  // again (\"retry\").\n  var wakeables = suspenseBoundary.updateQueue;\n\n  if (wakeables === null) {\n    var updateQueue = new Set();\n    updateQueue.add(wakeable);\n    suspenseBoundary.updateQueue = updateQueue;\n  } else {\n    wakeables.add(wakeable);\n  }\n}\n\nfunction resetSuspendedComponent(sourceFiber, rootRenderLanes) {\n  // A legacy mode Suspense quirk, only relevant to hook components.\n\n\n  var tag = sourceFiber.tag;\n\n  if ((sourceFiber.mode & ConcurrentMode) === NoMode && (tag === FunctionComponent || tag === ForwardRef || tag === SimpleMemoComponent)) {\n    var currentSource = sourceFiber.alternate;\n\n    if (currentSource) {\n      sourceFiber.updateQueue = currentSource.updateQueue;\n      sourceFiber.memoizedState = currentSource.memoizedState;\n      sourceFiber.lanes = currentSource.lanes;\n    } else {\n      sourceFiber.updateQueue = null;\n      sourceFiber.memoizedState = null;\n    }\n  }\n}\n\nfunction getNearestSuspenseBoundaryToCapture(returnFiber) {\n  var node = returnFiber;\n\n  do {\n    if (node.tag === SuspenseComponent && shouldCaptureSuspense(node)) {\n      return node;\n    } // This boundary already captured during this render. Continue to the next\n    // boundary.\n\n\n    node = node.return;\n  } while (node !== null);\n\n  return null;\n}\n\nfunction markSuspenseBoundaryShouldCapture(suspenseBoundary, returnFiber, sourceFiber, root, rootRenderLanes) {\n  // This marks a Suspense boundary so that when we're unwinding the stack,\n  // it captures the suspended \"exception\" and does a second (fallback) pass.\n  if ((suspenseBoundary.mode & ConcurrentMode) === NoMode) {\n    // Legacy Mode Suspense\n    //\n    // If the boundary is in legacy mode, we should *not*\n    // suspend the commit. Pretend as if the suspended component rendered\n    // null and keep rendering. When the Suspense boundary completes,\n    // we'll do a second pass to render the fallback.\n    if (suspenseBoundary === returnFiber) {\n      // Special case where we suspended while reconciling the children of\n      // a Suspense boundary's inner Offscreen wrapper fiber. This happens\n      // when a React.lazy component is a direct child of a\n      // Suspense boundary.\n      //\n      // Suspense boundaries are implemented as multiple fibers, but they\n      // are a single conceptual unit. The legacy mode behavior where we\n      // pretend the suspended fiber committed as `null` won't work,\n      // because in this case the \"suspended\" fiber is the inner\n      // Offscreen wrapper.\n      //\n      // Because the contents of the boundary haven't started rendering\n      // yet (i.e. nothing in the tree has partially rendered) we can\n      // switch to the regular, concurrent mode behavior: mark the\n      // boundary with ShouldCapture and enter the unwind phase.\n      suspenseBoundary.flags |= ShouldCapture;\n    } else {\n      suspenseBoundary.flags |= DidCapture;\n      sourceFiber.flags |= ForceUpdateForLegacySuspense; // We're going to commit this fiber even though it didn't complete.\n      // But we shouldn't call any lifecycle methods or callbacks. Remove\n      // all lifecycle effect tags.\n\n      sourceFiber.flags &= ~(LifecycleEffectMask | Incomplete);\n\n      if (sourceFiber.tag === ClassComponent) {\n        var currentSourceFiber = sourceFiber.alternate;\n\n        if (currentSourceFiber === null) {\n          // This is a new mount. Change the tag so it's not mistaken for a\n          // completed class component. For example, we should not call\n          // componentWillUnmount if it is deleted.\n          sourceFiber.tag = IncompleteClassComponent;\n        } else {\n          // When we try rendering again, we should not reuse the current fiber,\n          // since it's known to be in an inconsistent state. Use a force update to\n          // prevent a bail out.\n          var update = createUpdate(NoTimestamp, SyncLane);\n          update.tag = ForceUpdate;\n          enqueueUpdate(sourceFiber, update, SyncLane);\n        }\n      } // The source fiber did not complete. Mark it with Sync priority to\n      // indicate that it still has pending work.\n\n\n      sourceFiber.lanes = mergeLanes(sourceFiber.lanes, SyncLane);\n    }\n\n    return suspenseBoundary;\n  } // Confirmed that the boundary is in a concurrent mode tree. Continue\n  // with the normal suspend path.\n  //\n  // After this we'll use a set of heuristics to determine whether this\n  // render pass will run to completion or restart or \"suspend\" the commit.\n  // The actual logic for this is spread out in different places.\n  //\n  // This first principle is that if we're going to suspend when we complete\n  // a root, then we should also restart if we get an update or ping that\n  // might unsuspend it, and vice versa. The only reason to suspend is\n  // because you think you might want to restart before committing. However,\n  // it doesn't make sense to restart only while in the period we're suspended.\n  //\n  // Restarting too aggressively is also not good because it starves out any\n  // intermediate loading state. So we use heuristics to determine when.\n  // Suspense Heuristics\n  //\n  // If nothing threw a Promise or all the same fallbacks are already showing,\n  // then don't suspend/restart.\n  //\n  // If this is an initial render of a new tree of Suspense boundaries and\n  // those trigger a fallback, then don't suspend/restart. We want to ensure\n  // that we can show the initial loading state as quickly as possible.\n  //\n  // If we hit a \"Delayed\" case, such as when we'd switch from content back into\n  // a fallback, then we should always suspend/restart. Transitions apply\n  // to this case. If none is defined, JND is used instead.\n  //\n  // If we're already showing a fallback and it gets \"retried\", allowing us to show\n  // another level, but there's still an inner boundary that would show a fallback,\n  // then we suspend/restart for 500ms since the last time we showed a fallback\n  // anywhere in the tree. This effectively throttles progressive loading into a\n  // consistent train of commits. This also gives us an opportunity to restart to\n  // get to the completed state slightly earlier.\n  //\n  // If there's ambiguity due to batching it's resolved in preference of:\n  // 1) \"delayed\", 2) \"initial render\", 3) \"retry\".\n  //\n  // We want to ensure that a \"busy\" state doesn't get force committed. We want to\n  // ensure that new initial loading states can commit as soon as possible.\n\n\n  suspenseBoundary.flags |= ShouldCapture; // TODO: I think we can remove this, since we now use `DidCapture` in\n  // the begin phase to prevent an early bailout.\n\n  suspenseBoundary.lanes = rootRenderLanes;\n  return suspenseBoundary;\n}\n\nfunction throwException(root, returnFiber, sourceFiber, value, rootRenderLanes) {\n  // The source fiber did not complete.\n  sourceFiber.flags |= Incomplete;\n\n  {\n    if (isDevToolsPresent) {\n      // If we have pending work still, restore the original updaters\n      restorePendingUpdaters(root, rootRenderLanes);\n    }\n  }\n\n  if (value !== null && typeof value === 'object' && typeof value.then === 'function') {\n    // This is a wakeable. The component suspended.\n    var wakeable = value;\n    resetSuspendedComponent(sourceFiber);\n\n    {\n      if (getIsHydrating() && sourceFiber.mode & ConcurrentMode) {\n        markDidThrowWhileHydratingDEV();\n      }\n    }\n\n\n    var suspenseBoundary = getNearestSuspenseBoundaryToCapture(returnFiber);\n\n    if (suspenseBoundary !== null) {\n      suspenseBoundary.flags &= ~ForceClientRender;\n      markSuspenseBoundaryShouldCapture(suspenseBoundary, returnFiber, sourceFiber, root, rootRenderLanes); // We only attach ping listeners in concurrent mode. Legacy Suspense always\n      // commits fallbacks synchronously, so there are no pings.\n\n      if (suspenseBoundary.mode & ConcurrentMode) {\n        attachPingListener(root, wakeable, rootRenderLanes);\n      }\n\n      attachRetryListener(suspenseBoundary, root, wakeable);\n      return;\n    } else {\n      // No boundary was found. Unless this is a sync update, this is OK.\n      // We can suspend and wait for more data to arrive.\n      if (!includesSyncLane(rootRenderLanes)) {\n        // This is not a sync update. Suspend. Since we're not activating a\n        // Suspense boundary, this will unwind all the way to the root without\n        // performing a second pass to render a fallback. (This is arguably how\n        // refresh transitions should work, too, since we're not going to commit\n        // the fallbacks anyway.)\n        //\n        // This case also applies to initial hydration.\n        attachPingListener(root, wakeable, rootRenderLanes);\n        renderDidSuspendDelayIfPossible();\n        return;\n      } // This is a sync/discrete update. We treat this case like an error\n      // because discrete renders are expected to produce a complete tree\n      // synchronously to maintain consistency with external state.\n\n\n      var uncaughtSuspenseError = new Error('A component suspended while responding to synchronous input. This ' + 'will cause the UI to be replaced with a loading indicator. To ' + 'fix, updates that suspend should be wrapped ' + 'with startTransition.'); // If we're outside a transition, fall through to the regular error path.\n      // The error will be caught by the nearest suspense boundary.\n\n      value = uncaughtSuspenseError;\n    }\n  } else {\n    // This is a regular error, not a Suspense wakeable.\n    if (getIsHydrating() && sourceFiber.mode & ConcurrentMode) {\n      markDidThrowWhileHydratingDEV();\n\n      var _suspenseBoundary = getNearestSuspenseBoundaryToCapture(returnFiber); // If the error was thrown during hydration, we may be able to recover by\n      // discarding the dehydrated content and switching to a client render.\n      // Instead of surfacing the error, find the nearest Suspense boundary\n      // and render it again without hydration.\n\n\n      if (_suspenseBoundary !== null) {\n        if ((_suspenseBoundary.flags & ShouldCapture) === NoFlags) {\n          // Set a flag to indicate that we should try rendering the normal\n          // children again, not the fallback.\n          _suspenseBoundary.flags |= ForceClientRender;\n        }\n\n        markSuspenseBoundaryShouldCapture(_suspenseBoundary, returnFiber, sourceFiber, root, rootRenderLanes); // Even though the user may not be affected by this error, we should\n        // still log it so it can be fixed.\n\n        queueHydrationError(createCapturedValueAtFiber(value, sourceFiber));\n        return;\n      }\n    }\n  }\n\n  value = createCapturedValueAtFiber(value, sourceFiber);\n  renderDidError(value); // We didn't find a boundary that could handle this type of exception. Start\n  // over and traverse parent path again, this time treating the exception\n  // as an error.\n\n  var workInProgress = returnFiber;\n\n  do {\n    switch (workInProgress.tag) {\n      case HostRoot:\n        {\n          var _errorInfo = value;\n          workInProgress.flags |= ShouldCapture;\n          var lane = pickArbitraryLane(rootRenderLanes);\n          workInProgress.lanes = mergeLanes(workInProgress.lanes, lane);\n          var update = createRootErrorUpdate(workInProgress, _errorInfo, lane);\n          enqueueCapturedUpdate(workInProgress, update);\n          return;\n        }\n\n      case ClassComponent:\n        // Capture and retry\n        var errorInfo = value;\n        var ctor = workInProgress.type;\n        var instance = workInProgress.stateNode;\n\n        if ((workInProgress.flags & DidCapture) === NoFlags && (typeof ctor.getDerivedStateFromError === 'function' || instance !== null && typeof instance.componentDidCatch === 'function' && !isAlreadyFailedLegacyErrorBoundary(instance))) {\n          workInProgress.flags |= ShouldCapture;\n\n          var _lane = pickArbitraryLane(rootRenderLanes);\n\n          workInProgress.lanes = mergeLanes(workInProgress.lanes, _lane); // Schedule the error boundary to re-render using updated state\n\n          var _update = createClassErrorUpdate(workInProgress, errorInfo, _lane);\n\n          enqueueCapturedUpdate(workInProgress, _update);\n          return;\n        }\n\n        break;\n    }\n\n    workInProgress = workInProgress.return;\n  } while (workInProgress !== null);\n}\n\nfunction getSuspendedCache() {\n  {\n    return null;\n  } // This function is called when a Suspense boundary suspends. It returns the\n}\n\nvar ReactCurrentOwner$1 = ReactSharedInternals.ReactCurrentOwner;\nvar didReceiveUpdate = false;\nvar didWarnAboutBadClass;\nvar didWarnAboutModulePatternComponent;\nvar didWarnAboutContextTypeOnFunctionComponent;\nvar didWarnAboutGetDerivedStateOnFunctionComponent;\nvar didWarnAboutFunctionRefs;\nvar didWarnAboutReassigningProps;\nvar didWarnAboutRevealOrder;\nvar didWarnAboutTailOptions;\n\n{\n  didWarnAboutBadClass = {};\n  didWarnAboutModulePatternComponent = {};\n  didWarnAboutContextTypeOnFunctionComponent = {};\n  didWarnAboutGetDerivedStateOnFunctionComponent = {};\n  didWarnAboutFunctionRefs = {};\n  didWarnAboutReassigningProps = false;\n  didWarnAboutRevealOrder = {};\n  didWarnAboutTailOptions = {};\n}\n\nfunction reconcileChildren(current, workInProgress, nextChildren, renderLanes) {\n  if (current === null) {\n    // If this is a fresh new component that hasn't been rendered yet, we\n    // won't update its child set by applying minimal side-effects. Instead,\n    // we will add them all to the child before it gets rendered. That means\n    // we can optimize this reconciliation pass by not tracking side-effects.\n    workInProgress.child = mountChildFibers(workInProgress, null, nextChildren, renderLanes);\n  } else {\n    // If the current child is the same as the work in progress, it means that\n    // we haven't yet started any work on these children. Therefore, we use\n    // the clone algorithm to create a copy of all the current children.\n    // If we had any progressed work already, that is invalid at this point so\n    // let's throw it out.\n    workInProgress.child = reconcileChildFibers(workInProgress, current.child, nextChildren, renderLanes);\n  }\n}\n\nfunction forceUnmountCurrentAndReconcile(current, workInProgress, nextChildren, renderLanes) {\n  // This function is fork of reconcileChildren. It's used in cases where we\n  // want to reconcile without matching against the existing set. This has the\n  // effect of all current children being unmounted; even if the type and key\n  // are the same, the old child is unmounted and a new child is created.\n  //\n  // To do this, we're going to go through the reconcile algorithm twice. In\n  // the first pass, we schedule a deletion for all the current children by\n  // passing null.\n  workInProgress.child = reconcileChildFibers(workInProgress, current.child, null, renderLanes); // In the second pass, we mount the new children. The trick here is that we\n  // pass null in place of where we usually pass the current child set. This has\n  // the effect of remounting all children regardless of whether their\n  // identities match.\n\n  workInProgress.child = reconcileChildFibers(workInProgress, null, nextChildren, renderLanes);\n}\n\nfunction updateForwardRef(current, workInProgress, Component, nextProps, renderLanes) {\n  // TODO: current can be non-null here even if the component\n  // hasn't yet mounted. This happens after the first render suspends.\n  // We'll need to figure out if this is fine or can cause issues.\n  {\n    if (workInProgress.type !== workInProgress.elementType) {\n      // Lazy component props can't be validated in createElement\n      // because they're only guaranteed to be resolved here.\n      var innerPropTypes = Component.propTypes;\n\n      if (innerPropTypes) {\n        checkPropTypes(innerPropTypes, nextProps, // Resolved props\n        'prop', getComponentNameFromType(Component));\n      }\n    }\n  }\n\n  var render = Component.render;\n  var ref = workInProgress.ref; // The rest is a fork of updateFunctionComponent\n\n  var nextChildren;\n  var hasId;\n  prepareToReadContext(workInProgress, renderLanes);\n\n  {\n    markComponentRenderStarted(workInProgress);\n  }\n\n  {\n    ReactCurrentOwner$1.current = workInProgress;\n    setIsRendering(true);\n    nextChildren = renderWithHooks(current, workInProgress, render, nextProps, ref, renderLanes);\n    hasId = checkDidRenderIdHook();\n\n    if ( workInProgress.mode & StrictLegacyMode) {\n      setIsStrictModeForDevtools(true);\n\n      try {\n        nextChildren = renderWithHooks(current, workInProgress, render, nextProps, ref, renderLanes);\n        hasId = checkDidRenderIdHook();\n      } finally {\n        setIsStrictModeForDevtools(false);\n      }\n    }\n\n    setIsRendering(false);\n  }\n\n  {\n    markComponentRenderStopped();\n  }\n\n  if (current !== null && !didReceiveUpdate) {\n    bailoutHooks(current, workInProgress, renderLanes);\n    return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n  }\n\n  if (getIsHydrating() && hasId) {\n    pushMaterializedTreeId(workInProgress);\n  } // React DevTools reads this flag.\n\n\n  workInProgress.flags |= PerformedWork;\n  reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n  return workInProgress.child;\n}\n\nfunction updateMemoComponent(current, workInProgress, Component, nextProps, renderLanes) {\n  if (current === null) {\n    var type = Component.type;\n\n    if (isSimpleFunctionComponent(type) && Component.compare === null && // SimpleMemoComponent codepath doesn't resolve outer props either.\n    Component.defaultProps === undefined) {\n      var resolvedType = type;\n\n      {\n        resolvedType = resolveFunctionForHotReloading(type);\n      } // If this is a plain function component without default props,\n      // and with only the default shallow comparison, we upgrade it\n      // to a SimpleMemoComponent to allow fast path updates.\n\n\n      workInProgress.tag = SimpleMemoComponent;\n      workInProgress.type = resolvedType;\n\n      {\n        validateFunctionComponentInDev(workInProgress, type);\n      }\n\n      return updateSimpleMemoComponent(current, workInProgress, resolvedType, nextProps, renderLanes);\n    }\n\n    {\n      var innerPropTypes = type.propTypes;\n\n      if (innerPropTypes) {\n        // Inner memo component props aren't currently validated in createElement.\n        // We could move it there, but we'd still need this for lazy code path.\n        checkPropTypes(innerPropTypes, nextProps, // Resolved props\n        'prop', getComponentNameFromType(type));\n      }\n    }\n\n    var child = createFiberFromTypeAndProps(Component.type, null, nextProps, workInProgress, workInProgress.mode, renderLanes);\n    child.ref = workInProgress.ref;\n    child.return = workInProgress;\n    workInProgress.child = child;\n    return child;\n  }\n\n  {\n    var _type = Component.type;\n    var _innerPropTypes = _type.propTypes;\n\n    if (_innerPropTypes) {\n      // Inner memo component props aren't currently validated in createElement.\n      // We could move it there, but we'd still need this for lazy code path.\n      checkPropTypes(_innerPropTypes, nextProps, // Resolved props\n      'prop', getComponentNameFromType(_type));\n    }\n  }\n\n  var currentChild = current.child; // This is always exactly one child\n\n  var hasScheduledUpdateOrContext = checkScheduledUpdateOrContext(current, renderLanes);\n\n  if (!hasScheduledUpdateOrContext) {\n    // This will be the props with resolved defaultProps,\n    // unlike current.memoizedProps which will be the unresolved ones.\n    var prevProps = currentChild.memoizedProps; // Default to shallow comparison\n\n    var compare = Component.compare;\n    compare = compare !== null ? compare : shallowEqual;\n\n    if (compare(prevProps, nextProps) && current.ref === workInProgress.ref) {\n      return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n    }\n  } // React DevTools reads this flag.\n\n\n  workInProgress.flags |= PerformedWork;\n  var newChild = createWorkInProgress(currentChild, nextProps);\n  newChild.ref = workInProgress.ref;\n  newChild.return = workInProgress;\n  workInProgress.child = newChild;\n  return newChild;\n}\n\nfunction updateSimpleMemoComponent(current, workInProgress, Component, nextProps, renderLanes) {\n  // TODO: current can be non-null here even if the component\n  // hasn't yet mounted. This happens when the inner render suspends.\n  // We'll need to figure out if this is fine or can cause issues.\n  {\n    if (workInProgress.type !== workInProgress.elementType) {\n      // Lazy component props can't be validated in createElement\n      // because they're only guaranteed to be resolved here.\n      var outerMemoType = workInProgress.elementType;\n\n      if (outerMemoType.$$typeof === REACT_LAZY_TYPE) {\n        // We warn when you define propTypes on lazy()\n        // so let's just skip over it to find memo() outer wrapper.\n        // Inner props for memo are validated later.\n        var lazyComponent = outerMemoType;\n        var payload = lazyComponent._payload;\n        var init = lazyComponent._init;\n\n        try {\n          outerMemoType = init(payload);\n        } catch (x) {\n          outerMemoType = null;\n        } // Inner propTypes will be validated in the function component path.\n\n\n        var outerPropTypes = outerMemoType && outerMemoType.propTypes;\n\n        if (outerPropTypes) {\n          checkPropTypes(outerPropTypes, nextProps, // Resolved (SimpleMemoComponent has no defaultProps)\n          'prop', getComponentNameFromType(outerMemoType));\n        }\n      }\n    }\n  }\n\n  if (current !== null) {\n    var prevProps = current.memoizedProps;\n\n    if (shallowEqual(prevProps, nextProps) && current.ref === workInProgress.ref && ( // Prevent bailout if the implementation changed due to hot reload.\n     workInProgress.type === current.type )) {\n      didReceiveUpdate = false; // The props are shallowly equal. Reuse the previous props object, like we\n      // would during a normal fiber bailout.\n      //\n      // We don't have strong guarantees that the props object is referentially\n      // equal during updates where we can't bail out anyway \u2014 like if the props\n      // are shallowly equal, but there's a local state or context update in the\n      // same batch.\n      //\n      // However, as a principle, we should aim to make the behavior consistent\n      // across different ways of memoizing a component. For example, React.memo\n      // has a different internal Fiber layout if you pass a normal function\n      // component (SimpleMemoComponent) versus if you pass a different type\n      // like forwardRef (MemoComponent). But this is an implementation detail.\n      // Wrapping a component in forwardRef (or React.lazy, etc) shouldn't\n      // affect whether the props object is reused during a bailout.\n\n      workInProgress.pendingProps = nextProps = prevProps;\n\n      if (!checkScheduledUpdateOrContext(current, renderLanes)) {\n        // The pending lanes were cleared at the beginning of beginWork. We're\n        // about to bail out, but there might be other lanes that weren't\n        // included in the current render. Usually, the priority level of the\n        // remaining updates is accumulated during the evaluation of the\n        // component (i.e. when processing the update queue). But since since\n        // we're bailing out early *without* evaluating the component, we need\n        // to account for it here, too. Reset to the value of the current fiber.\n        // NOTE: This only applies to SimpleMemoComponent, not MemoComponent,\n        // because a MemoComponent fiber does not have hooks or an update queue;\n        // rather, it wraps around an inner component, which may or may not\n        // contains hooks.\n        // TODO: Move the reset at in beginWork out of the common path so that\n        // this is no longer necessary.\n        workInProgress.lanes = current.lanes;\n        return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n      } else if ((current.flags & ForceUpdateForLegacySuspense) !== NoFlags) {\n        // This is a special case that only exists for legacy mode.\n        // See https://github.com/facebook/react/pull/19216.\n        didReceiveUpdate = true;\n      }\n    }\n  }\n\n  return updateFunctionComponent(current, workInProgress, Component, nextProps, renderLanes);\n}\n\nfunction updateOffscreenComponent(current, workInProgress, renderLanes) {\n  var nextProps = workInProgress.pendingProps;\n  var nextChildren = nextProps.children;\n  var prevState = current !== null ? current.memoizedState : null;\n\n  if (nextProps.mode === 'hidden' || enableLegacyHidden ) {\n    // Rendering a hidden tree.\n    if ((workInProgress.mode & ConcurrentMode) === NoMode) {\n      // In legacy sync mode, don't defer the subtree. Render it now.\n      // TODO: Consider how Offscreen should work with transitions in the future\n      var nextState = {\n        baseLanes: NoLanes,\n        cachePool: null,\n        transitions: null\n      };\n      workInProgress.memoizedState = nextState;\n\n      pushRenderLanes(workInProgress, renderLanes);\n    } else if (!includesSomeLane(renderLanes, OffscreenLane)) {\n      var spawnedCachePool = null; // We're hidden, and we're not rendering at Offscreen. We will bail out\n      // and resume this tree later.\n\n      var nextBaseLanes;\n\n      if (prevState !== null) {\n        var prevBaseLanes = prevState.baseLanes;\n        nextBaseLanes = mergeLanes(prevBaseLanes, renderLanes);\n      } else {\n        nextBaseLanes = renderLanes;\n      } // Schedule this fiber to re-render at offscreen priority. Then bailout.\n\n\n      workInProgress.lanes = workInProgress.childLanes = laneToLanes(OffscreenLane);\n      var _nextState = {\n        baseLanes: nextBaseLanes,\n        cachePool: spawnedCachePool,\n        transitions: null\n      };\n      workInProgress.memoizedState = _nextState;\n      workInProgress.updateQueue = null;\n      // to avoid a push/pop misalignment.\n\n\n      pushRenderLanes(workInProgress, nextBaseLanes);\n\n      return null;\n    } else {\n      // This is the second render. The surrounding visible content has already\n      // committed. Now we resume rendering the hidden tree.\n      // Rendering at offscreen, so we can clear the base lanes.\n      var _nextState2 = {\n        baseLanes: NoLanes,\n        cachePool: null,\n        transitions: null\n      };\n      workInProgress.memoizedState = _nextState2; // Push the lanes that were skipped when we bailed out.\n\n      var subtreeRenderLanes = prevState !== null ? prevState.baseLanes : renderLanes;\n\n      pushRenderLanes(workInProgress, subtreeRenderLanes);\n    }\n  } else {\n    // Rendering a visible tree.\n    var _subtreeRenderLanes;\n\n    if (prevState !== null) {\n      // We're going from hidden -> visible.\n      _subtreeRenderLanes = mergeLanes(prevState.baseLanes, renderLanes);\n\n      workInProgress.memoizedState = null;\n    } else {\n      // We weren't previously hidden, and we still aren't, so there's nothing\n      // special to do. Need to push to the stack regardless, though, to avoid\n      // a push/pop misalignment.\n      _subtreeRenderLanes = renderLanes;\n    }\n\n    pushRenderLanes(workInProgress, _subtreeRenderLanes);\n  }\n\n  reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n  return workInProgress.child;\n} // Note: These happen to have identical begin phases, for now. We shouldn't hold\n\nfunction updateFragment(current, workInProgress, renderLanes) {\n  var nextChildren = workInProgress.pendingProps;\n  reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n  return workInProgress.child;\n}\n\nfunction updateMode(current, workInProgress, renderLanes) {\n  var nextChildren = workInProgress.pendingProps.children;\n  reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n  return workInProgress.child;\n}\n\nfunction updateProfiler(current, workInProgress, renderLanes) {\n  {\n    workInProgress.flags |= Update;\n\n    {\n      // Reset effect durations for the next eventual effect phase.\n      // These are reset during render to allow the DevTools commit hook a chance to read them,\n      var stateNode = workInProgress.stateNode;\n      stateNode.effectDuration = 0;\n      stateNode.passiveEffectDuration = 0;\n    }\n  }\n\n  var nextProps = workInProgress.pendingProps;\n  var nextChildren = nextProps.children;\n  reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n  return workInProgress.child;\n}\n\nfunction markRef(current, workInProgress) {\n  var ref = workInProgress.ref;\n\n  if (current === null && ref !== null || current !== null && current.ref !== ref) {\n    // Schedule a Ref effect\n    workInProgress.flags |= Ref;\n\n    {\n      workInProgress.flags |= RefStatic;\n    }\n  }\n}\n\nfunction updateFunctionComponent(current, workInProgress, Component, nextProps, renderLanes) {\n  {\n    if (workInProgress.type !== workInProgress.elementType) {\n      // Lazy component props can't be validated in createElement\n      // because they're only guaranteed to be resolved here.\n      var innerPropTypes = Component.propTypes;\n\n      if (innerPropTypes) {\n        checkPropTypes(innerPropTypes, nextProps, // Resolved props\n        'prop', getComponentNameFromType(Component));\n      }\n    }\n  }\n\n  var context;\n\n  {\n    var unmaskedContext = getUnmaskedContext(workInProgress, Component, true);\n    context = getMaskedContext(workInProgress, unmaskedContext);\n  }\n\n  var nextChildren;\n  var hasId;\n  prepareToReadContext(workInProgress, renderLanes);\n\n  {\n    markComponentRenderStarted(workInProgress);\n  }\n\n  {\n    ReactCurrentOwner$1.current = workInProgress;\n    setIsRendering(true);\n    nextChildren = renderWithHooks(current, workInProgress, Component, nextProps, context, renderLanes);\n    hasId = checkDidRenderIdHook();\n\n    if ( workInProgress.mode & StrictLegacyMode) {\n      setIsStrictModeForDevtools(true);\n\n      try {\n        nextChildren = renderWithHooks(current, workInProgress, Component, nextProps, context, renderLanes);\n        hasId = checkDidRenderIdHook();\n      } finally {\n        setIsStrictModeForDevtools(false);\n      }\n    }\n\n    setIsRendering(false);\n  }\n\n  {\n    markComponentRenderStopped();\n  }\n\n  if (current !== null && !didReceiveUpdate) {\n    bailoutHooks(current, workInProgress, renderLanes);\n    return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n  }\n\n  if (getIsHydrating() && hasId) {\n    pushMaterializedTreeId(workInProgress);\n  } // React DevTools reads this flag.\n\n\n  workInProgress.flags |= PerformedWork;\n  reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n  return workInProgress.child;\n}\n\nfunction updateClassComponent(current, workInProgress, Component, nextProps, renderLanes) {\n  {\n    // This is used by DevTools to force a boundary to error.\n    switch (shouldError(workInProgress)) {\n      case false:\n        {\n          var _instance = workInProgress.stateNode;\n          var ctor = workInProgress.type; // TODO This way of resetting the error boundary state is a hack.\n          // Is there a better way to do this?\n\n          var tempInstance = new ctor(workInProgress.memoizedProps, _instance.context);\n          var state = tempInstance.state;\n\n          _instance.updater.enqueueSetState(_instance, state, null);\n\n          break;\n        }\n\n      case true:\n        {\n          workInProgress.flags |= DidCapture;\n          workInProgress.flags |= ShouldCapture; // eslint-disable-next-line react-internal/prod-error-codes\n\n          var error$1 = new Error('Simulated error coming from DevTools');\n          var lane = pickArbitraryLane(renderLanes);\n          workInProgress.lanes = mergeLanes(workInProgress.lanes, lane); // Schedule the error boundary to re-render using updated state\n\n          var update = createClassErrorUpdate(workInProgress, createCapturedValueAtFiber(error$1, workInProgress), lane);\n          enqueueCapturedUpdate(workInProgress, update);\n          break;\n        }\n    }\n\n    if (workInProgress.type !== workInProgress.elementType) {\n      // Lazy component props can't be validated in createElement\n      // because they're only guaranteed to be resolved here.\n      var innerPropTypes = Component.propTypes;\n\n      if (innerPropTypes) {\n        checkPropTypes(innerPropTypes, nextProps, // Resolved props\n        'prop', getComponentNameFromType(Component));\n      }\n    }\n  } // Push context providers early to prevent context stack mismatches.\n  // During mounting we don't know the child context yet as the instance doesn't exist.\n  // We will invalidate the child context in finishClassComponent() right after rendering.\n\n\n  var hasContext;\n\n  if (isContextProvider(Component)) {\n    hasContext = true;\n    pushContextProvider(workInProgress);\n  } else {\n    hasContext = false;\n  }\n\n  prepareToReadContext(workInProgress, renderLanes);\n  var instance = workInProgress.stateNode;\n  var shouldUpdate;\n\n  if (instance === null) {\n    resetSuspendedCurrentOnMountInLegacyMode(current, workInProgress); // In the initial pass we might need to construct the instance.\n\n    constructClassInstance(workInProgress, Component, nextProps);\n    mountClassInstance(workInProgress, Component, nextProps, renderLanes);\n    shouldUpdate = true;\n  } else if (current === null) {\n    // In a resume, we'll already have an instance we can reuse.\n    shouldUpdate = resumeMountClassInstance(workInProgress, Component, nextProps, renderLanes);\n  } else {\n    shouldUpdate = updateClassInstance(current, workInProgress, Component, nextProps, renderLanes);\n  }\n\n  var nextUnitOfWork = finishClassComponent(current, workInProgress, Component, shouldUpdate, hasContext, renderLanes);\n\n  {\n    var inst = workInProgress.stateNode;\n\n    if (shouldUpdate && inst.props !== nextProps) {\n      if (!didWarnAboutReassigningProps) {\n        error('It looks like %s is reassigning its own `this.props` while rendering. ' + 'This is not supported and can lead to confusing bugs.', getComponentNameFromFiber(workInProgress) || 'a component');\n      }\n\n      didWarnAboutReassigningProps = true;\n    }\n  }\n\n  return nextUnitOfWork;\n}\n\nfunction finishClassComponent(current, workInProgress, Component, shouldUpdate, hasContext, renderLanes) {\n  // Refs should update even if shouldComponentUpdate returns false\n  markRef(current, workInProgress);\n  var didCaptureError = (workInProgress.flags & DidCapture) !== NoFlags;\n\n  if (!shouldUpdate && !didCaptureError) {\n    // Context providers should defer to sCU for rendering\n    if (hasContext) {\n      invalidateContextProvider(workInProgress, Component, false);\n    }\n\n    return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n  }\n\n  var instance = workInProgress.stateNode; // Rerender\n\n  ReactCurrentOwner$1.current = workInProgress;\n  var nextChildren;\n\n  if (didCaptureError && typeof Component.getDerivedStateFromError !== 'function') {\n    // If we captured an error, but getDerivedStateFromError is not defined,\n    // unmount all the children. componentDidCatch will schedule an update to\n    // re-render a fallback. This is temporary until we migrate everyone to\n    // the new API.\n    // TODO: Warn in a future release.\n    nextChildren = null;\n\n    {\n      stopProfilerTimerIfRunning();\n    }\n  } else {\n    {\n      markComponentRenderStarted(workInProgress);\n    }\n\n    {\n      setIsRendering(true);\n      nextChildren = instance.render();\n\n      if ( workInProgress.mode & StrictLegacyMode) {\n        setIsStrictModeForDevtools(true);\n\n        try {\n          instance.render();\n        } finally {\n          setIsStrictModeForDevtools(false);\n        }\n      }\n\n      setIsRendering(false);\n    }\n\n    {\n      markComponentRenderStopped();\n    }\n  } // React DevTools reads this flag.\n\n\n  workInProgress.flags |= PerformedWork;\n\n  if (current !== null && didCaptureError) {\n    // If we're recovering from an error, reconcile without reusing any of\n    // the existing children. Conceptually, the normal children and the children\n    // that are shown on error are two different sets, so we shouldn't reuse\n    // normal children even if their identities match.\n    forceUnmountCurrentAndReconcile(current, workInProgress, nextChildren, renderLanes);\n  } else {\n    reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n  } // Memoize state using the values we just used to render.\n  // TODO: Restructure so we never read values from the instance.\n\n\n  workInProgress.memoizedState = instance.state; // The context might have changed so we need to recalculate it.\n\n  if (hasContext) {\n    invalidateContextProvider(workInProgress, Component, true);\n  }\n\n  return workInProgress.child;\n}\n\nfunction pushHostRootContext(workInProgress) {\n  var root = workInProgress.stateNode;\n\n  if (root.pendingContext) {\n    pushTopLevelContextObject(workInProgress, root.pendingContext, root.pendingContext !== root.context);\n  } else if (root.context) {\n    // Should always be set\n    pushTopLevelContextObject(workInProgress, root.context, false);\n  }\n\n  pushHostContainer(workInProgress, root.containerInfo);\n}\n\nfunction updateHostRoot(current, workInProgress, renderLanes) {\n  pushHostRootContext(workInProgress);\n\n  if (current === null) {\n    throw new Error('Should have a current fiber. This is a bug in React.');\n  }\n\n  var nextProps = workInProgress.pendingProps;\n  var prevState = workInProgress.memoizedState;\n  var prevChildren = prevState.element;\n  cloneUpdateQueue(current, workInProgress);\n  processUpdateQueue(workInProgress, nextProps, null, renderLanes);\n  var nextState = workInProgress.memoizedState;\n  var root = workInProgress.stateNode;\n  // being called \"element\".\n\n\n  var nextChildren = nextState.element;\n\n  if ( prevState.isDehydrated) {\n    // This is a hydration root whose shell has not yet hydrated. We should\n    // attempt to hydrate.\n    // Flip isDehydrated to false to indicate that when this render\n    // finishes, the root will no longer be dehydrated.\n    var overrideState = {\n      element: nextChildren,\n      isDehydrated: false,\n      cache: nextState.cache,\n      pendingSuspenseBoundaries: nextState.pendingSuspenseBoundaries,\n      transitions: nextState.transitions\n    };\n    var updateQueue = workInProgress.updateQueue; // `baseState` can always be the last state because the root doesn't\n    // have reducer functions so it doesn't need rebasing.\n\n    updateQueue.baseState = overrideState;\n    workInProgress.memoizedState = overrideState;\n\n    if (workInProgress.flags & ForceClientRender) {\n      // Something errored during a previous attempt to hydrate the shell, so we\n      // forced a client render.\n      var recoverableError = createCapturedValueAtFiber(new Error('There was an error while hydrating. Because the error happened outside ' + 'of a Suspense boundary, the entire root will switch to ' + 'client rendering.'), workInProgress);\n      return mountHostRootWithoutHydrating(current, workInProgress, nextChildren, renderLanes, recoverableError);\n    } else if (nextChildren !== prevChildren) {\n      var _recoverableError = createCapturedValueAtFiber(new Error('This root received an early update, before anything was able ' + 'hydrate. Switched the entire root to client rendering.'), workInProgress);\n\n      return mountHostRootWithoutHydrating(current, workInProgress, nextChildren, renderLanes, _recoverableError);\n    } else {\n      // The outermost shell has not hydrated yet. Start hydrating.\n      enterHydrationState(workInProgress);\n\n      var child = mountChildFibers(workInProgress, null, nextChildren, renderLanes);\n      workInProgress.child = child;\n      var node = child;\n\n      while (node) {\n        // Mark each child as hydrating. This is a fast path to know whether this\n        // tree is part of a hydrating tree. This is used to determine if a child\n        // node has fully mounted yet, and for scheduling event replaying.\n        // Conceptually this is similar to Placement in that a new subtree is\n        // inserted into the React tree here. It just happens to not need DOM\n        // mutations because it already exists.\n        node.flags = node.flags & ~Placement | Hydrating;\n        node = node.sibling;\n      }\n    }\n  } else {\n    // Root is not dehydrated. Either this is a client-only root, or it\n    // already hydrated.\n    resetHydrationState();\n\n    if (nextChildren === prevChildren) {\n      return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n    }\n\n    reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n  }\n\n  return workInProgress.child;\n}\n\nfunction mountHostRootWithoutHydrating(current, workInProgress, nextChildren, renderLanes, recoverableError) {\n  // Revert to client rendering.\n  resetHydrationState();\n  queueHydrationError(recoverableError);\n  workInProgress.flags |= ForceClientRender;\n  reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n  return workInProgress.child;\n}\n\nfunction updateHostComponent(current, workInProgress, renderLanes) {\n  pushHostContext(workInProgress);\n\n  if (current === null) {\n    tryToClaimNextHydratableInstance(workInProgress);\n  }\n\n  var type = workInProgress.type;\n  var nextProps = workInProgress.pendingProps;\n  var prevProps = current !== null ? current.memoizedProps : null;\n  var nextChildren = nextProps.children;\n  var isDirectTextChild = shouldSetTextContent(type, nextProps);\n\n  if (isDirectTextChild) {\n    // We special case a direct text child of a host node. This is a common\n    // case. We won't handle it as a reified child. We will instead handle\n    // this in the host environment that also has access to this prop. That\n    // avoids allocating another HostText fiber and traversing it.\n    nextChildren = null;\n  } else if (prevProps !== null && shouldSetTextContent(type, prevProps)) {\n    // If we're switching from a direct text child to a normal child, or to\n    // empty, we need to schedule the text content to be reset.\n    workInProgress.flags |= ContentReset;\n  }\n\n  markRef(current, workInProgress);\n  reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n  return workInProgress.child;\n}\n\nfunction updateHostText(current, workInProgress) {\n  if (current === null) {\n    tryToClaimNextHydratableInstance(workInProgress);\n  } // Nothing to do here. This is terminal. We'll do the completion step\n  // immediately after.\n\n\n  return null;\n}\n\nfunction mountLazyComponent(_current, workInProgress, elementType, renderLanes) {\n  resetSuspendedCurrentOnMountInLegacyMode(_current, workInProgress);\n  var props = workInProgress.pendingProps;\n  var lazyComponent = elementType;\n  var payload = lazyComponent._payload;\n  var init = lazyComponent._init;\n  var Component = init(payload); // Store the unwrapped component in the type.\n\n  workInProgress.type = Component;\n  var resolvedTag = workInProgress.tag = resolveLazyComponentTag(Component);\n  var resolvedProps = resolveDefaultProps(Component, props);\n  var child;\n\n  switch (resolvedTag) {\n    case FunctionComponent:\n      {\n        {\n          validateFunctionComponentInDev(workInProgress, Component);\n          workInProgress.type = Component = resolveFunctionForHotReloading(Component);\n        }\n\n        child = updateFunctionComponent(null, workInProgress, Component, resolvedProps, renderLanes);\n        return child;\n      }\n\n    case ClassComponent:\n      {\n        {\n          workInProgress.type = Component = resolveClassForHotReloading(Component);\n        }\n\n        child = updateClassComponent(null, workInProgress, Component, resolvedProps, renderLanes);\n        return child;\n      }\n\n    case ForwardRef:\n      {\n        {\n          workInProgress.type = Component = resolveForwardRefForHotReloading(Component);\n        }\n\n        child = updateForwardRef(null, workInProgress, Component, resolvedProps, renderLanes);\n        return child;\n      }\n\n    case MemoComponent:\n      {\n        {\n          if (workInProgress.type !== workInProgress.elementType) {\n            var outerPropTypes = Component.propTypes;\n\n            if (outerPropTypes) {\n              checkPropTypes(outerPropTypes, resolvedProps, // Resolved for outer only\n              'prop', getComponentNameFromType(Component));\n            }\n          }\n        }\n\n        child = updateMemoComponent(null, workInProgress, Component, resolveDefaultProps(Component.type, resolvedProps), // The inner type can have defaults too\n        renderLanes);\n        return child;\n      }\n  }\n\n  var hint = '';\n\n  {\n    if (Component !== null && typeof Component === 'object' && Component.$$typeof === REACT_LAZY_TYPE) {\n      hint = ' Did you wrap a component in React.lazy() more than once?';\n    }\n  } // This message intentionally doesn't mention ForwardRef or MemoComponent\n  // because the fact that it's a separate type of work is an\n  // implementation detail.\n\n\n  throw new Error(\"Element type is invalid. Received a promise that resolves to: \" + Component + \". \" + (\"Lazy element type must resolve to a class or function.\" + hint));\n}\n\nfunction mountIncompleteClassComponent(_current, workInProgress, Component, nextProps, renderLanes) {\n  resetSuspendedCurrentOnMountInLegacyMode(_current, workInProgress); // Promote the fiber to a class and try rendering again.\n\n  workInProgress.tag = ClassComponent; // The rest of this function is a fork of `updateClassComponent`\n  // Push context providers early to prevent context stack mismatches.\n  // During mounting we don't know the child context yet as the instance doesn't exist.\n  // We will invalidate the child context in finishClassComponent() right after rendering.\n\n  var hasContext;\n\n  if (isContextProvider(Component)) {\n    hasContext = true;\n    pushContextProvider(workInProgress);\n  } else {\n    hasContext = false;\n  }\n\n  prepareToReadContext(workInProgress, renderLanes);\n  constructClassInstance(workInProgress, Component, nextProps);\n  mountClassInstance(workInProgress, Component, nextProps, renderLanes);\n  return finishClassComponent(null, workInProgress, Component, true, hasContext, renderLanes);\n}\n\nfunction mountIndeterminateComponent(_current, workInProgress, Component, renderLanes) {\n  resetSuspendedCurrentOnMountInLegacyMode(_current, workInProgress);\n  var props = workInProgress.pendingProps;\n  var context;\n\n  {\n    var unmaskedContext = getUnmaskedContext(workInProgress, Component, false);\n    context = getMaskedContext(workInProgress, unmaskedContext);\n  }\n\n  prepareToReadContext(workInProgress, renderLanes);\n  var value;\n  var hasId;\n\n  {\n    markComponentRenderStarted(workInProgress);\n  }\n\n  {\n    if (Component.prototype && typeof Component.prototype.render === 'function') {\n      var componentName = getComponentNameFromType(Component) || 'Unknown';\n\n      if (!didWarnAboutBadClass[componentName]) {\n        error(\"The <%s /> component appears to have a render method, but doesn't extend React.Component. \" + 'This is likely to cause errors. Change %s to extend React.Component instead.', componentName, componentName);\n\n        didWarnAboutBadClass[componentName] = true;\n      }\n    }\n\n    if (workInProgress.mode & StrictLegacyMode) {\n      ReactStrictModeWarnings.recordLegacyContextWarning(workInProgress, null);\n    }\n\n    setIsRendering(true);\n    ReactCurrentOwner$1.current = workInProgress;\n    value = renderWithHooks(null, workInProgress, Component, props, context, renderLanes);\n    hasId = checkDidRenderIdHook();\n    setIsRendering(false);\n  }\n\n  {\n    markComponentRenderStopped();\n  } // React DevTools reads this flag.\n\n\n  workInProgress.flags |= PerformedWork;\n\n  {\n    // Support for module components is deprecated and is removed behind a flag.\n    // Whether or not it would crash later, we want to show a good message in DEV first.\n    if (typeof value === 'object' && value !== null && typeof value.render === 'function' && value.$$typeof === undefined) {\n      var _componentName = getComponentNameFromType(Component) || 'Unknown';\n\n      if (!didWarnAboutModulePatternComponent[_componentName]) {\n        error('The <%s /> component appears to be a function component that returns a class instance. ' + 'Change %s to a class that extends React.Component instead. ' + \"If you can't use a class try assigning the prototype on the function as a workaround. \" + \"`%s.prototype = React.Component.prototype`. Don't use an arrow function since it \" + 'cannot be called with `new` by React.', _componentName, _componentName, _componentName);\n\n        didWarnAboutModulePatternComponent[_componentName] = true;\n      }\n    }\n  }\n\n  if ( // Run these checks in production only if the flag is off.\n  // Eventually we'll delete this branch altogether.\n   typeof value === 'object' && value !== null && typeof value.render === 'function' && value.$$typeof === undefined) {\n    {\n      var _componentName2 = getComponentNameFromType(Component) || 'Unknown';\n\n      if (!didWarnAboutModulePatternComponent[_componentName2]) {\n        error('The <%s /> component appears to be a function component that returns a class instance. ' + 'Change %s to a class that extends React.Component instead. ' + \"If you can't use a class try assigning the prototype on the function as a workaround. \" + \"`%s.prototype = React.Component.prototype`. Don't use an arrow function since it \" + 'cannot be called with `new` by React.', _componentName2, _componentName2, _componentName2);\n\n        didWarnAboutModulePatternComponent[_componentName2] = true;\n      }\n    } // Proceed under the assumption that this is a class instance\n\n\n    workInProgress.tag = ClassComponent; // Throw out any hooks that were used.\n\n    workInProgress.memoizedState = null;\n    workInProgress.updateQueue = null; // Push context providers early to prevent context stack mismatches.\n    // During mounting we don't know the child context yet as the instance doesn't exist.\n    // We will invalidate the child context in finishClassComponent() right after rendering.\n\n    var hasContext = false;\n\n    if (isContextProvider(Component)) {\n      hasContext = true;\n      pushContextProvider(workInProgress);\n    } else {\n      hasContext = false;\n    }\n\n    workInProgress.memoizedState = value.state !== null && value.state !== undefined ? value.state : null;\n    initializeUpdateQueue(workInProgress);\n    adoptClassInstance(workInProgress, value);\n    mountClassInstance(workInProgress, Component, props, renderLanes);\n    return finishClassComponent(null, workInProgress, Component, true, hasContext, renderLanes);\n  } else {\n    // Proceed under the assumption that this is a function component\n    workInProgress.tag = FunctionComponent;\n\n    {\n\n      if ( workInProgress.mode & StrictLegacyMode) {\n        setIsStrictModeForDevtools(true);\n\n        try {\n          value = renderWithHooks(null, workInProgress, Component, props, context, renderLanes);\n          hasId = checkDidRenderIdHook();\n        } finally {\n          setIsStrictModeForDevtools(false);\n        }\n      }\n    }\n\n    if (getIsHydrating() && hasId) {\n      pushMaterializedTreeId(workInProgress);\n    }\n\n    reconcileChildren(null, workInProgress, value, renderLanes);\n\n    {\n      validateFunctionComponentInDev(workInProgress, Component);\n    }\n\n    return workInProgress.child;\n  }\n}\n\nfunction validateFunctionComponentInDev(workInProgress, Component) {\n  {\n    if (Component) {\n      if (Component.childContextTypes) {\n        error('%s(...): childContextTypes cannot be defined on a function component.', Component.displayName || Component.name || 'Component');\n      }\n    }\n\n    if (workInProgress.ref !== null) {\n      var info = '';\n      var ownerName = getCurrentFiberOwnerNameInDevOrNull();\n\n      if (ownerName) {\n        info += '\\n\\nCheck the render method of `' + ownerName + '`.';\n      }\n\n      var warningKey = ownerName || '';\n      var debugSource = workInProgress._debugSource;\n\n      if (debugSource) {\n        warningKey = debugSource.fileName + ':' + debugSource.lineNumber;\n      }\n\n      if (!didWarnAboutFunctionRefs[warningKey]) {\n        didWarnAboutFunctionRefs[warningKey] = true;\n\n        error('Function components cannot be given refs. ' + 'Attempts to access this ref will fail. ' + 'Did you mean to use React.forwardRef()?%s', info);\n      }\n    }\n\n    if (typeof Component.getDerivedStateFromProps === 'function') {\n      var _componentName3 = getComponentNameFromType(Component) || 'Unknown';\n\n      if (!didWarnAboutGetDerivedStateOnFunctionComponent[_componentName3]) {\n        error('%s: Function components do not support getDerivedStateFromProps.', _componentName3);\n\n        didWarnAboutGetDerivedStateOnFunctionComponent[_componentName3] = true;\n      }\n    }\n\n    if (typeof Component.contextType === 'object' && Component.contextType !== null) {\n      var _componentName4 = getComponentNameFromType(Component) || 'Unknown';\n\n      if (!didWarnAboutContextTypeOnFunctionComponent[_componentName4]) {\n        error('%s: Function components do not support contextType.', _componentName4);\n\n        didWarnAboutContextTypeOnFunctionComponent[_componentName4] = true;\n      }\n    }\n  }\n}\n\nvar SUSPENDED_MARKER = {\n  dehydrated: null,\n  treeContext: null,\n  retryLane: NoLane\n};\n\nfunction mountSuspenseOffscreenState(renderLanes) {\n  return {\n    baseLanes: renderLanes,\n    cachePool: getSuspendedCache(),\n    transitions: null\n  };\n}\n\nfunction updateSuspenseOffscreenState(prevOffscreenState, renderLanes) {\n  var cachePool = null;\n\n  return {\n    baseLanes: mergeLanes(prevOffscreenState.baseLanes, renderLanes),\n    cachePool: cachePool,\n    transitions: prevOffscreenState.transitions\n  };\n} // TODO: Probably should inline this back\n\n\nfunction shouldRemainOnFallback(suspenseContext, current, workInProgress, renderLanes) {\n  // If we're already showing a fallback, there are cases where we need to\n  // remain on that fallback regardless of whether the content has resolved.\n  // For example, SuspenseList coordinates when nested content appears.\n  if (current !== null) {\n    var suspenseState = current.memoizedState;\n\n    if (suspenseState === null) {\n      // Currently showing content. Don't hide it, even if ForceSuspenseFallback\n      // is true. More precise name might be \"ForceRemainSuspenseFallback\".\n      // Note: This is a factoring smell. Can't remain on a fallback if there's\n      // no fallback to remain on.\n      return false;\n    }\n  } // Not currently showing content. Consult the Suspense context.\n\n\n  return hasSuspenseContext(suspenseContext, ForceSuspenseFallback);\n}\n\nfunction getRemainingWorkInPrimaryTree(current, renderLanes) {\n  // TODO: Should not remove render lanes that were pinged during this render\n  return removeLanes(current.childLanes, renderLanes);\n}\n\nfunction updateSuspenseComponent(current, workInProgress, renderLanes) {\n  var nextProps = workInProgress.pendingProps; // This is used by DevTools to force a boundary to suspend.\n\n  {\n    if (shouldSuspend(workInProgress)) {\n      workInProgress.flags |= DidCapture;\n    }\n  }\n\n  var suspenseContext = suspenseStackCursor.current;\n  var showFallback = false;\n  var didSuspend = (workInProgress.flags & DidCapture) !== NoFlags;\n\n  if (didSuspend || shouldRemainOnFallback(suspenseContext, current)) {\n    // Something in this boundary's subtree already suspended. Switch to\n    // rendering the fallback children.\n    showFallback = true;\n    workInProgress.flags &= ~DidCapture;\n  } else {\n    // Attempting the main content\n    if (current === null || current.memoizedState !== null) {\n      // This is a new mount or this boundary is already showing a fallback state.\n      // Mark this subtree context as having at least one invisible parent that could\n      // handle the fallback state.\n      // Avoided boundaries are not considered since they cannot handle preferred fallback states.\n      {\n        suspenseContext = addSubtreeSuspenseContext(suspenseContext, InvisibleParentSuspenseContext);\n      }\n    }\n  }\n\n  suspenseContext = setDefaultShallowSuspenseContext(suspenseContext);\n  pushSuspenseContext(workInProgress, suspenseContext); // OK, the next part is confusing. We're about to reconcile the Suspense\n  // boundary's children. This involves some custom reconciliation logic. Two\n  // main reasons this is so complicated.\n  //\n  // First, Legacy Mode has different semantics for backwards compatibility. The\n  // primary tree will commit in an inconsistent state, so when we do the\n  // second pass to render the fallback, we do some exceedingly, uh, clever\n  // hacks to make that not totally break. Like transferring effects and\n  // deletions from hidden tree. In Concurrent Mode, it's much simpler,\n  // because we bailout on the primary tree completely and leave it in its old\n  // state, no effects. Same as what we do for Offscreen (except that\n  // Offscreen doesn't have the first render pass).\n  //\n  // Second is hydration. During hydration, the Suspense fiber has a slightly\n  // different layout, where the child points to a dehydrated fragment, which\n  // contains the DOM rendered by the server.\n  //\n  // Third, even if you set all that aside, Suspense is like error boundaries in\n  // that we first we try to render one tree, and if that fails, we render again\n  // and switch to a different tree. Like a try/catch block. So we have to track\n  // which branch we're currently rendering. Ideally we would model this using\n  // a stack.\n\n  if (current === null) {\n    // Initial mount\n    // Special path for hydration\n    // If we're currently hydrating, try to hydrate this boundary.\n    tryToClaimNextHydratableInstance(workInProgress); // This could've been a dehydrated suspense component.\n\n    var suspenseState = workInProgress.memoizedState;\n\n    if (suspenseState !== null) {\n      var dehydrated = suspenseState.dehydrated;\n\n      if (dehydrated !== null) {\n        return mountDehydratedSuspenseComponent(workInProgress, dehydrated);\n      }\n    }\n\n    var nextPrimaryChildren = nextProps.children;\n    var nextFallbackChildren = nextProps.fallback;\n\n    if (showFallback) {\n      var fallbackFragment = mountSuspenseFallbackChildren(workInProgress, nextPrimaryChildren, nextFallbackChildren, renderLanes);\n      var primaryChildFragment = workInProgress.child;\n      primaryChildFragment.memoizedState = mountSuspenseOffscreenState(renderLanes);\n      workInProgress.memoizedState = SUSPENDED_MARKER;\n\n      return fallbackFragment;\n    } else {\n      return mountSuspensePrimaryChildren(workInProgress, nextPrimaryChildren);\n    }\n  } else {\n    // This is an update.\n    // Special path for hydration\n    var prevState = current.memoizedState;\n\n    if (prevState !== null) {\n      var _dehydrated = prevState.dehydrated;\n\n      if (_dehydrated !== null) {\n        return updateDehydratedSuspenseComponent(current, workInProgress, didSuspend, nextProps, _dehydrated, prevState, renderLanes);\n      }\n    }\n\n    if (showFallback) {\n      var _nextFallbackChildren = nextProps.fallback;\n      var _nextPrimaryChildren = nextProps.children;\n      var fallbackChildFragment = updateSuspenseFallbackChildren(current, workInProgress, _nextPrimaryChildren, _nextFallbackChildren, renderLanes);\n      var _primaryChildFragment2 = workInProgress.child;\n      var prevOffscreenState = current.child.memoizedState;\n      _primaryChildFragment2.memoizedState = prevOffscreenState === null ? mountSuspenseOffscreenState(renderLanes) : updateSuspenseOffscreenState(prevOffscreenState, renderLanes);\n\n      _primaryChildFragment2.childLanes = getRemainingWorkInPrimaryTree(current, renderLanes);\n      workInProgress.memoizedState = SUSPENDED_MARKER;\n      return fallbackChildFragment;\n    } else {\n      var _nextPrimaryChildren2 = nextProps.children;\n\n      var _primaryChildFragment3 = updateSuspensePrimaryChildren(current, workInProgress, _nextPrimaryChildren2, renderLanes);\n\n      workInProgress.memoizedState = null;\n      return _primaryChildFragment3;\n    }\n  }\n}\n\nfunction mountSuspensePrimaryChildren(workInProgress, primaryChildren, renderLanes) {\n  var mode = workInProgress.mode;\n  var primaryChildProps = {\n    mode: 'visible',\n    children: primaryChildren\n  };\n  var primaryChildFragment = mountWorkInProgressOffscreenFiber(primaryChildProps, mode);\n  primaryChildFragment.return = workInProgress;\n  workInProgress.child = primaryChildFragment;\n  return primaryChildFragment;\n}\n\nfunction mountSuspenseFallbackChildren(workInProgress, primaryChildren, fallbackChildren, renderLanes) {\n  var mode = workInProgress.mode;\n  var progressedPrimaryFragment = workInProgress.child;\n  var primaryChildProps = {\n    mode: 'hidden',\n    children: primaryChildren\n  };\n  var primaryChildFragment;\n  var fallbackChildFragment;\n\n  if ((mode & ConcurrentMode) === NoMode && progressedPrimaryFragment !== null) {\n    // In legacy mode, we commit the primary tree as if it successfully\n    // completed, even though it's in an inconsistent state.\n    primaryChildFragment = progressedPrimaryFragment;\n    primaryChildFragment.childLanes = NoLanes;\n    primaryChildFragment.pendingProps = primaryChildProps;\n\n    if ( workInProgress.mode & ProfileMode) {\n      // Reset the durations from the first pass so they aren't included in the\n      // final amounts. This seems counterintuitive, since we're intentionally\n      // not measuring part of the render phase, but this makes it match what we\n      // do in Concurrent Mode.\n      primaryChildFragment.actualDuration = 0;\n      primaryChildFragment.actualStartTime = -1;\n      primaryChildFragment.selfBaseDuration = 0;\n      primaryChildFragment.treeBaseDuration = 0;\n    }\n\n    fallbackChildFragment = createFiberFromFragment(fallbackChildren, mode, renderLanes, null);\n  } else {\n    primaryChildFragment = mountWorkInProgressOffscreenFiber(primaryChildProps, mode);\n    fallbackChildFragment = createFiberFromFragment(fallbackChildren, mode, renderLanes, null);\n  }\n\n  primaryChildFragment.return = workInProgress;\n  fallbackChildFragment.return = workInProgress;\n  primaryChildFragment.sibling = fallbackChildFragment;\n  workInProgress.child = primaryChildFragment;\n  return fallbackChildFragment;\n}\n\nfunction mountWorkInProgressOffscreenFiber(offscreenProps, mode, renderLanes) {\n  // The props argument to `createFiberFromOffscreen` is `any` typed, so we use\n  // this wrapper function to constrain it.\n  return createFiberFromOffscreen(offscreenProps, mode, NoLanes, null);\n}\n\nfunction updateWorkInProgressOffscreenFiber(current, offscreenProps) {\n  // The props argument to `createWorkInProgress` is `any` typed, so we use this\n  // wrapper function to constrain it.\n  return createWorkInProgress(current, offscreenProps);\n}\n\nfunction updateSuspensePrimaryChildren(current, workInProgress, primaryChildren, renderLanes) {\n  var currentPrimaryChildFragment = current.child;\n  var currentFallbackChildFragment = currentPrimaryChildFragment.sibling;\n  var primaryChildFragment = updateWorkInProgressOffscreenFiber(currentPrimaryChildFragment, {\n    mode: 'visible',\n    children: primaryChildren\n  });\n\n  if ((workInProgress.mode & ConcurrentMode) === NoMode) {\n    primaryChildFragment.lanes = renderLanes;\n  }\n\n  primaryChildFragment.return = workInProgress;\n  primaryChildFragment.sibling = null;\n\n  if (currentFallbackChildFragment !== null) {\n    // Delete the fallback child fragment\n    var deletions = workInProgress.deletions;\n\n    if (deletions === null) {\n      workInProgress.deletions = [currentFallbackChildFragment];\n      workInProgress.flags |= ChildDeletion;\n    } else {\n      deletions.push(currentFallbackChildFragment);\n    }\n  }\n\n  workInProgress.child = primaryChildFragment;\n  return primaryChildFragment;\n}\n\nfunction updateSuspenseFallbackChildren(current, workInProgress, primaryChildren, fallbackChildren, renderLanes) {\n  var mode = workInProgress.mode;\n  var currentPrimaryChildFragment = current.child;\n  var currentFallbackChildFragment = currentPrimaryChildFragment.sibling;\n  var primaryChildProps = {\n    mode: 'hidden',\n    children: primaryChildren\n  };\n  var primaryChildFragment;\n\n  if ( // In legacy mode, we commit the primary tree as if it successfully\n  // completed, even though it's in an inconsistent state.\n  (mode & ConcurrentMode) === NoMode && // Make sure we're on the second pass, i.e. the primary child fragment was\n  // already cloned. In legacy mode, the only case where this isn't true is\n  // when DevTools forces us to display a fallback; we skip the first render\n  // pass entirely and go straight to rendering the fallback. (In Concurrent\n  // Mode, SuspenseList can also trigger this scenario, but this is a legacy-\n  // only codepath.)\n  workInProgress.child !== currentPrimaryChildFragment) {\n    var progressedPrimaryFragment = workInProgress.child;\n    primaryChildFragment = progressedPrimaryFragment;\n    primaryChildFragment.childLanes = NoLanes;\n    primaryChildFragment.pendingProps = primaryChildProps;\n\n    if ( workInProgress.mode & ProfileMode) {\n      // Reset the durations from the first pass so they aren't included in the\n      // final amounts. This seems counterintuitive, since we're intentionally\n      // not measuring part of the render phase, but this makes it match what we\n      // do in Concurrent Mode.\n      primaryChildFragment.actualDuration = 0;\n      primaryChildFragment.actualStartTime = -1;\n      primaryChildFragment.selfBaseDuration = currentPrimaryChildFragment.selfBaseDuration;\n      primaryChildFragment.treeBaseDuration = currentPrimaryChildFragment.treeBaseDuration;\n    } // The fallback fiber was added as a deletion during the first pass.\n    // However, since we're going to remain on the fallback, we no longer want\n    // to delete it.\n\n\n    workInProgress.deletions = null;\n  } else {\n    primaryChildFragment = updateWorkInProgressOffscreenFiber(currentPrimaryChildFragment, primaryChildProps); // Since we're reusing a current tree, we need to reuse the flags, too.\n    // (We don't do this in legacy mode, because in legacy mode we don't re-use\n    // the current tree; see previous branch.)\n\n    primaryChildFragment.subtreeFlags = currentPrimaryChildFragment.subtreeFlags & StaticMask;\n  }\n\n  var fallbackChildFragment;\n\n  if (currentFallbackChildFragment !== null) {\n    fallbackChildFragment = createWorkInProgress(currentFallbackChildFragment, fallbackChildren);\n  } else {\n    fallbackChildFragment = createFiberFromFragment(fallbackChildren, mode, renderLanes, null); // Needs a placement effect because the parent (the Suspense boundary) already\n    // mounted but this is a new fiber.\n\n    fallbackChildFragment.flags |= Placement;\n  }\n\n  fallbackChildFragment.return = workInProgress;\n  primaryChildFragment.return = workInProgress;\n  primaryChildFragment.sibling = fallbackChildFragment;\n  workInProgress.child = primaryChildFragment;\n  return fallbackChildFragment;\n}\n\nfunction retrySuspenseComponentWithoutHydrating(current, workInProgress, renderLanes, recoverableError) {\n  // Falling back to client rendering. Because this has performance\n  // implications, it's considered a recoverable error, even though the user\n  // likely won't observe anything wrong with the UI.\n  //\n  // The error is passed in as an argument to enforce that every caller provide\n  // a custom message, or explicitly opt out (currently the only path that opts\n  // out is legacy mode; every concurrent path provides an error).\n  if (recoverableError !== null) {\n    queueHydrationError(recoverableError);\n  } // This will add the old fiber to the deletion list\n\n\n  reconcileChildFibers(workInProgress, current.child, null, renderLanes); // We're now not suspended nor dehydrated.\n\n  var nextProps = workInProgress.pendingProps;\n  var primaryChildren = nextProps.children;\n  var primaryChildFragment = mountSuspensePrimaryChildren(workInProgress, primaryChildren); // Needs a placement effect because the parent (the Suspense boundary) already\n  // mounted but this is a new fiber.\n\n  primaryChildFragment.flags |= Placement;\n  workInProgress.memoizedState = null;\n  return primaryChildFragment;\n}\n\nfunction mountSuspenseFallbackAfterRetryWithoutHydrating(current, workInProgress, primaryChildren, fallbackChildren, renderLanes) {\n  var fiberMode = workInProgress.mode;\n  var primaryChildProps = {\n    mode: 'visible',\n    children: primaryChildren\n  };\n  var primaryChildFragment = mountWorkInProgressOffscreenFiber(primaryChildProps, fiberMode);\n  var fallbackChildFragment = createFiberFromFragment(fallbackChildren, fiberMode, renderLanes, null); // Needs a placement effect because the parent (the Suspense\n  // boundary) already mounted but this is a new fiber.\n\n  fallbackChildFragment.flags |= Placement;\n  primaryChildFragment.return = workInProgress;\n  fallbackChildFragment.return = workInProgress;\n  primaryChildFragment.sibling = fallbackChildFragment;\n  workInProgress.child = primaryChildFragment;\n\n  if ((workInProgress.mode & ConcurrentMode) !== NoMode) {\n    // We will have dropped the effect list which contains the\n    // deletion. We need to reconcile to delete the current child.\n    reconcileChildFibers(workInProgress, current.child, null, renderLanes);\n  }\n\n  return fallbackChildFragment;\n}\n\nfunction mountDehydratedSuspenseComponent(workInProgress, suspenseInstance, renderLanes) {\n  // During the first pass, we'll bail out and not drill into the children.\n  // Instead, we'll leave the content in place and try to hydrate it later.\n  if ((workInProgress.mode & ConcurrentMode) === NoMode) {\n    {\n      error('Cannot hydrate Suspense in legacy mode. Switch from ' + 'ReactDOM.hydrate(element, container) to ' + 'ReactDOMClient.hydrateRoot(container, <App />)' + '.render(element) or remove the Suspense components from ' + 'the server rendered components.');\n    }\n\n    workInProgress.lanes = laneToLanes(SyncLane);\n  } else if (isSuspenseInstanceFallback(suspenseInstance)) {\n    // This is a client-only boundary. Since we won't get any content from the server\n    // for this, we need to schedule that at a higher priority based on when it would\n    // have timed out. In theory we could render it in this pass but it would have the\n    // wrong priority associated with it and will prevent hydration of parent path.\n    // Instead, we'll leave work left on it to render it in a separate commit.\n    // TODO This time should be the time at which the server rendered response that is\n    // a parent to this boundary was displayed. However, since we currently don't have\n    // a protocol to transfer that time, we'll just estimate it by using the current\n    // time. This will mean that Suspense timeouts are slightly shifted to later than\n    // they should be.\n    // Schedule a normal pri update to render this content.\n    workInProgress.lanes = laneToLanes(DefaultHydrationLane);\n  } else {\n    // We'll continue hydrating the rest at offscreen priority since we'll already\n    // be showing the right content coming from the server, it is no rush.\n    workInProgress.lanes = laneToLanes(OffscreenLane);\n  }\n\n  return null;\n}\n\nfunction updateDehydratedSuspenseComponent(current, workInProgress, didSuspend, nextProps, suspenseInstance, suspenseState, renderLanes) {\n  if (!didSuspend) {\n    // This is the first render pass. Attempt to hydrate.\n    // We should never be hydrating at this point because it is the first pass,\n    // but after we've already committed once.\n    warnIfHydrating();\n\n    if ((workInProgress.mode & ConcurrentMode) === NoMode) {\n      return retrySuspenseComponentWithoutHydrating(current, workInProgress, renderLanes, // TODO: When we delete legacy mode, we should make this error argument\n      // required \u2014 every concurrent mode path that causes hydration to\n      // de-opt to client rendering should have an error message.\n      null);\n    }\n\n    if (isSuspenseInstanceFallback(suspenseInstance)) {\n      // This boundary is in a permanent fallback state. In this case, we'll never\n      // get an update and we'll never be able to hydrate the final content. Let's just try the\n      // client side render instead.\n      var digest, message, stack;\n\n      {\n        var _getSuspenseInstanceF = getSuspenseInstanceFallbackErrorDetails(suspenseInstance);\n\n        digest = _getSuspenseInstanceF.digest;\n        message = _getSuspenseInstanceF.message;\n        stack = _getSuspenseInstanceF.stack;\n      }\n\n      var error;\n\n      if (message) {\n        // eslint-disable-next-line react-internal/prod-error-codes\n        error = new Error(message);\n      } else {\n        error = new Error('The server could not finish this Suspense boundary, likely ' + 'due to an error during server rendering. Switched to ' + 'client rendering.');\n      }\n\n      var capturedValue = createCapturedValue(error, digest, stack);\n      return retrySuspenseComponentWithoutHydrating(current, workInProgress, renderLanes, capturedValue);\n    }\n    // any context has changed, we need to treat is as if the input might have changed.\n\n\n    var hasContextChanged = includesSomeLane(renderLanes, current.childLanes);\n\n    if (didReceiveUpdate || hasContextChanged) {\n      // This boundary has changed since the first render. This means that we are now unable to\n      // hydrate it. We might still be able to hydrate it using a higher priority lane.\n      var root = getWorkInProgressRoot();\n\n      if (root !== null) {\n        var attemptHydrationAtLane = getBumpedLaneForHydration(root, renderLanes);\n\n        if (attemptHydrationAtLane !== NoLane && attemptHydrationAtLane !== suspenseState.retryLane) {\n          // Intentionally mutating since this render will get interrupted. This\n          // is one of the very rare times where we mutate the current tree\n          // during the render phase.\n          suspenseState.retryLane = attemptHydrationAtLane; // TODO: Ideally this would inherit the event time of the current render\n\n          var eventTime = NoTimestamp;\n          enqueueConcurrentRenderForLane(current, attemptHydrationAtLane);\n          scheduleUpdateOnFiber(root, current, attemptHydrationAtLane, eventTime);\n        }\n      } // If we have scheduled higher pri work above, this will probably just abort the render\n      // since we now have higher priority work, but in case it doesn't, we need to prepare to\n      // render something, if we time out. Even if that requires us to delete everything and\n      // skip hydration.\n      // Delay having to do this as long as the suspense timeout allows us.\n\n\n      renderDidSuspendDelayIfPossible();\n\n      var _capturedValue = createCapturedValue(new Error('This Suspense boundary received an update before it finished ' + 'hydrating. This caused the boundary to switch to client rendering. ' + 'The usual way to fix this is to wrap the original update ' + 'in startTransition.'));\n\n      return retrySuspenseComponentWithoutHydrating(current, workInProgress, renderLanes, _capturedValue);\n    } else if (isSuspenseInstancePending(suspenseInstance)) {\n      // This component is still pending more data from the server, so we can't hydrate its\n      // content. We treat it as if this component suspended itself. It might seem as if\n      // we could just try to render it client-side instead. However, this will perform a\n      // lot of unnecessary work and is unlikely to complete since it often will suspend\n      // on missing data anyway. Additionally, the server might be able to render more\n      // than we can on the client yet. In that case we'd end up with more fallback states\n      // on the client than if we just leave it alone. If the server times out or errors\n      // these should update this boundary to the permanent Fallback state instead.\n      // Mark it as having captured (i.e. suspended).\n      workInProgress.flags |= DidCapture; // Leave the child in place. I.e. the dehydrated fragment.\n\n      workInProgress.child = current.child; // Register a callback to retry this boundary once the server has sent the result.\n\n      var retry = retryDehydratedSuspenseBoundary.bind(null, current);\n      registerSuspenseInstanceRetry(suspenseInstance, retry);\n      return null;\n    } else {\n      // This is the first attempt.\n      reenterHydrationStateFromDehydratedSuspenseInstance(workInProgress, suspenseInstance, suspenseState.treeContext);\n      var primaryChildren = nextProps.children;\n      var primaryChildFragment = mountSuspensePrimaryChildren(workInProgress, primaryChildren); // Mark the children as hydrating. This is a fast path to know whether this\n      // tree is part of a hydrating tree. This is used to determine if a child\n      // node has fully mounted yet, and for scheduling event replaying.\n      // Conceptually this is similar to Placement in that a new subtree is\n      // inserted into the React tree here. It just happens to not need DOM\n      // mutations because it already exists.\n\n      primaryChildFragment.flags |= Hydrating;\n      return primaryChildFragment;\n    }\n  } else {\n    // This is the second render pass. We already attempted to hydrated, but\n    // something either suspended or errored.\n    if (workInProgress.flags & ForceClientRender) {\n      // Something errored during hydration. Try again without hydrating.\n      workInProgress.flags &= ~ForceClientRender;\n\n      var _capturedValue2 = createCapturedValue(new Error('There was an error while hydrating this Suspense boundary. ' + 'Switched to client rendering.'));\n\n      return retrySuspenseComponentWithoutHydrating(current, workInProgress, renderLanes, _capturedValue2);\n    } else if (workInProgress.memoizedState !== null) {\n      // Something suspended and we should still be in dehydrated mode.\n      // Leave the existing child in place.\n      workInProgress.child = current.child; // The dehydrated completion pass expects this flag to be there\n      // but the normal suspense pass doesn't.\n\n      workInProgress.flags |= DidCapture;\n      return null;\n    } else {\n      // Suspended but we should no longer be in dehydrated mode.\n      // Therefore we now have to render the fallback.\n      var nextPrimaryChildren = nextProps.children;\n      var nextFallbackChildren = nextProps.fallback;\n      var fallbackChildFragment = mountSuspenseFallbackAfterRetryWithoutHydrating(current, workInProgress, nextPrimaryChildren, nextFallbackChildren, renderLanes);\n      var _primaryChildFragment4 = workInProgress.child;\n      _primaryChildFragment4.memoizedState = mountSuspenseOffscreenState(renderLanes);\n      workInProgress.memoizedState = SUSPENDED_MARKER;\n      return fallbackChildFragment;\n    }\n  }\n}\n\nfunction scheduleSuspenseWorkOnFiber(fiber, renderLanes, propagationRoot) {\n  fiber.lanes = mergeLanes(fiber.lanes, renderLanes);\n  var alternate = fiber.alternate;\n\n  if (alternate !== null) {\n    alternate.lanes = mergeLanes(alternate.lanes, renderLanes);\n  }\n\n  scheduleContextWorkOnParentPath(fiber.return, renderLanes, propagationRoot);\n}\n\nfunction propagateSuspenseContextChange(workInProgress, firstChild, renderLanes) {\n  // Mark any Suspense boundaries with fallbacks as having work to do.\n  // If they were previously forced into fallbacks, they may now be able\n  // to unblock.\n  var node = firstChild;\n\n  while (node !== null) {\n    if (node.tag === SuspenseComponent) {\n      var state = node.memoizedState;\n\n      if (state !== null) {\n        scheduleSuspenseWorkOnFiber(node, renderLanes, workInProgress);\n      }\n    } else if (node.tag === SuspenseListComponent) {\n      // If the tail is hidden there might not be an Suspense boundaries\n      // to schedule work on. In this case we have to schedule it on the\n      // list itself.\n      // We don't have to traverse to the children of the list since\n      // the list will propagate the change when it rerenders.\n      scheduleSuspenseWorkOnFiber(node, renderLanes, workInProgress);\n    } else if (node.child !== null) {\n      node.child.return = node;\n      node = node.child;\n      continue;\n    }\n\n    if (node === workInProgress) {\n      return;\n    }\n\n    while (node.sibling === null) {\n      if (node.return === null || node.return === workInProgress) {\n        return;\n      }\n\n      node = node.return;\n    }\n\n    node.sibling.return = node.return;\n    node = node.sibling;\n  }\n}\n\nfunction findLastContentRow(firstChild) {\n  // This is going to find the last row among these children that is already\n  // showing content on the screen, as opposed to being in fallback state or\n  // new. If a row has multiple Suspense boundaries, any of them being in the\n  // fallback state, counts as the whole row being in a fallback state.\n  // Note that the \"rows\" will be workInProgress, but any nested children\n  // will still be current since we haven't rendered them yet. The mounted\n  // order may not be the same as the new order. We use the new order.\n  var row = firstChild;\n  var lastContentRow = null;\n\n  while (row !== null) {\n    var currentRow = row.alternate; // New rows can't be content rows.\n\n    if (currentRow !== null && findFirstSuspended(currentRow) === null) {\n      lastContentRow = row;\n    }\n\n    row = row.sibling;\n  }\n\n  return lastContentRow;\n}\n\nfunction validateRevealOrder(revealOrder) {\n  {\n    if (revealOrder !== undefined && revealOrder !== 'forwards' && revealOrder !== 'backwards' && revealOrder !== 'together' && !didWarnAboutRevealOrder[revealOrder]) {\n      didWarnAboutRevealOrder[revealOrder] = true;\n\n      if (typeof revealOrder === 'string') {\n        switch (revealOrder.toLowerCase()) {\n          case 'together':\n          case 'forwards':\n          case 'backwards':\n            {\n              error('\"%s\" is not a valid value for revealOrder on <SuspenseList />. ' + 'Use lowercase \"%s\" instead.', revealOrder, revealOrder.toLowerCase());\n\n              break;\n            }\n\n          case 'forward':\n          case 'backward':\n            {\n              error('\"%s\" is not a valid value for revealOrder on <SuspenseList />. ' + 'React uses the -s suffix in the spelling. Use \"%ss\" instead.', revealOrder, revealOrder.toLowerCase());\n\n              break;\n            }\n\n          default:\n            error('\"%s\" is not a supported revealOrder on <SuspenseList />. ' + 'Did you mean \"together\", \"forwards\" or \"backwards\"?', revealOrder);\n\n            break;\n        }\n      } else {\n        error('%s is not a supported value for revealOrder on <SuspenseList />. ' + 'Did you mean \"together\", \"forwards\" or \"backwards\"?', revealOrder);\n      }\n    }\n  }\n}\n\nfunction validateTailOptions(tailMode, revealOrder) {\n  {\n    if (tailMode !== undefined && !didWarnAboutTailOptions[tailMode]) {\n      if (tailMode !== 'collapsed' && tailMode !== 'hidden') {\n        didWarnAboutTailOptions[tailMode] = true;\n\n        error('\"%s\" is not a supported value for tail on <SuspenseList />. ' + 'Did you mean \"collapsed\" or \"hidden\"?', tailMode);\n      } else if (revealOrder !== 'forwards' && revealOrder !== 'backwards') {\n        didWarnAboutTailOptions[tailMode] = true;\n\n        error('<SuspenseList tail=\"%s\" /> is only valid if revealOrder is ' + '\"forwards\" or \"backwards\". ' + 'Did you mean to specify revealOrder=\"forwards\"?', tailMode);\n      }\n    }\n  }\n}\n\nfunction validateSuspenseListNestedChild(childSlot, index) {\n  {\n    var isAnArray = isArray(childSlot);\n    var isIterable = !isAnArray && typeof getIteratorFn(childSlot) === 'function';\n\n    if (isAnArray || isIterable) {\n      var type = isAnArray ? 'array' : 'iterable';\n\n      error('A nested %s was passed to row #%s in <SuspenseList />. Wrap it in ' + 'an additional SuspenseList to configure its revealOrder: ' + '<SuspenseList revealOrder=...> ... ' + '<SuspenseList revealOrder=...>{%s}</SuspenseList> ... ' + '</SuspenseList>', type, index, type);\n\n      return false;\n    }\n  }\n\n  return true;\n}\n\nfunction validateSuspenseListChildren(children, revealOrder) {\n  {\n    if ((revealOrder === 'forwards' || revealOrder === 'backwards') && children !== undefined && children !== null && children !== false) {\n      if (isArray(children)) {\n        for (var i = 0; i < children.length; i++) {\n          if (!validateSuspenseListNestedChild(children[i], i)) {\n            return;\n          }\n        }\n      } else {\n        var iteratorFn = getIteratorFn(children);\n\n        if (typeof iteratorFn === 'function') {\n          var childrenIterator = iteratorFn.call(children);\n\n          if (childrenIterator) {\n            var step = childrenIterator.next();\n            var _i = 0;\n\n            for (; !step.done; step = childrenIterator.next()) {\n              if (!validateSuspenseListNestedChild(step.value, _i)) {\n                return;\n              }\n\n              _i++;\n            }\n          }\n        } else {\n          error('A single row was passed to a <SuspenseList revealOrder=\"%s\" />. ' + 'This is not useful since it needs multiple rows. ' + 'Did you mean to pass multiple children or an array?', revealOrder);\n        }\n      }\n    }\n  }\n}\n\nfunction initSuspenseListRenderState(workInProgress, isBackwards, tail, lastContentRow, tailMode) {\n  var renderState = workInProgress.memoizedState;\n\n  if (renderState === null) {\n    workInProgress.memoizedState = {\n      isBackwards: isBackwards,\n      rendering: null,\n      renderingStartTime: 0,\n      last: lastContentRow,\n      tail: tail,\n      tailMode: tailMode\n    };\n  } else {\n    // We can reuse the existing object from previous renders.\n    renderState.isBackwards = isBackwards;\n    renderState.rendering = null;\n    renderState.renderingStartTime = 0;\n    renderState.last = lastContentRow;\n    renderState.tail = tail;\n    renderState.tailMode = tailMode;\n  }\n} // This can end up rendering this component multiple passes.\n// The first pass splits the children fibers into two sets. A head and tail.\n// We first render the head. If anything is in fallback state, we do another\n// pass through beginWork to rerender all children (including the tail) with\n// the force suspend context. If the first render didn't have anything in\n// in fallback state. Then we render each row in the tail one-by-one.\n// That happens in the completeWork phase without going back to beginWork.\n\n\nfunction updateSuspenseListComponent(current, workInProgress, renderLanes) {\n  var nextProps = workInProgress.pendingProps;\n  var revealOrder = nextProps.revealOrder;\n  var tailMode = nextProps.tail;\n  var newChildren = nextProps.children;\n  validateRevealOrder(revealOrder);\n  validateTailOptions(tailMode, revealOrder);\n  validateSuspenseListChildren(newChildren, revealOrder);\n  reconcileChildren(current, workInProgress, newChildren, renderLanes);\n  var suspenseContext = suspenseStackCursor.current;\n  var shouldForceFallback = hasSuspenseContext(suspenseContext, ForceSuspenseFallback);\n\n  if (shouldForceFallback) {\n    suspenseContext = setShallowSuspenseContext(suspenseContext, ForceSuspenseFallback);\n    workInProgress.flags |= DidCapture;\n  } else {\n    var didSuspendBefore = current !== null && (current.flags & DidCapture) !== NoFlags;\n\n    if (didSuspendBefore) {\n      // If we previously forced a fallback, we need to schedule work\n      // on any nested boundaries to let them know to try to render\n      // again. This is the same as context updating.\n      propagateSuspenseContextChange(workInProgress, workInProgress.child, renderLanes);\n    }\n\n    suspenseContext = setDefaultShallowSuspenseContext(suspenseContext);\n  }\n\n  pushSuspenseContext(workInProgress, suspenseContext);\n\n  if ((workInProgress.mode & ConcurrentMode) === NoMode) {\n    // In legacy mode, SuspenseList doesn't work so we just\n    // use make it a noop by treating it as the default revealOrder.\n    workInProgress.memoizedState = null;\n  } else {\n    switch (revealOrder) {\n      case 'forwards':\n        {\n          var lastContentRow = findLastContentRow(workInProgress.child);\n          var tail;\n\n          if (lastContentRow === null) {\n            // The whole list is part of the tail.\n            // TODO: We could fast path by just rendering the tail now.\n            tail = workInProgress.child;\n            workInProgress.child = null;\n          } else {\n            // Disconnect the tail rows after the content row.\n            // We're going to render them separately later.\n            tail = lastContentRow.sibling;\n            lastContentRow.sibling = null;\n          }\n\n          initSuspenseListRenderState(workInProgress, false, // isBackwards\n          tail, lastContentRow, tailMode);\n          break;\n        }\n\n      case 'backwards':\n        {\n          // We're going to find the first row that has existing content.\n          // At the same time we're going to reverse the list of everything\n          // we pass in the meantime. That's going to be our tail in reverse\n          // order.\n          var _tail = null;\n          var row = workInProgress.child;\n          workInProgress.child = null;\n\n          while (row !== null) {\n            var currentRow = row.alternate; // New rows can't be content rows.\n\n            if (currentRow !== null && findFirstSuspended(currentRow) === null) {\n              // This is the beginning of the main content.\n              workInProgress.child = row;\n              break;\n            }\n\n            var nextRow = row.sibling;\n            row.sibling = _tail;\n            _tail = row;\n            row = nextRow;\n          } // TODO: If workInProgress.child is null, we can continue on the tail immediately.\n\n\n          initSuspenseListRenderState(workInProgress, true, // isBackwards\n          _tail, null, // last\n          tailMode);\n          break;\n        }\n\n      case 'together':\n        {\n          initSuspenseListRenderState(workInProgress, false, // isBackwards\n          null, // tail\n          null, // last\n          undefined);\n          break;\n        }\n\n      default:\n        {\n          // The default reveal order is the same as not having\n          // a boundary.\n          workInProgress.memoizedState = null;\n        }\n    }\n  }\n\n  return workInProgress.child;\n}\n\nfunction updatePortalComponent(current, workInProgress, renderLanes) {\n  pushHostContainer(workInProgress, workInProgress.stateNode.containerInfo);\n  var nextChildren = workInProgress.pendingProps;\n\n  if (current === null) {\n    // Portals are special because we don't append the children during mount\n    // but at commit. Therefore we need to track insertions which the normal\n    // flow doesn't do during mount. This doesn't happen at the root because\n    // the root always starts with a \"current\" with a null child.\n    // TODO: Consider unifying this with how the root works.\n    workInProgress.child = reconcileChildFibers(workInProgress, null, nextChildren, renderLanes);\n  } else {\n    reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n  }\n\n  return workInProgress.child;\n}\n\nvar hasWarnedAboutUsingNoValuePropOnContextProvider = false;\n\nfunction updateContextProvider(current, workInProgress, renderLanes) {\n  var providerType = workInProgress.type;\n  var context = providerType._context;\n  var newProps = workInProgress.pendingProps;\n  var oldProps = workInProgress.memoizedProps;\n  var newValue = newProps.value;\n\n  {\n    if (!('value' in newProps)) {\n      if (!hasWarnedAboutUsingNoValuePropOnContextProvider) {\n        hasWarnedAboutUsingNoValuePropOnContextProvider = true;\n\n        error('The `value` prop is required for the `<Context.Provider>`. Did you misspell it or forget to pass it?');\n      }\n    }\n\n    var providerPropTypes = workInProgress.type.propTypes;\n\n    if (providerPropTypes) {\n      checkPropTypes(providerPropTypes, newProps, 'prop', 'Context.Provider');\n    }\n  }\n\n  pushProvider(workInProgress, context, newValue);\n\n  {\n    if (oldProps !== null) {\n      var oldValue = oldProps.value;\n\n      if (objectIs(oldValue, newValue)) {\n        // No change. Bailout early if children are the same.\n        if (oldProps.children === newProps.children && !hasContextChanged()) {\n          return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n        }\n      } else {\n        // The context value changed. Search for matching consumers and schedule\n        // them to update.\n        propagateContextChange(workInProgress, context, renderLanes);\n      }\n    }\n  }\n\n  var newChildren = newProps.children;\n  reconcileChildren(current, workInProgress, newChildren, renderLanes);\n  return workInProgress.child;\n}\n\nvar hasWarnedAboutUsingContextAsConsumer = false;\n\nfunction updateContextConsumer(current, workInProgress, renderLanes) {\n  var context = workInProgress.type; // The logic below for Context differs depending on PROD or DEV mode. In\n  // DEV mode, we create a separate object for Context.Consumer that acts\n  // like a proxy to Context. This proxy object adds unnecessary code in PROD\n  // so we use the old behaviour (Context.Consumer references Context) to\n  // reduce size and overhead. The separate object references context via\n  // a property called \"_context\", which also gives us the ability to check\n  // in DEV mode if this property exists or not and warn if it does not.\n\n  {\n    if (context._context === undefined) {\n      // This may be because it's a Context (rather than a Consumer).\n      // Or it may be because it's older React where they're the same thing.\n      // We only want to warn if we're sure it's a new React.\n      if (context !== context.Consumer) {\n        if (!hasWarnedAboutUsingContextAsConsumer) {\n          hasWarnedAboutUsingContextAsConsumer = true;\n\n          error('Rendering <Context> directly is not supported and will be removed in ' + 'a future major release. Did you mean to render <Context.Consumer> instead?');\n        }\n      }\n    } else {\n      context = context._context;\n    }\n  }\n\n  var newProps = workInProgress.pendingProps;\n  var render = newProps.children;\n\n  {\n    if (typeof render !== 'function') {\n      error('A context consumer was rendered with multiple children, or a child ' + \"that isn't a function. A context consumer expects a single child \" + 'that is a function. If you did pass a function, make sure there ' + 'is no trailing or leading whitespace around it.');\n    }\n  }\n\n  prepareToReadContext(workInProgress, renderLanes);\n  var newValue = readContext(context);\n\n  {\n    markComponentRenderStarted(workInProgress);\n  }\n\n  var newChildren;\n\n  {\n    ReactCurrentOwner$1.current = workInProgress;\n    setIsRendering(true);\n    newChildren = render(newValue);\n    setIsRendering(false);\n  }\n\n  {\n    markComponentRenderStopped();\n  } // React DevTools reads this flag.\n\n\n  workInProgress.flags |= PerformedWork;\n  reconcileChildren(current, workInProgress, newChildren, renderLanes);\n  return workInProgress.child;\n}\n\nfunction markWorkInProgressReceivedUpdate() {\n  didReceiveUpdate = true;\n}\n\nfunction resetSuspendedCurrentOnMountInLegacyMode(current, workInProgress) {\n  if ((workInProgress.mode & ConcurrentMode) === NoMode) {\n    if (current !== null) {\n      // A lazy component only mounts if it suspended inside a non-\n      // concurrent tree, in an inconsistent state. We want to treat it like\n      // a new mount, even though an empty version of it already committed.\n      // Disconnect the alternate pointers.\n      current.alternate = null;\n      workInProgress.alternate = null; // Since this is conceptually a new fiber, schedule a Placement effect\n\n      workInProgress.flags |= Placement;\n    }\n  }\n}\n\nfunction bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes) {\n  if (current !== null) {\n    // Reuse previous dependencies\n    workInProgress.dependencies = current.dependencies;\n  }\n\n  {\n    // Don't update \"base\" render times for bailouts.\n    stopProfilerTimerIfRunning();\n  }\n\n  markSkippedUpdateLanes(workInProgress.lanes); // Check if the children have any pending work.\n\n  if (!includesSomeLane(renderLanes, workInProgress.childLanes)) {\n    // The children don't have any work either. We can skip them.\n    // TODO: Once we add back resuming, we should check if the children are\n    // a work-in-progress set. If so, we need to transfer their effects.\n    {\n      return null;\n    }\n  } // This fiber doesn't have work, but its subtree does. Clone the child\n  // fibers and continue.\n\n\n  cloneChildFibers(current, workInProgress);\n  return workInProgress.child;\n}\n\nfunction remountFiber(current, oldWorkInProgress, newWorkInProgress) {\n  {\n    var returnFiber = oldWorkInProgress.return;\n\n    if (returnFiber === null) {\n      // eslint-disable-next-line react-internal/prod-error-codes\n      throw new Error('Cannot swap the root fiber.');\n    } // Disconnect from the old current.\n    // It will get deleted.\n\n\n    current.alternate = null;\n    oldWorkInProgress.alternate = null; // Connect to the new tree.\n\n    newWorkInProgress.index = oldWorkInProgress.index;\n    newWorkInProgress.sibling = oldWorkInProgress.sibling;\n    newWorkInProgress.return = oldWorkInProgress.return;\n    newWorkInProgress.ref = oldWorkInProgress.ref; // Replace the child/sibling pointers above it.\n\n    if (oldWorkInProgress === returnFiber.child) {\n      returnFiber.child = newWorkInProgress;\n    } else {\n      var prevSibling = returnFiber.child;\n\n      if (prevSibling === null) {\n        // eslint-disable-next-line react-internal/prod-error-codes\n        throw new Error('Expected parent to have a child.');\n      }\n\n      while (prevSibling.sibling !== oldWorkInProgress) {\n        prevSibling = prevSibling.sibling;\n\n        if (prevSibling === null) {\n          // eslint-disable-next-line react-internal/prod-error-codes\n          throw new Error('Expected to find the previous sibling.');\n        }\n      }\n\n      prevSibling.sibling = newWorkInProgress;\n    } // Delete the old fiber and place the new one.\n    // Since the old fiber is disconnected, we have to schedule it manually.\n\n\n    var deletions = returnFiber.deletions;\n\n    if (deletions === null) {\n      returnFiber.deletions = [current];\n      returnFiber.flags |= ChildDeletion;\n    } else {\n      deletions.push(current);\n    }\n\n    newWorkInProgress.flags |= Placement; // Restart work from the new fiber.\n\n    return newWorkInProgress;\n  }\n}\n\nfunction checkScheduledUpdateOrContext(current, renderLanes) {\n  // Before performing an early bailout, we must check if there are pending\n  // updates or context.\n  var updateLanes = current.lanes;\n\n  if (includesSomeLane(updateLanes, renderLanes)) {\n    return true;\n  } // No pending update, but because context is propagated lazily, we need\n\n  return false;\n}\n\nfunction attemptEarlyBailoutIfNoScheduledUpdate(current, workInProgress, renderLanes) {\n  // This fiber does not have any pending work. Bailout without entering\n  // the begin phase. There's still some bookkeeping we that needs to be done\n  // in this optimized path, mostly pushing stuff onto the stack.\n  switch (workInProgress.tag) {\n    case HostRoot:\n      pushHostRootContext(workInProgress);\n      var root = workInProgress.stateNode;\n\n      resetHydrationState();\n      break;\n\n    case HostComponent:\n      pushHostContext(workInProgress);\n      break;\n\n    case ClassComponent:\n      {\n        var Component = workInProgress.type;\n\n        if (isContextProvider(Component)) {\n          pushContextProvider(workInProgress);\n        }\n\n        break;\n      }\n\n    case HostPortal:\n      pushHostContainer(workInProgress, workInProgress.stateNode.containerInfo);\n      break;\n\n    case ContextProvider:\n      {\n        var newValue = workInProgress.memoizedProps.value;\n        var context = workInProgress.type._context;\n        pushProvider(workInProgress, context, newValue);\n        break;\n      }\n\n    case Profiler:\n      {\n        // Profiler should only call onRender when one of its descendants actually rendered.\n        var hasChildWork = includesSomeLane(renderLanes, workInProgress.childLanes);\n\n        if (hasChildWork) {\n          workInProgress.flags |= Update;\n        }\n\n        {\n          // Reset effect durations for the next eventual effect phase.\n          // These are reset during render to allow the DevTools commit hook a chance to read them,\n          var stateNode = workInProgress.stateNode;\n          stateNode.effectDuration = 0;\n          stateNode.passiveEffectDuration = 0;\n        }\n      }\n\n      break;\n\n    case SuspenseComponent:\n      {\n        var state = workInProgress.memoizedState;\n\n        if (state !== null) {\n          if (state.dehydrated !== null) {\n            pushSuspenseContext(workInProgress, setDefaultShallowSuspenseContext(suspenseStackCursor.current)); // We know that this component will suspend again because if it has\n            // been unsuspended it has committed as a resolved Suspense component.\n            // If it needs to be retried, it should have work scheduled on it.\n\n            workInProgress.flags |= DidCapture; // We should never render the children of a dehydrated boundary until we\n            // upgrade it. We return null instead of bailoutOnAlreadyFinishedWork.\n\n            return null;\n          } // If this boundary is currently timed out, we need to decide\n          // whether to retry the primary children, or to skip over it and\n          // go straight to the fallback. Check the priority of the primary\n          // child fragment.\n\n\n          var primaryChildFragment = workInProgress.child;\n          var primaryChildLanes = primaryChildFragment.childLanes;\n\n          if (includesSomeLane(renderLanes, primaryChildLanes)) {\n            // The primary children have pending work. Use the normal path\n            // to attempt to render the primary children again.\n            return updateSuspenseComponent(current, workInProgress, renderLanes);\n          } else {\n            // The primary child fragment does not have pending work marked\n            // on it\n            pushSuspenseContext(workInProgress, setDefaultShallowSuspenseContext(suspenseStackCursor.current)); // The primary children do not have pending work with sufficient\n            // priority. Bailout.\n\n            var child = bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n\n            if (child !== null) {\n              // The fallback children have pending work. Skip over the\n              // primary children and work on the fallback.\n              return child.sibling;\n            } else {\n              // Note: We can return `null` here because we already checked\n              // whether there were nested context consumers, via the call to\n              // `bailoutOnAlreadyFinishedWork` above.\n              return null;\n            }\n          }\n        } else {\n          pushSuspenseContext(workInProgress, setDefaultShallowSuspenseContext(suspenseStackCursor.current));\n        }\n\n        break;\n      }\n\n    case SuspenseListComponent:\n      {\n        var didSuspendBefore = (current.flags & DidCapture) !== NoFlags;\n\n        var _hasChildWork = includesSomeLane(renderLanes, workInProgress.childLanes);\n\n        if (didSuspendBefore) {\n          if (_hasChildWork) {\n            // If something was in fallback state last time, and we have all the\n            // same children then we're still in progressive loading state.\n            // Something might get unblocked by state updates or retries in the\n            // tree which will affect the tail. So we need to use the normal\n            // path to compute the correct tail.\n            return updateSuspenseListComponent(current, workInProgress, renderLanes);\n          } // If none of the children had any work, that means that none of\n          // them got retried so they'll still be blocked in the same way\n          // as before. We can fast bail out.\n\n\n          workInProgress.flags |= DidCapture;\n        } // If nothing suspended before and we're rendering the same children,\n        // then the tail doesn't matter. Anything new that suspends will work\n        // in the \"together\" mode, so we can continue from the state we had.\n\n\n        var renderState = workInProgress.memoizedState;\n\n        if (renderState !== null) {\n          // Reset to the \"together\" mode in case we've started a different\n          // update in the past but didn't complete it.\n          renderState.rendering = null;\n          renderState.tail = null;\n          renderState.lastEffect = null;\n        }\n\n        pushSuspenseContext(workInProgress, suspenseStackCursor.current);\n\n        if (_hasChildWork) {\n          break;\n        } else {\n          // If none of the children had any work, that means that none of\n          // them got retried so they'll still be blocked in the same way\n          // as before. We can fast bail out.\n          return null;\n        }\n      }\n\n    case OffscreenComponent:\n    case LegacyHiddenComponent:\n      {\n        // Need to check if the tree still needs to be deferred. This is\n        // almost identical to the logic used in the normal update path,\n        // so we'll just enter that. The only difference is we'll bail out\n        // at the next level instead of this one, because the child props\n        // have not changed. Which is fine.\n        // TODO: Probably should refactor `beginWork` to split the bailout\n        // path from the normal path. I'm tempted to do a labeled break here\n        // but I won't :)\n        workInProgress.lanes = NoLanes;\n        return updateOffscreenComponent(current, workInProgress, renderLanes);\n      }\n  }\n\n  return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n}\n\nfunction beginWork(current, workInProgress, renderLanes) {\n  {\n    if (workInProgress._debugNeedsRemount && current !== null) {\n      // This will restart the begin phase with a new fiber.\n      return remountFiber(current, workInProgress, createFiberFromTypeAndProps(workInProgress.type, workInProgress.key, workInProgress.pendingProps, workInProgress._debugOwner || null, workInProgress.mode, workInProgress.lanes));\n    }\n  }\n\n  if (current !== null) {\n    var oldProps = current.memoizedProps;\n    var newProps = workInProgress.pendingProps;\n\n    if (oldProps !== newProps || hasContextChanged() || ( // Force a re-render if the implementation changed due to hot reload:\n     workInProgress.type !== current.type )) {\n      // If props or context changed, mark the fiber as having performed work.\n      // This may be unset if the props are determined to be equal later (memo).\n      didReceiveUpdate = true;\n    } else {\n      // Neither props nor legacy context changes. Check if there's a pending\n      // update or context change.\n      var hasScheduledUpdateOrContext = checkScheduledUpdateOrContext(current, renderLanes);\n\n      if (!hasScheduledUpdateOrContext && // If this is the second pass of an error or suspense boundary, there\n      // may not be work scheduled on `current`, so we check for this flag.\n      (workInProgress.flags & DidCapture) === NoFlags) {\n        // No pending updates or context. Bail out now.\n        didReceiveUpdate = false;\n        return attemptEarlyBailoutIfNoScheduledUpdate(current, workInProgress, renderLanes);\n      }\n\n      if ((current.flags & ForceUpdateForLegacySuspense) !== NoFlags) {\n        // This is a special case that only exists for legacy mode.\n        // See https://github.com/facebook/react/pull/19216.\n        didReceiveUpdate = true;\n      } else {\n        // An update was scheduled on this fiber, but there are no new props\n        // nor legacy context. Set this to false. If an update queue or context\n        // consumer produces a changed value, it will set this to true. Otherwise,\n        // the component will assume the children have not changed and bail out.\n        didReceiveUpdate = false;\n      }\n    }\n  } else {\n    didReceiveUpdate = false;\n\n    if (getIsHydrating() && isForkedChild(workInProgress)) {\n      // Check if this child belongs to a list of muliple children in\n      // its parent.\n      //\n      // In a true multi-threaded implementation, we would render children on\n      // parallel threads. This would represent the beginning of a new render\n      // thread for this subtree.\n      //\n      // We only use this for id generation during hydration, which is why the\n      // logic is located in this special branch.\n      var slotIndex = workInProgress.index;\n      var numberOfForks = getForksAtLevel();\n      pushTreeId(workInProgress, numberOfForks, slotIndex);\n    }\n  } // Before entering the begin phase, clear pending update priority.\n  // TODO: This assumes that we're about to evaluate the component and process\n  // the update queue. However, there's an exception: SimpleMemoComponent\n  // sometimes bails out later in the begin phase. This indicates that we should\n  // move this assignment out of the common path and into each branch.\n\n\n  workInProgress.lanes = NoLanes;\n\n  switch (workInProgress.tag) {\n    case IndeterminateComponent:\n      {\n        return mountIndeterminateComponent(current, workInProgress, workInProgress.type, renderLanes);\n      }\n\n    case LazyComponent:\n      {\n        var elementType = workInProgress.elementType;\n        return mountLazyComponent(current, workInProgress, elementType, renderLanes);\n      }\n\n    case FunctionComponent:\n      {\n        var Component = workInProgress.type;\n        var unresolvedProps = workInProgress.pendingProps;\n        var resolvedProps = workInProgress.elementType === Component ? unresolvedProps : resolveDefaultProps(Component, unresolvedProps);\n        return updateFunctionComponent(current, workInProgress, Component, resolvedProps, renderLanes);\n      }\n\n    case ClassComponent:\n      {\n        var _Component = workInProgress.type;\n        var _unresolvedProps = workInProgress.pendingProps;\n\n        var _resolvedProps = workInProgress.elementType === _Component ? _unresolvedProps : resolveDefaultProps(_Component, _unresolvedProps);\n\n        return updateClassComponent(current, workInProgress, _Component, _resolvedProps, renderLanes);\n      }\n\n    case HostRoot:\n      return updateHostRoot(current, workInProgress, renderLanes);\n\n    case HostComponent:\n      return updateHostComponent(current, workInProgress, renderLanes);\n\n    case HostText:\n      return updateHostText(current, workInProgress);\n\n    case SuspenseComponent:\n      return updateSuspenseComponent(current, workInProgress, renderLanes);\n\n    case HostPortal:\n      return updatePortalComponent(current, workInProgress, renderLanes);\n\n    case ForwardRef:\n      {\n        var type = workInProgress.type;\n        var _unresolvedProps2 = workInProgress.pendingProps;\n\n        var _resolvedProps2 = workInProgress.elementType === type ? _unresolvedProps2 : resolveDefaultProps(type, _unresolvedProps2);\n\n        return updateForwardRef(current, workInProgress, type, _resolvedProps2, renderLanes);\n      }\n\n    case Fragment:\n      return updateFragment(current, workInProgress, renderLanes);\n\n    case Mode:\n      return updateMode(current, workInProgress, renderLanes);\n\n    case Profiler:\n      return updateProfiler(current, workInProgress, renderLanes);\n\n    case ContextProvider:\n      return updateContextProvider(current, workInProgress, renderLanes);\n\n    case ContextConsumer:\n      return updateContextConsumer(current, workInProgress, renderLanes);\n\n    case MemoComponent:\n      {\n        var _type2 = workInProgress.type;\n        var _unresolvedProps3 = workInProgress.pendingProps; // Resolve outer props first, then resolve inner props.\n\n        var _resolvedProps3 = resolveDefaultProps(_type2, _unresolvedProps3);\n\n        {\n          if (workInProgress.type !== workInProgress.elementType) {\n            var outerPropTypes = _type2.propTypes;\n\n            if (outerPropTypes) {\n              checkPropTypes(outerPropTypes, _resolvedProps3, // Resolved for outer only\n              'prop', getComponentNameFromType(_type2));\n            }\n          }\n        }\n\n        _resolvedProps3 = resolveDefaultProps(_type2.type, _resolvedProps3);\n        return updateMemoComponent(current, workInProgress, _type2, _resolvedProps3, renderLanes);\n      }\n\n    case SimpleMemoComponent:\n      {\n        return updateSimpleMemoComponent(current, workInProgress, workInProgress.type, workInProgress.pendingProps, renderLanes);\n      }\n\n    case IncompleteClassComponent:\n      {\n        var _Component2 = workInProgress.type;\n        var _unresolvedProps4 = workInProgress.pendingProps;\n\n        var _resolvedProps4 = workInProgress.elementType === _Component2 ? _unresolvedProps4 : resolveDefaultProps(_Component2, _unresolvedProps4);\n\n        return mountIncompleteClassComponent(current, workInProgress, _Component2, _resolvedProps4, renderLanes);\n      }\n\n    case SuspenseListComponent:\n      {\n        return updateSuspenseListComponent(current, workInProgress, renderLanes);\n      }\n\n    case ScopeComponent:\n      {\n\n        break;\n      }\n\n    case OffscreenComponent:\n      {\n        return updateOffscreenComponent(current, workInProgress, renderLanes);\n      }\n  }\n\n  throw new Error(\"Unknown unit of work tag (\" + workInProgress.tag + \"). This error is likely caused by a bug in \" + 'React. Please file an issue.');\n}\n\nfunction markUpdate(workInProgress) {\n  // Tag the fiber with an update effect. This turns a Placement into\n  // a PlacementAndUpdate.\n  workInProgress.flags |= Update;\n}\n\nfunction markRef$1(workInProgress) {\n  workInProgress.flags |= Ref;\n\n  {\n    workInProgress.flags |= RefStatic;\n  }\n}\n\nvar appendAllChildren;\nvar updateHostContainer;\nvar updateHostComponent$1;\nvar updateHostText$1;\n\n{\n  // Mutation mode\n  appendAllChildren = function (parent, workInProgress, needsVisibilityToggle, isHidden) {\n    // We only have the top Fiber that was created but we need recurse down its\n    // children to find all the terminal nodes.\n    var node = workInProgress.child;\n\n    while (node !== null) {\n      if (node.tag === HostComponent || node.tag === HostText) {\n        appendInitialChild(parent, node.stateNode);\n      } else if (node.tag === HostPortal) ; else if (node.child !== null) {\n        node.child.return = node;\n        node = node.child;\n        continue;\n      }\n\n      if (node === workInProgress) {\n        return;\n      }\n\n      while (node.sibling === null) {\n        if (node.return === null || node.return === workInProgress) {\n          return;\n        }\n\n        node = node.return;\n      }\n\n      node.sibling.return = node.return;\n      node = node.sibling;\n    }\n  };\n\n  updateHostContainer = function (current, workInProgress) {// Noop\n  };\n\n  updateHostComponent$1 = function (current, workInProgress, type, newProps, rootContainerInstance) {\n    // If we have an alternate, that means this is an update and we need to\n    // schedule a side-effect to do the updates.\n    var oldProps = current.memoizedProps;\n\n    if (oldProps === newProps) {\n      // In mutation mode, this is sufficient for a bailout because\n      // we won't touch this node even if children changed.\n      return;\n    } // If we get updated because one of our children updated, we don't\n    // have newProps so we'll have to reuse them.\n    // TODO: Split the update API as separate for the props vs. children.\n    // Even better would be if children weren't special cased at all tho.\n\n\n    var instance = workInProgress.stateNode;\n    var currentHostContext = getHostContext(); // TODO: Experiencing an error where oldProps is null. Suggests a host\n    // component is hitting the resume path. Figure out why. Possibly\n    // related to `hidden`.\n\n    var updatePayload = prepareUpdate(instance, type, oldProps, newProps, rootContainerInstance, currentHostContext); // TODO: Type this specific to this type of component.\n\n    workInProgress.updateQueue = updatePayload; // If the update payload indicates that there is a change or if there\n    // is a new ref we mark this as an update. All the work is done in commitWork.\n\n    if (updatePayload) {\n      markUpdate(workInProgress);\n    }\n  };\n\n  updateHostText$1 = function (current, workInProgress, oldText, newText) {\n    // If the text differs, mark it as an update. All the work in done in commitWork.\n    if (oldText !== newText) {\n      markUpdate(workInProgress);\n    }\n  };\n}\n\nfunction cutOffTailIfNeeded(renderState, hasRenderedATailFallback) {\n  if (getIsHydrating()) {\n    // If we're hydrating, we should consume as many items as we can\n    // so we don't leave any behind.\n    return;\n  }\n\n  switch (renderState.tailMode) {\n    case 'hidden':\n      {\n        // Any insertions at the end of the tail list after this point\n        // should be invisible. If there are already mounted boundaries\n        // anything before them are not considered for collapsing.\n        // Therefore we need to go through the whole tail to find if\n        // there are any.\n        var tailNode = renderState.tail;\n        var lastTailNode = null;\n\n        while (tailNode !== null) {\n          if (tailNode.alternate !== null) {\n            lastTailNode = tailNode;\n          }\n\n          tailNode = tailNode.sibling;\n        } // Next we're simply going to delete all insertions after the\n        // last rendered item.\n\n\n        if (lastTailNode === null) {\n          // All remaining items in the tail are insertions.\n          renderState.tail = null;\n        } else {\n          // Detach the insertion after the last node that was already\n          // inserted.\n          lastTailNode.sibling = null;\n        }\n\n        break;\n      }\n\n    case 'collapsed':\n      {\n        // Any insertions at the end of the tail list after this point\n        // should be invisible. If there are already mounted boundaries\n        // anything before them are not considered for collapsing.\n        // Therefore we need to go through the whole tail to find if\n        // there are any.\n        var _tailNode = renderState.tail;\n        var _lastTailNode = null;\n\n        while (_tailNode !== null) {\n          if (_tailNode.alternate !== null) {\n            _lastTailNode = _tailNode;\n          }\n\n          _tailNode = _tailNode.sibling;\n        } // Next we're simply going to delete all insertions after the\n        // last rendered item.\n\n\n        if (_lastTailNode === null) {\n          // All remaining items in the tail are insertions.\n          if (!hasRenderedATailFallback && renderState.tail !== null) {\n            // We suspended during the head. We want to show at least one\n            // row at the tail. So we'll keep on and cut off the rest.\n            renderState.tail.sibling = null;\n          } else {\n            renderState.tail = null;\n          }\n        } else {\n          // Detach the insertion after the last node that was already\n          // inserted.\n          _lastTailNode.sibling = null;\n        }\n\n        break;\n      }\n  }\n}\n\nfunction bubbleProperties(completedWork) {\n  var didBailout = completedWork.alternate !== null && completedWork.alternate.child === completedWork.child;\n  var newChildLanes = NoLanes;\n  var subtreeFlags = NoFlags;\n\n  if (!didBailout) {\n    // Bubble up the earliest expiration time.\n    if ( (completedWork.mode & ProfileMode) !== NoMode) {\n      // In profiling mode, resetChildExpirationTime is also used to reset\n      // profiler durations.\n      var actualDuration = completedWork.actualDuration;\n      var treeBaseDuration = completedWork.selfBaseDuration;\n      var child = completedWork.child;\n\n      while (child !== null) {\n        newChildLanes = mergeLanes(newChildLanes, mergeLanes(child.lanes, child.childLanes));\n        subtreeFlags |= child.subtreeFlags;\n        subtreeFlags |= child.flags; // When a fiber is cloned, its actualDuration is reset to 0. This value will\n        // only be updated if work is done on the fiber (i.e. it doesn't bailout).\n        // When work is done, it should bubble to the parent's actualDuration. If\n        // the fiber has not been cloned though, (meaning no work was done), then\n        // this value will reflect the amount of time spent working on a previous\n        // render. In that case it should not bubble. We determine whether it was\n        // cloned by comparing the child pointer.\n\n        actualDuration += child.actualDuration;\n        treeBaseDuration += child.treeBaseDuration;\n        child = child.sibling;\n      }\n\n      completedWork.actualDuration = actualDuration;\n      completedWork.treeBaseDuration = treeBaseDuration;\n    } else {\n      var _child = completedWork.child;\n\n      while (_child !== null) {\n        newChildLanes = mergeLanes(newChildLanes, mergeLanes(_child.lanes, _child.childLanes));\n        subtreeFlags |= _child.subtreeFlags;\n        subtreeFlags |= _child.flags; // Update the return pointer so the tree is consistent. This is a code\n        // smell because it assumes the commit phase is never concurrent with\n        // the render phase. Will address during refactor to alternate model.\n\n        _child.return = completedWork;\n        _child = _child.sibling;\n      }\n    }\n\n    completedWork.subtreeFlags |= subtreeFlags;\n  } else {\n    // Bubble up the earliest expiration time.\n    if ( (completedWork.mode & ProfileMode) !== NoMode) {\n      // In profiling mode, resetChildExpirationTime is also used to reset\n      // profiler durations.\n      var _treeBaseDuration = completedWork.selfBaseDuration;\n      var _child2 = completedWork.child;\n\n      while (_child2 !== null) {\n        newChildLanes = mergeLanes(newChildLanes, mergeLanes(_child2.lanes, _child2.childLanes)); // \"Static\" flags share the lifetime of the fiber/hook they belong to,\n        // so we should bubble those up even during a bailout. All the other\n        // flags have a lifetime only of a single render + commit, so we should\n        // ignore them.\n\n        subtreeFlags |= _child2.subtreeFlags & StaticMask;\n        subtreeFlags |= _child2.flags & StaticMask;\n        _treeBaseDuration += _child2.treeBaseDuration;\n        _child2 = _child2.sibling;\n      }\n\n      completedWork.treeBaseDuration = _treeBaseDuration;\n    } else {\n      var _child3 = completedWork.child;\n\n      while (_child3 !== null) {\n        newChildLanes = mergeLanes(newChildLanes, mergeLanes(_child3.lanes, _child3.childLanes)); // \"Static\" flags share the lifetime of the fiber/hook they belong to,\n        // so we should bubble those up even during a bailout. All the other\n        // flags have a lifetime only of a single render + commit, so we should\n        // ignore them.\n\n        subtreeFlags |= _child3.subtreeFlags & StaticMask;\n        subtreeFlags |= _child3.flags & StaticMask; // Update the return pointer so the tree is consistent. This is a code\n        // smell because it assumes the commit phase is never concurrent with\n        // the render phase. Will address during refactor to alternate model.\n\n        _child3.return = completedWork;\n        _child3 = _child3.sibling;\n      }\n    }\n\n    completedWork.subtreeFlags |= subtreeFlags;\n  }\n\n  completedWork.childLanes = newChildLanes;\n  return didBailout;\n}\n\nfunction completeDehydratedSuspenseBoundary(current, workInProgress, nextState) {\n  if (hasUnhydratedTailNodes() && (workInProgress.mode & ConcurrentMode) !== NoMode && (workInProgress.flags & DidCapture) === NoFlags) {\n    warnIfUnhydratedTailNodes(workInProgress);\n    resetHydrationState();\n    workInProgress.flags |= ForceClientRender | Incomplete | ShouldCapture;\n    return false;\n  }\n\n  var wasHydrated = popHydrationState(workInProgress);\n\n  if (nextState !== null && nextState.dehydrated !== null) {\n    // We might be inside a hydration state the first time we're picking up this\n    // Suspense boundary, and also after we've reentered it for further hydration.\n    if (current === null) {\n      if (!wasHydrated) {\n        throw new Error('A dehydrated suspense component was completed without a hydrated node. ' + 'This is probably a bug in React.');\n      }\n\n      prepareToHydrateHostSuspenseInstance(workInProgress);\n      bubbleProperties(workInProgress);\n\n      {\n        if ((workInProgress.mode & ProfileMode) !== NoMode) {\n          var isTimedOutSuspense = nextState !== null;\n\n          if (isTimedOutSuspense) {\n            // Don't count time spent in a timed out Suspense subtree as part of the base duration.\n            var primaryChildFragment = workInProgress.child;\n\n            if (primaryChildFragment !== null) {\n              // $FlowFixMe Flow doesn't support type casting in combination with the -= operator\n              workInProgress.treeBaseDuration -= primaryChildFragment.treeBaseDuration;\n            }\n          }\n        }\n      }\n\n      return false;\n    } else {\n      // We might have reentered this boundary to hydrate it. If so, we need to reset the hydration\n      // state since we're now exiting out of it. popHydrationState doesn't do that for us.\n      resetHydrationState();\n\n      if ((workInProgress.flags & DidCapture) === NoFlags) {\n        // This boundary did not suspend so it's now hydrated and unsuspended.\n        workInProgress.memoizedState = null;\n      } // If nothing suspended, we need to schedule an effect to mark this boundary\n      // as having hydrated so events know that they're free to be invoked.\n      // It's also a signal to replay events and the suspense callback.\n      // If something suspended, schedule an effect to attach retry listeners.\n      // So we might as well always mark this.\n\n\n      workInProgress.flags |= Update;\n      bubbleProperties(workInProgress);\n\n      {\n        if ((workInProgress.mode & ProfileMode) !== NoMode) {\n          var _isTimedOutSuspense = nextState !== null;\n\n          if (_isTimedOutSuspense) {\n            // Don't count time spent in a timed out Suspense subtree as part of the base duration.\n            var _primaryChildFragment = workInProgress.child;\n\n            if (_primaryChildFragment !== null) {\n              // $FlowFixMe Flow doesn't support type casting in combination with the -= operator\n              workInProgress.treeBaseDuration -= _primaryChildFragment.treeBaseDuration;\n            }\n          }\n        }\n      }\n\n      return false;\n    }\n  } else {\n    // Successfully completed this tree. If this was a forced client render,\n    // there may have been recoverable errors during first hydration\n    // attempt. If so, add them to a queue so we can log them in the\n    // commit phase.\n    upgradeHydrationErrorsToRecoverable(); // Fall through to normal Suspense path\n\n    return true;\n  }\n}\n\nfunction completeWork(current, workInProgress, renderLanes) {\n  var newProps = workInProgress.pendingProps; // Note: This intentionally doesn't check if we're hydrating because comparing\n  // to the current tree provider fiber is just as fast and less error-prone.\n  // Ideally we would have a special version of the work loop only\n  // for hydration.\n\n  popTreeContext(workInProgress);\n\n  switch (workInProgress.tag) {\n    case IndeterminateComponent:\n    case LazyComponent:\n    case SimpleMemoComponent:\n    case FunctionComponent:\n    case ForwardRef:\n    case Fragment:\n    case Mode:\n    case Profiler:\n    case ContextConsumer:\n    case MemoComponent:\n      bubbleProperties(workInProgress);\n      return null;\n\n    case ClassComponent:\n      {\n        var Component = workInProgress.type;\n\n        if (isContextProvider(Component)) {\n          popContext(workInProgress);\n        }\n\n        bubbleProperties(workInProgress);\n        return null;\n      }\n\n    case HostRoot:\n      {\n        var fiberRoot = workInProgress.stateNode;\n        popHostContainer(workInProgress);\n        popTopLevelContextObject(workInProgress);\n        resetWorkInProgressVersions();\n\n        if (fiberRoot.pendingContext) {\n          fiberRoot.context = fiberRoot.pendingContext;\n          fiberRoot.pendingContext = null;\n        }\n\n        if (current === null || current.child === null) {\n          // If we hydrated, pop so that we can delete any remaining children\n          // that weren't hydrated.\n          var wasHydrated = popHydrationState(workInProgress);\n\n          if (wasHydrated) {\n            // If we hydrated, then we'll need to schedule an update for\n            // the commit side-effects on the root.\n            markUpdate(workInProgress);\n          } else {\n            if (current !== null) {\n              var prevState = current.memoizedState;\n\n              if ( // Check if this is a client root\n              !prevState.isDehydrated || // Check if we reverted to client rendering (e.g. due to an error)\n              (workInProgress.flags & ForceClientRender) !== NoFlags) {\n                // Schedule an effect to clear this container at the start of the\n                // next commit. This handles the case of React rendering into a\n                // container with previous children. It's also safe to do for\n                // updates too, because current.child would only be null if the\n                // previous render was null (so the container would already\n                // be empty).\n                workInProgress.flags |= Snapshot; // If this was a forced client render, there may have been\n                // recoverable errors during first hydration attempt. If so, add\n                // them to a queue so we can log them in the commit phase.\n\n                upgradeHydrationErrorsToRecoverable();\n              }\n            }\n          }\n        }\n\n        updateHostContainer(current, workInProgress);\n        bubbleProperties(workInProgress);\n\n        return null;\n      }\n\n    case HostComponent:\n      {\n        popHostContext(workInProgress);\n        var rootContainerInstance = getRootHostContainer();\n        var type = workInProgress.type;\n\n        if (current !== null && workInProgress.stateNode != null) {\n          updateHostComponent$1(current, workInProgress, type, newProps, rootContainerInstance);\n\n          if (current.ref !== workInProgress.ref) {\n            markRef$1(workInProgress);\n          }\n        } else {\n          if (!newProps) {\n            if (workInProgress.stateNode === null) {\n              throw new Error('We must have new props for new mounts. This error is likely ' + 'caused by a bug in React. Please file an issue.');\n            } // This can happen when we abort work.\n\n\n            bubbleProperties(workInProgress);\n            return null;\n          }\n\n          var currentHostContext = getHostContext(); // TODO: Move createInstance to beginWork and keep it on a context\n          // \"stack\" as the parent. Then append children as we go in beginWork\n          // or completeWork depending on whether we want to add them top->down or\n          // bottom->up. Top->down is faster in IE11.\n\n          var _wasHydrated = popHydrationState(workInProgress);\n\n          if (_wasHydrated) {\n            // TODO: Move this and createInstance step into the beginPhase\n            // to consolidate.\n            if (prepareToHydrateHostInstance(workInProgress, rootContainerInstance, currentHostContext)) {\n              // If changes to the hydrated node need to be applied at the\n              // commit-phase we mark this as such.\n              markUpdate(workInProgress);\n            }\n          } else {\n            var instance = createInstance(type, newProps, rootContainerInstance, currentHostContext, workInProgress);\n            appendAllChildren(instance, workInProgress, false, false);\n            workInProgress.stateNode = instance; // Certain renderers require commit-time effects for initial mount.\n            // (eg DOM renderer supports auto-focus for certain elements).\n            // Make sure such renderers get scheduled for later work.\n\n            if (finalizeInitialChildren(instance, type, newProps, rootContainerInstance)) {\n              markUpdate(workInProgress);\n            }\n          }\n\n          if (workInProgress.ref !== null) {\n            // If there is a ref on a host node we need to schedule a callback\n            markRef$1(workInProgress);\n          }\n        }\n\n        bubbleProperties(workInProgress);\n        return null;\n      }\n\n    case HostText:\n      {\n        var newText = newProps;\n\n        if (current && workInProgress.stateNode != null) {\n          var oldText = current.memoizedProps; // If we have an alternate, that means this is an update and we need\n          // to schedule a side-effect to do the updates.\n\n          updateHostText$1(current, workInProgress, oldText, newText);\n        } else {\n          if (typeof newText !== 'string') {\n            if (workInProgress.stateNode === null) {\n              throw new Error('We must have new props for new mounts. This error is likely ' + 'caused by a bug in React. Please file an issue.');\n            } // This can happen when we abort work.\n\n          }\n\n          var _rootContainerInstance = getRootHostContainer();\n\n          var _currentHostContext = getHostContext();\n\n          var _wasHydrated2 = popHydrationState(workInProgress);\n\n          if (_wasHydrated2) {\n            if (prepareToHydrateHostTextInstance(workInProgress)) {\n              markUpdate(workInProgress);\n            }\n          } else {\n            workInProgress.stateNode = createTextInstance(newText, _rootContainerInstance, _currentHostContext, workInProgress);\n          }\n        }\n\n        bubbleProperties(workInProgress);\n        return null;\n      }\n\n    case SuspenseComponent:\n      {\n        popSuspenseContext(workInProgress);\n        var nextState = workInProgress.memoizedState; // Special path for dehydrated boundaries. We may eventually move this\n        // to its own fiber type so that we can add other kinds of hydration\n        // boundaries that aren't associated with a Suspense tree. In anticipation\n        // of such a refactor, all the hydration logic is contained in\n        // this branch.\n\n        if (current === null || current.memoizedState !== null && current.memoizedState.dehydrated !== null) {\n          var fallthroughToNormalSuspensePath = completeDehydratedSuspenseBoundary(current, workInProgress, nextState);\n\n          if (!fallthroughToNormalSuspensePath) {\n            if (workInProgress.flags & ShouldCapture) {\n              // Special case. There were remaining unhydrated nodes. We treat\n              // this as a mismatch. Revert to client rendering.\n              return workInProgress;\n            } else {\n              // Did not finish hydrating, either because this is the initial\n              // render or because something suspended.\n              return null;\n            }\n          } // Continue with the normal Suspense path.\n\n        }\n\n        if ((workInProgress.flags & DidCapture) !== NoFlags) {\n          // Something suspended. Re-render with the fallback children.\n          workInProgress.lanes = renderLanes; // Do not reset the effect list.\n\n          if ( (workInProgress.mode & ProfileMode) !== NoMode) {\n            transferActualDuration(workInProgress);\n          } // Don't bubble properties in this case.\n\n\n          return workInProgress;\n        }\n\n        var nextDidTimeout = nextState !== null;\n        var prevDidTimeout = current !== null && current.memoizedState !== null;\n        // a passive effect, which is when we process the transitions\n\n\n        if (nextDidTimeout !== prevDidTimeout) {\n          // an effect to toggle the subtree's visibility. When we switch from\n          // fallback -> primary, the inner Offscreen fiber schedules this effect\n          // as part of its normal complete phase. But when we switch from\n          // primary -> fallback, the inner Offscreen fiber does not have a complete\n          // phase. So we need to schedule its effect here.\n          //\n          // We also use this flag to connect/disconnect the effects, but the same\n          // logic applies: when re-connecting, the Offscreen fiber's complete\n          // phase will handle scheduling the effect. It's only when the fallback\n          // is active that we have to do anything special.\n\n\n          if (nextDidTimeout) {\n            var _offscreenFiber2 = workInProgress.child;\n            _offscreenFiber2.flags |= Visibility; // TODO: This will still suspend a synchronous tree if anything\n            // in the concurrent tree already suspended during this render.\n            // This is a known bug.\n\n            if ((workInProgress.mode & ConcurrentMode) !== NoMode) {\n              // TODO: Move this back to throwException because this is too late\n              // if this is a large tree which is common for initial loads. We\n              // don't know if we should restart a render or not until we get\n              // this marker, and this is too late.\n              // If this render already had a ping or lower pri updates,\n              // and this is the first time we know we're going to suspend we\n              // should be able to immediately restart from within throwException.\n              var hasInvisibleChildContext = current === null && (workInProgress.memoizedProps.unstable_avoidThisFallback !== true || !enableSuspenseAvoidThisFallback);\n\n              if (hasInvisibleChildContext || hasSuspenseContext(suspenseStackCursor.current, InvisibleParentSuspenseContext)) {\n                // If this was in an invisible tree or a new render, then showing\n                // this boundary is ok.\n                renderDidSuspend();\n              } else {\n                // Otherwise, we're going to have to hide content so we should\n                // suspend for longer if possible.\n                renderDidSuspendDelayIfPossible();\n              }\n            }\n          }\n        }\n\n        var wakeables = workInProgress.updateQueue;\n\n        if (wakeables !== null) {\n          // Schedule an effect to attach a retry listener to the promise.\n          // TODO: Move to passive phase\n          workInProgress.flags |= Update;\n        }\n\n        bubbleProperties(workInProgress);\n\n        {\n          if ((workInProgress.mode & ProfileMode) !== NoMode) {\n            if (nextDidTimeout) {\n              // Don't count time spent in a timed out Suspense subtree as part of the base duration.\n              var primaryChildFragment = workInProgress.child;\n\n              if (primaryChildFragment !== null) {\n                // $FlowFixMe Flow doesn't support type casting in combination with the -= operator\n                workInProgress.treeBaseDuration -= primaryChildFragment.treeBaseDuration;\n              }\n            }\n          }\n        }\n\n        return null;\n      }\n\n    case HostPortal:\n      popHostContainer(workInProgress);\n      updateHostContainer(current, workInProgress);\n\n      if (current === null) {\n        preparePortalMount(workInProgress.stateNode.containerInfo);\n      }\n\n      bubbleProperties(workInProgress);\n      return null;\n\n    case ContextProvider:\n      // Pop provider fiber\n      var context = workInProgress.type._context;\n      popProvider(context, workInProgress);\n      bubbleProperties(workInProgress);\n      return null;\n\n    case IncompleteClassComponent:\n      {\n        // Same as class component case. I put it down here so that the tags are\n        // sequential to ensure this switch is compiled to a jump table.\n        var _Component = workInProgress.type;\n\n        if (isContextProvider(_Component)) {\n          popContext(workInProgress);\n        }\n\n        bubbleProperties(workInProgress);\n        return null;\n      }\n\n    case SuspenseListComponent:\n      {\n        popSuspenseContext(workInProgress);\n        var renderState = workInProgress.memoizedState;\n\n        if (renderState === null) {\n          // We're running in the default, \"independent\" mode.\n          // We don't do anything in this mode.\n          bubbleProperties(workInProgress);\n          return null;\n        }\n\n        var didSuspendAlready = (workInProgress.flags & DidCapture) !== NoFlags;\n        var renderedTail = renderState.rendering;\n\n        if (renderedTail === null) {\n          // We just rendered the head.\n          if (!didSuspendAlready) {\n            // This is the first pass. We need to figure out if anything is still\n            // suspended in the rendered set.\n            // If new content unsuspended, but there's still some content that\n            // didn't. Then we need to do a second pass that forces everything\n            // to keep showing their fallbacks.\n            // We might be suspended if something in this render pass suspended, or\n            // something in the previous committed pass suspended. Otherwise,\n            // there's no chance so we can skip the expensive call to\n            // findFirstSuspended.\n            var cannotBeSuspended = renderHasNotSuspendedYet() && (current === null || (current.flags & DidCapture) === NoFlags);\n\n            if (!cannotBeSuspended) {\n              var row = workInProgress.child;\n\n              while (row !== null) {\n                var suspended = findFirstSuspended(row);\n\n                if (suspended !== null) {\n                  didSuspendAlready = true;\n                  workInProgress.flags |= DidCapture;\n                  cutOffTailIfNeeded(renderState, false); // If this is a newly suspended tree, it might not get committed as\n                  // part of the second pass. In that case nothing will subscribe to\n                  // its thenables. Instead, we'll transfer its thenables to the\n                  // SuspenseList so that it can retry if they resolve.\n                  // There might be multiple of these in the list but since we're\n                  // going to wait for all of them anyway, it doesn't really matter\n                  // which ones gets to ping. In theory we could get clever and keep\n                  // track of how many dependencies remain but it gets tricky because\n                  // in the meantime, we can add/remove/change items and dependencies.\n                  // We might bail out of the loop before finding any but that\n                  // doesn't matter since that means that the other boundaries that\n                  // we did find already has their listeners attached.\n\n                  var newThenables = suspended.updateQueue;\n\n                  if (newThenables !== null) {\n                    workInProgress.updateQueue = newThenables;\n                    workInProgress.flags |= Update;\n                  } // Rerender the whole list, but this time, we'll force fallbacks\n                  // to stay in place.\n                  // Reset the effect flags before doing the second pass since that's now invalid.\n                  // Reset the child fibers to their original state.\n\n\n                  workInProgress.subtreeFlags = NoFlags;\n                  resetChildFibers(workInProgress, renderLanes); // Set up the Suspense Context to force suspense and immediately\n                  // rerender the children.\n\n                  pushSuspenseContext(workInProgress, setShallowSuspenseContext(suspenseStackCursor.current, ForceSuspenseFallback)); // Don't bubble properties in this case.\n\n                  return workInProgress.child;\n                }\n\n                row = row.sibling;\n              }\n            }\n\n            if (renderState.tail !== null && now() > getRenderTargetTime()) {\n              // We have already passed our CPU deadline but we still have rows\n              // left in the tail. We'll just give up further attempts to render\n              // the main content and only render fallbacks.\n              workInProgress.flags |= DidCapture;\n              didSuspendAlready = true;\n              cutOffTailIfNeeded(renderState, false); // Since nothing actually suspended, there will nothing to ping this\n              // to get it started back up to attempt the next item. While in terms\n              // of priority this work has the same priority as this current render,\n              // it's not part of the same transition once the transition has\n              // committed. If it's sync, we still want to yield so that it can be\n              // painted. Conceptually, this is really the same as pinging.\n              // We can use any RetryLane even if it's the one currently rendering\n              // since we're leaving it behind on this node.\n\n              workInProgress.lanes = SomeRetryLane;\n            }\n          } else {\n            cutOffTailIfNeeded(renderState, false);\n          } // Next we're going to render the tail.\n\n        } else {\n          // Append the rendered row to the child list.\n          if (!didSuspendAlready) {\n            var _suspended = findFirstSuspended(renderedTail);\n\n            if (_suspended !== null) {\n              workInProgress.flags |= DidCapture;\n              didSuspendAlready = true; // Ensure we transfer the update queue to the parent so that it doesn't\n              // get lost if this row ends up dropped during a second pass.\n\n              var _newThenables = _suspended.updateQueue;\n\n              if (_newThenables !== null) {\n                workInProgress.updateQueue = _newThenables;\n                workInProgress.flags |= Update;\n              }\n\n              cutOffTailIfNeeded(renderState, true); // This might have been modified.\n\n              if (renderState.tail === null && renderState.tailMode === 'hidden' && !renderedTail.alternate && !getIsHydrating() // We don't cut it if we're hydrating.\n              ) {\n                  // We're done.\n                  bubbleProperties(workInProgress);\n                  return null;\n                }\n            } else if ( // The time it took to render last row is greater than the remaining\n            // time we have to render. So rendering one more row would likely\n            // exceed it.\n            now() * 2 - renderState.renderingStartTime > getRenderTargetTime() && renderLanes !== OffscreenLane) {\n              // We have now passed our CPU deadline and we'll just give up further\n              // attempts to render the main content and only render fallbacks.\n              // The assumption is that this is usually faster.\n              workInProgress.flags |= DidCapture;\n              didSuspendAlready = true;\n              cutOffTailIfNeeded(renderState, false); // Since nothing actually suspended, there will nothing to ping this\n              // to get it started back up to attempt the next item. While in terms\n              // of priority this work has the same priority as this current render,\n              // it's not part of the same transition once the transition has\n              // committed. If it's sync, we still want to yield so that it can be\n              // painted. Conceptually, this is really the same as pinging.\n              // We can use any RetryLane even if it's the one currently rendering\n              // since we're leaving it behind on this node.\n\n              workInProgress.lanes = SomeRetryLane;\n            }\n          }\n\n          if (renderState.isBackwards) {\n            // The effect list of the backwards tail will have been added\n            // to the end. This breaks the guarantee that life-cycles fire in\n            // sibling order but that isn't a strong guarantee promised by React.\n            // Especially since these might also just pop in during future commits.\n            // Append to the beginning of the list.\n            renderedTail.sibling = workInProgress.child;\n            workInProgress.child = renderedTail;\n          } else {\n            var previousSibling = renderState.last;\n\n            if (previousSibling !== null) {\n              previousSibling.sibling = renderedTail;\n            } else {\n              workInProgress.child = renderedTail;\n            }\n\n            renderState.last = renderedTail;\n          }\n        }\n\n        if (renderState.tail !== null) {\n          // We still have tail rows to render.\n          // Pop a row.\n          var next = renderState.tail;\n          renderState.rendering = next;\n          renderState.tail = next.sibling;\n          renderState.renderingStartTime = now();\n          next.sibling = null; // Restore the context.\n          // TODO: We can probably just avoid popping it instead and only\n          // setting it the first time we go from not suspended to suspended.\n\n          var suspenseContext = suspenseStackCursor.current;\n\n          if (didSuspendAlready) {\n            suspenseContext = setShallowSuspenseContext(suspenseContext, ForceSuspenseFallback);\n          } else {\n            suspenseContext = setDefaultShallowSuspenseContext(suspenseContext);\n          }\n\n          pushSuspenseContext(workInProgress, suspenseContext); // Do a pass over the next row.\n          // Don't bubble properties in this case.\n\n          return next;\n        }\n\n        bubbleProperties(workInProgress);\n        return null;\n      }\n\n    case ScopeComponent:\n      {\n\n        break;\n      }\n\n    case OffscreenComponent:\n    case LegacyHiddenComponent:\n      {\n        popRenderLanes(workInProgress);\n        var _nextState = workInProgress.memoizedState;\n        var nextIsHidden = _nextState !== null;\n\n        if (current !== null) {\n          var _prevState = current.memoizedState;\n          var prevIsHidden = _prevState !== null;\n\n          if (prevIsHidden !== nextIsHidden && ( // LegacyHidden doesn't do any hiding \u2014 it only pre-renders.\n          !enableLegacyHidden )) {\n            workInProgress.flags |= Visibility;\n          }\n        }\n\n        if (!nextIsHidden || (workInProgress.mode & ConcurrentMode) === NoMode) {\n          bubbleProperties(workInProgress);\n        } else {\n          // Don't bubble properties for hidden children unless we're rendering\n          // at offscreen priority.\n          if (includesSomeLane(subtreeRenderLanes, OffscreenLane)) {\n            bubbleProperties(workInProgress);\n\n            {\n              // Check if there was an insertion or update in the hidden subtree.\n              // If so, we need to hide those nodes in the commit phase, so\n              // schedule a visibility effect.\n              if ( workInProgress.subtreeFlags & (Placement | Update)) {\n                workInProgress.flags |= Visibility;\n              }\n            }\n          }\n        }\n        return null;\n      }\n\n    case CacheComponent:\n      {\n\n        return null;\n      }\n\n    case TracingMarkerComponent:\n      {\n\n        return null;\n      }\n  }\n\n  throw new Error(\"Unknown unit of work tag (\" + workInProgress.tag + \"). This error is likely caused by a bug in \" + 'React. Please file an issue.');\n}\n\nfunction unwindWork(current, workInProgress, renderLanes) {\n  // Note: This intentionally doesn't check if we're hydrating because comparing\n  // to the current tree provider fiber is just as fast and less error-prone.\n  // Ideally we would have a special version of the work loop only\n  // for hydration.\n  popTreeContext(workInProgress);\n\n  switch (workInProgress.tag) {\n    case ClassComponent:\n      {\n        var Component = workInProgress.type;\n\n        if (isContextProvider(Component)) {\n          popContext(workInProgress);\n        }\n\n        var flags = workInProgress.flags;\n\n        if (flags & ShouldCapture) {\n          workInProgress.flags = flags & ~ShouldCapture | DidCapture;\n\n          if ( (workInProgress.mode & ProfileMode) !== NoMode) {\n            transferActualDuration(workInProgress);\n          }\n\n          return workInProgress;\n        }\n\n        return null;\n      }\n\n    case HostRoot:\n      {\n        var root = workInProgress.stateNode;\n        popHostContainer(workInProgress);\n        popTopLevelContextObject(workInProgress);\n        resetWorkInProgressVersions();\n        var _flags = workInProgress.flags;\n\n        if ((_flags & ShouldCapture) !== NoFlags && (_flags & DidCapture) === NoFlags) {\n          // There was an error during render that wasn't captured by a suspense\n          // boundary. Do a second pass on the root to unmount the children.\n          workInProgress.flags = _flags & ~ShouldCapture | DidCapture;\n          return workInProgress;\n        } // We unwound to the root without completing it. Exit.\n\n\n        return null;\n      }\n\n    case HostComponent:\n      {\n        // TODO: popHydrationState\n        popHostContext(workInProgress);\n        return null;\n      }\n\n    case SuspenseComponent:\n      {\n        popSuspenseContext(workInProgress);\n        var suspenseState = workInProgress.memoizedState;\n\n        if (suspenseState !== null && suspenseState.dehydrated !== null) {\n          if (workInProgress.alternate === null) {\n            throw new Error('Threw in newly mounted dehydrated component. This is likely a bug in ' + 'React. Please file an issue.');\n          }\n\n          resetHydrationState();\n        }\n\n        var _flags2 = workInProgress.flags;\n\n        if (_flags2 & ShouldCapture) {\n          workInProgress.flags = _flags2 & ~ShouldCapture | DidCapture; // Captured a suspense effect. Re-render the boundary.\n\n          if ( (workInProgress.mode & ProfileMode) !== NoMode) {\n            transferActualDuration(workInProgress);\n          }\n\n          return workInProgress;\n        }\n\n        return null;\n      }\n\n    case SuspenseListComponent:\n      {\n        popSuspenseContext(workInProgress); // SuspenseList doesn't actually catch anything. It should've been\n        // caught by a nested boundary. If not, it should bubble through.\n\n        return null;\n      }\n\n    case HostPortal:\n      popHostContainer(workInProgress);\n      return null;\n\n    case ContextProvider:\n      var context = workInProgress.type._context;\n      popProvider(context, workInProgress);\n      return null;\n\n    case OffscreenComponent:\n    case LegacyHiddenComponent:\n      popRenderLanes(workInProgress);\n      return null;\n\n    case CacheComponent:\n\n      return null;\n\n    default:\n      return null;\n  }\n}\n\nfunction unwindInterruptedWork(current, interruptedWork, renderLanes) {\n  // Note: This intentionally doesn't check if we're hydrating because comparing\n  // to the current tree provider fiber is just as fast and less error-prone.\n  // Ideally we would have a special version of the work loop only\n  // for hydration.\n  popTreeContext(interruptedWork);\n\n  switch (interruptedWork.tag) {\n    case ClassComponent:\n      {\n        var childContextTypes = interruptedWork.type.childContextTypes;\n\n        if (childContextTypes !== null && childContextTypes !== undefined) {\n          popContext(interruptedWork);\n        }\n\n        break;\n      }\n\n    case HostRoot:\n      {\n        var root = interruptedWork.stateNode;\n        popHostContainer(interruptedWork);\n        popTopLevelContextObject(interruptedWork);\n        resetWorkInProgressVersions();\n        break;\n      }\n\n    case HostComponent:\n      {\n        popHostContext(interruptedWork);\n        break;\n      }\n\n    case HostPortal:\n      popHostContainer(interruptedWork);\n      break;\n\n    case SuspenseComponent:\n      popSuspenseContext(interruptedWork);\n      break;\n\n    case SuspenseListComponent:\n      popSuspenseContext(interruptedWork);\n      break;\n\n    case ContextProvider:\n      var context = interruptedWork.type._context;\n      popProvider(context, interruptedWork);\n      break;\n\n    case OffscreenComponent:\n    case LegacyHiddenComponent:\n      popRenderLanes(interruptedWork);\n      break;\n  }\n}\n\nvar didWarnAboutUndefinedSnapshotBeforeUpdate = null;\n\n{\n  didWarnAboutUndefinedSnapshotBeforeUpdate = new Set();\n} // Used during the commit phase to track the state of the Offscreen component stack.\n// Allows us to avoid traversing the return path to find the nearest Offscreen ancestor.\n// Only used when enableSuspenseLayoutEffectSemantics is enabled.\n\n\nvar offscreenSubtreeIsHidden = false;\nvar offscreenSubtreeWasHidden = false;\nvar PossiblyWeakSet = typeof WeakSet === 'function' ? WeakSet : Set;\nvar nextEffect = null; // Used for Profiling builds to track updaters.\n\nvar inProgressLanes = null;\nvar inProgressRoot = null;\nfunction reportUncaughtErrorInDEV(error) {\n  // Wrapping each small part of the commit phase into a guarded\n  // callback is a bit too slow (https://github.com/facebook/react/pull/21666).\n  // But we rely on it to surface errors to DEV tools like overlays\n  // (https://github.com/facebook/react/issues/21712).\n  // As a compromise, rethrow only caught errors in a guard.\n  {\n    invokeGuardedCallback(null, function () {\n      throw error;\n    });\n    clearCaughtError();\n  }\n}\n\nvar callComponentWillUnmountWithTimer = function (current, instance) {\n  instance.props = current.memoizedProps;\n  instance.state = current.memoizedState;\n\n  if ( current.mode & ProfileMode) {\n    try {\n      startLayoutEffectTimer();\n      instance.componentWillUnmount();\n    } finally {\n      recordLayoutEffectDuration(current);\n    }\n  } else {\n    instance.componentWillUnmount();\n  }\n}; // Capture errors so they don't interrupt mounting.\n\n\nfunction safelyCallCommitHookLayoutEffectListMount(current, nearestMountedAncestor) {\n  try {\n    commitHookEffectListMount(Layout, current);\n  } catch (error) {\n    captureCommitPhaseError(current, nearestMountedAncestor, error);\n  }\n} // Capture errors so they don't interrupt unmounting.\n\n\nfunction safelyCallComponentWillUnmount(current, nearestMountedAncestor, instance) {\n  try {\n    callComponentWillUnmountWithTimer(current, instance);\n  } catch (error) {\n    captureCommitPhaseError(current, nearestMountedAncestor, error);\n  }\n} // Capture errors so they don't interrupt mounting.\n\n\nfunction safelyCallComponentDidMount(current, nearestMountedAncestor, instance) {\n  try {\n    instance.componentDidMount();\n  } catch (error) {\n    captureCommitPhaseError(current, nearestMountedAncestor, error);\n  }\n} // Capture errors so they don't interrupt mounting.\n\n\nfunction safelyAttachRef(current, nearestMountedAncestor) {\n  try {\n    commitAttachRef(current);\n  } catch (error) {\n    captureCommitPhaseError(current, nearestMountedAncestor, error);\n  }\n}\n\nfunction safelyDetachRef(current, nearestMountedAncestor) {\n  var ref = current.ref;\n\n  if (ref !== null) {\n    if (typeof ref === 'function') {\n      var retVal;\n\n      try {\n        if (enableProfilerTimer && enableProfilerCommitHooks && current.mode & ProfileMode) {\n          try {\n            startLayoutEffectTimer();\n            retVal = ref(null);\n          } finally {\n            recordLayoutEffectDuration(current);\n          }\n        } else {\n          retVal = ref(null);\n        }\n      } catch (error) {\n        captureCommitPhaseError(current, nearestMountedAncestor, error);\n      }\n\n      {\n        if (typeof retVal === 'function') {\n          error('Unexpected return value from a callback ref in %s. ' + 'A callback ref should not return a function.', getComponentNameFromFiber(current));\n        }\n      }\n    } else {\n      ref.current = null;\n    }\n  }\n}\n\nfunction safelyCallDestroy(current, nearestMountedAncestor, destroy) {\n  try {\n    destroy();\n  } catch (error) {\n    captureCommitPhaseError(current, nearestMountedAncestor, error);\n  }\n}\n\nvar focusedInstanceHandle = null;\nvar shouldFireAfterActiveInstanceBlur = false;\nfunction commitBeforeMutationEffects(root, firstChild) {\n  focusedInstanceHandle = prepareForCommit(root.containerInfo);\n  nextEffect = firstChild;\n  commitBeforeMutationEffects_begin(); // We no longer need to track the active instance fiber\n\n  var shouldFire = shouldFireAfterActiveInstanceBlur;\n  shouldFireAfterActiveInstanceBlur = false;\n  focusedInstanceHandle = null;\n  return shouldFire;\n}\n\nfunction commitBeforeMutationEffects_begin() {\n  while (nextEffect !== null) {\n    var fiber = nextEffect; // This phase is only used for beforeActiveInstanceBlur.\n\n    var child = fiber.child;\n\n    if ((fiber.subtreeFlags & BeforeMutationMask) !== NoFlags && child !== null) {\n      child.return = fiber;\n      nextEffect = child;\n    } else {\n      commitBeforeMutationEffects_complete();\n    }\n  }\n}\n\nfunction commitBeforeMutationEffects_complete() {\n  while (nextEffect !== null) {\n    var fiber = nextEffect;\n    setCurrentFiber(fiber);\n\n    try {\n      commitBeforeMutationEffectsOnFiber(fiber);\n    } catch (error) {\n      captureCommitPhaseError(fiber, fiber.return, error);\n    }\n\n    resetCurrentFiber();\n    var sibling = fiber.sibling;\n\n    if (sibling !== null) {\n      sibling.return = fiber.return;\n      nextEffect = sibling;\n      return;\n    }\n\n    nextEffect = fiber.return;\n  }\n}\n\nfunction commitBeforeMutationEffectsOnFiber(finishedWork) {\n  var current = finishedWork.alternate;\n  var flags = finishedWork.flags;\n\n  if ((flags & Snapshot) !== NoFlags) {\n    setCurrentFiber(finishedWork);\n\n    switch (finishedWork.tag) {\n      case FunctionComponent:\n      case ForwardRef:\n      case SimpleMemoComponent:\n        {\n          break;\n        }\n\n      case ClassComponent:\n        {\n          if (current !== null) {\n            var prevProps = current.memoizedProps;\n            var prevState = current.memoizedState;\n            var instance = finishedWork.stateNode; // We could update instance props and state here,\n            // but instead we rely on them being set during last render.\n            // TODO: revisit this when we implement resuming.\n\n            {\n              if (finishedWork.type === finishedWork.elementType && !didWarnAboutReassigningProps) {\n                if (instance.props !== finishedWork.memoizedProps) {\n                  error('Expected %s props to match memoized props before ' + 'getSnapshotBeforeUpdate. ' + 'This might either be because of a bug in React, or because ' + 'a component reassigns its own `this.props`. ' + 'Please file an issue.', getComponentNameFromFiber(finishedWork) || 'instance');\n                }\n\n                if (instance.state !== finishedWork.memoizedState) {\n                  error('Expected %s state to match memoized state before ' + 'getSnapshotBeforeUpdate. ' + 'This might either be because of a bug in React, or because ' + 'a component reassigns its own `this.state`. ' + 'Please file an issue.', getComponentNameFromFiber(finishedWork) || 'instance');\n                }\n              }\n            }\n\n            var snapshot = instance.getSnapshotBeforeUpdate(finishedWork.elementType === finishedWork.type ? prevProps : resolveDefaultProps(finishedWork.type, prevProps), prevState);\n\n            {\n              var didWarnSet = didWarnAboutUndefinedSnapshotBeforeUpdate;\n\n              if (snapshot === undefined && !didWarnSet.has(finishedWork.type)) {\n                didWarnSet.add(finishedWork.type);\n\n                error('%s.getSnapshotBeforeUpdate(): A snapshot value (or null) ' + 'must be returned. You have returned undefined.', getComponentNameFromFiber(finishedWork));\n              }\n            }\n\n            instance.__reactInternalSnapshotBeforeUpdate = snapshot;\n          }\n\n          break;\n        }\n\n      case HostRoot:\n        {\n          {\n            var root = finishedWork.stateNode;\n            clearContainer(root.containerInfo);\n          }\n\n          break;\n        }\n\n      case HostComponent:\n      case HostText:\n      case HostPortal:\n      case IncompleteClassComponent:\n        // Nothing to do for these component types\n        break;\n\n      default:\n        {\n          throw new Error('This unit of work tag should not have side-effects. This error is ' + 'likely caused by a bug in React. Please file an issue.');\n        }\n    }\n\n    resetCurrentFiber();\n  }\n}\n\nfunction commitHookEffectListUnmount(flags, finishedWork, nearestMountedAncestor) {\n  var updateQueue = finishedWork.updateQueue;\n  var lastEffect = updateQueue !== null ? updateQueue.lastEffect : null;\n\n  if (lastEffect !== null) {\n    var firstEffect = lastEffect.next;\n    var effect = firstEffect;\n\n    do {\n      if ((effect.tag & flags) === flags) {\n        // Unmount\n        var destroy = effect.destroy;\n        effect.destroy = undefined;\n\n        if (destroy !== undefined) {\n          {\n            if ((flags & Passive$1) !== NoFlags$1) {\n              markComponentPassiveEffectUnmountStarted(finishedWork);\n            } else if ((flags & Layout) !== NoFlags$1) {\n              markComponentLayoutEffectUnmountStarted(finishedWork);\n            }\n          }\n\n          {\n            if ((flags & Insertion) !== NoFlags$1) {\n              setIsRunningInsertionEffect(true);\n            }\n          }\n\n          safelyCallDestroy(finishedWork, nearestMountedAncestor, destroy);\n\n          {\n            if ((flags & Insertion) !== NoFlags$1) {\n              setIsRunningInsertionEffect(false);\n            }\n          }\n\n          {\n            if ((flags & Passive$1) !== NoFlags$1) {\n              markComponentPassiveEffectUnmountStopped();\n            } else if ((flags & Layout) !== NoFlags$1) {\n              markComponentLayoutEffectUnmountStopped();\n            }\n          }\n        }\n      }\n\n      effect = effect.next;\n    } while (effect !== firstEffect);\n  }\n}\n\nfunction commitHookEffectListMount(flags, finishedWork) {\n  var updateQueue = finishedWork.updateQueue;\n  var lastEffect = updateQueue !== null ? updateQueue.lastEffect : null;\n\n  if (lastEffect !== null) {\n    var firstEffect = lastEffect.next;\n    var effect = firstEffect;\n\n    do {\n      if ((effect.tag & flags) === flags) {\n        {\n          if ((flags & Passive$1) !== NoFlags$1) {\n            markComponentPassiveEffectMountStarted(finishedWork);\n          } else if ((flags & Layout) !== NoFlags$1) {\n            markComponentLayoutEffectMountStarted(finishedWork);\n          }\n        } // Mount\n\n\n        var create = effect.create;\n\n        {\n          if ((flags & Insertion) !== NoFlags$1) {\n            setIsRunningInsertionEffect(true);\n          }\n        }\n\n        effect.destroy = create();\n\n        {\n          if ((flags & Insertion) !== NoFlags$1) {\n            setIsRunningInsertionEffect(false);\n          }\n        }\n\n        {\n          if ((flags & Passive$1) !== NoFlags$1) {\n            markComponentPassiveEffectMountStopped();\n          } else if ((flags & Layout) !== NoFlags$1) {\n            markComponentLayoutEffectMountStopped();\n          }\n        }\n\n        {\n          var destroy = effect.destroy;\n\n          if (destroy !== undefined && typeof destroy !== 'function') {\n            var hookName = void 0;\n\n            if ((effect.tag & Layout) !== NoFlags) {\n              hookName = 'useLayoutEffect';\n            } else if ((effect.tag & Insertion) !== NoFlags) {\n              hookName = 'useInsertionEffect';\n            } else {\n              hookName = 'useEffect';\n            }\n\n            var addendum = void 0;\n\n            if (destroy === null) {\n              addendum = ' You returned null. If your effect does not require clean ' + 'up, return undefined (or nothing).';\n            } else if (typeof destroy.then === 'function') {\n              addendum = '\\n\\nIt looks like you wrote ' + hookName + '(async () => ...) or returned a Promise. ' + 'Instead, write the async function inside your effect ' + 'and call it immediately:\\n\\n' + hookName + '(() => {\\n' + '  async function fetchData() {\\n' + '    // You can await here\\n' + '    const response = await MyAPI.getData(someId);\\n' + '    // ...\\n' + '  }\\n' + '  fetchData();\\n' + \"}, [someId]); // Or [] if effect doesn't need props or state\\n\\n\" + 'Learn more about data fetching with Hooks: https://reactjs.org/link/hooks-data-fetching';\n            } else {\n              addendum = ' You returned: ' + destroy;\n            }\n\n            error('%s must not return anything besides a function, ' + 'which is used for clean-up.%s', hookName, addendum);\n          }\n        }\n      }\n\n      effect = effect.next;\n    } while (effect !== firstEffect);\n  }\n}\n\nfunction commitPassiveEffectDurations(finishedRoot, finishedWork) {\n  {\n    // Only Profilers with work in their subtree will have an Update effect scheduled.\n    if ((finishedWork.flags & Update) !== NoFlags) {\n      switch (finishedWork.tag) {\n        case Profiler:\n          {\n            var passiveEffectDuration = finishedWork.stateNode.passiveEffectDuration;\n            var _finishedWork$memoize = finishedWork.memoizedProps,\n                id = _finishedWork$memoize.id,\n                onPostCommit = _finishedWork$memoize.onPostCommit; // This value will still reflect the previous commit phase.\n            // It does not get reset until the start of the next commit phase.\n\n            var commitTime = getCommitTime();\n            var phase = finishedWork.alternate === null ? 'mount' : 'update';\n\n            {\n              if (isCurrentUpdateNested()) {\n                phase = 'nested-update';\n              }\n            }\n\n            if (typeof onPostCommit === 'function') {\n              onPostCommit(id, phase, passiveEffectDuration, commitTime);\n            } // Bubble times to the next nearest ancestor Profiler.\n            // After we process that Profiler, we'll bubble further up.\n\n\n            var parentFiber = finishedWork.return;\n\n            outer: while (parentFiber !== null) {\n              switch (parentFiber.tag) {\n                case HostRoot:\n                  var root = parentFiber.stateNode;\n                  root.passiveEffectDuration += passiveEffectDuration;\n                  break outer;\n\n                case Profiler:\n                  var parentStateNode = parentFiber.stateNode;\n                  parentStateNode.passiveEffectDuration += passiveEffectDuration;\n                  break outer;\n              }\n\n              parentFiber = parentFiber.return;\n            }\n\n            break;\n          }\n      }\n    }\n  }\n}\n\nfunction commitLayoutEffectOnFiber(finishedRoot, current, finishedWork, committedLanes) {\n  if ((finishedWork.flags & LayoutMask) !== NoFlags) {\n    switch (finishedWork.tag) {\n      case FunctionComponent:\n      case ForwardRef:\n      case SimpleMemoComponent:\n        {\n          if ( !offscreenSubtreeWasHidden) {\n            // At this point layout effects have already been destroyed (during mutation phase).\n            // This is done to prevent sibling component effects from interfering with each other,\n            // e.g. a destroy function in one component should never override a ref set\n            // by a create function in another component during the same commit.\n            if ( finishedWork.mode & ProfileMode) {\n              try {\n                startLayoutEffectTimer();\n                commitHookEffectListMount(Layout | HasEffect, finishedWork);\n              } finally {\n                recordLayoutEffectDuration(finishedWork);\n              }\n            } else {\n              commitHookEffectListMount(Layout | HasEffect, finishedWork);\n            }\n          }\n\n          break;\n        }\n\n      case ClassComponent:\n        {\n          var instance = finishedWork.stateNode;\n\n          if (finishedWork.flags & Update) {\n            if (!offscreenSubtreeWasHidden) {\n              if (current === null) {\n                // We could update instance props and state here,\n                // but instead we rely on them being set during last render.\n                // TODO: revisit this when we implement resuming.\n                {\n                  if (finishedWork.type === finishedWork.elementType && !didWarnAboutReassigningProps) {\n                    if (instance.props !== finishedWork.memoizedProps) {\n                      error('Expected %s props to match memoized props before ' + 'componentDidMount. ' + 'This might either be because of a bug in React, or because ' + 'a component reassigns its own `this.props`. ' + 'Please file an issue.', getComponentNameFromFiber(finishedWork) || 'instance');\n                    }\n\n                    if (instance.state !== finishedWork.memoizedState) {\n                      error('Expected %s state to match memoized state before ' + 'componentDidMount. ' + 'This might either be because of a bug in React, or because ' + 'a component reassigns its own `this.state`. ' + 'Please file an issue.', getComponentNameFromFiber(finishedWork) || 'instance');\n                    }\n                  }\n                }\n\n                if ( finishedWork.mode & ProfileMode) {\n                  try {\n                    startLayoutEffectTimer();\n                    instance.componentDidMount();\n                  } finally {\n                    recordLayoutEffectDuration(finishedWork);\n                  }\n                } else {\n                  instance.componentDidMount();\n                }\n              } else {\n                var prevProps = finishedWork.elementType === finishedWork.type ? current.memoizedProps : resolveDefaultProps(finishedWork.type, current.memoizedProps);\n                var prevState = current.memoizedState; // We could update instance props and state here,\n                // but instead we rely on them being set during last render.\n                // TODO: revisit this when we implement resuming.\n\n                {\n                  if (finishedWork.type === finishedWork.elementType && !didWarnAboutReassigningProps) {\n                    if (instance.props !== finishedWork.memoizedProps) {\n                      error('Expected %s props to match memoized props before ' + 'componentDidUpdate. ' + 'This might either be because of a bug in React, or because ' + 'a component reassigns its own `this.props`. ' + 'Please file an issue.', getComponentNameFromFiber(finishedWork) || 'instance');\n                    }\n\n                    if (instance.state !== finishedWork.memoizedState) {\n                      error('Expected %s state to match memoized state before ' + 'componentDidUpdate. ' + 'This might either be because of a bug in React, or because ' + 'a component reassigns its own `this.state`. ' + 'Please file an issue.', getComponentNameFromFiber(finishedWork) || 'instance');\n                    }\n                  }\n                }\n\n                if ( finishedWork.mode & ProfileMode) {\n                  try {\n                    startLayoutEffectTimer();\n                    instance.componentDidUpdate(prevProps, prevState, instance.__reactInternalSnapshotBeforeUpdate);\n                  } finally {\n                    recordLayoutEffectDuration(finishedWork);\n                  }\n                } else {\n                  instance.componentDidUpdate(prevProps, prevState, instance.__reactInternalSnapshotBeforeUpdate);\n                }\n              }\n            }\n          } // TODO: I think this is now always non-null by the time it reaches the\n          // commit phase. Consider removing the type check.\n\n\n          var updateQueue = finishedWork.updateQueue;\n\n          if (updateQueue !== null) {\n            {\n              if (finishedWork.type === finishedWork.elementType && !didWarnAboutReassigningProps) {\n                if (instance.props !== finishedWork.memoizedProps) {\n                  error('Expected %s props to match memoized props before ' + 'processing the update queue. ' + 'This might either be because of a bug in React, or because ' + 'a component reassigns its own `this.props`. ' + 'Please file an issue.', getComponentNameFromFiber(finishedWork) || 'instance');\n                }\n\n                if (instance.state !== finishedWork.memoizedState) {\n                  error('Expected %s state to match memoized state before ' + 'processing the update queue. ' + 'This might either be because of a bug in React, or because ' + 'a component reassigns its own `this.state`. ' + 'Please file an issue.', getComponentNameFromFiber(finishedWork) || 'instance');\n                }\n              }\n            } // We could update instance props and state here,\n            // but instead we rely on them being set during last render.\n            // TODO: revisit this when we implement resuming.\n\n\n            commitUpdateQueue(finishedWork, updateQueue, instance);\n          }\n\n          break;\n        }\n\n      case HostRoot:\n        {\n          // TODO: I think this is now always non-null by the time it reaches the\n          // commit phase. Consider removing the type check.\n          var _updateQueue = finishedWork.updateQueue;\n\n          if (_updateQueue !== null) {\n            var _instance = null;\n\n            if (finishedWork.child !== null) {\n              switch (finishedWork.child.tag) {\n                case HostComponent:\n                  _instance = getPublicInstance(finishedWork.child.stateNode);\n                  break;\n\n                case ClassComponent:\n                  _instance = finishedWork.child.stateNode;\n                  break;\n              }\n            }\n\n            commitUpdateQueue(finishedWork, _updateQueue, _instance);\n          }\n\n          break;\n        }\n\n      case HostComponent:\n        {\n          var _instance2 = finishedWork.stateNode; // Renderers may schedule work to be done after host components are mounted\n          // (eg DOM renderer may schedule auto-focus for inputs and form controls).\n          // These effects should only be committed when components are first mounted,\n          // aka when there is no current/alternate.\n\n          if (current === null && finishedWork.flags & Update) {\n            var type = finishedWork.type;\n            var props = finishedWork.memoizedProps;\n            commitMount(_instance2, type, props);\n          }\n\n          break;\n        }\n\n      case HostText:\n        {\n          // We have no life-cycles associated with text.\n          break;\n        }\n\n      case HostPortal:\n        {\n          // We have no life-cycles associated with portals.\n          break;\n        }\n\n      case Profiler:\n        {\n          {\n            var _finishedWork$memoize2 = finishedWork.memoizedProps,\n                onCommit = _finishedWork$memoize2.onCommit,\n                onRender = _finishedWork$memoize2.onRender;\n            var effectDuration = finishedWork.stateNode.effectDuration;\n            var commitTime = getCommitTime();\n            var phase = current === null ? 'mount' : 'update';\n\n            {\n              if (isCurrentUpdateNested()) {\n                phase = 'nested-update';\n              }\n            }\n\n            if (typeof onRender === 'function') {\n              onRender(finishedWork.memoizedProps.id, phase, finishedWork.actualDuration, finishedWork.treeBaseDuration, finishedWork.actualStartTime, commitTime);\n            }\n\n            {\n              if (typeof onCommit === 'function') {\n                onCommit(finishedWork.memoizedProps.id, phase, effectDuration, commitTime);\n              } // Schedule a passive effect for this Profiler to call onPostCommit hooks.\n              // This effect should be scheduled even if there is no onPostCommit callback for this Profiler,\n              // because the effect is also where times bubble to parent Profilers.\n\n\n              enqueuePendingPassiveProfilerEffect(finishedWork); // Propagate layout effect durations to the next nearest Profiler ancestor.\n              // Do not reset these values until the next render so DevTools has a chance to read them first.\n\n              var parentFiber = finishedWork.return;\n\n              outer: while (parentFiber !== null) {\n                switch (parentFiber.tag) {\n                  case HostRoot:\n                    var root = parentFiber.stateNode;\n                    root.effectDuration += effectDuration;\n                    break outer;\n\n                  case Profiler:\n                    var parentStateNode = parentFiber.stateNode;\n                    parentStateNode.effectDuration += effectDuration;\n                    break outer;\n                }\n\n                parentFiber = parentFiber.return;\n              }\n            }\n          }\n\n          break;\n        }\n\n      case SuspenseComponent:\n        {\n          commitSuspenseHydrationCallbacks(finishedRoot, finishedWork);\n          break;\n        }\n\n      case SuspenseListComponent:\n      case IncompleteClassComponent:\n      case ScopeComponent:\n      case OffscreenComponent:\n      case LegacyHiddenComponent:\n      case TracingMarkerComponent:\n        {\n          break;\n        }\n\n      default:\n        throw new Error('This unit of work tag should not have side-effects. This error is ' + 'likely caused by a bug in React. Please file an issue.');\n    }\n  }\n\n  if ( !offscreenSubtreeWasHidden) {\n    {\n      if (finishedWork.flags & Ref) {\n        commitAttachRef(finishedWork);\n      }\n    }\n  }\n}\n\nfunction reappearLayoutEffectsOnFiber(node) {\n  // Turn on layout effects in a tree that previously disappeared.\n  // TODO (Offscreen) Check: flags & LayoutStatic\n  switch (node.tag) {\n    case FunctionComponent:\n    case ForwardRef:\n    case SimpleMemoComponent:\n      {\n        if ( node.mode & ProfileMode) {\n          try {\n            startLayoutEffectTimer();\n            safelyCallCommitHookLayoutEffectListMount(node, node.return);\n          } finally {\n            recordLayoutEffectDuration(node);\n          }\n        } else {\n          safelyCallCommitHookLayoutEffectListMount(node, node.return);\n        }\n\n        break;\n      }\n\n    case ClassComponent:\n      {\n        var instance = node.stateNode;\n\n        if (typeof instance.componentDidMount === 'function') {\n          safelyCallComponentDidMount(node, node.return, instance);\n        }\n\n        safelyAttachRef(node, node.return);\n        break;\n      }\n\n    case HostComponent:\n      {\n        safelyAttachRef(node, node.return);\n        break;\n      }\n  }\n}\n\nfunction hideOrUnhideAllChildren(finishedWork, isHidden) {\n  // Only hide or unhide the top-most host nodes.\n  var hostSubtreeRoot = null;\n\n  {\n    // We only have the top Fiber that was inserted but we need to recurse down its\n    // children to find all the terminal nodes.\n    var node = finishedWork;\n\n    while (true) {\n      if (node.tag === HostComponent) {\n        if (hostSubtreeRoot === null) {\n          hostSubtreeRoot = node;\n\n          try {\n            var instance = node.stateNode;\n\n            if (isHidden) {\n              hideInstance(instance);\n            } else {\n              unhideInstance(node.stateNode, node.memoizedProps);\n            }\n          } catch (error) {\n            captureCommitPhaseError(finishedWork, finishedWork.return, error);\n          }\n        }\n      } else if (node.tag === HostText) {\n        if (hostSubtreeRoot === null) {\n          try {\n            var _instance3 = node.stateNode;\n\n            if (isHidden) {\n              hideTextInstance(_instance3);\n            } else {\n              unhideTextInstance(_instance3, node.memoizedProps);\n            }\n          } catch (error) {\n            captureCommitPhaseError(finishedWork, finishedWork.return, error);\n          }\n        }\n      } else if ((node.tag === OffscreenComponent || node.tag === LegacyHiddenComponent) && node.memoizedState !== null && node !== finishedWork) ; else if (node.child !== null) {\n        node.child.return = node;\n        node = node.child;\n        continue;\n      }\n\n      if (node === finishedWork) {\n        return;\n      }\n\n      while (node.sibling === null) {\n        if (node.return === null || node.return === finishedWork) {\n          return;\n        }\n\n        if (hostSubtreeRoot === node) {\n          hostSubtreeRoot = null;\n        }\n\n        node = node.return;\n      }\n\n      if (hostSubtreeRoot === node) {\n        hostSubtreeRoot = null;\n      }\n\n      node.sibling.return = node.return;\n      node = node.sibling;\n    }\n  }\n}\n\nfunction commitAttachRef(finishedWork) {\n  var ref = finishedWork.ref;\n\n  if (ref !== null) {\n    var instance = finishedWork.stateNode;\n    var instanceToUse;\n\n    switch (finishedWork.tag) {\n      case HostComponent:\n        instanceToUse = getPublicInstance(instance);\n        break;\n\n      default:\n        instanceToUse = instance;\n    } // Moved outside to ensure DCE works with this flag\n\n    if (typeof ref === 'function') {\n      var retVal;\n\n      if ( finishedWork.mode & ProfileMode) {\n        try {\n          startLayoutEffectTimer();\n          retVal = ref(instanceToUse);\n        } finally {\n          recordLayoutEffectDuration(finishedWork);\n        }\n      } else {\n        retVal = ref(instanceToUse);\n      }\n\n      {\n        if (typeof retVal === 'function') {\n          error('Unexpected return value from a callback ref in %s. ' + 'A callback ref should not return a function.', getComponentNameFromFiber(finishedWork));\n        }\n      }\n    } else {\n      {\n        if (!ref.hasOwnProperty('current')) {\n          error('Unexpected ref object provided for %s. ' + 'Use either a ref-setter function or React.createRef().', getComponentNameFromFiber(finishedWork));\n        }\n      }\n\n      ref.current = instanceToUse;\n    }\n  }\n}\n\nfunction detachFiberMutation(fiber) {\n  // Cut off the return pointer to disconnect it from the tree.\n  // This enables us to detect and warn against state updates on an unmounted component.\n  // It also prevents events from bubbling from within disconnected components.\n  //\n  // Ideally, we should also clear the child pointer of the parent alternate to let this\n  // get GC:ed but we don't know which for sure which parent is the current\n  // one so we'll settle for GC:ing the subtree of this child.\n  // This child itself will be GC:ed when the parent updates the next time.\n  //\n  // Note that we can't clear child or sibling pointers yet.\n  // They're needed for passive effects and for findDOMNode.\n  // We defer those fields, and all other cleanup, to the passive phase (see detachFiberAfterEffects).\n  //\n  // Don't reset the alternate yet, either. We need that so we can detach the\n  // alternate's fields in the passive phase. Clearing the return pointer is\n  // sufficient for findDOMNode semantics.\n  var alternate = fiber.alternate;\n\n  if (alternate !== null) {\n    alternate.return = null;\n  }\n\n  fiber.return = null;\n}\n\nfunction detachFiberAfterEffects(fiber) {\n  var alternate = fiber.alternate;\n\n  if (alternate !== null) {\n    fiber.alternate = null;\n    detachFiberAfterEffects(alternate);\n  } // Note: Defensively using negation instead of < in case\n  // `deletedTreeCleanUpLevel` is undefined.\n\n\n  {\n    // Clear cyclical Fiber fields. This level alone is designed to roughly\n    // approximate the planned Fiber refactor. In that world, `setState` will be\n    // bound to a special \"instance\" object instead of a Fiber. The Instance\n    // object will not have any of these fields. It will only be connected to\n    // the fiber tree via a single link at the root. So if this level alone is\n    // sufficient to fix memory issues, that bodes well for our plans.\n    fiber.child = null;\n    fiber.deletions = null;\n    fiber.sibling = null; // The `stateNode` is cyclical because on host nodes it points to the host\n    // tree, which has its own pointers to children, parents, and siblings.\n    // The other host nodes also point back to fibers, so we should detach that\n    // one, too.\n\n    if (fiber.tag === HostComponent) {\n      var hostInstance = fiber.stateNode;\n\n      if (hostInstance !== null) {\n        detachDeletedInstance(hostInstance);\n      }\n    }\n\n    fiber.stateNode = null; // I'm intentionally not clearing the `return` field in this level. We\n    // already disconnect the `return` pointer at the root of the deleted\n    // subtree (in `detachFiberMutation`). Besides, `return` by itself is not\n    // cyclical \u2014 it's only cyclical when combined with `child`, `sibling`, and\n    // `alternate`. But we'll clear it in the next level anyway, just in case.\n\n    {\n      fiber._debugOwner = null;\n    }\n\n    {\n      // Theoretically, nothing in here should be necessary, because we already\n      // disconnected the fiber from the tree. So even if something leaks this\n      // particular fiber, it won't leak anything else\n      //\n      // The purpose of this branch is to be super aggressive so we can measure\n      // if there's any difference in memory impact. If there is, that could\n      // indicate a React leak we don't know about.\n      fiber.return = null;\n      fiber.dependencies = null;\n      fiber.memoizedProps = null;\n      fiber.memoizedState = null;\n      fiber.pendingProps = null;\n      fiber.stateNode = null; // TODO: Move to `commitPassiveUnmountInsideDeletedTreeOnFiber` instead.\n\n      fiber.updateQueue = null;\n    }\n  }\n}\n\nfunction getHostParentFiber(fiber) {\n  var parent = fiber.return;\n\n  while (parent !== null) {\n    if (isHostParent(parent)) {\n      return parent;\n    }\n\n    parent = parent.return;\n  }\n\n  throw new Error('Expected to find a host parent. This error is likely caused by a bug ' + 'in React. Please file an issue.');\n}\n\nfunction isHostParent(fiber) {\n  return fiber.tag === HostComponent || fiber.tag === HostRoot || fiber.tag === HostPortal;\n}\n\nfunction getHostSibling(fiber) {\n  // We're going to search forward into the tree until we find a sibling host\n  // node. Unfortunately, if multiple insertions are done in a row we have to\n  // search past them. This leads to exponential search for the next sibling.\n  // TODO: Find a more efficient way to do this.\n  var node = fiber;\n\n  siblings: while (true) {\n    // If we didn't find anything, let's try the next sibling.\n    while (node.sibling === null) {\n      if (node.return === null || isHostParent(node.return)) {\n        // If we pop out of the root or hit the parent the fiber we are the\n        // last sibling.\n        return null;\n      }\n\n      node = node.return;\n    }\n\n    node.sibling.return = node.return;\n    node = node.sibling;\n\n    while (node.tag !== HostComponent && node.tag !== HostText && node.tag !== DehydratedFragment) {\n      // If it is not host node and, we might have a host node inside it.\n      // Try to search down until we find one.\n      if (node.flags & Placement) {\n        // If we don't have a child, try the siblings instead.\n        continue siblings;\n      } // If we don't have a child, try the siblings instead.\n      // We also skip portals because they are not part of this host tree.\n\n\n      if (node.child === null || node.tag === HostPortal) {\n        continue siblings;\n      } else {\n        node.child.return = node;\n        node = node.child;\n      }\n    } // Check if this host node is stable or about to be placed.\n\n\n    if (!(node.flags & Placement)) {\n      // Found it!\n      return node.stateNode;\n    }\n  }\n}\n\nfunction commitPlacement(finishedWork) {\n\n\n  var parentFiber = getHostParentFiber(finishedWork); // Note: these two variables *must* always be updated together.\n\n  switch (parentFiber.tag) {\n    case HostComponent:\n      {\n        var parent = parentFiber.stateNode;\n\n        if (parentFiber.flags & ContentReset) {\n          // Reset the text content of the parent before doing any insertions\n          resetTextContent(parent); // Clear ContentReset from the effect tag\n\n          parentFiber.flags &= ~ContentReset;\n        }\n\n        var before = getHostSibling(finishedWork); // We only have the top Fiber that was inserted but we need to recurse down its\n        // children to find all the terminal nodes.\n\n        insertOrAppendPlacementNode(finishedWork, before, parent);\n        break;\n      }\n\n    case HostRoot:\n    case HostPortal:\n      {\n        var _parent = parentFiber.stateNode.containerInfo;\n\n        var _before = getHostSibling(finishedWork);\n\n        insertOrAppendPlacementNodeIntoContainer(finishedWork, _before, _parent);\n        break;\n      }\n    // eslint-disable-next-line-no-fallthrough\n\n    default:\n      throw new Error('Invalid host parent fiber. This error is likely caused by a bug ' + 'in React. Please file an issue.');\n  }\n}\n\nfunction insertOrAppendPlacementNodeIntoContainer(node, before, parent) {\n  var tag = node.tag;\n  var isHost = tag === HostComponent || tag === HostText;\n\n  if (isHost) {\n    var stateNode = node.stateNode;\n\n    if (before) {\n      insertInContainerBefore(parent, stateNode, before);\n    } else {\n      appendChildToContainer(parent, stateNode);\n    }\n  } else if (tag === HostPortal) ; else {\n    var child = node.child;\n\n    if (child !== null) {\n      insertOrAppendPlacementNodeIntoContainer(child, before, parent);\n      var sibling = child.sibling;\n\n      while (sibling !== null) {\n        insertOrAppendPlacementNodeIntoContainer(sibling, before, parent);\n        sibling = sibling.sibling;\n      }\n    }\n  }\n}\n\nfunction insertOrAppendPlacementNode(node, before, parent) {\n  var tag = node.tag;\n  var isHost = tag === HostComponent || tag === HostText;\n\n  if (isHost) {\n    var stateNode = node.stateNode;\n\n    if (before) {\n      insertBefore(parent, stateNode, before);\n    } else {\n      appendChild(parent, stateNode);\n    }\n  } else if (tag === HostPortal) ; else {\n    var child = node.child;\n\n    if (child !== null) {\n      insertOrAppendPlacementNode(child, before, parent);\n      var sibling = child.sibling;\n\n      while (sibling !== null) {\n        insertOrAppendPlacementNode(sibling, before, parent);\n        sibling = sibling.sibling;\n      }\n    }\n  }\n} // These are tracked on the stack as we recursively traverse a\n// deleted subtree.\n// TODO: Update these during the whole mutation phase, not just during\n// a deletion.\n\n\nvar hostParent = null;\nvar hostParentIsContainer = false;\n\nfunction commitDeletionEffects(root, returnFiber, deletedFiber) {\n  {\n    // We only have the top Fiber that was deleted but we need to recurse down its\n    // children to find all the terminal nodes.\n    // Recursively delete all host nodes from the parent, detach refs, clean\n    // up mounted layout effects, and call componentWillUnmount.\n    // We only need to remove the topmost host child in each branch. But then we\n    // still need to keep traversing to unmount effects, refs, and cWU. TODO: We\n    // could split this into two separate traversals functions, where the second\n    // one doesn't include any removeChild logic. This is maybe the same\n    // function as \"disappearLayoutEffects\" (or whatever that turns into after\n    // the layout phase is refactored to use recursion).\n    // Before starting, find the nearest host parent on the stack so we know\n    // which instance/container to remove the children from.\n    // TODO: Instead of searching up the fiber return path on every deletion, we\n    // can track the nearest host component on the JS stack as we traverse the\n    // tree during the commit phase. This would make insertions faster, too.\n    var parent = returnFiber;\n\n    findParent: while (parent !== null) {\n      switch (parent.tag) {\n        case HostComponent:\n          {\n            hostParent = parent.stateNode;\n            hostParentIsContainer = false;\n            break findParent;\n          }\n\n        case HostRoot:\n          {\n            hostParent = parent.stateNode.containerInfo;\n            hostParentIsContainer = true;\n            break findParent;\n          }\n\n        case HostPortal:\n          {\n            hostParent = parent.stateNode.containerInfo;\n            hostParentIsContainer = true;\n            break findParent;\n          }\n      }\n\n      parent = parent.return;\n    }\n\n    if (hostParent === null) {\n      throw new Error('Expected to find a host parent. This error is likely caused by ' + 'a bug in React. Please file an issue.');\n    }\n\n    commitDeletionEffectsOnFiber(root, returnFiber, deletedFiber);\n    hostParent = null;\n    hostParentIsContainer = false;\n  }\n\n  detachFiberMutation(deletedFiber);\n}\n\nfunction recursivelyTraverseDeletionEffects(finishedRoot, nearestMountedAncestor, parent) {\n  // TODO: Use a static flag to skip trees that don't have unmount effects\n  var child = parent.child;\n\n  while (child !== null) {\n    commitDeletionEffectsOnFiber(finishedRoot, nearestMountedAncestor, child);\n    child = child.sibling;\n  }\n}\n\nfunction commitDeletionEffectsOnFiber(finishedRoot, nearestMountedAncestor, deletedFiber) {\n  onCommitUnmount(deletedFiber); // The cases in this outer switch modify the stack before they traverse\n  // into their subtree. There are simpler cases in the inner switch\n  // that don't modify the stack.\n\n  switch (deletedFiber.tag) {\n    case HostComponent:\n      {\n        if (!offscreenSubtreeWasHidden) {\n          safelyDetachRef(deletedFiber, nearestMountedAncestor);\n        } // Intentional fallthrough to next branch\n\n      }\n    // eslint-disable-next-line-no-fallthrough\n\n    case HostText:\n      {\n        // We only need to remove the nearest host child. Set the host parent\n        // to `null` on the stack to indicate that nested children don't\n        // need to be removed.\n        {\n          var prevHostParent = hostParent;\n          var prevHostParentIsContainer = hostParentIsContainer;\n          hostParent = null;\n          recursivelyTraverseDeletionEffects(finishedRoot, nearestMountedAncestor, deletedFiber);\n          hostParent = prevHostParent;\n          hostParentIsContainer = prevHostParentIsContainer;\n\n          if (hostParent !== null) {\n            // Now that all the child effects have unmounted, we can remove the\n            // node from the tree.\n            if (hostParentIsContainer) {\n              removeChildFromContainer(hostParent, deletedFiber.stateNode);\n            } else {\n              removeChild(hostParent, deletedFiber.stateNode);\n            }\n          }\n        }\n\n        return;\n      }\n\n    case DehydratedFragment:\n      {\n        // Delete the dehydrated suspense boundary and all of its content.\n\n\n        {\n          if (hostParent !== null) {\n            if (hostParentIsContainer) {\n              clearSuspenseBoundaryFromContainer(hostParent, deletedFiber.stateNode);\n            } else {\n              clearSuspenseBoundary(hostParent, deletedFiber.stateNode);\n            }\n          }\n        }\n\n        return;\n      }\n\n    case HostPortal:\n      {\n        {\n          // When we go into a portal, it becomes the parent to remove from.\n          var _prevHostParent = hostParent;\n          var _prevHostParentIsContainer = hostParentIsContainer;\n          hostParent = deletedFiber.stateNode.containerInfo;\n          hostParentIsContainer = true;\n          recursivelyTraverseDeletionEffects(finishedRoot, nearestMountedAncestor, deletedFiber);\n          hostParent = _prevHostParent;\n          hostParentIsContainer = _prevHostParentIsContainer;\n        }\n\n        return;\n      }\n\n    case FunctionComponent:\n    case ForwardRef:\n    case MemoComponent:\n    case SimpleMemoComponent:\n      {\n        if (!offscreenSubtreeWasHidden) {\n          var updateQueue = deletedFiber.updateQueue;\n\n          if (updateQueue !== null) {\n            var lastEffect = updateQueue.lastEffect;\n\n            if (lastEffect !== null) {\n              var firstEffect = lastEffect.next;\n              var effect = firstEffect;\n\n              do {\n                var _effect = effect,\n                    destroy = _effect.destroy,\n                    tag = _effect.tag;\n\n                if (destroy !== undefined) {\n                  if ((tag & Insertion) !== NoFlags$1) {\n                    safelyCallDestroy(deletedFiber, nearestMountedAncestor, destroy);\n                  } else if ((tag & Layout) !== NoFlags$1) {\n                    {\n                      markComponentLayoutEffectUnmountStarted(deletedFiber);\n                    }\n\n                    if ( deletedFiber.mode & ProfileMode) {\n                      startLayoutEffectTimer();\n                      safelyCallDestroy(deletedFiber, nearestMountedAncestor, destroy);\n                      recordLayoutEffectDuration(deletedFiber);\n                    } else {\n                      safelyCallDestroy(deletedFiber, nearestMountedAncestor, destroy);\n                    }\n\n                    {\n                      markComponentLayoutEffectUnmountStopped();\n                    }\n                  }\n                }\n\n                effect = effect.next;\n              } while (effect !== firstEffect);\n            }\n          }\n        }\n\n        recursivelyTraverseDeletionEffects(finishedRoot, nearestMountedAncestor, deletedFiber);\n        return;\n      }\n\n    case ClassComponent:\n      {\n        if (!offscreenSubtreeWasHidden) {\n          safelyDetachRef(deletedFiber, nearestMountedAncestor);\n          var instance = deletedFiber.stateNode;\n\n          if (typeof instance.componentWillUnmount === 'function') {\n            safelyCallComponentWillUnmount(deletedFiber, nearestMountedAncestor, instance);\n          }\n        }\n\n        recursivelyTraverseDeletionEffects(finishedRoot, nearestMountedAncestor, deletedFiber);\n        return;\n      }\n\n    case ScopeComponent:\n      {\n\n        recursivelyTraverseDeletionEffects(finishedRoot, nearestMountedAncestor, deletedFiber);\n        return;\n      }\n\n    case OffscreenComponent:\n      {\n        if ( // TODO: Remove this dead flag\n         deletedFiber.mode & ConcurrentMode) {\n          // If this offscreen component is hidden, we already unmounted it. Before\n          // deleting the children, track that it's already unmounted so that we\n          // don't attempt to unmount the effects again.\n          // TODO: If the tree is hidden, in most cases we should be able to skip\n          // over the nested children entirely. An exception is we haven't yet found\n          // the topmost host node to delete, which we already track on the stack.\n          // But the other case is portals, which need to be detached no matter how\n          // deeply they are nested. We should use a subtree flag to track whether a\n          // subtree includes a nested portal.\n          var prevOffscreenSubtreeWasHidden = offscreenSubtreeWasHidden;\n          offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden || deletedFiber.memoizedState !== null;\n          recursivelyTraverseDeletionEffects(finishedRoot, nearestMountedAncestor, deletedFiber);\n          offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden;\n        } else {\n          recursivelyTraverseDeletionEffects(finishedRoot, nearestMountedAncestor, deletedFiber);\n        }\n\n        break;\n      }\n\n    default:\n      {\n        recursivelyTraverseDeletionEffects(finishedRoot, nearestMountedAncestor, deletedFiber);\n        return;\n      }\n  }\n}\n\nfunction commitSuspenseCallback(finishedWork) {\n  // TODO: Move this to passive phase\n  var newState = finishedWork.memoizedState;\n}\n\nfunction commitSuspenseHydrationCallbacks(finishedRoot, finishedWork) {\n\n  var newState = finishedWork.memoizedState;\n\n  if (newState === null) {\n    var current = finishedWork.alternate;\n\n    if (current !== null) {\n      var prevState = current.memoizedState;\n\n      if (prevState !== null) {\n        var suspenseInstance = prevState.dehydrated;\n\n        if (suspenseInstance !== null) {\n          commitHydratedSuspenseInstance(suspenseInstance);\n        }\n      }\n    }\n  }\n}\n\nfunction attachSuspenseRetryListeners(finishedWork) {\n  // If this boundary just timed out, then it will have a set of wakeables.\n  // For each wakeable, attach a listener so that when it resolves, React\n  // attempts to re-render the boundary in the primary (pre-timeout) state.\n  var wakeables = finishedWork.updateQueue;\n\n  if (wakeables !== null) {\n    finishedWork.updateQueue = null;\n    var retryCache = finishedWork.stateNode;\n\n    if (retryCache === null) {\n      retryCache = finishedWork.stateNode = new PossiblyWeakSet();\n    }\n\n    wakeables.forEach(function (wakeable) {\n      // Memoize using the boundary fiber to prevent redundant listeners.\n      var retry = resolveRetryWakeable.bind(null, finishedWork, wakeable);\n\n      if (!retryCache.has(wakeable)) {\n        retryCache.add(wakeable);\n\n        {\n          if (isDevToolsPresent) {\n            if (inProgressLanes !== null && inProgressRoot !== null) {\n              // If we have pending work still, associate the original updaters with it.\n              restorePendingUpdaters(inProgressRoot, inProgressLanes);\n            } else {\n              throw Error('Expected finished root and lanes to be set. This is a bug in React.');\n            }\n          }\n        }\n\n        wakeable.then(retry, retry);\n      }\n    });\n  }\n} // This function detects when a Suspense boundary goes from visible to hidden.\nfunction commitMutationEffects(root, finishedWork, committedLanes) {\n  inProgressLanes = committedLanes;\n  inProgressRoot = root;\n  setCurrentFiber(finishedWork);\n  commitMutationEffectsOnFiber(finishedWork, root);\n  setCurrentFiber(finishedWork);\n  inProgressLanes = null;\n  inProgressRoot = null;\n}\n\nfunction recursivelyTraverseMutationEffects(root, parentFiber, lanes) {\n  // Deletions effects can be scheduled on any fiber type. They need to happen\n  // before the children effects hae fired.\n  var deletions = parentFiber.deletions;\n\n  if (deletions !== null) {\n    for (var i = 0; i < deletions.length; i++) {\n      var childToDelete = deletions[i];\n\n      try {\n        commitDeletionEffects(root, parentFiber, childToDelete);\n      } catch (error) {\n        captureCommitPhaseError(childToDelete, parentFiber, error);\n      }\n    }\n  }\n\n  var prevDebugFiber = getCurrentFiber();\n\n  if (parentFiber.subtreeFlags & MutationMask) {\n    var child = parentFiber.child;\n\n    while (child !== null) {\n      setCurrentFiber(child);\n      commitMutationEffectsOnFiber(child, root);\n      child = child.sibling;\n    }\n  }\n\n  setCurrentFiber(prevDebugFiber);\n}\n\nfunction commitMutationEffectsOnFiber(finishedWork, root, lanes) {\n  var current = finishedWork.alternate;\n  var flags = finishedWork.flags; // The effect flag should be checked *after* we refine the type of fiber,\n  // because the fiber tag is more specific. An exception is any flag related\n  // to reconcilation, because those can be set on all fiber types.\n\n  switch (finishedWork.tag) {\n    case FunctionComponent:\n    case ForwardRef:\n    case MemoComponent:\n    case SimpleMemoComponent:\n      {\n        recursivelyTraverseMutationEffects(root, finishedWork);\n        commitReconciliationEffects(finishedWork);\n\n        if (flags & Update) {\n          try {\n            commitHookEffectListUnmount(Insertion | HasEffect, finishedWork, finishedWork.return);\n            commitHookEffectListMount(Insertion | HasEffect, finishedWork);\n          } catch (error) {\n            captureCommitPhaseError(finishedWork, finishedWork.return, error);\n          } // Layout effects are destroyed during the mutation phase so that all\n          // destroy functions for all fibers are called before any create functions.\n          // This prevents sibling component effects from interfering with each other,\n          // e.g. a destroy function in one component should never override a ref set\n          // by a create function in another component during the same commit.\n\n\n          if ( finishedWork.mode & ProfileMode) {\n            try {\n              startLayoutEffectTimer();\n              commitHookEffectListUnmount(Layout | HasEffect, finishedWork, finishedWork.return);\n            } catch (error) {\n              captureCommitPhaseError(finishedWork, finishedWork.return, error);\n            }\n\n            recordLayoutEffectDuration(finishedWork);\n          } else {\n            try {\n              commitHookEffectListUnmount(Layout | HasEffect, finishedWork, finishedWork.return);\n            } catch (error) {\n              captureCommitPhaseError(finishedWork, finishedWork.return, error);\n            }\n          }\n        }\n\n        return;\n      }\n\n    case ClassComponent:\n      {\n        recursivelyTraverseMutationEffects(root, finishedWork);\n        commitReconciliationEffects(finishedWork);\n\n        if (flags & Ref) {\n          if (current !== null) {\n            safelyDetachRef(current, current.return);\n          }\n        }\n\n        return;\n      }\n\n    case HostComponent:\n      {\n        recursivelyTraverseMutationEffects(root, finishedWork);\n        commitReconciliationEffects(finishedWork);\n\n        if (flags & Ref) {\n          if (current !== null) {\n            safelyDetachRef(current, current.return);\n          }\n        }\n\n        {\n          // TODO: ContentReset gets cleared by the children during the commit\n          // phase. This is a refactor hazard because it means we must read\n          // flags the flags after `commitReconciliationEffects` has already run;\n          // the order matters. We should refactor so that ContentReset does not\n          // rely on mutating the flag during commit. Like by setting a flag\n          // during the render phase instead.\n          if (finishedWork.flags & ContentReset) {\n            var instance = finishedWork.stateNode;\n\n            try {\n              resetTextContent(instance);\n            } catch (error) {\n              captureCommitPhaseError(finishedWork, finishedWork.return, error);\n            }\n          }\n\n          if (flags & Update) {\n            var _instance4 = finishedWork.stateNode;\n\n            if (_instance4 != null) {\n              // Commit the work prepared earlier.\n              var newProps = finishedWork.memoizedProps; // For hydration we reuse the update path but we treat the oldProps\n              // as the newProps. The updatePayload will contain the real change in\n              // this case.\n\n              var oldProps = current !== null ? current.memoizedProps : newProps;\n              var type = finishedWork.type; // TODO: Type the updateQueue to be specific to host components.\n\n              var updatePayload = finishedWork.updateQueue;\n              finishedWork.updateQueue = null;\n\n              if (updatePayload !== null) {\n                try {\n                  commitUpdate(_instance4, updatePayload, type, oldProps, newProps, finishedWork);\n                } catch (error) {\n                  captureCommitPhaseError(finishedWork, finishedWork.return, error);\n                }\n              }\n            }\n          }\n        }\n\n        return;\n      }\n\n    case HostText:\n      {\n        recursivelyTraverseMutationEffects(root, finishedWork);\n        commitReconciliationEffects(finishedWork);\n\n        if (flags & Update) {\n          {\n            if (finishedWork.stateNode === null) {\n              throw new Error('This should have a text node initialized. This error is likely ' + 'caused by a bug in React. Please file an issue.');\n            }\n\n            var textInstance = finishedWork.stateNode;\n            var newText = finishedWork.memoizedProps; // For hydration we reuse the update path but we treat the oldProps\n            // as the newProps. The updatePayload will contain the real change in\n            // this case.\n\n            var oldText = current !== null ? current.memoizedProps : newText;\n\n            try {\n              commitTextUpdate(textInstance, oldText, newText);\n            } catch (error) {\n              captureCommitPhaseError(finishedWork, finishedWork.return, error);\n            }\n          }\n        }\n\n        return;\n      }\n\n    case HostRoot:\n      {\n        recursivelyTraverseMutationEffects(root, finishedWork);\n        commitReconciliationEffects(finishedWork);\n\n        if (flags & Update) {\n          {\n            if (current !== null) {\n              var prevRootState = current.memoizedState;\n\n              if (prevRootState.isDehydrated) {\n                try {\n                  commitHydratedContainer(root.containerInfo);\n                } catch (error) {\n                  captureCommitPhaseError(finishedWork, finishedWork.return, error);\n                }\n              }\n            }\n          }\n        }\n\n        return;\n      }\n\n    case HostPortal:\n      {\n        recursivelyTraverseMutationEffects(root, finishedWork);\n        commitReconciliationEffects(finishedWork);\n\n        return;\n      }\n\n    case SuspenseComponent:\n      {\n        recursivelyTraverseMutationEffects(root, finishedWork);\n        commitReconciliationEffects(finishedWork);\n        var offscreenFiber = finishedWork.child;\n\n        if (offscreenFiber.flags & Visibility) {\n          var offscreenInstance = offscreenFiber.stateNode;\n          var newState = offscreenFiber.memoizedState;\n          var isHidden = newState !== null; // Track the current state on the Offscreen instance so we can\n          // read it during an event\n\n          offscreenInstance.isHidden = isHidden;\n\n          if (isHidden) {\n            var wasHidden = offscreenFiber.alternate !== null && offscreenFiber.alternate.memoizedState !== null;\n\n            if (!wasHidden) {\n              // TODO: Move to passive phase\n              markCommitTimeOfFallback();\n            }\n          }\n        }\n\n        if (flags & Update) {\n          try {\n            commitSuspenseCallback(finishedWork);\n          } catch (error) {\n            captureCommitPhaseError(finishedWork, finishedWork.return, error);\n          }\n\n          attachSuspenseRetryListeners(finishedWork);\n        }\n\n        return;\n      }\n\n    case OffscreenComponent:\n      {\n        var _wasHidden = current !== null && current.memoizedState !== null;\n\n        if ( // TODO: Remove this dead flag\n         finishedWork.mode & ConcurrentMode) {\n          // Before committing the children, track on the stack whether this\n          // offscreen subtree was already hidden, so that we don't unmount the\n          // effects again.\n          var prevOffscreenSubtreeWasHidden = offscreenSubtreeWasHidden;\n          offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden || _wasHidden;\n          recursivelyTraverseMutationEffects(root, finishedWork);\n          offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden;\n        } else {\n          recursivelyTraverseMutationEffects(root, finishedWork);\n        }\n\n        commitReconciliationEffects(finishedWork);\n\n        if (flags & Visibility) {\n          var _offscreenInstance = finishedWork.stateNode;\n          var _newState = finishedWork.memoizedState;\n\n          var _isHidden = _newState !== null;\n\n          var offscreenBoundary = finishedWork; // Track the current state on the Offscreen instance so we can\n          // read it during an event\n\n          _offscreenInstance.isHidden = _isHidden;\n\n          {\n            if (_isHidden) {\n              if (!_wasHidden) {\n                if ((offscreenBoundary.mode & ConcurrentMode) !== NoMode) {\n                  nextEffect = offscreenBoundary;\n                  var offscreenChild = offscreenBoundary.child;\n\n                  while (offscreenChild !== null) {\n                    nextEffect = offscreenChild;\n                    disappearLayoutEffects_begin(offscreenChild);\n                    offscreenChild = offscreenChild.sibling;\n                  }\n                }\n              }\n            }\n          }\n\n          {\n            // TODO: This needs to run whenever there's an insertion or update\n            // inside a hidden Offscreen tree.\n            hideOrUnhideAllChildren(offscreenBoundary, _isHidden);\n          }\n        }\n\n        return;\n      }\n\n    case SuspenseListComponent:\n      {\n        recursivelyTraverseMutationEffects(root, finishedWork);\n        commitReconciliationEffects(finishedWork);\n\n        if (flags & Update) {\n          attachSuspenseRetryListeners(finishedWork);\n        }\n\n        return;\n      }\n\n    case ScopeComponent:\n      {\n\n        return;\n      }\n\n    default:\n      {\n        recursivelyTraverseMutationEffects(root, finishedWork);\n        commitReconciliationEffects(finishedWork);\n        return;\n      }\n  }\n}\n\nfunction commitReconciliationEffects(finishedWork) {\n  // Placement effects (insertions, reorders) can be scheduled on any fiber\n  // type. They needs to happen after the children effects have fired, but\n  // before the effects on this fiber have fired.\n  var flags = finishedWork.flags;\n\n  if (flags & Placement) {\n    try {\n      commitPlacement(finishedWork);\n    } catch (error) {\n      captureCommitPhaseError(finishedWork, finishedWork.return, error);\n    } // Clear the \"placement\" from effect tag so that we know that this is\n    // inserted, before any life-cycles like componentDidMount gets called.\n    // TODO: findDOMNode doesn't rely on this any more but isMounted does\n    // and isMounted is deprecated anyway so we should be able to kill this.\n\n\n    finishedWork.flags &= ~Placement;\n  }\n\n  if (flags & Hydrating) {\n    finishedWork.flags &= ~Hydrating;\n  }\n}\n\nfunction commitLayoutEffects(finishedWork, root, committedLanes) {\n  inProgressLanes = committedLanes;\n  inProgressRoot = root;\n  nextEffect = finishedWork;\n  commitLayoutEffects_begin(finishedWork, root, committedLanes);\n  inProgressLanes = null;\n  inProgressRoot = null;\n}\n\nfunction commitLayoutEffects_begin(subtreeRoot, root, committedLanes) {\n  // Suspense layout effects semantics don't change for legacy roots.\n  var isModernRoot = (subtreeRoot.mode & ConcurrentMode) !== NoMode;\n\n  while (nextEffect !== null) {\n    var fiber = nextEffect;\n    var firstChild = fiber.child;\n\n    if ( fiber.tag === OffscreenComponent && isModernRoot) {\n      // Keep track of the current Offscreen stack's state.\n      var isHidden = fiber.memoizedState !== null;\n      var newOffscreenSubtreeIsHidden = isHidden || offscreenSubtreeIsHidden;\n\n      if (newOffscreenSubtreeIsHidden) {\n        // The Offscreen tree is hidden. Skip over its layout effects.\n        commitLayoutMountEffects_complete(subtreeRoot, root, committedLanes);\n        continue;\n      } else {\n        // TODO (Offscreen) Also check: subtreeFlags & LayoutMask\n        var current = fiber.alternate;\n        var wasHidden = current !== null && current.memoizedState !== null;\n        var newOffscreenSubtreeWasHidden = wasHidden || offscreenSubtreeWasHidden;\n        var prevOffscreenSubtreeIsHidden = offscreenSubtreeIsHidden;\n        var prevOffscreenSubtreeWasHidden = offscreenSubtreeWasHidden; // Traverse the Offscreen subtree with the current Offscreen as the root.\n\n        offscreenSubtreeIsHidden = newOffscreenSubtreeIsHidden;\n        offscreenSubtreeWasHidden = newOffscreenSubtreeWasHidden;\n\n        if (offscreenSubtreeWasHidden && !prevOffscreenSubtreeWasHidden) {\n          // This is the root of a reappearing boundary. Turn its layout effects\n          // back on.\n          nextEffect = fiber;\n          reappearLayoutEffects_begin(fiber);\n        }\n\n        var child = firstChild;\n\n        while (child !== null) {\n          nextEffect = child;\n          commitLayoutEffects_begin(child, // New root; bubble back up to here and stop.\n          root, committedLanes);\n          child = child.sibling;\n        } // Restore Offscreen state and resume in our-progress traversal.\n\n\n        nextEffect = fiber;\n        offscreenSubtreeIsHidden = prevOffscreenSubtreeIsHidden;\n        offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden;\n        commitLayoutMountEffects_complete(subtreeRoot, root, committedLanes);\n        continue;\n      }\n    }\n\n    if ((fiber.subtreeFlags & LayoutMask) !== NoFlags && firstChild !== null) {\n      firstChild.return = fiber;\n      nextEffect = firstChild;\n    } else {\n      commitLayoutMountEffects_complete(subtreeRoot, root, committedLanes);\n    }\n  }\n}\n\nfunction commitLayoutMountEffects_complete(subtreeRoot, root, committedLanes) {\n  while (nextEffect !== null) {\n    var fiber = nextEffect;\n\n    if ((fiber.flags & LayoutMask) !== NoFlags) {\n      var current = fiber.alternate;\n      setCurrentFiber(fiber);\n\n      try {\n        commitLayoutEffectOnFiber(root, current, fiber, committedLanes);\n      } catch (error) {\n        captureCommitPhaseError(fiber, fiber.return, error);\n      }\n\n      resetCurrentFiber();\n    }\n\n    if (fiber === subtreeRoot) {\n      nextEffect = null;\n      return;\n    }\n\n    var sibling = fiber.sibling;\n\n    if (sibling !== null) {\n      sibling.return = fiber.return;\n      nextEffect = sibling;\n      return;\n    }\n\n    nextEffect = fiber.return;\n  }\n}\n\nfunction disappearLayoutEffects_begin(subtreeRoot) {\n  while (nextEffect !== null) {\n    var fiber = nextEffect;\n    var firstChild = fiber.child; // TODO (Offscreen) Check: flags & (RefStatic | LayoutStatic)\n\n    switch (fiber.tag) {\n      case FunctionComponent:\n      case ForwardRef:\n      case MemoComponent:\n      case SimpleMemoComponent:\n        {\n          if ( fiber.mode & ProfileMode) {\n            try {\n              startLayoutEffectTimer();\n              commitHookEffectListUnmount(Layout, fiber, fiber.return);\n            } finally {\n              recordLayoutEffectDuration(fiber);\n            }\n          } else {\n            commitHookEffectListUnmount(Layout, fiber, fiber.return);\n          }\n\n          break;\n        }\n\n      case ClassComponent:\n        {\n          // TODO (Offscreen) Check: flags & RefStatic\n          safelyDetachRef(fiber, fiber.return);\n          var instance = fiber.stateNode;\n\n          if (typeof instance.componentWillUnmount === 'function') {\n            safelyCallComponentWillUnmount(fiber, fiber.return, instance);\n          }\n\n          break;\n        }\n\n      case HostComponent:\n        {\n          safelyDetachRef(fiber, fiber.return);\n          break;\n        }\n\n      case OffscreenComponent:\n        {\n          // Check if this is a\n          var isHidden = fiber.memoizedState !== null;\n\n          if (isHidden) {\n            // Nested Offscreen tree is already hidden. Don't disappear\n            // its effects.\n            disappearLayoutEffects_complete(subtreeRoot);\n            continue;\n          }\n\n          break;\n        }\n    } // TODO (Offscreen) Check: subtreeFlags & LayoutStatic\n\n\n    if (firstChild !== null) {\n      firstChild.return = fiber;\n      nextEffect = firstChild;\n    } else {\n      disappearLayoutEffects_complete(subtreeRoot);\n    }\n  }\n}\n\nfunction disappearLayoutEffects_complete(subtreeRoot) {\n  while (nextEffect !== null) {\n    var fiber = nextEffect;\n\n    if (fiber === subtreeRoot) {\n      nextEffect = null;\n      return;\n    }\n\n    var sibling = fiber.sibling;\n\n    if (sibling !== null) {\n      sibling.return = fiber.return;\n      nextEffect = sibling;\n      return;\n    }\n\n    nextEffect = fiber.return;\n  }\n}\n\nfunction reappearLayoutEffects_begin(subtreeRoot) {\n  while (nextEffect !== null) {\n    var fiber = nextEffect;\n    var firstChild = fiber.child;\n\n    if (fiber.tag === OffscreenComponent) {\n      var isHidden = fiber.memoizedState !== null;\n\n      if (isHidden) {\n        // Nested Offscreen tree is still hidden. Don't re-appear its effects.\n        reappearLayoutEffects_complete(subtreeRoot);\n        continue;\n      }\n    } // TODO (Offscreen) Check: subtreeFlags & LayoutStatic\n\n\n    if (firstChild !== null) {\n      // This node may have been reused from a previous render, so we can't\n      // assume its return pointer is correct.\n      firstChild.return = fiber;\n      nextEffect = firstChild;\n    } else {\n      reappearLayoutEffects_complete(subtreeRoot);\n    }\n  }\n}\n\nfunction reappearLayoutEffects_complete(subtreeRoot) {\n  while (nextEffect !== null) {\n    var fiber = nextEffect; // TODO (Offscreen) Check: flags & LayoutStatic\n\n    setCurrentFiber(fiber);\n\n    try {\n      reappearLayoutEffectsOnFiber(fiber);\n    } catch (error) {\n      captureCommitPhaseError(fiber, fiber.return, error);\n    }\n\n    resetCurrentFiber();\n\n    if (fiber === subtreeRoot) {\n      nextEffect = null;\n      return;\n    }\n\n    var sibling = fiber.sibling;\n\n    if (sibling !== null) {\n      // This node may have been reused from a previous render, so we can't\n      // assume its return pointer is correct.\n      sibling.return = fiber.return;\n      nextEffect = sibling;\n      return;\n    }\n\n    nextEffect = fiber.return;\n  }\n}\n\nfunction commitPassiveMountEffects(root, finishedWork, committedLanes, committedTransitions) {\n  nextEffect = finishedWork;\n  commitPassiveMountEffects_begin(finishedWork, root, committedLanes, committedTransitions);\n}\n\nfunction commitPassiveMountEffects_begin(subtreeRoot, root, committedLanes, committedTransitions) {\n  while (nextEffect !== null) {\n    var fiber = nextEffect;\n    var firstChild = fiber.child;\n\n    if ((fiber.subtreeFlags & PassiveMask) !== NoFlags && firstChild !== null) {\n      firstChild.return = fiber;\n      nextEffect = firstChild;\n    } else {\n      commitPassiveMountEffects_complete(subtreeRoot, root, committedLanes, committedTransitions);\n    }\n  }\n}\n\nfunction commitPassiveMountEffects_complete(subtreeRoot, root, committedLanes, committedTransitions) {\n  while (nextEffect !== null) {\n    var fiber = nextEffect;\n\n    if ((fiber.flags & Passive) !== NoFlags) {\n      setCurrentFiber(fiber);\n\n      try {\n        commitPassiveMountOnFiber(root, fiber, committedLanes, committedTransitions);\n      } catch (error) {\n        captureCommitPhaseError(fiber, fiber.return, error);\n      }\n\n      resetCurrentFiber();\n    }\n\n    if (fiber === subtreeRoot) {\n      nextEffect = null;\n      return;\n    }\n\n    var sibling = fiber.sibling;\n\n    if (sibling !== null) {\n      sibling.return = fiber.return;\n      nextEffect = sibling;\n      return;\n    }\n\n    nextEffect = fiber.return;\n  }\n}\n\nfunction commitPassiveMountOnFiber(finishedRoot, finishedWork, committedLanes, committedTransitions) {\n  switch (finishedWork.tag) {\n    case FunctionComponent:\n    case ForwardRef:\n    case SimpleMemoComponent:\n      {\n        if ( finishedWork.mode & ProfileMode) {\n          startPassiveEffectTimer();\n\n          try {\n            commitHookEffectListMount(Passive$1 | HasEffect, finishedWork);\n          } finally {\n            recordPassiveEffectDuration(finishedWork);\n          }\n        } else {\n          commitHookEffectListMount(Passive$1 | HasEffect, finishedWork);\n        }\n\n        break;\n      }\n  }\n}\n\nfunction commitPassiveUnmountEffects(firstChild) {\n  nextEffect = firstChild;\n  commitPassiveUnmountEffects_begin();\n}\n\nfunction commitPassiveUnmountEffects_begin() {\n  while (nextEffect !== null) {\n    var fiber = nextEffect;\n    var child = fiber.child;\n\n    if ((nextEffect.flags & ChildDeletion) !== NoFlags) {\n      var deletions = fiber.deletions;\n\n      if (deletions !== null) {\n        for (var i = 0; i < deletions.length; i++) {\n          var fiberToDelete = deletions[i];\n          nextEffect = fiberToDelete;\n          commitPassiveUnmountEffectsInsideOfDeletedTree_begin(fiberToDelete, fiber);\n        }\n\n        {\n          // A fiber was deleted from this parent fiber, but it's still part of\n          // the previous (alternate) parent fiber's list of children. Because\n          // children are a linked list, an earlier sibling that's still alive\n          // will be connected to the deleted fiber via its `alternate`:\n          //\n          //   live fiber\n          //   --alternate--> previous live fiber\n          //   --sibling--> deleted fiber\n          //\n          // We can't disconnect `alternate` on nodes that haven't been deleted\n          // yet, but we can disconnect the `sibling` and `child` pointers.\n          var previousFiber = fiber.alternate;\n\n          if (previousFiber !== null) {\n            var detachedChild = previousFiber.child;\n\n            if (detachedChild !== null) {\n              previousFiber.child = null;\n\n              do {\n                var detachedSibling = detachedChild.sibling;\n                detachedChild.sibling = null;\n                detachedChild = detachedSibling;\n              } while (detachedChild !== null);\n            }\n          }\n        }\n\n        nextEffect = fiber;\n      }\n    }\n\n    if ((fiber.subtreeFlags & PassiveMask) !== NoFlags && child !== null) {\n      child.return = fiber;\n      nextEffect = child;\n    } else {\n      commitPassiveUnmountEffects_complete();\n    }\n  }\n}\n\nfunction commitPassiveUnmountEffects_complete() {\n  while (nextEffect !== null) {\n    var fiber = nextEffect;\n\n    if ((fiber.flags & Passive) !== NoFlags) {\n      setCurrentFiber(fiber);\n      commitPassiveUnmountOnFiber(fiber);\n      resetCurrentFiber();\n    }\n\n    var sibling = fiber.sibling;\n\n    if (sibling !== null) {\n      sibling.return = fiber.return;\n      nextEffect = sibling;\n      return;\n    }\n\n    nextEffect = fiber.return;\n  }\n}\n\nfunction commitPassiveUnmountOnFiber(finishedWork) {\n  switch (finishedWork.tag) {\n    case FunctionComponent:\n    case ForwardRef:\n    case SimpleMemoComponent:\n      {\n        if ( finishedWork.mode & ProfileMode) {\n          startPassiveEffectTimer();\n          commitHookEffectListUnmount(Passive$1 | HasEffect, finishedWork, finishedWork.return);\n          recordPassiveEffectDuration(finishedWork);\n        } else {\n          commitHookEffectListUnmount(Passive$1 | HasEffect, finishedWork, finishedWork.return);\n        }\n\n        break;\n      }\n  }\n}\n\nfunction commitPassiveUnmountEffectsInsideOfDeletedTree_begin(deletedSubtreeRoot, nearestMountedAncestor) {\n  while (nextEffect !== null) {\n    var fiber = nextEffect; // Deletion effects fire in parent -> child order\n    // TODO: Check if fiber has a PassiveStatic flag\n\n    setCurrentFiber(fiber);\n    commitPassiveUnmountInsideDeletedTreeOnFiber(fiber, nearestMountedAncestor);\n    resetCurrentFiber();\n    var child = fiber.child; // TODO: Only traverse subtree if it has a PassiveStatic flag. (But, if we\n    // do this, still need to handle `deletedTreeCleanUpLevel` correctly.)\n\n    if (child !== null) {\n      child.return = fiber;\n      nextEffect = child;\n    } else {\n      commitPassiveUnmountEffectsInsideOfDeletedTree_complete(deletedSubtreeRoot);\n    }\n  }\n}\n\nfunction commitPassiveUnmountEffectsInsideOfDeletedTree_complete(deletedSubtreeRoot) {\n  while (nextEffect !== null) {\n    var fiber = nextEffect;\n    var sibling = fiber.sibling;\n    var returnFiber = fiber.return;\n\n    {\n      // Recursively traverse the entire deleted tree and clean up fiber fields.\n      // This is more aggressive than ideal, and the long term goal is to only\n      // have to detach the deleted tree at the root.\n      detachFiberAfterEffects(fiber);\n\n      if (fiber === deletedSubtreeRoot) {\n        nextEffect = null;\n        return;\n      }\n    }\n\n    if (sibling !== null) {\n      sibling.return = returnFiber;\n      nextEffect = sibling;\n      return;\n    }\n\n    nextEffect = returnFiber;\n  }\n}\n\nfunction commitPassiveUnmountInsideDeletedTreeOnFiber(current, nearestMountedAncestor) {\n  switch (current.tag) {\n    case FunctionComponent:\n    case ForwardRef:\n    case SimpleMemoComponent:\n      {\n        if ( current.mode & ProfileMode) {\n          startPassiveEffectTimer();\n          commitHookEffectListUnmount(Passive$1, current, nearestMountedAncestor);\n          recordPassiveEffectDuration(current);\n        } else {\n          commitHookEffectListUnmount(Passive$1, current, nearestMountedAncestor);\n        }\n\n        break;\n      }\n  }\n} // TODO: Reuse reappearLayoutEffects traversal here?\n\n\nfunction invokeLayoutEffectMountInDEV(fiber) {\n  {\n    // We don't need to re-check StrictEffectsMode here.\n    // This function is only called if that check has already passed.\n    switch (fiber.tag) {\n      case FunctionComponent:\n      case ForwardRef:\n      case SimpleMemoComponent:\n        {\n          try {\n            commitHookEffectListMount(Layout | HasEffect, fiber);\n          } catch (error) {\n            captureCommitPhaseError(fiber, fiber.return, error);\n          }\n\n          break;\n        }\n\n      case ClassComponent:\n        {\n          var instance = fiber.stateNode;\n\n          try {\n            instance.componentDidMount();\n          } catch (error) {\n            captureCommitPhaseError(fiber, fiber.return, error);\n          }\n\n          break;\n        }\n    }\n  }\n}\n\nfunction invokePassiveEffectMountInDEV(fiber) {\n  {\n    // We don't need to re-check StrictEffectsMode here.\n    // This function is only called if that check has already passed.\n    switch (fiber.tag) {\n      case FunctionComponent:\n      case ForwardRef:\n      case SimpleMemoComponent:\n        {\n          try {\n            commitHookEffectListMount(Passive$1 | HasEffect, fiber);\n          } catch (error) {\n            captureCommitPhaseError(fiber, fiber.return, error);\n          }\n\n          break;\n        }\n    }\n  }\n}\n\nfunction invokeLayoutEffectUnmountInDEV(fiber) {\n  {\n    // We don't need to re-check StrictEffectsMode here.\n    // This function is only called if that check has already passed.\n    switch (fiber.tag) {\n      case FunctionComponent:\n      case ForwardRef:\n      case SimpleMemoComponent:\n        {\n          try {\n            commitHookEffectListUnmount(Layout | HasEffect, fiber, fiber.return);\n          } catch (error) {\n            captureCommitPhaseError(fiber, fiber.return, error);\n          }\n\n          break;\n        }\n\n      case ClassComponent:\n        {\n          var instance = fiber.stateNode;\n\n          if (typeof instance.componentWillUnmount === 'function') {\n            safelyCallComponentWillUnmount(fiber, fiber.return, instance);\n          }\n\n          break;\n        }\n    }\n  }\n}\n\nfunction invokePassiveEffectUnmountInDEV(fiber) {\n  {\n    // We don't need to re-check StrictEffectsMode here.\n    // This function is only called if that check has already passed.\n    switch (fiber.tag) {\n      case FunctionComponent:\n      case ForwardRef:\n      case SimpleMemoComponent:\n        {\n          try {\n            commitHookEffectListUnmount(Passive$1 | HasEffect, fiber, fiber.return);\n          } catch (error) {\n            captureCommitPhaseError(fiber, fiber.return, error);\n          }\n        }\n    }\n  }\n}\n\nvar COMPONENT_TYPE = 0;\nvar HAS_PSEUDO_CLASS_TYPE = 1;\nvar ROLE_TYPE = 2;\nvar TEST_NAME_TYPE = 3;\nvar TEXT_TYPE = 4;\n\nif (typeof Symbol === 'function' && Symbol.for) {\n  var symbolFor = Symbol.for;\n  COMPONENT_TYPE = symbolFor('selector.component');\n  HAS_PSEUDO_CLASS_TYPE = symbolFor('selector.has_pseudo_class');\n  ROLE_TYPE = symbolFor('selector.role');\n  TEST_NAME_TYPE = symbolFor('selector.test_id');\n  TEXT_TYPE = symbolFor('selector.text');\n}\nvar commitHooks = [];\nfunction onCommitRoot$1() {\n  {\n    commitHooks.forEach(function (commitHook) {\n      return commitHook();\n    });\n  }\n}\n\nvar ReactCurrentActQueue = ReactSharedInternals.ReactCurrentActQueue;\nfunction isLegacyActEnvironment(fiber) {\n  {\n    // Legacy mode. We preserve the behavior of React 17's act. It assumes an\n    // act environment whenever `jest` is defined, but you can still turn off\n    // spurious warnings by setting IS_REACT_ACT_ENVIRONMENT explicitly\n    // to false.\n    var isReactActEnvironmentGlobal = // $FlowExpectedError \u2013 Flow doesn't know about IS_REACT_ACT_ENVIRONMENT global\n    typeof IS_REACT_ACT_ENVIRONMENT !== 'undefined' ? IS_REACT_ACT_ENVIRONMENT : undefined; // $FlowExpectedError - Flow doesn't know about jest\n\n    var jestIsDefined = typeof jest !== 'undefined';\n    return  jestIsDefined && isReactActEnvironmentGlobal !== false;\n  }\n}\nfunction isConcurrentActEnvironment() {\n  {\n    var isReactActEnvironmentGlobal = // $FlowExpectedError \u2013 Flow doesn't know about IS_REACT_ACT_ENVIRONMENT global\n    typeof IS_REACT_ACT_ENVIRONMENT !== 'undefined' ? IS_REACT_ACT_ENVIRONMENT : undefined;\n\n    if (!isReactActEnvironmentGlobal && ReactCurrentActQueue.current !== null) {\n      // TODO: Include link to relevant documentation page.\n      error('The current testing environment is not configured to support ' + 'act(...)');\n    }\n\n    return isReactActEnvironmentGlobal;\n  }\n}\n\nvar ceil = Math.ceil;\nvar ReactCurrentDispatcher$2 = ReactSharedInternals.ReactCurrentDispatcher,\n    ReactCurrentOwner$2 = ReactSharedInternals.ReactCurrentOwner,\n    ReactCurrentBatchConfig$3 = ReactSharedInternals.ReactCurrentBatchConfig,\n    ReactCurrentActQueue$1 = ReactSharedInternals.ReactCurrentActQueue;\nvar NoContext =\n/*             */\n0;\nvar BatchedContext =\n/*               */\n1;\nvar RenderContext =\n/*                */\n2;\nvar CommitContext =\n/*                */\n4;\nvar RootInProgress = 0;\nvar RootFatalErrored = 1;\nvar RootErrored = 2;\nvar RootSuspended = 3;\nvar RootSuspendedWithDelay = 4;\nvar RootCompleted = 5;\nvar RootDidNotComplete = 6; // Describes where we are in the React execution stack\n\nvar executionContext = NoContext; // The root we're working on\n\nvar workInProgressRoot = null; // The fiber we're working on\n\nvar workInProgress = null; // The lanes we're rendering\n\nvar workInProgressRootRenderLanes = NoLanes; // Stack that allows components to change the render lanes for its subtree\n// This is a superset of the lanes we started working on at the root. The only\n// case where it's different from `workInProgressRootRenderLanes` is when we\n// enter a subtree that is hidden and needs to be unhidden: Suspense and\n// Offscreen component.\n//\n// Most things in the work loop should deal with workInProgressRootRenderLanes.\n// Most things in begin/complete phases should deal with subtreeRenderLanes.\n\nvar subtreeRenderLanes = NoLanes;\nvar subtreeRenderLanesCursor = createCursor(NoLanes); // Whether to root completed, errored, suspended, etc.\n\nvar workInProgressRootExitStatus = RootInProgress; // A fatal error, if one is thrown\n\nvar workInProgressRootFatalError = null; // \"Included\" lanes refer to lanes that were worked on during this render. It's\n// slightly different than `renderLanes` because `renderLanes` can change as you\n// enter and exit an Offscreen tree. This value is the combination of all render\n// lanes for the entire render phase.\n\nvar workInProgressRootIncludedLanes = NoLanes; // The work left over by components that were visited during this render. Only\n// includes unprocessed updates, not work in bailed out children.\n\nvar workInProgressRootSkippedLanes = NoLanes; // Lanes that were updated (in an interleaved event) during this render.\n\nvar workInProgressRootInterleavedUpdatedLanes = NoLanes; // Lanes that were updated during the render phase (*not* an interleaved event).\n\nvar workInProgressRootPingedLanes = NoLanes; // Errors that are thrown during the render phase.\n\nvar workInProgressRootConcurrentErrors = null; // These are errors that we recovered from without surfacing them to the UI.\n// We will log them once the tree commits.\n\nvar workInProgressRootRecoverableErrors = null; // The most recent time we committed a fallback. This lets us ensure a train\n// model where we don't commit new loading states in too quick succession.\n\nvar globalMostRecentFallbackTime = 0;\nvar FALLBACK_THROTTLE_MS = 500; // The absolute time for when we should start giving up on rendering\n// more and prefer CPU suspense heuristics instead.\n\nvar workInProgressRootRenderTargetTime = Infinity; // How long a render is supposed to take before we start following CPU\n// suspense heuristics and opt out of rendering more content.\n\nvar RENDER_TIMEOUT_MS = 500;\nvar workInProgressTransitions = null;\n\nfunction resetRenderTimer() {\n  workInProgressRootRenderTargetTime = now() + RENDER_TIMEOUT_MS;\n}\n\nfunction getRenderTargetTime() {\n  return workInProgressRootRenderTargetTime;\n}\nvar hasUncaughtError = false;\nvar firstUncaughtError = null;\nvar legacyErrorBoundariesThatAlreadyFailed = null; // Only used when enableProfilerNestedUpdateScheduledHook is true;\nvar rootDoesHavePassiveEffects = false;\nvar rootWithPendingPassiveEffects = null;\nvar pendingPassiveEffectsLanes = NoLanes;\nvar pendingPassiveProfilerEffects = [];\nvar pendingPassiveTransitions = null; // Use these to prevent an infinite loop of nested updates\n\nvar NESTED_UPDATE_LIMIT = 50;\nvar nestedUpdateCount = 0;\nvar rootWithNestedUpdates = null;\nvar isFlushingPassiveEffects = false;\nvar didScheduleUpdateDuringPassiveEffects = false;\nvar NESTED_PASSIVE_UPDATE_LIMIT = 50;\nvar nestedPassiveUpdateCount = 0;\nvar rootWithPassiveNestedUpdates = null; // If two updates are scheduled within the same event, we should treat their\n// event times as simultaneous, even if the actual clock time has advanced\n// between the first and second call.\n\nvar currentEventTime = NoTimestamp;\nvar currentEventTransitionLane = NoLanes;\nvar isRunningInsertionEffect = false;\nfunction getWorkInProgressRoot() {\n  return workInProgressRoot;\n}\nfunction requestEventTime() {\n  if ((executionContext & (RenderContext | CommitContext)) !== NoContext) {\n    // We're inside React, so it's fine to read the actual time.\n    return now();\n  } // We're not inside React, so we may be in the middle of a browser event.\n\n\n  if (currentEventTime !== NoTimestamp) {\n    // Use the same start time for all updates until we enter React again.\n    return currentEventTime;\n  } // This is the first update since React yielded. Compute a new start time.\n\n\n  currentEventTime = now();\n  return currentEventTime;\n}\nfunction requestUpdateLane(fiber) {\n  // Special cases\n  var mode = fiber.mode;\n\n  if ((mode & ConcurrentMode) === NoMode) {\n    return SyncLane;\n  } else if ( (executionContext & RenderContext) !== NoContext && workInProgressRootRenderLanes !== NoLanes) {\n    // This is a render phase update. These are not officially supported. The\n    // old behavior is to give this the same \"thread\" (lanes) as\n    // whatever is currently rendering. So if you call `setState` on a component\n    // that happens later in the same render, it will flush. Ideally, we want to\n    // remove the special case and treat them as if they came from an\n    // interleaved event. Regardless, this pattern is not officially supported.\n    // This behavior is only a fallback. The flag only exists until we can roll\n    // out the setState warning, since existing code might accidentally rely on\n    // the current behavior.\n    return pickArbitraryLane(workInProgressRootRenderLanes);\n  }\n\n  var isTransition = requestCurrentTransition() !== NoTransition;\n\n  if (isTransition) {\n    if ( ReactCurrentBatchConfig$3.transition !== null) {\n      var transition = ReactCurrentBatchConfig$3.transition;\n\n      if (!transition._updatedFibers) {\n        transition._updatedFibers = new Set();\n      }\n\n      transition._updatedFibers.add(fiber);\n    } // The algorithm for assigning an update to a lane should be stable for all\n    // updates at the same priority within the same event. To do this, the\n    // inputs to the algorithm must be the same.\n    //\n    // The trick we use is to cache the first of each of these inputs within an\n    // event. Then reset the cached values once we can be sure the event is\n    // over. Our heuristic for that is whenever we enter a concurrent work loop.\n\n\n    if (currentEventTransitionLane === NoLane) {\n      // All transitions within the same event are assigned the same lane.\n      currentEventTransitionLane = claimNextTransitionLane();\n    }\n\n    return currentEventTransitionLane;\n  } // Updates originating inside certain React methods, like flushSync, have\n  // their priority set by tracking it with a context variable.\n  //\n  // The opaque type returned by the host config is internally a lane, so we can\n  // use that directly.\n  // TODO: Move this type conversion to the event priority module.\n\n\n  var updateLane = getCurrentUpdatePriority();\n\n  if (updateLane !== NoLane) {\n    return updateLane;\n  } // This update originated outside React. Ask the host environment for an\n  // appropriate priority, based on the type of event.\n  //\n  // The opaque type returned by the host config is internally a lane, so we can\n  // use that directly.\n  // TODO: Move this type conversion to the event priority module.\n\n\n  var eventLane = getCurrentEventPriority();\n  return eventLane;\n}\n\nfunction requestRetryLane(fiber) {\n  // This is a fork of `requestUpdateLane` designed specifically for Suspense\n  // \"retries\" \u2014 a special update that attempts to flip a Suspense boundary\n  // from its placeholder state to its primary/resolved state.\n  // Special cases\n  var mode = fiber.mode;\n\n  if ((mode & ConcurrentMode) === NoMode) {\n    return SyncLane;\n  }\n\n  return claimNextRetryLane();\n}\n\nfunction scheduleUpdateOnFiber(root, fiber, lane, eventTime) {\n  checkForNestedUpdates();\n\n  {\n    if (isRunningInsertionEffect) {\n      error('useInsertionEffect must not schedule updates.');\n    }\n  }\n\n  {\n    if (isFlushingPassiveEffects) {\n      didScheduleUpdateDuringPassiveEffects = true;\n    }\n  } // Mark that the root has a pending update.\n\n\n  markRootUpdated(root, lane, eventTime);\n\n  if ((executionContext & RenderContext) !== NoLanes && root === workInProgressRoot) {\n    // This update was dispatched during the render phase. This is a mistake\n    // if the update originates from user space (with the exception of local\n    // hook updates, which are handled differently and don't reach this\n    // function), but there are some internal React features that use this as\n    // an implementation detail, like selective hydration.\n    warnAboutRenderPhaseUpdatesInDEV(fiber); // Track lanes that were updated during the render phase\n  } else {\n    // This is a normal update, scheduled from outside the render phase. For\n    // example, during an input event.\n    {\n      if (isDevToolsPresent) {\n        addFiberToLanesMap(root, fiber, lane);\n      }\n    }\n\n    warnIfUpdatesNotWrappedWithActDEV(fiber);\n\n    if (root === workInProgressRoot) {\n      // Received an update to a tree that's in the middle of rendering. Mark\n      // that there was an interleaved update work on this root. Unless the\n      // `deferRenderPhaseUpdateToNextBatch` flag is off and this is a render\n      // phase update. In that case, we don't treat render phase updates as if\n      // they were interleaved, for backwards compat reasons.\n      if ( (executionContext & RenderContext) === NoContext) {\n        workInProgressRootInterleavedUpdatedLanes = mergeLanes(workInProgressRootInterleavedUpdatedLanes, lane);\n      }\n\n      if (workInProgressRootExitStatus === RootSuspendedWithDelay) {\n        // The root already suspended with a delay, which means this render\n        // definitely won't finish. Since we have a new update, let's mark it as\n        // suspended now, right before marking the incoming update. This has the\n        // effect of interrupting the current render and switching to the update.\n        // TODO: Make sure this doesn't override pings that happen while we've\n        // already started rendering.\n        markRootSuspended$1(root, workInProgressRootRenderLanes);\n      }\n    }\n\n    ensureRootIsScheduled(root, eventTime);\n\n    if (lane === SyncLane && executionContext === NoContext && (fiber.mode & ConcurrentMode) === NoMode && // Treat `act` as if it's inside `batchedUpdates`, even in legacy mode.\n    !( ReactCurrentActQueue$1.isBatchingLegacy)) {\n      // Flush the synchronous work now, unless we're already working or inside\n      // a batch. This is intentionally inside scheduleUpdateOnFiber instead of\n      // scheduleCallbackForFiber to preserve the ability to schedule a callback\n      // without immediately flushing it. We only do this for user-initiated\n      // updates, to preserve historical behavior of legacy mode.\n      resetRenderTimer();\n      flushSyncCallbacksOnlyInLegacyMode();\n    }\n  }\n}\nfunction scheduleInitialHydrationOnRoot(root, lane, eventTime) {\n  // This is a special fork of scheduleUpdateOnFiber that is only used to\n  // schedule the initial hydration of a root that has just been created. Most\n  // of the stuff in scheduleUpdateOnFiber can be skipped.\n  //\n  // The main reason for this separate path, though, is to distinguish the\n  // initial children from subsequent updates. In fully client-rendered roots\n  // (createRoot instead of hydrateRoot), all top-level renders are modeled as\n  // updates, but hydration roots are special because the initial render must\n  // match what was rendered on the server.\n  var current = root.current;\n  current.lanes = lane;\n  markRootUpdated(root, lane, eventTime);\n  ensureRootIsScheduled(root, eventTime);\n}\nfunction isUnsafeClassRenderPhaseUpdate(fiber) {\n  // Check if this is a render phase update. Only called by class components,\n  // which special (deprecated) behavior for UNSAFE_componentWillReceive props.\n  return (// TODO: Remove outdated deferRenderPhaseUpdateToNextBatch experiment. We\n    // decided not to enable it.\n     (executionContext & RenderContext) !== NoContext\n  );\n} // Use this function to schedule a task for a root. There's only one task per\n// root; if a task was already scheduled, we'll check to make sure the priority\n// of the existing task is the same as the priority of the next level that the\n// root has work on. This function is called on every update, and right before\n// exiting a task.\n\nfunction ensureRootIsScheduled(root, currentTime) {\n  var existingCallbackNode = root.callbackNode; // Check if any lanes are being starved by other work. If so, mark them as\n  // expired so we know to work on those next.\n\n  markStarvedLanesAsExpired(root, currentTime); // Determine the next lanes to work on, and their priority.\n\n  var nextLanes = getNextLanes(root, root === workInProgressRoot ? workInProgressRootRenderLanes : NoLanes);\n\n  if (nextLanes === NoLanes) {\n    // Special case: There's nothing to work on.\n    if (existingCallbackNode !== null) {\n      cancelCallback$1(existingCallbackNode);\n    }\n\n    root.callbackNode = null;\n    root.callbackPriority = NoLane;\n    return;\n  } // We use the highest priority lane to represent the priority of the callback.\n\n\n  var newCallbackPriority = getHighestPriorityLane(nextLanes); // Check if there's an existing task. We may be able to reuse it.\n\n  var existingCallbackPriority = root.callbackPriority;\n\n  if (existingCallbackPriority === newCallbackPriority && // Special case related to `act`. If the currently scheduled task is a\n  // Scheduler task, rather than an `act` task, cancel it and re-scheduled\n  // on the `act` queue.\n  !( ReactCurrentActQueue$1.current !== null && existingCallbackNode !== fakeActCallbackNode)) {\n    {\n      // If we're going to re-use an existing task, it needs to exist.\n      // Assume that discrete update microtasks are non-cancellable and null.\n      // TODO: Temporary until we confirm this warning is not fired.\n      if (existingCallbackNode == null && existingCallbackPriority !== SyncLane) {\n        error('Expected scheduled callback to exist. This error is likely caused by a bug in React. Please file an issue.');\n      }\n    } // The priority hasn't changed. We can reuse the existing task. Exit.\n\n\n    return;\n  }\n\n  if (existingCallbackNode != null) {\n    // Cancel the existing callback. We'll schedule a new one below.\n    cancelCallback$1(existingCallbackNode);\n  } // Schedule a new callback.\n\n\n  var newCallbackNode;\n\n  if (newCallbackPriority === SyncLane) {\n    // Special case: Sync React callbacks are scheduled on a special\n    // internal queue\n    if (root.tag === LegacyRoot) {\n      if ( ReactCurrentActQueue$1.isBatchingLegacy !== null) {\n        ReactCurrentActQueue$1.didScheduleLegacyUpdate = true;\n      }\n\n      scheduleLegacySyncCallback(performSyncWorkOnRoot.bind(null, root));\n    } else {\n      scheduleSyncCallback(performSyncWorkOnRoot.bind(null, root));\n    }\n\n    {\n      // Flush the queue in a microtask.\n      if ( ReactCurrentActQueue$1.current !== null) {\n        // Inside `act`, use our internal `act` queue so that these get flushed\n        // at the end of the current scope even when using the sync version\n        // of `act`.\n        ReactCurrentActQueue$1.current.push(flushSyncCallbacks);\n      } else {\n        scheduleMicrotask(function () {\n          // In Safari, appending an iframe forces microtasks to run.\n          // https://github.com/facebook/react/issues/22459\n          // We don't support running callbacks in the middle of render\n          // or commit so we need to check against that.\n          if ((executionContext & (RenderContext | CommitContext)) === NoContext) {\n            // Note that this would still prematurely flush the callbacks\n            // if this happens outside render or commit phase (e.g. in an event).\n            flushSyncCallbacks();\n          }\n        });\n      }\n    }\n\n    newCallbackNode = null;\n  } else {\n    var schedulerPriorityLevel;\n\n    switch (lanesToEventPriority(nextLanes)) {\n      case DiscreteEventPriority:\n        schedulerPriorityLevel = ImmediatePriority;\n        break;\n\n      case ContinuousEventPriority:\n        schedulerPriorityLevel = UserBlockingPriority;\n        break;\n\n      case DefaultEventPriority:\n        schedulerPriorityLevel = NormalPriority;\n        break;\n\n      case IdleEventPriority:\n        schedulerPriorityLevel = IdlePriority;\n        break;\n\n      default:\n        schedulerPriorityLevel = NormalPriority;\n        break;\n    }\n\n    newCallbackNode = scheduleCallback$1(schedulerPriorityLevel, performConcurrentWorkOnRoot.bind(null, root));\n  }\n\n  root.callbackPriority = newCallbackPriority;\n  root.callbackNode = newCallbackNode;\n} // This is the entry point for every concurrent task, i.e. anything that\n// goes through Scheduler.\n\n\nfunction performConcurrentWorkOnRoot(root, didTimeout) {\n  {\n    resetNestedUpdateFlag();\n  } // Since we know we're in a React event, we can clear the current\n  // event time. The next update will compute a new event time.\n\n\n  currentEventTime = NoTimestamp;\n  currentEventTransitionLane = NoLanes;\n\n  if ((executionContext & (RenderContext | CommitContext)) !== NoContext) {\n    throw new Error('Should not already be working.');\n  } // Flush any pending passive effects before deciding which lanes to work on,\n  // in case they schedule additional work.\n\n\n  var originalCallbackNode = root.callbackNode;\n  var didFlushPassiveEffects = flushPassiveEffects();\n\n  if (didFlushPassiveEffects) {\n    // Something in the passive effect phase may have canceled the current task.\n    // Check if the task node for this root was changed.\n    if (root.callbackNode !== originalCallbackNode) {\n      // The current task was canceled. Exit. We don't need to call\n      // `ensureRootIsScheduled` because the check above implies either that\n      // there's a new task, or that there's no remaining work on this root.\n      return null;\n    }\n  } // Determine the next lanes to work on, using the fields stored\n  // on the root.\n\n\n  var lanes = getNextLanes(root, root === workInProgressRoot ? workInProgressRootRenderLanes : NoLanes);\n\n  if (lanes === NoLanes) {\n    // Defensive coding. This is never expected to happen.\n    return null;\n  } // We disable time-slicing in some cases: if the work has been CPU-bound\n  // for too long (\"expired\" work, to prevent starvation), or we're in\n  // sync-updates-by-default mode.\n  // TODO: We only check `didTimeout` defensively, to account for a Scheduler\n  // bug we're still investigating. Once the bug in Scheduler is fixed,\n  // we can remove this, since we track expiration ourselves.\n\n\n  var shouldTimeSlice = !includesBlockingLane(root, lanes) && !includesExpiredLane(root, lanes) && ( !didTimeout);\n  var exitStatus = shouldTimeSlice ? renderRootConcurrent(root, lanes) : renderRootSync(root, lanes);\n\n  if (exitStatus !== RootInProgress) {\n    if (exitStatus === RootErrored) {\n      // If something threw an error, try rendering one more time. We'll\n      // render synchronously to block concurrent data mutations, and we'll\n      // includes all pending updates are included. If it still fails after\n      // the second attempt, we'll give up and commit the resulting tree.\n      var errorRetryLanes = getLanesToRetrySynchronouslyOnError(root);\n\n      if (errorRetryLanes !== NoLanes) {\n        lanes = errorRetryLanes;\n        exitStatus = recoverFromConcurrentError(root, errorRetryLanes);\n      }\n    }\n\n    if (exitStatus === RootFatalErrored) {\n      var fatalError = workInProgressRootFatalError;\n      prepareFreshStack(root, NoLanes);\n      markRootSuspended$1(root, lanes);\n      ensureRootIsScheduled(root, now());\n      throw fatalError;\n    }\n\n    if (exitStatus === RootDidNotComplete) {\n      // The render unwound without completing the tree. This happens in special\n      // cases where need to exit the current render without producing a\n      // consistent tree or committing.\n      //\n      // This should only happen during a concurrent render, not a discrete or\n      // synchronous update. We should have already checked for this when we\n      // unwound the stack.\n      markRootSuspended$1(root, lanes);\n    } else {\n      // The render completed.\n      // Check if this render may have yielded to a concurrent event, and if so,\n      // confirm that any newly rendered stores are consistent.\n      // TODO: It's possible that even a concurrent render may never have yielded\n      // to the main thread, if it was fast enough, or if it expired. We could\n      // skip the consistency check in that case, too.\n      var renderWasConcurrent = !includesBlockingLane(root, lanes);\n      var finishedWork = root.current.alternate;\n\n      if (renderWasConcurrent && !isRenderConsistentWithExternalStores(finishedWork)) {\n        // A store was mutated in an interleaved event. Render again,\n        // synchronously, to block further mutations.\n        exitStatus = renderRootSync(root, lanes); // We need to check again if something threw\n\n        if (exitStatus === RootErrored) {\n          var _errorRetryLanes = getLanesToRetrySynchronouslyOnError(root);\n\n          if (_errorRetryLanes !== NoLanes) {\n            lanes = _errorRetryLanes;\n            exitStatus = recoverFromConcurrentError(root, _errorRetryLanes); // We assume the tree is now consistent because we didn't yield to any\n            // concurrent events.\n          }\n        }\n\n        if (exitStatus === RootFatalErrored) {\n          var _fatalError = workInProgressRootFatalError;\n          prepareFreshStack(root, NoLanes);\n          markRootSuspended$1(root, lanes);\n          ensureRootIsScheduled(root, now());\n          throw _fatalError;\n        }\n      } // We now have a consistent tree. The next step is either to commit it,\n      // or, if something suspended, wait to commit it after a timeout.\n\n\n      root.finishedWork = finishedWork;\n      root.finishedLanes = lanes;\n      finishConcurrentRender(root, exitStatus, lanes);\n    }\n  }\n\n  ensureRootIsScheduled(root, now());\n\n  if (root.callbackNode === originalCallbackNode) {\n    // The task node scheduled for this root is the same one that's\n    // currently executed. Need to return a continuation.\n    return performConcurrentWorkOnRoot.bind(null, root);\n  }\n\n  return null;\n}\n\nfunction recoverFromConcurrentError(root, errorRetryLanes) {\n  // If an error occurred during hydration, discard server response and fall\n  // back to client side render.\n  // Before rendering again, save the errors from the previous attempt.\n  var errorsFromFirstAttempt = workInProgressRootConcurrentErrors;\n\n  if (isRootDehydrated(root)) {\n    // The shell failed to hydrate. Set a flag to force a client rendering\n    // during the next attempt. To do this, we call prepareFreshStack now\n    // to create the root work-in-progress fiber. This is a bit weird in terms\n    // of factoring, because it relies on renderRootSync not calling\n    // prepareFreshStack again in the call below, which happens because the\n    // root and lanes haven't changed.\n    //\n    // TODO: I think what we should do is set ForceClientRender inside\n    // throwException, like we do for nested Suspense boundaries. The reason\n    // it's here instead is so we can switch to the synchronous work loop, too.\n    // Something to consider for a future refactor.\n    var rootWorkInProgress = prepareFreshStack(root, errorRetryLanes);\n    rootWorkInProgress.flags |= ForceClientRender;\n\n    {\n      errorHydratingContainer(root.containerInfo);\n    }\n  }\n\n  var exitStatus = renderRootSync(root, errorRetryLanes);\n\n  if (exitStatus !== RootErrored) {\n    // Successfully finished rendering on retry\n    // The errors from the failed first attempt have been recovered. Add\n    // them to the collection of recoverable errors. We'll log them in the\n    // commit phase.\n    var errorsFromSecondAttempt = workInProgressRootRecoverableErrors;\n    workInProgressRootRecoverableErrors = errorsFromFirstAttempt; // The errors from the second attempt should be queued after the errors\n    // from the first attempt, to preserve the causal sequence.\n\n    if (errorsFromSecondAttempt !== null) {\n      queueRecoverableErrors(errorsFromSecondAttempt);\n    }\n  }\n\n  return exitStatus;\n}\n\nfunction queueRecoverableErrors(errors) {\n  if (workInProgressRootRecoverableErrors === null) {\n    workInProgressRootRecoverableErrors = errors;\n  } else {\n    workInProgressRootRecoverableErrors.push.apply(workInProgressRootRecoverableErrors, errors);\n  }\n}\n\nfunction finishConcurrentRender(root, exitStatus, lanes) {\n  switch (exitStatus) {\n    case RootInProgress:\n    case RootFatalErrored:\n      {\n        throw new Error('Root did not complete. This is a bug in React.');\n      }\n    // Flow knows about invariant, so it complains if I add a break\n    // statement, but eslint doesn't know about invariant, so it complains\n    // if I do. eslint-disable-next-line no-fallthrough\n\n    case RootErrored:\n      {\n        // We should have already attempted to retry this tree. If we reached\n        // this point, it errored again. Commit it.\n        commitRoot(root, workInProgressRootRecoverableErrors, workInProgressTransitions);\n        break;\n      }\n\n    case RootSuspended:\n      {\n        markRootSuspended$1(root, lanes); // We have an acceptable loading state. We need to figure out if we\n        // should immediately commit it or wait a bit.\n\n        if (includesOnlyRetries(lanes) && // do not delay if we're inside an act() scope\n        !shouldForceFlushFallbacksInDEV()) {\n          // This render only included retries, no updates. Throttle committing\n          // retries so that we don't show too many loading states too quickly.\n          var msUntilTimeout = globalMostRecentFallbackTime + FALLBACK_THROTTLE_MS - now(); // Don't bother with a very short suspense time.\n\n          if (msUntilTimeout > 10) {\n            var nextLanes = getNextLanes(root, NoLanes);\n\n            if (nextLanes !== NoLanes) {\n              // There's additional work on this root.\n              break;\n            }\n\n            var suspendedLanes = root.suspendedLanes;\n\n            if (!isSubsetOfLanes(suspendedLanes, lanes)) {\n              // We should prefer to render the fallback of at the last\n              // suspended level. Ping the last suspended level to try\n              // rendering it again.\n              // FIXME: What if the suspended lanes are Idle? Should not restart.\n              var eventTime = requestEventTime();\n              markRootPinged(root, suspendedLanes);\n              break;\n            } // The render is suspended, it hasn't timed out, and there's no\n            // lower priority work to do. Instead of committing the fallback\n            // immediately, wait for more data to arrive.\n\n\n            root.timeoutHandle = scheduleTimeout(commitRoot.bind(null, root, workInProgressRootRecoverableErrors, workInProgressTransitions), msUntilTimeout);\n            break;\n          }\n        } // The work expired. Commit immediately.\n\n\n        commitRoot(root, workInProgressRootRecoverableErrors, workInProgressTransitions);\n        break;\n      }\n\n    case RootSuspendedWithDelay:\n      {\n        markRootSuspended$1(root, lanes);\n\n        if (includesOnlyTransitions(lanes)) {\n          // This is a transition, so we should exit without committing a\n          // placeholder and without scheduling a timeout. Delay indefinitely\n          // until we receive more data.\n          break;\n        }\n\n        if (!shouldForceFlushFallbacksInDEV()) {\n          // This is not a transition, but we did trigger an avoided state.\n          // Schedule a placeholder to display after a short delay, using the Just\n          // Noticeable Difference.\n          // TODO: Is the JND optimization worth the added complexity? If this is\n          // the only reason we track the event time, then probably not.\n          // Consider removing.\n          var mostRecentEventTime = getMostRecentEventTime(root, lanes);\n          var eventTimeMs = mostRecentEventTime;\n          var timeElapsedMs = now() - eventTimeMs;\n\n          var _msUntilTimeout = jnd(timeElapsedMs) - timeElapsedMs; // Don't bother with a very short suspense time.\n\n\n          if (_msUntilTimeout > 10) {\n            // Instead of committing the fallback immediately, wait for more data\n            // to arrive.\n            root.timeoutHandle = scheduleTimeout(commitRoot.bind(null, root, workInProgressRootRecoverableErrors, workInProgressTransitions), _msUntilTimeout);\n            break;\n          }\n        } // Commit the placeholder.\n\n\n        commitRoot(root, workInProgressRootRecoverableErrors, workInProgressTransitions);\n        break;\n      }\n\n    case RootCompleted:\n      {\n        // The work completed. Ready to commit.\n        commitRoot(root, workInProgressRootRecoverableErrors, workInProgressTransitions);\n        break;\n      }\n\n    default:\n      {\n        throw new Error('Unknown root exit status.');\n      }\n  }\n}\n\nfunction isRenderConsistentWithExternalStores(finishedWork) {\n  // Search the rendered tree for external store reads, and check whether the\n  // stores were mutated in a concurrent event. Intentionally using an iterative\n  // loop instead of recursion so we can exit early.\n  var node = finishedWork;\n\n  while (true) {\n    if (node.flags & StoreConsistency) {\n      var updateQueue = node.updateQueue;\n\n      if (updateQueue !== null) {\n        var checks = updateQueue.stores;\n\n        if (checks !== null) {\n          for (var i = 0; i < checks.length; i++) {\n            var check = checks[i];\n            var getSnapshot = check.getSnapshot;\n            var renderedValue = check.value;\n\n            try {\n              if (!objectIs(getSnapshot(), renderedValue)) {\n                // Found an inconsistent store.\n                return false;\n              }\n            } catch (error) {\n              // If `getSnapshot` throws, return `false`. This will schedule\n              // a re-render, and the error will be rethrown during render.\n              return false;\n            }\n          }\n        }\n      }\n    }\n\n    var child = node.child;\n\n    if (node.subtreeFlags & StoreConsistency && child !== null) {\n      child.return = node;\n      node = child;\n      continue;\n    }\n\n    if (node === finishedWork) {\n      return true;\n    }\n\n    while (node.sibling === null) {\n      if (node.return === null || node.return === finishedWork) {\n        return true;\n      }\n\n      node = node.return;\n    }\n\n    node.sibling.return = node.return;\n    node = node.sibling;\n  } // Flow doesn't know this is unreachable, but eslint does\n  // eslint-disable-next-line no-unreachable\n\n\n  return true;\n}\n\nfunction markRootSuspended$1(root, suspendedLanes) {\n  // When suspending, we should always exclude lanes that were pinged or (more\n  // rarely, since we try to avoid it) updated during the render phase.\n  // TODO: Lol maybe there's a better way to factor this besides this\n  // obnoxiously named function :)\n  suspendedLanes = removeLanes(suspendedLanes, workInProgressRootPingedLanes);\n  suspendedLanes = removeLanes(suspendedLanes, workInProgressRootInterleavedUpdatedLanes);\n  markRootSuspended(root, suspendedLanes);\n} // This is the entry point for synchronous tasks that don't go\n// through Scheduler\n\n\nfunction performSyncWorkOnRoot(root) {\n  {\n    syncNestedUpdateFlag();\n  }\n\n  if ((executionContext & (RenderContext | CommitContext)) !== NoContext) {\n    throw new Error('Should not already be working.');\n  }\n\n  flushPassiveEffects();\n  var lanes = getNextLanes(root, NoLanes);\n\n  if (!includesSomeLane(lanes, SyncLane)) {\n    // There's no remaining sync work left.\n    ensureRootIsScheduled(root, now());\n    return null;\n  }\n\n  var exitStatus = renderRootSync(root, lanes);\n\n  if (root.tag !== LegacyRoot && exitStatus === RootErrored) {\n    // If something threw an error, try rendering one more time. We'll render\n    // synchronously to block concurrent data mutations, and we'll includes\n    // all pending updates are included. If it still fails after the second\n    // attempt, we'll give up and commit the resulting tree.\n    var errorRetryLanes = getLanesToRetrySynchronouslyOnError(root);\n\n    if (errorRetryLanes !== NoLanes) {\n      lanes = errorRetryLanes;\n      exitStatus = recoverFromConcurrentError(root, errorRetryLanes);\n    }\n  }\n\n  if (exitStatus === RootFatalErrored) {\n    var fatalError = workInProgressRootFatalError;\n    prepareFreshStack(root, NoLanes);\n    markRootSuspended$1(root, lanes);\n    ensureRootIsScheduled(root, now());\n    throw fatalError;\n  }\n\n  if (exitStatus === RootDidNotComplete) {\n    throw new Error('Root did not complete. This is a bug in React.');\n  } // We now have a consistent tree. Because this is a sync render, we\n  // will commit it even if something suspended.\n\n\n  var finishedWork = root.current.alternate;\n  root.finishedWork = finishedWork;\n  root.finishedLanes = lanes;\n  commitRoot(root, workInProgressRootRecoverableErrors, workInProgressTransitions); // Before exiting, make sure there's a callback scheduled for the next\n  // pending level.\n\n  ensureRootIsScheduled(root, now());\n  return null;\n}\n\nfunction flushRoot(root, lanes) {\n  if (lanes !== NoLanes) {\n    markRootEntangled(root, mergeLanes(lanes, SyncLane));\n    ensureRootIsScheduled(root, now());\n\n    if ((executionContext & (RenderContext | CommitContext)) === NoContext) {\n      resetRenderTimer();\n      flushSyncCallbacks();\n    }\n  }\n}\nfunction batchedUpdates$1(fn, a) {\n  var prevExecutionContext = executionContext;\n  executionContext |= BatchedContext;\n\n  try {\n    return fn(a);\n  } finally {\n    executionContext = prevExecutionContext; // If there were legacy sync updates, flush them at the end of the outer\n    // most batchedUpdates-like method.\n\n    if (executionContext === NoContext && // Treat `act` as if it's inside `batchedUpdates`, even in legacy mode.\n    !( ReactCurrentActQueue$1.isBatchingLegacy)) {\n      resetRenderTimer();\n      flushSyncCallbacksOnlyInLegacyMode();\n    }\n  }\n}\nfunction discreteUpdates(fn, a, b, c, d) {\n  var previousPriority = getCurrentUpdatePriority();\n  var prevTransition = ReactCurrentBatchConfig$3.transition;\n\n  try {\n    ReactCurrentBatchConfig$3.transition = null;\n    setCurrentUpdatePriority(DiscreteEventPriority);\n    return fn(a, b, c, d);\n  } finally {\n    setCurrentUpdatePriority(previousPriority);\n    ReactCurrentBatchConfig$3.transition = prevTransition;\n\n    if (executionContext === NoContext) {\n      resetRenderTimer();\n    }\n  }\n} // Overload the definition to the two valid signatures.\n// Warning, this opts-out of checking the function body.\n\n// eslint-disable-next-line no-redeclare\nfunction flushSync(fn) {\n  // In legacy mode, we flush pending passive effects at the beginning of the\n  // next event, not at the end of the previous one.\n  if (rootWithPendingPassiveEffects !== null && rootWithPendingPassiveEffects.tag === LegacyRoot && (executionContext & (RenderContext | CommitContext)) === NoContext) {\n    flushPassiveEffects();\n  }\n\n  var prevExecutionContext = executionContext;\n  executionContext |= BatchedContext;\n  var prevTransition = ReactCurrentBatchConfig$3.transition;\n  var previousPriority = getCurrentUpdatePriority();\n\n  try {\n    ReactCurrentBatchConfig$3.transition = null;\n    setCurrentUpdatePriority(DiscreteEventPriority);\n\n    if (fn) {\n      return fn();\n    } else {\n      return undefined;\n    }\n  } finally {\n    setCurrentUpdatePriority(previousPriority);\n    ReactCurrentBatchConfig$3.transition = prevTransition;\n    executionContext = prevExecutionContext; // Flush the immediate callbacks that were scheduled during this batch.\n    // Note that this will happen even if batchedUpdates is higher up\n    // the stack.\n\n    if ((executionContext & (RenderContext | CommitContext)) === NoContext) {\n      flushSyncCallbacks();\n    }\n  }\n}\nfunction isAlreadyRendering() {\n  // Used by the renderer to print a warning if certain APIs are called from\n  // the wrong context.\n  return  (executionContext & (RenderContext | CommitContext)) !== NoContext;\n}\nfunction pushRenderLanes(fiber, lanes) {\n  push(subtreeRenderLanesCursor, subtreeRenderLanes, fiber);\n  subtreeRenderLanes = mergeLanes(subtreeRenderLanes, lanes);\n  workInProgressRootIncludedLanes = mergeLanes(workInProgressRootIncludedLanes, lanes);\n}\nfunction popRenderLanes(fiber) {\n  subtreeRenderLanes = subtreeRenderLanesCursor.current;\n  pop(subtreeRenderLanesCursor, fiber);\n}\n\nfunction prepareFreshStack(root, lanes) {\n  root.finishedWork = null;\n  root.finishedLanes = NoLanes;\n  var timeoutHandle = root.timeoutHandle;\n\n  if (timeoutHandle !== noTimeout) {\n    // The root previous suspended and scheduled a timeout to commit a fallback\n    // state. Now that we have additional work, cancel the timeout.\n    root.timeoutHandle = noTimeout; // $FlowFixMe Complains noTimeout is not a TimeoutID, despite the check above\n\n    cancelTimeout(timeoutHandle);\n  }\n\n  if (workInProgress !== null) {\n    var interruptedWork = workInProgress.return;\n\n    while (interruptedWork !== null) {\n      var current = interruptedWork.alternate;\n      unwindInterruptedWork(current, interruptedWork);\n      interruptedWork = interruptedWork.return;\n    }\n  }\n\n  workInProgressRoot = root;\n  var rootWorkInProgress = createWorkInProgress(root.current, null);\n  workInProgress = rootWorkInProgress;\n  workInProgressRootRenderLanes = subtreeRenderLanes = workInProgressRootIncludedLanes = lanes;\n  workInProgressRootExitStatus = RootInProgress;\n  workInProgressRootFatalError = null;\n  workInProgressRootSkippedLanes = NoLanes;\n  workInProgressRootInterleavedUpdatedLanes = NoLanes;\n  workInProgressRootPingedLanes = NoLanes;\n  workInProgressRootConcurrentErrors = null;\n  workInProgressRootRecoverableErrors = null;\n  finishQueueingConcurrentUpdates();\n\n  {\n    ReactStrictModeWarnings.discardPendingWarnings();\n  }\n\n  return rootWorkInProgress;\n}\n\nfunction handleError(root, thrownValue) {\n  do {\n    var erroredWork = workInProgress;\n\n    try {\n      // Reset module-level state that was set during the render phase.\n      resetContextDependencies();\n      resetHooksAfterThrow();\n      resetCurrentFiber(); // TODO: I found and added this missing line while investigating a\n      // separate issue. Write a regression test using string refs.\n\n      ReactCurrentOwner$2.current = null;\n\n      if (erroredWork === null || erroredWork.return === null) {\n        // Expected to be working on a non-root fiber. This is a fatal error\n        // because there's no ancestor that can handle it; the root is\n        // supposed to capture all errors that weren't caught by an error\n        // boundary.\n        workInProgressRootExitStatus = RootFatalErrored;\n        workInProgressRootFatalError = thrownValue; // Set `workInProgress` to null. This represents advancing to the next\n        // sibling, or the parent if there are no siblings. But since the root\n        // has no siblings nor a parent, we set it to null. Usually this is\n        // handled by `completeUnitOfWork` or `unwindWork`, but since we're\n        // intentionally not calling those, we need set it here.\n        // TODO: Consider calling `unwindWork` to pop the contexts.\n\n        workInProgress = null;\n        return;\n      }\n\n      if (enableProfilerTimer && erroredWork.mode & ProfileMode) {\n        // Record the time spent rendering before an error was thrown. This\n        // avoids inaccurate Profiler durations in the case of a\n        // suspended render.\n        stopProfilerTimerIfRunningAndRecordDelta(erroredWork, true);\n      }\n\n      if (enableSchedulingProfiler) {\n        markComponentRenderStopped();\n\n        if (thrownValue !== null && typeof thrownValue === 'object' && typeof thrownValue.then === 'function') {\n          var wakeable = thrownValue;\n          markComponentSuspended(erroredWork, wakeable, workInProgressRootRenderLanes);\n        } else {\n          markComponentErrored(erroredWork, thrownValue, workInProgressRootRenderLanes);\n        }\n      }\n\n      throwException(root, erroredWork.return, erroredWork, thrownValue, workInProgressRootRenderLanes);\n      completeUnitOfWork(erroredWork);\n    } catch (yetAnotherThrownValue) {\n      // Something in the return path also threw.\n      thrownValue = yetAnotherThrownValue;\n\n      if (workInProgress === erroredWork && erroredWork !== null) {\n        // If this boundary has already errored, then we had trouble processing\n        // the error. Bubble it to the next boundary.\n        erroredWork = erroredWork.return;\n        workInProgress = erroredWork;\n      } else {\n        erroredWork = workInProgress;\n      }\n\n      continue;\n    } // Return to the normal work loop.\n\n\n    return;\n  } while (true);\n}\n\nfunction pushDispatcher() {\n  var prevDispatcher = ReactCurrentDispatcher$2.current;\n  ReactCurrentDispatcher$2.current = ContextOnlyDispatcher;\n\n  if (prevDispatcher === null) {\n    // The React isomorphic package does not include a default dispatcher.\n    // Instead the first renderer will lazily attach one, in order to give\n    // nicer error messages.\n    return ContextOnlyDispatcher;\n  } else {\n    return prevDispatcher;\n  }\n}\n\nfunction popDispatcher(prevDispatcher) {\n  ReactCurrentDispatcher$2.current = prevDispatcher;\n}\n\nfunction markCommitTimeOfFallback() {\n  globalMostRecentFallbackTime = now();\n}\nfunction markSkippedUpdateLanes(lane) {\n  workInProgressRootSkippedLanes = mergeLanes(lane, workInProgressRootSkippedLanes);\n}\nfunction renderDidSuspend() {\n  if (workInProgressRootExitStatus === RootInProgress) {\n    workInProgressRootExitStatus = RootSuspended;\n  }\n}\nfunction renderDidSuspendDelayIfPossible() {\n  if (workInProgressRootExitStatus === RootInProgress || workInProgressRootExitStatus === RootSuspended || workInProgressRootExitStatus === RootErrored) {\n    workInProgressRootExitStatus = RootSuspendedWithDelay;\n  } // Check if there are updates that we skipped tree that might have unblocked\n  // this render.\n\n\n  if (workInProgressRoot !== null && (includesNonIdleWork(workInProgressRootSkippedLanes) || includesNonIdleWork(workInProgressRootInterleavedUpdatedLanes))) {\n    // Mark the current render as suspended so that we switch to working on\n    // the updates that were skipped. Usually we only suspend at the end of\n    // the render phase.\n    // TODO: We should probably always mark the root as suspended immediately\n    // (inside this function), since by suspending at the end of the render\n    // phase introduces a potential mistake where we suspend lanes that were\n    // pinged or updated while we were rendering.\n    markRootSuspended$1(workInProgressRoot, workInProgressRootRenderLanes);\n  }\n}\nfunction renderDidError(error) {\n  if (workInProgressRootExitStatus !== RootSuspendedWithDelay) {\n    workInProgressRootExitStatus = RootErrored;\n  }\n\n  if (workInProgressRootConcurrentErrors === null) {\n    workInProgressRootConcurrentErrors = [error];\n  } else {\n    workInProgressRootConcurrentErrors.push(error);\n  }\n} // Called during render to determine if anything has suspended.\n// Returns false if we're not sure.\n\nfunction renderHasNotSuspendedYet() {\n  // If something errored or completed, we can't really be sure,\n  // so those are false.\n  return workInProgressRootExitStatus === RootInProgress;\n}\n\nfunction renderRootSync(root, lanes) {\n  var prevExecutionContext = executionContext;\n  executionContext |= RenderContext;\n  var prevDispatcher = pushDispatcher(); // If the root or lanes have changed, throw out the existing stack\n  // and prepare a fresh one. Otherwise we'll continue where we left off.\n\n  if (workInProgressRoot !== root || workInProgressRootRenderLanes !== lanes) {\n    {\n      if (isDevToolsPresent) {\n        var memoizedUpdaters = root.memoizedUpdaters;\n\n        if (memoizedUpdaters.size > 0) {\n          restorePendingUpdaters(root, workInProgressRootRenderLanes);\n          memoizedUpdaters.clear();\n        } // At this point, move Fibers that scheduled the upcoming work from the Map to the Set.\n        // If we bailout on this work, we'll move them back (like above).\n        // It's important to move them now in case the work spawns more work at the same priority with different updaters.\n        // That way we can keep the current update and future updates separate.\n\n\n        movePendingFibersToMemoized(root, lanes);\n      }\n    }\n\n    workInProgressTransitions = getTransitionsForLanes();\n    prepareFreshStack(root, lanes);\n  }\n\n  {\n    markRenderStarted(lanes);\n  }\n\n  do {\n    try {\n      workLoopSync();\n      break;\n    } catch (thrownValue) {\n      handleError(root, thrownValue);\n    }\n  } while (true);\n\n  resetContextDependencies();\n  executionContext = prevExecutionContext;\n  popDispatcher(prevDispatcher);\n\n  if (workInProgress !== null) {\n    // This is a sync render, so we should have finished the whole tree.\n    throw new Error('Cannot commit an incomplete root. This error is likely caused by a ' + 'bug in React. Please file an issue.');\n  }\n\n  {\n    markRenderStopped();\n  } // Set this to null to indicate there's no in-progress render.\n\n\n  workInProgressRoot = null;\n  workInProgressRootRenderLanes = NoLanes;\n  return workInProgressRootExitStatus;\n} // The work loop is an extremely hot path. Tell Closure not to inline it.\n\n/** @noinline */\n\n\nfunction workLoopSync() {\n  // Already timed out, so perform work without checking if we need to yield.\n  while (workInProgress !== null) {\n    performUnitOfWork(workInProgress);\n  }\n}\n\nfunction renderRootConcurrent(root, lanes) {\n  var prevExecutionContext = executionContext;\n  executionContext |= RenderContext;\n  var prevDispatcher = pushDispatcher(); // If the root or lanes have changed, throw out the existing stack\n  // and prepare a fresh one. Otherwise we'll continue where we left off.\n\n  if (workInProgressRoot !== root || workInProgressRootRenderLanes !== lanes) {\n    {\n      if (isDevToolsPresent) {\n        var memoizedUpdaters = root.memoizedUpdaters;\n\n        if (memoizedUpdaters.size > 0) {\n          restorePendingUpdaters(root, workInProgressRootRenderLanes);\n          memoizedUpdaters.clear();\n        } // At this point, move Fibers that scheduled the upcoming work from the Map to the Set.\n        // If we bailout on this work, we'll move them back (like above).\n        // It's important to move them now in case the work spawns more work at the same priority with different updaters.\n        // That way we can keep the current update and future updates separate.\n\n\n        movePendingFibersToMemoized(root, lanes);\n      }\n    }\n\n    workInProgressTransitions = getTransitionsForLanes();\n    resetRenderTimer();\n    prepareFreshStack(root, lanes);\n  }\n\n  {\n    markRenderStarted(lanes);\n  }\n\n  do {\n    try {\n      workLoopConcurrent();\n      break;\n    } catch (thrownValue) {\n      handleError(root, thrownValue);\n    }\n  } while (true);\n\n  resetContextDependencies();\n  popDispatcher(prevDispatcher);\n  executionContext = prevExecutionContext;\n\n\n  if (workInProgress !== null) {\n    // Still work remaining.\n    {\n      markRenderYielded();\n    }\n\n    return RootInProgress;\n  } else {\n    // Completed the tree.\n    {\n      markRenderStopped();\n    } // Set this to null to indicate there's no in-progress render.\n\n\n    workInProgressRoot = null;\n    workInProgressRootRenderLanes = NoLanes; // Return the final exit status.\n\n    return workInProgressRootExitStatus;\n  }\n}\n/** @noinline */\n\n\nfunction workLoopConcurrent() {\n  // Perform work until Scheduler asks us to yield\n  while (workInProgress !== null && !shouldYield()) {\n    performUnitOfWork(workInProgress);\n  }\n}\n\nfunction performUnitOfWork(unitOfWork) {\n  // The current, flushed, state of this fiber is the alternate. Ideally\n  // nothing should rely on this, but relying on it here means that we don't\n  // need an additional field on the work in progress.\n  var current = unitOfWork.alternate;\n  setCurrentFiber(unitOfWork);\n  var next;\n\n  if ( (unitOfWork.mode & ProfileMode) !== NoMode) {\n    startProfilerTimer(unitOfWork);\n    next = beginWork$1(current, unitOfWork, subtreeRenderLanes);\n    stopProfilerTimerIfRunningAndRecordDelta(unitOfWork, true);\n  } else {\n    next = beginWork$1(current, unitOfWork, subtreeRenderLanes);\n  }\n\n  resetCurrentFiber();\n  unitOfWork.memoizedProps = unitOfWork.pendingProps;\n\n  if (next === null) {\n    // If this doesn't spawn new work, complete the current work.\n    completeUnitOfWork(unitOfWork);\n  } else {\n    workInProgress = next;\n  }\n\n  ReactCurrentOwner$2.current = null;\n}\n\nfunction completeUnitOfWork(unitOfWork) {\n  // Attempt to complete the current unit of work, then move to the next\n  // sibling. If there are no more siblings, return to the parent fiber.\n  var completedWork = unitOfWork;\n\n  do {\n    // The current, flushed, state of this fiber is the alternate. Ideally\n    // nothing should rely on this, but relying on it here means that we don't\n    // need an additional field on the work in progress.\n    var current = completedWork.alternate;\n    var returnFiber = completedWork.return; // Check if the work completed or if something threw.\n\n    if ((completedWork.flags & Incomplete) === NoFlags) {\n      setCurrentFiber(completedWork);\n      var next = void 0;\n\n      if ( (completedWork.mode & ProfileMode) === NoMode) {\n        next = completeWork(current, completedWork, subtreeRenderLanes);\n      } else {\n        startProfilerTimer(completedWork);\n        next = completeWork(current, completedWork, subtreeRenderLanes); // Update render duration assuming we didn't error.\n\n        stopProfilerTimerIfRunningAndRecordDelta(completedWork, false);\n      }\n\n      resetCurrentFiber();\n\n      if (next !== null) {\n        // Completing this fiber spawned new work. Work on that next.\n        workInProgress = next;\n        return;\n      }\n    } else {\n      // This fiber did not complete because something threw. Pop values off\n      // the stack without entering the complete phase. If this is a boundary,\n      // capture values if possible.\n      var _next = unwindWork(current, completedWork); // Because this fiber did not complete, don't reset its lanes.\n\n\n      if (_next !== null) {\n        // If completing this work spawned new work, do that next. We'll come\n        // back here again.\n        // Since we're restarting, remove anything that is not a host effect\n        // from the effect tag.\n        _next.flags &= HostEffectMask;\n        workInProgress = _next;\n        return;\n      }\n\n      if ( (completedWork.mode & ProfileMode) !== NoMode) {\n        // Record the render duration for the fiber that errored.\n        stopProfilerTimerIfRunningAndRecordDelta(completedWork, false); // Include the time spent working on failed children before continuing.\n\n        var actualDuration = completedWork.actualDuration;\n        var child = completedWork.child;\n\n        while (child !== null) {\n          actualDuration += child.actualDuration;\n          child = child.sibling;\n        }\n\n        completedWork.actualDuration = actualDuration;\n      }\n\n      if (returnFiber !== null) {\n        // Mark the parent fiber as incomplete and clear its subtree flags.\n        returnFiber.flags |= Incomplete;\n        returnFiber.subtreeFlags = NoFlags;\n        returnFiber.deletions = null;\n      } else {\n        // We've unwound all the way to the root.\n        workInProgressRootExitStatus = RootDidNotComplete;\n        workInProgress = null;\n        return;\n      }\n    }\n\n    var siblingFiber = completedWork.sibling;\n\n    if (siblingFiber !== null) {\n      // If there is more work to do in this returnFiber, do that next.\n      workInProgress = siblingFiber;\n      return;\n    } // Otherwise, return to the parent\n\n\n    completedWork = returnFiber; // Update the next thing we're working on in case something throws.\n\n    workInProgress = completedWork;\n  } while (completedWork !== null); // We've reached the root.\n\n\n  if (workInProgressRootExitStatus === RootInProgress) {\n    workInProgressRootExitStatus = RootCompleted;\n  }\n}\n\nfunction commitRoot(root, recoverableErrors, transitions) {\n  // TODO: This no longer makes any sense. We already wrap the mutation and\n  // layout phases. Should be able to remove.\n  var previousUpdateLanePriority = getCurrentUpdatePriority();\n  var prevTransition = ReactCurrentBatchConfig$3.transition;\n\n  try {\n    ReactCurrentBatchConfig$3.transition = null;\n    setCurrentUpdatePriority(DiscreteEventPriority);\n    commitRootImpl(root, recoverableErrors, transitions, previousUpdateLanePriority);\n  } finally {\n    ReactCurrentBatchConfig$3.transition = prevTransition;\n    setCurrentUpdatePriority(previousUpdateLanePriority);\n  }\n\n  return null;\n}\n\nfunction commitRootImpl(root, recoverableErrors, transitions, renderPriorityLevel) {\n  do {\n    // `flushPassiveEffects` will call `flushSyncUpdateQueue` at the end, which\n    // means `flushPassiveEffects` will sometimes result in additional\n    // passive effects. So we need to keep flushing in a loop until there are\n    // no more pending effects.\n    // TODO: Might be better if `flushPassiveEffects` did not automatically\n    // flush synchronous work at the end, to avoid factoring hazards like this.\n    flushPassiveEffects();\n  } while (rootWithPendingPassiveEffects !== null);\n\n  flushRenderPhaseStrictModeWarningsInDEV();\n\n  if ((executionContext & (RenderContext | CommitContext)) !== NoContext) {\n    throw new Error('Should not already be working.');\n  }\n\n  var finishedWork = root.finishedWork;\n  var lanes = root.finishedLanes;\n\n  {\n    markCommitStarted(lanes);\n  }\n\n  if (finishedWork === null) {\n\n    {\n      markCommitStopped();\n    }\n\n    return null;\n  } else {\n    {\n      if (lanes === NoLanes) {\n        error('root.finishedLanes should not be empty during a commit. This is a ' + 'bug in React.');\n      }\n    }\n  }\n\n  root.finishedWork = null;\n  root.finishedLanes = NoLanes;\n\n  if (finishedWork === root.current) {\n    throw new Error('Cannot commit the same tree as before. This error is likely caused by ' + 'a bug in React. Please file an issue.');\n  } // commitRoot never returns a continuation; it always finishes synchronously.\n  // So we can clear these now to allow a new callback to be scheduled.\n\n\n  root.callbackNode = null;\n  root.callbackPriority = NoLane; // Update the first and last pending times on this root. The new first\n  // pending time is whatever is left on the root fiber.\n\n  var remainingLanes = mergeLanes(finishedWork.lanes, finishedWork.childLanes);\n  markRootFinished(root, remainingLanes);\n\n  if (root === workInProgressRoot) {\n    // We can reset these now that they are finished.\n    workInProgressRoot = null;\n    workInProgress = null;\n    workInProgressRootRenderLanes = NoLanes;\n  } // If there are pending passive effects, schedule a callback to process them.\n  // Do this as early as possible, so it is queued before anything else that\n  // might get scheduled in the commit phase. (See #16714.)\n  // TODO: Delete all other places that schedule the passive effect callback\n  // They're redundant.\n\n\n  if ((finishedWork.subtreeFlags & PassiveMask) !== NoFlags || (finishedWork.flags & PassiveMask) !== NoFlags) {\n    if (!rootDoesHavePassiveEffects) {\n      rootDoesHavePassiveEffects = true;\n      // to store it in pendingPassiveTransitions until they get processed\n      // We need to pass this through as an argument to commitRoot\n      // because workInProgressTransitions might have changed between\n      // the previous render and commit if we throttle the commit\n      // with setTimeout\n\n      pendingPassiveTransitions = transitions;\n      scheduleCallback$1(NormalPriority, function () {\n        flushPassiveEffects(); // This render triggered passive effects: release the root cache pool\n        // *after* passive effects fire to avoid freeing a cache pool that may\n        // be referenced by a node in the tree (HostRoot, Cache boundary etc)\n\n        return null;\n      });\n    }\n  } // Check if there are any effects in the whole tree.\n  // TODO: This is left over from the effect list implementation, where we had\n  // to check for the existence of `firstEffect` to satisfy Flow. I think the\n  // only other reason this optimization exists is because it affects profiling.\n  // Reconsider whether this is necessary.\n\n\n  var subtreeHasEffects = (finishedWork.subtreeFlags & (BeforeMutationMask | MutationMask | LayoutMask | PassiveMask)) !== NoFlags;\n  var rootHasEffect = (finishedWork.flags & (BeforeMutationMask | MutationMask | LayoutMask | PassiveMask)) !== NoFlags;\n\n  if (subtreeHasEffects || rootHasEffect) {\n    var prevTransition = ReactCurrentBatchConfig$3.transition;\n    ReactCurrentBatchConfig$3.transition = null;\n    var previousPriority = getCurrentUpdatePriority();\n    setCurrentUpdatePriority(DiscreteEventPriority);\n    var prevExecutionContext = executionContext;\n    executionContext |= CommitContext; // Reset this to null before calling lifecycles\n\n    ReactCurrentOwner$2.current = null; // The commit phase is broken into several sub-phases. We do a separate pass\n    // of the effect list for each phase: all mutation effects come before all\n    // layout effects, and so on.\n    // The first phase a \"before mutation\" phase. We use this phase to read the\n    // state of the host tree right before we mutate it. This is where\n    // getSnapshotBeforeUpdate is called.\n\n    var shouldFireAfterActiveInstanceBlur = commitBeforeMutationEffects(root, finishedWork);\n\n    {\n      // Mark the current commit time to be shared by all Profilers in this\n      // batch. This enables them to be grouped later.\n      recordCommitTime();\n    }\n\n\n    commitMutationEffects(root, finishedWork, lanes);\n\n    resetAfterCommit(root.containerInfo); // The work-in-progress tree is now the current tree. This must come after\n    // the mutation phase, so that the previous tree is still current during\n    // componentWillUnmount, but before the layout phase, so that the finished\n    // work is current during componentDidMount/Update.\n\n    root.current = finishedWork; // The next phase is the layout phase, where we call effects that read\n\n    {\n      markLayoutEffectsStarted(lanes);\n    }\n\n    commitLayoutEffects(finishedWork, root, lanes);\n\n    {\n      markLayoutEffectsStopped();\n    }\n    // opportunity to paint.\n\n\n    requestPaint();\n    executionContext = prevExecutionContext; // Reset the priority to the previous non-sync value.\n\n    setCurrentUpdatePriority(previousPriority);\n    ReactCurrentBatchConfig$3.transition = prevTransition;\n  } else {\n    // No effects.\n    root.current = finishedWork; // Measure these anyway so the flamegraph explicitly shows that there were\n    // no effects.\n    // TODO: Maybe there's a better way to report this.\n\n    {\n      recordCommitTime();\n    }\n  }\n\n  var rootDidHavePassiveEffects = rootDoesHavePassiveEffects;\n\n  if (rootDoesHavePassiveEffects) {\n    // This commit has passive effects. Stash a reference to them. But don't\n    // schedule a callback until after flushing layout work.\n    rootDoesHavePassiveEffects = false;\n    rootWithPendingPassiveEffects = root;\n    pendingPassiveEffectsLanes = lanes;\n  } else {\n\n    {\n      nestedPassiveUpdateCount = 0;\n      rootWithPassiveNestedUpdates = null;\n    }\n  } // Read this again, since an effect might have updated it\n\n\n  remainingLanes = root.pendingLanes; // Check if there's remaining work on this root\n  // TODO: This is part of the `componentDidCatch` implementation. Its purpose\n  // is to detect whether something might have called setState inside\n  // `componentDidCatch`. The mechanism is known to be flawed because `setState`\n  // inside `componentDidCatch` is itself flawed \u2014 that's why we recommend\n  // `getDerivedStateFromError` instead. However, it could be improved by\n  // checking if remainingLanes includes Sync work, instead of whether there's\n  // any work remaining at all (which would also include stuff like Suspense\n  // retries or transitions). It's been like this for a while, though, so fixing\n  // it probably isn't that urgent.\n\n  if (remainingLanes === NoLanes) {\n    // If there's no remaining work, we can clear the set of already failed\n    // error boundaries.\n    legacyErrorBoundariesThatAlreadyFailed = null;\n  }\n\n  {\n    if (!rootDidHavePassiveEffects) {\n      commitDoubleInvokeEffectsInDEV(root.current, false);\n    }\n  }\n\n  onCommitRoot(finishedWork.stateNode, renderPriorityLevel);\n\n  {\n    if (isDevToolsPresent) {\n      root.memoizedUpdaters.clear();\n    }\n  }\n\n  {\n    onCommitRoot$1();\n  } // Always call this before exiting `commitRoot`, to ensure that any\n  // additional work on this root is scheduled.\n\n\n  ensureRootIsScheduled(root, now());\n\n  if (recoverableErrors !== null) {\n    // There were errors during this render, but recovered from them without\n    // needing to surface it to the UI. We log them here.\n    var onRecoverableError = root.onRecoverableError;\n\n    for (var i = 0; i < recoverableErrors.length; i++) {\n      var recoverableError = recoverableErrors[i];\n      var componentStack = recoverableError.stack;\n      var digest = recoverableError.digest;\n      onRecoverableError(recoverableError.value, {\n        componentStack: componentStack,\n        digest: digest\n      });\n    }\n  }\n\n  if (hasUncaughtError) {\n    hasUncaughtError = false;\n    var error$1 = firstUncaughtError;\n    firstUncaughtError = null;\n    throw error$1;\n  } // If the passive effects are the result of a discrete render, flush them\n  // synchronously at the end of the current task so that the result is\n  // immediately observable. Otherwise, we assume that they are not\n  // order-dependent and do not need to be observed by external systems, so we\n  // can wait until after paint.\n  // TODO: We can optimize this by not scheduling the callback earlier. Since we\n  // currently schedule the callback in multiple places, will wait until those\n  // are consolidated.\n\n\n  if (includesSomeLane(pendingPassiveEffectsLanes, SyncLane) && root.tag !== LegacyRoot) {\n    flushPassiveEffects();\n  } // Read this again, since a passive effect might have updated it\n\n\n  remainingLanes = root.pendingLanes;\n\n  if (includesSomeLane(remainingLanes, SyncLane)) {\n    {\n      markNestedUpdateScheduled();\n    } // Count the number of times the root synchronously re-renders without\n    // finishing. If there are too many, it indicates an infinite update loop.\n\n\n    if (root === rootWithNestedUpdates) {\n      nestedUpdateCount++;\n    } else {\n      nestedUpdateCount = 0;\n      rootWithNestedUpdates = root;\n    }\n  } else {\n    nestedUpdateCount = 0;\n  } // If layout work was scheduled, flush it now.\n\n\n  flushSyncCallbacks();\n\n  {\n    markCommitStopped();\n  }\n\n  return null;\n}\n\nfunction flushPassiveEffects() {\n  // Returns whether passive effects were flushed.\n  // TODO: Combine this check with the one in flushPassiveEFfectsImpl. We should\n  // probably just combine the two functions. I believe they were only separate\n  // in the first place because we used to wrap it with\n  // `Scheduler.runWithPriority`, which accepts a function. But now we track the\n  // priority within React itself, so we can mutate the variable directly.\n  if (rootWithPendingPassiveEffects !== null) {\n    var renderPriority = lanesToEventPriority(pendingPassiveEffectsLanes);\n    var priority = lowerEventPriority(DefaultEventPriority, renderPriority);\n    var prevTransition = ReactCurrentBatchConfig$3.transition;\n    var previousPriority = getCurrentUpdatePriority();\n\n    try {\n      ReactCurrentBatchConfig$3.transition = null;\n      setCurrentUpdatePriority(priority);\n      return flushPassiveEffectsImpl();\n    } finally {\n      setCurrentUpdatePriority(previousPriority);\n      ReactCurrentBatchConfig$3.transition = prevTransition; // Once passive effects have run for the tree - giving components a\n    }\n  }\n\n  return false;\n}\nfunction enqueuePendingPassiveProfilerEffect(fiber) {\n  {\n    pendingPassiveProfilerEffects.push(fiber);\n\n    if (!rootDoesHavePassiveEffects) {\n      rootDoesHavePassiveEffects = true;\n      scheduleCallback$1(NormalPriority, function () {\n        flushPassiveEffects();\n        return null;\n      });\n    }\n  }\n}\n\nfunction flushPassiveEffectsImpl() {\n  if (rootWithPendingPassiveEffects === null) {\n    return false;\n  } // Cache and clear the transitions flag\n\n\n  var transitions = pendingPassiveTransitions;\n  pendingPassiveTransitions = null;\n  var root = rootWithPendingPassiveEffects;\n  var lanes = pendingPassiveEffectsLanes;\n  rootWithPendingPassiveEffects = null; // TODO: This is sometimes out of sync with rootWithPendingPassiveEffects.\n  // Figure out why and fix it. It's not causing any known issues (probably\n  // because it's only used for profiling), but it's a refactor hazard.\n\n  pendingPassiveEffectsLanes = NoLanes;\n\n  if ((executionContext & (RenderContext | CommitContext)) !== NoContext) {\n    throw new Error('Cannot flush passive effects while already rendering.');\n  }\n\n  {\n    isFlushingPassiveEffects = true;\n    didScheduleUpdateDuringPassiveEffects = false;\n  }\n\n  {\n    markPassiveEffectsStarted(lanes);\n  }\n\n  var prevExecutionContext = executionContext;\n  executionContext |= CommitContext;\n  commitPassiveUnmountEffects(root.current);\n  commitPassiveMountEffects(root, root.current, lanes, transitions); // TODO: Move to commitPassiveMountEffects\n\n  {\n    var profilerEffects = pendingPassiveProfilerEffects;\n    pendingPassiveProfilerEffects = [];\n\n    for (var i = 0; i < profilerEffects.length; i++) {\n      var _fiber = profilerEffects[i];\n      commitPassiveEffectDurations(root, _fiber);\n    }\n  }\n\n  {\n    markPassiveEffectsStopped();\n  }\n\n  {\n    commitDoubleInvokeEffectsInDEV(root.current, true);\n  }\n\n  executionContext = prevExecutionContext;\n  flushSyncCallbacks();\n\n  {\n    // If additional passive effects were scheduled, increment a counter. If this\n    // exceeds the limit, we'll fire a warning.\n    if (didScheduleUpdateDuringPassiveEffects) {\n      if (root === rootWithPassiveNestedUpdates) {\n        nestedPassiveUpdateCount++;\n      } else {\n        nestedPassiveUpdateCount = 0;\n        rootWithPassiveNestedUpdates = root;\n      }\n    } else {\n      nestedPassiveUpdateCount = 0;\n    }\n\n    isFlushingPassiveEffects = false;\n    didScheduleUpdateDuringPassiveEffects = false;\n  } // TODO: Move to commitPassiveMountEffects\n\n\n  onPostCommitRoot(root);\n\n  {\n    var stateNode = root.current.stateNode;\n    stateNode.effectDuration = 0;\n    stateNode.passiveEffectDuration = 0;\n  }\n\n  return true;\n}\n\nfunction isAlreadyFailedLegacyErrorBoundary(instance) {\n  return legacyErrorBoundariesThatAlreadyFailed !== null && legacyErrorBoundariesThatAlreadyFailed.has(instance);\n}\nfunction markLegacyErrorBoundaryAsFailed(instance) {\n  if (legacyErrorBoundariesThatAlreadyFailed === null) {\n    legacyErrorBoundariesThatAlreadyFailed = new Set([instance]);\n  } else {\n    legacyErrorBoundariesThatAlreadyFailed.add(instance);\n  }\n}\n\nfunction prepareToThrowUncaughtError(error) {\n  if (!hasUncaughtError) {\n    hasUncaughtError = true;\n    firstUncaughtError = error;\n  }\n}\n\nvar onUncaughtError = prepareToThrowUncaughtError;\n\nfunction captureCommitPhaseErrorOnRoot(rootFiber, sourceFiber, error) {\n  var errorInfo = createCapturedValueAtFiber(error, sourceFiber);\n  var update = createRootErrorUpdate(rootFiber, errorInfo, SyncLane);\n  var root = enqueueUpdate(rootFiber, update, SyncLane);\n  var eventTime = requestEventTime();\n\n  if (root !== null) {\n    markRootUpdated(root, SyncLane, eventTime);\n    ensureRootIsScheduled(root, eventTime);\n  }\n}\n\nfunction captureCommitPhaseError(sourceFiber, nearestMountedAncestor, error$1) {\n  {\n    reportUncaughtErrorInDEV(error$1);\n    setIsRunningInsertionEffect(false);\n  }\n\n  if (sourceFiber.tag === HostRoot) {\n    // Error was thrown at the root. There is no parent, so the root\n    // itself should capture it.\n    captureCommitPhaseErrorOnRoot(sourceFiber, sourceFiber, error$1);\n    return;\n  }\n\n  var fiber = null;\n\n  {\n    fiber = nearestMountedAncestor;\n  }\n\n  while (fiber !== null) {\n    if (fiber.tag === HostRoot) {\n      captureCommitPhaseErrorOnRoot(fiber, sourceFiber, error$1);\n      return;\n    } else if (fiber.tag === ClassComponent) {\n      var ctor = fiber.type;\n      var instance = fiber.stateNode;\n\n      if (typeof ctor.getDerivedStateFromError === 'function' || typeof instance.componentDidCatch === 'function' && !isAlreadyFailedLegacyErrorBoundary(instance)) {\n        var errorInfo = createCapturedValueAtFiber(error$1, sourceFiber);\n        var update = createClassErrorUpdate(fiber, errorInfo, SyncLane);\n        var root = enqueueUpdate(fiber, update, SyncLane);\n        var eventTime = requestEventTime();\n\n        if (root !== null) {\n          markRootUpdated(root, SyncLane, eventTime);\n          ensureRootIsScheduled(root, eventTime);\n        }\n\n        return;\n      }\n    }\n\n    fiber = fiber.return;\n  }\n\n  {\n    // TODO: Until we re-land skipUnmountedBoundaries (see #20147), this warning\n    // will fire for errors that are thrown by destroy functions inside deleted\n    // trees. What it should instead do is propagate the error to the parent of\n    // the deleted tree. In the meantime, do not add this warning to the\n    // allowlist; this is only for our internal use.\n    error('Internal React error: Attempted to capture a commit phase error ' + 'inside a detached tree. This indicates a bug in React. Likely ' + 'causes include deleting the same fiber more than once, committing an ' + 'already-finished tree, or an inconsistent return pointer.\\n\\n' + 'Error message:\\n\\n%s', error$1);\n  }\n}\nfunction pingSuspendedRoot(root, wakeable, pingedLanes) {\n  var pingCache = root.pingCache;\n\n  if (pingCache !== null) {\n    // The wakeable resolved, so we no longer need to memoize, because it will\n    // never be thrown again.\n    pingCache.delete(wakeable);\n  }\n\n  var eventTime = requestEventTime();\n  markRootPinged(root, pingedLanes);\n  warnIfSuspenseResolutionNotWrappedWithActDEV(root);\n\n  if (workInProgressRoot === root && isSubsetOfLanes(workInProgressRootRenderLanes, pingedLanes)) {\n    // Received a ping at the same priority level at which we're currently\n    // rendering. We might want to restart this render. This should mirror\n    // the logic of whether or not a root suspends once it completes.\n    // TODO: If we're rendering sync either due to Sync, Batched or expired,\n    // we should probably never restart.\n    // If we're suspended with delay, or if it's a retry, we'll always suspend\n    // so we can always restart.\n    if (workInProgressRootExitStatus === RootSuspendedWithDelay || workInProgressRootExitStatus === RootSuspended && includesOnlyRetries(workInProgressRootRenderLanes) && now() - globalMostRecentFallbackTime < FALLBACK_THROTTLE_MS) {\n      // Restart from the root.\n      prepareFreshStack(root, NoLanes);\n    } else {\n      // Even though we can't restart right now, we might get an\n      // opportunity later. So we mark this render as having a ping.\n      workInProgressRootPingedLanes = mergeLanes(workInProgressRootPingedLanes, pingedLanes);\n    }\n  }\n\n  ensureRootIsScheduled(root, eventTime);\n}\n\nfunction retryTimedOutBoundary(boundaryFiber, retryLane) {\n  // The boundary fiber (a Suspense component or SuspenseList component)\n  // previously was rendered in its fallback state. One of the promises that\n  // suspended it has resolved, which means at least part of the tree was\n  // likely unblocked. Try rendering again, at a new lanes.\n  if (retryLane === NoLane) {\n    // TODO: Assign this to `suspenseState.retryLane`? to avoid\n    // unnecessary entanglement?\n    retryLane = requestRetryLane(boundaryFiber);\n  } // TODO: Special case idle priority?\n\n\n  var eventTime = requestEventTime();\n  var root = enqueueConcurrentRenderForLane(boundaryFiber, retryLane);\n\n  if (root !== null) {\n    markRootUpdated(root, retryLane, eventTime);\n    ensureRootIsScheduled(root, eventTime);\n  }\n}\n\nfunction retryDehydratedSuspenseBoundary(boundaryFiber) {\n  var suspenseState = boundaryFiber.memoizedState;\n  var retryLane = NoLane;\n\n  if (suspenseState !== null) {\n    retryLane = suspenseState.retryLane;\n  }\n\n  retryTimedOutBoundary(boundaryFiber, retryLane);\n}\nfunction resolveRetryWakeable(boundaryFiber, wakeable) {\n  var retryLane = NoLane; // Default\n\n  var retryCache;\n\n  switch (boundaryFiber.tag) {\n    case SuspenseComponent:\n      retryCache = boundaryFiber.stateNode;\n      var suspenseState = boundaryFiber.memoizedState;\n\n      if (suspenseState !== null) {\n        retryLane = suspenseState.retryLane;\n      }\n\n      break;\n\n    case SuspenseListComponent:\n      retryCache = boundaryFiber.stateNode;\n      break;\n\n    default:\n      throw new Error('Pinged unknown suspense boundary type. ' + 'This is probably a bug in React.');\n  }\n\n  if (retryCache !== null) {\n    // The wakeable resolved, so we no longer need to memoize, because it will\n    // never be thrown again.\n    retryCache.delete(wakeable);\n  }\n\n  retryTimedOutBoundary(boundaryFiber, retryLane);\n} // Computes the next Just Noticeable Difference (JND) boundary.\n// The theory is that a person can't tell the difference between small differences in time.\n// Therefore, if we wait a bit longer than necessary that won't translate to a noticeable\n// difference in the experience. However, waiting for longer might mean that we can avoid\n// showing an intermediate loading state. The longer we have already waited, the harder it\n// is to tell small differences in time. Therefore, the longer we've already waited,\n// the longer we can wait additionally. At some point we have to give up though.\n// We pick a train model where the next boundary commits at a consistent schedule.\n// These particular numbers are vague estimates. We expect to adjust them based on research.\n\nfunction jnd(timeElapsed) {\n  return timeElapsed < 120 ? 120 : timeElapsed < 480 ? 480 : timeElapsed < 1080 ? 1080 : timeElapsed < 1920 ? 1920 : timeElapsed < 3000 ? 3000 : timeElapsed < 4320 ? 4320 : ceil(timeElapsed / 1960) * 1960;\n}\n\nfunction checkForNestedUpdates() {\n  if (nestedUpdateCount > NESTED_UPDATE_LIMIT) {\n    nestedUpdateCount = 0;\n    rootWithNestedUpdates = null;\n    throw new Error('Maximum update depth exceeded. This can happen when a component ' + 'repeatedly calls setState inside componentWillUpdate or ' + 'componentDidUpdate. React limits the number of nested updates to ' + 'prevent infinite loops.');\n  }\n\n  {\n    if (nestedPassiveUpdateCount > NESTED_PASSIVE_UPDATE_LIMIT) {\n      nestedPassiveUpdateCount = 0;\n      rootWithPassiveNestedUpdates = null;\n\n      error('Maximum update depth exceeded. This can happen when a component ' + \"calls setState inside useEffect, but useEffect either doesn't \" + 'have a dependency array, or one of the dependencies changes on ' + 'every render.');\n    }\n  }\n}\n\nfunction flushRenderPhaseStrictModeWarningsInDEV() {\n  {\n    ReactStrictModeWarnings.flushLegacyContextWarning();\n\n    {\n      ReactStrictModeWarnings.flushPendingUnsafeLifecycleWarnings();\n    }\n  }\n}\n\nfunction commitDoubleInvokeEffectsInDEV(fiber, hasPassiveEffects) {\n  {\n    // TODO (StrictEffects) Should we set a marker on the root if it contains strict effects\n    // so we don't traverse unnecessarily? similar to subtreeFlags but just at the root level.\n    // Maybe not a big deal since this is DEV only behavior.\n    setCurrentFiber(fiber);\n    invokeEffectsInDev(fiber, MountLayoutDev, invokeLayoutEffectUnmountInDEV);\n\n    if (hasPassiveEffects) {\n      invokeEffectsInDev(fiber, MountPassiveDev, invokePassiveEffectUnmountInDEV);\n    }\n\n    invokeEffectsInDev(fiber, MountLayoutDev, invokeLayoutEffectMountInDEV);\n\n    if (hasPassiveEffects) {\n      invokeEffectsInDev(fiber, MountPassiveDev, invokePassiveEffectMountInDEV);\n    }\n\n    resetCurrentFiber();\n  }\n}\n\nfunction invokeEffectsInDev(firstChild, fiberFlags, invokeEffectFn) {\n  {\n    // We don't need to re-check StrictEffectsMode here.\n    // This function is only called if that check has already passed.\n    var current = firstChild;\n    var subtreeRoot = null;\n\n    while (current !== null) {\n      var primarySubtreeFlag = current.subtreeFlags & fiberFlags;\n\n      if (current !== subtreeRoot && current.child !== null && primarySubtreeFlag !== NoFlags) {\n        current = current.child;\n      } else {\n        if ((current.flags & fiberFlags) !== NoFlags) {\n          invokeEffectFn(current);\n        }\n\n        if (current.sibling !== null) {\n          current = current.sibling;\n        } else {\n          current = subtreeRoot = current.return;\n        }\n      }\n    }\n  }\n}\n\nvar didWarnStateUpdateForNotYetMountedComponent = null;\nfunction warnAboutUpdateOnNotYetMountedFiberInDEV(fiber) {\n  {\n    if ((executionContext & RenderContext) !== NoContext) {\n      // We let the other warning about render phase updates deal with this one.\n      return;\n    }\n\n    if (!(fiber.mode & ConcurrentMode)) {\n      return;\n    }\n\n    var tag = fiber.tag;\n\n    if (tag !== IndeterminateComponent && tag !== HostRoot && tag !== ClassComponent && tag !== FunctionComponent && tag !== ForwardRef && tag !== MemoComponent && tag !== SimpleMemoComponent) {\n      // Only warn for user-defined components, not internal ones like Suspense.\n      return;\n    } // We show the whole stack but dedupe on the top component's name because\n    // the problematic code almost always lies inside that component.\n\n\n    var componentName = getComponentNameFromFiber(fiber) || 'ReactComponent';\n\n    if (didWarnStateUpdateForNotYetMountedComponent !== null) {\n      if (didWarnStateUpdateForNotYetMountedComponent.has(componentName)) {\n        return;\n      }\n\n      didWarnStateUpdateForNotYetMountedComponent.add(componentName);\n    } else {\n      didWarnStateUpdateForNotYetMountedComponent = new Set([componentName]);\n    }\n\n    var previousFiber = current;\n\n    try {\n      setCurrentFiber(fiber);\n\n      error(\"Can't perform a React state update on a component that hasn't mounted yet. \" + 'This indicates that you have a side-effect in your render function that ' + 'asynchronously later calls tries to update the component. Move this work to ' + 'useEffect instead.');\n    } finally {\n      if (previousFiber) {\n        setCurrentFiber(fiber);\n      } else {\n        resetCurrentFiber();\n      }\n    }\n  }\n}\nvar beginWork$1;\n\n{\n  var dummyFiber = null;\n\n  beginWork$1 = function (current, unitOfWork, lanes) {\n    // If a component throws an error, we replay it again in a synchronously\n    // dispatched event, so that the debugger will treat it as an uncaught\n    // error See ReactErrorUtils for more information.\n    // Before entering the begin phase, copy the work-in-progress onto a dummy\n    // fiber. If beginWork throws, we'll use this to reset the state.\n    var originalWorkInProgressCopy = assignFiberPropertiesInDEV(dummyFiber, unitOfWork);\n\n    try {\n      return beginWork(current, unitOfWork, lanes);\n    } catch (originalError) {\n      if (didSuspendOrErrorWhileHydratingDEV() || originalError !== null && typeof originalError === 'object' && typeof originalError.then === 'function') {\n        // Don't replay promises.\n        // Don't replay errors if we are hydrating and have already suspended or handled an error\n        throw originalError;\n      } // Keep this code in sync with handleError; any changes here must have\n      // corresponding changes there.\n\n\n      resetContextDependencies();\n      resetHooksAfterThrow(); // Don't reset current debug fiber, since we're about to work on the\n      // same fiber again.\n      // Unwind the failed stack frame\n\n      unwindInterruptedWork(current, unitOfWork); // Restore the original properties of the fiber.\n\n      assignFiberPropertiesInDEV(unitOfWork, originalWorkInProgressCopy);\n\n      if ( unitOfWork.mode & ProfileMode) {\n        // Reset the profiler timer.\n        startProfilerTimer(unitOfWork);\n      } // Run beginWork again.\n\n\n      invokeGuardedCallback(null, beginWork, null, current, unitOfWork, lanes);\n\n      if (hasCaughtError()) {\n        var replayError = clearCaughtError();\n\n        if (typeof replayError === 'object' && replayError !== null && replayError._suppressLogging && typeof originalError === 'object' && originalError !== null && !originalError._suppressLogging) {\n          // If suppressed, let the flag carry over to the original error which is the one we'll rethrow.\n          originalError._suppressLogging = true;\n        }\n      } // We always throw the original error in case the second render pass is not idempotent.\n      // This can happen if a memoized function or CommonJS module doesn't throw after first invocation.\n\n\n      throw originalError;\n    }\n  };\n}\n\nvar didWarnAboutUpdateInRender = false;\nvar didWarnAboutUpdateInRenderForAnotherComponent;\n\n{\n  didWarnAboutUpdateInRenderForAnotherComponent = new Set();\n}\n\nfunction warnAboutRenderPhaseUpdatesInDEV(fiber) {\n  {\n    if (isRendering && !getIsUpdatingOpaqueValueInRenderPhaseInDEV()) {\n      switch (fiber.tag) {\n        case FunctionComponent:\n        case ForwardRef:\n        case SimpleMemoComponent:\n          {\n            var renderingComponentName = workInProgress && getComponentNameFromFiber(workInProgress) || 'Unknown'; // Dedupe by the rendering component because it's the one that needs to be fixed.\n\n            var dedupeKey = renderingComponentName;\n\n            if (!didWarnAboutUpdateInRenderForAnotherComponent.has(dedupeKey)) {\n              didWarnAboutUpdateInRenderForAnotherComponent.add(dedupeKey);\n              var setStateComponentName = getComponentNameFromFiber(fiber) || 'Unknown';\n\n              error('Cannot update a component (`%s`) while rendering a ' + 'different component (`%s`). To locate the bad setState() call inside `%s`, ' + 'follow the stack trace as described in https://reactjs.org/link/setstate-in-render', setStateComponentName, renderingComponentName, renderingComponentName);\n            }\n\n            break;\n          }\n\n        case ClassComponent:\n          {\n            if (!didWarnAboutUpdateInRender) {\n              error('Cannot update during an existing state transition (such as ' + 'within `render`). Render methods should be a pure ' + 'function of props and state.');\n\n              didWarnAboutUpdateInRender = true;\n            }\n\n            break;\n          }\n      }\n    }\n  }\n}\n\nfunction restorePendingUpdaters(root, lanes) {\n  {\n    if (isDevToolsPresent) {\n      var memoizedUpdaters = root.memoizedUpdaters;\n      memoizedUpdaters.forEach(function (schedulingFiber) {\n        addFiberToLanesMap(root, schedulingFiber, lanes);\n      }); // This function intentionally does not clear memoized updaters.\n      // Those may still be relevant to the current commit\n      // and a future one (e.g. Suspense).\n    }\n  }\n}\nvar fakeActCallbackNode = {};\n\nfunction scheduleCallback$1(priorityLevel, callback) {\n  {\n    // If we're currently inside an `act` scope, bypass Scheduler and push to\n    // the `act` queue instead.\n    var actQueue = ReactCurrentActQueue$1.current;\n\n    if (actQueue !== null) {\n      actQueue.push(callback);\n      return fakeActCallbackNode;\n    } else {\n      return scheduleCallback(priorityLevel, callback);\n    }\n  }\n}\n\nfunction cancelCallback$1(callbackNode) {\n  if ( callbackNode === fakeActCallbackNode) {\n    return;\n  } // In production, always call Scheduler. This function will be stripped out.\n\n\n  return cancelCallback(callbackNode);\n}\n\nfunction shouldForceFlushFallbacksInDEV() {\n  // Never force flush in production. This function should get stripped out.\n  return  ReactCurrentActQueue$1.current !== null;\n}\n\nfunction warnIfUpdatesNotWrappedWithActDEV(fiber) {\n  {\n    if (fiber.mode & ConcurrentMode) {\n      if (!isConcurrentActEnvironment()) {\n        // Not in an act environment. No need to warn.\n        return;\n      }\n    } else {\n      // Legacy mode has additional cases where we suppress a warning.\n      if (!isLegacyActEnvironment()) {\n        // Not in an act environment. No need to warn.\n        return;\n      }\n\n      if (executionContext !== NoContext) {\n        // Legacy mode doesn't warn if the update is batched, i.e.\n        // batchedUpdates or flushSync.\n        return;\n      }\n\n      if (fiber.tag !== FunctionComponent && fiber.tag !== ForwardRef && fiber.tag !== SimpleMemoComponent) {\n        // For backwards compatibility with pre-hooks code, legacy mode only\n        // warns for updates that originate from a hook.\n        return;\n      }\n    }\n\n    if (ReactCurrentActQueue$1.current === null) {\n      var previousFiber = current;\n\n      try {\n        setCurrentFiber(fiber);\n\n        error('An update to %s inside a test was not wrapped in act(...).\\n\\n' + 'When testing, code that causes React state updates should be ' + 'wrapped into act(...):\\n\\n' + 'act(() => {\\n' + '  /* fire events that update state */\\n' + '});\\n' + '/* assert on the output */\\n\\n' + \"This ensures that you're testing the behavior the user would see \" + 'in the browser.' + ' Learn more at https://reactjs.org/link/wrap-tests-with-act', getComponentNameFromFiber(fiber));\n      } finally {\n        if (previousFiber) {\n          setCurrentFiber(fiber);\n        } else {\n          resetCurrentFiber();\n        }\n      }\n    }\n  }\n}\n\nfunction warnIfSuspenseResolutionNotWrappedWithActDEV(root) {\n  {\n    if (root.tag !== LegacyRoot && isConcurrentActEnvironment() && ReactCurrentActQueue$1.current === null) {\n      error('A suspended resource finished loading inside a test, but the event ' + 'was not wrapped in act(...).\\n\\n' + 'When testing, code that resolves suspended data should be wrapped ' + 'into act(...):\\n\\n' + 'act(() => {\\n' + '  /* finish loading suspended data */\\n' + '});\\n' + '/* assert on the output */\\n\\n' + \"This ensures that you're testing the behavior the user would see \" + 'in the browser.' + ' Learn more at https://reactjs.org/link/wrap-tests-with-act');\n    }\n  }\n}\n\nfunction setIsRunningInsertionEffect(isRunning) {\n  {\n    isRunningInsertionEffect = isRunning;\n  }\n}\n\n/* eslint-disable react-internal/prod-error-codes */\nvar resolveFamily = null; // $FlowFixMe Flow gets confused by a WeakSet feature check below.\n\nvar failedBoundaries = null;\nvar setRefreshHandler = function (handler) {\n  {\n    resolveFamily = handler;\n  }\n};\nfunction resolveFunctionForHotReloading(type) {\n  {\n    if (resolveFamily === null) {\n      // Hot reloading is disabled.\n      return type;\n    }\n\n    var family = resolveFamily(type);\n\n    if (family === undefined) {\n      return type;\n    } // Use the latest known implementation.\n\n\n    return family.current;\n  }\n}\nfunction resolveClassForHotReloading(type) {\n  // No implementation differences.\n  return resolveFunctionForHotReloading(type);\n}\nfunction resolveForwardRefForHotReloading(type) {\n  {\n    if (resolveFamily === null) {\n      // Hot reloading is disabled.\n      return type;\n    }\n\n    var family = resolveFamily(type);\n\n    if (family === undefined) {\n      // Check if we're dealing with a real forwardRef. Don't want to crash early.\n      if (type !== null && type !== undefined && typeof type.render === 'function') {\n        // ForwardRef is special because its resolved .type is an object,\n        // but it's possible that we only have its inner render function in the map.\n        // If that inner render function is different, we'll build a new forwardRef type.\n        var currentRender = resolveFunctionForHotReloading(type.render);\n\n        if (type.render !== currentRender) {\n          var syntheticType = {\n            $$typeof: REACT_FORWARD_REF_TYPE,\n            render: currentRender\n          };\n\n          if (type.displayName !== undefined) {\n            syntheticType.displayName = type.displayName;\n          }\n\n          return syntheticType;\n        }\n      }\n\n      return type;\n    } // Use the latest known implementation.\n\n\n    return family.current;\n  }\n}\nfunction isCompatibleFamilyForHotReloading(fiber, element) {\n  {\n    if (resolveFamily === null) {\n      // Hot reloading is disabled.\n      return false;\n    }\n\n    var prevType = fiber.elementType;\n    var nextType = element.type; // If we got here, we know types aren't === equal.\n\n    var needsCompareFamilies = false;\n    var $$typeofNextType = typeof nextType === 'object' && nextType !== null ? nextType.$$typeof : null;\n\n    switch (fiber.tag) {\n      case ClassComponent:\n        {\n          if (typeof nextType === 'function') {\n            needsCompareFamilies = true;\n          }\n\n          break;\n        }\n\n      case FunctionComponent:\n        {\n          if (typeof nextType === 'function') {\n            needsCompareFamilies = true;\n          } else if ($$typeofNextType === REACT_LAZY_TYPE) {\n            // We don't know the inner type yet.\n            // We're going to assume that the lazy inner type is stable,\n            // and so it is sufficient to avoid reconciling it away.\n            // We're not going to unwrap or actually use the new lazy type.\n            needsCompareFamilies = true;\n          }\n\n          break;\n        }\n\n      case ForwardRef:\n        {\n          if ($$typeofNextType === REACT_FORWARD_REF_TYPE) {\n            needsCompareFamilies = true;\n          } else if ($$typeofNextType === REACT_LAZY_TYPE) {\n            needsCompareFamilies = true;\n          }\n\n          break;\n        }\n\n      case MemoComponent:\n      case SimpleMemoComponent:\n        {\n          if ($$typeofNextType === REACT_MEMO_TYPE) {\n            // TODO: if it was but can no longer be simple,\n            // we shouldn't set this.\n            needsCompareFamilies = true;\n          } else if ($$typeofNextType === REACT_LAZY_TYPE) {\n            needsCompareFamilies = true;\n          }\n\n          break;\n        }\n\n      default:\n        return false;\n    } // Check if both types have a family and it's the same one.\n\n\n    if (needsCompareFamilies) {\n      // Note: memo() and forwardRef() we'll compare outer rather than inner type.\n      // This means both of them need to be registered to preserve state.\n      // If we unwrapped and compared the inner types for wrappers instead,\n      // then we would risk falsely saying two separate memo(Foo)\n      // calls are equivalent because they wrap the same Foo function.\n      var prevFamily = resolveFamily(prevType);\n\n      if (prevFamily !== undefined && prevFamily === resolveFamily(nextType)) {\n        return true;\n      }\n    }\n\n    return false;\n  }\n}\nfunction markFailedErrorBoundaryForHotReloading(fiber) {\n  {\n    if (resolveFamily === null) {\n      // Hot reloading is disabled.\n      return;\n    }\n\n    if (typeof WeakSet !== 'function') {\n      return;\n    }\n\n    if (failedBoundaries === null) {\n      failedBoundaries = new WeakSet();\n    }\n\n    failedBoundaries.add(fiber);\n  }\n}\nvar scheduleRefresh = function (root, update) {\n  {\n    if (resolveFamily === null) {\n      // Hot reloading is disabled.\n      return;\n    }\n\n    var staleFamilies = update.staleFamilies,\n        updatedFamilies = update.updatedFamilies;\n    flushPassiveEffects();\n    flushSync(function () {\n      scheduleFibersWithFamiliesRecursively(root.current, updatedFamilies, staleFamilies);\n    });\n  }\n};\nvar scheduleRoot = function (root, element) {\n  {\n    if (root.context !== emptyContextObject) {\n      // Super edge case: root has a legacy _renderSubtree context\n      // but we don't know the parentComponent so we can't pass it.\n      // Just ignore. We'll delete this with _renderSubtree code path later.\n      return;\n    }\n\n    flushPassiveEffects();\n    flushSync(function () {\n      updateContainer(element, root, null, null);\n    });\n  }\n};\n\nfunction scheduleFibersWithFamiliesRecursively(fiber, updatedFamilies, staleFamilies) {\n  {\n    var alternate = fiber.alternate,\n        child = fiber.child,\n        sibling = fiber.sibling,\n        tag = fiber.tag,\n        type = fiber.type;\n    var candidateType = null;\n\n    switch (tag) {\n      case FunctionComponent:\n      case SimpleMemoComponent:\n      case ClassComponent:\n        candidateType = type;\n        break;\n\n      case ForwardRef:\n        candidateType = type.render;\n        break;\n    }\n\n    if (resolveFamily === null) {\n      throw new Error('Expected resolveFamily to be set during hot reload.');\n    }\n\n    var needsRender = false;\n    var needsRemount = false;\n\n    if (candidateType !== null) {\n      var family = resolveFamily(candidateType);\n\n      if (family !== undefined) {\n        if (staleFamilies.has(family)) {\n          needsRemount = true;\n        } else if (updatedFamilies.has(family)) {\n          if (tag === ClassComponent) {\n            needsRemount = true;\n          } else {\n            needsRender = true;\n          }\n        }\n      }\n    }\n\n    if (failedBoundaries !== null) {\n      if (failedBoundaries.has(fiber) || alternate !== null && failedBoundaries.has(alternate)) {\n        needsRemount = true;\n      }\n    }\n\n    if (needsRemount) {\n      fiber._debugNeedsRemount = true;\n    }\n\n    if (needsRemount || needsRender) {\n      var _root = enqueueConcurrentRenderForLane(fiber, SyncLane);\n\n      if (_root !== null) {\n        scheduleUpdateOnFiber(_root, fiber, SyncLane, NoTimestamp);\n      }\n    }\n\n    if (child !== null && !needsRemount) {\n      scheduleFibersWithFamiliesRecursively(child, updatedFamilies, staleFamilies);\n    }\n\n    if (sibling !== null) {\n      scheduleFibersWithFamiliesRecursively(sibling, updatedFamilies, staleFamilies);\n    }\n  }\n}\n\nvar findHostInstancesForRefresh = function (root, families) {\n  {\n    var hostInstances = new Set();\n    var types = new Set(families.map(function (family) {\n      return family.current;\n    }));\n    findHostInstancesForMatchingFibersRecursively(root.current, types, hostInstances);\n    return hostInstances;\n  }\n};\n\nfunction findHostInstancesForMatchingFibersRecursively(fiber, types, hostInstances) {\n  {\n    var child = fiber.child,\n        sibling = fiber.sibling,\n        tag = fiber.tag,\n        type = fiber.type;\n    var candidateType = null;\n\n    switch (tag) {\n      case FunctionComponent:\n      case SimpleMemoComponent:\n      case ClassComponent:\n        candidateType = type;\n        break;\n\n      case ForwardRef:\n        candidateType = type.render;\n        break;\n    }\n\n    var didMatch = false;\n\n    if (candidateType !== null) {\n      if (types.has(candidateType)) {\n        didMatch = true;\n      }\n    }\n\n    if (didMatch) {\n      // We have a match. This only drills down to the closest host components.\n      // There's no need to search deeper because for the purpose of giving\n      // visual feedback, \"flashing\" outermost parent rectangles is sufficient.\n      findHostInstancesForFiberShallowly(fiber, hostInstances);\n    } else {\n      // If there's no match, maybe there will be one further down in the child tree.\n      if (child !== null) {\n        findHostInstancesForMatchingFibersRecursively(child, types, hostInstances);\n      }\n    }\n\n    if (sibling !== null) {\n      findHostInstancesForMatchingFibersRecursively(sibling, types, hostInstances);\n    }\n  }\n}\n\nfunction findHostInstancesForFiberShallowly(fiber, hostInstances) {\n  {\n    var foundHostInstances = findChildHostInstancesForFiberShallowly(fiber, hostInstances);\n\n    if (foundHostInstances) {\n      return;\n    } // If we didn't find any host children, fallback to closest host parent.\n\n\n    var node = fiber;\n\n    while (true) {\n      switch (node.tag) {\n        case HostComponent:\n          hostInstances.add(node.stateNode);\n          return;\n\n        case HostPortal:\n          hostInstances.add(node.stateNode.containerInfo);\n          return;\n\n        case HostRoot:\n          hostInstances.add(node.stateNode.containerInfo);\n          return;\n      }\n\n      if (node.return === null) {\n        throw new Error('Expected to reach root first.');\n      }\n\n      node = node.return;\n    }\n  }\n}\n\nfunction findChildHostInstancesForFiberShallowly(fiber, hostInstances) {\n  {\n    var node = fiber;\n    var foundHostInstances = false;\n\n    while (true) {\n      if (node.tag === HostComponent) {\n        // We got a match.\n        foundHostInstances = true;\n        hostInstances.add(node.stateNode); // There may still be more, so keep searching.\n      } else if (node.child !== null) {\n        node.child.return = node;\n        node = node.child;\n        continue;\n      }\n\n      if (node === fiber) {\n        return foundHostInstances;\n      }\n\n      while (node.sibling === null) {\n        if (node.return === null || node.return === fiber) {\n          return foundHostInstances;\n        }\n\n        node = node.return;\n      }\n\n      node.sibling.return = node.return;\n      node = node.sibling;\n    }\n  }\n\n  return false;\n}\n\nvar hasBadMapPolyfill;\n\n{\n  hasBadMapPolyfill = false;\n\n  try {\n    var nonExtensibleObject = Object.preventExtensions({});\n    /* eslint-disable no-new */\n\n    new Map([[nonExtensibleObject, null]]);\n    new Set([nonExtensibleObject]);\n    /* eslint-enable no-new */\n  } catch (e) {\n    // TODO: Consider warning about bad polyfills\n    hasBadMapPolyfill = true;\n  }\n}\n\nfunction FiberNode(tag, pendingProps, key, mode) {\n  // Instance\n  this.tag = tag;\n  this.key = key;\n  this.elementType = null;\n  this.type = null;\n  this.stateNode = null; // Fiber\n\n  this.return = null;\n  this.child = null;\n  this.sibling = null;\n  this.index = 0;\n  this.ref = null;\n  this.pendingProps = pendingProps;\n  this.memoizedProps = null;\n  this.updateQueue = null;\n  this.memoizedState = null;\n  this.dependencies = null;\n  this.mode = mode; // Effects\n\n  this.flags = NoFlags;\n  this.subtreeFlags = NoFlags;\n  this.deletions = null;\n  this.lanes = NoLanes;\n  this.childLanes = NoLanes;\n  this.alternate = null;\n\n  {\n    // Note: The following is done to avoid a v8 performance cliff.\n    //\n    // Initializing the fields below to smis and later updating them with\n    // double values will cause Fibers to end up having separate shapes.\n    // This behavior/bug has something to do with Object.preventExtension().\n    // Fortunately this only impacts DEV builds.\n    // Unfortunately it makes React unusably slow for some applications.\n    // To work around this, initialize the fields below with doubles.\n    //\n    // Learn more about this here:\n    // https://github.com/facebook/react/issues/14365\n    // https://bugs.chromium.org/p/v8/issues/detail?id=8538\n    this.actualDuration = Number.NaN;\n    this.actualStartTime = Number.NaN;\n    this.selfBaseDuration = Number.NaN;\n    this.treeBaseDuration = Number.NaN; // It's okay to replace the initial doubles with smis after initialization.\n    // This won't trigger the performance cliff mentioned above,\n    // and it simplifies other profiler code (including DevTools).\n\n    this.actualDuration = 0;\n    this.actualStartTime = -1;\n    this.selfBaseDuration = 0;\n    this.treeBaseDuration = 0;\n  }\n\n  {\n    // This isn't directly used but is handy for debugging internals:\n    this._debugSource = null;\n    this._debugOwner = null;\n    this._debugNeedsRemount = false;\n    this._debugHookTypes = null;\n\n    if (!hasBadMapPolyfill && typeof Object.preventExtensions === 'function') {\n      Object.preventExtensions(this);\n    }\n  }\n} // This is a constructor function, rather than a POJO constructor, still\n// please ensure we do the following:\n// 1) Nobody should add any instance methods on this. Instance methods can be\n//    more difficult to predict when they get optimized and they are almost\n//    never inlined properly in static compilers.\n// 2) Nobody should rely on `instanceof Fiber` for type testing. We should\n//    always know when it is a fiber.\n// 3) We might want to experiment with using numeric keys since they are easier\n//    to optimize in a non-JIT environment.\n// 4) We can easily go from a constructor to a createFiber object literal if that\n//    is faster.\n// 5) It should be easy to port this to a C struct and keep a C implementation\n//    compatible.\n\n\nvar createFiber = function (tag, pendingProps, key, mode) {\n  // $FlowFixMe: the shapes are exact here but Flow doesn't like constructors\n  return new FiberNode(tag, pendingProps, key, mode);\n};\n\nfunction shouldConstruct$1(Component) {\n  var prototype = Component.prototype;\n  return !!(prototype && prototype.isReactComponent);\n}\n\nfunction isSimpleFunctionComponent(type) {\n  return typeof type === 'function' && !shouldConstruct$1(type) && type.defaultProps === undefined;\n}\nfunction resolveLazyComponentTag(Component) {\n  if (typeof Component === 'function') {\n    return shouldConstruct$1(Component) ? ClassComponent : FunctionComponent;\n  } else if (Component !== undefined && Component !== null) {\n    var $$typeof = Component.$$typeof;\n\n    if ($$typeof === REACT_FORWARD_REF_TYPE) {\n      return ForwardRef;\n    }\n\n    if ($$typeof === REACT_MEMO_TYPE) {\n      return MemoComponent;\n    }\n  }\n\n  return IndeterminateComponent;\n} // This is used to create an alternate fiber to do work on.\n\nfunction createWorkInProgress(current, pendingProps) {\n  var workInProgress = current.alternate;\n\n  if (workInProgress === null) {\n    // We use a double buffering pooling technique because we know that we'll\n    // only ever need at most two versions of a tree. We pool the \"other\" unused\n    // node that we're free to reuse. This is lazily created to avoid allocating\n    // extra objects for things that are never updated. It also allow us to\n    // reclaim the extra memory if needed.\n    workInProgress = createFiber(current.tag, pendingProps, current.key, current.mode);\n    workInProgress.elementType = current.elementType;\n    workInProgress.type = current.type;\n    workInProgress.stateNode = current.stateNode;\n\n    {\n      // DEV-only fields\n      workInProgress._debugSource = current._debugSource;\n      workInProgress._debugOwner = current._debugOwner;\n      workInProgress._debugHookTypes = current._debugHookTypes;\n    }\n\n    workInProgress.alternate = current;\n    current.alternate = workInProgress;\n  } else {\n    workInProgress.pendingProps = pendingProps; // Needed because Blocks store data on type.\n\n    workInProgress.type = current.type; // We already have an alternate.\n    // Reset the effect tag.\n\n    workInProgress.flags = NoFlags; // The effects are no longer valid.\n\n    workInProgress.subtreeFlags = NoFlags;\n    workInProgress.deletions = null;\n\n    {\n      // We intentionally reset, rather than copy, actualDuration & actualStartTime.\n      // This prevents time from endlessly accumulating in new commits.\n      // This has the downside of resetting values for different priority renders,\n      // But works for yielding (the common case) and should support resuming.\n      workInProgress.actualDuration = 0;\n      workInProgress.actualStartTime = -1;\n    }\n  } // Reset all effects except static ones.\n  // Static effects are not specific to a render.\n\n\n  workInProgress.flags = current.flags & StaticMask;\n  workInProgress.childLanes = current.childLanes;\n  workInProgress.lanes = current.lanes;\n  workInProgress.child = current.child;\n  workInProgress.memoizedProps = current.memoizedProps;\n  workInProgress.memoizedState = current.memoizedState;\n  workInProgress.updateQueue = current.updateQueue; // Clone the dependencies object. This is mutated during the render phase, so\n  // it cannot be shared with the current fiber.\n\n  var currentDependencies = current.dependencies;\n  workInProgress.dependencies = currentDependencies === null ? null : {\n    lanes: currentDependencies.lanes,\n    firstContext: currentDependencies.firstContext\n  }; // These will be overridden during the parent's reconciliation\n\n  workInProgress.sibling = current.sibling;\n  workInProgress.index = current.index;\n  workInProgress.ref = current.ref;\n\n  {\n    workInProgress.selfBaseDuration = current.selfBaseDuration;\n    workInProgress.treeBaseDuration = current.treeBaseDuration;\n  }\n\n  {\n    workInProgress._debugNeedsRemount = current._debugNeedsRemount;\n\n    switch (workInProgress.tag) {\n      case IndeterminateComponent:\n      case FunctionComponent:\n      case SimpleMemoComponent:\n        workInProgress.type = resolveFunctionForHotReloading(current.type);\n        break;\n\n      case ClassComponent:\n        workInProgress.type = resolveClassForHotReloading(current.type);\n        break;\n\n      case ForwardRef:\n        workInProgress.type = resolveForwardRefForHotReloading(current.type);\n        break;\n    }\n  }\n\n  return workInProgress;\n} // Used to reuse a Fiber for a second pass.\n\nfunction resetWorkInProgress(workInProgress, renderLanes) {\n  // This resets the Fiber to what createFiber or createWorkInProgress would\n  // have set the values to before during the first pass. Ideally this wouldn't\n  // be necessary but unfortunately many code paths reads from the workInProgress\n  // when they should be reading from current and writing to workInProgress.\n  // We assume pendingProps, index, key, ref, return are still untouched to\n  // avoid doing another reconciliation.\n  // Reset the effect flags but keep any Placement tags, since that's something\n  // that child fiber is setting, not the reconciliation.\n  workInProgress.flags &= StaticMask | Placement; // The effects are no longer valid.\n\n  var current = workInProgress.alternate;\n\n  if (current === null) {\n    // Reset to createFiber's initial values.\n    workInProgress.childLanes = NoLanes;\n    workInProgress.lanes = renderLanes;\n    workInProgress.child = null;\n    workInProgress.subtreeFlags = NoFlags;\n    workInProgress.memoizedProps = null;\n    workInProgress.memoizedState = null;\n    workInProgress.updateQueue = null;\n    workInProgress.dependencies = null;\n    workInProgress.stateNode = null;\n\n    {\n      // Note: We don't reset the actualTime counts. It's useful to accumulate\n      // actual time across multiple render passes.\n      workInProgress.selfBaseDuration = 0;\n      workInProgress.treeBaseDuration = 0;\n    }\n  } else {\n    // Reset to the cloned values that createWorkInProgress would've.\n    workInProgress.childLanes = current.childLanes;\n    workInProgress.lanes = current.lanes;\n    workInProgress.child = current.child;\n    workInProgress.subtreeFlags = NoFlags;\n    workInProgress.deletions = null;\n    workInProgress.memoizedProps = current.memoizedProps;\n    workInProgress.memoizedState = current.memoizedState;\n    workInProgress.updateQueue = current.updateQueue; // Needed because Blocks store data on type.\n\n    workInProgress.type = current.type; // Clone the dependencies object. This is mutated during the render phase, so\n    // it cannot be shared with the current fiber.\n\n    var currentDependencies = current.dependencies;\n    workInProgress.dependencies = currentDependencies === null ? null : {\n      lanes: currentDependencies.lanes,\n      firstContext: currentDependencies.firstContext\n    };\n\n    {\n      // Note: We don't reset the actualTime counts. It's useful to accumulate\n      // actual time across multiple render passes.\n      workInProgress.selfBaseDuration = current.selfBaseDuration;\n      workInProgress.treeBaseDuration = current.treeBaseDuration;\n    }\n  }\n\n  return workInProgress;\n}\nfunction createHostRootFiber(tag, isStrictMode, concurrentUpdatesByDefaultOverride) {\n  var mode;\n\n  if (tag === ConcurrentRoot) {\n    mode = ConcurrentMode;\n\n    if (isStrictMode === true) {\n      mode |= StrictLegacyMode;\n\n      {\n        mode |= StrictEffectsMode;\n      }\n    }\n  } else {\n    mode = NoMode;\n  }\n\n  if ( isDevToolsPresent) {\n    // Always collect profile timings when DevTools are present.\n    // This enables DevTools to start capturing timing at any point\u2013\n    // Without some nodes in the tree having empty base times.\n    mode |= ProfileMode;\n  }\n\n  return createFiber(HostRoot, null, null, mode);\n}\nfunction createFiberFromTypeAndProps(type, // React$ElementType\nkey, pendingProps, owner, mode, lanes) {\n  var fiberTag = IndeterminateComponent; // The resolved type is set if we know what the final type will be. I.e. it's not lazy.\n\n  var resolvedType = type;\n\n  if (typeof type === 'function') {\n    if (shouldConstruct$1(type)) {\n      fiberTag = ClassComponent;\n\n      {\n        resolvedType = resolveClassForHotReloading(resolvedType);\n      }\n    } else {\n      {\n        resolvedType = resolveFunctionForHotReloading(resolvedType);\n      }\n    }\n  } else if (typeof type === 'string') {\n    fiberTag = HostComponent;\n  } else {\n    getTag: switch (type) {\n      case REACT_FRAGMENT_TYPE:\n        return createFiberFromFragment(pendingProps.children, mode, lanes, key);\n\n      case REACT_STRICT_MODE_TYPE:\n        fiberTag = Mode;\n        mode |= StrictLegacyMode;\n\n        if ( (mode & ConcurrentMode) !== NoMode) {\n          // Strict effects should never run on legacy roots\n          mode |= StrictEffectsMode;\n        }\n\n        break;\n\n      case REACT_PROFILER_TYPE:\n        return createFiberFromProfiler(pendingProps, mode, lanes, key);\n\n      case REACT_SUSPENSE_TYPE:\n        return createFiberFromSuspense(pendingProps, mode, lanes, key);\n\n      case REACT_SUSPENSE_LIST_TYPE:\n        return createFiberFromSuspenseList(pendingProps, mode, lanes, key);\n\n      case REACT_OFFSCREEN_TYPE:\n        return createFiberFromOffscreen(pendingProps, mode, lanes, key);\n\n      case REACT_LEGACY_HIDDEN_TYPE:\n\n      // eslint-disable-next-line no-fallthrough\n\n      case REACT_SCOPE_TYPE:\n\n      // eslint-disable-next-line no-fallthrough\n\n      case REACT_CACHE_TYPE:\n\n      // eslint-disable-next-line no-fallthrough\n\n      case REACT_TRACING_MARKER_TYPE:\n\n      // eslint-disable-next-line no-fallthrough\n\n      case REACT_DEBUG_TRACING_MODE_TYPE:\n\n      // eslint-disable-next-line no-fallthrough\n\n      default:\n        {\n          if (typeof type === 'object' && type !== null) {\n            switch (type.$$typeof) {\n              case REACT_PROVIDER_TYPE:\n                fiberTag = ContextProvider;\n                break getTag;\n\n              case REACT_CONTEXT_TYPE:\n                // This is a consumer\n                fiberTag = ContextConsumer;\n                break getTag;\n\n              case REACT_FORWARD_REF_TYPE:\n                fiberTag = ForwardRef;\n\n                {\n                  resolvedType = resolveForwardRefForHotReloading(resolvedType);\n                }\n\n                break getTag;\n\n              case REACT_MEMO_TYPE:\n                fiberTag = MemoComponent;\n                break getTag;\n\n              case REACT_LAZY_TYPE:\n                fiberTag = LazyComponent;\n                resolvedType = null;\n                break getTag;\n            }\n          }\n\n          var info = '';\n\n          {\n            if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) {\n              info += ' You likely forgot to export your component from the file ' + \"it's defined in, or you might have mixed up default and \" + 'named imports.';\n            }\n\n            var ownerName = owner ? getComponentNameFromFiber(owner) : null;\n\n            if (ownerName) {\n              info += '\\n\\nCheck the render method of `' + ownerName + '`.';\n            }\n          }\n\n          throw new Error('Element type is invalid: expected a string (for built-in ' + 'components) or a class/function (for composite components) ' + (\"but got: \" + (type == null ? type : typeof type) + \".\" + info));\n        }\n    }\n  }\n\n  var fiber = createFiber(fiberTag, pendingProps, key, mode);\n  fiber.elementType = type;\n  fiber.type = resolvedType;\n  fiber.lanes = lanes;\n\n  {\n    fiber._debugOwner = owner;\n  }\n\n  return fiber;\n}\nfunction createFiberFromElement(element, mode, lanes) {\n  var owner = null;\n\n  {\n    owner = element._owner;\n  }\n\n  var type = element.type;\n  var key = element.key;\n  var pendingProps = element.props;\n  var fiber = createFiberFromTypeAndProps(type, key, pendingProps, owner, mode, lanes);\n\n  {\n    fiber._debugSource = element._source;\n    fiber._debugOwner = element._owner;\n  }\n\n  return fiber;\n}\nfunction createFiberFromFragment(elements, mode, lanes, key) {\n  var fiber = createFiber(Fragment, elements, key, mode);\n  fiber.lanes = lanes;\n  return fiber;\n}\n\nfunction createFiberFromProfiler(pendingProps, mode, lanes, key) {\n  {\n    if (typeof pendingProps.id !== 'string') {\n      error('Profiler must specify an \"id\" of type `string` as a prop. Received the type `%s` instead.', typeof pendingProps.id);\n    }\n  }\n\n  var fiber = createFiber(Profiler, pendingProps, key, mode | ProfileMode);\n  fiber.elementType = REACT_PROFILER_TYPE;\n  fiber.lanes = lanes;\n\n  {\n    fiber.stateNode = {\n      effectDuration: 0,\n      passiveEffectDuration: 0\n    };\n  }\n\n  return fiber;\n}\n\nfunction createFiberFromSuspense(pendingProps, mode, lanes, key) {\n  var fiber = createFiber(SuspenseComponent, pendingProps, key, mode);\n  fiber.elementType = REACT_SUSPENSE_TYPE;\n  fiber.lanes = lanes;\n  return fiber;\n}\nfunction createFiberFromSuspenseList(pendingProps, mode, lanes, key) {\n  var fiber = createFiber(SuspenseListComponent, pendingProps, key, mode);\n  fiber.elementType = REACT_SUSPENSE_LIST_TYPE;\n  fiber.lanes = lanes;\n  return fiber;\n}\nfunction createFiberFromOffscreen(pendingProps, mode, lanes, key) {\n  var fiber = createFiber(OffscreenComponent, pendingProps, key, mode);\n  fiber.elementType = REACT_OFFSCREEN_TYPE;\n  fiber.lanes = lanes;\n  var primaryChildInstance = {\n    isHidden: false\n  };\n  fiber.stateNode = primaryChildInstance;\n  return fiber;\n}\nfunction createFiberFromText(content, mode, lanes) {\n  var fiber = createFiber(HostText, content, null, mode);\n  fiber.lanes = lanes;\n  return fiber;\n}\nfunction createFiberFromHostInstanceForDeletion() {\n  var fiber = createFiber(HostComponent, null, null, NoMode);\n  fiber.elementType = 'DELETED';\n  return fiber;\n}\nfunction createFiberFromDehydratedFragment(dehydratedNode) {\n  var fiber = createFiber(DehydratedFragment, null, null, NoMode);\n  fiber.stateNode = dehydratedNode;\n  return fiber;\n}\nfunction createFiberFromPortal(portal, mode, lanes) {\n  var pendingProps = portal.children !== null ? portal.children : [];\n  var fiber = createFiber(HostPortal, pendingProps, portal.key, mode);\n  fiber.lanes = lanes;\n  fiber.stateNode = {\n    containerInfo: portal.containerInfo,\n    pendingChildren: null,\n    // Used by persistent updates\n    implementation: portal.implementation\n  };\n  return fiber;\n} // Used for stashing WIP properties to replay failed work in DEV.\n\nfunction assignFiberPropertiesInDEV(target, source) {\n  if (target === null) {\n    // This Fiber's initial properties will always be overwritten.\n    // We only use a Fiber to ensure the same hidden class so DEV isn't slow.\n    target = createFiber(IndeterminateComponent, null, null, NoMode);\n  } // This is intentionally written as a list of all properties.\n  // We tried to use Object.assign() instead but this is called in\n  // the hottest path, and Object.assign() was too slow:\n  // https://github.com/facebook/react/issues/12502\n  // This code is DEV-only so size is not a concern.\n\n\n  target.tag = source.tag;\n  target.key = source.key;\n  target.elementType = source.elementType;\n  target.type = source.type;\n  target.stateNode = source.stateNode;\n  target.return = source.return;\n  target.child = source.child;\n  target.sibling = source.sibling;\n  target.index = source.index;\n  target.ref = source.ref;\n  target.pendingProps = source.pendingProps;\n  target.memoizedProps = source.memoizedProps;\n  target.updateQueue = source.updateQueue;\n  target.memoizedState = source.memoizedState;\n  target.dependencies = source.dependencies;\n  target.mode = source.mode;\n  target.flags = source.flags;\n  target.subtreeFlags = source.subtreeFlags;\n  target.deletions = source.deletions;\n  target.lanes = source.lanes;\n  target.childLanes = source.childLanes;\n  target.alternate = source.alternate;\n\n  {\n    target.actualDuration = source.actualDuration;\n    target.actualStartTime = source.actualStartTime;\n    target.selfBaseDuration = source.selfBaseDuration;\n    target.treeBaseDuration = source.treeBaseDuration;\n  }\n\n  target._debugSource = source._debugSource;\n  target._debugOwner = source._debugOwner;\n  target._debugNeedsRemount = source._debugNeedsRemount;\n  target._debugHookTypes = source._debugHookTypes;\n  return target;\n}\n\nfunction FiberRootNode(containerInfo, tag, hydrate, identifierPrefix, onRecoverableError) {\n  this.tag = tag;\n  this.containerInfo = containerInfo;\n  this.pendingChildren = null;\n  this.current = null;\n  this.pingCache = null;\n  this.finishedWork = null;\n  this.timeoutHandle = noTimeout;\n  this.context = null;\n  this.pendingContext = null;\n  this.callbackNode = null;\n  this.callbackPriority = NoLane;\n  this.eventTimes = createLaneMap(NoLanes);\n  this.expirationTimes = createLaneMap(NoTimestamp);\n  this.pendingLanes = NoLanes;\n  this.suspendedLanes = NoLanes;\n  this.pingedLanes = NoLanes;\n  this.expiredLanes = NoLanes;\n  this.mutableReadLanes = NoLanes;\n  this.finishedLanes = NoLanes;\n  this.entangledLanes = NoLanes;\n  this.entanglements = createLaneMap(NoLanes);\n  this.identifierPrefix = identifierPrefix;\n  this.onRecoverableError = onRecoverableError;\n\n  {\n    this.mutableSourceEagerHydrationData = null;\n  }\n\n  {\n    this.effectDuration = 0;\n    this.passiveEffectDuration = 0;\n  }\n\n  {\n    this.memoizedUpdaters = new Set();\n    var pendingUpdatersLaneMap = this.pendingUpdatersLaneMap = [];\n\n    for (var _i = 0; _i < TotalLanes; _i++) {\n      pendingUpdatersLaneMap.push(new Set());\n    }\n  }\n\n  {\n    switch (tag) {\n      case ConcurrentRoot:\n        this._debugRootType = hydrate ? 'hydrateRoot()' : 'createRoot()';\n        break;\n\n      case LegacyRoot:\n        this._debugRootType = hydrate ? 'hydrate()' : 'render()';\n        break;\n    }\n  }\n}\n\nfunction createFiberRoot(containerInfo, tag, hydrate, initialChildren, hydrationCallbacks, isStrictMode, concurrentUpdatesByDefaultOverride, // TODO: We have several of these arguments that are conceptually part of the\n// host config, but because they are passed in at runtime, we have to thread\n// them through the root constructor. Perhaps we should put them all into a\n// single type, like a DynamicHostConfig that is defined by the renderer.\nidentifierPrefix, onRecoverableError, transitionCallbacks) {\n  var root = new FiberRootNode(containerInfo, tag, hydrate, identifierPrefix, onRecoverableError);\n  // stateNode is any.\n\n\n  var uninitializedFiber = createHostRootFiber(tag, isStrictMode);\n  root.current = uninitializedFiber;\n  uninitializedFiber.stateNode = root;\n\n  {\n    var _initialState = {\n      element: initialChildren,\n      isDehydrated: hydrate,\n      cache: null,\n      // not enabled yet\n      transitions: null,\n      pendingSuspenseBoundaries: null\n    };\n    uninitializedFiber.memoizedState = _initialState;\n  }\n\n  initializeUpdateQueue(uninitializedFiber);\n  return root;\n}\n\nvar ReactVersion = '18.2.0';\n\nfunction createPortal(children, containerInfo, // TODO: figure out the API for cross-renderer implementation.\nimplementation) {\n  var key = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n  {\n    checkKeyStringCoercion(key);\n  }\n\n  return {\n    // This tag allow us to uniquely identify this as a React Portal\n    $$typeof: REACT_PORTAL_TYPE,\n    key: key == null ? null : '' + key,\n    children: children,\n    containerInfo: containerInfo,\n    implementation: implementation\n  };\n}\n\nvar didWarnAboutNestedUpdates;\nvar didWarnAboutFindNodeInStrictMode;\n\n{\n  didWarnAboutNestedUpdates = false;\n  didWarnAboutFindNodeInStrictMode = {};\n}\n\nfunction getContextForSubtree(parentComponent) {\n  if (!parentComponent) {\n    return emptyContextObject;\n  }\n\n  var fiber = get(parentComponent);\n  var parentContext = findCurrentUnmaskedContext(fiber);\n\n  if (fiber.tag === ClassComponent) {\n    var Component = fiber.type;\n\n    if (isContextProvider(Component)) {\n      return processChildContext(fiber, Component, parentContext);\n    }\n  }\n\n  return parentContext;\n}\n\nfunction findHostInstanceWithWarning(component, methodName) {\n  {\n    var fiber = get(component);\n\n    if (fiber === undefined) {\n      if (typeof component.render === 'function') {\n        throw new Error('Unable to find node on an unmounted component.');\n      } else {\n        var keys = Object.keys(component).join(',');\n        throw new Error(\"Argument appears to not be a ReactComponent. Keys: \" + keys);\n      }\n    }\n\n    var hostFiber = findCurrentHostFiber(fiber);\n\n    if (hostFiber === null) {\n      return null;\n    }\n\n    if (hostFiber.mode & StrictLegacyMode) {\n      var componentName = getComponentNameFromFiber(fiber) || 'Component';\n\n      if (!didWarnAboutFindNodeInStrictMode[componentName]) {\n        didWarnAboutFindNodeInStrictMode[componentName] = true;\n        var previousFiber = current;\n\n        try {\n          setCurrentFiber(hostFiber);\n\n          if (fiber.mode & StrictLegacyMode) {\n            error('%s is deprecated in StrictMode. ' + '%s was passed an instance of %s which is inside StrictMode. ' + 'Instead, add a ref directly to the element you want to reference. ' + 'Learn more about using refs safely here: ' + 'https://reactjs.org/link/strict-mode-find-node', methodName, methodName, componentName);\n          } else {\n            error('%s is deprecated in StrictMode. ' + '%s was passed an instance of %s which renders StrictMode children. ' + 'Instead, add a ref directly to the element you want to reference. ' + 'Learn more about using refs safely here: ' + 'https://reactjs.org/link/strict-mode-find-node', methodName, methodName, componentName);\n          }\n        } finally {\n          // Ideally this should reset to previous but this shouldn't be called in\n          // render and there's another warning for that anyway.\n          if (previousFiber) {\n            setCurrentFiber(previousFiber);\n          } else {\n            resetCurrentFiber();\n          }\n        }\n      }\n    }\n\n    return hostFiber.stateNode;\n  }\n}\n\nfunction createContainer(containerInfo, tag, hydrationCallbacks, isStrictMode, concurrentUpdatesByDefaultOverride, identifierPrefix, onRecoverableError, transitionCallbacks) {\n  var hydrate = false;\n  var initialChildren = null;\n  return createFiberRoot(containerInfo, tag, hydrate, initialChildren, hydrationCallbacks, isStrictMode, concurrentUpdatesByDefaultOverride, identifierPrefix, onRecoverableError);\n}\nfunction createHydrationContainer(initialChildren, // TODO: Remove `callback` when we delete legacy mode.\ncallback, containerInfo, tag, hydrationCallbacks, isStrictMode, concurrentUpdatesByDefaultOverride, identifierPrefix, onRecoverableError, transitionCallbacks) {\n  var hydrate = true;\n  var root = createFiberRoot(containerInfo, tag, hydrate, initialChildren, hydrationCallbacks, isStrictMode, concurrentUpdatesByDefaultOverride, identifierPrefix, onRecoverableError); // TODO: Move this to FiberRoot constructor\n\n  root.context = getContextForSubtree(null); // Schedule the initial render. In a hydration root, this is different from\n  // a regular update because the initial render must match was was rendered\n  // on the server.\n  // NOTE: This update intentionally doesn't have a payload. We're only using\n  // the update to schedule work on the root fiber (and, for legacy roots, to\n  // enqueue the callback if one is provided).\n\n  var current = root.current;\n  var eventTime = requestEventTime();\n  var lane = requestUpdateLane(current);\n  var update = createUpdate(eventTime, lane);\n  update.callback = callback !== undefined && callback !== null ? callback : null;\n  enqueueUpdate(current, update, lane);\n  scheduleInitialHydrationOnRoot(root, lane, eventTime);\n  return root;\n}\nfunction updateContainer(element, container, parentComponent, callback) {\n  {\n    onScheduleRoot(container, element);\n  }\n\n  var current$1 = container.current;\n  var eventTime = requestEventTime();\n  var lane = requestUpdateLane(current$1);\n\n  {\n    markRenderScheduled(lane);\n  }\n\n  var context = getContextForSubtree(parentComponent);\n\n  if (container.context === null) {\n    container.context = context;\n  } else {\n    container.pendingContext = context;\n  }\n\n  {\n    if (isRendering && current !== null && !didWarnAboutNestedUpdates) {\n      didWarnAboutNestedUpdates = true;\n\n      error('Render methods should be a pure function of props and state; ' + 'triggering nested component updates from render is not allowed. ' + 'If necessary, trigger nested updates in componentDidUpdate.\\n\\n' + 'Check the render method of %s.', getComponentNameFromFiber(current) || 'Unknown');\n    }\n  }\n\n  var update = createUpdate(eventTime, lane); // Caution: React DevTools currently depends on this property\n  // being called \"element\".\n\n  update.payload = {\n    element: element\n  };\n  callback = callback === undefined ? null : callback;\n\n  if (callback !== null) {\n    {\n      if (typeof callback !== 'function') {\n        error('render(...): Expected the last optional `callback` argument to be a ' + 'function. Instead received: %s.', callback);\n      }\n    }\n\n    update.callback = callback;\n  }\n\n  var root = enqueueUpdate(current$1, update, lane);\n\n  if (root !== null) {\n    scheduleUpdateOnFiber(root, current$1, lane, eventTime);\n    entangleTransitions(root, current$1, lane);\n  }\n\n  return lane;\n}\nfunction getPublicRootInstance(container) {\n  var containerFiber = container.current;\n\n  if (!containerFiber.child) {\n    return null;\n  }\n\n  switch (containerFiber.child.tag) {\n    case HostComponent:\n      return getPublicInstance(containerFiber.child.stateNode);\n\n    default:\n      return containerFiber.child.stateNode;\n  }\n}\nfunction attemptSynchronousHydration$1(fiber) {\n  switch (fiber.tag) {\n    case HostRoot:\n      {\n        var root = fiber.stateNode;\n\n        if (isRootDehydrated(root)) {\n          // Flush the first scheduled \"update\".\n          var lanes = getHighestPriorityPendingLanes(root);\n          flushRoot(root, lanes);\n        }\n\n        break;\n      }\n\n    case SuspenseComponent:\n      {\n        flushSync(function () {\n          var root = enqueueConcurrentRenderForLane(fiber, SyncLane);\n\n          if (root !== null) {\n            var eventTime = requestEventTime();\n            scheduleUpdateOnFiber(root, fiber, SyncLane, eventTime);\n          }\n        }); // If we're still blocked after this, we need to increase\n        // the priority of any promises resolving within this\n        // boundary so that they next attempt also has higher pri.\n\n        var retryLane = SyncLane;\n        markRetryLaneIfNotHydrated(fiber, retryLane);\n        break;\n      }\n  }\n}\n\nfunction markRetryLaneImpl(fiber, retryLane) {\n  var suspenseState = fiber.memoizedState;\n\n  if (suspenseState !== null && suspenseState.dehydrated !== null) {\n    suspenseState.retryLane = higherPriorityLane(suspenseState.retryLane, retryLane);\n  }\n} // Increases the priority of thenables when they resolve within this boundary.\n\n\nfunction markRetryLaneIfNotHydrated(fiber, retryLane) {\n  markRetryLaneImpl(fiber, retryLane);\n  var alternate = fiber.alternate;\n\n  if (alternate) {\n    markRetryLaneImpl(alternate, retryLane);\n  }\n}\nfunction attemptContinuousHydration$1(fiber) {\n  if (fiber.tag !== SuspenseComponent) {\n    // We ignore HostRoots here because we can't increase\n    // their priority and they should not suspend on I/O,\n    // since you have to wrap anything that might suspend in\n    // Suspense.\n    return;\n  }\n\n  var lane = SelectiveHydrationLane;\n  var root = enqueueConcurrentRenderForLane(fiber, lane);\n\n  if (root !== null) {\n    var eventTime = requestEventTime();\n    scheduleUpdateOnFiber(root, fiber, lane, eventTime);\n  }\n\n  markRetryLaneIfNotHydrated(fiber, lane);\n}\nfunction attemptHydrationAtCurrentPriority$1(fiber) {\n  if (fiber.tag !== SuspenseComponent) {\n    // We ignore HostRoots here because we can't increase\n    // their priority other than synchronously flush it.\n    return;\n  }\n\n  var lane = requestUpdateLane(fiber);\n  var root = enqueueConcurrentRenderForLane(fiber, lane);\n\n  if (root !== null) {\n    var eventTime = requestEventTime();\n    scheduleUpdateOnFiber(root, fiber, lane, eventTime);\n  }\n\n  markRetryLaneIfNotHydrated(fiber, lane);\n}\nfunction findHostInstanceWithNoPortals(fiber) {\n  var hostFiber = findCurrentHostFiberWithNoPortals(fiber);\n\n  if (hostFiber === null) {\n    return null;\n  }\n\n  return hostFiber.stateNode;\n}\n\nvar shouldErrorImpl = function (fiber) {\n  return null;\n};\n\nfunction shouldError(fiber) {\n  return shouldErrorImpl(fiber);\n}\n\nvar shouldSuspendImpl = function (fiber) {\n  return false;\n};\n\nfunction shouldSuspend(fiber) {\n  return shouldSuspendImpl(fiber);\n}\nvar overrideHookState = null;\nvar overrideHookStateDeletePath = null;\nvar overrideHookStateRenamePath = null;\nvar overrideProps = null;\nvar overridePropsDeletePath = null;\nvar overridePropsRenamePath = null;\nvar scheduleUpdate = null;\nvar setErrorHandler = null;\nvar setSuspenseHandler = null;\n\n{\n  var copyWithDeleteImpl = function (obj, path, index) {\n    var key = path[index];\n    var updated = isArray(obj) ? obj.slice() : assign({}, obj);\n\n    if (index + 1 === path.length) {\n      if (isArray(updated)) {\n        updated.splice(key, 1);\n      } else {\n        delete updated[key];\n      }\n\n      return updated;\n    } // $FlowFixMe number or string is fine here\n\n\n    updated[key] = copyWithDeleteImpl(obj[key], path, index + 1);\n    return updated;\n  };\n\n  var copyWithDelete = function (obj, path) {\n    return copyWithDeleteImpl(obj, path, 0);\n  };\n\n  var copyWithRenameImpl = function (obj, oldPath, newPath, index) {\n    var oldKey = oldPath[index];\n    var updated = isArray(obj) ? obj.slice() : assign({}, obj);\n\n    if (index + 1 === oldPath.length) {\n      var newKey = newPath[index]; // $FlowFixMe number or string is fine here\n\n      updated[newKey] = updated[oldKey];\n\n      if (isArray(updated)) {\n        updated.splice(oldKey, 1);\n      } else {\n        delete updated[oldKey];\n      }\n    } else {\n      // $FlowFixMe number or string is fine here\n      updated[oldKey] = copyWithRenameImpl( // $FlowFixMe number or string is fine here\n      obj[oldKey], oldPath, newPath, index + 1);\n    }\n\n    return updated;\n  };\n\n  var copyWithRename = function (obj, oldPath, newPath) {\n    if (oldPath.length !== newPath.length) {\n      warn('copyWithRename() expects paths of the same length');\n\n      return;\n    } else {\n      for (var i = 0; i < newPath.length - 1; i++) {\n        if (oldPath[i] !== newPath[i]) {\n          warn('copyWithRename() expects paths to be the same except for the deepest key');\n\n          return;\n        }\n      }\n    }\n\n    return copyWithRenameImpl(obj, oldPath, newPath, 0);\n  };\n\n  var copyWithSetImpl = function (obj, path, index, value) {\n    if (index >= path.length) {\n      return value;\n    }\n\n    var key = path[index];\n    var updated = isArray(obj) ? obj.slice() : assign({}, obj); // $FlowFixMe number or string is fine here\n\n    updated[key] = copyWithSetImpl(obj[key], path, index + 1, value);\n    return updated;\n  };\n\n  var copyWithSet = function (obj, path, value) {\n    return copyWithSetImpl(obj, path, 0, value);\n  };\n\n  var findHook = function (fiber, id) {\n    // For now, the \"id\" of stateful hooks is just the stateful hook index.\n    // This may change in the future with e.g. nested hooks.\n    var currentHook = fiber.memoizedState;\n\n    while (currentHook !== null && id > 0) {\n      currentHook = currentHook.next;\n      id--;\n    }\n\n    return currentHook;\n  }; // Support DevTools editable values for useState and useReducer.\n\n\n  overrideHookState = function (fiber, id, path, value) {\n    var hook = findHook(fiber, id);\n\n    if (hook !== null) {\n      var newState = copyWithSet(hook.memoizedState, path, value);\n      hook.memoizedState = newState;\n      hook.baseState = newState; // We aren't actually adding an update to the queue,\n      // because there is no update we can add for useReducer hooks that won't trigger an error.\n      // (There's no appropriate action type for DevTools overrides.)\n      // As a result though, React will see the scheduled update as a noop and bailout.\n      // Shallow cloning props works as a workaround for now to bypass the bailout check.\n\n      fiber.memoizedProps = assign({}, fiber.memoizedProps);\n      var root = enqueueConcurrentRenderForLane(fiber, SyncLane);\n\n      if (root !== null) {\n        scheduleUpdateOnFiber(root, fiber, SyncLane, NoTimestamp);\n      }\n    }\n  };\n\n  overrideHookStateDeletePath = function (fiber, id, path) {\n    var hook = findHook(fiber, id);\n\n    if (hook !== null) {\n      var newState = copyWithDelete(hook.memoizedState, path);\n      hook.memoizedState = newState;\n      hook.baseState = newState; // We aren't actually adding an update to the queue,\n      // because there is no update we can add for useReducer hooks that won't trigger an error.\n      // (There's no appropriate action type for DevTools overrides.)\n      // As a result though, React will see the scheduled update as a noop and bailout.\n      // Shallow cloning props works as a workaround for now to bypass the bailout check.\n\n      fiber.memoizedProps = assign({}, fiber.memoizedProps);\n      var root = enqueueConcurrentRenderForLane(fiber, SyncLane);\n\n      if (root !== null) {\n        scheduleUpdateOnFiber(root, fiber, SyncLane, NoTimestamp);\n      }\n    }\n  };\n\n  overrideHookStateRenamePath = function (fiber, id, oldPath, newPath) {\n    var hook = findHook(fiber, id);\n\n    if (hook !== null) {\n      var newState = copyWithRename(hook.memoizedState, oldPath, newPath);\n      hook.memoizedState = newState;\n      hook.baseState = newState; // We aren't actually adding an update to the queue,\n      // because there is no update we can add for useReducer hooks that won't trigger an error.\n      // (There's no appropriate action type for DevTools overrides.)\n      // As a result though, React will see the scheduled update as a noop and bailout.\n      // Shallow cloning props works as a workaround for now to bypass the bailout check.\n\n      fiber.memoizedProps = assign({}, fiber.memoizedProps);\n      var root = enqueueConcurrentRenderForLane(fiber, SyncLane);\n\n      if (root !== null) {\n        scheduleUpdateOnFiber(root, fiber, SyncLane, NoTimestamp);\n      }\n    }\n  }; // Support DevTools props for function components, forwardRef, memo, host components, etc.\n\n\n  overrideProps = function (fiber, path, value) {\n    fiber.pendingProps = copyWithSet(fiber.memoizedProps, path, value);\n\n    if (fiber.alternate) {\n      fiber.alternate.pendingProps = fiber.pendingProps;\n    }\n\n    var root = enqueueConcurrentRenderForLane(fiber, SyncLane);\n\n    if (root !== null) {\n      scheduleUpdateOnFiber(root, fiber, SyncLane, NoTimestamp);\n    }\n  };\n\n  overridePropsDeletePath = function (fiber, path) {\n    fiber.pendingProps = copyWithDelete(fiber.memoizedProps, path);\n\n    if (fiber.alternate) {\n      fiber.alternate.pendingProps = fiber.pendingProps;\n    }\n\n    var root = enqueueConcurrentRenderForLane(fiber, SyncLane);\n\n    if (root !== null) {\n      scheduleUpdateOnFiber(root, fiber, SyncLane, NoTimestamp);\n    }\n  };\n\n  overridePropsRenamePath = function (fiber, oldPath, newPath) {\n    fiber.pendingProps = copyWithRename(fiber.memoizedProps, oldPath, newPath);\n\n    if (fiber.alternate) {\n      fiber.alternate.pendingProps = fiber.pendingProps;\n    }\n\n    var root = enqueueConcurrentRenderForLane(fiber, SyncLane);\n\n    if (root !== null) {\n      scheduleUpdateOnFiber(root, fiber, SyncLane, NoTimestamp);\n    }\n  };\n\n  scheduleUpdate = function (fiber) {\n    var root = enqueueConcurrentRenderForLane(fiber, SyncLane);\n\n    if (root !== null) {\n      scheduleUpdateOnFiber(root, fiber, SyncLane, NoTimestamp);\n    }\n  };\n\n  setErrorHandler = function (newShouldErrorImpl) {\n    shouldErrorImpl = newShouldErrorImpl;\n  };\n\n  setSuspenseHandler = function (newShouldSuspendImpl) {\n    shouldSuspendImpl = newShouldSuspendImpl;\n  };\n}\n\nfunction findHostInstanceByFiber(fiber) {\n  var hostFiber = findCurrentHostFiber(fiber);\n\n  if (hostFiber === null) {\n    return null;\n  }\n\n  return hostFiber.stateNode;\n}\n\nfunction emptyFindFiberByHostInstance(instance) {\n  return null;\n}\n\nfunction getCurrentFiberForDevTools() {\n  return current;\n}\n\nfunction injectIntoDevTools(devToolsConfig) {\n  var findFiberByHostInstance = devToolsConfig.findFiberByHostInstance;\n  var ReactCurrentDispatcher = ReactSharedInternals.ReactCurrentDispatcher;\n  return injectInternals({\n    bundleType: devToolsConfig.bundleType,\n    version: devToolsConfig.version,\n    rendererPackageName: devToolsConfig.rendererPackageName,\n    rendererConfig: devToolsConfig.rendererConfig,\n    overrideHookState: overrideHookState,\n    overrideHookStateDeletePath: overrideHookStateDeletePath,\n    overrideHookStateRenamePath: overrideHookStateRenamePath,\n    overrideProps: overrideProps,\n    overridePropsDeletePath: overridePropsDeletePath,\n    overridePropsRenamePath: overridePropsRenamePath,\n    setErrorHandler: setErrorHandler,\n    setSuspenseHandler: setSuspenseHandler,\n    scheduleUpdate: scheduleUpdate,\n    currentDispatcherRef: ReactCurrentDispatcher,\n    findHostInstanceByFiber: findHostInstanceByFiber,\n    findFiberByHostInstance: findFiberByHostInstance || emptyFindFiberByHostInstance,\n    // React Refresh\n    findHostInstancesForRefresh:  findHostInstancesForRefresh ,\n    scheduleRefresh:  scheduleRefresh ,\n    scheduleRoot:  scheduleRoot ,\n    setRefreshHandler:  setRefreshHandler ,\n    // Enables DevTools to append owner stacks to error messages in DEV mode.\n    getCurrentFiber:  getCurrentFiberForDevTools ,\n    // Enables DevTools to detect reconciler version rather than renderer version\n    // which may not match for third party renderers.\n    reconcilerVersion: ReactVersion\n  });\n}\n\n/* global reportError */\n\nvar defaultOnRecoverableError = typeof reportError === 'function' ? // In modern browsers, reportError will dispatch an error event,\n// emulating an uncaught JavaScript error.\nreportError : function (error) {\n  // In older browsers and test environments, fallback to console.error.\n  // eslint-disable-next-line react-internal/no-production-logging\n  console['error'](error);\n};\n\nfunction ReactDOMRoot(internalRoot) {\n  this._internalRoot = internalRoot;\n}\n\nReactDOMHydrationRoot.prototype.render = ReactDOMRoot.prototype.render = function (children) {\n  var root = this._internalRoot;\n\n  if (root === null) {\n    throw new Error('Cannot update an unmounted root.');\n  }\n\n  {\n    if (typeof arguments[1] === 'function') {\n      error('render(...): does not support the second callback argument. ' + 'To execute a side effect after rendering, declare it in a component body with useEffect().');\n    } else if (isValidContainer(arguments[1])) {\n      error('You passed a container to the second argument of root.render(...). ' + \"You don't need to pass it again since you already passed it to create the root.\");\n    } else if (typeof arguments[1] !== 'undefined') {\n      error('You passed a second argument to root.render(...) but it only accepts ' + 'one argument.');\n    }\n\n    var container = root.containerInfo;\n\n    if (container.nodeType !== COMMENT_NODE) {\n      var hostInstance = findHostInstanceWithNoPortals(root.current);\n\n      if (hostInstance) {\n        if (hostInstance.parentNode !== container) {\n          error('render(...): It looks like the React-rendered content of the ' + 'root container was removed without using React. This is not ' + 'supported and will cause errors. Instead, call ' + \"root.unmount() to empty a root's container.\");\n        }\n      }\n    }\n  }\n\n  updateContainer(children, root, null, null);\n};\n\nReactDOMHydrationRoot.prototype.unmount = ReactDOMRoot.prototype.unmount = function () {\n  {\n    if (typeof arguments[0] === 'function') {\n      error('unmount(...): does not support a callback argument. ' + 'To execute a side effect after rendering, declare it in a component body with useEffect().');\n    }\n  }\n\n  var root = this._internalRoot;\n\n  if (root !== null) {\n    this._internalRoot = null;\n    var container = root.containerInfo;\n\n    {\n      if (isAlreadyRendering()) {\n        error('Attempted to synchronously unmount a root while React was already ' + 'rendering. React cannot finish unmounting the root until the ' + 'current render has completed, which may lead to a race condition.');\n      }\n    }\n\n    flushSync(function () {\n      updateContainer(null, root, null, null);\n    });\n    unmarkContainerAsRoot(container);\n  }\n};\n\nfunction createRoot(container, options) {\n  if (!isValidContainer(container)) {\n    throw new Error('createRoot(...): Target container is not a DOM element.');\n  }\n\n  warnIfReactDOMContainerInDEV(container);\n  var isStrictMode = false;\n  var concurrentUpdatesByDefaultOverride = false;\n  var identifierPrefix = '';\n  var onRecoverableError = defaultOnRecoverableError;\n  var transitionCallbacks = null;\n\n  if (options !== null && options !== undefined) {\n    {\n      if (options.hydrate) {\n        warn('hydrate through createRoot is deprecated. Use ReactDOMClient.hydrateRoot(container, <App />) instead.');\n      } else {\n        if (typeof options === 'object' && options !== null && options.$$typeof === REACT_ELEMENT_TYPE) {\n          error('You passed a JSX element to createRoot. You probably meant to ' + 'call root.render instead. ' + 'Example usage:\\n\\n' + '  let root = createRoot(domContainer);\\n' + '  root.render(<App />);');\n        }\n      }\n    }\n\n    if (options.unstable_strictMode === true) {\n      isStrictMode = true;\n    }\n\n    if (options.identifierPrefix !== undefined) {\n      identifierPrefix = options.identifierPrefix;\n    }\n\n    if (options.onRecoverableError !== undefined) {\n      onRecoverableError = options.onRecoverableError;\n    }\n\n    if (options.transitionCallbacks !== undefined) {\n      transitionCallbacks = options.transitionCallbacks;\n    }\n  }\n\n  var root = createContainer(container, ConcurrentRoot, null, isStrictMode, concurrentUpdatesByDefaultOverride, identifierPrefix, onRecoverableError);\n  markContainerAsRoot(root.current, container);\n  var rootContainerElement = container.nodeType === COMMENT_NODE ? container.parentNode : container;\n  listenToAllSupportedEvents(rootContainerElement);\n  return new ReactDOMRoot(root);\n}\n\nfunction ReactDOMHydrationRoot(internalRoot) {\n  this._internalRoot = internalRoot;\n}\n\nfunction scheduleHydration(target) {\n  if (target) {\n    queueExplicitHydrationTarget(target);\n  }\n}\n\nReactDOMHydrationRoot.prototype.unstable_scheduleHydration = scheduleHydration;\nfunction hydrateRoot(container, initialChildren, options) {\n  if (!isValidContainer(container)) {\n    throw new Error('hydrateRoot(...): Target container is not a DOM element.');\n  }\n\n  warnIfReactDOMContainerInDEV(container);\n\n  {\n    if (initialChildren === undefined) {\n      error('Must provide initial children as second argument to hydrateRoot. ' + 'Example usage: hydrateRoot(domContainer, <App />)');\n    }\n  } // For now we reuse the whole bag of options since they contain\n  // the hydration callbacks.\n\n\n  var hydrationCallbacks = options != null ? options : null; // TODO: Delete this option\n\n  var mutableSources = options != null && options.hydratedSources || null;\n  var isStrictMode = false;\n  var concurrentUpdatesByDefaultOverride = false;\n  var identifierPrefix = '';\n  var onRecoverableError = defaultOnRecoverableError;\n\n  if (options !== null && options !== undefined) {\n    if (options.unstable_strictMode === true) {\n      isStrictMode = true;\n    }\n\n    if (options.identifierPrefix !== undefined) {\n      identifierPrefix = options.identifierPrefix;\n    }\n\n    if (options.onRecoverableError !== undefined) {\n      onRecoverableError = options.onRecoverableError;\n    }\n  }\n\n  var root = createHydrationContainer(initialChildren, null, container, ConcurrentRoot, hydrationCallbacks, isStrictMode, concurrentUpdatesByDefaultOverride, identifierPrefix, onRecoverableError);\n  markContainerAsRoot(root.current, container); // This can't be a comment node since hydration doesn't work on comment nodes anyway.\n\n  listenToAllSupportedEvents(container);\n\n  if (mutableSources) {\n    for (var i = 0; i < mutableSources.length; i++) {\n      var mutableSource = mutableSources[i];\n      registerMutableSourceForHydration(root, mutableSource);\n    }\n  }\n\n  return new ReactDOMHydrationRoot(root);\n}\nfunction isValidContainer(node) {\n  return !!(node && (node.nodeType === ELEMENT_NODE || node.nodeType === DOCUMENT_NODE || node.nodeType === DOCUMENT_FRAGMENT_NODE || !disableCommentsAsDOMContainers  ));\n} // TODO: Remove this function which also includes comment nodes.\n// We only use it in places that are currently more relaxed.\n\nfunction isValidContainerLegacy(node) {\n  return !!(node && (node.nodeType === ELEMENT_NODE || node.nodeType === DOCUMENT_NODE || node.nodeType === DOCUMENT_FRAGMENT_NODE || node.nodeType === COMMENT_NODE && node.nodeValue === ' react-mount-point-unstable '));\n}\n\nfunction warnIfReactDOMContainerInDEV(container) {\n  {\n    if (container.nodeType === ELEMENT_NODE && container.tagName && container.tagName.toUpperCase() === 'BODY') {\n      error('createRoot(): Creating roots directly with document.body is ' + 'discouraged, since its children are often manipulated by third-party ' + 'scripts and browser extensions. This may lead to subtle ' + 'reconciliation issues. Try using a container element created ' + 'for your app.');\n    }\n\n    if (isContainerMarkedAsRoot(container)) {\n      if (container._reactRootContainer) {\n        error('You are calling ReactDOMClient.createRoot() on a container that was previously ' + 'passed to ReactDOM.render(). This is not supported.');\n      } else {\n        error('You are calling ReactDOMClient.createRoot() on a container that ' + 'has already been passed to createRoot() before. Instead, call ' + 'root.render() on the existing root instead if you want to update it.');\n      }\n    }\n  }\n}\n\nvar ReactCurrentOwner$3 = ReactSharedInternals.ReactCurrentOwner;\nvar topLevelUpdateWarnings;\n\n{\n  topLevelUpdateWarnings = function (container) {\n    if (container._reactRootContainer && container.nodeType !== COMMENT_NODE) {\n      var hostInstance = findHostInstanceWithNoPortals(container._reactRootContainer.current);\n\n      if (hostInstance) {\n        if (hostInstance.parentNode !== container) {\n          error('render(...): It looks like the React-rendered content of this ' + 'container was removed without using React. This is not ' + 'supported and will cause errors. Instead, call ' + 'ReactDOM.unmountComponentAtNode to empty a container.');\n        }\n      }\n    }\n\n    var isRootRenderedBySomeReact = !!container._reactRootContainer;\n    var rootEl = getReactRootElementInContainer(container);\n    var hasNonRootReactChild = !!(rootEl && getInstanceFromNode(rootEl));\n\n    if (hasNonRootReactChild && !isRootRenderedBySomeReact) {\n      error('render(...): Replacing React-rendered children with a new root ' + 'component. If you intended to update the children of this node, ' + 'you should instead have the existing children update their state ' + 'and render the new components instead of calling ReactDOM.render.');\n    }\n\n    if (container.nodeType === ELEMENT_NODE && container.tagName && container.tagName.toUpperCase() === 'BODY') {\n      error('render(): Rendering components directly into document.body is ' + 'discouraged, since its children are often manipulated by third-party ' + 'scripts and browser extensions. This may lead to subtle ' + 'reconciliation issues. Try rendering into a container element created ' + 'for your app.');\n    }\n  };\n}\n\nfunction getReactRootElementInContainer(container) {\n  if (!container) {\n    return null;\n  }\n\n  if (container.nodeType === DOCUMENT_NODE) {\n    return container.documentElement;\n  } else {\n    return container.firstChild;\n  }\n}\n\nfunction noopOnRecoverableError() {// This isn't reachable because onRecoverableError isn't called in the\n  // legacy API.\n}\n\nfunction legacyCreateRootFromDOMContainer(container, initialChildren, parentComponent, callback, isHydrationContainer) {\n  if (isHydrationContainer) {\n    if (typeof callback === 'function') {\n      var originalCallback = callback;\n\n      callback = function () {\n        var instance = getPublicRootInstance(root);\n        originalCallback.call(instance);\n      };\n    }\n\n    var root = createHydrationContainer(initialChildren, callback, container, LegacyRoot, null, // hydrationCallbacks\n    false, // isStrictMode\n    false, // concurrentUpdatesByDefaultOverride,\n    '', // identifierPrefix\n    noopOnRecoverableError);\n    container._reactRootContainer = root;\n    markContainerAsRoot(root.current, container);\n    var rootContainerElement = container.nodeType === COMMENT_NODE ? container.parentNode : container;\n    listenToAllSupportedEvents(rootContainerElement);\n    flushSync();\n    return root;\n  } else {\n    // First clear any existing content.\n    var rootSibling;\n\n    while (rootSibling = container.lastChild) {\n      container.removeChild(rootSibling);\n    }\n\n    if (typeof callback === 'function') {\n      var _originalCallback = callback;\n\n      callback = function () {\n        var instance = getPublicRootInstance(_root);\n\n        _originalCallback.call(instance);\n      };\n    }\n\n    var _root = createContainer(container, LegacyRoot, null, // hydrationCallbacks\n    false, // isStrictMode\n    false, // concurrentUpdatesByDefaultOverride,\n    '', // identifierPrefix\n    noopOnRecoverableError);\n\n    container._reactRootContainer = _root;\n    markContainerAsRoot(_root.current, container);\n\n    var _rootContainerElement = container.nodeType === COMMENT_NODE ? container.parentNode : container;\n\n    listenToAllSupportedEvents(_rootContainerElement); // Initial mount should not be batched.\n\n    flushSync(function () {\n      updateContainer(initialChildren, _root, parentComponent, callback);\n    });\n    return _root;\n  }\n}\n\nfunction warnOnInvalidCallback$1(callback, callerName) {\n  {\n    if (callback !== null && typeof callback !== 'function') {\n      error('%s(...): Expected the last optional `callback` argument to be a ' + 'function. Instead received: %s.', callerName, callback);\n    }\n  }\n}\n\nfunction legacyRenderSubtreeIntoContainer(parentComponent, children, container, forceHydrate, callback) {\n  {\n    topLevelUpdateWarnings(container);\n    warnOnInvalidCallback$1(callback === undefined ? null : callback, 'render');\n  }\n\n  var maybeRoot = container._reactRootContainer;\n  var root;\n\n  if (!maybeRoot) {\n    // Initial mount\n    root = legacyCreateRootFromDOMContainer(container, children, parentComponent, callback, forceHydrate);\n  } else {\n    root = maybeRoot;\n\n    if (typeof callback === 'function') {\n      var originalCallback = callback;\n\n      callback = function () {\n        var instance = getPublicRootInstance(root);\n        originalCallback.call(instance);\n      };\n    } // Update\n\n\n    updateContainer(children, root, parentComponent, callback);\n  }\n\n  return getPublicRootInstance(root);\n}\n\nfunction findDOMNode(componentOrElement) {\n  {\n    var owner = ReactCurrentOwner$3.current;\n\n    if (owner !== null && owner.stateNode !== null) {\n      var warnedAboutRefsInRender = owner.stateNode._warnedAboutRefsInRender;\n\n      if (!warnedAboutRefsInRender) {\n        error('%s is accessing findDOMNode inside its render(). ' + 'render() should be a pure function of props and state. It should ' + 'never access something that requires stale data from the previous ' + 'render, such as refs. Move this logic to componentDidMount and ' + 'componentDidUpdate instead.', getComponentNameFromType(owner.type) || 'A component');\n      }\n\n      owner.stateNode._warnedAboutRefsInRender = true;\n    }\n  }\n\n  if (componentOrElement == null) {\n    return null;\n  }\n\n  if (componentOrElement.nodeType === ELEMENT_NODE) {\n    return componentOrElement;\n  }\n\n  {\n    return findHostInstanceWithWarning(componentOrElement, 'findDOMNode');\n  }\n}\nfunction hydrate(element, container, callback) {\n  {\n    error('ReactDOM.hydrate is no longer supported in React 18. Use hydrateRoot ' + 'instead. Until you switch to the new API, your app will behave as ' + \"if it's running React 17. Learn \" + 'more: https://reactjs.org/link/switch-to-createroot');\n  }\n\n  if (!isValidContainerLegacy(container)) {\n    throw new Error('Target container is not a DOM element.');\n  }\n\n  {\n    var isModernRoot = isContainerMarkedAsRoot(container) && container._reactRootContainer === undefined;\n\n    if (isModernRoot) {\n      error('You are calling ReactDOM.hydrate() on a container that was previously ' + 'passed to ReactDOMClient.createRoot(). This is not supported. ' + 'Did you mean to call hydrateRoot(container, element)?');\n    }\n  } // TODO: throw or warn if we couldn't hydrate?\n\n\n  return legacyRenderSubtreeIntoContainer(null, element, container, true, callback);\n}\nfunction render(element, container, callback) {\n  {\n    error('ReactDOM.render is no longer supported in React 18. Use createRoot ' + 'instead. Until you switch to the new API, your app will behave as ' + \"if it's running React 17. Learn \" + 'more: https://reactjs.org/link/switch-to-createroot');\n  }\n\n  if (!isValidContainerLegacy(container)) {\n    throw new Error('Target container is not a DOM element.');\n  }\n\n  {\n    var isModernRoot = isContainerMarkedAsRoot(container) && container._reactRootContainer === undefined;\n\n    if (isModernRoot) {\n      error('You are calling ReactDOM.render() on a container that was previously ' + 'passed to ReactDOMClient.createRoot(). This is not supported. ' + 'Did you mean to call root.render(element)?');\n    }\n  }\n\n  return legacyRenderSubtreeIntoContainer(null, element, container, false, callback);\n}\nfunction unstable_renderSubtreeIntoContainer(parentComponent, element, containerNode, callback) {\n  {\n    error('ReactDOM.unstable_renderSubtreeIntoContainer() is no longer supported ' + 'in React 18. Consider using a portal instead. Until you switch to ' + \"the createRoot API, your app will behave as if it's running React \" + '17. Learn more: https://reactjs.org/link/switch-to-createroot');\n  }\n\n  if (!isValidContainerLegacy(containerNode)) {\n    throw new Error('Target container is not a DOM element.');\n  }\n\n  if (parentComponent == null || !has(parentComponent)) {\n    throw new Error('parentComponent must be a valid React Component');\n  }\n\n  return legacyRenderSubtreeIntoContainer(parentComponent, element, containerNode, false, callback);\n}\nfunction unmountComponentAtNode(container) {\n  if (!isValidContainerLegacy(container)) {\n    throw new Error('unmountComponentAtNode(...): Target container is not a DOM element.');\n  }\n\n  {\n    var isModernRoot = isContainerMarkedAsRoot(container) && container._reactRootContainer === undefined;\n\n    if (isModernRoot) {\n      error('You are calling ReactDOM.unmountComponentAtNode() on a container that was previously ' + 'passed to ReactDOMClient.createRoot(). This is not supported. Did you mean to call root.unmount()?');\n    }\n  }\n\n  if (container._reactRootContainer) {\n    {\n      var rootEl = getReactRootElementInContainer(container);\n      var renderedByDifferentReact = rootEl && !getInstanceFromNode(rootEl);\n\n      if (renderedByDifferentReact) {\n        error(\"unmountComponentAtNode(): The node you're attempting to unmount \" + 'was rendered by another copy of React.');\n      }\n    } // Unmount should not be batched.\n\n\n    flushSync(function () {\n      legacyRenderSubtreeIntoContainer(null, null, container, false, function () {\n        // $FlowFixMe This should probably use `delete container._reactRootContainer`\n        container._reactRootContainer = null;\n        unmarkContainerAsRoot(container);\n      });\n    }); // If you call unmountComponentAtNode twice in quick succession, you'll\n    // get `true` twice. That's probably fine?\n\n    return true;\n  } else {\n    {\n      var _rootEl = getReactRootElementInContainer(container);\n\n      var hasNonRootReactChild = !!(_rootEl && getInstanceFromNode(_rootEl)); // Check if the container itself is a React root node.\n\n      var isContainerReactRoot = container.nodeType === ELEMENT_NODE && isValidContainerLegacy(container.parentNode) && !!container.parentNode._reactRootContainer;\n\n      if (hasNonRootReactChild) {\n        error(\"unmountComponentAtNode(): The node you're attempting to unmount \" + 'was rendered by React and is not a top-level container. %s', isContainerReactRoot ? 'You may have accidentally passed in a React root node instead ' + 'of its container.' : 'Instead, have the parent component update its state and ' + 'rerender in order to remove this component.');\n      }\n    }\n\n    return false;\n  }\n}\n\nsetAttemptSynchronousHydration(attemptSynchronousHydration$1);\nsetAttemptContinuousHydration(attemptContinuousHydration$1);\nsetAttemptHydrationAtCurrentPriority(attemptHydrationAtCurrentPriority$1);\nsetGetCurrentUpdatePriority(getCurrentUpdatePriority);\nsetAttemptHydrationAtPriority(runWithPriority);\n\n{\n  if (typeof Map !== 'function' || // $FlowIssue Flow incorrectly thinks Map has no prototype\n  Map.prototype == null || typeof Map.prototype.forEach !== 'function' || typeof Set !== 'function' || // $FlowIssue Flow incorrectly thinks Set has no prototype\n  Set.prototype == null || typeof Set.prototype.clear !== 'function' || typeof Set.prototype.forEach !== 'function') {\n    error('React depends on Map and Set built-in types. Make sure that you load a ' + 'polyfill in older browsers. https://reactjs.org/link/react-polyfills');\n  }\n}\n\nsetRestoreImplementation(restoreControlledState$3);\nsetBatchingImplementation(batchedUpdates$1, discreteUpdates, flushSync);\n\nfunction createPortal$1(children, container) {\n  var key = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n\n  if (!isValidContainer(container)) {\n    throw new Error('Target container is not a DOM element.');\n  } // TODO: pass ReactDOM portal implementation as third argument\n  // $FlowFixMe The Flow type is opaque but there's no way to actually create it.\n\n\n  return createPortal(children, container, null, key);\n}\n\nfunction renderSubtreeIntoContainer(parentComponent, element, containerNode, callback) {\n  return unstable_renderSubtreeIntoContainer(parentComponent, element, containerNode, callback);\n}\n\nvar Internals = {\n  usingClientEntryPoint: false,\n  // Keep in sync with ReactTestUtils.js.\n  // This is an array for better minification.\n  Events: [getInstanceFromNode, getNodeFromInstance, getFiberCurrentPropsFromNode, enqueueStateRestore, restoreStateIfNeeded, batchedUpdates$1]\n};\n\nfunction createRoot$1(container, options) {\n  {\n    if (!Internals.usingClientEntryPoint && !false) {\n      error('You are importing createRoot from \"react-dom\" which is not supported. ' + 'You should instead import it from \"react-dom/client\".');\n    }\n  }\n\n  return createRoot(container, options);\n}\n\nfunction hydrateRoot$1(container, initialChildren, options) {\n  {\n    if (!Internals.usingClientEntryPoint && !false) {\n      error('You are importing hydrateRoot from \"react-dom\" which is not supported. ' + 'You should instead import it from \"react-dom/client\".');\n    }\n  }\n\n  return hydrateRoot(container, initialChildren, options);\n} // Overload the definition to the two valid signatures.\n// Warning, this opts-out of checking the function body.\n\n\n// eslint-disable-next-line no-redeclare\nfunction flushSync$1(fn) {\n  {\n    if (isAlreadyRendering()) {\n      error('flushSync was called from inside a lifecycle method. React cannot ' + 'flush when React is already rendering. Consider moving this call to ' + 'a scheduler task or micro task.');\n    }\n  }\n\n  return flushSync(fn);\n}\nvar foundDevTools = injectIntoDevTools({\n  findFiberByHostInstance: getClosestInstanceFromNode,\n  bundleType:  1 ,\n  version: ReactVersion,\n  rendererPackageName: 'react-dom'\n});\n\n{\n  if (!foundDevTools && canUseDOM && window.top === window.self) {\n    // If we're in Chrome or Firefox, provide a download link if not installed.\n    if (navigator.userAgent.indexOf('Chrome') > -1 && navigator.userAgent.indexOf('Edge') === -1 || navigator.userAgent.indexOf('Firefox') > -1) {\n      var protocol = window.location.protocol; // Don't warn in exotic cases like chrome-extension://.\n\n      if (/^(https?|file):$/.test(protocol)) {\n        // eslint-disable-next-line react-internal/no-production-logging\n        console.info('%cDownload the React DevTools ' + 'for a better development experience: ' + 'https://reactjs.org/link/react-devtools' + (protocol === 'file:' ? '\\nYou might need to use a local HTTP server (instead of file://): ' + 'https://reactjs.org/link/react-devtools-faq' : ''), 'font-weight:bold');\n      }\n    }\n  }\n}\n\nexports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = Internals;\nexports.createPortal = createPortal$1;\nexports.createRoot = createRoot$1;\nexports.findDOMNode = findDOMNode;\nexports.flushSync = flushSync$1;\nexports.hydrate = hydrate;\nexports.hydrateRoot = hydrateRoot$1;\nexports.render = render;\nexports.unmountComponentAtNode = unmountComponentAtNode;\nexports.unstable_batchedUpdates = batchedUpdates$1;\nexports.unstable_renderSubtreeIntoContainer = renderSubtreeIntoContainer;\nexports.version = ReactVersion;\n          /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\nif (\n  typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&\n  typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop ===\n    'function'\n) {\n  __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(new Error());\n}\n        \n  })();\n}\n", "'use strict';\n\nfunction checkDCE() {\n  /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n  if (\n    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n  ) {\n    return;\n  }\n  if (process.env.NODE_ENV !== 'production') {\n    // This branch is unreachable because this function is only called\n    // in production, but the condition is true only in development.\n    // Therefore if the branch is still here, dead code elimination wasn't\n    // properly applied.\n    // Don't change the message. React DevTools relies on it. Also make sure\n    // this message doesn't occur elsewhere in this function, or it will cause\n    // a false positive.\n    throw new Error('^_^');\n  }\n  try {\n    // Verify that the code above has been dead code eliminated (DCE'd).\n    __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n  } catch (err) {\n    // DevTools shouldn't crash React, no matter what.\n    // We should still report in case we break this code.\n    console.error(err);\n  }\n}\n\nif (process.env.NODE_ENV === 'production') {\n  // DCE check should happen before ReactDOM bundle executes so that\n  // DevTools can report bad minification during injection.\n  checkDCE();\n  module.exports = require('./cjs/react-dom.production.min.js');\n} else {\n  module.exports = require('./cjs/react-dom.development.js');\n}\n", "'use strict';\n\nvar m = require('react-dom');\nif (process.env.NODE_ENV === 'production') {\n  exports.createRoot = m.createRoot;\n  exports.hydrateRoot = m.hydrateRoot;\n} else {\n  var i = m.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n  exports.createRoot = function(c, o) {\n    i.usingClientEntryPoint = true;\n    try {\n      return m.createRoot(c, o);\n    } finally {\n      i.usingClientEntryPoint = false;\n    }\n  };\n  exports.hydrateRoot = function(c, h, o) {\n    i.usingClientEntryPoint = true;\n    try {\n      return m.hydrateRoot(c, h, o);\n    } finally {\n      i.usingClientEntryPoint = false;\n    }\n  };\n}\n", "/** @license React v16.13.1\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n\n\nif (process.env.NODE_ENV !== \"production\") {\n  (function() {\n'use strict';\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary\n// (unstable) APIs that have been removed. Can we remove the symbols?\n\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\nvar REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;\nvar REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;\nvar REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;\nvar REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;\n\nfunction isValidElementType(type) {\n  return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n  type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);\n}\n\nfunction typeOf(object) {\n  if (typeof object === 'object' && object !== null) {\n    var $$typeof = object.$$typeof;\n\n    switch ($$typeof) {\n      case REACT_ELEMENT_TYPE:\n        var type = object.type;\n\n        switch (type) {\n          case REACT_ASYNC_MODE_TYPE:\n          case REACT_CONCURRENT_MODE_TYPE:\n          case REACT_FRAGMENT_TYPE:\n          case REACT_PROFILER_TYPE:\n          case REACT_STRICT_MODE_TYPE:\n          case REACT_SUSPENSE_TYPE:\n            return type;\n\n          default:\n            var $$typeofType = type && type.$$typeof;\n\n            switch ($$typeofType) {\n              case REACT_CONTEXT_TYPE:\n              case REACT_FORWARD_REF_TYPE:\n              case REACT_LAZY_TYPE:\n              case REACT_MEMO_TYPE:\n              case REACT_PROVIDER_TYPE:\n                return $$typeofType;\n\n              default:\n                return $$typeof;\n            }\n\n        }\n\n      case REACT_PORTAL_TYPE:\n        return $$typeof;\n    }\n  }\n\n  return undefined;\n} // AsyncMode is deprecated along with isAsyncMode\n\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n  {\n    if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n      hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n      console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n    }\n  }\n\n  return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n  return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n  return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n  return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n  return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n  return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n  return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n  return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n  return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n  return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n  return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n  return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n  return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n  })();\n}\n", "'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-is.production.min.js');\n} else {\n  module.exports = require('./cjs/react-is.development.js');\n}\n", "/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc');  // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n", "/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n", "module.exports = Function.call.bind(Object.prototype.hasOwnProperty);\n", "/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n  var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n  var loggedTypeFailures = {};\n  var has = require('./lib/has');\n\n  printWarning = function(text) {\n    var message = 'Warning: ' + text;\n    if (typeof console !== 'undefined') {\n      console.error(message);\n    }\n    try {\n      // --- Welcome to debugging React ---\n      // This error was thrown as a convenience so that you can use this stack\n      // to find the callsite that caused this warning to fire.\n      throw new Error(message);\n    } catch (x) { /**/ }\n  };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n  if (process.env.NODE_ENV !== 'production') {\n    for (var typeSpecName in typeSpecs) {\n      if (has(typeSpecs, typeSpecName)) {\n        var error;\n        // Prop type validation may throw. In case they do, we don't want to\n        // fail the render phase where it didn't fail before. So we log it.\n        // After these have been cleaned up, we'll let them throw.\n        try {\n          // This is intentionally an invariant that gets caught. It's the same\n          // behavior as without this statement except with a better message.\n          if (typeof typeSpecs[typeSpecName] !== 'function') {\n            var err = Error(\n              (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n              'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' +\n              'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.'\n            );\n            err.name = 'Invariant Violation';\n            throw err;\n          }\n          error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n        } catch (ex) {\n          error = ex;\n        }\n        if (error && !(error instanceof Error)) {\n          printWarning(\n            (componentName || 'React class') + ': type specification of ' +\n            location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n            'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n            'You may have forgotten to pass an argument to the type checker ' +\n            'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n            'shape all require an argument).'\n          );\n        }\n        if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n          // Only monitor this failure once because there tends to be a lot of the\n          // same error.\n          loggedTypeFailures[error.message] = true;\n\n          var stack = getStack ? getStack() : '';\n\n          printWarning(\n            'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n          );\n        }\n      }\n    }\n  }\n}\n\n/**\n * Resets warning cache when testing.\n *\n * @private\n */\ncheckPropTypes.resetWarningCache = function() {\n  if (process.env.NODE_ENV !== 'production') {\n    loggedTypeFailures = {};\n  }\n}\n\nmodule.exports = checkPropTypes;\n", "/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactIs = require('react-is');\nvar assign = require('object-assign');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar has = require('./lib/has');\nvar checkPropTypes = require('./checkPropTypes');\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n  printWarning = function(text) {\n    var message = 'Warning: ' + text;\n    if (typeof console !== 'undefined') {\n      console.error(message);\n    }\n    try {\n      // --- Welcome to debugging React ---\n      // This error was thrown as a convenience so that you can use this stack\n      // to find the callsite that caused this warning to fire.\n      throw new Error(message);\n    } catch (x) {}\n  };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n  return null;\n}\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n  /* global Symbol */\n  var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n  var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n  /**\n   * Returns the iterator method function contained on the iterable object.\n   *\n   * Be sure to invoke the function with the iterable as context:\n   *\n   *     var iteratorFn = getIteratorFn(myIterable);\n   *     if (iteratorFn) {\n   *       var iterator = iteratorFn.call(myIterable);\n   *       ...\n   *     }\n   *\n   * @param {?object} maybeIterable\n   * @return {?function}\n   */\n  function getIteratorFn(maybeIterable) {\n    var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n    if (typeof iteratorFn === 'function') {\n      return iteratorFn;\n    }\n  }\n\n  /**\n   * Collection of methods that allow declaration and validation of props that are\n   * supplied to React components. Example usage:\n   *\n   *   var Props = require('ReactPropTypes');\n   *   var MyArticle = React.createClass({\n   *     propTypes: {\n   *       // An optional string prop named \"description\".\n   *       description: Props.string,\n   *\n   *       // A required enum prop named \"category\".\n   *       category: Props.oneOf(['News','Photos']).isRequired,\n   *\n   *       // A prop named \"dialog\" that requires an instance of Dialog.\n   *       dialog: Props.instanceOf(Dialog).isRequired\n   *     },\n   *     render: function() { ... }\n   *   });\n   *\n   * A more formal specification of how these methods are used:\n   *\n   *   type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n   *   decl := ReactPropTypes.{type}(.isRequired)?\n   *\n   * Each and every declaration produces a function with the same signature. This\n   * allows the creation of custom validation functions. For example:\n   *\n   *  var MyLink = React.createClass({\n   *    propTypes: {\n   *      // An optional string or URI prop named \"href\".\n   *      href: function(props, propName, componentName) {\n   *        var propValue = props[propName];\n   *        if (propValue != null && typeof propValue !== 'string' &&\n   *            !(propValue instanceof URI)) {\n   *          return new Error(\n   *            'Expected a string or an URI for ' + propName + ' in ' +\n   *            componentName\n   *          );\n   *        }\n   *      }\n   *    },\n   *    render: function() {...}\n   *  });\n   *\n   * @internal\n   */\n\n  var ANONYMOUS = '<<anonymous>>';\n\n  // Important!\n  // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n  var ReactPropTypes = {\n    array: createPrimitiveTypeChecker('array'),\n    bigint: createPrimitiveTypeChecker('bigint'),\n    bool: createPrimitiveTypeChecker('boolean'),\n    func: createPrimitiveTypeChecker('function'),\n    number: createPrimitiveTypeChecker('number'),\n    object: createPrimitiveTypeChecker('object'),\n    string: createPrimitiveTypeChecker('string'),\n    symbol: createPrimitiveTypeChecker('symbol'),\n\n    any: createAnyTypeChecker(),\n    arrayOf: createArrayOfTypeChecker,\n    element: createElementTypeChecker(),\n    elementType: createElementTypeTypeChecker(),\n    instanceOf: createInstanceTypeChecker,\n    node: createNodeChecker(),\n    objectOf: createObjectOfTypeChecker,\n    oneOf: createEnumTypeChecker,\n    oneOfType: createUnionTypeChecker,\n    shape: createShapeTypeChecker,\n    exact: createStrictShapeTypeChecker,\n  };\n\n  /**\n   * inlined Object.is polyfill to avoid requiring consumers ship their own\n   * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n   */\n  /*eslint-disable no-self-compare*/\n  function is(x, y) {\n    // SameValue algorithm\n    if (x === y) {\n      // Steps 1-5, 7-10\n      // Steps 6.b-6.e: +0 != -0\n      return x !== 0 || 1 / x === 1 / y;\n    } else {\n      // Step 6.a: NaN == NaN\n      return x !== x && y !== y;\n    }\n  }\n  /*eslint-enable no-self-compare*/\n\n  /**\n   * We use an Error-like object for backward compatibility as people may call\n   * PropTypes directly and inspect their output. However, we don't use real\n   * Errors anymore. We don't inspect their stack anyway, and creating them\n   * is prohibitively expensive if they are created too often, such as what\n   * happens in oneOfType() for any type before the one that matched.\n   */\n  function PropTypeError(message, data) {\n    this.message = message;\n    this.data = data && typeof data === 'object' ? data: {};\n    this.stack = '';\n  }\n  // Make `instanceof Error` still work for returned errors.\n  PropTypeError.prototype = Error.prototype;\n\n  function createChainableTypeChecker(validate) {\n    if (process.env.NODE_ENV !== 'production') {\n      var manualPropTypeCallCache = {};\n      var manualPropTypeWarningCount = 0;\n    }\n    function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n      componentName = componentName || ANONYMOUS;\n      propFullName = propFullName || propName;\n\n      if (secret !== ReactPropTypesSecret) {\n        if (throwOnDirectAccess) {\n          // New behavior only for users of `prop-types` package\n          var err = new Error(\n            'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n            'Use `PropTypes.checkPropTypes()` to call them. ' +\n            'Read more at http://fb.me/use-check-prop-types'\n          );\n          err.name = 'Invariant Violation';\n          throw err;\n        } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n          // Old behavior for people using React.PropTypes\n          var cacheKey = componentName + ':' + propName;\n          if (\n            !manualPropTypeCallCache[cacheKey] &&\n            // Avoid spamming the console because they are often not actionable except for lib authors\n            manualPropTypeWarningCount < 3\n          ) {\n            printWarning(\n              'You are manually calling a React.PropTypes validation ' +\n              'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n              'and will throw in the standalone `prop-types` package. ' +\n              'You may be seeing this warning due to a third-party PropTypes ' +\n              'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n            );\n            manualPropTypeCallCache[cacheKey] = true;\n            manualPropTypeWarningCount++;\n          }\n        }\n      }\n      if (props[propName] == null) {\n        if (isRequired) {\n          if (props[propName] === null) {\n            return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n          }\n          return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n        }\n        return null;\n      } else {\n        return validate(props, propName, componentName, location, propFullName);\n      }\n    }\n\n    var chainedCheckType = checkType.bind(null, false);\n    chainedCheckType.isRequired = checkType.bind(null, true);\n\n    return chainedCheckType;\n  }\n\n  function createPrimitiveTypeChecker(expectedType) {\n    function validate(props, propName, componentName, location, propFullName, secret) {\n      var propValue = props[propName];\n      var propType = getPropType(propValue);\n      if (propType !== expectedType) {\n        // `propValue` being instance of, say, date/regexp, pass the 'object'\n        // check, but we can offer a more precise error message here rather than\n        // 'of type `object`'.\n        var preciseType = getPreciseType(propValue);\n\n        return new PropTypeError(\n          'Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'),\n          {expectedType: expectedType}\n        );\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createAnyTypeChecker() {\n    return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n  }\n\n  function createArrayOfTypeChecker(typeChecker) {\n    function validate(props, propName, componentName, location, propFullName) {\n      if (typeof typeChecker !== 'function') {\n        return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n      }\n      var propValue = props[propName];\n      if (!Array.isArray(propValue)) {\n        var propType = getPropType(propValue);\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n      }\n      for (var i = 0; i < propValue.length; i++) {\n        var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n        if (error instanceof Error) {\n          return error;\n        }\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createElementTypeChecker() {\n    function validate(props, propName, componentName, location, propFullName) {\n      var propValue = props[propName];\n      if (!isValidElement(propValue)) {\n        var propType = getPropType(propValue);\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createElementTypeTypeChecker() {\n    function validate(props, propName, componentName, location, propFullName) {\n      var propValue = props[propName];\n      if (!ReactIs.isValidElementType(propValue)) {\n        var propType = getPropType(propValue);\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createInstanceTypeChecker(expectedClass) {\n    function validate(props, propName, componentName, location, propFullName) {\n      if (!(props[propName] instanceof expectedClass)) {\n        var expectedClassName = expectedClass.name || ANONYMOUS;\n        var actualClassName = getClassName(props[propName]);\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createEnumTypeChecker(expectedValues) {\n    if (!Array.isArray(expectedValues)) {\n      if (process.env.NODE_ENV !== 'production') {\n        if (arguments.length > 1) {\n          printWarning(\n            'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' +\n            'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).'\n          );\n        } else {\n          printWarning('Invalid argument supplied to oneOf, expected an array.');\n        }\n      }\n      return emptyFunctionThatReturnsNull;\n    }\n\n    function validate(props, propName, componentName, location, propFullName) {\n      var propValue = props[propName];\n      for (var i = 0; i < expectedValues.length; i++) {\n        if (is(propValue, expectedValues[i])) {\n          return null;\n        }\n      }\n\n      var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {\n        var type = getPreciseType(value);\n        if (type === 'symbol') {\n          return String(value);\n        }\n        return value;\n      });\n      return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createObjectOfTypeChecker(typeChecker) {\n    function validate(props, propName, componentName, location, propFullName) {\n      if (typeof typeChecker !== 'function') {\n        return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n      }\n      var propValue = props[propName];\n      var propType = getPropType(propValue);\n      if (propType !== 'object') {\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n      }\n      for (var key in propValue) {\n        if (has(propValue, key)) {\n          var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n          if (error instanceof Error) {\n            return error;\n          }\n        }\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createUnionTypeChecker(arrayOfTypeCheckers) {\n    if (!Array.isArray(arrayOfTypeCheckers)) {\n      process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n      return emptyFunctionThatReturnsNull;\n    }\n\n    for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n      var checker = arrayOfTypeCheckers[i];\n      if (typeof checker !== 'function') {\n        printWarning(\n          'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n          'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n        );\n        return emptyFunctionThatReturnsNull;\n      }\n    }\n\n    function validate(props, propName, componentName, location, propFullName) {\n      var expectedTypes = [];\n      for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n        var checker = arrayOfTypeCheckers[i];\n        var checkerResult = checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret);\n        if (checkerResult == null) {\n          return null;\n        }\n        if (checkerResult.data && has(checkerResult.data, 'expectedType')) {\n          expectedTypes.push(checkerResult.data.expectedType);\n        }\n      }\n      var expectedTypesMessage = (expectedTypes.length > 0) ? ', expected one of type [' + expectedTypes.join(', ') + ']': '';\n      return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`' + expectedTypesMessage + '.'));\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createNodeChecker() {\n    function validate(props, propName, componentName, location, propFullName) {\n      if (!isNode(props[propName])) {\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function invalidValidatorError(componentName, location, propFullName, key, type) {\n    return new PropTypeError(\n      (componentName || 'React class') + ': ' + location + ' type `' + propFullName + '.' + key + '` is invalid; ' +\n      'it must be a function, usually from the `prop-types` package, but received `' + type + '`.'\n    );\n  }\n\n  function createShapeTypeChecker(shapeTypes) {\n    function validate(props, propName, componentName, location, propFullName) {\n      var propValue = props[propName];\n      var propType = getPropType(propValue);\n      if (propType !== 'object') {\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n      }\n      for (var key in shapeTypes) {\n        var checker = shapeTypes[key];\n        if (typeof checker !== 'function') {\n          return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n        }\n        var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n        if (error) {\n          return error;\n        }\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createStrictShapeTypeChecker(shapeTypes) {\n    function validate(props, propName, componentName, location, propFullName) {\n      var propValue = props[propName];\n      var propType = getPropType(propValue);\n      if (propType !== 'object') {\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n      }\n      // We need to check all keys in case some are required but missing from props.\n      var allKeys = assign({}, props[propName], shapeTypes);\n      for (var key in allKeys) {\n        var checker = shapeTypes[key];\n        if (has(shapeTypes, key) && typeof checker !== 'function') {\n          return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n        }\n        if (!checker) {\n          return new PropTypeError(\n            'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n            '\\nBad object: ' + JSON.stringify(props[propName], null, '  ') +\n            '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, '  ')\n          );\n        }\n        var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n        if (error) {\n          return error;\n        }\n      }\n      return null;\n    }\n\n    return createChainableTypeChecker(validate);\n  }\n\n  function isNode(propValue) {\n    switch (typeof propValue) {\n      case 'number':\n      case 'string':\n      case 'undefined':\n        return true;\n      case 'boolean':\n        return !propValue;\n      case 'object':\n        if (Array.isArray(propValue)) {\n          return propValue.every(isNode);\n        }\n        if (propValue === null || isValidElement(propValue)) {\n          return true;\n        }\n\n        var iteratorFn = getIteratorFn(propValue);\n        if (iteratorFn) {\n          var iterator = iteratorFn.call(propValue);\n          var step;\n          if (iteratorFn !== propValue.entries) {\n            while (!(step = iterator.next()).done) {\n              if (!isNode(step.value)) {\n                return false;\n              }\n            }\n          } else {\n            // Iterator will provide entry [k,v] tuples rather than values.\n            while (!(step = iterator.next()).done) {\n              var entry = step.value;\n              if (entry) {\n                if (!isNode(entry[1])) {\n                  return false;\n                }\n              }\n            }\n          }\n        } else {\n          return false;\n        }\n\n        return true;\n      default:\n        return false;\n    }\n  }\n\n  function isSymbol(propType, propValue) {\n    // Native Symbol.\n    if (propType === 'symbol') {\n      return true;\n    }\n\n    // falsy value can't be a Symbol\n    if (!propValue) {\n      return false;\n    }\n\n    // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n    if (propValue['@@toStringTag'] === 'Symbol') {\n      return true;\n    }\n\n    // Fallback for non-spec compliant Symbols which are polyfilled.\n    if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n      return true;\n    }\n\n    return false;\n  }\n\n  // Equivalent of `typeof` but with special handling for array and regexp.\n  function getPropType(propValue) {\n    var propType = typeof propValue;\n    if (Array.isArray(propValue)) {\n      return 'array';\n    }\n    if (propValue instanceof RegExp) {\n      // Old webkits (at least until Android 4.0) return 'function' rather than\n      // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n      // passes PropTypes.object.\n      return 'object';\n    }\n    if (isSymbol(propType, propValue)) {\n      return 'symbol';\n    }\n    return propType;\n  }\n\n  // This handles more types than `getPropType`. Only used for error messages.\n  // See `createPrimitiveTypeChecker`.\n  function getPreciseType(propValue) {\n    if (typeof propValue === 'undefined' || propValue === null) {\n      return '' + propValue;\n    }\n    var propType = getPropType(propValue);\n    if (propType === 'object') {\n      if (propValue instanceof Date) {\n        return 'date';\n      } else if (propValue instanceof RegExp) {\n        return 'regexp';\n      }\n    }\n    return propType;\n  }\n\n  // Returns a string that is postfixed to a warning about an invalid type.\n  // For example, \"undefined\" or \"of type array\"\n  function getPostfixForTypeWarning(value) {\n    var type = getPreciseType(value);\n    switch (type) {\n      case 'array':\n      case 'object':\n        return 'an ' + type;\n      case 'boolean':\n      case 'date':\n      case 'regexp':\n        return 'a ' + type;\n      default:\n        return type;\n    }\n  }\n\n  // Returns class name of the object, if any.\n  function getClassName(propValue) {\n    if (!propValue.constructor || !propValue.constructor.name) {\n      return ANONYMOUS;\n    }\n    return propValue.constructor.name;\n  }\n\n  ReactPropTypes.checkPropTypes = checkPropTypes;\n  ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;\n  ReactPropTypes.PropTypes = ReactPropTypes;\n\n  return ReactPropTypes;\n};\n", "/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n  var ReactIs = require('react-is');\n\n  // By explicitly using `prop-types` you are opting into new development behavior.\n  // http://fb.me/prop-types-in-prod\n  var throwOnDirectAccess = true;\n  module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n  // By explicitly using `prop-types` you are opting into new production behavior.\n  // http://fb.me/prop-types-in-prod\n  module.exports = require('./factoryWithThrowingShims')();\n}\n", "// @flow\nimport type { Window } from '../types';\ndeclare function getWindow(node: Node | Window): Window;\n\nexport default function getWindow(node) {\n  if (node == null) {\n    return window;\n  }\n\n  if (node.toString() !== '[object Window]') {\n    const ownerDocument = node.ownerDocument;\n    return ownerDocument ? ownerDocument.defaultView || window : window;\n  }\n\n  return node;\n}\n", "// @flow\nimport getWindow from './getWindow';\n\ndeclare function isElement(node: mixed): boolean %checks(node instanceof\n  Element);\nfunction isElement(node) {\n  const OwnElement = getWindow(node).Element;\n  return node instanceof OwnElement || node instanceof Element;\n}\n\ndeclare function isHTMLElement(node: mixed): boolean %checks(node instanceof\n  HTMLElement);\nfunction isHTMLElement(node) {\n  const OwnElement = getWindow(node).HTMLElement;\n  return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\ndeclare function isShadowRoot(node: mixed): boolean %checks(node instanceof\n  ShadowRoot);\nfunction isShadowRoot(node) {\n  // IE 11 has no ShadowRoot\n  if (typeof ShadowRoot === 'undefined') {\n    return false;\n  }\n  const OwnElement = getWindow(node).ShadowRoot;\n  return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };\n", "// @flow\nexport const max = Math.max;\nexport const min = Math.min;\nexport const round = Math.round;\n", "// @flow\ntype Navigator = Navigator & { userAgentData?: NavigatorUAData };\n\ninterface NavigatorUAData {\n  brands: Array<{ brand: string, version: string }>;\n  mobile: boolean;\n  platform: string;\n}\n\nexport default function getUAString(): string {\n  const uaData = (navigator: Navigator).userAgentData;\n\n  if (uaData?.brands && Array.isArray(uaData.brands)) {\n    return uaData.brands\n      .map((item) => `${item.brand}/${item.version}`)\n      .join(' ');\n  }\n\n  return navigator.userAgent;\n}\n", "// @flow\nimport getUAString from '../utils/userAgent';\n\nexport default function isLayoutViewport() {\n  return !/^((?!chrome|android).)*safari/i.test(getUAString());\n}\n", "// @flow\nimport type { ClientRectObject, VirtualElement } from '../types';\nimport { isElement, isHTMLElement } from './instanceOf';\nimport { round } from '../utils/math';\nimport getWindow from './getWindow';\nimport isLayoutViewport from './isLayoutViewport';\n\nexport default function getBoundingClientRect(\n  element: Element | VirtualElement,\n  includeScale: boolean = false,\n  isFixedStrategy: boolean = false\n): ClientRectObject {\n  const clientRect = element.getBoundingClientRect();\n  let scaleX = 1;\n  let scaleY = 1;\n\n  if (includeScale && isHTMLElement(element)) {\n    scaleX =\n      (element: HTMLElement).offsetWidth > 0\n        ? round(clientRect.width) / (element: HTMLElement).offsetWidth || 1\n        : 1;\n    scaleY =\n      (element: HTMLElement).offsetHeight > 0\n        ? round(clientRect.height) / (element: HTMLElement).offsetHeight || 1\n        : 1;\n  }\n\n  const { visualViewport } = isElement(element) ? getWindow(element) : window;\n  const addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n\n  const x =\n    (clientRect.left +\n      (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) /\n    scaleX;\n  const y =\n    (clientRect.top +\n      (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) /\n    scaleY;\n  const width = clientRect.width / scaleX;\n  const height = clientRect.height / scaleY;\n\n  return {\n    width,\n    height,\n    top: y,\n    right: x + width,\n    bottom: y + height,\n    left: x,\n    x,\n    y,\n  };\n}\n", "// @flow\nimport getWindow from './getWindow';\nimport type { Window } from '../types';\n\nexport default function getWindowScroll(node: Node | Window) {\n  const win = getWindow(node);\n  const scrollLeft = win.pageXOffset;\n  const scrollTop = win.pageYOffset;\n\n  return {\n    scrollLeft,\n    scrollTop,\n  };\n}\n", "// @flow\n\nexport default function getHTMLElementScroll(element: HTMLElement) {\n  return {\n    scrollLeft: element.scrollLeft,\n    scrollTop: element.scrollTop,\n  };\n}\n", "// @flow\nimport getWindowScroll from './getWindowScroll';\nimport getWindow from './getWindow';\nimport { isHTMLElement } from './instanceOf';\nimport getHTMLElementScroll from './getHTMLElementScroll';\nimport type { Window } from '../types';\n\nexport default function getNodeScroll(node: Node | Window) {\n  if (node === getWindow(node) || !isHTMLElement(node)) {\n    return getWindowScroll(node);\n  } else {\n    return getHTMLElementScroll(node);\n  }\n}\n", "// @flow\nimport type { Window } from '../types';\n\nexport default function getNodeName(element: ?Node | Window): ?string {\n  return element ? (element.nodeName || '').toLowerCase() : null;\n}\n", "// @flow\nimport { isElement } from './instanceOf';\nimport type { Window } from '../types';\n\nexport default function getDocumentElement(\n  element: Element | Window\n): HTMLElement {\n  // $FlowFixMe[incompatible-return]: assume body is always available\n  return (\n    (isElement(element)\n      ? element.ownerDocument\n      : // $FlowFixMe[prop-missing]\n        element.document) || window.document\n  ).documentElement;\n}\n", "// @flow\nimport getBoundingClientRect from './getBoundingClientRect';\nimport getDocumentElement from './getDocumentElement';\nimport getWindowScroll from './getWindowScroll';\n\nexport default function getWindowScrollBarX(element: Element): number {\n  // If <html> has a CSS width greater than the viewport, then this will be\n  // incorrect for RTL.\n  // Popper 1 is broken in this case and never had a bug report so let's assume\n  // it's not an issue. I don't think anyone ever specifies width on <html>\n  // anyway.\n  // Browsers where the left scrollbar doesn't cause an issue report `0` for\n  // this (e.g. Edge 2019, IE11, Safari)\n  return (\n    getBoundingClientRect(getDocumentElement(element)).left +\n    getWindowScroll(element).scrollLeft\n  );\n}\n", "// @flow\nimport getWindow from './getWindow';\n\nexport default function getComputedStyle(\n  element: Element\n): CSSStyleDeclaration {\n  return getWindow(element).getComputedStyle(element);\n}\n", "// @flow\nimport getComputedStyle from './getComputedStyle';\n\nexport default function isScrollParent(element: HTMLElement): boolean {\n  // Firefox wants us to check `-x` and `-y` variations as well\n  const { overflow, overflowX, overflowY } = getComputedStyle(element);\n  return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}\n", "// @flow\nimport type { Rect, VirtualElement, Window } from '../types';\nimport getBoundingClientRect from './getBoundingClientRect';\nimport getNodeScroll from './getNodeScroll';\nimport getNodeName from './getNodeName';\nimport { isHTMLElement } from './instanceOf';\nimport getWindowScrollBarX from './getWindowScrollBarX';\nimport getDocumentElement from './getDocumentElement';\nimport isScrollParent from './isScrollParent';\nimport { round } from '../utils/math';\n\nfunction isElementScaled(element: HTMLElement) {\n  const rect = element.getBoundingClientRect();\n  const scaleX = round(rect.width) / element.offsetWidth || 1;\n  const scaleY = round(rect.height) / element.offsetHeight || 1;\n\n  return scaleX !== 1 || scaleY !== 1;\n}\n\n// Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\nexport default function getCompositeRect(\n  elementOrVirtualElement: Element | VirtualElement,\n  offsetParent: Element | Window,\n  isFixed: boolean = false\n): Rect {\n  const isOffsetParentAnElement = isHTMLElement(offsetParent);\n  const offsetParentIsScaled =\n    isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n  const documentElement = getDocumentElement(offsetParent);\n  const rect = getBoundingClientRect(\n    elementOrVirtualElement,\n    offsetParentIsScaled,\n    isFixed\n  );\n\n  let scroll = { scrollLeft: 0, scrollTop: 0 };\n  let offsets = { x: 0, y: 0 };\n\n  if (isOffsetParentAnElement || (!isOffsetParentAnElement && !isFixed)) {\n    if (\n      getNodeName(offsetParent) !== 'body' ||\n      // https://github.com/popperjs/popper-core/issues/1078\n      isScrollParent(documentElement)\n    ) {\n      scroll = getNodeScroll(offsetParent);\n    }\n\n    if (isHTMLElement(offsetParent)) {\n      offsets = getBoundingClientRect(offsetParent, true);\n      offsets.x += offsetParent.clientLeft;\n      offsets.y += offsetParent.clientTop;\n    } else if (documentElement) {\n      offsets.x = getWindowScrollBarX(documentElement);\n    }\n  }\n\n  return {\n    x: rect.left + scroll.scrollLeft - offsets.x,\n    y: rect.top + scroll.scrollTop - offsets.y,\n    width: rect.width,\n    height: rect.height,\n  };\n}\n", "// @flow\nimport type { Rect } from '../types';\nimport getBoundingClientRect from './getBoundingClientRect';\n\n// Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\nexport default function getLayoutRect(element: HTMLElement): Rect {\n  const clientRect = getBoundingClientRect(element);\n\n  // Use the clientRect sizes if it's not been transformed.\n  // Fixes https://github.com/popperjs/popper-core/issues/1223\n  let width = element.offsetWidth;\n  let height = element.offsetHeight;\n\n  if (Math.abs(clientRect.width - width) <= 1) {\n    width = clientRect.width;\n  }\n\n  if (Math.abs(clientRect.height - height) <= 1) {\n    height = clientRect.height;\n  }\n\n  return {\n    x: element.offsetLeft,\n    y: element.offsetTop,\n    width,\n    height,\n  };\n}\n", "// @flow\nimport getNodeName from './getNodeName';\nimport getDocumentElement from './getDocumentElement';\nimport { isShadowRoot } from './instanceOf';\n\nexport default function getParentNode(element: Node | ShadowRoot): Node {\n  if (getNodeName(element) === 'html') {\n    return element;\n  }\n\n  return (\n    // this is a quicker (but less type safe) way to save quite some bytes from the bundle\n    // $FlowFixMe[incompatible-return]\n    // $FlowFixMe[prop-missing]\n    element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n    element.parentNode || // DOM Element detected\n    (isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n    // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n    getDocumentElement(element) // fallback\n  );\n}\n", "// @flow\nimport getParentNode from './getParentNode';\nimport isScrollParent from './isScrollParent';\nimport getNodeName from './getNodeName';\nimport { isHTMLElement } from './instanceOf';\n\nexport default function getScrollParent(node: Node): HTMLElement {\n  if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n    // $FlowFixMe[incompatible-return]: assume body is always available\n    return node.ownerDocument.body;\n  }\n\n  if (isHTMLElement(node) && isScrollParent(node)) {\n    return node;\n  }\n\n  return getScrollParent(getParentNode(node));\n}\n", "// @flow\nimport getScrollParent from './getScrollParent';\nimport getParentNode from './getParentNode';\nimport getWindow from './getWindow';\nimport type { Window, VisualViewport } from '../types';\nimport isScrollParent from './isScrollParent';\n\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\nexport default function listScrollParents(\n  element: Node,\n  list: Array<Element | Window> = []\n): Array<Element | Window | VisualViewport> {\n  const scrollParent = getScrollParent(element);\n  const isBody = scrollParent === element.ownerDocument?.body;\n  const win = getWindow(scrollParent);\n  const target = isBody\n    ? [win].concat(\n        win.visualViewport || [],\n        isScrollParent(scrollParent) ? scrollParent : []\n      )\n    : scrollParent;\n  const updatedList = list.concat(target);\n\n  return isBody\n    ? updatedList\n    : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n      updatedList.concat(listScrollParents(getParentNode(target)));\n}\n", "// @flow\nimport getNodeName from './getNodeName';\n\nexport default function isTableElement(element: Element): boolean {\n  return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}\n", "// @flow\nimport getWindow from './getWindow';\nimport getNodeName from './getNodeName';\nimport getComputedStyle from './getComputedStyle';\nimport { isHTMLElement, isShadowRoot } from './instanceOf';\nimport isTableElement from './isTableElement';\nimport getParentNode from './getParentNode';\nimport getUAString from '../utils/userAgent';\n\nfunction getTrueOffsetParent(element: Element): ?Element {\n  if (\n    !isHTMLElement(element) ||\n    // https://github.com/popperjs/popper-core/issues/837\n    getComputedStyle(element).position === 'fixed'\n  ) {\n    return null;\n  }\n\n  return element.offsetParent;\n}\n\n// `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\nfunction getContainingBlock(element: Element) {\n  const isFirefox = /firefox/i.test(getUAString());\n  const isIE = /Trident/i.test(getUAString());\n\n  if (isIE && isHTMLElement(element)) {\n    // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n    const elementCss = getComputedStyle(element);\n    if (elementCss.position === 'fixed') {\n      return null;\n    }\n  }\n\n  let currentNode = getParentNode(element);\n\n  if (isShadowRoot(currentNode)) {\n    currentNode = currentNode.host;\n  }\n\n  while (\n    isHTMLElement(currentNode) &&\n    ['html', 'body'].indexOf(getNodeName(currentNode)) < 0\n  ) {\n    const css = getComputedStyle(currentNode);\n\n    // This is non-exhaustive but covers the most common CSS properties that\n    // create a containing block.\n    // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n    if (\n      css.transform !== 'none' ||\n      css.perspective !== 'none' ||\n      css.contain === 'paint' ||\n      ['transform', 'perspective'].indexOf(css.willChange) !== -1 ||\n      (isFirefox && css.willChange === 'filter') ||\n      (isFirefox && css.filter && css.filter !== 'none')\n    ) {\n      return currentNode;\n    } else {\n      currentNode = currentNode.parentNode;\n    }\n  }\n\n  return null;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nexport default function getOffsetParent(element: Element) {\n  const window = getWindow(element);\n\n  let offsetParent = getTrueOffsetParent(element);\n\n  while (\n    offsetParent &&\n    isTableElement(offsetParent) &&\n    getComputedStyle(offsetParent).position === 'static'\n  ) {\n    offsetParent = getTrueOffsetParent(offsetParent);\n  }\n\n  if (\n    offsetParent &&\n    (getNodeName(offsetParent) === 'html' ||\n      (getNodeName(offsetParent) === 'body' &&\n        getComputedStyle(offsetParent).position === 'static'))\n  ) {\n    return window;\n  }\n\n  return offsetParent || getContainingBlock(element) || window;\n}\n", "// @flow\nexport const top: 'top' = 'top';\nexport const bottom: 'bottom' = 'bottom';\nexport const right: 'right' = 'right';\nexport const left: 'left' = 'left';\nexport const auto: 'auto' = 'auto';\nexport type BasePlacement =\n  | typeof top\n  | typeof bottom\n  | typeof right\n  | typeof left;\nexport const basePlacements: Array<BasePlacement> = [top, bottom, right, left];\n\nexport const start: 'start' = 'start';\nexport const end: 'end' = 'end';\nexport type Variation = typeof start | typeof end;\n\nexport const clippingParents: 'clippingParents' = 'clippingParents';\nexport const viewport: 'viewport' = 'viewport';\nexport type Boundary = Element | Array<Element> | typeof clippingParents;\nexport type RootBoundary = typeof viewport | 'document';\n\nexport const popper: 'popper' = 'popper';\nexport const reference: 'reference' = 'reference';\nexport type Context = typeof popper | typeof reference;\n\nexport type VariationPlacement =\n  | 'top-start'\n  | 'top-end'\n  | 'bottom-start'\n  | 'bottom-end'\n  | 'right-start'\n  | 'right-end'\n  | 'left-start'\n  | 'left-end';\nexport type AutoPlacement = 'auto' | 'auto-start' | 'auto-end';\nexport type ComputedPlacement = VariationPlacement | BasePlacement;\nexport type Placement = AutoPlacement | BasePlacement | VariationPlacement;\n\nexport const variationPlacements: Array<VariationPlacement> = basePlacements.reduce(\n  (acc: Array<VariationPlacement>, placement: BasePlacement) =>\n    acc.concat([(`${placement}-${start}`: any), (`${placement}-${end}`: any)]),\n  []\n);\nexport const placements: Array<Placement> = [...basePlacements, auto].reduce(\n  (\n    acc: Array<Placement>,\n    placement: BasePlacement | typeof auto\n  ): Array<Placement> =>\n    acc.concat([\n      placement,\n      (`${placement}-${start}`: any),\n      (`${placement}-${end}`: any),\n    ]),\n  []\n);\n\n// modifiers that need to read the DOM\nexport const beforeRead: 'beforeRead' = 'beforeRead';\nexport const read: 'read' = 'read';\nexport const afterRead: 'afterRead' = 'afterRead';\n// pure-logic modifiers\nexport const beforeMain: 'beforeMain' = 'beforeMain';\nexport const main: 'main' = 'main';\nexport const afterMain: 'afterMain' = 'afterMain';\n// modifier with the purpose to write to the DOM (or write into a framework state)\nexport const beforeWrite: 'beforeWrite' = 'beforeWrite';\nexport const write: 'write' = 'write';\nexport const afterWrite: 'afterWrite' = 'afterWrite';\nexport const modifierPhases: Array<ModifierPhases> = [\n  beforeRead,\n  read,\n  afterRead,\n  beforeMain,\n  main,\n  afterMain,\n  beforeWrite,\n  write,\n  afterWrite,\n];\n\nexport type ModifierPhases =\n  | typeof beforeRead\n  | typeof read\n  | typeof afterRead\n  | typeof beforeMain\n  | typeof main\n  | typeof afterMain\n  | typeof beforeWrite\n  | typeof write\n  | typeof afterWrite;\n", "// @flow\nimport type { Modifier } from '../types';\nimport { modifierPhases } from '../enums';\n\n// source: https://stackoverflow.com/questions/49875255\nfunction order(modifiers) {\n  const map = new Map();\n  const visited = new Set();\n  const result = [];\n\n  modifiers.forEach(modifier => {\n    map.set(modifier.name, modifier);\n  });\n\n  // On visiting object, check for its dependencies and visit them recursively\n  function sort(modifier: Modifier<any, any>) {\n    visited.add(modifier.name);\n\n    const requires = [\n      ...(modifier.requires || []),\n      ...(modifier.requiresIfExists || []),\n    ];\n\n    requires.forEach(dep => {\n      if (!visited.has(dep)) {\n        const depModifier = map.get(dep);\n\n        if (depModifier) {\n          sort(depModifier);\n        }\n      }\n    });\n\n    result.push(modifier);\n  }\n\n  modifiers.forEach(modifier => {\n    if (!visited.has(modifier.name)) {\n      // check for visited object\n      sort(modifier);\n    }\n  });\n\n  return result;\n}\n\nexport default function orderModifiers(\n  modifiers: Array<Modifier<any, any>>\n): Array<Modifier<any, any>> {\n  // order based on dependencies\n  const orderedModifiers = order(modifiers);\n\n  // order based on phase\n  return modifierPhases.reduce((acc, phase) => {\n    return acc.concat(\n      orderedModifiers.filter(modifier => modifier.phase === phase)\n    );\n  }, []);\n}\n", "// @flow\n\nexport default function debounce<T>(fn: Function): () => Promise<T> {\n  let pending;\n  return () => {\n    if (!pending) {\n      pending = new Promise<T>(resolve => {\n        Promise.resolve().then(() => {\n          pending = undefined;\n          resolve(fn());\n        });\n      });\n    }\n\n    return pending;\n  };\n}\n", "// @flow\nimport type { Modifier } from '../types';\n\nexport default function mergeByName(\n  modifiers: Array<$Shape<Modifier<any, any>>>\n): Array<$Shape<Modifier<any, any>>> {\n  const merged = modifiers.reduce((merged, current) => {\n    const existing = merged[current.name];\n    merged[current.name] = existing\n      ? {\n          ...existing,\n          ...current,\n          options: { ...existing.options, ...current.options },\n          data: { ...existing.data, ...current.data },\n        }\n      : current;\n    return merged;\n  }, {});\n\n  // IE11 does not support Object.values\n  return Object.keys(merged).map(key => merged[key]);\n}\n", "// @flow\nimport getWindow from './getWindow';\nimport getDocumentElement from './getDocumentElement';\nimport getWindowScrollBarX from './getWindowScrollBarX';\nimport isLayoutViewport from './isLayoutViewport';\nimport type { PositioningStrategy } from '../types';\n\nexport default function getViewportRect(\n  element: Element,\n  strategy: PositioningStrategy\n) {\n  const win = getWindow(element);\n  const html = getDocumentElement(element);\n  const visualViewport = win.visualViewport;\n\n  let width = html.clientWidth;\n  let height = html.clientHeight;\n  let x = 0;\n  let y = 0;\n\n  if (visualViewport) {\n    width = visualViewport.width;\n    height = visualViewport.height;\n\n    const layoutViewport = isLayoutViewport();\n\n    if (layoutViewport || (!layoutViewport && strategy === 'fixed')) {\n      x = visualViewport.offsetLeft;\n      y = visualViewport.offsetTop;\n    }\n  }\n\n  return {\n    width,\n    height,\n    x: x + getWindowScrollBarX(element),\n    y,\n  };\n}\n", "// @flow\nimport type { Rect } from '../types';\nimport getDocumentElement from './getDocumentElement';\nimport getComputedStyle from './getComputedStyle';\nimport getWindowScrollBarX from './getWindowScrollBarX';\nimport getWindowScroll from './getWindowScroll';\nimport { max } from '../utils/math';\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable\nexport default function getDocumentRect(element: HTMLElement): Rect {\n  const html = getDocumentElement(element);\n  const winScroll = getWindowScroll(element);\n  const body = element.ownerDocument?.body;\n\n  const width = max(\n    html.scrollWidth,\n    html.clientWidth,\n    body ? body.scrollWidth : 0,\n    body ? body.clientWidth : 0\n  );\n  const height = max(\n    html.scrollHeight,\n    html.clientHeight,\n    body ? body.scrollHeight : 0,\n    body ? body.clientHeight : 0\n  );\n\n  let x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n  const y = -winScroll.scrollTop;\n\n  if (getComputedStyle(body || html).direction === 'rtl') {\n    x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n  }\n\n  return { width, height, x, y };\n}\n", "// @flow\nimport { isShadowRoot } from './instanceOf';\n\nexport default function contains(parent: Element, child: Element) {\n  const rootNode = child.getRootNode && child.getRootNode();\n\n  // First, attempt with faster native method\n  if (parent.contains(child)) {\n    return true;\n  }\n  // then fallback to custom implementation with Shadow DOM support\n  else if (rootNode && isShadowRoot(rootNode)) {\n    let next = child;\n    do {\n      if (next && parent.isSameNode(next)) {\n        return true;\n      }\n      // $FlowFixMe[prop-missing]: need a better way to handle this...\n      next = next.parentNode || next.host;\n    } while (next);\n  }\n\n  // Give up, the result is false\n  return false;\n}\n", "// @flow\nimport type { Rect, ClientRectObject } from '../types';\n\nexport default function rectToClientRect(rect: Rect): ClientRectObject {\n  return {\n    ...rect,\n    left: rect.x,\n    top: rect.y,\n    right: rect.x + rect.width,\n    bottom: rect.y + rect.height,\n  };\n}\n", "// @flow\nimport type { ClientRectObject, PositioningStrategy } from '../types';\nimport type { Boundary, RootBoundary } from '../enums';\nimport { viewport } from '../enums';\nimport getViewportRect from './getViewportRect';\nimport getDocumentRect from './getDocumentRect';\nimport listScrollParents from './listScrollParents';\nimport getOffsetParent from './getOffsetParent';\nimport getDocumentElement from './getDocumentElement';\nimport getComputedStyle from './getComputedStyle';\nimport { isElement, isHTMLElement } from './instanceOf';\nimport getBoundingClientRect from './getBoundingClientRect';\nimport getParentNode from './getParentNode';\nimport contains from './contains';\nimport getNodeName from './getNodeName';\nimport rectToClientRect from '../utils/rectToClientRect';\nimport { max, min } from '../utils/math';\n\nfunction getInnerBoundingClientRect(\n  element: Element,\n  strategy: PositioningStrategy\n) {\n  const rect = getBoundingClientRect(element, false, strategy === 'fixed');\n\n  rect.top = rect.top + element.clientTop;\n  rect.left = rect.left + element.clientLeft;\n  rect.bottom = rect.top + element.clientHeight;\n  rect.right = rect.left + element.clientWidth;\n  rect.width = element.clientWidth;\n  rect.height = element.clientHeight;\n  rect.x = rect.left;\n  rect.y = rect.top;\n\n  return rect;\n}\n\nfunction getClientRectFromMixedType(\n  element: Element,\n  clippingParent: Element | RootBoundary,\n  strategy: PositioningStrategy\n): ClientRectObject {\n  return clippingParent === viewport\n    ? rectToClientRect(getViewportRect(element, strategy))\n    : isElement(clippingParent)\n    ? getInnerBoundingClientRect(clippingParent, strategy)\n    : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n}\n\n// A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\nfunction getClippingParents(element: Element): Array<Element> {\n  const clippingParents = listScrollParents(getParentNode(element));\n  const canEscapeClipping =\n    ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n  const clipperElement =\n    canEscapeClipping && isHTMLElement(element)\n      ? getOffsetParent(element)\n      : element;\n\n  if (!isElement(clipperElement)) {\n    return [];\n  }\n\n  // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n  return clippingParents.filter(\n    (clippingParent) =>\n      isElement(clippingParent) &&\n      contains(clippingParent, clipperElement) &&\n      getNodeName(clippingParent) !== 'body'\n  );\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping parents\nexport default function getClippingRect(\n  element: Element,\n  boundary: Boundary,\n  rootBoundary: RootBoundary,\n  strategy: PositioningStrategy\n): ClientRectObject {\n  const mainClippingParents =\n    boundary === 'clippingParents'\n      ? getClippingParents(element)\n      : [].concat(boundary);\n  const clippingParents = [...mainClippingParents, rootBoundary];\n  const firstClippingParent = clippingParents[0];\n\n  const clippingRect = clippingParents.reduce((accRect, clippingParent) => {\n    const rect = getClientRectFromMixedType(element, clippingParent, strategy);\n\n    accRect.top = max(rect.top, accRect.top);\n    accRect.right = min(rect.right, accRect.right);\n    accRect.bottom = min(rect.bottom, accRect.bottom);\n    accRect.left = max(rect.left, accRect.left);\n\n    return accRect;\n  }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n\n  clippingRect.width = clippingRect.right - clippingRect.left;\n  clippingRect.height = clippingRect.bottom - clippingRect.top;\n  clippingRect.x = clippingRect.left;\n  clippingRect.y = clippingRect.top;\n\n  return clippingRect;\n}\n", "// @flow\nimport { type BasePlacement, type Placement, auto } from '../enums';\n\nexport default function getBasePlacement(\n  placement: Placement | typeof auto\n): BasePlacement {\n  return (placement.split('-')[0]: any);\n}\n", "// @flow\nimport { type Variation, type Placement } from '../enums';\n\nexport default function getVariation(placement: Placement): ?Variation {\n  return (placement.split('-')[1]: any);\n}\n", "// @flow\nimport type { Placement } from '../enums';\n\nexport default function getMainAxisFromPlacement(\n  placement: Placement\n): 'x' | 'y' {\n  return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}\n", "// @flow\nimport getBasePlacement from './getBasePlacement';\nimport getVariation from './getVariation';\nimport getMainAxisFromPlacement from './getMainAxisFromPlacement';\nimport type {\n  Rect,\n  PositioningStrategy,\n  Offsets,\n  ClientRectObject,\n} from '../types';\nimport { top, right, bottom, left, start, end, type Placement } from '../enums';\n\nexport default function computeOffsets({\n  reference,\n  element,\n  placement,\n}: {\n  reference: Rect | ClientRectObject,\n  element: Rect | ClientRectObject,\n  strategy: PositioningStrategy,\n  placement?: Placement,\n}): Offsets {\n  const basePlacement = placement ? getBasePlacement(placement) : null;\n  const variation = placement ? getVariation(placement) : null;\n  const commonX = reference.x + reference.width / 2 - element.width / 2;\n  const commonY = reference.y + reference.height / 2 - element.height / 2;\n\n  let offsets;\n  switch (basePlacement) {\n    case top:\n      offsets = {\n        x: commonX,\n        y: reference.y - element.height,\n      };\n      break;\n    case bottom:\n      offsets = {\n        x: commonX,\n        y: reference.y + reference.height,\n      };\n      break;\n    case right:\n      offsets = {\n        x: reference.x + reference.width,\n        y: commonY,\n      };\n      break;\n    case left:\n      offsets = {\n        x: reference.x - element.width,\n        y: commonY,\n      };\n      break;\n    default:\n      offsets = {\n        x: reference.x,\n        y: reference.y,\n      };\n  }\n\n  const mainAxis = basePlacement\n    ? getMainAxisFromPlacement(basePlacement)\n    : null;\n\n  if (mainAxis != null) {\n    const len = mainAxis === 'y' ? 'height' : 'width';\n\n    switch (variation) {\n      case start:\n        offsets[mainAxis] =\n          offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n        break;\n      case end:\n        offsets[mainAxis] =\n          offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n        break;\n      default:\n    }\n  }\n\n  return offsets;\n}\n", "// @flow\nimport type { SideObject } from '../types';\n\nexport default function getFreshSideObject(): SideObject {\n  return {\n    top: 0,\n    right: 0,\n    bottom: 0,\n    left: 0,\n  };\n}\n", "// @flow\nimport type { SideObject } from '../types';\nimport getFreshSideObject from './getFreshSideObject';\n\nexport default function mergePaddingObject(\n  paddingObject: $Shape<SideObject>\n): SideObject {\n  return {\n    ...getFreshSideObject(),\n    ...paddingObject,\n  };\n}\n", "// @flow\n\nexport default function expandToHashMap<\n  T: number | string | boolean,\n  K: string\n>(value: T, keys: Array<K>): { [key: string]: T } {\n  return keys.reduce((hashMap, key) => {\n    hashMap[key] = value;\n    return hashMap;\n  }, {});\n}\n", "// @flow\nimport type { State, SideObject, Padding, PositioningStrategy } from '../types';\nimport type { Placement, Boundary, RootBoundary, Context } from '../enums';\nimport getClippingRect from '../dom-utils/getClippingRect';\nimport getDocumentElement from '../dom-utils/getDocumentElement';\nimport getBoundingClientRect from '../dom-utils/getBoundingClientRect';\nimport computeOffsets from './computeOffsets';\nimport rectToClientRect from './rectToClientRect';\nimport {\n  clippingParents,\n  reference,\n  popper,\n  bottom,\n  top,\n  right,\n  basePlacements,\n  viewport,\n} from '../enums';\nimport { isElement } from '../dom-utils/instanceOf';\nimport mergePaddingObject from './mergePaddingObject';\nimport expandToHashMap from './expandToHashMap';\n\n// eslint-disable-next-line import/no-unused-modules\nexport type Options = {\n  placement: Placement,\n  strategy: PositioningStrategy,\n  boundary: Boundary,\n  rootBoundary: RootBoundary,\n  elementContext: Context,\n  altBoundary: boolean,\n  padding: Padding,\n};\n\nexport default function detectOverflow(\n  state: State,\n  options: $Shape<Options> = {}\n): SideObject {\n  const {\n    placement = state.placement,\n    strategy = state.strategy,\n    boundary = clippingParents,\n    rootBoundary = viewport,\n    elementContext = popper,\n    altBoundary = false,\n    padding = 0,\n  } = options;\n\n  const paddingObject = mergePaddingObject(\n    typeof padding !== 'number'\n      ? padding\n      : expandToHashMap(padding, basePlacements)\n  );\n\n  const altContext = elementContext === popper ? reference : popper;\n\n  const popperRect = state.rects.popper;\n  const element = state.elements[altBoundary ? altContext : elementContext];\n\n  const clippingClientRect = getClippingRect(\n    isElement(element)\n      ? element\n      : element.contextElement || getDocumentElement(state.elements.popper),\n    boundary,\n    rootBoundary,\n    strategy\n  );\n\n  const referenceClientRect = getBoundingClientRect(state.elements.reference);\n\n  const popperOffsets = computeOffsets({\n    reference: referenceClientRect,\n    element: popperRect,\n    strategy: 'absolute',\n    placement,\n  });\n\n  const popperClientRect = rectToClientRect({\n    ...popperRect,\n    ...popperOffsets,\n  });\n\n  const elementClientRect =\n    elementContext === popper ? popperClientRect : referenceClientRect;\n\n  // positive = overflowing the clipping rect\n  // 0 or negative = within the clipping rect\n  const overflowOffsets = {\n    top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n    bottom:\n      elementClientRect.bottom -\n      clippingClientRect.bottom +\n      paddingObject.bottom,\n    left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n    right:\n      elementClientRect.right - clippingClientRect.right + paddingObject.right,\n  };\n\n  const offsetData = state.modifiersData.offset;\n\n  // Offsets can be applied only to the popper element\n  if (elementContext === popper && offsetData) {\n    const offset = offsetData[placement];\n\n    Object.keys(overflowOffsets).forEach((key) => {\n      const multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n      const axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n      overflowOffsets[key] += offset[axis] * multiply;\n    });\n  }\n\n  return overflowOffsets;\n}\n", "// @flow\nimport type {\n  State,\n  OptionsGeneric,\n  Modifier,\n  Instance,\n  VirtualElement,\n} from './types';\nimport getCompositeRect from './dom-utils/getCompositeRect';\nimport getLayoutRect from './dom-utils/getLayoutRect';\nimport listScrollParents from './dom-utils/listScrollParents';\nimport getOffsetParent from './dom-utils/getOffsetParent';\nimport orderModifiers from './utils/orderModifiers';\nimport debounce from './utils/debounce';\nimport mergeByName from './utils/mergeByName';\nimport detectOverflow from './utils/detectOverflow';\nimport { isElement } from './dom-utils/instanceOf';\n\nconst DEFAULT_OPTIONS: OptionsGeneric<any> = {\n  placement: 'bottom',\n  modifiers: [],\n  strategy: 'absolute',\n};\n\ntype PopperGeneratorArgs = {\n  defaultModifiers?: Array<Modifier<any, any>>,\n  defaultOptions?: $Shape<OptionsGeneric<any>>,\n};\n\nfunction areValidElements(...args: Array<any>): boolean {\n  return !args.some(\n    (element) =>\n      !(element && typeof element.getBoundingClientRect === 'function')\n  );\n}\n\nexport function popperGenerator(generatorOptions: PopperGeneratorArgs = {}) {\n  const { defaultModifiers = [], defaultOptions = DEFAULT_OPTIONS } =\n    generatorOptions;\n\n  return function createPopper<TModifier: $Shape<Modifier<any, any>>>(\n    reference: Element | VirtualElement,\n    popper: HTMLElement,\n    options: $Shape<OptionsGeneric<TModifier>> = defaultOptions\n  ): Instance {\n    let state: $Shape<State> = {\n      placement: 'bottom',\n      orderedModifiers: [],\n      options: { ...DEFAULT_OPTIONS, ...defaultOptions },\n      modifiersData: {},\n      elements: {\n        reference,\n        popper,\n      },\n      attributes: {},\n      styles: {},\n    };\n\n    let effectCleanupFns: Array<() => void> = [];\n    let isDestroyed = false;\n\n    const instance = {\n      state,\n      setOptions(setOptionsAction) {\n        const options =\n          typeof setOptionsAction === 'function'\n            ? setOptionsAction(state.options)\n            : setOptionsAction;\n\n        cleanupModifierEffects();\n\n        state.options = {\n          // $FlowFixMe[exponential-spread]\n          ...defaultOptions,\n          ...state.options,\n          ...options,\n        };\n\n        state.scrollParents = {\n          reference: isElement(reference)\n            ? listScrollParents(reference)\n            : reference.contextElement\n            ? listScrollParents(reference.contextElement)\n            : [],\n          popper: listScrollParents(popper),\n        };\n\n        // Orders the modifiers based on their dependencies and `phase`\n        // properties\n        const orderedModifiers = orderModifiers(\n          mergeByName([...defaultModifiers, ...state.options.modifiers])\n        );\n\n        // Strip out disabled modifiers\n        state.orderedModifiers = orderedModifiers.filter((m) => m.enabled);\n\n        runModifierEffects();\n\n        return instance.update();\n      },\n\n      // Sync update – it will always be executed, even if not necessary. This\n      // is useful for low frequency updates where sync behavior simplifies the\n      // logic.\n      // For high frequency updates (e.g. `resize` and `scroll` events), always\n      // prefer the async Popper#update method\n      forceUpdate() {\n        if (isDestroyed) {\n          return;\n        }\n\n        const { reference, popper } = state.elements;\n\n        // Don't proceed if `reference` or `popper` are not valid elements\n        // anymore\n        if (!areValidElements(reference, popper)) {\n          return;\n        }\n\n        // Store the reference and popper rects to be read by modifiers\n        state.rects = {\n          reference: getCompositeRect(\n            reference,\n            getOffsetParent(popper),\n            state.options.strategy === 'fixed'\n          ),\n          popper: getLayoutRect(popper),\n        };\n\n        // Modifiers have the ability to reset the current update cycle. The\n        // most common use case for this is the `flip` modifier changing the\n        // placement, which then needs to re-run all the modifiers, because the\n        // logic was previously ran for the previous placement and is therefore\n        // stale/incorrect\n        state.reset = false;\n\n        state.placement = state.options.placement;\n\n        // On each update cycle, the `modifiersData` property for each modifier\n        // is filled with the initial data specified by the modifier. This means\n        // it doesn't persist and is fresh on each update.\n        // To ensure persistent data, use `${name}#persistent`\n        state.orderedModifiers.forEach(\n          (modifier) =>\n            (state.modifiersData[modifier.name] = {\n              ...modifier.data,\n            })\n        );\n\n        for (let index = 0; index < state.orderedModifiers.length; index++) {\n          if (state.reset === true) {\n            state.reset = false;\n            index = -1;\n            continue;\n          }\n\n          const { fn, options = {}, name } = state.orderedModifiers[index];\n\n          if (typeof fn === 'function') {\n            state = fn({ state, options, name, instance }) || state;\n          }\n        }\n      },\n\n      // Async and optimistically optimized update – it will not be executed if\n      // not necessary (debounced to run at most once-per-tick)\n      update: debounce<$Shape<State>>(\n        () =>\n          new Promise<$Shape<State>>((resolve) => {\n            instance.forceUpdate();\n            resolve(state);\n          })\n      ),\n\n      destroy() {\n        cleanupModifierEffects();\n        isDestroyed = true;\n      },\n    };\n\n    if (!areValidElements(reference, popper)) {\n      return instance;\n    }\n\n    instance.setOptions(options).then((state) => {\n      if (!isDestroyed && options.onFirstUpdate) {\n        options.onFirstUpdate(state);\n      }\n    });\n\n    // Modifiers have the ability to execute arbitrary code before the first\n    // update cycle runs. They will be executed in the same order as the update\n    // cycle. This is useful when a modifier adds some persistent data that\n    // other modifiers need to use, but the modifier is run after the dependent\n    // one.\n    function runModifierEffects() {\n      state.orderedModifiers.forEach(({ name, options = {}, effect }) => {\n        if (typeof effect === 'function') {\n          const cleanupFn = effect({ state, name, instance, options });\n          const noopFn = () => {};\n          effectCleanupFns.push(cleanupFn || noopFn);\n        }\n      });\n    }\n\n    function cleanupModifierEffects() {\n      effectCleanupFns.forEach((fn) => fn());\n      effectCleanupFns = [];\n    }\n\n    return instance;\n  };\n}\n\nexport const createPopper = popperGenerator();\n\n// eslint-disable-next-line import/no-unused-modules\nexport { detectOverflow };\n", "// @flow\nimport type { ModifierArguments, Modifier } from '../types';\nimport getWindow from '../dom-utils/getWindow';\n\n// eslint-disable-next-line import/no-unused-modules\nexport type Options = {\n  scroll: boolean,\n  resize: boolean,\n};\n\nconst passive = { passive: true };\n\nfunction effect({ state, instance, options }: ModifierArguments<Options>) {\n  const { scroll = true, resize = true } = options;\n\n  const window = getWindow(state.elements.popper);\n  const scrollParents = [\n    ...state.scrollParents.reference,\n    ...state.scrollParents.popper,\n  ];\n\n  if (scroll) {\n    scrollParents.forEach(scrollParent => {\n      scrollParent.addEventListener('scroll', instance.update, passive);\n    });\n  }\n\n  if (resize) {\n    window.addEventListener('resize', instance.update, passive);\n  }\n\n  return () => {\n    if (scroll) {\n      scrollParents.forEach(scrollParent => {\n        scrollParent.removeEventListener('scroll', instance.update, passive);\n      });\n    }\n\n    if (resize) {\n      window.removeEventListener('resize', instance.update, passive);\n    }\n  };\n}\n\n// eslint-disable-next-line import/no-unused-modules\nexport type EventListenersModifier = Modifier<'eventListeners', Options>;\nexport default ({\n  name: 'eventListeners',\n  enabled: true,\n  phase: 'write',\n  fn: () => {},\n  effect,\n  data: {},\n}: EventListenersModifier);\n", "// @flow\nimport type { ModifierArguments, Modifier } from '../types';\nimport computeOffsets from '../utils/computeOffsets';\n\nfunction popperOffsets({ state, name }: ModifierArguments<{||}>) {\n  // Offsets are the actual position the popper needs to have to be\n  // properly positioned near its reference element\n  // This is the most basic placement, and will be adjusted by\n  // the modifiers in the next step\n  state.modifiersData[name] = computeOffsets({\n    reference: state.rects.reference,\n    element: state.rects.popper,\n    strategy: 'absolute',\n    placement: state.placement,\n  });\n}\n\n// eslint-disable-next-line import/no-unused-modules\nexport type PopperOffsetsModifier = Modifier<'popperOffsets', {||}>;\nexport default ({\n  name: 'popperOffsets',\n  enabled: true,\n  phase: 'read',\n  fn: popperOffsets,\n  data: {},\n}: PopperOffsetsModifier);\n", "// @flow\nimport type {\n  PositioningStrategy,\n  Offsets,\n  Modifier,\n  ModifierArguments,\n  Rect,\n  Window,\n} from '../types';\nimport {\n  type BasePlacement,\n  type Variation,\n  top,\n  left,\n  right,\n  bottom,\n  end,\n} from '../enums';\nimport getOffsetParent from '../dom-utils/getOffsetParent';\nimport getWindow from '../dom-utils/getWindow';\nimport getDocumentElement from '../dom-utils/getDocumentElement';\nimport getComputedStyle from '../dom-utils/getComputedStyle';\nimport getBasePlacement from '../utils/getBasePlacement';\nimport getVariation from '../utils/getVariation';\nimport { round } from '../utils/math';\n\n// eslint-disable-next-line import/no-unused-modules\nexport type RoundOffsets = (\n  offsets: $Shape<{ x: number, y: number, centerOffset: number }>\n) => Offsets;\n\n// eslint-disable-next-line import/no-unused-modules\nexport type Options = {\n  gpuAcceleration: boolean,\n  adaptive: boolean,\n  roundOffsets?: boolean | RoundOffsets,\n};\n\nconst unsetSides = {\n  top: 'auto',\n  right: 'auto',\n  bottom: 'auto',\n  left: 'auto',\n};\n\n// Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\nfunction roundOffsetsByDPR({ x, y }, win: Window): Offsets {\n  const dpr = win.devicePixelRatio || 1;\n\n  return {\n    x: round(x * dpr) / dpr || 0,\n    y: round(y * dpr) / dpr || 0,\n  };\n}\n\nexport function mapToStyles({\n  popper,\n  popperRect,\n  placement,\n  variation,\n  offsets,\n  position,\n  gpuAcceleration,\n  adaptive,\n  roundOffsets,\n  isFixed,\n}: {\n  popper: HTMLElement,\n  popperRect: Rect,\n  placement: BasePlacement,\n  variation: ?Variation,\n  offsets: $Shape<{ x: number, y: number, centerOffset: number }>,\n  position: PositioningStrategy,\n  gpuAcceleration: boolean,\n  adaptive: boolean,\n  roundOffsets: boolean | RoundOffsets,\n  isFixed: boolean,\n}) {\n  let { x = 0, y = 0 } = offsets;\n\n  ({ x, y } =\n    typeof roundOffsets === 'function' ? roundOffsets({ x, y }) : { x, y });\n\n  const hasX = offsets.hasOwnProperty('x');\n  const hasY = offsets.hasOwnProperty('y');\n\n  let sideX: string = left;\n  let sideY: string = top;\n\n  const win: Window = window;\n\n  if (adaptive) {\n    let offsetParent = getOffsetParent(popper);\n    let heightProp = 'clientHeight';\n    let widthProp = 'clientWidth';\n\n    if (offsetParent === getWindow(popper)) {\n      offsetParent = getDocumentElement(popper);\n\n      if (\n        getComputedStyle(offsetParent).position !== 'static' &&\n        position === 'absolute'\n      ) {\n        heightProp = 'scrollHeight';\n        widthProp = 'scrollWidth';\n      }\n    }\n\n    // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n    offsetParent = (offsetParent: Element);\n\n    if (\n      placement === top ||\n      ((placement === left || placement === right) && variation === end)\n    ) {\n      sideY = bottom;\n      const offsetY =\n        isFixed && offsetParent === win && win.visualViewport\n          ? win.visualViewport.height\n          : // $FlowFixMe[prop-missing]\n            offsetParent[heightProp];\n      y -= offsetY - popperRect.height;\n      y *= gpuAcceleration ? 1 : -1;\n    }\n\n    if (\n      placement === left ||\n      ((placement === top || placement === bottom) && variation === end)\n    ) {\n      sideX = right;\n      const offsetX =\n        isFixed && offsetParent === win && win.visualViewport\n          ? win.visualViewport.width\n          : // $FlowFixMe[prop-missing]\n            offsetParent[widthProp];\n      x -= offsetX - popperRect.width;\n      x *= gpuAcceleration ? 1 : -1;\n    }\n  }\n\n  const commonStyles = {\n    position,\n    ...(adaptive && unsetSides),\n  };\n\n  ({ x, y } =\n    roundOffsets === true\n      ? roundOffsetsByDPR({ x, y }, getWindow(popper))\n      : { x, y });\n\n  if (gpuAcceleration) {\n    return {\n      ...commonStyles,\n      [sideY]: hasY ? '0' : '',\n      [sideX]: hasX ? '0' : '',\n      // Layer acceleration can disable subpixel rendering which causes slightly\n      // blurry text on low PPI displays, so we want to use 2D transforms\n      // instead\n      transform:\n        (win.devicePixelRatio || 1) <= 1\n          ? `translate(${x}px, ${y}px)`\n          : `translate3d(${x}px, ${y}px, 0)`,\n    };\n  }\n\n  return {\n    ...commonStyles,\n    [sideY]: hasY ? `${y}px` : '',\n    [sideX]: hasX ? `${x}px` : '',\n    transform: '',\n  };\n}\n\nfunction computeStyles({ state, options }: ModifierArguments<Options>) {\n  const {\n    gpuAcceleration = true,\n    adaptive = true,\n    // defaults to use builtin `roundOffsetsByDPR`\n    roundOffsets = true,\n  } = options;\n\n  const commonStyles = {\n    placement: getBasePlacement(state.placement),\n    variation: getVariation(state.placement),\n    popper: state.elements.popper,\n    popperRect: state.rects.popper,\n    gpuAcceleration,\n    isFixed: state.options.strategy === 'fixed',\n  };\n\n  if (state.modifiersData.popperOffsets != null) {\n    state.styles.popper = {\n      ...state.styles.popper,\n      ...mapToStyles({\n        ...commonStyles,\n        offsets: state.modifiersData.popperOffsets,\n        position: state.options.strategy,\n        adaptive,\n        roundOffsets,\n      }),\n    };\n  }\n\n  if (state.modifiersData.arrow != null) {\n    state.styles.arrow = {\n      ...state.styles.arrow,\n      ...mapToStyles({\n        ...commonStyles,\n        offsets: state.modifiersData.arrow,\n        position: 'absolute',\n        adaptive: false,\n        roundOffsets,\n      }),\n    };\n  }\n\n  state.attributes.popper = {\n    ...state.attributes.popper,\n    'data-popper-placement': state.placement,\n  };\n}\n\n// eslint-disable-next-line import/no-unused-modules\nexport type ComputeStylesModifier = Modifier<'computeStyles', Options>;\nexport default ({\n  name: 'computeStyles',\n  enabled: true,\n  phase: 'beforeWrite',\n  fn: computeStyles,\n  data: {},\n}: ComputeStylesModifier);\n", "// @flow\nimport type { Modifier, ModifierArguments } from '../types';\nimport getNodeName from '../dom-utils/getNodeName';\nimport { isHTMLElement } from '../dom-utils/instanceOf';\n\n// This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles({ state }: ModifierArguments<{||}>) {\n  Object.keys(state.elements).forEach((name) => {\n    const style = state.styles[name] || {};\n\n    const attributes = state.attributes[name] || {};\n    const element = state.elements[name];\n\n    // arrow is optional + virtual elements\n    if (!isHTMLElement(element) || !getNodeName(element)) {\n      return;\n    }\n\n    // Flow doesn't support to extend this property, but it's the most\n    // effective way to apply styles to an HTMLElement\n    // $FlowFixMe[cannot-write]\n    Object.assign(element.style, style);\n\n    Object.keys(attributes).forEach((name) => {\n      const value = attributes[name];\n      if (value === false) {\n        element.removeAttribute(name);\n      } else {\n        element.setAttribute(name, value === true ? '' : value);\n      }\n    });\n  });\n}\n\nfunction effect({ state }: ModifierArguments<{||}>) {\n  const initialStyles = {\n    popper: {\n      position: state.options.strategy,\n      left: '0',\n      top: '0',\n      margin: '0',\n    },\n    arrow: {\n      position: 'absolute',\n    },\n    reference: {},\n  };\n\n  Object.assign(state.elements.popper.style, initialStyles.popper);\n  state.styles = initialStyles;\n\n  if (state.elements.arrow) {\n    Object.assign(state.elements.arrow.style, initialStyles.arrow);\n  }\n\n  return () => {\n    Object.keys(state.elements).forEach((name) => {\n      const element = state.elements[name];\n      const attributes = state.attributes[name] || {};\n\n      const styleProperties = Object.keys(\n        state.styles.hasOwnProperty(name)\n          ? state.styles[name]\n          : initialStyles[name]\n      );\n\n      // Set all values to an empty string to unset them\n      const style = styleProperties.reduce((style, property) => {\n        style[property] = '';\n        return style;\n      }, {});\n\n      // arrow is optional + virtual elements\n      if (!isHTMLElement(element) || !getNodeName(element)) {\n        return;\n      }\n\n      Object.assign(element.style, style);\n\n      Object.keys(attributes).forEach((attribute) => {\n        element.removeAttribute(attribute);\n      });\n    });\n  };\n}\n\n// eslint-disable-next-line import/no-unused-modules\nexport type ApplyStylesModifier = Modifier<'applyStyles', {||}>;\nexport default ({\n  name: 'applyStyles',\n  enabled: true,\n  phase: 'write',\n  fn: applyStyles,\n  effect,\n  requires: ['computeStyles'],\n}: ApplyStylesModifier);\n", "// @flow\nimport type { Placement } from '../enums';\nimport type { ModifierArguments, Modifier, Rect, Offsets } from '../types';\nimport getBasePlacement from '../utils/getBasePlacement';\nimport { top, left, right, placements } from '../enums';\n\n// eslint-disable-next-line import/no-unused-modules\nexport type OffsetsFunction = ({\n  popper: Rect,\n  reference: Rect,\n  placement: Placement,\n}) => [?number, ?number];\n\ntype Offset = OffsetsFunction | [?number, ?number];\n\n// eslint-disable-next-line import/no-unused-modules\nexport type Options = {\n  offset: Offset,\n};\n\nexport function distanceAndSkiddingToXY(\n  placement: Placement,\n  rects: { popper: Rect, reference: Rect },\n  offset: Offset\n): Offsets {\n  const basePlacement = getBasePlacement(placement);\n  const invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n  let [skidding, distance] =\n    typeof offset === 'function'\n      ? offset({\n          ...rects,\n          placement,\n        })\n      : offset;\n\n  skidding = skidding || 0;\n  distance = (distance || 0) * invertDistance;\n\n  return [left, right].indexOf(basePlacement) >= 0\n    ? { x: distance, y: skidding }\n    : { x: skidding, y: distance };\n}\n\nfunction offset({ state, options, name }: ModifierArguments<Options>) {\n  const { offset = [0, 0] } = options;\n\n  const data = placements.reduce((acc, placement) => {\n    acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n    return acc;\n  }, {});\n\n  const { x, y } = data[state.placement];\n\n  if (state.modifiersData.popperOffsets != null) {\n    state.modifiersData.popperOffsets.x += x;\n    state.modifiersData.popperOffsets.y += y;\n  }\n\n  state.modifiersData[name] = data;\n}\n\n// eslint-disable-next-line import/no-unused-modules\nexport type OffsetModifier = Modifier<'offset', Options>;\nexport default ({\n  name: 'offset',\n  enabled: true,\n  phase: 'main',\n  requires: ['popperOffsets'],\n  fn: offset,\n}: OffsetModifier);\n", "// @flow\nimport type { Placement } from '../enums';\n\nconst hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n\nexport default function getOppositePlacement(placement: Placement): Placement {\n  return (placement.replace(\n    /left|right|bottom|top/g,\n    matched => hash[matched]\n  ): any);\n}\n", "// @flow\nimport type { Placement } from '../enums';\n\nconst hash = { start: 'end', end: 'start' };\n\nexport default function getOppositeVariationPlacement(\n  placement: Placement\n): Placement {\n  return (placement.replace(/start|end/g, matched => hash[matched]): any);\n}\n", "// @flow\nimport type { State, Padding } from '../types';\nimport type {\n  Placement,\n  ComputedPlacement,\n  Boundary,\n  RootBoundary,\n} from '../enums';\nimport getVariation from './getVariation';\nimport {\n  variationPlacements,\n  basePlacements,\n  placements as allPlacements,\n} from '../enums';\nimport detectOverflow from './detectOverflow';\nimport getBasePlacement from './getBasePlacement';\n\ntype Options = {\n  placement: Placement,\n  padding: Padding,\n  boundary: Boundary,\n  rootBoundary: RootBoundary,\n  flipVariations: boolean,\n  allowedAutoPlacements?: Array<Placement>,\n};\n\ntype OverflowsMap = { [ComputedPlacement]: number };\n\nexport default function computeAutoPlacement(\n  state: $Shape<State>,\n  options: Options = {}\n): Array<ComputedPlacement> {\n  const {\n    placement,\n    boundary,\n    rootBoundary,\n    padding,\n    flipVariations,\n    allowedAutoPlacements = allPlacements,\n  } = options;\n\n  const variation = getVariation(placement);\n\n  const placements = variation\n    ? flipVariations\n      ? variationPlacements\n      : variationPlacements.filter(\n          (placement) => getVariation(placement) === variation\n        )\n    : basePlacements;\n\n  let allowedPlacements = placements.filter(\n    (placement) => allowedAutoPlacements.indexOf(placement) >= 0\n  );\n\n  if (allowedPlacements.length === 0) {\n    allowedPlacements = placements;\n  }\n\n  // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n  const overflows: OverflowsMap = allowedPlacements.reduce((acc, placement) => {\n    acc[placement] = detectOverflow(state, {\n      placement,\n      boundary,\n      rootBoundary,\n      padding,\n    })[getBasePlacement(placement)];\n\n    return acc;\n  }, {});\n\n  return Object.keys(overflows).sort((a, b) => overflows[a] - overflows[b]);\n}\n", "// @flow\nimport type { Placement, Boundary, RootBoundary } from '../enums';\nimport type { ModifierArguments, Modifier, Padding } from '../types';\nimport getOppositePlacement from '../utils/getOppositePlacement';\nimport getBasePlacement from '../utils/getBasePlacement';\nimport getOppositeVariationPlacement from '../utils/getOppositeVariationPlacement';\nimport detectOverflow from '../utils/detectOverflow';\nimport computeAutoPlacement from '../utils/computeAutoPlacement';\nimport { bottom, top, start, right, left, auto } from '../enums';\nimport getVariation from '../utils/getVariation';\n\n// eslint-disable-next-line import/no-unused-modules\nexport type Options = {\n  mainAxis: boolean,\n  altAxis: boolean,\n  fallbackPlacements: Array<Placement>,\n  padding: Padding,\n  boundary: Boundary,\n  rootBoundary: RootBoundary,\n  altBoundary: boolean,\n  flipVariations: boolean,\n  allowedAutoPlacements: Array<Placement>,\n};\n\nfunction getExpandedFallbackPlacements(placement: Placement): Array<Placement> {\n  if (getBasePlacement(placement) === auto) {\n    return [];\n  }\n\n  const oppositePlacement = getOppositePlacement(placement);\n\n  return [\n    getOppositeVariationPlacement(placement),\n    oppositePlacement,\n    getOppositeVariationPlacement(oppositePlacement),\n  ];\n}\n\nfunction flip({ state, options, name }: ModifierArguments<Options>) {\n  if (state.modifiersData[name]._skip) {\n    return;\n  }\n\n  const {\n    mainAxis: checkMainAxis = true,\n    altAxis: checkAltAxis = true,\n    fallbackPlacements: specifiedFallbackPlacements,\n    padding,\n    boundary,\n    rootBoundary,\n    altBoundary,\n    flipVariations = true,\n    allowedAutoPlacements,\n  } = options;\n\n  const preferredPlacement = state.options.placement;\n  const basePlacement = getBasePlacement(preferredPlacement);\n  const isBasePlacement = basePlacement === preferredPlacement;\n\n  const fallbackPlacements =\n    specifiedFallbackPlacements ||\n    (isBasePlacement || !flipVariations\n      ? [getOppositePlacement(preferredPlacement)]\n      : getExpandedFallbackPlacements(preferredPlacement));\n\n  const placements = [preferredPlacement, ...fallbackPlacements].reduce(\n    (acc, placement) => {\n      return acc.concat(\n        getBasePlacement(placement) === auto\n          ? computeAutoPlacement(state, {\n              placement,\n              boundary,\n              rootBoundary,\n              padding,\n              flipVariations,\n              allowedAutoPlacements,\n            })\n          : placement\n      );\n    },\n    []\n  );\n\n  const referenceRect = state.rects.reference;\n  const popperRect = state.rects.popper;\n\n  const checksMap = new Map();\n  let makeFallbackChecks = true;\n  let firstFittingPlacement = placements[0];\n\n  for (let i = 0; i < placements.length; i++) {\n    const placement = placements[i];\n    const basePlacement = getBasePlacement(placement);\n    const isStartVariation = getVariation(placement) === start;\n    const isVertical = [top, bottom].indexOf(basePlacement) >= 0;\n    const len = isVertical ? 'width' : 'height';\n\n    const overflow = detectOverflow(state, {\n      placement,\n      boundary,\n      rootBoundary,\n      altBoundary,\n      padding,\n    });\n\n    let mainVariationSide: any = isVertical\n      ? isStartVariation\n        ? right\n        : left\n      : isStartVariation\n      ? bottom\n      : top;\n\n    if (referenceRect[len] > popperRect[len]) {\n      mainVariationSide = getOppositePlacement(mainVariationSide);\n    }\n\n    const altVariationSide: any = getOppositePlacement(mainVariationSide);\n\n    const checks = [];\n\n    if (checkMainAxis) {\n      checks.push(overflow[basePlacement] <= 0);\n    }\n\n    if (checkAltAxis) {\n      checks.push(\n        overflow[mainVariationSide] <= 0,\n        overflow[altVariationSide] <= 0\n      );\n    }\n\n    if (checks.every((check) => check)) {\n      firstFittingPlacement = placement;\n      makeFallbackChecks = false;\n      break;\n    }\n\n    checksMap.set(placement, checks);\n  }\n\n  if (makeFallbackChecks) {\n    // `2` may be desired in some cases – research later\n    const numberOfChecks = flipVariations ? 3 : 1;\n\n    for (let i = numberOfChecks; i > 0; i--) {\n      const fittingPlacement = placements.find((placement) => {\n        const checks = checksMap.get(placement);\n        if (checks) {\n          return checks.slice(0, i).every((check) => check);\n        }\n      });\n\n      if (fittingPlacement) {\n        firstFittingPlacement = fittingPlacement;\n        break;\n      }\n    }\n  }\n\n  if (state.placement !== firstFittingPlacement) {\n    state.modifiersData[name]._skip = true;\n    state.placement = firstFittingPlacement;\n    state.reset = true;\n  }\n}\n\n// eslint-disable-next-line import/no-unused-modules\nexport type FlipModifier = Modifier<'flip', Options>;\nexport default ({\n  name: 'flip',\n  enabled: true,\n  phase: 'main',\n  fn: flip,\n  requiresIfExists: ['offset'],\n  data: { _skip: false },\n}: FlipModifier);\n", "// @flow\n\nexport default function getAltAxis(axis: 'x' | 'y'): 'x' | 'y' {\n  return axis === 'x' ? 'y' : 'x';\n}\n", "// @flow\nimport { max as mathMax, min as mathMin } from './math';\n\nexport function within(min: number, value: number, max: number): number {\n  return mathMax(min, mathMin(value, max));\n}\n\nexport function withinMaxClamp(min: number, value: number, max: number) {\n  const v = within(min, value, max);\n  return v > max ? max : v;\n}\n", "// @flow\nimport { top, left, right, bottom, start } from '../enums';\nimport type { Placement, Boundary, RootBoundary } from '../enums';\nimport type { Rect, ModifierArguments, Modifier, Padding } from '../types';\nimport getBasePlacement from '../utils/getBasePlacement';\nimport getMainAxisFromPlacement from '../utils/getMainAxisFromPlacement';\nimport getAltAxis from '../utils/getAltAxis';\nimport { within, withinMaxClamp } from '../utils/within';\nimport getLayoutRect from '../dom-utils/getLayoutRect';\nimport getOffsetParent from '../dom-utils/getOffsetParent';\nimport detectOverflow from '../utils/detectOverflow';\nimport getVariation from '../utils/getVariation';\nimport getFreshSideObject from '../utils/getFreshSideObject';\nimport { min as mathMin, max as mathMax } from '../utils/math';\n\ntype TetherOffset =\n  | (({\n      popper: Rect,\n      reference: Rect,\n      placement: Placement,\n    }) => number | { mainAxis: number, altAxis: number })\n  | number\n  | { mainAxis: number, altAxis: number };\n\n// eslint-disable-next-line import/no-unused-modules\nexport type Options = {\n  /* Prevents boundaries overflow on the main axis */\n  mainAxis: boolean,\n  /* Prevents boundaries overflow on the alternate axis */\n  altAxis: boolean,\n  /* The area to check the popper is overflowing in */\n  boundary: Boundary,\n  /* If the popper is not overflowing the main area, fallback to this one */\n  rootBoundary: RootBoundary,\n  /* Use the reference's \"clippingParents\" boundary context */\n  altBoundary: boolean,\n  /**\n   * Allows the popper to overflow from its boundaries to keep it near its\n   * reference element\n   */\n  tether: boolean,\n  /* Offsets when the `tether` option should activate */\n  tetherOffset: TetherOffset,\n  /* Sets a padding to the provided boundary */\n  padding: Padding,\n};\n\nfunction preventOverflow({ state, options, name }: ModifierArguments<Options>) {\n  const {\n    mainAxis: checkMainAxis = true,\n    altAxis: checkAltAxis = false,\n    boundary,\n    rootBoundary,\n    altBoundary,\n    padding,\n    tether = true,\n    tetherOffset = 0,\n  } = options;\n\n  const overflow = detectOverflow(state, {\n    boundary,\n    rootBoundary,\n    padding,\n    altBoundary,\n  });\n  const basePlacement = getBasePlacement(state.placement);\n  const variation = getVariation(state.placement);\n  const isBasePlacement = !variation;\n  const mainAxis = getMainAxisFromPlacement(basePlacement);\n  const altAxis = getAltAxis(mainAxis);\n  const popperOffsets = state.modifiersData.popperOffsets;\n  const referenceRect = state.rects.reference;\n  const popperRect = state.rects.popper;\n  const tetherOffsetValue =\n    typeof tetherOffset === 'function'\n      ? tetherOffset({\n          ...state.rects,\n          placement: state.placement,\n        })\n      : tetherOffset;\n  const normalizedTetherOffsetValue =\n    typeof tetherOffsetValue === 'number'\n      ? { mainAxis: tetherOffsetValue, altAxis: tetherOffsetValue }\n      : { mainAxis: 0, altAxis: 0, ...tetherOffsetValue };\n  const offsetModifierState = state.modifiersData.offset\n    ? state.modifiersData.offset[state.placement]\n    : null;\n\n  const data = { x: 0, y: 0 };\n\n  if (!popperOffsets) {\n    return;\n  }\n\n  if (checkMainAxis) {\n    const mainSide = mainAxis === 'y' ? top : left;\n    const altSide = mainAxis === 'y' ? bottom : right;\n    const len = mainAxis === 'y' ? 'height' : 'width';\n    const offset = popperOffsets[mainAxis];\n\n    const min = offset + overflow[mainSide];\n    const max = offset - overflow[altSide];\n\n    const additive = tether ? -popperRect[len] / 2 : 0;\n\n    const minLen = variation === start ? referenceRect[len] : popperRect[len];\n    const maxLen = variation === start ? -popperRect[len] : -referenceRect[len];\n\n    // We need to include the arrow in the calculation so the arrow doesn't go\n    // outside the reference bounds\n    const arrowElement = state.elements.arrow;\n    const arrowRect =\n      tether && arrowElement\n        ? getLayoutRect(arrowElement)\n        : { width: 0, height: 0 };\n    const arrowPaddingObject = state.modifiersData['arrow#persistent']\n      ? state.modifiersData['arrow#persistent'].padding\n      : getFreshSideObject();\n    const arrowPaddingMin = arrowPaddingObject[mainSide];\n    const arrowPaddingMax = arrowPaddingObject[altSide];\n\n    // If the reference length is smaller than the arrow length, we don't want\n    // to include its full size in the calculation. If the reference is small\n    // and near the edge of a boundary, the popper can overflow even if the\n    // reference is not overflowing as well (e.g. virtual elements with no\n    // width or height)\n    const arrowLen = within(0, referenceRect[len], arrowRect[len]);\n\n    const minOffset = isBasePlacement\n      ? referenceRect[len] / 2 -\n        additive -\n        arrowLen -\n        arrowPaddingMin -\n        normalizedTetherOffsetValue.mainAxis\n      : minLen -\n        arrowLen -\n        arrowPaddingMin -\n        normalizedTetherOffsetValue.mainAxis;\n    const maxOffset = isBasePlacement\n      ? -referenceRect[len] / 2 +\n        additive +\n        arrowLen +\n        arrowPaddingMax +\n        normalizedTetherOffsetValue.mainAxis\n      : maxLen +\n        arrowLen +\n        arrowPaddingMax +\n        normalizedTetherOffsetValue.mainAxis;\n\n    const arrowOffsetParent =\n      state.elements.arrow && getOffsetParent(state.elements.arrow);\n    const clientOffset = arrowOffsetParent\n      ? mainAxis === 'y'\n        ? arrowOffsetParent.clientTop || 0\n        : arrowOffsetParent.clientLeft || 0\n      : 0;\n\n    const offsetModifierValue = offsetModifierState?.[mainAxis] ?? 0;\n    const tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n    const tetherMax = offset + maxOffset - offsetModifierValue;\n\n    const preventedOffset = within(\n      tether ? mathMin(min, tetherMin) : min,\n      offset,\n      tether ? mathMax(max, tetherMax) : max\n    );\n\n    popperOffsets[mainAxis] = preventedOffset;\n    data[mainAxis] = preventedOffset - offset;\n  }\n\n  if (checkAltAxis) {\n    const mainSide = mainAxis === 'x' ? top : left;\n    const altSide = mainAxis === 'x' ? bottom : right;\n    const offset = popperOffsets[altAxis];\n\n    const len = altAxis === 'y' ? 'height' : 'width';\n\n    const min = offset + overflow[mainSide];\n    const max = offset - overflow[altSide];\n\n    const isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n\n    const offsetModifierValue = offsetModifierState?.[altAxis] ?? 0;\n    const tetherMin = isOriginSide\n      ? min\n      : offset -\n        referenceRect[len] -\n        popperRect[len] -\n        offsetModifierValue +\n        normalizedTetherOffsetValue.altAxis;\n    const tetherMax = isOriginSide\n      ? offset +\n        referenceRect[len] +\n        popperRect[len] -\n        offsetModifierValue -\n        normalizedTetherOffsetValue.altAxis\n      : max;\n\n    const preventedOffset =\n      tether && isOriginSide\n        ? withinMaxClamp(tetherMin, offset, tetherMax)\n        : within(tether ? tetherMin : min, offset, tether ? tetherMax : max);\n\n    popperOffsets[altAxis] = preventedOffset;\n    data[altAxis] = preventedOffset - offset;\n  }\n\n  state.modifiersData[name] = data;\n}\n\n// eslint-disable-next-line import/no-unused-modules\nexport type PreventOverflowModifier = Modifier<'preventOverflow', Options>;\nexport default ({\n  name: 'preventOverflow',\n  enabled: true,\n  phase: 'main',\n  fn: preventOverflow,\n  requiresIfExists: ['offset'],\n}: PreventOverflowModifier);\n", "// @flow\nimport type { Modifier, ModifierArguments, Padding, Rect } from '../types';\nimport type { Placement } from '../enums';\nimport getBasePlacement from '../utils/getBasePlacement';\nimport getLayoutRect from '../dom-utils/getLayoutRect';\nimport contains from '../dom-utils/contains';\nimport getOffsetParent from '../dom-utils/getOffsetParent';\nimport getMainAxisFromPlacement from '../utils/getMainAxisFromPlacement';\nimport { within } from '../utils/within';\nimport mergePaddingObject from '../utils/mergePaddingObject';\nimport expandToHashMap from '../utils/expandToHashMap';\nimport { left, right, basePlacements, top, bottom } from '../enums';\n\n// eslint-disable-next-line import/no-unused-modules\nexport type Options = {\n  element: HTMLElement | string | null,\n  padding:\n    | Padding\n    | (({|\n        popper: Rect,\n        reference: Rect,\n        placement: Placement,\n      |}) => Padding),\n};\n\nconst toPaddingObject = (padding, state) => {\n  padding =\n    typeof padding === 'function'\n      ? padding({ ...state.rects, placement: state.placement })\n      : padding;\n\n  return mergePaddingObject(\n    typeof padding !== 'number'\n      ? padding\n      : expandToHashMap(padding, basePlacements)\n  );\n};\n\nfunction arrow({ state, name, options }: ModifierArguments<Options>) {\n  const arrowElement = state.elements.arrow;\n  const popperOffsets = state.modifiersData.popperOffsets;\n  const basePlacement = getBasePlacement(state.placement);\n  const axis = getMainAxisFromPlacement(basePlacement);\n  const isVertical = [left, right].indexOf(basePlacement) >= 0;\n  const len = isVertical ? 'height' : 'width';\n\n  if (!arrowElement || !popperOffsets) {\n    return;\n  }\n\n  const paddingObject = toPaddingObject(options.padding, state);\n  const arrowRect = getLayoutRect(arrowElement);\n  const minProp = axis === 'y' ? top : left;\n  const maxProp = axis === 'y' ? bottom : right;\n\n  const endDiff =\n    state.rects.reference[len] +\n    state.rects.reference[axis] -\n    popperOffsets[axis] -\n    state.rects.popper[len];\n  const startDiff = popperOffsets[axis] - state.rects.reference[axis];\n\n  const arrowOffsetParent = getOffsetParent(arrowElement);\n  const clientSize = arrowOffsetParent\n    ? axis === 'y'\n      ? arrowOffsetParent.clientHeight || 0\n      : arrowOffsetParent.clientWidth || 0\n    : 0;\n\n  const centerToReference = endDiff / 2 - startDiff / 2;\n\n  // Make sure the arrow doesn't overflow the popper if the center point is\n  // outside of the popper bounds\n  const min = paddingObject[minProp];\n  const max = clientSize - arrowRect[len] - paddingObject[maxProp];\n  const center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n  const offset = within(min, center, max);\n\n  // Prevents breaking syntax highlighting...\n  const axisProp: string = axis;\n  state.modifiersData[name] = {\n    [axisProp]: offset,\n    centerOffset: offset - center,\n  };\n}\n\nfunction effect({ state, options }: ModifierArguments<Options>) {\n  let { element: arrowElement = '[data-popper-arrow]' } = options;\n\n  if (arrowElement == null) {\n    return;\n  }\n\n  // CSS selector\n  if (typeof arrowElement === 'string') {\n    arrowElement = state.elements.popper.querySelector(arrowElement);\n\n    if (!arrowElement) {\n      return;\n    }\n  }\n\n  if (!contains(state.elements.popper, arrowElement)) {\n    return;\n  }\n\n  state.elements.arrow = arrowElement;\n}\n\n// eslint-disable-next-line import/no-unused-modules\nexport type ArrowModifier = Modifier<'arrow', Options>;\nexport default ({\n  name: 'arrow',\n  enabled: true,\n  phase: 'main',\n  fn: arrow,\n  effect,\n  requires: ['popperOffsets'],\n  requiresIfExists: ['preventOverflow'],\n}: ArrowModifier);\n", "// @flow\nimport type {\n  ModifierArguments,\n  Modifier,\n  Rect,\n  SideObject,\n  Offsets,\n} from '../types';\nimport { top, bottom, left, right } from '../enums';\nimport detectOverflow from '../utils/detectOverflow';\n\nfunction getSideOffsets(\n  overflow: SideObject,\n  rect: Rect,\n  preventedOffsets: Offsets = { x: 0, y: 0 }\n): SideObject {\n  return {\n    top: overflow.top - rect.height - preventedOffsets.y,\n    right: overflow.right - rect.width + preventedOffsets.x,\n    bottom: overflow.bottom - rect.height + preventedOffsets.y,\n    left: overflow.left - rect.width - preventedOffsets.x,\n  };\n}\n\nfunction isAnySideFullyClipped(overflow: SideObject): boolean {\n  return [top, right, bottom, left].some((side) => overflow[side] >= 0);\n}\n\nfunction hide({ state, name }: ModifierArguments<{||}>) {\n  const referenceRect = state.rects.reference;\n  const popperRect = state.rects.popper;\n  const preventedOffsets = state.modifiersData.preventOverflow;\n\n  const referenceOverflow = detectOverflow(state, {\n    elementContext: 'reference',\n  });\n  const popperAltOverflow = detectOverflow(state, {\n    altBoundary: true,\n  });\n\n  const referenceClippingOffsets = getSideOffsets(\n    referenceOverflow,\n    referenceRect\n  );\n  const popperEscapeOffsets = getSideOffsets(\n    popperAltOverflow,\n    popperRect,\n    preventedOffsets\n  );\n\n  const isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n  const hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n\n  state.modifiersData[name] = {\n    referenceClippingOffsets,\n    popperEscapeOffsets,\n    isReferenceHidden,\n    hasPopperEscaped,\n  };\n\n  state.attributes.popper = {\n    ...state.attributes.popper,\n    'data-popper-reference-hidden': isReferenceHidden,\n    'data-popper-escaped': hasPopperEscaped,\n  };\n}\n\n// eslint-disable-next-line import/no-unused-modules\nexport type HideModifier = Modifier<'hide', {||}>;\nexport default ({\n  name: 'hide',\n  enabled: true,\n  phase: 'main',\n  requiresIfExists: ['preventOverflow'],\n  fn: hide,\n}: HideModifier);\n", "// @flow\nimport { popperGenerator, detectOverflow } from './createPopper';\n\nimport eventListeners from './modifiers/eventListeners';\nimport popperOffsets from './modifiers/popperOffsets';\nimport computeStyles from './modifiers/computeStyles';\nimport applyStyles from './modifiers/applyStyles';\n\nexport type * from './types';\n\nconst defaultModifiers = [\n  eventListeners,\n  popperOffsets,\n  computeStyles,\n  applyStyles,\n];\n\nconst createPopper = popperGenerator({ defaultModifiers });\n\n// eslint-disable-next-line import/no-unused-modules\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow };\n", "// @flow\nimport { popperGenerator, detectOverflow } from './createPopper';\n\nimport eventListeners from './modifiers/eventListeners';\nimport popperOffsets from './modifiers/popperOffsets';\nimport computeStyles from './modifiers/computeStyles';\nimport applyStyles from './modifiers/applyStyles';\nimport offset from './modifiers/offset';\nimport flip from './modifiers/flip';\nimport preventOverflow from './modifiers/preventOverflow';\nimport arrow from './modifiers/arrow';\nimport hide from './modifiers/hide';\n\nexport type * from './types';\n\nconst defaultModifiers = [\n  eventListeners,\n  popperOffsets,\n  computeStyles,\n  applyStyles,\n  offset,\n  flip,\n  preventOverflow,\n  arrow,\n  hide,\n];\n\nconst createPopper = popperGenerator({ defaultModifiers });\n\n// eslint-disable-next-line import/no-unused-modules\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow };\n// eslint-disable-next-line import/no-unused-modules\nexport { createPopper as createPopperLite } from './popper-lite';\n// eslint-disable-next-line import/no-unused-modules\nexport * from './modifiers';\n", "'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n  childContextTypes: true,\n  contextType: true,\n  contextTypes: true,\n  defaultProps: true,\n  displayName: true,\n  getDefaultProps: true,\n  getDerivedStateFromError: true,\n  getDerivedStateFromProps: true,\n  mixins: true,\n  propTypes: true,\n  type: true\n};\nvar KNOWN_STATICS = {\n  name: true,\n  length: true,\n  prototype: true,\n  caller: true,\n  callee: true,\n  arguments: true,\n  arity: true\n};\nvar FORWARD_REF_STATICS = {\n  '$$typeof': true,\n  render: true,\n  defaultProps: true,\n  displayName: true,\n  propTypes: true\n};\nvar MEMO_STATICS = {\n  '$$typeof': true,\n  compare: true,\n  defaultProps: true,\n  displayName: true,\n  propTypes: true,\n  type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n  // React v16.11 and below\n  if (reactIs.isMemo(component)) {\n    return MEMO_STATICS;\n  } // React v16.12 and above\n\n\n  return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n  if (typeof sourceComponent !== 'string') {\n    // don't hoist over string (html) components\n    if (objectPrototype) {\n      var inheritedComponent = getPrototypeOf(sourceComponent);\n\n      if (inheritedComponent && inheritedComponent !== objectPrototype) {\n        hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n      }\n    }\n\n    var keys = getOwnPropertyNames(sourceComponent);\n\n    if (getOwnPropertySymbols) {\n      keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n    }\n\n    var targetStatics = getStatics(targetComponent);\n    var sourceStatics = getStatics(sourceComponent);\n\n    for (var i = 0; i < keys.length; ++i) {\n      var key = keys[i];\n\n      if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n        var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n        try {\n          // Avoid failures from read-only properties\n          defineProperty(targetComponent, key, descriptor);\n        } catch (e) {}\n      }\n    }\n  }\n\n  return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = findTabbableDescendants;\n/*!\n * Adapted from jQuery UI core\n *\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/category/ui-core/\n */\n\nvar DISPLAY_NONE = \"none\";\nvar DISPLAY_CONTENTS = \"contents\";\n\nvar tabbableNode = /input|select|textarea|button|object|iframe/;\n\nfunction isNotOverflowing(element, style) {\n  return style.getPropertyValue(\"overflow\") !== \"visible\" ||\n  // if 'overflow: visible' set, check if there is actually any overflow\n  element.scrollWidth <= 0 && element.scrollHeight <= 0;\n}\n\nfunction hidesContents(element) {\n  var zeroSize = element.offsetWidth <= 0 && element.offsetHeight <= 0;\n\n  // If the node is empty, this is good enough\n  if (zeroSize && !element.innerHTML) return true;\n\n  try {\n    // Otherwise we need to check some styles\n    var style = window.getComputedStyle(element);\n    var displayValue = style.getPropertyValue(\"display\");\n    return zeroSize ? displayValue !== DISPLAY_CONTENTS && isNotOverflowing(element, style) : displayValue === DISPLAY_NONE;\n  } catch (exception) {\n    // eslint-disable-next-line no-console\n    console.warn(\"Failed to inspect element style\");\n    return false;\n  }\n}\n\nfunction visible(element) {\n  var parentElement = element;\n  var rootNode = element.getRootNode && element.getRootNode();\n  while (parentElement) {\n    if (parentElement === document.body) break;\n\n    // if we are not hidden yet, skip to checking outside the Web Component\n    if (rootNode && parentElement === rootNode) parentElement = rootNode.host.parentNode;\n\n    if (hidesContents(parentElement)) return false;\n    parentElement = parentElement.parentNode;\n  }\n  return true;\n}\n\nfunction focusable(element, isTabIndexNotNaN) {\n  var nodeName = element.nodeName.toLowerCase();\n  var res = tabbableNode.test(nodeName) && !element.disabled || (nodeName === \"a\" ? element.href || isTabIndexNotNaN : isTabIndexNotNaN);\n  return res && visible(element);\n}\n\nfunction tabbable(element) {\n  var tabIndex = element.getAttribute(\"tabindex\");\n  if (tabIndex === null) tabIndex = undefined;\n  var isTabIndexNaN = isNaN(tabIndex);\n  return (isTabIndexNaN || tabIndex >= 0) && focusable(element, !isTabIndexNaN);\n}\n\nfunction findTabbableDescendants(element) {\n  var descendants = [].slice.call(element.querySelectorAll(\"*\"), 0).reduce(function (finished, el) {\n    return finished.concat(!el.shadowRoot ? [el] : findTabbableDescendants(el.shadowRoot));\n  }, []);\n  return descendants.filter(tabbable);\n}\nmodule.exports = exports[\"default\"];", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.resetState = resetState;\nexports.log = log;\nexports.handleBlur = handleBlur;\nexports.handleFocus = handleFocus;\nexports.markForFocusLater = markForFocusLater;\nexports.returnFocus = returnFocus;\nexports.popWithoutFocus = popWithoutFocus;\nexports.setupScopedFocus = setupScopedFocus;\nexports.teardownScopedFocus = teardownScopedFocus;\n\nvar _tabbable = require(\"../helpers/tabbable\");\n\nvar _tabbable2 = _interopRequireDefault(_tabbable);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar focusLaterElements = [];\nvar modalElement = null;\nvar needToFocus = false;\n\n/* eslint-disable no-console */\n/* istanbul ignore next */\nfunction resetState() {\n  focusLaterElements = [];\n}\n\n/* istanbul ignore next */\nfunction log() {\n  if (process.env.NODE_ENV !== \"production\") {\n    console.log(\"focusManager ----------\");\n    focusLaterElements.forEach(function (f) {\n      var check = f || {};\n      console.log(check.nodeName, check.className, check.id);\n    });\n    console.log(\"end focusManager ----------\");\n  }\n}\n/* eslint-enable no-console */\n\nfunction handleBlur() {\n  needToFocus = true;\n}\n\nfunction handleFocus() {\n  if (needToFocus) {\n    needToFocus = false;\n    if (!modalElement) {\n      return;\n    }\n    // need to see how jQuery shims document.on('focusin') so we don't need the\n    // setTimeout, firefox doesn't support focusin, if it did, we could focus\n    // the element outside of a setTimeout. Side-effect of this implementation\n    // is that the document.body gets focus, and then we focus our element right\n    // after, seems fine.\n    setTimeout(function () {\n      if (modalElement.contains(document.activeElement)) {\n        return;\n      }\n      var el = (0, _tabbable2.default)(modalElement)[0] || modalElement;\n      el.focus();\n    }, 0);\n  }\n}\n\nfunction markForFocusLater() {\n  focusLaterElements.push(document.activeElement);\n}\n\n/* eslint-disable no-console */\nfunction returnFocus() {\n  var preventScroll = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n  var toFocus = null;\n  try {\n    if (focusLaterElements.length !== 0) {\n      toFocus = focusLaterElements.pop();\n      toFocus.focus({ preventScroll: preventScroll });\n    }\n    return;\n  } catch (e) {\n    console.warn([\"You tried to return focus to\", toFocus, \"but it is not in the DOM anymore\"].join(\" \"));\n  }\n}\n/* eslint-enable no-console */\n\nfunction popWithoutFocus() {\n  focusLaterElements.length > 0 && focusLaterElements.pop();\n}\n\nfunction setupScopedFocus(element) {\n  modalElement = element;\n\n  if (window.addEventListener) {\n    window.addEventListener(\"blur\", handleBlur, false);\n    document.addEventListener(\"focus\", handleFocus, true);\n  } else {\n    window.attachEvent(\"onBlur\", handleBlur);\n    document.attachEvent(\"onFocus\", handleFocus);\n  }\n}\n\nfunction teardownScopedFocus() {\n  modalElement = null;\n\n  if (window.addEventListener) {\n    window.removeEventListener(\"blur\", handleBlur);\n    document.removeEventListener(\"focus\", handleFocus);\n  } else {\n    window.detachEvent(\"onBlur\", handleBlur);\n    document.detachEvent(\"onFocus\", handleFocus);\n  }\n}", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = scopeTab;\n\nvar _tabbable = require(\"./tabbable\");\n\nvar _tabbable2 = _interopRequireDefault(_tabbable);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction getActiveElement() {\n  var el = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document;\n\n  return el.activeElement.shadowRoot ? getActiveElement(el.activeElement.shadowRoot) : el.activeElement;\n}\n\nfunction scopeTab(node, event) {\n  var tabbable = (0, _tabbable2.default)(node);\n\n  if (!tabbable.length) {\n    // Do nothing, since there are no elements that can receive focus.\n    event.preventDefault();\n    return;\n  }\n\n  var target = void 0;\n\n  var shiftKey = event.shiftKey;\n  var head = tabbable[0];\n  var tail = tabbable[tabbable.length - 1];\n  var activeElement = getActiveElement();\n\n  // proceed with default browser behavior on tab.\n  // Focus on last element on shift + tab.\n  if (node === activeElement) {\n    if (!shiftKey) return;\n    target = tail;\n  }\n\n  if (tail === activeElement && !shiftKey) {\n    target = head;\n  }\n\n  if (head === activeElement && shiftKey) {\n    target = tail;\n  }\n\n  if (target) {\n    event.preventDefault();\n    target.focus();\n    return;\n  }\n\n  // Safari radio issue.\n  //\n  // Safari does not move the focus to the radio button,\n  // so we need to force it to really walk through all elements.\n  //\n  // This is very error prone, since we are trying to guess\n  // if it is a safari browser from the first occurence between\n  // chrome or safari.\n  //\n  // The chrome user agent contains the first ocurrence\n  // as the 'chrome/version' and later the 'safari/version'.\n  var checkSafari = /(\\bChrome\\b|\\bSafari\\b)\\//.exec(navigator.userAgent);\n  var isSafariDesktop = checkSafari != null && checkSafari[1] != \"Chrome\" && /\\biPod\\b|\\biPad\\b/g.exec(navigator.userAgent) == null;\n\n  // If we are not in safari desktop, let the browser control\n  // the focus\n  if (!isSafariDesktop) return;\n\n  var x = tabbable.indexOf(activeElement);\n\n  if (x > -1) {\n    x += shiftKey ? -1 : 1;\n  }\n\n  target = tabbable[x];\n\n  // If the tabbable element does not exist,\n  // focus head/tail based on shiftKey\n  if (typeof target === \"undefined\") {\n    event.preventDefault();\n    target = shiftKey ? tail : head;\n    target.focus();\n    return;\n  }\n\n  event.preventDefault();\n\n  target.focus();\n}\nmodule.exports = exports[\"default\"];", "/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar warning = function() {};\n\nif (__DEV__) {\n  var printWarning = function printWarning(format, args) {\n    var len = arguments.length;\n    args = new Array(len > 1 ? len - 1 : 0);\n    for (var key = 1; key < len; key++) {\n      args[key - 1] = arguments[key];\n    }\n    var argIndex = 0;\n    var message = 'Warning: ' +\n      format.replace(/%s/g, function() {\n        return args[argIndex++];\n      });\n    if (typeof console !== 'undefined') {\n      console.error(message);\n    }\n    try {\n      // --- Welcome to debugging React ---\n      // This error was thrown as a convenience so that you can use this stack\n      // to find the callsite that caused this warning to fire.\n      throw new Error(message);\n    } catch (x) {}\n  }\n\n  warning = function(condition, format, args) {\n    var len = arguments.length;\n    args = new Array(len > 2 ? len - 2 : 0);\n    for (var key = 2; key < len; key++) {\n      args[key - 2] = arguments[key];\n    }\n    if (format === undefined) {\n      throw new Error(\n          '`warning(condition, format, ...args)` requires a warning ' +\n          'message argument'\n      );\n    }\n    if (!condition) {\n      printWarning.apply(null, [format].concat(args));\n    }\n  };\n}\n\nmodule.exports = warning;\n", "/*!\n  Copyright (c) 2015 Jed Watson.\n  Based on code that is Copyright 2013-2015, Facebook, Inc.\n  All rights reserved.\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar canUseDOM = !!(\n\t\ttypeof window !== 'undefined' &&\n\t\twindow.document &&\n\t\twindow.document.createElement\n\t);\n\n\tvar ExecutionEnvironment = {\n\n\t\tcanUseDOM: canUseDOM,\n\n\t\tcanUseWorkers: typeof Worker !== 'undefined',\n\n\t\tcanUseEventListeners:\n\t\t\tcanUseDOM && !!(window.addEventListener || window.attachEvent),\n\n\t\tcanUseViewport: canUseDOM && !!window.screen\n\n\t};\n\n\tif (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\tdefine(function () {\n\t\t\treturn ExecutionEnvironment;\n\t\t});\n\t} else if (typeof module !== 'undefined' && module.exports) {\n\t\tmodule.exports = ExecutionEnvironment;\n\t} else {\n\t\twindow.ExecutionEnvironment = ExecutionEnvironment;\n\t}\n\n}());\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.canUseDOM = exports.SafeNodeList = exports.SafeHTMLCollection = undefined;\n\nvar _exenv = require(\"exenv\");\n\nvar _exenv2 = _interopRequireDefault(_exenv);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar EE = _exenv2.default;\n\nvar SafeHTMLElement = EE.canUseDOM ? window.HTMLElement : {};\n\nvar SafeHTMLCollection = exports.SafeHTMLCollection = EE.canUseDOM ? window.HTMLCollection : {};\n\nvar SafeNodeList = exports.SafeNodeList = EE.canUseDOM ? window.NodeList : {};\n\nvar canUseDOM = exports.canUseDOM = EE.canUseDOM;\n\nexports.default = SafeHTMLElement;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.resetState = resetState;\nexports.log = log;\nexports.assertNodeList = assertNodeList;\nexports.setElement = setElement;\nexports.validateElement = validateElement;\nexports.hide = hide;\nexports.show = show;\nexports.documentNotReadyOrSSRTesting = documentNotReadyOrSSRTesting;\n\nvar _warning = require(\"warning\");\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nvar _safeHTMLElement = require(\"./safeHTMLElement\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar globalElement = null;\n\n/* eslint-disable no-console */\n/* istanbul ignore next */\nfunction resetState() {\n  if (globalElement) {\n    if (globalElement.removeAttribute) {\n      globalElement.removeAttribute(\"aria-hidden\");\n    } else if (globalElement.length != null) {\n      globalElement.forEach(function (element) {\n        return element.removeAttribute(\"aria-hidden\");\n      });\n    } else {\n      document.querySelectorAll(globalElement).forEach(function (element) {\n        return element.removeAttribute(\"aria-hidden\");\n      });\n    }\n  }\n  globalElement = null;\n}\n\n/* istanbul ignore next */\nfunction log() {\n  if (process.env.NODE_ENV !== \"production\") {\n    var check = globalElement || {};\n    console.log(\"ariaAppHider ----------\");\n    console.log(check.nodeName, check.className, check.id);\n    console.log(\"end ariaAppHider ----------\");\n  }\n}\n/* eslint-enable no-console */\n\nfunction assertNodeList(nodeList, selector) {\n  if (!nodeList || !nodeList.length) {\n    throw new Error(\"react-modal: No elements were found for selector \" + selector + \".\");\n  }\n}\n\nfunction setElement(element) {\n  var useElement = element;\n  if (typeof useElement === \"string\" && _safeHTMLElement.canUseDOM) {\n    var el = document.querySelectorAll(useElement);\n    assertNodeList(el, useElement);\n    useElement = el;\n  }\n  globalElement = useElement || globalElement;\n  return globalElement;\n}\n\nfunction validateElement(appElement) {\n  var el = appElement || globalElement;\n  if (el) {\n    return Array.isArray(el) || el instanceof HTMLCollection || el instanceof NodeList ? el : [el];\n  } else {\n    (0, _warning2.default)(false, [\"react-modal: App element is not defined.\", \"Please use `Modal.setAppElement(el)` or set `appElement={el}`.\", \"This is needed so screen readers don't see main content\", \"when modal is opened. It is not recommended, but you can opt-out\", \"by setting `ariaHideApp={false}`.\"].join(\" \"));\n\n    return [];\n  }\n}\n\nfunction hide(appElement) {\n  var _iteratorNormalCompletion = true;\n  var _didIteratorError = false;\n  var _iteratorError = undefined;\n\n  try {\n    for (var _iterator = validateElement(appElement)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n      var el = _step.value;\n\n      el.setAttribute(\"aria-hidden\", \"true\");\n    }\n  } catch (err) {\n    _didIteratorError = true;\n    _iteratorError = err;\n  } finally {\n    try {\n      if (!_iteratorNormalCompletion && _iterator.return) {\n        _iterator.return();\n      }\n    } finally {\n      if (_didIteratorError) {\n        throw _iteratorError;\n      }\n    }\n  }\n}\n\nfunction show(appElement) {\n  var _iteratorNormalCompletion2 = true;\n  var _didIteratorError2 = false;\n  var _iteratorError2 = undefined;\n\n  try {\n    for (var _iterator2 = validateElement(appElement)[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n      var el = _step2.value;\n\n      el.removeAttribute(\"aria-hidden\");\n    }\n  } catch (err) {\n    _didIteratorError2 = true;\n    _iteratorError2 = err;\n  } finally {\n    try {\n      if (!_iteratorNormalCompletion2 && _iterator2.return) {\n        _iterator2.return();\n      }\n    } finally {\n      if (_didIteratorError2) {\n        throw _iteratorError2;\n      }\n    }\n  }\n}\n\nfunction documentNotReadyOrSSRTesting() {\n  globalElement = null;\n}", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.resetState = resetState;\nexports.log = log;\nvar htmlClassList = {};\nvar docBodyClassList = {};\n\n/* eslint-disable no-console */\n/* istanbul ignore next */\nfunction removeClass(at, cls) {\n  at.classList.remove(cls);\n}\n\n/* istanbul ignore next */\nfunction resetState() {\n  var htmlElement = document.getElementsByTagName(\"html\")[0];\n  for (var cls in htmlClassList) {\n    removeClass(htmlElement, htmlClassList[cls]);\n  }\n\n  var body = document.body;\n  for (var _cls in docBodyClassList) {\n    removeClass(body, docBodyClassList[_cls]);\n  }\n\n  htmlClassList = {};\n  docBodyClassList = {};\n}\n\n/* istanbul ignore next */\nfunction log() {\n  if (process.env.NODE_ENV !== \"production\") {\n    var classes = document.getElementsByTagName(\"html\")[0].className;\n    var buffer = \"Show tracked classes:\\n\\n\";\n\n    buffer += \"<html /> (\" + classes + \"):\\n  \";\n    for (var x in htmlClassList) {\n      buffer += \"  \" + x + \" \" + htmlClassList[x] + \"\\n  \";\n    }\n\n    classes = document.body.className;\n\n    buffer += \"\\n\\ndoc.body (\" + classes + \"):\\n  \";\n    for (var _x in docBodyClassList) {\n      buffer += \"  \" + _x + \" \" + docBodyClassList[_x] + \"\\n  \";\n    }\n\n    buffer += \"\\n\";\n\n    console.log(buffer);\n  }\n}\n/* eslint-enable no-console */\n\n/**\n * Track the number of reference of a class.\n * @param {object} poll The poll to receive the reference.\n * @param {string} className The class name.\n * @return {string}\n */\nvar incrementReference = function incrementReference(poll, className) {\n  if (!poll[className]) {\n    poll[className] = 0;\n  }\n  poll[className] += 1;\n  return className;\n};\n\n/**\n * Drop the reference of a class.\n * @param {object} poll The poll to receive the reference.\n * @param {string} className The class name.\n * @return {string}\n */\nvar decrementReference = function decrementReference(poll, className) {\n  if (poll[className]) {\n    poll[className] -= 1;\n  }\n  return className;\n};\n\n/**\n * Track a class and add to the given class list.\n * @param {Object} classListRef A class list of an element.\n * @param {Object} poll         The poll to be used.\n * @param {Array}  classes      The list of classes to be tracked.\n */\nvar trackClass = function trackClass(classListRef, poll, classes) {\n  classes.forEach(function (className) {\n    incrementReference(poll, className);\n    classListRef.add(className);\n  });\n};\n\n/**\n * Untrack a class and remove from the given class list if the reference\n * reaches 0.\n * @param {Object} classListRef A class list of an element.\n * @param {Object} poll         The poll to be used.\n * @param {Array}  classes      The list of classes to be untracked.\n */\nvar untrackClass = function untrackClass(classListRef, poll, classes) {\n  classes.forEach(function (className) {\n    decrementReference(poll, className);\n    poll[className] === 0 && classListRef.remove(className);\n  });\n};\n\n/**\n * Public inferface to add classes to the document.body.\n * @param {string} bodyClass The class string to be added.\n *                           It may contain more then one class\n *                           with ' ' as separator.\n */\nvar add = exports.add = function add(element, classString) {\n  return trackClass(element.classList, element.nodeName.toLowerCase() == \"html\" ? htmlClassList : docBodyClassList, classString.split(\" \"));\n};\n\n/**\n * Public inferface to remove classes from the document.body.\n * @param {string} bodyClass The class string to be added.\n *                           It may contain more then one class\n *                           with ' ' as separator.\n */\nvar remove = exports.remove = function remove(element, classString) {\n  return untrackClass(element.classList, element.nodeName.toLowerCase() == \"html\" ? htmlClassList : docBodyClassList, classString.split(\" \"));\n};", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.log = log;\nexports.resetState = resetState;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n// Tracks portals that are open and emits events to subscribers\n\nvar PortalOpenInstances = function PortalOpenInstances() {\n  var _this = this;\n\n  _classCallCheck(this, PortalOpenInstances);\n\n  this.register = function (openInstance) {\n    if (_this.openInstances.indexOf(openInstance) !== -1) {\n      if (process.env.NODE_ENV !== \"production\") {\n        // eslint-disable-next-line no-console\n        console.warn(\"React-Modal: Cannot register modal instance that's already open\");\n      }\n      return;\n    }\n    _this.openInstances.push(openInstance);\n    _this.emit(\"register\");\n  };\n\n  this.deregister = function (openInstance) {\n    var index = _this.openInstances.indexOf(openInstance);\n    if (index === -1) {\n      if (process.env.NODE_ENV !== \"production\") {\n        // eslint-disable-next-line no-console\n        console.warn(\"React-Modal: Unable to deregister \" + openInstance + \" as \" + \"it was never registered\");\n      }\n      return;\n    }\n    _this.openInstances.splice(index, 1);\n    _this.emit(\"deregister\");\n  };\n\n  this.subscribe = function (callback) {\n    _this.subscribers.push(callback);\n  };\n\n  this.emit = function (eventType) {\n    _this.subscribers.forEach(function (subscriber) {\n      return subscriber(eventType,\n      // shallow copy to avoid accidental mutation\n      _this.openInstances.slice());\n    });\n  };\n\n  this.openInstances = [];\n  this.subscribers = [];\n};\n\nvar portalOpenInstances = new PortalOpenInstances();\n\n/* eslint-disable no-console */\n/* istanbul ignore next */\nfunction log() {\n  console.log(\"portalOpenInstances ----------\");\n  console.log(portalOpenInstances.openInstances.length);\n  portalOpenInstances.openInstances.forEach(function (p) {\n    return console.log(p);\n  });\n  console.log(\"end portalOpenInstances ----------\");\n}\n\n/* istanbul ignore next */\nfunction resetState() {\n  portalOpenInstances = new PortalOpenInstances();\n}\n/* eslint-enable no-console */\n\nexports.default = portalOpenInstances;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.resetState = resetState;\nexports.log = log;\n\nvar _portalOpenInstances = require(\"./portalOpenInstances\");\n\nvar _portalOpenInstances2 = _interopRequireDefault(_portalOpenInstances);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// Body focus trap see Issue #742\n\nvar before = void 0,\n    after = void 0,\n    instances = [];\n\n/* eslint-disable no-console */\n/* istanbul ignore next */\nfunction resetState() {\n  var _arr = [before, after];\n\n  for (var _i = 0; _i < _arr.length; _i++) {\n    var item = _arr[_i];\n    if (!item) continue;\n    item.parentNode && item.parentNode.removeChild(item);\n  }\n  before = after = null;\n  instances = [];\n}\n\n/* istanbul ignore next */\nfunction log() {\n  console.log(\"bodyTrap ----------\");\n  console.log(instances.length);\n  var _arr2 = [before, after];\n  for (var _i2 = 0; _i2 < _arr2.length; _i2++) {\n    var item = _arr2[_i2];\n    var check = item || {};\n    console.log(check.nodeName, check.className, check.id);\n  }\n  console.log(\"edn bodyTrap ----------\");\n}\n/* eslint-enable no-console */\n\nfunction focusContent() {\n  if (instances.length === 0) {\n    if (process.env.NODE_ENV !== \"production\") {\n      // eslint-disable-next-line no-console\n      console.warn(\"React-Modal: Open instances > 0 expected\");\n    }\n    return;\n  }\n  instances[instances.length - 1].focusContent();\n}\n\nfunction bodyTrap(eventType, openInstances) {\n  if (!before && !after) {\n    before = document.createElement(\"div\");\n    before.setAttribute(\"data-react-modal-body-trap\", \"\");\n    before.style.position = \"absolute\";\n    before.style.opacity = \"0\";\n    before.setAttribute(\"tabindex\", \"0\");\n    before.addEventListener(\"focus\", focusContent);\n    after = before.cloneNode();\n    after.addEventListener(\"focus\", focusContent);\n  }\n\n  instances = openInstances;\n\n  if (instances.length > 0) {\n    // Add focus trap\n    if (document.body.firstChild !== before) {\n      document.body.insertBefore(before, document.body.firstChild);\n    }\n    if (document.body.lastChild !== after) {\n      document.body.appendChild(after);\n    }\n  } else {\n    // Remove focus trap\n    if (before.parentElement) {\n      before.parentElement.removeChild(before);\n    }\n    if (after.parentElement) {\n      after.parentElement.removeChild(after);\n    }\n  }\n}\n\n_portalOpenInstances2.default.subscribe(bodyTrap);", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require(\"react\");\n\nvar _propTypes = require(\"prop-types\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _focusManager = require(\"../helpers/focusManager\");\n\nvar focusManager = _interopRequireWildcard(_focusManager);\n\nvar _scopeTab = require(\"../helpers/scopeTab\");\n\nvar _scopeTab2 = _interopRequireDefault(_scopeTab);\n\nvar _ariaAppHider = require(\"../helpers/ariaAppHider\");\n\nvar ariaAppHider = _interopRequireWildcard(_ariaAppHider);\n\nvar _classList = require(\"../helpers/classList\");\n\nvar classList = _interopRequireWildcard(_classList);\n\nvar _safeHTMLElement = require(\"../helpers/safeHTMLElement\");\n\nvar _safeHTMLElement2 = _interopRequireDefault(_safeHTMLElement);\n\nvar _portalOpenInstances = require(\"../helpers/portalOpenInstances\");\n\nvar _portalOpenInstances2 = _interopRequireDefault(_portalOpenInstances);\n\nrequire(\"../helpers/bodyTrap\");\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n// so that our CSS is statically analyzable\nvar CLASS_NAMES = {\n  overlay: \"ReactModal__Overlay\",\n  content: \"ReactModal__Content\"\n};\n\n/**\n * We need to support the deprecated `KeyboardEvent.keyCode` in addition to\n * `KeyboardEvent.code` for apps that still support IE11. Can be removed when\n * `react-modal` only supports React >18 (which dropped IE support).\n */\nvar isTabKey = function isTabKey(event) {\n  return event.code === \"Tab\" || event.keyCode === 9;\n};\nvar isEscKey = function isEscKey(event) {\n  return event.code === \"Escape\" || event.keyCode === 27;\n};\n\nvar ariaHiddenInstances = 0;\n\nvar ModalPortal = function (_Component) {\n  _inherits(ModalPortal, _Component);\n\n  function ModalPortal(props) {\n    _classCallCheck(this, ModalPortal);\n\n    var _this = _possibleConstructorReturn(this, (ModalPortal.__proto__ || Object.getPrototypeOf(ModalPortal)).call(this, props));\n\n    _this.setOverlayRef = function (overlay) {\n      _this.overlay = overlay;\n      _this.props.overlayRef && _this.props.overlayRef(overlay);\n    };\n\n    _this.setContentRef = function (content) {\n      _this.content = content;\n      _this.props.contentRef && _this.props.contentRef(content);\n    };\n\n    _this.afterClose = function () {\n      var _this$props = _this.props,\n          appElement = _this$props.appElement,\n          ariaHideApp = _this$props.ariaHideApp,\n          htmlOpenClassName = _this$props.htmlOpenClassName,\n          bodyOpenClassName = _this$props.bodyOpenClassName,\n          parentSelector = _this$props.parentSelector;\n\n\n      var parentDocument = parentSelector && parentSelector().ownerDocument || document;\n\n      // Remove classes.\n      bodyOpenClassName && classList.remove(parentDocument.body, bodyOpenClassName);\n\n      htmlOpenClassName && classList.remove(parentDocument.getElementsByTagName(\"html\")[0], htmlOpenClassName);\n\n      // Reset aria-hidden attribute if all modals have been removed\n      if (ariaHideApp && ariaHiddenInstances > 0) {\n        ariaHiddenInstances -= 1;\n\n        if (ariaHiddenInstances === 0) {\n          ariaAppHider.show(appElement);\n        }\n      }\n\n      if (_this.props.shouldFocusAfterRender) {\n        if (_this.props.shouldReturnFocusAfterClose) {\n          focusManager.returnFocus(_this.props.preventScroll);\n          focusManager.teardownScopedFocus();\n        } else {\n          focusManager.popWithoutFocus();\n        }\n      }\n\n      if (_this.props.onAfterClose) {\n        _this.props.onAfterClose();\n      }\n\n      _portalOpenInstances2.default.deregister(_this);\n    };\n\n    _this.open = function () {\n      _this.beforeOpen();\n      if (_this.state.afterOpen && _this.state.beforeClose) {\n        clearTimeout(_this.closeTimer);\n        _this.setState({ beforeClose: false });\n      } else {\n        if (_this.props.shouldFocusAfterRender) {\n          focusManager.setupScopedFocus(_this.node);\n          focusManager.markForFocusLater();\n        }\n\n        _this.setState({ isOpen: true }, function () {\n          _this.openAnimationFrame = requestAnimationFrame(function () {\n            _this.setState({ afterOpen: true });\n\n            if (_this.props.isOpen && _this.props.onAfterOpen) {\n              _this.props.onAfterOpen({\n                overlayEl: _this.overlay,\n                contentEl: _this.content\n              });\n            }\n          });\n        });\n      }\n    };\n\n    _this.close = function () {\n      if (_this.props.closeTimeoutMS > 0) {\n        _this.closeWithTimeout();\n      } else {\n        _this.closeWithoutTimeout();\n      }\n    };\n\n    _this.focusContent = function () {\n      return _this.content && !_this.contentHasFocus() && _this.content.focus({ preventScroll: true });\n    };\n\n    _this.closeWithTimeout = function () {\n      var closesAt = Date.now() + _this.props.closeTimeoutMS;\n      _this.setState({ beforeClose: true, closesAt: closesAt }, function () {\n        _this.closeTimer = setTimeout(_this.closeWithoutTimeout, _this.state.closesAt - Date.now());\n      });\n    };\n\n    _this.closeWithoutTimeout = function () {\n      _this.setState({\n        beforeClose: false,\n        isOpen: false,\n        afterOpen: false,\n        closesAt: null\n      }, _this.afterClose);\n    };\n\n    _this.handleKeyDown = function (event) {\n      if (isTabKey(event)) {\n        (0, _scopeTab2.default)(_this.content, event);\n      }\n\n      if (_this.props.shouldCloseOnEsc && isEscKey(event)) {\n        event.stopPropagation();\n        _this.requestClose(event);\n      }\n    };\n\n    _this.handleOverlayOnClick = function (event) {\n      if (_this.shouldClose === null) {\n        _this.shouldClose = true;\n      }\n\n      if (_this.shouldClose && _this.props.shouldCloseOnOverlayClick) {\n        if (_this.ownerHandlesClose()) {\n          _this.requestClose(event);\n        } else {\n          _this.focusContent();\n        }\n      }\n      _this.shouldClose = null;\n    };\n\n    _this.handleContentOnMouseUp = function () {\n      _this.shouldClose = false;\n    };\n\n    _this.handleOverlayOnMouseDown = function (event) {\n      if (!_this.props.shouldCloseOnOverlayClick && event.target == _this.overlay) {\n        event.preventDefault();\n      }\n    };\n\n    _this.handleContentOnClick = function () {\n      _this.shouldClose = false;\n    };\n\n    _this.handleContentOnMouseDown = function () {\n      _this.shouldClose = false;\n    };\n\n    _this.requestClose = function (event) {\n      return _this.ownerHandlesClose() && _this.props.onRequestClose(event);\n    };\n\n    _this.ownerHandlesClose = function () {\n      return _this.props.onRequestClose;\n    };\n\n    _this.shouldBeClosed = function () {\n      return !_this.state.isOpen && !_this.state.beforeClose;\n    };\n\n    _this.contentHasFocus = function () {\n      return document.activeElement === _this.content || _this.content.contains(document.activeElement);\n    };\n\n    _this.buildClassName = function (which, additional) {\n      var classNames = (typeof additional === \"undefined\" ? \"undefined\" : _typeof(additional)) === \"object\" ? additional : {\n        base: CLASS_NAMES[which],\n        afterOpen: CLASS_NAMES[which] + \"--after-open\",\n        beforeClose: CLASS_NAMES[which] + \"--before-close\"\n      };\n      var className = classNames.base;\n      if (_this.state.afterOpen) {\n        className = className + \" \" + classNames.afterOpen;\n      }\n      if (_this.state.beforeClose) {\n        className = className + \" \" + classNames.beforeClose;\n      }\n      return typeof additional === \"string\" && additional ? className + \" \" + additional : className;\n    };\n\n    _this.attributesFromObject = function (prefix, items) {\n      return Object.keys(items).reduce(function (acc, name) {\n        acc[prefix + \"-\" + name] = items[name];\n        return acc;\n      }, {});\n    };\n\n    _this.state = {\n      afterOpen: false,\n      beforeClose: false\n    };\n\n    _this.shouldClose = null;\n    _this.moveFromContentToOverlay = null;\n    return _this;\n  }\n\n  _createClass(ModalPortal, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      if (this.props.isOpen) {\n        this.open();\n      }\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate(prevProps, prevState) {\n      if (process.env.NODE_ENV !== \"production\") {\n        if (prevProps.bodyOpenClassName !== this.props.bodyOpenClassName) {\n          // eslint-disable-next-line no-console\n          console.warn('React-Modal: \"bodyOpenClassName\" prop has been modified. ' + \"This may cause unexpected behavior when multiple modals are open.\");\n        }\n        if (prevProps.htmlOpenClassName !== this.props.htmlOpenClassName) {\n          // eslint-disable-next-line no-console\n          console.warn('React-Modal: \"htmlOpenClassName\" prop has been modified. ' + \"This may cause unexpected behavior when multiple modals are open.\");\n        }\n      }\n\n      if (this.props.isOpen && !prevProps.isOpen) {\n        this.open();\n      } else if (!this.props.isOpen && prevProps.isOpen) {\n        this.close();\n      }\n\n      // Focus only needs to be set once when the modal is being opened\n      if (this.props.shouldFocusAfterRender && this.state.isOpen && !prevState.isOpen) {\n        this.focusContent();\n      }\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      if (this.state.isOpen) {\n        this.afterClose();\n      }\n      clearTimeout(this.closeTimer);\n      cancelAnimationFrame(this.openAnimationFrame);\n    }\n  }, {\n    key: \"beforeOpen\",\n    value: function beforeOpen() {\n      var _props = this.props,\n          appElement = _props.appElement,\n          ariaHideApp = _props.ariaHideApp,\n          htmlOpenClassName = _props.htmlOpenClassName,\n          bodyOpenClassName = _props.bodyOpenClassName,\n          parentSelector = _props.parentSelector;\n\n\n      var parentDocument = parentSelector && parentSelector().ownerDocument || document;\n\n      // Add classes.\n      bodyOpenClassName && classList.add(parentDocument.body, bodyOpenClassName);\n\n      htmlOpenClassName && classList.add(parentDocument.getElementsByTagName(\"html\")[0], htmlOpenClassName);\n\n      if (ariaHideApp) {\n        ariaHiddenInstances += 1;\n        ariaAppHider.hide(appElement);\n      }\n\n      _portalOpenInstances2.default.register(this);\n    }\n\n    // Don't steal focus from inner elements\n\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _props2 = this.props,\n          id = _props2.id,\n          className = _props2.className,\n          overlayClassName = _props2.overlayClassName,\n          defaultStyles = _props2.defaultStyles,\n          children = _props2.children;\n\n      var contentStyles = className ? {} : defaultStyles.content;\n      var overlayStyles = overlayClassName ? {} : defaultStyles.overlay;\n\n      if (this.shouldBeClosed()) {\n        return null;\n      }\n\n      var overlayProps = {\n        ref: this.setOverlayRef,\n        className: this.buildClassName(\"overlay\", overlayClassName),\n        style: _extends({}, overlayStyles, this.props.style.overlay),\n        onClick: this.handleOverlayOnClick,\n        onMouseDown: this.handleOverlayOnMouseDown\n      };\n\n      var contentProps = _extends({\n        id: id,\n        ref: this.setContentRef,\n        style: _extends({}, contentStyles, this.props.style.content),\n        className: this.buildClassName(\"content\", className),\n        tabIndex: \"-1\",\n        onKeyDown: this.handleKeyDown,\n        onMouseDown: this.handleContentOnMouseDown,\n        onMouseUp: this.handleContentOnMouseUp,\n        onClick: this.handleContentOnClick,\n        role: this.props.role,\n        \"aria-label\": this.props.contentLabel\n      }, this.attributesFromObject(\"aria\", _extends({ modal: true }, this.props.aria)), this.attributesFromObject(\"data\", this.props.data || {}), {\n        \"data-testid\": this.props.testId\n      });\n\n      var contentElement = this.props.contentElement(contentProps, children);\n      return this.props.overlayElement(overlayProps, contentElement);\n    }\n  }]);\n\n  return ModalPortal;\n}(_react.Component);\n\nModalPortal.defaultProps = {\n  style: {\n    overlay: {},\n    content: {}\n  },\n  defaultStyles: {}\n};\nModalPortal.propTypes = {\n  isOpen: _propTypes2.default.bool.isRequired,\n  defaultStyles: _propTypes2.default.shape({\n    content: _propTypes2.default.object,\n    overlay: _propTypes2.default.object\n  }),\n  style: _propTypes2.default.shape({\n    content: _propTypes2.default.object,\n    overlay: _propTypes2.default.object\n  }),\n  className: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.object]),\n  overlayClassName: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.object]),\n  parentSelector: _propTypes2.default.func,\n  bodyOpenClassName: _propTypes2.default.string,\n  htmlOpenClassName: _propTypes2.default.string,\n  ariaHideApp: _propTypes2.default.bool,\n  appElement: _propTypes2.default.oneOfType([_propTypes2.default.instanceOf(_safeHTMLElement2.default), _propTypes2.default.instanceOf(_safeHTMLElement.SafeHTMLCollection), _propTypes2.default.instanceOf(_safeHTMLElement.SafeNodeList), _propTypes2.default.arrayOf(_propTypes2.default.instanceOf(_safeHTMLElement2.default))]),\n  onAfterOpen: _propTypes2.default.func,\n  onAfterClose: _propTypes2.default.func,\n  onRequestClose: _propTypes2.default.func,\n  closeTimeoutMS: _propTypes2.default.number,\n  shouldFocusAfterRender: _propTypes2.default.bool,\n  shouldCloseOnOverlayClick: _propTypes2.default.bool,\n  shouldReturnFocusAfterClose: _propTypes2.default.bool,\n  preventScroll: _propTypes2.default.bool,\n  role: _propTypes2.default.string,\n  contentLabel: _propTypes2.default.string,\n  aria: _propTypes2.default.object,\n  data: _propTypes2.default.object,\n  children: _propTypes2.default.node,\n  shouldCloseOnEsc: _propTypes2.default.bool,\n  overlayRef: _propTypes2.default.func,\n  contentRef: _propTypes2.default.func,\n  id: _propTypes2.default.string,\n  overlayElement: _propTypes2.default.func,\n  contentElement: _propTypes2.default.func,\n  testId: _propTypes2.default.string\n};\nexports.default = ModalPortal;\nmodule.exports = exports[\"default\"];", "'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nfunction componentWillMount() {\n  // Call this.constructor.gDSFP to support sub-classes.\n  var state = this.constructor.getDerivedStateFromProps(this.props, this.state);\n  if (state !== null && state !== undefined) {\n    this.setState(state);\n  }\n}\n\nfunction componentWillReceiveProps(nextProps) {\n  // Call this.constructor.gDSFP to support sub-classes.\n  // Use the setState() updater to ensure state isn't stale in certain edge cases.\n  function updater(prevState) {\n    var state = this.constructor.getDerivedStateFromProps(nextProps, prevState);\n    return state !== null && state !== undefined ? state : null;\n  }\n  // Binding \"this\" is important for shallow renderer support.\n  this.setState(updater.bind(this));\n}\n\nfunction componentWillUpdate(nextProps, nextState) {\n  try {\n    var prevProps = this.props;\n    var prevState = this.state;\n    this.props = nextProps;\n    this.state = nextState;\n    this.__reactInternalSnapshotFlag = true;\n    this.__reactInternalSnapshot = this.getSnapshotBeforeUpdate(\n      prevProps,\n      prevState\n    );\n  } finally {\n    this.props = prevProps;\n    this.state = prevState;\n  }\n}\n\n// React may warn about cWM/cWRP/cWU methods being deprecated.\n// Add a flag to suppress these warnings for this special case.\ncomponentWillMount.__suppressDeprecationWarning = true;\ncomponentWillReceiveProps.__suppressDeprecationWarning = true;\ncomponentWillUpdate.__suppressDeprecationWarning = true;\n\nfunction polyfill(Component) {\n  var prototype = Component.prototype;\n\n  if (!prototype || !prototype.isReactComponent) {\n    throw new Error('Can only polyfill class components');\n  }\n\n  if (\n    typeof Component.getDerivedStateFromProps !== 'function' &&\n    typeof prototype.getSnapshotBeforeUpdate !== 'function'\n  ) {\n    return Component;\n  }\n\n  // If new component APIs are defined, \"unsafe\" lifecycles won't be called.\n  // Error if any of these lifecycles are present,\n  // Because they would work differently between older and newer (16.3+) versions of React.\n  var foundWillMountName = null;\n  var foundWillReceivePropsName = null;\n  var foundWillUpdateName = null;\n  if (typeof prototype.componentWillMount === 'function') {\n    foundWillMountName = 'componentWillMount';\n  } else if (typeof prototype.UNSAFE_componentWillMount === 'function') {\n    foundWillMountName = 'UNSAFE_componentWillMount';\n  }\n  if (typeof prototype.componentWillReceiveProps === 'function') {\n    foundWillReceivePropsName = 'componentWillReceiveProps';\n  } else if (typeof prototype.UNSAFE_componentWillReceiveProps === 'function') {\n    foundWillReceivePropsName = 'UNSAFE_componentWillReceiveProps';\n  }\n  if (typeof prototype.componentWillUpdate === 'function') {\n    foundWillUpdateName = 'componentWillUpdate';\n  } else if (typeof prototype.UNSAFE_componentWillUpdate === 'function') {\n    foundWillUpdateName = 'UNSAFE_componentWillUpdate';\n  }\n  if (\n    foundWillMountName !== null ||\n    foundWillReceivePropsName !== null ||\n    foundWillUpdateName !== null\n  ) {\n    var componentName = Component.displayName || Component.name;\n    var newApiName =\n      typeof Component.getDerivedStateFromProps === 'function'\n        ? 'getDerivedStateFromProps()'\n        : 'getSnapshotBeforeUpdate()';\n\n    throw Error(\n      'Unsafe legacy lifecycles will not be called for components using new component APIs.\\n\\n' +\n        componentName +\n        ' uses ' +\n        newApiName +\n        ' but also contains the following legacy lifecycles:' +\n        (foundWillMountName !== null ? '\\n  ' + foundWillMountName : '') +\n        (foundWillReceivePropsName !== null\n          ? '\\n  ' + foundWillReceivePropsName\n          : '') +\n        (foundWillUpdateName !== null ? '\\n  ' + foundWillUpdateName : '') +\n        '\\n\\nThe above lifecycles should be removed. Learn more about this warning here:\\n' +\n        'https://fb.me/react-async-component-lifecycle-hooks'\n    );\n  }\n\n  // React <= 16.2 does not support static getDerivedStateFromProps.\n  // As a workaround, use cWM and cWRP to invoke the new static lifecycle.\n  // Newer versions of React will ignore these lifecycles if gDSFP exists.\n  if (typeof Component.getDerivedStateFromProps === 'function') {\n    prototype.componentWillMount = componentWillMount;\n    prototype.componentWillReceiveProps = componentWillReceiveProps;\n  }\n\n  // React <= 16.2 does not support getSnapshotBeforeUpdate.\n  // As a workaround, use cWU to invoke the new lifecycle.\n  // Newer versions of React will ignore that lifecycle if gSBU exists.\n  if (typeof prototype.getSnapshotBeforeUpdate === 'function') {\n    if (typeof prototype.componentDidUpdate !== 'function') {\n      throw new Error(\n        'Cannot polyfill getSnapshotBeforeUpdate() for components that do not define componentDidUpdate() on the prototype'\n      );\n    }\n\n    prototype.componentWillUpdate = componentWillUpdate;\n\n    var componentDidUpdate = prototype.componentDidUpdate;\n\n    prototype.componentDidUpdate = function componentDidUpdatePolyfill(\n      prevProps,\n      prevState,\n      maybeSnapshot\n    ) {\n      // 16.3+ will not execute our will-update method;\n      // It will pass a snapshot value to did-update though.\n      // Older versions will require our polyfilled will-update value.\n      // We need to handle both cases, but can't just check for the presence of \"maybeSnapshot\",\n      // Because for <= 15.x versions this might be a \"prevContext\" object.\n      // We also can't just check \"__reactInternalSnapshot\",\n      // Because get-snapshot might return a falsy value.\n      // So check for the explicit __reactInternalSnapshotFlag flag to determine behavior.\n      var snapshot = this.__reactInternalSnapshotFlag\n        ? this.__reactInternalSnapshot\n        : maybeSnapshot;\n\n      componentDidUpdate.call(this, prevProps, prevState, snapshot);\n    };\n  }\n\n  return Component;\n}\n\nexports.polyfill = polyfill;\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.bodyOpenClassName = exports.portalClassName = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require(\"react-dom\");\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _propTypes = require(\"prop-types\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _ModalPortal = require(\"./ModalPortal\");\n\nvar _ModalPortal2 = _interopRequireDefault(_ModalPortal);\n\nvar _ariaAppHider = require(\"../helpers/ariaAppHider\");\n\nvar ariaAppHider = _interopRequireWildcard(_ariaAppHider);\n\nvar _safeHTMLElement = require(\"../helpers/safeHTMLElement\");\n\nvar _safeHTMLElement2 = _interopRequireDefault(_safeHTMLElement);\n\nvar _reactLifecyclesCompat = require(\"react-lifecycles-compat\");\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar portalClassName = exports.portalClassName = \"ReactModalPortal\";\nvar bodyOpenClassName = exports.bodyOpenClassName = \"ReactModal__Body--open\";\n\nvar isReact16 = _safeHTMLElement.canUseDOM && _reactDom2.default.createPortal !== undefined;\n\nvar createHTMLElement = function createHTMLElement(name) {\n  return document.createElement(name);\n};\n\nvar getCreatePortal = function getCreatePortal() {\n  return isReact16 ? _reactDom2.default.createPortal : _reactDom2.default.unstable_renderSubtreeIntoContainer;\n};\n\nfunction getParentElement(parentSelector) {\n  return parentSelector();\n}\n\nvar Modal = function (_Component) {\n  _inherits(Modal, _Component);\n\n  function Modal() {\n    var _ref;\n\n    var _temp, _this, _ret;\n\n    _classCallCheck(this, Modal);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Modal.__proto__ || Object.getPrototypeOf(Modal)).call.apply(_ref, [this].concat(args))), _this), _this.removePortal = function () {\n      !isReact16 && _reactDom2.default.unmountComponentAtNode(_this.node);\n      var parent = getParentElement(_this.props.parentSelector);\n      if (parent && parent.contains(_this.node)) {\n        parent.removeChild(_this.node);\n      } else {\n        // eslint-disable-next-line no-console\n        console.warn('React-Modal: \"parentSelector\" prop did not returned any DOM ' + \"element. Make sure that the parent element is unmounted to \" + \"avoid any memory leaks.\");\n      }\n    }, _this.portalRef = function (ref) {\n      _this.portal = ref;\n    }, _this.renderPortal = function (props) {\n      var createPortal = getCreatePortal();\n      var portal = createPortal(_this, _react2.default.createElement(_ModalPortal2.default, _extends({ defaultStyles: Modal.defaultStyles }, props)), _this.node);\n      _this.portalRef(portal);\n    }, _temp), _possibleConstructorReturn(_this, _ret);\n  }\n\n  _createClass(Modal, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      if (!_safeHTMLElement.canUseDOM) return;\n\n      if (!isReact16) {\n        this.node = createHTMLElement(\"div\");\n      }\n      this.node.className = this.props.portalClassName;\n\n      var parent = getParentElement(this.props.parentSelector);\n      parent.appendChild(this.node);\n\n      !isReact16 && this.renderPortal(this.props);\n    }\n  }, {\n    key: \"getSnapshotBeforeUpdate\",\n    value: function getSnapshotBeforeUpdate(prevProps) {\n      var prevParent = getParentElement(prevProps.parentSelector);\n      var nextParent = getParentElement(this.props.parentSelector);\n      return { prevParent: prevParent, nextParent: nextParent };\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate(prevProps, _, snapshot) {\n      if (!_safeHTMLElement.canUseDOM) return;\n      var _props = this.props,\n          isOpen = _props.isOpen,\n          portalClassName = _props.portalClassName;\n\n\n      if (prevProps.portalClassName !== portalClassName) {\n        this.node.className = portalClassName;\n      }\n\n      var prevParent = snapshot.prevParent,\n          nextParent = snapshot.nextParent;\n\n      if (nextParent !== prevParent) {\n        prevParent.removeChild(this.node);\n        nextParent.appendChild(this.node);\n      }\n\n      // Stop unnecessary renders if modal is remaining closed\n      if (!prevProps.isOpen && !isOpen) return;\n\n      !isReact16 && this.renderPortal(this.props);\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      if (!_safeHTMLElement.canUseDOM || !this.node || !this.portal) return;\n\n      var state = this.portal.state;\n      var now = Date.now();\n      var closesAt = state.isOpen && this.props.closeTimeoutMS && (state.closesAt || now + this.props.closeTimeoutMS);\n\n      if (closesAt) {\n        if (!state.beforeClose) {\n          this.portal.closeWithTimeout();\n        }\n\n        setTimeout(this.removePortal, closesAt - now);\n      } else {\n        this.removePortal();\n      }\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      if (!_safeHTMLElement.canUseDOM || !isReact16) {\n        return null;\n      }\n\n      if (!this.node && isReact16) {\n        this.node = createHTMLElement(\"div\");\n      }\n\n      var createPortal = getCreatePortal();\n      return createPortal(_react2.default.createElement(_ModalPortal2.default, _extends({\n        ref: this.portalRef,\n        defaultStyles: Modal.defaultStyles\n      }, this.props)), this.node);\n    }\n  }], [{\n    key: \"setAppElement\",\n    value: function setAppElement(element) {\n      ariaAppHider.setElement(element);\n    }\n\n    /* eslint-disable react/no-unused-prop-types */\n\n    /* eslint-enable react/no-unused-prop-types */\n\n  }]);\n\n  return Modal;\n}(_react.Component);\n\nModal.propTypes = {\n  isOpen: _propTypes2.default.bool.isRequired,\n  style: _propTypes2.default.shape({\n    content: _propTypes2.default.object,\n    overlay: _propTypes2.default.object\n  }),\n  portalClassName: _propTypes2.default.string,\n  bodyOpenClassName: _propTypes2.default.string,\n  htmlOpenClassName: _propTypes2.default.string,\n  className: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.shape({\n    base: _propTypes2.default.string.isRequired,\n    afterOpen: _propTypes2.default.string.isRequired,\n    beforeClose: _propTypes2.default.string.isRequired\n  })]),\n  overlayClassName: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.shape({\n    base: _propTypes2.default.string.isRequired,\n    afterOpen: _propTypes2.default.string.isRequired,\n    beforeClose: _propTypes2.default.string.isRequired\n  })]),\n  appElement: _propTypes2.default.oneOfType([_propTypes2.default.instanceOf(_safeHTMLElement2.default), _propTypes2.default.instanceOf(_safeHTMLElement.SafeHTMLCollection), _propTypes2.default.instanceOf(_safeHTMLElement.SafeNodeList), _propTypes2.default.arrayOf(_propTypes2.default.instanceOf(_safeHTMLElement2.default))]),\n  onAfterOpen: _propTypes2.default.func,\n  onRequestClose: _propTypes2.default.func,\n  closeTimeoutMS: _propTypes2.default.number,\n  ariaHideApp: _propTypes2.default.bool,\n  shouldFocusAfterRender: _propTypes2.default.bool,\n  shouldCloseOnOverlayClick: _propTypes2.default.bool,\n  shouldReturnFocusAfterClose: _propTypes2.default.bool,\n  preventScroll: _propTypes2.default.bool,\n  parentSelector: _propTypes2.default.func,\n  aria: _propTypes2.default.object,\n  data: _propTypes2.default.object,\n  role: _propTypes2.default.string,\n  contentLabel: _propTypes2.default.string,\n  shouldCloseOnEsc: _propTypes2.default.bool,\n  overlayRef: _propTypes2.default.func,\n  contentRef: _propTypes2.default.func,\n  id: _propTypes2.default.string,\n  overlayElement: _propTypes2.default.func,\n  contentElement: _propTypes2.default.func\n};\nModal.defaultProps = {\n  isOpen: false,\n  portalClassName: portalClassName,\n  bodyOpenClassName: bodyOpenClassName,\n  role: \"dialog\",\n  ariaHideApp: true,\n  closeTimeoutMS: 0,\n  shouldFocusAfterRender: true,\n  shouldCloseOnEsc: true,\n  shouldCloseOnOverlayClick: true,\n  shouldReturnFocusAfterClose: true,\n  preventScroll: false,\n  parentSelector: function parentSelector() {\n    return document.body;\n  },\n  overlayElement: function overlayElement(props, contentEl) {\n    return _react2.default.createElement(\n      \"div\",\n      props,\n      contentEl\n    );\n  },\n  contentElement: function contentElement(props, children) {\n    return _react2.default.createElement(\n      \"div\",\n      props,\n      children\n    );\n  }\n};\nModal.defaultStyles = {\n  overlay: {\n    position: \"fixed\",\n    top: 0,\n    left: 0,\n    right: 0,\n    bottom: 0,\n    backgroundColor: \"rgba(255, 255, 255, 0.75)\"\n  },\n  content: {\n    position: \"absolute\",\n    top: \"40px\",\n    left: \"40px\",\n    right: \"40px\",\n    bottom: \"40px\",\n    border: \"1px solid #ccc\",\n    background: \"#fff\",\n    overflow: \"auto\",\n    WebkitOverflowScrolling: \"touch\",\n    borderRadius: \"4px\",\n    outline: \"none\",\n    padding: \"20px\"\n  }\n};\n\n\n(0, _reactLifecyclesCompat.polyfill)(Modal);\n\nif (process.env.NODE_ENV !== \"production\") {\n  Modal.setCreateHTMLElement = function (fn) {\n    return createHTMLElement = fn;\n  };\n}\n\nexports.default = Modal;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _Modal = require(\"./components/Modal\");\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _Modal2.default;\nmodule.exports = exports[\"default\"];", "!function(e,t){if(\"object\"==typeof exports&&\"object\"==typeof module)module.exports=t(require(\"react\"));else if(\"function\"==typeof define&&define.amd)define([\"react\"],t);else{var n=\"object\"==typeof exports?t(require(\"react\")):t(e.react);for(var r in n)(\"object\"==typeof exports?exports:e)[r]=n[r]}}(this,(function(e){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,\"a\",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=\"\",n(n.s=4)}([function(e,t,n){e.exports=n(2)()},function(t,n){t.exports=e},function(e,t,n){\"use strict\";var r=n(3);function o(){}function i(){}i.resetWarningCache=o,e.exports=function(){function e(e,t,n,o,i,s){if(s!==r){var a=new Error(\"Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types\");throw a.name=\"Invariant Violation\",a}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:i,resetWarningCache:o};return n.PropTypes=n,n}},function(e,t,n){\"use strict\";e.exports=\"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED\"},function(e,t,n){\"use strict\";n.r(t);var r=n(1),o=n.n(r),i=n(0),s=n.n(i),a=function(e){return 0!==e};function l(){return(l=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}function c(e){return(c=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function p(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 u(e,t){return(u=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e})(e,t)}function g(e){var t=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,r=d(e);if(t){var o=d(this).constructor;n=Reflect.construct(r,arguments,o)}else n=r.apply(this,arguments);return f(this,n)}}function f(e,t){if(t&&(\"object\"===c(t)||\"function\"==typeof t))return t;if(void 0!==t)throw new TypeError(\"Derived constructors may only return object or undefined\");return h(e)}function h(e){if(void 0===e)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return e}function d(e){return(d=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function b(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var m=function(e){!function(e,t){if(\"function\"!=typeof t&&null!==t)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&&u(e,t)}(s,e);var t,n,r,i=g(s);function s(e){var t;return function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,s),b(h(t=i.call(this,e)),\"continueOpenCollapsible\",(function(){var e=h(t).innerRef;t.setState({height:e.scrollHeight,transition:\"height \".concat(t.props.transitionTime,\"ms \").concat(t.props.easing),isClosed:!1,hasBeenOpened:!0,inTransition:a(e.scrollHeight),shouldOpenOnNextCycle:!1})})),b(h(t),\"handleTriggerClick\",(function(e){t.props.triggerDisabled||t.state.inTransition||(e.preventDefault(),t.props.handleTriggerClick?t.props.handleTriggerClick(t.props.accordionPosition):!0===t.state.isClosed?(t.openCollapsible(),t.props.onOpening(),t.props.onTriggerOpening()):(t.closeCollapsible(),t.props.onClosing(),t.props.onTriggerClosing()))})),b(h(t),\"handleTransitionEnd\",(function(e){e.target===t.innerRef&&(t.state.isClosed?(t.setState({inTransition:!1}),t.props.onClose()):(t.setState({height:\"auto\",overflow:t.props.overflowWhenOpen,inTransition:!1}),t.props.onOpen()))})),b(h(t),\"setInnerRef\",(function(e){return t.innerRef=e})),t.timeout=void 0,t.contentId=e.contentElementId||\"collapsible-content-\".concat(Date.now()),t.triggerId=e.triggerElementProps.id||\"collapsible-trigger-\".concat(Date.now()),e.open?t.state={isClosed:!1,shouldSwitchAutoOnNextCycle:!1,height:\"auto\",transition:\"none\",hasBeenOpened:!0,overflow:e.overflowWhenOpen,inTransition:!1}:t.state={isClosed:!0,shouldSwitchAutoOnNextCycle:!1,height:0,transition:\"height \".concat(e.transitionTime,\"ms \").concat(e.easing),hasBeenOpened:!1,overflow:\"hidden\",inTransition:!1},t}return t=s,(n=[{key:\"componentDidUpdate\",value:function(e,t){var n=this;this.state.shouldOpenOnNextCycle&&this.continueOpenCollapsible(),\"auto\"!==t.height&&0!==t.height||!0!==this.state.shouldSwitchAutoOnNextCycle||(window.clearTimeout(this.timeout),this.timeout=window.setTimeout((function(){n.setState({height:0,overflow:\"hidden\",isClosed:!0,shouldSwitchAutoOnNextCycle:!1})}),50)),e.open!==this.props.open&&(!0===this.props.open?(this.openCollapsible(),this.props.onOpening()):(this.closeCollapsible(),this.props.onClosing()))}},{key:\"componentWillUnmount\",value:function(){window.clearTimeout(this.timeout)}},{key:\"closeCollapsible\",value:function(){var e=this.innerRef;this.setState({shouldSwitchAutoOnNextCycle:!0,height:e.scrollHeight,transition:\"height \".concat(this.props.transitionCloseTime?this.props.transitionCloseTime:this.props.transitionTime,\"ms \").concat(this.props.easing),inTransition:a(e.scrollHeight)})}},{key:\"openCollapsible\",value:function(){this.setState({inTransition:a(this.innerRef.scrollHeight),shouldOpenOnNextCycle:!0})}},{key:\"renderNonClickableTriggerElement\",value:function(){var e=this.props,t=e.triggerSibling,n=e.classParentString;if(!t)return null;switch(c(t)){case\"string\":return o.a.createElement(\"span\",{className:\"\".concat(n,\"__trigger-sibling\")},t);case\"function\":return t();case\"object\":return t;default:return null}}},{key:\"render\",value:function(){var e=this,t={height:this.state.height,WebkitTransition:this.state.transition,msTransition:this.state.transition,transition:this.state.transition,overflow:this.state.overflow},n=this.state.isClosed?\"is-closed\":\"is-open\",r=this.props.triggerDisabled?\"is-disabled\":\"\",i=!1===this.state.isClosed&&void 0!==this.props.triggerWhenOpen?this.props.triggerWhenOpen:this.props.trigger,s=this.props.contentContainerTagName,a=this.props.triggerTagName,c=this.props.lazyRender&&!this.state.hasBeenOpened&&this.state.isClosed&&!this.state.inTransition?null:this.props.children,p=this.props,u=p.classParentString,g=p.contentOuterClassName,f=p.contentInnerClassName,h=\"\".concat(u,\"__trigger \").concat(n,\" \").concat(r,\" \").concat(this.state.isClosed?this.props.triggerClassName:this.props.triggerOpenedClassName),d=\"\".concat(u,\" \").concat(this.state.isClosed?this.props.className:this.props.openedClassName),b=\"\".concat(u,\"__contentOuter \").concat(g),m=\"\".concat(u,\"__contentInner \").concat(f);return o.a.createElement(s,l({className:d.trim()},this.props.containerElementProps),o.a.createElement(a,l({id:this.triggerId,className:h.trim(),onClick:this.handleTriggerClick,style:this.props.triggerStyle&&this.props.triggerStyle,onKeyPress:function(t){var n=t.key;(\" \"===n&&\"button\"!==e.props.triggerTagName.toLowerCase()||\"Enter\"===n)&&e.handleTriggerClick(t)},tabIndex:this.props.tabIndex&&this.props.tabIndex,\"aria-expanded\":!this.state.isClosed,\"aria-disabled\":this.props.triggerDisabled,\"aria-controls\":this.contentId,role:\"button\"},this.props.triggerElementProps),i),this.renderNonClickableTriggerElement(),o.a.createElement(\"div\",{id:this.contentId,className:b.trim(),style:t,onTransitionEnd:this.handleTransitionEnd,ref:this.setInnerRef,hidden:this.props.contentHiddenWhenClosed&&this.state.isClosed&&!this.state.inTransition,role:\"region\",\"aria-labelledby\":this.triggerId},o.a.createElement(\"div\",{className:m.trim()},c)))}}])&&p(t.prototype,n),r&&p(t,r),Object.defineProperty(t,\"prototype\",{writable:!1}),s}(r.Component);m.propTypes={transitionTime:s.a.number,transitionCloseTime:s.a.number,triggerTagName:s.a.string,easing:s.a.string,open:s.a.bool,containerElementProps:s.a.object,triggerElementProps:s.a.object,contentElementId:s.a.string,classParentString:s.a.string,className:s.a.string,openedClassName:s.a.string,triggerStyle:s.a.object,triggerClassName:s.a.string,triggerOpenedClassName:s.a.string,contentOuterClassName:s.a.string,contentInnerClassName:s.a.string,accordionPosition:s.a.oneOfType([s.a.string,s.a.number]),handleTriggerClick:s.a.func,onOpen:s.a.func,onClose:s.a.func,onOpening:s.a.func,onClosing:s.a.func,onTriggerOpening:s.a.func,onTriggerClosing:s.a.func,trigger:s.a.oneOfType([s.a.string,s.a.element]),triggerWhenOpen:s.a.oneOfType([s.a.string,s.a.element]),triggerDisabled:s.a.bool,lazyRender:s.a.bool,overflowWhenOpen:s.a.oneOf([\"hidden\",\"visible\",\"auto\",\"scroll\",\"inherit\",\"initial\",\"unset\"]),contentHiddenWhenClosed:s.a.bool,triggerSibling:s.a.oneOfType([s.a.string,s.a.element,s.a.func]),tabIndex:s.a.number,contentContainerTagName:s.a.string,children:s.a.oneOfType([s.a.string,s.a.element])},m.defaultProps={transitionTime:400,transitionCloseTime:null,triggerTagName:\"span\",easing:\"linear\",open:!1,classParentString:\"Collapsible\",triggerDisabled:!1,lazyRender:!1,overflowWhenOpen:\"hidden\",contentHiddenWhenClosed:!1,openedClassName:\"\",triggerStyle:null,triggerClassName:\"\",triggerOpenedClassName:\"\",contentOuterClassName:\"\",contentInnerClassName:\"\",className:\"\",triggerSibling:null,onOpen:function(){},onClose:function(){},onOpening:function(){},onClosing:function(){},onTriggerOpening:function(){},onTriggerClosing:function(){},tabIndex:null,contentContainerTagName:\"div\",triggerElementProps:{}};t.default=m}])}));", "'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n  return function wrap() {\n    var args = new Array(arguments.length);\n    for (var i = 0; i < args.length; i++) {\n      args[i] = arguments[i];\n    }\n    return fn.apply(thisArg, args);\n  };\n};\n", "'use strict';\n\nvar bind = require('./helpers/bind');\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n// eslint-disable-next-line func-names\nvar kindOf = (function(cache) {\n  // eslint-disable-next-line func-names\n  return function(thing) {\n    var str = toString.call(thing);\n    return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n  };\n})(Object.create(null));\n\nfunction kindOfTest(type) {\n  type = type.toLowerCase();\n  return function isKindOf(thing) {\n    return kindOf(thing) === type;\n  };\n}\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n  return Array.isArray(val);\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n  return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n  return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n    && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nvar isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n  var result;\n  if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n    result = ArrayBuffer.isView(val);\n  } else {\n    result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n  }\n  return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n  return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n  return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n  return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n  if (kindOf(val) !== 'object') {\n    return false;\n  }\n\n  var prototype = Object.getPrototypeOf(val);\n  return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nvar isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nvar isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nvar isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nvar isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n  return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n  return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} thing The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(thing) {\n  var pattern = '[object FormData]';\n  return thing && (\n    (typeof FormData === 'function' && thing instanceof FormData) ||\n    toString.call(thing) === pattern ||\n    (isFunction(thing.toString) && thing.toString() === pattern)\n  );\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nvar isURLSearchParams = kindOfTest('URLSearchParams');\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n  return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n *  typeof window -> undefined\n *  typeof document -> undefined\n *\n * react-native:\n *  navigator.product -> 'ReactNative'\n * nativescript\n *  navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n  if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n                                           navigator.product === 'NativeScript' ||\n                                           navigator.product === 'NS')) {\n    return false;\n  }\n  return (\n    typeof window !== 'undefined' &&\n    typeof document !== 'undefined'\n  );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n  // Don't bother if no value provided\n  if (obj === null || typeof obj === 'undefined') {\n    return;\n  }\n\n  // Force an array if not already something iterable\n  if (typeof obj !== 'object') {\n    /*eslint no-param-reassign:0*/\n    obj = [obj];\n  }\n\n  if (isArray(obj)) {\n    // Iterate over array values\n    for (var i = 0, l = obj.length; i < l; i++) {\n      fn.call(null, obj[i], i, obj);\n    }\n  } else {\n    // Iterate over object keys\n    for (var key in obj) {\n      if (Object.prototype.hasOwnProperty.call(obj, key)) {\n        fn.call(null, obj[key], key, obj);\n      }\n    }\n  }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n  var result = {};\n  function assignValue(val, key) {\n    if (isPlainObject(result[key]) && isPlainObject(val)) {\n      result[key] = merge(result[key], val);\n    } else if (isPlainObject(val)) {\n      result[key] = merge({}, val);\n    } else if (isArray(val)) {\n      result[key] = val.slice();\n    } else {\n      result[key] = val;\n    }\n  }\n\n  for (var i = 0, l = arguments.length; i < l; i++) {\n    forEach(arguments[i], assignValue);\n  }\n  return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n  forEach(b, function assignValue(val, key) {\n    if (thisArg && typeof val === 'function') {\n      a[key] = bind(val, thisArg);\n    } else {\n      a[key] = val;\n    }\n  });\n  return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n  if (content.charCodeAt(0) === 0xFEFF) {\n    content = content.slice(1);\n  }\n  return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n */\n\nfunction inherits(constructor, superConstructor, props, descriptors) {\n  constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n  constructor.prototype.constructor = constructor;\n  props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function} [filter]\n * @returns {Object}\n */\n\nfunction toFlatObject(sourceObj, destObj, filter) {\n  var props;\n  var i;\n  var prop;\n  var merged = {};\n\n  destObj = destObj || {};\n\n  do {\n    props = Object.getOwnPropertyNames(sourceObj);\n    i = props.length;\n    while (i-- > 0) {\n      prop = props[i];\n      if (!merged[prop]) {\n        destObj[prop] = sourceObj[prop];\n        merged[prop] = true;\n      }\n    }\n    sourceObj = Object.getPrototypeOf(sourceObj);\n  } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n  return destObj;\n}\n\n/*\n * determines whether a string ends with the characters of a specified string\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n * @returns {boolean}\n */\nfunction endsWith(str, searchString, position) {\n  str = String(str);\n  if (position === undefined || position > str.length) {\n    position = str.length;\n  }\n  position -= searchString.length;\n  var lastIndex = str.indexOf(searchString, position);\n  return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object\n * @param {*} [thing]\n * @returns {Array}\n */\nfunction toArray(thing) {\n  if (!thing) return null;\n  var i = thing.length;\n  if (isUndefined(i)) return null;\n  var arr = new Array(i);\n  while (i-- > 0) {\n    arr[i] = thing[i];\n  }\n  return arr;\n}\n\n// eslint-disable-next-line func-names\nvar isTypedArray = (function(TypedArray) {\n  // eslint-disable-next-line func-names\n  return function(thing) {\n    return TypedArray && thing instanceof TypedArray;\n  };\n})(typeof Uint8Array !== 'undefined' && Object.getPrototypeOf(Uint8Array));\n\nmodule.exports = {\n  isArray: isArray,\n  isArrayBuffer: isArrayBuffer,\n  isBuffer: isBuffer,\n  isFormData: isFormData,\n  isArrayBufferView: isArrayBufferView,\n  isString: isString,\n  isNumber: isNumber,\n  isObject: isObject,\n  isPlainObject: isPlainObject,\n  isUndefined: isUndefined,\n  isDate: isDate,\n  isFile: isFile,\n  isBlob: isBlob,\n  isFunction: isFunction,\n  isStream: isStream,\n  isURLSearchParams: isURLSearchParams,\n  isStandardBrowserEnv: isStandardBrowserEnv,\n  forEach: forEach,\n  merge: merge,\n  extend: extend,\n  trim: trim,\n  stripBOM: stripBOM,\n  inherits: inherits,\n  toFlatObject: toFlatObject,\n  kindOf: kindOf,\n  kindOfTest: kindOfTest,\n  endsWith: endsWith,\n  toArray: toArray,\n  isTypedArray: isTypedArray,\n  isFileList: isFileList\n};\n", "'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n  return encodeURIComponent(val).\n    replace(/%3A/gi, ':').\n    replace(/%24/g, '$').\n    replace(/%2C/gi, ',').\n    replace(/%20/g, '+').\n    replace(/%5B/gi, '[').\n    replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n  /*eslint no-param-reassign:0*/\n  if (!params) {\n    return url;\n  }\n\n  var serializedParams;\n  if (paramsSerializer) {\n    serializedParams = paramsSerializer(params);\n  } else if (utils.isURLSearchParams(params)) {\n    serializedParams = params.toString();\n  } else {\n    var parts = [];\n\n    utils.forEach(params, function serialize(val, key) {\n      if (val === null || typeof val === 'undefined') {\n        return;\n      }\n\n      if (utils.isArray(val)) {\n        key = key + '[]';\n      } else {\n        val = [val];\n      }\n\n      utils.forEach(val, function parseValue(v) {\n        if (utils.isDate(v)) {\n          v = v.toISOString();\n        } else if (utils.isObject(v)) {\n          v = JSON.stringify(v);\n        }\n        parts.push(encode(key) + '=' + encode(v));\n      });\n    });\n\n    serializedParams = parts.join('&');\n  }\n\n  if (serializedParams) {\n    var hashmarkIndex = url.indexOf('#');\n    if (hashmarkIndex !== -1) {\n      url = url.slice(0, hashmarkIndex);\n    }\n\n    url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n  }\n\n  return url;\n};\n", "'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n  this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n  this.handlers.push({\n    fulfilled: fulfilled,\n    rejected: rejected,\n    synchronous: options ? options.synchronous : false,\n    runWhen: options ? options.runWhen : null\n  });\n  return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n  if (this.handlers[id]) {\n    this.handlers[id] = null;\n  }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n  utils.forEach(this.handlers, function forEachHandler(h) {\n    if (h !== null) {\n      fn(h);\n    }\n  });\n};\n\nmodule.exports = InterceptorManager;\n", "'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n  utils.forEach(headers, function processHeader(value, name) {\n    if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n      headers[normalizedName] = value;\n      delete headers[name];\n    }\n  });\n};\n", "'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n  Error.call(this);\n  this.message = message;\n  this.name = 'AxiosError';\n  code && (this.code = code);\n  config && (this.config = config);\n  request && (this.request = request);\n  response && (this.response = response);\n}\n\nutils.inherits(AxiosError, Error, {\n  toJSON: function toJSON() {\n    return {\n      // Standard\n      message: this.message,\n      name: this.name,\n      // Microsoft\n      description: this.description,\n      number: this.number,\n      // Mozilla\n      fileName: this.fileName,\n      lineNumber: this.lineNumber,\n      columnNumber: this.columnNumber,\n      stack: this.stack,\n      // Axios\n      config: this.config,\n      code: this.code,\n      status: this.response && this.response.status ? this.response.status : null\n    };\n  }\n});\n\nvar prototype = AxiosError.prototype;\nvar descriptors = {};\n\n[\n  'ERR_BAD_OPTION_VALUE',\n  'ERR_BAD_OPTION',\n  'ECONNABORTED',\n  'ETIMEDOUT',\n  'ERR_NETWORK',\n  'ERR_FR_TOO_MANY_REDIRECTS',\n  'ERR_DEPRECATED',\n  'ERR_BAD_RESPONSE',\n  'ERR_BAD_REQUEST',\n  'ERR_CANCELED'\n// eslint-disable-next-line func-names\n].forEach(function(code) {\n  descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = function(error, code, config, request, response, customProps) {\n  var axiosError = Object.create(prototype);\n\n  utils.toFlatObject(error, axiosError, function filter(obj) {\n    return obj !== Error.prototype;\n  });\n\n  AxiosError.call(axiosError, error.message, code, config, request, response);\n\n  axiosError.name = error.name;\n\n  customProps && Object.assign(axiosError, customProps);\n\n  return axiosError;\n};\n\nmodule.exports = AxiosError;\n", "'use strict';\n\nmodule.exports = {\n  silentJSONParsing: true,\n  forcedJSONParsing: true,\n  clarifyTimeoutError: false\n};\n", "'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Convert a data object to FormData\n * @param {Object} obj\n * @param {?Object} [formData]\n * @returns {Object}\n **/\n\nfunction toFormData(obj, formData) {\n  // eslint-disable-next-line no-param-reassign\n  formData = formData || new FormData();\n\n  var stack = [];\n\n  function convertValue(value) {\n    if (value === null) return '';\n\n    if (utils.isDate(value)) {\n      return value.toISOString();\n    }\n\n    if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n      return typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n    }\n\n    return value;\n  }\n\n  function build(data, parentKey) {\n    if (utils.isPlainObject(data) || utils.isArray(data)) {\n      if (stack.indexOf(data) !== -1) {\n        throw Error('Circular reference detected in ' + parentKey);\n      }\n\n      stack.push(data);\n\n      utils.forEach(data, function each(value, key) {\n        if (utils.isUndefined(value)) return;\n        var fullKey = parentKey ? parentKey + '.' + key : key;\n        var arr;\n\n        if (value && !parentKey && typeof value === 'object') {\n          if (utils.endsWith(key, '{}')) {\n            // eslint-disable-next-line no-param-reassign\n            value = JSON.stringify(value);\n          } else if (utils.endsWith(key, '[]') && (arr = utils.toArray(value))) {\n            // eslint-disable-next-line func-names\n            arr.forEach(function(el) {\n              !utils.isUndefined(el) && formData.append(fullKey, convertValue(el));\n            });\n            return;\n          }\n        }\n\n        build(value, fullKey);\n      });\n\n      stack.pop();\n    } else {\n      formData.append(parentKey, convertValue(data));\n    }\n  }\n\n  build(obj);\n\n  return formData;\n}\n\nmodule.exports = toFormData;\n", "'use strict';\n\nvar AxiosError = require('./AxiosError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n  var validateStatus = response.config.validateStatus;\n  if (!response.status || !validateStatus || validateStatus(response.status)) {\n    resolve(response);\n  } else {\n    reject(new AxiosError(\n      'Request failed with status code ' + response.status,\n      [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n      response.config,\n      response.request,\n      response\n    ));\n  }\n};\n", "'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n  utils.isStandardBrowserEnv() ?\n\n  // Standard browser envs support document.cookie\n    (function standardBrowserEnv() {\n      return {\n        write: function write(name, value, expires, path, domain, secure) {\n          var cookie = [];\n          cookie.push(name + '=' + encodeURIComponent(value));\n\n          if (utils.isNumber(expires)) {\n            cookie.push('expires=' + new Date(expires).toGMTString());\n          }\n\n          if (utils.isString(path)) {\n            cookie.push('path=' + path);\n          }\n\n          if (utils.isString(domain)) {\n            cookie.push('domain=' + domain);\n          }\n\n          if (secure === true) {\n            cookie.push('secure');\n          }\n\n          document.cookie = cookie.join('; ');\n        },\n\n        read: function read(name) {\n          var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n          return (match ? decodeURIComponent(match[3]) : null);\n        },\n\n        remove: function remove(name) {\n          this.write(name, '', Date.now() - 86400000);\n        }\n      };\n    })() :\n\n  // Non standard browser env (web workers, react-native) lack needed support.\n    (function nonStandardBrowserEnv() {\n      return {\n        write: function write() {},\n        read: function read() { return null; },\n        remove: function remove() {}\n      };\n    })()\n);\n", "'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n  // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n  // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n  // by any combination of letters, digits, plus, period, or hyphen.\n  return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n};\n", "'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n  return relativeURL\n    ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n    : baseURL;\n};\n", "'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n  if (baseURL && !isAbsoluteURL(requestedURL)) {\n    return combineURLs(baseURL, requestedURL);\n  }\n  return requestedURL;\n};\n", "'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n  'age', 'authorization', 'content-length', 'content-type', 'etag',\n  'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n  'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n  'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n  var parsed = {};\n  var key;\n  var val;\n  var i;\n\n  if (!headers) { return parsed; }\n\n  utils.forEach(headers.split('\\n'), function parser(line) {\n    i = line.indexOf(':');\n    key = utils.trim(line.substr(0, i)).toLowerCase();\n    val = utils.trim(line.substr(i + 1));\n\n    if (key) {\n      if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n        return;\n      }\n      if (key === 'set-cookie') {\n        parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n      } else {\n        parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n      }\n    }\n  });\n\n  return parsed;\n};\n", "'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n  utils.isStandardBrowserEnv() ?\n\n  // Standard browser envs have full support of the APIs needed to test\n  // whether the request URL is of the same origin as current location.\n    (function standardBrowserEnv() {\n      var msie = /(msie|trident)/i.test(navigator.userAgent);\n      var urlParsingNode = document.createElement('a');\n      var originURL;\n\n      /**\n    * Parse a URL to discover it's components\n    *\n    * @param {String} url The URL to be parsed\n    * @returns {Object}\n    */\n      function resolveURL(url) {\n        var href = url;\n\n        if (msie) {\n        // IE needs attribute set twice to normalize properties\n          urlParsingNode.setAttribute('href', href);\n          href = urlParsingNode.href;\n        }\n\n        urlParsingNode.setAttribute('href', href);\n\n        // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n        return {\n          href: urlParsingNode.href,\n          protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n          host: urlParsingNode.host,\n          search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n          hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n          hostname: urlParsingNode.hostname,\n          port: urlParsingNode.port,\n          pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n            urlParsingNode.pathname :\n            '/' + urlParsingNode.pathname\n        };\n      }\n\n      originURL = resolveURL(window.location.href);\n\n      /**\n    * Determine if a URL shares the same origin as the current location\n    *\n    * @param {String} requestURL The URL to test\n    * @returns {boolean} True if URL shares the same origin, otherwise false\n    */\n      return function isURLSameOrigin(requestURL) {\n        var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n        return (parsed.protocol === originURL.protocol &&\n            parsed.host === originURL.host);\n      };\n    })() :\n\n  // Non standard browser envs (web workers, react-native) lack needed support.\n    (function nonStandardBrowserEnv() {\n      return function isURLSameOrigin() {\n        return true;\n      };\n    })()\n);\n", "'use strict';\n\nvar AxiosError = require('../core/AxiosError');\nvar utils = require('../utils');\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction CanceledError(message) {\n  // eslint-disable-next-line no-eq-null,eqeqeq\n  AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED);\n  this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n  __CANCEL__: true\n});\n\nmodule.exports = CanceledError;\n", "'use strict';\n\nmodule.exports = function parseProtocol(url) {\n  var match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n  return match && match[1] || '';\n};\n", "'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar transitionalDefaults = require('../defaults/transitional');\nvar AxiosError = require('../core/AxiosError');\nvar CanceledError = require('../cancel/CanceledError');\nvar parseProtocol = require('../helpers/parseProtocol');\n\nmodule.exports = function xhrAdapter(config) {\n  return new Promise(function dispatchXhrRequest(resolve, reject) {\n    var requestData = config.data;\n    var requestHeaders = config.headers;\n    var responseType = config.responseType;\n    var onCanceled;\n    function done() {\n      if (config.cancelToken) {\n        config.cancelToken.unsubscribe(onCanceled);\n      }\n\n      if (config.signal) {\n        config.signal.removeEventListener('abort', onCanceled);\n      }\n    }\n\n    if (utils.isFormData(requestData) && utils.isStandardBrowserEnv()) {\n      delete requestHeaders['Content-Type']; // Let the browser set it\n    }\n\n    var request = new XMLHttpRequest();\n\n    // HTTP basic authentication\n    if (config.auth) {\n      var username = config.auth.username || '';\n      var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n      requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n    }\n\n    var fullPath = buildFullPath(config.baseURL, config.url);\n\n    request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n    // Set the request timeout in MS\n    request.timeout = config.timeout;\n\n    function onloadend() {\n      if (!request) {\n        return;\n      }\n      // Prepare the response\n      var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n      var responseData = !responseType || responseType === 'text' ||  responseType === 'json' ?\n        request.responseText : request.response;\n      var response = {\n        data: responseData,\n        status: request.status,\n        statusText: request.statusText,\n        headers: responseHeaders,\n        config: config,\n        request: request\n      };\n\n      settle(function _resolve(value) {\n        resolve(value);\n        done();\n      }, function _reject(err) {\n        reject(err);\n        done();\n      }, response);\n\n      // Clean up request\n      request = null;\n    }\n\n    if ('onloadend' in request) {\n      // Use onloadend if available\n      request.onloadend = onloadend;\n    } else {\n      // Listen for ready state to emulate onloadend\n      request.onreadystatechange = function handleLoad() {\n        if (!request || request.readyState !== 4) {\n          return;\n        }\n\n        // The request errored out and we didn't get a response, this will be\n        // handled by onerror instead\n        // With one exception: request that using file: protocol, most browsers\n        // will return status as 0 even though it's a successful request\n        if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n          return;\n        }\n        // readystate handler is calling before onerror or ontimeout handlers,\n        // so we should call onloadend on the next 'tick'\n        setTimeout(onloadend);\n      };\n    }\n\n    // Handle browser request cancellation (as opposed to a manual cancellation)\n    request.onabort = function handleAbort() {\n      if (!request) {\n        return;\n      }\n\n      reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n      // Clean up request\n      request = null;\n    };\n\n    // Handle low level network errors\n    request.onerror = function handleError() {\n      // Real errors are hidden from us by the browser\n      // onerror should only fire if it's a network error\n      reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request, request));\n\n      // Clean up request\n      request = null;\n    };\n\n    // Handle timeout\n    request.ontimeout = function handleTimeout() {\n      var timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n      var transitional = config.transitional || transitionalDefaults;\n      if (config.timeoutErrorMessage) {\n        timeoutErrorMessage = config.timeoutErrorMessage;\n      }\n      reject(new AxiosError(\n        timeoutErrorMessage,\n        transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n        config,\n        request));\n\n      // Clean up request\n      request = null;\n    };\n\n    // Add xsrf header\n    // This is only done if running in a standard browser environment.\n    // Specifically not if we're in a web worker, or react-native.\n    if (utils.isStandardBrowserEnv()) {\n      // Add xsrf header\n      var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n        cookies.read(config.xsrfCookieName) :\n        undefined;\n\n      if (xsrfValue) {\n        requestHeaders[config.xsrfHeaderName] = xsrfValue;\n      }\n    }\n\n    // Add headers to the request\n    if ('setRequestHeader' in request) {\n      utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n        if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n          // Remove Content-Type if data is undefined\n          delete requestHeaders[key];\n        } else {\n          // Otherwise add header to the request\n          request.setRequestHeader(key, val);\n        }\n      });\n    }\n\n    // Add withCredentials to request if needed\n    if (!utils.isUndefined(config.withCredentials)) {\n      request.withCredentials = !!config.withCredentials;\n    }\n\n    // Add responseType to request if needed\n    if (responseType && responseType !== 'json') {\n      request.responseType = config.responseType;\n    }\n\n    // Handle progress if needed\n    if (typeof config.onDownloadProgress === 'function') {\n      request.addEventListener('progress', config.onDownloadProgress);\n    }\n\n    // Not all browsers support upload events\n    if (typeof config.onUploadProgress === 'function' && request.upload) {\n      request.upload.addEventListener('progress', config.onUploadProgress);\n    }\n\n    if (config.cancelToken || config.signal) {\n      // Handle cancellation\n      // eslint-disable-next-line func-names\n      onCanceled = function(cancel) {\n        if (!request) {\n          return;\n        }\n        reject(!cancel || (cancel && cancel.type) ? new CanceledError() : cancel);\n        request.abort();\n        request = null;\n      };\n\n      config.cancelToken && config.cancelToken.subscribe(onCanceled);\n      if (config.signal) {\n        config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\n      }\n    }\n\n    if (!requestData) {\n      requestData = null;\n    }\n\n    var protocol = parseProtocol(fullPath);\n\n    if (protocol && [ 'http', 'https', 'file' ].indexOf(protocol) === -1) {\n      reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n      return;\n    }\n\n\n    // Send the request\n    request.send(requestData);\n  });\n};\n", "// eslint-disable-next-line strict\nmodule.exports = null;\n", "'use strict';\n\nvar utils = require('../utils');\nvar normalizeHeaderName = require('../helpers/normalizeHeaderName');\nvar AxiosError = require('../core/AxiosError');\nvar transitionalDefaults = require('./transitional');\nvar toFormData = require('../helpers/toFormData');\n\nvar DEFAULT_CONTENT_TYPE = {\n  'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n  if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n    headers['Content-Type'] = value;\n  }\n}\n\nfunction getDefaultAdapter() {\n  var adapter;\n  if (typeof XMLHttpRequest !== 'undefined') {\n    // For browsers use XHR adapter\n    adapter = require('../adapters/xhr');\n  } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n    // For node use HTTP adapter\n    adapter = require('../adapters/http');\n  }\n  return adapter;\n}\n\nfunction stringifySafely(rawValue, parser, encoder) {\n  if (utils.isString(rawValue)) {\n    try {\n      (parser || JSON.parse)(rawValue);\n      return utils.trim(rawValue);\n    } catch (e) {\n      if (e.name !== 'SyntaxError') {\n        throw e;\n      }\n    }\n  }\n\n  return (encoder || JSON.stringify)(rawValue);\n}\n\nvar defaults = {\n\n  transitional: transitionalDefaults,\n\n  adapter: getDefaultAdapter(),\n\n  transformRequest: [function transformRequest(data, headers) {\n    normalizeHeaderName(headers, 'Accept');\n    normalizeHeaderName(headers, 'Content-Type');\n\n    if (utils.isFormData(data) ||\n      utils.isArrayBuffer(data) ||\n      utils.isBuffer(data) ||\n      utils.isStream(data) ||\n      utils.isFile(data) ||\n      utils.isBlob(data)\n    ) {\n      return data;\n    }\n    if (utils.isArrayBufferView(data)) {\n      return data.buffer;\n    }\n    if (utils.isURLSearchParams(data)) {\n      setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n      return data.toString();\n    }\n\n    var isObjectPayload = utils.isObject(data);\n    var contentType = headers && headers['Content-Type'];\n\n    var isFileList;\n\n    if ((isFileList = utils.isFileList(data)) || (isObjectPayload && contentType === 'multipart/form-data')) {\n      var _FormData = this.env && this.env.FormData;\n      return toFormData(isFileList ? {'files[]': data} : data, _FormData && new _FormData());\n    } else if (isObjectPayload || contentType === 'application/json') {\n      setContentTypeIfUnset(headers, 'application/json');\n      return stringifySafely(data);\n    }\n\n    return data;\n  }],\n\n  transformResponse: [function transformResponse(data) {\n    var transitional = this.transitional || defaults.transitional;\n    var silentJSONParsing = transitional && transitional.silentJSONParsing;\n    var forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n    var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';\n\n    if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {\n      try {\n        return JSON.parse(data);\n      } catch (e) {\n        if (strictJSONParsing) {\n          if (e.name === 'SyntaxError') {\n            throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n          }\n          throw e;\n        }\n      }\n    }\n\n    return data;\n  }],\n\n  /**\n   * A timeout in milliseconds to abort a request. If set to 0 (default) a\n   * timeout is not created.\n   */\n  timeout: 0,\n\n  xsrfCookieName: 'XSRF-TOKEN',\n  xsrfHeaderName: 'X-XSRF-TOKEN',\n\n  maxContentLength: -1,\n  maxBodyLength: -1,\n\n  env: {\n    FormData: require('./env/FormData')\n  },\n\n  validateStatus: function validateStatus(status) {\n    return status >= 200 && status < 300;\n  },\n\n  headers: {\n    common: {\n      'Accept': 'application/json, text/plain, */*'\n    }\n  }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n  defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n  defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n", "'use strict';\n\nvar utils = require('./../utils');\nvar defaults = require('../defaults');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n  var context = this || defaults;\n  /*eslint no-param-reassign:0*/\n  utils.forEach(fns, function transform(fn) {\n    data = fn.call(context, data, headers);\n  });\n\n  return data;\n};\n", "'use strict';\n\nmodule.exports = function isCancel(value) {\n  return !!(value && value.__CANCEL__);\n};\n", "'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\nvar CanceledError = require('../cancel/CanceledError');\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n  if (config.cancelToken) {\n    config.cancelToken.throwIfRequested();\n  }\n\n  if (config.signal && config.signal.aborted) {\n    throw new CanceledError();\n  }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n  throwIfCancellationRequested(config);\n\n  // Ensure headers exist\n  config.headers = config.headers || {};\n\n  // Transform request data\n  config.data = transformData.call(\n    config,\n    config.data,\n    config.headers,\n    config.transformRequest\n  );\n\n  // Flatten headers\n  config.headers = utils.merge(\n    config.headers.common || {},\n    config.headers[config.method] || {},\n    config.headers\n  );\n\n  utils.forEach(\n    ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n    function cleanHeaderConfig(method) {\n      delete config.headers[method];\n    }\n  );\n\n  var adapter = config.adapter || defaults.adapter;\n\n  return adapter(config).then(function onAdapterResolution(response) {\n    throwIfCancellationRequested(config);\n\n    // Transform response data\n    response.data = transformData.call(\n      config,\n      response.data,\n      response.headers,\n      config.transformResponse\n    );\n\n    return response;\n  }, function onAdapterRejection(reason) {\n    if (!isCancel(reason)) {\n      throwIfCancellationRequested(config);\n\n      // Transform response data\n      if (reason && reason.response) {\n        reason.response.data = transformData.call(\n          config,\n          reason.response.data,\n          reason.response.headers,\n          config.transformResponse\n        );\n      }\n    }\n\n    return Promise.reject(reason);\n  });\n};\n", "'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n  // eslint-disable-next-line no-param-reassign\n  config2 = config2 || {};\n  var config = {};\n\n  function getMergedValue(target, source) {\n    if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n      return utils.merge(target, source);\n    } else if (utils.isPlainObject(source)) {\n      return utils.merge({}, source);\n    } else if (utils.isArray(source)) {\n      return source.slice();\n    }\n    return source;\n  }\n\n  // eslint-disable-next-line consistent-return\n  function mergeDeepProperties(prop) {\n    if (!utils.isUndefined(config2[prop])) {\n      return getMergedValue(config1[prop], config2[prop]);\n    } else if (!utils.isUndefined(config1[prop])) {\n      return getMergedValue(undefined, config1[prop]);\n    }\n  }\n\n  // eslint-disable-next-line consistent-return\n  function valueFromConfig2(prop) {\n    if (!utils.isUndefined(config2[prop])) {\n      return getMergedValue(undefined, config2[prop]);\n    }\n  }\n\n  // eslint-disable-next-line consistent-return\n  function defaultToConfig2(prop) {\n    if (!utils.isUndefined(config2[prop])) {\n      return getMergedValue(undefined, config2[prop]);\n    } else if (!utils.isUndefined(config1[prop])) {\n      return getMergedValue(undefined, config1[prop]);\n    }\n  }\n\n  // eslint-disable-next-line consistent-return\n  function mergeDirectKeys(prop) {\n    if (prop in config2) {\n      return getMergedValue(config1[prop], config2[prop]);\n    } else if (prop in config1) {\n      return getMergedValue(undefined, config1[prop]);\n    }\n  }\n\n  var mergeMap = {\n    'url': valueFromConfig2,\n    'method': valueFromConfig2,\n    'data': valueFromConfig2,\n    'baseURL': defaultToConfig2,\n    'transformRequest': defaultToConfig2,\n    'transformResponse': defaultToConfig2,\n    'paramsSerializer': defaultToConfig2,\n    'timeout': defaultToConfig2,\n    'timeoutMessage': defaultToConfig2,\n    'withCredentials': defaultToConfig2,\n    'adapter': defaultToConfig2,\n    'responseType': defaultToConfig2,\n    'xsrfCookieName': defaultToConfig2,\n    'xsrfHeaderName': defaultToConfig2,\n    'onUploadProgress': defaultToConfig2,\n    'onDownloadProgress': defaultToConfig2,\n    'decompress': defaultToConfig2,\n    'maxContentLength': defaultToConfig2,\n    'maxBodyLength': defaultToConfig2,\n    'beforeRedirect': defaultToConfig2,\n    'transport': defaultToConfig2,\n    'httpAgent': defaultToConfig2,\n    'httpsAgent': defaultToConfig2,\n    'cancelToken': defaultToConfig2,\n    'socketPath': defaultToConfig2,\n    'responseEncoding': defaultToConfig2,\n    'validateStatus': mergeDirectKeys\n  };\n\n  utils.forEach(Object.keys(config1).concat(Object.keys(config2)), function computeConfigValue(prop) {\n    var merge = mergeMap[prop] || mergeDeepProperties;\n    var configValue = merge(prop);\n    (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n  });\n\n  return config;\n};\n", "module.exports = {\n  \"version\": \"0.27.2\"\n};", "'use strict';\n\nvar VERSION = require('../env/data').version;\nvar AxiosError = require('../core/AxiosError');\n\nvar validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {\n  validators[type] = function validator(thing) {\n    return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n  };\n});\n\nvar deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n  function formatMessage(opt, desc) {\n    return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n  }\n\n  // eslint-disable-next-line func-names\n  return function(value, opt, opts) {\n    if (validator === false) {\n      throw new AxiosError(\n        formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n        AxiosError.ERR_DEPRECATED\n      );\n    }\n\n    if (version && !deprecatedWarnings[opt]) {\n      deprecatedWarnings[opt] = true;\n      // eslint-disable-next-line no-console\n      console.warn(\n        formatMessage(\n          opt,\n          ' has been deprecated since v' + version + ' and will be removed in the near future'\n        )\n      );\n    }\n\n    return validator ? validator(value, opt, opts) : true;\n  };\n};\n\n/**\n * Assert object's properties type\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n  if (typeof options !== 'object') {\n    throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n  }\n  var keys = Object.keys(options);\n  var i = keys.length;\n  while (i-- > 0) {\n    var opt = keys[i];\n    var validator = schema[opt];\n    if (validator) {\n      var value = options[opt];\n      var result = value === undefined || validator(value, opt, options);\n      if (result !== true) {\n        throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n      }\n      continue;\n    }\n    if (allowUnknown !== true) {\n      throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n    }\n  }\n}\n\nmodule.exports = {\n  assertOptions: assertOptions,\n  validators: validators\n};\n", "'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\nvar buildFullPath = require('./buildFullPath');\nvar validator = require('../helpers/validator');\n\nvar validators = validator.validators;\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n  this.defaults = instanceConfig;\n  this.interceptors = {\n    request: new InterceptorManager(),\n    response: new InterceptorManager()\n  };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(configOrUrl, config) {\n  /*eslint no-param-reassign:0*/\n  // Allow for axios('example/url'[, config]) a la fetch API\n  if (typeof configOrUrl === 'string') {\n    config = config || {};\n    config.url = configOrUrl;\n  } else {\n    config = configOrUrl || {};\n  }\n\n  config = mergeConfig(this.defaults, config);\n\n  // Set config.method\n  if (config.method) {\n    config.method = config.method.toLowerCase();\n  } else if (this.defaults.method) {\n    config.method = this.defaults.method.toLowerCase();\n  } else {\n    config.method = 'get';\n  }\n\n  var transitional = config.transitional;\n\n  if (transitional !== undefined) {\n    validator.assertOptions(transitional, {\n      silentJSONParsing: validators.transitional(validators.boolean),\n      forcedJSONParsing: validators.transitional(validators.boolean),\n      clarifyTimeoutError: validators.transitional(validators.boolean)\n    }, false);\n  }\n\n  // filter out skipped interceptors\n  var requestInterceptorChain = [];\n  var synchronousRequestInterceptors = true;\n  this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n    if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n      return;\n    }\n\n    synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n    requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n  });\n\n  var responseInterceptorChain = [];\n  this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n    responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n  });\n\n  var promise;\n\n  if (!synchronousRequestInterceptors) {\n    var chain = [dispatchRequest, undefined];\n\n    Array.prototype.unshift.apply(chain, requestInterceptorChain);\n    chain = chain.concat(responseInterceptorChain);\n\n    promise = Promise.resolve(config);\n    while (chain.length) {\n      promise = promise.then(chain.shift(), chain.shift());\n    }\n\n    return promise;\n  }\n\n\n  var newConfig = config;\n  while (requestInterceptorChain.length) {\n    var onFulfilled = requestInterceptorChain.shift();\n    var onRejected = requestInterceptorChain.shift();\n    try {\n      newConfig = onFulfilled(newConfig);\n    } catch (error) {\n      onRejected(error);\n      break;\n    }\n  }\n\n  try {\n    promise = dispatchRequest(newConfig);\n  } catch (error) {\n    return Promise.reject(error);\n  }\n\n  while (responseInterceptorChain.length) {\n    promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());\n  }\n\n  return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n  config = mergeConfig(this.defaults, config);\n  var fullPath = buildFullPath(config.baseURL, config.url);\n  return buildURL(fullPath, config.params, config.paramsSerializer);\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n  /*eslint func-names:0*/\n  Axios.prototype[method] = function(url, config) {\n    return this.request(mergeConfig(config || {}, {\n      method: method,\n      url: url,\n      data: (config || {}).data\n    }));\n  };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n  /*eslint func-names:0*/\n\n  function generateHTTPMethod(isForm) {\n    return function httpMethod(url, data, config) {\n      return this.request(mergeConfig(config || {}, {\n        method: method,\n        headers: isForm ? {\n          'Content-Type': 'multipart/form-data'\n        } : {},\n        url: url,\n        data: data\n      }));\n    };\n  }\n\n  Axios.prototype[method] = generateHTTPMethod();\n\n  Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nmodule.exports = Axios;\n", "'use strict';\n\nvar CanceledError = require('./CanceledError');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n  if (typeof executor !== 'function') {\n    throw new TypeError('executor must be a function.');\n  }\n\n  var resolvePromise;\n\n  this.promise = new Promise(function promiseExecutor(resolve) {\n    resolvePromise = resolve;\n  });\n\n  var token = this;\n\n  // eslint-disable-next-line func-names\n  this.promise.then(function(cancel) {\n    if (!token._listeners) return;\n\n    var i;\n    var l = token._listeners.length;\n\n    for (i = 0; i < l; i++) {\n      token._listeners[i](cancel);\n    }\n    token._listeners = null;\n  });\n\n  // eslint-disable-next-line func-names\n  this.promise.then = function(onfulfilled) {\n    var _resolve;\n    // eslint-disable-next-line func-names\n    var promise = new Promise(function(resolve) {\n      token.subscribe(resolve);\n      _resolve = resolve;\n    }).then(onfulfilled);\n\n    promise.cancel = function reject() {\n      token.unsubscribe(_resolve);\n    };\n\n    return promise;\n  };\n\n  executor(function cancel(message) {\n    if (token.reason) {\n      // Cancellation has already been requested\n      return;\n    }\n\n    token.reason = new CanceledError(message);\n    resolvePromise(token.reason);\n  });\n}\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n  if (this.reason) {\n    throw this.reason;\n  }\n};\n\n/**\n * Subscribe to the cancel signal\n */\n\nCancelToken.prototype.subscribe = function subscribe(listener) {\n  if (this.reason) {\n    listener(this.reason);\n    return;\n  }\n\n  if (this._listeners) {\n    this._listeners.push(listener);\n  } else {\n    this._listeners = [listener];\n  }\n};\n\n/**\n * Unsubscribe from the cancel signal\n */\n\nCancelToken.prototype.unsubscribe = function unsubscribe(listener) {\n  if (!this._listeners) {\n    return;\n  }\n  var index = this._listeners.indexOf(listener);\n  if (index !== -1) {\n    this._listeners.splice(index, 1);\n  }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n  var cancel;\n  var token = new CancelToken(function executor(c) {\n    cancel = c;\n  });\n  return {\n    token: token,\n    cancel: cancel\n  };\n};\n\nmodule.exports = CancelToken;\n", "'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n *  ```js\n *  function f(x, y, z) {}\n *  var args = [1, 2, 3];\n *  f.apply(null, args);\n *  ```\n *\n * With `spread` this example can be re-written.\n *\n *  ```js\n *  spread(function(x, y, z) {})([1, 2, 3]);\n *  ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n  return function wrap(arr) {\n    return callback.apply(null, arr);\n  };\n};\n", "'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n  return utils.isObject(payload) && (payload.isAxiosError === true);\n};\n", "'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n  var context = new Axios(defaultConfig);\n  var instance = bind(Axios.prototype.request, context);\n\n  // Copy axios.prototype to instance\n  utils.extend(instance, Axios.prototype, context);\n\n  // Copy context to instance\n  utils.extend(instance, context);\n\n  // Factory for creating new instances\n  instance.create = function create(instanceConfig) {\n    return createInstance(mergeConfig(defaultConfig, instanceConfig));\n  };\n\n  return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = require('./cancel/CanceledError');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\naxios.VERSION = require('./env/data').version;\naxios.toFormData = require('./helpers/toFormData');\n\n// Expose AxiosError class\naxios.AxiosError = require('../lib/core/AxiosError');\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n  return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n", "module.exports = require('./lib/axios');", "/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\tvar nativeCodeString = '[native code]';\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n", "/**\n * @license React\n * react-jsx-runtime.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nif (process.env.NODE_ENV !== \"production\") {\n  (function() {\n'use strict';\n\nvar React = require('react');\n\n// ATTENTION\n// When adding new symbols to this file,\n// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'\n// The Symbol used to tag the ReactElement-like types.\nvar REACT_ELEMENT_TYPE = Symbol.for('react.element');\nvar REACT_PORTAL_TYPE = Symbol.for('react.portal');\nvar REACT_FRAGMENT_TYPE = Symbol.for('react.fragment');\nvar REACT_STRICT_MODE_TYPE = Symbol.for('react.strict_mode');\nvar REACT_PROFILER_TYPE = Symbol.for('react.profiler');\nvar REACT_PROVIDER_TYPE = Symbol.for('react.provider');\nvar REACT_CONTEXT_TYPE = Symbol.for('react.context');\nvar REACT_FORWARD_REF_TYPE = Symbol.for('react.forward_ref');\nvar REACT_SUSPENSE_TYPE = Symbol.for('react.suspense');\nvar REACT_SUSPENSE_LIST_TYPE = Symbol.for('react.suspense_list');\nvar REACT_MEMO_TYPE = Symbol.for('react.memo');\nvar REACT_LAZY_TYPE = Symbol.for('react.lazy');\nvar REACT_OFFSCREEN_TYPE = Symbol.for('react.offscreen');\nvar MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator';\nfunction getIteratorFn(maybeIterable) {\n  if (maybeIterable === null || typeof maybeIterable !== 'object') {\n    return null;\n  }\n\n  var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL];\n\n  if (typeof maybeIterator === 'function') {\n    return maybeIterator;\n  }\n\n  return null;\n}\n\nvar ReactSharedInternals = React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n\nfunction error(format) {\n  {\n    {\n      for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n        args[_key2 - 1] = arguments[_key2];\n      }\n\n      printWarning('error', format, args);\n    }\n  }\n}\n\nfunction printWarning(level, format, args) {\n  // When changing this logic, you might want to also\n  // update consoleWithStackDev.www.js as well.\n  {\n    var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n    var stack = ReactDebugCurrentFrame.getStackAddendum();\n\n    if (stack !== '') {\n      format += '%s';\n      args = args.concat([stack]);\n    } // eslint-disable-next-line react-internal/safe-string-coercion\n\n\n    var argsWithFormat = args.map(function (item) {\n      return String(item);\n    }); // Careful: RN currently depends on this prefix\n\n    argsWithFormat.unshift('Warning: ' + format); // We intentionally don't use spread (or .apply) directly because it\n    // breaks IE9: https://github.com/facebook/react/issues/13610\n    // eslint-disable-next-line react-internal/no-production-logging\n\n    Function.prototype.apply.call(console[level], console, argsWithFormat);\n  }\n}\n\n// -----------------------------------------------------------------------------\n\nvar enableScopeAPI = false; // Experimental Create Event Handle API.\nvar enableCacheElement = false;\nvar enableTransitionTracing = false; // No known bugs, but needs performance testing\n\nvar enableLegacyHidden = false; // Enables unstable_avoidThisFallback feature in Fiber\n// stuff. Intended to enable React core members to more easily debug scheduling\n// issues in DEV builds.\n\nvar enableDebugTracing = false; // Track which Fiber(s) schedule render work.\n\nvar REACT_MODULE_REFERENCE;\n\n{\n  REACT_MODULE_REFERENCE = Symbol.for('react.module.reference');\n}\n\nfunction isValidElementType(type) {\n  if (typeof type === 'string' || typeof type === 'function') {\n    return true;\n  } // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill).\n\n\n  if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing  || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden  || type === REACT_OFFSCREEN_TYPE || enableScopeAPI  || enableCacheElement  || enableTransitionTracing ) {\n    return true;\n  }\n\n  if (typeof type === 'object' && type !== null) {\n    if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object\n    // types supported by any Flight configuration anywhere since\n    // we don't know which Flight build this will end up being used\n    // with.\n    type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== undefined) {\n      return true;\n    }\n  }\n\n  return false;\n}\n\nfunction getWrappedName(outerType, innerType, wrapperName) {\n  var displayName = outerType.displayName;\n\n  if (displayName) {\n    return displayName;\n  }\n\n  var functionName = innerType.displayName || innerType.name || '';\n  return functionName !== '' ? wrapperName + \"(\" + functionName + \")\" : wrapperName;\n} // Keep in sync with react-reconciler/getComponentNameFromFiber\n\n\nfunction getContextName(type) {\n  return type.displayName || 'Context';\n} // Note that the reconciler package should generally prefer to use getComponentNameFromFiber() instead.\n\n\nfunction getComponentNameFromType(type) {\n  if (type == null) {\n    // Host root, text node or just invalid type.\n    return null;\n  }\n\n  {\n    if (typeof type.tag === 'number') {\n      error('Received an unexpected object in getComponentNameFromType(). ' + 'This is likely a bug in React. Please file an issue.');\n    }\n  }\n\n  if (typeof type === 'function') {\n    return type.displayName || type.name || null;\n  }\n\n  if (typeof type === 'string') {\n    return type;\n  }\n\n  switch (type) {\n    case REACT_FRAGMENT_TYPE:\n      return 'Fragment';\n\n    case REACT_PORTAL_TYPE:\n      return 'Portal';\n\n    case REACT_PROFILER_TYPE:\n      return 'Profiler';\n\n    case REACT_STRICT_MODE_TYPE:\n      return 'StrictMode';\n\n    case REACT_SUSPENSE_TYPE:\n      return 'Suspense';\n\n    case REACT_SUSPENSE_LIST_TYPE:\n      return 'SuspenseList';\n\n  }\n\n  if (typeof type === 'object') {\n    switch (type.$$typeof) {\n      case REACT_CONTEXT_TYPE:\n        var context = type;\n        return getContextName(context) + '.Consumer';\n\n      case REACT_PROVIDER_TYPE:\n        var provider = type;\n        return getContextName(provider._context) + '.Provider';\n\n      case REACT_FORWARD_REF_TYPE:\n        return getWrappedName(type, type.render, 'ForwardRef');\n\n      case REACT_MEMO_TYPE:\n        var outerName = type.displayName || null;\n\n        if (outerName !== null) {\n          return outerName;\n        }\n\n        return getComponentNameFromType(type.type) || 'Memo';\n\n      case REACT_LAZY_TYPE:\n        {\n          var lazyComponent = type;\n          var payload = lazyComponent._payload;\n          var init = lazyComponent._init;\n\n          try {\n            return getComponentNameFromType(init(payload));\n          } catch (x) {\n            return null;\n          }\n        }\n\n      // eslint-disable-next-line no-fallthrough\n    }\n  }\n\n  return null;\n}\n\nvar assign = Object.assign;\n\n// Helpers to patch console.logs to avoid logging during side-effect free\n// replaying on render function. This currently only patches the object\n// lazily which won't cover if the log function was extracted eagerly.\n// We could also eagerly patch the method.\nvar disabledDepth = 0;\nvar prevLog;\nvar prevInfo;\nvar prevWarn;\nvar prevError;\nvar prevGroup;\nvar prevGroupCollapsed;\nvar prevGroupEnd;\n\nfunction disabledLog() {}\n\ndisabledLog.__reactDisabledLog = true;\nfunction disableLogs() {\n  {\n    if (disabledDepth === 0) {\n      /* eslint-disable react-internal/no-production-logging */\n      prevLog = console.log;\n      prevInfo = console.info;\n      prevWarn = console.warn;\n      prevError = console.error;\n      prevGroup = console.group;\n      prevGroupCollapsed = console.groupCollapsed;\n      prevGroupEnd = console.groupEnd; // https://github.com/facebook/react/issues/19099\n\n      var props = {\n        configurable: true,\n        enumerable: true,\n        value: disabledLog,\n        writable: true\n      }; // $FlowFixMe Flow thinks console is immutable.\n\n      Object.defineProperties(console, {\n        info: props,\n        log: props,\n        warn: props,\n        error: props,\n        group: props,\n        groupCollapsed: props,\n        groupEnd: props\n      });\n      /* eslint-enable react-internal/no-production-logging */\n    }\n\n    disabledDepth++;\n  }\n}\nfunction reenableLogs() {\n  {\n    disabledDepth--;\n\n    if (disabledDepth === 0) {\n      /* eslint-disable react-internal/no-production-logging */\n      var props = {\n        configurable: true,\n        enumerable: true,\n        writable: true\n      }; // $FlowFixMe Flow thinks console is immutable.\n\n      Object.defineProperties(console, {\n        log: assign({}, props, {\n          value: prevLog\n        }),\n        info: assign({}, props, {\n          value: prevInfo\n        }),\n        warn: assign({}, props, {\n          value: prevWarn\n        }),\n        error: assign({}, props, {\n          value: prevError\n        }),\n        group: assign({}, props, {\n          value: prevGroup\n        }),\n        groupCollapsed: assign({}, props, {\n          value: prevGroupCollapsed\n        }),\n        groupEnd: assign({}, props, {\n          value: prevGroupEnd\n        })\n      });\n      /* eslint-enable react-internal/no-production-logging */\n    }\n\n    if (disabledDepth < 0) {\n      error('disabledDepth fell below zero. ' + 'This is a bug in React. Please file an issue.');\n    }\n  }\n}\n\nvar ReactCurrentDispatcher = ReactSharedInternals.ReactCurrentDispatcher;\nvar prefix;\nfunction describeBuiltInComponentFrame(name, source, ownerFn) {\n  {\n    if (prefix === undefined) {\n      // Extract the VM specific prefix used by each line.\n      try {\n        throw Error();\n      } catch (x) {\n        var match = x.stack.trim().match(/\\n( *(at )?)/);\n        prefix = match && match[1] || '';\n      }\n    } // We use the prefix to ensure our stacks line up with native stack frames.\n\n\n    return '\\n' + prefix + name;\n  }\n}\nvar reentry = false;\nvar componentFrameCache;\n\n{\n  var PossiblyWeakMap = typeof WeakMap === 'function' ? WeakMap : Map;\n  componentFrameCache = new PossiblyWeakMap();\n}\n\nfunction describeNativeComponentFrame(fn, construct) {\n  // If something asked for a stack inside a fake render, it should get ignored.\n  if ( !fn || reentry) {\n    return '';\n  }\n\n  {\n    var frame = componentFrameCache.get(fn);\n\n    if (frame !== undefined) {\n      return frame;\n    }\n  }\n\n  var control;\n  reentry = true;\n  var previousPrepareStackTrace = Error.prepareStackTrace; // $FlowFixMe It does accept undefined.\n\n  Error.prepareStackTrace = undefined;\n  var previousDispatcher;\n\n  {\n    previousDispatcher = ReactCurrentDispatcher.current; // Set the dispatcher in DEV because this might be call in the render function\n    // for warnings.\n\n    ReactCurrentDispatcher.current = null;\n    disableLogs();\n  }\n\n  try {\n    // This should throw.\n    if (construct) {\n      // Something should be setting the props in the constructor.\n      var Fake = function () {\n        throw Error();\n      }; // $FlowFixMe\n\n\n      Object.defineProperty(Fake.prototype, 'props', {\n        set: function () {\n          // We use a throwing setter instead of frozen or non-writable props\n          // because that won't throw in a non-strict mode function.\n          throw Error();\n        }\n      });\n\n      if (typeof Reflect === 'object' && Reflect.construct) {\n        // We construct a different control for this case to include any extra\n        // frames added by the construct call.\n        try {\n          Reflect.construct(Fake, []);\n        } catch (x) {\n          control = x;\n        }\n\n        Reflect.construct(fn, [], Fake);\n      } else {\n        try {\n          Fake.call();\n        } catch (x) {\n          control = x;\n        }\n\n        fn.call(Fake.prototype);\n      }\n    } else {\n      try {\n        throw Error();\n      } catch (x) {\n        control = x;\n      }\n\n      fn();\n    }\n  } catch (sample) {\n    // This is inlined manually because closure doesn't do it for us.\n    if (sample && control && typeof sample.stack === 'string') {\n      // This extracts the first frame from the sample that isn't also in the control.\n      // Skipping one frame that we assume is the frame that calls the two.\n      var sampleLines = sample.stack.split('\\n');\n      var controlLines = control.stack.split('\\n');\n      var s = sampleLines.length - 1;\n      var c = controlLines.length - 1;\n\n      while (s >= 1 && c >= 0 && sampleLines[s] !== controlLines[c]) {\n        // We expect at least one stack frame to be shared.\n        // Typically this will be the root most one. However, stack frames may be\n        // cut off due to maximum stack limits. In this case, one maybe cut off\n        // earlier than the other. We assume that the sample is longer or the same\n        // and there for cut off earlier. So we should find the root most frame in\n        // the sample somewhere in the control.\n        c--;\n      }\n\n      for (; s >= 1 && c >= 0; s--, c--) {\n        // Next we find the first one that isn't the same which should be the\n        // frame that called our sample function and the control.\n        if (sampleLines[s] !== controlLines[c]) {\n          // In V8, the first line is describing the message but other VMs don't.\n          // If we're about to return the first line, and the control is also on the same\n          // line, that's a pretty good indicator that our sample threw at same line as\n          // the control. I.e. before we entered the sample frame. So we ignore this result.\n          // This can happen if you passed a class to function component, or non-function.\n          if (s !== 1 || c !== 1) {\n            do {\n              s--;\n              c--; // We may still have similar intermediate frames from the construct call.\n              // The next one that isn't the same should be our match though.\n\n              if (c < 0 || sampleLines[s] !== controlLines[c]) {\n                // V8 adds a \"new\" prefix for native classes. Let's remove it to make it prettier.\n                var _frame = '\\n' + sampleLines[s].replace(' at new ', ' at '); // If our component frame is labeled \"<anonymous>\"\n                // but we have a user-provided \"displayName\"\n                // splice it in to make the stack more readable.\n\n\n                if (fn.displayName && _frame.includes('<anonymous>')) {\n                  _frame = _frame.replace('<anonymous>', fn.displayName);\n                }\n\n                {\n                  if (typeof fn === 'function') {\n                    componentFrameCache.set(fn, _frame);\n                  }\n                } // Return the line we found.\n\n\n                return _frame;\n              }\n            } while (s >= 1 && c >= 0);\n          }\n\n          break;\n        }\n      }\n    }\n  } finally {\n    reentry = false;\n\n    {\n      ReactCurrentDispatcher.current = previousDispatcher;\n      reenableLogs();\n    }\n\n    Error.prepareStackTrace = previousPrepareStackTrace;\n  } // Fallback to just using the name if we couldn't make it throw.\n\n\n  var name = fn ? fn.displayName || fn.name : '';\n  var syntheticFrame = name ? describeBuiltInComponentFrame(name) : '';\n\n  {\n    if (typeof fn === 'function') {\n      componentFrameCache.set(fn, syntheticFrame);\n    }\n  }\n\n  return syntheticFrame;\n}\nfunction describeFunctionComponentFrame(fn, source, ownerFn) {\n  {\n    return describeNativeComponentFrame(fn, false);\n  }\n}\n\nfunction shouldConstruct(Component) {\n  var prototype = Component.prototype;\n  return !!(prototype && prototype.isReactComponent);\n}\n\nfunction describeUnknownElementTypeFrameInDEV(type, source, ownerFn) {\n\n  if (type == null) {\n    return '';\n  }\n\n  if (typeof type === 'function') {\n    {\n      return describeNativeComponentFrame(type, shouldConstruct(type));\n    }\n  }\n\n  if (typeof type === 'string') {\n    return describeBuiltInComponentFrame(type);\n  }\n\n  switch (type) {\n    case REACT_SUSPENSE_TYPE:\n      return describeBuiltInComponentFrame('Suspense');\n\n    case REACT_SUSPENSE_LIST_TYPE:\n      return describeBuiltInComponentFrame('SuspenseList');\n  }\n\n  if (typeof type === 'object') {\n    switch (type.$$typeof) {\n      case REACT_FORWARD_REF_TYPE:\n        return describeFunctionComponentFrame(type.render);\n\n      case REACT_MEMO_TYPE:\n        // Memo may contain any component type so we recursively resolve it.\n        return describeUnknownElementTypeFrameInDEV(type.type, source, ownerFn);\n\n      case REACT_LAZY_TYPE:\n        {\n          var lazyComponent = type;\n          var payload = lazyComponent._payload;\n          var init = lazyComponent._init;\n\n          try {\n            // Lazy may contain any component type so we recursively resolve it.\n            return describeUnknownElementTypeFrameInDEV(init(payload), source, ownerFn);\n          } catch (x) {}\n        }\n    }\n  }\n\n  return '';\n}\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar loggedTypeFailures = {};\nvar ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n\nfunction setCurrentlyValidatingElement(element) {\n  {\n    if (element) {\n      var owner = element._owner;\n      var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n      ReactDebugCurrentFrame.setExtraStackFrame(stack);\n    } else {\n      ReactDebugCurrentFrame.setExtraStackFrame(null);\n    }\n  }\n}\n\nfunction checkPropTypes(typeSpecs, values, location, componentName, element) {\n  {\n    // $FlowFixMe This is okay but Flow doesn't know it.\n    var has = Function.call.bind(hasOwnProperty);\n\n    for (var typeSpecName in typeSpecs) {\n      if (has(typeSpecs, typeSpecName)) {\n        var error$1 = void 0; // Prop type validation may throw. In case they do, we don't want to\n        // fail the render phase where it didn't fail before. So we log it.\n        // After these have been cleaned up, we'll let them throw.\n\n        try {\n          // This is intentionally an invariant that gets caught. It's the same\n          // behavior as without this statement except with a better message.\n          if (typeof typeSpecs[typeSpecName] !== 'function') {\n            // eslint-disable-next-line react-internal/prod-error-codes\n            var err = Error((componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' + 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.');\n            err.name = 'Invariant Violation';\n            throw err;\n          }\n\n          error$1 = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED');\n        } catch (ex) {\n          error$1 = ex;\n        }\n\n        if (error$1 && !(error$1 instanceof Error)) {\n          setCurrentlyValidatingElement(element);\n\n          error('%s: type specification of %s' + ' `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error$1);\n\n          setCurrentlyValidatingElement(null);\n        }\n\n        if (error$1 instanceof Error && !(error$1.message in loggedTypeFailures)) {\n          // Only monitor this failure once because there tends to be a lot of the\n          // same error.\n          loggedTypeFailures[error$1.message] = true;\n          setCurrentlyValidatingElement(element);\n\n          error('Failed %s type: %s', location, error$1.message);\n\n          setCurrentlyValidatingElement(null);\n        }\n      }\n    }\n  }\n}\n\nvar isArrayImpl = Array.isArray; // eslint-disable-next-line no-redeclare\n\nfunction isArray(a) {\n  return isArrayImpl(a);\n}\n\n/*\n * The `'' + value` pattern (used in in perf-sensitive code) throws for Symbol\n * and Temporal.* types. See https://github.com/facebook/react/pull/22064.\n *\n * The functions in this module will throw an easier-to-understand,\n * easier-to-debug exception with a clear errors message message explaining the\n * problem. (Instead of a confusing exception thrown inside the implementation\n * of the `value` object).\n */\n// $FlowFixMe only called in DEV, so void return is not possible.\nfunction typeName(value) {\n  {\n    // toStringTag is needed for namespaced types like Temporal.Instant\n    var hasToStringTag = typeof Symbol === 'function' && Symbol.toStringTag;\n    var type = hasToStringTag && value[Symbol.toStringTag] || value.constructor.name || 'Object';\n    return type;\n  }\n} // $FlowFixMe only called in DEV, so void return is not possible.\n\n\nfunction willCoercionThrow(value) {\n  {\n    try {\n      testStringCoercion(value);\n      return false;\n    } catch (e) {\n      return true;\n    }\n  }\n}\n\nfunction testStringCoercion(value) {\n  // If you ended up here by following an exception call stack, here's what's\n  // happened: you supplied an object or symbol value to React (as a prop, key,\n  // DOM attribute, CSS property, string ref, etc.) and when React tried to\n  // coerce it to a string using `'' + value`, an exception was thrown.\n  //\n  // The most common types that will cause this exception are `Symbol` instances\n  // and Temporal objects like `Temporal.Instant`. But any object that has a\n  // `valueOf` or `[Symbol.toPrimitive]` method that throws will also cause this\n  // exception. (Library authors do this to prevent users from using built-in\n  // numeric operators like `+` or comparison operators like `>=` because custom\n  // methods are needed to perform accurate arithmetic or comparison.)\n  //\n  // To fix the problem, coerce this object or symbol value to a string before\n  // passing it to React. The most reliable way is usually `String(value)`.\n  //\n  // To find which value is throwing, check the browser or debugger console.\n  // Before this exception was thrown, there should be `console.error` output\n  // that shows the type (Symbol, Temporal.PlainDate, etc.) that caused the\n  // problem and how that type was used: key, atrribute, input value prop, etc.\n  // In most cases, this console output also shows the component and its\n  // ancestor components where the exception happened.\n  //\n  // eslint-disable-next-line react-internal/safe-string-coercion\n  return '' + value;\n}\nfunction checkKeyStringCoercion(value) {\n  {\n    if (willCoercionThrow(value)) {\n      error('The provided key is an unsupported type %s.' + ' This value must be coerced to a string before before using it here.', typeName(value));\n\n      return testStringCoercion(value); // throw (to help callers find troubleshooting comments)\n    }\n  }\n}\n\nvar ReactCurrentOwner = ReactSharedInternals.ReactCurrentOwner;\nvar RESERVED_PROPS = {\n  key: true,\n  ref: true,\n  __self: true,\n  __source: true\n};\nvar specialPropKeyWarningShown;\nvar specialPropRefWarningShown;\nvar didWarnAboutStringRefs;\n\n{\n  didWarnAboutStringRefs = {};\n}\n\nfunction hasValidRef(config) {\n  {\n    if (hasOwnProperty.call(config, 'ref')) {\n      var getter = Object.getOwnPropertyDescriptor(config, 'ref').get;\n\n      if (getter && getter.isReactWarning) {\n        return false;\n      }\n    }\n  }\n\n  return config.ref !== undefined;\n}\n\nfunction hasValidKey(config) {\n  {\n    if (hasOwnProperty.call(config, 'key')) {\n      var getter = Object.getOwnPropertyDescriptor(config, 'key').get;\n\n      if (getter && getter.isReactWarning) {\n        return false;\n      }\n    }\n  }\n\n  return config.key !== undefined;\n}\n\nfunction warnIfStringRefCannotBeAutoConverted(config, self) {\n  {\n    if (typeof config.ref === 'string' && ReactCurrentOwner.current && self && ReactCurrentOwner.current.stateNode !== self) {\n      var componentName = getComponentNameFromType(ReactCurrentOwner.current.type);\n\n      if (!didWarnAboutStringRefs[componentName]) {\n        error('Component \"%s\" contains the string ref \"%s\". ' + 'Support for string refs will be removed in a future major release. ' + 'This case cannot be automatically converted to an arrow function. ' + 'We ask you to manually fix this case by using useRef() or createRef() instead. ' + 'Learn more about using refs safely here: ' + 'https://reactjs.org/link/strict-mode-string-ref', getComponentNameFromType(ReactCurrentOwner.current.type), config.ref);\n\n        didWarnAboutStringRefs[componentName] = true;\n      }\n    }\n  }\n}\n\nfunction defineKeyPropWarningGetter(props, displayName) {\n  {\n    var warnAboutAccessingKey = function () {\n      if (!specialPropKeyWarningShown) {\n        specialPropKeyWarningShown = true;\n\n        error('%s: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);\n      }\n    };\n\n    warnAboutAccessingKey.isReactWarning = true;\n    Object.defineProperty(props, 'key', {\n      get: warnAboutAccessingKey,\n      configurable: true\n    });\n  }\n}\n\nfunction defineRefPropWarningGetter(props, displayName) {\n  {\n    var warnAboutAccessingRef = function () {\n      if (!specialPropRefWarningShown) {\n        specialPropRefWarningShown = true;\n\n        error('%s: `ref` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);\n      }\n    };\n\n    warnAboutAccessingRef.isReactWarning = true;\n    Object.defineProperty(props, 'ref', {\n      get: warnAboutAccessingRef,\n      configurable: true\n    });\n  }\n}\n/**\n * Factory method to create a new React element. This no longer adheres to\n * the class pattern, so do not use new to call it. Also, instanceof check\n * will not work. Instead test $$typeof field against Symbol.for('react.element') to check\n * if something is a React Element.\n *\n * @param {*} type\n * @param {*} props\n * @param {*} key\n * @param {string|object} ref\n * @param {*} owner\n * @param {*} self A *temporary* helper to detect places where `this` is\n * different from the `owner` when React.createElement is called, so that we\n * can warn. We want to get rid of owner and replace string `ref`s with arrow\n * functions, and as long as `this` and owner are the same, there will be no\n * change in behavior.\n * @param {*} source An annotation object (added by a transpiler or otherwise)\n * indicating filename, line number, and/or other information.\n * @internal\n */\n\n\nvar ReactElement = function (type, key, ref, self, source, owner, props) {\n  var element = {\n    // This tag allows us to uniquely identify this as a React Element\n    $$typeof: REACT_ELEMENT_TYPE,\n    // Built-in properties that belong on the element\n    type: type,\n    key: key,\n    ref: ref,\n    props: props,\n    // Record the component responsible for creating this element.\n    _owner: owner\n  };\n\n  {\n    // The validation flag is currently mutative. We put it on\n    // an external backing store so that we can freeze the whole object.\n    // This can be replaced with a WeakMap once they are implemented in\n    // commonly used development environments.\n    element._store = {}; // To make comparing ReactElements easier for testing purposes, we make\n    // the validation flag non-enumerable (where possible, which should\n    // include every environment we run tests in), so the test framework\n    // ignores it.\n\n    Object.defineProperty(element._store, 'validated', {\n      configurable: false,\n      enumerable: false,\n      writable: true,\n      value: false\n    }); // self and source are DEV only properties.\n\n    Object.defineProperty(element, '_self', {\n      configurable: false,\n      enumerable: false,\n      writable: false,\n      value: self\n    }); // Two elements created in two different places should be considered\n    // equal for testing purposes and therefore we hide it from enumeration.\n\n    Object.defineProperty(element, '_source', {\n      configurable: false,\n      enumerable: false,\n      writable: false,\n      value: source\n    });\n\n    if (Object.freeze) {\n      Object.freeze(element.props);\n      Object.freeze(element);\n    }\n  }\n\n  return element;\n};\n/**\n * https://github.com/reactjs/rfcs/pull/107\n * @param {*} type\n * @param {object} props\n * @param {string} key\n */\n\nfunction jsxDEV(type, config, maybeKey, source, self) {\n  {\n    var propName; // Reserved names are extracted\n\n    var props = {};\n    var key = null;\n    var ref = null; // Currently, key can be spread in as a prop. This causes a potential\n    // issue if key is also explicitly declared (ie. <div {...props} key=\"Hi\" />\n    // or <div key=\"Hi\" {...props} /> ). We want to deprecate key spread,\n    // but as an intermediary step, we will use jsxDEV for everything except\n    // <div {...props} key=\"Hi\" />, because we aren't currently able to tell if\n    // key is explicitly declared to be undefined or not.\n\n    if (maybeKey !== undefined) {\n      {\n        checkKeyStringCoercion(maybeKey);\n      }\n\n      key = '' + maybeKey;\n    }\n\n    if (hasValidKey(config)) {\n      {\n        checkKeyStringCoercion(config.key);\n      }\n\n      key = '' + config.key;\n    }\n\n    if (hasValidRef(config)) {\n      ref = config.ref;\n      warnIfStringRefCannotBeAutoConverted(config, self);\n    } // Remaining properties are added to a new props object\n\n\n    for (propName in config) {\n      if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n        props[propName] = config[propName];\n      }\n    } // Resolve default props\n\n\n    if (type && type.defaultProps) {\n      var defaultProps = type.defaultProps;\n\n      for (propName in defaultProps) {\n        if (props[propName] === undefined) {\n          props[propName] = defaultProps[propName];\n        }\n      }\n    }\n\n    if (key || ref) {\n      var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type;\n\n      if (key) {\n        defineKeyPropWarningGetter(props, displayName);\n      }\n\n      if (ref) {\n        defineRefPropWarningGetter(props, displayName);\n      }\n    }\n\n    return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props);\n  }\n}\n\nvar ReactCurrentOwner$1 = ReactSharedInternals.ReactCurrentOwner;\nvar ReactDebugCurrentFrame$1 = ReactSharedInternals.ReactDebugCurrentFrame;\n\nfunction setCurrentlyValidatingElement$1(element) {\n  {\n    if (element) {\n      var owner = element._owner;\n      var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n      ReactDebugCurrentFrame$1.setExtraStackFrame(stack);\n    } else {\n      ReactDebugCurrentFrame$1.setExtraStackFrame(null);\n    }\n  }\n}\n\nvar propTypesMisspellWarningShown;\n\n{\n  propTypesMisspellWarningShown = false;\n}\n/**\n * Verifies the object is a ReactElement.\n * See https://reactjs.org/docs/react-api.html#isvalidelement\n * @param {?object} object\n * @return {boolean} True if `object` is a ReactElement.\n * @final\n */\n\n\nfunction isValidElement(object) {\n  {\n    return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n  }\n}\n\nfunction getDeclarationErrorAddendum() {\n  {\n    if (ReactCurrentOwner$1.current) {\n      var name = getComponentNameFromType(ReactCurrentOwner$1.current.type);\n\n      if (name) {\n        return '\\n\\nCheck the render method of `' + name + '`.';\n      }\n    }\n\n    return '';\n  }\n}\n\nfunction getSourceInfoErrorAddendum(source) {\n  {\n    if (source !== undefined) {\n      var fileName = source.fileName.replace(/^.*[\\\\\\/]/, '');\n      var lineNumber = source.lineNumber;\n      return '\\n\\nCheck your code at ' + fileName + ':' + lineNumber + '.';\n    }\n\n    return '';\n  }\n}\n/**\n * Warn if there's no key explicitly set on dynamic arrays of children or\n * object keys are not valid. This allows us to keep track of children between\n * updates.\n */\n\n\nvar ownerHasKeyUseWarning = {};\n\nfunction getCurrentComponentErrorInfo(parentType) {\n  {\n    var info = getDeclarationErrorAddendum();\n\n    if (!info) {\n      var parentName = typeof parentType === 'string' ? parentType : parentType.displayName || parentType.name;\n\n      if (parentName) {\n        info = \"\\n\\nCheck the top-level render call using <\" + parentName + \">.\";\n      }\n    }\n\n    return info;\n  }\n}\n/**\n * Warn if the element doesn't have an explicit key assigned to it.\n * This element is in an array. The array could grow and shrink or be\n * reordered. All children that haven't already been validated are required to\n * have a \"key\" property assigned to it. Error statuses are cached so a warning\n * will only be shown once.\n *\n * @internal\n * @param {ReactElement} element Element that requires a key.\n * @param {*} parentType element's parent's type.\n */\n\n\nfunction validateExplicitKey(element, parentType) {\n  {\n    if (!element._store || element._store.validated || element.key != null) {\n      return;\n    }\n\n    element._store.validated = true;\n    var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType);\n\n    if (ownerHasKeyUseWarning[currentComponentErrorInfo]) {\n      return;\n    }\n\n    ownerHasKeyUseWarning[currentComponentErrorInfo] = true; // Usually the current owner is the offender, but if it accepts children as a\n    // property, it may be the creator of the child that's responsible for\n    // assigning it a key.\n\n    var childOwner = '';\n\n    if (element && element._owner && element._owner !== ReactCurrentOwner$1.current) {\n      // Give the component that originally created this child.\n      childOwner = \" It was passed a child from \" + getComponentNameFromType(element._owner.type) + \".\";\n    }\n\n    setCurrentlyValidatingElement$1(element);\n\n    error('Each child in a list should have a unique \"key\" prop.' + '%s%s See https://reactjs.org/link/warning-keys for more information.', currentComponentErrorInfo, childOwner);\n\n    setCurrentlyValidatingElement$1(null);\n  }\n}\n/**\n * Ensure that every element either is passed in a static location, in an\n * array with an explicit keys property defined, or in an object literal\n * with valid key property.\n *\n * @internal\n * @param {ReactNode} node Statically passed child of any type.\n * @param {*} parentType node's parent's type.\n */\n\n\nfunction validateChildKeys(node, parentType) {\n  {\n    if (typeof node !== 'object') {\n      return;\n    }\n\n    if (isArray(node)) {\n      for (var i = 0; i < node.length; i++) {\n        var child = node[i];\n\n        if (isValidElement(child)) {\n          validateExplicitKey(child, parentType);\n        }\n      }\n    } else if (isValidElement(node)) {\n      // This element was passed in a valid location.\n      if (node._store) {\n        node._store.validated = true;\n      }\n    } else if (node) {\n      var iteratorFn = getIteratorFn(node);\n\n      if (typeof iteratorFn === 'function') {\n        // Entry iterators used to provide implicit keys,\n        // but now we print a separate warning for them later.\n        if (iteratorFn !== node.entries) {\n          var iterator = iteratorFn.call(node);\n          var step;\n\n          while (!(step = iterator.next()).done) {\n            if (isValidElement(step.value)) {\n              validateExplicitKey(step.value, parentType);\n            }\n          }\n        }\n      }\n    }\n  }\n}\n/**\n * Given an element, validate that its props follow the propTypes definition,\n * provided by the type.\n *\n * @param {ReactElement} element\n */\n\n\nfunction validatePropTypes(element) {\n  {\n    var type = element.type;\n\n    if (type === null || type === undefined || typeof type === 'string') {\n      return;\n    }\n\n    var propTypes;\n\n    if (typeof type === 'function') {\n      propTypes = type.propTypes;\n    } else if (typeof type === 'object' && (type.$$typeof === REACT_FORWARD_REF_TYPE || // Note: Memo only checks outer props here.\n    // Inner props are checked in the reconciler.\n    type.$$typeof === REACT_MEMO_TYPE)) {\n      propTypes = type.propTypes;\n    } else {\n      return;\n    }\n\n    if (propTypes) {\n      // Intentionally inside to avoid triggering lazy initializers:\n      var name = getComponentNameFromType(type);\n      checkPropTypes(propTypes, element.props, 'prop', name, element);\n    } else if (type.PropTypes !== undefined && !propTypesMisspellWarningShown) {\n      propTypesMisspellWarningShown = true; // Intentionally inside to avoid triggering lazy initializers:\n\n      var _name = getComponentNameFromType(type);\n\n      error('Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?', _name || 'Unknown');\n    }\n\n    if (typeof type.getDefaultProps === 'function' && !type.getDefaultProps.isReactClassApproved) {\n      error('getDefaultProps is only used on classic React.createClass ' + 'definitions. Use a static property named `defaultProps` instead.');\n    }\n  }\n}\n/**\n * Given a fragment, validate that it can only be provided with fragment props\n * @param {ReactElement} fragment\n */\n\n\nfunction validateFragmentProps(fragment) {\n  {\n    var keys = Object.keys(fragment.props);\n\n    for (var i = 0; i < keys.length; i++) {\n      var key = keys[i];\n\n      if (key !== 'children' && key !== 'key') {\n        setCurrentlyValidatingElement$1(fragment);\n\n        error('Invalid prop `%s` supplied to `React.Fragment`. ' + 'React.Fragment can only have `key` and `children` props.', key);\n\n        setCurrentlyValidatingElement$1(null);\n        break;\n      }\n    }\n\n    if (fragment.ref !== null) {\n      setCurrentlyValidatingElement$1(fragment);\n\n      error('Invalid attribute `ref` supplied to `React.Fragment`.');\n\n      setCurrentlyValidatingElement$1(null);\n    }\n  }\n}\n\nfunction jsxWithValidation(type, props, key, isStaticChildren, source, self) {\n  {\n    var validType = isValidElementType(type); // We warn in this case but don't throw. We expect the element creation to\n    // succeed and there will likely be errors in render.\n\n    if (!validType) {\n      var info = '';\n\n      if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) {\n        info += ' You likely forgot to export your component from the file ' + \"it's defined in, or you might have mixed up default and named imports.\";\n      }\n\n      var sourceInfo = getSourceInfoErrorAddendum(source);\n\n      if (sourceInfo) {\n        info += sourceInfo;\n      } else {\n        info += getDeclarationErrorAddendum();\n      }\n\n      var typeString;\n\n      if (type === null) {\n        typeString = 'null';\n      } else if (isArray(type)) {\n        typeString = 'array';\n      } else if (type !== undefined && type.$$typeof === REACT_ELEMENT_TYPE) {\n        typeString = \"<\" + (getComponentNameFromType(type.type) || 'Unknown') + \" />\";\n        info = ' Did you accidentally export a JSX literal instead of a component?';\n      } else {\n        typeString = typeof type;\n      }\n\n      error('React.jsx: type is invalid -- expected a string (for ' + 'built-in components) or a class/function (for composite ' + 'components) but got: %s.%s', typeString, info);\n    }\n\n    var element = jsxDEV(type, props, key, source, self); // The result can be nullish if a mock or a custom function is used.\n    // TODO: Drop this when these are no longer allowed as the type argument.\n\n    if (element == null) {\n      return element;\n    } // Skip key warning if the type isn't valid since our key validation logic\n    // doesn't expect a non-string/function type and can throw confusing errors.\n    // We don't want exception behavior to differ between dev and prod.\n    // (Rendering will throw with a helpful message and as soon as the type is\n    // fixed, the key warnings will appear.)\n\n\n    if (validType) {\n      var children = props.children;\n\n      if (children !== undefined) {\n        if (isStaticChildren) {\n          if (isArray(children)) {\n            for (var i = 0; i < children.length; i++) {\n              validateChildKeys(children[i], type);\n            }\n\n            if (Object.freeze) {\n              Object.freeze(children);\n            }\n          } else {\n            error('React.jsx: Static children should always be an array. ' + 'You are likely explicitly calling React.jsxs or React.jsxDEV. ' + 'Use the Babel transform instead.');\n          }\n        } else {\n          validateChildKeys(children, type);\n        }\n      }\n    }\n\n    if (type === REACT_FRAGMENT_TYPE) {\n      validateFragmentProps(element);\n    } else {\n      validatePropTypes(element);\n    }\n\n    return element;\n  }\n} // These two functions exist to still get child warnings in dev\n// even with the prod transform. This means that jsxDEV is purely\n// opt-in behavior for better messages but that we won't stop\n// giving you warnings if you use production apis.\n\nfunction jsxWithValidationStatic(type, props, key) {\n  {\n    return jsxWithValidation(type, props, key, true);\n  }\n}\nfunction jsxWithValidationDynamic(type, props, key) {\n  {\n    return jsxWithValidation(type, props, key, false);\n  }\n}\n\nvar jsx =  jsxWithValidationDynamic ; // we may want to special case jsxs internally to take advantage of static children.\n// for now we can ship identical prod functions\n\nvar jsxs =  jsxWithValidationStatic ;\n\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.jsx = jsx;\nexports.jsxs = jsxs;\n  })();\n}\n", "'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n  module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n", "/*\r\n * @namespace Util\r\n *\r\n * Various utility functions, used by Leaflet internally.\r\n */\r\n\r\n// @function extend(dest: Object, src?: Object): Object\r\n// Merges the properties of the `src` object (or multiple objects) into `dest` object and returns the latter. Has an `L.extend` shortcut.\r\nexport function extend(dest) {\r\n\tvar i, j, len, src;\r\n\r\n\tfor (j = 1, len = arguments.length; j < len; j++) {\r\n\t\tsrc = arguments[j];\r\n\t\tfor (i in src) {\r\n\t\t\tdest[i] = src[i];\r\n\t\t}\r\n\t}\r\n\treturn dest;\r\n}\r\n\r\n// @function create(proto: Object, properties?: Object): Object\r\n// Compatibility polyfill for [Object.create](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/create)\r\nexport var create = Object.create || (function () {\r\n\tfunction F() {}\r\n\treturn function (proto) {\r\n\t\tF.prototype = proto;\r\n\t\treturn new F();\r\n\t};\r\n})();\r\n\r\n// @function bind(fn: Function, …): Function\r\n// Returns a new function bound to the arguments passed, like [Function.prototype.bind](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Function/bind).\r\n// Has a `L.bind()` shortcut.\r\nexport function bind(fn, obj) {\r\n\tvar slice = Array.prototype.slice;\r\n\r\n\tif (fn.bind) {\r\n\t\treturn fn.bind.apply(fn, slice.call(arguments, 1));\r\n\t}\r\n\r\n\tvar args = slice.call(arguments, 2);\r\n\r\n\treturn function () {\r\n\t\treturn fn.apply(obj, args.length ? args.concat(slice.call(arguments)) : arguments);\r\n\t};\r\n}\r\n\r\n// @property lastId: Number\r\n// Last unique ID used by [`stamp()`](#util-stamp)\r\nexport var lastId = 0;\r\n\r\n// @function stamp(obj: Object): Number\r\n// Returns the unique ID of an object, assigning it one if it doesn't have it.\r\nexport function stamp(obj) {\r\n\tif (!('_leaflet_id' in obj)) {\r\n\t\tobj['_leaflet_id'] = ++lastId;\r\n\t}\r\n\treturn obj._leaflet_id;\r\n}\r\n\r\n// @function throttle(fn: Function, time: Number, context: Object): Function\r\n// Returns a function which executes function `fn` with the given scope `context`\r\n// (so that the `this` keyword refers to `context` inside `fn`'s code). The function\r\n// `fn` will be called no more than one time per given amount of `time`. The arguments\r\n// received by the bound function will be any arguments passed when binding the\r\n// function, followed by any arguments passed when invoking the bound function.\r\n// Has an `L.throttle` shortcut.\r\nexport function throttle(fn, time, context) {\r\n\tvar lock, args, wrapperFn, later;\r\n\r\n\tlater = function () {\r\n\t\t// reset lock and call if queued\r\n\t\tlock = false;\r\n\t\tif (args) {\r\n\t\t\twrapperFn.apply(context, args);\r\n\t\t\targs = false;\r\n\t\t}\r\n\t};\r\n\r\n\twrapperFn = function () {\r\n\t\tif (lock) {\r\n\t\t\t// called too soon, queue to call later\r\n\t\t\targs = arguments;\r\n\r\n\t\t} else {\r\n\t\t\t// call and lock until later\r\n\t\t\tfn.apply(context, arguments);\r\n\t\t\tsetTimeout(later, time);\r\n\t\t\tlock = true;\r\n\t\t}\r\n\t};\r\n\r\n\treturn wrapperFn;\r\n}\r\n\r\n// @function wrapNum(num: Number, range: Number[], includeMax?: Boolean): Number\r\n// Returns the number `num` modulo `range` in such a way so it lies within\r\n// `range[0]` and `range[1]`. The returned value will be always smaller than\r\n// `range[1]` unless `includeMax` is set to `true`.\r\nexport function wrapNum(x, range, includeMax) {\r\n\tvar max = range[1],\r\n\t    min = range[0],\r\n\t    d = max - min;\r\n\treturn x === max && includeMax ? x : ((x - min) % d + d) % d + min;\r\n}\r\n\r\n// @function falseFn(): Function\r\n// Returns a function which always returns `false`.\r\nexport function falseFn() { return false; }\r\n\r\n// @function formatNum(num: Number, precision?: Number|false): Number\r\n// Returns the number `num` rounded with specified `precision`.\r\n// The default `precision` value is 6 decimal places.\r\n// `false` can be passed to skip any processing (can be useful to avoid round-off errors).\r\nexport function formatNum(num, precision) {\r\n\tif (precision === false) { return num; }\r\n\tvar pow = Math.pow(10, precision === undefined ? 6 : precision);\r\n\treturn Math.round(num * pow) / pow;\r\n}\r\n\r\n// @function trim(str: String): String\r\n// Compatibility polyfill for [String.prototype.trim](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String/Trim)\r\nexport function trim(str) {\r\n\treturn str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\r\n}\r\n\r\n// @function splitWords(str: String): String[]\r\n// Trims and splits the string on whitespace and returns the array of parts.\r\nexport function splitWords(str) {\r\n\treturn trim(str).split(/\\s+/);\r\n}\r\n\r\n// @function setOptions(obj: Object, options: Object): Object\r\n// Merges the given properties to the `options` of the `obj` object, returning the resulting options. See `Class options`. Has an `L.setOptions` shortcut.\r\nexport function setOptions(obj, options) {\r\n\tif (!Object.prototype.hasOwnProperty.call(obj, 'options')) {\r\n\t\tobj.options = obj.options ? create(obj.options) : {};\r\n\t}\r\n\tfor (var i in options) {\r\n\t\tobj.options[i] = options[i];\r\n\t}\r\n\treturn obj.options;\r\n}\r\n\r\n// @function getParamString(obj: Object, existingUrl?: String, uppercase?: Boolean): String\r\n// Converts an object into a parameter URL string, e.g. `{a: \"foo\", b: \"bar\"}`\r\n// translates to `'?a=foo&b=bar'`. If `existingUrl` is set, the parameters will\r\n// be appended at the end. If `uppercase` is `true`, the parameter names will\r\n// be uppercased (e.g. `'?A=foo&B=bar'`)\r\nexport function getParamString(obj, existingUrl, uppercase) {\r\n\tvar params = [];\r\n\tfor (var i in obj) {\r\n\t\tparams.push(encodeURIComponent(uppercase ? i.toUpperCase() : i) + '=' + encodeURIComponent(obj[i]));\r\n\t}\r\n\treturn ((!existingUrl || existingUrl.indexOf('?') === -1) ? '?' : '&') + params.join('&');\r\n}\r\n\r\nvar templateRe = /\\{ *([\\w_ -]+) *\\}/g;\r\n\r\n// @function template(str: String, data: Object): String\r\n// Simple templating facility, accepts a template string of the form `'Hello {a}, {b}'`\r\n// and a data object like `{a: 'foo', b: 'bar'}`, returns evaluated string\r\n// `('Hello foo, bar')`. You can also specify functions instead of strings for\r\n// data values — they will be evaluated passing `data` as an argument.\r\nexport function template(str, data) {\r\n\treturn str.replace(templateRe, function (str, key) {\r\n\t\tvar value = data[key];\r\n\r\n\t\tif (value === undefined) {\r\n\t\t\tthrow new Error('No value provided for variable ' + str);\r\n\r\n\t\t} else if (typeof value === 'function') {\r\n\t\t\tvalue = value(data);\r\n\t\t}\r\n\t\treturn value;\r\n\t});\r\n}\r\n\r\n// @function isArray(obj): Boolean\r\n// Compatibility polyfill for [Array.isArray](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray)\r\nexport var isArray = Array.isArray || function (obj) {\r\n\treturn (Object.prototype.toString.call(obj) === '[object Array]');\r\n};\r\n\r\n// @function indexOf(array: Array, el: Object): Number\r\n// Compatibility polyfill for [Array.prototype.indexOf](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf)\r\nexport function indexOf(array, el) {\r\n\tfor (var i = 0; i < array.length; i++) {\r\n\t\tif (array[i] === el) { return i; }\r\n\t}\r\n\treturn -1;\r\n}\r\n\r\n// @property emptyImageUrl: String\r\n// Data URI string containing a base64-encoded empty GIF image.\r\n// Used as a hack to free memory from unused images on WebKit-powered\r\n// mobile devices (by setting image `src` to this string).\r\nexport var emptyImageUrl = 'data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=';\r\n\r\n// inspired by https://paulirish.com/2011/requestanimationframe-for-smart-animating/\r\n\r\nfunction getPrefixed(name) {\r\n\treturn window['webkit' + name] || window['moz' + name] || window['ms' + name];\r\n}\r\n\r\nvar lastTime = 0;\r\n\r\n// fallback for IE 7-8\r\nfunction timeoutDefer(fn) {\r\n\tvar time = +new Date(),\r\n\t    timeToCall = Math.max(0, 16 - (time - lastTime));\r\n\r\n\tlastTime = time + timeToCall;\r\n\treturn window.setTimeout(fn, timeToCall);\r\n}\r\n\r\nexport var requestFn = window.requestAnimationFrame || getPrefixed('RequestAnimationFrame') || timeoutDefer;\r\nexport var cancelFn = window.cancelAnimationFrame || getPrefixed('CancelAnimationFrame') ||\r\n\t\tgetPrefixed('CancelRequestAnimationFrame') || function (id) { window.clearTimeout(id); };\r\n\r\n// @function requestAnimFrame(fn: Function, context?: Object, immediate?: Boolean): Number\r\n// Schedules `fn` to be executed when the browser repaints. `fn` is bound to\r\n// `context` if given. When `immediate` is set, `fn` is called immediately if\r\n// the browser doesn't have native support for\r\n// [`window.requestAnimationFrame`](https://developer.mozilla.org/docs/Web/API/window/requestAnimationFrame),\r\n// otherwise it's delayed. Returns a request ID that can be used to cancel the request.\r\nexport function requestAnimFrame(fn, context, immediate) {\r\n\tif (immediate && requestFn === timeoutDefer) {\r\n\t\tfn.call(context);\r\n\t} else {\r\n\t\treturn requestFn.call(window, bind(fn, context));\r\n\t}\r\n}\r\n\r\n// @function cancelAnimFrame(id: Number): undefined\r\n// Cancels a previous `requestAnimFrame`. See also [window.cancelAnimationFrame](https://developer.mozilla.org/docs/Web/API/window/cancelAnimationFrame).\r\nexport function cancelAnimFrame(id) {\r\n\tif (id) {\r\n\t\tcancelFn.call(window, id);\r\n\t}\r\n}\r\n", "import * as Util from './Util';\r\n\r\n// @class Class\r\n// @aka L.Class\r\n\r\n// @section\r\n// @uninheritable\r\n\r\n// Thanks to John Resig and Dean Edwards for inspiration!\r\n\r\nexport function Class() {}\r\n\r\nClass.extend = function (props) {\r\n\r\n\t// @function extend(props: Object): Function\r\n\t// [Extends the current class](#class-inheritance) given the properties to be included.\r\n\t// Returns a Javascript function that is a class constructor (to be called with `new`).\r\n\tvar NewClass = function () {\r\n\r\n\t\tUtil.setOptions(this);\r\n\r\n\t\t// call the constructor\r\n\t\tif (this.initialize) {\r\n\t\t\tthis.initialize.apply(this, arguments);\r\n\t\t}\r\n\r\n\t\t// call all constructor hooks\r\n\t\tthis.callInitHooks();\r\n\t};\r\n\r\n\tvar parentProto = NewClass.__super__ = this.prototype;\r\n\r\n\tvar proto = Util.create(parentProto);\r\n\tproto.constructor = NewClass;\r\n\r\n\tNewClass.prototype = proto;\r\n\r\n\t// inherit parent's statics\r\n\tfor (var i in this) {\r\n\t\tif (Object.prototype.hasOwnProperty.call(this, i) && i !== 'prototype' && i !== '__super__') {\r\n\t\t\tNewClass[i] = this[i];\r\n\t\t}\r\n\t}\r\n\r\n\t// mix static properties into the class\r\n\tif (props.statics) {\r\n\t\tUtil.extend(NewClass, props.statics);\r\n\t}\r\n\r\n\t// mix includes into the prototype\r\n\tif (props.includes) {\r\n\t\tcheckDeprecatedMixinEvents(props.includes);\r\n\t\tUtil.extend.apply(null, [proto].concat(props.includes));\r\n\t}\r\n\r\n\t// mix given properties into the prototype\r\n\tUtil.extend(proto, props);\r\n\tdelete proto.statics;\r\n\tdelete proto.includes;\r\n\r\n\t// merge options\r\n\tif (proto.options) {\r\n\t\tproto.options = parentProto.options ? Util.create(parentProto.options) : {};\r\n\t\tUtil.extend(proto.options, props.options);\r\n\t}\r\n\r\n\tproto._initHooks = [];\r\n\r\n\t// add method for calling all hooks\r\n\tproto.callInitHooks = function () {\r\n\r\n\t\tif (this._initHooksCalled) { return; }\r\n\r\n\t\tif (parentProto.callInitHooks) {\r\n\t\t\tparentProto.callInitHooks.call(this);\r\n\t\t}\r\n\r\n\t\tthis._initHooksCalled = true;\r\n\r\n\t\tfor (var i = 0, len = proto._initHooks.length; i < len; i++) {\r\n\t\t\tproto._initHooks[i].call(this);\r\n\t\t}\r\n\t};\r\n\r\n\treturn NewClass;\r\n};\r\n\r\n\r\n// @function include(properties: Object): this\r\n// [Includes a mixin](#class-includes) into the current class.\r\nClass.include = function (props) {\r\n\tvar parentOptions = this.prototype.options;\r\n\tUtil.extend(this.prototype, props);\r\n\tif (props.options) {\r\n\t\tthis.prototype.options = parentOptions;\r\n\t\tthis.mergeOptions(props.options);\r\n\t}\r\n\treturn this;\r\n};\r\n\r\n// @function mergeOptions(options: Object): this\r\n// [Merges `options`](#class-options) into the defaults of the class.\r\nClass.mergeOptions = function (options) {\r\n\tUtil.extend(this.prototype.options, options);\r\n\treturn this;\r\n};\r\n\r\n// @function addInitHook(fn: Function): this\r\n// Adds a [constructor hook](#class-constructor-hooks) to the class.\r\nClass.addInitHook = function (fn) { // (Function) || (String, args...)\r\n\tvar args = Array.prototype.slice.call(arguments, 1);\r\n\r\n\tvar init = typeof fn === 'function' ? fn : function () {\r\n\t\tthis[fn].apply(this, args);\r\n\t};\r\n\r\n\tthis.prototype._initHooks = this.prototype._initHooks || [];\r\n\tthis.prototype._initHooks.push(init);\r\n\treturn this;\r\n};\r\n\r\nfunction checkDeprecatedMixinEvents(includes) {\r\n\t/* global L: true */\r\n\tif (typeof L === 'undefined' || !L || !L.Mixin) { return; }\r\n\r\n\tincludes = Util.isArray(includes) ? includes : [includes];\r\n\r\n\tfor (var i = 0; i < includes.length; i++) {\r\n\t\tif (includes[i] === L.Mixin.Events) {\r\n\t\t\tconsole.warn('Deprecated include of L.Mixin.Events: ' +\r\n\t\t\t\t'this property will be removed in future releases, ' +\r\n\t\t\t\t'please inherit from L.Evented instead.', new Error().stack);\r\n\t\t}\r\n\t}\r\n}\r\n", "import {Class} from './Class';\r\nimport * as Util from './Util';\r\n\r\n/*\r\n * @class Evented\r\n * @aka L.Evented\r\n * @inherits Class\r\n *\r\n * A set of methods shared between event-powered classes (like `Map` and `Marker`). Generally, events allow you to execute some function when something happens with an object (e.g. the user clicks on the map, causing the map to fire `'click'` event).\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * map.on('click', function(e) {\r\n * \talert(e.latlng);\r\n * } );\r\n * ```\r\n *\r\n * Leaflet deals with event listeners by reference, so if you want to add a listener and then remove it, define it as a function:\r\n *\r\n * ```js\r\n * function onClick(e) { ... }\r\n *\r\n * map.on('click', onClick);\r\n * map.off('click', onClick);\r\n * ```\r\n */\r\n\r\nexport var Events = {\r\n\t/* @method on(type: String, fn: Function, context?: Object): this\r\n\t * Adds a listener function (`fn`) to a particular event type of the object. You can optionally specify the context of the listener (object the this keyword will point to). You can also pass several space-separated types (e.g. `'click dblclick'`).\r\n\t *\r\n\t * @alternative\r\n\t * @method on(eventMap: Object): this\r\n\t * Adds a set of type/listener pairs, e.g. `{click: onClick, mousemove: onMouseMove}`\r\n\t */\r\n\ton: function (types, fn, context) {\r\n\r\n\t\t// types can be a map of types/handlers\r\n\t\tif (typeof types === 'object') {\r\n\t\t\tfor (var type in types) {\r\n\t\t\t\t// we don't process space-separated events here for performance;\r\n\t\t\t\t// it's a hot path since Layer uses the on(obj) syntax\r\n\t\t\t\tthis._on(type, types[type], fn);\r\n\t\t\t}\r\n\r\n\t\t} else {\r\n\t\t\t// types can be a string of space-separated words\r\n\t\t\ttypes = Util.splitWords(types);\r\n\r\n\t\t\tfor (var i = 0, len = types.length; i < len; i++) {\r\n\t\t\t\tthis._on(types[i], fn, context);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t/* @method off(type: String, fn?: Function, context?: Object): this\r\n\t * Removes a previously added listener function. If no function is specified, it will remove all the listeners of that particular event from the object. Note that if you passed a custom context to `on`, you must pass the same context to `off` in order to remove the listener.\r\n\t *\r\n\t * @alternative\r\n\t * @method off(eventMap: Object): this\r\n\t * Removes a set of type/listener pairs.\r\n\t *\r\n\t * @alternative\r\n\t * @method off: this\r\n\t * Removes all listeners to all events on the object. This includes implicitly attached events.\r\n\t */\r\n\toff: function (types, fn, context) {\r\n\r\n\t\tif (!arguments.length) {\r\n\t\t\t// clear all listeners if called without arguments\r\n\t\t\tdelete this._events;\r\n\r\n\t\t} else if (typeof types === 'object') {\r\n\t\t\tfor (var type in types) {\r\n\t\t\t\tthis._off(type, types[type], fn);\r\n\t\t\t}\r\n\r\n\t\t} else {\r\n\t\t\ttypes = Util.splitWords(types);\r\n\r\n\t\t\tvar removeAll = arguments.length === 1;\r\n\t\t\tfor (var i = 0, len = types.length; i < len; i++) {\r\n\t\t\t\tif (removeAll) {\r\n\t\t\t\t\tthis._off(types[i]);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis._off(types[i], fn, context);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// attach listener (without syntactic sugar now)\r\n\t_on: function (type, fn, context, _once) {\r\n\t\tif (typeof fn !== 'function') {\r\n\t\t\tconsole.warn('wrong listener type: ' + typeof fn);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// check if fn already there\r\n\t\tif (this._listens(type, fn, context) !== false) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (context === this) {\r\n\t\t\t// Less memory footprint.\r\n\t\t\tcontext = undefined;\r\n\t\t}\r\n\r\n\t\tvar newListener = {fn: fn, ctx: context};\r\n\t\tif (_once) {\r\n\t\t\tnewListener.once = true;\r\n\t\t}\r\n\r\n\t\tthis._events = this._events || {};\r\n\t\tthis._events[type] = this._events[type] || [];\r\n\t\tthis._events[type].push(newListener);\r\n\t},\r\n\r\n\t_off: function (type, fn, context) {\r\n\t\tvar listeners,\r\n\t\t    i,\r\n\t\t    len;\r\n\r\n\t\tif (!this._events) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlisteners = this._events[type];\r\n\t\tif (!listeners) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (arguments.length === 1) { // remove all\r\n\t\t\tif (this._firingCount) {\r\n\t\t\t\t// Set all removed listeners to noop\r\n\t\t\t\t// so they are not called if remove happens in fire\r\n\t\t\t\tfor (i = 0, len = listeners.length; i < len; i++) {\r\n\t\t\t\t\tlisteners[i].fn = Util.falseFn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// clear all listeners for a type if function isn't specified\r\n\t\t\tdelete this._events[type];\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (typeof fn !== 'function') {\r\n\t\t\tconsole.warn('wrong listener type: ' + typeof fn);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// find fn and remove it\r\n\t\tvar index = this._listens(type, fn, context);\r\n\t\tif (index !== false) {\r\n\t\t\tvar listener = listeners[index];\r\n\t\t\tif (this._firingCount) {\r\n\t\t\t\t// set the removed listener to noop so that's not called if remove happens in fire\r\n\t\t\t\tlistener.fn = Util.falseFn;\r\n\r\n\t\t\t\t/* copy array in case events are being fired */\r\n\t\t\t\tthis._events[type] = listeners = listeners.slice();\r\n\t\t\t}\r\n\t\t\tlisteners.splice(index, 1);\r\n\t\t}\r\n\t},\r\n\r\n\t// @method fire(type: String, data?: Object, propagate?: Boolean): this\r\n\t// Fires an event of the specified type. You can optionally provide a data\r\n\t// object — the first argument of the listener function will contain its\r\n\t// properties. The event can optionally be propagated to event parents.\r\n\tfire: function (type, data, propagate) {\r\n\t\tif (!this.listens(type, propagate)) { return this; }\r\n\r\n\t\tvar event = Util.extend({}, data, {\r\n\t\t\ttype: type,\r\n\t\t\ttarget: this,\r\n\t\t\tsourceTarget: data && data.sourceTarget || this\r\n\t\t});\r\n\r\n\t\tif (this._events) {\r\n\t\t\tvar listeners = this._events[type];\r\n\t\t\tif (listeners) {\r\n\t\t\t\tthis._firingCount = (this._firingCount + 1) || 1;\r\n\t\t\t\tfor (var i = 0, len = listeners.length; i < len; i++) {\r\n\t\t\t\t\tvar l = listeners[i];\r\n\t\t\t\t\t// off overwrites l.fn, so we need to copy fn to a var\r\n\t\t\t\t\tvar fn = l.fn;\r\n\t\t\t\t\tif (l.once) {\r\n\t\t\t\t\t\tthis.off(type, fn, l.ctx);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tfn.call(l.ctx || this, event);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis._firingCount--;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (propagate) {\r\n\t\t\t// propagate the event to parents (set with addEventParent)\r\n\t\t\tthis._propagateEvent(event);\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method listens(type: String, propagate?: Boolean): Boolean\r\n\t// @method listens(type: String, fn: Function, context?: Object, propagate?: Boolean): Boolean\r\n\t// Returns `true` if a particular event type has any listeners attached to it.\r\n\t// The verification can optionally be propagated, it will return `true` if parents have the listener attached to it.\r\n\tlistens: function (type, fn, context, propagate) {\r\n\t\tif (typeof type !== 'string') {\r\n\t\t\tconsole.warn('\"string\" type argument expected');\r\n\t\t}\r\n\r\n\t\t// we don't overwrite the input `fn` value, because we need to use it for propagation\r\n\t\tvar _fn = fn;\r\n\t\tif (typeof fn !== 'function') {\r\n\t\t\tpropagate = !!fn;\r\n\t\t\t_fn = undefined;\r\n\t\t\tcontext = undefined;\r\n\t\t}\r\n\r\n\t\tvar listeners = this._events && this._events[type];\r\n\t\tif (listeners && listeners.length) {\r\n\t\t\tif (this._listens(type, _fn, context) !== false) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (propagate) {\r\n\t\t\t// also check parents for listeners if event propagates\r\n\t\t\tfor (var id in this._eventParents) {\r\n\t\t\t\tif (this._eventParents[id].listens(type, fn, context, propagate)) { return true; }\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn false;\r\n\t},\r\n\r\n\t// returns the index (number) or false\r\n\t_listens: function (type, fn, context) {\r\n\t\tif (!this._events) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tvar listeners = this._events[type] || [];\r\n\t\tif (!fn) {\r\n\t\t\treturn !!listeners.length;\r\n\t\t}\r\n\r\n\t\tif (context === this) {\r\n\t\t\t// Less memory footprint.\r\n\t\t\tcontext = undefined;\r\n\t\t}\r\n\r\n\t\tfor (var i = 0, len = listeners.length; i < len; i++) {\r\n\t\t\tif (listeners[i].fn === fn && listeners[i].ctx === context) {\r\n\t\t\t\treturn i;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn false;\r\n\r\n\t},\r\n\r\n\t// @method once(…): this\r\n\t// Behaves as [`on(…)`](#evented-on), except the listener will only get fired once and then removed.\r\n\tonce: function (types, fn, context) {\r\n\r\n\t\t// types can be a map of types/handlers\r\n\t\tif (typeof types === 'object') {\r\n\t\t\tfor (var type in types) {\r\n\t\t\t\t// we don't process space-separated events here for performance;\r\n\t\t\t\t// it's a hot path since Layer uses the on(obj) syntax\r\n\t\t\t\tthis._on(type, types[type], fn, true);\r\n\t\t\t}\r\n\r\n\t\t} else {\r\n\t\t\t// types can be a string of space-separated words\r\n\t\t\ttypes = Util.splitWords(types);\r\n\r\n\t\t\tfor (var i = 0, len = types.length; i < len; i++) {\r\n\t\t\t\tthis._on(types[i], fn, context, true);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method addEventParent(obj: Evented): this\r\n\t// Adds an event parent - an `Evented` that will receive propagated events\r\n\taddEventParent: function (obj) {\r\n\t\tthis._eventParents = this._eventParents || {};\r\n\t\tthis._eventParents[Util.stamp(obj)] = obj;\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method removeEventParent(obj: Evented): this\r\n\t// Removes an event parent, so it will stop receiving propagated events\r\n\tremoveEventParent: function (obj) {\r\n\t\tif (this._eventParents) {\r\n\t\t\tdelete this._eventParents[Util.stamp(obj)];\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t_propagateEvent: function (e) {\r\n\t\tfor (var id in this._eventParents) {\r\n\t\t\tthis._eventParents[id].fire(e.type, Util.extend({\r\n\t\t\t\tlayer: e.target,\r\n\t\t\t\tpropagatedFrom: e.target\r\n\t\t\t}, e), true);\r\n\t\t}\r\n\t}\r\n};\r\n\r\n// aliases; we should ditch those eventually\r\n\r\n// @method addEventListener(…): this\r\n// Alias to [`on(…)`](#evented-on)\r\nEvents.addEventListener = Events.on;\r\n\r\n// @method removeEventListener(…): this\r\n// Alias to [`off(…)`](#evented-off)\r\n\r\n// @method clearAllEventListeners(…): this\r\n// Alias to [`off()`](#evented-off)\r\nEvents.removeEventListener = Events.clearAllEventListeners = Events.off;\r\n\r\n// @method addOneTimeEventListener(…): this\r\n// Alias to [`once(…)`](#evented-once)\r\nEvents.addOneTimeEventListener = Events.once;\r\n\r\n// @method fireEvent(…): this\r\n// Alias to [`fire(…)`](#evented-fire)\r\nEvents.fireEvent = Events.fire;\r\n\r\n// @method hasEventListeners(…): Boolean\r\n// Alias to [`listens(…)`](#evented-listens)\r\nEvents.hasEventListeners = Events.listens;\r\n\r\nexport var Evented = Class.extend(Events);\r\n", "import {isArray, formatNum} from '../core/Util';\r\n\r\n/*\r\n * @class Point\r\n * @aka L.Point\r\n *\r\n * Represents a point with `x` and `y` coordinates in pixels.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * var point = L.point(200, 300);\r\n * ```\r\n *\r\n * All Leaflet methods and options that accept `Point` objects also accept them in a simple Array form (unless noted otherwise), so these lines are equivalent:\r\n *\r\n * ```js\r\n * map.panBy([200, 300]);\r\n * map.panBy(L.point(200, 300));\r\n * ```\r\n *\r\n * Note that `Point` does not inherit from Leaflet's `Class` object,\r\n * which means new classes can't inherit from it, and new methods\r\n * can't be added to it with the `include` function.\r\n */\r\n\r\nexport function Point(x, y, round) {\r\n\t// @property x: Number; The `x` coordinate of the point\r\n\tthis.x = (round ? Math.round(x) : x);\r\n\t// @property y: Number; The `y` coordinate of the point\r\n\tthis.y = (round ? Math.round(y) : y);\r\n}\r\n\r\nvar trunc = Math.trunc || function (v) {\r\n\treturn v > 0 ? Math.floor(v) : Math.ceil(v);\r\n};\r\n\r\nPoint.prototype = {\r\n\r\n\t// @method clone(): Point\r\n\t// Returns a copy of the current point.\r\n\tclone: function () {\r\n\t\treturn new Point(this.x, this.y);\r\n\t},\r\n\r\n\t// @method add(otherPoint: Point): Point\r\n\t// Returns the result of addition of the current and the given points.\r\n\tadd: function (point) {\r\n\t\t// non-destructive, returns a new point\r\n\t\treturn this.clone()._add(toPoint(point));\r\n\t},\r\n\r\n\t_add: function (point) {\r\n\t\t// destructive, used directly for performance in situations where it's safe to modify existing point\r\n\t\tthis.x += point.x;\r\n\t\tthis.y += point.y;\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method subtract(otherPoint: Point): Point\r\n\t// Returns the result of subtraction of the given point from the current.\r\n\tsubtract: function (point) {\r\n\t\treturn this.clone()._subtract(toPoint(point));\r\n\t},\r\n\r\n\t_subtract: function (point) {\r\n\t\tthis.x -= point.x;\r\n\t\tthis.y -= point.y;\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method divideBy(num: Number): Point\r\n\t// Returns the result of division of the current point by the given number.\r\n\tdivideBy: function (num) {\r\n\t\treturn this.clone()._divideBy(num);\r\n\t},\r\n\r\n\t_divideBy: function (num) {\r\n\t\tthis.x /= num;\r\n\t\tthis.y /= num;\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method multiplyBy(num: Number): Point\r\n\t// Returns the result of multiplication of the current point by the given number.\r\n\tmultiplyBy: function (num) {\r\n\t\treturn this.clone()._multiplyBy(num);\r\n\t},\r\n\r\n\t_multiplyBy: function (num) {\r\n\t\tthis.x *= num;\r\n\t\tthis.y *= num;\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method scaleBy(scale: Point): Point\r\n\t// Multiply each coordinate of the current point by each coordinate of\r\n\t// `scale`. In linear algebra terms, multiply the point by the\r\n\t// [scaling matrix](https://en.wikipedia.org/wiki/Scaling_%28geometry%29#Matrix_representation)\r\n\t// defined by `scale`.\r\n\tscaleBy: function (point) {\r\n\t\treturn new Point(this.x * point.x, this.y * point.y);\r\n\t},\r\n\r\n\t// @method unscaleBy(scale: Point): Point\r\n\t// Inverse of `scaleBy`. Divide each coordinate of the current point by\r\n\t// each coordinate of `scale`.\r\n\tunscaleBy: function (point) {\r\n\t\treturn new Point(this.x / point.x, this.y / point.y);\r\n\t},\r\n\r\n\t// @method round(): Point\r\n\t// Returns a copy of the current point with rounded coordinates.\r\n\tround: function () {\r\n\t\treturn this.clone()._round();\r\n\t},\r\n\r\n\t_round: function () {\r\n\t\tthis.x = Math.round(this.x);\r\n\t\tthis.y = Math.round(this.y);\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method floor(): Point\r\n\t// Returns a copy of the current point with floored coordinates (rounded down).\r\n\tfloor: function () {\r\n\t\treturn this.clone()._floor();\r\n\t},\r\n\r\n\t_floor: function () {\r\n\t\tthis.x = Math.floor(this.x);\r\n\t\tthis.y = Math.floor(this.y);\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method ceil(): Point\r\n\t// Returns a copy of the current point with ceiled coordinates (rounded up).\r\n\tceil: function () {\r\n\t\treturn this.clone()._ceil();\r\n\t},\r\n\r\n\t_ceil: function () {\r\n\t\tthis.x = Math.ceil(this.x);\r\n\t\tthis.y = Math.ceil(this.y);\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method trunc(): Point\r\n\t// Returns a copy of the current point with truncated coordinates (rounded towards zero).\r\n\ttrunc: function () {\r\n\t\treturn this.clone()._trunc();\r\n\t},\r\n\r\n\t_trunc: function () {\r\n\t\tthis.x = trunc(this.x);\r\n\t\tthis.y = trunc(this.y);\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method distanceTo(otherPoint: Point): Number\r\n\t// Returns the cartesian distance between the current and the given points.\r\n\tdistanceTo: function (point) {\r\n\t\tpoint = toPoint(point);\r\n\r\n\t\tvar x = point.x - this.x,\r\n\t\t    y = point.y - this.y;\r\n\r\n\t\treturn Math.sqrt(x * x + y * y);\r\n\t},\r\n\r\n\t// @method equals(otherPoint: Point): Boolean\r\n\t// Returns `true` if the given point has the same coordinates.\r\n\tequals: function (point) {\r\n\t\tpoint = toPoint(point);\r\n\r\n\t\treturn point.x === this.x &&\r\n\t\t       point.y === this.y;\r\n\t},\r\n\r\n\t// @method contains(otherPoint: Point): Boolean\r\n\t// Returns `true` if both coordinates of the given point are less than the corresponding current point coordinates (in absolute values).\r\n\tcontains: function (point) {\r\n\t\tpoint = toPoint(point);\r\n\r\n\t\treturn Math.abs(point.x) <= Math.abs(this.x) &&\r\n\t\t       Math.abs(point.y) <= Math.abs(this.y);\r\n\t},\r\n\r\n\t// @method toString(): String\r\n\t// Returns a string representation of the point for debugging purposes.\r\n\ttoString: function () {\r\n\t\treturn 'Point(' +\r\n\t\t        formatNum(this.x) + ', ' +\r\n\t\t        formatNum(this.y) + ')';\r\n\t}\r\n};\r\n\r\n// @factory L.point(x: Number, y: Number, round?: Boolean)\r\n// Creates a Point object with the given `x` and `y` coordinates. If optional `round` is set to true, rounds the `x` and `y` values.\r\n\r\n// @alternative\r\n// @factory L.point(coords: Number[])\r\n// Expects an array of the form `[x, y]` instead.\r\n\r\n// @alternative\r\n// @factory L.point(coords: Object)\r\n// Expects a plain object of the form `{x: Number, y: Number}` instead.\r\nexport function toPoint(x, y, round) {\r\n\tif (x instanceof Point) {\r\n\t\treturn x;\r\n\t}\r\n\tif (isArray(x)) {\r\n\t\treturn new Point(x[0], x[1]);\r\n\t}\r\n\tif (x === undefined || x === null) {\r\n\t\treturn x;\r\n\t}\r\n\tif (typeof x === 'object' && 'x' in x && 'y' in x) {\r\n\t\treturn new Point(x.x, x.y);\r\n\t}\r\n\treturn new Point(x, y, round);\r\n}\r\n", "import {Point, toPoint} from './Point';\r\n\r\n/*\r\n * @class Bounds\r\n * @aka L.Bounds\r\n *\r\n * Represents a rectangular area in pixel coordinates.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * var p1 = L.point(10, 10),\r\n * p2 = L.point(40, 60),\r\n * bounds = L.bounds(p1, p2);\r\n * ```\r\n *\r\n * All Leaflet methods that accept `Bounds` objects also accept them in a simple Array form (unless noted otherwise), so the bounds example above can be passed like this:\r\n *\r\n * ```js\r\n * otherBounds.intersects([[10, 10], [40, 60]]);\r\n * ```\r\n *\r\n * Note that `Bounds` does not inherit from Leaflet's `Class` object,\r\n * which means new classes can't inherit from it, and new methods\r\n * can't be added to it with the `include` function.\r\n */\r\n\r\nexport function Bounds(a, b) {\r\n\tif (!a) { return; }\r\n\r\n\tvar points = b ? [a, b] : a;\r\n\r\n\tfor (var i = 0, len = points.length; i < len; i++) {\r\n\t\tthis.extend(points[i]);\r\n\t}\r\n}\r\n\r\nBounds.prototype = {\r\n\t// @method extend(point: Point): this\r\n\t// Extends the bounds to contain the given point.\r\n\r\n\t// @alternative\r\n\t// @method extend(otherBounds: Bounds): this\r\n\t// Extend the bounds to contain the given bounds\r\n\textend: function (obj) {\r\n\t\tvar min2, max2;\r\n\t\tif (!obj) { return this; }\r\n\r\n\t\tif (obj instanceof Point || typeof obj[0] === 'number' || 'x' in obj) {\r\n\t\t\tmin2 = max2 = toPoint(obj);\r\n\t\t} else {\r\n\t\t\tobj = toBounds(obj);\r\n\t\t\tmin2 = obj.min;\r\n\t\t\tmax2 = obj.max;\r\n\r\n\t\t\tif (!min2 || !max2) { return this; }\r\n\t\t}\r\n\r\n\t\t// @property min: Point\r\n\t\t// The top left corner of the rectangle.\r\n\t\t// @property max: Point\r\n\t\t// The bottom right corner of the rectangle.\r\n\t\tif (!this.min && !this.max) {\r\n\t\t\tthis.min = min2.clone();\r\n\t\t\tthis.max = max2.clone();\r\n\t\t} else {\r\n\t\t\tthis.min.x = Math.min(min2.x, this.min.x);\r\n\t\t\tthis.max.x = Math.max(max2.x, this.max.x);\r\n\t\t\tthis.min.y = Math.min(min2.y, this.min.y);\r\n\t\t\tthis.max.y = Math.max(max2.y, this.max.y);\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method getCenter(round?: Boolean): Point\r\n\t// Returns the center point of the bounds.\r\n\tgetCenter: function (round) {\r\n\t\treturn toPoint(\r\n\t\t        (this.min.x + this.max.x) / 2,\r\n\t\t        (this.min.y + this.max.y) / 2, round);\r\n\t},\r\n\r\n\t// @method getBottomLeft(): Point\r\n\t// Returns the bottom-left point of the bounds.\r\n\tgetBottomLeft: function () {\r\n\t\treturn toPoint(this.min.x, this.max.y);\r\n\t},\r\n\r\n\t// @method getTopRight(): Point\r\n\t// Returns the top-right point of the bounds.\r\n\tgetTopRight: function () { // -> Point\r\n\t\treturn toPoint(this.max.x, this.min.y);\r\n\t},\r\n\r\n\t// @method getTopLeft(): Point\r\n\t// Returns the top-left point of the bounds (i.e. [`this.min`](#bounds-min)).\r\n\tgetTopLeft: function () {\r\n\t\treturn this.min; // left, top\r\n\t},\r\n\r\n\t// @method getBottomRight(): Point\r\n\t// Returns the bottom-right point of the bounds (i.e. [`this.max`](#bounds-max)).\r\n\tgetBottomRight: function () {\r\n\t\treturn this.max; // right, bottom\r\n\t},\r\n\r\n\t// @method getSize(): Point\r\n\t// Returns the size of the given bounds\r\n\tgetSize: function () {\r\n\t\treturn this.max.subtract(this.min);\r\n\t},\r\n\r\n\t// @method contains(otherBounds: Bounds): Boolean\r\n\t// Returns `true` if the rectangle contains the given one.\r\n\t// @alternative\r\n\t// @method contains(point: Point): Boolean\r\n\t// Returns `true` if the rectangle contains the given point.\r\n\tcontains: function (obj) {\r\n\t\tvar min, max;\r\n\r\n\t\tif (typeof obj[0] === 'number' || obj instanceof Point) {\r\n\t\t\tobj = toPoint(obj);\r\n\t\t} else {\r\n\t\t\tobj = toBounds(obj);\r\n\t\t}\r\n\r\n\t\tif (obj instanceof Bounds) {\r\n\t\t\tmin = obj.min;\r\n\t\t\tmax = obj.max;\r\n\t\t} else {\r\n\t\t\tmin = max = obj;\r\n\t\t}\r\n\r\n\t\treturn (min.x >= this.min.x) &&\r\n\t\t       (max.x <= this.max.x) &&\r\n\t\t       (min.y >= this.min.y) &&\r\n\t\t       (max.y <= this.max.y);\r\n\t},\r\n\r\n\t// @method intersects(otherBounds: Bounds): Boolean\r\n\t// Returns `true` if the rectangle intersects the given bounds. Two bounds\r\n\t// intersect if they have at least one point in common.\r\n\tintersects: function (bounds) { // (Bounds) -> Boolean\r\n\t\tbounds = toBounds(bounds);\r\n\r\n\t\tvar min = this.min,\r\n\t\t    max = this.max,\r\n\t\t    min2 = bounds.min,\r\n\t\t    max2 = bounds.max,\r\n\t\t    xIntersects = (max2.x >= min.x) && (min2.x <= max.x),\r\n\t\t    yIntersects = (max2.y >= min.y) && (min2.y <= max.y);\r\n\r\n\t\treturn xIntersects && yIntersects;\r\n\t},\r\n\r\n\t// @method overlaps(otherBounds: Bounds): Boolean\r\n\t// Returns `true` if the rectangle overlaps the given bounds. Two bounds\r\n\t// overlap if their intersection is an area.\r\n\toverlaps: function (bounds) { // (Bounds) -> Boolean\r\n\t\tbounds = toBounds(bounds);\r\n\r\n\t\tvar min = this.min,\r\n\t\t    max = this.max,\r\n\t\t    min2 = bounds.min,\r\n\t\t    max2 = bounds.max,\r\n\t\t    xOverlaps = (max2.x > min.x) && (min2.x < max.x),\r\n\t\t    yOverlaps = (max2.y > min.y) && (min2.y < max.y);\r\n\r\n\t\treturn xOverlaps && yOverlaps;\r\n\t},\r\n\r\n\t// @method isValid(): Boolean\r\n\t// Returns `true` if the bounds are properly initialized.\r\n\tisValid: function () {\r\n\t\treturn !!(this.min && this.max);\r\n\t},\r\n\r\n\r\n\t// @method pad(bufferRatio: Number): Bounds\r\n\t// Returns bounds created by extending or retracting the current bounds by a given ratio in each direction.\r\n\t// For example, a ratio of 0.5 extends the bounds by 50% in each direction.\r\n\t// Negative values will retract the bounds.\r\n\tpad: function (bufferRatio) {\r\n\t\tvar min = this.min,\r\n\t\tmax = this.max,\r\n\t\theightBuffer = Math.abs(min.x - max.x) * bufferRatio,\r\n\t\twidthBuffer = Math.abs(min.y - max.y) * bufferRatio;\r\n\r\n\r\n\t\treturn toBounds(\r\n\t\t\ttoPoint(min.x - heightBuffer, min.y - widthBuffer),\r\n\t\t\ttoPoint(max.x + heightBuffer, max.y + widthBuffer));\r\n\t},\r\n\r\n\r\n\t// @method equals(otherBounds: Bounds): Boolean\r\n\t// Returns `true` if the rectangle is equivalent to the given bounds.\r\n\tequals: function (bounds) {\r\n\t\tif (!bounds) { return false; }\r\n\r\n\t\tbounds = toBounds(bounds);\r\n\r\n\t\treturn this.min.equals(bounds.getTopLeft()) &&\r\n\t\t\tthis.max.equals(bounds.getBottomRight());\r\n\t},\r\n};\r\n\r\n\r\n// @factory L.bounds(corner1: Point, corner2: Point)\r\n// Creates a Bounds object from two corners coordinate pairs.\r\n// @alternative\r\n// @factory L.bounds(points: Point[])\r\n// Creates a Bounds object from the given array of points.\r\nexport function toBounds(a, b) {\r\n\tif (!a || a instanceof Bounds) {\r\n\t\treturn a;\r\n\t}\r\n\treturn new Bounds(a, b);\r\n}\r\n", "import {LatLng, toLatLng} from './LatLng';\r\n\r\n/*\r\n * @class LatLngBounds\r\n * @aka L.LatLngBounds\r\n *\r\n * Represents a rectangular geographical area on a map.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * var corner1 = L.latLng(40.712, -74.227),\r\n * corner2 = L.latLng(40.774, -74.125),\r\n * bounds = L.latLngBounds(corner1, corner2);\r\n * ```\r\n *\r\n * All Leaflet methods that accept LatLngBounds objects also accept them in a simple Array form (unless noted otherwise), so the bounds example above can be passed like this:\r\n *\r\n * ```js\r\n * map.fitBounds([\r\n * \t[40.712, -74.227],\r\n * \t[40.774, -74.125]\r\n * ]);\r\n * ```\r\n *\r\n * Caution: if the area crosses the antimeridian (often confused with the International Date Line), you must specify corners _outside_ the [-180, 180] degrees longitude range.\r\n *\r\n * Note that `LatLngBounds` does not inherit from Leaflet's `Class` object,\r\n * which means new classes can't inherit from it, and new methods\r\n * can't be added to it with the `include` function.\r\n */\r\n\r\nexport function LatLngBounds(corner1, corner2) { // (LatLng, LatLng) or (LatLng[])\r\n\tif (!corner1) { return; }\r\n\r\n\tvar latlngs = corner2 ? [corner1, corner2] : corner1;\r\n\r\n\tfor (var i = 0, len = latlngs.length; i < len; i++) {\r\n\t\tthis.extend(latlngs[i]);\r\n\t}\r\n}\r\n\r\nLatLngBounds.prototype = {\r\n\r\n\t// @method extend(latlng: LatLng): this\r\n\t// Extend the bounds to contain the given point\r\n\r\n\t// @alternative\r\n\t// @method extend(otherBounds: LatLngBounds): this\r\n\t// Extend the bounds to contain the given bounds\r\n\textend: function (obj) {\r\n\t\tvar sw = this._southWest,\r\n\t\t    ne = this._northEast,\r\n\t\t    sw2, ne2;\r\n\r\n\t\tif (obj instanceof LatLng) {\r\n\t\t\tsw2 = obj;\r\n\t\t\tne2 = obj;\r\n\r\n\t\t} else if (obj instanceof LatLngBounds) {\r\n\t\t\tsw2 = obj._southWest;\r\n\t\t\tne2 = obj._northEast;\r\n\r\n\t\t\tif (!sw2 || !ne2) { return this; }\r\n\r\n\t\t} else {\r\n\t\t\treturn obj ? this.extend(toLatLng(obj) || toLatLngBounds(obj)) : this;\r\n\t\t}\r\n\r\n\t\tif (!sw && !ne) {\r\n\t\t\tthis._southWest = new LatLng(sw2.lat, sw2.lng);\r\n\t\t\tthis._northEast = new LatLng(ne2.lat, ne2.lng);\r\n\t\t} else {\r\n\t\t\tsw.lat = Math.min(sw2.lat, sw.lat);\r\n\t\t\tsw.lng = Math.min(sw2.lng, sw.lng);\r\n\t\t\tne.lat = Math.max(ne2.lat, ne.lat);\r\n\t\t\tne.lng = Math.max(ne2.lng, ne.lng);\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method pad(bufferRatio: Number): LatLngBounds\r\n\t// Returns bounds created by extending or retracting the current bounds by a given ratio in each direction.\r\n\t// For example, a ratio of 0.5 extends the bounds by 50% in each direction.\r\n\t// Negative values will retract the bounds.\r\n\tpad: function (bufferRatio) {\r\n\t\tvar sw = this._southWest,\r\n\t\t    ne = this._northEast,\r\n\t\t    heightBuffer = Math.abs(sw.lat - ne.lat) * bufferRatio,\r\n\t\t    widthBuffer = Math.abs(sw.lng - ne.lng) * bufferRatio;\r\n\r\n\t\treturn new LatLngBounds(\r\n\t\t        new LatLng(sw.lat - heightBuffer, sw.lng - widthBuffer),\r\n\t\t        new LatLng(ne.lat + heightBuffer, ne.lng + widthBuffer));\r\n\t},\r\n\r\n\t// @method getCenter(): LatLng\r\n\t// Returns the center point of the bounds.\r\n\tgetCenter: function () {\r\n\t\treturn new LatLng(\r\n\t\t        (this._southWest.lat + this._northEast.lat) / 2,\r\n\t\t        (this._southWest.lng + this._northEast.lng) / 2);\r\n\t},\r\n\r\n\t// @method getSouthWest(): LatLng\r\n\t// Returns the south-west point of the bounds.\r\n\tgetSouthWest: function () {\r\n\t\treturn this._southWest;\r\n\t},\r\n\r\n\t// @method getNorthEast(): LatLng\r\n\t// Returns the north-east point of the bounds.\r\n\tgetNorthEast: function () {\r\n\t\treturn this._northEast;\r\n\t},\r\n\r\n\t// @method getNorthWest(): LatLng\r\n\t// Returns the north-west point of the bounds.\r\n\tgetNorthWest: function () {\r\n\t\treturn new LatLng(this.getNorth(), this.getWest());\r\n\t},\r\n\r\n\t// @method getSouthEast(): LatLng\r\n\t// Returns the south-east point of the bounds.\r\n\tgetSouthEast: function () {\r\n\t\treturn new LatLng(this.getSouth(), this.getEast());\r\n\t},\r\n\r\n\t// @method getWest(): Number\r\n\t// Returns the west longitude of the bounds\r\n\tgetWest: function () {\r\n\t\treturn this._southWest.lng;\r\n\t},\r\n\r\n\t// @method getSouth(): Number\r\n\t// Returns the south latitude of the bounds\r\n\tgetSouth: function () {\r\n\t\treturn this._southWest.lat;\r\n\t},\r\n\r\n\t// @method getEast(): Number\r\n\t// Returns the east longitude of the bounds\r\n\tgetEast: function () {\r\n\t\treturn this._northEast.lng;\r\n\t},\r\n\r\n\t// @method getNorth(): Number\r\n\t// Returns the north latitude of the bounds\r\n\tgetNorth: function () {\r\n\t\treturn this._northEast.lat;\r\n\t},\r\n\r\n\t// @method contains(otherBounds: LatLngBounds): Boolean\r\n\t// Returns `true` if the rectangle contains the given one.\r\n\r\n\t// @alternative\r\n\t// @method contains (latlng: LatLng): Boolean\r\n\t// Returns `true` if the rectangle contains the given point.\r\n\tcontains: function (obj) { // (LatLngBounds) or (LatLng) -> Boolean\r\n\t\tif (typeof obj[0] === 'number' || obj instanceof LatLng || 'lat' in obj) {\r\n\t\t\tobj = toLatLng(obj);\r\n\t\t} else {\r\n\t\t\tobj = toLatLngBounds(obj);\r\n\t\t}\r\n\r\n\t\tvar sw = this._southWest,\r\n\t\t    ne = this._northEast,\r\n\t\t    sw2, ne2;\r\n\r\n\t\tif (obj instanceof LatLngBounds) {\r\n\t\t\tsw2 = obj.getSouthWest();\r\n\t\t\tne2 = obj.getNorthEast();\r\n\t\t} else {\r\n\t\t\tsw2 = ne2 = obj;\r\n\t\t}\r\n\r\n\t\treturn (sw2.lat >= sw.lat) && (ne2.lat <= ne.lat) &&\r\n\t\t       (sw2.lng >= sw.lng) && (ne2.lng <= ne.lng);\r\n\t},\r\n\r\n\t// @method intersects(otherBounds: LatLngBounds): Boolean\r\n\t// Returns `true` if the rectangle intersects the given bounds. Two bounds intersect if they have at least one point in common.\r\n\tintersects: function (bounds) {\r\n\t\tbounds = toLatLngBounds(bounds);\r\n\r\n\t\tvar sw = this._southWest,\r\n\t\t    ne = this._northEast,\r\n\t\t    sw2 = bounds.getSouthWest(),\r\n\t\t    ne2 = bounds.getNorthEast(),\r\n\r\n\t\t    latIntersects = (ne2.lat >= sw.lat) && (sw2.lat <= ne.lat),\r\n\t\t    lngIntersects = (ne2.lng >= sw.lng) && (sw2.lng <= ne.lng);\r\n\r\n\t\treturn latIntersects && lngIntersects;\r\n\t},\r\n\r\n\t// @method overlaps(otherBounds: LatLngBounds): Boolean\r\n\t// Returns `true` if the rectangle overlaps the given bounds. Two bounds overlap if their intersection is an area.\r\n\toverlaps: function (bounds) {\r\n\t\tbounds = toLatLngBounds(bounds);\r\n\r\n\t\tvar sw = this._southWest,\r\n\t\t    ne = this._northEast,\r\n\t\t    sw2 = bounds.getSouthWest(),\r\n\t\t    ne2 = bounds.getNorthEast(),\r\n\r\n\t\t    latOverlaps = (ne2.lat > sw.lat) && (sw2.lat < ne.lat),\r\n\t\t    lngOverlaps = (ne2.lng > sw.lng) && (sw2.lng < ne.lng);\r\n\r\n\t\treturn latOverlaps && lngOverlaps;\r\n\t},\r\n\r\n\t// @method toBBoxString(): String\r\n\t// Returns a string with bounding box coordinates in a 'southwest_lng,southwest_lat,northeast_lng,northeast_lat' format. Useful for sending requests to web services that return geo data.\r\n\ttoBBoxString: function () {\r\n\t\treturn [this.getWest(), this.getSouth(), this.getEast(), this.getNorth()].join(',');\r\n\t},\r\n\r\n\t// @method equals(otherBounds: LatLngBounds, maxMargin?: Number): Boolean\r\n\t// Returns `true` if the rectangle is equivalent (within a small margin of error) to the given bounds. The margin of error can be overridden by setting `maxMargin` to a small number.\r\n\tequals: function (bounds, maxMargin) {\r\n\t\tif (!bounds) { return false; }\r\n\r\n\t\tbounds = toLatLngBounds(bounds);\r\n\r\n\t\treturn this._southWest.equals(bounds.getSouthWest(), maxMargin) &&\r\n\t\t       this._northEast.equals(bounds.getNorthEast(), maxMargin);\r\n\t},\r\n\r\n\t// @method isValid(): Boolean\r\n\t// Returns `true` if the bounds are properly initialized.\r\n\tisValid: function () {\r\n\t\treturn !!(this._southWest && this._northEast);\r\n\t}\r\n};\r\n\r\n// TODO International date line?\r\n\r\n// @factory L.latLngBounds(corner1: LatLng, corner2: LatLng)\r\n// Creates a `LatLngBounds` object by defining two diagonally opposite corners of the rectangle.\r\n\r\n// @alternative\r\n// @factory L.latLngBounds(latlngs: LatLng[])\r\n// Creates a `LatLngBounds` object defined by the geographical points it contains. Very useful for zooming the map to fit a particular set of locations with [`fitBounds`](#map-fitbounds).\r\nexport function toLatLngBounds(a, b) {\r\n\tif (a instanceof LatLngBounds) {\r\n\t\treturn a;\r\n\t}\r\n\treturn new LatLngBounds(a, b);\r\n}\r\n", "import * as Util from '../core/Util';\r\nimport {Earth} from './crs/CRS.Earth';\r\nimport {toLatLngBounds} from './LatLngBounds';\r\n\r\n/* @class LatLng\r\n * @aka L.LatLng\r\n *\r\n * Represents a geographical point with a certain latitude and longitude.\r\n *\r\n * @example\r\n *\r\n * ```\r\n * var latlng = L.latLng(50.5, 30.5);\r\n * ```\r\n *\r\n * All Leaflet methods that accept LatLng objects also accept them in a simple Array form and simple object form (unless noted otherwise), so these lines are equivalent:\r\n *\r\n * ```\r\n * map.panTo([50, 30]);\r\n * map.panTo({lon: 30, lat: 50});\r\n * map.panTo({lat: 50, lng: 30});\r\n * map.panTo(L.latLng(50, 30));\r\n * ```\r\n *\r\n * Note that `LatLng` does not inherit from Leaflet's `Class` object,\r\n * which means new classes can't inherit from it, and new methods\r\n * can't be added to it with the `include` function.\r\n */\r\n\r\nexport function LatLng(lat, lng, alt) {\r\n\tif (isNaN(lat) || isNaN(lng)) {\r\n\t\tthrow new Error('Invalid LatLng object: (' + lat + ', ' + lng + ')');\r\n\t}\r\n\r\n\t// @property lat: Number\r\n\t// Latitude in degrees\r\n\tthis.lat = +lat;\r\n\r\n\t// @property lng: Number\r\n\t// Longitude in degrees\r\n\tthis.lng = +lng;\r\n\r\n\t// @property alt: Number\r\n\t// Altitude in meters (optional)\r\n\tif (alt !== undefined) {\r\n\t\tthis.alt = +alt;\r\n\t}\r\n}\r\n\r\nLatLng.prototype = {\r\n\t// @method equals(otherLatLng: LatLng, maxMargin?: Number): Boolean\r\n\t// Returns `true` if the given `LatLng` point is at the same position (within a small margin of error). The margin of error can be overridden by setting `maxMargin` to a small number.\r\n\tequals: function (obj, maxMargin) {\r\n\t\tif (!obj) { return false; }\r\n\r\n\t\tobj = toLatLng(obj);\r\n\r\n\t\tvar margin = Math.max(\r\n\t\t        Math.abs(this.lat - obj.lat),\r\n\t\t        Math.abs(this.lng - obj.lng));\r\n\r\n\t\treturn margin <= (maxMargin === undefined ? 1.0E-9 : maxMargin);\r\n\t},\r\n\r\n\t// @method toString(): String\r\n\t// Returns a string representation of the point (for debugging purposes).\r\n\ttoString: function (precision) {\r\n\t\treturn 'LatLng(' +\r\n\t\t        Util.formatNum(this.lat, precision) + ', ' +\r\n\t\t        Util.formatNum(this.lng, precision) + ')';\r\n\t},\r\n\r\n\t// @method distanceTo(otherLatLng: LatLng): Number\r\n\t// Returns the distance (in meters) to the given `LatLng` calculated using the [Spherical Law of Cosines](https://en.wikipedia.org/wiki/Spherical_law_of_cosines).\r\n\tdistanceTo: function (other) {\r\n\t\treturn Earth.distance(this, toLatLng(other));\r\n\t},\r\n\r\n\t// @method wrap(): LatLng\r\n\t// Returns a new `LatLng` object with the longitude wrapped so it's always between -180 and +180 degrees.\r\n\twrap: function () {\r\n\t\treturn Earth.wrapLatLng(this);\r\n\t},\r\n\r\n\t// @method toBounds(sizeInMeters: Number): LatLngBounds\r\n\t// Returns a new `LatLngBounds` object in which each boundary is `sizeInMeters/2` meters apart from the `LatLng`.\r\n\ttoBounds: function (sizeInMeters) {\r\n\t\tvar latAccuracy = 180 * sizeInMeters / 40075017,\r\n\t\t    lngAccuracy = latAccuracy / Math.cos((Math.PI / 180) * this.lat);\r\n\r\n\t\treturn toLatLngBounds(\r\n\t\t        [this.lat - latAccuracy, this.lng - lngAccuracy],\r\n\t\t        [this.lat + latAccuracy, this.lng + lngAccuracy]);\r\n\t},\r\n\r\n\tclone: function () {\r\n\t\treturn new LatLng(this.lat, this.lng, this.alt);\r\n\t}\r\n};\r\n\r\n\r\n\r\n// @factory L.latLng(latitude: Number, longitude: Number, altitude?: Number): LatLng\r\n// Creates an object representing a geographical point with the given latitude and longitude (and optionally altitude).\r\n\r\n// @alternative\r\n// @factory L.latLng(coords: Array): LatLng\r\n// Expects an array of the form `[Number, Number]` or `[Number, Number, Number]` instead.\r\n\r\n// @alternative\r\n// @factory L.latLng(coords: Object): LatLng\r\n// Expects an plain object of the form `{lat: Number, lng: Number}` or `{lat: Number, lng: Number, alt: Number}` instead.\r\n\r\nexport function toLatLng(a, b, c) {\r\n\tif (a instanceof LatLng) {\r\n\t\treturn a;\r\n\t}\r\n\tif (Util.isArray(a) && typeof a[0] !== 'object') {\r\n\t\tif (a.length === 3) {\r\n\t\t\treturn new LatLng(a[0], a[1], a[2]);\r\n\t\t}\r\n\t\tif (a.length === 2) {\r\n\t\t\treturn new LatLng(a[0], a[1]);\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\tif (a === undefined || a === null) {\r\n\t\treturn a;\r\n\t}\r\n\tif (typeof a === 'object' && 'lat' in a) {\r\n\t\treturn new LatLng(a.lat, 'lng' in a ? a.lng : a.lon, a.alt);\r\n\t}\r\n\tif (b === undefined) {\r\n\t\treturn null;\r\n\t}\r\n\treturn new LatLng(a, b, c);\r\n}\r\n", "\r\nimport {Bounds} from '../../geometry/Bounds';\r\nimport {LatLng} from '../LatLng';\r\nimport {LatLngBounds} from '../LatLngBounds';\r\nimport * as Util from '../../core/Util';\r\n\r\n/*\r\n * @namespace CRS\r\n * @crs L.CRS.Base\r\n * Object that defines coordinate reference systems for projecting\r\n * geographical points into pixel (screen) coordinates and back (and to\r\n * coordinates in other units for [WMS](https://en.wikipedia.org/wiki/Web_Map_Service) services). See\r\n * [spatial reference system](https://en.wikipedia.org/wiki/Spatial_reference_system).\r\n *\r\n * Leaflet defines the most usual CRSs by default. If you want to use a\r\n * CRS not defined by default, take a look at the\r\n * [Proj4Leaflet](https://github.com/kartena/Proj4Leaflet) plugin.\r\n *\r\n * Note that the CRS instances do not inherit from Leaflet's `Class` object,\r\n * and can't be instantiated. Also, new classes can't inherit from them,\r\n * and methods can't be added to them with the `include` function.\r\n */\r\n\r\nexport var CRS = {\r\n\t// @method latLngToPoint(latlng: LatLng, zoom: Number): Point\r\n\t// Projects geographical coordinates into pixel coordinates for a given zoom.\r\n\tlatLngToPoint: function (latlng, zoom) {\r\n\t\tvar projectedPoint = this.projection.project(latlng),\r\n\t\t    scale = this.scale(zoom);\r\n\r\n\t\treturn this.transformation._transform(projectedPoint, scale);\r\n\t},\r\n\r\n\t// @method pointToLatLng(point: Point, zoom: Number): LatLng\r\n\t// The inverse of `latLngToPoint`. Projects pixel coordinates on a given\r\n\t// zoom into geographical coordinates.\r\n\tpointToLatLng: function (point, zoom) {\r\n\t\tvar scale = this.scale(zoom),\r\n\t\t    untransformedPoint = this.transformation.untransform(point, scale);\r\n\r\n\t\treturn this.projection.unproject(untransformedPoint);\r\n\t},\r\n\r\n\t// @method project(latlng: LatLng): Point\r\n\t// Projects geographical coordinates into coordinates in units accepted for\r\n\t// this CRS (e.g. meters for EPSG:3857, for passing it to WMS services).\r\n\tproject: function (latlng) {\r\n\t\treturn this.projection.project(latlng);\r\n\t},\r\n\r\n\t// @method unproject(point: Point): LatLng\r\n\t// Given a projected coordinate returns the corresponding LatLng.\r\n\t// The inverse of `project`.\r\n\tunproject: function (point) {\r\n\t\treturn this.projection.unproject(point);\r\n\t},\r\n\r\n\t// @method scale(zoom: Number): Number\r\n\t// Returns the scale used when transforming projected coordinates into\r\n\t// pixel coordinates for a particular zoom. For example, it returns\r\n\t// `256 * 2^zoom` for Mercator-based CRS.\r\n\tscale: function (zoom) {\r\n\t\treturn 256 * Math.pow(2, zoom);\r\n\t},\r\n\r\n\t// @method zoom(scale: Number): Number\r\n\t// Inverse of `scale()`, returns the zoom level corresponding to a scale\r\n\t// factor of `scale`.\r\n\tzoom: function (scale) {\r\n\t\treturn Math.log(scale / 256) / Math.LN2;\r\n\t},\r\n\r\n\t// @method getProjectedBounds(zoom: Number): Bounds\r\n\t// Returns the projection's bounds scaled and transformed for the provided `zoom`.\r\n\tgetProjectedBounds: function (zoom) {\r\n\t\tif (this.infinite) { return null; }\r\n\r\n\t\tvar b = this.projection.bounds,\r\n\t\t    s = this.scale(zoom),\r\n\t\t    min = this.transformation.transform(b.min, s),\r\n\t\t    max = this.transformation.transform(b.max, s);\r\n\r\n\t\treturn new Bounds(min, max);\r\n\t},\r\n\r\n\t// @method distance(latlng1: LatLng, latlng2: LatLng): Number\r\n\t// Returns the distance between two geographical coordinates.\r\n\r\n\t// @property code: String\r\n\t// Standard code name of the CRS passed into WMS services (e.g. `'EPSG:3857'`)\r\n\t//\r\n\t// @property wrapLng: Number[]\r\n\t// An array of two numbers defining whether the longitude (horizontal) coordinate\r\n\t// axis wraps around a given range and how. Defaults to `[-180, 180]` in most\r\n\t// geographical CRSs. If `undefined`, the longitude axis does not wrap around.\r\n\t//\r\n\t// @property wrapLat: Number[]\r\n\t// Like `wrapLng`, but for the latitude (vertical) axis.\r\n\r\n\t// wrapLng: [min, max],\r\n\t// wrapLat: [min, max],\r\n\r\n\t// @property infinite: Boolean\r\n\t// If true, the coordinate space will be unbounded (infinite in both axes)\r\n\tinfinite: false,\r\n\r\n\t// @method wrapLatLng(latlng: LatLng): LatLng\r\n\t// Returns a `LatLng` where lat and lng has been wrapped according to the\r\n\t// CRS's `wrapLat` and `wrapLng` properties, if they are outside the CRS's bounds.\r\n\twrapLatLng: function (latlng) {\r\n\t\tvar lng = this.wrapLng ? Util.wrapNum(latlng.lng, this.wrapLng, true) : latlng.lng,\r\n\t\t    lat = this.wrapLat ? Util.wrapNum(latlng.lat, this.wrapLat, true) : latlng.lat,\r\n\t\t    alt = latlng.alt;\r\n\r\n\t\treturn new LatLng(lat, lng, alt);\r\n\t},\r\n\r\n\t// @method wrapLatLngBounds(bounds: LatLngBounds): LatLngBounds\r\n\t// Returns a `LatLngBounds` with the same size as the given one, ensuring\r\n\t// that its center is within the CRS's bounds.\r\n\t// Only accepts actual `L.LatLngBounds` instances, not arrays.\r\n\twrapLatLngBounds: function (bounds) {\r\n\t\tvar center = bounds.getCenter(),\r\n\t\t    newCenter = this.wrapLatLng(center),\r\n\t\t    latShift = center.lat - newCenter.lat,\r\n\t\t    lngShift = center.lng - newCenter.lng;\r\n\r\n\t\tif (latShift === 0 && lngShift === 0) {\r\n\t\t\treturn bounds;\r\n\t\t}\r\n\r\n\t\tvar sw = bounds.getSouthWest(),\r\n\t\t    ne = bounds.getNorthEast(),\r\n\t\t    newSw = new LatLng(sw.lat - latShift, sw.lng - lngShift),\r\n\t\t    newNe = new LatLng(ne.lat - latShift, ne.lng - lngShift);\r\n\r\n\t\treturn new LatLngBounds(newSw, newNe);\r\n\t}\r\n};\r\n", "import {CRS} from './CRS';\nimport * as Util from '../../core/Util';\n\n/*\n * @namespace CRS\n * @crs L.CRS.Earth\n *\n * Serves as the base for CRS that are global such that they cover the earth.\n * Can only be used as the base for other CRS and cannot be used directly,\n * since it does not have a `code`, `projection` or `transformation`. `distance()` returns\n * meters.\n */\n\nexport var Earth = Util.extend({}, CRS, {\n\twrapLng: [-180, 180],\n\n\t// Mean Earth Radius, as recommended for use by\n\t// the International Union of Geodesy and Geophysics,\n\t// see https://rosettacode.org/wiki/Haversine_formula\n\tR: 6371000,\n\n\t// distance between two geographical points using spherical law of cosines approximation\n\tdistance: function (latlng1, latlng2) {\n\t\tvar rad = Math.PI / 180,\n\t\t    lat1 = latlng1.lat * rad,\n\t\t    lat2 = latlng2.lat * rad,\n\t\t    sinDLat = Math.sin((latlng2.lat - latlng1.lat) * rad / 2),\n\t\t    sinDLon = Math.sin((latlng2.lng - latlng1.lng) * rad / 2),\n\t\t    a = sinDLat * sinDLat + Math.cos(lat1) * Math.cos(lat2) * sinDLon * sinDLon,\n\t\t    c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n\t\treturn this.R * c;\n\t}\n});\n", "import {LatLng} from '../LatLng';\r\nimport {Bounds} from '../../geometry/Bounds';\r\nimport {Point} from '../../geometry/Point';\r\n\r\n/*\r\n * @namespace Projection\r\n * @projection L.Projection.SphericalMercator\r\n *\r\n * Spherical Mercator projection — the most common projection for online maps,\r\n * used by almost all free and commercial tile providers. Assumes that Earth is\r\n * a sphere. Used by the `EPSG:3857` CRS.\r\n */\r\n\r\nvar earthRadius = 6378137;\r\n\r\nexport var SphericalMercator = {\r\n\r\n\tR: earthRadius,\r\n\tMAX_LATITUDE: 85.0511287798,\r\n\r\n\tproject: function (latlng) {\r\n\t\tvar d = Math.PI / 180,\r\n\t\t    max = this.MAX_LATITUDE,\r\n\t\t    lat = Math.max(Math.min(max, latlng.lat), -max),\r\n\t\t    sin = Math.sin(lat * d);\r\n\r\n\t\treturn new Point(\r\n\t\t\tthis.R * latlng.lng * d,\r\n\t\t\tthis.R * Math.log((1 + sin) / (1 - sin)) / 2);\r\n\t},\r\n\r\n\tunproject: function (point) {\r\n\t\tvar d = 180 / Math.PI;\r\n\r\n\t\treturn new LatLng(\r\n\t\t\t(2 * Math.atan(Math.exp(point.y / this.R)) - (Math.PI / 2)) * d,\r\n\t\t\tpoint.x * d / this.R);\r\n\t},\r\n\r\n\tbounds: (function () {\r\n\t\tvar d = earthRadius * Math.PI;\r\n\t\treturn new Bounds([-d, -d], [d, d]);\r\n\t})()\r\n};\r\n", "import {Point} from './Point';\r\nimport * as Util from '../core/Util';\r\n\r\n/*\r\n * @class Transformation\r\n * @aka L.Transformation\r\n *\r\n * Represents an affine transformation: a set of coefficients `a`, `b`, `c`, `d`\r\n * for transforming a point of a form `(x, y)` into `(a*x + b, c*y + d)` and doing\r\n * the reverse. Used by Leaflet in its projections code.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * var transformation = L.transformation(2, 5, -1, 10),\r\n * \tp = L.point(1, 2),\r\n * \tp2 = transformation.transform(p), //  L.point(7, 8)\r\n * \tp3 = transformation.untransform(p2); //  L.point(1, 2)\r\n * ```\r\n */\r\n\r\n\r\n// factory new L.Transformation(a: Number, b: Number, c: Number, d: Number)\r\n// Creates a `Transformation` object with the given coefficients.\r\nexport function Transformation(a, b, c, d) {\r\n\tif (Util.isArray(a)) {\r\n\t\t// use array properties\r\n\t\tthis._a = a[0];\r\n\t\tthis._b = a[1];\r\n\t\tthis._c = a[2];\r\n\t\tthis._d = a[3];\r\n\t\treturn;\r\n\t}\r\n\tthis._a = a;\r\n\tthis._b = b;\r\n\tthis._c = c;\r\n\tthis._d = d;\r\n}\r\n\r\nTransformation.prototype = {\r\n\t// @method transform(point: Point, scale?: Number): Point\r\n\t// Returns a transformed point, optionally multiplied by the given scale.\r\n\t// Only accepts actual `L.Point` instances, not arrays.\r\n\ttransform: function (point, scale) { // (Point, Number) -> Point\r\n\t\treturn this._transform(point.clone(), scale);\r\n\t},\r\n\r\n\t// destructive transform (faster)\r\n\t_transform: function (point, scale) {\r\n\t\tscale = scale || 1;\r\n\t\tpoint.x = scale * (this._a * point.x + this._b);\r\n\t\tpoint.y = scale * (this._c * point.y + this._d);\r\n\t\treturn point;\r\n\t},\r\n\r\n\t// @method untransform(point: Point, scale?: Number): Point\r\n\t// Returns the reverse transformation of the given point, optionally divided\r\n\t// by the given scale. Only accepts actual `L.Point` instances, not arrays.\r\n\tuntransform: function (point, scale) {\r\n\t\tscale = scale || 1;\r\n\t\treturn new Point(\r\n\t\t        (point.x / scale - this._b) / this._a,\r\n\t\t        (point.y / scale - this._d) / this._c);\r\n\t}\r\n};\r\n\r\n// factory L.transformation(a: Number, b: Number, c: Number, d: Number)\r\n\r\n// @factory L.transformation(a: Number, b: Number, c: Number, d: Number)\r\n// Instantiates a Transformation object with the given coefficients.\r\n\r\n// @alternative\r\n// @factory L.transformation(coefficients: Array): Transformation\r\n// Expects an coefficients array of the form\r\n// `[a: Number, b: Number, c: Number, d: Number]`.\r\n\r\nexport function toTransformation(a, b, c, d) {\r\n\treturn new Transformation(a, b, c, d);\r\n}\r\n", "import {Earth} from './CRS.Earth';\r\nimport {SphericalMercator} from '../projection/Projection.SphericalMercator';\r\nimport {toTransformation} from '../../geometry/Transformation';\r\nimport * as Util from '../../core/Util';\r\n\r\n/*\r\n * @namespace CRS\r\n * @crs L.CRS.EPSG3857\r\n *\r\n * The most common CRS for online maps, used by almost all free and commercial\r\n * tile providers. Uses Spherical Mercator projection. Set in by default in\r\n * Map's `crs` option.\r\n */\r\n\r\nexport var EPSG3857 = Util.extend({}, Earth, {\r\n\tcode: 'EPSG:3857',\r\n\tprojection: SphericalMercator,\r\n\r\n\ttransformation: (function () {\r\n\t\tvar scale = 0.5 / (Math.PI * SphericalMercator.R);\r\n\t\treturn toTransformation(scale, 0.5, -scale, 0.5);\r\n\t}())\r\n});\r\n\r\nexport var EPSG900913 = Util.extend({}, EPSG3857, {\r\n\tcode: 'EPSG:900913'\r\n});\r\n", "import Browser from '../../core/Browser';\n\n// @namespace SVG; @section\n// There are several static functions which can be called without instantiating L.SVG:\n\n// @function create(name: String): SVGElement\n// Returns a instance of [SVGElement](https://developer.mozilla.org/docs/Web/API/SVGElement),\n// corresponding to the class name passed. For example, using 'line' will return\n// an instance of [SVGLineElement](https://developer.mozilla.org/docs/Web/API/SVGLineElement).\nexport function svgCreate(name) {\n\treturn document.createElementNS('http://www.w3.org/2000/svg', name);\n}\n\n// @function pointsToPath(rings: Point[], closed: Boolean): String\n// Generates a SVG path string for multiple rings, with each ring turning\n// into \"M..L..L..\" instructions\nexport function pointsToPath(rings, closed) {\n\tvar str = '',\n\ti, j, len, len2, points, p;\n\n\tfor (i = 0, len = rings.length; i < len; i++) {\n\t\tpoints = rings[i];\n\n\t\tfor (j = 0, len2 = points.length; j < len2; j++) {\n\t\t\tp = points[j];\n\t\t\tstr += (j ? 'L' : 'M') + p.x + ' ' + p.y;\n\t\t}\n\n\t\t// closes the ring for polygons; \"x\" is VML syntax\n\t\tstr += closed ? (Browser.svg ? 'z' : 'x') : '';\n\t}\n\n\t// SVG complains about empty path strings\n\treturn str || 'M0 0';\n}\n\n\n\n\n", "import * as Util from './Util';\r\nimport {svgCreate} from '../layer/vector/SVG.Util';\r\n\r\n/*\r\n * @namespace Browser\r\n * @aka L.Browser\r\n *\r\n * A namespace with static properties for browser/feature detection used by Leaflet internally.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * if (L.Browser.ielt9) {\r\n *   alert('Upgrade your browser, dude!');\r\n * }\r\n * ```\r\n */\r\n\r\nvar style = document.documentElement.style;\r\n\r\n// @property ie: Boolean; `true` for all Internet Explorer versions (not Edge).\r\nvar ie = 'ActiveXObject' in window;\r\n\r\n// @property ielt9: Boolean; `true` for Internet Explorer versions less than 9.\r\nvar ielt9 = ie && !document.addEventListener;\r\n\r\n// @property edge: Boolean; `true` for the Edge web browser.\r\nvar edge = 'msLaunchUri' in navigator && !('documentMode' in document);\r\n\r\n// @property webkit: Boolean;\r\n// `true` for webkit-based browsers like Chrome and Safari (including mobile versions).\r\nvar webkit = userAgentContains('webkit');\r\n\r\n// @property android: Boolean\r\n// **Deprecated.** `true` for any browser running on an Android platform.\r\nvar android = userAgentContains('android');\r\n\r\n// @property android23: Boolean; **Deprecated.** `true` for browsers running on Android 2 or Android 3.\r\nvar android23 = userAgentContains('android 2') || userAgentContains('android 3');\r\n\r\n/* See https://stackoverflow.com/a/17961266 for details on detecting stock Android */\r\nvar webkitVer = parseInt(/WebKit\\/([0-9]+)|$/.exec(navigator.userAgent)[1], 10); // also matches AppleWebKit\r\n// @property androidStock: Boolean; **Deprecated.** `true` for the Android stock browser (i.e. not Chrome)\r\nvar androidStock = android && userAgentContains('Google') && webkitVer < 537 && !('AudioNode' in window);\r\n\r\n// @property opera: Boolean; `true` for the Opera browser\r\nvar opera = !!window.opera;\r\n\r\n// @property chrome: Boolean; `true` for the Chrome browser.\r\nvar chrome = !edge && userAgentContains('chrome');\r\n\r\n// @property gecko: Boolean; `true` for gecko-based browsers like Firefox.\r\nvar gecko = userAgentContains('gecko') && !webkit && !opera && !ie;\r\n\r\n// @property safari: Boolean; `true` for the Safari browser.\r\nvar safari = !chrome && userAgentContains('safari');\r\n\r\nvar phantom = userAgentContains('phantom');\r\n\r\n// @property opera12: Boolean\r\n// `true` for the Opera browser supporting CSS transforms (version 12 or later).\r\nvar opera12 = 'OTransition' in style;\r\n\r\n// @property win: Boolean; `true` when the browser is running in a Windows platform\r\nvar win = navigator.platform.indexOf('Win') === 0;\r\n\r\n// @property ie3d: Boolean; `true` for all Internet Explorer versions supporting CSS transforms.\r\nvar ie3d = ie && ('transition' in style);\r\n\r\n// @property webkit3d: Boolean; `true` for webkit-based browsers supporting CSS transforms.\r\nvar webkit3d = ('WebKitCSSMatrix' in window) && ('m11' in new window.WebKitCSSMatrix()) && !android23;\r\n\r\n// @property gecko3d: Boolean; `true` for gecko-based browsers supporting CSS transforms.\r\nvar gecko3d = 'MozPerspective' in style;\r\n\r\n// @property any3d: Boolean\r\n// `true` for all browsers supporting CSS transforms.\r\nvar any3d = !window.L_DISABLE_3D && (ie3d || webkit3d || gecko3d) && !opera12 && !phantom;\r\n\r\n// @property mobile: Boolean; `true` for all browsers running in a mobile device.\r\nvar mobile = typeof orientation !== 'undefined' || userAgentContains('mobile');\r\n\r\n// @property mobileWebkit: Boolean; `true` for all webkit-based browsers in a mobile device.\r\nvar mobileWebkit = mobile && webkit;\r\n\r\n// @property mobileWebkit3d: Boolean\r\n// `true` for all webkit-based browsers in a mobile device supporting CSS transforms.\r\nvar mobileWebkit3d = mobile && webkit3d;\r\n\r\n// @property msPointer: Boolean\r\n// `true` for browsers implementing the Microsoft touch events model (notably IE10).\r\nvar msPointer = !window.PointerEvent && window.MSPointerEvent;\r\n\r\n// @property pointer: Boolean\r\n// `true` for all browsers supporting [pointer events](https://msdn.microsoft.com/en-us/library/dn433244%28v=vs.85%29.aspx).\r\nvar pointer = !!(window.PointerEvent || msPointer);\r\n\r\n// @property touchNative: Boolean\r\n// `true` for all browsers supporting [touch events](https://developer.mozilla.org/docs/Web/API/Touch_events).\r\n// **This does not necessarily mean** that the browser is running in a computer with\r\n// a touchscreen, it only means that the browser is capable of understanding\r\n// touch events.\r\nvar touchNative = 'ontouchstart' in window || !!window.TouchEvent;\r\n\r\n// @property touch: Boolean\r\n// `true` for all browsers supporting either [touch](#browser-touch) or [pointer](#browser-pointer) events.\r\n// Note: pointer events will be preferred (if available), and processed for all `touch*` listeners.\r\nvar touch = !window.L_NO_TOUCH && (touchNative || pointer);\r\n\r\n// @property mobileOpera: Boolean; `true` for the Opera browser in a mobile device.\r\nvar mobileOpera = mobile && opera;\r\n\r\n// @property mobileGecko: Boolean\r\n// `true` for gecko-based browsers running in a mobile device.\r\nvar mobileGecko = mobile && gecko;\r\n\r\n// @property retina: Boolean\r\n// `true` for browsers on a high-resolution \"retina\" screen or on any screen when browser's display zoom is more than 100%.\r\nvar retina = (window.devicePixelRatio || (window.screen.deviceXDPI / window.screen.logicalXDPI)) > 1;\r\n\r\n// @property passiveEvents: Boolean\r\n// `true` for browsers that support passive events.\r\nvar passiveEvents = (function () {\r\n\tvar supportsPassiveOption = false;\r\n\ttry {\r\n\t\tvar opts = Object.defineProperty({}, 'passive', {\r\n\t\t\tget: function () { // eslint-disable-line getter-return\r\n\t\t\t\tsupportsPassiveOption = true;\r\n\t\t\t}\r\n\t\t});\r\n\t\twindow.addEventListener('testPassiveEventSupport', Util.falseFn, opts);\r\n\t\twindow.removeEventListener('testPassiveEventSupport', Util.falseFn, opts);\r\n\t} catch (e) {\r\n\t\t// Errors can safely be ignored since this is only a browser support test.\r\n\t}\r\n\treturn supportsPassiveOption;\r\n}());\r\n\r\n// @property canvas: Boolean\r\n// `true` when the browser supports [`<canvas>`](https://developer.mozilla.org/docs/Web/API/Canvas_API).\r\nvar canvas = (function () {\r\n\treturn !!document.createElement('canvas').getContext;\r\n}());\r\n\r\n// @property svg: Boolean\r\n// `true` when the browser supports [SVG](https://developer.mozilla.org/docs/Web/SVG).\r\nvar svg = !!(document.createElementNS && svgCreate('svg').createSVGRect);\r\n\r\nvar inlineSvg = !!svg && (function () {\r\n\tvar div = document.createElement('div');\r\n\tdiv.innerHTML = '<svg/>';\r\n\treturn (div.firstChild && div.firstChild.namespaceURI) === 'http://www.w3.org/2000/svg';\r\n})();\r\n\r\n// @property vml: Boolean\r\n// `true` if the browser supports [VML](https://en.wikipedia.org/wiki/Vector_Markup_Language).\r\nvar vml = !svg && (function () {\r\n\ttry {\r\n\t\tvar div = document.createElement('div');\r\n\t\tdiv.innerHTML = '<v:shape adj=\"1\"/>';\r\n\r\n\t\tvar shape = div.firstChild;\r\n\t\tshape.style.behavior = 'url(#default#VML)';\r\n\r\n\t\treturn shape && (typeof shape.adj === 'object');\r\n\r\n\t} catch (e) {\r\n\t\treturn false;\r\n\t}\r\n}());\r\n\r\n\r\n// @property mac: Boolean; `true` when the browser is running in a Mac platform\r\nvar mac = navigator.platform.indexOf('Mac') === 0;\r\n\r\n// @property mac: Boolean; `true` when the browser is running in a Linux platform\r\nvar linux = navigator.platform.indexOf('Linux') === 0;\r\n\r\nfunction userAgentContains(str) {\r\n\treturn navigator.userAgent.toLowerCase().indexOf(str) >= 0;\r\n}\r\n\r\n\r\nexport default {\r\n\tie: ie,\r\n\tielt9: ielt9,\r\n\tedge: edge,\r\n\twebkit: webkit,\r\n\tandroid: android,\r\n\tandroid23: android23,\r\n\tandroidStock: androidStock,\r\n\topera: opera,\r\n\tchrome: chrome,\r\n\tgecko: gecko,\r\n\tsafari: safari,\r\n\tphantom: phantom,\r\n\topera12: opera12,\r\n\twin: win,\r\n\tie3d: ie3d,\r\n\twebkit3d: webkit3d,\r\n\tgecko3d: gecko3d,\r\n\tany3d: any3d,\r\n\tmobile: mobile,\r\n\tmobileWebkit: mobileWebkit,\r\n\tmobileWebkit3d: mobileWebkit3d,\r\n\tmsPointer: msPointer,\r\n\tpointer: pointer,\r\n\ttouch: touch,\r\n\ttouchNative: touchNative,\r\n\tmobileOpera: mobileOpera,\r\n\tmobileGecko: mobileGecko,\r\n\tretina: retina,\r\n\tpassiveEvents: passiveEvents,\r\n\tcanvas: canvas,\r\n\tsvg: svg,\r\n\tvml: vml,\r\n\tinlineSvg: inlineSvg,\r\n\tmac: mac,\r\n\tlinux: linux\r\n};\r\n", "import * as DomEvent from './DomEvent';\nimport Browser from '../core/Browser';\nimport {falseFn} from '../core/Util';\n\n/*\n * Extends L.DomEvent to provide touch support for Internet Explorer and Windows-based devices.\n */\n\nvar POINTER_DOWN =   Browser.msPointer ? 'MSPointerDown'   : 'pointerdown';\nvar POINTER_MOVE =   Browser.msPointer ? 'MSPointerMove'   : 'pointermove';\nvar POINTER_UP =     Browser.msPointer ? 'MSPointerUp'     : 'pointerup';\nvar POINTER_CANCEL = Browser.msPointer ? 'MSPointerCancel' : 'pointercancel';\nvar pEvent = {\n\ttouchstart  : POINTER_DOWN,\n\ttouchmove   : POINTER_MOVE,\n\ttouchend    : POINTER_UP,\n\ttouchcancel : POINTER_CANCEL\n};\nvar handle = {\n\ttouchstart  : _onPointerStart,\n\ttouchmove   : _handlePointer,\n\ttouchend    : _handlePointer,\n\ttouchcancel : _handlePointer\n};\nvar _pointers = {};\nvar _pointerDocListener = false;\n\n// Provides a touch events wrapper for (ms)pointer events.\n// ref https://www.w3.org/TR/pointerevents/ https://www.w3.org/Bugs/Public/show_bug.cgi?id=22890\n\nexport function addPointerListener(obj, type, handler) {\n\tif (type === 'touchstart') {\n\t\t_addPointerDocListener();\n\t}\n\tif (!handle[type]) {\n\t\tconsole.warn('wrong event specified:', type);\n\t\treturn falseFn;\n\t}\n\thandler = handle[type].bind(this, handler);\n\tobj.addEventListener(pEvent[type], handler, false);\n\treturn handler;\n}\n\nexport function removePointerListener(obj, type, handler) {\n\tif (!pEvent[type]) {\n\t\tconsole.warn('wrong event specified:', type);\n\t\treturn;\n\t}\n\tobj.removeEventListener(pEvent[type], handler, false);\n}\n\nfunction _globalPointerDown(e) {\n\t_pointers[e.pointerId] = e;\n}\n\nfunction _globalPointerMove(e) {\n\tif (_pointers[e.pointerId]) {\n\t\t_pointers[e.pointerId] = e;\n\t}\n}\n\nfunction _globalPointerUp(e) {\n\tdelete _pointers[e.pointerId];\n}\n\nfunction _addPointerDocListener() {\n\t// need to keep track of what pointers and how many are active to provide e.touches emulation\n\tif (!_pointerDocListener) {\n\t\t// we listen document as any drags that end by moving the touch off the screen get fired there\n\t\tdocument.addEventListener(POINTER_DOWN, _globalPointerDown, true);\n\t\tdocument.addEventListener(POINTER_MOVE, _globalPointerMove, true);\n\t\tdocument.addEventListener(POINTER_UP, _globalPointerUp, true);\n\t\tdocument.addEventListener(POINTER_CANCEL, _globalPointerUp, true);\n\n\t\t_pointerDocListener = true;\n\t}\n}\n\nfunction _handlePointer(handler, e) {\n\tif (e.pointerType === (e.MSPOINTER_TYPE_MOUSE || 'mouse')) { return; }\n\n\te.touches = [];\n\tfor (var i in _pointers) {\n\t\te.touches.push(_pointers[i]);\n\t}\n\te.changedTouches = [e];\n\n\thandler(e);\n}\n\nfunction _onPointerStart(handler, e) {\n\t// IE10 specific: MsTouch needs preventDefault. See #2000\n\tif (e.MSPOINTER_TYPE_TOUCH && e.pointerType === e.MSPOINTER_TYPE_TOUCH) {\n\t\tDomEvent.preventDefault(e);\n\t}\n\t_handlePointer(handler, e);\n}\n", "import * as DomEvent from './DomEvent';\r\n\r\n/*\r\n * Extends the event handling code with double tap support for mobile browsers.\r\n *\r\n * Note: currently most browsers fire native dblclick, with only a few exceptions\r\n * (see https://github.com/Leaflet/Leaflet/issues/7012#issuecomment-595087386)\r\n */\r\n\r\nfunction makeDblclick(event) {\r\n\t// in modern browsers `type` cannot be just overridden:\r\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Getter_only\r\n\tvar newEvent = {},\r\n\t    prop, i;\r\n\tfor (i in event) {\r\n\t\tprop = event[i];\r\n\t\tnewEvent[i] = prop && prop.bind ? prop.bind(event) : prop;\r\n\t}\r\n\tevent = newEvent;\r\n\tnewEvent.type = 'dblclick';\r\n\tnewEvent.detail = 2;\r\n\tnewEvent.isTrusted = false;\r\n\tnewEvent._simulated = true; // for debug purposes\r\n\treturn newEvent;\r\n}\r\n\r\nvar delay = 200;\r\nexport function addDoubleTapListener(obj, handler) {\r\n\t// Most browsers handle double tap natively\r\n\tobj.addEventListener('dblclick', handler);\r\n\r\n\t// On some platforms the browser doesn't fire native dblclicks for touch events.\r\n\t// It seems that in all such cases `detail` property of `click` event is always `1`.\r\n\t// So here we rely on that fact to avoid excessive 'dblclick' simulation when not needed.\r\n\tvar last = 0,\r\n\t    detail;\r\n\tfunction simDblclick(e) {\r\n\t\tif (e.detail !== 1) {\r\n\t\t\tdetail = e.detail; // keep in sync to avoid false dblclick in some cases\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (e.pointerType === 'mouse' ||\r\n\t\t\t(e.sourceCapabilities && !e.sourceCapabilities.firesTouchEvents)) {\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// When clicking on an <input>, the browser generates a click on its\r\n\t\t// <label> (and vice versa) triggering two clicks in quick succession.\r\n\t\t// This ignores clicks on elements which are a label with a 'for'\r\n\t\t// attribute (or children of such a label), but not children of\r\n\t\t// a <input>.\r\n\t\tvar path = DomEvent.getPropagationPath(e);\r\n\t\tif (path.some(function (el) {\r\n\t\t\treturn el instanceof HTMLLabelElement && el.attributes.for;\r\n\t\t}) &&\r\n\t\t\t!path.some(function (el) {\r\n\t\t\t\treturn (\r\n\t\t\t\t\tel instanceof HTMLInputElement ||\r\n\t\t\t\t\tel instanceof HTMLSelectElement\r\n\t\t\t\t);\r\n\t\t\t})\r\n\t\t) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar now = Date.now();\r\n\t\tif (now - last <= delay) {\r\n\t\t\tdetail++;\r\n\t\t\tif (detail === 2) {\r\n\t\t\t\thandler(makeDblclick(e));\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tdetail = 1;\r\n\t\t}\r\n\t\tlast = now;\r\n\t}\r\n\r\n\tobj.addEventListener('click', simDblclick);\r\n\r\n\treturn {\r\n\t\tdblclick: handler,\r\n\t\tsimDblclick: simDblclick\r\n\t};\r\n}\r\n\r\nexport function removeDoubleTapListener(obj, handlers) {\r\n\tobj.removeEventListener('dblclick', handlers.dblclick);\r\n\tobj.removeEventListener('click', handlers.simDblclick);\r\n}\r\n", "import * as DomEvent from './DomEvent';\r\nimport * as Util from '../core/Util';\r\nimport {Point} from '../geometry/Point';\r\nimport Browser from '../core/Browser';\r\n\r\n/*\r\n * @namespace DomUtil\r\n *\r\n * Utility functions to work with the [DOM](https://developer.mozilla.org/docs/Web/API/Document_Object_Model)\r\n * tree, used by Leaflet internally.\r\n *\r\n * Most functions expecting or returning a `HTMLElement` also work for\r\n * SVG elements. The only difference is that classes refer to CSS classes\r\n * in HTML and SVG classes in SVG.\r\n */\r\n\r\n\r\n// @property TRANSFORM: String\r\n// Vendor-prefixed transform style name (e.g. `'webkitTransform'` for WebKit).\r\nexport var TRANSFORM = testProp(\r\n\t['transform', 'webkitTransform', 'OTransform', 'MozTransform', 'msTransform']);\r\n\r\n// webkitTransition comes first because some browser versions that drop vendor prefix don't do\r\n// the same for the transitionend event, in particular the Android 4.1 stock browser\r\n\r\n// @property TRANSITION: String\r\n// Vendor-prefixed transition style name.\r\nexport var TRANSITION = testProp(\r\n\t['webkitTransition', 'transition', 'OTransition', 'MozTransition', 'msTransition']);\r\n\r\n// @property TRANSITION_END: String\r\n// Vendor-prefixed transitionend event name.\r\nexport var TRANSITION_END =\r\n\tTRANSITION === 'webkitTransition' || TRANSITION === 'OTransition' ? TRANSITION + 'End' : 'transitionend';\r\n\r\n\r\n// @function get(id: String|HTMLElement): HTMLElement\r\n// Returns an element given its DOM id, or returns the element itself\r\n// if it was passed directly.\r\nexport function get(id) {\r\n\treturn typeof id === 'string' ? document.getElementById(id) : id;\r\n}\r\n\r\n// @function getStyle(el: HTMLElement, styleAttrib: String): String\r\n// Returns the value for a certain style attribute on an element,\r\n// including computed values or values set through CSS.\r\nexport function getStyle(el, style) {\r\n\tvar value = el.style[style] || (el.currentStyle && el.currentStyle[style]);\r\n\r\n\tif ((!value || value === 'auto') && document.defaultView) {\r\n\t\tvar css = document.defaultView.getComputedStyle(el, null);\r\n\t\tvalue = css ? css[style] : null;\r\n\t}\r\n\treturn value === 'auto' ? null : value;\r\n}\r\n\r\n// @function create(tagName: String, className?: String, container?: HTMLElement): HTMLElement\r\n// Creates an HTML element with `tagName`, sets its class to `className`, and optionally appends it to `container` element.\r\nexport function create(tagName, className, container) {\r\n\tvar el = document.createElement(tagName);\r\n\tel.className = className || '';\r\n\r\n\tif (container) {\r\n\t\tcontainer.appendChild(el);\r\n\t}\r\n\treturn el;\r\n}\r\n\r\n// @function remove(el: HTMLElement)\r\n// Removes `el` from its parent element\r\nexport function remove(el) {\r\n\tvar parent = el.parentNode;\r\n\tif (parent) {\r\n\t\tparent.removeChild(el);\r\n\t}\r\n}\r\n\r\n// @function empty(el: HTMLElement)\r\n// Removes all of `el`'s children elements from `el`\r\nexport function empty(el) {\r\n\twhile (el.firstChild) {\r\n\t\tel.removeChild(el.firstChild);\r\n\t}\r\n}\r\n\r\n// @function toFront(el: HTMLElement)\r\n// Makes `el` the last child of its parent, so it renders in front of the other children.\r\nexport function toFront(el) {\r\n\tvar parent = el.parentNode;\r\n\tif (parent && parent.lastChild !== el) {\r\n\t\tparent.appendChild(el);\r\n\t}\r\n}\r\n\r\n// @function toBack(el: HTMLElement)\r\n// Makes `el` the first child of its parent, so it renders behind the other children.\r\nexport function toBack(el) {\r\n\tvar parent = el.parentNode;\r\n\tif (parent && parent.firstChild !== el) {\r\n\t\tparent.insertBefore(el, parent.firstChild);\r\n\t}\r\n}\r\n\r\n// @function hasClass(el: HTMLElement, name: String): Boolean\r\n// Returns `true` if the element's class attribute contains `name`.\r\nexport function hasClass(el, name) {\r\n\tif (el.classList !== undefined) {\r\n\t\treturn el.classList.contains(name);\r\n\t}\r\n\tvar className = getClass(el);\r\n\treturn className.length > 0 && new RegExp('(^|\\\\s)' + name + '(\\\\s|$)').test(className);\r\n}\r\n\r\n// @function addClass(el: HTMLElement, name: String)\r\n// Adds `name` to the element's class attribute.\r\nexport function addClass(el, name) {\r\n\tif (el.classList !== undefined) {\r\n\t\tvar classes = Util.splitWords(name);\r\n\t\tfor (var i = 0, len = classes.length; i < len; i++) {\r\n\t\t\tel.classList.add(classes[i]);\r\n\t\t}\r\n\t} else if (!hasClass(el, name)) {\r\n\t\tvar className = getClass(el);\r\n\t\tsetClass(el, (className ? className + ' ' : '') + name);\r\n\t}\r\n}\r\n\r\n// @function removeClass(el: HTMLElement, name: String)\r\n// Removes `name` from the element's class attribute.\r\nexport function removeClass(el, name) {\r\n\tif (el.classList !== undefined) {\r\n\t\tel.classList.remove(name);\r\n\t} else {\r\n\t\tsetClass(el, Util.trim((' ' + getClass(el) + ' ').replace(' ' + name + ' ', ' ')));\r\n\t}\r\n}\r\n\r\n// @function setClass(el: HTMLElement, name: String)\r\n// Sets the element's class.\r\nexport function setClass(el, name) {\r\n\tif (el.className.baseVal === undefined) {\r\n\t\tel.className = name;\r\n\t} else {\r\n\t\t// in case of SVG element\r\n\t\tel.className.baseVal = name;\r\n\t}\r\n}\r\n\r\n// @function getClass(el: HTMLElement): String\r\n// Returns the element's class.\r\nexport function getClass(el) {\r\n\t// Check if the element is an SVGElementInstance and use the correspondingElement instead\r\n\t// (Required for linked SVG elements in IE11.)\r\n\tif (el.correspondingElement) {\r\n\t\tel = el.correspondingElement;\r\n\t}\r\n\treturn el.className.baseVal === undefined ? el.className : el.className.baseVal;\r\n}\r\n\r\n// @function setOpacity(el: HTMLElement, opacity: Number)\r\n// Set the opacity of an element (including old IE support).\r\n// `opacity` must be a number from `0` to `1`.\r\nexport function setOpacity(el, value) {\r\n\tif ('opacity' in el.style) {\r\n\t\tel.style.opacity = value;\r\n\t} else if ('filter' in el.style) {\r\n\t\t_setOpacityIE(el, value);\r\n\t}\r\n}\r\n\r\nfunction _setOpacityIE(el, value) {\r\n\tvar filter = false,\r\n\t    filterName = 'DXImageTransform.Microsoft.Alpha';\r\n\r\n\t// filters collection throws an error if we try to retrieve a filter that doesn't exist\r\n\ttry {\r\n\t\tfilter = el.filters.item(filterName);\r\n\t} catch (e) {\r\n\t\t// don't set opacity to 1 if we haven't already set an opacity,\r\n\t\t// it isn't needed and breaks transparent pngs.\r\n\t\tif (value === 1) { return; }\r\n\t}\r\n\r\n\tvalue = Math.round(value * 100);\r\n\r\n\tif (filter) {\r\n\t\tfilter.Enabled = (value !== 100);\r\n\t\tfilter.Opacity = value;\r\n\t} else {\r\n\t\tel.style.filter += ' progid:' + filterName + '(opacity=' + value + ')';\r\n\t}\r\n}\r\n\r\n// @function testProp(props: String[]): String|false\r\n// Goes through the array of style names and returns the first name\r\n// that is a valid style name for an element. If no such name is found,\r\n// it returns false. Useful for vendor-prefixed styles like `transform`.\r\nexport function testProp(props) {\r\n\tvar style = document.documentElement.style;\r\n\r\n\tfor (var i = 0; i < props.length; i++) {\r\n\t\tif (props[i] in style) {\r\n\t\t\treturn props[i];\r\n\t\t}\r\n\t}\r\n\treturn false;\r\n}\r\n\r\n// @function setTransform(el: HTMLElement, offset: Point, scale?: Number)\r\n// Resets the 3D CSS transform of `el` so it is translated by `offset` pixels\r\n// and optionally scaled by `scale`. Does not have an effect if the\r\n// browser doesn't support 3D CSS transforms.\r\nexport function setTransform(el, offset, scale) {\r\n\tvar pos = offset || new Point(0, 0);\r\n\r\n\tel.style[TRANSFORM] =\r\n\t\t(Browser.ie3d ?\r\n\t\t\t'translate(' + pos.x + 'px,' + pos.y + 'px)' :\r\n\t\t\t'translate3d(' + pos.x + 'px,' + pos.y + 'px,0)') +\r\n\t\t(scale ? ' scale(' + scale + ')' : '');\r\n}\r\n\r\n// @function setPosition(el: HTMLElement, position: Point)\r\n// Sets the position of `el` to coordinates specified by `position`,\r\n// using CSS translate or top/left positioning depending on the browser\r\n// (used by Leaflet internally to position its layers).\r\nexport function setPosition(el, point) {\r\n\r\n\t/*eslint-disable */\r\n\tel._leaflet_pos = point;\r\n\t/* eslint-enable */\r\n\r\n\tif (Browser.any3d) {\r\n\t\tsetTransform(el, point);\r\n\t} else {\r\n\t\tel.style.left = point.x + 'px';\r\n\t\tel.style.top = point.y + 'px';\r\n\t}\r\n}\r\n\r\n// @function getPosition(el: HTMLElement): Point\r\n// Returns the coordinates of an element previously positioned with setPosition.\r\nexport function getPosition(el) {\r\n\t// this method is only used for elements previously positioned using setPosition,\r\n\t// so it's safe to cache the position for performance\r\n\r\n\treturn el._leaflet_pos || new Point(0, 0);\r\n}\r\n\r\n// @function disableTextSelection()\r\n// Prevents the user from generating `selectstart` DOM events, usually generated\r\n// when the user drags the mouse through a page with text. Used internally\r\n// by Leaflet to override the behaviour of any click-and-drag interaction on\r\n// the map. Affects drag interactions on the whole document.\r\n\r\n// @function enableTextSelection()\r\n// Cancels the effects of a previous [`L.DomUtil.disableTextSelection`](#domutil-disabletextselection).\r\nexport var disableTextSelection;\r\nexport var enableTextSelection;\r\nvar _userSelect;\r\nif ('onselectstart' in document) {\r\n\tdisableTextSelection = function () {\r\n\t\tDomEvent.on(window, 'selectstart', DomEvent.preventDefault);\r\n\t};\r\n\tenableTextSelection = function () {\r\n\t\tDomEvent.off(window, 'selectstart', DomEvent.preventDefault);\r\n\t};\r\n} else {\r\n\tvar userSelectProperty = testProp(\r\n\t\t['userSelect', 'WebkitUserSelect', 'OUserSelect', 'MozUserSelect', 'msUserSelect']);\r\n\r\n\tdisableTextSelection = function () {\r\n\t\tif (userSelectProperty) {\r\n\t\t\tvar style = document.documentElement.style;\r\n\t\t\t_userSelect = style[userSelectProperty];\r\n\t\t\tstyle[userSelectProperty] = 'none';\r\n\t\t}\r\n\t};\r\n\tenableTextSelection = function () {\r\n\t\tif (userSelectProperty) {\r\n\t\t\tdocument.documentElement.style[userSelectProperty] = _userSelect;\r\n\t\t\t_userSelect = undefined;\r\n\t\t}\r\n\t};\r\n}\r\n\r\n// @function disableImageDrag()\r\n// As [`L.DomUtil.disableTextSelection`](#domutil-disabletextselection), but\r\n// for `dragstart` DOM events, usually generated when the user drags an image.\r\nexport function disableImageDrag() {\r\n\tDomEvent.on(window, 'dragstart', DomEvent.preventDefault);\r\n}\r\n\r\n// @function enableImageDrag()\r\n// Cancels the effects of a previous [`L.DomUtil.disableImageDrag`](#domutil-disabletextselection).\r\nexport function enableImageDrag() {\r\n\tDomEvent.off(window, 'dragstart', DomEvent.preventDefault);\r\n}\r\n\r\nvar _outlineElement, _outlineStyle;\r\n// @function preventOutline(el: HTMLElement)\r\n// Makes the [outline](https://developer.mozilla.org/docs/Web/CSS/outline)\r\n// of the element `el` invisible. Used internally by Leaflet to prevent\r\n// focusable elements from displaying an outline when the user performs a\r\n// drag interaction on them.\r\nexport function preventOutline(element) {\r\n\twhile (element.tabIndex === -1) {\r\n\t\telement = element.parentNode;\r\n\t}\r\n\tif (!element.style) { return; }\r\n\trestoreOutline();\r\n\t_outlineElement = element;\r\n\t_outlineStyle = element.style.outlineStyle;\r\n\telement.style.outlineStyle = 'none';\r\n\tDomEvent.on(window, 'keydown', restoreOutline);\r\n}\r\n\r\n// @function restoreOutline()\r\n// Cancels the effects of a previous [`L.DomUtil.preventOutline`]().\r\nexport function restoreOutline() {\r\n\tif (!_outlineElement) { return; }\r\n\t_outlineElement.style.outlineStyle = _outlineStyle;\r\n\t_outlineElement = undefined;\r\n\t_outlineStyle = undefined;\r\n\tDomEvent.off(window, 'keydown', restoreOutline);\r\n}\r\n\r\n// @function getSizedParentNode(el: HTMLElement): HTMLElement\r\n// Finds the closest parent node which size (width and height) is not null.\r\nexport function getSizedParentNode(element) {\r\n\tdo {\r\n\t\telement = element.parentNode;\r\n\t} while ((!element.offsetWidth || !element.offsetHeight) && element !== document.body);\r\n\treturn element;\r\n}\r\n\r\n// @function getScale(el: HTMLElement): Object\r\n// Computes the CSS scale currently applied on the element.\r\n// Returns an object with `x` and `y` members as horizontal and vertical scales respectively,\r\n// and `boundingClientRect` as the result of [`getBoundingClientRect()`](https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect).\r\nexport function getScale(element) {\r\n\tvar rect = element.getBoundingClientRect(); // Read-only in old browsers.\r\n\r\n\treturn {\r\n\t\tx: rect.width / element.offsetWidth || 1,\r\n\t\ty: rect.height / element.offsetHeight || 1,\r\n\t\tboundingClientRect: rect\r\n\t};\r\n}\r\n", "import {Point} from '../geometry/Point';\r\nimport * as Util from '../core/Util';\r\nimport Browser from '../core/Browser';\r\nimport {addPointerListener, removePointerListener} from './DomEvent.Pointer';\r\nimport {addDoubleTapListener, removeDoubleTapListener} from './DomEvent.DoubleTap';\r\nimport {getScale} from './DomUtil';\r\n\r\n/*\r\n * @namespace DomEvent\r\n * Utility functions to work with the [DOM events](https://developer.mozilla.org/docs/Web/API/Event), used by Leaflet internally.\r\n */\r\n\r\n// Inspired by John Resig, Dean Edwards and YUI addEvent implementations.\r\n\r\n// @function on(el: HTMLElement, types: String, fn: Function, context?: Object): this\r\n// Adds a listener function (`fn`) to a particular DOM event type of the\r\n// element `el`. You can optionally specify the context of the listener\r\n// (object the `this` keyword will point to). You can also pass several\r\n// space-separated types (e.g. `'click dblclick'`).\r\n\r\n// @alternative\r\n// @function on(el: HTMLElement, eventMap: Object, context?: Object): this\r\n// Adds a set of type/listener pairs, e.g. `{click: onClick, mousemove: onMouseMove}`\r\nexport function on(obj, types, fn, context) {\r\n\r\n\tif (types && typeof types === 'object') {\r\n\t\tfor (var type in types) {\r\n\t\t\taddOne(obj, type, types[type], fn);\r\n\t\t}\r\n\t} else {\r\n\t\ttypes = Util.splitWords(types);\r\n\r\n\t\tfor (var i = 0, len = types.length; i < len; i++) {\r\n\t\t\taddOne(obj, types[i], fn, context);\r\n\t\t}\r\n\t}\r\n\r\n\treturn this;\r\n}\r\n\r\nvar eventsKey = '_leaflet_events';\r\n\r\n// @function off(el: HTMLElement, types: String, fn: Function, context?: Object): this\r\n// Removes a previously added listener function.\r\n// Note that if you passed a custom context to on, you must pass the same\r\n// context to `off` in order to remove the listener.\r\n\r\n// @alternative\r\n// @function off(el: HTMLElement, eventMap: Object, context?: Object): this\r\n// Removes a set of type/listener pairs, e.g. `{click: onClick, mousemove: onMouseMove}`\r\n\r\n// @alternative\r\n// @function off(el: HTMLElement, types: String): this\r\n// Removes all previously added listeners of given types.\r\n\r\n// @alternative\r\n// @function off(el: HTMLElement): this\r\n// Removes all previously added listeners from given HTMLElement\r\nexport function off(obj, types, fn, context) {\r\n\r\n\tif (arguments.length === 1) {\r\n\t\tbatchRemove(obj);\r\n\t\tdelete obj[eventsKey];\r\n\r\n\t} else if (types && typeof types === 'object') {\r\n\t\tfor (var type in types) {\r\n\t\t\tremoveOne(obj, type, types[type], fn);\r\n\t\t}\r\n\r\n\t} else {\r\n\t\ttypes = Util.splitWords(types);\r\n\r\n\t\tif (arguments.length === 2) {\r\n\t\t\tbatchRemove(obj, function (type) {\r\n\t\t\t\treturn Util.indexOf(types, type) !== -1;\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tfor (var i = 0, len = types.length; i < len; i++) {\r\n\t\t\t\tremoveOne(obj, types[i], fn, context);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn this;\r\n}\r\n\r\nfunction batchRemove(obj, filterFn) {\r\n\tfor (var id in obj[eventsKey]) {\r\n\t\tvar type = id.split(/\\d/)[0];\r\n\t\tif (!filterFn || filterFn(type)) {\r\n\t\t\tremoveOne(obj, type, null, null, id);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nvar mouseSubst = {\r\n\tmouseenter: 'mouseover',\r\n\tmouseleave: 'mouseout',\r\n\twheel: !('onwheel' in window) && 'mousewheel'\r\n};\r\n\r\nfunction addOne(obj, type, fn, context) {\r\n\tvar id = type + Util.stamp(fn) + (context ? '_' + Util.stamp(context) : '');\r\n\r\n\tif (obj[eventsKey] && obj[eventsKey][id]) { return this; }\r\n\r\n\tvar handler = function (e) {\r\n\t\treturn fn.call(context || obj, e || window.event);\r\n\t};\r\n\r\n\tvar originalHandler = handler;\r\n\r\n\tif (!Browser.touchNative && Browser.pointer && type.indexOf('touch') === 0) {\r\n\t\t// Needs DomEvent.Pointer.js\r\n\t\thandler = addPointerListener(obj, type, handler);\r\n\r\n\t} else if (Browser.touch && (type === 'dblclick')) {\r\n\t\thandler = addDoubleTapListener(obj, handler);\r\n\r\n\t} else if ('addEventListener' in obj) {\r\n\r\n\t\tif (type === 'touchstart' || type === 'touchmove' || type === 'wheel' ||  type === 'mousewheel') {\r\n\t\t\tobj.addEventListener(mouseSubst[type] || type, handler, Browser.passiveEvents ? {passive: false} : false);\r\n\r\n\t\t} else if (type === 'mouseenter' || type === 'mouseleave') {\r\n\t\t\thandler = function (e) {\r\n\t\t\t\te = e || window.event;\r\n\t\t\t\tif (isExternalTarget(obj, e)) {\r\n\t\t\t\t\toriginalHandler(e);\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t\tobj.addEventListener(mouseSubst[type], handler, false);\r\n\r\n\t\t} else {\r\n\t\t\tobj.addEventListener(type, originalHandler, false);\r\n\t\t}\r\n\r\n\t} else {\r\n\t\tobj.attachEvent('on' + type, handler);\r\n\t}\r\n\r\n\tobj[eventsKey] = obj[eventsKey] || {};\r\n\tobj[eventsKey][id] = handler;\r\n}\r\n\r\nfunction removeOne(obj, type, fn, context, id) {\r\n\tid = id || type + Util.stamp(fn) + (context ? '_' + Util.stamp(context) : '');\r\n\tvar handler = obj[eventsKey] && obj[eventsKey][id];\r\n\r\n\tif (!handler) { return this; }\r\n\r\n\tif (!Browser.touchNative && Browser.pointer && type.indexOf('touch') === 0) {\r\n\t\tremovePointerListener(obj, type, handler);\r\n\r\n\t} else if (Browser.touch && (type === 'dblclick')) {\r\n\t\tremoveDoubleTapListener(obj, handler);\r\n\r\n\t} else if ('removeEventListener' in obj) {\r\n\r\n\t\tobj.removeEventListener(mouseSubst[type] || type, handler, false);\r\n\r\n\t} else {\r\n\t\tobj.detachEvent('on' + type, handler);\r\n\t}\r\n\r\n\tobj[eventsKey][id] = null;\r\n}\r\n\r\n// @function stopPropagation(ev: DOMEvent): this\r\n// Stop the given event from propagation to parent elements. Used inside the listener functions:\r\n// ```js\r\n// L.DomEvent.on(div, 'click', function (ev) {\r\n// \tL.DomEvent.stopPropagation(ev);\r\n// });\r\n// ```\r\nexport function stopPropagation(e) {\r\n\r\n\tif (e.stopPropagation) {\r\n\t\te.stopPropagation();\r\n\t} else if (e.originalEvent) {  // In case of Leaflet event.\r\n\t\te.originalEvent._stopped = true;\r\n\t} else {\r\n\t\te.cancelBubble = true;\r\n\t}\r\n\r\n\treturn this;\r\n}\r\n\r\n// @function disableScrollPropagation(el: HTMLElement): this\r\n// Adds `stopPropagation` to the element's `'wheel'` events (plus browser variants).\r\nexport function disableScrollPropagation(el) {\r\n\taddOne(el, 'wheel', stopPropagation);\r\n\treturn this;\r\n}\r\n\r\n// @function disableClickPropagation(el: HTMLElement): this\r\n// Adds `stopPropagation` to the element's `'click'`, `'dblclick'`, `'contextmenu'`,\r\n// `'mousedown'` and `'touchstart'` events (plus browser variants).\r\nexport function disableClickPropagation(el) {\r\n\ton(el, 'mousedown touchstart dblclick contextmenu', stopPropagation);\r\n\tel['_leaflet_disable_click'] = true;\r\n\treturn this;\r\n}\r\n\r\n// @function preventDefault(ev: DOMEvent): this\r\n// Prevents the default action of the DOM Event `ev` from happening (such as\r\n// following a link in the href of the a element, or doing a POST request\r\n// with page reload when a `<form>` is submitted).\r\n// Use it inside listener functions.\r\nexport function preventDefault(e) {\r\n\tif (e.preventDefault) {\r\n\t\te.preventDefault();\r\n\t} else {\r\n\t\te.returnValue = false;\r\n\t}\r\n\treturn this;\r\n}\r\n\r\n// @function stop(ev: DOMEvent): this\r\n// Does `stopPropagation` and `preventDefault` at the same time.\r\nexport function stop(e) {\r\n\tpreventDefault(e);\r\n\tstopPropagation(e);\r\n\treturn this;\r\n}\r\n\r\n// @function getPropagationPath(ev: DOMEvent): Array\r\n// Compatibility polyfill for [`Event.composedPath()`](https://developer.mozilla.org/en-US/docs/Web/API/Event/composedPath).\r\n// Returns an array containing the `HTMLElement`s that the given DOM event\r\n// should propagate to (if not stopped).\r\nexport function getPropagationPath(ev) {\r\n\tif (ev.composedPath) {\r\n\t\treturn ev.composedPath();\r\n\t}\r\n\r\n\tvar path = [];\r\n\tvar el = ev.target;\r\n\r\n\twhile (el) {\r\n\t\tpath.push(el);\r\n\t\tel = el.parentNode;\r\n\t}\r\n\treturn path;\r\n}\r\n\r\n\r\n// @function getMousePosition(ev: DOMEvent, container?: HTMLElement): Point\r\n// Gets normalized mouse position from a DOM event relative to the\r\n// `container` (border excluded) or to the whole page if not specified.\r\nexport function getMousePosition(e, container) {\r\n\tif (!container) {\r\n\t\treturn new Point(e.clientX, e.clientY);\r\n\t}\r\n\r\n\tvar scale = getScale(container),\r\n\t    offset = scale.boundingClientRect; // left and top  values are in page scale (like the event clientX/Y)\r\n\r\n\treturn new Point(\r\n\t\t// offset.left/top values are in page scale (like clientX/Y),\r\n\t\t// whereas clientLeft/Top (border width) values are the original values (before CSS scale applies).\r\n\t\t(e.clientX - offset.left) / scale.x - container.clientLeft,\r\n\t\t(e.clientY - offset.top) / scale.y - container.clientTop\r\n\t);\r\n}\r\n\r\n\r\n//  except , Safari and\r\n// We need double the scroll pixels (see #7403 and #4538) for all Browsers\r\n// except OSX (Mac) -> 3x, Chrome running on Linux 1x\r\n\r\nvar wheelPxFactor =\r\n\t(Browser.linux && Browser.chrome) ? window.devicePixelRatio :\r\n\tBrowser.mac ? window.devicePixelRatio * 3 :\r\n\twindow.devicePixelRatio > 0 ? 2 * window.devicePixelRatio : 1;\r\n// @function getWheelDelta(ev: DOMEvent): Number\r\n// Gets normalized wheel delta from a wheel DOM event, in vertical\r\n// pixels scrolled (negative if scrolling down).\r\n// Events from pointing devices without precise scrolling are mapped to\r\n// a best guess of 60 pixels.\r\nexport function getWheelDelta(e) {\r\n\treturn (Browser.edge) ? e.wheelDeltaY / 2 : // Don't trust window-geometry-based delta\r\n\t       (e.deltaY && e.deltaMode === 0) ? -e.deltaY / wheelPxFactor : // Pixels\r\n\t       (e.deltaY && e.deltaMode === 1) ? -e.deltaY * 20 : // Lines\r\n\t       (e.deltaY && e.deltaMode === 2) ? -e.deltaY * 60 : // Pages\r\n\t       (e.deltaX || e.deltaZ) ? 0 :\t// Skip horizontal/depth wheel events\r\n\t       e.wheelDelta ? (e.wheelDeltaY || e.wheelDelta) / 2 : // Legacy IE pixels\r\n\t       (e.detail && Math.abs(e.detail) < 32765) ? -e.detail * 20 : // Legacy Moz lines\r\n\t       e.detail ? e.detail / -32765 * 60 : // Legacy Moz pages\r\n\t       0;\r\n}\r\n\r\n// check if element really left/entered the event target (for mouseenter/mouseleave)\r\nexport function isExternalTarget(el, e) {\r\n\r\n\tvar related = e.relatedTarget;\r\n\r\n\tif (!related) { return true; }\r\n\r\n\ttry {\r\n\t\twhile (related && (related !== el)) {\r\n\t\t\trelated = related.parentNode;\r\n\t\t}\r\n\t} catch (err) {\r\n\t\treturn false;\r\n\t}\r\n\treturn (related !== el);\r\n}\r\n\r\n// @function addListener(…): this\r\n// Alias to [`L.DomEvent.on`](#domevent-on)\r\nexport {on as addListener};\r\n\r\n// @function removeListener(…): this\r\n// Alias to [`L.DomEvent.off`](#domevent-off)\r\nexport {off as removeListener};\r\n", "import * as Util from '../core/Util';\nimport {Evented} from '../core/Events';\nimport * as DomUtil from '../dom/DomUtil';\n\n\n/*\n * @class PosAnimation\n * @aka L.PosAnimation\n * @inherits Evented\n * Used internally for panning animations, utilizing CSS3 Transitions for modern browsers and a timer fallback for IE6-9.\n *\n * @example\n * ```js\n * var myPositionMarker = L.marker([48.864716, 2.294694]).addTo(map);\n *\n * myPositionMarker.on(\"click\", function() {\n * \tvar pos = map.latLngToLayerPoint(myPositionMarker.getLatLng());\n * \tpos.y -= 25;\n * \tvar fx = new L.PosAnimation();\n *\n * \tfx.once('end',function() {\n * \t\tpos.y += 25;\n * \t\tfx.run(myPositionMarker._icon, pos, 0.8);\n * \t});\n *\n * \tfx.run(myPositionMarker._icon, pos, 0.3);\n * });\n *\n * ```\n *\n * @constructor L.PosAnimation()\n * Creates a `PosAnimation` object.\n *\n */\n\nexport var PosAnimation = Evented.extend({\n\n\t// @method run(el: HTMLElement, newPos: Point, duration?: Number, easeLinearity?: Number)\n\t// Run an animation of a given element to a new position, optionally setting\n\t// duration in seconds (`0.25` by default) and easing linearity factor (3rd\n\t// argument of the [cubic bezier curve](https://cubic-bezier.com/#0,0,.5,1),\n\t// `0.5` by default).\n\trun: function (el, newPos, duration, easeLinearity) {\n\t\tthis.stop();\n\n\t\tthis._el = el;\n\t\tthis._inProgress = true;\n\t\tthis._duration = duration || 0.25;\n\t\tthis._easeOutPower = 1 / Math.max(easeLinearity || 0.5, 0.2);\n\n\t\tthis._startPos = DomUtil.getPosition(el);\n\t\tthis._offset = newPos.subtract(this._startPos);\n\t\tthis._startTime = +new Date();\n\n\t\t// @event start: Event\n\t\t// Fired when the animation starts\n\t\tthis.fire('start');\n\n\t\tthis._animate();\n\t},\n\n\t// @method stop()\n\t// Stops the animation (if currently running).\n\tstop: function () {\n\t\tif (!this._inProgress) { return; }\n\n\t\tthis._step(true);\n\t\tthis._complete();\n\t},\n\n\t_animate: function () {\n\t\t// animation loop\n\t\tthis._animId = Util.requestAnimFrame(this._animate, this);\n\t\tthis._step();\n\t},\n\n\t_step: function (round) {\n\t\tvar elapsed = (+new Date()) - this._startTime,\n\t\t    duration = this._duration * 1000;\n\n\t\tif (elapsed < duration) {\n\t\t\tthis._runFrame(this._easeOut(elapsed / duration), round);\n\t\t} else {\n\t\t\tthis._runFrame(1);\n\t\t\tthis._complete();\n\t\t}\n\t},\n\n\t_runFrame: function (progress, round) {\n\t\tvar pos = this._startPos.add(this._offset.multiplyBy(progress));\n\t\tif (round) {\n\t\t\tpos._round();\n\t\t}\n\t\tDomUtil.setPosition(this._el, pos);\n\n\t\t// @event step: Event\n\t\t// Fired continuously during the animation.\n\t\tthis.fire('step');\n\t},\n\n\t_complete: function () {\n\t\tUtil.cancelAnimFrame(this._animId);\n\n\t\tthis._inProgress = false;\n\t\t// @event end: Event\n\t\t// Fired when the animation ends.\n\t\tthis.fire('end');\n\t},\n\n\t_easeOut: function (t) {\n\t\treturn 1 - Math.pow(1 - t, this._easeOutPower);\n\t}\n});\n", "import * as Util from '../core/Util';\r\nimport {Evented} from '../core/Events';\r\nimport {EPSG3857} from '../geo/crs/CRS.EPSG3857';\r\nimport {Point, toPoint} from '../geometry/Point';\r\nimport {Bounds, toBounds} from '../geometry/Bounds';\r\nimport {LatLng, toLatLng} from '../geo/LatLng';\r\nimport {LatLngBounds, toLatLngBounds} from '../geo/LatLngBounds';\r\nimport Browser from '../core/Browser';\r\nimport * as DomEvent from '../dom/DomEvent';\r\nimport * as DomUtil from '../dom/DomUtil';\r\nimport {PosAnimation} from '../dom/PosAnimation';\r\n\r\n/*\r\n * @class Map\r\n * @aka L.Map\r\n * @inherits Evented\r\n *\r\n * The central class of the API — it is used to create a map on a page and manipulate it.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * // initialize the map on the \"map\" div with a given center and zoom\r\n * var map = L.map('map', {\r\n * \tcenter: [51.505, -0.09],\r\n * \tzoom: 13\r\n * });\r\n * ```\r\n *\r\n */\r\n\r\nexport var Map = Evented.extend({\r\n\r\n\toptions: {\r\n\t\t// @section Map State Options\r\n\t\t// @option crs: CRS = L.CRS.EPSG3857\r\n\t\t// The [Coordinate Reference System](#crs) to use. Don't change this if you're not\r\n\t\t// sure what it means.\r\n\t\tcrs: EPSG3857,\r\n\r\n\t\t// @option center: LatLng = undefined\r\n\t\t// Initial geographic center of the map\r\n\t\tcenter: undefined,\r\n\r\n\t\t// @option zoom: Number = undefined\r\n\t\t// Initial map zoom level\r\n\t\tzoom: undefined,\r\n\r\n\t\t// @option minZoom: Number = *\r\n\t\t// Minimum zoom level of the map.\r\n\t\t// If not specified and at least one `GridLayer` or `TileLayer` is in the map,\r\n\t\t// the lowest of their `minZoom` options will be used instead.\r\n\t\tminZoom: undefined,\r\n\r\n\t\t// @option maxZoom: Number = *\r\n\t\t// Maximum zoom level of the map.\r\n\t\t// If not specified and at least one `GridLayer` or `TileLayer` is in the map,\r\n\t\t// the highest of their `maxZoom` options will be used instead.\r\n\t\tmaxZoom: undefined,\r\n\r\n\t\t// @option layers: Layer[] = []\r\n\t\t// Array of layers that will be added to the map initially\r\n\t\tlayers: [],\r\n\r\n\t\t// @option maxBounds: LatLngBounds = null\r\n\t\t// When this option is set, the map restricts the view to the given\r\n\t\t// geographical bounds, bouncing the user back if the user tries to pan\r\n\t\t// outside the view. To set the restriction dynamically, use\r\n\t\t// [`setMaxBounds`](#map-setmaxbounds) method.\r\n\t\tmaxBounds: undefined,\r\n\r\n\t\t// @option renderer: Renderer = *\r\n\t\t// The default method for drawing vector layers on the map. `L.SVG`\r\n\t\t// or `L.Canvas` by default depending on browser support.\r\n\t\trenderer: undefined,\r\n\r\n\r\n\t\t// @section Animation Options\r\n\t\t// @option zoomAnimation: Boolean = true\r\n\t\t// Whether the map zoom animation is enabled. By default it's enabled\r\n\t\t// in all browsers that support CSS3 Transitions except Android.\r\n\t\tzoomAnimation: true,\r\n\r\n\t\t// @option zoomAnimationThreshold: Number = 4\r\n\t\t// Won't animate zoom if the zoom difference exceeds this value.\r\n\t\tzoomAnimationThreshold: 4,\r\n\r\n\t\t// @option fadeAnimation: Boolean = true\r\n\t\t// Whether the tile fade animation is enabled. By default it's enabled\r\n\t\t// in all browsers that support CSS3 Transitions except Android.\r\n\t\tfadeAnimation: true,\r\n\r\n\t\t// @option markerZoomAnimation: Boolean = true\r\n\t\t// Whether markers animate their zoom with the zoom animation, if disabled\r\n\t\t// they will disappear for the length of the animation. By default it's\r\n\t\t// enabled in all browsers that support CSS3 Transitions except Android.\r\n\t\tmarkerZoomAnimation: true,\r\n\r\n\t\t// @option transform3DLimit: Number = 2^23\r\n\t\t// Defines the maximum size of a CSS translation transform. The default\r\n\t\t// value should not be changed unless a web browser positions layers in\r\n\t\t// the wrong place after doing a large `panBy`.\r\n\t\ttransform3DLimit: 8388608, // Precision limit of a 32-bit float\r\n\r\n\t\t// @section Interaction Options\r\n\t\t// @option zoomSnap: Number = 1\r\n\t\t// Forces the map's zoom level to always be a multiple of this, particularly\r\n\t\t// right after a [`fitBounds()`](#map-fitbounds) or a pinch-zoom.\r\n\t\t// By default, the zoom level snaps to the nearest integer; lower values\r\n\t\t// (e.g. `0.5` or `0.1`) allow for greater granularity. A value of `0`\r\n\t\t// means the zoom level will not be snapped after `fitBounds` or a pinch-zoom.\r\n\t\tzoomSnap: 1,\r\n\r\n\t\t// @option zoomDelta: Number = 1\r\n\t\t// Controls how much the map's zoom level will change after a\r\n\t\t// [`zoomIn()`](#map-zoomin), [`zoomOut()`](#map-zoomout), pressing `+`\r\n\t\t// or `-` on the keyboard, or using the [zoom controls](#control-zoom).\r\n\t\t// Values smaller than `1` (e.g. `0.5`) allow for greater granularity.\r\n\t\tzoomDelta: 1,\r\n\r\n\t\t// @option trackResize: Boolean = true\r\n\t\t// Whether the map automatically handles browser window resize to update itself.\r\n\t\ttrackResize: true\r\n\t},\r\n\r\n\tinitialize: function (id, options) { // (HTMLElement or String, Object)\r\n\t\toptions = Util.setOptions(this, options);\r\n\r\n\t\t// Make sure to assign internal flags at the beginning,\r\n\t\t// to avoid inconsistent state in some edge cases.\r\n\t\tthis._handlers = [];\r\n\t\tthis._layers = {};\r\n\t\tthis._zoomBoundLayers = {};\r\n\t\tthis._sizeChanged = true;\r\n\r\n\t\tthis._initContainer(id);\r\n\t\tthis._initLayout();\r\n\r\n\t\t// hack for https://github.com/Leaflet/Leaflet/issues/1980\r\n\t\tthis._onResize = Util.bind(this._onResize, this);\r\n\r\n\t\tthis._initEvents();\r\n\r\n\t\tif (options.maxBounds) {\r\n\t\t\tthis.setMaxBounds(options.maxBounds);\r\n\t\t}\r\n\r\n\t\tif (options.zoom !== undefined) {\r\n\t\t\tthis._zoom = this._limitZoom(options.zoom);\r\n\t\t}\r\n\r\n\t\tif (options.center && options.zoom !== undefined) {\r\n\t\t\tthis.setView(toLatLng(options.center), options.zoom, {reset: true});\r\n\t\t}\r\n\r\n\t\tthis.callInitHooks();\r\n\r\n\t\t// don't animate on browsers without hardware-accelerated transitions or old Android/Opera\r\n\t\tthis._zoomAnimated = DomUtil.TRANSITION && Browser.any3d && !Browser.mobileOpera &&\r\n\t\t\t\tthis.options.zoomAnimation;\r\n\r\n\t\t// zoom transitions run with the same duration for all layers, so if one of transitionend events\r\n\t\t// happens after starting zoom animation (propagating to the map pane), we know that it ended globally\r\n\t\tif (this._zoomAnimated) {\r\n\t\t\tthis._createAnimProxy();\r\n\t\t\tDomEvent.on(this._proxy, DomUtil.TRANSITION_END, this._catchTransitionEnd, this);\r\n\t\t}\r\n\r\n\t\tthis._addLayers(this.options.layers);\r\n\t},\r\n\r\n\r\n\t// @section Methods for modifying map state\r\n\r\n\t// @method setView(center: LatLng, zoom: Number, options?: Zoom/pan options): this\r\n\t// Sets the view of the map (geographical center and zoom) with the given\r\n\t// animation options.\r\n\tsetView: function (center, zoom, options) {\r\n\r\n\t\tzoom = zoom === undefined ? this._zoom : this._limitZoom(zoom);\r\n\t\tcenter = this._limitCenter(toLatLng(center), zoom, this.options.maxBounds);\r\n\t\toptions = options || {};\r\n\r\n\t\tthis._stop();\r\n\r\n\t\tif (this._loaded && !options.reset && options !== true) {\r\n\r\n\t\t\tif (options.animate !== undefined) {\r\n\t\t\t\toptions.zoom = Util.extend({animate: options.animate}, options.zoom);\r\n\t\t\t\toptions.pan = Util.extend({animate: options.animate, duration: options.duration}, options.pan);\r\n\t\t\t}\r\n\r\n\t\t\t// try animating pan or zoom\r\n\t\t\tvar moved = (this._zoom !== zoom) ?\r\n\t\t\t\tthis._tryAnimatedZoom && this._tryAnimatedZoom(center, zoom, options.zoom) :\r\n\t\t\t\tthis._tryAnimatedPan(center, options.pan);\r\n\r\n\t\t\tif (moved) {\r\n\t\t\t\t// prevent resize handler call, the view will refresh after animation anyway\r\n\t\t\t\tclearTimeout(this._sizeTimer);\r\n\t\t\t\treturn this;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// animation didn't start, just reset the map view\r\n\t\tthis._resetView(center, zoom, options.pan && options.pan.noMoveStart);\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method setZoom(zoom: Number, options?: Zoom/pan options): this\r\n\t// Sets the zoom of the map.\r\n\tsetZoom: function (zoom, options) {\r\n\t\tif (!this._loaded) {\r\n\t\t\tthis._zoom = zoom;\r\n\t\t\treturn this;\r\n\t\t}\r\n\t\treturn this.setView(this.getCenter(), zoom, {zoom: options});\r\n\t},\r\n\r\n\t// @method zoomIn(delta?: Number, options?: Zoom options): this\r\n\t// Increases the zoom of the map by `delta` ([`zoomDelta`](#map-zoomdelta) by default).\r\n\tzoomIn: function (delta, options) {\r\n\t\tdelta = delta || (Browser.any3d ? this.options.zoomDelta : 1);\r\n\t\treturn this.setZoom(this._zoom + delta, options);\r\n\t},\r\n\r\n\t// @method zoomOut(delta?: Number, options?: Zoom options): this\r\n\t// Decreases the zoom of the map by `delta` ([`zoomDelta`](#map-zoomdelta) by default).\r\n\tzoomOut: function (delta, options) {\r\n\t\tdelta = delta || (Browser.any3d ? this.options.zoomDelta : 1);\r\n\t\treturn this.setZoom(this._zoom - delta, options);\r\n\t},\r\n\r\n\t// @method setZoomAround(latlng: LatLng, zoom: Number, options: Zoom options): this\r\n\t// Zooms the map while keeping a specified geographical point on the map\r\n\t// stationary (e.g. used internally for scroll zoom and double-click zoom).\r\n\t// @alternative\r\n\t// @method setZoomAround(offset: Point, zoom: Number, options: Zoom options): this\r\n\t// Zooms the map while keeping a specified pixel on the map (relative to the top-left corner) stationary.\r\n\tsetZoomAround: function (latlng, zoom, options) {\r\n\t\tvar scale = this.getZoomScale(zoom),\r\n\t\t    viewHalf = this.getSize().divideBy(2),\r\n\t\t    containerPoint = latlng instanceof Point ? latlng : this.latLngToContainerPoint(latlng),\r\n\r\n\t\t    centerOffset = containerPoint.subtract(viewHalf).multiplyBy(1 - 1 / scale),\r\n\t\t    newCenter = this.containerPointToLatLng(viewHalf.add(centerOffset));\r\n\r\n\t\treturn this.setView(newCenter, zoom, {zoom: options});\r\n\t},\r\n\r\n\t_getBoundsCenterZoom: function (bounds, options) {\r\n\r\n\t\toptions = options || {};\r\n\t\tbounds = bounds.getBounds ? bounds.getBounds() : toLatLngBounds(bounds);\r\n\r\n\t\tvar paddingTL = toPoint(options.paddingTopLeft || options.padding || [0, 0]),\r\n\t\t    paddingBR = toPoint(options.paddingBottomRight || options.padding || [0, 0]),\r\n\r\n\t\t    zoom = this.getBoundsZoom(bounds, false, paddingTL.add(paddingBR));\r\n\r\n\t\tzoom = (typeof options.maxZoom === 'number') ? Math.min(options.maxZoom, zoom) : zoom;\r\n\r\n\t\tif (zoom === Infinity) {\r\n\t\t\treturn {\r\n\t\t\t\tcenter: bounds.getCenter(),\r\n\t\t\t\tzoom: zoom\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tvar paddingOffset = paddingBR.subtract(paddingTL).divideBy(2),\r\n\r\n\t\t    swPoint = this.project(bounds.getSouthWest(), zoom),\r\n\t\t    nePoint = this.project(bounds.getNorthEast(), zoom),\r\n\t\t    center = this.unproject(swPoint.add(nePoint).divideBy(2).add(paddingOffset), zoom);\r\n\r\n\t\treturn {\r\n\t\t\tcenter: center,\r\n\t\t\tzoom: zoom\r\n\t\t};\r\n\t},\r\n\r\n\t// @method fitBounds(bounds: LatLngBounds, options?: fitBounds options): this\r\n\t// Sets a map view that contains the given geographical bounds with the\r\n\t// maximum zoom level possible.\r\n\tfitBounds: function (bounds, options) {\r\n\r\n\t\tbounds = toLatLngBounds(bounds);\r\n\r\n\t\tif (!bounds.isValid()) {\r\n\t\t\tthrow new Error('Bounds are not valid.');\r\n\t\t}\r\n\r\n\t\tvar target = this._getBoundsCenterZoom(bounds, options);\r\n\t\treturn this.setView(target.center, target.zoom, options);\r\n\t},\r\n\r\n\t// @method fitWorld(options?: fitBounds options): this\r\n\t// Sets a map view that mostly contains the whole world with the maximum\r\n\t// zoom level possible.\r\n\tfitWorld: function (options) {\r\n\t\treturn this.fitBounds([[-90, -180], [90, 180]], options);\r\n\t},\r\n\r\n\t// @method panTo(latlng: LatLng, options?: Pan options): this\r\n\t// Pans the map to a given center.\r\n\tpanTo: function (center, options) { // (LatLng)\r\n\t\treturn this.setView(center, this._zoom, {pan: options});\r\n\t},\r\n\r\n\t// @method panBy(offset: Point, options?: Pan options): this\r\n\t// Pans the map by a given number of pixels (animated).\r\n\tpanBy: function (offset, options) {\r\n\t\toffset = toPoint(offset).round();\r\n\t\toptions = options || {};\r\n\r\n\t\tif (!offset.x && !offset.y) {\r\n\t\t\treturn this.fire('moveend');\r\n\t\t}\r\n\t\t// If we pan too far, Chrome gets issues with tiles\r\n\t\t// and makes them disappear or appear in the wrong place (slightly offset) #2602\r\n\t\tif (options.animate !== true && !this.getSize().contains(offset)) {\r\n\t\t\tthis._resetView(this.unproject(this.project(this.getCenter()).add(offset)), this.getZoom());\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\tif (!this._panAnim) {\r\n\t\t\tthis._panAnim = new PosAnimation();\r\n\r\n\t\t\tthis._panAnim.on({\r\n\t\t\t\t'step': this._onPanTransitionStep,\r\n\t\t\t\t'end': this._onPanTransitionEnd\r\n\t\t\t}, this);\r\n\t\t}\r\n\r\n\t\t// don't fire movestart if animating inertia\r\n\t\tif (!options.noMoveStart) {\r\n\t\t\tthis.fire('movestart');\r\n\t\t}\r\n\r\n\t\t// animate pan unless animate: false specified\r\n\t\tif (options.animate !== false) {\r\n\t\t\tDomUtil.addClass(this._mapPane, 'leaflet-pan-anim');\r\n\r\n\t\t\tvar newPos = this._getMapPanePos().subtract(offset).round();\r\n\t\t\tthis._panAnim.run(this._mapPane, newPos, options.duration || 0.25, options.easeLinearity);\r\n\t\t} else {\r\n\t\t\tthis._rawPanBy(offset);\r\n\t\t\tthis.fire('move').fire('moveend');\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method flyTo(latlng: LatLng, zoom?: Number, options?: Zoom/pan options): this\r\n\t// Sets the view of the map (geographical center and zoom) performing a smooth\r\n\t// pan-zoom animation.\r\n\tflyTo: function (targetCenter, targetZoom, options) {\r\n\r\n\t\toptions = options || {};\r\n\t\tif (options.animate === false || !Browser.any3d) {\r\n\t\t\treturn this.setView(targetCenter, targetZoom, options);\r\n\t\t}\r\n\r\n\t\tthis._stop();\r\n\r\n\t\tvar from = this.project(this.getCenter()),\r\n\t\t    to = this.project(targetCenter),\r\n\t\t    size = this.getSize(),\r\n\t\t    startZoom = this._zoom;\r\n\r\n\t\ttargetCenter = toLatLng(targetCenter);\r\n\t\ttargetZoom = targetZoom === undefined ? startZoom : targetZoom;\r\n\r\n\t\tvar w0 = Math.max(size.x, size.y),\r\n\t\t    w1 = w0 * this.getZoomScale(startZoom, targetZoom),\r\n\t\t    u1 = (to.distanceTo(from)) || 1,\r\n\t\t    rho = 1.42,\r\n\t\t    rho2 = rho * rho;\r\n\r\n\t\tfunction r(i) {\r\n\t\t\tvar s1 = i ? -1 : 1,\r\n\t\t\t    s2 = i ? w1 : w0,\r\n\t\t\t    t1 = w1 * w1 - w0 * w0 + s1 * rho2 * rho2 * u1 * u1,\r\n\t\t\t    b1 = 2 * s2 * rho2 * u1,\r\n\t\t\t    b = t1 / b1,\r\n\t\t\t    sq = Math.sqrt(b * b + 1) - b;\r\n\r\n\t\t\t    // workaround for floating point precision bug when sq = 0, log = -Infinite,\r\n\t\t\t    // thus triggering an infinite loop in flyTo\r\n\t\t\t    var log = sq < 0.000000001 ? -18 : Math.log(sq);\r\n\r\n\t\t\treturn log;\r\n\t\t}\r\n\r\n\t\tfunction sinh(n) { return (Math.exp(n) - Math.exp(-n)) / 2; }\r\n\t\tfunction cosh(n) { return (Math.exp(n) + Math.exp(-n)) / 2; }\r\n\t\tfunction tanh(n) { return sinh(n) / cosh(n); }\r\n\r\n\t\tvar r0 = r(0);\r\n\r\n\t\tfunction w(s) { return w0 * (cosh(r0) / cosh(r0 + rho * s)); }\r\n\t\tfunction u(s) { return w0 * (cosh(r0) * tanh(r0 + rho * s) - sinh(r0)) / rho2; }\r\n\r\n\t\tfunction easeOut(t) { return 1 - Math.pow(1 - t, 1.5); }\r\n\r\n\t\tvar start = Date.now(),\r\n\t\t    S = (r(1) - r0) / rho,\r\n\t\t    duration = options.duration ? 1000 * options.duration : 1000 * S * 0.8;\r\n\r\n\t\tfunction frame() {\r\n\t\t\tvar t = (Date.now() - start) / duration,\r\n\t\t\t    s = easeOut(t) * S;\r\n\r\n\t\t\tif (t <= 1) {\r\n\t\t\t\tthis._flyToFrame = Util.requestAnimFrame(frame, this);\r\n\r\n\t\t\t\tthis._move(\r\n\t\t\t\t\tthis.unproject(from.add(to.subtract(from).multiplyBy(u(s) / u1)), startZoom),\r\n\t\t\t\t\tthis.getScaleZoom(w0 / w(s), startZoom),\r\n\t\t\t\t\t{flyTo: true});\r\n\r\n\t\t\t} else {\r\n\t\t\t\tthis\r\n\t\t\t\t\t._move(targetCenter, targetZoom)\r\n\t\t\t\t\t._moveEnd(true);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis._moveStart(true, options.noMoveStart);\r\n\r\n\t\tframe.call(this);\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method flyToBounds(bounds: LatLngBounds, options?: fitBounds options): this\r\n\t// Sets the view of the map with a smooth animation like [`flyTo`](#map-flyto),\r\n\t// but takes a bounds parameter like [`fitBounds`](#map-fitbounds).\r\n\tflyToBounds: function (bounds, options) {\r\n\t\tvar target = this._getBoundsCenterZoom(bounds, options);\r\n\t\treturn this.flyTo(target.center, target.zoom, options);\r\n\t},\r\n\r\n\t// @method setMaxBounds(bounds: LatLngBounds): this\r\n\t// Restricts the map view to the given bounds (see the [maxBounds](#map-maxbounds) option).\r\n\tsetMaxBounds: function (bounds) {\r\n\t\tbounds = toLatLngBounds(bounds);\r\n\r\n\t\tif (this.listens('moveend', this._panInsideMaxBounds)) {\r\n\t\t\tthis.off('moveend', this._panInsideMaxBounds);\r\n\t\t}\r\n\r\n\t\tif (!bounds.isValid()) {\r\n\t\t\tthis.options.maxBounds = null;\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\tthis.options.maxBounds = bounds;\r\n\r\n\t\tif (this._loaded) {\r\n\t\t\tthis._panInsideMaxBounds();\r\n\t\t}\r\n\r\n\t\treturn this.on('moveend', this._panInsideMaxBounds);\r\n\t},\r\n\r\n\t// @method setMinZoom(zoom: Number): this\r\n\t// Sets the lower limit for the available zoom levels (see the [minZoom](#map-minzoom) option).\r\n\tsetMinZoom: function (zoom) {\r\n\t\tvar oldZoom = this.options.minZoom;\r\n\t\tthis.options.minZoom = zoom;\r\n\r\n\t\tif (this._loaded && oldZoom !== zoom) {\r\n\t\t\tthis.fire('zoomlevelschange');\r\n\r\n\t\t\tif (this.getZoom() < this.options.minZoom) {\r\n\t\t\t\treturn this.setZoom(zoom);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method setMaxZoom(zoom: Number): this\r\n\t// Sets the upper limit for the available zoom levels (see the [maxZoom](#map-maxzoom) option).\r\n\tsetMaxZoom: function (zoom) {\r\n\t\tvar oldZoom = this.options.maxZoom;\r\n\t\tthis.options.maxZoom = zoom;\r\n\r\n\t\tif (this._loaded && oldZoom !== zoom) {\r\n\t\t\tthis.fire('zoomlevelschange');\r\n\r\n\t\t\tif (this.getZoom() > this.options.maxZoom) {\r\n\t\t\t\treturn this.setZoom(zoom);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method panInsideBounds(bounds: LatLngBounds, options?: Pan options): this\r\n\t// Pans the map to the closest view that would lie inside the given bounds (if it's not already), controlling the animation using the options specific, if any.\r\n\tpanInsideBounds: function (bounds, options) {\r\n\t\tthis._enforcingBounds = true;\r\n\t\tvar center = this.getCenter(),\r\n\t\t    newCenter = this._limitCenter(center, this._zoom, toLatLngBounds(bounds));\r\n\r\n\t\tif (!center.equals(newCenter)) {\r\n\t\t\tthis.panTo(newCenter, options);\r\n\t\t}\r\n\r\n\t\tthis._enforcingBounds = false;\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method panInside(latlng: LatLng, options?: padding options): this\r\n\t// Pans the map the minimum amount to make the `latlng` visible. Use\r\n\t// padding options to fit the display to more restricted bounds.\r\n\t// If `latlng` is already within the (optionally padded) display bounds,\r\n\t// the map will not be panned.\r\n\tpanInside: function (latlng, options) {\r\n\t\toptions = options || {};\r\n\r\n\t\tvar paddingTL = toPoint(options.paddingTopLeft || options.padding || [0, 0]),\r\n\t\t    paddingBR = toPoint(options.paddingBottomRight || options.padding || [0, 0]),\r\n\t\t    pixelCenter = this.project(this.getCenter()),\r\n\t\t    pixelPoint = this.project(latlng),\r\n\t\t    pixelBounds = this.getPixelBounds(),\r\n\t\t    paddedBounds = toBounds([pixelBounds.min.add(paddingTL), pixelBounds.max.subtract(paddingBR)]),\r\n\t\t    paddedSize = paddedBounds.getSize();\r\n\r\n\t\tif (!paddedBounds.contains(pixelPoint)) {\r\n\t\t\tthis._enforcingBounds = true;\r\n\t\t\tvar centerOffset = pixelPoint.subtract(paddedBounds.getCenter());\r\n\t\t\tvar offset = paddedBounds.extend(pixelPoint).getSize().subtract(paddedSize);\r\n\t\t\tpixelCenter.x += centerOffset.x < 0 ? -offset.x : offset.x;\r\n\t\t\tpixelCenter.y += centerOffset.y < 0 ? -offset.y : offset.y;\r\n\t\t\tthis.panTo(this.unproject(pixelCenter), options);\r\n\t\t\tthis._enforcingBounds = false;\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method invalidateSize(options: Zoom/pan options): this\r\n\t// Checks if the map container size changed and updates the map if so —\r\n\t// call it after you've changed the map size dynamically, also animating\r\n\t// pan by default. If `options.pan` is `false`, panning will not occur.\r\n\t// If `options.debounceMoveend` is `true`, it will delay `moveend` event so\r\n\t// that it doesn't happen often even if the method is called many\r\n\t// times in a row.\r\n\r\n\t// @alternative\r\n\t// @method invalidateSize(animate: Boolean): this\r\n\t// Checks if the map container size changed and updates the map if so —\r\n\t// call it after you've changed the map size dynamically, also animating\r\n\t// pan by default.\r\n\tinvalidateSize: function (options) {\r\n\t\tif (!this._loaded) { return this; }\r\n\r\n\t\toptions = Util.extend({\r\n\t\t\tanimate: false,\r\n\t\t\tpan: true\r\n\t\t}, options === true ? {animate: true} : options);\r\n\r\n\t\tvar oldSize = this.getSize();\r\n\t\tthis._sizeChanged = true;\r\n\t\tthis._lastCenter = null;\r\n\r\n\t\tvar newSize = this.getSize(),\r\n\t\t    oldCenter = oldSize.divideBy(2).round(),\r\n\t\t    newCenter = newSize.divideBy(2).round(),\r\n\t\t    offset = oldCenter.subtract(newCenter);\r\n\r\n\t\tif (!offset.x && !offset.y) { return this; }\r\n\r\n\t\tif (options.animate && options.pan) {\r\n\t\t\tthis.panBy(offset);\r\n\r\n\t\t} else {\r\n\t\t\tif (options.pan) {\r\n\t\t\t\tthis._rawPanBy(offset);\r\n\t\t\t}\r\n\r\n\t\t\tthis.fire('move');\r\n\r\n\t\t\tif (options.debounceMoveend) {\r\n\t\t\t\tclearTimeout(this._sizeTimer);\r\n\t\t\t\tthis._sizeTimer = setTimeout(Util.bind(this.fire, this, 'moveend'), 200);\r\n\t\t\t} else {\r\n\t\t\t\tthis.fire('moveend');\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// @section Map state change events\r\n\t\t// @event resize: ResizeEvent\r\n\t\t// Fired when the map is resized.\r\n\t\treturn this.fire('resize', {\r\n\t\t\toldSize: oldSize,\r\n\t\t\tnewSize: newSize\r\n\t\t});\r\n\t},\r\n\r\n\t// @section Methods for modifying map state\r\n\t// @method stop(): this\r\n\t// Stops the currently running `panTo` or `flyTo` animation, if any.\r\n\tstop: function () {\r\n\t\tthis.setZoom(this._limitZoom(this._zoom));\r\n\t\tif (!this.options.zoomSnap) {\r\n\t\t\tthis.fire('viewreset');\r\n\t\t}\r\n\t\treturn this._stop();\r\n\t},\r\n\r\n\t// @section Geolocation methods\r\n\t// @method locate(options?: Locate options): this\r\n\t// Tries to locate the user using the Geolocation API, firing a [`locationfound`](#map-locationfound)\r\n\t// event with location data on success or a [`locationerror`](#map-locationerror) event on failure,\r\n\t// and optionally sets the map view to the user's location with respect to\r\n\t// detection accuracy (or to the world view if geolocation failed).\r\n\t// Note that, if your page doesn't use HTTPS, this method will fail in\r\n\t// modern browsers ([Chrome 50 and newer](https://sites.google.com/a/chromium.org/dev/Home/chromium-security/deprecating-powerful-features-on-insecure-origins))\r\n\t// See `Locate options` for more details.\r\n\tlocate: function (options) {\r\n\r\n\t\toptions = this._locateOptions = Util.extend({\r\n\t\t\ttimeout: 10000,\r\n\t\t\twatch: false\r\n\t\t\t// setView: false\r\n\t\t\t// maxZoom: <Number>\r\n\t\t\t// maximumAge: 0\r\n\t\t\t// enableHighAccuracy: false\r\n\t\t}, options);\r\n\r\n\t\tif (!('geolocation' in navigator)) {\r\n\t\t\tthis._handleGeolocationError({\r\n\t\t\t\tcode: 0,\r\n\t\t\t\tmessage: 'Geolocation not supported.'\r\n\t\t\t});\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\tvar onResponse = Util.bind(this._handleGeolocationResponse, this),\r\n\t\t    onError = Util.bind(this._handleGeolocationError, this);\r\n\r\n\t\tif (options.watch) {\r\n\t\t\tthis._locationWatchId =\r\n\t\t\t        navigator.geolocation.watchPosition(onResponse, onError, options);\r\n\t\t} else {\r\n\t\t\tnavigator.geolocation.getCurrentPosition(onResponse, onError, options);\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method stopLocate(): this\r\n\t// Stops watching location previously initiated by `map.locate({watch: true})`\r\n\t// and aborts resetting the map view if map.locate was called with\r\n\t// `{setView: true}`.\r\n\tstopLocate: function () {\r\n\t\tif (navigator.geolocation && navigator.geolocation.clearWatch) {\r\n\t\t\tnavigator.geolocation.clearWatch(this._locationWatchId);\r\n\t\t}\r\n\t\tif (this._locateOptions) {\r\n\t\t\tthis._locateOptions.setView = false;\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t_handleGeolocationError: function (error) {\r\n\t\tif (!this._container._leaflet_id) { return; }\r\n\r\n\t\tvar c = error.code,\r\n\t\t    message = error.message ||\r\n\t\t            (c === 1 ? 'permission denied' :\r\n\t\t            (c === 2 ? 'position unavailable' : 'timeout'));\r\n\r\n\t\tif (this._locateOptions.setView && !this._loaded) {\r\n\t\t\tthis.fitWorld();\r\n\t\t}\r\n\r\n\t\t// @section Location events\r\n\t\t// @event locationerror: ErrorEvent\r\n\t\t// Fired when geolocation (using the [`locate`](#map-locate) method) failed.\r\n\t\tthis.fire('locationerror', {\r\n\t\t\tcode: c,\r\n\t\t\tmessage: 'Geolocation error: ' + message + '.'\r\n\t\t});\r\n\t},\r\n\r\n\t_handleGeolocationResponse: function (pos) {\r\n\t\tif (!this._container._leaflet_id) { return; }\r\n\r\n\t\tvar lat = pos.coords.latitude,\r\n\t\t    lng = pos.coords.longitude,\r\n\t\t    latlng = new LatLng(lat, lng),\r\n\t\t    bounds = latlng.toBounds(pos.coords.accuracy * 2),\r\n\t\t    options = this._locateOptions;\r\n\r\n\t\tif (options.setView) {\r\n\t\t\tvar zoom = this.getBoundsZoom(bounds);\r\n\t\t\tthis.setView(latlng, options.maxZoom ? Math.min(zoom, options.maxZoom) : zoom);\r\n\t\t}\r\n\r\n\t\tvar data = {\r\n\t\t\tlatlng: latlng,\r\n\t\t\tbounds: bounds,\r\n\t\t\ttimestamp: pos.timestamp\r\n\t\t};\r\n\r\n\t\tfor (var i in pos.coords) {\r\n\t\t\tif (typeof pos.coords[i] === 'number') {\r\n\t\t\t\tdata[i] = pos.coords[i];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// @event locationfound: LocationEvent\r\n\t\t// Fired when geolocation (using the [`locate`](#map-locate) method)\r\n\t\t// went successfully.\r\n\t\tthis.fire('locationfound', data);\r\n\t},\r\n\r\n\t// TODO Appropriate docs section?\r\n\t// @section Other Methods\r\n\t// @method addHandler(name: String, HandlerClass: Function): this\r\n\t// Adds a new `Handler` to the map, given its name and constructor function.\r\n\taddHandler: function (name, HandlerClass) {\r\n\t\tif (!HandlerClass) { return this; }\r\n\r\n\t\tvar handler = this[name] = new HandlerClass(this);\r\n\r\n\t\tthis._handlers.push(handler);\r\n\r\n\t\tif (this.options[name]) {\r\n\t\t\thandler.enable();\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method remove(): this\r\n\t// Destroys the map and clears all related event listeners.\r\n\tremove: function () {\r\n\r\n\t\tthis._initEvents(true);\r\n\t\tif (this.options.maxBounds) { this.off('moveend', this._panInsideMaxBounds); }\r\n\r\n\t\tif (this._containerId !== this._container._leaflet_id) {\r\n\t\t\tthrow new Error('Map container is being reused by another instance');\r\n\t\t}\r\n\r\n\t\ttry {\r\n\t\t\t// throws error in IE6-8\r\n\t\t\tdelete this._container._leaflet_id;\r\n\t\t\tdelete this._containerId;\r\n\t\t} catch (e) {\r\n\t\t\t/*eslint-disable */\r\n\t\t\tthis._container._leaflet_id = undefined;\r\n\t\t\t/* eslint-enable */\r\n\t\t\tthis._containerId = undefined;\r\n\t\t}\r\n\r\n\t\tif (this._locationWatchId !== undefined) {\r\n\t\t\tthis.stopLocate();\r\n\t\t}\r\n\r\n\t\tthis._stop();\r\n\r\n\t\tDomUtil.remove(this._mapPane);\r\n\r\n\t\tif (this._clearControlPos) {\r\n\t\t\tthis._clearControlPos();\r\n\t\t}\r\n\t\tif (this._resizeRequest) {\r\n\t\t\tUtil.cancelAnimFrame(this._resizeRequest);\r\n\t\t\tthis._resizeRequest = null;\r\n\t\t}\r\n\r\n\t\tthis._clearHandlers();\r\n\r\n\t\tif (this._loaded) {\r\n\t\t\t// @section Map state change events\r\n\t\t\t// @event unload: Event\r\n\t\t\t// Fired when the map is destroyed with [remove](#map-remove) method.\r\n\t\t\tthis.fire('unload');\r\n\t\t}\r\n\r\n\t\tvar i;\r\n\t\tfor (i in this._layers) {\r\n\t\t\tthis._layers[i].remove();\r\n\t\t}\r\n\t\tfor (i in this._panes) {\r\n\t\t\tDomUtil.remove(this._panes[i]);\r\n\t\t}\r\n\r\n\t\tthis._layers = [];\r\n\t\tthis._panes = [];\r\n\t\tdelete this._mapPane;\r\n\t\tdelete this._renderer;\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @section Other Methods\r\n\t// @method createPane(name: String, container?: HTMLElement): HTMLElement\r\n\t// Creates a new [map pane](#map-pane) with the given name if it doesn't exist already,\r\n\t// then returns it. The pane is created as a child of `container`, or\r\n\t// as a child of the main map pane if not set.\r\n\tcreatePane: function (name, container) {\r\n\t\tvar className = 'leaflet-pane' + (name ? ' leaflet-' + name.replace('Pane', '') + '-pane' : ''),\r\n\t\t    pane = DomUtil.create('div', className, container || this._mapPane);\r\n\r\n\t\tif (name) {\r\n\t\t\tthis._panes[name] = pane;\r\n\t\t}\r\n\t\treturn pane;\r\n\t},\r\n\r\n\t// @section Methods for Getting Map State\r\n\r\n\t// @method getCenter(): LatLng\r\n\t// Returns the geographical center of the map view\r\n\tgetCenter: function () {\r\n\t\tthis._checkIfLoaded();\r\n\r\n\t\tif (this._lastCenter && !this._moved()) {\r\n\t\t\treturn this._lastCenter.clone();\r\n\t\t}\r\n\t\treturn this.layerPointToLatLng(this._getCenterLayerPoint());\r\n\t},\r\n\r\n\t// @method getZoom(): Number\r\n\t// Returns the current zoom level of the map view\r\n\tgetZoom: function () {\r\n\t\treturn this._zoom;\r\n\t},\r\n\r\n\t// @method getBounds(): LatLngBounds\r\n\t// Returns the geographical bounds visible in the current map view\r\n\tgetBounds: function () {\r\n\t\tvar bounds = this.getPixelBounds(),\r\n\t\t    sw = this.unproject(bounds.getBottomLeft()),\r\n\t\t    ne = this.unproject(bounds.getTopRight());\r\n\r\n\t\treturn new LatLngBounds(sw, ne);\r\n\t},\r\n\r\n\t// @method getMinZoom(): Number\r\n\t// Returns the minimum zoom level of the map (if set in the `minZoom` option of the map or of any layers), or `0` by default.\r\n\tgetMinZoom: function () {\r\n\t\treturn this.options.minZoom === undefined ? this._layersMinZoom || 0 : this.options.minZoom;\r\n\t},\r\n\r\n\t// @method getMaxZoom(): Number\r\n\t// Returns the maximum zoom level of the map (if set in the `maxZoom` option of the map or of any layers).\r\n\tgetMaxZoom: function () {\r\n\t\treturn this.options.maxZoom === undefined ?\r\n\t\t\t(this._layersMaxZoom === undefined ? Infinity : this._layersMaxZoom) :\r\n\t\t\tthis.options.maxZoom;\r\n\t},\r\n\r\n\t// @method getBoundsZoom(bounds: LatLngBounds, inside?: Boolean, padding?: Point): Number\r\n\t// Returns the maximum zoom level on which the given bounds fit to the map\r\n\t// view in its entirety. If `inside` (optional) is set to `true`, the method\r\n\t// instead returns the minimum zoom level on which the map view fits into\r\n\t// the given bounds in its entirety.\r\n\tgetBoundsZoom: function (bounds, inside, padding) { // (LatLngBounds[, Boolean, Point]) -> Number\r\n\t\tbounds = toLatLngBounds(bounds);\r\n\t\tpadding = toPoint(padding || [0, 0]);\r\n\r\n\t\tvar zoom = this.getZoom() || 0,\r\n\t\t    min = this.getMinZoom(),\r\n\t\t    max = this.getMaxZoom(),\r\n\t\t    nw = bounds.getNorthWest(),\r\n\t\t    se = bounds.getSouthEast(),\r\n\t\t    size = this.getSize().subtract(padding),\r\n\t\t    boundsSize = toBounds(this.project(se, zoom), this.project(nw, zoom)).getSize(),\r\n\t\t    snap = Browser.any3d ? this.options.zoomSnap : 1,\r\n\t\t    scalex = size.x / boundsSize.x,\r\n\t\t    scaley = size.y / boundsSize.y,\r\n\t\t    scale = inside ? Math.max(scalex, scaley) : Math.min(scalex, scaley);\r\n\r\n\t\tzoom = this.getScaleZoom(scale, zoom);\r\n\r\n\t\tif (snap) {\r\n\t\t\tzoom = Math.round(zoom / (snap / 100)) * (snap / 100); // don't jump if within 1% of a snap level\r\n\t\t\tzoom = inside ? Math.ceil(zoom / snap) * snap : Math.floor(zoom / snap) * snap;\r\n\t\t}\r\n\r\n\t\treturn Math.max(min, Math.min(max, zoom));\r\n\t},\r\n\r\n\t// @method getSize(): Point\r\n\t// Returns the current size of the map container (in pixels).\r\n\tgetSize: function () {\r\n\t\tif (!this._size || this._sizeChanged) {\r\n\t\t\tthis._size = new Point(\r\n\t\t\t\tthis._container.clientWidth || 0,\r\n\t\t\t\tthis._container.clientHeight || 0);\r\n\r\n\t\t\tthis._sizeChanged = false;\r\n\t\t}\r\n\t\treturn this._size.clone();\r\n\t},\r\n\r\n\t// @method getPixelBounds(): Bounds\r\n\t// Returns the bounds of the current map view in projected pixel\r\n\t// coordinates (sometimes useful in layer and overlay implementations).\r\n\tgetPixelBounds: function (center, zoom) {\r\n\t\tvar topLeftPoint = this._getTopLeftPoint(center, zoom);\r\n\t\treturn new Bounds(topLeftPoint, topLeftPoint.add(this.getSize()));\r\n\t},\r\n\r\n\t// TODO: Check semantics - isn't the pixel origin the 0,0 coord relative to\r\n\t// the map pane? \"left point of the map layer\" can be confusing, specially\r\n\t// since there can be negative offsets.\r\n\t// @method getPixelOrigin(): Point\r\n\t// Returns the projected pixel coordinates of the top left point of\r\n\t// the map layer (useful in custom layer and overlay implementations).\r\n\tgetPixelOrigin: function () {\r\n\t\tthis._checkIfLoaded();\r\n\t\treturn this._pixelOrigin;\r\n\t},\r\n\r\n\t// @method getPixelWorldBounds(zoom?: Number): Bounds\r\n\t// Returns the world's bounds in pixel coordinates for zoom level `zoom`.\r\n\t// If `zoom` is omitted, the map's current zoom level is used.\r\n\tgetPixelWorldBounds: function (zoom) {\r\n\t\treturn this.options.crs.getProjectedBounds(zoom === undefined ? this.getZoom() : zoom);\r\n\t},\r\n\r\n\t// @section Other Methods\r\n\r\n\t// @method getPane(pane: String|HTMLElement): HTMLElement\r\n\t// Returns a [map pane](#map-pane), given its name or its HTML element (its identity).\r\n\tgetPane: function (pane) {\r\n\t\treturn typeof pane === 'string' ? this._panes[pane] : pane;\r\n\t},\r\n\r\n\t// @method getPanes(): Object\r\n\t// Returns a plain object containing the names of all [panes](#map-pane) as keys and\r\n\t// the panes as values.\r\n\tgetPanes: function () {\r\n\t\treturn this._panes;\r\n\t},\r\n\r\n\t// @method getContainer: HTMLElement\r\n\t// Returns the HTML element that contains the map.\r\n\tgetContainer: function () {\r\n\t\treturn this._container;\r\n\t},\r\n\r\n\r\n\t// @section Conversion Methods\r\n\r\n\t// @method getZoomScale(toZoom: Number, fromZoom: Number): Number\r\n\t// Returns the scale factor to be applied to a map transition from zoom level\r\n\t// `fromZoom` to `toZoom`. Used internally to help with zoom animations.\r\n\tgetZoomScale: function (toZoom, fromZoom) {\r\n\t\t// TODO replace with universal implementation after refactoring projections\r\n\t\tvar crs = this.options.crs;\r\n\t\tfromZoom = fromZoom === undefined ? this._zoom : fromZoom;\r\n\t\treturn crs.scale(toZoom) / crs.scale(fromZoom);\r\n\t},\r\n\r\n\t// @method getScaleZoom(scale: Number, fromZoom: Number): Number\r\n\t// Returns the zoom level that the map would end up at, if it is at `fromZoom`\r\n\t// level and everything is scaled by a factor of `scale`. Inverse of\r\n\t// [`getZoomScale`](#map-getZoomScale).\r\n\tgetScaleZoom: function (scale, fromZoom) {\r\n\t\tvar crs = this.options.crs;\r\n\t\tfromZoom = fromZoom === undefined ? this._zoom : fromZoom;\r\n\t\tvar zoom = crs.zoom(scale * crs.scale(fromZoom));\r\n\t\treturn isNaN(zoom) ? Infinity : zoom;\r\n\t},\r\n\r\n\t// @method project(latlng: LatLng, zoom: Number): Point\r\n\t// Projects a geographical coordinate `LatLng` according to the projection\r\n\t// of the map's CRS, then scales it according to `zoom` and the CRS's\r\n\t// `Transformation`. The result is pixel coordinate relative to\r\n\t// the CRS origin.\r\n\tproject: function (latlng, zoom) {\r\n\t\tzoom = zoom === undefined ? this._zoom : zoom;\r\n\t\treturn this.options.crs.latLngToPoint(toLatLng(latlng), zoom);\r\n\t},\r\n\r\n\t// @method unproject(point: Point, zoom: Number): LatLng\r\n\t// Inverse of [`project`](#map-project).\r\n\tunproject: function (point, zoom) {\r\n\t\tzoom = zoom === undefined ? this._zoom : zoom;\r\n\t\treturn this.options.crs.pointToLatLng(toPoint(point), zoom);\r\n\t},\r\n\r\n\t// @method layerPointToLatLng(point: Point): LatLng\r\n\t// Given a pixel coordinate relative to the [origin pixel](#map-getpixelorigin),\r\n\t// returns the corresponding geographical coordinate (for the current zoom level).\r\n\tlayerPointToLatLng: function (point) {\r\n\t\tvar projectedPoint = toPoint(point).add(this.getPixelOrigin());\r\n\t\treturn this.unproject(projectedPoint);\r\n\t},\r\n\r\n\t// @method latLngToLayerPoint(latlng: LatLng): Point\r\n\t// Given a geographical coordinate, returns the corresponding pixel coordinate\r\n\t// relative to the [origin pixel](#map-getpixelorigin).\r\n\tlatLngToLayerPoint: function (latlng) {\r\n\t\tvar projectedPoint = this.project(toLatLng(latlng))._round();\r\n\t\treturn projectedPoint._subtract(this.getPixelOrigin());\r\n\t},\r\n\r\n\t// @method wrapLatLng(latlng: LatLng): LatLng\r\n\t// Returns a `LatLng` where `lat` and `lng` has been wrapped according to the\r\n\t// map's CRS's `wrapLat` and `wrapLng` properties, if they are outside the\r\n\t// CRS's bounds.\r\n\t// By default this means longitude is wrapped around the dateline so its\r\n\t// value is between -180 and +180 degrees.\r\n\twrapLatLng: function (latlng) {\r\n\t\treturn this.options.crs.wrapLatLng(toLatLng(latlng));\r\n\t},\r\n\r\n\t// @method wrapLatLngBounds(bounds: LatLngBounds): LatLngBounds\r\n\t// Returns a `LatLngBounds` with the same size as the given one, ensuring that\r\n\t// its center is within the CRS's bounds.\r\n\t// By default this means the center longitude is wrapped around the dateline so its\r\n\t// value is between -180 and +180 degrees, and the majority of the bounds\r\n\t// overlaps the CRS's bounds.\r\n\twrapLatLngBounds: function (latlng) {\r\n\t\treturn this.options.crs.wrapLatLngBounds(toLatLngBounds(latlng));\r\n\t},\r\n\r\n\t// @method distance(latlng1: LatLng, latlng2: LatLng): Number\r\n\t// Returns the distance between two geographical coordinates according to\r\n\t// the map's CRS. By default this measures distance in meters.\r\n\tdistance: function (latlng1, latlng2) {\r\n\t\treturn this.options.crs.distance(toLatLng(latlng1), toLatLng(latlng2));\r\n\t},\r\n\r\n\t// @method containerPointToLayerPoint(point: Point): Point\r\n\t// Given a pixel coordinate relative to the map container, returns the corresponding\r\n\t// pixel coordinate relative to the [origin pixel](#map-getpixelorigin).\r\n\tcontainerPointToLayerPoint: function (point) { // (Point)\r\n\t\treturn toPoint(point).subtract(this._getMapPanePos());\r\n\t},\r\n\r\n\t// @method layerPointToContainerPoint(point: Point): Point\r\n\t// Given a pixel coordinate relative to the [origin pixel](#map-getpixelorigin),\r\n\t// returns the corresponding pixel coordinate relative to the map container.\r\n\tlayerPointToContainerPoint: function (point) { // (Point)\r\n\t\treturn toPoint(point).add(this._getMapPanePos());\r\n\t},\r\n\r\n\t// @method containerPointToLatLng(point: Point): LatLng\r\n\t// Given a pixel coordinate relative to the map container, returns\r\n\t// the corresponding geographical coordinate (for the current zoom level).\r\n\tcontainerPointToLatLng: function (point) {\r\n\t\tvar layerPoint = this.containerPointToLayerPoint(toPoint(point));\r\n\t\treturn this.layerPointToLatLng(layerPoint);\r\n\t},\r\n\r\n\t// @method latLngToContainerPoint(latlng: LatLng): Point\r\n\t// Given a geographical coordinate, returns the corresponding pixel coordinate\r\n\t// relative to the map container.\r\n\tlatLngToContainerPoint: function (latlng) {\r\n\t\treturn this.layerPointToContainerPoint(this.latLngToLayerPoint(toLatLng(latlng)));\r\n\t},\r\n\r\n\t// @method mouseEventToContainerPoint(ev: MouseEvent): Point\r\n\t// Given a MouseEvent object, returns the pixel coordinate relative to the\r\n\t// map container where the event took place.\r\n\tmouseEventToContainerPoint: function (e) {\r\n\t\treturn DomEvent.getMousePosition(e, this._container);\r\n\t},\r\n\r\n\t// @method mouseEventToLayerPoint(ev: MouseEvent): Point\r\n\t// Given a MouseEvent object, returns the pixel coordinate relative to\r\n\t// the [origin pixel](#map-getpixelorigin) where the event took place.\r\n\tmouseEventToLayerPoint: function (e) {\r\n\t\treturn this.containerPointToLayerPoint(this.mouseEventToContainerPoint(e));\r\n\t},\r\n\r\n\t// @method mouseEventToLatLng(ev: MouseEvent): LatLng\r\n\t// Given a MouseEvent object, returns geographical coordinate where the\r\n\t// event took place.\r\n\tmouseEventToLatLng: function (e) { // (MouseEvent)\r\n\t\treturn this.layerPointToLatLng(this.mouseEventToLayerPoint(e));\r\n\t},\r\n\r\n\r\n\t// map initialization methods\r\n\r\n\t_initContainer: function (id) {\r\n\t\tvar container = this._container = DomUtil.get(id);\r\n\r\n\t\tif (!container) {\r\n\t\t\tthrow new Error('Map container not found.');\r\n\t\t} else if (container._leaflet_id) {\r\n\t\t\tthrow new Error('Map container is already initialized.');\r\n\t\t}\r\n\r\n\t\tDomEvent.on(container, 'scroll', this._onScroll, this);\r\n\t\tthis._containerId = Util.stamp(container);\r\n\t},\r\n\r\n\t_initLayout: function () {\r\n\t\tvar container = this._container;\r\n\r\n\t\tthis._fadeAnimated = this.options.fadeAnimation && Browser.any3d;\r\n\r\n\t\tDomUtil.addClass(container, 'leaflet-container' +\r\n\t\t\t(Browser.touch ? ' leaflet-touch' : '') +\r\n\t\t\t(Browser.retina ? ' leaflet-retina' : '') +\r\n\t\t\t(Browser.ielt9 ? ' leaflet-oldie' : '') +\r\n\t\t\t(Browser.safari ? ' leaflet-safari' : '') +\r\n\t\t\t(this._fadeAnimated ? ' leaflet-fade-anim' : ''));\r\n\r\n\t\tvar position = DomUtil.getStyle(container, 'position');\r\n\r\n\t\tif (position !== 'absolute' && position !== 'relative' && position !== 'fixed' && position !== 'sticky') {\r\n\t\t\tcontainer.style.position = 'relative';\r\n\t\t}\r\n\r\n\t\tthis._initPanes();\r\n\r\n\t\tif (this._initControlPos) {\r\n\t\t\tthis._initControlPos();\r\n\t\t}\r\n\t},\r\n\r\n\t_initPanes: function () {\r\n\t\tvar panes = this._panes = {};\r\n\t\tthis._paneRenderers = {};\r\n\r\n\t\t// @section\r\n\t\t//\r\n\t\t// Panes are DOM elements used to control the ordering of layers on the map. You\r\n\t\t// can access panes with [`map.getPane`](#map-getpane) or\r\n\t\t// [`map.getPanes`](#map-getpanes) methods. New panes can be created with the\r\n\t\t// [`map.createPane`](#map-createpane) method.\r\n\t\t//\r\n\t\t// Every map has the following default panes that differ only in zIndex.\r\n\t\t//\r\n\t\t// @pane mapPane: HTMLElement = 'auto'\r\n\t\t// Pane that contains all other map panes\r\n\r\n\t\tthis._mapPane = this.createPane('mapPane', this._container);\r\n\t\tDomUtil.setPosition(this._mapPane, new Point(0, 0));\r\n\r\n\t\t// @pane tilePane: HTMLElement = 200\r\n\t\t// Pane for `GridLayer`s and `TileLayer`s\r\n\t\tthis.createPane('tilePane');\r\n\t\t// @pane overlayPane: HTMLElement = 400\r\n\t\t// Pane for vectors (`Path`s, like `Polyline`s and `Polygon`s), `ImageOverlay`s and `VideoOverlay`s\r\n\t\tthis.createPane('overlayPane');\r\n\t\t// @pane shadowPane: HTMLElement = 500\r\n\t\t// Pane for overlay shadows (e.g. `Marker` shadows)\r\n\t\tthis.createPane('shadowPane');\r\n\t\t// @pane markerPane: HTMLElement = 600\r\n\t\t// Pane for `Icon`s of `Marker`s\r\n\t\tthis.createPane('markerPane');\r\n\t\t// @pane tooltipPane: HTMLElement = 650\r\n\t\t// Pane for `Tooltip`s.\r\n\t\tthis.createPane('tooltipPane');\r\n\t\t// @pane popupPane: HTMLElement = 700\r\n\t\t// Pane for `Popup`s.\r\n\t\tthis.createPane('popupPane');\r\n\r\n\t\tif (!this.options.markerZoomAnimation) {\r\n\t\t\tDomUtil.addClass(panes.markerPane, 'leaflet-zoom-hide');\r\n\t\t\tDomUtil.addClass(panes.shadowPane, 'leaflet-zoom-hide');\r\n\t\t}\r\n\t},\r\n\r\n\r\n\t// private methods that modify map state\r\n\r\n\t// @section Map state change events\r\n\t_resetView: function (center, zoom, noMoveStart) {\r\n\t\tDomUtil.setPosition(this._mapPane, new Point(0, 0));\r\n\r\n\t\tvar loading = !this._loaded;\r\n\t\tthis._loaded = true;\r\n\t\tzoom = this._limitZoom(zoom);\r\n\r\n\t\tthis.fire('viewprereset');\r\n\r\n\t\tvar zoomChanged = this._zoom !== zoom;\r\n\t\tthis\r\n\t\t\t._moveStart(zoomChanged, noMoveStart)\r\n\t\t\t._move(center, zoom)\r\n\t\t\t._moveEnd(zoomChanged);\r\n\r\n\t\t// @event viewreset: Event\r\n\t\t// Fired when the map needs to redraw its content (this usually happens\r\n\t\t// on map zoom or load). Very useful for creating custom overlays.\r\n\t\tthis.fire('viewreset');\r\n\r\n\t\t// @event load: Event\r\n\t\t// Fired when the map is initialized (when its center and zoom are set\r\n\t\t// for the first time).\r\n\t\tif (loading) {\r\n\t\t\tthis.fire('load');\r\n\t\t}\r\n\t},\r\n\r\n\t_moveStart: function (zoomChanged, noMoveStart) {\r\n\t\t// @event zoomstart: Event\r\n\t\t// Fired when the map zoom is about to change (e.g. before zoom animation).\r\n\t\t// @event movestart: Event\r\n\t\t// Fired when the view of the map starts changing (e.g. user starts dragging the map).\r\n\t\tif (zoomChanged) {\r\n\t\t\tthis.fire('zoomstart');\r\n\t\t}\r\n\t\tif (!noMoveStart) {\r\n\t\t\tthis.fire('movestart');\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t_move: function (center, zoom, data, supressEvent) {\r\n\t\tif (zoom === undefined) {\r\n\t\t\tzoom = this._zoom;\r\n\t\t}\r\n\t\tvar zoomChanged = this._zoom !== zoom;\r\n\r\n\t\tthis._zoom = zoom;\r\n\t\tthis._lastCenter = center;\r\n\t\tthis._pixelOrigin = this._getNewPixelOrigin(center);\r\n\r\n\t\tif (!supressEvent) {\r\n\t\t\t// @event zoom: Event\r\n\t\t\t// Fired repeatedly during any change in zoom level,\r\n\t\t\t// including zoom and fly animations.\r\n\t\t\tif (zoomChanged || (data && data.pinch)) {\t// Always fire 'zoom' if pinching because #3530\r\n\t\t\t\tthis.fire('zoom', data);\r\n\t\t\t}\r\n\r\n\t\t\t// @event move: Event\r\n\t\t\t// Fired repeatedly during any movement of the map,\r\n\t\t\t// including pan and fly animations.\r\n\t\t\tthis.fire('move', data);\r\n\t\t} else if (data && data.pinch) {\t// Always fire 'zoom' if pinching because #3530\r\n\t\t\tthis.fire('zoom', data);\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t_moveEnd: function (zoomChanged) {\r\n\t\t// @event zoomend: Event\r\n\t\t// Fired when the map zoom changed, after any animations.\r\n\t\tif (zoomChanged) {\r\n\t\t\tthis.fire('zoomend');\r\n\t\t}\r\n\r\n\t\t// @event moveend: Event\r\n\t\t// Fired when the center of the map stops changing\r\n\t\t// (e.g. user stopped dragging the map or after non-centered zoom).\r\n\t\treturn this.fire('moveend');\r\n\t},\r\n\r\n\t_stop: function () {\r\n\t\tUtil.cancelAnimFrame(this._flyToFrame);\r\n\t\tif (this._panAnim) {\r\n\t\t\tthis._panAnim.stop();\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t_rawPanBy: function (offset) {\r\n\t\tDomUtil.setPosition(this._mapPane, this._getMapPanePos().subtract(offset));\r\n\t},\r\n\r\n\t_getZoomSpan: function () {\r\n\t\treturn this.getMaxZoom() - this.getMinZoom();\r\n\t},\r\n\r\n\t_panInsideMaxBounds: function () {\r\n\t\tif (!this._enforcingBounds) {\r\n\t\t\tthis.panInsideBounds(this.options.maxBounds);\r\n\t\t}\r\n\t},\r\n\r\n\t_checkIfLoaded: function () {\r\n\t\tif (!this._loaded) {\r\n\t\t\tthrow new Error('Set map center and zoom first.');\r\n\t\t}\r\n\t},\r\n\r\n\t// DOM event handling\r\n\r\n\t// @section Interaction events\r\n\t_initEvents: function (remove) {\r\n\t\tthis._targets = {};\r\n\t\tthis._targets[Util.stamp(this._container)] = this;\r\n\r\n\t\tvar onOff = remove ? DomEvent.off : DomEvent.on;\r\n\r\n\t\t// @event click: MouseEvent\r\n\t\t// Fired when the user clicks (or taps) the map.\r\n\t\t// @event dblclick: MouseEvent\r\n\t\t// Fired when the user double-clicks (or double-taps) the map.\r\n\t\t// @event mousedown: MouseEvent\r\n\t\t// Fired when the user pushes the mouse button on the map.\r\n\t\t// @event mouseup: MouseEvent\r\n\t\t// Fired when the user releases the mouse button on the map.\r\n\t\t// @event mouseover: MouseEvent\r\n\t\t// Fired when the mouse enters the map.\r\n\t\t// @event mouseout: MouseEvent\r\n\t\t// Fired when the mouse leaves the map.\r\n\t\t// @event mousemove: MouseEvent\r\n\t\t// Fired while the mouse moves over the map.\r\n\t\t// @event contextmenu: MouseEvent\r\n\t\t// Fired when the user pushes the right mouse button on the map, prevents\r\n\t\t// default browser context menu from showing if there are listeners on\r\n\t\t// this event. Also fired on mobile when the user holds a single touch\r\n\t\t// for a second (also called long press).\r\n\t\t// @event keypress: KeyboardEvent\r\n\t\t// Fired when the user presses a key from the keyboard that produces a character value while the map is focused.\r\n\t\t// @event keydown: KeyboardEvent\r\n\t\t// Fired when the user presses a key from the keyboard while the map is focused. Unlike the `keypress` event,\r\n\t\t// the `keydown` event is fired for keys that produce a character value and for keys\r\n\t\t// that do not produce a character value.\r\n\t\t// @event keyup: KeyboardEvent\r\n\t\t// Fired when the user releases a key from the keyboard while the map is focused.\r\n\t\tonOff(this._container, 'click dblclick mousedown mouseup ' +\r\n\t\t\t'mouseover mouseout mousemove contextmenu keypress keydown keyup', this._handleDOMEvent, this);\r\n\r\n\t\tif (this.options.trackResize) {\r\n\t\t\tonOff(window, 'resize', this._onResize, this);\r\n\t\t}\r\n\r\n\t\tif (Browser.any3d && this.options.transform3DLimit) {\r\n\t\t\t(remove ? this.off : this.on).call(this, 'moveend', this._onMoveEnd);\r\n\t\t}\r\n\t},\r\n\r\n\t_onResize: function () {\r\n\t\tUtil.cancelAnimFrame(this._resizeRequest);\r\n\t\tthis._resizeRequest = Util.requestAnimFrame(\r\n\t\t        function () { this.invalidateSize({debounceMoveend: true}); }, this);\r\n\t},\r\n\r\n\t_onScroll: function () {\r\n\t\tthis._container.scrollTop  = 0;\r\n\t\tthis._container.scrollLeft = 0;\r\n\t},\r\n\r\n\t_onMoveEnd: function () {\r\n\t\tvar pos = this._getMapPanePos();\r\n\t\tif (Math.max(Math.abs(pos.x), Math.abs(pos.y)) >= this.options.transform3DLimit) {\r\n\t\t\t// https://bugzilla.mozilla.org/show_bug.cgi?id=1203873 but Webkit also have\r\n\t\t\t// a pixel offset on very high values, see: https://jsfiddle.net/dg6r5hhb/\r\n\t\t\tthis._resetView(this.getCenter(), this.getZoom());\r\n\t\t}\r\n\t},\r\n\r\n\t_findEventTargets: function (e, type) {\r\n\t\tvar targets = [],\r\n\t\t    target,\r\n\t\t    isHover = type === 'mouseout' || type === 'mouseover',\r\n\t\t    src = e.target || e.srcElement,\r\n\t\t    dragging = false;\r\n\r\n\t\twhile (src) {\r\n\t\t\ttarget = this._targets[Util.stamp(src)];\r\n\t\t\tif (target && (type === 'click' || type === 'preclick') && this._draggableMoved(target)) {\r\n\t\t\t\t// Prevent firing click after you just dragged an object.\r\n\t\t\t\tdragging = true;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tif (target && target.listens(type, true)) {\r\n\t\t\t\tif (isHover && !DomEvent.isExternalTarget(src, e)) { break; }\r\n\t\t\t\ttargets.push(target);\r\n\t\t\t\tif (isHover) { break; }\r\n\t\t\t}\r\n\t\t\tif (src === this._container) { break; }\r\n\t\t\tsrc = src.parentNode;\r\n\t\t}\r\n\t\tif (!targets.length && !dragging && !isHover && this.listens(type, true)) {\r\n\t\t\ttargets = [this];\r\n\t\t}\r\n\t\treturn targets;\r\n\t},\r\n\r\n\t_isClickDisabled: function (el) {\r\n\t\twhile (el && el !== this._container) {\r\n\t\t\tif (el['_leaflet_disable_click']) { return true; }\r\n\t\t\tel = el.parentNode;\r\n\t\t}\r\n\t},\r\n\r\n\t_handleDOMEvent: function (e) {\r\n\t\tvar el = (e.target || e.srcElement);\r\n\t\tif (!this._loaded || el['_leaflet_disable_events'] || e.type === 'click' && this._isClickDisabled(el)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar type = e.type;\r\n\r\n\t\tif (type === 'mousedown') {\r\n\t\t\t// prevents outline when clicking on keyboard-focusable element\r\n\t\t\tDomUtil.preventOutline(el);\r\n\t\t}\r\n\r\n\t\tthis._fireDOMEvent(e, type);\r\n\t},\r\n\r\n\t_mouseEvents: ['click', 'dblclick', 'mouseover', 'mouseout', 'contextmenu'],\r\n\r\n\t_fireDOMEvent: function (e, type, canvasTargets) {\r\n\r\n\t\tif (e.type === 'click') {\r\n\t\t\t// Fire a synthetic 'preclick' event which propagates up (mainly for closing popups).\r\n\t\t\t// @event preclick: MouseEvent\r\n\t\t\t// Fired before mouse click on the map (sometimes useful when you\r\n\t\t\t// want something to happen on click before any existing click\r\n\t\t\t// handlers start running).\r\n\t\t\tvar synth = Util.extend({}, e);\r\n\t\t\tsynth.type = 'preclick';\r\n\t\t\tthis._fireDOMEvent(synth, synth.type, canvasTargets);\r\n\t\t}\r\n\r\n\t\t// Find the layer the event is propagating from and its parents.\r\n\t\tvar targets = this._findEventTargets(e, type);\r\n\r\n\t\tif (canvasTargets) {\r\n\t\t\tvar filtered = []; // pick only targets with listeners\r\n\t\t\tfor (var i = 0; i < canvasTargets.length; i++) {\r\n\t\t\t\tif (canvasTargets[i].listens(type, true)) {\r\n\t\t\t\t\tfiltered.push(canvasTargets[i]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\ttargets = filtered.concat(targets);\r\n\t\t}\r\n\r\n\t\tif (!targets.length) { return; }\r\n\r\n\t\tif (type === 'contextmenu') {\r\n\t\t\tDomEvent.preventDefault(e);\r\n\t\t}\r\n\r\n\t\tvar target = targets[0];\r\n\t\tvar data = {\r\n\t\t\toriginalEvent: e\r\n\t\t};\r\n\r\n\t\tif (e.type !== 'keypress' && e.type !== 'keydown' && e.type !== 'keyup') {\r\n\t\t\tvar isMarker = target.getLatLng && (!target._radius || target._radius <= 10);\r\n\t\t\tdata.containerPoint = isMarker ?\r\n\t\t\t\tthis.latLngToContainerPoint(target.getLatLng()) : this.mouseEventToContainerPoint(e);\r\n\t\t\tdata.layerPoint = this.containerPointToLayerPoint(data.containerPoint);\r\n\t\t\tdata.latlng = isMarker ? target.getLatLng() : this.layerPointToLatLng(data.layerPoint);\r\n\t\t}\r\n\r\n\t\tfor (i = 0; i < targets.length; i++) {\r\n\t\t\ttargets[i].fire(type, data, true);\r\n\t\t\tif (data.originalEvent._stopped ||\r\n\t\t\t\t(targets[i].options.bubblingMouseEvents === false && Util.indexOf(this._mouseEvents, type) !== -1)) { return; }\r\n\t\t}\r\n\t},\r\n\r\n\t_draggableMoved: function (obj) {\r\n\t\tobj = obj.dragging && obj.dragging.enabled() ? obj : this;\r\n\t\treturn (obj.dragging && obj.dragging.moved()) || (this.boxZoom && this.boxZoom.moved());\r\n\t},\r\n\r\n\t_clearHandlers: function () {\r\n\t\tfor (var i = 0, len = this._handlers.length; i < len; i++) {\r\n\t\t\tthis._handlers[i].disable();\r\n\t\t}\r\n\t},\r\n\r\n\t// @section Other Methods\r\n\r\n\t// @method whenReady(fn: Function, context?: Object): this\r\n\t// Runs the given function `fn` when the map gets initialized with\r\n\t// a view (center and zoom) and at least one layer, or immediately\r\n\t// if it's already initialized, optionally passing a function context.\r\n\twhenReady: function (callback, context) {\r\n\t\tif (this._loaded) {\r\n\t\t\tcallback.call(context || this, {target: this});\r\n\t\t} else {\r\n\t\t\tthis.on('load', callback, context);\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\r\n\t// private methods for getting map state\r\n\r\n\t_getMapPanePos: function () {\r\n\t\treturn DomUtil.getPosition(this._mapPane) || new Point(0, 0);\r\n\t},\r\n\r\n\t_moved: function () {\r\n\t\tvar pos = this._getMapPanePos();\r\n\t\treturn pos && !pos.equals([0, 0]);\r\n\t},\r\n\r\n\t_getTopLeftPoint: function (center, zoom) {\r\n\t\tvar pixelOrigin = center && zoom !== undefined ?\r\n\t\t\tthis._getNewPixelOrigin(center, zoom) :\r\n\t\t\tthis.getPixelOrigin();\r\n\t\treturn pixelOrigin.subtract(this._getMapPanePos());\r\n\t},\r\n\r\n\t_getNewPixelOrigin: function (center, zoom) {\r\n\t\tvar viewHalf = this.getSize()._divideBy(2);\r\n\t\treturn this.project(center, zoom)._subtract(viewHalf)._add(this._getMapPanePos())._round();\r\n\t},\r\n\r\n\t_latLngToNewLayerPoint: function (latlng, zoom, center) {\r\n\t\tvar topLeft = this._getNewPixelOrigin(center, zoom);\r\n\t\treturn this.project(latlng, zoom)._subtract(topLeft);\r\n\t},\r\n\r\n\t_latLngBoundsToNewLayerBounds: function (latLngBounds, zoom, center) {\r\n\t\tvar topLeft = this._getNewPixelOrigin(center, zoom);\r\n\t\treturn toBounds([\r\n\t\t\tthis.project(latLngBounds.getSouthWest(), zoom)._subtract(topLeft),\r\n\t\t\tthis.project(latLngBounds.getNorthWest(), zoom)._subtract(topLeft),\r\n\t\t\tthis.project(latLngBounds.getSouthEast(), zoom)._subtract(topLeft),\r\n\t\t\tthis.project(latLngBounds.getNorthEast(), zoom)._subtract(topLeft)\r\n\t\t]);\r\n\t},\r\n\r\n\t// layer point of the current center\r\n\t_getCenterLayerPoint: function () {\r\n\t\treturn this.containerPointToLayerPoint(this.getSize()._divideBy(2));\r\n\t},\r\n\r\n\t// offset of the specified place to the current center in pixels\r\n\t_getCenterOffset: function (latlng) {\r\n\t\treturn this.latLngToLayerPoint(latlng).subtract(this._getCenterLayerPoint());\r\n\t},\r\n\r\n\t// adjust center for view to get inside bounds\r\n\t_limitCenter: function (center, zoom, bounds) {\r\n\r\n\t\tif (!bounds) { return center; }\r\n\r\n\t\tvar centerPoint = this.project(center, zoom),\r\n\t\t    viewHalf = this.getSize().divideBy(2),\r\n\t\t    viewBounds = new Bounds(centerPoint.subtract(viewHalf), centerPoint.add(viewHalf)),\r\n\t\t    offset = this._getBoundsOffset(viewBounds, bounds, zoom);\r\n\r\n\t\t// If offset is less than a pixel, ignore.\r\n\t\t// This prevents unstable projections from getting into\r\n\t\t// an infinite loop of tiny offsets.\r\n\t\tif (Math.abs(offset.x) <= 1 && Math.abs(offset.y) <= 1) {\r\n\t\t\treturn center;\r\n\t\t}\r\n\r\n\t\treturn this.unproject(centerPoint.add(offset), zoom);\r\n\t},\r\n\r\n\t// adjust offset for view to get inside bounds\r\n\t_limitOffset: function (offset, bounds) {\r\n\t\tif (!bounds) { return offset; }\r\n\r\n\t\tvar viewBounds = this.getPixelBounds(),\r\n\t\t    newBounds = new Bounds(viewBounds.min.add(offset), viewBounds.max.add(offset));\r\n\r\n\t\treturn offset.add(this._getBoundsOffset(newBounds, bounds));\r\n\t},\r\n\r\n\t// returns offset needed for pxBounds to get inside maxBounds at a specified zoom\r\n\t_getBoundsOffset: function (pxBounds, maxBounds, zoom) {\r\n\t\tvar projectedMaxBounds = toBounds(\r\n\t\t        this.project(maxBounds.getNorthEast(), zoom),\r\n\t\t        this.project(maxBounds.getSouthWest(), zoom)\r\n\t\t    ),\r\n\t\t    minOffset = projectedMaxBounds.min.subtract(pxBounds.min),\r\n\t\t    maxOffset = projectedMaxBounds.max.subtract(pxBounds.max),\r\n\r\n\t\t    dx = this._rebound(minOffset.x, -maxOffset.x),\r\n\t\t    dy = this._rebound(minOffset.y, -maxOffset.y);\r\n\r\n\t\treturn new Point(dx, dy);\r\n\t},\r\n\r\n\t_rebound: function (left, right) {\r\n\t\treturn left + right > 0 ?\r\n\t\t\tMath.round(left - right) / 2 :\r\n\t\t\tMath.max(0, Math.ceil(left)) - Math.max(0, Math.floor(right));\r\n\t},\r\n\r\n\t_limitZoom: function (zoom) {\r\n\t\tvar min = this.getMinZoom(),\r\n\t\t    max = this.getMaxZoom(),\r\n\t\t    snap = Browser.any3d ? this.options.zoomSnap : 1;\r\n\t\tif (snap) {\r\n\t\t\tzoom = Math.round(zoom / snap) * snap;\r\n\t\t}\r\n\t\treturn Math.max(min, Math.min(max, zoom));\r\n\t},\r\n\r\n\t_onPanTransitionStep: function () {\r\n\t\tthis.fire('move');\r\n\t},\r\n\r\n\t_onPanTransitionEnd: function () {\r\n\t\tDomUtil.removeClass(this._mapPane, 'leaflet-pan-anim');\r\n\t\tthis.fire('moveend');\r\n\t},\r\n\r\n\t_tryAnimatedPan: function (center, options) {\r\n\t\t// difference between the new and current centers in pixels\r\n\t\tvar offset = this._getCenterOffset(center)._trunc();\r\n\r\n\t\t// don't animate too far unless animate: true specified in options\r\n\t\tif ((options && options.animate) !== true && !this.getSize().contains(offset)) { return false; }\r\n\r\n\t\tthis.panBy(offset, options);\r\n\r\n\t\treturn true;\r\n\t},\r\n\r\n\t_createAnimProxy: function () {\r\n\r\n\t\tvar proxy = this._proxy = DomUtil.create('div', 'leaflet-proxy leaflet-zoom-animated');\r\n\t\tthis._panes.mapPane.appendChild(proxy);\r\n\r\n\t\tthis.on('zoomanim', function (e) {\r\n\t\t\tvar prop = DomUtil.TRANSFORM,\r\n\t\t\t    transform = this._proxy.style[prop];\r\n\r\n\t\t\tDomUtil.setTransform(this._proxy, this.project(e.center, e.zoom), this.getZoomScale(e.zoom, 1));\r\n\r\n\t\t\t// workaround for case when transform is the same and so transitionend event is not fired\r\n\t\t\tif (transform === this._proxy.style[prop] && this._animatingZoom) {\r\n\t\t\t\tthis._onZoomTransitionEnd();\r\n\t\t\t}\r\n\t\t}, this);\r\n\r\n\t\tthis.on('load moveend', this._animMoveEnd, this);\r\n\r\n\t\tthis._on('unload', this._destroyAnimProxy, this);\r\n\t},\r\n\r\n\t_destroyAnimProxy: function () {\r\n\t\tDomUtil.remove(this._proxy);\r\n\t\tthis.off('load moveend', this._animMoveEnd, this);\r\n\t\tdelete this._proxy;\r\n\t},\r\n\r\n\t_animMoveEnd: function () {\r\n\t\tvar c = this.getCenter(),\r\n\t\t    z = this.getZoom();\r\n\t\tDomUtil.setTransform(this._proxy, this.project(c, z), this.getZoomScale(z, 1));\r\n\t},\r\n\r\n\t_catchTransitionEnd: function (e) {\r\n\t\tif (this._animatingZoom && e.propertyName.indexOf('transform') >= 0) {\r\n\t\t\tthis._onZoomTransitionEnd();\r\n\t\t}\r\n\t},\r\n\r\n\t_nothingToAnimate: function () {\r\n\t\treturn !this._container.getElementsByClassName('leaflet-zoom-animated').length;\r\n\t},\r\n\r\n\t_tryAnimatedZoom: function (center, zoom, options) {\r\n\r\n\t\tif (this._animatingZoom) { return true; }\r\n\r\n\t\toptions = options || {};\r\n\r\n\t\t// don't animate if disabled, not supported or zoom difference is too large\r\n\t\tif (!this._zoomAnimated || options.animate === false || this._nothingToAnimate() ||\r\n\t\t        Math.abs(zoom - this._zoom) > this.options.zoomAnimationThreshold) { return false; }\r\n\r\n\t\t// offset is the pixel coords of the zoom origin relative to the current center\r\n\t\tvar scale = this.getZoomScale(zoom),\r\n\t\t    offset = this._getCenterOffset(center)._divideBy(1 - 1 / scale);\r\n\r\n\t\t// don't animate if the zoom origin isn't within one screen from the current center, unless forced\r\n\t\tif (options.animate !== true && !this.getSize().contains(offset)) { return false; }\r\n\r\n\t\tUtil.requestAnimFrame(function () {\r\n\t\t\tthis\r\n\t\t\t    ._moveStart(true, options.noMoveStart || false)\r\n\t\t\t    ._animateZoom(center, zoom, true);\r\n\t\t}, this);\r\n\r\n\t\treturn true;\r\n\t},\r\n\r\n\t_animateZoom: function (center, zoom, startAnim, noUpdate) {\r\n\t\tif (!this._mapPane) { return; }\r\n\r\n\t\tif (startAnim) {\r\n\t\t\tthis._animatingZoom = true;\r\n\r\n\t\t\t// remember what center/zoom to set after animation\r\n\t\t\tthis._animateToCenter = center;\r\n\t\t\tthis._animateToZoom = zoom;\r\n\r\n\t\t\tDomUtil.addClass(this._mapPane, 'leaflet-zoom-anim');\r\n\t\t}\r\n\r\n\t\t// @section Other Events\r\n\t\t// @event zoomanim: ZoomAnimEvent\r\n\t\t// Fired at least once per zoom animation. For continuous zoom, like pinch zooming, fired once per frame during zoom.\r\n\t\tthis.fire('zoomanim', {\r\n\t\t\tcenter: center,\r\n\t\t\tzoom: zoom,\r\n\t\t\tnoUpdate: noUpdate\r\n\t\t});\r\n\r\n\t\tif (!this._tempFireZoomEvent) {\r\n\t\t\tthis._tempFireZoomEvent = this._zoom !== this._animateToZoom;\r\n\t\t}\r\n\r\n\t\tthis._move(this._animateToCenter, this._animateToZoom, undefined, true);\r\n\r\n\t\t// Work around webkit not firing 'transitionend', see https://github.com/Leaflet/Leaflet/issues/3689, 2693\r\n\t\tsetTimeout(Util.bind(this._onZoomTransitionEnd, this), 250);\r\n\t},\r\n\r\n\t_onZoomTransitionEnd: function () {\r\n\t\tif (!this._animatingZoom) { return; }\r\n\r\n\t\tif (this._mapPane) {\r\n\t\t\tDomUtil.removeClass(this._mapPane, 'leaflet-zoom-anim');\r\n\t\t}\r\n\r\n\t\tthis._animatingZoom = false;\r\n\r\n\t\tthis._move(this._animateToCenter, this._animateToZoom, undefined, true);\r\n\r\n\t\tif (this._tempFireZoomEvent) {\r\n\t\t\tthis.fire('zoom');\r\n\t\t}\r\n\t\tdelete this._tempFireZoomEvent;\r\n\r\n\t\tthis.fire('move');\r\n\r\n\t\tthis._moveEnd(true);\r\n\t}\r\n});\r\n\r\n// @section\r\n\r\n// @factory L.map(id: String, options?: Map options)\r\n// Instantiates a map object given the DOM ID of a `<div>` element\r\n// and optionally an object literal with `Map options`.\r\n//\r\n// @alternative\r\n// @factory L.map(el: HTMLElement, options?: Map options)\r\n// Instantiates a map object given an instance of a `<div>` HTML element\r\n// and optionally an object literal with `Map options`.\r\nexport function createMap(id, options) {\r\n\treturn new Map(id, options);\r\n}\r\n", "\r\nimport {Class} from '../core/Class';\r\nimport {Map} from '../map/Map';\r\nimport * as Util from '../core/Util';\r\nimport * as DomUtil from '../dom/DomUtil';\r\n\r\n/*\r\n * @class Control\r\n * @aka L.Control\r\n * @inherits Class\r\n *\r\n * L.Control is a base class for implementing map controls. Handles positioning.\r\n * All other controls extend from this class.\r\n */\r\n\r\nexport var Control = Class.extend({\r\n\t// @section\r\n\t// @aka Control Options\r\n\toptions: {\r\n\t\t// @option position: String = 'topright'\r\n\t\t// The position of the control (one of the map corners). Possible values are `'topleft'`,\r\n\t\t// `'topright'`, `'bottomleft'` or `'bottomright'`\r\n\t\tposition: 'topright'\r\n\t},\r\n\r\n\tinitialize: function (options) {\r\n\t\tUtil.setOptions(this, options);\r\n\t},\r\n\r\n\t/* @section\r\n\t * Classes extending L.Control will inherit the following methods:\r\n\t *\r\n\t * @method getPosition: string\r\n\t * Returns the position of the control.\r\n\t */\r\n\tgetPosition: function () {\r\n\t\treturn this.options.position;\r\n\t},\r\n\r\n\t// @method setPosition(position: string): this\r\n\t// Sets the position of the control.\r\n\tsetPosition: function (position) {\r\n\t\tvar map = this._map;\r\n\r\n\t\tif (map) {\r\n\t\t\tmap.removeControl(this);\r\n\t\t}\r\n\r\n\t\tthis.options.position = position;\r\n\r\n\t\tif (map) {\r\n\t\t\tmap.addControl(this);\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method getContainer: HTMLElement\r\n\t// Returns the HTMLElement that contains the control.\r\n\tgetContainer: function () {\r\n\t\treturn this._container;\r\n\t},\r\n\r\n\t// @method addTo(map: Map): this\r\n\t// Adds the control to the given map.\r\n\taddTo: function (map) {\r\n\t\tthis.remove();\r\n\t\tthis._map = map;\r\n\r\n\t\tvar container = this._container = this.onAdd(map),\r\n\t\t    pos = this.getPosition(),\r\n\t\t    corner = map._controlCorners[pos];\r\n\r\n\t\tDomUtil.addClass(container, 'leaflet-control');\r\n\r\n\t\tif (pos.indexOf('bottom') !== -1) {\r\n\t\t\tcorner.insertBefore(container, corner.firstChild);\r\n\t\t} else {\r\n\t\t\tcorner.appendChild(container);\r\n\t\t}\r\n\r\n\t\tthis._map.on('unload', this.remove, this);\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method remove: this\r\n\t// Removes the control from the map it is currently active on.\r\n\tremove: function () {\r\n\t\tif (!this._map) {\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\tDomUtil.remove(this._container);\r\n\r\n\t\tif (this.onRemove) {\r\n\t\t\tthis.onRemove(this._map);\r\n\t\t}\r\n\r\n\t\tthis._map.off('unload', this.remove, this);\r\n\t\tthis._map = null;\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t_refocusOnMap: function (e) {\r\n\t\t// if map exists and event is not a keyboard event\r\n\t\tif (this._map && e && e.screenX > 0 && e.screenY > 0) {\r\n\t\t\tthis._map.getContainer().focus();\r\n\t\t}\r\n\t}\r\n});\r\n\r\nexport var control = function (options) {\r\n\treturn new Control(options);\r\n};\r\n\r\n/* @section Extension methods\r\n * @uninheritable\r\n *\r\n * Every control should extend from `L.Control` and (re-)implement the following methods.\r\n *\r\n * @method onAdd(map: Map): HTMLElement\r\n * Should return the container DOM element for the control and add listeners on relevant map events. Called on [`control.addTo(map)`](#control-addTo).\r\n *\r\n * @method onRemove(map: Map)\r\n * Optional method. Should contain all clean up code that removes the listeners previously added in [`onAdd`](#control-onadd). Called on [`control.remove()`](#control-remove).\r\n */\r\n\r\n/* @namespace Map\r\n * @section Methods for Layers and Controls\r\n */\r\nMap.include({\r\n\t// @method addControl(control: Control): this\r\n\t// Adds the given control to the map\r\n\taddControl: function (control) {\r\n\t\tcontrol.addTo(this);\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method removeControl(control: Control): this\r\n\t// Removes the given control from the map\r\n\tremoveControl: function (control) {\r\n\t\tcontrol.remove();\r\n\t\treturn this;\r\n\t},\r\n\r\n\t_initControlPos: function () {\r\n\t\tvar corners = this._controlCorners = {},\r\n\t\t    l = 'leaflet-',\r\n\t\t    container = this._controlContainer =\r\n\t\t            DomUtil.create('div', l + 'control-container', this._container);\r\n\r\n\t\tfunction createCorner(vSide, hSide) {\r\n\t\t\tvar className = l + vSide + ' ' + l + hSide;\r\n\r\n\t\t\tcorners[vSide + hSide] = DomUtil.create('div', className, container);\r\n\t\t}\r\n\r\n\t\tcreateCorner('top', 'left');\r\n\t\tcreateCorner('top', 'right');\r\n\t\tcreateCorner('bottom', 'left');\r\n\t\tcreateCorner('bottom', 'right');\r\n\t},\r\n\r\n\t_clearControlPos: function () {\r\n\t\tfor (var i in this._controlCorners) {\r\n\t\t\tDomUtil.remove(this._controlCorners[i]);\r\n\t\t}\r\n\t\tDomUtil.remove(this._controlContainer);\r\n\t\tdelete this._controlCorners;\r\n\t\tdelete this._controlContainer;\r\n\t}\r\n});\r\n", "\r\nimport {Control} from './Control';\r\nimport * as Util from '../core/Util';\r\nimport * as DomEvent from '../dom/DomEvent';\r\nimport * as DomUtil from '../dom/DomUtil';\r\n\r\n/*\r\n * @class Control.Layers\r\n * @aka L.Control.Layers\r\n * @inherits Control\r\n *\r\n * The layers control gives users the ability to switch between different base layers and switch overlays on/off (check out the [detailed example](https://leafletjs.com/examples/layers-control/)). Extends `Control`.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * var baseLayers = {\r\n * \t\"Mapbox\": mapbox,\r\n * \t\"OpenStreetMap\": osm\r\n * };\r\n *\r\n * var overlays = {\r\n * \t\"Marker\": marker,\r\n * \t\"Roads\": roadsLayer\r\n * };\r\n *\r\n * L.control.layers(baseLayers, overlays).addTo(map);\r\n * ```\r\n *\r\n * The `baseLayers` and `overlays` parameters are object literals with layer names as keys and `Layer` objects as values:\r\n *\r\n * ```js\r\n * {\r\n *     \"<someName1>\": layer1,\r\n *     \"<someName2>\": layer2\r\n * }\r\n * ```\r\n *\r\n * The layer names can contain HTML, which allows you to add additional styling to the items:\r\n *\r\n * ```js\r\n * {\"<img src='my-layer-icon' /> <span class='my-layer-item'>My Layer</span>\": myLayer}\r\n * ```\r\n */\r\n\r\nexport var Layers = Control.extend({\r\n\t// @section\r\n\t// @aka Control.Layers options\r\n\toptions: {\r\n\t\t// @option collapsed: Boolean = true\r\n\t\t// If `true`, the control will be collapsed into an icon and expanded on mouse hover, touch, or keyboard activation.\r\n\t\tcollapsed: true,\r\n\t\tposition: 'topright',\r\n\r\n\t\t// @option autoZIndex: Boolean = true\r\n\t\t// If `true`, the control will assign zIndexes in increasing order to all of its layers so that the order is preserved when switching them on/off.\r\n\t\tautoZIndex: true,\r\n\r\n\t\t// @option hideSingleBase: Boolean = false\r\n\t\t// If `true`, the base layers in the control will be hidden when there is only one.\r\n\t\thideSingleBase: false,\r\n\r\n\t\t// @option sortLayers: Boolean = false\r\n\t\t// Whether to sort the layers. When `false`, layers will keep the order\r\n\t\t// in which they were added to the control.\r\n\t\tsortLayers: false,\r\n\r\n\t\t// @option sortFunction: Function = *\r\n\t\t// A [compare function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/sort)\r\n\t\t// that will be used for sorting the layers, when `sortLayers` is `true`.\r\n\t\t// The function receives both the `L.Layer` instances and their names, as in\r\n\t\t// `sortFunction(layerA, layerB, nameA, nameB)`.\r\n\t\t// By default, it sorts layers alphabetically by their name.\r\n\t\tsortFunction: function (layerA, layerB, nameA, nameB) {\r\n\t\t\treturn nameA < nameB ? -1 : (nameB < nameA ? 1 : 0);\r\n\t\t}\r\n\t},\r\n\r\n\tinitialize: function (baseLayers, overlays, options) {\r\n\t\tUtil.setOptions(this, options);\r\n\r\n\t\tthis._layerControlInputs = [];\r\n\t\tthis._layers = [];\r\n\t\tthis._lastZIndex = 0;\r\n\t\tthis._handlingClick = false;\r\n\t\tthis._preventClick = false;\r\n\r\n\t\tfor (var i in baseLayers) {\r\n\t\t\tthis._addLayer(baseLayers[i], i);\r\n\t\t}\r\n\r\n\t\tfor (i in overlays) {\r\n\t\t\tthis._addLayer(overlays[i], i, true);\r\n\t\t}\r\n\t},\r\n\r\n\tonAdd: function (map) {\r\n\t\tthis._initLayout();\r\n\t\tthis._update();\r\n\r\n\t\tthis._map = map;\r\n\t\tmap.on('zoomend', this._checkDisabledLayers, this);\r\n\r\n\t\tfor (var i = 0; i < this._layers.length; i++) {\r\n\t\t\tthis._layers[i].layer.on('add remove', this._onLayerChange, this);\r\n\t\t}\r\n\r\n\t\treturn this._container;\r\n\t},\r\n\r\n\taddTo: function (map) {\r\n\t\tControl.prototype.addTo.call(this, map);\r\n\t\t// Trigger expand after Layers Control has been inserted into DOM so that is now has an actual height.\r\n\t\treturn this._expandIfNotCollapsed();\r\n\t},\r\n\r\n\tonRemove: function () {\r\n\t\tthis._map.off('zoomend', this._checkDisabledLayers, this);\r\n\r\n\t\tfor (var i = 0; i < this._layers.length; i++) {\r\n\t\t\tthis._layers[i].layer.off('add remove', this._onLayerChange, this);\r\n\t\t}\r\n\t},\r\n\r\n\t// @method addBaseLayer(layer: Layer, name: String): this\r\n\t// Adds a base layer (radio button entry) with the given name to the control.\r\n\taddBaseLayer: function (layer, name) {\r\n\t\tthis._addLayer(layer, name);\r\n\t\treturn (this._map) ? this._update() : this;\r\n\t},\r\n\r\n\t// @method addOverlay(layer: Layer, name: String): this\r\n\t// Adds an overlay (checkbox entry) with the given name to the control.\r\n\taddOverlay: function (layer, name) {\r\n\t\tthis._addLayer(layer, name, true);\r\n\t\treturn (this._map) ? this._update() : this;\r\n\t},\r\n\r\n\t// @method removeLayer(layer: Layer): this\r\n\t// Remove the given layer from the control.\r\n\tremoveLayer: function (layer) {\r\n\t\tlayer.off('add remove', this._onLayerChange, this);\r\n\r\n\t\tvar obj = this._getLayer(Util.stamp(layer));\r\n\t\tif (obj) {\r\n\t\t\tthis._layers.splice(this._layers.indexOf(obj), 1);\r\n\t\t}\r\n\t\treturn (this._map) ? this._update() : this;\r\n\t},\r\n\r\n\t// @method expand(): this\r\n\t// Expand the control container if collapsed.\r\n\texpand: function () {\r\n\t\tDomUtil.addClass(this._container, 'leaflet-control-layers-expanded');\r\n\t\tthis._section.style.height = null;\r\n\t\tvar acceptableHeight = this._map.getSize().y - (this._container.offsetTop + 50);\r\n\t\tif (acceptableHeight < this._section.clientHeight) {\r\n\t\t\tDomUtil.addClass(this._section, 'leaflet-control-layers-scrollbar');\r\n\t\t\tthis._section.style.height = acceptableHeight + 'px';\r\n\t\t} else {\r\n\t\t\tDomUtil.removeClass(this._section, 'leaflet-control-layers-scrollbar');\r\n\t\t}\r\n\t\tthis._checkDisabledLayers();\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method collapse(): this\r\n\t// Collapse the control container if expanded.\r\n\tcollapse: function () {\r\n\t\tDomUtil.removeClass(this._container, 'leaflet-control-layers-expanded');\r\n\t\treturn this;\r\n\t},\r\n\r\n\t_initLayout: function () {\r\n\t\tvar className = 'leaflet-control-layers',\r\n\t\t    container = this._container = DomUtil.create('div', className),\r\n\t\t    collapsed = this.options.collapsed;\r\n\r\n\t\t// makes this work on IE touch devices by stopping it from firing a mouseout event when the touch is released\r\n\t\tcontainer.setAttribute('aria-haspopup', true);\r\n\r\n\t\tDomEvent.disableClickPropagation(container);\r\n\t\tDomEvent.disableScrollPropagation(container);\r\n\r\n\t\tvar section = this._section = DomUtil.create('section', className + '-list');\r\n\r\n\t\tif (collapsed) {\r\n\t\t\tthis._map.on('click', this.collapse, this);\r\n\r\n\t\t\tDomEvent.on(container, {\r\n\t\t\t\tmouseenter: this._expandSafely,\r\n\t\t\t\tmouseleave: this.collapse\r\n\t\t\t}, this);\r\n\t\t}\r\n\r\n\t\tvar link = this._layersLink = DomUtil.create('a', className + '-toggle', container);\r\n\t\tlink.href = '#';\r\n\t\tlink.title = 'Layers';\r\n\t\tlink.setAttribute('role', 'button');\r\n\r\n\t\tDomEvent.on(link, {\r\n\t\t\tkeydown: function (e) {\r\n\t\t\t\tif (e.keyCode === 13) {\r\n\t\t\t\t\tthis._expandSafely();\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t// Certain screen readers intercept the key event and instead send a click event\r\n\t\t\tclick: function (e) {\r\n\t\t\t\tDomEvent.preventDefault(e);\r\n\t\t\t\tthis._expandSafely();\r\n\t\t\t}\r\n\t\t}, this);\r\n\r\n\t\tif (!collapsed) {\r\n\t\t\tthis.expand();\r\n\t\t}\r\n\r\n\t\tthis._baseLayersList = DomUtil.create('div', className + '-base', section);\r\n\t\tthis._separator = DomUtil.create('div', className + '-separator', section);\r\n\t\tthis._overlaysList = DomUtil.create('div', className + '-overlays', section);\r\n\r\n\t\tcontainer.appendChild(section);\r\n\t},\r\n\r\n\t_getLayer: function (id) {\r\n\t\tfor (var i = 0; i < this._layers.length; i++) {\r\n\r\n\t\t\tif (this._layers[i] && Util.stamp(this._layers[i].layer) === id) {\r\n\t\t\t\treturn this._layers[i];\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t_addLayer: function (layer, name, overlay) {\r\n\t\tif (this._map) {\r\n\t\t\tlayer.on('add remove', this._onLayerChange, this);\r\n\t\t}\r\n\r\n\t\tthis._layers.push({\r\n\t\t\tlayer: layer,\r\n\t\t\tname: name,\r\n\t\t\toverlay: overlay\r\n\t\t});\r\n\r\n\t\tif (this.options.sortLayers) {\r\n\t\t\tthis._layers.sort(Util.bind(function (a, b) {\r\n\t\t\t\treturn this.options.sortFunction(a.layer, b.layer, a.name, b.name);\r\n\t\t\t}, this));\r\n\t\t}\r\n\r\n\t\tif (this.options.autoZIndex && layer.setZIndex) {\r\n\t\t\tthis._lastZIndex++;\r\n\t\t\tlayer.setZIndex(this._lastZIndex);\r\n\t\t}\r\n\r\n\t\tthis._expandIfNotCollapsed();\r\n\t},\r\n\r\n\t_update: function () {\r\n\t\tif (!this._container) { return this; }\r\n\r\n\t\tDomUtil.empty(this._baseLayersList);\r\n\t\tDomUtil.empty(this._overlaysList);\r\n\r\n\t\tthis._layerControlInputs = [];\r\n\t\tvar baseLayersPresent, overlaysPresent, i, obj, baseLayersCount = 0;\r\n\r\n\t\tfor (i = 0; i < this._layers.length; i++) {\r\n\t\t\tobj = this._layers[i];\r\n\t\t\tthis._addItem(obj);\r\n\t\t\toverlaysPresent = overlaysPresent || obj.overlay;\r\n\t\t\tbaseLayersPresent = baseLayersPresent || !obj.overlay;\r\n\t\t\tbaseLayersCount += !obj.overlay ? 1 : 0;\r\n\t\t}\r\n\r\n\t\t// Hide base layers section if there's only one layer.\r\n\t\tif (this.options.hideSingleBase) {\r\n\t\t\tbaseLayersPresent = baseLayersPresent && baseLayersCount > 1;\r\n\t\t\tthis._baseLayersList.style.display = baseLayersPresent ? '' : 'none';\r\n\t\t}\r\n\r\n\t\tthis._separator.style.display = overlaysPresent && baseLayersPresent ? '' : 'none';\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t_onLayerChange: function (e) {\r\n\t\tif (!this._handlingClick) {\r\n\t\t\tthis._update();\r\n\t\t}\r\n\r\n\t\tvar obj = this._getLayer(Util.stamp(e.target));\r\n\r\n\t\t// @namespace Map\r\n\t\t// @section Layer events\r\n\t\t// @event baselayerchange: LayersControlEvent\r\n\t\t// Fired when the base layer is changed through the [layers control](#control-layers).\r\n\t\t// @event overlayadd: LayersControlEvent\r\n\t\t// Fired when an overlay is selected through the [layers control](#control-layers).\r\n\t\t// @event overlayremove: LayersControlEvent\r\n\t\t// Fired when an overlay is deselected through the [layers control](#control-layers).\r\n\t\t// @namespace Control.Layers\r\n\t\tvar type = obj.overlay ?\r\n\t\t\t(e.type === 'add' ? 'overlayadd' : 'overlayremove') :\r\n\t\t\t(e.type === 'add' ? 'baselayerchange' : null);\r\n\r\n\t\tif (type) {\r\n\t\t\tthis._map.fire(type, obj);\r\n\t\t}\r\n\t},\r\n\r\n\t// IE7 bugs out if you create a radio dynamically, so you have to do it this hacky way (see https://stackoverflow.com/a/119079)\r\n\t_createRadioElement: function (name, checked) {\r\n\r\n\t\tvar radioHtml = '<input type=\"radio\" class=\"leaflet-control-layers-selector\" name=\"' +\r\n\t\t\t\tname + '\"' + (checked ? ' checked=\"checked\"' : '') + '/>';\r\n\r\n\t\tvar radioFragment = document.createElement('div');\r\n\t\tradioFragment.innerHTML = radioHtml;\r\n\r\n\t\treturn radioFragment.firstChild;\r\n\t},\r\n\r\n\t_addItem: function (obj) {\r\n\t\tvar label = document.createElement('label'),\r\n\t\t    checked = this._map.hasLayer(obj.layer),\r\n\t\t    input;\r\n\r\n\t\tif (obj.overlay) {\r\n\t\t\tinput = document.createElement('input');\r\n\t\t\tinput.type = 'checkbox';\r\n\t\t\tinput.className = 'leaflet-control-layers-selector';\r\n\t\t\tinput.defaultChecked = checked;\r\n\t\t} else {\r\n\t\t\tinput = this._createRadioElement('leaflet-base-layers_' + Util.stamp(this), checked);\r\n\t\t}\r\n\r\n\t\tthis._layerControlInputs.push(input);\r\n\t\tinput.layerId = Util.stamp(obj.layer);\r\n\r\n\t\tDomEvent.on(input, 'click', this._onInputClick, this);\r\n\r\n\t\tvar name = document.createElement('span');\r\n\t\tname.innerHTML = ' ' + obj.name;\r\n\r\n\t\t// Helps from preventing layer control flicker when checkboxes are disabled\r\n\t\t// https://github.com/Leaflet/Leaflet/issues/2771\r\n\t\tvar holder = document.createElement('span');\r\n\r\n\t\tlabel.appendChild(holder);\r\n\t\tholder.appendChild(input);\r\n\t\tholder.appendChild(name);\r\n\r\n\t\tvar container = obj.overlay ? this._overlaysList : this._baseLayersList;\r\n\t\tcontainer.appendChild(label);\r\n\r\n\t\tthis._checkDisabledLayers();\r\n\t\treturn label;\r\n\t},\r\n\r\n\t_onInputClick: function () {\r\n\t\t// expanding the control on mobile with a click can cause adding a layer - we don't want this\r\n\t\tif (this._preventClick) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar inputs = this._layerControlInputs,\r\n\t\t    input, layer;\r\n\t\tvar addedLayers = [],\r\n\t\t    removedLayers = [];\r\n\r\n\t\tthis._handlingClick = true;\r\n\r\n\t\tfor (var i = inputs.length - 1; i >= 0; i--) {\r\n\t\t\tinput = inputs[i];\r\n\t\t\tlayer = this._getLayer(input.layerId).layer;\r\n\r\n\t\t\tif (input.checked) {\r\n\t\t\t\taddedLayers.push(layer);\r\n\t\t\t} else if (!input.checked) {\r\n\t\t\t\tremovedLayers.push(layer);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Bugfix issue 2318: Should remove all old layers before readding new ones\r\n\t\tfor (i = 0; i < removedLayers.length; i++) {\r\n\t\t\tif (this._map.hasLayer(removedLayers[i])) {\r\n\t\t\t\tthis._map.removeLayer(removedLayers[i]);\r\n\t\t\t}\r\n\t\t}\r\n\t\tfor (i = 0; i < addedLayers.length; i++) {\r\n\t\t\tif (!this._map.hasLayer(addedLayers[i])) {\r\n\t\t\t\tthis._map.addLayer(addedLayers[i]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis._handlingClick = false;\r\n\r\n\t\tthis._refocusOnMap();\r\n\t},\r\n\r\n\t_checkDisabledLayers: function () {\r\n\t\tvar inputs = this._layerControlInputs,\r\n\t\t    input,\r\n\t\t    layer,\r\n\t\t    zoom = this._map.getZoom();\r\n\r\n\t\tfor (var i = inputs.length - 1; i >= 0; i--) {\r\n\t\t\tinput = inputs[i];\r\n\t\t\tlayer = this._getLayer(input.layerId).layer;\r\n\t\t\tinput.disabled = (layer.options.minZoom !== undefined && zoom < layer.options.minZoom) ||\r\n\t\t\t                 (layer.options.maxZoom !== undefined && zoom > layer.options.maxZoom);\r\n\r\n\t\t}\r\n\t},\r\n\r\n\t_expandIfNotCollapsed: function () {\r\n\t\tif (this._map && !this.options.collapsed) {\r\n\t\t\tthis.expand();\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t_expandSafely: function () {\r\n\t\tvar section = this._section;\r\n\t\tthis._preventClick = true;\r\n\t\tDomEvent.on(section, 'click', DomEvent.preventDefault);\r\n\t\tthis.expand();\r\n\t\tvar that = this;\r\n\t\tsetTimeout(function () {\r\n\t\t\tDomEvent.off(section, 'click', DomEvent.preventDefault);\r\n\t\t\tthat._preventClick = false;\r\n\t\t});\r\n\t}\r\n\r\n});\r\n\r\n\r\n// @factory L.control.layers(baselayers?: Object, overlays?: Object, options?: Control.Layers options)\r\n// Creates a layers control with the given layers. Base layers will be switched with radio buttons, while overlays will be switched with checkboxes. Note that all base layers should be passed in the base layers object, but only one should be added to the map during map instantiation.\r\nexport var layers = function (baseLayers, overlays, options) {\r\n\treturn new Layers(baseLayers, overlays, options);\r\n};\r\n", "\r\nimport {Control} from './Control';\r\nimport {Map} from '../map/Map';\r\nimport * as DomUtil from '../dom/DomUtil';\r\nimport * as DomEvent from '../dom/DomEvent';\r\n\r\n/*\r\n * @class Control.Zoom\r\n * @aka L.Control.Zoom\r\n * @inherits Control\r\n *\r\n * A basic zoom control with two buttons (zoom in and zoom out). It is put on the map by default unless you set its [`zoomControl` option](#map-zoomcontrol) to `false`. Extends `Control`.\r\n */\r\n\r\nexport var Zoom = Control.extend({\r\n\t// @section\r\n\t// @aka Control.Zoom options\r\n\toptions: {\r\n\t\tposition: 'topleft',\r\n\r\n\t\t// @option zoomInText: String = '<span aria-hidden=\"true\">+</span>'\r\n\t\t// The text set on the 'zoom in' button.\r\n\t\tzoomInText: '<span aria-hidden=\"true\">+</span>',\r\n\r\n\t\t// @option zoomInTitle: String = 'Zoom in'\r\n\t\t// The title set on the 'zoom in' button.\r\n\t\tzoomInTitle: 'Zoom in',\r\n\r\n\t\t// @option zoomOutText: String = '<span aria-hidden=\"true\">&#x2212;</span>'\r\n\t\t// The text set on the 'zoom out' button.\r\n\t\tzoomOutText: '<span aria-hidden=\"true\">&#x2212;</span>',\r\n\r\n\t\t// @option zoomOutTitle: String = 'Zoom out'\r\n\t\t// The title set on the 'zoom out' button.\r\n\t\tzoomOutTitle: 'Zoom out'\r\n\t},\r\n\r\n\tonAdd: function (map) {\r\n\t\tvar zoomName = 'leaflet-control-zoom',\r\n\t\t    container = DomUtil.create('div', zoomName + ' leaflet-bar'),\r\n\t\t    options = this.options;\r\n\r\n\t\tthis._zoomInButton  = this._createButton(options.zoomInText, options.zoomInTitle,\r\n\t\t        zoomName + '-in',  container, this._zoomIn);\r\n\t\tthis._zoomOutButton = this._createButton(options.zoomOutText, options.zoomOutTitle,\r\n\t\t        zoomName + '-out', container, this._zoomOut);\r\n\r\n\t\tthis._updateDisabled();\r\n\t\tmap.on('zoomend zoomlevelschange', this._updateDisabled, this);\r\n\r\n\t\treturn container;\r\n\t},\r\n\r\n\tonRemove: function (map) {\r\n\t\tmap.off('zoomend zoomlevelschange', this._updateDisabled, this);\r\n\t},\r\n\r\n\tdisable: function () {\r\n\t\tthis._disabled = true;\r\n\t\tthis._updateDisabled();\r\n\t\treturn this;\r\n\t},\r\n\r\n\tenable: function () {\r\n\t\tthis._disabled = false;\r\n\t\tthis._updateDisabled();\r\n\t\treturn this;\r\n\t},\r\n\r\n\t_zoomIn: function (e) {\r\n\t\tif (!this._disabled && this._map._zoom < this._map.getMaxZoom()) {\r\n\t\t\tthis._map.zoomIn(this._map.options.zoomDelta * (e.shiftKey ? 3 : 1));\r\n\t\t}\r\n\t},\r\n\r\n\t_zoomOut: function (e) {\r\n\t\tif (!this._disabled && this._map._zoom > this._map.getMinZoom()) {\r\n\t\t\tthis._map.zoomOut(this._map.options.zoomDelta * (e.shiftKey ? 3 : 1));\r\n\t\t}\r\n\t},\r\n\r\n\t_createButton: function (html, title, className, container, fn) {\r\n\t\tvar link = DomUtil.create('a', className, container);\r\n\t\tlink.innerHTML = html;\r\n\t\tlink.href = '#';\r\n\t\tlink.title = title;\r\n\r\n\t\t/*\r\n\t\t * Will force screen readers like VoiceOver to read this as \"Zoom in - button\"\r\n\t\t */\r\n\t\tlink.setAttribute('role', 'button');\r\n\t\tlink.setAttribute('aria-label', title);\r\n\r\n\t\tDomEvent.disableClickPropagation(link);\r\n\t\tDomEvent.on(link, 'click', DomEvent.stop);\r\n\t\tDomEvent.on(link, 'click', fn, this);\r\n\t\tDomEvent.on(link, 'click', this._refocusOnMap, this);\r\n\r\n\t\treturn link;\r\n\t},\r\n\r\n\t_updateDisabled: function () {\r\n\t\tvar map = this._map,\r\n\t\t    className = 'leaflet-disabled';\r\n\r\n\t\tDomUtil.removeClass(this._zoomInButton, className);\r\n\t\tDomUtil.removeClass(this._zoomOutButton, className);\r\n\t\tthis._zoomInButton.setAttribute('aria-disabled', 'false');\r\n\t\tthis._zoomOutButton.setAttribute('aria-disabled', 'false');\r\n\r\n\t\tif (this._disabled || map._zoom === map.getMinZoom()) {\r\n\t\t\tDomUtil.addClass(this._zoomOutButton, className);\r\n\t\t\tthis._zoomOutButton.setAttribute('aria-disabled', 'true');\r\n\t\t}\r\n\t\tif (this._disabled || map._zoom === map.getMaxZoom()) {\r\n\t\t\tDomUtil.addClass(this._zoomInButton, className);\r\n\t\t\tthis._zoomInButton.setAttribute('aria-disabled', 'true');\r\n\t\t}\r\n\t}\r\n});\r\n\r\n// @namespace Map\r\n// @section Control options\r\n// @option zoomControl: Boolean = true\r\n// Whether a [zoom control](#control-zoom) is added to the map by default.\r\nMap.mergeOptions({\r\n\tzoomControl: true\r\n});\r\n\r\nMap.addInitHook(function () {\r\n\tif (this.options.zoomControl) {\r\n\t\t// @section Controls\r\n\t\t// @property zoomControl: Control.Zoom\r\n\t\t// The default zoom control (only available if the\r\n\t\t// [`zoomControl` option](#map-zoomcontrol) was `true` when creating the map).\r\n\t\tthis.zoomControl = new Zoom();\r\n\t\tthis.addControl(this.zoomControl);\r\n\t}\r\n});\r\n\r\n// @namespace Control.Zoom\r\n// @factory L.control.zoom(options: Control.Zoom options)\r\n// Creates a zoom control\r\nexport var zoom = function (options) {\r\n\treturn new Zoom(options);\r\n};\r\n", "\nimport {Control} from './Control';\nimport * as DomUtil from '../dom/DomUtil';\n\n/*\n * @class Control.Scale\n * @aka L.Control.Scale\n * @inherits Control\n *\n * A simple scale control that shows the scale of the current center of screen in metric (m/km) and imperial (mi/ft) systems. Extends `Control`.\n *\n * @example\n *\n * ```js\n * L.control.scale().addTo(map);\n * ```\n */\n\nexport var Scale = Control.extend({\n\t// @section\n\t// @aka Control.Scale options\n\toptions: {\n\t\tposition: 'bottomleft',\n\n\t\t// @option maxWidth: Number = 100\n\t\t// Maximum width of the control in pixels. The width is set dynamically to show round values (e.g. 100, 200, 500).\n\t\tmaxWidth: 100,\n\n\t\t// @option metric: Boolean = True\n\t\t// Whether to show the metric scale line (m/km).\n\t\tmetric: true,\n\n\t\t// @option imperial: Boolean = True\n\t\t// Whether to show the imperial scale line (mi/ft).\n\t\timperial: true\n\n\t\t// @option updateWhenIdle: Boolean = false\n\t\t// If `true`, the control is updated on [`moveend`](#map-moveend), otherwise it's always up-to-date (updated on [`move`](#map-move)).\n\t},\n\n\tonAdd: function (map) {\n\t\tvar className = 'leaflet-control-scale',\n\t\t    container = DomUtil.create('div', className),\n\t\t    options = this.options;\n\n\t\tthis._addScales(options, className + '-line', container);\n\n\t\tmap.on(options.updateWhenIdle ? 'moveend' : 'move', this._update, this);\n\t\tmap.whenReady(this._update, this);\n\n\t\treturn container;\n\t},\n\n\tonRemove: function (map) {\n\t\tmap.off(this.options.updateWhenIdle ? 'moveend' : 'move', this._update, this);\n\t},\n\n\t_addScales: function (options, className, container) {\n\t\tif (options.metric) {\n\t\t\tthis._mScale = DomUtil.create('div', className, container);\n\t\t}\n\t\tif (options.imperial) {\n\t\t\tthis._iScale = DomUtil.create('div', className, container);\n\t\t}\n\t},\n\n\t_update: function () {\n\t\tvar map = this._map,\n\t\t    y = map.getSize().y / 2;\n\n\t\tvar maxMeters = map.distance(\n\t\t\tmap.containerPointToLatLng([0, y]),\n\t\t\tmap.containerPointToLatLng([this.options.maxWidth, y]));\n\n\t\tthis._updateScales(maxMeters);\n\t},\n\n\t_updateScales: function (maxMeters) {\n\t\tif (this.options.metric && maxMeters) {\n\t\t\tthis._updateMetric(maxMeters);\n\t\t}\n\t\tif (this.options.imperial && maxMeters) {\n\t\t\tthis._updateImperial(maxMeters);\n\t\t}\n\t},\n\n\t_updateMetric: function (maxMeters) {\n\t\tvar meters = this._getRoundNum(maxMeters),\n\t\t    label = meters < 1000 ? meters + ' m' : (meters / 1000) + ' km';\n\n\t\tthis._updateScale(this._mScale, label, meters / maxMeters);\n\t},\n\n\t_updateImperial: function (maxMeters) {\n\t\tvar maxFeet = maxMeters * 3.2808399,\n\t\t    maxMiles, miles, feet;\n\n\t\tif (maxFeet > 5280) {\n\t\t\tmaxMiles = maxFeet / 5280;\n\t\t\tmiles = this._getRoundNum(maxMiles);\n\t\t\tthis._updateScale(this._iScale, miles + ' mi', miles / maxMiles);\n\n\t\t} else {\n\t\t\tfeet = this._getRoundNum(maxFeet);\n\t\t\tthis._updateScale(this._iScale, feet + ' ft', feet / maxFeet);\n\t\t}\n\t},\n\n\t_updateScale: function (scale, text, ratio) {\n\t\tscale.style.width = Math.round(this.options.maxWidth * ratio) + 'px';\n\t\tscale.innerHTML = text;\n\t},\n\n\t_getRoundNum: function (num) {\n\t\tvar pow10 = Math.pow(10, (Math.floor(num) + '').length - 1),\n\t\t    d = num / pow10;\n\n\t\td = d >= 10 ? 10 :\n\t\t    d >= 5 ? 5 :\n\t\t    d >= 3 ? 3 :\n\t\t    d >= 2 ? 2 : 1;\n\n\t\treturn pow10 * d;\n\t}\n});\n\n\n// @factory L.control.scale(options?: Control.Scale options)\n// Creates an scale control with the given options.\nexport var scale = function (options) {\n\treturn new Scale(options);\n};\n", "\r\nimport {Control} from './Control';\r\nimport {Map} from '../map/Map';\r\nimport * as Util from '../core/Util';\r\nimport * as DomEvent from '../dom/DomEvent';\r\nimport * as DomUtil from '../dom/DomUtil';\r\nimport Browser from '../core/Browser';\r\n\r\nvar ukrainianFlag = '<svg aria-hidden=\"true\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"8\" viewBox=\"0 0 12 8\" class=\"leaflet-attribution-flag\"><path fill=\"#4C7BE1\" d=\"M0 0h12v4H0z\"/><path fill=\"#FFD500\" d=\"M0 4h12v3H0z\"/><path fill=\"#E0BC00\" d=\"M0 7h12v1H0z\"/></svg>';\r\n\r\n\r\n/*\r\n * @class Control.Attribution\r\n * @aka L.Control.Attribution\r\n * @inherits Control\r\n *\r\n * The attribution control allows you to display attribution data in a small text box on a map. It is put on the map by default unless you set its [`attributionControl` option](#map-attributioncontrol) to `false`, and it fetches attribution texts from layers with the [`getAttribution` method](#layer-getattribution) automatically. Extends Control.\r\n */\r\n\r\nexport var Attribution = Control.extend({\r\n\t// @section\r\n\t// @aka Control.Attribution options\r\n\toptions: {\r\n\t\tposition: 'bottomright',\r\n\r\n\t\t// @option prefix: String|false = 'Leaflet'\r\n\t\t// The HTML text shown before the attributions. Pass `false` to disable.\r\n\t\tprefix: '<a href=\"https://leafletjs.com\" title=\"A JavaScript library for interactive maps\">' + (Browser.inlineSvg ? ukrainianFlag + ' ' : '') + 'Leaflet</a>'\r\n\t},\r\n\r\n\tinitialize: function (options) {\r\n\t\tUtil.setOptions(this, options);\r\n\r\n\t\tthis._attributions = {};\r\n\t},\r\n\r\n\tonAdd: function (map) {\r\n\t\tmap.attributionControl = this;\r\n\t\tthis._container = DomUtil.create('div', 'leaflet-control-attribution');\r\n\t\tDomEvent.disableClickPropagation(this._container);\r\n\r\n\t\t// TODO ugly, refactor\r\n\t\tfor (var i in map._layers) {\r\n\t\t\tif (map._layers[i].getAttribution) {\r\n\t\t\t\tthis.addAttribution(map._layers[i].getAttribution());\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis._update();\r\n\r\n\t\tmap.on('layeradd', this._addAttribution, this);\r\n\r\n\t\treturn this._container;\r\n\t},\r\n\r\n\tonRemove: function (map) {\r\n\t\tmap.off('layeradd', this._addAttribution, this);\r\n\t},\r\n\r\n\t_addAttribution: function (ev) {\r\n\t\tif (ev.layer.getAttribution) {\r\n\t\t\tthis.addAttribution(ev.layer.getAttribution());\r\n\t\t\tev.layer.once('remove', function () {\r\n\t\t\t\tthis.removeAttribution(ev.layer.getAttribution());\r\n\t\t\t}, this);\r\n\t\t}\r\n\t},\r\n\r\n\t// @method setPrefix(prefix: String|false): this\r\n\t// The HTML text shown before the attributions. Pass `false` to disable.\r\n\tsetPrefix: function (prefix) {\r\n\t\tthis.options.prefix = prefix;\r\n\t\tthis._update();\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method addAttribution(text: String): this\r\n\t// Adds an attribution text (e.g. `'&copy; OpenStreetMap contributors'`).\r\n\taddAttribution: function (text) {\r\n\t\tif (!text) { return this; }\r\n\r\n\t\tif (!this._attributions[text]) {\r\n\t\t\tthis._attributions[text] = 0;\r\n\t\t}\r\n\t\tthis._attributions[text]++;\r\n\r\n\t\tthis._update();\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method removeAttribution(text: String): this\r\n\t// Removes an attribution text.\r\n\tremoveAttribution: function (text) {\r\n\t\tif (!text) { return this; }\r\n\r\n\t\tif (this._attributions[text]) {\r\n\t\t\tthis._attributions[text]--;\r\n\t\t\tthis._update();\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t_update: function () {\r\n\t\tif (!this._map) { return; }\r\n\r\n\t\tvar attribs = [];\r\n\r\n\t\tfor (var i in this._attributions) {\r\n\t\t\tif (this._attributions[i]) {\r\n\t\t\t\tattribs.push(i);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar prefixAndAttribs = [];\r\n\r\n\t\tif (this.options.prefix) {\r\n\t\t\tprefixAndAttribs.push(this.options.prefix);\r\n\t\t}\r\n\t\tif (attribs.length) {\r\n\t\t\tprefixAndAttribs.push(attribs.join(', '));\r\n\t\t}\r\n\r\n\t\tthis._container.innerHTML = prefixAndAttribs.join(' <span aria-hidden=\"true\">|</span> ');\r\n\t}\r\n});\r\n\r\n// @namespace Map\r\n// @section Control options\r\n// @option attributionControl: Boolean = true\r\n// Whether a [attribution control](#control-attribution) is added to the map by default.\r\nMap.mergeOptions({\r\n\tattributionControl: true\r\n});\r\n\r\nMap.addInitHook(function () {\r\n\tif (this.options.attributionControl) {\r\n\t\tnew Attribution().addTo(this);\r\n\t}\r\n});\r\n\r\n// @namespace Control.Attribution\r\n// @factory L.control.attribution(options: Control.Attribution options)\r\n// Creates an attribution control.\r\nexport var attribution = function (options) {\r\n\treturn new Attribution(options);\r\n};\r\n", "import {Control, control} from './Control';\nimport {Layers, layers} from './Control.Layers';\nimport {Zoom, zoom} from './Control.Zoom';\nimport {Scale, scale} from './Control.Scale';\nimport {Attribution, attribution} from './Control.Attribution';\n\nControl.Layers = Layers;\nControl.Zoom = Zoom;\nControl.Scale = Scale;\nControl.Attribution = Attribution;\n\ncontrol.layers = layers;\ncontrol.zoom = zoom;\ncontrol.scale = scale;\ncontrol.attribution = attribution;\n\nexport {Control, control};\n", "import {Class} from './Class';\n\n/*\n\tL.Handler is a base class for handler classes that are used internally to inject\n\tinteraction features like dragging to classes like Map and Marker.\n*/\n\n// @class Handler\n// @aka L.Handler\n// Abstract class for map interaction handlers\n\nexport var Handler = Class.extend({\n\tinitialize: function (map) {\n\t\tthis._map = map;\n\t},\n\n\t// @method enable(): this\n\t// Enables the handler\n\tenable: function () {\n\t\tif (this._enabled) { return this; }\n\n\t\tthis._enabled = true;\n\t\tthis.addHooks();\n\t\treturn this;\n\t},\n\n\t// @method disable(): this\n\t// Disables the handler\n\tdisable: function () {\n\t\tif (!this._enabled) { return this; }\n\n\t\tthis._enabled = false;\n\t\tthis.removeHooks();\n\t\treturn this;\n\t},\n\n\t// @method enabled(): Boolean\n\t// Returns `true` if the handler is enabled\n\tenabled: function () {\n\t\treturn !!this._enabled;\n\t}\n\n\t// @section Extension methods\n\t// Classes inheriting from `Handler` must implement the two following methods:\n\t// @method addHooks()\n\t// Called when the handler is enabled, should add event hooks.\n\t// @method removeHooks()\n\t// Called when the handler is disabled, should remove the event hooks added previously.\n});\n\n// @section There is static function which can be called without instantiating L.Handler:\n// @function addTo(map: Map, name: String): this\n// Adds a new Handler to the given map with the given name.\nHandler.addTo = function (map, name) {\n\tmap.addHandler(name, this);\n\treturn this;\n};\n", "import Browser from './Browser';\nexport {Browser};\n\nexport {Class} from './Class';\n\nimport {Evented} from './Events';\nimport {Events} from './Events';\nexport {Evented};\nexport var Mixin = {Events: Events};\n\nexport {Handler} from './Handler';\n\nimport * as Util from './Util';\nexport {Util};\nexport {extend, bind, stamp, setOptions} from './Util';\n", "import {Evented} from '../core/Events';\r\nimport Browser from '../core/Browser';\r\nimport * as DomEvent from './DomEvent';\r\nimport * as DomUtil from './DomUtil';\r\nimport * as Util from '../core/Util';\r\nimport {Point} from '../geometry/Point';\r\n\r\n/*\r\n * @class Draggable\r\n * @aka L.Draggable\r\n * @inherits Evented\r\n *\r\n * A class for making DOM elements draggable (including touch support).\r\n * Used internally for map and marker dragging. Only works for elements\r\n * that were positioned with [`L.DomUtil.setPosition`](#domutil-setposition).\r\n *\r\n * @example\r\n * ```js\r\n * var draggable = new L.Draggable(elementToDrag);\r\n * draggable.enable();\r\n * ```\r\n */\r\n\r\nvar START = Browser.touch ? 'touchstart mousedown' : 'mousedown';\r\n\r\nexport var Draggable = Evented.extend({\r\n\r\n\toptions: {\r\n\t\t// @section\r\n\t\t// @aka Draggable options\r\n\t\t// @option clickTolerance: Number = 3\r\n\t\t// The max number of pixels a user can shift the mouse pointer during a click\r\n\t\t// for it to be considered a valid click (as opposed to a mouse drag).\r\n\t\tclickTolerance: 3\r\n\t},\r\n\r\n\t// @constructor L.Draggable(el: HTMLElement, dragHandle?: HTMLElement, preventOutline?: Boolean, options?: Draggable options)\r\n\t// Creates a `Draggable` object for moving `el` when you start dragging the `dragHandle` element (equals `el` itself by default).\r\n\tinitialize: function (element, dragStartTarget, preventOutline, options) {\r\n\t\tUtil.setOptions(this, options);\r\n\r\n\t\tthis._element = element;\r\n\t\tthis._dragStartTarget = dragStartTarget || element;\r\n\t\tthis._preventOutline = preventOutline;\r\n\t},\r\n\r\n\t// @method enable()\r\n\t// Enables the dragging ability\r\n\tenable: function () {\r\n\t\tif (this._enabled) { return; }\r\n\r\n\t\tDomEvent.on(this._dragStartTarget, START, this._onDown, this);\r\n\r\n\t\tthis._enabled = true;\r\n\t},\r\n\r\n\t// @method disable()\r\n\t// Disables the dragging ability\r\n\tdisable: function () {\r\n\t\tif (!this._enabled) { return; }\r\n\r\n\t\t// If we're currently dragging this draggable,\r\n\t\t// disabling it counts as first ending the drag.\r\n\t\tif (Draggable._dragging === this) {\r\n\t\t\tthis.finishDrag(true);\r\n\t\t}\r\n\r\n\t\tDomEvent.off(this._dragStartTarget, START, this._onDown, this);\r\n\r\n\t\tthis._enabled = false;\r\n\t\tthis._moved = false;\r\n\t},\r\n\r\n\t_onDown: function (e) {\r\n\t\t// Ignore the event if disabled; this happens in IE11\r\n\t\t// under some circumstances, see #3666.\r\n\t\tif (!this._enabled) { return; }\r\n\r\n\t\tthis._moved = false;\r\n\r\n\t\tif (DomUtil.hasClass(this._element, 'leaflet-zoom-anim')) { return; }\r\n\r\n\t\tif (e.touches && e.touches.length !== 1) {\r\n\t\t\t// Finish dragging to avoid conflict with touchZoom\r\n\t\t\tif (Draggable._dragging === this) {\r\n\t\t\t\tthis.finishDrag();\r\n\t\t\t}\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (Draggable._dragging || e.shiftKey || ((e.which !== 1) && (e.button !== 1) && !e.touches)) { return; }\r\n\t\tDraggable._dragging = this;  // Prevent dragging multiple objects at once.\r\n\r\n\t\tif (this._preventOutline) {\r\n\t\t\tDomUtil.preventOutline(this._element);\r\n\t\t}\r\n\r\n\t\tDomUtil.disableImageDrag();\r\n\t\tDomUtil.disableTextSelection();\r\n\r\n\t\tif (this._moving) { return; }\r\n\r\n\t\t// @event down: Event\r\n\t\t// Fired when a drag is about to start.\r\n\t\tthis.fire('down');\r\n\r\n\t\tvar first = e.touches ? e.touches[0] : e,\r\n\t\t    sizedParent = DomUtil.getSizedParentNode(this._element);\r\n\r\n\t\tthis._startPoint = new Point(first.clientX, first.clientY);\r\n\t\tthis._startPos = DomUtil.getPosition(this._element);\r\n\r\n\t\t// Cache the scale, so that we can continuously compensate for it during drag (_onMove).\r\n\t\tthis._parentScale = DomUtil.getScale(sizedParent);\r\n\r\n\t\tvar mouseevent = e.type === 'mousedown';\r\n\t\tDomEvent.on(document, mouseevent ? 'mousemove' : 'touchmove', this._onMove, this);\r\n\t\tDomEvent.on(document, mouseevent ? 'mouseup' : 'touchend touchcancel', this._onUp, this);\r\n\t},\r\n\r\n\t_onMove: function (e) {\r\n\t\t// Ignore the event if disabled; this happens in IE11\r\n\t\t// under some circumstances, see #3666.\r\n\t\tif (!this._enabled) { return; }\r\n\r\n\t\tif (e.touches && e.touches.length > 1) {\r\n\t\t\tthis._moved = true;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar first = (e.touches && e.touches.length === 1 ? e.touches[0] : e),\r\n\t\t    offset = new Point(first.clientX, first.clientY)._subtract(this._startPoint);\r\n\r\n\t\tif (!offset.x && !offset.y) { return; }\r\n\t\tif (Math.abs(offset.x) + Math.abs(offset.y) < this.options.clickTolerance) { return; }\r\n\r\n\t\t// We assume that the parent container's position, border and scale do not change for the duration of the drag.\r\n\t\t// Therefore there is no need to account for the position and border (they are eliminated by the subtraction)\r\n\t\t// and we can use the cached value for the scale.\r\n\t\toffset.x /= this._parentScale.x;\r\n\t\toffset.y /= this._parentScale.y;\r\n\r\n\t\tDomEvent.preventDefault(e);\r\n\r\n\t\tif (!this._moved) {\r\n\t\t\t// @event dragstart: Event\r\n\t\t\t// Fired when a drag starts\r\n\t\t\tthis.fire('dragstart');\r\n\r\n\t\t\tthis._moved = true;\r\n\r\n\t\t\tDomUtil.addClass(document.body, 'leaflet-dragging');\r\n\r\n\t\t\tthis._lastTarget = e.target || e.srcElement;\r\n\t\t\t// IE and Edge do not give the <use> element, so fetch it\r\n\t\t\t// if necessary\r\n\t\t\tif (window.SVGElementInstance && this._lastTarget instanceof window.SVGElementInstance) {\r\n\t\t\t\tthis._lastTarget = this._lastTarget.correspondingUseElement;\r\n\t\t\t}\r\n\t\t\tDomUtil.addClass(this._lastTarget, 'leaflet-drag-target');\r\n\t\t}\r\n\r\n\t\tthis._newPos = this._startPos.add(offset);\r\n\t\tthis._moving = true;\r\n\r\n\t\tthis._lastEvent = e;\r\n\t\tthis._updatePosition();\r\n\t},\r\n\r\n\t_updatePosition: function () {\r\n\t\tvar e = {originalEvent: this._lastEvent};\r\n\r\n\t\t// @event predrag: Event\r\n\t\t// Fired continuously during dragging *before* each corresponding\r\n\t\t// update of the element's position.\r\n\t\tthis.fire('predrag', e);\r\n\t\tDomUtil.setPosition(this._element, this._newPos);\r\n\r\n\t\t// @event drag: Event\r\n\t\t// Fired continuously during dragging.\r\n\t\tthis.fire('drag', e);\r\n\t},\r\n\r\n\t_onUp: function () {\r\n\t\t// Ignore the event if disabled; this happens in IE11\r\n\t\t// under some circumstances, see #3666.\r\n\t\tif (!this._enabled) { return; }\r\n\t\tthis.finishDrag();\r\n\t},\r\n\r\n\tfinishDrag: function (noInertia) {\r\n\t\tDomUtil.removeClass(document.body, 'leaflet-dragging');\r\n\r\n\t\tif (this._lastTarget) {\r\n\t\t\tDomUtil.removeClass(this._lastTarget, 'leaflet-drag-target');\r\n\t\t\tthis._lastTarget = null;\r\n\t\t}\r\n\r\n\t\tDomEvent.off(document, 'mousemove touchmove', this._onMove, this);\r\n\t\tDomEvent.off(document, 'mouseup touchend touchcancel', this._onUp, this);\r\n\r\n\t\tDomUtil.enableImageDrag();\r\n\t\tDomUtil.enableTextSelection();\r\n\r\n\t\tvar fireDragend = this._moved && this._moving;\r\n\r\n\t\tthis._moving = false;\r\n\t\tDraggable._dragging = false;\r\n\r\n\t\tif (fireDragend) {\r\n\t\t\t// @event dragend: DragEndEvent\r\n\t\t\t// Fired when the drag ends.\r\n\t\t\tthis.fire('dragend', {\r\n\t\t\t\tnoInertia: noInertia,\r\n\t\t\t\tdistance: this._newPos.distanceTo(this._startPos)\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n});\r\n", "import * as LineUtil from './LineUtil';\r\nimport {toLatLng} from '../geo/LatLng';\r\nimport {toPoint} from './Point';\r\nimport {toLatLngBounds} from '../geo/LatLngBounds';\r\n/*\r\n * @namespace PolyUtil\r\n * Various utility functions for polygon geometries.\r\n */\r\n\r\n/* @function clipPolygon(points: Point[], bounds: Bounds, round?: Boolean): Point[]\r\n * Clips the polygon geometry defined by the given `points` by the given bounds (using the [Sutherland-Hodgman algorithm](https://en.wikipedia.org/wiki/Sutherland%E2%80%93Hodgman_algorithm)).\r\n * Used by Leaflet to only show polygon points that are on the screen or near, increasing\r\n * performance. Note that polygon points needs different algorithm for clipping\r\n * than polyline, so there's a separate method for it.\r\n */\r\nexport function clipPolygon(points, bounds, round) {\r\n\tvar clippedPoints,\r\n\t    edges = [1, 4, 2, 8],\r\n\t    i, j, k,\r\n\t    a, b,\r\n\t    len, edge, p;\r\n\r\n\tfor (i = 0, len = points.length; i < len; i++) {\r\n\t\tpoints[i]._code = LineUtil._getBitCode(points[i], bounds);\r\n\t}\r\n\r\n\t// for each edge (left, bottom, right, top)\r\n\tfor (k = 0; k < 4; k++) {\r\n\t\tedge = edges[k];\r\n\t\tclippedPoints = [];\r\n\r\n\t\tfor (i = 0, len = points.length, j = len - 1; i < len; j = i++) {\r\n\t\t\ta = points[i];\r\n\t\t\tb = points[j];\r\n\r\n\t\t\t// if a is inside the clip window\r\n\t\t\tif (!(a._code & edge)) {\r\n\t\t\t\t// if b is outside the clip window (a->b goes out of screen)\r\n\t\t\t\tif (b._code & edge) {\r\n\t\t\t\t\tp = LineUtil._getEdgeIntersection(b, a, edge, bounds, round);\r\n\t\t\t\t\tp._code = LineUtil._getBitCode(p, bounds);\r\n\t\t\t\t\tclippedPoints.push(p);\r\n\t\t\t\t}\r\n\t\t\t\tclippedPoints.push(a);\r\n\r\n\t\t\t// else if b is inside the clip window (a->b enters the screen)\r\n\t\t\t} else if (!(b._code & edge)) {\r\n\t\t\t\tp = LineUtil._getEdgeIntersection(b, a, edge, bounds, round);\r\n\t\t\t\tp._code = LineUtil._getBitCode(p, bounds);\r\n\t\t\t\tclippedPoints.push(p);\r\n\t\t\t}\r\n\t\t}\r\n\t\tpoints = clippedPoints;\r\n\t}\r\n\r\n\treturn points;\r\n}\r\n\r\n/* @function polygonCenter(latlngs: LatLng[], crs: CRS): LatLng\r\n * Returns the center ([centroid](http://en.wikipedia.org/wiki/Centroid)) of the passed LatLngs (first ring) from a polygon.\r\n */\r\nexport function polygonCenter(latlngs, crs) {\r\n\tvar i, j, p1, p2, f, area, x, y, center;\r\n\r\n\tif (!latlngs || latlngs.length === 0) {\r\n\t\tthrow new Error('latlngs not passed');\r\n\t}\r\n\r\n\tif (!LineUtil.isFlat(latlngs)) {\r\n\t\tconsole.warn('latlngs are not flat! Only the first ring will be used');\r\n\t\tlatlngs = latlngs[0];\r\n\t}\r\n\r\n\tvar centroidLatLng = toLatLng([0, 0]);\r\n\r\n\tvar bounds = toLatLngBounds(latlngs);\r\n\tvar areaBounds = bounds.getNorthWest().distanceTo(bounds.getSouthWest()) * bounds.getNorthEast().distanceTo(bounds.getNorthWest());\r\n\t// tests showed that below 1700 rounding errors are happening\r\n\tif (areaBounds < 1700) {\r\n\t\t// getting a inexact center, to move the latlngs near to [0, 0] to prevent rounding errors\r\n\t\tcentroidLatLng = centroid(latlngs);\r\n\t}\r\n\r\n\tvar len = latlngs.length;\r\n\tvar points = [];\r\n\tfor (i = 0; i < len; i++) {\r\n\t\tvar latlng = toLatLng(latlngs[i]);\r\n\t\tpoints.push(crs.project(toLatLng([latlng.lat - centroidLatLng.lat, latlng.lng - centroidLatLng.lng])));\r\n\t}\r\n\r\n\tarea = x = y = 0;\r\n\r\n\t// polygon centroid algorithm;\r\n\tfor (i = 0, j = len - 1; i < len; j = i++) {\r\n\t\tp1 = points[i];\r\n\t\tp2 = points[j];\r\n\r\n\t\tf = p1.y * p2.x - p2.y * p1.x;\r\n\t\tx += (p1.x + p2.x) * f;\r\n\t\ty += (p1.y + p2.y) * f;\r\n\t\tarea += f * 3;\r\n\t}\r\n\r\n\tif (area === 0) {\r\n\t\t// Polygon is so small that all points are on same pixel.\r\n\t\tcenter = points[0];\r\n\t} else {\r\n\t\tcenter = [x / area, y / area];\r\n\t}\r\n\r\n\tvar latlngCenter = crs.unproject(toPoint(center));\r\n\treturn toLatLng([latlngCenter.lat + centroidLatLng.lat, latlngCenter.lng + centroidLatLng.lng]);\r\n}\r\n\r\n/* @function centroid(latlngs: LatLng[]): LatLng\r\n * Returns the 'center of mass' of the passed LatLngs.\r\n */\r\nexport function centroid(coords) {\r\n\tvar latSum = 0;\r\n\tvar lngSum = 0;\r\n\tvar len = 0;\r\n\tfor (var i = 0; i < coords.length; i++) {\r\n\t\tvar latlng = toLatLng(coords[i]);\r\n\t\tlatSum += latlng.lat;\r\n\t\tlngSum += latlng.lng;\r\n\t\tlen++;\r\n\t}\r\n\treturn toLatLng([latSum / len, lngSum / len]);\r\n}\r\n", "import {Point, toPoint} from './Point';\r\nimport * as Util from '../core/Util';\r\nimport {toLatLng} from '../geo/LatLng';\r\nimport {centroid} from './PolyUtil';\r\nimport {toLatLngBounds} from '../geo/LatLngBounds';\r\n\r\n\r\n/*\r\n * @namespace LineUtil\r\n *\r\n * Various utility functions for polyline points processing, used by Leaflet internally to make polylines lightning-fast.\r\n */\r\n\r\n// Simplify polyline with vertex reduction and Douglas-Peucker simplification.\r\n// Improves rendering performance dramatically by lessening the number of points to draw.\r\n\r\n// @function simplify(points: Point[], tolerance: Number): Point[]\r\n// Dramatically reduces the number of points in a polyline while retaining\r\n// its shape and returns a new array of simplified points, using the\r\n// [Ramer-Douglas-Peucker algorithm](https://en.wikipedia.org/wiki/Ramer-Douglas-Peucker_algorithm).\r\n// Used for a huge performance boost when processing/displaying Leaflet polylines for\r\n// each zoom level and also reducing visual noise. tolerance affects the amount of\r\n// simplification (lesser value means higher quality but slower and with more points).\r\n// Also released as a separated micro-library [Simplify.js](https://mourner.github.io/simplify-js/).\r\nexport function simplify(points, tolerance) {\r\n\tif (!tolerance || !points.length) {\r\n\t\treturn points.slice();\r\n\t}\r\n\r\n\tvar sqTolerance = tolerance * tolerance;\r\n\r\n\t    // stage 1: vertex reduction\r\n\t    points = _reducePoints(points, sqTolerance);\r\n\r\n\t    // stage 2: Douglas-Peucker simplification\r\n\t    points = _simplifyDP(points, sqTolerance);\r\n\r\n\treturn points;\r\n}\r\n\r\n// @function pointToSegmentDistance(p: Point, p1: Point, p2: Point): Number\r\n// Returns the distance between point `p` and segment `p1` to `p2`.\r\nexport function pointToSegmentDistance(p, p1, p2) {\r\n\treturn Math.sqrt(_sqClosestPointOnSegment(p, p1, p2, true));\r\n}\r\n\r\n// @function closestPointOnSegment(p: Point, p1: Point, p2: Point): Number\r\n// Returns the closest point from a point `p` on a segment `p1` to `p2`.\r\nexport function closestPointOnSegment(p, p1, p2) {\r\n\treturn _sqClosestPointOnSegment(p, p1, p2);\r\n}\r\n\r\n// Ramer-Douglas-Peucker simplification, see https://en.wikipedia.org/wiki/Ramer-Douglas-Peucker_algorithm\r\nfunction _simplifyDP(points, sqTolerance) {\r\n\r\n\tvar len = points.length,\r\n\t    ArrayConstructor = typeof Uint8Array !== undefined + '' ? Uint8Array : Array,\r\n\t    markers = new ArrayConstructor(len);\r\n\r\n\t    markers[0] = markers[len - 1] = 1;\r\n\r\n\t_simplifyDPStep(points, markers, sqTolerance, 0, len - 1);\r\n\r\n\tvar i,\r\n\t    newPoints = [];\r\n\r\n\tfor (i = 0; i < len; i++) {\r\n\t\tif (markers[i]) {\r\n\t\t\tnewPoints.push(points[i]);\r\n\t\t}\r\n\t}\r\n\r\n\treturn newPoints;\r\n}\r\n\r\nfunction _simplifyDPStep(points, markers, sqTolerance, first, last) {\r\n\r\n\tvar maxSqDist = 0,\r\n\tindex, i, sqDist;\r\n\r\n\tfor (i = first + 1; i <= last - 1; i++) {\r\n\t\tsqDist = _sqClosestPointOnSegment(points[i], points[first], points[last], true);\r\n\r\n\t\tif (sqDist > maxSqDist) {\r\n\t\t\tindex = i;\r\n\t\t\tmaxSqDist = sqDist;\r\n\t\t}\r\n\t}\r\n\r\n\tif (maxSqDist > sqTolerance) {\r\n\t\tmarkers[index] = 1;\r\n\r\n\t\t_simplifyDPStep(points, markers, sqTolerance, first, index);\r\n\t\t_simplifyDPStep(points, markers, sqTolerance, index, last);\r\n\t}\r\n}\r\n\r\n// reduce points that are too close to each other to a single point\r\nfunction _reducePoints(points, sqTolerance) {\r\n\tvar reducedPoints = [points[0]];\r\n\r\n\tfor (var i = 1, prev = 0, len = points.length; i < len; i++) {\r\n\t\tif (_sqDist(points[i], points[prev]) > sqTolerance) {\r\n\t\t\treducedPoints.push(points[i]);\r\n\t\t\tprev = i;\r\n\t\t}\r\n\t}\r\n\tif (prev < len - 1) {\r\n\t\treducedPoints.push(points[len - 1]);\r\n\t}\r\n\treturn reducedPoints;\r\n}\r\n\r\nvar _lastCode;\r\n\r\n// @function clipSegment(a: Point, b: Point, bounds: Bounds, useLastCode?: Boolean, round?: Boolean): Point[]|Boolean\r\n// Clips the segment a to b by rectangular bounds with the\r\n// [Cohen-Sutherland algorithm](https://en.wikipedia.org/wiki/Cohen%E2%80%93Sutherland_algorithm)\r\n// (modifying the segment points directly!). Used by Leaflet to only show polyline\r\n// points that are on the screen or near, increasing performance.\r\nexport function clipSegment(a, b, bounds, useLastCode, round) {\r\n\tvar codeA = useLastCode ? _lastCode : _getBitCode(a, bounds),\r\n\t    codeB = _getBitCode(b, bounds),\r\n\r\n\t    codeOut, p, newCode;\r\n\r\n\t    // save 2nd code to avoid calculating it on the next segment\r\n\t    _lastCode = codeB;\r\n\r\n\twhile (true) {\r\n\t\t// if a,b is inside the clip window (trivial accept)\r\n\t\tif (!(codeA | codeB)) {\r\n\t\t\treturn [a, b];\r\n\t\t}\r\n\r\n\t\t// if a,b is outside the clip window (trivial reject)\r\n\t\tif (codeA & codeB) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// other cases\r\n\t\tcodeOut = codeA || codeB;\r\n\t\tp = _getEdgeIntersection(a, b, codeOut, bounds, round);\r\n\t\tnewCode = _getBitCode(p, bounds);\r\n\r\n\t\tif (codeOut === codeA) {\r\n\t\t\ta = p;\r\n\t\t\tcodeA = newCode;\r\n\t\t} else {\r\n\t\t\tb = p;\r\n\t\t\tcodeB = newCode;\r\n\t\t}\r\n\t}\r\n}\r\n\r\nexport function _getEdgeIntersection(a, b, code, bounds, round) {\r\n\tvar dx = b.x - a.x,\r\n\t    dy = b.y - a.y,\r\n\t    min = bounds.min,\r\n\t    max = bounds.max,\r\n\t    x, y;\r\n\r\n\tif (code & 8) { // top\r\n\t\tx = a.x + dx * (max.y - a.y) / dy;\r\n\t\ty = max.y;\r\n\r\n\t} else if (code & 4) { // bottom\r\n\t\tx = a.x + dx * (min.y - a.y) / dy;\r\n\t\ty = min.y;\r\n\r\n\t} else if (code & 2) { // right\r\n\t\tx = max.x;\r\n\t\ty = a.y + dy * (max.x - a.x) / dx;\r\n\r\n\t} else if (code & 1) { // left\r\n\t\tx = min.x;\r\n\t\ty = a.y + dy * (min.x - a.x) / dx;\r\n\t}\r\n\r\n\treturn new Point(x, y, round);\r\n}\r\n\r\nexport function _getBitCode(p, bounds) {\r\n\tvar code = 0;\r\n\r\n\tif (p.x < bounds.min.x) { // left\r\n\t\tcode |= 1;\r\n\t} else if (p.x > bounds.max.x) { // right\r\n\t\tcode |= 2;\r\n\t}\r\n\r\n\tif (p.y < bounds.min.y) { // bottom\r\n\t\tcode |= 4;\r\n\t} else if (p.y > bounds.max.y) { // top\r\n\t\tcode |= 8;\r\n\t}\r\n\r\n\treturn code;\r\n}\r\n\r\n// square distance (to avoid unnecessary Math.sqrt calls)\r\nfunction _sqDist(p1, p2) {\r\n\tvar dx = p2.x - p1.x,\r\n\t    dy = p2.y - p1.y;\r\n\treturn dx * dx + dy * dy;\r\n}\r\n\r\n// return closest point on segment or distance to that point\r\nexport function _sqClosestPointOnSegment(p, p1, p2, sqDist) {\r\n\tvar x = p1.x,\r\n\t    y = p1.y,\r\n\t    dx = p2.x - x,\r\n\t    dy = p2.y - y,\r\n\t    dot = dx * dx + dy * dy,\r\n\t    t;\r\n\r\n\tif (dot > 0) {\r\n\t\tt = ((p.x - x) * dx + (p.y - y) * dy) / dot;\r\n\r\n\t\tif (t > 1) {\r\n\t\t\tx = p2.x;\r\n\t\t\ty = p2.y;\r\n\t\t} else if (t > 0) {\r\n\t\t\tx += dx * t;\r\n\t\t\ty += dy * t;\r\n\t\t}\r\n\t}\r\n\r\n\tdx = p.x - x;\r\n\tdy = p.y - y;\r\n\r\n\treturn sqDist ? dx * dx + dy * dy : new Point(x, y);\r\n}\r\n\r\n\r\n// @function isFlat(latlngs: LatLng[]): Boolean\r\n// Returns true if `latlngs` is a flat array, false is nested.\r\nexport function isFlat(latlngs) {\r\n\treturn !Util.isArray(latlngs[0]) || (typeof latlngs[0][0] !== 'object' && typeof latlngs[0][0] !== 'undefined');\r\n}\r\n\r\nexport function _flat(latlngs) {\r\n\tconsole.warn('Deprecated use of _flat, please use L.LineUtil.isFlat instead.');\r\n\treturn isFlat(latlngs);\r\n}\r\n\r\n/* @function polylineCenter(latlngs: LatLng[], crs: CRS): LatLng\r\n * Returns the center ([centroid](http://en.wikipedia.org/wiki/Centroid)) of the passed LatLngs (first ring) from a polyline.\r\n */\r\nexport function polylineCenter(latlngs, crs) {\r\n\tvar i, halfDist, segDist, dist, p1, p2, ratio, center;\r\n\r\n\tif (!latlngs || latlngs.length === 0) {\r\n\t\tthrow new Error('latlngs not passed');\r\n\t}\r\n\r\n\tif (!isFlat(latlngs)) {\r\n\t\tconsole.warn('latlngs are not flat! Only the first ring will be used');\r\n\t\tlatlngs = latlngs[0];\r\n\t}\r\n\r\n\tvar centroidLatLng = toLatLng([0, 0]);\r\n\r\n\tvar bounds = toLatLngBounds(latlngs);\r\n\tvar areaBounds = bounds.getNorthWest().distanceTo(bounds.getSouthWest()) * bounds.getNorthEast().distanceTo(bounds.getNorthWest());\r\n\t// tests showed that below 1700 rounding errors are happening\r\n\tif (areaBounds < 1700) {\r\n\t\t// getting a inexact center, to move the latlngs near to [0, 0] to prevent rounding errors\r\n\t\tcentroidLatLng = centroid(latlngs);\r\n\t}\r\n\r\n\tvar len = latlngs.length;\r\n\tvar points = [];\r\n\tfor (i = 0; i < len; i++) {\r\n\t\tvar latlng = toLatLng(latlngs[i]);\r\n\t\tpoints.push(crs.project(toLatLng([latlng.lat - centroidLatLng.lat, latlng.lng - centroidLatLng.lng])));\r\n\t}\r\n\r\n\tfor (i = 0, halfDist = 0; i < len - 1; i++) {\r\n\t\thalfDist += points[i].distanceTo(points[i + 1]) / 2;\r\n\t}\r\n\r\n\t// The line is so small in the current view that all points are on the same pixel.\r\n\tif (halfDist === 0) {\r\n\t\tcenter = points[0];\r\n\t} else {\r\n\t\tfor (i = 0, dist = 0; i < len - 1; i++) {\r\n\t\t\tp1 = points[i];\r\n\t\t\tp2 = points[i + 1];\r\n\t\t\tsegDist = p1.distanceTo(p2);\r\n\t\t\tdist += segDist;\r\n\r\n\t\t\tif (dist > halfDist) {\r\n\t\t\t\tratio = (dist - halfDist) / segDist;\r\n\t\t\t\tcenter = [\r\n\t\t\t\t\tp2.x - ratio * (p2.x - p1.x),\r\n\t\t\t\t\tp2.y - ratio * (p2.y - p1.y)\r\n\t\t\t\t];\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tvar latlngCenter = crs.unproject(toPoint(center));\r\n\treturn toLatLng([latlngCenter.lat + centroidLatLng.lat, latlngCenter.lng + centroidLatLng.lng]);\r\n}\r\n", "import {LatLng} from '../LatLng';\r\nimport {Bounds} from '../../geometry/Bounds';\r\nimport {Point} from '../../geometry/Point';\r\n\r\n/*\r\n * @namespace Projection\r\n * @section\r\n * Leaflet comes with a set of already defined Projections out of the box:\r\n *\r\n * @projection L.Projection.LonLat\r\n *\r\n * Equirectangular, or Plate Carree projection — the most simple projection,\r\n * mostly used by GIS enthusiasts. Directly maps `x` as longitude, and `y` as\r\n * latitude. Also suitable for flat worlds, e.g. game maps. Used by the\r\n * `EPSG:4326` and `Simple` CRS.\r\n */\r\n\r\nexport var LonLat = {\r\n\tproject: function (latlng) {\r\n\t\treturn new Point(latlng.lng, latlng.lat);\r\n\t},\r\n\r\n\tunproject: function (point) {\r\n\t\treturn new LatLng(point.y, point.x);\r\n\t},\r\n\r\n\tbounds: new Bounds([-180, -90], [180, 90])\r\n};\r\n", "import {LatLng} from '../LatLng';\r\nimport {Bounds} from '../../geometry/Bounds';\r\nimport {Point} from '../../geometry/Point';\r\n\r\n/*\r\n * @namespace Projection\r\n * @projection L.Projection.Mercator\r\n *\r\n * Elliptical Mercator projection — more complex than Spherical Mercator. Assumes that Earth is an ellipsoid. Used by the EPSG:3395 CRS.\r\n */\r\n\r\nexport var Mercator = {\r\n\tR: 6378137,\r\n\tR_MINOR: 6356752.314245179,\r\n\r\n\tbounds: new Bounds([-20037508.34279, -15496570.73972], [20037508.34279, 18764656.23138]),\r\n\r\n\tproject: function (latlng) {\r\n\t\tvar d = Math.PI / 180,\r\n\t\t    r = this.R,\r\n\t\t    y = latlng.lat * d,\r\n\t\t    tmp = this.R_MINOR / r,\r\n\t\t    e = Math.sqrt(1 - tmp * tmp),\r\n\t\t    con = e * Math.sin(y);\r\n\r\n\t\tvar ts = Math.tan(Math.PI / 4 - y / 2) / Math.pow((1 - con) / (1 + con), e / 2);\r\n\t\ty = -r * Math.log(Math.max(ts, 1E-10));\r\n\r\n\t\treturn new Point(latlng.lng * d * r, y);\r\n\t},\r\n\r\n\tunproject: function (point) {\r\n\t\tvar d = 180 / Math.PI,\r\n\t\t    r = this.R,\r\n\t\t    tmp = this.R_MINOR / r,\r\n\t\t    e = Math.sqrt(1 - tmp * tmp),\r\n\t\t    ts = Math.exp(-point.y / r),\r\n\t\t    phi = Math.PI / 2 - 2 * Math.atan(ts);\r\n\r\n\t\tfor (var i = 0, dphi = 0.1, con; i < 15 && Math.abs(dphi) > 1e-7; i++) {\r\n\t\t\tcon = e * Math.sin(phi);\r\n\t\t\tcon = Math.pow((1 - con) / (1 + con), e / 2);\r\n\t\t\tdphi = Math.PI / 2 - 2 * Math.atan(ts * con) - phi;\r\n\t\t\tphi += dphi;\r\n\t\t}\r\n\r\n\t\treturn new LatLng(phi * d, point.x * d / r);\r\n\t}\r\n};\r\n", "/*\n * @class Projection\n\n * An object with methods for projecting geographical coordinates of the world onto\n * a flat surface (and back). See [Map projection](https://en.wikipedia.org/wiki/Map_projection).\n\n * @property bounds: Bounds\n * The bounds (specified in CRS units) where the projection is valid\n\n * @method project(latlng: LatLng): Point\n * Projects geographical coordinates into a 2D point.\n * Only accepts actual `L.LatLng` instances, not arrays.\n\n * @method unproject(point: Point): LatLng\n * The inverse of `project`. Projects a 2D point into a geographical location.\n * Only accepts actual `L.Point` instances, not arrays.\n\n * Note that the projection instances do not inherit from Leaflet's `Class` object,\n * and can't be instantiated. Also, new classes can't inherit from them,\n * and methods can't be added to them with the `include` function.\n\n */\n\nexport {LonLat} from './Projection.LonLat';\nexport {Mercator} from './Projection.Mercator';\nexport {SphericalMercator} from './Projection.SphericalMercator';\n", "import {Earth} from './CRS.Earth';\r\nimport {Mercator} from '../projection/Projection.Mercator';\r\nimport {toTransformation} from '../../geometry/Transformation';\r\nimport * as Util from '../../core/Util';\r\n\r\n/*\r\n * @namespace CRS\r\n * @crs L.CRS.EPSG3395\r\n *\r\n * Rarely used by some commercial tile providers. Uses Elliptical Mercator projection.\r\n */\r\nexport var EPSG3395 = Util.extend({}, Earth, {\r\n\tcode: 'EPSG:3395',\r\n\tprojection: Mercator,\r\n\r\n\ttransformation: (function () {\r\n\t\tvar scale = 0.5 / (Math.PI * Mercator.R);\r\n\t\treturn toTransformation(scale, 0.5, -scale, 0.5);\r\n\t}())\r\n});\r\n", "import {Earth} from './CRS.Earth';\r\nimport {LonLat} from '../projection/Projection.LonLat';\r\nimport {toTransformation} from '../../geometry/Transformation';\r\nimport * as Util from '../../core/Util';\r\n\r\n/*\r\n * @namespace CRS\r\n * @crs L.CRS.EPSG4326\r\n *\r\n * A common CRS among GIS enthusiasts. Uses simple Equirectangular projection.\r\n *\r\n * Leaflet 1.0.x complies with the [TMS coordinate scheme for EPSG:4326](https://wiki.osgeo.org/wiki/Tile_Map_Service_Specification#global-geodetic),\r\n * which is a breaking change from 0.7.x behaviour.  If you are using a `TileLayer`\r\n * with this CRS, ensure that there are two 256x256 pixel tiles covering the\r\n * whole earth at zoom level zero, and that the tile coordinate origin is (-180,+90),\r\n * or (-180,-90) for `TileLayer`s with [the `tms` option](#tilelayer-tms) set.\r\n */\r\n\r\nexport var EPSG4326 = Util.extend({}, Earth, {\r\n\tcode: 'EPSG:4326',\r\n\tprojection: LonLat,\r\n\ttransformation: toTransformation(1 / 180, 1, -1 / 180, 0.5)\r\n});\r\n", "import {CRS} from './CRS';\nimport {LonLat} from '../projection/Projection.LonLat';\nimport {toTransformation} from '../../geometry/Transformation';\nimport * as Util from '../../core/Util';\n\n/*\n * @namespace CRS\n * @crs L.CRS.Simple\n *\n * A simple CRS that maps longitude and latitude into `x` and `y` directly.\n * May be used for maps of flat surfaces (e.g. game maps). Note that the `y`\n * axis should still be inverted (going from bottom to top). `distance()` returns\n * simple euclidean distance.\n */\n\nexport var Simple = Util.extend({}, CRS, {\n\tprojection: LonLat,\n\ttransformation: toTransformation(1, 0, -1, 0),\n\n\tscale: function (zoom) {\n\t\treturn Math.pow(2, zoom);\n\t},\n\n\tzoom: function (scale) {\n\t\treturn Math.log(scale) / Math.LN2;\n\t},\n\n\tdistance: function (latlng1, latlng2) {\n\t\tvar dx = latlng2.lng - latlng1.lng,\n\t\t    dy = latlng2.lat - latlng1.lat;\n\n\t\treturn Math.sqrt(dx * dx + dy * dy);\n\t},\n\n\tinfinite: true\n});\n", "import {CRS} from './CRS';\nimport {Earth} from './CRS.Earth';\nimport {EPSG3395} from './CRS.EPSG3395';\nimport {EPSG3857, EPSG900913} from './CRS.EPSG3857';\nimport {EPSG4326} from './CRS.EPSG4326';\nimport {Simple} from './CRS.Simple';\n\nCRS.Earth = Earth;\nCRS.EPSG3395 = EPSG3395;\nCRS.EPSG3857 = EPSG3857;\nCRS.EPSG900913 = EPSG900913;\nCRS.EPSG4326 = EPSG4326;\nCRS.Simple = Simple;\n\nexport {CRS};\n", "import {Evented} from '../core/Events';\nimport {Map} from '../map/Map';\nimport * as Util from '../core/Util';\n\n/*\n * @class Layer\n * @inherits Evented\n * @aka L.Layer\n * @aka ILayer\n *\n * A set of methods from the Layer base class that all Leaflet layers use.\n * Inherits all methods, options and events from `L.Evented`.\n *\n * @example\n *\n * ```js\n * var layer = L.marker(latlng).addTo(map);\n * layer.addTo(map);\n * layer.remove();\n * ```\n *\n * @event add: Event\n * Fired after the layer is added to a map\n *\n * @event remove: Event\n * Fired after the layer is removed from a map\n */\n\n\nexport var Layer = Evented.extend({\n\n\t// Classes extending `L.Layer` will inherit the following options:\n\toptions: {\n\t\t// @option pane: String = 'overlayPane'\n\t\t// By default the layer will be added to the map's [overlay pane](#map-overlaypane). Overriding this option will cause the layer to be placed on another pane by default.\n\t\tpane: 'overlayPane',\n\n\t\t// @option attribution: String = null\n\t\t// String to be shown in the attribution control, e.g. \"© OpenStreetMap contributors\". It describes the layer data and is often a legal obligation towards copyright holders and tile providers.\n\t\tattribution: null,\n\n\t\tbubblingMouseEvents: true\n\t},\n\n\t/* @section\n\t * Classes extending `L.Layer` will inherit the following methods:\n\t *\n\t * @method addTo(map: Map|LayerGroup): this\n\t * Adds the layer to the given map or layer group.\n\t */\n\taddTo: function (map) {\n\t\tmap.addLayer(this);\n\t\treturn this;\n\t},\n\n\t// @method remove: this\n\t// Removes the layer from the map it is currently active on.\n\tremove: function () {\n\t\treturn this.removeFrom(this._map || this._mapToAdd);\n\t},\n\n\t// @method removeFrom(map: Map): this\n\t// Removes the layer from the given map\n\t//\n\t// @alternative\n\t// @method removeFrom(group: LayerGroup): this\n\t// Removes the layer from the given `LayerGroup`\n\tremoveFrom: function (obj) {\n\t\tif (obj) {\n\t\t\tobj.removeLayer(this);\n\t\t}\n\t\treturn this;\n\t},\n\n\t// @method getPane(name? : String): HTMLElement\n\t// Returns the `HTMLElement` representing the named pane on the map. If `name` is omitted, returns the pane for this layer.\n\tgetPane: function (name) {\n\t\treturn this._map.getPane(name ? (this.options[name] || name) : this.options.pane);\n\t},\n\n\taddInteractiveTarget: function (targetEl) {\n\t\tthis._map._targets[Util.stamp(targetEl)] = this;\n\t\treturn this;\n\t},\n\n\tremoveInteractiveTarget: function (targetEl) {\n\t\tdelete this._map._targets[Util.stamp(targetEl)];\n\t\treturn this;\n\t},\n\n\t// @method getAttribution: String\n\t// Used by the `attribution control`, returns the [attribution option](#gridlayer-attribution).\n\tgetAttribution: function () {\n\t\treturn this.options.attribution;\n\t},\n\n\t_layerAdd: function (e) {\n\t\tvar map = e.target;\n\n\t\t// check in case layer gets added and then removed before the map is ready\n\t\tif (!map.hasLayer(this)) { return; }\n\n\t\tthis._map = map;\n\t\tthis._zoomAnimated = map._zoomAnimated;\n\n\t\tif (this.getEvents) {\n\t\t\tvar events = this.getEvents();\n\t\t\tmap.on(events, this);\n\t\t\tthis.once('remove', function () {\n\t\t\t\tmap.off(events, this);\n\t\t\t}, this);\n\t\t}\n\n\t\tthis.onAdd(map);\n\n\t\tthis.fire('add');\n\t\tmap.fire('layeradd', {layer: this});\n\t}\n});\n\n/* @section Extension methods\n * @uninheritable\n *\n * Every layer should extend from `L.Layer` and (re-)implement the following methods.\n *\n * @method onAdd(map: Map): this\n * Should contain code that creates DOM elements for the layer, adds them to `map panes` where they should belong and puts listeners on relevant map events. Called on [`map.addLayer(layer)`](#map-addlayer).\n *\n * @method onRemove(map: Map): this\n * Should contain all clean up code that removes the layer's elements from the DOM and removes listeners previously added in [`onAdd`](#layer-onadd). Called on [`map.removeLayer(layer)`](#map-removelayer).\n *\n * @method getEvents(): Object\n * This optional method should return an object like `{ viewreset: this._reset }` for [`addEventListener`](#evented-addeventlistener). The event handlers in this object will be automatically added and removed from the map with your layer.\n *\n * @method getAttribution(): String\n * This optional method should return a string containing HTML to be shown on the `Attribution control` whenever the layer is visible.\n *\n * @method beforeAdd(map: Map): this\n * Optional method. Called on [`map.addLayer(layer)`](#map-addlayer), before the layer is added to the map, before events are initialized, without waiting until the map is in a usable state. Use for early initialization only.\n */\n\n\n/* @namespace Map\n * @section Layer events\n *\n * @event layeradd: LayerEvent\n * Fired when a new layer is added to the map.\n *\n * @event layerremove: LayerEvent\n * Fired when some layer is removed from the map\n *\n * @section Methods for Layers and Controls\n */\nMap.include({\n\t// @method addLayer(layer: Layer): this\n\t// Adds the given layer to the map\n\taddLayer: function (layer) {\n\t\tif (!layer._layerAdd) {\n\t\t\tthrow new Error('The provided object is not a Layer.');\n\t\t}\n\n\t\tvar id = Util.stamp(layer);\n\t\tif (this._layers[id]) { return this; }\n\t\tthis._layers[id] = layer;\n\n\t\tlayer._mapToAdd = this;\n\n\t\tif (layer.beforeAdd) {\n\t\t\tlayer.beforeAdd(this);\n\t\t}\n\n\t\tthis.whenReady(layer._layerAdd, layer);\n\n\t\treturn this;\n\t},\n\n\t// @method removeLayer(layer: Layer): this\n\t// Removes the given layer from the map.\n\tremoveLayer: function (layer) {\n\t\tvar id = Util.stamp(layer);\n\n\t\tif (!this._layers[id]) { return this; }\n\n\t\tif (this._loaded) {\n\t\t\tlayer.onRemove(this);\n\t\t}\n\n\t\tdelete this._layers[id];\n\n\t\tif (this._loaded) {\n\t\t\tthis.fire('layerremove', {layer: layer});\n\t\t\tlayer.fire('remove');\n\t\t}\n\n\t\tlayer._map = layer._mapToAdd = null;\n\n\t\treturn this;\n\t},\n\n\t// @method hasLayer(layer: Layer): Boolean\n\t// Returns `true` if the given layer is currently added to the map\n\thasLayer: function (layer) {\n\t\treturn Util.stamp(layer) in this._layers;\n\t},\n\n\t/* @method eachLayer(fn: Function, context?: Object): this\n\t * Iterates over the layers of the map, optionally specifying context of the iterator function.\n\t * ```\n\t * map.eachLayer(function(layer){\n\t *     layer.bindPopup('Hello');\n\t * });\n\t * ```\n\t */\n\teachLayer: function (method, context) {\n\t\tfor (var i in this._layers) {\n\t\t\tmethod.call(context, this._layers[i]);\n\t\t}\n\t\treturn this;\n\t},\n\n\t_addLayers: function (layers) {\n\t\tlayers = layers ? (Util.isArray(layers) ? layers : [layers]) : [];\n\n\t\tfor (var i = 0, len = layers.length; i < len; i++) {\n\t\t\tthis.addLayer(layers[i]);\n\t\t}\n\t},\n\n\t_addZoomLimit: function (layer) {\n\t\tif (!isNaN(layer.options.maxZoom) || !isNaN(layer.options.minZoom)) {\n\t\t\tthis._zoomBoundLayers[Util.stamp(layer)] = layer;\n\t\t\tthis._updateZoomLevels();\n\t\t}\n\t},\n\n\t_removeZoomLimit: function (layer) {\n\t\tvar id = Util.stamp(layer);\n\n\t\tif (this._zoomBoundLayers[id]) {\n\t\t\tdelete this._zoomBoundLayers[id];\n\t\t\tthis._updateZoomLevels();\n\t\t}\n\t},\n\n\t_updateZoomLevels: function () {\n\t\tvar minZoom = Infinity,\n\t\t    maxZoom = -Infinity,\n\t\t    oldZoomSpan = this._getZoomSpan();\n\n\t\tfor (var i in this._zoomBoundLayers) {\n\t\t\tvar options = this._zoomBoundLayers[i].options;\n\n\t\t\tminZoom = options.minZoom === undefined ? minZoom : Math.min(minZoom, options.minZoom);\n\t\t\tmaxZoom = options.maxZoom === undefined ? maxZoom : Math.max(maxZoom, options.maxZoom);\n\t\t}\n\n\t\tthis._layersMaxZoom = maxZoom === -Infinity ? undefined : maxZoom;\n\t\tthis._layersMinZoom = minZoom === Infinity ? undefined : minZoom;\n\n\t\t// @section Map state change events\n\t\t// @event zoomlevelschange: Event\n\t\t// Fired when the number of zoomlevels on the map is changed due\n\t\t// to adding or removing a layer.\n\t\tif (oldZoomSpan !== this._getZoomSpan()) {\n\t\t\tthis.fire('zoomlevelschange');\n\t\t}\n\n\t\tif (this.options.maxZoom === undefined && this._layersMaxZoom && this.getZoom() > this._layersMaxZoom) {\n\t\t\tthis.setZoom(this._layersMaxZoom);\n\t\t}\n\t\tif (this.options.minZoom === undefined && this._layersMinZoom && this.getZoom() < this._layersMinZoom) {\n\t\t\tthis.setZoom(this._layersMinZoom);\n\t\t}\n\t}\n});\n", "\r\nimport {Layer} from './Layer';\r\nimport * as Util from '../core/Util';\r\n\r\n/*\r\n * @class LayerGroup\r\n * @aka L.LayerGroup\r\n * @inherits Interactive layer\r\n *\r\n * Used to group several layers and handle them as one. If you add it to the map,\r\n * any layers added or removed from the group will be added/removed on the map as\r\n * well. Extends `Layer`.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * L.layerGroup([marker1, marker2])\r\n * \t.addLayer(polyline)\r\n * \t.addTo(map);\r\n * ```\r\n */\r\n\r\nexport var LayerGroup = Layer.extend({\r\n\r\n\tinitialize: function (layers, options) {\r\n\t\tUtil.setOptions(this, options);\r\n\r\n\t\tthis._layers = {};\r\n\r\n\t\tvar i, len;\r\n\r\n\t\tif (layers) {\r\n\t\t\tfor (i = 0, len = layers.length; i < len; i++) {\r\n\t\t\t\tthis.addLayer(layers[i]);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t// @method addLayer(layer: Layer): this\r\n\t// Adds the given layer to the group.\r\n\taddLayer: function (layer) {\r\n\t\tvar id = this.getLayerId(layer);\r\n\r\n\t\tthis._layers[id] = layer;\r\n\r\n\t\tif (this._map) {\r\n\t\t\tthis._map.addLayer(layer);\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method removeLayer(layer: Layer): this\r\n\t// Removes the given layer from the group.\r\n\t// @alternative\r\n\t// @method removeLayer(id: Number): this\r\n\t// Removes the layer with the given internal ID from the group.\r\n\tremoveLayer: function (layer) {\r\n\t\tvar id = layer in this._layers ? layer : this.getLayerId(layer);\r\n\r\n\t\tif (this._map && this._layers[id]) {\r\n\t\t\tthis._map.removeLayer(this._layers[id]);\r\n\t\t}\r\n\r\n\t\tdelete this._layers[id];\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method hasLayer(layer: Layer): Boolean\r\n\t// Returns `true` if the given layer is currently added to the group.\r\n\t// @alternative\r\n\t// @method hasLayer(id: Number): Boolean\r\n\t// Returns `true` if the given internal ID is currently added to the group.\r\n\thasLayer: function (layer) {\r\n\t\tvar layerId = typeof layer === 'number' ? layer : this.getLayerId(layer);\r\n\t\treturn layerId in this._layers;\r\n\t},\r\n\r\n\t// @method clearLayers(): this\r\n\t// Removes all the layers from the group.\r\n\tclearLayers: function () {\r\n\t\treturn this.eachLayer(this.removeLayer, this);\r\n\t},\r\n\r\n\t// @method invoke(methodName: String, …): this\r\n\t// Calls `methodName` on every layer contained in this group, passing any\r\n\t// additional parameters. Has no effect if the layers contained do not\r\n\t// implement `methodName`.\r\n\tinvoke: function (methodName) {\r\n\t\tvar args = Array.prototype.slice.call(arguments, 1),\r\n\t\t    i, layer;\r\n\r\n\t\tfor (i in this._layers) {\r\n\t\t\tlayer = this._layers[i];\r\n\r\n\t\t\tif (layer[methodName]) {\r\n\t\t\t\tlayer[methodName].apply(layer, args);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\tonAdd: function (map) {\r\n\t\tthis.eachLayer(map.addLayer, map);\r\n\t},\r\n\r\n\tonRemove: function (map) {\r\n\t\tthis.eachLayer(map.removeLayer, map);\r\n\t},\r\n\r\n\t// @method eachLayer(fn: Function, context?: Object): this\r\n\t// Iterates over the layers of the group, optionally specifying context of the iterator function.\r\n\t// ```js\r\n\t// group.eachLayer(function (layer) {\r\n\t// \tlayer.bindPopup('Hello');\r\n\t// });\r\n\t// ```\r\n\teachLayer: function (method, context) {\r\n\t\tfor (var i in this._layers) {\r\n\t\t\tmethod.call(context, this._layers[i]);\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method getLayer(id: Number): Layer\r\n\t// Returns the layer with the given internal ID.\r\n\tgetLayer: function (id) {\r\n\t\treturn this._layers[id];\r\n\t},\r\n\r\n\t// @method getLayers(): Layer[]\r\n\t// Returns an array of all the layers added to the group.\r\n\tgetLayers: function () {\r\n\t\tvar layers = [];\r\n\t\tthis.eachLayer(layers.push, layers);\r\n\t\treturn layers;\r\n\t},\r\n\r\n\t// @method setZIndex(zIndex: Number): this\r\n\t// Calls `setZIndex` on every layer contained in this group, passing the z-index.\r\n\tsetZIndex: function (zIndex) {\r\n\t\treturn this.invoke('setZIndex', zIndex);\r\n\t},\r\n\r\n\t// @method getLayerId(layer: Layer): Number\r\n\t// Returns the internal ID for a layer\r\n\tgetLayerId: function (layer) {\r\n\t\treturn Util.stamp(layer);\r\n\t}\r\n});\r\n\r\n\r\n// @factory L.layerGroup(layers?: Layer[], options?: Object)\r\n// Create a layer group, optionally given an initial set of layers and an `options` object.\r\nexport var layerGroup = function (layers, options) {\r\n\treturn new LayerGroup(layers, options);\r\n};\r\n", "import {LayerGroup} from './LayerGroup';\r\nimport {LatLngBounds} from '../geo/LatLngBounds';\r\n\r\n/*\r\n * @class FeatureGroup\r\n * @aka L.FeatureGroup\r\n * @inherits LayerGroup\r\n *\r\n * Extended `LayerGroup` that makes it easier to do the same thing to all its member layers:\r\n *  * [`bindPopup`](#layer-bindpopup) binds a popup to all of the layers at once (likewise with [`bindTooltip`](#layer-bindtooltip))\r\n *  * Events are propagated to the `FeatureGroup`, so if the group has an event\r\n * handler, it will handle events from any of the layers. This includes mouse events\r\n * and custom events.\r\n *  * Has `layeradd` and `layerremove` events\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * L.featureGroup([marker1, marker2, polyline])\r\n * \t.bindPopup('Hello world!')\r\n * \t.on('click', function() { alert('Clicked on a member of the group!'); })\r\n * \t.addTo(map);\r\n * ```\r\n */\r\n\r\nexport var FeatureGroup = LayerGroup.extend({\r\n\r\n\taddLayer: function (layer) {\r\n\t\tif (this.hasLayer(layer)) {\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\tlayer.addEventParent(this);\r\n\r\n\t\tLayerGroup.prototype.addLayer.call(this, layer);\r\n\r\n\t\t// @event layeradd: LayerEvent\r\n\t\t// Fired when a layer is added to this `FeatureGroup`\r\n\t\treturn this.fire('layeradd', {layer: layer});\r\n\t},\r\n\r\n\tremoveLayer: function (layer) {\r\n\t\tif (!this.hasLayer(layer)) {\r\n\t\t\treturn this;\r\n\t\t}\r\n\t\tif (layer in this._layers) {\r\n\t\t\tlayer = this._layers[layer];\r\n\t\t}\r\n\r\n\t\tlayer.removeEventParent(this);\r\n\r\n\t\tLayerGroup.prototype.removeLayer.call(this, layer);\r\n\r\n\t\t// @event layerremove: LayerEvent\r\n\t\t// Fired when a layer is removed from this `FeatureGroup`\r\n\t\treturn this.fire('layerremove', {layer: layer});\r\n\t},\r\n\r\n\t// @method setStyle(style: Path options): this\r\n\t// Sets the given path options to each layer of the group that has a `setStyle` method.\r\n\tsetStyle: function (style) {\r\n\t\treturn this.invoke('setStyle', style);\r\n\t},\r\n\r\n\t// @method bringToFront(): this\r\n\t// Brings the layer group to the top of all other layers\r\n\tbringToFront: function () {\r\n\t\treturn this.invoke('bringToFront');\r\n\t},\r\n\r\n\t// @method bringToBack(): this\r\n\t// Brings the layer group to the back of all other layers\r\n\tbringToBack: function () {\r\n\t\treturn this.invoke('bringToBack');\r\n\t},\r\n\r\n\t// @method getBounds(): LatLngBounds\r\n\t// Returns the LatLngBounds of the Feature Group (created from bounds and coordinates of its children).\r\n\tgetBounds: function () {\r\n\t\tvar bounds = new LatLngBounds();\r\n\r\n\t\tfor (var id in this._layers) {\r\n\t\t\tvar layer = this._layers[id];\r\n\t\t\tbounds.extend(layer.getBounds ? layer.getBounds() : layer.getLatLng());\r\n\t\t}\r\n\t\treturn bounds;\r\n\t}\r\n});\r\n\r\n// @factory L.featureGroup(layers?: Layer[], options?: Object)\r\n// Create a feature group, optionally given an initial set of layers and an `options` object.\r\nexport var featureGroup = function (layers, options) {\r\n\treturn new FeatureGroup(layers, options);\r\n};\r\n", "import {Class} from '../../core/Class';\r\nimport {setOptions} from '../../core/Util';\r\nimport {toPoint as point} from '../../geometry/Point';\r\nimport Browser from '../../core/Browser';\r\n\r\n/*\r\n * @class Icon\r\n * @aka L.Icon\r\n *\r\n * Represents an icon to provide when creating a marker.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * var myIcon = L.icon({\r\n *     iconUrl: 'my-icon.png',\r\n *     iconRetinaUrl: 'my-icon@2x.png',\r\n *     iconSize: [38, 95],\r\n *     iconAnchor: [22, 94],\r\n *     popupAnchor: [-3, -76],\r\n *     shadowUrl: 'my-icon-shadow.png',\r\n *     shadowRetinaUrl: 'my-icon-shadow@2x.png',\r\n *     shadowSize: [68, 95],\r\n *     shadowAnchor: [22, 94]\r\n * });\r\n *\r\n * L.marker([50.505, 30.57], {icon: myIcon}).addTo(map);\r\n * ```\r\n *\r\n * `L.Icon.Default` extends `L.Icon` and is the blue icon Leaflet uses for markers by default.\r\n *\r\n */\r\n\r\nexport var Icon = Class.extend({\r\n\r\n\t/* @section\r\n\t * @aka Icon options\r\n\t *\r\n\t * @option iconUrl: String = null\r\n\t * **(required)** The URL to the icon image (absolute or relative to your script path).\r\n\t *\r\n\t * @option iconRetinaUrl: String = null\r\n\t * The URL to a retina sized version of the icon image (absolute or relative to your\r\n\t * script path). Used for Retina screen devices.\r\n\t *\r\n\t * @option iconSize: Point = null\r\n\t * Size of the icon image in pixels.\r\n\t *\r\n\t * @option iconAnchor: Point = null\r\n\t * The coordinates of the \"tip\" of the icon (relative to its top left corner). The icon\r\n\t * will be aligned so that this point is at the marker's geographical location. Centered\r\n\t * by default if size is specified, also can be set in CSS with negative margins.\r\n\t *\r\n\t * @option popupAnchor: Point = [0, 0]\r\n\t * The coordinates of the point from which popups will \"open\", relative to the icon anchor.\r\n\t *\r\n\t * @option tooltipAnchor: Point = [0, 0]\r\n\t * The coordinates of the point from which tooltips will \"open\", relative to the icon anchor.\r\n\t *\r\n\t * @option shadowUrl: String = null\r\n\t * The URL to the icon shadow image. If not specified, no shadow image will be created.\r\n\t *\r\n\t * @option shadowRetinaUrl: String = null\r\n\t *\r\n\t * @option shadowSize: Point = null\r\n\t * Size of the shadow image in pixels.\r\n\t *\r\n\t * @option shadowAnchor: Point = null\r\n\t * The coordinates of the \"tip\" of the shadow (relative to its top left corner) (the same\r\n\t * as iconAnchor if not specified).\r\n\t *\r\n\t * @option className: String = ''\r\n\t * A custom class name to assign to both icon and shadow images. Empty by default.\r\n\t */\r\n\r\n\toptions: {\r\n\t\tpopupAnchor: [0, 0],\r\n\t\ttooltipAnchor: [0, 0],\r\n\r\n\t\t// @option crossOrigin: Boolean|String = false\r\n\t\t// Whether the crossOrigin attribute will be added to the tiles.\r\n\t\t// If a String is provided, all tiles will have their crossOrigin attribute set to the String provided. This is needed if you want to access tile pixel data.\r\n\t\t// Refer to [CORS Settings](https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_settings_attributes) for valid String values.\r\n\t\tcrossOrigin: false\r\n\t},\r\n\r\n\tinitialize: function (options) {\r\n\t\tsetOptions(this, options);\r\n\t},\r\n\r\n\t// @method createIcon(oldIcon?: HTMLElement): HTMLElement\r\n\t// Called internally when the icon has to be shown, returns a `<img>` HTML element\r\n\t// styled according to the options.\r\n\tcreateIcon: function (oldIcon) {\r\n\t\treturn this._createIcon('icon', oldIcon);\r\n\t},\r\n\r\n\t// @method createShadow(oldIcon?: HTMLElement): HTMLElement\r\n\t// As `createIcon`, but for the shadow beneath it.\r\n\tcreateShadow: function (oldIcon) {\r\n\t\treturn this._createIcon('shadow', oldIcon);\r\n\t},\r\n\r\n\t_createIcon: function (name, oldIcon) {\r\n\t\tvar src = this._getIconUrl(name);\r\n\r\n\t\tif (!src) {\r\n\t\t\tif (name === 'icon') {\r\n\t\t\t\tthrow new Error('iconUrl not set in Icon options (see the docs).');\r\n\t\t\t}\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tvar img = this._createImg(src, oldIcon && oldIcon.tagName === 'IMG' ? oldIcon : null);\r\n\t\tthis._setIconStyles(img, name);\r\n\r\n\t\tif (this.options.crossOrigin || this.options.crossOrigin === '') {\r\n\t\t\timg.crossOrigin = this.options.crossOrigin === true ? '' : this.options.crossOrigin;\r\n\t\t}\r\n\r\n\t\treturn img;\r\n\t},\r\n\r\n\t_setIconStyles: function (img, name) {\r\n\t\tvar options = this.options;\r\n\t\tvar sizeOption = options[name + 'Size'];\r\n\r\n\t\tif (typeof sizeOption === 'number') {\r\n\t\t\tsizeOption = [sizeOption, sizeOption];\r\n\t\t}\r\n\r\n\t\tvar size = point(sizeOption),\r\n\t\t    anchor = point(name === 'shadow' && options.shadowAnchor || options.iconAnchor ||\r\n\t\t            size && size.divideBy(2, true));\r\n\r\n\t\timg.className = 'leaflet-marker-' + name + ' ' + (options.className || '');\r\n\r\n\t\tif (anchor) {\r\n\t\t\timg.style.marginLeft = (-anchor.x) + 'px';\r\n\t\t\timg.style.marginTop  = (-anchor.y) + 'px';\r\n\t\t}\r\n\r\n\t\tif (size) {\r\n\t\t\timg.style.width  = size.x + 'px';\r\n\t\t\timg.style.height = size.y + 'px';\r\n\t\t}\r\n\t},\r\n\r\n\t_createImg: function (src, el) {\r\n\t\tel = el || document.createElement('img');\r\n\t\tel.src = src;\r\n\t\treturn el;\r\n\t},\r\n\r\n\t_getIconUrl: function (name) {\r\n\t\treturn Browser.retina && this.options[name + 'RetinaUrl'] || this.options[name + 'Url'];\r\n\t}\r\n});\r\n\r\n\r\n// @factory L.icon(options: Icon options)\r\n// Creates an icon instance with the given options.\r\nexport function icon(options) {\r\n\treturn new Icon(options);\r\n}\r\n", "import {Icon} from './Icon';\nimport * as DomUtil from '../../dom/DomUtil';\n\n/*\n * @miniclass Icon.Default (Icon)\n * @aka L.Icon.Default\n * @section\n *\n * A trivial subclass of `Icon`, represents the icon to use in `Marker`s when\n * no icon is specified. Points to the blue marker image distributed with Leaflet\n * releases.\n *\n * In order to customize the default icon, just change the properties of `L.Icon.Default.prototype.options`\n * (which is a set of `Icon options`).\n *\n * If you want to _completely_ replace the default icon, override the\n * `L.Marker.prototype.options.icon` with your own icon instead.\n */\n\nexport var IconDefault = Icon.extend({\n\n\toptions: {\n\t\ticonUrl:       'marker-icon.png',\n\t\ticonRetinaUrl: 'marker-icon-2x.png',\n\t\tshadowUrl:     'marker-shadow.png',\n\t\ticonSize:    [25, 41],\n\t\ticonAnchor:  [12, 41],\n\t\tpopupAnchor: [1, -34],\n\t\ttooltipAnchor: [16, -28],\n\t\tshadowSize:  [41, 41]\n\t},\n\n\t_getIconUrl: function (name) {\n\t\tif (typeof IconDefault.imagePath !== 'string') {\t// Deprecated, backwards-compatibility only\n\t\t\tIconDefault.imagePath = this._detectIconPath();\n\t\t}\n\n\t\t// @option imagePath: String\n\t\t// `Icon.Default` will try to auto-detect the location of the\n\t\t// blue icon images. If you are placing these images in a non-standard\n\t\t// way, set this option to point to the right path.\n\t\treturn (this.options.imagePath || IconDefault.imagePath) + Icon.prototype._getIconUrl.call(this, name);\n\t},\n\n\t_stripUrl: function (path) {\t// separate function to use in tests\n\t\tvar strip = function (str, re, idx) {\n\t\t\tvar match = re.exec(str);\n\t\t\treturn match && match[idx];\n\t\t};\n\t\tpath = strip(path, /^url\\((['\"])?(.+)\\1\\)$/, 2);\n\t\treturn path && strip(path, /^(.*)marker-icon\\.png$/, 1);\n\t},\n\n\t_detectIconPath: function () {\n\t\tvar el = DomUtil.create('div',  'leaflet-default-icon-path', document.body);\n\t\tvar path = DomUtil.getStyle(el, 'background-image') ||\n\t\t           DomUtil.getStyle(el, 'backgroundImage');\t// IE8\n\n\t\tdocument.body.removeChild(el);\n\t\tpath = this._stripUrl(path);\n\t\tif (path) { return path; }\n\t\tvar link = document.querySelector('link[href$=\"leaflet.css\"]');\n\t\tif (!link) { return ''; }\n\t\treturn link.href.substring(0, link.href.length - 'leaflet.css'.length - 1);\n\t}\n});\n", "import {Handler} from '../../core/Handler';\nimport * as DomUtil from '../../dom/DomUtil';\nimport {Draggable} from '../../dom/Draggable';\nimport {toBounds} from '../../geometry/Bounds';\nimport {toPoint} from '../../geometry/Point';\nimport {requestAnimFrame, cancelAnimFrame} from '../../core/Util';\n\n/*\n * L.Handler.MarkerDrag is used internally by L.Marker to make the markers draggable.\n */\n\n\n/* @namespace Marker\n * @section Interaction handlers\n *\n * Interaction handlers are properties of a marker instance that allow you to control interaction behavior in runtime, enabling or disabling certain features such as dragging (see `Handler` methods). Example:\n *\n * ```js\n * marker.dragging.disable();\n * ```\n *\n * @property dragging: Handler\n * Marker dragging handler (by both mouse and touch). Only valid when the marker is on the map (Otherwise set [`marker.options.draggable`](#marker-draggable)).\n */\n\nexport var MarkerDrag = Handler.extend({\n\tinitialize: function (marker) {\n\t\tthis._marker = marker;\n\t},\n\n\taddHooks: function () {\n\t\tvar icon = this._marker._icon;\n\n\t\tif (!this._draggable) {\n\t\t\tthis._draggable = new Draggable(icon, icon, true);\n\t\t}\n\n\t\tthis._draggable.on({\n\t\t\tdragstart: this._onDragStart,\n\t\t\tpredrag: this._onPreDrag,\n\t\t\tdrag: this._onDrag,\n\t\t\tdragend: this._onDragEnd\n\t\t}, this).enable();\n\n\t\tDomUtil.addClass(icon, 'leaflet-marker-draggable');\n\t},\n\n\tremoveHooks: function () {\n\t\tthis._draggable.off({\n\t\t\tdragstart: this._onDragStart,\n\t\t\tpredrag: this._onPreDrag,\n\t\t\tdrag: this._onDrag,\n\t\t\tdragend: this._onDragEnd\n\t\t}, this).disable();\n\n\t\tif (this._marker._icon) {\n\t\t\tDomUtil.removeClass(this._marker._icon, 'leaflet-marker-draggable');\n\t\t}\n\t},\n\n\tmoved: function () {\n\t\treturn this._draggable && this._draggable._moved;\n\t},\n\n\t_adjustPan: function (e) {\n\t\tvar marker = this._marker,\n\t\t    map = marker._map,\n\t\t    speed = this._marker.options.autoPanSpeed,\n\t\t    padding = this._marker.options.autoPanPadding,\n\t\t    iconPos = DomUtil.getPosition(marker._icon),\n\t\t    bounds = map.getPixelBounds(),\n\t\t    origin = map.getPixelOrigin();\n\n\t\tvar panBounds = toBounds(\n\t\t\tbounds.min._subtract(origin).add(padding),\n\t\t\tbounds.max._subtract(origin).subtract(padding)\n\t\t);\n\n\t\tif (!panBounds.contains(iconPos)) {\n\t\t\t// Compute incremental movement\n\t\t\tvar movement = toPoint(\n\t\t\t\t(Math.max(panBounds.max.x, iconPos.x) - panBounds.max.x) / (bounds.max.x - panBounds.max.x) -\n\t\t\t\t(Math.min(panBounds.min.x, iconPos.x) - panBounds.min.x) / (bounds.min.x - panBounds.min.x),\n\n\t\t\t\t(Math.max(panBounds.max.y, iconPos.y) - panBounds.max.y) / (bounds.max.y - panBounds.max.y) -\n\t\t\t\t(Math.min(panBounds.min.y, iconPos.y) - panBounds.min.y) / (bounds.min.y - panBounds.min.y)\n\t\t\t).multiplyBy(speed);\n\n\t\t\tmap.panBy(movement, {animate: false});\n\n\t\t\tthis._draggable._newPos._add(movement);\n\t\t\tthis._draggable._startPos._add(movement);\n\n\t\t\tDomUtil.setPosition(marker._icon, this._draggable._newPos);\n\t\t\tthis._onDrag(e);\n\n\t\t\tthis._panRequest = requestAnimFrame(this._adjustPan.bind(this, e));\n\t\t}\n\t},\n\n\t_onDragStart: function () {\n\t\t// @section Dragging events\n\t\t// @event dragstart: Event\n\t\t// Fired when the user starts dragging the marker.\n\n\t\t// @event movestart: Event\n\t\t// Fired when the marker starts moving (because of dragging).\n\n\t\tthis._oldLatLng = this._marker.getLatLng();\n\n\t\t// When using ES6 imports it could not be set when `Popup` was not imported as well\n\t\tthis._marker.closePopup && this._marker.closePopup();\n\n\t\tthis._marker\n\t\t\t.fire('movestart')\n\t\t\t.fire('dragstart');\n\t},\n\n\t_onPreDrag: function (e) {\n\t\tif (this._marker.options.autoPan) {\n\t\t\tcancelAnimFrame(this._panRequest);\n\t\t\tthis._panRequest = requestAnimFrame(this._adjustPan.bind(this, e));\n\t\t}\n\t},\n\n\t_onDrag: function (e) {\n\t\tvar marker = this._marker,\n\t\t    shadow = marker._shadow,\n\t\t    iconPos = DomUtil.getPosition(marker._icon),\n\t\t    latlng = marker._map.layerPointToLatLng(iconPos);\n\n\t\t// update shadow position\n\t\tif (shadow) {\n\t\t\tDomUtil.setPosition(shadow, iconPos);\n\t\t}\n\n\t\tmarker._latlng = latlng;\n\t\te.latlng = latlng;\n\t\te.oldLatLng = this._oldLatLng;\n\n\t\t// @event drag: Event\n\t\t// Fired repeatedly while the user drags the marker.\n\t\tmarker\n\t\t    .fire('move', e)\n\t\t    .fire('drag', e);\n\t},\n\n\t_onDragEnd: function (e) {\n\t\t// @event dragend: DragEndEvent\n\t\t// Fired when the user stops dragging the marker.\n\n\t\t cancelAnimFrame(this._panRequest);\n\n\t\t// @event moveend: Event\n\t\t// Fired when the marker stops moving (because of dragging).\n\t\tdelete this._oldLatLng;\n\t\tthis._marker\n\t\t    .fire('moveend')\n\t\t    .fire('dragend', e);\n\t}\n});\n", "import {Layer} from '../Layer';\r\nimport {IconDefault} from './Icon.Default';\r\nimport * as Util from '../../core/Util';\r\nimport {toLatLng as latLng} from '../../geo/LatLng';\r\nimport {toPoint as point} from '../../geometry/Point';\r\nimport * as DomUtil from '../../dom/DomUtil';\r\nimport * as DomEvent from '../../dom/DomEvent';\r\nimport {MarkerDrag} from './Marker.Drag';\r\n\r\n/*\r\n * @class Marker\r\n * @inherits Interactive layer\r\n * @aka L.Marker\r\n * L.Marker is used to display clickable/draggable icons on the map. Extends `Layer`.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * L.marker([50.5, 30.5]).addTo(map);\r\n * ```\r\n */\r\n\r\nexport var Marker = Layer.extend({\r\n\r\n\t// @section\r\n\t// @aka Marker options\r\n\toptions: {\r\n\t\t// @option icon: Icon = *\r\n\t\t// Icon instance to use for rendering the marker.\r\n\t\t// See [Icon documentation](#L.Icon) for details on how to customize the marker icon.\r\n\t\t// If not specified, a common instance of `L.Icon.Default` is used.\r\n\t\ticon: new IconDefault(),\r\n\r\n\t\t// Option inherited from \"Interactive layer\" abstract class\r\n\t\tinteractive: true,\r\n\r\n\t\t// @option keyboard: Boolean = true\r\n\t\t// Whether the marker can be tabbed to with a keyboard and clicked by pressing enter.\r\n\t\tkeyboard: true,\r\n\r\n\t\t// @option title: String = ''\r\n\t\t// Text for the browser tooltip that appear on marker hover (no tooltip by default).\r\n\t\t// [Useful for accessibility](https://leafletjs.com/examples/accessibility/#markers-must-be-labelled).\r\n\t\ttitle: '',\r\n\r\n\t\t// @option alt: String = 'Marker'\r\n\t\t// Text for the `alt` attribute of the icon image.\r\n\t\t// [Useful for accessibility](https://leafletjs.com/examples/accessibility/#markers-must-be-labelled).\r\n\t\talt: 'Marker',\r\n\r\n\t\t// @option zIndexOffset: Number = 0\r\n\t\t// By default, marker images zIndex is set automatically based on its latitude. Use this option if you want to put the marker on top of all others (or below), specifying a high value like `1000` (or high negative value, respectively).\r\n\t\tzIndexOffset: 0,\r\n\r\n\t\t// @option opacity: Number = 1.0\r\n\t\t// The opacity of the marker.\r\n\t\topacity: 1,\r\n\r\n\t\t// @option riseOnHover: Boolean = false\r\n\t\t// If `true`, the marker will get on top of others when you hover the mouse over it.\r\n\t\triseOnHover: false,\r\n\r\n\t\t// @option riseOffset: Number = 250\r\n\t\t// The z-index offset used for the `riseOnHover` feature.\r\n\t\triseOffset: 250,\r\n\r\n\t\t// @option pane: String = 'markerPane'\r\n\t\t// `Map pane` where the markers icon will be added.\r\n\t\tpane: 'markerPane',\r\n\r\n\t\t// @option shadowPane: String = 'shadowPane'\r\n\t\t// `Map pane` where the markers shadow will be added.\r\n\t\tshadowPane: 'shadowPane',\r\n\r\n\t\t// @option bubblingMouseEvents: Boolean = false\r\n\t\t// When `true`, a mouse event on this marker will trigger the same event on the map\r\n\t\t// (unless [`L.DomEvent.stopPropagation`](#domevent-stoppropagation) is used).\r\n\t\tbubblingMouseEvents: false,\r\n\r\n\t\t// @option autoPanOnFocus: Boolean = true\r\n\t\t// When `true`, the map will pan whenever the marker is focused (via\r\n\t\t// e.g. pressing `tab` on the keyboard) to ensure the marker is\r\n\t\t// visible within the map's bounds\r\n\t\tautoPanOnFocus: true,\r\n\r\n\t\t// @section Draggable marker options\r\n\t\t// @option draggable: Boolean = false\r\n\t\t// Whether the marker is draggable with mouse/touch or not.\r\n\t\tdraggable: false,\r\n\r\n\t\t// @option autoPan: Boolean = false\r\n\t\t// Whether to pan the map when dragging this marker near its edge or not.\r\n\t\tautoPan: false,\r\n\r\n\t\t// @option autoPanPadding: Point = Point(50, 50)\r\n\t\t// Distance (in pixels to the left/right and to the top/bottom) of the\r\n\t\t// map edge to start panning the map.\r\n\t\tautoPanPadding: [50, 50],\r\n\r\n\t\t// @option autoPanSpeed: Number = 10\r\n\t\t// Number of pixels the map should pan by.\r\n\t\tautoPanSpeed: 10\r\n\t},\r\n\r\n\t/* @section\r\n\t *\r\n\t * In addition to [shared layer methods](#Layer) like `addTo()` and `remove()` and [popup methods](#Popup) like bindPopup() you can also use the following methods:\r\n\t */\r\n\r\n\tinitialize: function (latlng, options) {\r\n\t\tUtil.setOptions(this, options);\r\n\t\tthis._latlng = latLng(latlng);\r\n\t},\r\n\r\n\tonAdd: function (map) {\r\n\t\tthis._zoomAnimated = this._zoomAnimated && map.options.markerZoomAnimation;\r\n\r\n\t\tif (this._zoomAnimated) {\r\n\t\t\tmap.on('zoomanim', this._animateZoom, this);\r\n\t\t}\r\n\r\n\t\tthis._initIcon();\r\n\t\tthis.update();\r\n\t},\r\n\r\n\tonRemove: function (map) {\r\n\t\tif (this.dragging && this.dragging.enabled()) {\r\n\t\t\tthis.options.draggable = true;\r\n\t\t\tthis.dragging.removeHooks();\r\n\t\t}\r\n\t\tdelete this.dragging;\r\n\r\n\t\tif (this._zoomAnimated) {\r\n\t\t\tmap.off('zoomanim', this._animateZoom, this);\r\n\t\t}\r\n\r\n\t\tthis._removeIcon();\r\n\t\tthis._removeShadow();\r\n\t},\r\n\r\n\tgetEvents: function () {\r\n\t\treturn {\r\n\t\t\tzoom: this.update,\r\n\t\t\tviewreset: this.update\r\n\t\t};\r\n\t},\r\n\r\n\t// @method getLatLng: LatLng\r\n\t// Returns the current geographical position of the marker.\r\n\tgetLatLng: function () {\r\n\t\treturn this._latlng;\r\n\t},\r\n\r\n\t// @method setLatLng(latlng: LatLng): this\r\n\t// Changes the marker position to the given point.\r\n\tsetLatLng: function (latlng) {\r\n\t\tvar oldLatLng = this._latlng;\r\n\t\tthis._latlng = latLng(latlng);\r\n\t\tthis.update();\r\n\r\n\t\t// @event move: Event\r\n\t\t// Fired when the marker is moved via [`setLatLng`](#marker-setlatlng) or by [dragging](#marker-dragging). Old and new coordinates are included in event arguments as `oldLatLng`, `latlng`.\r\n\t\treturn this.fire('move', {oldLatLng: oldLatLng, latlng: this._latlng});\r\n\t},\r\n\r\n\t// @method setZIndexOffset(offset: Number): this\r\n\t// Changes the [zIndex offset](#marker-zindexoffset) of the marker.\r\n\tsetZIndexOffset: function (offset) {\r\n\t\tthis.options.zIndexOffset = offset;\r\n\t\treturn this.update();\r\n\t},\r\n\r\n\t// @method getIcon: Icon\r\n\t// Returns the current icon used by the marker\r\n\tgetIcon: function () {\r\n\t\treturn this.options.icon;\r\n\t},\r\n\r\n\t// @method setIcon(icon: Icon): this\r\n\t// Changes the marker icon.\r\n\tsetIcon: function (icon) {\r\n\r\n\t\tthis.options.icon = icon;\r\n\r\n\t\tif (this._map) {\r\n\t\t\tthis._initIcon();\r\n\t\t\tthis.update();\r\n\t\t}\r\n\r\n\t\tif (this._popup) {\r\n\t\t\tthis.bindPopup(this._popup, this._popup.options);\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\tgetElement: function () {\r\n\t\treturn this._icon;\r\n\t},\r\n\r\n\tupdate: function () {\r\n\r\n\t\tif (this._icon && this._map) {\r\n\t\t\tvar pos = this._map.latLngToLayerPoint(this._latlng).round();\r\n\t\t\tthis._setPos(pos);\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t_initIcon: function () {\r\n\t\tvar options = this.options,\r\n\t\t    classToAdd = 'leaflet-zoom-' + (this._zoomAnimated ? 'animated' : 'hide');\r\n\r\n\t\tvar icon = options.icon.createIcon(this._icon),\r\n\t\t    addIcon = false;\r\n\r\n\t\t// if we're not reusing the icon, remove the old one and init new one\r\n\t\tif (icon !== this._icon) {\r\n\t\t\tif (this._icon) {\r\n\t\t\t\tthis._removeIcon();\r\n\t\t\t}\r\n\t\t\taddIcon = true;\r\n\r\n\t\t\tif (options.title) {\r\n\t\t\t\ticon.title = options.title;\r\n\t\t\t}\r\n\r\n\t\t\tif (icon.tagName === 'IMG') {\r\n\t\t\t\ticon.alt = options.alt || '';\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tDomUtil.addClass(icon, classToAdd);\r\n\r\n\t\tif (options.keyboard) {\r\n\t\t\ticon.tabIndex = '0';\r\n\t\t\ticon.setAttribute('role', 'button');\r\n\t\t}\r\n\r\n\t\tthis._icon = icon;\r\n\r\n\t\tif (options.riseOnHover) {\r\n\t\t\tthis.on({\r\n\t\t\t\tmouseover: this._bringToFront,\r\n\t\t\t\tmouseout: this._resetZIndex\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (this.options.autoPanOnFocus) {\r\n\t\t\tDomEvent.on(icon, 'focus', this._panOnFocus, this);\r\n\t\t}\r\n\r\n\t\tvar newShadow = options.icon.createShadow(this._shadow),\r\n\t\t    addShadow = false;\r\n\r\n\t\tif (newShadow !== this._shadow) {\r\n\t\t\tthis._removeShadow();\r\n\t\t\taddShadow = true;\r\n\t\t}\r\n\r\n\t\tif (newShadow) {\r\n\t\t\tDomUtil.addClass(newShadow, classToAdd);\r\n\t\t\tnewShadow.alt = '';\r\n\t\t}\r\n\t\tthis._shadow = newShadow;\r\n\r\n\r\n\t\tif (options.opacity < 1) {\r\n\t\t\tthis._updateOpacity();\r\n\t\t}\r\n\r\n\r\n\t\tif (addIcon) {\r\n\t\t\tthis.getPane().appendChild(this._icon);\r\n\t\t}\r\n\t\tthis._initInteraction();\r\n\t\tif (newShadow && addShadow) {\r\n\t\t\tthis.getPane(options.shadowPane).appendChild(this._shadow);\r\n\t\t}\r\n\t},\r\n\r\n\t_removeIcon: function () {\r\n\t\tif (this.options.riseOnHover) {\r\n\t\t\tthis.off({\r\n\t\t\t\tmouseover: this._bringToFront,\r\n\t\t\t\tmouseout: this._resetZIndex\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (this.options.autoPanOnFocus) {\r\n\t\t\tDomEvent.off(this._icon, 'focus', this._panOnFocus, this);\r\n\t\t}\r\n\r\n\t\tDomUtil.remove(this._icon);\r\n\t\tthis.removeInteractiveTarget(this._icon);\r\n\r\n\t\tthis._icon = null;\r\n\t},\r\n\r\n\t_removeShadow: function () {\r\n\t\tif (this._shadow) {\r\n\t\t\tDomUtil.remove(this._shadow);\r\n\t\t}\r\n\t\tthis._shadow = null;\r\n\t},\r\n\r\n\t_setPos: function (pos) {\r\n\r\n\t\tif (this._icon) {\r\n\t\t\tDomUtil.setPosition(this._icon, pos);\r\n\t\t}\r\n\r\n\t\tif (this._shadow) {\r\n\t\t\tDomUtil.setPosition(this._shadow, pos);\r\n\t\t}\r\n\r\n\t\tthis._zIndex = pos.y + this.options.zIndexOffset;\r\n\r\n\t\tthis._resetZIndex();\r\n\t},\r\n\r\n\t_updateZIndex: function (offset) {\r\n\t\tif (this._icon) {\r\n\t\t\tthis._icon.style.zIndex = this._zIndex + offset;\r\n\t\t}\r\n\t},\r\n\r\n\t_animateZoom: function (opt) {\r\n\t\tvar pos = this._map._latLngToNewLayerPoint(this._latlng, opt.zoom, opt.center).round();\r\n\r\n\t\tthis._setPos(pos);\r\n\t},\r\n\r\n\t_initInteraction: function () {\r\n\r\n\t\tif (!this.options.interactive) { return; }\r\n\r\n\t\tDomUtil.addClass(this._icon, 'leaflet-interactive');\r\n\r\n\t\tthis.addInteractiveTarget(this._icon);\r\n\r\n\t\tif (MarkerDrag) {\r\n\t\t\tvar draggable = this.options.draggable;\r\n\t\t\tif (this.dragging) {\r\n\t\t\t\tdraggable = this.dragging.enabled();\r\n\t\t\t\tthis.dragging.disable();\r\n\t\t\t}\r\n\r\n\t\t\tthis.dragging = new MarkerDrag(this);\r\n\r\n\t\t\tif (draggable) {\r\n\t\t\t\tthis.dragging.enable();\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t// @method setOpacity(opacity: Number): this\r\n\t// Changes the opacity of the marker.\r\n\tsetOpacity: function (opacity) {\r\n\t\tthis.options.opacity = opacity;\r\n\t\tif (this._map) {\r\n\t\t\tthis._updateOpacity();\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t_updateOpacity: function () {\r\n\t\tvar opacity = this.options.opacity;\r\n\r\n\t\tif (this._icon) {\r\n\t\t\tDomUtil.setOpacity(this._icon, opacity);\r\n\t\t}\r\n\r\n\t\tif (this._shadow) {\r\n\t\t\tDomUtil.setOpacity(this._shadow, opacity);\r\n\t\t}\r\n\t},\r\n\r\n\t_bringToFront: function () {\r\n\t\tthis._updateZIndex(this.options.riseOffset);\r\n\t},\r\n\r\n\t_resetZIndex: function () {\r\n\t\tthis._updateZIndex(0);\r\n\t},\r\n\r\n\t_panOnFocus: function () {\r\n\t\tvar map = this._map;\r\n\t\tif (!map) { return; }\r\n\r\n\t\tvar iconOpts = this.options.icon.options;\r\n\t\tvar size = iconOpts.iconSize ? point(iconOpts.iconSize) : point(0, 0);\r\n\t\tvar anchor = iconOpts.iconAnchor ? point(iconOpts.iconAnchor) : point(0, 0);\r\n\r\n\t\tmap.panInside(this._latlng, {\r\n\t\t\tpaddingTopLeft: anchor,\r\n\t\t\tpaddingBottomRight: size.subtract(anchor)\r\n\t\t});\r\n\t},\r\n\r\n\t_getPopupAnchor: function () {\r\n\t\treturn this.options.icon.options.popupAnchor;\r\n\t},\r\n\r\n\t_getTooltipAnchor: function () {\r\n\t\treturn this.options.icon.options.tooltipAnchor;\r\n\t}\r\n});\r\n\r\n\r\n// factory L.marker(latlng: LatLng, options? : Marker options)\r\n\r\n// @factory L.marker(latlng: LatLng, options? : Marker options)\r\n// Instantiates a Marker object given a geographical point and optionally an options object.\r\nexport function marker(latlng, options) {\r\n\treturn new Marker(latlng, options);\r\n}\r\n", "import {Layer} from '../Layer';\nimport * as Util from '../../core/Util';\n\n/*\n * @class Path\n * @aka L.Path\n * @inherits Interactive layer\n *\n * An abstract class that contains options and constants shared between vector\n * overlays (Polygon, Polyline, Circle). Do not use it directly. Extends `Layer`.\n */\n\nexport var Path = Layer.extend({\n\n\t// @section\n\t// @aka Path options\n\toptions: {\n\t\t// @option stroke: Boolean = true\n\t\t// Whether to draw stroke along the path. Set it to `false` to disable borders on polygons or circles.\n\t\tstroke: true,\n\n\t\t// @option color: String = '#3388ff'\n\t\t// Stroke color\n\t\tcolor: '#3388ff',\n\n\t\t// @option weight: Number = 3\n\t\t// Stroke width in pixels\n\t\tweight: 3,\n\n\t\t// @option opacity: Number = 1.0\n\t\t// Stroke opacity\n\t\topacity: 1,\n\n\t\t// @option lineCap: String= 'round'\n\t\t// A string that defines [shape to be used at the end](https://developer.mozilla.org/docs/Web/SVG/Attribute/stroke-linecap) of the stroke.\n\t\tlineCap: 'round',\n\n\t\t// @option lineJoin: String = 'round'\n\t\t// A string that defines [shape to be used at the corners](https://developer.mozilla.org/docs/Web/SVG/Attribute/stroke-linejoin) of the stroke.\n\t\tlineJoin: 'round',\n\n\t\t// @option dashArray: String = null\n\t\t// A string that defines the stroke [dash pattern](https://developer.mozilla.org/docs/Web/SVG/Attribute/stroke-dasharray). Doesn't work on `Canvas`-powered layers in [some old browsers](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/setLineDash#Browser_compatibility).\n\t\tdashArray: null,\n\n\t\t// @option dashOffset: String = null\n\t\t// A string that defines the [distance into the dash pattern to start the dash](https://developer.mozilla.org/docs/Web/SVG/Attribute/stroke-dashoffset). Doesn't work on `Canvas`-powered layers in [some old browsers](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/setLineDash#Browser_compatibility).\n\t\tdashOffset: null,\n\n\t\t// @option fill: Boolean = depends\n\t\t// Whether to fill the path with color. Set it to `false` to disable filling on polygons or circles.\n\t\tfill: false,\n\n\t\t// @option fillColor: String = *\n\t\t// Fill color. Defaults to the value of the [`color`](#path-color) option\n\t\tfillColor: null,\n\n\t\t// @option fillOpacity: Number = 0.2\n\t\t// Fill opacity.\n\t\tfillOpacity: 0.2,\n\n\t\t// @option fillRule: String = 'evenodd'\n\t\t// A string that defines [how the inside of a shape](https://developer.mozilla.org/docs/Web/SVG/Attribute/fill-rule) is determined.\n\t\tfillRule: 'evenodd',\n\n\t\t// className: '',\n\n\t\t// Option inherited from \"Interactive layer\" abstract class\n\t\tinteractive: true,\n\n\t\t// @option bubblingMouseEvents: Boolean = true\n\t\t// When `true`, a mouse event on this path will trigger the same event on the map\n\t\t// (unless [`L.DomEvent.stopPropagation`](#domevent-stoppropagation) is used).\n\t\tbubblingMouseEvents: true\n\t},\n\n\tbeforeAdd: function (map) {\n\t\t// Renderer is set here because we need to call renderer.getEvents\n\t\t// before this.getEvents.\n\t\tthis._renderer = map.getRenderer(this);\n\t},\n\n\tonAdd: function () {\n\t\tthis._renderer._initPath(this);\n\t\tthis._reset();\n\t\tthis._renderer._addPath(this);\n\t},\n\n\tonRemove: function () {\n\t\tthis._renderer._removePath(this);\n\t},\n\n\t// @method redraw(): this\n\t// Redraws the layer. Sometimes useful after you changed the coordinates that the path uses.\n\tredraw: function () {\n\t\tif (this._map) {\n\t\t\tthis._renderer._updatePath(this);\n\t\t}\n\t\treturn this;\n\t},\n\n\t// @method setStyle(style: Path options): this\n\t// Changes the appearance of a Path based on the options in the `Path options` object.\n\tsetStyle: function (style) {\n\t\tUtil.setOptions(this, style);\n\t\tif (this._renderer) {\n\t\t\tthis._renderer._updateStyle(this);\n\t\t\tif (this.options.stroke && style && Object.prototype.hasOwnProperty.call(style, 'weight')) {\n\t\t\t\tthis._updateBounds();\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t},\n\n\t// @method bringToFront(): this\n\t// Brings the layer to the top of all path layers.\n\tbringToFront: function () {\n\t\tif (this._renderer) {\n\t\t\tthis._renderer._bringToFront(this);\n\t\t}\n\t\treturn this;\n\t},\n\n\t// @method bringToBack(): this\n\t// Brings the layer to the bottom of all path layers.\n\tbringToBack: function () {\n\t\tif (this._renderer) {\n\t\t\tthis._renderer._bringToBack(this);\n\t\t}\n\t\treturn this;\n\t},\n\n\tgetElement: function () {\n\t\treturn this._path;\n\t},\n\n\t_reset: function () {\n\t\t// defined in child classes\n\t\tthis._project();\n\t\tthis._update();\n\t},\n\n\t_clickTolerance: function () {\n\t\t// used when doing hit detection for Canvas layers\n\t\treturn (this.options.stroke ? this.options.weight / 2 : 0) +\n\t\t  (this._renderer.options.tolerance || 0);\n\t}\n});\n", "import {Path} from './Path';\nimport * as Util from '../../core/Util';\nimport {toLatLng} from '../../geo/LatLng';\nimport {Bounds} from '../../geometry/Bounds';\n\n\n/*\n * @class CircleMarker\n * @aka L.CircleMarker\n * @inherits Path\n *\n * A circle of a fixed size with radius specified in pixels. Extends `Path`.\n */\n\nexport var CircleMarker = Path.extend({\n\n\t// @section\n\t// @aka CircleMarker options\n\toptions: {\n\t\tfill: true,\n\n\t\t// @option radius: Number = 10\n\t\t// Radius of the circle marker, in pixels\n\t\tradius: 10\n\t},\n\n\tinitialize: function (latlng, options) {\n\t\tUtil.setOptions(this, options);\n\t\tthis._latlng = toLatLng(latlng);\n\t\tthis._radius = this.options.radius;\n\t},\n\n\t// @method setLatLng(latLng: LatLng): this\n\t// Sets the position of a circle marker to a new location.\n\tsetLatLng: function (latlng) {\n\t\tvar oldLatLng = this._latlng;\n\t\tthis._latlng = toLatLng(latlng);\n\t\tthis.redraw();\n\n\t\t// @event move: Event\n\t\t// Fired when the marker is moved via [`setLatLng`](#circlemarker-setlatlng). Old and new coordinates are included in event arguments as `oldLatLng`, `latlng`.\n\t\treturn this.fire('move', {oldLatLng: oldLatLng, latlng: this._latlng});\n\t},\n\n\t// @method getLatLng(): LatLng\n\t// Returns the current geographical position of the circle marker\n\tgetLatLng: function () {\n\t\treturn this._latlng;\n\t},\n\n\t// @method setRadius(radius: Number): this\n\t// Sets the radius of a circle marker. Units are in pixels.\n\tsetRadius: function (radius) {\n\t\tthis.options.radius = this._radius = radius;\n\t\treturn this.redraw();\n\t},\n\n\t// @method getRadius(): Number\n\t// Returns the current radius of the circle\n\tgetRadius: function () {\n\t\treturn this._radius;\n\t},\n\n\tsetStyle : function (options) {\n\t\tvar radius = options && options.radius || this._radius;\n\t\tPath.prototype.setStyle.call(this, options);\n\t\tthis.setRadius(radius);\n\t\treturn this;\n\t},\n\n\t_project: function () {\n\t\tthis._point = this._map.latLngToLayerPoint(this._latlng);\n\t\tthis._updateBounds();\n\t},\n\n\t_updateBounds: function () {\n\t\tvar r = this._radius,\n\t\t    r2 = this._radiusY || r,\n\t\t    w = this._clickTolerance(),\n\t\t    p = [r + w, r2 + w];\n\t\tthis._pxBounds = new Bounds(this._point.subtract(p), this._point.add(p));\n\t},\n\n\t_update: function () {\n\t\tif (this._map) {\n\t\t\tthis._updatePath();\n\t\t}\n\t},\n\n\t_updatePath: function () {\n\t\tthis._renderer._updateCircle(this);\n\t},\n\n\t_empty: function () {\n\t\treturn this._radius && !this._renderer._bounds.intersects(this._pxBounds);\n\t},\n\n\t// Needed by the `Canvas` renderer for interactivity\n\t_containsPoint: function (p) {\n\t\treturn p.distanceTo(this._point) <= this._radius + this._clickTolerance();\n\t}\n});\n\n\n// @factory L.circleMarker(latlng: LatLng, options?: CircleMarker options)\n// Instantiates a circle marker object given a geographical point, and an optional options object.\nexport function circleMarker(latlng, options) {\n\treturn new CircleMarker(latlng, options);\n}\n", "import {CircleMarker} from './CircleMarker';\nimport {Path} from './Path';\nimport * as Util from '../../core/Util';\nimport {toLatLng} from '../../geo/LatLng';\nimport {LatLngBounds} from '../../geo/LatLngBounds';\nimport {Earth} from '../../geo/crs/CRS.Earth';\n\n\n/*\n * @class Circle\n * @aka L.Circle\n * @inherits CircleMarker\n *\n * A class for drawing circle overlays on a map. Extends `CircleMarker`.\n *\n * It's an approximation and starts to diverge from a real circle closer to poles (due to projection distortion).\n *\n * @example\n *\n * ```js\n * L.circle([50.5, 30.5], {radius: 200}).addTo(map);\n * ```\n */\n\nexport var Circle = CircleMarker.extend({\n\n\tinitialize: function (latlng, options, legacyOptions) {\n\t\tif (typeof options === 'number') {\n\t\t\t// Backwards compatibility with 0.7.x factory (latlng, radius, options?)\n\t\t\toptions = Util.extend({}, legacyOptions, {radius: options});\n\t\t}\n\t\tUtil.setOptions(this, options);\n\t\tthis._latlng = toLatLng(latlng);\n\n\t\tif (isNaN(this.options.radius)) { throw new Error('Circle radius cannot be NaN'); }\n\n\t\t// @section\n\t\t// @aka Circle options\n\t\t// @option radius: Number; Radius of the circle, in meters.\n\t\tthis._mRadius = this.options.radius;\n\t},\n\n\t// @method setRadius(radius: Number): this\n\t// Sets the radius of a circle. Units are in meters.\n\tsetRadius: function (radius) {\n\t\tthis._mRadius = radius;\n\t\treturn this.redraw();\n\t},\n\n\t// @method getRadius(): Number\n\t// Returns the current radius of a circle. Units are in meters.\n\tgetRadius: function () {\n\t\treturn this._mRadius;\n\t},\n\n\t// @method getBounds(): LatLngBounds\n\t// Returns the `LatLngBounds` of the path.\n\tgetBounds: function () {\n\t\tvar half = [this._radius, this._radiusY || this._radius];\n\n\t\treturn new LatLngBounds(\n\t\t\tthis._map.layerPointToLatLng(this._point.subtract(half)),\n\t\t\tthis._map.layerPointToLatLng(this._point.add(half)));\n\t},\n\n\tsetStyle: Path.prototype.setStyle,\n\n\t_project: function () {\n\n\t\tvar lng = this._latlng.lng,\n\t\t    lat = this._latlng.lat,\n\t\t    map = this._map,\n\t\t    crs = map.options.crs;\n\n\t\tif (crs.distance === Earth.distance) {\n\t\t\tvar d = Math.PI / 180,\n\t\t\t    latR = (this._mRadius / Earth.R) / d,\n\t\t\t    top = map.project([lat + latR, lng]),\n\t\t\t    bottom = map.project([lat - latR, lng]),\n\t\t\t    p = top.add(bottom).divideBy(2),\n\t\t\t    lat2 = map.unproject(p).lat,\n\t\t\t    lngR = Math.acos((Math.cos(latR * d) - Math.sin(lat * d) * Math.sin(lat2 * d)) /\n\t\t\t            (Math.cos(lat * d) * Math.cos(lat2 * d))) / d;\n\n\t\t\tif (isNaN(lngR) || lngR === 0) {\n\t\t\t\tlngR = latR / Math.cos(Math.PI / 180 * lat); // Fallback for edge case, #2425\n\t\t\t}\n\n\t\t\tthis._point = p.subtract(map.getPixelOrigin());\n\t\t\tthis._radius = isNaN(lngR) ? 0 : p.x - map.project([lat2, lng - lngR]).x;\n\t\t\tthis._radiusY = p.y - top.y;\n\n\t\t} else {\n\t\t\tvar latlng2 = crs.unproject(crs.project(this._latlng).subtract([this._mRadius, 0]));\n\n\t\t\tthis._point = map.latLngToLayerPoint(this._latlng);\n\t\t\tthis._radius = this._point.x - map.latLngToLayerPoint(latlng2).x;\n\t\t}\n\n\t\tthis._updateBounds();\n\t}\n});\n\n// @factory L.circle(latlng: LatLng, options?: Circle options)\n// Instantiates a circle object given a geographical point, and an options object\n// which contains the circle radius.\n// @alternative\n// @factory L.circle(latlng: LatLng, radius: Number, options?: Circle options)\n// Obsolete way of instantiating a circle, for compatibility with 0.7.x code.\n// Do not use in new applications or plugins.\nexport function circle(latlng, options, legacyOptions) {\n\treturn new Circle(latlng, options, legacyOptions);\n}\n", "import {Path} from './Path';\nimport * as Util from '../../core/Util';\nimport * as LineUtil from '../../geometry/LineUtil';\nimport {LatLng, toLatLng} from '../../geo/LatLng';\nimport {LatLngBounds} from '../../geo/LatLngBounds';\nimport {Bounds} from '../../geometry/Bounds';\nimport {Point} from '../../geometry/Point';\n\n/*\n * @class Polyline\n * @aka L.Polyline\n * @inherits Path\n *\n * A class for drawing polyline overlays on a map. Extends `Path`.\n *\n * @example\n *\n * ```js\n * // create a red polyline from an array of LatLng points\n * var latlngs = [\n * \t[45.51, -122.68],\n * \t[37.77, -122.43],\n * \t[34.04, -118.2]\n * ];\n *\n * var polyline = L.polyline(latlngs, {color: 'red'}).addTo(map);\n *\n * // zoom the map to the polyline\n * map.fitBounds(polyline.getBounds());\n * ```\n *\n * You can also pass a multi-dimensional array to represent a `MultiPolyline` shape:\n *\n * ```js\n * // create a red polyline from an array of arrays of LatLng points\n * var latlngs = [\n * \t[[45.51, -122.68],\n * \t [37.77, -122.43],\n * \t [34.04, -118.2]],\n * \t[[40.78, -73.91],\n * \t [41.83, -87.62],\n * \t [32.76, -96.72]]\n * ];\n * ```\n */\n\n\nexport var Polyline = Path.extend({\n\n\t// @section\n\t// @aka Polyline options\n\toptions: {\n\t\t// @option smoothFactor: Number = 1.0\n\t\t// How much to simplify the polyline on each zoom level. More means\n\t\t// better performance and smoother look, and less means more accurate representation.\n\t\tsmoothFactor: 1.0,\n\n\t\t// @option noClip: Boolean = false\n\t\t// Disable polyline clipping.\n\t\tnoClip: false\n\t},\n\n\tinitialize: function (latlngs, options) {\n\t\tUtil.setOptions(this, options);\n\t\tthis._setLatLngs(latlngs);\n\t},\n\n\t// @method getLatLngs(): LatLng[]\n\t// Returns an array of the points in the path, or nested arrays of points in case of multi-polyline.\n\tgetLatLngs: function () {\n\t\treturn this._latlngs;\n\t},\n\n\t// @method setLatLngs(latlngs: LatLng[]): this\n\t// Replaces all the points in the polyline with the given array of geographical points.\n\tsetLatLngs: function (latlngs) {\n\t\tthis._setLatLngs(latlngs);\n\t\treturn this.redraw();\n\t},\n\n\t// @method isEmpty(): Boolean\n\t// Returns `true` if the Polyline has no LatLngs.\n\tisEmpty: function () {\n\t\treturn !this._latlngs.length;\n\t},\n\n\t// @method closestLayerPoint(p: Point): Point\n\t// Returns the point closest to `p` on the Polyline.\n\tclosestLayerPoint: function (p) {\n\t\tvar minDistance = Infinity,\n\t\t    minPoint = null,\n\t\t    closest = LineUtil._sqClosestPointOnSegment,\n\t\t    p1, p2;\n\n\t\tfor (var j = 0, jLen = this._parts.length; j < jLen; j++) {\n\t\t\tvar points = this._parts[j];\n\n\t\t\tfor (var i = 1, len = points.length; i < len; i++) {\n\t\t\t\tp1 = points[i - 1];\n\t\t\t\tp2 = points[i];\n\n\t\t\t\tvar sqDist = closest(p, p1, p2, true);\n\n\t\t\t\tif (sqDist < minDistance) {\n\t\t\t\t\tminDistance = sqDist;\n\t\t\t\t\tminPoint = closest(p, p1, p2);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (minPoint) {\n\t\t\tminPoint.distance = Math.sqrt(minDistance);\n\t\t}\n\t\treturn minPoint;\n\t},\n\n\t// @method getCenter(): LatLng\n\t// Returns the center ([centroid](https://en.wikipedia.org/wiki/Centroid)) of the polyline.\n\tgetCenter: function () {\n\t\t// throws error when not yet added to map as this center calculation requires projected coordinates\n\t\tif (!this._map) {\n\t\t\tthrow new Error('Must add layer to map before using getCenter()');\n\t\t}\n\t\treturn LineUtil.polylineCenter(this._defaultShape(), this._map.options.crs);\n\t},\n\n\t// @method getBounds(): LatLngBounds\n\t// Returns the `LatLngBounds` of the path.\n\tgetBounds: function () {\n\t\treturn this._bounds;\n\t},\n\n\t// @method addLatLng(latlng: LatLng, latlngs?: LatLng[]): this\n\t// Adds a given point to the polyline. By default, adds to the first ring of\n\t// the polyline in case of a multi-polyline, but can be overridden by passing\n\t// a specific ring as a LatLng array (that you can earlier access with [`getLatLngs`](#polyline-getlatlngs)).\n\taddLatLng: function (latlng, latlngs) {\n\t\tlatlngs = latlngs || this._defaultShape();\n\t\tlatlng = toLatLng(latlng);\n\t\tlatlngs.push(latlng);\n\t\tthis._bounds.extend(latlng);\n\t\treturn this.redraw();\n\t},\n\n\t_setLatLngs: function (latlngs) {\n\t\tthis._bounds = new LatLngBounds();\n\t\tthis._latlngs = this._convertLatLngs(latlngs);\n\t},\n\n\t_defaultShape: function () {\n\t\treturn LineUtil.isFlat(this._latlngs) ? this._latlngs : this._latlngs[0];\n\t},\n\n\t// recursively convert latlngs input into actual LatLng instances; calculate bounds along the way\n\t_convertLatLngs: function (latlngs) {\n\t\tvar result = [],\n\t\t    flat = LineUtil.isFlat(latlngs);\n\n\t\tfor (var i = 0, len = latlngs.length; i < len; i++) {\n\t\t\tif (flat) {\n\t\t\t\tresult[i] = toLatLng(latlngs[i]);\n\t\t\t\tthis._bounds.extend(result[i]);\n\t\t\t} else {\n\t\t\t\tresult[i] = this._convertLatLngs(latlngs[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t},\n\n\t_project: function () {\n\t\tvar pxBounds = new Bounds();\n\t\tthis._rings = [];\n\t\tthis._projectLatlngs(this._latlngs, this._rings, pxBounds);\n\n\t\tif (this._bounds.isValid() && pxBounds.isValid()) {\n\t\t\tthis._rawPxBounds = pxBounds;\n\t\t\tthis._updateBounds();\n\t\t}\n\t},\n\n\t_updateBounds: function () {\n\t\tvar w = this._clickTolerance(),\n\t\t    p = new Point(w, w);\n\n\t\tif (!this._rawPxBounds) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._pxBounds = new Bounds([\n\t\t\tthis._rawPxBounds.min.subtract(p),\n\t\t\tthis._rawPxBounds.max.add(p)\n\t\t]);\n\t},\n\n\t// recursively turns latlngs into a set of rings with projected coordinates\n\t_projectLatlngs: function (latlngs, result, projectedBounds) {\n\t\tvar flat = latlngs[0] instanceof LatLng,\n\t\t    len = latlngs.length,\n\t\t    i, ring;\n\n\t\tif (flat) {\n\t\t\tring = [];\n\t\t\tfor (i = 0; i < len; i++) {\n\t\t\t\tring[i] = this._map.latLngToLayerPoint(latlngs[i]);\n\t\t\t\tprojectedBounds.extend(ring[i]);\n\t\t\t}\n\t\t\tresult.push(ring);\n\t\t} else {\n\t\t\tfor (i = 0; i < len; i++) {\n\t\t\t\tthis._projectLatlngs(latlngs[i], result, projectedBounds);\n\t\t\t}\n\t\t}\n\t},\n\n\t// clip polyline by renderer bounds so that we have less to render for performance\n\t_clipPoints: function () {\n\t\tvar bounds = this._renderer._bounds;\n\n\t\tthis._parts = [];\n\t\tif (!this._pxBounds || !this._pxBounds.intersects(bounds)) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.options.noClip) {\n\t\t\tthis._parts = this._rings;\n\t\t\treturn;\n\t\t}\n\n\t\tvar parts = this._parts,\n\t\t    i, j, k, len, len2, segment, points;\n\n\t\tfor (i = 0, k = 0, len = this._rings.length; i < len; i++) {\n\t\t\tpoints = this._rings[i];\n\n\t\t\tfor (j = 0, len2 = points.length; j < len2 - 1; j++) {\n\t\t\t\tsegment = LineUtil.clipSegment(points[j], points[j + 1], bounds, j, true);\n\n\t\t\t\tif (!segment) { continue; }\n\n\t\t\t\tparts[k] = parts[k] || [];\n\t\t\t\tparts[k].push(segment[0]);\n\n\t\t\t\t// if segment goes out of screen, or it's the last one, it's the end of the line part\n\t\t\t\tif ((segment[1] !== points[j + 1]) || (j === len2 - 2)) {\n\t\t\t\t\tparts[k].push(segment[1]);\n\t\t\t\t\tk++;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// simplify each clipped part of the polyline for performance\n\t_simplifyPoints: function () {\n\t\tvar parts = this._parts,\n\t\t    tolerance = this.options.smoothFactor;\n\n\t\tfor (var i = 0, len = parts.length; i < len; i++) {\n\t\t\tparts[i] = LineUtil.simplify(parts[i], tolerance);\n\t\t}\n\t},\n\n\t_update: function () {\n\t\tif (!this._map) { return; }\n\n\t\tthis._clipPoints();\n\t\tthis._simplifyPoints();\n\t\tthis._updatePath();\n\t},\n\n\t_updatePath: function () {\n\t\tthis._renderer._updatePoly(this);\n\t},\n\n\t// Needed by the `Canvas` renderer for interactivity\n\t_containsPoint: function (p, closed) {\n\t\tvar i, j, k, len, len2, part,\n\t\t    w = this._clickTolerance();\n\n\t\tif (!this._pxBounds || !this._pxBounds.contains(p)) { return false; }\n\n\t\t// hit detection for polylines\n\t\tfor (i = 0, len = this._parts.length; i < len; i++) {\n\t\t\tpart = this._parts[i];\n\n\t\t\tfor (j = 0, len2 = part.length, k = len2 - 1; j < len2; k = j++) {\n\t\t\t\tif (!closed && (j === 0)) { continue; }\n\n\t\t\t\tif (LineUtil.pointToSegmentDistance(p, part[k], part[j]) <= w) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n});\n\n// @factory L.polyline(latlngs: LatLng[], options?: Polyline options)\n// Instantiates a polyline object given an array of geographical points and\n// optionally an options object. You can create a `Polyline` object with\n// multiple separate lines (`MultiPolyline`) by passing an array of arrays\n// of geographic points.\nexport function polyline(latlngs, options) {\n\treturn new Polyline(latlngs, options);\n}\n\n// Retrocompat. Allow plugins to support Leaflet versions before and after 1.1.\nPolyline._flat = LineUtil._flat;\n", "import {Polyline} from './Polyline';\nimport {LatLng} from '../../geo/LatLng';\nimport * as LineUtil from '../../geometry/LineUtil';\nimport {Point} from '../../geometry/Point';\nimport {Bounds} from '../../geometry/Bounds';\nimport * as PolyUtil from '../../geometry/PolyUtil';\n\n/*\n * @class Polygon\n * @aka L.Polygon\n * @inherits Polyline\n *\n * A class for drawing polygon overlays on a map. Extends `Polyline`.\n *\n * Note that points you pass when creating a polygon shouldn't have an additional last point equal to the first one — it's better to filter out such points.\n *\n *\n * @example\n *\n * ```js\n * // create a red polygon from an array of LatLng points\n * var latlngs = [[37, -109.05],[41, -109.03],[41, -102.05],[37, -102.04]];\n *\n * var polygon = L.polygon(latlngs, {color: 'red'}).addTo(map);\n *\n * // zoom the map to the polygon\n * map.fitBounds(polygon.getBounds());\n * ```\n *\n * You can also pass an array of arrays of latlngs, with the first array representing the outer shape and the other arrays representing holes in the outer shape:\n *\n * ```js\n * var latlngs = [\n *   [[37, -109.05],[41, -109.03],[41, -102.05],[37, -102.04]], // outer ring\n *   [[37.29, -108.58],[40.71, -108.58],[40.71, -102.50],[37.29, -102.50]] // hole\n * ];\n * ```\n *\n * Additionally, you can pass a multi-dimensional array to represent a MultiPolygon shape.\n *\n * ```js\n * var latlngs = [\n *   [ // first polygon\n *     [[37, -109.05],[41, -109.03],[41, -102.05],[37, -102.04]], // outer ring\n *     [[37.29, -108.58],[40.71, -108.58],[40.71, -102.50],[37.29, -102.50]] // hole\n *   ],\n *   [ // second polygon\n *     [[41, -111.03],[45, -111.04],[45, -104.05],[41, -104.05]]\n *   ]\n * ];\n * ```\n */\n\nexport var Polygon = Polyline.extend({\n\n\toptions: {\n\t\tfill: true\n\t},\n\n\tisEmpty: function () {\n\t\treturn !this._latlngs.length || !this._latlngs[0].length;\n\t},\n\n\t// @method getCenter(): LatLng\n\t// Returns the center ([centroid](http://en.wikipedia.org/wiki/Centroid)) of the Polygon.\n\tgetCenter: function () {\n\t\t// throws error when not yet added to map as this center calculation requires projected coordinates\n\t\tif (!this._map) {\n\t\t\tthrow new Error('Must add layer to map before using getCenter()');\n\t\t}\n\t\treturn PolyUtil.polygonCenter(this._defaultShape(), this._map.options.crs);\n\t},\n\n\t_convertLatLngs: function (latlngs) {\n\t\tvar result = Polyline.prototype._convertLatLngs.call(this, latlngs),\n\t\t    len = result.length;\n\n\t\t// remove last point if it equals first one\n\t\tif (len >= 2 && result[0] instanceof LatLng && result[0].equals(result[len - 1])) {\n\t\t\tresult.pop();\n\t\t}\n\t\treturn result;\n\t},\n\n\t_setLatLngs: function (latlngs) {\n\t\tPolyline.prototype._setLatLngs.call(this, latlngs);\n\t\tif (LineUtil.isFlat(this._latlngs)) {\n\t\t\tthis._latlngs = [this._latlngs];\n\t\t}\n\t},\n\n\t_defaultShape: function () {\n\t\treturn LineUtil.isFlat(this._latlngs[0]) ? this._latlngs[0] : this._latlngs[0][0];\n\t},\n\n\t_clipPoints: function () {\n\t\t// polygons need a different clipping algorithm so we redefine that\n\n\t\tvar bounds = this._renderer._bounds,\n\t\t    w = this.options.weight,\n\t\t    p = new Point(w, w);\n\n\t\t// increase clip padding by stroke width to avoid stroke on clip edges\n\t\tbounds = new Bounds(bounds.min.subtract(p), bounds.max.add(p));\n\n\t\tthis._parts = [];\n\t\tif (!this._pxBounds || !this._pxBounds.intersects(bounds)) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.options.noClip) {\n\t\t\tthis._parts = this._rings;\n\t\t\treturn;\n\t\t}\n\n\t\tfor (var i = 0, len = this._rings.length, clipped; i < len; i++) {\n\t\t\tclipped = PolyUtil.clipPolygon(this._rings[i], bounds, true);\n\t\t\tif (clipped.length) {\n\t\t\t\tthis._parts.push(clipped);\n\t\t\t}\n\t\t}\n\t},\n\n\t_updatePath: function () {\n\t\tthis._renderer._updatePoly(this, true);\n\t},\n\n\t// Needed by the `Canvas` renderer for interactivity\n\t_containsPoint: function (p) {\n\t\tvar inside = false,\n\t\t    part, p1, p2, i, j, k, len, len2;\n\n\t\tif (!this._pxBounds || !this._pxBounds.contains(p)) { return false; }\n\n\t\t// ray casting algorithm for detecting if point is in polygon\n\t\tfor (i = 0, len = this._parts.length; i < len; i++) {\n\t\t\tpart = this._parts[i];\n\n\t\t\tfor (j = 0, len2 = part.length, k = len2 - 1; j < len2; k = j++) {\n\t\t\t\tp1 = part[j];\n\t\t\t\tp2 = part[k];\n\n\t\t\t\tif (((p1.y > p.y) !== (p2.y > p.y)) && (p.x < (p2.x - p1.x) * (p.y - p1.y) / (p2.y - p1.y) + p1.x)) {\n\t\t\t\t\tinside = !inside;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// also check if it's on polygon stroke\n\t\treturn inside || Polyline.prototype._containsPoint.call(this, p, true);\n\t}\n\n});\n\n\n// @factory L.polygon(latlngs: LatLng[], options?: Polyline options)\nexport function polygon(latlngs, options) {\n\treturn new Polygon(latlngs, options);\n}\n", "import {LayerGroup} from './LayerGroup';\r\nimport {FeatureGroup} from './FeatureGroup';\r\nimport * as Util from '../core/Util';\r\nimport {Marker} from './marker/Marker';\r\nimport {Circle} from './vector/Circle';\r\nimport {CircleMarker} from './vector/CircleMarker';\r\nimport {Polyline} from './vector/Polyline';\r\nimport {Polygon} from './vector/Polygon';\r\nimport {LatLng} from '../geo/LatLng';\r\nimport * as LineUtil from '../geometry/LineUtil';\r\nimport {toLatLng} from '../geo/LatLng';\r\n\r\n\r\n/*\r\n * @class GeoJSON\r\n * @aka L.GeoJSON\r\n * @inherits FeatureGroup\r\n *\r\n * Represents a GeoJSON object or an array of GeoJSON objects. Allows you to parse\r\n * GeoJSON data and display it on the map. Extends `FeatureGroup`.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * L.geoJSON(data, {\r\n * \tstyle: function (feature) {\r\n * \t\treturn {color: feature.properties.color};\r\n * \t}\r\n * }).bindPopup(function (layer) {\r\n * \treturn layer.feature.properties.description;\r\n * }).addTo(map);\r\n * ```\r\n */\r\n\r\nexport var GeoJSON = FeatureGroup.extend({\r\n\r\n\t/* @section\r\n\t * @aka GeoJSON options\r\n\t *\r\n\t * @option pointToLayer: Function = *\r\n\t * A `Function` defining how GeoJSON points spawn Leaflet layers. It is internally\r\n\t * called when data is added, passing the GeoJSON point feature and its `LatLng`.\r\n\t * The default is to spawn a default `Marker`:\r\n\t * ```js\r\n\t * function(geoJsonPoint, latlng) {\r\n\t * \treturn L.marker(latlng);\r\n\t * }\r\n\t * ```\r\n\t *\r\n\t * @option style: Function = *\r\n\t * A `Function` defining the `Path options` for styling GeoJSON lines and polygons,\r\n\t * called internally when data is added.\r\n\t * The default value is to not override any defaults:\r\n\t * ```js\r\n\t * function (geoJsonFeature) {\r\n\t * \treturn {}\r\n\t * }\r\n\t * ```\r\n\t *\r\n\t * @option onEachFeature: Function = *\r\n\t * A `Function` that will be called once for each created `Feature`, after it has\r\n\t * been created and styled. Useful for attaching events and popups to features.\r\n\t * The default is to do nothing with the newly created layers:\r\n\t * ```js\r\n\t * function (feature, layer) {}\r\n\t * ```\r\n\t *\r\n\t * @option filter: Function = *\r\n\t * A `Function` that will be used to decide whether to include a feature or not.\r\n\t * The default is to include all features:\r\n\t * ```js\r\n\t * function (geoJsonFeature) {\r\n\t * \treturn true;\r\n\t * }\r\n\t * ```\r\n\t * Note: dynamically changing the `filter` option will have effect only on newly\r\n\t * added data. It will _not_ re-evaluate already included features.\r\n\t *\r\n\t * @option coordsToLatLng: Function = *\r\n\t * A `Function` that will be used for converting GeoJSON coordinates to `LatLng`s.\r\n\t * The default is the `coordsToLatLng` static method.\r\n\t *\r\n\t * @option markersInheritOptions: Boolean = false\r\n\t * Whether default Markers for \"Point\" type Features inherit from group options.\r\n\t */\r\n\r\n\tinitialize: function (geojson, options) {\r\n\t\tUtil.setOptions(this, options);\r\n\r\n\t\tthis._layers = {};\r\n\r\n\t\tif (geojson) {\r\n\t\t\tthis.addData(geojson);\r\n\t\t}\r\n\t},\r\n\r\n\t// @method addData( <GeoJSON> data ): this\r\n\t// Adds a GeoJSON object to the layer.\r\n\taddData: function (geojson) {\r\n\t\tvar features = Util.isArray(geojson) ? geojson : geojson.features,\r\n\t\t    i, len, feature;\r\n\r\n\t\tif (features) {\r\n\t\t\tfor (i = 0, len = features.length; i < len; i++) {\r\n\t\t\t\t// only add this if geometry or geometries are set and not null\r\n\t\t\t\tfeature = features[i];\r\n\t\t\t\tif (feature.geometries || feature.geometry || feature.features || feature.coordinates) {\r\n\t\t\t\t\tthis.addData(feature);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\tvar options = this.options;\r\n\r\n\t\tif (options.filter && !options.filter(geojson)) { return this; }\r\n\r\n\t\tvar layer = geometryToLayer(geojson, options);\r\n\t\tif (!layer) {\r\n\t\t\treturn this;\r\n\t\t}\r\n\t\tlayer.feature = asFeature(geojson);\r\n\r\n\t\tlayer.defaultOptions = layer.options;\r\n\t\tthis.resetStyle(layer);\r\n\r\n\t\tif (options.onEachFeature) {\r\n\t\t\toptions.onEachFeature(geojson, layer);\r\n\t\t}\r\n\r\n\t\treturn this.addLayer(layer);\r\n\t},\r\n\r\n\t// @method resetStyle( <Path> layer? ): this\r\n\t// Resets the given vector layer's style to the original GeoJSON style, useful for resetting style after hover events.\r\n\t// If `layer` is omitted, the style of all features in the current layer is reset.\r\n\tresetStyle: function (layer) {\r\n\t\tif (layer === undefined) {\r\n\t\t\treturn this.eachLayer(this.resetStyle, this);\r\n\t\t}\r\n\t\t// reset any custom styles\r\n\t\tlayer.options = Util.extend({}, layer.defaultOptions);\r\n\t\tthis._setLayerStyle(layer, this.options.style);\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method setStyle( <Function> style ): this\r\n\t// Changes styles of GeoJSON vector layers with the given style function.\r\n\tsetStyle: function (style) {\r\n\t\treturn this.eachLayer(function (layer) {\r\n\t\t\tthis._setLayerStyle(layer, style);\r\n\t\t}, this);\r\n\t},\r\n\r\n\t_setLayerStyle: function (layer, style) {\r\n\t\tif (layer.setStyle) {\r\n\t\t\tif (typeof style === 'function') {\r\n\t\t\t\tstyle = style(layer.feature);\r\n\t\t\t}\r\n\t\t\tlayer.setStyle(style);\r\n\t\t}\r\n\t}\r\n});\r\n\r\n// @section\r\n// There are several static functions which can be called without instantiating L.GeoJSON:\r\n\r\n// @function geometryToLayer(featureData: Object, options?: GeoJSON options): Layer\r\n// Creates a `Layer` from a given GeoJSON feature. Can use a custom\r\n// [`pointToLayer`](#geojson-pointtolayer) and/or [`coordsToLatLng`](#geojson-coordstolatlng)\r\n// functions if provided as options.\r\nexport function geometryToLayer(geojson, options) {\r\n\r\n\tvar geometry = geojson.type === 'Feature' ? geojson.geometry : geojson,\r\n\t    coords = geometry ? geometry.coordinates : null,\r\n\t    layers = [],\r\n\t    pointToLayer = options && options.pointToLayer,\r\n\t    _coordsToLatLng = options && options.coordsToLatLng || coordsToLatLng,\r\n\t    latlng, latlngs, i, len;\r\n\r\n\tif (!coords && !geometry) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\tswitch (geometry.type) {\r\n\tcase 'Point':\r\n\t\tlatlng = _coordsToLatLng(coords);\r\n\t\treturn _pointToLayer(pointToLayer, geojson, latlng, options);\r\n\r\n\tcase 'MultiPoint':\r\n\t\tfor (i = 0, len = coords.length; i < len; i++) {\r\n\t\t\tlatlng = _coordsToLatLng(coords[i]);\r\n\t\t\tlayers.push(_pointToLayer(pointToLayer, geojson, latlng, options));\r\n\t\t}\r\n\t\treturn new FeatureGroup(layers);\r\n\r\n\tcase 'LineString':\r\n\tcase 'MultiLineString':\r\n\t\tlatlngs = coordsToLatLngs(coords, geometry.type === 'LineString' ? 0 : 1, _coordsToLatLng);\r\n\t\treturn new Polyline(latlngs, options);\r\n\r\n\tcase 'Polygon':\r\n\tcase 'MultiPolygon':\r\n\t\tlatlngs = coordsToLatLngs(coords, geometry.type === 'Polygon' ? 1 : 2, _coordsToLatLng);\r\n\t\treturn new Polygon(latlngs, options);\r\n\r\n\tcase 'GeometryCollection':\r\n\t\tfor (i = 0, len = geometry.geometries.length; i < len; i++) {\r\n\t\t\tvar geoLayer = geometryToLayer({\r\n\t\t\t\tgeometry: geometry.geometries[i],\r\n\t\t\t\ttype: 'Feature',\r\n\t\t\t\tproperties: geojson.properties\r\n\t\t\t}, options);\r\n\r\n\t\t\tif (geoLayer) {\r\n\t\t\t\tlayers.push(geoLayer);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn new FeatureGroup(layers);\r\n\r\n\tcase 'FeatureCollection':\r\n\t\tfor (i = 0, len = geometry.features.length; i < len; i++) {\r\n\t\t\tvar featureLayer = geometryToLayer(geometry.features[i], options);\r\n\r\n\t\t\tif (featureLayer) {\r\n\t\t\t\tlayers.push(featureLayer);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn new FeatureGroup(layers);\r\n\r\n\tdefault:\r\n\t\tthrow new Error('Invalid GeoJSON object.');\r\n\t}\r\n}\r\n\r\nfunction _pointToLayer(pointToLayerFn, geojson, latlng, options) {\r\n\treturn pointToLayerFn ?\r\n\t\tpointToLayerFn(geojson, latlng) :\r\n\t\tnew Marker(latlng, options && options.markersInheritOptions && options);\r\n}\r\n\r\n// @function coordsToLatLng(coords: Array): LatLng\r\n// Creates a `LatLng` object from an array of 2 numbers (longitude, latitude)\r\n// or 3 numbers (longitude, latitude, altitude) used in GeoJSON for points.\r\nexport function coordsToLatLng(coords) {\r\n\treturn new LatLng(coords[1], coords[0], coords[2]);\r\n}\r\n\r\n// @function coordsToLatLngs(coords: Array, levelsDeep?: Number, coordsToLatLng?: Function): Array\r\n// Creates a multidimensional array of `LatLng`s from a GeoJSON coordinates array.\r\n// `levelsDeep` specifies the nesting level (0 is for an array of points, 1 for an array of arrays of points, etc., 0 by default).\r\n// Can use a custom [`coordsToLatLng`](#geojson-coordstolatlng) function.\r\nexport function coordsToLatLngs(coords, levelsDeep, _coordsToLatLng) {\r\n\tvar latlngs = [];\r\n\r\n\tfor (var i = 0, len = coords.length, latlng; i < len; i++) {\r\n\t\tlatlng = levelsDeep ?\r\n\t\t\tcoordsToLatLngs(coords[i], levelsDeep - 1, _coordsToLatLng) :\r\n\t\t\t(_coordsToLatLng || coordsToLatLng)(coords[i]);\r\n\r\n\t\tlatlngs.push(latlng);\r\n\t}\r\n\r\n\treturn latlngs;\r\n}\r\n\r\n// @function latLngToCoords(latlng: LatLng, precision?: Number|false): Array\r\n// Reverse of [`coordsToLatLng`](#geojson-coordstolatlng)\r\n// Coordinates values are rounded with [`formatNum`](#util-formatnum) function.\r\nexport function latLngToCoords(latlng, precision) {\r\n\tlatlng = toLatLng(latlng);\r\n\treturn latlng.alt !== undefined ?\r\n\t\t[Util.formatNum(latlng.lng, precision), Util.formatNum(latlng.lat, precision), Util.formatNum(latlng.alt, precision)] :\r\n\t\t[Util.formatNum(latlng.lng, precision), Util.formatNum(latlng.lat, precision)];\r\n}\r\n\r\n// @function latLngsToCoords(latlngs: Array, levelsDeep?: Number, closed?: Boolean, precision?: Number|false): Array\r\n// Reverse of [`coordsToLatLngs`](#geojson-coordstolatlngs)\r\n// `closed` determines whether the first point should be appended to the end of the array to close the feature, only used when `levelsDeep` is 0. False by default.\r\n// Coordinates values are rounded with [`formatNum`](#util-formatnum) function.\r\nexport function latLngsToCoords(latlngs, levelsDeep, closed, precision) {\r\n\tvar coords = [];\r\n\r\n\tfor (var i = 0, len = latlngs.length; i < len; i++) {\r\n\t\t// Check for flat arrays required to ensure unbalanced arrays are correctly converted in recursion\r\n\t\tcoords.push(levelsDeep ?\r\n\t\t\tlatLngsToCoords(latlngs[i], LineUtil.isFlat(latlngs[i]) ? 0 : levelsDeep - 1, closed, precision) :\r\n\t\t\tlatLngToCoords(latlngs[i], precision));\r\n\t}\r\n\r\n\tif (!levelsDeep && closed && coords.length > 0) {\r\n\t\tcoords.push(coords[0].slice());\r\n\t}\r\n\r\n\treturn coords;\r\n}\r\n\r\nexport function getFeature(layer, newGeometry) {\r\n\treturn layer.feature ?\r\n\t\tUtil.extend({}, layer.feature, {geometry: newGeometry}) :\r\n\t\tasFeature(newGeometry);\r\n}\r\n\r\n// @function asFeature(geojson: Object): Object\r\n// Normalize GeoJSON geometries/features into GeoJSON features.\r\nexport function asFeature(geojson) {\r\n\tif (geojson.type === 'Feature' || geojson.type === 'FeatureCollection') {\r\n\t\treturn geojson;\r\n\t}\r\n\r\n\treturn {\r\n\t\ttype: 'Feature',\r\n\t\tproperties: {},\r\n\t\tgeometry: geojson\r\n\t};\r\n}\r\n\r\nvar PointToGeoJSON = {\r\n\ttoGeoJSON: function (precision) {\r\n\t\treturn getFeature(this, {\r\n\t\t\ttype: 'Point',\r\n\t\t\tcoordinates: latLngToCoords(this.getLatLng(), precision)\r\n\t\t});\r\n\t}\r\n};\r\n\r\n// @namespace Marker\r\n// @section Other methods\r\n// @method toGeoJSON(precision?: Number|false): Object\r\n// Coordinates values are rounded with [`formatNum`](#util-formatnum) function with given `precision`.\r\n// Returns a [`GeoJSON`](https://en.wikipedia.org/wiki/GeoJSON) representation of the marker (as a GeoJSON `Point` Feature).\r\nMarker.include(PointToGeoJSON);\r\n\r\n// @namespace CircleMarker\r\n// @method toGeoJSON(precision?: Number|false): Object\r\n// Coordinates values are rounded with [`formatNum`](#util-formatnum) function with given `precision`.\r\n// Returns a [`GeoJSON`](https://en.wikipedia.org/wiki/GeoJSON) representation of the circle marker (as a GeoJSON `Point` Feature).\r\nCircle.include(PointToGeoJSON);\r\nCircleMarker.include(PointToGeoJSON);\r\n\r\n\r\n// @namespace Polyline\r\n// @method toGeoJSON(precision?: Number|false): Object\r\n// Coordinates values are rounded with [`formatNum`](#util-formatnum) function with given `precision`.\r\n// Returns a [`GeoJSON`](https://en.wikipedia.org/wiki/GeoJSON) representation of the polyline (as a GeoJSON `LineString` or `MultiLineString` Feature).\r\nPolyline.include({\r\n\ttoGeoJSON: function (precision) {\r\n\t\tvar multi = !LineUtil.isFlat(this._latlngs);\r\n\r\n\t\tvar coords = latLngsToCoords(this._latlngs, multi ? 1 : 0, false, precision);\r\n\r\n\t\treturn getFeature(this, {\r\n\t\t\ttype: (multi ? 'Multi' : '') + 'LineString',\r\n\t\t\tcoordinates: coords\r\n\t\t});\r\n\t}\r\n});\r\n\r\n// @namespace Polygon\r\n// @method toGeoJSON(precision?: Number|false): Object\r\n// Coordinates values are rounded with [`formatNum`](#util-formatnum) function with given `precision`.\r\n// Returns a [`GeoJSON`](https://en.wikipedia.org/wiki/GeoJSON) representation of the polygon (as a GeoJSON `Polygon` or `MultiPolygon` Feature).\r\nPolygon.include({\r\n\ttoGeoJSON: function (precision) {\r\n\t\tvar holes = !LineUtil.isFlat(this._latlngs),\r\n\t\t    multi = holes && !LineUtil.isFlat(this._latlngs[0]);\r\n\r\n\t\tvar coords = latLngsToCoords(this._latlngs, multi ? 2 : holes ? 1 : 0, true, precision);\r\n\r\n\t\tif (!holes) {\r\n\t\t\tcoords = [coords];\r\n\t\t}\r\n\r\n\t\treturn getFeature(this, {\r\n\t\t\ttype: (multi ? 'Multi' : '') + 'Polygon',\r\n\t\t\tcoordinates: coords\r\n\t\t});\r\n\t}\r\n});\r\n\r\n\r\n// @namespace LayerGroup\r\nLayerGroup.include({\r\n\ttoMultiPoint: function (precision) {\r\n\t\tvar coords = [];\r\n\r\n\t\tthis.eachLayer(function (layer) {\r\n\t\t\tcoords.push(layer.toGeoJSON(precision).geometry.coordinates);\r\n\t\t});\r\n\r\n\t\treturn getFeature(this, {\r\n\t\t\ttype: 'MultiPoint',\r\n\t\t\tcoordinates: coords\r\n\t\t});\r\n\t},\r\n\r\n\t// @method toGeoJSON(precision?: Number|false): Object\r\n\t// Coordinates values are rounded with [`formatNum`](#util-formatnum) function with given `precision`.\r\n\t// Returns a [`GeoJSON`](https://en.wikipedia.org/wiki/GeoJSON) representation of the layer group (as a GeoJSON `FeatureCollection`, `GeometryCollection`, or `MultiPoint`).\r\n\ttoGeoJSON: function (precision) {\r\n\r\n\t\tvar type = this.feature && this.feature.geometry && this.feature.geometry.type;\r\n\r\n\t\tif (type === 'MultiPoint') {\r\n\t\t\treturn this.toMultiPoint(precision);\r\n\t\t}\r\n\r\n\t\tvar isGeometryCollection = type === 'GeometryCollection',\r\n\t\t    jsons = [];\r\n\r\n\t\tthis.eachLayer(function (layer) {\r\n\t\t\tif (layer.toGeoJSON) {\r\n\t\t\t\tvar json = layer.toGeoJSON(precision);\r\n\t\t\t\tif (isGeometryCollection) {\r\n\t\t\t\t\tjsons.push(json.geometry);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvar feature = asFeature(json);\r\n\t\t\t\t\t// Squash nested feature collections\r\n\t\t\t\t\tif (feature.type === 'FeatureCollection') {\r\n\t\t\t\t\t\tjsons.push.apply(jsons, feature.features);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tjsons.push(feature);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif (isGeometryCollection) {\r\n\t\t\treturn getFeature(this, {\r\n\t\t\t\tgeometries: jsons,\r\n\t\t\t\ttype: 'GeometryCollection'\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\ttype: 'FeatureCollection',\r\n\t\t\tfeatures: jsons\r\n\t\t};\r\n\t}\r\n});\r\n\r\n// @namespace GeoJSON\r\n// @factory L.geoJSON(geojson?: Object, options?: GeoJSON options)\r\n// Creates a GeoJSON layer. Optionally accepts an object in\r\n// [GeoJSON format](https://tools.ietf.org/html/rfc7946) to display on the map\r\n// (you can alternatively add it later with `addData` method) and an `options` object.\r\nexport function geoJSON(geojson, options) {\r\n\treturn new GeoJSON(geojson, options);\r\n}\r\n\r\n// Backward compatibility.\r\nexport var geoJson = geoJSON;\r\n", "import {Layer} from './Layer';\r\nimport * as Util from '../core/Util';\r\nimport {toLatLngBounds} from '../geo/LatLngBounds';\r\nimport {Bounds} from '../geometry/Bounds';\r\nimport * as DomUtil from '../dom/DomUtil';\r\n\r\n/*\r\n * @class ImageOverlay\r\n * @aka L.ImageOverlay\r\n * @inherits Interactive layer\r\n *\r\n * Used to load and display a single image over specific bounds of the map. Extends `Layer`.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * var imageUrl = 'https://maps.lib.utexas.edu/maps/historical/newark_nj_1922.jpg',\r\n * \timageBounds = [[40.712216, -74.22655], [40.773941, -74.12544]];\r\n * L.imageOverlay(imageUrl, imageBounds).addTo(map);\r\n * ```\r\n */\r\n\r\nexport var ImageOverlay = Layer.extend({\r\n\r\n\t// @section\r\n\t// @aka ImageOverlay options\r\n\toptions: {\r\n\t\t// @option opacity: Number = 1.0\r\n\t\t// The opacity of the image overlay.\r\n\t\topacity: 1,\r\n\r\n\t\t// @option alt: String = ''\r\n\t\t// Text for the `alt` attribute of the image (useful for accessibility).\r\n\t\talt: '',\r\n\r\n\t\t// @option interactive: Boolean = false\r\n\t\t// If `true`, the image overlay will emit [mouse events](#interactive-layer) when clicked or hovered.\r\n\t\tinteractive: false,\r\n\r\n\t\t// @option crossOrigin: Boolean|String = false\r\n\t\t// Whether the crossOrigin attribute will be added to the image.\r\n\t\t// If a String is provided, the image will have its crossOrigin attribute set to the String provided. This is needed if you want to access image pixel data.\r\n\t\t// Refer to [CORS Settings](https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_settings_attributes) for valid String values.\r\n\t\tcrossOrigin: false,\r\n\r\n\t\t// @option errorOverlayUrl: String = ''\r\n\t\t// URL to the overlay image to show in place of the overlay that failed to load.\r\n\t\terrorOverlayUrl: '',\r\n\r\n\t\t// @option zIndex: Number = 1\r\n\t\t// The explicit [zIndex](https://developer.mozilla.org/docs/Web/CSS/CSS_Positioning/Understanding_z_index) of the overlay layer.\r\n\t\tzIndex: 1,\r\n\r\n\t\t// @option className: String = ''\r\n\t\t// A custom class name to assign to the image. Empty by default.\r\n\t\tclassName: ''\r\n\t},\r\n\r\n\tinitialize: function (url, bounds, options) { // (String, LatLngBounds, Object)\r\n\t\tthis._url = url;\r\n\t\tthis._bounds = toLatLngBounds(bounds);\r\n\r\n\t\tUtil.setOptions(this, options);\r\n\t},\r\n\r\n\tonAdd: function () {\r\n\t\tif (!this._image) {\r\n\t\t\tthis._initImage();\r\n\r\n\t\t\tif (this.options.opacity < 1) {\r\n\t\t\t\tthis._updateOpacity();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this.options.interactive) {\r\n\t\t\tDomUtil.addClass(this._image, 'leaflet-interactive');\r\n\t\t\tthis.addInteractiveTarget(this._image);\r\n\t\t}\r\n\r\n\t\tthis.getPane().appendChild(this._image);\r\n\t\tthis._reset();\r\n\t},\r\n\r\n\tonRemove: function () {\r\n\t\tDomUtil.remove(this._image);\r\n\t\tif (this.options.interactive) {\r\n\t\t\tthis.removeInteractiveTarget(this._image);\r\n\t\t}\r\n\t},\r\n\r\n\t// @method setOpacity(opacity: Number): this\r\n\t// Sets the opacity of the overlay.\r\n\tsetOpacity: function (opacity) {\r\n\t\tthis.options.opacity = opacity;\r\n\r\n\t\tif (this._image) {\r\n\t\t\tthis._updateOpacity();\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\tsetStyle: function (styleOpts) {\r\n\t\tif (styleOpts.opacity) {\r\n\t\t\tthis.setOpacity(styleOpts.opacity);\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method bringToFront(): this\r\n\t// Brings the layer to the top of all overlays.\r\n\tbringToFront: function () {\r\n\t\tif (this._map) {\r\n\t\t\tDomUtil.toFront(this._image);\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method bringToBack(): this\r\n\t// Brings the layer to the bottom of all overlays.\r\n\tbringToBack: function () {\r\n\t\tif (this._map) {\r\n\t\t\tDomUtil.toBack(this._image);\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method setUrl(url: String): this\r\n\t// Changes the URL of the image.\r\n\tsetUrl: function (url) {\r\n\t\tthis._url = url;\r\n\r\n\t\tif (this._image) {\r\n\t\t\tthis._image.src = url;\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method setBounds(bounds: LatLngBounds): this\r\n\t// Update the bounds that this ImageOverlay covers\r\n\tsetBounds: function (bounds) {\r\n\t\tthis._bounds = toLatLngBounds(bounds);\r\n\r\n\t\tif (this._map) {\r\n\t\t\tthis._reset();\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\tgetEvents: function () {\r\n\t\tvar events = {\r\n\t\t\tzoom: this._reset,\r\n\t\t\tviewreset: this._reset\r\n\t\t};\r\n\r\n\t\tif (this._zoomAnimated) {\r\n\t\t\tevents.zoomanim = this._animateZoom;\r\n\t\t}\r\n\r\n\t\treturn events;\r\n\t},\r\n\r\n\t// @method setZIndex(value: Number): this\r\n\t// Changes the [zIndex](#imageoverlay-zindex) of the image overlay.\r\n\tsetZIndex: function (value) {\r\n\t\tthis.options.zIndex = value;\r\n\t\tthis._updateZIndex();\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method getBounds(): LatLngBounds\r\n\t// Get the bounds that this ImageOverlay covers\r\n\tgetBounds: function () {\r\n\t\treturn this._bounds;\r\n\t},\r\n\r\n\t// @method getElement(): HTMLElement\r\n\t// Returns the instance of [`HTMLImageElement`](https://developer.mozilla.org/docs/Web/API/HTMLImageElement)\r\n\t// used by this overlay.\r\n\tgetElement: function () {\r\n\t\treturn this._image;\r\n\t},\r\n\r\n\t_initImage: function () {\r\n\t\tvar wasElementSupplied = this._url.tagName === 'IMG';\r\n\t\tvar img = this._image = wasElementSupplied ? this._url : DomUtil.create('img');\r\n\r\n\t\tDomUtil.addClass(img, 'leaflet-image-layer');\r\n\t\tif (this._zoomAnimated) { DomUtil.addClass(img, 'leaflet-zoom-animated'); }\r\n\t\tif (this.options.className) { DomUtil.addClass(img, this.options.className); }\r\n\r\n\t\timg.onselectstart = Util.falseFn;\r\n\t\timg.onmousemove = Util.falseFn;\r\n\r\n\t\t// @event load: Event\r\n\t\t// Fired when the ImageOverlay layer has loaded its image\r\n\t\timg.onload = Util.bind(this.fire, this, 'load');\r\n\t\timg.onerror = Util.bind(this._overlayOnError, this, 'error');\r\n\r\n\t\tif (this.options.crossOrigin || this.options.crossOrigin === '') {\r\n\t\t\timg.crossOrigin = this.options.crossOrigin === true ? '' : this.options.crossOrigin;\r\n\t\t}\r\n\r\n\t\tif (this.options.zIndex) {\r\n\t\t\tthis._updateZIndex();\r\n\t\t}\r\n\r\n\t\tif (wasElementSupplied) {\r\n\t\t\tthis._url = img.src;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\timg.src = this._url;\r\n\t\timg.alt = this.options.alt;\r\n\t},\r\n\r\n\t_animateZoom: function (e) {\r\n\t\tvar scale = this._map.getZoomScale(e.zoom),\r\n\t\t    offset = this._map._latLngBoundsToNewLayerBounds(this._bounds, e.zoom, e.center).min;\r\n\r\n\t\tDomUtil.setTransform(this._image, offset, scale);\r\n\t},\r\n\r\n\t_reset: function () {\r\n\t\tvar image = this._image,\r\n\t\t    bounds = new Bounds(\r\n\t\t        this._map.latLngToLayerPoint(this._bounds.getNorthWest()),\r\n\t\t        this._map.latLngToLayerPoint(this._bounds.getSouthEast())),\r\n\t\t    size = bounds.getSize();\r\n\r\n\t\tDomUtil.setPosition(image, bounds.min);\r\n\r\n\t\timage.style.width  = size.x + 'px';\r\n\t\timage.style.height = size.y + 'px';\r\n\t},\r\n\r\n\t_updateOpacity: function () {\r\n\t\tDomUtil.setOpacity(this._image, this.options.opacity);\r\n\t},\r\n\r\n\t_updateZIndex: function () {\r\n\t\tif (this._image && this.options.zIndex !== undefined && this.options.zIndex !== null) {\r\n\t\t\tthis._image.style.zIndex = this.options.zIndex;\r\n\t\t}\r\n\t},\r\n\r\n\t_overlayOnError: function () {\r\n\t\t// @event error: Event\r\n\t\t// Fired when the ImageOverlay layer fails to load its image\r\n\t\tthis.fire('error');\r\n\r\n\t\tvar errorUrl = this.options.errorOverlayUrl;\r\n\t\tif (errorUrl && this._url !== errorUrl) {\r\n\t\t\tthis._url = errorUrl;\r\n\t\t\tthis._image.src = errorUrl;\r\n\t\t}\r\n\t},\r\n\r\n\t// @method getCenter(): LatLng\r\n\t// Returns the center of the ImageOverlay.\r\n\tgetCenter: function () {\r\n\t\treturn this._bounds.getCenter();\r\n\t}\r\n});\r\n\r\n// @factory L.imageOverlay(imageUrl: String, bounds: LatLngBounds, options?: ImageOverlay options)\r\n// Instantiates an image overlay object given the URL of the image and the\r\n// geographical bounds it is tied to.\r\nexport var imageOverlay = function (url, bounds, options) {\r\n\treturn new ImageOverlay(url, bounds, options);\r\n};\r\n", "import {ImageOverlay} from './ImageOverlay';\r\nimport * as DomUtil from '../dom/DomUtil';\r\nimport * as Util from '../core/Util';\r\n\r\n/*\r\n * @class VideoOverlay\r\n * @aka L.VideoOverlay\r\n * @inherits ImageOverlay\r\n *\r\n * Used to load and display a video player over specific bounds of the map. Extends `ImageOverlay`.\r\n *\r\n * A video overlay uses the [`<video>`](https://developer.mozilla.org/docs/Web/HTML/Element/video)\r\n * HTML5 element.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * var videoUrl = 'https://www.mapbox.com/bites/00188/patricia_nasa.webm',\r\n * \tvideoBounds = [[ 32, -130], [ 13, -100]];\r\n * L.videoOverlay(videoUrl, videoBounds ).addTo(map);\r\n * ```\r\n */\r\n\r\nexport var VideoOverlay = ImageOverlay.extend({\r\n\r\n\t// @section\r\n\t// @aka VideoOverlay options\r\n\toptions: {\r\n\t\t// @option autoplay: Boolean = true\r\n\t\t// Whether the video starts playing automatically when loaded.\r\n\t\t// On some browsers autoplay will only work with `muted: true`\r\n\t\tautoplay: true,\r\n\r\n\t\t// @option loop: Boolean = true\r\n\t\t// Whether the video will loop back to the beginning when played.\r\n\t\tloop: true,\r\n\r\n\t\t// @option keepAspectRatio: Boolean = true\r\n\t\t// Whether the video will save aspect ratio after the projection.\r\n\t\t// Relevant for supported browsers. See [browser compatibility](https://developer.mozilla.org/en-US/docs/Web/CSS/object-fit)\r\n\t\tkeepAspectRatio: true,\r\n\r\n\t\t// @option muted: Boolean = false\r\n\t\t// Whether the video starts on mute when loaded.\r\n\t\tmuted: false,\r\n\r\n\t\t// @option playsInline: Boolean = true\r\n\t\t// Mobile browsers will play the video right where it is instead of open it up in fullscreen mode.\r\n\t\tplaysInline: true\r\n\t},\r\n\r\n\t_initImage: function () {\r\n\t\tvar wasElementSupplied = this._url.tagName === 'VIDEO';\r\n\t\tvar vid = this._image = wasElementSupplied ? this._url : DomUtil.create('video');\r\n\r\n\t\tDomUtil.addClass(vid, 'leaflet-image-layer');\r\n\t\tif (this._zoomAnimated) { DomUtil.addClass(vid, 'leaflet-zoom-animated'); }\r\n\t\tif (this.options.className) { DomUtil.addClass(vid, this.options.className); }\r\n\r\n\t\tvid.onselectstart = Util.falseFn;\r\n\t\tvid.onmousemove = Util.falseFn;\r\n\r\n\t\t// @event load: Event\r\n\t\t// Fired when the video has finished loading the first frame\r\n\t\tvid.onloadeddata = Util.bind(this.fire, this, 'load');\r\n\r\n\t\tif (wasElementSupplied) {\r\n\t\t\tvar sourceElements = vid.getElementsByTagName('source');\r\n\t\t\tvar sources = [];\r\n\t\t\tfor (var j = 0; j < sourceElements.length; j++) {\r\n\t\t\t\tsources.push(sourceElements[j].src);\r\n\t\t\t}\r\n\r\n\t\t\tthis._url = (sourceElements.length > 0) ? sources : [vid.src];\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (!Util.isArray(this._url)) { this._url = [this._url]; }\r\n\r\n\t\tif (!this.options.keepAspectRatio && Object.prototype.hasOwnProperty.call(vid.style, 'objectFit')) {\r\n\t\t\tvid.style['objectFit'] = 'fill';\r\n\t\t}\r\n\t\tvid.autoplay = !!this.options.autoplay;\r\n\t\tvid.loop = !!this.options.loop;\r\n\t\tvid.muted = !!this.options.muted;\r\n\t\tvid.playsInline = !!this.options.playsInline;\r\n\t\tfor (var i = 0; i < this._url.length; i++) {\r\n\t\t\tvar source = DomUtil.create('source');\r\n\t\t\tsource.src = this._url[i];\r\n\t\t\tvid.appendChild(source);\r\n\t\t}\r\n\t}\r\n\r\n\t// @method getElement(): HTMLVideoElement\r\n\t// Returns the instance of [`HTMLVideoElement`](https://developer.mozilla.org/docs/Web/API/HTMLVideoElement)\r\n\t// used by this overlay.\r\n});\r\n\r\n\r\n// @factory L.videoOverlay(video: String|Array|HTMLVideoElement, bounds: LatLngBounds, options?: VideoOverlay options)\r\n// Instantiates an image overlay object given the URL of the video (or array of URLs, or even a video element) and the\r\n// geographical bounds it is tied to.\r\n\r\nexport function videoOverlay(video, bounds, options) {\r\n\treturn new VideoOverlay(video, bounds, options);\r\n}\r\n", "import {ImageOverlay} from './ImageOverlay';\nimport * as DomUtil from '../dom/DomUtil';\nimport * as Util from '../core/Util';\n\n/*\n * @class SVGOverlay\n * @aka L.SVGOverlay\n * @inherits ImageOverlay\n *\n * Used to load, display and provide DOM access to an SVG file over specific bounds of the map. Extends `ImageOverlay`.\n *\n * An SVG overlay uses the [`<svg>`](https://developer.mozilla.org/docs/Web/SVG/Element/svg) element.\n *\n * @example\n *\n * ```js\n * var svgElement = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\n * svgElement.setAttribute('xmlns', \"http://www.w3.org/2000/svg\");\n * svgElement.setAttribute('viewBox', \"0 0 200 200\");\n * svgElement.innerHTML = '<rect width=\"200\" height=\"200\"/><rect x=\"75\" y=\"23\" width=\"50\" height=\"50\" style=\"fill:red\"/><rect x=\"75\" y=\"123\" width=\"50\" height=\"50\" style=\"fill:#0013ff\"/>';\n * var svgElementBounds = [ [ 32, -130 ], [ 13, -100 ] ];\n * L.svgOverlay(svgElement, svgElementBounds).addTo(map);\n * ```\n */\n\nexport var SVGOverlay = ImageOverlay.extend({\n\t_initImage: function () {\n\t\tvar el = this._image = this._url;\n\n\t\tDomUtil.addClass(el, 'leaflet-image-layer');\n\t\tif (this._zoomAnimated) { DomUtil.addClass(el, 'leaflet-zoom-animated'); }\n\t\tif (this.options.className) { DomUtil.addClass(el, this.options.className); }\n\n\t\tel.onselectstart = Util.falseFn;\n\t\tel.onmousemove = Util.falseFn;\n\t}\n\n\t// @method getElement(): SVGElement\n\t// Returns the instance of [`SVGElement`](https://developer.mozilla.org/docs/Web/API/SVGElement)\n\t// used by this overlay.\n});\n\n\n// @factory L.svgOverlay(svg: String|SVGElement, bounds: LatLngBounds, options?: SVGOverlay options)\n// Instantiates an image overlay object given an SVG element and the geographical bounds it is tied to.\n// A viewBox attribute is required on the SVG element to zoom in and out properly.\n\nexport function svgOverlay(el, bounds, options) {\n\treturn new SVGOverlay(el, bounds, options);\n}\n", "import {Map} from '../map/Map';\r\nimport {Layer} from './Layer';\r\nimport {FeatureGroup} from './FeatureGroup';\r\nimport * as Util from '../core/Util';\r\nimport {toLatLng, LatLng} from '../geo/LatLng';\r\nimport {toPoint} from '../geometry/Point';\r\nimport * as DomUtil from '../dom/DomUtil';\r\n\r\n/*\r\n * @class DivOverlay\r\n * @inherits Interactive layer\r\n * @aka L.DivOverlay\r\n * Base model for L.Popup and L.Tooltip. Inherit from it for custom overlays like plugins.\r\n */\r\n\r\n// @namespace DivOverlay\r\nexport var DivOverlay = Layer.extend({\r\n\r\n\t// @section\r\n\t// @aka DivOverlay options\r\n\toptions: {\r\n\t\t// @option interactive: Boolean = false\r\n\t\t// If true, the popup/tooltip will listen to the mouse events.\r\n\t\tinteractive: false,\r\n\r\n\t\t// @option offset: Point = Point(0, 0)\r\n\t\t// The offset of the overlay position.\r\n\t\toffset: [0, 0],\r\n\r\n\t\t// @option className: String = ''\r\n\t\t// A custom CSS class name to assign to the overlay.\r\n\t\tclassName: '',\r\n\r\n\t\t// @option pane: String = undefined\r\n\t\t// `Map pane` where the overlay will be added.\r\n\t\tpane: undefined,\r\n\r\n\t\t// @option content: String|HTMLElement|Function = ''\r\n\t\t// Sets the HTML content of the overlay while initializing. If a function is passed the source layer will be\r\n\t\t// passed to the function. The function should return a `String` or `HTMLElement` to be used in the overlay.\r\n\t\tcontent: ''\r\n\t},\r\n\r\n\tinitialize: function (options, source) {\r\n\t\tif (options && (options instanceof LatLng || Util.isArray(options))) {\r\n\t\t\tthis._latlng = toLatLng(options);\r\n\t\t\tUtil.setOptions(this, source);\r\n\t\t} else {\r\n\t\t\tUtil.setOptions(this, options);\r\n\t\t\tthis._source = source;\r\n\t\t}\r\n\t\tif (this.options.content) {\r\n\t\t\tthis._content = this.options.content;\r\n\t\t}\r\n\t},\r\n\r\n\t// @method openOn(map: Map): this\r\n\t// Adds the overlay to the map.\r\n\t// Alternative to `map.openPopup(popup)`/`.openTooltip(tooltip)`.\r\n\topenOn: function (map) {\r\n\t\tmap = arguments.length ? map : this._source._map; // experimental, not the part of public api\r\n\t\tif (!map.hasLayer(this)) {\r\n\t\t\tmap.addLayer(this);\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method close(): this\r\n\t// Closes the overlay.\r\n\t// Alternative to `map.closePopup(popup)`/`.closeTooltip(tooltip)`\r\n\t// and `layer.closePopup()`/`.closeTooltip()`.\r\n\tclose: function () {\r\n\t\tif (this._map) {\r\n\t\t\tthis._map.removeLayer(this);\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method toggle(layer?: Layer): this\r\n\t// Opens or closes the overlay bound to layer depending on its current state.\r\n\t// Argument may be omitted only for overlay bound to layer.\r\n\t// Alternative to `layer.togglePopup()`/`.toggleTooltip()`.\r\n\ttoggle: function (layer) {\r\n\t\tif (this._map) {\r\n\t\t\tthis.close();\r\n\t\t} else {\r\n\t\t\tif (arguments.length) {\r\n\t\t\t\tthis._source = layer;\r\n\t\t\t} else {\r\n\t\t\t\tlayer = this._source;\r\n\t\t\t}\r\n\t\t\tthis._prepareOpen();\r\n\r\n\t\t\t// open the overlay on the map\r\n\t\t\tthis.openOn(layer._map);\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\tonAdd: function (map) {\r\n\t\tthis._zoomAnimated = map._zoomAnimated;\r\n\r\n\t\tif (!this._container) {\r\n\t\t\tthis._initLayout();\r\n\t\t}\r\n\r\n\t\tif (map._fadeAnimated) {\r\n\t\t\tDomUtil.setOpacity(this._container, 0);\r\n\t\t}\r\n\r\n\t\tclearTimeout(this._removeTimeout);\r\n\t\tthis.getPane().appendChild(this._container);\r\n\t\tthis.update();\r\n\r\n\t\tif (map._fadeAnimated) {\r\n\t\t\tDomUtil.setOpacity(this._container, 1);\r\n\t\t}\r\n\r\n\t\tthis.bringToFront();\r\n\r\n\t\tif (this.options.interactive) {\r\n\t\t\tDomUtil.addClass(this._container, 'leaflet-interactive');\r\n\t\t\tthis.addInteractiveTarget(this._container);\r\n\t\t}\r\n\t},\r\n\r\n\tonRemove: function (map) {\r\n\t\tif (map._fadeAnimated) {\r\n\t\t\tDomUtil.setOpacity(this._container, 0);\r\n\t\t\tthis._removeTimeout = setTimeout(Util.bind(DomUtil.remove, undefined, this._container), 200);\r\n\t\t} else {\r\n\t\t\tDomUtil.remove(this._container);\r\n\t\t}\r\n\r\n\t\tif (this.options.interactive) {\r\n\t\t\tDomUtil.removeClass(this._container, 'leaflet-interactive');\r\n\t\t\tthis.removeInteractiveTarget(this._container);\r\n\t\t}\r\n\t},\r\n\r\n\t// @namespace DivOverlay\r\n\t// @method getLatLng: LatLng\r\n\t// Returns the geographical point of the overlay.\r\n\tgetLatLng: function () {\r\n\t\treturn this._latlng;\r\n\t},\r\n\r\n\t// @method setLatLng(latlng: LatLng): this\r\n\t// Sets the geographical point where the overlay will open.\r\n\tsetLatLng: function (latlng) {\r\n\t\tthis._latlng = toLatLng(latlng);\r\n\t\tif (this._map) {\r\n\t\t\tthis._updatePosition();\r\n\t\t\tthis._adjustPan();\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method getContent: String|HTMLElement\r\n\t// Returns the content of the overlay.\r\n\tgetContent: function () {\r\n\t\treturn this._content;\r\n\t},\r\n\r\n\t// @method setContent(htmlContent: String|HTMLElement|Function): this\r\n\t// Sets the HTML content of the overlay. If a function is passed the source layer will be passed to the function.\r\n\t// The function should return a `String` or `HTMLElement` to be used in the overlay.\r\n\tsetContent: function (content) {\r\n\t\tthis._content = content;\r\n\t\tthis.update();\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method getElement: String|HTMLElement\r\n\t// Returns the HTML container of the overlay.\r\n\tgetElement: function () {\r\n\t\treturn this._container;\r\n\t},\r\n\r\n\t// @method update: null\r\n\t// Updates the overlay content, layout and position. Useful for updating the overlay after something inside changed, e.g. image loaded.\r\n\tupdate: function () {\r\n\t\tif (!this._map) { return; }\r\n\r\n\t\tthis._container.style.visibility = 'hidden';\r\n\r\n\t\tthis._updateContent();\r\n\t\tthis._updateLayout();\r\n\t\tthis._updatePosition();\r\n\r\n\t\tthis._container.style.visibility = '';\r\n\r\n\t\tthis._adjustPan();\r\n\t},\r\n\r\n\tgetEvents: function () {\r\n\t\tvar events = {\r\n\t\t\tzoom: this._updatePosition,\r\n\t\t\tviewreset: this._updatePosition\r\n\t\t};\r\n\r\n\t\tif (this._zoomAnimated) {\r\n\t\t\tevents.zoomanim = this._animateZoom;\r\n\t\t}\r\n\t\treturn events;\r\n\t},\r\n\r\n\t// @method isOpen: Boolean\r\n\t// Returns `true` when the overlay is visible on the map.\r\n\tisOpen: function () {\r\n\t\treturn !!this._map && this._map.hasLayer(this);\r\n\t},\r\n\r\n\t// @method bringToFront: this\r\n\t// Brings this overlay in front of other overlays (in the same map pane).\r\n\tbringToFront: function () {\r\n\t\tif (this._map) {\r\n\t\t\tDomUtil.toFront(this._container);\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method bringToBack: this\r\n\t// Brings this overlay to the back of other overlays (in the same map pane).\r\n\tbringToBack: function () {\r\n\t\tif (this._map) {\r\n\t\t\tDomUtil.toBack(this._container);\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// prepare bound overlay to open: update latlng pos / content source (for FeatureGroup)\r\n\t_prepareOpen: function (latlng) {\r\n\t\tvar source = this._source;\r\n\t\tif (!source._map) { return false; }\r\n\r\n\t\tif (source instanceof FeatureGroup) {\r\n\t\t\tsource = null;\r\n\t\t\tvar layers = this._source._layers;\r\n\t\t\tfor (var id in layers) {\r\n\t\t\t\tif (layers[id]._map) {\r\n\t\t\t\t\tsource = layers[id];\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (!source) { return false; } // Unable to get source layer.\r\n\r\n\t\t\t// set overlay source to this layer\r\n\t\t\tthis._source = source;\r\n\t\t}\r\n\r\n\t\tif (!latlng) {\r\n\t\t\tif (source.getCenter) {\r\n\t\t\t\tlatlng = source.getCenter();\r\n\t\t\t} else if (source.getLatLng) {\r\n\t\t\t\tlatlng = source.getLatLng();\r\n\t\t\t} else if (source.getBounds) {\r\n\t\t\t\tlatlng = source.getBounds().getCenter();\r\n\t\t\t} else {\r\n\t\t\t\tthrow new Error('Unable to get source layer LatLng.');\r\n\t\t\t}\r\n\t\t}\r\n\t\tthis.setLatLng(latlng);\r\n\r\n\t\tif (this._map) {\r\n\t\t\t// update the overlay (content, layout, etc...)\r\n\t\t\tthis.update();\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t},\r\n\r\n\t_updateContent: function () {\r\n\t\tif (!this._content) { return; }\r\n\r\n\t\tvar node = this._contentNode;\r\n\t\tvar content = (typeof this._content === 'function') ? this._content(this._source || this) : this._content;\r\n\r\n\t\tif (typeof content === 'string') {\r\n\t\t\tnode.innerHTML = content;\r\n\t\t} else {\r\n\t\t\twhile (node.hasChildNodes()) {\r\n\t\t\t\tnode.removeChild(node.firstChild);\r\n\t\t\t}\r\n\t\t\tnode.appendChild(content);\r\n\t\t}\r\n\r\n\t\t// @namespace DivOverlay\r\n\t\t// @section DivOverlay events\r\n\t\t// @event contentupdate: Event\r\n\t\t// Fired when the content of the overlay is updated\r\n\t\tthis.fire('contentupdate');\r\n\t},\r\n\r\n\t_updatePosition: function () {\r\n\t\tif (!this._map) { return; }\r\n\r\n\t\tvar pos = this._map.latLngToLayerPoint(this._latlng),\r\n\t\t    offset = toPoint(this.options.offset),\r\n\t\t    anchor = this._getAnchor();\r\n\r\n\t\tif (this._zoomAnimated) {\r\n\t\t\tDomUtil.setPosition(this._container, pos.add(anchor));\r\n\t\t} else {\r\n\t\t\toffset = offset.add(pos).add(anchor);\r\n\t\t}\r\n\r\n\t\tvar bottom = this._containerBottom = -offset.y,\r\n\t\t    left = this._containerLeft = -Math.round(this._containerWidth / 2) + offset.x;\r\n\r\n\t\t// bottom position the overlay in case the height of the overlay changes (images loading etc)\r\n\t\tthis._container.style.bottom = bottom + 'px';\r\n\t\tthis._container.style.left = left + 'px';\r\n\t},\r\n\r\n\t_getAnchor: function () {\r\n\t\treturn [0, 0];\r\n\t}\r\n\r\n});\r\n\r\nMap.include({\r\n\t_initOverlay: function (OverlayClass, content, latlng, options) {\r\n\t\tvar overlay = content;\r\n\t\tif (!(overlay instanceof OverlayClass)) {\r\n\t\t\toverlay = new OverlayClass(options).setContent(content);\r\n\t\t}\r\n\t\tif (latlng) {\r\n\t\t\toverlay.setLatLng(latlng);\r\n\t\t}\r\n\t\treturn overlay;\r\n\t}\r\n});\r\n\r\n\r\nLayer.include({\r\n\t_initOverlay: function (OverlayClass, old, content, options) {\r\n\t\tvar overlay = content;\r\n\t\tif (overlay instanceof OverlayClass) {\r\n\t\t\tUtil.setOptions(overlay, options);\r\n\t\t\toverlay._source = this;\r\n\t\t} else {\r\n\t\t\toverlay = (old && !options) ? old : new OverlayClass(options, this);\r\n\t\t\toverlay.setContent(content);\r\n\t\t}\r\n\t\treturn overlay;\r\n\t}\r\n});\r\n", "import {DivOverlay} from './DivOverlay';\r\nimport * as DomEvent from '../dom/DomEvent';\r\nimport * as DomUtil from '../dom/DomUtil';\r\nimport {Point, toPoint} from '../geometry/Point';\r\nimport {Map} from '../map/Map';\r\nimport {Layer} from './Layer';\r\nimport {Path} from './vector/Path';\r\nimport {FeatureGroup} from './FeatureGroup';\r\n\r\n/*\r\n * @class Popup\r\n * @inherits DivOverlay\r\n * @aka L.Popup\r\n * Used to open popups in certain places of the map. Use [Map.openPopup](#map-openpopup) to\r\n * open popups while making sure that only one popup is open at one time\r\n * (recommended for usability), or use [Map.addLayer](#map-addlayer) to open as many as you want.\r\n *\r\n * @example\r\n *\r\n * If you want to just bind a popup to marker click and then open it, it's really easy:\r\n *\r\n * ```js\r\n * marker.bindPopup(popupContent).openPopup();\r\n * ```\r\n * Path overlays like polylines also have a `bindPopup` method.\r\n *\r\n * A popup can be also standalone:\r\n *\r\n * ```js\r\n * var popup = L.popup()\r\n * \t.setLatLng(latlng)\r\n * \t.setContent('<p>Hello world!<br />This is a nice popup.</p>')\r\n * \t.openOn(map);\r\n * ```\r\n * or\r\n * ```js\r\n * var popup = L.popup(latlng, {content: '<p>Hello world!<br />This is a nice popup.</p>')\r\n * \t.openOn(map);\r\n * ```\r\n */\r\n\r\n\r\n// @namespace Popup\r\nexport var Popup = DivOverlay.extend({\r\n\r\n\t// @section\r\n\t// @aka Popup options\r\n\toptions: {\r\n\t\t// @option pane: String = 'popupPane'\r\n\t\t// `Map pane` where the popup will be added.\r\n\t\tpane: 'popupPane',\r\n\r\n\t\t// @option offset: Point = Point(0, 7)\r\n\t\t// The offset of the popup position.\r\n\t\toffset: [0, 7],\r\n\r\n\t\t// @option maxWidth: Number = 300\r\n\t\t// Max width of the popup, in pixels.\r\n\t\tmaxWidth: 300,\r\n\r\n\t\t// @option minWidth: Number = 50\r\n\t\t// Min width of the popup, in pixels.\r\n\t\tminWidth: 50,\r\n\r\n\t\t// @option maxHeight: Number = null\r\n\t\t// If set, creates a scrollable container of the given height\r\n\t\t// inside a popup if its content exceeds it.\r\n\t\t// The scrollable container can be styled using the\r\n\t\t// `leaflet-popup-scrolled` CSS class selector.\r\n\t\tmaxHeight: null,\r\n\r\n\t\t// @option autoPan: Boolean = true\r\n\t\t// Set it to `false` if you don't want the map to do panning animation\r\n\t\t// to fit the opened popup.\r\n\t\tautoPan: true,\r\n\r\n\t\t// @option autoPanPaddingTopLeft: Point = null\r\n\t\t// The margin between the popup and the top left corner of the map\r\n\t\t// view after autopanning was performed.\r\n\t\tautoPanPaddingTopLeft: null,\r\n\r\n\t\t// @option autoPanPaddingBottomRight: Point = null\r\n\t\t// The margin between the popup and the bottom right corner of the map\r\n\t\t// view after autopanning was performed.\r\n\t\tautoPanPaddingBottomRight: null,\r\n\r\n\t\t// @option autoPanPadding: Point = Point(5, 5)\r\n\t\t// Equivalent of setting both top left and bottom right autopan padding to the same value.\r\n\t\tautoPanPadding: [5, 5],\r\n\r\n\t\t// @option keepInView: Boolean = false\r\n\t\t// Set it to `true` if you want to prevent users from panning the popup\r\n\t\t// off of the screen while it is open.\r\n\t\tkeepInView: false,\r\n\r\n\t\t// @option closeButton: Boolean = true\r\n\t\t// Controls the presence of a close button in the popup.\r\n\t\tcloseButton: true,\r\n\r\n\t\t// @option autoClose: Boolean = true\r\n\t\t// Set it to `false` if you want to override the default behavior of\r\n\t\t// the popup closing when another popup is opened.\r\n\t\tautoClose: true,\r\n\r\n\t\t// @option closeOnEscapeKey: Boolean = true\r\n\t\t// Set it to `false` if you want to override the default behavior of\r\n\t\t// the ESC key for closing of the popup.\r\n\t\tcloseOnEscapeKey: true,\r\n\r\n\t\t// @option closeOnClick: Boolean = *\r\n\t\t// Set it if you want to override the default behavior of the popup closing when user clicks\r\n\t\t// on the map. Defaults to the map's [`closePopupOnClick`](#map-closepopuponclick) option.\r\n\r\n\t\t// @option className: String = ''\r\n\t\t// A custom CSS class name to assign to the popup.\r\n\t\tclassName: ''\r\n\t},\r\n\r\n\t// @namespace Popup\r\n\t// @method openOn(map: Map): this\r\n\t// Alternative to `map.openPopup(popup)`.\r\n\t// Adds the popup to the map and closes the previous one.\r\n\topenOn: function (map) {\r\n\t\tmap = arguments.length ? map : this._source._map; // experimental, not the part of public api\r\n\r\n\t\tif (!map.hasLayer(this) && map._popup && map._popup.options.autoClose) {\r\n\t\t\tmap.removeLayer(map._popup);\r\n\t\t}\r\n\t\tmap._popup = this;\r\n\r\n\t\treturn DivOverlay.prototype.openOn.call(this, map);\r\n\t},\r\n\r\n\tonAdd: function (map) {\r\n\t\tDivOverlay.prototype.onAdd.call(this, map);\r\n\r\n\t\t// @namespace Map\r\n\t\t// @section Popup events\r\n\t\t// @event popupopen: PopupEvent\r\n\t\t// Fired when a popup is opened in the map\r\n\t\tmap.fire('popupopen', {popup: this});\r\n\r\n\t\tif (this._source) {\r\n\t\t\t// @namespace Layer\r\n\t\t\t// @section Popup events\r\n\t\t\t// @event popupopen: PopupEvent\r\n\t\t\t// Fired when a popup bound to this layer is opened\r\n\t\t\tthis._source.fire('popupopen', {popup: this}, true);\r\n\t\t\t// For non-path layers, we toggle the popup when clicking\r\n\t\t\t// again the layer, so prevent the map to reopen it.\r\n\t\t\tif (!(this._source instanceof Path)) {\r\n\t\t\t\tthis._source.on('preclick', DomEvent.stopPropagation);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tonRemove: function (map) {\r\n\t\tDivOverlay.prototype.onRemove.call(this, map);\r\n\r\n\t\t// @namespace Map\r\n\t\t// @section Popup events\r\n\t\t// @event popupclose: PopupEvent\r\n\t\t// Fired when a popup in the map is closed\r\n\t\tmap.fire('popupclose', {popup: this});\r\n\r\n\t\tif (this._source) {\r\n\t\t\t// @namespace Layer\r\n\t\t\t// @section Popup events\r\n\t\t\t// @event popupclose: PopupEvent\r\n\t\t\t// Fired when a popup bound to this layer is closed\r\n\t\t\tthis._source.fire('popupclose', {popup: this}, true);\r\n\t\t\tif (!(this._source instanceof Path)) {\r\n\t\t\t\tthis._source.off('preclick', DomEvent.stopPropagation);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tgetEvents: function () {\r\n\t\tvar events = DivOverlay.prototype.getEvents.call(this);\r\n\r\n\t\tif (this.options.closeOnClick !== undefined ? this.options.closeOnClick : this._map.options.closePopupOnClick) {\r\n\t\t\tevents.preclick = this.close;\r\n\t\t}\r\n\r\n\t\tif (this.options.keepInView) {\r\n\t\t\tevents.moveend = this._adjustPan;\r\n\t\t}\r\n\r\n\t\treturn events;\r\n\t},\r\n\r\n\t_initLayout: function () {\r\n\t\tvar prefix = 'leaflet-popup',\r\n\t\t    container = this._container = DomUtil.create('div',\r\n\t\t\tprefix + ' ' + (this.options.className || '') +\r\n\t\t\t' leaflet-zoom-animated');\r\n\r\n\t\tvar wrapper = this._wrapper = DomUtil.create('div', prefix + '-content-wrapper', container);\r\n\t\tthis._contentNode = DomUtil.create('div', prefix + '-content', wrapper);\r\n\r\n\t\tDomEvent.disableClickPropagation(container);\r\n\t\tDomEvent.disableScrollPropagation(this._contentNode);\r\n\t\tDomEvent.on(container, 'contextmenu', DomEvent.stopPropagation);\r\n\r\n\t\tthis._tipContainer = DomUtil.create('div', prefix + '-tip-container', container);\r\n\t\tthis._tip = DomUtil.create('div', prefix + '-tip', this._tipContainer);\r\n\r\n\t\tif (this.options.closeButton) {\r\n\t\t\tvar closeButton = this._closeButton = DomUtil.create('a', prefix + '-close-button', container);\r\n\t\t\tcloseButton.setAttribute('role', 'button'); // overrides the implicit role=link of <a> elements #7399\r\n\t\t\tcloseButton.setAttribute('aria-label', 'Close popup');\r\n\t\t\tcloseButton.href = '#close';\r\n\t\t\tcloseButton.innerHTML = '<span aria-hidden=\"true\">&#215;</span>';\r\n\r\n\t\t\tDomEvent.on(closeButton, 'click', function (ev) {\r\n\t\t\t\tDomEvent.preventDefault(ev);\r\n\t\t\t\tthis.close();\r\n\t\t\t}, this);\r\n\t\t}\r\n\t},\r\n\r\n\t_updateLayout: function () {\r\n\t\tvar container = this._contentNode,\r\n\t\t    style = container.style;\r\n\r\n\t\tstyle.width = '';\r\n\t\tstyle.whiteSpace = 'nowrap';\r\n\r\n\t\tvar width = container.offsetWidth;\r\n\t\twidth = Math.min(width, this.options.maxWidth);\r\n\t\twidth = Math.max(width, this.options.minWidth);\r\n\r\n\t\tstyle.width = (width + 1) + 'px';\r\n\t\tstyle.whiteSpace = '';\r\n\r\n\t\tstyle.height = '';\r\n\r\n\t\tvar height = container.offsetHeight,\r\n\t\t    maxHeight = this.options.maxHeight,\r\n\t\t    scrolledClass = 'leaflet-popup-scrolled';\r\n\r\n\t\tif (maxHeight && height > maxHeight) {\r\n\t\t\tstyle.height = maxHeight + 'px';\r\n\t\t\tDomUtil.addClass(container, scrolledClass);\r\n\t\t} else {\r\n\t\t\tDomUtil.removeClass(container, scrolledClass);\r\n\t\t}\r\n\r\n\t\tthis._containerWidth = this._container.offsetWidth;\r\n\t},\r\n\r\n\t_animateZoom: function (e) {\r\n\t\tvar pos = this._map._latLngToNewLayerPoint(this._latlng, e.zoom, e.center),\r\n\t\t    anchor = this._getAnchor();\r\n\t\tDomUtil.setPosition(this._container, pos.add(anchor));\r\n\t},\r\n\r\n\t_adjustPan: function () {\r\n\t\tif (!this.options.autoPan) { return; }\r\n\t\tif (this._map._panAnim) { this._map._panAnim.stop(); }\r\n\r\n\t\t// We can endlessly recurse if keepInView is set and the view resets.\r\n\t\t// Let's guard against that by exiting early if we're responding to our own autopan.\r\n\t\tif (this._autopanning) {\r\n\t\t\tthis._autopanning = false;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar map = this._map,\r\n\t\t    marginBottom = parseInt(DomUtil.getStyle(this._container, 'marginBottom'), 10) || 0,\r\n\t\t    containerHeight = this._container.offsetHeight + marginBottom,\r\n\t\t    containerWidth = this._containerWidth,\r\n\t\t    layerPos = new Point(this._containerLeft, -containerHeight - this._containerBottom);\r\n\r\n\t\tlayerPos._add(DomUtil.getPosition(this._container));\r\n\r\n\t\tvar containerPos = map.layerPointToContainerPoint(layerPos),\r\n\t\t    padding = toPoint(this.options.autoPanPadding),\r\n\t\t    paddingTL = toPoint(this.options.autoPanPaddingTopLeft || padding),\r\n\t\t    paddingBR = toPoint(this.options.autoPanPaddingBottomRight || padding),\r\n\t\t    size = map.getSize(),\r\n\t\t    dx = 0,\r\n\t\t    dy = 0;\r\n\r\n\t\tif (containerPos.x + containerWidth + paddingBR.x > size.x) { // right\r\n\t\t\tdx = containerPos.x + containerWidth - size.x + paddingBR.x;\r\n\t\t}\r\n\t\tif (containerPos.x - dx - paddingTL.x < 0) { // left\r\n\t\t\tdx = containerPos.x - paddingTL.x;\r\n\t\t}\r\n\t\tif (containerPos.y + containerHeight + paddingBR.y > size.y) { // bottom\r\n\t\t\tdy = containerPos.y + containerHeight - size.y + paddingBR.y;\r\n\t\t}\r\n\t\tif (containerPos.y - dy - paddingTL.y < 0) { // top\r\n\t\t\tdy = containerPos.y - paddingTL.y;\r\n\t\t}\r\n\r\n\t\t// @namespace Map\r\n\t\t// @section Popup events\r\n\t\t// @event autopanstart: Event\r\n\t\t// Fired when the map starts autopanning when opening a popup.\r\n\t\tif (dx || dy) {\r\n\t\t\t// Track that we're autopanning, as this function will be re-ran on moveend\r\n\t\t\tif (this.options.keepInView) {\r\n\t\t\t\tthis._autopanning = true;\r\n\t\t\t}\r\n\r\n\t\t\tmap\r\n\t\t\t    .fire('autopanstart')\r\n\t\t\t    .panBy([dx, dy]);\r\n\t\t}\r\n\t},\r\n\r\n\t_getAnchor: function () {\r\n\t\t// Where should we anchor the popup on the source layer?\r\n\t\treturn toPoint(this._source && this._source._getPopupAnchor ? this._source._getPopupAnchor() : [0, 0]);\r\n\t}\r\n\r\n});\r\n\r\n// @namespace Popup\r\n// @factory L.popup(options?: Popup options, source?: Layer)\r\n// Instantiates a `Popup` object given an optional `options` object that describes its appearance and location and an optional `source` object that is used to tag the popup with a reference to the Layer to which it refers.\r\n// @alternative\r\n// @factory L.popup(latlng: LatLng, options?: Popup options)\r\n// Instantiates a `Popup` object given `latlng` where the popup will open and an optional `options` object that describes its appearance and location.\r\nexport var popup = function (options, source) {\r\n\treturn new Popup(options, source);\r\n};\r\n\r\n\r\n/* @namespace Map\r\n * @section Interaction Options\r\n * @option closePopupOnClick: Boolean = true\r\n * Set it to `false` if you don't want popups to close when user clicks the map.\r\n */\r\nMap.mergeOptions({\r\n\tclosePopupOnClick: true\r\n});\r\n\r\n\r\n// @namespace Map\r\n// @section Methods for Layers and Controls\r\nMap.include({\r\n\t// @method openPopup(popup: Popup): this\r\n\t// Opens the specified popup while closing the previously opened (to make sure only one is opened at one time for usability).\r\n\t// @alternative\r\n\t// @method openPopup(content: String|HTMLElement, latlng: LatLng, options?: Popup options): this\r\n\t// Creates a popup with the specified content and options and opens it in the given point on a map.\r\n\topenPopup: function (popup, latlng, options) {\r\n\t\tthis._initOverlay(Popup, popup, latlng, options)\r\n\t\t  .openOn(this);\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method closePopup(popup?: Popup): this\r\n\t// Closes the popup previously opened with [openPopup](#map-openpopup) (or the given one).\r\n\tclosePopup: function (popup) {\r\n\t\tpopup = arguments.length ? popup : this._popup;\r\n\t\tif (popup) {\r\n\t\t\tpopup.close();\r\n\t\t}\r\n\t\treturn this;\r\n\t}\r\n});\r\n\r\n/*\r\n * @namespace Layer\r\n * @section Popup methods example\r\n *\r\n * All layers share a set of methods convenient for binding popups to it.\r\n *\r\n * ```js\r\n * var layer = L.Polygon(latlngs).bindPopup('Hi There!').addTo(map);\r\n * layer.openPopup();\r\n * layer.closePopup();\r\n * ```\r\n *\r\n * Popups will also be automatically opened when the layer is clicked on and closed when the layer is removed from the map or another popup is opened.\r\n */\r\n\r\n// @section Popup methods\r\nLayer.include({\r\n\r\n\t// @method bindPopup(content: String|HTMLElement|Function|Popup, options?: Popup options): this\r\n\t// Binds a popup to the layer with the passed `content` and sets up the\r\n\t// necessary event listeners. If a `Function` is passed it will receive\r\n\t// the layer as the first argument and should return a `String` or `HTMLElement`.\r\n\tbindPopup: function (content, options) {\r\n\t\tthis._popup = this._initOverlay(Popup, this._popup, content, options);\r\n\t\tif (!this._popupHandlersAdded) {\r\n\t\t\tthis.on({\r\n\t\t\t\tclick: this._openPopup,\r\n\t\t\t\tkeypress: this._onKeyPress,\r\n\t\t\t\tremove: this.closePopup,\r\n\t\t\t\tmove: this._movePopup\r\n\t\t\t});\r\n\t\t\tthis._popupHandlersAdded = true;\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method unbindPopup(): this\r\n\t// Removes the popup previously bound with `bindPopup`.\r\n\tunbindPopup: function () {\r\n\t\tif (this._popup) {\r\n\t\t\tthis.off({\r\n\t\t\t\tclick: this._openPopup,\r\n\t\t\t\tkeypress: this._onKeyPress,\r\n\t\t\t\tremove: this.closePopup,\r\n\t\t\t\tmove: this._movePopup\r\n\t\t\t});\r\n\t\t\tthis._popupHandlersAdded = false;\r\n\t\t\tthis._popup = null;\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method openPopup(latlng?: LatLng): this\r\n\t// Opens the bound popup at the specified `latlng` or at the default popup anchor if no `latlng` is passed.\r\n\topenPopup: function (latlng) {\r\n\t\tif (this._popup) {\r\n\t\t\tif (!(this instanceof FeatureGroup)) {\r\n\t\t\t\tthis._popup._source = this;\r\n\t\t\t}\r\n\t\t\tif (this._popup._prepareOpen(latlng || this._latlng)) {\r\n\t\t\t\t// open the popup on the map\r\n\t\t\t\tthis._popup.openOn(this._map);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method closePopup(): this\r\n\t// Closes the popup bound to this layer if it is open.\r\n\tclosePopup: function () {\r\n\t\tif (this._popup) {\r\n\t\t\tthis._popup.close();\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method togglePopup(): this\r\n\t// Opens or closes the popup bound to this layer depending on its current state.\r\n\ttogglePopup: function () {\r\n\t\tif (this._popup) {\r\n\t\t\tthis._popup.toggle(this);\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method isPopupOpen(): boolean\r\n\t// Returns `true` if the popup bound to this layer is currently open.\r\n\tisPopupOpen: function () {\r\n\t\treturn (this._popup ? this._popup.isOpen() : false);\r\n\t},\r\n\r\n\t// @method setPopupContent(content: String|HTMLElement|Popup): this\r\n\t// Sets the content of the popup bound to this layer.\r\n\tsetPopupContent: function (content) {\r\n\t\tif (this._popup) {\r\n\t\t\tthis._popup.setContent(content);\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method getPopup(): Popup\r\n\t// Returns the popup bound to this layer.\r\n\tgetPopup: function () {\r\n\t\treturn this._popup;\r\n\t},\r\n\r\n\t_openPopup: function (e) {\r\n\t\tif (!this._popup || !this._map) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t// prevent map click\r\n\t\tDomEvent.stop(e);\r\n\r\n\t\tvar target = e.layer || e.target;\r\n\t\tif (this._popup._source === target && !(target instanceof Path)) {\r\n\t\t\t// treat it like a marker and figure out\r\n\t\t\t// if we should toggle it open/closed\r\n\t\t\tif (this._map.hasLayer(this._popup)) {\r\n\t\t\t\tthis.closePopup();\r\n\t\t\t} else {\r\n\t\t\t\tthis.openPopup(e.latlng);\r\n\t\t\t}\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis._popup._source = target;\r\n\t\tthis.openPopup(e.latlng);\r\n\t},\r\n\r\n\t_movePopup: function (e) {\r\n\t\tthis._popup.setLatLng(e.latlng);\r\n\t},\r\n\r\n\t_onKeyPress: function (e) {\r\n\t\tif (e.originalEvent.keyCode === 13) {\r\n\t\t\tthis._openPopup(e);\r\n\t\t}\r\n\t}\r\n});\r\n", "import {DivOverlay} from './DivOverlay';\nimport {toPoint} from '../geometry/Point';\nimport {Map} from '../map/Map';\nimport {Layer} from './Layer';\nimport * as DomUtil from '../dom/DomUtil';\nimport * as DomEvent from '../dom/DomEvent';\nimport * as Util from '../core/Util';\nimport {FeatureGroup} from './FeatureGroup';\n\n/*\n * @class Tooltip\n * @inherits DivOverlay\n * @aka L.Tooltip\n * Used to display small texts on top of map layers.\n *\n * @example\n * If you want to just bind a tooltip to marker:\n *\n * ```js\n * marker.bindTooltip(\"my tooltip text\").openTooltip();\n * ```\n * Path overlays like polylines also have a `bindTooltip` method.\n *\n * A tooltip can be also standalone:\n *\n * ```js\n * var tooltip = L.tooltip()\n * \t.setLatLng(latlng)\n * \t.setContent('Hello world!<br />This is a nice tooltip.')\n * \t.addTo(map);\n * ```\n * or\n * ```js\n * var tooltip = L.tooltip(latlng, {content: 'Hello world!<br />This is a nice tooltip.'})\n * \t.addTo(map);\n * ```\n *\n *\n * Note about tooltip offset. Leaflet takes two options in consideration\n * for computing tooltip offsetting:\n * - the `offset` Tooltip option: it defaults to [0, 0], and it's specific to one tooltip.\n *   Add a positive x offset to move the tooltip to the right, and a positive y offset to\n *   move it to the bottom. Negatives will move to the left and top.\n * - the `tooltipAnchor` Icon option: this will only be considered for Marker. You\n *   should adapt this value if you use a custom icon.\n */\n\n\n// @namespace Tooltip\nexport var Tooltip = DivOverlay.extend({\n\n\t// @section\n\t// @aka Tooltip options\n\toptions: {\n\t\t// @option pane: String = 'tooltipPane'\n\t\t// `Map pane` where the tooltip will be added.\n\t\tpane: 'tooltipPane',\n\n\t\t// @option offset: Point = Point(0, 0)\n\t\t// Optional offset of the tooltip position.\n\t\toffset: [0, 0],\n\n\t\t// @option direction: String = 'auto'\n\t\t// Direction where to open the tooltip. Possible values are: `right`, `left`,\n\t\t// `top`, `bottom`, `center`, `auto`.\n\t\t// `auto` will dynamically switch between `right` and `left` according to the tooltip\n\t\t// position on the map.\n\t\tdirection: 'auto',\n\n\t\t// @option permanent: Boolean = false\n\t\t// Whether to open the tooltip permanently or only on mouseover.\n\t\tpermanent: false,\n\n\t\t// @option sticky: Boolean = false\n\t\t// If true, the tooltip will follow the mouse instead of being fixed at the feature center.\n\t\tsticky: false,\n\n\t\t// @option opacity: Number = 0.9\n\t\t// Tooltip container opacity.\n\t\topacity: 0.9\n\t},\n\n\tonAdd: function (map) {\n\t\tDivOverlay.prototype.onAdd.call(this, map);\n\t\tthis.setOpacity(this.options.opacity);\n\n\t\t// @namespace Map\n\t\t// @section Tooltip events\n\t\t// @event tooltipopen: TooltipEvent\n\t\t// Fired when a tooltip is opened in the map.\n\t\tmap.fire('tooltipopen', {tooltip: this});\n\n\t\tif (this._source) {\n\t\t\tthis.addEventParent(this._source);\n\n\t\t\t// @namespace Layer\n\t\t\t// @section Tooltip events\n\t\t\t// @event tooltipopen: TooltipEvent\n\t\t\t// Fired when a tooltip bound to this layer is opened.\n\t\t\tthis._source.fire('tooltipopen', {tooltip: this}, true);\n\t\t}\n\t},\n\n\tonRemove: function (map) {\n\t\tDivOverlay.prototype.onRemove.call(this, map);\n\n\t\t// @namespace Map\n\t\t// @section Tooltip events\n\t\t// @event tooltipclose: TooltipEvent\n\t\t// Fired when a tooltip in the map is closed.\n\t\tmap.fire('tooltipclose', {tooltip: this});\n\n\t\tif (this._source) {\n\t\t\tthis.removeEventParent(this._source);\n\n\t\t\t// @namespace Layer\n\t\t\t// @section Tooltip events\n\t\t\t// @event tooltipclose: TooltipEvent\n\t\t\t// Fired when a tooltip bound to this layer is closed.\n\t\t\tthis._source.fire('tooltipclose', {tooltip: this}, true);\n\t\t}\n\t},\n\n\tgetEvents: function () {\n\t\tvar events = DivOverlay.prototype.getEvents.call(this);\n\n\t\tif (!this.options.permanent) {\n\t\t\tevents.preclick = this.close;\n\t\t}\n\n\t\treturn events;\n\t},\n\n\t_initLayout: function () {\n\t\tvar prefix = 'leaflet-tooltip',\n\t\t    className = prefix + ' ' + (this.options.className || '') + ' leaflet-zoom-' + (this._zoomAnimated ? 'animated' : 'hide');\n\n\t\tthis._contentNode = this._container = DomUtil.create('div', className);\n\n\t\tthis._container.setAttribute('role', 'tooltip');\n\t\tthis._container.setAttribute('id', 'leaflet-tooltip-' + Util.stamp(this));\n\t},\n\n\t_updateLayout: function () {},\n\n\t_adjustPan: function () {},\n\n\t_setPosition: function (pos) {\n\t\tvar subX, subY,\n\t\t    map = this._map,\n\t\t    container = this._container,\n\t\t    centerPoint = map.latLngToContainerPoint(map.getCenter()),\n\t\t    tooltipPoint = map.layerPointToContainerPoint(pos),\n\t\t    direction = this.options.direction,\n\t\t    tooltipWidth = container.offsetWidth,\n\t\t    tooltipHeight = container.offsetHeight,\n\t\t    offset = toPoint(this.options.offset),\n\t\t    anchor = this._getAnchor();\n\n\t\tif (direction === 'top') {\n\t\t\tsubX = tooltipWidth / 2;\n\t\t\tsubY = tooltipHeight;\n\t\t} else if (direction === 'bottom') {\n\t\t\tsubX = tooltipWidth / 2;\n\t\t\tsubY = 0;\n\t\t} else if (direction === 'center') {\n\t\t\tsubX = tooltipWidth / 2;\n\t\t\tsubY = tooltipHeight / 2;\n\t\t} else if (direction === 'right') {\n\t\t\tsubX = 0;\n\t\t\tsubY = tooltipHeight / 2;\n\t\t} else if (direction === 'left') {\n\t\t\tsubX = tooltipWidth;\n\t\t\tsubY = tooltipHeight / 2;\n\t\t} else if (tooltipPoint.x < centerPoint.x) {\n\t\t\tdirection = 'right';\n\t\t\tsubX = 0;\n\t\t\tsubY = tooltipHeight / 2;\n\t\t} else {\n\t\t\tdirection = 'left';\n\t\t\tsubX = tooltipWidth + (offset.x + anchor.x) * 2;\n\t\t\tsubY = tooltipHeight / 2;\n\t\t}\n\n\t\tpos = pos.subtract(toPoint(subX, subY, true)).add(offset).add(anchor);\n\n\t\tDomUtil.removeClass(container, 'leaflet-tooltip-right');\n\t\tDomUtil.removeClass(container, 'leaflet-tooltip-left');\n\t\tDomUtil.removeClass(container, 'leaflet-tooltip-top');\n\t\tDomUtil.removeClass(container, 'leaflet-tooltip-bottom');\n\t\tDomUtil.addClass(container, 'leaflet-tooltip-' + direction);\n\t\tDomUtil.setPosition(container, pos);\n\t},\n\n\t_updatePosition: function () {\n\t\tvar pos = this._map.latLngToLayerPoint(this._latlng);\n\t\tthis._setPosition(pos);\n\t},\n\n\tsetOpacity: function (opacity) {\n\t\tthis.options.opacity = opacity;\n\n\t\tif (this._container) {\n\t\t\tDomUtil.setOpacity(this._container, opacity);\n\t\t}\n\t},\n\n\t_animateZoom: function (e) {\n\t\tvar pos = this._map._latLngToNewLayerPoint(this._latlng, e.zoom, e.center);\n\t\tthis._setPosition(pos);\n\t},\n\n\t_getAnchor: function () {\n\t\t// Where should we anchor the tooltip on the source layer?\n\t\treturn toPoint(this._source && this._source._getTooltipAnchor && !this.options.sticky ? this._source._getTooltipAnchor() : [0, 0]);\n\t}\n\n});\n\n// @namespace Tooltip\n// @factory L.tooltip(options?: Tooltip options, source?: Layer)\n// Instantiates a `Tooltip` object given an optional `options` object that describes its appearance and location and an optional `source` object that is used to tag the tooltip with a reference to the Layer to which it refers.\n// @alternative\n// @factory L.tooltip(latlng: LatLng, options?: Tooltip options)\n// Instantiates a `Tooltip` object given `latlng` where the tooltip will open and an optional `options` object that describes its appearance and location.\nexport var tooltip = function (options, source) {\n\treturn new Tooltip(options, source);\n};\n\n// @namespace Map\n// @section Methods for Layers and Controls\nMap.include({\n\n\t// @method openTooltip(tooltip: Tooltip): this\n\t// Opens the specified tooltip.\n\t// @alternative\n\t// @method openTooltip(content: String|HTMLElement, latlng: LatLng, options?: Tooltip options): this\n\t// Creates a tooltip with the specified content and options and open it.\n\topenTooltip: function (tooltip, latlng, options) {\n\t\tthis._initOverlay(Tooltip, tooltip, latlng, options)\n\t\t  .openOn(this);\n\n\t\treturn this;\n\t},\n\n\t// @method closeTooltip(tooltip: Tooltip): this\n\t// Closes the tooltip given as parameter.\n\tcloseTooltip: function (tooltip) {\n\t\ttooltip.close();\n\t\treturn this;\n\t}\n\n});\n\n/*\n * @namespace Layer\n * @section Tooltip methods example\n *\n * All layers share a set of methods convenient for binding tooltips to it.\n *\n * ```js\n * var layer = L.Polygon(latlngs).bindTooltip('Hi There!').addTo(map);\n * layer.openTooltip();\n * layer.closeTooltip();\n * ```\n */\n\n// @section Tooltip methods\nLayer.include({\n\n\t// @method bindTooltip(content: String|HTMLElement|Function|Tooltip, options?: Tooltip options): this\n\t// Binds a tooltip to the layer with the passed `content` and sets up the\n\t// necessary event listeners. If a `Function` is passed it will receive\n\t// the layer as the first argument and should return a `String` or `HTMLElement`.\n\tbindTooltip: function (content, options) {\n\n\t\tif (this._tooltip && this.isTooltipOpen()) {\n\t\t\tthis.unbindTooltip();\n\t\t}\n\n\t\tthis._tooltip = this._initOverlay(Tooltip, this._tooltip, content, options);\n\t\tthis._initTooltipInteractions();\n\n\t\tif (this._tooltip.options.permanent && this._map && this._map.hasLayer(this)) {\n\t\t\tthis.openTooltip();\n\t\t}\n\n\t\treturn this;\n\t},\n\n\t// @method unbindTooltip(): this\n\t// Removes the tooltip previously bound with `bindTooltip`.\n\tunbindTooltip: function () {\n\t\tif (this._tooltip) {\n\t\t\tthis._initTooltipInteractions(true);\n\t\t\tthis.closeTooltip();\n\t\t\tthis._tooltip = null;\n\t\t}\n\t\treturn this;\n\t},\n\n\t_initTooltipInteractions: function (remove) {\n\t\tif (!remove && this._tooltipHandlersAdded) { return; }\n\t\tvar onOff = remove ? 'off' : 'on',\n\t\t    events = {\n\t\t\tremove: this.closeTooltip,\n\t\t\tmove: this._moveTooltip\n\t\t    };\n\t\tif (!this._tooltip.options.permanent) {\n\t\t\tevents.mouseover = this._openTooltip;\n\t\t\tevents.mouseout = this.closeTooltip;\n\t\t\tevents.click = this._openTooltip;\n\t\t\tif (this._map) {\n\t\t\t\tthis._addFocusListeners();\n\t\t\t} else {\n\t\t\t\tevents.add = this._addFocusListeners;\n\t\t\t}\n\t\t} else {\n\t\t\tevents.add = this._openTooltip;\n\t\t}\n\t\tif (this._tooltip.options.sticky) {\n\t\t\tevents.mousemove = this._moveTooltip;\n\t\t}\n\t\tthis[onOff](events);\n\t\tthis._tooltipHandlersAdded = !remove;\n\t},\n\n\t// @method openTooltip(latlng?: LatLng): this\n\t// Opens the bound tooltip at the specified `latlng` or at the default tooltip anchor if no `latlng` is passed.\n\topenTooltip: function (latlng) {\n\t\tif (this._tooltip) {\n\t\t\tif (!(this instanceof FeatureGroup)) {\n\t\t\t\tthis._tooltip._source = this;\n\t\t\t}\n\t\t\tif (this._tooltip._prepareOpen(latlng)) {\n\t\t\t\t// open the tooltip on the map\n\t\t\t\tthis._tooltip.openOn(this._map);\n\n\t\t\t\tif (this.getElement) {\n\t\t\t\t\tthis._setAriaDescribedByOnLayer(this);\n\t\t\t\t} else if (this.eachLayer) {\n\t\t\t\t\tthis.eachLayer(this._setAriaDescribedByOnLayer, this);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t},\n\n\t// @method closeTooltip(): this\n\t// Closes the tooltip bound to this layer if it is open.\n\tcloseTooltip: function () {\n\t\tif (this._tooltip) {\n\t\t\treturn this._tooltip.close();\n\t\t}\n\t},\n\n\t// @method toggleTooltip(): this\n\t// Opens or closes the tooltip bound to this layer depending on its current state.\n\ttoggleTooltip: function () {\n\t\tif (this._tooltip) {\n\t\t\tthis._tooltip.toggle(this);\n\t\t}\n\t\treturn this;\n\t},\n\n\t// @method isTooltipOpen(): boolean\n\t// Returns `true` if the tooltip bound to this layer is currently open.\n\tisTooltipOpen: function () {\n\t\treturn this._tooltip.isOpen();\n\t},\n\n\t// @method setTooltipContent(content: String|HTMLElement|Tooltip): this\n\t// Sets the content of the tooltip bound to this layer.\n\tsetTooltipContent: function (content) {\n\t\tif (this._tooltip) {\n\t\t\tthis._tooltip.setContent(content);\n\t\t}\n\t\treturn this;\n\t},\n\n\t// @method getTooltip(): Tooltip\n\t// Returns the tooltip bound to this layer.\n\tgetTooltip: function () {\n\t\treturn this._tooltip;\n\t},\n\n\t_addFocusListeners: function () {\n\t\tif (this.getElement) {\n\t\t\tthis._addFocusListenersOnLayer(this);\n\t\t} else if (this.eachLayer) {\n\t\t\tthis.eachLayer(this._addFocusListenersOnLayer, this);\n\t\t}\n\t},\n\n\t_addFocusListenersOnLayer: function (layer) {\n\t\tvar el = typeof layer.getElement === 'function' && layer.getElement();\n\t\tif (el) {\n\t\t\tDomEvent.on(el, 'focus', function () {\n\t\t\t\tthis._tooltip._source = layer;\n\t\t\t\tthis.openTooltip();\n\t\t\t}, this);\n\t\t\tDomEvent.on(el, 'blur', this.closeTooltip, this);\n\t\t}\n\t},\n\n\t_setAriaDescribedByOnLayer: function (layer) {\n\t\tvar el = typeof layer.getElement === 'function' && layer.getElement();\n\t\tif (el) {\n\t\t\tel.setAttribute('aria-describedby', this._tooltip._container.id);\n\t\t}\n\t},\n\n\n\t_openTooltip: function (e) {\n\t\tif (!this._tooltip || !this._map) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If the map is moving, we will show the tooltip after it's done.\n\t\tif (this._map.dragging && this._map.dragging.moving() && !this._openOnceFlag) {\n\t\t\tthis._openOnceFlag = true;\n\t\t\tvar that = this;\n\t\t\tthis._map.once('moveend', function () {\n\t\t\t\tthat._openOnceFlag = false;\n\t\t\t\tthat._openTooltip(e);\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\tthis._tooltip._source = e.layer || e.target;\n\n\t\tthis.openTooltip(this._tooltip.options.sticky ? e.latlng : undefined);\n\t},\n\n\t_moveTooltip: function (e) {\n\t\tvar latlng = e.latlng, containerPoint, layerPoint;\n\t\tif (this._tooltip.options.sticky && e.originalEvent) {\n\t\t\tcontainerPoint = this._map.mouseEventToContainerPoint(e.originalEvent);\n\t\t\tlayerPoint = this._map.containerPointToLayerPoint(containerPoint);\n\t\t\tlatlng = this._map.layerPointToLatLng(layerPoint);\n\t\t}\n\t\tthis._tooltip.setLatLng(latlng);\n\t}\n});\n", "import {Icon} from './Icon';\nimport {toPoint as point} from '../../geometry/Point';\nimport {empty} from '../../dom/DomUtil';\n\n/*\n * @class DivIcon\n * @aka L.DivIcon\n * @inherits Icon\n *\n * Represents a lightweight icon for markers that uses a simple `<div>`\n * element instead of an image. Inherits from `Icon` but ignores the `iconUrl` and shadow options.\n *\n * @example\n * ```js\n * var myIcon = L.divIcon({className: 'my-div-icon'});\n * // you can set .my-div-icon styles in CSS\n *\n * L.marker([50.505, 30.57], {icon: myIcon}).addTo(map);\n * ```\n *\n * By default, it has a 'leaflet-div-icon' CSS class and is styled as a little white square with a shadow.\n */\n\nexport var DivIcon = Icon.extend({\n\toptions: {\n\t\t// @section\n\t\t// @aka DivIcon options\n\t\ticonSize: [12, 12], // also can be set through CSS\n\n\t\t// iconAnchor: (Point),\n\t\t// popupAnchor: (Point),\n\n\t\t// @option html: String|HTMLElement = ''\n\t\t// Custom HTML code to put inside the div element, empty by default. Alternatively,\n\t\t// an instance of `HTMLElement`.\n\t\thtml: false,\n\n\t\t// @option bgPos: Point = [0, 0]\n\t\t// Optional relative position of the background, in pixels\n\t\tbgPos: null,\n\n\t\tclassName: 'leaflet-div-icon'\n\t},\n\n\tcreateIcon: function (oldIcon) {\n\t\tvar div = (oldIcon && oldIcon.tagName === 'DIV') ? oldIcon : document.createElement('div'),\n\t\t    options = this.options;\n\n\t\tif (options.html instanceof Element) {\n\t\t\tempty(div);\n\t\t\tdiv.appendChild(options.html);\n\t\t} else {\n\t\t\tdiv.innerHTML = options.html !== false ? options.html : '';\n\t\t}\n\n\t\tif (options.bgPos) {\n\t\t\tvar bgPos = point(options.bgPos);\n\t\t\tdiv.style.backgroundPosition = (-bgPos.x) + 'px ' + (-bgPos.y) + 'px';\n\t\t}\n\t\tthis._setIconStyles(div, 'icon');\n\n\t\treturn div;\n\t},\n\n\tcreateShadow: function () {\n\t\treturn null;\n\t}\n});\n\n// @factory L.divIcon(options: DivIcon options)\n// Creates a `DivIcon` instance with the given options.\nexport function divIcon(options) {\n\treturn new DivIcon(options);\n}\n", "import {Icon} from './Icon';\nexport {icon} from './Icon';\nimport {IconDefault} from './Icon.Default';\nIcon.Default = IconDefault;\nexport {Icon};\n\nexport {DivIcon, divIcon} from './DivIcon';\nexport {Marker, marker} from './Marker';\n", "import {Layer} from '../Layer';\nimport Browser from '../../core/Browser';\nimport * as Util from '../../core/Util';\nimport * as DomUtil from '../../dom/DomUtil';\nimport {Point} from '../../geometry/Point';\nimport {Bounds} from '../../geometry/Bounds';\nimport {LatLngBounds, toLatLngBounds as latLngBounds} from '../../geo/LatLngBounds';\n\n/*\n * @class GridLayer\n * @inherits Layer\n * @aka L.GridLayer\n *\n * Generic class for handling a tiled grid of HTML elements. This is the base class for all tile layers and replaces `TileLayer.Canvas`.\n * GridLayer can be extended to create a tiled grid of HTML elements like `<canvas>`, `<img>` or `<div>`. GridLayer will handle creating and animating these DOM elements for you.\n *\n *\n * @section Synchronous usage\n * @example\n *\n * To create a custom layer, extend GridLayer and implement the `createTile()` method, which will be passed a `Point` object with the `x`, `y`, and `z` (zoom level) coordinates to draw your tile.\n *\n * ```js\n * var CanvasLayer = L.GridLayer.extend({\n *     createTile: function(coords){\n *         // create a <canvas> element for drawing\n *         var tile = L.DomUtil.create('canvas', 'leaflet-tile');\n *\n *         // setup tile width and height according to the options\n *         var size = this.getTileSize();\n *         tile.width = size.x;\n *         tile.height = size.y;\n *\n *         // get a canvas context and draw something on it using coords.x, coords.y and coords.z\n *         var ctx = tile.getContext('2d');\n *\n *         // return the tile so it can be rendered on screen\n *         return tile;\n *     }\n * });\n * ```\n *\n * @section Asynchronous usage\n * @example\n *\n * Tile creation can also be asynchronous, this is useful when using a third-party drawing library. Once the tile is finished drawing it can be passed to the `done()` callback.\n *\n * ```js\n * var CanvasLayer = L.GridLayer.extend({\n *     createTile: function(coords, done){\n *         var error;\n *\n *         // create a <canvas> element for drawing\n *         var tile = L.DomUtil.create('canvas', 'leaflet-tile');\n *\n *         // setup tile width and height according to the options\n *         var size = this.getTileSize();\n *         tile.width = size.x;\n *         tile.height = size.y;\n *\n *         // draw something asynchronously and pass the tile to the done() callback\n *         setTimeout(function() {\n *             done(error, tile);\n *         }, 1000);\n *\n *         return tile;\n *     }\n * });\n * ```\n *\n * @section\n */\n\n\nexport var GridLayer = Layer.extend({\n\n\t// @section\n\t// @aka GridLayer options\n\toptions: {\n\t\t// @option tileSize: Number|Point = 256\n\t\t// Width and height of tiles in the grid. Use a number if width and height are equal, or `L.point(width, height)` otherwise.\n\t\ttileSize: 256,\n\n\t\t// @option opacity: Number = 1.0\n\t\t// Opacity of the tiles. Can be used in the `createTile()` function.\n\t\topacity: 1,\n\n\t\t// @option updateWhenIdle: Boolean = (depends)\n\t\t// Load new tiles only when panning ends.\n\t\t// `true` by default on mobile browsers, in order to avoid too many requests and keep smooth navigation.\n\t\t// `false` otherwise in order to display new tiles _during_ panning, since it is easy to pan outside the\n\t\t// [`keepBuffer`](#gridlayer-keepbuffer) option in desktop browsers.\n\t\tupdateWhenIdle: Browser.mobile,\n\n\t\t// @option updateWhenZooming: Boolean = true\n\t\t// By default, a smooth zoom animation (during a [touch zoom](#map-touchzoom) or a [`flyTo()`](#map-flyto)) will update grid layers every integer zoom level. Setting this option to `false` will update the grid layer only when the smooth animation ends.\n\t\tupdateWhenZooming: true,\n\n\t\t// @option updateInterval: Number = 200\n\t\t// Tiles will not update more than once every `updateInterval` milliseconds when panning.\n\t\tupdateInterval: 200,\n\n\t\t// @option zIndex: Number = 1\n\t\t// The explicit zIndex of the tile layer.\n\t\tzIndex: 1,\n\n\t\t// @option bounds: LatLngBounds = undefined\n\t\t// If set, tiles will only be loaded inside the set `LatLngBounds`.\n\t\tbounds: null,\n\n\t\t// @option minZoom: Number = 0\n\t\t// The minimum zoom level down to which this layer will be displayed (inclusive).\n\t\tminZoom: 0,\n\n\t\t// @option maxZoom: Number = undefined\n\t\t// The maximum zoom level up to which this layer will be displayed (inclusive).\n\t\tmaxZoom: undefined,\n\n\t\t// @option maxNativeZoom: Number = undefined\n\t\t// Maximum zoom number the tile source has available. If it is specified,\n\t\t// the tiles on all zoom levels higher than `maxNativeZoom` will be loaded\n\t\t// from `maxNativeZoom` level and auto-scaled.\n\t\tmaxNativeZoom: undefined,\n\n\t\t// @option minNativeZoom: Number = undefined\n\t\t// Minimum zoom number the tile source has available. If it is specified,\n\t\t// the tiles on all zoom levels lower than `minNativeZoom` will be loaded\n\t\t// from `minNativeZoom` level and auto-scaled.\n\t\tminNativeZoom: undefined,\n\n\t\t// @option noWrap: Boolean = false\n\t\t// Whether the layer is wrapped around the antimeridian. If `true`, the\n\t\t// GridLayer will only be displayed once at low zoom levels. Has no\n\t\t// effect when the [map CRS](#map-crs) doesn't wrap around. Can be used\n\t\t// in combination with [`bounds`](#gridlayer-bounds) to prevent requesting\n\t\t// tiles outside the CRS limits.\n\t\tnoWrap: false,\n\n\t\t// @option pane: String = 'tilePane'\n\t\t// `Map pane` where the grid layer will be added.\n\t\tpane: 'tilePane',\n\n\t\t// @option className: String = ''\n\t\t// A custom class name to assign to the tile layer. Empty by default.\n\t\tclassName: '',\n\n\t\t// @option keepBuffer: Number = 2\n\t\t// When panning the map, keep this many rows and columns of tiles before unloading them.\n\t\tkeepBuffer: 2\n\t},\n\n\tinitialize: function (options) {\n\t\tUtil.setOptions(this, options);\n\t},\n\n\tonAdd: function () {\n\t\tthis._initContainer();\n\n\t\tthis._levels = {};\n\t\tthis._tiles = {};\n\n\t\tthis._resetView(); // implicit _update() call\n\t},\n\n\tbeforeAdd: function (map) {\n\t\tmap._addZoomLimit(this);\n\t},\n\n\tonRemove: function (map) {\n\t\tthis._removeAllTiles();\n\t\tDomUtil.remove(this._container);\n\t\tmap._removeZoomLimit(this);\n\t\tthis._container = null;\n\t\tthis._tileZoom = undefined;\n\t},\n\n\t// @method bringToFront: this\n\t// Brings the tile layer to the top of all tile layers.\n\tbringToFront: function () {\n\t\tif (this._map) {\n\t\t\tDomUtil.toFront(this._container);\n\t\t\tthis._setAutoZIndex(Math.max);\n\t\t}\n\t\treturn this;\n\t},\n\n\t// @method bringToBack: this\n\t// Brings the tile layer to the bottom of all tile layers.\n\tbringToBack: function () {\n\t\tif (this._map) {\n\t\t\tDomUtil.toBack(this._container);\n\t\t\tthis._setAutoZIndex(Math.min);\n\t\t}\n\t\treturn this;\n\t},\n\n\t// @method getContainer: HTMLElement\n\t// Returns the HTML element that contains the tiles for this layer.\n\tgetContainer: function () {\n\t\treturn this._container;\n\t},\n\n\t// @method setOpacity(opacity: Number): this\n\t// Changes the [opacity](#gridlayer-opacity) of the grid layer.\n\tsetOpacity: function (opacity) {\n\t\tthis.options.opacity = opacity;\n\t\tthis._updateOpacity();\n\t\treturn this;\n\t},\n\n\t// @method setZIndex(zIndex: Number): this\n\t// Changes the [zIndex](#gridlayer-zindex) of the grid layer.\n\tsetZIndex: function (zIndex) {\n\t\tthis.options.zIndex = zIndex;\n\t\tthis._updateZIndex();\n\n\t\treturn this;\n\t},\n\n\t// @method isLoading: Boolean\n\t// Returns `true` if any tile in the grid layer has not finished loading.\n\tisLoading: function () {\n\t\treturn this._loading;\n\t},\n\n\t// @method redraw: this\n\t// Causes the layer to clear all the tiles and request them again.\n\tredraw: function () {\n\t\tif (this._map) {\n\t\t\tthis._removeAllTiles();\n\t\t\tvar tileZoom = this._clampZoom(this._map.getZoom());\n\t\t\tif (tileZoom !== this._tileZoom) {\n\t\t\t\tthis._tileZoom = tileZoom;\n\t\t\t\tthis._updateLevels();\n\t\t\t}\n\t\t\tthis._update();\n\t\t}\n\t\treturn this;\n\t},\n\n\tgetEvents: function () {\n\t\tvar events = {\n\t\t\tviewprereset: this._invalidateAll,\n\t\t\tviewreset: this._resetView,\n\t\t\tzoom: this._resetView,\n\t\t\tmoveend: this._onMoveEnd\n\t\t};\n\n\t\tif (!this.options.updateWhenIdle) {\n\t\t\t// update tiles on move, but not more often than once per given interval\n\t\t\tif (!this._onMove) {\n\t\t\t\tthis._onMove = Util.throttle(this._onMoveEnd, this.options.updateInterval, this);\n\t\t\t}\n\n\t\t\tevents.move = this._onMove;\n\t\t}\n\n\t\tif (this._zoomAnimated) {\n\t\t\tevents.zoomanim = this._animateZoom;\n\t\t}\n\n\t\treturn events;\n\t},\n\n\t// @section Extension methods\n\t// Layers extending `GridLayer` shall reimplement the following method.\n\t// @method createTile(coords: Object, done?: Function): HTMLElement\n\t// Called only internally, must be overridden by classes extending `GridLayer`.\n\t// Returns the `HTMLElement` corresponding to the given `coords`. If the `done` callback\n\t// is specified, it must be called when the tile has finished loading and drawing.\n\tcreateTile: function () {\n\t\treturn document.createElement('div');\n\t},\n\n\t// @section\n\t// @method getTileSize: Point\n\t// Normalizes the [tileSize option](#gridlayer-tilesize) into a point. Used by the `createTile()` method.\n\tgetTileSize: function () {\n\t\tvar s = this.options.tileSize;\n\t\treturn s instanceof Point ? s : new Point(s, s);\n\t},\n\n\t_updateZIndex: function () {\n\t\tif (this._container && this.options.zIndex !== undefined && this.options.zIndex !== null) {\n\t\t\tthis._container.style.zIndex = this.options.zIndex;\n\t\t}\n\t},\n\n\t_setAutoZIndex: function (compare) {\n\t\t// go through all other layers of the same pane, set zIndex to max + 1 (front) or min - 1 (back)\n\n\t\tvar layers = this.getPane().children,\n\t\t    edgeZIndex = -compare(-Infinity, Infinity); // -Infinity for max, Infinity for min\n\n\t\tfor (var i = 0, len = layers.length, zIndex; i < len; i++) {\n\n\t\t\tzIndex = layers[i].style.zIndex;\n\n\t\t\tif (layers[i] !== this._container && zIndex) {\n\t\t\t\tedgeZIndex = compare(edgeZIndex, +zIndex);\n\t\t\t}\n\t\t}\n\n\t\tif (isFinite(edgeZIndex)) {\n\t\t\tthis.options.zIndex = edgeZIndex + compare(-1, 1);\n\t\t\tthis._updateZIndex();\n\t\t}\n\t},\n\n\t_updateOpacity: function () {\n\t\tif (!this._map) { return; }\n\n\t\t// IE doesn't inherit filter opacity properly, so we're forced to set it on tiles\n\t\tif (Browser.ielt9) { return; }\n\n\t\tDomUtil.setOpacity(this._container, this.options.opacity);\n\n\t\tvar now = +new Date(),\n\t\t    nextFrame = false,\n\t\t    willPrune = false;\n\n\t\tfor (var key in this._tiles) {\n\t\t\tvar tile = this._tiles[key];\n\t\t\tif (!tile.current || !tile.loaded) { continue; }\n\n\t\t\tvar fade = Math.min(1, (now - tile.loaded) / 200);\n\n\t\t\tDomUtil.setOpacity(tile.el, fade);\n\t\t\tif (fade < 1) {\n\t\t\t\tnextFrame = true;\n\t\t\t} else {\n\t\t\t\tif (tile.active) {\n\t\t\t\t\twillPrune = true;\n\t\t\t\t} else {\n\t\t\t\t\tthis._onOpaqueTile(tile);\n\t\t\t\t}\n\t\t\t\ttile.active = true;\n\t\t\t}\n\t\t}\n\n\t\tif (willPrune && !this._noPrune) { this._pruneTiles(); }\n\n\t\tif (nextFrame) {\n\t\t\tUtil.cancelAnimFrame(this._fadeFrame);\n\t\t\tthis._fadeFrame = Util.requestAnimFrame(this._updateOpacity, this);\n\t\t}\n\t},\n\n\t_onOpaqueTile: Util.falseFn,\n\n\t_initContainer: function () {\n\t\tif (this._container) { return; }\n\n\t\tthis._container = DomUtil.create('div', 'leaflet-layer ' + (this.options.className || ''));\n\t\tthis._updateZIndex();\n\n\t\tif (this.options.opacity < 1) {\n\t\t\tthis._updateOpacity();\n\t\t}\n\n\t\tthis.getPane().appendChild(this._container);\n\t},\n\n\t_updateLevels: function () {\n\n\t\tvar zoom = this._tileZoom,\n\t\t    maxZoom = this.options.maxZoom;\n\n\t\tif (zoom === undefined) { return undefined; }\n\n\t\tfor (var z in this._levels) {\n\t\t\tz = Number(z);\n\t\t\tif (this._levels[z].el.children.length || z === zoom) {\n\t\t\t\tthis._levels[z].el.style.zIndex = maxZoom - Math.abs(zoom - z);\n\t\t\t\tthis._onUpdateLevel(z);\n\t\t\t} else {\n\t\t\t\tDomUtil.remove(this._levels[z].el);\n\t\t\t\tthis._removeTilesAtZoom(z);\n\t\t\t\tthis._onRemoveLevel(z);\n\t\t\t\tdelete this._levels[z];\n\t\t\t}\n\t\t}\n\n\t\tvar level = this._levels[zoom],\n\t\t    map = this._map;\n\n\t\tif (!level) {\n\t\t\tlevel = this._levels[zoom] = {};\n\n\t\t\tlevel.el = DomUtil.create('div', 'leaflet-tile-container leaflet-zoom-animated', this._container);\n\t\t\tlevel.el.style.zIndex = maxZoom;\n\n\t\t\tlevel.origin = map.project(map.unproject(map.getPixelOrigin()), zoom).round();\n\t\t\tlevel.zoom = zoom;\n\n\t\t\tthis._setZoomTransform(level, map.getCenter(), map.getZoom());\n\n\t\t\t// force the browser to consider the newly added element for transition\n\t\t\tUtil.falseFn(level.el.offsetWidth);\n\n\t\t\tthis._onCreateLevel(level);\n\t\t}\n\n\t\tthis._level = level;\n\n\t\treturn level;\n\t},\n\n\t_onUpdateLevel: Util.falseFn,\n\n\t_onRemoveLevel: Util.falseFn,\n\n\t_onCreateLevel: Util.falseFn,\n\n\t_pruneTiles: function () {\n\t\tif (!this._map) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar key, tile;\n\n\t\tvar zoom = this._map.getZoom();\n\t\tif (zoom > this.options.maxZoom ||\n\t\t\tzoom < this.options.minZoom) {\n\t\t\tthis._removeAllTiles();\n\t\t\treturn;\n\t\t}\n\n\t\tfor (key in this._tiles) {\n\t\t\ttile = this._tiles[key];\n\t\t\ttile.retain = tile.current;\n\t\t}\n\n\t\tfor (key in this._tiles) {\n\t\t\ttile = this._tiles[key];\n\t\t\tif (tile.current && !tile.active) {\n\t\t\t\tvar coords = tile.coords;\n\t\t\t\tif (!this._retainParent(coords.x, coords.y, coords.z, coords.z - 5)) {\n\t\t\t\t\tthis._retainChildren(coords.x, coords.y, coords.z, coords.z + 2);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfor (key in this._tiles) {\n\t\t\tif (!this._tiles[key].retain) {\n\t\t\t\tthis._removeTile(key);\n\t\t\t}\n\t\t}\n\t},\n\n\t_removeTilesAtZoom: function (zoom) {\n\t\tfor (var key in this._tiles) {\n\t\t\tif (this._tiles[key].coords.z !== zoom) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tthis._removeTile(key);\n\t\t}\n\t},\n\n\t_removeAllTiles: function () {\n\t\tfor (var key in this._tiles) {\n\t\t\tthis._removeTile(key);\n\t\t}\n\t},\n\n\t_invalidateAll: function () {\n\t\tfor (var z in this._levels) {\n\t\t\tDomUtil.remove(this._levels[z].el);\n\t\t\tthis._onRemoveLevel(Number(z));\n\t\t\tdelete this._levels[z];\n\t\t}\n\t\tthis._removeAllTiles();\n\n\t\tthis._tileZoom = undefined;\n\t},\n\n\t_retainParent: function (x, y, z, minZoom) {\n\t\tvar x2 = Math.floor(x / 2),\n\t\t    y2 = Math.floor(y / 2),\n\t\t    z2 = z - 1,\n\t\t    coords2 = new Point(+x2, +y2);\n\t\tcoords2.z = +z2;\n\n\t\tvar key = this._tileCoordsToKey(coords2),\n\t\t    tile = this._tiles[key];\n\n\t\tif (tile && tile.active) {\n\t\t\ttile.retain = true;\n\t\t\treturn true;\n\n\t\t} else if (tile && tile.loaded) {\n\t\t\ttile.retain = true;\n\t\t}\n\n\t\tif (z2 > minZoom) {\n\t\t\treturn this._retainParent(x2, y2, z2, minZoom);\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t_retainChildren: function (x, y, z, maxZoom) {\n\n\t\tfor (var i = 2 * x; i < 2 * x + 2; i++) {\n\t\t\tfor (var j = 2 * y; j < 2 * y + 2; j++) {\n\n\t\t\t\tvar coords = new Point(i, j);\n\t\t\t\tcoords.z = z + 1;\n\n\t\t\t\tvar key = this._tileCoordsToKey(coords),\n\t\t\t\t    tile = this._tiles[key];\n\n\t\t\t\tif (tile && tile.active) {\n\t\t\t\t\ttile.retain = true;\n\t\t\t\t\tcontinue;\n\n\t\t\t\t} else if (tile && tile.loaded) {\n\t\t\t\t\ttile.retain = true;\n\t\t\t\t}\n\n\t\t\t\tif (z + 1 < maxZoom) {\n\t\t\t\t\tthis._retainChildren(i, j, z + 1, maxZoom);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t_resetView: function (e) {\n\t\tvar animating = e && (e.pinch || e.flyTo);\n\t\tthis._setView(this._map.getCenter(), this._map.getZoom(), animating, animating);\n\t},\n\n\t_animateZoom: function (e) {\n\t\tthis._setView(e.center, e.zoom, true, e.noUpdate);\n\t},\n\n\t_clampZoom: function (zoom) {\n\t\tvar options = this.options;\n\n\t\tif (undefined !== options.minNativeZoom && zoom < options.minNativeZoom) {\n\t\t\treturn options.minNativeZoom;\n\t\t}\n\n\t\tif (undefined !== options.maxNativeZoom && options.maxNativeZoom < zoom) {\n\t\t\treturn options.maxNativeZoom;\n\t\t}\n\n\t\treturn zoom;\n\t},\n\n\t_setView: function (center, zoom, noPrune, noUpdate) {\n\t\tvar tileZoom = Math.round(zoom);\n\t\tif ((this.options.maxZoom !== undefined && tileZoom > this.options.maxZoom) ||\n\t\t    (this.options.minZoom !== undefined && tileZoom < this.options.minZoom)) {\n\t\t\ttileZoom = undefined;\n\t\t} else {\n\t\t\ttileZoom = this._clampZoom(tileZoom);\n\t\t}\n\n\t\tvar tileZoomChanged = this.options.updateWhenZooming && (tileZoom !== this._tileZoom);\n\n\t\tif (!noUpdate || tileZoomChanged) {\n\n\t\t\tthis._tileZoom = tileZoom;\n\n\t\t\tif (this._abortLoading) {\n\t\t\t\tthis._abortLoading();\n\t\t\t}\n\n\t\t\tthis._updateLevels();\n\t\t\tthis._resetGrid();\n\n\t\t\tif (tileZoom !== undefined) {\n\t\t\t\tthis._update(center);\n\t\t\t}\n\n\t\t\tif (!noPrune) {\n\t\t\t\tthis._pruneTiles();\n\t\t\t}\n\n\t\t\t// Flag to prevent _updateOpacity from pruning tiles during\n\t\t\t// a zoom anim or a pinch gesture\n\t\t\tthis._noPrune = !!noPrune;\n\t\t}\n\n\t\tthis._setZoomTransforms(center, zoom);\n\t},\n\n\t_setZoomTransforms: function (center, zoom) {\n\t\tfor (var i in this._levels) {\n\t\t\tthis._setZoomTransform(this._levels[i], center, zoom);\n\t\t}\n\t},\n\n\t_setZoomTransform: function (level, center, zoom) {\n\t\tvar scale = this._map.getZoomScale(zoom, level.zoom),\n\t\t    translate = level.origin.multiplyBy(scale)\n\t\t        .subtract(this._map._getNewPixelOrigin(center, zoom)).round();\n\n\t\tif (Browser.any3d) {\n\t\t\tDomUtil.setTransform(level.el, translate, scale);\n\t\t} else {\n\t\t\tDomUtil.setPosition(level.el, translate);\n\t\t}\n\t},\n\n\t_resetGrid: function () {\n\t\tvar map = this._map,\n\t\t    crs = map.options.crs,\n\t\t    tileSize = this._tileSize = this.getTileSize(),\n\t\t    tileZoom = this._tileZoom;\n\n\t\tvar bounds = this._map.getPixelWorldBounds(this._tileZoom);\n\t\tif (bounds) {\n\t\t\tthis._globalTileRange = this._pxBoundsToTileRange(bounds);\n\t\t}\n\n\t\tthis._wrapX = crs.wrapLng && !this.options.noWrap && [\n\t\t\tMath.floor(map.project([0, crs.wrapLng[0]], tileZoom).x / tileSize.x),\n\t\t\tMath.ceil(map.project([0, crs.wrapLng[1]], tileZoom).x / tileSize.y)\n\t\t];\n\t\tthis._wrapY = crs.wrapLat && !this.options.noWrap && [\n\t\t\tMath.floor(map.project([crs.wrapLat[0], 0], tileZoom).y / tileSize.x),\n\t\t\tMath.ceil(map.project([crs.wrapLat[1], 0], tileZoom).y / tileSize.y)\n\t\t];\n\t},\n\n\t_onMoveEnd: function () {\n\t\tif (!this._map || this._map._animatingZoom) { return; }\n\n\t\tthis._update();\n\t},\n\n\t_getTiledPixelBounds: function (center) {\n\t\tvar map = this._map,\n\t\t    mapZoom = map._animatingZoom ? Math.max(map._animateToZoom, map.getZoom()) : map.getZoom(),\n\t\t    scale = map.getZoomScale(mapZoom, this._tileZoom),\n\t\t    pixelCenter = map.project(center, this._tileZoom).floor(),\n\t\t    halfSize = map.getSize().divideBy(scale * 2);\n\n\t\treturn new Bounds(pixelCenter.subtract(halfSize), pixelCenter.add(halfSize));\n\t},\n\n\t// Private method to load tiles in the grid's active zoom level according to map bounds\n\t_update: function (center) {\n\t\tvar map = this._map;\n\t\tif (!map) { return; }\n\t\tvar zoom = this._clampZoom(map.getZoom());\n\n\t\tif (center === undefined) { center = map.getCenter(); }\n\t\tif (this._tileZoom === undefined) { return; }\t// if out of minzoom/maxzoom\n\n\t\tvar pixelBounds = this._getTiledPixelBounds(center),\n\t\t    tileRange = this._pxBoundsToTileRange(pixelBounds),\n\t\t    tileCenter = tileRange.getCenter(),\n\t\t    queue = [],\n\t\t    margin = this.options.keepBuffer,\n\t\t    noPruneRange = new Bounds(tileRange.getBottomLeft().subtract([margin, -margin]),\n\t\t                              tileRange.getTopRight().add([margin, -margin]));\n\n\t\t// Sanity check: panic if the tile range contains Infinity somewhere.\n\t\tif (!(isFinite(tileRange.min.x) &&\n\t\t      isFinite(tileRange.min.y) &&\n\t\t      isFinite(tileRange.max.x) &&\n\t\t      isFinite(tileRange.max.y))) { throw new Error('Attempted to load an infinite number of tiles'); }\n\n\t\tfor (var key in this._tiles) {\n\t\t\tvar c = this._tiles[key].coords;\n\t\t\tif (c.z !== this._tileZoom || !noPruneRange.contains(new Point(c.x, c.y))) {\n\t\t\t\tthis._tiles[key].current = false;\n\t\t\t}\n\t\t}\n\n\t\t// _update just loads more tiles. If the tile zoom level differs too much\n\t\t// from the map's, let _setView reset levels and prune old tiles.\n\t\tif (Math.abs(zoom - this._tileZoom) > 1) { this._setView(center, zoom); return; }\n\n\t\t// create a queue of coordinates to load tiles from\n\t\tfor (var j = tileRange.min.y; j <= tileRange.max.y; j++) {\n\t\t\tfor (var i = tileRange.min.x; i <= tileRange.max.x; i++) {\n\t\t\t\tvar coords = new Point(i, j);\n\t\t\t\tcoords.z = this._tileZoom;\n\n\t\t\t\tif (!this._isValidTile(coords)) { continue; }\n\n\t\t\t\tvar tile = this._tiles[this._tileCoordsToKey(coords)];\n\t\t\t\tif (tile) {\n\t\t\t\t\ttile.current = true;\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push(coords);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// sort tile queue to load tiles in order of their distance to center\n\t\tqueue.sort(function (a, b) {\n\t\t\treturn a.distanceTo(tileCenter) - b.distanceTo(tileCenter);\n\t\t});\n\n\t\tif (queue.length !== 0) {\n\t\t\t// if it's the first batch of tiles to load\n\t\t\tif (!this._loading) {\n\t\t\t\tthis._loading = true;\n\t\t\t\t// @event loading: Event\n\t\t\t\t// Fired when the grid layer starts loading tiles.\n\t\t\t\tthis.fire('loading');\n\t\t\t}\n\n\t\t\t// create DOM fragment to append tiles in one batch\n\t\t\tvar fragment = document.createDocumentFragment();\n\n\t\t\tfor (i = 0; i < queue.length; i++) {\n\t\t\t\tthis._addTile(queue[i], fragment);\n\t\t\t}\n\n\t\t\tthis._level.el.appendChild(fragment);\n\t\t}\n\t},\n\n\t_isValidTile: function (coords) {\n\t\tvar crs = this._map.options.crs;\n\n\t\tif (!crs.infinite) {\n\t\t\t// don't load tile if it's out of bounds and not wrapped\n\t\t\tvar bounds = this._globalTileRange;\n\t\t\tif ((!crs.wrapLng && (coords.x < bounds.min.x || coords.x > bounds.max.x)) ||\n\t\t\t    (!crs.wrapLat && (coords.y < bounds.min.y || coords.y > bounds.max.y))) { return false; }\n\t\t}\n\n\t\tif (!this.options.bounds) { return true; }\n\n\t\t// don't load tile if it doesn't intersect the bounds in options\n\t\tvar tileBounds = this._tileCoordsToBounds(coords);\n\t\treturn latLngBounds(this.options.bounds).overlaps(tileBounds);\n\t},\n\n\t_keyToBounds: function (key) {\n\t\treturn this._tileCoordsToBounds(this._keyToTileCoords(key));\n\t},\n\n\t_tileCoordsToNwSe: function (coords) {\n\t\tvar map = this._map,\n\t\t    tileSize = this.getTileSize(),\n\t\t    nwPoint = coords.scaleBy(tileSize),\n\t\t    sePoint = nwPoint.add(tileSize),\n\t\t    nw = map.unproject(nwPoint, coords.z),\n\t\t    se = map.unproject(sePoint, coords.z);\n\t\treturn [nw, se];\n\t},\n\n\t// converts tile coordinates to its geographical bounds\n\t_tileCoordsToBounds: function (coords) {\n\t\tvar bp = this._tileCoordsToNwSe(coords),\n\t\t    bounds = new LatLngBounds(bp[0], bp[1]);\n\n\t\tif (!this.options.noWrap) {\n\t\t\tbounds = this._map.wrapLatLngBounds(bounds);\n\t\t}\n\t\treturn bounds;\n\t},\n\t// converts tile coordinates to key for the tile cache\n\t_tileCoordsToKey: function (coords) {\n\t\treturn coords.x + ':' + coords.y + ':' + coords.z;\n\t},\n\n\t// converts tile cache key to coordinates\n\t_keyToTileCoords: function (key) {\n\t\tvar k = key.split(':'),\n\t\t    coords = new Point(+k[0], +k[1]);\n\t\tcoords.z = +k[2];\n\t\treturn coords;\n\t},\n\n\t_removeTile: function (key) {\n\t\tvar tile = this._tiles[key];\n\t\tif (!tile) { return; }\n\n\t\tDomUtil.remove(tile.el);\n\n\t\tdelete this._tiles[key];\n\n\t\t// @event tileunload: TileEvent\n\t\t// Fired when a tile is removed (e.g. when a tile goes off the screen).\n\t\tthis.fire('tileunload', {\n\t\t\ttile: tile.el,\n\t\t\tcoords: this._keyToTileCoords(key)\n\t\t});\n\t},\n\n\t_initTile: function (tile) {\n\t\tDomUtil.addClass(tile, 'leaflet-tile');\n\n\t\tvar tileSize = this.getTileSize();\n\t\ttile.style.width = tileSize.x + 'px';\n\t\ttile.style.height = tileSize.y + 'px';\n\n\t\ttile.onselectstart = Util.falseFn;\n\t\ttile.onmousemove = Util.falseFn;\n\n\t\t// update opacity on tiles in IE7-8 because of filter inheritance problems\n\t\tif (Browser.ielt9 && this.options.opacity < 1) {\n\t\t\tDomUtil.setOpacity(tile, this.options.opacity);\n\t\t}\n\t},\n\n\t_addTile: function (coords, container) {\n\t\tvar tilePos = this._getTilePos(coords),\n\t\t    key = this._tileCoordsToKey(coords);\n\n\t\tvar tile = this.createTile(this._wrapCoords(coords), Util.bind(this._tileReady, this, coords));\n\n\t\tthis._initTile(tile);\n\n\t\t// if createTile is defined with a second argument (\"done\" callback),\n\t\t// we know that tile is async and will be ready later; otherwise\n\t\tif (this.createTile.length < 2) {\n\t\t\t// mark tile as ready, but delay one frame for opacity animation to happen\n\t\t\tUtil.requestAnimFrame(Util.bind(this._tileReady, this, coords, null, tile));\n\t\t}\n\n\t\tDomUtil.setPosition(tile, tilePos);\n\n\t\t// save tile in cache\n\t\tthis._tiles[key] = {\n\t\t\tel: tile,\n\t\t\tcoords: coords,\n\t\t\tcurrent: true\n\t\t};\n\n\t\tcontainer.appendChild(tile);\n\t\t// @event tileloadstart: TileEvent\n\t\t// Fired when a tile is requested and starts loading.\n\t\tthis.fire('tileloadstart', {\n\t\t\ttile: tile,\n\t\t\tcoords: coords\n\t\t});\n\t},\n\n\t_tileReady: function (coords, err, tile) {\n\t\tif (err) {\n\t\t\t// @event tileerror: TileErrorEvent\n\t\t\t// Fired when there is an error loading a tile.\n\t\t\tthis.fire('tileerror', {\n\t\t\t\terror: err,\n\t\t\t\ttile: tile,\n\t\t\t\tcoords: coords\n\t\t\t});\n\t\t}\n\n\t\tvar key = this._tileCoordsToKey(coords);\n\n\t\ttile = this._tiles[key];\n\t\tif (!tile) { return; }\n\n\t\ttile.loaded = +new Date();\n\t\tif (this._map._fadeAnimated) {\n\t\t\tDomUtil.setOpacity(tile.el, 0);\n\t\t\tUtil.cancelAnimFrame(this._fadeFrame);\n\t\t\tthis._fadeFrame = Util.requestAnimFrame(this._updateOpacity, this);\n\t\t} else {\n\t\t\ttile.active = true;\n\t\t\tthis._pruneTiles();\n\t\t}\n\n\t\tif (!err) {\n\t\t\tDomUtil.addClass(tile.el, 'leaflet-tile-loaded');\n\n\t\t\t// @event tileload: TileEvent\n\t\t\t// Fired when a tile loads.\n\t\t\tthis.fire('tileload', {\n\t\t\t\ttile: tile.el,\n\t\t\t\tcoords: coords\n\t\t\t});\n\t\t}\n\n\t\tif (this._noTilesToLoad()) {\n\t\t\tthis._loading = false;\n\t\t\t// @event load: Event\n\t\t\t// Fired when the grid layer loaded all visible tiles.\n\t\t\tthis.fire('load');\n\n\t\t\tif (Browser.ielt9 || !this._map._fadeAnimated) {\n\t\t\t\tUtil.requestAnimFrame(this._pruneTiles, this);\n\t\t\t} else {\n\t\t\t\t// Wait a bit more than 0.2 secs (the duration of the tile fade-in)\n\t\t\t\t// to trigger a pruning.\n\t\t\t\tsetTimeout(Util.bind(this._pruneTiles, this), 250);\n\t\t\t}\n\t\t}\n\t},\n\n\t_getTilePos: function (coords) {\n\t\treturn coords.scaleBy(this.getTileSize()).subtract(this._level.origin);\n\t},\n\n\t_wrapCoords: function (coords) {\n\t\tvar newCoords = new Point(\n\t\t\tthis._wrapX ? Util.wrapNum(coords.x, this._wrapX) : coords.x,\n\t\t\tthis._wrapY ? Util.wrapNum(coords.y, this._wrapY) : coords.y);\n\t\tnewCoords.z = coords.z;\n\t\treturn newCoords;\n\t},\n\n\t_pxBoundsToTileRange: function (bounds) {\n\t\tvar tileSize = this.getTileSize();\n\t\treturn new Bounds(\n\t\t\tbounds.min.unscaleBy(tileSize).floor(),\n\t\t\tbounds.max.unscaleBy(tileSize).ceil().subtract([1, 1]));\n\t},\n\n\t_noTilesToLoad: function () {\n\t\tfor (var key in this._tiles) {\n\t\t\tif (!this._tiles[key].loaded) { return false; }\n\t\t}\n\t\treturn true;\n\t}\n});\n\n// @factory L.gridLayer(options?: GridLayer options)\n// Creates a new instance of GridLayer with the supplied options.\nexport function gridLayer(options) {\n\treturn new GridLayer(options);\n}\n", "import {GridLayer} from './GridLayer';\r\nimport Browser from '../../core/Browser';\r\nimport * as Util from '../../core/Util';\r\nimport * as DomEvent from '../../dom/DomEvent';\r\nimport * as DomUtil from '../../dom/DomUtil';\r\n\r\n\r\n/*\r\n * @class TileLayer\r\n * @inherits GridLayer\r\n * @aka L.TileLayer\r\n * Used to load and display tile layers on the map. Note that most tile servers require attribution, which you can set under `Layer`. Extends `GridLayer`.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * L.tileLayer('https://tile.openstreetmap.org/{z}/{x}/{y}.png?{foo}', {foo: 'bar', attribution: '&copy; <a href=\"https://www.openstreetmap.org/copyright\">OpenStreetMap</a> contributors'}).addTo(map);\n * ```\r\n *\r\n * @section URL template\r\n * @example\r\n *\r\n * A string of the following form:\r\n *\r\n * ```\r\n * 'https://{s}.somedomain.com/blabla/{z}/{x}/{y}{r}.png'\r\n * ```\r\n *\r\n * `{s}` means one of the available subdomains (used sequentially to help with browser parallel requests per domain limitation; subdomain values are specified in options; `a`, `b` or `c` by default, can be omitted), `{z}` — zoom level, `{x}` and `{y}` — tile coordinates. `{r}` can be used to add \"&commat;2x\" to the URL to load retina tiles.\r\n *\r\n * You can use custom keys in the template, which will be [evaluated](#util-template) from TileLayer options, like this:\r\n *\r\n * ```\r\n * L.tileLayer('https://{s}.somedomain.com/{foo}/{z}/{x}/{y}.png', {foo: 'bar'});\r\n * ```\r\n */\r\n\r\n\r\nexport var TileLayer = GridLayer.extend({\r\n\r\n\t// @section\r\n\t// @aka TileLayer options\r\n\toptions: {\r\n\t\t// @option minZoom: Number = 0\r\n\t\t// The minimum zoom level down to which this layer will be displayed (inclusive).\r\n\t\tminZoom: 0,\r\n\r\n\t\t// @option maxZoom: Number = 18\r\n\t\t// The maximum zoom level up to which this layer will be displayed (inclusive).\r\n\t\tmaxZoom: 18,\r\n\r\n\t\t// @option subdomains: String|String[] = 'abc'\r\n\t\t// Subdomains of the tile service. Can be passed in the form of one string (where each letter is a subdomain name) or an array of strings.\r\n\t\tsubdomains: 'abc',\r\n\r\n\t\t// @option errorTileUrl: String = ''\r\n\t\t// URL to the tile image to show in place of the tile that failed to load.\r\n\t\terrorTileUrl: '',\r\n\r\n\t\t// @option zoomOffset: Number = 0\r\n\t\t// The zoom number used in tile URLs will be offset with this value.\r\n\t\tzoomOffset: 0,\r\n\r\n\t\t// @option tms: Boolean = false\r\n\t\t// If `true`, inverses Y axis numbering for tiles (turn this on for [TMS](https://en.wikipedia.org/wiki/Tile_Map_Service) services).\r\n\t\ttms: false,\r\n\r\n\t\t// @option zoomReverse: Boolean = false\r\n\t\t// If set to true, the zoom number used in tile URLs will be reversed (`maxZoom - zoom` instead of `zoom`)\r\n\t\tzoomReverse: false,\r\n\r\n\t\t// @option detectRetina: Boolean = false\r\n\t\t// If `true` and user is on a retina display, it will request four tiles of half the specified size and a bigger zoom level in place of one to utilize the high resolution.\r\n\t\tdetectRetina: false,\r\n\r\n\t\t// @option crossOrigin: Boolean|String = false\r\n\t\t// Whether the crossOrigin attribute will be added to the tiles.\r\n\t\t// If a String is provided, all tiles will have their crossOrigin attribute set to the String provided. This is needed if you want to access tile pixel data.\r\n\t\t// Refer to [CORS Settings](https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_settings_attributes) for valid String values.\r\n\t\tcrossOrigin: false,\r\n\r\n\t\t// @option referrerPolicy: Boolean|String = false\r\n\t\t// Whether the referrerPolicy attribute will be added to the tiles.\r\n\t\t// If a String is provided, all tiles will have their referrerPolicy attribute set to the String provided.\r\n\t\t// This may be needed if your map's rendering context has a strict default but your tile provider expects a valid referrer\r\n\t\t// (e.g. to validate an API token).\r\n\t\t// Refer to [HTMLImageElement.referrerPolicy](https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement/referrerPolicy) for valid String values.\r\n\t\treferrerPolicy: false\r\n\t},\r\n\r\n\tinitialize: function (url, options) {\r\n\r\n\t\tthis._url = url;\r\n\r\n\t\toptions = Util.setOptions(this, options);\r\n\r\n\t\t// detecting retina displays, adjusting tileSize and zoom levels\r\n\t\tif (options.detectRetina && Browser.retina && options.maxZoom > 0) {\r\n\r\n\t\t\toptions.tileSize = Math.floor(options.tileSize / 2);\r\n\r\n\t\t\tif (!options.zoomReverse) {\r\n\t\t\t\toptions.zoomOffset++;\r\n\t\t\t\toptions.maxZoom = Math.max(options.minZoom, options.maxZoom - 1);\r\n\t\t\t} else {\r\n\t\t\t\toptions.zoomOffset--;\r\n\t\t\t\toptions.minZoom = Math.min(options.maxZoom, options.minZoom + 1);\r\n\t\t\t}\r\n\r\n\t\t\toptions.minZoom = Math.max(0, options.minZoom);\r\n\t\t} else if (!options.zoomReverse) {\r\n\t\t\t// make sure maxZoom is gte minZoom\r\n\t\t\toptions.maxZoom = Math.max(options.minZoom, options.maxZoom);\r\n\t\t} else {\r\n\t\t\t// make sure minZoom is lte maxZoom\r\n\t\t\toptions.minZoom = Math.min(options.maxZoom, options.minZoom);\r\n\t\t}\r\n\r\n\t\tif (typeof options.subdomains === 'string') {\r\n\t\t\toptions.subdomains = options.subdomains.split('');\r\n\t\t}\r\n\r\n\t\tthis.on('tileunload', this._onTileRemove);\r\n\t},\r\n\r\n\t// @method setUrl(url: String, noRedraw?: Boolean): this\r\n\t// Updates the layer's URL template and redraws it (unless `noRedraw` is set to `true`).\r\n\t// If the URL does not change, the layer will not be redrawn unless\r\n\t// the noRedraw parameter is set to false.\r\n\tsetUrl: function (url, noRedraw) {\r\n\t\tif (this._url === url && noRedraw === undefined) {\r\n\t\t\tnoRedraw = true;\r\n\t\t}\r\n\r\n\t\tthis._url = url;\r\n\r\n\t\tif (!noRedraw) {\r\n\t\t\tthis.redraw();\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method createTile(coords: Object, done?: Function): HTMLElement\r\n\t// Called only internally, overrides GridLayer's [`createTile()`](#gridlayer-createtile)\r\n\t// to return an `<img>` HTML element with the appropriate image URL given `coords`. The `done`\r\n\t// callback is called when the tile has been loaded.\r\n\tcreateTile: function (coords, done) {\r\n\t\tvar tile = document.createElement('img');\r\n\r\n\t\tDomEvent.on(tile, 'load', Util.bind(this._tileOnLoad, this, done, tile));\r\n\t\tDomEvent.on(tile, 'error', Util.bind(this._tileOnError, this, done, tile));\r\n\r\n\t\tif (this.options.crossOrigin || this.options.crossOrigin === '') {\r\n\t\t\ttile.crossOrigin = this.options.crossOrigin === true ? '' : this.options.crossOrigin;\r\n\t\t}\r\n\r\n\t\t// for this new option we follow the documented behavior\r\n\t\t// more closely by only setting the property when string\r\n\t\tif (typeof this.options.referrerPolicy === 'string') {\r\n\t\t\ttile.referrerPolicy = this.options.referrerPolicy;\r\n\t\t}\r\n\r\n\t\t// The alt attribute is set to the empty string,\r\n\t\t// allowing screen readers to ignore the decorative image tiles.\r\n\t\t// https://www.w3.org/WAI/tutorials/images/decorative/\r\n\t\t// https://www.w3.org/TR/html-aria/#el-img-empty-alt\r\n\t\ttile.alt = '';\r\n\r\n\t\ttile.src = this.getTileUrl(coords);\r\n\r\n\t\treturn tile;\r\n\t},\r\n\r\n\t// @section Extension methods\r\n\t// @uninheritable\r\n\t// Layers extending `TileLayer` might reimplement the following method.\r\n\t// @method getTileUrl(coords: Object): String\r\n\t// Called only internally, returns the URL for a tile given its coordinates.\r\n\t// Classes extending `TileLayer` can override this function to provide custom tile URL naming schemes.\r\n\tgetTileUrl: function (coords) {\r\n\t\tvar data = {\r\n\t\t\tr: Browser.retina ? '@2x' : '',\r\n\t\t\ts: this._getSubdomain(coords),\r\n\t\t\tx: coords.x,\r\n\t\t\ty: coords.y,\r\n\t\t\tz: this._getZoomForUrl()\r\n\t\t};\r\n\t\tif (this._map && !this._map.options.crs.infinite) {\r\n\t\t\tvar invertedY = this._globalTileRange.max.y - coords.y;\r\n\t\t\tif (this.options.tms) {\r\n\t\t\t\tdata['y'] = invertedY;\r\n\t\t\t}\r\n\t\t\tdata['-y'] = invertedY;\r\n\t\t}\r\n\r\n\t\treturn Util.template(this._url, Util.extend(data, this.options));\r\n\t},\r\n\r\n\t_tileOnLoad: function (done, tile) {\r\n\t\t// For https://github.com/Leaflet/Leaflet/issues/3332\r\n\t\tif (Browser.ielt9) {\r\n\t\t\tsetTimeout(Util.bind(done, this, null, tile), 0);\r\n\t\t} else {\r\n\t\t\tdone(null, tile);\r\n\t\t}\r\n\t},\r\n\r\n\t_tileOnError: function (done, tile, e) {\r\n\t\tvar errorUrl = this.options.errorTileUrl;\r\n\t\tif (errorUrl && tile.getAttribute('src') !== errorUrl) {\r\n\t\t\ttile.src = errorUrl;\r\n\t\t}\r\n\t\tdone(e, tile);\r\n\t},\r\n\r\n\t_onTileRemove: function (e) {\r\n\t\te.tile.onload = null;\r\n\t},\r\n\r\n\t_getZoomForUrl: function () {\r\n\t\tvar zoom = this._tileZoom,\r\n\t\tmaxZoom = this.options.maxZoom,\r\n\t\tzoomReverse = this.options.zoomReverse,\r\n\t\tzoomOffset = this.options.zoomOffset;\r\n\r\n\t\tif (zoomReverse) {\r\n\t\t\tzoom = maxZoom - zoom;\r\n\t\t}\r\n\r\n\t\treturn zoom + zoomOffset;\r\n\t},\r\n\r\n\t_getSubdomain: function (tilePoint) {\r\n\t\tvar index = Math.abs(tilePoint.x + tilePoint.y) % this.options.subdomains.length;\r\n\t\treturn this.options.subdomains[index];\r\n\t},\r\n\r\n\t// stops loading all tiles in the background layer\r\n\t_abortLoading: function () {\r\n\t\tvar i, tile;\r\n\t\tfor (i in this._tiles) {\r\n\t\t\tif (this._tiles[i].coords.z !== this._tileZoom) {\r\n\t\t\t\ttile = this._tiles[i].el;\r\n\r\n\t\t\t\ttile.onload = Util.falseFn;\r\n\t\t\t\ttile.onerror = Util.falseFn;\r\n\r\n\t\t\t\tif (!tile.complete) {\r\n\t\t\t\t\ttile.src = Util.emptyImageUrl;\r\n\t\t\t\t\tvar coords = this._tiles[i].coords;\r\n\t\t\t\t\tDomUtil.remove(tile);\r\n\t\t\t\t\tdelete this._tiles[i];\r\n\t\t\t\t\t// @event tileabort: TileEvent\r\n\t\t\t\t\t// Fired when a tile was loading but is now not wanted.\r\n\t\t\t\t\tthis.fire('tileabort', {\r\n\t\t\t\t\t\ttile: tile,\r\n\t\t\t\t\t\tcoords: coords\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t_removeTile: function (key) {\r\n\t\tvar tile = this._tiles[key];\r\n\t\tif (!tile) { return; }\r\n\r\n\t\t// Cancels any pending http requests associated with the tile\r\n\t\ttile.el.setAttribute('src', Util.emptyImageUrl);\r\n\r\n\t\treturn GridLayer.prototype._removeTile.call(this, key);\r\n\t},\r\n\r\n\t_tileReady: function (coords, err, tile) {\r\n\t\tif (!this._map || (tile && tile.getAttribute('src') === Util.emptyImageUrl)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\treturn GridLayer.prototype._tileReady.call(this, coords, err, tile);\r\n\t}\r\n});\r\n\r\n\r\n// @factory L.tilelayer(urlTemplate: String, options?: TileLayer options)\r\n// Instantiates a tile layer object given a `URL template` and optionally an options object.\r\n\r\nexport function tileLayer(url, options) {\r\n\treturn new TileLayer(url, options);\r\n}\r\n", "import {TileLayer} from './TileLayer';\r\nimport {extend, setOptions, getParamString} from '../../core/Util';\r\nimport Browser from '../../core/Browser';\r\nimport {EPSG4326} from '../../geo/crs/CRS.EPSG4326';\r\nimport {toBounds} from '../../geometry/Bounds';\r\n\r\n/*\r\n * @class TileLayer.WMS\r\n * @inherits TileLayer\r\n * @aka L.TileLayer.WMS\r\n * Used to display [WMS](https://en.wikipedia.org/wiki/Web_Map_Service) services as tile layers on the map. Extends `TileLayer`.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * var nexrad = L.tileLayer.wms(\"http://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r.cgi\", {\r\n * \tlayers: 'nexrad-n0r-900913',\r\n * \tformat: 'image/png',\r\n * \ttransparent: true,\r\n * \tattribution: \"Weather data © 2012 IEM Nexrad\"\r\n * });\r\n * ```\r\n */\r\n\r\nexport var TileLayerWMS = TileLayer.extend({\r\n\r\n\t// @section\r\n\t// @aka TileLayer.WMS options\r\n\t// If any custom options not documented here are used, they will be sent to the\r\n\t// WMS server as extra parameters in each request URL. This can be useful for\r\n\t// [non-standard vendor WMS parameters](https://docs.geoserver.org/stable/en/user/services/wms/vendor.html).\r\n\tdefaultWmsParams: {\r\n\t\tservice: 'WMS',\r\n\t\trequest: 'GetMap',\r\n\r\n\t\t// @option layers: String = ''\r\n\t\t// **(required)** Comma-separated list of WMS layers to show.\r\n\t\tlayers: '',\r\n\r\n\t\t// @option styles: String = ''\r\n\t\t// Comma-separated list of WMS styles.\r\n\t\tstyles: '',\r\n\r\n\t\t// @option format: String = 'image/jpeg'\r\n\t\t// WMS image format (use `'image/png'` for layers with transparency).\r\n\t\tformat: 'image/jpeg',\r\n\r\n\t\t// @option transparent: Boolean = false\r\n\t\t// If `true`, the WMS service will return images with transparency.\r\n\t\ttransparent: false,\r\n\r\n\t\t// @option version: String = '1.1.1'\r\n\t\t// Version of the WMS service to use\r\n\t\tversion: '1.1.1'\r\n\t},\r\n\r\n\toptions: {\r\n\t\t// @option crs: CRS = null\r\n\t\t// Coordinate Reference System to use for the WMS requests, defaults to\r\n\t\t// map CRS. Don't change this if you're not sure what it means.\r\n\t\tcrs: null,\r\n\r\n\t\t// @option uppercase: Boolean = false\r\n\t\t// If `true`, WMS request parameter keys will be uppercase.\r\n\t\tuppercase: false\r\n\t},\r\n\r\n\tinitialize: function (url, options) {\r\n\r\n\t\tthis._url = url;\r\n\r\n\t\tvar wmsParams = extend({}, this.defaultWmsParams);\r\n\r\n\t\t// all keys that are not TileLayer options go to WMS params\r\n\t\tfor (var i in options) {\r\n\t\t\tif (!(i in this.options)) {\r\n\t\t\t\twmsParams[i] = options[i];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\toptions = setOptions(this, options);\r\n\r\n\t\tvar realRetina = options.detectRetina && Browser.retina ? 2 : 1;\r\n\t\tvar tileSize = this.getTileSize();\r\n\t\twmsParams.width = tileSize.x * realRetina;\r\n\t\twmsParams.height = tileSize.y * realRetina;\r\n\r\n\t\tthis.wmsParams = wmsParams;\r\n\t},\r\n\r\n\tonAdd: function (map) {\r\n\r\n\t\tthis._crs = this.options.crs || map.options.crs;\r\n\t\tthis._wmsVersion = parseFloat(this.wmsParams.version);\r\n\r\n\t\tvar projectionKey = this._wmsVersion >= 1.3 ? 'crs' : 'srs';\r\n\t\tthis.wmsParams[projectionKey] = this._crs.code;\r\n\r\n\t\tTileLayer.prototype.onAdd.call(this, map);\r\n\t},\r\n\r\n\tgetTileUrl: function (coords) {\r\n\r\n\t\tvar tileBounds = this._tileCoordsToNwSe(coords),\r\n\t\t    crs = this._crs,\r\n\t\t    bounds = toBounds(crs.project(tileBounds[0]), crs.project(tileBounds[1])),\r\n\t\t    min = bounds.min,\r\n\t\t    max = bounds.max,\r\n\t\t    bbox = (this._wmsVersion >= 1.3 && this._crs === EPSG4326 ?\r\n\t\t    [min.y, min.x, max.y, max.x] :\r\n\t\t    [min.x, min.y, max.x, max.y]).join(','),\r\n\t\t    url = TileLayer.prototype.getTileUrl.call(this, coords);\r\n\t\treturn url +\r\n\t\t\tgetParamString(this.wmsParams, url, this.options.uppercase) +\r\n\t\t\t(this.options.uppercase ? '&BBOX=' : '&bbox=') + bbox;\r\n\t},\r\n\r\n\t// @method setParams(params: Object, noRedraw?: Boolean): this\r\n\t// Merges an object with the new parameters and re-requests tiles on the current screen (unless `noRedraw` was set to true).\r\n\tsetParams: function (params, noRedraw) {\r\n\r\n\t\textend(this.wmsParams, params);\r\n\r\n\t\tif (!noRedraw) {\r\n\t\t\tthis.redraw();\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t}\r\n});\r\n\r\n\r\n// @factory L.tileLayer.wms(baseUrl: String, options: TileLayer.WMS options)\r\n// Instantiates a WMS tile layer object given a base URL of the WMS service and a WMS parameters/options object.\r\nexport function tileLayerWMS(url, options) {\r\n\treturn new TileLayerWMS(url, options);\r\n}\r\n", "export {GridLayer, gridLayer} from './GridLayer';\nimport {TileLayer, tileLayer} from './TileLayer';\nimport {TileLayerWMS, tileLayerWMS} from './TileLayer.WMS';\nTileLayer.WMS = TileLayerWMS;\ntileLayer.wms = tileLayerWMS;\nexport {TileLayer, tileLayer};\n", "import {Layer} from '../Layer';\nimport * as DomUtil from '../../dom/DomUtil';\nimport * as Util from '../../core/Util';\nimport Browser from '../../core/Browser';\nimport {Bounds} from '../../geometry/Bounds';\n\n\n\n/*\n * @class Renderer\n * @inherits Layer\n * @aka L.Renderer\n *\n * Base class for vector renderer implementations (`SVG`, `Canvas`). Handles the\n * DOM container of the renderer, its bounds, and its zoom animation.\n *\n * A `Renderer` works as an implicit layer group for all `Path`s - the renderer\n * itself can be added or removed to the map. All paths use a renderer, which can\n * be implicit (the map will decide the type of renderer and use it automatically)\n * or explicit (using the [`renderer`](#path-renderer) option of the path).\n *\n * Do not use this class directly, use `SVG` and `Canvas` instead.\n *\n * @event update: Event\n * Fired when the renderer updates its bounds, center and zoom, for example when\n * its map has moved\n */\n\nexport var Renderer = Layer.extend({\n\n\t// @section\n\t// @aka Renderer options\n\toptions: {\n\t\t// @option padding: Number = 0.1\n\t\t// How much to extend the clip area around the map view (relative to its size)\n\t\t// e.g. 0.1 would be 10% of map view in each direction\n\t\tpadding: 0.1\n\t},\n\n\tinitialize: function (options) {\n\t\tUtil.setOptions(this, options);\n\t\tUtil.stamp(this);\n\t\tthis._layers = this._layers || {};\n\t},\n\n\tonAdd: function () {\n\t\tif (!this._container) {\n\t\t\tthis._initContainer(); // defined by renderer implementations\n\n\t\t\t// always keep transform-origin as 0 0\n\t\t\tDomUtil.addClass(this._container, 'leaflet-zoom-animated');\n\t\t}\n\n\t\tthis.getPane().appendChild(this._container);\n\t\tthis._update();\n\t\tthis.on('update', this._updatePaths, this);\n\t},\n\n\tonRemove: function () {\n\t\tthis.off('update', this._updatePaths, this);\n\t\tthis._destroyContainer();\n\t},\n\n\tgetEvents: function () {\n\t\tvar events = {\n\t\t\tviewreset: this._reset,\n\t\t\tzoom: this._onZoom,\n\t\t\tmoveend: this._update,\n\t\t\tzoomend: this._onZoomEnd\n\t\t};\n\t\tif (this._zoomAnimated) {\n\t\t\tevents.zoomanim = this._onAnimZoom;\n\t\t}\n\t\treturn events;\n\t},\n\n\t_onAnimZoom: function (ev) {\n\t\tthis._updateTransform(ev.center, ev.zoom);\n\t},\n\n\t_onZoom: function () {\n\t\tthis._updateTransform(this._map.getCenter(), this._map.getZoom());\n\t},\n\n\t_updateTransform: function (center, zoom) {\n\t\tvar scale = this._map.getZoomScale(zoom, this._zoom),\n\t\t    viewHalf = this._map.getSize().multiplyBy(0.5 + this.options.padding),\n\t\t    currentCenterPoint = this._map.project(this._center, zoom),\n\n\t\t    topLeftOffset = viewHalf.multiplyBy(-scale).add(currentCenterPoint)\n\t\t\t\t  .subtract(this._map._getNewPixelOrigin(center, zoom));\n\n\t\tif (Browser.any3d) {\n\t\t\tDomUtil.setTransform(this._container, topLeftOffset, scale);\n\t\t} else {\n\t\t\tDomUtil.setPosition(this._container, topLeftOffset);\n\t\t}\n\t},\n\n\t_reset: function () {\n\t\tthis._update();\n\t\tthis._updateTransform(this._center, this._zoom);\n\n\t\tfor (var id in this._layers) {\n\t\t\tthis._layers[id]._reset();\n\t\t}\n\t},\n\n\t_onZoomEnd: function () {\n\t\tfor (var id in this._layers) {\n\t\t\tthis._layers[id]._project();\n\t\t}\n\t},\n\n\t_updatePaths: function () {\n\t\tfor (var id in this._layers) {\n\t\t\tthis._layers[id]._update();\n\t\t}\n\t},\n\n\t_update: function () {\n\t\t// Update pixel bounds of renderer container (for positioning/sizing/clipping later)\n\t\t// Subclasses are responsible of firing the 'update' event.\n\t\tvar p = this.options.padding,\n\t\t    size = this._map.getSize(),\n\t\t    min = this._map.containerPointToLayerPoint(size.multiplyBy(-p)).round();\n\n\t\tthis._bounds = new Bounds(min, min.add(size.multiplyBy(1 + p * 2)).round());\n\n\t\tthis._center = this._map.getCenter();\n\t\tthis._zoom = this._map.getZoom();\n\t}\n});\n", "import {Renderer} from './Renderer';\nimport * as DomUtil from '../../dom/DomUtil';\nimport * as DomEvent from '../../dom/DomEvent';\nimport Browser from '../../core/Browser';\nimport * as Util from '../../core/Util';\nimport {Bounds} from '../../geometry/Bounds';\n\n/*\n * @class Canvas\n * @inherits Renderer\n * @aka L.Canvas\n *\n * Allows vector layers to be displayed with [`<canvas>`](https://developer.mozilla.org/docs/Web/API/Canvas_API).\n * Inherits `Renderer`.\n *\n * Due to [technical limitations](https://caniuse.com/canvas), Canvas is not\n * available in all web browsers, notably IE8, and overlapping geometries might\n * not display properly in some edge cases.\n *\n * @example\n *\n * Use Canvas by default for all paths in the map:\n *\n * ```js\n * var map = L.map('map', {\n * \trenderer: L.canvas()\n * });\n * ```\n *\n * Use a Canvas renderer with extra padding for specific vector geometries:\n *\n * ```js\n * var map = L.map('map');\n * var myRenderer = L.canvas({ padding: 0.5 });\n * var line = L.polyline( coordinates, { renderer: myRenderer } );\n * var circle = L.circle( center, { renderer: myRenderer } );\n * ```\n */\n\nexport var Canvas = Renderer.extend({\n\n\t// @section\n\t// @aka Canvas options\n\toptions: {\n\t\t// @option tolerance: Number = 0\n\t\t// How much to extend the click tolerance around a path/object on the map.\n\t\ttolerance: 0\n\t},\n\n\tgetEvents: function () {\n\t\tvar events = Renderer.prototype.getEvents.call(this);\n\t\tevents.viewprereset = this._onViewPreReset;\n\t\treturn events;\n\t},\n\n\t_onViewPreReset: function () {\n\t\t// Set a flag so that a viewprereset+moveend+viewreset only updates&redraws once\n\t\tthis._postponeUpdatePaths = true;\n\t},\n\n\tonAdd: function () {\n\t\tRenderer.prototype.onAdd.call(this);\n\n\t\t// Redraw vectors since canvas is cleared upon removal,\n\t\t// in case of removing the renderer itself from the map.\n\t\tthis._draw();\n\t},\n\n\t_initContainer: function () {\n\t\tvar container = this._container = document.createElement('canvas');\n\n\t\tDomEvent.on(container, 'mousemove', this._onMouseMove, this);\n\t\tDomEvent.on(container, 'click dblclick mousedown mouseup contextmenu', this._onClick, this);\n\t\tDomEvent.on(container, 'mouseout', this._handleMouseOut, this);\n\t\tcontainer['_leaflet_disable_events'] = true;\n\n\t\tthis._ctx = container.getContext('2d');\n\t},\n\n\t_destroyContainer: function () {\n\t\tUtil.cancelAnimFrame(this._redrawRequest);\n\t\tdelete this._ctx;\n\t\tDomUtil.remove(this._container);\n\t\tDomEvent.off(this._container);\n\t\tdelete this._container;\n\t},\n\n\t_updatePaths: function () {\n\t\tif (this._postponeUpdatePaths) { return; }\n\n\t\tvar layer;\n\t\tthis._redrawBounds = null;\n\t\tfor (var id in this._layers) {\n\t\t\tlayer = this._layers[id];\n\t\t\tlayer._update();\n\t\t}\n\t\tthis._redraw();\n\t},\n\n\t_update: function () {\n\t\tif (this._map._animatingZoom && this._bounds) { return; }\n\n\t\tRenderer.prototype._update.call(this);\n\n\t\tvar b = this._bounds,\n\t\t    container = this._container,\n\t\t    size = b.getSize(),\n\t\t    m = Browser.retina ? 2 : 1;\n\n\t\tDomUtil.setPosition(container, b.min);\n\n\t\t// set canvas size (also clearing it); use double size on retina\n\t\tcontainer.width = m * size.x;\n\t\tcontainer.height = m * size.y;\n\t\tcontainer.style.width = size.x + 'px';\n\t\tcontainer.style.height = size.y + 'px';\n\n\t\tif (Browser.retina) {\n\t\t\tthis._ctx.scale(2, 2);\n\t\t}\n\n\t\t// translate so we use the same path coordinates after canvas element moves\n\t\tthis._ctx.translate(-b.min.x, -b.min.y);\n\n\t\t// Tell paths to redraw themselves\n\t\tthis.fire('update');\n\t},\n\n\t_reset: function () {\n\t\tRenderer.prototype._reset.call(this);\n\n\t\tif (this._postponeUpdatePaths) {\n\t\t\tthis._postponeUpdatePaths = false;\n\t\t\tthis._updatePaths();\n\t\t}\n\t},\n\n\t_initPath: function (layer) {\n\t\tthis._updateDashArray(layer);\n\t\tthis._layers[Util.stamp(layer)] = layer;\n\n\t\tvar order = layer._order = {\n\t\t\tlayer: layer,\n\t\t\tprev: this._drawLast,\n\t\t\tnext: null\n\t\t};\n\t\tif (this._drawLast) { this._drawLast.next = order; }\n\t\tthis._drawLast = order;\n\t\tthis._drawFirst = this._drawFirst || this._drawLast;\n\t},\n\n\t_addPath: function (layer) {\n\t\tthis._requestRedraw(layer);\n\t},\n\n\t_removePath: function (layer) {\n\t\tvar order = layer._order;\n\t\tvar next = order.next;\n\t\tvar prev = order.prev;\n\n\t\tif (next) {\n\t\t\tnext.prev = prev;\n\t\t} else {\n\t\t\tthis._drawLast = prev;\n\t\t}\n\t\tif (prev) {\n\t\t\tprev.next = next;\n\t\t} else {\n\t\t\tthis._drawFirst = next;\n\t\t}\n\n\t\tdelete layer._order;\n\n\t\tdelete this._layers[Util.stamp(layer)];\n\n\t\tthis._requestRedraw(layer);\n\t},\n\n\t_updatePath: function (layer) {\n\t\t// Redraw the union of the layer's old pixel\n\t\t// bounds and the new pixel bounds.\n\t\tthis._extendRedrawBounds(layer);\n\t\tlayer._project();\n\t\tlayer._update();\n\t\t// The redraw will extend the redraw bounds\n\t\t// with the new pixel bounds.\n\t\tthis._requestRedraw(layer);\n\t},\n\n\t_updateStyle: function (layer) {\n\t\tthis._updateDashArray(layer);\n\t\tthis._requestRedraw(layer);\n\t},\n\n\t_updateDashArray: function (layer) {\n\t\tif (typeof layer.options.dashArray === 'string') {\n\t\t\tvar parts = layer.options.dashArray.split(/[, ]+/),\n\t\t\t    dashArray = [],\n\t\t\t    dashValue,\n\t\t\t    i;\n\t\t\tfor (i = 0; i < parts.length; i++) {\n\t\t\t\tdashValue = Number(parts[i]);\n\t\t\t\t// Ignore dash array containing invalid lengths\n\t\t\t\tif (isNaN(dashValue)) { return; }\n\t\t\t\tdashArray.push(dashValue);\n\t\t\t}\n\t\t\tlayer.options._dashArray = dashArray;\n\t\t} else {\n\t\t\tlayer.options._dashArray = layer.options.dashArray;\n\t\t}\n\t},\n\n\t_requestRedraw: function (layer) {\n\t\tif (!this._map) { return; }\n\n\t\tthis._extendRedrawBounds(layer);\n\t\tthis._redrawRequest = this._redrawRequest || Util.requestAnimFrame(this._redraw, this);\n\t},\n\n\t_extendRedrawBounds: function (layer) {\n\t\tif (layer._pxBounds) {\n\t\t\tvar padding = (layer.options.weight || 0) + 1;\n\t\t\tthis._redrawBounds = this._redrawBounds || new Bounds();\n\t\t\tthis._redrawBounds.extend(layer._pxBounds.min.subtract([padding, padding]));\n\t\t\tthis._redrawBounds.extend(layer._pxBounds.max.add([padding, padding]));\n\t\t}\n\t},\n\n\t_redraw: function () {\n\t\tthis._redrawRequest = null;\n\n\t\tif (this._redrawBounds) {\n\t\t\tthis._redrawBounds.min._floor();\n\t\t\tthis._redrawBounds.max._ceil();\n\t\t}\n\n\t\tthis._clear(); // clear layers in redraw bounds\n\t\tthis._draw(); // draw layers\n\n\t\tthis._redrawBounds = null;\n\t},\n\n\t_clear: function () {\n\t\tvar bounds = this._redrawBounds;\n\t\tif (bounds) {\n\t\t\tvar size = bounds.getSize();\n\t\t\tthis._ctx.clearRect(bounds.min.x, bounds.min.y, size.x, size.y);\n\t\t} else {\n\t\t\tthis._ctx.save();\n\t\t\tthis._ctx.setTransform(1, 0, 0, 1, 0, 0);\n\t\t\tthis._ctx.clearRect(0, 0, this._container.width, this._container.height);\n\t\t\tthis._ctx.restore();\n\t\t}\n\t},\n\n\t_draw: function () {\n\t\tvar layer, bounds = this._redrawBounds;\n\t\tthis._ctx.save();\n\t\tif (bounds) {\n\t\t\tvar size = bounds.getSize();\n\t\t\tthis._ctx.beginPath();\n\t\t\tthis._ctx.rect(bounds.min.x, bounds.min.y, size.x, size.y);\n\t\t\tthis._ctx.clip();\n\t\t}\n\n\t\tthis._drawing = true;\n\n\t\tfor (var order = this._drawFirst; order; order = order.next) {\n\t\t\tlayer = order.layer;\n\t\t\tif (!bounds || (layer._pxBounds && layer._pxBounds.intersects(bounds))) {\n\t\t\t\tlayer._updatePath();\n\t\t\t}\n\t\t}\n\n\t\tthis._drawing = false;\n\n\t\tthis._ctx.restore();  // Restore state before clipping.\n\t},\n\n\t_updatePoly: function (layer, closed) {\n\t\tif (!this._drawing) { return; }\n\n\t\tvar i, j, len2, p,\n\t\t    parts = layer._parts,\n\t\t    len = parts.length,\n\t\t    ctx = this._ctx;\n\n\t\tif (!len) { return; }\n\n\t\tctx.beginPath();\n\n\t\tfor (i = 0; i < len; i++) {\n\t\t\tfor (j = 0, len2 = parts[i].length; j < len2; j++) {\n\t\t\t\tp = parts[i][j];\n\t\t\t\tctx[j ? 'lineTo' : 'moveTo'](p.x, p.y);\n\t\t\t}\n\t\t\tif (closed) {\n\t\t\t\tctx.closePath();\n\t\t\t}\n\t\t}\n\n\t\tthis._fillStroke(ctx, layer);\n\n\t\t// TODO optimization: 1 fill/stroke for all features with equal style instead of 1 for each feature\n\t},\n\n\t_updateCircle: function (layer) {\n\n\t\tif (!this._drawing || layer._empty()) { return; }\n\n\t\tvar p = layer._point,\n\t\t    ctx = this._ctx,\n\t\t    r = Math.max(Math.round(layer._radius), 1),\n\t\t    s = (Math.max(Math.round(layer._radiusY), 1) || r) / r;\n\n\t\tif (s !== 1) {\n\t\t\tctx.save();\n\t\t\tctx.scale(1, s);\n\t\t}\n\n\t\tctx.beginPath();\n\t\tctx.arc(p.x, p.y / s, r, 0, Math.PI * 2, false);\n\n\t\tif (s !== 1) {\n\t\t\tctx.restore();\n\t\t}\n\n\t\tthis._fillStroke(ctx, layer);\n\t},\n\n\t_fillStroke: function (ctx, layer) {\n\t\tvar options = layer.options;\n\n\t\tif (options.fill) {\n\t\t\tctx.globalAlpha = options.fillOpacity;\n\t\t\tctx.fillStyle = options.fillColor || options.color;\n\t\t\tctx.fill(options.fillRule || 'evenodd');\n\t\t}\n\n\t\tif (options.stroke && options.weight !== 0) {\n\t\t\tif (ctx.setLineDash) {\n\t\t\t\tctx.setLineDash(layer.options && layer.options._dashArray || []);\n\t\t\t}\n\t\t\tctx.globalAlpha = options.opacity;\n\t\t\tctx.lineWidth = options.weight;\n\t\t\tctx.strokeStyle = options.color;\n\t\t\tctx.lineCap = options.lineCap;\n\t\t\tctx.lineJoin = options.lineJoin;\n\t\t\tctx.stroke();\n\t\t}\n\t},\n\n\t// Canvas obviously doesn't have mouse events for individual drawn objects,\n\t// so we emulate that by calculating what's under the mouse on mousemove/click manually\n\n\t_onClick: function (e) {\n\t\tvar point = this._map.mouseEventToLayerPoint(e), layer, clickedLayer;\n\n\t\tfor (var order = this._drawFirst; order; order = order.next) {\n\t\t\tlayer = order.layer;\n\t\t\tif (layer.options.interactive && layer._containsPoint(point)) {\n\t\t\t\tif (!(e.type === 'click' || e.type === 'preclick') || !this._map._draggableMoved(layer)) {\n\t\t\t\t\tclickedLayer = layer;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tthis._fireEvent(clickedLayer ? [clickedLayer] : false, e);\n\t},\n\n\t_onMouseMove: function (e) {\n\t\tif (!this._map || this._map.dragging.moving() || this._map._animatingZoom) { return; }\n\n\t\tvar point = this._map.mouseEventToLayerPoint(e);\n\t\tthis._handleMouseHover(e, point);\n\t},\n\n\n\t_handleMouseOut: function (e) {\n\t\tvar layer = this._hoveredLayer;\n\t\tif (layer) {\n\t\t\t// if we're leaving the layer, fire mouseout\n\t\t\tDomUtil.removeClass(this._container, 'leaflet-interactive');\n\t\t\tthis._fireEvent([layer], e, 'mouseout');\n\t\t\tthis._hoveredLayer = null;\n\t\t\tthis._mouseHoverThrottled = false;\n\t\t}\n\t},\n\n\t_handleMouseHover: function (e, point) {\n\t\tif (this._mouseHoverThrottled) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar layer, candidateHoveredLayer;\n\n\t\tfor (var order = this._drawFirst; order; order = order.next) {\n\t\t\tlayer = order.layer;\n\t\t\tif (layer.options.interactive && layer._containsPoint(point)) {\n\t\t\t\tcandidateHoveredLayer = layer;\n\t\t\t}\n\t\t}\n\n\t\tif (candidateHoveredLayer !== this._hoveredLayer) {\n\t\t\tthis._handleMouseOut(e);\n\n\t\t\tif (candidateHoveredLayer) {\n\t\t\t\tDomUtil.addClass(this._container, 'leaflet-interactive'); // change cursor\n\t\t\t\tthis._fireEvent([candidateHoveredLayer], e, 'mouseover');\n\t\t\t\tthis._hoveredLayer = candidateHoveredLayer;\n\t\t\t}\n\t\t}\n\n\t\tthis._fireEvent(this._hoveredLayer ? [this._hoveredLayer] : false, e);\n\n\t\tthis._mouseHoverThrottled = true;\n\t\tsetTimeout(Util.bind(function () {\n\t\t\tthis._mouseHoverThrottled = false;\n\t\t}, this), 32);\n\t},\n\n\t_fireEvent: function (layers, e, type) {\n\t\tthis._map._fireDOMEvent(e, type || e.type, layers);\n\t},\n\n\t_bringToFront: function (layer) {\n\t\tvar order = layer._order;\n\n\t\tif (!order) { return; }\n\n\t\tvar next = order.next;\n\t\tvar prev = order.prev;\n\n\t\tif (next) {\n\t\t\tnext.prev = prev;\n\t\t} else {\n\t\t\t// Already last\n\t\t\treturn;\n\t\t}\n\t\tif (prev) {\n\t\t\tprev.next = next;\n\t\t} else if (next) {\n\t\t\t// Update first entry unless this is the\n\t\t\t// single entry\n\t\t\tthis._drawFirst = next;\n\t\t}\n\n\t\torder.prev = this._drawLast;\n\t\tthis._drawLast.next = order;\n\n\t\torder.next = null;\n\t\tthis._drawLast = order;\n\n\t\tthis._requestRedraw(layer);\n\t},\n\n\t_bringToBack: function (layer) {\n\t\tvar order = layer._order;\n\n\t\tif (!order) { return; }\n\n\t\tvar next = order.next;\n\t\tvar prev = order.prev;\n\n\t\tif (prev) {\n\t\t\tprev.next = next;\n\t\t} else {\n\t\t\t// Already first\n\t\t\treturn;\n\t\t}\n\t\tif (next) {\n\t\t\tnext.prev = prev;\n\t\t} else if (prev) {\n\t\t\t// Update last entry unless this is the\n\t\t\t// single entry\n\t\t\tthis._drawLast = prev;\n\t\t}\n\n\t\torder.prev = null;\n\n\t\torder.next = this._drawFirst;\n\t\tthis._drawFirst.prev = order;\n\t\tthis._drawFirst = order;\n\n\t\tthis._requestRedraw(layer);\n\t}\n});\n\n// @factory L.canvas(options?: Renderer options)\n// Creates a Canvas renderer with the given options.\nexport function canvas(options) {\n\treturn Browser.canvas ? new Canvas(options) : null;\n}\n", "import * as DomUtil from '../../dom/DomUtil';\nimport * as Util from '../../core/Util';\nimport {Renderer} from './Renderer';\n\n/*\n * Thanks to Dmitry Baranovsky and his Raphael library for inspiration!\n */\n\n\nexport var vmlCreate = (function () {\n\ttry {\n\t\tdocument.namespaces.add('lvml', 'urn:schemas-microsoft-com:vml');\n\t\treturn function (name) {\n\t\t\treturn document.createElement('<lvml:' + name + ' class=\"lvml\">');\n\t\t};\n\t} catch (e) {\n\t\t// Do not return fn from catch block so `e` can be garbage collected\n\t\t// See https://github.com/Leaflet/Leaflet/pull/7279\n\t}\n\treturn function (name) {\n\t\treturn document.createElement('<' + name + ' xmlns=\"urn:schemas-microsoft.com:vml\" class=\"lvml\">');\n\t};\n})();\n\n\n/*\n * @class SVG\n *\n *\n * VML was deprecated in 2012, which means VML functionality exists only for backwards compatibility\n * with old versions of Internet Explorer.\n */\n\n// mixin to redefine some SVG methods to handle VML syntax which is similar but with some differences\nexport var vmlMixin = {\n\n\t_initContainer: function () {\n\t\tthis._container = DomUtil.create('div', 'leaflet-vml-container');\n\t},\n\n\t_update: function () {\n\t\tif (this._map._animatingZoom) { return; }\n\t\tRenderer.prototype._update.call(this);\n\t\tthis.fire('update');\n\t},\n\n\t_initPath: function (layer) {\n\t\tvar container = layer._container = vmlCreate('shape');\n\n\t\tDomUtil.addClass(container, 'leaflet-vml-shape ' + (this.options.className || ''));\n\n\t\tcontainer.coordsize = '1 1';\n\n\t\tlayer._path = vmlCreate('path');\n\t\tcontainer.appendChild(layer._path);\n\n\t\tthis._updateStyle(layer);\n\t\tthis._layers[Util.stamp(layer)] = layer;\n\t},\n\n\t_addPath: function (layer) {\n\t\tvar container = layer._container;\n\t\tthis._container.appendChild(container);\n\n\t\tif (layer.options.interactive) {\n\t\t\tlayer.addInteractiveTarget(container);\n\t\t}\n\t},\n\n\t_removePath: function (layer) {\n\t\tvar container = layer._container;\n\t\tDomUtil.remove(container);\n\t\tlayer.removeInteractiveTarget(container);\n\t\tdelete this._layers[Util.stamp(layer)];\n\t},\n\n\t_updateStyle: function (layer) {\n\t\tvar stroke = layer._stroke,\n\t\t    fill = layer._fill,\n\t\t    options = layer.options,\n\t\t    container = layer._container;\n\n\t\tcontainer.stroked = !!options.stroke;\n\t\tcontainer.filled = !!options.fill;\n\n\t\tif (options.stroke) {\n\t\t\tif (!stroke) {\n\t\t\t\tstroke = layer._stroke = vmlCreate('stroke');\n\t\t\t}\n\t\t\tcontainer.appendChild(stroke);\n\t\t\tstroke.weight = options.weight + 'px';\n\t\t\tstroke.color = options.color;\n\t\t\tstroke.opacity = options.opacity;\n\n\t\t\tif (options.dashArray) {\n\t\t\t\tstroke.dashStyle = Util.isArray(options.dashArray) ?\n\t\t\t\t    options.dashArray.join(' ') :\n\t\t\t\t    options.dashArray.replace(/( *, *)/g, ' ');\n\t\t\t} else {\n\t\t\t\tstroke.dashStyle = '';\n\t\t\t}\n\t\t\tstroke.endcap = options.lineCap.replace('butt', 'flat');\n\t\t\tstroke.joinstyle = options.lineJoin;\n\n\t\t} else if (stroke) {\n\t\t\tcontainer.removeChild(stroke);\n\t\t\tlayer._stroke = null;\n\t\t}\n\n\t\tif (options.fill) {\n\t\t\tif (!fill) {\n\t\t\t\tfill = layer._fill = vmlCreate('fill');\n\t\t\t}\n\t\t\tcontainer.appendChild(fill);\n\t\t\tfill.color = options.fillColor || options.color;\n\t\t\tfill.opacity = options.fillOpacity;\n\n\t\t} else if (fill) {\n\t\t\tcontainer.removeChild(fill);\n\t\t\tlayer._fill = null;\n\t\t}\n\t},\n\n\t_updateCircle: function (layer) {\n\t\tvar p = layer._point.round(),\n\t\t    r = Math.round(layer._radius),\n\t\t    r2 = Math.round(layer._radiusY || r);\n\n\t\tthis._setPath(layer, layer._empty() ? 'M0 0' :\n\t\t\t'AL ' + p.x + ',' + p.y + ' ' + r + ',' + r2 + ' 0,' + (65535 * 360));\n\t},\n\n\t_setPath: function (layer, path) {\n\t\tlayer._path.v = path;\n\t},\n\n\t_bringToFront: function (layer) {\n\t\tDomUtil.toFront(layer._container);\n\t},\n\n\t_bringToBack: function (layer) {\n\t\tDomUtil.toBack(layer._container);\n\t}\n};\n", "import {Renderer} from './Renderer';\nimport * as DomUtil from '../../dom/DomUtil';\nimport * as DomEvent from '../../dom/DomEvent';\nimport Browser from '../../core/Browser';\nimport {stamp} from '../../core/Util';\nimport {svgCreate, pointsToPath} from './SVG.Util';\nexport {pointsToPath};\nimport {vmlMixin, vmlCreate} from './SVG.VML';\n\nexport var create = Browser.vml ? vmlCreate : svgCreate;\n\n/*\n * @class SVG\n * @inherits Renderer\n * @aka L.SVG\n *\n * Allows vector layers to be displayed with [SVG](https://developer.mozilla.org/docs/Web/SVG).\n * Inherits `Renderer`.\n *\n * Due to [technical limitations](https://caniuse.com/svg), SVG is not\n * available in all web browsers, notably Android 2.x and 3.x.\n *\n * Although SVG is not available on IE7 and IE8, these browsers support\n * [VML](https://en.wikipedia.org/wiki/Vector_Markup_Language)\n * (a now deprecated technology), and the SVG renderer will fall back to VML in\n * this case.\n *\n * @example\n *\n * Use SVG by default for all paths in the map:\n *\n * ```js\n * var map = L.map('map', {\n * \trenderer: L.svg()\n * });\n * ```\n *\n * Use a SVG renderer with extra padding for specific vector geometries:\n *\n * ```js\n * var map = L.map('map');\n * var myRenderer = L.svg({ padding: 0.5 });\n * var line = L.polyline( coordinates, { renderer: myRenderer } );\n * var circle = L.circle( center, { renderer: myRenderer } );\n * ```\n */\n\nexport var SVG = Renderer.extend({\n\n\t_initContainer: function () {\n\t\tthis._container = create('svg');\n\n\t\t// makes it possible to click through svg root; we'll reset it back in individual paths\n\t\tthis._container.setAttribute('pointer-events', 'none');\n\n\t\tthis._rootGroup = create('g');\n\t\tthis._container.appendChild(this._rootGroup);\n\t},\n\n\t_destroyContainer: function () {\n\t\tDomUtil.remove(this._container);\n\t\tDomEvent.off(this._container);\n\t\tdelete this._container;\n\t\tdelete this._rootGroup;\n\t\tdelete this._svgSize;\n\t},\n\n\t_update: function () {\n\t\tif (this._map._animatingZoom && this._bounds) { return; }\n\n\t\tRenderer.prototype._update.call(this);\n\n\t\tvar b = this._bounds,\n\t\t    size = b.getSize(),\n\t\t    container = this._container;\n\n\t\t// set size of svg-container if changed\n\t\tif (!this._svgSize || !this._svgSize.equals(size)) {\n\t\t\tthis._svgSize = size;\n\t\t\tcontainer.setAttribute('width', size.x);\n\t\t\tcontainer.setAttribute('height', size.y);\n\t\t}\n\n\t\t// movement: update container viewBox so that we don't have to change coordinates of individual layers\n\t\tDomUtil.setPosition(container, b.min);\n\t\tcontainer.setAttribute('viewBox', [b.min.x, b.min.y, size.x, size.y].join(' '));\n\n\t\tthis.fire('update');\n\t},\n\n\t// methods below are called by vector layers implementations\n\n\t_initPath: function (layer) {\n\t\tvar path = layer._path = create('path');\n\n\t\t// @namespace Path\n\t\t// @option className: String = null\n\t\t// Custom class name set on an element. Only for SVG renderer.\n\t\tif (layer.options.className) {\n\t\t\tDomUtil.addClass(path, layer.options.className);\n\t\t}\n\n\t\tif (layer.options.interactive) {\n\t\t\tDomUtil.addClass(path, 'leaflet-interactive');\n\t\t}\n\n\t\tthis._updateStyle(layer);\n\t\tthis._layers[stamp(layer)] = layer;\n\t},\n\n\t_addPath: function (layer) {\n\t\tif (!this._rootGroup) { this._initContainer(); }\n\t\tthis._rootGroup.appendChild(layer._path);\n\t\tlayer.addInteractiveTarget(layer._path);\n\t},\n\n\t_removePath: function (layer) {\n\t\tDomUtil.remove(layer._path);\n\t\tlayer.removeInteractiveTarget(layer._path);\n\t\tdelete this._layers[stamp(layer)];\n\t},\n\n\t_updatePath: function (layer) {\n\t\tlayer._project();\n\t\tlayer._update();\n\t},\n\n\t_updateStyle: function (layer) {\n\t\tvar path = layer._path,\n\t\t    options = layer.options;\n\n\t\tif (!path) { return; }\n\n\t\tif (options.stroke) {\n\t\t\tpath.setAttribute('stroke', options.color);\n\t\t\tpath.setAttribute('stroke-opacity', options.opacity);\n\t\t\tpath.setAttribute('stroke-width', options.weight);\n\t\t\tpath.setAttribute('stroke-linecap', options.lineCap);\n\t\t\tpath.setAttribute('stroke-linejoin', options.lineJoin);\n\n\t\t\tif (options.dashArray) {\n\t\t\t\tpath.setAttribute('stroke-dasharray', options.dashArray);\n\t\t\t} else {\n\t\t\t\tpath.removeAttribute('stroke-dasharray');\n\t\t\t}\n\n\t\t\tif (options.dashOffset) {\n\t\t\t\tpath.setAttribute('stroke-dashoffset', options.dashOffset);\n\t\t\t} else {\n\t\t\t\tpath.removeAttribute('stroke-dashoffset');\n\t\t\t}\n\t\t} else {\n\t\t\tpath.setAttribute('stroke', 'none');\n\t\t}\n\n\t\tif (options.fill) {\n\t\t\tpath.setAttribute('fill', options.fillColor || options.color);\n\t\t\tpath.setAttribute('fill-opacity', options.fillOpacity);\n\t\t\tpath.setAttribute('fill-rule', options.fillRule || 'evenodd');\n\t\t} else {\n\t\t\tpath.setAttribute('fill', 'none');\n\t\t}\n\t},\n\n\t_updatePoly: function (layer, closed) {\n\t\tthis._setPath(layer, pointsToPath(layer._parts, closed));\n\t},\n\n\t_updateCircle: function (layer) {\n\t\tvar p = layer._point,\n\t\t    r = Math.max(Math.round(layer._radius), 1),\n\t\t    r2 = Math.max(Math.round(layer._radiusY), 1) || r,\n\t\t    arc = 'a' + r + ',' + r2 + ' 0 1,0 ';\n\n\t\t// drawing a circle with two half-arcs\n\t\tvar d = layer._empty() ? 'M0 0' :\n\t\t\t'M' + (p.x - r) + ',' + p.y +\n\t\t\tarc + (r * 2) + ',0 ' +\n\t\t\tarc + (-r * 2) + ',0 ';\n\n\t\tthis._setPath(layer, d);\n\t},\n\n\t_setPath: function (layer, path) {\n\t\tlayer._path.setAttribute('d', path);\n\t},\n\n\t// SVG does not have the concept of zIndex so we resort to changing the DOM order of elements\n\t_bringToFront: function (layer) {\n\t\tDomUtil.toFront(layer._path);\n\t},\n\n\t_bringToBack: function (layer) {\n\t\tDomUtil.toBack(layer._path);\n\t}\n});\n\nif (Browser.vml) {\n\tSVG.include(vmlMixin);\n}\n\n// @namespace SVG\n// @factory L.svg(options?: Renderer options)\n// Creates a SVG renderer with the given options.\nexport function svg(options) {\n\treturn Browser.svg || Browser.vml ? new SVG(options) : null;\n}\n", "import {Map} from '../../map/Map';\nimport {canvas} from './Canvas';\nimport {svg} from './SVG';\n\nMap.include({\n\t// @namespace Map; @method getRenderer(layer: Path): Renderer\n\t// Returns the instance of `Renderer` that should be used to render the given\n\t// `Path`. It will ensure that the `renderer` options of the map and paths\n\t// are respected, and that the renderers do exist on the map.\n\tgetRenderer: function (layer) {\n\t\t// @namespace Path; @option renderer: Renderer\n\t\t// Use this specific instance of `Renderer` for this path. Takes\n\t\t// precedence over the map's [default renderer](#map-renderer).\n\t\tvar renderer = layer.options.renderer || this._getPaneRenderer(layer.options.pane) || this.options.renderer || this._renderer;\n\n\t\tif (!renderer) {\n\t\t\trenderer = this._renderer = this._createRenderer();\n\t\t}\n\n\t\tif (!this.hasLayer(renderer)) {\n\t\t\tthis.addLayer(renderer);\n\t\t}\n\t\treturn renderer;\n\t},\n\n\t_getPaneRenderer: function (name) {\n\t\tif (name === 'overlayPane' || name === undefined) {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar renderer = this._paneRenderers[name];\n\t\tif (renderer === undefined) {\n\t\t\trenderer = this._createRenderer({pane: name});\n\t\t\tthis._paneRenderers[name] = renderer;\n\t\t}\n\t\treturn renderer;\n\t},\n\n\t_createRenderer: function (options) {\n\t\t// @namespace Map; @option preferCanvas: Boolean = false\n\t\t// Whether `Path`s should be rendered on a `Canvas` renderer.\n\t\t// By default, all `Path`s are rendered in a `SVG` renderer.\n\t\treturn (this.options.preferCanvas && canvas(options)) || svg(options);\n\t}\n});\n", "import {Polygon} from './Polygon';\nimport {toLatLngBounds} from '../../geo/LatLngBounds';\n\n/*\n * L.Rectangle extends Polygon and creates a rectangle when passed a LatLngBounds object.\n */\n\n/*\n * @class Rectangle\n * @aka L.Rectangle\n * @inherits Polygon\n *\n * A class for drawing rectangle overlays on a map. Extends `Polygon`.\n *\n * @example\n *\n * ```js\n * // define rectangle geographical bounds\n * var bounds = [[54.559322, -5.767822], [56.1210604, -3.021240]];\n *\n * // create an orange rectangle\n * L.rectangle(bounds, {color: \"#ff7800\", weight: 1}).addTo(map);\n *\n * // zoom the map to the rectangle bounds\n * map.fitBounds(bounds);\n * ```\n *\n */\n\n\nexport var Rectangle = Polygon.extend({\n\tinitialize: function (latLngBounds, options) {\n\t\tPolygon.prototype.initialize.call(this, this._boundsToLatLngs(latLngBounds), options);\n\t},\n\n\t// @method setBounds(latLngBounds: LatLngBounds): this\n\t// Redraws the rectangle with the passed bounds.\n\tsetBounds: function (latLngBounds) {\n\t\treturn this.setLatLngs(this._boundsToLatLngs(latLngBounds));\n\t},\n\n\t_boundsToLatLngs: function (latLngBounds) {\n\t\tlatLngBounds = toLatLngBounds(latLngBounds);\n\t\treturn [\n\t\t\tlatLngBounds.getSouthWest(),\n\t\t\tlatLngBounds.getNorthWest(),\n\t\t\tlatLngBounds.getNorthEast(),\n\t\t\tlatLngBounds.getSouthEast()\n\t\t];\n\t}\n});\n\n\n// @factory L.rectangle(latLngBounds: LatLngBounds, options?: Polyline options)\nexport function rectangle(latLngBounds, options) {\n\treturn new Rectangle(latLngBounds, options);\n}\n", "export {Renderer} from './Renderer';\nexport {Canvas, canvas} from './Canvas';\nimport {SVG, create, pointsToPath, svg} from './SVG';\nSVG.create = create;\nSVG.pointsToPath = pointsToPath;\nexport {SVG, svg};\nimport './Renderer.getRenderer';\t// This is a bit of a hack, but needed because circular dependencies\n\nexport {Path} from './Path';\nexport {CircleMarker, circleMarker} from './CircleMarker';\nexport {Circle, circle} from './Circle';\nexport {Polyline, polyline} from './Polyline';\nexport {Polygon, polygon} from './Polygon';\nexport {Rectangle, rectangle} from './Rectangle';\n", "export {Layer} from './Layer';\nexport {LayerGroup, layerGroup} from './LayerGroup';\nexport {FeatureGroup, featureGroup} from './FeatureGroup';\nimport {GeoJSON, geoJSON, geoJson, geometryToLayer, coordsToLatLng, coordsToLatLngs, latLngToCoords, latLngsToCoords, getFeature, asFeature} from './GeoJSON';\nGeoJSON.geometryToLayer = geometryToLayer;\nGeoJSON.coordsToLatLng = coordsToLatLng;\nGeoJSON.coordsToLatLngs = coordsToLatLngs;\nGeoJSON.latLngToCoords = latLngToCoords;\nGeoJSON.latLngsToCoords = latLngsToCoords;\nGeoJSON.getFeature = getFeature;\nGeoJSON.asFeature = asFeature;\nexport {GeoJSON, geoJSON, geoJson};\n\nexport {ImageOverlay, imageOverlay} from './ImageOverlay';\nexport {VideoOverlay, videoOverlay} from './VideoOverlay';\nexport {SVGOverlay, svgOverlay} from './SVGOverlay';\n\nexport {DivOverlay} from './DivOverlay';\nexport {Popup, popup} from './Popup';\nexport {Tooltip, tooltip} from './Tooltip';\n\nexport * from './marker/index';\nexport * from './tile/index';\nexport * from './vector/index';\n", "import {Map} from '../Map';\nimport {Handler} from '../../core/Handler';\nimport * as Util from '../../core/Util';\nimport * as DomUtil from '../../dom/DomUtil';\nimport * as DomEvent from '../../dom/DomEvent';\nimport {LatLngBounds} from '../../geo/LatLngBounds';\nimport {Bounds} from '../../geometry/Bounds';\n\n/*\n * L.Handler.BoxZoom is used to add shift-drag zoom interaction to the map\n * (zoom to a selected bounding box), enabled by default.\n */\n\n// @namespace Map\n// @section Interaction Options\nMap.mergeOptions({\n\t// @option boxZoom: Boolean = true\n\t// Whether the map can be zoomed to a rectangular area specified by\n\t// dragging the mouse while pressing the shift key.\n\tboxZoom: true\n});\n\nexport var BoxZoom = Handler.extend({\n\tinitialize: function (map) {\n\t\tthis._map = map;\n\t\tthis._container = map._container;\n\t\tthis._pane = map._panes.overlayPane;\n\t\tthis._resetStateTimeout = 0;\n\t\tmap.on('unload', this._destroy, this);\n\t},\n\n\taddHooks: function () {\n\t\tDomEvent.on(this._container, 'mousedown', this._onMouseDown, this);\n\t},\n\n\tremoveHooks: function () {\n\t\tDomEvent.off(this._container, 'mousedown', this._onMouseDown, this);\n\t},\n\n\tmoved: function () {\n\t\treturn this._moved;\n\t},\n\n\t_destroy: function () {\n\t\tDomUtil.remove(this._pane);\n\t\tdelete this._pane;\n\t},\n\n\t_resetState: function () {\n\t\tthis._resetStateTimeout = 0;\n\t\tthis._moved = false;\n\t},\n\n\t_clearDeferredResetState: function () {\n\t\tif (this._resetStateTimeout !== 0) {\n\t\t\tclearTimeout(this._resetStateTimeout);\n\t\t\tthis._resetStateTimeout = 0;\n\t\t}\n\t},\n\n\t_onMouseDown: function (e) {\n\t\tif (!e.shiftKey || ((e.which !== 1) && (e.button !== 1))) { return false; }\n\n\t\t// Clear the deferred resetState if it hasn't executed yet, otherwise it\n\t\t// will interrupt the interaction and orphan a box element in the container.\n\t\tthis._clearDeferredResetState();\n\t\tthis._resetState();\n\n\t\tDomUtil.disableTextSelection();\n\t\tDomUtil.disableImageDrag();\n\n\t\tthis._startPoint = this._map.mouseEventToContainerPoint(e);\n\n\t\tDomEvent.on(document, {\n\t\t\tcontextmenu: DomEvent.stop,\n\t\t\tmousemove: this._onMouseMove,\n\t\t\tmouseup: this._onMouseUp,\n\t\t\tkeydown: this._onKeyDown\n\t\t}, this);\n\t},\n\n\t_onMouseMove: function (e) {\n\t\tif (!this._moved) {\n\t\t\tthis._moved = true;\n\n\t\t\tthis._box = DomUtil.create('div', 'leaflet-zoom-box', this._container);\n\t\t\tDomUtil.addClass(this._container, 'leaflet-crosshair');\n\n\t\t\tthis._map.fire('boxzoomstart');\n\t\t}\n\n\t\tthis._point = this._map.mouseEventToContainerPoint(e);\n\n\t\tvar bounds = new Bounds(this._point, this._startPoint),\n\t\t    size = bounds.getSize();\n\n\t\tDomUtil.setPosition(this._box, bounds.min);\n\n\t\tthis._box.style.width  = size.x + 'px';\n\t\tthis._box.style.height = size.y + 'px';\n\t},\n\n\t_finish: function () {\n\t\tif (this._moved) {\n\t\t\tDomUtil.remove(this._box);\n\t\t\tDomUtil.removeClass(this._container, 'leaflet-crosshair');\n\t\t}\n\n\t\tDomUtil.enableTextSelection();\n\t\tDomUtil.enableImageDrag();\n\n\t\tDomEvent.off(document, {\n\t\t\tcontextmenu: DomEvent.stop,\n\t\t\tmousemove: this._onMouseMove,\n\t\t\tmouseup: this._onMouseUp,\n\t\t\tkeydown: this._onKeyDown\n\t\t}, this);\n\t},\n\n\t_onMouseUp: function (e) {\n\t\tif ((e.which !== 1) && (e.button !== 1)) { return; }\n\n\t\tthis._finish();\n\n\t\tif (!this._moved) { return; }\n\t\t// Postpone to next JS tick so internal click event handling\n\t\t// still see it as \"moved\".\n\t\tthis._clearDeferredResetState();\n\t\tthis._resetStateTimeout = setTimeout(Util.bind(this._resetState, this), 0);\n\n\t\tvar bounds = new LatLngBounds(\n\t\t        this._map.containerPointToLatLng(this._startPoint),\n\t\t        this._map.containerPointToLatLng(this._point));\n\n\t\tthis._map\n\t\t\t.fitBounds(bounds)\n\t\t\t.fire('boxzoomend', {boxZoomBounds: bounds});\n\t},\n\n\t_onKeyDown: function (e) {\n\t\tif (e.keyCode === 27) {\n\t\t\tthis._finish();\n\t\t\tthis._clearDeferredResetState();\n\t\t\tthis._resetState();\n\t\t}\n\t}\n});\n\n// @section Handlers\n// @property boxZoom: Handler\n// Box (shift-drag with mouse) zoom handler.\nMap.addInitHook('addHandler', 'boxZoom', BoxZoom);\n", "import {Map} from '../Map';\nimport {Handler} from '../../core/Handler';\n\n/*\n * L.Handler.DoubleClickZoom is used to handle double-click zoom on the map, enabled by default.\n */\n\n// @namespace Map\n// @section Interaction Options\n\nMap.mergeOptions({\n\t// @option doubleClickZoom: Boolean|String = true\n\t// Whether the map can be zoomed in by double clicking on it and\n\t// zoomed out by double clicking while holding shift. If passed\n\t// `'center'`, double-click zoom will zoom to the center of the\n\t//  view regardless of where the mouse was.\n\tdoubleClickZoom: true\n});\n\nexport var DoubleClickZoom = Handler.extend({\n\taddHooks: function () {\n\t\tthis._map.on('dblclick', this._onDoubleClick, this);\n\t},\n\n\tremoveHooks: function () {\n\t\tthis._map.off('dblclick', this._onDoubleClick, this);\n\t},\n\n\t_onDoubleClick: function (e) {\n\t\tvar map = this._map,\n\t\t    oldZoom = map.getZoom(),\n\t\t    delta = map.options.zoomDelta,\n\t\t    zoom = e.originalEvent.shiftKey ? oldZoom - delta : oldZoom + delta;\n\n\t\tif (map.options.doubleClickZoom === 'center') {\n\t\t\tmap.setZoom(zoom);\n\t\t} else {\n\t\t\tmap.setZoomAround(e.containerPoint, zoom);\n\t\t}\n\t}\n});\n\n// @section Handlers\n//\n// Map properties include interaction handlers that allow you to control\n// interaction behavior in runtime, enabling or disabling certain features such\n// as dragging or touch zoom (see `Handler` methods). For example:\n//\n// ```js\n// map.doubleClickZoom.disable();\n// ```\n//\n// @property doubleClickZoom: Handler\n// Double click zoom handler.\nMap.addInitHook('addHandler', 'doubleClickZoom', DoubleClickZoom);\n", "import {Map} from '../Map';\nimport {Handler} from '../../core/Handler';\nimport {Draggable} from '../../dom/Draggable';\nimport * as Util from '../../core/Util';\nimport * as DomUtil from '../../dom/DomUtil';\nimport {toLatLngBounds as latLngBounds} from '../../geo/LatLngBounds';\nimport {toBounds} from '../../geometry/Bounds';\n\n/*\n * L.Handler.MapDrag is used to make the map draggable (with panning inertia), enabled by default.\n */\n\n// @namespace Map\n// @section Interaction Options\nMap.mergeOptions({\n\t// @option dragging: Boolean = true\n\t// Whether the map is draggable with mouse/touch or not.\n\tdragging: true,\n\n\t// @section Panning Inertia Options\n\t// @option inertia: Boolean = *\n\t// If enabled, panning of the map will have an inertia effect where\n\t// the map builds momentum while dragging and continues moving in\n\t// the same direction for some time. Feels especially nice on touch\n\t// devices. Enabled by default.\n\tinertia: true,\n\n\t// @option inertiaDeceleration: Number = 3000\n\t// The rate with which the inertial movement slows down, in pixels/second².\n\tinertiaDeceleration: 3400, // px/s^2\n\n\t// @option inertiaMaxSpeed: Number = Infinity\n\t// Max speed of the inertial movement, in pixels/second.\n\tinertiaMaxSpeed: Infinity, // px/s\n\n\t// @option easeLinearity: Number = 0.2\n\teaseLinearity: 0.2,\n\n\t// TODO refactor, move to CRS\n\t// @option worldCopyJump: Boolean = false\n\t// With this option enabled, the map tracks when you pan to another \"copy\"\n\t// of the world and seamlessly jumps to the original one so that all overlays\n\t// like markers and vector layers are still visible.\n\tworldCopyJump: false,\n\n\t// @option maxBoundsViscosity: Number = 0.0\n\t// If `maxBounds` is set, this option will control how solid the bounds\n\t// are when dragging the map around. The default value of `0.0` allows the\n\t// user to drag outside the bounds at normal speed, higher values will\n\t// slow down map dragging outside bounds, and `1.0` makes the bounds fully\n\t// solid, preventing the user from dragging outside the bounds.\n\tmaxBoundsViscosity: 0.0\n});\n\nexport var Drag = Handler.extend({\n\taddHooks: function () {\n\t\tif (!this._draggable) {\n\t\t\tvar map = this._map;\n\n\t\t\tthis._draggable = new Draggable(map._mapPane, map._container);\n\n\t\t\tthis._draggable.on({\n\t\t\t\tdragstart: this._onDragStart,\n\t\t\t\tdrag: this._onDrag,\n\t\t\t\tdragend: this._onDragEnd\n\t\t\t}, this);\n\n\t\t\tthis._draggable.on('predrag', this._onPreDragLimit, this);\n\t\t\tif (map.options.worldCopyJump) {\n\t\t\t\tthis._draggable.on('predrag', this._onPreDragWrap, this);\n\t\t\t\tmap.on('zoomend', this._onZoomEnd, this);\n\n\t\t\t\tmap.whenReady(this._onZoomEnd, this);\n\t\t\t}\n\t\t}\n\t\tDomUtil.addClass(this._map._container, 'leaflet-grab leaflet-touch-drag');\n\t\tthis._draggable.enable();\n\t\tthis._positions = [];\n\t\tthis._times = [];\n\t},\n\n\tremoveHooks: function () {\n\t\tDomUtil.removeClass(this._map._container, 'leaflet-grab');\n\t\tDomUtil.removeClass(this._map._container, 'leaflet-touch-drag');\n\t\tthis._draggable.disable();\n\t},\n\n\tmoved: function () {\n\t\treturn this._draggable && this._draggable._moved;\n\t},\n\n\tmoving: function () {\n\t\treturn this._draggable && this._draggable._moving;\n\t},\n\n\t_onDragStart: function () {\n\t\tvar map = this._map;\n\n\t\tmap._stop();\n\t\tif (this._map.options.maxBounds && this._map.options.maxBoundsViscosity) {\n\t\t\tvar bounds = latLngBounds(this._map.options.maxBounds);\n\n\t\t\tthis._offsetLimit = toBounds(\n\t\t\t\tthis._map.latLngToContainerPoint(bounds.getNorthWest()).multiplyBy(-1),\n\t\t\t\tthis._map.latLngToContainerPoint(bounds.getSouthEast()).multiplyBy(-1)\n\t\t\t\t\t.add(this._map.getSize()));\n\n\t\t\tthis._viscosity = Math.min(1.0, Math.max(0.0, this._map.options.maxBoundsViscosity));\n\t\t} else {\n\t\t\tthis._offsetLimit = null;\n\t\t}\n\n\t\tmap\n\t\t    .fire('movestart')\n\t\t    .fire('dragstart');\n\n\t\tif (map.options.inertia) {\n\t\t\tthis._positions = [];\n\t\t\tthis._times = [];\n\t\t}\n\t},\n\n\t_onDrag: function (e) {\n\t\tif (this._map.options.inertia) {\n\t\t\tvar time = this._lastTime = +new Date(),\n\t\t\t    pos = this._lastPos = this._draggable._absPos || this._draggable._newPos;\n\n\t\t\tthis._positions.push(pos);\n\t\t\tthis._times.push(time);\n\n\t\t\tthis._prunePositions(time);\n\t\t}\n\n\t\tthis._map\n\t\t    .fire('move', e)\n\t\t    .fire('drag', e);\n\t},\n\n\t_prunePositions: function (time) {\n\t\twhile (this._positions.length > 1 && time - this._times[0] > 50) {\n\t\t\tthis._positions.shift();\n\t\t\tthis._times.shift();\n\t\t}\n\t},\n\n\t_onZoomEnd: function () {\n\t\tvar pxCenter = this._map.getSize().divideBy(2),\n\t\t    pxWorldCenter = this._map.latLngToLayerPoint([0, 0]);\n\n\t\tthis._initialWorldOffset = pxWorldCenter.subtract(pxCenter).x;\n\t\tthis._worldWidth = this._map.getPixelWorldBounds().getSize().x;\n\t},\n\n\t_viscousLimit: function (value, threshold) {\n\t\treturn value - (value - threshold) * this._viscosity;\n\t},\n\n\t_onPreDragLimit: function () {\n\t\tif (!this._viscosity || !this._offsetLimit) { return; }\n\n\t\tvar offset = this._draggable._newPos.subtract(this._draggable._startPos);\n\n\t\tvar limit = this._offsetLimit;\n\t\tif (offset.x < limit.min.x) { offset.x = this._viscousLimit(offset.x, limit.min.x); }\n\t\tif (offset.y < limit.min.y) { offset.y = this._viscousLimit(offset.y, limit.min.y); }\n\t\tif (offset.x > limit.max.x) { offset.x = this._viscousLimit(offset.x, limit.max.x); }\n\t\tif (offset.y > limit.max.y) { offset.y = this._viscousLimit(offset.y, limit.max.y); }\n\n\t\tthis._draggable._newPos = this._draggable._startPos.add(offset);\n\t},\n\n\t_onPreDragWrap: function () {\n\t\t// TODO refactor to be able to adjust map pane position after zoom\n\t\tvar worldWidth = this._worldWidth,\n\t\t    halfWidth = Math.round(worldWidth / 2),\n\t\t    dx = this._initialWorldOffset,\n\t\t    x = this._draggable._newPos.x,\n\t\t    newX1 = (x - halfWidth + dx) % worldWidth + halfWidth - dx,\n\t\t    newX2 = (x + halfWidth + dx) % worldWidth - halfWidth - dx,\n\t\t    newX = Math.abs(newX1 + dx) < Math.abs(newX2 + dx) ? newX1 : newX2;\n\n\t\tthis._draggable._absPos = this._draggable._newPos.clone();\n\t\tthis._draggable._newPos.x = newX;\n\t},\n\n\t_onDragEnd: function (e) {\n\t\tvar map = this._map,\n\t\t    options = map.options,\n\n\t\t    noInertia = !options.inertia || e.noInertia || this._times.length < 2;\n\n\t\tmap.fire('dragend', e);\n\n\t\tif (noInertia) {\n\t\t\tmap.fire('moveend');\n\n\t\t} else {\n\t\t\tthis._prunePositions(+new Date());\n\n\t\t\tvar direction = this._lastPos.subtract(this._positions[0]),\n\t\t\t    duration = (this._lastTime - this._times[0]) / 1000,\n\t\t\t    ease = options.easeLinearity,\n\n\t\t\t    speedVector = direction.multiplyBy(ease / duration),\n\t\t\t    speed = speedVector.distanceTo([0, 0]),\n\n\t\t\t    limitedSpeed = Math.min(options.inertiaMaxSpeed, speed),\n\t\t\t    limitedSpeedVector = speedVector.multiplyBy(limitedSpeed / speed),\n\n\t\t\t    decelerationDuration = limitedSpeed / (options.inertiaDeceleration * ease),\n\t\t\t    offset = limitedSpeedVector.multiplyBy(-decelerationDuration / 2).round();\n\n\t\t\tif (!offset.x && !offset.y) {\n\t\t\t\tmap.fire('moveend');\n\n\t\t\t} else {\n\t\t\t\toffset = map._limitOffset(offset, map.options.maxBounds);\n\n\t\t\t\tUtil.requestAnimFrame(function () {\n\t\t\t\t\tmap.panBy(offset, {\n\t\t\t\t\t\tduration: decelerationDuration,\n\t\t\t\t\t\teaseLinearity: ease,\n\t\t\t\t\t\tnoMoveStart: true,\n\t\t\t\t\t\tanimate: true\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n});\n\n// @section Handlers\n// @property dragging: Handler\n// Map dragging handler (by both mouse and touch).\nMap.addInitHook('addHandler', 'dragging', Drag);\n", "import {Map} from '../Map';\nimport {Handler} from '../../core/Handler';\nimport {on, off, stop} from '../../dom/DomEvent';\nimport {toPoint} from '../../geometry/Point';\n\n\n/*\n * L.Map.Keyboard is handling keyboard interaction with the map, enabled by default.\n */\n\n// @namespace Map\n// @section Keyboard Navigation Options\nMap.mergeOptions({\n\t// @option keyboard: Boolean = true\n\t// Makes the map focusable and allows users to navigate the map with keyboard\n\t// arrows and `+`/`-` keys.\n\tkeyboard: true,\n\n\t// @option keyboardPanDelta: Number = 80\n\t// Amount of pixels to pan when pressing an arrow key.\n\tkeyboardPanDelta: 80\n});\n\nexport var Keyboard = Handler.extend({\n\n\tkeyCodes: {\n\t\tleft:    [37],\n\t\tright:   [39],\n\t\tdown:    [40],\n\t\tup:      [38],\n\t\tzoomIn:  [187, 107, 61, 171],\n\t\tzoomOut: [189, 109, 54, 173]\n\t},\n\n\tinitialize: function (map) {\n\t\tthis._map = map;\n\n\t\tthis._setPanDelta(map.options.keyboardPanDelta);\n\t\tthis._setZoomDelta(map.options.zoomDelta);\n\t},\n\n\taddHooks: function () {\n\t\tvar container = this._map._container;\n\n\t\t// make the container focusable by tabbing\n\t\tif (container.tabIndex <= 0) {\n\t\t\tcontainer.tabIndex = '0';\n\t\t}\n\n\t\ton(container, {\n\t\t\tfocus: this._onFocus,\n\t\t\tblur: this._onBlur,\n\t\t\tmousedown: this._onMouseDown\n\t\t}, this);\n\n\t\tthis._map.on({\n\t\t\tfocus: this._addHooks,\n\t\t\tblur: this._removeHooks\n\t\t}, this);\n\t},\n\n\tremoveHooks: function () {\n\t\tthis._removeHooks();\n\n\t\toff(this._map._container, {\n\t\t\tfocus: this._onFocus,\n\t\t\tblur: this._onBlur,\n\t\t\tmousedown: this._onMouseDown\n\t\t}, this);\n\n\t\tthis._map.off({\n\t\t\tfocus: this._addHooks,\n\t\t\tblur: this._removeHooks\n\t\t}, this);\n\t},\n\n\t_onMouseDown: function () {\n\t\tif (this._focused) { return; }\n\n\t\tvar body = document.body,\n\t\t    docEl = document.documentElement,\n\t\t    top = body.scrollTop || docEl.scrollTop,\n\t\t    left = body.scrollLeft || docEl.scrollLeft;\n\n\t\tthis._map._container.focus();\n\n\t\twindow.scrollTo(left, top);\n\t},\n\n\t_onFocus: function () {\n\t\tthis._focused = true;\n\t\tthis._map.fire('focus');\n\t},\n\n\t_onBlur: function () {\n\t\tthis._focused = false;\n\t\tthis._map.fire('blur');\n\t},\n\n\t_setPanDelta: function (panDelta) {\n\t\tvar keys = this._panKeys = {},\n\t\t    codes = this.keyCodes,\n\t\t    i, len;\n\n\t\tfor (i = 0, len = codes.left.length; i < len; i++) {\n\t\t\tkeys[codes.left[i]] = [-1 * panDelta, 0];\n\t\t}\n\t\tfor (i = 0, len = codes.right.length; i < len; i++) {\n\t\t\tkeys[codes.right[i]] = [panDelta, 0];\n\t\t}\n\t\tfor (i = 0, len = codes.down.length; i < len; i++) {\n\t\t\tkeys[codes.down[i]] = [0, panDelta];\n\t\t}\n\t\tfor (i = 0, len = codes.up.length; i < len; i++) {\n\t\t\tkeys[codes.up[i]] = [0, -1 * panDelta];\n\t\t}\n\t},\n\n\t_setZoomDelta: function (zoomDelta) {\n\t\tvar keys = this._zoomKeys = {},\n\t\t    codes = this.keyCodes,\n\t\t    i, len;\n\n\t\tfor (i = 0, len = codes.zoomIn.length; i < len; i++) {\n\t\t\tkeys[codes.zoomIn[i]] = zoomDelta;\n\t\t}\n\t\tfor (i = 0, len = codes.zoomOut.length; i < len; i++) {\n\t\t\tkeys[codes.zoomOut[i]] = -zoomDelta;\n\t\t}\n\t},\n\n\t_addHooks: function () {\n\t\ton(document, 'keydown', this._onKeyDown, this);\n\t},\n\n\t_removeHooks: function () {\n\t\toff(document, 'keydown', this._onKeyDown, this);\n\t},\n\n\t_onKeyDown: function (e) {\n\t\tif (e.altKey || e.ctrlKey || e.metaKey) { return; }\n\n\t\tvar key = e.keyCode,\n\t\t    map = this._map,\n\t\t    offset;\n\n\t\tif (key in this._panKeys) {\n\t\t\tif (!map._panAnim || !map._panAnim._inProgress) {\n\t\t\t\toffset = this._panKeys[key];\n\t\t\t\tif (e.shiftKey) {\n\t\t\t\t\toffset = toPoint(offset).multiplyBy(3);\n\t\t\t\t}\n\n\t\t\t\tif (map.options.maxBounds) {\n\t\t\t\t\toffset = map._limitOffset(toPoint(offset), map.options.maxBounds);\n\t\t\t\t}\n\n\t\t\t\tif (map.options.worldCopyJump) {\n\t\t\t\t\tvar newLatLng = map.wrapLatLng(map.unproject(map.project(map.getCenter()).add(offset)));\n\t\t\t\t\tmap.panTo(newLatLng);\n\t\t\t\t} else {\n\t\t\t\t\tmap.panBy(offset);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (key in this._zoomKeys) {\n\t\t\tmap.setZoom(map.getZoom() + (e.shiftKey ? 3 : 1) * this._zoomKeys[key]);\n\n\t\t} else if (key === 27 && map._popup && map._popup.options.closeOnEscapeKey) {\n\t\t\tmap.closePopup();\n\n\t\t} else {\n\t\t\treturn;\n\t\t}\n\n\t\tstop(e);\n\t}\n});\n\n// @section Handlers\n// @section Handlers\n// @property keyboard: Handler\n// Keyboard navigation handler.\nMap.addInitHook('addHandler', 'keyboard', Keyboard);\n", "import {Map} from '../Map';\nimport {Handler} from '../../core/Handler';\nimport * as DomEvent from '../../dom/DomEvent';\nimport * as Util from '../../core/Util';\n\n/*\n * L.Handler.ScrollWheelZoom is used by L.Map to enable mouse scroll wheel zoom on the map.\n */\n\n// @namespace Map\n// @section Interaction Options\nMap.mergeOptions({\n\t// @section Mouse wheel options\n\t// @option scrollWheelZoom: Boolean|String = true\n\t// Whether the map can be zoomed by using the mouse wheel. If passed `'center'`,\n\t// it will zoom to the center of the view regardless of where the mouse was.\n\tscrollWheelZoom: true,\n\n\t// @option wheelDebounceTime: Number = 40\n\t// Limits the rate at which a wheel can fire (in milliseconds). By default\n\t// user can't zoom via wheel more often than once per 40 ms.\n\twheelDebounceTime: 40,\n\n\t// @option wheelPxPerZoomLevel: Number = 60\n\t// How many scroll pixels (as reported by [L.DomEvent.getWheelDelta](#domevent-getwheeldelta))\n\t// mean a change of one full zoom level. Smaller values will make wheel-zooming\n\t// faster (and vice versa).\n\twheelPxPerZoomLevel: 60\n});\n\nexport var ScrollWheelZoom = Handler.extend({\n\taddHooks: function () {\n\t\tDomEvent.on(this._map._container, 'wheel', this._onWheelScroll, this);\n\n\t\tthis._delta = 0;\n\t},\n\n\tremoveHooks: function () {\n\t\tDomEvent.off(this._map._container, 'wheel', this._onWheelScroll, this);\n\t},\n\n\t_onWheelScroll: function (e) {\n\t\tvar delta = DomEvent.getWheelDelta(e);\n\n\t\tvar debounce = this._map.options.wheelDebounceTime;\n\n\t\tthis._delta += delta;\n\t\tthis._lastMousePos = this._map.mouseEventToContainerPoint(e);\n\n\t\tif (!this._startTime) {\n\t\t\tthis._startTime = +new Date();\n\t\t}\n\n\t\tvar left = Math.max(debounce - (+new Date() - this._startTime), 0);\n\n\t\tclearTimeout(this._timer);\n\t\tthis._timer = setTimeout(Util.bind(this._performZoom, this), left);\n\n\t\tDomEvent.stop(e);\n\t},\n\n\t_performZoom: function () {\n\t\tvar map = this._map,\n\t\t    zoom = map.getZoom(),\n\t\t    snap = this._map.options.zoomSnap || 0;\n\n\t\tmap._stop(); // stop panning and fly animations if any\n\n\t\t// map the delta with a sigmoid function to -4..4 range leaning on -1..1\n\t\tvar d2 = this._delta / (this._map.options.wheelPxPerZoomLevel * 4),\n\t\t    d3 = 4 * Math.log(2 / (1 + Math.exp(-Math.abs(d2)))) / Math.LN2,\n\t\t    d4 = snap ? Math.ceil(d3 / snap) * snap : d3,\n\t\t    delta = map._limitZoom(zoom + (this._delta > 0 ? d4 : -d4)) - zoom;\n\n\t\tthis._delta = 0;\n\t\tthis._startTime = null;\n\n\t\tif (!delta) { return; }\n\n\t\tif (map.options.scrollWheelZoom === 'center') {\n\t\t\tmap.setZoom(zoom + delta);\n\t\t} else {\n\t\t\tmap.setZoomAround(this._lastMousePos, zoom + delta);\n\t\t}\n\t}\n});\n\n// @section Handlers\n// @property scrollWheelZoom: Handler\n// Scroll wheel zoom handler.\nMap.addInitHook('addHandler', 'scrollWheelZoom', ScrollWheelZoom);\n", "import {Map} from '../Map';\nimport {Handler} from '../../core/Handler';\nimport * as DomEvent from '../../dom/DomEvent';\nimport {Point} from '../../geometry/Point';\nimport * as Util from '../../core/Util';\nimport Browser from '../../core/Browser';\n\n/*\n * L.Map.TapHold is used to simulate `contextmenu` event on long hold,\n * which otherwise is not fired by mobile Safari.\n */\n\nvar tapHoldDelay = 600;\n\n// @namespace Map\n// @section Interaction Options\nMap.mergeOptions({\n\t// @section Touch interaction options\n\t// @option tapHold: Boolean\n\t// Enables simulation of `contextmenu` event, default is `true` for mobile Safari.\n\ttapHold: Browser.touchNative && Browser.safari && Browser.mobile,\n\n\t// @option tapTolerance: Number = 15\n\t// The max number of pixels a user can shift his finger during touch\n\t// for it to be considered a valid tap.\n\ttapTolerance: 15\n});\n\nexport var TapHold = Handler.extend({\n\taddHooks: function () {\n\t\tDomEvent.on(this._map._container, 'touchstart', this._onDown, this);\n\t},\n\n\tremoveHooks: function () {\n\t\tDomEvent.off(this._map._container, 'touchstart', this._onDown, this);\n\t},\n\n\t_onDown: function (e) {\n\t\tclearTimeout(this._holdTimeout);\n\t\tif (e.touches.length !== 1) { return; }\n\n\t\tvar first = e.touches[0];\n\t\tthis._startPos = this._newPos = new Point(first.clientX, first.clientY);\n\n\t\tthis._holdTimeout = setTimeout(Util.bind(function () {\n\t\t\tthis._cancel();\n\t\t\tif (!this._isTapValid()) { return; }\n\n\t\t\t// prevent simulated mouse events https://w3c.github.io/touch-events/#mouse-events\n\t\t\tDomEvent.on(document, 'touchend', DomEvent.preventDefault);\n\t\t\tDomEvent.on(document, 'touchend touchcancel', this._cancelClickPrevent);\n\t\t\tthis._simulateEvent('contextmenu', first);\n\t\t}, this), tapHoldDelay);\n\n\t\tDomEvent.on(document, 'touchend touchcancel contextmenu', this._cancel, this);\n\t\tDomEvent.on(document, 'touchmove', this._onMove, this);\n\t},\n\n\t_cancelClickPrevent: function cancelClickPrevent() {\n\t\tDomEvent.off(document, 'touchend', DomEvent.preventDefault);\n\t\tDomEvent.off(document, 'touchend touchcancel', cancelClickPrevent);\n\t},\n\n\t_cancel: function () {\n\t\tclearTimeout(this._holdTimeout);\n\t\tDomEvent.off(document, 'touchend touchcancel contextmenu', this._cancel, this);\n\t\tDomEvent.off(document, 'touchmove', this._onMove, this);\n\t},\n\n\t_onMove: function (e) {\n\t\tvar first = e.touches[0];\n\t\tthis._newPos = new Point(first.clientX, first.clientY);\n\t},\n\n\t_isTapValid: function () {\n\t\treturn this._newPos.distanceTo(this._startPos) <= this._map.options.tapTolerance;\n\t},\n\n\t_simulateEvent: function (type, e) {\n\t\tvar simulatedEvent = new MouseEvent(type, {\n\t\t\tbubbles: true,\n\t\t\tcancelable: true,\n\t\t\tview: window,\n\t\t\t// detail: 1,\n\t\t\tscreenX: e.screenX,\n\t\t\tscreenY: e.screenY,\n\t\t\tclientX: e.clientX,\n\t\t\tclientY: e.clientY,\n\t\t\t// button: 2,\n\t\t\t// buttons: 2\n\t\t});\n\n\t\tsimulatedEvent._simulated = true;\n\n\t\te.target.dispatchEvent(simulatedEvent);\n\t}\n});\n\n// @section Handlers\n// @property tapHold: Handler\n// Long tap handler to simulate `contextmenu` event (useful in mobile Safari).\nMap.addInitHook('addHandler', 'tapHold', TapHold);\n", "import {Map} from '../Map';\nimport {Handler} from '../../core/Handler';\nimport * as DomEvent from '../../dom/DomEvent';\nimport * as Util from '../../core/Util';\nimport * as DomUtil from '../../dom/DomUtil';\nimport Browser from '../../core/Browser';\n\n/*\n * L.Handler.TouchZoom is used by L.Map to add pinch zoom on supported mobile browsers.\n */\n\n// @namespace Map\n// @section Interaction Options\nMap.mergeOptions({\n\t// @section Touch interaction options\n\t// @option touchZoom: Boolean|String = *\n\t// Whether the map can be zoomed by touch-dragging with two fingers. If\n\t// passed `'center'`, it will zoom to the center of the view regardless of\n\t// where the touch events (fingers) were. Enabled for touch-capable web\n\t// browsers.\n\ttouchZoom: Browser.touch,\n\n\t// @option bounceAtZoomLimits: Boolean = true\n\t// Set it to false if you don't want the map to zoom beyond min/max zoom\n\t// and then bounce back when pinch-zooming.\n\tbounceAtZoomLimits: true\n});\n\nexport var TouchZoom = Handler.extend({\n\taddHooks: function () {\n\t\tDomUtil.addClass(this._map._container, 'leaflet-touch-zoom');\n\t\tDomEvent.on(this._map._container, 'touchstart', this._onTouchStart, this);\n\t},\n\n\tremoveHooks: function () {\n\t\tDomUtil.removeClass(this._map._container, 'leaflet-touch-zoom');\n\t\tDomEvent.off(this._map._container, 'touchstart', this._onTouchStart, this);\n\t},\n\n\t_onTouchStart: function (e) {\n\t\tvar map = this._map;\n\t\tif (!e.touches || e.touches.length !== 2 || map._animatingZoom || this._zooming) { return; }\n\n\t\tvar p1 = map.mouseEventToContainerPoint(e.touches[0]),\n\t\t    p2 = map.mouseEventToContainerPoint(e.touches[1]);\n\n\t\tthis._centerPoint = map.getSize()._divideBy(2);\n\t\tthis._startLatLng = map.containerPointToLatLng(this._centerPoint);\n\t\tif (map.options.touchZoom !== 'center') {\n\t\t\tthis._pinchStartLatLng = map.containerPointToLatLng(p1.add(p2)._divideBy(2));\n\t\t}\n\n\t\tthis._startDist = p1.distanceTo(p2);\n\t\tthis._startZoom = map.getZoom();\n\n\t\tthis._moved = false;\n\t\tthis._zooming = true;\n\n\t\tmap._stop();\n\n\t\tDomEvent.on(document, 'touchmove', this._onTouchMove, this);\n\t\tDomEvent.on(document, 'touchend touchcancel', this._onTouchEnd, this);\n\n\t\tDomEvent.preventDefault(e);\n\t},\n\n\t_onTouchMove: function (e) {\n\t\tif (!e.touches || e.touches.length !== 2 || !this._zooming) { return; }\n\n\t\tvar map = this._map,\n\t\t    p1 = map.mouseEventToContainerPoint(e.touches[0]),\n\t\t    p2 = map.mouseEventToContainerPoint(e.touches[1]),\n\t\t    scale = p1.distanceTo(p2) / this._startDist;\n\n\t\tthis._zoom = map.getScaleZoom(scale, this._startZoom);\n\n\t\tif (!map.options.bounceAtZoomLimits && (\n\t\t\t(this._zoom < map.getMinZoom() && scale < 1) ||\n\t\t\t(this._zoom > map.getMaxZoom() && scale > 1))) {\n\t\t\tthis._zoom = map._limitZoom(this._zoom);\n\t\t}\n\n\t\tif (map.options.touchZoom === 'center') {\n\t\t\tthis._center = this._startLatLng;\n\t\t\tif (scale === 1) { return; }\n\t\t} else {\n\t\t\t// Get delta from pinch to center, so centerLatLng is delta applied to initial pinchLatLng\n\t\t\tvar delta = p1._add(p2)._divideBy(2)._subtract(this._centerPoint);\n\t\t\tif (scale === 1 && delta.x === 0 && delta.y === 0) { return; }\n\t\t\tthis._center = map.unproject(map.project(this._pinchStartLatLng, this._zoom).subtract(delta), this._zoom);\n\t\t}\n\n\t\tif (!this._moved) {\n\t\t\tmap._moveStart(true, false);\n\t\t\tthis._moved = true;\n\t\t}\n\n\t\tUtil.cancelAnimFrame(this._animRequest);\n\n\t\tvar moveFn = Util.bind(map._move, map, this._center, this._zoom, {pinch: true, round: false}, undefined);\n\t\tthis._animRequest = Util.requestAnimFrame(moveFn, this, true);\n\n\t\tDomEvent.preventDefault(e);\n\t},\n\n\t_onTouchEnd: function () {\n\t\tif (!this._moved || !this._zooming) {\n\t\t\tthis._zooming = false;\n\t\t\treturn;\n\t\t}\n\n\t\tthis._zooming = false;\n\t\tUtil.cancelAnimFrame(this._animRequest);\n\n\t\tDomEvent.off(document, 'touchmove', this._onTouchMove, this);\n\t\tDomEvent.off(document, 'touchend touchcancel', this._onTouchEnd, this);\n\n\t\t// Pinch updates GridLayers' levels only when zoomSnap is off, so zoomSnap becomes noUpdate.\n\t\tif (this._map.options.zoomAnimation) {\n\t\t\tthis._map._animateZoom(this._center, this._map._limitZoom(this._zoom), true, this._map.options.zoomSnap);\n\t\t} else {\n\t\t\tthis._map._resetView(this._center, this._map._limitZoom(this._zoom));\n\t\t}\n\t}\n});\n\n// @section Handlers\n// @property touchZoom: Handler\n// Touch zoom handler.\nMap.addInitHook('addHandler', 'touchZoom', TouchZoom);\n", "import {Map} from './Map';\nimport {BoxZoom} from './handler/Map.BoxZoom';\nMap.BoxZoom = BoxZoom;\nimport {DoubleClickZoom} from './handler/Map.DoubleClickZoom';\nMap.DoubleClickZoom = DoubleClickZoom;\nimport {Drag} from './handler/Map.Drag';\nMap.Drag = Drag;\nimport {Keyboard} from './handler/Map.Keyboard';\nMap.Keyboard = Keyboard;\nimport {ScrollWheelZoom} from './handler/Map.ScrollWheelZoom';\nMap.ScrollWheelZoom = ScrollWheelZoom;\nimport {TapHold} from './handler/Map.TapHold';\nMap.TapHold = TapHold;\nimport {TouchZoom} from './handler/Map.TouchZoom';\nMap.TouchZoom = TouchZoom;\n\nexport {Map, createMap as map} from './Map';\n", "//! moment.js\n//! version : 2.29.4\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n    typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n    typeof define === 'function' && define.amd ? define(factory) :\n    global.moment = factory()\n}(this, (function () { 'use strict';\n\n    var hookCallback;\n\n    function hooks() {\n        return hookCallback.apply(null, arguments);\n    }\n\n    // This is done to register the method called with moment()\n    // without creating circular dependencies.\n    function setHookCallback(callback) {\n        hookCallback = callback;\n    }\n\n    function isArray(input) {\n        return (\n            input instanceof Array ||\n            Object.prototype.toString.call(input) === '[object Array]'\n        );\n    }\n\n    function isObject(input) {\n        // IE8 will treat undefined and null as object if it wasn't for\n        // input != null\n        return (\n            input != null &&\n            Object.prototype.toString.call(input) === '[object Object]'\n        );\n    }\n\n    function hasOwnProp(a, b) {\n        return Object.prototype.hasOwnProperty.call(a, b);\n    }\n\n    function isObjectEmpty(obj) {\n        if (Object.getOwnPropertyNames) {\n            return Object.getOwnPropertyNames(obj).length === 0;\n        } else {\n            var k;\n            for (k in obj) {\n                if (hasOwnProp(obj, k)) {\n                    return false;\n                }\n            }\n            return true;\n        }\n    }\n\n    function isUndefined(input) {\n        return input === void 0;\n    }\n\n    function isNumber(input) {\n        return (\n            typeof input === 'number' ||\n            Object.prototype.toString.call(input) === '[object Number]'\n        );\n    }\n\n    function isDate(input) {\n        return (\n            input instanceof Date ||\n            Object.prototype.toString.call(input) === '[object Date]'\n        );\n    }\n\n    function map(arr, fn) {\n        var res = [],\n            i,\n            arrLen = arr.length;\n        for (i = 0; i < arrLen; ++i) {\n            res.push(fn(arr[i], i));\n        }\n        return res;\n    }\n\n    function extend(a, b) {\n        for (var i in b) {\n            if (hasOwnProp(b, i)) {\n                a[i] = b[i];\n            }\n        }\n\n        if (hasOwnProp(b, 'toString')) {\n            a.toString = b.toString;\n        }\n\n        if (hasOwnProp(b, 'valueOf')) {\n            a.valueOf = b.valueOf;\n        }\n\n        return a;\n    }\n\n    function createUTC(input, format, locale, strict) {\n        return createLocalOrUTC(input, format, locale, strict, true).utc();\n    }\n\n    function defaultParsingFlags() {\n        // We need to deep clone this object.\n        return {\n            empty: false,\n            unusedTokens: [],\n            unusedInput: [],\n            overflow: -2,\n            charsLeftOver: 0,\n            nullInput: false,\n            invalidEra: null,\n            invalidMonth: null,\n            invalidFormat: false,\n            userInvalidated: false,\n            iso: false,\n            parsedDateParts: [],\n            era: null,\n            meridiem: null,\n            rfc2822: false,\n            weekdayMismatch: false,\n        };\n    }\n\n    function getParsingFlags(m) {\n        if (m._pf == null) {\n            m._pf = defaultParsingFlags();\n        }\n        return m._pf;\n    }\n\n    var some;\n    if (Array.prototype.some) {\n        some = Array.prototype.some;\n    } else {\n        some = function (fun) {\n            var t = Object(this),\n                len = t.length >>> 0,\n                i;\n\n            for (i = 0; i < len; i++) {\n                if (i in t && fun.call(this, t[i], i, t)) {\n                    return true;\n                }\n            }\n\n            return false;\n        };\n    }\n\n    function isValid(m) {\n        if (m._isValid == null) {\n            var flags = getParsingFlags(m),\n                parsedParts = some.call(flags.parsedDateParts, function (i) {\n                    return i != null;\n                }),\n                isNowValid =\n                    !isNaN(m._d.getTime()) &&\n                    flags.overflow < 0 &&\n                    !flags.empty &&\n                    !flags.invalidEra &&\n                    !flags.invalidMonth &&\n                    !flags.invalidWeekday &&\n                    !flags.weekdayMismatch &&\n                    !flags.nullInput &&\n                    !flags.invalidFormat &&\n                    !flags.userInvalidated &&\n                    (!flags.meridiem || (flags.meridiem && parsedParts));\n\n            if (m._strict) {\n                isNowValid =\n                    isNowValid &&\n                    flags.charsLeftOver === 0 &&\n                    flags.unusedTokens.length === 0 &&\n                    flags.bigHour === undefined;\n            }\n\n            if (Object.isFrozen == null || !Object.isFrozen(m)) {\n                m._isValid = isNowValid;\n            } else {\n                return isNowValid;\n            }\n        }\n        return m._isValid;\n    }\n\n    function createInvalid(flags) {\n        var m = createUTC(NaN);\n        if (flags != null) {\n            extend(getParsingFlags(m), flags);\n        } else {\n            getParsingFlags(m).userInvalidated = true;\n        }\n\n        return m;\n    }\n\n    // Plugins that add properties should also add the key here (null value),\n    // so we can properly clone ourselves.\n    var momentProperties = (hooks.momentProperties = []),\n        updateInProgress = false;\n\n    function copyConfig(to, from) {\n        var i,\n            prop,\n            val,\n            momentPropertiesLen = momentProperties.length;\n\n        if (!isUndefined(from._isAMomentObject)) {\n            to._isAMomentObject = from._isAMomentObject;\n        }\n        if (!isUndefined(from._i)) {\n            to._i = from._i;\n        }\n        if (!isUndefined(from._f)) {\n            to._f = from._f;\n        }\n        if (!isUndefined(from._l)) {\n            to._l = from._l;\n        }\n        if (!isUndefined(from._strict)) {\n            to._strict = from._strict;\n        }\n        if (!isUndefined(from._tzm)) {\n            to._tzm = from._tzm;\n        }\n        if (!isUndefined(from._isUTC)) {\n            to._isUTC = from._isUTC;\n        }\n        if (!isUndefined(from._offset)) {\n            to._offset = from._offset;\n        }\n        if (!isUndefined(from._pf)) {\n            to._pf = getParsingFlags(from);\n        }\n        if (!isUndefined(from._locale)) {\n            to._locale = from._locale;\n        }\n\n        if (momentPropertiesLen > 0) {\n            for (i = 0; i < momentPropertiesLen; i++) {\n                prop = momentProperties[i];\n                val = from[prop];\n                if (!isUndefined(val)) {\n                    to[prop] = val;\n                }\n            }\n        }\n\n        return to;\n    }\n\n    // Moment prototype object\n    function Moment(config) {\n        copyConfig(this, config);\n        this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n        if (!this.isValid()) {\n            this._d = new Date(NaN);\n        }\n        // Prevent infinite loop in case updateOffset creates new moment\n        // objects.\n        if (updateInProgress === false) {\n            updateInProgress = true;\n            hooks.updateOffset(this);\n            updateInProgress = false;\n        }\n    }\n\n    function isMoment(obj) {\n        return (\n            obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n        );\n    }\n\n    function warn(msg) {\n        if (\n            hooks.suppressDeprecationWarnings === false &&\n            typeof console !== 'undefined' &&\n            console.warn\n        ) {\n            console.warn('Deprecation warning: ' + msg);\n        }\n    }\n\n    function deprecate(msg, fn) {\n        var firstTime = true;\n\n        return extend(function () {\n            if (hooks.deprecationHandler != null) {\n                hooks.deprecationHandler(null, msg);\n            }\n            if (firstTime) {\n                var args = [],\n                    arg,\n                    i,\n                    key,\n                    argLen = arguments.length;\n                for (i = 0; i < argLen; i++) {\n                    arg = '';\n                    if (typeof arguments[i] === 'object') {\n                        arg += '\\n[' + i + '] ';\n                        for (key in arguments[0]) {\n                            if (hasOwnProp(arguments[0], key)) {\n                                arg += key + ': ' + arguments[0][key] + ', ';\n                            }\n                        }\n                        arg = arg.slice(0, -2); // Remove trailing comma and space\n                    } else {\n                        arg = arguments[i];\n                    }\n                    args.push(arg);\n                }\n                warn(\n                    msg +\n                        '\\nArguments: ' +\n                        Array.prototype.slice.call(args).join('') +\n                        '\\n' +\n                        new Error().stack\n                );\n                firstTime = false;\n            }\n            return fn.apply(this, arguments);\n        }, fn);\n    }\n\n    var deprecations = {};\n\n    function deprecateSimple(name, msg) {\n        if (hooks.deprecationHandler != null) {\n            hooks.deprecationHandler(name, msg);\n        }\n        if (!deprecations[name]) {\n            warn(msg);\n            deprecations[name] = true;\n        }\n    }\n\n    hooks.suppressDeprecationWarnings = false;\n    hooks.deprecationHandler = null;\n\n    function isFunction(input) {\n        return (\n            (typeof Function !== 'undefined' && input instanceof Function) ||\n            Object.prototype.toString.call(input) === '[object Function]'\n        );\n    }\n\n    function set(config) {\n        var prop, i;\n        for (i in config) {\n            if (hasOwnProp(config, i)) {\n                prop = config[i];\n                if (isFunction(prop)) {\n                    this[i] = prop;\n                } else {\n                    this['_' + i] = prop;\n                }\n            }\n        }\n        this._config = config;\n        // Lenient ordinal parsing accepts just a number in addition to\n        // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n        // TODO: Remove \"ordinalParse\" fallback in next major release.\n        this._dayOfMonthOrdinalParseLenient = new RegExp(\n            (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n                '|' +\n                /\\d{1,2}/.source\n        );\n    }\n\n    function mergeConfigs(parentConfig, childConfig) {\n        var res = extend({}, parentConfig),\n            prop;\n        for (prop in childConfig) {\n            if (hasOwnProp(childConfig, prop)) {\n                if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n                    res[prop] = {};\n                    extend(res[prop], parentConfig[prop]);\n                    extend(res[prop], childConfig[prop]);\n                } else if (childConfig[prop] != null) {\n                    res[prop] = childConfig[prop];\n                } else {\n                    delete res[prop];\n                }\n            }\n        }\n        for (prop in parentConfig) {\n            if (\n                hasOwnProp(parentConfig, prop) &&\n                !hasOwnProp(childConfig, prop) &&\n                isObject(parentConfig[prop])\n            ) {\n                // make sure changes to properties don't modify parent config\n                res[prop] = extend({}, res[prop]);\n            }\n        }\n        return res;\n    }\n\n    function Locale(config) {\n        if (config != null) {\n            this.set(config);\n        }\n    }\n\n    var keys;\n\n    if (Object.keys) {\n        keys = Object.keys;\n    } else {\n        keys = function (obj) {\n            var i,\n                res = [];\n            for (i in obj) {\n                if (hasOwnProp(obj, i)) {\n                    res.push(i);\n                }\n            }\n            return res;\n        };\n    }\n\n    var defaultCalendar = {\n        sameDay: '[Today at] LT',\n        nextDay: '[Tomorrow at] LT',\n        nextWeek: 'dddd [at] LT',\n        lastDay: '[Yesterday at] LT',\n        lastWeek: '[Last] dddd [at] LT',\n        sameElse: 'L',\n    };\n\n    function calendar(key, mom, now) {\n        var output = this._calendar[key] || this._calendar['sameElse'];\n        return isFunction(output) ? output.call(mom, now) : output;\n    }\n\n    function zeroFill(number, targetLength, forceSign) {\n        var absNumber = '' + Math.abs(number),\n            zerosToFill = targetLength - absNumber.length,\n            sign = number >= 0;\n        return (\n            (sign ? (forceSign ? '+' : '') : '-') +\n            Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n            absNumber\n        );\n    }\n\n    var formattingTokens =\n            /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n        localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n        formatFunctions = {},\n        formatTokenFunctions = {};\n\n    // token:    'M'\n    // padded:   ['MM', 2]\n    // ordinal:  'Mo'\n    // callback: function () { this.month() + 1 }\n    function addFormatToken(token, padded, ordinal, callback) {\n        var func = callback;\n        if (typeof callback === 'string') {\n            func = function () {\n                return this[callback]();\n            };\n        }\n        if (token) {\n            formatTokenFunctions[token] = func;\n        }\n        if (padded) {\n            formatTokenFunctions[padded[0]] = function () {\n                return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n            };\n        }\n        if (ordinal) {\n            formatTokenFunctions[ordinal] = function () {\n                return this.localeData().ordinal(\n                    func.apply(this, arguments),\n                    token\n                );\n            };\n        }\n    }\n\n    function removeFormattingTokens(input) {\n        if (input.match(/\\[[\\s\\S]/)) {\n            return input.replace(/^\\[|\\]$/g, '');\n        }\n        return input.replace(/\\\\/g, '');\n    }\n\n    function makeFormatFunction(format) {\n        var array = format.match(formattingTokens),\n            i,\n            length;\n\n        for (i = 0, length = array.length; i < length; i++) {\n            if (formatTokenFunctions[array[i]]) {\n                array[i] = formatTokenFunctions[array[i]];\n            } else {\n                array[i] = removeFormattingTokens(array[i]);\n            }\n        }\n\n        return function (mom) {\n            var output = '',\n                i;\n            for (i = 0; i < length; i++) {\n                output += isFunction(array[i])\n                    ? array[i].call(mom, format)\n                    : array[i];\n            }\n            return output;\n        };\n    }\n\n    // format date using native date object\n    function formatMoment(m, format) {\n        if (!m.isValid()) {\n            return m.localeData().invalidDate();\n        }\n\n        format = expandFormat(format, m.localeData());\n        formatFunctions[format] =\n            formatFunctions[format] || makeFormatFunction(format);\n\n        return formatFunctions[format](m);\n    }\n\n    function expandFormat(format, locale) {\n        var i = 5;\n\n        function replaceLongDateFormatTokens(input) {\n            return locale.longDateFormat(input) || input;\n        }\n\n        localFormattingTokens.lastIndex = 0;\n        while (i >= 0 && localFormattingTokens.test(format)) {\n            format = format.replace(\n                localFormattingTokens,\n                replaceLongDateFormatTokens\n            );\n            localFormattingTokens.lastIndex = 0;\n            i -= 1;\n        }\n\n        return format;\n    }\n\n    var defaultLongDateFormat = {\n        LTS: 'h:mm:ss A',\n        LT: 'h:mm A',\n        L: 'MM/DD/YYYY',\n        LL: 'MMMM D, YYYY',\n        LLL: 'MMMM D, YYYY h:mm A',\n        LLLL: 'dddd, MMMM D, YYYY h:mm A',\n    };\n\n    function longDateFormat(key) {\n        var format = this._longDateFormat[key],\n            formatUpper = this._longDateFormat[key.toUpperCase()];\n\n        if (format || !formatUpper) {\n            return format;\n        }\n\n        this._longDateFormat[key] = formatUpper\n            .match(formattingTokens)\n            .map(function (tok) {\n                if (\n                    tok === 'MMMM' ||\n                    tok === 'MM' ||\n                    tok === 'DD' ||\n                    tok === 'dddd'\n                ) {\n                    return tok.slice(1);\n                }\n                return tok;\n            })\n            .join('');\n\n        return this._longDateFormat[key];\n    }\n\n    var defaultInvalidDate = 'Invalid date';\n\n    function invalidDate() {\n        return this._invalidDate;\n    }\n\n    var defaultOrdinal = '%d',\n        defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n    function ordinal(number) {\n        return this._ordinal.replace('%d', number);\n    }\n\n    var defaultRelativeTime = {\n        future: 'in %s',\n        past: '%s ago',\n        s: 'a few seconds',\n        ss: '%d seconds',\n        m: 'a minute',\n        mm: '%d minutes',\n        h: 'an hour',\n        hh: '%d hours',\n        d: 'a day',\n        dd: '%d days',\n        w: 'a week',\n        ww: '%d weeks',\n        M: 'a month',\n        MM: '%d months',\n        y: 'a year',\n        yy: '%d years',\n    };\n\n    function relativeTime(number, withoutSuffix, string, isFuture) {\n        var output = this._relativeTime[string];\n        return isFunction(output)\n            ? output(number, withoutSuffix, string, isFuture)\n            : output.replace(/%d/i, number);\n    }\n\n    function pastFuture(diff, output) {\n        var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n        return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n    }\n\n    var aliases = {};\n\n    function addUnitAlias(unit, shorthand) {\n        var lowerCase = unit.toLowerCase();\n        aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n    }\n\n    function normalizeUnits(units) {\n        return typeof units === 'string'\n            ? aliases[units] || aliases[units.toLowerCase()]\n            : undefined;\n    }\n\n    function normalizeObjectUnits(inputObject) {\n        var normalizedInput = {},\n            normalizedProp,\n            prop;\n\n        for (prop in inputObject) {\n            if (hasOwnProp(inputObject, prop)) {\n                normalizedProp = normalizeUnits(prop);\n                if (normalizedProp) {\n                    normalizedInput[normalizedProp] = inputObject[prop];\n                }\n            }\n        }\n\n        return normalizedInput;\n    }\n\n    var priorities = {};\n\n    function addUnitPriority(unit, priority) {\n        priorities[unit] = priority;\n    }\n\n    function getPrioritizedUnits(unitsObj) {\n        var units = [],\n            u;\n        for (u in unitsObj) {\n            if (hasOwnProp(unitsObj, u)) {\n                units.push({ unit: u, priority: priorities[u] });\n            }\n        }\n        units.sort(function (a, b) {\n            return a.priority - b.priority;\n        });\n        return units;\n    }\n\n    function isLeapYear(year) {\n        return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n    }\n\n    function absFloor(number) {\n        if (number < 0) {\n            // -0 -> 0\n            return Math.ceil(number) || 0;\n        } else {\n            return Math.floor(number);\n        }\n    }\n\n    function toInt(argumentForCoercion) {\n        var coercedNumber = +argumentForCoercion,\n            value = 0;\n\n        if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n            value = absFloor(coercedNumber);\n        }\n\n        return value;\n    }\n\n    function makeGetSet(unit, keepTime) {\n        return function (value) {\n            if (value != null) {\n                set$1(this, unit, value);\n                hooks.updateOffset(this, keepTime);\n                return this;\n            } else {\n                return get(this, unit);\n            }\n        };\n    }\n\n    function get(mom, unit) {\n        return mom.isValid()\n            ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]()\n            : NaN;\n    }\n\n    function set$1(mom, unit, value) {\n        if (mom.isValid() && !isNaN(value)) {\n            if (\n                unit === 'FullYear' &&\n                isLeapYear(mom.year()) &&\n                mom.month() === 1 &&\n                mom.date() === 29\n            ) {\n                value = toInt(value);\n                mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](\n                    value,\n                    mom.month(),\n                    daysInMonth(value, mom.month())\n                );\n            } else {\n                mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n            }\n        }\n    }\n\n    // MOMENTS\n\n    function stringGet(units) {\n        units = normalizeUnits(units);\n        if (isFunction(this[units])) {\n            return this[units]();\n        }\n        return this;\n    }\n\n    function stringSet(units, value) {\n        if (typeof units === 'object') {\n            units = normalizeObjectUnits(units);\n            var prioritized = getPrioritizedUnits(units),\n                i,\n                prioritizedLen = prioritized.length;\n            for (i = 0; i < prioritizedLen; i++) {\n                this[prioritized[i].unit](units[prioritized[i].unit]);\n            }\n        } else {\n            units = normalizeUnits(units);\n            if (isFunction(this[units])) {\n                return this[units](value);\n            }\n        }\n        return this;\n    }\n\n    var match1 = /\\d/, //       0 - 9\n        match2 = /\\d\\d/, //      00 - 99\n        match3 = /\\d{3}/, //     000 - 999\n        match4 = /\\d{4}/, //    0000 - 9999\n        match6 = /[+-]?\\d{6}/, // -999999 - 999999\n        match1to2 = /\\d\\d?/, //       0 - 99\n        match3to4 = /\\d\\d\\d\\d?/, //     999 - 9999\n        match5to6 = /\\d\\d\\d\\d\\d\\d?/, //   99999 - 999999\n        match1to3 = /\\d{1,3}/, //       0 - 999\n        match1to4 = /\\d{1,4}/, //       0 - 9999\n        match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n        matchUnsigned = /\\d+/, //       0 - inf\n        matchSigned = /[+-]?\\d+/, //    -inf - inf\n        matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n        matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n        matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n        // any word (or two) characters or numbers including two/three word month in arabic.\n        // includes scottish gaelic two word and hyphenated months\n        matchWord =\n            /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n        regexes;\n\n    regexes = {};\n\n    function addRegexToken(token, regex, strictRegex) {\n        regexes[token] = isFunction(regex)\n            ? regex\n            : function (isStrict, localeData) {\n                  return isStrict && strictRegex ? strictRegex : regex;\n              };\n    }\n\n    function getParseRegexForToken(token, config) {\n        if (!hasOwnProp(regexes, token)) {\n            return new RegExp(unescapeFormat(token));\n        }\n\n        return regexes[token](config._strict, config._locale);\n    }\n\n    // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n    function unescapeFormat(s) {\n        return regexEscape(\n            s\n                .replace('\\\\', '')\n                .replace(\n                    /\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g,\n                    function (matched, p1, p2, p3, p4) {\n                        return p1 || p2 || p3 || p4;\n                    }\n                )\n        );\n    }\n\n    function regexEscape(s) {\n        return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n    }\n\n    var tokens = {};\n\n    function addParseToken(token, callback) {\n        var i,\n            func = callback,\n            tokenLen;\n        if (typeof token === 'string') {\n            token = [token];\n        }\n        if (isNumber(callback)) {\n            func = function (input, array) {\n                array[callback] = toInt(input);\n            };\n        }\n        tokenLen = token.length;\n        for (i = 0; i < tokenLen; i++) {\n            tokens[token[i]] = func;\n        }\n    }\n\n    function addWeekParseToken(token, callback) {\n        addParseToken(token, function (input, array, config, token) {\n            config._w = config._w || {};\n            callback(input, config._w, config, token);\n        });\n    }\n\n    function addTimeToArrayFromToken(token, input, config) {\n        if (input != null && hasOwnProp(tokens, token)) {\n            tokens[token](input, config._a, config, token);\n        }\n    }\n\n    var YEAR = 0,\n        MONTH = 1,\n        DATE = 2,\n        HOUR = 3,\n        MINUTE = 4,\n        SECOND = 5,\n        MILLISECOND = 6,\n        WEEK = 7,\n        WEEKDAY = 8;\n\n    function mod(n, x) {\n        return ((n % x) + x) % x;\n    }\n\n    var indexOf;\n\n    if (Array.prototype.indexOf) {\n        indexOf = Array.prototype.indexOf;\n    } else {\n        indexOf = function (o) {\n            // I know\n            var i;\n            for (i = 0; i < this.length; ++i) {\n                if (this[i] === o) {\n                    return i;\n                }\n            }\n            return -1;\n        };\n    }\n\n    function daysInMonth(year, month) {\n        if (isNaN(year) || isNaN(month)) {\n            return NaN;\n        }\n        var modMonth = mod(month, 12);\n        year += (month - modMonth) / 12;\n        return modMonth === 1\n            ? isLeapYear(year)\n                ? 29\n                : 28\n            : 31 - ((modMonth % 7) % 2);\n    }\n\n    // FORMATTING\n\n    addFormatToken('M', ['MM', 2], 'Mo', function () {\n        return this.month() + 1;\n    });\n\n    addFormatToken('MMM', 0, 0, function (format) {\n        return this.localeData().monthsShort(this, format);\n    });\n\n    addFormatToken('MMMM', 0, 0, function (format) {\n        return this.localeData().months(this, format);\n    });\n\n    // ALIASES\n\n    addUnitAlias('month', 'M');\n\n    // PRIORITY\n\n    addUnitPriority('month', 8);\n\n    // PARSING\n\n    addRegexToken('M', match1to2);\n    addRegexToken('MM', match1to2, match2);\n    addRegexToken('MMM', function (isStrict, locale) {\n        return locale.monthsShortRegex(isStrict);\n    });\n    addRegexToken('MMMM', function (isStrict, locale) {\n        return locale.monthsRegex(isStrict);\n    });\n\n    addParseToken(['M', 'MM'], function (input, array) {\n        array[MONTH] = toInt(input) - 1;\n    });\n\n    addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n        var month = config._locale.monthsParse(input, token, config._strict);\n        // if we didn't find a month name, mark the date as invalid.\n        if (month != null) {\n            array[MONTH] = month;\n        } else {\n            getParsingFlags(config).invalidMonth = input;\n        }\n    });\n\n    // LOCALES\n\n    var defaultLocaleMonths =\n            'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n                '_'\n            ),\n        defaultLocaleMonthsShort =\n            'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n        defaultMonthsShortRegex = matchWord,\n        defaultMonthsRegex = matchWord;\n\n    function localeMonths(m, format) {\n        if (!m) {\n            return isArray(this._months)\n                ? this._months\n                : this._months['standalone'];\n        }\n        return isArray(this._months)\n            ? this._months[m.month()]\n            : this._months[\n                  (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n                      ? 'format'\n                      : 'standalone'\n              ][m.month()];\n    }\n\n    function localeMonthsShort(m, format) {\n        if (!m) {\n            return isArray(this._monthsShort)\n                ? this._monthsShort\n                : this._monthsShort['standalone'];\n        }\n        return isArray(this._monthsShort)\n            ? this._monthsShort[m.month()]\n            : this._monthsShort[\n                  MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n              ][m.month()];\n    }\n\n    function handleStrictParse(monthName, format, strict) {\n        var i,\n            ii,\n            mom,\n            llc = monthName.toLocaleLowerCase();\n        if (!this._monthsParse) {\n            // this is not used\n            this._monthsParse = [];\n            this._longMonthsParse = [];\n            this._shortMonthsParse = [];\n            for (i = 0; i < 12; ++i) {\n                mom = createUTC([2000, i]);\n                this._shortMonthsParse[i] = this.monthsShort(\n                    mom,\n                    ''\n                ).toLocaleLowerCase();\n                this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n            }\n        }\n\n        if (strict) {\n            if (format === 'MMM') {\n                ii = indexOf.call(this._shortMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._longMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        } else {\n            if (format === 'MMM') {\n                ii = indexOf.call(this._shortMonthsParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._longMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._longMonthsParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._shortMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        }\n    }\n\n    function localeMonthsParse(monthName, format, strict) {\n        var i, mom, regex;\n\n        if (this._monthsParseExact) {\n            return handleStrictParse.call(this, monthName, format, strict);\n        }\n\n        if (!this._monthsParse) {\n            this._monthsParse = [];\n            this._longMonthsParse = [];\n            this._shortMonthsParse = [];\n        }\n\n        // TODO: add sorting\n        // Sorting makes sure if one month (or abbr) is a prefix of another\n        // see sorting in computeMonthsParse\n        for (i = 0; i < 12; i++) {\n            // make the regex if we don't have it already\n            mom = createUTC([2000, i]);\n            if (strict && !this._longMonthsParse[i]) {\n                this._longMonthsParse[i] = new RegExp(\n                    '^' + this.months(mom, '').replace('.', '') + '$',\n                    'i'\n                );\n                this._shortMonthsParse[i] = new RegExp(\n                    '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n                    'i'\n                );\n            }\n            if (!strict && !this._monthsParse[i]) {\n                regex =\n                    '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n                this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n            }\n            // test the regex\n            if (\n                strict &&\n                format === 'MMMM' &&\n                this._longMonthsParse[i].test(monthName)\n            ) {\n                return i;\n            } else if (\n                strict &&\n                format === 'MMM' &&\n                this._shortMonthsParse[i].test(monthName)\n            ) {\n                return i;\n            } else if (!strict && this._monthsParse[i].test(monthName)) {\n                return i;\n            }\n        }\n    }\n\n    // MOMENTS\n\n    function setMonth(mom, value) {\n        var dayOfMonth;\n\n        if (!mom.isValid()) {\n            // No op\n            return mom;\n        }\n\n        if (typeof value === 'string') {\n            if (/^\\d+$/.test(value)) {\n                value = toInt(value);\n            } else {\n                value = mom.localeData().monthsParse(value);\n                // TODO: Another silent failure?\n                if (!isNumber(value)) {\n                    return mom;\n                }\n            }\n        }\n\n        dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n        mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n        return mom;\n    }\n\n    function getSetMonth(value) {\n        if (value != null) {\n            setMonth(this, value);\n            hooks.updateOffset(this, true);\n            return this;\n        } else {\n            return get(this, 'Month');\n        }\n    }\n\n    function getDaysInMonth() {\n        return daysInMonth(this.year(), this.month());\n    }\n\n    function monthsShortRegex(isStrict) {\n        if (this._monthsParseExact) {\n            if (!hasOwnProp(this, '_monthsRegex')) {\n                computeMonthsParse.call(this);\n            }\n            if (isStrict) {\n                return this._monthsShortStrictRegex;\n            } else {\n                return this._monthsShortRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_monthsShortRegex')) {\n                this._monthsShortRegex = defaultMonthsShortRegex;\n            }\n            return this._monthsShortStrictRegex && isStrict\n                ? this._monthsShortStrictRegex\n                : this._monthsShortRegex;\n        }\n    }\n\n    function monthsRegex(isStrict) {\n        if (this._monthsParseExact) {\n            if (!hasOwnProp(this, '_monthsRegex')) {\n                computeMonthsParse.call(this);\n            }\n            if (isStrict) {\n                return this._monthsStrictRegex;\n            } else {\n                return this._monthsRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_monthsRegex')) {\n                this._monthsRegex = defaultMonthsRegex;\n            }\n            return this._monthsStrictRegex && isStrict\n                ? this._monthsStrictRegex\n                : this._monthsRegex;\n        }\n    }\n\n    function computeMonthsParse() {\n        function cmpLenRev(a, b) {\n            return b.length - a.length;\n        }\n\n        var shortPieces = [],\n            longPieces = [],\n            mixedPieces = [],\n            i,\n            mom;\n        for (i = 0; i < 12; i++) {\n            // make the regex if we don't have it already\n            mom = createUTC([2000, i]);\n            shortPieces.push(this.monthsShort(mom, ''));\n            longPieces.push(this.months(mom, ''));\n            mixedPieces.push(this.months(mom, ''));\n            mixedPieces.push(this.monthsShort(mom, ''));\n        }\n        // Sorting makes sure if one month (or abbr) is a prefix of another it\n        // will match the longer piece.\n        shortPieces.sort(cmpLenRev);\n        longPieces.sort(cmpLenRev);\n        mixedPieces.sort(cmpLenRev);\n        for (i = 0; i < 12; i++) {\n            shortPieces[i] = regexEscape(shortPieces[i]);\n            longPieces[i] = regexEscape(longPieces[i]);\n        }\n        for (i = 0; i < 24; i++) {\n            mixedPieces[i] = regexEscape(mixedPieces[i]);\n        }\n\n        this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n        this._monthsShortRegex = this._monthsRegex;\n        this._monthsStrictRegex = new RegExp(\n            '^(' + longPieces.join('|') + ')',\n            'i'\n        );\n        this._monthsShortStrictRegex = new RegExp(\n            '^(' + shortPieces.join('|') + ')',\n            'i'\n        );\n    }\n\n    // FORMATTING\n\n    addFormatToken('Y', 0, 0, function () {\n        var y = this.year();\n        return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n    });\n\n    addFormatToken(0, ['YY', 2], 0, function () {\n        return this.year() % 100;\n    });\n\n    addFormatToken(0, ['YYYY', 4], 0, 'year');\n    addFormatToken(0, ['YYYYY', 5], 0, 'year');\n    addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n    // ALIASES\n\n    addUnitAlias('year', 'y');\n\n    // PRIORITIES\n\n    addUnitPriority('year', 1);\n\n    // PARSING\n\n    addRegexToken('Y', matchSigned);\n    addRegexToken('YY', match1to2, match2);\n    addRegexToken('YYYY', match1to4, match4);\n    addRegexToken('YYYYY', match1to6, match6);\n    addRegexToken('YYYYYY', match1to6, match6);\n\n    addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n    addParseToken('YYYY', function (input, array) {\n        array[YEAR] =\n            input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n    });\n    addParseToken('YY', function (input, array) {\n        array[YEAR] = hooks.parseTwoDigitYear(input);\n    });\n    addParseToken('Y', function (input, array) {\n        array[YEAR] = parseInt(input, 10);\n    });\n\n    // HELPERS\n\n    function daysInYear(year) {\n        return isLeapYear(year) ? 366 : 365;\n    }\n\n    // HOOKS\n\n    hooks.parseTwoDigitYear = function (input) {\n        return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n    };\n\n    // MOMENTS\n\n    var getSetYear = makeGetSet('FullYear', true);\n\n    function getIsLeapYear() {\n        return isLeapYear(this.year());\n    }\n\n    function createDate(y, m, d, h, M, s, ms) {\n        // can't just apply() to create a date:\n        // https://stackoverflow.com/q/181348\n        var date;\n        // the date constructor remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            // preserve leap years using a full 400 year cycle, then reset\n            date = new Date(y + 400, m, d, h, M, s, ms);\n            if (isFinite(date.getFullYear())) {\n                date.setFullYear(y);\n            }\n        } else {\n            date = new Date(y, m, d, h, M, s, ms);\n        }\n\n        return date;\n    }\n\n    function createUTCDate(y) {\n        var date, args;\n        // the Date.UTC function remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            args = Array.prototype.slice.call(arguments);\n            // preserve leap years using a full 400 year cycle, then reset\n            args[0] = y + 400;\n            date = new Date(Date.UTC.apply(null, args));\n            if (isFinite(date.getUTCFullYear())) {\n                date.setUTCFullYear(y);\n            }\n        } else {\n            date = new Date(Date.UTC.apply(null, arguments));\n        }\n\n        return date;\n    }\n\n    // start-of-first-week - start-of-year\n    function firstWeekOffset(year, dow, doy) {\n        var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n            fwd = 7 + dow - doy,\n            // first-week day local weekday -- which local weekday is fwd\n            fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n        return -fwdlw + fwd - 1;\n    }\n\n    // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n    function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n        var localWeekday = (7 + weekday - dow) % 7,\n            weekOffset = firstWeekOffset(year, dow, doy),\n            dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n            resYear,\n            resDayOfYear;\n\n        if (dayOfYear <= 0) {\n            resYear = year - 1;\n            resDayOfYear = daysInYear(resYear) + dayOfYear;\n        } else if (dayOfYear > daysInYear(year)) {\n            resYear = year + 1;\n            resDayOfYear = dayOfYear - daysInYear(year);\n        } else {\n            resYear = year;\n            resDayOfYear = dayOfYear;\n        }\n\n        return {\n            year: resYear,\n            dayOfYear: resDayOfYear,\n        };\n    }\n\n    function weekOfYear(mom, dow, doy) {\n        var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n            week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n            resWeek,\n            resYear;\n\n        if (week < 1) {\n            resYear = mom.year() - 1;\n            resWeek = week + weeksInYear(resYear, dow, doy);\n        } else if (week > weeksInYear(mom.year(), dow, doy)) {\n            resWeek = week - weeksInYear(mom.year(), dow, doy);\n            resYear = mom.year() + 1;\n        } else {\n            resYear = mom.year();\n            resWeek = week;\n        }\n\n        return {\n            week: resWeek,\n            year: resYear,\n        };\n    }\n\n    function weeksInYear(year, dow, doy) {\n        var weekOffset = firstWeekOffset(year, dow, doy),\n            weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n        return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n    }\n\n    // FORMATTING\n\n    addFormatToken('w', ['ww', 2], 'wo', 'week');\n    addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n    // ALIASES\n\n    addUnitAlias('week', 'w');\n    addUnitAlias('isoWeek', 'W');\n\n    // PRIORITIES\n\n    addUnitPriority('week', 5);\n    addUnitPriority('isoWeek', 5);\n\n    // PARSING\n\n    addRegexToken('w', match1to2);\n    addRegexToken('ww', match1to2, match2);\n    addRegexToken('W', match1to2);\n    addRegexToken('WW', match1to2, match2);\n\n    addWeekParseToken(\n        ['w', 'ww', 'W', 'WW'],\n        function (input, week, config, token) {\n            week[token.substr(0, 1)] = toInt(input);\n        }\n    );\n\n    // HELPERS\n\n    // LOCALES\n\n    function localeWeek(mom) {\n        return weekOfYear(mom, this._week.dow, this._week.doy).week;\n    }\n\n    var defaultLocaleWeek = {\n        dow: 0, // Sunday is the first day of the week.\n        doy: 6, // The week that contains Jan 6th is the first week of the year.\n    };\n\n    function localeFirstDayOfWeek() {\n        return this._week.dow;\n    }\n\n    function localeFirstDayOfYear() {\n        return this._week.doy;\n    }\n\n    // MOMENTS\n\n    function getSetWeek(input) {\n        var week = this.localeData().week(this);\n        return input == null ? week : this.add((input - week) * 7, 'd');\n    }\n\n    function getSetISOWeek(input) {\n        var week = weekOfYear(this, 1, 4).week;\n        return input == null ? week : this.add((input - week) * 7, 'd');\n    }\n\n    // FORMATTING\n\n    addFormatToken('d', 0, 'do', 'day');\n\n    addFormatToken('dd', 0, 0, function (format) {\n        return this.localeData().weekdaysMin(this, format);\n    });\n\n    addFormatToken('ddd', 0, 0, function (format) {\n        return this.localeData().weekdaysShort(this, format);\n    });\n\n    addFormatToken('dddd', 0, 0, function (format) {\n        return this.localeData().weekdays(this, format);\n    });\n\n    addFormatToken('e', 0, 0, 'weekday');\n    addFormatToken('E', 0, 0, 'isoWeekday');\n\n    // ALIASES\n\n    addUnitAlias('day', 'd');\n    addUnitAlias('weekday', 'e');\n    addUnitAlias('isoWeekday', 'E');\n\n    // PRIORITY\n    addUnitPriority('day', 11);\n    addUnitPriority('weekday', 11);\n    addUnitPriority('isoWeekday', 11);\n\n    // PARSING\n\n    addRegexToken('d', match1to2);\n    addRegexToken('e', match1to2);\n    addRegexToken('E', match1to2);\n    addRegexToken('dd', function (isStrict, locale) {\n        return locale.weekdaysMinRegex(isStrict);\n    });\n    addRegexToken('ddd', function (isStrict, locale) {\n        return locale.weekdaysShortRegex(isStrict);\n    });\n    addRegexToken('dddd', function (isStrict, locale) {\n        return locale.weekdaysRegex(isStrict);\n    });\n\n    addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n        var weekday = config._locale.weekdaysParse(input, token, config._strict);\n        // if we didn't get a weekday name, mark the date as invalid\n        if (weekday != null) {\n            week.d = weekday;\n        } else {\n            getParsingFlags(config).invalidWeekday = input;\n        }\n    });\n\n    addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n        week[token] = toInt(input);\n    });\n\n    // HELPERS\n\n    function parseWeekday(input, locale) {\n        if (typeof input !== 'string') {\n            return input;\n        }\n\n        if (!isNaN(input)) {\n            return parseInt(input, 10);\n        }\n\n        input = locale.weekdaysParse(input);\n        if (typeof input === 'number') {\n            return input;\n        }\n\n        return null;\n    }\n\n    function parseIsoWeekday(input, locale) {\n        if (typeof input === 'string') {\n            return locale.weekdaysParse(input) % 7 || 7;\n        }\n        return isNaN(input) ? null : input;\n    }\n\n    // LOCALES\n    function shiftWeekdays(ws, n) {\n        return ws.slice(n, 7).concat(ws.slice(0, n));\n    }\n\n    var defaultLocaleWeekdays =\n            'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n        defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        defaultWeekdaysRegex = matchWord,\n        defaultWeekdaysShortRegex = matchWord,\n        defaultWeekdaysMinRegex = matchWord;\n\n    function localeWeekdays(m, format) {\n        var weekdays = isArray(this._weekdays)\n            ? this._weekdays\n            : this._weekdays[\n                  m && m !== true && this._weekdays.isFormat.test(format)\n                      ? 'format'\n                      : 'standalone'\n              ];\n        return m === true\n            ? shiftWeekdays(weekdays, this._week.dow)\n            : m\n            ? weekdays[m.day()]\n            : weekdays;\n    }\n\n    function localeWeekdaysShort(m) {\n        return m === true\n            ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n            : m\n            ? this._weekdaysShort[m.day()]\n            : this._weekdaysShort;\n    }\n\n    function localeWeekdaysMin(m) {\n        return m === true\n            ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n            : m\n            ? this._weekdaysMin[m.day()]\n            : this._weekdaysMin;\n    }\n\n    function handleStrictParse$1(weekdayName, format, strict) {\n        var i,\n            ii,\n            mom,\n            llc = weekdayName.toLocaleLowerCase();\n        if (!this._weekdaysParse) {\n            this._weekdaysParse = [];\n            this._shortWeekdaysParse = [];\n            this._minWeekdaysParse = [];\n\n            for (i = 0; i < 7; ++i) {\n                mom = createUTC([2000, 1]).day(i);\n                this._minWeekdaysParse[i] = this.weekdaysMin(\n                    mom,\n                    ''\n                ).toLocaleLowerCase();\n                this._shortWeekdaysParse[i] = this.weekdaysShort(\n                    mom,\n                    ''\n                ).toLocaleLowerCase();\n                this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n            }\n        }\n\n        if (strict) {\n            if (format === 'dddd') {\n                ii = indexOf.call(this._weekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else if (format === 'ddd') {\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        } else {\n            if (format === 'dddd') {\n                ii = indexOf.call(this._weekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else if (format === 'ddd') {\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._weekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._weekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        }\n    }\n\n    function localeWeekdaysParse(weekdayName, format, strict) {\n        var i, mom, regex;\n\n        if (this._weekdaysParseExact) {\n            return handleStrictParse$1.call(this, weekdayName, format, strict);\n        }\n\n        if (!this._weekdaysParse) {\n            this._weekdaysParse = [];\n            this._minWeekdaysParse = [];\n            this._shortWeekdaysParse = [];\n            this._fullWeekdaysParse = [];\n        }\n\n        for (i = 0; i < 7; i++) {\n            // make the regex if we don't have it already\n\n            mom = createUTC([2000, 1]).day(i);\n            if (strict && !this._fullWeekdaysParse[i]) {\n                this._fullWeekdaysParse[i] = new RegExp(\n                    '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n                    'i'\n                );\n                this._shortWeekdaysParse[i] = new RegExp(\n                    '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n                    'i'\n                );\n                this._minWeekdaysParse[i] = new RegExp(\n                    '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n                    'i'\n                );\n            }\n            if (!this._weekdaysParse[i]) {\n                regex =\n                    '^' +\n                    this.weekdays(mom, '') +\n                    '|^' +\n                    this.weekdaysShort(mom, '') +\n                    '|^' +\n                    this.weekdaysMin(mom, '');\n                this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n            }\n            // test the regex\n            if (\n                strict &&\n                format === 'dddd' &&\n                this._fullWeekdaysParse[i].test(weekdayName)\n            ) {\n                return i;\n            } else if (\n                strict &&\n                format === 'ddd' &&\n                this._shortWeekdaysParse[i].test(weekdayName)\n            ) {\n                return i;\n            } else if (\n                strict &&\n                format === 'dd' &&\n                this._minWeekdaysParse[i].test(weekdayName)\n            ) {\n                return i;\n            } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n                return i;\n            }\n        }\n    }\n\n    // MOMENTS\n\n    function getSetDayOfWeek(input) {\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n        var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n        if (input != null) {\n            input = parseWeekday(input, this.localeData());\n            return this.add(input - day, 'd');\n        } else {\n            return day;\n        }\n    }\n\n    function getSetLocaleDayOfWeek(input) {\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n        var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n        return input == null ? weekday : this.add(input - weekday, 'd');\n    }\n\n    function getSetISODayOfWeek(input) {\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n\n        // behaves the same as moment#day except\n        // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n        // as a setter, sunday should belong to the previous week.\n\n        if (input != null) {\n            var weekday = parseIsoWeekday(input, this.localeData());\n            return this.day(this.day() % 7 ? weekday : weekday - 7);\n        } else {\n            return this.day() || 7;\n        }\n    }\n\n    function weekdaysRegex(isStrict) {\n        if (this._weekdaysParseExact) {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                computeWeekdaysParse.call(this);\n            }\n            if (isStrict) {\n                return this._weekdaysStrictRegex;\n            } else {\n                return this._weekdaysRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                this._weekdaysRegex = defaultWeekdaysRegex;\n            }\n            return this._weekdaysStrictRegex && isStrict\n                ? this._weekdaysStrictRegex\n                : this._weekdaysRegex;\n        }\n    }\n\n    function weekdaysShortRegex(isStrict) {\n        if (this._weekdaysParseExact) {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                computeWeekdaysParse.call(this);\n            }\n            if (isStrict) {\n                return this._weekdaysShortStrictRegex;\n            } else {\n                return this._weekdaysShortRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n                this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n            }\n            return this._weekdaysShortStrictRegex && isStrict\n                ? this._weekdaysShortStrictRegex\n                : this._weekdaysShortRegex;\n        }\n    }\n\n    function weekdaysMinRegex(isStrict) {\n        if (this._weekdaysParseExact) {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                computeWeekdaysParse.call(this);\n            }\n            if (isStrict) {\n                return this._weekdaysMinStrictRegex;\n            } else {\n                return this._weekdaysMinRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n                this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n            }\n            return this._weekdaysMinStrictRegex && isStrict\n                ? this._weekdaysMinStrictRegex\n                : this._weekdaysMinRegex;\n        }\n    }\n\n    function computeWeekdaysParse() {\n        function cmpLenRev(a, b) {\n            return b.length - a.length;\n        }\n\n        var minPieces = [],\n            shortPieces = [],\n            longPieces = [],\n            mixedPieces = [],\n            i,\n            mom,\n            minp,\n            shortp,\n            longp;\n        for (i = 0; i < 7; i++) {\n            // make the regex if we don't have it already\n            mom = createUTC([2000, 1]).day(i);\n            minp = regexEscape(this.weekdaysMin(mom, ''));\n            shortp = regexEscape(this.weekdaysShort(mom, ''));\n            longp = regexEscape(this.weekdays(mom, ''));\n            minPieces.push(minp);\n            shortPieces.push(shortp);\n            longPieces.push(longp);\n            mixedPieces.push(minp);\n            mixedPieces.push(shortp);\n            mixedPieces.push(longp);\n        }\n        // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n        // will match the longer piece.\n        minPieces.sort(cmpLenRev);\n        shortPieces.sort(cmpLenRev);\n        longPieces.sort(cmpLenRev);\n        mixedPieces.sort(cmpLenRev);\n\n        this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n        this._weekdaysShortRegex = this._weekdaysRegex;\n        this._weekdaysMinRegex = this._weekdaysRegex;\n\n        this._weekdaysStrictRegex = new RegExp(\n            '^(' + longPieces.join('|') + ')',\n            'i'\n        );\n        this._weekdaysShortStrictRegex = new RegExp(\n            '^(' + shortPieces.join('|') + ')',\n            'i'\n        );\n        this._weekdaysMinStrictRegex = new RegExp(\n            '^(' + minPieces.join('|') + ')',\n            'i'\n        );\n    }\n\n    // FORMATTING\n\n    function hFormat() {\n        return this.hours() % 12 || 12;\n    }\n\n    function kFormat() {\n        return this.hours() || 24;\n    }\n\n    addFormatToken('H', ['HH', 2], 0, 'hour');\n    addFormatToken('h', ['hh', 2], 0, hFormat);\n    addFormatToken('k', ['kk', 2], 0, kFormat);\n\n    addFormatToken('hmm', 0, 0, function () {\n        return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n    });\n\n    addFormatToken('hmmss', 0, 0, function () {\n        return (\n            '' +\n            hFormat.apply(this) +\n            zeroFill(this.minutes(), 2) +\n            zeroFill(this.seconds(), 2)\n        );\n    });\n\n    addFormatToken('Hmm', 0, 0, function () {\n        return '' + this.hours() + zeroFill(this.minutes(), 2);\n    });\n\n    addFormatToken('Hmmss', 0, 0, function () {\n        return (\n            '' +\n            this.hours() +\n            zeroFill(this.minutes(), 2) +\n            zeroFill(this.seconds(), 2)\n        );\n    });\n\n    function meridiem(token, lowercase) {\n        addFormatToken(token, 0, 0, function () {\n            return this.localeData().meridiem(\n                this.hours(),\n                this.minutes(),\n                lowercase\n            );\n        });\n    }\n\n    meridiem('a', true);\n    meridiem('A', false);\n\n    // ALIASES\n\n    addUnitAlias('hour', 'h');\n\n    // PRIORITY\n    addUnitPriority('hour', 13);\n\n    // PARSING\n\n    function matchMeridiem(isStrict, locale) {\n        return locale._meridiemParse;\n    }\n\n    addRegexToken('a', matchMeridiem);\n    addRegexToken('A', matchMeridiem);\n    addRegexToken('H', match1to2);\n    addRegexToken('h', match1to2);\n    addRegexToken('k', match1to2);\n    addRegexToken('HH', match1to2, match2);\n    addRegexToken('hh', match1to2, match2);\n    addRegexToken('kk', match1to2, match2);\n\n    addRegexToken('hmm', match3to4);\n    addRegexToken('hmmss', match5to6);\n    addRegexToken('Hmm', match3to4);\n    addRegexToken('Hmmss', match5to6);\n\n    addParseToken(['H', 'HH'], HOUR);\n    addParseToken(['k', 'kk'], function (input, array, config) {\n        var kInput = toInt(input);\n        array[HOUR] = kInput === 24 ? 0 : kInput;\n    });\n    addParseToken(['a', 'A'], function (input, array, config) {\n        config._isPm = config._locale.isPM(input);\n        config._meridiem = input;\n    });\n    addParseToken(['h', 'hh'], function (input, array, config) {\n        array[HOUR] = toInt(input);\n        getParsingFlags(config).bigHour = true;\n    });\n    addParseToken('hmm', function (input, array, config) {\n        var pos = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos));\n        array[MINUTE] = toInt(input.substr(pos));\n        getParsingFlags(config).bigHour = true;\n    });\n    addParseToken('hmmss', function (input, array, config) {\n        var pos1 = input.length - 4,\n            pos2 = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos1));\n        array[MINUTE] = toInt(input.substr(pos1, 2));\n        array[SECOND] = toInt(input.substr(pos2));\n        getParsingFlags(config).bigHour = true;\n    });\n    addParseToken('Hmm', function (input, array, config) {\n        var pos = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos));\n        array[MINUTE] = toInt(input.substr(pos));\n    });\n    addParseToken('Hmmss', function (input, array, config) {\n        var pos1 = input.length - 4,\n            pos2 = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos1));\n        array[MINUTE] = toInt(input.substr(pos1, 2));\n        array[SECOND] = toInt(input.substr(pos2));\n    });\n\n    // LOCALES\n\n    function localeIsPM(input) {\n        // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n        // Using charAt should be more compatible.\n        return (input + '').toLowerCase().charAt(0) === 'p';\n    }\n\n    var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n        // Setting the hour should keep the time, because the user explicitly\n        // specified which hour they want. So trying to maintain the same hour (in\n        // a new timezone) makes sense. Adding/subtracting hours does not follow\n        // this rule.\n        getSetHour = makeGetSet('Hours', true);\n\n    function localeMeridiem(hours, minutes, isLower) {\n        if (hours > 11) {\n            return isLower ? 'pm' : 'PM';\n        } else {\n            return isLower ? 'am' : 'AM';\n        }\n    }\n\n    var baseConfig = {\n        calendar: defaultCalendar,\n        longDateFormat: defaultLongDateFormat,\n        invalidDate: defaultInvalidDate,\n        ordinal: defaultOrdinal,\n        dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n        relativeTime: defaultRelativeTime,\n\n        months: defaultLocaleMonths,\n        monthsShort: defaultLocaleMonthsShort,\n\n        week: defaultLocaleWeek,\n\n        weekdays: defaultLocaleWeekdays,\n        weekdaysMin: defaultLocaleWeekdaysMin,\n        weekdaysShort: defaultLocaleWeekdaysShort,\n\n        meridiemParse: defaultLocaleMeridiemParse,\n    };\n\n    // internal storage for locale config files\n    var locales = {},\n        localeFamilies = {},\n        globalLocale;\n\n    function commonPrefix(arr1, arr2) {\n        var i,\n            minl = Math.min(arr1.length, arr2.length);\n        for (i = 0; i < minl; i += 1) {\n            if (arr1[i] !== arr2[i]) {\n                return i;\n            }\n        }\n        return minl;\n    }\n\n    function normalizeLocale(key) {\n        return key ? key.toLowerCase().replace('_', '-') : key;\n    }\n\n    // pick the locale from the array\n    // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n    // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n    function chooseLocale(names) {\n        var i = 0,\n            j,\n            next,\n            locale,\n            split;\n\n        while (i < names.length) {\n            split = normalizeLocale(names[i]).split('-');\n            j = split.length;\n            next = normalizeLocale(names[i + 1]);\n            next = next ? next.split('-') : null;\n            while (j > 0) {\n                locale = loadLocale(split.slice(0, j).join('-'));\n                if (locale) {\n                    return locale;\n                }\n                if (\n                    next &&\n                    next.length >= j &&\n                    commonPrefix(split, next) >= j - 1\n                ) {\n                    //the next array item is better than a shallower substring of this one\n                    break;\n                }\n                j--;\n            }\n            i++;\n        }\n        return globalLocale;\n    }\n\n    function isLocaleNameSane(name) {\n        // Prevent names that look like filesystem paths, i.e contain '/' or '\\'\n        return name.match('^[^/\\\\\\\\]*$') != null;\n    }\n\n    function loadLocale(name) {\n        var oldLocale = null,\n            aliasedRequire;\n        // TODO: Find a better way to register and load all the locales in Node\n        if (\n            locales[name] === undefined &&\n            typeof module !== 'undefined' &&\n            module &&\n            module.exports &&\n            isLocaleNameSane(name)\n        ) {\n            try {\n                oldLocale = globalLocale._abbr;\n                aliasedRequire = require;\n                aliasedRequire('./locale/' + name);\n                getSetGlobalLocale(oldLocale);\n            } catch (e) {\n                // mark as not found to avoid repeating expensive file require call causing high CPU\n                // when trying to find en-US, en_US, en-us for every format call\n                locales[name] = null; // null means not found\n            }\n        }\n        return locales[name];\n    }\n\n    // This function will load locale and then set the global locale.  If\n    // no arguments are passed in, it will simply return the current global\n    // locale key.\n    function getSetGlobalLocale(key, values) {\n        var data;\n        if (key) {\n            if (isUndefined(values)) {\n                data = getLocale(key);\n            } else {\n                data = defineLocale(key, values);\n            }\n\n            if (data) {\n                // moment.duration._locale = moment._locale = data;\n                globalLocale = data;\n            } else {\n                if (typeof console !== 'undefined' && console.warn) {\n                    //warn user if arguments are passed but the locale could not be set\n                    console.warn(\n                        'Locale ' + key + ' not found. Did you forget to load it?'\n                    );\n                }\n            }\n        }\n\n        return globalLocale._abbr;\n    }\n\n    function defineLocale(name, config) {\n        if (config !== null) {\n            var locale,\n                parentConfig = baseConfig;\n            config.abbr = name;\n            if (locales[name] != null) {\n                deprecateSimple(\n                    'defineLocaleOverride',\n                    'use moment.updateLocale(localeName, config) to change ' +\n                        'an existing locale. moment.defineLocale(localeName, ' +\n                        'config) should only be used for creating a new locale ' +\n                        'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n                );\n                parentConfig = locales[name]._config;\n            } else if (config.parentLocale != null) {\n                if (locales[config.parentLocale] != null) {\n                    parentConfig = locales[config.parentLocale]._config;\n                } else {\n                    locale = loadLocale(config.parentLocale);\n                    if (locale != null) {\n                        parentConfig = locale._config;\n                    } else {\n                        if (!localeFamilies[config.parentLocale]) {\n                            localeFamilies[config.parentLocale] = [];\n                        }\n                        localeFamilies[config.parentLocale].push({\n                            name: name,\n                            config: config,\n                        });\n                        return null;\n                    }\n                }\n            }\n            locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n            if (localeFamilies[name]) {\n                localeFamilies[name].forEach(function (x) {\n                    defineLocale(x.name, x.config);\n                });\n            }\n\n            // backwards compat for now: also set the locale\n            // make sure we set the locale AFTER all child locales have been\n            // created, so we won't end up with the child locale set.\n            getSetGlobalLocale(name);\n\n            return locales[name];\n        } else {\n            // useful for testing\n            delete locales[name];\n            return null;\n        }\n    }\n\n    function updateLocale(name, config) {\n        if (config != null) {\n            var locale,\n                tmpLocale,\n                parentConfig = baseConfig;\n\n            if (locales[name] != null && locales[name].parentLocale != null) {\n                // Update existing child locale in-place to avoid memory-leaks\n                locales[name].set(mergeConfigs(locales[name]._config, config));\n            } else {\n                // MERGE\n                tmpLocale = loadLocale(name);\n                if (tmpLocale != null) {\n                    parentConfig = tmpLocale._config;\n                }\n                config = mergeConfigs(parentConfig, config);\n                if (tmpLocale == null) {\n                    // updateLocale is called for creating a new locale\n                    // Set abbr so it will have a name (getters return\n                    // undefined otherwise).\n                    config.abbr = name;\n                }\n                locale = new Locale(config);\n                locale.parentLocale = locales[name];\n                locales[name] = locale;\n            }\n\n            // backwards compat for now: also set the locale\n            getSetGlobalLocale(name);\n        } else {\n            // pass null for config to unupdate, useful for tests\n            if (locales[name] != null) {\n                if (locales[name].parentLocale != null) {\n                    locales[name] = locales[name].parentLocale;\n                    if (name === getSetGlobalLocale()) {\n                        getSetGlobalLocale(name);\n                    }\n                } else if (locales[name] != null) {\n                    delete locales[name];\n                }\n            }\n        }\n        return locales[name];\n    }\n\n    // returns locale data\n    function getLocale(key) {\n        var locale;\n\n        if (key && key._locale && key._locale._abbr) {\n            key = key._locale._abbr;\n        }\n\n        if (!key) {\n            return globalLocale;\n        }\n\n        if (!isArray(key)) {\n            //short-circuit everything else\n            locale = loadLocale(key);\n            if (locale) {\n                return locale;\n            }\n            key = [key];\n        }\n\n        return chooseLocale(key);\n    }\n\n    function listLocales() {\n        return keys(locales);\n    }\n\n    function checkOverflow(m) {\n        var overflow,\n            a = m._a;\n\n        if (a && getParsingFlags(m).overflow === -2) {\n            overflow =\n                a[MONTH] < 0 || a[MONTH] > 11\n                    ? MONTH\n                    : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n                    ? DATE\n                    : a[HOUR] < 0 ||\n                      a[HOUR] > 24 ||\n                      (a[HOUR] === 24 &&\n                          (a[MINUTE] !== 0 ||\n                              a[SECOND] !== 0 ||\n                              a[MILLISECOND] !== 0))\n                    ? HOUR\n                    : a[MINUTE] < 0 || a[MINUTE] > 59\n                    ? MINUTE\n                    : a[SECOND] < 0 || a[SECOND] > 59\n                    ? SECOND\n                    : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n                    ? MILLISECOND\n                    : -1;\n\n            if (\n                getParsingFlags(m)._overflowDayOfYear &&\n                (overflow < YEAR || overflow > DATE)\n            ) {\n                overflow = DATE;\n            }\n            if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n                overflow = WEEK;\n            }\n            if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n                overflow = WEEKDAY;\n            }\n\n            getParsingFlags(m).overflow = overflow;\n        }\n\n        return m;\n    }\n\n    // iso 8601 regex\n    // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n    var extendedIsoRegex =\n            /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n        basicIsoRegex =\n            /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n        tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n        isoDates = [\n            ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n            ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n            ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n            ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n            ['YYYY-DDD', /\\d{4}-\\d{3}/],\n            ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n            ['YYYYYYMMDD', /[+-]\\d{10}/],\n            ['YYYYMMDD', /\\d{8}/],\n            ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n            ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n            ['YYYYDDD', /\\d{7}/],\n            ['YYYYMM', /\\d{6}/, false],\n            ['YYYY', /\\d{4}/, false],\n        ],\n        // iso time formats and regexes\n        isoTimes = [\n            ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n            ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n            ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n            ['HH:mm', /\\d\\d:\\d\\d/],\n            ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n            ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n            ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n            ['HHmm', /\\d\\d\\d\\d/],\n            ['HH', /\\d\\d/],\n        ],\n        aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n        // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n        rfc2822 =\n            /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n        obsOffsets = {\n            UT: 0,\n            GMT: 0,\n            EDT: -4 * 60,\n            EST: -5 * 60,\n            CDT: -5 * 60,\n            CST: -6 * 60,\n            MDT: -6 * 60,\n            MST: -7 * 60,\n            PDT: -7 * 60,\n            PST: -8 * 60,\n        };\n\n    // date from iso format\n    function configFromISO(config) {\n        var i,\n            l,\n            string = config._i,\n            match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n            allowTime,\n            dateFormat,\n            timeFormat,\n            tzFormat,\n            isoDatesLen = isoDates.length,\n            isoTimesLen = isoTimes.length;\n\n        if (match) {\n            getParsingFlags(config).iso = true;\n            for (i = 0, l = isoDatesLen; i < l; i++) {\n                if (isoDates[i][1].exec(match[1])) {\n                    dateFormat = isoDates[i][0];\n                    allowTime = isoDates[i][2] !== false;\n                    break;\n                }\n            }\n            if (dateFormat == null) {\n                config._isValid = false;\n                return;\n            }\n            if (match[3]) {\n                for (i = 0, l = isoTimesLen; i < l; i++) {\n                    if (isoTimes[i][1].exec(match[3])) {\n                        // match[2] should be 'T' or space\n                        timeFormat = (match[2] || ' ') + isoTimes[i][0];\n                        break;\n                    }\n                }\n                if (timeFormat == null) {\n                    config._isValid = false;\n                    return;\n                }\n            }\n            if (!allowTime && timeFormat != null) {\n                config._isValid = false;\n                return;\n            }\n            if (match[4]) {\n                if (tzRegex.exec(match[4])) {\n                    tzFormat = 'Z';\n                } else {\n                    config._isValid = false;\n                    return;\n                }\n            }\n            config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n            configFromStringAndFormat(config);\n        } else {\n            config._isValid = false;\n        }\n    }\n\n    function extractFromRFC2822Strings(\n        yearStr,\n        monthStr,\n        dayStr,\n        hourStr,\n        minuteStr,\n        secondStr\n    ) {\n        var result = [\n            untruncateYear(yearStr),\n            defaultLocaleMonthsShort.indexOf(monthStr),\n            parseInt(dayStr, 10),\n            parseInt(hourStr, 10),\n            parseInt(minuteStr, 10),\n        ];\n\n        if (secondStr) {\n            result.push(parseInt(secondStr, 10));\n        }\n\n        return result;\n    }\n\n    function untruncateYear(yearStr) {\n        var year = parseInt(yearStr, 10);\n        if (year <= 49) {\n            return 2000 + year;\n        } else if (year <= 999) {\n            return 1900 + year;\n        }\n        return year;\n    }\n\n    function preprocessRFC2822(s) {\n        // Remove comments and folding whitespace and replace multiple-spaces with a single space\n        return s\n            .replace(/\\([^()]*\\)|[\\n\\t]/g, ' ')\n            .replace(/(\\s\\s+)/g, ' ')\n            .replace(/^\\s\\s*/, '')\n            .replace(/\\s\\s*$/, '');\n    }\n\n    function checkWeekday(weekdayStr, parsedInput, config) {\n        if (weekdayStr) {\n            // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n            var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n                weekdayActual = new Date(\n                    parsedInput[0],\n                    parsedInput[1],\n                    parsedInput[2]\n                ).getDay();\n            if (weekdayProvided !== weekdayActual) {\n                getParsingFlags(config).weekdayMismatch = true;\n                config._isValid = false;\n                return false;\n            }\n        }\n        return true;\n    }\n\n    function calculateOffset(obsOffset, militaryOffset, numOffset) {\n        if (obsOffset) {\n            return obsOffsets[obsOffset];\n        } else if (militaryOffset) {\n            // the only allowed military tz is Z\n            return 0;\n        } else {\n            var hm = parseInt(numOffset, 10),\n                m = hm % 100,\n                h = (hm - m) / 100;\n            return h * 60 + m;\n        }\n    }\n\n    // date and time from ref 2822 format\n    function configFromRFC2822(config) {\n        var match = rfc2822.exec(preprocessRFC2822(config._i)),\n            parsedArray;\n        if (match) {\n            parsedArray = extractFromRFC2822Strings(\n                match[4],\n                match[3],\n                match[2],\n                match[5],\n                match[6],\n                match[7]\n            );\n            if (!checkWeekday(match[1], parsedArray, config)) {\n                return;\n            }\n\n            config._a = parsedArray;\n            config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n            config._d = createUTCDate.apply(null, config._a);\n            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n            getParsingFlags(config).rfc2822 = true;\n        } else {\n            config._isValid = false;\n        }\n    }\n\n    // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n    function configFromString(config) {\n        var matched = aspNetJsonRegex.exec(config._i);\n        if (matched !== null) {\n            config._d = new Date(+matched[1]);\n            return;\n        }\n\n        configFromISO(config);\n        if (config._isValid === false) {\n            delete config._isValid;\n        } else {\n            return;\n        }\n\n        configFromRFC2822(config);\n        if (config._isValid === false) {\n            delete config._isValid;\n        } else {\n            return;\n        }\n\n        if (config._strict) {\n            config._isValid = false;\n        } else {\n            // Final attempt, use Input Fallback\n            hooks.createFromInputFallback(config);\n        }\n    }\n\n    hooks.createFromInputFallback = deprecate(\n        'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n            'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n            'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n        function (config) {\n            config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n        }\n    );\n\n    // Pick the first defined of two or three arguments.\n    function defaults(a, b, c) {\n        if (a != null) {\n            return a;\n        }\n        if (b != null) {\n            return b;\n        }\n        return c;\n    }\n\n    function currentDateArray(config) {\n        // hooks is actually the exported moment object\n        var nowValue = new Date(hooks.now());\n        if (config._useUTC) {\n            return [\n                nowValue.getUTCFullYear(),\n                nowValue.getUTCMonth(),\n                nowValue.getUTCDate(),\n            ];\n        }\n        return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n    }\n\n    // convert an array to a date.\n    // the array should mirror the parameters below\n    // note: all values past the year are optional and will default to the lowest possible value.\n    // [year, month, day , hour, minute, second, millisecond]\n    function configFromArray(config) {\n        var i,\n            date,\n            input = [],\n            currentDate,\n            expectedWeekday,\n            yearToUse;\n\n        if (config._d) {\n            return;\n        }\n\n        currentDate = currentDateArray(config);\n\n        //compute day of the year from weeks and weekdays\n        if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n            dayOfYearFromWeekInfo(config);\n        }\n\n        //if the day of the year is set, figure out what it is\n        if (config._dayOfYear != null) {\n            yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n            if (\n                config._dayOfYear > daysInYear(yearToUse) ||\n                config._dayOfYear === 0\n            ) {\n                getParsingFlags(config)._overflowDayOfYear = true;\n            }\n\n            date = createUTCDate(yearToUse, 0, config._dayOfYear);\n            config._a[MONTH] = date.getUTCMonth();\n            config._a[DATE] = date.getUTCDate();\n        }\n\n        // Default to current date.\n        // * if no year, month, day of month are given, default to today\n        // * if day of month is given, default month and year\n        // * if month is given, default only year\n        // * if year is given, don't default anything\n        for (i = 0; i < 3 && config._a[i] == null; ++i) {\n            config._a[i] = input[i] = currentDate[i];\n        }\n\n        // Zero out whatever was not defaulted, including time\n        for (; i < 7; i++) {\n            config._a[i] = input[i] =\n                config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n        }\n\n        // Check for 24:00:00.000\n        if (\n            config._a[HOUR] === 24 &&\n            config._a[MINUTE] === 0 &&\n            config._a[SECOND] === 0 &&\n            config._a[MILLISECOND] === 0\n        ) {\n            config._nextDay = true;\n            config._a[HOUR] = 0;\n        }\n\n        config._d = (config._useUTC ? createUTCDate : createDate).apply(\n            null,\n            input\n        );\n        expectedWeekday = config._useUTC\n            ? config._d.getUTCDay()\n            : config._d.getDay();\n\n        // Apply timezone offset from input. The actual utcOffset can be changed\n        // with parseZone.\n        if (config._tzm != null) {\n            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n        }\n\n        if (config._nextDay) {\n            config._a[HOUR] = 24;\n        }\n\n        // check for mismatching day of week\n        if (\n            config._w &&\n            typeof config._w.d !== 'undefined' &&\n            config._w.d !== expectedWeekday\n        ) {\n            getParsingFlags(config).weekdayMismatch = true;\n        }\n    }\n\n    function dayOfYearFromWeekInfo(config) {\n        var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n        w = config._w;\n        if (w.GG != null || w.W != null || w.E != null) {\n            dow = 1;\n            doy = 4;\n\n            // TODO: We need to take the current isoWeekYear, but that depends on\n            // how we interpret now (local, utc, fixed offset). So create\n            // a now version of current config (take local/utc/offset flags, and\n            // create now).\n            weekYear = defaults(\n                w.GG,\n                config._a[YEAR],\n                weekOfYear(createLocal(), 1, 4).year\n            );\n            week = defaults(w.W, 1);\n            weekday = defaults(w.E, 1);\n            if (weekday < 1 || weekday > 7) {\n                weekdayOverflow = true;\n            }\n        } else {\n            dow = config._locale._week.dow;\n            doy = config._locale._week.doy;\n\n            curWeek = weekOfYear(createLocal(), dow, doy);\n\n            weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n            // Default to current week.\n            week = defaults(w.w, curWeek.week);\n\n            if (w.d != null) {\n                // weekday -- low day numbers are considered next week\n                weekday = w.d;\n                if (weekday < 0 || weekday > 6) {\n                    weekdayOverflow = true;\n                }\n            } else if (w.e != null) {\n                // local weekday -- counting starts from beginning of week\n                weekday = w.e + dow;\n                if (w.e < 0 || w.e > 6) {\n                    weekdayOverflow = true;\n                }\n            } else {\n                // default to beginning of week\n                weekday = dow;\n            }\n        }\n        if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n            getParsingFlags(config)._overflowWeeks = true;\n        } else if (weekdayOverflow != null) {\n            getParsingFlags(config)._overflowWeekday = true;\n        } else {\n            temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n            config._a[YEAR] = temp.year;\n            config._dayOfYear = temp.dayOfYear;\n        }\n    }\n\n    // constant that refers to the ISO standard\n    hooks.ISO_8601 = function () {};\n\n    // constant that refers to the RFC 2822 form\n    hooks.RFC_2822 = function () {};\n\n    // date from string and format string\n    function configFromStringAndFormat(config) {\n        // TODO: Move this to another part of the creation flow to prevent circular deps\n        if (config._f === hooks.ISO_8601) {\n            configFromISO(config);\n            return;\n        }\n        if (config._f === hooks.RFC_2822) {\n            configFromRFC2822(config);\n            return;\n        }\n        config._a = [];\n        getParsingFlags(config).empty = true;\n\n        // This array is used to make a Date, either with `new Date` or `Date.UTC`\n        var string = '' + config._i,\n            i,\n            parsedInput,\n            tokens,\n            token,\n            skipped,\n            stringLength = string.length,\n            totalParsedInputLength = 0,\n            era,\n            tokenLen;\n\n        tokens =\n            expandFormat(config._f, config._locale).match(formattingTokens) || [];\n        tokenLen = tokens.length;\n        for (i = 0; i < tokenLen; i++) {\n            token = tokens[i];\n            parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n                [])[0];\n            if (parsedInput) {\n                skipped = string.substr(0, string.indexOf(parsedInput));\n                if (skipped.length > 0) {\n                    getParsingFlags(config).unusedInput.push(skipped);\n                }\n                string = string.slice(\n                    string.indexOf(parsedInput) + parsedInput.length\n                );\n                totalParsedInputLength += parsedInput.length;\n            }\n            // don't parse if it's not a known token\n            if (formatTokenFunctions[token]) {\n                if (parsedInput) {\n                    getParsingFlags(config).empty = false;\n                } else {\n                    getParsingFlags(config).unusedTokens.push(token);\n                }\n                addTimeToArrayFromToken(token, parsedInput, config);\n            } else if (config._strict && !parsedInput) {\n                getParsingFlags(config).unusedTokens.push(token);\n            }\n        }\n\n        // add remaining unparsed input length to the string\n        getParsingFlags(config).charsLeftOver =\n            stringLength - totalParsedInputLength;\n        if (string.length > 0) {\n            getParsingFlags(config).unusedInput.push(string);\n        }\n\n        // clear _12h flag if hour is <= 12\n        if (\n            config._a[HOUR] <= 12 &&\n            getParsingFlags(config).bigHour === true &&\n            config._a[HOUR] > 0\n        ) {\n            getParsingFlags(config).bigHour = undefined;\n        }\n\n        getParsingFlags(config).parsedDateParts = config._a.slice(0);\n        getParsingFlags(config).meridiem = config._meridiem;\n        // handle meridiem\n        config._a[HOUR] = meridiemFixWrap(\n            config._locale,\n            config._a[HOUR],\n            config._meridiem\n        );\n\n        // handle era\n        era = getParsingFlags(config).era;\n        if (era !== null) {\n            config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n        }\n\n        configFromArray(config);\n        checkOverflow(config);\n    }\n\n    function meridiemFixWrap(locale, hour, meridiem) {\n        var isPm;\n\n        if (meridiem == null) {\n            // nothing to do\n            return hour;\n        }\n        if (locale.meridiemHour != null) {\n            return locale.meridiemHour(hour, meridiem);\n        } else if (locale.isPM != null) {\n            // Fallback\n            isPm = locale.isPM(meridiem);\n            if (isPm && hour < 12) {\n                hour += 12;\n            }\n            if (!isPm && hour === 12) {\n                hour = 0;\n            }\n            return hour;\n        } else {\n            // this is not supposed to happen\n            return hour;\n        }\n    }\n\n    // date from string and array of format strings\n    function configFromStringAndArray(config) {\n        var tempConfig,\n            bestMoment,\n            scoreToBeat,\n            i,\n            currentScore,\n            validFormatFound,\n            bestFormatIsValid = false,\n            configfLen = config._f.length;\n\n        if (configfLen === 0) {\n            getParsingFlags(config).invalidFormat = true;\n            config._d = new Date(NaN);\n            return;\n        }\n\n        for (i = 0; i < configfLen; i++) {\n            currentScore = 0;\n            validFormatFound = false;\n            tempConfig = copyConfig({}, config);\n            if (config._useUTC != null) {\n                tempConfig._useUTC = config._useUTC;\n            }\n            tempConfig._f = config._f[i];\n            configFromStringAndFormat(tempConfig);\n\n            if (isValid(tempConfig)) {\n                validFormatFound = true;\n            }\n\n            // if there is any input that was not parsed add a penalty for that format\n            currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n            //or tokens\n            currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n            getParsingFlags(tempConfig).score = currentScore;\n\n            if (!bestFormatIsValid) {\n                if (\n                    scoreToBeat == null ||\n                    currentScore < scoreToBeat ||\n                    validFormatFound\n                ) {\n                    scoreToBeat = currentScore;\n                    bestMoment = tempConfig;\n                    if (validFormatFound) {\n                        bestFormatIsValid = true;\n                    }\n                }\n            } else {\n                if (currentScore < scoreToBeat) {\n                    scoreToBeat = currentScore;\n                    bestMoment = tempConfig;\n                }\n            }\n        }\n\n        extend(config, bestMoment || tempConfig);\n    }\n\n    function configFromObject(config) {\n        if (config._d) {\n            return;\n        }\n\n        var i = normalizeObjectUnits(config._i),\n            dayOrDate = i.day === undefined ? i.date : i.day;\n        config._a = map(\n            [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n            function (obj) {\n                return obj && parseInt(obj, 10);\n            }\n        );\n\n        configFromArray(config);\n    }\n\n    function createFromConfig(config) {\n        var res = new Moment(checkOverflow(prepareConfig(config)));\n        if (res._nextDay) {\n            // Adding is smart enough around DST\n            res.add(1, 'd');\n            res._nextDay = undefined;\n        }\n\n        return res;\n    }\n\n    function prepareConfig(config) {\n        var input = config._i,\n            format = config._f;\n\n        config._locale = config._locale || getLocale(config._l);\n\n        if (input === null || (format === undefined && input === '')) {\n            return createInvalid({ nullInput: true });\n        }\n\n        if (typeof input === 'string') {\n            config._i = input = config._locale.preparse(input);\n        }\n\n        if (isMoment(input)) {\n            return new Moment(checkOverflow(input));\n        } else if (isDate(input)) {\n            config._d = input;\n        } else if (isArray(format)) {\n            configFromStringAndArray(config);\n        } else if (format) {\n            configFromStringAndFormat(config);\n        } else {\n            configFromInput(config);\n        }\n\n        if (!isValid(config)) {\n            config._d = null;\n        }\n\n        return config;\n    }\n\n    function configFromInput(config) {\n        var input = config._i;\n        if (isUndefined(input)) {\n            config._d = new Date(hooks.now());\n        } else if (isDate(input)) {\n            config._d = new Date(input.valueOf());\n        } else if (typeof input === 'string') {\n            configFromString(config);\n        } else if (isArray(input)) {\n            config._a = map(input.slice(0), function (obj) {\n                return parseInt(obj, 10);\n            });\n            configFromArray(config);\n        } else if (isObject(input)) {\n            configFromObject(config);\n        } else if (isNumber(input)) {\n            // from milliseconds\n            config._d = new Date(input);\n        } else {\n            hooks.createFromInputFallback(config);\n        }\n    }\n\n    function createLocalOrUTC(input, format, locale, strict, isUTC) {\n        var c = {};\n\n        if (format === true || format === false) {\n            strict = format;\n            format = undefined;\n        }\n\n        if (locale === true || locale === false) {\n            strict = locale;\n            locale = undefined;\n        }\n\n        if (\n            (isObject(input) && isObjectEmpty(input)) ||\n            (isArray(input) && input.length === 0)\n        ) {\n            input = undefined;\n        }\n        // object construction must be done this way.\n        // https://github.com/moment/moment/issues/1423\n        c._isAMomentObject = true;\n        c._useUTC = c._isUTC = isUTC;\n        c._l = locale;\n        c._i = input;\n        c._f = format;\n        c._strict = strict;\n\n        return createFromConfig(c);\n    }\n\n    function createLocal(input, format, locale, strict) {\n        return createLocalOrUTC(input, format, locale, strict, false);\n    }\n\n    var prototypeMin = deprecate(\n            'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n            function () {\n                var other = createLocal.apply(null, arguments);\n                if (this.isValid() && other.isValid()) {\n                    return other < this ? this : other;\n                } else {\n                    return createInvalid();\n                }\n            }\n        ),\n        prototypeMax = deprecate(\n            'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n            function () {\n                var other = createLocal.apply(null, arguments);\n                if (this.isValid() && other.isValid()) {\n                    return other > this ? this : other;\n                } else {\n                    return createInvalid();\n                }\n            }\n        );\n\n    // Pick a moment m from moments so that m[fn](other) is true for all\n    // other. This relies on the function fn to be transitive.\n    //\n    // moments should either be an array of moment objects or an array, whose\n    // first element is an array of moment objects.\n    function pickBy(fn, moments) {\n        var res, i;\n        if (moments.length === 1 && isArray(moments[0])) {\n            moments = moments[0];\n        }\n        if (!moments.length) {\n            return createLocal();\n        }\n        res = moments[0];\n        for (i = 1; i < moments.length; ++i) {\n            if (!moments[i].isValid() || moments[i][fn](res)) {\n                res = moments[i];\n            }\n        }\n        return res;\n    }\n\n    // TODO: Use [].sort instead?\n    function min() {\n        var args = [].slice.call(arguments, 0);\n\n        return pickBy('isBefore', args);\n    }\n\n    function max() {\n        var args = [].slice.call(arguments, 0);\n\n        return pickBy('isAfter', args);\n    }\n\n    var now = function () {\n        return Date.now ? Date.now() : +new Date();\n    };\n\n    var ordering = [\n        'year',\n        'quarter',\n        'month',\n        'week',\n        'day',\n        'hour',\n        'minute',\n        'second',\n        'millisecond',\n    ];\n\n    function isDurationValid(m) {\n        var key,\n            unitHasDecimal = false,\n            i,\n            orderLen = ordering.length;\n        for (key in m) {\n            if (\n                hasOwnProp(m, key) &&\n                !(\n                    indexOf.call(ordering, key) !== -1 &&\n                    (m[key] == null || !isNaN(m[key]))\n                )\n            ) {\n                return false;\n            }\n        }\n\n        for (i = 0; i < orderLen; ++i) {\n            if (m[ordering[i]]) {\n                if (unitHasDecimal) {\n                    return false; // only allow non-integers for smallest unit\n                }\n                if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n                    unitHasDecimal = true;\n                }\n            }\n        }\n\n        return true;\n    }\n\n    function isValid$1() {\n        return this._isValid;\n    }\n\n    function createInvalid$1() {\n        return createDuration(NaN);\n    }\n\n    function Duration(duration) {\n        var normalizedInput = normalizeObjectUnits(duration),\n            years = normalizedInput.year || 0,\n            quarters = normalizedInput.quarter || 0,\n            months = normalizedInput.month || 0,\n            weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n            days = normalizedInput.day || 0,\n            hours = normalizedInput.hour || 0,\n            minutes = normalizedInput.minute || 0,\n            seconds = normalizedInput.second || 0,\n            milliseconds = normalizedInput.millisecond || 0;\n\n        this._isValid = isDurationValid(normalizedInput);\n\n        // representation for dateAddRemove\n        this._milliseconds =\n            +milliseconds +\n            seconds * 1e3 + // 1000\n            minutes * 6e4 + // 1000 * 60\n            hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n        // Because of dateAddRemove treats 24 hours as different from a\n        // day when working around DST, we need to store them separately\n        this._days = +days + weeks * 7;\n        // It is impossible to translate months into days without knowing\n        // which months you are are talking about, so we have to store\n        // it separately.\n        this._months = +months + quarters * 3 + years * 12;\n\n        this._data = {};\n\n        this._locale = getLocale();\n\n        this._bubble();\n    }\n\n    function isDuration(obj) {\n        return obj instanceof Duration;\n    }\n\n    function absRound(number) {\n        if (number < 0) {\n            return Math.round(-1 * number) * -1;\n        } else {\n            return Math.round(number);\n        }\n    }\n\n    // compare two arrays, return the number of differences\n    function compareArrays(array1, array2, dontConvert) {\n        var len = Math.min(array1.length, array2.length),\n            lengthDiff = Math.abs(array1.length - array2.length),\n            diffs = 0,\n            i;\n        for (i = 0; i < len; i++) {\n            if (\n                (dontConvert && array1[i] !== array2[i]) ||\n                (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n            ) {\n                diffs++;\n            }\n        }\n        return diffs + lengthDiff;\n    }\n\n    // FORMATTING\n\n    function offset(token, separator) {\n        addFormatToken(token, 0, 0, function () {\n            var offset = this.utcOffset(),\n                sign = '+';\n            if (offset < 0) {\n                offset = -offset;\n                sign = '-';\n            }\n            return (\n                sign +\n                zeroFill(~~(offset / 60), 2) +\n                separator +\n                zeroFill(~~offset % 60, 2)\n            );\n        });\n    }\n\n    offset('Z', ':');\n    offset('ZZ', '');\n\n    // PARSING\n\n    addRegexToken('Z', matchShortOffset);\n    addRegexToken('ZZ', matchShortOffset);\n    addParseToken(['Z', 'ZZ'], function (input, array, config) {\n        config._useUTC = true;\n        config._tzm = offsetFromString(matchShortOffset, input);\n    });\n\n    // HELPERS\n\n    // timezone chunker\n    // '+10:00' > ['10',  '00']\n    // '-1530'  > ['-15', '30']\n    var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n    function offsetFromString(matcher, string) {\n        var matches = (string || '').match(matcher),\n            chunk,\n            parts,\n            minutes;\n\n        if (matches === null) {\n            return null;\n        }\n\n        chunk = matches[matches.length - 1] || [];\n        parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n        minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n        return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n    }\n\n    // Return a moment from input, that is local/utc/zone equivalent to model.\n    function cloneWithOffset(input, model) {\n        var res, diff;\n        if (model._isUTC) {\n            res = model.clone();\n            diff =\n                (isMoment(input) || isDate(input)\n                    ? input.valueOf()\n                    : createLocal(input).valueOf()) - res.valueOf();\n            // Use low-level api, because this fn is low-level api.\n            res._d.setTime(res._d.valueOf() + diff);\n            hooks.updateOffset(res, false);\n            return res;\n        } else {\n            return createLocal(input).local();\n        }\n    }\n\n    function getDateOffset(m) {\n        // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n        // https://github.com/moment/moment/pull/1871\n        return -Math.round(m._d.getTimezoneOffset());\n    }\n\n    // HOOKS\n\n    // This function will be called whenever a moment is mutated.\n    // It is intended to keep the offset in sync with the timezone.\n    hooks.updateOffset = function () {};\n\n    // MOMENTS\n\n    // keepLocalTime = true means only change the timezone, without\n    // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n    // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n    // +0200, so we adjust the time as needed, to be valid.\n    //\n    // Keeping the time actually adds/subtracts (one hour)\n    // from the actual represented time. That is why we call updateOffset\n    // a second time. In case it wants us to change the offset again\n    // _changeInProgress == true case, then we have to adjust, because\n    // there is no such time in the given timezone.\n    function getSetOffset(input, keepLocalTime, keepMinutes) {\n        var offset = this._offset || 0,\n            localAdjust;\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n        if (input != null) {\n            if (typeof input === 'string') {\n                input = offsetFromString(matchShortOffset, input);\n                if (input === null) {\n                    return this;\n                }\n            } else if (Math.abs(input) < 16 && !keepMinutes) {\n                input = input * 60;\n            }\n            if (!this._isUTC && keepLocalTime) {\n                localAdjust = getDateOffset(this);\n            }\n            this._offset = input;\n            this._isUTC = true;\n            if (localAdjust != null) {\n                this.add(localAdjust, 'm');\n            }\n            if (offset !== input) {\n                if (!keepLocalTime || this._changeInProgress) {\n                    addSubtract(\n                        this,\n                        createDuration(input - offset, 'm'),\n                        1,\n                        false\n                    );\n                } else if (!this._changeInProgress) {\n                    this._changeInProgress = true;\n                    hooks.updateOffset(this, true);\n                    this._changeInProgress = null;\n                }\n            }\n            return this;\n        } else {\n            return this._isUTC ? offset : getDateOffset(this);\n        }\n    }\n\n    function getSetZone(input, keepLocalTime) {\n        if (input != null) {\n            if (typeof input !== 'string') {\n                input = -input;\n            }\n\n            this.utcOffset(input, keepLocalTime);\n\n            return this;\n        } else {\n            return -this.utcOffset();\n        }\n    }\n\n    function setOffsetToUTC(keepLocalTime) {\n        return this.utcOffset(0, keepLocalTime);\n    }\n\n    function setOffsetToLocal(keepLocalTime) {\n        if (this._isUTC) {\n            this.utcOffset(0, keepLocalTime);\n            this._isUTC = false;\n\n            if (keepLocalTime) {\n                this.subtract(getDateOffset(this), 'm');\n            }\n        }\n        return this;\n    }\n\n    function setOffsetToParsedOffset() {\n        if (this._tzm != null) {\n            this.utcOffset(this._tzm, false, true);\n        } else if (typeof this._i === 'string') {\n            var tZone = offsetFromString(matchOffset, this._i);\n            if (tZone != null) {\n                this.utcOffset(tZone);\n            } else {\n                this.utcOffset(0, true);\n            }\n        }\n        return this;\n    }\n\n    function hasAlignedHourOffset(input) {\n        if (!this.isValid()) {\n            return false;\n        }\n        input = input ? createLocal(input).utcOffset() : 0;\n\n        return (this.utcOffset() - input) % 60 === 0;\n    }\n\n    function isDaylightSavingTime() {\n        return (\n            this.utcOffset() > this.clone().month(0).utcOffset() ||\n            this.utcOffset() > this.clone().month(5).utcOffset()\n        );\n    }\n\n    function isDaylightSavingTimeShifted() {\n        if (!isUndefined(this._isDSTShifted)) {\n            return this._isDSTShifted;\n        }\n\n        var c = {},\n            other;\n\n        copyConfig(c, this);\n        c = prepareConfig(c);\n\n        if (c._a) {\n            other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n            this._isDSTShifted =\n                this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n        } else {\n            this._isDSTShifted = false;\n        }\n\n        return this._isDSTShifted;\n    }\n\n    function isLocal() {\n        return this.isValid() ? !this._isUTC : false;\n    }\n\n    function isUtcOffset() {\n        return this.isValid() ? this._isUTC : false;\n    }\n\n    function isUtc() {\n        return this.isValid() ? this._isUTC && this._offset === 0 : false;\n    }\n\n    // ASP.NET json date format regex\n    var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n        // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n        // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n        // and further modified to allow for strings containing both week and day\n        isoRegex =\n            /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n    function createDuration(input, key) {\n        var duration = input,\n            // matching against regexp is expensive, do it on demand\n            match = null,\n            sign,\n            ret,\n            diffRes;\n\n        if (isDuration(input)) {\n            duration = {\n                ms: input._milliseconds,\n                d: input._days,\n                M: input._months,\n            };\n        } else if (isNumber(input) || !isNaN(+input)) {\n            duration = {};\n            if (key) {\n                duration[key] = +input;\n            } else {\n                duration.milliseconds = +input;\n            }\n        } else if ((match = aspNetRegex.exec(input))) {\n            sign = match[1] === '-' ? -1 : 1;\n            duration = {\n                y: 0,\n                d: toInt(match[DATE]) * sign,\n                h: toInt(match[HOUR]) * sign,\n                m: toInt(match[MINUTE]) * sign,\n                s: toInt(match[SECOND]) * sign,\n                ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n            };\n        } else if ((match = isoRegex.exec(input))) {\n            sign = match[1] === '-' ? -1 : 1;\n            duration = {\n                y: parseIso(match[2], sign),\n                M: parseIso(match[3], sign),\n                w: parseIso(match[4], sign),\n                d: parseIso(match[5], sign),\n                h: parseIso(match[6], sign),\n                m: parseIso(match[7], sign),\n                s: parseIso(match[8], sign),\n            };\n        } else if (duration == null) {\n            // checks for null or undefined\n            duration = {};\n        } else if (\n            typeof duration === 'object' &&\n            ('from' in duration || 'to' in duration)\n        ) {\n            diffRes = momentsDifference(\n                createLocal(duration.from),\n                createLocal(duration.to)\n            );\n\n            duration = {};\n            duration.ms = diffRes.milliseconds;\n            duration.M = diffRes.months;\n        }\n\n        ret = new Duration(duration);\n\n        if (isDuration(input) && hasOwnProp(input, '_locale')) {\n            ret._locale = input._locale;\n        }\n\n        if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n            ret._isValid = input._isValid;\n        }\n\n        return ret;\n    }\n\n    createDuration.fn = Duration.prototype;\n    createDuration.invalid = createInvalid$1;\n\n    function parseIso(inp, sign) {\n        // We'd normally use ~~inp for this, but unfortunately it also\n        // converts floats to ints.\n        // inp may be undefined, so careful calling replace on it.\n        var res = inp && parseFloat(inp.replace(',', '.'));\n        // apply sign while we're at it\n        return (isNaN(res) ? 0 : res) * sign;\n    }\n\n    function positiveMomentsDifference(base, other) {\n        var res = {};\n\n        res.months =\n            other.month() - base.month() + (other.year() - base.year()) * 12;\n        if (base.clone().add(res.months, 'M').isAfter(other)) {\n            --res.months;\n        }\n\n        res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n        return res;\n    }\n\n    function momentsDifference(base, other) {\n        var res;\n        if (!(base.isValid() && other.isValid())) {\n            return { milliseconds: 0, months: 0 };\n        }\n\n        other = cloneWithOffset(other, base);\n        if (base.isBefore(other)) {\n            res = positiveMomentsDifference(base, other);\n        } else {\n            res = positiveMomentsDifference(other, base);\n            res.milliseconds = -res.milliseconds;\n            res.months = -res.months;\n        }\n\n        return res;\n    }\n\n    // TODO: remove 'name' arg after deprecation is removed\n    function createAdder(direction, name) {\n        return function (val, period) {\n            var dur, tmp;\n            //invert the arguments, but complain about it\n            if (period !== null && !isNaN(+period)) {\n                deprecateSimple(\n                    name,\n                    'moment().' +\n                        name +\n                        '(period, number) is deprecated. Please use moment().' +\n                        name +\n                        '(number, period). ' +\n                        'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n                );\n                tmp = val;\n                val = period;\n                period = tmp;\n            }\n\n            dur = createDuration(val, period);\n            addSubtract(this, dur, direction);\n            return this;\n        };\n    }\n\n    function addSubtract(mom, duration, isAdding, updateOffset) {\n        var milliseconds = duration._milliseconds,\n            days = absRound(duration._days),\n            months = absRound(duration._months);\n\n        if (!mom.isValid()) {\n            // No op\n            return;\n        }\n\n        updateOffset = updateOffset == null ? true : updateOffset;\n\n        if (months) {\n            setMonth(mom, get(mom, 'Month') + months * isAdding);\n        }\n        if (days) {\n            set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n        }\n        if (milliseconds) {\n            mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n        }\n        if (updateOffset) {\n            hooks.updateOffset(mom, days || months);\n        }\n    }\n\n    var add = createAdder(1, 'add'),\n        subtract = createAdder(-1, 'subtract');\n\n    function isString(input) {\n        return typeof input === 'string' || input instanceof String;\n    }\n\n    // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n    function isMomentInput(input) {\n        return (\n            isMoment(input) ||\n            isDate(input) ||\n            isString(input) ||\n            isNumber(input) ||\n            isNumberOrStringArray(input) ||\n            isMomentInputObject(input) ||\n            input === null ||\n            input === undefined\n        );\n    }\n\n    function isMomentInputObject(input) {\n        var objectTest = isObject(input) && !isObjectEmpty(input),\n            propertyTest = false,\n            properties = [\n                'years',\n                'year',\n                'y',\n                'months',\n                'month',\n                'M',\n                'days',\n                'day',\n                'd',\n                'dates',\n                'date',\n                'D',\n                'hours',\n                'hour',\n                'h',\n                'minutes',\n                'minute',\n                'm',\n                'seconds',\n                'second',\n                's',\n                'milliseconds',\n                'millisecond',\n                'ms',\n            ],\n            i,\n            property,\n            propertyLen = properties.length;\n\n        for (i = 0; i < propertyLen; i += 1) {\n            property = properties[i];\n            propertyTest = propertyTest || hasOwnProp(input, property);\n        }\n\n        return objectTest && propertyTest;\n    }\n\n    function isNumberOrStringArray(input) {\n        var arrayTest = isArray(input),\n            dataTypeTest = false;\n        if (arrayTest) {\n            dataTypeTest =\n                input.filter(function (item) {\n                    return !isNumber(item) && isString(input);\n                }).length === 0;\n        }\n        return arrayTest && dataTypeTest;\n    }\n\n    function isCalendarSpec(input) {\n        var objectTest = isObject(input) && !isObjectEmpty(input),\n            propertyTest = false,\n            properties = [\n                'sameDay',\n                'nextDay',\n                'lastDay',\n                'nextWeek',\n                'lastWeek',\n                'sameElse',\n            ],\n            i,\n            property;\n\n        for (i = 0; i < properties.length; i += 1) {\n            property = properties[i];\n            propertyTest = propertyTest || hasOwnProp(input, property);\n        }\n\n        return objectTest && propertyTest;\n    }\n\n    function getCalendarFormat(myMoment, now) {\n        var diff = myMoment.diff(now, 'days', true);\n        return diff < -6\n            ? 'sameElse'\n            : diff < -1\n            ? 'lastWeek'\n            : diff < 0\n            ? 'lastDay'\n            : diff < 1\n            ? 'sameDay'\n            : diff < 2\n            ? 'nextDay'\n            : diff < 7\n            ? 'nextWeek'\n            : 'sameElse';\n    }\n\n    function calendar$1(time, formats) {\n        // Support for single parameter, formats only overload to the calendar function\n        if (arguments.length === 1) {\n            if (!arguments[0]) {\n                time = undefined;\n                formats = undefined;\n            } else if (isMomentInput(arguments[0])) {\n                time = arguments[0];\n                formats = undefined;\n            } else if (isCalendarSpec(arguments[0])) {\n                formats = arguments[0];\n                time = undefined;\n            }\n        }\n        // We want to compare the start of today, vs this.\n        // Getting start-of-today depends on whether we're local/utc/offset or not.\n        var now = time || createLocal(),\n            sod = cloneWithOffset(now, this).startOf('day'),\n            format = hooks.calendarFormat(this, sod) || 'sameElse',\n            output =\n                formats &&\n                (isFunction(formats[format])\n                    ? formats[format].call(this, now)\n                    : formats[format]);\n\n        return this.format(\n            output || this.localeData().calendar(format, this, createLocal(now))\n        );\n    }\n\n    function clone() {\n        return new Moment(this);\n    }\n\n    function isAfter(input, units) {\n        var localInput = isMoment(input) ? input : createLocal(input);\n        if (!(this.isValid() && localInput.isValid())) {\n            return false;\n        }\n        units = normalizeUnits(units) || 'millisecond';\n        if (units === 'millisecond') {\n            return this.valueOf() > localInput.valueOf();\n        } else {\n            return localInput.valueOf() < this.clone().startOf(units).valueOf();\n        }\n    }\n\n    function isBefore(input, units) {\n        var localInput = isMoment(input) ? input : createLocal(input);\n        if (!(this.isValid() && localInput.isValid())) {\n            return false;\n        }\n        units = normalizeUnits(units) || 'millisecond';\n        if (units === 'millisecond') {\n            return this.valueOf() < localInput.valueOf();\n        } else {\n            return this.clone().endOf(units).valueOf() < localInput.valueOf();\n        }\n    }\n\n    function isBetween(from, to, units, inclusivity) {\n        var localFrom = isMoment(from) ? from : createLocal(from),\n            localTo = isMoment(to) ? to : createLocal(to);\n        if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n            return false;\n        }\n        inclusivity = inclusivity || '()';\n        return (\n            (inclusivity[0] === '('\n                ? this.isAfter(localFrom, units)\n                : !this.isBefore(localFrom, units)) &&\n            (inclusivity[1] === ')'\n                ? this.isBefore(localTo, units)\n                : !this.isAfter(localTo, units))\n        );\n    }\n\n    function isSame(input, units) {\n        var localInput = isMoment(input) ? input : createLocal(input),\n            inputMs;\n        if (!(this.isValid() && localInput.isValid())) {\n            return false;\n        }\n        units = normalizeUnits(units) || 'millisecond';\n        if (units === 'millisecond') {\n            return this.valueOf() === localInput.valueOf();\n        } else {\n            inputMs = localInput.valueOf();\n            return (\n                this.clone().startOf(units).valueOf() <= inputMs &&\n                inputMs <= this.clone().endOf(units).valueOf()\n            );\n        }\n    }\n\n    function isSameOrAfter(input, units) {\n        return this.isSame(input, units) || this.isAfter(input, units);\n    }\n\n    function isSameOrBefore(input, units) {\n        return this.isSame(input, units) || this.isBefore(input, units);\n    }\n\n    function diff(input, units, asFloat) {\n        var that, zoneDelta, output;\n\n        if (!this.isValid()) {\n            return NaN;\n        }\n\n        that = cloneWithOffset(input, this);\n\n        if (!that.isValid()) {\n            return NaN;\n        }\n\n        zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n        units = normalizeUnits(units);\n\n        switch (units) {\n            case 'year':\n                output = monthDiff(this, that) / 12;\n                break;\n            case 'month':\n                output = monthDiff(this, that);\n                break;\n            case 'quarter':\n                output = monthDiff(this, that) / 3;\n                break;\n            case 'second':\n                output = (this - that) / 1e3;\n                break; // 1000\n            case 'minute':\n                output = (this - that) / 6e4;\n                break; // 1000 * 60\n            case 'hour':\n                output = (this - that) / 36e5;\n                break; // 1000 * 60 * 60\n            case 'day':\n                output = (this - that - zoneDelta) / 864e5;\n                break; // 1000 * 60 * 60 * 24, negate dst\n            case 'week':\n                output = (this - that - zoneDelta) / 6048e5;\n                break; // 1000 * 60 * 60 * 24 * 7, negate dst\n            default:\n                output = this - that;\n        }\n\n        return asFloat ? output : absFloor(output);\n    }\n\n    function monthDiff(a, b) {\n        if (a.date() < b.date()) {\n            // end-of-month calculations work correct when the start month has more\n            // days than the end month.\n            return -monthDiff(b, a);\n        }\n        // difference in months\n        var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n            // b is in (anchor - 1 month, anchor + 1 month)\n            anchor = a.clone().add(wholeMonthDiff, 'months'),\n            anchor2,\n            adjust;\n\n        if (b - anchor < 0) {\n            anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n            // linear across the month\n            adjust = (b - anchor) / (anchor - anchor2);\n        } else {\n            anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n            // linear across the month\n            adjust = (b - anchor) / (anchor2 - anchor);\n        }\n\n        //check for negative zero, return zero if negative zero\n        return -(wholeMonthDiff + adjust) || 0;\n    }\n\n    hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n    hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n    function toString() {\n        return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n    }\n\n    function toISOString(keepOffset) {\n        if (!this.isValid()) {\n            return null;\n        }\n        var utc = keepOffset !== true,\n            m = utc ? this.clone().utc() : this;\n        if (m.year() < 0 || m.year() > 9999) {\n            return formatMoment(\n                m,\n                utc\n                    ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n                    : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n            );\n        }\n        if (isFunction(Date.prototype.toISOString)) {\n            // native implementation is ~50x faster, use it when we can\n            if (utc) {\n                return this.toDate().toISOString();\n            } else {\n                return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n                    .toISOString()\n                    .replace('Z', formatMoment(m, 'Z'));\n            }\n        }\n        return formatMoment(\n            m,\n            utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n        );\n    }\n\n    /**\n     * Return a human readable representation of a moment that can\n     * also be evaluated to get a new moment which is the same\n     *\n     * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n     */\n    function inspect() {\n        if (!this.isValid()) {\n            return 'moment.invalid(/* ' + this._i + ' */)';\n        }\n        var func = 'moment',\n            zone = '',\n            prefix,\n            year,\n            datetime,\n            suffix;\n        if (!this.isLocal()) {\n            func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n            zone = 'Z';\n        }\n        prefix = '[' + func + '(\"]';\n        year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n        datetime = '-MM-DD[T]HH:mm:ss.SSS';\n        suffix = zone + '[\")]';\n\n        return this.format(prefix + year + datetime + suffix);\n    }\n\n    function format(inputString) {\n        if (!inputString) {\n            inputString = this.isUtc()\n                ? hooks.defaultFormatUtc\n                : hooks.defaultFormat;\n        }\n        var output = formatMoment(this, inputString);\n        return this.localeData().postformat(output);\n    }\n\n    function from(time, withoutSuffix) {\n        if (\n            this.isValid() &&\n            ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n        ) {\n            return createDuration({ to: this, from: time })\n                .locale(this.locale())\n                .humanize(!withoutSuffix);\n        } else {\n            return this.localeData().invalidDate();\n        }\n    }\n\n    function fromNow(withoutSuffix) {\n        return this.from(createLocal(), withoutSuffix);\n    }\n\n    function to(time, withoutSuffix) {\n        if (\n            this.isValid() &&\n            ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n        ) {\n            return createDuration({ from: this, to: time })\n                .locale(this.locale())\n                .humanize(!withoutSuffix);\n        } else {\n            return this.localeData().invalidDate();\n        }\n    }\n\n    function toNow(withoutSuffix) {\n        return this.to(createLocal(), withoutSuffix);\n    }\n\n    // If passed a locale key, it will set the locale for this\n    // instance.  Otherwise, it will return the locale configuration\n    // variables for this instance.\n    function locale(key) {\n        var newLocaleData;\n\n        if (key === undefined) {\n            return this._locale._abbr;\n        } else {\n            newLocaleData = getLocale(key);\n            if (newLocaleData != null) {\n                this._locale = newLocaleData;\n            }\n            return this;\n        }\n    }\n\n    var lang = deprecate(\n        'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n        function (key) {\n            if (key === undefined) {\n                return this.localeData();\n            } else {\n                return this.locale(key);\n            }\n        }\n    );\n\n    function localeData() {\n        return this._locale;\n    }\n\n    var MS_PER_SECOND = 1000,\n        MS_PER_MINUTE = 60 * MS_PER_SECOND,\n        MS_PER_HOUR = 60 * MS_PER_MINUTE,\n        MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n    // actual modulo - handles negative numbers (for dates before 1970):\n    function mod$1(dividend, divisor) {\n        return ((dividend % divisor) + divisor) % divisor;\n    }\n\n    function localStartOfDate(y, m, d) {\n        // the date constructor remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            // preserve leap years using a full 400 year cycle, then reset\n            return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n        } else {\n            return new Date(y, m, d).valueOf();\n        }\n    }\n\n    function utcStartOfDate(y, m, d) {\n        // Date.UTC remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            // preserve leap years using a full 400 year cycle, then reset\n            return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n        } else {\n            return Date.UTC(y, m, d);\n        }\n    }\n\n    function startOf(units) {\n        var time, startOfDate;\n        units = normalizeUnits(units);\n        if (units === undefined || units === 'millisecond' || !this.isValid()) {\n            return this;\n        }\n\n        startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n        switch (units) {\n            case 'year':\n                time = startOfDate(this.year(), 0, 1);\n                break;\n            case 'quarter':\n                time = startOfDate(\n                    this.year(),\n                    this.month() - (this.month() % 3),\n                    1\n                );\n                break;\n            case 'month':\n                time = startOfDate(this.year(), this.month(), 1);\n                break;\n            case 'week':\n                time = startOfDate(\n                    this.year(),\n                    this.month(),\n                    this.date() - this.weekday()\n                );\n                break;\n            case 'isoWeek':\n                time = startOfDate(\n                    this.year(),\n                    this.month(),\n                    this.date() - (this.isoWeekday() - 1)\n                );\n                break;\n            case 'day':\n            case 'date':\n                time = startOfDate(this.year(), this.month(), this.date());\n                break;\n            case 'hour':\n                time = this._d.valueOf();\n                time -= mod$1(\n                    time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n                    MS_PER_HOUR\n                );\n                break;\n            case 'minute':\n                time = this._d.valueOf();\n                time -= mod$1(time, MS_PER_MINUTE);\n                break;\n            case 'second':\n                time = this._d.valueOf();\n                time -= mod$1(time, MS_PER_SECOND);\n                break;\n        }\n\n        this._d.setTime(time);\n        hooks.updateOffset(this, true);\n        return this;\n    }\n\n    function endOf(units) {\n        var time, startOfDate;\n        units = normalizeUnits(units);\n        if (units === undefined || units === 'millisecond' || !this.isValid()) {\n            return this;\n        }\n\n        startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n        switch (units) {\n            case 'year':\n                time = startOfDate(this.year() + 1, 0, 1) - 1;\n                break;\n            case 'quarter':\n                time =\n                    startOfDate(\n                        this.year(),\n                        this.month() - (this.month() % 3) + 3,\n                        1\n                    ) - 1;\n                break;\n            case 'month':\n                time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n                break;\n            case 'week':\n                time =\n                    startOfDate(\n                        this.year(),\n                        this.month(),\n                        this.date() - this.weekday() + 7\n                    ) - 1;\n                break;\n            case 'isoWeek':\n                time =\n                    startOfDate(\n                        this.year(),\n                        this.month(),\n                        this.date() - (this.isoWeekday() - 1) + 7\n                    ) - 1;\n                break;\n            case 'day':\n            case 'date':\n                time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n                break;\n            case 'hour':\n                time = this._d.valueOf();\n                time +=\n                    MS_PER_HOUR -\n                    mod$1(\n                        time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n                        MS_PER_HOUR\n                    ) -\n                    1;\n                break;\n            case 'minute':\n                time = this._d.valueOf();\n                time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n                break;\n            case 'second':\n                time = this._d.valueOf();\n                time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n                break;\n        }\n\n        this._d.setTime(time);\n        hooks.updateOffset(this, true);\n        return this;\n    }\n\n    function valueOf() {\n        return this._d.valueOf() - (this._offset || 0) * 60000;\n    }\n\n    function unix() {\n        return Math.floor(this.valueOf() / 1000);\n    }\n\n    function toDate() {\n        return new Date(this.valueOf());\n    }\n\n    function toArray() {\n        var m = this;\n        return [\n            m.year(),\n            m.month(),\n            m.date(),\n            m.hour(),\n            m.minute(),\n            m.second(),\n            m.millisecond(),\n        ];\n    }\n\n    function toObject() {\n        var m = this;\n        return {\n            years: m.year(),\n            months: m.month(),\n            date: m.date(),\n            hours: m.hours(),\n            minutes: m.minutes(),\n            seconds: m.seconds(),\n            milliseconds: m.milliseconds(),\n        };\n    }\n\n    function toJSON() {\n        // new Date(NaN).toJSON() === null\n        return this.isValid() ? this.toISOString() : null;\n    }\n\n    function isValid$2() {\n        return isValid(this);\n    }\n\n    function parsingFlags() {\n        return extend({}, getParsingFlags(this));\n    }\n\n    function invalidAt() {\n        return getParsingFlags(this).overflow;\n    }\n\n    function creationData() {\n        return {\n            input: this._i,\n            format: this._f,\n            locale: this._locale,\n            isUTC: this._isUTC,\n            strict: this._strict,\n        };\n    }\n\n    addFormatToken('N', 0, 0, 'eraAbbr');\n    addFormatToken('NN', 0, 0, 'eraAbbr');\n    addFormatToken('NNN', 0, 0, 'eraAbbr');\n    addFormatToken('NNNN', 0, 0, 'eraName');\n    addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n    addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n    addFormatToken('y', ['yy', 2], 0, 'eraYear');\n    addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n    addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n    addRegexToken('N', matchEraAbbr);\n    addRegexToken('NN', matchEraAbbr);\n    addRegexToken('NNN', matchEraAbbr);\n    addRegexToken('NNNN', matchEraName);\n    addRegexToken('NNNNN', matchEraNarrow);\n\n    addParseToken(\n        ['N', 'NN', 'NNN', 'NNNN', 'NNNNN'],\n        function (input, array, config, token) {\n            var era = config._locale.erasParse(input, token, config._strict);\n            if (era) {\n                getParsingFlags(config).era = era;\n            } else {\n                getParsingFlags(config).invalidEra = input;\n            }\n        }\n    );\n\n    addRegexToken('y', matchUnsigned);\n    addRegexToken('yy', matchUnsigned);\n    addRegexToken('yyy', matchUnsigned);\n    addRegexToken('yyyy', matchUnsigned);\n    addRegexToken('yo', matchEraYearOrdinal);\n\n    addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n    addParseToken(['yo'], function (input, array, config, token) {\n        var match;\n        if (config._locale._eraYearOrdinalRegex) {\n            match = input.match(config._locale._eraYearOrdinalRegex);\n        }\n\n        if (config._locale.eraYearOrdinalParse) {\n            array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n        } else {\n            array[YEAR] = parseInt(input, 10);\n        }\n    });\n\n    function localeEras(m, format) {\n        var i,\n            l,\n            date,\n            eras = this._eras || getLocale('en')._eras;\n        for (i = 0, l = eras.length; i < l; ++i) {\n            switch (typeof eras[i].since) {\n                case 'string':\n                    // truncate time\n                    date = hooks(eras[i].since).startOf('day');\n                    eras[i].since = date.valueOf();\n                    break;\n            }\n\n            switch (typeof eras[i].until) {\n                case 'undefined':\n                    eras[i].until = +Infinity;\n                    break;\n                case 'string':\n                    // truncate time\n                    date = hooks(eras[i].until).startOf('day').valueOf();\n                    eras[i].until = date.valueOf();\n                    break;\n            }\n        }\n        return eras;\n    }\n\n    function localeErasParse(eraName, format, strict) {\n        var i,\n            l,\n            eras = this.eras(),\n            name,\n            abbr,\n            narrow;\n        eraName = eraName.toUpperCase();\n\n        for (i = 0, l = eras.length; i < l; ++i) {\n            name = eras[i].name.toUpperCase();\n            abbr = eras[i].abbr.toUpperCase();\n            narrow = eras[i].narrow.toUpperCase();\n\n            if (strict) {\n                switch (format) {\n                    case 'N':\n                    case 'NN':\n                    case 'NNN':\n                        if (abbr === eraName) {\n                            return eras[i];\n                        }\n                        break;\n\n                    case 'NNNN':\n                        if (name === eraName) {\n                            return eras[i];\n                        }\n                        break;\n\n                    case 'NNNNN':\n                        if (narrow === eraName) {\n                            return eras[i];\n                        }\n                        break;\n                }\n            } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n                return eras[i];\n            }\n        }\n    }\n\n    function localeErasConvertYear(era, year) {\n        var dir = era.since <= era.until ? +1 : -1;\n        if (year === undefined) {\n            return hooks(era.since).year();\n        } else {\n            return hooks(era.since).year() + (year - era.offset) * dir;\n        }\n    }\n\n    function getEraName() {\n        var i,\n            l,\n            val,\n            eras = this.localeData().eras();\n        for (i = 0, l = eras.length; i < l; ++i) {\n            // truncate time\n            val = this.clone().startOf('day').valueOf();\n\n            if (eras[i].since <= val && val <= eras[i].until) {\n                return eras[i].name;\n            }\n            if (eras[i].until <= val && val <= eras[i].since) {\n                return eras[i].name;\n            }\n        }\n\n        return '';\n    }\n\n    function getEraNarrow() {\n        var i,\n            l,\n            val,\n            eras = this.localeData().eras();\n        for (i = 0, l = eras.length; i < l; ++i) {\n            // truncate time\n            val = this.clone().startOf('day').valueOf();\n\n            if (eras[i].since <= val && val <= eras[i].until) {\n                return eras[i].narrow;\n            }\n            if (eras[i].until <= val && val <= eras[i].since) {\n                return eras[i].narrow;\n            }\n        }\n\n        return '';\n    }\n\n    function getEraAbbr() {\n        var i,\n            l,\n            val,\n            eras = this.localeData().eras();\n        for (i = 0, l = eras.length; i < l; ++i) {\n            // truncate time\n            val = this.clone().startOf('day').valueOf();\n\n            if (eras[i].since <= val && val <= eras[i].until) {\n                return eras[i].abbr;\n            }\n            if (eras[i].until <= val && val <= eras[i].since) {\n                return eras[i].abbr;\n            }\n        }\n\n        return '';\n    }\n\n    function getEraYear() {\n        var i,\n            l,\n            dir,\n            val,\n            eras = this.localeData().eras();\n        for (i = 0, l = eras.length; i < l; ++i) {\n            dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n            // truncate time\n            val = this.clone().startOf('day').valueOf();\n\n            if (\n                (eras[i].since <= val && val <= eras[i].until) ||\n                (eras[i].until <= val && val <= eras[i].since)\n            ) {\n                return (\n                    (this.year() - hooks(eras[i].since).year()) * dir +\n                    eras[i].offset\n                );\n            }\n        }\n\n        return this.year();\n    }\n\n    function erasNameRegex(isStrict) {\n        if (!hasOwnProp(this, '_erasNameRegex')) {\n            computeErasParse.call(this);\n        }\n        return isStrict ? this._erasNameRegex : this._erasRegex;\n    }\n\n    function erasAbbrRegex(isStrict) {\n        if (!hasOwnProp(this, '_erasAbbrRegex')) {\n            computeErasParse.call(this);\n        }\n        return isStrict ? this._erasAbbrRegex : this._erasRegex;\n    }\n\n    function erasNarrowRegex(isStrict) {\n        if (!hasOwnProp(this, '_erasNarrowRegex')) {\n            computeErasParse.call(this);\n        }\n        return isStrict ? this._erasNarrowRegex : this._erasRegex;\n    }\n\n    function matchEraAbbr(isStrict, locale) {\n        return locale.erasAbbrRegex(isStrict);\n    }\n\n    function matchEraName(isStrict, locale) {\n        return locale.erasNameRegex(isStrict);\n    }\n\n    function matchEraNarrow(isStrict, locale) {\n        return locale.erasNarrowRegex(isStrict);\n    }\n\n    function matchEraYearOrdinal(isStrict, locale) {\n        return locale._eraYearOrdinalRegex || matchUnsigned;\n    }\n\n    function computeErasParse() {\n        var abbrPieces = [],\n            namePieces = [],\n            narrowPieces = [],\n            mixedPieces = [],\n            i,\n            l,\n            eras = this.eras();\n\n        for (i = 0, l = eras.length; i < l; ++i) {\n            namePieces.push(regexEscape(eras[i].name));\n            abbrPieces.push(regexEscape(eras[i].abbr));\n            narrowPieces.push(regexEscape(eras[i].narrow));\n\n            mixedPieces.push(regexEscape(eras[i].name));\n            mixedPieces.push(regexEscape(eras[i].abbr));\n            mixedPieces.push(regexEscape(eras[i].narrow));\n        }\n\n        this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n        this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n        this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n        this._erasNarrowRegex = new RegExp(\n            '^(' + narrowPieces.join('|') + ')',\n            'i'\n        );\n    }\n\n    // FORMATTING\n\n    addFormatToken(0, ['gg', 2], 0, function () {\n        return this.weekYear() % 100;\n    });\n\n    addFormatToken(0, ['GG', 2], 0, function () {\n        return this.isoWeekYear() % 100;\n    });\n\n    function addWeekYearFormatToken(token, getter) {\n        addFormatToken(0, [token, token.length], 0, getter);\n    }\n\n    addWeekYearFormatToken('gggg', 'weekYear');\n    addWeekYearFormatToken('ggggg', 'weekYear');\n    addWeekYearFormatToken('GGGG', 'isoWeekYear');\n    addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n    // ALIASES\n\n    addUnitAlias('weekYear', 'gg');\n    addUnitAlias('isoWeekYear', 'GG');\n\n    // PRIORITY\n\n    addUnitPriority('weekYear', 1);\n    addUnitPriority('isoWeekYear', 1);\n\n    // PARSING\n\n    addRegexToken('G', matchSigned);\n    addRegexToken('g', matchSigned);\n    addRegexToken('GG', match1to2, match2);\n    addRegexToken('gg', match1to2, match2);\n    addRegexToken('GGGG', match1to4, match4);\n    addRegexToken('gggg', match1to4, match4);\n    addRegexToken('GGGGG', match1to6, match6);\n    addRegexToken('ggggg', match1to6, match6);\n\n    addWeekParseToken(\n        ['gggg', 'ggggg', 'GGGG', 'GGGGG'],\n        function (input, week, config, token) {\n            week[token.substr(0, 2)] = toInt(input);\n        }\n    );\n\n    addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n        week[token] = hooks.parseTwoDigitYear(input);\n    });\n\n    // MOMENTS\n\n    function getSetWeekYear(input) {\n        return getSetWeekYearHelper.call(\n            this,\n            input,\n            this.week(),\n            this.weekday(),\n            this.localeData()._week.dow,\n            this.localeData()._week.doy\n        );\n    }\n\n    function getSetISOWeekYear(input) {\n        return getSetWeekYearHelper.call(\n            this,\n            input,\n            this.isoWeek(),\n            this.isoWeekday(),\n            1,\n            4\n        );\n    }\n\n    function getISOWeeksInYear() {\n        return weeksInYear(this.year(), 1, 4);\n    }\n\n    function getISOWeeksInISOWeekYear() {\n        return weeksInYear(this.isoWeekYear(), 1, 4);\n    }\n\n    function getWeeksInYear() {\n        var weekInfo = this.localeData()._week;\n        return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n    }\n\n    function getWeeksInWeekYear() {\n        var weekInfo = this.localeData()._week;\n        return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n    }\n\n    function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n        var weeksTarget;\n        if (input == null) {\n            return weekOfYear(this, dow, doy).year;\n        } else {\n            weeksTarget = weeksInYear(input, dow, doy);\n            if (week > weeksTarget) {\n                week = weeksTarget;\n            }\n            return setWeekAll.call(this, input, week, weekday, dow, doy);\n        }\n    }\n\n    function setWeekAll(weekYear, week, weekday, dow, doy) {\n        var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n            date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n        this.year(date.getUTCFullYear());\n        this.month(date.getUTCMonth());\n        this.date(date.getUTCDate());\n        return this;\n    }\n\n    // FORMATTING\n\n    addFormatToken('Q', 0, 'Qo', 'quarter');\n\n    // ALIASES\n\n    addUnitAlias('quarter', 'Q');\n\n    // PRIORITY\n\n    addUnitPriority('quarter', 7);\n\n    // PARSING\n\n    addRegexToken('Q', match1);\n    addParseToken('Q', function (input, array) {\n        array[MONTH] = (toInt(input) - 1) * 3;\n    });\n\n    // MOMENTS\n\n    function getSetQuarter(input) {\n        return input == null\n            ? Math.ceil((this.month() + 1) / 3)\n            : this.month((input - 1) * 3 + (this.month() % 3));\n    }\n\n    // FORMATTING\n\n    addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n    // ALIASES\n\n    addUnitAlias('date', 'D');\n\n    // PRIORITY\n    addUnitPriority('date', 9);\n\n    // PARSING\n\n    addRegexToken('D', match1to2);\n    addRegexToken('DD', match1to2, match2);\n    addRegexToken('Do', function (isStrict, locale) {\n        // TODO: Remove \"ordinalParse\" fallback in next major release.\n        return isStrict\n            ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n            : locale._dayOfMonthOrdinalParseLenient;\n    });\n\n    addParseToken(['D', 'DD'], DATE);\n    addParseToken('Do', function (input, array) {\n        array[DATE] = toInt(input.match(match1to2)[0]);\n    });\n\n    // MOMENTS\n\n    var getSetDayOfMonth = makeGetSet('Date', true);\n\n    // FORMATTING\n\n    addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n    // ALIASES\n\n    addUnitAlias('dayOfYear', 'DDD');\n\n    // PRIORITY\n    addUnitPriority('dayOfYear', 4);\n\n    // PARSING\n\n    addRegexToken('DDD', match1to3);\n    addRegexToken('DDDD', match3);\n    addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n        config._dayOfYear = toInt(input);\n    });\n\n    // HELPERS\n\n    // MOMENTS\n\n    function getSetDayOfYear(input) {\n        var dayOfYear =\n            Math.round(\n                (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n            ) + 1;\n        return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n    }\n\n    // FORMATTING\n\n    addFormatToken('m', ['mm', 2], 0, 'minute');\n\n    // ALIASES\n\n    addUnitAlias('minute', 'm');\n\n    // PRIORITY\n\n    addUnitPriority('minute', 14);\n\n    // PARSING\n\n    addRegexToken('m', match1to2);\n    addRegexToken('mm', match1to2, match2);\n    addParseToken(['m', 'mm'], MINUTE);\n\n    // MOMENTS\n\n    var getSetMinute = makeGetSet('Minutes', false);\n\n    // FORMATTING\n\n    addFormatToken('s', ['ss', 2], 0, 'second');\n\n    // ALIASES\n\n    addUnitAlias('second', 's');\n\n    // PRIORITY\n\n    addUnitPriority('second', 15);\n\n    // PARSING\n\n    addRegexToken('s', match1to2);\n    addRegexToken('ss', match1to2, match2);\n    addParseToken(['s', 'ss'], SECOND);\n\n    // MOMENTS\n\n    var getSetSecond = makeGetSet('Seconds', false);\n\n    // FORMATTING\n\n    addFormatToken('S', 0, 0, function () {\n        return ~~(this.millisecond() / 100);\n    });\n\n    addFormatToken(0, ['SS', 2], 0, function () {\n        return ~~(this.millisecond() / 10);\n    });\n\n    addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n    addFormatToken(0, ['SSSS', 4], 0, function () {\n        return this.millisecond() * 10;\n    });\n    addFormatToken(0, ['SSSSS', 5], 0, function () {\n        return this.millisecond() * 100;\n    });\n    addFormatToken(0, ['SSSSSS', 6], 0, function () {\n        return this.millisecond() * 1000;\n    });\n    addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n        return this.millisecond() * 10000;\n    });\n    addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n        return this.millisecond() * 100000;\n    });\n    addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n        return this.millisecond() * 1000000;\n    });\n\n    // ALIASES\n\n    addUnitAlias('millisecond', 'ms');\n\n    // PRIORITY\n\n    addUnitPriority('millisecond', 16);\n\n    // PARSING\n\n    addRegexToken('S', match1to3, match1);\n    addRegexToken('SS', match1to3, match2);\n    addRegexToken('SSS', match1to3, match3);\n\n    var token, getSetMillisecond;\n    for (token = 'SSSS'; token.length <= 9; token += 'S') {\n        addRegexToken(token, matchUnsigned);\n    }\n\n    function parseMs(input, array) {\n        array[MILLISECOND] = toInt(('0.' + input) * 1000);\n    }\n\n    for (token = 'S'; token.length <= 9; token += 'S') {\n        addParseToken(token, parseMs);\n    }\n\n    getSetMillisecond = makeGetSet('Milliseconds', false);\n\n    // FORMATTING\n\n    addFormatToken('z', 0, 0, 'zoneAbbr');\n    addFormatToken('zz', 0, 0, 'zoneName');\n\n    // MOMENTS\n\n    function getZoneAbbr() {\n        return this._isUTC ? 'UTC' : '';\n    }\n\n    function getZoneName() {\n        return this._isUTC ? 'Coordinated Universal Time' : '';\n    }\n\n    var proto = Moment.prototype;\n\n    proto.add = add;\n    proto.calendar = calendar$1;\n    proto.clone = clone;\n    proto.diff = diff;\n    proto.endOf = endOf;\n    proto.format = format;\n    proto.from = from;\n    proto.fromNow = fromNow;\n    proto.to = to;\n    proto.toNow = toNow;\n    proto.get = stringGet;\n    proto.invalidAt = invalidAt;\n    proto.isAfter = isAfter;\n    proto.isBefore = isBefore;\n    proto.isBetween = isBetween;\n    proto.isSame = isSame;\n    proto.isSameOrAfter = isSameOrAfter;\n    proto.isSameOrBefore = isSameOrBefore;\n    proto.isValid = isValid$2;\n    proto.lang = lang;\n    proto.locale = locale;\n    proto.localeData = localeData;\n    proto.max = prototypeMax;\n    proto.min = prototypeMin;\n    proto.parsingFlags = parsingFlags;\n    proto.set = stringSet;\n    proto.startOf = startOf;\n    proto.subtract = subtract;\n    proto.toArray = toArray;\n    proto.toObject = toObject;\n    proto.toDate = toDate;\n    proto.toISOString = toISOString;\n    proto.inspect = inspect;\n    if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n        proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n            return 'Moment<' + this.format() + '>';\n        };\n    }\n    proto.toJSON = toJSON;\n    proto.toString = toString;\n    proto.unix = unix;\n    proto.valueOf = valueOf;\n    proto.creationData = creationData;\n    proto.eraName = getEraName;\n    proto.eraNarrow = getEraNarrow;\n    proto.eraAbbr = getEraAbbr;\n    proto.eraYear = getEraYear;\n    proto.year = getSetYear;\n    proto.isLeapYear = getIsLeapYear;\n    proto.weekYear = getSetWeekYear;\n    proto.isoWeekYear = getSetISOWeekYear;\n    proto.quarter = proto.quarters = getSetQuarter;\n    proto.month = getSetMonth;\n    proto.daysInMonth = getDaysInMonth;\n    proto.week = proto.weeks = getSetWeek;\n    proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n    proto.weeksInYear = getWeeksInYear;\n    proto.weeksInWeekYear = getWeeksInWeekYear;\n    proto.isoWeeksInYear = getISOWeeksInYear;\n    proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n    proto.date = getSetDayOfMonth;\n    proto.day = proto.days = getSetDayOfWeek;\n    proto.weekday = getSetLocaleDayOfWeek;\n    proto.isoWeekday = getSetISODayOfWeek;\n    proto.dayOfYear = getSetDayOfYear;\n    proto.hour = proto.hours = getSetHour;\n    proto.minute = proto.minutes = getSetMinute;\n    proto.second = proto.seconds = getSetSecond;\n    proto.millisecond = proto.milliseconds = getSetMillisecond;\n    proto.utcOffset = getSetOffset;\n    proto.utc = setOffsetToUTC;\n    proto.local = setOffsetToLocal;\n    proto.parseZone = setOffsetToParsedOffset;\n    proto.hasAlignedHourOffset = hasAlignedHourOffset;\n    proto.isDST = isDaylightSavingTime;\n    proto.isLocal = isLocal;\n    proto.isUtcOffset = isUtcOffset;\n    proto.isUtc = isUtc;\n    proto.isUTC = isUtc;\n    proto.zoneAbbr = getZoneAbbr;\n    proto.zoneName = getZoneName;\n    proto.dates = deprecate(\n        'dates accessor is deprecated. Use date instead.',\n        getSetDayOfMonth\n    );\n    proto.months = deprecate(\n        'months accessor is deprecated. Use month instead',\n        getSetMonth\n    );\n    proto.years = deprecate(\n        'years accessor is deprecated. Use year instead',\n        getSetYear\n    );\n    proto.zone = deprecate(\n        'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n        getSetZone\n    );\n    proto.isDSTShifted = deprecate(\n        'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n        isDaylightSavingTimeShifted\n    );\n\n    function createUnix(input) {\n        return createLocal(input * 1000);\n    }\n\n    function createInZone() {\n        return createLocal.apply(null, arguments).parseZone();\n    }\n\n    function preParsePostFormat(string) {\n        return string;\n    }\n\n    var proto$1 = Locale.prototype;\n\n    proto$1.calendar = calendar;\n    proto$1.longDateFormat = longDateFormat;\n    proto$1.invalidDate = invalidDate;\n    proto$1.ordinal = ordinal;\n    proto$1.preparse = preParsePostFormat;\n    proto$1.postformat = preParsePostFormat;\n    proto$1.relativeTime = relativeTime;\n    proto$1.pastFuture = pastFuture;\n    proto$1.set = set;\n    proto$1.eras = localeEras;\n    proto$1.erasParse = localeErasParse;\n    proto$1.erasConvertYear = localeErasConvertYear;\n    proto$1.erasAbbrRegex = erasAbbrRegex;\n    proto$1.erasNameRegex = erasNameRegex;\n    proto$1.erasNarrowRegex = erasNarrowRegex;\n\n    proto$1.months = localeMonths;\n    proto$1.monthsShort = localeMonthsShort;\n    proto$1.monthsParse = localeMonthsParse;\n    proto$1.monthsRegex = monthsRegex;\n    proto$1.monthsShortRegex = monthsShortRegex;\n    proto$1.week = localeWeek;\n    proto$1.firstDayOfYear = localeFirstDayOfYear;\n    proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n    proto$1.weekdays = localeWeekdays;\n    proto$1.weekdaysMin = localeWeekdaysMin;\n    proto$1.weekdaysShort = localeWeekdaysShort;\n    proto$1.weekdaysParse = localeWeekdaysParse;\n\n    proto$1.weekdaysRegex = weekdaysRegex;\n    proto$1.weekdaysShortRegex = weekdaysShortRegex;\n    proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n    proto$1.isPM = localeIsPM;\n    proto$1.meridiem = localeMeridiem;\n\n    function get$1(format, index, field, setter) {\n        var locale = getLocale(),\n            utc = createUTC().set(setter, index);\n        return locale[field](utc, format);\n    }\n\n    function listMonthsImpl(format, index, field) {\n        if (isNumber(format)) {\n            index = format;\n            format = undefined;\n        }\n\n        format = format || '';\n\n        if (index != null) {\n            return get$1(format, index, field, 'month');\n        }\n\n        var i,\n            out = [];\n        for (i = 0; i < 12; i++) {\n            out[i] = get$1(format, i, field, 'month');\n        }\n        return out;\n    }\n\n    // ()\n    // (5)\n    // (fmt, 5)\n    // (fmt)\n    // (true)\n    // (true, 5)\n    // (true, fmt, 5)\n    // (true, fmt)\n    function listWeekdaysImpl(localeSorted, format, index, field) {\n        if (typeof localeSorted === 'boolean') {\n            if (isNumber(format)) {\n                index = format;\n                format = undefined;\n            }\n\n            format = format || '';\n        } else {\n            format = localeSorted;\n            index = format;\n            localeSorted = false;\n\n            if (isNumber(format)) {\n                index = format;\n                format = undefined;\n            }\n\n            format = format || '';\n        }\n\n        var locale = getLocale(),\n            shift = localeSorted ? locale._week.dow : 0,\n            i,\n            out = [];\n\n        if (index != null) {\n            return get$1(format, (index + shift) % 7, field, 'day');\n        }\n\n        for (i = 0; i < 7; i++) {\n            out[i] = get$1(format, (i + shift) % 7, field, 'day');\n        }\n        return out;\n    }\n\n    function listMonths(format, index) {\n        return listMonthsImpl(format, index, 'months');\n    }\n\n    function listMonthsShort(format, index) {\n        return listMonthsImpl(format, index, 'monthsShort');\n    }\n\n    function listWeekdays(localeSorted, format, index) {\n        return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n    }\n\n    function listWeekdaysShort(localeSorted, format, index) {\n        return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n    }\n\n    function listWeekdaysMin(localeSorted, format, index) {\n        return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n    }\n\n    getSetGlobalLocale('en', {\n        eras: [\n            {\n                since: '0001-01-01',\n                until: +Infinity,\n                offset: 1,\n                name: 'Anno Domini',\n                narrow: 'AD',\n                abbr: 'AD',\n            },\n            {\n                since: '0000-12-31',\n                until: -Infinity,\n                offset: 1,\n                name: 'Before Christ',\n                narrow: 'BC',\n                abbr: 'BC',\n            },\n        ],\n        dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    toInt((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                        ? 'st'\n                        : b === 2\n                        ? 'nd'\n                        : b === 3\n                        ? 'rd'\n                        : 'th';\n            return number + output;\n        },\n    });\n\n    // Side effect imports\n\n    hooks.lang = deprecate(\n        'moment.lang is deprecated. Use moment.locale instead.',\n        getSetGlobalLocale\n    );\n    hooks.langData = deprecate(\n        'moment.langData is deprecated. Use moment.localeData instead.',\n        getLocale\n    );\n\n    var mathAbs = Math.abs;\n\n    function abs() {\n        var data = this._data;\n\n        this._milliseconds = mathAbs(this._milliseconds);\n        this._days = mathAbs(this._days);\n        this._months = mathAbs(this._months);\n\n        data.milliseconds = mathAbs(data.milliseconds);\n        data.seconds = mathAbs(data.seconds);\n        data.minutes = mathAbs(data.minutes);\n        data.hours = mathAbs(data.hours);\n        data.months = mathAbs(data.months);\n        data.years = mathAbs(data.years);\n\n        return this;\n    }\n\n    function addSubtract$1(duration, input, value, direction) {\n        var other = createDuration(input, value);\n\n        duration._milliseconds += direction * other._milliseconds;\n        duration._days += direction * other._days;\n        duration._months += direction * other._months;\n\n        return duration._bubble();\n    }\n\n    // supports only 2.0-style add(1, 's') or add(duration)\n    function add$1(input, value) {\n        return addSubtract$1(this, input, value, 1);\n    }\n\n    // supports only 2.0-style subtract(1, 's') or subtract(duration)\n    function subtract$1(input, value) {\n        return addSubtract$1(this, input, value, -1);\n    }\n\n    function absCeil(number) {\n        if (number < 0) {\n            return Math.floor(number);\n        } else {\n            return Math.ceil(number);\n        }\n    }\n\n    function bubble() {\n        var milliseconds = this._milliseconds,\n            days = this._days,\n            months = this._months,\n            data = this._data,\n            seconds,\n            minutes,\n            hours,\n            years,\n            monthsFromDays;\n\n        // if we have a mix of positive and negative values, bubble down first\n        // check: https://github.com/moment/moment/issues/2166\n        if (\n            !(\n                (milliseconds >= 0 && days >= 0 && months >= 0) ||\n                (milliseconds <= 0 && days <= 0 && months <= 0)\n            )\n        ) {\n            milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n            days = 0;\n            months = 0;\n        }\n\n        // The following code bubbles up values, see the tests for\n        // examples of what that means.\n        data.milliseconds = milliseconds % 1000;\n\n        seconds = absFloor(milliseconds / 1000);\n        data.seconds = seconds % 60;\n\n        minutes = absFloor(seconds / 60);\n        data.minutes = minutes % 60;\n\n        hours = absFloor(minutes / 60);\n        data.hours = hours % 24;\n\n        days += absFloor(hours / 24);\n\n        // convert days to months\n        monthsFromDays = absFloor(daysToMonths(days));\n        months += monthsFromDays;\n        days -= absCeil(monthsToDays(monthsFromDays));\n\n        // 12 months -> 1 year\n        years = absFloor(months / 12);\n        months %= 12;\n\n        data.days = days;\n        data.months = months;\n        data.years = years;\n\n        return this;\n    }\n\n    function daysToMonths(days) {\n        // 400 years have 146097 days (taking into account leap year rules)\n        // 400 years have 12 months === 4800\n        return (days * 4800) / 146097;\n    }\n\n    function monthsToDays(months) {\n        // the reverse of daysToMonths\n        return (months * 146097) / 4800;\n    }\n\n    function as(units) {\n        if (!this.isValid()) {\n            return NaN;\n        }\n        var days,\n            months,\n            milliseconds = this._milliseconds;\n\n        units = normalizeUnits(units);\n\n        if (units === 'month' || units === 'quarter' || units === 'year') {\n            days = this._days + milliseconds / 864e5;\n            months = this._months + daysToMonths(days);\n            switch (units) {\n                case 'month':\n                    return months;\n                case 'quarter':\n                    return months / 3;\n                case 'year':\n                    return months / 12;\n            }\n        } else {\n            // handle milliseconds separately because of floating point math errors (issue #1867)\n            days = this._days + Math.round(monthsToDays(this._months));\n            switch (units) {\n                case 'week':\n                    return days / 7 + milliseconds / 6048e5;\n                case 'day':\n                    return days + milliseconds / 864e5;\n                case 'hour':\n                    return days * 24 + milliseconds / 36e5;\n                case 'minute':\n                    return days * 1440 + milliseconds / 6e4;\n                case 'second':\n                    return days * 86400 + milliseconds / 1000;\n                // Math.floor prevents floating point math errors here\n                case 'millisecond':\n                    return Math.floor(days * 864e5) + milliseconds;\n                default:\n                    throw new Error('Unknown unit ' + units);\n            }\n        }\n    }\n\n    // TODO: Use this.as('ms')?\n    function valueOf$1() {\n        if (!this.isValid()) {\n            return NaN;\n        }\n        return (\n            this._milliseconds +\n            this._days * 864e5 +\n            (this._months % 12) * 2592e6 +\n            toInt(this._months / 12) * 31536e6\n        );\n    }\n\n    function makeAs(alias) {\n        return function () {\n            return this.as(alias);\n        };\n    }\n\n    var asMilliseconds = makeAs('ms'),\n        asSeconds = makeAs('s'),\n        asMinutes = makeAs('m'),\n        asHours = makeAs('h'),\n        asDays = makeAs('d'),\n        asWeeks = makeAs('w'),\n        asMonths = makeAs('M'),\n        asQuarters = makeAs('Q'),\n        asYears = makeAs('y');\n\n    function clone$1() {\n        return createDuration(this);\n    }\n\n    function get$2(units) {\n        units = normalizeUnits(units);\n        return this.isValid() ? this[units + 's']() : NaN;\n    }\n\n    function makeGetter(name) {\n        return function () {\n            return this.isValid() ? this._data[name] : NaN;\n        };\n    }\n\n    var milliseconds = makeGetter('milliseconds'),\n        seconds = makeGetter('seconds'),\n        minutes = makeGetter('minutes'),\n        hours = makeGetter('hours'),\n        days = makeGetter('days'),\n        months = makeGetter('months'),\n        years = makeGetter('years');\n\n    function weeks() {\n        return absFloor(this.days() / 7);\n    }\n\n    var round = Math.round,\n        thresholds = {\n            ss: 44, // a few seconds to seconds\n            s: 45, // seconds to minute\n            m: 45, // minutes to hour\n            h: 22, // hours to day\n            d: 26, // days to month/week\n            w: null, // weeks to month\n            M: 11, // months to year\n        };\n\n    // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n    function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n        return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n    }\n\n    function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n        var duration = createDuration(posNegDuration).abs(),\n            seconds = round(duration.as('s')),\n            minutes = round(duration.as('m')),\n            hours = round(duration.as('h')),\n            days = round(duration.as('d')),\n            months = round(duration.as('M')),\n            weeks = round(duration.as('w')),\n            years = round(duration.as('y')),\n            a =\n                (seconds <= thresholds.ss && ['s', seconds]) ||\n                (seconds < thresholds.s && ['ss', seconds]) ||\n                (minutes <= 1 && ['m']) ||\n                (minutes < thresholds.m && ['mm', minutes]) ||\n                (hours <= 1 && ['h']) ||\n                (hours < thresholds.h && ['hh', hours]) ||\n                (days <= 1 && ['d']) ||\n                (days < thresholds.d && ['dd', days]);\n\n        if (thresholds.w != null) {\n            a =\n                a ||\n                (weeks <= 1 && ['w']) ||\n                (weeks < thresholds.w && ['ww', weeks]);\n        }\n        a = a ||\n            (months <= 1 && ['M']) ||\n            (months < thresholds.M && ['MM', months]) ||\n            (years <= 1 && ['y']) || ['yy', years];\n\n        a[2] = withoutSuffix;\n        a[3] = +posNegDuration > 0;\n        a[4] = locale;\n        return substituteTimeAgo.apply(null, a);\n    }\n\n    // This function allows you to set the rounding function for relative time strings\n    function getSetRelativeTimeRounding(roundingFunction) {\n        if (roundingFunction === undefined) {\n            return round;\n        }\n        if (typeof roundingFunction === 'function') {\n            round = roundingFunction;\n            return true;\n        }\n        return false;\n    }\n\n    // This function allows you to set a threshold for relative time strings\n    function getSetRelativeTimeThreshold(threshold, limit) {\n        if (thresholds[threshold] === undefined) {\n            return false;\n        }\n        if (limit === undefined) {\n            return thresholds[threshold];\n        }\n        thresholds[threshold] = limit;\n        if (threshold === 's') {\n            thresholds.ss = limit - 1;\n        }\n        return true;\n    }\n\n    function humanize(argWithSuffix, argThresholds) {\n        if (!this.isValid()) {\n            return this.localeData().invalidDate();\n        }\n\n        var withSuffix = false,\n            th = thresholds,\n            locale,\n            output;\n\n        if (typeof argWithSuffix === 'object') {\n            argThresholds = argWithSuffix;\n            argWithSuffix = false;\n        }\n        if (typeof argWithSuffix === 'boolean') {\n            withSuffix = argWithSuffix;\n        }\n        if (typeof argThresholds === 'object') {\n            th = Object.assign({}, thresholds, argThresholds);\n            if (argThresholds.s != null && argThresholds.ss == null) {\n                th.ss = argThresholds.s - 1;\n            }\n        }\n\n        locale = this.localeData();\n        output = relativeTime$1(this, !withSuffix, th, locale);\n\n        if (withSuffix) {\n            output = locale.pastFuture(+this, output);\n        }\n\n        return locale.postformat(output);\n    }\n\n    var abs$1 = Math.abs;\n\n    function sign(x) {\n        return (x > 0) - (x < 0) || +x;\n    }\n\n    function toISOString$1() {\n        // for ISO strings we do not use the normal bubbling rules:\n        //  * milliseconds bubble up until they become hours\n        //  * days do not bubble at all\n        //  * months bubble up until they become years\n        // This is because there is no context-free conversion between hours and days\n        // (think of clock changes)\n        // and also not between days and months (28-31 days per month)\n        if (!this.isValid()) {\n            return this.localeData().invalidDate();\n        }\n\n        var seconds = abs$1(this._milliseconds) / 1000,\n            days = abs$1(this._days),\n            months = abs$1(this._months),\n            minutes,\n            hours,\n            years,\n            s,\n            total = this.asSeconds(),\n            totalSign,\n            ymSign,\n            daysSign,\n            hmsSign;\n\n        if (!total) {\n            // this is the same as C#'s (Noda) and python (isodate)...\n            // but not other JS (goog.date)\n            return 'P0D';\n        }\n\n        // 3600 seconds -> 60 minutes -> 1 hour\n        minutes = absFloor(seconds / 60);\n        hours = absFloor(minutes / 60);\n        seconds %= 60;\n        minutes %= 60;\n\n        // 12 months -> 1 year\n        years = absFloor(months / 12);\n        months %= 12;\n\n        // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n        s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n        totalSign = total < 0 ? '-' : '';\n        ymSign = sign(this._months) !== sign(total) ? '-' : '';\n        daysSign = sign(this._days) !== sign(total) ? '-' : '';\n        hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n        return (\n            totalSign +\n            'P' +\n            (years ? ymSign + years + 'Y' : '') +\n            (months ? ymSign + months + 'M' : '') +\n            (days ? daysSign + days + 'D' : '') +\n            (hours || minutes || seconds ? 'T' : '') +\n            (hours ? hmsSign + hours + 'H' : '') +\n            (minutes ? hmsSign + minutes + 'M' : '') +\n            (seconds ? hmsSign + s + 'S' : '')\n        );\n    }\n\n    var proto$2 = Duration.prototype;\n\n    proto$2.isValid = isValid$1;\n    proto$2.abs = abs;\n    proto$2.add = add$1;\n    proto$2.subtract = subtract$1;\n    proto$2.as = as;\n    proto$2.asMilliseconds = asMilliseconds;\n    proto$2.asSeconds = asSeconds;\n    proto$2.asMinutes = asMinutes;\n    proto$2.asHours = asHours;\n    proto$2.asDays = asDays;\n    proto$2.asWeeks = asWeeks;\n    proto$2.asMonths = asMonths;\n    proto$2.asQuarters = asQuarters;\n    proto$2.asYears = asYears;\n    proto$2.valueOf = valueOf$1;\n    proto$2._bubble = bubble;\n    proto$2.clone = clone$1;\n    proto$2.get = get$2;\n    proto$2.milliseconds = milliseconds;\n    proto$2.seconds = seconds;\n    proto$2.minutes = minutes;\n    proto$2.hours = hours;\n    proto$2.days = days;\n    proto$2.weeks = weeks;\n    proto$2.months = months;\n    proto$2.years = years;\n    proto$2.humanize = humanize;\n    proto$2.toISOString = toISOString$1;\n    proto$2.toString = toISOString$1;\n    proto$2.toJSON = toISOString$1;\n    proto$2.locale = locale;\n    proto$2.localeData = localeData;\n\n    proto$2.toIsoString = deprecate(\n        'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n        toISOString$1\n    );\n    proto$2.lang = lang;\n\n    // FORMATTING\n\n    addFormatToken('X', 0, 0, 'unix');\n    addFormatToken('x', 0, 0, 'valueOf');\n\n    // PARSING\n\n    addRegexToken('x', matchSigned);\n    addRegexToken('X', matchTimestamp);\n    addParseToken('X', function (input, array, config) {\n        config._d = new Date(parseFloat(input) * 1000);\n    });\n    addParseToken('x', function (input, array, config) {\n        config._d = new Date(toInt(input));\n    });\n\n    //! moment.js\n\n    hooks.version = '2.29.4';\n\n    setHookCallback(createLocal);\n\n    hooks.fn = proto;\n    hooks.min = min;\n    hooks.max = max;\n    hooks.now = now;\n    hooks.utc = createUTC;\n    hooks.unix = createUnix;\n    hooks.months = listMonths;\n    hooks.isDate = isDate;\n    hooks.locale = getSetGlobalLocale;\n    hooks.invalid = createInvalid;\n    hooks.duration = createDuration;\n    hooks.isMoment = isMoment;\n    hooks.weekdays = listWeekdays;\n    hooks.parseZone = createInZone;\n    hooks.localeData = getLocale;\n    hooks.isDuration = isDuration;\n    hooks.monthsShort = listMonthsShort;\n    hooks.weekdaysMin = listWeekdaysMin;\n    hooks.defineLocale = defineLocale;\n    hooks.updateLocale = updateLocale;\n    hooks.locales = listLocales;\n    hooks.weekdaysShort = listWeekdaysShort;\n    hooks.normalizeUnits = normalizeUnits;\n    hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n    hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n    hooks.calendarFormat = getCalendarFormat;\n    hooks.prototype = proto;\n\n    // currently HTML5 input type only supports 24-hour formats\n    hooks.HTML5_FMT = {\n        DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // <input type=\"datetime-local\" />\n        DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // <input type=\"datetime-local\" step=\"1\" />\n        DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // <input type=\"datetime-local\" step=\"0.001\" />\n        DATE: 'YYYY-MM-DD', // <input type=\"date\" />\n        TIME: 'HH:mm', // <input type=\"time\" />\n        TIME_SECONDS: 'HH:mm:ss', // <input type=\"time\" step=\"1\" />\n        TIME_MS: 'HH:mm:ss.SSS', // <input type=\"time\" step=\"0.001\" />\n        WEEK: 'GGGG-[W]WW', // <input type=\"week\" />\n        MONTH: 'YYYY-MM', // <input type=\"month\" />\n    };\n\n    return hooks;\n\n})));\n", "(()=>{\"use strict\";var e={d:(t,a)=>{for(var r in a)e.o(a,r)&&!e.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:a[r]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})}},t={};function a(e,t){for(var a=0;a<t.length;a++){var r=t[a];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}e.r(t),e.d(t,{default:()=>n});var r=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,e)}var t,r;return t=e,r=[{key:\"changeHeightWidth\",value:function(e,t,a,r,n,i){return a>r&&(e=Math.round(e*r/a),a=r),e>t&&(a=Math.round(a*t/e),e=t),n&&a<n&&(e=Math.round(e*n/a),a=n),i&&e<i&&(a=Math.round(a*i/e),e=i),{height:e,width:a}}},{key:\"resizeAndRotateImage\",value:function(e,t,a,r,n){var i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:\"jpeg\",o=arguments.length>6&&void 0!==arguments[6]?arguments[6]:100,l=arguments.length>7&&void 0!==arguments[7]?arguments[7]:0,h=o/100,g=document.createElement(\"canvas\"),u=e.width,d=e.height,c=this.changeHeightWidth(d,a,u,t,r,n);!l||90!==l&&270!==l?(g.width=c.width,g.height=c.height):(g.width=c.height,g.height=c.width),u=c.width,d=c.height;var s=g.getContext(\"2d\");return s.fillStyle=\"rgba(0, 0, 0, 0)\",s.fillRect(0,0,u,d),s.imageSmoothingEnabled&&s.imageSmoothingQuality&&(s.imageSmoothingQuality=\"high\"),l&&(s.rotate(l*Math.PI/180),90===l?s.translate(0,-g.width):180===l?s.translate(-g.width,-g.height):270===l?s.translate(-g.height,0):0!==l&&360!==l||s.translate(0,0)),s.drawImage(e,0,0,u,d),g.toDataURL(\"image/\".concat(i),h)}},{key:\"b64toByteArrays\",value:function(e,t){t=t||\"image/jpeg\";for(var a=atob(e.toString().replace(/^data:image\\/(png|jpeg|jpg|webp);base64,/,\"\")),r=[],n=0;n<a.length;n+=512){for(var i=a.slice(n,n+512),o=new Array(i.length),l=0;l<i.length;l++)o[l]=i.charCodeAt(l);var h=new Uint8Array(o);r.push(h)}return r}},{key:\"b64toBlob\",value:function(e,t){var a=this.b64toByteArrays(e,t);return new Blob(a,{type:t,lastModified:new Date})}},{key:\"b64toFile\",value:function(e,t,a){var r=this.b64toByteArrays(e,a);return new File(r,t,{type:a,lastModified:new Date})}},{key:\"createResizedImage\",value:function(t,a,r,n,i,o,l){var h=arguments.length>7&&void 0!==arguments[7]?arguments[7]:\"base64\",g=arguments.length>8&&void 0!==arguments[8]?arguments[8]:null,u=arguments.length>9&&void 0!==arguments[9]?arguments[9]:null,d=new FileReader;if(!t)throw Error(\"File Not Found!\");if(t.type&&!t.type.includes(\"image\"))throw Error(\"File Is NOT Image!\");d.readAsDataURL(t),d.onload=function(){var c=new Image;c.src=d.result,c.onload=function(){var d=e.resizeAndRotateImage(c,a,r,g,u,n,i,o),s=\"image/\".concat(n);switch(h){case\"blob\":var f=e.b64toBlob(d,s);l(f);break;case\"base64\":l(d);break;case\"file\":var b=t.name.toString().replace(/(png|jpeg|jpg|webp)$/i,\"\").concat(n.toString()),v=e.b64toFile(d,b,s);l(v);break;default:l(d)}}},d.onerror=function(e){throw Error(e)}}}],null&&a(t.prototype,null),r&&a(t,r),e}();const n={imageFileResizer:function(e,t,a,n,i,o,l,h,g,u){return r.createResizedImage(e,t,a,n,i,o,l,h,g,u)}};module.exports=t})();", "import React from 'react'\n\nlet renderErr = 'Renderer Error ☝️'\n\nexport const actions = {\n  init: 'init',\n}\n\nexport const defaultRenderer = ({ value = '' }) => value;\nexport const emptyRenderer = () => <>&nbsp;</>;\n\nexport const defaultColumn = {\n  Cell: defaultRenderer,\n  width: 150,\n  minWidth: 0,\n  maxWidth: Number.MAX_SAFE_INTEGER,\n}\n\nfunction mergeProps(...propList) {\n  return propList.reduce((props, next) => {\n    const { style, className, ...rest } = next\n\n    props = {\n      ...props,\n      ...rest,\n    }\n\n    if (style) {\n      props.style = props.style\n        ? { ...(props.style || {}), ...(style || {}) }\n        : style\n    }\n\n    if (className) {\n      props.className = props.className\n        ? props.className + ' ' + className\n        : className\n    }\n\n    if (props.className === '') {\n      delete props.className\n    }\n\n    return props\n  }, {})\n}\n\nfunction handlePropGetter(prevProps, userProps, meta) {\n  // Handle a lambda, pass it the previous props\n  if (typeof userProps === 'function') {\n    return handlePropGetter({}, userProps(prevProps, meta))\n  }\n\n  // Handle an array, merge each item as separate props\n  if (Array.isArray(userProps)) {\n    return mergeProps(prevProps, ...userProps)\n  }\n\n  // Handle an object by default, merge the two objects\n  return mergeProps(prevProps, userProps)\n}\n\nexport const makePropGetter = (hooks, meta = {}) => {\n  return (userProps = {}) =>\n    [...hooks, userProps].reduce(\n      (prev, next) =>\n        handlePropGetter(prev, next, {\n          ...meta,\n          userProps,\n        }),\n      {}\n    )\n}\n\nexport const reduceHooks = (hooks, initial, meta = {}, allowUndefined) =>\n  hooks.reduce((prev, next) => {\n    const nextValue = next(prev, meta)\n    if (process.env.NODE_ENV !== 'production') {\n      if (!allowUndefined && typeof nextValue === 'undefined') {\n        console.info(next)\n        throw new Error(\n          'React Table: A reducer hook ☝️ just returned undefined! This is not allowed.'\n        )\n      }\n    }\n    return nextValue\n  }, initial)\n\nexport const loopHooks = (hooks, context, meta = {}) =>\n  hooks.forEach(hook => {\n    const nextValue = hook(context, meta)\n    if (process.env.NODE_ENV !== 'production') {\n      if (typeof nextValue !== 'undefined') {\n        console.info(hook, nextValue)\n        throw new Error(\n          'React Table: A loop-type hook ☝️ just returned a value! This is not allowed.'\n        )\n      }\n    }\n  })\n\nexport function ensurePluginOrder(plugins, befores, pluginName, afters) {\n  if (process.env.NODE_ENV !== 'production' && afters) {\n    throw new Error(\n      `Defining plugins in the \"after\" section of ensurePluginOrder is no longer supported (see plugin ${pluginName})`\n    )\n  }\n  const pluginIndex = plugins.findIndex(\n    plugin => plugin.pluginName === pluginName\n  )\n\n  if (pluginIndex === -1) {\n    if (process.env.NODE_ENV !== 'production') {\n      throw new Error(`The plugin \"${pluginName}\" was not found in the plugin list!\nThis usually means you need to need to name your plugin hook by setting the 'pluginName' property of the hook function, eg:\n\n  ${pluginName}.pluginName = '${pluginName}'\n`)\n    }\n  }\n\n  befores.forEach(before => {\n    const beforeIndex = plugins.findIndex(\n      plugin => plugin.pluginName === before\n    )\n    if (beforeIndex > -1 && beforeIndex > pluginIndex) {\n      if (process.env.NODE_ENV !== 'production') {\n        throw new Error(\n          `React Table: The ${pluginName} plugin hook must be placed after the ${before} plugin hook!`\n        )\n      }\n    }\n  })\n}\n\nexport function functionalUpdate(updater, old) {\n  return typeof updater === 'function' ? updater(old) : updater\n}\n\nexport function useGetLatest(obj) {\n  const ref = React.useRef()\n  ref.current = obj\n\n  return React.useCallback(() => ref.current, [])\n}\n\n// SSR has issues with useLayoutEffect still, so use useEffect during SSR\nexport const safeUseLayoutEffect =\n  typeof document !== 'undefined' ? React.useLayoutEffect : React.useEffect\n\nexport function useMountedLayoutEffect(fn, deps) {\n  const mountedRef = React.useRef(false)\n\n  safeUseLayoutEffect(() => {\n    if (mountedRef.current) {\n      fn()\n    }\n    mountedRef.current = true\n    // eslint-disable-next-line\n  }, deps)\n}\n\nexport function useAsyncDebounce(defaultFn, defaultWait = 0) {\n  const debounceRef = React.useRef({})\n\n  const getDefaultFn = useGetLatest(defaultFn)\n  const getDefaultWait = useGetLatest(defaultWait)\n\n  return React.useCallback(\n    async (...args) => {\n      if (!debounceRef.current.promise) {\n        debounceRef.current.promise = new Promise((resolve, reject) => {\n          debounceRef.current.resolve = resolve\n          debounceRef.current.reject = reject\n        })\n      }\n\n      if (debounceRef.current.timeout) {\n        clearTimeout(debounceRef.current.timeout)\n      }\n\n      debounceRef.current.timeout = setTimeout(async () => {\n        delete debounceRef.current.timeout\n        try {\n          debounceRef.current.resolve(await getDefaultFn()(...args))\n        } catch (err) {\n          debounceRef.current.reject(err)\n        } finally {\n          delete debounceRef.current.promise\n        }\n      }, getDefaultWait())\n\n      return debounceRef.current.promise\n    },\n    [getDefaultFn, getDefaultWait]\n  )\n}\n\nexport function makeRenderer(instance, column, meta = {}) {\n  return (type, userProps = {}) => {\n    const Comp = typeof type === 'string' ? column[type] : type\n\n    if (typeof Comp === 'undefined') {\n      console.info(column)\n      throw new Error(renderErr)\n    }\n\n    return flexRender(Comp, { ...instance, column, ...meta, ...userProps })\n  }\n}\n\nexport function flexRender(Comp, props) {\n  return isReactComponent(Comp) ? <Comp {...props} /> : Comp\n}\n\nfunction isReactComponent(component) {\n  return (\n    isClassComponent(component) ||\n    typeof component === 'function' ||\n    isExoticComponent(component)\n  )\n}\n\nfunction isClassComponent(component) {\n  return (\n    typeof component === 'function' &&\n    (() => {\n      const proto = Object.getPrototypeOf(component)\n      return proto.prototype && proto.prototype.isReactComponent\n    })()\n  )\n}\n\nfunction isExoticComponent(component) {\n  return (\n    typeof component === 'object' &&\n    typeof component.$$typeof === 'symbol' &&\n    ['react.memo', 'react.forward_ref'].includes(component.$$typeof.description)\n  )\n}\n", "import { defaultColumn, emptyRenderer } from './publicUtils'\n\n// Find the depth of the columns\nexport function findMaxDepth(columns, depth = 0) {\n  return columns.reduce((prev, curr) => {\n    if (curr.columns) {\n      return Math.max(prev, findMaxDepth(curr.columns, depth + 1))\n    }\n    return depth\n  }, 0)\n}\n\n// Build the visible columns, headers and flat column list\nexport function linkColumnStructure(columns, parent, depth = 0) {\n  return columns.map(column => {\n    column = {\n      ...column,\n      parent,\n      depth,\n    }\n\n    assignColumnAccessor(column)\n\n    if (column.columns) {\n      column.columns = linkColumnStructure(column.columns, column, depth + 1)\n    }\n    return column\n  })\n}\n\nexport function flattenColumns(columns) {\n  return flattenBy(columns, 'columns')\n}\n\nexport function assignColumnAccessor(column) {\n  // First check for string accessor\n  let { id, accessor, Header } = column\n\n  if (typeof accessor === 'string') {\n    id = id || accessor\n    const accessorPath = accessor.split('.')\n    accessor = row => getBy(row, accessorPath)\n  }\n\n  if (!id && typeof Header === 'string' && Header) {\n    id = Header\n  }\n\n  if (!id && column.columns) {\n    console.error(column)\n    throw new Error('A column ID (or unique \"Header\" value) is required!')\n  }\n\n  if (!id) {\n    console.error(column)\n    throw new Error('A column ID (or string accessor) is required!')\n  }\n\n  Object.assign(column, {\n    id,\n    accessor,\n  })\n\n  return column\n}\n\nexport function decorateColumn(column, userDefaultColumn) {\n  if (!userDefaultColumn) {\n    throw new Error()\n  }\n  Object.assign(column, {\n    // Make sure there is a fallback header, just in case\n    Header: emptyRenderer,\n    Footer: emptyRenderer,\n    ...defaultColumn,\n    ...userDefaultColumn,\n    ...column,\n  })\n\n  Object.assign(column, {\n    originalWidth: column.width,\n  })\n\n  return column\n}\n\n// Build the header groups from the bottom up\nexport function makeHeaderGroups(\n  allColumns,\n  defaultColumn,\n  additionalHeaderProperties = () => ({})\n) {\n  const headerGroups = []\n\n  let scanColumns = allColumns\n\n  let uid = 0\n  const getUID = () => uid++\n\n  while (scanColumns.length) {\n    // The header group we are creating\n    const headerGroup = {\n      headers: [],\n    }\n\n    // The parent columns we're going to scan next\n    const parentColumns = []\n\n    const hasParents = scanColumns.some(d => d.parent)\n\n    // Scan each column for parents\n    scanColumns.forEach(column => {\n      // What is the latest (last) parent column?\n      let latestParentColumn = [...parentColumns].reverse()[0]\n\n      let newParent\n\n      if (hasParents) {\n        // If the column has a parent, add it if necessary\n        if (column.parent) {\n          newParent = {\n            ...column.parent,\n            originalId: column.parent.id,\n            id: `${column.parent.id}_${getUID()}`,\n            headers: [column],\n            ...additionalHeaderProperties(column),\n          }\n        } else {\n          // If other columns have parents, we'll need to add a place holder if necessary\n          const originalId = `${column.id}_placeholder`\n          newParent = decorateColumn(\n            {\n              originalId,\n              id: `${column.id}_placeholder_${getUID()}`,\n              placeholderOf: column,\n              headers: [column],\n              ...additionalHeaderProperties(column),\n            },\n            defaultColumn\n          )\n        }\n\n        // If the resulting parent columns are the same, just add\n        // the column and increment the header span\n        if (\n          latestParentColumn &&\n          latestParentColumn.originalId === newParent.originalId\n        ) {\n          latestParentColumn.headers.push(column)\n        } else {\n          parentColumns.push(newParent)\n        }\n      }\n\n      headerGroup.headers.push(column)\n    })\n\n    headerGroups.push(headerGroup)\n\n    // Start scanning the parent columns\n    scanColumns = parentColumns\n  }\n\n  return headerGroups.reverse()\n}\n\nconst pathObjCache = new Map()\n\nexport function getBy(obj, path, def) {\n  if (!path) {\n    return obj\n  }\n  const cacheKey = typeof path === 'function' ? path : JSON.stringify(path)\n\n  const pathObj =\n    pathObjCache.get(cacheKey) ||\n    (() => {\n      const pathObj = makePathArray(path)\n      pathObjCache.set(cacheKey, pathObj)\n      return pathObj\n    })()\n\n  let val\n\n  try {\n    val = pathObj.reduce((cursor, pathPart) => cursor[pathPart], obj)\n  } catch (e) {\n    // continue regardless of error\n  }\n  return typeof val !== 'undefined' ? val : def\n}\n\nexport function getFirstDefined(...args) {\n  for (let i = 0; i < args.length; i += 1) {\n    if (typeof args[i] !== 'undefined') {\n      return args[i]\n    }\n  }\n}\n\nexport function getElementDimensions(element) {\n  const rect = element.getBoundingClientRect()\n  const style = window.getComputedStyle(element)\n  const margins = {\n    left: parseInt(style.marginLeft),\n    right: parseInt(style.marginRight),\n  }\n  const padding = {\n    left: parseInt(style.paddingLeft),\n    right: parseInt(style.paddingRight),\n  }\n  return {\n    left: Math.ceil(rect.left),\n    width: Math.ceil(rect.width),\n    outerWidth: Math.ceil(\n      rect.width + margins.left + margins.right + padding.left + padding.right\n    ),\n    marginLeft: margins.left,\n    marginRight: margins.right,\n    paddingLeft: padding.left,\n    paddingRight: padding.right,\n    scrollWidth: element.scrollWidth,\n  }\n}\n\nexport function isFunction(a) {\n  if (typeof a === 'function') {\n    return a\n  }\n}\n\nexport function flattenBy(arr, key) {\n  const flat = []\n\n  const recurse = arr => {\n    arr.forEach(d => {\n      if (!d[key]) {\n        flat.push(d)\n      } else {\n        recurse(d[key])\n      }\n    })\n  }\n\n  recurse(arr)\n\n  return flat\n}\n\nexport function expandRows(\n  rows,\n  { manualExpandedKey, expanded, expandSubRows = true }\n) {\n  const expandedRows = []\n\n  const handleRow = (row, addToExpandedRows = true) => {\n    row.isExpanded =\n      (row.original && row.original[manualExpandedKey]) || expanded[row.id]\n\n    row.canExpand = row.subRows && !!row.subRows.length\n\n    if (addToExpandedRows) {\n      expandedRows.push(row)\n    }\n\n    if (row.subRows && row.subRows.length && row.isExpanded) {\n      row.subRows.forEach(row => handleRow(row, expandSubRows))\n    }\n  }\n\n  rows.forEach(row => handleRow(row))\n\n  return expandedRows\n}\n\nexport function getFilterMethod(filter, userFilterTypes, filterTypes) {\n  return (\n    isFunction(filter) ||\n    userFilterTypes[filter] ||\n    filterTypes[filter] ||\n    filterTypes.text\n  )\n}\n\nexport function shouldAutoRemoveFilter(autoRemove, value, column) {\n  return autoRemove ? autoRemove(value, column) : typeof value === 'undefined'\n}\n\nexport function unpreparedAccessWarning() {\n  throw new Error(\n    'React-Table: You have not called prepareRow(row) one or more rows you are attempting to render.'\n  )\n}\n\nlet passiveSupported = null\nexport function passiveEventSupported() {\n  // memoize support to avoid adding multiple test events\n  if (typeof passiveSupported === 'boolean') return passiveSupported\n\n  let supported = false\n  try {\n    const options = {\n      get passive() {\n        supported = true\n        return false\n      },\n    }\n\n    window.addEventListener('test', null, options)\n    window.removeEventListener('test', null, options)\n  } catch (err) {\n    supported = false\n  }\n  passiveSupported = supported\n  return passiveSupported\n}\n\n//\n\nconst reOpenBracket = /\\[/g\nconst reCloseBracket = /\\]/g\n\nfunction makePathArray(obj) {\n  return (\n    flattenDeep(obj)\n      // remove all periods in parts\n      .map(d => String(d).replace('.', '_'))\n      // join parts using period\n      .join('.')\n      // replace brackets with periods\n      .replace(reOpenBracket, '.')\n      .replace(reCloseBracket, '')\n      // split it back out on periods\n      .split('.')\n  )\n}\n\nfunction flattenDeep(arr, newArr = []) {\n  if (!Array.isArray(arr)) {\n    newArr.push(arr)\n  } else {\n    for (let i = 0; i < arr.length; i += 1) {\n      flattenDeep(arr[i], newArr)\n    }\n  }\n  return newArr\n}\n", "const defaultGetTableProps = props => ({\n  role: 'table',\n  ...props,\n})\n\nconst defaultGetTableBodyProps = props => ({\n  role: 'rowgroup',\n  ...props,\n})\n\nconst defaultGetHeaderProps = (props, { column }) => ({\n  key: `header_${column.id}`,\n  colSpan: column.totalVisibleHeaderCount,\n  role: 'columnheader',\n  ...props,\n})\n\nconst defaultGetFooterProps = (props, { column }) => ({\n  key: `footer_${column.id}`,\n  colSpan: column.totalVisibleHeaderCount,\n  ...props,\n})\n\nconst defaultGetHeaderGroupProps = (props, { index }) => ({\n  key: `headerGroup_${index}`,\n  role: 'row',\n  ...props,\n})\n\nconst defaultGetFooterGroupProps = (props, { index }) => ({\n  key: `footerGroup_${index}`,\n  ...props,\n})\n\nconst defaultGetRowProps = (props, { row }) => ({\n  key: `row_${row.id}`,\n  role: 'row',\n  ...props,\n})\n\nconst defaultGetCellProps = (props, { cell }) => ({\n  key: `cell_${cell.row.id}_${cell.column.id}`,\n  role: 'cell',\n  ...props,\n})\n\nexport default function makeDefaultPluginHooks() {\n  return {\n    useOptions: [],\n    stateReducers: [],\n    useControlledState: [],\n    columns: [],\n    columnsDeps: [],\n    allColumns: [],\n    allColumnsDeps: [],\n    accessValue: [],\n    materializedColumns: [],\n    materializedColumnsDeps: [],\n    useInstanceAfterData: [],\n    visibleColumns: [],\n    visibleColumnsDeps: [],\n    headerGroups: [],\n    headerGroupsDeps: [],\n    useInstanceBeforeDimensions: [],\n    useInstance: [],\n    prepareRow: [],\n    getTableProps: [defaultGetTableProps],\n    getTableBodyProps: [defaultGetTableBodyProps],\n    getHeaderGroupProps: [defaultGetHeaderGroupProps],\n    getFooterGroupProps: [defaultGetFooterGroupProps],\n    getHeaderProps: [defaultGetHeaderProps],\n    getFooterProps: [defaultGetFooterProps],\n    getRowProps: [defaultGetRowProps],\n    getCellProps: [defaultGetCellProps],\n    useFinalInstance: [],\n  }\n}\n", "import React from 'react'\n\nimport {\n  actions,\n  functionalUpdate,\n  useGetLatest,\n  makePropGetter,\n  useMountedLayoutEffect,\n} from '../publicUtils'\n\nactions.resetHiddenColumns = 'resetHiddenColumns'\nactions.toggleHideColumn = 'toggleHideColumn'\nactions.setHiddenColumns = 'setHiddenColumns'\nactions.toggleHideAllColumns = 'toggleHideAllColumns'\n\nexport const useColumnVisibility = hooks => {\n  hooks.getToggleHiddenProps = [defaultGetToggleHiddenProps]\n  hooks.getToggleHideAllColumnsProps = [defaultGetToggleHideAllColumnsProps]\n\n  hooks.stateReducers.push(reducer)\n  hooks.useInstanceBeforeDimensions.push(useInstanceBeforeDimensions)\n  hooks.headerGroupsDeps.push((deps, { instance }) => [\n    ...deps,\n    instance.state.hiddenColumns,\n  ])\n  hooks.useInstance.push(useInstance)\n}\n\nuseColumnVisibility.pluginName = 'useColumnVisibility'\n\nconst defaultGetToggleHiddenProps = (props, { column }) => [\n  props,\n  {\n    onChange: e => {\n      column.toggleHidden(!e.target.checked)\n    },\n    style: {\n      cursor: 'pointer',\n    },\n    checked: column.isVisible,\n    title: 'Toggle Column Visible',\n  },\n]\n\nconst defaultGetToggleHideAllColumnsProps = (props, { instance }) => [\n  props,\n  {\n    onChange: e => {\n      instance.toggleHideAllColumns(!e.target.checked)\n    },\n    style: {\n      cursor: 'pointer',\n    },\n    checked: !instance.allColumnsHidden && !instance.state.hiddenColumns.length,\n    title: 'Toggle All Columns Hidden',\n    indeterminate:\n      !instance.allColumnsHidden && instance.state.hiddenColumns.length,\n  },\n]\n\nfunction reducer(state, action, previousState, instance) {\n  if (action.type === actions.init) {\n    return {\n      hiddenColumns: [],\n      ...state,\n    }\n  }\n\n  if (action.type === actions.resetHiddenColumns) {\n    return {\n      ...state,\n      hiddenColumns: instance.initialState.hiddenColumns || [],\n    }\n  }\n\n  if (action.type === actions.toggleHideColumn) {\n    const should =\n      typeof action.value !== 'undefined'\n        ? action.value\n        : !state.hiddenColumns.includes(action.columnId)\n\n    const hiddenColumns = should\n      ? [...state.hiddenColumns, action.columnId]\n      : state.hiddenColumns.filter(d => d !== action.columnId)\n\n    return {\n      ...state,\n      hiddenColumns,\n    }\n  }\n\n  if (action.type === actions.setHiddenColumns) {\n    return {\n      ...state,\n      hiddenColumns: functionalUpdate(action.value, state.hiddenColumns),\n    }\n  }\n\n  if (action.type === actions.toggleHideAllColumns) {\n    const shouldAll =\n      typeof action.value !== 'undefined'\n        ? action.value\n        : !state.hiddenColumns.length\n\n    return {\n      ...state,\n      hiddenColumns: shouldAll ? instance.allColumns.map(d => d.id) : [],\n    }\n  }\n}\n\nfunction useInstanceBeforeDimensions(instance) {\n  const {\n    headers,\n    state: { hiddenColumns },\n  } = instance\n\n  const isMountedRef = React.useRef(false)\n\n  if (!isMountedRef.current) {\n  }\n\n  const handleColumn = (column, parentVisible) => {\n    column.isVisible = parentVisible && !hiddenColumns.includes(column.id)\n\n    let totalVisibleHeaderCount = 0\n\n    if (column.headers && column.headers.length) {\n      column.headers.forEach(\n        subColumn =>\n          (totalVisibleHeaderCount += handleColumn(subColumn, column.isVisible))\n      )\n    } else {\n      totalVisibleHeaderCount = column.isVisible ? 1 : 0\n    }\n\n    column.totalVisibleHeaderCount = totalVisibleHeaderCount\n\n    return totalVisibleHeaderCount\n  }\n\n  let totalVisibleHeaderCount = 0\n\n  headers.forEach(\n    subHeader => (totalVisibleHeaderCount += handleColumn(subHeader, true))\n  )\n}\n\nfunction useInstance(instance) {\n  const {\n    columns,\n    flatHeaders,\n    dispatch,\n    allColumns,\n    getHooks,\n    state: { hiddenColumns },\n    autoResetHiddenColumns = true,\n  } = instance\n\n  const getInstance = useGetLatest(instance)\n\n  const allColumnsHidden = allColumns.length === hiddenColumns.length\n\n  const toggleHideColumn = React.useCallback(\n    (columnId, value) =>\n      dispatch({ type: actions.toggleHideColumn, columnId, value }),\n    [dispatch]\n  )\n\n  const setHiddenColumns = React.useCallback(\n    value => dispatch({ type: actions.setHiddenColumns, value }),\n    [dispatch]\n  )\n\n  const toggleHideAllColumns = React.useCallback(\n    value => dispatch({ type: actions.toggleHideAllColumns, value }),\n    [dispatch]\n  )\n\n  const getToggleHideAllColumnsProps = makePropGetter(\n    getHooks().getToggleHideAllColumnsProps,\n    { instance: getInstance() }\n  )\n\n  flatHeaders.forEach(column => {\n    column.toggleHidden = value => {\n      dispatch({\n        type: actions.toggleHideColumn,\n        columnId: column.id,\n        value,\n      })\n    }\n\n    column.getToggleHiddenProps = makePropGetter(\n      getHooks().getToggleHiddenProps,\n      {\n        instance: getInstance(),\n        column,\n      }\n    )\n  })\n\n  const getAutoResetHiddenColumns = useGetLatest(autoResetHiddenColumns)\n\n  useMountedLayoutEffect(() => {\n    if (getAutoResetHiddenColumns()) {\n      dispatch({ type: actions.resetHiddenColumns })\n    }\n  }, [dispatch, columns])\n\n  Object.assign(instance, {\n    allColumnsHidden,\n    toggleHideColumn,\n    setHiddenColumns,\n    toggleHideAllColumns,\n    getToggleHideAllColumnsProps,\n  })\n}\n", "import React from 'react'\n\n//\n\nimport {\n  linkColumnStructure,\n  flattenColumns,\n  assignColumnAccessor,\n  unpreparedAccessWarning,\n  makeHeaderGroups,\n  decorateColumn,\n} from '../utils'\n\nimport {\n  useGetLatest,\n  reduceHooks,\n  actions,\n  loopHooks,\n  makePropGetter,\n  makeRenderer,\n} from '../publicUtils'\n\nimport makeDefaultPluginHooks from '../makeDefaultPluginHooks'\n\nimport { useColumnVisibility } from './useColumnVisibility'\n\nconst defaultInitialState = {}\nconst defaultColumnInstance = {}\nconst defaultReducer = (state, action, prevState) => state\nconst defaultGetSubRows = (row, index) => row.subRows || []\nconst defaultGetRowId = (row, index, parent) =>\n  `${parent ? [parent.id, index].join('.') : index}`\nconst defaultUseControlledState = d => d\n\nfunction applyDefaults(props) {\n  const {\n    initialState = defaultInitialState,\n    defaultColumn = defaultColumnInstance,\n    getSubRows = defaultGetSubRows,\n    getRowId = defaultGetRowId,\n    stateReducer = defaultReducer,\n    useControlledState = defaultUseControlledState,\n    ...rest\n  } = props\n\n  return {\n    ...rest,\n    initialState,\n    defaultColumn,\n    getSubRows,\n    getRowId,\n    stateReducer,\n    useControlledState,\n  }\n}\n\nexport const useTable = (props, ...plugins) => {\n  // Apply default props\n  props = applyDefaults(props)\n\n  // Add core plugins\n  plugins = [useColumnVisibility, ...plugins]\n\n  // Create the table instance\n  let instanceRef = React.useRef({})\n\n  // Create a getter for the instance (helps avoid a lot of potential memory leaks)\n  const getInstance = useGetLatest(instanceRef.current)\n\n  // Assign the props, plugins and hooks to the instance\n  Object.assign(getInstance(), {\n    ...props,\n    plugins,\n    hooks: makeDefaultPluginHooks(),\n  })\n\n  // Allow plugins to register hooks as early as possible\n  plugins.filter(Boolean).forEach(plugin => {\n    plugin(getInstance().hooks)\n  })\n\n  // Consume all hooks and make a getter for them\n  const getHooks = useGetLatest(getInstance().hooks)\n  getInstance().getHooks = getHooks\n  delete getInstance().hooks\n\n  // Allow useOptions hooks to modify the options coming into the table\n  Object.assign(\n    getInstance(),\n    reduceHooks(getHooks().useOptions, applyDefaults(props))\n  )\n\n  const {\n    data,\n    columns: userColumns,\n    initialState,\n    defaultColumn,\n    getSubRows,\n    getRowId,\n    stateReducer,\n    useControlledState,\n  } = getInstance()\n\n  // Setup user reducer ref\n  const getStateReducer = useGetLatest(stateReducer)\n\n  // Build the reducer\n  const reducer = React.useCallback(\n    (state, action) => {\n      // Detect invalid actions\n      if (!action.type) {\n        console.info({ action })\n        throw new Error('Unknown Action 👆')\n      }\n\n      // Reduce the state from all plugin reducers\n      return [\n        ...getHooks().stateReducers,\n        // Allow the user to add their own state reducer(s)\n        ...(Array.isArray(getStateReducer())\n          ? getStateReducer()\n          : [getStateReducer()]),\n      ].reduce(\n        (s, handler) => handler(s, action, state, getInstance()) || s,\n        state\n      )\n    },\n    [getHooks, getStateReducer, getInstance]\n  )\n\n  // Start the reducer\n  const [reducerState, dispatch] = React.useReducer(reducer, undefined, () =>\n    reducer(initialState, { type: actions.init })\n  )\n\n  // Allow the user to control the final state with hooks\n  const state = reduceHooks(\n    [...getHooks().useControlledState, useControlledState],\n    reducerState,\n    { instance: getInstance() }\n  )\n\n  Object.assign(getInstance(), {\n    state,\n    dispatch,\n  })\n\n  // Decorate All the columns\n  const columns = React.useMemo(\n    () =>\n      linkColumnStructure(\n        reduceHooks(getHooks().columns, userColumns, {\n          instance: getInstance(),\n        })\n      ),\n    [\n      getHooks,\n      getInstance,\n      userColumns,\n      // eslint-disable-next-line react-hooks/exhaustive-deps\n      ...reduceHooks(getHooks().columnsDeps, [], { instance: getInstance() }),\n    ]\n  )\n  getInstance().columns = columns\n\n  // Get the flat list of all columns and allow hooks to decorate\n  // those columns (and trigger this memoization via deps)\n  let allColumns = React.useMemo(\n    () =>\n      reduceHooks(getHooks().allColumns, flattenColumns(columns), {\n        instance: getInstance(),\n      }).map(assignColumnAccessor),\n    [\n      columns,\n      getHooks,\n      getInstance,\n      // eslint-disable-next-line react-hooks/exhaustive-deps\n      ...reduceHooks(getHooks().allColumnsDeps, [], {\n        instance: getInstance(),\n      }),\n    ]\n  )\n  getInstance().allColumns = allColumns\n\n  // Access the row model using initial columns\n  const [rows, flatRows, rowsById] = React.useMemo(() => {\n    let rows = []\n    let flatRows = []\n    const rowsById = {}\n\n    const allColumnsQueue = [...allColumns]\n\n    while (allColumnsQueue.length) {\n      const column = allColumnsQueue.shift()\n      accessRowsForColumn({\n        data,\n        rows,\n        flatRows,\n        rowsById,\n        column,\n        getRowId,\n        getSubRows,\n        accessValueHooks: getHooks().accessValue,\n        getInstance,\n      })\n    }\n\n    return [rows, flatRows, rowsById]\n  }, [allColumns, data, getRowId, getSubRows, getHooks, getInstance])\n\n  Object.assign(getInstance(), {\n    rows,\n    initialRows: [...rows],\n    flatRows,\n    rowsById,\n    // materializedColumns,\n  })\n\n  loopHooks(getHooks().useInstanceAfterData, getInstance())\n\n  // Get the flat list of all columns AFTER the rows\n  // have been access, and allow hooks to decorate\n  // those columns (and trigger this memoization via deps)\n  let visibleColumns = React.useMemo(\n    () =>\n      reduceHooks(getHooks().visibleColumns, allColumns, {\n        instance: getInstance(),\n      }).map(d => decorateColumn(d, defaultColumn)),\n    [\n      getHooks,\n      allColumns,\n      getInstance,\n      defaultColumn,\n      // eslint-disable-next-line react-hooks/exhaustive-deps\n      ...reduceHooks(getHooks().visibleColumnsDeps, [], {\n        instance: getInstance(),\n      }),\n    ]\n  )\n\n  // Combine new visible columns with all columns\n  allColumns = React.useMemo(() => {\n    const columns = [...visibleColumns]\n\n    allColumns.forEach(column => {\n      if (!columns.find(d => d.id === column.id)) {\n        columns.push(column)\n      }\n    })\n\n    return columns\n  }, [allColumns, visibleColumns])\n  getInstance().allColumns = allColumns\n\n  if (process.env.NODE_ENV !== 'production') {\n    const duplicateColumns = allColumns.filter((column, i) => {\n      return allColumns.findIndex(d => d.id === column.id) !== i\n    })\n\n    if (duplicateColumns.length) {\n      console.info(allColumns)\n      throw new Error(\n        `Duplicate columns were found with ids: \"${duplicateColumns\n          .map(d => d.id)\n          .join(', ')}\" in the columns array above`\n      )\n    }\n  }\n\n  // Make the headerGroups\n  const headerGroups = React.useMemo(\n    () =>\n      reduceHooks(\n        getHooks().headerGroups,\n        makeHeaderGroups(visibleColumns, defaultColumn),\n        getInstance()\n      ),\n    [\n      getHooks,\n      visibleColumns,\n      defaultColumn,\n      getInstance,\n      // eslint-disable-next-line react-hooks/exhaustive-deps\n      ...reduceHooks(getHooks().headerGroupsDeps, [], {\n        instance: getInstance(),\n      }),\n    ]\n  )\n  getInstance().headerGroups = headerGroups\n\n  // Get the first level of headers\n  const headers = React.useMemo(\n    () => (headerGroups.length ? headerGroups[0].headers : []),\n    [headerGroups]\n  )\n  getInstance().headers = headers\n\n  // Provide a flat header list for utilities\n  getInstance().flatHeaders = headerGroups.reduce(\n    (all, headerGroup) => [...all, ...headerGroup.headers],\n    []\n  )\n\n  loopHooks(getHooks().useInstanceBeforeDimensions, getInstance())\n\n  // Filter columns down to visible ones\n  const visibleColumnsDep = visibleColumns\n    .filter(d => d.isVisible)\n    .map(d => d.id)\n    .sort()\n    .join('_')\n\n  visibleColumns = React.useMemo(\n    () => visibleColumns.filter(d => d.isVisible),\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    [visibleColumns, visibleColumnsDep]\n  )\n  getInstance().visibleColumns = visibleColumns\n\n  // Header Visibility is needed by this point\n  const [\n    totalColumnsMinWidth,\n    totalColumnsWidth,\n    totalColumnsMaxWidth,\n  ] = calculateHeaderWidths(headers)\n\n  getInstance().totalColumnsMinWidth = totalColumnsMinWidth\n  getInstance().totalColumnsWidth = totalColumnsWidth\n  getInstance().totalColumnsMaxWidth = totalColumnsMaxWidth\n\n  loopHooks(getHooks().useInstance, getInstance())\n\n  // Each materialized header needs to be assigned a render function and other\n  // prop getter properties here.\n  ;[...getInstance().flatHeaders, ...getInstance().allColumns].forEach(\n    column => {\n      // Give columns/headers rendering power\n      column.render = makeRenderer(getInstance(), column)\n\n      // Give columns/headers a default getHeaderProps\n      column.getHeaderProps = makePropGetter(getHooks().getHeaderProps, {\n        instance: getInstance(),\n        column,\n      })\n\n      // Give columns/headers a default getFooterProps\n      column.getFooterProps = makePropGetter(getHooks().getFooterProps, {\n        instance: getInstance(),\n        column,\n      })\n    }\n  )\n\n  getInstance().headerGroups = React.useMemo(\n    () =>\n      headerGroups.filter((headerGroup, i) => {\n        // Filter out any headers and headerGroups that don't have visible columns\n        headerGroup.headers = headerGroup.headers.filter(column => {\n          const recurse = headers =>\n            headers.filter(column => {\n              if (column.headers) {\n                return recurse(column.headers)\n              }\n              return column.isVisible\n            }).length\n          if (column.headers) {\n            return recurse(column.headers)\n          }\n          return column.isVisible\n        })\n\n        // Give headerGroups getRowProps\n        if (headerGroup.headers.length) {\n          headerGroup.getHeaderGroupProps = makePropGetter(\n            getHooks().getHeaderGroupProps,\n            { instance: getInstance(), headerGroup, index: i }\n          )\n\n          headerGroup.getFooterGroupProps = makePropGetter(\n            getHooks().getFooterGroupProps,\n            { instance: getInstance(), headerGroup, index: i }\n          )\n\n          return true\n        }\n\n        return false\n      }),\n    [headerGroups, getInstance, getHooks]\n  )\n\n  getInstance().footerGroups = [...getInstance().headerGroups].reverse()\n\n  // The prepareRow function is absolutely necessary and MUST be called on\n  // any rows the user wishes to be displayed.\n\n  getInstance().prepareRow = React.useCallback(\n    row => {\n      row.getRowProps = makePropGetter(getHooks().getRowProps, {\n        instance: getInstance(),\n        row,\n      })\n\n      // Build the visible cells for each row\n      row.allCells = allColumns.map(column => {\n        const value = row.values[column.id]\n\n        const cell = {\n          column,\n          row,\n          value,\n        }\n\n        // Give each cell a getCellProps base\n        cell.getCellProps = makePropGetter(getHooks().getCellProps, {\n          instance: getInstance(),\n          cell,\n        })\n\n        // Give each cell a renderer function (supports multiple renderers)\n        cell.render = makeRenderer(getInstance(), column, {\n          row,\n          cell,\n          value,\n        })\n\n        return cell\n      })\n\n      row.cells = visibleColumns.map(column =>\n        row.allCells.find(cell => cell.column.id === column.id)\n      )\n\n      // need to apply any row specific hooks (useExpanded requires this)\n      loopHooks(getHooks().prepareRow, row, { instance: getInstance() })\n    },\n    [getHooks, getInstance, allColumns, visibleColumns]\n  )\n\n  getInstance().getTableProps = makePropGetter(getHooks().getTableProps, {\n    instance: getInstance(),\n  })\n\n  getInstance().getTableBodyProps = makePropGetter(\n    getHooks().getTableBodyProps,\n    {\n      instance: getInstance(),\n    }\n  )\n\n  loopHooks(getHooks().useFinalInstance, getInstance())\n\n  return getInstance()\n}\n\nfunction calculateHeaderWidths(headers, left = 0) {\n  let sumTotalMinWidth = 0\n  let sumTotalWidth = 0\n  let sumTotalMaxWidth = 0\n  let sumTotalFlexWidth = 0\n\n  headers.forEach(header => {\n    let { headers: subHeaders } = header\n\n    header.totalLeft = left\n\n    if (subHeaders && subHeaders.length) {\n      const [\n        totalMinWidth,\n        totalWidth,\n        totalMaxWidth,\n        totalFlexWidth,\n      ] = calculateHeaderWidths(subHeaders, left)\n      header.totalMinWidth = totalMinWidth\n      header.totalWidth = totalWidth\n      header.totalMaxWidth = totalMaxWidth\n      header.totalFlexWidth = totalFlexWidth\n    } else {\n      header.totalMinWidth = header.minWidth\n      header.totalWidth = Math.min(\n        Math.max(header.minWidth, header.width),\n        header.maxWidth\n      )\n      header.totalMaxWidth = header.maxWidth\n      header.totalFlexWidth = header.canResize ? header.totalWidth : 0\n    }\n    if (header.isVisible) {\n      left += header.totalWidth\n      sumTotalMinWidth += header.totalMinWidth\n      sumTotalWidth += header.totalWidth\n      sumTotalMaxWidth += header.totalMaxWidth\n      sumTotalFlexWidth += header.totalFlexWidth\n    }\n  })\n\n  return [sumTotalMinWidth, sumTotalWidth, sumTotalMaxWidth, sumTotalFlexWidth]\n}\n\nfunction accessRowsForColumn({\n  data,\n  rows,\n  flatRows,\n  rowsById,\n  column,\n  getRowId,\n  getSubRows,\n  accessValueHooks,\n  getInstance,\n}) {\n  // Access the row's data column-by-column\n  // We do it this way so we can incrementally add materialized\n  // columns after the first pass and avoid excessive looping\n  const accessRow = (originalRow, rowIndex, depth = 0, parent, parentRows) => {\n    // Keep the original reference around\n    const original = originalRow\n\n    const id = getRowId(originalRow, rowIndex, parent)\n\n    let row = rowsById[id]\n\n    // If the row hasn't been created, let's make it\n    if (!row) {\n      row = {\n        id,\n        original,\n        index: rowIndex,\n        depth,\n        cells: [{}], // This is a dummy cell\n      }\n\n      // Override common array functions (and the dummy cell's getCellProps function)\n      // to show an error if it is accessed without calling prepareRow\n      row.cells.map = unpreparedAccessWarning\n      row.cells.filter = unpreparedAccessWarning\n      row.cells.forEach = unpreparedAccessWarning\n      row.cells[0].getCellProps = unpreparedAccessWarning\n\n      // Create the cells and values\n      row.values = {}\n\n      // Push this row into the parentRows array\n      parentRows.push(row)\n      // Keep track of every row in a flat array\n      flatRows.push(row)\n      // Also keep track of every row by its ID\n      rowsById[id] = row\n\n      // Get the original subrows\n      row.originalSubRows = getSubRows(originalRow, rowIndex)\n\n      // Then recursively access them\n      if (row.originalSubRows) {\n        const subRows = []\n        row.originalSubRows.forEach((d, i) =>\n          accessRow(d, i, depth + 1, row, subRows)\n        )\n        // Keep the new subRows array on the row\n        row.subRows = subRows\n      }\n    } else if (row.subRows) {\n      // If the row exists, then it's already been accessed\n      // Keep recursing, but don't worry about passing the\n      // accumlator array (those rows already exist)\n      row.originalSubRows.forEach((d, i) => accessRow(d, i, depth + 1, row))\n    }\n\n    // If the column has an accessor, use it to get a value\n    if (column.accessor) {\n      row.values[column.id] = column.accessor(\n        originalRow,\n        rowIndex,\n        row,\n        parentRows,\n        data\n      )\n    }\n\n    // Allow plugins to manipulate the column value\n    row.values[column.id] = reduceHooks(\n      accessValueHooks,\n      row.values[column.id],\n      {\n        row,\n        column,\n        instance: getInstance(),\n      },\n      true\n    )\n  }\n\n  data.forEach((originalRow, rowIndex) =>\n    accessRow(originalRow, rowIndex, 0, undefined, rows)\n  )\n}\n", "import React from 'react'\n\nimport { expandRows } from '../utils'\n\nimport {\n  useGetLatest,\n  actions,\n  useMountedLayoutEffect,\n  makePropGetter,\n  ensurePluginOrder,\n} from '../publicUtils'\n\n// Actions\nactions.resetExpanded = 'resetExpanded'\nactions.toggleRowExpanded = 'toggleRowExpanded'\nactions.toggleAllRowsExpanded = 'toggleAllRowsExpanded'\n\nexport const useExpanded = hooks => {\n  hooks.getToggleAllRowsExpandedProps = [defaultGetToggleAllRowsExpandedProps]\n  hooks.getToggleRowExpandedProps = [defaultGetToggleRowExpandedProps]\n  hooks.stateReducers.push(reducer)\n  hooks.useInstance.push(useInstance)\n  hooks.prepareRow.push(prepareRow)\n}\n\nuseExpanded.pluginName = 'useExpanded'\n\nconst defaultGetToggleAllRowsExpandedProps = (props, { instance }) => [\n  props,\n  {\n    onClick: e => {\n      instance.toggleAllRowsExpanded()\n    },\n    style: {\n      cursor: 'pointer',\n    },\n    title: 'Toggle All Rows Expanded',\n  },\n]\n\nconst defaultGetToggleRowExpandedProps = (props, { row }) => [\n  props,\n  {\n    onClick: () => {\n      row.toggleRowExpanded()\n    },\n    style: {\n      cursor: 'pointer',\n    },\n    title: 'Toggle Row Expanded',\n  },\n]\n\n// Reducer\nfunction reducer(state, action, previousState, instance) {\n  if (action.type === actions.init) {\n    return {\n      expanded: {},\n      ...state,\n    }\n  }\n\n  if (action.type === actions.resetExpanded) {\n    return {\n      ...state,\n      expanded: instance.initialState.expanded || {},\n    }\n  }\n\n  if (action.type === actions.toggleAllRowsExpanded) {\n    const { value } = action\n    const { rowsById } = instance\n\n    const isAllRowsExpanded =\n      Object.keys(rowsById).length === Object.keys(state.expanded).length\n\n    const expandAll = typeof value !== 'undefined' ? value : !isAllRowsExpanded\n\n    if (expandAll) {\n      const expanded = {}\n\n      Object.keys(rowsById).forEach(rowId => {\n        expanded[rowId] = true\n      })\n\n      return {\n        ...state,\n        expanded,\n      }\n    }\n\n    return {\n      ...state,\n      expanded: {},\n    }\n  }\n\n  if (action.type === actions.toggleRowExpanded) {\n    const { id, value: setExpanded } = action\n    const exists = state.expanded[id]\n\n    const shouldExist =\n      typeof setExpanded !== 'undefined' ? setExpanded : !exists\n\n    if (!exists && shouldExist) {\n      return {\n        ...state,\n        expanded: {\n          ...state.expanded,\n          [id]: true,\n        },\n      }\n    } else if (exists && !shouldExist) {\n      const { [id]: _, ...rest } = state.expanded\n      return {\n        ...state,\n        expanded: rest,\n      }\n    } else {\n      return state\n    }\n  }\n}\n\nfunction useInstance(instance) {\n  const {\n    data,\n    rows,\n    rowsById,\n    manualExpandedKey = 'expanded',\n    paginateExpandedRows = true,\n    expandSubRows = true,\n    autoResetExpanded = true,\n    getHooks,\n    plugins,\n    state: { expanded },\n    dispatch,\n  } = instance\n\n  ensurePluginOrder(\n    plugins,\n    ['useSortBy', 'useGroupBy', 'usePivotColumns', 'useGlobalFilter'],\n    'useExpanded'\n  )\n\n  const getAutoResetExpanded = useGetLatest(autoResetExpanded)\n\n  let isAllRowsExpanded = Boolean(\n    Object.keys(rowsById).length && Object.keys(expanded).length\n  )\n\n  if (isAllRowsExpanded) {\n    if (Object.keys(rowsById).some(id => !expanded[id])) {\n      isAllRowsExpanded = false\n    }\n  }\n\n  // Bypass any effects from firing when this changes\n  useMountedLayoutEffect(() => {\n    if (getAutoResetExpanded()) {\n      dispatch({ type: actions.resetExpanded })\n    }\n  }, [dispatch, data])\n\n  const toggleRowExpanded = React.useCallback(\n    (id, value) => {\n      dispatch({ type: actions.toggleRowExpanded, id, value })\n    },\n    [dispatch]\n  )\n\n  const toggleAllRowsExpanded = React.useCallback(\n    value => dispatch({ type: actions.toggleAllRowsExpanded, value }),\n    [dispatch]\n  )\n\n  const expandedRows = React.useMemo(() => {\n    if (paginateExpandedRows) {\n      return expandRows(rows, { manualExpandedKey, expanded, expandSubRows })\n    }\n\n    return rows\n  }, [paginateExpandedRows, rows, manualExpandedKey, expanded, expandSubRows])\n\n  const expandedDepth = React.useMemo(() => findExpandedDepth(expanded), [\n    expanded,\n  ])\n\n  const getInstance = useGetLatest(instance)\n\n  const getToggleAllRowsExpandedProps = makePropGetter(\n    getHooks().getToggleAllRowsExpandedProps,\n    { instance: getInstance() }\n  )\n\n  Object.assign(instance, {\n    preExpandedRows: rows,\n    expandedRows,\n    rows: expandedRows,\n    expandedDepth,\n    isAllRowsExpanded,\n    toggleRowExpanded,\n    toggleAllRowsExpanded,\n    getToggleAllRowsExpandedProps,\n  })\n}\n\nfunction prepareRow(row, { instance: { getHooks }, instance }) {\n  row.toggleRowExpanded = set => instance.toggleRowExpanded(row.id, set)\n\n  row.getToggleRowExpandedProps = makePropGetter(\n    getHooks().getToggleRowExpandedProps,\n    {\n      instance,\n      row,\n    }\n  )\n}\n\nfunction findExpandedDepth(expanded) {\n  let maxDepth = 0\n\n  Object.keys(expanded).forEach(id => {\n    const splitId = id.split('.')\n    maxDepth = Math.max(maxDepth, splitId.length)\n  })\n\n  return maxDepth\n}\n", "export const text = (rows, ids, filterValue) => {\n  rows = rows.filter(row => {\n    return ids.some(id => {\n      const rowValue = row.values[id]\n      return String(rowValue)\n        .toLowerCase()\n        .includes(String(filterValue).toLowerCase())\n    })\n  })\n  return rows\n}\n\ntext.autoRemove = val => !val\n\nexport const exactText = (rows, ids, filterValue) => {\n  return rows.filter(row => {\n    return ids.some(id => {\n      const rowValue = row.values[id]\n      return rowValue !== undefined\n        ? String(rowValue).toLowerCase() === String(filterValue).toLowerCase()\n        : true\n    })\n  })\n}\n\nexactText.autoRemove = val => !val\n\nexport const exactTextCase = (rows, ids, filterValue) => {\n  return rows.filter(row => {\n    return ids.some(id => {\n      const rowValue = row.values[id]\n      return rowValue !== undefined\n        ? String(rowValue) === String(filterValue)\n        : true\n    })\n  })\n}\n\nexactTextCase.autoRemove = val => !val\n\nexport const includes = (rows, ids, filterValue) => {\n  return rows.filter(row => {\n    return ids.some(id => {\n      const rowValue = row.values[id]\n      return rowValue.includes(filterValue)\n    })\n  })\n}\n\nincludes.autoRemove = val => !val || !val.length\n\nexport const includesAll = (rows, ids, filterValue) => {\n  return rows.filter(row => {\n    return ids.some(id => {\n      const rowValue = row.values[id]\n      return (\n        rowValue &&\n        rowValue.length &&\n        filterValue.every(val => rowValue.includes(val))\n      )\n    })\n  })\n}\n\nincludesAll.autoRemove = val => !val || !val.length\n\nexport const includesSome = (rows, ids, filterValue) => {\n  return rows.filter(row => {\n    return ids.some(id => {\n      const rowValue = row.values[id]\n      return (\n        rowValue &&\n        rowValue.length &&\n        filterValue.some(val => rowValue.includes(val))\n      )\n    })\n  })\n}\n\nincludesSome.autoRemove = val => !val || !val.length\n\nexport const includesValue = (rows, ids, filterValue) => {\n  return rows.filter(row => {\n    return ids.some(id => {\n      const rowValue = row.values[id]\n      return filterValue.includes(rowValue)\n    })\n  })\n}\n\nincludesValue.autoRemove = val => !val || !val.length\n\nexport const exact = (rows, ids, filterValue) => {\n  return rows.filter(row => {\n    return ids.some(id => {\n      const rowValue = row.values[id]\n      return rowValue === filterValue\n    })\n  })\n}\n\nexact.autoRemove = val => typeof val === 'undefined'\n\nexport const equals = (rows, ids, filterValue) => {\n  return rows.filter(row => {\n    return ids.some(id => {\n      const rowValue = row.values[id]\n      // eslint-disable-next-line eqeqeq\n      return rowValue == filterValue\n    })\n  })\n}\n\nequals.autoRemove = val => val == null\n\nexport const between = (rows, ids, filterValue) => {\n  let [min, max] = filterValue || []\n\n  min = typeof min === 'number' ? min : -Infinity\n  max = typeof max === 'number' ? max : Infinity\n\n  if (min > max) {\n    const temp = min\n    min = max\n    max = temp\n  }\n\n  return rows.filter(row => {\n    return ids.some(id => {\n      const rowValue = row.values[id]\n      return rowValue >= min && rowValue <= max\n    })\n  })\n}\n\nbetween.autoRemove = val =>\n  !val || (typeof val[0] !== 'number' && typeof val[1] !== 'number')\n", "import React from 'react'\n\nimport {\n  getFirstDefined,\n  getFilterMethod,\n  shouldAutoRemoveFilter,\n} from '../utils'\n\nimport {\n  actions,\n  useGetLatest,\n  functionalUpdate,\n  useMountedLayoutEffect,\n} from '../publicUtils'\n\nimport * as filterTypes from '../filterTypes'\n\n// Actions\nactions.resetFilters = 'resetFilters'\nactions.setFilter = 'setFilter'\nactions.setAllFilters = 'setAllFilters'\n\nexport const useFilters = hooks => {\n  hooks.stateReducers.push(reducer)\n  hooks.useInstance.push(useInstance)\n}\n\nuseFilters.pluginName = 'useFilters'\n\nfunction reducer(state, action, previousState, instance) {\n  if (action.type === actions.init) {\n    return {\n      filters: [],\n      ...state,\n    }\n  }\n\n  if (action.type === actions.resetFilters) {\n    return {\n      ...state,\n      filters: instance.initialState.filters || [],\n    }\n  }\n\n  if (action.type === actions.setFilter) {\n    const { columnId, filterValue } = action\n    const { allColumns, filterTypes: userFilterTypes } = instance\n\n    const column = allColumns.find(d => d.id === columnId)\n\n    if (!column) {\n      throw new Error(\n        `React-Table: Could not find a column with id: ${columnId}`\n      )\n    }\n\n    const filterMethod = getFilterMethod(\n      column.filter,\n      userFilterTypes || {},\n      filterTypes\n    )\n\n    const previousfilter = state.filters.find(d => d.id === columnId)\n\n    const newFilter = functionalUpdate(\n      filterValue,\n      previousfilter && previousfilter.value\n    )\n\n    //\n    if (shouldAutoRemoveFilter(filterMethod.autoRemove, newFilter, column)) {\n      return {\n        ...state,\n        filters: state.filters.filter(d => d.id !== columnId),\n      }\n    }\n\n    if (previousfilter) {\n      return {\n        ...state,\n        filters: state.filters.map(d => {\n          if (d.id === columnId) {\n            return { id: columnId, value: newFilter }\n          }\n          return d\n        }),\n      }\n    }\n\n    return {\n      ...state,\n      filters: [...state.filters, { id: columnId, value: newFilter }],\n    }\n  }\n\n  if (action.type === actions.setAllFilters) {\n    const { filters } = action\n    const { allColumns, filterTypes: userFilterTypes } = instance\n\n    return {\n      ...state,\n      // Filter out undefined values\n      filters: functionalUpdate(filters, state.filters).filter(filter => {\n        const column = allColumns.find(d => d.id === filter.id)\n        const filterMethod = getFilterMethod(\n          column.filter,\n          userFilterTypes || {},\n          filterTypes\n        )\n\n        if (\n          shouldAutoRemoveFilter(filterMethod.autoRemove, filter.value, column)\n        ) {\n          return false\n        }\n        return true\n      }),\n    }\n  }\n}\n\nfunction useInstance(instance) {\n  const {\n    data,\n    rows,\n    flatRows,\n    rowsById,\n    allColumns,\n    filterTypes: userFilterTypes,\n    manualFilters,\n    defaultCanFilter = false,\n    disableFilters,\n    state: { filters },\n    dispatch,\n    autoResetFilters = true,\n  } = instance\n\n  const setFilter = React.useCallback(\n    (columnId, filterValue) => {\n      dispatch({ type: actions.setFilter, columnId, filterValue })\n    },\n    [dispatch]\n  )\n\n  const setAllFilters = React.useCallback(\n    filters => {\n      dispatch({\n        type: actions.setAllFilters,\n        filters,\n      })\n    },\n    [dispatch]\n  )\n\n  allColumns.forEach(column => {\n    const {\n      id,\n      accessor,\n      defaultCanFilter: columnDefaultCanFilter,\n      disableFilters: columnDisableFilters,\n    } = column\n\n    // Determine if a column is filterable\n    column.canFilter = accessor\n      ? getFirstDefined(\n          columnDisableFilters === true ? false : undefined,\n          disableFilters === true ? false : undefined,\n          true\n        )\n      : getFirstDefined(columnDefaultCanFilter, defaultCanFilter, false)\n\n    // Provide the column a way of updating the filter value\n    column.setFilter = val => setFilter(column.id, val)\n\n    // Provide the current filter value to the column for\n    // convenience\n    const found = filters.find(d => d.id === id)\n    column.filterValue = found && found.value\n  })\n\n  const [\n    filteredRows,\n    filteredFlatRows,\n    filteredRowsById,\n  ] = React.useMemo(() => {\n    if (manualFilters || !filters.length) {\n      return [rows, flatRows, rowsById]\n    }\n\n    const filteredFlatRows = []\n    const filteredRowsById = {}\n\n    // Filters top level and nested rows\n    const filterRows = (rows, depth = 0) => {\n      let filteredRows = rows\n\n      filteredRows = filters.reduce(\n        (filteredSoFar, { id: columnId, value: filterValue }) => {\n          // Find the filters column\n          const column = allColumns.find(d => d.id === columnId)\n\n          if (!column) {\n            return filteredSoFar\n          }\n\n          if (depth === 0) {\n            column.preFilteredRows = filteredSoFar\n          }\n\n          const filterMethod = getFilterMethod(\n            column.filter,\n            userFilterTypes || {},\n            filterTypes\n          )\n\n          if (!filterMethod) {\n            console.warn(\n              `Could not find a valid 'column.filter' for column with the ID: ${column.id}.`\n            )\n            return filteredSoFar\n          }\n\n          // Pass the rows, id, filterValue and column to the filterMethod\n          // to get the filtered rows back\n          column.filteredRows = filterMethod(\n            filteredSoFar,\n            [columnId],\n            filterValue\n          )\n\n          return column.filteredRows\n        },\n        rows\n      )\n\n      // Apply the filter to any subRows\n      // We technically could do this recursively in the above loop,\n      // but that would severely hinder the API for the user, since they\n      // would be required to do that recursion in some scenarios\n      filteredRows.forEach(row => {\n        filteredFlatRows.push(row)\n        filteredRowsById[row.id] = row\n        if (!row.subRows) {\n          return\n        }\n\n        row.subRows =\n          row.subRows && row.subRows.length > 0\n            ? filterRows(row.subRows, depth + 1)\n            : row.subRows\n      })\n\n      return filteredRows\n    }\n\n    return [filterRows(rows), filteredFlatRows, filteredRowsById]\n  }, [\n    manualFilters,\n    filters,\n    rows,\n    flatRows,\n    rowsById,\n    allColumns,\n    userFilterTypes,\n  ])\n\n  React.useMemo(() => {\n    // Now that each filtered column has it's partially filtered rows,\n    // lets assign the final filtered rows to all of the other columns\n    const nonFilteredColumns = allColumns.filter(\n      column => !filters.find(d => d.id === column.id)\n    )\n\n    // This essentially enables faceted filter options to be built easily\n    // using every column's preFilteredRows value\n    nonFilteredColumns.forEach(column => {\n      column.preFilteredRows = filteredRows\n      column.filteredRows = filteredRows\n    })\n  }, [filteredRows, filters, allColumns])\n\n  const getAutoResetFilters = useGetLatest(autoResetFilters)\n\n  useMountedLayoutEffect(() => {\n    if (getAutoResetFilters()) {\n      dispatch({ type: actions.resetFilters })\n    }\n  }, [dispatch, manualFilters ? null : data])\n\n  Object.assign(instance, {\n    preFilteredRows: rows,\n    preFilteredFlatRows: flatRows,\n    preFilteredRowsById: rowsById,\n    filteredRows,\n    filteredFlatRows,\n    filteredRowsById,\n    rows: filteredRows,\n    flatRows: filteredFlatRows,\n    rowsById: filteredRowsById,\n    setFilter,\n    setAllFilters,\n  })\n}\n", "import React from 'react'\n\nimport {\n  getFilterMethod,\n  shouldAutoRemoveFilter,\n  getFirstDefined,\n} from '../utils'\n\nimport {\n  actions,\n  useMountedLayoutEffect,\n  functionalUpdate,\n  useGetLatest,\n} from '../publicUtils'\n\nimport * as filterTypes from '../filterTypes'\n\n// Actions\nactions.resetGlobalFilter = 'resetGlobalFilter'\nactions.setGlobalFilter = 'setGlobalFilter'\n\nexport const useGlobalFilter = hooks => {\n  hooks.stateReducers.push(reducer)\n  hooks.useInstance.push(useInstance)\n}\n\nuseGlobalFilter.pluginName = 'useGlobalFilter'\n\nfunction reducer(state, action, previousState, instance) {\n  if (action.type === actions.resetGlobalFilter) {\n    return {\n      ...state,\n      globalFilter: instance.initialState.globalFilter || undefined,\n    }\n  }\n\n  if (action.type === actions.setGlobalFilter) {\n    const { filterValue } = action\n    const { userFilterTypes } = instance\n\n    const filterMethod = getFilterMethod(\n      instance.globalFilter,\n      userFilterTypes || {},\n      filterTypes\n    )\n\n    const newFilter = functionalUpdate(filterValue, state.globalFilter)\n\n    //\n    if (shouldAutoRemoveFilter(filterMethod.autoRemove, newFilter)) {\n      const { globalFilter, ...stateWithoutGlobalFilter } = state\n      return stateWithoutGlobalFilter\n    }\n\n    return {\n      ...state,\n      globalFilter: newFilter,\n    }\n  }\n}\n\nfunction useInstance(instance) {\n  const {\n    data,\n    rows,\n    flatRows,\n    rowsById,\n    allColumns,\n    filterTypes: userFilterTypes,\n    globalFilter,\n    manualGlobalFilter,\n    state: { globalFilter: globalFilterValue },\n    dispatch,\n    autoResetGlobalFilter = true,\n    disableGlobalFilter,\n  } = instance\n\n  const setGlobalFilter = React.useCallback(\n    filterValue => {\n      dispatch({ type: actions.setGlobalFilter, filterValue })\n    },\n    [dispatch]\n  )\n\n  // TODO: Create a filter cache for incremental high speed multi-filtering\n  // This gets pretty complicated pretty fast, since you have to maintain a\n  // cache for each row group (top-level rows, and each row's recursive subrows)\n  // This would make multi-filtering a lot faster though. Too far?\n\n  const [\n    globalFilteredRows,\n    globalFilteredFlatRows,\n    globalFilteredRowsById,\n  ] = React.useMemo(() => {\n    if (manualGlobalFilter || typeof globalFilterValue === 'undefined') {\n      return [rows, flatRows, rowsById]\n    }\n\n    const filteredFlatRows = []\n    const filteredRowsById = {}\n\n    const filterMethod = getFilterMethod(\n      globalFilter,\n      userFilterTypes || {},\n      filterTypes\n    )\n\n    if (!filterMethod) {\n      console.warn(`Could not find a valid 'globalFilter' option.`)\n      return rows\n    }\n\n    allColumns.forEach(column => {\n      const { disableGlobalFilter: columnDisableGlobalFilter } = column\n\n      column.canFilter = getFirstDefined(\n        columnDisableGlobalFilter === true ? false : undefined,\n        disableGlobalFilter === true ? false : undefined,\n        true\n      )\n    })\n\n    const filterableColumns = allColumns.filter(c => c.canFilter === true)\n\n    // Filters top level and nested rows\n    const filterRows = filteredRows => {\n      filteredRows = filterMethod(\n        filteredRows,\n        filterableColumns.map(d => d.id),\n        globalFilterValue\n      )\n\n      filteredRows.forEach(row => {\n        filteredFlatRows.push(row)\n        filteredRowsById[row.id] = row\n\n        row.subRows =\n          row.subRows && row.subRows.length\n            ? filterRows(row.subRows)\n            : row.subRows\n      })\n\n      return filteredRows\n    }\n\n    return [filterRows(rows), filteredFlatRows, filteredRowsById]\n  }, [\n    manualGlobalFilter,\n    globalFilterValue,\n    globalFilter,\n    userFilterTypes,\n    allColumns,\n    rows,\n    flatRows,\n    rowsById,\n    disableGlobalFilter,\n  ])\n\n  const getAutoResetGlobalFilter = useGetLatest(autoResetGlobalFilter)\n\n  useMountedLayoutEffect(() => {\n    if (getAutoResetGlobalFilter()) {\n      dispatch({ type: actions.resetGlobalFilter })\n    }\n  }, [dispatch, manualGlobalFilter ? null : data])\n\n  Object.assign(instance, {\n    preGlobalFilteredRows: rows,\n    preGlobalFilteredFlatRows: flatRows,\n    preGlobalFilteredRowsById: rowsById,\n    globalFilteredRows,\n    globalFilteredFlatRows,\n    globalFilteredRowsById,\n    rows: globalFilteredRows,\n    flatRows: globalFilteredFlatRows,\n    rowsById: globalFilteredRowsById,\n    setGlobalFilter,\n    disableGlobalFilter,\n  })\n}\n", "export function sum(values, aggregatedValues) {\n  // It's faster to just add the aggregations together instead of\n  // process leaf nodes individually\n  return aggregatedValues.reduce(\n    (sum, next) => sum + (typeof next === 'number' ? next : 0),\n    0\n  )\n}\n\nexport function min(values) {\n  let min = values[0] || 0\n\n  values.forEach(value => {\n    if (typeof value === 'number') {\n      min = Math.min(min, value)\n    }\n  })\n\n  return min\n}\n\nexport function max(values) {\n  let max = values[0] || 0\n\n  values.forEach(value => {\n    if (typeof value === 'number') {\n      max = Math.max(max, value)\n    }\n  })\n\n  return max\n}\n\nexport function minMax(values) {\n  let min = values[0] || 0\n  let max = values[0] || 0\n\n  values.forEach(value => {\n    if (typeof value === 'number') {\n      min = Math.min(min, value)\n      max = Math.max(max, value)\n    }\n  })\n\n  return `${min}..${max}`\n}\n\nexport function average(values) {\n  return sum(null, values) / values.length\n}\n\nexport function median(values) {\n  if (!values.length) {\n    return null\n  }\n\n  const mid = Math.floor(values.length / 2)\n  const nums = [...values].sort((a, b) => a - b)\n  return values.length % 2 !== 0 ? nums[mid] : (nums[mid - 1] + nums[mid]) / 2\n}\n\nexport function unique(values) {\n  return Array.from(new Set(values).values())\n}\n\nexport function uniqueCount(values) {\n  return new Set(values).size\n}\n\nexport function count(values) {\n  return values.length\n}\n", "import React from 'react'\n\nimport * as aggregations from '../aggregations'\n\nimport { getFirstDefined, flattenBy } from '../utils'\n\nimport {\n  actions,\n  makePropGetter,\n  ensurePluginOrder,\n  useMountedLayoutEffect,\n  useGetLatest,\n} from '../publicUtils'\n\nconst emptyArray = []\nconst emptyObject = {}\n\n// Actions\nactions.resetGroupBy = 'resetGroupBy'\nactions.setGroupBy = 'setGroupBy'\nactions.toggleGroupBy = 'toggleGroupBy'\n\nexport const useGroupBy = hooks => {\n  hooks.getGroupByToggleProps = [defaultGetGroupByToggleProps]\n  hooks.stateReducers.push(reducer)\n  hooks.visibleColumnsDeps.push((deps, { instance }) => [\n    ...deps,\n    instance.state.groupBy,\n  ])\n  hooks.visibleColumns.push(visibleColumns)\n  hooks.useInstance.push(useInstance)\n  hooks.prepareRow.push(prepareRow)\n}\n\nuseGroupBy.pluginName = 'useGroupBy'\n\nconst defaultGetGroupByToggleProps = (props, { header }) => [\n  props,\n  {\n    onClick: header.canGroupBy\n      ? e => {\n          e.persist()\n          header.toggleGroupBy()\n        }\n      : undefined,\n    style: {\n      cursor: header.canGroupBy ? 'pointer' : undefined,\n    },\n    title: 'Toggle GroupBy',\n  },\n]\n\n// Reducer\nfunction reducer(state, action, previousState, instance) {\n  if (action.type === actions.init) {\n    return {\n      groupBy: [],\n      ...state,\n    }\n  }\n\n  if (action.type === actions.resetGroupBy) {\n    return {\n      ...state,\n      groupBy: instance.initialState.groupBy || [],\n    }\n  }\n\n  if (action.type === actions.setGroupBy) {\n    const { value } = action\n    return {\n      ...state,\n      groupBy: value,\n    }\n  }\n\n  if (action.type === actions.toggleGroupBy) {\n    const { columnId, value: setGroupBy } = action\n\n    const resolvedGroupBy =\n      typeof setGroupBy !== 'undefined'\n        ? setGroupBy\n        : !state.groupBy.includes(columnId)\n\n    if (resolvedGroupBy) {\n      return {\n        ...state,\n        groupBy: [...state.groupBy, columnId],\n      }\n    }\n\n    return {\n      ...state,\n      groupBy: state.groupBy.filter(d => d !== columnId),\n    }\n  }\n}\n\nfunction visibleColumns(\n  columns,\n  {\n    instance: {\n      state: { groupBy },\n    },\n  }\n) {\n  // Sort grouped columns to the start of the column list\n  // before the headers are built\n\n  const groupByColumns = groupBy\n    .map(g => columns.find(col => col.id === g))\n    .filter(Boolean)\n\n  const nonGroupByColumns = columns.filter(col => !groupBy.includes(col.id))\n\n  columns = [...groupByColumns, ...nonGroupByColumns]\n\n  columns.forEach(column => {\n    column.isGrouped = groupBy.includes(column.id)\n    column.groupedIndex = groupBy.indexOf(column.id)\n  })\n\n  return columns\n}\n\nconst defaultUserAggregations = {}\n\nfunction useInstance(instance) {\n  const {\n    data,\n    rows,\n    flatRows,\n    rowsById,\n    allColumns,\n    flatHeaders,\n    groupByFn = defaultGroupByFn,\n    manualGroupBy,\n    aggregations: userAggregations = defaultUserAggregations,\n    plugins,\n    state: { groupBy },\n    dispatch,\n    autoResetGroupBy = true,\n    disableGroupBy,\n    defaultCanGroupBy,\n    getHooks,\n  } = instance\n\n  ensurePluginOrder(plugins, ['useColumnOrder', 'useFilters'], 'useGroupBy')\n\n  const getInstance = useGetLatest(instance)\n\n  allColumns.forEach(column => {\n    const {\n      accessor,\n      defaultGroupBy: defaultColumnGroupBy,\n      disableGroupBy: columnDisableGroupBy,\n    } = column\n\n    column.canGroupBy = accessor\n      ? getFirstDefined(\n          column.canGroupBy,\n          columnDisableGroupBy === true ? false : undefined,\n          disableGroupBy === true ? false : undefined,\n          true\n        )\n      : getFirstDefined(\n          column.canGroupBy,\n          defaultColumnGroupBy,\n          defaultCanGroupBy,\n          false\n        )\n\n    if (column.canGroupBy) {\n      column.toggleGroupBy = () => instance.toggleGroupBy(column.id)\n    }\n\n    column.Aggregated = column.Aggregated || column.Cell\n  })\n\n  const toggleGroupBy = React.useCallback(\n    (columnId, value) => {\n      dispatch({ type: actions.toggleGroupBy, columnId, value })\n    },\n    [dispatch]\n  )\n\n  const setGroupBy = React.useCallback(\n    value => {\n      dispatch({ type: actions.setGroupBy, value })\n    },\n    [dispatch]\n  )\n\n  flatHeaders.forEach(header => {\n    header.getGroupByToggleProps = makePropGetter(\n      getHooks().getGroupByToggleProps,\n      { instance: getInstance(), header }\n    )\n  })\n\n  const [\n    groupedRows,\n    groupedFlatRows,\n    groupedRowsById,\n    onlyGroupedFlatRows,\n    onlyGroupedRowsById,\n    nonGroupedFlatRows,\n    nonGroupedRowsById,\n  ] = React.useMemo(() => {\n    if (manualGroupBy || !groupBy.length) {\n      return [\n        rows,\n        flatRows,\n        rowsById,\n        emptyArray,\n        emptyObject,\n        flatRows,\n        rowsById,\n      ]\n    }\n\n    // Ensure that the list of filtered columns exist\n    const existingGroupBy = groupBy.filter(g =>\n      allColumns.find(col => col.id === g)\n    )\n\n    // Find the columns that can or are aggregating\n    // Uses each column to aggregate rows into a single value\n    const aggregateRowsToValues = (leafRows, groupedRows, depth) => {\n      const values = {}\n\n      allColumns.forEach(column => {\n        // Don't aggregate columns that are in the groupBy\n        if (existingGroupBy.includes(column.id)) {\n          values[column.id] = groupedRows[0]\n            ? groupedRows[0].values[column.id]\n            : null\n          return\n        }\n\n        // Aggregate the values\n        let aggregateFn =\n          typeof column.aggregate === 'function'\n            ? column.aggregate\n            : userAggregations[column.aggregate] ||\n              aggregations[column.aggregate]\n\n        if (aggregateFn) {\n          // Get the columnValues to aggregate\n          const groupedValues = groupedRows.map(row => row.values[column.id])\n\n          // Get the columnValues to aggregate\n          const leafValues = leafRows.map(row => {\n            let columnValue = row.values[column.id]\n\n            if (!depth && column.aggregateValue) {\n              const aggregateValueFn =\n                typeof column.aggregateValue === 'function'\n                  ? column.aggregateValue\n                  : userAggregations[column.aggregateValue] ||\n                    aggregations[column.aggregateValue]\n\n              if (!aggregateValueFn) {\n                console.info({ column })\n                throw new Error(\n                  `React Table: Invalid column.aggregateValue option for column listed above`\n                )\n              }\n\n              columnValue = aggregateValueFn(columnValue, row, column)\n            }\n            return columnValue\n          })\n\n          values[column.id] = aggregateFn(leafValues, groupedValues)\n        } else if (column.aggregate) {\n          console.info({ column })\n          throw new Error(\n            `React Table: Invalid column.aggregate option for column listed above`\n          )\n        } else {\n          values[column.id] = null\n        }\n      })\n\n      return values\n    }\n\n    let groupedFlatRows = []\n    const groupedRowsById = {}\n    const onlyGroupedFlatRows = []\n    const onlyGroupedRowsById = {}\n    const nonGroupedFlatRows = []\n    const nonGroupedRowsById = {}\n\n    // Recursively group the data\n    const groupUpRecursively = (rows, depth = 0, parentId) => {\n      // This is the last level, just return the rows\n      if (depth === existingGroupBy.length) {\n        return rows.map((row) => ({ ...row, depth }))\n      }\n\n      const columnId = existingGroupBy[depth]\n\n      // Group the rows together for this level\n      let rowGroupsMap = groupByFn(rows, columnId)\n\n      // Peform aggregations for each group\n      const aggregatedGroupedRows = Object.entries(rowGroupsMap).map(\n        ([groupByVal, groupedRows], index) => {\n          let id = `${columnId}:${groupByVal}`\n          id = parentId ? `${parentId}>${id}` : id\n\n          // First, Recurse to group sub rows before aggregation\n          const subRows = groupUpRecursively(groupedRows, depth + 1, id)\n\n          // Flatten the leaf rows of the rows in this group\n          const leafRows = depth\n            ? flattenBy(groupedRows, 'leafRows')\n            : groupedRows\n\n          const values = aggregateRowsToValues(leafRows, groupedRows, depth)\n\n          const row = {\n            id,\n            isGrouped: true,\n            groupByID: columnId,\n            groupByVal,\n            values,\n            subRows,\n            leafRows,\n            depth,\n            index,\n          }\n\n          subRows.forEach(subRow => {\n            groupedFlatRows.push(subRow)\n            groupedRowsById[subRow.id] = subRow\n            if (subRow.isGrouped) {\n              onlyGroupedFlatRows.push(subRow)\n              onlyGroupedRowsById[subRow.id] = subRow\n            } else {\n              nonGroupedFlatRows.push(subRow)\n              nonGroupedRowsById[subRow.id] = subRow\n            }\n          })\n\n          return row\n        }\n      )\n\n      return aggregatedGroupedRows\n    }\n\n    const groupedRows = groupUpRecursively(rows)\n\n    groupedRows.forEach(subRow => {\n      groupedFlatRows.push(subRow)\n      groupedRowsById[subRow.id] = subRow\n      if (subRow.isGrouped) {\n        onlyGroupedFlatRows.push(subRow)\n        onlyGroupedRowsById[subRow.id] = subRow\n      } else {\n        nonGroupedFlatRows.push(subRow)\n        nonGroupedRowsById[subRow.id] = subRow\n      }\n    })\n\n    // Assign the new data\n    return [\n      groupedRows,\n      groupedFlatRows,\n      groupedRowsById,\n      onlyGroupedFlatRows,\n      onlyGroupedRowsById,\n      nonGroupedFlatRows,\n      nonGroupedRowsById,\n    ]\n  }, [\n    manualGroupBy,\n    groupBy,\n    rows,\n    flatRows,\n    rowsById,\n    allColumns,\n    userAggregations,\n    groupByFn,\n  ])\n\n  const getAutoResetGroupBy = useGetLatest(autoResetGroupBy)\n\n  useMountedLayoutEffect(() => {\n    if (getAutoResetGroupBy()) {\n      dispatch({ type: actions.resetGroupBy })\n    }\n  }, [dispatch, manualGroupBy ? null : data])\n\n  Object.assign(instance, {\n    preGroupedRows: rows,\n    preGroupedFlatRow: flatRows,\n    preGroupedRowsById: rowsById,\n    groupedRows,\n    groupedFlatRows,\n    groupedRowsById,\n    onlyGroupedFlatRows,\n    onlyGroupedRowsById,\n    nonGroupedFlatRows,\n    nonGroupedRowsById,\n    rows: groupedRows,\n    flatRows: groupedFlatRows,\n    rowsById: groupedRowsById,\n    toggleGroupBy,\n    setGroupBy,\n  })\n}\n\nfunction prepareRow(row) {\n  row.allCells.forEach(cell => {\n    // Grouped cells are in the groupBy and the pivot cell for the row\n    cell.isGrouped = cell.column.isGrouped && cell.column.id === row.groupByID\n    // Placeholder cells are any columns in the groupBy that are not grouped\n    cell.isPlaceholder = !cell.isGrouped && cell.column.isGrouped\n    // Aggregated cells are not grouped, not repeated, but still have subRows\n    cell.isAggregated =\n      !cell.isGrouped && !cell.isPlaceholder && row.subRows?.length\n  })\n}\n\nexport function defaultGroupByFn(rows, columnId) {\n  return rows.reduce((prev, row, i) => {\n    // TODO: Might want to implement a key serializer here so\n    // irregular column values can still be grouped if needed?\n    const resKey = `${row.values[columnId]}`\n    prev[resKey] = Array.isArray(prev[resKey]) ? prev[resKey] : []\n    prev[resKey].push(row)\n    return prev\n  }, {})\n}\n", "const reSplitAlphaNumeric = /([0-9]+)/gm\n\n// Mixed sorting is slow, but very inclusive of many edge cases.\n// It handles numbers, mixed alphanumeric combinations, and even\n// null, undefined, and Infinity\nexport const alphanumeric = (rowA, rowB, columnId) => {\n  let [a, b] = getRowValuesByColumnID(rowA, rowB, columnId)\n\n  // Force to strings (or \"\" for unsupported types)\n  a = toString(a)\n  b = toString(b)\n\n  // Split on number groups, but keep the delimiter\n  // Then remove falsey split values\n  a = a.split(reSplitAlphaNumeric).filter(Boolean)\n  b = b.split(reSplitAlphaNumeric).filter(Boolean)\n\n  // While\n  while (a.length && b.length) {\n    let aa = a.shift()\n    let bb = b.shift()\n\n    const an = parseInt(aa, 10)\n    const bn = parseInt(bb, 10)\n\n    const combo = [an, bn].sort()\n\n    // Both are string\n    if (isNaN(combo[0])) {\n      if (aa > bb) {\n        return 1\n      }\n      if (bb > aa) {\n        return -1\n      }\n      continue\n    }\n\n    // One is a string, one is a number\n    if (isNaN(combo[1])) {\n      return isNaN(an) ? -1 : 1\n    }\n\n    // Both are numbers\n    if (an > bn) {\n      return 1\n    }\n    if (bn > an) {\n      return -1\n    }\n  }\n\n  return a.length - b.length\n}\nexport function datetime(rowA, rowB, columnId) {\n  let [a, b] = getRowValuesByColumnID(rowA, rowB, columnId)\n\n  a = a.getTime()\n  b = b.getTime()\n\n  return compareBasic(a, b)\n}\n\nexport function basic(rowA, rowB, columnId) {\n  let [a, b] = getRowValuesByColumnID(rowA, rowB, columnId)\n\n  return compareBasic(a, b)\n}\n\nexport function string(rowA, rowB, columnId) {\n  let [a, b] = getRowValuesByColumnID(rowA, rowB, columnId)\n\n  a = a.split('').filter(Boolean)\n  b = b.split('').filter(Boolean)\n\n  while (a.length && b.length) {\n    let aa = a.shift()\n    let bb = b.shift()\n\n    let alower = aa.toLowerCase()\n    let blower = bb.toLowerCase()\n\n    // Case insensitive comparison until characters match\n    if (alower > blower) {\n      return 1\n    }\n    if (blower > alower) {\n      return -1\n    }\n    // If lowercase characters are identical\n    if (aa > bb) {\n      return 1\n    }\n    if (bb > aa) {\n      return -1\n    }\n    continue\n  }\n\n  return a.length - b.length\n}\n\nexport function number(rowA, rowB, columnId) {\n  let [a, b] = getRowValuesByColumnID(rowA, rowB, columnId)\n\n  const replaceNonNumeric = /[^0-9.]/gi\n\n  a = Number(String(a).replace(replaceNonNumeric, ''))\n  b = Number(String(b).replace(replaceNonNumeric, ''))\n\n  return compareBasic(a, b)\n}\n\n// Utils\n\nfunction compareBasic(a, b) {\n  return a === b ? 0 : a > b ? 1 : -1\n}\n\nfunction getRowValuesByColumnID(row1, row2, columnId) {\n  return [row1.values[columnId], row2.values[columnId]]\n}\n\nfunction toString(a) {\n  if (typeof a === 'number') {\n    if (isNaN(a) || a === Infinity || a === -Infinity) {\n      return ''\n    }\n    return String(a)\n  }\n  if (typeof a === 'string') {\n    return a\n  }\n  return ''\n}\n", "import React from 'react'\n\nimport {\n  actions,\n  ensurePluginOrder,\n  defaultColumn,\n  makePropGetter,\n  useGetLatest,\n  useMountedLayoutEffect,\n} from '../publicUtils'\n\nimport { getFirstDefined, isFunction } from '../utils'\n\nimport * as sortTypes from '../sortTypes'\n\n// Actions\nactions.resetSortBy = 'resetSortBy'\nactions.setSortBy = 'setSortBy'\nactions.toggleSortBy = 'toggleSortBy'\nactions.clearSortBy = 'clearSortBy'\n\ndefaultColumn.sortType = 'alphanumeric'\ndefaultColumn.sortDescFirst = false\n\nexport const useSortBy = hooks => {\n  hooks.getSortByToggleProps = [defaultGetSortByToggleProps]\n  hooks.stateReducers.push(reducer)\n  hooks.useInstance.push(useInstance)\n}\n\nuseSortBy.pluginName = 'useSortBy'\n\nconst defaultGetSortByToggleProps = (props, { instance, column }) => {\n  const { isMultiSortEvent = e => e.shiftKey } = instance\n\n  return [\n    props,\n    {\n      onClick: column.canSort\n        ? e => {\n            e.persist()\n            column.toggleSortBy(\n              undefined,\n              !instance.disableMultiSort && isMultiSortEvent(e)\n            )\n          }\n        : undefined,\n      style: {\n        cursor: column.canSort ? 'pointer' : undefined,\n      },\n      title: column.canSort ? 'Toggle SortBy' : undefined,\n    },\n  ]\n}\n\n// Reducer\nfunction reducer(state, action, previousState, instance) {\n  if (action.type === actions.init) {\n    return {\n      sortBy: [],\n      ...state,\n    }\n  }\n\n  if (action.type === actions.resetSortBy) {\n    return {\n      ...state,\n      sortBy: instance.initialState.sortBy || [],\n    }\n  }\n\n  if (action.type === actions.clearSortBy) {\n    const { sortBy } = state\n    const newSortBy = sortBy.filter(d => d.id !== action.columnId)\n\n    return {\n      ...state,\n      sortBy: newSortBy,\n    }\n  }\n\n  if (action.type === actions.setSortBy) {\n    const { sortBy } = action\n    return {\n      ...state,\n      sortBy,\n    }\n  }\n\n  if (action.type === actions.toggleSortBy) {\n    const { columnId, desc, multi } = action\n\n    const {\n      allColumns,\n      disableMultiSort,\n      disableSortRemove,\n      disableMultiRemove,\n      maxMultiSortColCount = Number.MAX_SAFE_INTEGER,\n    } = instance\n\n    const { sortBy } = state\n\n    // Find the column for this columnId\n    const column = allColumns.find(d => d.id === columnId)\n    const { sortDescFirst } = column\n\n    // Find any existing sortBy for this column\n    const existingSortBy = sortBy.find(d => d.id === columnId)\n    const existingIndex = sortBy.findIndex(d => d.id === columnId)\n    const hasDescDefined = typeof desc !== 'undefined' && desc !== null\n\n    let newSortBy = []\n\n    // What should we do with this sort action?\n    let sortAction\n\n    if (!disableMultiSort && multi) {\n      if (existingSortBy) {\n        sortAction = 'toggle'\n      } else {\n        sortAction = 'add'\n      }\n    } else {\n      // Normal mode\n      if (existingIndex !== sortBy.length - 1 || sortBy.length !== 1) {\n        sortAction = 'replace'\n      } else if (existingSortBy) {\n        sortAction = 'toggle'\n      } else {\n        sortAction = 'replace'\n      }\n    }\n\n    // Handle toggle states that will remove the sortBy\n    if (\n      sortAction === 'toggle' && // Must be toggling\n      !disableSortRemove && // If disableSortRemove, disable in general\n      !hasDescDefined && // Must not be setting desc\n      (multi ? !disableMultiRemove : true) && // If multi, don't allow if disableMultiRemove\n      ((existingSortBy && // Finally, detect if it should indeed be removed\n        existingSortBy.desc &&\n        !sortDescFirst) ||\n        (!existingSortBy.desc && sortDescFirst))\n    ) {\n      sortAction = 'remove'\n    }\n\n    if (sortAction === 'replace') {\n      newSortBy = [\n        {\n          id: columnId,\n          desc: hasDescDefined ? desc : sortDescFirst,\n        },\n      ]\n    } else if (sortAction === 'add') {\n      newSortBy = [\n        ...sortBy,\n        {\n          id: columnId,\n          desc: hasDescDefined ? desc : sortDescFirst,\n        },\n      ]\n      // Take latest n columns\n      newSortBy.splice(0, newSortBy.length - maxMultiSortColCount)\n    } else if (sortAction === 'toggle') {\n      // This flips (or sets) the\n      newSortBy = sortBy.map(d => {\n        if (d.id === columnId) {\n          return {\n            ...d,\n            desc: hasDescDefined ? desc : !existingSortBy.desc,\n          }\n        }\n        return d\n      })\n    } else if (sortAction === 'remove') {\n      newSortBy = sortBy.filter(d => d.id !== columnId)\n    }\n\n    return {\n      ...state,\n      sortBy: newSortBy,\n    }\n  }\n}\n\nfunction useInstance(instance) {\n  const {\n    data,\n    rows,\n    flatRows,\n    allColumns,\n    orderByFn = defaultOrderByFn,\n    sortTypes: userSortTypes,\n    manualSortBy,\n    defaultCanSort,\n    disableSortBy,\n    flatHeaders,\n    state: { sortBy },\n    dispatch,\n    plugins,\n    getHooks,\n    autoResetSortBy = true,\n  } = instance\n\n  ensurePluginOrder(\n    plugins,\n    ['useFilters', 'useGlobalFilter', 'useGroupBy', 'usePivotColumns'],\n    'useSortBy'\n  )\n\n  const setSortBy = React.useCallback(\n    sortBy => {\n      dispatch({ type: actions.setSortBy, sortBy })\n    },\n    [dispatch]\n  )\n\n  // Updates sorting based on a columnId, desc flag and multi flag\n  const toggleSortBy = React.useCallback(\n    (columnId, desc, multi) => {\n      dispatch({ type: actions.toggleSortBy, columnId, desc, multi })\n    },\n    [dispatch]\n  )\n\n  // use reference to avoid memory leak in #1608\n  const getInstance = useGetLatest(instance)\n\n  // Add the getSortByToggleProps method to columns and headers\n  flatHeaders.forEach(column => {\n    const {\n      accessor,\n      canSort: defaultColumnCanSort,\n      disableSortBy: columnDisableSortBy,\n      id,\n    } = column\n\n    const canSort = accessor\n      ? getFirstDefined(\n          columnDisableSortBy === true ? false : undefined,\n          disableSortBy === true ? false : undefined,\n          true\n        )\n      : getFirstDefined(defaultCanSort, defaultColumnCanSort, false)\n\n    column.canSort = canSort\n\n    if (column.canSort) {\n      column.toggleSortBy = (desc, multi) =>\n        toggleSortBy(column.id, desc, multi)\n\n      column.clearSortBy = () => {\n        dispatch({ type: actions.clearSortBy, columnId: column.id })\n      }\n    }\n\n    column.getSortByToggleProps = makePropGetter(\n      getHooks().getSortByToggleProps,\n      {\n        instance: getInstance(),\n        column,\n      }\n    )\n\n    const columnSort = sortBy.find(d => d.id === id)\n    column.isSorted = !!columnSort\n    column.sortedIndex = sortBy.findIndex(d => d.id === id)\n    column.isSortedDesc = column.isSorted ? columnSort.desc : undefined\n  })\n\n  const [sortedRows, sortedFlatRows] = React.useMemo(() => {\n    if (manualSortBy || !sortBy.length) {\n      return [rows, flatRows]\n    }\n\n    const sortedFlatRows = []\n\n    // Filter out sortBys that correspond to non existing columns\n    const availableSortBy = sortBy.filter(sort =>\n      allColumns.find(col => col.id === sort.id)\n    )\n\n    const sortData = rows => {\n      // Use the orderByFn to compose multiple sortBy's together.\n      // This will also perform a stable sorting using the row index\n      // if needed.\n      const sortedData = orderByFn(\n        rows,\n        availableSortBy.map(sort => {\n          // Support custom sorting methods for each column\n          const column = allColumns.find(d => d.id === sort.id)\n\n          if (!column) {\n            throw new Error(\n              `React-Table: Could not find a column with id: ${sort.id} while sorting`\n            )\n          }\n\n          const { sortType } = column\n\n          // Look up sortBy functions in this order:\n          // column function\n          // column string lookup on user sortType\n          // column string lookup on built-in sortType\n          // default function\n          // default string lookup on user sortType\n          // default string lookup on built-in sortType\n          const sortMethod =\n            isFunction(sortType) ||\n            (userSortTypes || {})[sortType] ||\n            sortTypes[sortType]\n\n          if (!sortMethod) {\n            throw new Error(\n              `React-Table: Could not find a valid sortType of '${sortType}' for column '${sort.id}'.`\n            )\n          }\n\n          // Return the correct sortFn.\n          // This function should always return in ascending order\n          return (a, b) => sortMethod(a, b, sort.id, sort.desc)\n        }),\n        // Map the directions\n        availableSortBy.map(sort => {\n          // Detect and use the sortInverted option\n          const column = allColumns.find(d => d.id === sort.id)\n\n          if (column && column.sortInverted) {\n            return sort.desc\n          }\n\n          return !sort.desc\n        })\n      )\n\n      // If there are sub-rows, sort them\n      sortedData.forEach(row => {\n        sortedFlatRows.push(row)\n        if (!row.subRows || row.subRows.length === 0) {\n          return\n        }\n        row.subRows = sortData(row.subRows)\n      })\n\n      return sortedData\n    }\n\n    return [sortData(rows), sortedFlatRows]\n  }, [\n    manualSortBy,\n    sortBy,\n    rows,\n    flatRows,\n    allColumns,\n    orderByFn,\n    userSortTypes,\n  ])\n\n  const getAutoResetSortBy = useGetLatest(autoResetSortBy)\n\n  useMountedLayoutEffect(() => {\n    if (getAutoResetSortBy()) {\n      dispatch({ type: actions.resetSortBy })\n    }\n  }, [manualSortBy ? null : data])\n\n  Object.assign(instance, {\n    preSortedRows: rows,\n    preSortedFlatRows: flatRows,\n    sortedRows,\n    sortedFlatRows,\n    rows: sortedRows,\n    flatRows: sortedFlatRows,\n    setSortBy,\n    toggleSortBy,\n  })\n}\n\nexport function defaultOrderByFn(arr, funcs, dirs) {\n  return [...arr].sort((rowA, rowB) => {\n    for (let i = 0; i < funcs.length; i += 1) {\n      const sortFn = funcs[i]\n      const desc = dirs[i] === false || dirs[i] === 'desc'\n      const sortInt = sortFn(rowA, rowB)\n      if (sortInt !== 0) {\n        return desc ? -sortInt : sortInt\n      }\n    }\n    return dirs[0] ? rowA.index - rowB.index : rowB.index - rowA.index\n  })\n}\n", "import React from 'react'\n\n//\n\nimport {\n  actions,\n  ensurePluginOrder,\n  functionalUpdate,\n  useMountedLayoutEffect,\n  useGetLatest,\n} from '../publicUtils'\n\nimport { expandRows } from '../utils'\n\nconst pluginName = 'usePagination'\n\n// Actions\nactions.resetPage = 'resetPage'\nactions.gotoPage = 'gotoPage'\nactions.setPageSize = 'setPageSize'\n\nexport const usePagination = hooks => {\n  hooks.stateReducers.push(reducer)\n  hooks.useInstance.push(useInstance)\n}\n\nusePagination.pluginName = pluginName\n\nfunction reducer(state, action, previousState, instance) {\n  if (action.type === actions.init) {\n    return {\n      pageSize: 10,\n      pageIndex: 0,\n      ...state,\n    }\n  }\n\n  if (action.type === actions.resetPage) {\n    return {\n      ...state,\n      pageIndex: instance.initialState.pageIndex || 0,\n    }\n  }\n\n  if (action.type === actions.gotoPage) {\n    const { pageCount, page } = instance\n    const newPageIndex = functionalUpdate(action.pageIndex, state.pageIndex)\n    let canNavigate = false\n\n    if (newPageIndex > state.pageIndex) {\n      // next page\n      canNavigate =\n        pageCount === -1\n          ? page.length >= state.pageSize\n          : newPageIndex < pageCount\n    } else if (newPageIndex < state.pageIndex) {\n      // prev page\n      canNavigate = newPageIndex > -1\n    }\n\n    if (!canNavigate) {\n      return state\n    }\n\n    return {\n      ...state,\n      pageIndex: newPageIndex,\n    }\n  }\n\n  if (action.type === actions.setPageSize) {\n    const { pageSize } = action\n    const topRowIndex = state.pageSize * state.pageIndex\n    const pageIndex = Math.floor(topRowIndex / pageSize)\n\n    return {\n      ...state,\n      pageIndex,\n      pageSize,\n    }\n  }\n}\n\nfunction useInstance(instance) {\n  const {\n    rows,\n    autoResetPage = true,\n    manualExpandedKey = 'expanded',\n    plugins,\n    pageCount: userPageCount,\n    paginateExpandedRows = true,\n    expandSubRows = true,\n    state: {\n      pageSize,\n      pageIndex,\n      expanded,\n      globalFilter,\n      filters,\n      groupBy,\n      sortBy,\n    },\n    dispatch,\n    data,\n    manualPagination,\n  } = instance\n\n  ensurePluginOrder(\n    plugins,\n    ['useGlobalFilter', 'useFilters', 'useGroupBy', 'useSortBy', 'useExpanded'],\n    'usePagination'\n  )\n\n  const getAutoResetPage = useGetLatest(autoResetPage)\n\n  useMountedLayoutEffect(() => {\n    if (getAutoResetPage()) {\n      dispatch({ type: actions.resetPage })\n    }\n  }, [\n    dispatch,\n    manualPagination ? null : data,\n    globalFilter,\n    filters,\n    groupBy,\n    sortBy,\n  ])\n\n  const pageCount = manualPagination\n    ? userPageCount\n    : Math.ceil(rows.length / pageSize)\n\n  const pageOptions = React.useMemo(\n    () =>\n      pageCount > 0\n        ? [...new Array(pageCount)].fill(null).map((d, i) => i)\n        : [],\n    [pageCount]\n  )\n\n  const page = React.useMemo(() => {\n    let page\n\n    if (manualPagination) {\n      page = rows\n    } else {\n      const pageStart = pageSize * pageIndex\n      const pageEnd = pageStart + pageSize\n\n      page = rows.slice(pageStart, pageEnd)\n    }\n\n    if (paginateExpandedRows) {\n      return page\n    }\n\n    return expandRows(page, { manualExpandedKey, expanded, expandSubRows })\n  }, [\n    expandSubRows,\n    expanded,\n    manualExpandedKey,\n    manualPagination,\n    pageIndex,\n    pageSize,\n    paginateExpandedRows,\n    rows,\n  ])\n\n  const canPreviousPage = pageIndex > 0\n  const canNextPage =\n    pageCount === -1 ? page.length >= pageSize : pageIndex < pageCount - 1\n\n  const gotoPage = React.useCallback(\n    pageIndex => {\n      dispatch({ type: actions.gotoPage, pageIndex })\n    },\n    [dispatch]\n  )\n\n  const previousPage = React.useCallback(() => {\n    return gotoPage(old => old - 1)\n  }, [gotoPage])\n\n  const nextPage = React.useCallback(() => {\n    return gotoPage(old => old + 1)\n  }, [gotoPage])\n\n  const setPageSize = React.useCallback(\n    pageSize => {\n      dispatch({ type: actions.setPageSize, pageSize })\n    },\n    [dispatch]\n  )\n\n  Object.assign(instance, {\n    pageOptions,\n    pageCount,\n    page,\n    canPreviousPage,\n    canNextPage,\n    gotoPage,\n    previousPage,\n    nextPage,\n    setPageSize,\n  })\n}\n", "/* istanbul ignore file */\n\nimport {\n  actions,\n  makePropGetter,\n  ensurePluginOrder,\n  useMountedLayoutEffect,\n  useGetLatest,\n} from '../publicUtils'\n\nimport { flattenColumns, getFirstDefined } from '../utils'\n\n// Actions\nactions.resetPivot = 'resetPivot'\nactions.togglePivot = 'togglePivot'\n\nexport const _UNSTABLE_usePivotColumns = hooks => {\n  hooks.getPivotToggleProps = [defaultGetPivotToggleProps]\n  hooks.stateReducers.push(reducer)\n  hooks.useInstanceAfterData.push(useInstanceAfterData)\n  hooks.allColumns.push(allColumns)\n  hooks.accessValue.push(accessValue)\n  hooks.materializedColumns.push(materializedColumns)\n  hooks.materializedColumnsDeps.push(materializedColumnsDeps)\n  hooks.visibleColumns.push(visibleColumns)\n  hooks.visibleColumnsDeps.push(visibleColumnsDeps)\n  hooks.useInstance.push(useInstance)\n  hooks.prepareRow.push(prepareRow)\n}\n\n_UNSTABLE_usePivotColumns.pluginName = 'usePivotColumns'\n\nconst defaultPivotColumns = []\n\nconst defaultGetPivotToggleProps = (props, { header }) => [\n  props,\n  {\n    onClick: header.canPivot\n      ? e => {\n          e.persist()\n          header.togglePivot()\n        }\n      : undefined,\n    style: {\n      cursor: header.canPivot ? 'pointer' : undefined,\n    },\n    title: 'Toggle Pivot',\n  },\n]\n\n// Reducer\nfunction reducer(state, action, previousState, instance) {\n  if (action.type === actions.init) {\n    return {\n      pivotColumns: defaultPivotColumns,\n      ...state,\n    }\n  }\n\n  if (action.type === actions.resetPivot) {\n    return {\n      ...state,\n      pivotColumns: instance.initialState.pivotColumns || defaultPivotColumns,\n    }\n  }\n\n  if (action.type === actions.togglePivot) {\n    const { columnId, value: setPivot } = action\n\n    const resolvedPivot =\n      typeof setPivot !== 'undefined'\n        ? setPivot\n        : !state.pivotColumns.includes(columnId)\n\n    if (resolvedPivot) {\n      return {\n        ...state,\n        pivotColumns: [...state.pivotColumns, columnId],\n      }\n    }\n\n    return {\n      ...state,\n      pivotColumns: state.pivotColumns.filter(d => d !== columnId),\n    }\n  }\n}\n\nfunction useInstanceAfterData(instance) {\n  instance.allColumns.forEach(column => {\n    column.isPivotSource = instance.state.pivotColumns.includes(column.id)\n  })\n}\n\nfunction allColumns(columns, { instance }) {\n  columns.forEach(column => {\n    column.isPivotSource = instance.state.pivotColumns.includes(column.id)\n    column.uniqueValues = new Set()\n  })\n  return columns\n}\n\nfunction accessValue(value, { column }) {\n  if (column.uniqueValues && typeof value !== 'undefined') {\n    column.uniqueValues.add(value)\n  }\n  return value\n}\n\nfunction materializedColumns(materialized, { instance }) {\n  const { allColumns, state } = instance\n\n  if (!state.pivotColumns.length || !state.groupBy || !state.groupBy.length) {\n    return materialized\n  }\n\n  const pivotColumns = state.pivotColumns\n    .map(id => allColumns.find(d => d.id === id))\n    .filter(Boolean)\n\n  const sourceColumns = allColumns.filter(\n    d =>\n      !d.isPivotSource &&\n      !state.groupBy.includes(d.id) &&\n      !state.pivotColumns.includes(d.id)\n  )\n\n  const buildPivotColumns = (depth = 0, parent, pivotFilters = []) => {\n    const pivotColumn = pivotColumns[depth]\n\n    if (!pivotColumn) {\n      return sourceColumns.map(sourceColumn => {\n        // TODO: We could offer support here for renesting pivoted\n        // columns inside copies of their header groups. For now,\n        // that seems like it would be (1) overkill on nesting, considering\n        // you already get nesting for every pivot level and (2)\n        // really hard. :)\n\n        return {\n          ...sourceColumn,\n          canPivot: false,\n          isPivoted: true,\n          parent,\n          depth: depth,\n          id: `${parent ? `${parent.id}.${sourceColumn.id}` : sourceColumn.id}`,\n          accessor: (originalRow, i, row) => {\n            if (pivotFilters.every(filter => filter(row))) {\n              return row.values[sourceColumn.id]\n            }\n          },\n        }\n      })\n    }\n\n    const uniqueValues = Array.from(pivotColumn.uniqueValues).sort()\n\n    return uniqueValues.map(uniqueValue => {\n      const columnGroup = {\n        ...pivotColumn,\n        Header:\n          pivotColumn.PivotHeader || typeof pivotColumn.header === 'string'\n            ? `${pivotColumn.Header}: ${uniqueValue}`\n            : uniqueValue,\n        isPivotGroup: true,\n        parent,\n        depth,\n        id: parent\n          ? `${parent.id}.${pivotColumn.id}.${uniqueValue}`\n          : `${pivotColumn.id}.${uniqueValue}`,\n        pivotValue: uniqueValue,\n      }\n\n      columnGroup.columns = buildPivotColumns(depth + 1, columnGroup, [\n        ...pivotFilters,\n        row => row.values[pivotColumn.id] === uniqueValue,\n      ])\n\n      return columnGroup\n    })\n  }\n\n  const newMaterialized = flattenColumns(buildPivotColumns())\n\n  return [...materialized, ...newMaterialized]\n}\n\nfunction materializedColumnsDeps(\n  deps,\n  {\n    instance: {\n      state: { pivotColumns, groupBy },\n    },\n  }\n) {\n  return [...deps, pivotColumns, groupBy]\n}\n\nfunction visibleColumns(visibleColumns, { instance: { state } }) {\n  visibleColumns = visibleColumns.filter(d => !d.isPivotSource)\n\n  if (state.pivotColumns.length && state.groupBy && state.groupBy.length) {\n    visibleColumns = visibleColumns.filter(\n      column => column.isGrouped || column.isPivoted\n    )\n  }\n\n  return visibleColumns\n}\n\nfunction visibleColumnsDeps(deps, { instance }) {\n  return [...deps, instance.state.pivotColumns, instance.state.groupBy]\n}\n\nfunction useInstance(instance) {\n  const {\n    columns,\n    allColumns,\n    flatHeaders,\n    // pivotFn = defaultPivotFn,\n    // manualPivot,\n    getHooks,\n    plugins,\n    dispatch,\n    autoResetPivot = true,\n    manaulPivot,\n    disablePivot,\n    defaultCanPivot,\n  } = instance\n\n  ensurePluginOrder(plugins, ['useGroupBy'], 'usePivotColumns')\n\n  const getInstance = useGetLatest(instance)\n\n  allColumns.forEach(column => {\n    const {\n      accessor,\n      defaultPivot: defaultColumnPivot,\n      disablePivot: columnDisablePivot,\n    } = column\n\n    column.canPivot = accessor\n      ? getFirstDefined(\n          column.canPivot,\n          columnDisablePivot === true ? false : undefined,\n          disablePivot === true ? false : undefined,\n          true\n        )\n      : getFirstDefined(\n          column.canPivot,\n          defaultColumnPivot,\n          defaultCanPivot,\n          false\n        )\n\n    if (column.canPivot) {\n      column.togglePivot = () => instance.togglePivot(column.id)\n    }\n\n    column.Aggregated = column.Aggregated || column.Cell\n  })\n\n  const togglePivot = (columnId, value) => {\n    dispatch({ type: actions.togglePivot, columnId, value })\n  }\n\n  flatHeaders.forEach(header => {\n    header.getPivotToggleProps = makePropGetter(\n      getHooks().getPivotToggleProps,\n      {\n        instance: getInstance(),\n        header,\n      }\n    )\n  })\n\n  const getAutoResetPivot = useGetLatest(autoResetPivot)\n\n  useMountedLayoutEffect(() => {\n    if (getAutoResetPivot()) {\n      dispatch({ type: actions.resetPivot })\n    }\n  }, [dispatch, manaulPivot ? null : columns])\n\n  Object.assign(instance, {\n    togglePivot,\n  })\n}\n\nfunction prepareRow(row) {\n  row.allCells.forEach(cell => {\n    // Grouped cells are in the pivotColumns and the pivot cell for the row\n    cell.isPivoted = cell.column.isPivoted\n  })\n}\n", "import React from 'react'\n\nimport {\n  actions,\n  makePropGetter,\n  ensurePluginOrder,\n  useGetLatest,\n  useMountedLayoutEffect,\n} from '../publicUtils'\n\nconst pluginName = 'useRowSelect'\n\n// Actions\nactions.resetSelectedRows = 'resetSelectedRows'\nactions.toggleAllRowsSelected = 'toggleAllRowsSelected'\nactions.toggleRowSelected = 'toggleRowSelected'\nactions.toggleAllPageRowsSelected = 'toggleAllPageRowsSelected'\n\nexport const useRowSelect = hooks => {\n  hooks.getToggleRowSelectedProps = [defaultGetToggleRowSelectedProps]\n  hooks.getToggleAllRowsSelectedProps = [defaultGetToggleAllRowsSelectedProps]\n  hooks.getToggleAllPageRowsSelectedProps = [\n    defaultGetToggleAllPageRowsSelectedProps,\n  ]\n  hooks.stateReducers.push(reducer)\n  hooks.useInstance.push(useInstance)\n  hooks.prepareRow.push(prepareRow)\n}\n\nuseRowSelect.pluginName = pluginName\n\nconst defaultGetToggleRowSelectedProps = (props, { instance, row }) => {\n  const { manualRowSelectedKey = 'isSelected' } = instance\n  let checked = false\n\n  if (row.original && row.original[manualRowSelectedKey]) {\n    checked = true\n  } else {\n    checked = row.isSelected\n  }\n\n  return [\n    props,\n    {\n      onChange: e => {\n        row.toggleRowSelected(e.target.checked)\n      },\n      style: {\n        cursor: 'pointer',\n      },\n      checked,\n      title: 'Toggle Row Selected',\n      indeterminate: row.isSomeSelected,\n    },\n  ]\n}\n\nconst defaultGetToggleAllRowsSelectedProps = (props, { instance }) => [\n  props,\n  {\n    onChange: e => {\n      instance.toggleAllRowsSelected(e.target.checked)\n    },\n    style: {\n      cursor: 'pointer',\n    },\n    checked: instance.isAllRowsSelected,\n    title: 'Toggle All Rows Selected',\n    indeterminate: Boolean(\n      !instance.isAllRowsSelected &&\n        Object.keys(instance.state.selectedRowIds).length\n    ),\n  },\n]\n\nconst defaultGetToggleAllPageRowsSelectedProps = (props, { instance }) => [\n  props,\n  {\n    onChange(e) {\n      instance.toggleAllPageRowsSelected(e.target.checked)\n    },\n    style: {\n      cursor: 'pointer',\n    },\n    checked: instance.isAllPageRowsSelected,\n    title: 'Toggle All Current Page Rows Selected',\n    indeterminate: Boolean(\n      !instance.isAllPageRowsSelected &&\n        instance.page.some(({ id }) => instance.state.selectedRowIds[id])\n    ),\n  },\n]\n\n// eslint-disable-next-line max-params\nfunction reducer(state, action, previousState, instance) {\n  if (action.type === actions.init) {\n    return {\n      selectedRowIds: {},\n      ...state,\n    }\n  }\n\n  if (action.type === actions.resetSelectedRows) {\n    return {\n      ...state,\n      selectedRowIds: instance.initialState.selectedRowIds || {},\n    }\n  }\n\n  if (action.type === actions.toggleAllRowsSelected) {\n    const { value: setSelected } = action\n    const {\n      isAllRowsSelected,\n      rowsById,\n      nonGroupedRowsById = rowsById,\n    } = instance\n\n    const selectAll =\n      typeof setSelected !== 'undefined' ? setSelected : !isAllRowsSelected\n\n    // Only remove/add the rows that are visible on the screen\n    //  Leave all the other rows that are selected alone.\n    const selectedRowIds = Object.assign({}, state.selectedRowIds)\n\n    if (selectAll) {\n      Object.keys(nonGroupedRowsById).forEach(rowId => {\n        selectedRowIds[rowId] = true\n      })\n    } else {\n      Object.keys(nonGroupedRowsById).forEach(rowId => {\n        delete selectedRowIds[rowId]\n      })\n    }\n\n    return {\n      ...state,\n      selectedRowIds,\n    }\n  }\n\n  if (action.type === actions.toggleRowSelected) {\n    const { id, value: setSelected } = action\n    const { rowsById, selectSubRows = true, getSubRows } = instance\n    const isSelected = state.selectedRowIds[id]\n    const shouldExist =\n      typeof setSelected !== 'undefined' ? setSelected : !isSelected\n\n    if (isSelected === shouldExist) {\n      return state\n    }\n\n    const newSelectedRowIds = { ...state.selectedRowIds }\n\n    const handleRowById = id => {\n      const row = rowsById[id]\n\n      if (row) {\n        if (!row.isGrouped) {\n          if (shouldExist) {\n            newSelectedRowIds[id] = true\n          } else {\n            delete newSelectedRowIds[id]\n          }\n        }\n\n        if (selectSubRows && getSubRows(row)) {\n          return getSubRows(row).forEach(row => handleRowById(row.id))\n        }\n      }\n    }\n\n    handleRowById(id)\n\n    return {\n      ...state,\n      selectedRowIds: newSelectedRowIds,\n    }\n  }\n\n  if (action.type === actions.toggleAllPageRowsSelected) {\n    const { value: setSelected } = action\n    const {\n      page,\n      rowsById,\n      selectSubRows = true,\n      isAllPageRowsSelected,\n      getSubRows,\n    } = instance\n\n    const selectAll =\n      typeof setSelected !== 'undefined' ? setSelected : !isAllPageRowsSelected\n\n    const newSelectedRowIds = { ...state.selectedRowIds }\n\n    const handleRowById = id => {\n      const row = rowsById[id]\n\n      if (!row.isGrouped) {\n        if (selectAll) {\n          newSelectedRowIds[id] = true\n        } else {\n          delete newSelectedRowIds[id]\n        }\n      }\n\n      if (selectSubRows && getSubRows(row)) {\n        return getSubRows(row).forEach(row => handleRowById(row.id))\n      }\n    }\n\n    page.forEach(row => handleRowById(row.id))\n\n    return {\n      ...state,\n      selectedRowIds: newSelectedRowIds,\n    }\n  }\n  return state\n}\n\nfunction useInstance(instance) {\n  const {\n    data,\n    rows,\n    getHooks,\n    plugins,\n    rowsById,\n    nonGroupedRowsById = rowsById,\n    autoResetSelectedRows = true,\n    state: { selectedRowIds },\n    selectSubRows = true,\n    dispatch,\n    page,\n    getSubRows,\n  } = instance\n\n  ensurePluginOrder(\n    plugins,\n    ['useFilters', 'useGroupBy', 'useSortBy', 'useExpanded', 'usePagination'],\n    'useRowSelect'\n  )\n\n  const selectedFlatRows = React.useMemo(() => {\n    const selectedFlatRows = []\n\n    rows.forEach(row => {\n      const isSelected = selectSubRows\n        ? getRowIsSelected(row, selectedRowIds, getSubRows)\n        : !!selectedRowIds[row.id]\n      row.isSelected = !!isSelected\n      row.isSomeSelected = isSelected === null\n\n      if (isSelected) {\n        selectedFlatRows.push(row)\n      }\n    })\n\n    return selectedFlatRows\n  }, [rows, selectSubRows, selectedRowIds, getSubRows])\n\n  let isAllRowsSelected = Boolean(\n    Object.keys(nonGroupedRowsById).length && Object.keys(selectedRowIds).length\n  )\n\n  let isAllPageRowsSelected = isAllRowsSelected\n\n  if (isAllRowsSelected) {\n    if (Object.keys(nonGroupedRowsById).some(id => !selectedRowIds[id])) {\n      isAllRowsSelected = false\n    }\n  }\n\n  if (!isAllRowsSelected) {\n    if (page && page.length && page.some(({ id }) => !selectedRowIds[id])) {\n      isAllPageRowsSelected = false\n    }\n  }\n\n  const getAutoResetSelectedRows = useGetLatest(autoResetSelectedRows)\n\n  useMountedLayoutEffect(() => {\n    if (getAutoResetSelectedRows()) {\n      dispatch({ type: actions.resetSelectedRows })\n    }\n  }, [dispatch, data])\n\n  const toggleAllRowsSelected = React.useCallback(\n    value => dispatch({ type: actions.toggleAllRowsSelected, value }),\n    [dispatch]\n  )\n\n  const toggleAllPageRowsSelected = React.useCallback(\n    value => dispatch({ type: actions.toggleAllPageRowsSelected, value }),\n    [dispatch]\n  )\n\n  const toggleRowSelected = React.useCallback(\n    (id, value) => dispatch({ type: actions.toggleRowSelected, id, value }),\n    [dispatch]\n  )\n\n  const getInstance = useGetLatest(instance)\n\n  const getToggleAllRowsSelectedProps = makePropGetter(\n    getHooks().getToggleAllRowsSelectedProps,\n    { instance: getInstance() }\n  )\n\n  const getToggleAllPageRowsSelectedProps = makePropGetter(\n    getHooks().getToggleAllPageRowsSelectedProps,\n    { instance: getInstance() }\n  )\n\n  Object.assign(instance, {\n    selectedFlatRows,\n    isAllRowsSelected,\n    isAllPageRowsSelected,\n    toggleRowSelected,\n    toggleAllRowsSelected,\n    getToggleAllRowsSelectedProps,\n    getToggleAllPageRowsSelectedProps,\n    toggleAllPageRowsSelected,\n  })\n}\n\nfunction prepareRow(row, { instance }) {\n  row.toggleRowSelected = set => instance.toggleRowSelected(row.id, set)\n\n  row.getToggleRowSelectedProps = makePropGetter(\n    instance.getHooks().getToggleRowSelectedProps,\n    { instance: instance, row }\n  )\n}\n\nfunction getRowIsSelected(row, selectedRowIds, getSubRows) {\n  if (selectedRowIds[row.id]) {\n    return true\n  }\n\n  const subRows = getSubRows(row)\n\n  if (subRows && subRows.length) {\n    let allChildrenSelected = true\n    let someSelected = false\n\n    subRows.forEach(subRow => {\n      // Bail out early if we know both of these\n      if (someSelected && !allChildrenSelected) {\n        return\n      }\n\n      if (getRowIsSelected(subRow, selectedRowIds, getSubRows)) {\n        someSelected = true\n      } else {\n        allChildrenSelected = false\n      }\n    })\n    return allChildrenSelected ? true : someSelected ? null : false\n  }\n\n  return false\n}\n", "import React from 'react'\n\nimport {\n  actions,\n  functionalUpdate,\n  useMountedLayoutEffect,\n  useGetLatest,\n} from '../publicUtils'\n\nconst defaultInitialRowStateAccessor = row => ({})\nconst defaultInitialCellStateAccessor = cell => ({})\n\n// Actions\nactions.setRowState = 'setRowState'\nactions.setCellState = 'setCellState'\nactions.resetRowState = 'resetRowState'\n\nexport const useRowState = hooks => {\n  hooks.stateReducers.push(reducer)\n  hooks.useInstance.push(useInstance)\n  hooks.prepareRow.push(prepareRow)\n}\n\nuseRowState.pluginName = 'useRowState'\n\nfunction reducer(state, action, previousState, instance) {\n  const {\n    initialRowStateAccessor = defaultInitialRowStateAccessor,\n    initialCellStateAccessor = defaultInitialCellStateAccessor,\n    rowsById,\n  } = instance\n\n  if (action.type === actions.init) {\n    return {\n      rowState: {},\n      ...state,\n    }\n  }\n\n  if (action.type === actions.resetRowState) {\n    return {\n      ...state,\n      rowState: instance.initialState.rowState || {},\n    }\n  }\n\n  if (action.type === actions.setRowState) {\n    const { rowId, value } = action\n\n    const oldRowState =\n      typeof state.rowState[rowId] !== 'undefined'\n        ? state.rowState[rowId]\n        : initialRowStateAccessor(rowsById[rowId])\n\n    return {\n      ...state,\n      rowState: {\n        ...state.rowState,\n        [rowId]: functionalUpdate(value, oldRowState),\n      },\n    }\n  }\n\n  if (action.type === actions.setCellState) {\n    const { rowId, columnId, value } = action\n\n    const oldRowState =\n      typeof state.rowState[rowId] !== 'undefined'\n        ? state.rowState[rowId]\n        : initialRowStateAccessor(rowsById[rowId])\n\n    const oldCellState =\n      typeof oldRowState?.cellState?.[columnId] !== 'undefined'\n        ? oldRowState.cellState[columnId]\n        : initialCellStateAccessor(\n            rowsById[rowId]?.cells?.find(cell => cell.column.id === columnId)\n          )\n\n    return {\n      ...state,\n      rowState: {\n        ...state.rowState,\n        [rowId]: {\n          ...oldRowState,\n          cellState: {\n            ...(oldRowState.cellState || {}),\n            [columnId]: functionalUpdate(value, oldCellState),\n          },\n        },\n      },\n    }\n  }\n}\n\nfunction useInstance(instance) {\n  const { autoResetRowState = true, data, dispatch } = instance\n\n  const setRowState = React.useCallback(\n    (rowId, value) =>\n      dispatch({\n        type: actions.setRowState,\n        rowId,\n        value,\n      }),\n    [dispatch]\n  )\n\n  const setCellState = React.useCallback(\n    (rowId, columnId, value) =>\n      dispatch({\n        type: actions.setCellState,\n        rowId,\n        columnId,\n        value,\n      }),\n    [dispatch]\n  )\n\n  const getAutoResetRowState = useGetLatest(autoResetRowState)\n\n  useMountedLayoutEffect(() => {\n    if (getAutoResetRowState()) {\n      dispatch({ type: actions.resetRowState })\n    }\n  }, [data])\n\n  Object.assign(instance, {\n    setRowState,\n    setCellState,\n  })\n}\n\nfunction prepareRow(row, { instance }) {\n  const {\n    initialRowStateAccessor = defaultInitialRowStateAccessor,\n    initialCellStateAccessor = defaultInitialCellStateAccessor,\n    state: { rowState },\n  } = instance\n\n  if (row) {\n    row.state =\n      typeof rowState[row.id] !== 'undefined'\n        ? rowState[row.id]\n        : initialRowStateAccessor(row)\n\n    row.setState = updater => {\n      return instance.setRowState(row.id, updater)\n    }\n\n    row.cells.forEach(cell => {\n      if (!row.state.cellState) {\n        row.state.cellState = {}\n      }\n\n      cell.state =\n        typeof row.state.cellState[cell.column.id] !== 'undefined'\n          ? row.state.cellState[cell.column.id]\n          : initialCellStateAccessor(cell)\n\n      cell.setState = updater => {\n        return instance.setCellState(row.id, cell.column.id, updater)\n      }\n    })\n  }\n}\n", "import React from 'react'\n\nimport { functionalUpdate, actions } from '../publicUtils'\n\n// Actions\nactions.resetColumnOrder = 'resetColumnOrder'\nactions.setColumnOrder = 'setColumnOrder'\n\nexport const useColumnOrder = hooks => {\n  hooks.stateReducers.push(reducer)\n  hooks.visibleColumnsDeps.push((deps, { instance }) => {\n    return [...deps, instance.state.columnOrder]\n  })\n  hooks.visibleColumns.push(visibleColumns)\n  hooks.useInstance.push(useInstance)\n}\n\nuseColumnOrder.pluginName = 'useColumnOrder'\n\nfunction reducer(state, action, previousState, instance) {\n  if (action.type === actions.init) {\n    return {\n      columnOrder: [],\n      ...state,\n    }\n  }\n\n  if (action.type === actions.resetColumnOrder) {\n    return {\n      ...state,\n      columnOrder: instance.initialState.columnOrder || [],\n    }\n  }\n\n  if (action.type === actions.setColumnOrder) {\n    return {\n      ...state,\n      columnOrder: functionalUpdate(action.columnOrder, state.columnOrder),\n    }\n  }\n}\n\nfunction visibleColumns(\n  columns,\n  {\n    instance: {\n      state: { columnOrder },\n    },\n  }\n) {\n  // If there is no order, return the normal columns\n  if (!columnOrder || !columnOrder.length) {\n    return columns\n  }\n\n  const columnOrderCopy = [...columnOrder]\n\n  // If there is an order, make a copy of the columns\n  const columnsCopy = [...columns]\n\n  // And make a new ordered array of the columns\n  const columnsInOrder = []\n\n  // Loop over the columns and place them in order into the new array\n  while (columnsCopy.length && columnOrderCopy.length) {\n    const targetColumnId = columnOrderCopy.shift()\n    const foundIndex = columnsCopy.findIndex(d => d.id === targetColumnId)\n    if (foundIndex > -1) {\n      columnsInOrder.push(columnsCopy.splice(foundIndex, 1)[0])\n    }\n  }\n\n  // If there are any columns left, add them to the end\n  return [...columnsInOrder, ...columnsCopy]\n}\n\nfunction useInstance(instance) {\n  const { dispatch } = instance\n\n  instance.setColumnOrder = React.useCallback(\n    columnOrder => {\n      return dispatch({ type: actions.setColumnOrder, columnOrder })\n    },\n    [dispatch]\n  )\n}\n", "import React from 'react'\n\nimport {\n  actions,\n  defaultColumn,\n  makePropGetter,\n  useGetLatest,\n  ensurePluginOrder,\n  useMountedLayoutEffect,\n} from '../publicUtils'\n\nimport { getFirstDefined, passiveEventSupported } from '../utils'\n\n// Default Column\ndefaultColumn.canResize = true\n\n// Actions\nactions.columnStartResizing = 'columnStartResizing'\nactions.columnResizing = 'columnResizing'\nactions.columnDoneResizing = 'columnDoneResizing'\nactions.resetResize = 'resetResize'\n\nexport const useResizeColumns = hooks => {\n  hooks.getResizerProps = [defaultGetResizerProps]\n  hooks.getHeaderProps.push({\n    style: {\n      position: 'relative',\n    },\n  })\n  hooks.stateReducers.push(reducer)\n  hooks.useInstance.push(useInstance)\n  hooks.useInstanceBeforeDimensions.push(useInstanceBeforeDimensions)\n}\n\nconst defaultGetResizerProps = (props, { instance, header }) => {\n  const { dispatch } = instance\n\n  const onResizeStart = (e, header) => {\n    let isTouchEvent = false\n    if (e.type === 'touchstart') {\n      // lets not respond to multiple touches (e.g. 2 or 3 fingers)\n      if (e.touches && e.touches.length > 1) {\n        return\n      }\n      isTouchEvent = true\n    }\n    const headersToResize = getLeafHeaders(header)\n    const headerIdWidths = headersToResize.map(d => [d.id, d.totalWidth])\n\n    const clientX = isTouchEvent ? Math.round(e.touches[0].clientX) : e.clientX\n\n    let raf\n    let mostRecentClientX\n\n    const dispatchEnd = () => {\n      window.cancelAnimationFrame(raf)\n      raf = null\n      dispatch({ type: actions.columnDoneResizing })\n    }\n    const dispatchMove = () => {\n      window.cancelAnimationFrame(raf)\n      raf = null\n      dispatch({ type: actions.columnResizing, clientX: mostRecentClientX })\n    }\n\n    const scheduleDispatchMoveOnNextAnimationFrame = clientXPos => {\n      mostRecentClientX = clientXPos\n      if (!raf) {\n        raf = window.requestAnimationFrame(dispatchMove)\n      }\n    }\n\n    const handlersAndEvents = {\n      mouse: {\n        moveEvent: 'mousemove',\n        moveHandler: e => scheduleDispatchMoveOnNextAnimationFrame(e.clientX),\n        upEvent: 'mouseup',\n        upHandler: e => {\n          document.removeEventListener(\n            'mousemove',\n            handlersAndEvents.mouse.moveHandler\n          )\n          document.removeEventListener(\n            'mouseup',\n            handlersAndEvents.mouse.upHandler\n          )\n          dispatchEnd()\n        },\n      },\n      touch: {\n        moveEvent: 'touchmove',\n        moveHandler: e => {\n          if (e.cancelable) {\n            e.preventDefault()\n            e.stopPropagation()\n          }\n          scheduleDispatchMoveOnNextAnimationFrame(e.touches[0].clientX)\n          return false\n        },\n        upEvent: 'touchend',\n        upHandler: e => {\n          document.removeEventListener(\n            handlersAndEvents.touch.moveEvent,\n            handlersAndEvents.touch.moveHandler\n          )\n          document.removeEventListener(\n            handlersAndEvents.touch.upEvent,\n            handlersAndEvents.touch.moveHandler\n          )\n          dispatchEnd()\n        },\n      },\n    }\n\n    const events = isTouchEvent\n      ? handlersAndEvents.touch\n      : handlersAndEvents.mouse\n    const passiveIfSupported = passiveEventSupported()\n      ? { passive: false }\n      : false\n    document.addEventListener(\n      events.moveEvent,\n      events.moveHandler,\n      passiveIfSupported\n    )\n    document.addEventListener(\n      events.upEvent,\n      events.upHandler,\n      passiveIfSupported\n    )\n\n    dispatch({\n      type: actions.columnStartResizing,\n      columnId: header.id,\n      columnWidth: header.totalWidth,\n      headerIdWidths,\n      clientX,\n    })\n  }\n\n  return [\n    props,\n    {\n      onMouseDown: e => e.persist() || onResizeStart(e, header),\n      onTouchStart: e => e.persist() || onResizeStart(e, header),\n      style: {\n        cursor: 'col-resize',\n      },\n      draggable: false,\n      role: 'separator',\n    },\n  ]\n}\n\nuseResizeColumns.pluginName = 'useResizeColumns'\n\nfunction reducer(state, action) {\n  if (action.type === actions.init) {\n    return {\n      columnResizing: {\n        columnWidths: {},\n      },\n      ...state,\n    }\n  }\n\n  if (action.type === actions.resetResize) {\n    return {\n      ...state,\n      columnResizing: {\n        columnWidths: {},\n      },\n    }\n  }\n\n  if (action.type === actions.columnStartResizing) {\n    const { clientX, columnId, columnWidth, headerIdWidths } = action\n\n    return {\n      ...state,\n      columnResizing: {\n        ...state.columnResizing,\n        startX: clientX,\n        headerIdWidths,\n        columnWidth,\n        isResizingColumn: columnId,\n      },\n    }\n  }\n\n  if (action.type === actions.columnResizing) {\n    const { clientX } = action\n    const { startX, columnWidth, headerIdWidths = [] } = state.columnResizing\n\n    const deltaX = clientX - startX\n    const percentageDeltaX = deltaX / columnWidth\n\n    const newColumnWidths = {}\n\n    headerIdWidths.forEach(([headerId, headerWidth]) => {\n      newColumnWidths[headerId] = Math.max(\n        headerWidth + headerWidth * percentageDeltaX,\n        0\n      )\n    })\n\n    return {\n      ...state,\n      columnResizing: {\n        ...state.columnResizing,\n        columnWidths: {\n          ...state.columnResizing.columnWidths,\n          ...newColumnWidths,\n        },\n      },\n    }\n  }\n\n  if (action.type === actions.columnDoneResizing) {\n    return {\n      ...state,\n      columnResizing: {\n        ...state.columnResizing,\n        startX: null,\n        isResizingColumn: null,\n      },\n    }\n  }\n}\n\nconst useInstanceBeforeDimensions = instance => {\n  const {\n    flatHeaders,\n    disableResizing,\n    getHooks,\n    state: { columnResizing },\n  } = instance\n\n  const getInstance = useGetLatest(instance)\n\n  flatHeaders.forEach(header => {\n    const canResize = getFirstDefined(\n      header.disableResizing === true ? false : undefined,\n      disableResizing === true ? false : undefined,\n      true\n    )\n\n    header.canResize = canResize\n    header.width =\n      columnResizing.columnWidths[header.id] ||\n      header.originalWidth ||\n      header.width\n    header.isResizing = columnResizing.isResizingColumn === header.id\n\n    if (canResize) {\n      header.getResizerProps = makePropGetter(getHooks().getResizerProps, {\n        instance: getInstance(),\n        header,\n      })\n    }\n  })\n}\n\nfunction useInstance(instance) {\n  const { plugins, dispatch, autoResetResize = true, columns } = instance\n\n  ensurePluginOrder(plugins, ['useAbsoluteLayout'], 'useResizeColumns')\n\n  const getAutoResetResize = useGetLatest(autoResetResize)\n  useMountedLayoutEffect(() => {\n    if (getAutoResetResize()) {\n      dispatch({ type: actions.resetResize })\n    }\n  }, [columns])\n\n  const resetResizing = React.useCallback(\n    () => dispatch({ type: actions.resetResize }),\n    [dispatch]\n  )\n\n  Object.assign(instance, {\n    resetResizing,\n  })\n}\n\nfunction getLeafHeaders(header) {\n  const leafHeaders = []\n  const recurseHeader = header => {\n    if (header.columns && header.columns.length) {\n      header.columns.map(recurseHeader)\n    }\n    leafHeaders.push(header)\n  }\n  recurseHeader(header)\n  return leafHeaders\n}\n", "const cellStyles = {\n  position: 'absolute',\n  top: 0,\n}\n\nexport const useAbsoluteLayout = hooks => {\n  hooks.getTableBodyProps.push(getRowStyles)\n  hooks.getRowProps.push(getRowStyles)\n  hooks.getHeaderGroupProps.push(getRowStyles)\n  hooks.getFooterGroupProps.push(getRowStyles)\n\n  hooks.getHeaderProps.push((props, { column }) => [\n    props,\n    {\n      style: {\n        ...cellStyles,\n        left: `${column.totalLeft}px`,\n        width: `${column.totalWidth}px`,\n      },\n    },\n  ])\n\n  hooks.getCellProps.push((props, { cell }) => [\n    props,\n    {\n      style: {\n        ...cellStyles,\n        left: `${cell.column.totalLeft}px`,\n        width: `${cell.column.totalWidth}px`,\n      },\n    },\n  ])\n\n  hooks.getFooterProps.push((props, { column }) => [\n    props,\n    {\n      style: {\n        ...cellStyles,\n        left: `${column.totalLeft}px`,\n        width: `${column.totalWidth}px`,\n      },\n    },\n  ])\n}\n\nuseAbsoluteLayout.pluginName = 'useAbsoluteLayout'\n\nconst getRowStyles = (props, { instance }) => [\n  props,\n  {\n    style: {\n      position: 'relative',\n      width: `${instance.totalColumnsWidth}px`,\n    },\n  },\n]\n", "const cellStyles = {\n  display: 'inline-block',\n  boxSizing: 'border-box',\n}\n\nconst getRowStyles = (props, { instance }) => [\n  props,\n  {\n    style: {\n      display: 'flex',\n      width: `${instance.totalColumnsWidth}px`,\n    },\n  },\n]\n\nexport const useBlockLayout = hooks => {\n  hooks.getRowProps.push(getRowStyles)\n  hooks.getHeaderGroupProps.push(getRowStyles)\n  hooks.getFooterGroupProps.push(getRowStyles)\n\n  hooks.getHeaderProps.push((props, { column }) => [\n    props,\n    {\n      style: {\n        ...cellStyles,\n        width: `${column.totalWidth}px`,\n      },\n    },\n  ])\n\n  hooks.getCellProps.push((props, { cell }) => [\n    props,\n    {\n      style: {\n        ...cellStyles,\n        width: `${cell.column.totalWidth}px`,\n      },\n    },\n  ])\n\n  hooks.getFooterProps.push((props, { column }) => [\n    props,\n    {\n      style: {\n        ...cellStyles,\n        width: `${column.totalWidth}px`,\n      },\n    },\n  ])\n}\n\nuseBlockLayout.pluginName = 'useBlockLayout'\n", "export function useFlexLayout(hooks) {\n  hooks.getTableProps.push(getTableProps)\n  hooks.getRowProps.push(getRowStyles)\n  hooks.getHeaderGroupProps.push(getRowStyles)\n  hooks.getFooterGroupProps.push(getRowStyles)\n  hooks.getHeaderProps.push(getHeaderProps)\n  hooks.getCellProps.push(getCellProps)\n  hooks.getFooterProps.push(getFooterProps)\n}\n\nuseFlexLayout.pluginName = 'useFlexLayout'\n\nconst getTableProps = (props, { instance }) => [\n  props,\n  {\n    style: {\n      minWidth: `${instance.totalColumnsMinWidth}px`,\n    },\n  },\n]\n\nconst getRowStyles = (props, { instance }) => [\n  props,\n  {\n    style: {\n      display: 'flex',\n      flex: '1 0 auto',\n      minWidth: `${instance.totalColumnsMinWidth}px`,\n    },\n  },\n]\n\nconst getHeaderProps = (props, { column }) => [\n  props,\n  {\n    style: {\n      boxSizing: 'border-box',\n      flex: column.totalFlexWidth\n        ? `${column.totalFlexWidth} 0 auto`\n        : undefined,\n      minWidth: `${column.totalMinWidth}px`,\n      width: `${column.totalWidth}px`,\n    },\n  },\n]\n\nconst getCellProps = (props, { cell }) => [\n  props,\n  {\n    style: {\n      boxSizing: 'border-box',\n      flex: `${cell.column.totalFlexWidth} 0 auto`,\n      minWidth: `${cell.column.totalMinWidth}px`,\n      width: `${cell.column.totalWidth}px`,\n    },\n  },\n]\n\nconst getFooterProps = (props, { column }) => [\n  props,\n  {\n    style: {\n      boxSizing: 'border-box',\n      flex: column.totalFlexWidth\n        ? `${column.totalFlexWidth} 0 auto`\n        : undefined,\n      minWidth: `${column.totalMinWidth}px`,\n      width: `${column.totalWidth}px`,\n    },\n  },\n]\n", "import { actions } from '../publicUtils'\n\n// Actions\nactions.columnStartResizing = 'columnStartResizing'\nactions.columnResizing = 'columnResizing'\nactions.columnDoneResizing = 'columnDoneResizing'\nactions.resetResize = 'resetResize'\n\nexport function useGridLayout(hooks) {\n  hooks.stateReducers.push(reducer)\n  hooks.getTableProps.push(getTableProps)\n  hooks.getHeaderProps.push(getHeaderProps)\n  hooks.getRowProps.push(getRowProps)\n}\n\nuseGridLayout.pluginName = 'useGridLayout'\n\nconst getTableProps = (props, { instance }) => {\n  const gridTemplateColumns = instance.visibleColumns.map(column => {\n    if (instance.state.gridLayout.columnWidths[column.id])\n      return `${instance.state.gridLayout.columnWidths[column.id]}px`\n    // When resizing, lock the width of all unset columns\n    // instead of using user-provided width or defaultColumn width,\n    // which could potentially be 'auto' or 'fr' units that don't scale linearly\n    if (instance.state.columnResizing?.isResizingColumn)\n      return `${instance.state.gridLayout.startWidths[column.id]}px`\n    if (typeof column.width === 'number') return `${column.width}px`\n    return column.width\n  })\n  return [\n    props,\n    {\n      style: {\n        display: `grid`,\n        gridTemplateColumns: gridTemplateColumns.join(` `),\n      },\n    },\n  ]\n}\n\nconst getHeaderProps = (props, { column }) => [\n  props,\n  {\n    id: `header-cell-${column.id}`,\n    style: {\n      position: `sticky`, //enables a scroll wrapper to be placed around the table and have sticky headers\n      gridColumn: `span ${column.totalVisibleHeaderCount}`,\n    },\n  },\n]\n\nconst getRowProps = (props, { row }) => {\n  if (row.isExpanded) {\n    return [\n      props,\n      {\n        style: {\n          gridColumn: `1 / ${row.cells.length + 1}`,\n        },\n      },\n    ]\n  }\n  return [props, {}]\n}\n\nfunction reducer(state, action, previousState, instance) {\n  if (action.type === actions.init) {\n    return {\n      gridLayout: {\n        columnWidths: {},\n      },\n      ...state,\n    }\n  }\n\n  if (action.type === actions.resetResize) {\n    return {\n      ...state,\n      gridLayout: {\n        columnWidths: {},\n      },\n    }\n  }\n\n  if (action.type === actions.columnStartResizing) {\n    const { columnId, headerIdWidths } = action\n    const columnWidth = getElementWidth(columnId)\n\n    if (columnWidth !== undefined) {\n      const startWidths = instance.visibleColumns.reduce(\n        (acc, column) => ({\n          ...acc,\n          [column.id]: getElementWidth(column.id),\n        }),\n        {}\n      )\n      const minWidths = instance.visibleColumns.reduce(\n        (acc, column) => ({\n          ...acc,\n          [column.id]: column.minWidth,\n        }),\n        {}\n      )\n      const maxWidths = instance.visibleColumns.reduce(\n        (acc, column) => ({\n          ...acc,\n          [column.id]: column.maxWidth,\n        }),\n        {}\n      )\n\n      const headerIdGridWidths = headerIdWidths.map(([headerId]) => [\n        headerId,\n        getElementWidth(headerId),\n      ])\n\n      return {\n        ...state,\n        gridLayout: {\n          ...state.gridLayout,\n          startWidths,\n          minWidths,\n          maxWidths,\n          headerIdGridWidths,\n          columnWidth,\n        },\n      }\n    } else {\n      return state\n    }\n  }\n\n  if (action.type === actions.columnResizing) {\n    const { clientX } = action\n    const { startX } = state.columnResizing\n    const {\n      columnWidth,\n      minWidths,\n      maxWidths,\n      headerIdGridWidths = [],\n    } = state.gridLayout\n\n    const deltaX = clientX - startX\n    const percentageDeltaX = deltaX / columnWidth\n\n    const newColumnWidths = {}\n\n    headerIdGridWidths.forEach(([headerId, headerWidth]) => {\n      newColumnWidths[headerId] = Math.min(\n        Math.max(\n          minWidths[headerId],\n          headerWidth + headerWidth * percentageDeltaX\n        ),\n        maxWidths[headerId]\n      )\n    })\n\n    return {\n      ...state,\n      gridLayout: {\n        ...state.gridLayout,\n        columnWidths: {\n          ...state.gridLayout.columnWidths,\n          ...newColumnWidths,\n        },\n      },\n    }\n  }\n\n  if (action.type === actions.columnDoneResizing) {\n    return {\n      ...state,\n      gridLayout: {\n        ...state.gridLayout,\n        startWidths: {},\n        minWidths: {},\n        maxWidths: {},\n      },\n    }\n  }\n}\n\nfunction getElementWidth(columnId) {\n  const width = document.getElementById(`header-cell-${columnId}`)?.offsetWidth\n\n  if (width !== undefined) {\n    return width\n  }\n}\n", "if (process.env.NODE_ENV === 'production') {\n  module.exports = require('./dist/react-table.production.min.js')\n} else {\n  module.exports = require('./dist/react-table.development.js')\n}\n", "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n  return _react2.default.createElement(\n    'svg',\n    { width: '14', height: '11', viewBox: '0 0 14 11' },\n    _react2.default.createElement('path', { d: 'M11.264 0L5.26 6.004 2.103 2.847 0 4.95l5.26 5.26 8.108-8.107L11.264 0', fill: '#fff', fillRule: 'evenodd' })\n  );\n};", "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n  return _react2.default.createElement(\n    'svg',\n    { width: '10', height: '10', viewBox: '0 0 10 10' },\n    _react2.default.createElement('path', { d: 'M9.9 2.12L7.78 0 4.95 2.828 2.12 0 0 2.12l2.83 2.83L0 7.776 2.123 9.9 4.95 7.07 7.78 9.9 9.9 7.776 7.072 4.95 9.9 2.12', fill: '#fff', fillRule: 'evenodd' })\n  );\n};", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.pointerCoord = pointerCoord;\n// Copyright 2015-present Drifty Co.\n// http://drifty.com/\n// from: https://github.com/driftyco/ionic/blob/master/src/util/dom.ts\n\nfunction pointerCoord(event) {\n  // get coordinates for either a mouse click\n  // or a touch depending on the given event\n  if (event) {\n    var changedTouches = event.changedTouches;\n    if (changedTouches && changedTouches.length > 0) {\n      var touch = changedTouches[0];\n      return { x: touch.clientX, y: touch.clientY };\n    }\n    var pageX = event.pageX;\n    if (pageX !== undefined) {\n      return { x: pageX, y: event.pageY };\n    }\n  }\n  return { x: 0, y: 0 };\n}", "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _check = require('./check');\n\nvar _check2 = _interopRequireDefault(_check);\n\nvar _x = require('./x');\n\nvar _x2 = _interopRequireDefault(_x);\n\nvar _util = require('./util');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Toggle = function (_PureComponent) {\n  _inherits(Toggle, _PureComponent);\n\n  function Toggle(props) {\n    _classCallCheck(this, Toggle);\n\n    var _this = _possibleConstructorReturn(this, (Toggle.__proto__ || Object.getPrototypeOf(Toggle)).call(this, props));\n\n    _this.handleClick = _this.handleClick.bind(_this);\n    _this.handleTouchStart = _this.handleTouchStart.bind(_this);\n    _this.handleTouchMove = _this.handleTouchMove.bind(_this);\n    _this.handleTouchEnd = _this.handleTouchEnd.bind(_this);\n    _this.handleFocus = _this.handleFocus.bind(_this);\n    _this.handleBlur = _this.handleBlur.bind(_this);\n    _this.previouslyChecked = !!(props.checked || props.defaultChecked);\n    _this.state = {\n      checked: !!(props.checked || props.defaultChecked),\n      hasFocus: false\n    };\n    return _this;\n  }\n\n  _createClass(Toggle, [{\n    key: 'componentDidUpdate',\n    value: function componentDidUpdate(prevProps) {\n      if (prevProps.checked !== this.props.checked) {\n        // Disable linting rule here since this usage of setState inside\n        // componentDidUpdate is OK; see\n        // https://reactjs.org/docs/react-component.html#componentdidupdate\n        // eslint-disable-next-line react/no-did-update-set-state\n        this.setState({ checked: !!this.props.checked });\n      }\n    }\n  }, {\n    key: 'handleClick',\n    value: function handleClick(event) {\n      if (this.props.disabled) {\n        return;\n      }\n      var checkbox = this.input;\n      if (event.target !== checkbox && !this.moved) {\n        this.previouslyChecked = checkbox.checked;\n        event.preventDefault();\n        checkbox.focus();\n        checkbox.click();\n        return;\n      }\n\n      var checked = this.props.hasOwnProperty('checked') ? this.props.checked : checkbox.checked;\n\n      this.setState({ checked: checked });\n    }\n  }, {\n    key: 'handleTouchStart',\n    value: function handleTouchStart(event) {\n      if (this.props.disabled) {\n        return;\n      }\n      this.startX = (0, _util.pointerCoord)(event).x;\n      this.activated = true;\n    }\n  }, {\n    key: 'handleTouchMove',\n    value: function handleTouchMove(event) {\n      if (!this.activated) return;\n      this.moved = true;\n\n      if (this.startX) {\n        var currentX = (0, _util.pointerCoord)(event).x;\n        if (this.state.checked && currentX + 15 < this.startX) {\n          this.setState({ checked: false });\n          this.startX = currentX;\n          this.activated = true;\n        } else if (currentX - 15 > this.startX) {\n          this.setState({ checked: true });\n          this.startX = currentX;\n          this.activated = currentX < this.startX + 5;\n        }\n      }\n    }\n  }, {\n    key: 'handleTouchEnd',\n    value: function handleTouchEnd(event) {\n      if (!this.moved) return;\n      var checkbox = this.input;\n      event.preventDefault();\n\n      if (this.startX) {\n        var endX = (0, _util.pointerCoord)(event).x;\n        if (this.previouslyChecked === true && this.startX + 4 > endX) {\n          if (this.previouslyChecked !== this.state.checked) {\n            this.setState({ checked: false });\n            this.previouslyChecked = this.state.checked;\n            checkbox.click();\n          }\n        } else if (this.startX - 4 < endX) {\n          if (this.previouslyChecked !== this.state.checked) {\n            this.setState({ checked: true });\n            this.previouslyChecked = this.state.checked;\n            checkbox.click();\n          }\n        }\n\n        this.activated = false;\n        this.startX = null;\n        this.moved = false;\n      }\n    }\n  }, {\n    key: 'handleFocus',\n    value: function handleFocus(event) {\n      var onFocus = this.props.onFocus;\n\n\n      if (onFocus) {\n        onFocus(event);\n      }\n\n      this.setState({ hasFocus: true });\n    }\n  }, {\n    key: 'handleBlur',\n    value: function handleBlur(event) {\n      var onBlur = this.props.onBlur;\n\n\n      if (onBlur) {\n        onBlur(event);\n      }\n\n      this.setState({ hasFocus: false });\n    }\n  }, {\n    key: 'getIcon',\n    value: function getIcon(type) {\n      var icons = this.props.icons;\n\n      if (!icons) {\n        return null;\n      }\n      return icons[type] === undefined ? Toggle.defaultProps.icons[type] : icons[type];\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      var _this2 = this;\n\n      var _props = this.props,\n          className = _props.className,\n          _icons = _props.icons,\n          inputProps = _objectWithoutProperties(_props, ['className', 'icons']);\n\n      var classes = (0, _classnames2.default)('react-toggle', {\n        'react-toggle--checked': this.state.checked,\n        'react-toggle--focus': this.state.hasFocus,\n        'react-toggle--disabled': this.props.disabled\n      }, className);\n\n      return _react2.default.createElement(\n        'div',\n        { className: classes,\n          onClick: this.handleClick,\n          onTouchStart: this.handleTouchStart,\n          onTouchMove: this.handleTouchMove,\n          onTouchEnd: this.handleTouchEnd },\n        _react2.default.createElement(\n          'div',\n          { className: 'react-toggle-track' },\n          _react2.default.createElement(\n            'div',\n            { className: 'react-toggle-track-check' },\n            this.getIcon('checked')\n          ),\n          _react2.default.createElement(\n            'div',\n            { className: 'react-toggle-track-x' },\n            this.getIcon('unchecked')\n          )\n        ),\n        _react2.default.createElement('div', { className: 'react-toggle-thumb' }),\n        _react2.default.createElement('input', _extends({}, inputProps, {\n          ref: function ref(_ref) {\n            _this2.input = _ref;\n          },\n          onFocus: this.handleFocus,\n          onBlur: this.handleBlur,\n          className: 'react-toggle-screenreader-only',\n          type: 'checkbox' }))\n      );\n    }\n  }]);\n\n  return Toggle;\n}(_react.PureComponent);\n\nexports.default = Toggle;\n\n\nToggle.displayName = 'Toggle';\n\nToggle.defaultProps = {\n  icons: {\n    checked: _react2.default.createElement(_check2.default, null),\n    unchecked: _react2.default.createElement(_x2.default, null)\n  }\n};\n\nToggle.propTypes = {\n  checked: _propTypes2.default.bool,\n  disabled: _propTypes2.default.bool,\n  defaultChecked: _propTypes2.default.bool,\n  onChange: _propTypes2.default.func,\n  onFocus: _propTypes2.default.func,\n  onBlur: _propTypes2.default.func,\n  className: _propTypes2.default.string,\n  name: _propTypes2.default.string,\n  value: _propTypes2.default.string,\n  id: _propTypes2.default.string,\n  'aria-labelledby': _propTypes2.default.string,\n  'aria-label': _propTypes2.default.string,\n  icons: _propTypes2.default.oneOfType([_propTypes2.default.bool, _propTypes2.default.shape({\n    checked: _propTypes2.default.node,\n    unchecked: _propTypes2.default.node\n  })])\n};", "function _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    \"default\": obj\n  };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "function _typeof(obj) {\n  \"@babel/helpers - typeof\";\n\n  return (module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n    return typeof obj;\n  } : function (obj) {\n    return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n  }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(obj);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = requiredArgs;\nfunction requiredArgs(required, args) {\n  if (args.length < required) {\n    throw new TypeError(required + ' argument' + (required > 1 ? 's' : '') + ' required, but only ' + args.length + ' present');\n  }\n}\nmodule.exports = exports.default;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = isDate;\nvar _typeof2 = _interopRequireDefault(require(\"@babel/runtime/helpers/typeof\"));\nvar _index = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\n/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * @param {*} value - the value to check\n * @returns {boolean} true if the given value is a date\n * @throws {TypeError} 1 arguments required\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\nfunction isDate(value) {\n  (0, _index.default)(1, arguments);\n  return value instanceof Date || (0, _typeof2.default)(value) === 'object' && Object.prototype.toString.call(value) === '[object Date]';\n}\nmodule.exports = exports.default;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = toDate;\nvar _typeof2 = _interopRequireDefault(require(\"@babel/runtime/helpers/typeof\"));\nvar _index = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @param {Date|Number} argument - the value to convert\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nfunction toDate(argument) {\n  (0, _index.default)(1, arguments);\n  var argStr = Object.prototype.toString.call(argument);\n\n  // Clone the date\n  if (argument instanceof Date || (0, _typeof2.default)(argument) === 'object' && argStr === '[object Date]') {\n    // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n    return new Date(argument.getTime());\n  } else if (typeof argument === 'number' || argStr === '[object Number]') {\n    return new Date(argument);\n  } else {\n    if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') {\n      // eslint-disable-next-line no-console\n      console.warn(\"Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#string-arguments\");\n      // eslint-disable-next-line no-console\n      console.warn(new Error().stack);\n    }\n    return new Date(NaN);\n  }\n}\nmodule.exports = exports.default;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = isValid;\nvar _index = _interopRequireDefault(require(\"../isDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../toDate/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param {*} date - the date to check\n * @returns {Boolean} the date is valid\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\nfunction isValid(dirtyDate) {\n  (0, _index3.default)(1, arguments);\n  if (!(0, _index.default)(dirtyDate) && typeof dirtyDate !== 'number') {\n    return false;\n  }\n  var date = (0, _index2.default)(dirtyDate);\n  return !isNaN(Number(date));\n}\nmodule.exports = exports.default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = toInteger;\nfunction toInteger(dirtyNumber) {\n  if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n    return NaN;\n  }\n  var number = Number(dirtyNumber);\n  if (isNaN(number)) {\n    return number;\n  }\n  return number < 0 ? Math.ceil(number) : Math.floor(number);\n}\nmodule.exports = exports.default;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = addMilliseconds;\nvar _index = _interopRequireDefault(require(\"../_lib/toInteger/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../toDate/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * const result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\nfunction addMilliseconds(dirtyDate, dirtyAmount) {\n  (0, _index3.default)(2, arguments);\n  var timestamp = (0, _index2.default)(dirtyDate).getTime();\n  var amount = (0, _index.default)(dirtyAmount);\n  return new Date(timestamp + amount);\n}\nmodule.exports = exports.default;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = subMilliseconds;\nvar _index = _interopRequireDefault(require(\"../addMilliseconds/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../_lib/toInteger/index.js\"));\n/**\n * @name subMilliseconds\n * @category Millisecond Helpers\n * @summary Subtract the specified number of milliseconds from the given date.\n *\n * @description\n * Subtract the specified number of milliseconds from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000:\n * const result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:29.250\n */\nfunction subMilliseconds(dirtyDate, dirtyAmount) {\n  (0, _index2.default)(2, arguments);\n  var amount = (0, _index3.default)(dirtyAmount);\n  return (0, _index.default)(dirtyDate, -amount);\n}\nmodule.exports = exports.default;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = getUTCDayOfYear;\nvar _index = _interopRequireDefault(require(\"../../toDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../requiredArgs/index.js\"));\nvar MILLISECONDS_IN_DAY = 86400000;\nfunction getUTCDayOfYear(dirtyDate) {\n  (0, _index2.default)(1, arguments);\n  var date = (0, _index.default)(dirtyDate);\n  var timestamp = date.getTime();\n  date.setUTCMonth(0, 1);\n  date.setUTCHours(0, 0, 0, 0);\n  var startOfYearTimestamp = date.getTime();\n  var difference = timestamp - startOfYearTimestamp;\n  return Math.floor(difference / MILLISECONDS_IN_DAY) + 1;\n}\nmodule.exports = exports.default;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = startOfUTCISOWeek;\nvar _index = _interopRequireDefault(require(\"../../toDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../requiredArgs/index.js\"));\nfunction startOfUTCISOWeek(dirtyDate) {\n  (0, _index2.default)(1, arguments);\n  var weekStartsOn = 1;\n  var date = (0, _index.default)(dirtyDate);\n  var day = date.getUTCDay();\n  var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n  date.setUTCDate(date.getUTCDate() - diff);\n  date.setUTCHours(0, 0, 0, 0);\n  return date;\n}\nmodule.exports = exports.default;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = getUTCISOWeekYear;\nvar _index = _interopRequireDefault(require(\"../../toDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../requiredArgs/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../startOfUTCISOWeek/index.js\"));\nfunction getUTCISOWeekYear(dirtyDate) {\n  (0, _index2.default)(1, arguments);\n  var date = (0, _index.default)(dirtyDate);\n  var year = date.getUTCFullYear();\n  var fourthOfJanuaryOfNextYear = new Date(0);\n  fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4);\n  fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0);\n  var startOfNextYear = (0, _index3.default)(fourthOfJanuaryOfNextYear);\n  var fourthOfJanuaryOfThisYear = new Date(0);\n  fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4);\n  fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0);\n  var startOfThisYear = (0, _index3.default)(fourthOfJanuaryOfThisYear);\n  if (date.getTime() >= startOfNextYear.getTime()) {\n    return year + 1;\n  } else if (date.getTime() >= startOfThisYear.getTime()) {\n    return year;\n  } else {\n    return year - 1;\n  }\n}\nmodule.exports = exports.default;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = startOfUTCISOWeekYear;\nvar _index = _interopRequireDefault(require(\"../getUTCISOWeekYear/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../startOfUTCISOWeek/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../requiredArgs/index.js\"));\nfunction startOfUTCISOWeekYear(dirtyDate) {\n  (0, _index3.default)(1, arguments);\n  var year = (0, _index.default)(dirtyDate);\n  var fourthOfJanuary = new Date(0);\n  fourthOfJanuary.setUTCFullYear(year, 0, 4);\n  fourthOfJanuary.setUTCHours(0, 0, 0, 0);\n  var date = (0, _index2.default)(fourthOfJanuary);\n  return date;\n}\nmodule.exports = exports.default;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = getUTCISOWeek;\nvar _index = _interopRequireDefault(require(\"../../toDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../startOfUTCISOWeek/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../startOfUTCISOWeekYear/index.js\"));\nvar _index4 = _interopRequireDefault(require(\"../requiredArgs/index.js\"));\nvar MILLISECONDS_IN_WEEK = 604800000;\nfunction getUTCISOWeek(dirtyDate) {\n  (0, _index4.default)(1, arguments);\n  var date = (0, _index.default)(dirtyDate);\n  var diff = (0, _index2.default)(date).getTime() - (0, _index3.default)(date).getTime();\n\n  // Round the number of days to the nearest integer\n  // because the number of milliseconds in a week is not constant\n  // (e.g. it's different in the week of the daylight saving time clock shift)\n  return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}\nmodule.exports = exports.default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.getDefaultOptions = getDefaultOptions;\nexports.setDefaultOptions = setDefaultOptions;\nvar defaultOptions = {};\nfunction getDefaultOptions() {\n  return defaultOptions;\n}\nfunction setDefaultOptions(newOptions) {\n  defaultOptions = newOptions;\n}", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = startOfUTCWeek;\nvar _index = _interopRequireDefault(require(\"../../toDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../requiredArgs/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../toInteger/index.js\"));\nvar _index4 = require(\"../defaultOptions/index.js\");\nfunction startOfUTCWeek(dirtyDate, options) {\n  var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n  (0, _index2.default)(1, arguments);\n  var defaultOptions = (0, _index4.getDefaultOptions)();\n  var weekStartsOn = (0, _index3.default)((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n  // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n  if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n    throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n  }\n  var date = (0, _index.default)(dirtyDate);\n  var day = date.getUTCDay();\n  var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n  date.setUTCDate(date.getUTCDate() - diff);\n  date.setUTCHours(0, 0, 0, 0);\n  return date;\n}\nmodule.exports = exports.default;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = getUTCWeekYear;\nvar _index = _interopRequireDefault(require(\"../../toDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../requiredArgs/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../startOfUTCWeek/index.js\"));\nvar _index4 = _interopRequireDefault(require(\"../toInteger/index.js\"));\nvar _index5 = require(\"../defaultOptions/index.js\");\nfunction getUTCWeekYear(dirtyDate, options) {\n  var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n  (0, _index2.default)(1, arguments);\n  var date = (0, _index.default)(dirtyDate);\n  var year = date.getUTCFullYear();\n  var defaultOptions = (0, _index5.getDefaultOptions)();\n  var firstWeekContainsDate = (0, _index4.default)((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n\n  // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n  if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n    throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n  }\n  var firstWeekOfNextYear = new Date(0);\n  firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate);\n  firstWeekOfNextYear.setUTCHours(0, 0, 0, 0);\n  var startOfNextYear = (0, _index3.default)(firstWeekOfNextYear, options);\n  var firstWeekOfThisYear = new Date(0);\n  firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate);\n  firstWeekOfThisYear.setUTCHours(0, 0, 0, 0);\n  var startOfThisYear = (0, _index3.default)(firstWeekOfThisYear, options);\n  if (date.getTime() >= startOfNextYear.getTime()) {\n    return year + 1;\n  } else if (date.getTime() >= startOfThisYear.getTime()) {\n    return year;\n  } else {\n    return year - 1;\n  }\n}\nmodule.exports = exports.default;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = startOfUTCWeekYear;\nvar _index = _interopRequireDefault(require(\"../getUTCWeekYear/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../requiredArgs/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../startOfUTCWeek/index.js\"));\nvar _index4 = _interopRequireDefault(require(\"../toInteger/index.js\"));\nvar _index5 = require(\"../defaultOptions/index.js\");\nfunction startOfUTCWeekYear(dirtyDate, options) {\n  var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n  (0, _index2.default)(1, arguments);\n  var defaultOptions = (0, _index5.getDefaultOptions)();\n  var firstWeekContainsDate = (0, _index4.default)((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n  var year = (0, _index.default)(dirtyDate, options);\n  var firstWeek = new Date(0);\n  firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate);\n  firstWeek.setUTCHours(0, 0, 0, 0);\n  var date = (0, _index3.default)(firstWeek, options);\n  return date;\n}\nmodule.exports = exports.default;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = getUTCWeek;\nvar _index = _interopRequireDefault(require(\"../../toDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../startOfUTCWeek/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../startOfUTCWeekYear/index.js\"));\nvar _index4 = _interopRequireDefault(require(\"../requiredArgs/index.js\"));\nvar MILLISECONDS_IN_WEEK = 604800000;\nfunction getUTCWeek(dirtyDate, options) {\n  (0, _index4.default)(1, arguments);\n  var date = (0, _index.default)(dirtyDate);\n  var diff = (0, _index2.default)(date, options).getTime() - (0, _index3.default)(date, options).getTime();\n\n  // Round the number of days to the nearest integer\n  // because the number of milliseconds in a week is not constant\n  // (e.g. it's different in the week of the daylight saving time clock shift)\n  return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}\nmodule.exports = exports.default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = addLeadingZeros;\nfunction addLeadingZeros(number, targetLength) {\n  var sign = number < 0 ? '-' : '';\n  var output = Math.abs(number).toString();\n  while (output.length < targetLength) {\n    output = '0' + output;\n  }\n  return sign + output;\n}\nmodule.exports = exports.default;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _index = _interopRequireDefault(require(\"../../addLeadingZeros/index.js\"));\n/*\n * |     | Unit                           |     | Unit                           |\n * |-----|--------------------------------|-----|--------------------------------|\n * |  a  | AM, PM                         |  A* |                                |\n * |  d  | Day of month                   |  D  |                                |\n * |  h  | Hour [1-12]                    |  H  | Hour [0-23]                    |\n * |  m  | Minute                         |  M  | Month                          |\n * |  s  | Second                         |  S  | Fraction of second             |\n * |  y  | Year (abs)                     |  Y  |                                |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\n\nvar formatters = {\n  // Year\n  y: function y(date, token) {\n    // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n    // | Year     |     y | yy |   yyy |  yyyy | yyyyy |\n    // |----------|-------|----|-------|-------|-------|\n    // | AD 1     |     1 | 01 |   001 |  0001 | 00001 |\n    // | AD 12    |    12 | 12 |   012 |  0012 | 00012 |\n    // | AD 123   |   123 | 23 |   123 |  0123 | 00123 |\n    // | AD 1234  |  1234 | 34 |  1234 |  1234 | 01234 |\n    // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n    var signedYear = date.getUTCFullYear();\n    // Returns 1 for 1 BC (which is year 0 in JavaScript)\n    var year = signedYear > 0 ? signedYear : 1 - signedYear;\n    return (0, _index.default)(token === 'yy' ? year % 100 : year, token.length);\n  },\n  // Month\n  M: function M(date, token) {\n    var month = date.getUTCMonth();\n    return token === 'M' ? String(month + 1) : (0, _index.default)(month + 1, 2);\n  },\n  // Day of the month\n  d: function d(date, token) {\n    return (0, _index.default)(date.getUTCDate(), token.length);\n  },\n  // AM or PM\n  a: function a(date, token) {\n    var dayPeriodEnumValue = date.getUTCHours() / 12 >= 1 ? 'pm' : 'am';\n    switch (token) {\n      case 'a':\n      case 'aa':\n        return dayPeriodEnumValue.toUpperCase();\n      case 'aaa':\n        return dayPeriodEnumValue;\n      case 'aaaaa':\n        return dayPeriodEnumValue[0];\n      case 'aaaa':\n      default:\n        return dayPeriodEnumValue === 'am' ? 'a.m.' : 'p.m.';\n    }\n  },\n  // Hour [1-12]\n  h: function h(date, token) {\n    return (0, _index.default)(date.getUTCHours() % 12 || 12, token.length);\n  },\n  // Hour [0-23]\n  H: function H(date, token) {\n    return (0, _index.default)(date.getUTCHours(), token.length);\n  },\n  // Minute\n  m: function m(date, token) {\n    return (0, _index.default)(date.getUTCMinutes(), token.length);\n  },\n  // Second\n  s: function s(date, token) {\n    return (0, _index.default)(date.getUTCSeconds(), token.length);\n  },\n  // Fraction of second\n  S: function S(date, token) {\n    var numberOfDigits = token.length;\n    var milliseconds = date.getUTCMilliseconds();\n    var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3));\n    return (0, _index.default)(fractionalSeconds, token.length);\n  }\n};\nvar _default = formatters;\nexports.default = _default;\nmodule.exports = exports.default;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _index = _interopRequireDefault(require(\"../../../_lib/getUTCDayOfYear/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../../../_lib/getUTCISOWeek/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../../../_lib/getUTCISOWeekYear/index.js\"));\nvar _index4 = _interopRequireDefault(require(\"../../../_lib/getUTCWeek/index.js\"));\nvar _index5 = _interopRequireDefault(require(\"../../../_lib/getUTCWeekYear/index.js\"));\nvar _index6 = _interopRequireDefault(require(\"../../addLeadingZeros/index.js\"));\nvar _index7 = _interopRequireDefault(require(\"../lightFormatters/index.js\"));\nvar dayPeriodEnum = {\n  am: 'am',\n  pm: 'pm',\n  midnight: 'midnight',\n  noon: 'noon',\n  morning: 'morning',\n  afternoon: 'afternoon',\n  evening: 'evening',\n  night: 'night'\n};\n/*\n * |     | Unit                           |     | Unit                           |\n * |-----|--------------------------------|-----|--------------------------------|\n * |  a  | AM, PM                         |  A* | Milliseconds in day            |\n * |  b  | AM, PM, noon, midnight         |  B  | Flexible day period            |\n * |  c  | Stand-alone local day of week  |  C* | Localized hour w/ day period   |\n * |  d  | Day of month                   |  D  | Day of year                    |\n * |  e  | Local day of week              |  E  | Day of week                    |\n * |  f  |                                |  F* | Day of week in month           |\n * |  g* | Modified Julian day            |  G  | Era                            |\n * |  h  | Hour [1-12]                    |  H  | Hour [0-23]                    |\n * |  i! | ISO day of week                |  I! | ISO week of year               |\n * |  j* | Localized hour w/ day period   |  J* | Localized hour w/o day period  |\n * |  k  | Hour [1-24]                    |  K  | Hour [0-11]                    |\n * |  l* | (deprecated)                   |  L  | Stand-alone month              |\n * |  m  | Minute                         |  M  | Month                          |\n * |  n  |                                |  N  |                                |\n * |  o! | Ordinal number modifier        |  O  | Timezone (GMT)                 |\n * |  p! | Long localized time            |  P! | Long localized date            |\n * |  q  | Stand-alone quarter            |  Q  | Quarter                        |\n * |  r* | Related Gregorian year         |  R! | ISO week-numbering year        |\n * |  s  | Second                         |  S  | Fraction of second             |\n * |  t! | Seconds timestamp              |  T! | Milliseconds timestamp         |\n * |  u  | Extended year                  |  U* | Cyclic year                    |\n * |  v* | Timezone (generic non-locat.)  |  V* | Timezone (location)            |\n * |  w  | Local week of year             |  W* | Week of month                  |\n * |  x  | Timezone (ISO-8601 w/o Z)      |  X  | Timezone (ISO-8601)            |\n * |  y  | Year (abs)                     |  Y  | Local week-numbering year      |\n * |  z  | Timezone (specific non-locat.) |  Z* | Timezone (aliases)             |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n *   i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n *   `R` is supposed to be used in conjunction with `I` and `i`\n *   for universal ISO week-numbering date, whereas\n *   `Y` is supposed to be used in conjunction with `w` and `e`\n *   for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nvar formatters = {\n  // Era\n  G: function G(date, token, localize) {\n    var era = date.getUTCFullYear() > 0 ? 1 : 0;\n    switch (token) {\n      // AD, BC\n      case 'G':\n      case 'GG':\n      case 'GGG':\n        return localize.era(era, {\n          width: 'abbreviated'\n        });\n      // A, B\n      case 'GGGGG':\n        return localize.era(era, {\n          width: 'narrow'\n        });\n      // Anno Domini, Before Christ\n      case 'GGGG':\n      default:\n        return localize.era(era, {\n          width: 'wide'\n        });\n    }\n  },\n  // Year\n  y: function y(date, token, localize) {\n    // Ordinal number\n    if (token === 'yo') {\n      var signedYear = date.getUTCFullYear();\n      // Returns 1 for 1 BC (which is year 0 in JavaScript)\n      var year = signedYear > 0 ? signedYear : 1 - signedYear;\n      return localize.ordinalNumber(year, {\n        unit: 'year'\n      });\n    }\n    return _index7.default.y(date, token);\n  },\n  // Local week-numbering year\n  Y: function Y(date, token, localize, options) {\n    var signedWeekYear = (0, _index5.default)(date, options);\n    // Returns 1 for 1 BC (which is year 0 in JavaScript)\n    var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;\n\n    // Two digit year\n    if (token === 'YY') {\n      var twoDigitYear = weekYear % 100;\n      return (0, _index6.default)(twoDigitYear, 2);\n    }\n\n    // Ordinal number\n    if (token === 'Yo') {\n      return localize.ordinalNumber(weekYear, {\n        unit: 'year'\n      });\n    }\n\n    // Padding\n    return (0, _index6.default)(weekYear, token.length);\n  },\n  // ISO week-numbering year\n  R: function R(date, token) {\n    var isoWeekYear = (0, _index3.default)(date);\n\n    // Padding\n    return (0, _index6.default)(isoWeekYear, token.length);\n  },\n  // Extended year. This is a single number designating the year of this calendar system.\n  // The main difference between `y` and `u` localizers are B.C. years:\n  // | Year | `y` | `u` |\n  // |------|-----|-----|\n  // | AC 1 |   1 |   1 |\n  // | BC 1 |   1 |   0 |\n  // | BC 2 |   2 |  -1 |\n  // Also `yy` always returns the last two digits of a year,\n  // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n  u: function u(date, token) {\n    var year = date.getUTCFullYear();\n    return (0, _index6.default)(year, token.length);\n  },\n  // Quarter\n  Q: function Q(date, token, localize) {\n    var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n    switch (token) {\n      // 1, 2, 3, 4\n      case 'Q':\n        return String(quarter);\n      // 01, 02, 03, 04\n      case 'QQ':\n        return (0, _index6.default)(quarter, 2);\n      // 1st, 2nd, 3rd, 4th\n      case 'Qo':\n        return localize.ordinalNumber(quarter, {\n          unit: 'quarter'\n        });\n      // Q1, Q2, Q3, Q4\n      case 'QQQ':\n        return localize.quarter(quarter, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n      // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n      case 'QQQQQ':\n        return localize.quarter(quarter, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n      // 1st quarter, 2nd quarter, ...\n      case 'QQQQ':\n      default:\n        return localize.quarter(quarter, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // Stand-alone quarter\n  q: function q(date, token, localize) {\n    var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n    switch (token) {\n      // 1, 2, 3, 4\n      case 'q':\n        return String(quarter);\n      // 01, 02, 03, 04\n      case 'qq':\n        return (0, _index6.default)(quarter, 2);\n      // 1st, 2nd, 3rd, 4th\n      case 'qo':\n        return localize.ordinalNumber(quarter, {\n          unit: 'quarter'\n        });\n      // Q1, Q2, Q3, Q4\n      case 'qqq':\n        return localize.quarter(quarter, {\n          width: 'abbreviated',\n          context: 'standalone'\n        });\n      // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n      case 'qqqqq':\n        return localize.quarter(quarter, {\n          width: 'narrow',\n          context: 'standalone'\n        });\n      // 1st quarter, 2nd quarter, ...\n      case 'qqqq':\n      default:\n        return localize.quarter(quarter, {\n          width: 'wide',\n          context: 'standalone'\n        });\n    }\n  },\n  // Month\n  M: function M(date, token, localize) {\n    var month = date.getUTCMonth();\n    switch (token) {\n      case 'M':\n      case 'MM':\n        return _index7.default.M(date, token);\n      // 1st, 2nd, ..., 12th\n      case 'Mo':\n        return localize.ordinalNumber(month + 1, {\n          unit: 'month'\n        });\n      // Jan, Feb, ..., Dec\n      case 'MMM':\n        return localize.month(month, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n      // J, F, ..., D\n      case 'MMMMM':\n        return localize.month(month, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n      // January, February, ..., December\n      case 'MMMM':\n      default:\n        return localize.month(month, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // Stand-alone month\n  L: function L(date, token, localize) {\n    var month = date.getUTCMonth();\n    switch (token) {\n      // 1, 2, ..., 12\n      case 'L':\n        return String(month + 1);\n      // 01, 02, ..., 12\n      case 'LL':\n        return (0, _index6.default)(month + 1, 2);\n      // 1st, 2nd, ..., 12th\n      case 'Lo':\n        return localize.ordinalNumber(month + 1, {\n          unit: 'month'\n        });\n      // Jan, Feb, ..., Dec\n      case 'LLL':\n        return localize.month(month, {\n          width: 'abbreviated',\n          context: 'standalone'\n        });\n      // J, F, ..., D\n      case 'LLLLL':\n        return localize.month(month, {\n          width: 'narrow',\n          context: 'standalone'\n        });\n      // January, February, ..., December\n      case 'LLLL':\n      default:\n        return localize.month(month, {\n          width: 'wide',\n          context: 'standalone'\n        });\n    }\n  },\n  // Local week of year\n  w: function w(date, token, localize, options) {\n    var week = (0, _index4.default)(date, options);\n    if (token === 'wo') {\n      return localize.ordinalNumber(week, {\n        unit: 'week'\n      });\n    }\n    return (0, _index6.default)(week, token.length);\n  },\n  // ISO week of year\n  I: function I(date, token, localize) {\n    var isoWeek = (0, _index2.default)(date);\n    if (token === 'Io') {\n      return localize.ordinalNumber(isoWeek, {\n        unit: 'week'\n      });\n    }\n    return (0, _index6.default)(isoWeek, token.length);\n  },\n  // Day of the month\n  d: function d(date, token, localize) {\n    if (token === 'do') {\n      return localize.ordinalNumber(date.getUTCDate(), {\n        unit: 'date'\n      });\n    }\n    return _index7.default.d(date, token);\n  },\n  // Day of year\n  D: function D(date, token, localize) {\n    var dayOfYear = (0, _index.default)(date);\n    if (token === 'Do') {\n      return localize.ordinalNumber(dayOfYear, {\n        unit: 'dayOfYear'\n      });\n    }\n    return (0, _index6.default)(dayOfYear, token.length);\n  },\n  // Day of week\n  E: function E(date, token, localize) {\n    var dayOfWeek = date.getUTCDay();\n    switch (token) {\n      // Tue\n      case 'E':\n      case 'EE':\n      case 'EEE':\n        return localize.day(dayOfWeek, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n      // T\n      case 'EEEEE':\n        return localize.day(dayOfWeek, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n      // Tu\n      case 'EEEEEE':\n        return localize.day(dayOfWeek, {\n          width: 'short',\n          context: 'formatting'\n        });\n      // Tuesday\n      case 'EEEE':\n      default:\n        return localize.day(dayOfWeek, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // Local day of week\n  e: function e(date, token, localize, options) {\n    var dayOfWeek = date.getUTCDay();\n    var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n    switch (token) {\n      // Numerical value (Nth day of week with current locale or weekStartsOn)\n      case 'e':\n        return String(localDayOfWeek);\n      // Padded numerical value\n      case 'ee':\n        return (0, _index6.default)(localDayOfWeek, 2);\n      // 1st, 2nd, ..., 7th\n      case 'eo':\n        return localize.ordinalNumber(localDayOfWeek, {\n          unit: 'day'\n        });\n      case 'eee':\n        return localize.day(dayOfWeek, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n      // T\n      case 'eeeee':\n        return localize.day(dayOfWeek, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n      // Tu\n      case 'eeeeee':\n        return localize.day(dayOfWeek, {\n          width: 'short',\n          context: 'formatting'\n        });\n      // Tuesday\n      case 'eeee':\n      default:\n        return localize.day(dayOfWeek, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // Stand-alone local day of week\n  c: function c(date, token, localize, options) {\n    var dayOfWeek = date.getUTCDay();\n    var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n    switch (token) {\n      // Numerical value (same as in `e`)\n      case 'c':\n        return String(localDayOfWeek);\n      // Padded numerical value\n      case 'cc':\n        return (0, _index6.default)(localDayOfWeek, token.length);\n      // 1st, 2nd, ..., 7th\n      case 'co':\n        return localize.ordinalNumber(localDayOfWeek, {\n          unit: 'day'\n        });\n      case 'ccc':\n        return localize.day(dayOfWeek, {\n          width: 'abbreviated',\n          context: 'standalone'\n        });\n      // T\n      case 'ccccc':\n        return localize.day(dayOfWeek, {\n          width: 'narrow',\n          context: 'standalone'\n        });\n      // Tu\n      case 'cccccc':\n        return localize.day(dayOfWeek, {\n          width: 'short',\n          context: 'standalone'\n        });\n      // Tuesday\n      case 'cccc':\n      default:\n        return localize.day(dayOfWeek, {\n          width: 'wide',\n          context: 'standalone'\n        });\n    }\n  },\n  // ISO day of week\n  i: function i(date, token, localize) {\n    var dayOfWeek = date.getUTCDay();\n    var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n    switch (token) {\n      // 2\n      case 'i':\n        return String(isoDayOfWeek);\n      // 02\n      case 'ii':\n        return (0, _index6.default)(isoDayOfWeek, token.length);\n      // 2nd\n      case 'io':\n        return localize.ordinalNumber(isoDayOfWeek, {\n          unit: 'day'\n        });\n      // Tue\n      case 'iii':\n        return localize.day(dayOfWeek, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n      // T\n      case 'iiiii':\n        return localize.day(dayOfWeek, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n      // Tu\n      case 'iiiiii':\n        return localize.day(dayOfWeek, {\n          width: 'short',\n          context: 'formatting'\n        });\n      // Tuesday\n      case 'iiii':\n      default:\n        return localize.day(dayOfWeek, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // AM or PM\n  a: function a(date, token, localize) {\n    var hours = date.getUTCHours();\n    var dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n    switch (token) {\n      case 'a':\n      case 'aa':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n      case 'aaa':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'abbreviated',\n          context: 'formatting'\n        }).toLowerCase();\n      case 'aaaaa':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n      case 'aaaa':\n      default:\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // AM, PM, midnight, noon\n  b: function b(date, token, localize) {\n    var hours = date.getUTCHours();\n    var dayPeriodEnumValue;\n    if (hours === 12) {\n      dayPeriodEnumValue = dayPeriodEnum.noon;\n    } else if (hours === 0) {\n      dayPeriodEnumValue = dayPeriodEnum.midnight;\n    } else {\n      dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n    }\n    switch (token) {\n      case 'b':\n      case 'bb':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n      case 'bbb':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'abbreviated',\n          context: 'formatting'\n        }).toLowerCase();\n      case 'bbbbb':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n      case 'bbbb':\n      default:\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // in the morning, in the afternoon, in the evening, at night\n  B: function B(date, token, localize) {\n    var hours = date.getUTCHours();\n    var dayPeriodEnumValue;\n    if (hours >= 17) {\n      dayPeriodEnumValue = dayPeriodEnum.evening;\n    } else if (hours >= 12) {\n      dayPeriodEnumValue = dayPeriodEnum.afternoon;\n    } else if (hours >= 4) {\n      dayPeriodEnumValue = dayPeriodEnum.morning;\n    } else {\n      dayPeriodEnumValue = dayPeriodEnum.night;\n    }\n    switch (token) {\n      case 'B':\n      case 'BB':\n      case 'BBB':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n      case 'BBBBB':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n      case 'BBBB':\n      default:\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // Hour [1-12]\n  h: function h(date, token, localize) {\n    if (token === 'ho') {\n      var hours = date.getUTCHours() % 12;\n      if (hours === 0) hours = 12;\n      return localize.ordinalNumber(hours, {\n        unit: 'hour'\n      });\n    }\n    return _index7.default.h(date, token);\n  },\n  // Hour [0-23]\n  H: function H(date, token, localize) {\n    if (token === 'Ho') {\n      return localize.ordinalNumber(date.getUTCHours(), {\n        unit: 'hour'\n      });\n    }\n    return _index7.default.H(date, token);\n  },\n  // Hour [0-11]\n  K: function K(date, token, localize) {\n    var hours = date.getUTCHours() % 12;\n    if (token === 'Ko') {\n      return localize.ordinalNumber(hours, {\n        unit: 'hour'\n      });\n    }\n    return (0, _index6.default)(hours, token.length);\n  },\n  // Hour [1-24]\n  k: function k(date, token, localize) {\n    var hours = date.getUTCHours();\n    if (hours === 0) hours = 24;\n    if (token === 'ko') {\n      return localize.ordinalNumber(hours, {\n        unit: 'hour'\n      });\n    }\n    return (0, _index6.default)(hours, token.length);\n  },\n  // Minute\n  m: function m(date, token, localize) {\n    if (token === 'mo') {\n      return localize.ordinalNumber(date.getUTCMinutes(), {\n        unit: 'minute'\n      });\n    }\n    return _index7.default.m(date, token);\n  },\n  // Second\n  s: function s(date, token, localize) {\n    if (token === 'so') {\n      return localize.ordinalNumber(date.getUTCSeconds(), {\n        unit: 'second'\n      });\n    }\n    return _index7.default.s(date, token);\n  },\n  // Fraction of second\n  S: function S(date, token) {\n    return _index7.default.S(date, token);\n  },\n  // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n  X: function X(date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timezoneOffset = originalDate.getTimezoneOffset();\n    if (timezoneOffset === 0) {\n      return 'Z';\n    }\n    switch (token) {\n      // Hours and optional minutes\n      case 'X':\n        return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n      // Hours, minutes and optional seconds without `:` delimiter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `XX`\n      case 'XXXX':\n      case 'XX':\n        // Hours and minutes without `:` delimiter\n        return formatTimezone(timezoneOffset);\n\n      // Hours, minutes and optional seconds with `:` delimiter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `XXX`\n      case 'XXXXX':\n      case 'XXX': // Hours and minutes with `:` delimiter\n      default:\n        return formatTimezone(timezoneOffset, ':');\n    }\n  },\n  // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n  x: function x(date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timezoneOffset = originalDate.getTimezoneOffset();\n    switch (token) {\n      // Hours and optional minutes\n      case 'x':\n        return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n      // Hours, minutes and optional seconds without `:` delimiter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `xx`\n      case 'xxxx':\n      case 'xx':\n        // Hours and minutes without `:` delimiter\n        return formatTimezone(timezoneOffset);\n\n      // Hours, minutes and optional seconds with `:` delimiter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `xxx`\n      case 'xxxxx':\n      case 'xxx': // Hours and minutes with `:` delimiter\n      default:\n        return formatTimezone(timezoneOffset, ':');\n    }\n  },\n  // Timezone (GMT)\n  O: function O(date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timezoneOffset = originalDate.getTimezoneOffset();\n    switch (token) {\n      // Short\n      case 'O':\n      case 'OO':\n      case 'OOO':\n        return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n      // Long\n      case 'OOOO':\n      default:\n        return 'GMT' + formatTimezone(timezoneOffset, ':');\n    }\n  },\n  // Timezone (specific non-location)\n  z: function z(date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timezoneOffset = originalDate.getTimezoneOffset();\n    switch (token) {\n      // Short\n      case 'z':\n      case 'zz':\n      case 'zzz':\n        return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n      // Long\n      case 'zzzz':\n      default:\n        return 'GMT' + formatTimezone(timezoneOffset, ':');\n    }\n  },\n  // Seconds timestamp\n  t: function t(date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timestamp = Math.floor(originalDate.getTime() / 1000);\n    return (0, _index6.default)(timestamp, token.length);\n  },\n  // Milliseconds timestamp\n  T: function T(date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timestamp = originalDate.getTime();\n    return (0, _index6.default)(timestamp, token.length);\n  }\n};\nfunction formatTimezoneShort(offset, dirtyDelimiter) {\n  var sign = offset > 0 ? '-' : '+';\n  var absOffset = Math.abs(offset);\n  var hours = Math.floor(absOffset / 60);\n  var minutes = absOffset % 60;\n  if (minutes === 0) {\n    return sign + String(hours);\n  }\n  var delimiter = dirtyDelimiter || '';\n  return sign + String(hours) + delimiter + (0, _index6.default)(minutes, 2);\n}\nfunction formatTimezoneWithOptionalMinutes(offset, dirtyDelimiter) {\n  if (offset % 60 === 0) {\n    var sign = offset > 0 ? '-' : '+';\n    return sign + (0, _index6.default)(Math.abs(offset) / 60, 2);\n  }\n  return formatTimezone(offset, dirtyDelimiter);\n}\nfunction formatTimezone(offset, dirtyDelimiter) {\n  var delimiter = dirtyDelimiter || '';\n  var sign = offset > 0 ? '-' : '+';\n  var absOffset = Math.abs(offset);\n  var hours = (0, _index6.default)(Math.floor(absOffset / 60), 2);\n  var minutes = (0, _index6.default)(absOffset % 60, 2);\n  return sign + hours + delimiter + minutes;\n}\nvar _default = formatters;\nexports.default = _default;\nmodule.exports = exports.default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar dateLongFormatter = function dateLongFormatter(pattern, formatLong) {\n  switch (pattern) {\n    case 'P':\n      return formatLong.date({\n        width: 'short'\n      });\n    case 'PP':\n      return formatLong.date({\n        width: 'medium'\n      });\n    case 'PPP':\n      return formatLong.date({\n        width: 'long'\n      });\n    case 'PPPP':\n    default:\n      return formatLong.date({\n        width: 'full'\n      });\n  }\n};\nvar timeLongFormatter = function timeLongFormatter(pattern, formatLong) {\n  switch (pattern) {\n    case 'p':\n      return formatLong.time({\n        width: 'short'\n      });\n    case 'pp':\n      return formatLong.time({\n        width: 'medium'\n      });\n    case 'ppp':\n      return formatLong.time({\n        width: 'long'\n      });\n    case 'pppp':\n    default:\n      return formatLong.time({\n        width: 'full'\n      });\n  }\n};\nvar dateTimeLongFormatter = function dateTimeLongFormatter(pattern, formatLong) {\n  var matchResult = pattern.match(/(P+)(p+)?/) || [];\n  var datePattern = matchResult[1];\n  var timePattern = matchResult[2];\n  if (!timePattern) {\n    return dateLongFormatter(pattern, formatLong);\n  }\n  var dateTimeFormat;\n  switch (datePattern) {\n    case 'P':\n      dateTimeFormat = formatLong.dateTime({\n        width: 'short'\n      });\n      break;\n    case 'PP':\n      dateTimeFormat = formatLong.dateTime({\n        width: 'medium'\n      });\n      break;\n    case 'PPP':\n      dateTimeFormat = formatLong.dateTime({\n        width: 'long'\n      });\n      break;\n    case 'PPPP':\n    default:\n      dateTimeFormat = formatLong.dateTime({\n        width: 'full'\n      });\n      break;\n  }\n  return dateTimeFormat.replace('{{date}}', dateLongFormatter(datePattern, formatLong)).replace('{{time}}', timeLongFormatter(timePattern, formatLong));\n};\nvar longFormatters = {\n  p: timeLongFormatter,\n  P: dateTimeLongFormatter\n};\nvar _default = longFormatters;\nexports.default = _default;\nmodule.exports = exports.default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = getTimezoneOffsetInMilliseconds;\n/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nfunction getTimezoneOffsetInMilliseconds(date) {\n  var utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));\n  utcDate.setUTCFullYear(date.getFullYear());\n  return date.getTime() - utcDate.getTime();\n}\nmodule.exports = exports.default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.isProtectedDayOfYearToken = isProtectedDayOfYearToken;\nexports.isProtectedWeekYearToken = isProtectedWeekYearToken;\nexports.throwProtectedError = throwProtectedError;\nvar protectedDayOfYearTokens = ['D', 'DD'];\nvar protectedWeekYearTokens = ['YY', 'YYYY'];\nfunction isProtectedDayOfYearToken(token) {\n  return protectedDayOfYearTokens.indexOf(token) !== -1;\n}\nfunction isProtectedWeekYearToken(token) {\n  return protectedWeekYearTokens.indexOf(token) !== -1;\n}\nfunction throwProtectedError(token, format, input) {\n  if (token === 'YYYY') {\n    throw new RangeError(\"Use `yyyy` instead of `YYYY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n  } else if (token === 'YY') {\n    throw new RangeError(\"Use `yy` instead of `YY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n  } else if (token === 'D') {\n    throw new RangeError(\"Use `d` instead of `D` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n  } else if (token === 'DD') {\n    throw new RangeError(\"Use `dd` instead of `DD` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n  }\n}", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar formatDistanceLocale = {\n  lessThanXSeconds: {\n    one: 'less than a second',\n    other: 'less than {{count}} seconds'\n  },\n  xSeconds: {\n    one: '1 second',\n    other: '{{count}} seconds'\n  },\n  halfAMinute: 'half a minute',\n  lessThanXMinutes: {\n    one: 'less than a minute',\n    other: 'less than {{count}} minutes'\n  },\n  xMinutes: {\n    one: '1 minute',\n    other: '{{count}} minutes'\n  },\n  aboutXHours: {\n    one: 'about 1 hour',\n    other: 'about {{count}} hours'\n  },\n  xHours: {\n    one: '1 hour',\n    other: '{{count}} hours'\n  },\n  xDays: {\n    one: '1 day',\n    other: '{{count}} days'\n  },\n  aboutXWeeks: {\n    one: 'about 1 week',\n    other: 'about {{count}} weeks'\n  },\n  xWeeks: {\n    one: '1 week',\n    other: '{{count}} weeks'\n  },\n  aboutXMonths: {\n    one: 'about 1 month',\n    other: 'about {{count}} months'\n  },\n  xMonths: {\n    one: '1 month',\n    other: '{{count}} months'\n  },\n  aboutXYears: {\n    one: 'about 1 year',\n    other: 'about {{count}} years'\n  },\n  xYears: {\n    one: '1 year',\n    other: '{{count}} years'\n  },\n  overXYears: {\n    one: 'over 1 year',\n    other: 'over {{count}} years'\n  },\n  almostXYears: {\n    one: 'almost 1 year',\n    other: 'almost {{count}} years'\n  }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n  var result;\n  var tokenValue = formatDistanceLocale[token];\n  if (typeof tokenValue === 'string') {\n    result = tokenValue;\n  } else if (count === 1) {\n    result = tokenValue.one;\n  } else {\n    result = tokenValue.other.replace('{{count}}', count.toString());\n  }\n  if (options !== null && options !== void 0 && options.addSuffix) {\n    if (options.comparison && options.comparison > 0) {\n      return 'in ' + result;\n    } else {\n      return result + ' ago';\n    }\n  }\n  return result;\n};\nvar _default = formatDistance;\nexports.default = _default;\nmodule.exports = exports.default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = buildFormatLongFn;\nfunction buildFormatLongFn(args) {\n  return function () {\n    var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    // TODO: Remove String()\n    var width = options.width ? String(options.width) : args.defaultWidth;\n    var format = args.formats[width] || args.formats[args.defaultWidth];\n    return format;\n  };\n}\nmodule.exports = exports.default;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _index = _interopRequireDefault(require(\"../../../_lib/buildFormatLongFn/index.js\"));\nvar dateFormats = {\n  full: 'EEEE, MMMM do, y',\n  long: 'MMMM do, y',\n  medium: 'MMM d, y',\n  short: 'MM/dd/yyyy'\n};\nvar timeFormats = {\n  full: 'h:mm:ss a zzzz',\n  long: 'h:mm:ss a z',\n  medium: 'h:mm:ss a',\n  short: 'h:mm a'\n};\nvar dateTimeFormats = {\n  full: \"{{date}} 'at' {{time}}\",\n  long: \"{{date}} 'at' {{time}}\",\n  medium: '{{date}}, {{time}}',\n  short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n  date: (0, _index.default)({\n    formats: dateFormats,\n    defaultWidth: 'full'\n  }),\n  time: (0, _index.default)({\n    formats: timeFormats,\n    defaultWidth: 'full'\n  }),\n  dateTime: (0, _index.default)({\n    formats: dateTimeFormats,\n    defaultWidth: 'full'\n  })\n};\nvar _default = formatLong;\nexports.default = _default;\nmodule.exports = exports.default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar formatRelativeLocale = {\n  lastWeek: \"'last' eeee 'at' p\",\n  yesterday: \"'yesterday at' p\",\n  today: \"'today at' p\",\n  tomorrow: \"'tomorrow at' p\",\n  nextWeek: \"eeee 'at' p\",\n  other: 'P'\n};\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n  return formatRelativeLocale[token];\n};\nvar _default = formatRelative;\nexports.default = _default;\nmodule.exports = exports.default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = buildLocalizeFn;\nfunction buildLocalizeFn(args) {\n  return function (dirtyIndex, options) {\n    var context = options !== null && options !== void 0 && options.context ? String(options.context) : 'standalone';\n    var valuesArray;\n    if (context === 'formatting' && args.formattingValues) {\n      var defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n      var width = options !== null && options !== void 0 && options.width ? String(options.width) : defaultWidth;\n      valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth];\n    } else {\n      var _defaultWidth = args.defaultWidth;\n      var _width = options !== null && options !== void 0 && options.width ? String(options.width) : args.defaultWidth;\n      valuesArray = args.values[_width] || args.values[_defaultWidth];\n    }\n    var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex;\n    // @ts-ignore: For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n    return valuesArray[index];\n  };\n}\nmodule.exports = exports.default;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _index = _interopRequireDefault(require(\"../../../_lib/buildLocalizeFn/index.js\"));\nvar eraValues = {\n  narrow: ['B', 'A'],\n  abbreviated: ['BC', 'AD'],\n  wide: ['Before Christ', 'Anno Domini']\n};\nvar quarterValues = {\n  narrow: ['1', '2', '3', '4'],\n  abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n  wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter']\n};\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nvar monthValues = {\n  narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n  abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n  wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n};\nvar dayValues = {\n  narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n  short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n  abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n  wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n};\nvar dayPeriodValues = {\n  narrow: {\n    am: 'a',\n    pm: 'p',\n    midnight: 'mi',\n    noon: 'n',\n    morning: 'morning',\n    afternoon: 'afternoon',\n    evening: 'evening',\n    night: 'night'\n  },\n  abbreviated: {\n    am: 'AM',\n    pm: 'PM',\n    midnight: 'midnight',\n    noon: 'noon',\n    morning: 'morning',\n    afternoon: 'afternoon',\n    evening: 'evening',\n    night: 'night'\n  },\n  wide: {\n    am: 'a.m.',\n    pm: 'p.m.',\n    midnight: 'midnight',\n    noon: 'noon',\n    morning: 'morning',\n    afternoon: 'afternoon',\n    evening: 'evening',\n    night: 'night'\n  }\n};\nvar formattingDayPeriodValues = {\n  narrow: {\n    am: 'a',\n    pm: 'p',\n    midnight: 'mi',\n    noon: 'n',\n    morning: 'in the morning',\n    afternoon: 'in the afternoon',\n    evening: 'in the evening',\n    night: 'at night'\n  },\n  abbreviated: {\n    am: 'AM',\n    pm: 'PM',\n    midnight: 'midnight',\n    noon: 'noon',\n    morning: 'in the morning',\n    afternoon: 'in the afternoon',\n    evening: 'in the evening',\n    night: 'at night'\n  },\n  wide: {\n    am: 'a.m.',\n    pm: 'p.m.',\n    midnight: 'midnight',\n    noon: 'noon',\n    morning: 'in the morning',\n    afternoon: 'in the afternoon',\n    evening: 'in the evening',\n    night: 'at night'\n  }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n  var number = Number(dirtyNumber);\n\n  // If ordinal numbers depend on context, for example,\n  // if they are different for different grammatical genders,\n  // use `options.unit`.\n  //\n  // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n  // 'day', 'hour', 'minute', 'second'.\n\n  var rem100 = number % 100;\n  if (rem100 > 20 || rem100 < 10) {\n    switch (rem100 % 10) {\n      case 1:\n        return number + 'st';\n      case 2:\n        return number + 'nd';\n      case 3:\n        return number + 'rd';\n    }\n  }\n  return number + 'th';\n};\nvar localize = {\n  ordinalNumber: ordinalNumber,\n  era: (0, _index.default)({\n    values: eraValues,\n    defaultWidth: 'wide'\n  }),\n  quarter: (0, _index.default)({\n    values: quarterValues,\n    defaultWidth: 'wide',\n    argumentCallback: function argumentCallback(quarter) {\n      return quarter - 1;\n    }\n  }),\n  month: (0, _index.default)({\n    values: monthValues,\n    defaultWidth: 'wide'\n  }),\n  day: (0, _index.default)({\n    values: dayValues,\n    defaultWidth: 'wide'\n  }),\n  dayPeriod: (0, _index.default)({\n    values: dayPeriodValues,\n    defaultWidth: 'wide',\n    formattingValues: formattingDayPeriodValues,\n    defaultFormattingWidth: 'wide'\n  })\n};\nvar _default = localize;\nexports.default = _default;\nmodule.exports = exports.default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = buildMatchFn;\nfunction buildMatchFn(args) {\n  return function (string) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    var width = options.width;\n    var matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];\n    var matchResult = string.match(matchPattern);\n    if (!matchResult) {\n      return null;\n    }\n    var matchedString = matchResult[0];\n    var parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth];\n    var key = Array.isArray(parsePatterns) ? findIndex(parsePatterns, function (pattern) {\n      return pattern.test(matchedString);\n    }) : findKey(parsePatterns, function (pattern) {\n      return pattern.test(matchedString);\n    });\n    var value;\n    value = args.valueCallback ? args.valueCallback(key) : key;\n    value = options.valueCallback ? options.valueCallback(value) : value;\n    var rest = string.slice(matchedString.length);\n    return {\n      value: value,\n      rest: rest\n    };\n  };\n}\nfunction findKey(object, predicate) {\n  for (var key in object) {\n    if (object.hasOwnProperty(key) && predicate(object[key])) {\n      return key;\n    }\n  }\n  return undefined;\n}\nfunction findIndex(array, predicate) {\n  for (var key = 0; key < array.length; key++) {\n    if (predicate(array[key])) {\n      return key;\n    }\n  }\n  return undefined;\n}\nmodule.exports = exports.default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = buildMatchPatternFn;\nfunction buildMatchPatternFn(args) {\n  return function (string) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    var matchResult = string.match(args.matchPattern);\n    if (!matchResult) return null;\n    var matchedString = matchResult[0];\n    var parseResult = string.match(args.parsePattern);\n    if (!parseResult) return null;\n    var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];\n    value = options.valueCallback ? options.valueCallback(value) : value;\n    var rest = string.slice(matchedString.length);\n    return {\n      value: value,\n      rest: rest\n    };\n  };\n}\nmodule.exports = exports.default;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _index = _interopRequireDefault(require(\"../../../_lib/buildMatchFn/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../../../_lib/buildMatchPatternFn/index.js\"));\nvar matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n  narrow: /^(b|a)/i,\n  abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n  wide: /^(before christ|before common era|anno domini|common era)/i\n};\nvar parseEraPatterns = {\n  any: [/^b/i, /^(a|c)/i]\n};\nvar matchQuarterPatterns = {\n  narrow: /^[1234]/i,\n  abbreviated: /^q[1234]/i,\n  wide: /^[1234](th|st|nd|rd)? quarter/i\n};\nvar parseQuarterPatterns = {\n  any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n  narrow: /^[jfmasond]/i,\n  abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n  wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n};\nvar parseMonthPatterns = {\n  narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n  any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n  narrow: /^[smtwf]/i,\n  short: /^(su|mo|tu|we|th|fr|sa)/i,\n  abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n  wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n};\nvar parseDayPatterns = {\n  narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n  any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n  narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n  any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i\n};\nvar parseDayPeriodPatterns = {\n  any: {\n    am: /^a/i,\n    pm: /^p/i,\n    midnight: /^mi/i,\n    noon: /^no/i,\n    morning: /morning/i,\n    afternoon: /afternoon/i,\n    evening: /evening/i,\n    night: /night/i\n  }\n};\nvar match = {\n  ordinalNumber: (0, _index2.default)({\n    matchPattern: matchOrdinalNumberPattern,\n    parsePattern: parseOrdinalNumberPattern,\n    valueCallback: function valueCallback(value) {\n      return parseInt(value, 10);\n    }\n  }),\n  era: (0, _index.default)({\n    matchPatterns: matchEraPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseEraPatterns,\n    defaultParseWidth: 'any'\n  }),\n  quarter: (0, _index.default)({\n    matchPatterns: matchQuarterPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseQuarterPatterns,\n    defaultParseWidth: 'any',\n    valueCallback: function valueCallback(index) {\n      return index + 1;\n    }\n  }),\n  month: (0, _index.default)({\n    matchPatterns: matchMonthPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseMonthPatterns,\n    defaultParseWidth: 'any'\n  }),\n  day: (0, _index.default)({\n    matchPatterns: matchDayPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseDayPatterns,\n    defaultParseWidth: 'any'\n  }),\n  dayPeriod: (0, _index.default)({\n    matchPatterns: matchDayPeriodPatterns,\n    defaultMatchWidth: 'any',\n    parsePatterns: parseDayPeriodPatterns,\n    defaultParseWidth: 'any'\n  })\n};\nvar _default = match;\nexports.default = _default;\nmodule.exports = exports.default;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _index = _interopRequireDefault(require(\"./_lib/formatDistance/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"./_lib/formatLong/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"./_lib/formatRelative/index.js\"));\nvar _index4 = _interopRequireDefault(require(\"./_lib/localize/index.js\"));\nvar _index5 = _interopRequireDefault(require(\"./_lib/match/index.js\"));\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\nvar locale = {\n  code: 'en-US',\n  formatDistance: _index.default,\n  formatLong: _index2.default,\n  formatRelative: _index3.default,\n  localize: _index4.default,\n  match: _index5.default,\n  options: {\n    weekStartsOn: 0 /* Sunday */,\n    firstWeekContainsDate: 1\n  }\n};\nvar _default = locale;\nexports.default = _default;\nmodule.exports = exports.default;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _index = _interopRequireDefault(require(\"../../locale/en-US/index.js\"));\nvar _default = _index.default;\nexports.default = _default;\nmodule.exports = exports.default;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = format;\nvar _index = _interopRequireDefault(require(\"../isValid/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../subMilliseconds/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../toDate/index.js\"));\nvar _index4 = _interopRequireDefault(require(\"../_lib/format/formatters/index.js\"));\nvar _index5 = _interopRequireDefault(require(\"../_lib/format/longFormatters/index.js\"));\nvar _index6 = _interopRequireDefault(require(\"../_lib/getTimezoneOffsetInMilliseconds/index.js\"));\nvar _index7 = require(\"../_lib/protectedTokens/index.js\");\nvar _index8 = _interopRequireDefault(require(\"../_lib/toInteger/index.js\"));\nvar _index9 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\nvar _index10 = require(\"../_lib/defaultOptions/index.js\");\nvar _index11 = _interopRequireDefault(require(\"../_lib/defaultLocale/index.js\"));\n// This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n//   (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n//   except a single quote symbol, which ends the sequence.\n//   Two quote characters do not end the sequence.\n//   If there is no matching single quote\n//   then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > \u26A0\uFE0F Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit                            | Pattern | Result examples                   | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era                             | G..GGG  | AD, BC                            |       |\n * |                                 | GGGG    | Anno Domini, Before Christ        | 2     |\n * |                                 | GGGGG   | A, B                              |       |\n * | Calendar year                   | y       | 44, 1, 1900, 2017                 | 5     |\n * |                                 | yo      | 44th, 1st, 0th, 17th              | 5,7   |\n * |                                 | yy      | 44, 01, 00, 17                    | 5     |\n * |                                 | yyy     | 044, 001, 1900, 2017              | 5     |\n * |                                 | yyyy    | 0044, 0001, 1900, 2017            | 5     |\n * |                                 | yyyyy   | ...                               | 3,5   |\n * | Local week-numbering year       | Y       | 44, 1, 1900, 2017                 | 5     |\n * |                                 | Yo      | 44th, 1st, 1900th, 2017th         | 5,7   |\n * |                                 | YY      | 44, 01, 00, 17                    | 5,8   |\n * |                                 | YYY     | 044, 001, 1900, 2017              | 5     |\n * |                                 | YYYY    | 0044, 0001, 1900, 2017            | 5,8   |\n * |                                 | YYYYY   | ...                               | 3,5   |\n * | ISO week-numbering year         | R       | -43, 0, 1, 1900, 2017             | 5,7   |\n * |                                 | RR      | -43, 00, 01, 1900, 2017           | 5,7   |\n * |                                 | RRR     | -043, 000, 001, 1900, 2017        | 5,7   |\n * |                                 | RRRR    | -0043, 0000, 0001, 1900, 2017     | 5,7   |\n * |                                 | RRRRR   | ...                               | 3,5,7 |\n * | Extended year                   | u       | -43, 0, 1, 1900, 2017             | 5     |\n * |                                 | uu      | -43, 01, 1900, 2017               | 5     |\n * |                                 | uuu     | -043, 001, 1900, 2017             | 5     |\n * |                                 | uuuu    | -0043, 0001, 1900, 2017           | 5     |\n * |                                 | uuuuu   | ...                               | 3,5   |\n * | Quarter (formatting)            | Q       | 1, 2, 3, 4                        |       |\n * |                                 | Qo      | 1st, 2nd, 3rd, 4th                | 7     |\n * |                                 | QQ      | 01, 02, 03, 04                    |       |\n * |                                 | QQQ     | Q1, Q2, Q3, Q4                    |       |\n * |                                 | QQQQ    | 1st quarter, 2nd quarter, ...     | 2     |\n * |                                 | QQQQQ   | 1, 2, 3, 4                        | 4     |\n * | Quarter (stand-alone)           | q       | 1, 2, 3, 4                        |       |\n * |                                 | qo      | 1st, 2nd, 3rd, 4th                | 7     |\n * |                                 | qq      | 01, 02, 03, 04                    |       |\n * |                                 | qqq     | Q1, Q2, Q3, Q4                    |       |\n * |                                 | qqqq    | 1st quarter, 2nd quarter, ...     | 2     |\n * |                                 | qqqqq   | 1, 2, 3, 4                        | 4     |\n * | Month (formatting)              | M       | 1, 2, ..., 12                     |       |\n * |                                 | Mo      | 1st, 2nd, ..., 12th               | 7     |\n * |                                 | MM      | 01, 02, ..., 12                   |       |\n * |                                 | MMM     | Jan, Feb, ..., Dec                |       |\n * |                                 | MMMM    | January, February, ..., December  | 2     |\n * |                                 | MMMMM   | J, F, ..., D                      |       |\n * | Month (stand-alone)             | L       | 1, 2, ..., 12                     |       |\n * |                                 | Lo      | 1st, 2nd, ..., 12th               | 7     |\n * |                                 | LL      | 01, 02, ..., 12                   |       |\n * |                                 | LLL     | Jan, Feb, ..., Dec                |       |\n * |                                 | LLLL    | January, February, ..., December  | 2     |\n * |                                 | LLLLL   | J, F, ..., D                      |       |\n * | Local week of year              | w       | 1, 2, ..., 53                     |       |\n * |                                 | wo      | 1st, 2nd, ..., 53th               | 7     |\n * |                                 | ww      | 01, 02, ..., 53                   |       |\n * | ISO week of year                | I       | 1, 2, ..., 53                     | 7     |\n * |                                 | Io      | 1st, 2nd, ..., 53th               | 7     |\n * |                                 | II      | 01, 02, ..., 53                   | 7     |\n * | Day of month                    | d       | 1, 2, ..., 31                     |       |\n * |                                 | do      | 1st, 2nd, ..., 31st               | 7     |\n * |                                 | dd      | 01, 02, ..., 31                   |       |\n * | Day of year                     | D       | 1, 2, ..., 365, 366               | 9     |\n * |                                 | Do      | 1st, 2nd, ..., 365th, 366th       | 7     |\n * |                                 | DD      | 01, 02, ..., 365, 366             | 9     |\n * |                                 | DDD     | 001, 002, ..., 365, 366           |       |\n * |                                 | DDDD    | ...                               | 3     |\n * | Day of week (formatting)        | E..EEE  | Mon, Tue, Wed, ..., Sun           |       |\n * |                                 | EEEE    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 | EEEEE   | M, T, W, T, F, S, S               |       |\n * |                                 | EEEEEE  | Mo, Tu, We, Th, Fr, Sa, Su        |       |\n * | ISO day of week (formatting)    | i       | 1, 2, 3, ..., 7                   | 7     |\n * |                                 | io      | 1st, 2nd, ..., 7th                | 7     |\n * |                                 | ii      | 01, 02, ..., 07                   | 7     |\n * |                                 | iii     | Mon, Tue, Wed, ..., Sun           | 7     |\n * |                                 | iiii    | Monday, Tuesday, ..., Sunday      | 2,7   |\n * |                                 | iiiii   | M, T, W, T, F, S, S               | 7     |\n * |                                 | iiiiii  | Mo, Tu, We, Th, Fr, Sa, Su        | 7     |\n * | Local day of week (formatting)  | e       | 2, 3, 4, ..., 1                   |       |\n * |                                 | eo      | 2nd, 3rd, ..., 1st                | 7     |\n * |                                 | ee      | 02, 03, ..., 01                   |       |\n * |                                 | eee     | Mon, Tue, Wed, ..., Sun           |       |\n * |                                 | eeee    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 | eeeee   | M, T, W, T, F, S, S               |       |\n * |                                 | eeeeee  | Mo, Tu, We, Th, Fr, Sa, Su        |       |\n * | Local day of week (stand-alone) | c       | 2, 3, 4, ..., 1                   |       |\n * |                                 | co      | 2nd, 3rd, ..., 1st                | 7     |\n * |                                 | cc      | 02, 03, ..., 01                   |       |\n * |                                 | ccc     | Mon, Tue, Wed, ..., Sun           |       |\n * |                                 | cccc    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 | ccccc   | M, T, W, T, F, S, S               |       |\n * |                                 | cccccc  | Mo, Tu, We, Th, Fr, Sa, Su        |       |\n * | AM, PM                          | a..aa   | AM, PM                            |       |\n * |                                 | aaa     | am, pm                            |       |\n * |                                 | aaaa    | a.m., p.m.                        | 2     |\n * |                                 | aaaaa   | a, p                              |       |\n * | AM, PM, noon, midnight          | b..bb   | AM, PM, noon, midnight            |       |\n * |                                 | bbb     | am, pm, noon, midnight            |       |\n * |                                 | bbbb    | a.m., p.m., noon, midnight        | 2     |\n * |                                 | bbbbb   | a, p, n, mi                       |       |\n * | Flexible day period             | B..BBB  | at night, in the morning, ...     |       |\n * |                                 | BBBB    | at night, in the morning, ...     | 2     |\n * |                                 | BBBBB   | at night, in the morning, ...     |       |\n * | Hour [1-12]                     | h       | 1, 2, ..., 11, 12                 |       |\n * |                                 | ho      | 1st, 2nd, ..., 11th, 12th         | 7     |\n * |                                 | hh      | 01, 02, ..., 11, 12               |       |\n * | Hour [0-23]                     | H       | 0, 1, 2, ..., 23                  |       |\n * |                                 | Ho      | 0th, 1st, 2nd, ..., 23rd          | 7     |\n * |                                 | HH      | 00, 01, 02, ..., 23               |       |\n * | Hour [0-11]                     | K       | 1, 2, ..., 11, 0                  |       |\n * |                                 | Ko      | 1st, 2nd, ..., 11th, 0th          | 7     |\n * |                                 | KK      | 01, 02, ..., 11, 00               |       |\n * | Hour [1-24]                     | k       | 24, 1, 2, ..., 23                 |       |\n * |                                 | ko      | 24th, 1st, 2nd, ..., 23rd         | 7     |\n * |                                 | kk      | 24, 01, 02, ..., 23               |       |\n * | Minute                          | m       | 0, 1, ..., 59                     |       |\n * |                                 | mo      | 0th, 1st, ..., 59th               | 7     |\n * |                                 | mm      | 00, 01, ..., 59                   |       |\n * | Second                          | s       | 0, 1, ..., 59                     |       |\n * |                                 | so      | 0th, 1st, ..., 59th               | 7     |\n * |                                 | ss      | 00, 01, ..., 59                   |       |\n * | Fraction of second              | S       | 0, 1, ..., 9                      |       |\n * |                                 | SS      | 00, 01, ..., 99                   |       |\n * |                                 | SSS     | 000, 001, ..., 999                |       |\n * |                                 | SSSS    | ...                               | 3     |\n * | Timezone (ISO-8601 w/ Z)        | X       | -08, +0530, Z                     |       |\n * |                                 | XX      | -0800, +0530, Z                   |       |\n * |                                 | XXX     | -08:00, +05:30, Z                 |       |\n * |                                 | XXXX    | -0800, +0530, Z, +123456          | 2     |\n * |                                 | XXXXX   | -08:00, +05:30, Z, +12:34:56      |       |\n * | Timezone (ISO-8601 w/o Z)       | x       | -08, +0530, +00                   |       |\n * |                                 | xx      | -0800, +0530, +0000               |       |\n * |                                 | xxx     | -08:00, +05:30, +00:00            | 2     |\n * |                                 | xxxx    | -0800, +0530, +0000, +123456      |       |\n * |                                 | xxxxx   | -08:00, +05:30, +00:00, +12:34:56 |       |\n * | Timezone (GMT)                  | O...OOO | GMT-8, GMT+5:30, GMT+0            |       |\n * |                                 | OOOO    | GMT-08:00, GMT+05:30, GMT+00:00   | 2     |\n * | Timezone (specific non-locat.)  | z...zzz | GMT-8, GMT+5:30, GMT+0            | 6     |\n * |                                 | zzzz    | GMT-08:00, GMT+05:30, GMT+00:00   | 2,6   |\n * | Seconds timestamp               | t       | 512969520                         | 7     |\n * |                                 | tt      | ...                               | 3,7   |\n * | Milliseconds timestamp          | T       | 512969520900                      | 7     |\n * |                                 | TT      | ...                               | 3,7   |\n * | Long localized date             | P       | 04/29/1453                        | 7     |\n * |                                 | PP      | Apr 29, 1453                      | 7     |\n * |                                 | PPP     | April 29th, 1453                  | 7     |\n * |                                 | PPPP    | Friday, April 29th, 1453          | 2,7   |\n * | Long localized time             | p       | 12:00 AM                          | 7     |\n * |                                 | pp      | 12:00:00 AM                       | 7     |\n * |                                 | ppp     | 12:00:00 AM GMT+2                 | 7     |\n * |                                 | pppp    | 12:00:00 AM GMT+02:00             | 2,7   |\n * | Combination of date and time    | Pp      | 04/29/1453, 12:00 AM              | 7     |\n * |                                 | PPpp    | Apr 29, 1453, 12:00:00 AM         | 7     |\n * |                                 | PPPppp  | April 29th, 1453 at ...           | 7     |\n * |                                 | PPPPpppp| Friday, April 29th, 1453 at ...   | 2,7   |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n *    are the same as \"stand-alone\" units, but are different in some languages.\n *    \"Formatting\" units are declined according to the rules of the language\n *    in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n *    `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n *    `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n *    the single quote characters (see below).\n *    If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n *    the output will be the same as default pattern for this unit, usually\n *    the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n *    are marked with \"2\" in the last column of the table.\n *\n *    `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n *    The output will be padded with zeros to match the length of the pattern.\n *\n *    `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n *    These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n *    | Year | `y` | `u` |\n *    |------|-----|-----|\n *    | AC 1 |   1 |   1 |\n *    | BC 1 |   1 |   0 |\n *    | BC 2 |   2 |  -1 |\n *\n *    Also `yy` always returns the last two digits of a year,\n *    while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n *    | Year | `yy` | `uu` |\n *    |------|------|------|\n *    | 1    |   01 |   01 |\n *    | 14   |   14 |   14 |\n *    | 376  |   76 |  376 |\n *    | 1453 |   53 | 1453 |\n *\n *    The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n *    except local week-numbering years are dependent on `options.weekStartsOn`\n *    and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}\n *    and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n *    so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n *    - `i`: ISO day of week\n *    - `I`: ISO week of year\n *    - `R`: ISO week-numbering year\n *    - `t`: seconds timestamp\n *    - `T`: milliseconds timestamp\n *    - `o`: ordinal number modifier\n *    - `P`: long localized date\n *    - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n *    You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n *    You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @param {Date|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n *   see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n *   see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * const result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n *   locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * const result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\n\nfunction format(dirtyDate, dirtyFormatStr, options) {\n  var _ref, _options$locale, _ref2, _ref3, _ref4, _options$firstWeekCon, _options$locale2, _options$locale2$opti, _defaultOptions$local, _defaultOptions$local2, _ref5, _ref6, _ref7, _options$weekStartsOn, _options$locale3, _options$locale3$opti, _defaultOptions$local3, _defaultOptions$local4;\n  (0, _index9.default)(2, arguments);\n  var formatStr = String(dirtyFormatStr);\n  var defaultOptions = (0, _index10.getDefaultOptions)();\n  var locale = (_ref = (_options$locale = options === null || options === void 0 ? void 0 : options.locale) !== null && _options$locale !== void 0 ? _options$locale : defaultOptions.locale) !== null && _ref !== void 0 ? _ref : _index11.default;\n  var firstWeekContainsDate = (0, _index8.default)((_ref2 = (_ref3 = (_ref4 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale2 = options.locale) === null || _options$locale2 === void 0 ? void 0 : (_options$locale2$opti = _options$locale2.options) === null || _options$locale2$opti === void 0 ? void 0 : _options$locale2$opti.firstWeekContainsDate) !== null && _ref4 !== void 0 ? _ref4 : defaultOptions.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : 1);\n\n  // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n  if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n    throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n  }\n  var weekStartsOn = (0, _index8.default)((_ref5 = (_ref6 = (_ref7 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale3 = options.locale) === null || _options$locale3 === void 0 ? void 0 : (_options$locale3$opti = _options$locale3.options) === null || _options$locale3$opti === void 0 ? void 0 : _options$locale3$opti.weekStartsOn) !== null && _ref7 !== void 0 ? _ref7 : defaultOptions.weekStartsOn) !== null && _ref6 !== void 0 ? _ref6 : (_defaultOptions$local3 = defaultOptions.locale) === null || _defaultOptions$local3 === void 0 ? void 0 : (_defaultOptions$local4 = _defaultOptions$local3.options) === null || _defaultOptions$local4 === void 0 ? void 0 : _defaultOptions$local4.weekStartsOn) !== null && _ref5 !== void 0 ? _ref5 : 0);\n\n  // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n  if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n    throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n  }\n  if (!locale.localize) {\n    throw new RangeError('locale must contain localize property');\n  }\n  if (!locale.formatLong) {\n    throw new RangeError('locale must contain formatLong property');\n  }\n  var originalDate = (0, _index3.default)(dirtyDate);\n  if (!(0, _index.default)(originalDate)) {\n    throw new RangeError('Invalid time value');\n  }\n\n  // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n  // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n  // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n  var timezoneOffset = (0, _index6.default)(originalDate);\n  var utcDate = (0, _index2.default)(originalDate, timezoneOffset);\n  var formatterOptions = {\n    firstWeekContainsDate: firstWeekContainsDate,\n    weekStartsOn: weekStartsOn,\n    locale: locale,\n    _originalDate: originalDate\n  };\n  var result = formatStr.match(longFormattingTokensRegExp).map(function (substring) {\n    var firstCharacter = substring[0];\n    if (firstCharacter === 'p' || firstCharacter === 'P') {\n      var longFormatter = _index5.default[firstCharacter];\n      return longFormatter(substring, locale.formatLong);\n    }\n    return substring;\n  }).join('').match(formattingTokensRegExp).map(function (substring) {\n    // Replace two single quote characters with one single quote character\n    if (substring === \"''\") {\n      return \"'\";\n    }\n    var firstCharacter = substring[0];\n    if (firstCharacter === \"'\") {\n      return cleanEscapedString(substring);\n    }\n    var formatter = _index4.default[firstCharacter];\n    if (formatter) {\n      if (!(options !== null && options !== void 0 && options.useAdditionalWeekYearTokens) && (0, _index7.isProtectedWeekYearToken)(substring)) {\n        (0, _index7.throwProtectedError)(substring, dirtyFormatStr, String(dirtyDate));\n      }\n      if (!(options !== null && options !== void 0 && options.useAdditionalDayOfYearTokens) && (0, _index7.isProtectedDayOfYearToken)(substring)) {\n        (0, _index7.throwProtectedError)(substring, dirtyFormatStr, String(dirtyDate));\n      }\n      return formatter(utcDate, substring, locale.localize, formatterOptions);\n    }\n    if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n      throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n    }\n    return substring;\n  }).join('');\n  return result;\n}\nfunction cleanEscapedString(input) {\n  var matched = input.match(escapedStringRegExp);\n  if (!matched) {\n    return input;\n  }\n  return matched[1].replace(doubleQuoteRegExp, \"'\");\n}\nmodule.exports = exports.default;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = addMinutes;\nvar _index = _interopRequireDefault(require(\"../_lib/toInteger/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../addMilliseconds/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\nvar MILLISECONDS_IN_MINUTE = 60000;\n\n/**\n * @name addMinutes\n * @category Minute Helpers\n * @summary Add the specified number of minutes to the given date.\n *\n * @description\n * Add the specified number of minutes to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of minutes to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the minutes added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 30 minutes to 10 July 2014 12:00:00:\n * const result = addMinutes(new Date(2014, 6, 10, 12, 0), 30)\n * //=> Thu Jul 10 2014 12:30:00\n */\nfunction addMinutes(dirtyDate, dirtyAmount) {\n  (0, _index3.default)(2, arguments);\n  var amount = (0, _index.default)(dirtyAmount);\n  return (0, _index2.default)(dirtyDate, amount * MILLISECONDS_IN_MINUTE);\n}\nmodule.exports = exports.default;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = addHours;\nvar _index = _interopRequireDefault(require(\"../_lib/toInteger/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../addMilliseconds/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\nvar MILLISECONDS_IN_HOUR = 3600000;\n\n/**\n * @name addHours\n * @category Hour Helpers\n * @summary Add the specified number of hours to the given date.\n *\n * @description\n * Add the specified number of hours to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of hours to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the hours added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 2 hours to 10 July 2014 23:00:00:\n * const result = addHours(new Date(2014, 6, 10, 23, 0), 2)\n * //=> Fri Jul 11 2014 01:00:00\n */\nfunction addHours(dirtyDate, dirtyAmount) {\n  (0, _index3.default)(2, arguments);\n  var amount = (0, _index.default)(dirtyAmount);\n  return (0, _index2.default)(dirtyDate, amount * MILLISECONDS_IN_HOUR);\n}\nmodule.exports = exports.default;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = addDays;\nvar _index = _interopRequireDefault(require(\"../_lib/toInteger/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../toDate/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\n/**\n * @name addDays\n * @category Day Helpers\n * @summary Add the specified number of days to the given date.\n *\n * @description\n * Add the specified number of days to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of days to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} - the new date with the days added\n * @throws {TypeError} - 2 arguments required\n *\n * @example\n * // Add 10 days to 1 September 2014:\n * const result = addDays(new Date(2014, 8, 1), 10)\n * //=> Thu Sep 11 2014 00:00:00\n */\nfunction addDays(dirtyDate, dirtyAmount) {\n  (0, _index3.default)(2, arguments);\n  var date = (0, _index2.default)(dirtyDate);\n  var amount = (0, _index.default)(dirtyAmount);\n  if (isNaN(amount)) {\n    return new Date(NaN);\n  }\n  if (!amount) {\n    // If 0 days, no-op to avoid changing times in the hour before end of DST\n    return date;\n  }\n  date.setDate(date.getDate() + amount);\n  return date;\n}\nmodule.exports = exports.default;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = addWeeks;\nvar _index = _interopRequireDefault(require(\"../_lib/toInteger/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../addDays/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\n/**\n * @name addWeeks\n * @category Week Helpers\n * @summary Add the specified number of weeks to the given date.\n *\n * @description\n * Add the specified number of week to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of weeks to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the weeks added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 4 weeks to 1 September 2014:\n * const result = addWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Sep 29 2014 00:00:00\n */\nfunction addWeeks(dirtyDate, dirtyAmount) {\n  (0, _index3.default)(2, arguments);\n  var amount = (0, _index.default)(dirtyAmount);\n  var days = amount * 7;\n  return (0, _index2.default)(dirtyDate, days);\n}\nmodule.exports = exports.default;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = addMonths;\nvar _index = _interopRequireDefault(require(\"../_lib/toInteger/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../toDate/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\n/**\n * @name addMonths\n * @category Month Helpers\n * @summary Add the specified number of months to the given date.\n *\n * @description\n * Add the specified number of months to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of months to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the months added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 5 months to 1 September 2014:\n * const result = addMonths(new Date(2014, 8, 1), 5)\n * //=> Sun Feb 01 2015 00:00:00\n */\nfunction addMonths(dirtyDate, dirtyAmount) {\n  (0, _index3.default)(2, arguments);\n  var date = (0, _index2.default)(dirtyDate);\n  var amount = (0, _index.default)(dirtyAmount);\n  if (isNaN(amount)) {\n    return new Date(NaN);\n  }\n  if (!amount) {\n    // If 0 months, no-op to avoid changing times in the hour before end of DST\n    return date;\n  }\n  var dayOfMonth = date.getDate();\n\n  // The JS Date object supports date math by accepting out-of-bounds values for\n  // month, day, etc. For example, new Date(2020, 0, 0) returns 31 Dec 2019 and\n  // new Date(2020, 13, 1) returns 1 Feb 2021.  This is *almost* the behavior we\n  // want except that dates will wrap around the end of a month, meaning that\n  // new Date(2020, 13, 31) will return 3 Mar 2021 not 28 Feb 2021 as desired. So\n  // we'll default to the end of the desired month by adding 1 to the desired\n  // month and using a date of 0 to back up one day to the end of the desired\n  // month.\n  var endOfDesiredMonth = new Date(date.getTime());\n  endOfDesiredMonth.setMonth(date.getMonth() + amount + 1, 0);\n  var daysInMonth = endOfDesiredMonth.getDate();\n  if (dayOfMonth >= daysInMonth) {\n    // If we're already at the end of the month, then this is the correct date\n    // and we're done.\n    return endOfDesiredMonth;\n  } else {\n    // Otherwise, we now know that setting the original day-of-month value won't\n    // cause an overflow, so set the desired day-of-month. Note that we can't\n    // just set the date of `endOfDesiredMonth` because that object may have had\n    // its time changed in the unusual case where where a DST transition was on\n    // the last day of the month and its local time was in the hour skipped or\n    // repeated next to a DST transition.  So we use `date` instead which is\n    // guaranteed to still have the original time.\n    date.setFullYear(endOfDesiredMonth.getFullYear(), endOfDesiredMonth.getMonth(), dayOfMonth);\n    return date;\n  }\n}\nmodule.exports = exports.default;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = addQuarters;\nvar _index = _interopRequireDefault(require(\"../_lib/toInteger/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../addMonths/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\n/**\n * @name addQuarters\n * @category Quarter Helpers\n * @summary Add the specified number of year quarters to the given date.\n *\n * @description\n * Add the specified number of year quarters to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of quarters to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the quarters added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 1 quarter to 1 September 2014:\n * const result = addQuarters(new Date(2014, 8, 1), 1)\n * //=> Mon Dec 01 2014 00:00:00\n */\nfunction addQuarters(dirtyDate, dirtyAmount) {\n  (0, _index3.default)(2, arguments);\n  var amount = (0, _index.default)(dirtyAmount);\n  var months = amount * 3;\n  return (0, _index2.default)(dirtyDate, months);\n}\nmodule.exports = exports.default;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = addYears;\nvar _index = _interopRequireDefault(require(\"../_lib/toInteger/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../addMonths/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\n/**\n * @name addYears\n * @category Year Helpers\n * @summary Add the specified number of years to the given date.\n *\n * @description\n * Add the specified number of years to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of years to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the years added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 5 years to 1 September 2014:\n * const result = addYears(new Date(2014, 8, 1), 5)\n * //=> Sun Sep 01 2019 00:00:00\n */\nfunction addYears(dirtyDate, dirtyAmount) {\n  (0, _index3.default)(2, arguments);\n  var amount = (0, _index.default)(dirtyAmount);\n  return (0, _index2.default)(dirtyDate, amount * 12);\n}\nmodule.exports = exports.default;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = subDays;\nvar _index = _interopRequireDefault(require(\"../addDays/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../_lib/toInteger/index.js\"));\n/**\n * @name subDays\n * @category Day Helpers\n * @summary Subtract the specified number of days from the given date.\n *\n * @description\n * Subtract the specified number of days from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of days to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the days subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 10 days from 1 September 2014:\n * const result = subDays(new Date(2014, 8, 1), 10)\n * //=> Fri Aug 22 2014 00:00:00\n */\nfunction subDays(dirtyDate, dirtyAmount) {\n  (0, _index2.default)(2, arguments);\n  var amount = (0, _index3.default)(dirtyAmount);\n  return (0, _index.default)(dirtyDate, -amount);\n}\nmodule.exports = exports.default;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = subWeeks;\nvar _index = _interopRequireDefault(require(\"../_lib/toInteger/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../addWeeks/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\n/**\n * @name subWeeks\n * @category Week Helpers\n * @summary Subtract the specified number of weeks from the given date.\n *\n * @description\n * Subtract the specified number of weeks from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of weeks to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the weeks subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 4 weeks from 1 September 2014:\n * const result = subWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Aug 04 2014 00:00:00\n */\nfunction subWeeks(dirtyDate, dirtyAmount) {\n  (0, _index3.default)(2, arguments);\n  var amount = (0, _index.default)(dirtyAmount);\n  return (0, _index2.default)(dirtyDate, -amount);\n}\nmodule.exports = exports.default;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = subMonths;\nvar _index = _interopRequireDefault(require(\"../_lib/toInteger/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../addMonths/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\n/**\n * @name subMonths\n * @category Month Helpers\n * @summary Subtract the specified number of months from the given date.\n *\n * @description\n * Subtract the specified number of months from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of months to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the months subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 5 months from 1 February 2015:\n * const result = subMonths(new Date(2015, 1, 1), 5)\n * //=> Mon Sep 01 2014 00:00:00\n */\nfunction subMonths(dirtyDate, dirtyAmount) {\n  (0, _index3.default)(2, arguments);\n  var amount = (0, _index.default)(dirtyAmount);\n  return (0, _index2.default)(dirtyDate, -amount);\n}\nmodule.exports = exports.default;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = subQuarters;\nvar _index = _interopRequireDefault(require(\"../_lib/toInteger/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../addQuarters/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\n/**\n * @name subQuarters\n * @category Quarter Helpers\n * @summary Subtract the specified number of year quarters from the given date.\n *\n * @description\n * Subtract the specified number of year quarters from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of quarters to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the quarters subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 3 quarters from 1 September 2014:\n * const result = subQuarters(new Date(2014, 8, 1), 3)\n * //=> Sun Dec 01 2013 00:00:00\n */\nfunction subQuarters(dirtyDate, dirtyAmount) {\n  (0, _index3.default)(2, arguments);\n  var amount = (0, _index.default)(dirtyAmount);\n  return (0, _index2.default)(dirtyDate, -amount);\n}\nmodule.exports = exports.default;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = subYears;\nvar _index = _interopRequireDefault(require(\"../_lib/toInteger/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../addYears/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\n/**\n * @name subYears\n * @category Year Helpers\n * @summary Subtract the specified number of years from the given date.\n *\n * @description\n * Subtract the specified number of years from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of years to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the years subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 5 years from 1 September 2014:\n * const result = subYears(new Date(2014, 8, 1), 5)\n * //=> Tue Sep 01 2009 00:00:00\n */\nfunction subYears(dirtyDate, dirtyAmount) {\n  (0, _index3.default)(2, arguments);\n  var amount = (0, _index.default)(dirtyAmount);\n  return (0, _index2.default)(dirtyDate, -amount);\n}\nmodule.exports = exports.default;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = getSeconds;\nvar _index = _interopRequireDefault(require(\"../toDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\n/**\n * @name getSeconds\n * @category Second Helpers\n * @summary Get the seconds of the given date.\n *\n * @description\n * Get the seconds of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the seconds\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the seconds of 29 February 2012 11:45:05.123:\n * const result = getSeconds(new Date(2012, 1, 29, 11, 45, 5, 123))\n * //=> 5\n */\nfunction getSeconds(dirtyDate) {\n  (0, _index2.default)(1, arguments);\n  var date = (0, _index.default)(dirtyDate);\n  var seconds = date.getSeconds();\n  return seconds;\n}\nmodule.exports = exports.default;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = getMinutes;\nvar _index = _interopRequireDefault(require(\"../toDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\n/**\n * @name getMinutes\n * @category Minute Helpers\n * @summary Get the minutes of the given date.\n *\n * @description\n * Get the minutes of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the minutes\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the minutes of 29 February 2012 11:45:05:\n * const result = getMinutes(new Date(2012, 1, 29, 11, 45, 5))\n * //=> 45\n */\nfunction getMinutes(dirtyDate) {\n  (0, _index2.default)(1, arguments);\n  var date = (0, _index.default)(dirtyDate);\n  var minutes = date.getMinutes();\n  return minutes;\n}\nmodule.exports = exports.default;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = getHours;\nvar _index = _interopRequireDefault(require(\"../toDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\n/**\n * @name getHours\n * @category Hour Helpers\n * @summary Get the hours of the given date.\n *\n * @description\n * Get the hours of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the hours\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the hours of 29 February 2012 11:45:00:\n * const result = getHours(new Date(2012, 1, 29, 11, 45))\n * //=> 11\n */\nfunction getHours(dirtyDate) {\n  (0, _index2.default)(1, arguments);\n  var date = (0, _index.default)(dirtyDate);\n  var hours = date.getHours();\n  return hours;\n}\nmodule.exports = exports.default;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = getDay;\nvar _index = _interopRequireDefault(require(\"../toDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\n/**\n * @name getDay\n * @category Weekday Helpers\n * @summary Get the day of the week of the given date.\n *\n * @description\n * Get the day of the week of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {0|1|2|3|4|5|6} the day of week, 0 represents Sunday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which day of the week is 29 February 2012?\n * const result = getDay(new Date(2012, 1, 29))\n * //=> 3\n */\nfunction getDay(dirtyDate) {\n  (0, _index2.default)(1, arguments);\n  var date = (0, _index.default)(dirtyDate);\n  var day = date.getDay();\n  return day;\n}\nmodule.exports = exports.default;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = getDate;\nvar _index = _interopRequireDefault(require(\"../toDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\n/**\n * @name getDate\n * @category Day Helpers\n * @summary Get the day of the month of the given date.\n *\n * @description\n * Get the day of the month of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the day of month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which day of the month is 29 February 2012?\n * const result = getDate(new Date(2012, 1, 29))\n * //=> 29\n */\nfunction getDate(dirtyDate) {\n  (0, _index2.default)(1, arguments);\n  var date = (0, _index.default)(dirtyDate);\n  var dayOfMonth = date.getDate();\n  return dayOfMonth;\n}\nmodule.exports = exports.default;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = startOfWeek;\nvar _index = _interopRequireDefault(require(\"../toDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../_lib/toInteger/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\nvar _index4 = require(\"../_lib/defaultOptions/index.js\");\n/**\n * @name startOfWeek\n * @category Week Helpers\n * @summary Return the start of a week for the given date.\n *\n * @description\n * Return the start of a week for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date} the start of a week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // The start of a week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the start of the week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Mon Sep 01 2014 00:00:00\n */\nfunction startOfWeek(dirtyDate, options) {\n  var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n  (0, _index3.default)(1, arguments);\n  var defaultOptions = (0, _index4.getDefaultOptions)();\n  var weekStartsOn = (0, _index2.default)((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n  // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n  if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n    throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n  }\n  var date = (0, _index.default)(dirtyDate);\n  var day = date.getDay();\n  var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n  date.setDate(date.getDate() - diff);\n  date.setHours(0, 0, 0, 0);\n  return date;\n}\nmodule.exports = exports.default;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = startOfISOWeek;\nvar _index = _interopRequireDefault(require(\"../startOfWeek/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\n/**\n * @name startOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the start of an ISO week for the given date.\n *\n * @description\n * Return the start of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of an ISO week\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of an ISO week for 2 September 2014 11:55:00:\n * const result = startOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nfunction startOfISOWeek(dirtyDate) {\n  (0, _index2.default)(1, arguments);\n  return (0, _index.default)(dirtyDate, {\n    weekStartsOn: 1\n  });\n}\nmodule.exports = exports.default;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = getISOWeekYear;\nvar _index = _interopRequireDefault(require(\"../toDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../startOfISOWeek/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\n/**\n * @name getISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the ISO week-numbering year of the given date.\n *\n * @description\n * Get the ISO week-numbering year of the given date,\n * which always starts 3 days before the year's first Thursday.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the ISO week-numbering year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which ISO-week numbering year is 2 January 2005?\n * const result = getISOWeekYear(new Date(2005, 0, 2))\n * //=> 2004\n */\nfunction getISOWeekYear(dirtyDate) {\n  (0, _index3.default)(1, arguments);\n  var date = (0, _index.default)(dirtyDate);\n  var year = date.getFullYear();\n  var fourthOfJanuaryOfNextYear = new Date(0);\n  fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4);\n  fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0);\n  var startOfNextYear = (0, _index2.default)(fourthOfJanuaryOfNextYear);\n  var fourthOfJanuaryOfThisYear = new Date(0);\n  fourthOfJanuaryOfThisYear.setFullYear(year, 0, 4);\n  fourthOfJanuaryOfThisYear.setHours(0, 0, 0, 0);\n  var startOfThisYear = (0, _index2.default)(fourthOfJanuaryOfThisYear);\n  if (date.getTime() >= startOfNextYear.getTime()) {\n    return year + 1;\n  } else if (date.getTime() >= startOfThisYear.getTime()) {\n    return year;\n  } else {\n    return year - 1;\n  }\n}\nmodule.exports = exports.default;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = startOfISOWeekYear;\nvar _index = _interopRequireDefault(require(\"../getISOWeekYear/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../startOfISOWeek/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\n/**\n * @name startOfISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the start of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the start of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of an ISO week-numbering year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of an ISO week-numbering year for 2 July 2005:\n * const result = startOfISOWeekYear(new Date(2005, 6, 2))\n * //=> Mon Jan 03 2005 00:00:00\n */\nfunction startOfISOWeekYear(dirtyDate) {\n  (0, _index3.default)(1, arguments);\n  var year = (0, _index.default)(dirtyDate);\n  var fourthOfJanuary = new Date(0);\n  fourthOfJanuary.setFullYear(year, 0, 4);\n  fourthOfJanuary.setHours(0, 0, 0, 0);\n  var date = (0, _index2.default)(fourthOfJanuary);\n  return date;\n}\nmodule.exports = exports.default;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = getISOWeek;\nvar _index = _interopRequireDefault(require(\"../toDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../startOfISOWeek/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../startOfISOWeekYear/index.js\"));\nvar _index4 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\nvar MILLISECONDS_IN_WEEK = 604800000;\n\n/**\n * @name getISOWeek\n * @category ISO Week Helpers\n * @summary Get the ISO week of the given date.\n *\n * @description\n * Get the ISO week of the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the ISO week\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which week of the ISO-week numbering year is 2 January 2005?\n * const result = getISOWeek(new Date(2005, 0, 2))\n * //=> 53\n */\nfunction getISOWeek(dirtyDate) {\n  (0, _index4.default)(1, arguments);\n  var date = (0, _index.default)(dirtyDate);\n  var diff = (0, _index2.default)(date).getTime() - (0, _index3.default)(date).getTime();\n\n  // Round the number of days to the nearest integer\n  // because the number of milliseconds in a week is not constant\n  // (e.g. it's different in the week of the daylight saving time clock shift)\n  return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}\nmodule.exports = exports.default;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = getMonth;\nvar _index = _interopRequireDefault(require(\"../toDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\n/**\n * @name getMonth\n * @category Month Helpers\n * @summary Get the month of the given date.\n *\n * @description\n * Get the month of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which month is 29 February 2012?\n * const result = getMonth(new Date(2012, 1, 29))\n * //=> 1\n */\nfunction getMonth(dirtyDate) {\n  (0, _index2.default)(1, arguments);\n  var date = (0, _index.default)(dirtyDate);\n  var month = date.getMonth();\n  return month;\n}\nmodule.exports = exports.default;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = getQuarter;\nvar _index = _interopRequireDefault(require(\"../toDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\n/**\n * @name getQuarter\n * @category Quarter Helpers\n * @summary Get the year quarter of the given date.\n *\n * @description\n * Get the year quarter of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the quarter\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which quarter is 2 July 2014?\n * const result = getQuarter(new Date(2014, 6, 2))\n * //=> 3\n */\nfunction getQuarter(dirtyDate) {\n  (0, _index2.default)(1, arguments);\n  var date = (0, _index.default)(dirtyDate);\n  var quarter = Math.floor(date.getMonth() / 3) + 1;\n  return quarter;\n}\nmodule.exports = exports.default;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = getYear;\nvar _index = _interopRequireDefault(require(\"../toDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\n/**\n * @name getYear\n * @category Year Helpers\n * @summary Get the year of the given date.\n *\n * @description\n * Get the year of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which year is 2 July 2014?\n * const result = getYear(new Date(2014, 6, 2))\n * //=> 2014\n */\nfunction getYear(dirtyDate) {\n  (0, _index2.default)(1, arguments);\n  return (0, _index.default)(dirtyDate).getFullYear();\n}\nmodule.exports = exports.default;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = getTime;\nvar _index = _interopRequireDefault(require(\"../toDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\n/**\n * @name getTime\n * @category Timestamp Helpers\n * @summary Get the milliseconds timestamp of the given date.\n *\n * @description\n * Get the milliseconds timestamp of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the timestamp\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the timestamp of 29 February 2012 11:45:05.123:\n * const result = getTime(new Date(2012, 1, 29, 11, 45, 5, 123))\n * //=> 1330515905123\n */\nfunction getTime(dirtyDate) {\n  (0, _index2.default)(1, arguments);\n  var date = (0, _index.default)(dirtyDate);\n  var timestamp = date.getTime();\n  return timestamp;\n}\nmodule.exports = exports.default;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = setSeconds;\nvar _index = _interopRequireDefault(require(\"../_lib/toInteger/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../toDate/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\n/**\n * @name setSeconds\n * @category Second Helpers\n * @summary Set the seconds to the given date.\n *\n * @description\n * Set the seconds to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} seconds - the seconds of the new date\n * @returns {Date} the new date with the seconds set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set 45 seconds to 1 September 2014 11:30:40:\n * const result = setSeconds(new Date(2014, 8, 1, 11, 30, 40), 45)\n * //=> Mon Sep 01 2014 11:30:45\n */\nfunction setSeconds(dirtyDate, dirtySeconds) {\n  (0, _index3.default)(2, arguments);\n  var date = (0, _index2.default)(dirtyDate);\n  var seconds = (0, _index.default)(dirtySeconds);\n  date.setSeconds(seconds);\n  return date;\n}\nmodule.exports = exports.default;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = setMinutes;\nvar _index = _interopRequireDefault(require(\"../_lib/toInteger/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../toDate/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\n/**\n * @name setMinutes\n * @category Minute Helpers\n * @summary Set the minutes to the given date.\n *\n * @description\n * Set the minutes to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} minutes - the minutes of the new date\n * @returns {Date} the new date with the minutes set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set 45 minutes to 1 September 2014 11:30:40:\n * const result = setMinutes(new Date(2014, 8, 1, 11, 30, 40), 45)\n * //=> Mon Sep 01 2014 11:45:40\n */\nfunction setMinutes(dirtyDate, dirtyMinutes) {\n  (0, _index3.default)(2, arguments);\n  var date = (0, _index2.default)(dirtyDate);\n  var minutes = (0, _index.default)(dirtyMinutes);\n  date.setMinutes(minutes);\n  return date;\n}\nmodule.exports = exports.default;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = setHours;\nvar _index = _interopRequireDefault(require(\"../_lib/toInteger/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../toDate/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\n/**\n * @name setHours\n * @category Hour Helpers\n * @summary Set the hours to the given date.\n *\n * @description\n * Set the hours to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} hours - the hours of the new date\n * @returns {Date} the new date with the hours set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set 4 hours to 1 September 2014 11:30:00:\n * const result = setHours(new Date(2014, 8, 1, 11, 30), 4)\n * //=> Mon Sep 01 2014 04:30:00\n */\nfunction setHours(dirtyDate, dirtyHours) {\n  (0, _index3.default)(2, arguments);\n  var date = (0, _index2.default)(dirtyDate);\n  var hours = (0, _index.default)(dirtyHours);\n  date.setHours(hours);\n  return date;\n}\nmodule.exports = exports.default;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = getDaysInMonth;\nvar _index = _interopRequireDefault(require(\"../toDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\n/**\n * @name getDaysInMonth\n * @category Month Helpers\n * @summary Get the number of days in a month of the given date.\n *\n * @description\n * Get the number of days in a month of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the number of days in a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // How many days are in February 2000?\n * const result = getDaysInMonth(new Date(2000, 1))\n * //=> 29\n */\nfunction getDaysInMonth(dirtyDate) {\n  (0, _index2.default)(1, arguments);\n  var date = (0, _index.default)(dirtyDate);\n  var year = date.getFullYear();\n  var monthIndex = date.getMonth();\n  var lastDayOfMonth = new Date(0);\n  lastDayOfMonth.setFullYear(year, monthIndex + 1, 0);\n  lastDayOfMonth.setHours(0, 0, 0, 0);\n  return lastDayOfMonth.getDate();\n}\nmodule.exports = exports.default;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = setMonth;\nvar _index = _interopRequireDefault(require(\"../_lib/toInteger/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../toDate/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../getDaysInMonth/index.js\"));\nvar _index4 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\n/**\n * @name setMonth\n * @category Month Helpers\n * @summary Set the month to the given date.\n *\n * @description\n * Set the month to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} month - the month of the new date\n * @returns {Date} the new date with the month set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set February to 1 September 2014:\n * const result = setMonth(new Date(2014, 8, 1), 1)\n * //=> Sat Feb 01 2014 00:00:00\n */\nfunction setMonth(dirtyDate, dirtyMonth) {\n  (0, _index4.default)(2, arguments);\n  var date = (0, _index2.default)(dirtyDate);\n  var month = (0, _index.default)(dirtyMonth);\n  var year = date.getFullYear();\n  var day = date.getDate();\n  var dateWithDesiredMonth = new Date(0);\n  dateWithDesiredMonth.setFullYear(year, month, 15);\n  dateWithDesiredMonth.setHours(0, 0, 0, 0);\n  var daysInMonth = (0, _index3.default)(dateWithDesiredMonth);\n  // Set the last day of the new month\n  // if the original date was the last day of the longer month\n  date.setMonth(month, Math.min(day, daysInMonth));\n  return date;\n}\nmodule.exports = exports.default;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = setQuarter;\nvar _index = _interopRequireDefault(require(\"../_lib/toInteger/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../toDate/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../setMonth/index.js\"));\nvar _index4 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\n/**\n * @name setQuarter\n * @category Quarter Helpers\n * @summary Set the year quarter to the given date.\n *\n * @description\n * Set the year quarter to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} quarter - the quarter of the new date\n * @returns {Date} the new date with the quarter set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set the 2nd quarter to 2 July 2014:\n * const result = setQuarter(new Date(2014, 6, 2), 2)\n * //=> Wed Apr 02 2014 00:00:00\n */\nfunction setQuarter(dirtyDate, dirtyQuarter) {\n  (0, _index4.default)(2, arguments);\n  var date = (0, _index2.default)(dirtyDate);\n  var quarter = (0, _index.default)(dirtyQuarter);\n  var oldQuarter = Math.floor(date.getMonth() / 3) + 1;\n  var diff = quarter - oldQuarter;\n  return (0, _index3.default)(date, date.getMonth() + diff * 3);\n}\nmodule.exports = exports.default;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = setYear;\nvar _index = _interopRequireDefault(require(\"../_lib/toInteger/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../toDate/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\n/**\n * @name setYear\n * @category Year Helpers\n * @summary Set the year to the given date.\n *\n * @description\n * Set the year to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} year - the year of the new date\n * @returns {Date} the new date with the year set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set year 2013 to 1 September 2014:\n * const result = setYear(new Date(2014, 8, 1), 2013)\n * //=> Sun Sep 01 2013 00:00:00\n */\nfunction setYear(dirtyDate, dirtyYear) {\n  (0, _index3.default)(2, arguments);\n  var date = (0, _index2.default)(dirtyDate);\n  var year = (0, _index.default)(dirtyYear);\n\n  // Check if date is Invalid Date because Date.prototype.setFullYear ignores the value of Invalid Date\n  if (isNaN(date.getTime())) {\n    return new Date(NaN);\n  }\n  date.setFullYear(year);\n  return date;\n}\nmodule.exports = exports.default;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = min;\nvar _typeof2 = _interopRequireDefault(require(\"@babel/runtime/helpers/typeof\"));\nvar _index = _interopRequireDefault(require(\"../toDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\n/**\n * @name min\n * @category Common Helpers\n * @summary Returns the earliest of the given dates.\n *\n * @description\n * Returns the earliest of the given dates.\n *\n * @param {Date[]|Number[]} datesArray - the dates to compare\n * @returns {Date} - the earliest of the dates\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which of these dates is the earliest?\n * const result = min([\n *   new Date(1989, 6, 10),\n *   new Date(1987, 1, 11),\n *   new Date(1995, 6, 2),\n *   new Date(1990, 0, 1)\n * ])\n * //=> Wed Feb 11 1987 00:00:00\n */\nfunction min(dirtyDatesArray) {\n  (0, _index2.default)(1, arguments);\n  var datesArray;\n  // `dirtyDatesArray` is Array, Set or Map, or object with custom `forEach` method\n  if (dirtyDatesArray && typeof dirtyDatesArray.forEach === 'function') {\n    datesArray = dirtyDatesArray;\n    // If `dirtyDatesArray` is Array-like Object, convert to Array.\n  } else if ((0, _typeof2.default)(dirtyDatesArray) === 'object' && dirtyDatesArray !== null) {\n    datesArray = Array.prototype.slice.call(dirtyDatesArray);\n  } else {\n    // `dirtyDatesArray` is non-iterable, return Invalid Date\n    return new Date(NaN);\n  }\n  var result;\n  datesArray.forEach(function (dirtyDate) {\n    var currentDate = (0, _index.default)(dirtyDate);\n    if (result === undefined || result > currentDate || isNaN(currentDate.getDate())) {\n      result = currentDate;\n    }\n  });\n  return result || new Date(NaN);\n}\nmodule.exports = exports.default;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = max;\nvar _typeof2 = _interopRequireDefault(require(\"@babel/runtime/helpers/typeof\"));\nvar _index = _interopRequireDefault(require(\"../toDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\n/**\n * @name max\n * @category Common Helpers\n * @summary Return the latest of the given dates.\n *\n * @description\n * Return the latest of the given dates.\n *\n * @param {Date[]|Number[]} datesArray - the dates to compare\n * @returns {Date} the latest of the dates\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which of these dates is the latest?\n * const result = max([\n *   new Date(1989, 6, 10),\n *   new Date(1987, 1, 11),\n *   new Date(1995, 6, 2),\n *   new Date(1990, 0, 1)\n * ])\n * //=> Sun Jul 02 1995 00:00:00\n */\nfunction max(dirtyDatesArray) {\n  (0, _index2.default)(1, arguments);\n  var datesArray;\n  // `dirtyDatesArray` is Array, Set or Map, or object with custom `forEach` method\n  if (dirtyDatesArray && typeof dirtyDatesArray.forEach === 'function') {\n    datesArray = dirtyDatesArray;\n\n    // If `dirtyDatesArray` is Array-like Object, convert to Array.\n  } else if ((0, _typeof2.default)(dirtyDatesArray) === 'object' && dirtyDatesArray !== null) {\n    datesArray = Array.prototype.slice.call(dirtyDatesArray);\n  } else {\n    // `dirtyDatesArray` is non-iterable, return Invalid Date\n    return new Date(NaN);\n  }\n  var result;\n  datesArray.forEach(function (dirtyDate) {\n    var currentDate = (0, _index.default)(dirtyDate);\n    if (result === undefined || result < currentDate || isNaN(Number(currentDate))) {\n      result = currentDate;\n    }\n  });\n  return result || new Date(NaN);\n}\nmodule.exports = exports.default;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = startOfDay;\nvar _index = _interopRequireDefault(require(\"../toDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\n/**\n * @name startOfDay\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a day\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\nfunction startOfDay(dirtyDate) {\n  (0, _index2.default)(1, arguments);\n  var date = (0, _index.default)(dirtyDate);\n  date.setHours(0, 0, 0, 0);\n  return date;\n}\nmodule.exports = exports.default;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = differenceInCalendarDays;\nvar _index = _interopRequireDefault(require(\"../_lib/getTimezoneOffsetInMilliseconds/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../startOfDay/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\nvar MILLISECONDS_IN_DAY = 86400000;\n\n/**\n * @name differenceInCalendarDays\n * @category Day Helpers\n * @summary Get the number of calendar days between the given dates.\n *\n * @description\n * Get the number of calendar days between the given dates. This means that the times are removed\n * from the dates and then the difference in days is calculated.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar days\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInCalendarDays(\n *   new Date(2012, 6, 2, 0, 0),\n *   new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 366\n * // How many calendar days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInCalendarDays(\n *   new Date(2011, 6, 3, 0, 1),\n *   new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 1\n */\nfunction differenceInCalendarDays(dirtyDateLeft, dirtyDateRight) {\n  (0, _index3.default)(2, arguments);\n  var startOfDayLeft = (0, _index2.default)(dirtyDateLeft);\n  var startOfDayRight = (0, _index2.default)(dirtyDateRight);\n  var timestampLeft = startOfDayLeft.getTime() - (0, _index.default)(startOfDayLeft);\n  var timestampRight = startOfDayRight.getTime() - (0, _index.default)(startOfDayRight);\n\n  // Round the number of days to the nearest integer\n  // because the number of milliseconds in a day is not constant\n  // (e.g. it's different in the day of the daylight saving time clock shift)\n  return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_DAY);\n}\nmodule.exports = exports.default;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = differenceInCalendarMonths;\nvar _index = _interopRequireDefault(require(\"../toDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\n/**\n * @name differenceInCalendarMonths\n * @category Month Helpers\n * @summary Get the number of calendar months between the given dates.\n *\n * @description\n * Get the number of calendar months between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar months\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar months are between 31 January 2014 and 1 September 2014?\n * const result = differenceInCalendarMonths(\n *   new Date(2014, 8, 1),\n *   new Date(2014, 0, 31)\n * )\n * //=> 8\n */\nfunction differenceInCalendarMonths(dirtyDateLeft, dirtyDateRight) {\n  (0, _index2.default)(2, arguments);\n  var dateLeft = (0, _index.default)(dirtyDateLeft);\n  var dateRight = (0, _index.default)(dirtyDateRight);\n  var yearDiff = dateLeft.getFullYear() - dateRight.getFullYear();\n  var monthDiff = dateLeft.getMonth() - dateRight.getMonth();\n  return yearDiff * 12 + monthDiff;\n}\nmodule.exports = exports.default;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = differenceInCalendarYears;\nvar _index = _interopRequireDefault(require(\"../toDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\n/**\n * @name differenceInCalendarYears\n * @category Year Helpers\n * @summary Get the number of calendar years between the given dates.\n *\n * @description\n * Get the number of calendar years between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar years\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar years are between 31 December 2013 and 11 February 2015?\n * const result = differenceInCalendarYears(\n *   new Date(2015, 1, 11),\n *   new Date(2013, 11, 31)\n * )\n * //=> 2\n */\nfunction differenceInCalendarYears(dirtyDateLeft, dirtyDateRight) {\n  (0, _index2.default)(2, arguments);\n  var dateLeft = (0, _index.default)(dirtyDateLeft);\n  var dateRight = (0, _index.default)(dirtyDateRight);\n  return dateLeft.getFullYear() - dateRight.getFullYear();\n}\nmodule.exports = exports.default;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = startOfMonth;\nvar _index = _interopRequireDefault(require(\"../toDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\n/**\n * @name startOfMonth\n * @category Month Helpers\n * @summary Return the start of a month for the given date.\n *\n * @description\n * Return the start of a month for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a month for 2 September 2014 11:55:00:\n * const result = startOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nfunction startOfMonth(dirtyDate) {\n  (0, _index2.default)(1, arguments);\n  var date = (0, _index.default)(dirtyDate);\n  date.setDate(1);\n  date.setHours(0, 0, 0, 0);\n  return date;\n}\nmodule.exports = exports.default;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = startOfQuarter;\nvar _index = _interopRequireDefault(require(\"../toDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\n/**\n * @name startOfQuarter\n * @category Quarter Helpers\n * @summary Return the start of a year quarter for the given date.\n *\n * @description\n * Return the start of a year quarter for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a quarter\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a quarter for 2 September 2014 11:55:00:\n * const result = startOfQuarter(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Jul 01 2014 00:00:00\n */\nfunction startOfQuarter(dirtyDate) {\n  (0, _index2.default)(1, arguments);\n  var date = (0, _index.default)(dirtyDate);\n  var currentMonth = date.getMonth();\n  var month = currentMonth - currentMonth % 3;\n  date.setMonth(month, 1);\n  date.setHours(0, 0, 0, 0);\n  return date;\n}\nmodule.exports = exports.default;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = startOfYear;\nvar _index = _interopRequireDefault(require(\"../toDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\n/**\n * @name startOfYear\n * @category Year Helpers\n * @summary Return the start of a year for the given date.\n *\n * @description\n * Return the start of a year for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a year for 2 September 2014 11:55:00:\n * const result = startOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Jan 01 2014 00:00:00\n */\nfunction startOfYear(dirtyDate) {\n  (0, _index2.default)(1, arguments);\n  var cleanDate = (0, _index.default)(dirtyDate);\n  var date = new Date(0);\n  date.setFullYear(cleanDate.getFullYear(), 0, 1);\n  date.setHours(0, 0, 0, 0);\n  return date;\n}\nmodule.exports = exports.default;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = endOfDay;\nvar _index = _interopRequireDefault(require(\"../toDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\n/**\n * @name endOfDay\n * @category Day Helpers\n * @summary Return the end of a day for the given date.\n *\n * @description\n * Return the end of a day for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a day\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a day for 2 September 2014 11:55:00:\n * const result = endOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 23:59:59.999\n */\nfunction endOfDay(dirtyDate) {\n  (0, _index2.default)(1, arguments);\n  var date = (0, _index.default)(dirtyDate);\n  date.setHours(23, 59, 59, 999);\n  return date;\n}\nmodule.exports = exports.default;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = endOfWeek;\nvar _index = require(\"../_lib/defaultOptions/index.js\");\nvar _index2 = _interopRequireDefault(require(\"../toDate/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../_lib/toInteger/index.js\"));\nvar _index4 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\n/**\n * @name endOfWeek\n * @category Week Helpers\n * @summary Return the end of a week for the given date.\n *\n * @description\n * Return the end of a week for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date} the end of a week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // The end of a week for 2 September 2014 11:55:00:\n * const result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sat Sep 06 2014 23:59:59.999\n *\n * @example\n * // If the week starts on Monday, the end of the week for 2 September 2014 11:55:00:\n * const result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Sun Sep 07 2014 23:59:59.999\n */\nfunction endOfWeek(dirtyDate, options) {\n  var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n  (0, _index4.default)(1, arguments);\n  var defaultOptions = (0, _index.getDefaultOptions)();\n  var weekStartsOn = (0, _index3.default)((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n  // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n  if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n    throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n  }\n  var date = (0, _index2.default)(dirtyDate);\n  var day = date.getDay();\n  var diff = (day < weekStartsOn ? -7 : 0) + 6 - (day - weekStartsOn);\n  date.setDate(date.getDate() + diff);\n  date.setHours(23, 59, 59, 999);\n  return date;\n}\nmodule.exports = exports.default;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = endOfMonth;\nvar _index = _interopRequireDefault(require(\"../toDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\n/**\n * @name endOfMonth\n * @category Month Helpers\n * @summary Return the end of a month for the given date.\n *\n * @description\n * Return the end of a month for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a month for 2 September 2014 11:55:00:\n * const result = endOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\nfunction endOfMonth(dirtyDate) {\n  (0, _index2.default)(1, arguments);\n  var date = (0, _index.default)(dirtyDate);\n  var month = date.getMonth();\n  date.setFullYear(date.getFullYear(), month + 1, 0);\n  date.setHours(23, 59, 59, 999);\n  return date;\n}\nmodule.exports = exports.default;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = endOfYear;\nvar _index = _interopRequireDefault(require(\"../toDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\n/**\n * @name endOfYear\n * @category Year Helpers\n * @summary Return the end of a year for the given date.\n *\n * @description\n * Return the end of a year for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a year for 2 September 2014 11:55:00:\n * const result = endOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Dec 31 2014 23:59:59.999\n */\nfunction endOfYear(dirtyDate) {\n  (0, _index2.default)(1, arguments);\n  var date = (0, _index.default)(dirtyDate);\n  var year = date.getFullYear();\n  date.setFullYear(year + 1, 0, 0);\n  date.setHours(23, 59, 59, 999);\n  return date;\n}\nmodule.exports = exports.default;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = isEqual;\nvar _index = _interopRequireDefault(require(\"../toDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\n/**\n * @name isEqual\n * @category Common Helpers\n * @summary Are the given dates equal?\n *\n * @description\n * Are the given dates equal?\n *\n * @param {Date|Number} dateLeft - the first date to compare\n * @param {Date|Number} dateRight - the second date to compare\n * @returns {Boolean} the dates are equal\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 2 July 2014 06:30:45.000 and 2 July 2014 06:30:45.500 equal?\n * const result = isEqual(\n *   new Date(2014, 6, 2, 6, 30, 45, 0),\n *   new Date(2014, 6, 2, 6, 30, 45, 500)\n * )\n * //=> false\n */\nfunction isEqual(dirtyLeftDate, dirtyRightDate) {\n  (0, _index2.default)(2, arguments);\n  var dateLeft = (0, _index.default)(dirtyLeftDate);\n  var dateRight = (0, _index.default)(dirtyRightDate);\n  return dateLeft.getTime() === dateRight.getTime();\n}\nmodule.exports = exports.default;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = isSameDay;\nvar _index = _interopRequireDefault(require(\"../startOfDay/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\n/**\n * @name isSameDay\n * @category Day Helpers\n * @summary Are the given dates in the same day (and year and month)?\n *\n * @description\n * Are the given dates in the same day (and year and month)?\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same day (and year and month)\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 4 September 06:00:00 and 4 September 18:00:00 in the same day?\n * const result = isSameDay(new Date(2014, 8, 4, 6, 0), new Date(2014, 8, 4, 18, 0))\n * //=> true\n *\n * @example\n * // Are 4 September and 4 October in the same day?\n * const result = isSameDay(new Date(2014, 8, 4), new Date(2014, 9, 4))\n * //=> false\n *\n * @example\n * // Are 4 September, 2014 and 4 September, 2015 in the same day?\n * const result = isSameDay(new Date(2014, 8, 4), new Date(2015, 8, 4))\n * //=> false\n */\nfunction isSameDay(dirtyDateLeft, dirtyDateRight) {\n  (0, _index2.default)(2, arguments);\n  var dateLeftStartOfDay = (0, _index.default)(dirtyDateLeft);\n  var dateRightStartOfDay = (0, _index.default)(dirtyDateRight);\n  return dateLeftStartOfDay.getTime() === dateRightStartOfDay.getTime();\n}\nmodule.exports = exports.default;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = isSameMonth;\nvar _index = _interopRequireDefault(require(\"../toDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\n/**\n * @name isSameMonth\n * @category Month Helpers\n * @summary Are the given dates in the same month (and year)?\n *\n * @description\n * Are the given dates in the same month (and year)?\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same month (and year)\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 2 September 2014 and 25 September 2014 in the same month?\n * const result = isSameMonth(new Date(2014, 8, 2), new Date(2014, 8, 25))\n * //=> true\n *\n * @example\n * // Are 2 September 2014 and 25 September 2015 in the same month?\n * const result = isSameMonth(new Date(2014, 8, 2), new Date(2015, 8, 25))\n * //=> false\n */\nfunction isSameMonth(dirtyDateLeft, dirtyDateRight) {\n  (0, _index2.default)(2, arguments);\n  var dateLeft = (0, _index.default)(dirtyDateLeft);\n  var dateRight = (0, _index.default)(dirtyDateRight);\n  return dateLeft.getFullYear() === dateRight.getFullYear() && dateLeft.getMonth() === dateRight.getMonth();\n}\nmodule.exports = exports.default;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = isSameYear;\nvar _index = _interopRequireDefault(require(\"../toDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\n/**\n * @name isSameYear\n * @category Year Helpers\n * @summary Are the given dates in the same year?\n *\n * @description\n * Are the given dates in the same year?\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same year\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 2 September 2014 and 25 September 2014 in the same year?\n * const result = isSameYear(new Date(2014, 8, 2), new Date(2014, 8, 25))\n * //=> true\n */\nfunction isSameYear(dirtyDateLeft, dirtyDateRight) {\n  (0, _index2.default)(2, arguments);\n  var dateLeft = (0, _index.default)(dirtyDateLeft);\n  var dateRight = (0, _index.default)(dirtyDateRight);\n  return dateLeft.getFullYear() === dateRight.getFullYear();\n}\nmodule.exports = exports.default;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = isSameQuarter;\nvar _index = _interopRequireDefault(require(\"../startOfQuarter/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\n/**\n * @name isSameQuarter\n * @category Quarter Helpers\n * @summary Are the given dates in the same quarter (and year)?\n *\n * @description\n * Are the given dates in the same quarter (and year)?\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same quarter (and year)\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 1 January 2014 and 8 March 2014 in the same quarter?\n * const result = isSameQuarter(new Date(2014, 0, 1), new Date(2014, 2, 8))\n * //=> true\n *\n * @example\n * // Are 1 January 2014 and 1 January 2015 in the same quarter?\n * const result = isSameQuarter(new Date(2014, 0, 1), new Date(2015, 0, 1))\n * //=> false\n */\nfunction isSameQuarter(dirtyDateLeft, dirtyDateRight) {\n  (0, _index2.default)(2, arguments);\n  var dateLeftStartOfQuarter = (0, _index.default)(dirtyDateLeft);\n  var dateRightStartOfQuarter = (0, _index.default)(dirtyDateRight);\n  return dateLeftStartOfQuarter.getTime() === dateRightStartOfQuarter.getTime();\n}\nmodule.exports = exports.default;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = isAfter;\nvar _index = _interopRequireDefault(require(\"../toDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\n/**\n * @name isAfter\n * @category Common Helpers\n * @summary Is the first date after the second one?\n *\n * @description\n * Is the first date after the second one?\n *\n * @param {Date|Number} date - the date that should be after the other one to return true\n * @param {Date|Number} dateToCompare - the date to compare with\n * @returns {Boolean} the first date is after the second date\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Is 10 July 1989 after 11 February 1987?\n * const result = isAfter(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> true\n */\nfunction isAfter(dirtyDate, dirtyDateToCompare) {\n  (0, _index2.default)(2, arguments);\n  var date = (0, _index.default)(dirtyDate);\n  var dateToCompare = (0, _index.default)(dirtyDateToCompare);\n  return date.getTime() > dateToCompare.getTime();\n}\nmodule.exports = exports.default;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = isBefore;\nvar _index = _interopRequireDefault(require(\"../toDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\n/**\n * @name isBefore\n * @category Common Helpers\n * @summary Is the first date before the second one?\n *\n * @description\n * Is the first date before the second one?\n *\n * @param {Date|Number} date - the date that should be before the other one to return true\n * @param {Date|Number} dateToCompare - the date to compare with\n * @returns {Boolean} the first date is before the second date\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Is 10 July 1989 before 11 February 1987?\n * const result = isBefore(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> false\n */\nfunction isBefore(dirtyDate, dirtyDateToCompare) {\n  (0, _index2.default)(2, arguments);\n  var date = (0, _index.default)(dirtyDate);\n  var dateToCompare = (0, _index.default)(dirtyDateToCompare);\n  return date.getTime() < dateToCompare.getTime();\n}\nmodule.exports = exports.default;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = isWithinInterval;\nvar _index = _interopRequireDefault(require(\"../toDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\n/**\n * @name isWithinInterval\n * @category Interval Helpers\n * @summary Is the given date within the interval?\n *\n * @description\n * Is the given date within the interval? (Including start and end.)\n *\n * @param {Date|Number} date - the date to check\n * @param {Interval} interval - the interval to check\n * @returns {Boolean} the date is within the interval\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // For the date within the interval:\n * isWithinInterval(new Date(2014, 0, 3), {\n *   start: new Date(2014, 0, 1),\n *   end: new Date(2014, 0, 7)\n * })\n * //=> true\n *\n * @example\n * // For the date outside of the interval:\n * isWithinInterval(new Date(2014, 0, 10), {\n *   start: new Date(2014, 0, 1),\n *   end: new Date(2014, 0, 7)\n * })\n * //=> false\n *\n * @example\n * // For date equal to interval start:\n * isWithinInterval(date, { start, end: date }) // => true\n *\n * @example\n * // For date equal to interval end:\n * isWithinInterval(date, { start: date, end }) // => true\n */\nfunction isWithinInterval(dirtyDate, interval) {\n  (0, _index2.default)(2, arguments);\n  var time = (0, _index.default)(dirtyDate).getTime();\n  var startTime = (0, _index.default)(interval.start).getTime();\n  var endTime = (0, _index.default)(interval.end).getTime();\n\n  // Throw an exception if start date is after end date or if any date is `Invalid Date`\n  if (!(startTime <= endTime)) {\n    throw new RangeError('Invalid interval');\n  }\n  return time >= startTime && time <= endTime;\n}\nmodule.exports = exports.default;", "function _arrayLikeToArray(arr, len) {\n  if (len == null || len > arr.length) len = arr.length;\n  for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n  return arr2;\n}\nmodule.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\nfunction _unsupportedIterableToArray(o, minLen) {\n  if (!o) return;\n  if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n  var n = Object.prototype.toString.call(o).slice(8, -1);\n  if (n === \"Object\" && o.constructor) n = o.constructor.name;\n  if (n === \"Map\" || n === \"Set\") return Array.from(o);\n  if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\nmodule.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "var unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\nfunction _createForOfIteratorHelper(o, allowArrayLike) {\n  var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n  if (!it) {\n    if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n      if (it) o = it;\n      var i = 0;\n      var F = function F() {};\n      return {\n        s: F,\n        n: function n() {\n          if (i >= o.length) return {\n            done: true\n          };\n          return {\n            done: false,\n            value: o[i++]\n          };\n        },\n        e: function e(_e) {\n          throw _e;\n        },\n        f: F\n      };\n    }\n    throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n  }\n  var normalCompletion = true,\n    didErr = false,\n    err;\n  return {\n    s: function s() {\n      it = it.call(o);\n    },\n    n: function n() {\n      var step = it.next();\n      normalCompletion = step.done;\n      return step;\n    },\n    e: function e(_e2) {\n      didErr = true;\n      err = _e2;\n    },\n    f: function f() {\n      try {\n        if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n      } finally {\n        if (didErr) throw err;\n      }\n    }\n  };\n}\nmodule.exports = _createForOfIteratorHelper, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = assign;\nfunction assign(target, object) {\n  if (target == null) {\n    throw new TypeError('assign requires that input parameter not be null or undefined');\n  }\n  for (var property in object) {\n    if (Object.prototype.hasOwnProperty.call(object, property)) {\n      ;\n      target[property] = object[property];\n    }\n  }\n  return target;\n}\nmodule.exports = exports.default;", "function _assertThisInitialized(self) {\n  if (self === void 0) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n  return self;\n}\nmodule.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "function _setPrototypeOf(o, p) {\n  module.exports = _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n  return _setPrototypeOf(o, p);\n}\nmodule.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "var setPrototypeOf = require(\"./setPrototypeOf.js\");\nfunction _inherits(subClass, superClass) {\n  if (typeof superClass !== \"function\" && superClass !== null) {\n    throw new TypeError(\"Super expression must either be null or a function\");\n  }\n  subClass.prototype = Object.create(superClass && superClass.prototype, {\n    constructor: {\n      value: subClass,\n      writable: true,\n      configurable: true\n    }\n  });\n  Object.defineProperty(subClass, \"prototype\", {\n    writable: false\n  });\n  if (superClass) setPrototypeOf(subClass, superClass);\n}\nmodule.exports = _inherits, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "function _getPrototypeOf(o) {\n  module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n    return o.__proto__ || Object.getPrototypeOf(o);\n  }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n  return _getPrototypeOf(o);\n}\nmodule.exports = _getPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "function _isNativeReflectConstruct() {\n  if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n  if (Reflect.construct.sham) return false;\n  if (typeof Proxy === \"function\") return true;\n  try {\n    Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n    return true;\n  } catch (e) {\n    return false;\n  }\n}\nmodule.exports = _isNativeReflectConstruct, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "var _typeof = require(\"./typeof.js\")[\"default\"];\nvar assertThisInitialized = require(\"./assertThisInitialized.js\");\nfunction _possibleConstructorReturn(self, call) {\n  if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n    return call;\n  } else if (call !== void 0) {\n    throw new TypeError(\"Derived constructors may only return object or undefined\");\n  }\n  return assertThisInitialized(self);\n}\nmodule.exports = _possibleConstructorReturn, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "var getPrototypeOf = require(\"./getPrototypeOf.js\");\nvar isNativeReflectConstruct = require(\"./isNativeReflectConstruct.js\");\nvar possibleConstructorReturn = require(\"./possibleConstructorReturn.js\");\nfunction _createSuper(Derived) {\n  var hasNativeReflectConstruct = isNativeReflectConstruct();\n  return function _createSuperInternal() {\n    var Super = getPrototypeOf(Derived),\n      result;\n    if (hasNativeReflectConstruct) {\n      var NewTarget = getPrototypeOf(this).constructor;\n      result = Reflect.construct(Super, arguments, NewTarget);\n    } else {\n      result = Super.apply(this, arguments);\n    }\n    return possibleConstructorReturn(this, result);\n  };\n}\nmodule.exports = _createSuper, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "function _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}\nmodule.exports = _classCallCheck, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _toPrimitive(input, hint) {\n  if (_typeof(input) !== \"object\" || input === null) return input;\n  var prim = input[Symbol.toPrimitive];\n  if (prim !== undefined) {\n    var res = prim.call(input, hint || \"default\");\n    if (_typeof(res) !== \"object\") return res;\n    throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n  }\n  return (hint === \"string\" ? String : Number)(input);\n}\nmodule.exports = _toPrimitive, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "var _typeof = require(\"./typeof.js\")[\"default\"];\nvar toPrimitive = require(\"./toPrimitive.js\");\nfunction _toPropertyKey(arg) {\n  var key = toPrimitive(arg, \"string\");\n  return _typeof(key) === \"symbol\" ? key : String(key);\n}\nmodule.exports = _toPropertyKey, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "var toPropertyKey = require(\"./toPropertyKey.js\");\nfunction _defineProperties(target, props) {\n  for (var i = 0; i < props.length; i++) {\n    var descriptor = props[i];\n    descriptor.enumerable = descriptor.enumerable || false;\n    descriptor.configurable = true;\n    if (\"value\" in descriptor) descriptor.writable = true;\n    Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);\n  }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n  if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n  if (staticProps) _defineProperties(Constructor, staticProps);\n  Object.defineProperty(Constructor, \"prototype\", {\n    writable: false\n  });\n  return Constructor;\n}\nmodule.exports = _createClass, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "var toPropertyKey = require(\"./toPropertyKey.js\");\nfunction _defineProperty(obj, key, value) {\n  key = toPropertyKey(key);\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n  return obj;\n}\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.ValueSetter = exports.Setter = exports.DateToSystemTimezoneSetter = void 0;\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\nvar _createSuper2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createSuper\"));\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\nvar TIMEZONE_UNIT_PRIORITY = 10;\nvar Setter = /*#__PURE__*/function () {\n  function Setter() {\n    (0, _classCallCheck2.default)(this, Setter);\n    (0, _defineProperty2.default)(this, \"priority\", void 0);\n    (0, _defineProperty2.default)(this, \"subPriority\", 0);\n  }\n  (0, _createClass2.default)(Setter, [{\n    key: \"validate\",\n    value: function validate(_utcDate, _options) {\n      return true;\n    }\n  }]);\n  return Setter;\n}();\nexports.Setter = Setter;\nvar ValueSetter = /*#__PURE__*/function (_Setter) {\n  (0, _inherits2.default)(ValueSetter, _Setter);\n  var _super = (0, _createSuper2.default)(ValueSetter);\n  function ValueSetter(value, validateValue, setValue, priority, subPriority) {\n    var _this;\n    (0, _classCallCheck2.default)(this, ValueSetter);\n    _this = _super.call(this);\n    _this.value = value;\n    _this.validateValue = validateValue;\n    _this.setValue = setValue;\n    _this.priority = priority;\n    if (subPriority) {\n      _this.subPriority = subPriority;\n    }\n    return _this;\n  }\n  (0, _createClass2.default)(ValueSetter, [{\n    key: \"validate\",\n    value: function validate(utcDate, options) {\n      return this.validateValue(utcDate, this.value, options);\n    }\n  }, {\n    key: \"set\",\n    value: function set(utcDate, flags, options) {\n      return this.setValue(utcDate, flags, this.value, options);\n    }\n  }]);\n  return ValueSetter;\n}(Setter);\nexports.ValueSetter = ValueSetter;\nvar DateToSystemTimezoneSetter = /*#__PURE__*/function (_Setter2) {\n  (0, _inherits2.default)(DateToSystemTimezoneSetter, _Setter2);\n  var _super2 = (0, _createSuper2.default)(DateToSystemTimezoneSetter);\n  function DateToSystemTimezoneSetter() {\n    var _this2;\n    (0, _classCallCheck2.default)(this, DateToSystemTimezoneSetter);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this2 = _super2.call.apply(_super2, [this].concat(args));\n    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this2), \"priority\", TIMEZONE_UNIT_PRIORITY);\n    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this2), \"subPriority\", -1);\n    return _this2;\n  }\n  (0, _createClass2.default)(DateToSystemTimezoneSetter, [{\n    key: \"set\",\n    value: function set(date, flags) {\n      if (flags.timestampIsSet) {\n        return date;\n      }\n      var convertedDate = new Date(0);\n      convertedDate.setFullYear(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate());\n      convertedDate.setHours(date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds(), date.getUTCMilliseconds());\n      return convertedDate;\n    }\n  }]);\n  return DateToSystemTimezoneSetter;\n}(Setter);\nexports.DateToSystemTimezoneSetter = DateToSystemTimezoneSetter;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.Parser = void 0;\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\nvar _Setter = require(\"./Setter.js\");\nvar Parser = /*#__PURE__*/function () {\n  function Parser() {\n    (0, _classCallCheck2.default)(this, Parser);\n    (0, _defineProperty2.default)(this, \"incompatibleTokens\", void 0);\n    (0, _defineProperty2.default)(this, \"priority\", void 0);\n    (0, _defineProperty2.default)(this, \"subPriority\", void 0);\n  }\n  (0, _createClass2.default)(Parser, [{\n    key: \"run\",\n    value: function run(dateString, token, match, options) {\n      var result = this.parse(dateString, token, match, options);\n      if (!result) {\n        return null;\n      }\n      return {\n        setter: new _Setter.ValueSetter(result.value, this.validate, this.set, this.priority, this.subPriority),\n        rest: result.rest\n      };\n    }\n  }, {\n    key: \"validate\",\n    value: function validate(_utcDate, _value, _options) {\n      return true;\n    }\n  }]);\n  return Parser;\n}();\nexports.Parser = Parser;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.EraParser = void 0;\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\nvar _createSuper2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createSuper\"));\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\nvar _Parser2 = require(\"../Parser.js\");\nvar EraParser = /*#__PURE__*/function (_Parser) {\n  (0, _inherits2.default)(EraParser, _Parser);\n  var _super = (0, _createSuper2.default)(EraParser);\n  function EraParser() {\n    var _this;\n    (0, _classCallCheck2.default)(this, EraParser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"priority\", 140);\n    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"incompatibleTokens\", ['R', 'u', 't', 'T']);\n    return _this;\n  }\n  (0, _createClass2.default)(EraParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match) {\n      switch (token) {\n        // AD, BC\n        case 'G':\n        case 'GG':\n        case 'GGG':\n          return match.era(dateString, {\n            width: 'abbreviated'\n          }) || match.era(dateString, {\n            width: 'narrow'\n          });\n        // A, B\n        case 'GGGGG':\n          return match.era(dateString, {\n            width: 'narrow'\n          });\n        // Anno Domini, Before Christ\n        case 'GGGG':\n        default:\n          return match.era(dateString, {\n            width: 'wide'\n          }) || match.era(dateString, {\n            width: 'abbreviated'\n          }) || match.era(dateString, {\n            width: 'narrow'\n          });\n      }\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, flags, value) {\n      flags.era = value;\n      date.setUTCFullYear(value, 0, 1);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    }\n  }]);\n  return EraParser;\n}(_Parser2.Parser);\nexports.EraParser = EraParser;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.secondsInYear = exports.secondsInWeek = exports.secondsInQuarter = exports.secondsInMonth = exports.secondsInMinute = exports.secondsInHour = exports.secondsInDay = exports.quartersInYear = exports.monthsInYear = exports.monthsInQuarter = exports.minutesInHour = exports.minTime = exports.millisecondsInSecond = exports.millisecondsInMinute = exports.millisecondsInHour = exports.maxTime = exports.daysInYear = exports.daysInWeek = void 0;\n/**\n * Days in 1 week.\n *\n * @name daysInWeek\n * @constant\n * @type {number}\n * @default\n */\nvar daysInWeek = 7;\n\n/**\n * Days in 1 year\n * One years equals 365.2425 days according to the formula:\n *\n * > Leap year occures every 4 years, except for years that are divisable by 100 and not divisable by 400.\n * > 1 mean year = (365+1/4-1/100+1/400) days = 365.2425 days\n *\n * @name daysInYear\n * @constant\n * @type {number}\n * @default\n */\nexports.daysInWeek = daysInWeek;\nvar daysInYear = 365.2425;\n\n/**\n * Maximum allowed time.\n *\n * @name maxTime\n * @constant\n * @type {number}\n * @default\n */\nexports.daysInYear = daysInYear;\nvar maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1000;\n\n/**\n * Milliseconds in 1 minute\n *\n * @name millisecondsInMinute\n * @constant\n * @type {number}\n * @default\n */\nexports.maxTime = maxTime;\nvar millisecondsInMinute = 60000;\n\n/**\n * Milliseconds in 1 hour\n *\n * @name millisecondsInHour\n * @constant\n * @type {number}\n * @default\n */\nexports.millisecondsInMinute = millisecondsInMinute;\nvar millisecondsInHour = 3600000;\n\n/**\n * Milliseconds in 1 second\n *\n * @name millisecondsInSecond\n * @constant\n * @type {number}\n * @default\n */\nexports.millisecondsInHour = millisecondsInHour;\nvar millisecondsInSecond = 1000;\n\n/**\n * Minimum allowed time.\n *\n * @name minTime\n * @constant\n * @type {number}\n * @default\n */\nexports.millisecondsInSecond = millisecondsInSecond;\nvar minTime = -maxTime;\n\n/**\n * Minutes in 1 hour\n *\n * @name minutesInHour\n * @constant\n * @type {number}\n * @default\n */\nexports.minTime = minTime;\nvar minutesInHour = 60;\n\n/**\n * Months in 1 quarter\n *\n * @name monthsInQuarter\n * @constant\n * @type {number}\n * @default\n */\nexports.minutesInHour = minutesInHour;\nvar monthsInQuarter = 3;\n\n/**\n * Months in 1 year\n *\n * @name monthsInYear\n * @constant\n * @type {number}\n * @default\n */\nexports.monthsInQuarter = monthsInQuarter;\nvar monthsInYear = 12;\n\n/**\n * Quarters in 1 year\n *\n * @name quartersInYear\n * @constant\n * @type {number}\n * @default\n */\nexports.monthsInYear = monthsInYear;\nvar quartersInYear = 4;\n\n/**\n * Seconds in 1 hour\n *\n * @name secondsInHour\n * @constant\n * @type {number}\n * @default\n */\nexports.quartersInYear = quartersInYear;\nvar secondsInHour = 3600;\n\n/**\n * Seconds in 1 minute\n *\n * @name secondsInMinute\n * @constant\n * @type {number}\n * @default\n */\nexports.secondsInHour = secondsInHour;\nvar secondsInMinute = 60;\n\n/**\n * Seconds in 1 day\n *\n * @name secondsInDay\n * @constant\n * @type {number}\n * @default\n */\nexports.secondsInMinute = secondsInMinute;\nvar secondsInDay = secondsInHour * 24;\n\n/**\n * Seconds in 1 week\n *\n * @name secondsInWeek\n * @constant\n * @type {number}\n * @default\n */\nexports.secondsInDay = secondsInDay;\nvar secondsInWeek = secondsInDay * 7;\n\n/**\n * Seconds in 1 year\n *\n * @name secondsInYear\n * @constant\n * @type {number}\n * @default\n */\nexports.secondsInWeek = secondsInWeek;\nvar secondsInYear = secondsInDay * daysInYear;\n\n/**\n * Seconds in 1 month\n *\n * @name secondsInMonth\n * @constant\n * @type {number}\n * @default\n */\nexports.secondsInYear = secondsInYear;\nvar secondsInMonth = secondsInYear / 12;\n\n/**\n * Seconds in 1 quarter\n *\n * @name secondsInQuarter\n * @constant\n * @type {number}\n * @default\n */\nexports.secondsInMonth = secondsInMonth;\nvar secondsInQuarter = secondsInMonth * 3;\nexports.secondsInQuarter = secondsInQuarter;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.timezonePatterns = exports.numericPatterns = void 0;\nvar numericPatterns = {\n  month: /^(1[0-2]|0?\\d)/,\n  // 0 to 12\n  date: /^(3[0-1]|[0-2]?\\d)/,\n  // 0 to 31\n  dayOfYear: /^(36[0-6]|3[0-5]\\d|[0-2]?\\d?\\d)/,\n  // 0 to 366\n  week: /^(5[0-3]|[0-4]?\\d)/,\n  // 0 to 53\n  hour23h: /^(2[0-3]|[0-1]?\\d)/,\n  // 0 to 23\n  hour24h: /^(2[0-4]|[0-1]?\\d)/,\n  // 0 to 24\n  hour11h: /^(1[0-1]|0?\\d)/,\n  // 0 to 11\n  hour12h: /^(1[0-2]|0?\\d)/,\n  // 0 to 12\n  minute: /^[0-5]?\\d/,\n  // 0 to 59\n  second: /^[0-5]?\\d/,\n  // 0 to 59\n\n  singleDigit: /^\\d/,\n  // 0 to 9\n  twoDigits: /^\\d{1,2}/,\n  // 0 to 99\n  threeDigits: /^\\d{1,3}/,\n  // 0 to 999\n  fourDigits: /^\\d{1,4}/,\n  // 0 to 9999\n\n  anyDigitsSigned: /^-?\\d+/,\n  singleDigitSigned: /^-?\\d/,\n  // 0 to 9, -0 to -9\n  twoDigitsSigned: /^-?\\d{1,2}/,\n  // 0 to 99, -0 to -99\n  threeDigitsSigned: /^-?\\d{1,3}/,\n  // 0 to 999, -0 to -999\n  fourDigitsSigned: /^-?\\d{1,4}/ // 0 to 9999, -0 to -9999\n};\nexports.numericPatterns = numericPatterns;\nvar timezonePatterns = {\n  basicOptionalMinutes: /^([+-])(\\d{2})(\\d{2})?|Z/,\n  basic: /^([+-])(\\d{2})(\\d{2})|Z/,\n  basicOptionalSeconds: /^([+-])(\\d{2})(\\d{2})((\\d{2}))?|Z/,\n  extended: /^([+-])(\\d{2}):(\\d{2})|Z/,\n  extendedOptionalSeconds: /^([+-])(\\d{2}):(\\d{2})(:(\\d{2}))?|Z/\n};\nexports.timezonePatterns = timezonePatterns;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.dayPeriodEnumToHours = dayPeriodEnumToHours;\nexports.isLeapYearIndex = isLeapYearIndex;\nexports.mapValue = mapValue;\nexports.normalizeTwoDigitYear = normalizeTwoDigitYear;\nexports.parseAnyDigitsSigned = parseAnyDigitsSigned;\nexports.parseNDigits = parseNDigits;\nexports.parseNDigitsSigned = parseNDigitsSigned;\nexports.parseNumericPattern = parseNumericPattern;\nexports.parseTimezonePattern = parseTimezonePattern;\nvar _index = require(\"../../constants/index.js\");\nvar _constants = require(\"./constants.js\");\nfunction mapValue(parseFnResult, mapFn) {\n  if (!parseFnResult) {\n    return parseFnResult;\n  }\n  return {\n    value: mapFn(parseFnResult.value),\n    rest: parseFnResult.rest\n  };\n}\nfunction parseNumericPattern(pattern, dateString) {\n  var matchResult = dateString.match(pattern);\n  if (!matchResult) {\n    return null;\n  }\n  return {\n    value: parseInt(matchResult[0], 10),\n    rest: dateString.slice(matchResult[0].length)\n  };\n}\nfunction parseTimezonePattern(pattern, dateString) {\n  var matchResult = dateString.match(pattern);\n  if (!matchResult) {\n    return null;\n  }\n\n  // Input is 'Z'\n  if (matchResult[0] === 'Z') {\n    return {\n      value: 0,\n      rest: dateString.slice(1)\n    };\n  }\n  var sign = matchResult[1] === '+' ? 1 : -1;\n  var hours = matchResult[2] ? parseInt(matchResult[2], 10) : 0;\n  var minutes = matchResult[3] ? parseInt(matchResult[3], 10) : 0;\n  var seconds = matchResult[5] ? parseInt(matchResult[5], 10) : 0;\n  return {\n    value: sign * (hours * _index.millisecondsInHour + minutes * _index.millisecondsInMinute + seconds * _index.millisecondsInSecond),\n    rest: dateString.slice(matchResult[0].length)\n  };\n}\nfunction parseAnyDigitsSigned(dateString) {\n  return parseNumericPattern(_constants.numericPatterns.anyDigitsSigned, dateString);\n}\nfunction parseNDigits(n, dateString) {\n  switch (n) {\n    case 1:\n      return parseNumericPattern(_constants.numericPatterns.singleDigit, dateString);\n    case 2:\n      return parseNumericPattern(_constants.numericPatterns.twoDigits, dateString);\n    case 3:\n      return parseNumericPattern(_constants.numericPatterns.threeDigits, dateString);\n    case 4:\n      return parseNumericPattern(_constants.numericPatterns.fourDigits, dateString);\n    default:\n      return parseNumericPattern(new RegExp('^\\\\d{1,' + n + '}'), dateString);\n  }\n}\nfunction parseNDigitsSigned(n, dateString) {\n  switch (n) {\n    case 1:\n      return parseNumericPattern(_constants.numericPatterns.singleDigitSigned, dateString);\n    case 2:\n      return parseNumericPattern(_constants.numericPatterns.twoDigitsSigned, dateString);\n    case 3:\n      return parseNumericPattern(_constants.numericPatterns.threeDigitsSigned, dateString);\n    case 4:\n      return parseNumericPattern(_constants.numericPatterns.fourDigitsSigned, dateString);\n    default:\n      return parseNumericPattern(new RegExp('^-?\\\\d{1,' + n + '}'), dateString);\n  }\n}\nfunction dayPeriodEnumToHours(dayPeriod) {\n  switch (dayPeriod) {\n    case 'morning':\n      return 4;\n    case 'evening':\n      return 17;\n    case 'pm':\n    case 'noon':\n    case 'afternoon':\n      return 12;\n    case 'am':\n    case 'midnight':\n    case 'night':\n    default:\n      return 0;\n  }\n}\nfunction normalizeTwoDigitYear(twoDigitYear, currentYear) {\n  var isCommonEra = currentYear > 0;\n  // Absolute number of the current year:\n  // 1 -> 1 AC\n  // 0 -> 1 BC\n  // -1 -> 2 BC\n  var absCurrentYear = isCommonEra ? currentYear : 1 - currentYear;\n  var result;\n  if (absCurrentYear <= 50) {\n    result = twoDigitYear || 100;\n  } else {\n    var rangeEnd = absCurrentYear + 50;\n    var rangeEndCentury = Math.floor(rangeEnd / 100) * 100;\n    var isPreviousCentury = twoDigitYear >= rangeEnd % 100;\n    result = twoDigitYear + rangeEndCentury - (isPreviousCentury ? 100 : 0);\n  }\n  return isCommonEra ? result : 1 - result;\n}\nfunction isLeapYearIndex(year) {\n  return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;\n}", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.YearParser = void 0;\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\nvar _createSuper2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createSuper\"));\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\nvar _Parser2 = require(\"../Parser.js\");\nvar _utils = require(\"../utils.js\");\n// From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_Patterns\n// | Year     |     y | yy |   yyy |  yyyy | yyyyy |\n// |----------|-------|----|-------|-------|-------|\n// | AD 1     |     1 | 01 |   001 |  0001 | 00001 |\n// | AD 12    |    12 | 12 |   012 |  0012 | 00012 |\n// | AD 123   |   123 | 23 |   123 |  0123 | 00123 |\n// | AD 1234  |  1234 | 34 |  1234 |  1234 | 01234 |\n// | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\nvar YearParser = /*#__PURE__*/function (_Parser) {\n  (0, _inherits2.default)(YearParser, _Parser);\n  var _super = (0, _createSuper2.default)(YearParser);\n  function YearParser() {\n    var _this;\n    (0, _classCallCheck2.default)(this, YearParser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"priority\", 130);\n    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"incompatibleTokens\", ['Y', 'R', 'u', 'w', 'I', 'i', 'e', 'c', 't', 'T']);\n    return _this;\n  }\n  (0, _createClass2.default)(YearParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match) {\n      var valueCallback = function valueCallback(year) {\n        return {\n          year: year,\n          isTwoDigitYear: token === 'yy'\n        };\n      };\n      switch (token) {\n        case 'y':\n          return (0, _utils.mapValue)((0, _utils.parseNDigits)(4, dateString), valueCallback);\n        case 'yo':\n          return (0, _utils.mapValue)(match.ordinalNumber(dateString, {\n            unit: 'year'\n          }), valueCallback);\n        default:\n          return (0, _utils.mapValue)((0, _utils.parseNDigits)(token.length, dateString), valueCallback);\n      }\n    }\n  }, {\n    key: \"validate\",\n    value: function validate(_date, value) {\n      return value.isTwoDigitYear || value.year > 0;\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, flags, value) {\n      var currentYear = date.getUTCFullYear();\n      if (value.isTwoDigitYear) {\n        var normalizedTwoDigitYear = (0, _utils.normalizeTwoDigitYear)(value.year, currentYear);\n        date.setUTCFullYear(normalizedTwoDigitYear, 0, 1);\n        date.setUTCHours(0, 0, 0, 0);\n        return date;\n      }\n      var year = !('era' in flags) || flags.era === 1 ? value.year : 1 - value.year;\n      date.setUTCFullYear(year, 0, 1);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    }\n  }]);\n  return YearParser;\n}(_Parser2.Parser);\nexports.YearParser = YearParser;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.LocalWeekYearParser = void 0;\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\nvar _createSuper2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createSuper\"));\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\nvar _Parser2 = require(\"../Parser.js\");\nvar _utils = require(\"../utils.js\");\nvar _index = _interopRequireDefault(require(\"../../../_lib/getUTCWeekYear/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../../../_lib/startOfUTCWeek/index.js\"));\n// Local week-numbering year\nvar LocalWeekYearParser = /*#__PURE__*/function (_Parser) {\n  (0, _inherits2.default)(LocalWeekYearParser, _Parser);\n  var _super = (0, _createSuper2.default)(LocalWeekYearParser);\n  function LocalWeekYearParser() {\n    var _this;\n    (0, _classCallCheck2.default)(this, LocalWeekYearParser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"priority\", 130);\n    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"incompatibleTokens\", ['y', 'R', 'u', 'Q', 'q', 'M', 'L', 'I', 'd', 'D', 'i', 't', 'T']);\n    return _this;\n  }\n  (0, _createClass2.default)(LocalWeekYearParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match) {\n      var valueCallback = function valueCallback(year) {\n        return {\n          year: year,\n          isTwoDigitYear: token === 'YY'\n        };\n      };\n      switch (token) {\n        case 'Y':\n          return (0, _utils.mapValue)((0, _utils.parseNDigits)(4, dateString), valueCallback);\n        case 'Yo':\n          return (0, _utils.mapValue)(match.ordinalNumber(dateString, {\n            unit: 'year'\n          }), valueCallback);\n        default:\n          return (0, _utils.mapValue)((0, _utils.parseNDigits)(token.length, dateString), valueCallback);\n      }\n    }\n  }, {\n    key: \"validate\",\n    value: function validate(_date, value) {\n      return value.isTwoDigitYear || value.year > 0;\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, flags, value, options) {\n      var currentYear = (0, _index.default)(date, options);\n      if (value.isTwoDigitYear) {\n        var normalizedTwoDigitYear = (0, _utils.normalizeTwoDigitYear)(value.year, currentYear);\n        date.setUTCFullYear(normalizedTwoDigitYear, 0, options.firstWeekContainsDate);\n        date.setUTCHours(0, 0, 0, 0);\n        return (0, _index2.default)(date, options);\n      }\n      var year = !('era' in flags) || flags.era === 1 ? value.year : 1 - value.year;\n      date.setUTCFullYear(year, 0, options.firstWeekContainsDate);\n      date.setUTCHours(0, 0, 0, 0);\n      return (0, _index2.default)(date, options);\n    }\n  }]);\n  return LocalWeekYearParser;\n}(_Parser2.Parser);\nexports.LocalWeekYearParser = LocalWeekYearParser;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.ISOWeekYearParser = void 0;\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\nvar _createSuper2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createSuper\"));\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\nvar _Parser2 = require(\"../Parser.js\");\nvar _utils = require(\"../utils.js\");\nvar _index = _interopRequireDefault(require(\"../../../_lib/startOfUTCISOWeek/index.js\"));\n// ISO week-numbering year\nvar ISOWeekYearParser = /*#__PURE__*/function (_Parser) {\n  (0, _inherits2.default)(ISOWeekYearParser, _Parser);\n  var _super = (0, _createSuper2.default)(ISOWeekYearParser);\n  function ISOWeekYearParser() {\n    var _this;\n    (0, _classCallCheck2.default)(this, ISOWeekYearParser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"priority\", 130);\n    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"incompatibleTokens\", ['G', 'y', 'Y', 'u', 'Q', 'q', 'M', 'L', 'w', 'd', 'D', 'e', 'c', 't', 'T']);\n    return _this;\n  }\n  (0, _createClass2.default)(ISOWeekYearParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token) {\n      if (token === 'R') {\n        return (0, _utils.parseNDigitsSigned)(4, dateString);\n      }\n      return (0, _utils.parseNDigitsSigned)(token.length, dateString);\n    }\n  }, {\n    key: \"set\",\n    value: function set(_date, _flags, value) {\n      var firstWeekOfYear = new Date(0);\n      firstWeekOfYear.setUTCFullYear(value, 0, 4);\n      firstWeekOfYear.setUTCHours(0, 0, 0, 0);\n      return (0, _index.default)(firstWeekOfYear);\n    }\n  }]);\n  return ISOWeekYearParser;\n}(_Parser2.Parser);\nexports.ISOWeekYearParser = ISOWeekYearParser;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.ExtendedYearParser = void 0;\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\nvar _createSuper2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createSuper\"));\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\nvar _Parser2 = require(\"../Parser.js\");\nvar _utils = require(\"../utils.js\");\nvar ExtendedYearParser = /*#__PURE__*/function (_Parser) {\n  (0, _inherits2.default)(ExtendedYearParser, _Parser);\n  var _super = (0, _createSuper2.default)(ExtendedYearParser);\n  function ExtendedYearParser() {\n    var _this;\n    (0, _classCallCheck2.default)(this, ExtendedYearParser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"priority\", 130);\n    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"incompatibleTokens\", ['G', 'y', 'Y', 'R', 'w', 'I', 'i', 'e', 'c', 't', 'T']);\n    return _this;\n  }\n  (0, _createClass2.default)(ExtendedYearParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token) {\n      if (token === 'u') {\n        return (0, _utils.parseNDigitsSigned)(4, dateString);\n      }\n      return (0, _utils.parseNDigitsSigned)(token.length, dateString);\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value) {\n      date.setUTCFullYear(value, 0, 1);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    }\n  }]);\n  return ExtendedYearParser;\n}(_Parser2.Parser);\nexports.ExtendedYearParser = ExtendedYearParser;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.QuarterParser = void 0;\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\nvar _createSuper2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createSuper\"));\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\nvar _Parser2 = require(\"../Parser.js\");\nvar _utils = require(\"../utils.js\");\nvar QuarterParser = /*#__PURE__*/function (_Parser) {\n  (0, _inherits2.default)(QuarterParser, _Parser);\n  var _super = (0, _createSuper2.default)(QuarterParser);\n  function QuarterParser() {\n    var _this;\n    (0, _classCallCheck2.default)(this, QuarterParser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"priority\", 120);\n    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"incompatibleTokens\", ['Y', 'R', 'q', 'M', 'L', 'w', 'I', 'd', 'D', 'i', 'e', 'c', 't', 'T']);\n    return _this;\n  }\n  (0, _createClass2.default)(QuarterParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match) {\n      switch (token) {\n        // 1, 2, 3, 4\n        case 'Q':\n        case 'QQ':\n          // 01, 02, 03, 04\n          return (0, _utils.parseNDigits)(token.length, dateString);\n        // 1st, 2nd, 3rd, 4th\n        case 'Qo':\n          return match.ordinalNumber(dateString, {\n            unit: 'quarter'\n          });\n        // Q1, Q2, Q3, Q4\n        case 'QQQ':\n          return match.quarter(dateString, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.quarter(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n        // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n        case 'QQQQQ':\n          return match.quarter(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n        // 1st quarter, 2nd quarter, ...\n        case 'QQQQ':\n        default:\n          return match.quarter(dateString, {\n            width: 'wide',\n            context: 'formatting'\n          }) || match.quarter(dateString, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.quarter(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n      }\n    }\n  }, {\n    key: \"validate\",\n    value: function validate(_date, value) {\n      return value >= 1 && value <= 4;\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value) {\n      date.setUTCMonth((value - 1) * 3, 1);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    }\n  }]);\n  return QuarterParser;\n}(_Parser2.Parser);\nexports.QuarterParser = QuarterParser;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.StandAloneQuarterParser = void 0;\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\nvar _createSuper2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createSuper\"));\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\nvar _Parser2 = require(\"../Parser.js\");\nvar _utils = require(\"../utils.js\");\nvar StandAloneQuarterParser = /*#__PURE__*/function (_Parser) {\n  (0, _inherits2.default)(StandAloneQuarterParser, _Parser);\n  var _super = (0, _createSuper2.default)(StandAloneQuarterParser);\n  function StandAloneQuarterParser() {\n    var _this;\n    (0, _classCallCheck2.default)(this, StandAloneQuarterParser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"priority\", 120);\n    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"incompatibleTokens\", ['Y', 'R', 'Q', 'M', 'L', 'w', 'I', 'd', 'D', 'i', 'e', 'c', 't', 'T']);\n    return _this;\n  }\n  (0, _createClass2.default)(StandAloneQuarterParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match) {\n      switch (token) {\n        // 1, 2, 3, 4\n        case 'q':\n        case 'qq':\n          // 01, 02, 03, 04\n          return (0, _utils.parseNDigits)(token.length, dateString);\n        // 1st, 2nd, 3rd, 4th\n        case 'qo':\n          return match.ordinalNumber(dateString, {\n            unit: 'quarter'\n          });\n        // Q1, Q2, Q3, Q4\n        case 'qqq':\n          return match.quarter(dateString, {\n            width: 'abbreviated',\n            context: 'standalone'\n          }) || match.quarter(dateString, {\n            width: 'narrow',\n            context: 'standalone'\n          });\n        // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n        case 'qqqqq':\n          return match.quarter(dateString, {\n            width: 'narrow',\n            context: 'standalone'\n          });\n        // 1st quarter, 2nd quarter, ...\n        case 'qqqq':\n        default:\n          return match.quarter(dateString, {\n            width: 'wide',\n            context: 'standalone'\n          }) || match.quarter(dateString, {\n            width: 'abbreviated',\n            context: 'standalone'\n          }) || match.quarter(dateString, {\n            width: 'narrow',\n            context: 'standalone'\n          });\n      }\n    }\n  }, {\n    key: \"validate\",\n    value: function validate(_date, value) {\n      return value >= 1 && value <= 4;\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value) {\n      date.setUTCMonth((value - 1) * 3, 1);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    }\n  }]);\n  return StandAloneQuarterParser;\n}(_Parser2.Parser);\nexports.StandAloneQuarterParser = StandAloneQuarterParser;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.MonthParser = void 0;\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\nvar _createSuper2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createSuper\"));\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\nvar _utils = require(\"../utils.js\");\nvar _Parser2 = require(\"../Parser.js\");\nvar _constants = require(\"../constants.js\");\nvar MonthParser = /*#__PURE__*/function (_Parser) {\n  (0, _inherits2.default)(MonthParser, _Parser);\n  var _super = (0, _createSuper2.default)(MonthParser);\n  function MonthParser() {\n    var _this;\n    (0, _classCallCheck2.default)(this, MonthParser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"incompatibleTokens\", ['Y', 'R', 'q', 'Q', 'L', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']);\n    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"priority\", 110);\n    return _this;\n  }\n  (0, _createClass2.default)(MonthParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match) {\n      var valueCallback = function valueCallback(value) {\n        return value - 1;\n      };\n      switch (token) {\n        // 1, 2, ..., 12\n        case 'M':\n          return (0, _utils.mapValue)((0, _utils.parseNumericPattern)(_constants.numericPatterns.month, dateString), valueCallback);\n        // 01, 02, ..., 12\n        case 'MM':\n          return (0, _utils.mapValue)((0, _utils.parseNDigits)(2, dateString), valueCallback);\n        // 1st, 2nd, ..., 12th\n        case 'Mo':\n          return (0, _utils.mapValue)(match.ordinalNumber(dateString, {\n            unit: 'month'\n          }), valueCallback);\n        // Jan, Feb, ..., Dec\n        case 'MMM':\n          return match.month(dateString, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.month(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n        // J, F, ..., D\n        case 'MMMMM':\n          return match.month(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n        // January, February, ..., December\n        case 'MMMM':\n        default:\n          return match.month(dateString, {\n            width: 'wide',\n            context: 'formatting'\n          }) || match.month(dateString, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.month(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n      }\n    }\n  }, {\n    key: \"validate\",\n    value: function validate(_date, value) {\n      return value >= 0 && value <= 11;\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value) {\n      date.setUTCMonth(value, 1);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    }\n  }]);\n  return MonthParser;\n}(_Parser2.Parser);\nexports.MonthParser = MonthParser;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.StandAloneMonthParser = void 0;\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\nvar _createSuper2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createSuper\"));\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\nvar _Parser2 = require(\"../Parser.js\");\nvar _constants = require(\"../constants.js\");\nvar _utils = require(\"../utils.js\");\nvar StandAloneMonthParser = /*#__PURE__*/function (_Parser) {\n  (0, _inherits2.default)(StandAloneMonthParser, _Parser);\n  var _super = (0, _createSuper2.default)(StandAloneMonthParser);\n  function StandAloneMonthParser() {\n    var _this;\n    (0, _classCallCheck2.default)(this, StandAloneMonthParser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"priority\", 110);\n    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"incompatibleTokens\", ['Y', 'R', 'q', 'Q', 'M', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']);\n    return _this;\n  }\n  (0, _createClass2.default)(StandAloneMonthParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match) {\n      var valueCallback = function valueCallback(value) {\n        return value - 1;\n      };\n      switch (token) {\n        // 1, 2, ..., 12\n        case 'L':\n          return (0, _utils.mapValue)((0, _utils.parseNumericPattern)(_constants.numericPatterns.month, dateString), valueCallback);\n        // 01, 02, ..., 12\n        case 'LL':\n          return (0, _utils.mapValue)((0, _utils.parseNDigits)(2, dateString), valueCallback);\n        // 1st, 2nd, ..., 12th\n        case 'Lo':\n          return (0, _utils.mapValue)(match.ordinalNumber(dateString, {\n            unit: 'month'\n          }), valueCallback);\n        // Jan, Feb, ..., Dec\n        case 'LLL':\n          return match.month(dateString, {\n            width: 'abbreviated',\n            context: 'standalone'\n          }) || match.month(dateString, {\n            width: 'narrow',\n            context: 'standalone'\n          });\n        // J, F, ..., D\n        case 'LLLLL':\n          return match.month(dateString, {\n            width: 'narrow',\n            context: 'standalone'\n          });\n        // January, February, ..., December\n        case 'LLLL':\n        default:\n          return match.month(dateString, {\n            width: 'wide',\n            context: 'standalone'\n          }) || match.month(dateString, {\n            width: 'abbreviated',\n            context: 'standalone'\n          }) || match.month(dateString, {\n            width: 'narrow',\n            context: 'standalone'\n          });\n      }\n    }\n  }, {\n    key: \"validate\",\n    value: function validate(_date, value) {\n      return value >= 0 && value <= 11;\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value) {\n      date.setUTCMonth(value, 1);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    }\n  }]);\n  return StandAloneMonthParser;\n}(_Parser2.Parser);\nexports.StandAloneMonthParser = StandAloneMonthParser;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = setUTCWeek;\nvar _index = _interopRequireDefault(require(\"../toInteger/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../../toDate/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../getUTCWeek/index.js\"));\nvar _index4 = _interopRequireDefault(require(\"../requiredArgs/index.js\"));\nfunction setUTCWeek(dirtyDate, dirtyWeek, options) {\n  (0, _index4.default)(2, arguments);\n  var date = (0, _index2.default)(dirtyDate);\n  var week = (0, _index.default)(dirtyWeek);\n  var diff = (0, _index3.default)(date, options) - week;\n  date.setUTCDate(date.getUTCDate() - diff * 7);\n  return date;\n}\nmodule.exports = exports.default;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.LocalWeekParser = void 0;\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\nvar _createSuper2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createSuper\"));\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\nvar _Parser2 = require(\"../Parser.js\");\nvar _constants = require(\"../constants.js\");\nvar _utils = require(\"../utils.js\");\nvar _index = _interopRequireDefault(require(\"../../../_lib/setUTCWeek/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../../../_lib/startOfUTCWeek/index.js\"));\n// Local week of year\nvar LocalWeekParser = /*#__PURE__*/function (_Parser) {\n  (0, _inherits2.default)(LocalWeekParser, _Parser);\n  var _super = (0, _createSuper2.default)(LocalWeekParser);\n  function LocalWeekParser() {\n    var _this;\n    (0, _classCallCheck2.default)(this, LocalWeekParser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"priority\", 100);\n    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"incompatibleTokens\", ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'i', 't', 'T']);\n    return _this;\n  }\n  (0, _createClass2.default)(LocalWeekParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match) {\n      switch (token) {\n        case 'w':\n          return (0, _utils.parseNumericPattern)(_constants.numericPatterns.week, dateString);\n        case 'wo':\n          return match.ordinalNumber(dateString, {\n            unit: 'week'\n          });\n        default:\n          return (0, _utils.parseNDigits)(token.length, dateString);\n      }\n    }\n  }, {\n    key: \"validate\",\n    value: function validate(_date, value) {\n      return value >= 1 && value <= 53;\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value, options) {\n      return (0, _index2.default)((0, _index.default)(date, value, options), options);\n    }\n  }]);\n  return LocalWeekParser;\n}(_Parser2.Parser);\nexports.LocalWeekParser = LocalWeekParser;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = setUTCISOWeek;\nvar _index = _interopRequireDefault(require(\"../toInteger/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../../toDate/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../getUTCISOWeek/index.js\"));\nvar _index4 = _interopRequireDefault(require(\"../requiredArgs/index.js\"));\nfunction setUTCISOWeek(dirtyDate, dirtyISOWeek) {\n  (0, _index4.default)(2, arguments);\n  var date = (0, _index2.default)(dirtyDate);\n  var isoWeek = (0, _index.default)(dirtyISOWeek);\n  var diff = (0, _index3.default)(date) - isoWeek;\n  date.setUTCDate(date.getUTCDate() - diff * 7);\n  return date;\n}\nmodule.exports = exports.default;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.ISOWeekParser = void 0;\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\nvar _createSuper2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createSuper\"));\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\nvar _Parser2 = require(\"../Parser.js\");\nvar _constants = require(\"../constants.js\");\nvar _utils = require(\"../utils.js\");\nvar _index = _interopRequireDefault(require(\"../../../_lib/setUTCISOWeek/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../../../_lib/startOfUTCISOWeek/index.js\"));\n// ISO week of year\nvar ISOWeekParser = /*#__PURE__*/function (_Parser) {\n  (0, _inherits2.default)(ISOWeekParser, _Parser);\n  var _super = (0, _createSuper2.default)(ISOWeekParser);\n  function ISOWeekParser() {\n    var _this;\n    (0, _classCallCheck2.default)(this, ISOWeekParser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"priority\", 100);\n    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"incompatibleTokens\", ['y', 'Y', 'u', 'q', 'Q', 'M', 'L', 'w', 'd', 'D', 'e', 'c', 't', 'T']);\n    return _this;\n  }\n  (0, _createClass2.default)(ISOWeekParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match) {\n      switch (token) {\n        case 'I':\n          return (0, _utils.parseNumericPattern)(_constants.numericPatterns.week, dateString);\n        case 'Io':\n          return match.ordinalNumber(dateString, {\n            unit: 'week'\n          });\n        default:\n          return (0, _utils.parseNDigits)(token.length, dateString);\n      }\n    }\n  }, {\n    key: \"validate\",\n    value: function validate(_date, value) {\n      return value >= 1 && value <= 53;\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value) {\n      return (0, _index2.default)((0, _index.default)(date, value));\n    }\n  }]);\n  return ISOWeekParser;\n}(_Parser2.Parser);\nexports.ISOWeekParser = ISOWeekParser;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.DateParser = void 0;\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\nvar _createSuper2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createSuper\"));\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\nvar _utils = require(\"../utils.js\");\nvar _Parser2 = require(\"../Parser.js\");\nvar _constants = require(\"../constants.js\");\nvar DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nvar DAYS_IN_MONTH_LEAP_YEAR = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\n// Day of the month\nvar DateParser = /*#__PURE__*/function (_Parser) {\n  (0, _inherits2.default)(DateParser, _Parser);\n  var _super = (0, _createSuper2.default)(DateParser);\n  function DateParser() {\n    var _this;\n    (0, _classCallCheck2.default)(this, DateParser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"priority\", 90);\n    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"subPriority\", 1);\n    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"incompatibleTokens\", ['Y', 'R', 'q', 'Q', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']);\n    return _this;\n  }\n  (0, _createClass2.default)(DateParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match) {\n      switch (token) {\n        case 'd':\n          return (0, _utils.parseNumericPattern)(_constants.numericPatterns.date, dateString);\n        case 'do':\n          return match.ordinalNumber(dateString, {\n            unit: 'date'\n          });\n        default:\n          return (0, _utils.parseNDigits)(token.length, dateString);\n      }\n    }\n  }, {\n    key: \"validate\",\n    value: function validate(date, value) {\n      var year = date.getUTCFullYear();\n      var isLeapYear = (0, _utils.isLeapYearIndex)(year);\n      var month = date.getUTCMonth();\n      if (isLeapYear) {\n        return value >= 1 && value <= DAYS_IN_MONTH_LEAP_YEAR[month];\n      } else {\n        return value >= 1 && value <= DAYS_IN_MONTH[month];\n      }\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value) {\n      date.setUTCDate(value);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    }\n  }]);\n  return DateParser;\n}(_Parser2.Parser);\nexports.DateParser = DateParser;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.DayOfYearParser = void 0;\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\nvar _createSuper2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createSuper\"));\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\nvar _Parser2 = require(\"../Parser.js\");\nvar _constants = require(\"../constants.js\");\nvar _utils = require(\"../utils.js\");\nvar DayOfYearParser = /*#__PURE__*/function (_Parser) {\n  (0, _inherits2.default)(DayOfYearParser, _Parser);\n  var _super = (0, _createSuper2.default)(DayOfYearParser);\n  function DayOfYearParser() {\n    var _this;\n    (0, _classCallCheck2.default)(this, DayOfYearParser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"priority\", 90);\n    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"subpriority\", 1);\n    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"incompatibleTokens\", ['Y', 'R', 'q', 'Q', 'M', 'L', 'w', 'I', 'd', 'E', 'i', 'e', 'c', 't', 'T']);\n    return _this;\n  }\n  (0, _createClass2.default)(DayOfYearParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match) {\n      switch (token) {\n        case 'D':\n        case 'DD':\n          return (0, _utils.parseNumericPattern)(_constants.numericPatterns.dayOfYear, dateString);\n        case 'Do':\n          return match.ordinalNumber(dateString, {\n            unit: 'date'\n          });\n        default:\n          return (0, _utils.parseNDigits)(token.length, dateString);\n      }\n    }\n  }, {\n    key: \"validate\",\n    value: function validate(date, value) {\n      var year = date.getUTCFullYear();\n      var isLeapYear = (0, _utils.isLeapYearIndex)(year);\n      if (isLeapYear) {\n        return value >= 1 && value <= 366;\n      } else {\n        return value >= 1 && value <= 365;\n      }\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value) {\n      date.setUTCMonth(0, value);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    }\n  }]);\n  return DayOfYearParser;\n}(_Parser2.Parser);\nexports.DayOfYearParser = DayOfYearParser;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = setUTCDay;\nvar _index = _interopRequireDefault(require(\"../../toDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../requiredArgs/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../toInteger/index.js\"));\nvar _index4 = require(\"../defaultOptions/index.js\");\nfunction setUTCDay(dirtyDate, dirtyDay, options) {\n  var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n  (0, _index2.default)(2, arguments);\n  var defaultOptions = (0, _index4.getDefaultOptions)();\n  var weekStartsOn = (0, _index3.default)((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n  // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n  if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n    throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n  }\n  var date = (0, _index.default)(dirtyDate);\n  var day = (0, _index3.default)(dirtyDay);\n  var currentDay = date.getUTCDay();\n  var remainder = day % 7;\n  var dayIndex = (remainder + 7) % 7;\n  var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay;\n  date.setUTCDate(date.getUTCDate() + diff);\n  return date;\n}\nmodule.exports = exports.default;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.DayParser = void 0;\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\nvar _createSuper2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createSuper\"));\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\nvar _Parser2 = require(\"../Parser.js\");\nvar _index = _interopRequireDefault(require(\"../../../_lib/setUTCDay/index.js\"));\n// Day of week\nvar DayParser = /*#__PURE__*/function (_Parser) {\n  (0, _inherits2.default)(DayParser, _Parser);\n  var _super = (0, _createSuper2.default)(DayParser);\n  function DayParser() {\n    var _this;\n    (0, _classCallCheck2.default)(this, DayParser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"priority\", 90);\n    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"incompatibleTokens\", ['D', 'i', 'e', 'c', 't', 'T']);\n    return _this;\n  }\n  (0, _createClass2.default)(DayParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match) {\n      switch (token) {\n        // Tue\n        case 'E':\n        case 'EE':\n        case 'EEE':\n          return match.day(dateString, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.day(dateString, {\n            width: 'short',\n            context: 'formatting'\n          }) || match.day(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n        // T\n        case 'EEEEE':\n          return match.day(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n        // Tu\n        case 'EEEEEE':\n          return match.day(dateString, {\n            width: 'short',\n            context: 'formatting'\n          }) || match.day(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n        // Tuesday\n        case 'EEEE':\n        default:\n          return match.day(dateString, {\n            width: 'wide',\n            context: 'formatting'\n          }) || match.day(dateString, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.day(dateString, {\n            width: 'short',\n            context: 'formatting'\n          }) || match.day(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n      }\n    }\n  }, {\n    key: \"validate\",\n    value: function validate(_date, value) {\n      return value >= 0 && value <= 6;\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value, options) {\n      date = (0, _index.default)(date, value, options);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    }\n  }]);\n  return DayParser;\n}(_Parser2.Parser);\nexports.DayParser = DayParser;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.LocalDayParser = void 0;\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\nvar _createSuper2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createSuper\"));\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\nvar _Parser2 = require(\"../Parser.js\");\nvar _utils = require(\"../utils.js\");\nvar _index = _interopRequireDefault(require(\"../../../_lib/setUTCDay/index.js\"));\n// Local day of week\nvar LocalDayParser = /*#__PURE__*/function (_Parser) {\n  (0, _inherits2.default)(LocalDayParser, _Parser);\n  var _super = (0, _createSuper2.default)(LocalDayParser);\n  function LocalDayParser() {\n    var _this;\n    (0, _classCallCheck2.default)(this, LocalDayParser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"priority\", 90);\n    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"incompatibleTokens\", ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'E', 'i', 'c', 't', 'T']);\n    return _this;\n  }\n  (0, _createClass2.default)(LocalDayParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match, options) {\n      var valueCallback = function valueCallback(value) {\n        var wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n        return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays;\n      };\n      switch (token) {\n        // 3\n        case 'e':\n        case 'ee':\n          // 03\n          return (0, _utils.mapValue)((0, _utils.parseNDigits)(token.length, dateString), valueCallback);\n        // 3rd\n        case 'eo':\n          return (0, _utils.mapValue)(match.ordinalNumber(dateString, {\n            unit: 'day'\n          }), valueCallback);\n        // Tue\n        case 'eee':\n          return match.day(dateString, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.day(dateString, {\n            width: 'short',\n            context: 'formatting'\n          }) || match.day(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n        // T\n        case 'eeeee':\n          return match.day(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n        // Tu\n        case 'eeeeee':\n          return match.day(dateString, {\n            width: 'short',\n            context: 'formatting'\n          }) || match.day(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n        // Tuesday\n        case 'eeee':\n        default:\n          return match.day(dateString, {\n            width: 'wide',\n            context: 'formatting'\n          }) || match.day(dateString, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.day(dateString, {\n            width: 'short',\n            context: 'formatting'\n          }) || match.day(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n      }\n    }\n  }, {\n    key: \"validate\",\n    value: function validate(_date, value) {\n      return value >= 0 && value <= 6;\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value, options) {\n      date = (0, _index.default)(date, value, options);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    }\n  }]);\n  return LocalDayParser;\n}(_Parser2.Parser);\nexports.LocalDayParser = LocalDayParser;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.StandAloneLocalDayParser = void 0;\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\nvar _createSuper2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createSuper\"));\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\nvar _Parser2 = require(\"../Parser.js\");\nvar _utils = require(\"../utils.js\");\nvar _index = _interopRequireDefault(require(\"../../../_lib/setUTCDay/index.js\"));\n// Stand-alone local day of week\nvar StandAloneLocalDayParser = /*#__PURE__*/function (_Parser) {\n  (0, _inherits2.default)(StandAloneLocalDayParser, _Parser);\n  var _super = (0, _createSuper2.default)(StandAloneLocalDayParser);\n  function StandAloneLocalDayParser() {\n    var _this;\n    (0, _classCallCheck2.default)(this, StandAloneLocalDayParser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"priority\", 90);\n    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"incompatibleTokens\", ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'E', 'i', 'e', 't', 'T']);\n    return _this;\n  }\n  (0, _createClass2.default)(StandAloneLocalDayParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match, options) {\n      var valueCallback = function valueCallback(value) {\n        var wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n        return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays;\n      };\n      switch (token) {\n        // 3\n        case 'c':\n        case 'cc':\n          // 03\n          return (0, _utils.mapValue)((0, _utils.parseNDigits)(token.length, dateString), valueCallback);\n        // 3rd\n        case 'co':\n          return (0, _utils.mapValue)(match.ordinalNumber(dateString, {\n            unit: 'day'\n          }), valueCallback);\n        // Tue\n        case 'ccc':\n          return match.day(dateString, {\n            width: 'abbreviated',\n            context: 'standalone'\n          }) || match.day(dateString, {\n            width: 'short',\n            context: 'standalone'\n          }) || match.day(dateString, {\n            width: 'narrow',\n            context: 'standalone'\n          });\n        // T\n        case 'ccccc':\n          return match.day(dateString, {\n            width: 'narrow',\n            context: 'standalone'\n          });\n        // Tu\n        case 'cccccc':\n          return match.day(dateString, {\n            width: 'short',\n            context: 'standalone'\n          }) || match.day(dateString, {\n            width: 'narrow',\n            context: 'standalone'\n          });\n        // Tuesday\n        case 'cccc':\n        default:\n          return match.day(dateString, {\n            width: 'wide',\n            context: 'standalone'\n          }) || match.day(dateString, {\n            width: 'abbreviated',\n            context: 'standalone'\n          }) || match.day(dateString, {\n            width: 'short',\n            context: 'standalone'\n          }) || match.day(dateString, {\n            width: 'narrow',\n            context: 'standalone'\n          });\n      }\n    }\n  }, {\n    key: \"validate\",\n    value: function validate(_date, value) {\n      return value >= 0 && value <= 6;\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value, options) {\n      date = (0, _index.default)(date, value, options);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    }\n  }]);\n  return StandAloneLocalDayParser;\n}(_Parser2.Parser);\nexports.StandAloneLocalDayParser = StandAloneLocalDayParser;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = setUTCISODay;\nvar _index = _interopRequireDefault(require(\"../../toDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../requiredArgs/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../toInteger/index.js\"));\nfunction setUTCISODay(dirtyDate, dirtyDay) {\n  (0, _index2.default)(2, arguments);\n  var day = (0, _index3.default)(dirtyDay);\n  if (day % 7 === 0) {\n    day = day - 7;\n  }\n  var weekStartsOn = 1;\n  var date = (0, _index.default)(dirtyDate);\n  var currentDay = date.getUTCDay();\n  var remainder = day % 7;\n  var dayIndex = (remainder + 7) % 7;\n  var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay;\n  date.setUTCDate(date.getUTCDate() + diff);\n  return date;\n}\nmodule.exports = exports.default;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.ISODayParser = void 0;\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\nvar _createSuper2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createSuper\"));\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\nvar _Parser2 = require(\"../Parser.js\");\nvar _utils = require(\"../utils.js\");\nvar _index = _interopRequireDefault(require(\"../../../_lib/setUTCISODay/index.js\"));\n// ISO day of week\nvar ISODayParser = /*#__PURE__*/function (_Parser) {\n  (0, _inherits2.default)(ISODayParser, _Parser);\n  var _super = (0, _createSuper2.default)(ISODayParser);\n  function ISODayParser() {\n    var _this;\n    (0, _classCallCheck2.default)(this, ISODayParser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"priority\", 90);\n    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"incompatibleTokens\", ['y', 'Y', 'u', 'q', 'Q', 'M', 'L', 'w', 'd', 'D', 'E', 'e', 'c', 't', 'T']);\n    return _this;\n  }\n  (0, _createClass2.default)(ISODayParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match) {\n      var valueCallback = function valueCallback(value) {\n        if (value === 0) {\n          return 7;\n        }\n        return value;\n      };\n      switch (token) {\n        // 2\n        case 'i':\n        case 'ii':\n          // 02\n          return (0, _utils.parseNDigits)(token.length, dateString);\n        // 2nd\n        case 'io':\n          return match.ordinalNumber(dateString, {\n            unit: 'day'\n          });\n        // Tue\n        case 'iii':\n          return (0, _utils.mapValue)(match.day(dateString, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.day(dateString, {\n            width: 'short',\n            context: 'formatting'\n          }) || match.day(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          }), valueCallback);\n        // T\n        case 'iiiii':\n          return (0, _utils.mapValue)(match.day(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          }), valueCallback);\n        // Tu\n        case 'iiiiii':\n          return (0, _utils.mapValue)(match.day(dateString, {\n            width: 'short',\n            context: 'formatting'\n          }) || match.day(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          }), valueCallback);\n        // Tuesday\n        case 'iiii':\n        default:\n          return (0, _utils.mapValue)(match.day(dateString, {\n            width: 'wide',\n            context: 'formatting'\n          }) || match.day(dateString, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.day(dateString, {\n            width: 'short',\n            context: 'formatting'\n          }) || match.day(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          }), valueCallback);\n      }\n    }\n  }, {\n    key: \"validate\",\n    value: function validate(_date, value) {\n      return value >= 1 && value <= 7;\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value) {\n      date = (0, _index.default)(date, value);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    }\n  }]);\n  return ISODayParser;\n}(_Parser2.Parser);\nexports.ISODayParser = ISODayParser;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.AMPMParser = void 0;\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\nvar _createSuper2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createSuper\"));\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\nvar _Parser2 = require(\"../Parser.js\");\nvar _utils = require(\"../utils.js\");\nvar AMPMParser = /*#__PURE__*/function (_Parser) {\n  (0, _inherits2.default)(AMPMParser, _Parser);\n  var _super = (0, _createSuper2.default)(AMPMParser);\n  function AMPMParser() {\n    var _this;\n    (0, _classCallCheck2.default)(this, AMPMParser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"priority\", 80);\n    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"incompatibleTokens\", ['b', 'B', 'H', 'k', 't', 'T']);\n    return _this;\n  }\n  (0, _createClass2.default)(AMPMParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match) {\n      switch (token) {\n        case 'a':\n        case 'aa':\n        case 'aaa':\n          return match.dayPeriod(dateString, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.dayPeriod(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n        case 'aaaaa':\n          return match.dayPeriod(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n        case 'aaaa':\n        default:\n          return match.dayPeriod(dateString, {\n            width: 'wide',\n            context: 'formatting'\n          }) || match.dayPeriod(dateString, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.dayPeriod(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n      }\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value) {\n      date.setUTCHours((0, _utils.dayPeriodEnumToHours)(value), 0, 0, 0);\n      return date;\n    }\n  }]);\n  return AMPMParser;\n}(_Parser2.Parser);\nexports.AMPMParser = AMPMParser;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.AMPMMidnightParser = void 0;\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\nvar _createSuper2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createSuper\"));\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\nvar _Parser2 = require(\"../Parser.js\");\nvar _utils = require(\"../utils.js\");\nvar AMPMMidnightParser = /*#__PURE__*/function (_Parser) {\n  (0, _inherits2.default)(AMPMMidnightParser, _Parser);\n  var _super = (0, _createSuper2.default)(AMPMMidnightParser);\n  function AMPMMidnightParser() {\n    var _this;\n    (0, _classCallCheck2.default)(this, AMPMMidnightParser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"priority\", 80);\n    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"incompatibleTokens\", ['a', 'B', 'H', 'k', 't', 'T']);\n    return _this;\n  }\n  (0, _createClass2.default)(AMPMMidnightParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match) {\n      switch (token) {\n        case 'b':\n        case 'bb':\n        case 'bbb':\n          return match.dayPeriod(dateString, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.dayPeriod(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n        case 'bbbbb':\n          return match.dayPeriod(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n        case 'bbbb':\n        default:\n          return match.dayPeriod(dateString, {\n            width: 'wide',\n            context: 'formatting'\n          }) || match.dayPeriod(dateString, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.dayPeriod(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n      }\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value) {\n      date.setUTCHours((0, _utils.dayPeriodEnumToHours)(value), 0, 0, 0);\n      return date;\n    }\n  }]);\n  return AMPMMidnightParser;\n}(_Parser2.Parser);\nexports.AMPMMidnightParser = AMPMMidnightParser;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.DayPeriodParser = void 0;\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\nvar _createSuper2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createSuper\"));\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\nvar _Parser2 = require(\"../Parser.js\");\nvar _utils = require(\"../utils.js\");\n// in the morning, in the afternoon, in the evening, at night\nvar DayPeriodParser = /*#__PURE__*/function (_Parser) {\n  (0, _inherits2.default)(DayPeriodParser, _Parser);\n  var _super = (0, _createSuper2.default)(DayPeriodParser);\n  function DayPeriodParser() {\n    var _this;\n    (0, _classCallCheck2.default)(this, DayPeriodParser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"priority\", 80);\n    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"incompatibleTokens\", ['a', 'b', 't', 'T']);\n    return _this;\n  }\n  (0, _createClass2.default)(DayPeriodParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match) {\n      switch (token) {\n        case 'B':\n        case 'BB':\n        case 'BBB':\n          return match.dayPeriod(dateString, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.dayPeriod(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n        case 'BBBBB':\n          return match.dayPeriod(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n        case 'BBBB':\n        default:\n          return match.dayPeriod(dateString, {\n            width: 'wide',\n            context: 'formatting'\n          }) || match.dayPeriod(dateString, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.dayPeriod(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n      }\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value) {\n      date.setUTCHours((0, _utils.dayPeriodEnumToHours)(value), 0, 0, 0);\n      return date;\n    }\n  }]);\n  return DayPeriodParser;\n}(_Parser2.Parser);\nexports.DayPeriodParser = DayPeriodParser;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.Hour1to12Parser = void 0;\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\nvar _createSuper2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createSuper\"));\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\nvar _Parser2 = require(\"../Parser.js\");\nvar _constants = require(\"../constants.js\");\nvar _utils = require(\"../utils.js\");\nvar Hour1to12Parser = /*#__PURE__*/function (_Parser) {\n  (0, _inherits2.default)(Hour1to12Parser, _Parser);\n  var _super = (0, _createSuper2.default)(Hour1to12Parser);\n  function Hour1to12Parser() {\n    var _this;\n    (0, _classCallCheck2.default)(this, Hour1to12Parser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"priority\", 70);\n    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"incompatibleTokens\", ['H', 'K', 'k', 't', 'T']);\n    return _this;\n  }\n  (0, _createClass2.default)(Hour1to12Parser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match) {\n      switch (token) {\n        case 'h':\n          return (0, _utils.parseNumericPattern)(_constants.numericPatterns.hour12h, dateString);\n        case 'ho':\n          return match.ordinalNumber(dateString, {\n            unit: 'hour'\n          });\n        default:\n          return (0, _utils.parseNDigits)(token.length, dateString);\n      }\n    }\n  }, {\n    key: \"validate\",\n    value: function validate(_date, value) {\n      return value >= 1 && value <= 12;\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value) {\n      var isPM = date.getUTCHours() >= 12;\n      if (isPM && value < 12) {\n        date.setUTCHours(value + 12, 0, 0, 0);\n      } else if (!isPM && value === 12) {\n        date.setUTCHours(0, 0, 0, 0);\n      } else {\n        date.setUTCHours(value, 0, 0, 0);\n      }\n      return date;\n    }\n  }]);\n  return Hour1to12Parser;\n}(_Parser2.Parser);\nexports.Hour1to12Parser = Hour1to12Parser;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.Hour0to23Parser = void 0;\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\nvar _createSuper2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createSuper\"));\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\nvar _Parser2 = require(\"../Parser.js\");\nvar _constants = require(\"../constants.js\");\nvar _utils = require(\"../utils.js\");\nvar Hour0to23Parser = /*#__PURE__*/function (_Parser) {\n  (0, _inherits2.default)(Hour0to23Parser, _Parser);\n  var _super = (0, _createSuper2.default)(Hour0to23Parser);\n  function Hour0to23Parser() {\n    var _this;\n    (0, _classCallCheck2.default)(this, Hour0to23Parser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"priority\", 70);\n    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"incompatibleTokens\", ['a', 'b', 'h', 'K', 'k', 't', 'T']);\n    return _this;\n  }\n  (0, _createClass2.default)(Hour0to23Parser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match) {\n      switch (token) {\n        case 'H':\n          return (0, _utils.parseNumericPattern)(_constants.numericPatterns.hour23h, dateString);\n        case 'Ho':\n          return match.ordinalNumber(dateString, {\n            unit: 'hour'\n          });\n        default:\n          return (0, _utils.parseNDigits)(token.length, dateString);\n      }\n    }\n  }, {\n    key: \"validate\",\n    value: function validate(_date, value) {\n      return value >= 0 && value <= 23;\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value) {\n      date.setUTCHours(value, 0, 0, 0);\n      return date;\n    }\n  }]);\n  return Hour0to23Parser;\n}(_Parser2.Parser);\nexports.Hour0to23Parser = Hour0to23Parser;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.Hour0To11Parser = void 0;\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\nvar _createSuper2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createSuper\"));\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\nvar _Parser2 = require(\"../Parser.js\");\nvar _constants = require(\"../constants.js\");\nvar _utils = require(\"../utils.js\");\nvar Hour0To11Parser = /*#__PURE__*/function (_Parser) {\n  (0, _inherits2.default)(Hour0To11Parser, _Parser);\n  var _super = (0, _createSuper2.default)(Hour0To11Parser);\n  function Hour0To11Parser() {\n    var _this;\n    (0, _classCallCheck2.default)(this, Hour0To11Parser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"priority\", 70);\n    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"incompatibleTokens\", ['h', 'H', 'k', 't', 'T']);\n    return _this;\n  }\n  (0, _createClass2.default)(Hour0To11Parser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match) {\n      switch (token) {\n        case 'K':\n          return (0, _utils.parseNumericPattern)(_constants.numericPatterns.hour11h, dateString);\n        case 'Ko':\n          return match.ordinalNumber(dateString, {\n            unit: 'hour'\n          });\n        default:\n          return (0, _utils.parseNDigits)(token.length, dateString);\n      }\n    }\n  }, {\n    key: \"validate\",\n    value: function validate(_date, value) {\n      return value >= 0 && value <= 11;\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value) {\n      var isPM = date.getUTCHours() >= 12;\n      if (isPM && value < 12) {\n        date.setUTCHours(value + 12, 0, 0, 0);\n      } else {\n        date.setUTCHours(value, 0, 0, 0);\n      }\n      return date;\n    }\n  }]);\n  return Hour0To11Parser;\n}(_Parser2.Parser);\nexports.Hour0To11Parser = Hour0To11Parser;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.Hour1To24Parser = void 0;\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\nvar _createSuper2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createSuper\"));\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\nvar _Parser2 = require(\"../Parser.js\");\nvar _constants = require(\"../constants.js\");\nvar _utils = require(\"../utils.js\");\nvar Hour1To24Parser = /*#__PURE__*/function (_Parser) {\n  (0, _inherits2.default)(Hour1To24Parser, _Parser);\n  var _super = (0, _createSuper2.default)(Hour1To24Parser);\n  function Hour1To24Parser() {\n    var _this;\n    (0, _classCallCheck2.default)(this, Hour1To24Parser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"priority\", 70);\n    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"incompatibleTokens\", ['a', 'b', 'h', 'H', 'K', 't', 'T']);\n    return _this;\n  }\n  (0, _createClass2.default)(Hour1To24Parser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match) {\n      switch (token) {\n        case 'k':\n          return (0, _utils.parseNumericPattern)(_constants.numericPatterns.hour24h, dateString);\n        case 'ko':\n          return match.ordinalNumber(dateString, {\n            unit: 'hour'\n          });\n        default:\n          return (0, _utils.parseNDigits)(token.length, dateString);\n      }\n    }\n  }, {\n    key: \"validate\",\n    value: function validate(_date, value) {\n      return value >= 1 && value <= 24;\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value) {\n      var hours = value <= 24 ? value % 24 : value;\n      date.setUTCHours(hours, 0, 0, 0);\n      return date;\n    }\n  }]);\n  return Hour1To24Parser;\n}(_Parser2.Parser);\nexports.Hour1To24Parser = Hour1To24Parser;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.MinuteParser = void 0;\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\nvar _createSuper2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createSuper\"));\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\nvar _Parser2 = require(\"../Parser.js\");\nvar _constants = require(\"../constants.js\");\nvar _utils = require(\"../utils.js\");\nvar MinuteParser = /*#__PURE__*/function (_Parser) {\n  (0, _inherits2.default)(MinuteParser, _Parser);\n  var _super = (0, _createSuper2.default)(MinuteParser);\n  function MinuteParser() {\n    var _this;\n    (0, _classCallCheck2.default)(this, MinuteParser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"priority\", 60);\n    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"incompatibleTokens\", ['t', 'T']);\n    return _this;\n  }\n  (0, _createClass2.default)(MinuteParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match) {\n      switch (token) {\n        case 'm':\n          return (0, _utils.parseNumericPattern)(_constants.numericPatterns.minute, dateString);\n        case 'mo':\n          return match.ordinalNumber(dateString, {\n            unit: 'minute'\n          });\n        default:\n          return (0, _utils.parseNDigits)(token.length, dateString);\n      }\n    }\n  }, {\n    key: \"validate\",\n    value: function validate(_date, value) {\n      return value >= 0 && value <= 59;\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value) {\n      date.setUTCMinutes(value, 0, 0);\n      return date;\n    }\n  }]);\n  return MinuteParser;\n}(_Parser2.Parser);\nexports.MinuteParser = MinuteParser;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.SecondParser = void 0;\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\nvar _createSuper2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createSuper\"));\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\nvar _Parser2 = require(\"../Parser.js\");\nvar _constants = require(\"../constants.js\");\nvar _utils = require(\"../utils.js\");\nvar SecondParser = /*#__PURE__*/function (_Parser) {\n  (0, _inherits2.default)(SecondParser, _Parser);\n  var _super = (0, _createSuper2.default)(SecondParser);\n  function SecondParser() {\n    var _this;\n    (0, _classCallCheck2.default)(this, SecondParser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"priority\", 50);\n    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"incompatibleTokens\", ['t', 'T']);\n    return _this;\n  }\n  (0, _createClass2.default)(SecondParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match) {\n      switch (token) {\n        case 's':\n          return (0, _utils.parseNumericPattern)(_constants.numericPatterns.second, dateString);\n        case 'so':\n          return match.ordinalNumber(dateString, {\n            unit: 'second'\n          });\n        default:\n          return (0, _utils.parseNDigits)(token.length, dateString);\n      }\n    }\n  }, {\n    key: \"validate\",\n    value: function validate(_date, value) {\n      return value >= 0 && value <= 59;\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value) {\n      date.setUTCSeconds(value, 0);\n      return date;\n    }\n  }]);\n  return SecondParser;\n}(_Parser2.Parser);\nexports.SecondParser = SecondParser;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.FractionOfSecondParser = void 0;\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\nvar _createSuper2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createSuper\"));\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\nvar _Parser2 = require(\"../Parser.js\");\nvar _utils = require(\"../utils.js\");\nvar FractionOfSecondParser = /*#__PURE__*/function (_Parser) {\n  (0, _inherits2.default)(FractionOfSecondParser, _Parser);\n  var _super = (0, _createSuper2.default)(FractionOfSecondParser);\n  function FractionOfSecondParser() {\n    var _this;\n    (0, _classCallCheck2.default)(this, FractionOfSecondParser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"priority\", 30);\n    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"incompatibleTokens\", ['t', 'T']);\n    return _this;\n  }\n  (0, _createClass2.default)(FractionOfSecondParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token) {\n      var valueCallback = function valueCallback(value) {\n        return Math.floor(value * Math.pow(10, -token.length + 3));\n      };\n      return (0, _utils.mapValue)((0, _utils.parseNDigits)(token.length, dateString), valueCallback);\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value) {\n      date.setUTCMilliseconds(value);\n      return date;\n    }\n  }]);\n  return FractionOfSecondParser;\n}(_Parser2.Parser);\nexports.FractionOfSecondParser = FractionOfSecondParser;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.ISOTimezoneWithZParser = void 0;\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\nvar _createSuper2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createSuper\"));\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\nvar _Parser2 = require(\"../Parser.js\");\nvar _constants = require(\"../constants.js\");\nvar _utils = require(\"../utils.js\");\n// Timezone (ISO-8601. +00:00 is `'Z'`)\nvar ISOTimezoneWithZParser = /*#__PURE__*/function (_Parser) {\n  (0, _inherits2.default)(ISOTimezoneWithZParser, _Parser);\n  var _super = (0, _createSuper2.default)(ISOTimezoneWithZParser);\n  function ISOTimezoneWithZParser() {\n    var _this;\n    (0, _classCallCheck2.default)(this, ISOTimezoneWithZParser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"priority\", 10);\n    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"incompatibleTokens\", ['t', 'T', 'x']);\n    return _this;\n  }\n  (0, _createClass2.default)(ISOTimezoneWithZParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token) {\n      switch (token) {\n        case 'X':\n          return (0, _utils.parseTimezonePattern)(_constants.timezonePatterns.basicOptionalMinutes, dateString);\n        case 'XX':\n          return (0, _utils.parseTimezonePattern)(_constants.timezonePatterns.basic, dateString);\n        case 'XXXX':\n          return (0, _utils.parseTimezonePattern)(_constants.timezonePatterns.basicOptionalSeconds, dateString);\n        case 'XXXXX':\n          return (0, _utils.parseTimezonePattern)(_constants.timezonePatterns.extendedOptionalSeconds, dateString);\n        case 'XXX':\n        default:\n          return (0, _utils.parseTimezonePattern)(_constants.timezonePatterns.extended, dateString);\n      }\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, flags, value) {\n      if (flags.timestampIsSet) {\n        return date;\n      }\n      return new Date(date.getTime() - value);\n    }\n  }]);\n  return ISOTimezoneWithZParser;\n}(_Parser2.Parser);\nexports.ISOTimezoneWithZParser = ISOTimezoneWithZParser;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.ISOTimezoneParser = void 0;\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\nvar _createSuper2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createSuper\"));\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\nvar _Parser2 = require(\"../Parser.js\");\nvar _constants = require(\"../constants.js\");\nvar _utils = require(\"../utils.js\");\n// Timezone (ISO-8601)\nvar ISOTimezoneParser = /*#__PURE__*/function (_Parser) {\n  (0, _inherits2.default)(ISOTimezoneParser, _Parser);\n  var _super = (0, _createSuper2.default)(ISOTimezoneParser);\n  function ISOTimezoneParser() {\n    var _this;\n    (0, _classCallCheck2.default)(this, ISOTimezoneParser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"priority\", 10);\n    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"incompatibleTokens\", ['t', 'T', 'X']);\n    return _this;\n  }\n  (0, _createClass2.default)(ISOTimezoneParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token) {\n      switch (token) {\n        case 'x':\n          return (0, _utils.parseTimezonePattern)(_constants.timezonePatterns.basicOptionalMinutes, dateString);\n        case 'xx':\n          return (0, _utils.parseTimezonePattern)(_constants.timezonePatterns.basic, dateString);\n        case 'xxxx':\n          return (0, _utils.parseTimezonePattern)(_constants.timezonePatterns.basicOptionalSeconds, dateString);\n        case 'xxxxx':\n          return (0, _utils.parseTimezonePattern)(_constants.timezonePatterns.extendedOptionalSeconds, dateString);\n        case 'xxx':\n        default:\n          return (0, _utils.parseTimezonePattern)(_constants.timezonePatterns.extended, dateString);\n      }\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, flags, value) {\n      if (flags.timestampIsSet) {\n        return date;\n      }\n      return new Date(date.getTime() - value);\n    }\n  }]);\n  return ISOTimezoneParser;\n}(_Parser2.Parser);\nexports.ISOTimezoneParser = ISOTimezoneParser;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.TimestampSecondsParser = void 0;\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\nvar _createSuper2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createSuper\"));\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\nvar _Parser2 = require(\"../Parser.js\");\nvar _utils = require(\"../utils.js\");\nvar TimestampSecondsParser = /*#__PURE__*/function (_Parser) {\n  (0, _inherits2.default)(TimestampSecondsParser, _Parser);\n  var _super = (0, _createSuper2.default)(TimestampSecondsParser);\n  function TimestampSecondsParser() {\n    var _this;\n    (0, _classCallCheck2.default)(this, TimestampSecondsParser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"priority\", 40);\n    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"incompatibleTokens\", '*');\n    return _this;\n  }\n  (0, _createClass2.default)(TimestampSecondsParser, [{\n    key: \"parse\",\n    value: function parse(dateString) {\n      return (0, _utils.parseAnyDigitsSigned)(dateString);\n    }\n  }, {\n    key: \"set\",\n    value: function set(_date, _flags, value) {\n      return [new Date(value * 1000), {\n        timestampIsSet: true\n      }];\n    }\n  }]);\n  return TimestampSecondsParser;\n}(_Parser2.Parser);\nexports.TimestampSecondsParser = TimestampSecondsParser;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.TimestampMillisecondsParser = void 0;\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\nvar _createSuper2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createSuper\"));\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\nvar _Parser2 = require(\"../Parser.js\");\nvar _utils = require(\"../utils.js\");\nvar TimestampMillisecondsParser = /*#__PURE__*/function (_Parser) {\n  (0, _inherits2.default)(TimestampMillisecondsParser, _Parser);\n  var _super = (0, _createSuper2.default)(TimestampMillisecondsParser);\n  function TimestampMillisecondsParser() {\n    var _this;\n    (0, _classCallCheck2.default)(this, TimestampMillisecondsParser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"priority\", 20);\n    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"incompatibleTokens\", '*');\n    return _this;\n  }\n  (0, _createClass2.default)(TimestampMillisecondsParser, [{\n    key: \"parse\",\n    value: function parse(dateString) {\n      return (0, _utils.parseAnyDigitsSigned)(dateString);\n    }\n  }, {\n    key: \"set\",\n    value: function set(_date, _flags, value) {\n      return [new Date(value), {\n        timestampIsSet: true\n      }];\n    }\n  }]);\n  return TimestampMillisecondsParser;\n}(_Parser2.Parser);\nexports.TimestampMillisecondsParser = TimestampMillisecondsParser;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.parsers = void 0;\nvar _EraParser = require(\"./EraParser.js\");\nvar _YearParser = require(\"./YearParser.js\");\nvar _LocalWeekYearParser = require(\"./LocalWeekYearParser.js\");\nvar _ISOWeekYearParser = require(\"./ISOWeekYearParser.js\");\nvar _ExtendedYearParser = require(\"./ExtendedYearParser.js\");\nvar _QuarterParser = require(\"./QuarterParser.js\");\nvar _StandAloneQuarterParser = require(\"./StandAloneQuarterParser.js\");\nvar _MonthParser = require(\"./MonthParser.js\");\nvar _StandAloneMonthParser = require(\"./StandAloneMonthParser.js\");\nvar _LocalWeekParser = require(\"./LocalWeekParser.js\");\nvar _ISOWeekParser = require(\"./ISOWeekParser.js\");\nvar _DateParser = require(\"./DateParser.js\");\nvar _DayOfYearParser = require(\"./DayOfYearParser.js\");\nvar _DayParser = require(\"./DayParser.js\");\nvar _LocalDayParser = require(\"./LocalDayParser.js\");\nvar _StandAloneLocalDayParser = require(\"./StandAloneLocalDayParser.js\");\nvar _ISODayParser = require(\"./ISODayParser.js\");\nvar _AMPMParser = require(\"./AMPMParser.js\");\nvar _AMPMMidnightParser = require(\"./AMPMMidnightParser.js\");\nvar _DayPeriodParser = require(\"./DayPeriodParser.js\");\nvar _Hour1to12Parser = require(\"./Hour1to12Parser.js\");\nvar _Hour0to23Parser = require(\"./Hour0to23Parser.js\");\nvar _Hour0To11Parser = require(\"./Hour0To11Parser.js\");\nvar _Hour1To24Parser = require(\"./Hour1To24Parser.js\");\nvar _MinuteParser = require(\"./MinuteParser.js\");\nvar _SecondParser = require(\"./SecondParser.js\");\nvar _FractionOfSecondParser = require(\"./FractionOfSecondParser.js\");\nvar _ISOTimezoneWithZParser = require(\"./ISOTimezoneWithZParser.js\");\nvar _ISOTimezoneParser = require(\"./ISOTimezoneParser.js\");\nvar _TimestampSecondsParser = require(\"./TimestampSecondsParser.js\");\nvar _TimestampMillisecondsParser = require(\"./TimestampMillisecondsParser.js\");\n/*\n * |     | Unit                           |     | Unit                           |\n * |-----|--------------------------------|-----|--------------------------------|\n * |  a  | AM, PM                         |  A* | Milliseconds in day            |\n * |  b  | AM, PM, noon, midnight         |  B  | Flexible day period            |\n * |  c  | Stand-alone local day of week  |  C* | Localized hour w/ day period   |\n * |  d  | Day of month                   |  D  | Day of year                    |\n * |  e  | Local day of week              |  E  | Day of week                    |\n * |  f  |                                |  F* | Day of week in month           |\n * |  g* | Modified Julian day            |  G  | Era                            |\n * |  h  | Hour [1-12]                    |  H  | Hour [0-23]                    |\n * |  i! | ISO day of week                |  I! | ISO week of year               |\n * |  j* | Localized hour w/ day period   |  J* | Localized hour w/o day period  |\n * |  k  | Hour [1-24]                    |  K  | Hour [0-11]                    |\n * |  l* | (deprecated)                   |  L  | Stand-alone month              |\n * |  m  | Minute                         |  M  | Month                          |\n * |  n  |                                |  N  |                                |\n * |  o! | Ordinal number modifier        |  O* | Timezone (GMT)                 |\n * |  p  |                                |  P  |                                |\n * |  q  | Stand-alone quarter            |  Q  | Quarter                        |\n * |  r* | Related Gregorian year         |  R! | ISO week-numbering year        |\n * |  s  | Second                         |  S  | Fraction of second             |\n * |  t! | Seconds timestamp              |  T! | Milliseconds timestamp         |\n * |  u  | Extended year                  |  U* | Cyclic year                    |\n * |  v* | Timezone (generic non-locat.)  |  V* | Timezone (location)            |\n * |  w  | Local week of year             |  W* | Week of month                  |\n * |  x  | Timezone (ISO-8601 w/o Z)      |  X  | Timezone (ISO-8601)            |\n * |  y  | Year (abs)                     |  Y  | Local week-numbering year      |\n * |  z* | Timezone (specific non-locat.) |  Z* | Timezone (aliases)             |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `parse` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n *   i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n *   `R` is supposed to be used in conjunction with `I` and `i`\n *   for universal ISO week-numbering date, whereas\n *   `Y` is supposed to be used in conjunction with `w` and `e`\n *   for week-numbering date specific to the locale.\n */\nvar parsers = {\n  G: new _EraParser.EraParser(),\n  y: new _YearParser.YearParser(),\n  Y: new _LocalWeekYearParser.LocalWeekYearParser(),\n  R: new _ISOWeekYearParser.ISOWeekYearParser(),\n  u: new _ExtendedYearParser.ExtendedYearParser(),\n  Q: new _QuarterParser.QuarterParser(),\n  q: new _StandAloneQuarterParser.StandAloneQuarterParser(),\n  M: new _MonthParser.MonthParser(),\n  L: new _StandAloneMonthParser.StandAloneMonthParser(),\n  w: new _LocalWeekParser.LocalWeekParser(),\n  I: new _ISOWeekParser.ISOWeekParser(),\n  d: new _DateParser.DateParser(),\n  D: new _DayOfYearParser.DayOfYearParser(),\n  E: new _DayParser.DayParser(),\n  e: new _LocalDayParser.LocalDayParser(),\n  c: new _StandAloneLocalDayParser.StandAloneLocalDayParser(),\n  i: new _ISODayParser.ISODayParser(),\n  a: new _AMPMParser.AMPMParser(),\n  b: new _AMPMMidnightParser.AMPMMidnightParser(),\n  B: new _DayPeriodParser.DayPeriodParser(),\n  h: new _Hour1to12Parser.Hour1to12Parser(),\n  H: new _Hour0to23Parser.Hour0to23Parser(),\n  K: new _Hour0To11Parser.Hour0To11Parser(),\n  k: new _Hour1To24Parser.Hour1To24Parser(),\n  m: new _MinuteParser.MinuteParser(),\n  s: new _SecondParser.SecondParser(),\n  S: new _FractionOfSecondParser.FractionOfSecondParser(),\n  X: new _ISOTimezoneWithZParser.ISOTimezoneWithZParser(),\n  x: new _ISOTimezoneParser.ISOTimezoneParser(),\n  t: new _TimestampSecondsParser.TimestampSecondsParser(),\n  T: new _TimestampMillisecondsParser.TimestampMillisecondsParser()\n};\nexports.parsers = parsers;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = parse;\nvar _typeof2 = _interopRequireDefault(require(\"@babel/runtime/helpers/typeof\"));\nvar _createForOfIteratorHelper2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createForOfIteratorHelper\"));\nvar _index = _interopRequireDefault(require(\"../_lib/defaultLocale/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../subMilliseconds/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../toDate/index.js\"));\nvar _index4 = _interopRequireDefault(require(\"../_lib/assign/index.js\"));\nvar _index5 = _interopRequireDefault(require(\"../_lib/format/longFormatters/index.js\"));\nvar _index6 = _interopRequireDefault(require(\"../_lib/getTimezoneOffsetInMilliseconds/index.js\"));\nvar _index7 = require(\"../_lib/protectedTokens/index.js\");\nvar _index8 = _interopRequireDefault(require(\"../_lib/toInteger/index.js\"));\nvar _index9 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\nvar _Setter = require(\"./_lib/Setter.js\");\nvar _index10 = require(\"./_lib/parsers/index.js\");\nvar _index11 = require(\"../_lib/defaultOptions/index.js\");\n// This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n//   (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n//   except a single quote symbol, which ends the sequence.\n//   Two quote characters do not end the sequence.\n//   If there is no matching single quote\n//   then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar notWhitespaceRegExp = /\\S/;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\n/**\n * @name parse\n * @category Common Helpers\n * @summary Parse the date.\n *\n * @description\n * Return the date parsed from string using the given format string.\n *\n * > \u26A0\uFE0F Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters in the format string wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n *\n * Format of the format string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 5 below the table).\n *\n * Not all tokens are compatible. Combinations that don't make sense or could lead to bugs are prohibited\n * and will throw `RangeError`. For example usage of 24-hour format token with AM/PM token will throw an exception:\n *\n * ```javascript\n * parse('23 AM', 'HH a', new Date())\n * //=> RangeError: The format string mustn't contain `HH` and `a` at the same time\n * ```\n *\n * See the compatibility table: https://docs.google.com/spreadsheets/d/e/2PACX-1vQOPU3xUhplll6dyoMmVUXHKl_8CRDs6_ueLmex3SoqwhuolkuN3O05l4rqx5h1dKX8eb46Ul-CCSrq/pubhtml?gid=0&single=true\n *\n * Accepted format string patterns:\n * | Unit                            |Prior| Pattern | Result examples                   | Notes |\n * |---------------------------------|-----|---------|-----------------------------------|-------|\n * | Era                             | 140 | G..GGG  | AD, BC                            |       |\n * |                                 |     | GGGG    | Anno Domini, Before Christ        | 2     |\n * |                                 |     | GGGGG   | A, B                              |       |\n * | Calendar year                   | 130 | y       | 44, 1, 1900, 2017, 9999           | 4     |\n * |                                 |     | yo      | 44th, 1st, 1900th, 9999999th      | 4,5   |\n * |                                 |     | yy      | 44, 01, 00, 17                    | 4     |\n * |                                 |     | yyy     | 044, 001, 123, 999                | 4     |\n * |                                 |     | yyyy    | 0044, 0001, 1900, 2017            | 4     |\n * |                                 |     | yyyyy   | ...                               | 2,4   |\n * | Local week-numbering year       | 130 | Y       | 44, 1, 1900, 2017, 9000           | 4     |\n * |                                 |     | Yo      | 44th, 1st, 1900th, 9999999th      | 4,5   |\n * |                                 |     | YY      | 44, 01, 00, 17                    | 4,6   |\n * |                                 |     | YYY     | 044, 001, 123, 999                | 4     |\n * |                                 |     | YYYY    | 0044, 0001, 1900, 2017            | 4,6   |\n * |                                 |     | YYYYY   | ...                               | 2,4   |\n * | ISO week-numbering year         | 130 | R       | -43, 1, 1900, 2017, 9999, -9999   | 4,5   |\n * |                                 |     | RR      | -43, 01, 00, 17                   | 4,5   |\n * |                                 |     | RRR     | -043, 001, 123, 999, -999         | 4,5   |\n * |                                 |     | RRRR    | -0043, 0001, 2017, 9999, -9999    | 4,5   |\n * |                                 |     | RRRRR   | ...                               | 2,4,5 |\n * | Extended year                   | 130 | u       | -43, 1, 1900, 2017, 9999, -999    | 4     |\n * |                                 |     | uu      | -43, 01, 99, -99                  | 4     |\n * |                                 |     | uuu     | -043, 001, 123, 999, -999         | 4     |\n * |                                 |     | uuuu    | -0043, 0001, 2017, 9999, -9999    | 4     |\n * |                                 |     | uuuuu   | ...                               | 2,4   |\n * | Quarter (formatting)            | 120 | Q       | 1, 2, 3, 4                        |       |\n * |                                 |     | Qo      | 1st, 2nd, 3rd, 4th                | 5     |\n * |                                 |     | QQ      | 01, 02, 03, 04                    |       |\n * |                                 |     | QQQ     | Q1, Q2, Q3, Q4                    |       |\n * |                                 |     | QQQQ    | 1st quarter, 2nd quarter, ...     | 2     |\n * |                                 |     | QQQQQ   | 1, 2, 3, 4                        | 4     |\n * | Quarter (stand-alone)           | 120 | q       | 1, 2, 3, 4                        |       |\n * |                                 |     | qo      | 1st, 2nd, 3rd, 4th                | 5     |\n * |                                 |     | qq      | 01, 02, 03, 04                    |       |\n * |                                 |     | qqq     | Q1, Q2, Q3, Q4                    |       |\n * |                                 |     | qqqq    | 1st quarter, 2nd quarter, ...     | 2     |\n * |                                 |     | qqqqq   | 1, 2, 3, 4                        | 3     |\n * | Month (formatting)              | 110 | M       | 1, 2, ..., 12                     |       |\n * |                                 |     | Mo      | 1st, 2nd, ..., 12th               | 5     |\n * |                                 |     | MM      | 01, 02, ..., 12                   |       |\n * |                                 |     | MMM     | Jan, Feb, ..., Dec                |       |\n * |                                 |     | MMMM    | January, February, ..., December  | 2     |\n * |                                 |     | MMMMM   | J, F, ..., D                      |       |\n * | Month (stand-alone)             | 110 | L       | 1, 2, ..., 12                     |       |\n * |                                 |     | Lo      | 1st, 2nd, ..., 12th               | 5     |\n * |                                 |     | LL      | 01, 02, ..., 12                   |       |\n * |                                 |     | LLL     | Jan, Feb, ..., Dec                |       |\n * |                                 |     | LLLL    | January, February, ..., December  | 2     |\n * |                                 |     | LLLLL   | J, F, ..., D                      |       |\n * | Local week of year              | 100 | w       | 1, 2, ..., 53                     |       |\n * |                                 |     | wo      | 1st, 2nd, ..., 53th               | 5     |\n * |                                 |     | ww      | 01, 02, ..., 53                   |       |\n * | ISO week of year                | 100 | I       | 1, 2, ..., 53                     | 5     |\n * |                                 |     | Io      | 1st, 2nd, ..., 53th               | 5     |\n * |                                 |     | II      | 01, 02, ..., 53                   | 5     |\n * | Day of month                    |  90 | d       | 1, 2, ..., 31                     |       |\n * |                                 |     | do      | 1st, 2nd, ..., 31st               | 5     |\n * |                                 |     | dd      | 01, 02, ..., 31                   |       |\n * | Day of year                     |  90 | D       | 1, 2, ..., 365, 366               | 7     |\n * |                                 |     | Do      | 1st, 2nd, ..., 365th, 366th       | 5     |\n * |                                 |     | DD      | 01, 02, ..., 365, 366             | 7     |\n * |                                 |     | DDD     | 001, 002, ..., 365, 366           |       |\n * |                                 |     | DDDD    | ...                               | 2     |\n * | Day of week (formatting)        |  90 | E..EEE  | Mon, Tue, Wed, ..., Sun           |       |\n * |                                 |     | EEEE    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 |     | EEEEE   | M, T, W, T, F, S, S               |       |\n * |                                 |     | EEEEEE  | Mo, Tu, We, Th, Fr, Sa, Su        |       |\n * | ISO day of week (formatting)    |  90 | i       | 1, 2, 3, ..., 7                   | 5     |\n * |                                 |     | io      | 1st, 2nd, ..., 7th                | 5     |\n * |                                 |     | ii      | 01, 02, ..., 07                   | 5     |\n * |                                 |     | iii     | Mon, Tue, Wed, ..., Sun           | 5     |\n * |                                 |     | iiii    | Monday, Tuesday, ..., Sunday      | 2,5   |\n * |                                 |     | iiiii   | M, T, W, T, F, S, S               | 5     |\n * |                                 |     | iiiiii  | Mo, Tu, We, Th, Fr, Sa, Su        | 5     |\n * | Local day of week (formatting)  |  90 | e       | 2, 3, 4, ..., 1                   |       |\n * |                                 |     | eo      | 2nd, 3rd, ..., 1st                | 5     |\n * |                                 |     | ee      | 02, 03, ..., 01                   |       |\n * |                                 |     | eee     | Mon, Tue, Wed, ..., Sun           |       |\n * |                                 |     | eeee    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 |     | eeeee   | M, T, W, T, F, S, S               |       |\n * |                                 |     | eeeeee  | Mo, Tu, We, Th, Fr, Sa, Su        |       |\n * | Local day of week (stand-alone) |  90 | c       | 2, 3, 4, ..., 1                   |       |\n * |                                 |     | co      | 2nd, 3rd, ..., 1st                | 5     |\n * |                                 |     | cc      | 02, 03, ..., 01                   |       |\n * |                                 |     | ccc     | Mon, Tue, Wed, ..., Sun           |       |\n * |                                 |     | cccc    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 |     | ccccc   | M, T, W, T, F, S, S               |       |\n * |                                 |     | cccccc  | Mo, Tu, We, Th, Fr, Sa, Su        |       |\n * | AM, PM                          |  80 | a..aaa  | AM, PM                            |       |\n * |                                 |     | aaaa    | a.m., p.m.                        | 2     |\n * |                                 |     | aaaaa   | a, p                              |       |\n * | AM, PM, noon, midnight          |  80 | b..bbb  | AM, PM, noon, midnight            |       |\n * |                                 |     | bbbb    | a.m., p.m., noon, midnight        | 2     |\n * |                                 |     | bbbbb   | a, p, n, mi                       |       |\n * | Flexible day period             |  80 | B..BBB  | at night, in the morning, ...     |       |\n * |                                 |     | BBBB    | at night, in the morning, ...     | 2     |\n * |                                 |     | BBBBB   | at night, in the morning, ...     |       |\n * | Hour [1-12]                     |  70 | h       | 1, 2, ..., 11, 12                 |       |\n * |                                 |     | ho      | 1st, 2nd, ..., 11th, 12th         | 5     |\n * |                                 |     | hh      | 01, 02, ..., 11, 12               |       |\n * | Hour [0-23]                     |  70 | H       | 0, 1, 2, ..., 23                  |       |\n * |                                 |     | Ho      | 0th, 1st, 2nd, ..., 23rd          | 5     |\n * |                                 |     | HH      | 00, 01, 02, ..., 23               |       |\n * | Hour [0-11]                     |  70 | K       | 1, 2, ..., 11, 0                  |       |\n * |                                 |     | Ko      | 1st, 2nd, ..., 11th, 0th          | 5     |\n * |                                 |     | KK      | 01, 02, ..., 11, 00               |       |\n * | Hour [1-24]                     |  70 | k       | 24, 1, 2, ..., 23                 |       |\n * |                                 |     | ko      | 24th, 1st, 2nd, ..., 23rd         | 5     |\n * |                                 |     | kk      | 24, 01, 02, ..., 23               |       |\n * | Minute                          |  60 | m       | 0, 1, ..., 59                     |       |\n * |                                 |     | mo      | 0th, 1st, ..., 59th               | 5     |\n * |                                 |     | mm      | 00, 01, ..., 59                   |       |\n * | Second                          |  50 | s       | 0, 1, ..., 59                     |       |\n * |                                 |     | so      | 0th, 1st, ..., 59th               | 5     |\n * |                                 |     | ss      | 00, 01, ..., 59                   |       |\n * | Seconds timestamp               |  40 | t       | 512969520                         |       |\n * |                                 |     | tt      | ...                               | 2     |\n * | Fraction of second              |  30 | S       | 0, 1, ..., 9                      |       |\n * |                                 |     | SS      | 00, 01, ..., 99                   |       |\n * |                                 |     | SSS     | 000, 001, ..., 999                |       |\n * |                                 |     | SSSS    | ...                               | 2     |\n * | Milliseconds timestamp          |  20 | T       | 512969520900                      |       |\n * |                                 |     | TT      | ...                               | 2     |\n * | Timezone (ISO-8601 w/ Z)        |  10 | X       | -08, +0530, Z                     |       |\n * |                                 |     | XX      | -0800, +0530, Z                   |       |\n * |                                 |     | XXX     | -08:00, +05:30, Z                 |       |\n * |                                 |     | XXXX    | -0800, +0530, Z, +123456          | 2     |\n * |                                 |     | XXXXX   | -08:00, +05:30, Z, +12:34:56      |       |\n * | Timezone (ISO-8601 w/o Z)       |  10 | x       | -08, +0530, +00                   |       |\n * |                                 |     | xx      | -0800, +0530, +0000               |       |\n * |                                 |     | xxx     | -08:00, +05:30, +00:00            | 2     |\n * |                                 |     | xxxx    | -0800, +0530, +0000, +123456      |       |\n * |                                 |     | xxxxx   | -08:00, +05:30, +00:00, +12:34:56 |       |\n * | Long localized date             |  NA | P       | 05/29/1453                        | 5,8   |\n * |                                 |     | PP      | May 29, 1453                      |       |\n * |                                 |     | PPP     | May 29th, 1453                    |       |\n * |                                 |     | PPPP    | Sunday, May 29th, 1453            | 2,5,8 |\n * | Long localized time             |  NA | p       | 12:00 AM                          | 5,8   |\n * |                                 |     | pp      | 12:00:00 AM                       |       |\n * | Combination of date and time    |  NA | Pp      | 05/29/1453, 12:00 AM              |       |\n * |                                 |     | PPpp    | May 29, 1453, 12:00:00 AM         |       |\n * |                                 |     | PPPpp   | May 29th, 1453 at ...             |       |\n * |                                 |     | PPPPpp  | Sunday, May 29th, 1453 at ...     | 2,5,8 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n *    are the same as \"stand-alone\" units, but are different in some languages.\n *    \"Formatting\" units are declined according to the rules of the language\n *    in the context of a date. \"Stand-alone\" units are always nominative singular.\n *    In `format` function, they will produce different result:\n *\n *    `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n *    `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n *    `parse` will try to match both formatting and stand-alone units interchangably.\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n *    the single quote characters (see below).\n *    If the sequence is longer than listed in table:\n *    - for numerical units (`yyyyyyyy`) `parse` will try to match a number\n *      as wide as the sequence\n *    - for text units (`MMMMMMMM`) `parse` will try to match the widest variation of the unit.\n *      These variations are marked with \"2\" in the last column of the table.\n *\n * 3. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n *    These tokens represent the shortest form of the quarter.\n *\n * 4. The main difference between `y` and `u` patterns are B.C. years:\n *\n *    | Year | `y` | `u` |\n *    |------|-----|-----|\n *    | AC 1 |   1 |   1 |\n *    | BC 1 |   1 |   0 |\n *    | BC 2 |   2 |  -1 |\n *\n *    Also `yy` will try to guess the century of two digit year by proximity with `referenceDate`:\n *\n *    `parse('50', 'yy', new Date(2018, 0, 1)) //=> Sat Jan 01 2050 00:00:00`\n *\n *    `parse('75', 'yy', new Date(2018, 0, 1)) //=> Wed Jan 01 1975 00:00:00`\n *\n *    while `uu` will just assign the year as is:\n *\n *    `parse('50', 'uu', new Date(2018, 0, 1)) //=> Sat Jan 01 0050 00:00:00`\n *\n *    `parse('75', 'uu', new Date(2018, 0, 1)) //=> Tue Jan 01 0075 00:00:00`\n *\n *    The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n *    except local week-numbering years are dependent on `options.weekStartsOn`\n *    and `options.firstWeekContainsDate` (compare [setISOWeekYear]{@link https://date-fns.org/docs/setISOWeekYear}\n *    and [setWeekYear]{@link https://date-fns.org/docs/setWeekYear}).\n *\n * 5. These patterns are not in the Unicode Technical Standard #35:\n *    - `i`: ISO day of week\n *    - `I`: ISO week of year\n *    - `R`: ISO week-numbering year\n *    - `o`: ordinal number modifier\n *    - `P`: long localized date\n *    - `p`: long localized time\n *\n * 6. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n *    You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 7. `D` and `DD` tokens represent days of the year but they are ofthen confused with days of the month.\n *    You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 8. `P+` tokens do not have a defined priority since they are merely aliases to other tokens based\n *    on the given locale.\n *\n *    using `en-US` locale: `P` => `MM/dd/yyyy`\n *    using `en-US` locale: `p` => `hh:mm a`\n *    using `pt-BR` locale: `P` => `dd/MM/yyyy`\n *    using `pt-BR` locale: `p` => `HH:mm`\n *\n * Values will be assigned to the date in the descending order of its unit's priority.\n * Units of an equal priority overwrite each other in the order of appearance.\n *\n * If no values of higher priority are parsed (e.g. when parsing string 'January 1st' without a year),\n * the values will be taken from 3rd argument `referenceDate` which works as a context of parsing.\n *\n * `referenceDate` must be passed for correct work of the function.\n * If you're not sure which `referenceDate` to supply, create a new instance of Date:\n * `parse('02/11/2014', 'MM/dd/yyyy', new Date())`\n * In this case parsing will be done in the context of the current date.\n * If `referenceDate` is `Invalid Date` or a value not convertible to valid `Date`,\n * then `Invalid Date` will be returned.\n *\n * The result may vary by locale.\n *\n * If `formatString` matches with `dateString` but does not provides tokens, `referenceDate` will be returned.\n *\n * If parsing failed, `Invalid Date` will be returned.\n * Invalid Date is a Date, whose time value is NaN.\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param {String} dateString - the string to parse\n * @param {String} formatString - the string of tokens\n * @param {Date|Number} referenceDate - defines values missing from the parsed dateString\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n *   see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n *   see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @returns {Date} the parsed date\n * @throws {TypeError} 3 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} `options.locale` must contain `match` property\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Parse 11 February 2014 from middle-endian format:\n * var result = parse('02/11/2014', 'MM/dd/yyyy', new Date())\n * //=> Tue Feb 11 2014 00:00:00\n *\n * @example\n * // Parse 28th of February in Esperanto locale in the context of 2010 year:\n * import eo from 'date-fns/locale/eo'\n * var result = parse('28-a de februaro', \"do 'de' MMMM\", new Date(2010, 0, 1), {\n *   locale: eo\n * })\n * //=> Sun Feb 28 2010 00:00:00\n */\nfunction parse(dirtyDateString, dirtyFormatString, dirtyReferenceDate, options) {\n  var _ref, _options$locale, _ref2, _ref3, _ref4, _options$firstWeekCon, _options$locale2, _options$locale2$opti, _defaultOptions$local, _defaultOptions$local2, _ref5, _ref6, _ref7, _options$weekStartsOn, _options$locale3, _options$locale3$opti, _defaultOptions$local3, _defaultOptions$local4;\n  (0, _index9.default)(3, arguments);\n  var dateString = String(dirtyDateString);\n  var formatString = String(dirtyFormatString);\n  var defaultOptions = (0, _index11.getDefaultOptions)();\n  var locale = (_ref = (_options$locale = options === null || options === void 0 ? void 0 : options.locale) !== null && _options$locale !== void 0 ? _options$locale : defaultOptions.locale) !== null && _ref !== void 0 ? _ref : _index.default;\n  if (!locale.match) {\n    throw new RangeError('locale must contain match property');\n  }\n  var firstWeekContainsDate = (0, _index8.default)((_ref2 = (_ref3 = (_ref4 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale2 = options.locale) === null || _options$locale2 === void 0 ? void 0 : (_options$locale2$opti = _options$locale2.options) === null || _options$locale2$opti === void 0 ? void 0 : _options$locale2$opti.firstWeekContainsDate) !== null && _ref4 !== void 0 ? _ref4 : defaultOptions.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : 1);\n\n  // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n  if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n    throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n  }\n  var weekStartsOn = (0, _index8.default)((_ref5 = (_ref6 = (_ref7 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale3 = options.locale) === null || _options$locale3 === void 0 ? void 0 : (_options$locale3$opti = _options$locale3.options) === null || _options$locale3$opti === void 0 ? void 0 : _options$locale3$opti.weekStartsOn) !== null && _ref7 !== void 0 ? _ref7 : defaultOptions.weekStartsOn) !== null && _ref6 !== void 0 ? _ref6 : (_defaultOptions$local3 = defaultOptions.locale) === null || _defaultOptions$local3 === void 0 ? void 0 : (_defaultOptions$local4 = _defaultOptions$local3.options) === null || _defaultOptions$local4 === void 0 ? void 0 : _defaultOptions$local4.weekStartsOn) !== null && _ref5 !== void 0 ? _ref5 : 0);\n\n  // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n  if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n    throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n  }\n  if (formatString === '') {\n    if (dateString === '') {\n      return (0, _index3.default)(dirtyReferenceDate);\n    } else {\n      return new Date(NaN);\n    }\n  }\n  var subFnOptions = {\n    firstWeekContainsDate: firstWeekContainsDate,\n    weekStartsOn: weekStartsOn,\n    locale: locale\n  };\n\n  // If timezone isn't specified, it will be set to the system timezone\n  var setters = [new _Setter.DateToSystemTimezoneSetter()];\n  var tokens = formatString.match(longFormattingTokensRegExp).map(function (substring) {\n    var firstCharacter = substring[0];\n    if (firstCharacter in _index5.default) {\n      var longFormatter = _index5.default[firstCharacter];\n      return longFormatter(substring, locale.formatLong);\n    }\n    return substring;\n  }).join('').match(formattingTokensRegExp);\n  var usedTokens = [];\n  var _iterator = (0, _createForOfIteratorHelper2.default)(tokens),\n    _step;\n  try {\n    var _loop = function _loop() {\n      var token = _step.value;\n      if (!(options !== null && options !== void 0 && options.useAdditionalWeekYearTokens) && (0, _index7.isProtectedWeekYearToken)(token)) {\n        (0, _index7.throwProtectedError)(token, formatString, dirtyDateString);\n      }\n      if (!(options !== null && options !== void 0 && options.useAdditionalDayOfYearTokens) && (0, _index7.isProtectedDayOfYearToken)(token)) {\n        (0, _index7.throwProtectedError)(token, formatString, dirtyDateString);\n      }\n      var firstCharacter = token[0];\n      var parser = _index10.parsers[firstCharacter];\n      if (parser) {\n        var incompatibleTokens = parser.incompatibleTokens;\n        if (Array.isArray(incompatibleTokens)) {\n          var incompatibleToken = usedTokens.find(function (usedToken) {\n            return incompatibleTokens.includes(usedToken.token) || usedToken.token === firstCharacter;\n          });\n          if (incompatibleToken) {\n            throw new RangeError(\"The format string mustn't contain `\".concat(incompatibleToken.fullToken, \"` and `\").concat(token, \"` at the same time\"));\n          }\n        } else if (parser.incompatibleTokens === '*' && usedTokens.length > 0) {\n          throw new RangeError(\"The format string mustn't contain `\".concat(token, \"` and any other token at the same time\"));\n        }\n        usedTokens.push({\n          token: firstCharacter,\n          fullToken: token\n        });\n        var parseResult = parser.run(dateString, token, locale.match, subFnOptions);\n        if (!parseResult) {\n          return {\n            v: new Date(NaN)\n          };\n        }\n        setters.push(parseResult.setter);\n        dateString = parseResult.rest;\n      } else {\n        if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n          throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n        }\n\n        // Replace two single quote characters with one single quote character\n        if (token === \"''\") {\n          token = \"'\";\n        } else if (firstCharacter === \"'\") {\n          token = cleanEscapedString(token);\n        }\n\n        // Cut token from string, or, if string doesn't match the token, return Invalid Date\n        if (dateString.indexOf(token) === 0) {\n          dateString = dateString.slice(token.length);\n        } else {\n          return {\n            v: new Date(NaN)\n          };\n        }\n      }\n    };\n    for (_iterator.s(); !(_step = _iterator.n()).done;) {\n      var _ret = _loop();\n      if ((0, _typeof2.default)(_ret) === \"object\") return _ret.v;\n    }\n\n    // Check if the remaining input contains something other than whitespace\n  } catch (err) {\n    _iterator.e(err);\n  } finally {\n    _iterator.f();\n  }\n  if (dateString.length > 0 && notWhitespaceRegExp.test(dateString)) {\n    return new Date(NaN);\n  }\n  var uniquePrioritySetters = setters.map(function (setter) {\n    return setter.priority;\n  }).sort(function (a, b) {\n    return b - a;\n  }).filter(function (priority, index, array) {\n    return array.indexOf(priority) === index;\n  }).map(function (priority) {\n    return setters.filter(function (setter) {\n      return setter.priority === priority;\n    }).sort(function (a, b) {\n      return b.subPriority - a.subPriority;\n    });\n  }).map(function (setterArray) {\n    return setterArray[0];\n  });\n  var date = (0, _index3.default)(dirtyReferenceDate);\n  if (isNaN(date.getTime())) {\n    return new Date(NaN);\n  }\n\n  // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n  var utcDate = (0, _index2.default)(date, (0, _index6.default)(date));\n  var flags = {};\n  var _iterator2 = (0, _createForOfIteratorHelper2.default)(uniquePrioritySetters),\n    _step2;\n  try {\n    for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n      var setter = _step2.value;\n      if (!setter.validate(utcDate, subFnOptions)) {\n        return new Date(NaN);\n      }\n      var result = setter.set(utcDate, flags, subFnOptions);\n      // Result is tuple (date, flags)\n      if (Array.isArray(result)) {\n        utcDate = result[0];\n        (0, _index4.default)(flags, result[1]);\n        // Result is date\n      } else {\n        utcDate = result;\n      }\n    }\n  } catch (err) {\n    _iterator2.e(err);\n  } finally {\n    _iterator2.f();\n  }\n  return utcDate;\n}\nfunction cleanEscapedString(input) {\n  return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\");\n}\nmodule.exports = exports.default;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = parseISO;\nvar _index = require(\"../constants/index.js\");\nvar _index2 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../_lib/toInteger/index.js\"));\n/**\n * @name parseISO\n * @category Common Helpers\n * @summary Parse ISO string\n *\n * @description\n * Parse the given string in ISO 8601 format and return an instance of Date.\n *\n * Function accepts complete ISO 8601 formats as well as partial implementations.\n * ISO 8601: http://en.wikipedia.org/wiki/ISO_8601\n *\n * If the argument isn't a string, the function cannot parse the string or\n * the values are invalid, it returns Invalid Date.\n *\n * @param {String} argument - the value to convert\n * @param {Object} [options] - an object with options.\n * @param {0|1|2} [options.additionalDigits=2] - the additional number of digits in the extended year format\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Convert string '2014-02-11T11:30:30' to date:\n * const result = parseISO('2014-02-11T11:30:30')\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert string '+02014101' to date,\n * // if the additional number of digits in the extended year format is 1:\n * const result = parseISO('+02014101', { additionalDigits: 1 })\n * //=> Fri Apr 11 2014 00:00:00\n */\nfunction parseISO(argument, options) {\n  var _options$additionalDi;\n  (0, _index2.default)(1, arguments);\n  var additionalDigits = (0, _index3.default)((_options$additionalDi = options === null || options === void 0 ? void 0 : options.additionalDigits) !== null && _options$additionalDi !== void 0 ? _options$additionalDi : 2);\n  if (additionalDigits !== 2 && additionalDigits !== 1 && additionalDigits !== 0) {\n    throw new RangeError('additionalDigits must be 0, 1 or 2');\n  }\n  if (!(typeof argument === 'string' || Object.prototype.toString.call(argument) === '[object String]')) {\n    return new Date(NaN);\n  }\n  var dateStrings = splitDateString(argument);\n  var date;\n  if (dateStrings.date) {\n    var parseYearResult = parseYear(dateStrings.date, additionalDigits);\n    date = parseDate(parseYearResult.restDateString, parseYearResult.year);\n  }\n  if (!date || isNaN(date.getTime())) {\n    return new Date(NaN);\n  }\n  var timestamp = date.getTime();\n  var time = 0;\n  var offset;\n  if (dateStrings.time) {\n    time = parseTime(dateStrings.time);\n    if (isNaN(time)) {\n      return new Date(NaN);\n    }\n  }\n  if (dateStrings.timezone) {\n    offset = parseTimezone(dateStrings.timezone);\n    if (isNaN(offset)) {\n      return new Date(NaN);\n    }\n  } else {\n    var dirtyDate = new Date(timestamp + time);\n    // js parsed string assuming it's in UTC timezone\n    // but we need it to be parsed in our timezone\n    // so we use utc values to build date in our timezone.\n    // Year values from 0 to 99 map to the years 1900 to 1999\n    // so set year explicitly with setFullYear.\n    var result = new Date(0);\n    result.setFullYear(dirtyDate.getUTCFullYear(), dirtyDate.getUTCMonth(), dirtyDate.getUTCDate());\n    result.setHours(dirtyDate.getUTCHours(), dirtyDate.getUTCMinutes(), dirtyDate.getUTCSeconds(), dirtyDate.getUTCMilliseconds());\n    return result;\n  }\n  return new Date(timestamp + time + offset);\n}\nvar patterns = {\n  dateTimeDelimiter: /[T ]/,\n  timeZoneDelimiter: /[Z ]/i,\n  timezone: /([Z+-].*)$/\n};\nvar dateRegex = /^-?(?:(\\d{3})|(\\d{2})(?:-?(\\d{2}))?|W(\\d{2})(?:-?(\\d{1}))?|)$/;\nvar timeRegex = /^(\\d{2}(?:[.,]\\d*)?)(?::?(\\d{2}(?:[.,]\\d*)?))?(?::?(\\d{2}(?:[.,]\\d*)?))?$/;\nvar timezoneRegex = /^([+-])(\\d{2})(?::?(\\d{2}))?$/;\nfunction splitDateString(dateString) {\n  var dateStrings = {};\n  var array = dateString.split(patterns.dateTimeDelimiter);\n  var timeString;\n\n  // The regex match should only return at maximum two array elements.\n  // [date], [time], or [date, time].\n  if (array.length > 2) {\n    return dateStrings;\n  }\n  if (/:/.test(array[0])) {\n    timeString = array[0];\n  } else {\n    dateStrings.date = array[0];\n    timeString = array[1];\n    if (patterns.timeZoneDelimiter.test(dateStrings.date)) {\n      dateStrings.date = dateString.split(patterns.timeZoneDelimiter)[0];\n      timeString = dateString.substr(dateStrings.date.length, dateString.length);\n    }\n  }\n  if (timeString) {\n    var token = patterns.timezone.exec(timeString);\n    if (token) {\n      dateStrings.time = timeString.replace(token[1], '');\n      dateStrings.timezone = token[1];\n    } else {\n      dateStrings.time = timeString;\n    }\n  }\n  return dateStrings;\n}\nfunction parseYear(dateString, additionalDigits) {\n  var regex = new RegExp('^(?:(\\\\d{4}|[+-]\\\\d{' + (4 + additionalDigits) + '})|(\\\\d{2}|[+-]\\\\d{' + (2 + additionalDigits) + '})$)');\n  var captures = dateString.match(regex);\n  // Invalid ISO-formatted year\n  if (!captures) return {\n    year: NaN,\n    restDateString: ''\n  };\n  var year = captures[1] ? parseInt(captures[1]) : null;\n  var century = captures[2] ? parseInt(captures[2]) : null;\n\n  // either year or century is null, not both\n  return {\n    year: century === null ? year : century * 100,\n    restDateString: dateString.slice((captures[1] || captures[2]).length)\n  };\n}\nfunction parseDate(dateString, year) {\n  // Invalid ISO-formatted year\n  if (year === null) return new Date(NaN);\n  var captures = dateString.match(dateRegex);\n  // Invalid ISO-formatted string\n  if (!captures) return new Date(NaN);\n  var isWeekDate = !!captures[4];\n  var dayOfYear = parseDateUnit(captures[1]);\n  var month = parseDateUnit(captures[2]) - 1;\n  var day = parseDateUnit(captures[3]);\n  var week = parseDateUnit(captures[4]);\n  var dayOfWeek = parseDateUnit(captures[5]) - 1;\n  if (isWeekDate) {\n    if (!validateWeekDate(year, week, dayOfWeek)) {\n      return new Date(NaN);\n    }\n    return dayOfISOWeekYear(year, week, dayOfWeek);\n  } else {\n    var date = new Date(0);\n    if (!validateDate(year, month, day) || !validateDayOfYearDate(year, dayOfYear)) {\n      return new Date(NaN);\n    }\n    date.setUTCFullYear(year, month, Math.max(dayOfYear, day));\n    return date;\n  }\n}\nfunction parseDateUnit(value) {\n  return value ? parseInt(value) : 1;\n}\nfunction parseTime(timeString) {\n  var captures = timeString.match(timeRegex);\n  if (!captures) return NaN; // Invalid ISO-formatted time\n\n  var hours = parseTimeUnit(captures[1]);\n  var minutes = parseTimeUnit(captures[2]);\n  var seconds = parseTimeUnit(captures[3]);\n  if (!validateTime(hours, minutes, seconds)) {\n    return NaN;\n  }\n  return hours * _index.millisecondsInHour + minutes * _index.millisecondsInMinute + seconds * 1000;\n}\nfunction parseTimeUnit(value) {\n  return value && parseFloat(value.replace(',', '.')) || 0;\n}\nfunction parseTimezone(timezoneString) {\n  if (timezoneString === 'Z') return 0;\n  var captures = timezoneString.match(timezoneRegex);\n  if (!captures) return 0;\n  var sign = captures[1] === '+' ? -1 : 1;\n  var hours = parseInt(captures[2]);\n  var minutes = captures[3] && parseInt(captures[3]) || 0;\n  if (!validateTimezone(hours, minutes)) {\n    return NaN;\n  }\n  return sign * (hours * _index.millisecondsInHour + minutes * _index.millisecondsInMinute);\n}\nfunction dayOfISOWeekYear(isoWeekYear, week, day) {\n  var date = new Date(0);\n  date.setUTCFullYear(isoWeekYear, 0, 4);\n  var fourthOfJanuaryDay = date.getUTCDay() || 7;\n  var diff = (week - 1) * 7 + day + 1 - fourthOfJanuaryDay;\n  date.setUTCDate(date.getUTCDate() + diff);\n  return date;\n}\n\n// Validation functions\n\n// February is null to handle the leap year (using ||)\nvar daysInMonths = [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nfunction isLeapYearIndex(year) {\n  return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;\n}\nfunction validateDate(year, month, date) {\n  return month >= 0 && month <= 11 && date >= 1 && date <= (daysInMonths[month] || (isLeapYearIndex(year) ? 29 : 28));\n}\nfunction validateDayOfYearDate(year, dayOfYear) {\n  return dayOfYear >= 1 && dayOfYear <= (isLeapYearIndex(year) ? 366 : 365);\n}\nfunction validateWeekDate(_year, week, day) {\n  return week >= 1 && week <= 53 && day >= 0 && day <= 6;\n}\nfunction validateTime(hours, minutes, seconds) {\n  if (hours === 24) {\n    return minutes === 0 && seconds === 0;\n  }\n  return seconds >= 0 && seconds < 60 && minutes >= 0 && minutes < 60 && hours >= 0 && hours < 25;\n}\nfunction validateTimezone(_hours, minutes) {\n  return minutes >= 0 && minutes <= 59;\n}\nmodule.exports = exports.default;", "'use strict';Object.defineProperty(exports,'__esModule',{value:true});var react=require('react'),reactDom=require('react-dom');function _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n\n  _setPrototypeOf(subClass, superClass);\n}\n\nfunction _setPrototypeOf(o, p) {\n  _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n\n  return _setPrototypeOf(o, p);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n\n  return target;\n}\n\nfunction _assertThisInitialized(self) {\n  if (self === void 0) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return self;\n}/**\n * Check whether some DOM node is our Component's node.\n */\nfunction isNodeFound(current, componentNode, ignoreClass) {\n  if (current === componentNode) {\n    return true;\n  } // SVG <use/> elements do not technically reside in the rendered DOM, so\n  // they do not have classList directly, but they offer a link to their\n  // corresponding element, which can have classList. This extra check is for\n  // that case.\n  // See: http://www.w3.org/TR/SVG11/struct.html#InterfaceSVGUseElement\n  // Discussion: https://github.com/Pomax/react-onclickoutside/pull/17\n\n\n  if (current.correspondingElement) {\n    return current.correspondingElement.classList.contains(ignoreClass);\n  }\n\n  return current.classList.contains(ignoreClass);\n}\n/**\n * Try to find our node in a hierarchy of nodes, returning the document\n * node as highest node if our node is not found in the path up.\n */\n\nfunction findHighest(current, componentNode, ignoreClass) {\n  if (current === componentNode) {\n    return true;\n  } // If source=local then this event came from 'somewhere'\n  // inside and should be ignored. We could handle this with\n  // a layered approach, too, but that requires going back to\n  // thinking in terms of Dom node nesting, running counter\n  // to React's 'you shouldn't care about the DOM' philosophy.\n  // Also cover shadowRoot node by checking current.host\n\n\n  while (current.parentNode || current.host) {\n    // Only check normal node without shadowRoot\n    if (current.parentNode && isNodeFound(current, componentNode, ignoreClass)) {\n      return true;\n    }\n\n    current = current.parentNode || current.host;\n  }\n\n  return current;\n}\n/**\n * Check if the browser scrollbar was clicked\n */\n\nfunction clickedScrollbar(evt) {\n  return document.documentElement.clientWidth <= evt.clientX || document.documentElement.clientHeight <= evt.clientY;\n}// ideally will get replaced with external dep\n// when rafrex/detect-passive-events#4 and rafrex/detect-passive-events#5 get merged in\nvar testPassiveEventSupport = function testPassiveEventSupport() {\n  if (typeof window === 'undefined' || typeof window.addEventListener !== 'function') {\n    return;\n  }\n\n  var passive = false;\n  var options = Object.defineProperty({}, 'passive', {\n    get: function get() {\n      passive = true;\n    }\n  });\n\n  var noop = function noop() {};\n\n  window.addEventListener('testPassiveEventSupport', noop, options);\n  window.removeEventListener('testPassiveEventSupport', noop, options);\n  return passive;\n};function autoInc(seed) {\n  if (seed === void 0) {\n    seed = 0;\n  }\n\n  return function () {\n    return ++seed;\n  };\n}\n\nvar uid = autoInc();var passiveEventSupport;\nvar handlersMap = {};\nvar enabledInstances = {};\nvar touchEvents = ['touchstart', 'touchmove'];\nvar IGNORE_CLASS_NAME = 'ignore-react-onclickoutside';\n/**\n * Options for addEventHandler and removeEventHandler\n */\n\nfunction getEventHandlerOptions(instance, eventName) {\n  var handlerOptions = {};\n  var isTouchEvent = touchEvents.indexOf(eventName) !== -1;\n\n  if (isTouchEvent && passiveEventSupport) {\n    handlerOptions.passive = !instance.props.preventDefault;\n  }\n\n  return handlerOptions;\n}\n/**\n * This function generates the HOC function that you'll use\n * in order to impart onOutsideClick listening to an\n * arbitrary component. It gets called at the end of the\n * bootstrapping code to yield an instance of the\n * onClickOutsideHOC function defined inside setupHOC().\n */\n\n\nfunction onClickOutsideHOC(WrappedComponent, config) {\n  var _class, _temp;\n\n  var componentName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\n  return _temp = _class = /*#__PURE__*/function (_Component) {\n    _inheritsLoose(onClickOutside, _Component);\n\n    function onClickOutside(props) {\n      var _this;\n\n      _this = _Component.call(this, props) || this;\n\n      _this.__outsideClickHandler = function (event) {\n        if (typeof _this.__clickOutsideHandlerProp === 'function') {\n          _this.__clickOutsideHandlerProp(event);\n\n          return;\n        }\n\n        var instance = _this.getInstance();\n\n        if (typeof instance.props.handleClickOutside === 'function') {\n          instance.props.handleClickOutside(event);\n          return;\n        }\n\n        if (typeof instance.handleClickOutside === 'function') {\n          instance.handleClickOutside(event);\n          return;\n        }\n\n        throw new Error(\"WrappedComponent: \" + componentName + \" lacks a handleClickOutside(event) function for processing outside click events.\");\n      };\n\n      _this.__getComponentNode = function () {\n        var instance = _this.getInstance();\n\n        if (config && typeof config.setClickOutsideRef === 'function') {\n          return config.setClickOutsideRef()(instance);\n        }\n\n        if (typeof instance.setClickOutsideRef === 'function') {\n          return instance.setClickOutsideRef();\n        }\n\n        return reactDom.findDOMNode(instance);\n      };\n\n      _this.enableOnClickOutside = function () {\n        if (typeof document === 'undefined' || enabledInstances[_this._uid]) {\n          return;\n        }\n\n        if (typeof passiveEventSupport === 'undefined') {\n          passiveEventSupport = testPassiveEventSupport();\n        }\n\n        enabledInstances[_this._uid] = true;\n        var events = _this.props.eventTypes;\n\n        if (!events.forEach) {\n          events = [events];\n        }\n\n        handlersMap[_this._uid] = function (event) {\n          if (_this.componentNode === null) return;\n\n          if (_this.props.preventDefault) {\n            event.preventDefault();\n          }\n\n          if (_this.props.stopPropagation) {\n            event.stopPropagation();\n          }\n\n          if (_this.props.excludeScrollbar && clickedScrollbar(event)) return;\n          var current = event.composed && event.composedPath && event.composedPath().shift() || event.target;\n\n          if (findHighest(current, _this.componentNode, _this.props.outsideClickIgnoreClass) !== document) {\n            return;\n          }\n\n          _this.__outsideClickHandler(event);\n        };\n\n        events.forEach(function (eventName) {\n          document.addEventListener(eventName, handlersMap[_this._uid], getEventHandlerOptions(_assertThisInitialized(_this), eventName));\n        });\n      };\n\n      _this.disableOnClickOutside = function () {\n        delete enabledInstances[_this._uid];\n        var fn = handlersMap[_this._uid];\n\n        if (fn && typeof document !== 'undefined') {\n          var events = _this.props.eventTypes;\n\n          if (!events.forEach) {\n            events = [events];\n          }\n\n          events.forEach(function (eventName) {\n            return document.removeEventListener(eventName, fn, getEventHandlerOptions(_assertThisInitialized(_this), eventName));\n          });\n          delete handlersMap[_this._uid];\n        }\n      };\n\n      _this.getRef = function (ref) {\n        return _this.instanceRef = ref;\n      };\n\n      _this._uid = uid();\n      return _this;\n    }\n    /**\n     * Access the WrappedComponent's instance.\n     */\n\n\n    var _proto = onClickOutside.prototype;\n\n    _proto.getInstance = function getInstance() {\n      if (WrappedComponent.prototype && !WrappedComponent.prototype.isReactComponent) {\n        return this;\n      }\n\n      var ref = this.instanceRef;\n      return ref.getInstance ? ref.getInstance() : ref;\n    };\n\n    /**\n     * Add click listeners to the current document,\n     * linked to this component's state.\n     */\n    _proto.componentDidMount = function componentDidMount() {\n      // If we are in an environment without a DOM such\n      // as shallow rendering or snapshots then we exit\n      // early to prevent any unhandled errors being thrown.\n      if (typeof document === 'undefined' || !document.createElement) {\n        return;\n      }\n\n      var instance = this.getInstance();\n\n      if (config && typeof config.handleClickOutside === 'function') {\n        this.__clickOutsideHandlerProp = config.handleClickOutside(instance);\n\n        if (typeof this.__clickOutsideHandlerProp !== 'function') {\n          throw new Error(\"WrappedComponent: \" + componentName + \" lacks a function for processing outside click events specified by the handleClickOutside config option.\");\n        }\n      }\n\n      this.componentNode = this.__getComponentNode(); // return early so we dont initiate onClickOutside\n\n      if (this.props.disableOnClickOutside) return;\n      this.enableOnClickOutside();\n    };\n\n    _proto.componentDidUpdate = function componentDidUpdate() {\n      this.componentNode = this.__getComponentNode();\n    }\n    /**\n     * Remove all document's event listeners for this component\n     */\n    ;\n\n    _proto.componentWillUnmount = function componentWillUnmount() {\n      this.disableOnClickOutside();\n    }\n    /**\n     * Can be called to explicitly enable event listening\n     * for clicks and touches outside of this element.\n     */\n    ;\n\n    /**\n     * Pass-through render\n     */\n    _proto.render = function render() {\n      // eslint-disable-next-line no-unused-vars\n      var _this$props = this.props;\n          _this$props.excludeScrollbar;\n          var props = _objectWithoutPropertiesLoose(_this$props, [\"excludeScrollbar\"]);\n\n      if (WrappedComponent.prototype && WrappedComponent.prototype.isReactComponent) {\n        props.ref = this.getRef;\n      } else {\n        props.wrappedRef = this.getRef;\n      }\n\n      props.disableOnClickOutside = this.disableOnClickOutside;\n      props.enableOnClickOutside = this.enableOnClickOutside;\n      return react.createElement(WrappedComponent, props);\n    };\n\n    return onClickOutside;\n  }(react.Component), _class.displayName = \"OnClickOutside(\" + componentName + \")\", _class.defaultProps = {\n    eventTypes: ['mousedown', 'touchstart'],\n    excludeScrollbar: config && config.excludeScrollbar || false,\n    outsideClickIgnoreClass: IGNORE_CLASS_NAME,\n    preventDefault: false,\n    stopPropagation: false\n  }, _class.getClass = function () {\n    return WrappedComponent.getClass ? WrappedComponent.getClass() : WrappedComponent;\n  }, _temp;\n}exports.IGNORE_CLASS_NAME=IGNORE_CLASS_NAME;exports.default=onClickOutsideHOC;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.Manager = Manager;\nexports.ManagerReferenceNodeSetterContext = exports.ManagerReferenceNodeContext = void 0;\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nvar ManagerReferenceNodeContext = React.createContext();\nexports.ManagerReferenceNodeContext = ManagerReferenceNodeContext;\nvar ManagerReferenceNodeSetterContext = React.createContext();\nexports.ManagerReferenceNodeSetterContext = ManagerReferenceNodeSetterContext;\n\nfunction Manager(_ref) {\n  var children = _ref.children;\n\n  var _React$useState = React.useState(null),\n      referenceNode = _React$useState[0],\n      setReferenceNode = _React$useState[1];\n\n  var hasUnmounted = React.useRef(false);\n  React.useEffect(function () {\n    return function () {\n      hasUnmounted.current = true;\n    };\n  }, []);\n  var handleSetReferenceNode = React.useCallback(function (node) {\n    if (!hasUnmounted.current) {\n      setReferenceNode(node);\n    }\n  }, []);\n  return /*#__PURE__*/React.createElement(ManagerReferenceNodeContext.Provider, {\n    value: referenceNode\n  }, /*#__PURE__*/React.createElement(ManagerReferenceNodeSetterContext.Provider, {\n    value: handleSetReferenceNode\n  }, children));\n}", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.useIsomorphicLayoutEffect = exports.fromEntries = exports.setRef = exports.safeInvoke = exports.unwrapArray = void 0;\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\n/**\n * Takes an argument and if it's an array, returns the first item in the array,\n * otherwise returns the argument. Used for Preact compatibility.\n */\nvar unwrapArray = function unwrapArray(arg) {\n  return Array.isArray(arg) ? arg[0] : arg;\n};\n/**\n * Takes a maybe-undefined function and arbitrary args and invokes the function\n * only if it is defined.\n */\n\n\nexports.unwrapArray = unwrapArray;\n\nvar safeInvoke = function safeInvoke(fn) {\n  if (typeof fn === 'function') {\n    for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      args[_key - 1] = arguments[_key];\n    }\n\n    return fn.apply(void 0, args);\n  }\n};\n/**\n * Sets a ref using either a ref callback or a ref object\n */\n\n\nexports.safeInvoke = safeInvoke;\n\nvar setRef = function setRef(ref, node) {\n  // if its a function call it\n  if (typeof ref === 'function') {\n    return safeInvoke(ref, node);\n  } // otherwise we should treat it as a ref object\n  else if (ref != null) {\n      ref.current = node;\n    }\n};\n/**\n * Simple ponyfill for Object.fromEntries\n */\n\n\nexports.setRef = setRef;\n\nvar fromEntries = function fromEntries(entries) {\n  return entries.reduce(function (acc, _ref) {\n    var key = _ref[0],\n        value = _ref[1];\n    acc[key] = value;\n    return acc;\n  }, {});\n};\n/**\n * Small wrapper around `useLayoutEffect` to get rid of the warning on SSR envs\n */\n\n\nexports.fromEntries = fromEntries;\nvar useIsomorphicLayoutEffect = typeof window !== 'undefined' && window.document && window.document.createElement ? React.useLayoutEffect : React.useEffect;\nexports.useIsomorphicLayoutEffect = useIsomorphicLayoutEffect;", "/* global Map:readonly, Set:readonly, ArrayBuffer:readonly */\n\nvar hasElementType = typeof Element !== 'undefined';\nvar hasMap = typeof Map === 'function';\nvar hasSet = typeof Set === 'function';\nvar hasArrayBuffer = typeof ArrayBuffer === 'function' && !!ArrayBuffer.isView;\n\n// Note: We **don't** need `envHasBigInt64Array` in fde es6/index.js\n\nfunction equal(a, b) {\n  // START: fast-deep-equal es6/index.js 3.1.3\n  if (a === b) return true;\n\n  if (a && b && typeof a == 'object' && typeof b == 'object') {\n    if (a.constructor !== b.constructor) return false;\n\n    var length, i, keys;\n    if (Array.isArray(a)) {\n      length = a.length;\n      if (length != b.length) return false;\n      for (i = length; i-- !== 0;)\n        if (!equal(a[i], b[i])) return false;\n      return true;\n    }\n\n    // START: Modifications:\n    // 1. Extra `has<Type> &&` helpers in initial condition allow es6 code\n    //    to co-exist with es5.\n    // 2. Replace `for of` with es5 compliant iteration using `for`.\n    //    Basically, take:\n    //\n    //    ```js\n    //    for (i of a.entries())\n    //      if (!b.has(i[0])) return false;\n    //    ```\n    //\n    //    ... and convert to:\n    //\n    //    ```js\n    //    it = a.entries();\n    //    while (!(i = it.next()).done)\n    //      if (!b.has(i.value[0])) return false;\n    //    ```\n    //\n    //    **Note**: `i` access switches to `i.value`.\n    var it;\n    if (hasMap && (a instanceof Map) && (b instanceof Map)) {\n      if (a.size !== b.size) return false;\n      it = a.entries();\n      while (!(i = it.next()).done)\n        if (!b.has(i.value[0])) return false;\n      it = a.entries();\n      while (!(i = it.next()).done)\n        if (!equal(i.value[1], b.get(i.value[0]))) return false;\n      return true;\n    }\n\n    if (hasSet && (a instanceof Set) && (b instanceof Set)) {\n      if (a.size !== b.size) return false;\n      it = a.entries();\n      while (!(i = it.next()).done)\n        if (!b.has(i.value[0])) return false;\n      return true;\n    }\n    // END: Modifications\n\n    if (hasArrayBuffer && ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n      length = a.length;\n      if (length != b.length) return false;\n      for (i = length; i-- !== 0;)\n        if (a[i] !== b[i]) return false;\n      return true;\n    }\n\n    if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n    // START: Modifications:\n    // Apply guards for `Object.create(null)` handling. See:\n    // - https://github.com/FormidableLabs/react-fast-compare/issues/64\n    // - https://github.com/epoberezkin/fast-deep-equal/issues/49\n    if (a.valueOf !== Object.prototype.valueOf && typeof a.valueOf === 'function' && typeof b.valueOf === 'function') return a.valueOf() === b.valueOf();\n    if (a.toString !== Object.prototype.toString && typeof a.toString === 'function' && typeof b.toString === 'function') return a.toString() === b.toString();\n    // END: Modifications\n\n    keys = Object.keys(a);\n    length = keys.length;\n    if (length !== Object.keys(b).length) return false;\n\n    for (i = length; i-- !== 0;)\n      if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n    // END: fast-deep-equal\n\n    // START: react-fast-compare\n    // custom handling for DOM elements\n    if (hasElementType && a instanceof Element) return false;\n\n    // custom handling for React/Preact\n    for (i = length; i-- !== 0;) {\n      if ((keys[i] === '_owner' || keys[i] === '__v' || keys[i] === '__o') && a.$$typeof) {\n        // React-specific: avoid traversing React elements' _owner\n        // Preact-specific: avoid traversing Preact elements' __v and __o\n        //    __v = $_original / $_vnode\n        //    __o = $_owner\n        // These properties contain circular references and are not needed when\n        // comparing the actual elements (and not their owners)\n        // .$$typeof and ._store on just reasonable markers of elements\n\n        continue;\n      }\n\n      // all other properties should be traversed as usual\n      if (!equal(a[keys[i]], b[keys[i]])) return false;\n    }\n    // END: react-fast-compare\n\n    // START: fast-deep-equal\n    return true;\n  }\n\n  return a !== a && b !== b;\n}\n// end fast-deep-equal\n\nmodule.exports = function isEqual(a, b) {\n  try {\n    return equal(a, b);\n  } catch (error) {\n    if (((error.message || '').match(/stack|recursion/i))) {\n      // warn on circular references, don't crash\n      // browsers give this different errors name and messages:\n      // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n      // firefox: \"InternalError\", too much recursion\"\n      // edge: \"Error\", \"Out of stack space\"\n      console.warn('react-fast-compare cannot handle circular refs');\n      return false;\n    }\n    // some other error. we should definitely know about these\n    throw error;\n  }\n};\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.usePopper = void 0;\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar ReactDOM = _interopRequireWildcard(require(\"react-dom\"));\n\nvar _core = require(\"@popperjs/core\");\n\nvar _reactFastCompare = _interopRequireDefault(require(\"react-fast-compare\"));\n\nvar _utils = require(\"./utils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nvar EMPTY_MODIFIERS = [];\n\nvar usePopper = function usePopper(referenceElement, popperElement, options) {\n  if (options === void 0) {\n    options = {};\n  }\n\n  var prevOptions = React.useRef(null);\n  var optionsWithDefaults = {\n    onFirstUpdate: options.onFirstUpdate,\n    placement: options.placement || 'bottom',\n    strategy: options.strategy || 'absolute',\n    modifiers: options.modifiers || EMPTY_MODIFIERS\n  };\n\n  var _React$useState = React.useState({\n    styles: {\n      popper: {\n        position: optionsWithDefaults.strategy,\n        left: '0',\n        top: '0'\n      },\n      arrow: {\n        position: 'absolute'\n      }\n    },\n    attributes: {}\n  }),\n      state = _React$useState[0],\n      setState = _React$useState[1];\n\n  var updateStateModifier = React.useMemo(function () {\n    return {\n      name: 'updateState',\n      enabled: true,\n      phase: 'write',\n      fn: function fn(_ref) {\n        var state = _ref.state;\n        var elements = Object.keys(state.elements);\n        ReactDOM.flushSync(function () {\n          setState({\n            styles: (0, _utils.fromEntries)(elements.map(function (element) {\n              return [element, state.styles[element] || {}];\n            })),\n            attributes: (0, _utils.fromEntries)(elements.map(function (element) {\n              return [element, state.attributes[element]];\n            }))\n          });\n        });\n      },\n      requires: ['computeStyles']\n    };\n  }, []);\n  var popperOptions = React.useMemo(function () {\n    var newOptions = {\n      onFirstUpdate: optionsWithDefaults.onFirstUpdate,\n      placement: optionsWithDefaults.placement,\n      strategy: optionsWithDefaults.strategy,\n      modifiers: [].concat(optionsWithDefaults.modifiers, [updateStateModifier, {\n        name: 'applyStyles',\n        enabled: false\n      }])\n    };\n\n    if ((0, _reactFastCompare[\"default\"])(prevOptions.current, newOptions)) {\n      return prevOptions.current || newOptions;\n    } else {\n      prevOptions.current = newOptions;\n      return newOptions;\n    }\n  }, [optionsWithDefaults.onFirstUpdate, optionsWithDefaults.placement, optionsWithDefaults.strategy, optionsWithDefaults.modifiers, updateStateModifier]);\n  var popperInstanceRef = React.useRef();\n  (0, _utils.useIsomorphicLayoutEffect)(function () {\n    if (popperInstanceRef.current) {\n      popperInstanceRef.current.setOptions(popperOptions);\n    }\n  }, [popperOptions]);\n  (0, _utils.useIsomorphicLayoutEffect)(function () {\n    if (referenceElement == null || popperElement == null) {\n      return;\n    }\n\n    var createPopper = options.createPopper || _core.createPopper;\n    var popperInstance = createPopper(referenceElement, popperElement, popperOptions);\n    popperInstanceRef.current = popperInstance;\n    return function () {\n      popperInstance.destroy();\n      popperInstanceRef.current = null;\n    };\n  }, [referenceElement, popperElement, options.createPopper]);\n  return {\n    state: popperInstanceRef.current ? popperInstanceRef.current.state : null,\n    styles: state.styles,\n    attributes: state.attributes,\n    update: popperInstanceRef.current ? popperInstanceRef.current.update : null,\n    forceUpdate: popperInstanceRef.current ? popperInstanceRef.current.forceUpdate : null\n  };\n};\n\nexports.usePopper = usePopper;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.Popper = Popper;\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _Manager = require(\"./Manager\");\n\nvar _utils = require(\"./utils\");\n\nvar _usePopper2 = require(\"./usePopper\");\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nvar NOOP = function NOOP() {\n  return void 0;\n};\n\nvar NOOP_PROMISE = function NOOP_PROMISE() {\n  return Promise.resolve(null);\n};\n\nvar EMPTY_MODIFIERS = [];\n\nfunction Popper(_ref) {\n  var _ref$placement = _ref.placement,\n      placement = _ref$placement === void 0 ? 'bottom' : _ref$placement,\n      _ref$strategy = _ref.strategy,\n      strategy = _ref$strategy === void 0 ? 'absolute' : _ref$strategy,\n      _ref$modifiers = _ref.modifiers,\n      modifiers = _ref$modifiers === void 0 ? EMPTY_MODIFIERS : _ref$modifiers,\n      referenceElement = _ref.referenceElement,\n      onFirstUpdate = _ref.onFirstUpdate,\n      innerRef = _ref.innerRef,\n      children = _ref.children;\n  var referenceNode = React.useContext(_Manager.ManagerReferenceNodeContext);\n\n  var _React$useState = React.useState(null),\n      popperElement = _React$useState[0],\n      setPopperElement = _React$useState[1];\n\n  var _React$useState2 = React.useState(null),\n      arrowElement = _React$useState2[0],\n      setArrowElement = _React$useState2[1];\n\n  React.useEffect(function () {\n    (0, _utils.setRef)(innerRef, popperElement);\n  }, [innerRef, popperElement]);\n  var options = React.useMemo(function () {\n    return {\n      placement: placement,\n      strategy: strategy,\n      onFirstUpdate: onFirstUpdate,\n      modifiers: [].concat(modifiers, [{\n        name: 'arrow',\n        enabled: arrowElement != null,\n        options: {\n          element: arrowElement\n        }\n      }])\n    };\n  }, [placement, strategy, onFirstUpdate, modifiers, arrowElement]);\n\n  var _usePopper = (0, _usePopper2.usePopper)(referenceElement || referenceNode, popperElement, options),\n      state = _usePopper.state,\n      styles = _usePopper.styles,\n      forceUpdate = _usePopper.forceUpdate,\n      update = _usePopper.update;\n\n  var childrenProps = React.useMemo(function () {\n    return {\n      ref: setPopperElement,\n      style: styles.popper,\n      placement: state ? state.placement : placement,\n      hasPopperEscaped: state && state.modifiersData.hide ? state.modifiersData.hide.hasPopperEscaped : null,\n      isReferenceHidden: state && state.modifiersData.hide ? state.modifiersData.hide.isReferenceHidden : null,\n      arrowProps: {\n        style: styles.arrow,\n        ref: setArrowElement\n      },\n      forceUpdate: forceUpdate || NOOP,\n      update: update || NOOP_PROMISE\n    };\n  }, [setPopperElement, setArrowElement, placement, state, styles, update, forceUpdate]);\n  return (0, _utils.unwrapArray)(children)(childrenProps);\n}", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.Reference = Reference;\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _warning = _interopRequireDefault(require(\"warning\"));\n\nvar _Manager = require(\"./Manager\");\n\nvar _utils = require(\"./utils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction Reference(_ref) {\n  var children = _ref.children,\n      innerRef = _ref.innerRef;\n  var setReferenceNode = React.useContext(_Manager.ManagerReferenceNodeSetterContext);\n  var refHandler = React.useCallback(function (node) {\n    (0, _utils.setRef)(innerRef, node);\n    (0, _utils.safeInvoke)(setReferenceNode, node);\n  }, [innerRef, setReferenceNode]); // ran on unmount\n  // eslint-disable-next-line react-hooks/exhaustive-deps\n\n  React.useEffect(function () {\n    return function () {\n      return (0, _utils.setRef)(innerRef, null);\n    };\n  }, []);\n  React.useEffect(function () {\n    (0, _warning[\"default\"])(Boolean(setReferenceNode), '`Reference` should not be used outside of a `Manager` component.');\n  }, [setReferenceNode]);\n  return (0, _utils.unwrapArray)(children)({\n    ref: refHandler\n  });\n}", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nObject.defineProperty(exports, \"Popper\", {\n  enumerable: true,\n  get: function get() {\n    return _Popper.Popper;\n  }\n});\nObject.defineProperty(exports, \"Manager\", {\n  enumerable: true,\n  get: function get() {\n    return _Manager.Manager;\n  }\n});\nObject.defineProperty(exports, \"Reference\", {\n  enumerable: true,\n  get: function get() {\n    return _Reference.Reference;\n  }\n});\nObject.defineProperty(exports, \"usePopper\", {\n  enumerable: true,\n  get: function get() {\n    return _usePopper.usePopper;\n  }\n});\n\nvar _Popper = require(\"./Popper\");\n\nvar _Manager = require(\"./Manager\");\n\nvar _Reference = require(\"./Reference\");\n\nvar _usePopper = require(\"./usePopper\");", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = set;\nvar _typeof2 = _interopRequireDefault(require(\"@babel/runtime/helpers/typeof\"));\nvar _index = _interopRequireDefault(require(\"../toDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../setMonth/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../_lib/toInteger/index.js\"));\nvar _index4 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\n/**\n * @name set\n * @category Common Helpers\n * @summary Set date values to a given date.\n *\n * @description\n * Set date values to a given date.\n *\n * Sets time values to date from object `values`.\n * A value is not set if it is undefined or null or doesn't exist in `values`.\n *\n * Note about bundle size: `set` does not internally use `setX` functions from date-fns but instead opts\n * to use native `Date#setX` methods. If you use this function, you may not want to include the\n * other `setX` functions that date-fns provides if you are concerned about the bundle size.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Object} values - an object with options\n * @param {Number} [values.year] - the number of years to be set\n * @param {Number} [values.month] - the number of months to be set\n * @param {Number} [values.date] - the number of days to be set\n * @param {Number} [values.hours] - the number of hours to be set\n * @param {Number} [values.minutes] - the number of minutes to be set\n * @param {Number} [values.seconds] - the number of seconds to be set\n * @param {Number} [values.milliseconds] - the number of milliseconds to be set\n * @returns {Date} the new date with options set\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `values` must be an object\n *\n * @example\n * // Transform 1 September 2014 into 20 October 2015 in a single line:\n * const result = set(new Date(2014, 8, 20), { year: 2015, month: 9, date: 20 })\n * //=> Tue Oct 20 2015 00:00:00\n *\n * @example\n * // Set 12 PM to 1 September 2014 01:23:45 to 1 September 2014 12:00:00:\n * const result = set(new Date(2014, 8, 1, 1, 23, 45), { hours: 12 })\n * //=> Mon Sep 01 2014 12:23:45\n */\nfunction set(dirtyDate, values) {\n  (0, _index4.default)(2, arguments);\n  if ((0, _typeof2.default)(values) !== 'object' || values === null) {\n    throw new RangeError('values parameter must be an object');\n  }\n  var date = (0, _index.default)(dirtyDate);\n\n  // Check if date is Invalid Date because Date.prototype.setFullYear ignores the value of Invalid Date\n  if (isNaN(date.getTime())) {\n    return new Date(NaN);\n  }\n  if (values.year != null) {\n    date.setFullYear(values.year);\n  }\n  if (values.month != null) {\n    date = (0, _index2.default)(date, values.month);\n  }\n  if (values.date != null) {\n    date.setDate((0, _index3.default)(values.date));\n  }\n  if (values.hours != null) {\n    date.setHours((0, _index3.default)(values.hours));\n  }\n  if (values.minutes != null) {\n    date.setMinutes((0, _index3.default)(values.minutes));\n  }\n  if (values.seconds != null) {\n    date.setSeconds((0, _index3.default)(values.seconds));\n  }\n  if (values.milliseconds != null) {\n    date.setMilliseconds((0, _index3.default)(values.milliseconds));\n  }\n  return date;\n}\nmodule.exports = exports.default;", "!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?t(exports,require(\"react\"),require(\"prop-types\"),require(\"classnames\"),require(\"date-fns/isDate\"),require(\"date-fns/isValid\"),require(\"date-fns/format\"),require(\"date-fns/addMinutes\"),require(\"date-fns/addHours\"),require(\"date-fns/addDays\"),require(\"date-fns/addWeeks\"),require(\"date-fns/addMonths\"),require(\"date-fns/addQuarters\"),require(\"date-fns/addYears\"),require(\"date-fns/subDays\"),require(\"date-fns/subWeeks\"),require(\"date-fns/subMonths\"),require(\"date-fns/subQuarters\"),require(\"date-fns/subYears\"),require(\"date-fns/getSeconds\"),require(\"date-fns/getMinutes\"),require(\"date-fns/getHours\"),require(\"date-fns/getDay\"),require(\"date-fns/getDate\"),require(\"date-fns/getISOWeek\"),require(\"date-fns/getMonth\"),require(\"date-fns/getQuarter\"),require(\"date-fns/getYear\"),require(\"date-fns/getTime\"),require(\"date-fns/setSeconds\"),require(\"date-fns/setMinutes\"),require(\"date-fns/setHours\"),require(\"date-fns/setMonth\"),require(\"date-fns/setQuarter\"),require(\"date-fns/setYear\"),require(\"date-fns/min\"),require(\"date-fns/max\"),require(\"date-fns/differenceInCalendarDays\"),require(\"date-fns/differenceInCalendarMonths\"),require(\"date-fns/differenceInCalendarYears\"),require(\"date-fns/startOfDay\"),require(\"date-fns/startOfWeek\"),require(\"date-fns/startOfMonth\"),require(\"date-fns/startOfQuarter\"),require(\"date-fns/startOfYear\"),require(\"date-fns/endOfDay\"),require(\"date-fns/endOfWeek\"),require(\"date-fns/endOfMonth\"),require(\"date-fns/endOfYear\"),require(\"date-fns/isEqual\"),require(\"date-fns/isSameDay\"),require(\"date-fns/isSameMonth\"),require(\"date-fns/isSameYear\"),require(\"date-fns/isSameQuarter\"),require(\"date-fns/isAfter\"),require(\"date-fns/isBefore\"),require(\"date-fns/isWithinInterval\"),require(\"date-fns/toDate\"),require(\"date-fns/parse\"),require(\"date-fns/parseISO\"),require(\"react-onclickoutside\"),require(\"react-dom\"),require(\"react-popper\"),require(\"date-fns/set\")):\"function\"==typeof define&&define.amd?define([\"exports\",\"react\",\"prop-types\",\"classnames\",\"date-fns/isDate\",\"date-fns/isValid\",\"date-fns/format\",\"date-fns/addMinutes\",\"date-fns/addHours\",\"date-fns/addDays\",\"date-fns/addWeeks\",\"date-fns/addMonths\",\"date-fns/addQuarters\",\"date-fns/addYears\",\"date-fns/subDays\",\"date-fns/subWeeks\",\"date-fns/subMonths\",\"date-fns/subQuarters\",\"date-fns/subYears\",\"date-fns/getSeconds\",\"date-fns/getMinutes\",\"date-fns/getHours\",\"date-fns/getDay\",\"date-fns/getDate\",\"date-fns/getISOWeek\",\"date-fns/getMonth\",\"date-fns/getQuarter\",\"date-fns/getYear\",\"date-fns/getTime\",\"date-fns/setSeconds\",\"date-fns/setMinutes\",\"date-fns/setHours\",\"date-fns/setMonth\",\"date-fns/setQuarter\",\"date-fns/setYear\",\"date-fns/min\",\"date-fns/max\",\"date-fns/differenceInCalendarDays\",\"date-fns/differenceInCalendarMonths\",\"date-fns/differenceInCalendarYears\",\"date-fns/startOfDay\",\"date-fns/startOfWeek\",\"date-fns/startOfMonth\",\"date-fns/startOfQuarter\",\"date-fns/startOfYear\",\"date-fns/endOfDay\",\"date-fns/endOfWeek\",\"date-fns/endOfMonth\",\"date-fns/endOfYear\",\"date-fns/isEqual\",\"date-fns/isSameDay\",\"date-fns/isSameMonth\",\"date-fns/isSameYear\",\"date-fns/isSameQuarter\",\"date-fns/isAfter\",\"date-fns/isBefore\",\"date-fns/isWithinInterval\",\"date-fns/toDate\",\"date-fns/parse\",\"date-fns/parseISO\",\"react-onclickoutside\",\"react-dom\",\"react-popper\",\"date-fns/set\"],t):t((e=\"undefined\"!=typeof globalThis?globalThis:e||self).DatePicker={},e.React,e.PropTypes,e.classNames,e.isDate,e.isValidDate,e.format,e.addMinutes,e.addHours,e.addDays,e.addWeeks,e.addMonths,e.addQuarters,e.addYears,e.subDays,e.subWeeks,e.subMonths,e.subQuarters,e.subYears,e.getSeconds,e.getMinutes,e.getHours,e.getDay,e.getDate,e.getISOWeek,e.getMonth,e.getQuarter,e.getYear,e.getTime,e.setSeconds,e.setMinutes,e.setHours,e.setMonth,e.setQuarter,e.setYear,e.min,e.max,e.differenceInCalendarDays,e.differenceInCalendarMonths,e.differenceInCalendarYears,e.startOfDay,e.startOfWeek,e.startOfMonth,e.startOfQuarter,e.startOfYear,e.endOfDay,null,e.endOfMonth,e.endOfYear,e.dfIsEqual,e.dfIsSameDay,e.dfIsSameMonth,e.dfIsSameYear,e.dfIsSameQuarter,e.isAfter,e.isBefore,e.isWithinInterval,e.toDate,e.parse,e.parseISO,e.onClickOutside,e.ReactDOM,e.ReactPopper,e.set)}(this,(function(e,t,r,a,n,o,s,i,p,l,c,d,u,f,h,m,y,v,D,g,w,k,b,S,C,_,M,E,P,Y,N,x,O,I,T,R,L,F,A,q,Q,K,B,W,H,j,V,U,z,$,G,J,X,Z,ee,te,re,ae,ne,oe,se,ie,pe,le){\"use strict\";function ce(e){return e&&\"object\"==typeof e&&\"default\"in e?e:{default:e}}var de=ce(t),ue=ce(a),fe=ce(n),he=ce(o),me=ce(s),ye=ce(i),ve=ce(p),De=ce(l),ge=ce(c),we=ce(d),ke=ce(u),be=ce(f),Se=ce(h),Ce=ce(m),_e=ce(y),Me=ce(v),Ee=ce(D),Pe=ce(g),Ye=ce(w),Ne=ce(k),xe=ce(b),Oe=ce(S),Ie=ce(C),Te=ce(_),Re=ce(M),Le=ce(E),Fe=ce(P),Ae=ce(Y),qe=ce(N),Qe=ce(x),Ke=ce(O),Be=ce(I),We=ce(T),He=ce(R),je=ce(L),Ve=ce(F),Ue=ce(A),ze=ce(q),$e=ce(Q),Ge=ce(K),Je=ce(B),Xe=ce(W),Ze=ce(H),et=ce(j),tt=ce(U),rt=ce(z),at=ce($),nt=ce(G),ot=ce(J),st=ce(X),it=ce(Z),pt=ce(ee),lt=ce(te),ct=ce(re),dt=ce(ae),ut=ce(ne),ft=ce(oe),ht=ce(se),mt=ce(ie),yt=ce(le);function vt(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function Dt(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?vt(Object(r),!0).forEach((function(t){St(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):vt(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function gt(e){return gt=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},gt(e)}function wt(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}function kt(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,\"value\"in a&&(a.writable=!0),Object.defineProperty(e,Ot(a.key),a)}}function bt(e,t,r){return t&&kt(e.prototype,t),r&&kt(e,r),Object.defineProperty(e,\"prototype\",{writable:!1}),e}function St(e,t,r){return(t=Ot(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function Ct(){return Ct=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var a in r)Object.prototype.hasOwnProperty.call(r,a)&&(e[a]=r[a])}return e},Ct.apply(this,arguments)}function _t(e,t){if(\"function\"!=typeof t&&null!==t)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&&Et(e,t)}function Mt(e){return Mt=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},Mt(e)}function Et(e,t){return Et=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},Et(e,t)}function Pt(e){if(void 0===e)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return e}function Yt(e){var t=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var r,a=Mt(e);if(t){var n=Mt(this).constructor;r=Reflect.construct(a,arguments,n)}else r=a.apply(this,arguments);return function(e,t){if(t&&(\"object\"==typeof t||\"function\"==typeof t))return t;if(void 0!==t)throw new TypeError(\"Derived constructors may only return object or undefined\");return Pt(e)}(this,r)}}function Nt(e){return function(e){if(Array.isArray(e))return xt(e)}(e)||function(e){if(\"undefined\"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e[\"@@iterator\"])return Array.from(e)}(e)||function(e,t){if(!e)return;if(\"string\"==typeof e)return xt(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);\"Object\"===r&&e.constructor&&(r=e.constructor.name);if(\"Map\"===r||\"Set\"===r)return Array.from(e);if(\"Arguments\"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return xt(e,t)}(e)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function xt(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,a=new Array(t);r<t;r++)a[r]=e[r];return a}function Ot(e){var t=function(e,t){if(\"object\"!=typeof e||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var a=r.call(e,t||\"default\");if(\"object\"!=typeof a)return a;throw new TypeError(\"@@toPrimitive must return a primitive value.\")}return(\"string\"===t?String:Number)(e)}(e,\"string\");return\"symbol\"==typeof t?t:String(t)}var It=function(e,t){switch(e){case\"P\":return t.date({width:\"short\"});case\"PP\":return t.date({width:\"medium\"});case\"PPP\":return t.date({width:\"long\"});default:return t.date({width:\"full\"})}},Tt=function(e,t){switch(e){case\"p\":return t.time({width:\"short\"});case\"pp\":return t.time({width:\"medium\"});case\"ppp\":return t.time({width:\"long\"});default:return t.time({width:\"full\"})}},Rt={p:Tt,P:function(e,t){var r,a=e.match(/(P+)(p+)?/)||[],n=a[1],o=a[2];if(!o)return It(e,t);switch(n){case\"P\":r=t.dateTime({width:\"short\"});break;case\"PP\":r=t.dateTime({width:\"medium\"});break;case\"PPP\":r=t.dateTime({width:\"long\"});break;default:r=t.dateTime({width:\"full\"})}return r.replace(\"{{date}}\",It(n,t)).replace(\"{{time}}\",Tt(o,t))}},Lt=12,Ft=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;function At(e){var t=e?\"string\"==typeof e||e instanceof String?ft.default(e):dt.default(e):new Date;return qt(t)?t:null}function qt(e,t){return t=t||new Date(\"1/1/1000\"),he.default(e)&&!lt.default(e,t)}function Qt(e,t,r){if(\"en\"===r)return me.default(e,t,{awareOfUnicodeTokens:!0});var a=tr(r);return r&&!a&&console.warn('A locale object was not found for the provided string [\"'.concat(r,'\"].')),!a&&er()&&tr(er())&&(a=tr(er())),me.default(e,t,{locale:a||null,awareOfUnicodeTokens:!0})}function Kt(e,t){var r=t.dateFormat,a=t.locale;return e&&Qt(e,Array.isArray(r)?r[0]:r,a)||\"\"}function Bt(e,t){var r=t.hour,a=void 0===r?0:r,n=t.minute,o=void 0===n?0:n,s=t.second,i=void 0===s?0:s;return Qe.default(qe.default(Ae.default(e,i),o),a)}function Wt(e,t,r){var a=tr(t||er());return Ge.default(e,{locale:a,weekStartsOn:r})}function Ht(e){return Je.default(e)}function jt(e){return Ze.default(e)}function Vt(e){return Xe.default(e)}function Ut(){return $e.default(At())}function zt(e,t){return e&&t?st.default(e,t):!e&&!t}function $t(e,t){return e&&t?ot.default(e,t):!e&&!t}function Gt(e,t){return e&&t?it.default(e,t):!e&&!t}function Jt(e,t){return e&&t?nt.default(e,t):!e&&!t}function Xt(e,t){return e&&t?at.default(e,t):!e&&!t}function Zt(e,t,r){var a,n=$e.default(t),o=et.default(r);try{a=ct.default(e,{start:n,end:o})}catch(e){a=!1}return a}function er(){return(\"undefined\"!=typeof window?window:globalThis).__localeId__}function tr(e){if(\"string\"==typeof e){var t=\"undefined\"!=typeof window?window:globalThis;return t.__localeData__?t.__localeData__[e]:null}return e}function rr(e,t){return Qt(Ke.default(At(),e),\"LLLL\",t)}function ar(e,t){return Qt(Ke.default(At(),e),\"LLL\",t)}function nr(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.minDate,a=t.maxDate,n=t.excludeDates,o=t.excludeDateIntervals,s=t.includeDates,i=t.includeDateIntervals,p=t.filterDate;return ur(e,{minDate:r,maxDate:a})||n&&n.some((function(t){return Jt(e,t)}))||o&&o.some((function(t){var r=t.start,a=t.end;return ct.default(e,{start:r,end:a})}))||s&&!s.some((function(t){return Jt(e,t)}))||i&&!i.some((function(t){var r=t.start,a=t.end;return ct.default(e,{start:r,end:a})}))||p&&!p(At(e))||!1}function or(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.excludeDates,a=t.excludeDateIntervals;return a&&a.length>0?a.some((function(t){var r=t.start,a=t.end;return ct.default(e,{start:r,end:a})})):r&&r.some((function(t){return Jt(e,t)}))||!1}function sr(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.minDate,a=t.maxDate,n=t.excludeDates,o=t.includeDates,s=t.filterDate;return ur(e,{minDate:Je.default(r),maxDate:tt.default(a)})||n&&n.some((function(t){return $t(e,t)}))||o&&!o.some((function(t){return $t(e,t)}))||s&&!s(At(e))||!1}function ir(e,t,r,a){var n=Le.default(e),o=Te.default(e),s=Le.default(t),i=Te.default(t),p=Le.default(a);return n===s&&n===p?o<=r&&r<=i:n<s?p===n&&o<=r||p===s&&i>=r||p<s&&p>n:void 0}function pr(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.minDate,a=t.maxDate,n=t.excludeDates,o=t.includeDates,s=t.filterDate;return ur(e,{minDate:r,maxDate:a})||n&&n.some((function(t){return Gt(e,t)}))||o&&!o.some((function(t){return Gt(e,t)}))||s&&!s(At(e))||!1}function lr(e,t,r){if(!he.default(t)||!he.default(r))return!1;var a=Le.default(t),n=Le.default(r);return a<=e&&n>=e}function cr(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.minDate,a=t.maxDate,n=t.excludeDates,o=t.includeDates,s=t.filterDate,i=new Date(e,0,1);return ur(i,{minDate:Ze.default(r),maxDate:rt.default(a)})||n&&n.some((function(e){return zt(i,e)}))||o&&!o.some((function(e){return zt(i,e)}))||s&&!s(At(i))||!1}function dr(e,t,r,a){var n=Le.default(e),o=Re.default(e),s=Le.default(t),i=Re.default(t),p=Le.default(a);return n===s&&n===p?o<=r&&r<=i:n<s?p===n&&o<=r||p===s&&i>=r||p<s&&p>n:void 0}function ur(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.minDate,a=t.maxDate;return r&&Ve.default(e,r)<0||a&&Ve.default(e,a)>0}function fr(e,t){return t.some((function(t){return Ne.default(t)===Ne.default(e)&&Ye.default(t)===Ye.default(e)}))}function hr(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.excludeTimes,a=t.includeTimes,n=t.filterTime;return r&&fr(e,r)||a&&!fr(e,a)||n&&!n(e)||!1}function mr(e,t){var r=t.minTime,a=t.maxTime;if(!r||!a)throw new Error(\"Both minTime and maxTime props required\");var n,o=At(),s=Qe.default(qe.default(o,Ye.default(e)),Ne.default(e)),i=Qe.default(qe.default(o,Ye.default(r)),Ne.default(r)),p=Qe.default(qe.default(o,Ye.default(a)),Ne.default(a));try{n=!ct.default(s,{start:i,end:p})}catch(e){n=!1}return n}function yr(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.minDate,a=t.includeDates,n=_e.default(e,1);return r&&Ue.default(r,n)>0||a&&a.every((function(e){return Ue.default(e,n)>0}))||!1}function vr(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.maxDate,a=t.includeDates,n=we.default(e,1);return r&&Ue.default(n,r)>0||a&&a.every((function(e){return Ue.default(n,e)>0}))||!1}function Dr(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.minDate,a=t.includeDates,n=Ee.default(e,1);return r&&ze.default(r,n)>0||a&&a.every((function(e){return ze.default(e,n)>0}))||!1}function gr(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.maxDate,a=t.includeDates,n=be.default(e,1);return r&&ze.default(n,r)>0||a&&a.every((function(e){return ze.default(n,e)>0}))||!1}function wr(e){var t=e.minDate,r=e.includeDates;if(r&&t){var a=r.filter((function(e){return Ve.default(e,t)>=0}));return He.default(a)}return r?He.default(r):t}function kr(e){var t=e.maxDate,r=e.includeDates;if(r&&t){var a=r.filter((function(e){return Ve.default(e,t)<=0}));return je.default(a)}return r?je.default(r):t}function br(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"react-datepicker__day--highlighted\",r=new Map,a=0,n=e.length;a<n;a++){var o=e[a];if(fe.default(o)){var s=Qt(o,\"MM.dd.yyyy\"),i=r.get(s)||[];i.includes(t)||(i.push(t),r.set(s,i))}else if(\"object\"===gt(o)){var p=Object.keys(o),l=p[0],c=o[p[0]];if(\"string\"==typeof l&&c.constructor===Array)for(var d=0,u=c.length;d<u;d++){var f=Qt(c[d],\"MM.dd.yyyy\"),h=r.get(f)||[];h.includes(l)||(h.push(l),r.set(f,h))}}}return r}function Sr(e,t,r,a,n){for(var o=n.length,s=[],i=0;i<o;i++){var p=ye.default(ve.default(e,Ne.default(n[i])),Ye.default(n[i])),l=ye.default(e,(r+1)*a);pt.default(p,t)&&lt.default(p,l)&&s.push(n[i])}return s}function Cr(e){return e<10?\"0\".concat(e):\"\".concat(e)}function _r(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Lt,r=Math.ceil(Le.default(e)/t)*t;return{startPeriod:r-(t-1),endPeriod:r}}function Mr(e,t,r,a){for(var n=[],o=0;o<2*t+1;o++){var s=e+t-o,i=!0;r&&(i=Le.default(r)<=s),a&&i&&(i=Le.default(a)>=s),i&&n.push(s)}return n}var Er=function(e){_t(a,e);var r=Yt(a);function a(e){var n;wt(this,a),St(Pt(n=r.call(this,e)),\"renderOptions\",(function(){var e=n.props.year,t=n.state.yearsList.map((function(t){return de.default.createElement(\"div\",{className:e===t?\"react-datepicker__year-option react-datepicker__year-option--selected_year\":\"react-datepicker__year-option\",key:t,onClick:n.onChange.bind(Pt(n),t),\"aria-selected\":e===t?\"true\":void 0},e===t?de.default.createElement(\"span\",{className:\"react-datepicker__year-option--selected\"},\"\u2713\"):\"\",t)})),r=n.props.minDate?Le.default(n.props.minDate):null,a=n.props.maxDate?Le.default(n.props.maxDate):null;return a&&n.state.yearsList.find((function(e){return e===a}))||t.unshift(de.default.createElement(\"div\",{className:\"react-datepicker__year-option\",key:\"upcoming\",onClick:n.incrementYears},de.default.createElement(\"a\",{className:\"react-datepicker__navigation react-datepicker__navigation--years react-datepicker__navigation--years-upcoming\"}))),r&&n.state.yearsList.find((function(e){return e===r}))||t.push(de.default.createElement(\"div\",{className:\"react-datepicker__year-option\",key:\"previous\",onClick:n.decrementYears},de.default.createElement(\"a\",{className:\"react-datepicker__navigation react-datepicker__navigation--years react-datepicker__navigation--years-previous\"}))),t})),St(Pt(n),\"onChange\",(function(e){n.props.onChange(e)})),St(Pt(n),\"handleClickOutside\",(function(){n.props.onCancel()})),St(Pt(n),\"shiftYears\",(function(e){var t=n.state.yearsList.map((function(t){return t+e}));n.setState({yearsList:t})})),St(Pt(n),\"incrementYears\",(function(){return n.shiftYears(1)})),St(Pt(n),\"decrementYears\",(function(){return n.shiftYears(-1)}));var o=e.yearDropdownItemNumber,s=e.scrollableYearDropdown,i=o||(s?10:5);return n.state={yearsList:Mr(n.props.year,i,n.props.minDate,n.props.maxDate)},n.dropdownRef=t.createRef(),n}return bt(a,[{key:\"componentDidMount\",value:function(){var e=this.dropdownRef.current;if(e){var t=e.children?Array.from(e.children):null,r=t?t.find((function(e){return e.ariaSelected})):null;e.scrollTop=r?r.offsetTop+(r.clientHeight-e.clientHeight)/2:(e.scrollHeight-e.clientHeight)/2}}},{key:\"render\",value:function(){var e=ue.default({\"react-datepicker__year-dropdown\":!0,\"react-datepicker__year-dropdown--scrollable\":this.props.scrollableYearDropdown});return de.default.createElement(\"div\",{className:e,ref:this.dropdownRef},this.renderOptions())}}]),a}(de.default.Component),Pr=ht.default(Er),Yr=function(e){_t(r,e);var t=Yt(r);function r(){var e;wt(this,r);for(var a=arguments.length,n=new Array(a),o=0;o<a;o++)n[o]=arguments[o];return St(Pt(e=t.call.apply(t,[this].concat(n))),\"state\",{dropdownVisible:!1}),St(Pt(e),\"renderSelectOptions\",(function(){for(var t=e.props.minDate?Le.default(e.props.minDate):1900,r=e.props.maxDate?Le.default(e.props.maxDate):2100,a=[],n=t;n<=r;n++)a.push(de.default.createElement(\"option\",{key:n,value:n},n));return a})),St(Pt(e),\"onSelectChange\",(function(t){e.onChange(t.target.value)})),St(Pt(e),\"renderSelectMode\",(function(){return de.default.createElement(\"select\",{value:e.props.year,className:\"react-datepicker__year-select\",onChange:e.onSelectChange},e.renderSelectOptions())})),St(Pt(e),\"renderReadView\",(function(t){return de.default.createElement(\"div\",{key:\"read\",style:{visibility:t?\"visible\":\"hidden\"},className:\"react-datepicker__year-read-view\",onClick:function(t){return e.toggleDropdown(t)}},de.default.createElement(\"span\",{className:\"react-datepicker__year-read-view--down-arrow\"}),de.default.createElement(\"span\",{className:\"react-datepicker__year-read-view--selected-year\"},e.props.year))})),St(Pt(e),\"renderDropdown\",(function(){return de.default.createElement(Pr,{key:\"dropdown\",year:e.props.year,onChange:e.onChange,onCancel:e.toggleDropdown,minDate:e.props.minDate,maxDate:e.props.maxDate,scrollableYearDropdown:e.props.scrollableYearDropdown,yearDropdownItemNumber:e.props.yearDropdownItemNumber})})),St(Pt(e),\"renderScrollMode\",(function(){var t=e.state.dropdownVisible,r=[e.renderReadView(!t)];return t&&r.unshift(e.renderDropdown()),r})),St(Pt(e),\"onChange\",(function(t){e.toggleDropdown(),t!==e.props.year&&e.props.onChange(t)})),St(Pt(e),\"toggleDropdown\",(function(t){e.setState({dropdownVisible:!e.state.dropdownVisible},(function(){e.props.adjustDateOnChange&&e.handleYearChange(e.props.date,t)}))})),St(Pt(e),\"handleYearChange\",(function(t,r){e.onSelect(t,r),e.setOpen()})),St(Pt(e),\"onSelect\",(function(t,r){e.props.onSelect&&e.props.onSelect(t,r)})),St(Pt(e),\"setOpen\",(function(){e.props.setOpen&&e.props.setOpen(!0)})),e}return bt(r,[{key:\"render\",value:function(){var e;switch(this.props.dropdownMode){case\"scroll\":e=this.renderScrollMode();break;case\"select\":e=this.renderSelectMode()}return de.default.createElement(\"div\",{className:\"react-datepicker__year-dropdown-container react-datepicker__year-dropdown-container--\".concat(this.props.dropdownMode)},e)}}]),r}(de.default.Component),Nr=function(e){_t(r,e);var t=Yt(r);function r(){var e;wt(this,r);for(var a=arguments.length,n=new Array(a),o=0;o<a;o++)n[o]=arguments[o];return St(Pt(e=t.call.apply(t,[this].concat(n))),\"isSelectedMonth\",(function(t){return e.props.month===t})),St(Pt(e),\"renderOptions\",(function(){return e.props.monthNames.map((function(t,r){return de.default.createElement(\"div\",{className:e.isSelectedMonth(r)?\"react-datepicker__month-option react-datepicker__month-option--selected_month\":\"react-datepicker__month-option\",key:t,onClick:e.onChange.bind(Pt(e),r),\"aria-selected\":e.isSelectedMonth(r)?\"true\":void 0},e.isSelectedMonth(r)?de.default.createElement(\"span\",{className:\"react-datepicker__month-option--selected\"},\"\u2713\"):\"\",t)}))})),St(Pt(e),\"onChange\",(function(t){return e.props.onChange(t)})),St(Pt(e),\"handleClickOutside\",(function(){return e.props.onCancel()})),e}return bt(r,[{key:\"render\",value:function(){return de.default.createElement(\"div\",{className:\"react-datepicker__month-dropdown\"},this.renderOptions())}}]),r}(de.default.Component),xr=ht.default(Nr),Or=function(e){_t(r,e);var t=Yt(r);function r(){var e;wt(this,r);for(var a=arguments.length,n=new Array(a),o=0;o<a;o++)n[o]=arguments[o];return St(Pt(e=t.call.apply(t,[this].concat(n))),\"state\",{dropdownVisible:!1}),St(Pt(e),\"renderSelectOptions\",(function(e){return e.map((function(e,t){return de.default.createElement(\"option\",{key:t,value:t},e)}))})),St(Pt(e),\"renderSelectMode\",(function(t){return de.default.createElement(\"select\",{value:e.props.month,className:\"react-datepicker__month-select\",onChange:function(t){return e.onChange(t.target.value)}},e.renderSelectOptions(t))})),St(Pt(e),\"renderReadView\",(function(t,r){return de.default.createElement(\"div\",{key:\"read\",style:{visibility:t?\"visible\":\"hidden\"},className:\"react-datepicker__month-read-view\",onClick:e.toggleDropdown},de.default.createElement(\"span\",{className:\"react-datepicker__month-read-view--down-arrow\"}),de.default.createElement(\"span\",{className:\"react-datepicker__month-read-view--selected-month\"},r[e.props.month]))})),St(Pt(e),\"renderDropdown\",(function(t){return de.default.createElement(xr,{key:\"dropdown\",month:e.props.month,monthNames:t,onChange:e.onChange,onCancel:e.toggleDropdown})})),St(Pt(e),\"renderScrollMode\",(function(t){var r=e.state.dropdownVisible,a=[e.renderReadView(!r,t)];return r&&a.unshift(e.renderDropdown(t)),a})),St(Pt(e),\"onChange\",(function(t){e.toggleDropdown(),t!==e.props.month&&e.props.onChange(t)})),St(Pt(e),\"toggleDropdown\",(function(){return e.setState({dropdownVisible:!e.state.dropdownVisible})})),e}return bt(r,[{key:\"render\",value:function(){var e,t=this,r=[0,1,2,3,4,5,6,7,8,9,10,11].map(this.props.useShortMonthInDropdown?function(e){return ar(e,t.props.locale)}:function(e){return rr(e,t.props.locale)});switch(this.props.dropdownMode){case\"scroll\":e=this.renderScrollMode(r);break;case\"select\":e=this.renderSelectMode(r)}return de.default.createElement(\"div\",{className:\"react-datepicker__month-dropdown-container react-datepicker__month-dropdown-container--\".concat(this.props.dropdownMode)},e)}}]),r}(de.default.Component);function Ir(e,t){for(var r=[],a=Ht(e),n=Ht(t);!pt.default(a,n);)r.push(At(a)),a=we.default(a,1);return r}var Tr,Rr=function(e){_t(r,e);var t=Yt(r);function r(e){var a;return wt(this,r),St(Pt(a=t.call(this,e)),\"renderOptions\",(function(){return a.state.monthYearsList.map((function(e){var t=Fe.default(e),r=zt(a.props.date,e)&&$t(a.props.date,e);return de.default.createElement(\"div\",{className:r?\"react-datepicker__month-year-option--selected_month-year\":\"react-datepicker__month-year-option\",key:t,onClick:a.onChange.bind(Pt(a),t),\"aria-selected\":r?\"true\":void 0},r?de.default.createElement(\"span\",{className:\"react-datepicker__month-year-option--selected\"},\"\u2713\"):\"\",Qt(e,a.props.dateFormat,a.props.locale))}))})),St(Pt(a),\"onChange\",(function(e){return a.props.onChange(e)})),St(Pt(a),\"handleClickOutside\",(function(){a.props.onCancel()})),a.state={monthYearsList:Ir(a.props.minDate,a.props.maxDate)},a}return bt(r,[{key:\"render\",value:function(){var e=ue.default({\"react-datepicker__month-year-dropdown\":!0,\"react-datepicker__month-year-dropdown--scrollable\":this.props.scrollableMonthYearDropdown});return de.default.createElement(\"div\",{className:e},this.renderOptions())}}]),r}(de.default.Component),Lr=ht.default(Rr),Fr=function(e){_t(r,e);var t=Yt(r);function r(){var e;wt(this,r);for(var a=arguments.length,n=new Array(a),o=0;o<a;o++)n[o]=arguments[o];return St(Pt(e=t.call.apply(t,[this].concat(n))),\"state\",{dropdownVisible:!1}),St(Pt(e),\"renderSelectOptions\",(function(){for(var t=Ht(e.props.minDate),r=Ht(e.props.maxDate),a=[];!pt.default(t,r);){var n=Fe.default(t);a.push(de.default.createElement(\"option\",{key:n,value:n},Qt(t,e.props.dateFormat,e.props.locale))),t=we.default(t,1)}return a})),St(Pt(e),\"onSelectChange\",(function(t){e.onChange(t.target.value)})),St(Pt(e),\"renderSelectMode\",(function(){return de.default.createElement(\"select\",{value:Fe.default(Ht(e.props.date)),className:\"react-datepicker__month-year-select\",onChange:e.onSelectChange},e.renderSelectOptions())})),St(Pt(e),\"renderReadView\",(function(t){var r=Qt(e.props.date,e.props.dateFormat,e.props.locale);return de.default.createElement(\"div\",{key:\"read\",style:{visibility:t?\"visible\":\"hidden\"},className:\"react-datepicker__month-year-read-view\",onClick:function(t){return e.toggleDropdown(t)}},de.default.createElement(\"span\",{className:\"react-datepicker__month-year-read-view--down-arrow\"}),de.default.createElement(\"span\",{className:\"react-datepicker__month-year-read-view--selected-month-year\"},r))})),St(Pt(e),\"renderDropdown\",(function(){return de.default.createElement(Lr,{key:\"dropdown\",date:e.props.date,dateFormat:e.props.dateFormat,onChange:e.onChange,onCancel:e.toggleDropdown,minDate:e.props.minDate,maxDate:e.props.maxDate,scrollableMonthYearDropdown:e.props.scrollableMonthYearDropdown,locale:e.props.locale})})),St(Pt(e),\"renderScrollMode\",(function(){var t=e.state.dropdownVisible,r=[e.renderReadView(!t)];return t&&r.unshift(e.renderDropdown()),r})),St(Pt(e),\"onChange\",(function(t){e.toggleDropdown();var r=At(parseInt(t));zt(e.props.date,r)&&$t(e.props.date,r)||e.props.onChange(r)})),St(Pt(e),\"toggleDropdown\",(function(){return e.setState({dropdownVisible:!e.state.dropdownVisible})})),e}return bt(r,[{key:\"render\",value:function(){var e;switch(this.props.dropdownMode){case\"scroll\":e=this.renderScrollMode();break;case\"select\":e=this.renderSelectMode()}return de.default.createElement(\"div\",{className:\"react-datepicker__month-year-dropdown-container react-datepicker__month-year-dropdown-container--\".concat(this.props.dropdownMode)},e)}}]),r}(de.default.Component),Ar=function(e){_t(r,e);var t=Yt(r);function r(){var e;wt(this,r);for(var a=arguments.length,n=new Array(a),o=0;o<a;o++)n[o]=arguments[o];return St(Pt(e=t.call.apply(t,[this].concat(n))),\"dayEl\",de.default.createRef()),St(Pt(e),\"handleClick\",(function(t){!e.isDisabled()&&e.props.onClick&&e.props.onClick(t)})),St(Pt(e),\"handleMouseEnter\",(function(t){!e.isDisabled()&&e.props.onMouseEnter&&e.props.onMouseEnter(t)})),St(Pt(e),\"handleOnKeyDown\",(function(t){\" \"===t.key&&(t.preventDefault(),t.key=\"Enter\"),e.props.handleOnKeyDown(t)})),St(Pt(e),\"isSameDay\",(function(t){return Jt(e.props.day,t)})),St(Pt(e),\"isKeyboardSelected\",(function(){return!e.props.disabledKeyboardNavigation&&!e.isSameDay(e.props.selected)&&e.isSameDay(e.props.preSelection)})),St(Pt(e),\"isDisabled\",(function(){return nr(e.props.day,e.props)})),St(Pt(e),\"isExcluded\",(function(){return or(e.props.day,e.props)})),St(Pt(e),\"getHighLightedClass\",(function(){var t=e.props,r=t.day,a=t.highlightDates;if(!a)return!1;var n=Qt(r,\"MM.dd.yyyy\");return a.get(n)})),St(Pt(e),\"isInRange\",(function(){var t=e.props,r=t.day,a=t.startDate,n=t.endDate;return!(!a||!n)&&Zt(r,a,n)})),St(Pt(e),\"isInSelectingRange\",(function(){var t,r=e.props,a=r.day,n=r.selectsStart,o=r.selectsEnd,s=r.selectsRange,i=r.selectsDisabledDaysInRange,p=r.startDate,l=r.endDate,c=null!==(t=e.props.selectingDate)&&void 0!==t?t:e.props.preSelection;return!(!(n||o||s)||!c||!i&&e.isDisabled())&&(n&&l&&(lt.default(c,l)||Xt(c,l))?Zt(a,c,l):(o&&p&&(pt.default(c,p)||Xt(c,p))||!(!s||!p||l||!pt.default(c,p)&&!Xt(c,p)))&&Zt(a,p,c))})),St(Pt(e),\"isSelectingRangeStart\",(function(){var t;if(!e.isInSelectingRange())return!1;var r=e.props,a=r.day,n=r.startDate,o=r.selectsStart,s=null!==(t=e.props.selectingDate)&&void 0!==t?t:e.props.preSelection;return Jt(a,o?s:n)})),St(Pt(e),\"isSelectingRangeEnd\",(function(){var t;if(!e.isInSelectingRange())return!1;var r=e.props,a=r.day,n=r.endDate,o=r.selectsEnd,s=r.selectsRange,i=null!==(t=e.props.selectingDate)&&void 0!==t?t:e.props.preSelection;return Jt(a,o||s?i:n)})),St(Pt(e),\"isRangeStart\",(function(){var t=e.props,r=t.day,a=t.startDate,n=t.endDate;return!(!a||!n)&&Jt(a,r)})),St(Pt(e),\"isRangeEnd\",(function(){var t=e.props,r=t.day,a=t.startDate,n=t.endDate;return!(!a||!n)&&Jt(n,r)})),St(Pt(e),\"isWeekend\",(function(){var t=xe.default(e.props.day);return 0===t||6===t})),St(Pt(e),\"isAfterMonth\",(function(){return void 0!==e.props.month&&(e.props.month+1)%12===Te.default(e.props.day)})),St(Pt(e),\"isBeforeMonth\",(function(){return void 0!==e.props.month&&(Te.default(e.props.day)+1)%12===e.props.month})),St(Pt(e),\"isCurrentDay\",(function(){return e.isSameDay(At())})),St(Pt(e),\"isSelected\",(function(){return e.isSameDay(e.props.selected)})),St(Pt(e),\"getClassNames\",(function(t){var r,a=e.props.dayClassName?e.props.dayClassName(t):void 0;return ue.default(\"react-datepicker__day\",a,\"react-datepicker__day--\"+Qt(e.props.day,\"ddd\",r),{\"react-datepicker__day--disabled\":e.isDisabled(),\"react-datepicker__day--excluded\":e.isExcluded(),\"react-datepicker__day--selected\":e.isSelected(),\"react-datepicker__day--keyboard-selected\":e.isKeyboardSelected(),\"react-datepicker__day--range-start\":e.isRangeStart(),\"react-datepicker__day--range-end\":e.isRangeEnd(),\"react-datepicker__day--in-range\":e.isInRange(),\"react-datepicker__day--in-selecting-range\":e.isInSelectingRange(),\"react-datepicker__day--selecting-range-start\":e.isSelectingRangeStart(),\"react-datepicker__day--selecting-range-end\":e.isSelectingRangeEnd(),\"react-datepicker__day--today\":e.isCurrentDay(),\"react-datepicker__day--weekend\":e.isWeekend(),\"react-datepicker__day--outside-month\":e.isAfterMonth()||e.isBeforeMonth()},e.getHighLightedClass(\"react-datepicker__day--highlighted\"))})),St(Pt(e),\"getAriaLabel\",(function(){var t=e.props,r=t.day,a=t.ariaLabelPrefixWhenEnabled,n=void 0===a?\"Choose\":a,o=t.ariaLabelPrefixWhenDisabled,s=void 0===o?\"Not available\":o,i=e.isDisabled()||e.isExcluded()?s:n;return\"\".concat(i,\" \").concat(Qt(r,\"PPPP\",e.props.locale))})),St(Pt(e),\"getTabIndex\",(function(t,r){var a=t||e.props.selected,n=r||e.props.preSelection;return e.isKeyboardSelected()||e.isSameDay(a)&&Jt(n,a)?0:-1})),St(Pt(e),\"handleFocusDay\",(function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=!1;0===e.getTabIndex()&&!t.isInputFocused&&e.isSameDay(e.props.preSelection)&&(document.activeElement&&document.activeElement!==document.body||(r=!0),e.props.inline&&!e.props.shouldFocusDayInline&&(r=!1),e.props.containerRef&&e.props.containerRef.current&&e.props.containerRef.current.contains(document.activeElement)&&document.activeElement.classList.contains(\"react-datepicker__day\")&&(r=!0),e.props.monthShowsDuplicateDaysEnd&&e.isAfterMonth()&&(r=!1),e.props.monthShowsDuplicateDaysStart&&e.isBeforeMonth()&&(r=!1)),r&&e.dayEl.current.focus({preventScroll:!0})})),St(Pt(e),\"renderDayContents\",(function(){return e.props.monthShowsDuplicateDaysEnd&&e.isAfterMonth()||e.props.monthShowsDuplicateDaysStart&&e.isBeforeMonth()?null:e.props.renderDayContents?e.props.renderDayContents(Oe.default(e.props.day),e.props.day):Oe.default(e.props.day)})),St(Pt(e),\"render\",(function(){return de.default.createElement(\"div\",{ref:e.dayEl,className:e.getClassNames(e.props.day),onKeyDown:e.handleOnKeyDown,onClick:e.handleClick,onMouseEnter:e.handleMouseEnter,tabIndex:e.getTabIndex(),\"aria-label\":e.getAriaLabel(),role:\"option\",\"aria-disabled\":e.isDisabled(),\"aria-current\":e.isCurrentDay()?\"date\":void 0,\"aria-selected\":e.isSelected()||e.isInRange()},e.renderDayContents())})),e}return bt(r,[{key:\"componentDidMount\",value:function(){this.handleFocusDay()}},{key:\"componentDidUpdate\",value:function(e){this.handleFocusDay(e)}}]),r}(de.default.Component),qr=function(e){_t(r,e);var t=Yt(r);function r(){var e;wt(this,r);for(var a=arguments.length,n=new Array(a),o=0;o<a;o++)n[o]=arguments[o];return St(Pt(e=t.call.apply(t,[this].concat(n))),\"handleClick\",(function(t){e.props.onClick&&e.props.onClick(t)})),e}return bt(r,[{key:\"render\",value:function(){var e=this.props,t=e.weekNumber,r=e.ariaLabelPrefix,a=void 0===r?\"week \":r,n={\"react-datepicker__week-number\":!0,\"react-datepicker__week-number--clickable\":!!e.onClick};return de.default.createElement(\"div\",{className:ue.default(n),\"aria-label\":\"\".concat(a,\" \").concat(this.props.weekNumber),onClick:this.handleClick},t)}}],[{key:\"defaultProps\",get:function(){return{ariaLabelPrefix:\"week \"}}}]),r}(de.default.Component),Qr=function(e){_t(r,e);var t=Yt(r);function r(){var e;wt(this,r);for(var a=arguments.length,n=new Array(a),o=0;o<a;o++)n[o]=arguments[o];return St(Pt(e=t.call.apply(t,[this].concat(n))),\"handleDayClick\",(function(t,r){e.props.onDayClick&&e.props.onDayClick(t,r)})),St(Pt(e),\"handleDayMouseEnter\",(function(t){e.props.onDayMouseEnter&&e.props.onDayMouseEnter(t)})),St(Pt(e),\"handleWeekClick\",(function(t,r,a){\"function\"==typeof e.props.onWeekSelect&&e.props.onWeekSelect(t,r,a),e.props.shouldCloseOnSelect&&e.props.setOpen(!1)})),St(Pt(e),\"formatWeekNumber\",(function(t){return e.props.formatWeekNumber?e.props.formatWeekNumber(t):function(e,t){var r=t&&tr(t)||er()&&tr(er());return Ie.default(e,r?{locale:r}:null)}(t)})),St(Pt(e),\"renderDays\",(function(){var t=Wt(e.props.day,e.props.locale,e.props.calendarStartDay),r=[],a=e.formatWeekNumber(t);if(e.props.showWeekNumber){var n=e.props.onWeekSelect?e.handleWeekClick.bind(Pt(e),t,a):void 0;r.push(de.default.createElement(qr,{key:\"W\",weekNumber:a,onClick:n,ariaLabelPrefix:e.props.ariaLabelPrefix}))}return r.concat([0,1,2,3,4,5,6].map((function(r){var a=De.default(t,r);return de.default.createElement(Ar,{ariaLabelPrefixWhenEnabled:e.props.chooseDayAriaLabelPrefix,ariaLabelPrefixWhenDisabled:e.props.disabledDayAriaLabelPrefix,key:a.valueOf(),day:a,month:e.props.month,onClick:e.handleDayClick.bind(Pt(e),a),onMouseEnter:e.handleDayMouseEnter.bind(Pt(e),a),minDate:e.props.minDate,maxDate:e.props.maxDate,excludeDates:e.props.excludeDates,excludeDateIntervals:e.props.excludeDateIntervals,includeDates:e.props.includeDates,includeDateIntervals:e.props.includeDateIntervals,highlightDates:e.props.highlightDates,selectingDate:e.props.selectingDate,filterDate:e.props.filterDate,preSelection:e.props.preSelection,selected:e.props.selected,selectsStart:e.props.selectsStart,selectsEnd:e.props.selectsEnd,selectsRange:e.props.selectsRange,selectsDisabledDaysInRange:e.props.selectsDisabledDaysInRange,startDate:e.props.startDate,endDate:e.props.endDate,dayClassName:e.props.dayClassName,renderDayContents:e.props.renderDayContents,disabledKeyboardNavigation:e.props.disabledKeyboardNavigation,handleOnKeyDown:e.props.handleOnKeyDown,isInputFocused:e.props.isInputFocused,containerRef:e.props.containerRef,inline:e.props.inline,shouldFocusDayInline:e.props.shouldFocusDayInline,monthShowsDuplicateDaysEnd:e.props.monthShowsDuplicateDaysEnd,monthShowsDuplicateDaysStart:e.props.monthShowsDuplicateDaysStart,locale:e.props.locale})})))})),e}return bt(r,[{key:\"render\",value:function(){return de.default.createElement(\"div\",{className:\"react-datepicker__week\"},this.renderDays())}}],[{key:\"defaultProps\",get:function(){return{shouldCloseOnSelect:!0}}}]),r}(de.default.Component),Kr=\"two_columns\",Br=\"three_columns\",Wr=\"four_columns\",Hr=(St(Tr={},Kr,{grid:[[0,1],[2,3],[4,5],[6,7],[8,9],[10,11]],verticalNavigationOffset:2}),St(Tr,Br,{grid:[[0,1,2],[3,4,5],[6,7,8],[9,10,11]],verticalNavigationOffset:3}),St(Tr,Wr,{grid:[[0,1,2,3],[4,5,6,7],[8,9,10,11]],verticalNavigationOffset:4}),Tr);function jr(e,t){return e?Wr:t?Kr:Br}var Vr=function(e){_t(r,e);var t=Yt(r);function r(){var e;wt(this,r);for(var a=arguments.length,n=new Array(a),o=0;o<a;o++)n[o]=arguments[o];return St(Pt(e=t.call.apply(t,[this].concat(n))),\"MONTH_REFS\",Nt(Array(12)).map((function(){return de.default.createRef()}))),St(Pt(e),\"QUARTER_REFS\",Nt(Array(4)).map((function(){return de.default.createRef()}))),St(Pt(e),\"isDisabled\",(function(t){return nr(t,e.props)})),St(Pt(e),\"isExcluded\",(function(t){return or(t,e.props)})),St(Pt(e),\"handleDayClick\",(function(t,r){e.props.onDayClick&&e.props.onDayClick(t,r,e.props.orderInDisplay)})),St(Pt(e),\"handleDayMouseEnter\",(function(t){e.props.onDayMouseEnter&&e.props.onDayMouseEnter(t)})),St(Pt(e),\"handleMouseLeave\",(function(){e.props.onMouseLeave&&e.props.onMouseLeave()})),St(Pt(e),\"isRangeStartMonth\",(function(t){var r=e.props,a=r.day,n=r.startDate,o=r.endDate;return!(!n||!o)&&$t(Ke.default(a,t),n)})),St(Pt(e),\"isRangeStartQuarter\",(function(t){var r=e.props,a=r.day,n=r.startDate,o=r.endDate;return!(!n||!o)&&Gt(Be.default(a,t),n)})),St(Pt(e),\"isRangeEndMonth\",(function(t){var r=e.props,a=r.day,n=r.startDate,o=r.endDate;return!(!n||!o)&&$t(Ke.default(a,t),o)})),St(Pt(e),\"isRangeEndQuarter\",(function(t){var r=e.props,a=r.day,n=r.startDate,o=r.endDate;return!(!n||!o)&&Gt(Be.default(a,t),o)})),St(Pt(e),\"isInSelectingRangeMonth\",(function(t){var r,a=e.props,n=a.day,o=a.selectsStart,s=a.selectsEnd,i=a.selectsRange,p=a.startDate,l=a.endDate,c=null!==(r=e.props.selectingDate)&&void 0!==r?r:e.props.preSelection;return!(!(o||s||i)||!c)&&(o&&l?ir(c,l,t,n):(s&&p||!(!i||!p||l))&&ir(p,c,t,n))})),St(Pt(e),\"isSelectingMonthRangeStart\",(function(t){var r;if(!e.isInSelectingRangeMonth(t))return!1;var a=e.props,n=a.day,o=a.startDate,s=a.selectsStart,i=Ke.default(n,t),p=null!==(r=e.props.selectingDate)&&void 0!==r?r:e.props.preSelection;return $t(i,s?p:o)})),St(Pt(e),\"isSelectingMonthRangeEnd\",(function(t){var r;if(!e.isInSelectingRangeMonth(t))return!1;var a=e.props,n=a.day,o=a.endDate,s=a.selectsEnd,i=a.selectsRange,p=Ke.default(n,t),l=null!==(r=e.props.selectingDate)&&void 0!==r?r:e.props.preSelection;return $t(p,s||i?l:o)})),St(Pt(e),\"isInSelectingRangeQuarter\",(function(t){var r,a=e.props,n=a.day,o=a.selectsStart,s=a.selectsEnd,i=a.selectsRange,p=a.startDate,l=a.endDate,c=null!==(r=e.props.selectingDate)&&void 0!==r?r:e.props.preSelection;return!(!(o||s||i)||!c)&&(o&&l?dr(c,l,t,n):(s&&p||!(!i||!p||l))&&dr(p,c,t,n))})),St(Pt(e),\"isWeekInMonth\",(function(t){var r=e.props.day,a=De.default(t,6);return $t(t,r)||$t(a,r)})),St(Pt(e),\"isCurrentMonth\",(function(e,t){return Le.default(e)===Le.default(At())&&t===Te.default(At())})),St(Pt(e),\"isCurrentQuarter\",(function(e,t){return Le.default(e)===Le.default(At())&&t===Re.default(At())})),St(Pt(e),\"isSelectedMonth\",(function(e,t,r){return Te.default(r)===t&&Le.default(e)===Le.default(r)})),St(Pt(e),\"isSelectedQuarter\",(function(e,t,r){return Re.default(e)===t&&Le.default(e)===Le.default(r)})),St(Pt(e),\"renderWeeks\",(function(){for(var t=[],r=e.props.fixedHeight,a=0,n=!1,o=Wt(Ht(e.props.day),e.props.locale,e.props.calendarStartDay);t.push(de.default.createElement(Qr,{ariaLabelPrefix:e.props.weekAriaLabelPrefix,chooseDayAriaLabelPrefix:e.props.chooseDayAriaLabelPrefix,disabledDayAriaLabelPrefix:e.props.disabledDayAriaLabelPrefix,key:a,day:o,month:Te.default(e.props.day),onDayClick:e.handleDayClick,onDayMouseEnter:e.handleDayMouseEnter,onWeekSelect:e.props.onWeekSelect,formatWeekNumber:e.props.formatWeekNumber,locale:e.props.locale,minDate:e.props.minDate,maxDate:e.props.maxDate,excludeDates:e.props.excludeDates,excludeDateIntervals:e.props.excludeDateIntervals,includeDates:e.props.includeDates,includeDateIntervals:e.props.includeDateIntervals,inline:e.props.inline,shouldFocusDayInline:e.props.shouldFocusDayInline,highlightDates:e.props.highlightDates,selectingDate:e.props.selectingDate,filterDate:e.props.filterDate,preSelection:e.props.preSelection,selected:e.props.selected,selectsStart:e.props.selectsStart,selectsEnd:e.props.selectsEnd,selectsRange:e.props.selectsRange,selectsDisabledDaysInRange:e.props.selectsDisabledDaysInRange,showWeekNumber:e.props.showWeekNumbers,startDate:e.props.startDate,endDate:e.props.endDate,dayClassName:e.props.dayClassName,setOpen:e.props.setOpen,shouldCloseOnSelect:e.props.shouldCloseOnSelect,disabledKeyboardNavigation:e.props.disabledKeyboardNavigation,renderDayContents:e.props.renderDayContents,handleOnKeyDown:e.props.handleOnKeyDown,isInputFocused:e.props.isInputFocused,containerRef:e.props.containerRef,calendarStartDay:e.props.calendarStartDay,monthShowsDuplicateDaysEnd:e.props.monthShowsDuplicateDaysEnd,monthShowsDuplicateDaysStart:e.props.monthShowsDuplicateDaysStart})),!n;){a++,o=ge.default(o,1);var s=r&&a>=6,i=!r&&!e.isWeekInMonth(o);if(s||i){if(!e.props.peekNextMonth)break;n=!0}}return t})),St(Pt(e),\"onMonthClick\",(function(t,r){e.handleDayClick(Ht(Ke.default(e.props.day,r)),t)})),St(Pt(e),\"onMonthMouseEnter\",(function(t){e.handleDayMouseEnter(Ht(Ke.default(e.props.day,t)))})),St(Pt(e),\"handleMonthNavigation\",(function(t,r){e.isDisabled(r)||e.isExcluded(r)||(e.props.setPreSelection(r),e.MONTH_REFS[t].current&&e.MONTH_REFS[t].current.focus())})),St(Pt(e),\"onMonthKeyDown\",(function(t,r){var a=e.props,n=a.selected,o=a.preSelection,s=a.disabledKeyboardNavigation,i=a.showTwoColumnMonthYearPicker,p=a.showFourColumnMonthYearPicker,l=a.setPreSelection,c=t.key;if(\"Tab\"!==c&&t.preventDefault(),!s){var d=jr(p,i),u=Hr[d].verticalNavigationOffset,f=Hr[d].grid;switch(c){case\"Enter\":e.onMonthClick(t,r),l(n);break;case\"ArrowRight\":e.handleMonthNavigation(11===r?0:r+1,we.default(o,1));break;case\"ArrowLeft\":e.handleMonthNavigation(0===r?11:r-1,_e.default(o,1));break;case\"ArrowUp\":e.handleMonthNavigation(f[0].includes(r)?r+12-u:r-u,_e.default(o,u));break;case\"ArrowDown\":e.handleMonthNavigation(f[f.length-1].includes(r)?r-12+u:r+u,we.default(o,u))}}})),St(Pt(e),\"onQuarterClick\",(function(t,r){e.handleDayClick(Vt(Be.default(e.props.day,r)),t)})),St(Pt(e),\"onQuarterMouseEnter\",(function(t){e.handleDayMouseEnter(Vt(Be.default(e.props.day,t)))})),St(Pt(e),\"handleQuarterNavigation\",(function(t,r){e.isDisabled(r)||e.isExcluded(r)||(e.props.setPreSelection(r),e.QUARTER_REFS[t-1].current&&e.QUARTER_REFS[t-1].current.focus())})),St(Pt(e),\"onQuarterKeyDown\",(function(t,r){var a=t.key;if(!e.props.disabledKeyboardNavigation)switch(a){case\"Enter\":e.onQuarterClick(t,r),e.props.setPreSelection(e.props.selected);break;case\"ArrowRight\":e.handleQuarterNavigation(4===r?1:r+1,ke.default(e.props.preSelection,1));break;case\"ArrowLeft\":e.handleQuarterNavigation(1===r?4:r-1,Me.default(e.props.preSelection,1))}})),St(Pt(e),\"getMonthClassNames\",(function(t){var r=e.props,a=r.day,n=r.startDate,o=r.endDate,s=r.selected,i=r.minDate,p=r.maxDate,l=r.preSelection,c=r.monthClassName,d=r.excludeDates,u=r.includeDates,f=c?c(Ke.default(a,t)):void 0,h=Ke.default(a,t);return ue.default(\"react-datepicker__month-text\",\"react-datepicker__month-\".concat(t),f,{\"react-datepicker__month-text--disabled\":(i||p||d||u)&&sr(h,e.props),\"react-datepicker__month-text--selected\":e.isSelectedMonth(a,t,s),\"react-datepicker__month-text--keyboard-selected\":!e.props.disabledKeyboardNavigation&&Te.default(l)===t,\"react-datepicker__month-text--in-selecting-range\":e.isInSelectingRangeMonth(t),\"react-datepicker__month-text--in-range\":ir(n,o,t,a),\"react-datepicker__month-text--range-start\":e.isRangeStartMonth(t),\"react-datepicker__month-text--range-end\":e.isRangeEndMonth(t),\"react-datepicker__month-text--selecting-range-start\":e.isSelectingMonthRangeStart(t),\"react-datepicker__month-text--selecting-range-end\":e.isSelectingMonthRangeEnd(t),\"react-datepicker__month-text--today\":e.isCurrentMonth(a,t)})})),St(Pt(e),\"getTabIndex\",(function(t){var r=Te.default(e.props.preSelection);return e.props.disabledKeyboardNavigation||t!==r?\"-1\":\"0\"})),St(Pt(e),\"getQuarterTabIndex\",(function(t){var r=Re.default(e.props.preSelection);return e.props.disabledKeyboardNavigation||t!==r?\"-1\":\"0\"})),St(Pt(e),\"getAriaLabel\",(function(t){var r=e.props,a=r.chooseDayAriaLabelPrefix,n=void 0===a?\"Choose\":a,o=r.disabledDayAriaLabelPrefix,s=void 0===o?\"Not available\":o,i=r.day,p=Ke.default(i,t),l=e.isDisabled(p)||e.isExcluded(p)?s:n;return\"\".concat(l,\" \").concat(Qt(p,\"MMMM yyyy\"))})),St(Pt(e),\"getQuarterClassNames\",(function(t){var r=e.props,a=r.day,n=r.startDate,o=r.endDate,s=r.selected,i=r.minDate,p=r.maxDate,l=r.preSelection;return ue.default(\"react-datepicker__quarter-text\",\"react-datepicker__quarter-\".concat(t),{\"react-datepicker__quarter-text--disabled\":(i||p)&&pr(Be.default(a,t),e.props),\"react-datepicker__quarter-text--selected\":e.isSelectedQuarter(a,t,s),\"react-datepicker__quarter-text--keyboard-selected\":Re.default(l)===t,\"react-datepicker__quarter-text--in-selecting-range\":e.isInSelectingRangeQuarter(t),\"react-datepicker__quarter-text--in-range\":dr(n,o,t,a),\"react-datepicker__quarter-text--range-start\":e.isRangeStartQuarter(t),\"react-datepicker__quarter-text--range-end\":e.isRangeEndQuarter(t)})})),St(Pt(e),\"getMonthContent\",(function(t){var r=e.props,a=r.showFullMonthYearPicker,n=r.renderMonthContent,o=r.locale,s=ar(t,o),i=rr(t,o);return n?n(t,s,i):a?i:s})),St(Pt(e),\"getQuarterContent\",(function(t){var r=e.props,a=r.renderQuarterContent,n=function(e,t){return Qt(Be.default(At(),e),\"QQQ\",t)}(t,r.locale);return a?a(t,n):n})),St(Pt(e),\"renderMonths\",(function(){var t=e.props,r=t.showTwoColumnMonthYearPicker,a=t.showFourColumnMonthYearPicker,n=t.day,o=t.selected;return Hr[jr(a,r)].grid.map((function(t,r){return de.default.createElement(\"div\",{className:\"react-datepicker__month-wrapper\",key:r},t.map((function(t,r){return de.default.createElement(\"div\",{ref:e.MONTH_REFS[t],key:r,onClick:function(r){e.onMonthClick(r,t)},onKeyDown:function(r){e.onMonthKeyDown(r,t)},onMouseEnter:function(){return e.onMonthMouseEnter(t)},tabIndex:e.getTabIndex(t),className:e.getMonthClassNames(t),role:\"option\",\"aria-label\":e.getAriaLabel(t),\"aria-current\":e.isCurrentMonth(n,t)?\"date\":void 0,\"aria-selected\":e.isSelectedMonth(n,t,o)},e.getMonthContent(t))})))}))})),St(Pt(e),\"renderQuarters\",(function(){var t=e.props,r=t.day,a=t.selected;return de.default.createElement(\"div\",{className:\"react-datepicker__quarter-wrapper\"},[1,2,3,4].map((function(t,n){return de.default.createElement(\"div\",{key:n,ref:e.QUARTER_REFS[n],role:\"option\",onClick:function(r){e.onQuarterClick(r,t)},onKeyDown:function(r){e.onQuarterKeyDown(r,t)},onMouseEnter:function(){return e.onQuarterMouseEnter(t)},className:e.getQuarterClassNames(t),\"aria-selected\":e.isSelectedQuarter(r,t,a),tabIndex:e.getQuarterTabIndex(t),\"aria-current\":e.isCurrentQuarter(r,t)?\"date\":void 0},e.getQuarterContent(t))})))})),St(Pt(e),\"getClassNames\",(function(){var t=e.props,r=t.selectingDate,a=t.selectsStart,n=t.selectsEnd,o=t.showMonthYearPicker,s=t.showQuarterYearPicker;return ue.default(\"react-datepicker__month\",{\"react-datepicker__month--selecting-range\":r&&(a||n)},{\"react-datepicker__monthPicker\":o},{\"react-datepicker__quarterPicker\":s})})),e}return bt(r,[{key:\"render\",value:function(){var e=this.props,t=e.showMonthYearPicker,r=e.showQuarterYearPicker,a=e.day,n=e.ariaLabelPrefix,o=void 0===n?\"month \":n;return de.default.createElement(\"div\",{className:this.getClassNames(),onMouseLeave:this.handleMouseLeave,\"aria-label\":\"\".concat(o,\" \").concat(Qt(a,\"yyyy-MM\")),role:\"listbox\"},t?this.renderMonths():r?this.renderQuarters():this.renderWeeks())}}]),r}(de.default.Component),Ur=function(e){_t(r,e);var t=Yt(r);function r(){var e;wt(this,r);for(var a=arguments.length,n=new Array(a),o=0;o<a;o++)n[o]=arguments[o];return St(Pt(e=t.call.apply(t,[this].concat(n))),\"state\",{height:null}),St(Pt(e),\"handleClick\",(function(t){(e.props.minTime||e.props.maxTime)&&mr(t,e.props)||(e.props.excludeTimes||e.props.includeTimes||e.props.filterTime)&&hr(t,e.props)||e.props.onChange(t)})),St(Pt(e),\"isSelectedTime\",(function(t,r,a){return e.props.selected&&r===Ne.default(t)&&a===Ye.default(t)})),St(Pt(e),\"liClasses\",(function(t,r,a){var n=[\"react-datepicker__time-list-item\",e.props.timeClassName?e.props.timeClassName(t,r,a):void 0];return e.isSelectedTime(t,r,a)&&n.push(\"react-datepicker__time-list-item--selected\"),((e.props.minTime||e.props.maxTime)&&mr(t,e.props)||(e.props.excludeTimes||e.props.includeTimes||e.props.filterTime)&&hr(t,e.props))&&n.push(\"react-datepicker__time-list-item--disabled\"),e.props.injectTimes&&(60*Ne.default(t)+Ye.default(t))%e.props.intervals!=0&&n.push(\"react-datepicker__time-list-item--injected\"),n.join(\" \")})),St(Pt(e),\"handleOnKeyDown\",(function(t,r){\" \"===t.key&&(t.preventDefault(),t.key=\"Enter\"),\"Enter\"===t.key&&e.handleClick(r),e.props.handleOnKeyDown(t)})),St(Pt(e),\"renderTimes\",(function(){for(var t,r=[],a=e.props.format?e.props.format:\"p\",n=e.props.intervals,o=(t=At(e.props.selected),$e.default(t)),s=1440/n,i=e.props.injectTimes&&e.props.injectTimes.sort((function(e,t){return e-t})),p=e.props.selected||e.props.openToDate||At(),l=Ne.default(p),c=Ye.default(p),d=Qe.default(qe.default(o,c),l),u=0;u<s;u++){var f=ye.default(o,u*n);if(r.push(f),i){var h=Sr(o,f,u,n,i);r=r.concat(h)}}return r.map((function(t,r){return de.default.createElement(\"li\",{key:r,onClick:e.handleClick.bind(Pt(e),t),className:e.liClasses(t,l,c),ref:function(r){(lt.default(t,d)||Xt(t,d))&&(e.centerLi=r)},onKeyDown:function(r){e.handleOnKeyDown(r,t)},tabIndex:\"0\",\"aria-selected\":e.isSelectedTime(t,l,c)?\"true\":void 0},Qt(t,a,e.props.locale))}))})),e}return bt(r,[{key:\"componentDidMount\",value:function(){this.list.scrollTop=this.centerLi&&r.calcCenterPosition(this.props.monthRef?this.props.monthRef.clientHeight-this.header.clientHeight:this.list.clientHeight,this.centerLi),this.props.monthRef&&this.header&&this.setState({height:this.props.monthRef.clientHeight-this.header.clientHeight})}},{key:\"render\",value:function(){var e=this,t=this.state.height;return de.default.createElement(\"div\",{className:\"react-datepicker__time-container \".concat(this.props.todayButton?\"react-datepicker__time-container--with-today-button\":\"\")},de.default.createElement(\"div\",{className:\"react-datepicker__header react-datepicker__header--time \".concat(this.props.showTimeSelectOnly?\"react-datepicker__header--time--only\":\"\"),ref:function(t){e.header=t}},de.default.createElement(\"div\",{className:\"react-datepicker-time__header\"},this.props.timeCaption)),de.default.createElement(\"div\",{className:\"react-datepicker__time\"},de.default.createElement(\"div\",{className:\"react-datepicker__time-box\"},de.default.createElement(\"ul\",{className:\"react-datepicker__time-list\",ref:function(t){e.list=t},style:t?{height:t}:{},tabIndex:\"0\"},this.renderTimes()))))}}],[{key:\"defaultProps\",get:function(){return{intervals:30,onTimeChange:function(){},todayButton:null,timeCaption:\"Time\"}}}]),r}(de.default.Component);St(Ur,\"calcCenterPosition\",(function(e,t){return t.offsetTop-(e/2-t.clientHeight/2)}));var zr=function(e){_t(r,e);var t=Yt(r);function r(e){var a;return wt(this,r),St(Pt(a=t.call(this,e)),\"YEAR_REFS\",Nt(Array(a.props.yearItemNumber)).map((function(){return de.default.createRef()}))),St(Pt(a),\"isDisabled\",(function(e){return nr(e,a.props)})),St(Pt(a),\"isExcluded\",(function(e){return or(e,a.props)})),St(Pt(a),\"selectingDate\",(function(){var e;return null!==(e=a.props.selectingDate)&&void 0!==e?e:a.props.preSelection})),St(Pt(a),\"updateFocusOnPaginate\",(function(e){var t=function(){this.YEAR_REFS[e].current.focus()}.bind(Pt(a));window.requestAnimationFrame(t)})),St(Pt(a),\"handleYearClick\",(function(e,t){a.props.onDayClick&&a.props.onDayClick(e,t)})),St(Pt(a),\"handleYearNavigation\",(function(e,t){var r=a.props,n=r.date,o=r.yearItemNumber,s=_r(n,o).startPeriod;a.isDisabled(t)||a.isExcluded(t)||(a.props.setPreSelection(t),e-s==-1?a.updateFocusOnPaginate(o-1):e-s===o?a.updateFocusOnPaginate(0):a.YEAR_REFS[e-s].current.focus())})),St(Pt(a),\"isSameDay\",(function(e,t){return Jt(e,t)})),St(Pt(a),\"isCurrentYear\",(function(e){return e===Le.default(At())})),St(Pt(a),\"isRangeStart\",(function(e){return a.props.startDate&&a.props.endDate&&zt(We.default(At(),e),a.props.startDate)})),St(Pt(a),\"isRangeEnd\",(function(e){return a.props.startDate&&a.props.endDate&&zt(We.default(At(),e),a.props.endDate)})),St(Pt(a),\"isInRange\",(function(e){return lr(e,a.props.startDate,a.props.endDate)})),St(Pt(a),\"isInSelectingRange\",(function(e){var t=a.props,r=t.selectsStart,n=t.selectsEnd,o=t.selectsRange,s=t.startDate,i=t.endDate;return!(!(r||n||o)||!a.selectingDate())&&(r&&i?lr(e,a.selectingDate(),i):(n&&s||!(!o||!s||i))&&lr(e,s,a.selectingDate()))})),St(Pt(a),\"isSelectingRangeStart\",(function(e){if(!a.isInSelectingRange(e))return!1;var t=a.props,r=t.startDate,n=t.selectsStart,o=We.default(At(),e);return zt(o,n?a.selectingDate():r)})),St(Pt(a),\"isSelectingRangeEnd\",(function(e){if(!a.isInSelectingRange(e))return!1;var t=a.props,r=t.endDate,n=t.selectsEnd,o=t.selectsRange,s=We.default(At(),e);return zt(s,n||o?a.selectingDate():r)})),St(Pt(a),\"isKeyboardSelected\",(function(e){var t=jt(We.default(a.props.date,e));return!a.props.disabledKeyboardNavigation&&!a.props.inline&&!Jt(t,jt(a.props.selected))&&Jt(t,jt(a.props.preSelection))})),St(Pt(a),\"onYearClick\",(function(e,t){var r=a.props.date;a.handleYearClick(jt(We.default(r,t)),e)})),St(Pt(a),\"onYearKeyDown\",(function(e,t){var r=e.key;if(!a.props.disabledKeyboardNavigation)switch(r){case\"Enter\":a.onYearClick(e,t),a.props.setPreSelection(a.props.selected);break;case\"ArrowRight\":a.handleYearNavigation(t+1,be.default(a.props.preSelection,1));break;case\"ArrowLeft\":a.handleYearNavigation(t-1,Ee.default(a.props.preSelection,1))}})),St(Pt(a),\"getYearClassNames\",(function(e){var t=a.props,r=t.minDate,n=t.maxDate,o=t.selected,s=t.excludeDates,i=t.includeDates,p=t.filterDate;return ue.default(\"react-datepicker__year-text\",{\"react-datepicker__year-text--selected\":e===Le.default(o),\"react-datepicker__year-text--disabled\":(r||n||s||i||p)&&cr(e,a.props),\"react-datepicker__year-text--keyboard-selected\":a.isKeyboardSelected(e),\"react-datepicker__year-text--range-start\":a.isRangeStart(e),\"react-datepicker__year-text--range-end\":a.isRangeEnd(e),\"react-datepicker__year-text--in-range\":a.isInRange(e),\"react-datepicker__year-text--in-selecting-range\":a.isInSelectingRange(e),\"react-datepicker__year-text--selecting-range-start\":a.isSelectingRangeStart(e),\"react-datepicker__year-text--selecting-range-end\":a.isSelectingRangeEnd(e),\"react-datepicker__year-text--today\":a.isCurrentYear(e)})})),St(Pt(a),\"getYearTabIndex\",(function(e){return a.props.disabledKeyboardNavigation?\"-1\":e===Le.default(a.props.preSelection)?\"0\":\"-1\"})),St(Pt(a),\"getYearContainerClassNames\",(function(){var e=a.props,t=e.selectingDate,r=e.selectsStart,n=e.selectsEnd,o=e.selectsRange;return ue.default(\"react-datepicker__year\",{\"react-datepicker__year--selecting-range\":t&&(r||n||o)})})),St(Pt(a),\"getYearContent\",(function(e){return a.props.renderYearContent?a.props.renderYearContent(e):e})),a}return bt(r,[{key:\"render\",value:function(){for(var e=this,t=[],r=this.props,a=r.date,n=r.yearItemNumber,o=r.onYearMouseEnter,s=r.onYearMouseLeave,i=_r(a,n),p=i.startPeriod,l=i.endPeriod,c=function(r){t.push(de.default.createElement(\"div\",{ref:e.YEAR_REFS[r-p],onClick:function(t){e.onYearClick(t,r)},onKeyDown:function(t){e.onYearKeyDown(t,r)},tabIndex:e.getYearTabIndex(r),className:e.getYearClassNames(r),onMouseEnter:function(e){return o(e,r)},onMouseLeave:function(e){return s(e,r)},key:r,\"aria-current\":e.isCurrentYear(r)?\"date\":void 0},e.getYearContent(r)))},d=p;d<=l;d++)c(d);return de.default.createElement(\"div\",{className:this.getYearContainerClassNames()},de.default.createElement(\"div\",{className:\"react-datepicker__year-wrapper\",onMouseLeave:this.props.clearSelectingDate},t))}}]),r}(de.default.Component),$r=function(e){_t(r,e);var t=Yt(r);function r(e){var a;return wt(this,r),St(Pt(a=t.call(this,e)),\"onTimeChange\",(function(e){a.setState({time:e});var t=new Date;t.setHours(e.split(\":\")[0]),t.setMinutes(e.split(\":\")[1]),a.props.onChange(t)})),St(Pt(a),\"renderTimeInput\",(function(){var e=a.state.time,t=a.props,r=t.date,n=t.timeString,o=t.customTimeInput;return o?de.default.cloneElement(o,{date:r,value:e,onChange:a.onTimeChange}):de.default.createElement(\"input\",{type:\"time\",className:\"react-datepicker-time__input\",placeholder:\"Time\",name:\"time-input\",required:!0,value:e,onChange:function(e){a.onTimeChange(e.target.value||n)}})})),a.state={time:a.props.timeString},a}return bt(r,[{key:\"render\",value:function(){return de.default.createElement(\"div\",{className:\"react-datepicker__input-time-container\"},de.default.createElement(\"div\",{className:\"react-datepicker-time__caption\"},this.props.timeInputLabel),de.default.createElement(\"div\",{className:\"react-datepicker-time__input-container\"},de.default.createElement(\"div\",{className:\"react-datepicker-time__input\"},this.renderTimeInput())))}}],[{key:\"getDerivedStateFromProps\",value:function(e,t){return e.timeString!==t.time?{time:e.timeString}:null}}]),r}(de.default.Component);function Gr(e){var t=e.className,r=e.children,a=e.showPopperArrow,n=e.arrowProps,o=void 0===n?{}:n;return de.default.createElement(\"div\",{className:t},a&&de.default.createElement(\"div\",Ct({className:\"react-datepicker__triangle\"},o)),r)}var Jr=[\"react-datepicker__year-select\",\"react-datepicker__month-select\",\"react-datepicker__month-year-select\"],Xr=function(e){_t(r,e);var t=Yt(r);function r(e){var a;return wt(this,r),St(Pt(a=t.call(this,e)),\"handleClickOutside\",(function(e){a.props.onClickOutside(e)})),St(Pt(a),\"setClickOutsideRef\",(function(){return a.containerRef.current})),St(Pt(a),\"handleDropdownFocus\",(function(e){(function(){var e=((arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}).className||\"\").split(/\\s+/);return Jr.some((function(t){return e.indexOf(t)>=0}))})(e.target)&&a.props.onDropdownFocus()})),St(Pt(a),\"getDateInView\",(function(){var e=a.props,t=e.preSelection,r=e.selected,n=e.openToDate,o=wr(a.props),s=kr(a.props),i=At(),p=n||r||t;return p||(o&&lt.default(i,o)?o:s&&pt.default(i,s)?s:i)})),St(Pt(a),\"increaseMonth\",(function(){a.setState((function(e){var t=e.date;return{date:we.default(t,1)}}),(function(){return a.handleMonthChange(a.state.date)}))})),St(Pt(a),\"decreaseMonth\",(function(){a.setState((function(e){var t=e.date;return{date:_e.default(t,1)}}),(function(){return a.handleMonthChange(a.state.date)}))})),St(Pt(a),\"handleDayClick\",(function(e,t,r){a.props.onSelect(e,t,r),a.props.setPreSelection&&a.props.setPreSelection(e)})),St(Pt(a),\"handleDayMouseEnter\",(function(e){a.setState({selectingDate:e}),a.props.onDayMouseEnter&&a.props.onDayMouseEnter(e)})),St(Pt(a),\"handleMonthMouseLeave\",(function(){a.setState({selectingDate:null}),a.props.onMonthMouseLeave&&a.props.onMonthMouseLeave()})),St(Pt(a),\"handleYearMouseEnter\",(function(e,t){a.setState({selectingDate:We.default(At(),t)}),a.props.onYearMouseEnter&&a.props.onYearMouseEnter(e,t)})),St(Pt(a),\"handleYearMouseLeave\",(function(e,t){a.props.onYearMouseLeave&&a.props.onYearMouseLeave(e,t)})),St(Pt(a),\"handleYearChange\",(function(e){a.props.onYearChange&&(a.props.onYearChange(e),a.setState({isRenderAriaLiveMessage:!0})),a.props.adjustDateOnChange&&(a.props.onSelect&&a.props.onSelect(e),a.props.setOpen&&a.props.setOpen(!0)),a.props.setPreSelection&&a.props.setPreSelection(e)})),St(Pt(a),\"handleMonthChange\",(function(e){a.handleCustomMonthChange(e),a.props.adjustDateOnChange&&(a.props.onSelect&&a.props.onSelect(e),a.props.setOpen&&a.props.setOpen(!0)),a.props.setPreSelection&&a.props.setPreSelection(e)})),St(Pt(a),\"handleCustomMonthChange\",(function(e){a.props.onMonthChange&&(a.props.onMonthChange(e),a.setState({isRenderAriaLiveMessage:!0}))})),St(Pt(a),\"handleMonthYearChange\",(function(e){a.handleYearChange(e),a.handleMonthChange(e)})),St(Pt(a),\"changeYear\",(function(e){a.setState((function(t){var r=t.date;return{date:We.default(r,e)}}),(function(){return a.handleYearChange(a.state.date)}))})),St(Pt(a),\"changeMonth\",(function(e){a.setState((function(t){var r=t.date;return{date:Ke.default(r,e)}}),(function(){return a.handleMonthChange(a.state.date)}))})),St(Pt(a),\"changeMonthYear\",(function(e){a.setState((function(t){var r=t.date;return{date:We.default(Ke.default(r,Te.default(e)),Le.default(e))}}),(function(){return a.handleMonthYearChange(a.state.date)}))})),St(Pt(a),\"header\",(function(){var e=Wt(arguments.length>0&&void 0!==arguments[0]?arguments[0]:a.state.date,a.props.locale,a.props.calendarStartDay),t=[];return a.props.showWeekNumbers&&t.push(de.default.createElement(\"div\",{key:\"W\",className:\"react-datepicker__day-name\"},a.props.weekLabel||\"#\")),t.concat([0,1,2,3,4,5,6].map((function(t){var r=De.default(e,t),n=a.formatWeekday(r,a.props.locale),o=a.props.weekDayClassName?a.props.weekDayClassName(r):void 0;return de.default.createElement(\"div\",{key:t,className:ue.default(\"react-datepicker__day-name\",o)},n)})))})),St(Pt(a),\"formatWeekday\",(function(e,t){return a.props.formatWeekDay?function(e,t,r){return t(Qt(e,\"EEEE\",r))}(e,a.props.formatWeekDay,t):a.props.useWeekdaysShort?function(e,t){return Qt(e,\"EEE\",t)}(e,t):function(e,t){return Qt(e,\"EEEEEE\",t)}(e,t)})),St(Pt(a),\"decreaseYear\",(function(){a.setState((function(e){var t=e.date;return{date:Ee.default(t,a.props.showYearPicker?a.props.yearItemNumber:1)}}),(function(){return a.handleYearChange(a.state.date)}))})),St(Pt(a),\"clearSelectingDate\",(function(){a.setState({selectingDate:null})})),St(Pt(a),\"renderPreviousButton\",(function(){if(!a.props.renderCustomHeader){var e;switch(!0){case a.props.showMonthYearPicker:e=Dr(a.state.date,a.props);break;case a.props.showYearPicker:e=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.minDate,a=t.yearItemNumber,n=void 0===a?Lt:a,o=_r(jt(Ee.default(e,n)),n).endPeriod,s=r&&Le.default(r);return s&&s>o||!1}(a.state.date,a.props);break;default:e=yr(a.state.date,a.props)}if((a.props.forceShowMonthNavigation||a.props.showDisabledMonthNavigation||!e)&&!a.props.showTimeSelectOnly){var t=[\"react-datepicker__navigation\",\"react-datepicker__navigation--previous\"],r=a.decreaseMonth;(a.props.showMonthYearPicker||a.props.showQuarterYearPicker||a.props.showYearPicker)&&(r=a.decreaseYear),e&&a.props.showDisabledMonthNavigation&&(t.push(\"react-datepicker__navigation--previous--disabled\"),r=null);var n=a.props.showMonthYearPicker||a.props.showQuarterYearPicker||a.props.showYearPicker,o=a.props,s=o.previousMonthButtonLabel,i=o.previousYearButtonLabel,p=a.props,l=p.previousMonthAriaLabel,c=void 0===l?\"string\"==typeof s?s:\"Previous Month\":l,d=p.previousYearAriaLabel,u=void 0===d?\"string\"==typeof i?i:\"Previous Year\":d;return de.default.createElement(\"button\",{type:\"button\",className:t.join(\" \"),onClick:r,onKeyDown:a.props.handleOnKeyDown,\"aria-label\":n?u:c},de.default.createElement(\"span\",{className:[\"react-datepicker__navigation-icon\",\"react-datepicker__navigation-icon--previous\"].join(\" \")},n?a.props.previousYearButtonLabel:a.props.previousMonthButtonLabel))}}})),St(Pt(a),\"increaseYear\",(function(){a.setState((function(e){var t=e.date;return{date:be.default(t,a.props.showYearPicker?a.props.yearItemNumber:1)}}),(function(){return a.handleYearChange(a.state.date)}))})),St(Pt(a),\"renderNextButton\",(function(){if(!a.props.renderCustomHeader){var e;switch(!0){case a.props.showMonthYearPicker:e=gr(a.state.date,a.props);break;case a.props.showYearPicker:e=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.maxDate,a=t.yearItemNumber,n=void 0===a?Lt:a,o=_r(be.default(e,n),n).startPeriod,s=r&&Le.default(r);return s&&s<o||!1}(a.state.date,a.props);break;default:e=vr(a.state.date,a.props)}if((a.props.forceShowMonthNavigation||a.props.showDisabledMonthNavigation||!e)&&!a.props.showTimeSelectOnly){var t=[\"react-datepicker__navigation\",\"react-datepicker__navigation--next\"];a.props.showTimeSelect&&t.push(\"react-datepicker__navigation--next--with-time\"),a.props.todayButton&&t.push(\"react-datepicker__navigation--next--with-today-button\");var r=a.increaseMonth;(a.props.showMonthYearPicker||a.props.showQuarterYearPicker||a.props.showYearPicker)&&(r=a.increaseYear),e&&a.props.showDisabledMonthNavigation&&(t.push(\"react-datepicker__navigation--next--disabled\"),r=null);var n=a.props.showMonthYearPicker||a.props.showQuarterYearPicker||a.props.showYearPicker,o=a.props,s=o.nextMonthButtonLabel,i=o.nextYearButtonLabel,p=a.props,l=p.nextMonthAriaLabel,c=void 0===l?\"string\"==typeof s?s:\"Next Month\":l,d=p.nextYearAriaLabel,u=void 0===d?\"string\"==typeof i?i:\"Next Year\":d;return de.default.createElement(\"button\",{type:\"button\",className:t.join(\" \"),onClick:r,onKeyDown:a.props.handleOnKeyDown,\"aria-label\":n?u:c},de.default.createElement(\"span\",{className:[\"react-datepicker__navigation-icon\",\"react-datepicker__navigation-icon--next\"].join(\" \")},n?a.props.nextYearButtonLabel:a.props.nextMonthButtonLabel))}}})),St(Pt(a),\"renderCurrentMonth\",(function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:a.state.date,t=[\"react-datepicker__current-month\"];return a.props.showYearDropdown&&t.push(\"react-datepicker__current-month--hasYearDropdown\"),a.props.showMonthDropdown&&t.push(\"react-datepicker__current-month--hasMonthDropdown\"),a.props.showMonthYearDropdown&&t.push(\"react-datepicker__current-month--hasMonthYearDropdown\"),de.default.createElement(\"div\",{className:t.join(\" \")},Qt(e,a.props.dateFormat,a.props.locale))})),St(Pt(a),\"renderYearDropdown\",(function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(a.props.showYearDropdown&&!e)return de.default.createElement(Yr,{adjustDateOnChange:a.props.adjustDateOnChange,date:a.state.date,onSelect:a.props.onSelect,setOpen:a.props.setOpen,dropdownMode:a.props.dropdownMode,onChange:a.changeYear,minDate:a.props.minDate,maxDate:a.props.maxDate,year:Le.default(a.state.date),scrollableYearDropdown:a.props.scrollableYearDropdown,yearDropdownItemNumber:a.props.yearDropdownItemNumber})})),St(Pt(a),\"renderMonthDropdown\",(function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(a.props.showMonthDropdown&&!e)return de.default.createElement(Or,{dropdownMode:a.props.dropdownMode,locale:a.props.locale,onChange:a.changeMonth,month:Te.default(a.state.date),useShortMonthInDropdown:a.props.useShortMonthInDropdown})})),St(Pt(a),\"renderMonthYearDropdown\",(function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(a.props.showMonthYearDropdown&&!e)return de.default.createElement(Fr,{dropdownMode:a.props.dropdownMode,locale:a.props.locale,dateFormat:a.props.dateFormat,onChange:a.changeMonthYear,minDate:a.props.minDate,maxDate:a.props.maxDate,date:a.state.date,scrollableMonthYearDropdown:a.props.scrollableMonthYearDropdown})})),St(Pt(a),\"handleTodayButtonClick\",(function(e){a.props.onSelect(Ut(),e),a.props.setPreSelection&&a.props.setPreSelection(Ut())})),St(Pt(a),\"renderTodayButton\",(function(){if(a.props.todayButton&&!a.props.showTimeSelectOnly)return de.default.createElement(\"div\",{className:\"react-datepicker__today-button\",onClick:function(e){return a.handleTodayButtonClick(e)}},a.props.todayButton)})),St(Pt(a),\"renderDefaultHeader\",(function(e){var t=e.monthDate,r=e.i;return de.default.createElement(\"div\",{className:\"react-datepicker__header \".concat(a.props.showTimeSelect?\"react-datepicker__header--has-time-select\":\"\")},a.renderCurrentMonth(t),de.default.createElement(\"div\",{className:\"react-datepicker__header__dropdown react-datepicker__header__dropdown--\".concat(a.props.dropdownMode),onFocus:a.handleDropdownFocus},a.renderMonthDropdown(0!==r),a.renderMonthYearDropdown(0!==r),a.renderYearDropdown(0!==r)),de.default.createElement(\"div\",{className:\"react-datepicker__day-names\"},a.header(t)))})),St(Pt(a),\"renderCustomHeader\",(function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.monthDate,r=e.i;if(a.props.showTimeSelect&&!a.state.monthContainer||a.props.showTimeSelectOnly)return null;var n=yr(a.state.date,a.props),o=vr(a.state.date,a.props),s=Dr(a.state.date,a.props),i=gr(a.state.date,a.props),p=!a.props.showMonthYearPicker&&!a.props.showQuarterYearPicker&&!a.props.showYearPicker;return de.default.createElement(\"div\",{className:\"react-datepicker__header react-datepicker__header--custom\",onFocus:a.props.onDropdownFocus},a.props.renderCustomHeader(Dt(Dt({},a.state),{},{customHeaderCount:r,monthDate:t,changeMonth:a.changeMonth,changeYear:a.changeYear,decreaseMonth:a.decreaseMonth,increaseMonth:a.increaseMonth,decreaseYear:a.decreaseYear,increaseYear:a.increaseYear,prevMonthButtonDisabled:n,nextMonthButtonDisabled:o,prevYearButtonDisabled:s,nextYearButtonDisabled:i})),p&&de.default.createElement(\"div\",{className:\"react-datepicker__day-names\"},a.header(t)))})),St(Pt(a),\"renderYearHeader\",(function(){var e=a.state.date,t=a.props,r=t.showYearPicker,n=_r(e,t.yearItemNumber),o=n.startPeriod,s=n.endPeriod;return de.default.createElement(\"div\",{className:\"react-datepicker__header react-datepicker-year-header\"},r?\"\".concat(o,\" - \").concat(s):Le.default(e))})),St(Pt(a),\"renderHeader\",(function(e){switch(!0){case void 0!==a.props.renderCustomHeader:return a.renderCustomHeader(e);case a.props.showMonthYearPicker||a.props.showQuarterYearPicker||a.props.showYearPicker:return a.renderYearHeader(e);default:return a.renderDefaultHeader(e)}})),St(Pt(a),\"renderMonths\",(function(){if(!a.props.showTimeSelectOnly&&!a.props.showYearPicker){for(var e=[],t=a.props.showPreviousMonths?a.props.monthsShown-1:0,r=_e.default(a.state.date,t),n=0;n<a.props.monthsShown;++n){var o=n-a.props.monthSelectedIn,s=we.default(r,o),i=\"month-\".concat(n),p=n<a.props.monthsShown-1,l=n>0;e.push(de.default.createElement(\"div\",{key:i,ref:function(e){a.monthContainer=e},className:\"react-datepicker__month-container\"},a.renderHeader({monthDate:s,i:n}),de.default.createElement(Vr,{chooseDayAriaLabelPrefix:a.props.chooseDayAriaLabelPrefix,disabledDayAriaLabelPrefix:a.props.disabledDayAriaLabelPrefix,weekAriaLabelPrefix:a.props.weekAriaLabelPrefix,ariaLabelPrefix:a.props.monthAriaLabelPrefix,onChange:a.changeMonthYear,day:s,dayClassName:a.props.dayClassName,calendarStartDay:a.props.calendarStartDay,monthClassName:a.props.monthClassName,onDayClick:a.handleDayClick,handleOnKeyDown:a.props.handleOnDayKeyDown,onDayMouseEnter:a.handleDayMouseEnter,onMouseLeave:a.handleMonthMouseLeave,onWeekSelect:a.props.onWeekSelect,orderInDisplay:n,formatWeekNumber:a.props.formatWeekNumber,locale:a.props.locale,minDate:a.props.minDate,maxDate:a.props.maxDate,excludeDates:a.props.excludeDates,excludeDateIntervals:a.props.excludeDateIntervals,highlightDates:a.props.highlightDates,selectingDate:a.state.selectingDate,includeDates:a.props.includeDates,includeDateIntervals:a.props.includeDateIntervals,inline:a.props.inline,shouldFocusDayInline:a.props.shouldFocusDayInline,fixedHeight:a.props.fixedHeight,filterDate:a.props.filterDate,preSelection:a.props.preSelection,setPreSelection:a.props.setPreSelection,selected:a.props.selected,selectsStart:a.props.selectsStart,selectsEnd:a.props.selectsEnd,selectsRange:a.props.selectsRange,selectsDisabledDaysInRange:a.props.selectsDisabledDaysInRange,showWeekNumbers:a.props.showWeekNumbers,startDate:a.props.startDate,endDate:a.props.endDate,peekNextMonth:a.props.peekNextMonth,setOpen:a.props.setOpen,shouldCloseOnSelect:a.props.shouldCloseOnSelect,renderDayContents:a.props.renderDayContents,renderMonthContent:a.props.renderMonthContent,renderQuarterContent:a.props.renderQuarterContent,renderYearContent:a.props.renderYearContent,disabledKeyboardNavigation:a.props.disabledKeyboardNavigation,showMonthYearPicker:a.props.showMonthYearPicker,showFullMonthYearPicker:a.props.showFullMonthYearPicker,showTwoColumnMonthYearPicker:a.props.showTwoColumnMonthYearPicker,showFourColumnMonthYearPicker:a.props.showFourColumnMonthYearPicker,showYearPicker:a.props.showYearPicker,showQuarterYearPicker:a.props.showQuarterYearPicker,isInputFocused:a.props.isInputFocused,containerRef:a.containerRef,monthShowsDuplicateDaysEnd:p,monthShowsDuplicateDaysStart:l})))}return e}})),St(Pt(a),\"renderYears\",(function(){if(!a.props.showTimeSelectOnly)return a.props.showYearPicker?de.default.createElement(\"div\",{className:\"react-datepicker__year--container\"},a.renderHeader(),de.default.createElement(zr,Ct({onDayClick:a.handleDayClick,selectingDate:a.state.selectingDate,clearSelectingDate:a.clearSelectingDate,date:a.state.date},a.props,{onYearMouseEnter:a.handleYearMouseEnter,onYearMouseLeave:a.handleYearMouseLeave}))):void 0})),St(Pt(a),\"renderTimeSection\",(function(){if(a.props.showTimeSelect&&(a.state.monthContainer||a.props.showTimeSelectOnly))return de.default.createElement(Ur,{selected:a.props.selected,openToDate:a.props.openToDate,onChange:a.props.onTimeChange,timeClassName:a.props.timeClassName,format:a.props.timeFormat,includeTimes:a.props.includeTimes,intervals:a.props.timeIntervals,minTime:a.props.minTime,maxTime:a.props.maxTime,excludeTimes:a.props.excludeTimes,filterTime:a.props.filterTime,timeCaption:a.props.timeCaption,todayButton:a.props.todayButton,showMonthDropdown:a.props.showMonthDropdown,showMonthYearDropdown:a.props.showMonthYearDropdown,showYearDropdown:a.props.showYearDropdown,withPortal:a.props.withPortal,monthRef:a.state.monthContainer,injectTimes:a.props.injectTimes,locale:a.props.locale,handleOnKeyDown:a.props.handleOnKeyDown,showTimeSelectOnly:a.props.showTimeSelectOnly})})),St(Pt(a),\"renderInputTimeSection\",(function(){var e=new Date(a.props.selected),t=qt(e)&&Boolean(a.props.selected)?\"\".concat(Cr(e.getHours()),\":\").concat(Cr(e.getMinutes())):\"\";if(a.props.showTimeInput)return de.default.createElement($r,{date:e,timeString:t,timeInputLabel:a.props.timeInputLabel,onChange:a.props.onTimeChange,customTimeInput:a.props.customTimeInput})})),St(Pt(a),\"renderAriaLiveRegion\",(function(){var e,t=_r(a.state.date,a.props.yearItemNumber),r=t.startPeriod,n=t.endPeriod;return e=a.props.showYearPicker?\"\".concat(r,\" - \").concat(n):a.props.showMonthYearPicker||a.props.showQuarterYearPicker?Le.default(a.state.date):\"\".concat(rr(Te.default(a.state.date),a.props.locale),\" \").concat(Le.default(a.state.date)),de.default.createElement(\"span\",{role:\"alert\",\"aria-live\":\"polite\",className:\"react-datepicker__aria-live\"},a.state.isRenderAriaLiveMessage&&e)})),St(Pt(a),\"renderChildren\",(function(){if(a.props.children)return de.default.createElement(\"div\",{className:\"react-datepicker__children-container\"},a.props.children)})),a.containerRef=de.default.createRef(),a.state={date:a.getDateInView(),selectingDate:null,monthContainer:null,isRenderAriaLiveMessage:!1},a}return bt(r,[{key:\"componentDidMount\",value:function(){var e=this;this.props.showTimeSelect&&(this.assignMonthContainer=void e.setState({monthContainer:e.monthContainer}))}},{key:\"componentDidUpdate\",value:function(e){var t=this;if(!this.props.preSelection||Jt(this.props.preSelection,e.preSelection)&&this.props.monthSelectedIn===e.monthSelectedIn)this.props.openToDate&&!Jt(this.props.openToDate,e.openToDate)&&this.setState({date:this.props.openToDate});else{var r=!$t(this.state.date,this.props.preSelection);this.setState({date:this.props.preSelection},(function(){return r&&t.handleCustomMonthChange(t.state.date)}))}}},{key:\"render\",value:function(){var e=this.props.container||Gr;return de.default.createElement(\"div\",{ref:this.containerRef},de.default.createElement(e,{className:ue.default(\"react-datepicker\",this.props.className,{\"react-datepicker--time-only\":this.props.showTimeSelectOnly}),showPopperArrow:this.props.showPopperArrow,arrowProps:this.props.arrowProps},this.renderAriaLiveRegion(),this.renderPreviousButton(),this.renderNextButton(),this.renderMonths(),this.renderYears(),this.renderTodayButton(),this.renderTimeSection(),this.renderInputTimeSection(),this.renderChildren()))}}],[{key:\"defaultProps\",get:function(){return{onDropdownFocus:function(){},monthsShown:1,monthSelectedIn:0,forceShowMonthNavigation:!1,timeCaption:\"Time\",previousYearButtonLabel:\"Previous Year\",nextYearButtonLabel:\"Next Year\",previousMonthButtonLabel:\"Previous Month\",nextMonthButtonLabel:\"Next Month\",customTimeInput:null,yearItemNumber:Lt}}}]),r}(de.default.Component),Zr=function(e){_t(r,e);var t=Yt(r);function r(e){var a;return wt(this,r),(a=t.call(this,e)).el=document.createElement(\"div\"),a}return bt(r,[{key:\"componentDidMount\",value:function(){this.portalRoot=(this.props.portalHost||document).getElementById(this.props.portalId),this.portalRoot||(this.portalRoot=document.createElement(\"div\"),this.portalRoot.setAttribute(\"id\",this.props.portalId),(this.props.portalHost||document.body).appendChild(this.portalRoot)),this.portalRoot.appendChild(this.el)}},{key:\"componentWillUnmount\",value:function(){this.portalRoot.removeChild(this.el)}},{key:\"render\",value:function(){return mt.default.createPortal(this.props.children,this.el)}}]),r}(de.default.Component),ea=function(e){return!e.disabled&&-1!==e.tabIndex},ta=function(e){_t(r,e);var t=Yt(r);function r(e){var a;return wt(this,r),St(Pt(a=t.call(this,e)),\"getTabChildren\",(function(){return Array.prototype.slice.call(a.tabLoopRef.current.querySelectorAll(\"[tabindex], a, button, input, select, textarea\"),1,-1).filter(ea)})),St(Pt(a),\"handleFocusStart\",(function(){var e=a.getTabChildren();e&&e.length>1&&e[e.length-1].focus()})),St(Pt(a),\"handleFocusEnd\",(function(){var e=a.getTabChildren();e&&e.length>1&&e[0].focus()})),a.tabLoopRef=de.default.createRef(),a}return bt(r,[{key:\"render\",value:function(){return this.props.enableTabLoop?de.default.createElement(\"div\",{className:\"react-datepicker__tab-loop\",ref:this.tabLoopRef},de.default.createElement(\"div\",{className:\"react-datepicker__tab-loop__start\",tabIndex:\"0\",onFocus:this.handleFocusStart}),this.props.children,de.default.createElement(\"div\",{className:\"react-datepicker__tab-loop__end\",tabIndex:\"0\",onFocus:this.handleFocusEnd})):this.props.children}}],[{key:\"defaultProps\",get:function(){return{enableTabLoop:!0}}}]),r}(de.default.Component),ra=function(e){_t(r,e);var t=Yt(r);function r(){return wt(this,r),t.apply(this,arguments)}return bt(r,[{key:\"render\",value:function(){var e,t=this.props,r=t.className,a=t.wrapperClassName,n=t.hidePopper,o=t.popperComponent,s=t.popperModifiers,i=t.popperPlacement,p=t.popperProps,l=t.targetComponent,c=t.enableTabLoop,d=t.popperOnKeyDown,u=t.portalId,f=t.portalHost;if(!n){var h=ue.default(\"react-datepicker-popper\",r);e=de.default.createElement(pe.Popper,Ct({modifiers:s,placement:i},p),(function(e){var t=e.ref,r=e.style,a=e.placement,n=e.arrowProps;return de.default.createElement(ta,{enableTabLoop:c},de.default.createElement(\"div\",{ref:t,style:r,className:h,\"data-placement\":a,onKeyDown:d},de.default.cloneElement(o,{arrowProps:n})))}))}this.props.popperContainer&&(e=de.default.createElement(this.props.popperContainer,{},e)),u&&!n&&(e=de.default.createElement(Zr,{portalId:u,portalHost:f},e));var m=ue.default(\"react-datepicker-wrapper\",a);return de.default.createElement(pe.Manager,{className:\"react-datepicker-manager\"},de.default.createElement(pe.Reference,null,(function(e){var t=e.ref;return de.default.createElement(\"div\",{ref:t,className:m},l)})),e)}}],[{key:\"defaultProps\",get:function(){return{hidePopper:!0,popperModifiers:[],popperProps:{},popperPlacement:\"bottom-start\"}}}]),r}(de.default.Component),aa=\"react-datepicker-ignore-onclickoutside\",na=ht.default(Xr);var oa=\"Date input not valid.\",sa=function(e){_t(r,e);var t=Yt(r);function r(e){var a;return wt(this,r),St(Pt(a=t.call(this,e)),\"getPreSelection\",(function(){return a.props.openToDate?a.props.openToDate:a.props.selectsEnd&&a.props.startDate?a.props.startDate:a.props.selectsStart&&a.props.endDate?a.props.endDate:At()})),St(Pt(a),\"calcInitialState\",(function(){var e,t=a.getPreSelection(),r=wr(a.props),n=kr(a.props),o=r&&lt.default(t,$e.default(r))?r:n&&pt.default(t,et.default(n))?n:t;return{open:a.props.startOpen||!1,preventFocus:!1,preSelection:null!==(e=a.props.selectsRange?a.props.startDate:a.props.selected)&&void 0!==e?e:o,highlightDates:br(a.props.highlightDates),focused:!1,shouldFocusDayInline:!1,isRenderAriaLiveMessage:!1}})),St(Pt(a),\"clearPreventFocusTimeout\",(function(){a.preventFocusTimeout&&clearTimeout(a.preventFocusTimeout)})),St(Pt(a),\"setFocus\",(function(){a.input&&a.input.focus&&a.input.focus({preventScroll:!0})})),St(Pt(a),\"setBlur\",(function(){a.input&&a.input.blur&&a.input.blur(),a.cancelFocusInput()})),St(Pt(a),\"setOpen\",(function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];a.setState({open:e,preSelection:e&&a.state.open?a.state.preSelection:a.calcInitialState().preSelection,lastPreSelectChange:pa},(function(){e||a.setState((function(e){return{focused:!!t&&e.focused}}),(function(){!t&&a.setBlur(),a.setState({inputValue:null})}))}))})),St(Pt(a),\"inputOk\",(function(){return fe.default(a.state.preSelection)})),St(Pt(a),\"isCalendarOpen\",(function(){return void 0===a.props.open?a.state.open&&!a.props.disabled&&!a.props.readOnly:a.props.open})),St(Pt(a),\"handleFocus\",(function(e){a.state.preventFocus||(a.props.onFocus(e),a.props.preventOpenOnFocus||a.props.readOnly||a.setOpen(!0)),a.setState({focused:!0})})),St(Pt(a),\"cancelFocusInput\",(function(){clearTimeout(a.inputFocusTimeout),a.inputFocusTimeout=null})),St(Pt(a),\"deferFocusInput\",(function(){a.cancelFocusInput(),a.inputFocusTimeout=setTimeout((function(){return a.setFocus()}),1)})),St(Pt(a),\"handleDropdownFocus\",(function(){a.cancelFocusInput()})),St(Pt(a),\"handleBlur\",(function(e){(!a.state.open||a.props.withPortal||a.props.showTimeInput)&&a.props.onBlur(e),a.setState({focused:!1})})),St(Pt(a),\"handleCalendarClickOutside\",(function(e){a.props.inline||a.setOpen(!1),a.props.onClickOutside(e),a.props.withPortal&&e.preventDefault()})),St(Pt(a),\"handleChange\",(function(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];var n=t[0];if(!a.props.onChangeRaw||(a.props.onChangeRaw.apply(Pt(a),t),\"function\"==typeof n.isDefaultPrevented&&!n.isDefaultPrevented())){a.setState({inputValue:n.target.value,lastPreSelectChange:ia});var o,s,i,p,l,c,d,u,f=(o=n.target.value,s=a.props.dateFormat,i=a.props.locale,p=a.props.strictParsing,l=a.props.minDate,c=null,d=tr(i)||tr(er()),u=!0,Array.isArray(s)?(s.forEach((function(e){var t=ut.default(o,e,new Date,{locale:d});p&&(u=qt(t,l)&&o===Qt(t,e,i)),qt(t,l)&&u&&(c=t)})),c):(c=ut.default(o,s,new Date,{locale:d}),p?u=qt(c)&&o===Qt(c,s,i):qt(c)||(s=s.match(Ft).map((function(e){var t=e[0];return\"p\"===t||\"P\"===t?d?(0,Rt[t])(e,d.formatLong):t:e})).join(\"\"),o.length>0&&(c=ut.default(o,s.slice(0,o.length),new Date)),qt(c)||(c=new Date(o))),qt(c)&&u?c:null));a.props.showTimeSelectOnly&&a.props.selected&&!Jt(f,a.props.selected)&&(f=null==f?yt.default(a.props.selected,{hours:Ne.default(a.props.selected),minutes:Ye.default(a.props.selected),seconds:Pe.default(a.props.selected)}):yt.default(a.props.selected,{hours:Ne.default(f),minutes:Ye.default(f),seconds:Pe.default(f)})),!f&&n.target.value||a.setSelected(f,n,!0)}})),St(Pt(a),\"handleSelect\",(function(e,t,r){if(a.setState({preventFocus:!0},(function(){return a.preventFocusTimeout=setTimeout((function(){return a.setState({preventFocus:!1})}),50),a.preventFocusTimeout})),a.props.onChangeRaw&&a.props.onChangeRaw(t),a.setSelected(e,t,!1,r),a.props.showDateSelect&&a.setState({isRenderAriaLiveMessage:!0}),!a.props.shouldCloseOnSelect||a.props.showTimeSelect)a.setPreSelection(e);else if(!a.props.inline){a.props.selectsRange||a.setOpen(!1);var n=a.props,o=n.startDate,s=n.endDate;!o||s||lt.default(e,o)||a.setOpen(!1)}})),St(Pt(a),\"setSelected\",(function(e,t,r,n){var o=e;if(a.props.showYearPicker){if(null!==o&&cr(Le.default(o),a.props))return}else if(a.props.showMonthYearPicker){if(null!==o&&sr(o,a.props))return}else if(null!==o&&nr(o,a.props))return;var s=a.props,i=s.onChange,p=s.selectsRange,l=s.startDate,c=s.endDate;if(!Xt(a.props.selected,o)||a.props.allowSameDay||p)if(null!==o&&(!a.props.selected||r&&(a.props.showTimeSelect||a.props.showTimeSelectOnly||a.props.showTimeInput)||(o=Bt(o,{hour:Ne.default(a.props.selected),minute:Ye.default(a.props.selected),second:Pe.default(a.props.selected)})),a.props.inline||a.setState({preSelection:o}),a.props.focusSelectedMonth||a.setState({monthSelectedIn:n})),p){var d=l&&!c,u=l&&c;!l&&!c?i([o,null],t):d&&(lt.default(o,l)?i([o,null],t):i([l,o],t)),u&&i([o,null],t)}else i(o,t);r||(a.props.onSelect(o,t),a.setState({inputValue:null}))})),St(Pt(a),\"setPreSelection\",(function(e){var t=void 0!==a.props.minDate,r=void 0!==a.props.maxDate,n=!0;if(e){var o=$e.default(e);if(t&&r)n=Zt(e,a.props.minDate,a.props.maxDate);else if(t){var s=$e.default(a.props.minDate);n=pt.default(e,s)||Xt(o,s)}else if(r){var i=et.default(a.props.maxDate);n=lt.default(e,i)||Xt(o,i)}}n&&a.setState({preSelection:e})})),St(Pt(a),\"handleTimeChange\",(function(e){var t=Bt(a.props.selected?a.props.selected:a.getPreSelection(),{hour:Ne.default(e),minute:Ye.default(e)});a.setState({preSelection:t}),a.props.onChange(t),a.props.shouldCloseOnSelect&&a.setOpen(!1),a.props.showTimeInput&&a.setOpen(!0),(a.props.showTimeSelectOnly||a.props.showTimeSelect)&&a.setState({isRenderAriaLiveMessage:!0}),a.setState({inputValue:null})})),St(Pt(a),\"onInputClick\",(function(){a.props.disabled||a.props.readOnly||a.setOpen(!0),a.props.onInputClick()})),St(Pt(a),\"onInputKeyDown\",(function(e){a.props.onKeyDown(e);var t=e.key;if(a.state.open||a.props.inline||a.props.preventOpenOnFocus){if(a.state.open){if(\"ArrowDown\"===t||\"ArrowUp\"===t){e.preventDefault();var r=a.calendar.componentNode&&a.calendar.componentNode.querySelector('.react-datepicker__day[tabindex=\"0\"]');return void(r&&r.focus({preventScroll:!0}))}var n=At(a.state.preSelection);\"Enter\"===t?(e.preventDefault(),a.inputOk()&&a.state.lastPreSelectChange===pa?(a.handleSelect(n,e),!a.props.shouldCloseOnSelect&&a.setPreSelection(n)):a.setOpen(!1)):\"Escape\"===t?(e.preventDefault(),a.setOpen(!1)):\"Tab\"===t&&e.shiftKey&&a.setOpen(!1),a.inputOk()||a.props.onInputError({code:1,msg:oa})}}else\"ArrowDown\"!==t&&\"ArrowUp\"!==t&&\"Enter\"!==t||a.onInputClick()})),St(Pt(a),\"onPortalKeyDown\",(function(e){\"Escape\"===e.key&&(e.preventDefault(),a.setState({preventFocus:!0},(function(){a.setOpen(!1),setTimeout((function(){a.setFocus(),a.setState({preventFocus:!1})}))})))})),St(Pt(a),\"onDayKeyDown\",(function(e){a.props.onKeyDown(e);var t=e.key,r=At(a.state.preSelection);if(\"Enter\"===t)e.preventDefault(),a.handleSelect(r,e),!a.props.shouldCloseOnSelect&&a.setPreSelection(r);else if(\"Escape\"===t)e.preventDefault(),a.setOpen(!1),a.inputOk()||a.props.onInputError({code:1,msg:oa});else if(!a.props.disabledKeyboardNavigation){var n;switch(t){case\"ArrowLeft\":n=Se.default(r,1);break;case\"ArrowRight\":n=De.default(r,1);break;case\"ArrowUp\":n=Ce.default(r,1);break;case\"ArrowDown\":n=ge.default(r,1);break;case\"PageUp\":n=_e.default(r,1);break;case\"PageDown\":n=we.default(r,1);break;case\"Home\":n=Ee.default(r,1);break;case\"End\":n=be.default(r,1)}if(!n)return void(a.props.onInputError&&a.props.onInputError({code:1,msg:oa}));if(e.preventDefault(),a.setState({lastPreSelectChange:pa}),a.props.adjustDateOnChange&&a.setSelected(n),a.setPreSelection(n),a.props.inline){var o=Te.default(r),s=Te.default(n),i=Le.default(r),p=Le.default(n);o!==s||i!==p?a.setState({shouldFocusDayInline:!0}):a.setState({shouldFocusDayInline:!1})}}})),St(Pt(a),\"onPopperKeyDown\",(function(e){\"Escape\"===e.key&&(e.preventDefault(),a.setState({preventFocus:!0},(function(){a.setOpen(!1),setTimeout((function(){a.setFocus(),a.setState({preventFocus:!1})}))})))})),St(Pt(a),\"onClearClick\",(function(e){e&&e.preventDefault&&e.preventDefault(),a.props.selectsRange?a.props.onChange([null,null],e):a.props.onChange(null,e),a.setState({inputValue:null})})),St(Pt(a),\"clear\",(function(){a.onClearClick()})),St(Pt(a),\"onScroll\",(function(e){\"boolean\"==typeof a.props.closeOnScroll&&a.props.closeOnScroll?e.target!==document&&e.target!==document.documentElement&&e.target!==document.body||a.setOpen(!1):\"function\"==typeof a.props.closeOnScroll&&a.props.closeOnScroll(e)&&a.setOpen(!1)})),St(Pt(a),\"renderCalendar\",(function(){return a.props.inline||a.isCalendarOpen()?de.default.createElement(na,{ref:function(e){a.calendar=e},locale:a.props.locale,calendarStartDay:a.props.calendarStartDay,chooseDayAriaLabelPrefix:a.props.chooseDayAriaLabelPrefix,disabledDayAriaLabelPrefix:a.props.disabledDayAriaLabelPrefix,weekAriaLabelPrefix:a.props.weekAriaLabelPrefix,monthAriaLabelPrefix:a.props.monthAriaLabelPrefix,adjustDateOnChange:a.props.adjustDateOnChange,setOpen:a.setOpen,shouldCloseOnSelect:a.props.shouldCloseOnSelect,dateFormat:a.props.dateFormatCalendar,useWeekdaysShort:a.props.useWeekdaysShort,formatWeekDay:a.props.formatWeekDay,dropdownMode:a.props.dropdownMode,selected:a.props.selected,preSelection:a.state.preSelection,onSelect:a.handleSelect,onWeekSelect:a.props.onWeekSelect,openToDate:a.props.openToDate,minDate:a.props.minDate,maxDate:a.props.maxDate,selectsStart:a.props.selectsStart,selectsEnd:a.props.selectsEnd,selectsRange:a.props.selectsRange,startDate:a.props.startDate,endDate:a.props.endDate,excludeDates:a.props.excludeDates,excludeDateIntervals:a.props.excludeDateIntervals,filterDate:a.props.filterDate,onClickOutside:a.handleCalendarClickOutside,formatWeekNumber:a.props.formatWeekNumber,highlightDates:a.state.highlightDates,includeDates:a.props.includeDates,includeDateIntervals:a.props.includeDateIntervals,includeTimes:a.props.includeTimes,injectTimes:a.props.injectTimes,inline:a.props.inline,shouldFocusDayInline:a.state.shouldFocusDayInline,peekNextMonth:a.props.peekNextMonth,showMonthDropdown:a.props.showMonthDropdown,showPreviousMonths:a.props.showPreviousMonths,useShortMonthInDropdown:a.props.useShortMonthInDropdown,showMonthYearDropdown:a.props.showMonthYearDropdown,showWeekNumbers:a.props.showWeekNumbers,showYearDropdown:a.props.showYearDropdown,withPortal:a.props.withPortal,forceShowMonthNavigation:a.props.forceShowMonthNavigation,showDisabledMonthNavigation:a.props.showDisabledMonthNavigation,scrollableYearDropdown:a.props.scrollableYearDropdown,scrollableMonthYearDropdown:a.props.scrollableMonthYearDropdown,todayButton:a.props.todayButton,weekLabel:a.props.weekLabel,outsideClickIgnoreClass:aa,fixedHeight:a.props.fixedHeight,monthsShown:a.props.monthsShown,monthSelectedIn:a.state.monthSelectedIn,onDropdownFocus:a.handleDropdownFocus,onMonthChange:a.props.onMonthChange,onYearChange:a.props.onYearChange,dayClassName:a.props.dayClassName,weekDayClassName:a.props.weekDayClassName,monthClassName:a.props.monthClassName,timeClassName:a.props.timeClassName,showDateSelect:a.props.showDateSelect,showTimeSelect:a.props.showTimeSelect,showTimeSelectOnly:a.props.showTimeSelectOnly,onTimeChange:a.handleTimeChange,timeFormat:a.props.timeFormat,timeIntervals:a.props.timeIntervals,minTime:a.props.minTime,maxTime:a.props.maxTime,excludeTimes:a.props.excludeTimes,filterTime:a.props.filterTime,timeCaption:a.props.timeCaption,className:a.props.calendarClassName,container:a.props.calendarContainer,yearItemNumber:a.props.yearItemNumber,yearDropdownItemNumber:a.props.yearDropdownItemNumber,previousMonthAriaLabel:a.props.previousMonthAriaLabel,previousMonthButtonLabel:a.props.previousMonthButtonLabel,nextMonthAriaLabel:a.props.nextMonthAriaLabel,nextMonthButtonLabel:a.props.nextMonthButtonLabel,previousYearAriaLabel:a.props.previousYearAriaLabel,previousYearButtonLabel:a.props.previousYearButtonLabel,nextYearAriaLabel:a.props.nextYearAriaLabel,nextYearButtonLabel:a.props.nextYearButtonLabel,timeInputLabel:a.props.timeInputLabel,disabledKeyboardNavigation:a.props.disabledKeyboardNavigation,renderCustomHeader:a.props.renderCustomHeader,popperProps:a.props.popperProps,renderDayContents:a.props.renderDayContents,renderMonthContent:a.props.renderMonthContent,renderQuarterContent:a.props.renderQuarterContent,renderYearContent:a.props.renderYearContent,onDayMouseEnter:a.props.onDayMouseEnter,onMonthMouseLeave:a.props.onMonthMouseLeave,onYearMouseEnter:a.props.onYearMouseEnter,onYearMouseLeave:a.props.onYearMouseLeave,selectsDisabledDaysInRange:a.props.selectsDisabledDaysInRange,showTimeInput:a.props.showTimeInput,showMonthYearPicker:a.props.showMonthYearPicker,showFullMonthYearPicker:a.props.showFullMonthYearPicker,showTwoColumnMonthYearPicker:a.props.showTwoColumnMonthYearPicker,showFourColumnMonthYearPicker:a.props.showFourColumnMonthYearPicker,showYearPicker:a.props.showYearPicker,showQuarterYearPicker:a.props.showQuarterYearPicker,showPopperArrow:a.props.showPopperArrow,excludeScrollbar:a.props.excludeScrollbar,handleOnKeyDown:a.props.onKeyDown,handleOnDayKeyDown:a.onDayKeyDown,isInputFocused:a.state.focused,customTimeInput:a.props.customTimeInput,setPreSelection:a.setPreSelection},a.props.children):null})),St(Pt(a),\"renderAriaLiveRegion\",(function(){var e,t=a.props,r=t.dateFormat,n=t.locale,o=a.props.showTimeInput||a.props.showTimeSelect?\"PPPPp\":\"PPPP\";return e=a.props.selectsRange?\"Selected start date: \".concat(Kt(a.props.startDate,{dateFormat:o,locale:n}),\". \").concat(a.props.endDate?\"End date: \"+Kt(a.props.endDate,{dateFormat:o,locale:n}):\"\"):a.props.showTimeSelectOnly?\"Selected time: \".concat(Kt(a.props.selected,{dateFormat:r,locale:n})):a.props.showYearPicker?\"Selected year: \".concat(Kt(a.props.selected,{dateFormat:\"yyyy\",locale:n})):a.props.showMonthYearPicker?\"Selected month: \".concat(Kt(a.props.selected,{dateFormat:\"MMMM yyyy\",locale:n})):a.props.showQuarterYearPicker?\"Selected quarter: \".concat(Kt(a.props.selected,{dateFormat:\"yyyy, QQQ\",locale:n})):\"Selected date: \".concat(Kt(a.props.selected,{dateFormat:o,locale:n})),de.default.createElement(\"span\",{role:\"alert\",\"aria-live\":\"polite\",className:\"react-datepicker__aria-live\"},e)})),St(Pt(a),\"renderDateInput\",(function(){var e,t=ue.default(a.props.className,St({},aa,a.state.open)),r=a.props.customInput||de.default.createElement(\"input\",{type:\"text\"}),n=a.props.customInputRef||\"ref\",o=\"string\"==typeof a.props.value?a.props.value:\"string\"==typeof a.state.inputValue?a.state.inputValue:a.props.selectsRange?function(e,t,r){if(!e)return\"\";var a=Kt(e,r),n=t?Kt(t,r):\"\";return\"\".concat(a,\" - \").concat(n)}(a.props.startDate,a.props.endDate,a.props):Kt(a.props.selected,a.props);return de.default.cloneElement(r,(St(e={},n,(function(e){a.input=e})),St(e,\"value\",o),St(e,\"onBlur\",a.handleBlur),St(e,\"onChange\",a.handleChange),St(e,\"onClick\",a.onInputClick),St(e,\"onFocus\",a.handleFocus),St(e,\"onKeyDown\",a.onInputKeyDown),St(e,\"id\",a.props.id),St(e,\"name\",a.props.name),St(e,\"form\",a.props.form),St(e,\"autoFocus\",a.props.autoFocus),St(e,\"placeholder\",a.props.placeholderText),St(e,\"disabled\",a.props.disabled),St(e,\"autoComplete\",a.props.autoComplete),St(e,\"className\",ue.default(r.props.className,t)),St(e,\"title\",a.props.title),St(e,\"readOnly\",a.props.readOnly),St(e,\"required\",a.props.required),St(e,\"tabIndex\",a.props.tabIndex),St(e,\"aria-describedby\",a.props.ariaDescribedBy),St(e,\"aria-invalid\",a.props.ariaInvalid),St(e,\"aria-labelledby\",a.props.ariaLabelledBy),St(e,\"aria-required\",a.props.ariaRequired),e))})),St(Pt(a),\"renderClearButton\",(function(){var e=a.props,t=e.isClearable,r=e.selected,n=e.startDate,o=e.endDate,s=e.clearButtonTitle,i=e.clearButtonClassName,p=void 0===i?\"\":i,l=e.ariaLabelClose,c=void 0===l?\"Close\":l;return!t||null==r&&null==n&&null==o?null:de.default.createElement(\"button\",{type:\"button\",className:\"react-datepicker__close-icon \".concat(p).trim(),\"aria-label\":c,onClick:a.onClearClick,title:s,tabIndex:-1})})),a.state=a.calcInitialState(),a}return bt(r,[{key:\"componentDidMount\",value:function(){window.addEventListener(\"scroll\",this.onScroll,!0)}},{key:\"componentDidUpdate\",value:function(e,t){var r,a;e.inline&&(r=e.selected,a=this.props.selected,r&&a?Te.default(r)!==Te.default(a)||Le.default(r)!==Le.default(a):r!==a)&&this.setPreSelection(this.props.selected),void 0!==this.state.monthSelectedIn&&e.monthsShown!==this.props.monthsShown&&this.setState({monthSelectedIn:0}),e.highlightDates!==this.props.highlightDates&&this.setState({highlightDates:br(this.props.highlightDates)}),t.focused||Xt(e.selected,this.props.selected)||this.setState({inputValue:null}),t.open!==this.state.open&&(!1===t.open&&!0===this.state.open&&this.props.onCalendarOpen(),!0===t.open&&!1===this.state.open&&this.props.onCalendarClose())}},{key:\"componentWillUnmount\",value:function(){this.clearPreventFocusTimeout(),window.removeEventListener(\"scroll\",this.onScroll,!0)}},{key:\"renderInputContainer\",value:function(){var e=this.props.showIcon;return de.default.createElement(\"div\",{className:\"react-datepicker__input-container\".concat(e?\" react-datepicker__view-calendar-icon\":\"\")},e&&de.default.createElement(\"svg\",{className:\"react-datepicker__calendar-icon\",xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 448 512\"},de.default.createElement(\"path\",{d:\"M96 32V64H48C21.5 64 0 85.5 0 112v48H448V112c0-26.5-21.5-48-48-48H352V32c0-17.7-14.3-32-32-32s-32 14.3-32 32V64H160V32c0-17.7-14.3-32-32-32S96 14.3 96 32zM448 192H0V464c0 26.5 21.5 48 48 48H400c26.5 0 48-21.5 48-48V192z\"})),this.state.isRenderAriaLiveMessage&&this.renderAriaLiveRegion(),this.renderDateInput(),this.renderClearButton())}},{key:\"render\",value:function(){var e=this.renderCalendar();if(this.props.inline)return e;if(this.props.withPortal){var t=this.state.open?de.default.createElement(ta,{enableTabLoop:this.props.enableTabLoop},de.default.createElement(\"div\",{className:\"react-datepicker__portal\",tabIndex:-1,onKeyDown:this.onPortalKeyDown},e)):null;return this.state.open&&this.props.portalId&&(t=de.default.createElement(Zr,{portalId:this.props.portalId,portalHost:this.props.portalHost},t)),de.default.createElement(\"div\",null,this.renderInputContainer(),t)}return de.default.createElement(ra,{className:this.props.popperClassName,wrapperClassName:this.props.wrapperClassName,hidePopper:!this.isCalendarOpen(),portalId:this.props.portalId,portalHost:this.props.portalHost,popperModifiers:this.props.popperModifiers,targetComponent:this.renderInputContainer(),popperContainer:this.props.popperContainer,popperComponent:e,popperPlacement:this.props.popperPlacement,popperProps:this.props.popperProps,popperOnKeyDown:this.onPopperKeyDown,enableTabLoop:this.props.enableTabLoop})}}],[{key:\"defaultProps\",get:function(){return{allowSameDay:!1,dateFormat:\"MM/dd/yyyy\",dateFormatCalendar:\"LLLL yyyy\",onChange:function(){},disabled:!1,disabledKeyboardNavigation:!1,dropdownMode:\"scroll\",onFocus:function(){},onBlur:function(){},onKeyDown:function(){},onInputClick:function(){},onSelect:function(){},onClickOutside:function(){},onMonthChange:function(){},onCalendarOpen:function(){},onCalendarClose:function(){},preventOpenOnFocus:!1,onYearChange:function(){},onInputError:function(){},monthsShown:1,readOnly:!1,withPortal:!1,selectsDisabledDaysInRange:!1,shouldCloseOnSelect:!0,showTimeSelect:!1,showTimeInput:!1,showPreviousMonths:!1,showMonthYearPicker:!1,showFullMonthYearPicker:!1,showTwoColumnMonthYearPicker:!1,showFourColumnMonthYearPicker:!1,showYearPicker:!1,showQuarterYearPicker:!1,strictParsing:!1,timeIntervals:30,timeCaption:\"Time\",previousMonthAriaLabel:\"Previous Month\",previousMonthButtonLabel:\"Previous Month\",nextMonthAriaLabel:\"Next Month\",nextMonthButtonLabel:\"Next Month\",previousYearAriaLabel:\"Previous Year\",previousYearButtonLabel:\"Previous Year\",nextYearAriaLabel:\"Next Year\",nextYearButtonLabel:\"Next Year\",timeInputLabel:\"Time\",enableTabLoop:!0,yearItemNumber:Lt,focusSelectedMonth:!1,showPopperArrow:!0,excludeScrollbar:!0,customTimeInput:null,calendarStartDay:void 0}}}]),r}(de.default.Component),ia=\"input\",pa=\"navigate\";e.CalendarContainer=Gr,e.default=sa,e.getDefaultLocale=er,e.registerLocale=function(e,t){var r=\"undefined\"!=typeof window?window:globalThis;r.__localeData__||(r.__localeData__={}),r.__localeData__[e]=t},e.setDefaultLocale=function(e){(\"undefined\"!=typeof window?window:globalThis).__localeId__=e},Object.defineProperty(e,\"__esModule\",{value:!0})}));\n", "/**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\nfunction isNil(value) {\n  return value == null;\n}\n\nmodule.exports = isNil;\n", "/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n", "var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n", "var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n", "var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n  var isOwn = hasOwnProperty.call(value, symToStringTag),\n      tag = value[symToStringTag];\n\n  try {\n    value[symToStringTag] = undefined;\n    var unmasked = true;\n  } catch (e) {}\n\n  var result = nativeObjectToString.call(value);\n  if (unmasked) {\n    if (isOwn) {\n      value[symToStringTag] = tag;\n    } else {\n      delete value[symToStringTag];\n    }\n  }\n  return result;\n}\n\nmodule.exports = getRawTag;\n", "/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n  return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n", "var Symbol = require('./_Symbol'),\n    getRawTag = require('./_getRawTag'),\n    objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n    undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n  if (value == null) {\n    return value === undefined ? undefinedTag : nullTag;\n  }\n  return (symToStringTag && symToStringTag in Object(value))\n    ? getRawTag(value)\n    : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n", "/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n", "var baseGetTag = require('./_baseGetTag'),\n    isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n  if (!isObject(value)) {\n    return false;\n  }\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 9 which returns 'object' for typed arrays and other constructors.\n  var tag = baseGetTag(value);\n  return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n", "var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n", "var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n  return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n  return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n", "/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n  if (func != null) {\n    try {\n      return funcToString.call(func);\n    } catch (e) {}\n    try {\n      return (func + '');\n    } catch (e) {}\n  }\n  return '';\n}\n\nmodule.exports = toSource;\n", "var isFunction = require('./isFunction'),\n    isMasked = require('./_isMasked'),\n    isObject = require('./isObject'),\n    toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n  .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n *  else `false`.\n */\nfunction baseIsNative(value) {\n  if (!isObject(value) || isMasked(value)) {\n    return false;\n  }\n  var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n  return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n", "/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n  return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n", "var baseIsNative = require('./_baseIsNative'),\n    getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n  var value = getValue(object, key);\n  return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n", "var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n  try {\n    var func = getNative(Object, 'defineProperty');\n    func({}, '', {});\n    return func;\n  } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n", "var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n  if (key == '__proto__' && defineProperty) {\n    defineProperty(object, key, {\n      'configurable': true,\n      'enumerable': true,\n      'value': value,\n      'writable': true\n    });\n  } else {\n    object[key] = value;\n  }\n}\n\nmodule.exports = baseAssignValue;\n", "/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n  return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n", "var baseAssignValue = require('./_baseAssignValue'),\n    eq = require('./eq');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n  var objValue = object[key];\n  if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n      (value === undefined && !(key in object))) {\n    baseAssignValue(object, key, value);\n  }\n}\n\nmodule.exports = assignValue;\n", "var assignValue = require('./_assignValue'),\n    baseAssignValue = require('./_baseAssignValue');\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n  var isNew = !object;\n  object || (object = {});\n\n  var index = -1,\n      length = props.length;\n\n  while (++index < length) {\n    var key = props[index];\n\n    var newValue = customizer\n      ? customizer(object[key], source[key], key, object, source)\n      : undefined;\n\n    if (newValue === undefined) {\n      newValue = source[key];\n    }\n    if (isNew) {\n      baseAssignValue(object, key, newValue);\n    } else {\n      assignValue(object, key, newValue);\n    }\n  }\n  return object;\n}\n\nmodule.exports = copyObject;\n", "/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n  return value;\n}\n\nmodule.exports = identity;\n", "/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n  switch (args.length) {\n    case 0: return func.call(thisArg);\n    case 1: return func.call(thisArg, args[0]);\n    case 2: return func.call(thisArg, args[0], args[1]);\n    case 3: return func.call(thisArg, args[0], args[1], args[2]);\n  }\n  return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\n", "var apply = require('./_apply');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n  start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n  return function() {\n    var args = arguments,\n        index = -1,\n        length = nativeMax(args.length - start, 0),\n        array = Array(length);\n\n    while (++index < length) {\n      array[index] = args[start + index];\n    }\n    index = -1;\n    var otherArgs = Array(start + 1);\n    while (++index < start) {\n      otherArgs[index] = args[index];\n    }\n    otherArgs[start] = transform(array);\n    return apply(func, this, otherArgs);\n  };\n}\n\nmodule.exports = overRest;\n", "/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n  return function() {\n    return value;\n  };\n}\n\nmodule.exports = constant;\n", "var constant = require('./constant'),\n    defineProperty = require('./_defineProperty'),\n    identity = require('./identity');\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n  return defineProperty(func, 'toString', {\n    'configurable': true,\n    'enumerable': false,\n    'value': constant(string),\n    'writable': true\n  });\n};\n\nmodule.exports = baseSetToString;\n", "/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n    HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n  var count = 0,\n      lastCalled = 0;\n\n  return function() {\n    var stamp = nativeNow(),\n        remaining = HOT_SPAN - (stamp - lastCalled);\n\n    lastCalled = stamp;\n    if (remaining > 0) {\n      if (++count >= HOT_COUNT) {\n        return arguments[0];\n      }\n    } else {\n      count = 0;\n    }\n    return func.apply(undefined, arguments);\n  };\n}\n\nmodule.exports = shortOut;\n", "var baseSetToString = require('./_baseSetToString'),\n    shortOut = require('./_shortOut');\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nmodule.exports = setToString;\n", "var identity = require('./identity'),\n    overRest = require('./_overRest'),\n    setToString = require('./_setToString');\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n  return setToString(overRest(func, start, identity), func + '');\n}\n\nmodule.exports = baseRest;\n", "/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n  return typeof value == 'number' &&\n    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n", "var isFunction = require('./isFunction'),\n    isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n  return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n", "/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n  var type = typeof value;\n  length = length == null ? MAX_SAFE_INTEGER : length;\n\n  return !!length &&\n    (type == 'number' ||\n      (type != 'symbol' && reIsUint.test(value))) &&\n        (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n", "var eq = require('./eq'),\n    isArrayLike = require('./isArrayLike'),\n    isIndex = require('./_isIndex'),\n    isObject = require('./isObject');\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n *  else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n  if (!isObject(object)) {\n    return false;\n  }\n  var type = typeof index;\n  if (type == 'number'\n        ? (isArrayLike(object) && isIndex(index, object.length))\n        : (type == 'string' && index in object)\n      ) {\n    return eq(object[index], value);\n  }\n  return false;\n}\n\nmodule.exports = isIterateeCall;\n", "var baseRest = require('./_baseRest'),\n    isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n  return baseRest(function(object, sources) {\n    var index = -1,\n        length = sources.length,\n        customizer = length > 1 ? sources[length - 1] : undefined,\n        guard = length > 2 ? sources[2] : undefined;\n\n    customizer = (assigner.length > 3 && typeof customizer == 'function')\n      ? (length--, customizer)\n      : undefined;\n\n    if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n      customizer = length < 3 ? undefined : customizer;\n      length = 1;\n    }\n    object = Object(object);\n    while (++index < length) {\n      var source = sources[index];\n      if (source) {\n        assigner(object, source, index, customizer);\n      }\n    }\n    return object;\n  });\n}\n\nmodule.exports = createAssigner;\n", "/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n  var Ctor = value && value.constructor,\n      proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n  return value === proto;\n}\n\nmodule.exports = isPrototype;\n", "/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n  var index = -1,\n      result = Array(n);\n\n  while (++index < n) {\n    result[index] = iteratee(index);\n  }\n  return result;\n}\n\nmodule.exports = baseTimes;\n", "/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n", "var baseGetTag = require('./_baseGetTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n  return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n", "var baseIsArguments = require('./_baseIsArguments'),\n    isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n *  else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n  return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n    !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n", "/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n", "/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n  return false;\n}\n\nmodule.exports = stubFalse;\n", "var root = require('./_root'),\n    stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n", "var baseGetTag = require('./_baseGetTag'),\n    isLength = require('./isLength'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    funcTag = '[object Function]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    objectTag = '[object Object]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n  return isObjectLike(value) &&\n    isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n", "/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n  return function(value) {\n    return func(value);\n  };\n}\n\nmodule.exports = baseUnary;\n", "var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n  try {\n    // Use `util.types` for Node.js 10+.\n    var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n    if (types) {\n      return types;\n    }\n\n    // Legacy `process.binding('util')` for Node.js < 10.\n    return freeProcess && freeProcess.binding && freeProcess.binding('util');\n  } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n", "var baseIsTypedArray = require('./_baseIsTypedArray'),\n    baseUnary = require('./_baseUnary'),\n    nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n", "var baseTimes = require('./_baseTimes'),\n    isArguments = require('./isArguments'),\n    isArray = require('./isArray'),\n    isBuffer = require('./isBuffer'),\n    isIndex = require('./_isIndex'),\n    isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n  var isArr = isArray(value),\n      isArg = !isArr && isArguments(value),\n      isBuff = !isArr && !isArg && isBuffer(value),\n      isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n      skipIndexes = isArr || isArg || isBuff || isType,\n      result = skipIndexes ? baseTimes(value.length, String) : [],\n      length = result.length;\n\n  for (var key in value) {\n    if ((inherited || hasOwnProperty.call(value, key)) &&\n        !(skipIndexes && (\n           // Safari 9 has enumerable `arguments.length` in strict mode.\n           key == 'length' ||\n           // Node.js 0.10 has enumerable non-index properties on buffers.\n           (isBuff && (key == 'offset' || key == 'parent')) ||\n           // PhantomJS 2 has enumerable non-index properties on typed arrays.\n           (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n           // Skip index properties.\n           isIndex(key, length)\n        ))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nmodule.exports = arrayLikeKeys;\n", "/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n  return function(arg) {\n    return func(transform(arg));\n  };\n}\n\nmodule.exports = overArg;\n", "var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n", "var isPrototype = require('./_isPrototype'),\n    nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n  if (!isPrototype(object)) {\n    return nativeKeys(object);\n  }\n  var result = [];\n  for (var key in Object(object)) {\n    if (hasOwnProperty.call(object, key) && key != 'constructor') {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nmodule.exports = baseKeys;\n", "var arrayLikeKeys = require('./_arrayLikeKeys'),\n    baseKeys = require('./_baseKeys'),\n    isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n", "var assignValue = require('./_assignValue'),\n    copyObject = require('./_copyObject'),\n    createAssigner = require('./_createAssigner'),\n    isArrayLike = require('./isArrayLike'),\n    isPrototype = require('./_isPrototype'),\n    keys = require('./keys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n * }\n *\n * function Bar() {\n *   this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\nvar assign = createAssigner(function(object, source) {\n  if (isPrototype(source) || isArrayLike(source)) {\n    copyObject(source, keys(source), object);\n    return;\n  }\n  for (var key in source) {\n    if (hasOwnProperty.call(source, key)) {\n      assignValue(object, key, source[key]);\n    }\n  }\n});\n\nmodule.exports = assign;\n", "/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n  var index = -1,\n      length = array == null ? 0 : array.length,\n      result = Array(length);\n\n  while (++index < length) {\n    result[index] = iteratee(array[index], index, array);\n  }\n  return result;\n}\n\nmodule.exports = arrayMap;\n", "var baseGetTag = require('./_baseGetTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n", "var isArray = require('./isArray'),\n    isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n    reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n  if (isArray(value)) {\n    return false;\n  }\n  var type = typeof value;\n  if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n      value == null || isSymbol(value)) {\n    return true;\n  }\n  return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n    (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n", "var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n", "var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n  this.__data__ = nativeCreate ? nativeCreate(null) : {};\n  this.size = 0;\n}\n\nmodule.exports = hashClear;\n", "/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n  var result = this.has(key) && delete this.__data__[key];\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\nmodule.exports = hashDelete;\n", "var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n  var data = this.__data__;\n  if (nativeCreate) {\n    var result = data[key];\n    return result === HASH_UNDEFINED ? undefined : result;\n  }\n  return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n", "var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n  var data = this.__data__;\n  return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n", "var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n  var data = this.__data__;\n  this.size += this.has(key) ? 0 : 1;\n  data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n  return this;\n}\n\nmodule.exports = hashSet;\n", "var hashClear = require('./_hashClear'),\n    hashDelete = require('./_hashDelete'),\n    hashGet = require('./_hashGet'),\n    hashHas = require('./_hashHas'),\n    hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n", "/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n  this.__data__ = [];\n  this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n", "var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n  var length = array.length;\n  while (length--) {\n    if (eq(array[length][0], key)) {\n      return length;\n    }\n  }\n  return -1;\n}\n\nmodule.exports = assocIndexOf;\n", "var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    return false;\n  }\n  var lastIndex = data.length - 1;\n  if (index == lastIndex) {\n    data.pop();\n  } else {\n    splice.call(data, index, 1);\n  }\n  --this.size;\n  return true;\n}\n\nmodule.exports = listCacheDelete;\n", "var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n", "var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n  return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n", "var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    ++this.size;\n    data.push([key, value]);\n  } else {\n    data[index][1] = value;\n  }\n  return this;\n}\n\nmodule.exports = listCacheSet;\n", "var listCacheClear = require('./_listCacheClear'),\n    listCacheDelete = require('./_listCacheDelete'),\n    listCacheGet = require('./_listCacheGet'),\n    listCacheHas = require('./_listCacheHas'),\n    listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n", "var getNative = require('./_getNative'),\n    root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n", "var Hash = require('./_Hash'),\n    ListCache = require('./_ListCache'),\n    Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n  this.size = 0;\n  this.__data__ = {\n    'hash': new Hash,\n    'map': new (Map || ListCache),\n    'string': new Hash\n  };\n}\n\nmodule.exports = mapCacheClear;\n", "/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n  var type = typeof value;\n  return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n    ? (value !== '__proto__')\n    : (value === null);\n}\n\nmodule.exports = isKeyable;\n", "var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n  var data = map.__data__;\n  return isKeyable(key)\n    ? data[typeof key == 'string' ? 'string' : 'hash']\n    : data.map;\n}\n\nmodule.exports = getMapData;\n", "var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n  var result = getMapData(this, key)['delete'](key);\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\nmodule.exports = mapCacheDelete;\n", "var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n  return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n", "var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n  return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n", "var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n  var data = getMapData(this, key),\n      size = data.size;\n\n  data.set(key, value);\n  this.size += data.size == size ? 0 : 1;\n  return this;\n}\n\nmodule.exports = mapCacheSet;\n", "var mapCacheClear = require('./_mapCacheClear'),\n    mapCacheDelete = require('./_mapCacheDelete'),\n    mapCacheGet = require('./_mapCacheGet'),\n    mapCacheHas = require('./_mapCacheHas'),\n    mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n", "var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n  if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  var memoized = function() {\n    var args = arguments,\n        key = resolver ? resolver.apply(this, args) : args[0],\n        cache = memoized.cache;\n\n    if (cache.has(key)) {\n      return cache.get(key);\n    }\n    var result = func.apply(this, args);\n    memoized.cache = cache.set(key, result) || cache;\n    return result;\n  };\n  memoized.cache = new (memoize.Cache || MapCache);\n  return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n", "var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n  var result = memoize(func, function(key) {\n    if (cache.size === MAX_MEMOIZE_SIZE) {\n      cache.clear();\n    }\n    return key;\n  });\n\n  var cache = result.cache;\n  return result;\n}\n\nmodule.exports = memoizeCapped;\n", "var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n  var result = [];\n  if (string.charCodeAt(0) === 46 /* . */) {\n    result.push('');\n  }\n  string.replace(rePropName, function(match, number, quote, subString) {\n    result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n  });\n  return result;\n});\n\nmodule.exports = stringToPath;\n", "var Symbol = require('./_Symbol'),\n    arrayMap = require('./_arrayMap'),\n    isArray = require('./isArray'),\n    isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n  // Exit early for strings to avoid a performance hit in some environments.\n  if (typeof value == 'string') {\n    return value;\n  }\n  if (isArray(value)) {\n    // Recursively convert values (susceptible to call stack limits).\n    return arrayMap(value, baseToString) + '';\n  }\n  if (isSymbol(value)) {\n    return symbolToString ? symbolToString.call(value) : '';\n  }\n  var result = (value + '');\n  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n", "var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n  return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n", "var isArray = require('./isArray'),\n    isKey = require('./_isKey'),\n    stringToPath = require('./_stringToPath'),\n    toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n  if (isArray(value)) {\n    return value;\n  }\n  return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n", "var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n  if (typeof value == 'string' || isSymbol(value)) {\n    return value;\n  }\n  var result = (value + '');\n  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n", "var castPath = require('./_castPath'),\n    toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n  path = castPath(path, object);\n\n  var index = 0,\n      length = path.length;\n\n  while (object != null && index < length) {\n    object = object[toKey(path[index++])];\n  }\n  return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n", "var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n  this.__data__ = new ListCache;\n  this.size = 0;\n}\n\nmodule.exports = stackClear;\n", "/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n  var data = this.__data__,\n      result = data['delete'](key);\n\n  this.size = data.size;\n  return result;\n}\n\nmodule.exports = stackDelete;\n", "/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n  return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n", "/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n  return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n", "var ListCache = require('./_ListCache'),\n    Map = require('./_Map'),\n    MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n  var data = this.__data__;\n  if (data instanceof ListCache) {\n    var pairs = data.__data__;\n    if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n      pairs.push([key, value]);\n      this.size = ++data.size;\n      return this;\n    }\n    data = this.__data__ = new MapCache(pairs);\n  }\n  data.set(key, value);\n  this.size = data.size;\n  return this;\n}\n\nmodule.exports = stackSet;\n", "var ListCache = require('./_ListCache'),\n    stackClear = require('./_stackClear'),\n    stackDelete = require('./_stackDelete'),\n    stackGet = require('./_stackGet'),\n    stackHas = require('./_stackHas'),\n    stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n  var data = this.__data__ = new ListCache(entries);\n  this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n", "/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n  this.__data__.set(value, HASH_UNDEFINED);\n  return this;\n}\n\nmodule.exports = setCacheAdd;\n", "/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n  return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n", "var MapCache = require('./_MapCache'),\n    setCacheAdd = require('./_setCacheAdd'),\n    setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n  var index = -1,\n      length = values == null ? 0 : values.length;\n\n  this.__data__ = new MapCache;\n  while (++index < length) {\n    this.add(values[index]);\n  }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n", "/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n *  else `false`.\n */\nfunction arraySome(array, predicate) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  while (++index < length) {\n    if (predicate(array[index], index, array)) {\n      return true;\n    }\n  }\n  return false;\n}\n\nmodule.exports = arraySome;\n", "/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n  return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n", "var SetCache = require('./_SetCache'),\n    arraySome = require('./_arraySome'),\n    cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n      arrLength = array.length,\n      othLength = other.length;\n\n  if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n    return false;\n  }\n  // Check that cyclic values are equal.\n  var arrStacked = stack.get(array);\n  var othStacked = stack.get(other);\n  if (arrStacked && othStacked) {\n    return arrStacked == other && othStacked == array;\n  }\n  var index = -1,\n      result = true,\n      seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n  stack.set(array, other);\n  stack.set(other, array);\n\n  // Ignore non-index properties.\n  while (++index < arrLength) {\n    var arrValue = array[index],\n        othValue = other[index];\n\n    if (customizer) {\n      var compared = isPartial\n        ? customizer(othValue, arrValue, index, other, array, stack)\n        : customizer(arrValue, othValue, index, array, other, stack);\n    }\n    if (compared !== undefined) {\n      if (compared) {\n        continue;\n      }\n      result = false;\n      break;\n    }\n    // Recursively compare arrays (susceptible to call stack limits).\n    if (seen) {\n      if (!arraySome(other, function(othValue, othIndex) {\n            if (!cacheHas(seen, othIndex) &&\n                (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n              return seen.push(othIndex);\n            }\n          })) {\n        result = false;\n        break;\n      }\n    } else if (!(\n          arrValue === othValue ||\n            equalFunc(arrValue, othValue, bitmask, customizer, stack)\n        )) {\n      result = false;\n      break;\n    }\n  }\n  stack['delete'](array);\n  stack['delete'](other);\n  return result;\n}\n\nmodule.exports = equalArrays;\n", "var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n", "/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n  var index = -1,\n      result = Array(map.size);\n\n  map.forEach(function(value, key) {\n    result[++index] = [key, value];\n  });\n  return result;\n}\n\nmodule.exports = mapToArray;\n", "/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n  var index = -1,\n      result = Array(set.size);\n\n  set.forEach(function(value) {\n    result[++index] = value;\n  });\n  return result;\n}\n\nmodule.exports = setToArray;\n", "var Symbol = require('./_Symbol'),\n    Uint8Array = require('./_Uint8Array'),\n    eq = require('./eq'),\n    equalArrays = require('./_equalArrays'),\n    mapToArray = require('./_mapToArray'),\n    setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n  switch (tag) {\n    case dataViewTag:\n      if ((object.byteLength != other.byteLength) ||\n          (object.byteOffset != other.byteOffset)) {\n        return false;\n      }\n      object = object.buffer;\n      other = other.buffer;\n\n    case arrayBufferTag:\n      if ((object.byteLength != other.byteLength) ||\n          !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n        return false;\n      }\n      return true;\n\n    case boolTag:\n    case dateTag:\n    case numberTag:\n      // Coerce booleans to `1` or `0` and dates to milliseconds.\n      // Invalid dates are coerced to `NaN`.\n      return eq(+object, +other);\n\n    case errorTag:\n      return object.name == other.name && object.message == other.message;\n\n    case regexpTag:\n    case stringTag:\n      // Coerce regexes to strings and treat strings, primitives and objects,\n      // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n      // for more details.\n      return object == (other + '');\n\n    case mapTag:\n      var convert = mapToArray;\n\n    case setTag:\n      var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n      convert || (convert = setToArray);\n\n      if (object.size != other.size && !isPartial) {\n        return false;\n      }\n      // Assume cyclic values are equal.\n      var stacked = stack.get(object);\n      if (stacked) {\n        return stacked == other;\n      }\n      bitmask |= COMPARE_UNORDERED_FLAG;\n\n      // Recursively compare objects (susceptible to call stack limits).\n      stack.set(object, other);\n      var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n      stack['delete'](object);\n      return result;\n\n    case symbolTag:\n      if (symbolValueOf) {\n        return symbolValueOf.call(object) == symbolValueOf.call(other);\n      }\n  }\n  return false;\n}\n\nmodule.exports = equalByTag;\n", "/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n  var index = -1,\n      length = values.length,\n      offset = array.length;\n\n  while (++index < length) {\n    array[offset + index] = values[index];\n  }\n  return array;\n}\n\nmodule.exports = arrayPush;\n", "var arrayPush = require('./_arrayPush'),\n    isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n  var result = keysFunc(object);\n  return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n", "/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n  var index = -1,\n      length = array == null ? 0 : array.length,\n      resIndex = 0,\n      result = [];\n\n  while (++index < length) {\n    var value = array[index];\n    if (predicate(value, index, array)) {\n      result[resIndex++] = value;\n    }\n  }\n  return result;\n}\n\nmodule.exports = arrayFilter;\n", "/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n  return [];\n}\n\nmodule.exports = stubArray;\n", "var arrayFilter = require('./_arrayFilter'),\n    stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n  if (object == null) {\n    return [];\n  }\n  object = Object(object);\n  return arrayFilter(nativeGetSymbols(object), function(symbol) {\n    return propertyIsEnumerable.call(object, symbol);\n  });\n};\n\nmodule.exports = getSymbols;\n", "var baseGetAllKeys = require('./_baseGetAllKeys'),\n    getSymbols = require('./_getSymbols'),\n    keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n  return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n", "var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n      objProps = getAllKeys(object),\n      objLength = objProps.length,\n      othProps = getAllKeys(other),\n      othLength = othProps.length;\n\n  if (objLength != othLength && !isPartial) {\n    return false;\n  }\n  var index = objLength;\n  while (index--) {\n    var key = objProps[index];\n    if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n      return false;\n    }\n  }\n  // Check that cyclic values are equal.\n  var objStacked = stack.get(object);\n  var othStacked = stack.get(other);\n  if (objStacked && othStacked) {\n    return objStacked == other && othStacked == object;\n  }\n  var result = true;\n  stack.set(object, other);\n  stack.set(other, object);\n\n  var skipCtor = isPartial;\n  while (++index < objLength) {\n    key = objProps[index];\n    var objValue = object[key],\n        othValue = other[key];\n\n    if (customizer) {\n      var compared = isPartial\n        ? customizer(othValue, objValue, key, other, object, stack)\n        : customizer(objValue, othValue, key, object, other, stack);\n    }\n    // Recursively compare objects (susceptible to call stack limits).\n    if (!(compared === undefined\n          ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n          : compared\n        )) {\n      result = false;\n      break;\n    }\n    skipCtor || (skipCtor = key == 'constructor');\n  }\n  if (result && !skipCtor) {\n    var objCtor = object.constructor,\n        othCtor = other.constructor;\n\n    // Non `Object` object instances with different constructors are not equal.\n    if (objCtor != othCtor &&\n        ('constructor' in object && 'constructor' in other) &&\n        !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n          typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n      result = false;\n    }\n  }\n  stack['delete'](object);\n  stack['delete'](other);\n  return result;\n}\n\nmodule.exports = equalObjects;\n", "var getNative = require('./_getNative'),\n    root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n", "var getNative = require('./_getNative'),\n    root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n", "var getNative = require('./_getNative'),\n    root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n", "var getNative = require('./_getNative'),\n    root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n", "var DataView = require('./_DataView'),\n    Map = require('./_Map'),\n    Promise = require('./_Promise'),\n    Set = require('./_Set'),\n    WeakMap = require('./_WeakMap'),\n    baseGetTag = require('./_baseGetTag'),\n    toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n    objectTag = '[object Object]',\n    promiseTag = '[object Promise]',\n    setTag = '[object Set]',\n    weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n    mapCtorString = toSource(Map),\n    promiseCtorString = toSource(Promise),\n    setCtorString = toSource(Set),\n    weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n    (Map && getTag(new Map) != mapTag) ||\n    (Promise && getTag(Promise.resolve()) != promiseTag) ||\n    (Set && getTag(new Set) != setTag) ||\n    (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n  getTag = function(value) {\n    var result = baseGetTag(value),\n        Ctor = result == objectTag ? value.constructor : undefined,\n        ctorString = Ctor ? toSource(Ctor) : '';\n\n    if (ctorString) {\n      switch (ctorString) {\n        case dataViewCtorString: return dataViewTag;\n        case mapCtorString: return mapTag;\n        case promiseCtorString: return promiseTag;\n        case setCtorString: return setTag;\n        case weakMapCtorString: return weakMapTag;\n      }\n    }\n    return result;\n  };\n}\n\nmodule.exports = getTag;\n", "var Stack = require('./_Stack'),\n    equalArrays = require('./_equalArrays'),\n    equalByTag = require('./_equalByTag'),\n    equalObjects = require('./_equalObjects'),\n    getTag = require('./_getTag'),\n    isArray = require('./isArray'),\n    isBuffer = require('./isBuffer'),\n    isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n  var objIsArr = isArray(object),\n      othIsArr = isArray(other),\n      objTag = objIsArr ? arrayTag : getTag(object),\n      othTag = othIsArr ? arrayTag : getTag(other);\n\n  objTag = objTag == argsTag ? objectTag : objTag;\n  othTag = othTag == argsTag ? objectTag : othTag;\n\n  var objIsObj = objTag == objectTag,\n      othIsObj = othTag == objectTag,\n      isSameTag = objTag == othTag;\n\n  if (isSameTag && isBuffer(object)) {\n    if (!isBuffer(other)) {\n      return false;\n    }\n    objIsArr = true;\n    objIsObj = false;\n  }\n  if (isSameTag && !objIsObj) {\n    stack || (stack = new Stack);\n    return (objIsArr || isTypedArray(object))\n      ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n      : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n  }\n  if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n    var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n        othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n    if (objIsWrapped || othIsWrapped) {\n      var objUnwrapped = objIsWrapped ? object.value() : object,\n          othUnwrapped = othIsWrapped ? other.value() : other;\n\n      stack || (stack = new Stack);\n      return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n    }\n  }\n  if (!isSameTag) {\n    return false;\n  }\n  stack || (stack = new Stack);\n  return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n", "var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n    isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n *  1 - Unordered comparison\n *  2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n  if (value === other) {\n    return true;\n  }\n  if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n    return value !== value && other !== other;\n  }\n  return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n", "var Stack = require('./_Stack'),\n    baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n  var index = matchData.length,\n      length = index,\n      noCustomizer = !customizer;\n\n  if (object == null) {\n    return !length;\n  }\n  object = Object(object);\n  while (index--) {\n    var data = matchData[index];\n    if ((noCustomizer && data[2])\n          ? data[1] !== object[data[0]]\n          : !(data[0] in object)\n        ) {\n      return false;\n    }\n  }\n  while (++index < length) {\n    data = matchData[index];\n    var key = data[0],\n        objValue = object[key],\n        srcValue = data[1];\n\n    if (noCustomizer && data[2]) {\n      if (objValue === undefined && !(key in object)) {\n        return false;\n      }\n    } else {\n      var stack = new Stack;\n      if (customizer) {\n        var result = customizer(objValue, srcValue, key, object, source, stack);\n      }\n      if (!(result === undefined\n            ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n            : result\n          )) {\n        return false;\n      }\n    }\n  }\n  return true;\n}\n\nmodule.exports = baseIsMatch;\n", "var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n *  equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n  return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n", "var isStrictComparable = require('./_isStrictComparable'),\n    keys = require('./keys');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n  var result = keys(object),\n      length = result.length;\n\n  while (length--) {\n    var key = result[length],\n        value = object[key];\n\n    result[length] = [key, value, isStrictComparable(value)];\n  }\n  return result;\n}\n\nmodule.exports = getMatchData;\n", "/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n  return function(object) {\n    if (object == null) {\n      return false;\n    }\n    return object[key] === srcValue &&\n      (srcValue !== undefined || (key in Object(object)));\n  };\n}\n\nmodule.exports = matchesStrictComparable;\n", "var baseIsMatch = require('./_baseIsMatch'),\n    getMatchData = require('./_getMatchData'),\n    matchesStrictComparable = require('./_matchesStrictComparable');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n  var matchData = getMatchData(source);\n  if (matchData.length == 1 && matchData[0][2]) {\n    return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n  }\n  return function(object) {\n    return object === source || baseIsMatch(object, source, matchData);\n  };\n}\n\nmodule.exports = baseMatches;\n", "var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n  var result = object == null ? undefined : baseGet(object, path);\n  return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n", "/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n  return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n", "var castPath = require('./_castPath'),\n    isArguments = require('./isArguments'),\n    isArray = require('./isArray'),\n    isIndex = require('./_isIndex'),\n    isLength = require('./isLength'),\n    toKey = require('./_toKey');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n  path = castPath(path, object);\n\n  var index = -1,\n      length = path.length,\n      result = false;\n\n  while (++index < length) {\n    var key = toKey(path[index]);\n    if (!(result = object != null && hasFunc(object, key))) {\n      break;\n    }\n    object = object[key];\n  }\n  if (result || ++index != length) {\n    return result;\n  }\n  length = object == null ? 0 : object.length;\n  return !!length && isLength(length) && isIndex(key, length) &&\n    (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\n", "var baseHasIn = require('./_baseHasIn'),\n    hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n  return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n", "var baseIsEqual = require('./_baseIsEqual'),\n    get = require('./get'),\n    hasIn = require('./hasIn'),\n    isKey = require('./_isKey'),\n    isStrictComparable = require('./_isStrictComparable'),\n    matchesStrictComparable = require('./_matchesStrictComparable'),\n    toKey = require('./_toKey');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n  if (isKey(path) && isStrictComparable(srcValue)) {\n    return matchesStrictComparable(toKey(path), srcValue);\n  }\n  return function(object) {\n    var objValue = get(object, path);\n    return (objValue === undefined && objValue === srcValue)\n      ? hasIn(object, path)\n      : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n  };\n}\n\nmodule.exports = baseMatchesProperty;\n", "/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n  return function(object) {\n    return object == null ? undefined : object[key];\n  };\n}\n\nmodule.exports = baseProperty;\n", "var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n  return function(object) {\n    return baseGet(object, path);\n  };\n}\n\nmodule.exports = basePropertyDeep;\n", "var baseProperty = require('./_baseProperty'),\n    basePropertyDeep = require('./_basePropertyDeep'),\n    isKey = require('./_isKey'),\n    toKey = require('./_toKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n *   { 'a': { 'b': 2 } },\n *   { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n  return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n", "var baseMatches = require('./_baseMatches'),\n    baseMatchesProperty = require('./_baseMatchesProperty'),\n    identity = require('./identity'),\n    isArray = require('./isArray'),\n    property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n  // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n  // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n  if (typeof value == 'function') {\n    return value;\n  }\n  if (value == null) {\n    return identity;\n  }\n  if (typeof value == 'object') {\n    return isArray(value)\n      ? baseMatchesProperty(value[0], value[1])\n      : baseMatches(value);\n  }\n  return property(value);\n}\n\nmodule.exports = baseIteratee;\n", "/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n  return function(object, iteratee, keysFunc) {\n    var index = -1,\n        iterable = Object(object),\n        props = keysFunc(object),\n        length = props.length;\n\n    while (length--) {\n      var key = props[fromRight ? length : ++index];\n      if (iteratee(iterable[key], key, iterable) === false) {\n        break;\n      }\n    }\n    return object;\n  };\n}\n\nmodule.exports = createBaseFor;\n", "var createBaseFor = require('./_createBaseFor');\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n", "var baseFor = require('./_baseFor'),\n    keys = require('./keys');\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n  return object && baseFor(object, iteratee, keys);\n}\n\nmodule.exports = baseForOwn;\n", "var isArrayLike = require('./isArrayLike');\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n  return function(collection, iteratee) {\n    if (collection == null) {\n      return collection;\n    }\n    if (!isArrayLike(collection)) {\n      return eachFunc(collection, iteratee);\n    }\n    var length = collection.length,\n        index = fromRight ? length : -1,\n        iterable = Object(collection);\n\n    while ((fromRight ? index-- : ++index < length)) {\n      if (iteratee(iterable[index], index, iterable) === false) {\n        break;\n      }\n    }\n    return collection;\n  };\n}\n\nmodule.exports = createBaseEach;\n", "var baseForOwn = require('./_baseForOwn'),\n    createBaseEach = require('./_createBaseEach');\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nmodule.exports = baseEach;\n", "var baseEach = require('./_baseEach'),\n    isArrayLike = require('./isArrayLike');\n\n/**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction baseMap(collection, iteratee) {\n  var index = -1,\n      result = isArrayLike(collection) ? Array(collection.length) : [];\n\n  baseEach(collection, function(value, key, collection) {\n    result[++index] = iteratee(value, key, collection);\n  });\n  return result;\n}\n\nmodule.exports = baseMap;\n", "/**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\nfunction baseSortBy(array, comparer) {\n  var length = array.length;\n\n  array.sort(comparer);\n  while (length--) {\n    array[length] = array[length].value;\n  }\n  return array;\n}\n\nmodule.exports = baseSortBy;\n", "var isSymbol = require('./isSymbol');\n\n/**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\nfunction compareAscending(value, other) {\n  if (value !== other) {\n    var valIsDefined = value !== undefined,\n        valIsNull = value === null,\n        valIsReflexive = value === value,\n        valIsSymbol = isSymbol(value);\n\n    var othIsDefined = other !== undefined,\n        othIsNull = other === null,\n        othIsReflexive = other === other,\n        othIsSymbol = isSymbol(other);\n\n    if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n        (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n        (valIsNull && othIsDefined && othIsReflexive) ||\n        (!valIsDefined && othIsReflexive) ||\n        !valIsReflexive) {\n      return 1;\n    }\n    if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n        (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n        (othIsNull && valIsDefined && valIsReflexive) ||\n        (!othIsDefined && valIsReflexive) ||\n        !othIsReflexive) {\n      return -1;\n    }\n  }\n  return 0;\n}\n\nmodule.exports = compareAscending;\n", "var compareAscending = require('./_compareAscending');\n\n/**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\nfunction compareMultiple(object, other, orders) {\n  var index = -1,\n      objCriteria = object.criteria,\n      othCriteria = other.criteria,\n      length = objCriteria.length,\n      ordersLength = orders.length;\n\n  while (++index < length) {\n    var result = compareAscending(objCriteria[index], othCriteria[index]);\n    if (result) {\n      if (index >= ordersLength) {\n        return result;\n      }\n      var order = orders[index];\n      return result * (order == 'desc' ? -1 : 1);\n    }\n  }\n  // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n  // that causes it, under certain circumstances, to provide the same value for\n  // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n  // for more details.\n  //\n  // This also ensures a stable sort in V8 and other engines.\n  // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n  return object.index - other.index;\n}\n\nmodule.exports = compareMultiple;\n", "var arrayMap = require('./_arrayMap'),\n    baseGet = require('./_baseGet'),\n    baseIteratee = require('./_baseIteratee'),\n    baseMap = require('./_baseMap'),\n    baseSortBy = require('./_baseSortBy'),\n    baseUnary = require('./_baseUnary'),\n    compareMultiple = require('./_compareMultiple'),\n    identity = require('./identity'),\n    isArray = require('./isArray');\n\n/**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\nfunction baseOrderBy(collection, iteratees, orders) {\n  if (iteratees.length) {\n    iteratees = arrayMap(iteratees, function(iteratee) {\n      if (isArray(iteratee)) {\n        return function(value) {\n          return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n        }\n      }\n      return iteratee;\n    });\n  } else {\n    iteratees = [identity];\n  }\n\n  var index = -1;\n  iteratees = arrayMap(iteratees, baseUnary(baseIteratee));\n\n  var result = baseMap(collection, function(value, key, collection) {\n    var criteria = arrayMap(iteratees, function(iteratee) {\n      return iteratee(value);\n    });\n    return { 'criteria': criteria, 'index': ++index, 'value': value };\n  });\n\n  return baseSortBy(result, function(object, other) {\n    return compareMultiple(object, other, orders);\n  });\n}\n\nmodule.exports = baseOrderBy;\n", "var baseOrderBy = require('./_baseOrderBy'),\n    isArray = require('./isArray');\n\n/**\n * This method is like `_.sortBy` except that it allows specifying the sort\n * orders of the iteratees to sort by. If `orders` is unspecified, all values\n * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n * descending or \"asc\" for ascending sort order of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n *  The iteratees to sort by.\n * @param {string[]} [orders] The sort orders of `iteratees`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n *   { 'user': 'fred',   'age': 48 },\n *   { 'user': 'barney', 'age': 34 },\n *   { 'user': 'fred',   'age': 40 },\n *   { 'user': 'barney', 'age': 36 }\n * ];\n *\n * // Sort by `user` in ascending order and by `age` in descending order.\n * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n */\nfunction orderBy(collection, iteratees, orders, guard) {\n  if (collection == null) {\n    return [];\n  }\n  if (!isArray(iteratees)) {\n    iteratees = iteratees == null ? [] : [iteratees];\n  }\n  orders = guard ? undefined : orders;\n  if (!isArray(orders)) {\n    orders = orders == null ? [] : [orders];\n  }\n  return baseOrderBy(collection, iteratees, orders);\n}\n\nmodule.exports = orderBy;\n", "var overArg = require('./_overArg');\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\n", "var baseGetTag = require('./_baseGetTag'),\n    getPrototype = require('./_getPrototype'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n  if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n    return false;\n  }\n  var proto = getPrototype(value);\n  if (proto === null) {\n    return true;\n  }\n  var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n  return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n    funcToString.call(Ctor) == objectCtorString;\n}\n\nmodule.exports = isPlainObject;\n", "var toString = require('./toString');\n\n/** Used to generate unique IDs. */\nvar idCounter = 0;\n\n/**\n * Generates a unique ID. If `prefix` is given, the ID is appended to it.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {string} [prefix=''] The value to prefix the ID with.\n * @returns {string} Returns the unique ID.\n * @example\n *\n * _.uniqueId('contact_');\n * // => 'contact_104'\n *\n * _.uniqueId();\n * // => '105'\n */\nfunction uniqueId(prefix) {\n  var id = ++idCounter;\n  return toString(prefix) + id;\n}\n\nmodule.exports = uniqueId;\n", "/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n  var result = [];\n  if (object != null) {\n    for (var key in Object(object)) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nmodule.exports = nativeKeysIn;\n", "var isObject = require('./isObject'),\n    isPrototype = require('./_isPrototype'),\n    nativeKeysIn = require('./_nativeKeysIn');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n  if (!isObject(object)) {\n    return nativeKeysIn(object);\n  }\n  var isProto = isPrototype(object),\n      result = [];\n\n  for (var key in object) {\n    if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nmodule.exports = baseKeysIn;\n", "var arrayLikeKeys = require('./_arrayLikeKeys'),\n    baseKeysIn = require('./_baseKeysIn'),\n    isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nmodule.exports = keysIn;\n", "var baseRest = require('./_baseRest'),\n    eq = require('./eq'),\n    isIterateeCall = require('./_isIterateeCall'),\n    keysIn = require('./keysIn');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\nvar defaults = baseRest(function(object, sources) {\n  object = Object(object);\n\n  var index = -1;\n  var length = sources.length;\n  var guard = length > 2 ? sources[2] : undefined;\n\n  if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n    length = 1;\n  }\n\n  while (++index < length) {\n    var source = sources[index];\n    var props = keysIn(source);\n    var propsIndex = -1;\n    var propsLength = props.length;\n\n    while (++propsIndex < propsLength) {\n      var key = props[propsIndex];\n      var value = object[key];\n\n      if (value === undefined ||\n          (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n        object[key] = source[key];\n      }\n    }\n  }\n\n  return object;\n});\n\nmodule.exports = defaults;\n", "var baseGetTag = require('./_baseGetTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar regexpTag = '[object RegExp]';\n\n/**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\nfunction baseIsRegExp(value) {\n  return isObjectLike(value) && baseGetTag(value) == regexpTag;\n}\n\nmodule.exports = baseIsRegExp;\n", "var baseIsRegExp = require('./_baseIsRegExp'),\n    baseUnary = require('./_baseUnary'),\n    nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsRegExp = nodeUtil && nodeUtil.isRegExp;\n\n/**\n * Checks if `value` is classified as a `RegExp` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\nvar isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\nmodule.exports = isRegExp;\n", "var baseIteratee = require('./_baseIteratee'),\n    isArrayLike = require('./isArrayLike'),\n    keys = require('./keys');\n\n/**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\nfunction createFind(findIndexFunc) {\n  return function(collection, predicate, fromIndex) {\n    var iterable = Object(collection);\n    if (!isArrayLike(collection)) {\n      var iteratee = baseIteratee(predicate, 3);\n      collection = keys(collection);\n      predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n    }\n    var index = findIndexFunc(collection, predicate, fromIndex);\n    return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n  };\n}\n\nmodule.exports = createFind;\n", "/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n  var length = array.length,\n      index = fromIndex + (fromRight ? 1 : -1);\n\n  while ((fromRight ? index-- : ++index < length)) {\n    if (predicate(array[index], index, array)) {\n      return index;\n    }\n  }\n  return -1;\n}\n\nmodule.exports = baseFindIndex;\n", "/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n  var index = string.length;\n\n  while (index-- && reWhitespace.test(string.charAt(index))) {}\n  return index;\n}\n\nmodule.exports = trimmedEndIndex;\n", "var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n  return string\n    ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n    : string;\n}\n\nmodule.exports = baseTrim;\n", "var baseTrim = require('./_baseTrim'),\n    isObject = require('./isObject'),\n    isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n  if (typeof value == 'number') {\n    return value;\n  }\n  if (isSymbol(value)) {\n    return NAN;\n  }\n  if (isObject(value)) {\n    var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n    value = isObject(other) ? (other + '') : other;\n  }\n  if (typeof value != 'string') {\n    return value === 0 ? value : +value;\n  }\n  value = baseTrim(value);\n  var isBinary = reIsBinary.test(value);\n  return (isBinary || reIsOctal.test(value))\n    ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n    : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n", "var toNumber = require('./toNumber');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n    MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n  if (!value) {\n    return value === 0 ? value : 0;\n  }\n  value = toNumber(value);\n  if (value === INFINITY || value === -INFINITY) {\n    var sign = (value < 0 ? -1 : 1);\n    return sign * MAX_INTEGER;\n  }\n  return value === value ? value : 0;\n}\n\nmodule.exports = toFinite;\n", "var toFinite = require('./toFinite');\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n  var result = toFinite(value),\n      remainder = result % 1;\n\n  return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\nmodule.exports = toInteger;\n", "var baseFindIndex = require('./_baseFindIndex'),\n    baseIteratee = require('./_baseIteratee'),\n    toInteger = require('./toInteger');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n *   { 'user': 'barney',  'active': false },\n *   { 'user': 'fred',    'active': false },\n *   { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\nfunction findIndex(array, predicate, fromIndex) {\n  var length = array == null ? 0 : array.length;\n  if (!length) {\n    return -1;\n  }\n  var index = fromIndex == null ? 0 : toInteger(fromIndex);\n  if (index < 0) {\n    index = nativeMax(length + index, 0);\n  }\n  return baseFindIndex(array, baseIteratee(predicate, 3), index);\n}\n\nmodule.exports = findIndex;\n", "var createFind = require('./_createFind'),\n    findIndex = require('./findIndex');\n\n/**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n *   { 'user': 'barney',  'age': 36, 'active': true },\n *   { 'user': 'fred',    'age': 40, 'active': false },\n *   { 'user': 'pebbles', 'age': 1,  'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\nvar find = createFind(findIndex);\n\nmodule.exports = find;\n", "/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n  return value !== value;\n}\n\nmodule.exports = baseIsNaN;\n", "/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n  var index = fromIndex - 1,\n      length = array.length;\n\n  while (++index < length) {\n    if (array[index] === value) {\n      return index;\n    }\n  }\n  return -1;\n}\n\nmodule.exports = strictIndexOf;\n", "var baseFindIndex = require('./_baseFindIndex'),\n    baseIsNaN = require('./_baseIsNaN'),\n    strictIndexOf = require('./_strictIndexOf');\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n  return value === value\n    ? strictIndexOf(array, value, fromIndex)\n    : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nmodule.exports = baseIndexOf;\n", "var baseGetTag = require('./_baseGetTag'),\n    isArray = require('./isArray'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n  return typeof value == 'string' ||\n    (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n}\n\nmodule.exports = isString;\n", "var arrayMap = require('./_arrayMap');\n\n/**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\nfunction baseValues(object, props) {\n  return arrayMap(props, function(key) {\n    return object[key];\n  });\n}\n\nmodule.exports = baseValues;\n", "var baseValues = require('./_baseValues'),\n    keys = require('./keys');\n\n/**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\nfunction values(object) {\n  return object == null ? [] : baseValues(object, keys(object));\n}\n\nmodule.exports = values;\n", "var baseIndexOf = require('./_baseIndexOf'),\n    isArrayLike = require('./isArrayLike'),\n    isString = require('./isString'),\n    toInteger = require('./toInteger'),\n    values = require('./values');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\nfunction includes(collection, value, fromIndex, guard) {\n  collection = isArrayLike(collection) ? collection : values(collection);\n  fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n  var length = collection.length;\n  if (fromIndex < 0) {\n    fromIndex = nativeMax(length + fromIndex, 0);\n  }\n  return isString(collection)\n    ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n    : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n}\n\nmodule.exports = includes;\n", "var assignValue = require('./_assignValue'),\n    castPath = require('./_castPath'),\n    isIndex = require('./_isIndex'),\n    isObject = require('./isObject'),\n    toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\nfunction baseSet(object, path, value, customizer) {\n  if (!isObject(object)) {\n    return object;\n  }\n  path = castPath(path, object);\n\n  var index = -1,\n      length = path.length,\n      lastIndex = length - 1,\n      nested = object;\n\n  while (nested != null && ++index < length) {\n    var key = toKey(path[index]),\n        newValue = value;\n\n    if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n      return object;\n    }\n\n    if (index != lastIndex) {\n      var objValue = nested[key];\n      newValue = customizer ? customizer(objValue, key, nested) : undefined;\n      if (newValue === undefined) {\n        newValue = isObject(objValue)\n          ? objValue\n          : (isIndex(path[index + 1]) ? [] : {});\n      }\n    }\n    assignValue(nested, key, newValue);\n    nested = nested[key];\n  }\n  return object;\n}\n\nmodule.exports = baseSet;\n", "var baseGet = require('./_baseGet'),\n    baseSet = require('./_baseSet'),\n    castPath = require('./_castPath');\n\n/**\n * The base implementation of  `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\nfunction basePickBy(object, paths, predicate) {\n  var index = -1,\n      length = paths.length,\n      result = {};\n\n  while (++index < length) {\n    var path = paths[index],\n        value = baseGet(object, path);\n\n    if (predicate(value, path)) {\n      baseSet(result, castPath(path, object), value);\n    }\n  }\n  return result;\n}\n\nmodule.exports = basePickBy;\n", "var basePickBy = require('./_basePickBy'),\n    hasIn = require('./hasIn');\n\n/**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\nfunction basePick(object, paths) {\n  return basePickBy(object, paths, function(value, path) {\n    return hasIn(object, path);\n  });\n}\n\nmodule.exports = basePick;\n", "var Symbol = require('./_Symbol'),\n    isArguments = require('./isArguments'),\n    isArray = require('./isArray');\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n  return isArray(value) || isArguments(value) ||\n    !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nmodule.exports = isFlattenable;\n", "var arrayPush = require('./_arrayPush'),\n    isFlattenable = require('./_isFlattenable');\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n  var index = -1,\n      length = array.length;\n\n  predicate || (predicate = isFlattenable);\n  result || (result = []);\n\n  while (++index < length) {\n    var value = array[index];\n    if (depth > 0 && predicate(value)) {\n      if (depth > 1) {\n        // Recursively flatten arrays (susceptible to call stack limits).\n        baseFlatten(value, depth - 1, predicate, isStrict, result);\n      } else {\n        arrayPush(result, value);\n      }\n    } else if (!isStrict) {\n      result[result.length] = value;\n    }\n  }\n  return result;\n}\n\nmodule.exports = baseFlatten;\n", "var baseFlatten = require('./_baseFlatten');\n\n/**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\nfunction flatten(array) {\n  var length = array == null ? 0 : array.length;\n  return length ? baseFlatten(array, 1) : [];\n}\n\nmodule.exports = flatten;\n", "var flatten = require('./flatten'),\n    overRest = require('./_overRest'),\n    setToString = require('./_setToString');\n\n/**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\nfunction flatRest(func) {\n  return setToString(overRest(func, undefined, flatten), func + '');\n}\n\nmodule.exports = flatRest;\n", "var basePick = require('./_basePick'),\n    flatRest = require('./_flatRest');\n\n/**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\nvar pick = flatRest(function(object, paths) {\n  return object == null ? {} : basePick(object, paths);\n});\n\nmodule.exports = pick;\n", "var baseKeys = require('./_baseKeys'),\n    getTag = require('./_getTag'),\n    isArguments = require('./isArguments'),\n    isArray = require('./isArray'),\n    isArrayLike = require('./isArrayLike'),\n    isBuffer = require('./isBuffer'),\n    isPrototype = require('./_isPrototype'),\n    isTypedArray = require('./isTypedArray');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n    setTag = '[object Set]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\nfunction isEmpty(value) {\n  if (value == null) {\n    return true;\n  }\n  if (isArrayLike(value) &&\n      (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n        isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n    return !value.length;\n  }\n  var tag = getTag(value);\n  if (tag == mapTag || tag == setTag) {\n    return !value.size;\n  }\n  if (isPrototype(value)) {\n    return !baseKeys(value).length;\n  }\n  for (var key in value) {\n    if (hasOwnProperty.call(value, key)) {\n      return false;\n    }\n  }\n  return true;\n}\n\nmodule.exports = isEmpty;\n", "/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeCeil = Math.ceil,\n    nativeMax = Math.max;\n\n/**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\nfunction baseRange(start, end, step, fromRight) {\n  var index = -1,\n      length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n      result = Array(length);\n\n  while (length--) {\n    result[fromRight ? length : ++index] = start;\n    start += step;\n  }\n  return result;\n}\n\nmodule.exports = baseRange;\n", "var baseRange = require('./_baseRange'),\n    isIterateeCall = require('./_isIterateeCall'),\n    toFinite = require('./toFinite');\n\n/**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\nfunction createRange(fromRight) {\n  return function(start, end, step) {\n    if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n      end = step = undefined;\n    }\n    // Ensure the sign of `-0` is preserved.\n    start = toFinite(start);\n    if (end === undefined) {\n      end = start;\n      start = 0;\n    } else {\n      end = toFinite(end);\n    }\n    step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n    return baseRange(start, end, step, fromRight);\n  };\n}\n\nmodule.exports = createRange;\n", "var createRange = require('./_createRange');\n\n/**\n * Creates an array of numbers (positive and/or negative) progressing from\n * `start` up to, but not including, `end`. A step of `-1` is used if a negative\n * `start` is specified without an `end` or `step`. If `end` is not specified,\n * it's set to `start` with `start` then set to `0`.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.rangeRight\n * @example\n *\n * _.range(4);\n * // => [0, 1, 2, 3]\n *\n * _.range(-4);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 5);\n * // => [1, 2, 3, 4]\n *\n * _.range(0, 20, 5);\n * // => [0, 5, 10, 15]\n *\n * _.range(0, -4, -1);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.range(0);\n * // => []\n */\nvar range = createRange();\n\nmodule.exports = range;\n", "var baseIndexOf = require('./_baseIndexOf');\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n  var length = array == null ? 0 : array.length;\n  return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nmodule.exports = arrayIncludes;\n", "/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  while (++index < length) {\n    if (comparator(value, array[index])) {\n      return true;\n    }\n  }\n  return false;\n}\n\nmodule.exports = arrayIncludesWith;\n", "var SetCache = require('./_SetCache'),\n    arrayIncludes = require('./_arrayIncludes'),\n    arrayIncludesWith = require('./_arrayIncludesWith'),\n    arrayMap = require('./_arrayMap'),\n    baseUnary = require('./_baseUnary'),\n    cacheHas = require('./_cacheHas');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\nfunction baseDifference(array, values, iteratee, comparator) {\n  var index = -1,\n      includes = arrayIncludes,\n      isCommon = true,\n      length = array.length,\n      result = [],\n      valuesLength = values.length;\n\n  if (!length) {\n    return result;\n  }\n  if (iteratee) {\n    values = arrayMap(values, baseUnary(iteratee));\n  }\n  if (comparator) {\n    includes = arrayIncludesWith;\n    isCommon = false;\n  }\n  else if (values.length >= LARGE_ARRAY_SIZE) {\n    includes = cacheHas;\n    isCommon = false;\n    values = new SetCache(values);\n  }\n  outer:\n  while (++index < length) {\n    var value = array[index],\n        computed = iteratee == null ? value : iteratee(value);\n\n    value = (comparator || value !== 0) ? value : 0;\n    if (isCommon && computed === computed) {\n      var valuesIndex = valuesLength;\n      while (valuesIndex--) {\n        if (values[valuesIndex] === computed) {\n          continue outer;\n        }\n      }\n      result.push(value);\n    }\n    else if (!includes(values, computed, comparator)) {\n      result.push(value);\n    }\n  }\n  return result;\n}\n\nmodule.exports = baseDifference;\n", "var isArrayLike = require('./isArrayLike'),\n    isObjectLike = require('./isObjectLike');\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n *  else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n  return isObjectLike(value) && isArrayLike(value);\n}\n\nmodule.exports = isArrayLikeObject;\n", "var baseDifference = require('./_baseDifference'),\n    baseRest = require('./_baseRest'),\n    isArrayLikeObject = require('./isArrayLikeObject');\n\n/**\n * Creates an array excluding all given values using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.pull`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...*} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.xor\n * @example\n *\n * _.without([2, 1, 2, 3], 1, 2);\n * // => [3]\n */\nvar without = baseRest(function(array, values) {\n  return isArrayLikeObject(array)\n    ? baseDifference(array, values)\n    : [];\n});\n\nmodule.exports = without;\n", "var baseDifference = require('./_baseDifference'),\n    baseFlatten = require('./_baseFlatten'),\n    baseRest = require('./_baseRest'),\n    isArrayLikeObject = require('./isArrayLikeObject');\n\n/**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\nvar difference = baseRest(function(array, values) {\n  return isArrayLikeObject(array)\n    ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n    : [];\n});\n\nmodule.exports = difference;\n", "/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n  // No operation performed.\n}\n\nmodule.exports = noop;\n", "var Set = require('./_Set'),\n    noop = require('./noop'),\n    setToArray = require('./_setToArray');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n  return new Set(values);\n};\n\nmodule.exports = createSet;\n", "var SetCache = require('./_SetCache'),\n    arrayIncludes = require('./_arrayIncludes'),\n    arrayIncludesWith = require('./_arrayIncludesWith'),\n    cacheHas = require('./_cacheHas'),\n    createSet = require('./_createSet'),\n    setToArray = require('./_setToArray');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n  var index = -1,\n      includes = arrayIncludes,\n      length = array.length,\n      isCommon = true,\n      result = [],\n      seen = result;\n\n  if (comparator) {\n    isCommon = false;\n    includes = arrayIncludesWith;\n  }\n  else if (length >= LARGE_ARRAY_SIZE) {\n    var set = iteratee ? null : createSet(array);\n    if (set) {\n      return setToArray(set);\n    }\n    isCommon = false;\n    includes = cacheHas;\n    seen = new SetCache;\n  }\n  else {\n    seen = iteratee ? [] : result;\n  }\n  outer:\n  while (++index < length) {\n    var value = array[index],\n        computed = iteratee ? iteratee(value) : value;\n\n    value = (comparator || value !== 0) ? value : 0;\n    if (isCommon && computed === computed) {\n      var seenIndex = seen.length;\n      while (seenIndex--) {\n        if (seen[seenIndex] === computed) {\n          continue outer;\n        }\n      }\n      if (iteratee) {\n        seen.push(computed);\n      }\n      result.push(value);\n    }\n    else if (!includes(seen, computed, comparator)) {\n      if (seen !== result) {\n        seen.push(computed);\n      }\n      result.push(value);\n    }\n  }\n  return result;\n}\n\nmodule.exports = baseUniq;\n", "var baseUniq = require('./_baseUniq');\n\n/**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\nfunction uniq(array) {\n  return (array && array.length) ? baseUniq(array) : [];\n}\n\nmodule.exports = uniq;\n", "/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n *   return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\nfunction negate(predicate) {\n  if (typeof predicate != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  return function() {\n    var args = arguments;\n    switch (args.length) {\n      case 0: return !predicate.call(this);\n      case 1: return !predicate.call(this, args[0]);\n      case 2: return !predicate.call(this, args[0], args[1]);\n      case 3: return !predicate.call(this, args[0], args[1], args[2]);\n    }\n    return !predicate.apply(this, args);\n  };\n}\n\nmodule.exports = negate;\n", "var arrayPush = require('./_arrayPush'),\n    getPrototype = require('./_getPrototype'),\n    getSymbols = require('./_getSymbols'),\n    stubArray = require('./stubArray');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n  var result = [];\n  while (object) {\n    arrayPush(result, getSymbols(object));\n    object = getPrototype(object);\n  }\n  return result;\n};\n\nmodule.exports = getSymbolsIn;\n", "var baseGetAllKeys = require('./_baseGetAllKeys'),\n    getSymbolsIn = require('./_getSymbolsIn'),\n    keysIn = require('./keysIn');\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n  return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nmodule.exports = getAllKeysIn;\n", "var arrayMap = require('./_arrayMap'),\n    baseIteratee = require('./_baseIteratee'),\n    basePickBy = require('./_basePickBy'),\n    getAllKeysIn = require('./_getAllKeysIn');\n\n/**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\nfunction pickBy(object, predicate) {\n  if (object == null) {\n    return {};\n  }\n  var props = arrayMap(getAllKeysIn(object), function(prop) {\n    return [prop];\n  });\n  predicate = baseIteratee(predicate);\n  return basePickBy(object, props, function(value, path) {\n    return predicate(value, path[0]);\n  });\n}\n\nmodule.exports = pickBy;\n", "var baseIteratee = require('./_baseIteratee'),\n    negate = require('./negate'),\n    pickBy = require('./pickBy');\n\n/**\n * The opposite of `_.pickBy`; this method creates an object composed of\n * the own and inherited enumerable string keyed properties of `object` that\n * `predicate` doesn't return truthy for. The predicate is invoked with two\n * arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omitBy(object, _.isNumber);\n * // => { 'b': '2' }\n */\nfunction omitBy(object, predicate) {\n  return pickBy(object, negate(baseIteratee(predicate)));\n}\n\nmodule.exports = omitBy;\n", "var baseForOwn = require('./_baseForOwn');\n\n/**\n * The base implementation of `_.invert` and `_.invertBy` which inverts\n * `object` with values transformed by `iteratee` and set by `setter`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform values.\n * @param {Object} accumulator The initial inverted object.\n * @returns {Function} Returns `accumulator`.\n */\nfunction baseInverter(object, setter, iteratee, accumulator) {\n  baseForOwn(object, function(value, key, object) {\n    setter(accumulator, iteratee(value), key, object);\n  });\n  return accumulator;\n}\n\nmodule.exports = baseInverter;\n", "var baseInverter = require('./_baseInverter');\n\n/**\n * Creates a function like `_.invertBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} toIteratee The function to resolve iteratees.\n * @returns {Function} Returns the new inverter function.\n */\nfunction createInverter(setter, toIteratee) {\n  return function(object, iteratee) {\n    return baseInverter(object, setter, toIteratee(iteratee), {});\n  };\n}\n\nmodule.exports = createInverter;\n", "var constant = require('./constant'),\n    createInverter = require('./_createInverter'),\n    identity = require('./identity');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Creates an object composed of the inverted keys and values of `object`.\n * If `object` contains duplicate values, subsequent values overwrite\n * property assignments of previous values.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Object\n * @param {Object} object The object to invert.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invert(object);\n * // => { '1': 'c', '2': 'b' }\n */\nvar invert = createInverter(function(result, value, key) {\n  if (value != null &&\n      typeof value.toString != 'function') {\n    value = nativeObjectToString.call(value);\n  }\n\n  result[value] = key;\n}, constant(identity));\n\nmodule.exports = invert;\n", "var baseGetTag = require('./_baseGetTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar dateTag = '[object Date]';\n\n/**\n * The base implementation of `_.isDate` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n */\nfunction baseIsDate(value) {\n  return isObjectLike(value) && baseGetTag(value) == dateTag;\n}\n\nmodule.exports = baseIsDate;\n", "var baseIsDate = require('./_baseIsDate'),\n    baseUnary = require('./_baseUnary'),\n    nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsDate = nodeUtil && nodeUtil.isDate;\n\n/**\n * Checks if `value` is classified as a `Date` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n * @example\n *\n * _.isDate(new Date);\n * // => true\n *\n * _.isDate('Mon April 23 2012');\n * // => false\n */\nvar isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;\n\nmodule.exports = isDate;\n", "var eq = require('./eq');\n\n/**\n * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseSortedUniq(array, iteratee) {\n  var index = -1,\n      length = array.length,\n      resIndex = 0,\n      result = [];\n\n  while (++index < length) {\n    var value = array[index],\n        computed = iteratee ? iteratee(value) : value;\n\n    if (!index || !eq(computed, seen)) {\n      var seen = computed;\n      result[resIndex++] = value === 0 ? 0 : value;\n    }\n  }\n  return result;\n}\n\nmodule.exports = baseSortedUniq;\n", "var baseSortedUniq = require('./_baseSortedUniq');\n\n/**\n * This method is like `_.uniq` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniq([1, 1, 2]);\n * // => [1, 2]\n */\nfunction sortedUniq(array) {\n  return (array && array.length)\n    ? baseSortedUniq(array)\n    : [];\n}\n\nmodule.exports = sortedUniq;\n", "/**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\nfunction isUndefined(value) {\n  return value === undefined;\n}\n\nmodule.exports = isUndefined;\n", "var baseIsEqual = require('./_baseIsEqual');\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n  return baseIsEqual(value, other);\n}\n\nmodule.exports = isEqual;\n", "/**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\nfunction last(array) {\n  var length = array == null ? 0 : array.length;\n  return length ? array[length - 1] : undefined;\n}\n\nmodule.exports = last;\n", "var baseEach = require('./_baseEach');\n\n/**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n *  else `false`.\n */\nfunction baseSome(collection, predicate) {\n  var result;\n\n  baseEach(collection, function(value, index, collection) {\n    result = predicate(value, index, collection);\n    return !result;\n  });\n  return !!result;\n}\n\nmodule.exports = baseSome;\n", "var arraySome = require('./_arraySome'),\n    baseIteratee = require('./_baseIteratee'),\n    baseSome = require('./_baseSome'),\n    isArray = require('./isArray'),\n    isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n *  else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n *   { 'user': 'barney', 'active': true },\n *   { 'user': 'fred',   'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\nfunction some(collection, predicate, guard) {\n  var func = isArray(collection) ? arraySome : baseSome;\n  if (guard && isIterateeCall(collection, predicate, guard)) {\n    predicate = undefined;\n  }\n  return func(collection, baseIteratee(predicate, 3));\n}\n\nmodule.exports = some;\n", "var baseIteratee = require('./_baseIteratee'),\n    baseUniq = require('./_baseUniq');\n\n/**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\nfunction uniqBy(array, iteratee) {\n  return (array && array.length) ? baseUniq(array, baseIteratee(iteratee, 2)) : [];\n}\n\nmodule.exports = uniqBy;\n", "/**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\nfunction arrayAggregator(array, setter, iteratee, accumulator) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  while (++index < length) {\n    var value = array[index];\n    setter(accumulator, value, iteratee(value), array);\n  }\n  return accumulator;\n}\n\nmodule.exports = arrayAggregator;\n", "var baseEach = require('./_baseEach');\n\n/**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\nfunction baseAggregator(collection, setter, iteratee, accumulator) {\n  baseEach(collection, function(value, key, collection) {\n    setter(accumulator, value, iteratee(value), collection);\n  });\n  return accumulator;\n}\n\nmodule.exports = baseAggregator;\n", "var arrayAggregator = require('./_arrayAggregator'),\n    baseAggregator = require('./_baseAggregator'),\n    baseIteratee = require('./_baseIteratee'),\n    isArray = require('./isArray');\n\n/**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\nfunction createAggregator(setter, initializer) {\n  return function(collection, iteratee) {\n    var func = isArray(collection) ? arrayAggregator : baseAggregator,\n        accumulator = initializer ? initializer() : {};\n\n    return func(collection, setter, baseIteratee(iteratee, 2), accumulator);\n  };\n}\n\nmodule.exports = createAggregator;\n", "var baseAssignValue = require('./_baseAssignValue'),\n    createAggregator = require('./_createAggregator');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\nvar groupBy = createAggregator(function(result, value, key) {\n  if (hasOwnProperty.call(result, key)) {\n    result[key].push(value);\n  } else {\n    baseAssignValue(result, key, [value]);\n  }\n});\n\nmodule.exports = groupBy;\n", "var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n *   console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n  return root.Date.now();\n};\n\nmodule.exports = now;\n", "var isObject = require('./isObject'),\n    now = require('./now'),\n    toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n    nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n *  Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n *  The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n *  Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n *   'leading': true,\n *   'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n  var lastArgs,\n      lastThis,\n      maxWait,\n      result,\n      timerId,\n      lastCallTime,\n      lastInvokeTime = 0,\n      leading = false,\n      maxing = false,\n      trailing = true;\n\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  wait = toNumber(wait) || 0;\n  if (isObject(options)) {\n    leading = !!options.leading;\n    maxing = 'maxWait' in options;\n    maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n    trailing = 'trailing' in options ? !!options.trailing : trailing;\n  }\n\n  function invokeFunc(time) {\n    var args = lastArgs,\n        thisArg = lastThis;\n\n    lastArgs = lastThis = undefined;\n    lastInvokeTime = time;\n    result = func.apply(thisArg, args);\n    return result;\n  }\n\n  function leadingEdge(time) {\n    // Reset any `maxWait` timer.\n    lastInvokeTime = time;\n    // Start the timer for the trailing edge.\n    timerId = setTimeout(timerExpired, wait);\n    // Invoke the leading edge.\n    return leading ? invokeFunc(time) : result;\n  }\n\n  function remainingWait(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime,\n        timeWaiting = wait - timeSinceLastCall;\n\n    return maxing\n      ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n      : timeWaiting;\n  }\n\n  function shouldInvoke(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime;\n\n    // Either this is the first call, activity has stopped and we're at the\n    // trailing edge, the system time has gone backwards and we're treating\n    // it as the trailing edge, or we've hit the `maxWait` limit.\n    return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n      (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n  }\n\n  function timerExpired() {\n    var time = now();\n    if (shouldInvoke(time)) {\n      return trailingEdge(time);\n    }\n    // Restart the timer.\n    timerId = setTimeout(timerExpired, remainingWait(time));\n  }\n\n  function trailingEdge(time) {\n    timerId = undefined;\n\n    // Only invoke if we have `lastArgs` which means `func` has been\n    // debounced at least once.\n    if (trailing && lastArgs) {\n      return invokeFunc(time);\n    }\n    lastArgs = lastThis = undefined;\n    return result;\n  }\n\n  function cancel() {\n    if (timerId !== undefined) {\n      clearTimeout(timerId);\n    }\n    lastInvokeTime = 0;\n    lastArgs = lastCallTime = lastThis = timerId = undefined;\n  }\n\n  function flush() {\n    return timerId === undefined ? result : trailingEdge(now());\n  }\n\n  function debounced() {\n    var time = now(),\n        isInvoking = shouldInvoke(time);\n\n    lastArgs = arguments;\n    lastThis = this;\n    lastCallTime = time;\n\n    if (isInvoking) {\n      if (timerId === undefined) {\n        return leadingEdge(lastCallTime);\n      }\n      if (maxing) {\n        // Handle invocations in a tight loop.\n        clearTimeout(timerId);\n        timerId = setTimeout(timerExpired, wait);\n        return invokeFunc(lastCallTime);\n      }\n    }\n    if (timerId === undefined) {\n      timerId = setTimeout(timerExpired, wait);\n    }\n    return result;\n  }\n  debounced.cancel = cancel;\n  debounced.flush = flush;\n  return debounced;\n}\n\nmodule.exports = debounce;\n", "var debounce = require('./debounce'),\n    isObject = require('./isObject');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n *  Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n *  Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n  var leading = true,\n      trailing = true;\n\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  if (isObject(options)) {\n    leading = 'leading' in options ? !!options.leading : leading;\n    trailing = 'trailing' in options ? !!options.trailing : trailing;\n  }\n  return debounce(func, wait, {\n    'leading': leading,\n    'maxWait': wait,\n    'trailing': trailing\n  });\n}\n\nmodule.exports = throttle;\n", "/**\n * The inverse of `_.toPairs`; this method returns an object composed\n * from key-value `pairs`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} pairs The key-value pairs.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.fromPairs([['a', 1], ['b', 2]]);\n * // => { 'a': 1, 'b': 2 }\n */\nfunction fromPairs(pairs) {\n  var index = -1,\n      length = pairs == null ? 0 : pairs.length,\n      result = {};\n\n  while (++index < length) {\n    var pair = pairs[index];\n    result[pair[0]] = pair[1];\n  }\n  return result;\n}\n\nmodule.exports = fromPairs;\n", "exports = module.exports = stringify\nexports.getSerialize = serializer\n\nfunction stringify(obj, replacer, spaces, cycleReplacer) {\n  return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces)\n}\n\nfunction serializer(replacer, cycleReplacer) {\n  var stack = [], keys = []\n\n  if (cycleReplacer == null) cycleReplacer = function(key, value) {\n    if (stack[0] === value) return \"[Circular ~]\"\n    return \"[Circular ~.\" + keys.slice(0, stack.indexOf(value)).join(\".\") + \"]\"\n  }\n\n  return function(key, value) {\n    if (stack.length > 0) {\n      var thisPos = stack.indexOf(this)\n      ~thisPos ? stack.splice(thisPos + 1) : stack.push(this)\n      ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key)\n      if (~stack.indexOf(value)) value = cycleReplacer.call(this, key, value)\n    }\n    else stack.push(value)\n\n    return replacer == null ? value : replacer.call(this, key, value)\n  }\n}\n", "(function (global, factory) {\n    typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n    typeof define === 'function' && define.amd ? define(factory) :\n    (global = global || self, global.Delaunator = factory());\n}(this, function () { 'use strict';\n\n    var EPSILON = Math.pow(2, -52);\n    var EDGE_STACK = new Uint32Array(512);\n\n    var Delaunator = function Delaunator(coords) {\n        var n = coords.length >> 1;\n        if (n > 0 && typeof coords[0] !== 'number') { throw new Error('Expected coords to contain numbers.'); }\n\n        this.coords = coords;\n\n        // arrays that will store the triangulation graph\n        var maxTriangles = Math.max(2 * n - 5, 0);\n        this._triangles = new Uint32Array(maxTriangles * 3);\n        this._halfedges = new Int32Array(maxTriangles * 3);\n\n        // temporary arrays for tracking the edges of the advancing convex hull\n        this._hashSize = Math.ceil(Math.sqrt(n));\n        this._hullPrev = new Uint32Array(n); // edge to prev edge\n        this._hullNext = new Uint32Array(n); // edge to next edge\n        this._hullTri = new Uint32Array(n); // edge to adjacent triangle\n        this._hullHash = new Int32Array(this._hashSize).fill(-1); // angular edge hash\n\n        // temporary arrays for sorting points\n        this._ids = new Uint32Array(n);\n        this._dists = new Float64Array(n);\n\n        this.update();\n    };\n\n    Delaunator.from = function from (points, getX, getY) {\n            if ( getX === void 0 ) getX = defaultGetX;\n            if ( getY === void 0 ) getY = defaultGetY;\n\n        var n = points.length;\n        var coords = new Float64Array(n * 2);\n\n        for (var i = 0; i < n; i++) {\n            var p = points[i];\n            coords[2 * i] = getX(p);\n            coords[2 * i + 1] = getY(p);\n        }\n\n        return new Delaunator(coords);\n    };\n\n    Delaunator.prototype.update = function update () {\n        var ref =  this;\n            var coords = ref.coords;\n            var hullPrev = ref._hullPrev;\n            var hullNext = ref._hullNext;\n            var hullTri = ref._hullTri;\n            var hullHash = ref._hullHash;\n        var n = coords.length >> 1;\n\n        // populate an array of point indices; calculate input data bbox\n        var minX = Infinity;\n        var minY = Infinity;\n        var maxX = -Infinity;\n        var maxY = -Infinity;\n\n        for (var i = 0; i < n; i++) {\n            var x = coords[2 * i];\n            var y = coords[2 * i + 1];\n            if (x < minX) { minX = x; }\n            if (y < minY) { minY = y; }\n            if (x > maxX) { maxX = x; }\n            if (y > maxY) { maxY = y; }\n            this._ids[i] = i;\n        }\n        var cx = (minX + maxX) / 2;\n        var cy = (minY + maxY) / 2;\n\n        var minDist = Infinity;\n        var i0, i1, i2;\n\n        // pick a seed point close to the center\n        for (var i$1 = 0; i$1 < n; i$1++) {\n            var d = dist(cx, cy, coords[2 * i$1], coords[2 * i$1 + 1]);\n            if (d < minDist) {\n                i0 = i$1;\n                minDist = d;\n            }\n        }\n        var i0x = coords[2 * i0];\n        var i0y = coords[2 * i0 + 1];\n\n        minDist = Infinity;\n\n        // find the point closest to the seed\n        for (var i$2 = 0; i$2 < n; i$2++) {\n            if (i$2 === i0) { continue; }\n            var d$1 = dist(i0x, i0y, coords[2 * i$2], coords[2 * i$2 + 1]);\n            if (d$1 < minDist && d$1 > 0) {\n                i1 = i$2;\n                minDist = d$1;\n            }\n        }\n        var i1x = coords[2 * i1];\n        var i1y = coords[2 * i1 + 1];\n\n        var minRadius = Infinity;\n\n        // find the third point which forms the smallest circumcircle with the first two\n        for (var i$3 = 0; i$3 < n; i$3++) {\n            if (i$3 === i0 || i$3 === i1) { continue; }\n            var r = circumradius(i0x, i0y, i1x, i1y, coords[2 * i$3], coords[2 * i$3 + 1]);\n            if (r < minRadius) {\n                i2 = i$3;\n                minRadius = r;\n            }\n        }\n        var i2x = coords[2 * i2];\n        var i2y = coords[2 * i2 + 1];\n\n        if (minRadius === Infinity) {\n            // order collinear points by dx (or dy if all x are identical)\n            // and return the list as a hull\n            for (var i$4 = 0; i$4 < n; i$4++) {\n                this._dists[i$4] = (coords[2 * i$4] - coords[0]) || (coords[2 * i$4 + 1] - coords[1]);\n            }\n            quicksort(this._ids, this._dists, 0, n - 1);\n            var hull = new Uint32Array(n);\n            var j = 0;\n            for (var i$5 = 0, d0 = -Infinity; i$5 < n; i$5++) {\n                var id = this._ids[i$5];\n                if (this._dists[id] > d0) {\n                    hull[j++] = id;\n                    d0 = this._dists[id];\n                }\n            }\n            this.hull = hull.subarray(0, j);\n            this.triangles = new Uint32Array(0);\n            this.halfedges = new Uint32Array(0);\n            return;\n        }\n\n        // swap the order of the seed points for counter-clockwise orientation\n        if (orient(i0x, i0y, i1x, i1y, i2x, i2y)) {\n            var i$6 = i1;\n            var x$1 = i1x;\n            var y$1 = i1y;\n            i1 = i2;\n            i1x = i2x;\n            i1y = i2y;\n            i2 = i$6;\n            i2x = x$1;\n            i2y = y$1;\n        }\n\n        var center = circumcenter(i0x, i0y, i1x, i1y, i2x, i2y);\n        this._cx = center.x;\n        this._cy = center.y;\n\n        for (var i$7 = 0; i$7 < n; i$7++) {\n            this._dists[i$7] = dist(coords[2 * i$7], coords[2 * i$7 + 1], center.x, center.y);\n        }\n\n        // sort the points by distance from the seed triangle circumcenter\n        quicksort(this._ids, this._dists, 0, n - 1);\n\n        // set up the seed triangle as the starting hull\n        this._hullStart = i0;\n        var hullSize = 3;\n\n        hullNext[i0] = hullPrev[i2] = i1;\n        hullNext[i1] = hullPrev[i0] = i2;\n        hullNext[i2] = hullPrev[i1] = i0;\n\n        hullTri[i0] = 0;\n        hullTri[i1] = 1;\n        hullTri[i2] = 2;\n\n        hullHash.fill(-1);\n        hullHash[this._hashKey(i0x, i0y)] = i0;\n        hullHash[this._hashKey(i1x, i1y)] = i1;\n        hullHash[this._hashKey(i2x, i2y)] = i2;\n\n        this.trianglesLen = 0;\n        this._addTriangle(i0, i1, i2, -1, -1, -1);\n\n        for (var k = 0, xp = (void 0), yp = (void 0); k < this._ids.length; k++) {\n            var i$8 = this._ids[k];\n            var x$2 = coords[2 * i$8];\n            var y$2 = coords[2 * i$8 + 1];\n\n            // skip near-duplicate points\n            if (k > 0 && Math.abs(x$2 - xp) <= EPSILON && Math.abs(y$2 - yp) <= EPSILON) { continue; }\n            xp = x$2;\n            yp = y$2;\n\n            // skip seed triangle points\n            if (i$8 === i0 || i$8 === i1 || i$8 === i2) { continue; }\n\n            // find a visible edge on the convex hull using edge hash\n            var start = 0;\n            for (var j$1 = 0, key = this._hashKey(x$2, y$2); j$1 < this._hashSize; j$1++) {\n                start = hullHash[(key + j$1) % this._hashSize];\n                if (start !== -1 && start !== hullNext[start]) { break; }\n            }\n\n            start = hullPrev[start];\n            var e = start, q = (void 0);\n            while (q = hullNext[e], !orient(x$2, y$2, coords[2 * e], coords[2 * e + 1], coords[2 * q], coords[2 * q + 1])) {\n                e = q;\n                if (e === start) {\n                    e = -1;\n                    break;\n                }\n            }\n            if (e === -1) { continue; } // likely a near-duplicate point; skip it\n\n            // add the first triangle from the point\n            var t = this._addTriangle(e, i$8, hullNext[e], -1, -1, hullTri[e]);\n\n            // recursively flip triangles from the point until they satisfy the Delaunay condition\n            hullTri[i$8] = this._legalize(t + 2);\n            hullTri[e] = t; // keep track of boundary triangles on the hull\n            hullSize++;\n\n            // walk forward through the hull, adding more triangles and flipping recursively\n            var n$1 = hullNext[e];\n            while (q = hullNext[n$1], orient(x$2, y$2, coords[2 * n$1], coords[2 * n$1 + 1], coords[2 * q], coords[2 * q + 1])) {\n                t = this._addTriangle(n$1, i$8, q, hullTri[i$8], -1, hullTri[n$1]);\n                hullTri[i$8] = this._legalize(t + 2);\n                hullNext[n$1] = n$1; // mark as removed\n                hullSize--;\n                n$1 = q;\n            }\n\n            // walk backward from the other side, adding more triangles and flipping\n            if (e === start) {\n                while (q = hullPrev[e], orient(x$2, y$2, coords[2 * q], coords[2 * q + 1], coords[2 * e], coords[2 * e + 1])) {\n                    t = this._addTriangle(q, i$8, e, -1, hullTri[e], hullTri[q]);\n                    this._legalize(t + 2);\n                    hullTri[q] = t;\n                    hullNext[e] = e; // mark as removed\n                    hullSize--;\n                    e = q;\n                }\n            }\n\n            // update the hull indices\n            this._hullStart = hullPrev[i$8] = e;\n            hullNext[e] = hullPrev[n$1] = i$8;\n            hullNext[i$8] = n$1;\n\n            // save the two new edges in the hash table\n            hullHash[this._hashKey(x$2, y$2)] = i$8;\n            hullHash[this._hashKey(coords[2 * e], coords[2 * e + 1])] = e;\n        }\n\n        this.hull = new Uint32Array(hullSize);\n        for (var i$9 = 0, e$1 = this._hullStart; i$9 < hullSize; i$9++) {\n            this.hull[i$9] = e$1;\n            e$1 = hullNext[e$1];\n        }\n\n        // trim typed triangle mesh arrays\n        this.triangles = this._triangles.subarray(0, this.trianglesLen);\n        this.halfedges = this._halfedges.subarray(0, this.trianglesLen);\n    };\n\n    Delaunator.prototype._hashKey = function _hashKey (x, y) {\n        return Math.floor(pseudoAngle(x - this._cx, y - this._cy) * this._hashSize) % this._hashSize;\n    };\n\n    Delaunator.prototype._legalize = function _legalize (a) {\n        var ref = this;\n            var triangles = ref._triangles;\n            var halfedges = ref._halfedges;\n            var coords = ref.coords;\n\n        var i = 0;\n        var ar = 0;\n\n        // recursion eliminated with a fixed-size stack\n        while (true) {\n            var b = halfedges[a];\n\n            /* if the pair of triangles doesn't satisfy the Delaunay condition\n             * (p1 is inside the circumcircle of [p0, pl, pr]), flip them,\n             * then do the same check/flip recursively for the new pair of triangles\n             *\n             *       pl                pl\n             *      /||\\              /  \\\n             *   al/ || \\bl        al/\\a\n             *    /  ||  \\          /  \\\n             *   /  a||b  \\flip/___ar___\\\n             * p0\\   ||   /p1   =>   p0\\---bl---/p1\n             *    \\  ||  /          \\  /\n             *   ar\\ || /br         b\\/br\n             *      \\||/              \\  /\n             *       pr                pr\n             */\n            var a0 = a - a % 3;\n            ar = a0 + (a + 2) % 3;\n\n            if (b === -1) { // convex hull edge\n                if (i === 0) { break; }\n                a = EDGE_STACK[--i];\n                continue;\n            }\n\n            var b0 = b - b % 3;\n            var al = a0 + (a + 1) % 3;\n            var bl = b0 + (b + 2) % 3;\n\n            var p0 = triangles[ar];\n            var pr = triangles[a];\n            var pl = triangles[al];\n            var p1 = triangles[bl];\n\n            var illegal = inCircle(\n                coords[2 * p0], coords[2 * p0 + 1],\n                coords[2 * pr], coords[2 * pr + 1],\n                coords[2 * pl], coords[2 * pl + 1],\n                coords[2 * p1], coords[2 * p1 + 1]);\n\n            if (illegal) {\n                triangles[a] = p1;\n                triangles[b] = p0;\n\n                var hbl = halfedges[bl];\n\n                // edge swapped on the other side of the hull (rare); fix the halfedge reference\n                if (hbl === -1) {\n                    var e = this._hullStart;\n                    do {\n                        if (this._hullTri[e] === bl) {\n                            this._hullTri[e] = a;\n                            break;\n                        }\n                        e = this._hullPrev[e];\n                    } while (e !== this._hullStart);\n                }\n                this._link(a, hbl);\n                this._link(b, halfedges[ar]);\n                this._link(ar, bl);\n\n                var br = b0 + (b + 1) % 3;\n\n                // don't worry about hitting the cap: it can only happen on extremely degenerate input\n                if (i < EDGE_STACK.length) {\n                    EDGE_STACK[i++] = br;\n                }\n            } else {\n                if (i === 0) { break; }\n                a = EDGE_STACK[--i];\n            }\n        }\n\n        return ar;\n    };\n\n    Delaunator.prototype._link = function _link (a, b) {\n        this._halfedges[a] = b;\n        if (b !== -1) { this._halfedges[b] = a; }\n    };\n\n    // add a new triangle given vertex indices and adjacent half-edge ids\n    Delaunator.prototype._addTriangle = function _addTriangle (i0, i1, i2, a, b, c) {\n        var t = this.trianglesLen;\n\n        this._triangles[t] = i0;\n        this._triangles[t + 1] = i1;\n        this._triangles[t + 2] = i2;\n\n        this._link(t, a);\n        this._link(t + 1, b);\n        this._link(t + 2, c);\n\n        this.trianglesLen += 3;\n\n        return t;\n    };\n\n    // monotonically increases with real angle, but doesn't need expensive trigonometry\n    function pseudoAngle(dx, dy) {\n        var p = dx / (Math.abs(dx) + Math.abs(dy));\n        return (dy > 0 ? 3 - p : 1 + p) / 4; // [0..1]\n    }\n\n    function dist(ax, ay, bx, by) {\n        var dx = ax - bx;\n        var dy = ay - by;\n        return dx * dx + dy * dy;\n    }\n\n    // return 2d orientation sign if we're confident in it through J. Shewchuk's error bound check\n    function orientIfSure(px, py, rx, ry, qx, qy) {\n        var l = (ry - py) * (qx - px);\n        var r = (rx - px) * (qy - py);\n        return Math.abs(l - r) >= 3.3306690738754716e-16 * Math.abs(l + r) ? l - r : 0;\n    }\n\n    // a more robust orientation test that's stable in a given triangle (to fix robustness issues)\n    function orient(rx, ry, qx, qy, px, py) {\n        var sign = orientIfSure(px, py, rx, ry, qx, qy) ||\n        orientIfSure(rx, ry, qx, qy, px, py) ||\n        orientIfSure(qx, qy, px, py, rx, ry);\n        return sign < 0;\n    }\n\n    function inCircle(ax, ay, bx, by, cx, cy, px, py) {\n        var dx = ax - px;\n        var dy = ay - py;\n        var ex = bx - px;\n        var ey = by - py;\n        var fx = cx - px;\n        var fy = cy - py;\n\n        var ap = dx * dx + dy * dy;\n        var bp = ex * ex + ey * ey;\n        var cp = fx * fx + fy * fy;\n\n        return dx * (ey * cp - bp * fy) -\n               dy * (ex * cp - bp * fx) +\n               ap * (ex * fy - ey * fx) < 0;\n    }\n\n    function circumradius(ax, ay, bx, by, cx, cy) {\n        var dx = bx - ax;\n        var dy = by - ay;\n        var ex = cx - ax;\n        var ey = cy - ay;\n\n        var bl = dx * dx + dy * dy;\n        var cl = ex * ex + ey * ey;\n        var d = 0.5 / (dx * ey - dy * ex);\n\n        var x = (ey * bl - dy * cl) * d;\n        var y = (dx * cl - ex * bl) * d;\n\n        return x * x + y * y;\n    }\n\n    function circumcenter(ax, ay, bx, by, cx, cy) {\n        var dx = bx - ax;\n        var dy = by - ay;\n        var ex = cx - ax;\n        var ey = cy - ay;\n\n        var bl = dx * dx + dy * dy;\n        var cl = ex * ex + ey * ey;\n        var d = 0.5 / (dx * ey - dy * ex);\n\n        var x = ax + (ey * bl - dy * cl) * d;\n        var y = ay + (dx * cl - ex * bl) * d;\n\n        return {x: x, y: y};\n    }\n\n    function quicksort(ids, dists, left, right) {\n        if (right - left <= 20) {\n            for (var i = left + 1; i <= right; i++) {\n                var temp = ids[i];\n                var tempDist = dists[temp];\n                var j = i - 1;\n                while (j >= left && dists[ids[j]] > tempDist) { ids[j + 1] = ids[j--]; }\n                ids[j + 1] = temp;\n            }\n        } else {\n            var median = (left + right) >> 1;\n            var i$1 = left + 1;\n            var j$1 = right;\n            swap(ids, median, i$1);\n            if (dists[ids[left]] > dists[ids[right]]) { swap(ids, left, right); }\n            if (dists[ids[i$1]] > dists[ids[right]]) { swap(ids, i$1, right); }\n            if (dists[ids[left]] > dists[ids[i$1]]) { swap(ids, left, i$1); }\n\n            var temp$1 = ids[i$1];\n            var tempDist$1 = dists[temp$1];\n            while (true) {\n                do { i$1++; } while (dists[ids[i$1]] < tempDist$1);\n                do { j$1--; } while (dists[ids[j$1]] > tempDist$1);\n                if (j$1 < i$1) { break; }\n                swap(ids, i$1, j$1);\n            }\n            ids[left + 1] = ids[j$1];\n            ids[j$1] = temp$1;\n\n            if (right - i$1 + 1 >= j$1 - left) {\n                quicksort(ids, dists, i$1, right);\n                quicksort(ids, dists, left, j$1 - 1);\n            } else {\n                quicksort(ids, dists, left, j$1 - 1);\n                quicksort(ids, dists, i$1, right);\n            }\n        }\n    }\n\n    function swap(arr, i, j) {\n        var tmp = arr[i];\n        arr[i] = arr[j];\n        arr[j] = tmp;\n    }\n\n    function defaultGetX(p) {\n        return p[0];\n    }\n    function defaultGetY(p) {\n        return p[1];\n    }\n\n    return Delaunator;\n\n}));\n", "\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _delaunator = _interopRequireDefault(require(\"delaunator/delaunator.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n// From https://github.com/d3/d3-delaunay/blob/master/src/delaunay.js\nfunction pointX(p) {\n  return p[0];\n}\n\nfunction pointY(p) {\n  return p[1];\n} // A triangulation is collinear if all its triangles have a non-null area\n\n\nfunction collinear(d) {\n  var triangles = d.triangles,\n      coords = d.coords;\n\n  for (var i = 0; i < triangles.length; i += 3) {\n    var a = 2 * triangles[i];\n    var b = 2 * triangles[i + 1];\n    var c = 2 * triangles[i + 2];\n    var cross = (coords[c] - coords[a]) * (coords[b + 1] - coords[a + 1]) - (coords[b] - coords[a]) * (coords[c + 1] - coords[a + 1]); // eslint-disable-next-line no-magic-numbers\n\n    if (cross > 1e-10) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\nfunction jitter(x, y, r) {\n  return [x + Math.sin(x + y) * r, y + Math.cos(x - y) * r];\n} // eslint-disable-next-line max-params\n\n\nfunction flatArray(points, fx, fy, that) {\n  var n = points.length;\n  var array = new Float64Array(n * 2);\n\n  for (var i = 0; i < n; ++i) {\n    var p = points[i];\n    array[i * 2] = fx.call(that, p, i, points);\n    array[i * 2 + 1] = fy.call(that, p, i, points);\n  }\n\n  return array;\n}\n\nvar Delaunay =\n/*#__PURE__*/\nfunction () {\n  function Delaunay(points) {\n    var delaunator = new _delaunator[\"default\"](points);\n    this.inedges = new Int32Array(points.length / 2);\n    this._hullIndex = new Int32Array(points.length / 2);\n    this.points = delaunator.coords;\n\n    this._init(delaunator);\n  } // eslint-disable-next-line max-statements, complexity\n\n\n  var _proto = Delaunay.prototype;\n\n  _proto._init = function _init(delaunator) {\n    var d = delaunator;\n    var points = this.points; // check for collinear\n    // eslint-disable-next-line no-magic-numbers\n\n    if (d.hull && d.hull.length > 2 && collinear(d)) {\n      this.collinear = Int32Array.from({\n        length: points.length / 2\n      }, function (_, i) {\n        return i;\n      }).sort(function (i, j) {\n        return points[2 * i] - points[2 * j] || points[2 * i + 1] - points[2 * j + 1];\n      }); // for exact neighbors\n\n      var e = this.collinear[0];\n      var f = this.collinear[this.collinear.length - 1];\n      var bounds = [points[2 * e], points[2 * e + 1], points[2 * f], points[2 * f + 1]];\n      var r = 1e-8 * // eslint-disable-line no-magic-numbers\n      Math.sqrt(Math.pow(bounds[3] - bounds[1], 2) + Math.pow(bounds[2] - bounds[0], 2));\n\n      for (var i = 0, n = points.length / 2; i < n; ++i) {\n        var p = jitter(points[2 * i], points[2 * i + 1], r);\n        points[2 * i] = p[0];\n        points[2 * i + 1] = p[1];\n      }\n\n      delaunator = new _delaunator[\"default\"](points);\n    }\n\n    var halfedges = this.halfedges = delaunator.halfedges;\n    var hull = this.hull = delaunator.hull;\n    var triangles = this.triangles = delaunator.triangles;\n    var inedges = this.inedges.fill(-1);\n\n    var hullIndex = this._hullIndex.fill(-1); // Compute an index from each point to an (arbitrary) incoming halfedge\n    // Used to give the first neighbor of each point; for this reason,\n    // on the hull we give priority to exterior halfedges\n\n\n    for (var _e = 0, _n = halfedges.length; _e < _n; ++_e) {\n      var _p = triangles[_e % 3 === 2 ? _e - 2 : _e + 1];\n      if (halfedges[_e] === -1 || inedges[_p] === -1) inedges[_p] = _e;\n    }\n\n    for (var _i = 0, _n2 = hull.length; _i < _n2; ++_i) {\n      hullIndex[hull[_i]] = _i;\n    } // degenerate case: 1 or 2 (distinct) points\n\n\n    if (hull.length <= 2 && hull.length > 0) {\n      this.triangles = new Int32Array(3).fill(-1);\n      this.halfedges = new Int32Array(3).fill(-1);\n      this.triangles[0] = hull[0];\n      this.triangles[1] = hull[1];\n      this.triangles[2] = hull[1];\n      inedges[hull[0]] = 1;\n      if (hull.length === 2) inedges[hull[1]] = 0;\n    }\n  } // eslint-disable-next-line max-statements\n  ;\n\n  _proto.neighbors = function neighbors(i) {\n    var results = [];\n    var inedges = this.inedges,\n        hull = this.hull,\n        _hullIndex = this._hullIndex,\n        halfedges = this.halfedges,\n        triangles = this.triangles;\n    var e0 = inedges[i];\n    if (e0 === -1) return results; // coincident point\n\n    var e = e0;\n    var p0 = -1;\n\n    do {\n      p0 = triangles[e];\n      results.push(p0);\n      e = e % 3 === 2 ? e - 2 : e + 1;\n      if (triangles[e] !== i) break; // bad triangulation\n\n      e = halfedges[e];\n\n      if (e === -1) {\n        var p = hull[(_hullIndex[i] + 1) % hull.length];\n        if (p !== p0) results.push(p);\n        break;\n      }\n    } while (e !== e0);\n\n    return results;\n  };\n\n  _proto.find = function find(x, y, i) {\n    if (i === void 0) {\n      i = 0;\n    }\n\n    // eslint-disable-next-line no-self-compare\n    if ((x = +x, x !== x) || (y = +y, y !== y)) return -1;\n    var i0 = i;\n    var c;\n\n    while ((c = this._step(i, x, y)) >= 0 && c !== i && c !== i0) {\n      i = c;\n    }\n\n    return c;\n  };\n\n  _proto._step = function _step(i, x, y) {\n    var inedges = this.inedges,\n        points = this.points;\n    if (inedges[i] === -1 || !points.length) return (i + 1) % (points.length >> 1);\n    var c = i;\n    var dc = Math.pow(x - points[i * 2], 2) + Math.pow(y - points[i * 2 + 1], 2);\n\n    for (var _iterator = this.neighbors(i), _isArray = Array.isArray(_iterator), _i2 = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n      var _ref;\n\n      if (_isArray) {\n        if (_i2 >= _iterator.length) break;\n        _ref = _iterator[_i2++];\n      } else {\n        _i2 = _iterator.next();\n        if (_i2.done) break;\n        _ref = _i2.value;\n      }\n\n      var t = _ref;\n      var dt = Math.pow(x - points[t * 2], 2) + Math.pow(y - points[t * 2 + 1], 2);\n\n      if (dt < dc) {\n        dc = dt;\n        c = t;\n      }\n    }\n\n    return c;\n  };\n\n  return Delaunay;\n}(); // eslint-disable-next-line max-params\n\n\nexports[\"default\"] = Delaunay;\n\nDelaunay.from = function (points, fx, fy, that) {\n  if (fx === void 0) {\n    fx = pointX;\n  }\n\n  if (fy === void 0) {\n    fy = pointY;\n  }\n\n  return new Delaunay(flatArray(points, fx, fy, that));\n}; // only public methods will be .from and .find", "/**\n * The base implementation of `_.sum` and `_.sumBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the sum.\n */\nfunction baseSum(array, iteratee) {\n  var result,\n      index = -1,\n      length = array.length;\n\n  while (++index < length) {\n    var current = iteratee(array[index]);\n    if (current !== undefined) {\n      result = result === undefined ? current : (result + current);\n    }\n  }\n  return result;\n}\n\nmodule.exports = baseSum;\n", "var baseSum = require('./_baseSum'),\n    identity = require('./identity');\n\n/**\n * Computes the sum of the values in `array`.\n *\n * @static\n * @memberOf _\n * @since 3.4.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {number} Returns the sum.\n * @example\n *\n * _.sum([4, 2, 8, 6]);\n * // => 20\n */\nfunction sum(array) {\n  return (array && array.length)\n    ? baseSum(array, identity)\n    : 0;\n}\n\nmodule.exports = sum;\n", "(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn ", "// Currently in sync with Node.js lib/assert.js\n// https://github.com/nodejs/node/commit/2a51ae424a513ec9a6aa3466baa0cc1d55dd4f3b\n// Originally from narwhal.js (http://narwhaljs.org)\n// Copyright (c) 2009 Thomas Robinson <280north.com>\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the 'Software'), to\n// deal in the Software without restriction, including without limitation the\n// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n// sell copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n'use strict';\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar _require = require('./internal/errors'),\n    _require$codes = _require.codes,\n    ERR_AMBIGUOUS_ARGUMENT = _require$codes.ERR_AMBIGUOUS_ARGUMENT,\n    ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n    ERR_INVALID_ARG_VALUE = _require$codes.ERR_INVALID_ARG_VALUE,\n    ERR_INVALID_RETURN_VALUE = _require$codes.ERR_INVALID_RETURN_VALUE,\n    ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS;\n\nvar AssertionError = require('./internal/assert/assertion_error');\n\nvar _require2 = require('util/'),\n    inspect = _require2.inspect;\n\nvar _require$types = require('util/').types,\n    isPromise = _require$types.isPromise,\n    isRegExp = _require$types.isRegExp;\n\nvar objectAssign = Object.assign ? Object.assign : require('es6-object-assign').assign;\nvar objectIs = Object.is ? Object.is : require('object-is');\nvar errorCache = new Map();\nvar isDeepEqual;\nvar isDeepStrictEqual;\nvar parseExpressionAt;\nvar findNodeAround;\nvar decoder;\n\nfunction lazyLoadComparison() {\n  var comparison = require('./internal/util/comparisons');\n\n  isDeepEqual = comparison.isDeepEqual;\n  isDeepStrictEqual = comparison.isDeepStrictEqual;\n} // Escape control characters but not \\n and \\t to keep the line breaks and\n// indentation intact.\n// eslint-disable-next-line no-control-regex\n\n\nvar escapeSequencesRegExp = /[\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f]/g;\nvar meta = [\"\\\\u0000\", \"\\\\u0001\", \"\\\\u0002\", \"\\\\u0003\", \"\\\\u0004\", \"\\\\u0005\", \"\\\\u0006\", \"\\\\u0007\", '\\\\b', '', '', \"\\\\u000b\", '\\\\f', '', \"\\\\u000e\", \"\\\\u000f\", \"\\\\u0010\", \"\\\\u0011\", \"\\\\u0012\", \"\\\\u0013\", \"\\\\u0014\", \"\\\\u0015\", \"\\\\u0016\", \"\\\\u0017\", \"\\\\u0018\", \"\\\\u0019\", \"\\\\u001a\", \"\\\\u001b\", \"\\\\u001c\", \"\\\\u001d\", \"\\\\u001e\", \"\\\\u001f\"];\n\nvar escapeFn = function escapeFn(str) {\n  return meta[str.charCodeAt(0)];\n};\n\nvar warned = false; // The assert module provides functions that throw\n// AssertionError's when particular conditions are not met. The\n// assert module must conform to the following interface.\n\nvar assert = module.exports = ok;\nvar NO_EXCEPTION_SENTINEL = {}; // All of the following functions must throw an AssertionError\n// when a corresponding condition is not met, with a message that\n// may be undefined if not provided. All assertion methods provide\n// both the actual and expected values to the assertion error for\n// display purposes.\n\nfunction innerFail(obj) {\n  if (obj.message instanceof Error) throw obj.message;\n  throw new AssertionError(obj);\n}\n\nfunction fail(actual, expected, message, operator, stackStartFn) {\n  var argsLen = arguments.length;\n  var internalMessage;\n\n  if (argsLen === 0) {\n    internalMessage = 'Failed';\n  } else if (argsLen === 1) {\n    message = actual;\n    actual = undefined;\n  } else {\n    if (warned === false) {\n      warned = true;\n      var warn = process.emitWarning ? process.emitWarning : console.warn.bind(console);\n      warn('assert.fail() with more than one argument is deprecated. ' + 'Please use assert.strictEqual() instead or only pass a message.', 'DeprecationWarning', 'DEP0094');\n    }\n\n    if (argsLen === 2) operator = '!=';\n  }\n\n  if (message instanceof Error) throw message;\n  var errArgs = {\n    actual: actual,\n    expected: expected,\n    operator: operator === undefined ? 'fail' : operator,\n    stackStartFn: stackStartFn || fail\n  };\n\n  if (message !== undefined) {\n    errArgs.message = message;\n  }\n\n  var err = new AssertionError(errArgs);\n\n  if (internalMessage) {\n    err.message = internalMessage;\n    err.generatedMessage = true;\n  }\n\n  throw err;\n}\n\nassert.fail = fail; // The AssertionError is defined in internal/error.\n\nassert.AssertionError = AssertionError;\n\nfunction innerOk(fn, argLen, value, message) {\n  if (!value) {\n    var generatedMessage = false;\n\n    if (argLen === 0) {\n      generatedMessage = true;\n      message = 'No value argument passed to `assert.ok()`';\n    } else if (message instanceof Error) {\n      throw message;\n    }\n\n    var err = new AssertionError({\n      actual: value,\n      expected: true,\n      message: message,\n      operator: '==',\n      stackStartFn: fn\n    });\n    err.generatedMessage = generatedMessage;\n    throw err;\n  }\n} // Pure assertion tests whether a value is truthy, as determined\n// by !!value.\n\n\nfunction ok() {\n  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n\n  innerOk.apply(void 0, [ok, args.length].concat(args));\n}\n\nassert.ok = ok; // The equality assertion tests shallow, coercive equality with ==.\n\n/* eslint-disable no-restricted-properties */\n\nassert.equal = function equal(actual, expected, message) {\n  if (arguments.length < 2) {\n    throw new ERR_MISSING_ARGS('actual', 'expected');\n  } // eslint-disable-next-line eqeqeq\n\n\n  if (actual != expected) {\n    innerFail({\n      actual: actual,\n      expected: expected,\n      message: message,\n      operator: '==',\n      stackStartFn: equal\n    });\n  }\n}; // The non-equality assertion tests for whether two objects are not\n// equal with !=.\n\n\nassert.notEqual = function notEqual(actual, expected, message) {\n  if (arguments.length < 2) {\n    throw new ERR_MISSING_ARGS('actual', 'expected');\n  } // eslint-disable-next-line eqeqeq\n\n\n  if (actual == expected) {\n    innerFail({\n      actual: actual,\n      expected: expected,\n      message: message,\n      operator: '!=',\n      stackStartFn: notEqual\n    });\n  }\n}; // The equivalence assertion tests a deep equality relation.\n\n\nassert.deepEqual = function deepEqual(actual, expected, message) {\n  if (arguments.length < 2) {\n    throw new ERR_MISSING_ARGS('actual', 'expected');\n  }\n\n  if (isDeepEqual === undefined) lazyLoadComparison();\n\n  if (!isDeepEqual(actual, expected)) {\n    innerFail({\n      actual: actual,\n      expected: expected,\n      message: message,\n      operator: 'deepEqual',\n      stackStartFn: deepEqual\n    });\n  }\n}; // The non-equivalence assertion tests for any deep inequality.\n\n\nassert.notDeepEqual = function notDeepEqual(actual, expected, message) {\n  if (arguments.length < 2) {\n    throw new ERR_MISSING_ARGS('actual', 'expected');\n  }\n\n  if (isDeepEqual === undefined) lazyLoadComparison();\n\n  if (isDeepEqual(actual, expected)) {\n    innerFail({\n      actual: actual,\n      expected: expected,\n      message: message,\n      operator: 'notDeepEqual',\n      stackStartFn: notDeepEqual\n    });\n  }\n};\n/* eslint-enable */\n\n\nassert.deepStrictEqual = function deepStrictEqual(actual, expected, message) {\n  if (arguments.length < 2) {\n    throw new ERR_MISSING_ARGS('actual', 'expected');\n  }\n\n  if (isDeepEqual === undefined) lazyLoadComparison();\n\n  if (!isDeepStrictEqual(actual, expected)) {\n    innerFail({\n      actual: actual,\n      expected: expected,\n      message: message,\n      operator: 'deepStrictEqual',\n      stackStartFn: deepStrictEqual\n    });\n  }\n};\n\nassert.notDeepStrictEqual = notDeepStrictEqual;\n\nfunction notDeepStrictEqual(actual, expected, message) {\n  if (arguments.length < 2) {\n    throw new ERR_MISSING_ARGS('actual', 'expected');\n  }\n\n  if (isDeepEqual === undefined) lazyLoadComparison();\n\n  if (isDeepStrictEqual(actual, expected)) {\n    innerFail({\n      actual: actual,\n      expected: expected,\n      message: message,\n      operator: 'notDeepStrictEqual',\n      stackStartFn: notDeepStrictEqual\n    });\n  }\n}\n\nassert.strictEqual = function strictEqual(actual, expected, message) {\n  if (arguments.length < 2) {\n    throw new ERR_MISSING_ARGS('actual', 'expected');\n  }\n\n  if (!objectIs(actual, expected)) {\n    innerFail({\n      actual: actual,\n      expected: expected,\n      message: message,\n      operator: 'strictEqual',\n      stackStartFn: strictEqual\n    });\n  }\n};\n\nassert.notStrictEqual = function notStrictEqual(actual, expected, message) {\n  if (arguments.length < 2) {\n    throw new ERR_MISSING_ARGS('actual', 'expected');\n  }\n\n  if (objectIs(actual, expected)) {\n    innerFail({\n      actual: actual,\n      expected: expected,\n      message: message,\n      operator: 'notStrictEqual',\n      stackStartFn: notStrictEqual\n    });\n  }\n};\n\nvar Comparison = function Comparison(obj, keys, actual) {\n  var _this = this;\n\n  _classCallCheck(this, Comparison);\n\n  keys.forEach(function (key) {\n    if (key in obj) {\n      if (actual !== undefined && typeof actual[key] === 'string' && isRegExp(obj[key]) && obj[key].test(actual[key])) {\n        _this[key] = actual[key];\n      } else {\n        _this[key] = obj[key];\n      }\n    }\n  });\n};\n\nfunction compareExceptionKey(actual, expected, key, message, keys, fn) {\n  if (!(key in actual) || !isDeepStrictEqual(actual[key], expected[key])) {\n    if (!message) {\n      // Create placeholder objects to create a nice output.\n      var a = new Comparison(actual, keys);\n      var b = new Comparison(expected, keys, actual);\n      var err = new AssertionError({\n        actual: a,\n        expected: b,\n        operator: 'deepStrictEqual',\n        stackStartFn: fn\n      });\n      err.actual = actual;\n      err.expected = expected;\n      err.operator = fn.name;\n      throw err;\n    }\n\n    innerFail({\n      actual: actual,\n      expected: expected,\n      message: message,\n      operator: fn.name,\n      stackStartFn: fn\n    });\n  }\n}\n\nfunction expectedException(actual, expected, msg, fn) {\n  if (typeof expected !== 'function') {\n    if (isRegExp(expected)) return expected.test(actual); // assert.doesNotThrow does not accept objects.\n\n    if (arguments.length === 2) {\n      throw new ERR_INVALID_ARG_TYPE('expected', ['Function', 'RegExp'], expected);\n    } // Handle primitives properly.\n\n\n    if (_typeof(actual) !== 'object' || actual === null) {\n      var err = new AssertionError({\n        actual: actual,\n        expected: expected,\n        message: msg,\n        operator: 'deepStrictEqual',\n        stackStartFn: fn\n      });\n      err.operator = fn.name;\n      throw err;\n    }\n\n    var keys = Object.keys(expected); // Special handle errors to make sure the name and the message are compared\n    // as well.\n\n    if (expected instanceof Error) {\n      keys.push('name', 'message');\n    } else if (keys.length === 0) {\n      throw new ERR_INVALID_ARG_VALUE('error', expected, 'may not be an empty object');\n    }\n\n    if (isDeepEqual === undefined) lazyLoadComparison();\n    keys.forEach(function (key) {\n      if (typeof actual[key] === 'string' && isRegExp(expected[key]) && expected[key].test(actual[key])) {\n        return;\n      }\n\n      compareExceptionKey(actual, expected, key, msg, keys, fn);\n    });\n    return true;\n  } // Guard instanceof against arrow functions as they don't have a prototype.\n\n\n  if (expected.prototype !== undefined && actual instanceof expected) {\n    return true;\n  }\n\n  if (Error.isPrototypeOf(expected)) {\n    return false;\n  }\n\n  return expected.call({}, actual) === true;\n}\n\nfunction getActual(fn) {\n  if (typeof fn !== 'function') {\n    throw new ERR_INVALID_ARG_TYPE('fn', 'Function', fn);\n  }\n\n  try {\n    fn();\n  } catch (e) {\n    return e;\n  }\n\n  return NO_EXCEPTION_SENTINEL;\n}\n\nfunction checkIsPromise(obj) {\n  // Accept native ES6 promises and promises that are implemented in a similar\n  // way. Do not accept thenables that use a function as `obj` and that have no\n  // `catch` handler.\n  // TODO: thenables are checked up until they have the correct methods,\n  // but according to documentation, the `then` method should receive\n  // the `fulfill` and `reject` arguments as well or it may be never resolved.\n  return isPromise(obj) || obj !== null && _typeof(obj) === 'object' && typeof obj.then === 'function' && typeof obj.catch === 'function';\n}\n\nfunction waitForActual(promiseFn) {\n  return Promise.resolve().then(function () {\n    var resultPromise;\n\n    if (typeof promiseFn === 'function') {\n      // Return a rejected promise if `promiseFn` throws synchronously.\n      resultPromise = promiseFn(); // Fail in case no promise is returned.\n\n      if (!checkIsPromise(resultPromise)) {\n        throw new ERR_INVALID_RETURN_VALUE('instance of Promise', 'promiseFn', resultPromise);\n      }\n    } else if (checkIsPromise(promiseFn)) {\n      resultPromise = promiseFn;\n    } else {\n      throw new ERR_INVALID_ARG_TYPE('promiseFn', ['Function', 'Promise'], promiseFn);\n    }\n\n    return Promise.resolve().then(function () {\n      return resultPromise;\n    }).then(function () {\n      return NO_EXCEPTION_SENTINEL;\n    }).catch(function (e) {\n      return e;\n    });\n  });\n}\n\nfunction expectsError(stackStartFn, actual, error, message) {\n  if (typeof error === 'string') {\n    if (arguments.length === 4) {\n      throw new ERR_INVALID_ARG_TYPE('error', ['Object', 'Error', 'Function', 'RegExp'], error);\n    }\n\n    if (_typeof(actual) === 'object' && actual !== null) {\n      if (actual.message === error) {\n        throw new ERR_AMBIGUOUS_ARGUMENT('error/message', \"The error message \\\"\".concat(actual.message, \"\\\" is identical to the message.\"));\n      }\n    } else if (actual === error) {\n      throw new ERR_AMBIGUOUS_ARGUMENT('error/message', \"The error \\\"\".concat(actual, \"\\\" is identical to the message.\"));\n    }\n\n    message = error;\n    error = undefined;\n  } else if (error != null && _typeof(error) !== 'object' && typeof error !== 'function') {\n    throw new ERR_INVALID_ARG_TYPE('error', ['Object', 'Error', 'Function', 'RegExp'], error);\n  }\n\n  if (actual === NO_EXCEPTION_SENTINEL) {\n    var details = '';\n\n    if (error && error.name) {\n      details += \" (\".concat(error.name, \")\");\n    }\n\n    details += message ? \": \".concat(message) : '.';\n    var fnType = stackStartFn.name === 'rejects' ? 'rejection' : 'exception';\n    innerFail({\n      actual: undefined,\n      expected: error,\n      operator: stackStartFn.name,\n      message: \"Missing expected \".concat(fnType).concat(details),\n      stackStartFn: stackStartFn\n    });\n  }\n\n  if (error && !expectedException(actual, error, message, stackStartFn)) {\n    throw actual;\n  }\n}\n\nfunction expectsNoError(stackStartFn, actual, error, message) {\n  if (actual === NO_EXCEPTION_SENTINEL) return;\n\n  if (typeof error === 'string') {\n    message = error;\n    error = undefined;\n  }\n\n  if (!error || expectedException(actual, error)) {\n    var details = message ? \": \".concat(message) : '.';\n    var fnType = stackStartFn.name === 'doesNotReject' ? 'rejection' : 'exception';\n    innerFail({\n      actual: actual,\n      expected: error,\n      operator: stackStartFn.name,\n      message: \"Got unwanted \".concat(fnType).concat(details, \"\\n\") + \"Actual message: \\\"\".concat(actual && actual.message, \"\\\"\"),\n      stackStartFn: stackStartFn\n    });\n  }\n\n  throw actual;\n}\n\nassert.throws = function throws(promiseFn) {\n  for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n    args[_key2 - 1] = arguments[_key2];\n  }\n\n  expectsError.apply(void 0, [throws, getActual(promiseFn)].concat(args));\n};\n\nassert.rejects = function rejects(promiseFn) {\n  for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n    args[_key3 - 1] = arguments[_key3];\n  }\n\n  return waitForActual(promiseFn).then(function (result) {\n    return expectsError.apply(void 0, [rejects, result].concat(args));\n  });\n};\n\nassert.doesNotThrow = function doesNotThrow(fn) {\n  for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n    args[_key4 - 1] = arguments[_key4];\n  }\n\n  expectsNoError.apply(void 0, [doesNotThrow, getActual(fn)].concat(args));\n};\n\nassert.doesNotReject = function doesNotReject(fn) {\n  for (var _len5 = arguments.length, args = new Array(_len5 > 1 ? _len5 - 1 : 0), _key5 = 1; _key5 < _len5; _key5++) {\n    args[_key5 - 1] = arguments[_key5];\n  }\n\n  return waitForActual(fn).then(function (result) {\n    return expectsNoError.apply(void 0, [doesNotReject, result].concat(args));\n  });\n};\n\nassert.ifError = function ifError(err) {\n  if (err !== null && err !== undefined) {\n    var message = 'ifError got unwanted exception: ';\n\n    if (_typeof(err) === 'object' && typeof err.message === 'string') {\n      if (err.message.length === 0 && err.constructor) {\n        message += err.constructor.name;\n      } else {\n        message += err.message;\n      }\n    } else {\n      message += inspect(err);\n    }\n\n    var newErr = new AssertionError({\n      actual: err,\n      expected: null,\n      operator: 'ifError',\n      message: message,\n      stackStartFn: ifError\n    }); // Make sure we actually have a stack trace!\n\n    var origStack = err.stack;\n\n    if (typeof origStack === 'string') {\n      // This will remove any duplicated frames from the error frames taken\n      // from within `ifError` and add the original error frames to the newly\n      // created ones.\n      var tmp2 = origStack.split('\\n');\n      tmp2.shift(); // Filter all frames existing in err.stack.\n\n      var tmp1 = newErr.stack.split('\\n');\n\n      for (var i = 0; i < tmp2.length; i++) {\n        // Find the first occurrence of the frame.\n        var pos = tmp1.indexOf(tmp2[i]);\n\n        if (pos !== -1) {\n          // Only keep new frames.\n          tmp1 = tmp1.slice(0, pos);\n          break;\n        }\n      }\n\n      newErr.stack = \"\".concat(tmp1.join('\\n'), \"\\n\").concat(tmp2.join('\\n'));\n    }\n\n    throw newErr;\n  }\n}; // Expose a strict only variant of assert\n\n\nfunction strict() {\n  for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n    args[_key6] = arguments[_key6];\n  }\n\n  innerOk.apply(void 0, [strict, args.length].concat(args));\n}\n\nassert.strict = objectAssign(strict, assert, {\n  equal: assert.strictEqual,\n  deepEqual: assert.deepStrictEqual,\n  notEqual: assert.notStrictEqual,\n  notDeepEqual: assert.notDeepStrictEqual\n});\nassert.strict.strict = assert.strict;", "// Currently in sync with Node.js lib/internal/assert/assertion_error.js\n// https://github.com/nodejs/node/commit/0817840f775032169ddd70c85ac059f18ffcc81c\n'use strict';\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _wrapNativeSuper(Class) { var _cache = typeof Map === \"function\" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== \"function\") { throw new TypeError(\"Super expression must either be null or a function\"); } if (typeof _cache !== \"undefined\") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }\n\nfunction isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _construct(Parent, args, Class) { if (isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }\n\nfunction _isNativeFunction(fn) { return Function.toString.call(fn).indexOf(\"[native code]\") !== -1; }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar _require = require('util/'),\n    inspect = _require.inspect;\n\nvar _require2 = require('../errors'),\n    ERR_INVALID_ARG_TYPE = _require2.codes.ERR_INVALID_ARG_TYPE; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n  if (this_len === undefined || this_len > str.length) {\n    this_len = str.length;\n  }\n\n  return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/repeat\n\n\nfunction repeat(str, count) {\n  count = Math.floor(count);\n  if (str.length == 0 || count == 0) return '';\n  var maxCount = str.length * count;\n  count = Math.floor(Math.log(count) / Math.log(2));\n\n  while (count) {\n    str += str;\n    count--;\n  }\n\n  str += str.substring(0, maxCount - str.length);\n  return str;\n}\n\nvar blue = '';\nvar green = '';\nvar red = '';\nvar white = '';\nvar kReadableOperator = {\n  deepStrictEqual: 'Expected values to be strictly deep-equal:',\n  strictEqual: 'Expected values to be strictly equal:',\n  strictEqualObject: 'Expected \"actual\" to be reference-equal to \"expected\":',\n  deepEqual: 'Expected values to be loosely deep-equal:',\n  equal: 'Expected values to be loosely equal:',\n  notDeepStrictEqual: 'Expected \"actual\" not to be strictly deep-equal to:',\n  notStrictEqual: 'Expected \"actual\" to be strictly unequal to:',\n  notStrictEqualObject: 'Expected \"actual\" not to be reference-equal to \"expected\":',\n  notDeepEqual: 'Expected \"actual\" not to be loosely deep-equal to:',\n  notEqual: 'Expected \"actual\" to be loosely unequal to:',\n  notIdentical: 'Values identical but not reference-equal:'\n}; // Comparing short primitives should just show === / !== instead of using the\n// diff.\n\nvar kMaxShortLength = 10;\n\nfunction copyError(source) {\n  var keys = Object.keys(source);\n  var target = Object.create(Object.getPrototypeOf(source));\n  keys.forEach(function (key) {\n    target[key] = source[key];\n  });\n  Object.defineProperty(target, 'message', {\n    value: source.message\n  });\n  return target;\n}\n\nfunction inspectValue(val) {\n  // The util.inspect default values could be changed. This makes sure the\n  // error messages contain the necessary information nevertheless.\n  return inspect(val, {\n    compact: false,\n    customInspect: false,\n    depth: 1000,\n    maxArrayLength: Infinity,\n    // Assert compares only enumerable properties (with a few exceptions).\n    showHidden: false,\n    // Having a long line as error is better than wrapping the line for\n    // comparison for now.\n    // TODO(BridgeAR): `breakLength` should be limited as soon as soon as we\n    // have meta information about the inspected properties (i.e., know where\n    // in what line the property starts and ends).\n    breakLength: Infinity,\n    // Assert does not detect proxies currently.\n    showProxy: false,\n    sorted: true,\n    // Inspect getters as we also check them when comparing entries.\n    getters: true\n  });\n}\n\nfunction createErrDiff(actual, expected, operator) {\n  var other = '';\n  var res = '';\n  var lastPos = 0;\n  var end = '';\n  var skipped = false;\n  var actualInspected = inspectValue(actual);\n  var actualLines = actualInspected.split('\\n');\n  var expectedLines = inspectValue(expected).split('\\n');\n  var i = 0;\n  var indicator = ''; // In case both values are objects explicitly mark them as not reference equal\n  // for the `strictEqual` operator.\n\n  if (operator === 'strictEqual' && _typeof(actual) === 'object' && _typeof(expected) === 'object' && actual !== null && expected !== null) {\n    operator = 'strictEqualObject';\n  } // If \"actual\" and \"expected\" fit on a single line and they are not strictly\n  // equal, check further special handling.\n\n\n  if (actualLines.length === 1 && expectedLines.length === 1 && actualLines[0] !== expectedLines[0]) {\n    var inputLength = actualLines[0].length + expectedLines[0].length; // If the character length of \"actual\" and \"expected\" together is less than\n    // kMaxShortLength and if neither is an object and at least one of them is\n    // not `zero`, use the strict equal comparison to visualize the output.\n\n    if (inputLength <= kMaxShortLength) {\n      if ((_typeof(actual) !== 'object' || actual === null) && (_typeof(expected) !== 'object' || expected === null) && (actual !== 0 || expected !== 0)) {\n        // -0 === +0\n        return \"\".concat(kReadableOperator[operator], \"\\n\\n\") + \"\".concat(actualLines[0], \" !== \").concat(expectedLines[0], \"\\n\");\n      }\n    } else if (operator !== 'strictEqualObject') {\n      // If the stderr is a tty and the input length is lower than the current\n      // columns per line, add a mismatch indicator below the output. If it is\n      // not a tty, use a default value of 80 characters.\n      var maxLength = process.stderr && process.stderr.isTTY ? process.stderr.columns : 80;\n\n      if (inputLength < maxLength) {\n        while (actualLines[0][i] === expectedLines[0][i]) {\n          i++;\n        } // Ignore the first characters.\n\n\n        if (i > 2) {\n          // Add position indicator for the first mismatch in case it is a\n          // single line and the input length is less than the column length.\n          indicator = \"\\n  \".concat(repeat(' ', i), \"^\");\n          i = 0;\n        }\n      }\n    }\n  } // Remove all ending lines that match (this optimizes the output for\n  // readability by reducing the number of total changed lines).\n\n\n  var a = actualLines[actualLines.length - 1];\n  var b = expectedLines[expectedLines.length - 1];\n\n  while (a === b) {\n    if (i++ < 2) {\n      end = \"\\n  \".concat(a).concat(end);\n    } else {\n      other = a;\n    }\n\n    actualLines.pop();\n    expectedLines.pop();\n    if (actualLines.length === 0 || expectedLines.length === 0) break;\n    a = actualLines[actualLines.length - 1];\n    b = expectedLines[expectedLines.length - 1];\n  }\n\n  var maxLines = Math.max(actualLines.length, expectedLines.length); // Strict equal with identical objects that are not identical by reference.\n  // E.g., assert.deepStrictEqual({ a: Symbol() }, { a: Symbol() })\n\n  if (maxLines === 0) {\n    // We have to get the result again. The lines were all removed before.\n    var _actualLines = actualInspected.split('\\n'); // Only remove lines in case it makes sense to collapse those.\n    // TODO: Accept env to always show the full error.\n\n\n    if (_actualLines.length > 30) {\n      _actualLines[26] = \"\".concat(blue, \"...\").concat(white);\n\n      while (_actualLines.length > 27) {\n        _actualLines.pop();\n      }\n    }\n\n    return \"\".concat(kReadableOperator.notIdentical, \"\\n\\n\").concat(_actualLines.join('\\n'), \"\\n\");\n  }\n\n  if (i > 3) {\n    end = \"\\n\".concat(blue, \"...\").concat(white).concat(end);\n    skipped = true;\n  }\n\n  if (other !== '') {\n    end = \"\\n  \".concat(other).concat(end);\n    other = '';\n  }\n\n  var printedLines = 0;\n  var msg = kReadableOperator[operator] + \"\\n\".concat(green, \"+ actual\").concat(white, \" \").concat(red, \"- expected\").concat(white);\n  var skippedMsg = \" \".concat(blue, \"...\").concat(white, \" Lines skipped\");\n\n  for (i = 0; i < maxLines; i++) {\n    // Only extra expected lines exist\n    var cur = i - lastPos;\n\n    if (actualLines.length < i + 1) {\n      // If the last diverging line is more than one line above and the\n      // current line is at least line three, add some of the former lines and\n      // also add dots to indicate skipped entries.\n      if (cur > 1 && i > 2) {\n        if (cur > 4) {\n          res += \"\\n\".concat(blue, \"...\").concat(white);\n          skipped = true;\n        } else if (cur > 3) {\n          res += \"\\n  \".concat(expectedLines[i - 2]);\n          printedLines++;\n        }\n\n        res += \"\\n  \".concat(expectedLines[i - 1]);\n        printedLines++;\n      } // Mark the current line as the last diverging one.\n\n\n      lastPos = i; // Add the expected line to the cache.\n\n      other += \"\\n\".concat(red, \"-\").concat(white, \" \").concat(expectedLines[i]);\n      printedLines++; // Only extra actual lines exist\n    } else if (expectedLines.length < i + 1) {\n      // If the last diverging line is more than one line above and the\n      // current line is at least line three, add some of the former lines and\n      // also add dots to indicate skipped entries.\n      if (cur > 1 && i > 2) {\n        if (cur > 4) {\n          res += \"\\n\".concat(blue, \"...\").concat(white);\n          skipped = true;\n        } else if (cur > 3) {\n          res += \"\\n  \".concat(actualLines[i - 2]);\n          printedLines++;\n        }\n\n        res += \"\\n  \".concat(actualLines[i - 1]);\n        printedLines++;\n      } // Mark the current line as the last diverging one.\n\n\n      lastPos = i; // Add the actual line to the result.\n\n      res += \"\\n\".concat(green, \"+\").concat(white, \" \").concat(actualLines[i]);\n      printedLines++; // Lines diverge\n    } else {\n      var expectedLine = expectedLines[i];\n      var actualLine = actualLines[i]; // If the lines diverge, specifically check for lines that only diverge by\n      // a trailing comma. In that case it is actually identical and we should\n      // mark it as such.\n\n      var divergingLines = actualLine !== expectedLine && (!endsWith(actualLine, ',') || actualLine.slice(0, -1) !== expectedLine); // If the expected line has a trailing comma but is otherwise identical,\n      // add a comma at the end of the actual line. Otherwise the output could\n      // look weird as in:\n      //\n      //   [\n      //     1         // No comma at the end!\n      // +   2\n      //   ]\n      //\n\n      if (divergingLines && endsWith(expectedLine, ',') && expectedLine.slice(0, -1) === actualLine) {\n        divergingLines = false;\n        actualLine += ',';\n      }\n\n      if (divergingLines) {\n        // If the last diverging line is more than one line above and the\n        // current line is at least line three, add some of the former lines and\n        // also add dots to indicate skipped entries.\n        if (cur > 1 && i > 2) {\n          if (cur > 4) {\n            res += \"\\n\".concat(blue, \"...\").concat(white);\n            skipped = true;\n          } else if (cur > 3) {\n            res += \"\\n  \".concat(actualLines[i - 2]);\n            printedLines++;\n          }\n\n          res += \"\\n  \".concat(actualLines[i - 1]);\n          printedLines++;\n        } // Mark the current line as the last diverging one.\n\n\n        lastPos = i; // Add the actual line to the result and cache the expected diverging\n        // line so consecutive diverging lines show up as +++--- and not +-+-+-.\n\n        res += \"\\n\".concat(green, \"+\").concat(white, \" \").concat(actualLine);\n        other += \"\\n\".concat(red, \"-\").concat(white, \" \").concat(expectedLine);\n        printedLines += 2; // Lines are identical\n      } else {\n        // Add all cached information to the result before adding other things\n        // and reset the cache.\n        res += other;\n        other = ''; // If the last diverging line is exactly one line above or if it is the\n        // very first line, add the line to the result.\n\n        if (cur === 1 || i === 0) {\n          res += \"\\n  \".concat(actualLine);\n          printedLines++;\n        }\n      }\n    } // Inspected object to big (Show ~20 rows max)\n\n\n    if (printedLines > 20 && i < maxLines - 2) {\n      return \"\".concat(msg).concat(skippedMsg, \"\\n\").concat(res, \"\\n\").concat(blue, \"...\").concat(white).concat(other, \"\\n\") + \"\".concat(blue, \"...\").concat(white);\n    }\n  }\n\n  return \"\".concat(msg).concat(skipped ? skippedMsg : '', \"\\n\").concat(res).concat(other).concat(end).concat(indicator);\n}\n\nvar AssertionError =\n/*#__PURE__*/\nfunction (_Error) {\n  _inherits(AssertionError, _Error);\n\n  function AssertionError(options) {\n    var _this;\n\n    _classCallCheck(this, AssertionError);\n\n    if (_typeof(options) !== 'object' || options === null) {\n      throw new ERR_INVALID_ARG_TYPE('options', 'Object', options);\n    }\n\n    var message = options.message,\n        operator = options.operator,\n        stackStartFn = options.stackStartFn;\n    var actual = options.actual,\n        expected = options.expected;\n    var limit = Error.stackTraceLimit;\n    Error.stackTraceLimit = 0;\n\n    if (message != null) {\n      _this = _possibleConstructorReturn(this, _getPrototypeOf(AssertionError).call(this, String(message)));\n    } else {\n      if (process.stderr && process.stderr.isTTY) {\n        // Reset on each call to make sure we handle dynamically set environment\n        // variables correct.\n        if (process.stderr && process.stderr.getColorDepth && process.stderr.getColorDepth() !== 1) {\n          blue = \"\\x1B[34m\";\n          green = \"\\x1B[32m\";\n          white = \"\\x1B[39m\";\n          red = \"\\x1B[31m\";\n        } else {\n          blue = '';\n          green = '';\n          white = '';\n          red = '';\n        }\n      } // Prevent the error stack from being visible by duplicating the error\n      // in a very close way to the original in case both sides are actually\n      // instances of Error.\n\n\n      if (_typeof(actual) === 'object' && actual !== null && _typeof(expected) === 'object' && expected !== null && 'stack' in actual && actual instanceof Error && 'stack' in expected && expected instanceof Error) {\n        actual = copyError(actual);\n        expected = copyError(expected);\n      }\n\n      if (operator === 'deepStrictEqual' || operator === 'strictEqual') {\n        _this = _possibleConstructorReturn(this, _getPrototypeOf(AssertionError).call(this, createErrDiff(actual, expected, operator)));\n      } else if (operator === 'notDeepStrictEqual' || operator === 'notStrictEqual') {\n        // In case the objects are equal but the operator requires unequal, show\n        // the first object and say A equals B\n        var base = kReadableOperator[operator];\n        var res = inspectValue(actual).split('\\n'); // In case \"actual\" is an object, it should not be reference equal.\n\n        if (operator === 'notStrictEqual' && _typeof(actual) === 'object' && actual !== null) {\n          base = kReadableOperator.notStrictEqualObject;\n        } // Only remove lines in case it makes sense to collapse those.\n        // TODO: Accept env to always show the full error.\n\n\n        if (res.length > 30) {\n          res[26] = \"\".concat(blue, \"...\").concat(white);\n\n          while (res.length > 27) {\n            res.pop();\n          }\n        } // Only print a single input.\n\n\n        if (res.length === 1) {\n          _this = _possibleConstructorReturn(this, _getPrototypeOf(AssertionError).call(this, \"\".concat(base, \" \").concat(res[0])));\n        } else {\n          _this = _possibleConstructorReturn(this, _getPrototypeOf(AssertionError).call(this, \"\".concat(base, \"\\n\\n\").concat(res.join('\\n'), \"\\n\")));\n        }\n      } else {\n        var _res = inspectValue(actual);\n\n        var other = '';\n        var knownOperators = kReadableOperator[operator];\n\n        if (operator === 'notDeepEqual' || operator === 'notEqual') {\n          _res = \"\".concat(kReadableOperator[operator], \"\\n\\n\").concat(_res);\n\n          if (_res.length > 1024) {\n            _res = \"\".concat(_res.slice(0, 1021), \"...\");\n          }\n        } else {\n          other = \"\".concat(inspectValue(expected));\n\n          if (_res.length > 512) {\n            _res = \"\".concat(_res.slice(0, 509), \"...\");\n          }\n\n          if (other.length > 512) {\n            other = \"\".concat(other.slice(0, 509), \"...\");\n          }\n\n          if (operator === 'deepEqual' || operator === 'equal') {\n            _res = \"\".concat(knownOperators, \"\\n\\n\").concat(_res, \"\\n\\nshould equal\\n\\n\");\n          } else {\n            other = \" \".concat(operator, \" \").concat(other);\n          }\n        }\n\n        _this = _possibleConstructorReturn(this, _getPrototypeOf(AssertionError).call(this, \"\".concat(_res).concat(other)));\n      }\n    }\n\n    Error.stackTraceLimit = limit;\n    _this.generatedMessage = !message;\n    Object.defineProperty(_assertThisInitialized(_this), 'name', {\n      value: 'AssertionError [ERR_ASSERTION]',\n      enumerable: false,\n      writable: true,\n      configurable: true\n    });\n    _this.code = 'ERR_ASSERTION';\n    _this.actual = actual;\n    _this.expected = expected;\n    _this.operator = operator;\n\n    if (Error.captureStackTrace) {\n      // eslint-disable-next-line no-restricted-syntax\n      Error.captureStackTrace(_assertThisInitialized(_this), stackStartFn);\n    } // Create error message including the error code in the name.\n\n\n    _this.stack; // Reset the name.\n\n    _this.name = 'AssertionError';\n    return _possibleConstructorReturn(_this);\n  }\n\n  _createClass(AssertionError, [{\n    key: \"toString\",\n    value: function toString() {\n      return \"\".concat(this.name, \" [\").concat(this.code, \"]: \").concat(this.message);\n    }\n  }, {\n    key: inspect.custom,\n    value: function value(recurseTimes, ctx) {\n      // This limits the `actual` and `expected` property default inspection to\n      // the minimum depth. Otherwise those values would be too verbose compared\n      // to the actual error message which contains a combined view of these two\n      // input values.\n      return inspect(this, _objectSpread({}, ctx, {\n        customInspect: false,\n        depth: 0\n      }));\n    }\n  }]);\n\n  return AssertionError;\n}(_wrapNativeSuper(Error));\n\nmodule.exports = AssertionError;", "// Currently in sync with Node.js lib/internal/errors.js\n// https://github.com/nodejs/node/commit/3b044962c48fe313905877a96b5d0894a5404f6f\n\n/* eslint node-core/documented-errors: \"error\" */\n\n/* eslint node-core/alphabetize-errors: \"error\" */\n\n/* eslint node-core/prefer-util-format-errors: \"error\" */\n'use strict'; // The whole point behind this internal module is to allow Node.js to no\n// longer be forced to treat every error message change as a semver-major\n// change. The NodeError classes here all expose a `code` property whose\n// value statically and permanently identifies the error. While the error\n// message may change, the code should not.\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar codes = {}; // Lazy loaded\n\nvar assert;\nvar util;\n\nfunction createErrorType(code, message, Base) {\n  if (!Base) {\n    Base = Error;\n  }\n\n  function getMessage(arg1, arg2, arg3) {\n    if (typeof message === 'string') {\n      return message;\n    } else {\n      return message(arg1, arg2, arg3);\n    }\n  }\n\n  var NodeError =\n  /*#__PURE__*/\n  function (_Base) {\n    _inherits(NodeError, _Base);\n\n    function NodeError(arg1, arg2, arg3) {\n      var _this;\n\n      _classCallCheck(this, NodeError);\n\n      _this = _possibleConstructorReturn(this, _getPrototypeOf(NodeError).call(this, getMessage(arg1, arg2, arg3)));\n      _this.code = code;\n      return _this;\n    }\n\n    return NodeError;\n  }(Base);\n\n  codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n  if (Array.isArray(expected)) {\n    var len = expected.length;\n    expected = expected.map(function (i) {\n      return String(i);\n    });\n\n    if (len > 2) {\n      return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n    } else if (len === 2) {\n      return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n    } else {\n      return \"of \".concat(thing, \" \").concat(expected[0]);\n    }\n  } else {\n    return \"of \".concat(thing, \" \").concat(String(expected));\n  }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n  return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n  if (this_len === undefined || this_len > str.length) {\n    this_len = str.length;\n  }\n\n  return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n  if (typeof start !== 'number') {\n    start = 0;\n  }\n\n  if (start + search.length > str.length) {\n    return false;\n  } else {\n    return str.indexOf(search, start) !== -1;\n  }\n}\n\ncreateErrorType('ERR_AMBIGUOUS_ARGUMENT', 'The \"%s\" argument is ambiguous. %s', TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n  if (assert === undefined) assert = require('../assert');\n  assert(typeof name === 'string', \"'name' must be a string\"); // determiner: 'must be' or 'must not be'\n\n  var determiner;\n\n  if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n    determiner = 'must not be';\n    expected = expected.replace(/^not /, '');\n  } else {\n    determiner = 'must be';\n  }\n\n  var msg;\n\n  if (endsWith(name, ' argument')) {\n    // For cases like 'first argument'\n    msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n  } else {\n    var type = includes(name, '.') ? 'property' : 'argument';\n    msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n  } // TODO(BridgeAR): Improve the output by showing `null` and similar.\n\n\n  msg += \". Received type \".concat(_typeof(actual));\n  return msg;\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_VALUE', function (name, value) {\n  var reason = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'is invalid';\n  if (util === undefined) util = require('util/');\n  var inspected = util.inspect(value);\n\n  if (inspected.length > 128) {\n    inspected = \"\".concat(inspected.slice(0, 128), \"...\");\n  }\n\n  return \"The argument '\".concat(name, \"' \").concat(reason, \". Received \").concat(inspected);\n}, TypeError, RangeError);\ncreateErrorType('ERR_INVALID_RETURN_VALUE', function (input, name, value) {\n  var type;\n\n  if (value && value.constructor && value.constructor.name) {\n    type = \"instance of \".concat(value.constructor.name);\n  } else {\n    type = \"type \".concat(_typeof(value));\n  }\n\n  return \"Expected \".concat(input, \" to be returned from the \\\"\").concat(name, \"\\\"\") + \" function but got \".concat(type, \".\");\n}, TypeError);\ncreateErrorType('ERR_MISSING_ARGS', function () {\n  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n\n  if (assert === undefined) assert = require('../assert');\n  assert(args.length > 0, 'At least one arg needs to be specified');\n  var msg = 'The ';\n  var len = args.length;\n  args = args.map(function (a) {\n    return \"\\\"\".concat(a, \"\\\"\");\n  });\n\n  switch (len) {\n    case 1:\n      msg += \"\".concat(args[0], \" argument\");\n      break;\n\n    case 2:\n      msg += \"\".concat(args[0], \" and \").concat(args[1], \" arguments\");\n      break;\n\n    default:\n      msg += args.slice(0, len - 1).join(', ');\n      msg += \", and \".concat(args[len - 1], \" arguments\");\n      break;\n  }\n\n  return \"\".concat(msg, \" must be specified\");\n}, TypeError);\nmodule.exports.codes = codes;", "// Currently in sync with Node.js lib/internal/util/comparisons.js\n// https://github.com/nodejs/node/commit/112cc7c27551254aa2b17098fb774867f05ed0d9\n'use strict';\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar regexFlagsSupported = /a/g.flags !== undefined;\n\nvar arrayFromSet = function arrayFromSet(set) {\n  var array = [];\n  set.forEach(function (value) {\n    return array.push(value);\n  });\n  return array;\n};\n\nvar arrayFromMap = function arrayFromMap(map) {\n  var array = [];\n  map.forEach(function (value, key) {\n    return array.push([key, value]);\n  });\n  return array;\n};\n\nvar objectIs = Object.is ? Object.is : require('object-is');\nvar objectGetOwnPropertySymbols = Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols : function () {\n  return [];\n};\nvar numberIsNaN = Number.isNaN ? Number.isNaN : require('is-nan');\n\nfunction uncurryThis(f) {\n  return f.call.bind(f);\n}\n\nvar hasOwnProperty = uncurryThis(Object.prototype.hasOwnProperty);\nvar propertyIsEnumerable = uncurryThis(Object.prototype.propertyIsEnumerable);\nvar objectToString = uncurryThis(Object.prototype.toString);\n\nvar _require$types = require('util/').types,\n    isAnyArrayBuffer = _require$types.isAnyArrayBuffer,\n    isArrayBufferView = _require$types.isArrayBufferView,\n    isDate = _require$types.isDate,\n    isMap = _require$types.isMap,\n    isRegExp = _require$types.isRegExp,\n    isSet = _require$types.isSet,\n    isNativeError = _require$types.isNativeError,\n    isBoxedPrimitive = _require$types.isBoxedPrimitive,\n    isNumberObject = _require$types.isNumberObject,\n    isStringObject = _require$types.isStringObject,\n    isBooleanObject = _require$types.isBooleanObject,\n    isBigIntObject = _require$types.isBigIntObject,\n    isSymbolObject = _require$types.isSymbolObject,\n    isFloat32Array = _require$types.isFloat32Array,\n    isFloat64Array = _require$types.isFloat64Array;\n\nfunction isNonIndex(key) {\n  if (key.length === 0 || key.length > 10) return true;\n\n  for (var i = 0; i < key.length; i++) {\n    var code = key.charCodeAt(i);\n    if (code < 48 || code > 57) return true;\n  } // The maximum size for an array is 2 ** 32 -1.\n\n\n  return key.length === 10 && key >= Math.pow(2, 32);\n}\n\nfunction getOwnNonIndexProperties(value) {\n  return Object.keys(value).filter(isNonIndex).concat(objectGetOwnPropertySymbols(value).filter(Object.prototype.propertyIsEnumerable.bind(value)));\n} // Taken from https://github.com/feross/buffer/blob/680e9e5e488f22aac27599a57dc844a6315928dd/index.js\n// original notice:\n\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author   Feross Aboukhadijeh <feross@feross.org> <http://feross.org>\n * @license  MIT\n */\n\n\nfunction compare(a, b) {\n  if (a === b) {\n    return 0;\n  }\n\n  var x = a.length;\n  var y = b.length;\n\n  for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n    if (a[i] !== b[i]) {\n      x = a[i];\n      y = b[i];\n      break;\n    }\n  }\n\n  if (x < y) {\n    return -1;\n  }\n\n  if (y < x) {\n    return 1;\n  }\n\n  return 0;\n}\n\nvar ONLY_ENUMERABLE = undefined;\nvar kStrict = true;\nvar kLoose = false;\nvar kNoIterator = 0;\nvar kIsArray = 1;\nvar kIsSet = 2;\nvar kIsMap = 3; // Check if they have the same source and flags\n\nfunction areSimilarRegExps(a, b) {\n  return regexFlagsSupported ? a.source === b.source && a.flags === b.flags : RegExp.prototype.toString.call(a) === RegExp.prototype.toString.call(b);\n}\n\nfunction areSimilarFloatArrays(a, b) {\n  if (a.byteLength !== b.byteLength) {\n    return false;\n  }\n\n  for (var offset = 0; offset < a.byteLength; offset++) {\n    if (a[offset] !== b[offset]) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\nfunction areSimilarTypedArrays(a, b) {\n  if (a.byteLength !== b.byteLength) {\n    return false;\n  }\n\n  return compare(new Uint8Array(a.buffer, a.byteOffset, a.byteLength), new Uint8Array(b.buffer, b.byteOffset, b.byteLength)) === 0;\n}\n\nfunction areEqualArrayBuffers(buf1, buf2) {\n  return buf1.byteLength === buf2.byteLength && compare(new Uint8Array(buf1), new Uint8Array(buf2)) === 0;\n}\n\nfunction isEqualBoxedPrimitive(val1, val2) {\n  if (isNumberObject(val1)) {\n    return isNumberObject(val2) && objectIs(Number.prototype.valueOf.call(val1), Number.prototype.valueOf.call(val2));\n  }\n\n  if (isStringObject(val1)) {\n    return isStringObject(val2) && String.prototype.valueOf.call(val1) === String.prototype.valueOf.call(val2);\n  }\n\n  if (isBooleanObject(val1)) {\n    return isBooleanObject(val2) && Boolean.prototype.valueOf.call(val1) === Boolean.prototype.valueOf.call(val2);\n  }\n\n  if (isBigIntObject(val1)) {\n    return isBigIntObject(val2) && BigInt.prototype.valueOf.call(val1) === BigInt.prototype.valueOf.call(val2);\n  }\n\n  return isSymbolObject(val2) && Symbol.prototype.valueOf.call(val1) === Symbol.prototype.valueOf.call(val2);\n} // Notes: Type tags are historical [[Class]] properties that can be set by\n// FunctionTemplate::SetClassName() in C++ or Symbol.toStringTag in JS\n// and retrieved using Object.prototype.toString.call(obj) in JS\n// See https://tc39.github.io/ecma262/#sec-object.prototype.tostring\n// for a list of tags pre-defined in the spec.\n// There are some unspecified tags in the wild too (e.g. typed array tags).\n// Since tags can be altered, they only serve fast failures\n//\n// Typed arrays and buffers are checked by comparing the content in their\n// underlying ArrayBuffer. This optimization requires that it's\n// reasonable to interpret their underlying memory in the same way,\n// which is checked by comparing their type tags.\n// (e.g. a Uint8Array and a Uint16Array with the same memory content\n// could still be different because they will be interpreted differently).\n//\n// For strict comparison, objects should have\n// a) The same built-in type tags\n// b) The same prototypes.\n\n\nfunction innerDeepEqual(val1, val2, strict, memos) {\n  // All identical values are equivalent, as determined by ===.\n  if (val1 === val2) {\n    if (val1 !== 0) return true;\n    return strict ? objectIs(val1, val2) : true;\n  } // Check more closely if val1 and val2 are equal.\n\n\n  if (strict) {\n    if (_typeof(val1) !== 'object') {\n      return typeof val1 === 'number' && numberIsNaN(val1) && numberIsNaN(val2);\n    }\n\n    if (_typeof(val2) !== 'object' || val1 === null || val2 === null) {\n      return false;\n    }\n\n    if (Object.getPrototypeOf(val1) !== Object.getPrototypeOf(val2)) {\n      return false;\n    }\n  } else {\n    if (val1 === null || _typeof(val1) !== 'object') {\n      if (val2 === null || _typeof(val2) !== 'object') {\n        // eslint-disable-next-line eqeqeq\n        return val1 == val2;\n      }\n\n      return false;\n    }\n\n    if (val2 === null || _typeof(val2) !== 'object') {\n      return false;\n    }\n  }\n\n  var val1Tag = objectToString(val1);\n  var val2Tag = objectToString(val2);\n\n  if (val1Tag !== val2Tag) {\n    return false;\n  }\n\n  if (Array.isArray(val1)) {\n    // Check for sparse arrays and general fast path\n    if (val1.length !== val2.length) {\n      return false;\n    }\n\n    var keys1 = getOwnNonIndexProperties(val1, ONLY_ENUMERABLE);\n    var keys2 = getOwnNonIndexProperties(val2, ONLY_ENUMERABLE);\n\n    if (keys1.length !== keys2.length) {\n      return false;\n    }\n\n    return keyCheck(val1, val2, strict, memos, kIsArray, keys1);\n  } // [browserify] This triggers on certain types in IE (Map/Set) so we don't\n  // wan't to early return out of the rest of the checks. However we can check\n  // if the second value is one of these values and the first isn't.\n\n\n  if (val1Tag === '[object Object]') {\n    // return keyCheck(val1, val2, strict, memos, kNoIterator);\n    if (!isMap(val1) && isMap(val2) || !isSet(val1) && isSet(val2)) {\n      return false;\n    }\n  }\n\n  if (isDate(val1)) {\n    if (!isDate(val2) || Date.prototype.getTime.call(val1) !== Date.prototype.getTime.call(val2)) {\n      return false;\n    }\n  } else if (isRegExp(val1)) {\n    if (!isRegExp(val2) || !areSimilarRegExps(val1, val2)) {\n      return false;\n    }\n  } else if (isNativeError(val1) || val1 instanceof Error) {\n    // Do not compare the stack as it might differ even though the error itself\n    // is otherwise identical.\n    if (val1.message !== val2.message || val1.name !== val2.name) {\n      return false;\n    }\n  } else if (isArrayBufferView(val1)) {\n    if (!strict && (isFloat32Array(val1) || isFloat64Array(val1))) {\n      if (!areSimilarFloatArrays(val1, val2)) {\n        return false;\n      }\n    } else if (!areSimilarTypedArrays(val1, val2)) {\n      return false;\n    } // Buffer.compare returns true, so val1.length === val2.length. If they both\n    // only contain numeric keys, we don't need to exam further than checking\n    // the symbols.\n\n\n    var _keys = getOwnNonIndexProperties(val1, ONLY_ENUMERABLE);\n\n    var _keys2 = getOwnNonIndexProperties(val2, ONLY_ENUMERABLE);\n\n    if (_keys.length !== _keys2.length) {\n      return false;\n    }\n\n    return keyCheck(val1, val2, strict, memos, kNoIterator, _keys);\n  } else if (isSet(val1)) {\n    if (!isSet(val2) || val1.size !== val2.size) {\n      return false;\n    }\n\n    return keyCheck(val1, val2, strict, memos, kIsSet);\n  } else if (isMap(val1)) {\n    if (!isMap(val2) || val1.size !== val2.size) {\n      return false;\n    }\n\n    return keyCheck(val1, val2, strict, memos, kIsMap);\n  } else if (isAnyArrayBuffer(val1)) {\n    if (!areEqualArrayBuffers(val1, val2)) {\n      return false;\n    }\n  } else if (isBoxedPrimitive(val1) && !isEqualBoxedPrimitive(val1, val2)) {\n    return false;\n  }\n\n  return keyCheck(val1, val2, strict, memos, kNoIterator);\n}\n\nfunction getEnumerables(val, keys) {\n  return keys.filter(function (k) {\n    return propertyIsEnumerable(val, k);\n  });\n}\n\nfunction keyCheck(val1, val2, strict, memos, iterationType, aKeys) {\n  // For all remaining Object pairs, including Array, objects and Maps,\n  // equivalence is determined by having:\n  // a) The same number of owned enumerable properties\n  // b) The same set of keys/indexes (although not necessarily the same order)\n  // c) Equivalent values for every corresponding key/index\n  // d) For Sets and Maps, equal contents\n  // Note: this accounts for both named and indexed properties on Arrays.\n  if (arguments.length === 5) {\n    aKeys = Object.keys(val1);\n    var bKeys = Object.keys(val2); // The pair must have the same number of owned properties.\n\n    if (aKeys.length !== bKeys.length) {\n      return false;\n    }\n  } // Cheap key test\n\n\n  var i = 0;\n\n  for (; i < aKeys.length; i++) {\n    if (!hasOwnProperty(val2, aKeys[i])) {\n      return false;\n    }\n  }\n\n  if (strict && arguments.length === 5) {\n    var symbolKeysA = objectGetOwnPropertySymbols(val1);\n\n    if (symbolKeysA.length !== 0) {\n      var count = 0;\n\n      for (i = 0; i < symbolKeysA.length; i++) {\n        var key = symbolKeysA[i];\n\n        if (propertyIsEnumerable(val1, key)) {\n          if (!propertyIsEnumerable(val2, key)) {\n            return false;\n          }\n\n          aKeys.push(key);\n          count++;\n        } else if (propertyIsEnumerable(val2, key)) {\n          return false;\n        }\n      }\n\n      var symbolKeysB = objectGetOwnPropertySymbols(val2);\n\n      if (symbolKeysA.length !== symbolKeysB.length && getEnumerables(val2, symbolKeysB).length !== count) {\n        return false;\n      }\n    } else {\n      var _symbolKeysB = objectGetOwnPropertySymbols(val2);\n\n      if (_symbolKeysB.length !== 0 && getEnumerables(val2, _symbolKeysB).length !== 0) {\n        return false;\n      }\n    }\n  }\n\n  if (aKeys.length === 0 && (iterationType === kNoIterator || iterationType === kIsArray && val1.length === 0 || val1.size === 0)) {\n    return true;\n  } // Use memos to handle cycles.\n\n\n  if (memos === undefined) {\n    memos = {\n      val1: new Map(),\n      val2: new Map(),\n      position: 0\n    };\n  } else {\n    // We prevent up to two map.has(x) calls by directly retrieving the value\n    // and checking for undefined. The map can only contain numbers, so it is\n    // safe to check for undefined only.\n    var val2MemoA = memos.val1.get(val1);\n\n    if (val2MemoA !== undefined) {\n      var val2MemoB = memos.val2.get(val2);\n\n      if (val2MemoB !== undefined) {\n        return val2MemoA === val2MemoB;\n      }\n    }\n\n    memos.position++;\n  }\n\n  memos.val1.set(val1, memos.position);\n  memos.val2.set(val2, memos.position);\n  var areEq = objEquiv(val1, val2, strict, aKeys, memos, iterationType);\n  memos.val1.delete(val1);\n  memos.val2.delete(val2);\n  return areEq;\n}\n\nfunction setHasEqualElement(set, val1, strict, memo) {\n  // Go looking.\n  var setValues = arrayFromSet(set);\n\n  for (var i = 0; i < setValues.length; i++) {\n    var val2 = setValues[i];\n\n    if (innerDeepEqual(val1, val2, strict, memo)) {\n      // Remove the matching element to make sure we do not check that again.\n      set.delete(val2);\n      return true;\n    }\n  }\n\n  return false;\n} // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Equality_comparisons_and_sameness#Loose_equality_using\n// Sadly it is not possible to detect corresponding values properly in case the\n// type is a string, number, bigint or boolean. The reason is that those values\n// can match lots of different string values (e.g., 1n == '+00001').\n\n\nfunction findLooseMatchingPrimitives(prim) {\n  switch (_typeof(prim)) {\n    case 'undefined':\n      return null;\n\n    case 'object':\n      // Only pass in null as object!\n      return undefined;\n\n    case 'symbol':\n      return false;\n\n    case 'string':\n      prim = +prim;\n    // Loose equal entries exist only if the string is possible to convert to\n    // a regular number and not NaN.\n    // Fall through\n\n    case 'number':\n      if (numberIsNaN(prim)) {\n        return false;\n      }\n\n  }\n\n  return true;\n}\n\nfunction setMightHaveLoosePrim(a, b, prim) {\n  var altValue = findLooseMatchingPrimitives(prim);\n  if (altValue != null) return altValue;\n  return b.has(altValue) && !a.has(altValue);\n}\n\nfunction mapMightHaveLoosePrim(a, b, prim, item, memo) {\n  var altValue = findLooseMatchingPrimitives(prim);\n\n  if (altValue != null) {\n    return altValue;\n  }\n\n  var curB = b.get(altValue);\n\n  if (curB === undefined && !b.has(altValue) || !innerDeepEqual(item, curB, false, memo)) {\n    return false;\n  }\n\n  return !a.has(altValue) && innerDeepEqual(item, curB, false, memo);\n}\n\nfunction setEquiv(a, b, strict, memo) {\n  // This is a lazily initiated Set of entries which have to be compared\n  // pairwise.\n  var set = null;\n  var aValues = arrayFromSet(a);\n\n  for (var i = 0; i < aValues.length; i++) {\n    var val = aValues[i]; // Note: Checking for the objects first improves the performance for object\n    // heavy sets but it is a minor slow down for primitives. As they are fast\n    // to check this improves the worst case scenario instead.\n\n    if (_typeof(val) === 'object' && val !== null) {\n      if (set === null) {\n        set = new Set();\n      } // If the specified value doesn't exist in the second set its an not null\n      // object (or non strict only: a not matching primitive) we'll need to go\n      // hunting for something thats deep-(strict-)equal to it. To make this\n      // O(n log n) complexity we have to copy these values in a new set first.\n\n\n      set.add(val);\n    } else if (!b.has(val)) {\n      if (strict) return false; // Fast path to detect missing string, symbol, undefined and null values.\n\n      if (!setMightHaveLoosePrim(a, b, val)) {\n        return false;\n      }\n\n      if (set === null) {\n        set = new Set();\n      }\n\n      set.add(val);\n    }\n  }\n\n  if (set !== null) {\n    var bValues = arrayFromSet(b);\n\n    for (var _i = 0; _i < bValues.length; _i++) {\n      var _val = bValues[_i]; // We have to check if a primitive value is already\n      // matching and only if it's not, go hunting for it.\n\n      if (_typeof(_val) === 'object' && _val !== null) {\n        if (!setHasEqualElement(set, _val, strict, memo)) return false;\n      } else if (!strict && !a.has(_val) && !setHasEqualElement(set, _val, strict, memo)) {\n        return false;\n      }\n    }\n\n    return set.size === 0;\n  }\n\n  return true;\n}\n\nfunction mapHasEqualEntry(set, map, key1, item1, strict, memo) {\n  // To be able to handle cases like:\n  //   Map([[{}, 'a'], [{}, 'b']]) vs Map([[{}, 'b'], [{}, 'a']])\n  // ... we need to consider *all* matching keys, not just the first we find.\n  var setValues = arrayFromSet(set);\n\n  for (var i = 0; i < setValues.length; i++) {\n    var key2 = setValues[i];\n\n    if (innerDeepEqual(key1, key2, strict, memo) && innerDeepEqual(item1, map.get(key2), strict, memo)) {\n      set.delete(key2);\n      return true;\n    }\n  }\n\n  return false;\n}\n\nfunction mapEquiv(a, b, strict, memo) {\n  var set = null;\n  var aEntries = arrayFromMap(a);\n\n  for (var i = 0; i < aEntries.length; i++) {\n    var _aEntries$i = _slicedToArray(aEntries[i], 2),\n        key = _aEntries$i[0],\n        item1 = _aEntries$i[1];\n\n    if (_typeof(key) === 'object' && key !== null) {\n      if (set === null) {\n        set = new Set();\n      }\n\n      set.add(key);\n    } else {\n      // By directly retrieving the value we prevent another b.has(key) check in\n      // almost all possible cases.\n      var item2 = b.get(key);\n\n      if (item2 === undefined && !b.has(key) || !innerDeepEqual(item1, item2, strict, memo)) {\n        if (strict) return false; // Fast path to detect missing string, symbol, undefined and null\n        // keys.\n\n        if (!mapMightHaveLoosePrim(a, b, key, item1, memo)) return false;\n\n        if (set === null) {\n          set = new Set();\n        }\n\n        set.add(key);\n      }\n    }\n  }\n\n  if (set !== null) {\n    var bEntries = arrayFromMap(b);\n\n    for (var _i2 = 0; _i2 < bEntries.length; _i2++) {\n      var _bEntries$_i = _slicedToArray(bEntries[_i2], 2),\n          key = _bEntries$_i[0],\n          item = _bEntries$_i[1];\n\n      if (_typeof(key) === 'object' && key !== null) {\n        if (!mapHasEqualEntry(set, a, key, item, strict, memo)) return false;\n      } else if (!strict && (!a.has(key) || !innerDeepEqual(a.get(key), item, false, memo)) && !mapHasEqualEntry(set, a, key, item, false, memo)) {\n        return false;\n      }\n    }\n\n    return set.size === 0;\n  }\n\n  return true;\n}\n\nfunction objEquiv(a, b, strict, keys, memos, iterationType) {\n  // Sets and maps don't have their entries accessible via normal object\n  // properties.\n  var i = 0;\n\n  if (iterationType === kIsSet) {\n    if (!setEquiv(a, b, strict, memos)) {\n      return false;\n    }\n  } else if (iterationType === kIsMap) {\n    if (!mapEquiv(a, b, strict, memos)) {\n      return false;\n    }\n  } else if (iterationType === kIsArray) {\n    for (; i < a.length; i++) {\n      if (hasOwnProperty(a, i)) {\n        if (!hasOwnProperty(b, i) || !innerDeepEqual(a[i], b[i], strict, memos)) {\n          return false;\n        }\n      } else if (hasOwnProperty(b, i)) {\n        return false;\n      } else {\n        // Array is sparse.\n        var keysA = Object.keys(a);\n\n        for (; i < keysA.length; i++) {\n          var key = keysA[i];\n\n          if (!hasOwnProperty(b, key) || !innerDeepEqual(a[key], b[key], strict, memos)) {\n            return false;\n          }\n        }\n\n        if (keysA.length !== Object.keys(b).length) {\n          return false;\n        }\n\n        return true;\n      }\n    }\n  } // The pair must have equivalent values for every corresponding key.\n  // Possibly expensive deep test:\n\n\n  for (i = 0; i < keys.length; i++) {\n    var _key = keys[i];\n\n    if (!innerDeepEqual(a[_key], b[_key], strict, memos)) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\nfunction isDeepEqual(val1, val2) {\n  return innerDeepEqual(val1, val2, kLoose);\n}\n\nfunction isDeepStrictEqual(val1, val2) {\n  return innerDeepEqual(val1, val2, kStrict);\n}\n\nmodule.exports = {\n  isDeepEqual: isDeepEqual,\n  isDeepStrictEqual: isDeepStrictEqual\n};", "// The following break classes are handled by the pair table\r\nexports.OP = 0;   // Opening punctuation\r\nexports.CL = 1;   // Closing punctuation\r\nexports.CP = 2;   // Closing parenthesis\r\nexports.QU = 3;   // Ambiguous quotation\r\nexports.GL = 4;   // Glue\r\nexports.NS = 5;   // Non-starters\r\nexports.EX = 6;   // Exclamation/Interrogation\r\nexports.SY = 7;   // Symbols allowing break after\r\nexports.IS = 8;   // Infix separator\r\nexports.PR = 9;   // Prefix\r\nexports.PO = 10;  // Postfix\r\nexports.NU = 11;  // Numeric\r\nexports.AL = 12;  // Alphabetic\r\nexports.HL = 13;  // Hebrew Letter\r\nexports.ID = 14;  // Ideographic\r\nexports.IN = 15;  // Inseparable characters\r\nexports.HY = 16;  // Hyphen\r\nexports.BA = 17;  // Break after\r\nexports.BB = 18;  // Break before\r\nexports.B2 = 19;  // Break on either side (but not pair)\r\nexports.ZW = 20;  // Zero-width space\r\nexports.CM = 21;  // Combining marks\r\nexports.WJ = 22;  // Word joiner\r\nexports.H2 = 23;  // Hangul LV\r\nexports.H3 = 24;  // Hangul LVT\r\nexports.JL = 25;  // Hangul L Jamo\r\nexports.JV = 26;  // Hangul V Jamo\r\nexports.JT = 27;  // Hangul T Jamo\r\nexports.RI = 28;  // Regional Indicator\r\nexports.EB = 29;  // Emoji Base\r\nexports.EM = 30;  // Emoji Modifier\r\nexports.ZWJ = 31; // Zero Width Joiner\r\nexports.CB = 32;  // Contingent break\r\n\r\n// The following break classes are not handled by the pair table\r\nexports.AI = 33;  // Ambiguous (Alphabetic or Ideograph)\r\nexports.BK = 34;  // Break (mandatory)\r\nexports.CJ = 35;  // Conditional Japanese Starter\r\nexports.CR = 36;  // Carriage return\r\nexports.LF = 37;  // Line feed\r\nexports.NL = 38;  // Next line\r\nexports.SA = 39;  // South-East Asian\r\nexports.SG = 40;  // Surrogates\r\nexports.SP = 41;  // Space\r\nexports.XX = 42;  // Unknown\r\n", "let CI_BRK, CP_BRK, DI_BRK, IN_BRK, PR_BRK;\r\nexports.DI_BRK = (DI_BRK = 0); // Direct break opportunity\r\nexports.IN_BRK = (IN_BRK = 1); // Indirect break opportunity\r\nexports.CI_BRK = (CI_BRK = 2); // Indirect break opportunity for combining marks\r\nexports.CP_BRK = (CP_BRK = 3); // Prohibited break for combining marks\r\nexports.PR_BRK = (PR_BRK = 4); // Prohibited break\r\n\r\n// Based on example pair table from https://www.unicode.org/reports/tr14/tr14-37.html#Table2\r\n// - ZWJ special processing for LB8a of Revision 41\r\n// - CB manually added as per Rule LB20\r\n// - CL, CP, NS, SY, IS, PR, PO, HY, BA, B2 and RI manually adjusted as per LB22 of Revision 45\r\nexports.pairTable = [\r\n  //OP   , CL    , CP    , QU    , GL    , NS    , EX    , SY    , IS    , PR    , PO    , NU    , AL    , HL    , ID    , IN    , HY    , BA    , BB    , B2    , ZW    , CM    , WJ    , H2    , H3    , JL    , JV    , JT    , RI    , EB    , EM    , ZWJ   , CB\r\n  [PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, CP_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK], // OP\r\n  [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // CL\r\n  [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // CP\r\n  [PR_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, CI_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK], // QU\r\n  [IN_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, CI_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK], // GL\r\n  [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // NS\r\n  [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // EX\r\n  [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK, IN_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // SY\r\n  [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // IS\r\n  [IN_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK], // PR\r\n  [IN_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // PO\r\n  [IN_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // NU\r\n  [IN_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // AL\r\n  [IN_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // HL\r\n  [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // ID\r\n  [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // IN\r\n  [DI_BRK, PR_BRK, PR_BRK, IN_BRK, DI_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // HY\r\n  [DI_BRK, PR_BRK, PR_BRK, IN_BRK, DI_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // BA\r\n  [IN_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, CI_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK], // BB\r\n  [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, PR_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // B2\r\n  [DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK], // ZW\r\n  [IN_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // CM\r\n  [IN_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, CI_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK], // WJ\r\n  [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // H2\r\n  [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // H3\r\n  [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // JL\r\n  [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // JV\r\n  [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // JT\r\n  [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // RI\r\n  [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, DI_BRK], // EB\r\n  [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // EM\r\n  [IN_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // ZWJ\r\n  [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, DI_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK]  // CB\r\n];", "exports.EncodeStream    = require('./src/EncodeStream');\r\nexports.DecodeStream    = require('./src/DecodeStream');\r\nexports.Array           = require('./src/Array');\r\nexports.LazyArray       = require('./src/LazyArray');\r\nexports.Bitfield        = require('./src/Bitfield');\r\nexports.Boolean         = require('./src/Boolean');\r\nexports.Buffer          = require('./src/Buffer');\r\nexports.Enum            = require('./src/Enum');\r\nexports.Optional        = require('./src/Optional');\r\nexports.Reserved        = require('./src/Reserved');\r\nexports.String          = require('./src/String');\r\nexports.Struct          = require('./src/Struct');\r\nexports.VersionedStruct = require('./src/VersionedStruct');\r\n\r\nconst utils             = require('./src/utils');\r\nconst NumberT           = require('./src/Number');\r\nconst Pointer           = require('./src/Pointer');\r\n\r\nObject.assign(exports, utils, NumberT, Pointer);\r\n", "const {Number:NumberT} = require('./Number');\r\nconst utils = require('./utils');\r\n\r\nclass ArrayT {\r\n  constructor(type, length, lengthType = 'count') {\r\n    this.type = type;\r\n    this.length = length;\r\n    this.lengthType = lengthType;\r\n  }\r\n\r\n  decode(stream, parent) {\r\n    let length;\r\n    const { pos } = stream;\r\n\r\n    const res = [];\r\n    let ctx = parent;\r\n\r\n    if (this.length != null) {\r\n      length = utils.resolveLength(this.length, stream, parent);\r\n    }\r\n\r\n    if (this.length instanceof NumberT) {\r\n      // define hidden properties\r\n      Object.defineProperties(res, {\r\n        parent:         { value: parent },\r\n        _startOffset:   { value: pos },\r\n        _currentOffset: { value: 0, writable: true },\r\n        _length:        { value: length }\r\n      });\r\n\r\n      ctx = res;\r\n    }\r\n\r\n    if ((length == null) || (this.lengthType === 'bytes')) {\r\n      const target = (length != null) ?\r\n        stream.pos + length\r\n      : (parent != null ? parent._length : undefined) ?\r\n        parent._startOffset + parent._length\r\n      :\r\n        stream.length;\r\n\r\n      while (stream.pos < target) {\r\n        res.push(this.type.decode(stream, ctx));\r\n      }\r\n\r\n    } else {\r\n      for (let i = 0, end = length; i < end; i++) {\r\n        res.push(this.type.decode(stream, ctx));\r\n      }\r\n    }\r\n\r\n    return res;\r\n  }\r\n\r\n  size(array, ctx) {\r\n    if (!array) {\r\n      return this.type.size(null, ctx) * utils.resolveLength(this.length, null, ctx);\r\n    }\r\n\r\n    let size = 0;\r\n    if (this.length instanceof NumberT) {\r\n      size += this.length.size();\r\n      ctx = {parent: ctx};\r\n    }\r\n\r\n    for (let item of array) {\r\n      size += this.type.size(item, ctx);\r\n    }\r\n\r\n    return size;\r\n  }\r\n\r\n  encode(stream, array, parent) {\r\n    let ctx = parent;\r\n    if (this.length instanceof NumberT) {\r\n      ctx = {\r\n        pointers: [],\r\n        startOffset: stream.pos,\r\n        parent\r\n      };\r\n\r\n      ctx.pointerOffset = stream.pos + this.size(array, ctx);\r\n      this.length.encode(stream, array.length);\r\n    }\r\n\r\n    for (let item of array) {\r\n      this.type.encode(stream, item, ctx);\r\n    }\r\n\r\n    if (this.length instanceof NumberT) {\r\n      let i = 0;\r\n      while (i < ctx.pointers.length) {\r\n        const ptr = ctx.pointers[i++];\r\n        ptr.type.encode(stream, ptr.val);\r\n      }\r\n    }\r\n\r\n  }\r\n}\r\n\r\nmodule.exports = ArrayT;\r\n", "class Bitfield {\r\n  constructor(type, flags = []) {\r\n    this.type = type;\r\n    this.flags = flags;\r\n  }\r\n  decode(stream) {\r\n    const val = this.type.decode(stream);\r\n\r\n    const res = {};\r\n    for (let i = 0; i < this.flags.length; i++) {\r\n      const flag = this.flags[i];\r\n      if (flag != null) {\r\n        res[flag] = !!(val & (1 << i));\r\n      }\r\n    }\r\n\r\n    return res;\r\n  }\r\n\r\n  size() {\r\n    return this.type.size();\r\n  }\r\n\r\n  encode(stream, keys) {\r\n    let val = 0;\r\n    for (let i = 0; i < this.flags.length; i++) {\r\n      const flag = this.flags[i];\r\n      if (flag != null) {\r\n        if (keys[flag]) { val |= (1 << i); }\r\n      }\r\n    }\r\n\r\n    return this.type.encode(stream, val);\r\n  }\r\n}\r\n\r\nmodule.exports = Bitfield;\r\n", "class BooleanT {\r\n  constructor(type) {\r\n    this.type = type;\r\n  }\r\n\r\n  decode(stream, parent) {\r\n    return !!this.type.decode(stream, parent);\r\n  }\r\n\r\n  size(val, parent) {\r\n    return this.type.size(val, parent);\r\n  }\r\n\r\n  encode(stream, val, parent) {\r\n    return this.type.encode(stream, +val, parent);\r\n  }\r\n}\r\n\r\nmodule.exports = BooleanT;\r\n", "const utils = require('./utils');\r\nconst {Number:NumberT} = require('./Number');\r\n\r\nclass BufferT {\r\n  constructor(length) {\r\n    this.length = length;\r\n  }\r\n  decode(stream, parent) {\r\n    const length = utils.resolveLength(this.length, stream, parent);\r\n    return stream.readBuffer(length);\r\n  }\r\n\r\n  size(val, parent) {\r\n    if (!val) {\r\n      return utils.resolveLength(this.length, null, parent);\r\n    }\r\n\r\n    return val.length;\r\n  }\r\n\r\n  encode(stream, buf, parent) {\r\n    if (this.length instanceof NumberT) {\r\n      this.length.encode(stream, buf.length);\r\n    }\r\n\r\n    return stream.writeBuffer(buf);\r\n  }\r\n}\r\n\r\nmodule.exports = BufferT;\r\n", "let iconv;\r\ntry { iconv = require('iconv-lite'); } catch (error) {}\r\n\r\nclass DecodeStream {\r\n  constructor(buffer) {\r\n    this.buffer = buffer;\r\n    this.pos = 0;\r\n    this.length = this.buffer.length;\r\n  }\r\n\r\n  readString(length, encoding = 'ascii') {\r\n    switch (encoding) {\r\n      case 'utf16le': case 'ucs2': case 'utf8': case 'ascii':\r\n        return this.buffer.toString(encoding, this.pos, (this.pos += length));\r\n\r\n      case 'utf16be':\r\n        var buf = Buffer.from(this.readBuffer(length));\r\n\r\n        // swap the bytes\r\n        for (let i = 0, end = buf.length - 1; i < end; i += 2) {\r\n          const byte = buf[i];\r\n          buf[i] = buf[i + 1];\r\n          buf[i + 1] = byte;\r\n        }\r\n\r\n        return buf.toString('utf16le');\r\n\r\n      default:\r\n        buf = this.readBuffer(length);\r\n        if (iconv) {\r\n          try {\r\n            return iconv.decode(buf, encoding);\r\n          } catch (error1) {}\r\n        }\r\n\r\n        return buf;\r\n    }\r\n  }\r\n\r\n  readBuffer(length) {\r\n    return this.buffer.slice(this.pos, (this.pos += length));\r\n  }\r\n\r\n  readUInt24BE() {\r\n    return (this.readUInt16BE() << 8) + this.readUInt8();\r\n  }\r\n\r\n  readUInt24LE() {\r\n    return this.readUInt16LE() + (this.readUInt8() << 16);\r\n  }\r\n\r\n  readInt24BE() {\r\n    return (this.readInt16BE() << 8) + this.readUInt8();\r\n  }\r\n\r\n  readInt24LE() {\r\n    return this.readUInt16LE() + (this.readInt8() << 16);\r\n  }\r\n}\r\n\r\nDecodeStream.TYPES = {\r\n  UInt8: 1,\r\n  UInt16: 2,\r\n  UInt24: 3,\r\n  UInt32: 4,\r\n  Int8: 1,\r\n  Int16: 2,\r\n  Int24: 3,\r\n  Int32: 4,\r\n  Float: 4,\r\n  Double: 8\r\n};\r\n\r\nfor (let key in Buffer.prototype) {\r\n  if (key.slice(0, 4) === 'read') {\r\n    const bytes = DecodeStream.TYPES[key.replace(/read|[BL]E/g, '')];\r\n    DecodeStream.prototype[key] = function() {\r\n      const ret = this.buffer[key](this.pos);\r\n      this.pos += bytes;\r\n      return ret;\r\n    };\r\n  }\r\n}\r\n\r\nmodule.exports = DecodeStream;\r\n", "let iconv;\r\nconst stream = require('stream');\r\nconst DecodeStream = require('./DecodeStream');\r\ntry { iconv = require('iconv-lite'); } catch (error) {}\r\n\r\nclass EncodeStream extends stream.Readable {\r\n  constructor(bufferSize =  65536) {\r\n    super(...arguments);\r\n    this.buffer = Buffer.alloc(bufferSize);\r\n    this.bufferOffset = 0;\r\n    this.pos = 0;\r\n  }\r\n\r\n  // do nothing, required by node\r\n  _read() {}\r\n\r\n  ensure(bytes) {\r\n    if ((this.bufferOffset + bytes) > this.buffer.length) {\r\n      return this.flush();\r\n    }\r\n  }\r\n\r\n  flush() {\r\n    if (this.bufferOffset > 0) {\r\n      this.push(Buffer.from(this.buffer.slice(0, this.bufferOffset)));\r\n      return this.bufferOffset = 0;\r\n    }\r\n  }\r\n\r\n  writeBuffer(buffer) {\r\n    this.flush();\r\n    this.push(buffer);\r\n    return this.pos += buffer.length;\r\n  }\r\n\r\n  writeString(string, encoding = 'ascii') {\r\n    switch (encoding) {\r\n      case 'utf16le': case 'ucs2': case 'utf8': case 'ascii':\r\n        return this.writeBuffer(Buffer.from(string, encoding));\r\n\r\n      case 'utf16be':\r\n        var buf = Buffer.from(string, 'utf16le');\r\n\r\n        // swap the bytes\r\n        for (let i = 0, end = buf.length - 1; i < end; i += 2) {\r\n          const byte = buf[i];\r\n          buf[i] = buf[i + 1];\r\n          buf[i + 1] = byte;\r\n        }\r\n\r\n        return this.writeBuffer(buf);\r\n\r\n      default:\r\n        if (iconv) {\r\n          return this.writeBuffer(iconv.encode(string, encoding));\r\n        } else {\r\n          throw new Error('Install iconv-lite to enable additional string encodings.');\r\n        }\r\n    }\r\n  }\r\n\r\n  writeUInt24BE(val) {\r\n    this.ensure(3);\r\n    this.buffer[this.bufferOffset++] = (val >>> 16) & 0xff;\r\n    this.buffer[this.bufferOffset++] = (val >>> 8)  & 0xff;\r\n    this.buffer[this.bufferOffset++] = val & 0xff;\r\n    return this.pos += 3;\r\n  }\r\n\r\n  writeUInt24LE(val) {\r\n    this.ensure(3);\r\n    this.buffer[this.bufferOffset++] = val & 0xff;\r\n    this.buffer[this.bufferOffset++] = (val >>> 8) & 0xff;\r\n    this.buffer[this.bufferOffset++] = (val >>> 16) & 0xff;\r\n    return this.pos += 3;\r\n  }\r\n\r\n  writeInt24BE(val) {\r\n    if (val >= 0) {\r\n      return this.writeUInt24BE(val);\r\n    } else {\r\n      return this.writeUInt24BE(val + 0xffffff + 1);\r\n    }\r\n  }\r\n\r\n  writeInt24LE(val) {\r\n    if (val >= 0) {\r\n      return this.writeUInt24LE(val);\r\n    } else {\r\n      return this.writeUInt24LE(val + 0xffffff + 1);\r\n    }\r\n  }\r\n\r\n  fill(val, length) {\r\n    if (length < this.buffer.length) {\r\n      this.ensure(length);\r\n      this.buffer.fill(val, this.bufferOffset, this.bufferOffset + length);\r\n      this.bufferOffset += length;\r\n      return this.pos += length;\r\n    } else {\r\n      const buf = Buffer.alloc(length);\r\n      buf.fill(val);\r\n      return this.writeBuffer(buf);\r\n    }\r\n  }\r\n\r\n  end() {\r\n    this.flush();\r\n    return this.push(null);\r\n  }\r\n}\r\n\r\nfor (let key in Buffer.prototype) {\r\n  if (key.slice(0, 5) === 'write') {\r\n    const bytes = +DecodeStream.TYPES[key.replace(/write|[BL]E/g, '')];\r\n    EncodeStream.prototype[key] = function(value) {\r\n      this.ensure(bytes);\r\n      this.buffer[key](value, this.bufferOffset);\r\n      this.bufferOffset += bytes;\r\n      return this.pos += bytes;\r\n    };\r\n  }\r\n}\r\n\r\nmodule.exports = EncodeStream;\r\n", "class Enum {\r\n  constructor(type, options = []) {\r\n    this.type = type;\r\n    this.options = options;\r\n  }\r\n  decode(stream) {\r\n    const index = this.type.decode(stream);\r\n    return this.options[index] || index;\r\n  }\r\n\r\n  size() {\r\n    return this.type.size();\r\n  }\r\n\r\n  encode(stream, val) {\r\n    const index = this.options.indexOf(val);\r\n    if (index === -1) {\r\n      throw new Error(`Unknown option in enum: ${val}`);\r\n    }\r\n\r\n    return this.type.encode(stream, index);\r\n  }\r\n}\r\n\r\nmodule.exports = Enum;\r\n", "const ArrayT = require('./Array');\r\nconst {Number:NumberT} = require('./Number');\r\nconst utils = require('./utils');\r\nconst {inspect} = require('util');\r\n\r\nclass LazyArrayT extends ArrayT {\r\n  decode(stream, parent) {\r\n    const { pos } = stream;\r\n    const length = utils.resolveLength(this.length, stream, parent);\r\n\r\n    if (this.length instanceof NumberT) {\r\n      parent = {\r\n        parent,\r\n        _startOffset: pos,\r\n        _currentOffset: 0,\r\n        _length: length\r\n      };\r\n    }\r\n\r\n    const res = new LazyArray(this.type, length, stream, parent);\r\n\r\n    stream.pos += length * this.type.size(null, parent);\r\n    return res;\r\n  }\r\n\r\n  size(val, ctx) {\r\n    if (val instanceof LazyArray) {\r\n      val = val.toArray();\r\n    }\r\n\r\n    return super.size(val, ctx);\r\n  }\r\n\r\n  encode(stream, val, ctx) {\r\n    if (val instanceof LazyArray) {\r\n      val = val.toArray();\r\n    }\r\n\r\n    return super.encode(stream, val, ctx);\r\n  }\r\n}\r\n\r\nclass LazyArray {\r\n  constructor(type, length, stream, ctx) {\r\n    this.type = type;\r\n    this.length = length;\r\n    this.stream = stream;\r\n    this.ctx = ctx;\r\n    this.base = this.stream.pos;\r\n    this.items = [];\r\n  }\r\n\r\n  get(index) {\r\n    if ((index < 0) || (index >= this.length)) {\r\n      return undefined;\r\n    }\r\n\r\n    if (this.items[index] == null) {\r\n      const { pos } = this.stream;\r\n      this.stream.pos = this.base + (this.type.size(null, this.ctx) * index);\r\n      this.items[index] = this.type.decode(this.stream, this.ctx);\r\n      this.stream.pos = pos;\r\n    }\r\n\r\n    return this.items[index];\r\n  }\r\n\r\n  toArray() {\r\n    const result = [];\r\n    for (let i = 0, end = this.length; i < end; i++) {\r\n      result.push(this.get(i));\r\n    }\r\n    return result;\r\n  }\r\n\r\n  inspect() {\r\n    return inspect(this.toArray());\r\n  }\r\n}\r\n\r\nmodule.exports = LazyArrayT;\r\n", "const DecodeStream = require('./DecodeStream');\r\n\r\nclass NumberT {\r\n  constructor(type, endian = 'BE') {\r\n    this.type = type;\r\n    this.endian = endian;\r\n    this.fn = this.type;\r\n    if (this.type[this.type.length - 1] !== '8') {\r\n      this.fn += this.endian;\r\n    }\r\n  }\r\n\r\n  size() {\r\n    return DecodeStream.TYPES[this.type];\r\n  }\r\n\r\n  decode(stream) {\r\n    return stream[`read${this.fn}`]();\r\n  }\r\n\r\n  encode(stream, val) {\r\n    return stream[`write${this.fn}`](val);\r\n  }\r\n}\r\n\r\nexports.Number = NumberT;\r\nexports.uint8 = new NumberT('UInt8');\r\nexports.uint16be = (exports.uint16 = new NumberT('UInt16', 'BE'));\r\nexports.uint16le = new NumberT('UInt16', 'LE');\r\nexports.uint24be = (exports.uint24 = new NumberT('UInt24', 'BE'));\r\nexports.uint24le = new NumberT('UInt24', 'LE');\r\nexports.uint32be = (exports.uint32 = new NumberT('UInt32', 'BE'));\r\nexports.uint32le = new NumberT('UInt32', 'LE');\r\nexports.int8 = new NumberT('Int8');\r\nexports.int16be = (exports.int16 = new NumberT('Int16', 'BE'));\r\nexports.int16le = new NumberT('Int16', 'LE');\r\nexports.int24be = (exports.int24 = new NumberT('Int24', 'BE'));\r\nexports.int24le = new NumberT('Int24', 'LE');\r\nexports.int32be = (exports.int32 = new NumberT('Int32', 'BE'));\r\nexports.int32le = new NumberT('Int32', 'LE');\r\nexports.floatbe = (exports.float = new NumberT('Float', 'BE'));\r\nexports.floatle = new NumberT('Float', 'LE');\r\nexports.doublebe = (exports.double = new NumberT('Double', 'BE'));\r\nexports.doublele = new NumberT('Double', 'LE');\r\n\r\nclass Fixed extends NumberT {\r\n  constructor(size, endian, fracBits = size >> 1) {\r\n    super(`Int${size}`, endian);\r\n    this._point = 1 << fracBits;\r\n  }\r\n\r\n  decode(stream) {\r\n    return super.decode(stream) / this._point;\r\n  }\r\n\r\n  encode(stream, val) {\r\n    return super.encode(stream, (val * this._point) | 0);\r\n  }\r\n}\r\n\r\nexports.Fixed = Fixed;\r\nexports.fixed16be = (exports.fixed16 = new Fixed(16, 'BE'));\r\nexports.fixed16le = new Fixed(16, 'LE');\r\nexports.fixed32be = (exports.fixed32 =new Fixed(32, 'BE'));\r\nexports.fixed32le = new Fixed(32, 'LE');\r\n", "class Optional {\r\n  constructor(type, condition = true) {\r\n    this.type = type;\r\n    this.condition = condition;\r\n  }\r\n\r\n  decode(stream, parent) {\r\n    let { condition } = this;\r\n    if (typeof condition === 'function') {\r\n      condition = condition.call(parent, parent);\r\n    }\r\n\r\n    if (condition) {\r\n      return this.type.decode(stream, parent);\r\n    }\r\n  }\r\n\r\n  size(val, parent) {\r\n    let { condition } = this;\r\n    if (typeof condition === 'function') {\r\n      condition = condition.call(parent, parent);\r\n    }\r\n\r\n    if (condition) {\r\n      return this.type.size(val, parent);\r\n    } else {\r\n      return 0;\r\n    }\r\n  }\r\n\r\n  encode(stream, val, parent) {\r\n    let { condition } = this;\r\n    if (typeof condition === 'function') {\r\n      condition = condition.call(parent, parent);\r\n    }\r\n\r\n    if (condition) {\r\n      return this.type.encode(stream, val, parent);\r\n    }\r\n  }\r\n}\r\n\r\nmodule.exports = Optional;\r\n", "const utils = require('./utils');\r\n\r\nclass Pointer {\r\n  constructor(offsetType, type, options = {}) {\r\n    this.offsetType = offsetType;\r\n    this.type = type;\r\n    this.options = options;\r\n    if (this.type === 'void') { this.type = null; }\r\n    if (this.options.type == null) { this.options.type = 'local'; }\r\n    if (this.options.allowNull == null) { this.options.allowNull = true; }\r\n    if (this.options.nullValue == null) { this.options.nullValue = 0; }\r\n    if (this.options.lazy == null) { this.options.lazy = false; }\r\n    if (this.options.relativeTo) {\r\n      if (typeof this.options.relativeTo !== 'function') {\r\n        throw new Error('relativeTo option must be a function');\r\n      }\r\n      this.relativeToGetter = options.relativeTo;\r\n    }\r\n  }\r\n\r\n  decode(stream, ctx) {\r\n    const offset = this.offsetType.decode(stream, ctx);\r\n\r\n    // handle NULL pointers\r\n    if ((offset === this.options.nullValue) && this.options.allowNull) {\r\n      return null;\r\n    }\r\n\r\n    let relative;\r\n    switch (this.options.type) {\r\n      case 'local':     relative = ctx._startOffset; break;\r\n      case 'immediate': relative = stream.pos - this.offsetType.size(); break;\r\n      case 'parent':    relative = ctx.parent._startOffset; break;\r\n      default:\r\n        var c = ctx;\r\n        while (c.parent) {\r\n          c = c.parent;\r\n        }\r\n\r\n        relative = c._startOffset || 0;\r\n    }\r\n\r\n    if (this.options.relativeTo) {\r\n      relative += this.relativeToGetter(ctx);\r\n    }\r\n\r\n    const ptr = offset + relative;\r\n\r\n    if (this.type != null) {\r\n      let val = null;\r\n      const decodeValue = () => {\r\n        if (val != null) { return val; }\r\n\r\n        const { pos } = stream;\r\n        stream.pos = ptr;\r\n        val = this.type.decode(stream, ctx);\r\n        stream.pos = pos;\r\n        return val;\r\n      };\r\n\r\n      // If this is a lazy pointer, define a getter to decode only when needed.\r\n      // This obviously only works when the pointer is contained by a Struct.\r\n      if (this.options.lazy) {\r\n        return new utils.PropertyDescriptor({\r\n          get: decodeValue});\r\n      }\r\n\r\n      return decodeValue();\r\n    } else {\r\n      return ptr;\r\n    }\r\n  }\r\n\r\n  size(val, ctx) {\r\n    const parent = ctx;\r\n    switch (this.options.type) {\r\n      case 'local': case 'immediate':\r\n        break;\r\n      case 'parent':\r\n        ctx = ctx.parent;\r\n        break;\r\n      default: // global\r\n        while (ctx.parent) {\r\n          ctx = ctx.parent;\r\n        }\r\n    }\r\n\r\n    let { type } = this;\r\n    if (type == null) {\r\n      if (!(val instanceof VoidPointer)) {\r\n        throw new Error(\"Must be a VoidPointer\");\r\n      }\r\n\r\n      ({ type } = val);\r\n      val = val.value;\r\n    }\r\n\r\n    if (val && ctx) {\r\n      ctx.pointerSize += type.size(val, parent);\r\n    }\r\n\r\n    return this.offsetType.size();\r\n  }\r\n\r\n  encode(stream, val, ctx) {\r\n    let relative;\r\n    const parent = ctx;\r\n    if ((val == null)) {\r\n      this.offsetType.encode(stream, this.options.nullValue);\r\n      return;\r\n    }\r\n\r\n    switch (this.options.type) {\r\n      case 'local':\r\n        relative = ctx.startOffset;\r\n        break;\r\n      case 'immediate':\r\n        relative = stream.pos + this.offsetType.size(val, parent);\r\n        break;\r\n      case 'parent':\r\n        ctx = ctx.parent;\r\n        relative = ctx.startOffset;\r\n        break;\r\n      default: // global\r\n        relative = 0;\r\n        while (ctx.parent) {\r\n          ctx = ctx.parent;\r\n        }\r\n    }\r\n\r\n    if (this.options.relativeTo) {\r\n      relative += this.relativeToGetter(parent.val);\r\n    }\r\n\r\n    this.offsetType.encode(stream, ctx.pointerOffset - relative);\r\n\r\n    let { type } = this;\r\n    if (type == null) {\r\n      if (!(val instanceof VoidPointer)) {\r\n        throw new Error(\"Must be a VoidPointer\");\r\n      }\r\n\r\n      ({ type } = val);\r\n      val = val.value;\r\n    }\r\n\r\n    ctx.pointers.push({\r\n      type,\r\n      val,\r\n      parent\r\n    });\r\n\r\n    return ctx.pointerOffset += type.size(val, parent);\r\n  }\r\n}\r\n\r\n// A pointer whose type is determined at decode time\r\nclass VoidPointer {\r\n  constructor(type, value) {\r\n    this.type = type;\r\n    this.value = value;\r\n  }\r\n}\r\n\r\nexports.Pointer = Pointer;\r\nexports.VoidPointer = VoidPointer;\r\n", "const utils = require('./utils');\r\n\r\nclass Reserved {\r\n  constructor(type, count = 1) {\r\n    this.type = type;\r\n    this.count = count;\r\n  }\r\n  decode(stream, parent) {\r\n    stream.pos += this.size(null, parent);\r\n    return undefined;\r\n  }\r\n\r\n  size(data, parent) {\r\n    const count = utils.resolveLength(this.count, null, parent);\r\n    return this.type.size() * count;\r\n  }\r\n\r\n  encode(stream, val, parent) {\r\n    return stream.fill(0, this.size(val, parent));\r\n  }\r\n}\r\n\r\nmodule.exports = Reserved;\r\n", "const {Number:NumberT} = require('./Number');\r\nconst utils = require('./utils');\r\n\r\nclass StringT {\r\n  constructor(length, encoding = 'ascii') {\r\n    this.length = length;\r\n    this.encoding = encoding;\r\n  }\r\n\r\n  decode(stream, parent) {\r\n    let length, pos;\r\n\r\n    if (this.length != null) {\r\n      length = utils.resolveLength(this.length, stream, parent);\r\n    } else {\r\n      let buffer;\r\n      ({buffer, length, pos} = stream);\r\n\r\n      while ((pos < length) && (buffer[pos] !== 0x00)) {\r\n        ++pos;\r\n      }\r\n\r\n      length = pos - stream.pos;\r\n    }\r\n\r\n    let { encoding } = this;\r\n    if (typeof encoding === 'function') {\r\n      encoding = encoding.call(parent, parent) || 'ascii';\r\n    }\r\n\r\n    const string = stream.readString(length, encoding);\r\n\r\n    if ((this.length == null) && (stream.pos < stream.length)) {\r\n      stream.pos++;\r\n    }\r\n\r\n    return string;\r\n  }\r\n\r\n  size(val, parent) {\r\n    // Use the defined value if no value was given\r\n    if (!val) {\r\n      return utils.resolveLength(this.length, null, parent);\r\n    }\r\n\r\n    let { encoding } = this;\r\n    if (typeof encoding === 'function') {\r\n      encoding = encoding.call(parent != null ? parent.val : undefined, parent != null ? parent.val : undefined) || 'ascii';\r\n    }\r\n\r\n    if (encoding === 'utf16be') {\r\n      encoding = 'utf16le';\r\n    }\r\n\r\n    let size = Buffer.byteLength(val, encoding);\r\n    if (this.length instanceof NumberT) {\r\n      size += this.length.size();\r\n    }\r\n\r\n    if ((this.length == null)) {\r\n      size++;\r\n    }\r\n\r\n    return size;\r\n  }\r\n\r\n  encode(stream, val, parent) {\r\n    let { encoding } = this;\r\n    if (typeof encoding === 'function') {\r\n      encoding = encoding.call(parent != null ? parent.val : undefined, parent != null ? parent.val : undefined) || 'ascii';\r\n    }\r\n\r\n    if (this.length instanceof NumberT) {\r\n      this.length.encode(stream, Buffer.byteLength(val, encoding));\r\n    }\r\n\r\n    stream.writeString(val, encoding);\r\n\r\n    if ((this.length == null)) {\r\n      return stream.writeUInt8(0x00);\r\n    }\r\n  }\r\n}\r\n\r\nmodule.exports = StringT;\r\n", "const utils = require('./utils');\r\n\r\nclass Struct {\r\n  constructor(fields = {}) {\r\n    this.fields = fields;\r\n  }\r\n\r\n  decode(stream, parent, length = 0) {\r\n    const res = this._setup(stream, parent, length);\r\n    this._parseFields(stream, res, this.fields);\r\n\r\n    if (this.process != null) {\r\n      this.process.call(res, stream);\r\n    }\r\n    return res;\r\n  }\r\n\r\n  _setup(stream, parent, length) {\r\n    const res = {};\r\n\r\n    // define hidden properties\r\n    Object.defineProperties(res, {\r\n      parent:         { value: parent },\r\n      _startOffset:   { value: stream.pos },\r\n      _currentOffset: { value: 0, writable: true },\r\n      _length:        { value: length }\r\n    });\r\n\r\n    return res;\r\n  }\r\n\r\n  _parseFields(stream, res, fields) {\r\n    for (let key in fields) {\r\n      var val;\r\n      const type = fields[key];\r\n      if (typeof type === 'function') {\r\n        val = type.call(res, res);\r\n      } else {\r\n        val = type.decode(stream, res);\r\n      }\r\n\r\n      if (val !== undefined) {\r\n        if (val instanceof utils.PropertyDescriptor) {\r\n          Object.defineProperty(res, key, val);\r\n        } else {\r\n          res[key] = val;\r\n        }\r\n      }\r\n\r\n      res._currentOffset = stream.pos - res._startOffset;\r\n    }\r\n\r\n  }\r\n\r\n  size(val, parent, includePointers) {\r\n    if (val == null) { val = {}; }\r\n    if (includePointers == null) { includePointers = true; }\r\n    const ctx = {\r\n      parent,\r\n      val,\r\n      pointerSize: 0\r\n    };\r\n\r\n    let size = 0;\r\n    for (let key in this.fields) {\r\n      const type = this.fields[key];\r\n      if (type.size != null) {\r\n        size += type.size(val[key], ctx);\r\n      }\r\n    }\r\n\r\n    if (includePointers) {\r\n      size += ctx.pointerSize;\r\n    }\r\n\r\n    return size;\r\n  }\r\n\r\n  encode(stream, val, parent) {\r\n    let type;\r\n    if (this.preEncode != null) {\r\n      this.preEncode.call(val, stream);\r\n    }\r\n\r\n    const ctx = {\r\n      pointers: [],\r\n      startOffset: stream.pos,\r\n      parent,\r\n      val,\r\n      pointerSize: 0\r\n    };\r\n\r\n    ctx.pointerOffset = stream.pos + this.size(val, ctx, false);\r\n\r\n    for (let key in this.fields) {\r\n      type = this.fields[key];\r\n      if (type.encode != null) {\r\n        type.encode(stream, val[key], ctx);\r\n      }\r\n    }\r\n\r\n    let i = 0;\r\n    while (i < ctx.pointers.length) {\r\n      const ptr = ctx.pointers[i++];\r\n      ptr.type.encode(stream, ptr.val, ptr.parent);\r\n    }\r\n\r\n  }\r\n}\r\n\r\nmodule.exports = Struct;\r\n", "const Struct = require('./Struct');\r\n\r\nconst getPath = (object, pathArray) => {\r\n  return pathArray.reduce((prevObj, key) => prevObj && prevObj[key], object);\r\n};\r\n\r\nclass VersionedStruct extends Struct {\r\n  constructor(type, versions = {}) {\r\n    super();\r\n    this.type = type;\r\n    this.versions = versions;\r\n    if (typeof type === 'string') {\r\n      this.versionPath = type.split('.');\r\n    }\r\n  }\r\n\r\n  decode(stream, parent, length = 0) {\r\n    const res = this._setup(stream, parent, length);\r\n\r\n    if (typeof this.type === 'string') {\r\n      res.version = getPath(parent, this.versionPath);\r\n    } else {\r\n      res.version = this.type.decode(stream);\r\n    }\r\n\r\n    if (this.versions.header) {\r\n      this._parseFields(stream, res, this.versions.header);\r\n    }\r\n\r\n    const fields = this.versions[res.version];\r\n    if ((fields == null)) {\r\n      throw new Error(`Unknown version ${res.version}`);\r\n    }\r\n\r\n    if (fields instanceof VersionedStruct) {\r\n      return fields.decode(stream, parent);\r\n    }\r\n\r\n    this._parseFields(stream, res, fields);\r\n\r\n    if (this.process != null) {\r\n      this.process.call(res, stream);\r\n    }\r\n    return res;\r\n  }\r\n\r\n  size(val, parent, includePointers = true) {\r\n    let key, type;\r\n    if (!val) {\r\n      throw new Error('Not a fixed size');\r\n    }\r\n\r\n    const ctx = {\r\n      parent,\r\n      val,\r\n      pointerSize: 0\r\n    };\r\n\r\n    let size = 0;\r\n    if (typeof this.type !== 'string') {\r\n      size += this.type.size(val.version, ctx);\r\n    }\r\n\r\n    if (this.versions.header) {\r\n      for (key in this.versions.header) {\r\n        type = this.versions.header[key];\r\n        if (type.size != null) {\r\n          size += type.size(val[key], ctx);\r\n        }\r\n      }\r\n    }\r\n\r\n    const fields = this.versions[val.version];\r\n    if ((fields == null)) {\r\n      throw new Error(`Unknown version ${val.version}`);\r\n    }\r\n\r\n    for (key in fields) {\r\n      type = fields[key];\r\n      if (type.size != null) {\r\n        size += type.size(val[key], ctx);\r\n      }\r\n    }\r\n\r\n    if (includePointers) {\r\n      size += ctx.pointerSize;\r\n    }\r\n\r\n    return size;\r\n  }\r\n\r\n  encode(stream, val, parent) {\r\n    let key, type;\r\n    if (this.preEncode != null) {\r\n      this.preEncode.call(val, stream);\r\n    }\r\n\r\n    const ctx = {\r\n      pointers: [],\r\n      startOffset: stream.pos,\r\n      parent,\r\n      val,\r\n      pointerSize: 0\r\n    };\r\n\r\n    ctx.pointerOffset = stream.pos + this.size(val, ctx, false);\r\n\r\n    if (typeof this.type !== 'string') {\r\n      this.type.encode(stream, val.version);\r\n    }\r\n\r\n    if (this.versions.header) {\r\n      for (key in this.versions.header) {\r\n        type = this.versions.header[key];\r\n        if (type.encode != null) {\r\n          type.encode(stream, val[key], ctx);\r\n        }\r\n      }\r\n    }\r\n\r\n    const fields = this.versions[val.version];\r\n    for (key in fields) {\r\n      type = fields[key];\r\n      if (type.encode != null) {\r\n        type.encode(stream, val[key], ctx);\r\n      }\r\n    }\r\n\r\n    let i = 0;\r\n    while (i < ctx.pointers.length) {\r\n      const ptr = ctx.pointers[i++];\r\n      ptr.type.encode(stream, ptr.val, ptr.parent);\r\n    }\r\n\r\n  }\r\n}\r\n\r\nmodule.exports = VersionedStruct;\r\n", "const {Number:NumberT} = require('./Number');\r\n\r\nexports.resolveLength = function(length, stream, parent) {\r\n  let res;\r\n  if (typeof length === 'number') {\r\n    res = length;\r\n\r\n  } else if (typeof length === 'function') {\r\n    res = length.call(parent, parent);\r\n\r\n  } else if (parent && (typeof length === 'string')) {\r\n    res = parent[length];\r\n\r\n  } else if (stream && length instanceof NumberT) {\r\n    res = length.decode(stream);\r\n  }\r\n\r\n  if (isNaN(res)) {\r\n    throw new Error('Not a fixed size');\r\n  }\r\n\r\n  return res;\r\n};\r\n\r\nclass PropertyDescriptor {\r\n  constructor(opts = {}) {\r\n    this.enumerable = true;\r\n    this.configurable = true;\r\n\r\n    for (let key in opts) {\r\n      const val = opts[key];\r\n      this[key] = val;\r\n    }\r\n  }\r\n}\r\n\r\nexports.PropertyDescriptor = PropertyDescriptor;\r\n", "/*!\n * The buffer module from node.js, for the browser.\n *\n * @author   Feross Aboukhadijeh <https://feross.org>\n * @license  MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n  (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n    ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n    : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n *   === true    Use Uint8Array implementation (fastest)\n *   === false   Print warning and recommend using `buffer` v4.x which has an Object\n *               implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n    typeof console.error === 'function') {\n  console.error(\n    'This browser lacks typed array (Uint8Array) support which is required by ' +\n    '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n  )\n}\n\nfunction typedArraySupport () {\n  // Can typed array instances can be augmented?\n  try {\n    const arr = new Uint8Array(1)\n    const proto = { foo: function () { return 42 } }\n    Object.setPrototypeOf(proto, Uint8Array.prototype)\n    Object.setPrototypeOf(arr, proto)\n    return arr.foo() === 42\n  } catch (e) {\n    return false\n  }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n  enumerable: true,\n  get: function () {\n    if (!Buffer.isBuffer(this)) return undefined\n    return this.buffer\n  }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n  enumerable: true,\n  get: function () {\n    if (!Buffer.isBuffer(this)) return undefined\n    return this.byteOffset\n  }\n})\n\nfunction createBuffer (length) {\n  if (length > K_MAX_LENGTH) {\n    throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n  }\n  // Return an augmented `Uint8Array` instance\n  const buf = new Uint8Array(length)\n  Object.setPrototypeOf(buf, Buffer.prototype)\n  return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n  // Common case.\n  if (typeof arg === 'number') {\n    if (typeof encodingOrOffset === 'string') {\n      throw new TypeError(\n        'The \"string\" argument must be of type string. Received type number'\n      )\n    }\n    return allocUnsafe(arg)\n  }\n  return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n  if (typeof value === 'string') {\n    return fromString(value, encodingOrOffset)\n  }\n\n  if (ArrayBuffer.isView(value)) {\n    return fromArrayView(value)\n  }\n\n  if (value == null) {\n    throw new TypeError(\n      'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n      'or Array-like Object. Received type ' + (typeof value)\n    )\n  }\n\n  if (isInstance(value, ArrayBuffer) ||\n      (value && isInstance(value.buffer, ArrayBuffer))) {\n    return fromArrayBuffer(value, encodingOrOffset, length)\n  }\n\n  if (typeof SharedArrayBuffer !== 'undefined' &&\n      (isInstance(value, SharedArrayBuffer) ||\n      (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n    return fromArrayBuffer(value, encodingOrOffset, length)\n  }\n\n  if (typeof value === 'number') {\n    throw new TypeError(\n      'The \"value\" argument must not be of type number. Received type number'\n    )\n  }\n\n  const valueOf = value.valueOf && value.valueOf()\n  if (valueOf != null && valueOf !== value) {\n    return Buffer.from(valueOf, encodingOrOffset, length)\n  }\n\n  const b = fromObject(value)\n  if (b) return b\n\n  if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n      typeof value[Symbol.toPrimitive] === 'function') {\n    return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n  }\n\n  throw new TypeError(\n    'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n    'or Array-like Object. Received type ' + (typeof value)\n  )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n  return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('\"size\" argument must be of type number')\n  } else if (size < 0) {\n    throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n  }\n}\n\nfunction alloc (size, fill, encoding) {\n  assertSize(size)\n  if (size <= 0) {\n    return createBuffer(size)\n  }\n  if (fill !== undefined) {\n    // Only pay attention to encoding if it's a string. This\n    // prevents accidentally sending in a number that would\n    // be interpreted as a start offset.\n    return typeof encoding === 'string'\n      ? createBuffer(size).fill(fill, encoding)\n      : createBuffer(size).fill(fill)\n  }\n  return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n  return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n  assertSize(size)\n  return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n  return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n  return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n  if (typeof encoding !== 'string' || encoding === '') {\n    encoding = 'utf8'\n  }\n\n  if (!Buffer.isEncoding(encoding)) {\n    throw new TypeError('Unknown encoding: ' + encoding)\n  }\n\n  const length = byteLength(string, encoding) | 0\n  let buf = createBuffer(length)\n\n  const actual = buf.write(string, encoding)\n\n  if (actual !== length) {\n    // Writing a hex string, for example, that contains invalid characters will\n    // cause everything after the first invalid character to be ignored. (e.g.\n    // 'abxxcd' will be treated as 'ab')\n    buf = buf.slice(0, actual)\n  }\n\n  return buf\n}\n\nfunction fromArrayLike (array) {\n  const length = array.length < 0 ? 0 : checked(array.length) | 0\n  const buf = createBuffer(length)\n  for (let i = 0; i < length; i += 1) {\n    buf[i] = array[i] & 255\n  }\n  return buf\n}\n\nfunction fromArrayView (arrayView) {\n  if (isInstance(arrayView, Uint8Array)) {\n    const copy = new Uint8Array(arrayView)\n    return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n  }\n  return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n  if (byteOffset < 0 || array.byteLength < byteOffset) {\n    throw new RangeError('\"offset\" is outside of buffer bounds')\n  }\n\n  if (array.byteLength < byteOffset + (length || 0)) {\n    throw new RangeError('\"length\" is outside of buffer bounds')\n  }\n\n  let buf\n  if (byteOffset === undefined && length === undefined) {\n    buf = new Uint8Array(array)\n  } else if (length === undefined) {\n    buf = new Uint8Array(array, byteOffset)\n  } else {\n    buf = new Uint8Array(array, byteOffset, length)\n  }\n\n  // Return an augmented `Uint8Array` instance\n  Object.setPrototypeOf(buf, Buffer.prototype)\n\n  return buf\n}\n\nfunction fromObject (obj) {\n  if (Buffer.isBuffer(obj)) {\n    const len = checked(obj.length) | 0\n    const buf = createBuffer(len)\n\n    if (buf.length === 0) {\n      return buf\n    }\n\n    obj.copy(buf, 0, 0, len)\n    return buf\n  }\n\n  if (obj.length !== undefined) {\n    if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n      return createBuffer(0)\n    }\n    return fromArrayLike(obj)\n  }\n\n  if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n    return fromArrayLike(obj.data)\n  }\n}\n\nfunction checked (length) {\n  // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n  // length is NaN (which is otherwise coerced to zero.)\n  if (length >= K_MAX_LENGTH) {\n    throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n                         'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n  }\n  return length | 0\n}\n\nfunction SlowBuffer (length) {\n  if (+length != length) { // eslint-disable-line eqeqeq\n    length = 0\n  }\n  return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n  return b != null && b._isBuffer === true &&\n    b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n  if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n  if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n  if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n    throw new TypeError(\n      'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n    )\n  }\n\n  if (a === b) return 0\n\n  let x = a.length\n  let y = b.length\n\n  for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n    if (a[i] !== b[i]) {\n      x = a[i]\n      y = b[i]\n      break\n    }\n  }\n\n  if (x < y) return -1\n  if (y < x) return 1\n  return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n  switch (String(encoding).toLowerCase()) {\n    case 'hex':\n    case 'utf8':\n    case 'utf-8':\n    case 'ascii':\n    case 'latin1':\n    case 'binary':\n    case 'base64':\n    case 'ucs2':\n    case 'ucs-2':\n    case 'utf16le':\n    case 'utf-16le':\n      return true\n    default:\n      return false\n  }\n}\n\nBuffer.concat = function concat (list, length) {\n  if (!Array.isArray(list)) {\n    throw new TypeError('\"list\" argument must be an Array of Buffers')\n  }\n\n  if (list.length === 0) {\n    return Buffer.alloc(0)\n  }\n\n  let i\n  if (length === undefined) {\n    length = 0\n    for (i = 0; i < list.length; ++i) {\n      length += list[i].length\n    }\n  }\n\n  const buffer = Buffer.allocUnsafe(length)\n  let pos = 0\n  for (i = 0; i < list.length; ++i) {\n    let buf = list[i]\n    if (isInstance(buf, Uint8Array)) {\n      if (pos + buf.length > buffer.length) {\n        if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n        buf.copy(buffer, pos)\n      } else {\n        Uint8Array.prototype.set.call(\n          buffer,\n          buf,\n          pos\n        )\n      }\n    } else if (!Buffer.isBuffer(buf)) {\n      throw new TypeError('\"list\" argument must be an Array of Buffers')\n    } else {\n      buf.copy(buffer, pos)\n    }\n    pos += buf.length\n  }\n  return buffer\n}\n\nfunction byteLength (string, encoding) {\n  if (Buffer.isBuffer(string)) {\n    return string.length\n  }\n  if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n    return string.byteLength\n  }\n  if (typeof string !== 'string') {\n    throw new TypeError(\n      'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n      'Received type ' + typeof string\n    )\n  }\n\n  const len = string.length\n  const mustMatch = (arguments.length > 2 && arguments[2] === true)\n  if (!mustMatch && len === 0) return 0\n\n  // Use a for loop to avoid recursion\n  let loweredCase = false\n  for (;;) {\n    switch (encoding) {\n      case 'ascii':\n      case 'latin1':\n      case 'binary':\n        return len\n      case 'utf8':\n      case 'utf-8':\n        return utf8ToBytes(string).length\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return len * 2\n      case 'hex':\n        return len >>> 1\n      case 'base64':\n        return base64ToBytes(string).length\n      default:\n        if (loweredCase) {\n          return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n        }\n        encoding = ('' + encoding).toLowerCase()\n        loweredCase = true\n    }\n  }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n  let loweredCase = false\n\n  // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n  // property of a typed array.\n\n  // This behaves neither like String nor Uint8Array in that we set start/end\n  // to their upper/lower bounds if the value passed is out of range.\n  // undefined is handled specially as per ECMA-262 6th Edition,\n  // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n  if (start === undefined || start < 0) {\n    start = 0\n  }\n  // Return early if start > this.length. Done here to prevent potential uint32\n  // coercion fail below.\n  if (start > this.length) {\n    return ''\n  }\n\n  if (end === undefined || end > this.length) {\n    end = this.length\n  }\n\n  if (end <= 0) {\n    return ''\n  }\n\n  // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n  end >>>= 0\n  start >>>= 0\n\n  if (end <= start) {\n    return ''\n  }\n\n  if (!encoding) encoding = 'utf8'\n\n  while (true) {\n    switch (encoding) {\n      case 'hex':\n        return hexSlice(this, start, end)\n\n      case 'utf8':\n      case 'utf-8':\n        return utf8Slice(this, start, end)\n\n      case 'ascii':\n        return asciiSlice(this, start, end)\n\n      case 'latin1':\n      case 'binary':\n        return latin1Slice(this, start, end)\n\n      case 'base64':\n        return base64Slice(this, start, end)\n\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return utf16leSlice(this, start, end)\n\n      default:\n        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n        encoding = (encoding + '').toLowerCase()\n        loweredCase = true\n    }\n  }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n  const i = b[n]\n  b[n] = b[m]\n  b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n  const len = this.length\n  if (len % 2 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 16-bits')\n  }\n  for (let i = 0; i < len; i += 2) {\n    swap(this, i, i + 1)\n  }\n  return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n  const len = this.length\n  if (len % 4 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 32-bits')\n  }\n  for (let i = 0; i < len; i += 4) {\n    swap(this, i, i + 3)\n    swap(this, i + 1, i + 2)\n  }\n  return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n  const len = this.length\n  if (len % 8 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 64-bits')\n  }\n  for (let i = 0; i < len; i += 8) {\n    swap(this, i, i + 7)\n    swap(this, i + 1, i + 6)\n    swap(this, i + 2, i + 5)\n    swap(this, i + 3, i + 4)\n  }\n  return this\n}\n\nBuffer.prototype.toString = function toString () {\n  const length = this.length\n  if (length === 0) return ''\n  if (arguments.length === 0) return utf8Slice(this, 0, length)\n  return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n  if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n  if (this === b) return true\n  return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n  let str = ''\n  const max = exports.INSPECT_MAX_BYTES\n  str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n  if (this.length > max) str += ' ... '\n  return '<Buffer ' + str + '>'\n}\nif (customInspectSymbol) {\n  Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n  if (isInstance(target, Uint8Array)) {\n    target = Buffer.from(target, target.offset, target.byteLength)\n  }\n  if (!Buffer.isBuffer(target)) {\n    throw new TypeError(\n      'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n      'Received type ' + (typeof target)\n    )\n  }\n\n  if (start === undefined) {\n    start = 0\n  }\n  if (end === undefined) {\n    end = target ? target.length : 0\n  }\n  if (thisStart === undefined) {\n    thisStart = 0\n  }\n  if (thisEnd === undefined) {\n    thisEnd = this.length\n  }\n\n  if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n    throw new RangeError('out of range index')\n  }\n\n  if (thisStart >= thisEnd && start >= end) {\n    return 0\n  }\n  if (thisStart >= thisEnd) {\n    return -1\n  }\n  if (start >= end) {\n    return 1\n  }\n\n  start >>>= 0\n  end >>>= 0\n  thisStart >>>= 0\n  thisEnd >>>= 0\n\n  if (this === target) return 0\n\n  let x = thisEnd - thisStart\n  let y = end - start\n  const len = Math.min(x, y)\n\n  const thisCopy = this.slice(thisStart, thisEnd)\n  const targetCopy = target.slice(start, end)\n\n  for (let i = 0; i < len; ++i) {\n    if (thisCopy[i] !== targetCopy[i]) {\n      x = thisCopy[i]\n      y = targetCopy[i]\n      break\n    }\n  }\n\n  if (x < y) return -1\n  if (y < x) return 1\n  return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n  // Empty buffer means no match\n  if (buffer.length === 0) return -1\n\n  // Normalize byteOffset\n  if (typeof byteOffset === 'string') {\n    encoding = byteOffset\n    byteOffset = 0\n  } else if (byteOffset > 0x7fffffff) {\n    byteOffset = 0x7fffffff\n  } else if (byteOffset < -0x80000000) {\n    byteOffset = -0x80000000\n  }\n  byteOffset = +byteOffset // Coerce to Number.\n  if (numberIsNaN(byteOffset)) {\n    // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n    byteOffset = dir ? 0 : (buffer.length - 1)\n  }\n\n  // Normalize byteOffset: negative offsets start from the end of the buffer\n  if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n  if (byteOffset >= buffer.length) {\n    if (dir) return -1\n    else byteOffset = buffer.length - 1\n  } else if (byteOffset < 0) {\n    if (dir) byteOffset = 0\n    else return -1\n  }\n\n  // Normalize val\n  if (typeof val === 'string') {\n    val = Buffer.from(val, encoding)\n  }\n\n  // Finally, search either indexOf (if dir is true) or lastIndexOf\n  if (Buffer.isBuffer(val)) {\n    // Special case: looking for empty string/buffer always fails\n    if (val.length === 0) {\n      return -1\n    }\n    return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n  } else if (typeof val === 'number') {\n    val = val & 0xFF // Search for a byte value [0-255]\n    if (typeof Uint8Array.prototype.indexOf === 'function') {\n      if (dir) {\n        return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n      } else {\n        return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n      }\n    }\n    return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n  }\n\n  throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n  let indexSize = 1\n  let arrLength = arr.length\n  let valLength = val.length\n\n  if (encoding !== undefined) {\n    encoding = String(encoding).toLowerCase()\n    if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n        encoding === 'utf16le' || encoding === 'utf-16le') {\n      if (arr.length < 2 || val.length < 2) {\n        return -1\n      }\n      indexSize = 2\n      arrLength /= 2\n      valLength /= 2\n      byteOffset /= 2\n    }\n  }\n\n  function read (buf, i) {\n    if (indexSize === 1) {\n      return buf[i]\n    } else {\n      return buf.readUInt16BE(i * indexSize)\n    }\n  }\n\n  let i\n  if (dir) {\n    let foundIndex = -1\n    for (i = byteOffset; i < arrLength; i++) {\n      if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n        if (foundIndex === -1) foundIndex = i\n        if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n      } else {\n        if (foundIndex !== -1) i -= i - foundIndex\n        foundIndex = -1\n      }\n    }\n  } else {\n    if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n    for (i = byteOffset; i >= 0; i--) {\n      let found = true\n      for (let j = 0; j < valLength; j++) {\n        if (read(arr, i + j) !== read(val, j)) {\n          found = false\n          break\n        }\n      }\n      if (found) return i\n    }\n  }\n\n  return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n  return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n  return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n  return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n  offset = Number(offset) || 0\n  const remaining = buf.length - offset\n  if (!length) {\n    length = remaining\n  } else {\n    length = Number(length)\n    if (length > remaining) {\n      length = remaining\n    }\n  }\n\n  const strLen = string.length\n\n  if (length > strLen / 2) {\n    length = strLen / 2\n  }\n  let i\n  for (i = 0; i < length; ++i) {\n    const parsed = parseInt(string.substr(i * 2, 2), 16)\n    if (numberIsNaN(parsed)) return i\n    buf[offset + i] = parsed\n  }\n  return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n  return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n  return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n  return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n  return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n  // Buffer#write(string)\n  if (offset === undefined) {\n    encoding = 'utf8'\n    length = this.length\n    offset = 0\n  // Buffer#write(string, encoding)\n  } else if (length === undefined && typeof offset === 'string') {\n    encoding = offset\n    length = this.length\n    offset = 0\n  // Buffer#write(string, offset[, length][, encoding])\n  } else if (isFinite(offset)) {\n    offset = offset >>> 0\n    if (isFinite(length)) {\n      length = length >>> 0\n      if (encoding === undefined) encoding = 'utf8'\n    } else {\n      encoding = length\n      length = undefined\n    }\n  } else {\n    throw new Error(\n      'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n    )\n  }\n\n  const remaining = this.length - offset\n  if (length === undefined || length > remaining) length = remaining\n\n  if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n    throw new RangeError('Attempt to write outside buffer bounds')\n  }\n\n  if (!encoding) encoding = 'utf8'\n\n  let loweredCase = false\n  for (;;) {\n    switch (encoding) {\n      case 'hex':\n        return hexWrite(this, string, offset, length)\n\n      case 'utf8':\n      case 'utf-8':\n        return utf8Write(this, string, offset, length)\n\n      case 'ascii':\n      case 'latin1':\n      case 'binary':\n        return asciiWrite(this, string, offset, length)\n\n      case 'base64':\n        // Warning: maxLength not taken into account in base64Write\n        return base64Write(this, string, offset, length)\n\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return ucs2Write(this, string, offset, length)\n\n      default:\n        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n        encoding = ('' + encoding).toLowerCase()\n        loweredCase = true\n    }\n  }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n  return {\n    type: 'Buffer',\n    data: Array.prototype.slice.call(this._arr || this, 0)\n  }\n}\n\nfunction base64Slice (buf, start, end) {\n  if (start === 0 && end === buf.length) {\n    return base64.fromByteArray(buf)\n  } else {\n    return base64.fromByteArray(buf.slice(start, end))\n  }\n}\n\nfunction utf8Slice (buf, start, end) {\n  end = Math.min(buf.length, end)\n  const res = []\n\n  let i = start\n  while (i < end) {\n    const firstByte = buf[i]\n    let codePoint = null\n    let bytesPerSequence = (firstByte > 0xEF)\n      ? 4\n      : (firstByte > 0xDF)\n          ? 3\n          : (firstByte > 0xBF)\n              ? 2\n              : 1\n\n    if (i + bytesPerSequence <= end) {\n      let secondByte, thirdByte, fourthByte, tempCodePoint\n\n      switch (bytesPerSequence) {\n        case 1:\n          if (firstByte < 0x80) {\n            codePoint = firstByte\n          }\n          break\n        case 2:\n          secondByte = buf[i + 1]\n          if ((secondByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n            if (tempCodePoint > 0x7F) {\n              codePoint = tempCodePoint\n            }\n          }\n          break\n        case 3:\n          secondByte = buf[i + 1]\n          thirdByte = buf[i + 2]\n          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n            if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n              codePoint = tempCodePoint\n            }\n          }\n          break\n        case 4:\n          secondByte = buf[i + 1]\n          thirdByte = buf[i + 2]\n          fourthByte = buf[i + 3]\n          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n            if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n              codePoint = tempCodePoint\n            }\n          }\n      }\n    }\n\n    if (codePoint === null) {\n      // we did not generate a valid codePoint so insert a\n      // replacement char (U+FFFD) and advance only 1 byte\n      codePoint = 0xFFFD\n      bytesPerSequence = 1\n    } else if (codePoint > 0xFFFF) {\n      // encode to utf16 (surrogate pair dance)\n      codePoint -= 0x10000\n      res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n      codePoint = 0xDC00 | codePoint & 0x3FF\n    }\n\n    res.push(codePoint)\n    i += bytesPerSequence\n  }\n\n  return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n  const len = codePoints.length\n  if (len <= MAX_ARGUMENTS_LENGTH) {\n    return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n  }\n\n  // Decode in chunks to avoid \"call stack size exceeded\".\n  let res = ''\n  let i = 0\n  while (i < len) {\n    res += String.fromCharCode.apply(\n      String,\n      codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n    )\n  }\n  return res\n}\n\nfunction asciiSlice (buf, start, end) {\n  let ret = ''\n  end = Math.min(buf.length, end)\n\n  for (let i = start; i < end; ++i) {\n    ret += String.fromCharCode(buf[i] & 0x7F)\n  }\n  return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n  let ret = ''\n  end = Math.min(buf.length, end)\n\n  for (let i = start; i < end; ++i) {\n    ret += String.fromCharCode(buf[i])\n  }\n  return ret\n}\n\nfunction hexSlice (buf, start, end) {\n  const len = buf.length\n\n  if (!start || start < 0) start = 0\n  if (!end || end < 0 || end > len) end = len\n\n  let out = ''\n  for (let i = start; i < end; ++i) {\n    out += hexSliceLookupTable[buf[i]]\n  }\n  return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n  const bytes = buf.slice(start, end)\n  let res = ''\n  // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n  for (let i = 0; i < bytes.length - 1; i += 2) {\n    res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n  }\n  return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n  const len = this.length\n  start = ~~start\n  end = end === undefined ? len : ~~end\n\n  if (start < 0) {\n    start += len\n    if (start < 0) start = 0\n  } else if (start > len) {\n    start = len\n  }\n\n  if (end < 0) {\n    end += len\n    if (end < 0) end = 0\n  } else if (end > len) {\n    end = len\n  }\n\n  if (end < start) end = start\n\n  const newBuf = this.subarray(start, end)\n  // Return an augmented `Uint8Array` instance\n  Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n  return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n  if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n  if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n  offset = offset >>> 0\n  byteLength = byteLength >>> 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  let val = this[offset]\n  let mul = 1\n  let i = 0\n  while (++i < byteLength && (mul *= 0x100)) {\n    val += this[offset + i] * mul\n  }\n\n  return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n  offset = offset >>> 0\n  byteLength = byteLength >>> 0\n  if (!noAssert) {\n    checkOffset(offset, byteLength, this.length)\n  }\n\n  let val = this[offset + --byteLength]\n  let mul = 1\n  while (byteLength > 0 && (mul *= 0x100)) {\n    val += this[offset + --byteLength] * mul\n  }\n\n  return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 1, this.length)\n  return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return ((this[offset]) |\n      (this[offset + 1] << 8) |\n      (this[offset + 2] << 16)) +\n      (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset] * 0x1000000) +\n    ((this[offset + 1] << 16) |\n    (this[offset + 2] << 8) |\n    this[offset + 3])\n}\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n  offset = offset >>> 0\n  validateNumber(offset, 'offset')\n  const first = this[offset]\n  const last = this[offset + 7]\n  if (first === undefined || last === undefined) {\n    boundsError(offset, this.length - 8)\n  }\n\n  const lo = first +\n    this[++offset] * 2 ** 8 +\n    this[++offset] * 2 ** 16 +\n    this[++offset] * 2 ** 24\n\n  const hi = this[++offset] +\n    this[++offset] * 2 ** 8 +\n    this[++offset] * 2 ** 16 +\n    last * 2 ** 24\n\n  return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n  offset = offset >>> 0\n  validateNumber(offset, 'offset')\n  const first = this[offset]\n  const last = this[offset + 7]\n  if (first === undefined || last === undefined) {\n    boundsError(offset, this.length - 8)\n  }\n\n  const hi = first * 2 ** 24 +\n    this[++offset] * 2 ** 16 +\n    this[++offset] * 2 ** 8 +\n    this[++offset]\n\n  const lo = this[++offset] * 2 ** 24 +\n    this[++offset] * 2 ** 16 +\n    this[++offset] * 2 ** 8 +\n    last\n\n  return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n})\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n  offset = offset >>> 0\n  byteLength = byteLength >>> 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  let val = this[offset]\n  let mul = 1\n  let i = 0\n  while (++i < byteLength && (mul *= 0x100)) {\n    val += this[offset + i] * mul\n  }\n  mul *= 0x80\n\n  if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n  return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n  offset = offset >>> 0\n  byteLength = byteLength >>> 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  let i = byteLength\n  let mul = 1\n  let val = this[offset + --i]\n  while (i > 0 && (mul *= 0x100)) {\n    val += this[offset + --i] * mul\n  }\n  mul *= 0x80\n\n  if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n  return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 1, this.length)\n  if (!(this[offset] & 0x80)) return (this[offset])\n  return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  const val = this[offset] | (this[offset + 1] << 8)\n  return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  const val = this[offset + 1] | (this[offset] << 8)\n  return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset]) |\n    (this[offset + 1] << 8) |\n    (this[offset + 2] << 16) |\n    (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset] << 24) |\n    (this[offset + 1] << 16) |\n    (this[offset + 2] << 8) |\n    (this[offset + 3])\n}\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n  offset = offset >>> 0\n  validateNumber(offset, 'offset')\n  const first = this[offset]\n  const last = this[offset + 7]\n  if (first === undefined || last === undefined) {\n    boundsError(offset, this.length - 8)\n  }\n\n  const val = this[offset + 4] +\n    this[offset + 5] * 2 ** 8 +\n    this[offset + 6] * 2 ** 16 +\n    (last << 24) // Overflow\n\n  return (BigInt(val) << BigInt(32)) +\n    BigInt(first +\n    this[++offset] * 2 ** 8 +\n    this[++offset] * 2 ** 16 +\n    this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n  offset = offset >>> 0\n  validateNumber(offset, 'offset')\n  const first = this[offset]\n  const last = this[offset + 7]\n  if (first === undefined || last === undefined) {\n    boundsError(offset, this.length - 8)\n  }\n\n  const val = (first << 24) + // Overflow\n    this[++offset] * 2 ** 16 +\n    this[++offset] * 2 ** 8 +\n    this[++offset]\n\n  return (BigInt(val) << BigInt(32)) +\n    BigInt(this[++offset] * 2 ** 24 +\n    this[++offset] * 2 ** 16 +\n    this[++offset] * 2 ** 8 +\n    last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 4, this.length)\n  return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 4, this.length)\n  return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 8, this.length)\n  return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 8, this.length)\n  return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n  if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n  if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n  if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  byteLength = byteLength >>> 0\n  if (!noAssert) {\n    const maxBytes = Math.pow(2, 8 * byteLength) - 1\n    checkInt(this, value, offset, byteLength, maxBytes, 0)\n  }\n\n  let mul = 1\n  let i = 0\n  this[offset] = value & 0xFF\n  while (++i < byteLength && (mul *= 0x100)) {\n    this[offset + i] = (value / mul) & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  byteLength = byteLength >>> 0\n  if (!noAssert) {\n    const maxBytes = Math.pow(2, 8 * byteLength) - 1\n    checkInt(this, value, offset, byteLength, maxBytes, 0)\n  }\n\n  let i = byteLength - 1\n  let mul = 1\n  this[offset + i] = value & 0xFF\n  while (--i >= 0 && (mul *= 0x100)) {\n    this[offset + i] = (value / mul) & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n  this[offset] = (value & 0xff)\n  return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n  this[offset] = (value & 0xff)\n  this[offset + 1] = (value >>> 8)\n  return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n  this[offset] = (value >>> 8)\n  this[offset + 1] = (value & 0xff)\n  return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n  this[offset + 3] = (value >>> 24)\n  this[offset + 2] = (value >>> 16)\n  this[offset + 1] = (value >>> 8)\n  this[offset] = (value & 0xff)\n  return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n  this[offset] = (value >>> 24)\n  this[offset + 1] = (value >>> 16)\n  this[offset + 2] = (value >>> 8)\n  this[offset + 3] = (value & 0xff)\n  return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n  checkIntBI(value, min, max, buf, offset, 7)\n\n  let lo = Number(value & BigInt(0xffffffff))\n  buf[offset++] = lo\n  lo = lo >> 8\n  buf[offset++] = lo\n  lo = lo >> 8\n  buf[offset++] = lo\n  lo = lo >> 8\n  buf[offset++] = lo\n  let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n  buf[offset++] = hi\n  hi = hi >> 8\n  buf[offset++] = hi\n  hi = hi >> 8\n  buf[offset++] = hi\n  hi = hi >> 8\n  buf[offset++] = hi\n  return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n  checkIntBI(value, min, max, buf, offset, 7)\n\n  let lo = Number(value & BigInt(0xffffffff))\n  buf[offset + 7] = lo\n  lo = lo >> 8\n  buf[offset + 6] = lo\n  lo = lo >> 8\n  buf[offset + 5] = lo\n  lo = lo >> 8\n  buf[offset + 4] = lo\n  let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n  buf[offset + 3] = hi\n  hi = hi >> 8\n  buf[offset + 2] = hi\n  hi = hi >> 8\n  buf[offset + 1] = hi\n  hi = hi >> 8\n  buf[offset] = hi\n  return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n  return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n  return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) {\n    const limit = Math.pow(2, (8 * byteLength) - 1)\n\n    checkInt(this, value, offset, byteLength, limit - 1, -limit)\n  }\n\n  let i = 0\n  let mul = 1\n  let sub = 0\n  this[offset] = value & 0xFF\n  while (++i < byteLength && (mul *= 0x100)) {\n    if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n      sub = 1\n    }\n    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) {\n    const limit = Math.pow(2, (8 * byteLength) - 1)\n\n    checkInt(this, value, offset, byteLength, limit - 1, -limit)\n  }\n\n  let i = byteLength - 1\n  let mul = 1\n  let sub = 0\n  this[offset + i] = value & 0xFF\n  while (--i >= 0 && (mul *= 0x100)) {\n    if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n      sub = 1\n    }\n    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n  if (value < 0) value = 0xff + value + 1\n  this[offset] = (value & 0xff)\n  return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n  this[offset] = (value & 0xff)\n  this[offset + 1] = (value >>> 8)\n  return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n  this[offset] = (value >>> 8)\n  this[offset + 1] = (value & 0xff)\n  return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n  this[offset] = (value & 0xff)\n  this[offset + 1] = (value >>> 8)\n  this[offset + 2] = (value >>> 16)\n  this[offset + 3] = (value >>> 24)\n  return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n  if (value < 0) value = 0xffffffff + value + 1\n  this[offset] = (value >>> 24)\n  this[offset + 1] = (value >>> 16)\n  this[offset + 2] = (value >>> 8)\n  this[offset + 3] = (value & 0xff)\n  return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n  return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n  return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n  if (offset + ext > buf.length) throw new RangeError('Index out of range')\n  if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) {\n    checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n  }\n  ieee754.write(buf, value, offset, littleEndian, 23, 4)\n  return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n  return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n  return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) {\n    checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n  }\n  ieee754.write(buf, value, offset, littleEndian, 52, 8)\n  return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n  return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n  return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n  if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n  if (!start) start = 0\n  if (!end && end !== 0) end = this.length\n  if (targetStart >= target.length) targetStart = target.length\n  if (!targetStart) targetStart = 0\n  if (end > 0 && end < start) end = start\n\n  // Copy 0 bytes; we're done\n  if (end === start) return 0\n  if (target.length === 0 || this.length === 0) return 0\n\n  // Fatal error conditions\n  if (targetStart < 0) {\n    throw new RangeError('targetStart out of bounds')\n  }\n  if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n  if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n  // Are we oob?\n  if (end > this.length) end = this.length\n  if (target.length - targetStart < end - start) {\n    end = target.length - targetStart + start\n  }\n\n  const len = end - start\n\n  if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n    // Use built-in when available, missing from IE11\n    this.copyWithin(targetStart, start, end)\n  } else {\n    Uint8Array.prototype.set.call(\n      target,\n      this.subarray(start, end),\n      targetStart\n    )\n  }\n\n  return len\n}\n\n// Usage:\n//    buffer.fill(number[, offset[, end]])\n//    buffer.fill(buffer[, offset[, end]])\n//    buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n  // Handle string cases:\n  if (typeof val === 'string') {\n    if (typeof start === 'string') {\n      encoding = start\n      start = 0\n      end = this.length\n    } else if (typeof end === 'string') {\n      encoding = end\n      end = this.length\n    }\n    if (encoding !== undefined && typeof encoding !== 'string') {\n      throw new TypeError('encoding must be a string')\n    }\n    if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n      throw new TypeError('Unknown encoding: ' + encoding)\n    }\n    if (val.length === 1) {\n      const code = val.charCodeAt(0)\n      if ((encoding === 'utf8' && code < 128) ||\n          encoding === 'latin1') {\n        // Fast path: If `val` fits into a single byte, use that numeric value.\n        val = code\n      }\n    }\n  } else if (typeof val === 'number') {\n    val = val & 255\n  } else if (typeof val === 'boolean') {\n    val = Number(val)\n  }\n\n  // Invalid ranges are not set to a default, so can range check early.\n  if (start < 0 || this.length < start || this.length < end) {\n    throw new RangeError('Out of range index')\n  }\n\n  if (end <= start) {\n    return this\n  }\n\n  start = start >>> 0\n  end = end === undefined ? this.length : end >>> 0\n\n  if (!val) val = 0\n\n  let i\n  if (typeof val === 'number') {\n    for (i = start; i < end; ++i) {\n      this[i] = val\n    }\n  } else {\n    const bytes = Buffer.isBuffer(val)\n      ? val\n      : Buffer.from(val, encoding)\n    const len = bytes.length\n    if (len === 0) {\n      throw new TypeError('The value \"' + val +\n        '\" is invalid for argument \"value\"')\n    }\n    for (i = 0; i < end - start; ++i) {\n      this[i + start] = bytes[i % len]\n    }\n  }\n\n  return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n  errors[sym] = class NodeError extends Base {\n    constructor () {\n      super()\n\n      Object.defineProperty(this, 'message', {\n        value: getMessage.apply(this, arguments),\n        writable: true,\n        configurable: true\n      })\n\n      // Add the error code to the name to include it in the stack trace.\n      this.name = `${this.name} [${sym}]`\n      // Access the stack to generate the error message including the error code\n      // from the name.\n      this.stack // eslint-disable-line no-unused-expressions\n      // Reset the name to the actual name.\n      delete this.name\n    }\n\n    get code () {\n      return sym\n    }\n\n    set code (value) {\n      Object.defineProperty(this, 'code', {\n        configurable: true,\n        enumerable: true,\n        value,\n        writable: true\n      })\n    }\n\n    toString () {\n      return `${this.name} [${sym}]: ${this.message}`\n    }\n  }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n  function (name) {\n    if (name) {\n      return `${name} is outside of buffer bounds`\n    }\n\n    return 'Attempt to access memory outside buffer bounds'\n  }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n  function (name, actual) {\n    return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n  }, TypeError)\nE('ERR_OUT_OF_RANGE',\n  function (str, range, input) {\n    let msg = `The value of \"${str}\" is out of range.`\n    let received = input\n    if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n      received = addNumericalSeparator(String(input))\n    } else if (typeof input === 'bigint') {\n      received = String(input)\n      if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n        received = addNumericalSeparator(received)\n      }\n      received += 'n'\n    }\n    msg += ` It must be ${range}. Received ${received}`\n    return msg\n  }, RangeError)\n\nfunction addNumericalSeparator (val) {\n  let res = ''\n  let i = val.length\n  const start = val[0] === '-' ? 1 : 0\n  for (; i >= start + 4; i -= 3) {\n    res = `_${val.slice(i - 3, i)}${res}`\n  }\n  return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n  validateNumber(offset, 'offset')\n  if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n    boundsError(offset, buf.length - (byteLength + 1))\n  }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n  if (value > max || value < min) {\n    const n = typeof min === 'bigint' ? 'n' : ''\n    let range\n    if (byteLength > 3) {\n      if (min === 0 || min === BigInt(0)) {\n        range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n      } else {\n        range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n                `${(byteLength + 1) * 8 - 1}${n}`\n      }\n    } else {\n      range = `>= ${min}${n} and <= ${max}${n}`\n    }\n    throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n  }\n  checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n  if (typeof value !== 'number') {\n    throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n  }\n}\n\nfunction boundsError (value, length, type) {\n  if (Math.floor(value) !== value) {\n    validateNumber(value, type)\n    throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n  }\n\n  if (length < 0) {\n    throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n  }\n\n  throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n                                    `>= ${type ? 1 : 0} and <= ${length}`,\n                                    value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n  // Node takes equal signs as end of the Base64 encoding\n  str = str.split('=')[0]\n  // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n  str = str.trim().replace(INVALID_BASE64_RE, '')\n  // Node converts strings with length < 2 to ''\n  if (str.length < 2) return ''\n  // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n  while (str.length % 4 !== 0) {\n    str = str + '='\n  }\n  return str\n}\n\nfunction utf8ToBytes (string, units) {\n  units = units || Infinity\n  let codePoint\n  const length = string.length\n  let leadSurrogate = null\n  const bytes = []\n\n  for (let i = 0; i < length; ++i) {\n    codePoint = string.charCodeAt(i)\n\n    // is surrogate component\n    if (codePoint > 0xD7FF && codePoint < 0xE000) {\n      // last char was a lead\n      if (!leadSurrogate) {\n        // no lead yet\n        if (codePoint > 0xDBFF) {\n          // unexpected trail\n          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n          continue\n        } else if (i + 1 === length) {\n          // unpaired lead\n          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n          continue\n        }\n\n        // valid lead\n        leadSurrogate = codePoint\n\n        continue\n      }\n\n      // 2 leads in a row\n      if (codePoint < 0xDC00) {\n        if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n        leadSurrogate = codePoint\n        continue\n      }\n\n      // valid surrogate pair\n      codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n    } else if (leadSurrogate) {\n      // valid bmp char, but last char was a lead\n      if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n    }\n\n    leadSurrogate = null\n\n    // encode utf8\n    if (codePoint < 0x80) {\n      if ((units -= 1) < 0) break\n      bytes.push(codePoint)\n    } else if (codePoint < 0x800) {\n      if ((units -= 2) < 0) break\n      bytes.push(\n        codePoint >> 0x6 | 0xC0,\n        codePoint & 0x3F | 0x80\n      )\n    } else if (codePoint < 0x10000) {\n      if ((units -= 3) < 0) break\n      bytes.push(\n        codePoint >> 0xC | 0xE0,\n        codePoint >> 0x6 & 0x3F | 0x80,\n        codePoint & 0x3F | 0x80\n      )\n    } else if (codePoint < 0x110000) {\n      if ((units -= 4) < 0) break\n      bytes.push(\n        codePoint >> 0x12 | 0xF0,\n        codePoint >> 0xC & 0x3F | 0x80,\n        codePoint >> 0x6 & 0x3F | 0x80,\n        codePoint & 0x3F | 0x80\n      )\n    } else {\n      throw new Error('Invalid code point')\n    }\n  }\n\n  return bytes\n}\n\nfunction asciiToBytes (str) {\n  const byteArray = []\n  for (let i = 0; i < str.length; ++i) {\n    // Node's code seems to be doing this and not & 0x7F..\n    byteArray.push(str.charCodeAt(i) & 0xFF)\n  }\n  return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n  let c, hi, lo\n  const byteArray = []\n  for (let i = 0; i < str.length; ++i) {\n    if ((units -= 2) < 0) break\n\n    c = str.charCodeAt(i)\n    hi = c >> 8\n    lo = c % 256\n    byteArray.push(lo)\n    byteArray.push(hi)\n  }\n\n  return byteArray\n}\n\nfunction base64ToBytes (str) {\n  return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n  let i\n  for (i = 0; i < length; ++i) {\n    if ((i + offset >= dst.length) || (i >= src.length)) break\n    dst[i + offset] = src[i]\n  }\n  return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n  return obj instanceof type ||\n    (obj != null && obj.constructor != null && obj.constructor.name != null &&\n      obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n  // For IE11 support\n  return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n  const alphabet = '0123456789abcdef'\n  const table = new Array(256)\n  for (let i = 0; i < 16; ++i) {\n    const i16 = i * 16\n    for (let j = 0; j < 16; ++j) {\n      table[i16 + j] = alphabet[i] + alphabet[j]\n    }\n  }\n  return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n  return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n  throw new Error('BigInt not supported')\n}\n", "// eslint-disable-next-line es/no-typed-arrays -- safe\nmodule.exports = typeof ArrayBuffer != 'undefined' && typeof DataView != 'undefined';\n", "'use strict';\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-native');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar hasOwn = require('../internals/has-own-property');\nvar classof = require('../internals/classof');\nvar tryToString = require('../internals/try-to-string');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar defineProperty = require('../internals/object-define-property').f;\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar uid = require('../internals/uid');\n\nvar Int8Array = global.Int8Array;\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\nvar Uint8ClampedArray = global.Uint8ClampedArray;\nvar Uint8ClampedArrayPrototype = Uint8ClampedArray && Uint8ClampedArray.prototype;\nvar TypedArray = Int8Array && getPrototypeOf(Int8Array);\nvar TypedArrayPrototype = Int8ArrayPrototype && getPrototypeOf(Int8ArrayPrototype);\nvar ObjectPrototype = Object.prototype;\nvar TypeError = global.TypeError;\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar TYPED_ARRAY_TAG = uid('TYPED_ARRAY_TAG');\nvar TYPED_ARRAY_CONSTRUCTOR = uid('TYPED_ARRAY_CONSTRUCTOR');\n// Fixing native typed arrays in Opera Presto crashes the browser, see #595\nvar NATIVE_ARRAY_BUFFER_VIEWS = NATIVE_ARRAY_BUFFER && !!setPrototypeOf && classof(global.opera) !== 'Opera';\nvar TYPED_ARRAY_TAG_REQIRED = false;\nvar NAME, Constructor, Prototype;\n\nvar TypedArrayConstructorsList = {\n  Int8Array: 1,\n  Uint8Array: 1,\n  Uint8ClampedArray: 1,\n  Int16Array: 2,\n  Uint16Array: 2,\n  Int32Array: 4,\n  Uint32Array: 4,\n  Float32Array: 4,\n  Float64Array: 8\n};\n\nvar BigIntArrayConstructorsList = {\n  BigInt64Array: 8,\n  BigUint64Array: 8\n};\n\nvar isView = function isView(it) {\n  if (!isObject(it)) return false;\n  var klass = classof(it);\n  return klass === 'DataView'\n    || hasOwn(TypedArrayConstructorsList, klass)\n    || hasOwn(BigIntArrayConstructorsList, klass);\n};\n\nvar isTypedArray = function (it) {\n  if (!isObject(it)) return false;\n  var klass = classof(it);\n  return hasOwn(TypedArrayConstructorsList, klass)\n    || hasOwn(BigIntArrayConstructorsList, klass);\n};\n\nvar aTypedArray = function (it) {\n  if (isTypedArray(it)) return it;\n  throw TypeError('Target is not a typed array');\n};\n\nvar aTypedArrayConstructor = function (C) {\n  if (isCallable(C) && (!setPrototypeOf || isPrototypeOf(TypedArray, C))) return C;\n  throw TypeError(tryToString(C) + ' is not a typed array constructor');\n};\n\nvar exportTypedArrayMethod = function (KEY, property, forced) {\n  if (!DESCRIPTORS) return;\n  if (forced) for (var ARRAY in TypedArrayConstructorsList) {\n    var TypedArrayConstructor = global[ARRAY];\n    if (TypedArrayConstructor && hasOwn(TypedArrayConstructor.prototype, KEY)) try {\n      delete TypedArrayConstructor.prototype[KEY];\n    } catch (error) { /* empty */ }\n  }\n  if (!TypedArrayPrototype[KEY] || forced) {\n    redefine(TypedArrayPrototype, KEY, forced ? property\n      : NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property);\n  }\n};\n\nvar exportTypedArrayStaticMethod = function (KEY, property, forced) {\n  var ARRAY, TypedArrayConstructor;\n  if (!DESCRIPTORS) return;\n  if (setPrototypeOf) {\n    if (forced) for (ARRAY in TypedArrayConstructorsList) {\n      TypedArrayConstructor = global[ARRAY];\n      if (TypedArrayConstructor && hasOwn(TypedArrayConstructor, KEY)) try {\n        delete TypedArrayConstructor[KEY];\n      } catch (error) { /* empty */ }\n    }\n    if (!TypedArray[KEY] || forced) {\n      // V8 ~ Chrome 49-50 `%TypedArray%` methods are non-writable non-configurable\n      try {\n        return redefine(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && TypedArray[KEY] || property);\n      } catch (error) { /* empty */ }\n    } else return;\n  }\n  for (ARRAY in TypedArrayConstructorsList) {\n    TypedArrayConstructor = global[ARRAY];\n    if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) {\n      redefine(TypedArrayConstructor, KEY, property);\n    }\n  }\n};\n\nfor (NAME in TypedArrayConstructorsList) {\n  Constructor = global[NAME];\n  Prototype = Constructor && Constructor.prototype;\n  if (Prototype) createNonEnumerableProperty(Prototype, TYPED_ARRAY_CONSTRUCTOR, Constructor);\n  else NATIVE_ARRAY_BUFFER_VIEWS = false;\n}\n\nfor (NAME in BigIntArrayConstructorsList) {\n  Constructor = global[NAME];\n  Prototype = Constructor && Constructor.prototype;\n  if (Prototype) createNonEnumerableProperty(Prototype, TYPED_ARRAY_CONSTRUCTOR, Constructor);\n}\n\n// WebKit bug - typed arrays constructors prototype is Object.prototype\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !isCallable(TypedArray) || TypedArray === Function.prototype) {\n  // eslint-disable-next-line no-shadow -- safe\n  TypedArray = function TypedArray() {\n    throw TypeError('Incorrect invocation');\n  };\n  if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n    if (global[NAME]) setPrototypeOf(global[NAME], TypedArray);\n  }\n}\n\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !TypedArrayPrototype || TypedArrayPrototype === ObjectPrototype) {\n  TypedArrayPrototype = TypedArray.prototype;\n  if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n    if (global[NAME]) setPrototypeOf(global[NAME].prototype, TypedArrayPrototype);\n  }\n}\n\n// WebKit bug - one more object in Uint8ClampedArray prototype chain\nif (NATIVE_ARRAY_BUFFER_VIEWS && getPrototypeOf(Uint8ClampedArrayPrototype) !== TypedArrayPrototype) {\n  setPrototypeOf(Uint8ClampedArrayPrototype, TypedArrayPrototype);\n}\n\nif (DESCRIPTORS && !hasOwn(TypedArrayPrototype, TO_STRING_TAG)) {\n  TYPED_ARRAY_TAG_REQIRED = true;\n  defineProperty(TypedArrayPrototype, TO_STRING_TAG, { get: function () {\n    return isObject(this) ? this[TYPED_ARRAY_TAG] : undefined;\n  } });\n  for (NAME in TypedArrayConstructorsList) if (global[NAME]) {\n    createNonEnumerableProperty(global[NAME], TYPED_ARRAY_TAG, NAME);\n  }\n}\n\nmodule.exports = {\n  NATIVE_ARRAY_BUFFER_VIEWS: NATIVE_ARRAY_BUFFER_VIEWS,\n  TYPED_ARRAY_CONSTRUCTOR: TYPED_ARRAY_CONSTRUCTOR,\n  TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQIRED && TYPED_ARRAY_TAG,\n  aTypedArray: aTypedArray,\n  aTypedArrayConstructor: aTypedArrayConstructor,\n  exportTypedArrayMethod: exportTypedArrayMethod,\n  exportTypedArrayStaticMethod: exportTypedArrayStaticMethod,\n  isView: isView,\n  isTypedArray: isTypedArray,\n  TypedArray: TypedArray,\n  TypedArrayPrototype: TypedArrayPrototype\n};\n", "'use strict';\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-native');\nvar FunctionName = require('../internals/function-name');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefineAll = require('../internals/redefine-all');\nvar fails = require('../internals/fails');\nvar anInstance = require('../internals/an-instance');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toLength = require('../internals/to-length');\nvar toIndex = require('../internals/to-index');\nvar IEEE754 = require('../internals/ieee754');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar defineProperty = require('../internals/object-define-property').f;\nvar arrayFill = require('../internals/array-fill');\nvar arraySlice = require('../internals/array-slice');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar PROPER_FUNCTION_NAME = FunctionName.PROPER;\nvar CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE;\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar DATA_VIEW = 'DataView';\nvar PROTOTYPE = 'prototype';\nvar WRONG_LENGTH = 'Wrong length';\nvar WRONG_INDEX = 'Wrong index';\nvar NativeArrayBuffer = global[ARRAY_BUFFER];\nvar $ArrayBuffer = NativeArrayBuffer;\nvar ArrayBufferPrototype = $ArrayBuffer && $ArrayBuffer[PROTOTYPE];\nvar $DataView = global[DATA_VIEW];\nvar DataViewPrototype = $DataView && $DataView[PROTOTYPE];\nvar ObjectPrototype = Object.prototype;\nvar Array = global.Array;\nvar RangeError = global.RangeError;\nvar fill = uncurryThis(arrayFill);\nvar reverse = uncurryThis([].reverse);\n\nvar packIEEE754 = IEEE754.pack;\nvar unpackIEEE754 = IEEE754.unpack;\n\nvar packInt8 = function (number) {\n  return [number & 0xFF];\n};\n\nvar packInt16 = function (number) {\n  return [number & 0xFF, number >> 8 & 0xFF];\n};\n\nvar packInt32 = function (number) {\n  return [number & 0xFF, number >> 8 & 0xFF, number >> 16 & 0xFF, number >> 24 & 0xFF];\n};\n\nvar unpackInt32 = function (buffer) {\n  return buffer[3] << 24 | buffer[2] << 16 | buffer[1] << 8 | buffer[0];\n};\n\nvar packFloat32 = function (number) {\n  return packIEEE754(number, 23, 4);\n};\n\nvar packFloat64 = function (number) {\n  return packIEEE754(number, 52, 8);\n};\n\nvar addGetter = function (Constructor, key) {\n  defineProperty(Constructor[PROTOTYPE], key, { get: function () { return getInternalState(this)[key]; } });\n};\n\nvar get = function (view, count, index, isLittleEndian) {\n  var intIndex = toIndex(index);\n  var store = getInternalState(view);\n  if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX);\n  var bytes = getInternalState(store.buffer).bytes;\n  var start = intIndex + store.byteOffset;\n  var pack = arraySlice(bytes, start, start + count);\n  return isLittleEndian ? pack : reverse(pack);\n};\n\nvar set = function (view, count, index, conversion, value, isLittleEndian) {\n  var intIndex = toIndex(index);\n  var store = getInternalState(view);\n  if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX);\n  var bytes = getInternalState(store.buffer).bytes;\n  var start = intIndex + store.byteOffset;\n  var pack = conversion(+value);\n  for (var i = 0; i < count; i++) bytes[start + i] = pack[isLittleEndian ? i : count - i - 1];\n};\n\nif (!NATIVE_ARRAY_BUFFER) {\n  $ArrayBuffer = function ArrayBuffer(length) {\n    anInstance(this, ArrayBufferPrototype);\n    var byteLength = toIndex(length);\n    setInternalState(this, {\n      bytes: fill(Array(byteLength), 0),\n      byteLength: byteLength\n    });\n    if (!DESCRIPTORS) this.byteLength = byteLength;\n  };\n\n  ArrayBufferPrototype = $ArrayBuffer[PROTOTYPE];\n\n  $DataView = function DataView(buffer, byteOffset, byteLength) {\n    anInstance(this, DataViewPrototype);\n    anInstance(buffer, ArrayBufferPrototype);\n    var bufferLength = getInternalState(buffer).byteLength;\n    var offset = toIntegerOrInfinity(byteOffset);\n    if (offset < 0 || offset > bufferLength) throw RangeError('Wrong offset');\n    byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);\n    if (offset + byteLength > bufferLength) throw RangeError(WRONG_LENGTH);\n    setInternalState(this, {\n      buffer: buffer,\n      byteLength: byteLength,\n      byteOffset: offset\n    });\n    if (!DESCRIPTORS) {\n      this.buffer = buffer;\n      this.byteLength = byteLength;\n      this.byteOffset = offset;\n    }\n  };\n\n  DataViewPrototype = $DataView[PROTOTYPE];\n\n  if (DESCRIPTORS) {\n    addGetter($ArrayBuffer, 'byteLength');\n    addGetter($DataView, 'buffer');\n    addGetter($DataView, 'byteLength');\n    addGetter($DataView, 'byteOffset');\n  }\n\n  redefineAll(DataViewPrototype, {\n    getInt8: function getInt8(byteOffset) {\n      return get(this, 1, byteOffset)[0] << 24 >> 24;\n    },\n    getUint8: function getUint8(byteOffset) {\n      return get(this, 1, byteOffset)[0];\n    },\n    getInt16: function getInt16(byteOffset /* , littleEndian */) {\n      var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : undefined);\n      return (bytes[1] << 8 | bytes[0]) << 16 >> 16;\n    },\n    getUint16: function getUint16(byteOffset /* , littleEndian */) {\n      var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : undefined);\n      return bytes[1] << 8 | bytes[0];\n    },\n    getInt32: function getInt32(byteOffset /* , littleEndian */) {\n      return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined));\n    },\n    getUint32: function getUint32(byteOffset /* , littleEndian */) {\n      return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined)) >>> 0;\n    },\n    getFloat32: function getFloat32(byteOffset /* , littleEndian */) {\n      return unpackIEEE754(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 23);\n    },\n    getFloat64: function getFloat64(byteOffset /* , littleEndian */) {\n      return unpackIEEE754(get(this, 8, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 52);\n    },\n    setInt8: function setInt8(byteOffset, value) {\n      set(this, 1, byteOffset, packInt8, value);\n    },\n    setUint8: function setUint8(byteOffset, value) {\n      set(this, 1, byteOffset, packInt8, value);\n    },\n    setInt16: function setInt16(byteOffset, value /* , littleEndian */) {\n      set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined);\n    },\n    setUint16: function setUint16(byteOffset, value /* , littleEndian */) {\n      set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined);\n    },\n    setInt32: function setInt32(byteOffset, value /* , littleEndian */) {\n      set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined);\n    },\n    setUint32: function setUint32(byteOffset, value /* , littleEndian */) {\n      set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined);\n    },\n    setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) {\n      set(this, 4, byteOffset, packFloat32, value, arguments.length > 2 ? arguments[2] : undefined);\n    },\n    setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) {\n      set(this, 8, byteOffset, packFloat64, value, arguments.length > 2 ? arguments[2] : undefined);\n    }\n  });\n} else {\n  var INCORRECT_ARRAY_BUFFER_NAME = PROPER_FUNCTION_NAME && NativeArrayBuffer.name !== ARRAY_BUFFER;\n  /* eslint-disable no-new -- required for testing */\n  if (!fails(function () {\n    NativeArrayBuffer(1);\n  }) || !fails(function () {\n    new NativeArrayBuffer(-1);\n  }) || fails(function () {\n    new NativeArrayBuffer();\n    new NativeArrayBuffer(1.5);\n    new NativeArrayBuffer(NaN);\n    return INCORRECT_ARRAY_BUFFER_NAME && !CONFIGURABLE_FUNCTION_NAME;\n  })) {\n  /* eslint-enable no-new -- required for testing */\n    $ArrayBuffer = function ArrayBuffer(length) {\n      anInstance(this, ArrayBufferPrototype);\n      return new NativeArrayBuffer(toIndex(length));\n    };\n\n    $ArrayBuffer[PROTOTYPE] = ArrayBufferPrototype;\n\n    for (var keys = getOwnPropertyNames(NativeArrayBuffer), j = 0, key; keys.length > j;) {\n      if (!((key = keys[j++]) in $ArrayBuffer)) {\n        createNonEnumerableProperty($ArrayBuffer, key, NativeArrayBuffer[key]);\n      }\n    }\n\n    ArrayBufferPrototype.constructor = $ArrayBuffer;\n  } else if (INCORRECT_ARRAY_BUFFER_NAME && CONFIGURABLE_FUNCTION_NAME) {\n    createNonEnumerableProperty(NativeArrayBuffer, 'name', ARRAY_BUFFER);\n  }\n\n  // WebKit bug - the same parent prototype for typed arrays and data view\n  if (setPrototypeOf && getPrototypeOf(DataViewPrototype) !== ObjectPrototype) {\n    setPrototypeOf(DataViewPrototype, ObjectPrototype);\n  }\n\n  // iOS Safari 7.x bug\n  var testView = new $DataView(new $ArrayBuffer(2));\n  var $setInt8 = uncurryThis(DataViewPrototype.setInt8);\n  testView.setInt8(0, 2147483648);\n  testView.setInt8(1, 2147483649);\n  if (testView.getInt8(0) || !testView.getInt8(1)) redefineAll(DataViewPrototype, {\n    setInt8: function setInt8(byteOffset, value) {\n      $setInt8(this, byteOffset, value << 24 >> 24);\n    },\n    setUint8: function setUint8(byteOffset, value) {\n      $setInt8(this, byteOffset, value << 24 >> 24);\n    }\n  }, { unsafe: true });\n}\n\nsetToStringTag($ArrayBuffer, ARRAY_BUFFER);\nsetToStringTag($DataView, DATA_VIEW);\n\nmodule.exports = {\n  ArrayBuffer: $ArrayBuffer,\n  DataView: $DataView\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar arrayBufferModule = require('../internals/array-buffer');\nvar setSpecies = require('../internals/set-species');\n\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar ArrayBuffer = arrayBufferModule[ARRAY_BUFFER];\nvar NativeArrayBuffer = global[ARRAY_BUFFER];\n\n// `ArrayBuffer` constructor\n// https://tc39.es/ecma262/#sec-arraybuffer-constructor\n$({ global: true, forced: NativeArrayBuffer !== ArrayBuffer }, {\n  ArrayBuffer: ArrayBuffer\n});\n\nsetSpecies(ARRAY_BUFFER);\n", ";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var BlockCipher = C_lib.BlockCipher;\n\t    var C_algo = C.algo;\n\n\t    // Lookup tables\n\t    var SBOX = [];\n\t    var INV_SBOX = [];\n\t    var SUB_MIX_0 = [];\n\t    var SUB_MIX_1 = [];\n\t    var SUB_MIX_2 = [];\n\t    var SUB_MIX_3 = [];\n\t    var INV_SUB_MIX_0 = [];\n\t    var INV_SUB_MIX_1 = [];\n\t    var INV_SUB_MIX_2 = [];\n\t    var INV_SUB_MIX_3 = [];\n\n\t    // Compute lookup tables\n\t    (function () {\n\t        // Compute double table\n\t        var d = [];\n\t        for (var i = 0; i < 256; i++) {\n\t            if (i < 128) {\n\t                d[i] = i << 1;\n\t            } else {\n\t                d[i] = (i << 1) ^ 0x11b;\n\t            }\n\t        }\n\n\t        // Walk GF(2^8)\n\t        var x = 0;\n\t        var xi = 0;\n\t        for (var i = 0; i < 256; i++) {\n\t            // Compute sbox\n\t            var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4);\n\t            sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63;\n\t            SBOX[x] = sx;\n\t            INV_SBOX[sx] = x;\n\n\t            // Compute multiplication\n\t            var x2 = d[x];\n\t            var x4 = d[x2];\n\t            var x8 = d[x4];\n\n\t            // Compute sub bytes, mix columns tables\n\t            var t = (d[sx] * 0x101) ^ (sx * 0x1010100);\n\t            SUB_MIX_0[x] = (t << 24) | (t >>> 8);\n\t            SUB_MIX_1[x] = (t << 16) | (t >>> 16);\n\t            SUB_MIX_2[x] = (t << 8)  | (t >>> 24);\n\t            SUB_MIX_3[x] = t;\n\n\t            // Compute inv sub bytes, inv mix columns tables\n\t            var t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100);\n\t            INV_SUB_MIX_0[sx] = (t << 24) | (t >>> 8);\n\t            INV_SUB_MIX_1[sx] = (t << 16) | (t >>> 16);\n\t            INV_SUB_MIX_2[sx] = (t << 8)  | (t >>> 24);\n\t            INV_SUB_MIX_3[sx] = t;\n\n\t            // Compute next counter\n\t            if (!x) {\n\t                x = xi = 1;\n\t            } else {\n\t                x = x2 ^ d[d[d[x8 ^ x2]]];\n\t                xi ^= d[d[xi]];\n\t            }\n\t        }\n\t    }());\n\n\t    // Precomputed Rcon lookup\n\t    var RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36];\n\n\t    /**\n\t     * AES block cipher algorithm.\n\t     */\n\t    var AES = C_algo.AES = BlockCipher.extend({\n\t        _doReset: function () {\n\t            var t;\n\n\t            // Skip reset of nRounds has been set before and key did not change\n\t            if (this._nRounds && this._keyPriorReset === this._key) {\n\t                return;\n\t            }\n\n\t            // Shortcuts\n\t            var key = this._keyPriorReset = this._key;\n\t            var keyWords = key.words;\n\t            var keySize = key.sigBytes / 4;\n\n\t            // Compute number of rounds\n\t            var nRounds = this._nRounds = keySize + 6;\n\n\t            // Compute number of key schedule rows\n\t            var ksRows = (nRounds + 1) * 4;\n\n\t            // Compute key schedule\n\t            var keySchedule = this._keySchedule = [];\n\t            for (var ksRow = 0; ksRow < ksRows; ksRow++) {\n\t                if (ksRow < keySize) {\n\t                    keySchedule[ksRow] = keyWords[ksRow];\n\t                } else {\n\t                    t = keySchedule[ksRow - 1];\n\n\t                    if (!(ksRow % keySize)) {\n\t                        // Rot word\n\t                        t = (t << 8) | (t >>> 24);\n\n\t                        // Sub word\n\t                        t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\n\n\t                        // Mix Rcon\n\t                        t ^= RCON[(ksRow / keySize) | 0] << 24;\n\t                    } else if (keySize > 6 && ksRow % keySize == 4) {\n\t                        // Sub word\n\t                        t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\n\t                    }\n\n\t                    keySchedule[ksRow] = keySchedule[ksRow - keySize] ^ t;\n\t                }\n\t            }\n\n\t            // Compute inv key schedule\n\t            var invKeySchedule = this._invKeySchedule = [];\n\t            for (var invKsRow = 0; invKsRow < ksRows; invKsRow++) {\n\t                var ksRow = ksRows - invKsRow;\n\n\t                if (invKsRow % 4) {\n\t                    var t = keySchedule[ksRow];\n\t                } else {\n\t                    var t = keySchedule[ksRow - 4];\n\t                }\n\n\t                if (invKsRow < 4 || ksRow <= 4) {\n\t                    invKeySchedule[invKsRow] = t;\n\t                } else {\n\t                    invKeySchedule[invKsRow] = INV_SUB_MIX_0[SBOX[t >>> 24]] ^ INV_SUB_MIX_1[SBOX[(t >>> 16) & 0xff]] ^\n\t                                               INV_SUB_MIX_2[SBOX[(t >>> 8) & 0xff]] ^ INV_SUB_MIX_3[SBOX[t & 0xff]];\n\t                }\n\t            }\n\t        },\n\n\t        encryptBlock: function (M, offset) {\n\t            this._doCryptBlock(M, offset, this._keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX);\n\t        },\n\n\t        decryptBlock: function (M, offset) {\n\t            // Swap 2nd and 4th rows\n\t            var t = M[offset + 1];\n\t            M[offset + 1] = M[offset + 3];\n\t            M[offset + 3] = t;\n\n\t            this._doCryptBlock(M, offset, this._invKeySchedule, INV_SUB_MIX_0, INV_SUB_MIX_1, INV_SUB_MIX_2, INV_SUB_MIX_3, INV_SBOX);\n\n\t            // Inv swap 2nd and 4th rows\n\t            var t = M[offset + 1];\n\t            M[offset + 1] = M[offset + 3];\n\t            M[offset + 3] = t;\n\t        },\n\n\t        _doCryptBlock: function (M, offset, keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX) {\n\t            // Shortcut\n\t            var nRounds = this._nRounds;\n\n\t            // Get input, add round key\n\t            var s0 = M[offset]     ^ keySchedule[0];\n\t            var s1 = M[offset + 1] ^ keySchedule[1];\n\t            var s2 = M[offset + 2] ^ keySchedule[2];\n\t            var s3 = M[offset + 3] ^ keySchedule[3];\n\n\t            // Key schedule row counter\n\t            var ksRow = 4;\n\n\t            // Rounds\n\t            for (var round = 1; round < nRounds; round++) {\n\t                // Shift rows, sub bytes, mix columns, add round key\n\t                var t0 = SUB_MIX_0[s0 >>> 24] ^ SUB_MIX_1[(s1 >>> 16) & 0xff] ^ SUB_MIX_2[(s2 >>> 8) & 0xff] ^ SUB_MIX_3[s3 & 0xff] ^ keySchedule[ksRow++];\n\t                var t1 = SUB_MIX_0[s1 >>> 24] ^ SUB_MIX_1[(s2 >>> 16) & 0xff] ^ SUB_MIX_2[(s3 >>> 8) & 0xff] ^ SUB_MIX_3[s0 & 0xff] ^ keySchedule[ksRow++];\n\t                var t2 = SUB_MIX_0[s2 >>> 24] ^ SUB_MIX_1[(s3 >>> 16) & 0xff] ^ SUB_MIX_2[(s0 >>> 8) & 0xff] ^ SUB_MIX_3[s1 & 0xff] ^ keySchedule[ksRow++];\n\t                var t3 = SUB_MIX_0[s3 >>> 24] ^ SUB_MIX_1[(s0 >>> 16) & 0xff] ^ SUB_MIX_2[(s1 >>> 8) & 0xff] ^ SUB_MIX_3[s2 & 0xff] ^ keySchedule[ksRow++];\n\n\t                // Update state\n\t                s0 = t0;\n\t                s1 = t1;\n\t                s2 = t2;\n\t                s3 = t3;\n\t            }\n\n\t            // Shift rows, sub bytes, add round key\n\t            var t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++];\n\t            var t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++];\n\t            var t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++];\n\t            var t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++];\n\n\t            // Set output\n\t            M[offset]     = t0;\n\t            M[offset + 1] = t1;\n\t            M[offset + 2] = t2;\n\t            M[offset + 3] = t3;\n\t        },\n\n\t        keySize: 256/32\n\t    });\n\n\t    /**\n\t     * Shortcut functions to the cipher's object interface.\n\t     *\n\t     * @example\n\t     *\n\t     *     var ciphertext = CryptoJS.AES.encrypt(message, key, cfg);\n\t     *     var plaintext  = CryptoJS.AES.decrypt(ciphertext, key, cfg);\n\t     */\n\t    C.AES = BlockCipher._createHelper(AES);\n\t}());\n\n\n\treturn CryptoJS.AES;\n\n}));", ";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./evpkdf\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./evpkdf\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Cipher core components.\n\t */\n\tCryptoJS.lib.Cipher || (function (undefined) {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var Base = C_lib.Base;\n\t    var WordArray = C_lib.WordArray;\n\t    var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm;\n\t    var C_enc = C.enc;\n\t    var Utf8 = C_enc.Utf8;\n\t    var Base64 = C_enc.Base64;\n\t    var C_algo = C.algo;\n\t    var EvpKDF = C_algo.EvpKDF;\n\n\t    /**\n\t     * Abstract base cipher template.\n\t     *\n\t     * @property {number} keySize This cipher's key size. Default: 4 (128 bits)\n\t     * @property {number} ivSize This cipher's IV size. Default: 4 (128 bits)\n\t     * @property {number} _ENC_XFORM_MODE A constant representing encryption mode.\n\t     * @property {number} _DEC_XFORM_MODE A constant representing decryption mode.\n\t     */\n\t    var Cipher = C_lib.Cipher = BufferedBlockAlgorithm.extend({\n\t        /**\n\t         * Configuration options.\n\t         *\n\t         * @property {WordArray} iv The IV to use for this operation.\n\t         */\n\t        cfg: Base.extend(),\n\n\t        /**\n\t         * Creates this cipher in encryption mode.\n\t         *\n\t         * @param {WordArray} key The key.\n\t         * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t         *\n\t         * @return {Cipher} A cipher instance.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var cipher = CryptoJS.algo.AES.createEncryptor(keyWordArray, { iv: ivWordArray });\n\t         */\n\t        createEncryptor: function (key, cfg) {\n\t            return this.create(this._ENC_XFORM_MODE, key, cfg);\n\t        },\n\n\t        /**\n\t         * Creates this cipher in decryption mode.\n\t         *\n\t         * @param {WordArray} key The key.\n\t         * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t         *\n\t         * @return {Cipher} A cipher instance.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var cipher = CryptoJS.algo.AES.createDecryptor(keyWordArray, { iv: ivWordArray });\n\t         */\n\t        createDecryptor: function (key, cfg) {\n\t            return this.create(this._DEC_XFORM_MODE, key, cfg);\n\t        },\n\n\t        /**\n\t         * Initializes a newly created cipher.\n\t         *\n\t         * @param {number} xformMode Either the encryption or decryption transormation mode constant.\n\t         * @param {WordArray} key The key.\n\t         * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t         *\n\t         * @example\n\t         *\n\t         *     var cipher = CryptoJS.algo.AES.create(CryptoJS.algo.AES._ENC_XFORM_MODE, keyWordArray, { iv: ivWordArray });\n\t         */\n\t        init: function (xformMode, key, cfg) {\n\t            // Apply config defaults\n\t            this.cfg = this.cfg.extend(cfg);\n\n\t            // Store transform mode and key\n\t            this._xformMode = xformMode;\n\t            this._key = key;\n\n\t            // Set initial values\n\t            this.reset();\n\t        },\n\n\t        /**\n\t         * Resets this cipher to its initial state.\n\t         *\n\t         * @example\n\t         *\n\t         *     cipher.reset();\n\t         */\n\t        reset: function () {\n\t            // Reset data buffer\n\t            BufferedBlockAlgorithm.reset.call(this);\n\n\t            // Perform concrete-cipher logic\n\t            this._doReset();\n\t        },\n\n\t        /**\n\t         * Adds data to be encrypted or decrypted.\n\t         *\n\t         * @param {WordArray|string} dataUpdate The data to encrypt or decrypt.\n\t         *\n\t         * @return {WordArray} The data after processing.\n\t         *\n\t         * @example\n\t         *\n\t         *     var encrypted = cipher.process('data');\n\t         *     var encrypted = cipher.process(wordArray);\n\t         */\n\t        process: function (dataUpdate) {\n\t            // Append\n\t            this._append(dataUpdate);\n\n\t            // Process available blocks\n\t            return this._process();\n\t        },\n\n\t        /**\n\t         * Finalizes the encryption or decryption process.\n\t         * Note that the finalize operation is effectively a destructive, read-once operation.\n\t         *\n\t         * @param {WordArray|string} dataUpdate The final data to encrypt or decrypt.\n\t         *\n\t         * @return {WordArray} The data after final processing.\n\t         *\n\t         * @example\n\t         *\n\t         *     var encrypted = cipher.finalize();\n\t         *     var encrypted = cipher.finalize('data');\n\t         *     var encrypted = cipher.finalize(wordArray);\n\t         */\n\t        finalize: function (dataUpdate) {\n\t            // Final data update\n\t            if (dataUpdate) {\n\t                this._append(dataUpdate);\n\t            }\n\n\t            // Perform concrete-cipher logic\n\t            var finalProcessedData = this._doFinalize();\n\n\t            return finalProcessedData;\n\t        },\n\n\t        keySize: 128/32,\n\n\t        ivSize: 128/32,\n\n\t        _ENC_XFORM_MODE: 1,\n\n\t        _DEC_XFORM_MODE: 2,\n\n\t        /**\n\t         * Creates shortcut functions to a cipher's object interface.\n\t         *\n\t         * @param {Cipher} cipher The cipher to create a helper for.\n\t         *\n\t         * @return {Object} An object with encrypt and decrypt shortcut functions.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var AES = CryptoJS.lib.Cipher._createHelper(CryptoJS.algo.AES);\n\t         */\n\t        _createHelper: (function () {\n\t            function selectCipherStrategy(key) {\n\t                if (typeof key == 'string') {\n\t                    return PasswordBasedCipher;\n\t                } else {\n\t                    return SerializableCipher;\n\t                }\n\t            }\n\n\t            return function (cipher) {\n\t                return {\n\t                    encrypt: function (message, key, cfg) {\n\t                        return selectCipherStrategy(key).encrypt(cipher, message, key, cfg);\n\t                    },\n\n\t                    decrypt: function (ciphertext, key, cfg) {\n\t                        return selectCipherStrategy(key).decrypt(cipher, ciphertext, key, cfg);\n\t                    }\n\t                };\n\t            };\n\t        }())\n\t    });\n\n\t    /**\n\t     * Abstract base stream cipher template.\n\t     *\n\t     * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 1 (32 bits)\n\t     */\n\t    var StreamCipher = C_lib.StreamCipher = Cipher.extend({\n\t        _doFinalize: function () {\n\t            // Process partial blocks\n\t            var finalProcessedBlocks = this._process(!!'flush');\n\n\t            return finalProcessedBlocks;\n\t        },\n\n\t        blockSize: 1\n\t    });\n\n\t    /**\n\t     * Mode namespace.\n\t     */\n\t    var C_mode = C.mode = {};\n\n\t    /**\n\t     * Abstract base block cipher mode template.\n\t     */\n\t    var BlockCipherMode = C_lib.BlockCipherMode = Base.extend({\n\t        /**\n\t         * Creates this mode for encryption.\n\t         *\n\t         * @param {Cipher} cipher A block cipher instance.\n\t         * @param {Array} iv The IV words.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var mode = CryptoJS.mode.CBC.createEncryptor(cipher, iv.words);\n\t         */\n\t        createEncryptor: function (cipher, iv) {\n\t            return this.Encryptor.create(cipher, iv);\n\t        },\n\n\t        /**\n\t         * Creates this mode for decryption.\n\t         *\n\t         * @param {Cipher} cipher A block cipher instance.\n\t         * @param {Array} iv The IV words.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var mode = CryptoJS.mode.CBC.createDecryptor(cipher, iv.words);\n\t         */\n\t        createDecryptor: function (cipher, iv) {\n\t            return this.Decryptor.create(cipher, iv);\n\t        },\n\n\t        /**\n\t         * Initializes a newly created mode.\n\t         *\n\t         * @param {Cipher} cipher A block cipher instance.\n\t         * @param {Array} iv The IV words.\n\t         *\n\t         * @example\n\t         *\n\t         *     var mode = CryptoJS.mode.CBC.Encryptor.create(cipher, iv.words);\n\t         */\n\t        init: function (cipher, iv) {\n\t            this._cipher = cipher;\n\t            this._iv = iv;\n\t        }\n\t    });\n\n\t    /**\n\t     * Cipher Block Chaining mode.\n\t     */\n\t    var CBC = C_mode.CBC = (function () {\n\t        /**\n\t         * Abstract base CBC mode.\n\t         */\n\t        var CBC = BlockCipherMode.extend();\n\n\t        /**\n\t         * CBC encryptor.\n\t         */\n\t        CBC.Encryptor = CBC.extend({\n\t            /**\n\t             * Processes the data block at offset.\n\t             *\n\t             * @param {Array} words The data words to operate on.\n\t             * @param {number} offset The offset where the block starts.\n\t             *\n\t             * @example\n\t             *\n\t             *     mode.processBlock(data.words, offset);\n\t             */\n\t            processBlock: function (words, offset) {\n\t                // Shortcuts\n\t                var cipher = this._cipher;\n\t                var blockSize = cipher.blockSize;\n\n\t                // XOR and encrypt\n\t                xorBlock.call(this, words, offset, blockSize);\n\t                cipher.encryptBlock(words, offset);\n\n\t                // Remember this block to use with next block\n\t                this._prevBlock = words.slice(offset, offset + blockSize);\n\t            }\n\t        });\n\n\t        /**\n\t         * CBC decryptor.\n\t         */\n\t        CBC.Decryptor = CBC.extend({\n\t            /**\n\t             * Processes the data block at offset.\n\t             *\n\t             * @param {Array} words The data words to operate on.\n\t             * @param {number} offset The offset where the block starts.\n\t             *\n\t             * @example\n\t             *\n\t             *     mode.processBlock(data.words, offset);\n\t             */\n\t            processBlock: function (words, offset) {\n\t                // Shortcuts\n\t                var cipher = this._cipher;\n\t                var blockSize = cipher.blockSize;\n\n\t                // Remember this block to use with next block\n\t                var thisBlock = words.slice(offset, offset + blockSize);\n\n\t                // Decrypt and XOR\n\t                cipher.decryptBlock(words, offset);\n\t                xorBlock.call(this, words, offset, blockSize);\n\n\t                // This block becomes the previous block\n\t                this._prevBlock = thisBlock;\n\t            }\n\t        });\n\n\t        function xorBlock(words, offset, blockSize) {\n\t            var block;\n\n\t            // Shortcut\n\t            var iv = this._iv;\n\n\t            // Choose mixing block\n\t            if (iv) {\n\t                block = iv;\n\n\t                // Remove IV for subsequent blocks\n\t                this._iv = undefined;\n\t            } else {\n\t                block = this._prevBlock;\n\t            }\n\n\t            // XOR blocks\n\t            for (var i = 0; i < blockSize; i++) {\n\t                words[offset + i] ^= block[i];\n\t            }\n\t        }\n\n\t        return CBC;\n\t    }());\n\n\t    /**\n\t     * Padding namespace.\n\t     */\n\t    var C_pad = C.pad = {};\n\n\t    /**\n\t     * PKCS #5/7 padding strategy.\n\t     */\n\t    var Pkcs7 = C_pad.Pkcs7 = {\n\t        /**\n\t         * Pads data using the algorithm defined in PKCS #5/7.\n\t         *\n\t         * @param {WordArray} data The data to pad.\n\t         * @param {number} blockSize The multiple that the data should be padded to.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     CryptoJS.pad.Pkcs7.pad(wordArray, 4);\n\t         */\n\t        pad: function (data, blockSize) {\n\t            // Shortcut\n\t            var blockSizeBytes = blockSize * 4;\n\n\t            // Count padding bytes\n\t            var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;\n\n\t            // Create padding word\n\t            var paddingWord = (nPaddingBytes << 24) | (nPaddingBytes << 16) | (nPaddingBytes << 8) | nPaddingBytes;\n\n\t            // Create padding\n\t            var paddingWords = [];\n\t            for (var i = 0; i < nPaddingBytes; i += 4) {\n\t                paddingWords.push(paddingWord);\n\t            }\n\t            var padding = WordArray.create(paddingWords, nPaddingBytes);\n\n\t            // Add padding\n\t            data.concat(padding);\n\t        },\n\n\t        /**\n\t         * Unpads data that had been padded using the algorithm defined in PKCS #5/7.\n\t         *\n\t         * @param {WordArray} data The data to unpad.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     CryptoJS.pad.Pkcs7.unpad(wordArray);\n\t         */\n\t        unpad: function (data) {\n\t            // Get number of padding bytes from last byte\n\t            var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t            // Remove padding\n\t            data.sigBytes -= nPaddingBytes;\n\t        }\n\t    };\n\n\t    /**\n\t     * Abstract base block cipher template.\n\t     *\n\t     * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 4 (128 bits)\n\t     */\n\t    var BlockCipher = C_lib.BlockCipher = Cipher.extend({\n\t        /**\n\t         * Configuration options.\n\t         *\n\t         * @property {Mode} mode The block mode to use. Default: CBC\n\t         * @property {Padding} padding The padding strategy to use. Default: Pkcs7\n\t         */\n\t        cfg: Cipher.cfg.extend({\n\t            mode: CBC,\n\t            padding: Pkcs7\n\t        }),\n\n\t        reset: function () {\n\t            var modeCreator;\n\n\t            // Reset cipher\n\t            Cipher.reset.call(this);\n\n\t            // Shortcuts\n\t            var cfg = this.cfg;\n\t            var iv = cfg.iv;\n\t            var mode = cfg.mode;\n\n\t            // Reset block mode\n\t            if (this._xformMode == this._ENC_XFORM_MODE) {\n\t                modeCreator = mode.createEncryptor;\n\t            } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n\t                modeCreator = mode.createDecryptor;\n\t                // Keep at least one block in the buffer for unpadding\n\t                this._minBufferSize = 1;\n\t            }\n\n\t            if (this._mode && this._mode.__creator == modeCreator) {\n\t                this._mode.init(this, iv && iv.words);\n\t            } else {\n\t                this._mode = modeCreator.call(mode, this, iv && iv.words);\n\t                this._mode.__creator = modeCreator;\n\t            }\n\t        },\n\n\t        _doProcessBlock: function (words, offset) {\n\t            this._mode.processBlock(words, offset);\n\t        },\n\n\t        _doFinalize: function () {\n\t            var finalProcessedBlocks;\n\n\t            // Shortcut\n\t            var padding = this.cfg.padding;\n\n\t            // Finalize\n\t            if (this._xformMode == this._ENC_XFORM_MODE) {\n\t                // Pad data\n\t                padding.pad(this._data, this.blockSize);\n\n\t                // Process final blocks\n\t                finalProcessedBlocks = this._process(!!'flush');\n\t            } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n\t                // Process final blocks\n\t                finalProcessedBlocks = this._process(!!'flush');\n\n\t                // Unpad data\n\t                padding.unpad(finalProcessedBlocks);\n\t            }\n\n\t            return finalProcessedBlocks;\n\t        },\n\n\t        blockSize: 128/32\n\t    });\n\n\t    /**\n\t     * A collection of cipher parameters.\n\t     *\n\t     * @property {WordArray} ciphertext The raw ciphertext.\n\t     * @property {WordArray} key The key to this ciphertext.\n\t     * @property {WordArray} iv The IV used in the ciphering operation.\n\t     * @property {WordArray} salt The salt used with a key derivation function.\n\t     * @property {Cipher} algorithm The cipher algorithm.\n\t     * @property {Mode} mode The block mode used in the ciphering operation.\n\t     * @property {Padding} padding The padding scheme used in the ciphering operation.\n\t     * @property {number} blockSize The block size of the cipher.\n\t     * @property {Format} formatter The default formatting strategy to convert this cipher params object to a string.\n\t     */\n\t    var CipherParams = C_lib.CipherParams = Base.extend({\n\t        /**\n\t         * Initializes a newly created cipher params object.\n\t         *\n\t         * @param {Object} cipherParams An object with any of the possible cipher parameters.\n\t         *\n\t         * @example\n\t         *\n\t         *     var cipherParams = CryptoJS.lib.CipherParams.create({\n\t         *         ciphertext: ciphertextWordArray,\n\t         *         key: keyWordArray,\n\t         *         iv: ivWordArray,\n\t         *         salt: saltWordArray,\n\t         *         algorithm: CryptoJS.algo.AES,\n\t         *         mode: CryptoJS.mode.CBC,\n\t         *         padding: CryptoJS.pad.PKCS7,\n\t         *         blockSize: 4,\n\t         *         formatter: CryptoJS.format.OpenSSL\n\t         *     });\n\t         */\n\t        init: function (cipherParams) {\n\t            this.mixIn(cipherParams);\n\t        },\n\n\t        /**\n\t         * Converts this cipher params object to a string.\n\t         *\n\t         * @param {Format} formatter (Optional) The formatting strategy to use.\n\t         *\n\t         * @return {string} The stringified cipher params.\n\t         *\n\t         * @throws Error If neither the formatter nor the default formatter is set.\n\t         *\n\t         * @example\n\t         *\n\t         *     var string = cipherParams + '';\n\t         *     var string = cipherParams.toString();\n\t         *     var string = cipherParams.toString(CryptoJS.format.OpenSSL);\n\t         */\n\t        toString: function (formatter) {\n\t            return (formatter || this.formatter).stringify(this);\n\t        }\n\t    });\n\n\t    /**\n\t     * Format namespace.\n\t     */\n\t    var C_format = C.format = {};\n\n\t    /**\n\t     * OpenSSL formatting strategy.\n\t     */\n\t    var OpenSSLFormatter = C_format.OpenSSL = {\n\t        /**\n\t         * Converts a cipher params object to an OpenSSL-compatible string.\n\t         *\n\t         * @param {CipherParams} cipherParams The cipher params object.\n\t         *\n\t         * @return {string} The OpenSSL-compatible string.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var openSSLString = CryptoJS.format.OpenSSL.stringify(cipherParams);\n\t         */\n\t        stringify: function (cipherParams) {\n\t            var wordArray;\n\n\t            // Shortcuts\n\t            var ciphertext = cipherParams.ciphertext;\n\t            var salt = cipherParams.salt;\n\n\t            // Format\n\t            if (salt) {\n\t                wordArray = WordArray.create([0x53616c74, 0x65645f5f]).concat(salt).concat(ciphertext);\n\t            } else {\n\t                wordArray = ciphertext;\n\t            }\n\n\t            return wordArray.toString(Base64);\n\t        },\n\n\t        /**\n\t         * Converts an OpenSSL-compatible string to a cipher params object.\n\t         *\n\t         * @param {string} openSSLStr The OpenSSL-compatible string.\n\t         *\n\t         * @return {CipherParams} The cipher params object.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var cipherParams = CryptoJS.format.OpenSSL.parse(openSSLString);\n\t         */\n\t        parse: function (openSSLStr) {\n\t            var salt;\n\n\t            // Parse base64\n\t            var ciphertext = Base64.parse(openSSLStr);\n\n\t            // Shortcut\n\t            var ciphertextWords = ciphertext.words;\n\n\t            // Test for salt\n\t            if (ciphertextWords[0] == 0x53616c74 && ciphertextWords[1] == 0x65645f5f) {\n\t                // Extract salt\n\t                salt = WordArray.create(ciphertextWords.slice(2, 4));\n\n\t                // Remove salt from ciphertext\n\t                ciphertextWords.splice(0, 4);\n\t                ciphertext.sigBytes -= 16;\n\t            }\n\n\t            return CipherParams.create({ ciphertext: ciphertext, salt: salt });\n\t        }\n\t    };\n\n\t    /**\n\t     * A cipher wrapper that returns ciphertext as a serializable cipher params object.\n\t     */\n\t    var SerializableCipher = C_lib.SerializableCipher = Base.extend({\n\t        /**\n\t         * Configuration options.\n\t         *\n\t         * @property {Formatter} format The formatting strategy to convert cipher param objects to and from a string. Default: OpenSSL\n\t         */\n\t        cfg: Base.extend({\n\t            format: OpenSSLFormatter\n\t        }),\n\n\t        /**\n\t         * Encrypts a message.\n\t         *\n\t         * @param {Cipher} cipher The cipher algorithm to use.\n\t         * @param {WordArray|string} message The message to encrypt.\n\t         * @param {WordArray} key The key.\n\t         * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t         *\n\t         * @return {CipherParams} A cipher params object.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key);\n\t         *     var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv });\n\t         *     var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t         */\n\t        encrypt: function (cipher, message, key, cfg) {\n\t            // Apply config defaults\n\t            cfg = this.cfg.extend(cfg);\n\n\t            // Encrypt\n\t            var encryptor = cipher.createEncryptor(key, cfg);\n\t            var ciphertext = encryptor.finalize(message);\n\n\t            // Shortcut\n\t            var cipherCfg = encryptor.cfg;\n\n\t            // Create and return serializable cipher params\n\t            return CipherParams.create({\n\t                ciphertext: ciphertext,\n\t                key: key,\n\t                iv: cipherCfg.iv,\n\t                algorithm: cipher,\n\t                mode: cipherCfg.mode,\n\t                padding: cipherCfg.padding,\n\t                blockSize: cipher.blockSize,\n\t                formatter: cfg.format\n\t            });\n\t        },\n\n\t        /**\n\t         * Decrypts serialized ciphertext.\n\t         *\n\t         * @param {Cipher} cipher The cipher algorithm to use.\n\t         * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n\t         * @param {WordArray} key The key.\n\t         * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t         *\n\t         * @return {WordArray} The plaintext.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t         *     var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t         */\n\t        decrypt: function (cipher, ciphertext, key, cfg) {\n\t            // Apply config defaults\n\t            cfg = this.cfg.extend(cfg);\n\n\t            // Convert string to CipherParams\n\t            ciphertext = this._parse(ciphertext, cfg.format);\n\n\t            // Decrypt\n\t            var plaintext = cipher.createDecryptor(key, cfg).finalize(ciphertext.ciphertext);\n\n\t            return plaintext;\n\t        },\n\n\t        /**\n\t         * Converts serialized ciphertext to CipherParams,\n\t         * else assumed CipherParams already and returns ciphertext unchanged.\n\t         *\n\t         * @param {CipherParams|string} ciphertext The ciphertext.\n\t         * @param {Formatter} format The formatting strategy to use to parse serialized ciphertext.\n\t         *\n\t         * @return {CipherParams} The unserialized ciphertext.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var ciphertextParams = CryptoJS.lib.SerializableCipher._parse(ciphertextStringOrParams, format);\n\t         */\n\t        _parse: function (ciphertext, format) {\n\t            if (typeof ciphertext == 'string') {\n\t                return format.parse(ciphertext, this);\n\t            } else {\n\t                return ciphertext;\n\t            }\n\t        }\n\t    });\n\n\t    /**\n\t     * Key derivation function namespace.\n\t     */\n\t    var C_kdf = C.kdf = {};\n\n\t    /**\n\t     * OpenSSL key derivation function.\n\t     */\n\t    var OpenSSLKdf = C_kdf.OpenSSL = {\n\t        /**\n\t         * Derives a key and IV from a password.\n\t         *\n\t         * @param {string} password The password to derive from.\n\t         * @param {number} keySize The size in words of the key to generate.\n\t         * @param {number} ivSize The size in words of the IV to generate.\n\t         * @param {WordArray|string} salt (Optional) A 64-bit salt to use. If omitted, a salt will be generated randomly.\n\t         *\n\t         * @return {CipherParams} A cipher params object with the key, IV, and salt.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32);\n\t         *     var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32, 'saltsalt');\n\t         */\n\t        execute: function (password, keySize, ivSize, salt) {\n\t            // Generate random salt\n\t            if (!salt) {\n\t                salt = WordArray.random(64/8);\n\t            }\n\n\t            // Derive key and IV\n\t            var key = EvpKDF.create({ keySize: keySize + ivSize }).compute(password, salt);\n\n\t            // Separate key and IV\n\t            var iv = WordArray.create(key.words.slice(keySize), ivSize * 4);\n\t            key.sigBytes = keySize * 4;\n\n\t            // Return params\n\t            return CipherParams.create({ key: key, iv: iv, salt: salt });\n\t        }\n\t    };\n\n\t    /**\n\t     * A serializable cipher wrapper that derives the key from a password,\n\t     * and returns ciphertext as a serializable cipher params object.\n\t     */\n\t    var PasswordBasedCipher = C_lib.PasswordBasedCipher = SerializableCipher.extend({\n\t        /**\n\t         * Configuration options.\n\t         *\n\t         * @property {KDF} kdf The key derivation function to use to generate a key and IV from a password. Default: OpenSSL\n\t         */\n\t        cfg: SerializableCipher.cfg.extend({\n\t            kdf: OpenSSLKdf\n\t        }),\n\n\t        /**\n\t         * Encrypts a message using a password.\n\t         *\n\t         * @param {Cipher} cipher The cipher algorithm to use.\n\t         * @param {WordArray|string} message The message to encrypt.\n\t         * @param {string} password The password.\n\t         * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t         *\n\t         * @return {CipherParams} A cipher params object.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password');\n\t         *     var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password', { format: CryptoJS.format.OpenSSL });\n\t         */\n\t        encrypt: function (cipher, message, password, cfg) {\n\t            // Apply config defaults\n\t            cfg = this.cfg.extend(cfg);\n\n\t            // Derive key and other params\n\t            var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize);\n\n\t            // Add IV to config\n\t            cfg.iv = derivedParams.iv;\n\n\t            // Encrypt\n\t            var ciphertext = SerializableCipher.encrypt.call(this, cipher, message, derivedParams.key, cfg);\n\n\t            // Mix in derived params\n\t            ciphertext.mixIn(derivedParams);\n\n\t            return ciphertext;\n\t        },\n\n\t        /**\n\t         * Decrypts serialized ciphertext using a password.\n\t         *\n\t         * @param {Cipher} cipher The cipher algorithm to use.\n\t         * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n\t         * @param {string} password The password.\n\t         * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t         *\n\t         * @return {WordArray} The plaintext.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, 'password', { format: CryptoJS.format.OpenSSL });\n\t         *     var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, 'password', { format: CryptoJS.format.OpenSSL });\n\t         */\n\t        decrypt: function (cipher, ciphertext, password, cfg) {\n\t            // Apply config defaults\n\t            cfg = this.cfg.extend(cfg);\n\n\t            // Convert string to CipherParams\n\t            ciphertext = this._parse(ciphertext, cfg.format);\n\n\t            // Derive key and other params\n\t            var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, ciphertext.salt);\n\n\t            // Add IV to config\n\t            cfg.iv = derivedParams.iv;\n\n\t            // Decrypt\n\t            var plaintext = SerializableCipher.decrypt.call(this, cipher, ciphertext, derivedParams.key, cfg);\n\n\t            return plaintext;\n\t        }\n\t    });\n\t}());\n\n\n}));", ";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory();\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\troot.CryptoJS = factory();\n\t}\n}(this, function () {\n\n\t/*globals window, global, require*/\n\n\t/**\n\t * CryptoJS core components.\n\t */\n\tvar CryptoJS = CryptoJS || (function (Math, undefined) {\n\n\t    var crypto;\n\n\t    // Native crypto from window (Browser)\n\t    if (typeof window !== 'undefined' && window.crypto) {\n\t        crypto = window.crypto;\n\t    }\n\n\t    // Native crypto in web worker (Browser)\n\t    if (typeof self !== 'undefined' && self.crypto) {\n\t        crypto = self.crypto;\n\t    }\n\n\t    // Native crypto from worker\n\t    if (typeof globalThis !== 'undefined' && globalThis.crypto) {\n\t        crypto = globalThis.crypto;\n\t    }\n\n\t    // Native (experimental IE 11) crypto from window (Browser)\n\t    if (!crypto && typeof window !== 'undefined' && window.msCrypto) {\n\t        crypto = window.msCrypto;\n\t    }\n\n\t    // Native crypto from global (NodeJS)\n\t    if (!crypto && typeof global !== 'undefined' && global.crypto) {\n\t        crypto = global.crypto;\n\t    }\n\n\t    // Native crypto import via require (NodeJS)\n\t    if (!crypto && typeof require === 'function') {\n\t        try {\n\t            crypto = require('crypto');\n\t        } catch (err) {}\n\t    }\n\n\t    /*\n\t     * Cryptographically secure pseudorandom number generator\n\t     *\n\t     * As Math.random() is cryptographically not safe to use\n\t     */\n\t    var cryptoSecureRandomInt = function () {\n\t        if (crypto) {\n\t            // Use getRandomValues method (Browser)\n\t            if (typeof crypto.getRandomValues === 'function') {\n\t                try {\n\t                    return crypto.getRandomValues(new Uint32Array(1))[0];\n\t                } catch (err) {}\n\t            }\n\n\t            // Use randomBytes method (NodeJS)\n\t            if (typeof crypto.randomBytes === 'function') {\n\t                try {\n\t                    return crypto.randomBytes(4).readInt32LE();\n\t                } catch (err) {}\n\t            }\n\t        }\n\n\t        throw new Error('Native crypto module could not be used to get secure random number.');\n\t    };\n\n\t    /*\n\t     * Local polyfill of Object.create\n\n\t     */\n\t    var create = Object.create || (function () {\n\t        function F() {}\n\n\t        return function (obj) {\n\t            var subtype;\n\n\t            F.prototype = obj;\n\n\t            subtype = new F();\n\n\t            F.prototype = null;\n\n\t            return subtype;\n\t        };\n\t    }());\n\n\t    /**\n\t     * CryptoJS namespace.\n\t     */\n\t    var C = {};\n\n\t    /**\n\t     * Library namespace.\n\t     */\n\t    var C_lib = C.lib = {};\n\n\t    /**\n\t     * Base object for prototypal inheritance.\n\t     */\n\t    var Base = C_lib.Base = (function () {\n\n\n\t        return {\n\t            /**\n\t             * Creates a new object that inherits from this object.\n\t             *\n\t             * @param {Object} overrides Properties to copy into the new object.\n\t             *\n\t             * @return {Object} The new object.\n\t             *\n\t             * @static\n\t             *\n\t             * @example\n\t             *\n\t             *     var MyType = CryptoJS.lib.Base.extend({\n\t             *         field: 'value',\n\t             *\n\t             *         method: function () {\n\t             *         }\n\t             *     });\n\t             */\n\t            extend: function (overrides) {\n\t                // Spawn\n\t                var subtype = create(this);\n\n\t                // Augment\n\t                if (overrides) {\n\t                    subtype.mixIn(overrides);\n\t                }\n\n\t                // Create default initializer\n\t                if (!subtype.hasOwnProperty('init') || this.init === subtype.init) {\n\t                    subtype.init = function () {\n\t                        subtype.$super.init.apply(this, arguments);\n\t                    };\n\t                }\n\n\t                // Initializer's prototype is the subtype object\n\t                subtype.init.prototype = subtype;\n\n\t                // Reference supertype\n\t                subtype.$super = this;\n\n\t                return subtype;\n\t            },\n\n\t            /**\n\t             * Extends this object and runs the init method.\n\t             * Arguments to create() will be passed to init().\n\t             *\n\t             * @return {Object} The new object.\n\t             *\n\t             * @static\n\t             *\n\t             * @example\n\t             *\n\t             *     var instance = MyType.create();\n\t             */\n\t            create: function () {\n\t                var instance = this.extend();\n\t                instance.init.apply(instance, arguments);\n\n\t                return instance;\n\t            },\n\n\t            /**\n\t             * Initializes a newly created object.\n\t             * Override this method to add some logic when your objects are created.\n\t             *\n\t             * @example\n\t             *\n\t             *     var MyType = CryptoJS.lib.Base.extend({\n\t             *         init: function () {\n\t             *             // ...\n\t             *         }\n\t             *     });\n\t             */\n\t            init: function () {\n\t            },\n\n\t            /**\n\t             * Copies properties into this object.\n\t             *\n\t             * @param {Object} properties The properties to mix in.\n\t             *\n\t             * @example\n\t             *\n\t             *     MyType.mixIn({\n\t             *         field: 'value'\n\t             *     });\n\t             */\n\t            mixIn: function (properties) {\n\t                for (var propertyName in properties) {\n\t                    if (properties.hasOwnProperty(propertyName)) {\n\t                        this[propertyName] = properties[propertyName];\n\t                    }\n\t                }\n\n\t                // IE won't copy toString using the loop above\n\t                if (properties.hasOwnProperty('toString')) {\n\t                    this.toString = properties.toString;\n\t                }\n\t            },\n\n\t            /**\n\t             * Creates a copy of this object.\n\t             *\n\t             * @return {Object} The clone.\n\t             *\n\t             * @example\n\t             *\n\t             *     var clone = instance.clone();\n\t             */\n\t            clone: function () {\n\t                return this.init.prototype.extend(this);\n\t            }\n\t        };\n\t    }());\n\n\t    /**\n\t     * An array of 32-bit words.\n\t     *\n\t     * @property {Array} words The array of 32-bit words.\n\t     * @property {number} sigBytes The number of significant bytes in this word array.\n\t     */\n\t    var WordArray = C_lib.WordArray = Base.extend({\n\t        /**\n\t         * Initializes a newly created word array.\n\t         *\n\t         * @param {Array} words (Optional) An array of 32-bit words.\n\t         * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t         *\n\t         * @example\n\t         *\n\t         *     var wordArray = CryptoJS.lib.WordArray.create();\n\t         *     var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);\n\t         *     var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);\n\t         */\n\t        init: function (words, sigBytes) {\n\t            words = this.words = words || [];\n\n\t            if (sigBytes != undefined) {\n\t                this.sigBytes = sigBytes;\n\t            } else {\n\t                this.sigBytes = words.length * 4;\n\t            }\n\t        },\n\n\t        /**\n\t         * Converts this word array to a string.\n\t         *\n\t         * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex\n\t         *\n\t         * @return {string} The stringified word array.\n\t         *\n\t         * @example\n\t         *\n\t         *     var string = wordArray + '';\n\t         *     var string = wordArray.toString();\n\t         *     var string = wordArray.toString(CryptoJS.enc.Utf8);\n\t         */\n\t        toString: function (encoder) {\n\t            return (encoder || Hex).stringify(this);\n\t        },\n\n\t        /**\n\t         * Concatenates a word array to this word array.\n\t         *\n\t         * @param {WordArray} wordArray The word array to append.\n\t         *\n\t         * @return {WordArray} This word array.\n\t         *\n\t         * @example\n\t         *\n\t         *     wordArray1.concat(wordArray2);\n\t         */\n\t        concat: function (wordArray) {\n\t            // Shortcuts\n\t            var thisWords = this.words;\n\t            var thatWords = wordArray.words;\n\t            var thisSigBytes = this.sigBytes;\n\t            var thatSigBytes = wordArray.sigBytes;\n\n\t            // Clamp excess bits\n\t            this.clamp();\n\n\t            // Concat\n\t            if (thisSigBytes % 4) {\n\t                // Copy one byte at a time\n\t                for (var i = 0; i < thatSigBytes; i++) {\n\t                    var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t                    thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8);\n\t                }\n\t            } else {\n\t                // Copy one word at a time\n\t                for (var j = 0; j < thatSigBytes; j += 4) {\n\t                    thisWords[(thisSigBytes + j) >>> 2] = thatWords[j >>> 2];\n\t                }\n\t            }\n\t            this.sigBytes += thatSigBytes;\n\n\t            // Chainable\n\t            return this;\n\t        },\n\n\t        /**\n\t         * Removes insignificant bits.\n\t         *\n\t         * @example\n\t         *\n\t         *     wordArray.clamp();\n\t         */\n\t        clamp: function () {\n\t            // Shortcuts\n\t            var words = this.words;\n\t            var sigBytes = this.sigBytes;\n\n\t            // Clamp\n\t            words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8);\n\t            words.length = Math.ceil(sigBytes / 4);\n\t        },\n\n\t        /**\n\t         * Creates a copy of this word array.\n\t         *\n\t         * @return {WordArray} The clone.\n\t         *\n\t         * @example\n\t         *\n\t         *     var clone = wordArray.clone();\n\t         */\n\t        clone: function () {\n\t            var clone = Base.clone.call(this);\n\t            clone.words = this.words.slice(0);\n\n\t            return clone;\n\t        },\n\n\t        /**\n\t         * Creates a word array filled with random bytes.\n\t         *\n\t         * @param {number} nBytes The number of random bytes to generate.\n\t         *\n\t         * @return {WordArray} The random word array.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var wordArray = CryptoJS.lib.WordArray.random(16);\n\t         */\n\t        random: function (nBytes) {\n\t            var words = [];\n\n\t            for (var i = 0; i < nBytes; i += 4) {\n\t                words.push(cryptoSecureRandomInt());\n\t            }\n\n\t            return new WordArray.init(words, nBytes);\n\t        }\n\t    });\n\n\t    /**\n\t     * Encoder namespace.\n\t     */\n\t    var C_enc = C.enc = {};\n\n\t    /**\n\t     * Hex encoding strategy.\n\t     */\n\t    var Hex = C_enc.Hex = {\n\t        /**\n\t         * Converts a word array to a hex string.\n\t         *\n\t         * @param {WordArray} wordArray The word array.\n\t         *\n\t         * @return {string} The hex string.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var hexString = CryptoJS.enc.Hex.stringify(wordArray);\n\t         */\n\t        stringify: function (wordArray) {\n\t            // Shortcuts\n\t            var words = wordArray.words;\n\t            var sigBytes = wordArray.sigBytes;\n\n\t            // Convert\n\t            var hexChars = [];\n\t            for (var i = 0; i < sigBytes; i++) {\n\t                var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t                hexChars.push((bite >>> 4).toString(16));\n\t                hexChars.push((bite & 0x0f).toString(16));\n\t            }\n\n\t            return hexChars.join('');\n\t        },\n\n\t        /**\n\t         * Converts a hex string to a word array.\n\t         *\n\t         * @param {string} hexStr The hex string.\n\t         *\n\t         * @return {WordArray} The word array.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var wordArray = CryptoJS.enc.Hex.parse(hexString);\n\t         */\n\t        parse: function (hexStr) {\n\t            // Shortcut\n\t            var hexStrLength = hexStr.length;\n\n\t            // Convert\n\t            var words = [];\n\t            for (var i = 0; i < hexStrLength; i += 2) {\n\t                words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4);\n\t            }\n\n\t            return new WordArray.init(words, hexStrLength / 2);\n\t        }\n\t    };\n\n\t    /**\n\t     * Latin1 encoding strategy.\n\t     */\n\t    var Latin1 = C_enc.Latin1 = {\n\t        /**\n\t         * Converts a word array to a Latin1 string.\n\t         *\n\t         * @param {WordArray} wordArray The word array.\n\t         *\n\t         * @return {string} The Latin1 string.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);\n\t         */\n\t        stringify: function (wordArray) {\n\t            // Shortcuts\n\t            var words = wordArray.words;\n\t            var sigBytes = wordArray.sigBytes;\n\n\t            // Convert\n\t            var latin1Chars = [];\n\t            for (var i = 0; i < sigBytes; i++) {\n\t                var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t                latin1Chars.push(String.fromCharCode(bite));\n\t            }\n\n\t            return latin1Chars.join('');\n\t        },\n\n\t        /**\n\t         * Converts a Latin1 string to a word array.\n\t         *\n\t         * @param {string} latin1Str The Latin1 string.\n\t         *\n\t         * @return {WordArray} The word array.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var wordArray = CryptoJS.enc.Latin1.parse(latin1String);\n\t         */\n\t        parse: function (latin1Str) {\n\t            // Shortcut\n\t            var latin1StrLength = latin1Str.length;\n\n\t            // Convert\n\t            var words = [];\n\t            for (var i = 0; i < latin1StrLength; i++) {\n\t                words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);\n\t            }\n\n\t            return new WordArray.init(words, latin1StrLength);\n\t        }\n\t    };\n\n\t    /**\n\t     * UTF-8 encoding strategy.\n\t     */\n\t    var Utf8 = C_enc.Utf8 = {\n\t        /**\n\t         * Converts a word array to a UTF-8 string.\n\t         *\n\t         * @param {WordArray} wordArray The word array.\n\t         *\n\t         * @return {string} The UTF-8 string.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);\n\t         */\n\t        stringify: function (wordArray) {\n\t            try {\n\t                return decodeURIComponent(escape(Latin1.stringify(wordArray)));\n\t            } catch (e) {\n\t                throw new Error('Malformed UTF-8 data');\n\t            }\n\t        },\n\n\t        /**\n\t         * Converts a UTF-8 string to a word array.\n\t         *\n\t         * @param {string} utf8Str The UTF-8 string.\n\t         *\n\t         * @return {WordArray} The word array.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var wordArray = CryptoJS.enc.Utf8.parse(utf8String);\n\t         */\n\t        parse: function (utf8Str) {\n\t            return Latin1.parse(unescape(encodeURIComponent(utf8Str)));\n\t        }\n\t    };\n\n\t    /**\n\t     * Abstract buffered block algorithm template.\n\t     *\n\t     * The property blockSize must be implemented in a concrete subtype.\n\t     *\n\t     * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0\n\t     */\n\t    var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({\n\t        /**\n\t         * Resets this block algorithm's data buffer to its initial state.\n\t         *\n\t         * @example\n\t         *\n\t         *     bufferedBlockAlgorithm.reset();\n\t         */\n\t        reset: function () {\n\t            // Initial values\n\t            this._data = new WordArray.init();\n\t            this._nDataBytes = 0;\n\t        },\n\n\t        /**\n\t         * Adds new data to this block algorithm's buffer.\n\t         *\n\t         * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.\n\t         *\n\t         * @example\n\t         *\n\t         *     bufferedBlockAlgorithm._append('data');\n\t         *     bufferedBlockAlgorithm._append(wordArray);\n\t         */\n\t        _append: function (data) {\n\t            // Convert string to WordArray, else assume WordArray already\n\t            if (typeof data == 'string') {\n\t                data = Utf8.parse(data);\n\t            }\n\n\t            // Append\n\t            this._data.concat(data);\n\t            this._nDataBytes += data.sigBytes;\n\t        },\n\n\t        /**\n\t         * Processes available data blocks.\n\t         *\n\t         * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.\n\t         *\n\t         * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.\n\t         *\n\t         * @return {WordArray} The processed data.\n\t         *\n\t         * @example\n\t         *\n\t         *     var processedData = bufferedBlockAlgorithm._process();\n\t         *     var processedData = bufferedBlockAlgorithm._process(!!'flush');\n\t         */\n\t        _process: function (doFlush) {\n\t            var processedWords;\n\n\t            // Shortcuts\n\t            var data = this._data;\n\t            var dataWords = data.words;\n\t            var dataSigBytes = data.sigBytes;\n\t            var blockSize = this.blockSize;\n\t            var blockSizeBytes = blockSize * 4;\n\n\t            // Count blocks ready\n\t            var nBlocksReady = dataSigBytes / blockSizeBytes;\n\t            if (doFlush) {\n\t                // Round up to include partial blocks\n\t                nBlocksReady = Math.ceil(nBlocksReady);\n\t            } else {\n\t                // Round down to include only full blocks,\n\t                // less the number of blocks that must remain in the buffer\n\t                nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);\n\t            }\n\n\t            // Count words ready\n\t            var nWordsReady = nBlocksReady * blockSize;\n\n\t            // Count bytes ready\n\t            var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);\n\n\t            // Process blocks\n\t            if (nWordsReady) {\n\t                for (var offset = 0; offset < nWordsReady; offset += blockSize) {\n\t                    // Perform concrete-algorithm logic\n\t                    this._doProcessBlock(dataWords, offset);\n\t                }\n\n\t                // Remove processed words\n\t                processedWords = dataWords.splice(0, nWordsReady);\n\t                data.sigBytes -= nBytesReady;\n\t            }\n\n\t            // Return processed words\n\t            return new WordArray.init(processedWords, nBytesReady);\n\t        },\n\n\t        /**\n\t         * Creates a copy of this object.\n\t         *\n\t         * @return {Object} The clone.\n\t         *\n\t         * @example\n\t         *\n\t         *     var clone = bufferedBlockAlgorithm.clone();\n\t         */\n\t        clone: function () {\n\t            var clone = Base.clone.call(this);\n\t            clone._data = this._data.clone();\n\n\t            return clone;\n\t        },\n\n\t        _minBufferSize: 0\n\t    });\n\n\t    /**\n\t     * Abstract hasher template.\n\t     *\n\t     * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits)\n\t     */\n\t    var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({\n\t        /**\n\t         * Configuration options.\n\t         */\n\t        cfg: Base.extend(),\n\n\t        /**\n\t         * Initializes a newly created hasher.\n\t         *\n\t         * @param {Object} cfg (Optional) The configuration options to use for this hash computation.\n\t         *\n\t         * @example\n\t         *\n\t         *     var hasher = CryptoJS.algo.SHA256.create();\n\t         */\n\t        init: function (cfg) {\n\t            // Apply config defaults\n\t            this.cfg = this.cfg.extend(cfg);\n\n\t            // Set initial values\n\t            this.reset();\n\t        },\n\n\t        /**\n\t         * Resets this hasher to its initial state.\n\t         *\n\t         * @example\n\t         *\n\t         *     hasher.reset();\n\t         */\n\t        reset: function () {\n\t            // Reset data buffer\n\t            BufferedBlockAlgorithm.reset.call(this);\n\n\t            // Perform concrete-hasher logic\n\t            this._doReset();\n\t        },\n\n\t        /**\n\t         * Updates this hasher with a message.\n\t         *\n\t         * @param {WordArray|string} messageUpdate The message to append.\n\t         *\n\t         * @return {Hasher} This hasher.\n\t         *\n\t         * @example\n\t         *\n\t         *     hasher.update('message');\n\t         *     hasher.update(wordArray);\n\t         */\n\t        update: function (messageUpdate) {\n\t            // Append\n\t            this._append(messageUpdate);\n\n\t            // Update the hash\n\t            this._process();\n\n\t            // Chainable\n\t            return this;\n\t        },\n\n\t        /**\n\t         * Finalizes the hash computation.\n\t         * Note that the finalize operation is effectively a destructive, read-once operation.\n\t         *\n\t         * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t         *\n\t         * @return {WordArray} The hash.\n\t         *\n\t         * @example\n\t         *\n\t         *     var hash = hasher.finalize();\n\t         *     var hash = hasher.finalize('message');\n\t         *     var hash = hasher.finalize(wordArray);\n\t         */\n\t        finalize: function (messageUpdate) {\n\t            // Final message update\n\t            if (messageUpdate) {\n\t                this._append(messageUpdate);\n\t            }\n\n\t            // Perform concrete-hasher logic\n\t            var hash = this._doFinalize();\n\n\t            return hash;\n\t        },\n\n\t        blockSize: 512/32,\n\n\t        /**\n\t         * Creates a shortcut function to a hasher's object interface.\n\t         *\n\t         * @param {Hasher} hasher The hasher to create a helper for.\n\t         *\n\t         * @return {Function} The shortcut function.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);\n\t         */\n\t        _createHelper: function (hasher) {\n\t            return function (message, cfg) {\n\t                return new hasher.init(cfg).finalize(message);\n\t            };\n\t        },\n\n\t        /**\n\t         * Creates a shortcut function to the HMAC's object interface.\n\t         *\n\t         * @param {Hasher} hasher The hasher to use in this HMAC helper.\n\t         *\n\t         * @return {Function} The shortcut function.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);\n\t         */\n\t        _createHmacHelper: function (hasher) {\n\t            return function (message, key) {\n\t                return new C_algo.HMAC.init(hasher, key).finalize(message);\n\t            };\n\t        }\n\t    });\n\n\t    /**\n\t     * Algorithm namespace.\n\t     */\n\t    var C_algo = C.algo = {};\n\n\t    return C;\n\t}(Math));\n\n\n\treturn CryptoJS;\n\n}));", ";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var WordArray = C_lib.WordArray;\n\t    var C_enc = C.enc;\n\n\t    /**\n\t     * Base64 encoding strategy.\n\t     */\n\t    var Base64 = C_enc.Base64 = {\n\t        /**\n\t         * Converts a word array to a Base64 string.\n\t         *\n\t         * @param {WordArray} wordArray The word array.\n\t         *\n\t         * @return {string} The Base64 string.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var base64String = CryptoJS.enc.Base64.stringify(wordArray);\n\t         */\n\t        stringify: function (wordArray) {\n\t            // Shortcuts\n\t            var words = wordArray.words;\n\t            var sigBytes = wordArray.sigBytes;\n\t            var map = this._map;\n\n\t            // Clamp excess bits\n\t            wordArray.clamp();\n\n\t            // Convert\n\t            var base64Chars = [];\n\t            for (var i = 0; i < sigBytes; i += 3) {\n\t                var byte1 = (words[i >>> 2]       >>> (24 - (i % 4) * 8))       & 0xff;\n\t                var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n\t                var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n\t                var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n\t                for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n\t                    base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n\t                }\n\t            }\n\n\t            // Add padding\n\t            var paddingChar = map.charAt(64);\n\t            if (paddingChar) {\n\t                while (base64Chars.length % 4) {\n\t                    base64Chars.push(paddingChar);\n\t                }\n\t            }\n\n\t            return base64Chars.join('');\n\t        },\n\n\t        /**\n\t         * Converts a Base64 string to a word array.\n\t         *\n\t         * @param {string} base64Str The Base64 string.\n\t         *\n\t         * @return {WordArray} The word array.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var wordArray = CryptoJS.enc.Base64.parse(base64String);\n\t         */\n\t        parse: function (base64Str) {\n\t            // Shortcuts\n\t            var base64StrLength = base64Str.length;\n\t            var map = this._map;\n\t            var reverseMap = this._reverseMap;\n\n\t            if (!reverseMap) {\n\t                    reverseMap = this._reverseMap = [];\n\t                    for (var j = 0; j < map.length; j++) {\n\t                        reverseMap[map.charCodeAt(j)] = j;\n\t                    }\n\t            }\n\n\t            // Ignore padding\n\t            var paddingChar = map.charAt(64);\n\t            if (paddingChar) {\n\t                var paddingIndex = base64Str.indexOf(paddingChar);\n\t                if (paddingIndex !== -1) {\n\t                    base64StrLength = paddingIndex;\n\t                }\n\t            }\n\n\t            // Convert\n\t            return parseLoop(base64Str, base64StrLength, reverseMap);\n\n\t        },\n\n\t        _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='\n\t    };\n\n\t    function parseLoop(base64Str, base64StrLength, reverseMap) {\n\t      var words = [];\n\t      var nBytes = 0;\n\t      for (var i = 0; i < base64StrLength; i++) {\n\t          if (i % 4) {\n\t              var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n\t              var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n\t              var bitsCombined = bits1 | bits2;\n\t              words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8);\n\t              nBytes++;\n\t          }\n\t      }\n\t      return WordArray.create(words, nBytes);\n\t    }\n\t}());\n\n\n\treturn CryptoJS.enc.Base64;\n\n}));", ";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var WordArray = C_lib.WordArray;\n\t    var C_enc = C.enc;\n\n\t    /**\n\t     * Base64url encoding strategy.\n\t     */\n\t    var Base64url = C_enc.Base64url = {\n\t        /**\n\t         * Converts a word array to a Base64url string.\n\t         *\n\t         * @param {WordArray} wordArray The word array.\n\t         *\n\t         * @param {boolean} urlSafe Whether to use url safe\n\t         *\n\t         * @return {string} The Base64url string.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var base64String = CryptoJS.enc.Base64url.stringify(wordArray);\n\t         */\n\t        stringify: function (wordArray, urlSafe=true) {\n\t            // Shortcuts\n\t            var words = wordArray.words;\n\t            var sigBytes = wordArray.sigBytes;\n\t            var map = urlSafe ? this._safe_map : this._map;\n\n\t            // Clamp excess bits\n\t            wordArray.clamp();\n\n\t            // Convert\n\t            var base64Chars = [];\n\t            for (var i = 0; i < sigBytes; i += 3) {\n\t                var byte1 = (words[i >>> 2]       >>> (24 - (i % 4) * 8))       & 0xff;\n\t                var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n\t                var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n\t                var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n\t                for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n\t                    base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n\t                }\n\t            }\n\n\t            // Add padding\n\t            var paddingChar = map.charAt(64);\n\t            if (paddingChar) {\n\t                while (base64Chars.length % 4) {\n\t                    base64Chars.push(paddingChar);\n\t                }\n\t            }\n\n\t            return base64Chars.join('');\n\t        },\n\n\t        /**\n\t         * Converts a Base64url string to a word array.\n\t         *\n\t         * @param {string} base64Str The Base64url string.\n\t         *\n\t         * @param {boolean} urlSafe Whether to use url safe\n\t         *\n\t         * @return {WordArray} The word array.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var wordArray = CryptoJS.enc.Base64url.parse(base64String);\n\t         */\n\t        parse: function (base64Str, urlSafe=true) {\n\t            // Shortcuts\n\t            var base64StrLength = base64Str.length;\n\t            var map = urlSafe ? this._safe_map : this._map;\n\t            var reverseMap = this._reverseMap;\n\n\t            if (!reverseMap) {\n\t                reverseMap = this._reverseMap = [];\n\t                for (var j = 0; j < map.length; j++) {\n\t                    reverseMap[map.charCodeAt(j)] = j;\n\t                }\n\t            }\n\n\t            // Ignore padding\n\t            var paddingChar = map.charAt(64);\n\t            if (paddingChar) {\n\t                var paddingIndex = base64Str.indexOf(paddingChar);\n\t                if (paddingIndex !== -1) {\n\t                    base64StrLength = paddingIndex;\n\t                }\n\t            }\n\n\t            // Convert\n\t            return parseLoop(base64Str, base64StrLength, reverseMap);\n\n\t        },\n\n\t        _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',\n\t        _safe_map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_',\n\t    };\n\n\t    function parseLoop(base64Str, base64StrLength, reverseMap) {\n\t        var words = [];\n\t        var nBytes = 0;\n\t        for (var i = 0; i < base64StrLength; i++) {\n\t            if (i % 4) {\n\t                var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n\t                var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n\t                var bitsCombined = bits1 | bits2;\n\t                words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8);\n\t                nBytes++;\n\t            }\n\t        }\n\t        return WordArray.create(words, nBytes);\n\t    }\n\t}());\n\n\treturn CryptoJS.enc.Base64url;\n\n}));", ";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var WordArray = C_lib.WordArray;\n\t    var C_enc = C.enc;\n\n\t    /**\n\t     * UTF-16 BE encoding strategy.\n\t     */\n\t    var Utf16BE = C_enc.Utf16 = C_enc.Utf16BE = {\n\t        /**\n\t         * Converts a word array to a UTF-16 BE string.\n\t         *\n\t         * @param {WordArray} wordArray The word array.\n\t         *\n\t         * @return {string} The UTF-16 BE string.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var utf16String = CryptoJS.enc.Utf16.stringify(wordArray);\n\t         */\n\t        stringify: function (wordArray) {\n\t            // Shortcuts\n\t            var words = wordArray.words;\n\t            var sigBytes = wordArray.sigBytes;\n\n\t            // Convert\n\t            var utf16Chars = [];\n\t            for (var i = 0; i < sigBytes; i += 2) {\n\t                var codePoint = (words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff;\n\t                utf16Chars.push(String.fromCharCode(codePoint));\n\t            }\n\n\t            return utf16Chars.join('');\n\t        },\n\n\t        /**\n\t         * Converts a UTF-16 BE string to a word array.\n\t         *\n\t         * @param {string} utf16Str The UTF-16 BE string.\n\t         *\n\t         * @return {WordArray} The word array.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var wordArray = CryptoJS.enc.Utf16.parse(utf16String);\n\t         */\n\t        parse: function (utf16Str) {\n\t            // Shortcut\n\t            var utf16StrLength = utf16Str.length;\n\n\t            // Convert\n\t            var words = [];\n\t            for (var i = 0; i < utf16StrLength; i++) {\n\t                words[i >>> 1] |= utf16Str.charCodeAt(i) << (16 - (i % 2) * 16);\n\t            }\n\n\t            return WordArray.create(words, utf16StrLength * 2);\n\t        }\n\t    };\n\n\t    /**\n\t     * UTF-16 LE encoding strategy.\n\t     */\n\t    C_enc.Utf16LE = {\n\t        /**\n\t         * Converts a word array to a UTF-16 LE string.\n\t         *\n\t         * @param {WordArray} wordArray The word array.\n\t         *\n\t         * @return {string} The UTF-16 LE string.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var utf16Str = CryptoJS.enc.Utf16LE.stringify(wordArray);\n\t         */\n\t        stringify: function (wordArray) {\n\t            // Shortcuts\n\t            var words = wordArray.words;\n\t            var sigBytes = wordArray.sigBytes;\n\n\t            // Convert\n\t            var utf16Chars = [];\n\t            for (var i = 0; i < sigBytes; i += 2) {\n\t                var codePoint = swapEndian((words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff);\n\t                utf16Chars.push(String.fromCharCode(codePoint));\n\t            }\n\n\t            return utf16Chars.join('');\n\t        },\n\n\t        /**\n\t         * Converts a UTF-16 LE string to a word array.\n\t         *\n\t         * @param {string} utf16Str The UTF-16 LE string.\n\t         *\n\t         * @return {WordArray} The word array.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var wordArray = CryptoJS.enc.Utf16LE.parse(utf16Str);\n\t         */\n\t        parse: function (utf16Str) {\n\t            // Shortcut\n\t            var utf16StrLength = utf16Str.length;\n\n\t            // Convert\n\t            var words = [];\n\t            for (var i = 0; i < utf16StrLength; i++) {\n\t                words[i >>> 1] |= swapEndian(utf16Str.charCodeAt(i) << (16 - (i % 2) * 16));\n\t            }\n\n\t            return WordArray.create(words, utf16StrLength * 2);\n\t        }\n\t    };\n\n\t    function swapEndian(word) {\n\t        return ((word << 8) & 0xff00ff00) | ((word >>> 8) & 0x00ff00ff);\n\t    }\n\t}());\n\n\n\treturn CryptoJS.enc.Utf16;\n\n}));", ";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha1\"), require(\"./hmac\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha1\", \"./hmac\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var Base = C_lib.Base;\n\t    var WordArray = C_lib.WordArray;\n\t    var C_algo = C.algo;\n\t    var MD5 = C_algo.MD5;\n\n\t    /**\n\t     * This key derivation function is meant to conform with EVP_BytesToKey.\n\t     * www.openssl.org/docs/crypto/EVP_BytesToKey.html\n\t     */\n\t    var EvpKDF = C_algo.EvpKDF = Base.extend({\n\t        /**\n\t         * Configuration options.\n\t         *\n\t         * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n\t         * @property {Hasher} hasher The hash algorithm to use. Default: MD5\n\t         * @property {number} iterations The number of iterations to perform. Default: 1\n\t         */\n\t        cfg: Base.extend({\n\t            keySize: 128/32,\n\t            hasher: MD5,\n\t            iterations: 1\n\t        }),\n\n\t        /**\n\t         * Initializes a newly created key derivation function.\n\t         *\n\t         * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n\t         *\n\t         * @example\n\t         *\n\t         *     var kdf = CryptoJS.algo.EvpKDF.create();\n\t         *     var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8 });\n\t         *     var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8, iterations: 1000 });\n\t         */\n\t        init: function (cfg) {\n\t            this.cfg = this.cfg.extend(cfg);\n\t        },\n\n\t        /**\n\t         * Derives a key from a password.\n\t         *\n\t         * @param {WordArray|string} password The password.\n\t         * @param {WordArray|string} salt A salt.\n\t         *\n\t         * @return {WordArray} The derived key.\n\t         *\n\t         * @example\n\t         *\n\t         *     var key = kdf.compute(password, salt);\n\t         */\n\t        compute: function (password, salt) {\n\t            var block;\n\n\t            // Shortcut\n\t            var cfg = this.cfg;\n\n\t            // Init hasher\n\t            var hasher = cfg.hasher.create();\n\n\t            // Initial values\n\t            var derivedKey = WordArray.create();\n\n\t            // Shortcuts\n\t            var derivedKeyWords = derivedKey.words;\n\t            var keySize = cfg.keySize;\n\t            var iterations = cfg.iterations;\n\n\t            // Generate key\n\t            while (derivedKeyWords.length < keySize) {\n\t                if (block) {\n\t                    hasher.update(block);\n\t                }\n\t                block = hasher.update(password).finalize(salt);\n\t                hasher.reset();\n\n\t                // Iterations\n\t                for (var i = 1; i < iterations; i++) {\n\t                    block = hasher.finalize(block);\n\t                    hasher.reset();\n\t                }\n\n\t                derivedKey.concat(block);\n\t            }\n\t            derivedKey.sigBytes = keySize * 4;\n\n\t            return derivedKey;\n\t        }\n\t    });\n\n\t    /**\n\t     * Derives a key from a password.\n\t     *\n\t     * @param {WordArray|string} password The password.\n\t     * @param {WordArray|string} salt A salt.\n\t     * @param {Object} cfg (Optional) The configuration options to use for this computation.\n\t     *\n\t     * @return {WordArray} The derived key.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var key = CryptoJS.EvpKDF(password, salt);\n\t     *     var key = CryptoJS.EvpKDF(password, salt, { keySize: 8 });\n\t     *     var key = CryptoJS.EvpKDF(password, salt, { keySize: 8, iterations: 1000 });\n\t     */\n\t    C.EvpKDF = function (password, salt, cfg) {\n\t        return EvpKDF.create(cfg).compute(password, salt);\n\t    };\n\t}());\n\n\n\treturn CryptoJS.EvpKDF;\n\n}));", ";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (undefined) {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var CipherParams = C_lib.CipherParams;\n\t    var C_enc = C.enc;\n\t    var Hex = C_enc.Hex;\n\t    var C_format = C.format;\n\n\t    var HexFormatter = C_format.Hex = {\n\t        /**\n\t         * Converts the ciphertext of a cipher params object to a hexadecimally encoded string.\n\t         *\n\t         * @param {CipherParams} cipherParams The cipher params object.\n\t         *\n\t         * @return {string} The hexadecimally encoded string.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var hexString = CryptoJS.format.Hex.stringify(cipherParams);\n\t         */\n\t        stringify: function (cipherParams) {\n\t            return cipherParams.ciphertext.toString(Hex);\n\t        },\n\n\t        /**\n\t         * Converts a hexadecimally encoded ciphertext string to a cipher params object.\n\t         *\n\t         * @param {string} input The hexadecimally encoded string.\n\t         *\n\t         * @return {CipherParams} The cipher params object.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var cipherParams = CryptoJS.format.Hex.parse(hexString);\n\t         */\n\t        parse: function (input) {\n\t            var ciphertext = Hex.parse(input);\n\t            return CipherParams.create({ ciphertext: ciphertext });\n\t        }\n\t    };\n\t}());\n\n\n\treturn CryptoJS.format.Hex;\n\n}));", ";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var Base = C_lib.Base;\n\t    var C_enc = C.enc;\n\t    var Utf8 = C_enc.Utf8;\n\t    var C_algo = C.algo;\n\n\t    /**\n\t     * HMAC algorithm.\n\t     */\n\t    var HMAC = C_algo.HMAC = Base.extend({\n\t        /**\n\t         * Initializes a newly created HMAC.\n\t         *\n\t         * @param {Hasher} hasher The hash algorithm to use.\n\t         * @param {WordArray|string} key The secret key.\n\t         *\n\t         * @example\n\t         *\n\t         *     var hmacHasher = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, key);\n\t         */\n\t        init: function (hasher, key) {\n\t            // Init hasher\n\t            hasher = this._hasher = new hasher.init();\n\n\t            // Convert string to WordArray, else assume WordArray already\n\t            if (typeof key == 'string') {\n\t                key = Utf8.parse(key);\n\t            }\n\n\t            // Shortcuts\n\t            var hasherBlockSize = hasher.blockSize;\n\t            var hasherBlockSizeBytes = hasherBlockSize * 4;\n\n\t            // Allow arbitrary length keys\n\t            if (key.sigBytes > hasherBlockSizeBytes) {\n\t                key = hasher.finalize(key);\n\t            }\n\n\t            // Clamp excess bits\n\t            key.clamp();\n\n\t            // Clone key for inner and outer pads\n\t            var oKey = this._oKey = key.clone();\n\t            var iKey = this._iKey = key.clone();\n\n\t            // Shortcuts\n\t            var oKeyWords = oKey.words;\n\t            var iKeyWords = iKey.words;\n\n\t            // XOR keys with pad constants\n\t            for (var i = 0; i < hasherBlockSize; i++) {\n\t                oKeyWords[i] ^= 0x5c5c5c5c;\n\t                iKeyWords[i] ^= 0x36363636;\n\t            }\n\t            oKey.sigBytes = iKey.sigBytes = hasherBlockSizeBytes;\n\n\t            // Set initial values\n\t            this.reset();\n\t        },\n\n\t        /**\n\t         * Resets this HMAC to its initial state.\n\t         *\n\t         * @example\n\t         *\n\t         *     hmacHasher.reset();\n\t         */\n\t        reset: function () {\n\t            // Shortcut\n\t            var hasher = this._hasher;\n\n\t            // Reset\n\t            hasher.reset();\n\t            hasher.update(this._iKey);\n\t        },\n\n\t        /**\n\t         * Updates this HMAC with a message.\n\t         *\n\t         * @param {WordArray|string} messageUpdate The message to append.\n\t         *\n\t         * @return {HMAC} This HMAC instance.\n\t         *\n\t         * @example\n\t         *\n\t         *     hmacHasher.update('message');\n\t         *     hmacHasher.update(wordArray);\n\t         */\n\t        update: function (messageUpdate) {\n\t            this._hasher.update(messageUpdate);\n\n\t            // Chainable\n\t            return this;\n\t        },\n\n\t        /**\n\t         * Finalizes the HMAC computation.\n\t         * Note that the finalize operation is effectively a destructive, read-once operation.\n\t         *\n\t         * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t         *\n\t         * @return {WordArray} The HMAC.\n\t         *\n\t         * @example\n\t         *\n\t         *     var hmac = hmacHasher.finalize();\n\t         *     var hmac = hmacHasher.finalize('message');\n\t         *     var hmac = hmacHasher.finalize(wordArray);\n\t         */\n\t        finalize: function (messageUpdate) {\n\t            // Shortcut\n\t            var hasher = this._hasher;\n\n\t            // Compute HMAC\n\t            var innerHash = hasher.finalize(messageUpdate);\n\t            hasher.reset();\n\t            var hmac = hasher.finalize(this._oKey.clone().concat(innerHash));\n\n\t            return hmac;\n\t        }\n\t    });\n\t}());\n\n\n}));", ";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"), require(\"./lib-typedarrays\"), require(\"./enc-utf16\"), require(\"./enc-base64\"), require(\"./enc-base64url\"), require(\"./md5\"), require(\"./sha1\"), require(\"./sha256\"), require(\"./sha224\"), require(\"./sha512\"), require(\"./sha384\"), require(\"./sha3\"), require(\"./ripemd160\"), require(\"./hmac\"), require(\"./pbkdf2\"), require(\"./evpkdf\"), require(\"./cipher-core\"), require(\"./mode-cfb\"), require(\"./mode-ctr\"), require(\"./mode-ctr-gladman\"), require(\"./mode-ofb\"), require(\"./mode-ecb\"), require(\"./pad-ansix923\"), require(\"./pad-iso10126\"), require(\"./pad-iso97971\"), require(\"./pad-zeropadding\"), require(\"./pad-nopadding\"), require(\"./format-hex\"), require(\"./aes\"), require(\"./tripledes\"), require(\"./rc4\"), require(\"./rabbit\"), require(\"./rabbit-legacy\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\", \"./lib-typedarrays\", \"./enc-utf16\", \"./enc-base64\", \"./enc-base64url\", \"./md5\", \"./sha1\", \"./sha256\", \"./sha224\", \"./sha512\", \"./sha384\", \"./sha3\", \"./ripemd160\", \"./hmac\", \"./pbkdf2\", \"./evpkdf\", \"./cipher-core\", \"./mode-cfb\", \"./mode-ctr\", \"./mode-ctr-gladman\", \"./mode-ofb\", \"./mode-ecb\", \"./pad-ansix923\", \"./pad-iso10126\", \"./pad-iso97971\", \"./pad-zeropadding\", \"./pad-nopadding\", \"./format-hex\", \"./aes\", \"./tripledes\", \"./rc4\", \"./rabbit\", \"./rabbit-legacy\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\troot.CryptoJS = factory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\treturn CryptoJS;\n\n}));", ";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t    // Check if typed arrays are supported\n\t    if (typeof ArrayBuffer != 'function') {\n\t        return;\n\t    }\n\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var WordArray = C_lib.WordArray;\n\n\t    // Reference original init\n\t    var superInit = WordArray.init;\n\n\t    // Augment WordArray.init to handle typed arrays\n\t    var subInit = WordArray.init = function (typedArray) {\n\t        // Convert buffers to uint8\n\t        if (typedArray instanceof ArrayBuffer) {\n\t            typedArray = new Uint8Array(typedArray);\n\t        }\n\n\t        // Convert other array views to uint8\n\t        if (\n\t            typedArray instanceof Int8Array ||\n\t            (typeof Uint8ClampedArray !== \"undefined\" && typedArray instanceof Uint8ClampedArray) ||\n\t            typedArray instanceof Int16Array ||\n\t            typedArray instanceof Uint16Array ||\n\t            typedArray instanceof Int32Array ||\n\t            typedArray instanceof Uint32Array ||\n\t            typedArray instanceof Float32Array ||\n\t            typedArray instanceof Float64Array\n\t        ) {\n\t            typedArray = new Uint8Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength);\n\t        }\n\n\t        // Handle Uint8Array\n\t        if (typedArray instanceof Uint8Array) {\n\t            // Shortcut\n\t            var typedArrayByteLength = typedArray.byteLength;\n\n\t            // Extract bytes\n\t            var words = [];\n\t            for (var i = 0; i < typedArrayByteLength; i++) {\n\t                words[i >>> 2] |= typedArray[i] << (24 - (i % 4) * 8);\n\t            }\n\n\t            // Initialize this word array\n\t            superInit.call(this, words, typedArrayByteLength);\n\t        } else {\n\t            // Else call normal init\n\t            superInit.apply(this, arguments);\n\t        }\n\t    };\n\n\t    subInit.prototype = WordArray;\n\t}());\n\n\n\treturn CryptoJS.lib.WordArray;\n\n}));", ";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var WordArray = C_lib.WordArray;\n\t    var Hasher = C_lib.Hasher;\n\t    var C_algo = C.algo;\n\n\t    // Constants table\n\t    var T = [];\n\n\t    // Compute constants\n\t    (function () {\n\t        for (var i = 0; i < 64; i++) {\n\t            T[i] = (Math.abs(Math.sin(i + 1)) * 0x100000000) | 0;\n\t        }\n\t    }());\n\n\t    /**\n\t     * MD5 hash algorithm.\n\t     */\n\t    var MD5 = C_algo.MD5 = Hasher.extend({\n\t        _doReset: function () {\n\t            this._hash = new WordArray.init([\n\t                0x67452301, 0xefcdab89,\n\t                0x98badcfe, 0x10325476\n\t            ]);\n\t        },\n\n\t        _doProcessBlock: function (M, offset) {\n\t            // Swap endian\n\t            for (var i = 0; i < 16; i++) {\n\t                // Shortcuts\n\t                var offset_i = offset + i;\n\t                var M_offset_i = M[offset_i];\n\n\t                M[offset_i] = (\n\t                    (((M_offset_i << 8)  | (M_offset_i >>> 24)) & 0x00ff00ff) |\n\t                    (((M_offset_i << 24) | (M_offset_i >>> 8))  & 0xff00ff00)\n\t                );\n\t            }\n\n\t            // Shortcuts\n\t            var H = this._hash.words;\n\n\t            var M_offset_0  = M[offset + 0];\n\t            var M_offset_1  = M[offset + 1];\n\t            var M_offset_2  = M[offset + 2];\n\t            var M_offset_3  = M[offset + 3];\n\t            var M_offset_4  = M[offset + 4];\n\t            var M_offset_5  = M[offset + 5];\n\t            var M_offset_6  = M[offset + 6];\n\t            var M_offset_7  = M[offset + 7];\n\t            var M_offset_8  = M[offset + 8];\n\t            var M_offset_9  = M[offset + 9];\n\t            var M_offset_10 = M[offset + 10];\n\t            var M_offset_11 = M[offset + 11];\n\t            var M_offset_12 = M[offset + 12];\n\t            var M_offset_13 = M[offset + 13];\n\t            var M_offset_14 = M[offset + 14];\n\t            var M_offset_15 = M[offset + 15];\n\n\t            // Working varialbes\n\t            var a = H[0];\n\t            var b = H[1];\n\t            var c = H[2];\n\t            var d = H[3];\n\n\t            // Computation\n\t            a = FF(a, b, c, d, M_offset_0,  7,  T[0]);\n\t            d = FF(d, a, b, c, M_offset_1,  12, T[1]);\n\t            c = FF(c, d, a, b, M_offset_2,  17, T[2]);\n\t            b = FF(b, c, d, a, M_offset_3,  22, T[3]);\n\t            a = FF(a, b, c, d, M_offset_4,  7,  T[4]);\n\t            d = FF(d, a, b, c, M_offset_5,  12, T[5]);\n\t            c = FF(c, d, a, b, M_offset_6,  17, T[6]);\n\t            b = FF(b, c, d, a, M_offset_7,  22, T[7]);\n\t            a = FF(a, b, c, d, M_offset_8,  7,  T[8]);\n\t            d = FF(d, a, b, c, M_offset_9,  12, T[9]);\n\t            c = FF(c, d, a, b, M_offset_10, 17, T[10]);\n\t            b = FF(b, c, d, a, M_offset_11, 22, T[11]);\n\t            a = FF(a, b, c, d, M_offset_12, 7,  T[12]);\n\t            d = FF(d, a, b, c, M_offset_13, 12, T[13]);\n\t            c = FF(c, d, a, b, M_offset_14, 17, T[14]);\n\t            b = FF(b, c, d, a, M_offset_15, 22, T[15]);\n\n\t            a = GG(a, b, c, d, M_offset_1,  5,  T[16]);\n\t            d = GG(d, a, b, c, M_offset_6,  9,  T[17]);\n\t            c = GG(c, d, a, b, M_offset_11, 14, T[18]);\n\t            b = GG(b, c, d, a, M_offset_0,  20, T[19]);\n\t            a = GG(a, b, c, d, M_offset_5,  5,  T[20]);\n\t            d = GG(d, a, b, c, M_offset_10, 9,  T[21]);\n\t            c = GG(c, d, a, b, M_offset_15, 14, T[22]);\n\t            b = GG(b, c, d, a, M_offset_4,  20, T[23]);\n\t            a = GG(a, b, c, d, M_offset_9,  5,  T[24]);\n\t            d = GG(d, a, b, c, M_offset_14, 9,  T[25]);\n\t            c = GG(c, d, a, b, M_offset_3,  14, T[26]);\n\t            b = GG(b, c, d, a, M_offset_8,  20, T[27]);\n\t            a = GG(a, b, c, d, M_offset_13, 5,  T[28]);\n\t            d = GG(d, a, b, c, M_offset_2,  9,  T[29]);\n\t            c = GG(c, d, a, b, M_offset_7,  14, T[30]);\n\t            b = GG(b, c, d, a, M_offset_12, 20, T[31]);\n\n\t            a = HH(a, b, c, d, M_offset_5,  4,  T[32]);\n\t            d = HH(d, a, b, c, M_offset_8,  11, T[33]);\n\t            c = HH(c, d, a, b, M_offset_11, 16, T[34]);\n\t            b = HH(b, c, d, a, M_offset_14, 23, T[35]);\n\t            a = HH(a, b, c, d, M_offset_1,  4,  T[36]);\n\t            d = HH(d, a, b, c, M_offset_4,  11, T[37]);\n\t            c = HH(c, d, a, b, M_offset_7,  16, T[38]);\n\t            b = HH(b, c, d, a, M_offset_10, 23, T[39]);\n\t            a = HH(a, b, c, d, M_offset_13, 4,  T[40]);\n\t            d = HH(d, a, b, c, M_offset_0,  11, T[41]);\n\t            c = HH(c, d, a, b, M_offset_3,  16, T[42]);\n\t            b = HH(b, c, d, a, M_offset_6,  23, T[43]);\n\t            a = HH(a, b, c, d, M_offset_9,  4,  T[44]);\n\t            d = HH(d, a, b, c, M_offset_12, 11, T[45]);\n\t            c = HH(c, d, a, b, M_offset_15, 16, T[46]);\n\t            b = HH(b, c, d, a, M_offset_2,  23, T[47]);\n\n\t            a = II(a, b, c, d, M_offset_0,  6,  T[48]);\n\t            d = II(d, a, b, c, M_offset_7,  10, T[49]);\n\t            c = II(c, d, a, b, M_offset_14, 15, T[50]);\n\t            b = II(b, c, d, a, M_offset_5,  21, T[51]);\n\t            a = II(a, b, c, d, M_offset_12, 6,  T[52]);\n\t            d = II(d, a, b, c, M_offset_3,  10, T[53]);\n\t            c = II(c, d, a, b, M_offset_10, 15, T[54]);\n\t            b = II(b, c, d, a, M_offset_1,  21, T[55]);\n\t            a = II(a, b, c, d, M_offset_8,  6,  T[56]);\n\t            d = II(d, a, b, c, M_offset_15, 10, T[57]);\n\t            c = II(c, d, a, b, M_offset_6,  15, T[58]);\n\t            b = II(b, c, d, a, M_offset_13, 21, T[59]);\n\t            a = II(a, b, c, d, M_offset_4,  6,  T[60]);\n\t            d = II(d, a, b, c, M_offset_11, 10, T[61]);\n\t            c = II(c, d, a, b, M_offset_2,  15, T[62]);\n\t            b = II(b, c, d, a, M_offset_9,  21, T[63]);\n\n\t            // Intermediate hash value\n\t            H[0] = (H[0] + a) | 0;\n\t            H[1] = (H[1] + b) | 0;\n\t            H[2] = (H[2] + c) | 0;\n\t            H[3] = (H[3] + d) | 0;\n\t        },\n\n\t        _doFinalize: function () {\n\t            // Shortcuts\n\t            var data = this._data;\n\t            var dataWords = data.words;\n\n\t            var nBitsTotal = this._nDataBytes * 8;\n\t            var nBitsLeft = data.sigBytes * 8;\n\n\t            // Add padding\n\t            dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\n\t            var nBitsTotalH = Math.floor(nBitsTotal / 0x100000000);\n\t            var nBitsTotalL = nBitsTotal;\n\t            dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = (\n\t                (((nBitsTotalH << 8)  | (nBitsTotalH >>> 24)) & 0x00ff00ff) |\n\t                (((nBitsTotalH << 24) | (nBitsTotalH >>> 8))  & 0xff00ff00)\n\t            );\n\t            dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (\n\t                (((nBitsTotalL << 8)  | (nBitsTotalL >>> 24)) & 0x00ff00ff) |\n\t                (((nBitsTotalL << 24) | (nBitsTotalL >>> 8))  & 0xff00ff00)\n\t            );\n\n\t            data.sigBytes = (dataWords.length + 1) * 4;\n\n\t            // Hash final blocks\n\t            this._process();\n\n\t            // Shortcuts\n\t            var hash = this._hash;\n\t            var H = hash.words;\n\n\t            // Swap endian\n\t            for (var i = 0; i < 4; i++) {\n\t                // Shortcut\n\t                var H_i = H[i];\n\n\t                H[i] = (((H_i << 8)  | (H_i >>> 24)) & 0x00ff00ff) |\n\t                       (((H_i << 24) | (H_i >>> 8))  & 0xff00ff00);\n\t            }\n\n\t            // Return final computed hash\n\t            return hash;\n\t        },\n\n\t        clone: function () {\n\t            var clone = Hasher.clone.call(this);\n\t            clone._hash = this._hash.clone();\n\n\t            return clone;\n\t        }\n\t    });\n\n\t    function FF(a, b, c, d, x, s, t) {\n\t        var n = a + ((b & c) | (~b & d)) + x + t;\n\t        return ((n << s) | (n >>> (32 - s))) + b;\n\t    }\n\n\t    function GG(a, b, c, d, x, s, t) {\n\t        var n = a + ((b & d) | (c & ~d)) + x + t;\n\t        return ((n << s) | (n >>> (32 - s))) + b;\n\t    }\n\n\t    function HH(a, b, c, d, x, s, t) {\n\t        var n = a + (b ^ c ^ d) + x + t;\n\t        return ((n << s) | (n >>> (32 - s))) + b;\n\t    }\n\n\t    function II(a, b, c, d, x, s, t) {\n\t        var n = a + (c ^ (b | ~d)) + x + t;\n\t        return ((n << s) | (n >>> (32 - s))) + b;\n\t    }\n\n\t    /**\n\t     * Shortcut function to the hasher's object interface.\n\t     *\n\t     * @param {WordArray|string} message The message to hash.\n\t     *\n\t     * @return {WordArray} The hash.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var hash = CryptoJS.MD5('message');\n\t     *     var hash = CryptoJS.MD5(wordArray);\n\t     */\n\t    C.MD5 = Hasher._createHelper(MD5);\n\n\t    /**\n\t     * Shortcut function to the HMAC's object interface.\n\t     *\n\t     * @param {WordArray|string} message The message to hash.\n\t     * @param {WordArray|string} key The secret key.\n\t     *\n\t     * @return {WordArray} The HMAC.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var hmac = CryptoJS.HmacMD5(message, key);\n\t     */\n\t    C.HmacMD5 = Hasher._createHmacHelper(MD5);\n\t}(Math));\n\n\n\treturn CryptoJS.MD5;\n\n}));", ";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Cipher Feedback block mode.\n\t */\n\tCryptoJS.mode.CFB = (function () {\n\t    var CFB = CryptoJS.lib.BlockCipherMode.extend();\n\n\t    CFB.Encryptor = CFB.extend({\n\t        processBlock: function (words, offset) {\n\t            // Shortcuts\n\t            var cipher = this._cipher;\n\t            var blockSize = cipher.blockSize;\n\n\t            generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher);\n\n\t            // Remember this block to use with next block\n\t            this._prevBlock = words.slice(offset, offset + blockSize);\n\t        }\n\t    });\n\n\t    CFB.Decryptor = CFB.extend({\n\t        processBlock: function (words, offset) {\n\t            // Shortcuts\n\t            var cipher = this._cipher;\n\t            var blockSize = cipher.blockSize;\n\n\t            // Remember this block to use with next block\n\t            var thisBlock = words.slice(offset, offset + blockSize);\n\n\t            generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher);\n\n\t            // This block becomes the previous block\n\t            this._prevBlock = thisBlock;\n\t        }\n\t    });\n\n\t    function generateKeystreamAndEncrypt(words, offset, blockSize, cipher) {\n\t        var keystream;\n\n\t        // Shortcut\n\t        var iv = this._iv;\n\n\t        // Generate keystream\n\t        if (iv) {\n\t            keystream = iv.slice(0);\n\n\t            // Remove IV for subsequent blocks\n\t            this._iv = undefined;\n\t        } else {\n\t            keystream = this._prevBlock;\n\t        }\n\t        cipher.encryptBlock(keystream, 0);\n\n\t        // Encrypt\n\t        for (var i = 0; i < blockSize; i++) {\n\t            words[offset + i] ^= keystream[i];\n\t        }\n\t    }\n\n\t    return CFB;\n\t}());\n\n\n\treturn CryptoJS.mode.CFB;\n\n}));", ";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/** @preserve\n\t * Counter block mode compatible with  Dr Brian Gladman fileenc.c\n\t * derived from CryptoJS.mode.CTR\n\t * Jan Hruby jhruby.web@gmail.com\n\t */\n\tCryptoJS.mode.CTRGladman = (function () {\n\t    var CTRGladman = CryptoJS.lib.BlockCipherMode.extend();\n\n\t\tfunction incWord(word)\n\t\t{\n\t\t\tif (((word >> 24) & 0xff) === 0xff) { //overflow\n\t\t\tvar b1 = (word >> 16)&0xff;\n\t\t\tvar b2 = (word >> 8)&0xff;\n\t\t\tvar b3 = word & 0xff;\n\n\t\t\tif (b1 === 0xff) // overflow b1\n\t\t\t{\n\t\t\tb1 = 0;\n\t\t\tif (b2 === 0xff)\n\t\t\t{\n\t\t\t\tb2 = 0;\n\t\t\t\tif (b3 === 0xff)\n\t\t\t\t{\n\t\t\t\t\tb3 = 0;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t++b3;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t++b2;\n\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t++b1;\n\t\t\t}\n\n\t\t\tword = 0;\n\t\t\tword += (b1 << 16);\n\t\t\tword += (b2 << 8);\n\t\t\tword += b3;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\tword += (0x01 << 24);\n\t\t\t}\n\t\t\treturn word;\n\t\t}\n\n\t\tfunction incCounter(counter)\n\t\t{\n\t\t\tif ((counter[0] = incWord(counter[0])) === 0)\n\t\t\t{\n\t\t\t\t// encr_data in fileenc.c from  Dr Brian Gladman's counts only with DWORD j < 8\n\t\t\t\tcounter[1] = incWord(counter[1]);\n\t\t\t}\n\t\t\treturn counter;\n\t\t}\n\n\t    var Encryptor = CTRGladman.Encryptor = CTRGladman.extend({\n\t        processBlock: function (words, offset) {\n\t            // Shortcuts\n\t            var cipher = this._cipher\n\t            var blockSize = cipher.blockSize;\n\t            var iv = this._iv;\n\t            var counter = this._counter;\n\n\t            // Generate keystream\n\t            if (iv) {\n\t                counter = this._counter = iv.slice(0);\n\n\t                // Remove IV for subsequent blocks\n\t                this._iv = undefined;\n\t            }\n\n\t\t\t\tincCounter(counter);\n\n\t\t\t\tvar keystream = counter.slice(0);\n\t            cipher.encryptBlock(keystream, 0);\n\n\t            // Encrypt\n\t            for (var i = 0; i < blockSize; i++) {\n\t                words[offset + i] ^= keystream[i];\n\t            }\n\t        }\n\t    });\n\n\t    CTRGladman.Decryptor = Encryptor;\n\n\t    return CTRGladman;\n\t}());\n\n\n\n\n\treturn CryptoJS.mode.CTRGladman;\n\n}));", ";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Counter block mode.\n\t */\n\tCryptoJS.mode.CTR = (function () {\n\t    var CTR = CryptoJS.lib.BlockCipherMode.extend();\n\n\t    var Encryptor = CTR.Encryptor = CTR.extend({\n\t        processBlock: function (words, offset) {\n\t            // Shortcuts\n\t            var cipher = this._cipher\n\t            var blockSize = cipher.blockSize;\n\t            var iv = this._iv;\n\t            var counter = this._counter;\n\n\t            // Generate keystream\n\t            if (iv) {\n\t                counter = this._counter = iv.slice(0);\n\n\t                // Remove IV for subsequent blocks\n\t                this._iv = undefined;\n\t            }\n\t            var keystream = counter.slice(0);\n\t            cipher.encryptBlock(keystream, 0);\n\n\t            // Increment counter\n\t            counter[blockSize - 1] = (counter[blockSize - 1] + 1) | 0\n\n\t            // Encrypt\n\t            for (var i = 0; i < blockSize; i++) {\n\t                words[offset + i] ^= keystream[i];\n\t            }\n\t        }\n\t    });\n\n\t    CTR.Decryptor = Encryptor;\n\n\t    return CTR;\n\t}());\n\n\n\treturn CryptoJS.mode.CTR;\n\n}));", ";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Electronic Codebook block mode.\n\t */\n\tCryptoJS.mode.ECB = (function () {\n\t    var ECB = CryptoJS.lib.BlockCipherMode.extend();\n\n\t    ECB.Encryptor = ECB.extend({\n\t        processBlock: function (words, offset) {\n\t            this._cipher.encryptBlock(words, offset);\n\t        }\n\t    });\n\n\t    ECB.Decryptor = ECB.extend({\n\t        processBlock: function (words, offset) {\n\t            this._cipher.decryptBlock(words, offset);\n\t        }\n\t    });\n\n\t    return ECB;\n\t}());\n\n\n\treturn CryptoJS.mode.ECB;\n\n}));", ";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Output Feedback block mode.\n\t */\n\tCryptoJS.mode.OFB = (function () {\n\t    var OFB = CryptoJS.lib.BlockCipherMode.extend();\n\n\t    var Encryptor = OFB.Encryptor = OFB.extend({\n\t        processBlock: function (words, offset) {\n\t            // Shortcuts\n\t            var cipher = this._cipher\n\t            var blockSize = cipher.blockSize;\n\t            var iv = this._iv;\n\t            var keystream = this._keystream;\n\n\t            // Generate keystream\n\t            if (iv) {\n\t                keystream = this._keystream = iv.slice(0);\n\n\t                // Remove IV for subsequent blocks\n\t                this._iv = undefined;\n\t            }\n\t            cipher.encryptBlock(keystream, 0);\n\n\t            // Encrypt\n\t            for (var i = 0; i < blockSize; i++) {\n\t                words[offset + i] ^= keystream[i];\n\t            }\n\t        }\n\t    });\n\n\t    OFB.Decryptor = Encryptor;\n\n\t    return OFB;\n\t}());\n\n\n\treturn CryptoJS.mode.OFB;\n\n}));", ";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * ANSI X.923 padding strategy.\n\t */\n\tCryptoJS.pad.AnsiX923 = {\n\t    pad: function (data, blockSize) {\n\t        // Shortcuts\n\t        var dataSigBytes = data.sigBytes;\n\t        var blockSizeBytes = blockSize * 4;\n\n\t        // Count padding bytes\n\t        var nPaddingBytes = blockSizeBytes - dataSigBytes % blockSizeBytes;\n\n\t        // Compute last byte position\n\t        var lastBytePos = dataSigBytes + nPaddingBytes - 1;\n\n\t        // Pad\n\t        data.clamp();\n\t        data.words[lastBytePos >>> 2] |= nPaddingBytes << (24 - (lastBytePos % 4) * 8);\n\t        data.sigBytes += nPaddingBytes;\n\t    },\n\n\t    unpad: function (data) {\n\t        // Get number of padding bytes from last byte\n\t        var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t        // Remove padding\n\t        data.sigBytes -= nPaddingBytes;\n\t    }\n\t};\n\n\n\treturn CryptoJS.pad.Ansix923;\n\n}));", ";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * ISO 10126 padding strategy.\n\t */\n\tCryptoJS.pad.Iso10126 = {\n\t    pad: function (data, blockSize) {\n\t        // Shortcut\n\t        var blockSizeBytes = blockSize * 4;\n\n\t        // Count padding bytes\n\t        var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;\n\n\t        // Pad\n\t        data.concat(CryptoJS.lib.WordArray.random(nPaddingBytes - 1)).\n\t             concat(CryptoJS.lib.WordArray.create([nPaddingBytes << 24], 1));\n\t    },\n\n\t    unpad: function (data) {\n\t        // Get number of padding bytes from last byte\n\t        var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t        // Remove padding\n\t        data.sigBytes -= nPaddingBytes;\n\t    }\n\t};\n\n\n\treturn CryptoJS.pad.Iso10126;\n\n}));", ";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * ISO/IEC 9797-1 Padding Method 2.\n\t */\n\tCryptoJS.pad.Iso97971 = {\n\t    pad: function (data, blockSize) {\n\t        // Add 0x80 byte\n\t        data.concat(CryptoJS.lib.WordArray.create([0x80000000], 1));\n\n\t        // Zero pad the rest\n\t        CryptoJS.pad.ZeroPadding.pad(data, blockSize);\n\t    },\n\n\t    unpad: function (data) {\n\t        // Remove zero padding\n\t        CryptoJS.pad.ZeroPadding.unpad(data);\n\n\t        // Remove one more byte -- the 0x80 byte\n\t        data.sigBytes--;\n\t    }\n\t};\n\n\n\treturn CryptoJS.pad.Iso97971;\n\n}));", ";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * A noop padding strategy.\n\t */\n\tCryptoJS.pad.NoPadding = {\n\t    pad: function () {\n\t    },\n\n\t    unpad: function () {\n\t    }\n\t};\n\n\n\treturn CryptoJS.pad.NoPadding;\n\n}));", ";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Zero padding strategy.\n\t */\n\tCryptoJS.pad.ZeroPadding = {\n\t    pad: function (data, blockSize) {\n\t        // Shortcut\n\t        var blockSizeBytes = blockSize * 4;\n\n\t        // Pad\n\t        data.clamp();\n\t        data.sigBytes += blockSizeBytes - ((data.sigBytes % blockSizeBytes) || blockSizeBytes);\n\t    },\n\n\t    unpad: function (data) {\n\t        // Shortcut\n\t        var dataWords = data.words;\n\n\t        // Unpad\n\t        var i = data.sigBytes - 1;\n\t        for (var i = data.sigBytes - 1; i >= 0; i--) {\n\t            if (((dataWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff)) {\n\t                data.sigBytes = i + 1;\n\t                break;\n\t            }\n\t        }\n\t    }\n\t};\n\n\n\treturn CryptoJS.pad.ZeroPadding;\n\n}));", ";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha1\"), require(\"./hmac\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha1\", \"./hmac\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var Base = C_lib.Base;\n\t    var WordArray = C_lib.WordArray;\n\t    var C_algo = C.algo;\n\t    var SHA1 = C_algo.SHA1;\n\t    var HMAC = C_algo.HMAC;\n\n\t    /**\n\t     * Password-Based Key Derivation Function 2 algorithm.\n\t     */\n\t    var PBKDF2 = C_algo.PBKDF2 = Base.extend({\n\t        /**\n\t         * Configuration options.\n\t         *\n\t         * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n\t         * @property {Hasher} hasher The hasher to use. Default: SHA1\n\t         * @property {number} iterations The number of iterations to perform. Default: 1\n\t         */\n\t        cfg: Base.extend({\n\t            keySize: 128/32,\n\t            hasher: SHA1,\n\t            iterations: 1\n\t        }),\n\n\t        /**\n\t         * Initializes a newly created key derivation function.\n\t         *\n\t         * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n\t         *\n\t         * @example\n\t         *\n\t         *     var kdf = CryptoJS.algo.PBKDF2.create();\n\t         *     var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8 });\n\t         *     var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8, iterations: 1000 });\n\t         */\n\t        init: function (cfg) {\n\t            this.cfg = this.cfg.extend(cfg);\n\t        },\n\n\t        /**\n\t         * Computes the Password-Based Key Derivation Function 2.\n\t         *\n\t         * @param {WordArray|string} password The password.\n\t         * @param {WordArray|string} salt A salt.\n\t         *\n\t         * @return {WordArray} The derived key.\n\t         *\n\t         * @example\n\t         *\n\t         *     var key = kdf.compute(password, salt);\n\t         */\n\t        compute: function (password, salt) {\n\t            // Shortcut\n\t            var cfg = this.cfg;\n\n\t            // Init HMAC\n\t            var hmac = HMAC.create(cfg.hasher, password);\n\n\t            // Initial values\n\t            var derivedKey = WordArray.create();\n\t            var blockIndex = WordArray.create([0x00000001]);\n\n\t            // Shortcuts\n\t            var derivedKeyWords = derivedKey.words;\n\t            var blockIndexWords = blockIndex.words;\n\t            var keySize = cfg.keySize;\n\t            var iterations = cfg.iterations;\n\n\t            // Generate key\n\t            while (derivedKeyWords.length < keySize) {\n\t                var block = hmac.update(salt).finalize(blockIndex);\n\t                hmac.reset();\n\n\t                // Shortcuts\n\t                var blockWords = block.words;\n\t                var blockWordsLength = blockWords.length;\n\n\t                // Iterations\n\t                var intermediate = block;\n\t                for (var i = 1; i < iterations; i++) {\n\t                    intermediate = hmac.finalize(intermediate);\n\t                    hmac.reset();\n\n\t                    // Shortcut\n\t                    var intermediateWords = intermediate.words;\n\n\t                    // XOR intermediate with block\n\t                    for (var j = 0; j < blockWordsLength; j++) {\n\t                        blockWords[j] ^= intermediateWords[j];\n\t                    }\n\t                }\n\n\t                derivedKey.concat(block);\n\t                blockIndexWords[0]++;\n\t            }\n\t            derivedKey.sigBytes = keySize * 4;\n\n\t            return derivedKey;\n\t        }\n\t    });\n\n\t    /**\n\t     * Computes the Password-Based Key Derivation Function 2.\n\t     *\n\t     * @param {WordArray|string} password The password.\n\t     * @param {WordArray|string} salt A salt.\n\t     * @param {Object} cfg (Optional) The configuration options to use for this computation.\n\t     *\n\t     * @return {WordArray} The derived key.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var key = CryptoJS.PBKDF2(password, salt);\n\t     *     var key = CryptoJS.PBKDF2(password, salt, { keySize: 8 });\n\t     *     var key = CryptoJS.PBKDF2(password, salt, { keySize: 8, iterations: 1000 });\n\t     */\n\t    C.PBKDF2 = function (password, salt, cfg) {\n\t        return PBKDF2.create(cfg).compute(password, salt);\n\t    };\n\t}());\n\n\n\treturn CryptoJS.PBKDF2;\n\n}));", ";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var StreamCipher = C_lib.StreamCipher;\n\t    var C_algo = C.algo;\n\n\t    // Reusable objects\n\t    var S  = [];\n\t    var C_ = [];\n\t    var G  = [];\n\n\t    /**\n\t     * Rabbit stream cipher algorithm.\n\t     *\n\t     * This is a legacy version that neglected to convert the key to little-endian.\n\t     * This error doesn't affect the cipher's security,\n\t     * but it does affect its compatibility with other implementations.\n\t     */\n\t    var RabbitLegacy = C_algo.RabbitLegacy = StreamCipher.extend({\n\t        _doReset: function () {\n\t            // Shortcuts\n\t            var K = this._key.words;\n\t            var iv = this.cfg.iv;\n\n\t            // Generate initial state values\n\t            var X = this._X = [\n\t                K[0], (K[3] << 16) | (K[2] >>> 16),\n\t                K[1], (K[0] << 16) | (K[3] >>> 16),\n\t                K[2], (K[1] << 16) | (K[0] >>> 16),\n\t                K[3], (K[2] << 16) | (K[1] >>> 16)\n\t            ];\n\n\t            // Generate initial counter values\n\t            var C = this._C = [\n\t                (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff),\n\t                (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff),\n\t                (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff),\n\t                (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff)\n\t            ];\n\n\t            // Carry bit\n\t            this._b = 0;\n\n\t            // Iterate the system four times\n\t            for (var i = 0; i < 4; i++) {\n\t                nextState.call(this);\n\t            }\n\n\t            // Modify the counters\n\t            for (var i = 0; i < 8; i++) {\n\t                C[i] ^= X[(i + 4) & 7];\n\t            }\n\n\t            // IV setup\n\t            if (iv) {\n\t                // Shortcuts\n\t                var IV = iv.words;\n\t                var IV_0 = IV[0];\n\t                var IV_1 = IV[1];\n\n\t                // Generate four subvectors\n\t                var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00);\n\t                var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00);\n\t                var i1 = (i0 >>> 16) | (i2 & 0xffff0000);\n\t                var i3 = (i2 << 16)  | (i0 & 0x0000ffff);\n\n\t                // Modify counter values\n\t                C[0] ^= i0;\n\t                C[1] ^= i1;\n\t                C[2] ^= i2;\n\t                C[3] ^= i3;\n\t                C[4] ^= i0;\n\t                C[5] ^= i1;\n\t                C[6] ^= i2;\n\t                C[7] ^= i3;\n\n\t                // Iterate the system four times\n\t                for (var i = 0; i < 4; i++) {\n\t                    nextState.call(this);\n\t                }\n\t            }\n\t        },\n\n\t        _doProcessBlock: function (M, offset) {\n\t            // Shortcut\n\t            var X = this._X;\n\n\t            // Iterate the system\n\t            nextState.call(this);\n\n\t            // Generate four keystream words\n\t            S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16);\n\t            S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16);\n\t            S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16);\n\t            S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16);\n\n\t            for (var i = 0; i < 4; i++) {\n\t                // Swap endian\n\t                S[i] = (((S[i] << 8)  | (S[i] >>> 24)) & 0x00ff00ff) |\n\t                       (((S[i] << 24) | (S[i] >>> 8))  & 0xff00ff00);\n\n\t                // Encrypt\n\t                M[offset + i] ^= S[i];\n\t            }\n\t        },\n\n\t        blockSize: 128/32,\n\n\t        ivSize: 64/32\n\t    });\n\n\t    function nextState() {\n\t        // Shortcuts\n\t        var X = this._X;\n\t        var C = this._C;\n\n\t        // Save old counter values\n\t        for (var i = 0; i < 8; i++) {\n\t            C_[i] = C[i];\n\t        }\n\n\t        // Calculate new counter values\n\t        C[0] = (C[0] + 0x4d34d34d + this._b) | 0;\n\t        C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0;\n\t        C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0;\n\t        C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0;\n\t        C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0;\n\t        C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0;\n\t        C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0;\n\t        C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0;\n\t        this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0;\n\n\t        // Calculate the g-values\n\t        for (var i = 0; i < 8; i++) {\n\t            var gx = X[i] + C[i];\n\n\t            // Construct high and low argument for squaring\n\t            var ga = gx & 0xffff;\n\t            var gb = gx >>> 16;\n\n\t            // Calculate high and low result of squaring\n\t            var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb;\n\t            var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0);\n\n\t            // High XOR low\n\t            G[i] = gh ^ gl;\n\t        }\n\n\t        // Calculate new state values\n\t        X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0;\n\t        X[1] = (G[1] + ((G[0] << 8)  | (G[0] >>> 24)) + G[7]) | 0;\n\t        X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0;\n\t        X[3] = (G[3] + ((G[2] << 8)  | (G[2] >>> 24)) + G[1]) | 0;\n\t        X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0;\n\t        X[5] = (G[5] + ((G[4] << 8)  | (G[4] >>> 24)) + G[3]) | 0;\n\t        X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0;\n\t        X[7] = (G[7] + ((G[6] << 8)  | (G[6] >>> 24)) + G[5]) | 0;\n\t    }\n\n\t    /**\n\t     * Shortcut functions to the cipher's object interface.\n\t     *\n\t     * @example\n\t     *\n\t     *     var ciphertext = CryptoJS.RabbitLegacy.encrypt(message, key, cfg);\n\t     *     var plaintext  = CryptoJS.RabbitLegacy.decrypt(ciphertext, key, cfg);\n\t     */\n\t    C.RabbitLegacy = StreamCipher._createHelper(RabbitLegacy);\n\t}());\n\n\n\treturn CryptoJS.RabbitLegacy;\n\n}));", ";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var StreamCipher = C_lib.StreamCipher;\n\t    var C_algo = C.algo;\n\n\t    // Reusable objects\n\t    var S  = [];\n\t    var C_ = [];\n\t    var G  = [];\n\n\t    /**\n\t     * Rabbit stream cipher algorithm\n\t     */\n\t    var Rabbit = C_algo.Rabbit = StreamCipher.extend({\n\t        _doReset: function () {\n\t            // Shortcuts\n\t            var K = this._key.words;\n\t            var iv = this.cfg.iv;\n\n\t            // Swap endian\n\t            for (var i = 0; i < 4; i++) {\n\t                K[i] = (((K[i] << 8)  | (K[i] >>> 24)) & 0x00ff00ff) |\n\t                       (((K[i] << 24) | (K[i] >>> 8))  & 0xff00ff00);\n\t            }\n\n\t            // Generate initial state values\n\t            var X = this._X = [\n\t                K[0], (K[3] << 16) | (K[2] >>> 16),\n\t                K[1], (K[0] << 16) | (K[3] >>> 16),\n\t                K[2], (K[1] << 16) | (K[0] >>> 16),\n\t                K[3], (K[2] << 16) | (K[1] >>> 16)\n\t            ];\n\n\t            // Generate initial counter values\n\t            var C = this._C = [\n\t                (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff),\n\t                (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff),\n\t                (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff),\n\t                (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff)\n\t            ];\n\n\t            // Carry bit\n\t            this._b = 0;\n\n\t            // Iterate the system four times\n\t            for (var i = 0; i < 4; i++) {\n\t                nextState.call(this);\n\t            }\n\n\t            // Modify the counters\n\t            for (var i = 0; i < 8; i++) {\n\t                C[i] ^= X[(i + 4) & 7];\n\t            }\n\n\t            // IV setup\n\t            if (iv) {\n\t                // Shortcuts\n\t                var IV = iv.words;\n\t                var IV_0 = IV[0];\n\t                var IV_1 = IV[1];\n\n\t                // Generate four subvectors\n\t                var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00);\n\t                var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00);\n\t                var i1 = (i0 >>> 16) | (i2 & 0xffff0000);\n\t                var i3 = (i2 << 16)  | (i0 & 0x0000ffff);\n\n\t                // Modify counter values\n\t                C[0] ^= i0;\n\t                C[1] ^= i1;\n\t                C[2] ^= i2;\n\t                C[3] ^= i3;\n\t                C[4] ^= i0;\n\t                C[5] ^= i1;\n\t                C[6] ^= i2;\n\t                C[7] ^= i3;\n\n\t                // Iterate the system four times\n\t                for (var i = 0; i < 4; i++) {\n\t                    nextState.call(this);\n\t                }\n\t            }\n\t        },\n\n\t        _doProcessBlock: function (M, offset) {\n\t            // Shortcut\n\t            var X = this._X;\n\n\t            // Iterate the system\n\t            nextState.call(this);\n\n\t            // Generate four keystream words\n\t            S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16);\n\t            S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16);\n\t            S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16);\n\t            S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16);\n\n\t            for (var i = 0; i < 4; i++) {\n\t                // Swap endian\n\t                S[i] = (((S[i] << 8)  | (S[i] >>> 24)) & 0x00ff00ff) |\n\t                       (((S[i] << 24) | (S[i] >>> 8))  & 0xff00ff00);\n\n\t                // Encrypt\n\t                M[offset + i] ^= S[i];\n\t            }\n\t        },\n\n\t        blockSize: 128/32,\n\n\t        ivSize: 64/32\n\t    });\n\n\t    function nextState() {\n\t        // Shortcuts\n\t        var X = this._X;\n\t        var C = this._C;\n\n\t        // Save old counter values\n\t        for (var i = 0; i < 8; i++) {\n\t            C_[i] = C[i];\n\t        }\n\n\t        // Calculate new counter values\n\t        C[0] = (C[0] + 0x4d34d34d + this._b) | 0;\n\t        C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0;\n\t        C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0;\n\t        C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0;\n\t        C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0;\n\t        C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0;\n\t        C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0;\n\t        C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0;\n\t        this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0;\n\n\t        // Calculate the g-values\n\t        for (var i = 0; i < 8; i++) {\n\t            var gx = X[i] + C[i];\n\n\t            // Construct high and low argument for squaring\n\t            var ga = gx & 0xffff;\n\t            var gb = gx >>> 16;\n\n\t            // Calculate high and low result of squaring\n\t            var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb;\n\t            var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0);\n\n\t            // High XOR low\n\t            G[i] = gh ^ gl;\n\t        }\n\n\t        // Calculate new state values\n\t        X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0;\n\t        X[1] = (G[1] + ((G[0] << 8)  | (G[0] >>> 24)) + G[7]) | 0;\n\t        X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0;\n\t        X[3] = (G[3] + ((G[2] << 8)  | (G[2] >>> 24)) + G[1]) | 0;\n\t        X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0;\n\t        X[5] = (G[5] + ((G[4] << 8)  | (G[4] >>> 24)) + G[3]) | 0;\n\t        X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0;\n\t        X[7] = (G[7] + ((G[6] << 8)  | (G[6] >>> 24)) + G[5]) | 0;\n\t    }\n\n\t    /**\n\t     * Shortcut functions to the cipher's object interface.\n\t     *\n\t     * @example\n\t     *\n\t     *     var ciphertext = CryptoJS.Rabbit.encrypt(message, key, cfg);\n\t     *     var plaintext  = CryptoJS.Rabbit.decrypt(ciphertext, key, cfg);\n\t     */\n\t    C.Rabbit = StreamCipher._createHelper(Rabbit);\n\t}());\n\n\n\treturn CryptoJS.Rabbit;\n\n}));", ";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var StreamCipher = C_lib.StreamCipher;\n\t    var C_algo = C.algo;\n\n\t    /**\n\t     * RC4 stream cipher algorithm.\n\t     */\n\t    var RC4 = C_algo.RC4 = StreamCipher.extend({\n\t        _doReset: function () {\n\t            // Shortcuts\n\t            var key = this._key;\n\t            var keyWords = key.words;\n\t            var keySigBytes = key.sigBytes;\n\n\t            // Init sbox\n\t            var S = this._S = [];\n\t            for (var i = 0; i < 256; i++) {\n\t                S[i] = i;\n\t            }\n\n\t            // Key setup\n\t            for (var i = 0, j = 0; i < 256; i++) {\n\t                var keyByteIndex = i % keySigBytes;\n\t                var keyByte = (keyWords[keyByteIndex >>> 2] >>> (24 - (keyByteIndex % 4) * 8)) & 0xff;\n\n\t                j = (j + S[i] + keyByte) % 256;\n\n\t                // Swap\n\t                var t = S[i];\n\t                S[i] = S[j];\n\t                S[j] = t;\n\t            }\n\n\t            // Counters\n\t            this._i = this._j = 0;\n\t        },\n\n\t        _doProcessBlock: function (M, offset) {\n\t            M[offset] ^= generateKeystreamWord.call(this);\n\t        },\n\n\t        keySize: 256/32,\n\n\t        ivSize: 0\n\t    });\n\n\t    function generateKeystreamWord() {\n\t        // Shortcuts\n\t        var S = this._S;\n\t        var i = this._i;\n\t        var j = this._j;\n\n\t        // Generate keystream word\n\t        var keystreamWord = 0;\n\t        for (var n = 0; n < 4; n++) {\n\t            i = (i + 1) % 256;\n\t            j = (j + S[i]) % 256;\n\n\t            // Swap\n\t            var t = S[i];\n\t            S[i] = S[j];\n\t            S[j] = t;\n\n\t            keystreamWord |= S[(S[i] + S[j]) % 256] << (24 - n * 8);\n\t        }\n\n\t        // Update counters\n\t        this._i = i;\n\t        this._j = j;\n\n\t        return keystreamWord;\n\t    }\n\n\t    /**\n\t     * Shortcut functions to the cipher's object interface.\n\t     *\n\t     * @example\n\t     *\n\t     *     var ciphertext = CryptoJS.RC4.encrypt(message, key, cfg);\n\t     *     var plaintext  = CryptoJS.RC4.decrypt(ciphertext, key, cfg);\n\t     */\n\t    C.RC4 = StreamCipher._createHelper(RC4);\n\n\t    /**\n\t     * Modified RC4 stream cipher algorithm.\n\t     */\n\t    var RC4Drop = C_algo.RC4Drop = RC4.extend({\n\t        /**\n\t         * Configuration options.\n\t         *\n\t         * @property {number} drop The number of keystream words to drop. Default 192\n\t         */\n\t        cfg: RC4.cfg.extend({\n\t            drop: 192\n\t        }),\n\n\t        _doReset: function () {\n\t            RC4._doReset.call(this);\n\n\t            // Drop\n\t            for (var i = this.cfg.drop; i > 0; i--) {\n\t                generateKeystreamWord.call(this);\n\t            }\n\t        }\n\t    });\n\n\t    /**\n\t     * Shortcut functions to the cipher's object interface.\n\t     *\n\t     * @example\n\t     *\n\t     *     var ciphertext = CryptoJS.RC4Drop.encrypt(message, key, cfg);\n\t     *     var plaintext  = CryptoJS.RC4Drop.decrypt(ciphertext, key, cfg);\n\t     */\n\t    C.RC4Drop = StreamCipher._createHelper(RC4Drop);\n\t}());\n\n\n\treturn CryptoJS.RC4;\n\n}));", ";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/** @preserve\n\t(c) 2012 by Cédric Mesnil. All rights reserved.\n\n\tRedistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:\n\n\t    - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.\n\t    - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.\n\n\tTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\t*/\n\n\t(function (Math) {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var WordArray = C_lib.WordArray;\n\t    var Hasher = C_lib.Hasher;\n\t    var C_algo = C.algo;\n\n\t    // Constants table\n\t    var _zl = WordArray.create([\n\t        0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,\n\t        7,  4, 13,  1, 10,  6, 15,  3, 12,  0,  9,  5,  2, 14, 11,  8,\n\t        3, 10, 14,  4,  9, 15,  8,  1,  2,  7,  0,  6, 13, 11,  5, 12,\n\t        1,  9, 11, 10,  0,  8, 12,  4, 13,  3,  7, 15, 14,  5,  6,  2,\n\t        4,  0,  5,  9,  7, 12,  2, 10, 14,  1,  3,  8, 11,  6, 15, 13]);\n\t    var _zr = WordArray.create([\n\t        5, 14,  7,  0,  9,  2, 11,  4, 13,  6, 15,  8,  1, 10,  3, 12,\n\t        6, 11,  3,  7,  0, 13,  5, 10, 14, 15,  8, 12,  4,  9,  1,  2,\n\t        15,  5,  1,  3,  7, 14,  6,  9, 11,  8, 12,  2, 10,  0,  4, 13,\n\t        8,  6,  4,  1,  3, 11, 15,  0,  5, 12,  2, 13,  9,  7, 10, 14,\n\t        12, 15, 10,  4,  1,  5,  8,  7,  6,  2, 13, 14,  0,  3,  9, 11]);\n\t    var _sl = WordArray.create([\n\t         11, 14, 15, 12,  5,  8,  7,  9, 11, 13, 14, 15,  6,  7,  9,  8,\n\t        7, 6,   8, 13, 11,  9,  7, 15,  7, 12, 15,  9, 11,  7, 13, 12,\n\t        11, 13,  6,  7, 14,  9, 13, 15, 14,  8, 13,  6,  5, 12,  7,  5,\n\t          11, 12, 14, 15, 14, 15,  9,  8,  9, 14,  5,  6,  8,  6,  5, 12,\n\t        9, 15,  5, 11,  6,  8, 13, 12,  5, 12, 13, 14, 11,  8,  5,  6 ]);\n\t    var _sr = WordArray.create([\n\t        8,  9,  9, 11, 13, 15, 15,  5,  7,  7,  8, 11, 14, 14, 12,  6,\n\t        9, 13, 15,  7, 12,  8,  9, 11,  7,  7, 12,  7,  6, 15, 13, 11,\n\t        9,  7, 15, 11,  8,  6,  6, 14, 12, 13,  5, 14, 13, 13,  7,  5,\n\t        15,  5,  8, 11, 14, 14,  6, 14,  6,  9, 12,  9, 12,  5, 15,  8,\n\t        8,  5, 12,  9, 12,  5, 14,  6,  8, 13,  6,  5, 15, 13, 11, 11 ]);\n\n\t    var _hl =  WordArray.create([ 0x00000000, 0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xA953FD4E]);\n\t    var _hr =  WordArray.create([ 0x50A28BE6, 0x5C4DD124, 0x6D703EF3, 0x7A6D76E9, 0x00000000]);\n\n\t    /**\n\t     * RIPEMD160 hash algorithm.\n\t     */\n\t    var RIPEMD160 = C_algo.RIPEMD160 = Hasher.extend({\n\t        _doReset: function () {\n\t            this._hash  = WordArray.create([0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0]);\n\t        },\n\n\t        _doProcessBlock: function (M, offset) {\n\n\t            // Swap endian\n\t            for (var i = 0; i < 16; i++) {\n\t                // Shortcuts\n\t                var offset_i = offset + i;\n\t                var M_offset_i = M[offset_i];\n\n\t                // Swap\n\t                M[offset_i] = (\n\t                    (((M_offset_i << 8)  | (M_offset_i >>> 24)) & 0x00ff00ff) |\n\t                    (((M_offset_i << 24) | (M_offset_i >>> 8))  & 0xff00ff00)\n\t                );\n\t            }\n\t            // Shortcut\n\t            var H  = this._hash.words;\n\t            var hl = _hl.words;\n\t            var hr = _hr.words;\n\t            var zl = _zl.words;\n\t            var zr = _zr.words;\n\t            var sl = _sl.words;\n\t            var sr = _sr.words;\n\n\t            // Working variables\n\t            var al, bl, cl, dl, el;\n\t            var ar, br, cr, dr, er;\n\n\t            ar = al = H[0];\n\t            br = bl = H[1];\n\t            cr = cl = H[2];\n\t            dr = dl = H[3];\n\t            er = el = H[4];\n\t            // Computation\n\t            var t;\n\t            for (var i = 0; i < 80; i += 1) {\n\t                t = (al +  M[offset+zl[i]])|0;\n\t                if (i<16){\n\t\t            t +=  f1(bl,cl,dl) + hl[0];\n\t                } else if (i<32) {\n\t\t            t +=  f2(bl,cl,dl) + hl[1];\n\t                } else if (i<48) {\n\t\t            t +=  f3(bl,cl,dl) + hl[2];\n\t                } else if (i<64) {\n\t\t            t +=  f4(bl,cl,dl) + hl[3];\n\t                } else {// if (i<80) {\n\t\t            t +=  f5(bl,cl,dl) + hl[4];\n\t                }\n\t                t = t|0;\n\t                t =  rotl(t,sl[i]);\n\t                t = (t+el)|0;\n\t                al = el;\n\t                el = dl;\n\t                dl = rotl(cl, 10);\n\t                cl = bl;\n\t                bl = t;\n\n\t                t = (ar + M[offset+zr[i]])|0;\n\t                if (i<16){\n\t\t            t +=  f5(br,cr,dr) + hr[0];\n\t                } else if (i<32) {\n\t\t            t +=  f4(br,cr,dr) + hr[1];\n\t                } else if (i<48) {\n\t\t            t +=  f3(br,cr,dr) + hr[2];\n\t                } else if (i<64) {\n\t\t            t +=  f2(br,cr,dr) + hr[3];\n\t                } else {// if (i<80) {\n\t\t            t +=  f1(br,cr,dr) + hr[4];\n\t                }\n\t                t = t|0;\n\t                t =  rotl(t,sr[i]) ;\n\t                t = (t+er)|0;\n\t                ar = er;\n\t                er = dr;\n\t                dr = rotl(cr, 10);\n\t                cr = br;\n\t                br = t;\n\t            }\n\t            // Intermediate hash value\n\t            t    = (H[1] + cl + dr)|0;\n\t            H[1] = (H[2] + dl + er)|0;\n\t            H[2] = (H[3] + el + ar)|0;\n\t            H[3] = (H[4] + al + br)|0;\n\t            H[4] = (H[0] + bl + cr)|0;\n\t            H[0] =  t;\n\t        },\n\n\t        _doFinalize: function () {\n\t            // Shortcuts\n\t            var data = this._data;\n\t            var dataWords = data.words;\n\n\t            var nBitsTotal = this._nDataBytes * 8;\n\t            var nBitsLeft = data.sigBytes * 8;\n\n\t            // Add padding\n\t            dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t            dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (\n\t                (((nBitsTotal << 8)  | (nBitsTotal >>> 24)) & 0x00ff00ff) |\n\t                (((nBitsTotal << 24) | (nBitsTotal >>> 8))  & 0xff00ff00)\n\t            );\n\t            data.sigBytes = (dataWords.length + 1) * 4;\n\n\t            // Hash final blocks\n\t            this._process();\n\n\t            // Shortcuts\n\t            var hash = this._hash;\n\t            var H = hash.words;\n\n\t            // Swap endian\n\t            for (var i = 0; i < 5; i++) {\n\t                // Shortcut\n\t                var H_i = H[i];\n\n\t                // Swap\n\t                H[i] = (((H_i << 8)  | (H_i >>> 24)) & 0x00ff00ff) |\n\t                       (((H_i << 24) | (H_i >>> 8))  & 0xff00ff00);\n\t            }\n\n\t            // Return final computed hash\n\t            return hash;\n\t        },\n\n\t        clone: function () {\n\t            var clone = Hasher.clone.call(this);\n\t            clone._hash = this._hash.clone();\n\n\t            return clone;\n\t        }\n\t    });\n\n\n\t    function f1(x, y, z) {\n\t        return ((x) ^ (y) ^ (z));\n\n\t    }\n\n\t    function f2(x, y, z) {\n\t        return (((x)&(y)) | ((~x)&(z)));\n\t    }\n\n\t    function f3(x, y, z) {\n\t        return (((x) | (~(y))) ^ (z));\n\t    }\n\n\t    function f4(x, y, z) {\n\t        return (((x) & (z)) | ((y)&(~(z))));\n\t    }\n\n\t    function f5(x, y, z) {\n\t        return ((x) ^ ((y) |(~(z))));\n\n\t    }\n\n\t    function rotl(x,n) {\n\t        return (x<<n) | (x>>>(32-n));\n\t    }\n\n\n\t    /**\n\t     * Shortcut function to the hasher's object interface.\n\t     *\n\t     * @param {WordArray|string} message The message to hash.\n\t     *\n\t     * @return {WordArray} The hash.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var hash = CryptoJS.RIPEMD160('message');\n\t     *     var hash = CryptoJS.RIPEMD160(wordArray);\n\t     */\n\t    C.RIPEMD160 = Hasher._createHelper(RIPEMD160);\n\n\t    /**\n\t     * Shortcut function to the HMAC's object interface.\n\t     *\n\t     * @param {WordArray|string} message The message to hash.\n\t     * @param {WordArray|string} key The secret key.\n\t     *\n\t     * @return {WordArray} The HMAC.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var hmac = CryptoJS.HmacRIPEMD160(message, key);\n\t     */\n\t    C.HmacRIPEMD160 = Hasher._createHmacHelper(RIPEMD160);\n\t}(Math));\n\n\n\treturn CryptoJS.RIPEMD160;\n\n}));", ";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var WordArray = C_lib.WordArray;\n\t    var Hasher = C_lib.Hasher;\n\t    var C_algo = C.algo;\n\n\t    // Reusable object\n\t    var W = [];\n\n\t    /**\n\t     * SHA-1 hash algorithm.\n\t     */\n\t    var SHA1 = C_algo.SHA1 = Hasher.extend({\n\t        _doReset: function () {\n\t            this._hash = new WordArray.init([\n\t                0x67452301, 0xefcdab89,\n\t                0x98badcfe, 0x10325476,\n\t                0xc3d2e1f0\n\t            ]);\n\t        },\n\n\t        _doProcessBlock: function (M, offset) {\n\t            // Shortcut\n\t            var H = this._hash.words;\n\n\t            // Working variables\n\t            var a = H[0];\n\t            var b = H[1];\n\t            var c = H[2];\n\t            var d = H[3];\n\t            var e = H[4];\n\n\t            // Computation\n\t            for (var i = 0; i < 80; i++) {\n\t                if (i < 16) {\n\t                    W[i] = M[offset + i] | 0;\n\t                } else {\n\t                    var n = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16];\n\t                    W[i] = (n << 1) | (n >>> 31);\n\t                }\n\n\t                var t = ((a << 5) | (a >>> 27)) + e + W[i];\n\t                if (i < 20) {\n\t                    t += ((b & c) | (~b & d)) + 0x5a827999;\n\t                } else if (i < 40) {\n\t                    t += (b ^ c ^ d) + 0x6ed9eba1;\n\t                } else if (i < 60) {\n\t                    t += ((b & c) | (b & d) | (c & d)) - 0x70e44324;\n\t                } else /* if (i < 80) */ {\n\t                    t += (b ^ c ^ d) - 0x359d3e2a;\n\t                }\n\n\t                e = d;\n\t                d = c;\n\t                c = (b << 30) | (b >>> 2);\n\t                b = a;\n\t                a = t;\n\t            }\n\n\t            // Intermediate hash value\n\t            H[0] = (H[0] + a) | 0;\n\t            H[1] = (H[1] + b) | 0;\n\t            H[2] = (H[2] + c) | 0;\n\t            H[3] = (H[3] + d) | 0;\n\t            H[4] = (H[4] + e) | 0;\n\t        },\n\n\t        _doFinalize: function () {\n\t            // Shortcuts\n\t            var data = this._data;\n\t            var dataWords = data.words;\n\n\t            var nBitsTotal = this._nDataBytes * 8;\n\t            var nBitsLeft = data.sigBytes * 8;\n\n\t            // Add padding\n\t            dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t            dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n\t            dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n\t            data.sigBytes = dataWords.length * 4;\n\n\t            // Hash final blocks\n\t            this._process();\n\n\t            // Return final computed hash\n\t            return this._hash;\n\t        },\n\n\t        clone: function () {\n\t            var clone = Hasher.clone.call(this);\n\t            clone._hash = this._hash.clone();\n\n\t            return clone;\n\t        }\n\t    });\n\n\t    /**\n\t     * Shortcut function to the hasher's object interface.\n\t     *\n\t     * @param {WordArray|string} message The message to hash.\n\t     *\n\t     * @return {WordArray} The hash.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var hash = CryptoJS.SHA1('message');\n\t     *     var hash = CryptoJS.SHA1(wordArray);\n\t     */\n\t    C.SHA1 = Hasher._createHelper(SHA1);\n\n\t    /**\n\t     * Shortcut function to the HMAC's object interface.\n\t     *\n\t     * @param {WordArray|string} message The message to hash.\n\t     * @param {WordArray|string} key The secret key.\n\t     *\n\t     * @return {WordArray} The HMAC.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var hmac = CryptoJS.HmacSHA1(message, key);\n\t     */\n\t    C.HmacSHA1 = Hasher._createHmacHelper(SHA1);\n\t}());\n\n\n\treturn CryptoJS.SHA1;\n\n}));", ";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha256\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha256\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var WordArray = C_lib.WordArray;\n\t    var C_algo = C.algo;\n\t    var SHA256 = C_algo.SHA256;\n\n\t    /**\n\t     * SHA-224 hash algorithm.\n\t     */\n\t    var SHA224 = C_algo.SHA224 = SHA256.extend({\n\t        _doReset: function () {\n\t            this._hash = new WordArray.init([\n\t                0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n\t                0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4\n\t            ]);\n\t        },\n\n\t        _doFinalize: function () {\n\t            var hash = SHA256._doFinalize.call(this);\n\n\t            hash.sigBytes -= 4;\n\n\t            return hash;\n\t        }\n\t    });\n\n\t    /**\n\t     * Shortcut function to the hasher's object interface.\n\t     *\n\t     * @param {WordArray|string} message The message to hash.\n\t     *\n\t     * @return {WordArray} The hash.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var hash = CryptoJS.SHA224('message');\n\t     *     var hash = CryptoJS.SHA224(wordArray);\n\t     */\n\t    C.SHA224 = SHA256._createHelper(SHA224);\n\n\t    /**\n\t     * Shortcut function to the HMAC's object interface.\n\t     *\n\t     * @param {WordArray|string} message The message to hash.\n\t     * @param {WordArray|string} key The secret key.\n\t     *\n\t     * @return {WordArray} The HMAC.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var hmac = CryptoJS.HmacSHA224(message, key);\n\t     */\n\t    C.HmacSHA224 = SHA256._createHmacHelper(SHA224);\n\t}());\n\n\n\treturn CryptoJS.SHA224;\n\n}));", ";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var WordArray = C_lib.WordArray;\n\t    var Hasher = C_lib.Hasher;\n\t    var C_algo = C.algo;\n\n\t    // Initialization and round constants tables\n\t    var H = [];\n\t    var K = [];\n\n\t    // Compute constants\n\t    (function () {\n\t        function isPrime(n) {\n\t            var sqrtN = Math.sqrt(n);\n\t            for (var factor = 2; factor <= sqrtN; factor++) {\n\t                if (!(n % factor)) {\n\t                    return false;\n\t                }\n\t            }\n\n\t            return true;\n\t        }\n\n\t        function getFractionalBits(n) {\n\t            return ((n - (n | 0)) * 0x100000000) | 0;\n\t        }\n\n\t        var n = 2;\n\t        var nPrime = 0;\n\t        while (nPrime < 64) {\n\t            if (isPrime(n)) {\n\t                if (nPrime < 8) {\n\t                    H[nPrime] = getFractionalBits(Math.pow(n, 1 / 2));\n\t                }\n\t                K[nPrime] = getFractionalBits(Math.pow(n, 1 / 3));\n\n\t                nPrime++;\n\t            }\n\n\t            n++;\n\t        }\n\t    }());\n\n\t    // Reusable object\n\t    var W = [];\n\n\t    /**\n\t     * SHA-256 hash algorithm.\n\t     */\n\t    var SHA256 = C_algo.SHA256 = Hasher.extend({\n\t        _doReset: function () {\n\t            this._hash = new WordArray.init(H.slice(0));\n\t        },\n\n\t        _doProcessBlock: function (M, offset) {\n\t            // Shortcut\n\t            var H = this._hash.words;\n\n\t            // Working variables\n\t            var a = H[0];\n\t            var b = H[1];\n\t            var c = H[2];\n\t            var d = H[3];\n\t            var e = H[4];\n\t            var f = H[5];\n\t            var g = H[6];\n\t            var h = H[7];\n\n\t            // Computation\n\t            for (var i = 0; i < 64; i++) {\n\t                if (i < 16) {\n\t                    W[i] = M[offset + i] | 0;\n\t                } else {\n\t                    var gamma0x = W[i - 15];\n\t                    var gamma0  = ((gamma0x << 25) | (gamma0x >>> 7))  ^\n\t                                  ((gamma0x << 14) | (gamma0x >>> 18)) ^\n\t                                   (gamma0x >>> 3);\n\n\t                    var gamma1x = W[i - 2];\n\t                    var gamma1  = ((gamma1x << 15) | (gamma1x >>> 17)) ^\n\t                                  ((gamma1x << 13) | (gamma1x >>> 19)) ^\n\t                                   (gamma1x >>> 10);\n\n\t                    W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16];\n\t                }\n\n\t                var ch  = (e & f) ^ (~e & g);\n\t                var maj = (a & b) ^ (a & c) ^ (b & c);\n\n\t                var sigma0 = ((a << 30) | (a >>> 2)) ^ ((a << 19) | (a >>> 13)) ^ ((a << 10) | (a >>> 22));\n\t                var sigma1 = ((e << 26) | (e >>> 6)) ^ ((e << 21) | (e >>> 11)) ^ ((e << 7)  | (e >>> 25));\n\n\t                var t1 = h + sigma1 + ch + K[i] + W[i];\n\t                var t2 = sigma0 + maj;\n\n\t                h = g;\n\t                g = f;\n\t                f = e;\n\t                e = (d + t1) | 0;\n\t                d = c;\n\t                c = b;\n\t                b = a;\n\t                a = (t1 + t2) | 0;\n\t            }\n\n\t            // Intermediate hash value\n\t            H[0] = (H[0] + a) | 0;\n\t            H[1] = (H[1] + b) | 0;\n\t            H[2] = (H[2] + c) | 0;\n\t            H[3] = (H[3] + d) | 0;\n\t            H[4] = (H[4] + e) | 0;\n\t            H[5] = (H[5] + f) | 0;\n\t            H[6] = (H[6] + g) | 0;\n\t            H[7] = (H[7] + h) | 0;\n\t        },\n\n\t        _doFinalize: function () {\n\t            // Shortcuts\n\t            var data = this._data;\n\t            var dataWords = data.words;\n\n\t            var nBitsTotal = this._nDataBytes * 8;\n\t            var nBitsLeft = data.sigBytes * 8;\n\n\t            // Add padding\n\t            dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t            dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n\t            dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n\t            data.sigBytes = dataWords.length * 4;\n\n\t            // Hash final blocks\n\t            this._process();\n\n\t            // Return final computed hash\n\t            return this._hash;\n\t        },\n\n\t        clone: function () {\n\t            var clone = Hasher.clone.call(this);\n\t            clone._hash = this._hash.clone();\n\n\t            return clone;\n\t        }\n\t    });\n\n\t    /**\n\t     * Shortcut function to the hasher's object interface.\n\t     *\n\t     * @param {WordArray|string} message The message to hash.\n\t     *\n\t     * @return {WordArray} The hash.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var hash = CryptoJS.SHA256('message');\n\t     *     var hash = CryptoJS.SHA256(wordArray);\n\t     */\n\t    C.SHA256 = Hasher._createHelper(SHA256);\n\n\t    /**\n\t     * Shortcut function to the HMAC's object interface.\n\t     *\n\t     * @param {WordArray|string} message The message to hash.\n\t     * @param {WordArray|string} key The secret key.\n\t     *\n\t     * @return {WordArray} The HMAC.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var hmac = CryptoJS.HmacSHA256(message, key);\n\t     */\n\t    C.HmacSHA256 = Hasher._createHmacHelper(SHA256);\n\t}(Math));\n\n\n\treturn CryptoJS.SHA256;\n\n}));", ";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var WordArray = C_lib.WordArray;\n\t    var Hasher = C_lib.Hasher;\n\t    var C_x64 = C.x64;\n\t    var X64Word = C_x64.Word;\n\t    var C_algo = C.algo;\n\n\t    // Constants tables\n\t    var RHO_OFFSETS = [];\n\t    var PI_INDEXES  = [];\n\t    var ROUND_CONSTANTS = [];\n\n\t    // Compute Constants\n\t    (function () {\n\t        // Compute rho offset constants\n\t        var x = 1, y = 0;\n\t        for (var t = 0; t < 24; t++) {\n\t            RHO_OFFSETS[x + 5 * y] = ((t + 1) * (t + 2) / 2) % 64;\n\n\t            var newX = y % 5;\n\t            var newY = (2 * x + 3 * y) % 5;\n\t            x = newX;\n\t            y = newY;\n\t        }\n\n\t        // Compute pi index constants\n\t        for (var x = 0; x < 5; x++) {\n\t            for (var y = 0; y < 5; y++) {\n\t                PI_INDEXES[x + 5 * y] = y + ((2 * x + 3 * y) % 5) * 5;\n\t            }\n\t        }\n\n\t        // Compute round constants\n\t        var LFSR = 0x01;\n\t        for (var i = 0; i < 24; i++) {\n\t            var roundConstantMsw = 0;\n\t            var roundConstantLsw = 0;\n\n\t            for (var j = 0; j < 7; j++) {\n\t                if (LFSR & 0x01) {\n\t                    var bitPosition = (1 << j) - 1;\n\t                    if (bitPosition < 32) {\n\t                        roundConstantLsw ^= 1 << bitPosition;\n\t                    } else /* if (bitPosition >= 32) */ {\n\t                        roundConstantMsw ^= 1 << (bitPosition - 32);\n\t                    }\n\t                }\n\n\t                // Compute next LFSR\n\t                if (LFSR & 0x80) {\n\t                    // Primitive polynomial over GF(2): x^8 + x^6 + x^5 + x^4 + 1\n\t                    LFSR = (LFSR << 1) ^ 0x71;\n\t                } else {\n\t                    LFSR <<= 1;\n\t                }\n\t            }\n\n\t            ROUND_CONSTANTS[i] = X64Word.create(roundConstantMsw, roundConstantLsw);\n\t        }\n\t    }());\n\n\t    // Reusable objects for temporary values\n\t    var T = [];\n\t    (function () {\n\t        for (var i = 0; i < 25; i++) {\n\t            T[i] = X64Word.create();\n\t        }\n\t    }());\n\n\t    /**\n\t     * SHA-3 hash algorithm.\n\t     */\n\t    var SHA3 = C_algo.SHA3 = Hasher.extend({\n\t        /**\n\t         * Configuration options.\n\t         *\n\t         * @property {number} outputLength\n\t         *   The desired number of bits in the output hash.\n\t         *   Only values permitted are: 224, 256, 384, 512.\n\t         *   Default: 512\n\t         */\n\t        cfg: Hasher.cfg.extend({\n\t            outputLength: 512\n\t        }),\n\n\t        _doReset: function () {\n\t            var state = this._state = []\n\t            for (var i = 0; i < 25; i++) {\n\t                state[i] = new X64Word.init();\n\t            }\n\n\t            this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32;\n\t        },\n\n\t        _doProcessBlock: function (M, offset) {\n\t            // Shortcuts\n\t            var state = this._state;\n\t            var nBlockSizeLanes = this.blockSize / 2;\n\n\t            // Absorb\n\t            for (var i = 0; i < nBlockSizeLanes; i++) {\n\t                // Shortcuts\n\t                var M2i  = M[offset + 2 * i];\n\t                var M2i1 = M[offset + 2 * i + 1];\n\n\t                // Swap endian\n\t                M2i = (\n\t                    (((M2i << 8)  | (M2i >>> 24)) & 0x00ff00ff) |\n\t                    (((M2i << 24) | (M2i >>> 8))  & 0xff00ff00)\n\t                );\n\t                M2i1 = (\n\t                    (((M2i1 << 8)  | (M2i1 >>> 24)) & 0x00ff00ff) |\n\t                    (((M2i1 << 24) | (M2i1 >>> 8))  & 0xff00ff00)\n\t                );\n\n\t                // Absorb message into state\n\t                var lane = state[i];\n\t                lane.high ^= M2i1;\n\t                lane.low  ^= M2i;\n\t            }\n\n\t            // Rounds\n\t            for (var round = 0; round < 24; round++) {\n\t                // Theta\n\t                for (var x = 0; x < 5; x++) {\n\t                    // Mix column lanes\n\t                    var tMsw = 0, tLsw = 0;\n\t                    for (var y = 0; y < 5; y++) {\n\t                        var lane = state[x + 5 * y];\n\t                        tMsw ^= lane.high;\n\t                        tLsw ^= lane.low;\n\t                    }\n\n\t                    // Temporary values\n\t                    var Tx = T[x];\n\t                    Tx.high = tMsw;\n\t                    Tx.low  = tLsw;\n\t                }\n\t                for (var x = 0; x < 5; x++) {\n\t                    // Shortcuts\n\t                    var Tx4 = T[(x + 4) % 5];\n\t                    var Tx1 = T[(x + 1) % 5];\n\t                    var Tx1Msw = Tx1.high;\n\t                    var Tx1Lsw = Tx1.low;\n\n\t                    // Mix surrounding columns\n\t                    var tMsw = Tx4.high ^ ((Tx1Msw << 1) | (Tx1Lsw >>> 31));\n\t                    var tLsw = Tx4.low  ^ ((Tx1Lsw << 1) | (Tx1Msw >>> 31));\n\t                    for (var y = 0; y < 5; y++) {\n\t                        var lane = state[x + 5 * y];\n\t                        lane.high ^= tMsw;\n\t                        lane.low  ^= tLsw;\n\t                    }\n\t                }\n\n\t                // Rho Pi\n\t                for (var laneIndex = 1; laneIndex < 25; laneIndex++) {\n\t                    var tMsw;\n\t                    var tLsw;\n\n\t                    // Shortcuts\n\t                    var lane = state[laneIndex];\n\t                    var laneMsw = lane.high;\n\t                    var laneLsw = lane.low;\n\t                    var rhoOffset = RHO_OFFSETS[laneIndex];\n\n\t                    // Rotate lanes\n\t                    if (rhoOffset < 32) {\n\t                        tMsw = (laneMsw << rhoOffset) | (laneLsw >>> (32 - rhoOffset));\n\t                        tLsw = (laneLsw << rhoOffset) | (laneMsw >>> (32 - rhoOffset));\n\t                    } else /* if (rhoOffset >= 32) */ {\n\t                        tMsw = (laneLsw << (rhoOffset - 32)) | (laneMsw >>> (64 - rhoOffset));\n\t                        tLsw = (laneMsw << (rhoOffset - 32)) | (laneLsw >>> (64 - rhoOffset));\n\t                    }\n\n\t                    // Transpose lanes\n\t                    var TPiLane = T[PI_INDEXES[laneIndex]];\n\t                    TPiLane.high = tMsw;\n\t                    TPiLane.low  = tLsw;\n\t                }\n\n\t                // Rho pi at x = y = 0\n\t                var T0 = T[0];\n\t                var state0 = state[0];\n\t                T0.high = state0.high;\n\t                T0.low  = state0.low;\n\n\t                // Chi\n\t                for (var x = 0; x < 5; x++) {\n\t                    for (var y = 0; y < 5; y++) {\n\t                        // Shortcuts\n\t                        var laneIndex = x + 5 * y;\n\t                        var lane = state[laneIndex];\n\t                        var TLane = T[laneIndex];\n\t                        var Tx1Lane = T[((x + 1) % 5) + 5 * y];\n\t                        var Tx2Lane = T[((x + 2) % 5) + 5 * y];\n\n\t                        // Mix rows\n\t                        lane.high = TLane.high ^ (~Tx1Lane.high & Tx2Lane.high);\n\t                        lane.low  = TLane.low  ^ (~Tx1Lane.low  & Tx2Lane.low);\n\t                    }\n\t                }\n\n\t                // Iota\n\t                var lane = state[0];\n\t                var roundConstant = ROUND_CONSTANTS[round];\n\t                lane.high ^= roundConstant.high;\n\t                lane.low  ^= roundConstant.low;\n\t            }\n\t        },\n\n\t        _doFinalize: function () {\n\t            // Shortcuts\n\t            var data = this._data;\n\t            var dataWords = data.words;\n\t            var nBitsTotal = this._nDataBytes * 8;\n\t            var nBitsLeft = data.sigBytes * 8;\n\t            var blockSizeBits = this.blockSize * 32;\n\n\t            // Add padding\n\t            dataWords[nBitsLeft >>> 5] |= 0x1 << (24 - nBitsLeft % 32);\n\t            dataWords[((Math.ceil((nBitsLeft + 1) / blockSizeBits) * blockSizeBits) >>> 5) - 1] |= 0x80;\n\t            data.sigBytes = dataWords.length * 4;\n\n\t            // Hash final blocks\n\t            this._process();\n\n\t            // Shortcuts\n\t            var state = this._state;\n\t            var outputLengthBytes = this.cfg.outputLength / 8;\n\t            var outputLengthLanes = outputLengthBytes / 8;\n\n\t            // Squeeze\n\t            var hashWords = [];\n\t            for (var i = 0; i < outputLengthLanes; i++) {\n\t                // Shortcuts\n\t                var lane = state[i];\n\t                var laneMsw = lane.high;\n\t                var laneLsw = lane.low;\n\n\t                // Swap endian\n\t                laneMsw = (\n\t                    (((laneMsw << 8)  | (laneMsw >>> 24)) & 0x00ff00ff) |\n\t                    (((laneMsw << 24) | (laneMsw >>> 8))  & 0xff00ff00)\n\t                );\n\t                laneLsw = (\n\t                    (((laneLsw << 8)  | (laneLsw >>> 24)) & 0x00ff00ff) |\n\t                    (((laneLsw << 24) | (laneLsw >>> 8))  & 0xff00ff00)\n\t                );\n\n\t                // Squeeze state to retrieve hash\n\t                hashWords.push(laneLsw);\n\t                hashWords.push(laneMsw);\n\t            }\n\n\t            // Return final computed hash\n\t            return new WordArray.init(hashWords, outputLengthBytes);\n\t        },\n\n\t        clone: function () {\n\t            var clone = Hasher.clone.call(this);\n\n\t            var state = clone._state = this._state.slice(0);\n\t            for (var i = 0; i < 25; i++) {\n\t                state[i] = state[i].clone();\n\t            }\n\n\t            return clone;\n\t        }\n\t    });\n\n\t    /**\n\t     * Shortcut function to the hasher's object interface.\n\t     *\n\t     * @param {WordArray|string} message The message to hash.\n\t     *\n\t     * @return {WordArray} The hash.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var hash = CryptoJS.SHA3('message');\n\t     *     var hash = CryptoJS.SHA3(wordArray);\n\t     */\n\t    C.SHA3 = Hasher._createHelper(SHA3);\n\n\t    /**\n\t     * Shortcut function to the HMAC's object interface.\n\t     *\n\t     * @param {WordArray|string} message The message to hash.\n\t     * @param {WordArray|string} key The secret key.\n\t     *\n\t     * @return {WordArray} The HMAC.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var hmac = CryptoJS.HmacSHA3(message, key);\n\t     */\n\t    C.HmacSHA3 = Hasher._createHmacHelper(SHA3);\n\t}(Math));\n\n\n\treturn CryptoJS.SHA3;\n\n}));", ";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"), require(\"./sha512\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\", \"./sha512\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_x64 = C.x64;\n\t    var X64Word = C_x64.Word;\n\t    var X64WordArray = C_x64.WordArray;\n\t    var C_algo = C.algo;\n\t    var SHA512 = C_algo.SHA512;\n\n\t    /**\n\t     * SHA-384 hash algorithm.\n\t     */\n\t    var SHA384 = C_algo.SHA384 = SHA512.extend({\n\t        _doReset: function () {\n\t            this._hash = new X64WordArray.init([\n\t                new X64Word.init(0xcbbb9d5d, 0xc1059ed8), new X64Word.init(0x629a292a, 0x367cd507),\n\t                new X64Word.init(0x9159015a, 0x3070dd17), new X64Word.init(0x152fecd8, 0xf70e5939),\n\t                new X64Word.init(0x67332667, 0xffc00b31), new X64Word.init(0x8eb44a87, 0x68581511),\n\t                new X64Word.init(0xdb0c2e0d, 0x64f98fa7), new X64Word.init(0x47b5481d, 0xbefa4fa4)\n\t            ]);\n\t        },\n\n\t        _doFinalize: function () {\n\t            var hash = SHA512._doFinalize.call(this);\n\n\t            hash.sigBytes -= 16;\n\n\t            return hash;\n\t        }\n\t    });\n\n\t    /**\n\t     * Shortcut function to the hasher's object interface.\n\t     *\n\t     * @param {WordArray|string} message The message to hash.\n\t     *\n\t     * @return {WordArray} The hash.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var hash = CryptoJS.SHA384('message');\n\t     *     var hash = CryptoJS.SHA384(wordArray);\n\t     */\n\t    C.SHA384 = SHA512._createHelper(SHA384);\n\n\t    /**\n\t     * Shortcut function to the HMAC's object interface.\n\t     *\n\t     * @param {WordArray|string} message The message to hash.\n\t     * @param {WordArray|string} key The secret key.\n\t     *\n\t     * @return {WordArray} The HMAC.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var hmac = CryptoJS.HmacSHA384(message, key);\n\t     */\n\t    C.HmacSHA384 = SHA512._createHmacHelper(SHA384);\n\t}());\n\n\n\treturn CryptoJS.SHA384;\n\n}));", ";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var Hasher = C_lib.Hasher;\n\t    var C_x64 = C.x64;\n\t    var X64Word = C_x64.Word;\n\t    var X64WordArray = C_x64.WordArray;\n\t    var C_algo = C.algo;\n\n\t    function X64Word_create() {\n\t        return X64Word.create.apply(X64Word, arguments);\n\t    }\n\n\t    // Constants\n\t    var K = [\n\t        X64Word_create(0x428a2f98, 0xd728ae22), X64Word_create(0x71374491, 0x23ef65cd),\n\t        X64Word_create(0xb5c0fbcf, 0xec4d3b2f), X64Word_create(0xe9b5dba5, 0x8189dbbc),\n\t        X64Word_create(0x3956c25b, 0xf348b538), X64Word_create(0x59f111f1, 0xb605d019),\n\t        X64Word_create(0x923f82a4, 0xaf194f9b), X64Word_create(0xab1c5ed5, 0xda6d8118),\n\t        X64Word_create(0xd807aa98, 0xa3030242), X64Word_create(0x12835b01, 0x45706fbe),\n\t        X64Word_create(0x243185be, 0x4ee4b28c), X64Word_create(0x550c7dc3, 0xd5ffb4e2),\n\t        X64Word_create(0x72be5d74, 0xf27b896f), X64Word_create(0x80deb1fe, 0x3b1696b1),\n\t        X64Word_create(0x9bdc06a7, 0x25c71235), X64Word_create(0xc19bf174, 0xcf692694),\n\t        X64Word_create(0xe49b69c1, 0x9ef14ad2), X64Word_create(0xefbe4786, 0x384f25e3),\n\t        X64Word_create(0x0fc19dc6, 0x8b8cd5b5), X64Word_create(0x240ca1cc, 0x77ac9c65),\n\t        X64Word_create(0x2de92c6f, 0x592b0275), X64Word_create(0x4a7484aa, 0x6ea6e483),\n\t        X64Word_create(0x5cb0a9dc, 0xbd41fbd4), X64Word_create(0x76f988da, 0x831153b5),\n\t        X64Word_create(0x983e5152, 0xee66dfab), X64Word_create(0xa831c66d, 0x2db43210),\n\t        X64Word_create(0xb00327c8, 0x98fb213f), X64Word_create(0xbf597fc7, 0xbeef0ee4),\n\t        X64Word_create(0xc6e00bf3, 0x3da88fc2), X64Word_create(0xd5a79147, 0x930aa725),\n\t        X64Word_create(0x06ca6351, 0xe003826f), X64Word_create(0x14292967, 0x0a0e6e70),\n\t        X64Word_create(0x27b70a85, 0x46d22ffc), X64Word_create(0x2e1b2138, 0x5c26c926),\n\t        X64Word_create(0x4d2c6dfc, 0x5ac42aed), X64Word_create(0x53380d13, 0x9d95b3df),\n\t        X64Word_create(0x650a7354, 0x8baf63de), X64Word_create(0x766a0abb, 0x3c77b2a8),\n\t        X64Word_create(0x81c2c92e, 0x47edaee6), X64Word_create(0x92722c85, 0x1482353b),\n\t        X64Word_create(0xa2bfe8a1, 0x4cf10364), X64Word_create(0xa81a664b, 0xbc423001),\n\t        X64Word_create(0xc24b8b70, 0xd0f89791), X64Word_create(0xc76c51a3, 0x0654be30),\n\t        X64Word_create(0xd192e819, 0xd6ef5218), X64Word_create(0xd6990624, 0x5565a910),\n\t        X64Word_create(0xf40e3585, 0x5771202a), X64Word_create(0x106aa070, 0x32bbd1b8),\n\t        X64Word_create(0x19a4c116, 0xb8d2d0c8), X64Word_create(0x1e376c08, 0x5141ab53),\n\t        X64Word_create(0x2748774c, 0xdf8eeb99), X64Word_create(0x34b0bcb5, 0xe19b48a8),\n\t        X64Word_create(0x391c0cb3, 0xc5c95a63), X64Word_create(0x4ed8aa4a, 0xe3418acb),\n\t        X64Word_create(0x5b9cca4f, 0x7763e373), X64Word_create(0x682e6ff3, 0xd6b2b8a3),\n\t        X64Word_create(0x748f82ee, 0x5defb2fc), X64Word_create(0x78a5636f, 0x43172f60),\n\t        X64Word_create(0x84c87814, 0xa1f0ab72), X64Word_create(0x8cc70208, 0x1a6439ec),\n\t        X64Word_create(0x90befffa, 0x23631e28), X64Word_create(0xa4506ceb, 0xde82bde9),\n\t        X64Word_create(0xbef9a3f7, 0xb2c67915), X64Word_create(0xc67178f2, 0xe372532b),\n\t        X64Word_create(0xca273ece, 0xea26619c), X64Word_create(0xd186b8c7, 0x21c0c207),\n\t        X64Word_create(0xeada7dd6, 0xcde0eb1e), X64Word_create(0xf57d4f7f, 0xee6ed178),\n\t        X64Word_create(0x06f067aa, 0x72176fba), X64Word_create(0x0a637dc5, 0xa2c898a6),\n\t        X64Word_create(0x113f9804, 0xbef90dae), X64Word_create(0x1b710b35, 0x131c471b),\n\t        X64Word_create(0x28db77f5, 0x23047d84), X64Word_create(0x32caab7b, 0x40c72493),\n\t        X64Word_create(0x3c9ebe0a, 0x15c9bebc), X64Word_create(0x431d67c4, 0x9c100d4c),\n\t        X64Word_create(0x4cc5d4be, 0xcb3e42b6), X64Word_create(0x597f299c, 0xfc657e2a),\n\t        X64Word_create(0x5fcb6fab, 0x3ad6faec), X64Word_create(0x6c44198c, 0x4a475817)\n\t    ];\n\n\t    // Reusable objects\n\t    var W = [];\n\t    (function () {\n\t        for (var i = 0; i < 80; i++) {\n\t            W[i] = X64Word_create();\n\t        }\n\t    }());\n\n\t    /**\n\t     * SHA-512 hash algorithm.\n\t     */\n\t    var SHA512 = C_algo.SHA512 = Hasher.extend({\n\t        _doReset: function () {\n\t            this._hash = new X64WordArray.init([\n\t                new X64Word.init(0x6a09e667, 0xf3bcc908), new X64Word.init(0xbb67ae85, 0x84caa73b),\n\t                new X64Word.init(0x3c6ef372, 0xfe94f82b), new X64Word.init(0xa54ff53a, 0x5f1d36f1),\n\t                new X64Word.init(0x510e527f, 0xade682d1), new X64Word.init(0x9b05688c, 0x2b3e6c1f),\n\t                new X64Word.init(0x1f83d9ab, 0xfb41bd6b), new X64Word.init(0x5be0cd19, 0x137e2179)\n\t            ]);\n\t        },\n\n\t        _doProcessBlock: function (M, offset) {\n\t            // Shortcuts\n\t            var H = this._hash.words;\n\n\t            var H0 = H[0];\n\t            var H1 = H[1];\n\t            var H2 = H[2];\n\t            var H3 = H[3];\n\t            var H4 = H[4];\n\t            var H5 = H[5];\n\t            var H6 = H[6];\n\t            var H7 = H[7];\n\n\t            var H0h = H0.high;\n\t            var H0l = H0.low;\n\t            var H1h = H1.high;\n\t            var H1l = H1.low;\n\t            var H2h = H2.high;\n\t            var H2l = H2.low;\n\t            var H3h = H3.high;\n\t            var H3l = H3.low;\n\t            var H4h = H4.high;\n\t            var H4l = H4.low;\n\t            var H5h = H5.high;\n\t            var H5l = H5.low;\n\t            var H6h = H6.high;\n\t            var H6l = H6.low;\n\t            var H7h = H7.high;\n\t            var H7l = H7.low;\n\n\t            // Working variables\n\t            var ah = H0h;\n\t            var al = H0l;\n\t            var bh = H1h;\n\t            var bl = H1l;\n\t            var ch = H2h;\n\t            var cl = H2l;\n\t            var dh = H3h;\n\t            var dl = H3l;\n\t            var eh = H4h;\n\t            var el = H4l;\n\t            var fh = H5h;\n\t            var fl = H5l;\n\t            var gh = H6h;\n\t            var gl = H6l;\n\t            var hh = H7h;\n\t            var hl = H7l;\n\n\t            // Rounds\n\t            for (var i = 0; i < 80; i++) {\n\t                var Wil;\n\t                var Wih;\n\n\t                // Shortcut\n\t                var Wi = W[i];\n\n\t                // Extend message\n\t                if (i < 16) {\n\t                    Wih = Wi.high = M[offset + i * 2]     | 0;\n\t                    Wil = Wi.low  = M[offset + i * 2 + 1] | 0;\n\t                } else {\n\t                    // Gamma0\n\t                    var gamma0x  = W[i - 15];\n\t                    var gamma0xh = gamma0x.high;\n\t                    var gamma0xl = gamma0x.low;\n\t                    var gamma0h  = ((gamma0xh >>> 1) | (gamma0xl << 31)) ^ ((gamma0xh >>> 8) | (gamma0xl << 24)) ^ (gamma0xh >>> 7);\n\t                    var gamma0l  = ((gamma0xl >>> 1) | (gamma0xh << 31)) ^ ((gamma0xl >>> 8) | (gamma0xh << 24)) ^ ((gamma0xl >>> 7) | (gamma0xh << 25));\n\n\t                    // Gamma1\n\t                    var gamma1x  = W[i - 2];\n\t                    var gamma1xh = gamma1x.high;\n\t                    var gamma1xl = gamma1x.low;\n\t                    var gamma1h  = ((gamma1xh >>> 19) | (gamma1xl << 13)) ^ ((gamma1xh << 3) | (gamma1xl >>> 29)) ^ (gamma1xh >>> 6);\n\t                    var gamma1l  = ((gamma1xl >>> 19) | (gamma1xh << 13)) ^ ((gamma1xl << 3) | (gamma1xh >>> 29)) ^ ((gamma1xl >>> 6) | (gamma1xh << 26));\n\n\t                    // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]\n\t                    var Wi7  = W[i - 7];\n\t                    var Wi7h = Wi7.high;\n\t                    var Wi7l = Wi7.low;\n\n\t                    var Wi16  = W[i - 16];\n\t                    var Wi16h = Wi16.high;\n\t                    var Wi16l = Wi16.low;\n\n\t                    Wil = gamma0l + Wi7l;\n\t                    Wih = gamma0h + Wi7h + ((Wil >>> 0) < (gamma0l >>> 0) ? 1 : 0);\n\t                    Wil = Wil + gamma1l;\n\t                    Wih = Wih + gamma1h + ((Wil >>> 0) < (gamma1l >>> 0) ? 1 : 0);\n\t                    Wil = Wil + Wi16l;\n\t                    Wih = Wih + Wi16h + ((Wil >>> 0) < (Wi16l >>> 0) ? 1 : 0);\n\n\t                    Wi.high = Wih;\n\t                    Wi.low  = Wil;\n\t                }\n\n\t                var chh  = (eh & fh) ^ (~eh & gh);\n\t                var chl  = (el & fl) ^ (~el & gl);\n\t                var majh = (ah & bh) ^ (ah & ch) ^ (bh & ch);\n\t                var majl = (al & bl) ^ (al & cl) ^ (bl & cl);\n\n\t                var sigma0h = ((ah >>> 28) | (al << 4))  ^ ((ah << 30)  | (al >>> 2)) ^ ((ah << 25) | (al >>> 7));\n\t                var sigma0l = ((al >>> 28) | (ah << 4))  ^ ((al << 30)  | (ah >>> 2)) ^ ((al << 25) | (ah >>> 7));\n\t                var sigma1h = ((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9));\n\t                var sigma1l = ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9));\n\n\t                // t1 = h + sigma1 + ch + K[i] + W[i]\n\t                var Ki  = K[i];\n\t                var Kih = Ki.high;\n\t                var Kil = Ki.low;\n\n\t                var t1l = hl + sigma1l;\n\t                var t1h = hh + sigma1h + ((t1l >>> 0) < (hl >>> 0) ? 1 : 0);\n\t                var t1l = t1l + chl;\n\t                var t1h = t1h + chh + ((t1l >>> 0) < (chl >>> 0) ? 1 : 0);\n\t                var t1l = t1l + Kil;\n\t                var t1h = t1h + Kih + ((t1l >>> 0) < (Kil >>> 0) ? 1 : 0);\n\t                var t1l = t1l + Wil;\n\t                var t1h = t1h + Wih + ((t1l >>> 0) < (Wil >>> 0) ? 1 : 0);\n\n\t                // t2 = sigma0 + maj\n\t                var t2l = sigma0l + majl;\n\t                var t2h = sigma0h + majh + ((t2l >>> 0) < (sigma0l >>> 0) ? 1 : 0);\n\n\t                // Update working variables\n\t                hh = gh;\n\t                hl = gl;\n\t                gh = fh;\n\t                gl = fl;\n\t                fh = eh;\n\t                fl = el;\n\t                el = (dl + t1l) | 0;\n\t                eh = (dh + t1h + ((el >>> 0) < (dl >>> 0) ? 1 : 0)) | 0;\n\t                dh = ch;\n\t                dl = cl;\n\t                ch = bh;\n\t                cl = bl;\n\t                bh = ah;\n\t                bl = al;\n\t                al = (t1l + t2l) | 0;\n\t                ah = (t1h + t2h + ((al >>> 0) < (t1l >>> 0) ? 1 : 0)) | 0;\n\t            }\n\n\t            // Intermediate hash value\n\t            H0l = H0.low  = (H0l + al);\n\t            H0.high = (H0h + ah + ((H0l >>> 0) < (al >>> 0) ? 1 : 0));\n\t            H1l = H1.low  = (H1l + bl);\n\t            H1.high = (H1h + bh + ((H1l >>> 0) < (bl >>> 0) ? 1 : 0));\n\t            H2l = H2.low  = (H2l + cl);\n\t            H2.high = (H2h + ch + ((H2l >>> 0) < (cl >>> 0) ? 1 : 0));\n\t            H3l = H3.low  = (H3l + dl);\n\t            H3.high = (H3h + dh + ((H3l >>> 0) < (dl >>> 0) ? 1 : 0));\n\t            H4l = H4.low  = (H4l + el);\n\t            H4.high = (H4h + eh + ((H4l >>> 0) < (el >>> 0) ? 1 : 0));\n\t            H5l = H5.low  = (H5l + fl);\n\t            H5.high = (H5h + fh + ((H5l >>> 0) < (fl >>> 0) ? 1 : 0));\n\t            H6l = H6.low  = (H6l + gl);\n\t            H6.high = (H6h + gh + ((H6l >>> 0) < (gl >>> 0) ? 1 : 0));\n\t            H7l = H7.low  = (H7l + hl);\n\t            H7.high = (H7h + hh + ((H7l >>> 0) < (hl >>> 0) ? 1 : 0));\n\t        },\n\n\t        _doFinalize: function () {\n\t            // Shortcuts\n\t            var data = this._data;\n\t            var dataWords = data.words;\n\n\t            var nBitsTotal = this._nDataBytes * 8;\n\t            var nBitsLeft = data.sigBytes * 8;\n\n\t            // Add padding\n\t            dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t            dataWords[(((nBitsLeft + 128) >>> 10) << 5) + 30] = Math.floor(nBitsTotal / 0x100000000);\n\t            dataWords[(((nBitsLeft + 128) >>> 10) << 5) + 31] = nBitsTotal;\n\t            data.sigBytes = dataWords.length * 4;\n\n\t            // Hash final blocks\n\t            this._process();\n\n\t            // Convert hash to 32-bit word array before returning\n\t            var hash = this._hash.toX32();\n\n\t            // Return final computed hash\n\t            return hash;\n\t        },\n\n\t        clone: function () {\n\t            var clone = Hasher.clone.call(this);\n\t            clone._hash = this._hash.clone();\n\n\t            return clone;\n\t        },\n\n\t        blockSize: 1024/32\n\t    });\n\n\t    /**\n\t     * Shortcut function to the hasher's object interface.\n\t     *\n\t     * @param {WordArray|string} message The message to hash.\n\t     *\n\t     * @return {WordArray} The hash.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var hash = CryptoJS.SHA512('message');\n\t     *     var hash = CryptoJS.SHA512(wordArray);\n\t     */\n\t    C.SHA512 = Hasher._createHelper(SHA512);\n\n\t    /**\n\t     * Shortcut function to the HMAC's object interface.\n\t     *\n\t     * @param {WordArray|string} message The message to hash.\n\t     * @param {WordArray|string} key The secret key.\n\t     *\n\t     * @return {WordArray} The HMAC.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var hmac = CryptoJS.HmacSHA512(message, key);\n\t     */\n\t    C.HmacSHA512 = Hasher._createHmacHelper(SHA512);\n\t}());\n\n\n\treturn CryptoJS.SHA512;\n\n}));", ";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var WordArray = C_lib.WordArray;\n\t    var BlockCipher = C_lib.BlockCipher;\n\t    var C_algo = C.algo;\n\n\t    // Permuted Choice 1 constants\n\t    var PC1 = [\n\t        57, 49, 41, 33, 25, 17, 9,  1,\n\t        58, 50, 42, 34, 26, 18, 10, 2,\n\t        59, 51, 43, 35, 27, 19, 11, 3,\n\t        60, 52, 44, 36, 63, 55, 47, 39,\n\t        31, 23, 15, 7,  62, 54, 46, 38,\n\t        30, 22, 14, 6,  61, 53, 45, 37,\n\t        29, 21, 13, 5,  28, 20, 12, 4\n\t    ];\n\n\t    // Permuted Choice 2 constants\n\t    var PC2 = [\n\t        14, 17, 11, 24, 1,  5,\n\t        3,  28, 15, 6,  21, 10,\n\t        23, 19, 12, 4,  26, 8,\n\t        16, 7,  27, 20, 13, 2,\n\t        41, 52, 31, 37, 47, 55,\n\t        30, 40, 51, 45, 33, 48,\n\t        44, 49, 39, 56, 34, 53,\n\t        46, 42, 50, 36, 29, 32\n\t    ];\n\n\t    // Cumulative bit shift constants\n\t    var BIT_SHIFTS = [1,  2,  4,  6,  8,  10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28];\n\n\t    // SBOXes and round permutation constants\n\t    var SBOX_P = [\n\t        {\n\t            0x0: 0x808200,\n\t            0x10000000: 0x8000,\n\t            0x20000000: 0x808002,\n\t            0x30000000: 0x2,\n\t            0x40000000: 0x200,\n\t            0x50000000: 0x808202,\n\t            0x60000000: 0x800202,\n\t            0x70000000: 0x800000,\n\t            0x80000000: 0x202,\n\t            0x90000000: 0x800200,\n\t            0xa0000000: 0x8200,\n\t            0xb0000000: 0x808000,\n\t            0xc0000000: 0x8002,\n\t            0xd0000000: 0x800002,\n\t            0xe0000000: 0x0,\n\t            0xf0000000: 0x8202,\n\t            0x8000000: 0x0,\n\t            0x18000000: 0x808202,\n\t            0x28000000: 0x8202,\n\t            0x38000000: 0x8000,\n\t            0x48000000: 0x808200,\n\t            0x58000000: 0x200,\n\t            0x68000000: 0x808002,\n\t            0x78000000: 0x2,\n\t            0x88000000: 0x800200,\n\t            0x98000000: 0x8200,\n\t            0xa8000000: 0x808000,\n\t            0xb8000000: 0x800202,\n\t            0xc8000000: 0x800002,\n\t            0xd8000000: 0x8002,\n\t            0xe8000000: 0x202,\n\t            0xf8000000: 0x800000,\n\t            0x1: 0x8000,\n\t            0x10000001: 0x2,\n\t            0x20000001: 0x808200,\n\t            0x30000001: 0x800000,\n\t            0x40000001: 0x808002,\n\t            0x50000001: 0x8200,\n\t            0x60000001: 0x200,\n\t            0x70000001: 0x800202,\n\t            0x80000001: 0x808202,\n\t            0x90000001: 0x808000,\n\t            0xa0000001: 0x800002,\n\t            0xb0000001: 0x8202,\n\t            0xc0000001: 0x202,\n\t            0xd0000001: 0x800200,\n\t            0xe0000001: 0x8002,\n\t            0xf0000001: 0x0,\n\t            0x8000001: 0x808202,\n\t            0x18000001: 0x808000,\n\t            0x28000001: 0x800000,\n\t            0x38000001: 0x200,\n\t            0x48000001: 0x8000,\n\t            0x58000001: 0x800002,\n\t            0x68000001: 0x2,\n\t            0x78000001: 0x8202,\n\t            0x88000001: 0x8002,\n\t            0x98000001: 0x800202,\n\t            0xa8000001: 0x202,\n\t            0xb8000001: 0x808200,\n\t            0xc8000001: 0x800200,\n\t            0xd8000001: 0x0,\n\t            0xe8000001: 0x8200,\n\t            0xf8000001: 0x808002\n\t        },\n\t        {\n\t            0x0: 0x40084010,\n\t            0x1000000: 0x4000,\n\t            0x2000000: 0x80000,\n\t            0x3000000: 0x40080010,\n\t            0x4000000: 0x40000010,\n\t            0x5000000: 0x40084000,\n\t            0x6000000: 0x40004000,\n\t            0x7000000: 0x10,\n\t            0x8000000: 0x84000,\n\t            0x9000000: 0x40004010,\n\t            0xa000000: 0x40000000,\n\t            0xb000000: 0x84010,\n\t            0xc000000: 0x80010,\n\t            0xd000000: 0x0,\n\t            0xe000000: 0x4010,\n\t            0xf000000: 0x40080000,\n\t            0x800000: 0x40004000,\n\t            0x1800000: 0x84010,\n\t            0x2800000: 0x10,\n\t            0x3800000: 0x40004010,\n\t            0x4800000: 0x40084010,\n\t            0x5800000: 0x40000000,\n\t            0x6800000: 0x80000,\n\t            0x7800000: 0x40080010,\n\t            0x8800000: 0x80010,\n\t            0x9800000: 0x0,\n\t            0xa800000: 0x4000,\n\t            0xb800000: 0x40080000,\n\t            0xc800000: 0x40000010,\n\t            0xd800000: 0x84000,\n\t            0xe800000: 0x40084000,\n\t            0xf800000: 0x4010,\n\t            0x10000000: 0x0,\n\t            0x11000000: 0x40080010,\n\t            0x12000000: 0x40004010,\n\t            0x13000000: 0x40084000,\n\t            0x14000000: 0x40080000,\n\t            0x15000000: 0x10,\n\t            0x16000000: 0x84010,\n\t            0x17000000: 0x4000,\n\t            0x18000000: 0x4010,\n\t            0x19000000: 0x80000,\n\t            0x1a000000: 0x80010,\n\t            0x1b000000: 0x40000010,\n\t            0x1c000000: 0x84000,\n\t            0x1d000000: 0x40004000,\n\t            0x1e000000: 0x40000000,\n\t            0x1f000000: 0x40084010,\n\t            0x10800000: 0x84010,\n\t            0x11800000: 0x80000,\n\t            0x12800000: 0x40080000,\n\t            0x13800000: 0x4000,\n\t            0x14800000: 0x40004000,\n\t            0x15800000: 0x40084010,\n\t            0x16800000: 0x10,\n\t            0x17800000: 0x40000000,\n\t            0x18800000: 0x40084000,\n\t            0x19800000: 0x40000010,\n\t            0x1a800000: 0x40004010,\n\t            0x1b800000: 0x80010,\n\t            0x1c800000: 0x0,\n\t            0x1d800000: 0x4010,\n\t            0x1e800000: 0x40080010,\n\t            0x1f800000: 0x84000\n\t        },\n\t        {\n\t            0x0: 0x104,\n\t            0x100000: 0x0,\n\t            0x200000: 0x4000100,\n\t            0x300000: 0x10104,\n\t            0x400000: 0x10004,\n\t            0x500000: 0x4000004,\n\t            0x600000: 0x4010104,\n\t            0x700000: 0x4010000,\n\t            0x800000: 0x4000000,\n\t            0x900000: 0x4010100,\n\t            0xa00000: 0x10100,\n\t            0xb00000: 0x4010004,\n\t            0xc00000: 0x4000104,\n\t            0xd00000: 0x10000,\n\t            0xe00000: 0x4,\n\t            0xf00000: 0x100,\n\t            0x80000: 0x4010100,\n\t            0x180000: 0x4010004,\n\t            0x280000: 0x0,\n\t            0x380000: 0x4000100,\n\t            0x480000: 0x4000004,\n\t            0x580000: 0x10000,\n\t            0x680000: 0x10004,\n\t            0x780000: 0x104,\n\t            0x880000: 0x4,\n\t            0x980000: 0x100,\n\t            0xa80000: 0x4010000,\n\t            0xb80000: 0x10104,\n\t            0xc80000: 0x10100,\n\t            0xd80000: 0x4000104,\n\t            0xe80000: 0x4010104,\n\t            0xf80000: 0x4000000,\n\t            0x1000000: 0x4010100,\n\t            0x1100000: 0x10004,\n\t            0x1200000: 0x10000,\n\t            0x1300000: 0x4000100,\n\t            0x1400000: 0x100,\n\t            0x1500000: 0x4010104,\n\t            0x1600000: 0x4000004,\n\t            0x1700000: 0x0,\n\t            0x1800000: 0x4000104,\n\t            0x1900000: 0x4000000,\n\t            0x1a00000: 0x4,\n\t            0x1b00000: 0x10100,\n\t            0x1c00000: 0x4010000,\n\t            0x1d00000: 0x104,\n\t            0x1e00000: 0x10104,\n\t            0x1f00000: 0x4010004,\n\t            0x1080000: 0x4000000,\n\t            0x1180000: 0x104,\n\t            0x1280000: 0x4010100,\n\t            0x1380000: 0x0,\n\t            0x1480000: 0x10004,\n\t            0x1580000: 0x4000100,\n\t            0x1680000: 0x100,\n\t            0x1780000: 0x4010004,\n\t            0x1880000: 0x10000,\n\t            0x1980000: 0x4010104,\n\t            0x1a80000: 0x10104,\n\t            0x1b80000: 0x4000004,\n\t            0x1c80000: 0x4000104,\n\t            0x1d80000: 0x4010000,\n\t            0x1e80000: 0x4,\n\t            0x1f80000: 0x10100\n\t        },\n\t        {\n\t            0x0: 0x80401000,\n\t            0x10000: 0x80001040,\n\t            0x20000: 0x401040,\n\t            0x30000: 0x80400000,\n\t            0x40000: 0x0,\n\t            0x50000: 0x401000,\n\t            0x60000: 0x80000040,\n\t            0x70000: 0x400040,\n\t            0x80000: 0x80000000,\n\t            0x90000: 0x400000,\n\t            0xa0000: 0x40,\n\t            0xb0000: 0x80001000,\n\t            0xc0000: 0x80400040,\n\t            0xd0000: 0x1040,\n\t            0xe0000: 0x1000,\n\t            0xf0000: 0x80401040,\n\t            0x8000: 0x80001040,\n\t            0x18000: 0x40,\n\t            0x28000: 0x80400040,\n\t            0x38000: 0x80001000,\n\t            0x48000: 0x401000,\n\t            0x58000: 0x80401040,\n\t            0x68000: 0x0,\n\t            0x78000: 0x80400000,\n\t            0x88000: 0x1000,\n\t            0x98000: 0x80401000,\n\t            0xa8000: 0x400000,\n\t            0xb8000: 0x1040,\n\t            0xc8000: 0x80000000,\n\t            0xd8000: 0x400040,\n\t            0xe8000: 0x401040,\n\t            0xf8000: 0x80000040,\n\t            0x100000: 0x400040,\n\t            0x110000: 0x401000,\n\t            0x120000: 0x80000040,\n\t            0x130000: 0x0,\n\t            0x140000: 0x1040,\n\t            0x150000: 0x80400040,\n\t            0x160000: 0x80401000,\n\t            0x170000: 0x80001040,\n\t            0x180000: 0x80401040,\n\t            0x190000: 0x80000000,\n\t            0x1a0000: 0x80400000,\n\t            0x1b0000: 0x401040,\n\t            0x1c0000: 0x80001000,\n\t            0x1d0000: 0x400000,\n\t            0x1e0000: 0x40,\n\t            0x1f0000: 0x1000,\n\t            0x108000: 0x80400000,\n\t            0x118000: 0x80401040,\n\t            0x128000: 0x0,\n\t            0x138000: 0x401000,\n\t            0x148000: 0x400040,\n\t            0x158000: 0x80000000,\n\t            0x168000: 0x80001040,\n\t            0x178000: 0x40,\n\t            0x188000: 0x80000040,\n\t            0x198000: 0x1000,\n\t            0x1a8000: 0x80001000,\n\t            0x1b8000: 0x80400040,\n\t            0x1c8000: 0x1040,\n\t            0x1d8000: 0x80401000,\n\t            0x1e8000: 0x400000,\n\t            0x1f8000: 0x401040\n\t        },\n\t        {\n\t            0x0: 0x80,\n\t            0x1000: 0x1040000,\n\t            0x2000: 0x40000,\n\t            0x3000: 0x20000000,\n\t            0x4000: 0x20040080,\n\t            0x5000: 0x1000080,\n\t            0x6000: 0x21000080,\n\t            0x7000: 0x40080,\n\t            0x8000: 0x1000000,\n\t            0x9000: 0x20040000,\n\t            0xa000: 0x20000080,\n\t            0xb000: 0x21040080,\n\t            0xc000: 0x21040000,\n\t            0xd000: 0x0,\n\t            0xe000: 0x1040080,\n\t            0xf000: 0x21000000,\n\t            0x800: 0x1040080,\n\t            0x1800: 0x21000080,\n\t            0x2800: 0x80,\n\t            0x3800: 0x1040000,\n\t            0x4800: 0x40000,\n\t            0x5800: 0x20040080,\n\t            0x6800: 0x21040000,\n\t            0x7800: 0x20000000,\n\t            0x8800: 0x20040000,\n\t            0x9800: 0x0,\n\t            0xa800: 0x21040080,\n\t            0xb800: 0x1000080,\n\t            0xc800: 0x20000080,\n\t            0xd800: 0x21000000,\n\t            0xe800: 0x1000000,\n\t            0xf800: 0x40080,\n\t            0x10000: 0x40000,\n\t            0x11000: 0x80,\n\t            0x12000: 0x20000000,\n\t            0x13000: 0x21000080,\n\t            0x14000: 0x1000080,\n\t            0x15000: 0x21040000,\n\t            0x16000: 0x20040080,\n\t            0x17000: 0x1000000,\n\t            0x18000: 0x21040080,\n\t            0x19000: 0x21000000,\n\t            0x1a000: 0x1040000,\n\t            0x1b000: 0x20040000,\n\t            0x1c000: 0x40080,\n\t            0x1d000: 0x20000080,\n\t            0x1e000: 0x0,\n\t            0x1f000: 0x1040080,\n\t            0x10800: 0x21000080,\n\t            0x11800: 0x1000000,\n\t            0x12800: 0x1040000,\n\t            0x13800: 0x20040080,\n\t            0x14800: 0x20000000,\n\t            0x15800: 0x1040080,\n\t            0x16800: 0x80,\n\t            0x17800: 0x21040000,\n\t            0x18800: 0x40080,\n\t            0x19800: 0x21040080,\n\t            0x1a800: 0x0,\n\t            0x1b800: 0x21000000,\n\t            0x1c800: 0x1000080,\n\t            0x1d800: 0x40000,\n\t            0x1e800: 0x20040000,\n\t            0x1f800: 0x20000080\n\t        },\n\t        {\n\t            0x0: 0x10000008,\n\t            0x100: 0x2000,\n\t            0x200: 0x10200000,\n\t            0x300: 0x10202008,\n\t            0x400: 0x10002000,\n\t            0x500: 0x200000,\n\t            0x600: 0x200008,\n\t            0x700: 0x10000000,\n\t            0x800: 0x0,\n\t            0x900: 0x10002008,\n\t            0xa00: 0x202000,\n\t            0xb00: 0x8,\n\t            0xc00: 0x10200008,\n\t            0xd00: 0x202008,\n\t            0xe00: 0x2008,\n\t            0xf00: 0x10202000,\n\t            0x80: 0x10200000,\n\t            0x180: 0x10202008,\n\t            0x280: 0x8,\n\t            0x380: 0x200000,\n\t            0x480: 0x202008,\n\t            0x580: 0x10000008,\n\t            0x680: 0x10002000,\n\t            0x780: 0x2008,\n\t            0x880: 0x200008,\n\t            0x980: 0x2000,\n\t            0xa80: 0x10002008,\n\t            0xb80: 0x10200008,\n\t            0xc80: 0x0,\n\t            0xd80: 0x10202000,\n\t            0xe80: 0x202000,\n\t            0xf80: 0x10000000,\n\t            0x1000: 0x10002000,\n\t            0x1100: 0x10200008,\n\t            0x1200: 0x10202008,\n\t            0x1300: 0x2008,\n\t            0x1400: 0x200000,\n\t            0x1500: 0x10000000,\n\t            0x1600: 0x10000008,\n\t            0x1700: 0x202000,\n\t            0x1800: 0x202008,\n\t            0x1900: 0x0,\n\t            0x1a00: 0x8,\n\t            0x1b00: 0x10200000,\n\t            0x1c00: 0x2000,\n\t            0x1d00: 0x10002008,\n\t            0x1e00: 0x10202000,\n\t            0x1f00: 0x200008,\n\t            0x1080: 0x8,\n\t            0x1180: 0x202000,\n\t            0x1280: 0x200000,\n\t            0x1380: 0x10000008,\n\t            0x1480: 0x10002000,\n\t            0x1580: 0x2008,\n\t            0x1680: 0x10202008,\n\t            0x1780: 0x10200000,\n\t            0x1880: 0x10202000,\n\t            0x1980: 0x10200008,\n\t            0x1a80: 0x2000,\n\t            0x1b80: 0x202008,\n\t            0x1c80: 0x200008,\n\t            0x1d80: 0x0,\n\t            0x1e80: 0x10000000,\n\t            0x1f80: 0x10002008\n\t        },\n\t        {\n\t            0x0: 0x100000,\n\t            0x10: 0x2000401,\n\t            0x20: 0x400,\n\t            0x30: 0x100401,\n\t            0x40: 0x2100401,\n\t            0x50: 0x0,\n\t            0x60: 0x1,\n\t            0x70: 0x2100001,\n\t            0x80: 0x2000400,\n\t            0x90: 0x100001,\n\t            0xa0: 0x2000001,\n\t            0xb0: 0x2100400,\n\t            0xc0: 0x2100000,\n\t            0xd0: 0x401,\n\t            0xe0: 0x100400,\n\t            0xf0: 0x2000000,\n\t            0x8: 0x2100001,\n\t            0x18: 0x0,\n\t            0x28: 0x2000401,\n\t            0x38: 0x2100400,\n\t            0x48: 0x100000,\n\t            0x58: 0x2000001,\n\t            0x68: 0x2000000,\n\t            0x78: 0x401,\n\t            0x88: 0x100401,\n\t            0x98: 0x2000400,\n\t            0xa8: 0x2100000,\n\t            0xb8: 0x100001,\n\t            0xc8: 0x400,\n\t            0xd8: 0x2100401,\n\t            0xe8: 0x1,\n\t            0xf8: 0x100400,\n\t            0x100: 0x2000000,\n\t            0x110: 0x100000,\n\t            0x120: 0x2000401,\n\t            0x130: 0x2100001,\n\t            0x140: 0x100001,\n\t            0x150: 0x2000400,\n\t            0x160: 0x2100400,\n\t            0x170: 0x100401,\n\t            0x180: 0x401,\n\t            0x190: 0x2100401,\n\t            0x1a0: 0x100400,\n\t            0x1b0: 0x1,\n\t            0x1c0: 0x0,\n\t            0x1d0: 0x2100000,\n\t            0x1e0: 0x2000001,\n\t            0x1f0: 0x400,\n\t            0x108: 0x100400,\n\t            0x118: 0x2000401,\n\t            0x128: 0x2100001,\n\t            0x138: 0x1,\n\t            0x148: 0x2000000,\n\t            0x158: 0x100000,\n\t            0x168: 0x401,\n\t            0x178: 0x2100400,\n\t            0x188: 0x2000001,\n\t            0x198: 0x2100000,\n\t            0x1a8: 0x0,\n\t            0x1b8: 0x2100401,\n\t            0x1c8: 0x100401,\n\t            0x1d8: 0x400,\n\t            0x1e8: 0x2000400,\n\t            0x1f8: 0x100001\n\t        },\n\t        {\n\t            0x0: 0x8000820,\n\t            0x1: 0x20000,\n\t            0x2: 0x8000000,\n\t            0x3: 0x20,\n\t            0x4: 0x20020,\n\t            0x5: 0x8020820,\n\t            0x6: 0x8020800,\n\t            0x7: 0x800,\n\t            0x8: 0x8020000,\n\t            0x9: 0x8000800,\n\t            0xa: 0x20800,\n\t            0xb: 0x8020020,\n\t            0xc: 0x820,\n\t            0xd: 0x0,\n\t            0xe: 0x8000020,\n\t            0xf: 0x20820,\n\t            0x80000000: 0x800,\n\t            0x80000001: 0x8020820,\n\t            0x80000002: 0x8000820,\n\t            0x80000003: 0x8000000,\n\t            0x80000004: 0x8020000,\n\t            0x80000005: 0x20800,\n\t            0x80000006: 0x20820,\n\t            0x80000007: 0x20,\n\t            0x80000008: 0x8000020,\n\t            0x80000009: 0x820,\n\t            0x8000000a: 0x20020,\n\t            0x8000000b: 0x8020800,\n\t            0x8000000c: 0x0,\n\t            0x8000000d: 0x8020020,\n\t            0x8000000e: 0x8000800,\n\t            0x8000000f: 0x20000,\n\t            0x10: 0x20820,\n\t            0x11: 0x8020800,\n\t            0x12: 0x20,\n\t            0x13: 0x800,\n\t            0x14: 0x8000800,\n\t            0x15: 0x8000020,\n\t            0x16: 0x8020020,\n\t            0x17: 0x20000,\n\t            0x18: 0x0,\n\t            0x19: 0x20020,\n\t            0x1a: 0x8020000,\n\t            0x1b: 0x8000820,\n\t            0x1c: 0x8020820,\n\t            0x1d: 0x20800,\n\t            0x1e: 0x820,\n\t            0x1f: 0x8000000,\n\t            0x80000010: 0x20000,\n\t            0x80000011: 0x800,\n\t            0x80000012: 0x8020020,\n\t            0x80000013: 0x20820,\n\t            0x80000014: 0x20,\n\t            0x80000015: 0x8020000,\n\t            0x80000016: 0x8000000,\n\t            0x80000017: 0x8000820,\n\t            0x80000018: 0x8020820,\n\t            0x80000019: 0x8000020,\n\t            0x8000001a: 0x8000800,\n\t            0x8000001b: 0x0,\n\t            0x8000001c: 0x20800,\n\t            0x8000001d: 0x820,\n\t            0x8000001e: 0x20020,\n\t            0x8000001f: 0x8020800\n\t        }\n\t    ];\n\n\t    // Masks that select the SBOX input\n\t    var SBOX_MASK = [\n\t        0xf8000001, 0x1f800000, 0x01f80000, 0x001f8000,\n\t        0x0001f800, 0x00001f80, 0x000001f8, 0x8000001f\n\t    ];\n\n\t    /**\n\t     * DES block cipher algorithm.\n\t     */\n\t    var DES = C_algo.DES = BlockCipher.extend({\n\t        _doReset: function () {\n\t            // Shortcuts\n\t            var key = this._key;\n\t            var keyWords = key.words;\n\n\t            // Select 56 bits according to PC1\n\t            var keyBits = [];\n\t            for (var i = 0; i < 56; i++) {\n\t                var keyBitPos = PC1[i] - 1;\n\t                keyBits[i] = (keyWords[keyBitPos >>> 5] >>> (31 - keyBitPos % 32)) & 1;\n\t            }\n\n\t            // Assemble 16 subkeys\n\t            var subKeys = this._subKeys = [];\n\t            for (var nSubKey = 0; nSubKey < 16; nSubKey++) {\n\t                // Create subkey\n\t                var subKey = subKeys[nSubKey] = [];\n\n\t                // Shortcut\n\t                var bitShift = BIT_SHIFTS[nSubKey];\n\n\t                // Select 48 bits according to PC2\n\t                for (var i = 0; i < 24; i++) {\n\t                    // Select from the left 28 key bits\n\t                    subKey[(i / 6) | 0] |= keyBits[((PC2[i] - 1) + bitShift) % 28] << (31 - i % 6);\n\n\t                    // Select from the right 28 key bits\n\t                    subKey[4 + ((i / 6) | 0)] |= keyBits[28 + (((PC2[i + 24] - 1) + bitShift) % 28)] << (31 - i % 6);\n\t                }\n\n\t                // Since each subkey is applied to an expanded 32-bit input,\n\t                // the subkey can be broken into 8 values scaled to 32-bits,\n\t                // which allows the key to be used without expansion\n\t                subKey[0] = (subKey[0] << 1) | (subKey[0] >>> 31);\n\t                for (var i = 1; i < 7; i++) {\n\t                    subKey[i] = subKey[i] >>> ((i - 1) * 4 + 3);\n\t                }\n\t                subKey[7] = (subKey[7] << 5) | (subKey[7] >>> 27);\n\t            }\n\n\t            // Compute inverse subkeys\n\t            var invSubKeys = this._invSubKeys = [];\n\t            for (var i = 0; i < 16; i++) {\n\t                invSubKeys[i] = subKeys[15 - i];\n\t            }\n\t        },\n\n\t        encryptBlock: function (M, offset) {\n\t            this._doCryptBlock(M, offset, this._subKeys);\n\t        },\n\n\t        decryptBlock: function (M, offset) {\n\t            this._doCryptBlock(M, offset, this._invSubKeys);\n\t        },\n\n\t        _doCryptBlock: function (M, offset, subKeys) {\n\t            // Get input\n\t            this._lBlock = M[offset];\n\t            this._rBlock = M[offset + 1];\n\n\t            // Initial permutation\n\t            exchangeLR.call(this, 4,  0x0f0f0f0f);\n\t            exchangeLR.call(this, 16, 0x0000ffff);\n\t            exchangeRL.call(this, 2,  0x33333333);\n\t            exchangeRL.call(this, 8,  0x00ff00ff);\n\t            exchangeLR.call(this, 1,  0x55555555);\n\n\t            // Rounds\n\t            for (var round = 0; round < 16; round++) {\n\t                // Shortcuts\n\t                var subKey = subKeys[round];\n\t                var lBlock = this._lBlock;\n\t                var rBlock = this._rBlock;\n\n\t                // Feistel function\n\t                var f = 0;\n\t                for (var i = 0; i < 8; i++) {\n\t                    f |= SBOX_P[i][((rBlock ^ subKey[i]) & SBOX_MASK[i]) >>> 0];\n\t                }\n\t                this._lBlock = rBlock;\n\t                this._rBlock = lBlock ^ f;\n\t            }\n\n\t            // Undo swap from last round\n\t            var t = this._lBlock;\n\t            this._lBlock = this._rBlock;\n\t            this._rBlock = t;\n\n\t            // Final permutation\n\t            exchangeLR.call(this, 1,  0x55555555);\n\t            exchangeRL.call(this, 8,  0x00ff00ff);\n\t            exchangeRL.call(this, 2,  0x33333333);\n\t            exchangeLR.call(this, 16, 0x0000ffff);\n\t            exchangeLR.call(this, 4,  0x0f0f0f0f);\n\n\t            // Set output\n\t            M[offset] = this._lBlock;\n\t            M[offset + 1] = this._rBlock;\n\t        },\n\n\t        keySize: 64/32,\n\n\t        ivSize: 64/32,\n\n\t        blockSize: 64/32\n\t    });\n\n\t    // Swap bits across the left and right words\n\t    function exchangeLR(offset, mask) {\n\t        var t = ((this._lBlock >>> offset) ^ this._rBlock) & mask;\n\t        this._rBlock ^= t;\n\t        this._lBlock ^= t << offset;\n\t    }\n\n\t    function exchangeRL(offset, mask) {\n\t        var t = ((this._rBlock >>> offset) ^ this._lBlock) & mask;\n\t        this._lBlock ^= t;\n\t        this._rBlock ^= t << offset;\n\t    }\n\n\t    /**\n\t     * Shortcut functions to the cipher's object interface.\n\t     *\n\t     * @example\n\t     *\n\t     *     var ciphertext = CryptoJS.DES.encrypt(message, key, cfg);\n\t     *     var plaintext  = CryptoJS.DES.decrypt(ciphertext, key, cfg);\n\t     */\n\t    C.DES = BlockCipher._createHelper(DES);\n\n\t    /**\n\t     * Triple-DES block cipher algorithm.\n\t     */\n\t    var TripleDES = C_algo.TripleDES = BlockCipher.extend({\n\t        _doReset: function () {\n\t            // Shortcuts\n\t            var key = this._key;\n\t            var keyWords = key.words;\n\t            // Make sure the key length is valid (64, 128 or >= 192 bit)\n\t            if (keyWords.length !== 2 && keyWords.length !== 4 && keyWords.length < 6) {\n\t                throw new Error('Invalid key length - 3DES requires the key length to be 64, 128, 192 or >192.');\n\t            }\n\n\t            // Extend the key according to the keying options defined in 3DES standard\n\t            var key1 = keyWords.slice(0, 2);\n\t            var key2 = keyWords.length < 4 ? keyWords.slice(0, 2) : keyWords.slice(2, 4);\n\t            var key3 = keyWords.length < 6 ? keyWords.slice(0, 2) : keyWords.slice(4, 6);\n\n\t            // Create DES instances\n\t            this._des1 = DES.createEncryptor(WordArray.create(key1));\n\t            this._des2 = DES.createEncryptor(WordArray.create(key2));\n\t            this._des3 = DES.createEncryptor(WordArray.create(key3));\n\t        },\n\n\t        encryptBlock: function (M, offset) {\n\t            this._des1.encryptBlock(M, offset);\n\t            this._des2.decryptBlock(M, offset);\n\t            this._des3.encryptBlock(M, offset);\n\t        },\n\n\t        decryptBlock: function (M, offset) {\n\t            this._des3.decryptBlock(M, offset);\n\t            this._des2.encryptBlock(M, offset);\n\t            this._des1.decryptBlock(M, offset);\n\t        },\n\n\t        keySize: 192/32,\n\n\t        ivSize: 64/32,\n\n\t        blockSize: 64/32\n\t    });\n\n\t    /**\n\t     * Shortcut functions to the cipher's object interface.\n\t     *\n\t     * @example\n\t     *\n\t     *     var ciphertext = CryptoJS.TripleDES.encrypt(message, key, cfg);\n\t     *     var plaintext  = CryptoJS.TripleDES.decrypt(ciphertext, key, cfg);\n\t     */\n\t    C.TripleDES = BlockCipher._createHelper(TripleDES);\n\t}());\n\n\n\treturn CryptoJS.TripleDES;\n\n}));", ";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (undefined) {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var Base = C_lib.Base;\n\t    var X32WordArray = C_lib.WordArray;\n\n\t    /**\n\t     * x64 namespace.\n\t     */\n\t    var C_x64 = C.x64 = {};\n\n\t    /**\n\t     * A 64-bit word.\n\t     */\n\t    var X64Word = C_x64.Word = Base.extend({\n\t        /**\n\t         * Initializes a newly created 64-bit word.\n\t         *\n\t         * @param {number} high The high 32 bits.\n\t         * @param {number} low The low 32 bits.\n\t         *\n\t         * @example\n\t         *\n\t         *     var x64Word = CryptoJS.x64.Word.create(0x00010203, 0x04050607);\n\t         */\n\t        init: function (high, low) {\n\t            this.high = high;\n\t            this.low = low;\n\t        }\n\n\t        /**\n\t         * Bitwise NOTs this word.\n\t         *\n\t         * @return {X64Word} A new x64-Word object after negating.\n\t         *\n\t         * @example\n\t         *\n\t         *     var negated = x64Word.not();\n\t         */\n\t        // not: function () {\n\t            // var high = ~this.high;\n\t            // var low = ~this.low;\n\n\t            // return X64Word.create(high, low);\n\t        // },\n\n\t        /**\n\t         * Bitwise ANDs this word with the passed word.\n\t         *\n\t         * @param {X64Word} word The x64-Word to AND with this word.\n\t         *\n\t         * @return {X64Word} A new x64-Word object after ANDing.\n\t         *\n\t         * @example\n\t         *\n\t         *     var anded = x64Word.and(anotherX64Word);\n\t         */\n\t        // and: function (word) {\n\t            // var high = this.high & word.high;\n\t            // var low = this.low & word.low;\n\n\t            // return X64Word.create(high, low);\n\t        // },\n\n\t        /**\n\t         * Bitwise ORs this word with the passed word.\n\t         *\n\t         * @param {X64Word} word The x64-Word to OR with this word.\n\t         *\n\t         * @return {X64Word} A new x64-Word object after ORing.\n\t         *\n\t         * @example\n\t         *\n\t         *     var ored = x64Word.or(anotherX64Word);\n\t         */\n\t        // or: function (word) {\n\t            // var high = this.high | word.high;\n\t            // var low = this.low | word.low;\n\n\t            // return X64Word.create(high, low);\n\t        // },\n\n\t        /**\n\t         * Bitwise XORs this word with the passed word.\n\t         *\n\t         * @param {X64Word} word The x64-Word to XOR with this word.\n\t         *\n\t         * @return {X64Word} A new x64-Word object after XORing.\n\t         *\n\t         * @example\n\t         *\n\t         *     var xored = x64Word.xor(anotherX64Word);\n\t         */\n\t        // xor: function (word) {\n\t            // var high = this.high ^ word.high;\n\t            // var low = this.low ^ word.low;\n\n\t            // return X64Word.create(high, low);\n\t        // },\n\n\t        /**\n\t         * Shifts this word n bits to the left.\n\t         *\n\t         * @param {number} n The number of bits to shift.\n\t         *\n\t         * @return {X64Word} A new x64-Word object after shifting.\n\t         *\n\t         * @example\n\t         *\n\t         *     var shifted = x64Word.shiftL(25);\n\t         */\n\t        // shiftL: function (n) {\n\t            // if (n < 32) {\n\t                // var high = (this.high << n) | (this.low >>> (32 - n));\n\t                // var low = this.low << n;\n\t            // } else {\n\t                // var high = this.low << (n - 32);\n\t                // var low = 0;\n\t            // }\n\n\t            // return X64Word.create(high, low);\n\t        // },\n\n\t        /**\n\t         * Shifts this word n bits to the right.\n\t         *\n\t         * @param {number} n The number of bits to shift.\n\t         *\n\t         * @return {X64Word} A new x64-Word object after shifting.\n\t         *\n\t         * @example\n\t         *\n\t         *     var shifted = x64Word.shiftR(7);\n\t         */\n\t        // shiftR: function (n) {\n\t            // if (n < 32) {\n\t                // var low = (this.low >>> n) | (this.high << (32 - n));\n\t                // var high = this.high >>> n;\n\t            // } else {\n\t                // var low = this.high >>> (n - 32);\n\t                // var high = 0;\n\t            // }\n\n\t            // return X64Word.create(high, low);\n\t        // },\n\n\t        /**\n\t         * Rotates this word n bits to the left.\n\t         *\n\t         * @param {number} n The number of bits to rotate.\n\t         *\n\t         * @return {X64Word} A new x64-Word object after rotating.\n\t         *\n\t         * @example\n\t         *\n\t         *     var rotated = x64Word.rotL(25);\n\t         */\n\t        // rotL: function (n) {\n\t            // return this.shiftL(n).or(this.shiftR(64 - n));\n\t        // },\n\n\t        /**\n\t         * Rotates this word n bits to the right.\n\t         *\n\t         * @param {number} n The number of bits to rotate.\n\t         *\n\t         * @return {X64Word} A new x64-Word object after rotating.\n\t         *\n\t         * @example\n\t         *\n\t         *     var rotated = x64Word.rotR(7);\n\t         */\n\t        // rotR: function (n) {\n\t            // return this.shiftR(n).or(this.shiftL(64 - n));\n\t        // },\n\n\t        /**\n\t         * Adds this word with the passed word.\n\t         *\n\t         * @param {X64Word} word The x64-Word to add with this word.\n\t         *\n\t         * @return {X64Word} A new x64-Word object after adding.\n\t         *\n\t         * @example\n\t         *\n\t         *     var added = x64Word.add(anotherX64Word);\n\t         */\n\t        // add: function (word) {\n\t            // var low = (this.low + word.low) | 0;\n\t            // var carry = (low >>> 0) < (this.low >>> 0) ? 1 : 0;\n\t            // var high = (this.high + word.high + carry) | 0;\n\n\t            // return X64Word.create(high, low);\n\t        // }\n\t    });\n\n\t    /**\n\t     * An array of 64-bit words.\n\t     *\n\t     * @property {Array} words The array of CryptoJS.x64.Word objects.\n\t     * @property {number} sigBytes The number of significant bytes in this word array.\n\t     */\n\t    var X64WordArray = C_x64.WordArray = Base.extend({\n\t        /**\n\t         * Initializes a newly created word array.\n\t         *\n\t         * @param {Array} words (Optional) An array of CryptoJS.x64.Word objects.\n\t         * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t         *\n\t         * @example\n\t         *\n\t         *     var wordArray = CryptoJS.x64.WordArray.create();\n\t         *\n\t         *     var wordArray = CryptoJS.x64.WordArray.create([\n\t         *         CryptoJS.x64.Word.create(0x00010203, 0x04050607),\n\t         *         CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f)\n\t         *     ]);\n\t         *\n\t         *     var wordArray = CryptoJS.x64.WordArray.create([\n\t         *         CryptoJS.x64.Word.create(0x00010203, 0x04050607),\n\t         *         CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f)\n\t         *     ], 10);\n\t         */\n\t        init: function (words, sigBytes) {\n\t            words = this.words = words || [];\n\n\t            if (sigBytes != undefined) {\n\t                this.sigBytes = sigBytes;\n\t            } else {\n\t                this.sigBytes = words.length * 8;\n\t            }\n\t        },\n\n\t        /**\n\t         * Converts this 64-bit word array to a 32-bit word array.\n\t         *\n\t         * @return {CryptoJS.lib.WordArray} This word array's data as a 32-bit word array.\n\t         *\n\t         * @example\n\t         *\n\t         *     var x32WordArray = x64WordArray.toX32();\n\t         */\n\t        toX32: function () {\n\t            // Shortcuts\n\t            var x64Words = this.words;\n\t            var x64WordsLength = x64Words.length;\n\n\t            // Convert\n\t            var x32Words = [];\n\t            for (var i = 0; i < x64WordsLength; i++) {\n\t                var x64Word = x64Words[i];\n\t                x32Words.push(x64Word.high);\n\t                x32Words.push(x64Word.low);\n\t            }\n\n\t            return X32WordArray.create(x32Words, this.sigBytes);\n\t        },\n\n\t        /**\n\t         * Creates a copy of this word array.\n\t         *\n\t         * @return {X64WordArray} The clone.\n\t         *\n\t         * @example\n\t         *\n\t         *     var clone = x64WordArray.clone();\n\t         */\n\t        clone: function () {\n\t            var clone = Base.clone.call(this);\n\n\t            // Clone \"words\" array\n\t            var words = clone.words = this.words.slice(0);\n\n\t            // Clone each X64Word object\n\t            var wordsLength = words.length;\n\t            for (var i = 0; i < wordsLength; i++) {\n\t                words[i] = words[i].clone();\n\t            }\n\n\t            return clone;\n\t        }\n\t    });\n\t}());\n\n\n\treturn CryptoJS;\n\n}));", "const INITIAL_STATE = 1;\nconst FAIL_STATE = 0;\n\n/**\n * A StateMachine represents a deterministic finite automaton.\n * It can perform matches over a sequence of values, similar to a regular expression.\n */\nexport default class StateMachine {\n  constructor(dfa) {\n    this.stateTable = dfa.stateTable;\n    this.accepting = dfa.accepting;\n    this.tags = dfa.tags;\n  }\n\n  /**\n   * Returns an iterable object that yields pattern matches over the input sequence.\n   * Matches are of the form [startIndex, endIndex, tags].\n   */\n  match(str) {\n    let self = this;\n    return {\n      *[Symbol.iterator]() {\n        let state = INITIAL_STATE;\n        let startRun = null;\n        let lastAccepting = null;\n        let lastState = null;\n\n        for (let p = 0; p < str.length; p++) {\n          let c = str[p];\n\n          lastState = state;\n          state = self.stateTable[state][c];\n\n          if (state === FAIL_STATE) {\n            // yield the last match if any\n            if (startRun != null && lastAccepting != null && lastAccepting >= startRun) {\n              yield [startRun, lastAccepting, self.tags[lastState]];\n            }\n\n            // reset the state as if we started over from the initial state\n            state = self.stateTable[INITIAL_STATE][c];\n            startRun = null;\n          }\n\n          // start a run if not in the failure state\n          if (state !== FAIL_STATE && startRun == null) {\n            startRun = p;\n          }\n\n          // if accepting, mark the potential match end\n          if (self.accepting[state]) {\n            lastAccepting = p;\n          }\n\n          // reset the state to the initial state if we get into the failure state\n          if (state === FAIL_STATE) {\n            state = INITIAL_STATE;\n          }\n        }\n\n        // yield the last match if any\n        if (startRun != null && lastAccepting != null && lastAccepting >= startRun) {\n          yield [startRun, lastAccepting, self.tags[state]];\n        }\n      }\n    };\n  }\n\n  /**\n   * For each match over the input sequence, action functions matching\n   * the tag definitions in the input pattern are called with the startIndex,\n   * endIndex, and sub-match sequence.\n   */\n  apply(str, actions) {\n    for (let [start, end, tags] of this.match(str)) {\n      for (let tag of tags) {\n        if (typeof actions[tag] === 'function') {\n          actions[tag](start, end, str.slice(start, end + 1));\n        }\n      }\n    }\n  }\n}\n", "/*\n * MIT LICENSE\n * Copyright (c) 2011 Devon Govett\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this\n * software and associated documentation files (the \"Software\"), to deal in the Software\n * without restriction, including without limitation the rights to use, copy, modify, merge,\n * publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons\n * to whom the Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all copies or\n * substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING\n * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n\nconst fs = require('fs');\nconst zlib = require('zlib');\n\nmodule.exports = class PNG {\n  static decode(path, fn) {\n    return fs.readFile(path, function(err, file) {\n      const png = new PNG(file);\n      return png.decode(pixels => fn(pixels));\n    });\n  }\n\n  static load(path) {\n    const file = fs.readFileSync(path);\n    return new PNG(file);\n  }\n\n  constructor(data) {\n    let i;\n    this.data = data;\n    this.pos = 8; // Skip the default header\n\n    this.palette = [];\n    this.imgData = [];\n    this.transparency = {};\n    this.text = {};\n\n    while (true) {\n      const chunkSize = this.readUInt32();\n      let section = '';\n      for (i = 0; i < 4; i++) {\n        section += String.fromCharCode(this.data[this.pos++]);\n      }\n\n      switch (section) {\n        case 'IHDR':\n          // we can grab  interesting values from here (like width, height, etc)\n          this.width = this.readUInt32();\n          this.height = this.readUInt32();\n          this.bits = this.data[this.pos++];\n          this.colorType = this.data[this.pos++];\n          this.compressionMethod = this.data[this.pos++];\n          this.filterMethod = this.data[this.pos++];\n          this.interlaceMethod = this.data[this.pos++];\n          break;\n\n        case 'PLTE':\n          this.palette = this.read(chunkSize);\n          break;\n\n        case 'IDAT':\n          for (i = 0; i < chunkSize; i++) {\n            this.imgData.push(this.data[this.pos++]);\n          }\n          break;\n\n        case 'tRNS':\n          // This chunk can only occur once and it must occur after the\n          // PLTE chunk and before the IDAT chunk.\n          this.transparency = {};\n          switch (this.colorType) {\n            case 3:\n              // Indexed color, RGB. Each byte in this chunk is an alpha for\n              // the palette index in the PLTE (\"palette\") chunk up until the\n              // last non-opaque entry. Set up an array, stretching over all\n              // palette entries which will be 0 (opaque) or 1 (transparent).\n              this.transparency.indexed = this.read(chunkSize);\n              var short = 255 - this.transparency.indexed.length;\n              if (short > 0) {\n                for (i = 0; i < short; i++) {\n                  this.transparency.indexed.push(255);\n                }\n              }\n              break;\n            case 0:\n              // Greyscale. Corresponding to entries in the PLTE chunk.\n              // Grey is two bytes, range 0 .. (2 ^ bit-depth) - 1\n              this.transparency.grayscale = this.read(chunkSize)[0];\n              break;\n            case 2:\n              // True color with proper alpha channel.\n              this.transparency.rgb = this.read(chunkSize);\n              break;\n          }\n          break;\n\n        case 'tEXt':\n          var text = this.read(chunkSize);\n          var index = text.indexOf(0);\n          var key = String.fromCharCode.apply(String, text.slice(0, index));\n          this.text[key] = String.fromCharCode.apply(\n            String,\n            text.slice(index + 1)\n          );\n          break;\n\n        case 'IEND':\n          // we've got everything we need!\n          switch (this.colorType) {\n            case 0:\n            case 3:\n            case 4:\n              this.colors = 1;\n              break;\n            case 2:\n            case 6:\n              this.colors = 3;\n              break;\n          }\n\n          this.hasAlphaChannel = [4, 6].includes(this.colorType);\n          var colors = this.colors + (this.hasAlphaChannel ? 1 : 0);\n          this.pixelBitlength = this.bits * colors;\n\n          switch (this.colors) {\n            case 1:\n              this.colorSpace = 'DeviceGray';\n              break;\n            case 3:\n              this.colorSpace = 'DeviceRGB';\n              break;\n          }\n\n          this.imgData = new Buffer(this.imgData);\n          return;\n          break;\n\n        default:\n          // unknown (or unimportant) section, skip it\n          this.pos += chunkSize;\n      }\n\n      this.pos += 4; // Skip the CRC\n\n      if (this.pos > this.data.length) {\n        throw new Error('Incomplete or corrupt PNG file');\n      }\n    }\n  }\n\n  read(bytes) {\n    const result = new Array(bytes);\n    for (let i = 0; i < bytes; i++) {\n      result[i] = this.data[this.pos++];\n    }\n    return result;\n  }\n\n  readUInt32() {\n    const b1 = this.data[this.pos++] << 24;\n    const b2 = this.data[this.pos++] << 16;\n    const b3 = this.data[this.pos++] << 8;\n    const b4 = this.data[this.pos++];\n    return b1 | b2 | b3 | b4;\n  }\n\n  readUInt16() {\n    const b1 = this.data[this.pos++] << 8;\n    const b2 = this.data[this.pos++];\n    return b1 | b2;\n  }\n\n  decodePixels(fn) {\n    return zlib.inflate(this.imgData, (err, data) => {\n      if (err) {\n        throw err;\n      }\n\n      const { width, height } = this;\n      const pixelBytes = this.pixelBitlength / 8;\n\n      const pixels = new Buffer(width * height * pixelBytes);\n      const { length } = data;\n      let pos = 0;\n\n      function pass(x0, y0, dx, dy, singlePass = false) {\n        const w = Math.ceil((width - x0) / dx);\n        const h = Math.ceil((height - y0) / dy);\n        const scanlineLength = pixelBytes * w;\n        const buffer = singlePass ? pixels : new Buffer(scanlineLength * h);\n        let row = 0;\n        let c = 0;\n        while (row < h && pos < length) {\n          var byte, col, i, left, upper;\n          switch (data[pos++]) {\n            case 0: // None\n              for (i = 0; i < scanlineLength; i++) {\n                buffer[c++] = data[pos++];\n              }\n              break;\n\n            case 1: // Sub\n              for (i = 0; i < scanlineLength; i++) {\n                byte = data[pos++];\n                left = i < pixelBytes ? 0 : buffer[c - pixelBytes];\n                buffer[c++] = (byte + left) % 256;\n              }\n              break;\n\n            case 2: // Up\n              for (i = 0; i < scanlineLength; i++) {\n                byte = data[pos++];\n                col = (i - (i % pixelBytes)) / pixelBytes;\n                upper =\n                  row &&\n                  buffer[\n                    (row - 1) * scanlineLength +\n                      col * pixelBytes +\n                      (i % pixelBytes)\n                  ];\n                buffer[c++] = (upper + byte) % 256;\n              }\n              break;\n\n            case 3: // Average\n              for (i = 0; i < scanlineLength; i++) {\n                byte = data[pos++];\n                col = (i - (i % pixelBytes)) / pixelBytes;\n                left = i < pixelBytes ? 0 : buffer[c - pixelBytes];\n                upper =\n                  row &&\n                  buffer[\n                    (row - 1) * scanlineLength +\n                      col * pixelBytes +\n                      (i % pixelBytes)\n                  ];\n                buffer[c++] = (byte + Math.floor((left + upper) / 2)) % 256;\n              }\n              break;\n\n            case 4: // Paeth\n              for (i = 0; i < scanlineLength; i++) {\n                var paeth, upperLeft;\n                byte = data[pos++];\n                col = (i - (i % pixelBytes)) / pixelBytes;\n                left = i < pixelBytes ? 0 : buffer[c - pixelBytes];\n\n                if (row === 0) {\n                  upper = upperLeft = 0;\n                } else {\n                  upper =\n                    buffer[\n                      (row - 1) * scanlineLength +\n                        col * pixelBytes +\n                        (i % pixelBytes)\n                    ];\n                  upperLeft =\n                    col &&\n                    buffer[\n                      (row - 1) * scanlineLength +\n                        (col - 1) * pixelBytes +\n                        (i % pixelBytes)\n                    ];\n                }\n\n                const p = left + upper - upperLeft;\n                const pa = Math.abs(p - left);\n                const pb = Math.abs(p - upper);\n                const pc = Math.abs(p - upperLeft);\n\n                if (pa <= pb && pa <= pc) {\n                  paeth = left;\n                } else if (pb <= pc) {\n                  paeth = upper;\n                } else {\n                  paeth = upperLeft;\n                }\n\n                buffer[c++] = (byte + paeth) % 256;\n              }\n              break;\n\n            default:\n              throw new Error(`Invalid filter algorithm: ${data[pos - 1]}`);\n          }\n\n          if (!singlePass) {\n            let pixelsPos = ((y0 + row * dy) * width + x0) * pixelBytes;\n            let bufferPos = row * scanlineLength;\n            for (i = 0; i < w; i++) {\n              for (let j = 0; j < pixelBytes; j++)\n                pixels[pixelsPos++] = buffer[bufferPos++];\n              pixelsPos += (dx - 1) * pixelBytes;\n            }\n          }\n\n          row++;\n        }\n      }\n\n      if (this.interlaceMethod === 1) {\n        /*\n          1 6 4 6 2 6 4 6\n          7 7 7 7 7 7 7 7\n          5 6 5 6 5 6 5 6\n          7 7 7 7 7 7 7 7\n          3 6 4 6 3 6 4 6\n          7 7 7 7 7 7 7 7\n          5 6 5 6 5 6 5 6\n          7 7 7 7 7 7 7 7\n        */\n        pass(0, 0, 8, 8); // 1\n        pass(4, 0, 8, 8); // 2\n        pass(0, 4, 4, 8); // 3\n        pass(2, 0, 4, 4); // 4\n        pass(0, 2, 2, 4); // 5\n        pass(1, 0, 2, 2); // 6\n        pass(0, 1, 1, 2); // 7\n      } else {\n        pass(0, 0, 1, 1, true);\n      }\n\n      return fn(pixels);\n    });\n  }\n\n  decodePalette() {\n    const { palette } = this;\n    const { length } = palette;\n    const transparency = this.transparency.indexed || [];\n    const ret = new Buffer(transparency.length + length);\n    let pos = 0;\n    let c = 0;\n\n    for (let i = 0; i < length; i += 3) {\n      var left;\n      ret[pos++] = palette[i];\n      ret[pos++] = palette[i + 1];\n      ret[pos++] = palette[i + 2];\n      ret[pos++] = (left = transparency[c++]) != null ? left : 255;\n    }\n\n    return ret;\n  }\n\n  copyToImageData(imageData, pixels) {\n    let j, k;\n    let { colors } = this;\n    let palette = null;\n    let alpha = this.hasAlphaChannel;\n\n    if (this.palette.length) {\n      palette =\n        this._decodedPalette || (this._decodedPalette = this.decodePalette());\n      colors = 4;\n      alpha = true;\n    }\n\n    const data = imageData.data || imageData;\n    const { length } = data;\n    const input = palette || pixels;\n    let i = (j = 0);\n\n    if (colors === 1) {\n      while (i < length) {\n        k = palette ? pixels[i / 4] * 4 : j;\n        const v = input[k++];\n        data[i++] = v;\n        data[i++] = v;\n        data[i++] = v;\n        data[i++] = alpha ? input[k++] : 255;\n        j = k;\n      }\n    } else {\n      while (i < length) {\n        k = palette ? pixels[i / 4] * 4 : j;\n        data[i++] = input[k++];\n        data[i++] = input[k++];\n        data[i++] = input[k++];\n        data[i++] = alpha ? input[k++] : 255;\n        j = k;\n      }\n    }\n  }\n\n  decode(fn) {\n    const ret = new Buffer(this.width * this.height * 4);\n    return this.decodePixels(pixels => {\n      this.copyToImageData(ret, pixels);\n      return fn(ret);\n    });\n  }\n};\n", "/* eslint-disable node/no-deprecated-api */\n\n'use strict'\n\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\nvar safer = {}\n\nvar key\n\nfor (key in buffer) {\n  if (!buffer.hasOwnProperty(key)) continue\n  if (key === 'SlowBuffer' || key === 'Buffer') continue\n  safer[key] = buffer[key]\n}\n\nvar Safer = safer.Buffer = {}\nfor (key in Buffer) {\n  if (!Buffer.hasOwnProperty(key)) continue\n  if (key === 'allocUnsafe' || key === 'allocUnsafeSlow') continue\n  Safer[key] = Buffer[key]\n}\n\nsafer.Buffer.prototype = Buffer.prototype\n\nif (!Safer.from || Safer.from === Uint8Array.from) {\n  Safer.from = function (value, encodingOrOffset, length) {\n    if (typeof value === 'number') {\n      throw new TypeError('The \"value\" argument must not be of type number. Received type ' + typeof value)\n    }\n    if (value && typeof value.length === 'undefined') {\n      throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type ' + typeof value)\n    }\n    return Buffer(value, encodingOrOffset, length)\n  }\n}\n\nif (!Safer.alloc) {\n  Safer.alloc = function (size, fill, encoding) {\n    if (typeof size !== 'number') {\n      throw new TypeError('The \"size\" argument must be of type number. Received type ' + typeof size)\n    }\n    if (size < 0 || size >= 2 * (1 << 30)) {\n      throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n    }\n    var buf = Buffer(size)\n    if (!fill || fill.length === 0) {\n      buf.fill(0)\n    } else if (typeof encoding === 'string') {\n      buf.fill(fill, encoding)\n    } else {\n      buf.fill(fill)\n    }\n    return buf\n  }\n}\n\nif (!safer.kStringMaxLength) {\n  try {\n    safer.kStringMaxLength = process.binding('buffer').kStringMaxLength\n  } catch (e) {\n    // we can't determine kStringMaxLength in environments where process.binding\n    // is unsupported, so let's not set it\n  }\n}\n\nif (!safer.constants) {\n  safer.constants = {\n    MAX_LENGTH: safer.kMaxLength\n  }\n  if (safer.kStringMaxLength) {\n    safer.constants.MAX_STRING_LENGTH = safer.kStringMaxLength\n  }\n}\n\nmodule.exports = safer\n", "'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar _require = require('buffer'),\n    Buffer = _require.Buffer;\n\nvar _require2 = require('util'),\n    inspect = _require2.inspect;\n\nvar custom = inspect && inspect.custom || 'inspect';\n\nfunction copyBuffer(src, target, offset) {\n  Buffer.prototype.copy.call(src, target, offset);\n}\n\nmodule.exports =\n/*#__PURE__*/\nfunction () {\n  function BufferList() {\n    _classCallCheck(this, BufferList);\n\n    this.head = null;\n    this.tail = null;\n    this.length = 0;\n  }\n\n  _createClass(BufferList, [{\n    key: \"push\",\n    value: function push(v) {\n      var entry = {\n        data: v,\n        next: null\n      };\n      if (this.length > 0) this.tail.next = entry;else this.head = entry;\n      this.tail = entry;\n      ++this.length;\n    }\n  }, {\n    key: \"unshift\",\n    value: function unshift(v) {\n      var entry = {\n        data: v,\n        next: this.head\n      };\n      if (this.length === 0) this.tail = entry;\n      this.head = entry;\n      ++this.length;\n    }\n  }, {\n    key: \"shift\",\n    value: function shift() {\n      if (this.length === 0) return;\n      var ret = this.head.data;\n      if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n      --this.length;\n      return ret;\n    }\n  }, {\n    key: \"clear\",\n    value: function clear() {\n      this.head = this.tail = null;\n      this.length = 0;\n    }\n  }, {\n    key: \"join\",\n    value: function join(s) {\n      if (this.length === 0) return '';\n      var p = this.head;\n      var ret = '' + p.data;\n\n      while (p = p.next) {\n        ret += s + p.data;\n      }\n\n      return ret;\n    }\n  }, {\n    key: \"concat\",\n    value: function concat(n) {\n      if (this.length === 0) return Buffer.alloc(0);\n      var ret = Buffer.allocUnsafe(n >>> 0);\n      var p = this.head;\n      var i = 0;\n\n      while (p) {\n        copyBuffer(p.data, ret, i);\n        i += p.data.length;\n        p = p.next;\n      }\n\n      return ret;\n    } // Consumes a specified amount of bytes or characters from the buffered data.\n\n  }, {\n    key: \"consume\",\n    value: function consume(n, hasStrings) {\n      var ret;\n\n      if (n < this.head.data.length) {\n        // `slice` is the same for buffers and strings.\n        ret = this.head.data.slice(0, n);\n        this.head.data = this.head.data.slice(n);\n      } else if (n === this.head.data.length) {\n        // First chunk is a perfect match.\n        ret = this.shift();\n      } else {\n        // Result spans more than one buffer.\n        ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n      }\n\n      return ret;\n    }\n  }, {\n    key: \"first\",\n    value: function first() {\n      return this.head.data;\n    } // Consumes a specified amount of characters from the buffered data.\n\n  }, {\n    key: \"_getString\",\n    value: function _getString(n) {\n      var p = this.head;\n      var c = 1;\n      var ret = p.data;\n      n -= ret.length;\n\n      while (p = p.next) {\n        var str = p.data;\n        var nb = n > str.length ? str.length : n;\n        if (nb === str.length) ret += str;else ret += str.slice(0, n);\n        n -= nb;\n\n        if (n === 0) {\n          if (nb === str.length) {\n            ++c;\n            if (p.next) this.head = p.next;else this.head = this.tail = null;\n          } else {\n            this.head = p;\n            p.data = str.slice(nb);\n          }\n\n          break;\n        }\n\n        ++c;\n      }\n\n      this.length -= c;\n      return ret;\n    } // Consumes a specified amount of bytes from the buffered data.\n\n  }, {\n    key: \"_getBuffer\",\n    value: function _getBuffer(n) {\n      var ret = Buffer.allocUnsafe(n);\n      var p = this.head;\n      var c = 1;\n      p.data.copy(ret);\n      n -= p.data.length;\n\n      while (p = p.next) {\n        var buf = p.data;\n        var nb = n > buf.length ? buf.length : n;\n        buf.copy(ret, ret.length - n, 0, nb);\n        n -= nb;\n\n        if (n === 0) {\n          if (nb === buf.length) {\n            ++c;\n            if (p.next) this.head = p.next;else this.head = this.tail = null;\n          } else {\n            this.head = p;\n            p.data = buf.slice(nb);\n          }\n\n          break;\n        }\n\n        ++c;\n      }\n\n      this.length -= c;\n      return ret;\n    } // Make sure the linked list only shows the minimal necessary information.\n\n  }, {\n    key: custom,\n    value: function value(_, options) {\n      return inspect(this, _objectSpread({}, options, {\n        // Only inspect one level.\n        depth: 0,\n        // It should not recurse.\n        customInspect: false\n      }));\n    }\n  }]);\n\n  return BufferList;\n}();", "/*\r\nPDFAbstractReference - abstract class for PDF reference\r\n*/\r\n\r\nclass PDFAbstractReference {\r\n  toString() {\r\n    throw new Error('Must be implemented by subclasses');\r\n  }\r\n}\r\n\r\nexport default PDFAbstractReference;\r\n", "/*\r\nPDFTree - abstract base class for name and number tree objects\r\n*/\r\n\r\nimport PDFObject from './object';\r\n\r\nclass PDFTree {\r\n  constructor(options = {}) {\r\n    this._items = {};\r\n    // disable /Limits output for this tree\r\n    this.limits =\r\n      typeof options.limits === 'boolean' ? options.limits : true;\r\n  }\r\n\r\n  add(key, val) {\r\n    return (this._items[key] = val);\r\n  }\r\n\r\n  get(key) {\r\n    return this._items[key];\r\n  }\r\n\r\n  toString() {\r\n    // Needs to be sorted by key\r\n    const sortedKeys = Object.keys(this._items).sort((a, b) =>\r\n      this._compareKeys(a, b)\r\n    );\r\n\r\n    const out = ['<<'];\r\n    if (this.limits && sortedKeys.length > 1) {\r\n      const first = sortedKeys[0],\r\n        last = sortedKeys[sortedKeys.length - 1];\r\n      out.push(\r\n        `  /Limits ${PDFObject.convert([this._dataForKey(first), this._dataForKey(last)])}`\r\n      );\r\n    }\r\n    out.push(`  /${this._keysName()} [`);\r\n    for (let key of sortedKeys) {\r\n      out.push(\r\n        `    ${PDFObject.convert(this._dataForKey(key))} ${PDFObject.convert(\r\n          this._items[key]\r\n        )}`\r\n      );\r\n    }\r\n    out.push(']');\r\n    out.push('>>');\r\n    return out.join('\\n');\r\n  }\r\n\r\n  _compareKeys(/*a, b*/) {\r\n    throw new Error('Must be implemented by subclasses');\r\n  }\r\n\r\n  _keysName() {\r\n    throw new Error('Must be implemented by subclasses');\r\n  }\r\n\r\n  _dataForKey(/*k*/) {\r\n    throw new Error('Must be implemented by subclasses');\r\n  }\r\n}\r\n\r\nexport default PDFTree;\r\n", "/*\r\nPDFObject - converts JavaScript types into their corresponding PDF types.\r\nBy Devon Govett\r\n*/\r\n\r\nimport PDFAbstractReference from './abstract_reference';\r\nimport PDFTree from './tree';\r\n\r\nconst pad = (str, length) => (Array(length + 1).join('0') + str).slice(-length);\r\n\r\nconst escapableRe = /[\\n\\r\\t\\b\\f()\\\\]/g;\r\nconst escapable = {\r\n  '\\n': '\\\\n',\r\n  '\\r': '\\\\r',\r\n  '\\t': '\\\\t',\r\n  '\\b': '\\\\b',\r\n  '\\f': '\\\\f',\r\n  '\\\\': '\\\\\\\\',\r\n  '(': '\\\\(',\r\n  ')': '\\\\)'\r\n};\r\n\r\n// Convert little endian UTF-16 to big endian\r\nconst swapBytes = function(buff) {\r\n  const l = buff.length;\r\n  if (l & 0x01) {\r\n    throw new Error('Buffer length must be even');\r\n  } else {\r\n    for (let i = 0, end = l - 1; i < end; i += 2) {\r\n      const a = buff[i];\r\n      buff[i] = buff[i + 1];\r\n      buff[i + 1] = a;\r\n    }\r\n  }\r\n\r\n  return buff;\r\n};\r\n\r\nclass PDFObject {\r\n  static convert(object, encryptFn = null) {\r\n    // String literals are converted to the PDF name type\r\n    if (typeof object === 'string') {\r\n      return `/${object}`;\r\n\r\n      // String objects are converted to PDF strings (UTF-16)\r\n    } else if (object instanceof String) {\r\n      let string = object;\r\n      // Detect if this is a unicode string\r\n      let isUnicode = false;\r\n      for (let i = 0, end = string.length; i < end; i++) {\r\n        if (string.charCodeAt(i) > 0x7f) {\r\n          isUnicode = true;\r\n          break;\r\n        }\r\n      }\r\n\r\n      // If so, encode it as big endian UTF-16\r\n      let stringBuffer;\r\n      if (isUnicode) {\r\n        stringBuffer = swapBytes(Buffer.from(`\\ufeff${string}`, 'utf16le'));\r\n      } else {\r\n        stringBuffer = Buffer.from(string.valueOf(), 'ascii');\r\n      }\r\n\r\n      // Encrypt the string when necessary\r\n      if (encryptFn) {\r\n        string = encryptFn(stringBuffer).toString('binary');\r\n      } else {\r\n        string = stringBuffer.toString('binary');\r\n      }\r\n\r\n      // Escape characters as required by the spec\r\n      string = string.replace(escapableRe, c => escapable[c]);\r\n\r\n      return `(${string})`;\r\n\r\n      // Buffers are converted to PDF hex strings\r\n    } else if (Buffer.isBuffer(object)) {\r\n      return `<${object.toString('hex')}>`;\r\n    } else if (\r\n      object instanceof PDFAbstractReference ||\r\n      object instanceof PDFTree\r\n    ) {\r\n      return object.toString();\r\n    } else if (object instanceof Date) {\r\n      let string =\r\n        `D:${pad(object.getUTCFullYear(), 4)}` +\r\n        pad(object.getUTCMonth() + 1, 2) +\r\n        pad(object.getUTCDate(), 2) +\r\n        pad(object.getUTCHours(), 2) +\r\n        pad(object.getUTCMinutes(), 2) +\r\n        pad(object.getUTCSeconds(), 2) +\r\n        'Z';\r\n\r\n      // Encrypt the string when necessary\r\n      if (encryptFn) {\r\n        string = encryptFn(Buffer.from(string, 'ascii')).toString('binary');\r\n\r\n        // Escape characters as required by the spec\r\n        string = string.replace(escapableRe, c => escapable[c]);\r\n      }\r\n\r\n      return `(${string})`;\r\n    } else if (Array.isArray(object)) {\r\n      const items = object.map(e => PDFObject.convert(e, encryptFn)).join(' ');\r\n      return `[${items}]`;\r\n    } else if ({}.toString.call(object) === '[object Object]') {\r\n      const out = ['<<'];\r\n      for (let key in object) {\r\n        const val = object[key];\r\n        out.push(`/${key} ${PDFObject.convert(val, encryptFn)}`);\r\n      }\r\n\r\n      out.push('>>');\r\n      return out.join('\\n');\r\n    } else if (typeof object === 'number') {\r\n      return PDFObject.number(object);\r\n    } else {\r\n      return `${object}`;\r\n    }\r\n  }\r\n\r\n  static number(n) {\r\n    if (n > -1e21 && n < 1e21) {\r\n      return Math.round(n * 1e6) / 1e6;\r\n    }\r\n\r\n    throw new Error(`unsupported number: ${n}`);\r\n  }\r\n}\r\n\r\nexport default PDFObject;\r\n", "/*\r\nPDFReference - represents a reference to another object in the PDF object heirarchy\r\nBy Devon Govett\r\n*/\r\n\r\nimport zlib from 'zlib';\r\nimport PDFAbstractReference from './abstract_reference';\r\nimport PDFObject from './object';\r\n\r\nclass PDFReference extends PDFAbstractReference {\r\n  constructor(document, id, data = {}) {\r\n    super();\r\n    this.document = document;\r\n    this.id = id;\r\n    this.data = data;\r\n    this.gen = 0;\r\n    this.compress = this.document.compress && !this.data.Filter;\r\n    this.uncompressedLength = 0;\r\n    this.buffer = [];\r\n  }\r\n\r\n  write(chunk) {\r\n    if (!Buffer.isBuffer(chunk)) {\r\n      chunk = Buffer.from(chunk + '\\n', 'binary');\r\n    }\r\n\r\n    this.uncompressedLength += chunk.length;\r\n    if (this.data.Length == null) {\r\n      this.data.Length = 0;\r\n    }\r\n    this.buffer.push(chunk);\r\n    this.data.Length += chunk.length;\r\n    if (this.compress) {\r\n      return (this.data.Filter = 'FlateDecode');\r\n    }\r\n  }\r\n\r\n  end(chunk) {\r\n    if (chunk) {\r\n      this.write(chunk);\r\n    }\r\n    return this.finalize();\r\n  }\r\n\r\n  finalize() {\r\n    this.offset = this.document._offset;\r\n\r\n    const encryptFn = this.document._security\r\n      ? this.document._security.getEncryptFn(this.id, this.gen)\r\n      : null;\r\n\r\n    if (this.buffer.length) {\r\n      this.buffer = Buffer.concat(this.buffer);\r\n      if (this.compress) {\r\n        this.buffer = zlib.deflateSync(this.buffer);\r\n      }\r\n\r\n      if (encryptFn) {\r\n        this.buffer = encryptFn(this.buffer);\r\n      }\r\n\r\n      this.data.Length = this.buffer.length;\r\n    }\r\n\r\n    this.document._write(`${this.id} ${this.gen} obj`);\r\n    this.document._write(PDFObject.convert(this.data, encryptFn));\r\n\r\n    if (this.buffer.length) {\r\n      this.document._write('stream');\r\n      this.document._write(this.buffer);\r\n\r\n      this.buffer = []; // free up memory\r\n      this.document._write('\\nendstream');\r\n    }\r\n\r\n    this.document._write('endobj');\r\n    this.document._refEnd(this);\r\n  }\r\n  toString() {\r\n    return `${this.id} ${this.gen} R`;\r\n  }\r\n}\r\n\r\nexport default PDFReference;\r\n", "/*\r\nPDFPage - represents a single page in the PDF document\r\nBy Devon Govett\r\n*/\r\n\r\nconst DEFAULT_MARGINS = {\r\n  top: 72,\r\n  left: 72,\r\n  bottom: 72,\r\n  right: 72\r\n};\r\n\r\nconst SIZES = {\r\n  '4A0': [4767.87, 6740.79],\r\n  '2A0': [3370.39, 4767.87],\r\n  A0: [2383.94, 3370.39],\r\n  A1: [1683.78, 2383.94],\r\n  A2: [1190.55, 1683.78],\r\n  A3: [841.89, 1190.55],\r\n  A4: [595.28, 841.89],\r\n  A5: [419.53, 595.28],\r\n  A6: [297.64, 419.53],\r\n  A7: [209.76, 297.64],\r\n  A8: [147.4, 209.76],\r\n  A9: [104.88, 147.4],\r\n  A10: [73.7, 104.88],\r\n  B0: [2834.65, 4008.19],\r\n  B1: [2004.09, 2834.65],\r\n  B2: [1417.32, 2004.09],\r\n  B3: [1000.63, 1417.32],\r\n  B4: [708.66, 1000.63],\r\n  B5: [498.9, 708.66],\r\n  B6: [354.33, 498.9],\r\n  B7: [249.45, 354.33],\r\n  B8: [175.75, 249.45],\r\n  B9: [124.72, 175.75],\r\n  B10: [87.87, 124.72],\r\n  C0: [2599.37, 3676.54],\r\n  C1: [1836.85, 2599.37],\r\n  C2: [1298.27, 1836.85],\r\n  C3: [918.43, 1298.27],\r\n  C4: [649.13, 918.43],\r\n  C5: [459.21, 649.13],\r\n  C6: [323.15, 459.21],\r\n  C7: [229.61, 323.15],\r\n  C8: [161.57, 229.61],\r\n  C9: [113.39, 161.57],\r\n  C10: [79.37, 113.39],\r\n  RA0: [2437.8, 3458.27],\r\n  RA1: [1729.13, 2437.8],\r\n  RA2: [1218.9, 1729.13],\r\n  RA3: [864.57, 1218.9],\r\n  RA4: [609.45, 864.57],\r\n  SRA0: [2551.18, 3628.35],\r\n  SRA1: [1814.17, 2551.18],\r\n  SRA2: [1275.59, 1814.17],\r\n  SRA3: [907.09, 1275.59],\r\n  SRA4: [637.8, 907.09],\r\n  EXECUTIVE: [521.86, 756.0],\r\n  FOLIO: [612.0, 936.0],\r\n  LEGAL: [612.0, 1008.0],\r\n  LETTER: [612.0, 792.0],\r\n  TABLOID: [792.0, 1224.0]\r\n};\r\n\r\nclass PDFPage {\r\n  constructor(document, options = {}) {\r\n    this.document = document;\r\n    this.size = options.size || 'letter';\r\n    this.layout = options.layout || 'portrait';\r\n\r\n    // process margins\r\n    if (typeof options.margin === 'number') {\r\n      this.margins = {\r\n        top: options.margin,\r\n        left: options.margin,\r\n        bottom: options.margin,\r\n        right: options.margin\r\n      };\r\n\r\n      // default to 1 inch margins\r\n    } else {\r\n      this.margins = options.margins || DEFAULT_MARGINS;\r\n    }\r\n\r\n    // calculate page dimensions\r\n    const dimensions = Array.isArray(this.size)\r\n      ? this.size\r\n      : SIZES[this.size.toUpperCase()];\r\n    this.width = dimensions[this.layout === 'portrait' ? 0 : 1];\r\n    this.height = dimensions[this.layout === 'portrait' ? 1 : 0];\r\n\r\n    this.content = this.document.ref();\r\n\r\n    // Initialize the Font, XObject, and ExtGState dictionaries\r\n    this.resources = this.document.ref({\r\n      ProcSet: ['PDF', 'Text', 'ImageB', 'ImageC', 'ImageI']\r\n    });\r\n\r\n    // The page dictionary\r\n    this.dictionary = this.document.ref({\r\n      Type: 'Page',\r\n      Parent: this.document._root.data.Pages,\r\n      MediaBox: [0, 0, this.width, this.height],\r\n      Contents: this.content,\r\n      Resources: this.resources\r\n    });\r\n\r\n    this.markings = [];\r\n  }\r\n\r\n  // Lazily create these objects\r\n  get fonts() {\r\n    const data = this.resources.data;\r\n    return data.Font != null ? data.Font : (data.Font = {});\r\n  }\r\n\r\n  get xobjects() {\r\n    const data = this.resources.data;\r\n    return data.XObject != null ? data.XObject : (data.XObject = {});\r\n  }\r\n\r\n  get ext_gstates() {\r\n    const data = this.resources.data;\r\n    return data.ExtGState != null ? data.ExtGState : (data.ExtGState = {});\r\n  }\r\n\r\n  get patterns() {\r\n    const data = this.resources.data;\r\n    return data.Pattern != null ? data.Pattern : (data.Pattern = {});\r\n  }\r\n\r\n  get colorSpaces() {\r\n    const data = this.resources.data;\r\n    return data.ColorSpace || (data.ColorSpace = {});\r\n  }\r\n\r\n  get annotations() {\r\n    const data = this.dictionary.data;\r\n    return data.Annots != null ? data.Annots : (data.Annots = []);\r\n  }\r\n\r\n  get structParentTreeKey() {\r\n    const data = this.dictionary.data;\r\n    return data.StructParents != null\r\n      ? data.StructParents\r\n      : (data.StructParents = this.document.createStructParentTreeNextKey());\r\n  }\r\n\r\n  maxY() {\r\n    return this.height - this.margins.bottom;\r\n  }\r\n\r\n  write(chunk) {\r\n    return this.content.write(chunk);\r\n  }\r\n\r\n  end() {\r\n    this.dictionary.end();\r\n    this.resources.end();\r\n    return this.content.end();\r\n  }\r\n}\r\n\r\nexport default PDFPage;\r\n", "/*\r\nPDFNameTree - represents a name tree object\r\n*/\r\n\r\nimport PDFTree from \"./tree\";\r\n\r\nclass PDFNameTree extends PDFTree {\r\n  _compareKeys(a, b) {\r\n    return a.localeCompare(b);\r\n  }\r\n\r\n  _keysName() {\r\n    return \"Names\";\r\n  }\r\n\r\n  _dataForKey(k) {\r\n    return new String(k);\r\n  }\r\n}\r\n\r\nexport default PDFNameTree;\r\n", "/**\r\n * Check if value is in a range group.\r\n * @param {number} value\r\n * @param {number[]} rangeGroup\r\n * @returns {boolean}\r\n */\r\nfunction inRange(value, rangeGroup) {\r\n  if (value < rangeGroup[0]) return false;\r\n  let startRange = 0;\r\n  let endRange = rangeGroup.length / 2;\r\n  while (startRange <= endRange) {\r\n    const middleRange = Math.floor((startRange + endRange) / 2);\r\n\r\n    // actual array index\r\n    const arrayIndex = middleRange * 2;\r\n\r\n    // Check if value is in range pointed by actual index\r\n    if (\r\n      value >= rangeGroup[arrayIndex] &&\r\n      value <= rangeGroup[arrayIndex + 1]\r\n    ) {\r\n      return true;\r\n    }\r\n\r\n    if (value > rangeGroup[arrayIndex + 1]) {\r\n      // Search Right Side Of Array\r\n      startRange = middleRange + 1;\r\n    } else {\r\n      // Search Left Side Of Array\r\n      endRange = middleRange - 1;\r\n    }\r\n  }\r\n  return false;\r\n}\r\n\r\nexport { inRange };\r\n", "import { inRange } from './util';\r\n\r\n// prettier-ignore-start\r\n/**\r\n * A.1 Unassigned code points in Unicode 3.2\r\n * @link https://tools.ietf.org/html/rfc3454#appendix-A.1\r\n */\r\nconst unassigned_code_points = [\r\n  0x0221,\r\n  0x0221,\r\n  0x0234,\r\n  0x024f,\r\n  0x02ae,\r\n  0x02af,\r\n  0x02ef,\r\n  0x02ff,\r\n  0x0350,\r\n  0x035f,\r\n  0x0370,\r\n  0x0373,\r\n  0x0376,\r\n  0x0379,\r\n  0x037b,\r\n  0x037d,\r\n  0x037f,\r\n  0x0383,\r\n  0x038b,\r\n  0x038b,\r\n  0x038d,\r\n  0x038d,\r\n  0x03a2,\r\n  0x03a2,\r\n  0x03cf,\r\n  0x03cf,\r\n  0x03f7,\r\n  0x03ff,\r\n  0x0487,\r\n  0x0487,\r\n  0x04cf,\r\n  0x04cf,\r\n  0x04f6,\r\n  0x04f7,\r\n  0x04fa,\r\n  0x04ff,\r\n  0x0510,\r\n  0x0530,\r\n  0x0557,\r\n  0x0558,\r\n  0x0560,\r\n  0x0560,\r\n  0x0588,\r\n  0x0588,\r\n  0x058b,\r\n  0x0590,\r\n  0x05a2,\r\n  0x05a2,\r\n  0x05ba,\r\n  0x05ba,\r\n  0x05c5,\r\n  0x05cf,\r\n  0x05eb,\r\n  0x05ef,\r\n  0x05f5,\r\n  0x060b,\r\n  0x060d,\r\n  0x061a,\r\n  0x061c,\r\n  0x061e,\r\n  0x0620,\r\n  0x0620,\r\n  0x063b,\r\n  0x063f,\r\n  0x0656,\r\n  0x065f,\r\n  0x06ee,\r\n  0x06ef,\r\n  0x06ff,\r\n  0x06ff,\r\n  0x070e,\r\n  0x070e,\r\n  0x072d,\r\n  0x072f,\r\n  0x074b,\r\n  0x077f,\r\n  0x07b2,\r\n  0x0900,\r\n  0x0904,\r\n  0x0904,\r\n  0x093a,\r\n  0x093b,\r\n  0x094e,\r\n  0x094f,\r\n  0x0955,\r\n  0x0957,\r\n  0x0971,\r\n  0x0980,\r\n  0x0984,\r\n  0x0984,\r\n  0x098d,\r\n  0x098e,\r\n  0x0991,\r\n  0x0992,\r\n  0x09a9,\r\n  0x09a9,\r\n  0x09b1,\r\n  0x09b1,\r\n  0x09b3,\r\n  0x09b5,\r\n  0x09ba,\r\n  0x09bb,\r\n  0x09bd,\r\n  0x09bd,\r\n  0x09c5,\r\n  0x09c6,\r\n  0x09c9,\r\n  0x09ca,\r\n  0x09ce,\r\n  0x09d6,\r\n  0x09d8,\r\n  0x09db,\r\n  0x09de,\r\n  0x09de,\r\n  0x09e4,\r\n  0x09e5,\r\n  0x09fb,\r\n  0x0a01,\r\n  0x0a03,\r\n  0x0a04,\r\n  0x0a0b,\r\n  0x0a0e,\r\n  0x0a11,\r\n  0x0a12,\r\n  0x0a29,\r\n  0x0a29,\r\n  0x0a31,\r\n  0x0a31,\r\n  0x0a34,\r\n  0x0a34,\r\n  0x0a37,\r\n  0x0a37,\r\n  0x0a3a,\r\n  0x0a3b,\r\n  0x0a3d,\r\n  0x0a3d,\r\n  0x0a43,\r\n  0x0a46,\r\n  0x0a49,\r\n  0x0a4a,\r\n  0x0a4e,\r\n  0x0a58,\r\n  0x0a5d,\r\n  0x0a5d,\r\n  0x0a5f,\r\n  0x0a65,\r\n  0x0a75,\r\n  0x0a80,\r\n  0x0a84,\r\n  0x0a84,\r\n  0x0a8c,\r\n  0x0a8c,\r\n  0x0a8e,\r\n  0x0a8e,\r\n  0x0a92,\r\n  0x0a92,\r\n  0x0aa9,\r\n  0x0aa9,\r\n  0x0ab1,\r\n  0x0ab1,\r\n  0x0ab4,\r\n  0x0ab4,\r\n  0x0aba,\r\n  0x0abb,\r\n  0x0ac6,\r\n  0x0ac6,\r\n  0x0aca,\r\n  0x0aca,\r\n  0x0ace,\r\n  0x0acf,\r\n  0x0ad1,\r\n  0x0adf,\r\n  0x0ae1,\r\n  0x0ae5,\r\n  0x0af0,\r\n  0x0b00,\r\n  0x0b04,\r\n  0x0b04,\r\n  0x0b0d,\r\n  0x0b0e,\r\n  0x0b11,\r\n  0x0b12,\r\n  0x0b29,\r\n  0x0b29,\r\n  0x0b31,\r\n  0x0b31,\r\n  0x0b34,\r\n  0x0b35,\r\n  0x0b3a,\r\n  0x0b3b,\r\n  0x0b44,\r\n  0x0b46,\r\n  0x0b49,\r\n  0x0b4a,\r\n  0x0b4e,\r\n  0x0b55,\r\n  0x0b58,\r\n  0x0b5b,\r\n  0x0b5e,\r\n  0x0b5e,\r\n  0x0b62,\r\n  0x0b65,\r\n  0x0b71,\r\n  0x0b81,\r\n  0x0b84,\r\n  0x0b84,\r\n  0x0b8b,\r\n  0x0b8d,\r\n  0x0b91,\r\n  0x0b91,\r\n  0x0b96,\r\n  0x0b98,\r\n  0x0b9b,\r\n  0x0b9b,\r\n  0x0b9d,\r\n  0x0b9d,\r\n  0x0ba0,\r\n  0x0ba2,\r\n  0x0ba5,\r\n  0x0ba7,\r\n  0x0bab,\r\n  0x0bad,\r\n  0x0bb6,\r\n  0x0bb6,\r\n  0x0bba,\r\n  0x0bbd,\r\n  0x0bc3,\r\n  0x0bc5,\r\n  0x0bc9,\r\n  0x0bc9,\r\n  0x0bce,\r\n  0x0bd6,\r\n  0x0bd8,\r\n  0x0be6,\r\n  0x0bf3,\r\n  0x0c00,\r\n  0x0c04,\r\n  0x0c04,\r\n  0x0c0d,\r\n  0x0c0d,\r\n  0x0c11,\r\n  0x0c11,\r\n  0x0c29,\r\n  0x0c29,\r\n  0x0c34,\r\n  0x0c34,\r\n  0x0c3a,\r\n  0x0c3d,\r\n  0x0c45,\r\n  0x0c45,\r\n  0x0c49,\r\n  0x0c49,\r\n  0x0c4e,\r\n  0x0c54,\r\n  0x0c57,\r\n  0x0c5f,\r\n  0x0c62,\r\n  0x0c65,\r\n  0x0c70,\r\n  0x0c81,\r\n  0x0c84,\r\n  0x0c84,\r\n  0x0c8d,\r\n  0x0c8d,\r\n  0x0c91,\r\n  0x0c91,\r\n  0x0ca9,\r\n  0x0ca9,\r\n  0x0cb4,\r\n  0x0cb4,\r\n  0x0cba,\r\n  0x0cbd,\r\n  0x0cc5,\r\n  0x0cc5,\r\n  0x0cc9,\r\n  0x0cc9,\r\n  0x0cce,\r\n  0x0cd4,\r\n  0x0cd7,\r\n  0x0cdd,\r\n  0x0cdf,\r\n  0x0cdf,\r\n  0x0ce2,\r\n  0x0ce5,\r\n  0x0cf0,\r\n  0x0d01,\r\n  0x0d04,\r\n  0x0d04,\r\n  0x0d0d,\r\n  0x0d0d,\r\n  0x0d11,\r\n  0x0d11,\r\n  0x0d29,\r\n  0x0d29,\r\n  0x0d3a,\r\n  0x0d3d,\r\n  0x0d44,\r\n  0x0d45,\r\n  0x0d49,\r\n  0x0d49,\r\n  0x0d4e,\r\n  0x0d56,\r\n  0x0d58,\r\n  0x0d5f,\r\n  0x0d62,\r\n  0x0d65,\r\n  0x0d70,\r\n  0x0d81,\r\n  0x0d84,\r\n  0x0d84,\r\n  0x0d97,\r\n  0x0d99,\r\n  0x0db2,\r\n  0x0db2,\r\n  0x0dbc,\r\n  0x0dbc,\r\n  0x0dbe,\r\n  0x0dbf,\r\n  0x0dc7,\r\n  0x0dc9,\r\n  0x0dcb,\r\n  0x0dce,\r\n  0x0dd5,\r\n  0x0dd5,\r\n  0x0dd7,\r\n  0x0dd7,\r\n  0x0de0,\r\n  0x0df1,\r\n  0x0df5,\r\n  0x0e00,\r\n  0x0e3b,\r\n  0x0e3e,\r\n  0x0e5c,\r\n  0x0e80,\r\n  0x0e83,\r\n  0x0e83,\r\n  0x0e85,\r\n  0x0e86,\r\n  0x0e89,\r\n  0x0e89,\r\n  0x0e8b,\r\n  0x0e8c,\r\n  0x0e8e,\r\n  0x0e93,\r\n  0x0e98,\r\n  0x0e98,\r\n  0x0ea0,\r\n  0x0ea0,\r\n  0x0ea4,\r\n  0x0ea4,\r\n  0x0ea6,\r\n  0x0ea6,\r\n  0x0ea8,\r\n  0x0ea9,\r\n  0x0eac,\r\n  0x0eac,\r\n  0x0eba,\r\n  0x0eba,\r\n  0x0ebe,\r\n  0x0ebf,\r\n  0x0ec5,\r\n  0x0ec5,\r\n  0x0ec7,\r\n  0x0ec7,\r\n  0x0ece,\r\n  0x0ecf,\r\n  0x0eda,\r\n  0x0edb,\r\n  0x0ede,\r\n  0x0eff,\r\n  0x0f48,\r\n  0x0f48,\r\n  0x0f6b,\r\n  0x0f70,\r\n  0x0f8c,\r\n  0x0f8f,\r\n  0x0f98,\r\n  0x0f98,\r\n  0x0fbd,\r\n  0x0fbd,\r\n  0x0fcd,\r\n  0x0fce,\r\n  0x0fd0,\r\n  0x0fff,\r\n  0x1022,\r\n  0x1022,\r\n  0x1028,\r\n  0x1028,\r\n  0x102b,\r\n  0x102b,\r\n  0x1033,\r\n  0x1035,\r\n  0x103a,\r\n  0x103f,\r\n  0x105a,\r\n  0x109f,\r\n  0x10c6,\r\n  0x10cf,\r\n  0x10f9,\r\n  0x10fa,\r\n  0x10fc,\r\n  0x10ff,\r\n  0x115a,\r\n  0x115e,\r\n  0x11a3,\r\n  0x11a7,\r\n  0x11fa,\r\n  0x11ff,\r\n  0x1207,\r\n  0x1207,\r\n  0x1247,\r\n  0x1247,\r\n  0x1249,\r\n  0x1249,\r\n  0x124e,\r\n  0x124f,\r\n  0x1257,\r\n  0x1257,\r\n  0x1259,\r\n  0x1259,\r\n  0x125e,\r\n  0x125f,\r\n  0x1287,\r\n  0x1287,\r\n  0x1289,\r\n  0x1289,\r\n  0x128e,\r\n  0x128f,\r\n  0x12af,\r\n  0x12af,\r\n  0x12b1,\r\n  0x12b1,\r\n  0x12b6,\r\n  0x12b7,\r\n  0x12bf,\r\n  0x12bf,\r\n  0x12c1,\r\n  0x12c1,\r\n  0x12c6,\r\n  0x12c7,\r\n  0x12cf,\r\n  0x12cf,\r\n  0x12d7,\r\n  0x12d7,\r\n  0x12ef,\r\n  0x12ef,\r\n  0x130f,\r\n  0x130f,\r\n  0x1311,\r\n  0x1311,\r\n  0x1316,\r\n  0x1317,\r\n  0x131f,\r\n  0x131f,\r\n  0x1347,\r\n  0x1347,\r\n  0x135b,\r\n  0x1360,\r\n  0x137d,\r\n  0x139f,\r\n  0x13f5,\r\n  0x1400,\r\n  0x1677,\r\n  0x167f,\r\n  0x169d,\r\n  0x169f,\r\n  0x16f1,\r\n  0x16ff,\r\n  0x170d,\r\n  0x170d,\r\n  0x1715,\r\n  0x171f,\r\n  0x1737,\r\n  0x173f,\r\n  0x1754,\r\n  0x175f,\r\n  0x176d,\r\n  0x176d,\r\n  0x1771,\r\n  0x1771,\r\n  0x1774,\r\n  0x177f,\r\n  0x17dd,\r\n  0x17df,\r\n  0x17ea,\r\n  0x17ff,\r\n  0x180f,\r\n  0x180f,\r\n  0x181a,\r\n  0x181f,\r\n  0x1878,\r\n  0x187f,\r\n  0x18aa,\r\n  0x1dff,\r\n  0x1e9c,\r\n  0x1e9f,\r\n  0x1efa,\r\n  0x1eff,\r\n  0x1f16,\r\n  0x1f17,\r\n  0x1f1e,\r\n  0x1f1f,\r\n  0x1f46,\r\n  0x1f47,\r\n  0x1f4e,\r\n  0x1f4f,\r\n  0x1f58,\r\n  0x1f58,\r\n  0x1f5a,\r\n  0x1f5a,\r\n  0x1f5c,\r\n  0x1f5c,\r\n  0x1f5e,\r\n  0x1f5e,\r\n  0x1f7e,\r\n  0x1f7f,\r\n  0x1fb5,\r\n  0x1fb5,\r\n  0x1fc5,\r\n  0x1fc5,\r\n  0x1fd4,\r\n  0x1fd5,\r\n  0x1fdc,\r\n  0x1fdc,\r\n  0x1ff0,\r\n  0x1ff1,\r\n  0x1ff5,\r\n  0x1ff5,\r\n  0x1fff,\r\n  0x1fff,\r\n  0x2053,\r\n  0x2056,\r\n  0x2058,\r\n  0x205e,\r\n  0x2064,\r\n  0x2069,\r\n  0x2072,\r\n  0x2073,\r\n  0x208f,\r\n  0x209f,\r\n  0x20b2,\r\n  0x20cf,\r\n  0x20eb,\r\n  0x20ff,\r\n  0x213b,\r\n  0x213c,\r\n  0x214c,\r\n  0x2152,\r\n  0x2184,\r\n  0x218f,\r\n  0x23cf,\r\n  0x23ff,\r\n  0x2427,\r\n  0x243f,\r\n  0x244b,\r\n  0x245f,\r\n  0x24ff,\r\n  0x24ff,\r\n  0x2614,\r\n  0x2615,\r\n  0x2618,\r\n  0x2618,\r\n  0x267e,\r\n  0x267f,\r\n  0x268a,\r\n  0x2700,\r\n  0x2705,\r\n  0x2705,\r\n  0x270a,\r\n  0x270b,\r\n  0x2728,\r\n  0x2728,\r\n  0x274c,\r\n  0x274c,\r\n  0x274e,\r\n  0x274e,\r\n  0x2753,\r\n  0x2755,\r\n  0x2757,\r\n  0x2757,\r\n  0x275f,\r\n  0x2760,\r\n  0x2795,\r\n  0x2797,\r\n  0x27b0,\r\n  0x27b0,\r\n  0x27bf,\r\n  0x27cf,\r\n  0x27ec,\r\n  0x27ef,\r\n  0x2b00,\r\n  0x2e7f,\r\n  0x2e9a,\r\n  0x2e9a,\r\n  0x2ef4,\r\n  0x2eff,\r\n  0x2fd6,\r\n  0x2fef,\r\n  0x2ffc,\r\n  0x2fff,\r\n  0x3040,\r\n  0x3040,\r\n  0x3097,\r\n  0x3098,\r\n  0x3100,\r\n  0x3104,\r\n  0x312d,\r\n  0x3130,\r\n  0x318f,\r\n  0x318f,\r\n  0x31b8,\r\n  0x31ef,\r\n  0x321d,\r\n  0x321f,\r\n  0x3244,\r\n  0x3250,\r\n  0x327c,\r\n  0x327e,\r\n  0x32cc,\r\n  0x32cf,\r\n  0x32ff,\r\n  0x32ff,\r\n  0x3377,\r\n  0x337a,\r\n  0x33de,\r\n  0x33df,\r\n  0x33ff,\r\n  0x33ff,\r\n  0x4db6,\r\n  0x4dff,\r\n  0x9fa6,\r\n  0x9fff,\r\n  0xa48d,\r\n  0xa48f,\r\n  0xa4c7,\r\n  0xabff,\r\n  0xd7a4,\r\n  0xd7ff,\r\n  0xfa2e,\r\n  0xfa2f,\r\n  0xfa6b,\r\n  0xfaff,\r\n  0xfb07,\r\n  0xfb12,\r\n  0xfb18,\r\n  0xfb1c,\r\n  0xfb37,\r\n  0xfb37,\r\n  0xfb3d,\r\n  0xfb3d,\r\n  0xfb3f,\r\n  0xfb3f,\r\n  0xfb42,\r\n  0xfb42,\r\n  0xfb45,\r\n  0xfb45,\r\n  0xfbb2,\r\n  0xfbd2,\r\n  0xfd40,\r\n  0xfd4f,\r\n  0xfd90,\r\n  0xfd91,\r\n  0xfdc8,\r\n  0xfdcf,\r\n  0xfdfd,\r\n  0xfdff,\r\n  0xfe10,\r\n  0xfe1f,\r\n  0xfe24,\r\n  0xfe2f,\r\n  0xfe47,\r\n  0xfe48,\r\n  0xfe53,\r\n  0xfe53,\r\n  0xfe67,\r\n  0xfe67,\r\n  0xfe6c,\r\n  0xfe6f,\r\n  0xfe75,\r\n  0xfe75,\r\n  0xfefd,\r\n  0xfefe,\r\n  0xff00,\r\n  0xff00,\r\n  0xffbf,\r\n  0xffc1,\r\n  0xffc8,\r\n  0xffc9,\r\n  0xffd0,\r\n  0xffd1,\r\n  0xffd8,\r\n  0xffd9,\r\n  0xffdd,\r\n  0xffdf,\r\n  0xffe7,\r\n  0xffe7,\r\n  0xffef,\r\n  0xfff8,\r\n  0x10000,\r\n  0x102ff,\r\n  0x1031f,\r\n  0x1031f,\r\n  0x10324,\r\n  0x1032f,\r\n  0x1034b,\r\n  0x103ff,\r\n  0x10426,\r\n  0x10427,\r\n  0x1044e,\r\n  0x1cfff,\r\n  0x1d0f6,\r\n  0x1d0ff,\r\n  0x1d127,\r\n  0x1d129,\r\n  0x1d1de,\r\n  0x1d3ff,\r\n  0x1d455,\r\n  0x1d455,\r\n  0x1d49d,\r\n  0x1d49d,\r\n  0x1d4a0,\r\n  0x1d4a1,\r\n  0x1d4a3,\r\n  0x1d4a4,\r\n  0x1d4a7,\r\n  0x1d4a8,\r\n  0x1d4ad,\r\n  0x1d4ad,\r\n  0x1d4ba,\r\n  0x1d4ba,\r\n  0x1d4bc,\r\n  0x1d4bc,\r\n  0x1d4c1,\r\n  0x1d4c1,\r\n  0x1d4c4,\r\n  0x1d4c4,\r\n  0x1d506,\r\n  0x1d506,\r\n  0x1d50b,\r\n  0x1d50c,\r\n  0x1d515,\r\n  0x1d515,\r\n  0x1d51d,\r\n  0x1d51d,\r\n  0x1d53a,\r\n  0x1d53a,\r\n  0x1d53f,\r\n  0x1d53f,\r\n  0x1d545,\r\n  0x1d545,\r\n  0x1d547,\r\n  0x1d549,\r\n  0x1d551,\r\n  0x1d551,\r\n  0x1d6a4,\r\n  0x1d6a7,\r\n  0x1d7ca,\r\n  0x1d7cd,\r\n  0x1d800,\r\n  0x1fffd,\r\n  0x2a6d7,\r\n  0x2f7ff,\r\n  0x2fa1e,\r\n  0x2fffd,\r\n  0x30000,\r\n  0x3fffd,\r\n  0x40000,\r\n  0x4fffd,\r\n  0x50000,\r\n  0x5fffd,\r\n  0x60000,\r\n  0x6fffd,\r\n  0x70000,\r\n  0x7fffd,\r\n  0x80000,\r\n  0x8fffd,\r\n  0x90000,\r\n  0x9fffd,\r\n  0xa0000,\r\n  0xafffd,\r\n  0xb0000,\r\n  0xbfffd,\r\n  0xc0000,\r\n  0xcfffd,\r\n  0xd0000,\r\n  0xdfffd,\r\n  0xe0000,\r\n  0xe0000,\r\n  0xe0002,\r\n  0xe001f,\r\n  0xe0080,\r\n  0xefffd\r\n];\r\n// prettier-ignore-end\r\n\r\nconst isUnassignedCodePoint = character =>\r\n  inRange(character, unassigned_code_points);\r\n\r\n// prettier-ignore-start\r\n/**\r\n * B.1 Commonly mapped to nothing\r\n * @link https://tools.ietf.org/html/rfc3454#appendix-B.1\r\n */\r\nconst commonly_mapped_to_nothing = [\r\n  0x00ad,\r\n  0x00ad,\r\n  0x034f,\r\n  0x034f,\r\n  0x1806,\r\n  0x1806,\r\n  0x180b,\r\n  0x180b,\r\n  0x180c,\r\n  0x180c,\r\n  0x180d,\r\n  0x180d,\r\n  0x200b,\r\n  0x200b,\r\n  0x200c,\r\n  0x200c,\r\n  0x200d,\r\n  0x200d,\r\n  0x2060,\r\n  0x2060,\r\n  0xfe00,\r\n  0xfe00,\r\n  0xfe01,\r\n  0xfe01,\r\n  0xfe02,\r\n  0xfe02,\r\n  0xfe03,\r\n  0xfe03,\r\n  0xfe04,\r\n  0xfe04,\r\n  0xfe05,\r\n  0xfe05,\r\n  0xfe06,\r\n  0xfe06,\r\n  0xfe07,\r\n  0xfe07,\r\n  0xfe08,\r\n  0xfe08,\r\n  0xfe09,\r\n  0xfe09,\r\n  0xfe0a,\r\n  0xfe0a,\r\n  0xfe0b,\r\n  0xfe0b,\r\n  0xfe0c,\r\n  0xfe0c,\r\n  0xfe0d,\r\n  0xfe0d,\r\n  0xfe0e,\r\n  0xfe0e,\r\n  0xfe0f,\r\n  0xfe0f,\r\n  0xfeff,\r\n  0xfeff\r\n];\r\n// prettier-ignore-end\r\n\r\nconst isCommonlyMappedToNothing = character =>\r\n  inRange(character, commonly_mapped_to_nothing);\r\n\r\n// prettier-ignore-start\r\n/**\r\n * C.1.2 Non-ASCII space characters\r\n * @link https://tools.ietf.org/html/rfc3454#appendix-C.1.2\r\n */\r\nconst non_ASCII_space_characters = [\r\n  0x00a0,\r\n  0x00a0 /* NO-BREAK SPACE */,\r\n  0x1680,\r\n  0x1680 /* OGHAM SPACE MARK */,\r\n  0x2000,\r\n  0x2000 /* EN QUAD */,\r\n  0x2001,\r\n  0x2001 /* EM QUAD */,\r\n  0x2002,\r\n  0x2002 /* EN SPACE */,\r\n  0x2003,\r\n  0x2003 /* EM SPACE */,\r\n  0x2004,\r\n  0x2004 /* THREE-PER-EM SPACE */,\r\n  0x2005,\r\n  0x2005 /* FOUR-PER-EM SPACE */,\r\n  0x2006,\r\n  0x2006 /* SIX-PER-EM SPACE */,\r\n  0x2007,\r\n  0x2007 /* FIGURE SPACE */,\r\n  0x2008,\r\n  0x2008 /* PUNCTUATION SPACE */,\r\n  0x2009,\r\n  0x2009 /* THIN SPACE */,\r\n  0x200a,\r\n  0x200a /* HAIR SPACE */,\r\n  0x200b,\r\n  0x200b /* ZERO WIDTH SPACE */,\r\n  0x202f,\r\n  0x202f /* NARROW NO-BREAK SPACE */,\r\n  0x205f,\r\n  0x205f /* MEDIUM MATHEMATICAL SPACE */,\r\n  0x3000,\r\n  0x3000 /* IDEOGRAPHIC SPACE */\r\n];\r\n// prettier-ignore-end\r\n\r\nconst isNonASCIISpaceCharacter = character =>\r\n  inRange(character, non_ASCII_space_characters);\r\n\r\n// prettier-ignore-start\r\nconst non_ASCII_controls_characters = [\r\n  /**\r\n   * C.2.2 Non-ASCII control characters\r\n   * @link https://tools.ietf.org/html/rfc3454#appendix-C.2.2\r\n   */\r\n  0x0080,\r\n  0x009f /* [CONTROL CHARACTERS] */,\r\n  0x06dd,\r\n  0x06dd /* ARABIC END OF AYAH */,\r\n  0x070f,\r\n  0x070f /* SYRIAC ABBREVIATION MARK */,\r\n  0x180e,\r\n  0x180e /* MONGOLIAN VOWEL SEPARATOR */,\r\n  0x200c,\r\n  0x200c /* ZERO WIDTH NON-JOINER */,\r\n  0x200d,\r\n  0x200d /* ZERO WIDTH JOINER */,\r\n  0x2028,\r\n  0x2028 /* LINE SEPARATOR */,\r\n  0x2029,\r\n  0x2029 /* PARAGRAPH SEPARATOR */,\r\n  0x2060,\r\n  0x2060 /* WORD JOINER */,\r\n  0x2061,\r\n  0x2061 /* FUNCTION APPLICATION */,\r\n  0x2062,\r\n  0x2062 /* INVISIBLE TIMES */,\r\n  0x2063,\r\n  0x2063 /* INVISIBLE SEPARATOR */,\r\n  0x206a,\r\n  0x206f /* [CONTROL CHARACTERS] */,\r\n  0xfeff,\r\n  0xfeff /* ZERO WIDTH NO-BREAK SPACE */,\r\n  0xfff9,\r\n  0xfffc /* [CONTROL CHARACTERS] */,\r\n  0x1d173,\r\n  0x1d17a /* [MUSICAL CONTROL CHARACTERS] */\r\n];\r\n\r\nconst non_character_codepoints = [\r\n  /**\r\n   * C.4 Non-character code points\r\n   * @link https://tools.ietf.org/html/rfc3454#appendix-C.4\r\n   */\r\n  0xfdd0,\r\n  0xfdef /* [NONCHARACTER CODE POINTS] */,\r\n  0xfffe,\r\n  0xffff /* [NONCHARACTER CODE POINTS] */,\r\n  0x1fffe,\r\n  0x1ffff /* [NONCHARACTER CODE POINTS] */,\r\n  0x2fffe,\r\n  0x2ffff /* [NONCHARACTER CODE POINTS] */,\r\n  0x3fffe,\r\n  0x3ffff /* [NONCHARACTER CODE POINTS] */,\r\n  0x4fffe,\r\n  0x4ffff /* [NONCHARACTER CODE POINTS] */,\r\n  0x5fffe,\r\n  0x5ffff /* [NONCHARACTER CODE POINTS] */,\r\n  0x6fffe,\r\n  0x6ffff /* [NONCHARACTER CODE POINTS] */,\r\n  0x7fffe,\r\n  0x7ffff /* [NONCHARACTER CODE POINTS] */,\r\n  0x8fffe,\r\n  0x8ffff /* [NONCHARACTER CODE POINTS] */,\r\n  0x9fffe,\r\n  0x9ffff /* [NONCHARACTER CODE POINTS] */,\r\n  0xafffe,\r\n  0xaffff /* [NONCHARACTER CODE POINTS] */,\r\n  0xbfffe,\r\n  0xbffff /* [NONCHARACTER CODE POINTS] */,\r\n  0xcfffe,\r\n  0xcffff /* [NONCHARACTER CODE POINTS] */,\r\n  0xdfffe,\r\n  0xdffff /* [NONCHARACTER CODE POINTS] */,\r\n  0xefffe,\r\n  0xeffff /* [NONCHARACTER CODE POINTS] */,\r\n  0x10fffe,\r\n  0x10ffff /* [NONCHARACTER CODE POINTS] */\r\n];\r\n\r\n/**\r\n * 2.3.  Prohibited Output\r\n */\r\nconst prohibited_characters = [\r\n  /**\r\n   * C.2.1 ASCII control characters\r\n   * @link https://tools.ietf.org/html/rfc3454#appendix-C.2.1\r\n   */\r\n  0,\r\n  0x001f /* [CONTROL CHARACTERS] */,\r\n  0x007f,\r\n  0x007f /* DELETE */,\r\n\r\n  /**\r\n   * C.8 Change display properties or are deprecated\r\n   * @link https://tools.ietf.org/html/rfc3454#appendix-C.8\r\n   */\r\n  0x0340,\r\n  0x0340 /* COMBINING GRAVE TONE MARK */,\r\n  0x0341,\r\n  0x0341 /* COMBINING ACUTE TONE MARK */,\r\n  0x200e,\r\n  0x200e /* LEFT-TO-RIGHT MARK */,\r\n  0x200f,\r\n  0x200f /* RIGHT-TO-LEFT MARK */,\r\n  0x202a,\r\n  0x202a /* LEFT-TO-RIGHT EMBEDDING */,\r\n  0x202b,\r\n  0x202b /* RIGHT-TO-LEFT EMBEDDING */,\r\n  0x202c,\r\n  0x202c /* POP DIRECTIONAL FORMATTING */,\r\n  0x202d,\r\n  0x202d /* LEFT-TO-RIGHT OVERRIDE */,\r\n  0x202e,\r\n  0x202e /* RIGHT-TO-LEFT OVERRIDE */,\r\n  0x206a,\r\n  0x206a /* INHIBIT SYMMETRIC SWAPPING */,\r\n  0x206b,\r\n  0x206b /* ACTIVATE SYMMETRIC SWAPPING */,\r\n  0x206c,\r\n  0x206c /* INHIBIT ARABIC FORM SHAPING */,\r\n  0x206d,\r\n  0x206d /* ACTIVATE ARABIC FORM SHAPING */,\r\n  0x206e,\r\n  0x206e /* NATIONAL DIGIT SHAPES */,\r\n  0x206f,\r\n  0x206f /* NOMINAL DIGIT SHAPES */,\r\n\r\n  /**\r\n   * C.7 Inappropriate for canonical representation\r\n   * @link https://tools.ietf.org/html/rfc3454#appendix-C.7\r\n   */\r\n  0x2ff0,\r\n  0x2ffb /* [IDEOGRAPHIC DESCRIPTION CHARACTERS] */,\r\n\r\n  /**\r\n   * C.5 Surrogate codes\r\n   * @link https://tools.ietf.org/html/rfc3454#appendix-C.5\r\n   */\r\n  0xd800,\r\n  0xdfff,\r\n\r\n  /**\r\n   * C.3 Private use\r\n   * @link https://tools.ietf.org/html/rfc3454#appendix-C.3\r\n   */\r\n  0xe000,\r\n  0xf8ff /* [PRIVATE USE, PLANE 0] */,\r\n\r\n  /**\r\n   * C.6 Inappropriate for plain text\r\n   * @link https://tools.ietf.org/html/rfc3454#appendix-C.6\r\n   */\r\n  0xfff9,\r\n  0xfff9 /* INTERLINEAR ANNOTATION ANCHOR */,\r\n  0xfffa,\r\n  0xfffa /* INTERLINEAR ANNOTATION SEPARATOR */,\r\n  0xfffb,\r\n  0xfffb /* INTERLINEAR ANNOTATION TERMINATOR */,\r\n  0xfffc,\r\n  0xfffc /* OBJECT REPLACEMENT CHARACTER */,\r\n  0xfffd,\r\n  0xfffd /* REPLACEMENT CHARACTER */,\r\n\r\n  /**\r\n   * C.9 Tagging characters\r\n   * @link https://tools.ietf.org/html/rfc3454#appendix-C.9\r\n   */\r\n  0xe0001,\r\n  0xe0001 /* LANGUAGE TAG */,\r\n  0xe0020,\r\n  0xe007f /* [TAGGING CHARACTERS] */,\r\n\r\n  /**\r\n   * C.3 Private use\r\n   * @link https://tools.ietf.org/html/rfc3454#appendix-C.3\r\n   */\r\n\r\n  0xf0000,\r\n  0xffffd /* [PRIVATE USE, PLANE 15] */,\r\n  0x100000,\r\n  0x10fffd /* [PRIVATE USE, PLANE 16] */\r\n];\r\n// prettier-ignore-end\r\n\r\nconst isProhibitedCharacter = character =>\r\n  inRange(character, non_ASCII_space_characters) ||\r\n  inRange(character, prohibited_characters) ||\r\n  inRange(character, non_ASCII_controls_characters) ||\r\n  inRange(character, non_character_codepoints);\r\n\r\n// prettier-ignore-start\r\n/**\r\n * D.1 Characters with bidirectional property \"R\" or \"AL\"\r\n * @link https://tools.ietf.org/html/rfc3454#appendix-D.1\r\n */\r\nconst bidirectional_r_al = [\r\n  0x05be,\r\n  0x05be,\r\n  0x05c0,\r\n  0x05c0,\r\n  0x05c3,\r\n  0x05c3,\r\n  0x05d0,\r\n  0x05ea,\r\n  0x05f0,\r\n  0x05f4,\r\n  0x061b,\r\n  0x061b,\r\n  0x061f,\r\n  0x061f,\r\n  0x0621,\r\n  0x063a,\r\n  0x0640,\r\n  0x064a,\r\n  0x066d,\r\n  0x066f,\r\n  0x0671,\r\n  0x06d5,\r\n  0x06dd,\r\n  0x06dd,\r\n  0x06e5,\r\n  0x06e6,\r\n  0x06fa,\r\n  0x06fe,\r\n  0x0700,\r\n  0x070d,\r\n  0x0710,\r\n  0x0710,\r\n  0x0712,\r\n  0x072c,\r\n  0x0780,\r\n  0x07a5,\r\n  0x07b1,\r\n  0x07b1,\r\n  0x200f,\r\n  0x200f,\r\n  0xfb1d,\r\n  0xfb1d,\r\n  0xfb1f,\r\n  0xfb28,\r\n  0xfb2a,\r\n  0xfb36,\r\n  0xfb38,\r\n  0xfb3c,\r\n  0xfb3e,\r\n  0xfb3e,\r\n  0xfb40,\r\n  0xfb41,\r\n  0xfb43,\r\n  0xfb44,\r\n  0xfb46,\r\n  0xfbb1,\r\n  0xfbd3,\r\n  0xfd3d,\r\n  0xfd50,\r\n  0xfd8f,\r\n  0xfd92,\r\n  0xfdc7,\r\n  0xfdf0,\r\n  0xfdfc,\r\n  0xfe70,\r\n  0xfe74,\r\n  0xfe76,\r\n  0xfefc\r\n];\r\n// prettier-ignore-end\r\n\r\nconst isBidirectionalRAL = character => inRange(character, bidirectional_r_al);\r\n\r\n// prettier-ignore-start\r\n/**\r\n * D.2 Characters with bidirectional property \"L\"\r\n * @link https://tools.ietf.org/html/rfc3454#appendix-D.2\r\n */\r\nconst bidirectional_l = [\r\n  0x0041,\r\n  0x005a,\r\n  0x0061,\r\n  0x007a,\r\n  0x00aa,\r\n  0x00aa,\r\n  0x00b5,\r\n  0x00b5,\r\n  0x00ba,\r\n  0x00ba,\r\n  0x00c0,\r\n  0x00d6,\r\n  0x00d8,\r\n  0x00f6,\r\n  0x00f8,\r\n  0x0220,\r\n  0x0222,\r\n  0x0233,\r\n  0x0250,\r\n  0x02ad,\r\n  0x02b0,\r\n  0x02b8,\r\n  0x02bb,\r\n  0x02c1,\r\n  0x02d0,\r\n  0x02d1,\r\n  0x02e0,\r\n  0x02e4,\r\n  0x02ee,\r\n  0x02ee,\r\n  0x037a,\r\n  0x037a,\r\n  0x0386,\r\n  0x0386,\r\n  0x0388,\r\n  0x038a,\r\n  0x038c,\r\n  0x038c,\r\n  0x038e,\r\n  0x03a1,\r\n  0x03a3,\r\n  0x03ce,\r\n  0x03d0,\r\n  0x03f5,\r\n  0x0400,\r\n  0x0482,\r\n  0x048a,\r\n  0x04ce,\r\n  0x04d0,\r\n  0x04f5,\r\n  0x04f8,\r\n  0x04f9,\r\n  0x0500,\r\n  0x050f,\r\n  0x0531,\r\n  0x0556,\r\n  0x0559,\r\n  0x055f,\r\n  0x0561,\r\n  0x0587,\r\n  0x0589,\r\n  0x0589,\r\n  0x0903,\r\n  0x0903,\r\n  0x0905,\r\n  0x0939,\r\n  0x093d,\r\n  0x0940,\r\n  0x0949,\r\n  0x094c,\r\n  0x0950,\r\n  0x0950,\r\n  0x0958,\r\n  0x0961,\r\n  0x0964,\r\n  0x0970,\r\n  0x0982,\r\n  0x0983,\r\n  0x0985,\r\n  0x098c,\r\n  0x098f,\r\n  0x0990,\r\n  0x0993,\r\n  0x09a8,\r\n  0x09aa,\r\n  0x09b0,\r\n  0x09b2,\r\n  0x09b2,\r\n  0x09b6,\r\n  0x09b9,\r\n  0x09be,\r\n  0x09c0,\r\n  0x09c7,\r\n  0x09c8,\r\n  0x09cb,\r\n  0x09cc,\r\n  0x09d7,\r\n  0x09d7,\r\n  0x09dc,\r\n  0x09dd,\r\n  0x09df,\r\n  0x09e1,\r\n  0x09e6,\r\n  0x09f1,\r\n  0x09f4,\r\n  0x09fa,\r\n  0x0a05,\r\n  0x0a0a,\r\n  0x0a0f,\r\n  0x0a10,\r\n  0x0a13,\r\n  0x0a28,\r\n  0x0a2a,\r\n  0x0a30,\r\n  0x0a32,\r\n  0x0a33,\r\n  0x0a35,\r\n  0x0a36,\r\n  0x0a38,\r\n  0x0a39,\r\n  0x0a3e,\r\n  0x0a40,\r\n  0x0a59,\r\n  0x0a5c,\r\n  0x0a5e,\r\n  0x0a5e,\r\n  0x0a66,\r\n  0x0a6f,\r\n  0x0a72,\r\n  0x0a74,\r\n  0x0a83,\r\n  0x0a83,\r\n  0x0a85,\r\n  0x0a8b,\r\n  0x0a8d,\r\n  0x0a8d,\r\n  0x0a8f,\r\n  0x0a91,\r\n  0x0a93,\r\n  0x0aa8,\r\n  0x0aaa,\r\n  0x0ab0,\r\n  0x0ab2,\r\n  0x0ab3,\r\n  0x0ab5,\r\n  0x0ab9,\r\n  0x0abd,\r\n  0x0ac0,\r\n  0x0ac9,\r\n  0x0ac9,\r\n  0x0acb,\r\n  0x0acc,\r\n  0x0ad0,\r\n  0x0ad0,\r\n  0x0ae0,\r\n  0x0ae0,\r\n  0x0ae6,\r\n  0x0aef,\r\n  0x0b02,\r\n  0x0b03,\r\n  0x0b05,\r\n  0x0b0c,\r\n  0x0b0f,\r\n  0x0b10,\r\n  0x0b13,\r\n  0x0b28,\r\n  0x0b2a,\r\n  0x0b30,\r\n  0x0b32,\r\n  0x0b33,\r\n  0x0b36,\r\n  0x0b39,\r\n  0x0b3d,\r\n  0x0b3e,\r\n  0x0b40,\r\n  0x0b40,\r\n  0x0b47,\r\n  0x0b48,\r\n  0x0b4b,\r\n  0x0b4c,\r\n  0x0b57,\r\n  0x0b57,\r\n  0x0b5c,\r\n  0x0b5d,\r\n  0x0b5f,\r\n  0x0b61,\r\n  0x0b66,\r\n  0x0b70,\r\n  0x0b83,\r\n  0x0b83,\r\n  0x0b85,\r\n  0x0b8a,\r\n  0x0b8e,\r\n  0x0b90,\r\n  0x0b92,\r\n  0x0b95,\r\n  0x0b99,\r\n  0x0b9a,\r\n  0x0b9c,\r\n  0x0b9c,\r\n  0x0b9e,\r\n  0x0b9f,\r\n  0x0ba3,\r\n  0x0ba4,\r\n  0x0ba8,\r\n  0x0baa,\r\n  0x0bae,\r\n  0x0bb5,\r\n  0x0bb7,\r\n  0x0bb9,\r\n  0x0bbe,\r\n  0x0bbf,\r\n  0x0bc1,\r\n  0x0bc2,\r\n  0x0bc6,\r\n  0x0bc8,\r\n  0x0bca,\r\n  0x0bcc,\r\n  0x0bd7,\r\n  0x0bd7,\r\n  0x0be7,\r\n  0x0bf2,\r\n  0x0c01,\r\n  0x0c03,\r\n  0x0c05,\r\n  0x0c0c,\r\n  0x0c0e,\r\n  0x0c10,\r\n  0x0c12,\r\n  0x0c28,\r\n  0x0c2a,\r\n  0x0c33,\r\n  0x0c35,\r\n  0x0c39,\r\n  0x0c41,\r\n  0x0c44,\r\n  0x0c60,\r\n  0x0c61,\r\n  0x0c66,\r\n  0x0c6f,\r\n  0x0c82,\r\n  0x0c83,\r\n  0x0c85,\r\n  0x0c8c,\r\n  0x0c8e,\r\n  0x0c90,\r\n  0x0c92,\r\n  0x0ca8,\r\n  0x0caa,\r\n  0x0cb3,\r\n  0x0cb5,\r\n  0x0cb9,\r\n  0x0cbe,\r\n  0x0cbe,\r\n  0x0cc0,\r\n  0x0cc4,\r\n  0x0cc7,\r\n  0x0cc8,\r\n  0x0cca,\r\n  0x0ccb,\r\n  0x0cd5,\r\n  0x0cd6,\r\n  0x0cde,\r\n  0x0cde,\r\n  0x0ce0,\r\n  0x0ce1,\r\n  0x0ce6,\r\n  0x0cef,\r\n  0x0d02,\r\n  0x0d03,\r\n  0x0d05,\r\n  0x0d0c,\r\n  0x0d0e,\r\n  0x0d10,\r\n  0x0d12,\r\n  0x0d28,\r\n  0x0d2a,\r\n  0x0d39,\r\n  0x0d3e,\r\n  0x0d40,\r\n  0x0d46,\r\n  0x0d48,\r\n  0x0d4a,\r\n  0x0d4c,\r\n  0x0d57,\r\n  0x0d57,\r\n  0x0d60,\r\n  0x0d61,\r\n  0x0d66,\r\n  0x0d6f,\r\n  0x0d82,\r\n  0x0d83,\r\n  0x0d85,\r\n  0x0d96,\r\n  0x0d9a,\r\n  0x0db1,\r\n  0x0db3,\r\n  0x0dbb,\r\n  0x0dbd,\r\n  0x0dbd,\r\n  0x0dc0,\r\n  0x0dc6,\r\n  0x0dcf,\r\n  0x0dd1,\r\n  0x0dd8,\r\n  0x0ddf,\r\n  0x0df2,\r\n  0x0df4,\r\n  0x0e01,\r\n  0x0e30,\r\n  0x0e32,\r\n  0x0e33,\r\n  0x0e40,\r\n  0x0e46,\r\n  0x0e4f,\r\n  0x0e5b,\r\n  0x0e81,\r\n  0x0e82,\r\n  0x0e84,\r\n  0x0e84,\r\n  0x0e87,\r\n  0x0e88,\r\n  0x0e8a,\r\n  0x0e8a,\r\n  0x0e8d,\r\n  0x0e8d,\r\n  0x0e94,\r\n  0x0e97,\r\n  0x0e99,\r\n  0x0e9f,\r\n  0x0ea1,\r\n  0x0ea3,\r\n  0x0ea5,\r\n  0x0ea5,\r\n  0x0ea7,\r\n  0x0ea7,\r\n  0x0eaa,\r\n  0x0eab,\r\n  0x0ead,\r\n  0x0eb0,\r\n  0x0eb2,\r\n  0x0eb3,\r\n  0x0ebd,\r\n  0x0ebd,\r\n  0x0ec0,\r\n  0x0ec4,\r\n  0x0ec6,\r\n  0x0ec6,\r\n  0x0ed0,\r\n  0x0ed9,\r\n  0x0edc,\r\n  0x0edd,\r\n  0x0f00,\r\n  0x0f17,\r\n  0x0f1a,\r\n  0x0f34,\r\n  0x0f36,\r\n  0x0f36,\r\n  0x0f38,\r\n  0x0f38,\r\n  0x0f3e,\r\n  0x0f47,\r\n  0x0f49,\r\n  0x0f6a,\r\n  0x0f7f,\r\n  0x0f7f,\r\n  0x0f85,\r\n  0x0f85,\r\n  0x0f88,\r\n  0x0f8b,\r\n  0x0fbe,\r\n  0x0fc5,\r\n  0x0fc7,\r\n  0x0fcc,\r\n  0x0fcf,\r\n  0x0fcf,\r\n  0x1000,\r\n  0x1021,\r\n  0x1023,\r\n  0x1027,\r\n  0x1029,\r\n  0x102a,\r\n  0x102c,\r\n  0x102c,\r\n  0x1031,\r\n  0x1031,\r\n  0x1038,\r\n  0x1038,\r\n  0x1040,\r\n  0x1057,\r\n  0x10a0,\r\n  0x10c5,\r\n  0x10d0,\r\n  0x10f8,\r\n  0x10fb,\r\n  0x10fb,\r\n  0x1100,\r\n  0x1159,\r\n  0x115f,\r\n  0x11a2,\r\n  0x11a8,\r\n  0x11f9,\r\n  0x1200,\r\n  0x1206,\r\n  0x1208,\r\n  0x1246,\r\n  0x1248,\r\n  0x1248,\r\n  0x124a,\r\n  0x124d,\r\n  0x1250,\r\n  0x1256,\r\n  0x1258,\r\n  0x1258,\r\n  0x125a,\r\n  0x125d,\r\n  0x1260,\r\n  0x1286,\r\n  0x1288,\r\n  0x1288,\r\n  0x128a,\r\n  0x128d,\r\n  0x1290,\r\n  0x12ae,\r\n  0x12b0,\r\n  0x12b0,\r\n  0x12b2,\r\n  0x12b5,\r\n  0x12b8,\r\n  0x12be,\r\n  0x12c0,\r\n  0x12c0,\r\n  0x12c2,\r\n  0x12c5,\r\n  0x12c8,\r\n  0x12ce,\r\n  0x12d0,\r\n  0x12d6,\r\n  0x12d8,\r\n  0x12ee,\r\n  0x12f0,\r\n  0x130e,\r\n  0x1310,\r\n  0x1310,\r\n  0x1312,\r\n  0x1315,\r\n  0x1318,\r\n  0x131e,\r\n  0x1320,\r\n  0x1346,\r\n  0x1348,\r\n  0x135a,\r\n  0x1361,\r\n  0x137c,\r\n  0x13a0,\r\n  0x13f4,\r\n  0x1401,\r\n  0x1676,\r\n  0x1681,\r\n  0x169a,\r\n  0x16a0,\r\n  0x16f0,\r\n  0x1700,\r\n  0x170c,\r\n  0x170e,\r\n  0x1711,\r\n  0x1720,\r\n  0x1731,\r\n  0x1735,\r\n  0x1736,\r\n  0x1740,\r\n  0x1751,\r\n  0x1760,\r\n  0x176c,\r\n  0x176e,\r\n  0x1770,\r\n  0x1780,\r\n  0x17b6,\r\n  0x17be,\r\n  0x17c5,\r\n  0x17c7,\r\n  0x17c8,\r\n  0x17d4,\r\n  0x17da,\r\n  0x17dc,\r\n  0x17dc,\r\n  0x17e0,\r\n  0x17e9,\r\n  0x1810,\r\n  0x1819,\r\n  0x1820,\r\n  0x1877,\r\n  0x1880,\r\n  0x18a8,\r\n  0x1e00,\r\n  0x1e9b,\r\n  0x1ea0,\r\n  0x1ef9,\r\n  0x1f00,\r\n  0x1f15,\r\n  0x1f18,\r\n  0x1f1d,\r\n  0x1f20,\r\n  0x1f45,\r\n  0x1f48,\r\n  0x1f4d,\r\n  0x1f50,\r\n  0x1f57,\r\n  0x1f59,\r\n  0x1f59,\r\n  0x1f5b,\r\n  0x1f5b,\r\n  0x1f5d,\r\n  0x1f5d,\r\n  0x1f5f,\r\n  0x1f7d,\r\n  0x1f80,\r\n  0x1fb4,\r\n  0x1fb6,\r\n  0x1fbc,\r\n  0x1fbe,\r\n  0x1fbe,\r\n  0x1fc2,\r\n  0x1fc4,\r\n  0x1fc6,\r\n  0x1fcc,\r\n  0x1fd0,\r\n  0x1fd3,\r\n  0x1fd6,\r\n  0x1fdb,\r\n  0x1fe0,\r\n  0x1fec,\r\n  0x1ff2,\r\n  0x1ff4,\r\n  0x1ff6,\r\n  0x1ffc,\r\n  0x200e,\r\n  0x200e,\r\n  0x2071,\r\n  0x2071,\r\n  0x207f,\r\n  0x207f,\r\n  0x2102,\r\n  0x2102,\r\n  0x2107,\r\n  0x2107,\r\n  0x210a,\r\n  0x2113,\r\n  0x2115,\r\n  0x2115,\r\n  0x2119,\r\n  0x211d,\r\n  0x2124,\r\n  0x2124,\r\n  0x2126,\r\n  0x2126,\r\n  0x2128,\r\n  0x2128,\r\n  0x212a,\r\n  0x212d,\r\n  0x212f,\r\n  0x2131,\r\n  0x2133,\r\n  0x2139,\r\n  0x213d,\r\n  0x213f,\r\n  0x2145,\r\n  0x2149,\r\n  0x2160,\r\n  0x2183,\r\n  0x2336,\r\n  0x237a,\r\n  0x2395,\r\n  0x2395,\r\n  0x249c,\r\n  0x24e9,\r\n  0x3005,\r\n  0x3007,\r\n  0x3021,\r\n  0x3029,\r\n  0x3031,\r\n  0x3035,\r\n  0x3038,\r\n  0x303c,\r\n  0x3041,\r\n  0x3096,\r\n  0x309d,\r\n  0x309f,\r\n  0x30a1,\r\n  0x30fa,\r\n  0x30fc,\r\n  0x30ff,\r\n  0x3105,\r\n  0x312c,\r\n  0x3131,\r\n  0x318e,\r\n  0x3190,\r\n  0x31b7,\r\n  0x31f0,\r\n  0x321c,\r\n  0x3220,\r\n  0x3243,\r\n  0x3260,\r\n  0x327b,\r\n  0x327f,\r\n  0x32b0,\r\n  0x32c0,\r\n  0x32cb,\r\n  0x32d0,\r\n  0x32fe,\r\n  0x3300,\r\n  0x3376,\r\n  0x337b,\r\n  0x33dd,\r\n  0x33e0,\r\n  0x33fe,\r\n  0x3400,\r\n  0x4db5,\r\n  0x4e00,\r\n  0x9fa5,\r\n  0xa000,\r\n  0xa48c,\r\n  0xac00,\r\n  0xd7a3,\r\n  0xd800,\r\n  0xfa2d,\r\n  0xfa30,\r\n  0xfa6a,\r\n  0xfb00,\r\n  0xfb06,\r\n  0xfb13,\r\n  0xfb17,\r\n  0xff21,\r\n  0xff3a,\r\n  0xff41,\r\n  0xff5a,\r\n  0xff66,\r\n  0xffbe,\r\n  0xffc2,\r\n  0xffc7,\r\n  0xffca,\r\n  0xffcf,\r\n  0xffd2,\r\n  0xffd7,\r\n  0xffda,\r\n  0xffdc,\r\n  0x10300,\r\n  0x1031e,\r\n  0x10320,\r\n  0x10323,\r\n  0x10330,\r\n  0x1034a,\r\n  0x10400,\r\n  0x10425,\r\n  0x10428,\r\n  0x1044d,\r\n  0x1d000,\r\n  0x1d0f5,\r\n  0x1d100,\r\n  0x1d126,\r\n  0x1d12a,\r\n  0x1d166,\r\n  0x1d16a,\r\n  0x1d172,\r\n  0x1d183,\r\n  0x1d184,\r\n  0x1d18c,\r\n  0x1d1a9,\r\n  0x1d1ae,\r\n  0x1d1dd,\r\n  0x1d400,\r\n  0x1d454,\r\n  0x1d456,\r\n  0x1d49c,\r\n  0x1d49e,\r\n  0x1d49f,\r\n  0x1d4a2,\r\n  0x1d4a2,\r\n  0x1d4a5,\r\n  0x1d4a6,\r\n  0x1d4a9,\r\n  0x1d4ac,\r\n  0x1d4ae,\r\n  0x1d4b9,\r\n  0x1d4bb,\r\n  0x1d4bb,\r\n  0x1d4bd,\r\n  0x1d4c0,\r\n  0x1d4c2,\r\n  0x1d4c3,\r\n  0x1d4c5,\r\n  0x1d505,\r\n  0x1d507,\r\n  0x1d50a,\r\n  0x1d50d,\r\n  0x1d514,\r\n  0x1d516,\r\n  0x1d51c,\r\n  0x1d51e,\r\n  0x1d539,\r\n  0x1d53b,\r\n  0x1d53e,\r\n  0x1d540,\r\n  0x1d544,\r\n  0x1d546,\r\n  0x1d546,\r\n  0x1d54a,\r\n  0x1d550,\r\n  0x1d552,\r\n  0x1d6a3,\r\n  0x1d6a8,\r\n  0x1d7c9,\r\n  0x20000,\r\n  0x2a6d6,\r\n  0x2f800,\r\n  0x2fa1d,\r\n  0xf0000,\r\n  0xffffd,\r\n  0x100000,\r\n  0x10fffd\r\n];\r\n// prettier-ignore-end\r\n\r\nconst isBidirectionalL = character => inRange(character, bidirectional_l);\r\n\r\nexport {\r\n  isUnassignedCodePoint,\r\n  isCommonlyMappedToNothing,\r\n  isNonASCIISpaceCharacter,\r\n  isProhibitedCharacter,\r\n  isBidirectionalRAL,\r\n  isBidirectionalL\r\n};\r\n", "import {\r\n  isUnassignedCodePoint,\r\n  isCommonlyMappedToNothing,\r\n  isNonASCIISpaceCharacter,\r\n  isProhibitedCharacter,\r\n  isBidirectionalRAL,\r\n  isBidirectionalL\r\n} from './lib/code-points';\r\n\r\n// 2.1.  Mapping\r\n\r\n/**\r\n * non-ASCII space characters [StringPrep, C.1.2] that can be\r\n * mapped to SPACE (U+0020)\r\n */\r\nconst mapping2space = isNonASCIISpaceCharacter;\r\n\r\n/**\r\n * the \"commonly mapped to nothing\" characters [StringPrep, B.1]\r\n * that can be mapped to nothing.\r\n */\r\nconst mapping2nothing = isCommonlyMappedToNothing;\r\n\r\n// utils\r\nconst getCodePoint = character => character.codePointAt(0);\r\nconst first = x => x[0];\r\nconst last = x => x[x.length - 1];\r\n\r\n/**\r\n * Convert provided string into an array of Unicode Code Points.\r\n * Based on https://stackoverflow.com/a/21409165/1556249\r\n * and https://www.npmjs.com/package/code-point-at.\r\n * @param {string} input\r\n * @returns {number[]}\r\n */\r\nfunction toCodePoints(input) {\r\n  const codepoints = [];\r\n  const size = input.length;\r\n\r\n  for (let i = 0; i < size; i += 1) {\r\n    const before = input.charCodeAt(i);\r\n\r\n    if (before >= 0xd800 && before <= 0xdbff && size > i + 1) {\r\n      const next = input.charCodeAt(i + 1);\r\n\r\n      if (next >= 0xdc00 && next <= 0xdfff) {\r\n        codepoints.push((before - 0xd800) * 0x400 + next - 0xdc00 + 0x10000);\r\n        i += 1;\r\n        continue;\r\n      }\r\n    }\r\n\r\n    codepoints.push(before);\r\n  }\r\n\r\n  return codepoints;\r\n}\r\n\r\n/**\r\n * SASLprep.\r\n * @param {string} input\r\n * @param {Object} opts\r\n * @param {boolean} opts.allowUnassigned\r\n * @returns {string}\r\n */\r\nfunction saslprep(input, opts = {}) {\r\n  if (typeof input !== 'string') {\r\n    throw new TypeError('Expected string.');\r\n  }\r\n\r\n  if (input.length === 0) {\r\n    return '';\r\n  }\r\n\r\n  // 1. Map\r\n  const mapped_input = toCodePoints(input)\r\n    // 1.1 mapping to space\r\n    .map(character => (mapping2space(character) ? 0x20 : character))\r\n    // 1.2 mapping to nothing\r\n    .filter(character => !mapping2nothing(character));\r\n\r\n  // 2. Normalize\r\n  const normalized_input = String.fromCodePoint\r\n    .apply(null, mapped_input)\r\n    .normalize('NFKC');\r\n\r\n  const normalized_map = toCodePoints(normalized_input);\r\n\r\n  // 3. Prohibit\r\n  const hasProhibited = normalized_map.some(isProhibitedCharacter);\r\n\r\n  if (hasProhibited) {\r\n    throw new Error(\r\n      'Prohibited character, see https://tools.ietf.org/html/rfc4013#section-2.3'\r\n    );\r\n  }\r\n\r\n  // Unassigned Code Points\r\n  if (opts.allowUnassigned !== true) {\r\n    const hasUnassigned = normalized_map.some(isUnassignedCodePoint);\r\n\r\n    if (hasUnassigned) {\r\n      throw new Error(\r\n        'Unassigned code point, see https://tools.ietf.org/html/rfc4013#section-2.5'\r\n      );\r\n    }\r\n  }\r\n\r\n  // 4. check bidi\r\n\r\n  const hasBidiRAL = normalized_map.some(isBidirectionalRAL);\r\n\r\n  const hasBidiL = normalized_map.some(isBidirectionalL);\r\n\r\n  // 4.1 If a string contains any RandALCat character, the string MUST NOT\r\n  // contain any LCat character.\r\n  if (hasBidiRAL && hasBidiL) {\r\n    throw new Error(\r\n      'String must not contain RandALCat and LCat at the same time,' +\r\n        ' see https://tools.ietf.org/html/rfc3454#section-6'\r\n    );\r\n  }\r\n\r\n  /**\r\n   * 4.2 If a string contains any RandALCat character, a RandALCat\r\n   * character MUST be the first character of the string, and a\r\n   * RandALCat character MUST be the last character of the string.\r\n   */\r\n\r\n  const isFirstBidiRAL = isBidirectionalRAL(\r\n    getCodePoint(first(normalized_input))\r\n  );\r\n  const isLastBidiRAL = isBidirectionalRAL(\r\n    getCodePoint(last(normalized_input))\r\n  );\r\n\r\n  if (hasBidiRAL && !(isFirstBidiRAL && isLastBidiRAL)) {\r\n    throw new Error(\r\n      'Bidirectional RandALCat character must be the first and the last' +\r\n        ' character of the string, see https://tools.ietf.org/html/rfc3454#section-6'\r\n    );\r\n  }\r\n\r\n  return normalized_input;\r\n}\r\n\r\nexport default saslprep;\r\n", "/*\r\n   PDFSecurity - represents PDF security settings\r\n   By Yang Liu <hi@zesik.com>\r\n */\r\n\r\nimport CryptoJS from 'crypto-js';\r\nimport saslprep from './saslprep/index';\r\n\r\nclass PDFSecurity {\r\n  static generateFileID(info = {}) {\r\n    let infoStr = `${info.CreationDate.getTime()}\\n`;\r\n\r\n    for (let key in info) {\r\n      // eslint-disable-next-line no-prototype-builtins\r\n      if (!info.hasOwnProperty(key)) {\r\n        continue;\r\n      }\r\n      infoStr += `${key}: ${info[key].valueOf()}\\n`;\r\n    }\r\n\r\n    return wordArrayToBuffer(CryptoJS.MD5(infoStr));\r\n  }\r\n\r\n  static generateRandomWordArray(bytes) {\r\n    return CryptoJS.lib.WordArray.random(bytes);\r\n  }\r\n\r\n  static create(document, options = {}) {\r\n    if (!options.ownerPassword && !options.userPassword) {\r\n      return null;\r\n    }\r\n    return new PDFSecurity(document, options);\r\n  }\r\n\r\n  constructor(document, options = {}) {\r\n    if (!options.ownerPassword && !options.userPassword) {\r\n      throw new Error('None of owner password and user password is defined.');\r\n    }\r\n\r\n    this.document = document;\r\n    this._setupEncryption(options);\r\n  }\r\n\r\n  _setupEncryption(options) {\r\n    switch (options.pdfVersion) {\r\n      case '1.4':\r\n      case '1.5':\r\n        this.version = 2;\r\n        break;\r\n      case '1.6':\r\n      case '1.7':\r\n        this.version = 4;\r\n        break;\r\n      case '1.7ext3':\r\n        this.version = 5;\r\n        break;\r\n      default:\r\n        this.version = 1;\r\n        break;\r\n    }\r\n\r\n    const encDict = {\r\n      Filter: 'Standard'\r\n    };\r\n\r\n    switch (this.version) {\r\n      case 1:\r\n      case 2:\r\n      case 4:\r\n        this._setupEncryptionV1V2V4(this.version, encDict, options);\r\n        break;\r\n      case 5:\r\n        this._setupEncryptionV5(encDict, options);\r\n        break;\r\n    }\r\n\r\n    this.dictionary = this.document.ref(encDict);\r\n  }\r\n\r\n  _setupEncryptionV1V2V4(v, encDict, options) {\r\n    let r, permissions;\r\n    switch (v) {\r\n      case 1:\r\n        r = 2;\r\n        this.keyBits = 40;\r\n        permissions = getPermissionsR2(options.permissions);\r\n        break;\r\n      case 2:\r\n        r = 3;\r\n        this.keyBits = 128;\r\n        permissions = getPermissionsR3(options.permissions);\r\n        break;\r\n      case 4:\r\n        r = 4;\r\n        this.keyBits = 128;\r\n        permissions = getPermissionsR3(options.permissions);\r\n        break;\r\n    }\r\n\r\n    const paddedUserPassword = processPasswordR2R3R4(options.userPassword);\r\n    const paddedOwnerPassword = options.ownerPassword\r\n      ? processPasswordR2R3R4(options.ownerPassword)\r\n      : paddedUserPassword;\r\n\r\n    const ownerPasswordEntry = getOwnerPasswordR2R3R4(\r\n      r,\r\n      this.keyBits,\r\n      paddedUserPassword,\r\n      paddedOwnerPassword\r\n    );\r\n    this.encryptionKey = getEncryptionKeyR2R3R4(\r\n      r,\r\n      this.keyBits,\r\n      this.document._id,\r\n      paddedUserPassword,\r\n      ownerPasswordEntry,\r\n      permissions\r\n    );\r\n    let userPasswordEntry;\r\n    if (r === 2) {\r\n      userPasswordEntry = getUserPasswordR2(this.encryptionKey);\r\n    } else {\r\n      userPasswordEntry = getUserPasswordR3R4(\r\n        this.document._id,\r\n        this.encryptionKey\r\n      );\r\n    }\r\n\r\n    encDict.V = v;\r\n    if (v >= 2) {\r\n      encDict.Length = this.keyBits;\r\n    }\r\n    if (v === 4) {\r\n      encDict.CF = {\r\n        StdCF: {\r\n          AuthEvent: 'DocOpen',\r\n          CFM: 'AESV2',\r\n          Length: this.keyBits / 8\r\n        }\r\n      };\r\n      encDict.StmF = 'StdCF';\r\n      encDict.StrF = 'StdCF';\r\n    }\r\n    encDict.R = r;\r\n    encDict.O = wordArrayToBuffer(ownerPasswordEntry);\r\n    encDict.U = wordArrayToBuffer(userPasswordEntry);\r\n    encDict.P = permissions;\r\n  }\r\n\r\n  _setupEncryptionV5(encDict, options) {\r\n    this.keyBits = 256;\r\n    const permissions = getPermissionsR3(options.permissions);\r\n\r\n    const processedUserPassword = processPasswordR5(options.userPassword);\r\n    const processedOwnerPassword = options.ownerPassword\r\n      ? processPasswordR5(options.ownerPassword)\r\n      : processedUserPassword;\r\n\r\n    this.encryptionKey = getEncryptionKeyR5(\r\n      PDFSecurity.generateRandomWordArray\r\n    );\r\n    const userPasswordEntry = getUserPasswordR5(\r\n      processedUserPassword,\r\n      PDFSecurity.generateRandomWordArray\r\n    );\r\n    const userKeySalt = CryptoJS.lib.WordArray.create(\r\n      userPasswordEntry.words.slice(10, 12),\r\n      8\r\n    );\r\n    const userEncryptionKeyEntry = getUserEncryptionKeyR5(\r\n      processedUserPassword,\r\n      userKeySalt,\r\n      this.encryptionKey\r\n    );\r\n    const ownerPasswordEntry = getOwnerPasswordR5(\r\n      processedOwnerPassword,\r\n      userPasswordEntry,\r\n      PDFSecurity.generateRandomWordArray\r\n    );\r\n    const ownerKeySalt = CryptoJS.lib.WordArray.create(\r\n      ownerPasswordEntry.words.slice(10, 12),\r\n      8\r\n    );\r\n    const ownerEncryptionKeyEntry = getOwnerEncryptionKeyR5(\r\n      processedOwnerPassword,\r\n      ownerKeySalt,\r\n      userPasswordEntry,\r\n      this.encryptionKey\r\n    );\r\n    const permsEntry = getEncryptedPermissionsR5(\r\n      permissions,\r\n      this.encryptionKey,\r\n      PDFSecurity.generateRandomWordArray\r\n    );\r\n\r\n    encDict.V = 5;\r\n    encDict.Length = this.keyBits;\r\n    encDict.CF = {\r\n      StdCF: {\r\n        AuthEvent: 'DocOpen',\r\n        CFM: 'AESV3',\r\n        Length: this.keyBits / 8\r\n      }\r\n    };\r\n    encDict.StmF = 'StdCF';\r\n    encDict.StrF = 'StdCF';\r\n    encDict.R = 5;\r\n    encDict.O = wordArrayToBuffer(ownerPasswordEntry);\r\n    encDict.OE = wordArrayToBuffer(ownerEncryptionKeyEntry);\r\n    encDict.U = wordArrayToBuffer(userPasswordEntry);\r\n    encDict.UE = wordArrayToBuffer(userEncryptionKeyEntry);\r\n    encDict.P = permissions;\r\n    encDict.Perms = wordArrayToBuffer(permsEntry);\r\n  }\r\n\r\n  getEncryptFn(obj, gen) {\r\n    let digest;\r\n    if (this.version < 5) {\r\n      digest = this.encryptionKey\r\n        .clone()\r\n        .concat(\r\n          CryptoJS.lib.WordArray.create(\r\n            [\r\n              ((obj & 0xff) << 24) |\r\n                ((obj & 0xff00) << 8) |\r\n                ((obj >> 8) & 0xff00) |\r\n                (gen & 0xff),\r\n              (gen & 0xff00) << 16\r\n            ],\r\n            5\r\n          )\r\n        );\r\n    }\r\n\r\n    if (this.version === 1 || this.version === 2) {\r\n      let key = CryptoJS.MD5(digest);\r\n      key.sigBytes = Math.min(16, this.keyBits / 8 + 5);\r\n      return buffer =>\r\n        wordArrayToBuffer(\r\n          CryptoJS.RC4.encrypt(CryptoJS.lib.WordArray.create(buffer), key)\r\n            .ciphertext\r\n        );\r\n    }\r\n\r\n    let key;\r\n    if (this.version === 4) {\r\n      key = CryptoJS.MD5(\r\n        digest.concat(CryptoJS.lib.WordArray.create([0x73416c54], 4))\r\n      );\r\n    } else {\r\n      key = this.encryptionKey;\r\n    }\r\n\r\n    const iv = PDFSecurity.generateRandomWordArray(16);\r\n    const options = {\r\n      mode: CryptoJS.mode.CBC,\r\n      padding: CryptoJS.pad.Pkcs7,\r\n      iv\r\n    };\r\n\r\n    return buffer =>\r\n      wordArrayToBuffer(\r\n        iv\r\n          .clone()\r\n          .concat(\r\n            CryptoJS.AES.encrypt(\r\n              CryptoJS.lib.WordArray.create(buffer),\r\n              key,\r\n              options\r\n            ).ciphertext\r\n          )\r\n      );\r\n  }\r\n\r\n  end() {\r\n    this.dictionary.end();\r\n  }\r\n}\r\n\r\nfunction getPermissionsR2(permissionObject = {}) {\r\n  let permissions = 0xffffffc0 >> 0;\r\n  if (permissionObject.printing) {\r\n    permissions |= 0b000000000100;\r\n  }\r\n  if (permissionObject.modifying) {\r\n    permissions |= 0b000000001000;\r\n  }\r\n  if (permissionObject.copying) {\r\n    permissions |= 0b000000010000;\r\n  }\r\n  if (permissionObject.annotating) {\r\n    permissions |= 0b000000100000;\r\n  }\r\n  return permissions;\r\n}\r\n\r\nfunction getPermissionsR3(permissionObject = {}) {\r\n  let permissions = 0xfffff0c0 >> 0;\r\n  if (permissionObject.printing === 'lowResolution') {\r\n    permissions |= 0b000000000100;\r\n  }\r\n  if (permissionObject.printing === 'highResolution') {\r\n    permissions |= 0b100000000100;\r\n  }\r\n  if (permissionObject.modifying) {\r\n    permissions |= 0b000000001000;\r\n  }\r\n  if (permissionObject.copying) {\r\n    permissions |= 0b000000010000;\r\n  }\r\n  if (permissionObject.annotating) {\r\n    permissions |= 0b000000100000;\r\n  }\r\n  if (permissionObject.fillingForms) {\r\n    permissions |= 0b000100000000;\r\n  }\r\n  if (permissionObject.contentAccessibility) {\r\n    permissions |= 0b001000000000;\r\n  }\r\n  if (permissionObject.documentAssembly) {\r\n    permissions |= 0b010000000000;\r\n  }\r\n  return permissions;\r\n}\r\n\r\nfunction getUserPasswordR2(encryptionKey) {\r\n  return CryptoJS.RC4.encrypt(processPasswordR2R3R4(), encryptionKey)\r\n    .ciphertext;\r\n}\r\n\r\nfunction getUserPasswordR3R4(documentId, encryptionKey) {\r\n  const key = encryptionKey.clone();\r\n  let cipher = CryptoJS.MD5(\r\n    processPasswordR2R3R4().concat(CryptoJS.lib.WordArray.create(documentId))\r\n  );\r\n  for (let i = 0; i < 20; i++) {\r\n    const xorRound = Math.ceil(key.sigBytes / 4);\r\n    for (let j = 0; j < xorRound; j++) {\r\n      key.words[j] =\r\n        encryptionKey.words[j] ^ (i | (i << 8) | (i << 16) | (i << 24));\r\n    }\r\n    cipher = CryptoJS.RC4.encrypt(cipher, key).ciphertext;\r\n  }\r\n  return cipher.concat(CryptoJS.lib.WordArray.create(null, 16));\r\n}\r\n\r\nfunction getOwnerPasswordR2R3R4(\r\n  r,\r\n  keyBits,\r\n  paddedUserPassword,\r\n  paddedOwnerPassword\r\n) {\r\n  let digest = paddedOwnerPassword;\r\n  let round = r >= 3 ? 51 : 1;\r\n  for (let i = 0; i < round; i++) {\r\n    digest = CryptoJS.MD5(digest);\r\n  }\r\n\r\n  const key = digest.clone();\r\n  key.sigBytes = keyBits / 8;\r\n  let cipher = paddedUserPassword;\r\n  round = r >= 3 ? 20 : 1;\r\n  for (let i = 0; i < round; i++) {\r\n    const xorRound = Math.ceil(key.sigBytes / 4);\r\n    for (let j = 0; j < xorRound; j++) {\r\n      key.words[j] = digest.words[j] ^ (i | (i << 8) | (i << 16) | (i << 24));\r\n    }\r\n    cipher = CryptoJS.RC4.encrypt(cipher, key).ciphertext;\r\n  }\r\n  return cipher;\r\n}\r\n\r\nfunction getEncryptionKeyR2R3R4(\r\n  r,\r\n  keyBits,\r\n  documentId,\r\n  paddedUserPassword,\r\n  ownerPasswordEntry,\r\n  permissions\r\n) {\r\n  let key = paddedUserPassword\r\n    .clone()\r\n    .concat(ownerPasswordEntry)\r\n    .concat(CryptoJS.lib.WordArray.create([lsbFirstWord(permissions)], 4))\r\n    .concat(CryptoJS.lib.WordArray.create(documentId));\r\n  const round = r >= 3 ? 51 : 1;\r\n  for (let i = 0; i < round; i++) {\r\n    key = CryptoJS.MD5(key);\r\n    key.sigBytes = keyBits / 8;\r\n  }\r\n  return key;\r\n}\r\n\r\nfunction getUserPasswordR5(processedUserPassword, generateRandomWordArray) {\r\n  const validationSalt = generateRandomWordArray(8);\r\n  const keySalt = generateRandomWordArray(8);\r\n  return CryptoJS.SHA256(processedUserPassword.clone().concat(validationSalt))\r\n    .concat(validationSalt)\r\n    .concat(keySalt);\r\n}\r\n\r\nfunction getUserEncryptionKeyR5(\r\n  processedUserPassword,\r\n  userKeySalt,\r\n  encryptionKey\r\n) {\r\n  const key = CryptoJS.SHA256(\r\n    processedUserPassword.clone().concat(userKeySalt)\r\n  );\r\n  const options = {\r\n    mode: CryptoJS.mode.CBC,\r\n    padding: CryptoJS.pad.NoPadding,\r\n    iv: CryptoJS.lib.WordArray.create(null, 16)\r\n  };\r\n  return CryptoJS.AES.encrypt(encryptionKey, key, options).ciphertext;\r\n}\r\n\r\nfunction getOwnerPasswordR5(\r\n  processedOwnerPassword,\r\n  userPasswordEntry,\r\n  generateRandomWordArray\r\n) {\r\n  const validationSalt = generateRandomWordArray(8);\r\n  const keySalt = generateRandomWordArray(8);\r\n  return CryptoJS.SHA256(\r\n    processedOwnerPassword\r\n      .clone()\r\n      .concat(validationSalt)\r\n      .concat(userPasswordEntry)\r\n  )\r\n    .concat(validationSalt)\r\n    .concat(keySalt);\r\n}\r\n\r\nfunction getOwnerEncryptionKeyR5(\r\n  processedOwnerPassword,\r\n  ownerKeySalt,\r\n  userPasswordEntry,\r\n  encryptionKey\r\n) {\r\n  const key = CryptoJS.SHA256(\r\n    processedOwnerPassword\r\n      .clone()\r\n      .concat(ownerKeySalt)\r\n      .concat(userPasswordEntry)\r\n  );\r\n  const options = {\r\n    mode: CryptoJS.mode.CBC,\r\n    padding: CryptoJS.pad.NoPadding,\r\n    iv: CryptoJS.lib.WordArray.create(null, 16)\r\n  };\r\n  return CryptoJS.AES.encrypt(encryptionKey, key, options).ciphertext;\r\n}\r\n\r\nfunction getEncryptionKeyR5(generateRandomWordArray) {\r\n  return generateRandomWordArray(32);\r\n}\r\n\r\nfunction getEncryptedPermissionsR5(\r\n  permissions,\r\n  encryptionKey,\r\n  generateRandomWordArray\r\n) {\r\n  const cipher = CryptoJS.lib.WordArray.create(\r\n    [lsbFirstWord(permissions), 0xffffffff, 0x54616462],\r\n    12\r\n  ).concat(generateRandomWordArray(4));\r\n  const options = {\r\n    mode: CryptoJS.mode.ECB,\r\n    padding: CryptoJS.pad.NoPadding\r\n  };\r\n  return CryptoJS.AES.encrypt(cipher, encryptionKey, options).ciphertext;\r\n}\r\n\r\nfunction processPasswordR2R3R4(password = '') {\r\n  const out = Buffer.alloc(32);\r\n  const length = password.length;\r\n  let index = 0;\r\n  while (index < length && index < 32) {\r\n    const code = password.charCodeAt(index);\r\n    if (code > 0xff) {\r\n      throw new Error('Password contains one or more invalid characters.');\r\n    }\r\n    out[index] = code;\r\n    index++;\r\n  }\r\n  while (index < 32) {\r\n    out[index] = PASSWORD_PADDING[index - length];\r\n    index++;\r\n  }\r\n  return CryptoJS.lib.WordArray.create(out);\r\n}\r\n\r\nfunction processPasswordR5(password = '') {\r\n  password = unescape(encodeURIComponent(saslprep(password)));\r\n  const length = Math.min(127, password.length);\r\n  const out = Buffer.alloc(length);\r\n\r\n  for (let i = 0; i < length; i++) {\r\n    out[i] = password.charCodeAt(i);\r\n  }\r\n\r\n  return CryptoJS.lib.WordArray.create(out);\r\n}\r\n\r\nfunction lsbFirstWord(data) {\r\n  return (\r\n    ((data & 0xff) << 24) |\r\n    ((data & 0xff00) << 8) |\r\n    ((data >> 8) & 0xff00) |\r\n    ((data >> 24) & 0xff)\r\n  );\r\n}\r\n\r\nfunction wordArrayToBuffer(wordArray) {\r\n  const byteArray = [];\r\n  for (let i = 0; i < wordArray.sigBytes; i++) {\r\n    byteArray.push(\r\n      (wordArray.words[Math.floor(i / 4)] >> (8 * (3 - (i % 4)))) & 0xff\r\n    );\r\n  }\r\n  return Buffer.from(byteArray);\r\n}\r\n\r\nconst PASSWORD_PADDING = [\r\n  0x28,\r\n  0xbf,\r\n  0x4e,\r\n  0x5e,\r\n  0x4e,\r\n  0x75,\r\n  0x8a,\r\n  0x41,\r\n  0x64,\r\n  0x00,\r\n  0x4e,\r\n  0x56,\r\n  0xff,\r\n  0xfa,\r\n  0x01,\r\n  0x08,\r\n  0x2e,\r\n  0x2e,\r\n  0x00,\r\n  0xb6,\r\n  0xd0,\r\n  0x68,\r\n  0x3e,\r\n  0x80,\r\n  0x2f,\r\n  0x0c,\r\n  0xa9,\r\n  0xfe,\r\n  0x64,\r\n  0x53,\r\n  0x69,\r\n  0x7a\r\n];\r\n\r\nexport default PDFSecurity;\r\n", "import PDFObject from './object';\r\n\r\nconst { number } = PDFObject;\r\n\r\nclass PDFGradient {\r\n  constructor(doc) {\r\n    this.doc = doc;\r\n    this.stops = [];\r\n    this.embedded = false;\r\n    this.transform = [1, 0, 0, 1, 0, 0];\r\n  }\r\n\r\n  stop(pos, color, opacity) {\r\n    if (opacity == null) {\r\n      opacity = 1;\r\n    }\r\n    color = this.doc._normalizeColor(color);\r\n\r\n    if (this.stops.length === 0) {\r\n      if (color.length === 3) {\r\n        this._colorSpace = 'DeviceRGB';\r\n      } else if (color.length === 4) {\r\n        this._colorSpace = 'DeviceCMYK';\r\n      } else if (color.length === 1) {\r\n        this._colorSpace = 'DeviceGray';\r\n      } else {\r\n        throw new Error('Unknown color space');\r\n      }\r\n    } else if (\r\n      (this._colorSpace === 'DeviceRGB' && color.length !== 3) ||\r\n      (this._colorSpace === 'DeviceCMYK' && color.length !== 4) ||\r\n      (this._colorSpace === 'DeviceGray' && color.length !== 1)\r\n    ) {\r\n      throw new Error('All gradient stops must use the same color space');\r\n    }\r\n\r\n    opacity = Math.max(0, Math.min(1, opacity));\r\n    this.stops.push([pos, color, opacity]);\r\n    return this;\r\n  }\r\n\r\n  setTransform(m11, m12, m21, m22, dx, dy) {\r\n    this.transform = [m11, m12, m21, m22, dx, dy];\r\n    return this;\r\n  }\r\n\r\n  embed(m) {\r\n    let fn;\r\n    const stopsLength = this.stops.length;\r\n    if (stopsLength === 0) {\r\n      return;\r\n    }\r\n    this.embedded = true;\r\n    this.matrix = m;\r\n\r\n    // if the last stop comes before 100%, add a copy at 100%\r\n    const last = this.stops[stopsLength - 1];\r\n    if (last[0] < 1) {\r\n      this.stops.push([1, last[1], last[2]]);\r\n    }\r\n\r\n    const bounds = [];\r\n    const encode = [];\r\n    const stops = [];\r\n\r\n    for (let i = 0; i < stopsLength - 1; i++) {\r\n      encode.push(0, 1);\r\n      if (i + 2 !== stopsLength) {\r\n        bounds.push(this.stops[i + 1][0]);\r\n      }\r\n\r\n      fn = this.doc.ref({\r\n        FunctionType: 2,\r\n        Domain: [0, 1],\r\n        C0: this.stops[i + 0][1],\r\n        C1: this.stops[i + 1][1],\r\n        N: 1\r\n      });\r\n\r\n      stops.push(fn);\r\n      fn.end();\r\n    }\r\n\r\n    // if there are only two stops, we don't need a stitching function\r\n    if (stopsLength === 1) {\r\n      fn = stops[0];\r\n    } else {\r\n      fn = this.doc.ref({\r\n        FunctionType: 3, // stitching function\r\n        Domain: [0, 1],\r\n        Functions: stops,\r\n        Bounds: bounds,\r\n        Encode: encode\r\n      });\r\n\r\n      fn.end();\r\n    }\r\n\r\n    this.id = `Sh${++this.doc._gradCount}`;\r\n\r\n    const shader = this.shader(fn);\r\n    shader.end();\r\n\r\n    const pattern = this.doc.ref({\r\n      Type: 'Pattern',\r\n      PatternType: 2,\r\n      Shading: shader,\r\n      Matrix: this.matrix.map(number)\r\n    });\r\n\r\n    pattern.end();\r\n\r\n    if (this.stops.some(stop => stop[2] < 1)) {\r\n      let grad = this.opacityGradient();\r\n      grad._colorSpace = 'DeviceGray';\r\n\r\n      for (let stop of this.stops) {\r\n        grad.stop(stop[0], [stop[2]]);\r\n      }\r\n\r\n      grad = grad.embed(this.matrix);\r\n\r\n      const pageBBox = [0, 0, this.doc.page.width, this.doc.page.height];\r\n\r\n      const form = this.doc.ref({\r\n        Type: 'XObject',\r\n        Subtype: 'Form',\r\n        FormType: 1,\r\n        BBox: pageBBox,\r\n        Group: {\r\n          Type: 'Group',\r\n          S: 'Transparency',\r\n          CS: 'DeviceGray'\r\n        },\r\n        Resources: {\r\n          ProcSet: ['PDF', 'Text', 'ImageB', 'ImageC', 'ImageI'],\r\n          Pattern: {\r\n            Sh1: grad\r\n          }\r\n        }\r\n      });\r\n\r\n      form.write('/Pattern cs /Sh1 scn');\r\n      form.end(`${pageBBox.join(' ')} re f`);\r\n\r\n      const gstate = this.doc.ref({\r\n        Type: 'ExtGState',\r\n        SMask: {\r\n          Type: 'Mask',\r\n          S: 'Luminosity',\r\n          G: form\r\n        }\r\n      });\r\n\r\n      gstate.end();\r\n\r\n      const opacityPattern = this.doc.ref({\r\n        Type: 'Pattern',\r\n        PatternType: 1,\r\n        PaintType: 1,\r\n        TilingType: 2,\r\n        BBox: pageBBox,\r\n        XStep: pageBBox[2],\r\n        YStep: pageBBox[3],\r\n        Resources: {\r\n          ProcSet: ['PDF', 'Text', 'ImageB', 'ImageC', 'ImageI'],\r\n          Pattern: {\r\n            Sh1: pattern\r\n          },\r\n          ExtGState: {\r\n            Gs1: gstate\r\n          }\r\n        }\r\n      });\r\n\r\n      opacityPattern.write('/Gs1 gs /Pattern cs /Sh1 scn');\r\n      opacityPattern.end(`${pageBBox.join(' ')} re f`);\r\n\r\n      this.doc.page.patterns[this.id] = opacityPattern;\r\n    } else {\r\n      this.doc.page.patterns[this.id] = pattern;\r\n    }\r\n\r\n    return pattern;\r\n  }\r\n\r\n  apply(stroke) {\r\n    // apply gradient transform to existing document ctm\r\n    const [m0, m1, m2, m3, m4, m5] = this.doc._ctm;\r\n    const [m11, m12, m21, m22, dx, dy] = this.transform;\r\n    const m = [\r\n      m0 * m11 + m2 * m12,\r\n      m1 * m11 + m3 * m12,\r\n      m0 * m21 + m2 * m22,\r\n      m1 * m21 + m3 * m22,\r\n      m0 * dx + m2 * dy + m4,\r\n      m1 * dx + m3 * dy + m5\r\n    ];\r\n\r\n    if (!this.embedded || m.join(' ') !== this.matrix.join(' ')) {\r\n      this.embed(m);\r\n    }\r\n    this.doc._setColorSpace('Pattern', stroke);\r\n    const op = stroke ? 'SCN' : 'scn';\r\n    return this.doc.addContent(`/${this.id} ${op}`);\r\n  }\r\n}\r\n\r\nclass PDFLinearGradient extends PDFGradient {\r\n  constructor(doc, x1, y1, x2, y2) {\r\n    super(doc);\r\n    this.x1 = x1;\r\n    this.y1 = y1;\r\n    this.x2 = x2;\r\n    this.y2 = y2;\r\n  }\r\n\r\n  shader(fn) {\r\n    return this.doc.ref({\r\n      ShadingType: 2,\r\n      ColorSpace: this._colorSpace,\r\n      Coords: [this.x1, this.y1, this.x2, this.y2],\r\n      Function: fn,\r\n      Extend: [true, true]\r\n    });\r\n  }\r\n\r\n  opacityGradient() {\r\n    return new PDFLinearGradient(this.doc, this.x1, this.y1, this.x2, this.y2);\r\n  }\r\n}\r\n\r\nclass PDFRadialGradient extends PDFGradient {\r\n  constructor(doc, x1, y1, r1, x2, y2, r2) {\r\n    super(doc);\r\n    this.doc = doc;\r\n    this.x1 = x1;\r\n    this.y1 = y1;\r\n    this.r1 = r1;\r\n    this.x2 = x2;\r\n    this.y2 = y2;\r\n    this.r2 = r2;\r\n  }\r\n\r\n  shader(fn) {\r\n    return this.doc.ref({\r\n      ShadingType: 3,\r\n      ColorSpace: this._colorSpace,\r\n      Coords: [this.x1, this.y1, this.r1, this.x2, this.y2, this.r2],\r\n      Function: fn,\r\n      Extend: [true, true]\r\n    });\r\n  }\r\n\r\n  opacityGradient() {\r\n    return new PDFRadialGradient(\r\n      this.doc,\r\n      this.x1,\r\n      this.y1,\r\n      this.r1,\r\n      this.x2,\r\n      this.y2,\r\n      this.r2\r\n    );\r\n  }\r\n}\r\n\r\nexport default { PDFGradient, PDFLinearGradient, PDFRadialGradient };\r\n", "/*\r\nPDF tiling pattern support. Uncolored only.\r\n */\r\n\r\nconst underlyingColorSpaces = ['DeviceCMYK', 'DeviceRGB'];\r\n\r\nclass PDFTilingPattern {\r\n  constructor(doc, bBox, xStep, yStep, stream) {\r\n    this.doc = doc;\r\n    this.bBox = bBox;\r\n    this.xStep = xStep;\r\n    this.yStep = yStep;\r\n    this.stream = stream;\r\n  }\r\n\r\n  createPattern() {\r\n    // no resources needed for our current usage\r\n    // required entry\r\n    const resources = this.doc.ref();\r\n    resources.end();\r\n    // apply default transform matrix (flipped in the default doc._ctm)\r\n    // see document.js & gradient.js\r\n    const [m0, m1, m2, m3, m4, m5] = this.doc._ctm;\r\n    const [m11, m12, m21, m22, dx, dy] = [1, 0, 0, 1, 0, 0];\r\n    const m = [\r\n      m0 * m11 + m2 * m12,\r\n      m1 * m11 + m3 * m12,\r\n      m0 * m21 + m2 * m22,\r\n      m1 * m21 + m3 * m22,\r\n      m0 * dx + m2 * dy + m4,\r\n      m1 * dx + m3 * dy + m5\r\n    ];\r\n    const pattern = this.doc.ref({\r\n      Type: 'Pattern',\r\n      PatternType: 1, // tiling\r\n      PaintType: 2, // 1-colored, 2-uncolored\r\n      TilingType: 2, // 2-no distortion\r\n      BBox: this.bBox,\r\n      XStep: this.xStep,\r\n      YStep: this.yStep,\r\n      Matrix: m.map(v => +v.toFixed(5)),\r\n      Resources: resources\r\n    });\r\n    pattern.end(this.stream);\r\n    return pattern;\r\n  }\r\n\r\n  embedPatternColorSpaces() {\r\n    // map each pattern to an underlying color space\r\n    // and embed on each page\r\n    underlyingColorSpaces.forEach(csName => {\r\n      const csId = this.getPatternColorSpaceId(csName);\r\n\r\n      if (this.doc.page.colorSpaces[csId]) return;\r\n      const cs = this.doc.ref(['Pattern', csName]);\r\n      cs.end();\r\n      this.doc.page.colorSpaces[csId] = cs;\r\n    });\r\n  }\r\n\r\n  getPatternColorSpaceId(underlyingColorspace) {\r\n    return `CsP${underlyingColorspace}`;\r\n  }\r\n\r\n  embed() {\r\n    if (!this.id) {\r\n      this.doc._patternCount = this.doc._patternCount + 1;\r\n      this.id = 'P' + this.doc._patternCount;\r\n      this.pattern = this.createPattern();\r\n    }\r\n\r\n    // patterns are embedded in each page\r\n    if (!this.doc.page.patterns[this.id]) {\r\n      this.doc.page.patterns[this.id] = this.pattern;\r\n    }\r\n  }\r\n\r\n  apply(stroke, patternColor) {\r\n    // do any embedding/creating that might be needed\r\n    this.embedPatternColorSpaces();\r\n    this.embed();\r\n\r\n    const normalizedColor = this.doc._normalizeColor(patternColor);\r\n    if (!normalizedColor)\r\n      throw Error(`invalid pattern color. (value: ${patternColor})`);\r\n\r\n    // select one of the pattern color spaces\r\n    const csId = this.getPatternColorSpaceId(\r\n      this.doc._getColorSpace(normalizedColor)\r\n    );\r\n    this.doc._setColorSpace(csId, stroke);\r\n\r\n    // stroke/fill using the pattern and color (in the above underlying color space)\r\n    const op = stroke ? 'SCN' : 'scn';\r\n    return this.doc.addContent(\r\n      `${normalizedColor.join(' ')} /${this.id} ${op}`\r\n    );\r\n  }\r\n}\r\n\r\nexport default { PDFTilingPattern };\r\n", "import Gradient from '../gradient';\r\nimport pattern from '../pattern';\r\n\r\nconst { PDFGradient, PDFLinearGradient, PDFRadialGradient } = Gradient;\r\nconst { PDFTilingPattern } = pattern;\r\n\r\nexport default {\r\n  initColor() {\r\n    // The opacity dictionaries\r\n    this._opacityRegistry = {};\r\n    this._opacityCount = 0;\r\n    this._patternCount = 0;\r\n    return (this._gradCount = 0);\r\n  },\r\n\r\n  _normalizeColor(color) {\r\n    if (typeof color === 'string') {\r\n      if (color.charAt(0) === '#') {\r\n        if (color.length === 4) {\r\n          color = color.replace(\r\n            /#([0-9A-F])([0-9A-F])([0-9A-F])/i,\r\n            '#$1$1$2$2$3$3'\r\n          );\r\n        }\r\n        const hex = parseInt(color.slice(1), 16);\r\n        color = [hex >> 16, (hex >> 8) & 0xff, hex & 0xff];\r\n      } else if (namedColors[color]) {\r\n        color = namedColors[color];\r\n      }\r\n    }\r\n\r\n    if (Array.isArray(color)) {\r\n      // RGB\r\n      if (color.length === 3) {\r\n        color = color.map(part => part / 255);\r\n        // CMYK\r\n      } else if (color.length === 4) {\r\n        color = color.map(part => part / 100);\r\n      }\r\n      return color;\r\n    }\r\n\r\n    return null;\r\n  },\r\n\r\n  _setColor(color, stroke) {\r\n    if (color instanceof PDFGradient) {\r\n      color.apply(stroke);\r\n      return true;\r\n      // see if tiling pattern, decode & apply it it\r\n    } else if (Array.isArray(color) && color[0] instanceof PDFTilingPattern) {\r\n      color[0].apply(stroke, color[1]);\r\n      return true;\r\n    }\r\n    // any other case should be a normal color and not a pattern\r\n    return this._setColorCore(color, stroke);\r\n  },\r\n\r\n  _setColorCore(color, stroke) {\r\n    color = this._normalizeColor(color);\r\n    if (!color) {\r\n      return false;\r\n    }\r\n\r\n    const op = stroke ? 'SCN' : 'scn';\r\n    const space = this._getColorSpace(color);\r\n    this._setColorSpace(space, stroke);\r\n\r\n    color = color.join(' ');\r\n    this.addContent(`${color} ${op}`);\r\n\r\n    return true;\r\n  },\r\n\r\n  _setColorSpace(space, stroke) {\r\n    const op = stroke ? 'CS' : 'cs';\r\n    return this.addContent(`/${space} ${op}`);\r\n  },\r\n\r\n  _getColorSpace(color) {\r\n    return color.length === 4 ? 'DeviceCMYK' : 'DeviceRGB';\r\n  },\r\n\r\n  fillColor(color, opacity) {\r\n    const set = this._setColor(color, false);\r\n    if (set) {\r\n      this.fillOpacity(opacity);\r\n    }\r\n\r\n    // save this for text wrapper, which needs to reset\r\n    // the fill color on new pages\r\n    this._fillColor = [color, opacity];\r\n    return this;\r\n  },\r\n\r\n  strokeColor(color, opacity) {\r\n    const set = this._setColor(color, true);\r\n    if (set) {\r\n      this.strokeOpacity(opacity);\r\n    }\r\n    return this;\r\n  },\r\n\r\n  opacity(opacity) {\r\n    this._doOpacity(opacity, opacity);\r\n    return this;\r\n  },\r\n\r\n  fillOpacity(opacity) {\r\n    this._doOpacity(opacity, null);\r\n    return this;\r\n  },\r\n\r\n  strokeOpacity(opacity) {\r\n    this._doOpacity(null, opacity);\r\n    return this;\r\n  },\r\n\r\n  _doOpacity(fillOpacity, strokeOpacity) {\r\n    let dictionary, name;\r\n    if (fillOpacity == null && strokeOpacity == null) {\r\n      return;\r\n    }\r\n\r\n    if (fillOpacity != null) {\r\n      fillOpacity = Math.max(0, Math.min(1, fillOpacity));\r\n    }\r\n    if (strokeOpacity != null) {\r\n      strokeOpacity = Math.max(0, Math.min(1, strokeOpacity));\r\n    }\r\n    const key = `${fillOpacity}_${strokeOpacity}`;\r\n\r\n    if (this._opacityRegistry[key]) {\r\n      [dictionary, name] = this._opacityRegistry[key];\r\n    } else {\r\n      dictionary = { Type: 'ExtGState' };\r\n\r\n      if (fillOpacity != null) {\r\n        dictionary.ca = fillOpacity;\r\n      }\r\n      if (strokeOpacity != null) {\r\n        dictionary.CA = strokeOpacity;\r\n      }\r\n\r\n      dictionary = this.ref(dictionary);\r\n      dictionary.end();\r\n      const id = ++this._opacityCount;\r\n      name = `Gs${id}`;\r\n      this._opacityRegistry[key] = [dictionary, name];\r\n    }\r\n\r\n    this.page.ext_gstates[name] = dictionary;\r\n    return this.addContent(`/${name} gs`);\r\n  },\r\n\r\n  linearGradient(x1, y1, x2, y2) {\r\n    return new PDFLinearGradient(this, x1, y1, x2, y2);\r\n  },\r\n\r\n  radialGradient(x1, y1, r1, x2, y2, r2) {\r\n    return new PDFRadialGradient(this, x1, y1, r1, x2, y2, r2);\r\n  },\r\n\r\n  pattern(bbox, xStep, yStep, stream) {\r\n    return new PDFTilingPattern(this, bbox, xStep, yStep, stream);\r\n  }\r\n};\r\n\r\nvar namedColors = {\r\n  aliceblue: [240, 248, 255],\r\n  antiquewhite: [250, 235, 215],\r\n  aqua: [0, 255, 255],\r\n  aquamarine: [127, 255, 212],\r\n  azure: [240, 255, 255],\r\n  beige: [245, 245, 220],\r\n  bisque: [255, 228, 196],\r\n  black: [0, 0, 0],\r\n  blanchedalmond: [255, 235, 205],\r\n  blue: [0, 0, 255],\r\n  blueviolet: [138, 43, 226],\r\n  brown: [165, 42, 42],\r\n  burlywood: [222, 184, 135],\r\n  cadetblue: [95, 158, 160],\r\n  chartreuse: [127, 255, 0],\r\n  chocolate: [210, 105, 30],\r\n  coral: [255, 127, 80],\r\n  cornflowerblue: [100, 149, 237],\r\n  cornsilk: [255, 248, 220],\r\n  crimson: [220, 20, 60],\r\n  cyan: [0, 255, 255],\r\n  darkblue: [0, 0, 139],\r\n  darkcyan: [0, 139, 139],\r\n  darkgoldenrod: [184, 134, 11],\r\n  darkgray: [169, 169, 169],\r\n  darkgreen: [0, 100, 0],\r\n  darkgrey: [169, 169, 169],\r\n  darkkhaki: [189, 183, 107],\r\n  darkmagenta: [139, 0, 139],\r\n  darkolivegreen: [85, 107, 47],\r\n  darkorange: [255, 140, 0],\r\n  darkorchid: [153, 50, 204],\r\n  darkred: [139, 0, 0],\r\n  darksalmon: [233, 150, 122],\r\n  darkseagreen: [143, 188, 143],\r\n  darkslateblue: [72, 61, 139],\r\n  darkslategray: [47, 79, 79],\r\n  darkslategrey: [47, 79, 79],\r\n  darkturquoise: [0, 206, 209],\r\n  darkviolet: [148, 0, 211],\r\n  deeppink: [255, 20, 147],\r\n  deepskyblue: [0, 191, 255],\r\n  dimgray: [105, 105, 105],\r\n  dimgrey: [105, 105, 105],\r\n  dodgerblue: [30, 144, 255],\r\n  firebrick: [178, 34, 34],\r\n  floralwhite: [255, 250, 240],\r\n  forestgreen: [34, 139, 34],\r\n  fuchsia: [255, 0, 255],\r\n  gainsboro: [220, 220, 220],\r\n  ghostwhite: [248, 248, 255],\r\n  gold: [255, 215, 0],\r\n  goldenrod: [218, 165, 32],\r\n  gray: [128, 128, 128],\r\n  grey: [128, 128, 128],\r\n  green: [0, 128, 0],\r\n  greenyellow: [173, 255, 47],\r\n  honeydew: [240, 255, 240],\r\n  hotpink: [255, 105, 180],\r\n  indianred: [205, 92, 92],\r\n  indigo: [75, 0, 130],\r\n  ivory: [255, 255, 240],\r\n  khaki: [240, 230, 140],\r\n  lavender: [230, 230, 250],\r\n  lavenderblush: [255, 240, 245],\r\n  lawngreen: [124, 252, 0],\r\n  lemonchiffon: [255, 250, 205],\r\n  lightblue: [173, 216, 230],\r\n  lightcoral: [240, 128, 128],\r\n  lightcyan: [224, 255, 255],\r\n  lightgoldenrodyellow: [250, 250, 210],\r\n  lightgray: [211, 211, 211],\r\n  lightgreen: [144, 238, 144],\r\n  lightgrey: [211, 211, 211],\r\n  lightpink: [255, 182, 193],\r\n  lightsalmon: [255, 160, 122],\r\n  lightseagreen: [32, 178, 170],\r\n  lightskyblue: [135, 206, 250],\r\n  lightslategray: [119, 136, 153],\r\n  lightslategrey: [119, 136, 153],\r\n  lightsteelblue: [176, 196, 222],\r\n  lightyellow: [255, 255, 224],\r\n  lime: [0, 255, 0],\r\n  limegreen: [50, 205, 50],\r\n  linen: [250, 240, 230],\r\n  magenta: [255, 0, 255],\r\n  maroon: [128, 0, 0],\r\n  mediumaquamarine: [102, 205, 170],\r\n  mediumblue: [0, 0, 205],\r\n  mediumorchid: [186, 85, 211],\r\n  mediumpurple: [147, 112, 219],\r\n  mediumseagreen: [60, 179, 113],\r\n  mediumslateblue: [123, 104, 238],\r\n  mediumspringgreen: [0, 250, 154],\r\n  mediumturquoise: [72, 209, 204],\r\n  mediumvioletred: [199, 21, 133],\r\n  midnightblue: [25, 25, 112],\r\n  mintcream: [245, 255, 250],\r\n  mistyrose: [255, 228, 225],\r\n  moccasin: [255, 228, 181],\r\n  navajowhite: [255, 222, 173],\r\n  navy: [0, 0, 128],\r\n  oldlace: [253, 245, 230],\r\n  olive: [128, 128, 0],\r\n  olivedrab: [107, 142, 35],\r\n  orange: [255, 165, 0],\r\n  orangered: [255, 69, 0],\r\n  orchid: [218, 112, 214],\r\n  palegoldenrod: [238, 232, 170],\r\n  palegreen: [152, 251, 152],\r\n  paleturquoise: [175, 238, 238],\r\n  palevioletred: [219, 112, 147],\r\n  papayawhip: [255, 239, 213],\r\n  peachpuff: [255, 218, 185],\r\n  peru: [205, 133, 63],\r\n  pink: [255, 192, 203],\r\n  plum: [221, 160, 221],\r\n  powderblue: [176, 224, 230],\r\n  purple: [128, 0, 128],\r\n  red: [255, 0, 0],\r\n  rosybrown: [188, 143, 143],\r\n  royalblue: [65, 105, 225],\r\n  saddlebrown: [139, 69, 19],\r\n  salmon: [250, 128, 114],\r\n  sandybrown: [244, 164, 96],\r\n  seagreen: [46, 139, 87],\r\n  seashell: [255, 245, 238],\r\n  sienna: [160, 82, 45],\r\n  silver: [192, 192, 192],\r\n  skyblue: [135, 206, 235],\r\n  slateblue: [106, 90, 205],\r\n  slategray: [112, 128, 144],\r\n  slategrey: [112, 128, 144],\r\n  snow: [255, 250, 250],\r\n  springgreen: [0, 255, 127],\r\n  steelblue: [70, 130, 180],\r\n  tan: [210, 180, 140],\r\n  teal: [0, 128, 128],\r\n  thistle: [216, 191, 216],\r\n  tomato: [255, 99, 71],\r\n  turquoise: [64, 224, 208],\r\n  violet: [238, 130, 238],\r\n  wheat: [245, 222, 179],\r\n  white: [255, 255, 255],\r\n  whitesmoke: [245, 245, 245],\r\n  yellow: [255, 255, 0],\r\n  yellowgreen: [154, 205, 50]\r\n};\r\n", "let cx, cy, px, py, sx, sy;\r\n\r\ncx = cy = px = py = sx = sy = 0;\r\n\r\nconst parameters = {\r\n  A: 7,\r\n  a: 7,\r\n  C: 6,\r\n  c: 6,\r\n  H: 1,\r\n  h: 1,\r\n  L: 2,\r\n  l: 2,\r\n  M: 2,\r\n  m: 2,\r\n  Q: 4,\r\n  q: 4,\r\n  S: 4,\r\n  s: 4,\r\n  T: 2,\r\n  t: 2,\r\n  V: 1,\r\n  v: 1,\r\n  Z: 0,\r\n  z: 0\r\n};\r\n\r\nconst parse = function(path) {\r\n  let cmd;\r\n  const ret = [];\r\n  let args = [];\r\n  let curArg = '';\r\n  let foundDecimal = false;\r\n  let params = 0;\r\n\r\n  for (let c of path) {\r\n    if (parameters[c] != null) {\r\n      params = parameters[c];\r\n      if (cmd) {\r\n        // save existing command\r\n        if (curArg.length > 0) {\r\n          args[args.length] = +curArg;\r\n        }\r\n        ret[ret.length] = { cmd, args };\r\n\r\n        args = [];\r\n        curArg = '';\r\n        foundDecimal = false;\r\n      }\r\n\r\n      cmd = c;\r\n    } else if (\r\n      [' ', ','].includes(c) ||\r\n      (c === '-' && curArg.length > 0 && curArg[curArg.length - 1] !== 'e') ||\r\n      (c === '.' && foundDecimal)\r\n    ) {\r\n      if (curArg.length === 0) {\r\n        continue;\r\n      }\r\n\r\n      if (args.length === params) {\r\n        // handle reused commands\r\n        ret[ret.length] = { cmd, args };\r\n        args = [+curArg];\r\n\r\n        // handle assumed commands\r\n        if (cmd === 'M') {\r\n          cmd = 'L';\r\n        }\r\n        if (cmd === 'm') {\r\n          cmd = 'l';\r\n        }\r\n      } else {\r\n        args[args.length] = +curArg;\r\n      }\r\n\r\n      foundDecimal = c === '.';\r\n\r\n      // fix for negative numbers or repeated decimals with no delimeter between commands\r\n      curArg = ['-', '.'].includes(c) ? c : '';\r\n    } else {\r\n      curArg += c;\r\n      if (c === '.') {\r\n        foundDecimal = true;\r\n      }\r\n    }\r\n  }\r\n\r\n  // add the last command\r\n  if (curArg.length > 0) {\r\n    if (args.length === params) {\r\n      // handle reused commands\r\n      ret[ret.length] = { cmd, args };\r\n      args = [+curArg];\r\n\r\n      // handle assumed commands\r\n      if (cmd === 'M') {\r\n        cmd = 'L';\r\n      }\r\n      if (cmd === 'm') {\r\n        cmd = 'l';\r\n      }\r\n    } else {\r\n      args[args.length] = +curArg;\r\n    }\r\n  }\r\n\r\n  ret[ret.length] = { cmd, args };\r\n\r\n  return ret;\r\n};\r\n\r\nconst apply = function(commands, doc) {\r\n  // current point, control point, and subpath starting point\r\n  cx = cy = px = py = sx = sy = 0;\r\n\r\n  // run the commands\r\n  for (let i = 0; i < commands.length; i++) {\r\n    const c = commands[i];\r\n    if (typeof runners[c.cmd] === 'function') {\r\n      runners[c.cmd](doc, c.args);\r\n    }\r\n  }\r\n};\r\n\r\nconst runners = {\r\n  M(doc, a) {\r\n    cx = a[0];\r\n    cy = a[1];\r\n    px = py = null;\r\n    sx = cx;\r\n    sy = cy;\r\n    return doc.moveTo(cx, cy);\r\n  },\r\n\r\n  m(doc, a) {\r\n    cx += a[0];\r\n    cy += a[1];\r\n    px = py = null;\r\n    sx = cx;\r\n    sy = cy;\r\n    return doc.moveTo(cx, cy);\r\n  },\r\n\r\n  C(doc, a) {\r\n    cx = a[4];\r\n    cy = a[5];\r\n    px = a[2];\r\n    py = a[3];\r\n    return doc.bezierCurveTo(...a);\r\n  },\r\n\r\n  c(doc, a) {\r\n    doc.bezierCurveTo(\r\n      a[0] + cx,\r\n      a[1] + cy,\r\n      a[2] + cx,\r\n      a[3] + cy,\r\n      a[4] + cx,\r\n      a[5] + cy\r\n    );\r\n    px = cx + a[2];\r\n    py = cy + a[3];\r\n    cx += a[4];\r\n    return (cy += a[5]);\r\n  },\r\n\r\n  S(doc, a) {\r\n    if (px === null) {\r\n      px = cx;\r\n      py = cy;\r\n    }\r\n\r\n    doc.bezierCurveTo(cx - (px - cx), cy - (py - cy), a[0], a[1], a[2], a[3]);\r\n    px = a[0];\r\n    py = a[1];\r\n    cx = a[2];\r\n    return (cy = a[3]);\r\n  },\r\n\r\n  s(doc, a) {\r\n    if (px === null) {\r\n      px = cx;\r\n      py = cy;\r\n    }\r\n\r\n    doc.bezierCurveTo(\r\n      cx - (px - cx),\r\n      cy - (py - cy),\r\n      cx + a[0],\r\n      cy + a[1],\r\n      cx + a[2],\r\n      cy + a[3]\r\n    );\r\n    px = cx + a[0];\r\n    py = cy + a[1];\r\n    cx += a[2];\r\n    return (cy += a[3]);\r\n  },\r\n\r\n  Q(doc, a) {\r\n    px = a[0];\r\n    py = a[1];\r\n    cx = a[2];\r\n    cy = a[3];\r\n    return doc.quadraticCurveTo(a[0], a[1], cx, cy);\r\n  },\r\n\r\n  q(doc, a) {\r\n    doc.quadraticCurveTo(a[0] + cx, a[1] + cy, a[2] + cx, a[3] + cy);\r\n    px = cx + a[0];\r\n    py = cy + a[1];\r\n    cx += a[2];\r\n    return (cy += a[3]);\r\n  },\r\n\r\n  T(doc, a) {\r\n    if (px === null) {\r\n      px = cx;\r\n      py = cy;\r\n    } else {\r\n      px = cx - (px - cx);\r\n      py = cy - (py - cy);\r\n    }\r\n\r\n    doc.quadraticCurveTo(px, py, a[0], a[1]);\r\n    px = cx - (px - cx);\r\n    py = cy - (py - cy);\r\n    cx = a[0];\r\n    return (cy = a[1]);\r\n  },\r\n\r\n  t(doc, a) {\r\n    if (px === null) {\r\n      px = cx;\r\n      py = cy;\r\n    } else {\r\n      px = cx - (px - cx);\r\n      py = cy - (py - cy);\r\n    }\r\n\r\n    doc.quadraticCurveTo(px, py, cx + a[0], cy + a[1]);\r\n    cx += a[0];\r\n    return (cy += a[1]);\r\n  },\r\n\r\n  A(doc, a) {\r\n    solveArc(doc, cx, cy, a);\r\n    cx = a[5];\r\n    return (cy = a[6]);\r\n  },\r\n\r\n  a(doc, a) {\r\n    a[5] += cx;\r\n    a[6] += cy;\r\n    solveArc(doc, cx, cy, a);\r\n    cx = a[5];\r\n    return (cy = a[6]);\r\n  },\r\n\r\n  L(doc, a) {\r\n    cx = a[0];\r\n    cy = a[1];\r\n    px = py = null;\r\n    return doc.lineTo(cx, cy);\r\n  },\r\n\r\n  l(doc, a) {\r\n    cx += a[0];\r\n    cy += a[1];\r\n    px = py = null;\r\n    return doc.lineTo(cx, cy);\r\n  },\r\n\r\n  H(doc, a) {\r\n    cx = a[0];\r\n    px = py = null;\r\n    return doc.lineTo(cx, cy);\r\n  },\r\n\r\n  h(doc, a) {\r\n    cx += a[0];\r\n    px = py = null;\r\n    return doc.lineTo(cx, cy);\r\n  },\r\n\r\n  V(doc, a) {\r\n    cy = a[0];\r\n    px = py = null;\r\n    return doc.lineTo(cx, cy);\r\n  },\r\n\r\n  v(doc, a) {\r\n    cy += a[0];\r\n    px = py = null;\r\n    return doc.lineTo(cx, cy);\r\n  },\r\n\r\n  Z(doc) {\r\n    doc.closePath();\r\n    cx = sx;\r\n    return (cy = sy);\r\n  },\r\n\r\n  z(doc) {\r\n    doc.closePath();\r\n    cx = sx;\r\n    return (cy = sy);\r\n  }\r\n};\r\n\r\nconst solveArc = function(doc, x, y, coords) {\r\n  const [rx, ry, rot, large, sweep, ex, ey] = coords;\r\n  const segs = arcToSegments(ex, ey, rx, ry, large, sweep, rot, x, y);\r\n\r\n  for (let seg of segs) {\r\n    const bez = segmentToBezier(...seg);\r\n    doc.bezierCurveTo(...bez);\r\n  }\r\n};\r\n\r\n// from Inkscape svgtopdf, thanks!\r\nconst arcToSegments = function(x, y, rx, ry, large, sweep, rotateX, ox, oy) {\r\n  const th = rotateX * (Math.PI / 180);\r\n  const sin_th = Math.sin(th);\r\n  const cos_th = Math.cos(th);\r\n  rx = Math.abs(rx);\r\n  ry = Math.abs(ry);\r\n  px = cos_th * (ox - x) * 0.5 + sin_th * (oy - y) * 0.5;\r\n  py = cos_th * (oy - y) * 0.5 - sin_th * (ox - x) * 0.5;\r\n  let pl = (px * px) / (rx * rx) + (py * py) / (ry * ry);\r\n  if (pl > 1) {\r\n    pl = Math.sqrt(pl);\r\n    rx *= pl;\r\n    ry *= pl;\r\n  }\r\n\r\n  const a00 = cos_th / rx;\r\n  const a01 = sin_th / rx;\r\n  const a10 = -sin_th / ry;\r\n  const a11 = cos_th / ry;\r\n  const x0 = a00 * ox + a01 * oy;\r\n  const y0 = a10 * ox + a11 * oy;\r\n  const x1 = a00 * x + a01 * y;\r\n  const y1 = a10 * x + a11 * y;\r\n\r\n  const d = (x1 - x0) * (x1 - x0) + (y1 - y0) * (y1 - y0);\r\n  let sfactor_sq = 1 / d - 0.25;\r\n  if (sfactor_sq < 0) {\r\n    sfactor_sq = 0;\r\n  }\r\n  let sfactor = Math.sqrt(sfactor_sq);\r\n  if (sweep === large) {\r\n    sfactor = -sfactor;\r\n  }\r\n\r\n  const xc = 0.5 * (x0 + x1) - sfactor * (y1 - y0);\r\n  const yc = 0.5 * (y0 + y1) + sfactor * (x1 - x0);\r\n\r\n  const th0 = Math.atan2(y0 - yc, x0 - xc);\r\n  const th1 = Math.atan2(y1 - yc, x1 - xc);\r\n\r\n  let th_arc = th1 - th0;\r\n  if (th_arc < 0 && sweep === 1) {\r\n    th_arc += 2 * Math.PI;\r\n  } else if (th_arc > 0 && sweep === 0) {\r\n    th_arc -= 2 * Math.PI;\r\n  }\r\n\r\n  const segments = Math.ceil(Math.abs(th_arc / (Math.PI * 0.5 + 0.001)));\r\n  const result = [];\r\n\r\n  for (let i = 0; i < segments; i++) {\r\n    const th2 = th0 + (i * th_arc) / segments;\r\n    const th3 = th0 + ((i + 1) * th_arc) / segments;\r\n    result[i] = [xc, yc, th2, th3, rx, ry, sin_th, cos_th];\r\n  }\r\n\r\n  return result;\r\n};\r\n\r\nconst segmentToBezier = function(cx, cy, th0, th1, rx, ry, sin_th, cos_th) {\r\n  const a00 = cos_th * rx;\r\n  const a01 = -sin_th * ry;\r\n  const a10 = sin_th * rx;\r\n  const a11 = cos_th * ry;\r\n\r\n  const th_half = 0.5 * (th1 - th0);\r\n  const t =\r\n    ((8 / 3) * Math.sin(th_half * 0.5) * Math.sin(th_half * 0.5)) /\r\n    Math.sin(th_half);\r\n  const x1 = cx + Math.cos(th0) - t * Math.sin(th0);\r\n  const y1 = cy + Math.sin(th0) + t * Math.cos(th0);\r\n  const x3 = cx + Math.cos(th1);\r\n  const y3 = cy + Math.sin(th1);\r\n  const x2 = x3 + t * Math.sin(th1);\r\n  const y2 = y3 - t * Math.cos(th1);\r\n\r\n  return [\r\n    a00 * x1 + a01 * y1,\r\n    a10 * x1 + a11 * y1,\r\n    a00 * x2 + a01 * y2,\r\n    a10 * x2 + a11 * y2,\r\n    a00 * x3 + a01 * y3,\r\n    a10 * x3 + a11 * y3\r\n  ];\r\n};\r\n\r\nclass SVGPath {\r\n  static apply(doc, path) {\r\n    const commands = parse(path);\r\n    apply(commands, doc);\r\n  }\r\n}\r\n\r\nexport default SVGPath;\r\n", "import SVGPath from '../path';\r\nimport PDFObject from '../object';\r\n\r\nconst { number } = PDFObject;\r\n\r\n// This constant is used to approximate a symmetrical arc using a cubic\r\n// Bezier curve.\r\nconst KAPPA = 4.0 * ((Math.sqrt(2) - 1.0) / 3.0);\r\nexport default {\r\n  initVector() {\r\n    this._ctm = [1, 0, 0, 1, 0, 0]; // current transformation matrix\r\n    return (this._ctmStack = []);\r\n  },\r\n\r\n  save() {\r\n    this._ctmStack.push(this._ctm.slice());\r\n    // TODO: save/restore colorspace and styles so not setting it unnessesarily all the time?\r\n    return this.addContent('q');\r\n  },\r\n\r\n  restore() {\r\n    this._ctm = this._ctmStack.pop() || [1, 0, 0, 1, 0, 0];\r\n    return this.addContent('Q');\r\n  },\r\n\r\n  closePath() {\r\n    return this.addContent('h');\r\n  },\r\n\r\n  lineWidth(w) {\r\n    return this.addContent(`${number(w)} w`);\r\n  },\r\n\r\n  _CAP_STYLES: {\r\n    BUTT: 0,\r\n    ROUND: 1,\r\n    SQUARE: 2\r\n  },\r\n\r\n  lineCap(c) {\r\n    if (typeof c === 'string') {\r\n      c = this._CAP_STYLES[c.toUpperCase()];\r\n    }\r\n    return this.addContent(`${c} J`);\r\n  },\r\n\r\n  _JOIN_STYLES: {\r\n    MITER: 0,\r\n    ROUND: 1,\r\n    BEVEL: 2\r\n  },\r\n\r\n  lineJoin(j) {\r\n    if (typeof j === 'string') {\r\n      j = this._JOIN_STYLES[j.toUpperCase()];\r\n    }\r\n    return this.addContent(`${j} j`);\r\n  },\r\n\r\n  miterLimit(m) {\r\n    return this.addContent(`${number(m)} M`);\r\n  },\r\n\r\n  dash(length, options = {}) {\r\n    const originalLength = length;\r\n    if (!Array.isArray(length)) {\r\n      length = [length, options.space || length];\r\n    }\r\n\r\n    const valid = length.every(x => Number.isFinite(x) && x > 0);\r\n    if (!valid) {\r\n      throw new Error(\r\n        `dash(${JSON.stringify(originalLength)}, ${JSON.stringify(\r\n          options\r\n        )}) invalid, lengths must be numeric and greater than zero`\r\n      );\r\n    }\r\n\r\n    length = length.map(number).join(' ');\r\n    return this.addContent(`[${length}] ${number(options.phase || 0)} d`);\r\n  },\r\n\r\n  undash() {\r\n    return this.addContent('[] 0 d');\r\n  },\r\n\r\n  moveTo(x, y) {\r\n    return this.addContent(`${number(x)} ${number(y)} m`);\r\n  },\r\n\r\n  lineTo(x, y) {\r\n    return this.addContent(`${number(x)} ${number(y)} l`);\r\n  },\r\n\r\n  bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y) {\r\n    return this.addContent(\r\n      `${number(cp1x)} ${number(cp1y)} ${number(cp2x)} ${number(cp2y)} ${number(\r\n        x\r\n      )} ${number(y)} c`\r\n    );\r\n  },\r\n\r\n  quadraticCurveTo(cpx, cpy, x, y) {\r\n    return this.addContent(\r\n      `${number(cpx)} ${number(cpy)} ${number(x)} ${number(y)} v`\r\n    );\r\n  },\r\n\r\n  rect(x, y, w, h) {\r\n    return this.addContent(\r\n      `${number(x)} ${number(y)} ${number(w)} ${number(h)} re`\r\n    );\r\n  },\r\n\r\n  roundedRect(x, y, w, h, r) {\r\n    if (r == null) {\r\n      r = 0;\r\n    }\r\n    r = Math.min(r, 0.5 * w, 0.5 * h);\r\n\r\n    // amount to inset control points from corners (see `ellipse`)\r\n    const c = r * (1.0 - KAPPA);\r\n\r\n    this.moveTo(x + r, y);\r\n    this.lineTo(x + w - r, y);\r\n    this.bezierCurveTo(x + w - c, y, x + w, y + c, x + w, y + r);\r\n    this.lineTo(x + w, y + h - r);\r\n    this.bezierCurveTo(x + w, y + h - c, x + w - c, y + h, x + w - r, y + h);\r\n    this.lineTo(x + r, y + h);\r\n    this.bezierCurveTo(x + c, y + h, x, y + h - c, x, y + h - r);\r\n    this.lineTo(x, y + r);\r\n    this.bezierCurveTo(x, y + c, x + c, y, x + r, y);\r\n    return this.closePath();\r\n  },\r\n\r\n  ellipse(x, y, r1, r2) {\r\n    // based on http://stackoverflow.com/questions/2172798/how-to-draw-an-oval-in-html5-canvas/2173084#2173084\r\n    if (r2 == null) {\r\n      r2 = r1;\r\n    }\r\n    x -= r1;\r\n    y -= r2;\r\n    const ox = r1 * KAPPA;\r\n    const oy = r2 * KAPPA;\r\n    const xe = x + r1 * 2;\r\n    const ye = y + r2 * 2;\r\n    const xm = x + r1;\r\n    const ym = y + r2;\r\n\r\n    this.moveTo(x, ym);\r\n    this.bezierCurveTo(x, ym - oy, xm - ox, y, xm, y);\r\n    this.bezierCurveTo(xm + ox, y, xe, ym - oy, xe, ym);\r\n    this.bezierCurveTo(xe, ym + oy, xm + ox, ye, xm, ye);\r\n    this.bezierCurveTo(xm - ox, ye, x, ym + oy, x, ym);\r\n    return this.closePath();\r\n  },\r\n\r\n  circle(x, y, radius) {\r\n    return this.ellipse(x, y, radius);\r\n  },\r\n\r\n  arc(x, y, radius, startAngle, endAngle, anticlockwise) {\r\n    if (anticlockwise == null) {\r\n      anticlockwise = false;\r\n    }\r\n    const TWO_PI = 2.0 * Math.PI;\r\n    const HALF_PI = 0.5 * Math.PI;\r\n\r\n    let deltaAng = endAngle - startAngle;\r\n\r\n    if (Math.abs(deltaAng) > TWO_PI) {\r\n      // draw only full circle if more than that is specified\r\n      deltaAng = TWO_PI;\r\n    } else if (deltaAng !== 0 && anticlockwise !== deltaAng < 0) {\r\n      // necessary to flip direction of rendering\r\n      const dir = anticlockwise ? -1 : 1;\r\n      deltaAng = dir * TWO_PI + deltaAng;\r\n    }\r\n\r\n    const numSegs = Math.ceil(Math.abs(deltaAng) / HALF_PI);\r\n    const segAng = deltaAng / numSegs;\r\n    const handleLen = (segAng / HALF_PI) * KAPPA * radius;\r\n    let curAng = startAngle;\r\n\r\n    // component distances between anchor point and control point\r\n    let deltaCx = -Math.sin(curAng) * handleLen;\r\n    let deltaCy = Math.cos(curAng) * handleLen;\r\n\r\n    // anchor point\r\n    let ax = x + Math.cos(curAng) * radius;\r\n    let ay = y + Math.sin(curAng) * radius;\r\n\r\n    // calculate and render segments\r\n    this.moveTo(ax, ay);\r\n\r\n    for (let segIdx = 0; segIdx < numSegs; segIdx++) {\r\n      // starting control point\r\n      const cp1x = ax + deltaCx;\r\n      const cp1y = ay + deltaCy;\r\n\r\n      // step angle\r\n      curAng += segAng;\r\n\r\n      // next anchor point\r\n      ax = x + Math.cos(curAng) * radius;\r\n      ay = y + Math.sin(curAng) * radius;\r\n\r\n      // next control point delta\r\n      deltaCx = -Math.sin(curAng) * handleLen;\r\n      deltaCy = Math.cos(curAng) * handleLen;\r\n\r\n      // ending control point\r\n      const cp2x = ax - deltaCx;\r\n      const cp2y = ay - deltaCy;\r\n\r\n      // render segment\r\n      this.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, ax, ay);\r\n    }\r\n\r\n    return this;\r\n  },\r\n\r\n  polygon(...points) {\r\n    this.moveTo(...(points.shift() || []));\r\n    for (let point of points) {\r\n      this.lineTo(...(point || []));\r\n    }\r\n    return this.closePath();\r\n  },\r\n\r\n  path(path) {\r\n    SVGPath.apply(this, path);\r\n    return this;\r\n  },\r\n\r\n  _windingRule(rule) {\r\n    if (/even-?odd/.test(rule)) {\r\n      return '*';\r\n    }\r\n\r\n    return '';\r\n  },\r\n\r\n  fill(color, rule) {\r\n    if (/(even-?odd)|(non-?zero)/.test(color)) {\r\n      rule = color;\r\n      color = null;\r\n    }\r\n\r\n    if (color) {\r\n      this.fillColor(color);\r\n    }\r\n    return this.addContent(`f${this._windingRule(rule)}`);\r\n  },\r\n\r\n  stroke(color) {\r\n    if (color) {\r\n      this.strokeColor(color);\r\n    }\r\n    return this.addContent('S');\r\n  },\r\n\r\n  fillAndStroke(fillColor, strokeColor, rule) {\r\n    if (strokeColor == null) {\r\n      strokeColor = fillColor;\r\n    }\r\n    const isFillRule = /(even-?odd)|(non-?zero)/;\r\n    if (isFillRule.test(fillColor)) {\r\n      rule = fillColor;\r\n      fillColor = null;\r\n    }\r\n\r\n    if (isFillRule.test(strokeColor)) {\r\n      rule = strokeColor;\r\n      strokeColor = fillColor;\r\n    }\r\n\r\n    if (fillColor) {\r\n      this.fillColor(fillColor);\r\n      this.strokeColor(strokeColor);\r\n    }\r\n\r\n    return this.addContent(`B${this._windingRule(rule)}`);\r\n  },\r\n\r\n  clip(rule) {\r\n    return this.addContent(`W${this._windingRule(rule)} n`);\r\n  },\r\n\r\n  transform(m11, m12, m21, m22, dx, dy) {\r\n    // keep track of the current transformation matrix\r\n    const m = this._ctm;\r\n    const [m0, m1, m2, m3, m4, m5] = m;\r\n    m[0] = m0 * m11 + m2 * m12;\r\n    m[1] = m1 * m11 + m3 * m12;\r\n    m[2] = m0 * m21 + m2 * m22;\r\n    m[3] = m1 * m21 + m3 * m22;\r\n    m[4] = m0 * dx + m2 * dy + m4;\r\n    m[5] = m1 * dx + m3 * dy + m5;\r\n\r\n    const values = [m11, m12, m21, m22, dx, dy].map(v => number(v)).join(' ');\r\n    return this.addContent(`${values} cm`);\r\n  },\r\n\r\n  translate(x, y) {\r\n    return this.transform(1, 0, 0, 1, x, y);\r\n  },\r\n\r\n  rotate(angle, options = {}) {\r\n    let y;\r\n    const rad = (angle * Math.PI) / 180;\r\n    const cos = Math.cos(rad);\r\n    const sin = Math.sin(rad);\r\n    let x = (y = 0);\r\n\r\n    if (options.origin != null) {\r\n      [x, y] = options.origin;\r\n      const x1 = x * cos - y * sin;\r\n      const y1 = x * sin + y * cos;\r\n      x -= x1;\r\n      y -= y1;\r\n    }\r\n\r\n    return this.transform(cos, sin, -sin, cos, x, y);\r\n  },\r\n\r\n  scale(xFactor, yFactor, options = {}) {\r\n    let y;\r\n    if (yFactor == null) {\r\n      yFactor = xFactor;\r\n    }\r\n    if (typeof yFactor === 'object') {\r\n      options = yFactor;\r\n      yFactor = xFactor;\r\n    }\r\n\r\n    let x = (y = 0);\r\n    if (options.origin != null) {\r\n      [x, y] = options.origin;\r\n      x -= xFactor * x;\r\n      y -= yFactor * y;\r\n    }\r\n\r\n    return this.transform(xFactor, 0, 0, yFactor, x, y);\r\n  }\r\n};\r\n", "import fs from 'fs';\r\n\r\nconst WIN_ANSI_MAP = {\r\n  402: 131,\r\n  8211: 150,\r\n  8212: 151,\r\n  8216: 145,\r\n  8217: 146,\r\n  8218: 130,\r\n  8220: 147,\r\n  8221: 148,\r\n  8222: 132,\r\n  8224: 134,\r\n  8225: 135,\r\n  8226: 149,\r\n  8230: 133,\r\n  8364: 128,\r\n  8240: 137,\r\n  8249: 139,\r\n  8250: 155,\r\n  710: 136,\r\n  8482: 153,\r\n  338: 140,\r\n  339: 156,\r\n  732: 152,\r\n  352: 138,\r\n  353: 154,\r\n  376: 159,\r\n  381: 142,\r\n  382: 158\r\n};\r\n\r\nconst characters = `\\\r\n.notdef       .notdef        .notdef        .notdef\r\n.notdef       .notdef        .notdef        .notdef\r\n.notdef       .notdef        .notdef        .notdef\r\n.notdef       .notdef        .notdef        .notdef\r\n.notdef       .notdef        .notdef        .notdef\r\n.notdef       .notdef        .notdef        .notdef\r\n.notdef       .notdef        .notdef        .notdef\r\n.notdef       .notdef        .notdef        .notdef\r\n  \r\nspace         exclam         quotedbl       numbersign\r\ndollar        percent        ampersand      quotesingle\r\nparenleft     parenright     asterisk       plus\r\ncomma         hyphen         period         slash\r\nzero          one            two            three\r\nfour          five           six            seven\r\neight         nine           colon          semicolon\r\nless          equal          greater        question\r\n  \r\nat            A              B              C\r\nD             E              F              G\r\nH             I              J              K\r\nL             M              N              O\r\nP             Q              R              S\r\nT             U              V              W\r\nX             Y              Z              bracketleft\r\nbackslash     bracketright   asciicircum    underscore\r\n  \r\ngrave         a              b              c\r\nd             e              f              g\r\nh             i              j              k\r\nl             m              n              o\r\np             q              r              s\r\nt             u              v              w\r\nx             y              z              braceleft\r\nbar           braceright     asciitilde     .notdef\r\n  \r\nEuro          .notdef        quotesinglbase florin\r\nquotedblbase  ellipsis       dagger         daggerdbl\r\ncircumflex    perthousand    Scaron         guilsinglleft\r\nOE            .notdef        Zcaron         .notdef\r\n.notdef       quoteleft      quoteright     quotedblleft\r\nquotedblright bullet         endash         emdash\r\ntilde         trademark      scaron         guilsinglright\r\noe            .notdef        zcaron         ydieresis\r\n  \r\nspace         exclamdown     cent           sterling\r\ncurrency      yen            brokenbar      section\r\ndieresis      copyright      ordfeminine    guillemotleft\r\nlogicalnot    hyphen         registered     macron\r\ndegree        plusminus      twosuperior    threesuperior\r\nacute         mu             paragraph      periodcentered\r\ncedilla       onesuperior    ordmasculine   guillemotright\r\nonequarter    onehalf        threequarters  questiondown\r\n  \r\nAgrave        Aacute         Acircumflex    Atilde\r\nAdieresis     Aring          AE             Ccedilla\r\nEgrave        Eacute         Ecircumflex    Edieresis\r\nIgrave        Iacute         Icircumflex    Idieresis\r\nEth           Ntilde         Ograve         Oacute\r\nOcircumflex   Otilde         Odieresis      multiply\r\nOslash        Ugrave         Uacute         Ucircumflex\r\nUdieresis     Yacute         Thorn          germandbls\r\n  \r\nagrave        aacute         acircumflex    atilde\r\nadieresis     aring          ae             ccedilla\r\negrave        eacute         ecircumflex    edieresis\r\nigrave        iacute         icircumflex    idieresis\r\neth           ntilde         ograve         oacute\r\nocircumflex   otilde         odieresis      divide\r\noslash        ugrave         uacute         ucircumflex\r\nudieresis     yacute         thorn          ydieresis\\\r\n`.split(/\\s+/);\r\n\r\nclass AFMFont {\r\n  static open(filename) {\r\n    return new AFMFont(fs.readFileSync(filename, 'utf8'));\r\n  }\r\n\r\n  constructor(contents) {\r\n    this.contents = contents;\r\n    this.attributes = {};\r\n    this.glyphWidths = {};\r\n    this.boundingBoxes = {};\r\n    this.kernPairs = {};\r\n\r\n    this.parse();\r\n    // todo: remove charWidths since appears to not be used\r\n    this.charWidths = new Array(256);\r\n    for (let char = 0; char <= 255; char++) {\r\n      this.charWidths[char] = this.glyphWidths[characters[char]];\r\n    }\r\n\r\n    this.bbox = this.attributes['FontBBox'].split(/\\s+/).map(e => +e);\r\n    this.ascender = +(this.attributes['Ascender'] || 0);\r\n    this.descender = +(this.attributes['Descender'] || 0);\r\n    this.xHeight = +(this.attributes['XHeight'] || 0);\r\n    this.capHeight = +(this.attributes['CapHeight'] || 0);\r\n    this.lineGap =\r\n      this.bbox[3] - this.bbox[1] - (this.ascender - this.descender);\r\n  }\r\n\r\n  parse() {\r\n    let section = '';\r\n    for (let line of this.contents.split('\\n')) {\r\n      var match;\r\n      var a;\r\n      if ((match = line.match(/^Start(\\w+)/))) {\r\n        section = match[1];\r\n        continue;\r\n      } else if ((match = line.match(/^End(\\w+)/))) {\r\n        section = '';\r\n        continue;\r\n      }\r\n\r\n      switch (section) {\r\n        case 'FontMetrics':\r\n          match = line.match(/(^\\w+)\\s+(.*)/);\r\n          var key = match[1];\r\n          var value = match[2];\r\n\r\n          if ((a = this.attributes[key])) {\r\n            if (!Array.isArray(a)) {\r\n              a = this.attributes[key] = [a];\r\n            }\r\n            a.push(value);\r\n          } else {\r\n            this.attributes[key] = value;\r\n          }\r\n          break;\r\n\r\n        case 'CharMetrics':\r\n          if (!/^CH?\\s/.test(line)) {\r\n            continue;\r\n          }\r\n          var name = line.match(/\\bN\\s+(\\.?\\w+)\\s*;/)[1];\r\n          this.glyphWidths[name] = +line.match(/\\bWX\\s+(\\d+)\\s*;/)[1];\r\n          break;\r\n\r\n        case 'KernPairs':\r\n          match = line.match(/^KPX\\s+(\\.?\\w+)\\s+(\\.?\\w+)\\s+(-?\\d+)/);\r\n          if (match) {\r\n            this.kernPairs[match[1] + '\\0' + match[2]] = parseInt(match[3]);\r\n          }\r\n          break;\r\n      }\r\n    }\r\n  }\r\n\r\n  encodeText(text) {\r\n    const res = [];\r\n    for (let i = 0, len = text.length; i < len; i++) {\r\n      let char = text.charCodeAt(i);\r\n      char = WIN_ANSI_MAP[char] || char;\r\n      res.push(char.toString(16));\r\n    }\r\n\r\n    return res;\r\n  }\r\n\r\n  glyphsForString(string) {\r\n    const glyphs = [];\r\n\r\n    for (let i = 0, len = string.length; i < len; i++) {\r\n      const charCode = string.charCodeAt(i);\r\n      glyphs.push(this.characterToGlyph(charCode));\r\n    }\r\n\r\n    return glyphs;\r\n  }\r\n\r\n  characterToGlyph(character) {\r\n    return characters[WIN_ANSI_MAP[character] || character] || '.notdef';\r\n  }\r\n\r\n  widthOfGlyph(glyph) {\r\n    return this.glyphWidths[glyph] || 0;\r\n  }\r\n\r\n  getKernPair(left, right) {\r\n    return this.kernPairs[left + '\\0' + right] || 0;\r\n  }\r\n\r\n  advancesForGlyphs(glyphs) {\r\n    const advances = [];\r\n\r\n    for (let index = 0; index < glyphs.length; index++) {\r\n      const left = glyphs[index];\r\n      const right = glyphs[index + 1];\r\n      advances.push(this.widthOfGlyph(left) + this.getKernPair(left, right));\r\n    }\r\n\r\n    return advances;\r\n  }\r\n}\r\n\r\nexport default AFMFont;\r\n", "class PDFFont {\r\n  constructor() {}\r\n\r\n  encode() {\r\n    throw new Error('Must be implemented by subclasses');\r\n  }\r\n\r\n  widthOfString() {\r\n    throw new Error('Must be implemented by subclasses');\r\n  }\r\n\r\n  ref() {\r\n    return this.dictionary != null\r\n      ? this.dictionary\r\n      : (this.dictionary = this.document.ref());\r\n  }\r\n\r\n  finalize() {\r\n    if (this.embedded || this.dictionary == null) {\r\n      return;\r\n    }\r\n\r\n    this.embed();\r\n    return (this.embedded = true);\r\n  }\r\n\r\n  embed() {\r\n    throw new Error('Must be implemented by subclasses');\r\n  }\r\n\r\n  lineHeight(size, includeGap) {\r\n    if (includeGap == null) {\r\n      includeGap = false;\r\n    }\r\n    const gap = includeGap ? this.lineGap : 0;\r\n    return ((this.ascender + gap - this.descender) / 1000) * size;\r\n  }\r\n}\r\n\r\nexport default PDFFont;\r\n", "import AFMFont from './afm';\r\nimport PDFFont from '../font';\r\nimport fs from 'fs';\r\n\r\n// This insanity is so bundlers can inline the font files\r\nconst STANDARD_FONTS = {\r\n  Courier() {\r\n    return fs.readFileSync(__dirname + '/data/Courier.afm', 'utf8');\r\n  },\r\n  'Courier-Bold'() {\r\n    return fs.readFileSync(__dirname + '/data/Courier-Bold.afm', 'utf8');\r\n  },\r\n  'Courier-Oblique'() {\r\n    return fs.readFileSync(__dirname + '/data/Courier-Oblique.afm', 'utf8');\r\n  },\r\n  'Courier-BoldOblique'() {\r\n    return fs.readFileSync(__dirname + '/data/Courier-BoldOblique.afm', 'utf8');\r\n  },\r\n  Helvetica() {\r\n    return fs.readFileSync(__dirname + '/data/Helvetica.afm', 'utf8');\r\n  },\r\n  'Helvetica-Bold'() {\r\n    return fs.readFileSync(__dirname + '/data/Helvetica-Bold.afm', 'utf8');\r\n  },\r\n  'Helvetica-Oblique'() {\r\n    return fs.readFileSync(__dirname + '/data/Helvetica-Oblique.afm', 'utf8');\r\n  },\r\n  'Helvetica-BoldOblique'() {\r\n    return fs.readFileSync(\r\n      __dirname + '/data/Helvetica-BoldOblique.afm',\r\n      'utf8'\r\n    );\r\n  },\r\n  'Times-Roman'() {\r\n    return fs.readFileSync(__dirname + '/data/Times-Roman.afm', 'utf8');\r\n  },\r\n  'Times-Bold'() {\r\n    return fs.readFileSync(__dirname + '/data/Times-Bold.afm', 'utf8');\r\n  },\r\n  'Times-Italic'() {\r\n    return fs.readFileSync(__dirname + '/data/Times-Italic.afm', 'utf8');\r\n  },\r\n  'Times-BoldItalic'() {\r\n    return fs.readFileSync(__dirname + '/data/Times-BoldItalic.afm', 'utf8');\r\n  },\r\n  Symbol() {\r\n    return fs.readFileSync(__dirname + '/data/Symbol.afm', 'utf8');\r\n  },\r\n  ZapfDingbats() {\r\n    return fs.readFileSync(__dirname + '/data/ZapfDingbats.afm', 'utf8');\r\n  }\r\n};\r\n\r\nclass StandardFont extends PDFFont {\r\n  constructor(document, name, id) {\r\n    super();\r\n    this.document = document;\r\n    this.name = name;\r\n    this.id = id;\r\n    this.font = new AFMFont(STANDARD_FONTS[this.name]());\r\n    ({\r\n      ascender: this.ascender,\r\n      descender: this.descender,\r\n      bbox: this.bbox,\r\n      lineGap: this.lineGap,\r\n      xHeight: this.xHeight,\r\n      capHeight: this.capHeight\r\n    } = this.font);\r\n  }\r\n\r\n  embed() {\r\n    this.dictionary.data = {\r\n      Type: 'Font',\r\n      BaseFont: this.name,\r\n      Subtype: 'Type1',\r\n      Encoding: 'WinAnsiEncoding'\r\n    };\r\n\r\n    return this.dictionary.end();\r\n  }\r\n\r\n  encode(text) {\r\n    const encoded = this.font.encodeText(text);\r\n    const glyphs = this.font.glyphsForString(`${text}`);\r\n    const advances = this.font.advancesForGlyphs(glyphs);\r\n    const positions = [];\r\n    for (let i = 0; i < glyphs.length; i++) {\r\n      const glyph = glyphs[i];\r\n      positions.push({\r\n        xAdvance: advances[i],\r\n        yAdvance: 0,\r\n        xOffset: 0,\r\n        yOffset: 0,\r\n        advanceWidth: this.font.widthOfGlyph(glyph)\r\n      });\r\n    }\r\n\r\n    return [encoded, positions];\r\n  }\r\n\r\n  widthOfString(string, size) {\r\n    const glyphs = this.font.glyphsForString(`${string}`);\r\n    const advances = this.font.advancesForGlyphs(glyphs);\r\n\r\n    let width = 0;\r\n    for (let advance of advances) {\r\n      width += advance;\r\n    }\r\n\r\n    const scale = size / 1000;\r\n    return width * scale;\r\n  }\r\n\r\n  static isStandardFont(name) {\r\n    return name in STANDARD_FONTS;\r\n  }\r\n}\r\n\r\nexport default StandardFont;\r\n", "import PDFFont from '../font';\r\n\r\nconst toHex = function(num) {\r\n  return `0000${num.toString(16)}`.slice(-4);\r\n};\r\n\r\nclass EmbeddedFont extends PDFFont {\r\n  constructor(document, font, id) {\r\n    super();\r\n    this.document = document;\r\n    this.font = font;\r\n    this.id = id;\r\n    this.subset = this.font.createSubset();\r\n    this.unicode = [[0]];\r\n    this.widths = [this.font.getGlyph(0).advanceWidth];\r\n\r\n    this.name = this.font.postscriptName;\r\n    this.scale = 1000 / this.font.unitsPerEm;\r\n    this.ascender = this.font.ascent * this.scale;\r\n    this.descender = this.font.descent * this.scale;\r\n    this.xHeight = this.font.xHeight * this.scale;\r\n    this.capHeight = this.font.capHeight * this.scale;\r\n    this.lineGap = this.font.lineGap * this.scale;\r\n    this.bbox = this.font.bbox;\r\n\r\n    if (document.options.fontLayoutCache !== false) {\r\n      this.layoutCache = Object.create(null);\r\n    }\r\n  }\r\n\r\n  layoutRun(text, features) {\r\n    const run = this.font.layout(text, features);\r\n\r\n    // Normalize position values\r\n    for (let i = 0; i < run.positions.length; i++) {\r\n      const position = run.positions[i];\r\n      for (let key in position) {\r\n        position[key] *= this.scale;\r\n      }\r\n\r\n      position.advanceWidth = run.glyphs[i].advanceWidth * this.scale;\r\n    }\r\n\r\n    return run;\r\n  }\r\n\r\n  layoutCached(text) {\r\n    if (!this.layoutCache) {\r\n      return this.layoutRun(text);\r\n    }\r\n    let cached;\r\n    if ((cached = this.layoutCache[text])) {\r\n      return cached;\r\n    }\r\n\r\n    const run = this.layoutRun(text);\r\n    this.layoutCache[text] = run;\r\n    return run;\r\n  }\r\n\r\n  layout(text, features, onlyWidth) {\r\n    // Skip the cache if any user defined features are applied\r\n    if (features) {\r\n      return this.layoutRun(text, features);\r\n    }\r\n\r\n    let glyphs = onlyWidth ? null : [];\r\n    let positions = onlyWidth ? null : [];\r\n    let advanceWidth = 0;\r\n\r\n    // Split the string by words to increase cache efficiency.\r\n    // For this purpose, spaces and tabs are a good enough delimeter.\r\n    let last = 0;\r\n    let index = 0;\r\n    while (index <= text.length) {\r\n      var needle;\r\n      if (\r\n        (index === text.length && last < index) ||\r\n        ((needle = text.charAt(index)), [' ', '\\t'].includes(needle))\r\n      ) {\r\n        const run = this.layoutCached(text.slice(last, ++index));\r\n        if (!onlyWidth) {\r\n          glyphs = glyphs.concat(run.glyphs);\r\n          positions = positions.concat(run.positions);\r\n        }\r\n\r\n        advanceWidth += run.advanceWidth;\r\n        last = index;\r\n      } else {\r\n        index++;\r\n      }\r\n    }\r\n\r\n    return { glyphs, positions, advanceWidth };\r\n  }\r\n\r\n  encode(text, features) {\r\n    const { glyphs, positions } = this.layout(text, features);\r\n\r\n    const res = [];\r\n    for (let i = 0; i < glyphs.length; i++) {\r\n      const glyph = glyphs[i];\r\n      const gid = this.subset.includeGlyph(glyph.id);\r\n      res.push(`0000${gid.toString(16)}`.slice(-4));\r\n\r\n      if (this.widths[gid] == null) {\r\n        this.widths[gid] = glyph.advanceWidth * this.scale;\r\n      }\r\n      if (this.unicode[gid] == null) {\r\n        this.unicode[gid] = glyph.codePoints;\r\n      }\r\n    }\r\n\r\n    return [res, positions];\r\n  }\r\n\r\n  widthOfString(string, size, features) {\r\n    const width = this.layout(string, features, true).advanceWidth;\r\n    const scale = size / 1000;\r\n    return width * scale;\r\n  }\r\n\r\n  embed() {\r\n    const isCFF = this.subset.cff != null;\r\n    const fontFile = this.document.ref();\r\n\r\n    if (isCFF) {\r\n      fontFile.data.Subtype = 'CIDFontType0C';\r\n    }\r\n\r\n    this.subset\r\n      .encodeStream()\r\n      .on('data', data => fontFile.write(data))\r\n      .on('end', () => fontFile.end());\r\n\r\n    const familyClass =\r\n      ((this.font['OS/2'] != null\r\n        ? this.font['OS/2'].sFamilyClass\r\n        : undefined) || 0) >> 8;\r\n    let flags = 0;\r\n    if (this.font.post.isFixedPitch) {\r\n      flags |= 1 << 0;\r\n    }\r\n    if (1 <= familyClass && familyClass <= 7) {\r\n      flags |= 1 << 1;\r\n    }\r\n    flags |= 1 << 2; // assume the font uses non-latin characters\r\n    if (familyClass === 10) {\r\n      flags |= 1 << 3;\r\n    }\r\n    if (this.font.head.macStyle.italic) {\r\n      flags |= 1 << 6;\r\n    }\r\n\r\n    // generate a tag (6 uppercase letters. 17 is the char code offset from '0' to 'A'. 73 will map to 'Z')\r\n    const tag = [1, 2, 3, 4, 5, 6]\r\n      .map(i => String.fromCharCode((this.id.charCodeAt(i) || 73) + 17))\r\n      .join('');\r\n    const name = tag + '+' + this.font.postscriptName;\r\n\r\n    const { bbox } = this.font;\r\n    const descriptor = this.document.ref({\r\n      Type: 'FontDescriptor',\r\n      FontName: name,\r\n      Flags: flags,\r\n      FontBBox: [\r\n        bbox.minX * this.scale,\r\n        bbox.minY * this.scale,\r\n        bbox.maxX * this.scale,\r\n        bbox.maxY * this.scale\r\n      ],\r\n      ItalicAngle: this.font.italicAngle,\r\n      Ascent: this.ascender,\r\n      Descent: this.descender,\r\n      CapHeight: (this.font.capHeight || this.font.ascent) * this.scale,\r\n      XHeight: (this.font.xHeight || 0) * this.scale,\r\n      StemV: 0\r\n    }); // not sure how to calculate this\r\n\r\n    if (isCFF) {\r\n      descriptor.data.FontFile3 = fontFile;\r\n    } else {\r\n      descriptor.data.FontFile2 = fontFile;\r\n    }\r\n\r\n    descriptor.end();\r\n\r\n    const descendantFontData = {\r\n      Type: 'Font',\r\n      Subtype: 'CIDFontType0',\r\n      BaseFont: name,\r\n      CIDSystemInfo: {\r\n        Registry: new String('Adobe'),\r\n        Ordering: new String('Identity'),\r\n        Supplement: 0\r\n      },\r\n      FontDescriptor: descriptor,\r\n      W: [0, this.widths]\r\n    };\r\n\r\n    if (!isCFF) {\r\n      descendantFontData.Subtype = 'CIDFontType2';\r\n      descendantFontData.CIDToGIDMap = 'Identity';\r\n    }\r\n\r\n    const descendantFont = this.document.ref(descendantFontData);\r\n\r\n    descendantFont.end();\r\n\r\n    this.dictionary.data = {\r\n      Type: 'Font',\r\n      Subtype: 'Type0',\r\n      BaseFont: name,\r\n      Encoding: 'Identity-H',\r\n      DescendantFonts: [descendantFont],\r\n      ToUnicode: this.toUnicodeCmap()\r\n    };\r\n\r\n    return this.dictionary.end();\r\n  }\r\n\r\n  // Maps the glyph ids encoded in the PDF back to unicode strings\r\n  // Because of ligature substitutions and the like, there may be one or more\r\n  // unicode characters represented by each glyph.\r\n  toUnicodeCmap() {\r\n    const cmap = this.document.ref();\r\n\r\n    const entries = [];\r\n    for (let codePoints of this.unicode) {\r\n      const encoded = [];\r\n\r\n      // encode codePoints to utf16\r\n      for (let value of codePoints) {\r\n        if (value > 0xffff) {\r\n          value -= 0x10000;\r\n          encoded.push(toHex(((value >>> 10) & 0x3ff) | 0xd800));\r\n          value = 0xdc00 | (value & 0x3ff);\r\n        }\r\n\r\n        encoded.push(toHex(value));\r\n      }\r\n\r\n      entries.push(`<${encoded.join(' ')}>`);\r\n    }\r\n\r\n    cmap.end(`\\\r\n/CIDInit /ProcSet findresource begin\r\n12 dict begin\r\nbegincmap\r\n/CIDSystemInfo <<\r\n  /Registry (Adobe)\r\n  /Ordering (UCS)\r\n  /Supplement 0\r\n>> def\r\n/CMapName /Adobe-Identity-UCS def\r\n/CMapType 2 def\r\n1 begincodespacerange\r\n<0000><ffff>\r\nendcodespacerange\r\n1 beginbfrange\r\n<0000> <${toHex(entries.length - 1)}> [${entries.join(' ')}]\r\nendbfrange\r\nendcmap\r\nCMapName currentdict /CMap defineresource pop\r\nend\r\nend\\\r\n`);\r\n\r\n    return cmap;\r\n  }\r\n}\r\n\r\nexport default EmbeddedFont;\r\n", "import fs from 'fs';\r\nimport fontkit from '@foliojs-fork/fontkit';\r\nimport StandardFont from './font/standard';\r\nimport EmbeddedFont from './font/embedded';\r\n\r\nclass PDFFontFactory {\r\n  static open(document, src, family, id) {\r\n    let font;\r\n    if (typeof src === 'string') {\r\n      if (StandardFont.isStandardFont(src)) {\r\n        return new StandardFont(document, src, id);\r\n      }\r\n\r\n      src = fs.readFileSync(src);\r\n    }\r\n    if (Buffer.isBuffer(src)) {\r\n      font = fontkit.create(src, family);\r\n    } else if (src instanceof Uint8Array) {\r\n      font = fontkit.create(Buffer.from(src), family);\r\n    } else if (src instanceof ArrayBuffer) {\r\n      font = fontkit.create(Buffer.from(new Uint8Array(src)), family);\r\n    }\r\n\r\n    if (font == null) {\r\n      throw new Error('Not a supported font format or standard PDF font.');\r\n    }\r\n\r\n    return new EmbeddedFont(document, font, id);\r\n  }\r\n}\r\n\r\nexport default PDFFontFactory;\r\n", "import PDFFontFactory from '../font_factory';\r\n\r\nexport default {\r\n  initFonts(defaultFont = 'Helvetica') {\r\n    // Lookup table for embedded fonts\r\n    this._fontFamilies = {};\r\n    this._fontCount = 0;\r\n\r\n    // Font state\r\n    this._fontSize = 12;\r\n    this._font = null;\r\n\r\n    this._registeredFonts = {};\r\n\r\n    // Set the default font\r\n    if (defaultFont) {\r\n      this.font(defaultFont);\r\n    }\r\n  },\r\n\r\n  font(src, family, size) {\r\n    let cacheKey, font;\r\n    if (typeof family === 'number') {\r\n      size = family;\r\n      family = null;\r\n    }\r\n\r\n    // check registered fonts if src is a string\r\n    if (typeof src === 'string' && this._registeredFonts[src]) {\r\n      cacheKey = src;\r\n      ({ src, family } = this._registeredFonts[src]);\r\n    } else {\r\n      cacheKey = family || src;\r\n      if (typeof cacheKey !== 'string') {\r\n        cacheKey = null;\r\n      }\r\n    }\r\n\r\n    if (size != null) {\r\n      this.fontSize(size);\r\n    }\r\n\r\n    // fast path: check if the font is already in the PDF\r\n    if ((font = this._fontFamilies[cacheKey])) {\r\n      this._font = font;\r\n      return this;\r\n    }\r\n\r\n    // load the font\r\n    const id = `F${++this._fontCount}`;\r\n    this._font = PDFFontFactory.open(this, src, family, id);\r\n\r\n    // check for existing font familes with the same name already in the PDF\r\n    // useful if the font was passed as a buffer\r\n    if ((font = this._fontFamilies[this._font.name])) {\r\n      this._font = font;\r\n      return this;\r\n    }\r\n\r\n    // save the font for reuse later\r\n    if (cacheKey) {\r\n      this._fontFamilies[cacheKey] = this._font;\r\n    }\r\n\r\n    if (this._font.name) {\r\n      this._fontFamilies[this._font.name] = this._font;\r\n    }\r\n\r\n    return this;\r\n  },\r\n\r\n  fontSize(_fontSize) {\r\n    this._fontSize = _fontSize;\r\n    return this;\r\n  },\r\n\r\n  currentLineHeight(includeGap) {\r\n    if (includeGap == null) {\r\n      includeGap = false;\r\n    }\r\n    return this._font.lineHeight(this._fontSize, includeGap);\r\n  },\r\n\r\n  registerFont(name, src, family) {\r\n    this._registeredFonts[name] = {\r\n      src,\r\n      family\r\n    };\r\n\r\n    return this;\r\n  }\r\n};\r\n", "import { EventEmitter } from 'events';\r\nimport LineBreaker from '@foliojs-fork/linebreak';\r\n\r\nclass LineWrapper extends EventEmitter {\r\n  constructor(document, options) {\r\n    super();\r\n    this.document = document;\r\n    this.indent = options.indent || 0;\r\n    this.characterSpacing = options.characterSpacing || 0;\r\n    this.wordSpacing = options.wordSpacing === 0;\r\n    this.columns = options.columns || 1;\r\n    this.columnGap = options.columnGap != null ? options.columnGap : 18; // 1/4 inch\r\n    this.lineWidth =\r\n      (options.width - this.columnGap * (this.columns - 1)) / this.columns;\r\n    this.spaceLeft = this.lineWidth;\r\n    this.startX = this.document.x;\r\n    this.startY = this.document.y;\r\n    this.column = 1;\r\n    this.ellipsis = options.ellipsis;\r\n    this.continuedX = 0;\r\n    this.features = options.features;\r\n\r\n    // calculate the maximum Y position the text can appear at\r\n    if (options.height != null) {\r\n      this.height = options.height;\r\n      this.maxY = this.startY + options.height;\r\n    } else {\r\n      this.maxY = this.document.page.maxY();\r\n    }\r\n\r\n    // handle paragraph indents\r\n    this.on('firstLine', options => {\r\n      // if this is the first line of the text segment, and\r\n      // we're continuing where we left off, indent that much\r\n      // otherwise use the user specified indent option\r\n      const indent = this.continuedX || this.indent;\r\n      this.document.x += indent;\r\n      this.lineWidth -= indent;\r\n\r\n      return this.once('line', () => {\r\n        this.document.x -= indent;\r\n        this.lineWidth += indent;\r\n        if (options.continued && !this.continuedX) {\r\n          this.continuedX = this.indent;\r\n        }\r\n        if (!options.continued) {\r\n          return (this.continuedX = 0);\r\n        }\r\n      });\r\n    });\r\n\r\n    // handle left aligning last lines of paragraphs\r\n    this.on('lastLine', options => {\r\n      const { align } = options;\r\n      if (align === 'justify') {\r\n        options.align = 'left';\r\n      }\r\n      this.lastLine = true;\r\n\r\n      return this.once('line', () => {\r\n        this.document.y += options.paragraphGap || 0;\r\n        options.align = align;\r\n        return (this.lastLine = false);\r\n      });\r\n    });\r\n  }\r\n\r\n  wordWidth(word) {\r\n    return (\r\n      this.document.widthOfString(word, this) +\r\n      this.characterSpacing +\r\n      this.wordSpacing\r\n    );\r\n  }\r\n\r\n  eachWord(text, fn) {\r\n    // setup a unicode line breaker\r\n    let bk;\r\n    const breaker = new LineBreaker(text);\r\n    let last = null;\r\n    const wordWidths = Object.create(null);\r\n\r\n    while ((bk = breaker.nextBreak())) {\r\n      var shouldContinue;\r\n      let word = text.slice(\r\n        (last != null ? last.position : undefined) || 0,\r\n        bk.position\r\n      );\r\n      let w =\r\n        wordWidths[word] != null\r\n          ? wordWidths[word]\r\n          : (wordWidths[word] = this.wordWidth(word));\r\n\r\n      // if the word is longer than the whole line, chop it up\r\n      // TODO: break by grapheme clusters, not JS string characters\r\n      if (w > this.lineWidth + this.continuedX) {\r\n        // make some fake break objects\r\n        let lbk = last;\r\n        const fbk = {};\r\n\r\n        while (word.length) {\r\n          // fit as much of the word as possible into the space we have\r\n          var l, mightGrow;\r\n          if (w > this.spaceLeft) {\r\n            // start our check at the end of our available space - this method is faster than a loop of each character and it resolves\r\n            // an issue with long loops when processing massive words, such as a huge number of spaces\r\n            l = Math.ceil(this.spaceLeft / (w / word.length));\r\n            w = this.wordWidth(word.slice(0, l));\r\n            mightGrow = w <= this.spaceLeft && l < word.length;\r\n          } else {\r\n            l = word.length;\r\n          }\r\n          let mustShrink = w > this.spaceLeft && l > 0;\r\n          // shrink or grow word as necessary after our near-guess above\r\n          while (mustShrink || mightGrow) {\r\n            if (mustShrink) {\r\n              w = this.wordWidth(word.slice(0, --l));\r\n              mustShrink = w > this.spaceLeft && l > 0;\r\n            } else {\r\n              w = this.wordWidth(word.slice(0, ++l));\r\n              mustShrink = w > this.spaceLeft && l > 0;\r\n              mightGrow = w <= this.spaceLeft && l < word.length;\r\n            }\r\n          }\r\n\r\n          // check for the edge case where a single character cannot fit into a line.\r\n          if (l === 0 && this.spaceLeft === this.lineWidth) {\r\n            l = 1;\r\n          }\r\n\r\n          // send a required break unless this is the last piece and a linebreak is not specified\r\n          fbk.required = bk.required || l < word.length;\r\n          shouldContinue = fn(word.slice(0, l), w, fbk, lbk);\r\n          lbk = { required: false };\r\n\r\n          // get the remaining piece of the word\r\n          word = word.slice(l);\r\n          w = this.wordWidth(word);\r\n\r\n          if (shouldContinue === false) {\r\n            break;\r\n          }\r\n        }\r\n      } else {\r\n        // otherwise just emit the break as it was given to us\r\n        shouldContinue = fn(word, w, bk, last);\r\n      }\r\n\r\n      if (shouldContinue === false) {\r\n        break;\r\n      }\r\n      last = bk;\r\n    }\r\n  }\r\n\r\n  wrap(text, options) {\r\n    // override options from previous continued fragments\r\n    if (options.indent != null) {\r\n      this.indent = options.indent;\r\n    }\r\n    if (options.characterSpacing != null) {\r\n      this.characterSpacing = options.characterSpacing;\r\n    }\r\n    if (options.wordSpacing != null) {\r\n      this.wordSpacing = options.wordSpacing;\r\n    }\r\n    if (options.ellipsis != null) {\r\n      this.ellipsis = options.ellipsis;\r\n    }\r\n\r\n    // make sure we're actually on the page\r\n    // and that the first line of is never by\r\n    // itself at the bottom of a page (orphans)\r\n    const nextY = this.document.y + this.document.currentLineHeight(true);\r\n    if (this.document.y > this.maxY || nextY > this.maxY) {\r\n      this.nextSection();\r\n    }\r\n\r\n    let buffer = '';\r\n    let textWidth = 0;\r\n    let wc = 0;\r\n    let lc = 0;\r\n\r\n    let { y } = this.document; // used to reset Y pos if options.continued (below)\r\n    const emitLine = () => {\r\n      options.textWidth = textWidth + this.wordSpacing * (wc - 1);\r\n      options.wordCount = wc;\r\n      options.lineWidth = this.lineWidth;\r\n      ({ y } = this.document);\r\n      this.emit('line', buffer, options, this);\r\n      return lc++;\r\n    };\r\n\r\n    this.emit('sectionStart', options, this);\r\n\r\n    this.eachWord(text, (word, w, bk, last) => {\r\n      if (last == null || last.required) {\r\n        this.emit('firstLine', options, this);\r\n        this.spaceLeft = this.lineWidth;\r\n      }\r\n\r\n      if (w <= this.spaceLeft) {\r\n        buffer += word;\r\n        textWidth += w;\r\n        wc++;\r\n      }\r\n\r\n      if (bk.required || w > this.spaceLeft) {\r\n        // if the user specified a max height and an ellipsis, and is about to pass the\r\n        // max height and max columns after the next line, append the ellipsis\r\n        const lh = this.document.currentLineHeight(true);\r\n        if (\r\n          this.height != null &&\r\n          this.ellipsis &&\r\n          this.document.y + lh * 2 > this.maxY &&\r\n          this.column >= this.columns\r\n        ) {\r\n          if (this.ellipsis === true) {\r\n            this.ellipsis = '…';\r\n          } // map default ellipsis character\r\n          buffer = buffer.replace(/\\s+$/, '');\r\n          textWidth = this.wordWidth(buffer + this.ellipsis);\r\n\r\n          // remove characters from the buffer until the ellipsis fits\r\n          // to avoid infinite loop need to stop while-loop if buffer is empty string\r\n          while (buffer && textWidth > this.lineWidth) {\r\n            buffer = buffer.slice(0, -1).replace(/\\s+$/, '');\r\n            textWidth = this.wordWidth(buffer + this.ellipsis);\r\n          }\r\n          // need to add ellipsis only if there is enough space for it\r\n          if (textWidth <= this.lineWidth) {\r\n            buffer = buffer + this.ellipsis;\r\n          }\r\n\r\n          textWidth = this.wordWidth(buffer);\r\n        }\r\n\r\n        if (bk.required) {\r\n          if (w > this.spaceLeft) {\r\n            emitLine();\r\n            buffer = word;\r\n            textWidth = w;\r\n            wc = 1;\r\n          }\r\n\r\n          this.emit('lastLine', options, this);\r\n        }\r\n\r\n        emitLine();\r\n\r\n        // if we've reached the edge of the page,\r\n        // continue on a new page or column\r\n        if (this.document.y + lh > this.maxY) {\r\n          const shouldContinue = this.nextSection();\r\n\r\n          // stop if we reached the maximum height\r\n          if (!shouldContinue) {\r\n            wc = 0;\r\n            buffer = '';\r\n            return false;\r\n          }\r\n        }\r\n\r\n        // reset the space left and buffer\r\n        if (bk.required) {\r\n          this.spaceLeft = this.lineWidth;\r\n          buffer = '';\r\n          textWidth = 0;\r\n          return (wc = 0);\r\n        } else {\r\n          // reset the space left and buffer\r\n          this.spaceLeft = this.lineWidth - w;\r\n          buffer = word;\r\n          textWidth = w;\r\n          return (wc = 1);\r\n        }\r\n      } else {\r\n        return (this.spaceLeft -= w);\r\n      }\r\n    });\r\n\r\n    if (wc > 0) {\r\n      this.emit('lastLine', options, this);\r\n      emitLine();\r\n    }\r\n\r\n    this.emit('sectionEnd', options, this);\r\n\r\n    // if the wrap is set to be continued, save the X position\r\n    // to start the first line of the next segment at, and reset\r\n    // the y position\r\n    if (options.continued === true) {\r\n      if (lc > 1) {\r\n        this.continuedX = 0;\r\n      }\r\n      this.continuedX += options.textWidth || 0;\r\n      return (this.document.y = y);\r\n    } else {\r\n      return (this.document.x = this.startX);\r\n    }\r\n  }\r\n\r\n  nextSection(options) {\r\n    this.emit('sectionEnd', options, this);\r\n\r\n    if (++this.column > this.columns) {\r\n      // if a max height was specified by the user, we're done.\r\n      // otherwise, the default is to make a new page at the bottom.\r\n      if (this.height != null) {\r\n        return false;\r\n      }\r\n\r\n      this.document.continueOnNewPage();\r\n      this.column = 1;\r\n      this.startY = this.document.page.margins.top;\r\n      this.maxY = this.document.page.maxY();\r\n      this.document.x = this.startX;\r\n      if (this.document._fillColor) {\r\n        this.document.fillColor(...this.document._fillColor);\r\n      }\r\n      this.emit('pageBreak', options, this);\r\n    } else {\r\n      this.document.x += this.lineWidth + this.columnGap;\r\n      this.document.y = this.startY;\r\n      this.emit('columnBreak', options, this);\r\n    }\r\n\r\n    this.emit('sectionStart', options, this);\r\n    return true;\r\n  }\r\n}\r\n\r\nexport default LineWrapper;\r\n", "import LineWrapper from '../line_wrapper';\r\nimport PDFObject from '../object';\r\n\r\nconst { number } = PDFObject;\r\n\r\nexport default {\r\n  initText() {\r\n    this._line = this._line.bind(this);\r\n    // Current coordinates\r\n    this.x = 0;\r\n    this.y = 0;\r\n    return (this._lineGap = 0);\r\n  },\r\n\r\n  lineGap(_lineGap) {\r\n    this._lineGap = _lineGap;\r\n    return this;\r\n  },\r\n\r\n  moveDown(lines) {\r\n    if (lines == null) {\r\n      lines = 1;\r\n    }\r\n    this.y += this.currentLineHeight(true) * lines + this._lineGap;\r\n    return this;\r\n  },\r\n\r\n  moveUp(lines) {\r\n    if (lines == null) {\r\n      lines = 1;\r\n    }\r\n    this.y -= this.currentLineHeight(true) * lines + this._lineGap;\r\n    return this;\r\n  },\r\n\r\n  _text(text, x, y, options, lineCallback) {\r\n    options = this._initOptions(x, y, options);\r\n\r\n    // Convert text to a string\r\n    text = text == null ? '' : `${text}`;\r\n\r\n    // if the wordSpacing option is specified, remove multiple consecutive spaces\r\n    if (options.wordSpacing) {\r\n      text = text.replace(/\\s{2,}/g, ' ');\r\n    }\r\n\r\n    const addStructure = () => {\r\n      if (options.structParent) {\r\n        options.structParent.add(this.struct(options.structType || 'P',\r\n          [ this.markStructureContent(options.structType || 'P') ]));\r\n      }\r\n    };\r\n\r\n    // word wrapping\r\n    if (options.width) {\r\n      let wrapper = this._wrapper;\r\n      if (!wrapper) {\r\n        wrapper = new LineWrapper(this, options);\r\n        wrapper.on('line', lineCallback);\r\n        wrapper.on('firstLine', addStructure);\r\n      }\r\n\r\n      this._wrapper = options.continued ? wrapper : null;\r\n      this._textOptions = options.continued ? options : null;\r\n      wrapper.wrap(text, options);\r\n\r\n      // render paragraphs as single lines\r\n    } else {\r\n      for (let line of text.split('\\n')) {\r\n        addStructure();\r\n        lineCallback(line, options);\r\n      }\r\n    }\r\n\r\n    return this;\r\n  },\r\n\r\n  text(text, x, y, options) {\r\n    return this._text(text, x, y, options, this._line);\r\n  },\r\n\r\n  widthOfString(string, options = {}) {\r\n    return (\r\n      this._font.widthOfString(string, this._fontSize, options.features) +\r\n      (options.characterSpacing || 0) * (string.length - 1)\r\n    );\r\n  },\r\n\r\n  heightOfString(text, options) {\r\n    const { x, y } = this;\r\n\r\n    options = this._initOptions(options);\r\n    options.height = Infinity; // don't break pages\r\n\r\n    const lineGap = options.lineGap || this._lineGap || 0;\r\n    this._text(text, this.x, this.y, options, () => {\r\n      return (this.y += this.currentLineHeight(true) + lineGap);\r\n    });\r\n\r\n    const height = this.y - y;\r\n    this.x = x;\r\n    this.y = y;\r\n\r\n    return height;\r\n  },\r\n\r\n  list(list, x, y, options, wrapper) {\r\n    options = this._initOptions(x, y, options);\r\n\r\n    const listType = options.listType || 'bullet';\r\n    const unit = Math.round((this._font.ascender / 1000) * this._fontSize);\r\n    const midLine = unit / 2;\r\n    const r = options.bulletRadius || unit / 3;\r\n    const indent =\r\n      options.textIndent || (listType === 'bullet' ? r * 5 : unit * 2);\r\n    const itemIndent =\r\n      options.bulletIndent || (listType === 'bullet' ? r * 8 : unit * 2);\r\n\r\n    let level = 1;\r\n    const items = [];\r\n    const levels = [];\r\n    const numbers = [];\r\n\r\n    var flatten = function(list) {\r\n      let n = 1;\r\n      for (let i = 0; i < list.length; i++) {\r\n        const item = list[i];\r\n        if (Array.isArray(item)) {\r\n          level++;\r\n          flatten(item);\r\n          level--;\r\n        } else {\r\n          items.push(item);\r\n          levels.push(level);\r\n          if (listType !== 'bullet') {\r\n            numbers.push(n++);\r\n          }\r\n        }\r\n      }\r\n    };\r\n\r\n    flatten(list);\r\n\r\n    const label = function(n) {\r\n      switch (listType) {\r\n        case 'numbered':\r\n          return `${n}.`;\r\n        case 'lettered':\r\n          var letter = String.fromCharCode(((n - 1) % 26) + 65);\r\n          var times = Math.floor((n - 1) / 26 + 1);\r\n          var text = Array(times + 1).join(letter);\r\n          return `${text}.`;\r\n      }\r\n    };\r\n\r\n    wrapper = new LineWrapper(this, options);\r\n    wrapper.on('line', this._line);\r\n\r\n    level = 1;\r\n    let i = 0;\r\n    wrapper.on('firstLine', () => {\r\n      let item, itemType, labelType, bodyType;\r\n      if (options.structParent) {\r\n        if (options.structTypes) {\r\n          [ itemType, labelType, bodyType ] = options.structTypes;\r\n        } else {\r\n          [ itemType, labelType, bodyType ] = [ 'LI', 'Lbl', 'LBody' ];\r\n        }\r\n      }\r\n\r\n      if (itemType) {\r\n        item = this.struct(itemType);\r\n        options.structParent.add(item);\r\n      } else if (options.structParent) {\r\n        item = options.structParent;\r\n      }\r\n\r\n      let l;\r\n      if ((l = levels[i++]) !== level) {\r\n        const diff = itemIndent * (l - level);\r\n        this.x += diff;\r\n        wrapper.lineWidth -= diff;\r\n        level = l;\r\n      }\r\n\r\n      if (item && (labelType || bodyType)) {\r\n        item.add(this.struct(labelType || bodyType,\r\n          [ this.markStructureContent(labelType || bodyType) ]));\r\n      }\r\n      switch (listType) {\r\n        case 'bullet':\r\n          this.circle(this.x - indent + r, this.y + midLine, r);\r\n          this.fill();\r\n          break;\r\n        case 'numbered':\r\n        case 'lettered':\r\n          var text = label(numbers[i - 1]);\r\n          this._fragment(text, this.x - indent, this.y, options);\r\n          break;\r\n      }\r\n\r\n      if (item && labelType && bodyType) {\r\n        item.add(this.struct(bodyType, [ this.markStructureContent(bodyType) ]));\r\n      }\r\n      if (item && item !== options.structParent) {\r\n        item.end();\r\n      }\r\n    });\r\n\r\n    wrapper.on('sectionStart', () => {\r\n      const pos = indent + itemIndent * (level - 1);\r\n      this.x += pos;\r\n      return (wrapper.lineWidth -= pos);\r\n    });\r\n\r\n    wrapper.on('sectionEnd', () => {\r\n      const pos = indent + itemIndent * (level - 1);\r\n      this.x -= pos;\r\n      return (wrapper.lineWidth += pos);\r\n    });\r\n\r\n    wrapper.wrap(items.join('\\n'), options);\r\n\r\n    return this;\r\n  },\r\n\r\n  _initOptions(x = {}, y, options = {}) {\r\n    if (typeof x === 'object') {\r\n      options = x;\r\n      x = null;\r\n    }\r\n\r\n    // clone options object\r\n    const result = Object.assign({}, options);\r\n\r\n    // extend options with previous values for continued text\r\n    if (this._textOptions) {\r\n      for (let key in this._textOptions) {\r\n        const val = this._textOptions[key];\r\n        if (key !== 'continued') {\r\n          if (result[key] === undefined) {\r\n            result[key] = val;\r\n          }\r\n        }\r\n      }\r\n    }\r\n\r\n    // Update the current position\r\n    if (x != null) {\r\n      this.x = x;\r\n    }\r\n    if (y != null) {\r\n      this.y = y;\r\n    }\r\n\r\n    // wrap to margins if no x or y position passed\r\n    if (result.lineBreak !== false) {\r\n      if (result.width == null) {\r\n        result.width = this.page.width - this.x - this.page.margins.right;\r\n      }\r\n      result.width = Math.max(result.width, 0);\r\n    }\r\n\r\n    if (!result.columns) {\r\n      result.columns = 0;\r\n    }\r\n    if (result.columnGap == null) {\r\n      result.columnGap = 18;\r\n    } // 1/4 inch\r\n\r\n    return result;\r\n  },\r\n\r\n  _line(text, options = {}, wrapper) {\r\n    this._fragment(text, this.x, this.y, options);\r\n    const lineGap = options.lineGap || this._lineGap || 0;\r\n\r\n    if (!wrapper) {\r\n      return (this.x += this.widthOfString(text));\r\n    } else {\r\n      return (this.y += this.currentLineHeight(true) + lineGap);\r\n    }\r\n  },\r\n\r\n  _fragment(text, x, y, options) {\r\n    let dy, encoded, i, positions, textWidth, words;\r\n    text = `${text}`.replace(/\\n/g, '');\r\n    if (text.length === 0) {\r\n      return;\r\n    }\r\n\r\n    // handle options\r\n    const align = options.align || 'left';\r\n    let wordSpacing = options.wordSpacing || 0;\r\n    const characterSpacing = options.characterSpacing || 0;\r\n\r\n    // text alignments\r\n    if (options.width) {\r\n      switch (align) {\r\n        case 'right':\r\n          textWidth = this.widthOfString(text.replace(/\\s+$/, ''), options);\r\n          x += options.lineWidth - textWidth;\r\n          break;\r\n\r\n        case 'center':\r\n          x += options.lineWidth / 2 - options.textWidth / 2;\r\n          break;\r\n\r\n        case 'justify':\r\n          // calculate the word spacing value\r\n          words = text.trim().split(/\\s+/);\r\n          textWidth = this.widthOfString(text.replace(/\\s+/g, ''), options);\r\n          var spaceWidth = this.widthOfString(' ') + characterSpacing;\r\n          wordSpacing = Math.max(\r\n            0,\r\n            (options.lineWidth - textWidth) / Math.max(1, words.length - 1) -\r\n              spaceWidth\r\n          );\r\n          break;\r\n      }\r\n    }\r\n\r\n    // text baseline alignments based on http://wiki.apache.org/xmlgraphics-fop/LineLayout/AlignmentHandling\r\n    if (typeof options.baseline === 'number') {\r\n      dy = -options.baseline;\r\n    } else {\r\n      switch (options.baseline) {\r\n        case 'svg-middle':\r\n          dy = 0.5 * this._font.xHeight;\r\n          break;\r\n        case 'middle':\r\n        case 'svg-central':\r\n          dy = 0.5 * (this._font.descender + this._font.ascender);\r\n          break;\r\n        case 'bottom':\r\n        case 'ideographic':\r\n          dy = this._font.descender;\r\n          break;\r\n        case 'alphabetic':\r\n          dy = 0;\r\n          break;\r\n        case 'mathematical':\r\n          dy = 0.5 * this._font.ascender;\r\n          break;\r\n        case 'hanging':\r\n          dy = 0.8 * this._font.ascender;\r\n          break;\r\n        case 'top':\r\n          dy = this._font.ascender;\r\n          break;\r\n        default:\r\n          dy = this._font.ascender;\r\n      }\r\n      dy = (dy / 1000) * this._fontSize;\r\n    }\r\n\r\n    // calculate the actual rendered width of the string after word and character spacing\r\n    const renderedWidth =\r\n      options.textWidth +\r\n      wordSpacing * (options.wordCount - 1) +\r\n      characterSpacing * (text.length - 1);\r\n\r\n    // create link annotations if the link option is given\r\n    if (options.link != null) {\r\n      this.link(x, y, renderedWidth, this.currentLineHeight(), options.link);\r\n    }\r\n    if (options.goTo != null) {\r\n      this.goTo(x, y, renderedWidth, this.currentLineHeight(), options.goTo);\r\n    }\r\n    if (options.destination != null) {\r\n      this.addNamedDestination(options.destination, 'XYZ', x, y, null);\r\n    }\r\n\r\n    // create underline\r\n    if (options.underline) {\r\n      this.save();\r\n      if (!options.stroke) {\r\n        this.strokeColor(...(this._fillColor || []));\r\n      }\r\n\r\n      const lineWidth =\r\n        this._fontSize < 10 ? 0.5 : Math.floor(this._fontSize / 10);\r\n      this.lineWidth(lineWidth);\r\n\r\n      let lineY = (y + this.currentLineHeight())  - lineWidth\r\n      this.moveTo(x, lineY);\r\n      this.lineTo(x + renderedWidth, lineY);\r\n      this.stroke();\r\n      this.restore();\r\n    }\r\n    \r\n    // create strikethrough line\r\n    if (options.strike) {\r\n      this.save();\r\n      if (!options.stroke) {\r\n        this.strokeColor(...(this._fillColor || []));\r\n      }\r\n\r\n      const lineWidth =\r\n        this._fontSize < 10 ? 0.5 : Math.floor(this._fontSize / 10);\r\n      this.lineWidth(lineWidth);\r\n\r\n      let lineY = y + this.currentLineHeight() / 2;\r\n      this.moveTo(x, lineY);\r\n      this.lineTo(x + renderedWidth, lineY);\r\n      this.stroke();\r\n      this.restore();\r\n    }\r\n\r\n    this.save();\r\n\r\n    // oblique (angle in degrees or boolean)\r\n    if (options.oblique) {\r\n      let skew;\r\n      if (typeof options.oblique === 'number') {\r\n        skew = -Math.tan((options.oblique * Math.PI) / 180);\r\n      } else {\r\n        skew = -0.25;\r\n      }\r\n      this.transform(1, 0, 0, 1, x, y);\r\n      this.transform(1, 0, skew, 1, -skew * dy, 0);\r\n      this.transform(1, 0, 0, 1, -x, -y);\r\n    }\r\n\r\n    // flip coordinate system\r\n    this.transform(1, 0, 0, -1, 0, this.page.height);\r\n    y = this.page.height - y - dy;\r\n\r\n    // add current font to page if necessary\r\n    if (this.page.fonts[this._font.id] == null) {\r\n      this.page.fonts[this._font.id] = this._font.ref();\r\n    }\r\n\r\n    // begin the text object\r\n    this.addContent('BT');\r\n\r\n    // text position\r\n    this.addContent(`1 0 0 1 ${number(x)} ${number(y)} Tm`);\r\n\r\n    // font and font size\r\n    this.addContent(`/${this._font.id} ${number(this._fontSize)} Tf`);\r\n\r\n    // rendering mode\r\n    const mode = options.fill && options.stroke ? 2 : options.stroke ? 1 : 0;\r\n    if (mode) {\r\n      this.addContent(`${mode} Tr`);\r\n    }\r\n\r\n    // Character spacing\r\n    if (characterSpacing) {\r\n      this.addContent(`${number(characterSpacing)} Tc`);\r\n    }\r\n\r\n    // Add the actual text\r\n    // If we have a word spacing value, we need to encode each word separately\r\n    // since the normal Tw operator only works on character code 32, which isn't\r\n    // used for embedded fonts.\r\n    if (wordSpacing) {\r\n      words = text.trim().split(/\\s+/);\r\n      wordSpacing += this.widthOfString(' ') + characterSpacing;\r\n      wordSpacing *= 1000 / this._fontSize;\r\n\r\n      encoded = [];\r\n      positions = [];\r\n      for (let word of words) {\r\n        const [encodedWord, positionsWord] = this._font.encode(\r\n          word,\r\n          options.features\r\n        );\r\n        encoded = encoded.concat(encodedWord);\r\n        positions = positions.concat(positionsWord);\r\n\r\n        // add the word spacing to the end of the word\r\n        // clone object because of cache\r\n        const space = {};\r\n        const object = positions[positions.length - 1];\r\n        for (let key in object) {\r\n          const val = object[key];\r\n          space[key] = val;\r\n        }\r\n        space.xAdvance += wordSpacing;\r\n        positions[positions.length - 1] = space;\r\n      }\r\n    } else {\r\n      [encoded, positions] = this._font.encode(text, options.features);\r\n    }\r\n\r\n    const scale = this._fontSize / 1000;\r\n    const commands = [];\r\n    let last = 0;\r\n    let hadOffset = false;\r\n\r\n    // Adds a segment of text to the TJ command buffer\r\n    const addSegment = cur => {\r\n      if (last < cur) {\r\n        const hex = encoded.slice(last, cur).join('');\r\n        const advance =\r\n          positions[cur - 1].xAdvance - positions[cur - 1].advanceWidth;\r\n        commands.push(`<${hex}> ${number(-advance)}`);\r\n      }\r\n\r\n      return (last = cur);\r\n    };\r\n\r\n    // Flushes the current TJ commands to the output stream\r\n    const flush = i => {\r\n      addSegment(i);\r\n\r\n      if (commands.length > 0) {\r\n        this.addContent(`[${commands.join(' ')}] TJ`);\r\n        return (commands.length = 0);\r\n      }\r\n    };\r\n\r\n    for (i = 0; i < positions.length; i++) {\r\n      // If we have an x or y offset, we have to break out of the current TJ command\r\n      // so we can move the text position.\r\n      const pos = positions[i];\r\n      if (pos.xOffset || pos.yOffset) {\r\n        // Flush the current buffer\r\n        flush(i);\r\n\r\n        // Move the text position and flush just the current character\r\n        this.addContent(\r\n          `1 0 0 1 ${number(x + pos.xOffset * scale)} ${number(\r\n            y + pos.yOffset * scale\r\n          )} Tm`\r\n        );\r\n        flush(i + 1);\r\n\r\n        hadOffset = true;\r\n      } else {\r\n        // If the last character had an offset, reset the text position\r\n        if (hadOffset) {\r\n          this.addContent(`1 0 0 1 ${number(x)} ${number(y)} Tm`);\r\n          hadOffset = false;\r\n        }\r\n\r\n        // Group segments that don't have any advance adjustments\r\n        if (pos.xAdvance - pos.advanceWidth !== 0) {\r\n          addSegment(i + 1);\r\n        }\r\n      }\r\n\r\n      x += pos.xAdvance * scale;\r\n    }\r\n\r\n    // Flush any remaining commands\r\n    flush(i);\r\n\r\n    // end the text object\r\n    this.addContent('ET');\r\n\r\n    // restore flipped coordinate system\r\n    return this.restore();\r\n  }\r\n};\r\n", "const MARKERS = [\r\n  0xffc0,\r\n  0xffc1,\r\n  0xffc2,\r\n  0xffc3,\r\n  0xffc5,\r\n  0xffc6,\r\n  0xffc7,\r\n  0xffc8,\r\n  0xffc9,\r\n  0xffca,\r\n  0xffcb,\r\n  0xffcc,\r\n  0xffcd,\r\n  0xffce,\r\n  0xffcf\r\n];\r\n\r\nconst COLOR_SPACE_MAP = {\r\n  1: 'DeviceGray',\r\n  3: 'DeviceRGB',\r\n  4: 'DeviceCMYK'\r\n};\r\n\r\nclass JPEG {\r\n  constructor(data, label) {\r\n    let marker;\r\n    this.data = data;\r\n    this.label = label;\r\n    if (this.data.readUInt16BE(0) !== 0xffd8) {\r\n      throw 'SOI not found in JPEG';\r\n    }\r\n\r\n    let pos = 2;\r\n    while (pos < this.data.length) {\r\n      marker = this.data.readUInt16BE(pos);\r\n      pos += 2;\r\n      if (MARKERS.includes(marker)) {\r\n        break;\r\n      }\r\n      pos += this.data.readUInt16BE(pos);\r\n    }\r\n\r\n    if (!MARKERS.includes(marker)) {\r\n      throw 'Invalid JPEG.';\r\n    }\r\n    pos += 2;\r\n\r\n    this.bits = this.data[pos++];\r\n    this.height = this.data.readUInt16BE(pos);\r\n    pos += 2;\r\n\r\n    this.width = this.data.readUInt16BE(pos);\r\n    pos += 2;\r\n\r\n    const channels = this.data[pos++];\r\n    this.colorSpace = COLOR_SPACE_MAP[channels];\r\n\r\n    this.obj = null;\r\n  }\r\n\r\n  embed(document) {\r\n    if (this.obj) {\r\n      return;\r\n    }\r\n\r\n    this.obj = document.ref({\r\n      Type: 'XObject',\r\n      Subtype: 'Image',\r\n      BitsPerComponent: this.bits,\r\n      Width: this.width,\r\n      Height: this.height,\r\n      ColorSpace: this.colorSpace,\r\n      Filter: 'DCTDecode'\r\n    });\r\n\r\n    // add extra decode params for CMYK images. By swapping the\r\n    // min and max values from the default, we invert the colors. See\r\n    // section 4.8.4 of the spec.\r\n    if (this.colorSpace === 'DeviceCMYK') {\r\n      this.obj.data['Decode'] = [1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0];\r\n    }\r\n\r\n    this.obj.end(this.data);\r\n\r\n    // free memory\r\n    return (this.data = null);\r\n  }\r\n}\r\n\r\nexport default JPEG;\r\n", "import zlib from 'zlib';\r\nimport PNG from 'png-js';\r\n\r\nclass PNGImage {\r\n  constructor(data, label) {\r\n    this.label = label;\r\n    this.image = new PNG(data);\r\n    this.width = this.image.width;\r\n    this.height = this.image.height;\r\n    this.imgData = this.image.imgData;\r\n    this.obj = null;\r\n  }\r\n\r\n  embed(document) {\r\n    let dataDecoded = false;\r\n\r\n    this.document = document;\r\n    if (this.obj) {\r\n      return;\r\n    }\r\n\r\n    const hasAlphaChannel = this.image.hasAlphaChannel;\r\n    const isInterlaced = this.image.interlaceMethod === 1;\r\n\r\n    this.obj = this.document.ref({\r\n      Type: 'XObject',\r\n      Subtype: 'Image',\r\n      BitsPerComponent: hasAlphaChannel ? 8 : this.image.bits,\r\n      Width: this.width,\r\n      Height: this.height,\r\n      Filter: 'FlateDecode'\r\n    });\r\n\r\n    if (!hasAlphaChannel) {\r\n      const params = this.document.ref({\r\n        Predictor: isInterlaced ? 1 : 15,\r\n        Colors: this.image.colors,\r\n        BitsPerComponent: this.image.bits,\r\n        Columns: this.width\r\n      });\r\n\r\n      this.obj.data['DecodeParms'] = params;\r\n      params.end();\r\n    }\r\n\r\n    if (this.image.palette.length === 0) {\r\n      this.obj.data['ColorSpace'] = this.image.colorSpace;\r\n    } else {\r\n      // embed the color palette in the PDF as an object stream\r\n      const palette = this.document.ref();\r\n      palette.end(Buffer.from(this.image.palette));\r\n\r\n      // build the color space array for the image\r\n      this.obj.data['ColorSpace'] = [\r\n        'Indexed',\r\n        'DeviceRGB',\r\n        this.image.palette.length / 3 - 1,\r\n        palette\r\n      ];\r\n    }\r\n\r\n    // For PNG color types 0, 2 and 3, the transparency data is stored in\r\n    // a dedicated PNG chunk.\r\n    if (this.image.transparency.grayscale != null) {\r\n      // Use Color Key Masking (spec section 4.8.5)\r\n      // An array with N elements, where N is two times the number of color components.\r\n      const val = this.image.transparency.grayscale;\r\n      this.obj.data['Mask'] = [val, val];\r\n    } else if (this.image.transparency.rgb) {\r\n      // Use Color Key Masking (spec section 4.8.5)\r\n      // An array with N elements, where N is two times the number of color components.\r\n      const { rgb } = this.image.transparency;\r\n      const mask = [];\r\n      for (let x of rgb) {\r\n        mask.push(x, x);\r\n      }\r\n\r\n      this.obj.data['Mask'] = mask;\r\n    } else if (this.image.transparency.indexed) {\r\n      // Create a transparency SMask for the image based on the data\r\n      // in the PLTE and tRNS sections. See below for details on SMasks.\r\n      dataDecoded = true;\r\n      return this.loadIndexedAlphaChannel();\r\n    } else if (hasAlphaChannel) {\r\n      // For PNG color types 4 and 6, the transparency data is stored as a alpha\r\n      // channel mixed in with the main image data. Separate this data out into an\r\n      // SMask object and store it separately in the PDF.\r\n      dataDecoded = true;\r\n      return this.splitAlphaChannel();\r\n    }\r\n\r\n    if (isInterlaced && !dataDecoded) {\r\n      return this.decodeData();\r\n    }\r\n\r\n    this.finalize();\r\n  }\r\n\r\n  finalize() {\r\n    if (this.alphaChannel) {\r\n      const sMask = this.document.ref({\r\n        Type: 'XObject',\r\n        Subtype: 'Image',\r\n        Height: this.height,\r\n        Width: this.width,\r\n        BitsPerComponent: 8,\r\n        Filter: 'FlateDecode',\r\n        ColorSpace: 'DeviceGray',\r\n        Decode: [0, 1]\r\n      });\r\n\r\n      sMask.end(this.alphaChannel);\r\n      this.obj.data['SMask'] = sMask;\r\n    }\r\n\r\n    // add the actual image data\r\n    this.obj.end(this.imgData);\r\n\r\n    // free memory\r\n    this.image = null;\r\n    return (this.imgData = null);\r\n  }\r\n\r\n  splitAlphaChannel() {\r\n    return this.image.decodePixels(pixels => {\r\n      let a, p;\r\n      const colorCount = this.image.colors;\r\n      const pixelCount = this.width * this.height;\r\n      const imgData = Buffer.alloc(pixelCount * colorCount);\r\n      const alphaChannel = Buffer.alloc(pixelCount);\r\n\r\n      let i = (p = a = 0);\r\n      const len = pixels.length;\r\n      // For 16bit images copy only most significant byte (MSB) - PNG data is always stored in network byte order (MSB first)\r\n      const skipByteCount = this.image.bits === 16 ? 1 : 0;\r\n      while (i < len) {\r\n        for (let colorIndex = 0; colorIndex < colorCount; colorIndex++) {\r\n          imgData[p++] = pixels[i++];\r\n          i += skipByteCount;\r\n        }\r\n        alphaChannel[a++] = pixels[i++];\r\n        i += skipByteCount;\r\n      }\r\n\r\n      this.imgData = zlib.deflateSync(imgData);\r\n      this.alphaChannel = zlib.deflateSync(alphaChannel);\r\n      return this.finalize();\r\n    });\r\n  }\r\n\r\n  loadIndexedAlphaChannel() {\r\n    const transparency = this.image.transparency.indexed;\r\n    return this.image.decodePixels(pixels => {\r\n      const alphaChannel = Buffer.alloc(this.width * this.height);\r\n\r\n      let i = 0;\r\n      for (let j = 0, end = pixels.length; j < end; j++) {\r\n        alphaChannel[i++] = transparency[pixels[j]];\r\n      }\r\n\r\n      this.alphaChannel = zlib.deflateSync(alphaChannel);\r\n      return this.finalize();\r\n    });\r\n  }\r\n\r\n  decodeData() {\r\n    this.image.decodePixels(pixels => {\r\n      this.imgData = zlib.deflateSync(pixels);\r\n      this.finalize();\r\n    });\r\n  }\r\n}\r\n\r\nexport default PNGImage;\r\n", "/*\r\nPDFImage - embeds images in PDF documents\r\nBy Devon Govett\r\n*/\r\n\r\nimport fs from 'fs';\r\nimport JPEG from './image/jpeg';\r\nimport PNG from './image/png';\r\n\r\nclass PDFImage {\r\n  static open(src, label) {\r\n    let data;\r\n    if (Buffer.isBuffer(src)) {\r\n      data = src;\r\n    } else if (src instanceof ArrayBuffer) {\r\n      data = Buffer.from(new Uint8Array(src));\r\n    } else {\r\n      let match;\r\n      if ((match = /^data:.+;base64,(.*)$/.exec(src))) {\r\n        data = Buffer.from(match[1], 'base64');\r\n      } else {\r\n        data = fs.readFileSync(src);\r\n        if (!data) {\r\n          return;\r\n        }\r\n      }\r\n    }\r\n\r\n    if (data[0] === 0xff && data[1] === 0xd8) {\r\n      return new JPEG(data, label);\r\n    } else if (data[0] === 0x89 && data.toString('ascii', 1, 4) === 'PNG') {\r\n      return new PNG(data, label);\r\n    } else {\r\n      throw new Error('Unknown image format.');\r\n    }\r\n  }\r\n}\r\n\r\nexport default PDFImage;\r\n", "import PDFImage from '../image';\r\n\r\nexport default {\r\n  initImages() {\r\n    this._imageRegistry = {};\r\n    return (this._imageCount = 0);\r\n  },\r\n\r\n  image(src, x, y, options = {}) {\r\n    let bh, bp, bw, image, ip, left, left1;\r\n    if (typeof x === 'object') {\r\n      options = x;\r\n      x = null;\r\n    }\r\n\r\n    x = (left = x != null ? x : options.x) != null ? left : this.x;\r\n    y = (left1 = y != null ? y : options.y) != null ? left1 : this.y;\r\n\r\n    if (typeof src === 'string') {\r\n      image = this._imageRegistry[src];\r\n    }\r\n\r\n    if (!image) {\r\n      if (src.width && src.height) {\r\n        image = src;\r\n      } else {\r\n        image = this.openImage(src);\r\n      }\r\n    }\r\n\r\n    if (!image.obj) {\r\n      image.embed(this);\r\n    }\r\n\r\n    if (this.page.xobjects[image.label] == null) {\r\n      this.page.xobjects[image.label] = image.obj;\r\n    }\r\n\r\n    let w = options.width || image.width;\r\n    let h = options.height || image.height;\r\n\r\n    if (options.width && !options.height) {\r\n      const wp = w / image.width;\r\n      w = image.width * wp;\r\n      h = image.height * wp;\r\n    } else if (options.height && !options.width) {\r\n      const hp = h / image.height;\r\n      w = image.width * hp;\r\n      h = image.height * hp;\r\n    } else if (options.scale) {\r\n      w = image.width * options.scale;\r\n      h = image.height * options.scale;\r\n    } else if (options.fit) {\r\n      [bw, bh] = options.fit;\r\n      bp = bw / bh;\r\n      ip = image.width / image.height;\r\n      if (ip > bp) {\r\n        w = bw;\r\n        h = bw / ip;\r\n      } else {\r\n        h = bh;\r\n        w = bh * ip;\r\n      }\r\n    } else if (options.cover) {\r\n      [bw, bh] = options.cover;\r\n      bp = bw / bh;\r\n      ip = image.width / image.height;\r\n      if (ip > bp) {\r\n        h = bh;\r\n        w = bh * ip;\r\n      } else {\r\n        w = bw;\r\n        h = bw / ip;\r\n      }\r\n    }\r\n\r\n    if (options.fit || options.cover) {\r\n      if (options.align === 'center') {\r\n        x = x + bw / 2 - w / 2;\r\n      } else if (options.align === 'right') {\r\n        x = x + bw - w;\r\n      }\r\n\r\n      if (options.valign === 'center') {\r\n        y = y + bh / 2 - h / 2;\r\n      } else if (options.valign === 'bottom') {\r\n        y = y + bh - h;\r\n      }\r\n    }\r\n\r\n    // create link annotations if the link option is given\r\n    if (options.link != null) {\r\n      this.link(x, y, w, h, options.link);\r\n    }\r\n    if (options.goTo != null) {\r\n      this.goTo(x, y, w, h, options.goTo);\r\n    }\r\n    if (options.destination != null) {\r\n      this.addNamedDestination(options.destination, 'XYZ', x, y, null);\r\n    }\r\n\r\n    // Set the current y position to below the image if it is in the document flow\r\n    if (this.y === y) {\r\n      this.y += h;\r\n    }\r\n\r\n    this.save();\r\n    this.transform(w, 0, 0, -h, x, y + h);\r\n    this.addContent(`/${image.label} Do`);\r\n    this.restore();\r\n\r\n    return this;\r\n  },\r\n\r\n  openImage(src) {\r\n    let image;\r\n    if (typeof src === 'string') {\r\n      image = this._imageRegistry[src];\r\n    }\r\n\r\n    if (!image) {\r\n      image = PDFImage.open(src, `I${++this._imageCount}`);\r\n      if (typeof src === 'string') {\r\n        this._imageRegistry[src] = image;\r\n      }\r\n    }\r\n\r\n    return image;\r\n  }\r\n};\r\n", "export default {\r\n  annotate(x, y, w, h, options) {\r\n    options.Type = 'Annot';\r\n    options.Rect = this._convertRect(x, y, w, h);\r\n    options.Border = [0, 0, 0];\r\n\r\n    if (options.Subtype === 'Link' && typeof options.F === 'undefined') {\r\n      options.F = 1 << 2; // Print Annotation Flag\r\n    }\r\n\r\n    if (options.Subtype !== 'Link') {\r\n      if (options.C == null) {\r\n        options.C = this._normalizeColor(options.color || [0, 0, 0]);\r\n      }\r\n    } // convert colors\r\n    delete options.color;\r\n\r\n    if (typeof options.Dest === 'string') {\r\n      options.Dest = new String(options.Dest);\r\n    }\r\n\r\n    // Capitalize keys\r\n    for (let key in options) {\r\n      const val = options[key];\r\n      options[key[0].toUpperCase() + key.slice(1)] = val;\r\n    }\r\n\r\n    const ref = this.ref(options);\r\n    this.page.annotations.push(ref);\r\n    ref.end();\r\n    return this;\r\n  },\r\n\r\n  note(x, y, w, h, contents, options = {}) {\r\n    options.Subtype = 'Text';\r\n    options.Contents = new String(contents);\r\n    options.Name = 'Comment';\r\n    if (options.color == null) {\r\n      options.color = [243, 223, 92];\r\n    }\r\n    return this.annotate(x, y, w, h, options);\r\n  },\r\n\r\n  goTo(x, y, w, h, name, options = {}) {\r\n    options.Subtype = 'Link';\r\n    options.A = this.ref({\r\n      S: 'GoTo',\r\n      D: new String(name)\r\n    });\r\n    options.A.end();\r\n    return this.annotate(x, y, w, h, options);\r\n  },\r\n\r\n  link(x, y, w, h, url, options = {}) {\r\n    options.Subtype = 'Link';\r\n\r\n    if (typeof url === 'number') {\r\n      // Link to a page in the document (the page must already exist)\r\n      const pages = this._root.data.Pages.data;\r\n      if (url >= 0 && url < pages.Kids.length) {\r\n        options.A = this.ref({\r\n          S: 'GoTo',\r\n          D: [pages.Kids[url], 'XYZ', null, null, null]\r\n        });\r\n        options.A.end();\r\n      } else {\r\n        throw new Error(`The document has no page ${url}`);\r\n      }\r\n    } else {\r\n      // Link to an external url\r\n      options.A = this.ref({\r\n        S: 'URI',\r\n        URI: new String(url)\r\n      });\r\n      options.A.end();\r\n    }\r\n\r\n    return this.annotate(x, y, w, h, options);\r\n  },\r\n\r\n  _markup(x, y, w, h, options = {}) {\r\n    const [x1, y1, x2, y2] = this._convertRect(x, y, w, h);\r\n    options.QuadPoints = [x1, y2, x2, y2, x1, y1, x2, y1];\r\n    options.Contents = new String();\r\n    return this.annotate(x, y, w, h, options);\r\n  },\r\n\r\n  highlight(x, y, w, h, options = {}) {\r\n    options.Subtype = 'Highlight';\r\n    if (options.color == null) {\r\n      options.color = [241, 238, 148];\r\n    }\r\n    return this._markup(x, y, w, h, options);\r\n  },\r\n\r\n  underline(x, y, w, h, options = {}) {\r\n    options.Subtype = 'Underline';\r\n    return this._markup(x, y, w, h, options);\r\n  },\r\n\r\n  strike(x, y, w, h, options = {}) {\r\n    options.Subtype = 'StrikeOut';\r\n    return this._markup(x, y, w, h, options);\r\n  },\r\n\r\n  lineAnnotation(x1, y1, x2, y2, options = {}) {\r\n    options.Subtype = 'Line';\r\n    options.Contents = new String();\r\n    options.L = [x1, this.page.height - y1, x2, this.page.height - y2];\r\n    return this.annotate(x1, y1, x2, y2, options);\r\n  },\r\n\r\n  rectAnnotation(x, y, w, h, options = {}) {\r\n    options.Subtype = 'Square';\r\n    options.Contents = new String();\r\n    return this.annotate(x, y, w, h, options);\r\n  },\r\n\r\n  ellipseAnnotation(x, y, w, h, options = {}) {\r\n    options.Subtype = 'Circle';\r\n    options.Contents = new String();\r\n    return this.annotate(x, y, w, h, options);\r\n  },\r\n\r\n  textAnnotation(x, y, w, h, text, options = {}) {\r\n    options.Subtype = 'FreeText';\r\n    options.Contents = new String(text);\r\n    options.DA = new String();\r\n    return this.annotate(x, y, w, h, options);\r\n  },\r\n\r\n  fileAnnotation(x, y, w, h, file = {}, options = {}) {\r\n    // create hidden file\r\n    const filespec = this.file(\r\n      file.src,\r\n      Object.assign({ hidden: true }, file)\r\n    );\r\n\r\n    options.Subtype = 'FileAttachment';\r\n    options.FS = filespec;\r\n\r\n    // add description from filespec unless description (Contents) has already been set\r\n    if (options.Contents) {\r\n      options.Contents = new String(options.Contents);\r\n    } else if (filespec.data.Desc) {\r\n      options.Contents = filespec.data.Desc;\r\n    }\r\n\r\n    return this.annotate(x, y, w, h, options);\r\n  },\r\n\r\n  _convertRect(x1, y1, w, h) {\r\n    // flip y1 and y2\r\n    let y2 = y1;\r\n    y1 += h;\r\n\r\n    // make x2\r\n    let x2 = x1 + w;\r\n\r\n    // apply current transformation matrix to points\r\n    const [m0, m1, m2, m3, m4, m5] = this._ctm;\r\n    x1 = m0 * x1 + m2 * y1 + m4;\r\n    y1 = m1 * x1 + m3 * y1 + m5;\r\n    x2 = m0 * x2 + m2 * y2 + m4;\r\n    y2 = m1 * x2 + m3 * y2 + m5;\r\n\r\n    return [x1, y1, x2, y2];\r\n  }\r\n};\r\n", "class PDFOutline {\r\n  constructor(document, parent, title, dest, options = { expanded: false }) {\r\n    this.document = document;\r\n    this.options = options;\r\n    this.outlineData = {};\r\n\r\n    if (dest !== null) {\r\n      this.outlineData['Dest'] = [dest.dictionary, 'Fit'];\r\n    }\r\n\r\n    if (parent !== null) {\r\n      this.outlineData['Parent'] = parent;\r\n    }\r\n\r\n    if (title !== null) {\r\n      this.outlineData['Title'] = new String(title);\r\n    }\r\n\r\n    this.dictionary = this.document.ref(this.outlineData);\r\n    this.children = [];\r\n  }\r\n\r\n  addItem(title, options = { expanded: false }) {\r\n    const result = new PDFOutline(\r\n      this.document,\r\n      this.dictionary,\r\n      title,\r\n      this.document.page,\r\n      options\r\n    );\r\n    this.children.push(result);\r\n\r\n    return result;\r\n  }\r\n\r\n  endOutline() {\r\n    if (this.children.length > 0) {\r\n      if (this.options.expanded) {\r\n        this.outlineData.Count = this.children.length;\r\n      }\r\n\r\n      const first = this.children[0],\r\n        last = this.children[this.children.length - 1];\r\n      this.outlineData.First = first.dictionary;\r\n      this.outlineData.Last = last.dictionary;\r\n\r\n      for (let i = 0, len = this.children.length; i < len; i++) {\r\n        const child = this.children[i];\r\n        if (i > 0) {\r\n          child.outlineData.Prev = this.children[i - 1].dictionary;\r\n        }\r\n        if (i < this.children.length - 1) {\r\n          child.outlineData.Next = this.children[i + 1].dictionary;\r\n        }\r\n        child.endOutline();\r\n      }\r\n    }\r\n\r\n    return this.dictionary.end();\r\n  }\r\n}\r\n\r\nexport default PDFOutline;\r\n", "import PDFOutline from '../outline';\r\n\r\nexport default {\r\n  initOutline() {\r\n    return (this.outline = new PDFOutline(this, null, null, null));\r\n  },\r\n\r\n  endOutline() {\r\n    this.outline.endOutline();\r\n    if (this.outline.children.length > 0) {\r\n      this._root.data.Outlines = this.outline.dictionary;\r\n      return (this._root.data.PageMode = 'UseOutlines');\r\n    }\r\n  }\r\n};\r\n", "/*\r\nPDFStructureContent - a reference to a marked structure content\r\nBy Ben Schmidt\r\n*/\r\n\r\nclass PDFStructureContent {\r\n  constructor(pageRef, mcid) {\r\n    this.refs = [{ pageRef, mcid }];\r\n  }\r\n\r\n  push(structContent) {\r\n    structContent.refs.forEach((ref) => this.refs.push(ref));\r\n  }\r\n}\r\n\r\nexport default PDFStructureContent;\r\n", "/*\r\nPDFStructureElement - represents an element in the PDF logical structure tree\r\nBy Ben Schmidt\r\n*/\r\n\r\nimport PDFStructureContent from \"./structure_content\";\r\n\r\nclass PDFStructureElement {\r\n  constructor(document, type, options = {}, children = null) {\r\n    this.document = document;\r\n\r\n    this._attached = false;\r\n    this._ended = false;\r\n    this._flushed = false;\r\n    this.dictionary = document.ref({\r\n      // Type: \"StructElem\",\r\n      S: type\r\n    });\r\n\r\n    const data = this.dictionary.data;\r\n\r\n    if (Array.isArray(options) || this._isValidChild(options)) {\r\n      children = options;\r\n      options = {};\r\n    }\r\n\r\n    if (typeof options.title !== 'undefined') {\r\n      data.T = new String(options.title);\r\n    }\r\n    if (typeof options.lang !== 'undefined') {\r\n      data.Lang = new String(options.lang);\r\n    }\r\n    if (typeof options.alt !== 'undefined') {\r\n      data.Alt = new String(options.alt);\r\n    }\r\n    if (typeof options.expanded !== 'undefined') {\r\n      data.E = new String(options.expanded);\r\n    }\r\n    if (typeof options.actual !== 'undefined') {\r\n      data.ActualText = new String(options.actual);\r\n    }\r\n\r\n    this._children = [];\r\n\r\n    if (children) {\r\n      if (!Array.isArray(children)) {\r\n        children = [children];\r\n      }\r\n      children.forEach((child) => this.add(child));\r\n      this.end();\r\n    }\r\n  }\r\n\r\n  add(child) {\r\n    if (this._ended) {\r\n      throw new Error(`Cannot add child to already-ended structure element`);\r\n    }\r\n\r\n    if (!this._isValidChild(child)) {\r\n      throw new Error(`Invalid structure element child`);\r\n    }\r\n\r\n    if (child instanceof PDFStructureElement) {\r\n      child.setParent(this.dictionary);\r\n      if (this._attached) {\r\n        child.setAttached();\r\n      }\r\n    }\r\n\r\n    if (child instanceof PDFStructureContent) {\r\n      this._addContentToParentTree(child);\r\n    }\r\n\r\n    if (typeof child === 'function' && this._attached) {\r\n      // _contentForClosure() adds the content to the parent tree\r\n      child = this._contentForClosure(child);\r\n    }\r\n\r\n    this._children.push(child);\r\n\r\n    return this;\r\n  }\r\n\r\n  _addContentToParentTree(content) {\r\n    content.refs.forEach(({ pageRef, mcid }) => {\r\n      const pageStructParents = this.document.getStructParentTree()\r\n        .get(pageRef.data.StructParents);\r\n      pageStructParents[mcid] = this.dictionary;\r\n    });\r\n  }\r\n\r\n  setParent(parentRef) {\r\n    if (this.dictionary.data.P) {\r\n      throw new Error(`Structure element added to more than one parent`);\r\n    }\r\n\r\n    this.dictionary.data.P = parentRef;\r\n\r\n    this._flush();\r\n  }\r\n\r\n  setAttached() {\r\n    if (this._attached) {\r\n      return;\r\n    }\r\n\r\n    this._children.forEach((child, index) => {\r\n      if (child instanceof PDFStructureElement) {\r\n        child.setAttached();\r\n      }\r\n      if (typeof child === 'function') {\r\n        this._children[index] = this._contentForClosure(child);\r\n      }\r\n    });\r\n\r\n    this._attached = true;\r\n\r\n    this._flush();\r\n  }\r\n\r\n  end() {\r\n    if (this._ended) {\r\n      return;\r\n    }\r\n\r\n    this._children\r\n      .filter((child) => child instanceof PDFStructureElement)\r\n      .forEach((child) => child.end());\r\n\r\n    this._ended = true;\r\n\r\n    this._flush();\r\n  }\r\n\r\n  _isValidChild(child) {\r\n    return child instanceof PDFStructureElement ||\r\n        child instanceof PDFStructureContent ||\r\n        typeof child === 'function';\r\n  }\r\n\r\n  _contentForClosure(closure) {\r\n    const content = this.document.markStructureContent(this.dictionary.data.S);\r\n    closure();\r\n    this.document.endMarkedContent();\r\n\r\n    this._addContentToParentTree(content);\r\n\r\n    return content;\r\n  }\r\n\r\n  _isFlushable() {\r\n    if (!this.dictionary.data.P || !this._ended) {\r\n      return false;\r\n    }\r\n\r\n    return this._children.every((child) => {\r\n      if (typeof child === 'function') {\r\n        return false;\r\n      }\r\n      if (child instanceof PDFStructureElement) {\r\n        return child._isFlushable();\r\n      }\r\n      return true;\r\n    });\r\n  }\r\n\r\n  _flush() {\r\n    if (this._flushed || !this._isFlushable()) {\r\n      return;\r\n    }\r\n\r\n    this.dictionary.data.K = [];\r\n\r\n    this._children.forEach((child) => this._flushChild(child));\r\n\r\n    this.dictionary.end();\r\n\r\n    // free memory used by children; the dictionary itself may still be\r\n    // referenced by a parent structure element or root, but we can\r\n    // at least trim the tree here\r\n    this._children = [];\r\n    this.dictionary.data.K = null;\r\n\r\n    this._flushed = true;\r\n  }\r\n\r\n  _flushChild(child) {\r\n    if (child instanceof PDFStructureElement) {\r\n      this.dictionary.data.K.push(child.dictionary);\r\n    }\r\n\r\n    if (child instanceof PDFStructureContent) {\r\n      child.refs.forEach(({ pageRef, mcid }) => {\r\n        if (!this.dictionary.data.Pg) {\r\n          this.dictionary.data.Pg = pageRef;\r\n        }\r\n\r\n        if (this.dictionary.data.Pg === pageRef) {\r\n          this.dictionary.data.K.push(mcid);\r\n        } else {\r\n          this.dictionary.data.K.push({\r\n            Type: \"MCR\",\r\n            Pg: pageRef,\r\n            MCID: mcid\r\n          });\r\n        }\r\n      });\r\n    }\r\n  }\r\n}\r\n\r\nexport default PDFStructureElement;\r\n", "/*\r\nPDFNumberTree - represents a number tree object\r\n*/\r\n\r\nimport PDFTree from \"./tree\";\r\n\r\nclass PDFNumberTree extends PDFTree {\r\n  _compareKeys(a, b) {\r\n    return parseInt(a) - parseInt(b);\r\n  }\r\n\r\n  _keysName() {\r\n    return \"Nums\";\r\n  }\r\n\r\n  _dataForKey(k) {\r\n    return parseInt(k);\r\n  }\r\n}\r\n\r\nexport default PDFNumberTree;\r\n", "/*\r\nMarkings mixin - support marked content sequences in content streams\r\nBy Ben Schmidt\r\n*/\r\n\r\nimport PDFStructureElement from \"../structure_element\";\r\nimport PDFStructureContent from \"../structure_content\";\r\nimport PDFNumberTree from \"../number_tree\";\r\nimport PDFObject from \"../object\";\r\n\r\nexport default {\r\n\r\n  initMarkings(options) {\r\n    this.structChildren = [];\r\n\r\n    if (options.tagged) {\r\n      this.getMarkInfoDictionary().data.Marked = true;\r\n      this.getStructTreeRoot();\r\n    }\r\n  },\r\n\r\n  markContent(tag, options = null) {\r\n    if (tag === 'Artifact' || (options && options.mcid)) {\r\n      let toClose = 0;\r\n      this.page.markings.forEach((marking) => {\r\n        if (toClose || marking.structContent || marking.tag === 'Artifact') {\r\n          toClose++;\r\n        }\r\n      });\r\n      while (toClose--) {\r\n        this.endMarkedContent();\r\n      }\r\n    }\r\n\r\n    if (!options) {\r\n      this.page.markings.push({ tag });\r\n      this.addContent(`/${tag} BMC`);\r\n      return this;\r\n    }\r\n\r\n    this.page.markings.push({ tag, options });\r\n\r\n    const dictionary = {};\r\n\r\n    if (typeof options.mcid !== 'undefined') {\r\n      dictionary.MCID = options.mcid;\r\n    }\r\n    if (tag === 'Artifact') {\r\n      if (typeof options.type === 'string') {\r\n        dictionary.Type = options.type;\r\n      }\r\n      if (Array.isArray(options.bbox)) {\r\n        dictionary.BBox = [options.bbox[0], this.page.height - options.bbox[3],\r\n          options.bbox[2], this.page.height - options.bbox[1]];\r\n      }\r\n      if (Array.isArray(options.attached) &&\r\n        options.attached.every(val => typeof val === 'string')) {\r\n        dictionary.Attached = options.attached;\r\n      }\r\n    }\r\n    if (tag === 'Span') {\r\n      if (options.lang) {\r\n        dictionary.Lang = new String(options.lang);\r\n      }\r\n      if (options.alt) {\r\n        dictionary.Alt = new String(options.alt);\r\n      }\r\n      if (options.expanded) {\r\n        dictionary.E = new String(options.expanded);\r\n      }\r\n      if (options.actual) {\r\n        dictionary.ActualText = new String(options.actual);\r\n      }\r\n    }\r\n\r\n    this.addContent(`/${tag} ${PDFObject.convert(dictionary)} BDC`);\r\n    return this;\r\n  },\r\n\r\n  markStructureContent(tag, options = {}) {\r\n    const pageStructParents = this.getStructParentTree().get(this.page.structParentTreeKey);\r\n    const mcid = pageStructParents.length;\r\n    pageStructParents.push(null);\r\n\r\n    this.markContent(tag, { ...options, mcid });\r\n\r\n    const structContent = new PDFStructureContent(this.page.dictionary, mcid);\r\n    this.page.markings.slice(-1)[0].structContent = structContent;\r\n    return structContent;\r\n  },\r\n\r\n  endMarkedContent() {\r\n    this.page.markings.pop();\r\n    this.addContent('EMC');\r\n    return this;\r\n  },\r\n\r\n  struct(type, options = {}, children = null) {\r\n    return new PDFStructureElement(this, type, options, children);\r\n  },\r\n\r\n  addStructure(structElem) {\r\n    const structTreeRoot = this.getStructTreeRoot();\r\n    structElem.setParent(structTreeRoot);\r\n    structElem.setAttached();\r\n    this.structChildren.push(structElem);\r\n    if (!structTreeRoot.data.K) {\r\n      structTreeRoot.data.K = [];\r\n    }\r\n    structTreeRoot.data.K.push(structElem.dictionary);\r\n    return this;\r\n  },\r\n\r\n  initPageMarkings(pageMarkings) {\r\n    pageMarkings.forEach((marking) => {\r\n      if (marking.structContent) {\r\n        const structContent = marking.structContent;\r\n        const newStructContent = this.markStructureContent(marking.tag, marking.options);\r\n        structContent.push(newStructContent);\r\n        this.page.markings.slice(-1)[0].structContent = structContent;\r\n      } else {\r\n        this.markContent(marking.tag, marking.options);\r\n      }\r\n    });\r\n  },\r\n\r\n  endPageMarkings(page) {\r\n    const pageMarkings = page.markings;\r\n    pageMarkings.forEach(() => page.write('EMC'));\r\n    page.markings = [];\r\n    return pageMarkings;\r\n  },\r\n\r\n  getMarkInfoDictionary() {\r\n    if (!this._root.data.MarkInfo) {\r\n      this._root.data.MarkInfo = this.ref({});\r\n    }\r\n    return this._root.data.MarkInfo;\r\n  },\r\n\r\n  getStructTreeRoot() {\r\n    if (!this._root.data.StructTreeRoot) {\r\n      this._root.data.StructTreeRoot = this.ref({\r\n        Type: 'StructTreeRoot',\r\n        ParentTree: new PDFNumberTree(),\r\n        ParentTreeNextKey: 0\r\n      });\r\n    }\r\n    return this._root.data.StructTreeRoot;\r\n  },\r\n\r\n  getStructParentTree() {\r\n    return this.getStructTreeRoot().data.ParentTree;\r\n  },\r\n\r\n  createStructParentTreeNextKey() {\r\n    // initialise the MarkInfo dictionary\r\n    this.getMarkInfoDictionary();\r\n\r\n    const structTreeRoot = this.getStructTreeRoot();\r\n    const key = structTreeRoot.data.ParentTreeNextKey++;\r\n    structTreeRoot.data.ParentTree.add(key, []);\r\n    return key;\r\n  },\r\n\r\n  endMarkings() {\r\n    const structTreeRoot = this._root.data.StructTreeRoot;\r\n    if (structTreeRoot) {\r\n      structTreeRoot.end();\r\n      this.structChildren.forEach((structElem) => structElem.end());\r\n    }\r\n    if (this._root.data.MarkInfo) {\r\n      this._root.data.MarkInfo.end();\r\n    }\r\n  }\r\n\r\n};\r\n", "const FIELD_FLAGS = {\r\n  readOnly: 1,\r\n  required: 2,\r\n  noExport: 4,\r\n  multiline: 0x1000,\r\n  password: 0x2000,\r\n  toggleToOffButton: 0x4000,\r\n  radioButton: 0x8000,\r\n  pushButton: 0x10000,\r\n  combo: 0x20000,\r\n  edit: 0x40000,\r\n  sort: 0x80000,\r\n  multiSelect: 0x200000,\r\n  noSpell: 0x400000\r\n};\r\nconst FIELD_JUSTIFY = {\r\n  left: 0,\r\n  center: 1,\r\n  right: 2\r\n};\r\nconst VALUE_MAP = { value: 'V', defaultValue: 'DV' };\r\nconst FORMAT_SPECIAL = {\r\n  zip: '0',\r\n  zipPlus4: '1',\r\n  zip4: '1',\r\n  phone: '2',\r\n  ssn: '3'\r\n};\r\nconst FORMAT_DEFAULT = {\r\n  number: {\r\n    nDec: 0,\r\n    sepComma: false,\r\n    negStyle: 'MinusBlack',\r\n    currency: '',\r\n    currencyPrepend: true\r\n  },\r\n  percent: {\r\n    nDec: 0,\r\n    sepComma: false\r\n  }\r\n};\r\n\r\nexport default {\r\n  /**\r\n   * Must call if adding AcroForms to a document. Must also call font() before\r\n   * this method to set the default font.\r\n   */\r\n  initForm() {\r\n    if (!this._font) {\r\n      throw new Error('Must set a font before calling initForm method');\r\n    }\r\n    this._acroform = {\r\n      fonts: {},\r\n      defaultFont: this._font.name\r\n    };\r\n    this._acroform.fonts[this._font.id] = this._font.ref();\r\n\r\n    let data = {\r\n      Fields: [],\r\n      NeedAppearances: true,\r\n      DA: new String(`/${this._font.id} 0 Tf 0 g`),\r\n      DR: {\r\n        Font: {}\r\n      }\r\n    };\r\n    data.DR.Font[this._font.id] = this._font.ref();\r\n    const AcroForm = this.ref(data);\r\n    this._root.data.AcroForm = AcroForm;\r\n    return this;\r\n  },\r\n\r\n  /**\r\n   * Called automatically by document.js\r\n   */\r\n  endAcroForm() {\r\n    if (this._root.data.AcroForm) {\r\n      if (\r\n        !Object.keys(this._acroform.fonts).length &&\r\n        !this._acroform.defaultFont\r\n      ) {\r\n        throw new Error('No fonts specified for PDF form');\r\n      }\r\n      let fontDict = this._root.data.AcroForm.data.DR.Font;\r\n      Object.keys(this._acroform.fonts).forEach(name => {\r\n        fontDict[name] = this._acroform.fonts[name];\r\n      });\r\n      this._root.data.AcroForm.data.Fields.forEach(fieldRef => {\r\n        this._endChild(fieldRef);\r\n      });\r\n      this._root.data.AcroForm.end();\r\n    }\r\n    return this;\r\n  },\r\n\r\n  _endChild(ref) {\r\n    if (Array.isArray(ref.data.Kids)) {\r\n      ref.data.Kids.forEach(childRef => {\r\n        this._endChild(childRef);\r\n      });\r\n      ref.end();\r\n    }\r\n    return this;\r\n  },\r\n\r\n  /**\r\n   * Creates and adds a form field to the document. Form fields are intermediate\r\n   * nodes in a PDF form that are used to specify form name heirarchy and form\r\n   * value defaults.\r\n   * @param {string} name - field name (T attribute in field dictionary)\r\n   * @param {object} options  - other attributes to include in field dictionary\r\n   */\r\n  formField(name, options = {}) {\r\n    let fieldDict = this._fieldDict(name, null, options);\r\n    let fieldRef = this.ref(fieldDict);\r\n    this._addToParent(fieldRef);\r\n    return fieldRef;\r\n  },\r\n\r\n  /**\r\n   * Creates and adds a Form Annotation to the document. Form annotations are\r\n   * called Widget annotations internally within a PDF file.\r\n   * @param {string} name - form field name (T attribute of widget annotation\r\n   * dictionary)\r\n   * @param {number} x\r\n   * @param {number} y\r\n   * @param {number} w\r\n   * @param {number} h\r\n   * @param {object} options\r\n   */\r\n  formAnnotation(name, type, x, y, w, h, options = {}) {\r\n    let fieldDict = this._fieldDict(name, type, options);\r\n    fieldDict.Subtype = 'Widget';\r\n    if (fieldDict.F === undefined) {\r\n      fieldDict.F = 4; // print the annotation\r\n    }\r\n\r\n    // Add Field annot to page, and get it's ref\r\n    this.annotate(x, y, w, h, fieldDict);\r\n    let annotRef = this.page.annotations[this.page.annotations.length - 1];\r\n\r\n    return this._addToParent(annotRef);\r\n  },\r\n\r\n  formText(name, x, y, w, h, options = {}) {\r\n    return this.formAnnotation(name, 'text', x, y, w, h, options);\r\n  },\r\n\r\n  formPushButton(name, x, y, w, h, options = {}) {\r\n    return this.formAnnotation(name, 'pushButton', x, y, w, h, options);\r\n  },\r\n\r\n  formCombo(name, x, y, w, h, options = {}) {\r\n    return this.formAnnotation(name, 'combo', x, y, w, h, options);\r\n  },\r\n\r\n  formList(name, x, y, w, h, options = {}) {\r\n    return this.formAnnotation(name, 'list', x, y, w, h, options);\r\n  },\r\n\r\n  formRadioButton(name, x, y, w, h, options = {}) {\r\n    return this.formAnnotation(name, 'radioButton', x, y, w, h, options);\r\n  },\r\n\r\n  formCheckbox(name, x, y, w, h, options = {}) {\r\n    return this.formAnnotation(name, 'checkbox', x, y, w, h, options);\r\n  },\r\n\r\n  _addToParent(fieldRef) {\r\n    let parent = fieldRef.data.Parent;\r\n    if (parent) {\r\n      if (!parent.data.Kids) {\r\n        parent.data.Kids = [];\r\n      }\r\n      parent.data.Kids.push(fieldRef);\r\n    } else {\r\n      this._root.data.AcroForm.data.Fields.push(fieldRef);\r\n    }\r\n    return this;\r\n  },\r\n\r\n  _fieldDict(name, type, options = {}) {\r\n    if (!this._acroform) {\r\n      throw new Error(\r\n        'Call document.initForms() method before adding form elements to document'\r\n      );\r\n    }\r\n    let opts = Object.assign({}, options);\r\n    if (type !== null) {\r\n      opts = this._resolveType(type, options);\r\n    }\r\n    opts = this._resolveFlags(opts);\r\n    opts = this._resolveJustify(opts);\r\n    opts = this._resolveFont(opts);\r\n    opts = this._resolveStrings(opts);\r\n    opts = this._resolveColors(opts);\r\n    opts = this._resolveFormat(opts);\r\n    opts.T = new String(name);\r\n    if (opts.parent) {\r\n      opts.Parent = opts.parent;\r\n      delete opts.parent;\r\n    }\r\n    return opts;\r\n  },\r\n\r\n  _resolveType(type, opts) {\r\n    if (type === 'text') {\r\n      opts.FT = 'Tx';\r\n    } else if (type === 'pushButton') {\r\n      opts.FT = 'Btn';\r\n      opts.pushButton = true;\r\n    } else if (type === 'radioButton') {\r\n      opts.FT = 'Btn';\r\n      opts.radioButton = true;\r\n    } else if (type === 'checkbox') {\r\n      opts.FT = 'Btn';\r\n    } else if (type === 'combo') {\r\n      opts.FT = 'Ch';\r\n      opts.combo = true;\r\n    } else if (type === 'list') {\r\n      opts.FT = 'Ch';\r\n    } else {\r\n      throw new Error(`Invalid form annotation type '${type}'`);\r\n    }\r\n    return opts;\r\n  },\r\n\r\n  _resolveFormat(opts) {\r\n    const f = opts.format;\r\n    if (f && f.type) {\r\n      let fnKeystroke;\r\n      let fnFormat;\r\n      let params = '';\r\n      if (FORMAT_SPECIAL[f.type] !== undefined) {\r\n        fnKeystroke = `AFSpecial_Keystroke`;\r\n        fnFormat = `AFSpecial_Format`;\r\n        params = FORMAT_SPECIAL[f.type];\r\n      } else {\r\n        let format = f.type.charAt(0).toUpperCase() + f.type.slice(1);\r\n        fnKeystroke = `AF${format}_Keystroke`;\r\n        fnFormat = `AF${format}_Format`;\r\n\r\n        if (f.type === 'date') {\r\n          fnKeystroke += 'Ex';\r\n          params = String(f.param);\r\n        } else if (f.type === 'time') {\r\n          params = String(f.param);\r\n        } else if (f.type === 'number') {\r\n          let p = Object.assign({}, FORMAT_DEFAULT.number, f);\r\n          params = String(\r\n            [\r\n              String(p.nDec),\r\n              p.sepComma ? '0' : '1',\r\n              '\"' + p.negStyle + '\"',\r\n              'null',\r\n              '\"' + p.currency + '\"',\r\n              String(p.currencyPrepend)\r\n            ].join(',')\r\n          );\r\n        } else if (f.type === 'percent') {\r\n          let p = Object.assign({}, FORMAT_DEFAULT.percent, f);\r\n          params = String([String(p.nDec), p.sepComma ? '0' : '1'].join(','));\r\n        }\r\n      }\r\n      opts.AA = opts.AA ? opts.AA : {};\r\n      opts.AA.K = {\r\n        S: 'JavaScript',\r\n        JS: new String(`${fnKeystroke}(${params});`)\r\n      };\r\n      opts.AA.F = {\r\n        S: 'JavaScript',\r\n        JS: new String(`${fnFormat}(${params});`)\r\n      };\r\n    }\r\n    delete opts.format;\r\n    return opts;\r\n  },\r\n\r\n  _resolveColors(opts) {\r\n    let color = this._normalizeColor(opts.backgroundColor);\r\n    if (color) {\r\n      if (!opts.MK) {\r\n        opts.MK = {};\r\n      }\r\n      opts.MK.BG = color;\r\n    }\r\n    color = this._normalizeColor(opts.borderColor);\r\n    if (color) {\r\n      if (!opts.MK) {\r\n        opts.MK = {};\r\n      }\r\n      opts.MK.BC = color;\r\n    }\r\n    delete opts.backgroundColor;\r\n    delete opts.borderColor;\r\n    return opts;\r\n  },\r\n\r\n  _resolveFlags(options) {\r\n    let result = 0;\r\n    Object.keys(options).forEach(key => {\r\n      if (FIELD_FLAGS[key]) {\r\n        result |= FIELD_FLAGS[key];\r\n        delete options[key];\r\n      }\r\n    });\r\n    if (result !== 0) {\r\n      options.Ff = options.Ff ? options.Ff : 0;\r\n      options.Ff |= result;\r\n    }\r\n    return options;\r\n  },\r\n\r\n  _resolveJustify(options) {\r\n    let result = 0;\r\n    if (options.align !== undefined) {\r\n      if (typeof FIELD_JUSTIFY[options.align] === 'number') {\r\n        result = FIELD_JUSTIFY[options.align];\r\n      }\r\n      delete options.align;\r\n    }\r\n    if (result !== 0) {\r\n      options.Q = result; // default\r\n    }\r\n    return options;\r\n  },\r\n\r\n  _resolveFont(options) {\r\n    // add current font to document-level AcroForm dict if necessary\r\n    if (this._acroform.fonts[this._font.id] === null) {\r\n      this._acroform.fonts[this._font.id] = this._font.ref();\r\n    }\r\n\r\n    // add current font to field's resource dict (RD) if not the default acroform font\r\n    if (this._acroform.defaultFont !== this._font.name) {\r\n      options.DR = { Font: {} };\r\n\r\n      // Get the fontSize option. If not set use auto sizing\r\n      const fontSize = options.fontSize || 0;\r\n\r\n      options.DR.Font[this._font.id] = this._font.ref();\r\n      options.DA = new String(`/${this._font.id} ${fontSize} Tf 0 g`);\r\n    }\r\n    return options;\r\n  },\r\n\r\n  _resolveStrings(options) {\r\n    let select = [];\r\n    function appendChoices(a) {\r\n      if (Array.isArray(a)) {\r\n        for (let idx = 0; idx < a.length; idx++) {\r\n          if (typeof a[idx] === 'string') {\r\n            select.push(new String(a[idx]));\r\n          } else {\r\n            select.push(a[idx]);\r\n          }\r\n        }\r\n      }\r\n    }\r\n    appendChoices(options.Opt);\r\n    if (options.select) {\r\n      appendChoices(options.select);\r\n      delete options.select;\r\n    }\r\n    if (select.length) {\r\n      options.Opt = select;\r\n    }\r\n\r\n    Object.keys(VALUE_MAP).forEach(key => {\r\n      if (options[key] !== undefined) {\r\n        options[VALUE_MAP[key]] = options[key];\r\n        delete options[key];\r\n      }\r\n    });\r\n    ['V', 'DV'].forEach(key => {\r\n      if (typeof options[key] === 'string') {\r\n        options[key] = new String(options[key]);\r\n      }\r\n    });\r\n\r\n    if (options.MK && options.MK.CA) {\r\n      options.MK.CA = new String(options.MK.CA);\r\n    }\r\n    if (options.label) {\r\n      options.MK = options.MK ? options.MK : {};\r\n      options.MK.CA = new String(options.label);\r\n      delete options.label;\r\n    }\r\n    return options;\r\n  }\r\n};\r\n", "import fs from 'fs';\r\nimport CryptoJS from 'crypto-js';\r\n\r\nexport default {\r\n  /**\r\n   * Embed contents of `src` in PDF\r\n   * @param {Buffer | ArrayBuffer | string} src input Buffer, ArrayBuffer, base64 encoded string or path to file\r\n   * @param {object} options\r\n   *  * options.name: filename to be shown in PDF, will use `src` if none set\r\n   *  * options.type: filetype to be shown in PDF\r\n   *  * options.description: description to be shown in PDF\r\n   *  * options.hidden: if true, do not add attachment to EmbeddedFiles dictionary. Useful for file attachment annotations\r\n   *  * options.creationDate: override creation date\r\n   *  * options.modifiedDate: override modified date\r\n   * @returns filespec reference\r\n   */\r\n  file(src, options = {}) {\r\n    options.name = options.name || src;\r\n\r\n    const refBody = {\r\n      Type: 'EmbeddedFile',\r\n      Params: {}\r\n    };\r\n    let data;\r\n\r\n    if (!src) {\r\n      throw new Error('No src specified');\r\n    }\r\n    if (Buffer.isBuffer(src)) {\r\n      data = src;\r\n    } else if (src instanceof ArrayBuffer) {\r\n      data = Buffer.from(new Uint8Array(src));\r\n    } else {\r\n      let match;\r\n      if ((match = /^data:(.*);base64,(.*)$/.exec(src))) {\r\n        if (match[1]) {\r\n          refBody.Subtype = match[1].replace('/', '#2F');\r\n        }\r\n        data = Buffer.from(match[2], 'base64');\r\n      } else {\r\n        data = fs.readFileSync(src);\r\n        if (!data) {\r\n          throw new Error(`Could not read contents of file at filepath ${src}`);\r\n        }\r\n\r\n        // update CreationDate and ModDate\r\n        const { birthtime, ctime } = fs.statSync(src);\r\n        refBody.Params.CreationDate = birthtime;\r\n        refBody.Params.ModDate = ctime;\r\n      }\r\n    }\r\n\r\n    // override creation date and modified date\r\n    if (options.creationDate instanceof Date) {\r\n      refBody.Params.CreationDate = options.creationDate;\r\n    }\r\n    if (options.modifiedDate instanceof Date) {\r\n      refBody.Params.ModDate = options.modifiedDate;\r\n    }\r\n    // add optional subtype\r\n    if (options.type) {\r\n      refBody.Subtype = options.type.replace('/', '#2F');\r\n    }\r\n\r\n    // add checksum and size information\r\n    const checksum = CryptoJS.MD5(\r\n      CryptoJS.lib.WordArray.create(new Uint8Array(data))\r\n    );\r\n    refBody.Params.CheckSum = new String(checksum);\r\n    refBody.Params.Size = data.byteLength;\r\n\r\n    // save some space when embedding the same file again\r\n    // if a file with the same name and metadata exists, reuse its reference\r\n    let ref;\r\n    if (!this._fileRegistry) this._fileRegistry = {};\r\n    let file = this._fileRegistry[options.name];\r\n    if (file && isEqual(refBody, file)) {\r\n      ref = file.ref;\r\n    } else {\r\n      ref = this.ref(refBody);\r\n      ref.end(data);\r\n\r\n      this._fileRegistry[options.name] = { ...refBody, ref };\r\n    }\r\n    // add filespec for embedded file\r\n    const fileSpecBody = {\r\n      Type: 'Filespec',\r\n      F: new String(options.name),\r\n      EF: { F: ref },\r\n      UF: new String(options.name)\r\n    };\r\n    if (options.description) {\r\n      fileSpecBody.Desc = new String(options.description);\r\n    }\r\n    const filespec = this.ref(fileSpecBody);\r\n    filespec.end();\r\n\r\n    if (!options.hidden) {\r\n      this.addNamedEmbeddedFile(options.name, filespec);\r\n    }\r\n\r\n    return filespec;\r\n  }\r\n};\r\n\r\n/** check two embedded file metadata objects for equality */\r\nfunction isEqual(a, b) {\r\n  return (\r\n    a.Subtype === b.Subtype &&\r\n    a.Params.CheckSum.toString() === b.Params.CheckSum.toString() &&\r\n    a.Params.Size === b.Params.Size &&\r\n    a.Params.CreationDate === b.Params.CreationDate &&\r\n    a.Params.ModDate === b.Params.ModDate\r\n  );\r\n}\r\n", "/*\r\nPDFDocument - represents an entire PDF document\r\nBy Devon Govett\r\n*/\r\n\r\nimport stream from 'stream';\r\nimport fs from 'fs';\r\nimport PDFObject from './object';\r\nimport PDFReference from './reference';\r\nimport PDFPage from './page';\r\nimport PDFNameTree from './name_tree';\r\nimport PDFSecurity from './security';\r\nimport ColorMixin from './mixins/color';\r\nimport VectorMixin from './mixins/vector';\r\nimport FontsMixin from './mixins/fonts';\r\nimport TextMixin from './mixins/text';\r\nimport ImagesMixin from './mixins/images';\r\nimport AnnotationsMixin from './mixins/annotations';\r\nimport OutlineMixin from './mixins/outline';\r\nimport MarkingsMixin from './mixins/markings';\r\nimport AcroFormMixin from './mixins/acroform';\r\nimport AttachmentsMixin from './mixins/attachments';\r\nimport LineWrapper from './line_wrapper';\r\n\r\nclass PDFDocument extends stream.Readable {\r\n  constructor(options = {}) {\r\n    super(options);\r\n    this.options = options;\r\n\r\n    // PDF version\r\n    switch (options.pdfVersion) {\r\n      case '1.4':\r\n        this.version = 1.4;\r\n        break;\r\n      case '1.5':\r\n        this.version = 1.5;\r\n        break;\r\n      case '1.6':\r\n        this.version = 1.6;\r\n        break;\r\n      case '1.7':\r\n      case '1.7ext3':\r\n        this.version = 1.7;\r\n        break;\r\n      default:\r\n        this.version = 1.3;\r\n        break;\r\n    }\r\n\r\n    // Whether streams should be compressed\r\n    this.compress =\r\n      this.options.compress != null ? this.options.compress : true;\r\n\r\n    this._pageBuffer = [];\r\n    this._pageBufferStart = 0;\r\n\r\n    // The PDF object store\r\n    this._offsets = [];\r\n    this._waiting = 0;\r\n    this._ended = false;\r\n    this._offset = 0;\r\n    const Pages = this.ref({\r\n      Type: 'Pages',\r\n      Count: 0,\r\n      Kids: []\r\n    });\r\n\r\n    const Names = this.ref({\r\n      Dests: new PDFNameTree()\r\n    });\r\n\r\n    this._root = this.ref({\r\n      Type: 'Catalog',\r\n      Pages,\r\n      Names\r\n    });\r\n\r\n    if (this.options.lang) {\r\n      this._root.data.Lang = new String(this.options.lang);\r\n    }\r\n\r\n    // The current page\r\n    this.page = null;\r\n\r\n    // Initialize mixins\r\n    this.initColor();\r\n    this.initVector();\r\n    this.initFonts(options.font);\r\n    this.initText();\r\n    this.initImages();\r\n    this.initOutline();\r\n    this.initMarkings(options);\r\n\r\n    // Initialize the metadata\r\n    this.info = {\r\n      Producer: 'PDFKit',\r\n      Creator: 'PDFKit',\r\n      CreationDate: new Date()\r\n    };\r\n\r\n    if (this.options.info) {\r\n      for (let key in this.options.info) {\r\n        const val = this.options.info[key];\r\n        this.info[key] = val;\r\n      }\r\n    }\r\n\r\n    if (this.options.displayTitle) {\r\n      this._root.data.ViewerPreferences = this.ref({\r\n        DisplayDocTitle: true\r\n      });\r\n    }\r\n\r\n    // Generate file ID\r\n    this._id = PDFSecurity.generateFileID(this.info);\r\n\r\n    // Initialize security settings\r\n    this._security = PDFSecurity.create(this, options);\r\n\r\n    // Write the header\r\n    // PDF version\r\n    this._write(`%PDF-${this.version}`);\r\n\r\n    // 4 binary chars, as recommended by the spec\r\n    this._write('%\\xFF\\xFF\\xFF\\xFF');\r\n\r\n    // Add the first page\r\n    if (this.options.autoFirstPage !== false) {\r\n      this.addPage();\r\n    }\r\n  }\r\n\r\n  addPage(options) {\r\n    if (options == null) {\r\n      ({ options } = this);\r\n    }\r\n\r\n    // end the current page if needed\r\n    if (!this.options.bufferPages) {\r\n      this.flushPages();\r\n    }\r\n\r\n    // create a page object\r\n    this.page = new PDFPage(this, options);\r\n    this._pageBuffer.push(this.page);\r\n\r\n    // add the page to the object store\r\n    const pages = this._root.data.Pages.data;\r\n    pages.Kids.push(this.page.dictionary);\r\n    pages.Count++;\r\n\r\n    // reset x and y coordinates\r\n    this.x = this.page.margins.left;\r\n    this.y = this.page.margins.top;\r\n\r\n    // flip PDF coordinate system so that the origin is in\r\n    // the top left rather than the bottom left\r\n    this._ctm = [1, 0, 0, 1, 0, 0];\r\n    this.transform(1, 0, 0, -1, 0, this.page.height);\r\n\r\n    this.emit('pageAdded');\r\n\r\n    return this;\r\n  }\r\n\r\n  continueOnNewPage(options) {\r\n    const pageMarkings = this.endPageMarkings(this.page);\r\n\r\n    this.addPage(options);\r\n\r\n    this.initPageMarkings(pageMarkings);\r\n\r\n    return this;\r\n  }\r\n\r\n  bufferedPageRange() {\r\n    return { start: this._pageBufferStart, count: this._pageBuffer.length };\r\n  }\r\n\r\n  switchToPage(n) {\r\n    let page;\r\n    if (!(page = this._pageBuffer[n - this._pageBufferStart])) {\r\n      throw new Error(\r\n        `switchToPage(${n}) out of bounds, current buffer covers pages ${\r\n          this._pageBufferStart\r\n        } to ${this._pageBufferStart + this._pageBuffer.length - 1}`\r\n      );\r\n    }\r\n\r\n    return (this.page = page);\r\n  }\r\n\r\n  flushPages() {\r\n    // this local variable exists so we're future-proof against\r\n    // reentrant calls to flushPages.\r\n    const pages = this._pageBuffer;\r\n    this._pageBuffer = [];\r\n    this._pageBufferStart += pages.length;\r\n    for (let page of pages) {\r\n      this.endPageMarkings(page);\r\n      page.end();\r\n    }\r\n  }\r\n\r\n  addNamedDestination(name, ...args) {\r\n    if (args.length === 0) {\r\n      args = ['XYZ', null, null, null];\r\n    }\r\n    if (args[0] === 'XYZ' && args[2] !== null) {\r\n      args[2] = this.page.height - args[2];\r\n    }\r\n    args.unshift(this.page.dictionary);\r\n    this._root.data.Names.data.Dests.add(name, args);\r\n  }\r\n\r\n  addNamedEmbeddedFile(name, ref) {\r\n    if (!this._root.data.Names.data.EmbeddedFiles) {\r\n      // disabling /Limits for this tree fixes attachments not showing in Adobe Reader\r\n      this._root.data.Names.data.EmbeddedFiles = new PDFNameTree({ limits: false });\r\n    }\r\n\r\n    // add filespec to EmbeddedFiles\r\n    this._root.data.Names.data.EmbeddedFiles.add(name, ref);\r\n  }\r\n\r\n  addNamedJavaScript(name, js) {\r\n    if (!this._root.data.Names.data.JavaScript) {\r\n      this._root.data.Names.data.JavaScript = new PDFNameTree();\r\n    }\r\n    let data = {\r\n      JS: new String(js),\r\n      S: 'JavaScript'\r\n    };\r\n    this._root.data.Names.data.JavaScript.add(name, data);\r\n  }\r\n\r\n  ref(data) {\r\n    const ref = new PDFReference(this, this._offsets.length + 1, data);\r\n    this._offsets.push(null); // placeholder for this object's offset once it is finalized\r\n    this._waiting++;\r\n    return ref;\r\n  }\r\n\r\n  _read() {}\r\n  // do nothing, but this method is required by node\r\n\r\n  _write(data) {\r\n    if (!Buffer.isBuffer(data)) {\r\n      data = Buffer.from(data + '\\n', 'binary');\r\n    }\r\n\r\n    this.push(data);\r\n    return (this._offset += data.length);\r\n  }\r\n\r\n  addContent(data) {\r\n    this.page.write(data);\r\n    return this;\r\n  }\r\n\r\n  _refEnd(ref) {\r\n    this._offsets[ref.id - 1] = ref.offset;\r\n    if (--this._waiting === 0 && this._ended) {\r\n      this._finalize();\r\n      return (this._ended = false);\r\n    }\r\n  }\r\n\r\n  write(filename, fn) {\r\n    // print a deprecation warning with a stacktrace\r\n    const err = new Error(`\\\r\nPDFDocument#write is deprecated, and will be removed in a future version of PDFKit. \\\r\nPlease pipe the document into a Node stream.\\\r\n`);\r\n\r\n    console.warn(err.stack);\r\n\r\n    this.pipe(fs.createWriteStream(filename));\r\n    this.end();\r\n    return this.once('end', fn);\r\n  }\r\n\r\n  end() {\r\n    this.flushPages();\r\n    this._info = this.ref();\r\n    for (let key in this.info) {\r\n      let val = this.info[key];\r\n      if (typeof val === 'string') {\r\n        val = new String(val);\r\n      }\r\n\r\n      let entry = this.ref(val);\r\n      entry.end();\r\n\r\n      this._info.data[key] = entry;\r\n    }\r\n\r\n    this._info.end();\r\n\r\n    for (let name in this._fontFamilies) {\r\n      const font = this._fontFamilies[name];\r\n      font.finalize();\r\n    }\r\n\r\n    this.endOutline();\r\n    this.endMarkings();\r\n\r\n    this._root.end();\r\n    this._root.data.Pages.end();\r\n    this._root.data.Names.end();\r\n    this.endAcroForm();\r\n\r\n    if (this._root.data.ViewerPreferences) {\r\n      this._root.data.ViewerPreferences.end();\r\n    }\r\n\r\n    if (this._security) {\r\n      this._security.end();\r\n    }\r\n\r\n    if (this._waiting === 0) {\r\n      return this._finalize();\r\n    } else {\r\n      return (this._ended = true);\r\n    }\r\n  }\r\n\r\n  _finalize() {\r\n    // generate xref\r\n    const xRefOffset = this._offset;\r\n    this._write('xref');\r\n    this._write(`0 ${this._offsets.length + 1}`);\r\n    this._write('0000000000 65535 f ');\r\n\r\n    for (let offset of this._offsets) {\r\n      offset = `0000000000${offset}`.slice(-10);\r\n      this._write(offset + ' 00000 n ');\r\n    }\r\n\r\n    // trailer\r\n    const trailer = {\r\n      Size: this._offsets.length + 1,\r\n      Root: this._root,\r\n      Info: this._info,\r\n      ID: [this._id, this._id]\r\n    };\r\n    if (this._security) {\r\n      trailer.Encrypt = this._security.dictionary;\r\n    }\r\n\r\n    this._write('trailer');\r\n    this._write(PDFObject.convert(trailer));\r\n\r\n    this._write('startxref');\r\n    this._write(`${xRefOffset}`);\r\n    this._write('%%EOF');\r\n\r\n    // end the stream\r\n    return this.push(null);\r\n  }\r\n\r\n  toString() {\r\n    return '[object PDFDocument]';\r\n  }\r\n}\r\n\r\nconst mixin = methods => {\r\n  Object.assign(PDFDocument.prototype, methods);\r\n};\r\n\r\nmixin(ColorMixin);\r\nmixin(VectorMixin);\r\nmixin(FontsMixin);\r\nmixin(TextMixin);\r\nmixin(ImagesMixin);\r\nmixin(AnnotationsMixin);\r\nmixin(OutlineMixin);\r\nmixin(MarkingsMixin);\r\nmixin(AcroFormMixin);\r\nmixin(AttachmentsMixin);\r\n\r\nPDFDocument.LineWrapper = LineWrapper;\r\n\r\nexport default PDFDocument;\r\n", "/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n  for (var key in src) {\n    dst[key] = src[key]\n  }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n  module.exports = buffer\n} else {\n  // Copy properties from require('buffer')\n  copyProps(buffer, exports)\n  exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n  return Buffer(arg, encodingOrOffset, length)\n}\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n  if (typeof arg === 'number') {\n    throw new TypeError('Argument must not be a number')\n  }\n  return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  var buf = Buffer(size)\n  if (fill !== undefined) {\n    if (typeof encoding === 'string') {\n      buf.fill(fill, encoding)\n    } else {\n      buf.fill(fill)\n    }\n  } else {\n    buf.fill(0)\n  }\n  return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  return buffer.SlowBuffer(size)\n}\n", "const inflate = require('tiny-inflate');\nconst { swap32LE } = require('./swap');\n\n// Shift size for getting the index-1 table offset.\nconst SHIFT_1 = 6 + 5;\n\n// Shift size for getting the index-2 table offset.\nconst SHIFT_2 = 5;\n\n// Difference between the two shift sizes,\n// for getting an index-1 offset from an index-2 offset. 6=11-5\nconst SHIFT_1_2 = SHIFT_1 - SHIFT_2;\n\n// Number of index-1 entries for the BMP. 32=0x20\n// This part of the index-1 table is omitted from the serialized form.\nconst OMITTED_BMP_INDEX_1_LENGTH = 0x10000 >> SHIFT_1;\n\n// Number of entries in an index-2 block. 64=0x40\nconst INDEX_2_BLOCK_LENGTH = 1 << SHIFT_1_2;\n\n// Mask for getting the lower bits for the in-index-2-block offset. */\nconst INDEX_2_MASK = INDEX_2_BLOCK_LENGTH - 1;\n\n// Shift size for shifting left the index array values.\n// Increases possible data size with 16-bit index values at the cost\n// of compactability.\n// This requires data blocks to be aligned by DATA_GRANULARITY.\nconst INDEX_SHIFT = 2;\n\n// Number of entries in a data block. 32=0x20\nconst DATA_BLOCK_LENGTH = 1 << SHIFT_2;\n\n// Mask for getting the lower bits for the in-data-block offset.\nconst DATA_MASK = DATA_BLOCK_LENGTH - 1;\n\n// The part of the index-2 table for U+D800..U+DBFF stores values for\n// lead surrogate code _units_ not code _points_.\n// Values for lead surrogate code _points_ are indexed with this portion of the table.\n// Length=32=0x20=0x400>>SHIFT_2. (There are 1024=0x400 lead surrogates.)\nconst LSCP_INDEX_2_OFFSET = 0x10000 >> SHIFT_2;\nconst LSCP_INDEX_2_LENGTH = 0x400 >> SHIFT_2;\n\n// Count the lengths of both BMP pieces. 2080=0x820\nconst INDEX_2_BMP_LENGTH = LSCP_INDEX_2_OFFSET + LSCP_INDEX_2_LENGTH;\n\n// The 2-byte UTF-8 version of the index-2 table follows at offset 2080=0x820.\n// Length 32=0x20 for lead bytes C0..DF, regardless of SHIFT_2.\nconst UTF8_2B_INDEX_2_OFFSET = INDEX_2_BMP_LENGTH;\nconst UTF8_2B_INDEX_2_LENGTH = 0x800 >> 6;  // U+0800 is the first code point after 2-byte UTF-8\n\n// The index-1 table, only used for supplementary code points, at offset 2112=0x840.\n// Variable length, for code points up to highStart, where the last single-value range starts.\n// Maximum length 512=0x200=0x100000>>SHIFT_1.\n// (For 0x100000 supplementary code points U+10000..U+10ffff.)\n//\n// The part of the index-2 table for supplementary code points starts\n// after this index-1 table.\n//\n// Both the index-1 table and the following part of the index-2 table\n// are omitted completely if there is only BMP data.\nconst INDEX_1_OFFSET = UTF8_2B_INDEX_2_OFFSET + UTF8_2B_INDEX_2_LENGTH;\n\n// The alignment size of a data block. Also the granularity for compaction.\nconst DATA_GRANULARITY = 1 << INDEX_SHIFT;\n\nclass UnicodeTrie {\n  constructor(data) {\n    const isBuffer = (typeof data.readUInt32BE === 'function') && (typeof data.slice === 'function');\n\n    if (isBuffer || data instanceof Uint8Array) {\n      // read binary format\n      let uncompressedLength;\n      if (isBuffer) {\n        this.highStart = data.readUInt32LE(0);\n        this.errorValue = data.readUInt32LE(4);\n        uncompressedLength = data.readUInt32LE(8);\n        data = data.slice(12);\n      } else {\n        const view = new DataView(data.buffer);\n        this.highStart = view.getUint32(0, true);\n        this.errorValue = view.getUint32(4, true);\n        uncompressedLength = view.getUint32(8, true);\n        data = data.subarray(12);\n      }\n\n      // double inflate the actual trie data\n      data = inflate(data, new Uint8Array(uncompressedLength));\n      data = inflate(data, new Uint8Array(uncompressedLength));\n\n      // swap bytes from little-endian\n      swap32LE(data);\n\n      this.data = new Uint32Array(data.buffer);\n\n    } else {\n      // pre-parsed data\n      ({ data: this.data, highStart: this.highStart, errorValue: this.errorValue } = data);\n    }\n  }\n\n  get(codePoint) {\n    let index;\n    if ((codePoint < 0) || (codePoint > 0x10ffff)) {\n      return this.errorValue;\n    }\n\n    if ((codePoint < 0xd800) || ((codePoint > 0xdbff) && (codePoint <= 0xffff))) {\n      // Ordinary BMP code point, excluding leading surrogates.\n      // BMP uses a single level lookup.  BMP index starts at offset 0 in the index.\n      // data is stored in the index array itself.\n      index = (this.data[codePoint >> SHIFT_2] << INDEX_SHIFT) + (codePoint & DATA_MASK);\n      return this.data[index];\n    }\n\n    if (codePoint <= 0xffff) {\n      // Lead Surrogate Code Point.  A Separate index section is stored for\n      // lead surrogate code units and code points.\n      //   The main index has the code unit data.\n      //   For this function, we need the code point data.\n      index = (this.data[LSCP_INDEX_2_OFFSET + ((codePoint - 0xd800) >> SHIFT_2)] << INDEX_SHIFT) + (codePoint & DATA_MASK);\n      return this.data[index];\n    }\n\n    if (codePoint < this.highStart) {\n      // Supplemental code point, use two-level lookup.\n      index = this.data[(INDEX_1_OFFSET - OMITTED_BMP_INDEX_1_LENGTH) + (codePoint >> SHIFT_1)];\n      index = this.data[index + ((codePoint >> SHIFT_2) & INDEX_2_MASK)];\n      index = (index << INDEX_SHIFT) + (codePoint & DATA_MASK);\n      return this.data[index];\n    }\n\n    return this.data[this.data.length - DATA_GRANULARITY];\n  }\n}\n\nmodule.exports = UnicodeTrie;", "const isBigEndian = (new Uint8Array(new Uint32Array([0x12345678]).buffer)[0] === 0x12);\n\nconst swap = (b, n, m) => {\n  let i = b[n];\n  b[n] = b[m];\n  b[m] = i;\n};\n\nconst swap32 = array => {\n  const len = array.length;\n  for (let i = 0; i < len; i += 4) {\n    swap(array, i, i + 3);\n    swap(array, i + 1, i + 2);\n  }\n};\n\nconst swap32LE = array => {\n  if (isBigEndian) {\n    swap32(array);\n  }\n};\n\nmodule.exports = {\n  swap32LE: swap32LE\n};\n", "var SVGtoPDF = require('./svg-to-pdfkit/source.js');\r\n\r\nmodule.exports = SVGtoPDF;\r\n", "var SVGtoPDF = function(doc, svg, x, y, options) {\r\n    \"use strict\";\r\n\r\n    const NamedColors = {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],\r\n      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], darkgrey: [169,169,169], darkgreen: [0,100,0], darkkhaki: [189,183,107], darkmagenta: [139,0,139], darkolivegreen: [85,107,47],\r\n      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],\r\n      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],\r\n      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], lightgrey: [211,211,211],\r\n      lightgreen: [144,238,144], 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],\r\n      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],\r\n      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],\r\n      pink: [255,192,203], plum: [221,160,221], powderblue: [176,224,230], purple: [128,0,128], rebeccapurple: [102,51,153], red: [255,0,0], rosybrown: [188,143,143], royalblue: [65,105,225], saddlebrown: [139,69,19], salmon: [250,128,114], sandybrown: [244,164,96], seagreen: [46,139,87], seashell: [255,245,238], sienna: [160,82,45], silver: [192,192,192], skyblue: [135,206,235],\r\n      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]};\r\n    const DefaultColors = {black: [NamedColors.black, 1], white: [NamedColors.white, 1], transparent: [NamedColors.black, 0]};\r\n    const Entities = {quot: 34, amp: 38, lt: 60, gt: 62, apos: 39, OElig: 338, oelig: 339, Scaron: 352, scaron: 353, Yuml: 376, circ: 710, tilde: 732, ensp: 8194, emsp: 8195, thinsp: 8201, zwnj: 8204, zwj: 8205, lrm: 8206, rlm: 8207, ndash: 8211, mdash: 8212, lsquo: 8216, rsquo: 8217, sbquo: 8218, ldquo: 8220, rdquo: 8221, bdquo: 8222, dagger: 8224, Dagger: 8225, permil: 8240, lsaquo: 8249,\r\n      rsaquo: 8250, euro: 8364, nbsp: 160, iexcl: 161, cent: 162, pound: 163, curren: 164, yen: 165, brvbar: 166, sect: 167, uml: 168, copy: 169, ordf: 170, laquo: 171, not: 172, shy: 173, reg: 174, macr: 175, deg: 176, plusmn: 177, sup2: 178, sup3: 179, acute: 180, micro: 181, para: 182, middot: 183, cedil: 184, sup1: 185, ordm: 186, raquo: 187, frac14: 188, frac12: 189, frac34: 190,\r\n      iquest: 191, Agrave: 192, Aacute: 193, Acirc: 194, Atilde: 195, Auml: 196, Aring: 197, AElig: 198, Ccedil: 199, Egrave: 200, Eacute: 201, Ecirc: 202, Euml: 203, Igrave: 204, Iacute: 205, Icirc: 206, Iuml: 207, ETH: 208, Ntilde: 209, Ograve: 210, Oacute: 211, Ocirc: 212, Otilde: 213, Ouml: 214, times: 215, Oslash: 216, Ugrave: 217, Uacute: 218, Ucirc: 219, Uuml: 220, Yacute: 221,\r\n      THORN: 222, szlig: 223, agrave: 224, aacute: 225, acirc: 226, atilde: 227, auml: 228, aring: 229, aelig: 230, ccedil: 231, egrave: 232, eacute: 233, ecirc: 234, euml: 235, igrave: 236, iacute: 237, icirc: 238, iuml: 239, eth: 240, ntilde: 241, ograve: 242, oacute: 243, ocirc: 244, otilde: 245, ouml: 246, divide: 247, oslash: 248, ugrave: 249, uacute: 250, ucirc: 251, uuml: 252,\r\n      yacute: 253, thorn: 254, yuml: 255, fnof: 402, Alpha: 913, Beta: 914, Gamma: 915, Delta: 916, Epsilon: 917, Zeta: 918, Eta: 919, Theta: 920, Iota: 921, Kappa: 922, Lambda: 923, Mu: 924, Nu: 925, Xi: 926, Omicron: 927, Pi: 928, Rho: 929, Sigma: 931, Tau: 932, Upsilon: 933, Phi: 934, Chi: 935, Psi: 936, Omega: 937, alpha: 945, beta: 946, gamma: 947, delta: 948, epsilon: 949,\r\n      zeta: 950, eta: 951, theta: 952, iota: 953, kappa: 954, lambda: 955, mu: 956, nu: 957, xi: 958, omicron: 959, pi: 960, rho: 961, sigmaf: 962, sigma: 963, tau: 964, upsilon: 965, phi: 966, chi: 967, psi: 968, omega: 969, thetasym: 977, upsih: 978, piv: 982, bull: 8226, hellip: 8230, prime: 8242, Prime: 8243, oline: 8254, frasl: 8260, weierp: 8472, image: 8465, real: 8476,\r\n      trade: 8482, alefsym: 8501, larr: 8592, uarr: 8593, rarr: 8594, darr: 8595, harr: 8596, crarr: 8629, lArr: 8656, uArr: 8657, rArr: 8658, dArr: 8659, hArr: 8660, forall: 8704, part: 8706, exist: 8707, empty: 8709, nabla: 8711, isin: 8712, notin: 8713, ni: 8715, prod: 8719, sum: 8721, minus: 8722, lowast: 8727, radic: 8730, prop: 8733, infin: 8734, ang: 8736, and: 8743, or: 8744,\r\n      cap: 8745, cup: 8746, int: 8747, there4: 8756, sim: 8764, cong: 8773, asymp: 8776, ne: 8800, equiv: 8801, le: 8804, ge: 8805, sub: 8834, sup: 8835, nsub: 8836, sube: 8838, supe: 8839, oplus: 8853, otimes: 8855, perp: 8869, sdot: 8901, lceil: 8968, rceil: 8969, lfloor: 8970, rfloor: 8971, lang: 9001, rang: 9002, loz: 9674, spades: 9824, clubs: 9827, hearts: 9829, diams: 9830};\r\n    const PathArguments = {A: 7, a: 7, C: 6, c: 6, H: 1, h: 1, L: 2, l: 2, M: 2, m: 2, Q: 4, q: 4, S: 4, s: 4, T: 2, t: 2, V: 1, v: 1, Z: 0, z: 0};\r\n    const PathFlags = {A3: true, A4: true, a3: true, a4: true};\r\n    const Properties = {\r\n      'color':              {inherit: true, initial: undefined},\r\n      'visibility':         {inherit: true, initial: 'visible', values: {'hidden': 'hidden', 'collapse': 'hidden', 'visible':'visible'}},\r\n      'fill':               {inherit: true, initial: DefaultColors.black},\r\n      'stroke':             {inherit: true, initial: 'none'},\r\n      'stop-color':         {inherit: false, initial: DefaultColors.black},\r\n      'fill-opacity':       {inherit: true, initial: 1},\r\n      'stroke-opacity':     {inherit: true, initial: 1},\r\n      'stop-opacity':       {inherit: false, initial: 1},\r\n      'fill-rule':          {inherit: true, initial: 'nonzero', values: {'nonzero':'nonzero', 'evenodd':'evenodd'}},\r\n      'clip-rule':          {inherit: true, initial: 'nonzero', values: {'nonzero':'nonzero', 'evenodd':'evenodd'}},\r\n      'stroke-width':       {inherit: true, initial: 1},\r\n      'stroke-dasharray':   {inherit: true, initial: []},\r\n      'stroke-dashoffset':  {inherit: true, initial: 0},\r\n      'stroke-miterlimit':  {inherit: true, initial: 4},\r\n      'stroke-linejoin':    {inherit: true, initial: 'miter', values: {'miter':'miter', 'round':'round', 'bevel':'bevel'}},\r\n      'stroke-linecap':     {inherit: true, initial: 'butt', values: {'butt':'butt', 'round':'round', 'square':'square'}},\r\n      'font-size':          {inherit: true, initial: 16, values: {'xx-small':9, 'x-small':10, 'small':13, 'medium':16, 'large':18, 'x-large':24, 'xx-large':32}},\r\n      'font-family':        {inherit: true, initial: 'sans-serif'},\r\n      'font-weight':        {inherit: true, initial: 'normal', values: {'600':'bold', '700':'bold', '800':'bold', '900':'bold', 'bold':'bold', 'bolder':'bold', '500':'normal', '400':'normal', '300':'normal', '200':'normal', '100':'normal', 'normal':'normal', 'lighter':'normal'}},\r\n      'font-style':         {inherit: true, initial: 'normal', values: {'italic':'italic', 'oblique':'italic', 'normal':'normal'}},\r\n      'text-anchor':        {inherit: true, initial: 'start', values: {'start':'start', 'middle':'middle', 'end':'end'}},\r\n      'direction':          {inherit: true, initial: 'ltr', values: {'ltr':'ltr', 'rtl':'rtl'}},\r\n      'dominant-baseline':  {inherit: true, initial: 'baseline', values: {'auto':'baseline', 'baseline':'baseline', 'before-edge':'before-edge', 'text-before-edge':'before-edge', 'middle':'middle', 'central':'central', 'after-edge':'after-edge', 'text-after-edge':'after-edge', 'ideographic':'ideographic', 'alphabetic':'alphabetic', 'hanging':'hanging', 'mathematical':'mathematical'}},\r\n      'alignment-baseline': {inherit: false, initial: undefined, values: {'auto':'baseline', 'baseline':'baseline', 'before-edge':'before-edge', 'text-before-edge':'before-edge', 'middle':'middle', 'central':'central', 'after-edge':'after-edge', 'text-after-edge':'after-edge', 'ideographic':'ideographic', 'alphabetic':'alphabetic', 'hanging':'hanging', 'mathematical':'mathematical'}},\r\n      'baseline-shift':     {inherit: true, initial: 'baseline', values: {'baseline':'baseline', 'sub':'sub', 'super':'super'}},\r\n      'word-spacing':       {inherit: true, initial: 0, values: {normal:0}},\r\n      'letter-spacing':     {inherit: true, initial: 0, values: {normal:0}},\r\n      'text-decoration':    {inherit: false, initial: 'none', values: {'none':'none', 'underline':'underline', 'overline':'overline', 'line-through':'line-through'}},\r\n      'xml:space':          {inherit: true, initial: 'default', css: 'white-space', values: {'preserve':'preserve', 'default':'default', 'pre':'preserve', 'pre-line':'preserve', 'pre-wrap':'preserve', 'nowrap': 'default'}},\r\n      'marker-start':       {inherit: true, initial: 'none'},\r\n      'marker-mid':         {inherit: true, initial: 'none'},\r\n      'marker-end':         {inherit: true, initial: 'none'},\r\n      'opacity':            {inherit: false, initial: 1},\r\n      'transform':          {inherit: false, initial: [1, 0, 0, 1, 0, 0]},\r\n      'display':            {inherit: false, initial: 'inline', values: {'none':'none', 'inline':'inline', 'block':'inline'}},\r\n      'clip-path':          {inherit: false, initial: 'none'},\r\n      'mask':               {inherit: false, initial: 'none'},\r\n      'overflow':           {inherit: false, initial: 'hidden', values: {'hidden':'hidden', 'scroll':'hidden', 'visible':'visible'}}\r\n    };\r\n\r\n    function docBeginGroup(bbox) {\r\n      let group = new (function PDFGroup() {})();\r\n      group.name = 'G' + (doc._groupCount = (doc._groupCount || 0) + 1);\r\n      group.resources = doc.ref();\r\n      group.xobj = doc.ref({\r\n        Type: 'XObject',\r\n        Subtype: 'Form',\r\n        FormType: 1,\r\n        BBox: bbox,\r\n        Group: {S: 'Transparency', CS: 'DeviceRGB', I: true, K: false},\r\n        Resources: group.resources\r\n      });\r\n      group.xobj.write('');\r\n      group.savedMatrix = doc._ctm;\r\n      group.savedPage = doc.page;\r\n      groupStack.push(group);\r\n      doc._ctm = [1, 0, 0, 1, 0, 0];\r\n      doc.page = {\r\n        width: doc.page.width, height: doc.page.height,\r\n        write: function(data) {group.xobj.write(data);},\r\n        fonts: {}, xobjects: {}, ext_gstates: {}, patterns: {}\r\n      };\r\n      return group;\r\n    }\r\n    function docEndGroup(group) {\r\n      if (group !== groupStack.pop()) {throw('Group not matching');}\r\n      if (Object.keys(doc.page.fonts).length) {group.resources.data.Font = doc.page.fonts;}\r\n      if (Object.keys(doc.page.xobjects).length) {group.resources.data.XObject = doc.page.xobjects;}\r\n      if (Object.keys(doc.page.ext_gstates).length) {group.resources.data.ExtGState = doc.page.ext_gstates;}\r\n      if (Object.keys(doc.page.patterns).length) {group.resources.data.Pattern = doc.page.patterns;}\r\n      group.resources.end();\r\n      group.xobj.end();\r\n      doc._ctm = group.savedMatrix;\r\n      doc.page = group.savedPage;\r\n    }\r\n    function docInsertGroup(group) {\r\n      doc.page.xobjects[group.name] = group.xobj;\r\n      doc.addContent('/' + group.name + ' Do');\r\n    }\r\n    function docApplyMask(group, clip) {\r\n      let name = 'M' + (doc._maskCount = (doc._maskCount || 0) + 1);\r\n      let gstate = doc.ref({\r\n        Type: 'ExtGState', CA: 1, ca: 1, BM: 'Normal',\r\n        SMask: {S: 'Luminosity', G: group.xobj, BC: (clip ? [0, 0, 0] : [1, 1, 1])}\r\n      });\r\n      gstate.end();\r\n      doc.page.ext_gstates[name] = gstate;\r\n      doc.addContent('/' + name + ' gs');\r\n    }\r\n    function docCreatePattern(group, dx, dy, matrix) {\r\n      let pattern = new (function PDFPattern() {})();\r\n      pattern.group = group;\r\n      pattern.dx = dx;\r\n      pattern.dy = dy;\r\n      pattern.matrix = matrix || [1, 0, 0, 1, 0, 0];\r\n      return pattern;\r\n    }\r\n    function docUsePattern(pattern, stroke) {\r\n      let name = 'P' + (doc._patternCount = (doc._patternCount || 0) + 1);\r\n      let ref = doc.ref({\r\n        Type: 'Pattern', PatternType: 1, PaintType: 1, TilingType: 2,\r\n        BBox: [0, 0, pattern.dx, pattern.dy], XStep: pattern.dx, YStep: pattern.dy,\r\n        Matrix: multiplyMatrix(doc._ctm, pattern.matrix),\r\n        Resources: {\r\n          ProcSet: ['PDF', 'Text', 'ImageB', 'ImageC', 'ImageI'],\r\n          XObject: (function() {let temp = {}; temp[pattern.group.name] = pattern.group.xobj; return temp;})()\r\n        }\r\n      });\r\n      ref.write('/' + pattern.group.name + ' Do');\r\n      ref.end();\r\n      doc.page.patterns[name] = ref;\r\n      if (stroke) {\r\n        doc.addContent('/Pattern CS');\r\n        doc.addContent('/' + name + ' SCN');\r\n      } else {\r\n        doc.addContent('/Pattern cs');\r\n        doc.addContent('/' + name + ' scn');\r\n      }\r\n    }\r\n    function docBeginText(font, size) {\r\n      if (!doc.page.fonts[font.id]) {doc.page.fonts[font.id] = font.ref();}\r\n      doc.addContent('BT').addContent('/' + font.id + ' ' + size + ' Tf');\r\n    }\r\n    function docSetTextMatrix(a, b, c, d, e, f) {\r\n      doc.addContent(validateNumber(a) + ' ' + validateNumber(b) + ' ' + validateNumber(-c) + ' '  + validateNumber(-d) + ' ' + validateNumber(e) + ' ' + validateNumber(f) + ' Tm');\r\n    }\r\n    function docSetTextMode(fill, stroke) {\r\n      let mode = fill && stroke ? 2 : stroke ? 1 : fill ? 0 : 3;\r\n      doc.addContent(mode + ' Tr');\r\n    }\r\n    function docWriteGlyph(glyph) {\r\n      doc.addContent('<' + glyph + '> Tj');\r\n    }\r\n    function docEndText() {\r\n      doc.addContent('ET');\r\n    }\r\n    function docFillColor(color) {\r\n      if (color[0].constructor.name === 'PDFPattern') {\r\n        doc.fillOpacity(color[1]);\r\n        docUsePattern(color[0], false);\r\n      } else {\r\n        doc.fillColor(color[0], color[1]);\r\n      }\r\n    }\r\n    function docStrokeColor(color) {\r\n      if (color[0].constructor.name === 'PDFPattern') {\r\n        doc.strokeOpacity(color[1]);\r\n        docUsePattern(color[0], true);\r\n      } else {\r\n        doc.strokeColor(color[0], color[1]);\r\n      }\r\n    }\r\n    function docInsertLink(x, y, w, h, url) {\r\n      let ref = doc.ref({\r\n        Type: 'Annot',\r\n        Subtype: 'Link',\r\n        Rect: [x, y, w, h],\r\n        Border: [0, 0, 0],\r\n        A: {\r\n          S: 'URI',\r\n          URI: new String(url)\r\n        }\r\n      });\r\n      ref.end();\r\n      links.push(ref);\r\n    }\r\n    function parseXml(xml) {\r\n      let SvgNode = function(tag, type, value, error) {\r\n        this.error = error;\r\n        this.nodeName = tag;\r\n        this.nodeValue = value;\r\n        this.nodeType = type;\r\n        this.attributes = Object.create(null);\r\n        this.childNodes = [];\r\n        this.parentNode = null;\r\n        this.id = '';\r\n        this.textContent = '';\r\n        this.classList = [];\r\n      };\r\n      SvgNode.prototype.getAttribute = function(attr) {\r\n        return this.attributes[attr] != null ? this.attributes[attr] : null;\r\n      };\r\n      SvgNode.prototype.getElementById = function(id) {\r\n        let result = null;\r\n        (function recursive(node) {\r\n          if (result) {return;}\r\n          if (node.nodeType === 1) {\r\n            if (node.id === id) {result = node;}\r\n            for (let i = 0; i < node.childNodes.length; i++) {\r\n              recursive(node.childNodes[i]);\r\n            }\r\n          }\r\n        })(this);\r\n        return result;\r\n      };\r\n      SvgNode.prototype.getElementsByTagName = function(tag) {\r\n        let result = [];\r\n        (function recursive(node) {\r\n          if (node.nodeType === 1) {\r\n            if (node.nodeName === tag) {result.push(node);}\r\n            for (let i = 0; i < node.childNodes.length; i++) {\r\n              recursive(node.childNodes[i]);\r\n            }\r\n          }\r\n        })(this);\r\n        return result;\r\n      };\r\n      let parser = new StringParser(xml.trim()), result, child, error = false; \r\n      let recursive = function() {\r\n        let temp, child;\r\n        if (temp = parser.match(/^<([\\w:.-]+)\\s*/, true)) { // Opening tag\r\n          let node = new SvgNode(temp[1], 1, null, error);\r\n          while (temp = parser.match(/^([\\w:.-]+)(?:\\s*=\\s*\"([^\"]*)\"|\\s*=\\s*'([^']*)')?\\s*/, true)) { // Attribute\r\n            let attr = temp[1], value = decodeEntities(temp[2] || temp[3] || '');\r\n            if (!node.attributes[attr]) {\r\n              node.attributes[attr] = value;\r\n              if (attr === 'id') {node.id = value;}\r\n              if (attr === 'class') {node.classList = value.split(' ');}\r\n            } else {\r\n              warningCallback('parseXml: duplicate attribute \"' + attr + '\"');\r\n              error = true;\r\n            }\r\n          }\r\n          if (parser.match(/^>/)) { // End of opening tag\r\n            while (child = recursive()) {\r\n              node.childNodes.push(child);\r\n              child.parentNode = node;\r\n              node.textContent += (child.nodeType === 3 || child.nodeType === 4 ? child.nodeValue : child.textContent);\r\n            }\r\n            if (temp = parser.match(/^<\\/([\\w:.-]+)\\s*>/, true)) { // Closing tag\r\n              if (temp[1] === node.nodeName) {\r\n                return node;\r\n              } else {\r\n                warningCallback('parseXml: tag not matching, opening \"' + node.nodeName + '\" & closing \"' + temp[1] + '\"');\r\n                error = true;\r\n                return node;\r\n              }\r\n            } else {\r\n              warningCallback('parseXml: tag not matching, opening \"' + node.nodeName + '\" & not closing');\r\n              error = true;\r\n              return node;\r\n            }\r\n          } else if (parser.match(/^\\/>/)) { // Self-closing tag\r\n            return node;\r\n          } else {\r\n            warningCallback('parseXml: tag could not be parsed \"' + node.nodeName + '\"');\r\n            error = true;\r\n          }\r\n        } else if (temp = parser.match(/^<!--[\\s\\S]*?-->/)) { // Comment\r\n          return new SvgNode(null, 8, temp, error);\r\n        } else if (temp = parser.match(/^<\\?[\\s\\S]*?\\?>/)) { // Processing instructions\r\n          return new SvgNode(null, 7, temp, error);\r\n        } else if (temp = parser.match(/^<!DOCTYPE\\s*([\\s\\S]*?)>/)) { // Doctype\r\n          return new SvgNode(null, 10, temp, error);\r\n        } else if (temp = parser.match(/^<!\\[CDATA\\[([\\s\\S]*?)\\]\\]>/, true)) { // Cdata node\r\n          return new SvgNode('#cdata-section', 4, temp[1], error);\r\n        } else if (temp = parser.match(/^([^<]+)/, true)) { // Text node\r\n          return new SvgNode('#text', 3, decodeEntities(temp[1]), error);\r\n        }\r\n      };\r\n      while (child = recursive()) {\r\n        if (child.nodeType === 1 && !result) {\r\n          result = child;\r\n        } else if (child.nodeType === 1 || (child.nodeType === 3 && child.nodeValue.trim() !== '')) {\r\n          warningCallback('parseXml: data after document end has been discarded');\r\n        }\r\n      }\r\n      if (parser.matchAll()) {\r\n        warningCallback('parseXml: parsing error');\r\n      }\r\n      return result;\r\n    };\r\n    function decodeEntities(str) {\r\n      return(str.replace(/&(?:#([0-9]+)|#[xX]([0-9A-Fa-f]+)|([0-9A-Za-z]+));/g, function(mt, m0, m1, m2) {\r\n        if (m0) {return String.fromCharCode(parseInt(m0, 10));}\r\n        else if (m1) {return String.fromCharCode(parseInt(m1, 16));}\r\n        else if (m2 && Entities[m2]) {return String.fromCharCode(Entities[m2]);}\r\n        else {return mt;}\r\n      }));\r\n    }\r\n    function parseColor(raw) {\r\n      let temp, result;\r\n      raw = (raw || '').trim();\r\n      if (temp = NamedColors[raw]) {\r\n        result = [temp.slice(), 1];\r\n      } else if (temp = raw.match(/^rgba\\(\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*,\\s*([0-9.]+)\\s*\\)$/i)) {\r\n        temp[1] = parseInt(temp[1]); temp[2] = parseInt(temp[2]); temp[3] = parseInt(temp[3]); temp[4] = parseFloat(temp[4]);\r\n        if (temp[1] < 256 && temp[2] < 256 && temp[3] < 256 && temp[4] <= 1) {\r\n          result = [temp.slice(1, 4), temp[4]];\r\n        }\r\n      } else if (temp = raw.match(/^rgb\\(\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*\\)$/i)) {\r\n        temp[1] = parseInt(temp[1]); temp[2] = parseInt(temp[2]); temp[3] = parseInt(temp[3]);\r\n        if (temp[1] < 256 && temp[2] < 256 && temp[3] < 256) {\r\n          result = [temp.slice(1, 4), 1];\r\n        }\r\n      } else if (temp = raw.match(/^rgb\\(\\s*([0-9.]+)%\\s*,\\s*([0-9.]+)%\\s*,\\s*([0-9.]+)%\\s*\\)$/i)) {\r\n        temp[1] = 2.55 * parseFloat(temp[1]); temp[2] = 2.55 * parseFloat(temp[2]); temp[3] = 2.55 * parseFloat(temp[3]);\r\n        if (temp[1] < 256 && temp[2] < 256 && temp[3] < 256) {\r\n          result = [temp.slice(1, 4), 1];\r\n        }\r\n      } else if (temp = raw.match(/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i)) {\r\n        result = [[parseInt(temp[1], 16), parseInt(temp[2], 16), parseInt(temp[3], 16)], 1];\r\n      } else if (temp = raw.match(/^#([0-9a-f])([0-9a-f])([0-9a-f])$/i)) {\r\n        result = [[0x11 * parseInt(temp[1], 16), 0x11 * parseInt(temp[2], 16), 0x11 * parseInt(temp[3], 16)], 1];\r\n      }\r\n      return colorCallback ? colorCallback(result, raw) : result;\r\n    }\r\n    function opacityToColor(color, opacity, isMask) {\r\n      let newColor = color[0].slice(),\r\n          newOpacity = color[1] * opacity;\r\n      if (isMask) {\r\n        for (let i = 0; i < color.length; i++) {\r\n          newColor[i] *= newOpacity;\r\n        }\r\n        return [newColor, 1];\r\n      } else {\r\n        return [newColor, newOpacity];\r\n      }\r\n    }\r\n    function multiplyMatrix() {\r\n      function multiply(a, b) {\r\n        return [ a[0]*b[0]+a[2]*b[1], a[1]*b[0]+a[3]*b[1], a[0]*b[2]+a[2]*b[3],\r\n                 a[1]*b[2]+a[3]*b[3], a[0]*b[4]+a[2]*b[5]+a[4], a[1]*b[4]+a[3]*b[5]+a[5] ];\r\n      }\r\n      let result = arguments[0];\r\n      for (let i = 1; i < arguments.length; i++) {\r\n        result = multiply(result, arguments[i]);\r\n      }\r\n      return result;\r\n    }\r\n    function transformPoint(p, m) {\r\n      return [m[0] * p[0] + m[2] * p[1] + m[4], m[1] * p[0] + m[3] * p[1] + m[5]];\r\n    }\r\n    function getGlobalMatrix() {\r\n      let ctm = doc._ctm;\r\n      for (let i = groupStack.length - 1; i >= 0; i--) {\r\n        ctm = multiplyMatrix(groupStack[i].savedMatrix, ctm);\r\n      }\r\n      return ctm;\r\n    }\r\n    function getPageBBox() {\r\n      return new SvgShape().M(0, 0).L(doc.page.width, 0).L(doc.page.width, doc.page.height).L(0, doc.page.height)\r\n                           .transform(inverseMatrix(getGlobalMatrix())).getBoundingBox();\r\n    }\r\n    function inverseMatrix(m) {\r\n      let dt = m[0] * m[3] - m[1] * m[2];\r\n      return [m[3] / dt, -m[1] / dt, -m[2] / dt, m[0] / dt, (m[2]*m[5] - m[3]*m[4]) / dt, (m[1]*m[4] - m[0]*m[5]) / dt];\r\n    }\r\n    function validateMatrix(m) {\r\n      let m0 = validateNumber(m[0]), m1 = validateNumber(m[1]), m2 = validateNumber(m[2]),\r\n          m3 = validateNumber(m[3]), m4 = validateNumber(m[4]), m5 = validateNumber(m[5]);\r\n      if (isNotEqual(m0 * m3 - m1 * m2, 0)) {\r\n        return [m0, m1, m2, m3, m4, m5];\r\n      }\r\n    }\r\n    function solveEquation(curve) {\r\n      let a = curve[2] || 0, b = curve[1] || 0, c = curve[0] || 0;\r\n      if (isEqual(a, 0) && isEqual(b, 0)) {\r\n        return [];\r\n      } else if (isEqual(a, 0)) {\r\n        return [(-c) / b];\r\n      } else {\r\n        let d = b * b - 4 * a * c;\r\n        if (isNotEqual(d, 0) && d > 0) {\r\n          return [(-b + Math.sqrt(d)) / (2 * a), (-b - Math.sqrt(d)) / (2 * a)];\r\n        } else if (isEqual(d, 0)) {\r\n          return [(-b) / (2 * a)];\r\n        } else {\r\n          return [];\r\n        }\r\n      }\r\n    }\r\n    function getCurveValue(t, curve) {\r\n      return (curve[0] || 0) + (curve[1] || 0) * t + (curve[2] || 0) * t * t + (curve[3] || 0) * t * t * t;\r\n    }\r\n    function isEqual(number, ref) {\r\n      return Math.abs(number - ref) < 1e-10;\r\n    }\r\n    function isNotEqual(number, ref) {\r\n      return Math.abs(number - ref) >= 1e-10;\r\n    }\r\n    function validateNumber(n) {\r\n      return n > -1e21 && n < 1e21 ? Math.round(n * 1e6) / 1e6 : 0;\r\n    }\r\n    function isArrayLike(v) {\r\n      return typeof v === 'object' && v !== null && typeof v.length === 'number';\r\n    }\r\n    function parseTranform(v) {\r\n      let parser = new StringParser((v || '').trim()), result = [1, 0, 0, 1, 0, 0], temp;\r\n      while (temp = parser.match(/^([A-Za-z]+)\\s*[(]([^(]+)[)]/, true)) {\r\n        let func = temp[1], nums = [], parser2 = new StringParser(temp[2].trim()), temp2;\r\n        while (temp2 = parser2.matchNumber()) {\r\n          nums.push(Number(temp2));\r\n          parser2.matchSeparator();\r\n        }\r\n        if (func === 'matrix' && nums.length === 6) {\r\n          result = multiplyMatrix(result, [nums[0], nums[1], nums[2], nums[3], nums[4], nums[5]]);\r\n        } else if (func === 'translate' && nums.length === 2) {\r\n          result = multiplyMatrix(result, [1, 0, 0, 1, nums[0], nums[1]]);\r\n        } else if (func === 'translate' && nums.length === 1) {\r\n          result = multiplyMatrix(result, [1, 0, 0, 1, nums[0], 0]);\r\n        } else if (func === 'scale' && nums.length === 2) {\r\n          result = multiplyMatrix(result, [nums[0], 0, 0, nums[1], 0, 0]);\r\n        } else if (func === 'scale' && nums.length === 1) {\r\n          result = multiplyMatrix(result, [nums[0], 0, 0, nums[0], 0, 0]);\r\n        } else if (func === 'rotate' && nums.length === 3) {\r\n          let a = nums[0] * Math.PI / 180;\r\n          result = multiplyMatrix(result, [1, 0, 0, 1, nums[1], nums[2]], [Math.cos(a), Math.sin(a), -Math.sin(a), Math.cos(a), 0, 0], [1, 0, 0, 1, -nums[1], -nums[2]]);\r\n        } else if (func === 'rotate' && nums.length === 1) {\r\n          let a = nums[0] * Math.PI / 180;\r\n          result = multiplyMatrix(result, [Math.cos(a), Math.sin(a), -Math.sin(a), Math.cos(a), 0, 0]);\r\n        } else if (func === 'skewX' && nums.length === 1) {\r\n          let a = nums[0] * Math.PI / 180;\r\n          result = multiplyMatrix(result, [1, 0, Math.tan(a), 1, 0, 0]);\r\n        } else if (func === 'skewY' && nums.length === 1) {\r\n          let a = nums[0] * Math.PI / 180;\r\n          result = multiplyMatrix(result, [1, Math.tan(a), 0, 1, 0, 0]);\r\n        } else {return;}\r\n        parser.matchSeparator();\r\n      }\r\n      if (parser.matchAll()) {return;}\r\n      return result;\r\n    }\r\n    function parseAspectRatio(aspectRatio, availWidth, availHeight, elemWidth, elemHeight, initAlign) {\r\n      let temp = (aspectRatio || '').trim().match(/^(none)$|^x(Min|Mid|Max)Y(Min|Mid|Max)(?:\\s+(meet|slice))?$/) || [],\r\n          ratioType = temp[1] || temp[4] || 'meet',\r\n          xAlign = temp[2] || 'Mid',\r\n          yAlign = temp[3] || 'Mid',\r\n          scaleX = availWidth / elemWidth,\r\n          scaleY = availHeight / elemHeight,\r\n          dx = {'Min':0, 'Mid':0.5, 'Max':1}[xAlign] - (initAlign || 0),\r\n          dy = {'Min':0, 'Mid':0.5, 'Max':1}[yAlign] - (initAlign || 0);\r\n      if (ratioType === 'slice') {\r\n        scaleY = scaleX = Math.max(scaleX, scaleY);\r\n      } else if (ratioType === 'meet') {\r\n        scaleY = scaleX = Math.min(scaleX, scaleY);\r\n      }\r\n      return [scaleX, 0, 0, scaleY, dx * (availWidth - elemWidth * scaleX), dy * (availHeight - elemHeight * scaleY)];\r\n    }\r\n    function parseStyleAttr(v) {\r\n      let result = Object.create(null);\r\n      v = (v || '').trim().split(/;/);\r\n      for (let i = 0; i < v.length; i++) {\r\n        let key = (v[i].split(':')[0] || '').trim(),\r\n            value = (v[i].split(':')[1] || '').trim();\r\n        if (key) {\r\n          result[key] = value;\r\n        }\r\n      }\r\n      if (result['marker']) {\r\n        if (!result['marker-start']) {result['marker-start'] = result['marker'];}\r\n        if (!result['marker-mid']) {result['marker-mid'] = result['marker'];}\r\n        if (!result['marker-end']) {result['marker-end'] = result['marker'];}\r\n      }\r\n      if (result['font']) {\r\n        let fontFamily = null, fontSize = null, fontStyle = \"normal\", fontWeight = \"normal\", fontVariant = \"normal\";\r\n        let parts = result['font'].split(/\\s+/);\r\n        for (let i = 0; i < parts.length; i++) {\r\n          switch (parts[i]) {\r\n            case \"normal\":\r\n              break;\r\n            case \"italic\": case \"oblique\":\r\n              fontStyle = parts[i];\r\n              break;\r\n            case \"small-caps\":\r\n              fontVariant = parts[i];\r\n              break;\r\n            case \"bold\": case \"bolder\": case \"lighter\": case \"100\": case \"200\": case \"300\":\r\n            case \"400\": case \"500\": case \"600\": case \"700\": case \"800\": case \"900\":\r\n              fontWeight = parts[i];\r\n              break;\r\n            default:\r\n              if (!fontSize) {\r\n                fontSize = parts[i].split('/')[0];\r\n              } else {\r\n                if (!fontFamily) {\r\n                  fontFamily = parts[i];\r\n                } else {\r\n                  fontFamily += ' ' + parts[i];\r\n                }\r\n              }\r\n              break;\r\n          }\r\n        }\r\n        if (!result['font-style']) {result['font-style'] = fontStyle;}\r\n        if (!result['font-variant']) {result['font-variant'] = fontVariant;}\r\n        if (!result['font-weight']) {result['font-weight'] = fontWeight;}\r\n        if (!result['font-size']) {result['font-size'] = fontSize;}\r\n        if (!result['font-family']) {result['font-family'] = fontFamily;}\r\n      }\r\n      return result;\r\n    }\r\n    function parseSelector(v) {\r\n      let parts = v.split(/(?=[.#])/g), ids = [], classes = [], tags = [], temp;\r\n      for (let i = 0; i < parts.length; i++) {\r\n        if (temp = parts[i].match(/^[#]([_A-Za-z0-9-]+)$/)) {\r\n          ids.push(temp[1]);\r\n        } else if (temp = parts[i].match(/^[.]([_A-Za-z0-9-]+)$/)) {\r\n          classes.push(temp[1]);\r\n        } else if (temp = parts[i].match(/^([_A-Za-z0-9-]+)$/)) {\r\n          tags.push(temp[1]);\r\n        } else if (parts[i] !== '*') {\r\n          return;\r\n        }\r\n      }\r\n      return {\r\n        tags: tags, ids: ids, classes: classes,\r\n        specificity: ids.length * 10000 + classes.length * 100 + tags.length\r\n      };\r\n    }\r\n    function parseStyleSheet(v) {\r\n      let parser = new StringParser(v.trim()), rules = [], rule;\r\n      while (rule = parser.match(/^\\s*([^\\{\\}]*?)\\s*\\{([^\\{\\}]*?)\\}/, true)) {\r\n        let selectors = rule[1].split(/\\s*,\\s*/g),\r\n            css = parseStyleAttr(rule[2]);\r\n        for (let i = 0; i < selectors.length; i++) {\r\n          let selector = parseSelector(selectors[i]);\r\n          if (selector) {\r\n            rules.push({selector: selector, css:css});\r\n          }\r\n        }\r\n      }\r\n      return rules;\r\n    }\r\n    function matchesSelector(elem, selector) {\r\n      if (elem.nodeType !== 1) {return false;}\r\n      for (let i = 0; i < selector.tags.length; i++) {\r\n        if (selector.tags[i] !== elem.nodeName) {return false;}\r\n      }\r\n      for (let i = 0; i < selector.ids.length; i++) {\r\n        if (selector.ids[i] !== elem.id) {return false;}\r\n      }\r\n      for (let i = 0; i < selector.classes.length; i++) {\r\n        if (elem.classList.indexOf(selector.classes[i]) === -1) {return false;}\r\n      }\r\n      return true;\r\n    }\r\n    function getStyle(elem) {\r\n      let result = Object.create(null);\r\n      let specificities = Object.create(null);\r\n      for (let i = 0; i < styleRules.length; i++) {\r\n        let rule = styleRules[i];\r\n        if (matchesSelector(elem, rule.selector)) {\r\n          for (let key in rule.css) {\r\n            if (!(specificities[key] > rule.selector.specificity)) {\r\n              result[key] = rule.css[key];\r\n              specificities[key] = rule.selector.specificity;\r\n            }\r\n          }\r\n        }\r\n      }\r\n      return result;\r\n    }\r\n    function combineArrays(array1, array2) {\r\n      return array1.concat(array2.slice(array1.length));\r\n    }\r\n    function getAscent(font, size) {\r\n      return Math.max(font.ascender, (font.bbox[3] || font.bbox.maxY) * (font.scale || 1)) * size / 1000;\r\n    }\r\n    function getDescent(font, size) {\r\n      return Math.min(font.descender, (font.bbox[1] || font.bbox.minY) * (font.scale || 1)) * size / 1000;\r\n    }\r\n    function getXHeight(font, size) {\r\n      return (font.xHeight || 0.5 * (font.ascender - font.descender)) * size / 1000;\r\n    }\r\n    function getBaseline(font, size, baseline, shift) {\r\n      let dy1, dy2;\r\n      switch (baseline) {\r\n        case 'middle': dy1 = 0.5 * getXHeight(font, size); break;\r\n        case 'central': dy1 = 0.5 * (getDescent(font, size) + getAscent(font, size)); break;\r\n        case 'after-edge': case 'text-after-edge': dy1 = getDescent(font, size); break;\r\n        case 'alphabetic': case 'auto': case 'baseline': dy1 = 0; break;\r\n        case 'mathematical': dy1 = 0.5 * getAscent(font, size); break;\r\n        case 'hanging': dy1 = 0.8 * getAscent(font, size); break;\r\n        case 'before-edge': case 'text-before-edge': dy1 = getAscent(font, size); break;\r\n        default: dy1 = 0; break;\r\n      }\r\n      switch (shift) {\r\n        case 'baseline': dy2 = 0; break;\r\n        case 'super': dy2 = 0.6 * size; break;\r\n        case 'sub': dy2 = -0.6 * size; break;\r\n        default: dy2 = shift; break;\r\n      }\r\n      return dy1 - dy2;\r\n    }\r\n    function getTextPos(font, size, text) {\r\n      let encoded = font.encode('' + text), hex = encoded[0], pos = encoded[1], data = [];\r\n      for (let i = 0; i < hex.length; i++) {\r\n        let unicode = font.unicode ? font.unicode[parseInt(hex[i], 16)] : [text.charCodeAt(i)];\r\n        data.push({\r\n          glyph: hex[i],\r\n          unicode: unicode,\r\n          width: pos[i].advanceWidth * size / 1000,\r\n          xOffset: pos[i].xOffset * size / 1000,\r\n          yOffset: pos[i].yOffset * size / 1000,\r\n          xAdvance: pos[i].xAdvance * size / 1000,\r\n          yAdvance: pos[i].yAdvance * size / 1000\r\n        });\r\n      }\r\n      return data;\r\n    }\r\n    function createSVGElement(obj, inherits) {\r\n      switch (obj.nodeName) {\r\n        case 'use': return new SvgElemUse(obj, inherits);\r\n        case 'symbol': return new SvgElemSymbol(obj, inherits);\r\n        case 'g': return new SvgElemGroup(obj, inherits);\r\n        case 'a': return new SvgElemLink(obj, inherits);\r\n        case 'svg': return new SvgElemSvg(obj, inherits);\r\n        case 'image': return new SVGElemImage(obj, inherits);\r\n        case 'rect': return new SvgElemRect(obj, inherits);\r\n        case 'circle': return new SvgElemCircle(obj, inherits);\r\n        case 'ellipse': return new SvgElemEllipse(obj, inherits);\r\n        case 'line': return new SvgElemLine(obj, inherits);\r\n        case 'polyline': return new SvgElemPolyline(obj, inherits);\r\n        case 'polygon': return new SvgElemPolygon(obj, inherits);\r\n        case 'path': return new SvgElemPath(obj, inherits);\r\n        case 'text': return new SvgElemText(obj, inherits);\r\n        case 'tspan': return new SvgElemTspan(obj, inherits);\r\n        case 'textPath': return new SvgElemTextPath(obj, inherits);\r\n        case '#text': case '#cdata-section': return new SvgElemTextNode(obj, inherits);\r\n        default: return new SvgElem(obj, inherits);\r\n      }\r\n    }\r\n\r\n    var StringParser = function(str) {\r\n      this.match = function(exp, all) {\r\n        let temp = str.match(exp);\r\n        if (!temp || temp.index !== 0) {return;}\r\n        str = str.substring(temp[0].length);\r\n        return (all ? temp : temp[0]);\r\n      };\r\n      this.matchSeparator = function() {\r\n        return this.match(/^(?:\\s*,\\s*|\\s*|)/);\r\n      };\r\n      this.matchSpace = function() {\r\n        return this.match(/^(?:\\s*)/);\r\n      };\r\n      this.matchLengthUnit = function() {\r\n        return this.match(/^(?:px|pt|cm|mm|in|pc|em|ex|%|)/);\r\n      };\r\n      this.matchNumber = function() {\r\n        return this.match(/^(?:[-+]?(?:[0-9]+[.][0-9]+|[0-9]+[.]|[.][0-9]+|[0-9]+)(?:[eE][-+]?[0-9]+)?)/);\r\n      };\r\n      this.matchAll = function() {\r\n        return this.match(/^[\\s\\S]+/);\r\n      };\r\n    };\r\n\r\n    var BezierSegment = function(p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y) {\r\n      let divisions = 6 * precision;\r\n      let equationX = [p1x, -3 * p1x + 3 * c1x, 3 * p1x - 6 * c1x + 3 * c2x, -p1x + 3 * c1x - 3 * c2x + p2x];\r\n      let equationY = [p1y, -3 * p1y + 3 * c1y, 3 * p1y - 6 * c1y + 3 * c2y, -p1y + 3 * c1y - 3 * c2y + p2y];\r\n      let derivativeX = [-3 * p1x + 3 * c1x, 6 * p1x - 12 * c1x + 6 * c2x, -3 * p1x + 9 * c1x - 9 * c2x + 3 * p2x];\r\n      let derivativeY = [-3 * p1y + 3 * c1y, 6 * p1y - 12 * c1y + 6 * c2y, -3 * p1y + 9 * c1y - 9 * c2y + 3 * p2y];\r\n      let lengthMap = [0];\r\n      for (let i = 1; i <= divisions; i++) {\r\n        let t = (i - 0.5) / divisions;\r\n        let dx = getCurveValue(t, derivativeX) / divisions,\r\n            dy = getCurveValue(t, derivativeY) / divisions,\r\n            l = Math.sqrt(dx * dx + dy * dy);\r\n        lengthMap[i] = lengthMap[i - 1] + l;\r\n      }\r\n      this.totalLength = lengthMap[divisions];\r\n      this.startPoint = [p1x, p1y, isEqual(p1x, c1x) && isEqual(p1y, c1y) ? Math.atan2(c2y - c1y, c2x - c1x) : Math.atan2(c1y - p1y, c1x - p1x)];\r\n      this.endPoint = [p2x, p2y, isEqual(c2x, p2x) && isEqual(c2y, p2y) ? Math.atan2(c2y - c1y, c2x - c1x) : Math.atan2(p2y - c2y, p2x - c2x)];\r\n      this.getBoundingBox = function() {\r\n        let temp;\r\n        let minX = getCurveValue(0, equationX), minY = getCurveValue(0, equationY),\r\n            maxX = getCurveValue(1, equationX), maxY = getCurveValue(1, equationY);\r\n        if (minX > maxX) {temp = maxX; maxX = minX; minX = temp;}\r\n        if (minY > maxY) {temp = maxY; maxY = minY; minY = temp;}\r\n        let rootsX = solveEquation(derivativeX);\r\n        for (let i = 0; i < rootsX.length; i++) {\r\n          if (rootsX[i] >= 0 && rootsX[i] <= 1) {\r\n            let x = getCurveValue(rootsX[i], equationX);\r\n            if (x < minX) {minX = x;}\r\n            if (x > maxX) {maxX = x;}\r\n          }\r\n        }\r\n        let rootsY = solveEquation(derivativeY);\r\n        for (let i = 0; i < rootsY.length; i++) {\r\n          if (rootsY[i] >= 0 && rootsY[i] <= 1) {\r\n            let y = getCurveValue(rootsY[i], equationY);\r\n            if (y < minY) {minY = y;}\r\n            if (y > maxY) {maxY = y;}\r\n          }\r\n        }\r\n        return [minX, minY, maxX, maxY];\r\n      };\r\n      this.getPointAtLength = function(l) {\r\n        if (isEqual(l, 0)) {return this.startPoint;}\r\n        if (isEqual(l, this.totalLength)) {return this.endPoint;}\r\n        if (l < 0 || l > this.totalLength) {return;}\r\n        for (let i = 1; i <= divisions; i++) {\r\n          let l1 = lengthMap[i-1], l2 = lengthMap[i];\r\n          if (l1 <= l && l <= l2) {\r\n            let t = (i - (l2 - l) / (l2 - l1)) / divisions,\r\n                x = getCurveValue(t, equationX), y = getCurveValue(t, equationY),\r\n                dx = getCurveValue(t, derivativeX), dy = getCurveValue(t, derivativeY);\r\n            return [x, y, Math.atan2(dy, dx)];\r\n          }\r\n        }\r\n      };\r\n    };\r\n\r\n    var LineSegment = function(p1x, p1y, p2x, p2y) {\r\n      this.totalLength = Math.sqrt((p2x - p1x) * (p2x - p1x) + (p2y - p1y) * (p2y - p1y));\r\n      this.startPoint = [p1x, p1y, Math.atan2(p2y - p1y, p2x - p1x)];\r\n      this.endPoint = [p2x, p2y, Math.atan2(p2y - p1y, p2x - p1x)];\r\n      this.getBoundingBox = function() {\r\n        return [Math.min(this.startPoint[0], this.endPoint[0]), Math.min(this.startPoint[1], this.endPoint[1]),\r\n                Math.max(this.startPoint[0], this.endPoint[0]), Math.max(this.startPoint[1], this.endPoint[1])];\r\n      };\r\n      this.getPointAtLength = function(l) {\r\n        if (l >= 0 && l <= this.totalLength) {\r\n          let r = l / this.totalLength || 0,\r\n              x = this.startPoint[0] + r * (this.endPoint[0] - this.startPoint[0]),\r\n              y = this.startPoint[1] + r * (this.endPoint[1] - this.startPoint[1]);\r\n          return [x, y, this.startPoint[2]];\r\n        }\r\n      };\r\n    };\r\n\r\n    var SvgShape = function() {\r\n      this.pathCommands = [];\r\n      this.pathSegments = [];\r\n      this.startPoint = null;\r\n      this.endPoint = null;\r\n      this.totalLength = 0;\r\n      let startX = 0, startY = 0, currX = 0, currY = 0, lastCom, lastCtrlX, lastCtrlY;\r\n      this.move = function(x, y) {\r\n        startX = currX = x; startY = currY = y;\r\n        return null;\r\n      };\r\n      this.line = function(x, y) {\r\n        let segment = new LineSegment(currX, currY, x, y);\r\n        currX = x; currY = y;\r\n        return segment;\r\n      };\r\n      this.curve = function(c1x, c1y, c2x, c2y, x, y) {\r\n        let segment = new BezierSegment(currX, currY, c1x, c1y, c2x, c2y, x, y);\r\n        currX = x; currY = y;\r\n        return segment;\r\n      };\r\n      this.close = function() {\r\n        let segment = new LineSegment(currX, currY, startX, startY);\r\n        currX = startX; currY = startY;\r\n        return segment;\r\n      };\r\n      this.addCommand = function(data) {\r\n        this.pathCommands.push(data);\r\n        let segment = this[data[0]].apply(this, data.slice(3));\r\n        if (segment) {\r\n          segment.hasStart = data[1];\r\n          segment.hasEnd = data[2];\r\n          this.startPoint = this.startPoint || segment.startPoint;\r\n          this.endPoint = segment.endPoint;\r\n          this.pathSegments.push(segment);\r\n          this.totalLength += segment.totalLength;\r\n        }\r\n      };\r\n      this.M = function(x, y) {\r\n        this.addCommand(['move', true, true, x, y]);\r\n        lastCom = 'M';\r\n        return this;\r\n      };\r\n      this.m = function(x, y) {\r\n        return this.M(currX + x, currY + y);\r\n      };\r\n      this.Z = this.z = function() {\r\n        this.addCommand(['close', true, true]);\r\n        lastCom = 'Z';\r\n        return this;\r\n      };\r\n      this.L = function(x, y) {\r\n        this.addCommand(['line', true, true, x, y]);\r\n        lastCom = 'L';\r\n        return this;\r\n      };\r\n      this.l = function(x, y) {\r\n        return this.L(currX + x, currY + y);\r\n      };\r\n      this.H = function(x) {\r\n        return this.L(x, currY);\r\n      };\r\n      this.h = function(x) {\r\n        return this.L(currX + x, currY);\r\n      };\r\n      this.V = function(y) {\r\n        return this.L(currX, y);\r\n      };\r\n      this.v = function(y) {\r\n        return this.L(currX, currY + y);\r\n      };\r\n      this.C = function(c1x, c1y, c2x, c2y, x, y) {\r\n        this.addCommand(['curve', true, true, c1x, c1y, c2x, c2y, x, y]);\r\n        lastCom = 'C'; lastCtrlX = c2x; lastCtrlY = c2y;\r\n        return this;\r\n      };\r\n      this.c = function(c1x, c1y, c2x, c2y, x, y) {\r\n        return this.C(currX + c1x, currY + c1y, currX + c2x, currY + c2y, currX + x, currY + y);\r\n      };\r\n      this.S = function(c1x, c1y, x, y) {\r\n        return this.C(currX + (lastCom === 'C' ? currX - lastCtrlX : 0), currY + (lastCom === 'C' ? currY - lastCtrlY : 0), c1x, c1y, x, y);\r\n      };\r\n      this.s = function(c1x, c1y, x, y) {\r\n        return this.C(currX + (lastCom === 'C' ? currX - lastCtrlX : 0), currY + (lastCom === 'C' ? currY - lastCtrlY : 0), currX + c1x, currY + c1y, currX + x, currY + y);\r\n      };\r\n      this.Q = function(cx, cy, x, y) {\r\n        let c1x = currX + 2 / 3 * (cx - currX), c1y = currY + 2 / 3 * (cy - currY),\r\n            c2x = x + 2 / 3 * (cx - x), c2y = y + 2 / 3 * (cy - y);\r\n        this.addCommand(['curve', true, true, c1x, c1y, c2x, c2y, x, y]);\r\n        lastCom = 'Q'; lastCtrlX = cx; lastCtrlY = cy;\r\n        return this;\r\n      };\r\n      this.q = function(c1x, c1y, x, y) {\r\n        return this.Q(currX + c1x, currY + c1y, currX + x, currY + y);\r\n      };\r\n      this.T = function(x, y) {\r\n        return this.Q(currX + (lastCom === 'Q' ? currX - lastCtrlX : 0), currY + (lastCom === 'Q' ? currY - lastCtrlY : 0), x, y);\r\n      };\r\n      this.t = function(x, y) {\r\n        return this.Q(currX + (lastCom === 'Q' ? currX - lastCtrlX : 0), currY + (lastCom === 'Q' ? currY - lastCtrlY : 0), currX + x, currY + y);\r\n      };\r\n      this.A = function(rx, ry, fi, fa, fs, x, y) {\r\n        if (isEqual(rx, 0) || isEqual(ry, 0)) {\r\n          this.addCommand(['line', true, true, x, y]);\r\n        } else {\r\n          fi = fi * (Math.PI / 180);\r\n          rx = Math.abs(rx);\r\n          ry = Math.abs(ry);\r\n          fa = 1 * !!fa;\r\n          fs = 1 * !!fs;\r\n          let x1 = Math.cos(fi) * (currX - x) / 2 + Math.sin(fi) * (currY - y) / 2,\r\n              y1 = Math.cos(fi) * (currY - y) / 2 - Math.sin(fi) * (currX - x) / 2,\r\n              lambda = (x1 * x1) / (rx * rx) + (y1 * y1) / (ry * ry);\r\n          if (lambda > 1) {\r\n            rx *= Math.sqrt(lambda);\r\n            ry *= Math.sqrt(lambda);\r\n          }\r\n          let r = Math.sqrt(Math.max(0, rx * rx * ry * ry - rx * rx * y1 * y1 - ry * ry * x1 * x1) / (rx * rx * y1 * y1 + ry * ry * x1 * x1)),\r\n              x2 = (fa === fs ? -1 : 1) * r * rx * y1 / ry,\r\n              y2 = (fa === fs ? 1 : -1) * r * ry * x1 / rx;\r\n          let cx = Math.cos(fi) * x2 - Math.sin(fi) * y2 + (currX + x) / 2,\r\n              cy = Math.sin(fi) * x2 + Math.cos(fi) * y2 + (currY + y) / 2,\r\n              th1 = Math.atan2((y1 - y2) / ry, (x1 - x2) / rx),\r\n              th2 = Math.atan2((-y1 - y2) / ry, (-x1 - x2) / rx);\r\n          if (fs === 0 && th2 - th1 > 0) {\r\n            th2 -= 2 * Math.PI;\r\n          } else if (fs === 1 && th2 - th1 < 0) {\r\n            th2 += 2 * Math.PI;\r\n          }\r\n          let segms = Math.ceil(Math.abs(th2 - th1) / (Math.PI / precision));\r\n          for (let i = 0; i < segms; i++) {\r\n            let th3 = th1 + i * (th2 - th1) / segms,\r\n                th4 = th1 + (i + 1) * (th2 - th1) / segms,\r\n                t = 4/3 * Math.tan((th4 - th3) / 4);\r\n            let c1x = cx + Math.cos(fi) * rx * (Math.cos(th3) - t * Math.sin(th3)) - Math.sin(fi) * ry * (Math.sin(th3) + t * Math.cos(th3)),\r\n                c1y = cy + Math.sin(fi) * rx * (Math.cos(th3) - t * Math.sin(th3)) + Math.cos(fi) * ry * (Math.sin(th3) + t * Math.cos(th3)),\r\n                c2x = cx + Math.cos(fi) * rx * (Math.cos(th4) + t * Math.sin(th4)) - Math.sin(fi) * ry * (Math.sin(th4) - t * Math.cos(th4)),\r\n                c2y = cy + Math.sin(fi) * rx * (Math.cos(th4) + t * Math.sin(th4)) + Math.cos(fi) * ry * (Math.sin(th4) - t * Math.cos(th4)),\r\n                endX = cx + Math.cos(fi) * rx * Math.cos(th4) - Math.sin(fi) * ry * Math.sin(th4),\r\n                endY = cy + Math.sin(fi) * rx * Math.cos(th4) + Math.cos(fi) * ry * Math.sin(th4);\r\n            this.addCommand(['curve', (i === 0), (i === segms - 1), c1x, c1y, c2x, c2y, endX, endY]);\r\n          }\r\n        }\r\n        lastCom = 'A';\r\n        return this;\r\n      };\r\n      this.a = function(rx, ry, fi, fa, fs, x, y) {\r\n        return this.A(rx, ry, fi, fa, fs, currX + x, currY + y);\r\n      };\r\n      this.path = function(d) {\r\n        let command, value, temp,\r\n            parser = new StringParser((d || '').trim());\r\n        while (command = parser.match(/^[astvzqmhlcASTVZQMHLC]/)) {\r\n          parser.matchSeparator();\r\n          let values = [];\r\n          while (value = (PathFlags[command + values.length] ? parser.match(/^[01]/) : parser.matchNumber())) {\r\n            parser.matchSeparator();\r\n            if (values.length === PathArguments[command]) {\r\n              this[command].apply(this, values);\r\n              values = [];\r\n              if (command === 'M') {command = 'L';}\r\n              else if (command === 'm') {command = 'l';}\r\n            }\r\n            values.push(Number(value));\r\n          }\r\n          if (values.length === PathArguments[command]) {\r\n            this[command].apply(this, values);\r\n          } else {\r\n            warningCallback('SvgPath: command ' + command + ' with ' + values.length + ' numbers'); return;\r\n          }\r\n        }\r\n        if (temp = parser.matchAll()) {\r\n          warningCallback('SvgPath: unexpected string ' + temp);\r\n        }\r\n        return this;\r\n      };\r\n      this.getBoundingBox = function() {\r\n        let bbox = [Infinity, Infinity, -Infinity, -Infinity];\r\n        function addBounds(bbox1) {\r\n          if (bbox1[0] < bbox[0]) {bbox[0] = bbox1[0];}\r\n          if (bbox1[2] > bbox[2]) {bbox[2] = bbox1[2];}\r\n          if (bbox1[1] < bbox[1]) {bbox[1] = bbox1[1];}\r\n          if (bbox1[3] > bbox[3]) {bbox[3] = bbox1[3];}\r\n        }\r\n        for (let i = 0; i < this.pathSegments.length; i++) {\r\n          addBounds(this.pathSegments[i].getBoundingBox());\r\n        }\r\n        if (bbox[0] === Infinity) {bbox[0] = 0;}\r\n        if (bbox[1] === Infinity) {bbox[1] = 0;}\r\n        if (bbox[2] === -Infinity) {bbox[2] = 0;}\r\n        if (bbox[3] === -Infinity) {bbox[3] = 0;}\r\n        return bbox;\r\n      };\r\n      this.getPointAtLength = function(l) {\r\n        if (l >= 0 && l <= this.totalLength) {\r\n          let temp;\r\n          for (let i = 0; i < this.pathSegments.length; i++) {\r\n            if (temp = this.pathSegments[i].getPointAtLength(l)) {\r\n              return temp;\r\n            }\r\n            l -= this.pathSegments[i].totalLength;\r\n          }\r\n          return this.endPoint;\r\n        }\r\n      };\r\n      this.transform = function(m) {\r\n        this.pathSegments = [];\r\n        this.startPoint = null;\r\n        this.endPoint = null;\r\n        this.totalLength = 0;\r\n        for (let i = 0; i < this.pathCommands.length; i++) {\r\n          let data = this.pathCommands.shift();\r\n          for (let j = 3; j < data.length; j+=2) {\r\n            let p = transformPoint([data[j], data[j + 1]], m)\r\n            data[j] = p[0];\r\n            data[j + 1] = p[1];\r\n          }\r\n          this.addCommand(data);\r\n        }\r\n        return this;        \r\n      };\r\n      this.mergeShape = function(shape) {\r\n        for (let i = 0; i < shape.pathCommands.length; i++) {\r\n          this.addCommand(shape.pathCommands[i].slice());\r\n        }\r\n        return this;\r\n      };\r\n      this.clone = function() {\r\n        return new SvgShape().mergeShape(this);\r\n      };\r\n      this.insertInDocument = function() {\r\n        for (let i = 0; i < this.pathCommands.length; i++) {\r\n          let command = this.pathCommands[i][0], values = this.pathCommands[i].slice(3);\r\n          switch(command) {\r\n            case 'move':  doc.moveTo(values[0], values[1]);  break;\r\n            case 'line':  doc.lineTo(values[0], values[1]);  break;\r\n            case 'curve':  doc.bezierCurveTo(values[0], values[1], values[2], values[3], values[4], values[5]);  break;\r\n            case 'close':  doc.closePath();  break;\r\n          }\r\n        }\r\n      };\r\n      this.getSubPaths = function() {\r\n        let subPaths = [], shape = new SvgShape();\r\n        for (let i = 0; i < this.pathCommands.length; i++) {\r\n          let data = this.pathCommands[i], command = this.pathCommands[i][0];\r\n          if (command === 'move' && i !== 0) {\r\n            subPaths.push(shape);\r\n            shape = new SvgShape();\r\n          }\r\n          shape.addCommand(data);\r\n        }\r\n        subPaths.push(shape);\r\n        return subPaths;\r\n      };\r\n      this.getMarkers = function() {\r\n        let markers = [], subPaths = this.getSubPaths();\r\n        for (let i = 0; i < subPaths.length; i++) {\r\n          let subPath = subPaths[i], subPathMarkers = [];\r\n          for (let j = 0; j < subPath.pathSegments.length; j++) {\r\n            let segment = subPath.pathSegments[j];\r\n            if (isNotEqual(segment.totalLength, 0) || j === 0 || j === subPath.pathSegments.length - 1) {\r\n              if (segment.hasStart) {\r\n                let startMarker = segment.getPointAtLength(0), prevEndMarker = subPathMarkers.pop();\r\n                if (prevEndMarker) {startMarker[2] = 0.5 * (prevEndMarker[2] + startMarker[2]);}\r\n                subPathMarkers.push(startMarker);\r\n              }\r\n              if (segment.hasEnd) {\r\n                let endMarker = segment.getPointAtLength(segment.totalLength);\r\n                subPathMarkers.push(endMarker);\r\n              }\r\n            }\r\n          }\r\n          markers = markers.concat(subPathMarkers);\r\n        }\r\n        return markers;\r\n      };\r\n    };\r\n\r\n    var SvgElem = function(obj, inherits) {\r\n      let styleCache = Object.create(null);\r\n      let childrenCache = null;\r\n      this.name = obj.nodeName;\r\n      this.isOuterElement = obj === svg || !obj.parentNode;\r\n      this.inherits = inherits || (!this.isOuterElement ? createSVGElement(obj.parentNode, null) : null);\r\n      this.stack = (this.inherits ? this.inherits.stack.concat(obj) : [obj]);\r\n      this.style = parseStyleAttr(typeof obj.getAttribute === 'function' && obj.getAttribute('style'));\r\n      this.css = useCSS ? getComputedStyle(obj) : getStyle(obj);\r\n      this.allowedChildren = [];\r\n      this.attr = function(key) {\r\n        if (typeof obj.getAttribute === 'function') {\r\n          return obj.getAttribute(key);\r\n        }\r\n      };\r\n      this.resolveUrl = function(value) {\r\n        let temp = (value || '').match(/^\\s*(?:url\\(\"(.*)#(.*)\"\\)|url\\('(.*)#(.*)'\\)|url\\((.*)#(.*)\\)|(.*)#(.*))\\s*$/) || [];\r\n        let file = temp[1] || temp[3] || temp[5] || temp[7],\r\n            id = temp[2] || temp[4] || temp[6] || temp[8];\r\n        if (id) {\r\n          if (!file) {\r\n            let svgObj = svg.getElementById(id);\r\n            if (svgObj) {\r\n              if (this.stack.indexOf(svgObj) === -1) {\r\n                return svgObj;\r\n              } else {\r\n                warningCallback('SVGtoPDF: loop of circular references for id \"' + id + '\"');\r\n                return;\r\n              }\r\n            }\r\n          }\r\n          if (documentCallback) {\r\n            let svgs = documentCache[file];\r\n            if (!svgs) {\r\n              svgs = documentCallback(file);\r\n              if (!isArrayLike(svgs)) {svgs = [svgs];}\r\n              for (let i = 0; i < svgs.length; i++) {\r\n                if (typeof svgs[i] === 'string') {svgs[i] = parseXml(svgs[i]);}\r\n              }\r\n              documentCache[file] = svgs;\r\n            }\r\n            for (let i = 0; i < svgs.length; i++) {\r\n              let svgObj = svgs[i].getElementById(id);\r\n              if (svgObj) {\r\n                if (this.stack.indexOf(svgObj) === -1) {\r\n                  return svgObj;\r\n                } else {\r\n                  warningCallback('SVGtoPDF: loop of circular references for id \"' + file + '#' + id + '\"');\r\n                  return;\r\n                }\r\n              }\r\n            }\r\n          }\r\n        }\r\n      };\r\n      this.computeUnits = function(value, unit, percent, isFontSize) {\r\n        if (unit === '%') {\r\n          return parseFloat(value) / 100 * (isFontSize || percent != null ? percent : this.getViewport());\r\n        } else if (unit === 'ex' || unit === 'em') {\r\n          return value * {'em':1, 'ex':0.5}[unit] * (isFontSize ? percent : this.get('font-size'));\r\n        } else {\r\n          return value * {'':1, 'px':1, 'pt':96/72, 'cm':96/2.54, 'mm':96/25.4, 'in':96, 'pc':96/6}[unit];\r\n        }\r\n      };\r\n      this.computeLength = function(value, percent, initial, isFontSize) {\r\n        let parser = new StringParser((value || '').trim()), temp1, temp2;\r\n        if (typeof (temp1 = parser.matchNumber()) === 'string' && typeof (temp2 = parser.matchLengthUnit()) === 'string' && !parser.matchAll()) {\r\n          return this.computeUnits(temp1, temp2, percent, isFontSize);\r\n        }\r\n        return initial;\r\n      };\r\n      this.computeLengthList = function(value, percent, strict) {\r\n        let parser = new StringParser((value || '').trim()), result = [], temp1, temp2;\r\n        while (typeof (temp1 = parser.matchNumber()) === 'string' && typeof (temp2 = parser.matchLengthUnit()) === 'string') {\r\n          result.push(this.computeUnits(temp1, temp2, percent));\r\n          parser.matchSeparator();\r\n        }\r\n        if (strict && parser.matchAll()) {return;}\r\n        return result;\r\n      };\r\n      this.getLength = function(key, percent, initial) {\r\n        return this.computeLength(this.attr(key), percent, initial);\r\n      };\r\n      this.getLengthList = function(key, percent) {\r\n        return this.computeLengthList(this.attr(key), percent);\r\n      };\r\n      this.getUrl = function(key) {\r\n        return this.resolveUrl(this.attr(key))\r\n      };\r\n      this.getNumberList = function(key) {\r\n        let parser = new StringParser((this.attr(key) || '').trim()), result = [], temp;\r\n        while (temp = parser.matchNumber()) {\r\n          result.push(Number(temp));\r\n          parser.matchSeparator();\r\n        }\r\n        result.error = parser.matchAll();\r\n        return result;\r\n      }\r\n      this.getViewbox = function(key, initial) {\r\n        let viewBox = this.getNumberList(key);\r\n        if (viewBox.length === 4 && viewBox[2] >= 0 && viewBox[3] >= 0) {return viewBox;}\r\n        return initial;\r\n      };\r\n      this.getPercent = function(key, initial) {\r\n        let value = this.attr(key);\r\n        let parser = new StringParser((value || '').trim()), temp1, temp2;\r\n        let number = parser.matchNumber();\r\n        if (!number) {return initial;}\r\n        if (parser.match('%')) {number *= 0.01;}\r\n        if (parser.matchAll()) {return initial;}\r\n        return Math.max(0, Math.min(1, number));\r\n      };\r\n      this.chooseValue = function(args) {\r\n        for (let i = 0; i < arguments.length; i++) {\r\n          if (arguments[i] != null && arguments[i] === arguments[i]) {return arguments[i];}\r\n        }\r\n        return arguments[arguments.length - 1];\r\n      };\r\n      this.get = function(key) {\r\n        if (styleCache[key] !== undefined) {return styleCache[key];}\r\n        let keyInfo = Properties[key] || {}, value, result;\r\n        for (let i = 0; i < 3; i++) {\r\n          switch (i) {\r\n            case 0:\r\n              if (key !== 'transform') { // the CSS transform behaves strangely\r\n                value = this.css[keyInfo.css || key];\r\n              }\r\n              break;\r\n            case 1:\r\n              value = this.style[key];\r\n              break;\r\n            case 2:\r\n              value = this.attr(key);\r\n              break;\r\n          }\r\n          if (value === 'inherit') {\r\n            result = (this.inherits ? this.inherits.get(key) : keyInfo.initial);\r\n            if (result != null) {return styleCache[key] = result;}\r\n          }\r\n          if (keyInfo.values != null) {\r\n            result = keyInfo.values[value];\r\n            if (result != null) {return styleCache[key] = result;}\r\n          }\r\n          if (value != null) {\r\n            let parsed;\r\n            switch (key) {\r\n              case 'font-size':\r\n                result = this.computeLength(value, this.inherits ? this.inherits.get(key) : keyInfo.initial, undefined, true);\r\n                break;\r\n              case 'baseline-shift':\r\n                result = this.computeLength(value, this.get('font-size'));\r\n                break;\r\n              case 'font-family':\r\n                result = value || undefined;\r\n                break;\r\n              case 'opacity': case 'stroke-opacity': case 'fill-opacity': case 'stop-opacity':\r\n                parsed = parseFloat(value);\r\n                if (!isNaN(parsed)) {\r\n                  result = Math.max(0, Math.min(1, parsed));\r\n                }\r\n                break;\r\n              case 'transform':\r\n                result = parseTranform(value);\r\n                break;\r\n              case 'stroke-dasharray':\r\n                if (value === 'none') {\r\n                  result = [];\r\n                } else if (parsed = this.computeLengthList(value, this.getViewport(), true)) {\r\n                  let sum = 0, error = false;\r\n                  for (let j = 0; j < parsed.length; j++) {\r\n                    if (parsed[j] < 0) {error = true;}\r\n                    sum += parsed[j];\r\n                  }\r\n                  if (!error) {\r\n                    if (parsed.length % 2 === 1) {\r\n                      parsed = parsed.concat(parsed);\r\n                    }\r\n                    result = (sum === 0 ? [] : parsed);\r\n                  }\r\n                }\r\n                break;\r\n              case 'color':\r\n                if (value === 'none' || value === 'transparent') {\r\n                  result = 'none';\r\n                } else {\r\n                  result = parseColor(value);\r\n                }\r\n                break;\r\n              case 'fill': case 'stroke':\r\n                if (value === 'none' || value === 'transparent') {\r\n                  result = 'none';\r\n                } else if (value === 'currentColor') {\r\n                  result = this.get('color');\r\n                } else if (parsed = parseColor(value)) {\r\n                  return parsed;\r\n                } else if (parsed = (value || '').split(' ')) {\r\n                  let object = this.resolveUrl(parsed[0]),\r\n                      fallbackColor = parseColor(parsed[1]);\r\n                  if (object == null) {\r\n                    result = fallbackColor;\r\n                  } else if (object.nodeName === 'linearGradient' || object.nodeName === 'radialGradient') {\r\n                    result = new SvgElemGradient(object, null, fallbackColor);\r\n                  } else if (object.nodeName === 'pattern') {\r\n                    result = new SvgElemPattern(object, null, fallbackColor);\r\n                  } else {\r\n                    result = fallbackColor;\r\n                  }\r\n                }\r\n                break;\r\n              case 'stop-color':\r\n                if (value === 'none' || value === 'transparent') {\r\n                  result = 'none';\r\n                } else if (value === 'currentColor') {\r\n                  result = this.get('color');\r\n                } else {\r\n                  result = parseColor(value);\r\n                }\r\n                break;\r\n              case 'marker-start': case 'marker-mid': case 'marker-end': case 'clip-path': case 'mask':\r\n                if (value === 'none') {\r\n                  result = 'none';\r\n                } else {\r\n                  result = this.resolveUrl(value);\r\n                }\r\n                break;\r\n              case 'stroke-width':\r\n                parsed = this.computeLength(value, this.getViewport());\r\n                if (parsed != null && parsed >= 0) {\r\n                  result = parsed;\r\n                }\r\n                break;\r\n              case 'stroke-miterlimit':\r\n                parsed = parseFloat(value);\r\n                if (parsed != null && parsed >= 1) {\r\n                  result = parsed;\r\n                }\r\n                break;\r\n              case 'word-spacing': case 'letter-spacing':\r\n                result = this.computeLength(value, this.getViewport());\r\n                break;\r\n              case 'stroke-dashoffset':\r\n                result = this.computeLength(value, this.getViewport());\r\n                if (result != null) {\r\n                  if (result < 0) { // fix for crbug.com/660850\r\n                    let dasharray = this.get('stroke-dasharray');\r\n                    for (let j = 0; j < dasharray.length; j++) {result += dasharray[j];}\r\n                  }\r\n                }\r\n                break;\r\n            }\r\n            if (result != null) {return styleCache[key] = result;}\r\n          }\r\n        }\r\n        return styleCache[key] = (keyInfo.inherit && this.inherits ? this.inherits.get(key) : keyInfo.initial);\r\n      };\r\n      this.getChildren = function() {\r\n        if (childrenCache != null) {return childrenCache;}\r\n        let children = [];\r\n        for (let i = 0; i < obj.childNodes.length; i++) {\r\n          let child = obj.childNodes[i];\r\n          if (!child.error && this.allowedChildren.indexOf(child.nodeName) !== -1) {\r\n            children.push(createSVGElement(child, this));\r\n          }\r\n        }\r\n        return childrenCache = children;\r\n      };\r\n      this.getParentVWidth = function() {\r\n        return (this.inherits ? this.inherits.getVWidth(): viewportWidth);\r\n      };\r\n      this.getParentVHeight = function() {\r\n        return (this.inherits ? this.inherits.getVHeight() : viewportHeight);\r\n      };\r\n      this.getParentViewport = function() {\r\n        return Math.sqrt(0.5 * this.getParentVWidth() * this.getParentVWidth() + 0.5 * this.getParentVHeight() * this.getParentVHeight());\r\n      };\r\n      this.getVWidth = function() {\r\n        return this.getParentVWidth();\r\n      };\r\n      this.getVHeight = function() {\r\n        return this.getParentVHeight();\r\n      };\r\n      this.getViewport = function() {\r\n        return Math.sqrt(0.5 * this.getVWidth() * this.getVWidth() + 0.5 * this.getVHeight() * this.getVHeight());\r\n      };\r\n      this.getBoundingBox = function() {\r\n        let shape = this.getBoundingShape();\r\n        return shape.getBoundingBox();\r\n      };\r\n    };\r\n\r\n    var SvgElemStylable = function(obj, inherits) {\r\n      SvgElem.call(this, obj, inherits);\r\n      this.transform = function() {\r\n        doc.transform.apply(doc, this.getTransformation());\r\n      };\r\n      this.clip = function() {\r\n        if (this.get('clip-path') !== 'none') {\r\n          let clipPath = new SvgElemClipPath(this.get('clip-path'), null);\r\n          clipPath.useMask(this.getBoundingBox());\r\n          return true;\r\n        }\r\n      };\r\n      this.mask = function() {\r\n        if (this.get('mask') !== 'none') {\r\n          let mask = new SvgElemMask(this.get('mask'), null);\r\n          mask.useMask(this.getBoundingBox());\r\n          return true;\r\n        }\r\n      };\r\n      this.getFill = function(isClip, isMask) {\r\n        let opacity = this.get('opacity'),\r\n            fill = this.get('fill'),\r\n            fillOpacity = this.get('fill-opacity');\r\n        if (isClip) {return DefaultColors.white;}\r\n        if (fill !== 'none' && opacity && fillOpacity) {\r\n          if (fill instanceof SvgElemGradient || fill instanceof SvgElemPattern) {\r\n            return fill.getPaint(this.getBoundingBox(), fillOpacity * opacity, isClip, isMask);\r\n          }\r\n          return opacityToColor(fill, fillOpacity * opacity, isMask);\r\n        }\r\n      };\r\n      this.getStroke = function(isClip, isMask) {\r\n        let opacity = this.get('opacity'),\r\n            stroke = this.get('stroke'),\r\n            strokeOpacity = this.get('stroke-opacity');\r\n        if (isClip || isEqual(this.get('stroke-width'), 0)) {return;}\r\n        if (stroke !== 'none' && opacity && strokeOpacity) {\r\n          if (stroke instanceof SvgElemGradient || stroke instanceof SvgElemPattern) {\r\n            return stroke.getPaint(this.getBoundingBox(), strokeOpacity * opacity, isClip, isMask);\r\n          }\r\n          return opacityToColor(stroke, strokeOpacity * opacity, isMask);\r\n        }\r\n      };\r\n    };\r\n\r\n    var SvgElemHasChildren = function(obj, inherits) {\r\n      SvgElemStylable.call(this, obj, inherits);\r\n      this.allowedChildren = ['use', 'g', 'a', 'svg', 'image', 'rect', 'circle', 'ellipse', 'line', 'polyline', 'polygon', 'path', 'text'];\r\n      this.getBoundingShape = function() {\r\n        let shape = new SvgShape(),\r\n            children = this.getChildren();\r\n        for (let i = 0; i < children.length; i++) {\r\n          if (children[i].get('display') !== 'none') {\r\n            if (typeof children[i].getBoundingShape === 'function') {\r\n              let childShape = children[i].getBoundingShape().clone();\r\n              if (typeof children[i].getTransformation === 'function') {\r\n                childShape.transform(children[i].getTransformation());\r\n              }\r\n              shape.mergeShape(childShape);\r\n            }\r\n          }\r\n        }\r\n        return shape;\r\n      };\r\n      this.drawChildren = function(isClip, isMask) {\r\n        let children = this.getChildren();\r\n        for (let i = 0; i < children.length; i++) {\r\n          if (children[i].get('display') !== 'none') {\r\n            if (typeof children[i].drawInDocument === 'function') {\r\n              children[i].drawInDocument(isClip, isMask);\r\n            }\r\n          }\r\n        }\r\n      };\r\n    };\r\n\r\n    var SvgElemContainer = function(obj, inherits) {\r\n      SvgElemHasChildren.call(this, obj, inherits);\r\n      this.drawContent = function(isClip, isMask) {\r\n        this.transform();\r\n        let clipped = this.clip(),\r\n            masked = this.mask(),\r\n            group;\r\n        if ((this.get('opacity') < 1 || clipped || masked) && !isClip) {\r\n          group = docBeginGroup(getPageBBox());\r\n        }\r\n        this.drawChildren(isClip, isMask);\r\n        if (group) {\r\n          docEndGroup(group);\r\n          doc.fillOpacity(this.get('opacity'));\r\n          docInsertGroup(group);\r\n        }\r\n      };\r\n    };\r\n\r\n    var SvgElemUse = function(obj, inherits) {\r\n      SvgElemContainer.call(this, obj, inherits);\r\n      let x = this.getLength('x', this.getVWidth(), 0),\r\n          y = this.getLength('y', this.getVHeight(), 0),\r\n          child = this.getUrl('href') || this.getUrl('xlink:href');\r\n      if (child) {child = createSVGElement(child, this);}\r\n      this.getChildren  = function() {\r\n        return child ? [child] : [];\r\n      };\r\n      this.drawInDocument = function(isClip, isMask) {\r\n        doc.save();\r\n        this.drawContent(isClip, isMask);\r\n        doc.restore();\r\n      };\r\n      this.getTransformation = function() {\r\n        return multiplyMatrix(this.get('transform'), [1, 0, 0, 1, x, y]);\r\n      };\r\n    };\r\n\r\n    var SvgElemSymbol = function(obj, inherits) {\r\n      SvgElemContainer.call(this, obj, inherits);\r\n      let width = this.getLength('width', this.getParentVWidth(), this.getParentVWidth()),\r\n          height = this.getLength('height', this.getParentVHeight(), this.getParentVHeight());\r\n      if (inherits instanceof SvgElemUse) {\r\n        width = inherits.getLength('width', inherits.getParentVWidth(), width);\r\n        height = inherits.getLength('height', inherits.getParentVHeight(), height);\r\n      }\r\n      let aspectRatio = (this.attr('preserveAspectRatio') || '').trim(),\r\n          viewBox = this.getViewbox('viewBox', [0, 0, width, height]);\r\n      this.getVWidth = function() {\r\n        return viewBox[2];\r\n      };\r\n      this.getVHeight = function() {\r\n        return viewBox[3];\r\n      };\r\n      this.drawInDocument = function(isClip, isMask) {\r\n        doc.save();\r\n        this.drawContent(isClip, isMask);\r\n        doc.restore();\r\n      };\r\n      this.getTransformation = function() {\r\n        return multiplyMatrix(parseAspectRatio(aspectRatio, width, height, viewBox[2], viewBox[3]), [1, 0, 0, 1, -viewBox[0], -viewBox[1]]);\r\n      };\r\n    };\r\n\r\n    var SvgElemGroup = function(obj, inherits) {\r\n      SvgElemContainer.call(this, obj, inherits);\r\n      this.drawInDocument = function(isClip, isMask) {\r\n        doc.save();\r\n        if (this.link && !isClip && !isMask) {this.addLink();}\r\n        this.drawContent(isClip, isMask);\r\n        doc.restore();\r\n      };\r\n      this.getTransformation = function() {\r\n        return this.get('transform');\r\n      };\r\n    };\r\n\r\n    var SvgElemLink = function(obj, inherits) {\r\n      if (inherits && inherits.isText) {\r\n        SvgElemTspan.call(this, obj, inherits);\r\n        this.allowedChildren = ['textPath', 'tspan', '#text', '#cdata-section', 'a'];\r\n      } else {\r\n        SvgElemGroup.call(this, obj, inherits);\r\n      }\r\n      this.link = this.attr('href') || this.attr('xlink:href');\r\n      this.addLink = function() {\r\n        if (this.link.match(/^(?:[a-z][a-z0-9+.-]*:|\\/\\/)?/i) && this.getChildren().length) {\r\n          let bbox = this.getBoundingShape().transform(getGlobalMatrix()).getBoundingBox();\r\n          docInsertLink(bbox[0], bbox[1], bbox[2], bbox[3], this.link);\r\n        }\r\n      }\r\n    };\r\n\r\n    var SvgElemSvg = function(obj, inherits) {\r\n      SvgElemContainer.call(this, obj, inherits);\r\n      let width = this.getLength('width', this.getParentVWidth(), this.getParentVWidth()),\r\n          height = this.getLength('height', this.getParentVHeight(), this.getParentVHeight()),\r\n          x = this.getLength('x', this.getParentVWidth(), 0),\r\n          y = this.getLength('y', this.getParentVHeight(), 0);\r\n      if (inherits instanceof SvgElemUse) {\r\n        width = inherits.getLength('width', inherits.getParentVWidth(), width);\r\n        height = inherits.getLength('height', inherits.getParentVHeight(), height);\r\n      }\r\n      let aspectRatio = this.attr('preserveAspectRatio'),\r\n          viewBox = this.getViewbox('viewBox', [0, 0, width, height]);\r\n      if (this.isOuterElement && preserveAspectRatio) {\r\n        x = y = 0;\r\n        width = viewportWidth;\r\n        height = viewportHeight;\r\n        aspectRatio = preserveAspectRatio;\r\n      }\r\n      this.getVWidth = function() {\r\n        return viewBox[2];\r\n      };\r\n      this.getVHeight = function() {\r\n        return viewBox[3];\r\n      };\r\n      this.drawInDocument = function(isClip, isMask) {\r\n        doc.save();\r\n        if (this.get('overflow') === 'hidden') {\r\n          new SvgShape().M(x, y).L(x + width, y).L(x + width, y + height).L(x, y + height).Z()\r\n                        .transform(this.get('transform'))\r\n                        .insertInDocument();\r\n          doc.clip();\r\n        }\r\n        this.drawContent(isClip, isMask);\r\n        doc.restore();\r\n      };\r\n      this.getTransformation = function() {\r\n        return multiplyMatrix(\r\n          this.get('transform'),\r\n          [1, 0, 0, 1, x, y],\r\n          parseAspectRatio(aspectRatio, width, height, viewBox[2], viewBox[3]),\r\n          [1, 0, 0, 1, -viewBox[0], -viewBox[1]]\r\n        );\r\n      };\r\n    };\r\n\r\n    var SVGElemImage = function(obj, inherits) {\r\n      SvgElemStylable.call(this, obj, inherits);\r\n      let link = imageCallback(this.attr('href') || this.attr('xlink:href') || ''),\r\n          x = this.getLength('x', this.getVWidth(), 0),\r\n          y = this.getLength('y', this.getVHeight(), 0),\r\n          width = this.getLength('width', this.getVWidth(), 'auto'),\r\n          height = this.getLength('height', this.getVHeight(), 'auto'),\r\n          image;\r\n      try {\r\n        image = doc.openImage(link);\r\n      } catch(e) {\r\n        warningCallback('SVGElemImage: failed to open image \"' + link + '\" in PDFKit');\r\n      }\r\n      if (image) {\r\n        if (width === 'auto' && height !== 'auto') {\r\n          width = height * image.width / image.height;\r\n        } else if (height === 'auto' && width !== 'auto') {\r\n          height = width * image.height / image.width;\r\n        } else if (width === 'auto' && height === 'auto') {\r\n          width = image.width;\r\n          height = image.height;\r\n        }\r\n      }\r\n      if (width === 'auto' || width < 0) {width = 0;}\r\n      if (height === 'auto' || height < 0) {height = 0;}\r\n      this.getTransformation = function() {\r\n        return this.get('transform');\r\n      };\r\n      this.getBoundingShape = function() {\r\n        return new SvgShape().M(x, y).L(x + width, y).M(x + width, y + height).L(x, y + height);\r\n      };\r\n      this.drawInDocument = function(isClip, isMask) {\r\n        if (this.get('visibility') === 'hidden' || !image) {return;}\r\n        doc.save();\r\n        this.transform();\r\n        if (this.get('overflow') === 'hidden') {\r\n          doc.rect(x, y, width, height).clip();\r\n        }\r\n        this.clip();\r\n        this.mask();\r\n        doc.translate(x, y);\r\n        doc.transform.apply(doc, parseAspectRatio(this.attr('preserveAspectRatio'), width, height, image ? image.width : width, image ? image.height : height));\r\n        if (!isClip) {\r\n          doc.fillOpacity(this.get('opacity'));\r\n          doc.image(image, 0, 0);\r\n        } else {\r\n          doc.rect(0, 0, image.width, image.height);\r\n          docFillColor(DefaultColors.white).fill();\r\n        }\r\n        doc.restore();\r\n      };\r\n    };\r\n\r\n    var SvgElemPattern = function(obj, inherits, fallback) {\r\n      SvgElemHasChildren.call(this, obj, inherits);\r\n      this.ref = (function() {\r\n        let ref = this.getUrl('href') || this.getUrl('xlink:href');\r\n        if (ref && ref.nodeName === obj.nodeName) {\r\n          return new SvgElemPattern(ref, inherits, fallback);\r\n        }\r\n      }).call(this);\r\n      let _attr = this.attr;\r\n      this.attr = function(key) {\r\n        let attr = _attr.call(this, key);\r\n        if (attr != null || key === 'href' || key === 'xlink:href') {return attr;}\r\n        return this.ref ? this.ref.attr(key) : null;\r\n      };\r\n      let _getChildren = this.getChildren;\r\n      this.getChildren = function() {\r\n        let children = _getChildren.call(this);\r\n        if (children.length > 0) {return children;}\r\n        return this.ref ? this.ref.getChildren() : [];\r\n      };\r\n      this.getPaint = function(bBox, gOpacity, isClip, isMask) {\r\n        let bBoxUnitsPattern = (this.attr('patternUnits') !== 'userSpaceOnUse'),\r\n            bBoxUnitsContent = (this.attr('patternContentUnits') === 'objectBoundingBox'),\r\n            x = this.getLength('x', (bBoxUnitsPattern ? 1 : this.getParentVWidth()), 0),\r\n            y = this.getLength('y', (bBoxUnitsPattern ? 1 : this.getParentVHeight()), 0),\r\n            width = this.getLength('width', (bBoxUnitsPattern ? 1 : this.getParentVWidth()), 0),\r\n            height = this.getLength('height', (bBoxUnitsPattern ? 1 : this.getParentVHeight()), 0);\r\n        if (bBoxUnitsContent && !bBoxUnitsPattern) { // Use the same units for pattern & pattern content\r\n          x = (x - bBox[0]) / (bBox[2] - bBox[0]) || 0;\r\n          y = (y - bBox[1]) / (bBox[3] - bBox[1]) || 0;\r\n          width = width / (bBox[2] - bBox[0]) || 0;\r\n          height = height / (bBox[3] - bBox[1]) || 0;\r\n        } else if (!bBoxUnitsContent && bBoxUnitsPattern) {\r\n          x = bBox[0] + x * (bBox[2] - bBox[0]);\r\n          y = bBox[1] + y * (bBox[3] - bBox[1]);\r\n          width = width * (bBox[2] - bBox[0]);\r\n          height = height * (bBox[3] - bBox[1]);\r\n        }\r\n        let viewBox = this.getViewbox('viewBox', [0, 0, width, height]),\r\n            aspectRatio = (this.attr('preserveAspectRatio') || '').trim(),\r\n            aspectRatioMatrix = multiplyMatrix(\r\n              parseAspectRatio(aspectRatio, width, height, viewBox[2], viewBox[3], 0),\r\n              [1, 0, 0, 1, -viewBox[0], -viewBox[1]]\r\n            ),\r\n            matrix = parseTranform(this.attr('patternTransform'));\r\n        if (bBoxUnitsContent) {\r\n          matrix = multiplyMatrix([bBox[2] - bBox[0], 0, 0, bBox[3] - bBox[1], bBox[0], bBox[1]], matrix);\r\n        }\r\n        matrix = multiplyMatrix(matrix, [1, 0, 0, 1, x, y]);\r\n        if ((matrix = validateMatrix(matrix)) && (aspectRatioMatrix = validateMatrix(aspectRatioMatrix)) && (width = validateNumber(width)) && (height = validateNumber(height))) {\r\n          let group = docBeginGroup([0, 0, width, height]);\r\n          doc.transform.apply(doc, aspectRatioMatrix);\r\n          this.drawChildren(isClip, isMask);\r\n          docEndGroup(group);\r\n          return [docCreatePattern(group, width, height, matrix), gOpacity];\r\n        } else {\r\n          return fallback ? [fallback[0], fallback[1] * gOpacity] : undefined;\r\n        }\r\n      };\r\n      this.getVWidth = function() {\r\n        let bBoxUnitsPattern = (this.attr('patternUnits') !== 'userSpaceOnUse'),\r\n            width = this.getLength('width', (bBoxUnitsPattern ? 1 : this.getParentVWidth()), 0);\r\n        return this.getViewbox('viewBox', [0, 0, width, 0])[2];\r\n      };\r\n      this.getVHeight = function() {\r\n        let bBoxUnitsPattern = (this.attr('patternUnits') !== 'userSpaceOnUse'),\r\n            height = this.getLength('height', (bBoxUnitsPattern ? 1 : this.getParentVHeight()), 0);\r\n        return this.getViewbox('viewBox', [0, 0, 0, height])[3];\r\n      };\r\n    };\r\n\r\n    var SvgElemGradient = function(obj, inherits, fallback) {\r\n      SvgElem.call(this, obj, inherits);\r\n      this.allowedChildren = ['stop'];\r\n      this.ref = (function() {\r\n        let ref = this.getUrl('href') || this.getUrl('xlink:href');\r\n        if (ref && ref.nodeName === obj.nodeName) {\r\n          return new SvgElemGradient(ref, inherits, fallback);\r\n        }\r\n      }).call(this);\r\n      let _attr = this.attr;\r\n      this.attr = function(key) {\r\n        let attr = _attr.call(this, key);\r\n        if (attr != null || key === 'href' || key === 'xlink:href') {return attr;}\r\n        return this.ref ? this.ref.attr(key) : null;\r\n      };\r\n      let _getChildren = this.getChildren;\r\n      this.getChildren = function() {\r\n        let children = _getChildren.call(this);\r\n        if (children.length > 0) {return children;}\r\n        return this.ref ? this.ref.getChildren() : [];\r\n      };\r\n      this.getPaint = function(bBox, gOpacity, isClip, isMask) {\r\n        let children = this.getChildren();\r\n        if (children.length === 0) {return;}\r\n        if (children.length === 1) {\r\n          let child = children[0],\r\n              stopColor = child.get('stop-color');\r\n          if (stopColor === 'none') {return;}\r\n          return opacityToColor(stopColor, child.get('stop-opacity') * gOpacity, isMask);\r\n        }\r\n        let bBoxUnits = (this.attr('gradientUnits') !== 'userSpaceOnUse'),\r\n            matrix = parseTranform(this.attr('gradientTransform')),\r\n            spread = this.attr('spreadMethod'),\r\n            grad,\r\n            x1, x2, y1, y2, r2,\r\n            nAfter = 0,\r\n            nBefore = 0,\r\n            nTotal = 1;\r\n        if (bBoxUnits) {\r\n          matrix = multiplyMatrix([bBox[2] - bBox[0], 0, 0, bBox[3] - bBox[1], bBox[0], bBox[1]], matrix);\r\n        }\r\n        if (matrix = validateMatrix(matrix)) {\r\n          if (this.name === 'linearGradient') {\r\n            x1 = this.getLength('x1', (bBoxUnits ? 1 : this.getVWidth()), 0);\r\n            x2 = this.getLength('x2', (bBoxUnits ? 1 : this.getVWidth()), (bBoxUnits ? 1 : this.getVWidth()));\r\n            y1 = this.getLength('y1', (bBoxUnits ? 1 : this.getVHeight()), 0);\r\n            y2 = this.getLength('y2', (bBoxUnits ? 1 : this.getVHeight()), 0);\r\n          } else {\r\n            x2 = this.getLength('cx', (bBoxUnits ? 1 : this.getVWidth()), (bBoxUnits ? 0.5 : 0.5 * this.getVWidth()));\r\n            y2 = this.getLength('cy', (bBoxUnits ? 1 : this.getVHeight()), (bBoxUnits ? 0.5 : 0.5 * this.getVHeight()));\r\n            r2 = this.getLength('r', (bBoxUnits ? 1 : this.getViewport()), (bBoxUnits ? 0.5 : 0.5 * this.getViewport()));\r\n            x1 = this.getLength('fx', (bBoxUnits ? 1 : this.getVWidth()), x2);\r\n            y1 = this.getLength('fy', (bBoxUnits ? 1 : this.getVHeight()), y2);\r\n            if (r2 < 0) {\r\n              warningCallback('SvgElemGradient: negative r value');\r\n            }\r\n            let d = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2)),\r\n                multiplier = 1;\r\n            if (d > r2) { // according to specification\r\n              multiplier = r2 / d;\r\n              x1 = x2 + (x1 - x2) * multiplier;\r\n              y1 = y2 + (y1 - y2) * multiplier;\r\n            }\r\n            r2 = Math.max(r2, d * multiplier * (1 + 1e-6)); // fix for edge-case gradients see issue #84\r\n          }\r\n          if (spread === 'reflect' || spread === 'repeat') {\r\n            let inv = inverseMatrix(matrix),\r\n                corner1 = transformPoint([bBox[0], bBox[1]], inv),\r\n                corner2 = transformPoint([bBox[2], bBox[1]], inv),\r\n                corner3 = transformPoint([bBox[2], bBox[3]], inv),\r\n                corner4 = transformPoint([bBox[0], bBox[3]], inv);\r\n            if (this.name === 'linearGradient') { // See file 'gradient-repeat-maths.png'\r\n              nAfter  = Math.max((corner1[0] - x2) * (x2 - x1) + (corner1[1] - y2) * (y2 - y1),\r\n                                 (corner2[0] - x2) * (x2 - x1) + (corner2[1] - y2) * (y2 - y1),\r\n                                 (corner3[0] - x2) * (x2 - x1) + (corner3[1] - y2) * (y2 - y1),\r\n                                 (corner4[0] - x2) * (x2 - x1) + (corner4[1] - y2) * (y2 - y1))\r\n                                / (Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2));\r\n              nBefore = Math.max((corner1[0] - x1) * (x1 - x2) + (corner1[1] - y1) * (y1 - y2),\r\n                                 (corner2[0] - x1) * (x1 - x2) + (corner2[1] - y1) * (y1 - y2),\r\n                                 (corner3[0] - x1) * (x1 - x2) + (corner3[1] - y1) * (y1 - y2),\r\n                                 (corner4[0] - x1) * (x1 - x2) + (corner4[1] - y1) * (y1 - y2))\r\n                                / (Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2));\r\n            } else {\r\n              nAfter  = Math.sqrt(Math.max(Math.pow(corner1[0] - x2, 2) + Math.pow(corner1[1] - y2, 2),\r\n                                           Math.pow(corner2[0] - x2, 2) + Math.pow(corner2[1] - y2, 2),\r\n                                           Math.pow(corner3[0] - x2, 2) + Math.pow(corner3[1] - y2, 2),\r\n                                           Math.pow(corner4[0] - x2, 2) + Math.pow(corner4[1] - y2, 2))) / r2 - 1;\r\n            }\r\n            nAfter = Math.ceil(nAfter + 0.5); // Add a little more because the stroke can extend outside of the bounding box\r\n            nBefore = Math.ceil(nBefore + 0.5);\r\n            nTotal = nBefore + 1 + nAfter; // How many times the gradient needs to be repeated to fill the object bounding box\r\n          }\r\n          if (this.name === 'linearGradient') {\r\n            grad = doc.linearGradient(x1 - nBefore * (x2 - x1), y1 - nBefore * (y2 - y1), x2 + nAfter * (x2 - x1), y2 + nAfter * (y2 - y1));\r\n          } else {\r\n            grad = doc.radialGradient(x1, y1, 0, x2, y2, r2 + nAfter * r2);\r\n          }\r\n          for (let n = 0; n < nTotal; n++) {\r\n            let offset = 0,\r\n                inOrder = (spread !== 'reflect' || (n - nBefore) % 2 === 0);\r\n            for (let i = 0; i < children.length; i++) {\r\n              let child = children[inOrder ? i : children.length - 1 - i],\r\n                  stopColor = child.get('stop-color');\r\n              if (stopColor === 'none') {stopColor = DefaultColors.transparent;}\r\n              stopColor = opacityToColor(stopColor, child.get('stop-opacity') * gOpacity, isMask);\r\n              offset = Math.max(offset, inOrder ? child.getPercent('offset', 0) : 1 - child.getPercent('offset', 0));\r\n              if (i === 0 && stopColor[0].length === 4) {grad._colorSpace = 'DeviceCMYK';} // Fix until PR #763 is merged into PDFKit\r\n              if (i === 0 && offset > 0) {\r\n                grad.stop((n + 0) / nTotal, stopColor[0], stopColor[1]);\r\n              }\r\n              grad.stop((n + offset) / (nAfter + nBefore + 1), stopColor[0], stopColor[1]);\r\n              if (i === children.length - 1 && offset < 1) {\r\n                grad.stop((n + 1) / nTotal, stopColor[0], stopColor[1]);\r\n              }\r\n            }\r\n          }\r\n          grad.setTransform.apply(grad, matrix);\r\n          return [grad, 1];\r\n        } else {\r\n          return fallback ? [fallback[0], fallback[1] * gOpacity] : undefined;\r\n        }\r\n      }\r\n    };\r\n\r\n    var SvgElemBasicShape = function(obj, inherits) {\r\n      SvgElemStylable.call(this, obj, inherits);\r\n      this.dashScale = 1;\r\n      this.getBoundingShape = function() {\r\n        return this.shape;\r\n      };\r\n      this.getTransformation = function() {\r\n        return this.get('transform');\r\n      };\r\n      this.drawInDocument = function(isClip, isMask) {\r\n        if (this.get('visibility') === 'hidden' || !this.shape) {return;}\r\n        doc.save();\r\n        this.transform();\r\n        this.clip();\r\n        if (!isClip) {\r\n          let masked = this.mask(),\r\n              group;\r\n          if (masked) {\r\n            group = docBeginGroup(getPageBBox());\r\n          }\r\n          let subPaths = this.shape.getSubPaths(),\r\n              fill = this.getFill(isClip, isMask),\r\n              stroke = this.getStroke(isClip, isMask),\r\n              lineWidth = this.get('stroke-width'),\r\n              lineCap = this.get('stroke-linecap');\r\n          if (fill || stroke) {\r\n            if (fill) {\r\n              docFillColor(fill);\r\n            }\r\n            if (stroke) {\r\n              for (let j = 0; j < subPaths.length; j++) {\r\n                if (isEqual(subPaths[j].totalLength, 0)) {\r\n                  if ((lineCap === 'square' || lineCap === 'round') && lineWidth > 0) {\r\n                    if (subPaths[j].startPoint && subPaths[j].startPoint.length > 1) {\r\n                      let x = subPaths[j].startPoint[0],\r\n                          y = subPaths[j].startPoint[1];\r\n                      docFillColor(stroke);\r\n                      if (lineCap === 'square') {\r\n                        doc.rect(x - 0.5 * lineWidth, y - 0.5 * lineWidth, lineWidth, lineWidth);\r\n                      } else if (lineCap === 'round') {\r\n                        doc.circle(x, y, 0.5 * lineWidth);\r\n                      }\r\n                      doc.fill();\r\n                    }\r\n                  }\r\n                }\r\n              }\r\n              let dashArray = this.get('stroke-dasharray'),\r\n                  dashOffset = this.get('stroke-dashoffset');\r\n              if (isNotEqual(this.dashScale, 1)) {\r\n                for (let j = 0; j < dashArray.length; j++) {\r\n                  dashArray[j] *= this.dashScale;\r\n                }\r\n                dashOffset *= this.dashScale;\r\n              }\r\n              docStrokeColor(stroke);\r\n              doc.lineWidth(lineWidth)\r\n                 .miterLimit(this.get('stroke-miterlimit'))\r\n                 .lineJoin(this.get('stroke-linejoin'))\r\n                 .lineCap(lineCap)\r\n                 .dash(dashArray, {phase: dashOffset});\r\n            }\r\n            for (let j = 0; j < subPaths.length; j++) {\r\n              if (subPaths[j].totalLength > 0) {\r\n                subPaths[j].insertInDocument();\r\n              }\r\n            }\r\n            if (fill && stroke) {\r\n              doc.fillAndStroke(this.get('fill-rule'));\r\n            } else if (fill) {\r\n              doc.fill(this.get('fill-rule'));\r\n            } else if (stroke) {\r\n              doc.stroke();\r\n            }\r\n          }\r\n          let markerStart = this.get('marker-start'),\r\n              markerMid = this.get('marker-mid'),\r\n              markerEnd = this.get('marker-end');\r\n          if (markerStart !== 'none' || markerMid !== 'none' || markerEnd !== 'none') {\r\n            let markersPos = this.shape.getMarkers();\r\n            if (markerStart !== 'none') {\r\n              let marker = new SvgElemMarker(markerStart, null);\r\n              marker.drawMarker(false, isMask, markersPos[0], lineWidth);\r\n            }\r\n            if (markerMid !== 'none') {\r\n              for (let i = 1; i < markersPos.length - 1; i++) {\r\n                let marker = new SvgElemMarker(markerMid, null);\r\n                marker.drawMarker(false, isMask, markersPos[i], lineWidth);\r\n              }\r\n            }\r\n            if (markerEnd !== 'none') {\r\n              let marker = new SvgElemMarker(markerEnd, null);\r\n              marker.drawMarker(false, isMask, markersPos[markersPos.length - 1], lineWidth);\r\n            }\r\n          }\r\n          if (group) {\r\n            docEndGroup(group);\r\n            docInsertGroup(group);\r\n          }\r\n        } else {\r\n          this.shape.insertInDocument();\r\n          docFillColor(DefaultColors.white);\r\n          doc.fill(this.get('clip-rule'));\r\n        }\r\n        doc.restore();\r\n      };\r\n    };\r\n\r\n    var SvgElemRect = function(obj, inherits) {\r\n      SvgElemBasicShape.call(this, obj, inherits);\r\n      let x = this.getLength('x', this.getVWidth(), 0),\r\n          y = this.getLength('y', this.getVHeight(), 0),\r\n          w = this.getLength('width', this.getVWidth(), 0),\r\n          h = this.getLength('height', this.getVHeight(), 0),\r\n          rx = this.getLength('rx', this.getVWidth()),\r\n          ry = this.getLength('ry', this.getVHeight());\r\n      if (rx === undefined && ry === undefined) {rx = ry = 0;}\r\n      else if (rx === undefined && ry !== undefined) {rx = ry;}\r\n      else if (rx !== undefined && ry === undefined) {ry = rx;}\r\n      if (w > 0 && h > 0) {\r\n        if (rx && ry) {\r\n          rx = Math.min(rx, 0.5 * w);\r\n          ry = Math.min(ry, 0.5 * h);\r\n          this.shape = new SvgShape().M(x + rx, y).L(x + w - rx, y).A(rx, ry, 0, 0, 1, x + w, y + ry)\r\n                            .L(x + w, y + h - ry).A(rx, ry, 0, 0, 1, x + w - rx, y + h).L(x + rx, y + h)\r\n                            .A(rx, ry, 0, 0, 1, x, y + h - ry).L(x, y + ry).A(rx, ry, 0, 0, 1, x + rx, y).Z();\r\n        } else {\r\n          this.shape = new SvgShape().M(x, y).L(x + w, y).L(x + w, y + h).L(x, y + h).Z();\r\n        }\r\n      } else {\r\n        this.shape = new SvgShape();\r\n      }\r\n    };\r\n\r\n    var SvgElemCircle = function(obj, inherits) {\r\n      SvgElemBasicShape.call(this, obj, inherits);\r\n      let cx = this.getLength('cx', this.getVWidth(), 0),\r\n          cy = this.getLength('cy', this.getVHeight(), 0),\r\n          r = this.getLength('r', this.getViewport(), 0);\r\n      if (r > 0) {\r\n        this.shape = new SvgShape().M(cx + r, cy).A(r, r, 0, 0, 1, cx - r, cy).A(r, r, 0, 0, 1, cx + r, cy).Z();\r\n      } else {\r\n        this.shape = new SvgShape();\r\n      }\r\n    };\r\n\r\n    var SvgElemEllipse = function(obj, inherits) {\r\n      SvgElemBasicShape.call(this, obj, inherits);\r\n      let cx = this.getLength('cx', this.getVWidth(), 0),\r\n          cy = this.getLength('cy', this.getVHeight(), 0),\r\n          rx = this.getLength('rx', this.getVWidth(), 0),\r\n          ry = this.getLength('ry', this.getVHeight(), 0);\r\n      if (rx > 0 && ry > 0) {\r\n        this.shape = new SvgShape().M(cx + rx, cy).A(rx, ry, 0, 0, 1, cx - rx, cy).A(rx, ry, 0, 0, 1, cx + rx, cy).Z();\r\n      } else {\r\n        this.shape = new SvgShape();\r\n      }\r\n    };\r\n\r\n    var SvgElemLine = function(obj, inherits) {\r\n      SvgElemBasicShape.call(this, obj, inherits);\r\n      let x1 = this.getLength('x1', this.getVWidth(), 0),\r\n          y1 = this.getLength('y1', this.getVHeight(), 0),\r\n          x2 = this.getLength('x2', this.getVWidth(), 0),\r\n          y2 = this.getLength('y2', this.getVHeight(), 0);\r\n      this.shape = new SvgShape().M(x1, y1).L(x2, y2);\r\n    };\r\n\r\n    var SvgElemPolyline = function(obj, inherits) {\r\n      SvgElemBasicShape.call(this, obj, inherits);\r\n      let points = this.getNumberList('points');\r\n      this.shape = new SvgShape();\r\n      for (let i = 0; i < points.length - 1; i += 2) {\r\n        if (i === 0) {\r\n          this.shape.M(points[i], points[i+1]);\r\n        } else {\r\n          this.shape.L(points[i], points[i+1]);\r\n        }\r\n      }\r\n      if (points.error) {warningCallback('SvgElemPolygon: unexpected string ' + points.error);}\r\n      if (points.length % 2 === 1) {warningCallback('SvgElemPolyline: uneven number of coordinates');}\r\n    };\r\n\r\n    var SvgElemPolygon = function(obj, inherits) {\r\n      SvgElemBasicShape.call(this, obj, inherits);\r\n      let points = this.getNumberList('points');\r\n      this.shape = new SvgShape();\r\n      for (let i = 0; i < points.length - 1; i += 2) {\r\n        if (i === 0) {\r\n          this.shape.M(points[i], points[i+1]);\r\n        } else {\r\n          this.shape.L(points[i], points[i+1]);\r\n        }\r\n      }\r\n      this.shape.Z();\r\n      if (points.error) {warningCallback('SvgElemPolygon: unexpected string ' + points.error);}\r\n      if (points.length % 2 === 1) {warningCallback('SvgElemPolygon: uneven number of coordinates');}\r\n    };\r\n\r\n    var SvgElemPath = function(obj, inherits) {\r\n      SvgElemBasicShape.call(this, obj, inherits);\r\n      this.shape = new SvgShape().path(this.attr('d'));\r\n      let pathLength = this.getLength('pathLength', this.getViewport());\r\n      this.pathLength = pathLength > 0 ? pathLength : undefined;\r\n      this.dashScale = (this.pathLength !== undefined ? this.shape.totalLength / this.pathLength : 1);\r\n    };\r\n\r\n    var SvgElemMarker = function(obj, inherits) {\r\n      SvgElemHasChildren.call(this, obj, inherits);\r\n      let width = this.getLength('markerWidth', this.getParentVWidth(), 3),\r\n          height = this.getLength('markerHeight', this.getParentVHeight(), 3),\r\n          viewBox = this.getViewbox('viewBox', [0, 0, width, height]);\r\n      this.getVWidth = function() {\r\n        return viewBox[2];\r\n      };\r\n      this.getVHeight = function() {\r\n        return viewBox[3];\r\n      };\r\n      this.drawMarker = function(isClip, isMask, posArray, strokeWidth) {\r\n        doc.save();\r\n        let orient = this.attr('orient'),\r\n            units = this.attr('markerUnits'),\r\n            rotate = (orient === 'auto' ? posArray[2] : (parseFloat(orient) || 0) * Math.PI / 180),\r\n            scale = (units === 'userSpaceOnUse' ? 1 : strokeWidth);\r\n        doc.transform(Math.cos(rotate) * scale, Math.sin(rotate) * scale, -Math.sin(rotate) * scale, Math.cos(rotate) * scale, posArray[0], posArray[1]);\r\n        let refX = this.getLength('refX', this.getVWidth(), 0),\r\n            refY = this.getLength('refY', this.getVHeight(), 0),\r\n            aspectRatioMatrix = parseAspectRatio(this.attr('preserveAspectRatio'), width, height, viewBox[2], viewBox[3], 0.5);\r\n        if (this.get('overflow') === 'hidden') {\r\n          doc.rect(aspectRatioMatrix[0] * (viewBox[0] + viewBox[2] / 2 - refX) - width / 2, aspectRatioMatrix[3] * (viewBox[1] + viewBox[3] / 2 - refY) - height / 2, width, height).clip();\r\n        }\r\n        doc.transform.apply(doc, aspectRatioMatrix);\r\n        doc.translate(-refX, -refY);\r\n        let group;\r\n        if (this.get('opacity') < 1 && !isClip) {\r\n          group = docBeginGroup(getPageBBox());\r\n        }\r\n        this.drawChildren(isClip, isMask);\r\n        if (group) {\r\n          docEndGroup(group);\r\n          doc.fillOpacity(this.get('opacity'));\r\n          docInsertGroup(group);\r\n        }\r\n        doc.restore();\r\n      };\r\n    };\r\n\r\n    var SvgElemClipPath = function(obj, inherits) {\r\n      SvgElemHasChildren.call(this, obj, inherits);\r\n      this.useMask = function(bBox) {\r\n        let group = docBeginGroup(getPageBBox());\r\n        doc.save();\r\n        if (this.attr('clipPathUnits') === 'objectBoundingBox') {\r\n          doc.transform(bBox[2] - bBox[0], 0, 0, bBox[3] - bBox[1], bBox[0], bBox[1]);\r\n        }\r\n        this.clip();\r\n        this.drawChildren(true, false);\r\n        doc.restore();\r\n        docEndGroup(group);\r\n        docApplyMask(group, true);\r\n      };\r\n    };\r\n\r\n    var SvgElemMask = function(obj, inherits) {\r\n      SvgElemHasChildren.call(this, obj, inherits);\r\n      this.useMask = function(bBox) {\r\n        let group = docBeginGroup(getPageBBox());\r\n        doc.save();\r\n        let x, y, w, h;\r\n        if (this.attr('maskUnits') === 'userSpaceOnUse') {\r\n          x = this.getLength('x', this.getVWidth(), -0.1 * (bBox[2] - bBox[0]) + bBox[0]);\r\n          y = this.getLength('y', this.getVHeight(), -0.1 * (bBox[3] - bBox[1]) + bBox[1]);\r\n          w = this.getLength('width', this.getVWidth(), 1.2 * (bBox[2] - bBox[0]));\r\n          h = this.getLength('height', this.getVHeight(), 1.2 * (bBox[3] - bBox[1]));\r\n        } else {\r\n          x = this.getLength('x', this.getVWidth(), -0.1) * (bBox[2] - bBox[0]) + bBox[0];\r\n          y = this.getLength('y', this.getVHeight(), -0.1) * (bBox[3] - bBox[1]) + bBox[1];\r\n          w = this.getLength('width', this.getVWidth(), 1.2) * (bBox[2] - bBox[0]);\r\n          h = this.getLength('height', this.getVHeight(), 1.2) * (bBox[3] - bBox[1]);\r\n        }\r\n        doc.rect(x, y, w, h).clip();\r\n        if (this.attr('maskContentUnits') === 'objectBoundingBox') {\r\n          doc.transform(bBox[2] - bBox[0], 0, 0, bBox[3] - bBox[1], bBox[0], bBox[1]);\r\n        }\r\n        this.clip();\r\n        this.drawChildren(false, true);\r\n        doc.restore();\r\n        docEndGroup(group);\r\n        docApplyMask(group, true);\r\n      };\r\n    };\r\n\r\n    var SvgElemTextContainer = function(obj, inherits) {\r\n      SvgElemStylable.call(this, obj, inherits);\r\n      this.allowedChildren = ['tspan', '#text', '#cdata-section', 'a'];\r\n      this.isText = true;\r\n      this.getBoundingShape = function() {\r\n        let shape = new SvgShape();\r\n        for (let i = 0; i < this._pos.length; i++) {\r\n          let pos = this._pos[i];\r\n          if (!pos.hidden) {\r\n            let dx0 = pos.ascent * Math.sin(pos.rotate), dy0 = -pos.ascent * Math.cos(pos.rotate),\r\n                dx1 = pos.descent * Math.sin(pos.rotate), dy1 = -pos.descent * Math.cos(pos.rotate),\r\n                dx2 = pos.width * Math.cos(pos.rotate), dy2 = pos.width * Math.sin(pos.rotate);\r\n            shape.M(pos.x + dx0, pos.y + dy0).L(pos.x + dx0 + dx2, pos.y + dy0 + dy2)\r\n                 .M(pos.x + dx1 + dx2, pos.y + dy1 + dy2).L(pos.x + dx1, pos.y + dy1);\r\n          }\r\n        }\r\n        return shape;\r\n      };\r\n      this.drawTextInDocument = function(isClip, isMask) {\r\n        if (this.link && !isClip && !isMask) {this.addLink();}\r\n        if (this.get('text-decoration') === 'underline') {\r\n          this.decorate(0.05 * this._font.size, -0.075 * this._font.size, isClip, isMask);\r\n        }\r\n        if (this.get('text-decoration') === 'overline') {\r\n          this.decorate(0.05 * this._font.size, getAscent(this._font.font, this._font.size) + 0.075 * this._font.size, isClip, isMask);\r\n        }\r\n        let fill = this.getFill(isClip, isMask),\r\n            stroke = this.getStroke(isClip, isMask),\r\n            strokeWidth = this.get('stroke-width');\r\n        if (this._font.fauxBold) {\r\n          if (!stroke) {\r\n            stroke = fill;\r\n            strokeWidth = this._font.size * 0.03;\r\n          } else {\r\n            strokeWidth += this._font.size * 0.03;\r\n          }\r\n        }\r\n        let children = this.getChildren();\r\n        for (let i = 0; i < children.length; i++) {\r\n          let childElem = children[i];\r\n          switch(childElem.name) {\r\n            case 'tspan': case 'textPath': case 'a':\r\n              if (childElem.get('display') !== 'none') {\r\n                childElem.drawTextInDocument(isClip, isMask);\r\n              }\r\n              break;\r\n            case '#text': case '#cdata-section':\r\n              if (this.get('visibility') === 'hidden') {continue;}\r\n              if (fill || stroke || isClip) {\r\n                if (fill) {\r\n                  docFillColor(fill);\r\n                }\r\n                if (stroke && strokeWidth) {\r\n                  docStrokeColor(stroke);\r\n                  doc.lineWidth(strokeWidth)\r\n                     .miterLimit(this.get('stroke-miterlimit'))\r\n                     .lineJoin(this.get('stroke-linejoin'))\r\n                     .lineCap(this.get('stroke-linecap'))\r\n                     .dash(this.get('stroke-dasharray'), {phase:this.get('stroke-dashoffset')});\r\n                }\r\n                docBeginText(this._font.font, this._font.size);\r\n                docSetTextMode(!!fill, !!stroke);\r\n                for (let j = 0, pos = childElem._pos; j < pos.length; j++) {\r\n                  if (!pos[j].hidden && isNotEqual(pos[j].width, 0)) {\r\n                    let cos = Math.cos(pos[j].rotate), sin = Math.sin(pos[j].rotate), skew = (this._font.fauxItalic ? -0.25 : 0);\r\n                    docSetTextMatrix(cos * pos[j].scale, sin * pos[j].scale, cos * skew - sin, sin * skew + cos, pos[j].x, pos[j].y);\r\n                    docWriteGlyph(pos[j].glyph);\r\n                  }\r\n                }\r\n                docEndText();\r\n              }\r\n              break;\r\n          }\r\n        }\r\n        if (this.get('text-decoration') === 'line-through') {\r\n          this.decorate(0.05 * this._font.size, 0.5 * (getAscent(this._font.font, this._font.size) + getDescent(this._font.font, this._font.size)), isClip, isMask);\r\n        }\r\n      };\r\n      this.decorate = function(lineWidth, linePosition, isClip, isMask) {\r\n        let fill = this.getFill(isClip, isMask),\r\n            stroke = this.getStroke(isClip, isMask);\r\n        if (fill) {\r\n          docFillColor(fill);\r\n        }\r\n        if (stroke) {\r\n          docStrokeColor(stroke);\r\n          doc.lineWidth(this.get('stroke-width'))\r\n             .miterLimit(this.get('stroke-miterlimit'))\r\n             .lineJoin(this.get('stroke-linejoin'))\r\n             .lineCap(this.get('stroke-linecap'))\r\n             .dash(this.get('stroke-dasharray'), {phase:this.get('stroke-dashoffset')});\r\n        }\r\n        for (let j = 0, pos = this._pos; j < pos.length; j++) {\r\n          if (!pos[j].hidden && isNotEqual(pos[j].width, 0)) {\r\n            let dx0 = (linePosition + lineWidth / 2) * Math.sin(pos[j].rotate),\r\n                dy0 = -(linePosition + lineWidth / 2) * Math.cos(pos[j].rotate),\r\n                dx1 = (linePosition - lineWidth / 2) * Math.sin(pos[j].rotate),\r\n                dy1 = -(linePosition - lineWidth / 2) * Math.cos(pos[j].rotate),\r\n                dx2 = pos[j].width * Math.cos(pos[j].rotate),\r\n                dy2 = pos[j].width * Math.sin(pos[j].rotate);\r\n            new SvgShape().M(pos[j].x + dx0, pos[j].y + dy0)\r\n                          .L(pos[j].x + dx0 + dx2, pos[j].y + dy0 + dy2)\r\n                          .L(pos[j].x + dx1 + dx2, pos[j].y + dy1 + dy2)\r\n                          .L(pos[j].x + dx1, pos[j].y + dy1).Z()\r\n                          .insertInDocument();\r\n            if (fill && stroke) {\r\n              doc.fillAndStroke();\r\n            } else if (fill) {\r\n              doc.fill();\r\n            } else if (stroke) {\r\n              doc.stroke();\r\n            }\r\n          }\r\n        }\r\n      };\r\n    };\r\n\r\n    var SvgElemTextNode = function(obj, inherits) {\r\n      this.name = obj.nodeName;\r\n      this.textContent = obj.nodeValue;\r\n    };\r\n\r\n    var SvgElemTspan = function(obj, inherits) {\r\n      SvgElemTextContainer.call(this, obj, inherits);\r\n    };\r\n\r\n    var SvgElemTextPath = function(obj, inherits) {\r\n      SvgElemTextContainer.call(this, obj, inherits);\r\n      let pathObject, pathLength, temp;\r\n      if ((temp = this.attr('path')) && temp.trim() !== '') {\r\n        let pathLength = this.getLength('pathLength', this.getViewport());\r\n        this.pathObject = new SvgShape().path(temp);\r\n        this.pathLength = pathLength > 0 ? pathLength : this.pathObject.totalLength;\r\n        this.pathScale = this.pathObject.totalLength / this.pathLength;\r\n      } else if ((temp = this.getUrl('href') || this.getUrl('xlink:href')) && temp.nodeName === 'path') {\r\n        let pathElem = new SvgElemPath(temp, this);\r\n        this.pathObject = pathElem.shape.clone().transform(pathElem.get('transform'));\r\n        this.pathLength = this.chooseValue(pathElem.pathLength, this.pathObject.totalLength);\r\n        this.pathScale = this.pathObject.totalLength / this.pathLength;\r\n      }\r\n    };\r\n\r\n    var SvgElemText = function(obj, inherits) {\r\n      SvgElemTextContainer.call(this, obj, inherits);\r\n      this.allowedChildren = ['textPath', 'tspan', '#text', '#cdata-section', 'a'];\r\n      (function (textParentElem) {\r\n        let processedText = '', remainingText = obj.textContent, textPaths = [], currentChunk = [], currentAnchor, currentDirection, currentX = 0, currentY = 0;\r\n        function doAnchoring() {\r\n          if (currentChunk.length) {\r\n            let last = currentChunk[currentChunk.length - 1];\r\n            let first = currentChunk[0]\r\n            let width = last.x + last.width - first.x;\r\n            let anchordx = {'startltr': 0, 'middleltr': 0.5, 'endltr': 1, 'startrtl': 1, 'middlertl': 0.5, 'endrtl': 0}[currentAnchor + currentDirection] * width || 0;\r\n            for (let i = 0; i < currentChunk.length; i++) {\r\n              currentChunk[i].x -= anchordx;\r\n            }\r\n          }\r\n          currentChunk = [];\r\n        }\r\n        function adjustLength(pos, length, spacingAndGlyphs) {\r\n          let firstChar = pos[0], lastChar = pos[pos.length - 1],\r\n              startX = firstChar.x, endX = lastChar.x + lastChar.width;\r\n          if (spacingAndGlyphs) {\r\n            let textScale = length / (endX - startX);\r\n            if (textScale > 0 && textScale < Infinity) {\r\n              for (let j = 0; j < pos.length; j++) {\r\n                pos[j].x = startX + textScale * (pos[j].x - startX);\r\n                pos[j].scale *= textScale;\r\n                pos[j].width *= textScale;\r\n              }\r\n            }\r\n          } else {\r\n            if (pos.length >= 2) {\r\n              let spaceDiff = (length - (endX - startX)) / (pos.length - 1);\r\n              for (let j = 0; j < pos.length; j++) {\r\n                pos[j].x += j * spaceDiff;\r\n              }\r\n            }\r\n          }\r\n          currentX += length - (endX - startX);\r\n        }\r\n        function recursive(currentElem, parentElem) {\r\n          currentElem._x = combineArrays(currentElem.getLengthList('x', currentElem.getVWidth()), (parentElem ? parentElem._x.slice(parentElem._pos.length) : []));\r\n          currentElem._y = combineArrays(currentElem.getLengthList('y', currentElem.getVHeight()), (parentElem ? parentElem._y.slice(parentElem._pos.length) : []));\r\n          currentElem._dx = combineArrays(currentElem.getLengthList('dx', currentElem.getVWidth()), (parentElem ? parentElem._dx.slice(parentElem._pos.length) : []));\r\n          currentElem._dy = combineArrays(currentElem.getLengthList('dy', currentElem.getVHeight()), (parentElem ? parentElem._dy.slice(parentElem._pos.length) : []));\r\n          currentElem._rot = combineArrays(currentElem.getNumberList('rotate'), (parentElem ? parentElem._rot.slice(parentElem._pos.length) : []));\r\n          currentElem._defRot = currentElem.chooseValue(currentElem._rot[currentElem._rot.length - 1], parentElem && parentElem._defRot, 0);\r\n          if (currentElem.name === 'textPath') {currentElem._y = [];}\r\n          let fontOptions = {fauxItalic: false, fauxBold: false},\r\n              fontNameorLink = fontCallback(currentElem.get('font-family'), currentElem.get('font-weight') === 'bold', currentElem.get('font-style') === 'italic', fontOptions);\r\n          try {\r\n            doc.font(fontNameorLink);\r\n          } catch(e) {\r\n            warningCallback('SVGElemText: failed to open font \"' + fontNameorLink + '\" in PDFKit');\r\n          }\r\n          currentElem._pos = [];\r\n          currentElem._index = 0;\r\n          currentElem._font = {font: doc._font, size: currentElem.get('font-size'), fauxItalic: fontOptions.fauxItalic, fauxBold: fontOptions.fauxBold};\r\n          let textLength = currentElem.getLength('textLength', currentElem.getVWidth(), undefined),\r\n              spacingAndGlyphs = currentElem.attr('lengthAdjust') === 'spacingAndGlyphs',\r\n              wordSpacing = currentElem.get('word-spacing'),\r\n              letterSpacing = currentElem.get('letter-spacing'),\r\n              textAnchor = currentElem.get('text-anchor'),\r\n              textDirection = currentElem.get('direction'),\r\n              baseline = getBaseline(currentElem._font.font, currentElem._font.size, currentElem.get('alignment-baseline') || currentElem.get('dominant-baseline'), currentElem.get('baseline-shift'));\r\n          if (currentElem.name === 'textPath') {\r\n            doAnchoring();\r\n            currentX = currentY = 0;\r\n          }\r\n          let children = currentElem.getChildren();\r\n          for (let i = 0; i < children.length; i++) {\r\n            let childElem = children[i];\r\n            switch(childElem.name) {\r\n              case 'tspan': case 'textPath': case 'a':\r\n                recursive(childElem, currentElem);\r\n                break;\r\n              case '#text': case '#cdata-section':\r\n                let rawText = childElem.textContent, renderedText = rawText, words;\r\n                childElem._font = currentElem._font;\r\n                childElem._pos = [];\r\n                remainingText = remainingText.substring(rawText.length);\r\n                if (currentElem.get('xml:space') === 'preserve') {\r\n                  renderedText = renderedText.replace(/[\\s]/g, ' ');\r\n                } else {\r\n                  renderedText = renderedText.replace(/[\\s]+/g, ' ');\r\n                  if (processedText.match(/[\\s]$|^$/)) {renderedText = renderedText.replace(/^[\\s]/, '');}\r\n                  if (remainingText.match(/^[\\s]*$/)) {renderedText = renderedText.replace(/[\\s]$/, '');}\r\n                }\r\n                processedText += rawText;\r\n                if (wordSpacing === 0) {\r\n                  words = [renderedText];\r\n                } else {\r\n                  words = renderedText.split(/(\\s)/);\r\n                }\r\n                for (let w = 0; w < words.length; w++) {\r\n                  let pos = getTextPos(currentElem._font.font, currentElem._font.size, words[w]);\r\n                  for (let j = 0; j < pos.length; j++) {\r\n                    let index = currentElem._index,\r\n                        xAttr = currentElem._x[index],\r\n                        yAttr = currentElem._y[index],\r\n                        dxAttr = currentElem._dx[index],\r\n                        dyAttr = currentElem._dy[index],\r\n                        rotAttr = currentElem._rot[index],\r\n                        continuous = !(w === 0 && j === 0);\r\n                    if (xAttr !== undefined) {continuous = false; doAnchoring(); currentX = xAttr;}\r\n                    if (yAttr !== undefined) {continuous = false; doAnchoring(); currentY = yAttr;}\r\n                    if (dxAttr !== undefined) {continuous = false; currentX += dxAttr;}\r\n                    if (dyAttr !== undefined) {continuous = false; currentY += dyAttr;}\r\n                    if (rotAttr !== undefined || currentElem._defRot !== 0) {continuous = false;}\r\n                    let position = {\r\n                      glyph: pos[j].glyph,\r\n                      rotate: (Math.PI / 180) * currentElem.chooseValue(rotAttr, currentElem._defRot),\r\n                      x: currentX + pos[j].xOffset,\r\n                      y: currentY + baseline + pos[j].yOffset,\r\n                      width: pos[j].width,\r\n                      ascent: getAscent(currentElem._font.font, currentElem._font.size),\r\n                      descent: getDescent(currentElem._font.font, currentElem._font.size),\r\n                      scale: 1,\r\n                      hidden: false,\r\n                      continuous: continuous\r\n                    };\r\n                    currentChunk.push(position);\r\n                    childElem._pos.push(position);\r\n                    currentElem._pos.push(position);\r\n                    currentElem._index += pos[j].unicode.length;\r\n                    if (currentChunk.length === 1) {\r\n                      currentAnchor = textAnchor;\r\n                      currentDirection = textDirection;\r\n                    }\r\n                    currentX += pos[j].xAdvance + letterSpacing;\r\n                    currentY += pos[j].yAdvance;\r\n                  }\r\n                  if (words[w] === ' ') {\r\n                    currentX += wordSpacing;\r\n                  }\r\n                }\r\n                break;\r\n              default:\r\n                remainingText = remainingText.substring(childElem.textContent.length);\r\n            }\r\n          }\r\n          if (textLength && currentElem._pos.length) {\r\n            adjustLength(currentElem._pos, textLength, spacingAndGlyphs);\r\n          }\r\n          if (currentElem.name === 'textPath' || currentElem.name === 'text') {\r\n            doAnchoring();\r\n          }\r\n          if (currentElem.name === 'textPath') {\r\n            textPaths.push(currentElem);\r\n            let pathObject = currentElem.pathObject;\r\n            if (pathObject) {\r\n              currentX = pathObject.endPoint[0]; currentY = pathObject.endPoint[1];\r\n            }\r\n          }\r\n          if (parentElem) {\r\n            parentElem._pos = parentElem._pos.concat(currentElem._pos);\r\n            parentElem._index += currentElem._index;\r\n          }\r\n        }\r\n        function textOnPath(currentElem) {\r\n          let pathObject = currentElem.pathObject,\r\n              pathLength = currentElem.pathLength,\r\n              pathScale = currentElem.pathScale;\r\n          if (pathObject) {\r\n            let textOffset = currentElem.getLength('startOffset', pathLength, 0);\r\n            for (let j = 0; j < currentElem._pos.length; j++) {\r\n              let charMidX = textOffset + currentElem._pos[j].x + 0.5 * currentElem._pos[j].width;\r\n              if (charMidX > pathLength || charMidX < 0) {\r\n                currentElem._pos[j].hidden = true;\r\n              } else {\r\n                let pointOnPath = pathObject.getPointAtLength(charMidX * pathScale);\r\n                if (isNotEqual(pathScale, 1)) {\r\n                  currentElem._pos[j].scale *= pathScale;\r\n                  currentElem._pos[j].width *= pathScale;\r\n                }\r\n                currentElem._pos[j].x = pointOnPath[0] - 0.5 * currentElem._pos[j].width * Math.cos(pointOnPath[2]) - currentElem._pos[j].y * Math.sin(pointOnPath[2]);\r\n                currentElem._pos[j].y = pointOnPath[1] - 0.5 * currentElem._pos[j].width * Math.sin(pointOnPath[2]) + currentElem._pos[j].y * Math.cos(pointOnPath[2]);\r\n                currentElem._pos[j].rotate = pointOnPath[2] + currentElem._pos[j].rotate;\r\n                currentElem._pos[j].continuous = false;\r\n              }\r\n            }\r\n          } else {\r\n            for (let j = 0; j < currentElem._pos.length; j++) {\r\n              currentElem._pos[j].hidden = true;\r\n            }\r\n          }\r\n        }\r\n        recursive(textParentElem, null);\r\n        for (let i = 0; i < textPaths.length; i++) {\r\n          textOnPath(textPaths[i]);\r\n        }\r\n      })(this);\r\n      this.getTransformation = function() {\r\n        return this.get('transform');\r\n      };\r\n      this.drawInDocument = function(isClip, isMask) {\r\n        doc.save();\r\n        this.transform();\r\n        this.clip();\r\n        let masked = this.mask(), group;\r\n        if (masked) {\r\n          group = docBeginGroup(getPageBBox());\r\n        }\r\n        this.drawTextInDocument(isClip, isMask);\r\n        if (group) {\r\n          docEndGroup(group);\r\n          docInsertGroup(group);\r\n        }\r\n        doc.restore();\r\n      };\r\n    };\r\n\r\n    options = options || {};\r\n    var pxToPt = options.assumePt ? 1 : (72/96), // 1px = 72/96pt, but only if assumePt is false\r\n        viewportWidth = (options.width || doc.page.width) / pxToPt,\r\n        viewportHeight = (options.height || doc.page.height) / pxToPt,\r\n        preserveAspectRatio = options.preserveAspectRatio || null, // default to null so that the attr can override if not passed\r\n        useCSS = options.useCSS && typeof SVGElement !== 'undefined' && svg instanceof SVGElement && typeof getComputedStyle === 'function',\r\n        warningCallback = options.warningCallback,\r\n        fontCallback = options.fontCallback,\r\n        imageCallback = options.imageCallback,\r\n        colorCallback = options.colorCallback,\r\n        documentCallback = options.documentCallback,\r\n        precision = Math.ceil(Math.max(1, options.precision)) || 3,\r\n        groupStack = [],\r\n        documentCache = {},\r\n        links = [],\r\n        styleRules = [];\r\n\r\n    if (typeof warningCallback !== 'function') {\r\n      warningCallback = function(str) {\r\n        if (typeof console !== undefined && typeof console.warn === 'function') {console.warn(str);}\r\n      };\r\n    }\r\n    if (typeof fontCallback !== 'function') {\r\n      fontCallback = function(family, bold, italic, fontOptions) {\r\n        // Check if the font is already registered in the document\r\n        if (bold && italic) {\r\n          if (doc._registeredFonts.hasOwnProperty(family + '-BoldItalic')) {\r\n            return family + '-BoldItalic';\r\n          } else if (doc._registeredFonts.hasOwnProperty(family + '-Italic')) {\r\n            fontOptions.fauxBold = true;\r\n            return family + '-Italic';\r\n          } else if (doc._registeredFonts.hasOwnProperty(family + '-Bold')) {\r\n            fontOptions.fauxItalic = true;\r\n            return family + '-Bold';\r\n          } else if (doc._registeredFonts.hasOwnProperty(family)) {\r\n            fontOptions.fauxBold = true;\r\n            fontOptions.fauxItalic = true;\r\n            return family;\r\n          }\r\n        }\r\n        if (bold && !italic) {\r\n          if (doc._registeredFonts.hasOwnProperty(family + '-Bold')) {\r\n            return family + '-Bold';\r\n          } else if (doc._registeredFonts.hasOwnProperty(family)) {\r\n            fontOptions.fauxBold = true;\r\n            return family;\r\n          }\r\n        }\r\n        if (!bold && italic) {\r\n          if (doc._registeredFonts.hasOwnProperty(family + '-Italic')) {\r\n            return family + '-Italic';\r\n          } else if (doc._registeredFonts.hasOwnProperty(family)) {\r\n            fontOptions.fauxItalic = true;\r\n            return family;\r\n          }\r\n        }\r\n        if (!bold && !italic) {\r\n          if (doc._registeredFonts.hasOwnProperty(family)) {\r\n            return family;\r\n          }\r\n        }\r\n        // Use standard fonts as fallback\r\n        if (family.match(/(?:^|,)\\s*serif\\s*$/)) {\r\n          if (bold && italic) {return 'Times-BoldItalic';}\r\n          if (bold && !italic) {return 'Times-Bold';}\r\n          if (!bold && italic) {return 'Times-Italic';}\r\n          if (!bold && !italic) {return 'Times-Roman';}\r\n        } else if (family.match(/(?:^|,)\\s*monospace\\s*$/)) {\r\n          if (bold && italic) {return 'Courier-BoldOblique';}\r\n          if (bold && !italic) {return 'Courier-Bold';}\r\n          if (!bold && italic) {return 'Courier-Oblique';}\r\n          if (!bold && !italic) {return 'Courier';}\r\n        } else if (family.match(/(?:^|,)\\s*sans-serif\\s*$/) || true) {\r\n          if (bold && italic) {return 'Helvetica-BoldOblique';}\r\n          if (bold && !italic) {return 'Helvetica-Bold';}\r\n          if (!bold && italic) {return 'Helvetica-Oblique';}\r\n          if (!bold && !italic) {return 'Helvetica';}\r\n        }\r\n      };\r\n    }\r\n    if (typeof imageCallback !== 'function') {\r\n      imageCallback = function(link) {\r\n        return link.replace(/\\s+/g, '');\r\n      };\r\n    }\r\n    if (typeof colorCallback !== 'function') {\r\n      colorCallback = null;\r\n    } else {\r\n      for (let color in DefaultColors) {\r\n        let newColor = colorCallback(DefaultColors[color]);\r\n        DefaultColors[color][0] = newColor[0];\r\n        DefaultColors[color][1] = newColor[1];\r\n      }\r\n    }\r\n    if (typeof documentCallback !== 'function') {\r\n      documentCallback = null;\r\n    }\r\n\r\n    if (typeof svg === 'string') {svg = parseXml(svg);}\r\n    if (svg) {\r\n      let styles = svg.getElementsByTagName('style');\r\n      for (let i = 0; i < styles.length; i++) {\r\n        styleRules = styleRules.concat(parseStyleSheet(styles[i].textContent));\r\n      }\r\n      let elem = createSVGElement(svg, null);\r\n      if (typeof elem.drawInDocument === 'function') {\r\n        if (options.useCSS && !useCSS) {\r\n          warningCallback('SVGtoPDF: useCSS option can only be used for SVG *elements* in compatible browsers');\r\n        }\r\n        let savedFillColor = doc._fillColor;\r\n        doc.save().translate(x || 0, y || 0).scale(pxToPt);\r\n        elem.drawInDocument();\r\n        for (let i = 0; i < links.length; i++) {\r\n          doc.page.annotations.push(links[i]);\r\n        }\r\n        doc.restore();\r\n        doc._fillColor = savedFillColor;\r\n      } else {\r\n        warningCallback('SVGtoPDF: this element can\\'t be rendered directly: ' + svg.nodeName);\r\n      }\r\n    } else {\r\n      warningCallback('SVGtoPDF: the input does not look like a valid SVG');\r\n    }\r\n\r\n};\r\n\r\nif (typeof module !== 'undefined' && module && typeof module.exports !== 'undefined') {\r\n  module.exports = SVGtoPDF;\r\n}\r\n", "'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n  lookup[i] = code[i]\n  revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n  var len = b64.length\n\n  if (len % 4 > 0) {\n    throw new Error('Invalid string. Length must be a multiple of 4')\n  }\n\n  // Trim off extra bytes after placeholder bytes are found\n  // See: https://github.com/beatgammit/base64-js/issues/42\n  var validLen = b64.indexOf('=')\n  if (validLen === -1) validLen = len\n\n  var placeHoldersLen = validLen === len\n    ? 0\n    : 4 - (validLen % 4)\n\n  return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n  var lens = getLens(b64)\n  var validLen = lens[0]\n  var placeHoldersLen = lens[1]\n  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n  var tmp\n  var lens = getLens(b64)\n  var validLen = lens[0]\n  var placeHoldersLen = lens[1]\n\n  var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n  var curByte = 0\n\n  // if there are placeholders, only get up to the last complete 4 chars\n  var len = placeHoldersLen > 0\n    ? validLen - 4\n    : validLen\n\n  var i\n  for (i = 0; i < len; i += 4) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 18) |\n      (revLookup[b64.charCodeAt(i + 1)] << 12) |\n      (revLookup[b64.charCodeAt(i + 2)] << 6) |\n      revLookup[b64.charCodeAt(i + 3)]\n    arr[curByte++] = (tmp >> 16) & 0xFF\n    arr[curByte++] = (tmp >> 8) & 0xFF\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  if (placeHoldersLen === 2) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 2) |\n      (revLookup[b64.charCodeAt(i + 1)] >> 4)\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  if (placeHoldersLen === 1) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 10) |\n      (revLookup[b64.charCodeAt(i + 1)] << 4) |\n      (revLookup[b64.charCodeAt(i + 2)] >> 2)\n    arr[curByte++] = (tmp >> 8) & 0xFF\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  return arr\n}\n\nfunction tripletToBase64 (num) {\n  return lookup[num >> 18 & 0x3F] +\n    lookup[num >> 12 & 0x3F] +\n    lookup[num >> 6 & 0x3F] +\n    lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n  var tmp\n  var output = []\n  for (var i = start; i < end; i += 3) {\n    tmp =\n      ((uint8[i] << 16) & 0xFF0000) +\n      ((uint8[i + 1] << 8) & 0xFF00) +\n      (uint8[i + 2] & 0xFF)\n    output.push(tripletToBase64(tmp))\n  }\n  return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n  var tmp\n  var len = uint8.length\n  var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n  var parts = []\n  var maxChunkLength = 16383 // must be multiple of 3\n\n  // go through the array every three bytes, we'll deal with trailing stuff later\n  for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n    parts.push(encodeChunk(\n      uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)\n    ))\n  }\n\n  // pad the end with zeros, but make sure to not forget the extra bytes\n  if (extraBytes === 1) {\n    tmp = uint8[len - 1]\n    parts.push(\n      lookup[tmp >> 2] +\n      lookup[(tmp << 4) & 0x3F] +\n      '=='\n    )\n  } else if (extraBytes === 2) {\n    tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n    parts.push(\n      lookup[tmp >> 10] +\n      lookup[(tmp >> 4) & 0x3F] +\n      lookup[(tmp << 2) & 0x3F] +\n      '='\n    )\n  }\n\n  return parts.join('')\n}\n", "/* Copyright 2013 Google Inc. All Rights Reserved.\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n   http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n\n   Bit reading helpers\n*/\n\nvar BROTLI_READ_SIZE = 4096;\nvar BROTLI_IBUF_SIZE =  (2 * BROTLI_READ_SIZE + 32);\nvar BROTLI_IBUF_MASK =  (2 * BROTLI_READ_SIZE - 1);\n\nvar kBitMask = new Uint32Array([\n  0, 1, 3, 7, 15, 31, 63, 127, 255, 511, 1023, 2047, 4095, 8191, 16383, 32767,\n  65535, 131071, 262143, 524287, 1048575, 2097151, 4194303, 8388607, 16777215\n]);\n\n/* Input byte buffer, consist of a ringbuffer and a \"slack\" region where */\n/* bytes from the start of the ringbuffer are copied. */\nfunction BrotliBitReader(input) {\n  this.buf_ = new Uint8Array(BROTLI_IBUF_SIZE);\n  this.input_ = input;    /* input callback */\n  \n  this.reset();\n}\n\nBrotliBitReader.READ_SIZE = BROTLI_READ_SIZE;\nBrotliBitReader.IBUF_MASK = BROTLI_IBUF_MASK;\n\nBrotliBitReader.prototype.reset = function() {\n  this.buf_ptr_ = 0;      /* next input will write here */\n  this.val_ = 0;          /* pre-fetched bits */\n  this.pos_ = 0;          /* byte position in stream */\n  this.bit_pos_ = 0;      /* current bit-reading position in val_ */\n  this.bit_end_pos_ = 0;  /* bit-reading end position from LSB of val_ */\n  this.eos_ = 0;          /* input stream is finished */\n  \n  this.readMoreInput();\n  for (var i = 0; i < 4; i++) {\n    this.val_ |= this.buf_[this.pos_] << (8 * i);\n    ++this.pos_;\n  }\n  \n  return this.bit_end_pos_ > 0;\n};\n\n/* Fills up the input ringbuffer by calling the input callback.\n\n   Does nothing if there are at least 32 bytes present after current position.\n\n   Returns 0 if either:\n    - the input callback returned an error, or\n    - there is no more input and the position is past the end of the stream.\n\n   After encountering the end of the input stream, 32 additional zero bytes are\n   copied to the ringbuffer, therefore it is safe to call this function after\n   every 32 bytes of input is read.\n*/\nBrotliBitReader.prototype.readMoreInput = function() {\n  if (this.bit_end_pos_ > 256) {\n    return;\n  } else if (this.eos_) {\n    if (this.bit_pos_ > this.bit_end_pos_)\n      throw new Error('Unexpected end of input ' + this.bit_pos_ + ' ' + this.bit_end_pos_);\n  } else {\n    var dst = this.buf_ptr_;\n    var bytes_read = this.input_.read(this.buf_, dst, BROTLI_READ_SIZE);\n    if (bytes_read < 0) {\n      throw new Error('Unexpected end of input');\n    }\n    \n    if (bytes_read < BROTLI_READ_SIZE) {\n      this.eos_ = 1;\n      /* Store 32 bytes of zero after the stream end. */\n      for (var p = 0; p < 32; p++)\n        this.buf_[dst + bytes_read + p] = 0;\n    }\n    \n    if (dst === 0) {\n      /* Copy the head of the ringbuffer to the slack region. */\n      for (var p = 0; p < 32; p++)\n        this.buf_[(BROTLI_READ_SIZE << 1) + p] = this.buf_[p];\n\n      this.buf_ptr_ = BROTLI_READ_SIZE;\n    } else {\n      this.buf_ptr_ = 0;\n    }\n    \n    this.bit_end_pos_ += bytes_read << 3;\n  }\n};\n\n/* Guarantees that there are at least 24 bits in the buffer. */\nBrotliBitReader.prototype.fillBitWindow = function() {    \n  while (this.bit_pos_ >= 8) {\n    this.val_ >>>= 8;\n    this.val_ |= this.buf_[this.pos_ & BROTLI_IBUF_MASK] << 24;\n    ++this.pos_;\n    this.bit_pos_ = this.bit_pos_ - 8 >>> 0;\n    this.bit_end_pos_ = this.bit_end_pos_ - 8 >>> 0;\n  }\n};\n\n/* Reads the specified number of bits from Read Buffer. */\nBrotliBitReader.prototype.readBits = function(n_bits) {\n  if (32 - this.bit_pos_ < n_bits) {\n    this.fillBitWindow();\n  }\n  \n  var val = ((this.val_ >>> this.bit_pos_) & kBitMask[n_bits]);\n  this.bit_pos_ += n_bits;\n  return val;\n};\n\nmodule.exports = BrotliBitReader;\n", "/* Copyright 2013 Google Inc. All Rights Reserved.\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n   http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n\n   Lookup table to map the previous two bytes to a context id.\n\n   There are four different context modeling modes defined here:\n     CONTEXT_LSB6: context id is the least significant 6 bits of the last byte,\n     CONTEXT_MSB6: context id is the most significant 6 bits of the last byte,\n     CONTEXT_UTF8: second-order context model tuned for UTF8-encoded text,\n     CONTEXT_SIGNED: second-order context model tuned for signed integers.\n\n   The context id for the UTF8 context model is calculated as follows. If p1\n   and p2 are the previous two bytes, we calcualte the context as\n\n     context = kContextLookup[p1] | kContextLookup[p2 + 256].\n\n   If the previous two bytes are ASCII characters (i.e. < 128), this will be\n   equivalent to\n\n     context = 4 * context1(p1) + context2(p2),\n\n   where context1 is based on the previous byte in the following way:\n\n     0  : non-ASCII control\n     1  : \\t, \\n, \\r\n     2  : space\n     3  : other punctuation\n     4  : \" '\n     5  : %\n     6  : ( < [ {\n     7  : ) > ] }\n     8  : , ; :\n     9  : .\n     10 : =\n     11 : number\n     12 : upper-case vowel\n     13 : upper-case consonant\n     14 : lower-case vowel\n     15 : lower-case consonant\n\n   and context2 is based on the second last byte:\n\n     0 : control, space\n     1 : punctuation\n     2 : upper-case letter, number\n     3 : lower-case letter\n\n   If the last byte is ASCII, and the second last byte is not (in a valid UTF8\n   stream it will be a continuation byte, value between 128 and 191), the\n   context is the same as if the second last byte was an ASCII control or space.\n\n   If the last byte is a UTF8 lead byte (value >= 192), then the next byte will\n   be a continuation byte and the context id is 2 or 3 depending on the LSB of\n   the last byte and to a lesser extent on the second last byte if it is ASCII.\n\n   If the last byte is a UTF8 continuation byte, the second last byte can be:\n     - continuation byte: the next byte is probably ASCII or lead byte (assuming\n       4-byte UTF8 characters are rare) and the context id is 0 or 1.\n     - lead byte (192 - 207): next byte is ASCII or lead byte, context is 0 or 1\n     - lead byte (208 - 255): next byte is continuation byte, context is 2 or 3\n\n   The possible value combinations of the previous two bytes, the range of\n   context ids and the type of the next byte is summarized in the table below:\n\n   |--------\\-----------------------------------------------------------------|\n   |         \\                         Last byte                              |\n   | Second   \\---------------------------------------------------------------|\n   | last byte \\    ASCII            |   cont. byte        |   lead byte      |\n   |            \\   (0-127)          |   (128-191)         |   (192-)         |\n   |=============|===================|=====================|==================|\n   |  ASCII      | next: ASCII/lead  |  not valid          |  next: cont.     |\n   |  (0-127)    | context: 4 - 63   |                     |  context: 2 - 3  |\n   |-------------|-------------------|---------------------|------------------|\n   |  cont. byte | next: ASCII/lead  |  next: ASCII/lead   |  next: cont.     |\n   |  (128-191)  | context: 4 - 63   |  context: 0 - 1     |  context: 2 - 3  |\n   |-------------|-------------------|---------------------|------------------|\n   |  lead byte  | not valid         |  next: ASCII/lead   |  not valid       |\n   |  (192-207)  |                   |  context: 0 - 1     |                  |\n   |-------------|-------------------|---------------------|------------------|\n   |  lead byte  | not valid         |  next: cont.        |  not valid       |\n   |  (208-)     |                   |  context: 2 - 3     |                  |\n   |-------------|-------------------|---------------------|------------------|\n\n   The context id for the signed context mode is calculated as:\n\n     context = (kContextLookup[512 + p1] << 3) | kContextLookup[512 + p2].\n\n   For any context modeling modes, the context ids can be calculated by |-ing\n   together two lookups from one table using context model dependent offsets:\n\n     context = kContextLookup[offset1 + p1] | kContextLookup[offset2 + p2].\n\n   where offset1 and offset2 are dependent on the context mode.\n*/\n\nvar CONTEXT_LSB6         = 0;\nvar CONTEXT_MSB6         = 1;\nvar CONTEXT_UTF8         = 2;\nvar CONTEXT_SIGNED       = 3;\n\n/* Common context lookup table for all context modes. */\nexports.lookup = new Uint8Array([\n  /* CONTEXT_UTF8, last byte. */\n  /* ASCII range. */\n   0,  0,  0,  0,  0,  0,  0,  0,  0,  4,  4,  0,  0,  4,  0,  0,\n   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,\n   8, 12, 16, 12, 12, 20, 12, 16, 24, 28, 12, 12, 32, 12, 36, 12,\n  44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 32, 32, 24, 40, 28, 12,\n  12, 48, 52, 52, 52, 48, 52, 52, 52, 48, 52, 52, 52, 52, 52, 48,\n  52, 52, 52, 52, 52, 48, 52, 52, 52, 52, 52, 24, 12, 28, 12, 12,\n  12, 56, 60, 60, 60, 56, 60, 60, 60, 56, 60, 60, 60, 60, 60, 56,\n  60, 60, 60, 60, 60, 56, 60, 60, 60, 60, 60, 24, 12, 28, 12,  0,\n  /* UTF8 continuation byte range. */\n  0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,\n  0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,\n  0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,\n  0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,\n  /* UTF8 lead byte range. */\n  2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3,\n  2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3,\n  2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3,\n  2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3,\n  /* CONTEXT_UTF8 second last byte. */\n  /* ASCII range. */\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1,\n  1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1,\n  1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,\n  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 0,\n  /* UTF8 continuation byte range. */\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  /* UTF8 lead byte range. */\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n  /* CONTEXT_SIGNED, second last byte. */\n  0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,\n  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,\n  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,\n  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,\n  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,\n  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,\n  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,\n  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,\n  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,\n  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,\n  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,\n  6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7,\n  /* CONTEXT_SIGNED, last byte, same as the above values shifted by 3 bits. */\n   0, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,\n  16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,\n  16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,\n  16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,\n  24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\n  24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\n  24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\n  24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\n  32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,\n  32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,\n  32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,\n  32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,\n  40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,\n  40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,\n  40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,\n  48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 56,\n  /* CONTEXT_LSB6, last byte. */\n   0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,\n  16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,\n  32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n  48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,\n   0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,\n  16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,\n  32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n  48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,\n   0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,\n  16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,\n  32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n  48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,\n   0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,\n  16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,\n  32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n  48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,\n  /* CONTEXT_MSB6, last byte. */\n   0,  0,  0,  0,  1,  1,  1,  1,  2,  2,  2,  2,  3,  3,  3,  3,\n   4,  4,  4,  4,  5,  5,  5,  5,  6,  6,  6,  6,  7,  7,  7,  7,\n   8,  8,  8,  8,  9,  9,  9,  9, 10, 10, 10, 10, 11, 11, 11, 11,\n  12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 15,\n  16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, 19, 19, 19, 19,\n  20, 20, 20, 20, 21, 21, 21, 21, 22, 22, 22, 22, 23, 23, 23, 23,\n  24, 24, 24, 24, 25, 25, 25, 25, 26, 26, 26, 26, 27, 27, 27, 27,\n  28, 28, 28, 28, 29, 29, 29, 29, 30, 30, 30, 30, 31, 31, 31, 31,\n  32, 32, 32, 32, 33, 33, 33, 33, 34, 34, 34, 34, 35, 35, 35, 35,\n  36, 36, 36, 36, 37, 37, 37, 37, 38, 38, 38, 38, 39, 39, 39, 39,\n  40, 40, 40, 40, 41, 41, 41, 41, 42, 42, 42, 42, 43, 43, 43, 43,\n  44, 44, 44, 44, 45, 45, 45, 45, 46, 46, 46, 46, 47, 47, 47, 47,\n  48, 48, 48, 48, 49, 49, 49, 49, 50, 50, 50, 50, 51, 51, 51, 51,\n  52, 52, 52, 52, 53, 53, 53, 53, 54, 54, 54, 54, 55, 55, 55, 55,\n  56, 56, 56, 56, 57, 57, 57, 57, 58, 58, 58, 58, 59, 59, 59, 59,\n  60, 60, 60, 60, 61, 61, 61, 61, 62, 62, 62, 62, 63, 63, 63, 63,\n  /* CONTEXT_{M,L}SB6, second last byte, */\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n]);\n\nexports.lookupOffsets = new Uint16Array([\n  /* CONTEXT_LSB6 */\n  1024, 1536,\n  /* CONTEXT_MSB6 */\n  1280, 1536,\n  /* CONTEXT_UTF8 */\n  0, 256,\n  /* CONTEXT_SIGNED */\n  768, 512,\n]);\n", "/* Copyright 2013 Google Inc. All Rights Reserved.\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n   http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n*/\n\nvar BrotliInput = require('./streams').BrotliInput;\nvar BrotliOutput = require('./streams').BrotliOutput;\nvar BrotliBitReader = require('./bit_reader');\nvar BrotliDictionary = require('./dictionary');\nvar HuffmanCode = require('./huffman').HuffmanCode;\nvar BrotliBuildHuffmanTable = require('./huffman').BrotliBuildHuffmanTable;\nvar Context = require('./context');\nvar Prefix = require('./prefix');\nvar Transform = require('./transform');\n\nvar kDefaultCodeLength = 8;\nvar kCodeLengthRepeatCode = 16;\nvar kNumLiteralCodes = 256;\nvar kNumInsertAndCopyCodes = 704;\nvar kNumBlockLengthCodes = 26;\nvar kLiteralContextBits = 6;\nvar kDistanceContextBits = 2;\n\nvar HUFFMAN_TABLE_BITS = 8;\nvar HUFFMAN_TABLE_MASK = 0xff;\n/* Maximum possible Huffman table size for an alphabet size of 704, max code\n * length 15 and root table bits 8. */\nvar HUFFMAN_MAX_TABLE_SIZE = 1080;\n\nvar CODE_LENGTH_CODES = 18;\nvar kCodeLengthCodeOrder = new Uint8Array([\n  1, 2, 3, 4, 0, 5, 17, 6, 16, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n]);\n\nvar NUM_DISTANCE_SHORT_CODES = 16;\nvar kDistanceShortCodeIndexOffset = new Uint8Array([\n  3, 2, 1, 0, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2\n]);\n\nvar kDistanceShortCodeValueOffset = new Int8Array([\n  0, 0, 0, 0, -1, 1, -2, 2, -3, 3, -1, 1, -2, 2, -3, 3\n]);\n\nvar kMaxHuffmanTableSize = new Uint16Array([\n  256, 402, 436, 468, 500, 534, 566, 598, 630, 662, 694, 726, 758, 790, 822,\n  854, 886, 920, 952, 984, 1016, 1048, 1080\n]);\n\nfunction DecodeWindowBits(br) {\n  var n;\n  if (br.readBits(1) === 0) {\n    return 16;\n  }\n  \n  n = br.readBits(3);\n  if (n > 0) {\n    return 17 + n;\n  }\n  \n  n = br.readBits(3);\n  if (n > 0) {\n    return 8 + n;\n  }\n  \n  return 17;\n}\n\n/* Decodes a number in the range [0..255], by reading 1 - 11 bits. */\nfunction DecodeVarLenUint8(br) {\n  if (br.readBits(1)) {\n    var nbits = br.readBits(3);\n    if (nbits === 0) {\n      return 1;\n    } else {\n      return br.readBits(nbits) + (1 << nbits);\n    }\n  }\n  return 0;\n}\n\nfunction MetaBlockLength() {\n  this.meta_block_length = 0;\n  this.input_end = 0;\n  this.is_uncompressed = 0;\n  this.is_metadata = false;\n}\n\nfunction DecodeMetaBlockLength(br) {\n  var out = new MetaBlockLength;  \n  var size_nibbles;\n  var size_bytes;\n  var i;\n  \n  out.input_end = br.readBits(1);\n  if (out.input_end && br.readBits(1)) {\n    return out;\n  }\n  \n  size_nibbles = br.readBits(2) + 4;\n  if (size_nibbles === 7) {\n    out.is_metadata = true;\n    \n    if (br.readBits(1) !== 0)\n      throw new Error('Invalid reserved bit');\n    \n    size_bytes = br.readBits(2);\n    if (size_bytes === 0)\n      return out;\n    \n    for (i = 0; i < size_bytes; i++) {\n      var next_byte = br.readBits(8);\n      if (i + 1 === size_bytes && size_bytes > 1 && next_byte === 0)\n        throw new Error('Invalid size byte');\n      \n      out.meta_block_length |= next_byte << (i * 8);\n    }\n  } else {\n    for (i = 0; i < size_nibbles; ++i) {\n      var next_nibble = br.readBits(4);\n      if (i + 1 === size_nibbles && size_nibbles > 4 && next_nibble === 0)\n        throw new Error('Invalid size nibble');\n      \n      out.meta_block_length |= next_nibble << (i * 4);\n    }\n  }\n  \n  ++out.meta_block_length;\n  \n  if (!out.input_end && !out.is_metadata) {\n    out.is_uncompressed = br.readBits(1);\n  }\n  \n  return out;\n}\n\n/* Decodes the next Huffman code from bit-stream. */\nfunction ReadSymbol(table, index, br) {\n  var start_index = index;\n  \n  var nbits;\n  br.fillBitWindow();\n  index += (br.val_ >>> br.bit_pos_) & HUFFMAN_TABLE_MASK;\n  nbits = table[index].bits - HUFFMAN_TABLE_BITS;\n  if (nbits > 0) {\n    br.bit_pos_ += HUFFMAN_TABLE_BITS;\n    index += table[index].value;\n    index += (br.val_ >>> br.bit_pos_) & ((1 << nbits) - 1);\n  }\n  br.bit_pos_ += table[index].bits;\n  return table[index].value;\n}\n\nfunction ReadHuffmanCodeLengths(code_length_code_lengths, num_symbols, code_lengths, br) {\n  var symbol = 0;\n  var prev_code_len = kDefaultCodeLength;\n  var repeat = 0;\n  var repeat_code_len = 0;\n  var space = 32768;\n  \n  var table = [];\n  for (var i = 0; i < 32; i++)\n    table.push(new HuffmanCode(0, 0));\n  \n  BrotliBuildHuffmanTable(table, 0, 5, code_length_code_lengths, CODE_LENGTH_CODES);\n\n  while (symbol < num_symbols && space > 0) {\n    var p = 0;\n    var code_len;\n    \n    br.readMoreInput();\n    br.fillBitWindow();\n    p += (br.val_ >>> br.bit_pos_) & 31;\n    br.bit_pos_ += table[p].bits;\n    code_len = table[p].value & 0xff;\n    if (code_len < kCodeLengthRepeatCode) {\n      repeat = 0;\n      code_lengths[symbol++] = code_len;\n      if (code_len !== 0) {\n        prev_code_len = code_len;\n        space -= 32768 >> code_len;\n      }\n    } else {\n      var extra_bits = code_len - 14;\n      var old_repeat;\n      var repeat_delta;\n      var new_len = 0;\n      if (code_len === kCodeLengthRepeatCode) {\n        new_len = prev_code_len;\n      }\n      if (repeat_code_len !== new_len) {\n        repeat = 0;\n        repeat_code_len = new_len;\n      }\n      old_repeat = repeat;\n      if (repeat > 0) {\n        repeat -= 2;\n        repeat <<= extra_bits;\n      }\n      repeat += br.readBits(extra_bits) + 3;\n      repeat_delta = repeat - old_repeat;\n      if (symbol + repeat_delta > num_symbols) {\n        throw new Error('[ReadHuffmanCodeLengths] symbol + repeat_delta > num_symbols');\n      }\n      \n      for (var x = 0; x < repeat_delta; x++)\n        code_lengths[symbol + x] = repeat_code_len;\n      \n      symbol += repeat_delta;\n      \n      if (repeat_code_len !== 0) {\n        space -= repeat_delta << (15 - repeat_code_len);\n      }\n    }\n  }\n  if (space !== 0) {\n    throw new Error(\"[ReadHuffmanCodeLengths] space = \" + space);\n  }\n  \n  for (; symbol < num_symbols; symbol++)\n    code_lengths[symbol] = 0;\n}\n\nfunction ReadHuffmanCode(alphabet_size, tables, table, br) {\n  var table_size = 0;\n  var simple_code_or_skip;\n  var code_lengths = new Uint8Array(alphabet_size);\n  \n  br.readMoreInput();\n  \n  /* simple_code_or_skip is used as follows:\n     1 for simple code;\n     0 for no skipping, 2 skips 2 code lengths, 3 skips 3 code lengths */\n  simple_code_or_skip = br.readBits(2);\n  if (simple_code_or_skip === 1) {\n    /* Read symbols, codes & code lengths directly. */\n    var i;\n    var max_bits_counter = alphabet_size - 1;\n    var max_bits = 0;\n    var symbols = new Int32Array(4);\n    var num_symbols = br.readBits(2) + 1;\n    while (max_bits_counter) {\n      max_bits_counter >>= 1;\n      ++max_bits;\n    }\n\n    for (i = 0; i < num_symbols; ++i) {\n      symbols[i] = br.readBits(max_bits) % alphabet_size;\n      code_lengths[symbols[i]] = 2;\n    }\n    code_lengths[symbols[0]] = 1;\n    switch (num_symbols) {\n      case 1:\n        break;\n      case 3:\n        if ((symbols[0] === symbols[1]) ||\n            (symbols[0] === symbols[2]) ||\n            (symbols[1] === symbols[2])) {\n          throw new Error('[ReadHuffmanCode] invalid symbols');\n        }\n        break;\n      case 2:\n        if (symbols[0] === symbols[1]) {\n          throw new Error('[ReadHuffmanCode] invalid symbols');\n        }\n        \n        code_lengths[symbols[1]] = 1;\n        break;\n      case 4:\n        if ((symbols[0] === symbols[1]) ||\n            (symbols[0] === symbols[2]) ||\n            (symbols[0] === symbols[3]) ||\n            (symbols[1] === symbols[2]) ||\n            (symbols[1] === symbols[3]) ||\n            (symbols[2] === symbols[3])) {\n          throw new Error('[ReadHuffmanCode] invalid symbols');\n        }\n        \n        if (br.readBits(1)) {\n          code_lengths[symbols[2]] = 3;\n          code_lengths[symbols[3]] = 3;\n        } else {\n          code_lengths[symbols[0]] = 2;\n        }\n        break;\n    }\n  } else {  /* Decode Huffman-coded code lengths. */\n    var i;\n    var code_length_code_lengths = new Uint8Array(CODE_LENGTH_CODES);\n    var space = 32;\n    var num_codes = 0;\n    /* Static Huffman code for the code length code lengths */\n    var huff = [\n      new HuffmanCode(2, 0), new HuffmanCode(2, 4), new HuffmanCode(2, 3), new HuffmanCode(3, 2), \n      new HuffmanCode(2, 0), new HuffmanCode(2, 4), new HuffmanCode(2, 3), new HuffmanCode(4, 1),\n      new HuffmanCode(2, 0), new HuffmanCode(2, 4), new HuffmanCode(2, 3), new HuffmanCode(3, 2), \n      new HuffmanCode(2, 0), new HuffmanCode(2, 4), new HuffmanCode(2, 3), new HuffmanCode(4, 5)\n    ];\n    for (i = simple_code_or_skip; i < CODE_LENGTH_CODES && space > 0; ++i) {\n      var code_len_idx = kCodeLengthCodeOrder[i];\n      var p = 0;\n      var v;\n      br.fillBitWindow();\n      p += (br.val_ >>> br.bit_pos_) & 15;\n      br.bit_pos_ += huff[p].bits;\n      v = huff[p].value;\n      code_length_code_lengths[code_len_idx] = v;\n      if (v !== 0) {\n        space -= (32 >> v);\n        ++num_codes;\n      }\n    }\n    \n    if (!(num_codes === 1 || space === 0))\n      throw new Error('[ReadHuffmanCode] invalid num_codes or space');\n    \n    ReadHuffmanCodeLengths(code_length_code_lengths, alphabet_size, code_lengths, br);\n  }\n  \n  table_size = BrotliBuildHuffmanTable(tables, table, HUFFMAN_TABLE_BITS, code_lengths, alphabet_size);\n  \n  if (table_size === 0) {\n    throw new Error(\"[ReadHuffmanCode] BuildHuffmanTable failed: \");\n  }\n  \n  return table_size;\n}\n\nfunction ReadBlockLength(table, index, br) {\n  var code;\n  var nbits;\n  code = ReadSymbol(table, index, br);\n  nbits = Prefix.kBlockLengthPrefixCode[code].nbits;\n  return Prefix.kBlockLengthPrefixCode[code].offset + br.readBits(nbits);\n}\n\nfunction TranslateShortCodes(code, ringbuffer, index) {\n  var val;\n  if (code < NUM_DISTANCE_SHORT_CODES) {\n    index += kDistanceShortCodeIndexOffset[code];\n    index &= 3;\n    val = ringbuffer[index] + kDistanceShortCodeValueOffset[code];\n  } else {\n    val = code - NUM_DISTANCE_SHORT_CODES + 1;\n  }\n  return val;\n}\n\nfunction MoveToFront(v, index) {\n  var value = v[index];\n  var i = index;\n  for (; i; --i) v[i] = v[i - 1];\n  v[0] = value;\n}\n\nfunction InverseMoveToFrontTransform(v, v_len) {\n  var mtf = new Uint8Array(256);\n  var i;\n  for (i = 0; i < 256; ++i) {\n    mtf[i] = i;\n  }\n  for (i = 0; i < v_len; ++i) {\n    var index = v[i];\n    v[i] = mtf[index];\n    if (index) MoveToFront(mtf, index);\n  }\n}\n\n/* Contains a collection of huffman trees with the same alphabet size. */\nfunction HuffmanTreeGroup(alphabet_size, num_htrees) {\n  this.alphabet_size = alphabet_size;\n  this.num_htrees = num_htrees;\n  this.codes = new Array(num_htrees + num_htrees * kMaxHuffmanTableSize[(alphabet_size + 31) >>> 5]);  \n  this.htrees = new Uint32Array(num_htrees);\n}\n\nHuffmanTreeGroup.prototype.decode = function(br) {\n  var i;\n  var table_size;\n  var next = 0;\n  for (i = 0; i < this.num_htrees; ++i) {\n    this.htrees[i] = next;\n    table_size = ReadHuffmanCode(this.alphabet_size, this.codes, next, br);\n    next += table_size;\n  }\n};\n\nfunction DecodeContextMap(context_map_size, br) {\n  var out = { num_htrees: null, context_map: null };\n  var use_rle_for_zeros;\n  var max_run_length_prefix = 0;\n  var table;\n  var i;\n  \n  br.readMoreInput();\n  var num_htrees = out.num_htrees = DecodeVarLenUint8(br) + 1;\n\n  var context_map = out.context_map = new Uint8Array(context_map_size);\n  if (num_htrees <= 1) {\n    return out;\n  }\n\n  use_rle_for_zeros = br.readBits(1);\n  if (use_rle_for_zeros) {\n    max_run_length_prefix = br.readBits(4) + 1;\n  }\n  \n  table = [];\n  for (i = 0; i < HUFFMAN_MAX_TABLE_SIZE; i++) {\n    table[i] = new HuffmanCode(0, 0);\n  }\n  \n  ReadHuffmanCode(num_htrees + max_run_length_prefix, table, 0, br);\n  \n  for (i = 0; i < context_map_size;) {\n    var code;\n\n    br.readMoreInput();\n    code = ReadSymbol(table, 0, br);\n    if (code === 0) {\n      context_map[i] = 0;\n      ++i;\n    } else if (code <= max_run_length_prefix) {\n      var reps = 1 + (1 << code) + br.readBits(code);\n      while (--reps) {\n        if (i >= context_map_size) {\n          throw new Error(\"[DecodeContextMap] i >= context_map_size\");\n        }\n        context_map[i] = 0;\n        ++i;\n      }\n    } else {\n      context_map[i] = code - max_run_length_prefix;\n      ++i;\n    }\n  }\n  if (br.readBits(1)) {\n    InverseMoveToFrontTransform(context_map, context_map_size);\n  }\n  \n  return out;\n}\n\nfunction DecodeBlockType(max_block_type, trees, tree_type, block_types, ringbuffers, indexes, br) {\n  var ringbuffer = tree_type * 2;\n  var index = tree_type;\n  var type_code = ReadSymbol(trees, tree_type * HUFFMAN_MAX_TABLE_SIZE, br);\n  var block_type;\n  if (type_code === 0) {\n    block_type = ringbuffers[ringbuffer + (indexes[index] & 1)];\n  } else if (type_code === 1) {\n    block_type = ringbuffers[ringbuffer + ((indexes[index] - 1) & 1)] + 1;\n  } else {\n    block_type = type_code - 2;\n  }\n  if (block_type >= max_block_type) {\n    block_type -= max_block_type;\n  }\n  block_types[tree_type] = block_type;\n  ringbuffers[ringbuffer + (indexes[index] & 1)] = block_type;\n  ++indexes[index];\n}\n\nfunction CopyUncompressedBlockToOutput(output, len, pos, ringbuffer, ringbuffer_mask, br) {\n  var rb_size = ringbuffer_mask + 1;\n  var rb_pos = pos & ringbuffer_mask;\n  var br_pos = br.pos_ & BrotliBitReader.IBUF_MASK;\n  var nbytes;\n\n  /* For short lengths copy byte-by-byte */\n  if (len < 8 || br.bit_pos_ + (len << 3) < br.bit_end_pos_) {\n    while (len-- > 0) {\n      br.readMoreInput();\n      ringbuffer[rb_pos++] = br.readBits(8);\n      if (rb_pos === rb_size) {\n        output.write(ringbuffer, rb_size);\n        rb_pos = 0;\n      }\n    }\n    return;\n  }\n\n  if (br.bit_end_pos_ < 32) {\n    throw new Error('[CopyUncompressedBlockToOutput] br.bit_end_pos_ < 32');\n  }\n\n  /* Copy remaining 0-4 bytes from br.val_ to ringbuffer. */\n  while (br.bit_pos_ < 32) {\n    ringbuffer[rb_pos] = (br.val_ >>> br.bit_pos_);\n    br.bit_pos_ += 8;\n    ++rb_pos;\n    --len;\n  }\n\n  /* Copy remaining bytes from br.buf_ to ringbuffer. */\n  nbytes = (br.bit_end_pos_ - br.bit_pos_) >> 3;\n  if (br_pos + nbytes > BrotliBitReader.IBUF_MASK) {\n    var tail = BrotliBitReader.IBUF_MASK + 1 - br_pos;\n    for (var x = 0; x < tail; x++)\n      ringbuffer[rb_pos + x] = br.buf_[br_pos + x];\n    \n    nbytes -= tail;\n    rb_pos += tail;\n    len -= tail;\n    br_pos = 0;\n  }\n\n  for (var x = 0; x < nbytes; x++)\n    ringbuffer[rb_pos + x] = br.buf_[br_pos + x];\n  \n  rb_pos += nbytes;\n  len -= nbytes;\n\n  /* If we wrote past the logical end of the ringbuffer, copy the tail of the\n     ringbuffer to its beginning and flush the ringbuffer to the output. */\n  if (rb_pos >= rb_size) {\n    output.write(ringbuffer, rb_size);\n    rb_pos -= rb_size;    \n    for (var x = 0; x < rb_pos; x++)\n      ringbuffer[x] = ringbuffer[rb_size + x];\n  }\n\n  /* If we have more to copy than the remaining size of the ringbuffer, then we\n     first fill the ringbuffer from the input and then flush the ringbuffer to\n     the output */\n  while (rb_pos + len >= rb_size) {\n    nbytes = rb_size - rb_pos;\n    if (br.input_.read(ringbuffer, rb_pos, nbytes) < nbytes) {\n      throw new Error('[CopyUncompressedBlockToOutput] not enough bytes');\n    }\n    output.write(ringbuffer, rb_size);\n    len -= nbytes;\n    rb_pos = 0;\n  }\n\n  /* Copy straight from the input onto the ringbuffer. The ringbuffer will be\n     flushed to the output at a later time. */\n  if (br.input_.read(ringbuffer, rb_pos, len) < len) {\n    throw new Error('[CopyUncompressedBlockToOutput] not enough bytes');\n  }\n\n  /* Restore the state of the bit reader. */\n  br.reset();\n}\n\n/* Advances the bit reader position to the next byte boundary and verifies\n   that any skipped bits are set to zero. */\nfunction JumpToByteBoundary(br) {\n  var new_bit_pos = (br.bit_pos_ + 7) & ~7;\n  var pad_bits = br.readBits(new_bit_pos - br.bit_pos_);\n  return pad_bits == 0;\n}\n\nfunction BrotliDecompressedSize(buffer) {\n  var input = new BrotliInput(buffer);\n  var br = new BrotliBitReader(input);\n  DecodeWindowBits(br);\n  var out = DecodeMetaBlockLength(br);\n  return out.meta_block_length;\n}\n\nexports.BrotliDecompressedSize = BrotliDecompressedSize;\n\nfunction BrotliDecompressBuffer(buffer, output_size) {\n  var input = new BrotliInput(buffer);\n  \n  if (output_size == null) {\n    output_size = BrotliDecompressedSize(buffer);\n  }\n  \n  var output_buffer = new Uint8Array(output_size);\n  var output = new BrotliOutput(output_buffer);\n  \n  BrotliDecompress(input, output);\n  \n  if (output.pos < output.buffer.length) {\n    output.buffer = output.buffer.subarray(0, output.pos);\n  }\n  \n  return output.buffer;\n}\n\nexports.BrotliDecompressBuffer = BrotliDecompressBuffer;\n\nfunction BrotliDecompress(input, output) {\n  var i;\n  var pos = 0;\n  var input_end = 0;\n  var window_bits = 0;\n  var max_backward_distance;\n  var max_distance = 0;\n  var ringbuffer_size;\n  var ringbuffer_mask;\n  var ringbuffer;\n  var ringbuffer_end;\n  /* This ring buffer holds a few past copy distances that will be used by */\n  /* some special distance codes. */\n  var dist_rb = [ 16, 15, 11, 4 ];\n  var dist_rb_idx = 0;\n  /* The previous 2 bytes used for context. */\n  var prev_byte1 = 0;\n  var prev_byte2 = 0;\n  var hgroup = [new HuffmanTreeGroup(0, 0), new HuffmanTreeGroup(0, 0), new HuffmanTreeGroup(0, 0)];\n  var block_type_trees;\n  var block_len_trees;\n  var br;\n\n  /* We need the slack region for the following reasons:\n       - always doing two 8-byte copies for fast backward copying\n       - transforms\n       - flushing the input ringbuffer when decoding uncompressed blocks */\n  var kRingBufferWriteAheadSlack = 128 + BrotliBitReader.READ_SIZE;\n\n  br = new BrotliBitReader(input);\n\n  /* Decode window size. */\n  window_bits = DecodeWindowBits(br);\n  max_backward_distance = (1 << window_bits) - 16;\n\n  ringbuffer_size = 1 << window_bits;\n  ringbuffer_mask = ringbuffer_size - 1;\n  ringbuffer = new Uint8Array(ringbuffer_size + kRingBufferWriteAheadSlack + BrotliDictionary.maxDictionaryWordLength);\n  ringbuffer_end = ringbuffer_size;\n\n  block_type_trees = [];\n  block_len_trees = [];\n  for (var x = 0; x < 3 * HUFFMAN_MAX_TABLE_SIZE; x++) {\n    block_type_trees[x] = new HuffmanCode(0, 0);\n    block_len_trees[x] = new HuffmanCode(0, 0);\n  }\n\n  while (!input_end) {\n    var meta_block_remaining_len = 0;\n    var is_uncompressed;\n    var block_length = [ 1 << 28, 1 << 28, 1 << 28 ];\n    var block_type = [ 0 ];\n    var num_block_types = [ 1, 1, 1 ];\n    var block_type_rb = [ 0, 1, 0, 1, 0, 1 ];\n    var block_type_rb_index = [ 0 ];\n    var distance_postfix_bits;\n    var num_direct_distance_codes;\n    var distance_postfix_mask;\n    var num_distance_codes;\n    var context_map = null;\n    var context_modes = null;\n    var num_literal_htrees;\n    var dist_context_map = null;\n    var num_dist_htrees;\n    var context_offset = 0;\n    var context_map_slice = null;\n    var literal_htree_index = 0;\n    var dist_context_offset = 0;\n    var dist_context_map_slice = null;\n    var dist_htree_index = 0;\n    var context_lookup_offset1 = 0;\n    var context_lookup_offset2 = 0;\n    var context_mode;\n    var htree_command;\n\n    for (i = 0; i < 3; ++i) {\n      hgroup[i].codes = null;\n      hgroup[i].htrees = null;\n    }\n\n    br.readMoreInput();\n    \n    var _out = DecodeMetaBlockLength(br);\n    meta_block_remaining_len = _out.meta_block_length;\n    if (pos + meta_block_remaining_len > output.buffer.length) {\n      /* We need to grow the output buffer to fit the additional data. */\n      var tmp = new Uint8Array( pos + meta_block_remaining_len );\n      tmp.set( output.buffer );\n      output.buffer = tmp;\n    }    \n    input_end = _out.input_end;\n    is_uncompressed = _out.is_uncompressed;\n    \n    if (_out.is_metadata) {\n      JumpToByteBoundary(br);\n      \n      for (; meta_block_remaining_len > 0; --meta_block_remaining_len) {\n        br.readMoreInput();\n        /* Read one byte and ignore it. */\n        br.readBits(8);\n      }\n      \n      continue;\n    }\n    \n    if (meta_block_remaining_len === 0) {\n      continue;\n    }\n    \n    if (is_uncompressed) {\n      br.bit_pos_ = (br.bit_pos_ + 7) & ~7;\n      CopyUncompressedBlockToOutput(output, meta_block_remaining_len, pos,\n                                    ringbuffer, ringbuffer_mask, br);\n      pos += meta_block_remaining_len;\n      continue;\n    }\n    \n    for (i = 0; i < 3; ++i) {\n      num_block_types[i] = DecodeVarLenUint8(br) + 1;\n      if (num_block_types[i] >= 2) {\n        ReadHuffmanCode(num_block_types[i] + 2, block_type_trees, i * HUFFMAN_MAX_TABLE_SIZE, br);\n        ReadHuffmanCode(kNumBlockLengthCodes, block_len_trees, i * HUFFMAN_MAX_TABLE_SIZE, br);\n        block_length[i] = ReadBlockLength(block_len_trees, i * HUFFMAN_MAX_TABLE_SIZE, br);\n        block_type_rb_index[i] = 1;\n      }\n    }\n    \n    br.readMoreInput();\n    \n    distance_postfix_bits = br.readBits(2);\n    num_direct_distance_codes = NUM_DISTANCE_SHORT_CODES + (br.readBits(4) << distance_postfix_bits);\n    distance_postfix_mask = (1 << distance_postfix_bits) - 1;\n    num_distance_codes = (num_direct_distance_codes + (48 << distance_postfix_bits));\n    context_modes = new Uint8Array(num_block_types[0]);\n\n    for (i = 0; i < num_block_types[0]; ++i) {\n       br.readMoreInput();\n       context_modes[i] = (br.readBits(2) << 1);\n    }\n    \n    var _o1 = DecodeContextMap(num_block_types[0] << kLiteralContextBits, br);\n    num_literal_htrees = _o1.num_htrees;\n    context_map = _o1.context_map;\n    \n    var _o2 = DecodeContextMap(num_block_types[2] << kDistanceContextBits, br);\n    num_dist_htrees = _o2.num_htrees;\n    dist_context_map = _o2.context_map;\n    \n    hgroup[0] = new HuffmanTreeGroup(kNumLiteralCodes, num_literal_htrees);\n    hgroup[1] = new HuffmanTreeGroup(kNumInsertAndCopyCodes, num_block_types[1]);\n    hgroup[2] = new HuffmanTreeGroup(num_distance_codes, num_dist_htrees);\n\n    for (i = 0; i < 3; ++i) {\n      hgroup[i].decode(br);\n    }\n\n    context_map_slice = 0;\n    dist_context_map_slice = 0;\n    context_mode = context_modes[block_type[0]];\n    context_lookup_offset1 = Context.lookupOffsets[context_mode];\n    context_lookup_offset2 = Context.lookupOffsets[context_mode + 1];\n    htree_command = hgroup[1].htrees[0];\n\n    while (meta_block_remaining_len > 0) {\n      var cmd_code;\n      var range_idx;\n      var insert_code;\n      var copy_code;\n      var insert_length;\n      var copy_length;\n      var distance_code;\n      var distance;\n      var context;\n      var j;\n      var copy_dst;\n\n      br.readMoreInput();\n      \n      if (block_length[1] === 0) {\n        DecodeBlockType(num_block_types[1],\n                        block_type_trees, 1, block_type, block_type_rb,\n                        block_type_rb_index, br);\n        block_length[1] = ReadBlockLength(block_len_trees, HUFFMAN_MAX_TABLE_SIZE, br);\n        htree_command = hgroup[1].htrees[block_type[1]];\n      }\n      --block_length[1];\n      cmd_code = ReadSymbol(hgroup[1].codes, htree_command, br);\n      range_idx = cmd_code >> 6;\n      if (range_idx >= 2) {\n        range_idx -= 2;\n        distance_code = -1;\n      } else {\n        distance_code = 0;\n      }\n      insert_code = Prefix.kInsertRangeLut[range_idx] + ((cmd_code >> 3) & 7);\n      copy_code = Prefix.kCopyRangeLut[range_idx] + (cmd_code & 7);\n      insert_length = Prefix.kInsertLengthPrefixCode[insert_code].offset +\n          br.readBits(Prefix.kInsertLengthPrefixCode[insert_code].nbits);\n      copy_length = Prefix.kCopyLengthPrefixCode[copy_code].offset +\n          br.readBits(Prefix.kCopyLengthPrefixCode[copy_code].nbits);\n      prev_byte1 = ringbuffer[pos-1 & ringbuffer_mask];\n      prev_byte2 = ringbuffer[pos-2 & ringbuffer_mask];\n      for (j = 0; j < insert_length; ++j) {\n        br.readMoreInput();\n\n        if (block_length[0] === 0) {\n          DecodeBlockType(num_block_types[0],\n                          block_type_trees, 0, block_type, block_type_rb,\n                          block_type_rb_index, br);\n          block_length[0] = ReadBlockLength(block_len_trees, 0, br);\n          context_offset = block_type[0] << kLiteralContextBits;\n          context_map_slice = context_offset;\n          context_mode = context_modes[block_type[0]];\n          context_lookup_offset1 = Context.lookupOffsets[context_mode];\n          context_lookup_offset2 = Context.lookupOffsets[context_mode + 1];\n        }\n        context = (Context.lookup[context_lookup_offset1 + prev_byte1] |\n                   Context.lookup[context_lookup_offset2 + prev_byte2]);\n        literal_htree_index = context_map[context_map_slice + context];\n        --block_length[0];\n        prev_byte2 = prev_byte1;\n        prev_byte1 = ReadSymbol(hgroup[0].codes, hgroup[0].htrees[literal_htree_index], br);\n        ringbuffer[pos & ringbuffer_mask] = prev_byte1;\n        if ((pos & ringbuffer_mask) === ringbuffer_mask) {\n          output.write(ringbuffer, ringbuffer_size);\n        }\n        ++pos;\n      }\n      meta_block_remaining_len -= insert_length;\n      if (meta_block_remaining_len <= 0) break;\n\n      if (distance_code < 0) {\n        var context;\n        \n        br.readMoreInput();\n        if (block_length[2] === 0) {\n          DecodeBlockType(num_block_types[2],\n                          block_type_trees, 2, block_type, block_type_rb,\n                          block_type_rb_index, br);\n          block_length[2] = ReadBlockLength(block_len_trees, 2 * HUFFMAN_MAX_TABLE_SIZE, br);\n          dist_context_offset = block_type[2] << kDistanceContextBits;\n          dist_context_map_slice = dist_context_offset;\n        }\n        --block_length[2];\n        context = (copy_length > 4 ? 3 : copy_length - 2) & 0xff;\n        dist_htree_index = dist_context_map[dist_context_map_slice + context];\n        distance_code = ReadSymbol(hgroup[2].codes, hgroup[2].htrees[dist_htree_index], br);\n        if (distance_code >= num_direct_distance_codes) {\n          var nbits;\n          var postfix;\n          var offset;\n          distance_code -= num_direct_distance_codes;\n          postfix = distance_code & distance_postfix_mask;\n          distance_code >>= distance_postfix_bits;\n          nbits = (distance_code >> 1) + 1;\n          offset = ((2 + (distance_code & 1)) << nbits) - 4;\n          distance_code = num_direct_distance_codes +\n              ((offset + br.readBits(nbits)) <<\n               distance_postfix_bits) + postfix;\n        }\n      }\n\n      /* Convert the distance code to the actual distance by possibly looking */\n      /* up past distnaces from the ringbuffer. */\n      distance = TranslateShortCodes(distance_code, dist_rb, dist_rb_idx);\n      if (distance < 0) {\n        throw new Error('[BrotliDecompress] invalid distance');\n      }\n\n      if (pos < max_backward_distance &&\n          max_distance !== max_backward_distance) {\n        max_distance = pos;\n      } else {\n        max_distance = max_backward_distance;\n      }\n\n      copy_dst = pos & ringbuffer_mask;\n\n      if (distance > max_distance) {\n        if (copy_length >= BrotliDictionary.minDictionaryWordLength &&\n            copy_length <= BrotliDictionary.maxDictionaryWordLength) {\n          var offset = BrotliDictionary.offsetsByLength[copy_length];\n          var word_id = distance - max_distance - 1;\n          var shift = BrotliDictionary.sizeBitsByLength[copy_length];\n          var mask = (1 << shift) - 1;\n          var word_idx = word_id & mask;\n          var transform_idx = word_id >> shift;\n          offset += word_idx * copy_length;\n          if (transform_idx < Transform.kNumTransforms) {\n            var len = Transform.transformDictionaryWord(ringbuffer, copy_dst, offset, copy_length, transform_idx);\n            copy_dst += len;\n            pos += len;\n            meta_block_remaining_len -= len;\n            if (copy_dst >= ringbuffer_end) {\n              output.write(ringbuffer, ringbuffer_size);\n              \n              for (var _x = 0; _x < (copy_dst - ringbuffer_end); _x++)\n                ringbuffer[_x] = ringbuffer[ringbuffer_end + _x];\n            }\n          } else {\n            throw new Error(\"Invalid backward reference. pos: \" + pos + \" distance: \" + distance +\n              \" len: \" + copy_length + \" bytes left: \" + meta_block_remaining_len);\n          }\n        } else {\n          throw new Error(\"Invalid backward reference. pos: \" + pos + \" distance: \" + distance +\n            \" len: \" + copy_length + \" bytes left: \" + meta_block_remaining_len);\n        }\n      } else {\n        if (distance_code > 0) {\n          dist_rb[dist_rb_idx & 3] = distance;\n          ++dist_rb_idx;\n        }\n\n        if (copy_length > meta_block_remaining_len) {\n          throw new Error(\"Invalid backward reference. pos: \" + pos + \" distance: \" + distance +\n            \" len: \" + copy_length + \" bytes left: \" + meta_block_remaining_len);\n        }\n\n        for (j = 0; j < copy_length; ++j) {\n          ringbuffer[pos & ringbuffer_mask] = ringbuffer[(pos - distance) & ringbuffer_mask];\n          if ((pos & ringbuffer_mask) === ringbuffer_mask) {\n            output.write(ringbuffer, ringbuffer_size);\n          }\n          ++pos;\n          --meta_block_remaining_len;\n        }\n      }\n\n      /* When we get here, we must have inserted at least one literal and */\n      /* made a copy of at least length two, therefore accessing the last 2 */\n      /* bytes is valid. */\n      prev_byte1 = ringbuffer[(pos - 1) & ringbuffer_mask];\n      prev_byte2 = ringbuffer[(pos - 2) & ringbuffer_mask];\n    }\n\n    /* Protect pos from overflow, wrap it around at every GB of input data */\n    pos &= 0x3fffffff;\n  }\n\n  output.write(ringbuffer, pos & ringbuffer_mask);\n}\n\nexports.BrotliDecompress = BrotliDecompress;\n\nBrotliDictionary.init();\n", "var base64 = require('base64-js');\n\n/**\n * The normal dictionary-data.js is quite large, which makes it \n * unsuitable for browser usage. In order to make it smaller, \n * we read dictionary.bin, which is a compressed version of\n * the dictionary, and on initial load, Brotli decompresses \n * it's own dictionary. 😜\n */\nexports.init = function() {\n  var BrotliDecompressBuffer = require('./decode').BrotliDecompressBuffer;\n  var compressed = base64.toByteArray(require('./dictionary.bin.js'));\n  return BrotliDecompressBuffer(compressed);\n};\n", "module.exports=\"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\";\n", "/* Copyright 2013 Google Inc. All Rights Reserved.\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n   http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n\n   Collection of static dictionary words.\n*/\n\nvar data = require('./dictionary-data');\nexports.init = function() {\n  exports.dictionary = data.init();\n};\n\nexports.offsetsByLength = new Uint32Array([\n     0,     0,     0,     0,     0,  4096,  9216, 21504, 35840, 44032,\n 53248, 63488, 74752, 87040, 93696, 100864, 104704, 106752, 108928, 113536,\n 115968, 118528, 119872, 121280, 122016,\n]);\n\nexports.sizeBitsByLength = new Uint8Array([\n  0,  0,  0,  0, 10, 10, 11, 11, 10, 10,\n 10, 10, 10,  9,  9,  8,  7,  7,  8,  7,\n  7,  6,  6,  5,  5,\n]);\n\nexports.minDictionaryWordLength = 4;\nexports.maxDictionaryWordLength = 24;\n", "function HuffmanCode(bits, value) {\n  this.bits = bits;   /* number of bits used for this symbol */\n  this.value = value; /* symbol value or table offset */\n}\n\nexports.HuffmanCode = HuffmanCode;\n\nvar MAX_LENGTH = 15;\n\n/* Returns reverse(reverse(key, len) + 1, len), where reverse(key, len) is the\n   bit-wise reversal of the len least significant bits of key. */\nfunction GetNextKey(key, len) {\n  var step = 1 << (len - 1);\n  while (key & step) {\n    step >>= 1;\n  }\n  return (key & (step - 1)) + step;\n}\n\n/* Stores code in table[0], table[step], table[2*step], ..., table[end] */\n/* Assumes that end is an integer multiple of step */\nfunction ReplicateValue(table, i, step, end, code) {\n  do {\n    end -= step;\n    table[i + end] = new HuffmanCode(code.bits, code.value);\n  } while (end > 0);\n}\n\n/* Returns the table width of the next 2nd level table. count is the histogram\n   of bit lengths for the remaining symbols, len is the code length of the next\n   processed symbol */\nfunction NextTableBitSize(count, len, root_bits) {\n  var left = 1 << (len - root_bits);\n  while (len < MAX_LENGTH) {\n    left -= count[len];\n    if (left <= 0) break;\n    ++len;\n    left <<= 1;\n  }\n  return len - root_bits;\n}\n\nexports.BrotliBuildHuffmanTable = function(root_table, table, root_bits, code_lengths, code_lengths_size) {\n  var start_table = table;\n  var code;            /* current table entry */\n  var len;             /* current code length */\n  var symbol;          /* symbol index in original or sorted table */\n  var key;             /* reversed prefix code */\n  var step;            /* step size to replicate values in current table */\n  var low;             /* low bits for current root entry */\n  var mask;            /* mask for low bits */\n  var table_bits;      /* key length of current table */\n  var table_size;      /* size of current table */\n  var total_size;      /* sum of root table size and 2nd level table sizes */\n  var sorted;          /* symbols sorted by code length */\n  var count = new Int32Array(MAX_LENGTH + 1);  /* number of codes of each length */\n  var offset = new Int32Array(MAX_LENGTH + 1);  /* offsets in sorted table for each length */\n\n  sorted = new Int32Array(code_lengths_size);\n\n  /* build histogram of code lengths */\n  for (symbol = 0; symbol < code_lengths_size; symbol++) {\n    count[code_lengths[symbol]]++;\n  }\n\n  /* generate offsets into sorted symbol table by code length */\n  offset[1] = 0;\n  for (len = 1; len < MAX_LENGTH; len++) {\n    offset[len + 1] = offset[len] + count[len];\n  }\n\n  /* sort symbols by length, by symbol order within each length */\n  for (symbol = 0; symbol < code_lengths_size; symbol++) {\n    if (code_lengths[symbol] !== 0) {\n      sorted[offset[code_lengths[symbol]]++] = symbol;\n    }\n  }\n  \n  table_bits = root_bits;\n  table_size = 1 << table_bits;\n  total_size = table_size;\n\n  /* special case code with only one value */\n  if (offset[MAX_LENGTH] === 1) {\n    for (key = 0; key < total_size; ++key) {\n      root_table[table + key] = new HuffmanCode(0, sorted[0] & 0xffff);\n    }\n    \n    return total_size;\n  }\n\n  /* fill in root table */\n  key = 0;\n  symbol = 0;\n  for (len = 1, step = 2; len <= root_bits; ++len, step <<= 1) {\n    for (; count[len] > 0; --count[len]) {\n      code = new HuffmanCode(len & 0xff, sorted[symbol++] & 0xffff);\n      ReplicateValue(root_table, table + key, step, table_size, code);\n      key = GetNextKey(key, len);\n    }\n  }\n\n  /* fill in 2nd level tables and add pointers to root table */\n  mask = total_size - 1;\n  low = -1;\n  for (len = root_bits + 1, step = 2; len <= MAX_LENGTH; ++len, step <<= 1) {\n    for (; count[len] > 0; --count[len]) {\n      if ((key & mask) !== low) {\n        table += table_size;\n        table_bits = NextTableBitSize(count, len, root_bits);\n        table_size = 1 << table_bits;\n        total_size += table_size;\n        low = key & mask;\n        root_table[start_table + low] = new HuffmanCode((table_bits + root_bits) & 0xff, ((table - start_table) - low) & 0xffff);\n      }\n      code = new HuffmanCode((len - root_bits) & 0xff, sorted[symbol++] & 0xffff);\n      ReplicateValue(root_table, table + (key >> root_bits), step, table_size, code);\n      key = GetNextKey(key, len);\n    }\n  }\n  \n  return total_size;\n}\n", "/* Copyright 2013 Google Inc. All Rights Reserved.\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n   http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n\n   Lookup tables to map prefix codes to value ranges. This is used during\n   decoding of the block lengths, literal insertion lengths and copy lengths.\n*/\n\n/* Represents the range of values belonging to a prefix code: */\n/* [offset, offset + 2^nbits) */\nfunction PrefixCodeRange(offset, nbits) {\n  this.offset = offset;\n  this.nbits = nbits;\n}\n\nexports.kBlockLengthPrefixCode = [\n  new PrefixCodeRange(1, 2), new PrefixCodeRange(5, 2), new PrefixCodeRange(9, 2), new PrefixCodeRange(13, 2),\n  new PrefixCodeRange(17, 3), new PrefixCodeRange(25, 3), new PrefixCodeRange(33, 3), new PrefixCodeRange(41, 3),\n  new PrefixCodeRange(49, 4), new PrefixCodeRange(65, 4), new PrefixCodeRange(81, 4), new PrefixCodeRange(97, 4),\n  new PrefixCodeRange(113, 5), new PrefixCodeRange(145, 5), new PrefixCodeRange(177, 5), new PrefixCodeRange(209, 5),\n  new PrefixCodeRange(241, 6), new PrefixCodeRange(305, 6), new PrefixCodeRange(369, 7), new PrefixCodeRange(497, 8),\n  new PrefixCodeRange(753, 9), new PrefixCodeRange(1265, 10), new PrefixCodeRange(2289, 11), new PrefixCodeRange(4337, 12),\n  new PrefixCodeRange(8433, 13), new PrefixCodeRange(16625, 24)\n];\n\nexports.kInsertLengthPrefixCode = [\n  new PrefixCodeRange(0, 0), new PrefixCodeRange(1, 0), new PrefixCodeRange(2, 0), new PrefixCodeRange(3, 0),\n  new PrefixCodeRange(4, 0), new PrefixCodeRange(5, 0), new PrefixCodeRange(6, 1), new PrefixCodeRange(8, 1),\n  new PrefixCodeRange(10, 2), new PrefixCodeRange(14, 2), new PrefixCodeRange(18, 3), new PrefixCodeRange(26, 3),\n  new PrefixCodeRange(34, 4), new PrefixCodeRange(50, 4), new PrefixCodeRange(66, 5), new PrefixCodeRange(98, 5),\n  new PrefixCodeRange(130, 6), new PrefixCodeRange(194, 7), new PrefixCodeRange(322, 8), new PrefixCodeRange(578, 9),\n  new PrefixCodeRange(1090, 10), new PrefixCodeRange(2114, 12), new PrefixCodeRange(6210, 14), new PrefixCodeRange(22594, 24),\n];\n\nexports.kCopyLengthPrefixCode = [\n  new PrefixCodeRange(2, 0), new PrefixCodeRange(3, 0), new PrefixCodeRange(4, 0), new PrefixCodeRange(5, 0),\n  new PrefixCodeRange(6, 0), new PrefixCodeRange(7, 0), new PrefixCodeRange(8, 0), new PrefixCodeRange(9, 0),\n  new PrefixCodeRange(10, 1), new PrefixCodeRange(12, 1), new PrefixCodeRange(14, 2), new PrefixCodeRange(18, 2),\n  new PrefixCodeRange(22, 3), new PrefixCodeRange(30, 3), new PrefixCodeRange(38, 4), new PrefixCodeRange(54, 4),\n  new PrefixCodeRange(70, 5), new PrefixCodeRange(102, 5), new PrefixCodeRange(134, 6), new PrefixCodeRange(198, 7),\n  new PrefixCodeRange(326, 8), new PrefixCodeRange(582, 9), new PrefixCodeRange(1094, 10), new PrefixCodeRange(2118, 24),\n];\n\nexports.kInsertRangeLut = [\n  0, 0, 8, 8, 0, 16, 8, 16, 16,\n];\n\nexports.kCopyRangeLut = [\n  0, 8, 0, 8, 16, 0, 16, 8, 16,\n];\n", "function BrotliInput(buffer) {\n  this.buffer = buffer;\n  this.pos = 0;\n}\n\nBrotliInput.prototype.read = function(buf, i, count) {\n  if (this.pos + count > this.buffer.length) {\n    count = this.buffer.length - this.pos;\n  }\n  \n  for (var p = 0; p < count; p++)\n    buf[i + p] = this.buffer[this.pos + p];\n  \n  this.pos += count;\n  return count;\n}\n\nexports.BrotliInput = BrotliInput;\n\nfunction BrotliOutput(buf) {\n  this.buffer = buf;\n  this.pos = 0;\n}\n\nBrotliOutput.prototype.write = function(buf, count) {\n  if (this.pos + count > this.buffer.length)\n    throw new Error('Output buffer is not large enough');\n  \n  this.buffer.set(buf.subarray(0, count), this.pos);\n  this.pos += count;\n  return count;\n};\n\nexports.BrotliOutput = BrotliOutput;\n", "/* Copyright 2013 Google Inc. All Rights Reserved.\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n   http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n\n   Transformations on dictionary words.\n*/\n\nvar BrotliDictionary = require('./dictionary');\n\nvar kIdentity       = 0;\nvar kOmitLast1      = 1;\nvar kOmitLast2      = 2;\nvar kOmitLast3      = 3;\nvar kOmitLast4      = 4;\nvar kOmitLast5      = 5;\nvar kOmitLast6      = 6;\nvar kOmitLast7      = 7;\nvar kOmitLast8      = 8;\nvar kOmitLast9      = 9;\nvar kUppercaseFirst = 10;\nvar kUppercaseAll   = 11;\nvar kOmitFirst1     = 12;\nvar kOmitFirst2     = 13;\nvar kOmitFirst3     = 14;\nvar kOmitFirst4     = 15;\nvar kOmitFirst5     = 16;\nvar kOmitFirst6     = 17;\nvar kOmitFirst7     = 18;\nvar kOmitFirst8     = 19;\nvar kOmitFirst9     = 20;\n\nfunction Transform(prefix, transform, suffix) {\n  this.prefix = new Uint8Array(prefix.length);\n  this.transform = transform;\n  this.suffix = new Uint8Array(suffix.length);\n  \n  for (var i = 0; i < prefix.length; i++)\n    this.prefix[i] = prefix.charCodeAt(i);\n  \n  for (var i = 0; i < suffix.length; i++)\n    this.suffix[i] = suffix.charCodeAt(i);\n}\n\nvar kTransforms = [\n     new Transform(         \"\", kIdentity,       \"\"           ),\n     new Transform(         \"\", kIdentity,       \" \"          ),\n     new Transform(        \" \", kIdentity,       \" \"          ),\n     new Transform(         \"\", kOmitFirst1,     \"\"           ),\n     new Transform(         \"\", kUppercaseFirst, \" \"          ),\n     new Transform(         \"\", kIdentity,       \" the \"      ),\n     new Transform(        \" \", kIdentity,       \"\"           ),\n     new Transform(       \"s \", kIdentity,       \" \"          ),\n     new Transform(         \"\", kIdentity,       \" of \"       ),\n     new Transform(         \"\", kUppercaseFirst, \"\"           ),\n     new Transform(         \"\", kIdentity,       \" and \"      ),\n     new Transform(         \"\", kOmitFirst2,     \"\"           ),\n     new Transform(         \"\", kOmitLast1,      \"\"           ),\n     new Transform(       \", \", kIdentity,       \" \"          ),\n     new Transform(         \"\", kIdentity,       \", \"         ),\n     new Transform(        \" \", kUppercaseFirst, \" \"          ),\n     new Transform(         \"\", kIdentity,       \" in \"       ),\n     new Transform(         \"\", kIdentity,       \" to \"       ),\n     new Transform(       \"e \", kIdentity,       \" \"          ),\n     new Transform(         \"\", kIdentity,       \"\\\"\"         ),\n     new Transform(         \"\", kIdentity,       \".\"          ),\n     new Transform(         \"\", kIdentity,       \"\\\">\"        ),\n     new Transform(         \"\", kIdentity,       \"\\n\"         ),\n     new Transform(         \"\", kOmitLast3,      \"\"           ),\n     new Transform(         \"\", kIdentity,       \"]\"          ),\n     new Transform(         \"\", kIdentity,       \" for \"      ),\n     new Transform(         \"\", kOmitFirst3,     \"\"           ),\n     new Transform(         \"\", kOmitLast2,      \"\"           ),\n     new Transform(         \"\", kIdentity,       \" a \"        ),\n     new Transform(         \"\", kIdentity,       \" that \"     ),\n     new Transform(        \" \", kUppercaseFirst, \"\"           ),\n     new Transform(         \"\", kIdentity,       \". \"         ),\n     new Transform(        \".\", kIdentity,       \"\"           ),\n     new Transform(        \" \", kIdentity,       \", \"         ),\n     new Transform(         \"\", kOmitFirst4,     \"\"           ),\n     new Transform(         \"\", kIdentity,       \" with \"     ),\n     new Transform(         \"\", kIdentity,       \"'\"          ),\n     new Transform(         \"\", kIdentity,       \" from \"     ),\n     new Transform(         \"\", kIdentity,       \" by \"       ),\n     new Transform(         \"\", kOmitFirst5,     \"\"           ),\n     new Transform(         \"\", kOmitFirst6,     \"\"           ),\n     new Transform(    \" the \", kIdentity,       \"\"           ),\n     new Transform(         \"\", kOmitLast4,      \"\"           ),\n     new Transform(         \"\", kIdentity,       \". The \"     ),\n     new Transform(         \"\", kUppercaseAll,   \"\"           ),\n     new Transform(         \"\", kIdentity,       \" on \"       ),\n     new Transform(         \"\", kIdentity,       \" as \"       ),\n     new Transform(         \"\", kIdentity,       \" is \"       ),\n     new Transform(         \"\", kOmitLast7,      \"\"           ),\n     new Transform(         \"\", kOmitLast1,      \"ing \"       ),\n     new Transform(         \"\", kIdentity,       \"\\n\\t\"       ),\n     new Transform(         \"\", kIdentity,       \":\"          ),\n     new Transform(        \" \", kIdentity,       \". \"         ),\n     new Transform(         \"\", kIdentity,       \"ed \"        ),\n     new Transform(         \"\", kOmitFirst9,     \"\"           ),\n     new Transform(         \"\", kOmitFirst7,     \"\"           ),\n     new Transform(         \"\", kOmitLast6,      \"\"           ),\n     new Transform(         \"\", kIdentity,       \"(\"          ),\n     new Transform(         \"\", kUppercaseFirst, \", \"         ),\n     new Transform(         \"\", kOmitLast8,      \"\"           ),\n     new Transform(         \"\", kIdentity,       \" at \"       ),\n     new Transform(         \"\", kIdentity,       \"ly \"        ),\n     new Transform(    \" the \", kIdentity,       \" of \"       ),\n     new Transform(         \"\", kOmitLast5,      \"\"           ),\n     new Transform(         \"\", kOmitLast9,      \"\"           ),\n     new Transform(        \" \", kUppercaseFirst, \", \"         ),\n     new Transform(         \"\", kUppercaseFirst, \"\\\"\"         ),\n     new Transform(        \".\", kIdentity,       \"(\"          ),\n     new Transform(         \"\", kUppercaseAll,   \" \"          ),\n     new Transform(         \"\", kUppercaseFirst, \"\\\">\"        ),\n     new Transform(         \"\", kIdentity,       \"=\\\"\"        ),\n     new Transform(        \" \", kIdentity,       \".\"          ),\n     new Transform(    \".com/\", kIdentity,       \"\"           ),\n     new Transform(    \" the \", kIdentity,       \" of the \"   ),\n     new Transform(         \"\", kUppercaseFirst, \"'\"          ),\n     new Transform(         \"\", kIdentity,       \". This \"    ),\n     new Transform(         \"\", kIdentity,       \",\"          ),\n     new Transform(        \".\", kIdentity,       \" \"          ),\n     new Transform(         \"\", kUppercaseFirst, \"(\"          ),\n     new Transform(         \"\", kUppercaseFirst, \".\"          ),\n     new Transform(         \"\", kIdentity,       \" not \"      ),\n     new Transform(        \" \", kIdentity,       \"=\\\"\"        ),\n     new Transform(         \"\", kIdentity,       \"er \"        ),\n     new Transform(        \" \", kUppercaseAll,   \" \"          ),\n     new Transform(         \"\", kIdentity,       \"al \"        ),\n     new Transform(        \" \", kUppercaseAll,   \"\"           ),\n     new Transform(         \"\", kIdentity,       \"='\"         ),\n     new Transform(         \"\", kUppercaseAll,   \"\\\"\"         ),\n     new Transform(         \"\", kUppercaseFirst, \". \"         ),\n     new Transform(        \" \", kIdentity,       \"(\"          ),\n     new Transform(         \"\", kIdentity,       \"ful \"       ),\n     new Transform(        \" \", kUppercaseFirst, \". \"         ),\n     new Transform(         \"\", kIdentity,       \"ive \"       ),\n     new Transform(         \"\", kIdentity,       \"less \"      ),\n     new Transform(         \"\", kUppercaseAll,   \"'\"          ),\n     new Transform(         \"\", kIdentity,       \"est \"       ),\n     new Transform(        \" \", kUppercaseFirst, \".\"          ),\n     new Transform(         \"\", kUppercaseAll,   \"\\\">\"        ),\n     new Transform(        \" \", kIdentity,       \"='\"         ),\n     new Transform(         \"\", kUppercaseFirst, \",\"          ),\n     new Transform(         \"\", kIdentity,       \"ize \"       ),\n     new Transform(         \"\", kUppercaseAll,   \".\"          ),\n     new Transform( \"\\xc2\\xa0\", kIdentity,       \"\"           ),\n     new Transform(        \" \", kIdentity,       \",\"          ),\n     new Transform(         \"\", kUppercaseFirst, \"=\\\"\"        ),\n     new Transform(         \"\", kUppercaseAll,   \"=\\\"\"        ),\n     new Transform(         \"\", kIdentity,       \"ous \"       ),\n     new Transform(         \"\", kUppercaseAll,   \", \"         ),\n     new Transform(         \"\", kUppercaseFirst, \"='\"         ),\n     new Transform(        \" \", kUppercaseFirst, \",\"          ),\n     new Transform(        \" \", kUppercaseAll,   \"=\\\"\"        ),\n     new Transform(        \" \", kUppercaseAll,   \", \"         ),\n     new Transform(         \"\", kUppercaseAll,   \",\"          ),\n     new Transform(         \"\", kUppercaseAll,   \"(\"          ),\n     new Transform(         \"\", kUppercaseAll,   \". \"         ),\n     new Transform(        \" \", kUppercaseAll,   \".\"          ),\n     new Transform(         \"\", kUppercaseAll,   \"='\"         ),\n     new Transform(        \" \", kUppercaseAll,   \". \"         ),\n     new Transform(        \" \", kUppercaseFirst, \"=\\\"\"        ),\n     new Transform(        \" \", kUppercaseAll,   \"='\"         ),\n     new Transform(        \" \", kUppercaseFirst, \"='\"         )\n];\n\nexports.kTransforms = kTransforms;\nexports.kNumTransforms = kTransforms.length;\n\nfunction ToUpperCase(p, i) {\n  if (p[i] < 0xc0) {\n    if (p[i] >= 97 && p[i] <= 122) {\n      p[i] ^= 32;\n    }\n    return 1;\n  }\n  \n  /* An overly simplified uppercasing model for utf-8. */\n  if (p[i] < 0xe0) {\n    p[i + 1] ^= 32;\n    return 2;\n  }\n  \n  /* An arbitrary transform for three byte characters. */\n  p[i + 2] ^= 5;\n  return 3;\n}\n\nexports.transformDictionaryWord = function(dst, idx, word, len, transform) {\n  var prefix = kTransforms[transform].prefix;\n  var suffix = kTransforms[transform].suffix;\n  var t = kTransforms[transform].transform;\n  var skip = t < kOmitFirst1 ? 0 : t - (kOmitFirst1 - 1);\n  var i = 0;\n  var start_idx = idx;\n  var uppercase;\n  \n  if (skip > len) {\n    skip = len;\n  }\n  \n  var prefix_pos = 0;\n  while (prefix_pos < prefix.length) {\n    dst[idx++] = prefix[prefix_pos++];\n  }\n  \n  word += skip;\n  len -= skip;\n  \n  if (t <= kOmitLast9) {\n    len -= t;\n  }\n  \n  for (i = 0; i < len; i++) {\n    dst[idx++] = BrotliDictionary.dictionary[word + i];\n  }\n  \n  uppercase = idx - len;\n  \n  if (t === kUppercaseFirst) {\n    ToUpperCase(dst, uppercase);\n  } else if (t === kUppercaseAll) {\n    while (len > 0) {\n      var step = ToUpperCase(dst, uppercase);\n      uppercase += step;\n      len -= step;\n    }\n  }\n  \n  var suffix_pos = 0;\n  while (suffix_pos < suffix.length) {\n    dst[idx++] = suffix[suffix_pos++];\n  }\n  \n  return idx - start_idx;\n}\n", "module.exports = require('./dec/decode').BrotliDecompressBuffer;\n", "'use strict';\n/* eslint camelcase: \"off\" */\n\nvar assert = require('assert');\n\nvar Zstream = require('pako/lib/zlib/zstream');\nvar zlib_deflate = require('pako/lib/zlib/deflate.js');\nvar zlib_inflate = require('pako/lib/zlib/inflate.js');\nvar constants = require('pako/lib/zlib/constants');\n\nfor (var key in constants) {\n  exports[key] = constants[key];\n}\n\n// zlib modes\nexports.NONE = 0;\nexports.DEFLATE = 1;\nexports.INFLATE = 2;\nexports.GZIP = 3;\nexports.GUNZIP = 4;\nexports.DEFLATERAW = 5;\nexports.INFLATERAW = 6;\nexports.UNZIP = 7;\n\nvar GZIP_HEADER_ID1 = 0x1f;\nvar GZIP_HEADER_ID2 = 0x8b;\n\n/**\n * Emulate Node's zlib C++ layer for use by the JS layer in index.js\n */\nfunction Zlib(mode) {\n  if (typeof mode !== 'number' || mode < exports.DEFLATE || mode > exports.UNZIP) {\n    throw new TypeError('Bad argument');\n  }\n\n  this.dictionary = null;\n  this.err = 0;\n  this.flush = 0;\n  this.init_done = false;\n  this.level = 0;\n  this.memLevel = 0;\n  this.mode = mode;\n  this.strategy = 0;\n  this.windowBits = 0;\n  this.write_in_progress = false;\n  this.pending_close = false;\n  this.gzip_id_bytes_read = 0;\n}\n\nZlib.prototype.close = function () {\n  if (this.write_in_progress) {\n    this.pending_close = true;\n    return;\n  }\n\n  this.pending_close = false;\n\n  assert(this.init_done, 'close before init');\n  assert(this.mode <= exports.UNZIP);\n\n  if (this.mode === exports.DEFLATE || this.mode === exports.GZIP || this.mode === exports.DEFLATERAW) {\n    zlib_deflate.deflateEnd(this.strm);\n  } else if (this.mode === exports.INFLATE || this.mode === exports.GUNZIP || this.mode === exports.INFLATERAW || this.mode === exports.UNZIP) {\n    zlib_inflate.inflateEnd(this.strm);\n  }\n\n  this.mode = exports.NONE;\n\n  this.dictionary = null;\n};\n\nZlib.prototype.write = function (flush, input, in_off, in_len, out, out_off, out_len) {\n  return this._write(true, flush, input, in_off, in_len, out, out_off, out_len);\n};\n\nZlib.prototype.writeSync = function (flush, input, in_off, in_len, out, out_off, out_len) {\n  return this._write(false, flush, input, in_off, in_len, out, out_off, out_len);\n};\n\nZlib.prototype._write = function (async, flush, input, in_off, in_len, out, out_off, out_len) {\n  assert.equal(arguments.length, 8);\n\n  assert(this.init_done, 'write before init');\n  assert(this.mode !== exports.NONE, 'already finalized');\n  assert.equal(false, this.write_in_progress, 'write already in progress');\n  assert.equal(false, this.pending_close, 'close is pending');\n\n  this.write_in_progress = true;\n\n  assert.equal(false, flush === undefined, 'must provide flush value');\n\n  this.write_in_progress = true;\n\n  if (flush !== exports.Z_NO_FLUSH && flush !== exports.Z_PARTIAL_FLUSH && flush !== exports.Z_SYNC_FLUSH && flush !== exports.Z_FULL_FLUSH && flush !== exports.Z_FINISH && flush !== exports.Z_BLOCK) {\n    throw new Error('Invalid flush value');\n  }\n\n  if (input == null) {\n    input = Buffer.alloc(0);\n    in_len = 0;\n    in_off = 0;\n  }\n\n  this.strm.avail_in = in_len;\n  this.strm.input = input;\n  this.strm.next_in = in_off;\n  this.strm.avail_out = out_len;\n  this.strm.output = out;\n  this.strm.next_out = out_off;\n  this.flush = flush;\n\n  if (!async) {\n    // sync version\n    this._process();\n\n    if (this._checkError()) {\n      return this._afterSync();\n    }\n    return;\n  }\n\n  // async version\n  var self = this;\n  process.nextTick(function () {\n    self._process();\n    self._after();\n  });\n\n  return this;\n};\n\nZlib.prototype._afterSync = function () {\n  var avail_out = this.strm.avail_out;\n  var avail_in = this.strm.avail_in;\n\n  this.write_in_progress = false;\n\n  return [avail_in, avail_out];\n};\n\nZlib.prototype._process = function () {\n  var next_expected_header_byte = null;\n\n  // If the avail_out is left at 0, then it means that it ran out\n  // of room.  If there was avail_out left over, then it means\n  // that all of the input was consumed.\n  switch (this.mode) {\n    case exports.DEFLATE:\n    case exports.GZIP:\n    case exports.DEFLATERAW:\n      this.err = zlib_deflate.deflate(this.strm, this.flush);\n      break;\n    case exports.UNZIP:\n      if (this.strm.avail_in > 0) {\n        next_expected_header_byte = this.strm.next_in;\n      }\n\n      switch (this.gzip_id_bytes_read) {\n        case 0:\n          if (next_expected_header_byte === null) {\n            break;\n          }\n\n          if (this.strm.input[next_expected_header_byte] === GZIP_HEADER_ID1) {\n            this.gzip_id_bytes_read = 1;\n            next_expected_header_byte++;\n\n            if (this.strm.avail_in === 1) {\n              // The only available byte was already read.\n              break;\n            }\n          } else {\n            this.mode = exports.INFLATE;\n            break;\n          }\n\n        // fallthrough\n        case 1:\n          if (next_expected_header_byte === null) {\n            break;\n          }\n\n          if (this.strm.input[next_expected_header_byte] === GZIP_HEADER_ID2) {\n            this.gzip_id_bytes_read = 2;\n            this.mode = exports.GUNZIP;\n          } else {\n            // There is no actual difference between INFLATE and INFLATERAW\n            // (after initialization).\n            this.mode = exports.INFLATE;\n          }\n\n          break;\n        default:\n          throw new Error('invalid number of gzip magic number bytes read');\n      }\n\n    // fallthrough\n    case exports.INFLATE:\n    case exports.GUNZIP:\n    case exports.INFLATERAW:\n      this.err = zlib_inflate.inflate(this.strm, this.flush\n\n      // If data was encoded with dictionary\n      );if (this.err === exports.Z_NEED_DICT && this.dictionary) {\n        // Load it\n        this.err = zlib_inflate.inflateSetDictionary(this.strm, this.dictionary);\n        if (this.err === exports.Z_OK) {\n          // And try to decode again\n          this.err = zlib_inflate.inflate(this.strm, this.flush);\n        } else if (this.err === exports.Z_DATA_ERROR) {\n          // Both inflateSetDictionary() and inflate() return Z_DATA_ERROR.\n          // Make it possible for After() to tell a bad dictionary from bad\n          // input.\n          this.err = exports.Z_NEED_DICT;\n        }\n      }\n      while (this.strm.avail_in > 0 && this.mode === exports.GUNZIP && this.err === exports.Z_STREAM_END && this.strm.next_in[0] !== 0x00) {\n        // Bytes remain in input buffer. Perhaps this is another compressed\n        // member in the same archive, or just trailing garbage.\n        // Trailing zero bytes are okay, though, since they are frequently\n        // used for padding.\n\n        this.reset();\n        this.err = zlib_inflate.inflate(this.strm, this.flush);\n      }\n      break;\n    default:\n      throw new Error('Unknown mode ' + this.mode);\n  }\n};\n\nZlib.prototype._checkError = function () {\n  // Acceptable error states depend on the type of zlib stream.\n  switch (this.err) {\n    case exports.Z_OK:\n    case exports.Z_BUF_ERROR:\n      if (this.strm.avail_out !== 0 && this.flush === exports.Z_FINISH) {\n        this._error('unexpected end of file');\n        return false;\n      }\n      break;\n    case exports.Z_STREAM_END:\n      // normal statuses, not fatal\n      break;\n    case exports.Z_NEED_DICT:\n      if (this.dictionary == null) {\n        this._error('Missing dictionary');\n      } else {\n        this._error('Bad dictionary');\n      }\n      return false;\n    default:\n      // something else.\n      this._error('Zlib error');\n      return false;\n  }\n\n  return true;\n};\n\nZlib.prototype._after = function () {\n  if (!this._checkError()) {\n    return;\n  }\n\n  var avail_out = this.strm.avail_out;\n  var avail_in = this.strm.avail_in;\n\n  this.write_in_progress = false;\n\n  // call the write() cb\n  this.callback(avail_in, avail_out);\n\n  if (this.pending_close) {\n    this.close();\n  }\n};\n\nZlib.prototype._error = function (message) {\n  if (this.strm.msg) {\n    message = this.strm.msg;\n  }\n  this.onerror(message, this.err\n\n  // no hope of rescue.\n  );this.write_in_progress = false;\n  if (this.pending_close) {\n    this.close();\n  }\n};\n\nZlib.prototype.init = function (windowBits, level, memLevel, strategy, dictionary) {\n  assert(arguments.length === 4 || arguments.length === 5, 'init(windowBits, level, memLevel, strategy, [dictionary])');\n\n  assert(windowBits >= 8 && windowBits <= 15, 'invalid windowBits');\n  assert(level >= -1 && level <= 9, 'invalid compression level');\n\n  assert(memLevel >= 1 && memLevel <= 9, 'invalid memlevel');\n\n  assert(strategy === exports.Z_FILTERED || strategy === exports.Z_HUFFMAN_ONLY || strategy === exports.Z_RLE || strategy === exports.Z_FIXED || strategy === exports.Z_DEFAULT_STRATEGY, 'invalid strategy');\n\n  this._init(level, windowBits, memLevel, strategy, dictionary);\n  this._setDictionary();\n};\n\nZlib.prototype.params = function () {\n  throw new Error('deflateParams Not supported');\n};\n\nZlib.prototype.reset = function () {\n  this._reset();\n  this._setDictionary();\n};\n\nZlib.prototype._init = function (level, windowBits, memLevel, strategy, dictionary) {\n  this.level = level;\n  this.windowBits = windowBits;\n  this.memLevel = memLevel;\n  this.strategy = strategy;\n\n  this.flush = exports.Z_NO_FLUSH;\n\n  this.err = exports.Z_OK;\n\n  if (this.mode === exports.GZIP || this.mode === exports.GUNZIP) {\n    this.windowBits += 16;\n  }\n\n  if (this.mode === exports.UNZIP) {\n    this.windowBits += 32;\n  }\n\n  if (this.mode === exports.DEFLATERAW || this.mode === exports.INFLATERAW) {\n    this.windowBits = -1 * this.windowBits;\n  }\n\n  this.strm = new Zstream();\n\n  switch (this.mode) {\n    case exports.DEFLATE:\n    case exports.GZIP:\n    case exports.DEFLATERAW:\n      this.err = zlib_deflate.deflateInit2(this.strm, this.level, exports.Z_DEFLATED, this.windowBits, this.memLevel, this.strategy);\n      break;\n    case exports.INFLATE:\n    case exports.GUNZIP:\n    case exports.INFLATERAW:\n    case exports.UNZIP:\n      this.err = zlib_inflate.inflateInit2(this.strm, this.windowBits);\n      break;\n    default:\n      throw new Error('Unknown mode ' + this.mode);\n  }\n\n  if (this.err !== exports.Z_OK) {\n    this._error('Init error');\n  }\n\n  this.dictionary = dictionary;\n\n  this.write_in_progress = false;\n  this.init_done = true;\n};\n\nZlib.prototype._setDictionary = function () {\n  if (this.dictionary == null) {\n    return;\n  }\n\n  this.err = exports.Z_OK;\n\n  switch (this.mode) {\n    case exports.DEFLATE:\n    case exports.DEFLATERAW:\n      this.err = zlib_deflate.deflateSetDictionary(this.strm, this.dictionary);\n      break;\n    default:\n      break;\n  }\n\n  if (this.err !== exports.Z_OK) {\n    this._error('Failed to set dictionary');\n  }\n};\n\nZlib.prototype._reset = function () {\n  this.err = exports.Z_OK;\n\n  switch (this.mode) {\n    case exports.DEFLATE:\n    case exports.DEFLATERAW:\n    case exports.GZIP:\n      this.err = zlib_deflate.deflateReset(this.strm);\n      break;\n    case exports.INFLATE:\n    case exports.INFLATERAW:\n    case exports.GUNZIP:\n      this.err = zlib_inflate.inflateReset(this.strm);\n      break;\n    default:\n      break;\n  }\n\n  if (this.err !== exports.Z_OK) {\n    this._error('Failed to reset stream');\n  }\n};\n\nexports.Zlib = Zlib;", "'use strict';\n\nvar Buffer = require('buffer').Buffer;\nvar Transform = require('stream').Transform;\nvar binding = require('./binding');\nvar util = require('util');\nvar assert = require('assert').ok;\nvar kMaxLength = require('buffer').kMaxLength;\nvar kRangeErrorMessage = 'Cannot create final Buffer. It would be larger ' + 'than 0x' + kMaxLength.toString(16) + ' bytes';\n\n// zlib doesn't provide these, so kludge them in following the same\n// const naming scheme zlib uses.\nbinding.Z_MIN_WINDOWBITS = 8;\nbinding.Z_MAX_WINDOWBITS = 15;\nbinding.Z_DEFAULT_WINDOWBITS = 15;\n\n// fewer than 64 bytes per chunk is stupid.\n// technically it could work with as few as 8, but even 64 bytes\n// is absurdly low.  Usually a MB or more is best.\nbinding.Z_MIN_CHUNK = 64;\nbinding.Z_MAX_CHUNK = Infinity;\nbinding.Z_DEFAULT_CHUNK = 16 * 1024;\n\nbinding.Z_MIN_MEMLEVEL = 1;\nbinding.Z_MAX_MEMLEVEL = 9;\nbinding.Z_DEFAULT_MEMLEVEL = 8;\n\nbinding.Z_MIN_LEVEL = -1;\nbinding.Z_MAX_LEVEL = 9;\nbinding.Z_DEFAULT_LEVEL = binding.Z_DEFAULT_COMPRESSION;\n\n// expose all the zlib constants\nvar bkeys = Object.keys(binding);\nfor (var bk = 0; bk < bkeys.length; bk++) {\n  var bkey = bkeys[bk];\n  if (bkey.match(/^Z/)) {\n    Object.defineProperty(exports, bkey, {\n      enumerable: true, value: binding[bkey], writable: false\n    });\n  }\n}\n\n// translation table for return codes.\nvar codes = {\n  Z_OK: binding.Z_OK,\n  Z_STREAM_END: binding.Z_STREAM_END,\n  Z_NEED_DICT: binding.Z_NEED_DICT,\n  Z_ERRNO: binding.Z_ERRNO,\n  Z_STREAM_ERROR: binding.Z_STREAM_ERROR,\n  Z_DATA_ERROR: binding.Z_DATA_ERROR,\n  Z_MEM_ERROR: binding.Z_MEM_ERROR,\n  Z_BUF_ERROR: binding.Z_BUF_ERROR,\n  Z_VERSION_ERROR: binding.Z_VERSION_ERROR\n};\n\nvar ckeys = Object.keys(codes);\nfor (var ck = 0; ck < ckeys.length; ck++) {\n  var ckey = ckeys[ck];\n  codes[codes[ckey]] = ckey;\n}\n\nObject.defineProperty(exports, 'codes', {\n  enumerable: true, value: Object.freeze(codes), writable: false\n});\n\nexports.Deflate = Deflate;\nexports.Inflate = Inflate;\nexports.Gzip = Gzip;\nexports.Gunzip = Gunzip;\nexports.DeflateRaw = DeflateRaw;\nexports.InflateRaw = InflateRaw;\nexports.Unzip = Unzip;\n\nexports.createDeflate = function (o) {\n  return new Deflate(o);\n};\n\nexports.createInflate = function (o) {\n  return new Inflate(o);\n};\n\nexports.createDeflateRaw = function (o) {\n  return new DeflateRaw(o);\n};\n\nexports.createInflateRaw = function (o) {\n  return new InflateRaw(o);\n};\n\nexports.createGzip = function (o) {\n  return new Gzip(o);\n};\n\nexports.createGunzip = function (o) {\n  return new Gunzip(o);\n};\n\nexports.createUnzip = function (o) {\n  return new Unzip(o);\n};\n\n// Convenience methods.\n// compress/decompress a string or buffer in one step.\nexports.deflate = function (buffer, opts, callback) {\n  if (typeof opts === 'function') {\n    callback = opts;\n    opts = {};\n  }\n  return zlibBuffer(new Deflate(opts), buffer, callback);\n};\n\nexports.deflateSync = function (buffer, opts) {\n  return zlibBufferSync(new Deflate(opts), buffer);\n};\n\nexports.gzip = function (buffer, opts, callback) {\n  if (typeof opts === 'function') {\n    callback = opts;\n    opts = {};\n  }\n  return zlibBuffer(new Gzip(opts), buffer, callback);\n};\n\nexports.gzipSync = function (buffer, opts) {\n  return zlibBufferSync(new Gzip(opts), buffer);\n};\n\nexports.deflateRaw = function (buffer, opts, callback) {\n  if (typeof opts === 'function') {\n    callback = opts;\n    opts = {};\n  }\n  return zlibBuffer(new DeflateRaw(opts), buffer, callback);\n};\n\nexports.deflateRawSync = function (buffer, opts) {\n  return zlibBufferSync(new DeflateRaw(opts), buffer);\n};\n\nexports.unzip = function (buffer, opts, callback) {\n  if (typeof opts === 'function') {\n    callback = opts;\n    opts = {};\n  }\n  return zlibBuffer(new Unzip(opts), buffer, callback);\n};\n\nexports.unzipSync = function (buffer, opts) {\n  return zlibBufferSync(new Unzip(opts), buffer);\n};\n\nexports.inflate = function (buffer, opts, callback) {\n  if (typeof opts === 'function') {\n    callback = opts;\n    opts = {};\n  }\n  return zlibBuffer(new Inflate(opts), buffer, callback);\n};\n\nexports.inflateSync = function (buffer, opts) {\n  return zlibBufferSync(new Inflate(opts), buffer);\n};\n\nexports.gunzip = function (buffer, opts, callback) {\n  if (typeof opts === 'function') {\n    callback = opts;\n    opts = {};\n  }\n  return zlibBuffer(new Gunzip(opts), buffer, callback);\n};\n\nexports.gunzipSync = function (buffer, opts) {\n  return zlibBufferSync(new Gunzip(opts), buffer);\n};\n\nexports.inflateRaw = function (buffer, opts, callback) {\n  if (typeof opts === 'function') {\n    callback = opts;\n    opts = {};\n  }\n  return zlibBuffer(new InflateRaw(opts), buffer, callback);\n};\n\nexports.inflateRawSync = function (buffer, opts) {\n  return zlibBufferSync(new InflateRaw(opts), buffer);\n};\n\nfunction zlibBuffer(engine, buffer, callback) {\n  var buffers = [];\n  var nread = 0;\n\n  engine.on('error', onError);\n  engine.on('end', onEnd);\n\n  engine.end(buffer);\n  flow();\n\n  function flow() {\n    var chunk;\n    while (null !== (chunk = engine.read())) {\n      buffers.push(chunk);\n      nread += chunk.length;\n    }\n    engine.once('readable', flow);\n  }\n\n  function onError(err) {\n    engine.removeListener('end', onEnd);\n    engine.removeListener('readable', flow);\n    callback(err);\n  }\n\n  function onEnd() {\n    var buf;\n    var err = null;\n\n    if (nread >= kMaxLength) {\n      err = new RangeError(kRangeErrorMessage);\n    } else {\n      buf = Buffer.concat(buffers, nread);\n    }\n\n    buffers = [];\n    engine.close();\n    callback(err, buf);\n  }\n}\n\nfunction zlibBufferSync(engine, buffer) {\n  if (typeof buffer === 'string') buffer = Buffer.from(buffer);\n\n  if (!Buffer.isBuffer(buffer)) throw new TypeError('Not a string or buffer');\n\n  var flushFlag = engine._finishFlushFlag;\n\n  return engine._processChunk(buffer, flushFlag);\n}\n\n// generic zlib\n// minimal 2-byte header\nfunction Deflate(opts) {\n  if (!(this instanceof Deflate)) return new Deflate(opts);\n  Zlib.call(this, opts, binding.DEFLATE);\n}\n\nfunction Inflate(opts) {\n  if (!(this instanceof Inflate)) return new Inflate(opts);\n  Zlib.call(this, opts, binding.INFLATE);\n}\n\n// gzip - bigger header, same deflate compression\nfunction Gzip(opts) {\n  if (!(this instanceof Gzip)) return new Gzip(opts);\n  Zlib.call(this, opts, binding.GZIP);\n}\n\nfunction Gunzip(opts) {\n  if (!(this instanceof Gunzip)) return new Gunzip(opts);\n  Zlib.call(this, opts, binding.GUNZIP);\n}\n\n// raw - no header\nfunction DeflateRaw(opts) {\n  if (!(this instanceof DeflateRaw)) return new DeflateRaw(opts);\n  Zlib.call(this, opts, binding.DEFLATERAW);\n}\n\nfunction InflateRaw(opts) {\n  if (!(this instanceof InflateRaw)) return new InflateRaw(opts);\n  Zlib.call(this, opts, binding.INFLATERAW);\n}\n\n// auto-detect header.\nfunction Unzip(opts) {\n  if (!(this instanceof Unzip)) return new Unzip(opts);\n  Zlib.call(this, opts, binding.UNZIP);\n}\n\nfunction isValidFlushFlag(flag) {\n  return flag === binding.Z_NO_FLUSH || flag === binding.Z_PARTIAL_FLUSH || flag === binding.Z_SYNC_FLUSH || flag === binding.Z_FULL_FLUSH || flag === binding.Z_FINISH || flag === binding.Z_BLOCK;\n}\n\n// the Zlib class they all inherit from\n// This thing manages the queue of requests, and returns\n// true or false if there is anything in the queue when\n// you call the .write() method.\n\nfunction Zlib(opts, mode) {\n  var _this = this;\n\n  this._opts = opts = opts || {};\n  this._chunkSize = opts.chunkSize || exports.Z_DEFAULT_CHUNK;\n\n  Transform.call(this, opts);\n\n  if (opts.flush && !isValidFlushFlag(opts.flush)) {\n    throw new Error('Invalid flush flag: ' + opts.flush);\n  }\n  if (opts.finishFlush && !isValidFlushFlag(opts.finishFlush)) {\n    throw new Error('Invalid flush flag: ' + opts.finishFlush);\n  }\n\n  this._flushFlag = opts.flush || binding.Z_NO_FLUSH;\n  this._finishFlushFlag = typeof opts.finishFlush !== 'undefined' ? opts.finishFlush : binding.Z_FINISH;\n\n  if (opts.chunkSize) {\n    if (opts.chunkSize < exports.Z_MIN_CHUNK || opts.chunkSize > exports.Z_MAX_CHUNK) {\n      throw new Error('Invalid chunk size: ' + opts.chunkSize);\n    }\n  }\n\n  if (opts.windowBits) {\n    if (opts.windowBits < exports.Z_MIN_WINDOWBITS || opts.windowBits > exports.Z_MAX_WINDOWBITS) {\n      throw new Error('Invalid windowBits: ' + opts.windowBits);\n    }\n  }\n\n  if (opts.level) {\n    if (opts.level < exports.Z_MIN_LEVEL || opts.level > exports.Z_MAX_LEVEL) {\n      throw new Error('Invalid compression level: ' + opts.level);\n    }\n  }\n\n  if (opts.memLevel) {\n    if (opts.memLevel < exports.Z_MIN_MEMLEVEL || opts.memLevel > exports.Z_MAX_MEMLEVEL) {\n      throw new Error('Invalid memLevel: ' + opts.memLevel);\n    }\n  }\n\n  if (opts.strategy) {\n    if (opts.strategy != exports.Z_FILTERED && opts.strategy != exports.Z_HUFFMAN_ONLY && opts.strategy != exports.Z_RLE && opts.strategy != exports.Z_FIXED && opts.strategy != exports.Z_DEFAULT_STRATEGY) {\n      throw new Error('Invalid strategy: ' + opts.strategy);\n    }\n  }\n\n  if (opts.dictionary) {\n    if (!Buffer.isBuffer(opts.dictionary)) {\n      throw new Error('Invalid dictionary: it should be a Buffer instance');\n    }\n  }\n\n  this._handle = new binding.Zlib(mode);\n\n  var self = this;\n  this._hadError = false;\n  this._handle.onerror = function (message, errno) {\n    // there is no way to cleanly recover.\n    // continuing only obscures problems.\n    _close(self);\n    self._hadError = true;\n\n    var error = new Error(message);\n    error.errno = errno;\n    error.code = exports.codes[errno];\n    self.emit('error', error);\n  };\n\n  var level = exports.Z_DEFAULT_COMPRESSION;\n  if (typeof opts.level === 'number') level = opts.level;\n\n  var strategy = exports.Z_DEFAULT_STRATEGY;\n  if (typeof opts.strategy === 'number') strategy = opts.strategy;\n\n  this._handle.init(opts.windowBits || exports.Z_DEFAULT_WINDOWBITS, level, opts.memLevel || exports.Z_DEFAULT_MEMLEVEL, strategy, opts.dictionary);\n\n  this._buffer = Buffer.allocUnsafe(this._chunkSize);\n  this._offset = 0;\n  this._level = level;\n  this._strategy = strategy;\n\n  this.once('end', this.close);\n\n  Object.defineProperty(this, '_closed', {\n    get: function () {\n      return !_this._handle;\n    },\n    configurable: true,\n    enumerable: true\n  });\n}\n\nutil.inherits(Zlib, Transform);\n\nZlib.prototype.params = function (level, strategy, callback) {\n  if (level < exports.Z_MIN_LEVEL || level > exports.Z_MAX_LEVEL) {\n    throw new RangeError('Invalid compression level: ' + level);\n  }\n  if (strategy != exports.Z_FILTERED && strategy != exports.Z_HUFFMAN_ONLY && strategy != exports.Z_RLE && strategy != exports.Z_FIXED && strategy != exports.Z_DEFAULT_STRATEGY) {\n    throw new TypeError('Invalid strategy: ' + strategy);\n  }\n\n  if (this._level !== level || this._strategy !== strategy) {\n    var self = this;\n    this.flush(binding.Z_SYNC_FLUSH, function () {\n      assert(self._handle, 'zlib binding closed');\n      self._handle.params(level, strategy);\n      if (!self._hadError) {\n        self._level = level;\n        self._strategy = strategy;\n        if (callback) callback();\n      }\n    });\n  } else {\n    process.nextTick(callback);\n  }\n};\n\nZlib.prototype.reset = function () {\n  assert(this._handle, 'zlib binding closed');\n  return this._handle.reset();\n};\n\n// This is the _flush function called by the transform class,\n// internally, when the last chunk has been written.\nZlib.prototype._flush = function (callback) {\n  this._transform(Buffer.alloc(0), '', callback);\n};\n\nZlib.prototype.flush = function (kind, callback) {\n  var _this2 = this;\n\n  var ws = this._writableState;\n\n  if (typeof kind === 'function' || kind === undefined && !callback) {\n    callback = kind;\n    kind = binding.Z_FULL_FLUSH;\n  }\n\n  if (ws.ended) {\n    if (callback) process.nextTick(callback);\n  } else if (ws.ending) {\n    if (callback) this.once('end', callback);\n  } else if (ws.needDrain) {\n    if (callback) {\n      this.once('drain', function () {\n        return _this2.flush(kind, callback);\n      });\n    }\n  } else {\n    this._flushFlag = kind;\n    this.write(Buffer.alloc(0), '', callback);\n  }\n};\n\nZlib.prototype.close = function (callback) {\n  _close(this, callback);\n  process.nextTick(emitCloseNT, this);\n};\n\nfunction _close(engine, callback) {\n  if (callback) process.nextTick(callback);\n\n  // Caller may invoke .close after a zlib error (which will null _handle).\n  if (!engine._handle) return;\n\n  engine._handle.close();\n  engine._handle = null;\n}\n\nfunction emitCloseNT(self) {\n  self.emit('close');\n}\n\nZlib.prototype._transform = function (chunk, encoding, cb) {\n  var flushFlag;\n  var ws = this._writableState;\n  var ending = ws.ending || ws.ended;\n  var last = ending && (!chunk || ws.length === chunk.length);\n\n  if (chunk !== null && !Buffer.isBuffer(chunk)) return cb(new Error('invalid input'));\n\n  if (!this._handle) return cb(new Error('zlib binding closed'));\n\n  // If it's the last chunk, or a final flush, we use the Z_FINISH flush flag\n  // (or whatever flag was provided using opts.finishFlush).\n  // If it's explicitly flushing at some other time, then we use\n  // Z_FULL_FLUSH. Otherwise, use Z_NO_FLUSH for maximum compression\n  // goodness.\n  if (last) flushFlag = this._finishFlushFlag;else {\n    flushFlag = this._flushFlag;\n    // once we've flushed the last of the queue, stop flushing and\n    // go back to the normal behavior.\n    if (chunk.length >= ws.length) {\n      this._flushFlag = this._opts.flush || binding.Z_NO_FLUSH;\n    }\n  }\n\n  this._processChunk(chunk, flushFlag, cb);\n};\n\nZlib.prototype._processChunk = function (chunk, flushFlag, cb) {\n  var availInBefore = chunk && chunk.length;\n  var availOutBefore = this._chunkSize - this._offset;\n  var inOff = 0;\n\n  var self = this;\n\n  var async = typeof cb === 'function';\n\n  if (!async) {\n    var buffers = [];\n    var nread = 0;\n\n    var error;\n    this.on('error', function (er) {\n      error = er;\n    });\n\n    assert(this._handle, 'zlib binding closed');\n    do {\n      var res = this._handle.writeSync(flushFlag, chunk, // in\n      inOff, // in_off\n      availInBefore, // in_len\n      this._buffer, // out\n      this._offset, //out_off\n      availOutBefore); // out_len\n    } while (!this._hadError && callback(res[0], res[1]));\n\n    if (this._hadError) {\n      throw error;\n    }\n\n    if (nread >= kMaxLength) {\n      _close(this);\n      throw new RangeError(kRangeErrorMessage);\n    }\n\n    var buf = Buffer.concat(buffers, nread);\n    _close(this);\n\n    return buf;\n  }\n\n  assert(this._handle, 'zlib binding closed');\n  var req = this._handle.write(flushFlag, chunk, // in\n  inOff, // in_off\n  availInBefore, // in_len\n  this._buffer, // out\n  this._offset, //out_off\n  availOutBefore); // out_len\n\n  req.buffer = chunk;\n  req.callback = callback;\n\n  function callback(availInAfter, availOutAfter) {\n    // When the callback is used in an async write, the callback's\n    // context is the `req` object that was created. The req object\n    // is === this._handle, and that's why it's important to null\n    // out the values after they are done being used. `this._handle`\n    // can stay in memory longer than the callback and buffer are needed.\n    if (this) {\n      this.buffer = null;\n      this.callback = null;\n    }\n\n    if (self._hadError) return;\n\n    var have = availOutBefore - availOutAfter;\n    assert(have >= 0, 'have should not go down');\n\n    if (have > 0) {\n      var out = self._buffer.slice(self._offset, self._offset + have);\n      self._offset += have;\n      // serve some output to the consumer.\n      if (async) {\n        self.push(out);\n      } else {\n        buffers.push(out);\n        nread += out.length;\n      }\n    }\n\n    // exhausted the output buffer, or used all the input create a new one.\n    if (availOutAfter === 0 || self._offset >= self._chunkSize) {\n      availOutBefore = self._chunkSize;\n      self._offset = 0;\n      self._buffer = Buffer.allocUnsafe(self._chunkSize);\n    }\n\n    if (availOutAfter === 0) {\n      // Not actually done.  Need to reprocess.\n      // Also, update the availInBefore to the availInAfter value,\n      // so that if we have to hit it a third (fourth, etc.) time,\n      // it'll have the correct byte counts.\n      inOff += availInBefore - availInAfter;\n      availInBefore = availInAfter;\n\n      if (!async) return true;\n\n      var newReq = self._handle.write(flushFlag, chunk, inOff, availInBefore, self._buffer, self._offset, self._chunkSize);\n      newReq.callback = callback; // this same function\n      newReq.buffer = chunk;\n      return;\n    }\n\n    if (!async) return false;\n\n    // finished with the chunk.\n    cb();\n  }\n};\n\nutil.inherits(Deflate, Zlib);\nutil.inherits(Inflate, Zlib);\nutil.inherits(Gzip, Zlib);\nutil.inherits(Gunzip, Zlib);\nutil.inherits(DeflateRaw, Zlib);\nutil.inherits(InflateRaw, Zlib);\nutil.inherits(Unzip, Zlib);", "'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBind = require('./');\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n", "'use strict';\n\nvar bind = require('function-bind');\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\nvar $max = GetIntrinsic('%Math.max%');\n\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = null;\n\t}\n}\n\nmodule.exports = function callBind(originalFunction) {\n\tvar func = $reflectApply(bind, $call, arguments);\n\tif ($gOPD && $defineProperty) {\n\t\tvar desc = $gOPD(func, 'length');\n\t\tif (desc.configurable) {\n\t\t\t// original length, plus the receiver, minus any additional arguments (after the receiver)\n\t\t\t$defineProperty(\n\t\t\t\tfunc,\n\t\t\t\t'length',\n\t\t\t\t{ value: 1 + $max(0, originalFunction.length - (arguments.length - 1)) }\n\t\t\t);\n\t\t}\n\t}\n\treturn func;\n};\n\nvar applyBind = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n", "var clone = (function() {\n'use strict';\n\n/**\n * Clones (copies) an Object using deep copying.\n *\n * This function supports circular references by default, but if you are certain\n * there are no circular references in your object, you can save some CPU time\n * by calling clone(obj, false).\n *\n * Caution: if `circular` is false and `parent` contains circular references,\n * your program may enter an infinite loop and crash.\n *\n * @param `parent` - the object to be cloned\n * @param `circular` - set to true if the object to be cloned may contain\n *    circular references. (optional - true by default)\n * @param `depth` - set to a number if the object is only to be cloned to\n *    a particular depth. (optional - defaults to Infinity)\n * @param `prototype` - sets the prototype to be used when cloning an object.\n *    (optional - defaults to parent prototype).\n*/\nfunction clone(parent, circular, depth, prototype) {\n  var filter;\n  if (typeof circular === 'object') {\n    depth = circular.depth;\n    prototype = circular.prototype;\n    filter = circular.filter;\n    circular = circular.circular\n  }\n  // maintain two arrays for circular references, where corresponding parents\n  // and children have the same index\n  var allParents = [];\n  var allChildren = [];\n\n  var useBuffer = typeof Buffer != 'undefined';\n\n  if (typeof circular == 'undefined')\n    circular = true;\n\n  if (typeof depth == 'undefined')\n    depth = Infinity;\n\n  // recurse this function so we don't reset allParents and allChildren\n  function _clone(parent, depth) {\n    // cloning null always returns null\n    if (parent === null)\n      return null;\n\n    if (depth == 0)\n      return parent;\n\n    var child;\n    var proto;\n    if (typeof parent != 'object') {\n      return parent;\n    }\n\n    if (clone.__isArray(parent)) {\n      child = [];\n    } else if (clone.__isRegExp(parent)) {\n      child = new RegExp(parent.source, __getRegExpFlags(parent));\n      if (parent.lastIndex) child.lastIndex = parent.lastIndex;\n    } else if (clone.__isDate(parent)) {\n      child = new Date(parent.getTime());\n    } else if (useBuffer && Buffer.isBuffer(parent)) {\n      if (Buffer.allocUnsafe) {\n        // Node.js >= 4.5.0\n        child = Buffer.allocUnsafe(parent.length);\n      } else {\n        // Older Node.js versions\n        child = new Buffer(parent.length);\n      }\n      parent.copy(child);\n      return child;\n    } else {\n      if (typeof prototype == 'undefined') {\n        proto = Object.getPrototypeOf(parent);\n        child = Object.create(proto);\n      }\n      else {\n        child = Object.create(prototype);\n        proto = prototype;\n      }\n    }\n\n    if (circular) {\n      var index = allParents.indexOf(parent);\n\n      if (index != -1) {\n        return allChildren[index];\n      }\n      allParents.push(parent);\n      allChildren.push(child);\n    }\n\n    for (var i in parent) {\n      var attrs;\n      if (proto) {\n        attrs = Object.getOwnPropertyDescriptor(proto, i);\n      }\n\n      if (attrs && attrs.set == null) {\n        continue;\n      }\n      child[i] = _clone(parent[i], depth - 1);\n    }\n\n    return child;\n  }\n\n  return _clone(parent, depth);\n}\n\n/**\n * Simple flat clone using prototype, accepts only objects, usefull for property\n * override on FLAT configuration object (no nested props).\n *\n * USE WITH CAUTION! This may not behave as you wish if you do not know how this\n * works.\n */\nclone.clonePrototype = function clonePrototype(parent) {\n  if (parent === null)\n    return null;\n\n  var c = function () {};\n  c.prototype = parent;\n  return new c();\n};\n\n// private utility functions\n\nfunction __objToStr(o) {\n  return Object.prototype.toString.call(o);\n};\nclone.__objToStr = __objToStr;\n\nfunction __isDate(o) {\n  return typeof o === 'object' && __objToStr(o) === '[object Date]';\n};\nclone.__isDate = __isDate;\n\nfunction __isArray(o) {\n  return typeof o === 'object' && __objToStr(o) === '[object Array]';\n};\nclone.__isArray = __isArray;\n\nfunction __isRegExp(o) {\n  return typeof o === 'object' && __objToStr(o) === '[object RegExp]';\n};\nclone.__isRegExp = __isRegExp;\n\nfunction __getRegExpFlags(re) {\n  var flags = '';\n  if (re.global) flags += 'g';\n  if (re.ignoreCase) flags += 'i';\n  if (re.multiline) flags += 'm';\n  return flags;\n};\nclone.__getRegExpFlags = __getRegExpFlags;\n\nreturn clone;\n})();\n\nif (typeof module === 'object' && module.exports) {\n  module.exports = clone;\n}\n", "require('../../modules/es.object.values');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Object.values;\n", "require('../../modules/es.aggregate-error');\nrequire('../../modules/es.array.iterator');\nrequire('../../modules/es.object.to-string');\nrequire('../../modules/es.promise');\nrequire('../../modules/es.promise.all-settled');\nrequire('../../modules/es.promise.any');\nrequire('../../modules/es.promise.finally');\nrequire('../../modules/es.string.iterator');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Promise;\n", "var parent = require('../../stable/promise');\nrequire('../../modules/esnext.aggregate-error');\n// TODO: Remove from `core-js@4`\nrequire('../../modules/esnext.promise.all-settled');\nrequire('../../modules/esnext.promise.try');\nrequire('../../modules/esnext.promise.any');\n\nmodule.exports = parent;\n", "var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar TypeError = global.TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n  if (isCallable(argument)) return argument;\n  throw TypeError(tryToString(argument) + ' is not a function');\n};\n", "var global = require('../internals/global');\nvar isConstructor = require('../internals/is-constructor');\nvar tryToString = require('../internals/try-to-string');\n\nvar TypeError = global.TypeError;\n\n// `Assert: IsConstructor(argument) is true`\nmodule.exports = function (argument) {\n  if (isConstructor(argument)) return argument;\n  throw TypeError(tryToString(argument) + ' is not a constructor');\n};\n", "var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar String = global.String;\nvar TypeError = global.TypeError;\n\nmodule.exports = function (argument) {\n  if (typeof argument == 'object' || isCallable(argument)) return argument;\n  throw TypeError(\"Can't set \" + String(argument) + ' as a prototype');\n};\n", "var wellKnownSymbol = require('../internals/well-known-symbol');\nvar create = require('../internals/object-create');\nvar definePropertyModule = require('../internals/object-define-property');\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] == undefined) {\n  definePropertyModule.f(ArrayPrototype, UNSCOPABLES, {\n    configurable: true,\n    value: create(null)\n  });\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n  ArrayPrototype[UNSCOPABLES][key] = true;\n};\n", "'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\n\n// `AdvanceStringIndex` abstract operation\n// https://tc39.es/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n  return index + (unicode ? charAt(S, index).length : 1);\n};\n", "var global = require('../internals/global');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\n\nvar TypeError = global.TypeError;\n\nmodule.exports = function (it, Prototype) {\n  if (isPrototypeOf(Prototype, it)) return it;\n  throw TypeError('Incorrect invocation');\n};\n", "var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar String = global.String;\nvar TypeError = global.TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n  if (isObject(argument)) return argument;\n  throw TypeError(String(argument) + ' is not an object');\n};\n", "'use strict';\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\nvar min = Math.min;\n\n// `Array.prototype.copyWithin` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.copywithin\n// eslint-disable-next-line es/no-array-prototype-copywithin -- safe\nmodule.exports = [].copyWithin || function copyWithin(target /* = 0 */, start /* = 0, end = @length */) {\n  var O = toObject(this);\n  var len = lengthOfArrayLike(O);\n  var to = toAbsoluteIndex(target, len);\n  var from = toAbsoluteIndex(start, len);\n  var end = arguments.length > 2 ? arguments[2] : undefined;\n  var count = min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to);\n  var inc = 1;\n  if (from < to && to < from + count) {\n    inc = -1;\n    from += count - 1;\n    to += count - 1;\n  }\n  while (count-- > 0) {\n    if (from in O) O[to] = O[from];\n    else delete O[to];\n    to += inc;\n    from += inc;\n  } return O;\n};\n", "'use strict';\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.fill` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.fill\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n  var O = toObject(this);\n  var length = lengthOfArrayLike(O);\n  var argumentsLength = arguments.length;\n  var index = toAbsoluteIndex(argumentsLength > 1 ? arguments[1] : undefined, length);\n  var end = argumentsLength > 2 ? arguments[2] : undefined;\n  var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n  while (endPos > index) O[index++] = value;\n  return O;\n};\n", "'use strict';\nvar $forEach = require('../internals/array-iteration').forEach;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar STRICT_METHOD = arrayMethodIsStrict('forEach');\n\n// `Array.prototype.forEach` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.foreach\nmodule.exports = !STRICT_METHOD ? function forEach(callbackfn /* , thisArg */) {\n  return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n// eslint-disable-next-line es/no-array-prototype-foreach -- safe\n} : [].forEach;\n", "module.exports = function (Constructor, list) {\n  var index = 0;\n  var length = list.length;\n  var result = new Constructor(length);\n  while (length > index) result[index] = list[index++];\n  return result;\n};\n", "'use strict';\nvar global = require('../internals/global');\nvar bind = require('../internals/function-bind-context');\nvar call = require('../internals/function-call');\nvar toObject = require('../internals/to-object');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar isConstructor = require('../internals/is-constructor');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar createProperty = require('../internals/create-property');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nvar Array = global.Array;\n\n// `Array.from` method implementation\n// https://tc39.es/ecma262/#sec-array.from\nmodule.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n  var O = toObject(arrayLike);\n  var IS_CONSTRUCTOR = isConstructor(this);\n  var argumentsLength = arguments.length;\n  var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n  var mapping = mapfn !== undefined;\n  if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined);\n  var iteratorMethod = getIteratorMethod(O);\n  var index = 0;\n  var length, result, step, iterator, next, value;\n  // if the target is not iterable or it's an array with the default iterator - use a simple case\n  if (iteratorMethod && !(this == Array && isArrayIteratorMethod(iteratorMethod))) {\n    iterator = getIterator(O, iteratorMethod);\n    next = iterator.next;\n    result = IS_CONSTRUCTOR ? new this() : [];\n    for (;!(step = call(next, iterator)).done; index++) {\n      value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;\n      createProperty(result, index, value);\n    }\n  } else {\n    length = lengthOfArrayLike(O);\n    result = IS_CONSTRUCTOR ? new this(length) : Array(length);\n    for (;length > index; index++) {\n      value = mapping ? mapfn(O[index], index) : O[index];\n      createProperty(result, index, value);\n    }\n  }\n  result.length = index;\n  return result;\n};\n", "var toIndexedObject = require('../internals/to-indexed-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n  return function ($this, el, fromIndex) {\n    var O = toIndexedObject($this);\n    var length = lengthOfArrayLike(O);\n    var index = toAbsoluteIndex(fromIndex, length);\n    var value;\n    // Array#includes uses SameValueZero equality algorithm\n    // eslint-disable-next-line no-self-compare -- NaN check\n    if (IS_INCLUDES && el != el) while (length > index) {\n      value = O[index++];\n      // eslint-disable-next-line no-self-compare -- NaN check\n      if (value != value) return true;\n    // Array#indexOf ignores holes, Array#includes - not\n    } else for (;length > index; index++) {\n      if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n    } return !IS_INCLUDES && -1;\n  };\n};\n\nmodule.exports = {\n  // `Array.prototype.includes` method\n  // https://tc39.es/ecma262/#sec-array.prototype.includes\n  includes: createMethod(true),\n  // `Array.prototype.indexOf` method\n  // https://tc39.es/ecma262/#sec-array.prototype.indexof\n  indexOf: createMethod(false)\n};\n", "var bind = require('../internals/function-bind-context');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\nvar push = uncurryThis([].push);\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterReject }` methods implementation\nvar createMethod = function (TYPE) {\n  var IS_MAP = TYPE == 1;\n  var IS_FILTER = TYPE == 2;\n  var IS_SOME = TYPE == 3;\n  var IS_EVERY = TYPE == 4;\n  var IS_FIND_INDEX = TYPE == 6;\n  var IS_FILTER_REJECT = TYPE == 7;\n  var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n  return function ($this, callbackfn, that, specificCreate) {\n    var O = toObject($this);\n    var self = IndexedObject(O);\n    var boundFunction = bind(callbackfn, that);\n    var length = lengthOfArrayLike(self);\n    var index = 0;\n    var create = specificCreate || arraySpeciesCreate;\n    var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_REJECT ? create($this, 0) : undefined;\n    var value, result;\n    for (;length > index; index++) if (NO_HOLES || index in self) {\n      value = self[index];\n      result = boundFunction(value, index, O);\n      if (TYPE) {\n        if (IS_MAP) target[index] = result; // map\n        else if (result) switch (TYPE) {\n          case 3: return true;              // some\n          case 5: return value;             // find\n          case 6: return index;             // findIndex\n          case 2: push(target, value);      // filter\n        } else switch (TYPE) {\n          case 4: return false;             // every\n          case 7: push(target, value);      // filterReject\n        }\n      }\n    }\n    return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n  };\n};\n\nmodule.exports = {\n  // `Array.prototype.forEach` method\n  // https://tc39.es/ecma262/#sec-array.prototype.foreach\n  forEach: createMethod(0),\n  // `Array.prototype.map` method\n  // https://tc39.es/ecma262/#sec-array.prototype.map\n  map: createMethod(1),\n  // `Array.prototype.filter` method\n  // https://tc39.es/ecma262/#sec-array.prototype.filter\n  filter: createMethod(2),\n  // `Array.prototype.some` method\n  // https://tc39.es/ecma262/#sec-array.prototype.some\n  some: createMethod(3),\n  // `Array.prototype.every` method\n  // https://tc39.es/ecma262/#sec-array.prototype.every\n  every: createMethod(4),\n  // `Array.prototype.find` method\n  // https://tc39.es/ecma262/#sec-array.prototype.find\n  find: createMethod(5),\n  // `Array.prototype.findIndex` method\n  // https://tc39.es/ecma262/#sec-array.prototype.findIndex\n  findIndex: createMethod(6),\n  // `Array.prototype.filterReject` method\n  // https://github.com/tc39/proposal-array-filtering\n  filterReject: createMethod(7)\n};\n", "'use strict';\n/* eslint-disable es/no-array-prototype-lastindexof -- safe */\nvar apply = require('../internals/function-apply');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar min = Math.min;\nvar $lastIndexOf = [].lastIndexOf;\nvar NEGATIVE_ZERO = !!$lastIndexOf && 1 / [1].lastIndexOf(1, -0) < 0;\nvar STRICT_METHOD = arrayMethodIsStrict('lastIndexOf');\nvar FORCED = NEGATIVE_ZERO || !STRICT_METHOD;\n\n// `Array.prototype.lastIndexOf` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.lastindexof\nmodule.exports = FORCED ? function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) {\n  // convert -0 to +0\n  if (NEGATIVE_ZERO) return apply($lastIndexOf, this, arguments) || 0;\n  var O = toIndexedObject(this);\n  var length = lengthOfArrayLike(O);\n  var index = length - 1;\n  if (arguments.length > 1) index = min(index, toIntegerOrInfinity(arguments[1]));\n  if (index < 0) index = length + index;\n  for (;index >= 0; index--) if (index in O && O[index] === searchElement) return index || 0;\n  return -1;\n} : $lastIndexOf;\n", "var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n  // We can't use this feature detection in V8 since it causes\n  // deoptimization and serious performance degradation\n  // https://github.com/zloirock/core-js/issues/677\n  return V8_VERSION >= 51 || !fails(function () {\n    var array = [];\n    var constructor = array.constructor = {};\n    constructor[SPECIES] = function () {\n      return { foo: 1 };\n    };\n    return array[METHOD_NAME](Boolean).foo !== 1;\n  });\n};\n", "'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = function (METHOD_NAME, argument) {\n  var method = [][METHOD_NAME];\n  return !!method && fails(function () {\n    // eslint-disable-next-line no-useless-call,no-throw-literal -- required for testing\n    method.call(null, argument || function () { throw 1; }, 1);\n  });\n};\n", "var global = require('../internals/global');\nvar aCallable = require('../internals/a-callable');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\nvar TypeError = global.TypeError;\n\n// `Array.prototype.{ reduce, reduceRight }` methods implementation\nvar createMethod = function (IS_RIGHT) {\n  return function (that, callbackfn, argumentsLength, memo) {\n    aCallable(callbackfn);\n    var O = toObject(that);\n    var self = IndexedObject(O);\n    var length = lengthOfArrayLike(O);\n    var index = IS_RIGHT ? length - 1 : 0;\n    var i = IS_RIGHT ? -1 : 1;\n    if (argumentsLength < 2) while (true) {\n      if (index in self) {\n        memo = self[index];\n        index += i;\n        break;\n      }\n      index += i;\n      if (IS_RIGHT ? index < 0 : length <= index) {\n        throw TypeError('Reduce of empty array with no initial value');\n      }\n    }\n    for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) {\n      memo = callbackfn(memo, self[index], index, O);\n    }\n    return memo;\n  };\n};\n\nmodule.exports = {\n  // `Array.prototype.reduce` method\n  // https://tc39.es/ecma262/#sec-array.prototype.reduce\n  left: createMethod(false),\n  // `Array.prototype.reduceRight` method\n  // https://tc39.es/ecma262/#sec-array.prototype.reduceright\n  right: createMethod(true)\n};\n", "var uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis([].slice);\n", "var arraySlice = require('../internals/array-slice');\n\nvar floor = Math.floor;\n\nvar mergeSort = function (array, comparefn) {\n  var length = array.length;\n  var middle = floor(length / 2);\n  return length < 8 ? insertionSort(array, comparefn) : merge(\n    array,\n    mergeSort(arraySlice(array, 0, middle), comparefn),\n    mergeSort(arraySlice(array, middle), comparefn),\n    comparefn\n  );\n};\n\nvar insertionSort = function (array, comparefn) {\n  var length = array.length;\n  var i = 1;\n  var element, j;\n\n  while (i < length) {\n    j = i;\n    element = array[i];\n    while (j && comparefn(array[j - 1], element) > 0) {\n      array[j] = array[--j];\n    }\n    if (j !== i++) array[j] = element;\n  } return array;\n};\n\nvar merge = function (array, left, right, comparefn) {\n  var llength = left.length;\n  var rlength = right.length;\n  var lindex = 0;\n  var rindex = 0;\n\n  while (lindex < llength || rindex < rlength) {\n    array[lindex + rindex] = (lindex < llength && rindex < rlength)\n      ? comparefn(left[lindex], right[rindex]) <= 0 ? left[lindex++] : right[rindex++]\n      : lindex < llength ? left[lindex++] : right[rindex++];\n  } return array;\n};\n\nmodule.exports = mergeSort;\n", "var global = require('../internals/global');\nvar isArray = require('../internals/is-array');\nvar isConstructor = require('../internals/is-constructor');\nvar isObject = require('../internals/is-object');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\nvar Array = global.Array;\n\n// a part of `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray) {\n  var C;\n  if (isArray(originalArray)) {\n    C = originalArray.constructor;\n    // cross-realm fallback\n    if (isConstructor(C) && (C === Array || isArray(C.prototype))) C = undefined;\n    else if (isObject(C)) {\n      C = C[SPECIES];\n      if (C === null) C = undefined;\n    }\n  } return C === undefined ? Array : C;\n};\n", "var arraySpeciesConstructor = require('../internals/array-species-constructor');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n  return new (arraySpeciesConstructor(originalArray))(length === 0 ? 0 : length);\n};\n", "var anObject = require('../internals/an-object');\nvar iteratorClose = require('../internals/iterator-close');\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n  try {\n    return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n  } catch (error) {\n    iteratorClose(iterator, 'throw', error);\n  }\n};\n", "var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n  var called = 0;\n  var iteratorWithReturn = {\n    next: function () {\n      return { done: !!called++ };\n    },\n    'return': function () {\n      SAFE_CLOSING = true;\n    }\n  };\n  iteratorWithReturn[ITERATOR] = function () {\n    return this;\n  };\n  // eslint-disable-next-line es/no-array-from, no-throw-literal -- required for testing\n  Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n  if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n  var ITERATION_SUPPORT = false;\n  try {\n    var object = {};\n    object[ITERATOR] = function () {\n      return {\n        next: function () {\n          return { done: ITERATION_SUPPORT = true };\n        }\n      };\n    };\n    exec(object);\n  } catch (error) { /* empty */ }\n  return ITERATION_SUPPORT;\n};\n", "var uncurryThis = require('../internals/function-uncurry-this');\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n  return stringSlice(toString(it), 8, -1);\n};\n", "var global = require('../internals/global');\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar isCallable = require('../internals/is-callable');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar Object = global.Object;\n\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n  try {\n    return it[key];\n  } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n  var O, tag, result;\n  return it === undefined ? 'Undefined' : it === null ? 'Null'\n    // @@toStringTag case\n    : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag\n    // builtinTag case\n    : CORRECT_ARGUMENTS ? classofRaw(O)\n    // ES3 arguments fallback\n    : (result = classofRaw(O)) == 'Object' && isCallable(O.callee) ? 'Arguments' : result;\n};\n", "var uncurryThis = require('../internals/function-uncurry-this');\nvar arraySlice = require('../internals/array-slice');\n\nvar replace = uncurryThis(''.replace);\nvar split = uncurryThis(''.split);\nvar join = uncurryThis([].join);\n\nvar TEST = (function (arg) { return String(Error(arg).stack); })('zxcasd');\nvar V8_OR_CHAKRA_STACK_ENTRY = /\\n\\s*at [^:]*:[^\\n]*/;\nvar IS_V8_OR_CHAKRA_STACK = V8_OR_CHAKRA_STACK_ENTRY.test(TEST);\nvar IS_FIREFOX_OR_SAFARI_STACK = /@[^\\n]*\\n/.test(TEST) && !/zxcasd/.test(TEST);\n\nmodule.exports = function (stack, dropEntries) {\n  if (typeof stack != 'string') return stack;\n  if (IS_V8_OR_CHAKRA_STACK) {\n    while (dropEntries--) stack = replace(stack, V8_OR_CHAKRA_STACK_ENTRY, '');\n  } else if (IS_FIREFOX_OR_SAFARI_STACK) {\n    return join(arraySlice(split(stack, '\\n'), dropEntries), '\\n');\n  } return stack;\n};\n", "'use strict';\nvar defineProperty = require('../internals/object-define-property').f;\nvar create = require('../internals/object-create');\nvar redefineAll = require('../internals/redefine-all');\nvar bind = require('../internals/function-bind-context');\nvar anInstance = require('../internals/an-instance');\nvar iterate = require('../internals/iterate');\nvar defineIterator = require('../internals/define-iterator');\nvar setSpecies = require('../internals/set-species');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fastKey = require('../internals/internal-metadata').fastKey;\nvar InternalStateModule = require('../internals/internal-state');\n\nvar setInternalState = InternalStateModule.set;\nvar internalStateGetterFor = InternalStateModule.getterFor;\n\nmodule.exports = {\n  getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {\n    var Constructor = wrapper(function (that, iterable) {\n      anInstance(that, Prototype);\n      setInternalState(that, {\n        type: CONSTRUCTOR_NAME,\n        index: create(null),\n        first: undefined,\n        last: undefined,\n        size: 0\n      });\n      if (!DESCRIPTORS) that.size = 0;\n      if (iterable != undefined) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });\n    });\n\n    var Prototype = Constructor.prototype;\n\n    var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);\n\n    var define = function (that, key, value) {\n      var state = getInternalState(that);\n      var entry = getEntry(that, key);\n      var previous, index;\n      // change existing entry\n      if (entry) {\n        entry.value = value;\n      // create new entry\n      } else {\n        state.last = entry = {\n          index: index = fastKey(key, true),\n          key: key,\n          value: value,\n          previous: previous = state.last,\n          next: undefined,\n          removed: false\n        };\n        if (!state.first) state.first = entry;\n        if (previous) previous.next = entry;\n        if (DESCRIPTORS) state.size++;\n        else that.size++;\n        // add to index\n        if (index !== 'F') state.index[index] = entry;\n      } return that;\n    };\n\n    var getEntry = function (that, key) {\n      var state = getInternalState(that);\n      // fast case\n      var index = fastKey(key);\n      var entry;\n      if (index !== 'F') return state.index[index];\n      // frozen object case\n      for (entry = state.first; entry; entry = entry.next) {\n        if (entry.key == key) return entry;\n      }\n    };\n\n    redefineAll(Prototype, {\n      // `{ Map, Set }.prototype.clear()` methods\n      // https://tc39.es/ecma262/#sec-map.prototype.clear\n      // https://tc39.es/ecma262/#sec-set.prototype.clear\n      clear: function clear() {\n        var that = this;\n        var state = getInternalState(that);\n        var data = state.index;\n        var entry = state.first;\n        while (entry) {\n          entry.removed = true;\n          if (entry.previous) entry.previous = entry.previous.next = undefined;\n          delete data[entry.index];\n          entry = entry.next;\n        }\n        state.first = state.last = undefined;\n        if (DESCRIPTORS) state.size = 0;\n        else that.size = 0;\n      },\n      // `{ Map, Set }.prototype.delete(key)` methods\n      // https://tc39.es/ecma262/#sec-map.prototype.delete\n      // https://tc39.es/ecma262/#sec-set.prototype.delete\n      'delete': function (key) {\n        var that = this;\n        var state = getInternalState(that);\n        var entry = getEntry(that, key);\n        if (entry) {\n          var next = entry.next;\n          var prev = entry.previous;\n          delete state.index[entry.index];\n          entry.removed = true;\n          if (prev) prev.next = next;\n          if (next) next.previous = prev;\n          if (state.first == entry) state.first = next;\n          if (state.last == entry) state.last = prev;\n          if (DESCRIPTORS) state.size--;\n          else that.size--;\n        } return !!entry;\n      },\n      // `{ Map, Set }.prototype.forEach(callbackfn, thisArg = undefined)` methods\n      // https://tc39.es/ecma262/#sec-map.prototype.foreach\n      // https://tc39.es/ecma262/#sec-set.prototype.foreach\n      forEach: function forEach(callbackfn /* , that = undefined */) {\n        var state = getInternalState(this);\n        var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n        var entry;\n        while (entry = entry ? entry.next : state.first) {\n          boundFunction(entry.value, entry.key, this);\n          // revert to the last existing entry\n          while (entry && entry.removed) entry = entry.previous;\n        }\n      },\n      // `{ Map, Set}.prototype.has(key)` methods\n      // https://tc39.es/ecma262/#sec-map.prototype.has\n      // https://tc39.es/ecma262/#sec-set.prototype.has\n      has: function has(key) {\n        return !!getEntry(this, key);\n      }\n    });\n\n    redefineAll(Prototype, IS_MAP ? {\n      // `Map.prototype.get(key)` method\n      // https://tc39.es/ecma262/#sec-map.prototype.get\n      get: function get(key) {\n        var entry = getEntry(this, key);\n        return entry && entry.value;\n      },\n      // `Map.prototype.set(key, value)` method\n      // https://tc39.es/ecma262/#sec-map.prototype.set\n      set: function set(key, value) {\n        return define(this, key === 0 ? 0 : key, value);\n      }\n    } : {\n      // `Set.prototype.add(value)` method\n      // https://tc39.es/ecma262/#sec-set.prototype.add\n      add: function add(value) {\n        return define(this, value = value === 0 ? 0 : value, value);\n      }\n    });\n    if (DESCRIPTORS) defineProperty(Prototype, 'size', {\n      get: function () {\n        return getInternalState(this).size;\n      }\n    });\n    return Constructor;\n  },\n  setStrong: function (Constructor, CONSTRUCTOR_NAME, IS_MAP) {\n    var ITERATOR_NAME = CONSTRUCTOR_NAME + ' Iterator';\n    var getInternalCollectionState = internalStateGetterFor(CONSTRUCTOR_NAME);\n    var getInternalIteratorState = internalStateGetterFor(ITERATOR_NAME);\n    // `{ Map, Set }.prototype.{ keys, values, entries, @@iterator }()` methods\n    // https://tc39.es/ecma262/#sec-map.prototype.entries\n    // https://tc39.es/ecma262/#sec-map.prototype.keys\n    // https://tc39.es/ecma262/#sec-map.prototype.values\n    // https://tc39.es/ecma262/#sec-map.prototype-@@iterator\n    // https://tc39.es/ecma262/#sec-set.prototype.entries\n    // https://tc39.es/ecma262/#sec-set.prototype.keys\n    // https://tc39.es/ecma262/#sec-set.prototype.values\n    // https://tc39.es/ecma262/#sec-set.prototype-@@iterator\n    defineIterator(Constructor, CONSTRUCTOR_NAME, function (iterated, kind) {\n      setInternalState(this, {\n        type: ITERATOR_NAME,\n        target: iterated,\n        state: getInternalCollectionState(iterated),\n        kind: kind,\n        last: undefined\n      });\n    }, function () {\n      var state = getInternalIteratorState(this);\n      var kind = state.kind;\n      var entry = state.last;\n      // revert to the last existing entry\n      while (entry && entry.removed) entry = entry.previous;\n      // get next entry\n      if (!state.target || !(state.last = entry = entry ? entry.next : state.state.first)) {\n        // or finish the iteration\n        state.target = undefined;\n        return { value: undefined, done: true };\n      }\n      // return step by kind\n      if (kind == 'keys') return { value: entry.key, done: false };\n      if (kind == 'values') return { value: entry.value, done: false };\n      return { value: [entry.key, entry.value], done: false };\n    }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n    // `{ Map, Set }.prototype[@@species]` accessors\n    // https://tc39.es/ecma262/#sec-get-map-@@species\n    // https://tc39.es/ecma262/#sec-get-set-@@species\n    setSpecies(CONSTRUCTOR_NAME);\n  }\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isForced = require('../internals/is-forced');\nvar redefine = require('../internals/redefine');\nvar InternalMetadataModule = require('../internals/internal-metadata');\nvar iterate = require('../internals/iterate');\nvar anInstance = require('../internals/an-instance');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar fails = require('../internals/fails');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar inheritIfRequired = require('../internals/inherit-if-required');\n\nmodule.exports = function (CONSTRUCTOR_NAME, wrapper, common) {\n  var IS_MAP = CONSTRUCTOR_NAME.indexOf('Map') !== -1;\n  var IS_WEAK = CONSTRUCTOR_NAME.indexOf('Weak') !== -1;\n  var ADDER = IS_MAP ? 'set' : 'add';\n  var NativeConstructor = global[CONSTRUCTOR_NAME];\n  var NativePrototype = NativeConstructor && NativeConstructor.prototype;\n  var Constructor = NativeConstructor;\n  var exported = {};\n\n  var fixMethod = function (KEY) {\n    var uncurriedNativeMethod = uncurryThis(NativePrototype[KEY]);\n    redefine(NativePrototype, KEY,\n      KEY == 'add' ? function add(value) {\n        uncurriedNativeMethod(this, value === 0 ? 0 : value);\n        return this;\n      } : KEY == 'delete' ? function (key) {\n        return IS_WEAK && !isObject(key) ? false : uncurriedNativeMethod(this, key === 0 ? 0 : key);\n      } : KEY == 'get' ? function get(key) {\n        return IS_WEAK && !isObject(key) ? undefined : uncurriedNativeMethod(this, key === 0 ? 0 : key);\n      } : KEY == 'has' ? function has(key) {\n        return IS_WEAK && !isObject(key) ? false : uncurriedNativeMethod(this, key === 0 ? 0 : key);\n      } : function set(key, value) {\n        uncurriedNativeMethod(this, key === 0 ? 0 : key, value);\n        return this;\n      }\n    );\n  };\n\n  var REPLACE = isForced(\n    CONSTRUCTOR_NAME,\n    !isCallable(NativeConstructor) || !(IS_WEAK || NativePrototype.forEach && !fails(function () {\n      new NativeConstructor().entries().next();\n    }))\n  );\n\n  if (REPLACE) {\n    // create collection constructor\n    Constructor = common.getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER);\n    InternalMetadataModule.enable();\n  } else if (isForced(CONSTRUCTOR_NAME, true)) {\n    var instance = new Constructor();\n    // early implementations not supports chaining\n    var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n    // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false\n    var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\n    // most early implementations doesn't supports iterables, most modern - not close it correctly\n    // eslint-disable-next-line no-new -- required for testing\n    var ACCEPT_ITERABLES = checkCorrectnessOfIteration(function (iterable) { new NativeConstructor(iterable); });\n    // for early implementations -0 and +0 not the same\n    var BUGGY_ZERO = !IS_WEAK && fails(function () {\n      // V8 ~ Chromium 42- fails only with 5+ elements\n      var $instance = new NativeConstructor();\n      var index = 5;\n      while (index--) $instance[ADDER](index, index);\n      return !$instance.has(-0);\n    });\n\n    if (!ACCEPT_ITERABLES) {\n      Constructor = wrapper(function (dummy, iterable) {\n        anInstance(dummy, NativePrototype);\n        var that = inheritIfRequired(new NativeConstructor(), dummy, Constructor);\n        if (iterable != undefined) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });\n        return that;\n      });\n      Constructor.prototype = NativePrototype;\n      NativePrototype.constructor = Constructor;\n    }\n\n    if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n      fixMethod('delete');\n      fixMethod('has');\n      IS_MAP && fixMethod('get');\n    }\n\n    if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n\n    // weak collections should not contains .clear method\n    if (IS_WEAK && NativePrototype.clear) delete NativePrototype.clear;\n  }\n\n  exported[CONSTRUCTOR_NAME] = Constructor;\n  $({ global: true, forced: Constructor != NativeConstructor }, exported);\n\n  setToStringTag(Constructor, CONSTRUCTOR_NAME);\n\n  if (!IS_WEAK) common.setStrong(Constructor, CONSTRUCTOR_NAME, IS_MAP);\n\n  return Constructor;\n};\n", "var hasOwn = require('../internals/has-own-property');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source) {\n  var keys = ownKeys(source);\n  var defineProperty = definePropertyModule.f;\n  var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n  for (var i = 0; i < keys.length; i++) {\n    var key = keys[i];\n    if (!hasOwn(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n  }\n};\n", "var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\nmodule.exports = function (METHOD_NAME) {\n  var regexp = /./;\n  try {\n    '/./'[METHOD_NAME](regexp);\n  } catch (error1) {\n    try {\n      regexp[MATCH] = false;\n      return '/./'[METHOD_NAME](regexp);\n    } catch (error2) { /* empty */ }\n  } return false;\n};\n", "var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n  function F() { /* empty */ }\n  F.prototype.constructor = null;\n  // eslint-disable-next-line es/no-object-getprototypeof -- required for testing\n  return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n", "var uncurryThis = require('../internals/function-uncurry-this');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\n\nvar quot = /\"/g;\nvar replace = uncurryThis(''.replace);\n\n// `CreateHTML` abstract operation\n// https://tc39.es/ecma262/#sec-createhtml\nmodule.exports = function (string, tag, attribute, value) {\n  var S = toString(requireObjectCoercible(string));\n  var p1 = '<' + tag;\n  if (attribute !== '') p1 += ' ' + attribute + '=\"' + replace(toString(value), quot, '&quot;') + '\"';\n  return p1 + '>' + S + '</' + tag + '>';\n};\n", "'use strict';\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar Iterators = require('../internals/iterators');\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next) {\n  var TO_STRING_TAG = NAME + ' Iterator';\n  IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) });\n  setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n  Iterators[TO_STRING_TAG] = returnThis;\n  return IteratorConstructor;\n};\n", "var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n  return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n  object[key] = value;\n  return object;\n};\n", "module.exports = function (bitmap, value) {\n  return {\n    enumerable: !(bitmap & 1),\n    configurable: !(bitmap & 2),\n    writable: !(bitmap & 4),\n    value: value\n  };\n};\n", "'use strict';\nvar toPropertyKey = require('../internals/to-property-key');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n  var propertyKey = toPropertyKey(key);\n  if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n  else object[propertyKey] = value;\n};\n", "'use strict';\nvar global = require('../internals/global');\nvar anObject = require('../internals/an-object');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\n\nvar TypeError = global.TypeError;\n\n// `Date.prototype[@@toPrimitive](hint)` method implementation\n// https://tc39.es/ecma262/#sec-date.prototype-@@toprimitive\nmodule.exports = function (hint) {\n  anObject(this);\n  if (hint === 'string' || hint === 'default') hint = 'string';\n  else if (hint !== 'number') throw TypeError('Incorrect hint');\n  return ordinaryToPrimitive(this, hint);\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar IS_PURE = require('../internals/is-pure');\nvar FunctionName = require('../internals/function-name');\nvar isCallable = require('../internals/is-callable');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\nvar IteratorsCore = require('../internals/iterators-core');\n\nvar PROPER_FUNCTION_NAME = FunctionName.PROPER;\nvar CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE;\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n  createIteratorConstructor(IteratorConstructor, NAME, next);\n\n  var getIterationMethod = function (KIND) {\n    if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n    if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n    switch (KIND) {\n      case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n      case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n      case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n    } return function () { return new IteratorConstructor(this); };\n  };\n\n  var TO_STRING_TAG = NAME + ' Iterator';\n  var INCORRECT_VALUES_NAME = false;\n  var IterablePrototype = Iterable.prototype;\n  var nativeIterator = IterablePrototype[ITERATOR]\n    || IterablePrototype['@@iterator']\n    || DEFAULT && IterablePrototype[DEFAULT];\n  var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n  var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n  var CurrentIteratorPrototype, methods, KEY;\n\n  // fix native\n  if (anyNativeIterator) {\n    CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n    if (CurrentIteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n      if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n        if (setPrototypeOf) {\n          setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n        } else if (!isCallable(CurrentIteratorPrototype[ITERATOR])) {\n          redefine(CurrentIteratorPrototype, ITERATOR, returnThis);\n        }\n      }\n      // Set @@toStringTag to native iterators\n      setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n      if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n    }\n  }\n\n  // fix Array.prototype.{ values, @@iterator }.name in V8 / FF\n  if (PROPER_FUNCTION_NAME && DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n    if (!IS_PURE && CONFIGURABLE_FUNCTION_NAME) {\n      createNonEnumerableProperty(IterablePrototype, 'name', VALUES);\n    } else {\n      INCORRECT_VALUES_NAME = true;\n      defaultIterator = function values() { return call(nativeIterator, this); };\n    }\n  }\n\n  // export additional methods\n  if (DEFAULT) {\n    methods = {\n      values: getIterationMethod(VALUES),\n      keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n      entries: getIterationMethod(ENTRIES)\n    };\n    if (FORCED) for (KEY in methods) {\n      if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n        redefine(IterablePrototype, KEY, methods[KEY]);\n      }\n    } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n  }\n\n  // define iterator\n  if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n    redefine(IterablePrototype, ITERATOR, defaultIterator, { name: DEFAULT });\n  }\n  Iterators[NAME] = defaultIterator;\n\n  return methods;\n};\n", "var path = require('../internals/path');\nvar hasOwn = require('../internals/has-own-property');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineProperty = require('../internals/object-define-property').f;\n\nmodule.exports = function (NAME) {\n  var Symbol = path.Symbol || (path.Symbol = {});\n  if (!hasOwn(Symbol, NAME)) defineProperty(Symbol, NAME, {\n    value: wrappedWellKnownSymbolModule.f(NAME)\n  });\n};\n", "var fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n  // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n  return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n", "var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n  return EXISTS ? document.createElement(it) : {};\n};\n", "// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n  CSSRuleList: 0,\n  CSSStyleDeclaration: 0,\n  CSSValueList: 0,\n  ClientRectList: 0,\n  DOMRectList: 0,\n  DOMStringList: 0,\n  DOMTokenList: 1,\n  DataTransferItemList: 0,\n  FileList: 0,\n  HTMLAllCollection: 0,\n  HTMLCollection: 0,\n  HTMLFormElement: 0,\n  HTMLSelectElement: 0,\n  MediaList: 0,\n  MimeTypeArray: 0,\n  NamedNodeMap: 0,\n  NodeList: 1,\n  PaintRequestList: 0,\n  Plugin: 0,\n  PluginArray: 0,\n  SVGLengthList: 0,\n  SVGNumberList: 0,\n  SVGPathSegList: 0,\n  SVGPointList: 0,\n  SVGStringList: 0,\n  SVGTransformList: 0,\n  SourceBufferList: 0,\n  StyleSheetList: 0,\n  TextTrackCueList: 0,\n  TextTrackList: 0,\n  TouchList: 0\n};\n", "// in old WebKit versions, `element.classList` is not an instance of global `DOMTokenList`\nvar documentCreateElement = require('../internals/document-create-element');\n\nvar classList = documentCreateElement('span').classList;\nvar DOMTokenListPrototype = classList && classList.constructor && classList.constructor.prototype;\n\nmodule.exports = DOMTokenListPrototype === Object.prototype ? undefined : DOMTokenListPrototype;\n", "var userAgent = require('../internals/engine-user-agent');\n\nvar firefox = userAgent.match(/firefox\\/(\\d+)/i);\n\nmodule.exports = !!firefox && +firefox[1];\n", "module.exports = typeof window == 'object';\n", "var UA = require('../internals/engine-user-agent');\n\nmodule.exports = /MSIE|Trident/.test(UA);\n", "var userAgent = require('../internals/engine-user-agent');\nvar global = require('../internals/global');\n\nmodule.exports = /ipad|iphone|ipod/i.test(userAgent) && global.Pebble !== undefined;\n", "var userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /(?:ipad|iphone|ipod).*applewebkit/i.test(userAgent);\n", "var classof = require('../internals/classof-raw');\nvar global = require('../internals/global');\n\nmodule.exports = classof(global.process) == 'process';\n", "var userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /web0s(?!.*chrome)/i.test(userAgent);\n", "var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n", "var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar Deno = global.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n  match = v8.split('.');\n  // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n  // but their correct versions are not interesting for us\n  version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n  match = userAgent.match(/Edge\\/(\\d+)/);\n  if (!match || match[1] >= 74) {\n    match = userAgent.match(/Chrome\\/(\\d+)/);\n    if (match) version = +match[1];\n  }\n}\n\nmodule.exports = version;\n", "var userAgent = require('../internals/engine-user-agent');\n\nvar webkit = userAgent.match(/AppleWebKit\\/(\\d+)\\./);\n\nmodule.exports = !!webkit && +webkit[1];\n", "// IE8- don't enum bug keys\nmodule.exports = [\n  'constructor',\n  'hasOwnProperty',\n  'isPrototypeOf',\n  'propertyIsEnumerable',\n  'toLocaleString',\n  'toString',\n  'valueOf'\n];\n", "var fails = require('../internals/fails');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = !fails(function () {\n  var error = Error('a');\n  if (!('stack' in error)) return true;\n  // eslint-disable-next-line es/no-object-defineproperty -- safe\n  Object.defineProperty(error, 'stack', createPropertyDescriptor(1, 7));\n  return error.stack !== 7;\n});\n", "var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar setGlobal = require('../internals/set-global');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n  options.target      - name of the target object\n  options.global      - target is the global object\n  options.stat        - export as static methods of target\n  options.proto       - export as prototype methods of target\n  options.real        - real prototype method for the `pure` version\n  options.forced      - export even if the native feature is available\n  options.bind        - bind methods to the target, required for the `pure` version\n  options.wrap        - wrap constructors to preventing global pollution, required for the `pure` version\n  options.unsafe      - use the simple assignment of property instead of delete + defineProperty\n  options.sham        - add a flag to not completely full polyfills\n  options.enumerable  - export as enumerable property\n  options.noTargetGet - prevent calling a getter on target\n  options.name        - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n  var TARGET = options.target;\n  var GLOBAL = options.global;\n  var STATIC = options.stat;\n  var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n  if (GLOBAL) {\n    target = global;\n  } else if (STATIC) {\n    target = global[TARGET] || setGlobal(TARGET, {});\n  } else {\n    target = (global[TARGET] || {}).prototype;\n  }\n  if (target) for (key in source) {\n    sourceProperty = source[key];\n    if (options.noTargetGet) {\n      descriptor = getOwnPropertyDescriptor(target, key);\n      targetProperty = descriptor && descriptor.value;\n    } else targetProperty = target[key];\n    FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n    // contained in target\n    if (!FORCED && targetProperty !== undefined) {\n      if (typeof sourceProperty == typeof targetProperty) continue;\n      copyConstructorProperties(sourceProperty, targetProperty);\n    }\n    // add a flag to not completely full polyfills\n    if (options.sham || (targetProperty && targetProperty.sham)) {\n      createNonEnumerableProperty(sourceProperty, 'sham', true);\n    }\n    // extend global\n    redefine(target, key, sourceProperty, options);\n  }\n};\n", "module.exports = function (exec) {\n  try {\n    return !!exec();\n  } catch (error) {\n    return true;\n  }\n};\n", "'use strict';\n// TODO: Remove from `core-js@4` since it's moved to entry points\nrequire('../modules/es.regexp.exec');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar redefine = require('../internals/redefine');\nvar regexpExec = require('../internals/regexp-exec');\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nvar SPECIES = wellKnownSymbol('species');\nvar RegExpPrototype = RegExp.prototype;\n\nmodule.exports = function (KEY, exec, FORCED, SHAM) {\n  var SYMBOL = wellKnownSymbol(KEY);\n\n  var DELEGATES_TO_SYMBOL = !fails(function () {\n    // String methods call symbol-named RegEp methods\n    var O = {};\n    O[SYMBOL] = function () { return 7; };\n    return ''[KEY](O) != 7;\n  });\n\n  var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {\n    // Symbol-named RegExp methods call .exec\n    var execCalled = false;\n    var re = /a/;\n\n    if (KEY === 'split') {\n      // We can't use real regex here since it causes deoptimization\n      // and serious performance degradation in V8\n      // https://github.com/zloirock/core-js/issues/306\n      re = {};\n      // RegExp[@@split] doesn't call the regex's exec method, but first creates\n      // a new one. We need to return the patched regex when creating the new one.\n      re.constructor = {};\n      re.constructor[SPECIES] = function () { return re; };\n      re.flags = '';\n      re[SYMBOL] = /./[SYMBOL];\n    }\n\n    re.exec = function () { execCalled = true; return null; };\n\n    re[SYMBOL]('');\n    return !execCalled;\n  });\n\n  if (\n    !DELEGATES_TO_SYMBOL ||\n    !DELEGATES_TO_EXEC ||\n    FORCED\n  ) {\n    var uncurriedNativeRegExpMethod = uncurryThis(/./[SYMBOL]);\n    var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {\n      var uncurriedNativeMethod = uncurryThis(nativeMethod);\n      var $exec = regexp.exec;\n      if ($exec === regexpExec || $exec === RegExpPrototype.exec) {\n        if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n          // The native String method already delegates to @@method (this\n          // polyfilled function), leasing to infinite recursion.\n          // We avoid it by directly calling the native @@method method.\n          return { done: true, value: uncurriedNativeRegExpMethod(regexp, str, arg2) };\n        }\n        return { done: true, value: uncurriedNativeMethod(str, regexp, arg2) };\n      }\n      return { done: false };\n    });\n\n    redefine(String.prototype, KEY, methods[0]);\n    redefine(RegExpPrototype, SYMBOL, methods[1]);\n  }\n\n  if (SHAM) createNonEnumerableProperty(RegExpPrototype[SYMBOL], 'sham', true);\n};\n", "var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n  // eslint-disable-next-line es/no-object-isextensible, es/no-object-preventextensions -- required for testing\n  return Object.isExtensible(Object.preventExtensions({}));\n});\n", "var FunctionPrototype = Function.prototype;\nvar apply = FunctionPrototype.apply;\nvar bind = FunctionPrototype.bind;\nvar call = FunctionPrototype.call;\n\n// eslint-disable-next-line es/no-reflect -- safe\nmodule.exports = typeof Reflect == 'object' && Reflect.apply || (bind ? call.bind(apply) : function () {\n  return call.apply(apply, arguments);\n});\n", "var uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\n\nvar bind = uncurryThis(uncurryThis.bind);\n\n// optional / simple context binding\nmodule.exports = function (fn, that) {\n  aCallable(fn);\n  return that === undefined ? fn : bind ? bind(fn, that) : function (/* ...args */) {\n    return fn.apply(that, arguments);\n  };\n};\n", "'use strict';\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar isObject = require('../internals/is-object');\nvar hasOwn = require('../internals/has-own-property');\nvar arraySlice = require('../internals/array-slice');\n\nvar Function = global.Function;\nvar concat = uncurryThis([].concat);\nvar join = uncurryThis([].join);\nvar factories = {};\n\nvar construct = function (C, argsLength, args) {\n  if (!hasOwn(factories, argsLength)) {\n    for (var list = [], i = 0; i < argsLength; i++) list[i] = 'a[' + i + ']';\n    factories[argsLength] = Function('C,a', 'return new C(' + join(list, ',') + ')');\n  } return factories[argsLength](C, args);\n};\n\n// `Function.prototype.bind` method implementation\n// https://tc39.es/ecma262/#sec-function.prototype.bind\nmodule.exports = Function.bind || function bind(that /* , ...args */) {\n  var F = aCallable(this);\n  var Prototype = F.prototype;\n  var partArgs = arraySlice(arguments, 1);\n  var boundFunction = function bound(/* args... */) {\n    var args = concat(partArgs, arraySlice(arguments));\n    return this instanceof boundFunction ? construct(F, args.length, args) : F.apply(that, args);\n  };\n  if (isObject(Prototype)) boundFunction.prototype = Prototype;\n  return boundFunction;\n};\n", "var call = Function.prototype.call;\n\nmodule.exports = call.bind ? call.bind(call) : function () {\n  return call.apply(call, arguments);\n};\n", "var DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n  EXISTS: EXISTS,\n  PROPER: PROPER,\n  CONFIGURABLE: CONFIGURABLE\n};\n", "var FunctionPrototype = Function.prototype;\nvar bind = FunctionPrototype.bind;\nvar call = FunctionPrototype.call;\nvar callBind = bind && bind.bind(call);\n\nmodule.exports = bind ? function (fn) {\n  return fn && callBind(call, fn);\n} : function (fn) {\n  return fn && function () {\n    return call.apply(fn, arguments);\n  };\n};\n", "var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (argument) {\n  return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n  return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method];\n};\n", "var classof = require('../internals/classof');\nvar getMethod = require('../internals/get-method');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n  if (it != undefined) return getMethod(it, ITERATOR)\n    || getMethod(it, '@@iterator')\n    || Iterators[classof(it)];\n};\n", "var global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar tryToString = require('../internals/try-to-string');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nvar TypeError = global.TypeError;\n\nmodule.exports = function (argument, usingIterator) {\n  var iteratorMethod = arguments.length < 2 ? getIteratorMethod(argument) : usingIterator;\n  if (aCallable(iteratorMethod)) return anObject(call(iteratorMethod, argument));\n  throw TypeError(tryToString(argument) + ' is not iterable');\n};\n", "var aCallable = require('../internals/a-callable');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n  var func = V[P];\n  return func == null ? undefined : aCallable(func);\n};\n", "var uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar floor = Math.floor;\nvar charAt = uncurryThis(''.charAt);\nvar replace = uncurryThis(''.replace);\nvar stringSlice = uncurryThis(''.slice);\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d{1,2}|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d{1,2})/g;\n\n// `GetSubstitution` abstract operation\n// https://tc39.es/ecma262/#sec-getsubstitution\nmodule.exports = function (matched, str, position, captures, namedCaptures, replacement) {\n  var tailPos = position + matched.length;\n  var m = captures.length;\n  var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n  if (namedCaptures !== undefined) {\n    namedCaptures = toObject(namedCaptures);\n    symbols = SUBSTITUTION_SYMBOLS;\n  }\n  return replace(replacement, symbols, function (match, ch) {\n    var capture;\n    switch (charAt(ch, 0)) {\n      case '$': return '$';\n      case '&': return matched;\n      case '`': return stringSlice(str, 0, position);\n      case \"'\": return stringSlice(str, tailPos);\n      case '<':\n        capture = namedCaptures[stringSlice(ch, 1, -1)];\n        break;\n      default: // \\d\\d?\n        var n = +ch;\n        if (n === 0) return match;\n        if (n > m) {\n          var f = floor(n / 10);\n          if (f === 0) return match;\n          if (f <= m) return captures[f - 1] === undefined ? charAt(ch, 1) : captures[f - 1] + charAt(ch, 1);\n          return match;\n        }\n        capture = captures[n - 1];\n    }\n    return capture === undefined ? '' : capture;\n  });\n};\n", "var check = function (it) {\n  return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n  // eslint-disable-next-line es/no-global-this -- safe\n  check(typeof globalThis == 'object' && globalThis) ||\n  check(typeof window == 'object' && window) ||\n  // eslint-disable-next-line no-restricted-globals -- safe\n  check(typeof self == 'object' && self) ||\n  check(typeof global == 'object' && global) ||\n  // eslint-disable-next-line no-new-func -- fallback\n  (function () { return this; })() || Function('return this')();\n", "var uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n  return hasOwnProperty(toObject(it), key);\n};\n", "module.exports = {};\n", "var global = require('../internals/global');\n\nmodule.exports = function (a, b) {\n  var console = global.console;\n  if (console && console.error) {\n    arguments.length == 1 ? console.error(a) : console.error(a, b);\n  }\n};\n", "var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n", "var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n  // eslint-disable-next-line es/no-object-defineproperty -- requied for testing\n  return Object.defineProperty(createElement('div'), 'a', {\n    get: function () { return 7; }\n  }).a != 7;\n});\n", "// IEEE754 conversions based on https://github.com/feross/ieee754\nvar global = require('../internals/global');\n\nvar Array = global.Array;\nvar abs = Math.abs;\nvar pow = Math.pow;\nvar floor = Math.floor;\nvar log = Math.log;\nvar LN2 = Math.LN2;\n\nvar pack = function (number, mantissaLength, bytes) {\n  var buffer = Array(bytes);\n  var exponentLength = bytes * 8 - mantissaLength - 1;\n  var eMax = (1 << exponentLength) - 1;\n  var eBias = eMax >> 1;\n  var rt = mantissaLength === 23 ? pow(2, -24) - pow(2, -77) : 0;\n  var sign = number < 0 || number === 0 && 1 / number < 0 ? 1 : 0;\n  var index = 0;\n  var exponent, mantissa, c;\n  number = abs(number);\n  // eslint-disable-next-line no-self-compare -- NaN check\n  if (number != number || number === Infinity) {\n    // eslint-disable-next-line no-self-compare -- NaN check\n    mantissa = number != number ? 1 : 0;\n    exponent = eMax;\n  } else {\n    exponent = floor(log(number) / LN2);\n    if (number * (c = pow(2, -exponent)) < 1) {\n      exponent--;\n      c *= 2;\n    }\n    if (exponent + eBias >= 1) {\n      number += rt / c;\n    } else {\n      number += rt * pow(2, 1 - eBias);\n    }\n    if (number * c >= 2) {\n      exponent++;\n      c /= 2;\n    }\n    if (exponent + eBias >= eMax) {\n      mantissa = 0;\n      exponent = eMax;\n    } else if (exponent + eBias >= 1) {\n      mantissa = (number * c - 1) * pow(2, mantissaLength);\n      exponent = exponent + eBias;\n    } else {\n      mantissa = number * pow(2, eBias - 1) * pow(2, mantissaLength);\n      exponent = 0;\n    }\n  }\n  for (; mantissaLength >= 8; buffer[index++] = mantissa & 255, mantissa /= 256, mantissaLength -= 8);\n  exponent = exponent << mantissaLength | mantissa;\n  exponentLength += mantissaLength;\n  for (; exponentLength > 0; buffer[index++] = exponent & 255, exponent /= 256, exponentLength -= 8);\n  buffer[--index] |= sign * 128;\n  return buffer;\n};\n\nvar unpack = function (buffer, mantissaLength) {\n  var bytes = buffer.length;\n  var exponentLength = bytes * 8 - mantissaLength - 1;\n  var eMax = (1 << exponentLength) - 1;\n  var eBias = eMax >> 1;\n  var nBits = exponentLength - 7;\n  var index = bytes - 1;\n  var sign = buffer[index--];\n  var exponent = sign & 127;\n  var mantissa;\n  sign >>= 7;\n  for (; nBits > 0; exponent = exponent * 256 + buffer[index], index--, nBits -= 8);\n  mantissa = exponent & (1 << -nBits) - 1;\n  exponent >>= -nBits;\n  nBits += mantissaLength;\n  for (; nBits > 0; mantissa = mantissa * 256 + buffer[index], index--, nBits -= 8);\n  if (exponent === 0) {\n    exponent = 1 - eBias;\n  } else if (exponent === eMax) {\n    return mantissa ? NaN : sign ? -Infinity : Infinity;\n  } else {\n    mantissa = mantissa + pow(2, mantissaLength);\n    exponent = exponent - eBias;\n  } return (sign ? -1 : 1) * mantissa * pow(2, exponent - mantissaLength);\n};\n\nmodule.exports = {\n  pack: pack,\n  unpack: unpack\n};\n", "var global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar Object = global.Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n  // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n  // eslint-disable-next-line no-prototype-builtins -- safe\n  return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n  return classof(it) == 'String' ? split(it, '') : Object(it);\n} : Object;\n", "var isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// makes subclassing work correct for wrapped built-ins\nmodule.exports = function ($this, dummy, Wrapper) {\n  var NewTarget, NewTargetPrototype;\n  if (\n    // it can work only with native `setPrototypeOf`\n    setPrototypeOf &&\n    // we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n    isCallable(NewTarget = dummy.constructor) &&\n    NewTarget !== Wrapper &&\n    isObject(NewTargetPrototype = NewTarget.prototype) &&\n    NewTargetPrototype !== Wrapper.prototype\n  ) setPrototypeOf($this, NewTargetPrototype);\n  return $this;\n};\n", "var uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar store = require('../internals/shared-store');\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n  store.inspectSource = function (it) {\n    return functionToString(it);\n  };\n}\n\nmodule.exports = store.inspectSource;\n", "var isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\n// `InstallErrorCause` abstract operation\n// https://tc39.es/proposal-error-cause/#sec-errorobjects-install-error-cause\nmodule.exports = function (O, options) {\n  if (isObject(options) && 'cause' in options) {\n    createNonEnumerableProperty(O, 'cause', options.cause);\n  }\n};\n", "var $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar isObject = require('../internals/is-object');\nvar hasOwn = require('../internals/has-own-property');\nvar defineProperty = require('../internals/object-define-property').f;\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertyNamesExternalModule = require('../internals/object-get-own-property-names-external');\nvar uid = require('../internals/uid');\nvar FREEZING = require('../internals/freezing');\n\nvar REQUIRED = false;\nvar METADATA = uid('meta');\nvar id = 0;\n\n// eslint-disable-next-line es/no-object-isextensible -- safe\nvar isExtensible = Object.isExtensible || function () {\n  return true;\n};\n\nvar setMetadata = function (it) {\n  defineProperty(it, METADATA, { value: {\n    objectID: 'O' + id++, // object ID\n    weakData: {}          // weak collections IDs\n  } });\n};\n\nvar fastKey = function (it, create) {\n  // return a primitive with prefix\n  if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n  if (!hasOwn(it, METADATA)) {\n    // can't set metadata to uncaught frozen object\n    if (!isExtensible(it)) return 'F';\n    // not necessary to add metadata\n    if (!create) return 'E';\n    // add missing metadata\n    setMetadata(it);\n  // return object ID\n  } return it[METADATA].objectID;\n};\n\nvar getWeakData = function (it, create) {\n  if (!hasOwn(it, METADATA)) {\n    // can't set metadata to uncaught frozen object\n    if (!isExtensible(it)) return true;\n    // not necessary to add metadata\n    if (!create) return false;\n    // add missing metadata\n    setMetadata(it);\n  // return the store of weak collections IDs\n  } return it[METADATA].weakData;\n};\n\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n  if (FREEZING && REQUIRED && isExtensible(it) && !hasOwn(it, METADATA)) setMetadata(it);\n  return it;\n};\n\nvar enable = function () {\n  meta.enable = function () { /* empty */ };\n  REQUIRED = true;\n  var getOwnPropertyNames = getOwnPropertyNamesModule.f;\n  var splice = uncurryThis([].splice);\n  var test = {};\n  test[METADATA] = 1;\n\n  // prevent exposing of metadata key\n  if (getOwnPropertyNames(test).length) {\n    getOwnPropertyNamesModule.f = function (it) {\n      var result = getOwnPropertyNames(it);\n      for (var i = 0, length = result.length; i < length; i++) {\n        if (result[i] === METADATA) {\n          splice(result, i, 1);\n          break;\n        }\n      } return result;\n    };\n\n    $({ target: 'Object', stat: true, forced: true }, {\n      getOwnPropertyNames: getOwnPropertyNamesExternalModule.f\n    });\n  }\n};\n\nvar meta = module.exports = {\n  enable: enable,\n  fastKey: fastKey,\n  getWeakData: getWeakData,\n  onFreeze: onFreeze\n};\n\nhiddenKeys[METADATA] = true;\n", "var NATIVE_WEAK_MAP = require('../internals/native-weak-map');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = global.TypeError;\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n  return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n  return function (it) {\n    var state;\n    if (!isObject(it) || (state = get(it)).type !== TYPE) {\n      throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n    } return state;\n  };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n  var store = shared.state || (shared.state = new WeakMap());\n  var wmget = uncurryThis(store.get);\n  var wmhas = uncurryThis(store.has);\n  var wmset = uncurryThis(store.set);\n  set = function (it, metadata) {\n    if (wmhas(store, it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n    metadata.facade = it;\n    wmset(store, it, metadata);\n    return metadata;\n  };\n  get = function (it) {\n    return wmget(store, it) || {};\n  };\n  has = function (it) {\n    return wmhas(store, it);\n  };\n} else {\n  var STATE = sharedKey('state');\n  hiddenKeys[STATE] = true;\n  set = function (it, metadata) {\n    if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n    metadata.facade = it;\n    createNonEnumerableProperty(it, STATE, metadata);\n    return metadata;\n  };\n  get = function (it) {\n    return hasOwn(it, STATE) ? it[STATE] : {};\n  };\n  has = function (it) {\n    return hasOwn(it, STATE);\n  };\n}\n\nmodule.exports = {\n  set: set,\n  get: get,\n  has: has,\n  enforce: enforce,\n  getterFor: getterFor\n};\n", "var wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n  return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n", "var classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(argument) {\n  return classof(argument) == 'Array';\n};\n", "// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\nmodule.exports = function (argument) {\n  return typeof argument == 'function';\n};\n", "var uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar classof = require('../internals/classof');\nvar getBuiltIn = require('../internals/get-built-in');\nvar inspectSource = require('../internals/inspect-source');\n\nvar noop = function () { /* empty */ };\nvar empty = [];\nvar construct = getBuiltIn('Reflect', 'construct');\nvar constructorRegExp = /^\\s*(?:class|function)\\b/;\nvar exec = uncurryThis(constructorRegExp.exec);\nvar INCORRECT_TO_STRING = !constructorRegExp.exec(noop);\n\nvar isConstructorModern = function (argument) {\n  if (!isCallable(argument)) return false;\n  try {\n    construct(noop, empty, argument);\n    return true;\n  } catch (error) {\n    return false;\n  }\n};\n\nvar isConstructorLegacy = function (argument) {\n  if (!isCallable(argument)) return false;\n  switch (classof(argument)) {\n    case 'AsyncFunction':\n    case 'GeneratorFunction':\n    case 'AsyncGeneratorFunction': return false;\n    // we can't check .prototype since constructors produced by .bind haven't it\n  } return INCORRECT_TO_STRING || !!exec(constructorRegExp, inspectSource(argument));\n};\n\n// `IsConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-isconstructor\nmodule.exports = !construct || fails(function () {\n  var called;\n  return isConstructorModern(isConstructorModern.call)\n    || !isConstructorModern(Object)\n    || !isConstructorModern(function () { called = true; })\n    || called;\n}) ? isConstructorLegacy : isConstructorModern;\n", "var fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n  var value = data[normalize(feature)];\n  return value == POLYFILL ? true\n    : value == NATIVE ? false\n    : isCallable(detection) ? fails(detection)\n    : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n  return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n", "var isObject = require('../internals/is-object');\n\nvar floor = Math.floor;\n\n// `IsIntegralNumber` abstract operation\n// https://tc39.es/ecma262/#sec-isintegralnumber\n// eslint-disable-next-line es/no-number-isinteger -- safe\nmodule.exports = Number.isInteger || function isInteger(it) {\n  return !isObject(it) && isFinite(it) && floor(it) === it;\n};\n", "var isCallable = require('../internals/is-callable');\n\nmodule.exports = function (it) {\n  return typeof it == 'object' ? it !== null : isCallable(it);\n};\n", "module.exports = false;\n", "var isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.es/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n  var isRegExp;\n  return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');\n};\n", "var global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar Object = global.Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n  return typeof it == 'symbol';\n} : function (it) {\n  var $Symbol = getBuiltIn('Symbol');\n  return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, Object(it));\n};\n", "var global = require('../internals/global');\nvar bind = require('../internals/function-bind-context');\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar tryToString = require('../internals/try-to-string');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar iteratorClose = require('../internals/iterator-close');\n\nvar TypeError = global.TypeError;\n\nvar Result = function (stopped, result) {\n  this.stopped = stopped;\n  this.result = result;\n};\n\nvar ResultPrototype = Result.prototype;\n\nmodule.exports = function (iterable, unboundFunction, options) {\n  var that = options && options.that;\n  var AS_ENTRIES = !!(options && options.AS_ENTRIES);\n  var IS_ITERATOR = !!(options && options.IS_ITERATOR);\n  var INTERRUPTED = !!(options && options.INTERRUPTED);\n  var fn = bind(unboundFunction, that);\n  var iterator, iterFn, index, length, result, next, step;\n\n  var stop = function (condition) {\n    if (iterator) iteratorClose(iterator, 'normal', condition);\n    return new Result(true, condition);\n  };\n\n  var callFn = function (value) {\n    if (AS_ENTRIES) {\n      anObject(value);\n      return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);\n    } return INTERRUPTED ? fn(value, stop) : fn(value);\n  };\n\n  if (IS_ITERATOR) {\n    iterator = iterable;\n  } else {\n    iterFn = getIteratorMethod(iterable);\n    if (!iterFn) throw TypeError(tryToString(iterable) + ' is not iterable');\n    // optimisation for array iterators\n    if (isArrayIteratorMethod(iterFn)) {\n      for (index = 0, length = lengthOfArrayLike(iterable); length > index; index++) {\n        result = callFn(iterable[index]);\n        if (result && isPrototypeOf(ResultPrototype, result)) return result;\n      } return new Result(false);\n    }\n    iterator = getIterator(iterable, iterFn);\n  }\n\n  next = iterator.next;\n  while (!(step = call(next, iterator)).done) {\n    try {\n      result = callFn(step.value);\n    } catch (error) {\n      iteratorClose(iterator, 'throw', error);\n    }\n    if (typeof result == 'object' && result && isPrototypeOf(ResultPrototype, result)) return result;\n  } return new Result(false);\n};\n", "var call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar getMethod = require('../internals/get-method');\n\nmodule.exports = function (iterator, kind, value) {\n  var innerResult, innerError;\n  anObject(iterator);\n  try {\n    innerResult = getMethod(iterator, 'return');\n    if (!innerResult) {\n      if (kind === 'throw') throw value;\n      return value;\n    }\n    innerResult = call(innerResult, iterator);\n  } catch (error) {\n    innerError = true;\n    innerResult = error;\n  }\n  if (kind === 'throw') throw value;\n  if (innerError) throw innerResult;\n  anObject(innerResult);\n  return value;\n};\n", "'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar create = require('../internals/object-create');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar redefine = require('../internals/redefine');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\n// `%IteratorPrototype%` object\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\n/* eslint-disable es/no-array-prototype-keys -- safe */\nif ([].keys) {\n  arrayIterator = [].keys();\n  // Safari 8 has buggy iterators w/o `next`\n  if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n  else {\n    PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n    if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n  }\n}\n\nvar NEW_ITERATOR_PROTOTYPE = IteratorPrototype == undefined || fails(function () {\n  var test = {};\n  // FF44- legacy iterators case\n  return IteratorPrototype[ITERATOR].call(test) !== test;\n});\n\nif (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\nelse if (IS_PURE) IteratorPrototype = create(IteratorPrototype);\n\n// `%IteratorPrototype%[@@iterator]()` method\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator\nif (!isCallable(IteratorPrototype[ITERATOR])) {\n  redefine(IteratorPrototype, ITERATOR, function () {\n    return this;\n  });\n}\n\nmodule.exports = {\n  IteratorPrototype: IteratorPrototype,\n  BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n", "module.exports = {};\n", "var toLength = require('../internals/to-length');\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n  return toLength(obj.length);\n};\n", "var global = require('../internals/global');\nvar bind = require('../internals/function-bind-context');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar macrotask = require('../internals/task').set;\nvar IS_IOS = require('../internals/engine-is-ios');\nvar IS_IOS_PEBBLE = require('../internals/engine-is-ios-pebble');\nvar IS_WEBOS_WEBKIT = require('../internals/engine-is-webos-webkit');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar MutationObserver = global.MutationObserver || global.WebKitMutationObserver;\nvar document = global.document;\nvar process = global.process;\nvar Promise = global.Promise;\n// Node.js 11 shows ExperimentalWarning on getting `queueMicrotask`\nvar queueMicrotaskDescriptor = getOwnPropertyDescriptor(global, 'queueMicrotask');\nvar queueMicrotask = queueMicrotaskDescriptor && queueMicrotaskDescriptor.value;\n\nvar flush, head, last, notify, toggle, node, promise, then;\n\n// modern engines have queueMicrotask method\nif (!queueMicrotask) {\n  flush = function () {\n    var parent, fn;\n    if (IS_NODE && (parent = process.domain)) parent.exit();\n    while (head) {\n      fn = head.fn;\n      head = head.next;\n      try {\n        fn();\n      } catch (error) {\n        if (head) notify();\n        else last = undefined;\n        throw error;\n      }\n    } last = undefined;\n    if (parent) parent.enter();\n  };\n\n  // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339\n  // also except WebOS Webkit https://github.com/zloirock/core-js/issues/898\n  if (!IS_IOS && !IS_NODE && !IS_WEBOS_WEBKIT && MutationObserver && document) {\n    toggle = true;\n    node = document.createTextNode('');\n    new MutationObserver(flush).observe(node, { characterData: true });\n    notify = function () {\n      node.data = toggle = !toggle;\n    };\n  // environments with maybe non-completely correct, but existent Promise\n  } else if (!IS_IOS_PEBBLE && Promise && Promise.resolve) {\n    // Promise.resolve without an argument throws an error in LG WebOS 2\n    promise = Promise.resolve(undefined);\n    // workaround of WebKit ~ iOS Safari 10.1 bug\n    promise.constructor = Promise;\n    then = bind(promise.then, promise);\n    notify = function () {\n      then(flush);\n    };\n  // Node.js without promises\n  } else if (IS_NODE) {\n    notify = function () {\n      process.nextTick(flush);\n    };\n  // for other environments - macrotask based on:\n  // - setImmediate\n  // - MessageChannel\n  // - window.postMessag\n  // - onreadystatechange\n  // - setTimeout\n  } else {\n    // strange IE + webpack dev server bug - use .bind(global)\n    macrotask = bind(macrotask, global);\n    notify = function () {\n      macrotask(flush);\n    };\n  }\n}\n\nmodule.exports = queueMicrotask || function (fn) {\n  var task = { fn: fn, next: undefined };\n  if (last) last.next = task;\n  if (!head) {\n    head = task;\n    notify();\n  } last = task;\n};\n", "var global = require('../internals/global');\n\nmodule.exports = global.Promise;\n", "/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n  var symbol = Symbol();\n  // Chrome 38 Symbol has incorrect toString conversion\n  // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n  return !String(symbol) || !(Object(symbol) instanceof Symbol) ||\n    // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n    !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n", "var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar inspectSource = require('../internals/inspect-source');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(inspectSource(WeakMap));\n", "'use strict';\nvar aCallable = require('../internals/a-callable');\n\nvar PromiseCapability = function (C) {\n  var resolve, reject;\n  this.promise = new C(function ($$resolve, $$reject) {\n    if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n    resolve = $$resolve;\n    reject = $$reject;\n  });\n  this.resolve = aCallable(resolve);\n  this.reject = aCallable(reject);\n};\n\n// `NewPromiseCapability` abstract operation\n// https://tc39.es/ecma262/#sec-newpromisecapability\nmodule.exports.f = function (C) {\n  return new PromiseCapability(C);\n};\n", "var toString = require('../internals/to-string');\n\nmodule.exports = function (argument, $default) {\n  return argument === undefined ? arguments.length < 2 ? '' : $default : toString(argument);\n};\n", "var global = require('../internals/global');\nvar isRegExp = require('../internals/is-regexp');\n\nvar TypeError = global.TypeError;\n\nmodule.exports = function (it) {\n  if (isRegExp(it)) {\n    throw TypeError(\"The method doesn't accept regular expressions\");\n  } return it;\n};\n", "var global = require('../internals/global');\n\nvar globalIsFinite = global.isFinite;\n\n// `Number.isFinite` method\n// https://tc39.es/ecma262/#sec-number.isfinite\n// eslint-disable-next-line es/no-number-isfinite -- safe\nmodule.exports = Number.isFinite || function isFinite(it) {\n  return typeof it == 'number' && globalIsFinite(it);\n};\n", "'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar call = require('../internals/function-call');\nvar fails = require('../internals/fails');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\n\n// eslint-disable-next-line es/no-object-assign -- safe\nvar $assign = Object.assign;\n// eslint-disable-next-line es/no-object-defineproperty -- required for testing\nvar defineProperty = Object.defineProperty;\nvar concat = uncurryThis([].concat);\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\nmodule.exports = !$assign || fails(function () {\n  // should have correct order of operations (Edge bug)\n  if (DESCRIPTORS && $assign({ b: 1 }, $assign(defineProperty({}, 'a', {\n    enumerable: true,\n    get: function () {\n      defineProperty(this, 'b', {\n        value: 3,\n        enumerable: false\n      });\n    }\n  }), { b: 2 })).b !== 1) return true;\n  // should work with symbols and should have deterministic property order (V8 bug)\n  var A = {};\n  var B = {};\n  // eslint-disable-next-line es/no-symbol -- safe\n  var symbol = Symbol();\n  var alphabet = 'abcdefghijklmnopqrst';\n  A[symbol] = 7;\n  alphabet.split('').forEach(function (chr) { B[chr] = chr; });\n  return $assign({}, A)[symbol] != 7 || objectKeys($assign({}, B)).join('') != alphabet;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars -- required for `.length`\n  var T = toObject(target);\n  var argumentsLength = arguments.length;\n  var index = 1;\n  var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n  var propertyIsEnumerable = propertyIsEnumerableModule.f;\n  while (argumentsLength > index) {\n    var S = IndexedObject(arguments[index++]);\n    var keys = getOwnPropertySymbols ? concat(objectKeys(S), getOwnPropertySymbols(S)) : objectKeys(S);\n    var length = keys.length;\n    var j = 0;\n    var key;\n    while (length > j) {\n      key = keys[j++];\n      if (!DESCRIPTORS || call(propertyIsEnumerable, S, key)) T[key] = S[key];\n    }\n  } return T;\n} : $assign;\n", "/* global ActiveXObject -- old IE, WSH */\nvar anObject = require('../internals/an-object');\nvar defineProperties = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n  return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n  activeXDocument.write(scriptTag(''));\n  activeXDocument.close();\n  var temp = activeXDocument.parentWindow.Object;\n  activeXDocument = null; // avoid memory leak\n  return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n  // Thrash, waste and sodomy: IE GC bug\n  var iframe = documentCreateElement('iframe');\n  var JS = 'java' + SCRIPT + ':';\n  var iframeDocument;\n  iframe.style.display = 'none';\n  html.appendChild(iframe);\n  // https://github.com/zloirock/core-js/issues/475\n  iframe.src = String(JS);\n  iframeDocument = iframe.contentWindow.document;\n  iframeDocument.open();\n  iframeDocument.write(scriptTag('document.F=Object'));\n  iframeDocument.close();\n  return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n  try {\n    activeXDocument = new ActiveXObject('htmlfile');\n  } catch (error) { /* ignore */ }\n  NullProtoObject = typeof document != 'undefined'\n    ? document.domain && activeXDocument\n      ? NullProtoObjectViaActiveX(activeXDocument) // old IE\n      : NullProtoObjectViaIFrame()\n    : NullProtoObjectViaActiveX(activeXDocument); // WSH\n  var length = enumBugKeys.length;\n  while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n  return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\nmodule.exports = Object.create || function create(O, Properties) {\n  var result;\n  if (O !== null) {\n    EmptyConstructor[PROTOTYPE] = anObject(O);\n    result = new EmptyConstructor();\n    EmptyConstructor[PROTOTYPE] = null;\n    // add \"__proto__\" for Object.getPrototypeOf polyfill\n    result[IE_PROTO] = O;\n  } else result = NullProtoObject();\n  return Properties === undefined ? result : defineProperties(result, Properties);\n};\n", "var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es/no-object-defineproperties -- safe\nmodule.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {\n  anObject(O);\n  var props = toIndexedObject(Properties);\n  var keys = objectKeys(Properties);\n  var length = keys.length;\n  var index = 0;\n  var key;\n  while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]);\n  return O;\n};\n", "var global = require('../internals/global');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\nvar TypeError = global.TypeError;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? $defineProperty : function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPropertyKey(P);\n  anObject(Attributes);\n  if (IE8_DOM_DEFINE) try {\n    return $defineProperty(O, P, Attributes);\n  } catch (error) { /* empty */ }\n  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n  if ('value' in Attributes) O[P] = Attributes.value;\n  return O;\n};\n", "var DESCRIPTORS = require('../internals/descriptors');\nvar call = require('../internals/function-call');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n  O = toIndexedObject(O);\n  P = toPropertyKey(P);\n  if (IE8_DOM_DEFINE) try {\n    return $getOwnPropertyDescriptor(O, P);\n  } catch (error) { /* empty */ }\n  if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n", "/* eslint-disable es/no-object-getownpropertynames -- safe */\nvar classof = require('../internals/classof-raw');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar $getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar arraySlice = require('../internals/array-slice');\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n  ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n  try {\n    return $getOwnPropertyNames(it);\n  } catch (error) {\n    return arraySlice(windowNames);\n  }\n};\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nmodule.exports.f = function getOwnPropertyNames(it) {\n  return windowNames && classof(it) == 'Window'\n    ? getWindowNames(it)\n    : $getOwnPropertyNames(toIndexedObject(it));\n};\n", "var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n  return internalObjectKeys(O, hiddenKeys);\n};\n", "// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n", "var global = require('../internals/global');\nvar hasOwn = require('../internals/has-own-property');\nvar isCallable = require('../internals/is-callable');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar Object = global.Object;\nvar ObjectPrototype = Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {\n  var object = toObject(O);\n  if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];\n  var constructor = object.constructor;\n  if (isCallable(constructor) && object instanceof constructor) {\n    return constructor.prototype;\n  } return object instanceof Object ? ObjectPrototype : null;\n};\n", "var uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n", "var uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (object, names) {\n  var O = toIndexedObject(object);\n  var i = 0;\n  var result = [];\n  var key;\n  for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n  // Don't enum bug & hidden keys\n  while (names.length > i) if (hasOwn(O, key = names[i++])) {\n    ~indexOf(result, key) || push(result, key);\n  }\n  return result;\n};\n", "var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n  return internalObjectKeys(O, enumBugKeys);\n};\n", "'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n  var descriptor = getOwnPropertyDescriptor(this, V);\n  return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n", "/* eslint-disable no-proto -- safe */\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n// eslint-disable-next-line es/no-object-setprototypeof -- safe\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n  var CORRECT_SETTER = false;\n  var test = {};\n  var setter;\n  try {\n    // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n    setter = uncurryThis(Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set);\n    setter(test, []);\n    CORRECT_SETTER = test instanceof Array;\n  } catch (error) { /* empty */ }\n  return function setPrototypeOf(O, proto) {\n    anObject(O);\n    aPossiblePrototype(proto);\n    if (CORRECT_SETTER) setter(O, proto);\n    else O.__proto__ = proto;\n    return O;\n  };\n}() : undefined);\n", "var DESCRIPTORS = require('../internals/descriptors');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar objectKeys = require('../internals/object-keys');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar $propertyIsEnumerable = require('../internals/object-property-is-enumerable').f;\n\nvar propertyIsEnumerable = uncurryThis($propertyIsEnumerable);\nvar push = uncurryThis([].push);\n\n// `Object.{ entries, values }` methods implementation\nvar createMethod = function (TO_ENTRIES) {\n  return function (it) {\n    var O = toIndexedObject(it);\n    var keys = objectKeys(O);\n    var length = keys.length;\n    var i = 0;\n    var result = [];\n    var key;\n    while (length > i) {\n      key = keys[i++];\n      if (!DESCRIPTORS || propertyIsEnumerable(O, key)) {\n        push(result, TO_ENTRIES ? [key, O[key]] : O[key]);\n      }\n    }\n    return result;\n  };\n};\n\nmodule.exports = {\n  // `Object.entries` method\n  // https://tc39.es/ecma262/#sec-object.entries\n  entries: createMethod(true),\n  // `Object.values` method\n  // https://tc39.es/ecma262/#sec-object.values\n  values: createMethod(false)\n};\n", "'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classof = require('../internals/classof');\n\n// `Object.prototype.toString` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nmodule.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {\n  return '[object ' + classof(this) + ']';\n};\n", "var global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar TypeError = global.TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n  var fn, val;\n  if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n  if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n  if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n  throw TypeError(\"Can't convert object to primitive value\");\n};\n", "var getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\nvar concat = uncurryThis([].concat);\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n  var keys = getOwnPropertyNamesModule.f(anObject(it));\n  var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n  return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n};\n", "var global = require('../internals/global');\n\nmodule.exports = global;\n", "module.exports = function (exec) {\n  try {\n    return { error: false, value: exec() };\n  } catch (error) {\n    return { error: true, value: error };\n  }\n};\n", "var anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar newPromiseCapability = require('../internals/new-promise-capability');\n\nmodule.exports = function (C, x) {\n  anObject(C);\n  if (isObject(x) && x.constructor === C) return x;\n  var promiseCapability = newPromiseCapability.f(C);\n  var resolve = promiseCapability.resolve;\n  resolve(x);\n  return promiseCapability.promise;\n};\n", "var redefine = require('../internals/redefine');\n\nmodule.exports = function (target, src, options) {\n  for (var key in src) redefine(target, key, src[key], options);\n  return target;\n};\n", "var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar setGlobal = require('../internals/set-global');\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\nvar CONFIGURABLE_FUNCTION_NAME = require('../internals/function-name').CONFIGURABLE;\n\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(String).split('String');\n\n(module.exports = function (O, key, value, options) {\n  var unsafe = options ? !!options.unsafe : false;\n  var simple = options ? !!options.enumerable : false;\n  var noTargetGet = options ? !!options.noTargetGet : false;\n  var name = options && options.name !== undefined ? options.name : key;\n  var state;\n  if (isCallable(value)) {\n    if (String(name).slice(0, 7) === 'Symbol(') {\n      name = '[' + String(name).replace(/^Symbol\\(([^)]*)\\)/, '$1') + ']';\n    }\n    if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n      createNonEnumerableProperty(value, 'name', name);\n    }\n    state = enforceInternalState(value);\n    if (!state.source) {\n      state.source = TEMPLATE.join(typeof name == 'string' ? name : '');\n    }\n  }\n  if (O === global) {\n    if (simple) O[key] = value;\n    else setGlobal(key, value);\n    return;\n  } else if (!unsafe) {\n    delete O[key];\n  } else if (!noTargetGet && O[key]) {\n    simple = true;\n  }\n  if (simple) O[key] = value;\n  else createNonEnumerableProperty(O, key, value);\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, 'toString', function toString() {\n  return isCallable(this) && getInternalState(this).source || inspectSource(this);\n});\n", "var global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar isCallable = require('../internals/is-callable');\nvar classof = require('../internals/classof-raw');\nvar regexpExec = require('../internals/regexp-exec');\n\nvar TypeError = global.TypeError;\n\n// `RegExpExec` abstract operation\n// https://tc39.es/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n  var exec = R.exec;\n  if (isCallable(exec)) {\n    var result = call(exec, R, S);\n    if (result !== null) anObject(result);\n    return result;\n  }\n  if (classof(R) === 'RegExp') return call(regexpExec, R, S);\n  throw TypeError('RegExp#exec called on incompatible receiver');\n};\n", "'use strict';\n/* eslint-disable regexp/no-empty-capturing-group, regexp/no-empty-group, regexp/no-lazy-ends -- testing */\n/* eslint-disable regexp/no-useless-quantifier -- testing */\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toString = require('../internals/to-string');\nvar regexpFlags = require('../internals/regexp-flags');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar shared = require('../internals/shared');\nvar create = require('../internals/object-create');\nvar getInternalState = require('../internals/internal-state').get;\nvar UNSUPPORTED_DOT_ALL = require('../internals/regexp-unsupported-dot-all');\nvar UNSUPPORTED_NCG = require('../internals/regexp-unsupported-ncg');\n\nvar nativeReplace = shared('native-string-replace', String.prototype.replace);\nvar nativeExec = RegExp.prototype.exec;\nvar patchedExec = nativeExec;\nvar charAt = uncurryThis(''.charAt);\nvar indexOf = uncurryThis(''.indexOf);\nvar replace = uncurryThis(''.replace);\nvar stringSlice = uncurryThis(''.slice);\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n  var re1 = /a/;\n  var re2 = /b*/g;\n  call(nativeExec, re1, 'a');\n  call(nativeExec, re2, 'a');\n  return re1.lastIndex !== 0 || re2.lastIndex !== 0;\n})();\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y || stickyHelpers.BROKEN_CARET;\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG;\n\nif (PATCH) {\n  // eslint-disable-next-line max-statements -- TODO\n  patchedExec = function exec(string) {\n    var re = this;\n    var state = getInternalState(re);\n    var str = toString(string);\n    var raw = state.raw;\n    var result, reCopy, lastIndex, match, i, object, group;\n\n    if (raw) {\n      raw.lastIndex = re.lastIndex;\n      result = call(patchedExec, raw, str);\n      re.lastIndex = raw.lastIndex;\n      return result;\n    }\n\n    var groups = state.groups;\n    var sticky = UNSUPPORTED_Y && re.sticky;\n    var flags = call(regexpFlags, re);\n    var source = re.source;\n    var charsAdded = 0;\n    var strCopy = str;\n\n    if (sticky) {\n      flags = replace(flags, 'y', '');\n      if (indexOf(flags, 'g') === -1) {\n        flags += 'g';\n      }\n\n      strCopy = stringSlice(str, re.lastIndex);\n      // Support anchored sticky behavior.\n      if (re.lastIndex > 0 && (!re.multiline || re.multiline && charAt(str, re.lastIndex - 1) !== '\\n')) {\n        source = '(?: ' + source + ')';\n        strCopy = ' ' + strCopy;\n        charsAdded++;\n      }\n      // ^(? + rx + ) is needed, in combination with some str slicing, to\n      // simulate the 'y' flag.\n      reCopy = new RegExp('^(?:' + source + ')', flags);\n    }\n\n    if (NPCG_INCLUDED) {\n      reCopy = new RegExp('^' + source + '$(?!\\\\s)', flags);\n    }\n    if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;\n\n    match = call(nativeExec, sticky ? reCopy : re, strCopy);\n\n    if (sticky) {\n      if (match) {\n        match.input = stringSlice(match.input, charsAdded);\n        match[0] = stringSlice(match[0], charsAdded);\n        match.index = re.lastIndex;\n        re.lastIndex += match[0].length;\n      } else re.lastIndex = 0;\n    } else if (UPDATES_LAST_INDEX_WRONG && match) {\n      re.lastIndex = re.global ? match.index + match[0].length : lastIndex;\n    }\n    if (NPCG_INCLUDED && match && match.length > 1) {\n      // Fix browsers whose `exec` methods don't consistently return `undefined`\n      // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n      call(nativeReplace, match[0], reCopy, function () {\n        for (i = 1; i < arguments.length - 2; i++) {\n          if (arguments[i] === undefined) match[i] = undefined;\n        }\n      });\n    }\n\n    if (match && groups) {\n      match.groups = object = create(null);\n      for (i = 0; i < groups.length; i++) {\n        group = groups[i];\n        object[group[0]] = match[group[1]];\n      }\n    }\n\n    return match;\n  };\n}\n\nmodule.exports = patchedExec;\n", "'use strict';\nvar anObject = require('../internals/an-object');\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n  var that = anObject(this);\n  var result = '';\n  if (that.global) result += 'g';\n  if (that.ignoreCase) result += 'i';\n  if (that.multiline) result += 'm';\n  if (that.dotAll) result += 's';\n  if (that.unicode) result += 'u';\n  if (that.sticky) result += 'y';\n  return result;\n};\n", "var fails = require('../internals/fails');\nvar global = require('../internals/global');\n\n// babel-minify and Closure Compiler transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nexports.UNSUPPORTED_Y = fails(function () {\n  var re = $RegExp('a', 'y');\n  re.lastIndex = 2;\n  return re.exec('abcd') != null;\n});\n\nexports.BROKEN_CARET = fails(function () {\n  // https://bugzilla.mozilla.org/show_bug.cgi?id=773687\n  var re = $RegExp('^r', 'gy');\n  re.lastIndex = 2;\n  return re.exec('str') != null;\n});\n", "var fails = require('../internals/fails');\nvar global = require('../internals/global');\n\n// babel-minify and Closure Compiler transpiles RegExp('.', 's') -> /./s and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nmodule.exports = fails(function () {\n  var re = $RegExp('.', 's');\n  return !(re.dotAll && re.exec('\\n') && re.flags === 's');\n});\n", "var fails = require('../internals/fails');\nvar global = require('../internals/global');\n\n// babel-minify and Closure Compiler transpiles RegExp('(?<a>b)', 'g') -> /(?<a>b)/g and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nmodule.exports = fails(function () {\n  var re = $RegExp('(?<a>b)', 'g');\n  return re.exec('b').groups.a !== 'b' ||\n    'b'.replace(re, '$<a>c') !== 'bc';\n});\n", "var global = require('../internals/global');\n\nvar TypeError = global.TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n  if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n  return it;\n};\n", "var global = require('../internals/global');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n  try {\n    defineProperty(global, key, { value: value, configurable: true, writable: true });\n  } catch (error) {\n    global[key] = value;\n  } return value;\n};\n", "'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar definePropertyModule = require('../internals/object-define-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n  var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n  var defineProperty = definePropertyModule.f;\n\n  if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n    defineProperty(Constructor, SPECIES, {\n      configurable: true,\n      get: function () { return this; }\n    });\n  }\n};\n", "var defineProperty = require('../internals/object-define-property').f;\nvar hasOwn = require('../internals/has-own-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (it, TAG, STATIC) {\n  if (it && !hasOwn(it = STATIC ? it : it.prototype, TO_STRING_TAG)) {\n    defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG });\n  }\n};\n", "var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n  return keys[key] || (keys[key] = uid(key));\n};\n", "var global = require('../internals/global');\nvar setGlobal = require('../internals/set-global');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\nmodule.exports = store;\n", "var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n  return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n  version: '3.19.0',\n  mode: IS_PURE ? 'pure' : 'global',\n  copyright: '© 2021 Denis Pushkarev (zloirock.ru)'\n});\n", "var anObject = require('../internals/an-object');\nvar aConstructor = require('../internals/a-constructor');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `SpeciesConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-speciesconstructor\nmodule.exports = function (O, defaultConstructor) {\n  var C = anObject(O).constructor;\n  var S;\n  return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aConstructor(S);\n};\n", "var fails = require('../internals/fails');\n\n// check the existence of a method, lowercase\n// of a tag and escaping quotes in arguments\nmodule.exports = function (METHOD_NAME) {\n  return fails(function () {\n    var test = ''[METHOD_NAME]('\"');\n    return test !== test.toLowerCase() || test.split('\"').length > 3;\n  });\n};\n", "var uncurryThis = require('../internals/function-uncurry-this');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar stringSlice = uncurryThis(''.slice);\n\nvar createMethod = function (CONVERT_TO_STRING) {\n  return function ($this, pos) {\n    var S = toString(requireObjectCoercible($this));\n    var position = toIntegerOrInfinity(pos);\n    var size = S.length;\n    var first, second;\n    if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n    first = charCodeAt(S, position);\n    return first < 0xD800 || first > 0xDBFF || position + 1 === size\n      || (second = charCodeAt(S, position + 1)) < 0xDC00 || second > 0xDFFF\n        ? CONVERT_TO_STRING\n          ? charAt(S, position)\n          : first\n        : CONVERT_TO_STRING\n          ? stringSlice(S, position, position + 2)\n          : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n  };\n};\n\nmodule.exports = {\n  // `String.prototype.codePointAt` method\n  // https://tc39.es/ecma262/#sec-string.prototype.codepointat\n  codeAt: createMethod(false),\n  // `String.prototype.at` method\n  // https://github.com/mathiasbynens/String.prototype.at\n  charAt: createMethod(true)\n};\n", "'use strict';\nvar global = require('../internals/global');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar RangeError = global.RangeError;\n\n// `String.prototype.repeat` method implementation\n// https://tc39.es/ecma262/#sec-string.prototype.repeat\nmodule.exports = function repeat(count) {\n  var str = toString(requireObjectCoercible(this));\n  var result = '';\n  var n = toIntegerOrInfinity(count);\n  if (n < 0 || n == Infinity) throw RangeError('Wrong number of repetitions');\n  for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) result += str;\n  return result;\n};\n", "var PROPER_FUNCTION_NAME = require('../internals/function-name').PROPER;\nvar fails = require('../internals/fails');\nvar whitespaces = require('../internals/whitespaces');\n\nvar non = '\\u200B\\u0085\\u180E';\n\n// check that a method works with the correct list\n// of whitespaces and has a correct name\nmodule.exports = function (METHOD_NAME) {\n  return fails(function () {\n    return !!whitespaces[METHOD_NAME]()\n      || non[METHOD_NAME]() !== non\n      || (PROPER_FUNCTION_NAME && whitespaces[METHOD_NAME].name !== METHOD_NAME);\n  });\n};\n", "var uncurryThis = require('../internals/function-uncurry-this');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\nvar whitespaces = require('../internals/whitespaces');\n\nvar replace = uncurryThis(''.replace);\nvar whitespace = '[' + whitespaces + ']';\nvar ltrim = RegExp('^' + whitespace + whitespace + '*');\nvar rtrim = RegExp(whitespace + whitespace + '*$');\n\n// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\nvar createMethod = function (TYPE) {\n  return function ($this) {\n    var string = toString(requireObjectCoercible($this));\n    if (TYPE & 1) string = replace(string, ltrim, '');\n    if (TYPE & 2) string = replace(string, rtrim, '');\n    return string;\n  };\n};\n\nmodule.exports = {\n  // `String.prototype.{ trimLeft, trimStart }` methods\n  // https://tc39.es/ecma262/#sec-string.prototype.trimstart\n  start: createMethod(1),\n  // `String.prototype.{ trimRight, trimEnd }` methods\n  // https://tc39.es/ecma262/#sec-string.prototype.trimend\n  end: createMethod(2),\n  // `String.prototype.trim` method\n  // https://tc39.es/ecma262/#sec-string.prototype.trim\n  trim: createMethod(3)\n};\n", "var global = require('../internals/global');\nvar apply = require('../internals/function-apply');\nvar bind = require('../internals/function-bind-context');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar fails = require('../internals/fails');\nvar html = require('../internals/html');\nvar arraySlice = require('../internals/array-slice');\nvar createElement = require('../internals/document-create-element');\nvar IS_IOS = require('../internals/engine-is-ios');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar set = global.setImmediate;\nvar clear = global.clearImmediate;\nvar process = global.process;\nvar Dispatch = global.Dispatch;\nvar Function = global.Function;\nvar MessageChannel = global.MessageChannel;\nvar String = global.String;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar location, defer, channel, port;\n\ntry {\n  // Deno throws a ReferenceError on `location` access without `--location` flag\n  location = global.location;\n} catch (error) { /* empty */ }\n\nvar run = function (id) {\n  if (hasOwn(queue, id)) {\n    var fn = queue[id];\n    delete queue[id];\n    fn();\n  }\n};\n\nvar runner = function (id) {\n  return function () {\n    run(id);\n  };\n};\n\nvar listener = function (event) {\n  run(event.data);\n};\n\nvar post = function (id) {\n  // old engines have not location.origin\n  global.postMessage(String(id), location.protocol + '//' + location.host);\n};\n\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!set || !clear) {\n  set = function setImmediate(fn) {\n    var args = arraySlice(arguments, 1);\n    queue[++counter] = function () {\n      apply(isCallable(fn) ? fn : Function(fn), undefined, args);\n    };\n    defer(counter);\n    return counter;\n  };\n  clear = function clearImmediate(id) {\n    delete queue[id];\n  };\n  // Node.js 0.8-\n  if (IS_NODE) {\n    defer = function (id) {\n      process.nextTick(runner(id));\n    };\n  // Sphere (JS game engine) Dispatch API\n  } else if (Dispatch && Dispatch.now) {\n    defer = function (id) {\n      Dispatch.now(runner(id));\n    };\n  // Browsers with MessageChannel, includes WebWorkers\n  // except iOS - https://github.com/zloirock/core-js/issues/624\n  } else if (MessageChannel && !IS_IOS) {\n    channel = new MessageChannel();\n    port = channel.port2;\n    channel.port1.onmessage = listener;\n    defer = bind(port.postMessage, port);\n  // Browsers with postMessage, skip WebWorkers\n  // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n  } else if (\n    global.addEventListener &&\n    isCallable(global.postMessage) &&\n    !global.importScripts &&\n    location && location.protocol !== 'file:' &&\n    !fails(post)\n  ) {\n    defer = post;\n    global.addEventListener('message', listener, false);\n  // IE8-\n  } else if (ONREADYSTATECHANGE in createElement('script')) {\n    defer = function (id) {\n      html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {\n        html.removeChild(this);\n        run(id);\n      };\n    };\n  // Rest old browsers\n  } else {\n    defer = function (id) {\n      setTimeout(runner(id), 0);\n    };\n  }\n}\n\nmodule.exports = {\n  set: set,\n  clear: clear\n};\n", "var uncurryThis = require('../internals/function-uncurry-this');\n\n// `thisNumberValue` abstract operation\n// https://tc39.es/ecma262/#sec-thisnumbervalue\nmodule.exports = uncurryThis(1.0.valueOf);\n", "var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n  var integer = toIntegerOrInfinity(index);\n  return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n", "var global = require('../internals/global');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toLength = require('../internals/to-length');\n\nvar RangeError = global.RangeError;\n\n// `ToIndex` abstract operation\n// https://tc39.es/ecma262/#sec-toindex\nmodule.exports = function (it) {\n  if (it === undefined) return 0;\n  var number = toIntegerOrInfinity(it);\n  var length = toLength(number);\n  if (number !== length) throw RangeError('Wrong length or index');\n  return length;\n};\n", "// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n  return IndexedObject(requireObjectCoercible(it));\n};\n", "var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n  var number = +argument;\n  // eslint-disable-next-line no-self-compare -- safe\n  return number !== number || number === 0 ? 0 : (number > 0 ? floor : ceil)(number);\n};\n", "var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n  return argument > 0 ? min(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n", "var global = require('../internals/global');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar Object = global.Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n  return Object(requireObjectCoercible(argument));\n};\n", "var global = require('../internals/global');\nvar toPositiveInteger = require('../internals/to-positive-integer');\n\nvar RangeError = global.RangeError;\n\nmodule.exports = function (it, BYTES) {\n  var offset = toPositiveInteger(it);\n  if (offset % BYTES) throw RangeError('Wrong offset');\n  return offset;\n};\n", "var global = require('../internals/global');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar RangeError = global.RangeError;\n\nmodule.exports = function (it) {\n  var result = toIntegerOrInfinity(it);\n  if (result < 0) throw RangeError(\"The argument can't be less than 0\");\n  return result;\n};\n", "var global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TypeError = global.TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n  if (!isObject(input) || isSymbol(input)) return input;\n  var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n  var result;\n  if (exoticToPrim) {\n    if (pref === undefined) pref = 'default';\n    result = call(exoticToPrim, input, pref);\n    if (!isObject(result) || isSymbol(result)) return result;\n    throw TypeError(\"Can't convert object to primitive value\");\n  }\n  if (pref === undefined) pref = 'number';\n  return ordinaryToPrimitive(input, pref);\n};\n", "var toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n  var key = toPrimitive(argument, 'string');\n  return isSymbol(key) ? key : key + '';\n};\n", "var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n", "var global = require('../internals/global');\nvar classof = require('../internals/classof');\n\nvar String = global.String;\n\nmodule.exports = function (argument) {\n  if (classof(argument) === 'Symbol') throw TypeError('Cannot convert a Symbol value to a string');\n  return String(argument);\n};\n", "var global = require('../internals/global');\n\nvar String = global.String;\n\nmodule.exports = function (argument) {\n  try {\n    return String(argument);\n  } catch (error) {\n    return 'Object';\n  }\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = require('../internals/typed-array-constructors-require-wrappers');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar ArrayBufferModule = require('../internals/array-buffer');\nvar anInstance = require('../internals/an-instance');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar isIntegralNumber = require('../internals/is-integral-number');\nvar toLength = require('../internals/to-length');\nvar toIndex = require('../internals/to-index');\nvar toOffset = require('../internals/to-offset');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar classof = require('../internals/classof');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar create = require('../internals/object-create');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar typedArrayFrom = require('../internals/typed-array-from');\nvar forEach = require('../internals/array-iteration').forEach;\nvar setSpecies = require('../internals/set-species');\nvar definePropertyModule = require('../internals/object-define-property');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar InternalStateModule = require('../internals/internal-state');\nvar inheritIfRequired = require('../internals/inherit-if-required');\n\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar round = Math.round;\nvar RangeError = global.RangeError;\nvar ArrayBuffer = ArrayBufferModule.ArrayBuffer;\nvar ArrayBufferPrototype = ArrayBuffer.prototype;\nvar DataView = ArrayBufferModule.DataView;\nvar NATIVE_ARRAY_BUFFER_VIEWS = ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS;\nvar TYPED_ARRAY_CONSTRUCTOR = ArrayBufferViewCore.TYPED_ARRAY_CONSTRUCTOR;\nvar TYPED_ARRAY_TAG = ArrayBufferViewCore.TYPED_ARRAY_TAG;\nvar TypedArray = ArrayBufferViewCore.TypedArray;\nvar TypedArrayPrototype = ArrayBufferViewCore.TypedArrayPrototype;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\nvar isTypedArray = ArrayBufferViewCore.isTypedArray;\nvar BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT';\nvar WRONG_LENGTH = 'Wrong length';\n\nvar fromList = function (C, list) {\n  aTypedArrayConstructor(C);\n  var index = 0;\n  var length = list.length;\n  var result = new C(length);\n  while (length > index) result[index] = list[index++];\n  return result;\n};\n\nvar addGetter = function (it, key) {\n  nativeDefineProperty(it, key, { get: function () {\n    return getInternalState(this)[key];\n  } });\n};\n\nvar isArrayBuffer = function (it) {\n  var klass;\n  return isPrototypeOf(ArrayBufferPrototype, it) || (klass = classof(it)) == 'ArrayBuffer' || klass == 'SharedArrayBuffer';\n};\n\nvar isTypedArrayIndex = function (target, key) {\n  return isTypedArray(target)\n    && !isSymbol(key)\n    && key in target\n    && isIntegralNumber(+key)\n    && key >= 0;\n};\n\nvar wrappedGetOwnPropertyDescriptor = function getOwnPropertyDescriptor(target, key) {\n  key = toPropertyKey(key);\n  return isTypedArrayIndex(target, key)\n    ? createPropertyDescriptor(2, target[key])\n    : nativeGetOwnPropertyDescriptor(target, key);\n};\n\nvar wrappedDefineProperty = function defineProperty(target, key, descriptor) {\n  key = toPropertyKey(key);\n  if (isTypedArrayIndex(target, key)\n    && isObject(descriptor)\n    && hasOwn(descriptor, 'value')\n    && !hasOwn(descriptor, 'get')\n    && !hasOwn(descriptor, 'set')\n    // TODO: add validation descriptor w/o calling accessors\n    && !descriptor.configurable\n    && (!hasOwn(descriptor, 'writable') || descriptor.writable)\n    && (!hasOwn(descriptor, 'enumerable') || descriptor.enumerable)\n  ) {\n    target[key] = descriptor.value;\n    return target;\n  } return nativeDefineProperty(target, key, descriptor);\n};\n\nif (DESCRIPTORS) {\n  if (!NATIVE_ARRAY_BUFFER_VIEWS) {\n    getOwnPropertyDescriptorModule.f = wrappedGetOwnPropertyDescriptor;\n    definePropertyModule.f = wrappedDefineProperty;\n    addGetter(TypedArrayPrototype, 'buffer');\n    addGetter(TypedArrayPrototype, 'byteOffset');\n    addGetter(TypedArrayPrototype, 'byteLength');\n    addGetter(TypedArrayPrototype, 'length');\n  }\n\n  $({ target: 'Object', stat: true, forced: !NATIVE_ARRAY_BUFFER_VIEWS }, {\n    getOwnPropertyDescriptor: wrappedGetOwnPropertyDescriptor,\n    defineProperty: wrappedDefineProperty\n  });\n\n  module.exports = function (TYPE, wrapper, CLAMPED) {\n    var BYTES = TYPE.match(/\\d+$/)[0] / 8;\n    var CONSTRUCTOR_NAME = TYPE + (CLAMPED ? 'Clamped' : '') + 'Array';\n    var GETTER = 'get' + TYPE;\n    var SETTER = 'set' + TYPE;\n    var NativeTypedArrayConstructor = global[CONSTRUCTOR_NAME];\n    var TypedArrayConstructor = NativeTypedArrayConstructor;\n    var TypedArrayConstructorPrototype = TypedArrayConstructor && TypedArrayConstructor.prototype;\n    var exported = {};\n\n    var getter = function (that, index) {\n      var data = getInternalState(that);\n      return data.view[GETTER](index * BYTES + data.byteOffset, true);\n    };\n\n    var setter = function (that, index, value) {\n      var data = getInternalState(that);\n      if (CLAMPED) value = (value = round(value)) < 0 ? 0 : value > 0xFF ? 0xFF : value & 0xFF;\n      data.view[SETTER](index * BYTES + data.byteOffset, value, true);\n    };\n\n    var addElement = function (that, index) {\n      nativeDefineProperty(that, index, {\n        get: function () {\n          return getter(this, index);\n        },\n        set: function (value) {\n          return setter(this, index, value);\n        },\n        enumerable: true\n      });\n    };\n\n    if (!NATIVE_ARRAY_BUFFER_VIEWS) {\n      TypedArrayConstructor = wrapper(function (that, data, offset, $length) {\n        anInstance(that, TypedArrayConstructorPrototype);\n        var index = 0;\n        var byteOffset = 0;\n        var buffer, byteLength, length;\n        if (!isObject(data)) {\n          length = toIndex(data);\n          byteLength = length * BYTES;\n          buffer = new ArrayBuffer(byteLength);\n        } else if (isArrayBuffer(data)) {\n          buffer = data;\n          byteOffset = toOffset(offset, BYTES);\n          var $len = data.byteLength;\n          if ($length === undefined) {\n            if ($len % BYTES) throw RangeError(WRONG_LENGTH);\n            byteLength = $len - byteOffset;\n            if (byteLength < 0) throw RangeError(WRONG_LENGTH);\n          } else {\n            byteLength = toLength($length) * BYTES;\n            if (byteLength + byteOffset > $len) throw RangeError(WRONG_LENGTH);\n          }\n          length = byteLength / BYTES;\n        } else if (isTypedArray(data)) {\n          return fromList(TypedArrayConstructor, data);\n        } else {\n          return call(typedArrayFrom, TypedArrayConstructor, data);\n        }\n        setInternalState(that, {\n          buffer: buffer,\n          byteOffset: byteOffset,\n          byteLength: byteLength,\n          length: length,\n          view: new DataView(buffer)\n        });\n        while (index < length) addElement(that, index++);\n      });\n\n      if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);\n      TypedArrayConstructorPrototype = TypedArrayConstructor.prototype = create(TypedArrayPrototype);\n    } else if (TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS) {\n      TypedArrayConstructor = wrapper(function (dummy, data, typedArrayOffset, $length) {\n        anInstance(dummy, TypedArrayConstructorPrototype);\n        return inheritIfRequired(function () {\n          if (!isObject(data)) return new NativeTypedArrayConstructor(toIndex(data));\n          if (isArrayBuffer(data)) return $length !== undefined\n            ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES), $length)\n            : typedArrayOffset !== undefined\n              ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES))\n              : new NativeTypedArrayConstructor(data);\n          if (isTypedArray(data)) return fromList(TypedArrayConstructor, data);\n          return call(typedArrayFrom, TypedArrayConstructor, data);\n        }(), dummy, TypedArrayConstructor);\n      });\n\n      if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);\n      forEach(getOwnPropertyNames(NativeTypedArrayConstructor), function (key) {\n        if (!(key in TypedArrayConstructor)) {\n          createNonEnumerableProperty(TypedArrayConstructor, key, NativeTypedArrayConstructor[key]);\n        }\n      });\n      TypedArrayConstructor.prototype = TypedArrayConstructorPrototype;\n    }\n\n    if (TypedArrayConstructorPrototype.constructor !== TypedArrayConstructor) {\n      createNonEnumerableProperty(TypedArrayConstructorPrototype, 'constructor', TypedArrayConstructor);\n    }\n\n    createNonEnumerableProperty(TypedArrayConstructorPrototype, TYPED_ARRAY_CONSTRUCTOR, TypedArrayConstructor);\n\n    if (TYPED_ARRAY_TAG) {\n      createNonEnumerableProperty(TypedArrayConstructorPrototype, TYPED_ARRAY_TAG, CONSTRUCTOR_NAME);\n    }\n\n    exported[CONSTRUCTOR_NAME] = TypedArrayConstructor;\n\n    $({\n      global: true, forced: TypedArrayConstructor != NativeTypedArrayConstructor, sham: !NATIVE_ARRAY_BUFFER_VIEWS\n    }, exported);\n\n    if (!(BYTES_PER_ELEMENT in TypedArrayConstructor)) {\n      createNonEnumerableProperty(TypedArrayConstructor, BYTES_PER_ELEMENT, BYTES);\n    }\n\n    if (!(BYTES_PER_ELEMENT in TypedArrayConstructorPrototype)) {\n      createNonEnumerableProperty(TypedArrayConstructorPrototype, BYTES_PER_ELEMENT, BYTES);\n    }\n\n    setSpecies(CONSTRUCTOR_NAME);\n  };\n} else module.exports = function () { /* empty */ };\n", "/* eslint-disable no-new -- required for testing */\nvar global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar NATIVE_ARRAY_BUFFER_VIEWS = require('../internals/array-buffer-view-core').NATIVE_ARRAY_BUFFER_VIEWS;\n\nvar ArrayBuffer = global.ArrayBuffer;\nvar Int8Array = global.Int8Array;\n\nmodule.exports = !NATIVE_ARRAY_BUFFER_VIEWS || !fails(function () {\n  Int8Array(1);\n}) || !fails(function () {\n  new Int8Array(-1);\n}) || !checkCorrectnessOfIteration(function (iterable) {\n  new Int8Array();\n  new Int8Array(null);\n  new Int8Array(1.5);\n  new Int8Array(iterable);\n}, true) || fails(function () {\n  // Safari (11+) bug - a reason why even Safari 13 should load a typed array polyfill\n  return new Int8Array(new ArrayBuffer(2), 1, undefined).length !== 1;\n});\n", "var arrayFromConstructorAndList = require('../internals/array-from-constructor-and-list');\nvar typedArraySpeciesConstructor = require('../internals/typed-array-species-constructor');\n\nmodule.exports = function (instance, list) {\n  return arrayFromConstructorAndList(typedArraySpeciesConstructor(instance), list);\n};\n", "var bind = require('../internals/function-bind-context');\nvar call = require('../internals/function-call');\nvar aConstructor = require('../internals/a-constructor');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar aTypedArrayConstructor = require('../internals/array-buffer-view-core').aTypedArrayConstructor;\n\nmodule.exports = function from(source /* , mapfn, thisArg */) {\n  var C = aConstructor(this);\n  var O = toObject(source);\n  var argumentsLength = arguments.length;\n  var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n  var mapping = mapfn !== undefined;\n  var iteratorMethod = getIteratorMethod(O);\n  var i, length, result, step, iterator, next;\n  if (iteratorMethod && !isArrayIteratorMethod(iteratorMethod)) {\n    iterator = getIterator(O, iteratorMethod);\n    next = iterator.next;\n    O = [];\n    while (!(step = call(next, iterator)).done) {\n      O.push(step.value);\n    }\n  }\n  if (mapping && argumentsLength > 2) {\n    mapfn = bind(mapfn, arguments[2]);\n  }\n  length = lengthOfArrayLike(O);\n  result = new (aTypedArrayConstructor(C))(length);\n  for (i = 0; length > i; i++) {\n    result[i] = mapping ? mapfn(O[i], i) : O[i];\n  }\n  return result;\n};\n", "var ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar speciesConstructor = require('../internals/species-constructor');\n\nvar TYPED_ARRAY_CONSTRUCTOR = ArrayBufferViewCore.TYPED_ARRAY_CONSTRUCTOR;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\n\n// a part of `TypedArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#typedarray-species-create\nmodule.exports = function (originalArray) {\n  return aTypedArrayConstructor(speciesConstructor(originalArray, originalArray[TYPED_ARRAY_CONSTRUCTOR]));\n};\n", "var uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.0.toString);\n\nmodule.exports = function (key) {\n  return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n", "/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\n\nmodule.exports = NATIVE_SYMBOL\n  && !Symbol.sham\n  && typeof Symbol.iterator == 'symbol';\n", "var wellKnownSymbol = require('../internals/well-known-symbol');\n\nexports.f = wellKnownSymbol;\n", "var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar symbolFor = Symbol && Symbol['for'];\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n  if (!hasOwn(WellKnownSymbolsStore, name) || !(NATIVE_SYMBOL || typeof WellKnownSymbolsStore[name] == 'string')) {\n    var description = 'Symbol.' + name;\n    if (NATIVE_SYMBOL && hasOwn(Symbol, name)) {\n      WellKnownSymbolsStore[name] = Symbol[name];\n    } else if (USE_SYMBOL_AS_UID && symbolFor) {\n      WellKnownSymbolsStore[name] = symbolFor(description);\n    } else {\n      WellKnownSymbolsStore[name] = createWellKnownSymbol(description);\n    }\n  } return WellKnownSymbolsStore[name];\n};\n", "// a string of all valid unicode whitespaces\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002' +\n  '\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n", "'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar create = require('../internals/object-create');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar clearErrorStack = require('../internals/clear-error-stack');\nvar installErrorCause = require('../internals/install-error-cause');\nvar iterate = require('../internals/iterate');\nvar normalizeStringArgument = require('../internals/normalize-string-argument');\nvar ERROR_STACK_INSTALLABLE = require('../internals/error-stack-installable');\n\nvar Error = global.Error;\nvar push = [].push;\n\nvar $AggregateError = function AggregateError(errors, message /* , options */) {\n  var that = isPrototypeOf(AggregateErrorPrototype, this) ? this : create(AggregateErrorPrototype);\n  var options = arguments.length > 2 ? arguments[2] : undefined;\n  if (setPrototypeOf) {\n    that = setPrototypeOf(new Error(undefined), getPrototypeOf(that));\n  }\n  createNonEnumerableProperty(that, 'message', normalizeStringArgument(message, ''));\n  if (ERROR_STACK_INSTALLABLE) createNonEnumerableProperty(that, 'stack', clearErrorStack(that.stack, 1));\n  installErrorCause(that, options);\n  var errorsArray = [];\n  iterate(errors, push, { that: errorsArray });\n  createNonEnumerableProperty(that, 'errors', errorsArray);\n  return that;\n};\n\nif (setPrototypeOf) setPrototypeOf($AggregateError, Error);\nelse copyConstructorProperties($AggregateError, Error);\n\nvar AggregateErrorPrototype = $AggregateError.prototype = create(Error.prototype, {\n  constructor: createPropertyDescriptor(1, $AggregateError),\n  message: createPropertyDescriptor(1, ''),\n  name: createPropertyDescriptor(1, 'AggregateError')\n});\n\n// `AggregateError` constructor\n// https://tc39.es/ecma262/#sec-aggregate-error-constructor\n$({ global: true }, {\n  AggregateError: $AggregateError\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar createProperty = require('../internals/create-property');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded';\nvar TypeError = global.TypeError;\n\n// We can't use this feature detection in V8 since it causes\n// deoptimization and serious performance degradation\n// https://github.com/zloirock/core-js/issues/679\nvar IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function () {\n  var array = [];\n  array[IS_CONCAT_SPREADABLE] = false;\n  return array.concat()[0] !== array;\n});\n\nvar SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat');\n\nvar isConcatSpreadable = function (O) {\n  if (!isObject(O)) return false;\n  var spreadable = O[IS_CONCAT_SPREADABLE];\n  return spreadable !== undefined ? !!spreadable : isArray(O);\n};\n\nvar FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT;\n\n// `Array.prototype.concat` method\n// https://tc39.es/ecma262/#sec-array.prototype.concat\n// with adding support of @@isConcatSpreadable and @@species\n$({ target: 'Array', proto: true, forced: FORCED }, {\n  // eslint-disable-next-line no-unused-vars -- required for `.length`\n  concat: function concat(arg) {\n    var O = toObject(this);\n    var A = arraySpeciesCreate(O, 0);\n    var n = 0;\n    var i, k, length, len, E;\n    for (i = -1, length = arguments.length; i < length; i++) {\n      E = i === -1 ? O : arguments[i];\n      if (isConcatSpreadable(E)) {\n        len = lengthOfArrayLike(E);\n        if (n + len > MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n        for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);\n      } else {\n        if (n >= MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n        createProperty(A, n++, E);\n      }\n    }\n    A.length = n;\n    return A;\n  }\n});\n", "var $ = require('../internals/export');\nvar copyWithin = require('../internals/array-copy-within');\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.copyWithin` method\n// https://tc39.es/ecma262/#sec-array.prototype.copywithin\n$({ target: 'Array', proto: true }, {\n  copyWithin: copyWithin\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('copyWithin');\n", "var $ = require('../internals/export');\nvar fill = require('../internals/array-fill');\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.fill` method\n// https://tc39.es/ecma262/#sec-array.prototype.fill\n$({ target: 'Array', proto: true }, {\n  fill: fill\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('fill');\n", "'use strict';\nvar $ = require('../internals/export');\nvar $filter = require('../internals/array-iteration').filter;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter');\n\n// `Array.prototype.filter` method\n// https://tc39.es/ecma262/#sec-array.prototype.filter\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n  filter: function filter(callbackfn /* , thisArg */) {\n    return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n", "var $ = require('../internals/export');\nvar from = require('../internals/array-from');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\n\nvar INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) {\n  // eslint-disable-next-line es/no-array-from -- required for testing\n  Array.from(iterable);\n});\n\n// `Array.from` method\n// https://tc39.es/ecma262/#sec-array.from\n$({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, {\n  from: from\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar $includes = require('../internals/array-includes').includes;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.includes` method\n// https://tc39.es/ecma262/#sec-array.prototype.includes\n$({ target: 'Array', proto: true }, {\n  includes: function includes(el /* , fromIndex = 0 */) {\n    return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('includes');\n", "'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar Iterators = require('../internals/iterators');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.es/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.es/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.es/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.es/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n  setInternalState(this, {\n    type: ARRAY_ITERATOR,\n    target: toIndexedObject(iterated), // target\n    index: 0,                          // next index\n    kind: kind                         // kind\n  });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n  var state = getInternalState(this);\n  var target = state.target;\n  var kind = state.kind;\n  var index = state.index++;\n  if (!target || index >= target.length) {\n    state.target = undefined;\n    return { value: undefined, done: true };\n  }\n  if (kind == 'keys') return { value: index, done: false };\n  if (kind == 'values') return { value: target[index], done: false };\n  return { value: [index, target[index]], done: false };\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.es/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.es/ecma262/#sec-createmappedargumentsobject\nIterators.Arguments = Iterators.Array;\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n", "'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar IndexedObject = require('../internals/indexed-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar un$Join = uncurryThis([].join);\n\nvar ES3_STRINGS = IndexedObject != Object;\nvar STRICT_METHOD = arrayMethodIsStrict('join', ',');\n\n// `Array.prototype.join` method\n// https://tc39.es/ecma262/#sec-array.prototype.join\n$({ target: 'Array', proto: true, forced: ES3_STRINGS || !STRICT_METHOD }, {\n  join: function join(separator) {\n    return un$Join(toIndexedObject(this), separator === undefined ? ',' : separator);\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar $map = require('../internals/array-iteration').map;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map');\n\n// `Array.prototype.map` method\n// https://tc39.es/ecma262/#sec-array.prototype.map\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n  map: function map(callbackfn /* , thisArg */) {\n    return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar isArray = require('../internals/is-array');\nvar isConstructor = require('../internals/is-constructor');\nvar isObject = require('../internals/is-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar createProperty = require('../internals/create-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar un$Slice = require('../internals/array-slice');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice');\n\nvar SPECIES = wellKnownSymbol('species');\nvar Array = global.Array;\nvar max = Math.max;\n\n// `Array.prototype.slice` method\n// https://tc39.es/ecma262/#sec-array.prototype.slice\n// fallback for not array-like ES3 strings and DOM objects\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n  slice: function slice(start, end) {\n    var O = toIndexedObject(this);\n    var length = lengthOfArrayLike(O);\n    var k = toAbsoluteIndex(start, length);\n    var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n    // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible\n    var Constructor, result, n;\n    if (isArray(O)) {\n      Constructor = O.constructor;\n      // cross-realm fallback\n      if (isConstructor(Constructor) && (Constructor === Array || isArray(Constructor.prototype))) {\n        Constructor = undefined;\n      } else if (isObject(Constructor)) {\n        Constructor = Constructor[SPECIES];\n        if (Constructor === null) Constructor = undefined;\n      }\n      if (Constructor === Array || Constructor === undefined) {\n        return un$Slice(O, k, fin);\n      }\n    }\n    result = new (Constructor === undefined ? Array : Constructor)(max(fin - k, 0));\n    for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);\n    result.length = n;\n    return result;\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toString = require('../internals/to-string');\nvar fails = require('../internals/fails');\nvar internalSort = require('../internals/array-sort');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar FF = require('../internals/engine-ff-version');\nvar IE_OR_EDGE = require('../internals/engine-is-ie-or-edge');\nvar V8 = require('../internals/engine-v8-version');\nvar WEBKIT = require('../internals/engine-webkit-version');\n\nvar test = [];\nvar un$Sort = uncurryThis(test.sort);\nvar push = uncurryThis(test.push);\n\n// IE8-\nvar FAILS_ON_UNDEFINED = fails(function () {\n  test.sort(undefined);\n});\n// V8 bug\nvar FAILS_ON_NULL = fails(function () {\n  test.sort(null);\n});\n// Old WebKit\nvar STRICT_METHOD = arrayMethodIsStrict('sort');\n\nvar STABLE_SORT = !fails(function () {\n  // feature detection can be too slow, so check engines versions\n  if (V8) return V8 < 70;\n  if (FF && FF > 3) return;\n  if (IE_OR_EDGE) return true;\n  if (WEBKIT) return WEBKIT < 603;\n\n  var result = '';\n  var code, chr, value, index;\n\n  // generate an array with more 512 elements (Chakra and old V8 fails only in this case)\n  for (code = 65; code < 76; code++) {\n    chr = String.fromCharCode(code);\n\n    switch (code) {\n      case 66: case 69: case 70: case 72: value = 3; break;\n      case 68: case 71: value = 4; break;\n      default: value = 2;\n    }\n\n    for (index = 0; index < 47; index++) {\n      test.push({ k: chr + index, v: value });\n    }\n  }\n\n  test.sort(function (a, b) { return b.v - a.v; });\n\n  for (index = 0; index < test.length; index++) {\n    chr = test[index].k.charAt(0);\n    if (result.charAt(result.length - 1) !== chr) result += chr;\n  }\n\n  return result !== 'DGBEFHACIJK';\n});\n\nvar FORCED = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || !STRICT_METHOD || !STABLE_SORT;\n\nvar getSortCompare = function (comparefn) {\n  return function (x, y) {\n    if (y === undefined) return -1;\n    if (x === undefined) return 1;\n    if (comparefn !== undefined) return +comparefn(x, y) || 0;\n    return toString(x) > toString(y) ? 1 : -1;\n  };\n};\n\n// `Array.prototype.sort` method\n// https://tc39.es/ecma262/#sec-array.prototype.sort\n$({ target: 'Array', proto: true, forced: FORCED }, {\n  sort: function sort(comparefn) {\n    if (comparefn !== undefined) aCallable(comparefn);\n\n    var array = toObject(this);\n\n    if (STABLE_SORT) return comparefn === undefined ? un$Sort(array) : un$Sort(array, comparefn);\n\n    var items = [];\n    var arrayLength = lengthOfArrayLike(array);\n    var itemsLength, index;\n\n    for (index = 0; index < arrayLength; index++) {\n      if (index in array) push(items, array[index]);\n    }\n\n    internalSort(items, getSortCompare(comparefn));\n\n    itemsLength = items.length;\n    index = 0;\n\n    while (index < itemsLength) array[index] = items[index++];\n    while (index < arrayLength) delete array[index++];\n\n    return array;\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toObject = require('../internals/to-object');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar createProperty = require('../internals/create-property');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('splice');\n\nvar TypeError = global.TypeError;\nvar max = Math.max;\nvar min = Math.min;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_LENGTH_EXCEEDED = 'Maximum allowed length exceeded';\n\n// `Array.prototype.splice` method\n// https://tc39.es/ecma262/#sec-array.prototype.splice\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n  splice: function splice(start, deleteCount /* , ...items */) {\n    var O = toObject(this);\n    var len = lengthOfArrayLike(O);\n    var actualStart = toAbsoluteIndex(start, len);\n    var argumentsLength = arguments.length;\n    var insertCount, actualDeleteCount, A, k, from, to;\n    if (argumentsLength === 0) {\n      insertCount = actualDeleteCount = 0;\n    } else if (argumentsLength === 1) {\n      insertCount = 0;\n      actualDeleteCount = len - actualStart;\n    } else {\n      insertCount = argumentsLength - 2;\n      actualDeleteCount = min(max(toIntegerOrInfinity(deleteCount), 0), len - actualStart);\n    }\n    if (len + insertCount - actualDeleteCount > MAX_SAFE_INTEGER) {\n      throw TypeError(MAXIMUM_ALLOWED_LENGTH_EXCEEDED);\n    }\n    A = arraySpeciesCreate(O, actualDeleteCount);\n    for (k = 0; k < actualDeleteCount; k++) {\n      from = actualStart + k;\n      if (from in O) createProperty(A, k, O[from]);\n    }\n    A.length = actualDeleteCount;\n    if (insertCount < actualDeleteCount) {\n      for (k = actualStart; k < len - actualDeleteCount; k++) {\n        from = k + actualDeleteCount;\n        to = k + insertCount;\n        if (from in O) O[to] = O[from];\n        else delete O[to];\n      }\n      for (k = len; k > len - actualDeleteCount + insertCount; k--) delete O[k - 1];\n    } else if (insertCount > actualDeleteCount) {\n      for (k = len - actualDeleteCount; k > actualStart; k--) {\n        from = k + actualDeleteCount - 1;\n        to = k + insertCount - 1;\n        if (from in O) O[to] = O[from];\n        else delete O[to];\n      }\n    }\n    for (k = 0; k < insertCount; k++) {\n      O[k + actualStart] = arguments[k + 2];\n    }\n    O.length = len - actualDeleteCount + insertCount;\n    return A;\n  }\n});\n", "var hasOwn = require('../internals/has-own-property');\nvar redefine = require('../internals/redefine');\nvar dateToPrimitive = require('../internals/date-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\nvar DatePrototype = Date.prototype;\n\n// `Date.prototype[@@toPrimitive]` method\n// https://tc39.es/ecma262/#sec-date.prototype-@@toprimitive\nif (!hasOwn(DatePrototype, TO_PRIMITIVE)) {\n  redefine(DatePrototype, TO_PRIMITIVE, dateToPrimitive);\n}\n", "var DESCRIPTORS = require('../internals/descriptors');\nvar FUNCTION_NAME_EXISTS = require('../internals/function-name').EXISTS;\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar defineProperty = require('../internals/object-define-property').f;\n\nvar FunctionPrototype = Function.prototype;\nvar functionToString = uncurryThis(FunctionPrototype.toString);\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar regExpExec = uncurryThis(nameRE.exec);\nvar NAME = 'name';\n\n// Function instances `.name` property\n// https://tc39.es/ecma262/#sec-function-instances-name\nif (DESCRIPTORS && !FUNCTION_NAME_EXISTS) {\n  defineProperty(FunctionPrototype, NAME, {\n    configurable: true,\n    get: function () {\n      try {\n        return regExpExec(nameRE, functionToString(this))[1];\n      } catch (error) {\n        return '';\n      }\n    }\n  });\n}\n", "var $ = require('../internals/export');\nvar global = require('../internals/global');\n\n// `globalThis` object\n// https://tc39.es/ecma262/#sec-globalthis\n$({ global: true }, {\n  globalThis: global\n});\n", "var global = require('../internals/global');\nvar setToStringTag = require('../internals/set-to-string-tag');\n\n// JSON[@@toStringTag] property\n// https://tc39.es/ecma262/#sec-json-@@tostringtag\nsetToStringTag(global.JSON, 'JSON', true);\n", "'use strict';\nvar collection = require('../internals/collection');\nvar collectionStrong = require('../internals/collection-strong');\n\n// `Map` constructor\n// https://tc39.es/ecma262/#sec-map-objects\ncollection('Map', function (init) {\n  return function Map() { return init(this, arguments.length ? arguments[0] : undefined); };\n}, collectionStrong);\n", "var setToStringTag = require('../internals/set-to-string-tag');\n\n// Math[@@toStringTag] property\n// https://tc39.es/ecma262/#sec-math-@@tostringtag\nsetToStringTag(Math, 'Math', true);\n", "'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isForced = require('../internals/is-forced');\nvar redefine = require('../internals/redefine');\nvar hasOwn = require('../internals/has-own-property');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar isSymbol = require('../internals/is-symbol');\nvar toPrimitive = require('../internals/to-primitive');\nvar fails = require('../internals/fails');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar defineProperty = require('../internals/object-define-property').f;\nvar thisNumberValue = require('../internals/this-number-value');\nvar trim = require('../internals/string-trim').trim;\n\nvar NUMBER = 'Number';\nvar NativeNumber = global[NUMBER];\nvar NumberPrototype = NativeNumber.prototype;\nvar TypeError = global.TypeError;\nvar arraySlice = uncurryThis(''.slice);\nvar charCodeAt = uncurryThis(''.charCodeAt);\n\n// `ToNumeric` abstract operation\n// https://tc39.es/ecma262/#sec-tonumeric\nvar toNumeric = function (value) {\n  var primValue = toPrimitive(value, 'number');\n  return typeof primValue == 'bigint' ? primValue : toNumber(primValue);\n};\n\n// `ToNumber` abstract operation\n// https://tc39.es/ecma262/#sec-tonumber\nvar toNumber = function (argument) {\n  var it = toPrimitive(argument, 'number');\n  var first, third, radix, maxCode, digits, length, index, code;\n  if (isSymbol(it)) throw TypeError('Cannot convert a Symbol value to a number');\n  if (typeof it == 'string' && it.length > 2) {\n    it = trim(it);\n    first = charCodeAt(it, 0);\n    if (first === 43 || first === 45) {\n      third = charCodeAt(it, 2);\n      if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n    } else if (first === 48) {\n      switch (charCodeAt(it, 1)) {\n        case 66: case 98: radix = 2; maxCode = 49; break; // fast equal of /^0b[01]+$/i\n        case 79: case 111: radix = 8; maxCode = 55; break; // fast equal of /^0o[0-7]+$/i\n        default: return +it;\n      }\n      digits = arraySlice(it, 2);\n      length = digits.length;\n      for (index = 0; index < length; index++) {\n        code = charCodeAt(digits, index);\n        // parseInt parses a string to a first unavailable symbol\n        // but ToNumber should return NaN if a string contains unavailable symbols\n        if (code < 48 || code > maxCode) return NaN;\n      } return parseInt(digits, radix);\n    }\n  } return +it;\n};\n\n// `Number` constructor\n// https://tc39.es/ecma262/#sec-number-constructor\nif (isForced(NUMBER, !NativeNumber(' 0o1') || !NativeNumber('0b1') || NativeNumber('+0x1'))) {\n  var NumberWrapper = function Number(value) {\n    var n = arguments.length < 1 ? 0 : NativeNumber(toNumeric(value));\n    var dummy = this;\n    // check on 1..constructor(foo) case\n    return isPrototypeOf(NumberPrototype, dummy) && fails(function () { thisNumberValue(dummy); })\n      ? inheritIfRequired(Object(n), dummy, NumberWrapper) : n;\n  };\n  for (var keys = DESCRIPTORS ? getOwnPropertyNames(NativeNumber) : (\n    // ES3:\n    'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n    // ES2015 (in case, if modules with ES2015 Number statics required before):\n    'EPSILON,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,isFinite,isInteger,isNaN,isSafeInteger,parseFloat,parseInt,' +\n    // ESNext\n    'fromString,range'\n  ).split(','), j = 0, key; keys.length > j; j++) {\n    if (hasOwn(NativeNumber, key = keys[j]) && !hasOwn(NumberWrapper, key)) {\n      defineProperty(NumberWrapper, key, getOwnPropertyDescriptor(NativeNumber, key));\n    }\n  }\n  NumberWrapper.prototype = NumberPrototype;\n  NumberPrototype.constructor = NumberWrapper;\n  redefine(global, NUMBER, NumberWrapper);\n}\n", "var $ = require('../internals/export');\n\n// `Number.EPSILON` constant\n// https://tc39.es/ecma262/#sec-number.epsilon\n$({ target: 'Number', stat: true }, {\n  EPSILON: Math.pow(2, -52)\n});\n", "var $ = require('../internals/export');\nvar numberIsFinite = require('../internals/number-is-finite');\n\n// `Number.isFinite` method\n// https://tc39.es/ecma262/#sec-number.isfinite\n$({ target: 'Number', stat: true }, { isFinite: numberIsFinite });\n", "var $ = require('../internals/export');\nvar isIntegralNumber = require('../internals/is-integral-number');\n\n// `Number.isInteger` method\n// https://tc39.es/ecma262/#sec-number.isinteger\n$({ target: 'Number', stat: true }, {\n  isInteger: isIntegralNumber\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar thisNumberValue = require('../internals/this-number-value');\nvar $repeat = require('../internals/string-repeat');\nvar fails = require('../internals/fails');\n\nvar RangeError = global.RangeError;\nvar String = global.String;\nvar floor = Math.floor;\nvar repeat = uncurryThis($repeat);\nvar stringSlice = uncurryThis(''.slice);\nvar un$ToFixed = uncurryThis(1.0.toFixed);\n\nvar pow = function (x, n, acc) {\n  return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc);\n};\n\nvar log = function (x) {\n  var n = 0;\n  var x2 = x;\n  while (x2 >= 4096) {\n    n += 12;\n    x2 /= 4096;\n  }\n  while (x2 >= 2) {\n    n += 1;\n    x2 /= 2;\n  } return n;\n};\n\nvar multiply = function (data, n, c) {\n  var index = -1;\n  var c2 = c;\n  while (++index < 6) {\n    c2 += n * data[index];\n    data[index] = c2 % 1e7;\n    c2 = floor(c2 / 1e7);\n  }\n};\n\nvar divide = function (data, n) {\n  var index = 6;\n  var c = 0;\n  while (--index >= 0) {\n    c += data[index];\n    data[index] = floor(c / n);\n    c = (c % n) * 1e7;\n  }\n};\n\nvar dataToString = function (data) {\n  var index = 6;\n  var s = '';\n  while (--index >= 0) {\n    if (s !== '' || index === 0 || data[index] !== 0) {\n      var t = String(data[index]);\n      s = s === '' ? t : s + repeat('0', 7 - t.length) + t;\n    }\n  } return s;\n};\n\nvar FORCED = fails(function () {\n  return un$ToFixed(0.00008, 3) !== '0.000' ||\n    un$ToFixed(0.9, 0) !== '1' ||\n    un$ToFixed(1.255, 2) !== '1.25' ||\n    un$ToFixed(1000000000000000128.0, 0) !== '1000000000000000128';\n}) || !fails(function () {\n  // V8 ~ Android 4.3-\n  un$ToFixed({});\n});\n\n// `Number.prototype.toFixed` method\n// https://tc39.es/ecma262/#sec-number.prototype.tofixed\n$({ target: 'Number', proto: true, forced: FORCED }, {\n  toFixed: function toFixed(fractionDigits) {\n    var number = thisNumberValue(this);\n    var fractDigits = toIntegerOrInfinity(fractionDigits);\n    var data = [0, 0, 0, 0, 0, 0];\n    var sign = '';\n    var result = '0';\n    var e, z, j, k;\n\n    if (fractDigits < 0 || fractDigits > 20) throw RangeError('Incorrect fraction digits');\n    // eslint-disable-next-line no-self-compare -- NaN check\n    if (number != number) return 'NaN';\n    if (number <= -1e21 || number >= 1e21) return String(number);\n    if (number < 0) {\n      sign = '-';\n      number = -number;\n    }\n    if (number > 1e-21) {\n      e = log(number * pow(2, 69, 1)) - 69;\n      z = e < 0 ? number * pow(2, -e, 1) : number / pow(2, e, 1);\n      z *= 0x10000000000000;\n      e = 52 - e;\n      if (e > 0) {\n        multiply(data, 0, z);\n        j = fractDigits;\n        while (j >= 7) {\n          multiply(data, 1e7, 0);\n          j -= 7;\n        }\n        multiply(data, pow(10, j, 1), 0);\n        j = e - 1;\n        while (j >= 23) {\n          divide(data, 1 << 23);\n          j -= 23;\n        }\n        divide(data, 1 << j);\n        multiply(data, 1, 1);\n        divide(data, 2);\n        result = dataToString(data);\n      } else {\n        multiply(data, 0, z);\n        multiply(data, 1 << -e, 0);\n        result = dataToString(data) + repeat('0', fractDigits);\n      }\n    }\n    if (fractDigits > 0) {\n      k = result.length;\n      result = sign + (k <= fractDigits\n        ? '0.' + repeat('0', fractDigits - k) + result\n        : stringSlice(result, 0, k - fractDigits) + '.' + stringSlice(result, k - fractDigits));\n    } else {\n      result = sign + result;\n    } return result;\n  }\n});\n", "var $ = require('../internals/export');\nvar assign = require('../internals/object-assign');\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\n// eslint-disable-next-line es/no-object-assign -- required for testing\n$({ target: 'Object', stat: true, forced: Object.assign !== assign }, {\n  assign: assign\n});\n", "var $ = require('../internals/export');\nvar FREEZING = require('../internals/freezing');\nvar fails = require('../internals/fails');\nvar isObject = require('../internals/is-object');\nvar onFreeze = require('../internals/internal-metadata').onFreeze;\n\n// eslint-disable-next-line es/no-object-freeze -- safe\nvar $freeze = Object.freeze;\nvar FAILS_ON_PRIMITIVES = fails(function () { $freeze(1); });\n\n// `Object.freeze` method\n// https://tc39.es/ecma262/#sec-object.freeze\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !FREEZING }, {\n  freeze: function freeze(it) {\n    return $freeze && isObject(it) ? $freeze(onFreeze(it)) : it;\n  }\n});\n", "var $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar nativeGetOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeGetOwnPropertyDescriptor(1); });\nvar FORCED = !DESCRIPTORS || FAILS_ON_PRIMITIVES;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\n$({ target: 'Object', stat: true, forced: FORCED, sham: !DESCRIPTORS }, {\n  getOwnPropertyDescriptor: function getOwnPropertyDescriptor(it, key) {\n    return nativeGetOwnPropertyDescriptor(toIndexedObject(it), key);\n  }\n});\n", "var $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar ownKeys = require('../internals/own-keys');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar createProperty = require('../internals/create-property');\n\n// `Object.getOwnPropertyDescriptors` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptors\n$({ target: 'Object', stat: true, sham: !DESCRIPTORS }, {\n  getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n    var O = toIndexedObject(object);\n    var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n    var keys = ownKeys(O);\n    var result = {};\n    var index = 0;\n    var key, descriptor;\n    while (keys.length > index) {\n      descriptor = getOwnPropertyDescriptor(O, key = keys[index++]);\n      if (descriptor !== undefined) createProperty(result, key, descriptor);\n    }\n    return result;\n  }\n});\n", "var $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar toObject = require('../internals/to-object');\nvar nativeGetPrototypeOf = require('../internals/object-get-prototype-of');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeGetPrototypeOf(1); });\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !CORRECT_PROTOTYPE_GETTER }, {\n  getPrototypeOf: function getPrototypeOf(it) {\n    return nativeGetPrototypeOf(toObject(it));\n  }\n});\n\n", "var $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar nativeKeys = require('../internals/object-keys');\nvar fails = require('../internals/fails');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeKeys(1); });\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n  keys: function keys(it) {\n    return nativeKeys(toObject(it));\n  }\n});\n", "var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar redefine = require('../internals/redefine');\nvar toString = require('../internals/object-to-string');\n\n// `Object.prototype.toString` method\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nif (!TO_STRING_TAG_SUPPORT) {\n  redefine(Object.prototype, 'toString', toString, { unsafe: true });\n}\n", "var $ = require('../internals/export');\nvar $values = require('../internals/object-to-array').values;\n\n// `Object.values` method\n// https://tc39.es/ecma262/#sec-object.values\n$({ target: 'Object', stat: true }, {\n  values: function values(O) {\n    return $values(O);\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar iterate = require('../internals/iterate');\n\n// `Promise.allSettled` method\n// https://tc39.es/ecma262/#sec-promise.allsettled\n$({ target: 'Promise', stat: true }, {\n  allSettled: function allSettled(iterable) {\n    var C = this;\n    var capability = newPromiseCapabilityModule.f(C);\n    var resolve = capability.resolve;\n    var reject = capability.reject;\n    var result = perform(function () {\n      var promiseResolve = aCallable(C.resolve);\n      var values = [];\n      var counter = 0;\n      var remaining = 1;\n      iterate(iterable, function (promise) {\n        var index = counter++;\n        var alreadyCalled = false;\n        remaining++;\n        call(promiseResolve, C, promise).then(function (value) {\n          if (alreadyCalled) return;\n          alreadyCalled = true;\n          values[index] = { status: 'fulfilled', value: value };\n          --remaining || resolve(values);\n        }, function (error) {\n          if (alreadyCalled) return;\n          alreadyCalled = true;\n          values[index] = { status: 'rejected', reason: error };\n          --remaining || resolve(values);\n        });\n      });\n      --remaining || resolve(values);\n    });\n    if (result.error) reject(result.value);\n    return capability.promise;\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar aCallable = require('../internals/a-callable');\nvar getBuiltIn = require('../internals/get-built-in');\nvar call = require('../internals/function-call');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar iterate = require('../internals/iterate');\n\nvar PROMISE_ANY_ERROR = 'No one promise resolved';\n\n// `Promise.any` method\n// https://tc39.es/ecma262/#sec-promise.any\n$({ target: 'Promise', stat: true }, {\n  any: function any(iterable) {\n    var C = this;\n    var AggregateError = getBuiltIn('AggregateError');\n    var capability = newPromiseCapabilityModule.f(C);\n    var resolve = capability.resolve;\n    var reject = capability.reject;\n    var result = perform(function () {\n      var promiseResolve = aCallable(C.resolve);\n      var errors = [];\n      var counter = 0;\n      var remaining = 1;\n      var alreadyResolved = false;\n      iterate(iterable, function (promise) {\n        var index = counter++;\n        var alreadyRejected = false;\n        remaining++;\n        call(promiseResolve, C, promise).then(function (value) {\n          if (alreadyRejected || alreadyResolved) return;\n          alreadyResolved = true;\n          resolve(value);\n        }, function (error) {\n          if (alreadyRejected || alreadyResolved) return;\n          alreadyRejected = true;\n          errors[index] = error;\n          --remaining || reject(new AggregateError(errors, PROMISE_ANY_ERROR));\n        });\n      });\n      --remaining || reject(new AggregateError(errors, PROMISE_ANY_ERROR));\n    });\n    if (result.error) reject(result.value);\n    return capability.promise;\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar NativePromise = require('../internals/native-promise-constructor');\nvar fails = require('../internals/fails');\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar speciesConstructor = require('../internals/species-constructor');\nvar promiseResolve = require('../internals/promise-resolve');\nvar redefine = require('../internals/redefine');\n\n// Safari bug https://bugs.webkit.org/show_bug.cgi?id=200829\nvar NON_GENERIC = !!NativePromise && fails(function () {\n  NativePromise.prototype['finally'].call({ then: function () { /* empty */ } }, function () { /* empty */ });\n});\n\n// `Promise.prototype.finally` method\n// https://tc39.es/ecma262/#sec-promise.prototype.finally\n$({ target: 'Promise', proto: true, real: true, forced: NON_GENERIC }, {\n  'finally': function (onFinally) {\n    var C = speciesConstructor(this, getBuiltIn('Promise'));\n    var isFunction = isCallable(onFinally);\n    return this.then(\n      isFunction ? function (x) {\n        return promiseResolve(C, onFinally()).then(function () { return x; });\n      } : onFinally,\n      isFunction ? function (e) {\n        return promiseResolve(C, onFinally()).then(function () { throw e; });\n      } : onFinally\n    );\n  }\n});\n\n// makes sure that native promise-based APIs `Promise#finally` properly works with patched `Promise#then`\nif (!IS_PURE && isCallable(NativePromise)) {\n  var method = getBuiltIn('Promise').prototype['finally'];\n  if (NativePromise.prototype['finally'] !== method) {\n    redefine(NativePromise.prototype, 'finally', method, { unsafe: true });\n  }\n}\n", "'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar call = require('../internals/function-call');\nvar NativePromise = require('../internals/native-promise-constructor');\nvar redefine = require('../internals/redefine');\nvar redefineAll = require('../internals/redefine-all');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar setSpecies = require('../internals/set-species');\nvar aCallable = require('../internals/a-callable');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar anInstance = require('../internals/an-instance');\nvar inspectSource = require('../internals/inspect-source');\nvar iterate = require('../internals/iterate');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar speciesConstructor = require('../internals/species-constructor');\nvar task = require('../internals/task').set;\nvar microtask = require('../internals/microtask');\nvar promiseResolve = require('../internals/promise-resolve');\nvar hostReportErrors = require('../internals/host-report-errors');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar InternalStateModule = require('../internals/internal-state');\nvar isForced = require('../internals/is-forced');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_BROWSER = require('../internals/engine-is-browser');\nvar IS_NODE = require('../internals/engine-is-node');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\nvar PROMISE = 'Promise';\n\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar getInternalPromiseState = InternalStateModule.getterFor(PROMISE);\nvar NativePromisePrototype = NativePromise && NativePromise.prototype;\nvar PromiseConstructor = NativePromise;\nvar PromisePrototype = NativePromisePrototype;\nvar TypeError = global.TypeError;\nvar document = global.document;\nvar process = global.process;\nvar newPromiseCapability = newPromiseCapabilityModule.f;\nvar newGenericPromiseCapability = newPromiseCapability;\n\nvar DISPATCH_EVENT = !!(document && document.createEvent && global.dispatchEvent);\nvar NATIVE_REJECTION_EVENT = isCallable(global.PromiseRejectionEvent);\nvar UNHANDLED_REJECTION = 'unhandledrejection';\nvar REJECTION_HANDLED = 'rejectionhandled';\nvar PENDING = 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\nvar HANDLED = 1;\nvar UNHANDLED = 2;\nvar SUBCLASSING = false;\n\nvar Internal, OwnPromiseCapability, PromiseWrapper, nativeThen;\n\nvar FORCED = isForced(PROMISE, function () {\n  var PROMISE_CONSTRUCTOR_SOURCE = inspectSource(PromiseConstructor);\n  var GLOBAL_CORE_JS_PROMISE = PROMISE_CONSTRUCTOR_SOURCE !== String(PromiseConstructor);\n  // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n  // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n  // We can't detect it synchronously, so just check versions\n  if (!GLOBAL_CORE_JS_PROMISE && V8_VERSION === 66) return true;\n  // We need Promise#finally in the pure version for preventing prototype pollution\n  if (IS_PURE && !PromisePrototype['finally']) return true;\n  // We can't use @@species feature detection in V8 since it causes\n  // deoptimization and performance degradation\n  // https://github.com/zloirock/core-js/issues/679\n  if (V8_VERSION >= 51 && /native code/.test(PROMISE_CONSTRUCTOR_SOURCE)) return false;\n  // Detect correctness of subclassing with @@species support\n  var promise = new PromiseConstructor(function (resolve) { resolve(1); });\n  var FakePromise = function (exec) {\n    exec(function () { /* empty */ }, function () { /* empty */ });\n  };\n  var constructor = promise.constructor = {};\n  constructor[SPECIES] = FakePromise;\n  SUBCLASSING = promise.then(function () { /* empty */ }) instanceof FakePromise;\n  if (!SUBCLASSING) return true;\n  // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n  return !GLOBAL_CORE_JS_PROMISE && IS_BROWSER && !NATIVE_REJECTION_EVENT;\n});\n\nvar INCORRECT_ITERATION = FORCED || !checkCorrectnessOfIteration(function (iterable) {\n  PromiseConstructor.all(iterable)['catch'](function () { /* empty */ });\n});\n\n// helpers\nvar isThenable = function (it) {\n  var then;\n  return isObject(it) && isCallable(then = it.then) ? then : false;\n};\n\nvar notify = function (state, isReject) {\n  if (state.notified) return;\n  state.notified = true;\n  var chain = state.reactions;\n  microtask(function () {\n    var value = state.value;\n    var ok = state.state == FULFILLED;\n    var index = 0;\n    // variable length - can't use forEach\n    while (chain.length > index) {\n      var reaction = chain[index++];\n      var handler = ok ? reaction.ok : reaction.fail;\n      var resolve = reaction.resolve;\n      var reject = reaction.reject;\n      var domain = reaction.domain;\n      var result, then, exited;\n      try {\n        if (handler) {\n          if (!ok) {\n            if (state.rejection === UNHANDLED) onHandleUnhandled(state);\n            state.rejection = HANDLED;\n          }\n          if (handler === true) result = value;\n          else {\n            if (domain) domain.enter();\n            result = handler(value); // can throw\n            if (domain) {\n              domain.exit();\n              exited = true;\n            }\n          }\n          if (result === reaction.promise) {\n            reject(TypeError('Promise-chain cycle'));\n          } else if (then = isThenable(result)) {\n            call(then, result, resolve, reject);\n          } else resolve(result);\n        } else reject(value);\n      } catch (error) {\n        if (domain && !exited) domain.exit();\n        reject(error);\n      }\n    }\n    state.reactions = [];\n    state.notified = false;\n    if (isReject && !state.rejection) onUnhandled(state);\n  });\n};\n\nvar dispatchEvent = function (name, promise, reason) {\n  var event, handler;\n  if (DISPATCH_EVENT) {\n    event = document.createEvent('Event');\n    event.promise = promise;\n    event.reason = reason;\n    event.initEvent(name, false, true);\n    global.dispatchEvent(event);\n  } else event = { promise: promise, reason: reason };\n  if (!NATIVE_REJECTION_EVENT && (handler = global['on' + name])) handler(event);\n  else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason);\n};\n\nvar onUnhandled = function (state) {\n  call(task, global, function () {\n    var promise = state.facade;\n    var value = state.value;\n    var IS_UNHANDLED = isUnhandled(state);\n    var result;\n    if (IS_UNHANDLED) {\n      result = perform(function () {\n        if (IS_NODE) {\n          process.emit('unhandledRejection', value, promise);\n        } else dispatchEvent(UNHANDLED_REJECTION, promise, value);\n      });\n      // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n      state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED;\n      if (result.error) throw result.value;\n    }\n  });\n};\n\nvar isUnhandled = function (state) {\n  return state.rejection !== HANDLED && !state.parent;\n};\n\nvar onHandleUnhandled = function (state) {\n  call(task, global, function () {\n    var promise = state.facade;\n    if (IS_NODE) {\n      process.emit('rejectionHandled', promise);\n    } else dispatchEvent(REJECTION_HANDLED, promise, state.value);\n  });\n};\n\nvar bind = function (fn, state, unwrap) {\n  return function (value) {\n    fn(state, value, unwrap);\n  };\n};\n\nvar internalReject = function (state, value, unwrap) {\n  if (state.done) return;\n  state.done = true;\n  if (unwrap) state = unwrap;\n  state.value = value;\n  state.state = REJECTED;\n  notify(state, true);\n};\n\nvar internalResolve = function (state, value, unwrap) {\n  if (state.done) return;\n  state.done = true;\n  if (unwrap) state = unwrap;\n  try {\n    if (state.facade === value) throw TypeError(\"Promise can't be resolved itself\");\n    var then = isThenable(value);\n    if (then) {\n      microtask(function () {\n        var wrapper = { done: false };\n        try {\n          call(then, value,\n            bind(internalResolve, wrapper, state),\n            bind(internalReject, wrapper, state)\n          );\n        } catch (error) {\n          internalReject(wrapper, error, state);\n        }\n      });\n    } else {\n      state.value = value;\n      state.state = FULFILLED;\n      notify(state, false);\n    }\n  } catch (error) {\n    internalReject({ done: false }, error, state);\n  }\n};\n\n// constructor polyfill\nif (FORCED) {\n  // 25.4.3.1 Promise(executor)\n  PromiseConstructor = function Promise(executor) {\n    anInstance(this, PromisePrototype);\n    aCallable(executor);\n    call(Internal, this);\n    var state = getInternalState(this);\n    try {\n      executor(bind(internalResolve, state), bind(internalReject, state));\n    } catch (error) {\n      internalReject(state, error);\n    }\n  };\n  PromisePrototype = PromiseConstructor.prototype;\n  // eslint-disable-next-line no-unused-vars -- required for `.length`\n  Internal = function Promise(executor) {\n    setInternalState(this, {\n      type: PROMISE,\n      done: false,\n      notified: false,\n      parent: false,\n      reactions: [],\n      rejection: false,\n      state: PENDING,\n      value: undefined\n    });\n  };\n  Internal.prototype = redefineAll(PromisePrototype, {\n    // `Promise.prototype.then` method\n    // https://tc39.es/ecma262/#sec-promise.prototype.then\n    then: function then(onFulfilled, onRejected) {\n      var state = getInternalPromiseState(this);\n      var reactions = state.reactions;\n      var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor));\n      reaction.ok = isCallable(onFulfilled) ? onFulfilled : true;\n      reaction.fail = isCallable(onRejected) && onRejected;\n      reaction.domain = IS_NODE ? process.domain : undefined;\n      state.parent = true;\n      reactions[reactions.length] = reaction;\n      if (state.state != PENDING) notify(state, false);\n      return reaction.promise;\n    },\n    // `Promise.prototype.catch` method\n    // https://tc39.es/ecma262/#sec-promise.prototype.catch\n    'catch': function (onRejected) {\n      return this.then(undefined, onRejected);\n    }\n  });\n  OwnPromiseCapability = function () {\n    var promise = new Internal();\n    var state = getInternalState(promise);\n    this.promise = promise;\n    this.resolve = bind(internalResolve, state);\n    this.reject = bind(internalReject, state);\n  };\n  newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n    return C === PromiseConstructor || C === PromiseWrapper\n      ? new OwnPromiseCapability(C)\n      : newGenericPromiseCapability(C);\n  };\n\n  if (!IS_PURE && isCallable(NativePromise) && NativePromisePrototype !== Object.prototype) {\n    nativeThen = NativePromisePrototype.then;\n\n    if (!SUBCLASSING) {\n      // make `Promise#then` return a polyfilled `Promise` for native promise-based APIs\n      redefine(NativePromisePrototype, 'then', function then(onFulfilled, onRejected) {\n        var that = this;\n        return new PromiseConstructor(function (resolve, reject) {\n          call(nativeThen, that, resolve, reject);\n        }).then(onFulfilled, onRejected);\n      // https://github.com/zloirock/core-js/issues/640\n      }, { unsafe: true });\n\n      // makes sure that native promise-based APIs `Promise#catch` properly works with patched `Promise#then`\n      redefine(NativePromisePrototype, 'catch', PromisePrototype['catch'], { unsafe: true });\n    }\n\n    // make `.constructor === Promise` work for native promise-based APIs\n    try {\n      delete NativePromisePrototype.constructor;\n    } catch (error) { /* empty */ }\n\n    // make `instanceof Promise` work for native promise-based APIs\n    if (setPrototypeOf) {\n      setPrototypeOf(NativePromisePrototype, PromisePrototype);\n    }\n  }\n}\n\n$({ global: true, wrap: true, forced: FORCED }, {\n  Promise: PromiseConstructor\n});\n\nsetToStringTag(PromiseConstructor, PROMISE, false, true);\nsetSpecies(PROMISE);\n\nPromiseWrapper = getBuiltIn(PROMISE);\n\n// statics\n$({ target: PROMISE, stat: true, forced: FORCED }, {\n  // `Promise.reject` method\n  // https://tc39.es/ecma262/#sec-promise.reject\n  reject: function reject(r) {\n    var capability = newPromiseCapability(this);\n    call(capability.reject, undefined, r);\n    return capability.promise;\n  }\n});\n\n$({ target: PROMISE, stat: true, forced: IS_PURE || FORCED }, {\n  // `Promise.resolve` method\n  // https://tc39.es/ecma262/#sec-promise.resolve\n  resolve: function resolve(x) {\n    return promiseResolve(IS_PURE && this === PromiseWrapper ? PromiseConstructor : this, x);\n  }\n});\n\n$({ target: PROMISE, stat: true, forced: INCORRECT_ITERATION }, {\n  // `Promise.all` method\n  // https://tc39.es/ecma262/#sec-promise.all\n  all: function all(iterable) {\n    var C = this;\n    var capability = newPromiseCapability(C);\n    var resolve = capability.resolve;\n    var reject = capability.reject;\n    var result = perform(function () {\n      var $promiseResolve = aCallable(C.resolve);\n      var values = [];\n      var counter = 0;\n      var remaining = 1;\n      iterate(iterable, function (promise) {\n        var index = counter++;\n        var alreadyCalled = false;\n        remaining++;\n        call($promiseResolve, C, promise).then(function (value) {\n          if (alreadyCalled) return;\n          alreadyCalled = true;\n          values[index] = value;\n          --remaining || resolve(values);\n        }, reject);\n      });\n      --remaining || resolve(values);\n    });\n    if (result.error) reject(result.value);\n    return capability.promise;\n  },\n  // `Promise.race` method\n  // https://tc39.es/ecma262/#sec-promise.race\n  race: function race(iterable) {\n    var C = this;\n    var capability = newPromiseCapability(C);\n    var reject = capability.reject;\n    var result = perform(function () {\n      var $promiseResolve = aCallable(C.resolve);\n      iterate(iterable, function (promise) {\n        call($promiseResolve, C, promise).then(capability.resolve, reject);\n      });\n    });\n    if (result.error) reject(result.value);\n    return capability.promise;\n  }\n});\n", "var $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar apply = require('../internals/function-apply');\nvar bind = require('../internals/function-bind');\nvar aConstructor = require('../internals/a-constructor');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar create = require('../internals/object-create');\nvar fails = require('../internals/fails');\n\nvar nativeConstruct = getBuiltIn('Reflect', 'construct');\nvar ObjectPrototype = Object.prototype;\nvar push = [].push;\n\n// `Reflect.construct` method\n// https://tc39.es/ecma262/#sec-reflect.construct\n// MS Edge supports only 2 arguments and argumentsList argument is optional\n// FF Nightly sets third argument as `new.target`, but does not create `this` from it\nvar NEW_TARGET_BUG = fails(function () {\n  function F() { /* empty */ }\n  return !(nativeConstruct(function () { /* empty */ }, [], F) instanceof F);\n});\n\nvar ARGS_BUG = !fails(function () {\n  nativeConstruct(function () { /* empty */ });\n});\n\nvar FORCED = NEW_TARGET_BUG || ARGS_BUG;\n\n$({ target: 'Reflect', stat: true, forced: FORCED, sham: FORCED }, {\n  construct: function construct(Target, args /* , newTarget */) {\n    aConstructor(Target);\n    anObject(args);\n    var newTarget = arguments.length < 3 ? Target : aConstructor(arguments[2]);\n    if (ARGS_BUG && !NEW_TARGET_BUG) return nativeConstruct(Target, args, newTarget);\n    if (Target == newTarget) {\n      // w/o altered newTarget, optimization for 0-4 arguments\n      switch (args.length) {\n        case 0: return new Target();\n        case 1: return new Target(args[0]);\n        case 2: return new Target(args[0], args[1]);\n        case 3: return new Target(args[0], args[1], args[2]);\n        case 4: return new Target(args[0], args[1], args[2], args[3]);\n      }\n      // w/o altered newTarget, lot of arguments case\n      var $args = [null];\n      apply(push, $args, args);\n      return new (apply(bind, Target, $args))();\n    }\n    // with altered newTarget, not support built-in constructors\n    var proto = newTarget.prototype;\n    var instance = create(isObject(proto) ? proto : ObjectPrototype);\n    var result = apply(Target, instance, args);\n    return isObject(result) ? result : instance;\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar exec = require('../internals/regexp-exec');\n\n// `RegExp.prototype.exec` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.exec\n$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {\n  exec: exec\n});\n", "var DESCRIPTORS = require('../internals/descriptors');\nvar objectDefinePropertyModule = require('../internals/object-define-property');\nvar regExpFlags = require('../internals/regexp-flags');\nvar fails = require('../internals/fails');\n\nvar RegExpPrototype = RegExp.prototype;\n\nvar FORCED = DESCRIPTORS && fails(function () {\n  // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n  return Object.getOwnPropertyDescriptor(RegExpPrototype, 'flags').get.call({ dotAll: true, sticky: true }) !== 'sy';\n});\n\n// `RegExp.prototype.flags` getter\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nif (FORCED) objectDefinePropertyModule.f(RegExpPrototype, 'flags', {\n  configurable: true,\n  get: regExpFlags\n});\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar PROPER_FUNCTION_NAME = require('../internals/function-name').PROPER;\nvar redefine = require('../internals/redefine');\nvar anObject = require('../internals/an-object');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar $toString = require('../internals/to-string');\nvar fails = require('../internals/fails');\nvar regExpFlags = require('../internals/regexp-flags');\n\nvar TO_STRING = 'toString';\nvar RegExpPrototype = RegExp.prototype;\nvar n$ToString = RegExpPrototype[TO_STRING];\nvar getFlags = uncurryThis(regExpFlags);\n\nvar NOT_GENERIC = fails(function () { return n$ToString.call({ source: 'a', flags: 'b' }) != '/a/b'; });\n// FF44- RegExp#toString has a wrong name\nvar INCORRECT_NAME = PROPER_FUNCTION_NAME && n$ToString.name != TO_STRING;\n\n// `RegExp.prototype.toString` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.tostring\nif (NOT_GENERIC || INCORRECT_NAME) {\n  redefine(RegExp.prototype, TO_STRING, function toString() {\n    var R = anObject(this);\n    var p = $toString(R.source);\n    var rf = R.flags;\n    var f = $toString(rf === undefined && isPrototypeOf(RegExpPrototype, R) && !('flags' in RegExpPrototype) ? getFlags(R) : rf);\n    return '/' + p + '/' + f;\n  }, { unsafe: true });\n}\n", "'use strict';\nvar collection = require('../internals/collection');\nvar collectionStrong = require('../internals/collection-strong');\n\n// `Set` constructor\n// https://tc39.es/ecma262/#sec-set-objects\ncollection('Set', function (init) {\n  return function Set() { return init(this, arguments.length ? arguments[0] : undefined); };\n}, collectionStrong);\n", "'use strict';\nvar $ = require('../internals/export');\nvar codeAt = require('../internals/string-multibyte').codeAt;\n\n// `String.prototype.codePointAt` method\n// https://tc39.es/ecma262/#sec-string.prototype.codepointat\n$({ target: 'String', proto: true }, {\n  codePointAt: function codePointAt(pos) {\n    return codeAt(this, pos);\n  }\n});\n", "var $ = require('../internals/export');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\n\nvar RangeError = global.RangeError;\nvar fromCharCode = String.fromCharCode;\n// eslint-disable-next-line es/no-string-fromcodepoint -- required for testing\nvar $fromCodePoint = String.fromCodePoint;\nvar join = uncurryThis([].join);\n\n// length should be 1, old FF problem\nvar INCORRECT_LENGTH = !!$fromCodePoint && $fromCodePoint.length != 1;\n\n// `String.fromCodePoint` method\n// https://tc39.es/ecma262/#sec-string.fromcodepoint\n$({ target: 'String', stat: true, forced: INCORRECT_LENGTH }, {\n  // eslint-disable-next-line no-unused-vars -- required for `.length`\n  fromCodePoint: function fromCodePoint(x) {\n    var elements = [];\n    var length = arguments.length;\n    var i = 0;\n    var code;\n    while (length > i) {\n      code = +arguments[i++];\n      if (toAbsoluteIndex(code, 0x10FFFF) !== code) throw RangeError(code + ' is not a valid code point');\n      elements[i] = code < 0x10000\n        ? fromCharCode(code)\n        : fromCharCode(((code -= 0x10000) >> 10) + 0xD800, code % 0x400 + 0xDC00);\n    } return join(elements, '');\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\n\nvar stringIndexOf = uncurryThis(''.indexOf);\n\n// `String.prototype.includes` method\n// https://tc39.es/ecma262/#sec-string.prototype.includes\n$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, {\n  includes: function includes(searchString /* , position = 0 */) {\n    return !!~stringIndexOf(\n      toString(requireObjectCoercible(this)),\n      toString(notARegExp(searchString)),\n      arguments.length > 1 ? arguments[1] : undefined\n    );\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.italics` method\n// https://tc39.es/ecma262/#sec-string.prototype.italics\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('italics') }, {\n  italics: function italics() {\n    return createHTML(this, 'i', '', '');\n  }\n});\n", "'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\nvar toString = require('../internals/to-string');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n  setInternalState(this, {\n    type: STRING_ITERATOR,\n    string: toString(iterated),\n    index: 0\n  });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n  var state = getInternalState(this);\n  var string = state.string;\n  var index = state.index;\n  var point;\n  if (index >= string.length) return { value: undefined, done: true };\n  point = charAt(string, index);\n  state.index += point.length;\n  return { value: point, done: false };\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.link` method\n// https://tc39.es/ecma262/#sec-string.prototype.link\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('link') }, {\n  link: function link(url) {\n    return createHTML(this, 'a', 'href', url);\n  }\n});\n", "'use strict';\n/* eslint-disable es/no-string-prototype-matchall -- safe */\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar anObject = require('../internals/an-object');\nvar classof = require('../internals/classof-raw');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar isRegExp = require('../internals/is-regexp');\nvar regExpFlags = require('../internals/regexp-flags');\nvar getMethod = require('../internals/get-method');\nvar redefine = require('../internals/redefine');\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar speciesConstructor = require('../internals/species-constructor');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar regExpExec = require('../internals/regexp-exec-abstract');\nvar InternalStateModule = require('../internals/internal-state');\nvar IS_PURE = require('../internals/is-pure');\n\nvar MATCH_ALL = wellKnownSymbol('matchAll');\nvar REGEXP_STRING = 'RegExp String';\nvar REGEXP_STRING_ITERATOR = REGEXP_STRING + ' Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(REGEXP_STRING_ITERATOR);\nvar RegExpPrototype = RegExp.prototype;\nvar TypeError = global.TypeError;\nvar getFlags = uncurryThis(regExpFlags);\nvar stringIndexOf = uncurryThis(''.indexOf);\nvar un$MatchAll = uncurryThis(''.matchAll);\n\nvar WORKS_WITH_NON_GLOBAL_REGEX = !!un$MatchAll && !fails(function () {\n  un$MatchAll('a', /./);\n});\n\nvar $RegExpStringIterator = createIteratorConstructor(function RegExpStringIterator(regexp, string, $global, fullUnicode) {\n  setInternalState(this, {\n    type: REGEXP_STRING_ITERATOR,\n    regexp: regexp,\n    string: string,\n    global: $global,\n    unicode: fullUnicode,\n    done: false\n  });\n}, REGEXP_STRING, function next() {\n  var state = getInternalState(this);\n  if (state.done) return { value: undefined, done: true };\n  var R = state.regexp;\n  var S = state.string;\n  var match = regExpExec(R, S);\n  if (match === null) return { value: undefined, done: state.done = true };\n  if (state.global) {\n    if (toString(match[0]) === '') R.lastIndex = advanceStringIndex(S, toLength(R.lastIndex), state.unicode);\n    return { value: match, done: false };\n  }\n  state.done = true;\n  return { value: match, done: false };\n});\n\nvar $matchAll = function (string) {\n  var R = anObject(this);\n  var S = toString(string);\n  var C, flagsValue, flags, matcher, $global, fullUnicode;\n  C = speciesConstructor(R, RegExp);\n  flagsValue = R.flags;\n  if (flagsValue === undefined && isPrototypeOf(RegExpPrototype, R) && !('flags' in RegExpPrototype)) {\n    flagsValue = getFlags(R);\n  }\n  flags = flagsValue === undefined ? '' : toString(flagsValue);\n  matcher = new C(C === RegExp ? R.source : R, flags);\n  $global = !!~stringIndexOf(flags, 'g');\n  fullUnicode = !!~stringIndexOf(flags, 'u');\n  matcher.lastIndex = toLength(R.lastIndex);\n  return new $RegExpStringIterator(matcher, S, $global, fullUnicode);\n};\n\n// `String.prototype.matchAll` method\n// https://tc39.es/ecma262/#sec-string.prototype.matchall\n$({ target: 'String', proto: true, forced: WORKS_WITH_NON_GLOBAL_REGEX }, {\n  matchAll: function matchAll(regexp) {\n    var O = requireObjectCoercible(this);\n    var flags, S, matcher, rx;\n    if (regexp != null) {\n      if (isRegExp(regexp)) {\n        flags = toString(requireObjectCoercible('flags' in RegExpPrototype\n          ? regexp.flags\n          : getFlags(regexp)\n        ));\n        if (!~stringIndexOf(flags, 'g')) throw TypeError('`.matchAll` does not allow non-global regexes');\n      }\n      if (WORKS_WITH_NON_GLOBAL_REGEX) return un$MatchAll(O, regexp);\n      matcher = getMethod(regexp, MATCH_ALL);\n      if (matcher === undefined && IS_PURE && classof(regexp) == 'RegExp') matcher = $matchAll;\n      if (matcher) return call(matcher, regexp, O);\n    } else if (WORKS_WITH_NON_GLOBAL_REGEX) return un$MatchAll(O, regexp);\n    S = toString(O);\n    rx = new RegExp(regexp, 'g');\n    return IS_PURE ? call($matchAll, rx, S) : rx[MATCH_ALL](S);\n  }\n});\n\nIS_PURE || MATCH_ALL in RegExpPrototype || redefine(RegExpPrototype, MATCH_ALL, $matchAll);\n", "'use strict';\nvar call = require('../internals/function-call');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar getMethod = require('../internals/get-method');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@match logic\nfixRegExpWellKnownSymbolLogic('match', function (MATCH, nativeMatch, maybeCallNative) {\n  return [\n    // `String.prototype.match` method\n    // https://tc39.es/ecma262/#sec-string.prototype.match\n    function match(regexp) {\n      var O = requireObjectCoercible(this);\n      var matcher = regexp == undefined ? undefined : getMethod(regexp, MATCH);\n      return matcher ? call(matcher, regexp, O) : new RegExp(regexp)[MATCH](toString(O));\n    },\n    // `RegExp.prototype[@@match]` method\n    // https://tc39.es/ecma262/#sec-regexp.prototype-@@match\n    function (string) {\n      var rx = anObject(this);\n      var S = toString(string);\n      var res = maybeCallNative(nativeMatch, rx, S);\n\n      if (res.done) return res.value;\n\n      if (!rx.global) return regExpExec(rx, S);\n\n      var fullUnicode = rx.unicode;\n      rx.lastIndex = 0;\n      var A = [];\n      var n = 0;\n      var result;\n      while ((result = regExpExec(rx, S)) !== null) {\n        var matchStr = toString(result[0]);\n        A[n] = matchStr;\n        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n        n++;\n      }\n      return n === 0 ? null : A;\n    }\n  ];\n});\n", "var $ = require('../internals/export');\nvar repeat = require('../internals/string-repeat');\n\n// `String.prototype.repeat` method\n// https://tc39.es/ecma262/#sec-string.prototype.repeat\n$({ target: 'String', proto: true }, {\n  repeat: repeat\n});\n", "'use strict';\nvar apply = require('../internals/function-apply');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar fails = require('../internals/fails');\nvar anObject = require('../internals/an-object');\nvar isCallable = require('../internals/is-callable');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar getMethod = require('../internals/get-method');\nvar getSubstitution = require('../internals/get-substitution');\nvar regExpExec = require('../internals/regexp-exec-abstract');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar REPLACE = wellKnownSymbol('replace');\nvar max = Math.max;\nvar min = Math.min;\nvar concat = uncurryThis([].concat);\nvar push = uncurryThis([].push);\nvar stringIndexOf = uncurryThis(''.indexOf);\nvar stringSlice = uncurryThis(''.slice);\n\nvar maybeToString = function (it) {\n  return it === undefined ? it : String(it);\n};\n\n// IE <= 11 replaces $0 with the whole match, as if it was $&\n// https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0\nvar REPLACE_KEEPS_$0 = (function () {\n  // eslint-disable-next-line regexp/prefer-escape-replacement-dollar-char -- required for testing\n  return 'a'.replace(/./, '$0') === '$0';\n})();\n\n// Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string\nvar REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () {\n  if (/./[REPLACE]) {\n    return /./[REPLACE]('a', '$0') === '';\n  }\n  return false;\n})();\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n  var re = /./;\n  re.exec = function () {\n    var result = [];\n    result.groups = { a: '7' };\n    return result;\n  };\n  // eslint-disable-next-line regexp/no-useless-dollar-replacements -- false positive\n  return ''.replace(re, '$<a>') !== '7';\n});\n\n// @@replace logic\nfixRegExpWellKnownSymbolLogic('replace', function (_, nativeReplace, maybeCallNative) {\n  var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0';\n\n  return [\n    // `String.prototype.replace` method\n    // https://tc39.es/ecma262/#sec-string.prototype.replace\n    function replace(searchValue, replaceValue) {\n      var O = requireObjectCoercible(this);\n      var replacer = searchValue == undefined ? undefined : getMethod(searchValue, REPLACE);\n      return replacer\n        ? call(replacer, searchValue, O, replaceValue)\n        : call(nativeReplace, toString(O), searchValue, replaceValue);\n    },\n    // `RegExp.prototype[@@replace]` method\n    // https://tc39.es/ecma262/#sec-regexp.prototype-@@replace\n    function (string, replaceValue) {\n      var rx = anObject(this);\n      var S = toString(string);\n\n      if (\n        typeof replaceValue == 'string' &&\n        stringIndexOf(replaceValue, UNSAFE_SUBSTITUTE) === -1 &&\n        stringIndexOf(replaceValue, '$<') === -1\n      ) {\n        var res = maybeCallNative(nativeReplace, rx, S, replaceValue);\n        if (res.done) return res.value;\n      }\n\n      var functionalReplace = isCallable(replaceValue);\n      if (!functionalReplace) replaceValue = toString(replaceValue);\n\n      var global = rx.global;\n      if (global) {\n        var fullUnicode = rx.unicode;\n        rx.lastIndex = 0;\n      }\n      var results = [];\n      while (true) {\n        var result = regExpExec(rx, S);\n        if (result === null) break;\n\n        push(results, result);\n        if (!global) break;\n\n        var matchStr = toString(result[0]);\n        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n      }\n\n      var accumulatedResult = '';\n      var nextSourcePosition = 0;\n      for (var i = 0; i < results.length; i++) {\n        result = results[i];\n\n        var matched = toString(result[0]);\n        var position = max(min(toIntegerOrInfinity(result.index), S.length), 0);\n        var captures = [];\n        // NOTE: This is equivalent to\n        //   captures = result.slice(1).map(maybeToString)\n        // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n        // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n        // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n        for (var j = 1; j < result.length; j++) push(captures, maybeToString(result[j]));\n        var namedCaptures = result.groups;\n        if (functionalReplace) {\n          var replacerArgs = concat([matched], captures, position, S);\n          if (namedCaptures !== undefined) push(replacerArgs, namedCaptures);\n          var replacement = toString(apply(replaceValue, undefined, replacerArgs));\n        } else {\n          replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n        }\n        if (position >= nextSourcePosition) {\n          accumulatedResult += stringSlice(S, nextSourcePosition, position) + replacement;\n          nextSourcePosition = position + matched.length;\n        }\n      }\n      return accumulatedResult + stringSlice(S, nextSourcePosition);\n    }\n  ];\n}, !REPLACE_SUPPORTS_NAMED_GROUPS || !REPLACE_KEEPS_$0 || REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE);\n", "'use strict';\nvar apply = require('../internals/function-apply');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar isRegExp = require('../internals/is-regexp');\nvar anObject = require('../internals/an-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar speciesConstructor = require('../internals/species-constructor');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar getMethod = require('../internals/get-method');\nvar arraySlice = require('../internals/array-slice');\nvar callRegExpExec = require('../internals/regexp-exec-abstract');\nvar regexpExec = require('../internals/regexp-exec');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar fails = require('../internals/fails');\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;\nvar MAX_UINT32 = 0xFFFFFFFF;\nvar min = Math.min;\nvar $push = [].push;\nvar exec = uncurryThis(/./.exec);\nvar push = uncurryThis($push);\nvar stringSlice = uncurryThis(''.slice);\n\n// Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n// Weex JS has frozen built-in prototypes, so use try / catch wrapper\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {\n  // eslint-disable-next-line regexp/no-empty-group -- required for testing\n  var re = /(?:)/;\n  var originalExec = re.exec;\n  re.exec = function () { return originalExec.apply(this, arguments); };\n  var result = 'ab'.split(re);\n  return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';\n});\n\n// @@split logic\nfixRegExpWellKnownSymbolLogic('split', function (SPLIT, nativeSplit, maybeCallNative) {\n  var internalSplit;\n  if (\n    'abbc'.split(/(b)*/)[1] == 'c' ||\n    // eslint-disable-next-line regexp/no-empty-group -- required for testing\n    'test'.split(/(?:)/, -1).length != 4 ||\n    'ab'.split(/(?:ab)*/).length != 2 ||\n    '.'.split(/(.?)(.?)/).length != 4 ||\n    // eslint-disable-next-line regexp/no-empty-capturing-group, regexp/no-empty-group -- required for testing\n    '.'.split(/()()/).length > 1 ||\n    ''.split(/.?/).length\n  ) {\n    // based on es5-shim implementation, need to rework it\n    internalSplit = function (separator, limit) {\n      var string = toString(requireObjectCoercible(this));\n      var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n      if (lim === 0) return [];\n      if (separator === undefined) return [string];\n      // If `separator` is not a regex, use native split\n      if (!isRegExp(separator)) {\n        return call(nativeSplit, string, separator, lim);\n      }\n      var output = [];\n      var flags = (separator.ignoreCase ? 'i' : '') +\n                  (separator.multiline ? 'm' : '') +\n                  (separator.unicode ? 'u' : '') +\n                  (separator.sticky ? 'y' : '');\n      var lastLastIndex = 0;\n      // Make `global` and avoid `lastIndex` issues by working with a copy\n      var separatorCopy = new RegExp(separator.source, flags + 'g');\n      var match, lastIndex, lastLength;\n      while (match = call(regexpExec, separatorCopy, string)) {\n        lastIndex = separatorCopy.lastIndex;\n        if (lastIndex > lastLastIndex) {\n          push(output, stringSlice(string, lastLastIndex, match.index));\n          if (match.length > 1 && match.index < string.length) apply($push, output, arraySlice(match, 1));\n          lastLength = match[0].length;\n          lastLastIndex = lastIndex;\n          if (output.length >= lim) break;\n        }\n        if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop\n      }\n      if (lastLastIndex === string.length) {\n        if (lastLength || !exec(separatorCopy, '')) push(output, '');\n      } else push(output, stringSlice(string, lastLastIndex));\n      return output.length > lim ? arraySlice(output, 0, lim) : output;\n    };\n  // Chakra, V8\n  } else if ('0'.split(undefined, 0).length) {\n    internalSplit = function (separator, limit) {\n      return separator === undefined && limit === 0 ? [] : call(nativeSplit, this, separator, limit);\n    };\n  } else internalSplit = nativeSplit;\n\n  return [\n    // `String.prototype.split` method\n    // https://tc39.es/ecma262/#sec-string.prototype.split\n    function split(separator, limit) {\n      var O = requireObjectCoercible(this);\n      var splitter = separator == undefined ? undefined : getMethod(separator, SPLIT);\n      return splitter\n        ? call(splitter, separator, O, limit)\n        : call(internalSplit, toString(O), separator, limit);\n    },\n    // `RegExp.prototype[@@split]` method\n    // https://tc39.es/ecma262/#sec-regexp.prototype-@@split\n    //\n    // NOTE: This cannot be properly polyfilled in engines that don't support\n    // the 'y' flag.\n    function (string, limit) {\n      var rx = anObject(this);\n      var S = toString(string);\n      var res = maybeCallNative(internalSplit, rx, S, limit, internalSplit !== nativeSplit);\n\n      if (res.done) return res.value;\n\n      var C = speciesConstructor(rx, RegExp);\n\n      var unicodeMatching = rx.unicode;\n      var flags = (rx.ignoreCase ? 'i' : '') +\n                  (rx.multiline ? 'm' : '') +\n                  (rx.unicode ? 'u' : '') +\n                  (UNSUPPORTED_Y ? 'g' : 'y');\n\n      // ^(? + rx + ) is needed, in combination with some S slicing, to\n      // simulate the 'y' flag.\n      var splitter = new C(UNSUPPORTED_Y ? '^(?:' + rx.source + ')' : rx, flags);\n      var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n      if (lim === 0) return [];\n      if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\n      var p = 0;\n      var q = 0;\n      var A = [];\n      while (q < S.length) {\n        splitter.lastIndex = UNSUPPORTED_Y ? 0 : q;\n        var z = callRegExpExec(splitter, UNSUPPORTED_Y ? stringSlice(S, q) : S);\n        var e;\n        if (\n          z === null ||\n          (e = min(toLength(splitter.lastIndex + (UNSUPPORTED_Y ? q : 0)), S.length)) === p\n        ) {\n          q = advanceStringIndex(S, q, unicodeMatching);\n        } else {\n          push(A, stringSlice(S, p, q));\n          if (A.length === lim) return A;\n          for (var i = 1; i <= z.length - 1; i++) {\n            push(A, z[i]);\n            if (A.length === lim) return A;\n          }\n          q = p = e;\n        }\n      }\n      push(A, stringSlice(S, p));\n      return A;\n    }\n  ];\n}, !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC, UNSUPPORTED_Y);\n", "'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.strike` method\n// https://tc39.es/ecma262/#sec-string.prototype.strike\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('strike') }, {\n  strike: function strike() {\n    return createHTML(this, 'strike', '', '');\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar $trim = require('../internals/string-trim').trim;\nvar forcedStringTrimMethod = require('../internals/string-trim-forced');\n\n// `String.prototype.trim` method\n// https://tc39.es/ecma262/#sec-string.prototype.trim\n$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {\n  trim: function trim() {\n    return $trim(this);\n  }\n});\n", "var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.asyncIterator` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.asynciterator\ndefineWellKnownSymbol('asyncIterator');\n", "// `Symbol.prototype.description` getter\n// https://tc39.es/ecma262/#sec-symbol.prototype.description\n'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar toString = require('../internals/to-string');\nvar defineProperty = require('../internals/object-define-property').f;\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\n\nvar NativeSymbol = global.Symbol;\nvar SymbolPrototype = NativeSymbol && NativeSymbol.prototype;\n\nif (DESCRIPTORS && isCallable(NativeSymbol) && (!('description' in SymbolPrototype) ||\n  // Safari 12 bug\n  NativeSymbol().description !== undefined\n)) {\n  var EmptyStringDescriptionStore = {};\n  // wrap Symbol constructor for correct work with undefined description\n  var SymbolWrapper = function Symbol() {\n    var description = arguments.length < 1 || arguments[0] === undefined ? undefined : toString(arguments[0]);\n    var result = isPrototypeOf(SymbolPrototype, this)\n      ? new NativeSymbol(description)\n      // in Edge 13, String(Symbol(undefined)) === 'Symbol(undefined)'\n      : description === undefined ? NativeSymbol() : NativeSymbol(description);\n    if (description === '') EmptyStringDescriptionStore[result] = true;\n    return result;\n  };\n\n  copyConstructorProperties(SymbolWrapper, NativeSymbol);\n  SymbolWrapper.prototype = SymbolPrototype;\n  SymbolPrototype.constructor = SymbolWrapper;\n\n  var NATIVE_SYMBOL = String(NativeSymbol('test')) == 'Symbol(test)';\n  var symbolToString = uncurryThis(SymbolPrototype.toString);\n  var symbolValueOf = uncurryThis(SymbolPrototype.valueOf);\n  var regexp = /^Symbol\\((.*)\\)[^)]+$/;\n  var replace = uncurryThis(''.replace);\n  var stringSlice = uncurryThis(''.slice);\n\n  defineProperty(SymbolPrototype, 'description', {\n    configurable: true,\n    get: function description() {\n      var symbol = symbolValueOf(this);\n      var string = symbolToString(symbol);\n      if (hasOwn(EmptyStringDescriptionStore, symbol)) return '';\n      var desc = NATIVE_SYMBOL ? stringSlice(string, 7, -1) : replace(string, regexp, '$1');\n      return desc === '' ? undefined : desc;\n    }\n  });\n\n  $({ global: true, forced: true }, {\n    Symbol: SymbolWrapper\n  });\n}\n", "var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.iterator` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.iterator\ndefineWellKnownSymbol('iterator');\n", "'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar apply = require('../internals/function-apply');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar fails = require('../internals/fails');\nvar hasOwn = require('../internals/has-own-property');\nvar isArray = require('../internals/is-array');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar isSymbol = require('../internals/is-symbol');\nvar anObject = require('../internals/an-object');\nvar toObject = require('../internals/to-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar $toString = require('../internals/to-string');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar nativeObjectCreate = require('../internals/object-create');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertyNamesExternal = require('../internals/object-get-own-property-names-external');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar arraySlice = require('../internals/array-slice');\nvar redefine = require('../internals/redefine');\nvar shared = require('../internals/shared');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar uid = require('../internals/uid');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\nvar $forEach = require('../internals/array-iteration').forEach;\n\nvar HIDDEN = sharedKey('hidden');\nvar SYMBOL = 'Symbol';\nvar PROTOTYPE = 'prototype';\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(SYMBOL);\n\nvar ObjectPrototype = Object[PROTOTYPE];\nvar $Symbol = global.Symbol;\nvar SymbolPrototype = $Symbol && $Symbol[PROTOTYPE];\nvar TypeError = global.TypeError;\nvar QObject = global.QObject;\nvar $stringify = getBuiltIn('JSON', 'stringify');\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f;\nvar nativePropertyIsEnumerable = propertyIsEnumerableModule.f;\nvar push = uncurryThis([].push);\n\nvar AllSymbols = shared('symbols');\nvar ObjectPrototypeSymbols = shared('op-symbols');\nvar StringToSymbolRegistry = shared('string-to-symbol-registry');\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\nvar WellKnownSymbolsStore = shared('wks');\n\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDescriptor = DESCRIPTORS && fails(function () {\n  return nativeObjectCreate(nativeDefineProperty({}, 'a', {\n    get: function () { return nativeDefineProperty(this, 'a', { value: 7 }).a; }\n  })).a != 7;\n}) ? function (O, P, Attributes) {\n  var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, P);\n  if (ObjectPrototypeDescriptor) delete ObjectPrototype[P];\n  nativeDefineProperty(O, P, Attributes);\n  if (ObjectPrototypeDescriptor && O !== ObjectPrototype) {\n    nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor);\n  }\n} : nativeDefineProperty;\n\nvar wrap = function (tag, description) {\n  var symbol = AllSymbols[tag] = nativeObjectCreate(SymbolPrototype);\n  setInternalState(symbol, {\n    type: SYMBOL,\n    tag: tag,\n    description: description\n  });\n  if (!DESCRIPTORS) symbol.description = description;\n  return symbol;\n};\n\nvar $defineProperty = function defineProperty(O, P, Attributes) {\n  if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes);\n  anObject(O);\n  var key = toPropertyKey(P);\n  anObject(Attributes);\n  if (hasOwn(AllSymbols, key)) {\n    if (!Attributes.enumerable) {\n      if (!hasOwn(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, {}));\n      O[HIDDEN][key] = true;\n    } else {\n      if (hasOwn(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false;\n      Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) });\n    } return setSymbolDescriptor(O, key, Attributes);\n  } return nativeDefineProperty(O, key, Attributes);\n};\n\nvar $defineProperties = function defineProperties(O, Properties) {\n  anObject(O);\n  var properties = toIndexedObject(Properties);\n  var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties));\n  $forEach(keys, function (key) {\n    if (!DESCRIPTORS || call($propertyIsEnumerable, properties, key)) $defineProperty(O, key, properties[key]);\n  });\n  return O;\n};\n\nvar $create = function create(O, Properties) {\n  return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties);\n};\n\nvar $propertyIsEnumerable = function propertyIsEnumerable(V) {\n  var P = toPropertyKey(V);\n  var enumerable = call(nativePropertyIsEnumerable, this, P);\n  if (this === ObjectPrototype && hasOwn(AllSymbols, P) && !hasOwn(ObjectPrototypeSymbols, P)) return false;\n  return enumerable || !hasOwn(this, P) || !hasOwn(AllSymbols, P) || hasOwn(this, HIDDEN) && this[HIDDEN][P]\n    ? enumerable : true;\n};\n\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) {\n  var it = toIndexedObject(O);\n  var key = toPropertyKey(P);\n  if (it === ObjectPrototype && hasOwn(AllSymbols, key) && !hasOwn(ObjectPrototypeSymbols, key)) return;\n  var descriptor = nativeGetOwnPropertyDescriptor(it, key);\n  if (descriptor && hasOwn(AllSymbols, key) && !(hasOwn(it, HIDDEN) && it[HIDDEN][key])) {\n    descriptor.enumerable = true;\n  }\n  return descriptor;\n};\n\nvar $getOwnPropertyNames = function getOwnPropertyNames(O) {\n  var names = nativeGetOwnPropertyNames(toIndexedObject(O));\n  var result = [];\n  $forEach(names, function (key) {\n    if (!hasOwn(AllSymbols, key) && !hasOwn(hiddenKeys, key)) push(result, key);\n  });\n  return result;\n};\n\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(O) {\n  var IS_OBJECT_PROTOTYPE = O === ObjectPrototype;\n  var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O));\n  var result = [];\n  $forEach(names, function (key) {\n    if (hasOwn(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || hasOwn(ObjectPrototype, key))) {\n      push(result, AllSymbols[key]);\n    }\n  });\n  return result;\n};\n\n// `Symbol` constructor\n// https://tc39.es/ecma262/#sec-symbol-constructor\nif (!NATIVE_SYMBOL) {\n  $Symbol = function Symbol() {\n    if (isPrototypeOf(SymbolPrototype, this)) throw TypeError('Symbol is not a constructor');\n    var description = !arguments.length || arguments[0] === undefined ? undefined : $toString(arguments[0]);\n    var tag = uid(description);\n    var setter = function (value) {\n      if (this === ObjectPrototype) call(setter, ObjectPrototypeSymbols, value);\n      if (hasOwn(this, HIDDEN) && hasOwn(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n      setSymbolDescriptor(this, tag, createPropertyDescriptor(1, value));\n    };\n    if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter });\n    return wrap(tag, description);\n  };\n\n  SymbolPrototype = $Symbol[PROTOTYPE];\n\n  redefine(SymbolPrototype, 'toString', function toString() {\n    return getInternalState(this).tag;\n  });\n\n  redefine($Symbol, 'withoutSetter', function (description) {\n    return wrap(uid(description), description);\n  });\n\n  propertyIsEnumerableModule.f = $propertyIsEnumerable;\n  definePropertyModule.f = $defineProperty;\n  getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor;\n  getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames;\n  getOwnPropertySymbolsModule.f = $getOwnPropertySymbols;\n\n  wrappedWellKnownSymbolModule.f = function (name) {\n    return wrap(wellKnownSymbol(name), name);\n  };\n\n  if (DESCRIPTORS) {\n    // https://github.com/tc39/proposal-Symbol-description\n    nativeDefineProperty(SymbolPrototype, 'description', {\n      configurable: true,\n      get: function description() {\n        return getInternalState(this).description;\n      }\n    });\n    if (!IS_PURE) {\n      redefine(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });\n    }\n  }\n}\n\n$({ global: true, wrap: true, forced: !NATIVE_SYMBOL, sham: !NATIVE_SYMBOL }, {\n  Symbol: $Symbol\n});\n\n$forEach(objectKeys(WellKnownSymbolsStore), function (name) {\n  defineWellKnownSymbol(name);\n});\n\n$({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, {\n  // `Symbol.for` method\n  // https://tc39.es/ecma262/#sec-symbol.for\n  'for': function (key) {\n    var string = $toString(key);\n    if (hasOwn(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string];\n    var symbol = $Symbol(string);\n    StringToSymbolRegistry[string] = symbol;\n    SymbolToStringRegistry[symbol] = string;\n    return symbol;\n  },\n  // `Symbol.keyFor` method\n  // https://tc39.es/ecma262/#sec-symbol.keyfor\n  keyFor: function keyFor(sym) {\n    if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol');\n    if (hasOwn(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym];\n  },\n  useSetter: function () { USE_SETTER = true; },\n  useSimple: function () { USE_SETTER = false; }\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL, sham: !DESCRIPTORS }, {\n  // `Object.create` method\n  // https://tc39.es/ecma262/#sec-object.create\n  create: $create,\n  // `Object.defineProperty` method\n  // https://tc39.es/ecma262/#sec-object.defineproperty\n  defineProperty: $defineProperty,\n  // `Object.defineProperties` method\n  // https://tc39.es/ecma262/#sec-object.defineproperties\n  defineProperties: $defineProperties,\n  // `Object.getOwnPropertyDescriptor` method\n  // https://tc39.es/ecma262/#sec-object.getownpropertydescriptors\n  getOwnPropertyDescriptor: $getOwnPropertyDescriptor\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL }, {\n  // `Object.getOwnPropertyNames` method\n  // https://tc39.es/ecma262/#sec-object.getownpropertynames\n  getOwnPropertyNames: $getOwnPropertyNames,\n  // `Object.getOwnPropertySymbols` method\n  // https://tc39.es/ecma262/#sec-object.getownpropertysymbols\n  getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\n$({ target: 'Object', stat: true, forced: fails(function () { getOwnPropertySymbolsModule.f(1); }) }, {\n  getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n    return getOwnPropertySymbolsModule.f(toObject(it));\n  }\n});\n\n// `JSON.stringify` method behavior with symbols\n// https://tc39.es/ecma262/#sec-json.stringify\nif ($stringify) {\n  var FORCED_JSON_STRINGIFY = !NATIVE_SYMBOL || fails(function () {\n    var symbol = $Symbol();\n    // MS Edge converts symbol values to JSON as {}\n    return $stringify([symbol]) != '[null]'\n      // WebKit converts symbol values to JSON as null\n      || $stringify({ a: symbol }) != '{}'\n      // V8 throws on boxed symbols\n      || $stringify(Object(symbol)) != '{}';\n  });\n\n  $({ target: 'JSON', stat: true, forced: FORCED_JSON_STRINGIFY }, {\n    // eslint-disable-next-line no-unused-vars -- required for `.length`\n    stringify: function stringify(it, replacer, space) {\n      var args = arraySlice(arguments);\n      var $replacer = replacer;\n      if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n      if (!isArray(replacer)) replacer = function (key, value) {\n        if (isCallable($replacer)) value = call($replacer, this, key, value);\n        if (!isSymbol(value)) return value;\n      };\n      args[1] = replacer;\n      return apply($stringify, null, args);\n    }\n  });\n}\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\nif (!SymbolPrototype[TO_PRIMITIVE]) {\n  var valueOf = SymbolPrototype.valueOf;\n  // eslint-disable-next-line no-unused-vars -- required for .length\n  redefine(SymbolPrototype, TO_PRIMITIVE, function (hint) {\n    // TODO: improve hint logic\n    return call(valueOf, this);\n  });\n}\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag($Symbol, SYMBOL);\n\nhiddenKeys[HIDDEN] = true;\n", "var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.toPrimitive` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.toprimitive\ndefineWellKnownSymbol('toPrimitive');\n", "var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.toStringTag` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.tostringtag\ndefineWellKnownSymbol('toStringTag');\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $ArrayCopyWithin = require('../internals/array-copy-within');\n\nvar u$ArrayCopyWithin = uncurryThis($ArrayCopyWithin);\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.copyWithin` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.copywithin\nexportTypedArrayMethod('copyWithin', function copyWithin(target, start /* , end */) {\n  return u$ArrayCopyWithin(aTypedArray(this), target, start, arguments.length > 2 ? arguments[2] : undefined);\n});\n", "'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $every = require('../internals/array-iteration').every;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.every` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.every\nexportTypedArrayMethod('every', function every(callbackfn /* , thisArg */) {\n  return $every(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n", "'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar call = require('../internals/function-call');\nvar $fill = require('../internals/array-fill');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.fill` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.fill\nexportTypedArrayMethod('fill', function fill(value /* , start, end */) {\n  var length = arguments.length;\n  return call(\n    $fill,\n    aTypedArray(this),\n    value,\n    length > 1 ? arguments[1] : undefined,\n    length > 2 ? arguments[2] : undefined\n  );\n});\n", "'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $filter = require('../internals/array-iteration').filter;\nvar fromSpeciesAndList = require('../internals/typed-array-from-species-and-list');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.filter` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.filter\nexportTypedArrayMethod('filter', function filter(callbackfn /* , thisArg */) {\n  var list = $filter(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  return fromSpeciesAndList(this, list);\n});\n", "'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $findIndex = require('../internals/array-iteration').findIndex;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.findIndex` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.findindex\nexportTypedArrayMethod('findIndex', function findIndex(predicate /* , thisArg */) {\n  return $findIndex(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n", "'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $find = require('../internals/array-iteration').find;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.find` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.find\nexportTypedArrayMethod('find', function find(predicate /* , thisArg */) {\n  return $find(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n", "var createTypedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Float32Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Float32', function (init) {\n  return function Float32Array(data, byteOffset, length) {\n    return init(this, data, byteOffset, length);\n  };\n});\n", "var createTypedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Float64Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Float64', function (init) {\n  return function Float64Array(data, byteOffset, length) {\n    return init(this, data, byteOffset, length);\n  };\n});\n", "'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $forEach = require('../internals/array-iteration').forEach;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.forEach` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.foreach\nexportTypedArrayMethod('forEach', function forEach(callbackfn /* , thisArg */) {\n  $forEach(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n", "'use strict';\nvar TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = require('../internals/typed-array-constructors-require-wrappers');\nvar exportTypedArrayStaticMethod = require('../internals/array-buffer-view-core').exportTypedArrayStaticMethod;\nvar typedArrayFrom = require('../internals/typed-array-from');\n\n// `%TypedArray%.from` method\n// https://tc39.es/ecma262/#sec-%typedarray%.from\nexportTypedArrayStaticMethod('from', typedArrayFrom, TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS);\n", "'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $includes = require('../internals/array-includes').includes;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.includes` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.includes\nexportTypedArrayMethod('includes', function includes(searchElement /* , fromIndex */) {\n  return $includes(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n});\n", "'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $indexOf = require('../internals/array-includes').indexOf;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.indexOf` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.indexof\nexportTypedArrayMethod('indexOf', function indexOf(searchElement /* , fromIndex */) {\n  return $indexOf(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n});\n", "var createTypedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Int16Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Int16', function (init) {\n  return function Int16Array(data, byteOffset, length) {\n    return init(this, data, byteOffset, length);\n  };\n});\n", "var createTypedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Int32Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Int32', function (init) {\n  return function Int32Array(data, byteOffset, length) {\n    return init(this, data, byteOffset, length);\n  };\n});\n", "var createTypedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Int8Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Int8', function (init) {\n  return function Int8Array(data, byteOffset, length) {\n    return init(this, data, byteOffset, length);\n  };\n});\n", "'use strict';\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar PROPER_FUNCTION_NAME = require('../internals/function-name').PROPER;\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar ArrayIterators = require('../modules/es.array.iterator');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar Uint8Array = global.Uint8Array;\nvar arrayValues = uncurryThis(ArrayIterators.values);\nvar arrayKeys = uncurryThis(ArrayIterators.keys);\nvar arrayEntries = uncurryThis(ArrayIterators.entries);\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar nativeTypedArrayIterator = Uint8Array && Uint8Array.prototype[ITERATOR];\n\nvar PROPER_ARRAY_VALUES_NAME = !!nativeTypedArrayIterator && nativeTypedArrayIterator.name === 'values';\n\nvar typedArrayValues = function values() {\n  return arrayValues(aTypedArray(this));\n};\n\n// `%TypedArray%.prototype.entries` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.entries\nexportTypedArrayMethod('entries', function entries() {\n  return arrayEntries(aTypedArray(this));\n});\n// `%TypedArray%.prototype.keys` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.keys\nexportTypedArrayMethod('keys', function keys() {\n  return arrayKeys(aTypedArray(this));\n});\n// `%TypedArray%.prototype.values` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.values\nexportTypedArrayMethod('values', typedArrayValues, PROPER_FUNCTION_NAME && !PROPER_ARRAY_VALUES_NAME);\n// `%TypedArray%.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype-@@iterator\nexportTypedArrayMethod(ITERATOR, typedArrayValues, PROPER_FUNCTION_NAME && !PROPER_ARRAY_VALUES_NAME);\n", "'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar $join = uncurryThis([].join);\n\n// `%TypedArray%.prototype.join` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.join\nexportTypedArrayMethod('join', function join(separator) {\n  return $join(aTypedArray(this), separator);\n});\n", "'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar apply = require('../internals/function-apply');\nvar $lastIndexOf = require('../internals/array-last-index-of');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.lastIndexOf` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.lastindexof\nexportTypedArrayMethod('lastIndexOf', function lastIndexOf(searchElement /* , fromIndex */) {\n  var length = arguments.length;\n  return apply($lastIndexOf, aTypedArray(this), length > 1 ? [searchElement, arguments[1]] : [searchElement]);\n});\n", "'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $map = require('../internals/array-iteration').map;\nvar typedArraySpeciesConstructor = require('../internals/typed-array-species-constructor');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.map` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.map\nexportTypedArrayMethod('map', function map(mapfn /* , thisArg */) {\n  return $map(aTypedArray(this), mapfn, arguments.length > 1 ? arguments[1] : undefined, function (O, length) {\n    return new (typedArraySpeciesConstructor(O))(length);\n  });\n});\n", "'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $reduceRight = require('../internals/array-reduce').right;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.reduceRicht` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reduceright\nexportTypedArrayMethod('reduceRight', function reduceRight(callbackfn /* , initialValue */) {\n  var length = arguments.length;\n  return $reduceRight(aTypedArray(this), callbackfn, length, length > 1 ? arguments[1] : undefined);\n});\n", "'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $reduce = require('../internals/array-reduce').left;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.reduce` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reduce\nexportTypedArrayMethod('reduce', function reduce(callbackfn /* , initialValue */) {\n  var length = arguments.length;\n  return $reduce(aTypedArray(this), callbackfn, length, length > 1 ? arguments[1] : undefined);\n});\n", "'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar floor = Math.floor;\n\n// `%TypedArray%.prototype.reverse` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reverse\nexportTypedArrayMethod('reverse', function reverse() {\n  var that = this;\n  var length = aTypedArray(that).length;\n  var middle = floor(length / 2);\n  var index = 0;\n  var value;\n  while (index < middle) {\n    value = that[index];\n    that[index++] = that[--length];\n    that[length] = value;\n  } return that;\n});\n", "'use strict';\nvar global = require('../internals/global');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toOffset = require('../internals/to-offset');\nvar toObject = require('../internals/to-object');\nvar fails = require('../internals/fails');\n\nvar RangeError = global.RangeError;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\nvar FORCED = fails(function () {\n  // eslint-disable-next-line es/no-typed-arrays -- required for testing\n  new Int8Array(1).set({});\n});\n\n// `%TypedArray%.prototype.set` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.set\nexportTypedArrayMethod('set', function set(arrayLike /* , offset */) {\n  aTypedArray(this);\n  var offset = toOffset(arguments.length > 1 ? arguments[1] : undefined, 1);\n  var length = this.length;\n  var src = toObject(arrayLike);\n  var len = lengthOfArrayLike(src);\n  var index = 0;\n  if (len + offset > length) throw RangeError('Wrong length');\n  while (index < len) this[offset + index] = src[index++];\n}, FORCED);\n", "'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar typedArraySpeciesConstructor = require('../internals/typed-array-species-constructor');\nvar fails = require('../internals/fails');\nvar arraySlice = require('../internals/array-slice');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\nvar FORCED = fails(function () {\n  // eslint-disable-next-line es/no-typed-arrays -- required for testing\n  new Int8Array(1).slice();\n});\n\n// `%TypedArray%.prototype.slice` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.slice\nexportTypedArrayMethod('slice', function slice(start, end) {\n  var list = arraySlice(aTypedArray(this), start, end);\n  var C = typedArraySpeciesConstructor(this);\n  var index = 0;\n  var length = list.length;\n  var result = new C(length);\n  while (length > index) result[index] = list[index++];\n  return result;\n}, FORCED);\n", "'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $some = require('../internals/array-iteration').some;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.some` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.some\nexportTypedArrayMethod('some', function some(callbackfn /* , thisArg */) {\n  return $some(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n", "'use strict';\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar aCallable = require('../internals/a-callable');\nvar internalSort = require('../internals/array-sort');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar FF = require('../internals/engine-ff-version');\nvar IE_OR_EDGE = require('../internals/engine-is-ie-or-edge');\nvar V8 = require('../internals/engine-v8-version');\nvar WEBKIT = require('../internals/engine-webkit-version');\n\nvar Array = global.Array;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar Uint16Array = global.Uint16Array;\nvar un$Sort = Uint16Array && uncurryThis(Uint16Array.prototype.sort);\n\n// WebKit\nvar ACCEPT_INCORRECT_ARGUMENTS = !!un$Sort && !(fails(function () {\n  un$Sort(new Uint16Array(2), null);\n}) && fails(function () {\n  un$Sort(new Uint16Array(2), {});\n}));\n\nvar STABLE_SORT = !!un$Sort && !fails(function () {\n  // feature detection can be too slow, so check engines versions\n  if (V8) return V8 < 74;\n  if (FF) return FF < 67;\n  if (IE_OR_EDGE) return true;\n  if (WEBKIT) return WEBKIT < 602;\n\n  var array = new Uint16Array(516);\n  var expected = Array(516);\n  var index, mod;\n\n  for (index = 0; index < 516; index++) {\n    mod = index % 4;\n    array[index] = 515 - index;\n    expected[index] = index - 2 * mod + 3;\n  }\n\n  un$Sort(array, function (a, b) {\n    return (a / 4 | 0) - (b / 4 | 0);\n  });\n\n  for (index = 0; index < 516; index++) {\n    if (array[index] !== expected[index]) return true;\n  }\n});\n\nvar getSortCompare = function (comparefn) {\n  return function (x, y) {\n    if (comparefn !== undefined) return +comparefn(x, y) || 0;\n    // eslint-disable-next-line no-self-compare -- NaN check\n    if (y !== y) return -1;\n    // eslint-disable-next-line no-self-compare -- NaN check\n    if (x !== x) return 1;\n    if (x === 0 && y === 0) return 1 / x > 0 && 1 / y < 0 ? 1 : -1;\n    return x > y;\n  };\n};\n\n// `%TypedArray%.prototype.sort` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.sort\nexportTypedArrayMethod('sort', function sort(comparefn) {\n  if (comparefn !== undefined) aCallable(comparefn);\n  if (STABLE_SORT) return un$Sort(this, comparefn);\n\n  return internalSort(aTypedArray(this), getSortCompare(comparefn));\n}, !STABLE_SORT || ACCEPT_INCORRECT_ARGUMENTS);\n", "'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar toLength = require('../internals/to-length');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar typedArraySpeciesConstructor = require('../internals/typed-array-species-constructor');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.subarray` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.subarray\nexportTypedArrayMethod('subarray', function subarray(begin, end) {\n  var O = aTypedArray(this);\n  var length = O.length;\n  var beginIndex = toAbsoluteIndex(begin, length);\n  var C = typedArraySpeciesConstructor(O);\n  return new C(\n    O.buffer,\n    O.byteOffset + beginIndex * O.BYTES_PER_ELEMENT,\n    toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - beginIndex)\n  );\n});\n", "'use strict';\nvar global = require('../internals/global');\nvar apply = require('../internals/function-apply');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar fails = require('../internals/fails');\nvar arraySlice = require('../internals/array-slice');\n\nvar Int8Array = global.Int8Array;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar $toLocaleString = [].toLocaleString;\n\n// iOS Safari 6.x fails here\nvar TO_LOCALE_STRING_BUG = !!Int8Array && fails(function () {\n  $toLocaleString.call(new Int8Array(1));\n});\n\nvar FORCED = fails(function () {\n  return [1, 2].toLocaleString() != new Int8Array([1, 2]).toLocaleString();\n}) || !fails(function () {\n  Int8Array.prototype.toLocaleString.call([1, 2]);\n});\n\n// `%TypedArray%.prototype.toLocaleString` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.tolocalestring\nexportTypedArrayMethod('toLocaleString', function toLocaleString() {\n  return apply(\n    $toLocaleString,\n    TO_LOCALE_STRING_BUG ? arraySlice(aTypedArray(this)) : aTypedArray(this),\n    arraySlice(arguments)\n  );\n}, FORCED);\n", "'use strict';\nvar exportTypedArrayMethod = require('../internals/array-buffer-view-core').exportTypedArrayMethod;\nvar fails = require('../internals/fails');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar Uint8Array = global.Uint8Array;\nvar Uint8ArrayPrototype = Uint8Array && Uint8Array.prototype || {};\nvar arrayToString = [].toString;\nvar join = uncurryThis([].join);\n\nif (fails(function () { arrayToString.call({}); })) {\n  arrayToString = function toString() {\n    return join(this);\n  };\n}\n\nvar IS_NOT_ARRAY_METHOD = Uint8ArrayPrototype.toString != arrayToString;\n\n// `%TypedArray%.prototype.toString` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.tostring\nexportTypedArrayMethod('toString', arrayToString, IS_NOT_ARRAY_METHOD);\n", "var createTypedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Uint16Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Uint16', function (init) {\n  return function Uint16Array(data, byteOffset, length) {\n    return init(this, data, byteOffset, length);\n  };\n});\n", "var createTypedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Uint32Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Uint32', function (init) {\n  return function Uint32Array(data, byteOffset, length) {\n    return init(this, data, byteOffset, length);\n  };\n});\n", "var createTypedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Uint8Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Uint8', function (init) {\n  return function Uint8Array(data, byteOffset, length) {\n    return init(this, data, byteOffset, length);\n  };\n});\n", "var createTypedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Uint8ClampedArray` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Uint8', function (init) {\n  return function Uint8ClampedArray(data, byteOffset, length) {\n    return init(this, data, byteOffset, length);\n  };\n}, true);\n", "// TODO: Remove from `core-js@4`\nrequire('../modules/es.aggregate-error');\n", "// TODO: Remove from `core-js@4`\nrequire('../modules/es.global-this');\n", "// TODO: Remove from `core-js@4`\nrequire('../modules/es.promise.all-settled.js');\n", "// TODO: Remove from `core-js@4`\nrequire('../modules/es.promise.any');\n", "'use strict';\nvar $ = require('../internals/export');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\n\n// `Promise.try` method\n// https://github.com/tc39/proposal-promise-try\n$({ target: 'Promise', stat: true }, {\n  'try': function (callbackfn) {\n    var promiseCapability = newPromiseCapabilityModule.f(this);\n    var result = perform(callbackfn);\n    (result.error ? promiseCapability.reject : promiseCapability.resolve)(result.value);\n    return promiseCapability.promise;\n  }\n});\n", "// TODO: Remove from `core-js@4`\nrequire('../modules/es.string.match-all');\n", "var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar DOMTokenListPrototype = require('../internals/dom-token-list-prototype');\nvar forEach = require('../internals/array-for-each');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nvar handlePrototype = function (CollectionPrototype) {\n  // some Chrome versions have non-configurable methods on DOMTokenList\n  if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try {\n    createNonEnumerableProperty(CollectionPrototype, 'forEach', forEach);\n  } catch (error) {\n    CollectionPrototype.forEach = forEach;\n  }\n};\n\nfor (var COLLECTION_NAME in DOMIterables) {\n  if (DOMIterables[COLLECTION_NAME]) {\n    handlePrototype(global[COLLECTION_NAME] && global[COLLECTION_NAME].prototype);\n  }\n}\n\nhandlePrototype(DOMTokenListPrototype);\n", "var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar DOMTokenListPrototype = require('../internals/dom-token-list-prototype');\nvar ArrayIteratorMethods = require('../modules/es.array.iterator');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar ArrayValues = ArrayIteratorMethods.values;\n\nvar handlePrototype = function (CollectionPrototype, COLLECTION_NAME) {\n  if (CollectionPrototype) {\n    // some Chrome versions have non-configurable methods on DOMTokenList\n    if (CollectionPrototype[ITERATOR] !== ArrayValues) try {\n      createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues);\n    } catch (error) {\n      CollectionPrototype[ITERATOR] = ArrayValues;\n    }\n    if (!CollectionPrototype[TO_STRING_TAG]) {\n      createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);\n    }\n    if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) {\n      // some Chrome versions have non-configurable methods on DOMTokenList\n      if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try {\n        createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]);\n      } catch (error) {\n        CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME];\n      }\n    }\n  }\n};\n\nfor (var COLLECTION_NAME in DOMIterables) {\n  handlePrototype(global[COLLECTION_NAME] && global[COLLECTION_NAME].prototype, COLLECTION_NAME);\n}\n\nhandlePrototype(DOMTokenListPrototype, 'DOMTokenList');\n", "'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\n\n// `URL.prototype.toJSON` method\n// https://url.spec.whatwg.org/#dom-url-tojson\n$({ target: 'URL', proto: true, enumerable: true }, {\n  toJSON: function toJSON() {\n    return call(URL.prototype.toString, this);\n  }\n});\n", "var parent = require('../../es/promise');\nrequire('../../modules/web.dom-collections.iterator');\n\nmodule.exports = parent;\n", "var objectKeys = require('object-keys');\nvar isArguments = require('is-arguments');\nvar is = require('object-is');\nvar isRegex = require('is-regex');\nvar flags = require('regexp.prototype.flags');\nvar isDate = require('is-date-object');\n\nvar getTime = Date.prototype.getTime;\n\nfunction deepEqual(actual, expected, options) {\n  var opts = options || {};\n\n  // 7.1. All identical values are equivalent, as determined by ===.\n  if (opts.strict ? is(actual, expected) : actual === expected) {\n    return true;\n  }\n\n  // 7.3. Other pairs that do not both pass typeof value == 'object', equivalence is determined by ==.\n  if (!actual || !expected || (typeof actual !== 'object' && typeof expected !== 'object')) {\n    return opts.strict ? is(actual, expected) : actual == expected;\n  }\n\n  /*\n   * 7.4. For all other Object pairs, including Array objects, equivalence is\n   * determined by having the same number of owned properties (as verified\n   * with Object.prototype.hasOwnProperty.call), the same set of keys\n   * (although not necessarily the same order), equivalent values for every\n   * corresponding key, and an identical 'prototype' property. Note: this\n   * accounts for both named and indexed properties on Arrays.\n   */\n  // eslint-disable-next-line no-use-before-define\n  return objEquiv(actual, expected, opts);\n}\n\nfunction isUndefinedOrNull(value) {\n  return value === null || value === undefined;\n}\n\nfunction isBuffer(x) {\n  if (!x || typeof x !== 'object' || typeof x.length !== 'number') {\n    return false;\n  }\n  if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {\n    return false;\n  }\n  if (x.length > 0 && typeof x[0] !== 'number') {\n    return false;\n  }\n  return true;\n}\n\nfunction objEquiv(a, b, opts) {\n  /* eslint max-statements: [2, 50] */\n  var i, key;\n  if (typeof a !== typeof b) { return false; }\n  if (isUndefinedOrNull(a) || isUndefinedOrNull(b)) { return false; }\n\n  // an identical 'prototype' property.\n  if (a.prototype !== b.prototype) { return false; }\n\n  if (isArguments(a) !== isArguments(b)) { return false; }\n\n  var aIsRegex = isRegex(a);\n  var bIsRegex = isRegex(b);\n  if (aIsRegex !== bIsRegex) { return false; }\n  if (aIsRegex || bIsRegex) {\n    return a.source === b.source && flags(a) === flags(b);\n  }\n\n  if (isDate(a) && isDate(b)) {\n    return getTime.call(a) === getTime.call(b);\n  }\n\n  var aIsBuffer = isBuffer(a);\n  var bIsBuffer = isBuffer(b);\n  if (aIsBuffer !== bIsBuffer) { return false; }\n  if (aIsBuffer || bIsBuffer) { // && would work too, because both are true or both false here\n    if (a.length !== b.length) { return false; }\n    for (i = 0; i < a.length; i++) {\n      if (a[i] !== b[i]) { return false; }\n    }\n    return true;\n  }\n\n  if (typeof a !== typeof b) { return false; }\n\n  try {\n    var ka = objectKeys(a);\n    var kb = objectKeys(b);\n  } catch (e) { // happens when one is a string literal and the other isn't\n    return false;\n  }\n  // having the same number of owned properties (keys incorporates hasOwnProperty)\n  if (ka.length !== kb.length) { return false; }\n\n  // the same set of keys (although not necessarily the same order),\n  ka.sort();\n  kb.sort();\n  // ~~~cheap key test\n  for (i = ka.length - 1; i >= 0; i--) {\n    if (ka[i] != kb[i]) { return false; }\n  }\n  // equivalent values for every corresponding key, and ~~~possibly expensive deep test\n  for (i = ka.length - 1; i >= 0; i--) {\n    key = ka[i];\n    if (!deepEqual(a[key], b[key], opts)) { return false; }\n  }\n\n  return true;\n}\n\nmodule.exports = deepEqual;\n", "'use strict';\n\nvar keys = require('object-keys');\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol';\n\nvar toStr = Object.prototype.toString;\nvar concat = Array.prototype.concat;\nvar origDefineProperty = Object.defineProperty;\n\nvar isFunction = function (fn) {\n\treturn typeof fn === 'function' && toStr.call(fn) === '[object Function]';\n};\n\nvar hasPropertyDescriptors = require('has-property-descriptors')();\n\nvar supportsDescriptors = origDefineProperty && hasPropertyDescriptors;\n\nvar defineProperty = function (object, name, value, predicate) {\n\tif (name in object && (!isFunction(predicate) || !predicate())) {\n\t\treturn;\n\t}\n\tif (supportsDescriptors) {\n\t\torigDefineProperty(object, name, {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tvalue: value,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\tobject[name] = value; // eslint-disable-line no-param-reassign\n\t}\n};\n\nvar defineProperties = function (object, map) {\n\tvar predicates = arguments.length > 2 ? arguments[2] : {};\n\tvar props = keys(map);\n\tif (hasSymbols) {\n\t\tprops = concat.call(props, Object.getOwnPropertySymbols(map));\n\t}\n\tfor (var i = 0; i < props.length; i += 1) {\n\t\tdefineProperty(object, props[i], map[props[i]], predicates[props[i]]);\n\t}\n};\n\ndefineProperties.supportsDescriptors = !!supportsDescriptors;\n\nmodule.exports = defineProperties;\n", "/**\n * Code refactored from Mozilla Developer Network:\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign\n */\n\n'use strict';\n\nfunction assign(target, firstSource) {\n  if (target === undefined || target === null) {\n    throw new TypeError('Cannot convert first argument to object');\n  }\n\n  var to = Object(target);\n  for (var i = 1; i < arguments.length; i++) {\n    var nextSource = arguments[i];\n    if (nextSource === undefined || nextSource === null) {\n      continue;\n    }\n\n    var keysArray = Object.keys(Object(nextSource));\n    for (var nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex++) {\n      var nextKey = keysArray[nextIndex];\n      var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n      if (desc !== undefined && desc.enumerable) {\n        to[nextKey] = nextSource[nextKey];\n      }\n    }\n  }\n  return to;\n}\n\nfunction polyfill() {\n  if (!Object.assign) {\n    Object.defineProperty(Object, 'assign', {\n      enumerable: false,\n      configurable: true,\n      writable: true,\n      value: assign\n    });\n  }\n}\n\nmodule.exports = {\n  assign: assign,\n  polyfill: polyfill\n};\n", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n  ? R.apply\n  : function ReflectApply(target, receiver, args) {\n    return Function.prototype.apply.call(target, receiver, args);\n  }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n  ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n  ReflectOwnKeys = function ReflectOwnKeys(target) {\n    return Object.getOwnPropertyNames(target)\n      .concat(Object.getOwnPropertySymbols(target));\n  };\n} else {\n  ReflectOwnKeys = function ReflectOwnKeys(target) {\n    return Object.getOwnPropertyNames(target);\n  };\n}\n\nfunction ProcessEmitWarning(warning) {\n  if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n  return value !== value;\n}\n\nfunction EventEmitter() {\n  EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n  if (typeof listener !== 'function') {\n    throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n  }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n  enumerable: true,\n  get: function() {\n    return defaultMaxListeners;\n  },\n  set: function(arg) {\n    if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n      throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n    }\n    defaultMaxListeners = arg;\n  }\n});\n\nEventEmitter.init = function() {\n\n  if (this._events === undefined ||\n      this._events === Object.getPrototypeOf(this)._events) {\n    this._events = Object.create(null);\n    this._eventsCount = 0;\n  }\n\n  this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n  if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n    throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n  }\n  this._maxListeners = n;\n  return this;\n};\n\nfunction _getMaxListeners(that) {\n  if (that._maxListeners === undefined)\n    return EventEmitter.defaultMaxListeners;\n  return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n  return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n  var args = [];\n  for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n  var doError = (type === 'error');\n\n  var events = this._events;\n  if (events !== undefined)\n    doError = (doError && events.error === undefined);\n  else if (!doError)\n    return false;\n\n  // If there is no 'error' event listener then throw.\n  if (doError) {\n    var er;\n    if (args.length > 0)\n      er = args[0];\n    if (er instanceof Error) {\n      // Note: The comments on the `throw` lines are intentional, they show\n      // up in Node's output if this results in an unhandled exception.\n      throw er; // Unhandled 'error' event\n    }\n    // At least give some kind of context to the user\n    var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n    err.context = er;\n    throw err; // Unhandled 'error' event\n  }\n\n  var handler = events[type];\n\n  if (handler === undefined)\n    return false;\n\n  if (typeof handler === 'function') {\n    ReflectApply(handler, this, args);\n  } else {\n    var len = handler.length;\n    var listeners = arrayClone(handler, len);\n    for (var i = 0; i < len; ++i)\n      ReflectApply(listeners[i], this, args);\n  }\n\n  return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n  var m;\n  var events;\n  var existing;\n\n  checkListener(listener);\n\n  events = target._events;\n  if (events === undefined) {\n    events = target._events = Object.create(null);\n    target._eventsCount = 0;\n  } else {\n    // To avoid recursion in the case that type === \"newListener\"! Before\n    // adding it to the listeners, first emit \"newListener\".\n    if (events.newListener !== undefined) {\n      target.emit('newListener', type,\n                  listener.listener ? listener.listener : listener);\n\n      // Re-assign `events` because a newListener handler could have caused the\n      // this._events to be assigned to a new object\n      events = target._events;\n    }\n    existing = events[type];\n  }\n\n  if (existing === undefined) {\n    // Optimize the case of one listener. Don't need the extra array object.\n    existing = events[type] = listener;\n    ++target._eventsCount;\n  } else {\n    if (typeof existing === 'function') {\n      // Adding the second element, need to change to array.\n      existing = events[type] =\n        prepend ? [listener, existing] : [existing, listener];\n      // If we've already got an array, just append.\n    } else if (prepend) {\n      existing.unshift(listener);\n    } else {\n      existing.push(listener);\n    }\n\n    // Check for listener leak\n    m = _getMaxListeners(target);\n    if (m > 0 && existing.length > m && !existing.warned) {\n      existing.warned = true;\n      // No error code for this since it is a Warning\n      // eslint-disable-next-line no-restricted-syntax\n      var w = new Error('Possible EventEmitter memory leak detected. ' +\n                          existing.length + ' ' + String(type) + ' listeners ' +\n                          'added. Use emitter.setMaxListeners() to ' +\n                          'increase limit');\n      w.name = 'MaxListenersExceededWarning';\n      w.emitter = target;\n      w.type = type;\n      w.count = existing.length;\n      ProcessEmitWarning(w);\n    }\n  }\n\n  return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n  return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n    function prependListener(type, listener) {\n      return _addListener(this, type, listener, true);\n    };\n\nfunction onceWrapper() {\n  if (!this.fired) {\n    this.target.removeListener(this.type, this.wrapFn);\n    this.fired = true;\n    if (arguments.length === 0)\n      return this.listener.call(this.target);\n    return this.listener.apply(this.target, arguments);\n  }\n}\n\nfunction _onceWrap(target, type, listener) {\n  var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n  var wrapped = onceWrapper.bind(state);\n  wrapped.listener = listener;\n  state.wrapFn = wrapped;\n  return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n  checkListener(listener);\n  this.on(type, _onceWrap(this, type, listener));\n  return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n    function prependOnceListener(type, listener) {\n      checkListener(listener);\n      this.prependListener(type, _onceWrap(this, type, listener));\n      return this;\n    };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n    function removeListener(type, listener) {\n      var list, events, position, i, originalListener;\n\n      checkListener(listener);\n\n      events = this._events;\n      if (events === undefined)\n        return this;\n\n      list = events[type];\n      if (list === undefined)\n        return this;\n\n      if (list === listener || list.listener === listener) {\n        if (--this._eventsCount === 0)\n          this._events = Object.create(null);\n        else {\n          delete events[type];\n          if (events.removeListener)\n            this.emit('removeListener', type, list.listener || listener);\n        }\n      } else if (typeof list !== 'function') {\n        position = -1;\n\n        for (i = list.length - 1; i >= 0; i--) {\n          if (list[i] === listener || list[i].listener === listener) {\n            originalListener = list[i].listener;\n            position = i;\n            break;\n          }\n        }\n\n        if (position < 0)\n          return this;\n\n        if (position === 0)\n          list.shift();\n        else {\n          spliceOne(list, position);\n        }\n\n        if (list.length === 1)\n          events[type] = list[0];\n\n        if (events.removeListener !== undefined)\n          this.emit('removeListener', type, originalListener || listener);\n      }\n\n      return this;\n    };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n    function removeAllListeners(type) {\n      var listeners, events, i;\n\n      events = this._events;\n      if (events === undefined)\n        return this;\n\n      // not listening for removeListener, no need to emit\n      if (events.removeListener === undefined) {\n        if (arguments.length === 0) {\n          this._events = Object.create(null);\n          this._eventsCount = 0;\n        } else if (events[type] !== undefined) {\n          if (--this._eventsCount === 0)\n            this._events = Object.create(null);\n          else\n            delete events[type];\n        }\n        return this;\n      }\n\n      // emit removeListener for all listeners on all events\n      if (arguments.length === 0) {\n        var keys = Object.keys(events);\n        var key;\n        for (i = 0; i < keys.length; ++i) {\n          key = keys[i];\n          if (key === 'removeListener') continue;\n          this.removeAllListeners(key);\n        }\n        this.removeAllListeners('removeListener');\n        this._events = Object.create(null);\n        this._eventsCount = 0;\n        return this;\n      }\n\n      listeners = events[type];\n\n      if (typeof listeners === 'function') {\n        this.removeListener(type, listeners);\n      } else if (listeners !== undefined) {\n        // LIFO order\n        for (i = listeners.length - 1; i >= 0; i--) {\n          this.removeListener(type, listeners[i]);\n        }\n      }\n\n      return this;\n    };\n\nfunction _listeners(target, type, unwrap) {\n  var events = target._events;\n\n  if (events === undefined)\n    return [];\n\n  var evlistener = events[type];\n  if (evlistener === undefined)\n    return [];\n\n  if (typeof evlistener === 'function')\n    return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n  return unwrap ?\n    unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n  return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n  return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n  if (typeof emitter.listenerCount === 'function') {\n    return emitter.listenerCount(type);\n  } else {\n    return listenerCount.call(emitter, type);\n  }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n  var events = this._events;\n\n  if (events !== undefined) {\n    var evlistener = events[type];\n\n    if (typeof evlistener === 'function') {\n      return 1;\n    } else if (evlistener !== undefined) {\n      return evlistener.length;\n    }\n  }\n\n  return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n  return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n  var copy = new Array(n);\n  for (var i = 0; i < n; ++i)\n    copy[i] = arr[i];\n  return copy;\n}\n\nfunction spliceOne(list, index) {\n  for (; index + 1 < list.length; index++)\n    list[index] = list[index + 1];\n  list.pop();\n}\n\nfunction unwrapListeners(arr) {\n  var ret = new Array(arr.length);\n  for (var i = 0; i < ret.length; ++i) {\n    ret[i] = arr[i].listener || arr[i];\n  }\n  return ret;\n}\n\nfunction once(emitter, name) {\n  return new Promise(function (resolve, reject) {\n    function errorListener(err) {\n      emitter.removeListener(name, resolver);\n      reject(err);\n    }\n\n    function resolver() {\n      if (typeof emitter.removeListener === 'function') {\n        emitter.removeListener('error', errorListener);\n      }\n      resolve([].slice.call(arguments));\n    };\n\n    eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n    if (name !== 'error') {\n      addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n    }\n  });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n  if (typeof emitter.on === 'function') {\n    eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n  }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n  if (typeof emitter.on === 'function') {\n    if (flags.once) {\n      emitter.once(name, listener);\n    } else {\n      emitter.on(name, listener);\n    }\n  } else if (typeof emitter.addEventListener === 'function') {\n    // EventTarget does not have `error` event semantics like Node\n    // EventEmitters, we do not listen for `error` events here.\n    emitter.addEventListener(name, function wrapListener(arg) {\n      // IE does not have builtin `{ once: true }` support so we\n      // have to do it manually.\n      if (flags.once) {\n        emitter.removeEventListener(name, wrapListener);\n      }\n      listener(arg);\n    });\n  } else {\n    throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n  }\n}\n", "var ___EXPOSE_LOADER_IMPORT___ = require(\"-!./pdfMake.js\");\nvar ___EXPOSE_LOADER_GET_GLOBAL_THIS___ = require(\"../../node_modules/expose-loader/dist/runtime/getGlobalThis.js\");\nvar ___EXPOSE_LOADER_GLOBAL_THIS___ = ___EXPOSE_LOADER_GET_GLOBAL_THIS___;\nif (typeof ___EXPOSE_LOADER_GLOBAL_THIS___[\"pdfMake\"] === 'undefined') ___EXPOSE_LOADER_GLOBAL_THIS___[\"pdfMake\"] = ___EXPOSE_LOADER_IMPORT___;\nmodule.exports = ___EXPOSE_LOADER_IMPORT___;\n", "\"use strict\";\n\n// eslint-disable-next-line func-names\nmodule.exports = function () {\n  if (typeof globalThis === \"object\") {\n    return globalThis;\n  }\n\n  var g;\n\n  try {\n    // This works if eval is allowed (see CSP)\n    // eslint-disable-next-line no-new-func\n    g = this || new Function(\"return this\")();\n  } catch (e) {\n    // This works if the window reference is available\n    if (typeof window === \"object\") {\n      return window;\n    } // This works if the self reference is available\n\n\n    if (typeof self === \"object\") {\n      return self;\n    } // This works if the global reference is available\n\n\n    if (typeof global !== \"undefined\") {\n      return global;\n    }\n  }\n\n  return g;\n}();", "'use strict';\n\nvar isCallable = require('is-callable');\n\nvar toStr = Object.prototype.toString;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar forEachArray = function forEachArray(array, iterator, receiver) {\n    for (var i = 0, len = array.length; i < len; i++) {\n        if (hasOwnProperty.call(array, i)) {\n            if (receiver == null) {\n                iterator(array[i], i, array);\n            } else {\n                iterator.call(receiver, array[i], i, array);\n            }\n        }\n    }\n};\n\nvar forEachString = function forEachString(string, iterator, receiver) {\n    for (var i = 0, len = string.length; i < len; i++) {\n        // no such thing as a sparse string.\n        if (receiver == null) {\n            iterator(string.charAt(i), i, string);\n        } else {\n            iterator.call(receiver, string.charAt(i), i, string);\n        }\n    }\n};\n\nvar forEachObject = function forEachObject(object, iterator, receiver) {\n    for (var k in object) {\n        if (hasOwnProperty.call(object, k)) {\n            if (receiver == null) {\n                iterator(object[k], k, object);\n            } else {\n                iterator.call(receiver, object[k], k, object);\n            }\n        }\n    }\n};\n\nvar forEach = function forEach(list, iterator, thisArg) {\n    if (!isCallable(iterator)) {\n        throw new TypeError('iterator must be a function');\n    }\n\n    var receiver;\n    if (arguments.length >= 3) {\n        receiver = thisArg;\n    }\n\n    if (toStr.call(list) === '[object Array]') {\n        forEachArray(list, iterator, receiver);\n    } else if (typeof list === 'string') {\n        forEachString(list, iterator, receiver);\n    } else {\n        forEachObject(list, iterator, receiver);\n    }\n};\n\nmodule.exports = forEach;\n", "'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar slice = Array.prototype.slice;\nvar toStr = Object.prototype.toString;\nvar funcType = '[object Function]';\n\nmodule.exports = function bind(that) {\n    var target = this;\n    if (typeof target !== 'function' || toStr.call(target) !== funcType) {\n        throw new TypeError(ERROR_MESSAGE + target);\n    }\n    var args = slice.call(arguments, 1);\n\n    var bound;\n    var binder = function () {\n        if (this instanceof bound) {\n            var result = target.apply(\n                this,\n                args.concat(slice.call(arguments))\n            );\n            if (Object(result) === result) {\n                return result;\n            }\n            return this;\n        } else {\n            return target.apply(\n                that,\n                args.concat(slice.call(arguments))\n            );\n        }\n    };\n\n    var boundLength = Math.max(0, target.length - args.length);\n    var boundArgs = [];\n    for (var i = 0; i < boundLength; i++) {\n        boundArgs.push('$' + i);\n    }\n\n    bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder);\n\n    if (target.prototype) {\n        var Empty = function Empty() {};\n        Empty.prototype = target.prototype;\n        bound.prototype = new Empty();\n        Empty.prototype = null;\n    }\n\n    return bound;\n};\n", "'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n", "'use strict';\n\nvar functionsHaveNames = function functionsHaveNames() {\n\treturn typeof function f() {}.name === 'string';\n};\n\nvar gOPD = Object.getOwnPropertyDescriptor;\nif (gOPD) {\n\ttry {\n\t\tgOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\tgOPD = null;\n\t}\n}\n\nfunctionsHaveNames.functionsHaveConfigurableNames = function functionsHaveConfigurableNames() {\n\tif (!functionsHaveNames() || !gOPD) {\n\t\treturn false;\n\t}\n\tvar desc = gOPD(function () {}, 'name');\n\treturn !!desc && !!desc.configurable;\n};\n\nvar $bind = Function.prototype.bind;\n\nfunctionsHaveNames.boundFunctionsHaveNames = function boundFunctionsHaveNames() {\n\treturn functionsHaveNames() && typeof $bind === 'function' && function f() {}.bind().name !== '';\n};\n\nmodule.exports = functionsHaveNames;\n", "'use strict';\n\nvar undefined;\n\nvar $SyntaxError = SyntaxError;\nvar $Function = Function;\nvar $TypeError = TypeError;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\n\nvar getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': EvalError,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': Object,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': RangeError,\n\t'%ReferenceError%': ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet\n};\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('has');\nvar $concat = bind.call(Function.call, Array.prototype.concat);\nvar $spliceApply = bind.call(Function.apply, Array.prototype.splice);\nvar $replace = bind.call(Function.call, String.prototype.replace);\nvar $strSlice = bind.call(Function.call, String.prototype.slice);\nvar $exec = bind.call(Function.call, RegExp.prototype.exec);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tif ($exec(/^%?[^%]*%?$/, name) === null) {\n\t\tthrow new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');\n\t}\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n", "'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\n\nif ($gOPD) {\n\ttry {\n\t\t$gOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\t$gOPD = null;\n\t}\n}\n\nmodule.exports = $gOPD;\n", "'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\n\nvar hasPropertyDescriptors = function hasPropertyDescriptors() {\n\tif ($defineProperty) {\n\t\ttry {\n\t\t\t$defineProperty({}, 'a', { value: 1 });\n\t\t\treturn true;\n\t\t} catch (e) {\n\t\t\t// IE 8 has a broken defineProperty\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn false;\n};\n\nhasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBug() {\n\t// node v0.6 has a bug where array lengths can be Set but not Defined\n\tif (!hasPropertyDescriptors()) {\n\t\treturn null;\n\t}\n\ttry {\n\t\treturn $defineProperty([], 'length', { value: 1 }).length !== 1;\n\t} catch (e) {\n\t\t// In Firefox 4-22, defining length on an array throws an exception.\n\t\treturn true;\n\t}\n};\n\nmodule.exports = hasPropertyDescriptors;\n", "'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n", "'use strict';\n\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n", "'use strict';\n\nvar hasSymbols = require('has-symbols/shams');\n\nmodule.exports = function hasToStringTagShams() {\n\treturn hasSymbols() && !!Symbol.toStringTag;\n};\n", "'use strict';\n\nvar bind = require('function-bind');\n\nmodule.exports = bind.call(Function.call, Object.prototype.hasOwnProperty);\n", "\"use strict\";\nvar Buffer = require(\"safer-buffer\").Buffer;\n\n// Multibyte codec. In this scheme, a character is represented by 1 or more bytes.\n// Our codec supports UTF-16 surrogates, extensions for GB18030 and unicode sequences.\n// To save memory and loading time, we read table files only when requested.\n\nexports._dbcs = DBCSCodec;\n\nvar UNASSIGNED = -1,\n    GB18030_CODE = -2,\n    SEQ_START  = -10,\n    NODE_START = -1000,\n    UNASSIGNED_NODE = new Array(0x100),\n    DEF_CHAR = -1;\n\nfor (var i = 0; i < 0x100; i++)\n    UNASSIGNED_NODE[i] = UNASSIGNED;\n\n\n// Class DBCSCodec reads and initializes mapping tables.\nfunction DBCSCodec(codecOptions, iconv) {\n    this.encodingName = codecOptions.encodingName;\n    if (!codecOptions)\n        throw new Error(\"DBCS codec is called without the data.\")\n    if (!codecOptions.table)\n        throw new Error(\"Encoding '\" + this.encodingName + \"' has no data.\");\n\n    // Load tables.\n    var mappingTable = codecOptions.table();\n\n\n    // Decode tables: MBCS -> Unicode.\n\n    // decodeTables is a trie, encoded as an array of arrays of integers. Internal arrays are trie nodes and all have len = 256.\n    // Trie root is decodeTables[0].\n    // Values: >=  0 -> unicode character code. can be > 0xFFFF\n    //         == UNASSIGNED -> unknown/unassigned sequence.\n    //         == GB18030_CODE -> this is the end of a GB18030 4-byte sequence.\n    //         <= NODE_START -> index of the next node in our trie to process next byte.\n    //         <= SEQ_START  -> index of the start of a character code sequence, in decodeTableSeq.\n    this.decodeTables = [];\n    this.decodeTables[0] = UNASSIGNED_NODE.slice(0); // Create root node.\n\n    // Sometimes a MBCS char corresponds to a sequence of unicode chars. We store them as arrays of integers here. \n    this.decodeTableSeq = [];\n\n    // Actual mapping tables consist of chunks. Use them to fill up decode tables.\n    for (var i = 0; i < mappingTable.length; i++)\n        this._addDecodeChunk(mappingTable[i]);\n\n    // Load & create GB18030 tables when needed.\n    if (typeof codecOptions.gb18030 === 'function') {\n        this.gb18030 = codecOptions.gb18030(); // Load GB18030 ranges.\n\n        // Add GB18030 common decode nodes.\n        var commonThirdByteNodeIdx = this.decodeTables.length;\n        this.decodeTables.push(UNASSIGNED_NODE.slice(0));\n\n        var commonFourthByteNodeIdx = this.decodeTables.length;\n        this.decodeTables.push(UNASSIGNED_NODE.slice(0));\n\n        // Fill out the tree\n        var firstByteNode = this.decodeTables[0];\n        for (var i = 0x81; i <= 0xFE; i++) {\n            var secondByteNode = this.decodeTables[NODE_START - firstByteNode[i]];\n            for (var j = 0x30; j <= 0x39; j++) {\n                if (secondByteNode[j] === UNASSIGNED) {\n                    secondByteNode[j] = NODE_START - commonThirdByteNodeIdx;\n                } else if (secondByteNode[j] > NODE_START) {\n                    throw new Error(\"gb18030 decode tables conflict at byte 2\");\n                }\n\n                var thirdByteNode = this.decodeTables[NODE_START - secondByteNode[j]];\n                for (var k = 0x81; k <= 0xFE; k++) {\n                    if (thirdByteNode[k] === UNASSIGNED) {\n                        thirdByteNode[k] = NODE_START - commonFourthByteNodeIdx;\n                    } else if (thirdByteNode[k] === NODE_START - commonFourthByteNodeIdx) {\n                        continue;\n                    } else if (thirdByteNode[k] > NODE_START) {\n                        throw new Error(\"gb18030 decode tables conflict at byte 3\");\n                    }\n\n                    var fourthByteNode = this.decodeTables[NODE_START - thirdByteNode[k]];\n                    for (var l = 0x30; l <= 0x39; l++) {\n                        if (fourthByteNode[l] === UNASSIGNED)\n                            fourthByteNode[l] = GB18030_CODE;\n                    }\n                }\n            }\n        }\n    }\n\n    this.defaultCharUnicode = iconv.defaultCharUnicode;\n\n    \n    // Encode tables: Unicode -> DBCS.\n\n    // `encodeTable` is array mapping from unicode char to encoded char. All its values are integers for performance.\n    // Because it can be sparse, it is represented as array of buckets by 256 chars each. Bucket can be null.\n    // Values: >=  0 -> it is a normal char. Write the value (if <=256 then 1 byte, if <=65536 then 2 bytes, etc.).\n    //         == UNASSIGNED -> no conversion found. Output a default char.\n    //         <= SEQ_START  -> it's an index in encodeTableSeq, see below. The character starts a sequence.\n    this.encodeTable = [];\n    \n    // `encodeTableSeq` is used when a sequence of unicode characters is encoded as a single code. We use a tree of\n    // objects where keys correspond to characters in sequence and leafs are the encoded dbcs values. A special DEF_CHAR key\n    // means end of sequence (needed when one sequence is a strict subsequence of another).\n    // Objects are kept separately from encodeTable to increase performance.\n    this.encodeTableSeq = [];\n\n    // Some chars can be decoded, but need not be encoded.\n    var skipEncodeChars = {};\n    if (codecOptions.encodeSkipVals)\n        for (var i = 0; i < codecOptions.encodeSkipVals.length; i++) {\n            var val = codecOptions.encodeSkipVals[i];\n            if (typeof val === 'number')\n                skipEncodeChars[val] = true;\n            else\n                for (var j = val.from; j <= val.to; j++)\n                    skipEncodeChars[j] = true;\n        }\n        \n    // Use decode trie to recursively fill out encode tables.\n    this._fillEncodeTable(0, 0, skipEncodeChars);\n\n    // Add more encoding pairs when needed.\n    if (codecOptions.encodeAdd) {\n        for (var uChar in codecOptions.encodeAdd)\n            if (Object.prototype.hasOwnProperty.call(codecOptions.encodeAdd, uChar))\n                this._setEncodeChar(uChar.charCodeAt(0), codecOptions.encodeAdd[uChar]);\n    }\n\n    this.defCharSB  = this.encodeTable[0][iconv.defaultCharSingleByte.charCodeAt(0)];\n    if (this.defCharSB === UNASSIGNED) this.defCharSB = this.encodeTable[0]['?'];\n    if (this.defCharSB === UNASSIGNED) this.defCharSB = \"?\".charCodeAt(0);\n}\n\nDBCSCodec.prototype.encoder = DBCSEncoder;\nDBCSCodec.prototype.decoder = DBCSDecoder;\n\n// Decoder helpers\nDBCSCodec.prototype._getDecodeTrieNode = function(addr) {\n    var bytes = [];\n    for (; addr > 0; addr >>>= 8)\n        bytes.push(addr & 0xFF);\n    if (bytes.length == 0)\n        bytes.push(0);\n\n    var node = this.decodeTables[0];\n    for (var i = bytes.length-1; i > 0; i--) { // Traverse nodes deeper into the trie.\n        var val = node[bytes[i]];\n\n        if (val == UNASSIGNED) { // Create new node.\n            node[bytes[i]] = NODE_START - this.decodeTables.length;\n            this.decodeTables.push(node = UNASSIGNED_NODE.slice(0));\n        }\n        else if (val <= NODE_START) { // Existing node.\n            node = this.decodeTables[NODE_START - val];\n        }\n        else\n            throw new Error(\"Overwrite byte in \" + this.encodingName + \", addr: \" + addr.toString(16));\n    }\n    return node;\n}\n\n\nDBCSCodec.prototype._addDecodeChunk = function(chunk) {\n    // First element of chunk is the hex mbcs code where we start.\n    var curAddr = parseInt(chunk[0], 16);\n\n    // Choose the decoding node where we'll write our chars.\n    var writeTable = this._getDecodeTrieNode(curAddr);\n    curAddr = curAddr & 0xFF;\n\n    // Write all other elements of the chunk to the table.\n    for (var k = 1; k < chunk.length; k++) {\n        var part = chunk[k];\n        if (typeof part === \"string\") { // String, write as-is.\n            for (var l = 0; l < part.length;) {\n                var code = part.charCodeAt(l++);\n                if (0xD800 <= code && code < 0xDC00) { // Decode surrogate\n                    var codeTrail = part.charCodeAt(l++);\n                    if (0xDC00 <= codeTrail && codeTrail < 0xE000)\n                        writeTable[curAddr++] = 0x10000 + (code - 0xD800) * 0x400 + (codeTrail - 0xDC00);\n                    else\n                        throw new Error(\"Incorrect surrogate pair in \"  + this.encodingName + \" at chunk \" + chunk[0]);\n                }\n                else if (0x0FF0 < code && code <= 0x0FFF) { // Character sequence (our own encoding used)\n                    var len = 0xFFF - code + 2;\n                    var seq = [];\n                    for (var m = 0; m < len; m++)\n                        seq.push(part.charCodeAt(l++)); // Simple variation: don't support surrogates or subsequences in seq.\n\n                    writeTable[curAddr++] = SEQ_START - this.decodeTableSeq.length;\n                    this.decodeTableSeq.push(seq);\n                }\n                else\n                    writeTable[curAddr++] = code; // Basic char\n            }\n        } \n        else if (typeof part === \"number\") { // Integer, meaning increasing sequence starting with prev character.\n            var charCode = writeTable[curAddr - 1] + 1;\n            for (var l = 0; l < part; l++)\n                writeTable[curAddr++] = charCode++;\n        }\n        else\n            throw new Error(\"Incorrect type '\" + typeof part + \"' given in \"  + this.encodingName + \" at chunk \" + chunk[0]);\n    }\n    if (curAddr > 0xFF)\n        throw new Error(\"Incorrect chunk in \"  + this.encodingName + \" at addr \" + chunk[0] + \": too long\" + curAddr);\n}\n\n// Encoder helpers\nDBCSCodec.prototype._getEncodeBucket = function(uCode) {\n    var high = uCode >> 8; // This could be > 0xFF because of astral characters.\n    if (this.encodeTable[high] === undefined)\n        this.encodeTable[high] = UNASSIGNED_NODE.slice(0); // Create bucket on demand.\n    return this.encodeTable[high];\n}\n\nDBCSCodec.prototype._setEncodeChar = function(uCode, dbcsCode) {\n    var bucket = this._getEncodeBucket(uCode);\n    var low = uCode & 0xFF;\n    if (bucket[low] <= SEQ_START)\n        this.encodeTableSeq[SEQ_START-bucket[low]][DEF_CHAR] = dbcsCode; // There's already a sequence, set a single-char subsequence of it.\n    else if (bucket[low] == UNASSIGNED)\n        bucket[low] = dbcsCode;\n}\n\nDBCSCodec.prototype._setEncodeSequence = function(seq, dbcsCode) {\n    \n    // Get the root of character tree according to first character of the sequence.\n    var uCode = seq[0];\n    var bucket = this._getEncodeBucket(uCode);\n    var low = uCode & 0xFF;\n\n    var node;\n    if (bucket[low] <= SEQ_START) {\n        // There's already a sequence with  - use it.\n        node = this.encodeTableSeq[SEQ_START-bucket[low]];\n    }\n    else {\n        // There was no sequence object - allocate a new one.\n        node = {};\n        if (bucket[low] !== UNASSIGNED) node[DEF_CHAR] = bucket[low]; // If a char was set before - make it a single-char subsequence.\n        bucket[low] = SEQ_START - this.encodeTableSeq.length;\n        this.encodeTableSeq.push(node);\n    }\n\n    // Traverse the character tree, allocating new nodes as needed.\n    for (var j = 1; j < seq.length-1; j++) {\n        var oldVal = node[uCode];\n        if (typeof oldVal === 'object')\n            node = oldVal;\n        else {\n            node = node[uCode] = {}\n            if (oldVal !== undefined)\n                node[DEF_CHAR] = oldVal\n        }\n    }\n\n    // Set the leaf to given dbcsCode.\n    uCode = seq[seq.length-1];\n    node[uCode] = dbcsCode;\n}\n\nDBCSCodec.prototype._fillEncodeTable = function(nodeIdx, prefix, skipEncodeChars) {\n    var node = this.decodeTables[nodeIdx];\n    var hasValues = false;\n    var subNodeEmpty = {};\n    for (var i = 0; i < 0x100; i++) {\n        var uCode = node[i];\n        var mbCode = prefix + i;\n        if (skipEncodeChars[mbCode])\n            continue;\n\n        if (uCode >= 0) {\n            this._setEncodeChar(uCode, mbCode);\n            hasValues = true;\n        } else if (uCode <= NODE_START) {\n            var subNodeIdx = NODE_START - uCode;\n            if (!subNodeEmpty[subNodeIdx]) {  // Skip empty subtrees (they are too large in gb18030).\n                var newPrefix = (mbCode << 8) >>> 0;  // NOTE: '>>> 0' keeps 32-bit num positive.\n                if (this._fillEncodeTable(subNodeIdx, newPrefix, skipEncodeChars))\n                    hasValues = true;\n                else\n                    subNodeEmpty[subNodeIdx] = true;\n            }\n        } else if (uCode <= SEQ_START) {\n            this._setEncodeSequence(this.decodeTableSeq[SEQ_START - uCode], mbCode);\n            hasValues = true;\n        }\n    }\n    return hasValues;\n}\n\n\n\n// == Encoder ==================================================================\n\nfunction DBCSEncoder(options, codec) {\n    // Encoder state\n    this.leadSurrogate = -1;\n    this.seqObj = undefined;\n    \n    // Static data\n    this.encodeTable = codec.encodeTable;\n    this.encodeTableSeq = codec.encodeTableSeq;\n    this.defaultCharSingleByte = codec.defCharSB;\n    this.gb18030 = codec.gb18030;\n}\n\nDBCSEncoder.prototype.write = function(str) {\n    var newBuf = Buffer.alloc(str.length * (this.gb18030 ? 4 : 3)),\n        leadSurrogate = this.leadSurrogate,\n        seqObj = this.seqObj, nextChar = -1,\n        i = 0, j = 0;\n\n    while (true) {\n        // 0. Get next character.\n        if (nextChar === -1) {\n            if (i == str.length) break;\n            var uCode = str.charCodeAt(i++);\n        }\n        else {\n            var uCode = nextChar;\n            nextChar = -1;    \n        }\n\n        // 1. Handle surrogates.\n        if (0xD800 <= uCode && uCode < 0xE000) { // Char is one of surrogates.\n            if (uCode < 0xDC00) { // We've got lead surrogate.\n                if (leadSurrogate === -1) {\n                    leadSurrogate = uCode;\n                    continue;\n                } else {\n                    leadSurrogate = uCode;\n                    // Double lead surrogate found.\n                    uCode = UNASSIGNED;\n                }\n            } else { // We've got trail surrogate.\n                if (leadSurrogate !== -1) {\n                    uCode = 0x10000 + (leadSurrogate - 0xD800) * 0x400 + (uCode - 0xDC00);\n                    leadSurrogate = -1;\n                } else {\n                    // Incomplete surrogate pair - only trail surrogate found.\n                    uCode = UNASSIGNED;\n                }\n                \n            }\n        }\n        else if (leadSurrogate !== -1) {\n            // Incomplete surrogate pair - only lead surrogate found.\n            nextChar = uCode; uCode = UNASSIGNED; // Write an error, then current char.\n            leadSurrogate = -1;\n        }\n\n        // 2. Convert uCode character.\n        var dbcsCode = UNASSIGNED;\n        if (seqObj !== undefined && uCode != UNASSIGNED) { // We are in the middle of the sequence\n            var resCode = seqObj[uCode];\n            if (typeof resCode === 'object') { // Sequence continues.\n                seqObj = resCode;\n                continue;\n\n            } else if (typeof resCode == 'number') { // Sequence finished. Write it.\n                dbcsCode = resCode;\n\n            } else if (resCode == undefined) { // Current character is not part of the sequence.\n\n                // Try default character for this sequence\n                resCode = seqObj[DEF_CHAR];\n                if (resCode !== undefined) {\n                    dbcsCode = resCode; // Found. Write it.\n                    nextChar = uCode; // Current character will be written too in the next iteration.\n\n                } else {\n                    // TODO: What if we have no default? (resCode == undefined)\n                    // Then, we should write first char of the sequence as-is and try the rest recursively.\n                    // Didn't do it for now because no encoding has this situation yet.\n                    // Currently, just skip the sequence and write current char.\n                }\n            }\n            seqObj = undefined;\n        }\n        else if (uCode >= 0) {  // Regular character\n            var subtable = this.encodeTable[uCode >> 8];\n            if (subtable !== undefined)\n                dbcsCode = subtable[uCode & 0xFF];\n            \n            if (dbcsCode <= SEQ_START) { // Sequence start\n                seqObj = this.encodeTableSeq[SEQ_START-dbcsCode];\n                continue;\n            }\n\n            if (dbcsCode == UNASSIGNED && this.gb18030) {\n                // Use GB18030 algorithm to find character(s) to write.\n                var idx = findIdx(this.gb18030.uChars, uCode);\n                if (idx != -1) {\n                    var dbcsCode = this.gb18030.gbChars[idx] + (uCode - this.gb18030.uChars[idx]);\n                    newBuf[j++] = 0x81 + Math.floor(dbcsCode / 12600); dbcsCode = dbcsCode % 12600;\n                    newBuf[j++] = 0x30 + Math.floor(dbcsCode / 1260); dbcsCode = dbcsCode % 1260;\n                    newBuf[j++] = 0x81 + Math.floor(dbcsCode / 10); dbcsCode = dbcsCode % 10;\n                    newBuf[j++] = 0x30 + dbcsCode;\n                    continue;\n                }\n            }\n        }\n\n        // 3. Write dbcsCode character.\n        if (dbcsCode === UNASSIGNED)\n            dbcsCode = this.defaultCharSingleByte;\n        \n        if (dbcsCode < 0x100) {\n            newBuf[j++] = dbcsCode;\n        }\n        else if (dbcsCode < 0x10000) {\n            newBuf[j++] = dbcsCode >> 8;   // high byte\n            newBuf[j++] = dbcsCode & 0xFF; // low byte\n        }\n        else if (dbcsCode < 0x1000000) {\n            newBuf[j++] = dbcsCode >> 16;\n            newBuf[j++] = (dbcsCode >> 8) & 0xFF;\n            newBuf[j++] = dbcsCode & 0xFF;\n        } else {\n            newBuf[j++] = dbcsCode >>> 24;\n            newBuf[j++] = (dbcsCode >>> 16) & 0xFF;\n            newBuf[j++] = (dbcsCode >>> 8) & 0xFF;\n            newBuf[j++] = dbcsCode & 0xFF;\n        }\n    }\n\n    this.seqObj = seqObj;\n    this.leadSurrogate = leadSurrogate;\n    return newBuf.slice(0, j);\n}\n\nDBCSEncoder.prototype.end = function() {\n    if (this.leadSurrogate === -1 && this.seqObj === undefined)\n        return; // All clean. Most often case.\n\n    var newBuf = Buffer.alloc(10), j = 0;\n\n    if (this.seqObj) { // We're in the sequence.\n        var dbcsCode = this.seqObj[DEF_CHAR];\n        if (dbcsCode !== undefined) { // Write beginning of the sequence.\n            if (dbcsCode < 0x100) {\n                newBuf[j++] = dbcsCode;\n            }\n            else {\n                newBuf[j++] = dbcsCode >> 8;   // high byte\n                newBuf[j++] = dbcsCode & 0xFF; // low byte\n            }\n        } else {\n            // See todo above.\n        }\n        this.seqObj = undefined;\n    }\n\n    if (this.leadSurrogate !== -1) {\n        // Incomplete surrogate pair - only lead surrogate found.\n        newBuf[j++] = this.defaultCharSingleByte;\n        this.leadSurrogate = -1;\n    }\n    \n    return newBuf.slice(0, j);\n}\n\n// Export for testing\nDBCSEncoder.prototype.findIdx = findIdx;\n\n\n// == Decoder ==================================================================\n\nfunction DBCSDecoder(options, codec) {\n    // Decoder state\n    this.nodeIdx = 0;\n    this.prevBytes = [];\n\n    // Static data\n    this.decodeTables = codec.decodeTables;\n    this.decodeTableSeq = codec.decodeTableSeq;\n    this.defaultCharUnicode = codec.defaultCharUnicode;\n    this.gb18030 = codec.gb18030;\n}\n\nDBCSDecoder.prototype.write = function(buf) {\n    var newBuf = Buffer.alloc(buf.length*2),\n        nodeIdx = this.nodeIdx, \n        prevBytes = this.prevBytes, prevOffset = this.prevBytes.length,\n        seqStart = -this.prevBytes.length, // idx of the start of current parsed sequence.\n        uCode;\n\n    for (var i = 0, j = 0; i < buf.length; i++) {\n        var curByte = (i >= 0) ? buf[i] : prevBytes[i + prevOffset];\n\n        // Lookup in current trie node.\n        var uCode = this.decodeTables[nodeIdx][curByte];\n\n        if (uCode >= 0) { \n            // Normal character, just use it.\n        }\n        else if (uCode === UNASSIGNED) { // Unknown char.\n            // TODO: Callback with seq.\n            uCode = this.defaultCharUnicode.charCodeAt(0);\n            i = seqStart; // Skip one byte ('i' will be incremented by the for loop) and try to parse again.\n        }\n        else if (uCode === GB18030_CODE) {\n            if (i >= 3) {\n                var ptr = (buf[i-3]-0x81)*12600 + (buf[i-2]-0x30)*1260 + (buf[i-1]-0x81)*10 + (curByte-0x30);\n            } else {\n                var ptr = (prevBytes[i-3+prevOffset]-0x81)*12600 + \n                          (((i-2 >= 0) ? buf[i-2] : prevBytes[i-2+prevOffset])-0x30)*1260 + \n                          (((i-1 >= 0) ? buf[i-1] : prevBytes[i-1+prevOffset])-0x81)*10 + \n                          (curByte-0x30);\n            }\n            var idx = findIdx(this.gb18030.gbChars, ptr);\n            uCode = this.gb18030.uChars[idx] + ptr - this.gb18030.gbChars[idx];\n        }\n        else if (uCode <= NODE_START) { // Go to next trie node.\n            nodeIdx = NODE_START - uCode;\n            continue;\n        }\n        else if (uCode <= SEQ_START) { // Output a sequence of chars.\n            var seq = this.decodeTableSeq[SEQ_START - uCode];\n            for (var k = 0; k < seq.length - 1; k++) {\n                uCode = seq[k];\n                newBuf[j++] = uCode & 0xFF;\n                newBuf[j++] = uCode >> 8;\n            }\n            uCode = seq[seq.length-1];\n        }\n        else\n            throw new Error(\"iconv-lite internal error: invalid decoding table value \" + uCode + \" at \" + nodeIdx + \"/\" + curByte);\n\n        // Write the character to buffer, handling higher planes using surrogate pair.\n        if (uCode >= 0x10000) { \n            uCode -= 0x10000;\n            var uCodeLead = 0xD800 | (uCode >> 10);\n            newBuf[j++] = uCodeLead & 0xFF;\n            newBuf[j++] = uCodeLead >> 8;\n\n            uCode = 0xDC00 | (uCode & 0x3FF);\n        }\n        newBuf[j++] = uCode & 0xFF;\n        newBuf[j++] = uCode >> 8;\n\n        // Reset trie node.\n        nodeIdx = 0; seqStart = i+1;\n    }\n\n    this.nodeIdx = nodeIdx;\n    this.prevBytes = (seqStart >= 0)\n        ? Array.prototype.slice.call(buf, seqStart)\n        : prevBytes.slice(seqStart + prevOffset).concat(Array.prototype.slice.call(buf));\n\n    return newBuf.slice(0, j).toString('ucs2');\n}\n\nDBCSDecoder.prototype.end = function() {\n    var ret = '';\n\n    // Try to parse all remaining chars.\n    while (this.prevBytes.length > 0) {\n        // Skip 1 character in the buffer.\n        ret += this.defaultCharUnicode;\n        var bytesArr = this.prevBytes.slice(1);\n\n        // Parse remaining as usual.\n        this.prevBytes = [];\n        this.nodeIdx = 0;\n        if (bytesArr.length > 0)\n            ret += this.write(bytesArr);\n    }\n\n    this.prevBytes = [];\n    this.nodeIdx = 0;\n    return ret;\n}\n\n// Binary search for GB18030. Returns largest i such that table[i] <= val.\nfunction findIdx(table, val) {\n    if (table[0] > val)\n        return -1;\n\n    var l = 0, r = table.length;\n    while (l < r-1) { // always table[l] <= val < table[r]\n        var mid = l + ((r-l+1) >> 1);\n        if (table[mid] <= val)\n            l = mid;\n        else\n            r = mid;\n    }\n    return l;\n}\n\n", "\"use strict\";\n\n// Description of supported double byte encodings and aliases.\n// Tables are not require()-d until they are needed to speed up library load.\n// require()-s are direct to support Browserify.\n\nmodule.exports = {\n    \n    // == Japanese/ShiftJIS ====================================================\n    // All japanese encodings are based on JIS X set of standards:\n    // JIS X 0201 - Single-byte encoding of ASCII + ¥ + Kana chars at 0xA1-0xDF.\n    // JIS X 0208 - Main set of 6879 characters, placed in 94x94 plane, to be encoded by 2 bytes. \n    //              Has several variations in 1978, 1983, 1990 and 1997.\n    // JIS X 0212 - Supplementary plane of 6067 chars in 94x94 plane. 1990. Effectively dead.\n    // JIS X 0213 - Extension and modern replacement of 0208 and 0212. Total chars: 11233.\n    //              2 planes, first is superset of 0208, second - revised 0212.\n    //              Introduced in 2000, revised 2004. Some characters are in Unicode Plane 2 (0x2xxxx)\n\n    // Byte encodings are:\n    //  * Shift_JIS: Compatible with 0201, uses not defined chars in top half as lead bytes for double-byte\n    //               encoding of 0208. Lead byte ranges: 0x81-0x9F, 0xE0-0xEF; Trail byte ranges: 0x40-0x7E, 0x80-0x9E, 0x9F-0xFC.\n    //               Windows CP932 is a superset of Shift_JIS. Some companies added more chars, notably KDDI.\n    //  * EUC-JP:    Up to 3 bytes per character. Used mostly on *nixes.\n    //               0x00-0x7F       - lower part of 0201\n    //               0x8E, 0xA1-0xDF - upper part of 0201\n    //               (0xA1-0xFE)x2   - 0208 plane (94x94).\n    //               0x8F, (0xA1-0xFE)x2 - 0212 plane (94x94).\n    //  * JIS X 208: 7-bit, direct encoding of 0208. Byte ranges: 0x21-0x7E (94 values). Uncommon.\n    //               Used as-is in ISO2022 family.\n    //  * ISO2022-JP: Stateful encoding, with escape sequences to switch between ASCII, \n    //                0201-1976 Roman, 0208-1978, 0208-1983.\n    //  * ISO2022-JP-1: Adds esc seq for 0212-1990.\n    //  * ISO2022-JP-2: Adds esc seq for GB2313-1980, KSX1001-1992, ISO8859-1, ISO8859-7.\n    //  * ISO2022-JP-3: Adds esc seq for 0201-1976 Kana set, 0213-2000 Planes 1, 2.\n    //  * ISO2022-JP-2004: Adds 0213-2004 Plane 1.\n    //\n    // After JIS X 0213 appeared, Shift_JIS-2004, EUC-JISX0213 and ISO2022-JP-2004 followed, with just changing the planes.\n    //\n    // Overall, it seems that it's a mess :( http://www8.plala.or.jp/tkubota1/unicode-symbols-map2.html\n\n    'shiftjis': {\n        type: '_dbcs',\n        table: function() { return require('./tables/shiftjis.json') },\n        encodeAdd: {'\\u00a5': 0x5C, '\\u203E': 0x7E},\n        encodeSkipVals: [{from: 0xED40, to: 0xF940}],\n    },\n    'csshiftjis': 'shiftjis',\n    'mskanji': 'shiftjis',\n    'sjis': 'shiftjis',\n    'windows31j': 'shiftjis',\n    'ms31j': 'shiftjis',\n    'xsjis': 'shiftjis',\n    'windows932': 'shiftjis',\n    'ms932': 'shiftjis',\n    '932': 'shiftjis',\n    'cp932': 'shiftjis',\n\n    'eucjp': {\n        type: '_dbcs',\n        table: function() { return require('./tables/eucjp.json') },\n        encodeAdd: {'\\u00a5': 0x5C, '\\u203E': 0x7E},\n    },\n\n    // TODO: KDDI extension to Shift_JIS\n    // TODO: IBM CCSID 942 = CP932, but F0-F9 custom chars and other char changes.\n    // TODO: IBM CCSID 943 = Shift_JIS = CP932 with original Shift_JIS lower 128 chars.\n\n\n    // == Chinese/GBK ==========================================================\n    // http://en.wikipedia.org/wiki/GBK\n    // We mostly implement W3C recommendation: https://www.w3.org/TR/encoding/#gbk-encoder\n\n    // Oldest GB2312 (1981, ~7600 chars) is a subset of CP936\n    'gb2312': 'cp936',\n    'gb231280': 'cp936',\n    'gb23121980': 'cp936',\n    'csgb2312': 'cp936',\n    'csiso58gb231280': 'cp936',\n    'euccn': 'cp936',\n\n    // Microsoft's CP936 is a subset and approximation of GBK.\n    'windows936': 'cp936',\n    'ms936': 'cp936',\n    '936': 'cp936',\n    'cp936': {\n        type: '_dbcs',\n        table: function() { return require('./tables/cp936.json') },\n    },\n\n    // GBK (~22000 chars) is an extension of CP936 that added user-mapped chars and some other.\n    'gbk': {\n        type: '_dbcs',\n        table: function() { return require('./tables/cp936.json').concat(require('./tables/gbk-added.json')) },\n    },\n    'xgbk': 'gbk',\n    'isoir58': 'gbk',\n\n    // GB18030 is an algorithmic extension of GBK.\n    // Main source: https://www.w3.org/TR/encoding/#gbk-encoder\n    // http://icu-project.org/docs/papers/gb18030.html\n    // http://source.icu-project.org/repos/icu/data/trunk/charset/data/xml/gb-18030-2000.xml\n    // http://www.khngai.com/chinese/charmap/tblgbk.php?page=0\n    'gb18030': {\n        type: '_dbcs',\n        table: function() { return require('./tables/cp936.json').concat(require('./tables/gbk-added.json')) },\n        gb18030: function() { return require('./tables/gb18030-ranges.json') },\n        encodeSkipVals: [0x80],\n        encodeAdd: {'€': 0xA2E3},\n    },\n\n    'chinese': 'gb18030',\n\n\n    // == Korean ===============================================================\n    // EUC-KR, KS_C_5601 and KS X 1001 are exactly the same.\n    'windows949': 'cp949',\n    'ms949': 'cp949',\n    '949': 'cp949',\n    'cp949': {\n        type: '_dbcs',\n        table: function() { return require('./tables/cp949.json') },\n    },\n\n    'cseuckr': 'cp949',\n    'csksc56011987': 'cp949',\n    'euckr': 'cp949',\n    'isoir149': 'cp949',\n    'korean': 'cp949',\n    'ksc56011987': 'cp949',\n    'ksc56011989': 'cp949',\n    'ksc5601': 'cp949',\n\n\n    // == Big5/Taiwan/Hong Kong ================================================\n    // There are lots of tables for Big5 and cp950. Please see the following links for history:\n    // http://moztw.org/docs/big5/  http://www.haible.de/bruno/charsets/conversion-tables/Big5.html\n    // Variations, in roughly number of defined chars:\n    //  * Windows CP 950: Microsoft variant of Big5. Canonical: http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP950.TXT\n    //  * Windows CP 951: Microsoft variant of Big5-HKSCS-2001. Seems to be never public. http://me.abelcheung.org/articles/research/what-is-cp951/\n    //  * Big5-2003 (Taiwan standard) almost superset of cp950.\n    //  * Unicode-at-on (UAO) / Mozilla 1.8. Falling out of use on the Web. Not supported by other browsers.\n    //  * Big5-HKSCS (-2001, -2004, -2008). Hong Kong standard. \n    //    many unicode code points moved from PUA to Supplementary plane (U+2XXXX) over the years.\n    //    Plus, it has 4 combining sequences.\n    //    Seems that Mozilla refused to support it for 10 yrs. https://bugzilla.mozilla.org/show_bug.cgi?id=162431 https://bugzilla.mozilla.org/show_bug.cgi?id=310299\n    //    because big5-hkscs is the only encoding to include astral characters in non-algorithmic way.\n    //    Implementations are not consistent within browsers; sometimes labeled as just big5.\n    //    MS Internet Explorer switches from big5 to big5-hkscs when a patch applied.\n    //    Great discussion & recap of what's going on https://bugzilla.mozilla.org/show_bug.cgi?id=912470#c31\n    //    In the encoder, it might make sense to support encoding old PUA mappings to Big5 bytes seq-s.\n    //    Official spec: http://www.ogcio.gov.hk/en/business/tech_promotion/ccli/terms/doc/2003cmp_2008.txt\n    //                   http://www.ogcio.gov.hk/tc/business/tech_promotion/ccli/terms/doc/hkscs-2008-big5-iso.txt\n    // \n    // Current understanding of how to deal with Big5(-HKSCS) is in the Encoding Standard, http://encoding.spec.whatwg.org/#big5-encoder\n    // Unicode mapping (http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/BIG5.TXT) is said to be wrong.\n\n    'windows950': 'cp950',\n    'ms950': 'cp950',\n    '950': 'cp950',\n    'cp950': {\n        type: '_dbcs',\n        table: function() { return require('./tables/cp950.json') },\n    },\n\n    // Big5 has many variations and is an extension of cp950. We use Encoding Standard's as a consensus.\n    'big5': 'big5hkscs',\n    'big5hkscs': {\n        type: '_dbcs',\n        table: function() { return require('./tables/cp950.json').concat(require('./tables/big5-added.json')) },\n        encodeSkipVals: [\n            // Although Encoding Standard says we should avoid encoding to HKSCS area (See Step 1 of\n            // https://encoding.spec.whatwg.org/#index-big5-pointer), we still do it to increase compatibility with ICU.\n            // But if a single unicode point can be encoded both as HKSCS and regular Big5, we prefer the latter.\n            0x8e69, 0x8e6f, 0x8e7e, 0x8eab, 0x8eb4, 0x8ecd, 0x8ed0, 0x8f57, 0x8f69, 0x8f6e, 0x8fcb, 0x8ffe,\n            0x906d, 0x907a, 0x90c4, 0x90dc, 0x90f1, 0x91bf, 0x92af, 0x92b0, 0x92b1, 0x92b2, 0x92d1, 0x9447, 0x94ca,\n            0x95d9, 0x96fc, 0x9975, 0x9b76, 0x9b78, 0x9b7b, 0x9bc6, 0x9bde, 0x9bec, 0x9bf6, 0x9c42, 0x9c53, 0x9c62,\n            0x9c68, 0x9c6b, 0x9c77, 0x9cbc, 0x9cbd, 0x9cd0, 0x9d57, 0x9d5a, 0x9dc4, 0x9def, 0x9dfb, 0x9ea9, 0x9eef,\n            0x9efd, 0x9f60, 0x9fcb, 0xa077, 0xa0dc, 0xa0df, 0x8fcc, 0x92c8, 0x9644, 0x96ed,\n\n            // Step 2 of https://encoding.spec.whatwg.org/#index-big5-pointer: Use last pointer for U+2550, U+255E, U+2561, U+256A, U+5341, or U+5345\n            0xa2a4, 0xa2a5, 0xa2a7, 0xa2a6, 0xa2cc, 0xa2ce,\n        ],\n    },\n\n    'cnbig5': 'big5hkscs',\n    'csbig5': 'big5hkscs',\n    'xxbig5': 'big5hkscs',\n};\n", "\"use strict\";\n\n// Update this array if you add/rename/remove files in this directory.\n// We support Browserify by skipping automatic module discovery and requiring modules directly.\nvar modules = [\n    require(\"./internal\"),\n    require(\"./utf32\"),\n    require(\"./utf16\"),\n    require(\"./utf7\"),\n    require(\"./sbcs-codec\"),\n    require(\"./sbcs-data\"),\n    require(\"./sbcs-data-generated\"),\n    require(\"./dbcs-codec\"),\n    require(\"./dbcs-data\"),\n];\n\n// Put all encoding/alias/codec definitions to single object and export it.\nfor (var i = 0; i < modules.length; i++) {\n    var module = modules[i];\n    for (var enc in module)\n        if (Object.prototype.hasOwnProperty.call(module, enc))\n            exports[enc] = module[enc];\n}\n", "\"use strict\";\nvar Buffer = require(\"safer-buffer\").Buffer;\n\n// Export Node.js internal encodings.\n\nmodule.exports = {\n    // Encodings\n    utf8:   { type: \"_internal\", bomAware: true},\n    cesu8:  { type: \"_internal\", bomAware: true},\n    unicode11utf8: \"utf8\",\n\n    ucs2:   { type: \"_internal\", bomAware: true},\n    utf16le: \"ucs2\",\n\n    binary: { type: \"_internal\" },\n    base64: { type: \"_internal\" },\n    hex:    { type: \"_internal\" },\n\n    // Codec.\n    _internal: InternalCodec,\n};\n\n//------------------------------------------------------------------------------\n\nfunction InternalCodec(codecOptions, iconv) {\n    this.enc = codecOptions.encodingName;\n    this.bomAware = codecOptions.bomAware;\n\n    if (this.enc === \"base64\")\n        this.encoder = InternalEncoderBase64;\n    else if (this.enc === \"cesu8\") {\n        this.enc = \"utf8\"; // Use utf8 for decoding.\n        this.encoder = InternalEncoderCesu8;\n\n        // Add decoder for versions of Node not supporting CESU-8\n        if (Buffer.from('eda0bdedb2a9', 'hex').toString() !== '💩') {\n            this.decoder = InternalDecoderCesu8;\n            this.defaultCharUnicode = iconv.defaultCharUnicode;\n        }\n    }\n}\n\nInternalCodec.prototype.encoder = InternalEncoder;\nInternalCodec.prototype.decoder = InternalDecoder;\n\n//------------------------------------------------------------------------------\n\n// We use node.js internal decoder. Its signature is the same as ours.\nvar StringDecoder = require('string_decoder').StringDecoder;\n\nif (!StringDecoder.prototype.end) // Node v0.8 doesn't have this method.\n    StringDecoder.prototype.end = function() {};\n\n\nfunction InternalDecoder(options, codec) {\n    this.decoder = new StringDecoder(codec.enc);\n}\n\nInternalDecoder.prototype.write = function(buf) {\n    if (!Buffer.isBuffer(buf)) {\n        buf = Buffer.from(buf);\n    }\n\n    return this.decoder.write(buf);\n}\n\nInternalDecoder.prototype.end = function() {\n    return this.decoder.end();\n}\n\n\n//------------------------------------------------------------------------------\n// Encoder is mostly trivial\n\nfunction InternalEncoder(options, codec) {\n    this.enc = codec.enc;\n}\n\nInternalEncoder.prototype.write = function(str) {\n    return Buffer.from(str, this.enc);\n}\n\nInternalEncoder.prototype.end = function() {\n}\n\n\n//------------------------------------------------------------------------------\n// Except base64 encoder, which must keep its state.\n\nfunction InternalEncoderBase64(options, codec) {\n    this.prevStr = '';\n}\n\nInternalEncoderBase64.prototype.write = function(str) {\n    str = this.prevStr + str;\n    var completeQuads = str.length - (str.length % 4);\n    this.prevStr = str.slice(completeQuads);\n    str = str.slice(0, completeQuads);\n\n    return Buffer.from(str, \"base64\");\n}\n\nInternalEncoderBase64.prototype.end = function() {\n    return Buffer.from(this.prevStr, \"base64\");\n}\n\n\n//------------------------------------------------------------------------------\n// CESU-8 encoder is also special.\n\nfunction InternalEncoderCesu8(options, codec) {\n}\n\nInternalEncoderCesu8.prototype.write = function(str) {\n    var buf = Buffer.alloc(str.length * 3), bufIdx = 0;\n    for (var i = 0; i < str.length; i++) {\n        var charCode = str.charCodeAt(i);\n        // Naive implementation, but it works because CESU-8 is especially easy\n        // to convert from UTF-16 (which all JS strings are encoded in).\n        if (charCode < 0x80)\n            buf[bufIdx++] = charCode;\n        else if (charCode < 0x800) {\n            buf[bufIdx++] = 0xC0 + (charCode >>> 6);\n            buf[bufIdx++] = 0x80 + (charCode & 0x3f);\n        }\n        else { // charCode will always be < 0x10000 in javascript.\n            buf[bufIdx++] = 0xE0 + (charCode >>> 12);\n            buf[bufIdx++] = 0x80 + ((charCode >>> 6) & 0x3f);\n            buf[bufIdx++] = 0x80 + (charCode & 0x3f);\n        }\n    }\n    return buf.slice(0, bufIdx);\n}\n\nInternalEncoderCesu8.prototype.end = function() {\n}\n\n//------------------------------------------------------------------------------\n// CESU-8 decoder is not implemented in Node v4.0+\n\nfunction InternalDecoderCesu8(options, codec) {\n    this.acc = 0;\n    this.contBytes = 0;\n    this.accBytes = 0;\n    this.defaultCharUnicode = codec.defaultCharUnicode;\n}\n\nInternalDecoderCesu8.prototype.write = function(buf) {\n    var acc = this.acc, contBytes = this.contBytes, accBytes = this.accBytes, \n        res = '';\n    for (var i = 0; i < buf.length; i++) {\n        var curByte = buf[i];\n        if ((curByte & 0xC0) !== 0x80) { // Leading byte\n            if (contBytes > 0) { // Previous code is invalid\n                res += this.defaultCharUnicode;\n                contBytes = 0;\n            }\n\n            if (curByte < 0x80) { // Single-byte code\n                res += String.fromCharCode(curByte);\n            } else if (curByte < 0xE0) { // Two-byte code\n                acc = curByte & 0x1F;\n                contBytes = 1; accBytes = 1;\n            } else if (curByte < 0xF0) { // Three-byte code\n                acc = curByte & 0x0F;\n                contBytes = 2; accBytes = 1;\n            } else { // Four or more are not supported for CESU-8.\n                res += this.defaultCharUnicode;\n            }\n        } else { // Continuation byte\n            if (contBytes > 0) { // We're waiting for it.\n                acc = (acc << 6) | (curByte & 0x3f);\n                contBytes--; accBytes++;\n                if (contBytes === 0) {\n                    // Check for overlong encoding, but support Modified UTF-8 (encoding NULL as C0 80)\n                    if (accBytes === 2 && acc < 0x80 && acc > 0)\n                        res += this.defaultCharUnicode;\n                    else if (accBytes === 3 && acc < 0x800)\n                        res += this.defaultCharUnicode;\n                    else\n                        // Actually add character.\n                        res += String.fromCharCode(acc);\n                }\n            } else { // Unexpected continuation byte\n                res += this.defaultCharUnicode;\n            }\n        }\n    }\n    this.acc = acc; this.contBytes = contBytes; this.accBytes = accBytes;\n    return res;\n}\n\nInternalDecoderCesu8.prototype.end = function() {\n    var res = 0;\n    if (this.contBytes > 0)\n        res += this.defaultCharUnicode;\n    return res;\n}\n", "\"use strict\";\nvar Buffer = require(\"safer-buffer\").Buffer;\n\n// Single-byte codec. Needs a 'chars' string parameter that contains 256 or 128 chars that\n// correspond to encoded bytes (if 128 - then lower half is ASCII). \n\nexports._sbcs = SBCSCodec;\nfunction SBCSCodec(codecOptions, iconv) {\n    if (!codecOptions)\n        throw new Error(\"SBCS codec is called without the data.\")\n    \n    // Prepare char buffer for decoding.\n    if (!codecOptions.chars || (codecOptions.chars.length !== 128 && codecOptions.chars.length !== 256))\n        throw new Error(\"Encoding '\"+codecOptions.type+\"' has incorrect 'chars' (must be of len 128 or 256)\");\n    \n    if (codecOptions.chars.length === 128) {\n        var asciiString = \"\";\n        for (var i = 0; i < 128; i++)\n            asciiString += String.fromCharCode(i);\n        codecOptions.chars = asciiString + codecOptions.chars;\n    }\n\n    this.decodeBuf = Buffer.from(codecOptions.chars, 'ucs2');\n    \n    // Encoding buffer.\n    var encodeBuf = Buffer.alloc(65536, iconv.defaultCharSingleByte.charCodeAt(0));\n\n    for (var i = 0; i < codecOptions.chars.length; i++)\n        encodeBuf[codecOptions.chars.charCodeAt(i)] = i;\n\n    this.encodeBuf = encodeBuf;\n}\n\nSBCSCodec.prototype.encoder = SBCSEncoder;\nSBCSCodec.prototype.decoder = SBCSDecoder;\n\n\nfunction SBCSEncoder(options, codec) {\n    this.encodeBuf = codec.encodeBuf;\n}\n\nSBCSEncoder.prototype.write = function(str) {\n    var buf = Buffer.alloc(str.length);\n    for (var i = 0; i < str.length; i++)\n        buf[i] = this.encodeBuf[str.charCodeAt(i)];\n    \n    return buf;\n}\n\nSBCSEncoder.prototype.end = function() {\n}\n\n\nfunction SBCSDecoder(options, codec) {\n    this.decodeBuf = codec.decodeBuf;\n}\n\nSBCSDecoder.prototype.write = function(buf) {\n    // Strings are immutable in JS -> we use ucs2 buffer to speed up computations.\n    var decodeBuf = this.decodeBuf;\n    var newBuf = Buffer.alloc(buf.length*2);\n    var idx1 = 0, idx2 = 0;\n    for (var i = 0; i < buf.length; i++) {\n        idx1 = buf[i]*2; idx2 = i*2;\n        newBuf[idx2] = decodeBuf[idx1];\n        newBuf[idx2+1] = decodeBuf[idx1+1];\n    }\n    return newBuf.toString('ucs2');\n}\n\nSBCSDecoder.prototype.end = function() {\n}\n", "\"use strict\";\n\n// Generated data for sbcs codec. Don't edit manually. Regenerate using generation/gen-sbcs.js script.\nmodule.exports = {\n  \"437\": \"cp437\",\n  \"737\": \"cp737\",\n  \"775\": \"cp775\",\n  \"850\": \"cp850\",\n  \"852\": \"cp852\",\n  \"855\": \"cp855\",\n  \"856\": \"cp856\",\n  \"857\": \"cp857\",\n  \"858\": \"cp858\",\n  \"860\": \"cp860\",\n  \"861\": \"cp861\",\n  \"862\": \"cp862\",\n  \"863\": \"cp863\",\n  \"864\": \"cp864\",\n  \"865\": \"cp865\",\n  \"866\": \"cp866\",\n  \"869\": \"cp869\",\n  \"874\": \"windows874\",\n  \"922\": \"cp922\",\n  \"1046\": \"cp1046\",\n  \"1124\": \"cp1124\",\n  \"1125\": \"cp1125\",\n  \"1129\": \"cp1129\",\n  \"1133\": \"cp1133\",\n  \"1161\": \"cp1161\",\n  \"1162\": \"cp1162\",\n  \"1163\": \"cp1163\",\n  \"1250\": \"windows1250\",\n  \"1251\": \"windows1251\",\n  \"1252\": \"windows1252\",\n  \"1253\": \"windows1253\",\n  \"1254\": \"windows1254\",\n  \"1255\": \"windows1255\",\n  \"1256\": \"windows1256\",\n  \"1257\": \"windows1257\",\n  \"1258\": \"windows1258\",\n  \"28591\": \"iso88591\",\n  \"28592\": \"iso88592\",\n  \"28593\": \"iso88593\",\n  \"28594\": \"iso88594\",\n  \"28595\": \"iso88595\",\n  \"28596\": \"iso88596\",\n  \"28597\": \"iso88597\",\n  \"28598\": \"iso88598\",\n  \"28599\": \"iso88599\",\n  \"28600\": \"iso885910\",\n  \"28601\": \"iso885911\",\n  \"28603\": \"iso885913\",\n  \"28604\": \"iso885914\",\n  \"28605\": \"iso885915\",\n  \"28606\": \"iso885916\",\n  \"windows874\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"€����…�����������‘’“”•–—�������� กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����\"\n  },\n  \"win874\": \"windows874\",\n  \"cp874\": \"windows874\",\n  \"windows1250\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"€�‚�„…†‡�‰Š‹ŚŤŽŹ�‘’“”•–—�™š›śťžź ˇ˘Ł¤Ą¦§¨©Ş«¬­®Ż°±˛ł´µ¶·¸ąş»Ľ˝ľżŔÁÂĂÄĹĆÇČÉĘËĚÍÎĎĐŃŇÓÔŐÖ×ŘŮÚŰÜÝŢßŕáâăäĺćçčéęëěíîďđńňóôőö÷řůúűüýţ˙\"\n  },\n  \"win1250\": \"windows1250\",\n  \"cp1250\": \"windows1250\",\n  \"windows1251\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"ЂЃ‚ѓ„…†‡€‰Љ‹ЊЌЋЏђ‘’“”•–—�™љ›њќћџ ЎўЈ¤Ґ¦§Ё©Є«¬­®Ї°±Ііґµ¶·ё№є»јЅѕїАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя\"\n  },\n  \"win1251\": \"windows1251\",\n  \"cp1251\": \"windows1251\",\n  \"windows1252\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ\"\n  },\n  \"win1252\": \"windows1252\",\n  \"cp1252\": \"windows1252\",\n  \"windows1253\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"€�‚ƒ„…†‡�‰�‹�����‘’“”•–—�™�›���� ΅Ά£¤¥¦§¨©�«¬­®―°±²³΄µ¶·ΈΉΊ»Ό½ΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ�ΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ�\"\n  },\n  \"win1253\": \"windows1253\",\n  \"cp1253\": \"windows1253\",\n  \"windows1254\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"€�‚ƒ„…†‡ˆ‰Š‹Œ����‘’“”•–—˜™š›œ��Ÿ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏĞÑÒÓÔÕÖ×ØÙÚÛÜİŞßàáâãäåæçèéêëìíîïğñòóôõö÷øùúûüışÿ\"\n  },\n  \"win1254\": \"windows1254\",\n  \"cp1254\": \"windows1254\",\n  \"windows1255\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"€�‚ƒ„…†‡ˆ‰�‹�����‘’“”•–—˜™�›���� ¡¢£₪¥¦§¨©×«¬­®¯°±²³´µ¶·¸¹÷»¼½¾¿ְֱֲֳִֵֶַָֹֺֻּֽ־ֿ׀ׁׂ׃װױײ׳״�������אבגדהוזחטיךכלםמןנסעףפץצקרשת��‎‏�\"\n  },\n  \"win1255\": \"windows1255\",\n  \"cp1255\": \"windows1255\",\n  \"windows1256\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"€پ‚ƒ„…†‡ˆ‰ٹ‹Œچژڈگ‘’“”•–—ک™ڑ›œ‌‍ں ،¢£¤¥¦§¨©ھ«¬­®¯°±²³´µ¶·¸¹؛»¼½¾؟ہءآأؤإئابةتثجحخدذرزسشصض×طظعغـفقكàلâمنهوçèéêëىيîïًٌٍَôُِ÷ّùْûü‎‏ے\"\n  },\n  \"win1256\": \"windows1256\",\n  \"cp1256\": \"windows1256\",\n  \"windows1257\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"€�‚�„…†‡�‰�‹�¨ˇ¸�‘’“”•–—�™�›�¯˛� �¢£¤�¦§Ø©Ŗ«¬­®Æ°±²³´µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪÜŻŽßąįāćäåęēčéźėģķīļšńņóōõö÷ųłśūüżž˙\"\n  },\n  \"win1257\": \"windows1257\",\n  \"cp1257\": \"windows1257\",\n  \"windows1258\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"€�‚ƒ„…†‡ˆ‰�‹Œ����‘’“”•–—˜™�›œ��Ÿ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖ×ØÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ\"\n  },\n  \"win1258\": \"windows1258\",\n  \"cp1258\": \"windows1258\",\n  \"iso88591\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \" ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ\"\n  },\n  \"cp28591\": \"iso88591\",\n  \"iso88592\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \" Ą˘Ł¤ĽŚ§¨ŠŞŤŹ­ŽŻ°ą˛ł´ľśˇ¸šşťź˝žżŔÁÂĂÄĹĆÇČÉĘËĚÍÎĎĐŃŇÓÔŐÖ×ŘŮÚŰÜÝŢßŕáâăäĺćçčéęëěíîďđńňóôőö÷řůúűüýţ˙\"\n  },\n  \"cp28592\": \"iso88592\",\n  \"iso88593\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \" Ħ˘£¤�Ĥ§¨İŞĞĴ­�Ż°ħ²³´µĥ·¸ışğĵ½�żÀÁÂ�ÄĊĈÇÈÉÊËÌÍÎÏ�ÑÒÓÔĠÖ×ĜÙÚÛÜŬŜßàáâ�äċĉçèéêëìíîï�ñòóôġö÷ĝùúûüŭŝ˙\"\n  },\n  \"cp28593\": \"iso88593\",\n  \"iso88594\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \" ĄĸŖ¤ĨĻ§¨ŠĒĢŦ­Ž¯°ą˛ŗ´ĩļˇ¸šēģŧŊžŋĀÁÂÃÄÅÆĮČÉĘËĖÍÎĪĐŅŌĶÔÕÖ×ØŲÚÛÜŨŪßāáâãäåæįčéęëėíîīđņōķôõö÷øųúûüũū˙\"\n  },\n  \"cp28594\": \"iso88594\",\n  \"iso88595\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \" ЁЂЃЄЅІЇЈЉЊЋЌ­ЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђѓєѕіїјљњћќ§ўџ\"\n  },\n  \"cp28595\": \"iso88595\",\n  \"iso88596\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \" ���¤�������،­�������������؛���؟�ءآأؤإئابةتثجحخدذرزسشصضطظعغ�����ـفقكلمنهوىيًٌٍَُِّْ�������������\"\n  },\n  \"cp28596\": \"iso88596\",\n  \"iso88597\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \" ‘’£€₯¦§¨©ͺ«¬­�―°±²³΄΅Ά·ΈΉΊ»Ό½ΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ�ΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ�\"\n  },\n  \"cp28597\": \"iso88597\",\n  \"iso88598\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \" �¢£¤¥¦§¨©×«¬­®¯°±²³´µ¶·¸¹÷»¼½¾��������������������������������‗אבגדהוזחטיךכלםמןנסעףפץצקרשת��‎‏�\"\n  },\n  \"cp28598\": \"iso88598\",\n  \"iso88599\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \" ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏĞÑÒÓÔÕÖ×ØÙÚÛÜİŞßàáâãäåæçèéêëìíîïğñòóôõö÷øùúûüışÿ\"\n  },\n  \"cp28599\": \"iso88599\",\n  \"iso885910\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \" ĄĒĢĪĨĶ§ĻĐŠŦŽ­ŪŊ°ąēģīĩķ·ļđšŧž―ūŋĀÁÂÃÄÅÆĮČÉĘËĖÍÎÏÐŅŌÓÔÕÖŨØŲÚÛÜÝÞßāáâãäåæįčéęëėíîïðņōóôõöũøųúûüýþĸ\"\n  },\n  \"cp28600\": \"iso885910\",\n  \"iso885911\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \" กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����\"\n  },\n  \"cp28601\": \"iso885911\",\n  \"iso885913\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \" ”¢£¤„¦§Ø©Ŗ«¬­®Æ°±²³“µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪÜŻŽßąįāćäåęēčéźėģķīļšńņóōõö÷ųłśūüżž’\"\n  },\n  \"cp28603\": \"iso885913\",\n  \"iso885914\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \" Ḃḃ£ĊċḊ§Ẁ©ẂḋỲ­®ŸḞḟĠġṀṁ¶ṖẁṗẃṠỳẄẅṡÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏŴÑÒÓÔÕÖṪØÙÚÛÜÝŶßàáâãäåæçèéêëìíîïŵñòóôõöṫøùúûüýŷÿ\"\n  },\n  \"cp28604\": \"iso885914\",\n  \"iso885915\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \" ¡¢£€¥Š§š©ª«¬­®¯°±²³Žµ¶·ž¹º»ŒœŸ¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ\"\n  },\n  \"cp28605\": \"iso885915\",\n  \"iso885916\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \" ĄąŁ€„Š§š©Ș«Ź­źŻ°±ČłŽ”¶·žčș»ŒœŸżÀÁÂĂÄĆÆÇÈÉÊËÌÍÎÏĐŃÒÓÔŐÖŚŰÙÚÛÜĘȚßàáâăäćæçèéêëìíîïđńòóôőöśűùúûüęțÿ\"\n  },\n  \"cp28606\": \"iso885916\",\n  \"cp437\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñÑªº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ \"\n  },\n  \"ibm437\": \"cp437\",\n  \"csibm437\": \"cp437\",\n  \"cp737\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρσςτυφχψ░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀ωάέήϊίόύϋώΆΈΉΊΌΎΏ±≥≤ΪΫ÷≈°∙·√ⁿ²■ \"\n  },\n  \"ibm737\": \"cp737\",\n  \"csibm737\": \"cp737\",\n  \"cp775\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"ĆüéāäģåćłēŖŗīŹÄÅÉæÆōöĢ¢ŚśÖÜø£Ø×¤ĀĪóŻżź”¦©®¬½¼Ł«»░▒▓│┤ĄČĘĖ╣║╗╝ĮŠ┐└┴┬├─┼ŲŪ╚╔╩╦╠═╬Žąčęėįšųūž┘┌█▄▌▐▀ÓßŌŃõÕµńĶķĻļņĒŅ’­±“¾¶§÷„°∙·¹³²■ \"\n  },\n  \"ibm775\": \"cp775\",\n  \"csibm775\": \"cp775\",\n  \"cp850\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø×ƒáíóúñÑªº¿®¬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ðÐÊËÈıÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµþÞÚÛÙýÝ¯´­±‗¾¶§÷¸°¨·¹³²■ \"\n  },\n  \"ibm850\": \"cp850\",\n  \"csibm850\": \"cp850\",\n  \"cp852\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"ÇüéâäůćçłëŐőîŹÄĆÉĹĺôöĽľŚśÖÜŤťŁ×čáíóúĄąŽžĘę¬źČş«»░▒▓│┤ÁÂĚŞ╣║╗╝Żż┐└┴┬├─┼Ăă╚╔╩╦╠═╬¤đĐĎËďŇÍÎě┘┌█▄ŢŮ▀ÓßÔŃńňŠšŔÚŕŰýÝţ´­˝˛ˇ˘§÷¸°¨˙űŘř■ \"\n  },\n  \"ibm852\": \"cp852\",\n  \"csibm852\": \"cp852\",\n  \"cp855\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"ђЂѓЃёЁєЄѕЅіІїЇјЈљЉњЊћЋќЌўЎџЏюЮъЪаАбБцЦдДеЕфФгГ«»░▒▓│┤хХиИ╣║╗╝йЙ┐└┴┬├─┼кК╚╔╩╦╠═╬¤лЛмМнНоОп┘┌█▄Пя▀ЯрРсСтТуУжЖвВьЬ№­ыЫзЗшШэЭщЩчЧ§■ \"\n  },\n  \"ibm855\": \"cp855\",\n  \"csibm855\": \"cp855\",\n  \"cp856\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"אבגדהוזחטיךכלםמןנסעףפץצקרשת�£�×����������®¬½¼�«»░▒▓│┤���©╣║╗╝¢¥┐└┴┬├─┼��╚╔╩╦╠═╬¤���������┘┌█▄¦�▀������µ�������¯´­±‗¾¶§÷¸°¨·¹³²■ \"\n  },\n  \"ibm856\": \"cp856\",\n  \"csibm856\": \"cp856\",\n  \"cp857\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"ÇüéâäàåçêëèïîıÄÅÉæÆôöòûùİÖÜø£ØŞşáíóúñÑĞğ¿®¬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ºªÊËÈ�ÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµ�×ÚÛÙìÿ¯´­±�¾¶§÷¸°¨·¹³²■ \"\n  },\n  \"ibm857\": \"cp857\",\n  \"csibm857\": \"cp857\",\n  \"cp858\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø×ƒáíóúñÑªº¿®¬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ðÐÊËÈ€ÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµþÞÚÛÙýÝ¯´­±‗¾¶§÷¸°¨·¹³²■ \"\n  },\n  \"ibm858\": \"cp858\",\n  \"csibm858\": \"cp858\",\n  \"cp860\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"ÇüéâãàÁçêÊèÍÔìÃÂÉÀÈôõòÚùÌÕÜ¢£Ù₧ÓáíóúñÑªº¿Ò¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ \"\n  },\n  \"ibm860\": \"cp860\",\n  \"csibm860\": \"cp860\",\n  \"cp861\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"ÇüéâäàåçêëèÐðÞÄÅÉæÆôöþûÝýÖÜø£Ø₧ƒáíóúÁÍÓÚ¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ \"\n  },\n  \"ibm861\": \"cp861\",\n  \"csibm861\": \"cp861\",\n  \"cp862\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"אבגדהוזחטיךכלםמןנסעףפץצקרשת¢£¥₧ƒáíóúñÑªº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ \"\n  },\n  \"ibm862\": \"cp862\",\n  \"csibm862\": \"cp862\",\n  \"cp863\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"ÇüéâÂà¶çêëèïî‗À§ÉÈÊôËÏûù¤ÔÜ¢£ÙÛƒ¦´óú¨¸³¯Î⌐¬½¼¾«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ \"\n  },\n  \"ibm863\": \"cp863\",\n  \"csibm863\": \"cp863\",\n  \"cp864\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\\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 !\\\"#$٪&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~°·∙√▒─│┼┤┬├┴┐┌└┘β∞φ±½¼≈«»ﻷﻸ��ﻻﻼ� ­ﺂ£¤ﺄ��ﺎﺏﺕﺙ،ﺝﺡﺥ٠١٢٣٤٥٦٧٨٩ﻑ؛ﺱﺵﺹ؟¢ﺀﺁﺃﺅﻊﺋﺍﺑﺓﺗﺛﺟﺣﺧﺩﺫﺭﺯﺳﺷﺻﺿﻁﻅﻋﻏ¦¬÷×ﻉـﻓﻗﻛﻟﻣﻧﻫﻭﻯﻳﺽﻌﻎﻍﻡﹽّﻥﻩﻬﻰﻲﻐﻕﻵﻶﻝﻙﻱ■�\"\n  },\n  \"ibm864\": \"cp864\",\n  \"csibm864\": \"cp864\",\n  \"cp865\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø₧ƒáíóúñÑªº¿⌐¬½¼¡«¤░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ \"\n  },\n  \"ibm865\": \"cp865\",\n  \"csibm865\": \"cp865\",\n  \"cp866\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙·√№¤■ \"\n  },\n  \"ibm866\": \"cp866\",\n  \"csibm866\": \"cp866\",\n  \"cp869\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"������Ά�·¬¦‘’Έ―ΉΊΪΌ��ΎΫ©Ώ²³ά£έήίϊΐόύΑΒΓΔΕΖΗ½ΘΙ«»░▒▓│┤ΚΛΜΝ╣║╗╝ΞΟ┐└┴┬├─┼ΠΡ╚╔╩╦╠═╬ΣΤΥΦΧΨΩαβγ┘┌█▄δε▀ζηθικλμνξοπρσςτ΄­±υφχ§ψ΅°¨ωϋΰώ■ \"\n  },\n  \"ibm869\": \"cp869\",\n  \"csibm869\": \"cp869\",\n  \"cp922\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \" ¡¢£¤¥¦§¨©ª«¬­®‾°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏŠÑÒÓÔÕÖ×ØÙÚÛÜÝŽßàáâãäåæçèéêëìíîïšñòóôõö÷øùúûüýžÿ\"\n  },\n  \"ibm922\": \"cp922\",\n  \"csibm922\": \"cp922\",\n  \"cp1046\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"ﺈ×÷ﹱ■│─┐┌└┘ﹹﹻﹽﹿﹷﺊﻰﻳﻲﻎﻏﻐﻶﻸﻺﻼ ¤ﺋﺑﺗﺛﺟﺣ،­ﺧﺳ٠١٢٣٤٥٦٧٨٩ﺷ؛ﺻﺿﻊ؟ﻋءآأؤإئابةتثجحخدذرزسشصضطﻇعغﻌﺂﺄﺎﻓـفقكلمنهوىيًٌٍَُِّْﻗﻛﻟﻵﻷﻹﻻﻣﻧﻬﻩ�\"\n  },\n  \"ibm1046\": \"cp1046\",\n  \"csibm1046\": \"cp1046\",\n  \"cp1124\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \" ЁЂҐЄЅІЇЈЉЊЋЌ­ЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђґєѕіїјљњћќ§ўџ\"\n  },\n  \"ibm1124\": \"cp1124\",\n  \"csibm1124\": \"cp1124\",\n  \"cp1125\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёҐґЄєІіЇї·√№¤■ \"\n  },\n  \"ibm1125\": \"cp1125\",\n  \"csibm1125\": \"cp1125\",\n  \"cp1129\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \" ¡¢£¤¥¦§œ©ª«¬­®¯°±²³Ÿµ¶·Œ¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖ×ØÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ\"\n  },\n  \"ibm1129\": \"cp1129\",\n  \"csibm1129\": \"cp1129\",\n  \"cp1133\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \" ກຂຄງຈສຊຍດຕຖທນບປຜຝພຟມຢຣລວຫອຮ���ຯະາຳິີຶືຸູຼັົຽ���ເແໂໃໄ່້໊໋໌ໍໆ�ໜໝ₭����������������໐໑໒໓໔໕໖໗໘໙��¢¬¦�\"\n  },\n  \"ibm1133\": \"cp1133\",\n  \"csibm1133\": \"cp1133\",\n  \"cp1161\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"��������������������������������่กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู้๊๋€฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛¢¬¦ \"\n  },\n  \"ibm1161\": \"cp1161\",\n  \"csibm1161\": \"cp1161\",\n  \"cp1162\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"€…‘’“”•–— กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����\"\n  },\n  \"ibm1162\": \"cp1162\",\n  \"csibm1162\": \"cp1162\",\n  \"cp1163\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \" ¡¢£€¥¦§œ©ª«¬­®¯°±²³Ÿµ¶·Œ¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖ×ØÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ\"\n  },\n  \"ibm1163\": \"cp1163\",\n  \"csibm1163\": \"cp1163\",\n  \"maccroatian\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®Š™´¨≠ŽØ∞±≤≥∆µ∂∑∏š∫ªºΩžø¿¡¬√ƒ≈Ć«Č… ÀÃÕŒœĐ—“”‘’÷◊�©⁄¤‹›Æ»–·‚„‰ÂćÁčÈÍÎÏÌÓÔđÒÚÛÙıˆ˜¯πË˚¸Êæˇ\"\n  },\n  \"maccyrillic\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°¢£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµ∂ЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю¤\"\n  },\n  \"macgreek\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"Ä¹²É³ÖÜ΅àâä΄¨çéèêë£™îï•½‰ôö¦­ùûü†ΓΔΘΛΞΠß®©ΣΪ§≠°·Α±≤≥¥ΒΕΖΗΙΚΜΦΫΨΩάΝ¬ΟΡ≈Τ«»… ΥΧΆΈœ–―“”‘’÷ΉΊΌΎέήίόΏύαβψδεφγηιξκλμνοπώρστθωςχυζϊϋΐΰ�\"\n  },\n  \"maciceland\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûüÝ°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤ÐðÞþý·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ\"\n  },\n  \"macroman\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›ﬁﬂ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ\"\n  },\n  \"macromania\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ĂŞ∞±≤≥¥µ∂∑∏π∫ªºΩăş¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›Ţţ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ\"\n  },\n  \"macthai\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"«»…“”�•‘’� กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู﻿​–—฿เแโใไๅๆ็่้๊๋์ํ™๏๐๑๒๓๔๕๖๗๘๙®©����\"\n  },\n  \"macturkish\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸĞğİıŞş‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙ�ˆ˜¯˘˙˚¸˝˛ˇ\"\n  },\n  \"macukraine\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°Ґ£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµґЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю¤\"\n  },\n  \"koi8r\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ё╓╔╕╖╗╘╙╚╛╜╝╞╟╠╡Ё╢╣╤╥╦╧╨╩╪╫╬©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ\"\n  },\n  \"koi8u\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ёє╔ії╗╘╙╚╛ґ╝╞╟╠╡ЁЄ╣ІЇ╦╧╨╩╪Ґ╬©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ\"\n  },\n  \"koi8ru\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ёє╔ії╗╘╙╚╛ґў╞╟╠╡ЁЄ╣ІЇ╦╧╨╩╪ҐЎ©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ\"\n  },\n  \"koi8t\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"қғ‚Ғ„…†‡�‰ҳ‹ҲҷҶ�Қ‘’“”•–—�™�›�����ӯӮё¤ӣ¦§���«¬­®�°±²Ё�Ӣ¶·�№�»���©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ\"\n  },\n  \"armscii8\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \" �և։)(»«—.՝,-֊…՜՛՞ԱաԲբԳգԴդԵեԶզԷէԸըԹթԺժԻիԼլԽխԾծԿկՀհՁձՂղՃճՄմՅյՆնՇշՈոՉչՊպՋջՌռՍսՎվՏտՐրՑցՒւՓփՔքՕօՖֆ՚�\"\n  },\n  \"rk1048\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"ЂЃ‚ѓ„…†‡€‰Љ‹ЊҚҺЏђ‘’“”•–—�™љ›њқһџ ҰұӘ¤Ө¦§Ё©Ғ«¬­®Ү°±Ііөµ¶·ё№ғ»әҢңүАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя\"\n  },\n  \"tcvn\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\\u0000ÚỤ\\u0003ỪỬỮ\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010ỨỰỲỶỸÝỴ\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÀẢÃÁẠẶẬÈẺẼÉẸỆÌỈĨÍỊÒỎÕÓỌỘỜỞỠỚỢÙỦŨ ĂÂÊÔƠƯĐăâêôơưđẶ̀̀̉̃́àảãáạẲằẳẵắẴẮẦẨẪẤỀặầẩẫấậèỂẻẽéẹềểễếệìỉỄẾỒĩíịòỔỏõóọồổỗốộờởỡớợùỖủũúụừửữứựỳỷỹýỵỐ\"\n  },\n  \"georgianacademy\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"‚ƒ„…†‡ˆ‰Š‹Œ‘’“”•–—˜™š›œŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿აბგდევზთიკლმნოპჟრსტუფქღყშჩცძწჭხჯჰჱჲჳჴჵჶçèéêëìíîïðñòóôõö÷øùúûüýþÿ\"\n  },\n  \"georgianps\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"‚ƒ„…†‡ˆ‰Š‹Œ‘’“”•–—˜™š›œŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿აბგდევზჱთიკლმნჲოპჟრსტჳუფქღყშჩცძწჭხჴჯჰჵæçèéêëìíîïðñòóôõö÷øùúûüýþÿ\"\n  },\n  \"pt154\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"ҖҒӮғ„…ҶҮҲүҠӢҢҚҺҸҗ‘’“”•–—ҳҷҡӣңқһҹ ЎўЈӨҘҰ§Ё©Ә«¬ӯ®Ҝ°ұІіҙө¶·ё№ә»јҪҫҝАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя\"\n  },\n  \"viscii\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\\u0000\\u0001Ẳ\\u0003\\u0004ẴẪ\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013Ỷ\\u0015\\u0016\\u0017\\u0018Ỹ\\u001a\\u001b\\u001c\\u001dỴ\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ẠẮẰẶẤẦẨẬẼẸẾỀỂỄỆỐỒỔỖỘỢỚỜỞỊỎỌỈỦŨỤỲÕắằặấầẩậẽẹếềểễệốồổỗỠƠộờởịỰỨỪỬơớƯÀÁÂÃẢĂẳẵÈÉÊẺÌÍĨỳĐứÒÓÔạỷừửÙÚỹỵÝỡưàáâãảăữẫèéêẻìíĩỉđựòóôõỏọụùúũủýợỮ\"\n  },\n  \"iso646cn\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\\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 !\\\"#¥%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}‾��������������������������������������������������������������������������������������������������������������������������������\"\n  },\n  \"iso646jp\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\\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 !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[¥]^_`abcdefghijklmnopqrstuvwxyz{|}‾��������������������������������������������������������������������������������������������������������������������������������\"\n  },\n  \"hproman8\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \" ÀÂÈÊËÎÏ´ˋˆ¨˜ÙÛ₤¯Ýý°ÇçÑñ¡¿¤£¥§ƒ¢âêôûáéóúàèòùäëöüÅîØÆåíøæÄìÖÜÉïßÔÁÃãÐðÍÌÓÒÕõŠšÚŸÿÞþ·µ¶¾—¼½ªº«■»±�\"\n  },\n  \"macintosh\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›ﬁﬂ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ\"\n  },\n  \"ascii\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"��������������������������������������������������������������������������������������������������������������������������������\"\n  },\n  \"tis620\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"���������������������������������กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����\"\n  }\n}", "\"use strict\";\n\n// Manually added data to be used by sbcs codec in addition to generated one.\n\nmodule.exports = {\n    // Not supported by iconv, not sure why.\n    \"10029\": \"maccenteuro\",\n    \"maccenteuro\": {\n        \"type\": \"_sbcs\",\n        \"chars\": \"ÄĀāÉĄÖÜáąČäčĆćéŹźĎíďĒēĖóėôöõúĚěü†°Ę£§•¶ß®©™ę¨≠ģĮįĪ≤≥īĶ∂∑łĻļĽľĹĺŅņŃ¬√ńŇ∆«»… ňŐÕőŌ–—“”‘’÷◊ōŔŕŘ‹›řŖŗŠ‚„šŚśÁŤťÍŽžŪÓÔūŮÚůŰűŲųÝýķŻŁżĢˇ\"\n    },\n\n    \"808\": \"cp808\",\n    \"ibm808\": \"cp808\",\n    \"cp808\": {\n        \"type\": \"_sbcs\",\n        \"chars\": \"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙·√№€■ \"\n    },\n\n    \"mik\": {\n        \"type\": \"_sbcs\",\n        \"chars\": \"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя└┴┬├─┼╣║╚╔╩╦╠═╬┐░▒▓│┤№§╗╝┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ \"\n    },\n\n    \"cp720\": {\n        \"type\": \"_sbcs\",\n        \"chars\": \"\\x80\\x81éâ\\x84à\\x86çêëèïî\\x8d\\x8e\\x8f\\x90\\u0651\\u0652ô¤ـûùءآأؤ£إئابةتثجحخدذرزسشص«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀ضطظعغفµقكلمنهوىي≡\\u064b\\u064c\\u064d\\u064e\\u064f\\u0650≈°∙·√ⁿ²■\\u00a0\"\n    },\n\n    // Aliases of generated encodings.\n    \"ascii8bit\": \"ascii\",\n    \"usascii\": \"ascii\",\n    \"ansix34\": \"ascii\",\n    \"ansix341968\": \"ascii\",\n    \"ansix341986\": \"ascii\",\n    \"csascii\": \"ascii\",\n    \"cp367\": \"ascii\",\n    \"ibm367\": \"ascii\",\n    \"isoir6\": \"ascii\",\n    \"iso646us\": \"ascii\",\n    \"iso646irv\": \"ascii\",\n    \"us\": \"ascii\",\n\n    \"latin1\": \"iso88591\",\n    \"latin2\": \"iso88592\",\n    \"latin3\": \"iso88593\",\n    \"latin4\": \"iso88594\",\n    \"latin5\": \"iso88599\",\n    \"latin6\": \"iso885910\",\n    \"latin7\": \"iso885913\",\n    \"latin8\": \"iso885914\",\n    \"latin9\": \"iso885915\",\n    \"latin10\": \"iso885916\",\n\n    \"csisolatin1\": \"iso88591\",\n    \"csisolatin2\": \"iso88592\",\n    \"csisolatin3\": \"iso88593\",\n    \"csisolatin4\": \"iso88594\",\n    \"csisolatincyrillic\": \"iso88595\",\n    \"csisolatinarabic\": \"iso88596\",\n    \"csisolatingreek\" : \"iso88597\",\n    \"csisolatinhebrew\": \"iso88598\",\n    \"csisolatin5\": \"iso88599\",\n    \"csisolatin6\": \"iso885910\",\n\n    \"l1\": \"iso88591\",\n    \"l2\": \"iso88592\",\n    \"l3\": \"iso88593\",\n    \"l4\": \"iso88594\",\n    \"l5\": \"iso88599\",\n    \"l6\": \"iso885910\",\n    \"l7\": \"iso885913\",\n    \"l8\": \"iso885914\",\n    \"l9\": \"iso885915\",\n    \"l10\": \"iso885916\",\n\n    \"isoir14\": \"iso646jp\",\n    \"isoir57\": \"iso646cn\",\n    \"isoir100\": \"iso88591\",\n    \"isoir101\": \"iso88592\",\n    \"isoir109\": \"iso88593\",\n    \"isoir110\": \"iso88594\",\n    \"isoir144\": \"iso88595\",\n    \"isoir127\": \"iso88596\",\n    \"isoir126\": \"iso88597\",\n    \"isoir138\": \"iso88598\",\n    \"isoir148\": \"iso88599\",\n    \"isoir157\": \"iso885910\",\n    \"isoir166\": \"tis620\",\n    \"isoir179\": \"iso885913\",\n    \"isoir199\": \"iso885914\",\n    \"isoir203\": \"iso885915\",\n    \"isoir226\": \"iso885916\",\n\n    \"cp819\": \"iso88591\",\n    \"ibm819\": \"iso88591\",\n\n    \"cyrillic\": \"iso88595\",\n\n    \"arabic\": \"iso88596\",\n    \"arabic8\": \"iso88596\",\n    \"ecma114\": \"iso88596\",\n    \"asmo708\": \"iso88596\",\n\n    \"greek\" : \"iso88597\",\n    \"greek8\" : \"iso88597\",\n    \"ecma118\" : \"iso88597\",\n    \"elot928\" : \"iso88597\",\n\n    \"hebrew\": \"iso88598\",\n    \"hebrew8\": \"iso88598\",\n\n    \"turkish\": \"iso88599\",\n    \"turkish8\": \"iso88599\",\n\n    \"thai\": \"iso885911\",\n    \"thai8\": \"iso885911\",\n\n    \"celtic\": \"iso885914\",\n    \"celtic8\": \"iso885914\",\n    \"isoceltic\": \"iso885914\",\n\n    \"tis6200\": \"tis620\",\n    \"tis62025291\": \"tis620\",\n    \"tis62025330\": \"tis620\",\n\n    \"10000\": \"macroman\",\n    \"10006\": \"macgreek\",\n    \"10007\": \"maccyrillic\",\n    \"10079\": \"maciceland\",\n    \"10081\": \"macturkish\",\n\n    \"cspc8codepage437\": \"cp437\",\n    \"cspc775baltic\": \"cp775\",\n    \"cspc850multilingual\": \"cp850\",\n    \"cspcp852\": \"cp852\",\n    \"cspc862latinhebrew\": \"cp862\",\n    \"cpgr\": \"cp869\",\n\n    \"msee\": \"cp1250\",\n    \"mscyrl\": \"cp1251\",\n    \"msansi\": \"cp1252\",\n    \"msgreek\": \"cp1253\",\n    \"msturk\": \"cp1254\",\n    \"mshebr\": \"cp1255\",\n    \"msarab\": \"cp1256\",\n    \"winbaltrim\": \"cp1257\",\n\n    \"cp20866\": \"koi8r\",\n    \"20866\": \"koi8r\",\n    \"ibm878\": \"koi8r\",\n    \"cskoi8r\": \"koi8r\",\n\n    \"cp21866\": \"koi8u\",\n    \"21866\": \"koi8u\",\n    \"ibm1168\": \"koi8u\",\n\n    \"strk10482002\": \"rk1048\",\n\n    \"tcvn5712\": \"tcvn\",\n    \"tcvn57121\": \"tcvn\",\n\n    \"gb198880\": \"iso646cn\",\n    \"cn\": \"iso646cn\",\n\n    \"csiso14jisc6220ro\": \"iso646jp\",\n    \"jisc62201969ro\": \"iso646jp\",\n    \"jp\": \"iso646jp\",\n\n    \"cshproman8\": \"hproman8\",\n    \"r8\": \"hproman8\",\n    \"roman8\": \"hproman8\",\n    \"xroman8\": \"hproman8\",\n    \"ibm1051\": \"hproman8\",\n\n    \"mac\": \"macintosh\",\n    \"csmacintosh\": \"macintosh\",\n};\n\n", "\"use strict\";\nvar Buffer = require(\"safer-buffer\").Buffer;\n\n// Note: UTF16-LE (or UCS2) codec is Node.js native. See encodings/internal.js\n\n// == UTF16-BE codec. ==========================================================\n\nexports.utf16be = Utf16BECodec;\nfunction Utf16BECodec() {\n}\n\nUtf16BECodec.prototype.encoder = Utf16BEEncoder;\nUtf16BECodec.prototype.decoder = Utf16BEDecoder;\nUtf16BECodec.prototype.bomAware = true;\n\n\n// -- Encoding\n\nfunction Utf16BEEncoder() {\n}\n\nUtf16BEEncoder.prototype.write = function(str) {\n    var buf = Buffer.from(str, 'ucs2');\n    for (var i = 0; i < buf.length; i += 2) {\n        var tmp = buf[i]; buf[i] = buf[i+1]; buf[i+1] = tmp;\n    }\n    return buf;\n}\n\nUtf16BEEncoder.prototype.end = function() {\n}\n\n\n// -- Decoding\n\nfunction Utf16BEDecoder() {\n    this.overflowByte = -1;\n}\n\nUtf16BEDecoder.prototype.write = function(buf) {\n    if (buf.length == 0)\n        return '';\n\n    var buf2 = Buffer.alloc(buf.length + 1),\n        i = 0, j = 0;\n\n    if (this.overflowByte !== -1) {\n        buf2[0] = buf[0];\n        buf2[1] = this.overflowByte;\n        i = 1; j = 2;\n    }\n\n    for (; i < buf.length-1; i += 2, j+= 2) {\n        buf2[j] = buf[i+1];\n        buf2[j+1] = buf[i];\n    }\n\n    this.overflowByte = (i == buf.length-1) ? buf[buf.length-1] : -1;\n\n    return buf2.slice(0, j).toString('ucs2');\n}\n\nUtf16BEDecoder.prototype.end = function() {\n    this.overflowByte = -1;\n}\n\n\n// == UTF-16 codec =============================================================\n// Decoder chooses automatically from UTF-16LE and UTF-16BE using BOM and space-based heuristic.\n// Defaults to UTF-16LE, as it's prevalent and default in Node.\n// http://en.wikipedia.org/wiki/UTF-16 and http://encoding.spec.whatwg.org/#utf-16le\n// Decoder default can be changed: iconv.decode(buf, 'utf16', {defaultEncoding: 'utf-16be'});\n\n// Encoder uses UTF-16LE and prepends BOM (which can be overridden with addBOM: false).\n\nexports.utf16 = Utf16Codec;\nfunction Utf16Codec(codecOptions, iconv) {\n    this.iconv = iconv;\n}\n\nUtf16Codec.prototype.encoder = Utf16Encoder;\nUtf16Codec.prototype.decoder = Utf16Decoder;\n\n\n// -- Encoding (pass-through)\n\nfunction Utf16Encoder(options, codec) {\n    options = options || {};\n    if (options.addBOM === undefined)\n        options.addBOM = true;\n    this.encoder = codec.iconv.getEncoder('utf-16le', options);\n}\n\nUtf16Encoder.prototype.write = function(str) {\n    return this.encoder.write(str);\n}\n\nUtf16Encoder.prototype.end = function() {\n    return this.encoder.end();\n}\n\n\n// -- Decoding\n\nfunction Utf16Decoder(options, codec) {\n    this.decoder = null;\n    this.initialBufs = [];\n    this.initialBufsLen = 0;\n\n    this.options = options || {};\n    this.iconv = codec.iconv;\n}\n\nUtf16Decoder.prototype.write = function(buf) {\n    if (!this.decoder) {\n        // Codec is not chosen yet. Accumulate initial bytes.\n        this.initialBufs.push(buf);\n        this.initialBufsLen += buf.length;\n        \n        if (this.initialBufsLen < 16) // We need more bytes to use space heuristic (see below)\n            return '';\n\n        // We have enough bytes -> detect endianness.\n        var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding);\n        this.decoder = this.iconv.getDecoder(encoding, this.options);\n\n        var resStr = '';\n        for (var i = 0; i < this.initialBufs.length; i++)\n            resStr += this.decoder.write(this.initialBufs[i]);\n\n        this.initialBufs.length = this.initialBufsLen = 0;\n        return resStr;\n    }\n\n    return this.decoder.write(buf);\n}\n\nUtf16Decoder.prototype.end = function() {\n    if (!this.decoder) {\n        var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding);\n        this.decoder = this.iconv.getDecoder(encoding, this.options);\n\n        var resStr = '';\n        for (var i = 0; i < this.initialBufs.length; i++)\n            resStr += this.decoder.write(this.initialBufs[i]);\n\n        var trail = this.decoder.end();\n        if (trail)\n            resStr += trail;\n\n        this.initialBufs.length = this.initialBufsLen = 0;\n        return resStr;\n    }\n    return this.decoder.end();\n}\n\nfunction detectEncoding(bufs, defaultEncoding) {\n    var b = [];\n    var charsProcessed = 0;\n    var asciiCharsLE = 0, asciiCharsBE = 0; // Number of ASCII chars when decoded as LE or BE.\n\n    outer_loop:\n    for (var i = 0; i < bufs.length; i++) {\n        var buf = bufs[i];\n        for (var j = 0; j < buf.length; j++) {\n            b.push(buf[j]);\n            if (b.length === 2) {\n                if (charsProcessed === 0) {\n                    // Check BOM first.\n                    if (b[0] === 0xFF && b[1] === 0xFE) return 'utf-16le';\n                    if (b[0] === 0xFE && b[1] === 0xFF) return 'utf-16be';\n                }\n\n                if (b[0] === 0 && b[1] !== 0) asciiCharsBE++;\n                if (b[0] !== 0 && b[1] === 0) asciiCharsLE++;\n\n                b.length = 0;\n                charsProcessed++;\n\n                if (charsProcessed >= 100) {\n                    break outer_loop;\n                }\n            }\n        }\n    }\n\n    // Make decisions.\n    // Most of the time, the content has ASCII chars (U+00**), but the opposite (U+**00) is uncommon.\n    // So, we count ASCII as if it was LE or BE, and decide from that.\n    if (asciiCharsBE > asciiCharsLE) return 'utf-16be';\n    if (asciiCharsBE < asciiCharsLE) return 'utf-16le';\n\n    // Couldn't decide (likely all zeros or not enough data).\n    return defaultEncoding || 'utf-16le';\n}\n\n\n", "'use strict';\n\nvar Buffer = require('safer-buffer').Buffer;\n\n// == UTF32-LE/BE codec. ==========================================================\n\nexports._utf32 = Utf32Codec;\n\nfunction Utf32Codec(codecOptions, iconv) {\n    this.iconv = iconv;\n    this.bomAware = true;\n    this.isLE = codecOptions.isLE;\n}\n\nexports.utf32le = { type: '_utf32', isLE: true };\nexports.utf32be = { type: '_utf32', isLE: false };\n\n// Aliases\nexports.ucs4le = 'utf32le';\nexports.ucs4be = 'utf32be';\n\nUtf32Codec.prototype.encoder = Utf32Encoder;\nUtf32Codec.prototype.decoder = Utf32Decoder;\n\n// -- Encoding\n\nfunction Utf32Encoder(options, codec) {\n    this.isLE = codec.isLE;\n    this.highSurrogate = 0;\n}\n\nUtf32Encoder.prototype.write = function(str) {\n    var src = Buffer.from(str, 'ucs2');\n    var dst = Buffer.alloc(src.length * 2);\n    var write32 = this.isLE ? dst.writeUInt32LE : dst.writeUInt32BE;\n    var offset = 0;\n\n    for (var i = 0; i < src.length; i += 2) {\n        var code = src.readUInt16LE(i);\n        var isHighSurrogate = (0xD800 <= code && code < 0xDC00);\n        var isLowSurrogate = (0xDC00 <= code && code < 0xE000);\n\n        if (this.highSurrogate) {\n            if (isHighSurrogate || !isLowSurrogate) {\n                // There shouldn't be two high surrogates in a row, nor a high surrogate which isn't followed by a low\n                // surrogate. If this happens, keep the pending high surrogate as a stand-alone semi-invalid character\n                // (technically wrong, but expected by some applications, like Windows file names).\n                write32.call(dst, this.highSurrogate, offset);\n                offset += 4;\n            }\n            else {\n                // Create 32-bit value from high and low surrogates;\n                var codepoint = (((this.highSurrogate - 0xD800) << 10) | (code - 0xDC00)) + 0x10000;\n\n                write32.call(dst, codepoint, offset);\n                offset += 4;\n                this.highSurrogate = 0;\n\n                continue;\n            }\n        }\n\n        if (isHighSurrogate)\n            this.highSurrogate = code;\n        else {\n            // Even if the current character is a low surrogate, with no previous high surrogate, we'll\n            // encode it as a semi-invalid stand-alone character for the same reasons expressed above for\n            // unpaired high surrogates.\n            write32.call(dst, code, offset);\n            offset += 4;\n            this.highSurrogate = 0;\n        }\n    }\n\n    if (offset < dst.length)\n        dst = dst.slice(0, offset);\n\n    return dst;\n};\n\nUtf32Encoder.prototype.end = function() {\n    // Treat any leftover high surrogate as a semi-valid independent character.\n    if (!this.highSurrogate)\n        return;\n\n    var buf = Buffer.alloc(4);\n\n    if (this.isLE)\n        buf.writeUInt32LE(this.highSurrogate, 0);\n    else\n        buf.writeUInt32BE(this.highSurrogate, 0);\n\n    this.highSurrogate = 0;\n\n    return buf;\n};\n\n// -- Decoding\n\nfunction Utf32Decoder(options, codec) {\n    this.isLE = codec.isLE;\n    this.badChar = codec.iconv.defaultCharUnicode.charCodeAt(0);\n    this.overflow = [];\n}\n\nUtf32Decoder.prototype.write = function(src) {\n    if (src.length === 0)\n        return '';\n\n    var i = 0;\n    var codepoint = 0;\n    var dst = Buffer.alloc(src.length + 4);\n    var offset = 0;\n    var isLE = this.isLE;\n    var overflow = this.overflow;\n    var badChar = this.badChar;\n\n    if (overflow.length > 0) {\n        for (; i < src.length && overflow.length < 4; i++)\n            overflow.push(src[i]);\n        \n        if (overflow.length === 4) {\n            // NOTE: codepoint is a signed int32 and can be negative.\n            // NOTE: We copied this block from below to help V8 optimize it (it works with array, not buffer).\n            if (isLE) {\n                codepoint = overflow[i] | (overflow[i+1] << 8) | (overflow[i+2] << 16) | (overflow[i+3] << 24);\n            } else {\n                codepoint = overflow[i+3] | (overflow[i+2] << 8) | (overflow[i+1] << 16) | (overflow[i] << 24);\n            }\n            overflow.length = 0;\n\n            offset = _writeCodepoint(dst, offset, codepoint, badChar);\n        }\n    }\n\n    // Main loop. Should be as optimized as possible.\n    for (; i < src.length - 3; i += 4) {\n        // NOTE: codepoint is a signed int32 and can be negative.\n        if (isLE) {\n            codepoint = src[i] | (src[i+1] << 8) | (src[i+2] << 16) | (src[i+3] << 24);\n        } else {\n            codepoint = src[i+3] | (src[i+2] << 8) | (src[i+1] << 16) | (src[i] << 24);\n        }\n        offset = _writeCodepoint(dst, offset, codepoint, badChar);\n    }\n\n    // Keep overflowing bytes.\n    for (; i < src.length; i++) {\n        overflow.push(src[i]);\n    }\n\n    return dst.slice(0, offset).toString('ucs2');\n};\n\nfunction _writeCodepoint(dst, offset, codepoint, badChar) {\n    // NOTE: codepoint is signed int32 and can be negative. We keep it that way to help V8 with optimizations.\n    if (codepoint < 0 || codepoint > 0x10FFFF) {\n        // Not a valid Unicode codepoint\n        codepoint = badChar;\n    } \n\n    // Ephemeral Planes: Write high surrogate.\n    if (codepoint >= 0x10000) {\n        codepoint -= 0x10000;\n\n        var high = 0xD800 | (codepoint >> 10);\n        dst[offset++] = high & 0xff;\n        dst[offset++] = high >> 8;\n\n        // Low surrogate is written below.\n        var codepoint = 0xDC00 | (codepoint & 0x3FF);\n    }\n\n    // Write BMP char or low surrogate.\n    dst[offset++] = codepoint & 0xff;\n    dst[offset++] = codepoint >> 8;\n\n    return offset;\n};\n\nUtf32Decoder.prototype.end = function() {\n    this.overflow.length = 0;\n};\n\n// == UTF-32 Auto codec =============================================================\n// Decoder chooses automatically from UTF-32LE and UTF-32BE using BOM and space-based heuristic.\n// Defaults to UTF-32LE. http://en.wikipedia.org/wiki/UTF-32\n// Encoder/decoder default can be changed: iconv.decode(buf, 'utf32', {defaultEncoding: 'utf-32be'});\n\n// Encoder prepends BOM (which can be overridden with (addBOM: false}).\n\nexports.utf32 = Utf32AutoCodec;\nexports.ucs4 = 'utf32';\n\nfunction Utf32AutoCodec(options, iconv) {\n    this.iconv = iconv;\n}\n\nUtf32AutoCodec.prototype.encoder = Utf32AutoEncoder;\nUtf32AutoCodec.prototype.decoder = Utf32AutoDecoder;\n\n// -- Encoding\n\nfunction Utf32AutoEncoder(options, codec) {\n    options = options || {};\n\n    if (options.addBOM === undefined)\n        options.addBOM = true;\n\n    this.encoder = codec.iconv.getEncoder(options.defaultEncoding || 'utf-32le', options);\n}\n\nUtf32AutoEncoder.prototype.write = function(str) {\n    return this.encoder.write(str);\n};\n\nUtf32AutoEncoder.prototype.end = function() {\n    return this.encoder.end();\n};\n\n// -- Decoding\n\nfunction Utf32AutoDecoder(options, codec) {\n    this.decoder = null;\n    this.initialBufs = [];\n    this.initialBufsLen = 0;\n    this.options = options || {};\n    this.iconv = codec.iconv;\n}\n\nUtf32AutoDecoder.prototype.write = function(buf) {\n    if (!this.decoder) { \n        // Codec is not chosen yet. Accumulate initial bytes.\n        this.initialBufs.push(buf);\n        this.initialBufsLen += buf.length;\n\n        if (this.initialBufsLen < 32) // We need more bytes to use space heuristic (see below)\n            return '';\n\n        // We have enough bytes -> detect endianness.\n        var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding);\n        this.decoder = this.iconv.getDecoder(encoding, this.options);\n\n        var resStr = '';\n        for (var i = 0; i < this.initialBufs.length; i++)\n            resStr += this.decoder.write(this.initialBufs[i]);\n\n        this.initialBufs.length = this.initialBufsLen = 0;\n        return resStr;\n    }\n\n    return this.decoder.write(buf);\n};\n\nUtf32AutoDecoder.prototype.end = function() {\n    if (!this.decoder) {\n        var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding);\n        this.decoder = this.iconv.getDecoder(encoding, this.options);\n\n        var resStr = '';\n        for (var i = 0; i < this.initialBufs.length; i++)\n            resStr += this.decoder.write(this.initialBufs[i]);\n\n        var trail = this.decoder.end();\n        if (trail)\n            resStr += trail;\n\n        this.initialBufs.length = this.initialBufsLen = 0;\n        return resStr;\n    }\n\n    return this.decoder.end();\n};\n\nfunction detectEncoding(bufs, defaultEncoding) {\n    var b = [];\n    var charsProcessed = 0;\n    var invalidLE = 0, invalidBE = 0;   // Number of invalid chars when decoded as LE or BE.\n    var bmpCharsLE = 0, bmpCharsBE = 0; // Number of BMP chars when decoded as LE or BE.\n\n    outer_loop:\n    for (var i = 0; i < bufs.length; i++) {\n        var buf = bufs[i];\n        for (var j = 0; j < buf.length; j++) {\n            b.push(buf[j]);\n            if (b.length === 4) {\n                if (charsProcessed === 0) {\n                    // Check BOM first.\n                    if (b[0] === 0xFF && b[1] === 0xFE && b[2] === 0 && b[3] === 0) {\n                        return 'utf-32le';\n                    }\n                    if (b[0] === 0 && b[1] === 0 && b[2] === 0xFE && b[3] === 0xFF) {\n                        return 'utf-32be';\n                    }\n                }\n\n                if (b[0] !== 0 || b[1] > 0x10) invalidBE++;\n                if (b[3] !== 0 || b[2] > 0x10) invalidLE++;\n\n                if (b[0] === 0 && b[1] === 0 && (b[2] !== 0 || b[3] !== 0)) bmpCharsBE++;\n                if ((b[0] !== 0 || b[1] !== 0) && b[2] === 0 && b[3] === 0) bmpCharsLE++;\n\n                b.length = 0;\n                charsProcessed++;\n\n                if (charsProcessed >= 100) {\n                    break outer_loop;\n                }\n            }\n        }\n    }\n\n    // Make decisions.\n    if (bmpCharsBE - invalidBE > bmpCharsLE - invalidLE)  return 'utf-32be';\n    if (bmpCharsBE - invalidBE < bmpCharsLE - invalidLE)  return 'utf-32le';\n\n    // Couldn't decide (likely all zeros or not enough data).\n    return defaultEncoding || 'utf-32le';\n}\n", "\"use strict\";\nvar Buffer = require(\"safer-buffer\").Buffer;\n\n// UTF-7 codec, according to https://tools.ietf.org/html/rfc2152\n// See also below a UTF-7-IMAP codec, according to http://tools.ietf.org/html/rfc3501#section-5.1.3\n\nexports.utf7 = Utf7Codec;\nexports.unicode11utf7 = 'utf7'; // Alias UNICODE-1-1-UTF-7\nfunction Utf7Codec(codecOptions, iconv) {\n    this.iconv = iconv;\n};\n\nUtf7Codec.prototype.encoder = Utf7Encoder;\nUtf7Codec.prototype.decoder = Utf7Decoder;\nUtf7Codec.prototype.bomAware = true;\n\n\n// -- Encoding\n\nvar nonDirectChars = /[^A-Za-z0-9'\\(\\),-\\.\\/:\\? \\n\\r\\t]+/g;\n\nfunction Utf7Encoder(options, codec) {\n    this.iconv = codec.iconv;\n}\n\nUtf7Encoder.prototype.write = function(str) {\n    // Naive implementation.\n    // Non-direct chars are encoded as \"+<base64>-\"; single \"+\" char is encoded as \"+-\".\n    return Buffer.from(str.replace(nonDirectChars, function(chunk) {\n        return \"+\" + (chunk === '+' ? '' : \n            this.iconv.encode(chunk, 'utf16-be').toString('base64').replace(/=+$/, '')) \n            + \"-\";\n    }.bind(this)));\n}\n\nUtf7Encoder.prototype.end = function() {\n}\n\n\n// -- Decoding\n\nfunction Utf7Decoder(options, codec) {\n    this.iconv = codec.iconv;\n    this.inBase64 = false;\n    this.base64Accum = '';\n}\n\nvar base64Regex = /[A-Za-z0-9\\/+]/;\nvar base64Chars = [];\nfor (var i = 0; i < 256; i++)\n    base64Chars[i] = base64Regex.test(String.fromCharCode(i));\n\nvar plusChar = '+'.charCodeAt(0), \n    minusChar = '-'.charCodeAt(0),\n    andChar = '&'.charCodeAt(0);\n\nUtf7Decoder.prototype.write = function(buf) {\n    var res = \"\", lastI = 0,\n        inBase64 = this.inBase64,\n        base64Accum = this.base64Accum;\n\n    // The decoder is more involved as we must handle chunks in stream.\n\n    for (var i = 0; i < buf.length; i++) {\n        if (!inBase64) { // We're in direct mode.\n            // Write direct chars until '+'\n            if (buf[i] == plusChar) {\n                res += this.iconv.decode(buf.slice(lastI, i), \"ascii\"); // Write direct chars.\n                lastI = i+1;\n                inBase64 = true;\n            }\n        } else { // We decode base64.\n            if (!base64Chars[buf[i]]) { // Base64 ended.\n                if (i == lastI && buf[i] == minusChar) {// \"+-\" -> \"+\"\n                    res += \"+\";\n                } else {\n                    var b64str = base64Accum + this.iconv.decode(buf.slice(lastI, i), \"ascii\");\n                    res += this.iconv.decode(Buffer.from(b64str, 'base64'), \"utf16-be\");\n                }\n\n                if (buf[i] != minusChar) // Minus is absorbed after base64.\n                    i--;\n\n                lastI = i+1;\n                inBase64 = false;\n                base64Accum = '';\n            }\n        }\n    }\n\n    if (!inBase64) {\n        res += this.iconv.decode(buf.slice(lastI), \"ascii\"); // Write direct chars.\n    } else {\n        var b64str = base64Accum + this.iconv.decode(buf.slice(lastI), \"ascii\");\n\n        var canBeDecoded = b64str.length - (b64str.length % 8); // Minimal chunk: 2 quads -> 2x3 bytes -> 3 chars.\n        base64Accum = b64str.slice(canBeDecoded); // The rest will be decoded in future.\n        b64str = b64str.slice(0, canBeDecoded);\n\n        res += this.iconv.decode(Buffer.from(b64str, 'base64'), \"utf16-be\");\n    }\n\n    this.inBase64 = inBase64;\n    this.base64Accum = base64Accum;\n\n    return res;\n}\n\nUtf7Decoder.prototype.end = function() {\n    var res = \"\";\n    if (this.inBase64 && this.base64Accum.length > 0)\n        res = this.iconv.decode(Buffer.from(this.base64Accum, 'base64'), \"utf16-be\");\n\n    this.inBase64 = false;\n    this.base64Accum = '';\n    return res;\n}\n\n\n// UTF-7-IMAP codec.\n// RFC3501 Sec. 5.1.3 Modified UTF-7 (http://tools.ietf.org/html/rfc3501#section-5.1.3)\n// Differences:\n//  * Base64 part is started by \"&\" instead of \"+\"\n//  * Direct characters are 0x20-0x7E, except \"&\" (0x26)\n//  * In Base64, \",\" is used instead of \"/\"\n//  * Base64 must not be used to represent direct characters.\n//  * No implicit shift back from Base64 (should always end with '-')\n//  * String must end in non-shifted position.\n//  * \"-&\" while in base64 is not allowed.\n\n\nexports.utf7imap = Utf7IMAPCodec;\nfunction Utf7IMAPCodec(codecOptions, iconv) {\n    this.iconv = iconv;\n};\n\nUtf7IMAPCodec.prototype.encoder = Utf7IMAPEncoder;\nUtf7IMAPCodec.prototype.decoder = Utf7IMAPDecoder;\nUtf7IMAPCodec.prototype.bomAware = true;\n\n\n// -- Encoding\n\nfunction Utf7IMAPEncoder(options, codec) {\n    this.iconv = codec.iconv;\n    this.inBase64 = false;\n    this.base64Accum = Buffer.alloc(6);\n    this.base64AccumIdx = 0;\n}\n\nUtf7IMAPEncoder.prototype.write = function(str) {\n    var inBase64 = this.inBase64,\n        base64Accum = this.base64Accum,\n        base64AccumIdx = this.base64AccumIdx,\n        buf = Buffer.alloc(str.length*5 + 10), bufIdx = 0;\n\n    for (var i = 0; i < str.length; i++) {\n        var uChar = str.charCodeAt(i);\n        if (0x20 <= uChar && uChar <= 0x7E) { // Direct character or '&'.\n            if (inBase64) {\n                if (base64AccumIdx > 0) {\n                    bufIdx += buf.write(base64Accum.slice(0, base64AccumIdx).toString('base64').replace(/\\//g, ',').replace(/=+$/, ''), bufIdx);\n                    base64AccumIdx = 0;\n                }\n\n                buf[bufIdx++] = minusChar; // Write '-', then go to direct mode.\n                inBase64 = false;\n            }\n\n            if (!inBase64) {\n                buf[bufIdx++] = uChar; // Write direct character\n\n                if (uChar === andChar)  // Ampersand -> '&-'\n                    buf[bufIdx++] = minusChar;\n            }\n\n        } else { // Non-direct character\n            if (!inBase64) {\n                buf[bufIdx++] = andChar; // Write '&', then go to base64 mode.\n                inBase64 = true;\n            }\n            if (inBase64) {\n                base64Accum[base64AccumIdx++] = uChar >> 8;\n                base64Accum[base64AccumIdx++] = uChar & 0xFF;\n\n                if (base64AccumIdx == base64Accum.length) {\n                    bufIdx += buf.write(base64Accum.toString('base64').replace(/\\//g, ','), bufIdx);\n                    base64AccumIdx = 0;\n                }\n            }\n        }\n    }\n\n    this.inBase64 = inBase64;\n    this.base64AccumIdx = base64AccumIdx;\n\n    return buf.slice(0, bufIdx);\n}\n\nUtf7IMAPEncoder.prototype.end = function() {\n    var buf = Buffer.alloc(10), bufIdx = 0;\n    if (this.inBase64) {\n        if (this.base64AccumIdx > 0) {\n            bufIdx += buf.write(this.base64Accum.slice(0, this.base64AccumIdx).toString('base64').replace(/\\//g, ',').replace(/=+$/, ''), bufIdx);\n            this.base64AccumIdx = 0;\n        }\n\n        buf[bufIdx++] = minusChar; // Write '-', then go to direct mode.\n        this.inBase64 = false;\n    }\n\n    return buf.slice(0, bufIdx);\n}\n\n\n// -- Decoding\n\nfunction Utf7IMAPDecoder(options, codec) {\n    this.iconv = codec.iconv;\n    this.inBase64 = false;\n    this.base64Accum = '';\n}\n\nvar base64IMAPChars = base64Chars.slice();\nbase64IMAPChars[','.charCodeAt(0)] = true;\n\nUtf7IMAPDecoder.prototype.write = function(buf) {\n    var res = \"\", lastI = 0,\n        inBase64 = this.inBase64,\n        base64Accum = this.base64Accum;\n\n    // The decoder is more involved as we must handle chunks in stream.\n    // It is forgiving, closer to standard UTF-7 (for example, '-' is optional at the end).\n\n    for (var i = 0; i < buf.length; i++) {\n        if (!inBase64) { // We're in direct mode.\n            // Write direct chars until '&'\n            if (buf[i] == andChar) {\n                res += this.iconv.decode(buf.slice(lastI, i), \"ascii\"); // Write direct chars.\n                lastI = i+1;\n                inBase64 = true;\n            }\n        } else { // We decode base64.\n            if (!base64IMAPChars[buf[i]]) { // Base64 ended.\n                if (i == lastI && buf[i] == minusChar) { // \"&-\" -> \"&\"\n                    res += \"&\";\n                } else {\n                    var b64str = base64Accum + this.iconv.decode(buf.slice(lastI, i), \"ascii\").replace(/,/g, '/');\n                    res += this.iconv.decode(Buffer.from(b64str, 'base64'), \"utf16-be\");\n                }\n\n                if (buf[i] != minusChar) // Minus may be absorbed after base64.\n                    i--;\n\n                lastI = i+1;\n                inBase64 = false;\n                base64Accum = '';\n            }\n        }\n    }\n\n    if (!inBase64) {\n        res += this.iconv.decode(buf.slice(lastI), \"ascii\"); // Write direct chars.\n    } else {\n        var b64str = base64Accum + this.iconv.decode(buf.slice(lastI), \"ascii\").replace(/,/g, '/');\n\n        var canBeDecoded = b64str.length - (b64str.length % 8); // Minimal chunk: 2 quads -> 2x3 bytes -> 3 chars.\n        base64Accum = b64str.slice(canBeDecoded); // The rest will be decoded in future.\n        b64str = b64str.slice(0, canBeDecoded);\n\n        res += this.iconv.decode(Buffer.from(b64str, 'base64'), \"utf16-be\");\n    }\n\n    this.inBase64 = inBase64;\n    this.base64Accum = base64Accum;\n\n    return res;\n}\n\nUtf7IMAPDecoder.prototype.end = function() {\n    var res = \"\";\n    if (this.inBase64 && this.base64Accum.length > 0)\n        res = this.iconv.decode(Buffer.from(this.base64Accum, 'base64'), \"utf16-be\");\n\n    this.inBase64 = false;\n    this.base64Accum = '';\n    return res;\n}\n\n\n", "\"use strict\";\n\nvar BOMChar = '\\uFEFF';\n\nexports.PrependBOM = PrependBOMWrapper\nfunction PrependBOMWrapper(encoder, options) {\n    this.encoder = encoder;\n    this.addBOM = true;\n}\n\nPrependBOMWrapper.prototype.write = function(str) {\n    if (this.addBOM) {\n        str = BOMChar + str;\n        this.addBOM = false;\n    }\n\n    return this.encoder.write(str);\n}\n\nPrependBOMWrapper.prototype.end = function() {\n    return this.encoder.end();\n}\n\n\n//------------------------------------------------------------------------------\n\nexports.StripBOM = StripBOMWrapper;\nfunction StripBOMWrapper(decoder, options) {\n    this.decoder = decoder;\n    this.pass = false;\n    this.options = options || {};\n}\n\nStripBOMWrapper.prototype.write = function(buf) {\n    var res = this.decoder.write(buf);\n    if (this.pass || !res)\n        return res;\n\n    if (res[0] === BOMChar) {\n        res = res.slice(1);\n        if (typeof this.options.stripBOM === 'function')\n            this.options.stripBOM();\n    }\n\n    this.pass = true;\n    return res;\n}\n\nStripBOMWrapper.prototype.end = function() {\n    return this.decoder.end();\n}\n\n", "\"use strict\";\n\nvar Buffer = require(\"safer-buffer\").Buffer;\n\nvar bomHandling = require(\"./bom-handling\"),\n    iconv = module.exports;\n\n// All codecs and aliases are kept here, keyed by encoding name/alias.\n// They are lazy loaded in `iconv.getCodec` from `encodings/index.js`.\niconv.encodings = null;\n\n// Characters emitted in case of error.\niconv.defaultCharUnicode = '�';\niconv.defaultCharSingleByte = '?';\n\n// Public API.\niconv.encode = function encode(str, encoding, options) {\n    str = \"\" + (str || \"\"); // Ensure string.\n\n    var encoder = iconv.getEncoder(encoding, options);\n\n    var res = encoder.write(str);\n    var trail = encoder.end();\n    \n    return (trail && trail.length > 0) ? Buffer.concat([res, trail]) : res;\n}\n\niconv.decode = function decode(buf, encoding, options) {\n    if (typeof buf === 'string') {\n        if (!iconv.skipDecodeWarning) {\n            console.error('Iconv-lite warning: decode()-ing strings is deprecated. Refer to https://github.com/ashtuchkin/iconv-lite/wiki/Use-Buffers-when-decoding');\n            iconv.skipDecodeWarning = true;\n        }\n\n        buf = Buffer.from(\"\" + (buf || \"\"), \"binary\"); // Ensure buffer.\n    }\n\n    var decoder = iconv.getDecoder(encoding, options);\n\n    var res = decoder.write(buf);\n    var trail = decoder.end();\n\n    return trail ? (res + trail) : res;\n}\n\niconv.encodingExists = function encodingExists(enc) {\n    try {\n        iconv.getCodec(enc);\n        return true;\n    } catch (e) {\n        return false;\n    }\n}\n\n// Legacy aliases to convert functions\niconv.toEncoding = iconv.encode;\niconv.fromEncoding = iconv.decode;\n\n// Search for a codec in iconv.encodings. Cache codec data in iconv._codecDataCache.\niconv._codecDataCache = {};\niconv.getCodec = function getCodec(encoding) {\n    if (!iconv.encodings)\n        iconv.encodings = require(\"../encodings\"); // Lazy load all encoding definitions.\n    \n    // Canonicalize encoding name: strip all non-alphanumeric chars and appended year.\n    var enc = iconv._canonicalizeEncoding(encoding);\n\n    // Traverse iconv.encodings to find actual codec.\n    var codecOptions = {};\n    while (true) {\n        var codec = iconv._codecDataCache[enc];\n        if (codec)\n            return codec;\n\n        var codecDef = iconv.encodings[enc];\n\n        switch (typeof codecDef) {\n            case \"string\": // Direct alias to other encoding.\n                enc = codecDef;\n                break;\n\n            case \"object\": // Alias with options. Can be layered.\n                for (var key in codecDef)\n                    codecOptions[key] = codecDef[key];\n\n                if (!codecOptions.encodingName)\n                    codecOptions.encodingName = enc;\n                \n                enc = codecDef.type;\n                break;\n\n            case \"function\": // Codec itself.\n                if (!codecOptions.encodingName)\n                    codecOptions.encodingName = enc;\n\n                // The codec function must load all tables and return object with .encoder and .decoder methods.\n                // It'll be called only once (for each different options object).\n                codec = new codecDef(codecOptions, iconv);\n\n                iconv._codecDataCache[codecOptions.encodingName] = codec; // Save it to be reused later.\n                return codec;\n\n            default:\n                throw new Error(\"Encoding not recognized: '\" + encoding + \"' (searched as: '\"+enc+\"')\");\n        }\n    }\n}\n\niconv._canonicalizeEncoding = function(encoding) {\n    // Canonicalize encoding name: strip all non-alphanumeric chars and appended year.\n    return (''+encoding).toLowerCase().replace(/:\\d{4}$|[^0-9a-z]/g, \"\");\n}\n\niconv.getEncoder = function getEncoder(encoding, options) {\n    var codec = iconv.getCodec(encoding),\n        encoder = new codec.encoder(options, codec);\n\n    if (codec.bomAware && options && options.addBOM)\n        encoder = new bomHandling.PrependBOM(encoder, options);\n\n    return encoder;\n}\n\niconv.getDecoder = function getDecoder(encoding, options) {\n    var codec = iconv.getCodec(encoding),\n        decoder = new codec.decoder(options, codec);\n\n    if (codec.bomAware && !(options && options.stripBOM === false))\n        decoder = new bomHandling.StripBOM(decoder, options);\n\n    return decoder;\n}\n\n// Streaming API\n// NOTE: Streaming API naturally depends on 'stream' module from Node.js. Unfortunately in browser environments this module can add\n// up to 100Kb to the output bundle. To avoid unnecessary code bloat, we don't enable Streaming API in browser by default.\n// If you would like to enable it explicitly, please add the following code to your app:\n// > iconv.enableStreamingAPI(require('stream'));\niconv.enableStreamingAPI = function enableStreamingAPI(stream_module) {\n    if (iconv.supportsStreams)\n        return;\n\n    // Dependency-inject stream module to create IconvLite stream classes.\n    var streams = require(\"./streams\")(stream_module);\n\n    // Not public API yet, but expose the stream classes.\n    iconv.IconvLiteEncoderStream = streams.IconvLiteEncoderStream;\n    iconv.IconvLiteDecoderStream = streams.IconvLiteDecoderStream;\n\n    // Streaming API.\n    iconv.encodeStream = function encodeStream(encoding, options) {\n        return new iconv.IconvLiteEncoderStream(iconv.getEncoder(encoding, options), options);\n    }\n\n    iconv.decodeStream = function decodeStream(encoding, options) {\n        return new iconv.IconvLiteDecoderStream(iconv.getDecoder(encoding, options), options);\n    }\n\n    iconv.supportsStreams = true;\n}\n\n// Enable Streaming API automatically if 'stream' module is available and non-empty (the majority of environments).\nvar stream_module;\ntry {\n    stream_module = require(\"stream\");\n} catch (e) {}\n\nif (stream_module && stream_module.Transform) {\n    iconv.enableStreamingAPI(stream_module);\n\n} else {\n    // In rare cases where 'stream' module is not available by default, throw a helpful exception.\n    iconv.encodeStream = iconv.decodeStream = function() {\n        throw new Error(\"iconv-lite Streaming API is not enabled. Use iconv.enableStreamingAPI(require('stream')); to enable it.\");\n    };\n}\n\nif (\"Ā\" != \"\\u0100\") {\n    console.error(\"iconv-lite warning: js files use non-utf8 encoding. See https://github.com/ashtuchkin/iconv-lite/wiki/Javascript-source-file-encodings for more info.\");\n}\n", "\"use strict\";\n\nvar Buffer = require(\"safer-buffer\").Buffer;\n\n// NOTE: Due to 'stream' module being pretty large (~100Kb, significant in browser environments), \n// we opt to dependency-inject it instead of creating a hard dependency.\nmodule.exports = function(stream_module) {\n    var Transform = stream_module.Transform;\n\n    // == Encoder stream =======================================================\n\n    function IconvLiteEncoderStream(conv, options) {\n        this.conv = conv;\n        options = options || {};\n        options.decodeStrings = false; // We accept only strings, so we don't need to decode them.\n        Transform.call(this, options);\n    }\n\n    IconvLiteEncoderStream.prototype = Object.create(Transform.prototype, {\n        constructor: { value: IconvLiteEncoderStream }\n    });\n\n    IconvLiteEncoderStream.prototype._transform = function(chunk, encoding, done) {\n        if (typeof chunk != 'string')\n            return done(new Error(\"Iconv encoding stream needs strings as its input.\"));\n        try {\n            var res = this.conv.write(chunk);\n            if (res && res.length) this.push(res);\n            done();\n        }\n        catch (e) {\n            done(e);\n        }\n    }\n\n    IconvLiteEncoderStream.prototype._flush = function(done) {\n        try {\n            var res = this.conv.end();\n            if (res && res.length) this.push(res);\n            done();\n        }\n        catch (e) {\n            done(e);\n        }\n    }\n\n    IconvLiteEncoderStream.prototype.collect = function(cb) {\n        var chunks = [];\n        this.on('error', cb);\n        this.on('data', function(chunk) { chunks.push(chunk); });\n        this.on('end', function() {\n            cb(null, Buffer.concat(chunks));\n        });\n        return this;\n    }\n\n\n    // == Decoder stream =======================================================\n\n    function IconvLiteDecoderStream(conv, options) {\n        this.conv = conv;\n        options = options || {};\n        options.encoding = this.encoding = 'utf8'; // We output strings.\n        Transform.call(this, options);\n    }\n\n    IconvLiteDecoderStream.prototype = Object.create(Transform.prototype, {\n        constructor: { value: IconvLiteDecoderStream }\n    });\n\n    IconvLiteDecoderStream.prototype._transform = function(chunk, encoding, done) {\n        if (!Buffer.isBuffer(chunk) && !(chunk instanceof Uint8Array))\n            return done(new Error(\"Iconv decoding stream needs buffers as its input.\"));\n        try {\n            var res = this.conv.write(chunk);\n            if (res && res.length) this.push(res, this.encoding);\n            done();\n        }\n        catch (e) {\n            done(e);\n        }\n    }\n\n    IconvLiteDecoderStream.prototype._flush = function(done) {\n        try {\n            var res = this.conv.end();\n            if (res && res.length) this.push(res, this.encoding);                \n            done();\n        }\n        catch (e) {\n            done(e);\n        }\n    }\n\n    IconvLiteDecoderStream.prototype.collect = function(cb) {\n        var res = '';\n        this.on('error', cb);\n        this.on('data', function(chunk) { res += chunk; });\n        this.on('end', function() {\n            cb(null, res);\n        });\n        return this;\n    }\n\n    return {\n        IconvLiteEncoderStream: IconvLiteEncoderStream,\n        IconvLiteDecoderStream: IconvLiteDecoderStream,\n    };\n};\n", "/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n  var e, m\n  var eLen = (nBytes * 8) - mLen - 1\n  var eMax = (1 << eLen) - 1\n  var eBias = eMax >> 1\n  var nBits = -7\n  var i = isLE ? (nBytes - 1) : 0\n  var d = isLE ? -1 : 1\n  var s = buffer[offset + i]\n\n  i += d\n\n  e = s & ((1 << (-nBits)) - 1)\n  s >>= (-nBits)\n  nBits += eLen\n  for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n  m = e & ((1 << (-nBits)) - 1)\n  e >>= (-nBits)\n  nBits += mLen\n  for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n  if (e === 0) {\n    e = 1 - eBias\n  } else if (e === eMax) {\n    return m ? NaN : ((s ? -1 : 1) * Infinity)\n  } else {\n    m = m + Math.pow(2, mLen)\n    e = e - eBias\n  }\n  return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n  var e, m, c\n  var eLen = (nBytes * 8) - mLen - 1\n  var eMax = (1 << eLen) - 1\n  var eBias = eMax >> 1\n  var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n  var i = isLE ? 0 : (nBytes - 1)\n  var d = isLE ? 1 : -1\n  var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n  value = Math.abs(value)\n\n  if (isNaN(value) || value === Infinity) {\n    m = isNaN(value) ? 1 : 0\n    e = eMax\n  } else {\n    e = Math.floor(Math.log(value) / Math.LN2)\n    if (value * (c = Math.pow(2, -e)) < 1) {\n      e--\n      c *= 2\n    }\n    if (e + eBias >= 1) {\n      value += rt / c\n    } else {\n      value += rt * Math.pow(2, 1 - eBias)\n    }\n    if (value * c >= 2) {\n      e++\n      c /= 2\n    }\n\n    if (e + eBias >= eMax) {\n      m = 0\n      e = eMax\n    } else if (e + eBias >= 1) {\n      m = ((value * c) - 1) * Math.pow(2, mLen)\n      e = e + eBias\n    } else {\n      m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n      e = 0\n    }\n  }\n\n  for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n  e = (e << mLen) | m\n  eLen += mLen\n  for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n  buffer[offset + i - d] |= s * 128\n}\n", "if (typeof Object.create === 'function') {\n  // implementation from standard node.js 'util' module\n  module.exports = function inherits(ctor, superCtor) {\n    if (superCtor) {\n      ctor.super_ = superCtor\n      ctor.prototype = Object.create(superCtor.prototype, {\n        constructor: {\n          value: ctor,\n          enumerable: false,\n          writable: true,\n          configurable: true\n        }\n      })\n    }\n  };\n} else {\n  // old school shim for old browsers\n  module.exports = function inherits(ctor, superCtor) {\n    if (superCtor) {\n      ctor.super_ = superCtor\n      var TempCtor = function () {}\n      TempCtor.prototype = superCtor.prototype\n      ctor.prototype = new TempCtor()\n      ctor.prototype.constructor = ctor\n    }\n  }\n}\n", "'use strict';\n\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar callBound = require('call-bind/callBound');\n\nvar $toString = callBound('Object.prototype.toString');\n\nvar isStandardArguments = function isArguments(value) {\n\tif (hasToStringTag && value && typeof value === 'object' && Symbol.toStringTag in value) {\n\t\treturn false;\n\t}\n\treturn $toString(value) === '[object Arguments]';\n};\n\nvar isLegacyArguments = function isArguments(value) {\n\tif (isStandardArguments(value)) {\n\t\treturn true;\n\t}\n\treturn value !== null &&\n\t\ttypeof value === 'object' &&\n\t\ttypeof value.length === 'number' &&\n\t\tvalue.length >= 0 &&\n\t\t$toString(value) !== '[object Array]' &&\n\t\t$toString(value.callee) === '[object Function]';\n};\n\nvar supportsStandardArguments = (function () {\n\treturn isStandardArguments(arguments);\n}());\n\nisStandardArguments.isLegacyArguments = isLegacyArguments; // for tests\n\nmodule.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments;\n", "'use strict';\n\nvar fnToStr = Function.prototype.toString;\nvar reflectApply = typeof Reflect === 'object' && Reflect !== null && Reflect.apply;\nvar badArrayLike;\nvar isCallableMarker;\nif (typeof reflectApply === 'function' && typeof Object.defineProperty === 'function') {\n\ttry {\n\t\tbadArrayLike = Object.defineProperty({}, 'length', {\n\t\t\tget: function () {\n\t\t\t\tthrow isCallableMarker;\n\t\t\t}\n\t\t});\n\t\tisCallableMarker = {};\n\t\t// eslint-disable-next-line no-throw-literal\n\t\treflectApply(function () { throw 42; }, null, badArrayLike);\n\t} catch (_) {\n\t\tif (_ !== isCallableMarker) {\n\t\t\treflectApply = null;\n\t\t}\n\t}\n} else {\n\treflectApply = null;\n}\n\nvar constructorRegex = /^\\s*class\\b/;\nvar isES6ClassFn = function isES6ClassFunction(value) {\n\ttry {\n\t\tvar fnStr = fnToStr.call(value);\n\t\treturn constructorRegex.test(fnStr);\n\t} catch (e) {\n\t\treturn false; // not a function\n\t}\n};\n\nvar tryFunctionObject = function tryFunctionToStr(value) {\n\ttry {\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tfnToStr.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar toStr = Object.prototype.toString;\nvar objectClass = '[object Object]';\nvar fnClass = '[object Function]';\nvar genClass = '[object GeneratorFunction]';\nvar ddaClass = '[object HTMLAllCollection]'; // IE 11\nvar ddaClass2 = '[object HTML document.all class]';\nvar ddaClass3 = '[object HTMLCollection]'; // IE 9-10\nvar hasToStringTag = typeof Symbol === 'function' && !!Symbol.toStringTag; // better: use `has-tostringtag`\n\nvar isIE68 = !(0 in [,]); // eslint-disable-line no-sparse-arrays, comma-spacing\n\nvar isDDA = function isDocumentDotAll() { return false; };\nif (typeof document === 'object') {\n\t// Firefox 3 canonicalizes DDA to undefined when it's not accessed directly\n\tvar all = document.all;\n\tif (toStr.call(all) === toStr.call(document.all)) {\n\t\tisDDA = function isDocumentDotAll(value) {\n\t\t\t/* globals document: false */\n\t\t\t// in IE 6-8, typeof document.all is \"object\" and it's truthy\n\t\t\tif ((isIE68 || !value) && (typeof value === 'undefined' || typeof value === 'object')) {\n\t\t\t\ttry {\n\t\t\t\t\tvar str = toStr.call(value);\n\t\t\t\t\treturn (\n\t\t\t\t\t\tstr === ddaClass\n\t\t\t\t\t\t|| str === ddaClass2\n\t\t\t\t\t\t|| str === ddaClass3 // opera 12.16\n\t\t\t\t\t\t|| str === objectClass // IE 6-8\n\t\t\t\t\t) && value('') == null; // eslint-disable-line eqeqeq\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\t}\n}\n\nmodule.exports = reflectApply\n\t? function isCallable(value) {\n\t\tif (isDDA(value)) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\ttry {\n\t\t\treflectApply(value, null, badArrayLike);\n\t\t} catch (e) {\n\t\t\tif (e !== isCallableMarker) { return false; }\n\t\t}\n\t\treturn !isES6ClassFn(value) && tryFunctionObject(value);\n\t}\n\t: function isCallable(value) {\n\t\tif (isDDA(value)) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\tif (hasToStringTag) { return tryFunctionObject(value); }\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tvar strClass = toStr.call(value);\n\t\tif (strClass !== fnClass && strClass !== genClass && !(/^\\[object HTML/).test(strClass)) { return false; }\n\t\treturn tryFunctionObject(value);\n\t};\n", "'use strict';\n\nvar getDay = Date.prototype.getDay;\nvar tryDateObject = function tryDateGetDayCall(value) {\n\ttry {\n\t\tgetDay.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\n\nvar toStr = Object.prototype.toString;\nvar dateClass = '[object Date]';\nvar hasToStringTag = require('has-tostringtag/shams')();\n\nmodule.exports = function isDateObject(value) {\n\tif (typeof value !== 'object' || value === null) {\n\t\treturn false;\n\t}\n\treturn hasToStringTag ? tryDateObject(value) : toStr.call(value) === dateClass;\n};\n", "'use strict';\n\nvar toStr = Object.prototype.toString;\nvar fnToStr = Function.prototype.toString;\nvar isFnRegex = /^\\s*(?:function)?\\*/;\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar getProto = Object.getPrototypeOf;\nvar getGeneratorFunc = function () { // eslint-disable-line consistent-return\n\tif (!hasToStringTag) {\n\t\treturn false;\n\t}\n\ttry {\n\t\treturn Function('return function*() {}')();\n\t} catch (e) {\n\t}\n};\nvar GeneratorFunction;\n\nmodule.exports = function isGeneratorFunction(fn) {\n\tif (typeof fn !== 'function') {\n\t\treturn false;\n\t}\n\tif (isFnRegex.test(fnToStr.call(fn))) {\n\t\treturn true;\n\t}\n\tif (!hasToStringTag) {\n\t\tvar str = toStr.call(fn);\n\t\treturn str === '[object GeneratorFunction]';\n\t}\n\tif (!getProto) {\n\t\treturn false;\n\t}\n\tif (typeof GeneratorFunction === 'undefined') {\n\t\tvar generatorFunc = getGeneratorFunc();\n\t\tGeneratorFunction = generatorFunc ? getProto(generatorFunc) : false;\n\t}\n\treturn getProto(fn) === GeneratorFunction;\n};\n", "'use strict';\n\n/* http://www.ecma-international.org/ecma-262/6.0/#sec-number.isnan */\n\nmodule.exports = function isNaN(value) {\n\treturn value !== value;\n};\n", "'use strict';\n\nvar callBind = require('call-bind');\nvar define = require('define-properties');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar polyfill = callBind(getPolyfill(), Number);\n\n/* http://www.ecma-international.org/ecma-262/6.0/#sec-number.isnan */\n\ndefine(polyfill, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = polyfill;\n", "'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = function getPolyfill() {\n\tif (Number.isNaN && Number.isNaN(NaN) && !Number.isNaN('a')) {\n\t\treturn Number.isNaN;\n\t}\n\treturn implementation;\n};\n", "'use strict';\n\nvar define = require('define-properties');\nvar getPolyfill = require('./polyfill');\n\n/* http://www.ecma-international.org/ecma-262/6.0/#sec-number.isnan */\n\nmodule.exports = function shimNumberIsNaN() {\n\tvar polyfill = getPolyfill();\n\tdefine(Number, { isNaN: polyfill }, {\n\t\tisNaN: function testIsNaN() {\n\t\t\treturn Number.isNaN !== polyfill;\n\t\t}\n\t});\n\treturn polyfill;\n};\n", "'use strict';\n\nvar callBound = require('call-bind/callBound');\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar has;\nvar $exec;\nvar isRegexMarker;\nvar badStringifier;\n\nif (hasToStringTag) {\n\thas = callBound('Object.prototype.hasOwnProperty');\n\t$exec = callBound('RegExp.prototype.exec');\n\tisRegexMarker = {};\n\n\tvar throwRegexMarker = function () {\n\t\tthrow isRegexMarker;\n\t};\n\tbadStringifier = {\n\t\ttoString: throwRegexMarker,\n\t\tvalueOf: throwRegexMarker\n\t};\n\n\tif (typeof Symbol.toPrimitive === 'symbol') {\n\t\tbadStringifier[Symbol.toPrimitive] = throwRegexMarker;\n\t}\n}\n\nvar $toString = callBound('Object.prototype.toString');\nvar gOPD = Object.getOwnPropertyDescriptor;\nvar regexClass = '[object RegExp]';\n\nmodule.exports = hasToStringTag\n\t// eslint-disable-next-line consistent-return\n\t? function isRegex(value) {\n\t\tif (!value || typeof value !== 'object') {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar descriptor = gOPD(value, 'lastIndex');\n\t\tvar hasLastIndexDataProperty = descriptor && has(descriptor, 'value');\n\t\tif (!hasLastIndexDataProperty) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttry {\n\t\t\t$exec(value, badStringifier);\n\t\t} catch (e) {\n\t\t\treturn e === isRegexMarker;\n\t\t}\n\t}\n\t: function isRegex(value) {\n\t\t// In older browsers, typeof regex incorrectly returns 'function'\n\t\tif (!value || (typeof value !== 'object' && typeof value !== 'function')) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn $toString(value) === regexClass;\n\t};\n", "'use strict';\n\nvar forEach = require('for-each');\nvar availableTypedArrays = require('available-typed-arrays');\nvar callBound = require('call-bind/callBound');\n\nvar $toString = callBound('Object.prototype.toString');\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar gOPD = require('gopd');\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\nvar typedArrays = availableTypedArrays();\n\nvar $indexOf = callBound('Array.prototype.indexOf', true) || function indexOf(array, value) {\n\tfor (var i = 0; i < array.length; i += 1) {\n\t\tif (array[i] === value) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n};\nvar $slice = callBound('String.prototype.slice');\nvar toStrTags = {};\nvar getPrototypeOf = Object.getPrototypeOf; // require('getprototypeof');\nif (hasToStringTag && gOPD && getPrototypeOf) {\n\tforEach(typedArrays, function (typedArray) {\n\t\tvar arr = new g[typedArray]();\n\t\tif (Symbol.toStringTag in arr) {\n\t\t\tvar proto = getPrototypeOf(arr);\n\t\t\tvar descriptor = gOPD(proto, Symbol.toStringTag);\n\t\t\tif (!descriptor) {\n\t\t\t\tvar superProto = getPrototypeOf(proto);\n\t\t\t\tdescriptor = gOPD(superProto, Symbol.toStringTag);\n\t\t\t}\n\t\t\ttoStrTags[typedArray] = descriptor.get;\n\t\t}\n\t});\n}\n\nvar tryTypedArrays = function tryAllTypedArrays(value) {\n\tvar anyTrue = false;\n\tforEach(toStrTags, function (getter, typedArray) {\n\t\tif (!anyTrue) {\n\t\t\ttry {\n\t\t\t\tanyTrue = getter.call(value) === typedArray;\n\t\t\t} catch (e) { /**/ }\n\t\t}\n\t});\n\treturn anyTrue;\n};\n\nmodule.exports = function isTypedArray(value) {\n\tif (!value || typeof value !== 'object') { return false; }\n\tif (!hasToStringTag || !(Symbol.toStringTag in value)) {\n\t\tvar tag = $slice($toString(value), 8, -1);\n\t\treturn $indexOf(typedArrays, tag) > -1;\n\t}\n\tif (!gOPD) { return false; }\n\treturn tryTypedArrays(value);\n};\n", "'use strict';\n\nvar numberIsNaN = function (value) {\n\treturn value !== value;\n};\n\nmodule.exports = function is(a, b) {\n\tif (a === 0 && b === 0) {\n\t\treturn 1 / a === 1 / b;\n\t}\n\tif (a === b) {\n\t\treturn true;\n\t}\n\tif (numberIsNaN(a) && numberIsNaN(b)) {\n\t\treturn true;\n\t}\n\treturn false;\n};\n\n", "'use strict';\n\nvar define = require('define-properties');\nvar callBind = require('call-bind');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar polyfill = callBind(getPolyfill(), Object);\n\ndefine(polyfill, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = polyfill;\n", "'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = function getPolyfill() {\n\treturn typeof Object.is === 'function' ? Object.is : implementation;\n};\n", "'use strict';\n\nvar getPolyfill = require('./polyfill');\nvar define = require('define-properties');\n\nmodule.exports = function shimObjectIs() {\n\tvar polyfill = getPolyfill();\n\tdefine(Object, { is: polyfill }, {\n\t\tis: function testObjectIs() {\n\t\t\treturn Object.is !== polyfill;\n\t\t}\n\t});\n\treturn polyfill;\n};\n", "'use strict';\n\nvar keysShim;\nif (!Object.keys) {\n\t// modified from https://github.com/es-shims/es5-shim\n\tvar has = Object.prototype.hasOwnProperty;\n\tvar toStr = Object.prototype.toString;\n\tvar isArgs = require('./isArguments'); // eslint-disable-line global-require\n\tvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\tvar hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');\n\tvar hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');\n\tvar dontEnums = [\n\t\t'toString',\n\t\t'toLocaleString',\n\t\t'valueOf',\n\t\t'hasOwnProperty',\n\t\t'isPrototypeOf',\n\t\t'propertyIsEnumerable',\n\t\t'constructor'\n\t];\n\tvar equalsConstructorPrototype = function (o) {\n\t\tvar ctor = o.constructor;\n\t\treturn ctor && ctor.prototype === o;\n\t};\n\tvar excludedKeys = {\n\t\t$applicationCache: true,\n\t\t$console: true,\n\t\t$external: true,\n\t\t$frame: true,\n\t\t$frameElement: true,\n\t\t$frames: true,\n\t\t$innerHeight: true,\n\t\t$innerWidth: true,\n\t\t$onmozfullscreenchange: true,\n\t\t$onmozfullscreenerror: true,\n\t\t$outerHeight: true,\n\t\t$outerWidth: true,\n\t\t$pageXOffset: true,\n\t\t$pageYOffset: true,\n\t\t$parent: true,\n\t\t$scrollLeft: true,\n\t\t$scrollTop: true,\n\t\t$scrollX: true,\n\t\t$scrollY: true,\n\t\t$self: true,\n\t\t$webkitIndexedDB: true,\n\t\t$webkitStorageInfo: true,\n\t\t$window: true\n\t};\n\tvar hasAutomationEqualityBug = (function () {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined') { return false; }\n\t\tfor (var k in window) {\n\t\t\ttry {\n\t\t\t\tif (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tequalsConstructorPrototype(window[k]);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}());\n\tvar equalsConstructorPrototypeIfNotBuggy = function (o) {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined' || !hasAutomationEqualityBug) {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t}\n\t\ttry {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tkeysShim = function keys(object) {\n\t\tvar isObject = object !== null && typeof object === 'object';\n\t\tvar isFunction = toStr.call(object) === '[object Function]';\n\t\tvar isArguments = isArgs(object);\n\t\tvar isString = isObject && toStr.call(object) === '[object String]';\n\t\tvar theKeys = [];\n\n\t\tif (!isObject && !isFunction && !isArguments) {\n\t\t\tthrow new TypeError('Object.keys called on a non-object');\n\t\t}\n\n\t\tvar skipProto = hasProtoEnumBug && isFunction;\n\t\tif (isString && object.length > 0 && !has.call(object, 0)) {\n\t\t\tfor (var i = 0; i < object.length; ++i) {\n\t\t\t\ttheKeys.push(String(i));\n\t\t\t}\n\t\t}\n\n\t\tif (isArguments && object.length > 0) {\n\t\t\tfor (var j = 0; j < object.length; ++j) {\n\t\t\t\ttheKeys.push(String(j));\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var name in object) {\n\t\t\t\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\n\t\t\t\t\ttheKeys.push(String(name));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (hasDontEnumBug) {\n\t\t\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\n\n\t\t\tfor (var k = 0; k < dontEnums.length; ++k) {\n\t\t\t\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\n\t\t\t\t\ttheKeys.push(dontEnums[k]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn theKeys;\n\t};\n}\nmodule.exports = keysShim;\n", "'use strict';\n\nvar slice = Array.prototype.slice;\nvar isArgs = require('./isArguments');\n\nvar origKeys = Object.keys;\nvar keysShim = origKeys ? function keys(o) { return origKeys(o); } : require('./implementation');\n\nvar originalKeys = Object.keys;\n\nkeysShim.shim = function shimObjectKeys() {\n\tif (Object.keys) {\n\t\tvar keysWorksWithArguments = (function () {\n\t\t\t// Safari 5.0 bug\n\t\t\tvar args = Object.keys(arguments);\n\t\t\treturn args && args.length === arguments.length;\n\t\t}(1, 2));\n\t\tif (!keysWorksWithArguments) {\n\t\t\tObject.keys = function keys(object) { // eslint-disable-line func-name-matching\n\t\t\t\tif (isArgs(object)) {\n\t\t\t\t\treturn originalKeys(slice.call(object));\n\t\t\t\t}\n\t\t\t\treturn originalKeys(object);\n\t\t\t};\n\t\t}\n\t} else {\n\t\tObject.keys = keysShim;\n\t}\n\treturn Object.keys || keysShim;\n};\n\nmodule.exports = keysShim;\n", "'use strict';\n\nvar toStr = Object.prototype.toString;\n\nmodule.exports = function isArguments(value) {\n\tvar str = toStr.call(value);\n\tvar isArgs = str === '[object Arguments]';\n\tif (!isArgs) {\n\t\tisArgs = str !== '[object Array]' &&\n\t\t\tvalue !== null &&\n\t\t\ttypeof value === 'object' &&\n\t\t\ttypeof value.length === 'number' &&\n\t\t\tvalue.length >= 0 &&\n\t\t\ttoStr.call(value.callee) === '[object Function]';\n\t}\n\treturn isArgs;\n};\n", "'use strict';\n\n\nvar TYPED_OK =  (typeof Uint8Array !== 'undefined') &&\n                (typeof Uint16Array !== 'undefined') &&\n                (typeof Int32Array !== 'undefined');\n\nfunction _has(obj, key) {\n  return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\nexports.assign = function (obj /*from1, from2, from3, ...*/) {\n  var sources = Array.prototype.slice.call(arguments, 1);\n  while (sources.length) {\n    var source = sources.shift();\n    if (!source) { continue; }\n\n    if (typeof source !== 'object') {\n      throw new TypeError(source + 'must be non-object');\n    }\n\n    for (var p in source) {\n      if (_has(source, p)) {\n        obj[p] = source[p];\n      }\n    }\n  }\n\n  return obj;\n};\n\n\n// reduce buffer size, avoiding mem copy\nexports.shrinkBuf = function (buf, size) {\n  if (buf.length === size) { return buf; }\n  if (buf.subarray) { return buf.subarray(0, size); }\n  buf.length = size;\n  return buf;\n};\n\n\nvar fnTyped = {\n  arraySet: function (dest, src, src_offs, len, dest_offs) {\n    if (src.subarray && dest.subarray) {\n      dest.set(src.subarray(src_offs, src_offs + len), dest_offs);\n      return;\n    }\n    // Fallback to ordinary array\n    for (var i = 0; i < len; i++) {\n      dest[dest_offs + i] = src[src_offs + i];\n    }\n  },\n  // Join array of chunks to single array.\n  flattenChunks: function (chunks) {\n    var i, l, len, pos, chunk, result;\n\n    // calculate data length\n    len = 0;\n    for (i = 0, l = chunks.length; i < l; i++) {\n      len += chunks[i].length;\n    }\n\n    // join chunks\n    result = new Uint8Array(len);\n    pos = 0;\n    for (i = 0, l = chunks.length; i < l; i++) {\n      chunk = chunks[i];\n      result.set(chunk, pos);\n      pos += chunk.length;\n    }\n\n    return result;\n  }\n};\n\nvar fnUntyped = {\n  arraySet: function (dest, src, src_offs, len, dest_offs) {\n    for (var i = 0; i < len; i++) {\n      dest[dest_offs + i] = src[src_offs + i];\n    }\n  },\n  // Join array of chunks to single array.\n  flattenChunks: function (chunks) {\n    return [].concat.apply([], chunks);\n  }\n};\n\n\n// Enable/Disable typed arrays use, for testing\n//\nexports.setTyped = function (on) {\n  if (on) {\n    exports.Buf8  = Uint8Array;\n    exports.Buf16 = Uint16Array;\n    exports.Buf32 = Int32Array;\n    exports.assign(exports, fnTyped);\n  } else {\n    exports.Buf8  = Array;\n    exports.Buf16 = Array;\n    exports.Buf32 = Array;\n    exports.assign(exports, fnUntyped);\n  }\n};\n\nexports.setTyped(TYPED_OK);\n", "'use strict';\n\n// Note: adler32 takes 12% for level 0 and 2% for level 6.\n// It isn't worth it to make additional optimizations as in original.\n// Small size is preferable.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction adler32(adler, buf, len, pos) {\n  var s1 = (adler & 0xffff) |0,\n      s2 = ((adler >>> 16) & 0xffff) |0,\n      n = 0;\n\n  while (len !== 0) {\n    // Set limit ~ twice less than 5552, to keep\n    // s2 in 31-bits, because we force signed ints.\n    // in other case %= will fail.\n    n = len > 2000 ? 2000 : len;\n    len -= n;\n\n    do {\n      s1 = (s1 + buf[pos++]) |0;\n      s2 = (s2 + s1) |0;\n    } while (--n);\n\n    s1 %= 65521;\n    s2 %= 65521;\n  }\n\n  return (s1 | (s2 << 16)) |0;\n}\n\n\nmodule.exports = adler32;\n", "'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nmodule.exports = {\n\n  /* Allowed flush values; see deflate() and inflate() below for details */\n  Z_NO_FLUSH:         0,\n  Z_PARTIAL_FLUSH:    1,\n  Z_SYNC_FLUSH:       2,\n  Z_FULL_FLUSH:       3,\n  Z_FINISH:           4,\n  Z_BLOCK:            5,\n  Z_TREES:            6,\n\n  /* Return codes for the compression/decompression functions. Negative values\n  * are errors, positive values are used for special but normal events.\n  */\n  Z_OK:               0,\n  Z_STREAM_END:       1,\n  Z_NEED_DICT:        2,\n  Z_ERRNO:           -1,\n  Z_STREAM_ERROR:    -2,\n  Z_DATA_ERROR:      -3,\n  //Z_MEM_ERROR:     -4,\n  Z_BUF_ERROR:       -5,\n  //Z_VERSION_ERROR: -6,\n\n  /* compression levels */\n  Z_NO_COMPRESSION:         0,\n  Z_BEST_SPEED:             1,\n  Z_BEST_COMPRESSION:       9,\n  Z_DEFAULT_COMPRESSION:   -1,\n\n\n  Z_FILTERED:               1,\n  Z_HUFFMAN_ONLY:           2,\n  Z_RLE:                    3,\n  Z_FIXED:                  4,\n  Z_DEFAULT_STRATEGY:       0,\n\n  /* Possible values of the data_type field (though see inflate()) */\n  Z_BINARY:                 0,\n  Z_TEXT:                   1,\n  //Z_ASCII:                1, // = Z_TEXT (deprecated)\n  Z_UNKNOWN:                2,\n\n  /* The deflate compression method */\n  Z_DEFLATED:               8\n  //Z_NULL:                 null // Use -1 or null inline, depending on var type\n};\n", "'use strict';\n\n// Note: we can't get significant speed boost here.\n// So write code to minimize size - no pregenerated tables\n// and array tools dependencies.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// Use ordinary array, since untyped makes no boost here\nfunction makeTable() {\n  var c, table = [];\n\n  for (var n = 0; n < 256; n++) {\n    c = n;\n    for (var k = 0; k < 8; k++) {\n      c = ((c & 1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));\n    }\n    table[n] = c;\n  }\n\n  return table;\n}\n\n// Create table on load. Just 255 signed longs. Not a problem.\nvar crcTable = makeTable();\n\n\nfunction crc32(crc, buf, len, pos) {\n  var t = crcTable,\n      end = pos + len;\n\n  crc ^= -1;\n\n  for (var i = pos; i < end; i++) {\n    crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF];\n  }\n\n  return (crc ^ (-1)); // >>> 0;\n}\n\n\nmodule.exports = crc32;\n", "'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar utils   = require('../utils/common');\nvar trees   = require('./trees');\nvar adler32 = require('./adler32');\nvar crc32   = require('./crc32');\nvar msg     = require('./messages');\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n/* Allowed flush values; see deflate() and inflate() below for details */\nvar Z_NO_FLUSH      = 0;\nvar Z_PARTIAL_FLUSH = 1;\n//var Z_SYNC_FLUSH    = 2;\nvar Z_FULL_FLUSH    = 3;\nvar Z_FINISH        = 4;\nvar Z_BLOCK         = 5;\n//var Z_TREES         = 6;\n\n\n/* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\nvar Z_OK            = 0;\nvar Z_STREAM_END    = 1;\n//var Z_NEED_DICT     = 2;\n//var Z_ERRNO         = -1;\nvar Z_STREAM_ERROR  = -2;\nvar Z_DATA_ERROR    = -3;\n//var Z_MEM_ERROR     = -4;\nvar Z_BUF_ERROR     = -5;\n//var Z_VERSION_ERROR = -6;\n\n\n/* compression levels */\n//var Z_NO_COMPRESSION      = 0;\n//var Z_BEST_SPEED          = 1;\n//var Z_BEST_COMPRESSION    = 9;\nvar Z_DEFAULT_COMPRESSION = -1;\n\n\nvar Z_FILTERED            = 1;\nvar Z_HUFFMAN_ONLY        = 2;\nvar Z_RLE                 = 3;\nvar Z_FIXED               = 4;\nvar Z_DEFAULT_STRATEGY    = 0;\n\n/* Possible values of the data_type field (though see inflate()) */\n//var Z_BINARY              = 0;\n//var Z_TEXT                = 1;\n//var Z_ASCII               = 1; // = Z_TEXT\nvar Z_UNKNOWN             = 2;\n\n\n/* The deflate compression method */\nvar Z_DEFLATED  = 8;\n\n/*============================================================================*/\n\n\nvar MAX_MEM_LEVEL = 9;\n/* Maximum value for memLevel in deflateInit2 */\nvar MAX_WBITS = 15;\n/* 32K LZ77 window */\nvar DEF_MEM_LEVEL = 8;\n\n\nvar LENGTH_CODES  = 29;\n/* number of length codes, not counting the special END_BLOCK code */\nvar LITERALS      = 256;\n/* number of literal bytes 0..255 */\nvar L_CODES       = LITERALS + 1 + LENGTH_CODES;\n/* number of Literal or Length codes, including the END_BLOCK code */\nvar D_CODES       = 30;\n/* number of distance codes */\nvar BL_CODES      = 19;\n/* number of codes used to transfer the bit lengths */\nvar HEAP_SIZE     = 2 * L_CODES + 1;\n/* maximum heap size */\nvar MAX_BITS  = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nvar MIN_MATCH = 3;\nvar MAX_MATCH = 258;\nvar MIN_LOOKAHEAD = (MAX_MATCH + MIN_MATCH + 1);\n\nvar PRESET_DICT = 0x20;\n\nvar INIT_STATE = 42;\nvar EXTRA_STATE = 69;\nvar NAME_STATE = 73;\nvar COMMENT_STATE = 91;\nvar HCRC_STATE = 103;\nvar BUSY_STATE = 113;\nvar FINISH_STATE = 666;\n\nvar BS_NEED_MORE      = 1; /* block not completed, need more input or more output */\nvar BS_BLOCK_DONE     = 2; /* block flush performed */\nvar BS_FINISH_STARTED = 3; /* finish started, need only more output at next deflate */\nvar BS_FINISH_DONE    = 4; /* finish done, accept no more input or output */\n\nvar OS_CODE = 0x03; // Unix :) . Don't detect, use this default.\n\nfunction err(strm, errorCode) {\n  strm.msg = msg[errorCode];\n  return errorCode;\n}\n\nfunction rank(f) {\n  return ((f) << 1) - ((f) > 4 ? 9 : 0);\n}\n\nfunction zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }\n\n\n/* =========================================================================\n * Flush as much pending output as possible. All deflate() output goes\n * through this function so some applications may wish to modify it\n * to avoid allocating a large strm->output buffer and copying into it.\n * (See also read_buf()).\n */\nfunction flush_pending(strm) {\n  var s = strm.state;\n\n  //_tr_flush_bits(s);\n  var len = s.pending;\n  if (len > strm.avail_out) {\n    len = strm.avail_out;\n  }\n  if (len === 0) { return; }\n\n  utils.arraySet(strm.output, s.pending_buf, s.pending_out, len, strm.next_out);\n  strm.next_out += len;\n  s.pending_out += len;\n  strm.total_out += len;\n  strm.avail_out -= len;\n  s.pending -= len;\n  if (s.pending === 0) {\n    s.pending_out = 0;\n  }\n}\n\n\nfunction flush_block_only(s, last) {\n  trees._tr_flush_block(s, (s.block_start >= 0 ? s.block_start : -1), s.strstart - s.block_start, last);\n  s.block_start = s.strstart;\n  flush_pending(s.strm);\n}\n\n\nfunction put_byte(s, b) {\n  s.pending_buf[s.pending++] = b;\n}\n\n\n/* =========================================================================\n * Put a short in the pending buffer. The 16-bit value is put in MSB order.\n * IN assertion: the stream state is correct and there is enough room in\n * pending_buf.\n */\nfunction putShortMSB(s, b) {\n//  put_byte(s, (Byte)(b >> 8));\n//  put_byte(s, (Byte)(b & 0xff));\n  s.pending_buf[s.pending++] = (b >>> 8) & 0xff;\n  s.pending_buf[s.pending++] = b & 0xff;\n}\n\n\n/* ===========================================================================\n * Read a new buffer from the current input stream, update the adler32\n * and total number of bytes read.  All deflate() input goes through\n * this function so some applications may wish to modify it to avoid\n * allocating a large strm->input buffer and copying from it.\n * (See also flush_pending()).\n */\nfunction read_buf(strm, buf, start, size) {\n  var len = strm.avail_in;\n\n  if (len > size) { len = size; }\n  if (len === 0) { return 0; }\n\n  strm.avail_in -= len;\n\n  // zmemcpy(buf, strm->next_in, len);\n  utils.arraySet(buf, strm.input, strm.next_in, len, start);\n  if (strm.state.wrap === 1) {\n    strm.adler = adler32(strm.adler, buf, len, start);\n  }\n\n  else if (strm.state.wrap === 2) {\n    strm.adler = crc32(strm.adler, buf, len, start);\n  }\n\n  strm.next_in += len;\n  strm.total_in += len;\n\n  return len;\n}\n\n\n/* ===========================================================================\n * Set match_start to the longest match starting at the given string and\n * return its length. Matches shorter or equal to prev_length are discarded,\n * in which case the result is equal to prev_length and match_start is\n * garbage.\n * IN assertions: cur_match is the head of the hash chain for the current\n *   string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1\n * OUT assertion: the match length is not greater than s->lookahead.\n */\nfunction longest_match(s, cur_match) {\n  var chain_length = s.max_chain_length;      /* max hash chain length */\n  var scan = s.strstart; /* current string */\n  var match;                       /* matched string */\n  var len;                           /* length of current match */\n  var best_len = s.prev_length;              /* best match length so far */\n  var nice_match = s.nice_match;             /* stop if match long enough */\n  var limit = (s.strstart > (s.w_size - MIN_LOOKAHEAD)) ?\n      s.strstart - (s.w_size - MIN_LOOKAHEAD) : 0/*NIL*/;\n\n  var _win = s.window; // shortcut\n\n  var wmask = s.w_mask;\n  var prev  = s.prev;\n\n  /* Stop when cur_match becomes <= limit. To simplify the code,\n   * we prevent matches with the string of window index 0.\n   */\n\n  var strend = s.strstart + MAX_MATCH;\n  var scan_end1  = _win[scan + best_len - 1];\n  var scan_end   = _win[scan + best_len];\n\n  /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16.\n   * It is easy to get rid of this optimization if necessary.\n   */\n  // Assert(s->hash_bits >= 8 && MAX_MATCH == 258, \"Code too clever\");\n\n  /* Do not waste too much time if we already have a good match: */\n  if (s.prev_length >= s.good_match) {\n    chain_length >>= 2;\n  }\n  /* Do not look for matches beyond the end of the input. This is necessary\n   * to make deflate deterministic.\n   */\n  if (nice_match > s.lookahead) { nice_match = s.lookahead; }\n\n  // Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, \"need lookahead\");\n\n  do {\n    // Assert(cur_match < s->strstart, \"no future\");\n    match = cur_match;\n\n    /* Skip to next match if the match length cannot increase\n     * or if the match length is less than 2.  Note that the checks below\n     * for insufficient lookahead only occur occasionally for performance\n     * reasons.  Therefore uninitialized memory will be accessed, and\n     * conditional jumps will be made that depend on those values.\n     * However the length of the match is limited to the lookahead, so\n     * the output of deflate is not affected by the uninitialized values.\n     */\n\n    if (_win[match + best_len]     !== scan_end  ||\n        _win[match + best_len - 1] !== scan_end1 ||\n        _win[match]                !== _win[scan] ||\n        _win[++match]              !== _win[scan + 1]) {\n      continue;\n    }\n\n    /* The check at best_len-1 can be removed because it will be made\n     * again later. (This heuristic is not always a win.)\n     * It is not necessary to compare scan[2] and match[2] since they\n     * are always equal when the other bytes match, given that\n     * the hash keys are equal and that HASH_BITS >= 8.\n     */\n    scan += 2;\n    match++;\n    // Assert(*scan == *match, \"match[2]?\");\n\n    /* We check for insufficient lookahead only every 8th comparison;\n     * the 256th check will be made at strstart+258.\n     */\n    do {\n      /*jshint noempty:false*/\n    } while (_win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n             _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n             _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n             _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n             scan < strend);\n\n    // Assert(scan <= s->window+(unsigned)(s->window_size-1), \"wild scan\");\n\n    len = MAX_MATCH - (strend - scan);\n    scan = strend - MAX_MATCH;\n\n    if (len > best_len) {\n      s.match_start = cur_match;\n      best_len = len;\n      if (len >= nice_match) {\n        break;\n      }\n      scan_end1  = _win[scan + best_len - 1];\n      scan_end   = _win[scan + best_len];\n    }\n  } while ((cur_match = prev[cur_match & wmask]) > limit && --chain_length !== 0);\n\n  if (best_len <= s.lookahead) {\n    return best_len;\n  }\n  return s.lookahead;\n}\n\n\n/* ===========================================================================\n * Fill the window when the lookahead becomes insufficient.\n * Updates strstart and lookahead.\n *\n * IN assertion: lookahead < MIN_LOOKAHEAD\n * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD\n *    At least one byte has been read, or avail_in == 0; reads are\n *    performed for at least two bytes (required for the zip translate_eol\n *    option -- not supported here).\n */\nfunction fill_window(s) {\n  var _w_size = s.w_size;\n  var p, n, m, more, str;\n\n  //Assert(s->lookahead < MIN_LOOKAHEAD, \"already enough lookahead\");\n\n  do {\n    more = s.window_size - s.lookahead - s.strstart;\n\n    // JS ints have 32 bit, block below not needed\n    /* Deal with !@#$% 64K limit: */\n    //if (sizeof(int) <= 2) {\n    //    if (more == 0 && s->strstart == 0 && s->lookahead == 0) {\n    //        more = wsize;\n    //\n    //  } else if (more == (unsigned)(-1)) {\n    //        /* Very unlikely, but possible on 16 bit machine if\n    //         * strstart == 0 && lookahead == 1 (input done a byte at time)\n    //         */\n    //        more--;\n    //    }\n    //}\n\n\n    /* If the window is almost full and there is insufficient lookahead,\n     * move the upper half to the lower one to make room in the upper half.\n     */\n    if (s.strstart >= _w_size + (_w_size - MIN_LOOKAHEAD)) {\n\n      utils.arraySet(s.window, s.window, _w_size, _w_size, 0);\n      s.match_start -= _w_size;\n      s.strstart -= _w_size;\n      /* we now have strstart >= MAX_DIST */\n      s.block_start -= _w_size;\n\n      /* Slide the hash table (could be avoided with 32 bit values\n       at the expense of memory usage). We slide even when level == 0\n       to keep the hash table consistent if we switch back to level > 0\n       later. (Using level 0 permanently is not an optimal usage of\n       zlib, so we don't care about this pathological case.)\n       */\n\n      n = s.hash_size;\n      p = n;\n      do {\n        m = s.head[--p];\n        s.head[p] = (m >= _w_size ? m - _w_size : 0);\n      } while (--n);\n\n      n = _w_size;\n      p = n;\n      do {\n        m = s.prev[--p];\n        s.prev[p] = (m >= _w_size ? m - _w_size : 0);\n        /* If n is not on any hash chain, prev[n] is garbage but\n         * its value will never be used.\n         */\n      } while (--n);\n\n      more += _w_size;\n    }\n    if (s.strm.avail_in === 0) {\n      break;\n    }\n\n    /* If there was no sliding:\n     *    strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 &&\n     *    more == window_size - lookahead - strstart\n     * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1)\n     * => more >= window_size - 2*WSIZE + 2\n     * In the BIG_MEM or MMAP case (not yet supported),\n     *   window_size == input_size + MIN_LOOKAHEAD  &&\n     *   strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD.\n     * Otherwise, window_size == 2*WSIZE so more >= 2.\n     * If there was sliding, more >= WSIZE. So in all cases, more >= 2.\n     */\n    //Assert(more >= 2, \"more < 2\");\n    n = read_buf(s.strm, s.window, s.strstart + s.lookahead, more);\n    s.lookahead += n;\n\n    /* Initialize the hash value now that we have some input: */\n    if (s.lookahead + s.insert >= MIN_MATCH) {\n      str = s.strstart - s.insert;\n      s.ins_h = s.window[str];\n\n      /* UPDATE_HASH(s, s->ins_h, s->window[str + 1]); */\n      s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + 1]) & s.hash_mask;\n//#if MIN_MATCH != 3\n//        Call update_hash() MIN_MATCH-3 more times\n//#endif\n      while (s.insert) {\n        /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n        s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask;\n\n        s.prev[str & s.w_mask] = s.head[s.ins_h];\n        s.head[s.ins_h] = str;\n        str++;\n        s.insert--;\n        if (s.lookahead + s.insert < MIN_MATCH) {\n          break;\n        }\n      }\n    }\n    /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage,\n     * but this is not important since only literal bytes will be emitted.\n     */\n\n  } while (s.lookahead < MIN_LOOKAHEAD && s.strm.avail_in !== 0);\n\n  /* If the WIN_INIT bytes after the end of the current data have never been\n   * written, then zero those bytes in order to avoid memory check reports of\n   * the use of uninitialized (or uninitialised as Julian writes) bytes by\n   * the longest match routines.  Update the high water mark for the next\n   * time through here.  WIN_INIT is set to MAX_MATCH since the longest match\n   * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead.\n   */\n//  if (s.high_water < s.window_size) {\n//    var curr = s.strstart + s.lookahead;\n//    var init = 0;\n//\n//    if (s.high_water < curr) {\n//      /* Previous high water mark below current data -- zero WIN_INIT\n//       * bytes or up to end of window, whichever is less.\n//       */\n//      init = s.window_size - curr;\n//      if (init > WIN_INIT)\n//        init = WIN_INIT;\n//      zmemzero(s->window + curr, (unsigned)init);\n//      s->high_water = curr + init;\n//    }\n//    else if (s->high_water < (ulg)curr + WIN_INIT) {\n//      /* High water mark at or above current data, but below current data\n//       * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up\n//       * to end of window, whichever is less.\n//       */\n//      init = (ulg)curr + WIN_INIT - s->high_water;\n//      if (init > s->window_size - s->high_water)\n//        init = s->window_size - s->high_water;\n//      zmemzero(s->window + s->high_water, (unsigned)init);\n//      s->high_water += init;\n//    }\n//  }\n//\n//  Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD,\n//    \"not enough room for search\");\n}\n\n/* ===========================================================================\n * Copy without compression as much as possible from the input stream, return\n * the current block state.\n * This function does not insert new strings in the dictionary since\n * uncompressible data is probably not useful. This function is used\n * only for the level=0 compression option.\n * NOTE: this function should be optimized to avoid extra copying from\n * window to pending_buf.\n */\nfunction deflate_stored(s, flush) {\n  /* Stored blocks are limited to 0xffff bytes, pending_buf is limited\n   * to pending_buf_size, and each stored block has a 5 byte header:\n   */\n  var max_block_size = 0xffff;\n\n  if (max_block_size > s.pending_buf_size - 5) {\n    max_block_size = s.pending_buf_size - 5;\n  }\n\n  /* Copy as much as possible from input to output: */\n  for (;;) {\n    /* Fill the window as much as possible: */\n    if (s.lookahead <= 1) {\n\n      //Assert(s->strstart < s->w_size+MAX_DIST(s) ||\n      //  s->block_start >= (long)s->w_size, \"slide too late\");\n//      if (!(s.strstart < s.w_size + (s.w_size - MIN_LOOKAHEAD) ||\n//        s.block_start >= s.w_size)) {\n//        throw  new Error(\"slide too late\");\n//      }\n\n      fill_window(s);\n      if (s.lookahead === 0 && flush === Z_NO_FLUSH) {\n        return BS_NEED_MORE;\n      }\n\n      if (s.lookahead === 0) {\n        break;\n      }\n      /* flush the current block */\n    }\n    //Assert(s->block_start >= 0L, \"block gone\");\n//    if (s.block_start < 0) throw new Error(\"block gone\");\n\n    s.strstart += s.lookahead;\n    s.lookahead = 0;\n\n    /* Emit a stored block if pending_buf will be full: */\n    var max_start = s.block_start + max_block_size;\n\n    if (s.strstart === 0 || s.strstart >= max_start) {\n      /* strstart == 0 is possible when wraparound on 16-bit machine */\n      s.lookahead = s.strstart - max_start;\n      s.strstart = max_start;\n      /*** FLUSH_BLOCK(s, 0); ***/\n      flush_block_only(s, false);\n      if (s.strm.avail_out === 0) {\n        return BS_NEED_MORE;\n      }\n      /***/\n\n\n    }\n    /* Flush if we may have to slide, otherwise block_start may become\n     * negative and the data will be gone:\n     */\n    if (s.strstart - s.block_start >= (s.w_size - MIN_LOOKAHEAD)) {\n      /*** FLUSH_BLOCK(s, 0); ***/\n      flush_block_only(s, false);\n      if (s.strm.avail_out === 0) {\n        return BS_NEED_MORE;\n      }\n      /***/\n    }\n  }\n\n  s.insert = 0;\n\n  if (flush === Z_FINISH) {\n    /*** FLUSH_BLOCK(s, 1); ***/\n    flush_block_only(s, true);\n    if (s.strm.avail_out === 0) {\n      return BS_FINISH_STARTED;\n    }\n    /***/\n    return BS_FINISH_DONE;\n  }\n\n  if (s.strstart > s.block_start) {\n    /*** FLUSH_BLOCK(s, 0); ***/\n    flush_block_only(s, false);\n    if (s.strm.avail_out === 0) {\n      return BS_NEED_MORE;\n    }\n    /***/\n  }\n\n  return BS_NEED_MORE;\n}\n\n/* ===========================================================================\n * Compress as much as possible from the input stream, return the current\n * block state.\n * This function does not perform lazy evaluation of matches and inserts\n * new strings in the dictionary only for unmatched strings or for short\n * matches. It is used only for the fast compression options.\n */\nfunction deflate_fast(s, flush) {\n  var hash_head;        /* head of the hash chain */\n  var bflush;           /* set if current block must be flushed */\n\n  for (;;) {\n    /* Make sure that we always have enough lookahead, except\n     * at the end of the input file. We need MAX_MATCH bytes\n     * for the next match, plus MIN_MATCH bytes to insert the\n     * string following the next match.\n     */\n    if (s.lookahead < MIN_LOOKAHEAD) {\n      fill_window(s);\n      if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n        return BS_NEED_MORE;\n      }\n      if (s.lookahead === 0) {\n        break; /* flush the current block */\n      }\n    }\n\n    /* Insert the string window[strstart .. strstart+2] in the\n     * dictionary, and set hash_head to the head of the hash chain:\n     */\n    hash_head = 0/*NIL*/;\n    if (s.lookahead >= MIN_MATCH) {\n      /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n      s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n      hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n      s.head[s.ins_h] = s.strstart;\n      /***/\n    }\n\n    /* Find the longest match, discarding those <= prev_length.\n     * At this point we have always match_length < MIN_MATCH\n     */\n    if (hash_head !== 0/*NIL*/ && ((s.strstart - hash_head) <= (s.w_size - MIN_LOOKAHEAD))) {\n      /* To simplify the code, we prevent matches with the string\n       * of window index 0 (in particular we have to avoid a match\n       * of the string with itself at the start of the input file).\n       */\n      s.match_length = longest_match(s, hash_head);\n      /* longest_match() sets match_start */\n    }\n    if (s.match_length >= MIN_MATCH) {\n      // check_match(s, s.strstart, s.match_start, s.match_length); // for debug only\n\n      /*** _tr_tally_dist(s, s.strstart - s.match_start,\n                     s.match_length - MIN_MATCH, bflush); ***/\n      bflush = trees._tr_tally(s, s.strstart - s.match_start, s.match_length - MIN_MATCH);\n\n      s.lookahead -= s.match_length;\n\n      /* Insert new strings in the hash table only if the match length\n       * is not too large. This saves time but degrades compression.\n       */\n      if (s.match_length <= s.max_lazy_match/*max_insert_length*/ && s.lookahead >= MIN_MATCH) {\n        s.match_length--; /* string at strstart already in table */\n        do {\n          s.strstart++;\n          /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n          s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n          hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n          s.head[s.ins_h] = s.strstart;\n          /***/\n          /* strstart never exceeds WSIZE-MAX_MATCH, so there are\n           * always MIN_MATCH bytes ahead.\n           */\n        } while (--s.match_length !== 0);\n        s.strstart++;\n      } else\n      {\n        s.strstart += s.match_length;\n        s.match_length = 0;\n        s.ins_h = s.window[s.strstart];\n        /* UPDATE_HASH(s, s.ins_h, s.window[s.strstart+1]); */\n        s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + 1]) & s.hash_mask;\n\n//#if MIN_MATCH != 3\n//                Call UPDATE_HASH() MIN_MATCH-3 more times\n//#endif\n        /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not\n         * matter since it will be recomputed at next deflate call.\n         */\n      }\n    } else {\n      /* No match, output a literal byte */\n      //Tracevv((stderr,\"%c\", s.window[s.strstart]));\n      /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n      bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n\n      s.lookahead--;\n      s.strstart++;\n    }\n    if (bflush) {\n      /*** FLUSH_BLOCK(s, 0); ***/\n      flush_block_only(s, false);\n      if (s.strm.avail_out === 0) {\n        return BS_NEED_MORE;\n      }\n      /***/\n    }\n  }\n  s.insert = ((s.strstart < (MIN_MATCH - 1)) ? s.strstart : MIN_MATCH - 1);\n  if (flush === Z_FINISH) {\n    /*** FLUSH_BLOCK(s, 1); ***/\n    flush_block_only(s, true);\n    if (s.strm.avail_out === 0) {\n      return BS_FINISH_STARTED;\n    }\n    /***/\n    return BS_FINISH_DONE;\n  }\n  if (s.last_lit) {\n    /*** FLUSH_BLOCK(s, 0); ***/\n    flush_block_only(s, false);\n    if (s.strm.avail_out === 0) {\n      return BS_NEED_MORE;\n    }\n    /***/\n  }\n  return BS_BLOCK_DONE;\n}\n\n/* ===========================================================================\n * Same as above, but achieves better compression. We use a lazy\n * evaluation for matches: a match is finally adopted only if there is\n * no better match at the next window position.\n */\nfunction deflate_slow(s, flush) {\n  var hash_head;          /* head of hash chain */\n  var bflush;              /* set if current block must be flushed */\n\n  var max_insert;\n\n  /* Process the input block. */\n  for (;;) {\n    /* Make sure that we always have enough lookahead, except\n     * at the end of the input file. We need MAX_MATCH bytes\n     * for the next match, plus MIN_MATCH bytes to insert the\n     * string following the next match.\n     */\n    if (s.lookahead < MIN_LOOKAHEAD) {\n      fill_window(s);\n      if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n        return BS_NEED_MORE;\n      }\n      if (s.lookahead === 0) { break; } /* flush the current block */\n    }\n\n    /* Insert the string window[strstart .. strstart+2] in the\n     * dictionary, and set hash_head to the head of the hash chain:\n     */\n    hash_head = 0/*NIL*/;\n    if (s.lookahead >= MIN_MATCH) {\n      /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n      s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n      hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n      s.head[s.ins_h] = s.strstart;\n      /***/\n    }\n\n    /* Find the longest match, discarding those <= prev_length.\n     */\n    s.prev_length = s.match_length;\n    s.prev_match = s.match_start;\n    s.match_length = MIN_MATCH - 1;\n\n    if (hash_head !== 0/*NIL*/ && s.prev_length < s.max_lazy_match &&\n        s.strstart - hash_head <= (s.w_size - MIN_LOOKAHEAD)/*MAX_DIST(s)*/) {\n      /* To simplify the code, we prevent matches with the string\n       * of window index 0 (in particular we have to avoid a match\n       * of the string with itself at the start of the input file).\n       */\n      s.match_length = longest_match(s, hash_head);\n      /* longest_match() sets match_start */\n\n      if (s.match_length <= 5 &&\n         (s.strategy === Z_FILTERED || (s.match_length === MIN_MATCH && s.strstart - s.match_start > 4096/*TOO_FAR*/))) {\n\n        /* If prev_match is also MIN_MATCH, match_start is garbage\n         * but we will ignore the current match anyway.\n         */\n        s.match_length = MIN_MATCH - 1;\n      }\n    }\n    /* If there was a match at the previous step and the current\n     * match is not better, output the previous match:\n     */\n    if (s.prev_length >= MIN_MATCH && s.match_length <= s.prev_length) {\n      max_insert = s.strstart + s.lookahead - MIN_MATCH;\n      /* Do not insert strings in hash table beyond this. */\n\n      //check_match(s, s.strstart-1, s.prev_match, s.prev_length);\n\n      /***_tr_tally_dist(s, s.strstart - 1 - s.prev_match,\n                     s.prev_length - MIN_MATCH, bflush);***/\n      bflush = trees._tr_tally(s, s.strstart - 1 - s.prev_match, s.prev_length - MIN_MATCH);\n      /* Insert in hash table all strings up to the end of the match.\n       * strstart-1 and strstart are already inserted. If there is not\n       * enough lookahead, the last two strings are not inserted in\n       * the hash table.\n       */\n      s.lookahead -= s.prev_length - 1;\n      s.prev_length -= 2;\n      do {\n        if (++s.strstart <= max_insert) {\n          /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n          s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n          hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n          s.head[s.ins_h] = s.strstart;\n          /***/\n        }\n      } while (--s.prev_length !== 0);\n      s.match_available = 0;\n      s.match_length = MIN_MATCH - 1;\n      s.strstart++;\n\n      if (bflush) {\n        /*** FLUSH_BLOCK(s, 0); ***/\n        flush_block_only(s, false);\n        if (s.strm.avail_out === 0) {\n          return BS_NEED_MORE;\n        }\n        /***/\n      }\n\n    } else if (s.match_available) {\n      /* If there was no match at the previous position, output a\n       * single literal. If there was a match but the current match\n       * is longer, truncate the previous match to a single literal.\n       */\n      //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n      /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n      bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]);\n\n      if (bflush) {\n        /*** FLUSH_BLOCK_ONLY(s, 0) ***/\n        flush_block_only(s, false);\n        /***/\n      }\n      s.strstart++;\n      s.lookahead--;\n      if (s.strm.avail_out === 0) {\n        return BS_NEED_MORE;\n      }\n    } else {\n      /* There is no previous match to compare with, wait for\n       * the next step to decide.\n       */\n      s.match_available = 1;\n      s.strstart++;\n      s.lookahead--;\n    }\n  }\n  //Assert (flush != Z_NO_FLUSH, \"no flush?\");\n  if (s.match_available) {\n    //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n    /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n    bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]);\n\n    s.match_available = 0;\n  }\n  s.insert = s.strstart < MIN_MATCH - 1 ? s.strstart : MIN_MATCH - 1;\n  if (flush === Z_FINISH) {\n    /*** FLUSH_BLOCK(s, 1); ***/\n    flush_block_only(s, true);\n    if (s.strm.avail_out === 0) {\n      return BS_FINISH_STARTED;\n    }\n    /***/\n    return BS_FINISH_DONE;\n  }\n  if (s.last_lit) {\n    /*** FLUSH_BLOCK(s, 0); ***/\n    flush_block_only(s, false);\n    if (s.strm.avail_out === 0) {\n      return BS_NEED_MORE;\n    }\n    /***/\n  }\n\n  return BS_BLOCK_DONE;\n}\n\n\n/* ===========================================================================\n * For Z_RLE, simply look for runs of bytes, generate matches only of distance\n * one.  Do not maintain a hash table.  (It will be regenerated if this run of\n * deflate switches away from Z_RLE.)\n */\nfunction deflate_rle(s, flush) {\n  var bflush;            /* set if current block must be flushed */\n  var prev;              /* byte at distance one to match */\n  var scan, strend;      /* scan goes up to strend for length of run */\n\n  var _win = s.window;\n\n  for (;;) {\n    /* Make sure that we always have enough lookahead, except\n     * at the end of the input file. We need MAX_MATCH bytes\n     * for the longest run, plus one for the unrolled loop.\n     */\n    if (s.lookahead <= MAX_MATCH) {\n      fill_window(s);\n      if (s.lookahead <= MAX_MATCH && flush === Z_NO_FLUSH) {\n        return BS_NEED_MORE;\n      }\n      if (s.lookahead === 0) { break; } /* flush the current block */\n    }\n\n    /* See how many times the previous byte repeats */\n    s.match_length = 0;\n    if (s.lookahead >= MIN_MATCH && s.strstart > 0) {\n      scan = s.strstart - 1;\n      prev = _win[scan];\n      if (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan]) {\n        strend = s.strstart + MAX_MATCH;\n        do {\n          /*jshint noempty:false*/\n        } while (prev === _win[++scan] && prev === _win[++scan] &&\n                 prev === _win[++scan] && prev === _win[++scan] &&\n                 prev === _win[++scan] && prev === _win[++scan] &&\n                 prev === _win[++scan] && prev === _win[++scan] &&\n                 scan < strend);\n        s.match_length = MAX_MATCH - (strend - scan);\n        if (s.match_length > s.lookahead) {\n          s.match_length = s.lookahead;\n        }\n      }\n      //Assert(scan <= s->window+(uInt)(s->window_size-1), \"wild scan\");\n    }\n\n    /* Emit match if have run of MIN_MATCH or longer, else emit literal */\n    if (s.match_length >= MIN_MATCH) {\n      //check_match(s, s.strstart, s.strstart - 1, s.match_length);\n\n      /*** _tr_tally_dist(s, 1, s.match_length - MIN_MATCH, bflush); ***/\n      bflush = trees._tr_tally(s, 1, s.match_length - MIN_MATCH);\n\n      s.lookahead -= s.match_length;\n      s.strstart += s.match_length;\n      s.match_length = 0;\n    } else {\n      /* No match, output a literal byte */\n      //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n      /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n      bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n\n      s.lookahead--;\n      s.strstart++;\n    }\n    if (bflush) {\n      /*** FLUSH_BLOCK(s, 0); ***/\n      flush_block_only(s, false);\n      if (s.strm.avail_out === 0) {\n        return BS_NEED_MORE;\n      }\n      /***/\n    }\n  }\n  s.insert = 0;\n  if (flush === Z_FINISH) {\n    /*** FLUSH_BLOCK(s, 1); ***/\n    flush_block_only(s, true);\n    if (s.strm.avail_out === 0) {\n      return BS_FINISH_STARTED;\n    }\n    /***/\n    return BS_FINISH_DONE;\n  }\n  if (s.last_lit) {\n    /*** FLUSH_BLOCK(s, 0); ***/\n    flush_block_only(s, false);\n    if (s.strm.avail_out === 0) {\n      return BS_NEED_MORE;\n    }\n    /***/\n  }\n  return BS_BLOCK_DONE;\n}\n\n/* ===========================================================================\n * For Z_HUFFMAN_ONLY, do not look for matches.  Do not maintain a hash table.\n * (It will be regenerated if this run of deflate switches away from Huffman.)\n */\nfunction deflate_huff(s, flush) {\n  var bflush;             /* set if current block must be flushed */\n\n  for (;;) {\n    /* Make sure that we have a literal to write. */\n    if (s.lookahead === 0) {\n      fill_window(s);\n      if (s.lookahead === 0) {\n        if (flush === Z_NO_FLUSH) {\n          return BS_NEED_MORE;\n        }\n        break;      /* flush the current block */\n      }\n    }\n\n    /* Output a literal byte */\n    s.match_length = 0;\n    //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n    /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n    bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n    s.lookahead--;\n    s.strstart++;\n    if (bflush) {\n      /*** FLUSH_BLOCK(s, 0); ***/\n      flush_block_only(s, false);\n      if (s.strm.avail_out === 0) {\n        return BS_NEED_MORE;\n      }\n      /***/\n    }\n  }\n  s.insert = 0;\n  if (flush === Z_FINISH) {\n    /*** FLUSH_BLOCK(s, 1); ***/\n    flush_block_only(s, true);\n    if (s.strm.avail_out === 0) {\n      return BS_FINISH_STARTED;\n    }\n    /***/\n    return BS_FINISH_DONE;\n  }\n  if (s.last_lit) {\n    /*** FLUSH_BLOCK(s, 0); ***/\n    flush_block_only(s, false);\n    if (s.strm.avail_out === 0) {\n      return BS_NEED_MORE;\n    }\n    /***/\n  }\n  return BS_BLOCK_DONE;\n}\n\n/* Values for max_lazy_match, good_match and max_chain_length, depending on\n * the desired pack level (0..9). The values given below have been tuned to\n * exclude worst case performance for pathological files. Better values may be\n * found for specific files.\n */\nfunction Config(good_length, max_lazy, nice_length, max_chain, func) {\n  this.good_length = good_length;\n  this.max_lazy = max_lazy;\n  this.nice_length = nice_length;\n  this.max_chain = max_chain;\n  this.func = func;\n}\n\nvar configuration_table;\n\nconfiguration_table = [\n  /*      good lazy nice chain */\n  new Config(0, 0, 0, 0, deflate_stored),          /* 0 store only */\n  new Config(4, 4, 8, 4, deflate_fast),            /* 1 max speed, no lazy matches */\n  new Config(4, 5, 16, 8, deflate_fast),           /* 2 */\n  new Config(4, 6, 32, 32, deflate_fast),          /* 3 */\n\n  new Config(4, 4, 16, 16, deflate_slow),          /* 4 lazy matches */\n  new Config(8, 16, 32, 32, deflate_slow),         /* 5 */\n  new Config(8, 16, 128, 128, deflate_slow),       /* 6 */\n  new Config(8, 32, 128, 256, deflate_slow),       /* 7 */\n  new Config(32, 128, 258, 1024, deflate_slow),    /* 8 */\n  new Config(32, 258, 258, 4096, deflate_slow)     /* 9 max compression */\n];\n\n\n/* ===========================================================================\n * Initialize the \"longest match\" routines for a new zlib stream\n */\nfunction lm_init(s) {\n  s.window_size = 2 * s.w_size;\n\n  /*** CLEAR_HASH(s); ***/\n  zero(s.head); // Fill with NIL (= 0);\n\n  /* Set the default configuration parameters:\n   */\n  s.max_lazy_match = configuration_table[s.level].max_lazy;\n  s.good_match = configuration_table[s.level].good_length;\n  s.nice_match = configuration_table[s.level].nice_length;\n  s.max_chain_length = configuration_table[s.level].max_chain;\n\n  s.strstart = 0;\n  s.block_start = 0;\n  s.lookahead = 0;\n  s.insert = 0;\n  s.match_length = s.prev_length = MIN_MATCH - 1;\n  s.match_available = 0;\n  s.ins_h = 0;\n}\n\n\nfunction DeflateState() {\n  this.strm = null;            /* pointer back to this zlib stream */\n  this.status = 0;            /* as the name implies */\n  this.pending_buf = null;      /* output still pending */\n  this.pending_buf_size = 0;  /* size of pending_buf */\n  this.pending_out = 0;       /* next pending byte to output to the stream */\n  this.pending = 0;           /* nb of bytes in the pending buffer */\n  this.wrap = 0;              /* bit 0 true for zlib, bit 1 true for gzip */\n  this.gzhead = null;         /* gzip header information to write */\n  this.gzindex = 0;           /* where in extra, name, or comment */\n  this.method = Z_DEFLATED; /* can only be DEFLATED */\n  this.last_flush = -1;   /* value of flush param for previous deflate call */\n\n  this.w_size = 0;  /* LZ77 window size (32K by default) */\n  this.w_bits = 0;  /* log2(w_size)  (8..16) */\n  this.w_mask = 0;  /* w_size - 1 */\n\n  this.window = null;\n  /* Sliding window. Input bytes are read into the second half of the window,\n   * and move to the first half later to keep a dictionary of at least wSize\n   * bytes. With this organization, matches are limited to a distance of\n   * wSize-MAX_MATCH bytes, but this ensures that IO is always\n   * performed with a length multiple of the block size.\n   */\n\n  this.window_size = 0;\n  /* Actual size of window: 2*wSize, except when the user input buffer\n   * is directly used as sliding window.\n   */\n\n  this.prev = null;\n  /* Link to older string with same hash index. To limit the size of this\n   * array to 64K, this link is maintained only for the last 32K strings.\n   * An index in this array is thus a window index modulo 32K.\n   */\n\n  this.head = null;   /* Heads of the hash chains or NIL. */\n\n  this.ins_h = 0;       /* hash index of string to be inserted */\n  this.hash_size = 0;   /* number of elements in hash table */\n  this.hash_bits = 0;   /* log2(hash_size) */\n  this.hash_mask = 0;   /* hash_size-1 */\n\n  this.hash_shift = 0;\n  /* Number of bits by which ins_h must be shifted at each input\n   * step. It must be such that after MIN_MATCH steps, the oldest\n   * byte no longer takes part in the hash key, that is:\n   *   hash_shift * MIN_MATCH >= hash_bits\n   */\n\n  this.block_start = 0;\n  /* Window position at the beginning of the current output block. Gets\n   * negative when the window is moved backwards.\n   */\n\n  this.match_length = 0;      /* length of best match */\n  this.prev_match = 0;        /* previous match */\n  this.match_available = 0;   /* set if previous match exists */\n  this.strstart = 0;          /* start of string to insert */\n  this.match_start = 0;       /* start of matching string */\n  this.lookahead = 0;         /* number of valid bytes ahead in window */\n\n  this.prev_length = 0;\n  /* Length of the best match at previous step. Matches not greater than this\n   * are discarded. This is used in the lazy match evaluation.\n   */\n\n  this.max_chain_length = 0;\n  /* To speed up deflation, hash chains are never searched beyond this\n   * length.  A higher limit improves compression ratio but degrades the\n   * speed.\n   */\n\n  this.max_lazy_match = 0;\n  /* Attempt to find a better match only when the current match is strictly\n   * smaller than this value. This mechanism is used only for compression\n   * levels >= 4.\n   */\n  // That's alias to max_lazy_match, don't use directly\n  //this.max_insert_length = 0;\n  /* Insert new strings in the hash table only if the match length is not\n   * greater than this length. This saves time but degrades compression.\n   * max_insert_length is used only for compression levels <= 3.\n   */\n\n  this.level = 0;     /* compression level (1..9) */\n  this.strategy = 0;  /* favor or force Huffman coding*/\n\n  this.good_match = 0;\n  /* Use a faster search when the previous match is longer than this */\n\n  this.nice_match = 0; /* Stop searching when current match exceeds this */\n\n              /* used by trees.c: */\n\n  /* Didn't use ct_data typedef below to suppress compiler warning */\n\n  // struct ct_data_s dyn_ltree[HEAP_SIZE];   /* literal and length tree */\n  // struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */\n  // struct ct_data_s bl_tree[2*BL_CODES+1];  /* Huffman tree for bit lengths */\n\n  // Use flat array of DOUBLE size, with interleaved fata,\n  // because JS does not support effective\n  this.dyn_ltree  = new utils.Buf16(HEAP_SIZE * 2);\n  this.dyn_dtree  = new utils.Buf16((2 * D_CODES + 1) * 2);\n  this.bl_tree    = new utils.Buf16((2 * BL_CODES + 1) * 2);\n  zero(this.dyn_ltree);\n  zero(this.dyn_dtree);\n  zero(this.bl_tree);\n\n  this.l_desc   = null;         /* desc. for literal tree */\n  this.d_desc   = null;         /* desc. for distance tree */\n  this.bl_desc  = null;         /* desc. for bit length tree */\n\n  //ush bl_count[MAX_BITS+1];\n  this.bl_count = new utils.Buf16(MAX_BITS + 1);\n  /* number of codes at each bit length for an optimal tree */\n\n  //int heap[2*L_CODES+1];      /* heap used to build the Huffman trees */\n  this.heap = new utils.Buf16(2 * L_CODES + 1);  /* heap used to build the Huffman trees */\n  zero(this.heap);\n\n  this.heap_len = 0;               /* number of elements in the heap */\n  this.heap_max = 0;               /* element of largest frequency */\n  /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used.\n   * The same heap array is used to build all trees.\n   */\n\n  this.depth = new utils.Buf16(2 * L_CODES + 1); //uch depth[2*L_CODES+1];\n  zero(this.depth);\n  /* Depth of each subtree used as tie breaker for trees of equal frequency\n   */\n\n  this.l_buf = 0;          /* buffer index for literals or lengths */\n\n  this.lit_bufsize = 0;\n  /* Size of match buffer for literals/lengths.  There are 4 reasons for\n   * limiting lit_bufsize to 64K:\n   *   - frequencies can be kept in 16 bit counters\n   *   - if compression is not successful for the first block, all input\n   *     data is still in the window so we can still emit a stored block even\n   *     when input comes from standard input.  (This can also be done for\n   *     all blocks if lit_bufsize is not greater than 32K.)\n   *   - if compression is not successful for a file smaller than 64K, we can\n   *     even emit a stored file instead of a stored block (saving 5 bytes).\n   *     This is applicable only for zip (not gzip or zlib).\n   *   - creating new Huffman trees less frequently may not provide fast\n   *     adaptation to changes in the input data statistics. (Take for\n   *     example a binary file with poorly compressible code followed by\n   *     a highly compressible string table.) Smaller buffer sizes give\n   *     fast adaptation but have of course the overhead of transmitting\n   *     trees more frequently.\n   *   - I can't count above 4\n   */\n\n  this.last_lit = 0;      /* running index in l_buf */\n\n  this.d_buf = 0;\n  /* Buffer index for distances. To simplify the code, d_buf and l_buf have\n   * the same number of elements. To use different lengths, an extra flag\n   * array would be necessary.\n   */\n\n  this.opt_len = 0;       /* bit length of current block with optimal trees */\n  this.static_len = 0;    /* bit length of current block with static trees */\n  this.matches = 0;       /* number of string matches in current block */\n  this.insert = 0;        /* bytes at end of window left to insert */\n\n\n  this.bi_buf = 0;\n  /* Output buffer. bits are inserted starting at the bottom (least\n   * significant bits).\n   */\n  this.bi_valid = 0;\n  /* Number of valid bits in bi_buf.  All bits above the last valid bit\n   * are always zero.\n   */\n\n  // Used for window memory init. We safely ignore it for JS. That makes\n  // sense only for pointers and memory check tools.\n  //this.high_water = 0;\n  /* High water mark offset in window for initialized bytes -- bytes above\n   * this are set to zero in order to avoid memory check warnings when\n   * longest match routines access bytes past the input.  This is then\n   * updated to the new high water mark.\n   */\n}\n\n\nfunction deflateResetKeep(strm) {\n  var s;\n\n  if (!strm || !strm.state) {\n    return err(strm, Z_STREAM_ERROR);\n  }\n\n  strm.total_in = strm.total_out = 0;\n  strm.data_type = Z_UNKNOWN;\n\n  s = strm.state;\n  s.pending = 0;\n  s.pending_out = 0;\n\n  if (s.wrap < 0) {\n    s.wrap = -s.wrap;\n    /* was made negative by deflate(..., Z_FINISH); */\n  }\n  s.status = (s.wrap ? INIT_STATE : BUSY_STATE);\n  strm.adler = (s.wrap === 2) ?\n    0  // crc32(0, Z_NULL, 0)\n  :\n    1; // adler32(0, Z_NULL, 0)\n  s.last_flush = Z_NO_FLUSH;\n  trees._tr_init(s);\n  return Z_OK;\n}\n\n\nfunction deflateReset(strm) {\n  var ret = deflateResetKeep(strm);\n  if (ret === Z_OK) {\n    lm_init(strm.state);\n  }\n  return ret;\n}\n\n\nfunction deflateSetHeader(strm, head) {\n  if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n  if (strm.state.wrap !== 2) { return Z_STREAM_ERROR; }\n  strm.state.gzhead = head;\n  return Z_OK;\n}\n\n\nfunction deflateInit2(strm, level, method, windowBits, memLevel, strategy) {\n  if (!strm) { // === Z_NULL\n    return Z_STREAM_ERROR;\n  }\n  var wrap = 1;\n\n  if (level === Z_DEFAULT_COMPRESSION) {\n    level = 6;\n  }\n\n  if (windowBits < 0) { /* suppress zlib wrapper */\n    wrap = 0;\n    windowBits = -windowBits;\n  }\n\n  else if (windowBits > 15) {\n    wrap = 2;           /* write gzip wrapper instead */\n    windowBits -= 16;\n  }\n\n\n  if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method !== Z_DEFLATED ||\n    windowBits < 8 || windowBits > 15 || level < 0 || level > 9 ||\n    strategy < 0 || strategy > Z_FIXED) {\n    return err(strm, Z_STREAM_ERROR);\n  }\n\n\n  if (windowBits === 8) {\n    windowBits = 9;\n  }\n  /* until 256-byte window bug fixed */\n\n  var s = new DeflateState();\n\n  strm.state = s;\n  s.strm = strm;\n\n  s.wrap = wrap;\n  s.gzhead = null;\n  s.w_bits = windowBits;\n  s.w_size = 1 << s.w_bits;\n  s.w_mask = s.w_size - 1;\n\n  s.hash_bits = memLevel + 7;\n  s.hash_size = 1 << s.hash_bits;\n  s.hash_mask = s.hash_size - 1;\n  s.hash_shift = ~~((s.hash_bits + MIN_MATCH - 1) / MIN_MATCH);\n\n  s.window = new utils.Buf8(s.w_size * 2);\n  s.head = new utils.Buf16(s.hash_size);\n  s.prev = new utils.Buf16(s.w_size);\n\n  // Don't need mem init magic for JS.\n  //s.high_water = 0;  /* nothing written to s->window yet */\n\n  s.lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */\n\n  s.pending_buf_size = s.lit_bufsize * 4;\n\n  //overlay = (ushf *) ZALLOC(strm, s->lit_bufsize, sizeof(ush)+2);\n  //s->pending_buf = (uchf *) overlay;\n  s.pending_buf = new utils.Buf8(s.pending_buf_size);\n\n  // It is offset from `s.pending_buf` (size is `s.lit_bufsize * 2`)\n  //s->d_buf = overlay + s->lit_bufsize/sizeof(ush);\n  s.d_buf = 1 * s.lit_bufsize;\n\n  //s->l_buf = s->pending_buf + (1+sizeof(ush))*s->lit_bufsize;\n  s.l_buf = (1 + 2) * s.lit_bufsize;\n\n  s.level = level;\n  s.strategy = strategy;\n  s.method = method;\n\n  return deflateReset(strm);\n}\n\nfunction deflateInit(strm, level) {\n  return deflateInit2(strm, level, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY);\n}\n\n\nfunction deflate(strm, flush) {\n  var old_flush, s;\n  var beg, val; // for gzip header write only\n\n  if (!strm || !strm.state ||\n    flush > Z_BLOCK || flush < 0) {\n    return strm ? err(strm, Z_STREAM_ERROR) : Z_STREAM_ERROR;\n  }\n\n  s = strm.state;\n\n  if (!strm.output ||\n      (!strm.input && strm.avail_in !== 0) ||\n      (s.status === FINISH_STATE && flush !== Z_FINISH)) {\n    return err(strm, (strm.avail_out === 0) ? Z_BUF_ERROR : Z_STREAM_ERROR);\n  }\n\n  s.strm = strm; /* just in case */\n  old_flush = s.last_flush;\n  s.last_flush = flush;\n\n  /* Write the header */\n  if (s.status === INIT_STATE) {\n\n    if (s.wrap === 2) { // GZIP header\n      strm.adler = 0;  //crc32(0L, Z_NULL, 0);\n      put_byte(s, 31);\n      put_byte(s, 139);\n      put_byte(s, 8);\n      if (!s.gzhead) { // s->gzhead == Z_NULL\n        put_byte(s, 0);\n        put_byte(s, 0);\n        put_byte(s, 0);\n        put_byte(s, 0);\n        put_byte(s, 0);\n        put_byte(s, s.level === 9 ? 2 :\n                    (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n                     4 : 0));\n        put_byte(s, OS_CODE);\n        s.status = BUSY_STATE;\n      }\n      else {\n        put_byte(s, (s.gzhead.text ? 1 : 0) +\n                    (s.gzhead.hcrc ? 2 : 0) +\n                    (!s.gzhead.extra ? 0 : 4) +\n                    (!s.gzhead.name ? 0 : 8) +\n                    (!s.gzhead.comment ? 0 : 16)\n        );\n        put_byte(s, s.gzhead.time & 0xff);\n        put_byte(s, (s.gzhead.time >> 8) & 0xff);\n        put_byte(s, (s.gzhead.time >> 16) & 0xff);\n        put_byte(s, (s.gzhead.time >> 24) & 0xff);\n        put_byte(s, s.level === 9 ? 2 :\n                    (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n                     4 : 0));\n        put_byte(s, s.gzhead.os & 0xff);\n        if (s.gzhead.extra && s.gzhead.extra.length) {\n          put_byte(s, s.gzhead.extra.length & 0xff);\n          put_byte(s, (s.gzhead.extra.length >> 8) & 0xff);\n        }\n        if (s.gzhead.hcrc) {\n          strm.adler = crc32(strm.adler, s.pending_buf, s.pending, 0);\n        }\n        s.gzindex = 0;\n        s.status = EXTRA_STATE;\n      }\n    }\n    else // DEFLATE header\n    {\n      var header = (Z_DEFLATED + ((s.w_bits - 8) << 4)) << 8;\n      var level_flags = -1;\n\n      if (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2) {\n        level_flags = 0;\n      } else if (s.level < 6) {\n        level_flags = 1;\n      } else if (s.level === 6) {\n        level_flags = 2;\n      } else {\n        level_flags = 3;\n      }\n      header |= (level_flags << 6);\n      if (s.strstart !== 0) { header |= PRESET_DICT; }\n      header += 31 - (header % 31);\n\n      s.status = BUSY_STATE;\n      putShortMSB(s, header);\n\n      /* Save the adler32 of the preset dictionary: */\n      if (s.strstart !== 0) {\n        putShortMSB(s, strm.adler >>> 16);\n        putShortMSB(s, strm.adler & 0xffff);\n      }\n      strm.adler = 1; // adler32(0L, Z_NULL, 0);\n    }\n  }\n\n//#ifdef GZIP\n  if (s.status === EXTRA_STATE) {\n    if (s.gzhead.extra/* != Z_NULL*/) {\n      beg = s.pending;  /* start of bytes to update crc */\n\n      while (s.gzindex < (s.gzhead.extra.length & 0xffff)) {\n        if (s.pending === s.pending_buf_size) {\n          if (s.gzhead.hcrc && s.pending > beg) {\n            strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n          }\n          flush_pending(strm);\n          beg = s.pending;\n          if (s.pending === s.pending_buf_size) {\n            break;\n          }\n        }\n        put_byte(s, s.gzhead.extra[s.gzindex] & 0xff);\n        s.gzindex++;\n      }\n      if (s.gzhead.hcrc && s.pending > beg) {\n        strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n      }\n      if (s.gzindex === s.gzhead.extra.length) {\n        s.gzindex = 0;\n        s.status = NAME_STATE;\n      }\n    }\n    else {\n      s.status = NAME_STATE;\n    }\n  }\n  if (s.status === NAME_STATE) {\n    if (s.gzhead.name/* != Z_NULL*/) {\n      beg = s.pending;  /* start of bytes to update crc */\n      //int val;\n\n      do {\n        if (s.pending === s.pending_buf_size) {\n          if (s.gzhead.hcrc && s.pending > beg) {\n            strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n          }\n          flush_pending(strm);\n          beg = s.pending;\n          if (s.pending === s.pending_buf_size) {\n            val = 1;\n            break;\n          }\n        }\n        // JS specific: little magic to add zero terminator to end of string\n        if (s.gzindex < s.gzhead.name.length) {\n          val = s.gzhead.name.charCodeAt(s.gzindex++) & 0xff;\n        } else {\n          val = 0;\n        }\n        put_byte(s, val);\n      } while (val !== 0);\n\n      if (s.gzhead.hcrc && s.pending > beg) {\n        strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n      }\n      if (val === 0) {\n        s.gzindex = 0;\n        s.status = COMMENT_STATE;\n      }\n    }\n    else {\n      s.status = COMMENT_STATE;\n    }\n  }\n  if (s.status === COMMENT_STATE) {\n    if (s.gzhead.comment/* != Z_NULL*/) {\n      beg = s.pending;  /* start of bytes to update crc */\n      //int val;\n\n      do {\n        if (s.pending === s.pending_buf_size) {\n          if (s.gzhead.hcrc && s.pending > beg) {\n            strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n          }\n          flush_pending(strm);\n          beg = s.pending;\n          if (s.pending === s.pending_buf_size) {\n            val = 1;\n            break;\n          }\n        }\n        // JS specific: little magic to add zero terminator to end of string\n        if (s.gzindex < s.gzhead.comment.length) {\n          val = s.gzhead.comment.charCodeAt(s.gzindex++) & 0xff;\n        } else {\n          val = 0;\n        }\n        put_byte(s, val);\n      } while (val !== 0);\n\n      if (s.gzhead.hcrc && s.pending > beg) {\n        strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n      }\n      if (val === 0) {\n        s.status = HCRC_STATE;\n      }\n    }\n    else {\n      s.status = HCRC_STATE;\n    }\n  }\n  if (s.status === HCRC_STATE) {\n    if (s.gzhead.hcrc) {\n      if (s.pending + 2 > s.pending_buf_size) {\n        flush_pending(strm);\n      }\n      if (s.pending + 2 <= s.pending_buf_size) {\n        put_byte(s, strm.adler & 0xff);\n        put_byte(s, (strm.adler >> 8) & 0xff);\n        strm.adler = 0; //crc32(0L, Z_NULL, 0);\n        s.status = BUSY_STATE;\n      }\n    }\n    else {\n      s.status = BUSY_STATE;\n    }\n  }\n//#endif\n\n  /* Flush as much pending output as possible */\n  if (s.pending !== 0) {\n    flush_pending(strm);\n    if (strm.avail_out === 0) {\n      /* Since avail_out is 0, deflate will be called again with\n       * more output space, but possibly with both pending and\n       * avail_in equal to zero. There won't be anything to do,\n       * but this is not an error situation so make sure we\n       * return OK instead of BUF_ERROR at next call of deflate:\n       */\n      s.last_flush = -1;\n      return Z_OK;\n    }\n\n    /* Make sure there is something to do and avoid duplicate consecutive\n     * flushes. For repeated and useless calls with Z_FINISH, we keep\n     * returning Z_STREAM_END instead of Z_BUF_ERROR.\n     */\n  } else if (strm.avail_in === 0 && rank(flush) <= rank(old_flush) &&\n    flush !== Z_FINISH) {\n    return err(strm, Z_BUF_ERROR);\n  }\n\n  /* User must not provide more input after the first FINISH: */\n  if (s.status === FINISH_STATE && strm.avail_in !== 0) {\n    return err(strm, Z_BUF_ERROR);\n  }\n\n  /* Start a new block or continue the current one.\n   */\n  if (strm.avail_in !== 0 || s.lookahead !== 0 ||\n    (flush !== Z_NO_FLUSH && s.status !== FINISH_STATE)) {\n    var bstate = (s.strategy === Z_HUFFMAN_ONLY) ? deflate_huff(s, flush) :\n      (s.strategy === Z_RLE ? deflate_rle(s, flush) :\n        configuration_table[s.level].func(s, flush));\n\n    if (bstate === BS_FINISH_STARTED || bstate === BS_FINISH_DONE) {\n      s.status = FINISH_STATE;\n    }\n    if (bstate === BS_NEED_MORE || bstate === BS_FINISH_STARTED) {\n      if (strm.avail_out === 0) {\n        s.last_flush = -1;\n        /* avoid BUF_ERROR next call, see above */\n      }\n      return Z_OK;\n      /* If flush != Z_NO_FLUSH && avail_out == 0, the next call\n       * of deflate should use the same flush parameter to make sure\n       * that the flush is complete. So we don't have to output an\n       * empty block here, this will be done at next call. This also\n       * ensures that for a very small output buffer, we emit at most\n       * one empty block.\n       */\n    }\n    if (bstate === BS_BLOCK_DONE) {\n      if (flush === Z_PARTIAL_FLUSH) {\n        trees._tr_align(s);\n      }\n      else if (flush !== Z_BLOCK) { /* FULL_FLUSH or SYNC_FLUSH */\n\n        trees._tr_stored_block(s, 0, 0, false);\n        /* For a full flush, this empty block will be recognized\n         * as a special marker by inflate_sync().\n         */\n        if (flush === Z_FULL_FLUSH) {\n          /*** CLEAR_HASH(s); ***/             /* forget history */\n          zero(s.head); // Fill with NIL (= 0);\n\n          if (s.lookahead === 0) {\n            s.strstart = 0;\n            s.block_start = 0;\n            s.insert = 0;\n          }\n        }\n      }\n      flush_pending(strm);\n      if (strm.avail_out === 0) {\n        s.last_flush = -1; /* avoid BUF_ERROR at next call, see above */\n        return Z_OK;\n      }\n    }\n  }\n  //Assert(strm->avail_out > 0, \"bug2\");\n  //if (strm.avail_out <= 0) { throw new Error(\"bug2\");}\n\n  if (flush !== Z_FINISH) { return Z_OK; }\n  if (s.wrap <= 0) { return Z_STREAM_END; }\n\n  /* Write the trailer */\n  if (s.wrap === 2) {\n    put_byte(s, strm.adler & 0xff);\n    put_byte(s, (strm.adler >> 8) & 0xff);\n    put_byte(s, (strm.adler >> 16) & 0xff);\n    put_byte(s, (strm.adler >> 24) & 0xff);\n    put_byte(s, strm.total_in & 0xff);\n    put_byte(s, (strm.total_in >> 8) & 0xff);\n    put_byte(s, (strm.total_in >> 16) & 0xff);\n    put_byte(s, (strm.total_in >> 24) & 0xff);\n  }\n  else\n  {\n    putShortMSB(s, strm.adler >>> 16);\n    putShortMSB(s, strm.adler & 0xffff);\n  }\n\n  flush_pending(strm);\n  /* If avail_out is zero, the application will call deflate again\n   * to flush the rest.\n   */\n  if (s.wrap > 0) { s.wrap = -s.wrap; }\n  /* write the trailer only once! */\n  return s.pending !== 0 ? Z_OK : Z_STREAM_END;\n}\n\nfunction deflateEnd(strm) {\n  var status;\n\n  if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {\n    return Z_STREAM_ERROR;\n  }\n\n  status = strm.state.status;\n  if (status !== INIT_STATE &&\n    status !== EXTRA_STATE &&\n    status !== NAME_STATE &&\n    status !== COMMENT_STATE &&\n    status !== HCRC_STATE &&\n    status !== BUSY_STATE &&\n    status !== FINISH_STATE\n  ) {\n    return err(strm, Z_STREAM_ERROR);\n  }\n\n  strm.state = null;\n\n  return status === BUSY_STATE ? err(strm, Z_DATA_ERROR) : Z_OK;\n}\n\n\n/* =========================================================================\n * Initializes the compression dictionary from the given byte\n * sequence without producing any compressed output.\n */\nfunction deflateSetDictionary(strm, dictionary) {\n  var dictLength = dictionary.length;\n\n  var s;\n  var str, n;\n  var wrap;\n  var avail;\n  var next;\n  var input;\n  var tmpDict;\n\n  if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {\n    return Z_STREAM_ERROR;\n  }\n\n  s = strm.state;\n  wrap = s.wrap;\n\n  if (wrap === 2 || (wrap === 1 && s.status !== INIT_STATE) || s.lookahead) {\n    return Z_STREAM_ERROR;\n  }\n\n  /* when using zlib wrappers, compute Adler-32 for provided dictionary */\n  if (wrap === 1) {\n    /* adler32(strm->adler, dictionary, dictLength); */\n    strm.adler = adler32(strm.adler, dictionary, dictLength, 0);\n  }\n\n  s.wrap = 0;   /* avoid computing Adler-32 in read_buf */\n\n  /* if dictionary would fill window, just replace the history */\n  if (dictLength >= s.w_size) {\n    if (wrap === 0) {            /* already empty otherwise */\n      /*** CLEAR_HASH(s); ***/\n      zero(s.head); // Fill with NIL (= 0);\n      s.strstart = 0;\n      s.block_start = 0;\n      s.insert = 0;\n    }\n    /* use the tail */\n    // dictionary = dictionary.slice(dictLength - s.w_size);\n    tmpDict = new utils.Buf8(s.w_size);\n    utils.arraySet(tmpDict, dictionary, dictLength - s.w_size, s.w_size, 0);\n    dictionary = tmpDict;\n    dictLength = s.w_size;\n  }\n  /* insert dictionary into window and hash */\n  avail = strm.avail_in;\n  next = strm.next_in;\n  input = strm.input;\n  strm.avail_in = dictLength;\n  strm.next_in = 0;\n  strm.input = dictionary;\n  fill_window(s);\n  while (s.lookahead >= MIN_MATCH) {\n    str = s.strstart;\n    n = s.lookahead - (MIN_MATCH - 1);\n    do {\n      /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n      s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask;\n\n      s.prev[str & s.w_mask] = s.head[s.ins_h];\n\n      s.head[s.ins_h] = str;\n      str++;\n    } while (--n);\n    s.strstart = str;\n    s.lookahead = MIN_MATCH - 1;\n    fill_window(s);\n  }\n  s.strstart += s.lookahead;\n  s.block_start = s.strstart;\n  s.insert = s.lookahead;\n  s.lookahead = 0;\n  s.match_length = s.prev_length = MIN_MATCH - 1;\n  s.match_available = 0;\n  strm.next_in = next;\n  strm.input = input;\n  strm.avail_in = avail;\n  s.wrap = wrap;\n  return Z_OK;\n}\n\n\nexports.deflateInit = deflateInit;\nexports.deflateInit2 = deflateInit2;\nexports.deflateReset = deflateReset;\nexports.deflateResetKeep = deflateResetKeep;\nexports.deflateSetHeader = deflateSetHeader;\nexports.deflate = deflate;\nexports.deflateEnd = deflateEnd;\nexports.deflateSetDictionary = deflateSetDictionary;\nexports.deflateInfo = 'pako deflate (from Nodeca project)';\n\n/* Not implemented\nexports.deflateBound = deflateBound;\nexports.deflateCopy = deflateCopy;\nexports.deflateParams = deflateParams;\nexports.deflatePending = deflatePending;\nexports.deflatePrime = deflatePrime;\nexports.deflateTune = deflateTune;\n*/\n", "'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// See state defs from inflate.js\nvar BAD = 30;       /* got a data error -- remain here until reset */\nvar TYPE = 12;      /* i: waiting for type bits, including last-flag bit */\n\n/*\n   Decode literal, length, and distance codes and write out the resulting\n   literal and match bytes until either not enough input or output is\n   available, an end-of-block is encountered, or a data error is encountered.\n   When large enough input and output buffers are supplied to inflate(), for\n   example, a 16K input buffer and a 64K output buffer, more than 95% of the\n   inflate execution time is spent in this routine.\n\n   Entry assumptions:\n\n        state.mode === LEN\n        strm.avail_in >= 6\n        strm.avail_out >= 258\n        start >= strm.avail_out\n        state.bits < 8\n\n   On return, state.mode is one of:\n\n        LEN -- ran out of enough output space or enough available input\n        TYPE -- reached end of block code, inflate() to interpret next block\n        BAD -- error in block data\n\n   Notes:\n\n    - The maximum input bits used by a length/distance pair is 15 bits for the\n      length code, 5 bits for the length extra, 15 bits for the distance code,\n      and 13 bits for the distance extra.  This totals 48 bits, or six bytes.\n      Therefore if strm.avail_in >= 6, then there is enough input to avoid\n      checking for available input while decoding.\n\n    - The maximum bytes that a single length/distance pair can output is 258\n      bytes, which is the maximum length that can be coded.  inflate_fast()\n      requires strm.avail_out >= 258 for each loop to avoid checking for\n      output space.\n */\nmodule.exports = function inflate_fast(strm, start) {\n  var state;\n  var _in;                    /* local strm.input */\n  var last;                   /* have enough input while in < last */\n  var _out;                   /* local strm.output */\n  var beg;                    /* inflate()'s initial strm.output */\n  var end;                    /* while out < end, enough space available */\n//#ifdef INFLATE_STRICT\n  var dmax;                   /* maximum distance from zlib header */\n//#endif\n  var wsize;                  /* window size or zero if not using window */\n  var whave;                  /* valid bytes in the window */\n  var wnext;                  /* window write index */\n  // Use `s_window` instead `window`, avoid conflict with instrumentation tools\n  var s_window;               /* allocated sliding window, if wsize != 0 */\n  var hold;                   /* local strm.hold */\n  var bits;                   /* local strm.bits */\n  var lcode;                  /* local strm.lencode */\n  var dcode;                  /* local strm.distcode */\n  var lmask;                  /* mask for first level of length codes */\n  var dmask;                  /* mask for first level of distance codes */\n  var here;                   /* retrieved table entry */\n  var op;                     /* code bits, operation, extra bits, or */\n                              /*  window position, window bytes to copy */\n  var len;                    /* match length, unused bytes */\n  var dist;                   /* match distance */\n  var from;                   /* where to copy match from */\n  var from_source;\n\n\n  var input, output; // JS specific, because we have no pointers\n\n  /* copy state to local variables */\n  state = strm.state;\n  //here = state.here;\n  _in = strm.next_in;\n  input = strm.input;\n  last = _in + (strm.avail_in - 5);\n  _out = strm.next_out;\n  output = strm.output;\n  beg = _out - (start - strm.avail_out);\n  end = _out + (strm.avail_out - 257);\n//#ifdef INFLATE_STRICT\n  dmax = state.dmax;\n//#endif\n  wsize = state.wsize;\n  whave = state.whave;\n  wnext = state.wnext;\n  s_window = state.window;\n  hold = state.hold;\n  bits = state.bits;\n  lcode = state.lencode;\n  dcode = state.distcode;\n  lmask = (1 << state.lenbits) - 1;\n  dmask = (1 << state.distbits) - 1;\n\n\n  /* decode literals and length/distances until end-of-block or not enough\n     input data or output space */\n\n  top:\n  do {\n    if (bits < 15) {\n      hold += input[_in++] << bits;\n      bits += 8;\n      hold += input[_in++] << bits;\n      bits += 8;\n    }\n\n    here = lcode[hold & lmask];\n\n    dolen:\n    for (;;) { // Goto emulation\n      op = here >>> 24/*here.bits*/;\n      hold >>>= op;\n      bits -= op;\n      op = (here >>> 16) & 0xff/*here.op*/;\n      if (op === 0) {                          /* literal */\n        //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n        //        \"inflate:         literal '%c'\\n\" :\n        //        \"inflate:         literal 0x%02x\\n\", here.val));\n        output[_out++] = here & 0xffff/*here.val*/;\n      }\n      else if (op & 16) {                     /* length base */\n        len = here & 0xffff/*here.val*/;\n        op &= 15;                           /* number of extra bits */\n        if (op) {\n          if (bits < op) {\n            hold += input[_in++] << bits;\n            bits += 8;\n          }\n          len += hold & ((1 << op) - 1);\n          hold >>>= op;\n          bits -= op;\n        }\n        //Tracevv((stderr, \"inflate:         length %u\\n\", len));\n        if (bits < 15) {\n          hold += input[_in++] << bits;\n          bits += 8;\n          hold += input[_in++] << bits;\n          bits += 8;\n        }\n        here = dcode[hold & dmask];\n\n        dodist:\n        for (;;) { // goto emulation\n          op = here >>> 24/*here.bits*/;\n          hold >>>= op;\n          bits -= op;\n          op = (here >>> 16) & 0xff/*here.op*/;\n\n          if (op & 16) {                      /* distance base */\n            dist = here & 0xffff/*here.val*/;\n            op &= 15;                       /* number of extra bits */\n            if (bits < op) {\n              hold += input[_in++] << bits;\n              bits += 8;\n              if (bits < op) {\n                hold += input[_in++] << bits;\n                bits += 8;\n              }\n            }\n            dist += hold & ((1 << op) - 1);\n//#ifdef INFLATE_STRICT\n            if (dist > dmax) {\n              strm.msg = 'invalid distance too far back';\n              state.mode = BAD;\n              break top;\n            }\n//#endif\n            hold >>>= op;\n            bits -= op;\n            //Tracevv((stderr, \"inflate:         distance %u\\n\", dist));\n            op = _out - beg;                /* max distance in output */\n            if (dist > op) {                /* see if copy from window */\n              op = dist - op;               /* distance back in window */\n              if (op > whave) {\n                if (state.sane) {\n                  strm.msg = 'invalid distance too far back';\n                  state.mode = BAD;\n                  break top;\n                }\n\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n//                if (len <= op - whave) {\n//                  do {\n//                    output[_out++] = 0;\n//                  } while (--len);\n//                  continue top;\n//                }\n//                len -= op - whave;\n//                do {\n//                  output[_out++] = 0;\n//                } while (--op > whave);\n//                if (op === 0) {\n//                  from = _out - dist;\n//                  do {\n//                    output[_out++] = output[from++];\n//                  } while (--len);\n//                  continue top;\n//                }\n//#endif\n              }\n              from = 0; // window index\n              from_source = s_window;\n              if (wnext === 0) {           /* very common case */\n                from += wsize - op;\n                if (op < len) {         /* some from window */\n                  len -= op;\n                  do {\n                    output[_out++] = s_window[from++];\n                  } while (--op);\n                  from = _out - dist;  /* rest from output */\n                  from_source = output;\n                }\n              }\n              else if (wnext < op) {      /* wrap around window */\n                from += wsize + wnext - op;\n                op -= wnext;\n                if (op < len) {         /* some from end of window */\n                  len -= op;\n                  do {\n                    output[_out++] = s_window[from++];\n                  } while (--op);\n                  from = 0;\n                  if (wnext < len) {  /* some from start of window */\n                    op = wnext;\n                    len -= op;\n                    do {\n                      output[_out++] = s_window[from++];\n                    } while (--op);\n                    from = _out - dist;      /* rest from output */\n                    from_source = output;\n                  }\n                }\n              }\n              else {                      /* contiguous in window */\n                from += wnext - op;\n                if (op < len) {         /* some from window */\n                  len -= op;\n                  do {\n                    output[_out++] = s_window[from++];\n                  } while (--op);\n                  from = _out - dist;  /* rest from output */\n                  from_source = output;\n                }\n              }\n              while (len > 2) {\n                output[_out++] = from_source[from++];\n                output[_out++] = from_source[from++];\n                output[_out++] = from_source[from++];\n                len -= 3;\n              }\n              if (len) {\n                output[_out++] = from_source[from++];\n                if (len > 1) {\n                  output[_out++] = from_source[from++];\n                }\n              }\n            }\n            else {\n              from = _out - dist;          /* copy direct from output */\n              do {                        /* minimum length is three */\n                output[_out++] = output[from++];\n                output[_out++] = output[from++];\n                output[_out++] = output[from++];\n                len -= 3;\n              } while (len > 2);\n              if (len) {\n                output[_out++] = output[from++];\n                if (len > 1) {\n                  output[_out++] = output[from++];\n                }\n              }\n            }\n          }\n          else if ((op & 64) === 0) {          /* 2nd level distance code */\n            here = dcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n            continue dodist;\n          }\n          else {\n            strm.msg = 'invalid distance code';\n            state.mode = BAD;\n            break top;\n          }\n\n          break; // need to emulate goto via \"continue\"\n        }\n      }\n      else if ((op & 64) === 0) {              /* 2nd level length code */\n        here = lcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n        continue dolen;\n      }\n      else if (op & 32) {                     /* end-of-block */\n        //Tracevv((stderr, \"inflate:         end of block\\n\"));\n        state.mode = TYPE;\n        break top;\n      }\n      else {\n        strm.msg = 'invalid literal/length code';\n        state.mode = BAD;\n        break top;\n      }\n\n      break; // need to emulate goto via \"continue\"\n    }\n  } while (_in < last && _out < end);\n\n  /* return unused bytes (on entry, bits < 8, so in won't go too far back) */\n  len = bits >> 3;\n  _in -= len;\n  bits -= len << 3;\n  hold &= (1 << bits) - 1;\n\n  /* update state and return */\n  strm.next_in = _in;\n  strm.next_out = _out;\n  strm.avail_in = (_in < last ? 5 + (last - _in) : 5 - (_in - last));\n  strm.avail_out = (_out < end ? 257 + (end - _out) : 257 - (_out - end));\n  state.hold = hold;\n  state.bits = bits;\n  return;\n};\n", "'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar utils         = require('../utils/common');\nvar adler32       = require('./adler32');\nvar crc32         = require('./crc32');\nvar inflate_fast  = require('./inffast');\nvar inflate_table = require('./inftrees');\n\nvar CODES = 0;\nvar LENS = 1;\nvar DISTS = 2;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n/* Allowed flush values; see deflate() and inflate() below for details */\n//var Z_NO_FLUSH      = 0;\n//var Z_PARTIAL_FLUSH = 1;\n//var Z_SYNC_FLUSH    = 2;\n//var Z_FULL_FLUSH    = 3;\nvar Z_FINISH        = 4;\nvar Z_BLOCK         = 5;\nvar Z_TREES         = 6;\n\n\n/* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\nvar Z_OK            = 0;\nvar Z_STREAM_END    = 1;\nvar Z_NEED_DICT     = 2;\n//var Z_ERRNO         = -1;\nvar Z_STREAM_ERROR  = -2;\nvar Z_DATA_ERROR    = -3;\nvar Z_MEM_ERROR     = -4;\nvar Z_BUF_ERROR     = -5;\n//var Z_VERSION_ERROR = -6;\n\n/* The deflate compression method */\nvar Z_DEFLATED  = 8;\n\n\n/* STATES ====================================================================*/\n/* ===========================================================================*/\n\n\nvar    HEAD = 1;       /* i: waiting for magic header */\nvar    FLAGS = 2;      /* i: waiting for method and flags (gzip) */\nvar    TIME = 3;       /* i: waiting for modification time (gzip) */\nvar    OS = 4;         /* i: waiting for extra flags and operating system (gzip) */\nvar    EXLEN = 5;      /* i: waiting for extra length (gzip) */\nvar    EXTRA = 6;      /* i: waiting for extra bytes (gzip) */\nvar    NAME = 7;       /* i: waiting for end of file name (gzip) */\nvar    COMMENT = 8;    /* i: waiting for end of comment (gzip) */\nvar    HCRC = 9;       /* i: waiting for header crc (gzip) */\nvar    DICTID = 10;    /* i: waiting for dictionary check value */\nvar    DICT = 11;      /* waiting for inflateSetDictionary() call */\nvar        TYPE = 12;      /* i: waiting for type bits, including last-flag bit */\nvar        TYPEDO = 13;    /* i: same, but skip check to exit inflate on new block */\nvar        STORED = 14;    /* i: waiting for stored size (length and complement) */\nvar        COPY_ = 15;     /* i/o: same as COPY below, but only first time in */\nvar        COPY = 16;      /* i/o: waiting for input or output to copy stored block */\nvar        TABLE = 17;     /* i: waiting for dynamic block table lengths */\nvar        LENLENS = 18;   /* i: waiting for code length code lengths */\nvar        CODELENS = 19;  /* i: waiting for length/lit and distance code lengths */\nvar            LEN_ = 20;      /* i: same as LEN below, but only first time in */\nvar            LEN = 21;       /* i: waiting for length/lit/eob code */\nvar            LENEXT = 22;    /* i: waiting for length extra bits */\nvar            DIST = 23;      /* i: waiting for distance code */\nvar            DISTEXT = 24;   /* i: waiting for distance extra bits */\nvar            MATCH = 25;     /* o: waiting for output space to copy string */\nvar            LIT = 26;       /* o: waiting for output space to write literal */\nvar    CHECK = 27;     /* i: waiting for 32-bit check value */\nvar    LENGTH = 28;    /* i: waiting for 32-bit length (gzip) */\nvar    DONE = 29;      /* finished check, done -- remain here until reset */\nvar    BAD = 30;       /* got a data error -- remain here until reset */\nvar    MEM = 31;       /* got an inflate() memory error -- remain here until reset */\nvar    SYNC = 32;      /* looking for synchronization bytes to restart inflate() */\n\n/* ===========================================================================*/\n\n\n\nvar ENOUGH_LENS = 852;\nvar ENOUGH_DISTS = 592;\n//var ENOUGH =  (ENOUGH_LENS+ENOUGH_DISTS);\n\nvar MAX_WBITS = 15;\n/* 32K LZ77 window */\nvar DEF_WBITS = MAX_WBITS;\n\n\nfunction zswap32(q) {\n  return  (((q >>> 24) & 0xff) +\n          ((q >>> 8) & 0xff00) +\n          ((q & 0xff00) << 8) +\n          ((q & 0xff) << 24));\n}\n\n\nfunction InflateState() {\n  this.mode = 0;             /* current inflate mode */\n  this.last = false;          /* true if processing last block */\n  this.wrap = 0;              /* bit 0 true for zlib, bit 1 true for gzip */\n  this.havedict = false;      /* true if dictionary provided */\n  this.flags = 0;             /* gzip header method and flags (0 if zlib) */\n  this.dmax = 0;              /* zlib header max distance (INFLATE_STRICT) */\n  this.check = 0;             /* protected copy of check value */\n  this.total = 0;             /* protected copy of output count */\n  // TODO: may be {}\n  this.head = null;           /* where to save gzip header information */\n\n  /* sliding window */\n  this.wbits = 0;             /* log base 2 of requested window size */\n  this.wsize = 0;             /* window size or zero if not using window */\n  this.whave = 0;             /* valid bytes in the window */\n  this.wnext = 0;             /* window write index */\n  this.window = null;         /* allocated sliding window, if needed */\n\n  /* bit accumulator */\n  this.hold = 0;              /* input bit accumulator */\n  this.bits = 0;              /* number of bits in \"in\" */\n\n  /* for string and stored block copying */\n  this.length = 0;            /* literal or length of data to copy */\n  this.offset = 0;            /* distance back to copy string from */\n\n  /* for table and code decoding */\n  this.extra = 0;             /* extra bits needed */\n\n  /* fixed and dynamic code tables */\n  this.lencode = null;          /* starting table for length/literal codes */\n  this.distcode = null;         /* starting table for distance codes */\n  this.lenbits = 0;           /* index bits for lencode */\n  this.distbits = 0;          /* index bits for distcode */\n\n  /* dynamic table building */\n  this.ncode = 0;             /* number of code length code lengths */\n  this.nlen = 0;              /* number of length code lengths */\n  this.ndist = 0;             /* number of distance code lengths */\n  this.have = 0;              /* number of code lengths in lens[] */\n  this.next = null;              /* next available space in codes[] */\n\n  this.lens = new utils.Buf16(320); /* temporary storage for code lengths */\n  this.work = new utils.Buf16(288); /* work area for code table building */\n\n  /*\n   because we don't have pointers in js, we use lencode and distcode directly\n   as buffers so we don't need codes\n  */\n  //this.codes = new utils.Buf32(ENOUGH);       /* space for code tables */\n  this.lendyn = null;              /* dynamic table for length/literal codes (JS specific) */\n  this.distdyn = null;             /* dynamic table for distance codes (JS specific) */\n  this.sane = 0;                   /* if false, allow invalid distance too far */\n  this.back = 0;                   /* bits back of last unprocessed length/lit */\n  this.was = 0;                    /* initial length of match */\n}\n\nfunction inflateResetKeep(strm) {\n  var state;\n\n  if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n  state = strm.state;\n  strm.total_in = strm.total_out = state.total = 0;\n  strm.msg = ''; /*Z_NULL*/\n  if (state.wrap) {       /* to support ill-conceived Java test suite */\n    strm.adler = state.wrap & 1;\n  }\n  state.mode = HEAD;\n  state.last = 0;\n  state.havedict = 0;\n  state.dmax = 32768;\n  state.head = null/*Z_NULL*/;\n  state.hold = 0;\n  state.bits = 0;\n  //state.lencode = state.distcode = state.next = state.codes;\n  state.lencode = state.lendyn = new utils.Buf32(ENOUGH_LENS);\n  state.distcode = state.distdyn = new utils.Buf32(ENOUGH_DISTS);\n\n  state.sane = 1;\n  state.back = -1;\n  //Tracev((stderr, \"inflate: reset\\n\"));\n  return Z_OK;\n}\n\nfunction inflateReset(strm) {\n  var state;\n\n  if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n  state = strm.state;\n  state.wsize = 0;\n  state.whave = 0;\n  state.wnext = 0;\n  return inflateResetKeep(strm);\n\n}\n\nfunction inflateReset2(strm, windowBits) {\n  var wrap;\n  var state;\n\n  /* get the state */\n  if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n  state = strm.state;\n\n  /* extract wrap request from windowBits parameter */\n  if (windowBits < 0) {\n    wrap = 0;\n    windowBits = -windowBits;\n  }\n  else {\n    wrap = (windowBits >> 4) + 1;\n    if (windowBits < 48) {\n      windowBits &= 15;\n    }\n  }\n\n  /* set number of window bits, free window if different */\n  if (windowBits && (windowBits < 8 || windowBits > 15)) {\n    return Z_STREAM_ERROR;\n  }\n  if (state.window !== null && state.wbits !== windowBits) {\n    state.window = null;\n  }\n\n  /* update state and reset the rest of it */\n  state.wrap = wrap;\n  state.wbits = windowBits;\n  return inflateReset(strm);\n}\n\nfunction inflateInit2(strm, windowBits) {\n  var ret;\n  var state;\n\n  if (!strm) { return Z_STREAM_ERROR; }\n  //strm.msg = Z_NULL;                 /* in case we return an error */\n\n  state = new InflateState();\n\n  //if (state === Z_NULL) return Z_MEM_ERROR;\n  //Tracev((stderr, \"inflate: allocated\\n\"));\n  strm.state = state;\n  state.window = null/*Z_NULL*/;\n  ret = inflateReset2(strm, windowBits);\n  if (ret !== Z_OK) {\n    strm.state = null/*Z_NULL*/;\n  }\n  return ret;\n}\n\nfunction inflateInit(strm) {\n  return inflateInit2(strm, DEF_WBITS);\n}\n\n\n/*\n Return state with length and distance decoding tables and index sizes set to\n fixed code decoding.  Normally this returns fixed tables from inffixed.h.\n If BUILDFIXED is defined, then instead this routine builds the tables the\n first time it's called, and returns those tables the first time and\n thereafter.  This reduces the size of the code by about 2K bytes, in\n exchange for a little execution time.  However, BUILDFIXED should not be\n used for threaded applications, since the rewriting of the tables and virgin\n may not be thread-safe.\n */\nvar virgin = true;\n\nvar lenfix, distfix; // We have no pointers in JS, so keep tables separate\n\nfunction fixedtables(state) {\n  /* build fixed huffman tables if first call (may not be thread safe) */\n  if (virgin) {\n    var sym;\n\n    lenfix = new utils.Buf32(512);\n    distfix = new utils.Buf32(32);\n\n    /* literal/length table */\n    sym = 0;\n    while (sym < 144) { state.lens[sym++] = 8; }\n    while (sym < 256) { state.lens[sym++] = 9; }\n    while (sym < 280) { state.lens[sym++] = 7; }\n    while (sym < 288) { state.lens[sym++] = 8; }\n\n    inflate_table(LENS,  state.lens, 0, 288, lenfix,   0, state.work, { bits: 9 });\n\n    /* distance table */\n    sym = 0;\n    while (sym < 32) { state.lens[sym++] = 5; }\n\n    inflate_table(DISTS, state.lens, 0, 32,   distfix, 0, state.work, { bits: 5 });\n\n    /* do this just once */\n    virgin = false;\n  }\n\n  state.lencode = lenfix;\n  state.lenbits = 9;\n  state.distcode = distfix;\n  state.distbits = 5;\n}\n\n\n/*\n Update the window with the last wsize (normally 32K) bytes written before\n returning.  If window does not exist yet, create it.  This is only called\n when a window is already in use, or when output has been written during this\n inflate call, but the end of the deflate stream has not been reached yet.\n It is also called to create a window for dictionary data when a dictionary\n is loaded.\n\n Providing output buffers larger than 32K to inflate() should provide a speed\n advantage, since only the last 32K of output is copied to the sliding window\n upon return from inflate(), and since all distances after the first 32K of\n output will fall in the output data, making match copies simpler and faster.\n The advantage may be dependent on the size of the processor's data caches.\n */\nfunction updatewindow(strm, src, end, copy) {\n  var dist;\n  var state = strm.state;\n\n  /* if it hasn't been done already, allocate space for the window */\n  if (state.window === null) {\n    state.wsize = 1 << state.wbits;\n    state.wnext = 0;\n    state.whave = 0;\n\n    state.window = new utils.Buf8(state.wsize);\n  }\n\n  /* copy state->wsize or less output bytes into the circular window */\n  if (copy >= state.wsize) {\n    utils.arraySet(state.window, src, end - state.wsize, state.wsize, 0);\n    state.wnext = 0;\n    state.whave = state.wsize;\n  }\n  else {\n    dist = state.wsize - state.wnext;\n    if (dist > copy) {\n      dist = copy;\n    }\n    //zmemcpy(state->window + state->wnext, end - copy, dist);\n    utils.arraySet(state.window, src, end - copy, dist, state.wnext);\n    copy -= dist;\n    if (copy) {\n      //zmemcpy(state->window, end - copy, copy);\n      utils.arraySet(state.window, src, end - copy, copy, 0);\n      state.wnext = copy;\n      state.whave = state.wsize;\n    }\n    else {\n      state.wnext += dist;\n      if (state.wnext === state.wsize) { state.wnext = 0; }\n      if (state.whave < state.wsize) { state.whave += dist; }\n    }\n  }\n  return 0;\n}\n\nfunction inflate(strm, flush) {\n  var state;\n  var input, output;          // input/output buffers\n  var next;                   /* next input INDEX */\n  var put;                    /* next output INDEX */\n  var have, left;             /* available input and output */\n  var hold;                   /* bit buffer */\n  var bits;                   /* bits in bit buffer */\n  var _in, _out;              /* save starting available input and output */\n  var copy;                   /* number of stored or match bytes to copy */\n  var from;                   /* where to copy match bytes from */\n  var from_source;\n  var here = 0;               /* current decoding table entry */\n  var here_bits, here_op, here_val; // paked \"here\" denormalized (JS specific)\n  //var last;                   /* parent table entry */\n  var last_bits, last_op, last_val; // paked \"last\" denormalized (JS specific)\n  var len;                    /* length to copy for repeats, bits to drop */\n  var ret;                    /* return code */\n  var hbuf = new utils.Buf8(4);    /* buffer for gzip header crc calculation */\n  var opts;\n\n  var n; // temporary var for NEED_BITS\n\n  var order = /* permutation of code lengths */\n    [ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ];\n\n\n  if (!strm || !strm.state || !strm.output ||\n      (!strm.input && strm.avail_in !== 0)) {\n    return Z_STREAM_ERROR;\n  }\n\n  state = strm.state;\n  if (state.mode === TYPE) { state.mode = TYPEDO; }    /* skip check */\n\n\n  //--- LOAD() ---\n  put = strm.next_out;\n  output = strm.output;\n  left = strm.avail_out;\n  next = strm.next_in;\n  input = strm.input;\n  have = strm.avail_in;\n  hold = state.hold;\n  bits = state.bits;\n  //---\n\n  _in = have;\n  _out = left;\n  ret = Z_OK;\n\n  inf_leave: // goto emulation\n  for (;;) {\n    switch (state.mode) {\n      case HEAD:\n        if (state.wrap === 0) {\n          state.mode = TYPEDO;\n          break;\n        }\n        //=== NEEDBITS(16);\n        while (bits < 16) {\n          if (have === 0) { break inf_leave; }\n          have--;\n          hold += input[next++] << bits;\n          bits += 8;\n        }\n        //===//\n        if ((state.wrap & 2) && hold === 0x8b1f) {  /* gzip header */\n          state.check = 0/*crc32(0L, Z_NULL, 0)*/;\n          //=== CRC2(state.check, hold);\n          hbuf[0] = hold & 0xff;\n          hbuf[1] = (hold >>> 8) & 0xff;\n          state.check = crc32(state.check, hbuf, 2, 0);\n          //===//\n\n          //=== INITBITS();\n          hold = 0;\n          bits = 0;\n          //===//\n          state.mode = FLAGS;\n          break;\n        }\n        state.flags = 0;           /* expect zlib header */\n        if (state.head) {\n          state.head.done = false;\n        }\n        if (!(state.wrap & 1) ||   /* check if zlib header allowed */\n          (((hold & 0xff)/*BITS(8)*/ << 8) + (hold >> 8)) % 31) {\n          strm.msg = 'incorrect header check';\n          state.mode = BAD;\n          break;\n        }\n        if ((hold & 0x0f)/*BITS(4)*/ !== Z_DEFLATED) {\n          strm.msg = 'unknown compression method';\n          state.mode = BAD;\n          break;\n        }\n        //--- DROPBITS(4) ---//\n        hold >>>= 4;\n        bits -= 4;\n        //---//\n        len = (hold & 0x0f)/*BITS(4)*/ + 8;\n        if (state.wbits === 0) {\n          state.wbits = len;\n        }\n        else if (len > state.wbits) {\n          strm.msg = 'invalid window size';\n          state.mode = BAD;\n          break;\n        }\n        state.dmax = 1 << len;\n        //Tracev((stderr, \"inflate:   zlib header ok\\n\"));\n        strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n        state.mode = hold & 0x200 ? DICTID : TYPE;\n        //=== INITBITS();\n        hold = 0;\n        bits = 0;\n        //===//\n        break;\n      case FLAGS:\n        //=== NEEDBITS(16); */\n        while (bits < 16) {\n          if (have === 0) { break inf_leave; }\n          have--;\n          hold += input[next++] << bits;\n          bits += 8;\n        }\n        //===//\n        state.flags = hold;\n        if ((state.flags & 0xff) !== Z_DEFLATED) {\n          strm.msg = 'unknown compression method';\n          state.mode = BAD;\n          break;\n        }\n        if (state.flags & 0xe000) {\n          strm.msg = 'unknown header flags set';\n          state.mode = BAD;\n          break;\n        }\n        if (state.head) {\n          state.head.text = ((hold >> 8) & 1);\n        }\n        if (state.flags & 0x0200) {\n          //=== CRC2(state.check, hold);\n          hbuf[0] = hold & 0xff;\n          hbuf[1] = (hold >>> 8) & 0xff;\n          state.check = crc32(state.check, hbuf, 2, 0);\n          //===//\n        }\n        //=== INITBITS();\n        hold = 0;\n        bits = 0;\n        //===//\n        state.mode = TIME;\n        /* falls through */\n      case TIME:\n        //=== NEEDBITS(32); */\n        while (bits < 32) {\n          if (have === 0) { break inf_leave; }\n          have--;\n          hold += input[next++] << bits;\n          bits += 8;\n        }\n        //===//\n        if (state.head) {\n          state.head.time = hold;\n        }\n        if (state.flags & 0x0200) {\n          //=== CRC4(state.check, hold)\n          hbuf[0] = hold & 0xff;\n          hbuf[1] = (hold >>> 8) & 0xff;\n          hbuf[2] = (hold >>> 16) & 0xff;\n          hbuf[3] = (hold >>> 24) & 0xff;\n          state.check = crc32(state.check, hbuf, 4, 0);\n          //===\n        }\n        //=== INITBITS();\n        hold = 0;\n        bits = 0;\n        //===//\n        state.mode = OS;\n        /* falls through */\n      case OS:\n        //=== NEEDBITS(16); */\n        while (bits < 16) {\n          if (have === 0) { break inf_leave; }\n          have--;\n          hold += input[next++] << bits;\n          bits += 8;\n        }\n        //===//\n        if (state.head) {\n          state.head.xflags = (hold & 0xff);\n          state.head.os = (hold >> 8);\n        }\n        if (state.flags & 0x0200) {\n          //=== CRC2(state.check, hold);\n          hbuf[0] = hold & 0xff;\n          hbuf[1] = (hold >>> 8) & 0xff;\n          state.check = crc32(state.check, hbuf, 2, 0);\n          //===//\n        }\n        //=== INITBITS();\n        hold = 0;\n        bits = 0;\n        //===//\n        state.mode = EXLEN;\n        /* falls through */\n      case EXLEN:\n        if (state.flags & 0x0400) {\n          //=== NEEDBITS(16); */\n          while (bits < 16) {\n            if (have === 0) { break inf_leave; }\n            have--;\n            hold += input[next++] << bits;\n            bits += 8;\n          }\n          //===//\n          state.length = hold;\n          if (state.head) {\n            state.head.extra_len = hold;\n          }\n          if (state.flags & 0x0200) {\n            //=== CRC2(state.check, hold);\n            hbuf[0] = hold & 0xff;\n            hbuf[1] = (hold >>> 8) & 0xff;\n            state.check = crc32(state.check, hbuf, 2, 0);\n            //===//\n          }\n          //=== INITBITS();\n          hold = 0;\n          bits = 0;\n          //===//\n        }\n        else if (state.head) {\n          state.head.extra = null/*Z_NULL*/;\n        }\n        state.mode = EXTRA;\n        /* falls through */\n      case EXTRA:\n        if (state.flags & 0x0400) {\n          copy = state.length;\n          if (copy > have) { copy = have; }\n          if (copy) {\n            if (state.head) {\n              len = state.head.extra_len - state.length;\n              if (!state.head.extra) {\n                // Use untyped array for more convenient processing later\n                state.head.extra = new Array(state.head.extra_len);\n              }\n              utils.arraySet(\n                state.head.extra,\n                input,\n                next,\n                // extra field is limited to 65536 bytes\n                // - no need for additional size check\n                copy,\n                /*len + copy > state.head.extra_max - len ? state.head.extra_max : copy,*/\n                len\n              );\n              //zmemcpy(state.head.extra + len, next,\n              //        len + copy > state.head.extra_max ?\n              //        state.head.extra_max - len : copy);\n            }\n            if (state.flags & 0x0200) {\n              state.check = crc32(state.check, input, copy, next);\n            }\n            have -= copy;\n            next += copy;\n            state.length -= copy;\n          }\n          if (state.length) { break inf_leave; }\n        }\n        state.length = 0;\n        state.mode = NAME;\n        /* falls through */\n      case NAME:\n        if (state.flags & 0x0800) {\n          if (have === 0) { break inf_leave; }\n          copy = 0;\n          do {\n            // TODO: 2 or 1 bytes?\n            len = input[next + copy++];\n            /* use constant limit because in js we should not preallocate memory */\n            if (state.head && len &&\n                (state.length < 65536 /*state.head.name_max*/)) {\n              state.head.name += String.fromCharCode(len);\n            }\n          } while (len && copy < have);\n\n          if (state.flags & 0x0200) {\n            state.check = crc32(state.check, input, copy, next);\n          }\n          have -= copy;\n          next += copy;\n          if (len) { break inf_leave; }\n        }\n        else if (state.head) {\n          state.head.name = null;\n        }\n        state.length = 0;\n        state.mode = COMMENT;\n        /* falls through */\n      case COMMENT:\n        if (state.flags & 0x1000) {\n          if (have === 0) { break inf_leave; }\n          copy = 0;\n          do {\n            len = input[next + copy++];\n            /* use constant limit because in js we should not preallocate memory */\n            if (state.head && len &&\n                (state.length < 65536 /*state.head.comm_max*/)) {\n              state.head.comment += String.fromCharCode(len);\n            }\n          } while (len && copy < have);\n          if (state.flags & 0x0200) {\n            state.check = crc32(state.check, input, copy, next);\n          }\n          have -= copy;\n          next += copy;\n          if (len) { break inf_leave; }\n        }\n        else if (state.head) {\n          state.head.comment = null;\n        }\n        state.mode = HCRC;\n        /* falls through */\n      case HCRC:\n        if (state.flags & 0x0200) {\n          //=== NEEDBITS(16); */\n          while (bits < 16) {\n            if (have === 0) { break inf_leave; }\n            have--;\n            hold += input[next++] << bits;\n            bits += 8;\n          }\n          //===//\n          if (hold !== (state.check & 0xffff)) {\n            strm.msg = 'header crc mismatch';\n            state.mode = BAD;\n            break;\n          }\n          //=== INITBITS();\n          hold = 0;\n          bits = 0;\n          //===//\n        }\n        if (state.head) {\n          state.head.hcrc = ((state.flags >> 9) & 1);\n          state.head.done = true;\n        }\n        strm.adler = state.check = 0;\n        state.mode = TYPE;\n        break;\n      case DICTID:\n        //=== NEEDBITS(32); */\n        while (bits < 32) {\n          if (have === 0) { break inf_leave; }\n          have--;\n          hold += input[next++] << bits;\n          bits += 8;\n        }\n        //===//\n        strm.adler = state.check = zswap32(hold);\n        //=== INITBITS();\n        hold = 0;\n        bits = 0;\n        //===//\n        state.mode = DICT;\n        /* falls through */\n      case DICT:\n        if (state.havedict === 0) {\n          //--- RESTORE() ---\n          strm.next_out = put;\n          strm.avail_out = left;\n          strm.next_in = next;\n          strm.avail_in = have;\n          state.hold = hold;\n          state.bits = bits;\n          //---\n          return Z_NEED_DICT;\n        }\n        strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n        state.mode = TYPE;\n        /* falls through */\n      case TYPE:\n        if (flush === Z_BLOCK || flush === Z_TREES) { break inf_leave; }\n        /* falls through */\n      case TYPEDO:\n        if (state.last) {\n          //--- BYTEBITS() ---//\n          hold >>>= bits & 7;\n          bits -= bits & 7;\n          //---//\n          state.mode = CHECK;\n          break;\n        }\n        //=== NEEDBITS(3); */\n        while (bits < 3) {\n          if (have === 0) { break inf_leave; }\n          have--;\n          hold += input[next++] << bits;\n          bits += 8;\n        }\n        //===//\n        state.last = (hold & 0x01)/*BITS(1)*/;\n        //--- DROPBITS(1) ---//\n        hold >>>= 1;\n        bits -= 1;\n        //---//\n\n        switch ((hold & 0x03)/*BITS(2)*/) {\n          case 0:                             /* stored block */\n            //Tracev((stderr, \"inflate:     stored block%s\\n\",\n            //        state.last ? \" (last)\" : \"\"));\n            state.mode = STORED;\n            break;\n          case 1:                             /* fixed block */\n            fixedtables(state);\n            //Tracev((stderr, \"inflate:     fixed codes block%s\\n\",\n            //        state.last ? \" (last)\" : \"\"));\n            state.mode = LEN_;             /* decode codes */\n            if (flush === Z_TREES) {\n              //--- DROPBITS(2) ---//\n              hold >>>= 2;\n              bits -= 2;\n              //---//\n              break inf_leave;\n            }\n            break;\n          case 2:                             /* dynamic block */\n            //Tracev((stderr, \"inflate:     dynamic codes block%s\\n\",\n            //        state.last ? \" (last)\" : \"\"));\n            state.mode = TABLE;\n            break;\n          case 3:\n            strm.msg = 'invalid block type';\n            state.mode = BAD;\n        }\n        //--- DROPBITS(2) ---//\n        hold >>>= 2;\n        bits -= 2;\n        //---//\n        break;\n      case STORED:\n        //--- BYTEBITS() ---// /* go to byte boundary */\n        hold >>>= bits & 7;\n        bits -= bits & 7;\n        //---//\n        //=== NEEDBITS(32); */\n        while (bits < 32) {\n          if (have === 0) { break inf_leave; }\n          have--;\n          hold += input[next++] << bits;\n          bits += 8;\n        }\n        //===//\n        if ((hold & 0xffff) !== ((hold >>> 16) ^ 0xffff)) {\n          strm.msg = 'invalid stored block lengths';\n          state.mode = BAD;\n          break;\n        }\n        state.length = hold & 0xffff;\n        //Tracev((stderr, \"inflate:       stored length %u\\n\",\n        //        state.length));\n        //=== INITBITS();\n        hold = 0;\n        bits = 0;\n        //===//\n        state.mode = COPY_;\n        if (flush === Z_TREES) { break inf_leave; }\n        /* falls through */\n      case COPY_:\n        state.mode = COPY;\n        /* falls through */\n      case COPY:\n        copy = state.length;\n        if (copy) {\n          if (copy > have) { copy = have; }\n          if (copy > left) { copy = left; }\n          if (copy === 0) { break inf_leave; }\n          //--- zmemcpy(put, next, copy); ---\n          utils.arraySet(output, input, next, copy, put);\n          //---//\n          have -= copy;\n          next += copy;\n          left -= copy;\n          put += copy;\n          state.length -= copy;\n          break;\n        }\n        //Tracev((stderr, \"inflate:       stored end\\n\"));\n        state.mode = TYPE;\n        break;\n      case TABLE:\n        //=== NEEDBITS(14); */\n        while (bits < 14) {\n          if (have === 0) { break inf_leave; }\n          have--;\n          hold += input[next++] << bits;\n          bits += 8;\n        }\n        //===//\n        state.nlen = (hold & 0x1f)/*BITS(5)*/ + 257;\n        //--- DROPBITS(5) ---//\n        hold >>>= 5;\n        bits -= 5;\n        //---//\n        state.ndist = (hold & 0x1f)/*BITS(5)*/ + 1;\n        //--- DROPBITS(5) ---//\n        hold >>>= 5;\n        bits -= 5;\n        //---//\n        state.ncode = (hold & 0x0f)/*BITS(4)*/ + 4;\n        //--- DROPBITS(4) ---//\n        hold >>>= 4;\n        bits -= 4;\n        //---//\n//#ifndef PKZIP_BUG_WORKAROUND\n        if (state.nlen > 286 || state.ndist > 30) {\n          strm.msg = 'too many length or distance symbols';\n          state.mode = BAD;\n          break;\n        }\n//#endif\n        //Tracev((stderr, \"inflate:       table sizes ok\\n\"));\n        state.have = 0;\n        state.mode = LENLENS;\n        /* falls through */\n      case LENLENS:\n        while (state.have < state.ncode) {\n          //=== NEEDBITS(3);\n          while (bits < 3) {\n            if (have === 0) { break inf_leave; }\n            have--;\n            hold += input[next++] << bits;\n            bits += 8;\n          }\n          //===//\n          state.lens[order[state.have++]] = (hold & 0x07);//BITS(3);\n          //--- DROPBITS(3) ---//\n          hold >>>= 3;\n          bits -= 3;\n          //---//\n        }\n        while (state.have < 19) {\n          state.lens[order[state.have++]] = 0;\n        }\n        // We have separate tables & no pointers. 2 commented lines below not needed.\n        //state.next = state.codes;\n        //state.lencode = state.next;\n        // Switch to use dynamic table\n        state.lencode = state.lendyn;\n        state.lenbits = 7;\n\n        opts = { bits: state.lenbits };\n        ret = inflate_table(CODES, state.lens, 0, 19, state.lencode, 0, state.work, opts);\n        state.lenbits = opts.bits;\n\n        if (ret) {\n          strm.msg = 'invalid code lengths set';\n          state.mode = BAD;\n          break;\n        }\n        //Tracev((stderr, \"inflate:       code lengths ok\\n\"));\n        state.have = 0;\n        state.mode = CODELENS;\n        /* falls through */\n      case CODELENS:\n        while (state.have < state.nlen + state.ndist) {\n          for (;;) {\n            here = state.lencode[hold & ((1 << state.lenbits) - 1)];/*BITS(state.lenbits)*/\n            here_bits = here >>> 24;\n            here_op = (here >>> 16) & 0xff;\n            here_val = here & 0xffff;\n\n            if ((here_bits) <= bits) { break; }\n            //--- PULLBYTE() ---//\n            if (have === 0) { break inf_leave; }\n            have--;\n            hold += input[next++] << bits;\n            bits += 8;\n            //---//\n          }\n          if (here_val < 16) {\n            //--- DROPBITS(here.bits) ---//\n            hold >>>= here_bits;\n            bits -= here_bits;\n            //---//\n            state.lens[state.have++] = here_val;\n          }\n          else {\n            if (here_val === 16) {\n              //=== NEEDBITS(here.bits + 2);\n              n = here_bits + 2;\n              while (bits < n) {\n                if (have === 0) { break inf_leave; }\n                have--;\n                hold += input[next++] << bits;\n                bits += 8;\n              }\n              //===//\n              //--- DROPBITS(here.bits) ---//\n              hold >>>= here_bits;\n              bits -= here_bits;\n              //---//\n              if (state.have === 0) {\n                strm.msg = 'invalid bit length repeat';\n                state.mode = BAD;\n                break;\n              }\n              len = state.lens[state.have - 1];\n              copy = 3 + (hold & 0x03);//BITS(2);\n              //--- DROPBITS(2) ---//\n              hold >>>= 2;\n              bits -= 2;\n              //---//\n            }\n            else if (here_val === 17) {\n              //=== NEEDBITS(here.bits + 3);\n              n = here_bits + 3;\n              while (bits < n) {\n                if (have === 0) { break inf_leave; }\n                have--;\n                hold += input[next++] << bits;\n                bits += 8;\n              }\n              //===//\n              //--- DROPBITS(here.bits) ---//\n              hold >>>= here_bits;\n              bits -= here_bits;\n              //---//\n              len = 0;\n              copy = 3 + (hold & 0x07);//BITS(3);\n              //--- DROPBITS(3) ---//\n              hold >>>= 3;\n              bits -= 3;\n              //---//\n            }\n            else {\n              //=== NEEDBITS(here.bits + 7);\n              n = here_bits + 7;\n              while (bits < n) {\n                if (have === 0) { break inf_leave; }\n                have--;\n                hold += input[next++] << bits;\n                bits += 8;\n              }\n              //===//\n              //--- DROPBITS(here.bits) ---//\n              hold >>>= here_bits;\n              bits -= here_bits;\n              //---//\n              len = 0;\n              copy = 11 + (hold & 0x7f);//BITS(7);\n              //--- DROPBITS(7) ---//\n              hold >>>= 7;\n              bits -= 7;\n              //---//\n            }\n            if (state.have + copy > state.nlen + state.ndist) {\n              strm.msg = 'invalid bit length repeat';\n              state.mode = BAD;\n              break;\n            }\n            while (copy--) {\n              state.lens[state.have++] = len;\n            }\n          }\n        }\n\n        /* handle error breaks in while */\n        if (state.mode === BAD) { break; }\n\n        /* check for end-of-block code (better have one) */\n        if (state.lens[256] === 0) {\n          strm.msg = 'invalid code -- missing end-of-block';\n          state.mode = BAD;\n          break;\n        }\n\n        /* build code tables -- note: do not change the lenbits or distbits\n           values here (9 and 6) without reading the comments in inftrees.h\n           concerning the ENOUGH constants, which depend on those values */\n        state.lenbits = 9;\n\n        opts = { bits: state.lenbits };\n        ret = inflate_table(LENS, state.lens, 0, state.nlen, state.lencode, 0, state.work, opts);\n        // We have separate tables & no pointers. 2 commented lines below not needed.\n        // state.next_index = opts.table_index;\n        state.lenbits = opts.bits;\n        // state.lencode = state.next;\n\n        if (ret) {\n          strm.msg = 'invalid literal/lengths set';\n          state.mode = BAD;\n          break;\n        }\n\n        state.distbits = 6;\n        //state.distcode.copy(state.codes);\n        // Switch to use dynamic table\n        state.distcode = state.distdyn;\n        opts = { bits: state.distbits };\n        ret = inflate_table(DISTS, state.lens, state.nlen, state.ndist, state.distcode, 0, state.work, opts);\n        // We have separate tables & no pointers. 2 commented lines below not needed.\n        // state.next_index = opts.table_index;\n        state.distbits = opts.bits;\n        // state.distcode = state.next;\n\n        if (ret) {\n          strm.msg = 'invalid distances set';\n          state.mode = BAD;\n          break;\n        }\n        //Tracev((stderr, 'inflate:       codes ok\\n'));\n        state.mode = LEN_;\n        if (flush === Z_TREES) { break inf_leave; }\n        /* falls through */\n      case LEN_:\n        state.mode = LEN;\n        /* falls through */\n      case LEN:\n        if (have >= 6 && left >= 258) {\n          //--- RESTORE() ---\n          strm.next_out = put;\n          strm.avail_out = left;\n          strm.next_in = next;\n          strm.avail_in = have;\n          state.hold = hold;\n          state.bits = bits;\n          //---\n          inflate_fast(strm, _out);\n          //--- LOAD() ---\n          put = strm.next_out;\n          output = strm.output;\n          left = strm.avail_out;\n          next = strm.next_in;\n          input = strm.input;\n          have = strm.avail_in;\n          hold = state.hold;\n          bits = state.bits;\n          //---\n\n          if (state.mode === TYPE) {\n            state.back = -1;\n          }\n          break;\n        }\n        state.back = 0;\n        for (;;) {\n          here = state.lencode[hold & ((1 << state.lenbits) - 1)];  /*BITS(state.lenbits)*/\n          here_bits = here >>> 24;\n          here_op = (here >>> 16) & 0xff;\n          here_val = here & 0xffff;\n\n          if (here_bits <= bits) { break; }\n          //--- PULLBYTE() ---//\n          if (have === 0) { break inf_leave; }\n          have--;\n          hold += input[next++] << bits;\n          bits += 8;\n          //---//\n        }\n        if (here_op && (here_op & 0xf0) === 0) {\n          last_bits = here_bits;\n          last_op = here_op;\n          last_val = here_val;\n          for (;;) {\n            here = state.lencode[last_val +\n                    ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n            here_bits = here >>> 24;\n            here_op = (here >>> 16) & 0xff;\n            here_val = here & 0xffff;\n\n            if ((last_bits + here_bits) <= bits) { break; }\n            //--- PULLBYTE() ---//\n            if (have === 0) { break inf_leave; }\n            have--;\n            hold += input[next++] << bits;\n            bits += 8;\n            //---//\n          }\n          //--- DROPBITS(last.bits) ---//\n          hold >>>= last_bits;\n          bits -= last_bits;\n          //---//\n          state.back += last_bits;\n        }\n        //--- DROPBITS(here.bits) ---//\n        hold >>>= here_bits;\n        bits -= here_bits;\n        //---//\n        state.back += here_bits;\n        state.length = here_val;\n        if (here_op === 0) {\n          //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n          //        \"inflate:         literal '%c'\\n\" :\n          //        \"inflate:         literal 0x%02x\\n\", here.val));\n          state.mode = LIT;\n          break;\n        }\n        if (here_op & 32) {\n          //Tracevv((stderr, \"inflate:         end of block\\n\"));\n          state.back = -1;\n          state.mode = TYPE;\n          break;\n        }\n        if (here_op & 64) {\n          strm.msg = 'invalid literal/length code';\n          state.mode = BAD;\n          break;\n        }\n        state.extra = here_op & 15;\n        state.mode = LENEXT;\n        /* falls through */\n      case LENEXT:\n        if (state.extra) {\n          //=== NEEDBITS(state.extra);\n          n = state.extra;\n          while (bits < n) {\n            if (have === 0) { break inf_leave; }\n            have--;\n            hold += input[next++] << bits;\n            bits += 8;\n          }\n          //===//\n          state.length += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n          //--- DROPBITS(state.extra) ---//\n          hold >>>= state.extra;\n          bits -= state.extra;\n          //---//\n          state.back += state.extra;\n        }\n        //Tracevv((stderr, \"inflate:         length %u\\n\", state.length));\n        state.was = state.length;\n        state.mode = DIST;\n        /* falls through */\n      case DIST:\n        for (;;) {\n          here = state.distcode[hold & ((1 << state.distbits) - 1)];/*BITS(state.distbits)*/\n          here_bits = here >>> 24;\n          here_op = (here >>> 16) & 0xff;\n          here_val = here & 0xffff;\n\n          if ((here_bits) <= bits) { break; }\n          //--- PULLBYTE() ---//\n          if (have === 0) { break inf_leave; }\n          have--;\n          hold += input[next++] << bits;\n          bits += 8;\n          //---//\n        }\n        if ((here_op & 0xf0) === 0) {\n          last_bits = here_bits;\n          last_op = here_op;\n          last_val = here_val;\n          for (;;) {\n            here = state.distcode[last_val +\n                    ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n            here_bits = here >>> 24;\n            here_op = (here >>> 16) & 0xff;\n            here_val = here & 0xffff;\n\n            if ((last_bits + here_bits) <= bits) { break; }\n            //--- PULLBYTE() ---//\n            if (have === 0) { break inf_leave; }\n            have--;\n            hold += input[next++] << bits;\n            bits += 8;\n            //---//\n          }\n          //--- DROPBITS(last.bits) ---//\n          hold >>>= last_bits;\n          bits -= last_bits;\n          //---//\n          state.back += last_bits;\n        }\n        //--- DROPBITS(here.bits) ---//\n        hold >>>= here_bits;\n        bits -= here_bits;\n        //---//\n        state.back += here_bits;\n        if (here_op & 64) {\n          strm.msg = 'invalid distance code';\n          state.mode = BAD;\n          break;\n        }\n        state.offset = here_val;\n        state.extra = (here_op) & 15;\n        state.mode = DISTEXT;\n        /* falls through */\n      case DISTEXT:\n        if (state.extra) {\n          //=== NEEDBITS(state.extra);\n          n = state.extra;\n          while (bits < n) {\n            if (have === 0) { break inf_leave; }\n            have--;\n            hold += input[next++] << bits;\n            bits += 8;\n          }\n          //===//\n          state.offset += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n          //--- DROPBITS(state.extra) ---//\n          hold >>>= state.extra;\n          bits -= state.extra;\n          //---//\n          state.back += state.extra;\n        }\n//#ifdef INFLATE_STRICT\n        if (state.offset > state.dmax) {\n          strm.msg = 'invalid distance too far back';\n          state.mode = BAD;\n          break;\n        }\n//#endif\n        //Tracevv((stderr, \"inflate:         distance %u\\n\", state.offset));\n        state.mode = MATCH;\n        /* falls through */\n      case MATCH:\n        if (left === 0) { break inf_leave; }\n        copy = _out - left;\n        if (state.offset > copy) {         /* copy from window */\n          copy = state.offset - copy;\n          if (copy > state.whave) {\n            if (state.sane) {\n              strm.msg = 'invalid distance too far back';\n              state.mode = BAD;\n              break;\n            }\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n//          Trace((stderr, \"inflate.c too far\\n\"));\n//          copy -= state.whave;\n//          if (copy > state.length) { copy = state.length; }\n//          if (copy > left) { copy = left; }\n//          left -= copy;\n//          state.length -= copy;\n//          do {\n//            output[put++] = 0;\n//          } while (--copy);\n//          if (state.length === 0) { state.mode = LEN; }\n//          break;\n//#endif\n          }\n          if (copy > state.wnext) {\n            copy -= state.wnext;\n            from = state.wsize - copy;\n          }\n          else {\n            from = state.wnext - copy;\n          }\n          if (copy > state.length) { copy = state.length; }\n          from_source = state.window;\n        }\n        else {                              /* copy from output */\n          from_source = output;\n          from = put - state.offset;\n          copy = state.length;\n        }\n        if (copy > left) { copy = left; }\n        left -= copy;\n        state.length -= copy;\n        do {\n          output[put++] = from_source[from++];\n        } while (--copy);\n        if (state.length === 0) { state.mode = LEN; }\n        break;\n      case LIT:\n        if (left === 0) { break inf_leave; }\n        output[put++] = state.length;\n        left--;\n        state.mode = LEN;\n        break;\n      case CHECK:\n        if (state.wrap) {\n          //=== NEEDBITS(32);\n          while (bits < 32) {\n            if (have === 0) { break inf_leave; }\n            have--;\n            // Use '|' instead of '+' to make sure that result is signed\n            hold |= input[next++] << bits;\n            bits += 8;\n          }\n          //===//\n          _out -= left;\n          strm.total_out += _out;\n          state.total += _out;\n          if (_out) {\n            strm.adler = state.check =\n                /*UPDATE(state.check, put - _out, _out);*/\n                (state.flags ? crc32(state.check, output, _out, put - _out) : adler32(state.check, output, _out, put - _out));\n\n          }\n          _out = left;\n          // NB: crc32 stored as signed 32-bit int, zswap32 returns signed too\n          if ((state.flags ? hold : zswap32(hold)) !== state.check) {\n            strm.msg = 'incorrect data check';\n            state.mode = BAD;\n            break;\n          }\n          //=== INITBITS();\n          hold = 0;\n          bits = 0;\n          //===//\n          //Tracev((stderr, \"inflate:   check matches trailer\\n\"));\n        }\n        state.mode = LENGTH;\n        /* falls through */\n      case LENGTH:\n        if (state.wrap && state.flags) {\n          //=== NEEDBITS(32);\n          while (bits < 32) {\n            if (have === 0) { break inf_leave; }\n            have--;\n            hold += input[next++] << bits;\n            bits += 8;\n          }\n          //===//\n          if (hold !== (state.total & 0xffffffff)) {\n            strm.msg = 'incorrect length check';\n            state.mode = BAD;\n            break;\n          }\n          //=== INITBITS();\n          hold = 0;\n          bits = 0;\n          //===//\n          //Tracev((stderr, \"inflate:   length matches trailer\\n\"));\n        }\n        state.mode = DONE;\n        /* falls through */\n      case DONE:\n        ret = Z_STREAM_END;\n        break inf_leave;\n      case BAD:\n        ret = Z_DATA_ERROR;\n        break inf_leave;\n      case MEM:\n        return Z_MEM_ERROR;\n      case SYNC:\n        /* falls through */\n      default:\n        return Z_STREAM_ERROR;\n    }\n  }\n\n  // inf_leave <- here is real place for \"goto inf_leave\", emulated via \"break inf_leave\"\n\n  /*\n     Return from inflate(), updating the total counts and the check value.\n     If there was no progress during the inflate() call, return a buffer\n     error.  Call updatewindow() to create and/or update the window state.\n     Note: a memory error from inflate() is non-recoverable.\n   */\n\n  //--- RESTORE() ---\n  strm.next_out = put;\n  strm.avail_out = left;\n  strm.next_in = next;\n  strm.avail_in = have;\n  state.hold = hold;\n  state.bits = bits;\n  //---\n\n  if (state.wsize || (_out !== strm.avail_out && state.mode < BAD &&\n                      (state.mode < CHECK || flush !== Z_FINISH))) {\n    if (updatewindow(strm, strm.output, strm.next_out, _out - strm.avail_out)) {\n      state.mode = MEM;\n      return Z_MEM_ERROR;\n    }\n  }\n  _in -= strm.avail_in;\n  _out -= strm.avail_out;\n  strm.total_in += _in;\n  strm.total_out += _out;\n  state.total += _out;\n  if (state.wrap && _out) {\n    strm.adler = state.check = /*UPDATE(state.check, strm.next_out - _out, _out);*/\n      (state.flags ? crc32(state.check, output, _out, strm.next_out - _out) : adler32(state.check, output, _out, strm.next_out - _out));\n  }\n  strm.data_type = state.bits + (state.last ? 64 : 0) +\n                    (state.mode === TYPE ? 128 : 0) +\n                    (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0);\n  if (((_in === 0 && _out === 0) || flush === Z_FINISH) && ret === Z_OK) {\n    ret = Z_BUF_ERROR;\n  }\n  return ret;\n}\n\nfunction inflateEnd(strm) {\n\n  if (!strm || !strm.state /*|| strm->zfree == (free_func)0*/) {\n    return Z_STREAM_ERROR;\n  }\n\n  var state = strm.state;\n  if (state.window) {\n    state.window = null;\n  }\n  strm.state = null;\n  return Z_OK;\n}\n\nfunction inflateGetHeader(strm, head) {\n  var state;\n\n  /* check state */\n  if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n  state = strm.state;\n  if ((state.wrap & 2) === 0) { return Z_STREAM_ERROR; }\n\n  /* save header structure */\n  state.head = head;\n  head.done = false;\n  return Z_OK;\n}\n\nfunction inflateSetDictionary(strm, dictionary) {\n  var dictLength = dictionary.length;\n\n  var state;\n  var dictid;\n  var ret;\n\n  /* check state */\n  if (!strm /* == Z_NULL */ || !strm.state /* == Z_NULL */) { return Z_STREAM_ERROR; }\n  state = strm.state;\n\n  if (state.wrap !== 0 && state.mode !== DICT) {\n    return Z_STREAM_ERROR;\n  }\n\n  /* check for correct dictionary identifier */\n  if (state.mode === DICT) {\n    dictid = 1; /* adler32(0, null, 0)*/\n    /* dictid = adler32(dictid, dictionary, dictLength); */\n    dictid = adler32(dictid, dictionary, dictLength, 0);\n    if (dictid !== state.check) {\n      return Z_DATA_ERROR;\n    }\n  }\n  /* copy dictionary to window using updatewindow(), which will amend the\n   existing dictionary if appropriate */\n  ret = updatewindow(strm, dictionary, dictLength, dictLength);\n  if (ret) {\n    state.mode = MEM;\n    return Z_MEM_ERROR;\n  }\n  state.havedict = 1;\n  // Tracev((stderr, \"inflate:   dictionary set\\n\"));\n  return Z_OK;\n}\n\nexports.inflateReset = inflateReset;\nexports.inflateReset2 = inflateReset2;\nexports.inflateResetKeep = inflateResetKeep;\nexports.inflateInit = inflateInit;\nexports.inflateInit2 = inflateInit2;\nexports.inflate = inflate;\nexports.inflateEnd = inflateEnd;\nexports.inflateGetHeader = inflateGetHeader;\nexports.inflateSetDictionary = inflateSetDictionary;\nexports.inflateInfo = 'pako inflate (from Nodeca project)';\n\n/* Not implemented\nexports.inflateCopy = inflateCopy;\nexports.inflateGetDictionary = inflateGetDictionary;\nexports.inflateMark = inflateMark;\nexports.inflatePrime = inflatePrime;\nexports.inflateSync = inflateSync;\nexports.inflateSyncPoint = inflateSyncPoint;\nexports.inflateUndermine = inflateUndermine;\n*/\n", "'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar utils = require('../utils/common');\n\nvar MAXBITS = 15;\nvar ENOUGH_LENS = 852;\nvar ENOUGH_DISTS = 592;\n//var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);\n\nvar CODES = 0;\nvar LENS = 1;\nvar DISTS = 2;\n\nvar lbase = [ /* Length codes 257..285 base */\n  3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,\n  35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0\n];\n\nvar lext = [ /* Length codes 257..285 extra */\n  16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,\n  19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78\n];\n\nvar dbase = [ /* Distance codes 0..29 base */\n  1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,\n  257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,\n  8193, 12289, 16385, 24577, 0, 0\n];\n\nvar dext = [ /* Distance codes 0..29 extra */\n  16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22,\n  23, 23, 24, 24, 25, 25, 26, 26, 27, 27,\n  28, 28, 29, 29, 64, 64\n];\n\nmodule.exports = function inflate_table(type, lens, lens_index, codes, table, table_index, work, opts)\n{\n  var bits = opts.bits;\n      //here = opts.here; /* table entry for duplication */\n\n  var len = 0;               /* a code's length in bits */\n  var sym = 0;               /* index of code symbols */\n  var min = 0, max = 0;          /* minimum and maximum code lengths */\n  var root = 0;              /* number of index bits for root table */\n  var curr = 0;              /* number of index bits for current table */\n  var drop = 0;              /* code bits to drop for sub-table */\n  var left = 0;                   /* number of prefix codes available */\n  var used = 0;              /* code entries in table used */\n  var huff = 0;              /* Huffman code */\n  var incr;              /* for incrementing code, index */\n  var fill;              /* index for replicating entries */\n  var low;               /* low bits for current root entry */\n  var mask;              /* mask for low root bits */\n  var next;             /* next available space in table */\n  var base = null;     /* base value table to use */\n  var base_index = 0;\n//  var shoextra;    /* extra bits table to use */\n  var end;                    /* use base and extra for symbol > end */\n  var count = new utils.Buf16(MAXBITS + 1); //[MAXBITS+1];    /* number of codes of each length */\n  var offs = new utils.Buf16(MAXBITS + 1); //[MAXBITS+1];     /* offsets in table for each length */\n  var extra = null;\n  var extra_index = 0;\n\n  var here_bits, here_op, here_val;\n\n  /*\n   Process a set of code lengths to create a canonical Huffman code.  The\n   code lengths are lens[0..codes-1].  Each length corresponds to the\n   symbols 0..codes-1.  The Huffman code is generated by first sorting the\n   symbols by length from short to long, and retaining the symbol order\n   for codes with equal lengths.  Then the code starts with all zero bits\n   for the first code of the shortest length, and the codes are integer\n   increments for the same length, and zeros are appended as the length\n   increases.  For the deflate format, these bits are stored backwards\n   from their more natural integer increment ordering, and so when the\n   decoding tables are built in the large loop below, the integer codes\n   are incremented backwards.\n\n   This routine assumes, but does not check, that all of the entries in\n   lens[] are in the range 0..MAXBITS.  The caller must assure this.\n   1..MAXBITS is interpreted as that code length.  zero means that that\n   symbol does not occur in this code.\n\n   The codes are sorted by computing a count of codes for each length,\n   creating from that a table of starting indices for each length in the\n   sorted table, and then entering the symbols in order in the sorted\n   table.  The sorted table is work[], with that space being provided by\n   the caller.\n\n   The length counts are used for other purposes as well, i.e. finding\n   the minimum and maximum length codes, determining if there are any\n   codes at all, checking for a valid set of lengths, and looking ahead\n   at length counts to determine sub-table sizes when building the\n   decoding tables.\n   */\n\n  /* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */\n  for (len = 0; len <= MAXBITS; len++) {\n    count[len] = 0;\n  }\n  for (sym = 0; sym < codes; sym++) {\n    count[lens[lens_index + sym]]++;\n  }\n\n  /* bound code lengths, force root to be within code lengths */\n  root = bits;\n  for (max = MAXBITS; max >= 1; max--) {\n    if (count[max] !== 0) { break; }\n  }\n  if (root > max) {\n    root = max;\n  }\n  if (max === 0) {                     /* no symbols to code at all */\n    //table.op[opts.table_index] = 64;  //here.op = (var char)64;    /* invalid code marker */\n    //table.bits[opts.table_index] = 1;   //here.bits = (var char)1;\n    //table.val[opts.table_index++] = 0;   //here.val = (var short)0;\n    table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n\n    //table.op[opts.table_index] = 64;\n    //table.bits[opts.table_index] = 1;\n    //table.val[opts.table_index++] = 0;\n    table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n    opts.bits = 1;\n    return 0;     /* no symbols, but wait for decoding to report error */\n  }\n  for (min = 1; min < max; min++) {\n    if (count[min] !== 0) { break; }\n  }\n  if (root < min) {\n    root = min;\n  }\n\n  /* check for an over-subscribed or incomplete set of lengths */\n  left = 1;\n  for (len = 1; len <= MAXBITS; len++) {\n    left <<= 1;\n    left -= count[len];\n    if (left < 0) {\n      return -1;\n    }        /* over-subscribed */\n  }\n  if (left > 0 && (type === CODES || max !== 1)) {\n    return -1;                      /* incomplete set */\n  }\n\n  /* generate offsets into symbol table for each length for sorting */\n  offs[1] = 0;\n  for (len = 1; len < MAXBITS; len++) {\n    offs[len + 1] = offs[len] + count[len];\n  }\n\n  /* sort symbols by length, by symbol order within each length */\n  for (sym = 0; sym < codes; sym++) {\n    if (lens[lens_index + sym] !== 0) {\n      work[offs[lens[lens_index + sym]]++] = sym;\n    }\n  }\n\n  /*\n   Create and fill in decoding tables.  In this loop, the table being\n   filled is at next and has curr index bits.  The code being used is huff\n   with length len.  That code is converted to an index by dropping drop\n   bits off of the bottom.  For codes where len is less than drop + curr,\n   those top drop + curr - len bits are incremented through all values to\n   fill the table with replicated entries.\n\n   root is the number of index bits for the root table.  When len exceeds\n   root, sub-tables are created pointed to by the root entry with an index\n   of the low root bits of huff.  This is saved in low to check for when a\n   new sub-table should be started.  drop is zero when the root table is\n   being filled, and drop is root when sub-tables are being filled.\n\n   When a new sub-table is needed, it is necessary to look ahead in the\n   code lengths to determine what size sub-table is needed.  The length\n   counts are used for this, and so count[] is decremented as codes are\n   entered in the tables.\n\n   used keeps track of how many table entries have been allocated from the\n   provided *table space.  It is checked for LENS and DIST tables against\n   the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in\n   the initial root table size constants.  See the comments in inftrees.h\n   for more information.\n\n   sym increments through all symbols, and the loop terminates when\n   all codes of length max, i.e. all codes, have been processed.  This\n   routine permits incomplete codes, so another loop after this one fills\n   in the rest of the decoding tables with invalid code markers.\n   */\n\n  /* set up for code type */\n  // poor man optimization - use if-else instead of switch,\n  // to avoid deopts in old v8\n  if (type === CODES) {\n    base = extra = work;    /* dummy value--not used */\n    end = 19;\n\n  } else if (type === LENS) {\n    base = lbase;\n    base_index -= 257;\n    extra = lext;\n    extra_index -= 257;\n    end = 256;\n\n  } else {                    /* DISTS */\n    base = dbase;\n    extra = dext;\n    end = -1;\n  }\n\n  /* initialize opts for loop */\n  huff = 0;                   /* starting code */\n  sym = 0;                    /* starting code symbol */\n  len = min;                  /* starting code length */\n  next = table_index;              /* current table to fill in */\n  curr = root;                /* current table index bits */\n  drop = 0;                   /* current bits to drop from code for index */\n  low = -1;                   /* trigger new sub-table when len > root */\n  used = 1 << root;          /* use root table entries */\n  mask = used - 1;            /* mask for comparing low */\n\n  /* check available table space */\n  if ((type === LENS && used > ENOUGH_LENS) ||\n    (type === DISTS && used > ENOUGH_DISTS)) {\n    return 1;\n  }\n\n  /* process all codes and make table entries */\n  for (;;) {\n    /* create table entry */\n    here_bits = len - drop;\n    if (work[sym] < end) {\n      here_op = 0;\n      here_val = work[sym];\n    }\n    else if (work[sym] > end) {\n      here_op = extra[extra_index + work[sym]];\n      here_val = base[base_index + work[sym]];\n    }\n    else {\n      here_op = 32 + 64;         /* end of block */\n      here_val = 0;\n    }\n\n    /* replicate for those indices with low len bits equal to huff */\n    incr = 1 << (len - drop);\n    fill = 1 << curr;\n    min = fill;                 /* save offset to next table */\n    do {\n      fill -= incr;\n      table[next + (huff >> drop) + fill] = (here_bits << 24) | (here_op << 16) | here_val |0;\n    } while (fill !== 0);\n\n    /* backwards increment the len-bit code huff */\n    incr = 1 << (len - 1);\n    while (huff & incr) {\n      incr >>= 1;\n    }\n    if (incr !== 0) {\n      huff &= incr - 1;\n      huff += incr;\n    } else {\n      huff = 0;\n    }\n\n    /* go to next symbol, update count, len */\n    sym++;\n    if (--count[len] === 0) {\n      if (len === max) { break; }\n      len = lens[lens_index + work[sym]];\n    }\n\n    /* create new sub-table if needed */\n    if (len > root && (huff & mask) !== low) {\n      /* if first time, transition to sub-tables */\n      if (drop === 0) {\n        drop = root;\n      }\n\n      /* increment past last table */\n      next += min;            /* here min is 1 << curr */\n\n      /* determine length of next table */\n      curr = len - drop;\n      left = 1 << curr;\n      while (curr + drop < max) {\n        left -= count[curr + drop];\n        if (left <= 0) { break; }\n        curr++;\n        left <<= 1;\n      }\n\n      /* check for enough space */\n      used += 1 << curr;\n      if ((type === LENS && used > ENOUGH_LENS) ||\n        (type === DISTS && used > ENOUGH_DISTS)) {\n        return 1;\n      }\n\n      /* point entry in root table to sub-table */\n      low = huff & mask;\n      /*table.op[low] = curr;\n      table.bits[low] = root;\n      table.val[low] = next - opts.table_index;*/\n      table[low] = (root << 24) | (curr << 16) | (next - table_index) |0;\n    }\n  }\n\n  /* fill in remaining table entry if code is incomplete (guaranteed to have\n   at most one remaining entry, since if the code is incomplete, the\n   maximum code length that was allowed to get this far is one bit) */\n  if (huff !== 0) {\n    //table.op[next + huff] = 64;            /* invalid code marker */\n    //table.bits[next + huff] = len - drop;\n    //table.val[next + huff] = 0;\n    table[next + huff] = ((len - drop) << 24) | (64 << 16) |0;\n  }\n\n  /* set return parameters */\n  //opts.table_index += used;\n  opts.bits = root;\n  return 0;\n};\n", "'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nmodule.exports = {\n  2:      'need dictionary',     /* Z_NEED_DICT       2  */\n  1:      'stream end',          /* Z_STREAM_END      1  */\n  0:      '',                    /* Z_OK              0  */\n  '-1':   'file error',          /* Z_ERRNO         (-1) */\n  '-2':   'stream error',        /* Z_STREAM_ERROR  (-2) */\n  '-3':   'data error',          /* Z_DATA_ERROR    (-3) */\n  '-4':   'insufficient memory', /* Z_MEM_ERROR     (-4) */\n  '-5':   'buffer error',        /* Z_BUF_ERROR     (-5) */\n  '-6':   'incompatible version' /* Z_VERSION_ERROR (-6) */\n};\n", "'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n/* eslint-disable space-unary-ops */\n\nvar utils = require('../utils/common');\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n//var Z_FILTERED          = 1;\n//var Z_HUFFMAN_ONLY      = 2;\n//var Z_RLE               = 3;\nvar Z_FIXED               = 4;\n//var Z_DEFAULT_STRATEGY  = 0;\n\n/* Possible values of the data_type field (though see inflate()) */\nvar Z_BINARY              = 0;\nvar Z_TEXT                = 1;\n//var Z_ASCII             = 1; // = Z_TEXT\nvar Z_UNKNOWN             = 2;\n\n/*============================================================================*/\n\n\nfunction zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }\n\n// From zutil.h\n\nvar STORED_BLOCK = 0;\nvar STATIC_TREES = 1;\nvar DYN_TREES    = 2;\n/* The three kinds of block type */\n\nvar MIN_MATCH    = 3;\nvar MAX_MATCH    = 258;\n/* The minimum and maximum match lengths */\n\n// From deflate.h\n/* ===========================================================================\n * Internal compression state.\n */\n\nvar LENGTH_CODES  = 29;\n/* number of length codes, not counting the special END_BLOCK code */\n\nvar LITERALS      = 256;\n/* number of literal bytes 0..255 */\n\nvar L_CODES       = LITERALS + 1 + LENGTH_CODES;\n/* number of Literal or Length codes, including the END_BLOCK code */\n\nvar D_CODES       = 30;\n/* number of distance codes */\n\nvar BL_CODES      = 19;\n/* number of codes used to transfer the bit lengths */\n\nvar HEAP_SIZE     = 2 * L_CODES + 1;\n/* maximum heap size */\n\nvar MAX_BITS      = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nvar Buf_size      = 16;\n/* size of bit buffer in bi_buf */\n\n\n/* ===========================================================================\n * Constants\n */\n\nvar MAX_BL_BITS = 7;\n/* Bit length codes must not exceed MAX_BL_BITS bits */\n\nvar END_BLOCK   = 256;\n/* end of block literal code */\n\nvar REP_3_6     = 16;\n/* repeat previous bit length 3-6 times (2 bits of repeat count) */\n\nvar REPZ_3_10   = 17;\n/* repeat a zero length 3-10 times  (3 bits of repeat count) */\n\nvar REPZ_11_138 = 18;\n/* repeat a zero length 11-138 times  (7 bits of repeat count) */\n\n/* eslint-disable comma-spacing,array-bracket-spacing */\nvar extra_lbits =   /* extra bits for each length code */\n  [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];\n\nvar extra_dbits =   /* extra bits for each distance code */\n  [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];\n\nvar extra_blbits =  /* extra bits for each bit length code */\n  [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7];\n\nvar bl_order =\n  [16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];\n/* eslint-enable comma-spacing,array-bracket-spacing */\n\n/* The lengths of the bit length codes are sent in order of decreasing\n * probability, to avoid transmitting the lengths for unused bit length codes.\n */\n\n/* ===========================================================================\n * Local data. These are initialized only once.\n */\n\n// We pre-fill arrays with 0 to avoid uninitialized gaps\n\nvar DIST_CODE_LEN = 512; /* see definition of array dist_code below */\n\n// !!!! Use flat array instead of structure, Freq = i*2, Len = i*2+1\nvar static_ltree  = new Array((L_CODES + 2) * 2);\nzero(static_ltree);\n/* The static literal tree. Since the bit lengths are imposed, there is no\n * need for the L_CODES extra codes used during heap construction. However\n * The codes 286 and 287 are needed to build a canonical tree (see _tr_init\n * below).\n */\n\nvar static_dtree  = new Array(D_CODES * 2);\nzero(static_dtree);\n/* The static distance tree. (Actually a trivial tree since all codes use\n * 5 bits.)\n */\n\nvar _dist_code    = new Array(DIST_CODE_LEN);\nzero(_dist_code);\n/* Distance codes. The first 256 values correspond to the distances\n * 3 .. 258, the last 256 values correspond to the top 8 bits of\n * the 15 bit distances.\n */\n\nvar _length_code  = new Array(MAX_MATCH - MIN_MATCH + 1);\nzero(_length_code);\n/* length code for each normalized match length (0 == MIN_MATCH) */\n\nvar base_length   = new Array(LENGTH_CODES);\nzero(base_length);\n/* First normalized length for each code (0 = MIN_MATCH) */\n\nvar base_dist     = new Array(D_CODES);\nzero(base_dist);\n/* First normalized distance for each code (0 = distance of 1) */\n\n\nfunction StaticTreeDesc(static_tree, extra_bits, extra_base, elems, max_length) {\n\n  this.static_tree  = static_tree;  /* static tree or NULL */\n  this.extra_bits   = extra_bits;   /* extra bits for each code or NULL */\n  this.extra_base   = extra_base;   /* base index for extra_bits */\n  this.elems        = elems;        /* max number of elements in the tree */\n  this.max_length   = max_length;   /* max bit length for the codes */\n\n  // show if `static_tree` has data or dummy - needed for monomorphic objects\n  this.has_stree    = static_tree && static_tree.length;\n}\n\n\nvar static_l_desc;\nvar static_d_desc;\nvar static_bl_desc;\n\n\nfunction TreeDesc(dyn_tree, stat_desc) {\n  this.dyn_tree = dyn_tree;     /* the dynamic tree */\n  this.max_code = 0;            /* largest code with non zero frequency */\n  this.stat_desc = stat_desc;   /* the corresponding static tree */\n}\n\n\n\nfunction d_code(dist) {\n  return dist < 256 ? _dist_code[dist] : _dist_code[256 + (dist >>> 7)];\n}\n\n\n/* ===========================================================================\n * Output a short LSB first on the stream.\n * IN assertion: there is enough room in pendingBuf.\n */\nfunction put_short(s, w) {\n//    put_byte(s, (uch)((w) & 0xff));\n//    put_byte(s, (uch)((ush)(w) >> 8));\n  s.pending_buf[s.pending++] = (w) & 0xff;\n  s.pending_buf[s.pending++] = (w >>> 8) & 0xff;\n}\n\n\n/* ===========================================================================\n * Send a value on a given number of bits.\n * IN assertion: length <= 16 and value fits in length bits.\n */\nfunction send_bits(s, value, length) {\n  if (s.bi_valid > (Buf_size - length)) {\n    s.bi_buf |= (value << s.bi_valid) & 0xffff;\n    put_short(s, s.bi_buf);\n    s.bi_buf = value >> (Buf_size - s.bi_valid);\n    s.bi_valid += length - Buf_size;\n  } else {\n    s.bi_buf |= (value << s.bi_valid) & 0xffff;\n    s.bi_valid += length;\n  }\n}\n\n\nfunction send_code(s, c, tree) {\n  send_bits(s, tree[c * 2]/*.Code*/, tree[c * 2 + 1]/*.Len*/);\n}\n\n\n/* ===========================================================================\n * Reverse the first len bits of a code, using straightforward code (a faster\n * method would use a table)\n * IN assertion: 1 <= len <= 15\n */\nfunction bi_reverse(code, len) {\n  var res = 0;\n  do {\n    res |= code & 1;\n    code >>>= 1;\n    res <<= 1;\n  } while (--len > 0);\n  return res >>> 1;\n}\n\n\n/* ===========================================================================\n * Flush the bit buffer, keeping at most 7 bits in it.\n */\nfunction bi_flush(s) {\n  if (s.bi_valid === 16) {\n    put_short(s, s.bi_buf);\n    s.bi_buf = 0;\n    s.bi_valid = 0;\n\n  } else if (s.bi_valid >= 8) {\n    s.pending_buf[s.pending++] = s.bi_buf & 0xff;\n    s.bi_buf >>= 8;\n    s.bi_valid -= 8;\n  }\n}\n\n\n/* ===========================================================================\n * Compute the optimal bit lengths for a tree and update the total bit length\n * for the current block.\n * IN assertion: the fields freq and dad are set, heap[heap_max] and\n *    above are the tree nodes sorted by increasing frequency.\n * OUT assertions: the field len is set to the optimal bit length, the\n *     array bl_count contains the frequencies for each bit length.\n *     The length opt_len is updated; static_len is also updated if stree is\n *     not null.\n */\nfunction gen_bitlen(s, desc)\n//    deflate_state *s;\n//    tree_desc *desc;    /* the tree descriptor */\n{\n  var tree            = desc.dyn_tree;\n  var max_code        = desc.max_code;\n  var stree           = desc.stat_desc.static_tree;\n  var has_stree       = desc.stat_desc.has_stree;\n  var extra           = desc.stat_desc.extra_bits;\n  var base            = desc.stat_desc.extra_base;\n  var max_length      = desc.stat_desc.max_length;\n  var h;              /* heap index */\n  var n, m;           /* iterate over the tree elements */\n  var bits;           /* bit length */\n  var xbits;          /* extra bits */\n  var f;              /* frequency */\n  var overflow = 0;   /* number of elements with bit length too large */\n\n  for (bits = 0; bits <= MAX_BITS; bits++) {\n    s.bl_count[bits] = 0;\n  }\n\n  /* In a first pass, compute the optimal bit lengths (which may\n   * overflow in the case of the bit length tree).\n   */\n  tree[s.heap[s.heap_max] * 2 + 1]/*.Len*/ = 0; /* root of the heap */\n\n  for (h = s.heap_max + 1; h < HEAP_SIZE; h++) {\n    n = s.heap[h];\n    bits = tree[tree[n * 2 + 1]/*.Dad*/ * 2 + 1]/*.Len*/ + 1;\n    if (bits > max_length) {\n      bits = max_length;\n      overflow++;\n    }\n    tree[n * 2 + 1]/*.Len*/ = bits;\n    /* We overwrite tree[n].Dad which is no longer needed */\n\n    if (n > max_code) { continue; } /* not a leaf node */\n\n    s.bl_count[bits]++;\n    xbits = 0;\n    if (n >= base) {\n      xbits = extra[n - base];\n    }\n    f = tree[n * 2]/*.Freq*/;\n    s.opt_len += f * (bits + xbits);\n    if (has_stree) {\n      s.static_len += f * (stree[n * 2 + 1]/*.Len*/ + xbits);\n    }\n  }\n  if (overflow === 0) { return; }\n\n  // Trace((stderr,\"\\nbit length overflow\\n\"));\n  /* This happens for example on obj2 and pic of the Calgary corpus */\n\n  /* Find the first bit length which could increase: */\n  do {\n    bits = max_length - 1;\n    while (s.bl_count[bits] === 0) { bits--; }\n    s.bl_count[bits]--;      /* move one leaf down the tree */\n    s.bl_count[bits + 1] += 2; /* move one overflow item as its brother */\n    s.bl_count[max_length]--;\n    /* The brother of the overflow item also moves one step up,\n     * but this does not affect bl_count[max_length]\n     */\n    overflow -= 2;\n  } while (overflow > 0);\n\n  /* Now recompute all bit lengths, scanning in increasing frequency.\n   * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all\n   * lengths instead of fixing only the wrong ones. This idea is taken\n   * from 'ar' written by Haruhiko Okumura.)\n   */\n  for (bits = max_length; bits !== 0; bits--) {\n    n = s.bl_count[bits];\n    while (n !== 0) {\n      m = s.heap[--h];\n      if (m > max_code) { continue; }\n      if (tree[m * 2 + 1]/*.Len*/ !== bits) {\n        // Trace((stderr,\"code %d bits %d->%d\\n\", m, tree[m].Len, bits));\n        s.opt_len += (bits - tree[m * 2 + 1]/*.Len*/) * tree[m * 2]/*.Freq*/;\n        tree[m * 2 + 1]/*.Len*/ = bits;\n      }\n      n--;\n    }\n  }\n}\n\n\n/* ===========================================================================\n * Generate the codes for a given tree and bit counts (which need not be\n * optimal).\n * IN assertion: the array bl_count contains the bit length statistics for\n * the given tree and the field len is set for all tree elements.\n * OUT assertion: the field code is set for all tree elements of non\n *     zero code length.\n */\nfunction gen_codes(tree, max_code, bl_count)\n//    ct_data *tree;             /* the tree to decorate */\n//    int max_code;              /* largest code with non zero frequency */\n//    ushf *bl_count;            /* number of codes at each bit length */\n{\n  var next_code = new Array(MAX_BITS + 1); /* next code value for each bit length */\n  var code = 0;              /* running code value */\n  var bits;                  /* bit index */\n  var n;                     /* code index */\n\n  /* The distribution counts are first used to generate the code values\n   * without bit reversal.\n   */\n  for (bits = 1; bits <= MAX_BITS; bits++) {\n    next_code[bits] = code = (code + bl_count[bits - 1]) << 1;\n  }\n  /* Check that the bit counts in bl_count are consistent. The last code\n   * must be all ones.\n   */\n  //Assert (code + bl_count[MAX_BITS]-1 == (1<<MAX_BITS)-1,\n  //        \"inconsistent bit counts\");\n  //Tracev((stderr,\"\\ngen_codes: max_code %d \", max_code));\n\n  for (n = 0;  n <= max_code; n++) {\n    var len = tree[n * 2 + 1]/*.Len*/;\n    if (len === 0) { continue; }\n    /* Now reverse the bits */\n    tree[n * 2]/*.Code*/ = bi_reverse(next_code[len]++, len);\n\n    //Tracecv(tree != static_ltree, (stderr,\"\\nn %3d %c l %2d c %4x (%x) \",\n    //     n, (isgraph(n) ? n : ' '), len, tree[n].Code, next_code[len]-1));\n  }\n}\n\n\n/* ===========================================================================\n * Initialize the various 'constant' tables.\n */\nfunction tr_static_init() {\n  var n;        /* iterates over tree elements */\n  var bits;     /* bit counter */\n  var length;   /* length value */\n  var code;     /* code value */\n  var dist;     /* distance index */\n  var bl_count = new Array(MAX_BITS + 1);\n  /* number of codes at each bit length for an optimal tree */\n\n  // do check in _tr_init()\n  //if (static_init_done) return;\n\n  /* For some embedded targets, global variables are not initialized: */\n/*#ifdef NO_INIT_GLOBAL_POINTERS\n  static_l_desc.static_tree = static_ltree;\n  static_l_desc.extra_bits = extra_lbits;\n  static_d_desc.static_tree = static_dtree;\n  static_d_desc.extra_bits = extra_dbits;\n  static_bl_desc.extra_bits = extra_blbits;\n#endif*/\n\n  /* Initialize the mapping length (0..255) -> length code (0..28) */\n  length = 0;\n  for (code = 0; code < LENGTH_CODES - 1; code++) {\n    base_length[code] = length;\n    for (n = 0; n < (1 << extra_lbits[code]); n++) {\n      _length_code[length++] = code;\n    }\n  }\n  //Assert (length == 256, \"tr_static_init: length != 256\");\n  /* Note that the length 255 (match length 258) can be represented\n   * in two different ways: code 284 + 5 bits or code 285, so we\n   * overwrite length_code[255] to use the best encoding:\n   */\n  _length_code[length - 1] = code;\n\n  /* Initialize the mapping dist (0..32K) -> dist code (0..29) */\n  dist = 0;\n  for (code = 0; code < 16; code++) {\n    base_dist[code] = dist;\n    for (n = 0; n < (1 << extra_dbits[code]); n++) {\n      _dist_code[dist++] = code;\n    }\n  }\n  //Assert (dist == 256, \"tr_static_init: dist != 256\");\n  dist >>= 7; /* from now on, all distances are divided by 128 */\n  for (; code < D_CODES; code++) {\n    base_dist[code] = dist << 7;\n    for (n = 0; n < (1 << (extra_dbits[code] - 7)); n++) {\n      _dist_code[256 + dist++] = code;\n    }\n  }\n  //Assert (dist == 256, \"tr_static_init: 256+dist != 512\");\n\n  /* Construct the codes of the static literal tree */\n  for (bits = 0; bits <= MAX_BITS; bits++) {\n    bl_count[bits] = 0;\n  }\n\n  n = 0;\n  while (n <= 143) {\n    static_ltree[n * 2 + 1]/*.Len*/ = 8;\n    n++;\n    bl_count[8]++;\n  }\n  while (n <= 255) {\n    static_ltree[n * 2 + 1]/*.Len*/ = 9;\n    n++;\n    bl_count[9]++;\n  }\n  while (n <= 279) {\n    static_ltree[n * 2 + 1]/*.Len*/ = 7;\n    n++;\n    bl_count[7]++;\n  }\n  while (n <= 287) {\n    static_ltree[n * 2 + 1]/*.Len*/ = 8;\n    n++;\n    bl_count[8]++;\n  }\n  /* Codes 286 and 287 do not exist, but we must include them in the\n   * tree construction to get a canonical Huffman tree (longest code\n   * all ones)\n   */\n  gen_codes(static_ltree, L_CODES + 1, bl_count);\n\n  /* The static distance tree is trivial: */\n  for (n = 0; n < D_CODES; n++) {\n    static_dtree[n * 2 + 1]/*.Len*/ = 5;\n    static_dtree[n * 2]/*.Code*/ = bi_reverse(n, 5);\n  }\n\n  // Now data ready and we can init static trees\n  static_l_desc = new StaticTreeDesc(static_ltree, extra_lbits, LITERALS + 1, L_CODES, MAX_BITS);\n  static_d_desc = new StaticTreeDesc(static_dtree, extra_dbits, 0,          D_CODES, MAX_BITS);\n  static_bl_desc = new StaticTreeDesc(new Array(0), extra_blbits, 0,         BL_CODES, MAX_BL_BITS);\n\n  //static_init_done = true;\n}\n\n\n/* ===========================================================================\n * Initialize a new block.\n */\nfunction init_block(s) {\n  var n; /* iterates over tree elements */\n\n  /* Initialize the trees. */\n  for (n = 0; n < L_CODES;  n++) { s.dyn_ltree[n * 2]/*.Freq*/ = 0; }\n  for (n = 0; n < D_CODES;  n++) { s.dyn_dtree[n * 2]/*.Freq*/ = 0; }\n  for (n = 0; n < BL_CODES; n++) { s.bl_tree[n * 2]/*.Freq*/ = 0; }\n\n  s.dyn_ltree[END_BLOCK * 2]/*.Freq*/ = 1;\n  s.opt_len = s.static_len = 0;\n  s.last_lit = s.matches = 0;\n}\n\n\n/* ===========================================================================\n * Flush the bit buffer and align the output on a byte boundary\n */\nfunction bi_windup(s)\n{\n  if (s.bi_valid > 8) {\n    put_short(s, s.bi_buf);\n  } else if (s.bi_valid > 0) {\n    //put_byte(s, (Byte)s->bi_buf);\n    s.pending_buf[s.pending++] = s.bi_buf;\n  }\n  s.bi_buf = 0;\n  s.bi_valid = 0;\n}\n\n/* ===========================================================================\n * Copy a stored block, storing first the length and its\n * one's complement if requested.\n */\nfunction copy_block(s, buf, len, header)\n//DeflateState *s;\n//charf    *buf;    /* the input data */\n//unsigned len;     /* its length */\n//int      header;  /* true if block header must be written */\n{\n  bi_windup(s);        /* align on byte boundary */\n\n  if (header) {\n    put_short(s, len);\n    put_short(s, ~len);\n  }\n//  while (len--) {\n//    put_byte(s, *buf++);\n//  }\n  utils.arraySet(s.pending_buf, s.window, buf, len, s.pending);\n  s.pending += len;\n}\n\n/* ===========================================================================\n * Compares to subtrees, using the tree depth as tie breaker when\n * the subtrees have equal frequency. This minimizes the worst case length.\n */\nfunction smaller(tree, n, m, depth) {\n  var _n2 = n * 2;\n  var _m2 = m * 2;\n  return (tree[_n2]/*.Freq*/ < tree[_m2]/*.Freq*/ ||\n         (tree[_n2]/*.Freq*/ === tree[_m2]/*.Freq*/ && depth[n] <= depth[m]));\n}\n\n/* ===========================================================================\n * Restore the heap property by moving down the tree starting at node k,\n * exchanging a node with the smallest of its two sons if necessary, stopping\n * when the heap property is re-established (each father smaller than its\n * two sons).\n */\nfunction pqdownheap(s, tree, k)\n//    deflate_state *s;\n//    ct_data *tree;  /* the tree to restore */\n//    int k;               /* node to move down */\n{\n  var v = s.heap[k];\n  var j = k << 1;  /* left son of k */\n  while (j <= s.heap_len) {\n    /* Set j to the smallest of the two sons: */\n    if (j < s.heap_len &&\n      smaller(tree, s.heap[j + 1], s.heap[j], s.depth)) {\n      j++;\n    }\n    /* Exit if v is smaller than both sons */\n    if (smaller(tree, v, s.heap[j], s.depth)) { break; }\n\n    /* Exchange v with the smallest son */\n    s.heap[k] = s.heap[j];\n    k = j;\n\n    /* And continue down the tree, setting j to the left son of k */\n    j <<= 1;\n  }\n  s.heap[k] = v;\n}\n\n\n// inlined manually\n// var SMALLEST = 1;\n\n/* ===========================================================================\n * Send the block data compressed using the given Huffman trees\n */\nfunction compress_block(s, ltree, dtree)\n//    deflate_state *s;\n//    const ct_data *ltree; /* literal tree */\n//    const ct_data *dtree; /* distance tree */\n{\n  var dist;           /* distance of matched string */\n  var lc;             /* match length or unmatched char (if dist == 0) */\n  var lx = 0;         /* running index in l_buf */\n  var code;           /* the code to send */\n  var extra;          /* number of extra bits to send */\n\n  if (s.last_lit !== 0) {\n    do {\n      dist = (s.pending_buf[s.d_buf + lx * 2] << 8) | (s.pending_buf[s.d_buf + lx * 2 + 1]);\n      lc = s.pending_buf[s.l_buf + lx];\n      lx++;\n\n      if (dist === 0) {\n        send_code(s, lc, ltree); /* send a literal byte */\n        //Tracecv(isgraph(lc), (stderr,\" '%c' \", lc));\n      } else {\n        /* Here, lc is the match length - MIN_MATCH */\n        code = _length_code[lc];\n        send_code(s, code + LITERALS + 1, ltree); /* send the length code */\n        extra = extra_lbits[code];\n        if (extra !== 0) {\n          lc -= base_length[code];\n          send_bits(s, lc, extra);       /* send the extra length bits */\n        }\n        dist--; /* dist is now the match distance - 1 */\n        code = d_code(dist);\n        //Assert (code < D_CODES, \"bad d_code\");\n\n        send_code(s, code, dtree);       /* send the distance code */\n        extra = extra_dbits[code];\n        if (extra !== 0) {\n          dist -= base_dist[code];\n          send_bits(s, dist, extra);   /* send the extra distance bits */\n        }\n      } /* literal or match pair ? */\n\n      /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */\n      //Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx,\n      //       \"pendingBuf overflow\");\n\n    } while (lx < s.last_lit);\n  }\n\n  send_code(s, END_BLOCK, ltree);\n}\n\n\n/* ===========================================================================\n * Construct one Huffman tree and assigns the code bit strings and lengths.\n * Update the total bit length for the current block.\n * IN assertion: the field freq is set for all tree elements.\n * OUT assertions: the fields len and code are set to the optimal bit length\n *     and corresponding code. The length opt_len is updated; static_len is\n *     also updated if stree is not null. The field max_code is set.\n */\nfunction build_tree(s, desc)\n//    deflate_state *s;\n//    tree_desc *desc; /* the tree descriptor */\n{\n  var tree     = desc.dyn_tree;\n  var stree    = desc.stat_desc.static_tree;\n  var has_stree = desc.stat_desc.has_stree;\n  var elems    = desc.stat_desc.elems;\n  var n, m;          /* iterate over heap elements */\n  var max_code = -1; /* largest code with non zero frequency */\n  var node;          /* new node being created */\n\n  /* Construct the initial heap, with least frequent element in\n   * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1].\n   * heap[0] is not used.\n   */\n  s.heap_len = 0;\n  s.heap_max = HEAP_SIZE;\n\n  for (n = 0; n < elems; n++) {\n    if (tree[n * 2]/*.Freq*/ !== 0) {\n      s.heap[++s.heap_len] = max_code = n;\n      s.depth[n] = 0;\n\n    } else {\n      tree[n * 2 + 1]/*.Len*/ = 0;\n    }\n  }\n\n  /* The pkzip format requires that at least one distance code exists,\n   * and that at least one bit should be sent even if there is only one\n   * possible code. So to avoid special checks later on we force at least\n   * two codes of non zero frequency.\n   */\n  while (s.heap_len < 2) {\n    node = s.heap[++s.heap_len] = (max_code < 2 ? ++max_code : 0);\n    tree[node * 2]/*.Freq*/ = 1;\n    s.depth[node] = 0;\n    s.opt_len--;\n\n    if (has_stree) {\n      s.static_len -= stree[node * 2 + 1]/*.Len*/;\n    }\n    /* node is 0 or 1 so it does not have extra bits */\n  }\n  desc.max_code = max_code;\n\n  /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree,\n   * establish sub-heaps of increasing lengths:\n   */\n  for (n = (s.heap_len >> 1/*int /2*/); n >= 1; n--) { pqdownheap(s, tree, n); }\n\n  /* Construct the Huffman tree by repeatedly combining the least two\n   * frequent nodes.\n   */\n  node = elems;              /* next internal node of the tree */\n  do {\n    //pqremove(s, tree, n);  /* n = node of least frequency */\n    /*** pqremove ***/\n    n = s.heap[1/*SMALLEST*/];\n    s.heap[1/*SMALLEST*/] = s.heap[s.heap_len--];\n    pqdownheap(s, tree, 1/*SMALLEST*/);\n    /***/\n\n    m = s.heap[1/*SMALLEST*/]; /* m = node of next least frequency */\n\n    s.heap[--s.heap_max] = n; /* keep the nodes sorted by frequency */\n    s.heap[--s.heap_max] = m;\n\n    /* Create a new node father of n and m */\n    tree[node * 2]/*.Freq*/ = tree[n * 2]/*.Freq*/ + tree[m * 2]/*.Freq*/;\n    s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1;\n    tree[n * 2 + 1]/*.Dad*/ = tree[m * 2 + 1]/*.Dad*/ = node;\n\n    /* and insert the new node in the heap */\n    s.heap[1/*SMALLEST*/] = node++;\n    pqdownheap(s, tree, 1/*SMALLEST*/);\n\n  } while (s.heap_len >= 2);\n\n  s.heap[--s.heap_max] = s.heap[1/*SMALLEST*/];\n\n  /* At this point, the fields freq and dad are set. We can now\n   * generate the bit lengths.\n   */\n  gen_bitlen(s, desc);\n\n  /* The field len is now set, we can generate the bit codes */\n  gen_codes(tree, max_code, s.bl_count);\n}\n\n\n/* ===========================================================================\n * Scan a literal or distance tree to determine the frequencies of the codes\n * in the bit length tree.\n */\nfunction scan_tree(s, tree, max_code)\n//    deflate_state *s;\n//    ct_data *tree;   /* the tree to be scanned */\n//    int max_code;    /* and its largest code of non zero frequency */\n{\n  var n;                     /* iterates over all tree elements */\n  var prevlen = -1;          /* last emitted length */\n  var curlen;                /* length of current code */\n\n  var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n  var count = 0;             /* repeat count of the current code */\n  var max_count = 7;         /* max repeat count */\n  var min_count = 4;         /* min repeat count */\n\n  if (nextlen === 0) {\n    max_count = 138;\n    min_count = 3;\n  }\n  tree[(max_code + 1) * 2 + 1]/*.Len*/ = 0xffff; /* guard */\n\n  for (n = 0; n <= max_code; n++) {\n    curlen = nextlen;\n    nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n    if (++count < max_count && curlen === nextlen) {\n      continue;\n\n    } else if (count < min_count) {\n      s.bl_tree[curlen * 2]/*.Freq*/ += count;\n\n    } else if (curlen !== 0) {\n\n      if (curlen !== prevlen) { s.bl_tree[curlen * 2]/*.Freq*/++; }\n      s.bl_tree[REP_3_6 * 2]/*.Freq*/++;\n\n    } else if (count <= 10) {\n      s.bl_tree[REPZ_3_10 * 2]/*.Freq*/++;\n\n    } else {\n      s.bl_tree[REPZ_11_138 * 2]/*.Freq*/++;\n    }\n\n    count = 0;\n    prevlen = curlen;\n\n    if (nextlen === 0) {\n      max_count = 138;\n      min_count = 3;\n\n    } else if (curlen === nextlen) {\n      max_count = 6;\n      min_count = 3;\n\n    } else {\n      max_count = 7;\n      min_count = 4;\n    }\n  }\n}\n\n\n/* ===========================================================================\n * Send a literal or distance tree in compressed form, using the codes in\n * bl_tree.\n */\nfunction send_tree(s, tree, max_code)\n//    deflate_state *s;\n//    ct_data *tree; /* the tree to be scanned */\n//    int max_code;       /* and its largest code of non zero frequency */\n{\n  var n;                     /* iterates over all tree elements */\n  var prevlen = -1;          /* last emitted length */\n  var curlen;                /* length of current code */\n\n  var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n  var count = 0;             /* repeat count of the current code */\n  var max_count = 7;         /* max repeat count */\n  var min_count = 4;         /* min repeat count */\n\n  /* tree[max_code+1].Len = -1; */  /* guard already set */\n  if (nextlen === 0) {\n    max_count = 138;\n    min_count = 3;\n  }\n\n  for (n = 0; n <= max_code; n++) {\n    curlen = nextlen;\n    nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n    if (++count < max_count && curlen === nextlen) {\n      continue;\n\n    } else if (count < min_count) {\n      do { send_code(s, curlen, s.bl_tree); } while (--count !== 0);\n\n    } else if (curlen !== 0) {\n      if (curlen !== prevlen) {\n        send_code(s, curlen, s.bl_tree);\n        count--;\n      }\n      //Assert(count >= 3 && count <= 6, \" 3_6?\");\n      send_code(s, REP_3_6, s.bl_tree);\n      send_bits(s, count - 3, 2);\n\n    } else if (count <= 10) {\n      send_code(s, REPZ_3_10, s.bl_tree);\n      send_bits(s, count - 3, 3);\n\n    } else {\n      send_code(s, REPZ_11_138, s.bl_tree);\n      send_bits(s, count - 11, 7);\n    }\n\n    count = 0;\n    prevlen = curlen;\n    if (nextlen === 0) {\n      max_count = 138;\n      min_count = 3;\n\n    } else if (curlen === nextlen) {\n      max_count = 6;\n      min_count = 3;\n\n    } else {\n      max_count = 7;\n      min_count = 4;\n    }\n  }\n}\n\n\n/* ===========================================================================\n * Construct the Huffman tree for the bit lengths and return the index in\n * bl_order of the last bit length code to send.\n */\nfunction build_bl_tree(s) {\n  var max_blindex;  /* index of last bit length code of non zero freq */\n\n  /* Determine the bit length frequencies for literal and distance trees */\n  scan_tree(s, s.dyn_ltree, s.l_desc.max_code);\n  scan_tree(s, s.dyn_dtree, s.d_desc.max_code);\n\n  /* Build the bit length tree: */\n  build_tree(s, s.bl_desc);\n  /* opt_len now includes the length of the tree representations, except\n   * the lengths of the bit lengths codes and the 5+5+4 bits for the counts.\n   */\n\n  /* Determine the number of bit length codes to send. The pkzip format\n   * requires that at least 4 bit length codes be sent. (appnote.txt says\n   * 3 but the actual value used is 4.)\n   */\n  for (max_blindex = BL_CODES - 1; max_blindex >= 3; max_blindex--) {\n    if (s.bl_tree[bl_order[max_blindex] * 2 + 1]/*.Len*/ !== 0) {\n      break;\n    }\n  }\n  /* Update opt_len to include the bit length tree and counts */\n  s.opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4;\n  //Tracev((stderr, \"\\ndyn trees: dyn %ld, stat %ld\",\n  //        s->opt_len, s->static_len));\n\n  return max_blindex;\n}\n\n\n/* ===========================================================================\n * Send the header for a block using dynamic Huffman trees: the counts, the\n * lengths of the bit length codes, the literal tree and the distance tree.\n * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4.\n */\nfunction send_all_trees(s, lcodes, dcodes, blcodes)\n//    deflate_state *s;\n//    int lcodes, dcodes, blcodes; /* number of codes for each tree */\n{\n  var rank;                    /* index in bl_order */\n\n  //Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, \"not enough codes\");\n  //Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES,\n  //        \"too many codes\");\n  //Tracev((stderr, \"\\nbl counts: \"));\n  send_bits(s, lcodes - 257, 5); /* not +255 as stated in appnote.txt */\n  send_bits(s, dcodes - 1,   5);\n  send_bits(s, blcodes - 4,  4); /* not -3 as stated in appnote.txt */\n  for (rank = 0; rank < blcodes; rank++) {\n    //Tracev((stderr, \"\\nbl code %2d \", bl_order[rank]));\n    send_bits(s, s.bl_tree[bl_order[rank] * 2 + 1]/*.Len*/, 3);\n  }\n  //Tracev((stderr, \"\\nbl tree: sent %ld\", s->bits_sent));\n\n  send_tree(s, s.dyn_ltree, lcodes - 1); /* literal tree */\n  //Tracev((stderr, \"\\nlit tree: sent %ld\", s->bits_sent));\n\n  send_tree(s, s.dyn_dtree, dcodes - 1); /* distance tree */\n  //Tracev((stderr, \"\\ndist tree: sent %ld\", s->bits_sent));\n}\n\n\n/* ===========================================================================\n * Check if the data type is TEXT or BINARY, using the following algorithm:\n * - TEXT if the two conditions below are satisfied:\n *    a) There are no non-portable control characters belonging to the\n *       \"black list\" (0..6, 14..25, 28..31).\n *    b) There is at least one printable character belonging to the\n *       \"white list\" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255).\n * - BINARY otherwise.\n * - The following partially-portable control characters form a\n *   \"gray list\" that is ignored in this detection algorithm:\n *   (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}).\n * IN assertion: the fields Freq of dyn_ltree are set.\n */\nfunction detect_data_type(s) {\n  /* black_mask is the bit mask of black-listed bytes\n   * set bits 0..6, 14..25, and 28..31\n   * 0xf3ffc07f = binary 11110011111111111100000001111111\n   */\n  var black_mask = 0xf3ffc07f;\n  var n;\n\n  /* Check for non-textual (\"black-listed\") bytes. */\n  for (n = 0; n <= 31; n++, black_mask >>>= 1) {\n    if ((black_mask & 1) && (s.dyn_ltree[n * 2]/*.Freq*/ !== 0)) {\n      return Z_BINARY;\n    }\n  }\n\n  /* Check for textual (\"white-listed\") bytes. */\n  if (s.dyn_ltree[9 * 2]/*.Freq*/ !== 0 || s.dyn_ltree[10 * 2]/*.Freq*/ !== 0 ||\n      s.dyn_ltree[13 * 2]/*.Freq*/ !== 0) {\n    return Z_TEXT;\n  }\n  for (n = 32; n < LITERALS; n++) {\n    if (s.dyn_ltree[n * 2]/*.Freq*/ !== 0) {\n      return Z_TEXT;\n    }\n  }\n\n  /* There are no \"black-listed\" or \"white-listed\" bytes:\n   * this stream either is empty or has tolerated (\"gray-listed\") bytes only.\n   */\n  return Z_BINARY;\n}\n\n\nvar static_init_done = false;\n\n/* ===========================================================================\n * Initialize the tree data structures for a new zlib stream.\n */\nfunction _tr_init(s)\n{\n\n  if (!static_init_done) {\n    tr_static_init();\n    static_init_done = true;\n  }\n\n  s.l_desc  = new TreeDesc(s.dyn_ltree, static_l_desc);\n  s.d_desc  = new TreeDesc(s.dyn_dtree, static_d_desc);\n  s.bl_desc = new TreeDesc(s.bl_tree, static_bl_desc);\n\n  s.bi_buf = 0;\n  s.bi_valid = 0;\n\n  /* Initialize the first block of the first file: */\n  init_block(s);\n}\n\n\n/* ===========================================================================\n * Send a stored block\n */\nfunction _tr_stored_block(s, buf, stored_len, last)\n//DeflateState *s;\n//charf *buf;       /* input block */\n//ulg stored_len;   /* length of input block */\n//int last;         /* one if this is the last block for a file */\n{\n  send_bits(s, (STORED_BLOCK << 1) + (last ? 1 : 0), 3);    /* send block type */\n  copy_block(s, buf, stored_len, true); /* with header */\n}\n\n\n/* ===========================================================================\n * Send one empty static block to give enough lookahead for inflate.\n * This takes 10 bits, of which 7 may remain in the bit buffer.\n */\nfunction _tr_align(s) {\n  send_bits(s, STATIC_TREES << 1, 3);\n  send_code(s, END_BLOCK, static_ltree);\n  bi_flush(s);\n}\n\n\n/* ===========================================================================\n * Determine the best encoding for the current block: dynamic trees, static\n * trees or store, and output the encoded block to the zip file.\n */\nfunction _tr_flush_block(s, buf, stored_len, last)\n//DeflateState *s;\n//charf *buf;       /* input block, or NULL if too old */\n//ulg stored_len;   /* length of input block */\n//int last;         /* one if this is the last block for a file */\n{\n  var opt_lenb, static_lenb;  /* opt_len and static_len in bytes */\n  var max_blindex = 0;        /* index of last bit length code of non zero freq */\n\n  /* Build the Huffman trees unless a stored block is forced */\n  if (s.level > 0) {\n\n    /* Check if the file is binary or text */\n    if (s.strm.data_type === Z_UNKNOWN) {\n      s.strm.data_type = detect_data_type(s);\n    }\n\n    /* Construct the literal and distance trees */\n    build_tree(s, s.l_desc);\n    // Tracev((stderr, \"\\nlit data: dyn %ld, stat %ld\", s->opt_len,\n    //        s->static_len));\n\n    build_tree(s, s.d_desc);\n    // Tracev((stderr, \"\\ndist data: dyn %ld, stat %ld\", s->opt_len,\n    //        s->static_len));\n    /* At this point, opt_len and static_len are the total bit lengths of\n     * the compressed block data, excluding the tree representations.\n     */\n\n    /* Build the bit length tree for the above two trees, and get the index\n     * in bl_order of the last bit length code to send.\n     */\n    max_blindex = build_bl_tree(s);\n\n    /* Determine the best encoding. Compute the block lengths in bytes. */\n    opt_lenb = (s.opt_len + 3 + 7) >>> 3;\n    static_lenb = (s.static_len + 3 + 7) >>> 3;\n\n    // Tracev((stderr, \"\\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u \",\n    //        opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len,\n    //        s->last_lit));\n\n    if (static_lenb <= opt_lenb) { opt_lenb = static_lenb; }\n\n  } else {\n    // Assert(buf != (char*)0, \"lost buf\");\n    opt_lenb = static_lenb = stored_len + 5; /* force a stored block */\n  }\n\n  if ((stored_len + 4 <= opt_lenb) && (buf !== -1)) {\n    /* 4: two words for the lengths */\n\n    /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE.\n     * Otherwise we can't have processed more than WSIZE input bytes since\n     * the last block flush, because compression would have been\n     * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to\n     * transform a block into a stored block.\n     */\n    _tr_stored_block(s, buf, stored_len, last);\n\n  } else if (s.strategy === Z_FIXED || static_lenb === opt_lenb) {\n\n    send_bits(s, (STATIC_TREES << 1) + (last ? 1 : 0), 3);\n    compress_block(s, static_ltree, static_dtree);\n\n  } else {\n    send_bits(s, (DYN_TREES << 1) + (last ? 1 : 0), 3);\n    send_all_trees(s, s.l_desc.max_code + 1, s.d_desc.max_code + 1, max_blindex + 1);\n    compress_block(s, s.dyn_ltree, s.dyn_dtree);\n  }\n  // Assert (s->compressed_len == s->bits_sent, \"bad compressed size\");\n  /* The above check is made mod 2^32, for files larger than 512 MB\n   * and uLong implemented on 32 bits.\n   */\n  init_block(s);\n\n  if (last) {\n    bi_windup(s);\n  }\n  // Tracev((stderr,\"\\ncomprlen %lu(%lu) \", s->compressed_len>>3,\n  //       s->compressed_len-7*last));\n}\n\n/* ===========================================================================\n * Save the match info and tally the frequency counts. Return true if\n * the current block must be flushed.\n */\nfunction _tr_tally(s, dist, lc)\n//    deflate_state *s;\n//    unsigned dist;  /* distance of matched string */\n//    unsigned lc;    /* match length-MIN_MATCH or unmatched char (if dist==0) */\n{\n  //var out_length, in_length, dcode;\n\n  s.pending_buf[s.d_buf + s.last_lit * 2]     = (dist >>> 8) & 0xff;\n  s.pending_buf[s.d_buf + s.last_lit * 2 + 1] = dist & 0xff;\n\n  s.pending_buf[s.l_buf + s.last_lit] = lc & 0xff;\n  s.last_lit++;\n\n  if (dist === 0) {\n    /* lc is the unmatched char */\n    s.dyn_ltree[lc * 2]/*.Freq*/++;\n  } else {\n    s.matches++;\n    /* Here, lc is the match length - MIN_MATCH */\n    dist--;             /* dist = match distance - 1 */\n    //Assert((ush)dist < (ush)MAX_DIST(s) &&\n    //       (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) &&\n    //       (ush)d_code(dist) < (ush)D_CODES,  \"_tr_tally: bad match\");\n\n    s.dyn_ltree[(_length_code[lc] + LITERALS + 1) * 2]/*.Freq*/++;\n    s.dyn_dtree[d_code(dist) * 2]/*.Freq*/++;\n  }\n\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n\n//#ifdef TRUNCATE_BLOCK\n//  /* Try to guess if it is profitable to stop the current block here */\n//  if ((s.last_lit & 0x1fff) === 0 && s.level > 2) {\n//    /* Compute an upper bound for the compressed length */\n//    out_length = s.last_lit*8;\n//    in_length = s.strstart - s.block_start;\n//\n//    for (dcode = 0; dcode < D_CODES; dcode++) {\n//      out_length += s.dyn_dtree[dcode*2]/*.Freq*/ * (5 + extra_dbits[dcode]);\n//    }\n//    out_length >>>= 3;\n//    //Tracev((stderr,\"\\nlast_lit %u, in %ld, out ~%ld(%ld%%) \",\n//    //       s->last_lit, in_length, out_length,\n//    //       100L - out_length*100L/in_length));\n//    if (s.matches < (s.last_lit>>1)/*int /2*/ && out_length < (in_length>>1)/*int /2*/) {\n//      return true;\n//    }\n//  }\n//#endif\n\n  return (s.last_lit === s.lit_bufsize - 1);\n  /* We avoid equality with lit_bufsize because of wraparound at 64K\n   * on 16 bit machines and because stored blocks are restricted to\n   * 64K-1 bytes.\n   */\n}\n\nexports._tr_init  = _tr_init;\nexports._tr_stored_block = _tr_stored_block;\nexports._tr_flush_block  = _tr_flush_block;\nexports._tr_tally = _tr_tally;\nexports._tr_align = _tr_align;\n", "'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction ZStream() {\n  /* next input byte */\n  this.input = null; // JS specific, because we have no pointers\n  this.next_in = 0;\n  /* number of bytes available at input */\n  this.avail_in = 0;\n  /* total number of input bytes read so far */\n  this.total_in = 0;\n  /* next output byte should be put there */\n  this.output = null; // JS specific, because we have no pointers\n  this.next_out = 0;\n  /* remaining free space at output */\n  this.avail_out = 0;\n  /* total number of bytes output so far */\n  this.total_out = 0;\n  /* last error message, NULL if no error */\n  this.msg = ''/*Z_NULL*/;\n  /* not visible by applications */\n  this.state = null;\n  /* best guess about the data type: binary or text */\n  this.data_type = 2/*Z_UNKNOWN*/;\n  /* adler32 value of the uncompressed data */\n  this.adler = 0;\n}\n\nmodule.exports = ZStream;\n", "// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things.  But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals.  It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n    throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n    throw new Error('clearTimeout has not been defined');\n}\n(function () {\n    try {\n        if (typeof setTimeout === 'function') {\n            cachedSetTimeout = setTimeout;\n        } else {\n            cachedSetTimeout = defaultSetTimout;\n        }\n    } catch (e) {\n        cachedSetTimeout = defaultSetTimout;\n    }\n    try {\n        if (typeof clearTimeout === 'function') {\n            cachedClearTimeout = clearTimeout;\n        } else {\n            cachedClearTimeout = defaultClearTimeout;\n        }\n    } catch (e) {\n        cachedClearTimeout = defaultClearTimeout;\n    }\n} ())\nfunction runTimeout(fun) {\n    if (cachedSetTimeout === setTimeout) {\n        //normal enviroments in sane situations\n        return setTimeout(fun, 0);\n    }\n    // if setTimeout wasn't available but was latter defined\n    if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n        cachedSetTimeout = setTimeout;\n        return setTimeout(fun, 0);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedSetTimeout(fun, 0);\n    } catch(e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n            return cachedSetTimeout.call(null, fun, 0);\n        } catch(e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n            return cachedSetTimeout.call(this, fun, 0);\n        }\n    }\n\n\n}\nfunction runClearTimeout(marker) {\n    if (cachedClearTimeout === clearTimeout) {\n        //normal enviroments in sane situations\n        return clearTimeout(marker);\n    }\n    // if clearTimeout wasn't available but was latter defined\n    if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n        cachedClearTimeout = clearTimeout;\n        return clearTimeout(marker);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedClearTimeout(marker);\n    } catch (e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't  trust the global object when called normally\n            return cachedClearTimeout.call(null, marker);\n        } catch (e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n            // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n            return cachedClearTimeout.call(this, marker);\n        }\n    }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n    if (!draining || !currentQueue) {\n        return;\n    }\n    draining = false;\n    if (currentQueue.length) {\n        queue = currentQueue.concat(queue);\n    } else {\n        queueIndex = -1;\n    }\n    if (queue.length) {\n        drainQueue();\n    }\n}\n\nfunction drainQueue() {\n    if (draining) {\n        return;\n    }\n    var timeout = runTimeout(cleanUpNextTick);\n    draining = true;\n\n    var len = queue.length;\n    while(len) {\n        currentQueue = queue;\n        queue = [];\n        while (++queueIndex < len) {\n            if (currentQueue) {\n                currentQueue[queueIndex].run();\n            }\n        }\n        queueIndex = -1;\n        len = queue.length;\n    }\n    currentQueue = null;\n    draining = false;\n    runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n    var args = new Array(arguments.length - 1);\n    if (arguments.length > 1) {\n        for (var i = 1; i < arguments.length; i++) {\n            args[i - 1] = arguments[i];\n        }\n    }\n    queue.push(new Item(fun, args));\n    if (queue.length === 1 && !draining) {\n        runTimeout(drainQueue);\n    }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n    this.fun = fun;\n    this.array = array;\n}\nItem.prototype.run = function () {\n    this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n    throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n    throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n", "'use strict';\n\nvar functionsHaveConfigurableNames = require('functions-have-names').functionsHaveConfigurableNames();\n\nvar $Object = Object;\nvar $TypeError = TypeError;\n\nmodule.exports = function flags() {\n\tif (this != null && this !== $Object(this)) {\n\t\tthrow new $TypeError('RegExp.prototype.flags getter called on non-object');\n\t}\n\tvar result = '';\n\tif (this.hasIndices) {\n\t\tresult += 'd';\n\t}\n\tif (this.global) {\n\t\tresult += 'g';\n\t}\n\tif (this.ignoreCase) {\n\t\tresult += 'i';\n\t}\n\tif (this.multiline) {\n\t\tresult += 'm';\n\t}\n\tif (this.dotAll) {\n\t\tresult += 's';\n\t}\n\tif (this.unicode) {\n\t\tresult += 'u';\n\t}\n\tif (this.sticky) {\n\t\tresult += 'y';\n\t}\n\treturn result;\n};\n\nif (functionsHaveConfigurableNames && Object.defineProperty) {\n\tObject.defineProperty(module.exports, 'name', { value: 'get flags' });\n}\n", "'use strict';\n\nvar define = require('define-properties');\nvar callBind = require('call-bind');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar flagsBound = callBind(getPolyfill());\n\ndefine(flagsBound, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = flagsBound;\n", "'use strict';\n\nvar implementation = require('./implementation');\n\nvar supportsDescriptors = require('define-properties').supportsDescriptors;\nvar $gOPD = Object.getOwnPropertyDescriptor;\n\nmodule.exports = function getPolyfill() {\n\tif (supportsDescriptors && (/a/mig).flags === 'gim') {\n\t\tvar descriptor = $gOPD(RegExp.prototype, 'flags');\n\t\tif (\n\t\t\tdescriptor\n\t\t\t&& typeof descriptor.get === 'function'\n\t\t\t&& typeof RegExp.prototype.dotAll === 'boolean'\n\t\t\t&& typeof RegExp.prototype.hasIndices === 'boolean'\n\t\t) {\n\t\t\t/* eslint getter-return: 0 */\n\t\t\tvar calls = '';\n\t\t\tvar o = {};\n\t\t\tObject.defineProperty(o, 'hasIndices', {\n\t\t\t\tget: function () {\n\t\t\t\t\tcalls += 'd';\n\t\t\t\t}\n\t\t\t});\n\t\t\tObject.defineProperty(o, 'sticky', {\n\t\t\t\tget: function () {\n\t\t\t\t\tcalls += 'y';\n\t\t\t\t}\n\t\t\t});\n\t\t\tif (calls === 'dy') {\n\t\t\t\treturn descriptor.get;\n\t\t\t}\n\t\t}\n\t}\n\treturn implementation;\n};\n", "'use strict';\n\nvar supportsDescriptors = require('define-properties').supportsDescriptors;\nvar getPolyfill = require('./polyfill');\nvar gOPD = Object.getOwnPropertyDescriptor;\nvar defineProperty = Object.defineProperty;\nvar TypeErr = TypeError;\nvar getProto = Object.getPrototypeOf;\nvar regex = /a/;\n\nmodule.exports = function shimFlags() {\n\tif (!supportsDescriptors || !getProto) {\n\t\tthrow new TypeErr('RegExp.prototype.flags requires a true ES5 environment that supports property descriptors');\n\t}\n\tvar polyfill = getPolyfill();\n\tvar proto = getProto(regex);\n\tvar descriptor = gOPD(proto, 'flags');\n\tif (!descriptor || descriptor.get !== polyfill) {\n\t\tdefineProperty(proto, 'flags', {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tget: polyfill\n\t\t});\n\t}\n\treturn polyfill;\n};\n", ";(function (sax) { // wrapper for non-node envs\n  sax.parser = function (strict, opt) { return new SAXParser(strict, opt) }\n  sax.SAXParser = SAXParser\n  sax.SAXStream = SAXStream\n  sax.createStream = createStream\n\n  // When we pass the MAX_BUFFER_LENGTH position, start checking for buffer overruns.\n  // When we check, schedule the next check for MAX_BUFFER_LENGTH - (max(buffer lengths)),\n  // since that's the earliest that a buffer overrun could occur.  This way, checks are\n  // as rare as required, but as often as necessary to ensure never crossing this bound.\n  // Furthermore, buffers are only tested at most once per write(), so passing a very\n  // large string into write() might have undesirable effects, but this is manageable by\n  // the caller, so it is assumed to be safe.  Thus, a call to write() may, in the extreme\n  // edge case, result in creating at most one complete copy of the string passed in.\n  // Set to Infinity to have unlimited buffers.\n  sax.MAX_BUFFER_LENGTH = 64 * 1024\n\n  var buffers = [\n    'comment', 'sgmlDecl', 'textNode', 'tagName', 'doctype',\n    'procInstName', 'procInstBody', 'entity', 'attribName',\n    'attribValue', 'cdata', 'script'\n  ]\n\n  sax.EVENTS = [\n    'text',\n    'processinginstruction',\n    'sgmldeclaration',\n    'doctype',\n    'comment',\n    'opentagstart',\n    'attribute',\n    'opentag',\n    'closetag',\n    'opencdata',\n    'cdata',\n    'closecdata',\n    'error',\n    'end',\n    'ready',\n    'script',\n    'opennamespace',\n    'closenamespace'\n  ]\n\n  function SAXParser (strict, opt) {\n    if (!(this instanceof SAXParser)) {\n      return new SAXParser(strict, opt)\n    }\n\n    var parser = this\n    clearBuffers(parser)\n    parser.q = parser.c = ''\n    parser.bufferCheckPosition = sax.MAX_BUFFER_LENGTH\n    parser.opt = opt || {}\n    parser.opt.lowercase = parser.opt.lowercase || parser.opt.lowercasetags\n    parser.looseCase = parser.opt.lowercase ? 'toLowerCase' : 'toUpperCase'\n    parser.tags = []\n    parser.closed = parser.closedRoot = parser.sawRoot = false\n    parser.tag = parser.error = null\n    parser.strict = !!strict\n    parser.noscript = !!(strict || parser.opt.noscript)\n    parser.state = S.BEGIN\n    parser.strictEntities = parser.opt.strictEntities\n    parser.ENTITIES = parser.strictEntities ? Object.create(sax.XML_ENTITIES) : Object.create(sax.ENTITIES)\n    parser.attribList = []\n\n    // namespaces form a prototype chain.\n    // it always points at the current tag,\n    // which protos to its parent tag.\n    if (parser.opt.xmlns) {\n      parser.ns = Object.create(rootNS)\n    }\n\n    // mostly just for error reporting\n    parser.trackPosition = parser.opt.position !== false\n    if (parser.trackPosition) {\n      parser.position = parser.line = parser.column = 0\n    }\n    emit(parser, 'onready')\n  }\n\n  if (!Object.create) {\n    Object.create = function (o) {\n      function F () {}\n      F.prototype = o\n      var newf = new F()\n      return newf\n    }\n  }\n\n  if (!Object.keys) {\n    Object.keys = function (o) {\n      var a = []\n      for (var i in o) if (o.hasOwnProperty(i)) a.push(i)\n      return a\n    }\n  }\n\n  function checkBufferLength (parser) {\n    var maxAllowed = Math.max(sax.MAX_BUFFER_LENGTH, 10)\n    var maxActual = 0\n    for (var i = 0, l = buffers.length; i < l; i++) {\n      var len = parser[buffers[i]].length\n      if (len > maxAllowed) {\n        // Text/cdata nodes can get big, and since they're buffered,\n        // we can get here under normal conditions.\n        // Avoid issues by emitting the text node now,\n        // so at least it won't get any bigger.\n        switch (buffers[i]) {\n          case 'textNode':\n            closeText(parser)\n            break\n\n          case 'cdata':\n            emitNode(parser, 'oncdata', parser.cdata)\n            parser.cdata = ''\n            break\n\n          case 'script':\n            emitNode(parser, 'onscript', parser.script)\n            parser.script = ''\n            break\n\n          default:\n            error(parser, 'Max buffer length exceeded: ' + buffers[i])\n        }\n      }\n      maxActual = Math.max(maxActual, len)\n    }\n    // schedule the next check for the earliest possible buffer overrun.\n    var m = sax.MAX_BUFFER_LENGTH - maxActual\n    parser.bufferCheckPosition = m + parser.position\n  }\n\n  function clearBuffers (parser) {\n    for (var i = 0, l = buffers.length; i < l; i++) {\n      parser[buffers[i]] = ''\n    }\n  }\n\n  function flushBuffers (parser) {\n    closeText(parser)\n    if (parser.cdata !== '') {\n      emitNode(parser, 'oncdata', parser.cdata)\n      parser.cdata = ''\n    }\n    if (parser.script !== '') {\n      emitNode(parser, 'onscript', parser.script)\n      parser.script = ''\n    }\n  }\n\n  SAXParser.prototype = {\n    end: function () { end(this) },\n    write: write,\n    resume: function () { this.error = null; return this },\n    close: function () { return this.write(null) },\n    flush: function () { flushBuffers(this) }\n  }\n\n  var Stream\n  try {\n    Stream = require('stream').Stream\n  } catch (ex) {\n    Stream = function () {}\n  }\n\n  var streamWraps = sax.EVENTS.filter(function (ev) {\n    return ev !== 'error' && ev !== 'end'\n  })\n\n  function createStream (strict, opt) {\n    return new SAXStream(strict, opt)\n  }\n\n  function SAXStream (strict, opt) {\n    if (!(this instanceof SAXStream)) {\n      return new SAXStream(strict, opt)\n    }\n\n    Stream.apply(this)\n\n    this._parser = new SAXParser(strict, opt)\n    this.writable = true\n    this.readable = true\n\n    var me = this\n\n    this._parser.onend = function () {\n      me.emit('end')\n    }\n\n    this._parser.onerror = function (er) {\n      me.emit('error', er)\n\n      // if didn't throw, then means error was handled.\n      // go ahead and clear error, so we can write again.\n      me._parser.error = null\n    }\n\n    this._decoder = null\n\n    streamWraps.forEach(function (ev) {\n      Object.defineProperty(me, 'on' + ev, {\n        get: function () {\n          return me._parser['on' + ev]\n        },\n        set: function (h) {\n          if (!h) {\n            me.removeAllListeners(ev)\n            me._parser['on' + ev] = h\n            return h\n          }\n          me.on(ev, h)\n        },\n        enumerable: true,\n        configurable: false\n      })\n    })\n  }\n\n  SAXStream.prototype = Object.create(Stream.prototype, {\n    constructor: {\n      value: SAXStream\n    }\n  })\n\n  SAXStream.prototype.write = function (data) {\n    if (typeof Buffer === 'function' &&\n      typeof Buffer.isBuffer === 'function' &&\n      Buffer.isBuffer(data)) {\n      if (!this._decoder) {\n        var SD = require('string_decoder').StringDecoder\n        this._decoder = new SD('utf8')\n      }\n      data = this._decoder.write(data)\n    }\n\n    this._parser.write(data.toString())\n    this.emit('data', data)\n    return true\n  }\n\n  SAXStream.prototype.end = function (chunk) {\n    if (chunk && chunk.length) {\n      this.write(chunk)\n    }\n    this._parser.end()\n    return true\n  }\n\n  SAXStream.prototype.on = function (ev, handler) {\n    var me = this\n    if (!me._parser['on' + ev] && streamWraps.indexOf(ev) !== -1) {\n      me._parser['on' + ev] = function () {\n        var args = arguments.length === 1 ? [arguments[0]] : Array.apply(null, arguments)\n        args.splice(0, 0, ev)\n        me.emit.apply(me, args)\n      }\n    }\n\n    return Stream.prototype.on.call(me, ev, handler)\n  }\n\n  // this really needs to be replaced with character classes.\n  // XML allows all manner of ridiculous numbers and digits.\n  var CDATA = '[CDATA['\n  var DOCTYPE = 'DOCTYPE'\n  var XML_NAMESPACE = 'http://www.w3.org/XML/1998/namespace'\n  var XMLNS_NAMESPACE = 'http://www.w3.org/2000/xmlns/'\n  var rootNS = { xml: XML_NAMESPACE, xmlns: XMLNS_NAMESPACE }\n\n  // http://www.w3.org/TR/REC-xml/#NT-NameStartChar\n  // This implementation works on strings, a single character at a time\n  // as such, it cannot ever support astral-plane characters (10000-EFFFF)\n  // without a significant breaking change to either this  parser, or the\n  // JavaScript language.  Implementation of an emoji-capable xml parser\n  // is left as an exercise for the reader.\n  var nameStart = /[:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]/\n\n  var nameBody = /[:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\u00B7\\u0300-\\u036F\\u203F-\\u2040.\\d-]/\n\n  var entityStart = /[#:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]/\n  var entityBody = /[#:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\u00B7\\u0300-\\u036F\\u203F-\\u2040.\\d-]/\n\n  function isWhitespace (c) {\n    return c === ' ' || c === '\\n' || c === '\\r' || c === '\\t'\n  }\n\n  function isQuote (c) {\n    return c === '\"' || c === '\\''\n  }\n\n  function isAttribEnd (c) {\n    return c === '>' || isWhitespace(c)\n  }\n\n  function isMatch (regex, c) {\n    return regex.test(c)\n  }\n\n  function notMatch (regex, c) {\n    return !isMatch(regex, c)\n  }\n\n  var S = 0\n  sax.STATE = {\n    BEGIN: S++, // leading byte order mark or whitespace\n    BEGIN_WHITESPACE: S++, // leading whitespace\n    TEXT: S++, // general stuff\n    TEXT_ENTITY: S++, // &amp and such.\n    OPEN_WAKA: S++, // <\n    SGML_DECL: S++, // <!BLARG\n    SGML_DECL_QUOTED: S++, // <!BLARG foo \"bar\n    DOCTYPE: S++, // <!DOCTYPE\n    DOCTYPE_QUOTED: S++, // <!DOCTYPE \"//blah\n    DOCTYPE_DTD: S++, // <!DOCTYPE \"//blah\" [ ...\n    DOCTYPE_DTD_QUOTED: S++, // <!DOCTYPE \"//blah\" [ \"foo\n    COMMENT_STARTING: S++, // <!-\n    COMMENT: S++, // <!--\n    COMMENT_ENDING: S++, // <!-- blah -\n    COMMENT_ENDED: S++, // <!-- blah --\n    CDATA: S++, // <![CDATA[ something\n    CDATA_ENDING: S++, // ]\n    CDATA_ENDING_2: S++, // ]]\n    PROC_INST: S++, // <?hi\n    PROC_INST_BODY: S++, // <?hi there\n    PROC_INST_ENDING: S++, // <?hi \"there\" ?\n    OPEN_TAG: S++, // <strong\n    OPEN_TAG_SLASH: S++, // <strong /\n    ATTRIB: S++, // <a\n    ATTRIB_NAME: S++, // <a foo\n    ATTRIB_NAME_SAW_WHITE: S++, // <a foo _\n    ATTRIB_VALUE: S++, // <a foo=\n    ATTRIB_VALUE_QUOTED: S++, // <a foo=\"bar\n    ATTRIB_VALUE_CLOSED: S++, // <a foo=\"bar\"\n    ATTRIB_VALUE_UNQUOTED: S++, // <a foo=bar\n    ATTRIB_VALUE_ENTITY_Q: S++, // <foo bar=\"&quot;\"\n    ATTRIB_VALUE_ENTITY_U: S++, // <foo bar=&quot\n    CLOSE_TAG: S++, // </a\n    CLOSE_TAG_SAW_WHITE: S++, // </a   >\n    SCRIPT: S++, // <script> ...\n    SCRIPT_ENDING: S++ // <script> ... <\n  }\n\n  sax.XML_ENTITIES = {\n    'amp': '&',\n    'gt': '>',\n    'lt': '<',\n    'quot': '\"',\n    'apos': \"'\"\n  }\n\n  sax.ENTITIES = {\n    'amp': '&',\n    'gt': '>',\n    'lt': '<',\n    'quot': '\"',\n    'apos': \"'\",\n    'AElig': 198,\n    'Aacute': 193,\n    'Acirc': 194,\n    'Agrave': 192,\n    'Aring': 197,\n    'Atilde': 195,\n    'Auml': 196,\n    'Ccedil': 199,\n    'ETH': 208,\n    'Eacute': 201,\n    'Ecirc': 202,\n    'Egrave': 200,\n    'Euml': 203,\n    'Iacute': 205,\n    'Icirc': 206,\n    'Igrave': 204,\n    'Iuml': 207,\n    'Ntilde': 209,\n    'Oacute': 211,\n    'Ocirc': 212,\n    'Ograve': 210,\n    'Oslash': 216,\n    'Otilde': 213,\n    'Ouml': 214,\n    'THORN': 222,\n    'Uacute': 218,\n    'Ucirc': 219,\n    'Ugrave': 217,\n    'Uuml': 220,\n    'Yacute': 221,\n    'aacute': 225,\n    'acirc': 226,\n    'aelig': 230,\n    'agrave': 224,\n    'aring': 229,\n    'atilde': 227,\n    'auml': 228,\n    'ccedil': 231,\n    'eacute': 233,\n    'ecirc': 234,\n    'egrave': 232,\n    'eth': 240,\n    'euml': 235,\n    'iacute': 237,\n    'icirc': 238,\n    'igrave': 236,\n    'iuml': 239,\n    'ntilde': 241,\n    'oacute': 243,\n    'ocirc': 244,\n    'ograve': 242,\n    'oslash': 248,\n    'otilde': 245,\n    'ouml': 246,\n    'szlig': 223,\n    'thorn': 254,\n    'uacute': 250,\n    'ucirc': 251,\n    'ugrave': 249,\n    'uuml': 252,\n    'yacute': 253,\n    'yuml': 255,\n    'copy': 169,\n    'reg': 174,\n    'nbsp': 160,\n    'iexcl': 161,\n    'cent': 162,\n    'pound': 163,\n    'curren': 164,\n    'yen': 165,\n    'brvbar': 166,\n    'sect': 167,\n    'uml': 168,\n    'ordf': 170,\n    'laquo': 171,\n    'not': 172,\n    'shy': 173,\n    'macr': 175,\n    'deg': 176,\n    'plusmn': 177,\n    'sup1': 185,\n    'sup2': 178,\n    'sup3': 179,\n    'acute': 180,\n    'micro': 181,\n    'para': 182,\n    'middot': 183,\n    'cedil': 184,\n    'ordm': 186,\n    'raquo': 187,\n    'frac14': 188,\n    'frac12': 189,\n    'frac34': 190,\n    'iquest': 191,\n    'times': 215,\n    'divide': 247,\n    'OElig': 338,\n    'oelig': 339,\n    'Scaron': 352,\n    'scaron': 353,\n    'Yuml': 376,\n    'fnof': 402,\n    'circ': 710,\n    'tilde': 732,\n    'Alpha': 913,\n    'Beta': 914,\n    'Gamma': 915,\n    'Delta': 916,\n    'Epsilon': 917,\n    'Zeta': 918,\n    'Eta': 919,\n    'Theta': 920,\n    'Iota': 921,\n    'Kappa': 922,\n    'Lambda': 923,\n    'Mu': 924,\n    'Nu': 925,\n    'Xi': 926,\n    'Omicron': 927,\n    'Pi': 928,\n    'Rho': 929,\n    'Sigma': 931,\n    'Tau': 932,\n    'Upsilon': 933,\n    'Phi': 934,\n    'Chi': 935,\n    'Psi': 936,\n    'Omega': 937,\n    'alpha': 945,\n    'beta': 946,\n    'gamma': 947,\n    'delta': 948,\n    'epsilon': 949,\n    'zeta': 950,\n    'eta': 951,\n    'theta': 952,\n    'iota': 953,\n    'kappa': 954,\n    'lambda': 955,\n    'mu': 956,\n    'nu': 957,\n    'xi': 958,\n    'omicron': 959,\n    'pi': 960,\n    'rho': 961,\n    'sigmaf': 962,\n    'sigma': 963,\n    'tau': 964,\n    'upsilon': 965,\n    'phi': 966,\n    'chi': 967,\n    'psi': 968,\n    'omega': 969,\n    'thetasym': 977,\n    'upsih': 978,\n    'piv': 982,\n    'ensp': 8194,\n    'emsp': 8195,\n    'thinsp': 8201,\n    'zwnj': 8204,\n    'zwj': 8205,\n    'lrm': 8206,\n    'rlm': 8207,\n    'ndash': 8211,\n    'mdash': 8212,\n    'lsquo': 8216,\n    'rsquo': 8217,\n    'sbquo': 8218,\n    'ldquo': 8220,\n    'rdquo': 8221,\n    'bdquo': 8222,\n    'dagger': 8224,\n    'Dagger': 8225,\n    'bull': 8226,\n    'hellip': 8230,\n    'permil': 8240,\n    'prime': 8242,\n    'Prime': 8243,\n    'lsaquo': 8249,\n    'rsaquo': 8250,\n    'oline': 8254,\n    'frasl': 8260,\n    'euro': 8364,\n    'image': 8465,\n    'weierp': 8472,\n    'real': 8476,\n    'trade': 8482,\n    'alefsym': 8501,\n    'larr': 8592,\n    'uarr': 8593,\n    'rarr': 8594,\n    'darr': 8595,\n    'harr': 8596,\n    'crarr': 8629,\n    'lArr': 8656,\n    'uArr': 8657,\n    'rArr': 8658,\n    'dArr': 8659,\n    'hArr': 8660,\n    'forall': 8704,\n    'part': 8706,\n    'exist': 8707,\n    'empty': 8709,\n    'nabla': 8711,\n    'isin': 8712,\n    'notin': 8713,\n    'ni': 8715,\n    'prod': 8719,\n    'sum': 8721,\n    'minus': 8722,\n    'lowast': 8727,\n    'radic': 8730,\n    'prop': 8733,\n    'infin': 8734,\n    'ang': 8736,\n    'and': 8743,\n    'or': 8744,\n    'cap': 8745,\n    'cup': 8746,\n    'int': 8747,\n    'there4': 8756,\n    'sim': 8764,\n    'cong': 8773,\n    'asymp': 8776,\n    'ne': 8800,\n    'equiv': 8801,\n    'le': 8804,\n    'ge': 8805,\n    'sub': 8834,\n    'sup': 8835,\n    'nsub': 8836,\n    'sube': 8838,\n    'supe': 8839,\n    'oplus': 8853,\n    'otimes': 8855,\n    'perp': 8869,\n    'sdot': 8901,\n    'lceil': 8968,\n    'rceil': 8969,\n    'lfloor': 8970,\n    'rfloor': 8971,\n    'lang': 9001,\n    'rang': 9002,\n    'loz': 9674,\n    'spades': 9824,\n    'clubs': 9827,\n    'hearts': 9829,\n    'diams': 9830\n  }\n\n  Object.keys(sax.ENTITIES).forEach(function (key) {\n    var e = sax.ENTITIES[key]\n    var s = typeof e === 'number' ? String.fromCharCode(e) : e\n    sax.ENTITIES[key] = s\n  })\n\n  for (var s in sax.STATE) {\n    sax.STATE[sax.STATE[s]] = s\n  }\n\n  // shorthand\n  S = sax.STATE\n\n  function emit (parser, event, data) {\n    parser[event] && parser[event](data)\n  }\n\n  function emitNode (parser, nodeType, data) {\n    if (parser.textNode) closeText(parser)\n    emit(parser, nodeType, data)\n  }\n\n  function closeText (parser) {\n    parser.textNode = textopts(parser.opt, parser.textNode)\n    if (parser.textNode) emit(parser, 'ontext', parser.textNode)\n    parser.textNode = ''\n  }\n\n  function textopts (opt, text) {\n    if (opt.trim) text = text.trim()\n    if (opt.normalize) text = text.replace(/\\s+/g, ' ')\n    return text\n  }\n\n  function error (parser, er) {\n    closeText(parser)\n    if (parser.trackPosition) {\n      er += '\\nLine: ' + parser.line +\n        '\\nColumn: ' + parser.column +\n        '\\nChar: ' + parser.c\n    }\n    er = new Error(er)\n    parser.error = er\n    emit(parser, 'onerror', er)\n    return parser\n  }\n\n  function end (parser) {\n    if (parser.sawRoot && !parser.closedRoot) strictFail(parser, 'Unclosed root tag')\n    if ((parser.state !== S.BEGIN) &&\n      (parser.state !== S.BEGIN_WHITESPACE) &&\n      (parser.state !== S.TEXT)) {\n      error(parser, 'Unexpected end')\n    }\n    closeText(parser)\n    parser.c = ''\n    parser.closed = true\n    emit(parser, 'onend')\n    SAXParser.call(parser, parser.strict, parser.opt)\n    return parser\n  }\n\n  function strictFail (parser, message) {\n    if (typeof parser !== 'object' || !(parser instanceof SAXParser)) {\n      throw new Error('bad call to strictFail')\n    }\n    if (parser.strict) {\n      error(parser, message)\n    }\n  }\n\n  function newTag (parser) {\n    if (!parser.strict) parser.tagName = parser.tagName[parser.looseCase]()\n    var parent = parser.tags[parser.tags.length - 1] || parser\n    var tag = parser.tag = { name: parser.tagName, attributes: {} }\n\n    // will be overridden if tag contails an xmlns=\"foo\" or xmlns:foo=\"bar\"\n    if (parser.opt.xmlns) {\n      tag.ns = parent.ns\n    }\n    parser.attribList.length = 0\n    emitNode(parser, 'onopentagstart', tag)\n  }\n\n  function qname (name, attribute) {\n    var i = name.indexOf(':')\n    var qualName = i < 0 ? [ '', name ] : name.split(':')\n    var prefix = qualName[0]\n    var local = qualName[1]\n\n    // <x \"xmlns\"=\"http://foo\">\n    if (attribute && name === 'xmlns') {\n      prefix = 'xmlns'\n      local = ''\n    }\n\n    return { prefix: prefix, local: local }\n  }\n\n  function attrib (parser) {\n    if (!parser.strict) {\n      parser.attribName = parser.attribName[parser.looseCase]()\n    }\n\n    if (parser.attribList.indexOf(parser.attribName) !== -1 ||\n      parser.tag.attributes.hasOwnProperty(parser.attribName)) {\n      parser.attribName = parser.attribValue = ''\n      return\n    }\n\n    if (parser.opt.xmlns) {\n      var qn = qname(parser.attribName, true)\n      var prefix = qn.prefix\n      var local = qn.local\n\n      if (prefix === 'xmlns') {\n        // namespace binding attribute. push the binding into scope\n        if (local === 'xml' && parser.attribValue !== XML_NAMESPACE) {\n          strictFail(parser,\n            'xml: prefix must be bound to ' + XML_NAMESPACE + '\\n' +\n            'Actual: ' + parser.attribValue)\n        } else if (local === 'xmlns' && parser.attribValue !== XMLNS_NAMESPACE) {\n          strictFail(parser,\n            'xmlns: prefix must be bound to ' + XMLNS_NAMESPACE + '\\n' +\n            'Actual: ' + parser.attribValue)\n        } else {\n          var tag = parser.tag\n          var parent = parser.tags[parser.tags.length - 1] || parser\n          if (tag.ns === parent.ns) {\n            tag.ns = Object.create(parent.ns)\n          }\n          tag.ns[local] = parser.attribValue\n        }\n      }\n\n      // defer onattribute events until all attributes have been seen\n      // so any new bindings can take effect. preserve attribute order\n      // so deferred events can be emitted in document order\n      parser.attribList.push([parser.attribName, parser.attribValue])\n    } else {\n      // in non-xmlns mode, we can emit the event right away\n      parser.tag.attributes[parser.attribName] = parser.attribValue\n      emitNode(parser, 'onattribute', {\n        name: parser.attribName,\n        value: parser.attribValue\n      })\n    }\n\n    parser.attribName = parser.attribValue = ''\n  }\n\n  function openTag (parser, selfClosing) {\n    if (parser.opt.xmlns) {\n      // emit namespace binding events\n      var tag = parser.tag\n\n      // add namespace info to tag\n      var qn = qname(parser.tagName)\n      tag.prefix = qn.prefix\n      tag.local = qn.local\n      tag.uri = tag.ns[qn.prefix] || ''\n\n      if (tag.prefix && !tag.uri) {\n        strictFail(parser, 'Unbound namespace prefix: ' +\n          JSON.stringify(parser.tagName))\n        tag.uri = qn.prefix\n      }\n\n      var parent = parser.tags[parser.tags.length - 1] || parser\n      if (tag.ns && parent.ns !== tag.ns) {\n        Object.keys(tag.ns).forEach(function (p) {\n          emitNode(parser, 'onopennamespace', {\n            prefix: p,\n            uri: tag.ns[p]\n          })\n        })\n      }\n\n      // handle deferred onattribute events\n      // Note: do not apply default ns to attributes:\n      //   http://www.w3.org/TR/REC-xml-names/#defaulting\n      for (var i = 0, l = parser.attribList.length; i < l; i++) {\n        var nv = parser.attribList[i]\n        var name = nv[0]\n        var value = nv[1]\n        var qualName = qname(name, true)\n        var prefix = qualName.prefix\n        var local = qualName.local\n        var uri = prefix === '' ? '' : (tag.ns[prefix] || '')\n        var a = {\n          name: name,\n          value: value,\n          prefix: prefix,\n          local: local,\n          uri: uri\n        }\n\n        // if there's any attributes with an undefined namespace,\n        // then fail on them now.\n        if (prefix && prefix !== 'xmlns' && !uri) {\n          strictFail(parser, 'Unbound namespace prefix: ' +\n            JSON.stringify(prefix))\n          a.uri = prefix\n        }\n        parser.tag.attributes[name] = a\n        emitNode(parser, 'onattribute', a)\n      }\n      parser.attribList.length = 0\n    }\n\n    parser.tag.isSelfClosing = !!selfClosing\n\n    // process the tag\n    parser.sawRoot = true\n    parser.tags.push(parser.tag)\n    emitNode(parser, 'onopentag', parser.tag)\n    if (!selfClosing) {\n      // special case for <script> in non-strict mode.\n      if (!parser.noscript && parser.tagName.toLowerCase() === 'script') {\n        parser.state = S.SCRIPT\n      } else {\n        parser.state = S.TEXT\n      }\n      parser.tag = null\n      parser.tagName = ''\n    }\n    parser.attribName = parser.attribValue = ''\n    parser.attribList.length = 0\n  }\n\n  function closeTag (parser) {\n    if (!parser.tagName) {\n      strictFail(parser, 'Weird empty close tag.')\n      parser.textNode += '</>'\n      parser.state = S.TEXT\n      return\n    }\n\n    if (parser.script) {\n      if (parser.tagName !== 'script') {\n        parser.script += '</' + parser.tagName + '>'\n        parser.tagName = ''\n        parser.state = S.SCRIPT\n        return\n      }\n      emitNode(parser, 'onscript', parser.script)\n      parser.script = ''\n    }\n\n    // first make sure that the closing tag actually exists.\n    // <a><b></c></b></a> will close everything, otherwise.\n    var t = parser.tags.length\n    var tagName = parser.tagName\n    if (!parser.strict) {\n      tagName = tagName[parser.looseCase]()\n    }\n    var closeTo = tagName\n    while (t--) {\n      var close = parser.tags[t]\n      if (close.name !== closeTo) {\n        // fail the first time in strict mode\n        strictFail(parser, 'Unexpected close tag')\n      } else {\n        break\n      }\n    }\n\n    // didn't find it.  we already failed for strict, so just abort.\n    if (t < 0) {\n      strictFail(parser, 'Unmatched closing tag: ' + parser.tagName)\n      parser.textNode += '</' + parser.tagName + '>'\n      parser.state = S.TEXT\n      return\n    }\n    parser.tagName = tagName\n    var s = parser.tags.length\n    while (s-- > t) {\n      var tag = parser.tag = parser.tags.pop()\n      parser.tagName = parser.tag.name\n      emitNode(parser, 'onclosetag', parser.tagName)\n\n      var x = {}\n      for (var i in tag.ns) {\n        x[i] = tag.ns[i]\n      }\n\n      var parent = parser.tags[parser.tags.length - 1] || parser\n      if (parser.opt.xmlns && tag.ns !== parent.ns) {\n        // remove namespace bindings introduced by tag\n        Object.keys(tag.ns).forEach(function (p) {\n          var n = tag.ns[p]\n          emitNode(parser, 'onclosenamespace', { prefix: p, uri: n })\n        })\n      }\n    }\n    if (t === 0) parser.closedRoot = true\n    parser.tagName = parser.attribValue = parser.attribName = ''\n    parser.attribList.length = 0\n    parser.state = S.TEXT\n  }\n\n  function parseEntity (parser) {\n    var entity = parser.entity\n    var entityLC = entity.toLowerCase()\n    var num\n    var numStr = ''\n\n    if (parser.ENTITIES[entity]) {\n      return parser.ENTITIES[entity]\n    }\n    if (parser.ENTITIES[entityLC]) {\n      return parser.ENTITIES[entityLC]\n    }\n    entity = entityLC\n    if (entity.charAt(0) === '#') {\n      if (entity.charAt(1) === 'x') {\n        entity = entity.slice(2)\n        num = parseInt(entity, 16)\n        numStr = num.toString(16)\n      } else {\n        entity = entity.slice(1)\n        num = parseInt(entity, 10)\n        numStr = num.toString(10)\n      }\n    }\n    entity = entity.replace(/^0+/, '')\n    if (isNaN(num) || numStr.toLowerCase() !== entity) {\n      strictFail(parser, 'Invalid character entity')\n      return '&' + parser.entity + ';'\n    }\n\n    return String.fromCodePoint(num)\n  }\n\n  function beginWhiteSpace (parser, c) {\n    if (c === '<') {\n      parser.state = S.OPEN_WAKA\n      parser.startTagPosition = parser.position\n    } else if (!isWhitespace(c)) {\n      // have to process this as a text node.\n      // weird, but happens.\n      strictFail(parser, 'Non-whitespace before first tag.')\n      parser.textNode = c\n      parser.state = S.TEXT\n    }\n  }\n\n  function charAt (chunk, i) {\n    var result = ''\n    if (i < chunk.length) {\n      result = chunk.charAt(i)\n    }\n    return result\n  }\n\n  function write (chunk) {\n    var parser = this\n    if (this.error) {\n      throw this.error\n    }\n    if (parser.closed) {\n      return error(parser,\n        'Cannot write after close. Assign an onready handler.')\n    }\n    if (chunk === null) {\n      return end(parser)\n    }\n    if (typeof chunk === 'object') {\n      chunk = chunk.toString()\n    }\n    var i = 0\n    var c = ''\n    while (true) {\n      c = charAt(chunk, i++)\n      parser.c = c\n\n      if (!c) {\n        break\n      }\n\n      if (parser.trackPosition) {\n        parser.position++\n        if (c === '\\n') {\n          parser.line++\n          parser.column = 0\n        } else {\n          parser.column++\n        }\n      }\n\n      switch (parser.state) {\n        case S.BEGIN:\n          parser.state = S.BEGIN_WHITESPACE\n          if (c === '\\uFEFF') {\n            continue\n          }\n          beginWhiteSpace(parser, c)\n          continue\n\n        case S.BEGIN_WHITESPACE:\n          beginWhiteSpace(parser, c)\n          continue\n\n        case S.TEXT:\n          if (parser.sawRoot && !parser.closedRoot) {\n            var starti = i - 1\n            while (c && c !== '<' && c !== '&') {\n              c = charAt(chunk, i++)\n              if (c && parser.trackPosition) {\n                parser.position++\n                if (c === '\\n') {\n                  parser.line++\n                  parser.column = 0\n                } else {\n                  parser.column++\n                }\n              }\n            }\n            parser.textNode += chunk.substring(starti, i - 1)\n          }\n          if (c === '<' && !(parser.sawRoot && parser.closedRoot && !parser.strict)) {\n            parser.state = S.OPEN_WAKA\n            parser.startTagPosition = parser.position\n          } else {\n            if (!isWhitespace(c) && (!parser.sawRoot || parser.closedRoot)) {\n              strictFail(parser, 'Text data outside of root node.')\n            }\n            if (c === '&') {\n              parser.state = S.TEXT_ENTITY\n            } else {\n              parser.textNode += c\n            }\n          }\n          continue\n\n        case S.SCRIPT:\n          // only non-strict\n          if (c === '<') {\n            parser.state = S.SCRIPT_ENDING\n          } else {\n            parser.script += c\n          }\n          continue\n\n        case S.SCRIPT_ENDING:\n          if (c === '/') {\n            parser.state = S.CLOSE_TAG\n          } else {\n            parser.script += '<' + c\n            parser.state = S.SCRIPT\n          }\n          continue\n\n        case S.OPEN_WAKA:\n          // either a /, ?, !, or text is coming next.\n          if (c === '!') {\n            parser.state = S.SGML_DECL\n            parser.sgmlDecl = ''\n          } else if (isWhitespace(c)) {\n            // wait for it...\n          } else if (isMatch(nameStart, c)) {\n            parser.state = S.OPEN_TAG\n            parser.tagName = c\n          } else if (c === '/') {\n            parser.state = S.CLOSE_TAG\n            parser.tagName = ''\n          } else if (c === '?') {\n            parser.state = S.PROC_INST\n            parser.procInstName = parser.procInstBody = ''\n          } else {\n            strictFail(parser, 'Unencoded <')\n            // if there was some whitespace, then add that in.\n            if (parser.startTagPosition + 1 < parser.position) {\n              var pad = parser.position - parser.startTagPosition\n              c = new Array(pad).join(' ') + c\n            }\n            parser.textNode += '<' + c\n            parser.state = S.TEXT\n          }\n          continue\n\n        case S.SGML_DECL:\n          if ((parser.sgmlDecl + c).toUpperCase() === CDATA) {\n            emitNode(parser, 'onopencdata')\n            parser.state = S.CDATA\n            parser.sgmlDecl = ''\n            parser.cdata = ''\n          } else if (parser.sgmlDecl + c === '--') {\n            parser.state = S.COMMENT\n            parser.comment = ''\n            parser.sgmlDecl = ''\n          } else if ((parser.sgmlDecl + c).toUpperCase() === DOCTYPE) {\n            parser.state = S.DOCTYPE\n            if (parser.doctype || parser.sawRoot) {\n              strictFail(parser,\n                'Inappropriately located doctype declaration')\n            }\n            parser.doctype = ''\n            parser.sgmlDecl = ''\n          } else if (c === '>') {\n            emitNode(parser, 'onsgmldeclaration', parser.sgmlDecl)\n            parser.sgmlDecl = ''\n            parser.state = S.TEXT\n          } else if (isQuote(c)) {\n            parser.state = S.SGML_DECL_QUOTED\n            parser.sgmlDecl += c\n          } else {\n            parser.sgmlDecl += c\n          }\n          continue\n\n        case S.SGML_DECL_QUOTED:\n          if (c === parser.q) {\n            parser.state = S.SGML_DECL\n            parser.q = ''\n          }\n          parser.sgmlDecl += c\n          continue\n\n        case S.DOCTYPE:\n          if (c === '>') {\n            parser.state = S.TEXT\n            emitNode(parser, 'ondoctype', parser.doctype)\n            parser.doctype = true // just remember that we saw it.\n          } else {\n            parser.doctype += c\n            if (c === '[') {\n              parser.state = S.DOCTYPE_DTD\n            } else if (isQuote(c)) {\n              parser.state = S.DOCTYPE_QUOTED\n              parser.q = c\n            }\n          }\n          continue\n\n        case S.DOCTYPE_QUOTED:\n          parser.doctype += c\n          if (c === parser.q) {\n            parser.q = ''\n            parser.state = S.DOCTYPE\n          }\n          continue\n\n        case S.DOCTYPE_DTD:\n          parser.doctype += c\n          if (c === ']') {\n            parser.state = S.DOCTYPE\n          } else if (isQuote(c)) {\n            parser.state = S.DOCTYPE_DTD_QUOTED\n            parser.q = c\n          }\n          continue\n\n        case S.DOCTYPE_DTD_QUOTED:\n          parser.doctype += c\n          if (c === parser.q) {\n            parser.state = S.DOCTYPE_DTD\n            parser.q = ''\n          }\n          continue\n\n        case S.COMMENT:\n          if (c === '-') {\n            parser.state = S.COMMENT_ENDING\n          } else {\n            parser.comment += c\n          }\n          continue\n\n        case S.COMMENT_ENDING:\n          if (c === '-') {\n            parser.state = S.COMMENT_ENDED\n            parser.comment = textopts(parser.opt, parser.comment)\n            if (parser.comment) {\n              emitNode(parser, 'oncomment', parser.comment)\n            }\n            parser.comment = ''\n          } else {\n            parser.comment += '-' + c\n            parser.state = S.COMMENT\n          }\n          continue\n\n        case S.COMMENT_ENDED:\n          if (c !== '>') {\n            strictFail(parser, 'Malformed comment')\n            // allow <!-- blah -- bloo --> in non-strict mode,\n            // which is a comment of \" blah -- bloo \"\n            parser.comment += '--' + c\n            parser.state = S.COMMENT\n          } else {\n            parser.state = S.TEXT\n          }\n          continue\n\n        case S.CDATA:\n          if (c === ']') {\n            parser.state = S.CDATA_ENDING\n          } else {\n            parser.cdata += c\n          }\n          continue\n\n        case S.CDATA_ENDING:\n          if (c === ']') {\n            parser.state = S.CDATA_ENDING_2\n          } else {\n            parser.cdata += ']' + c\n            parser.state = S.CDATA\n          }\n          continue\n\n        case S.CDATA_ENDING_2:\n          if (c === '>') {\n            if (parser.cdata) {\n              emitNode(parser, 'oncdata', parser.cdata)\n            }\n            emitNode(parser, 'onclosecdata')\n            parser.cdata = ''\n            parser.state = S.TEXT\n          } else if (c === ']') {\n            parser.cdata += ']'\n          } else {\n            parser.cdata += ']]' + c\n            parser.state = S.CDATA\n          }\n          continue\n\n        case S.PROC_INST:\n          if (c === '?') {\n            parser.state = S.PROC_INST_ENDING\n          } else if (isWhitespace(c)) {\n            parser.state = S.PROC_INST_BODY\n          } else {\n            parser.procInstName += c\n          }\n          continue\n\n        case S.PROC_INST_BODY:\n          if (!parser.procInstBody && isWhitespace(c)) {\n            continue\n          } else if (c === '?') {\n            parser.state = S.PROC_INST_ENDING\n          } else {\n            parser.procInstBody += c\n          }\n          continue\n\n        case S.PROC_INST_ENDING:\n          if (c === '>') {\n            emitNode(parser, 'onprocessinginstruction', {\n              name: parser.procInstName,\n              body: parser.procInstBody\n            })\n            parser.procInstName = parser.procInstBody = ''\n            parser.state = S.TEXT\n          } else {\n            parser.procInstBody += '?' + c\n            parser.state = S.PROC_INST_BODY\n          }\n          continue\n\n        case S.OPEN_TAG:\n          if (isMatch(nameBody, c)) {\n            parser.tagName += c\n          } else {\n            newTag(parser)\n            if (c === '>') {\n              openTag(parser)\n            } else if (c === '/') {\n              parser.state = S.OPEN_TAG_SLASH\n            } else {\n              if (!isWhitespace(c)) {\n                strictFail(parser, 'Invalid character in tag name')\n              }\n              parser.state = S.ATTRIB\n            }\n          }\n          continue\n\n        case S.OPEN_TAG_SLASH:\n          if (c === '>') {\n            openTag(parser, true)\n            closeTag(parser)\n          } else {\n            strictFail(parser, 'Forward-slash in opening tag not followed by >')\n            parser.state = S.ATTRIB\n          }\n          continue\n\n        case S.ATTRIB:\n          // haven't read the attribute name yet.\n          if (isWhitespace(c)) {\n            continue\n          } else if (c === '>') {\n            openTag(parser)\n          } else if (c === '/') {\n            parser.state = S.OPEN_TAG_SLASH\n          } else if (isMatch(nameStart, c)) {\n            parser.attribName = c\n            parser.attribValue = ''\n            parser.state = S.ATTRIB_NAME\n          } else {\n            strictFail(parser, 'Invalid attribute name')\n          }\n          continue\n\n        case S.ATTRIB_NAME:\n          if (c === '=') {\n            parser.state = S.ATTRIB_VALUE\n          } else if (c === '>') {\n            strictFail(parser, 'Attribute without value')\n            parser.attribValue = parser.attribName\n            attrib(parser)\n            openTag(parser)\n          } else if (isWhitespace(c)) {\n            parser.state = S.ATTRIB_NAME_SAW_WHITE\n          } else if (isMatch(nameBody, c)) {\n            parser.attribName += c\n          } else {\n            strictFail(parser, 'Invalid attribute name')\n          }\n          continue\n\n        case S.ATTRIB_NAME_SAW_WHITE:\n          if (c === '=') {\n            parser.state = S.ATTRIB_VALUE\n          } else if (isWhitespace(c)) {\n            continue\n          } else {\n            strictFail(parser, 'Attribute without value')\n            parser.tag.attributes[parser.attribName] = ''\n            parser.attribValue = ''\n            emitNode(parser, 'onattribute', {\n              name: parser.attribName,\n              value: ''\n            })\n            parser.attribName = ''\n            if (c === '>') {\n              openTag(parser)\n            } else if (isMatch(nameStart, c)) {\n              parser.attribName = c\n              parser.state = S.ATTRIB_NAME\n            } else {\n              strictFail(parser, 'Invalid attribute name')\n              parser.state = S.ATTRIB\n            }\n          }\n          continue\n\n        case S.ATTRIB_VALUE:\n          if (isWhitespace(c)) {\n            continue\n          } else if (isQuote(c)) {\n            parser.q = c\n            parser.state = S.ATTRIB_VALUE_QUOTED\n          } else {\n            strictFail(parser, 'Unquoted attribute value')\n            parser.state = S.ATTRIB_VALUE_UNQUOTED\n            parser.attribValue = c\n          }\n          continue\n\n        case S.ATTRIB_VALUE_QUOTED:\n          if (c !== parser.q) {\n            if (c === '&') {\n              parser.state = S.ATTRIB_VALUE_ENTITY_Q\n            } else {\n              parser.attribValue += c\n            }\n            continue\n          }\n          attrib(parser)\n          parser.q = ''\n          parser.state = S.ATTRIB_VALUE_CLOSED\n          continue\n\n        case S.ATTRIB_VALUE_CLOSED:\n          if (isWhitespace(c)) {\n            parser.state = S.ATTRIB\n          } else if (c === '>') {\n            openTag(parser)\n          } else if (c === '/') {\n            parser.state = S.OPEN_TAG_SLASH\n          } else if (isMatch(nameStart, c)) {\n            strictFail(parser, 'No whitespace between attributes')\n            parser.attribName = c\n            parser.attribValue = ''\n            parser.state = S.ATTRIB_NAME\n          } else {\n            strictFail(parser, 'Invalid attribute name')\n          }\n          continue\n\n        case S.ATTRIB_VALUE_UNQUOTED:\n          if (!isAttribEnd(c)) {\n            if (c === '&') {\n              parser.state = S.ATTRIB_VALUE_ENTITY_U\n            } else {\n              parser.attribValue += c\n            }\n            continue\n          }\n          attrib(parser)\n          if (c === '>') {\n            openTag(parser)\n          } else {\n            parser.state = S.ATTRIB\n          }\n          continue\n\n        case S.CLOSE_TAG:\n          if (!parser.tagName) {\n            if (isWhitespace(c)) {\n              continue\n            } else if (notMatch(nameStart, c)) {\n              if (parser.script) {\n                parser.script += '</' + c\n                parser.state = S.SCRIPT\n              } else {\n                strictFail(parser, 'Invalid tagname in closing tag.')\n              }\n            } else {\n              parser.tagName = c\n            }\n          } else if (c === '>') {\n            closeTag(parser)\n          } else if (isMatch(nameBody, c)) {\n            parser.tagName += c\n          } else if (parser.script) {\n            parser.script += '</' + parser.tagName\n            parser.tagName = ''\n            parser.state = S.SCRIPT\n          } else {\n            if (!isWhitespace(c)) {\n              strictFail(parser, 'Invalid tagname in closing tag')\n            }\n            parser.state = S.CLOSE_TAG_SAW_WHITE\n          }\n          continue\n\n        case S.CLOSE_TAG_SAW_WHITE:\n          if (isWhitespace(c)) {\n            continue\n          }\n          if (c === '>') {\n            closeTag(parser)\n          } else {\n            strictFail(parser, 'Invalid characters in closing tag')\n          }\n          continue\n\n        case S.TEXT_ENTITY:\n        case S.ATTRIB_VALUE_ENTITY_Q:\n        case S.ATTRIB_VALUE_ENTITY_U:\n          var returnState\n          var buffer\n          switch (parser.state) {\n            case S.TEXT_ENTITY:\n              returnState = S.TEXT\n              buffer = 'textNode'\n              break\n\n            case S.ATTRIB_VALUE_ENTITY_Q:\n              returnState = S.ATTRIB_VALUE_QUOTED\n              buffer = 'attribValue'\n              break\n\n            case S.ATTRIB_VALUE_ENTITY_U:\n              returnState = S.ATTRIB_VALUE_UNQUOTED\n              buffer = 'attribValue'\n              break\n          }\n\n          if (c === ';') {\n            parser[buffer] += parseEntity(parser)\n            parser.entity = ''\n            parser.state = returnState\n          } else if (isMatch(parser.entity.length ? entityBody : entityStart, c)) {\n            parser.entity += c\n          } else {\n            strictFail(parser, 'Invalid character in entity name')\n            parser[buffer] += '&' + parser.entity + c\n            parser.entity = ''\n            parser.state = returnState\n          }\n\n          continue\n\n        default:\n          throw new Error(parser, 'Unknown state: ' + parser.state)\n      }\n    } // while\n\n    if (parser.position >= parser.bufferCheckPosition) {\n      checkBufferLength(parser)\n    }\n    return parser\n  }\n\n  /*! http://mths.be/fromcodepoint v0.1.0 by @mathias */\n  /* istanbul ignore next */\n  if (!String.fromCodePoint) {\n    (function () {\n      var stringFromCharCode = String.fromCharCode\n      var floor = Math.floor\n      var fromCodePoint = function () {\n        var MAX_SIZE = 0x4000\n        var codeUnits = []\n        var highSurrogate\n        var lowSurrogate\n        var index = -1\n        var length = arguments.length\n        if (!length) {\n          return ''\n        }\n        var result = ''\n        while (++index < length) {\n          var codePoint = Number(arguments[index])\n          if (\n            !isFinite(codePoint) || // `NaN`, `+Infinity`, or `-Infinity`\n            codePoint < 0 || // not a valid Unicode code point\n            codePoint > 0x10FFFF || // not a valid Unicode code point\n            floor(codePoint) !== codePoint // not an integer\n          ) {\n            throw RangeError('Invalid code point: ' + codePoint)\n          }\n          if (codePoint <= 0xFFFF) { // BMP code point\n            codeUnits.push(codePoint)\n          } else { // Astral code point; split in surrogate halves\n            // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n            codePoint -= 0x10000\n            highSurrogate = (codePoint >> 10) + 0xD800\n            lowSurrogate = (codePoint % 0x400) + 0xDC00\n            codeUnits.push(highSurrogate, lowSurrogate)\n          }\n          if (index + 1 === length || codeUnits.length > MAX_SIZE) {\n            result += stringFromCharCode.apply(null, codeUnits)\n            codeUnits.length = 0\n          }\n        }\n        return result\n      }\n      /* istanbul ignore next */\n      if (Object.defineProperty) {\n        Object.defineProperty(String, 'fromCodePoint', {\n          value: fromCodePoint,\n          configurable: true,\n          writable: true\n        })\n      } else {\n        String.fromCodePoint = fromCodePoint\n      }\n    }())\n  }\n})(typeof exports === 'undefined' ? this.sax = {} : exports)\n", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nmodule.exports = Stream;\n\nvar EE = require('events').EventEmitter;\nvar inherits = require('inherits');\n\ninherits(Stream, EE);\nStream.Readable = require('readable-stream/lib/_stream_readable.js');\nStream.Writable = require('readable-stream/lib/_stream_writable.js');\nStream.Duplex = require('readable-stream/lib/_stream_duplex.js');\nStream.Transform = require('readable-stream/lib/_stream_transform.js');\nStream.PassThrough = require('readable-stream/lib/_stream_passthrough.js');\nStream.finished = require('readable-stream/lib/internal/streams/end-of-stream.js')\nStream.pipeline = require('readable-stream/lib/internal/streams/pipeline.js')\n\n// Backwards-compat with node 0.4.x\nStream.Stream = Stream;\n\n\n\n// old-style streams.  Note that the pipe method (the only relevant\n// part of this class) is overridden in the Readable class.\n\nfunction Stream() {\n  EE.call(this);\n}\n\nStream.prototype.pipe = function(dest, options) {\n  var source = this;\n\n  function ondata(chunk) {\n    if (dest.writable) {\n      if (false === dest.write(chunk) && source.pause) {\n        source.pause();\n      }\n    }\n  }\n\n  source.on('data', ondata);\n\n  function ondrain() {\n    if (source.readable && source.resume) {\n      source.resume();\n    }\n  }\n\n  dest.on('drain', ondrain);\n\n  // If the 'end' option is not supplied, dest.end() will be called when\n  // source gets the 'end' or 'close' events.  Only dest.end() once.\n  if (!dest._isStdio && (!options || options.end !== false)) {\n    source.on('end', onend);\n    source.on('close', onclose);\n  }\n\n  var didOnEnd = false;\n  function onend() {\n    if (didOnEnd) return;\n    didOnEnd = true;\n\n    dest.end();\n  }\n\n\n  function onclose() {\n    if (didOnEnd) return;\n    didOnEnd = true;\n\n    if (typeof dest.destroy === 'function') dest.destroy();\n  }\n\n  // don't leave dangling pipes when there are errors.\n  function onerror(er) {\n    cleanup();\n    if (EE.listenerCount(this, 'error') === 0) {\n      throw er; // Unhandled stream error in pipe.\n    }\n  }\n\n  source.on('error', onerror);\n  dest.on('error', onerror);\n\n  // remove all the event listeners that were added.\n  function cleanup() {\n    source.removeListener('data', ondata);\n    dest.removeListener('drain', ondrain);\n\n    source.removeListener('end', onend);\n    source.removeListener('close', onclose);\n\n    source.removeListener('error', onerror);\n    dest.removeListener('error', onerror);\n\n    source.removeListener('end', cleanup);\n    source.removeListener('close', cleanup);\n\n    dest.removeListener('close', cleanup);\n  }\n\n  source.on('end', cleanup);\n  source.on('close', cleanup);\n\n  dest.on('close', cleanup);\n\n  dest.emit('pipe', source);\n\n  // Allow for unix-like usage: A.pipe(B).pipe(C)\n  return dest;\n};\n", "'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n  if (!Base) {\n    Base = Error;\n  }\n\n  function getMessage(arg1, arg2, arg3) {\n    if (typeof message === 'string') {\n      return message;\n    } else {\n      return message(arg1, arg2, arg3);\n    }\n  }\n\n  var NodeError =\n  /*#__PURE__*/\n  function (_Base) {\n    _inheritsLoose(NodeError, _Base);\n\n    function NodeError(arg1, arg2, arg3) {\n      return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n    }\n\n    return NodeError;\n  }(Base);\n\n  NodeError.prototype.name = Base.name;\n  NodeError.prototype.code = code;\n  codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n  if (Array.isArray(expected)) {\n    var len = expected.length;\n    expected = expected.map(function (i) {\n      return String(i);\n    });\n\n    if (len > 2) {\n      return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n    } else if (len === 2) {\n      return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n    } else {\n      return \"of \".concat(thing, \" \").concat(expected[0]);\n    }\n  } else {\n    return \"of \".concat(thing, \" \").concat(String(expected));\n  }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n  return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n  if (this_len === undefined || this_len > str.length) {\n    this_len = str.length;\n  }\n\n  return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n  if (typeof start !== 'number') {\n    start = 0;\n  }\n\n  if (start + search.length > str.length) {\n    return false;\n  } else {\n    return str.indexOf(search, start) !== -1;\n  }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n  return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n  // determiner: 'must be' or 'must not be'\n  var determiner;\n\n  if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n    determiner = 'must not be';\n    expected = expected.replace(/^not /, '');\n  } else {\n    determiner = 'must be';\n  }\n\n  var msg;\n\n  if (endsWith(name, ' argument')) {\n    // For cases like 'first argument'\n    msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n  } else {\n    var type = includes(name, '.') ? 'property' : 'argument';\n    msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n  }\n\n  msg += \". Received type \".concat(typeof actual);\n  return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n  return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n  return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n  return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;\n", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n'use strict';\n/*<replacement>*/\n\nvar objectKeys = Object.keys || function (obj) {\n  var keys = [];\n\n  for (var key in obj) {\n    keys.push(key);\n  }\n\n  return keys;\n};\n/*</replacement>*/\n\n\nmodule.exports = Duplex;\n\nvar Readable = require('./_stream_readable');\n\nvar Writable = require('./_stream_writable');\n\nrequire('inherits')(Duplex, Readable);\n\n{\n  // Allow the keys array to be GC'ed.\n  var keys = objectKeys(Writable.prototype);\n\n  for (var v = 0; v < keys.length; v++) {\n    var method = keys[v];\n    if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n  }\n}\n\nfunction Duplex(options) {\n  if (!(this instanceof Duplex)) return new Duplex(options);\n  Readable.call(this, options);\n  Writable.call(this, options);\n  this.allowHalfOpen = true;\n\n  if (options) {\n    if (options.readable === false) this.readable = false;\n    if (options.writable === false) this.writable = false;\n\n    if (options.allowHalfOpen === false) {\n      this.allowHalfOpen = false;\n      this.once('end', onend);\n    }\n  }\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState.highWaterMark;\n  }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState && this._writableState.getBuffer();\n  }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState.length;\n  }\n}); // the no-half-open enforcer\n\nfunction onend() {\n  // If the writable side ended, then we're ok.\n  if (this._writableState.ended) return; // no more data can be written.\n  // But allow more writes to happen in this tick.\n\n  process.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n  self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    if (this._readableState === undefined || this._writableState === undefined) {\n      return false;\n    }\n\n    return this._readableState.destroyed && this._writableState.destroyed;\n  },\n  set: function set(value) {\n    // we ignore the value if the stream\n    // has not been initialized yet\n    if (this._readableState === undefined || this._writableState === undefined) {\n      return;\n    } // backward compatibility, the user is explicitly\n    // managing destroyed\n\n\n    this._readableState.destroyed = value;\n    this._writableState.destroyed = value;\n  }\n});", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\nrequire('inherits')(PassThrough, Transform);\n\nfunction PassThrough(options) {\n  if (!(this instanceof PassThrough)) return new PassThrough(options);\n  Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n  cb(null, chunk);\n};", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n'use strict';\n\nmodule.exports = Readable;\n/*<replacement>*/\n\nvar Duplex;\n/*</replacement>*/\n\nReadable.ReadableState = ReadableState;\n/*<replacement>*/\n\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n  return emitter.listeners(type).length;\n};\n/*</replacement>*/\n\n/*<replacement>*/\n\n\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n  return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n  return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n/*<replacement>*/\n\n\nvar debugUtil = require('util');\n\nvar debug;\n\nif (debugUtil && debugUtil.debuglog) {\n  debug = debugUtil.debuglog('stream');\n} else {\n  debug = function debug() {};\n}\n/*</replacement>*/\n\n\nvar BufferList = require('./internal/streams/buffer_list');\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n    getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n    ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n    ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n    ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n    ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT; // Lazy loaded to improve the startup performance.\n\n\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\n\nrequire('inherits')(Readable, Stream);\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n  // Sadly this is not cacheable as some libraries bundle their own\n  // event emitter implementation with them.\n  if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); // This is a hack to make sure that our error handler is attached before any\n  // userland ones.  NEVER DO THIS. This is here only because this code needs\n  // to continue to work with older versions of Node.js that do not include\n  // the prependListener() method. The goal is to eventually remove this hack.\n\n  if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream, isDuplex) {\n  Duplex = Duplex || require('./_stream_duplex');\n  options = options || {}; // Duplex streams are both readable and writable, but share\n  // the same options object.\n  // However, some cases require setting options to different\n  // values for the readable and the writable sides of the duplex stream.\n  // These options can be provided separately as readableXXX and writableXXX.\n\n  if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag. Used to make read(n) ignore n and to\n  // make all the buffer merging and length checks go away\n\n  this.objectMode = !!options.objectMode;\n  if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; // the point at which it stops calling _read() to fill the buffer\n  // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n\n  this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex); // A linked list is used to store data chunks instead of an array because the\n  // linked list can remove elements from the beginning faster than\n  // array.shift()\n\n  this.buffer = new BufferList();\n  this.length = 0;\n  this.pipes = null;\n  this.pipesCount = 0;\n  this.flowing = null;\n  this.ended = false;\n  this.endEmitted = false;\n  this.reading = false; // a flag to be able to tell if the event 'readable'/'data' is emitted\n  // immediately, or on a later tick.  We set this to true at first, because\n  // any actions that shouldn't happen until \"later\" should generally also\n  // not happen before the first read call.\n\n  this.sync = true; // whenever we return null, then we set a flag to say\n  // that we're awaiting a 'readable' event emission.\n\n  this.needReadable = false;\n  this.emittedReadable = false;\n  this.readableListening = false;\n  this.resumeScheduled = false;\n  this.paused = true; // Should close be emitted on destroy. Defaults to true.\n\n  this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'end' (and potentially 'finish')\n\n  this.autoDestroy = !!options.autoDestroy; // has it been destroyed\n\n  this.destroyed = false; // Crypto is kind of old and crusty.  Historically, its default string\n  // encoding is 'binary' so we have to make this configurable.\n  // Everything else in the universe uses 'utf8', though.\n\n  this.defaultEncoding = options.defaultEncoding || 'utf8'; // the number of writers that are awaiting a drain event in .pipe()s\n\n  this.awaitDrain = 0; // if true, a maybeReadMore has been scheduled\n\n  this.readingMore = false;\n  this.decoder = null;\n  this.encoding = null;\n\n  if (options.encoding) {\n    if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n    this.decoder = new StringDecoder(options.encoding);\n    this.encoding = options.encoding;\n  }\n}\n\nfunction Readable(options) {\n  Duplex = Duplex || require('./_stream_duplex');\n  if (!(this instanceof Readable)) return new Readable(options); // Checking for a Stream.Duplex instance is faster here instead of inside\n  // the ReadableState constructor, at least with V8 6.5\n\n  var isDuplex = this instanceof Duplex;\n  this._readableState = new ReadableState(options, this, isDuplex); // legacy\n\n  this.readable = true;\n\n  if (options) {\n    if (typeof options.read === 'function') this._read = options.read;\n    if (typeof options.destroy === 'function') this._destroy = options.destroy;\n  }\n\n  Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    if (this._readableState === undefined) {\n      return false;\n    }\n\n    return this._readableState.destroyed;\n  },\n  set: function set(value) {\n    // we ignore the value if the stream\n    // has not been initialized yet\n    if (!this._readableState) {\n      return;\n    } // backward compatibility, the user is explicitly\n    // managing destroyed\n\n\n    this._readableState.destroyed = value;\n  }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\n\nReadable.prototype._destroy = function (err, cb) {\n  cb(err);\n}; // Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\n\n\nReadable.prototype.push = function (chunk, encoding) {\n  var state = this._readableState;\n  var skipChunkCheck;\n\n  if (!state.objectMode) {\n    if (typeof chunk === 'string') {\n      encoding = encoding || state.defaultEncoding;\n\n      if (encoding !== state.encoding) {\n        chunk = Buffer.from(chunk, encoding);\n        encoding = '';\n      }\n\n      skipChunkCheck = true;\n    }\n  } else {\n    skipChunkCheck = true;\n  }\n\n  return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n}; // Unshift should *always* be something directly out of read()\n\n\nReadable.prototype.unshift = function (chunk) {\n  return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n  debug('readableAddChunk', chunk);\n  var state = stream._readableState;\n\n  if (chunk === null) {\n    state.reading = false;\n    onEofChunk(stream, state);\n  } else {\n    var er;\n    if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n\n    if (er) {\n      errorOrDestroy(stream, er);\n    } else if (state.objectMode || chunk && chunk.length > 0) {\n      if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n        chunk = _uint8ArrayToBuffer(chunk);\n      }\n\n      if (addToFront) {\n        if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n      } else if (state.ended) {\n        errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n      } else if (state.destroyed) {\n        return false;\n      } else {\n        state.reading = false;\n\n        if (state.decoder && !encoding) {\n          chunk = state.decoder.write(chunk);\n          if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n        } else {\n          addChunk(stream, state, chunk, false);\n        }\n      }\n    } else if (!addToFront) {\n      state.reading = false;\n      maybeReadMore(stream, state);\n    }\n  } // We can push more data if we are below the highWaterMark.\n  // Also, if we have no data yet, we can stand some more bytes.\n  // This is to work around cases where hwm=0, such as the repl.\n\n\n  return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n  if (state.flowing && state.length === 0 && !state.sync) {\n    state.awaitDrain = 0;\n    stream.emit('data', chunk);\n  } else {\n    // update the buffer info.\n    state.length += state.objectMode ? 1 : chunk.length;\n    if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n    if (state.needReadable) emitReadable(stream);\n  }\n\n  maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n  var er;\n\n  if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n    er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n  }\n\n  return er;\n}\n\nReadable.prototype.isPaused = function () {\n  return this._readableState.flowing === false;\n}; // backwards compatibility.\n\n\nReadable.prototype.setEncoding = function (enc) {\n  if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n  var decoder = new StringDecoder(enc);\n  this._readableState.decoder = decoder; // If setEncoding(null), decoder.encoding equals utf8\n\n  this._readableState.encoding = this._readableState.decoder.encoding; // Iterate over current buffer to convert already stored Buffers:\n\n  var p = this._readableState.buffer.head;\n  var content = '';\n\n  while (p !== null) {\n    content += decoder.write(p.data);\n    p = p.next;\n  }\n\n  this._readableState.buffer.clear();\n\n  if (content !== '') this._readableState.buffer.push(content);\n  this._readableState.length = content.length;\n  return this;\n}; // Don't raise the hwm > 1GB\n\n\nvar MAX_HWM = 0x40000000;\n\nfunction computeNewHighWaterMark(n) {\n  if (n >= MAX_HWM) {\n    // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n    n = MAX_HWM;\n  } else {\n    // Get the next highest power of 2 to prevent increasing hwm excessively in\n    // tiny amounts\n    n--;\n    n |= n >>> 1;\n    n |= n >>> 2;\n    n |= n >>> 4;\n    n |= n >>> 8;\n    n |= n >>> 16;\n    n++;\n  }\n\n  return n;\n} // This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\n\nfunction howMuchToRead(n, state) {\n  if (n <= 0 || state.length === 0 && state.ended) return 0;\n  if (state.objectMode) return 1;\n\n  if (n !== n) {\n    // Only flow one buffer at a time\n    if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n  } // If we're asking for more than the current hwm, then raise the hwm.\n\n\n  if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n  if (n <= state.length) return n; // Don't have enough\n\n  if (!state.ended) {\n    state.needReadable = true;\n    return 0;\n  }\n\n  return state.length;\n} // you can override either this method, or the async _read(n) below.\n\n\nReadable.prototype.read = function (n) {\n  debug('read', n);\n  n = parseInt(n, 10);\n  var state = this._readableState;\n  var nOrig = n;\n  if (n !== 0) state.emittedReadable = false; // if we're doing read(0) to trigger a readable event, but we\n  // already have a bunch of data in the buffer, then just trigger\n  // the 'readable' event and move on.\n\n  if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n    debug('read: emitReadable', state.length, state.ended);\n    if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n    return null;\n  }\n\n  n = howMuchToRead(n, state); // if we've ended, and we're now clear, then finish it up.\n\n  if (n === 0 && state.ended) {\n    if (state.length === 0) endReadable(this);\n    return null;\n  } // All the actual chunk generation logic needs to be\n  // *below* the call to _read.  The reason is that in certain\n  // synthetic stream cases, such as passthrough streams, _read\n  // may be a completely synchronous operation which may change\n  // the state of the read buffer, providing enough data when\n  // before there was *not* enough.\n  //\n  // So, the steps are:\n  // 1. Figure out what the state of things will be after we do\n  // a read from the buffer.\n  //\n  // 2. If that resulting state will trigger a _read, then call _read.\n  // Note that this may be asynchronous, or synchronous.  Yes, it is\n  // deeply ugly to write APIs this way, but that still doesn't mean\n  // that the Readable class should behave improperly, as streams are\n  // designed to be sync/async agnostic.\n  // Take note if the _read call is sync or async (ie, if the read call\n  // has returned yet), so that we know whether or not it's safe to emit\n  // 'readable' etc.\n  //\n  // 3. Actually pull the requested chunks out of the buffer and return.\n  // if we need a readable event, then we need to do some reading.\n\n\n  var doRead = state.needReadable;\n  debug('need readable', doRead); // if we currently have less than the highWaterMark, then also read some\n\n  if (state.length === 0 || state.length - n < state.highWaterMark) {\n    doRead = true;\n    debug('length less than watermark', doRead);\n  } // however, if we've ended, then there's no point, and if we're already\n  // reading, then it's unnecessary.\n\n\n  if (state.ended || state.reading) {\n    doRead = false;\n    debug('reading or ended', doRead);\n  } else if (doRead) {\n    debug('do read');\n    state.reading = true;\n    state.sync = true; // if the length is currently zero, then we *need* a readable event.\n\n    if (state.length === 0) state.needReadable = true; // call internal read method\n\n    this._read(state.highWaterMark);\n\n    state.sync = false; // If _read pushed data synchronously, then `reading` will be false,\n    // and we need to re-evaluate how much data we can return to the user.\n\n    if (!state.reading) n = howMuchToRead(nOrig, state);\n  }\n\n  var ret;\n  if (n > 0) ret = fromList(n, state);else ret = null;\n\n  if (ret === null) {\n    state.needReadable = state.length <= state.highWaterMark;\n    n = 0;\n  } else {\n    state.length -= n;\n    state.awaitDrain = 0;\n  }\n\n  if (state.length === 0) {\n    // If we have nothing in the buffer, then we want to know\n    // as soon as we *do* get something into the buffer.\n    if (!state.ended) state.needReadable = true; // If we tried to read() past the EOF, then emit end on the next tick.\n\n    if (nOrig !== n && state.ended) endReadable(this);\n  }\n\n  if (ret !== null) this.emit('data', ret);\n  return ret;\n};\n\nfunction onEofChunk(stream, state) {\n  debug('onEofChunk');\n  if (state.ended) return;\n\n  if (state.decoder) {\n    var chunk = state.decoder.end();\n\n    if (chunk && chunk.length) {\n      state.buffer.push(chunk);\n      state.length += state.objectMode ? 1 : chunk.length;\n    }\n  }\n\n  state.ended = true;\n\n  if (state.sync) {\n    // if we are sync, wait until next tick to emit the data.\n    // Otherwise we risk emitting data in the flow()\n    // the readable code triggers during a read() call\n    emitReadable(stream);\n  } else {\n    // emit 'readable' now to make sure it gets picked up.\n    state.needReadable = false;\n\n    if (!state.emittedReadable) {\n      state.emittedReadable = true;\n      emitReadable_(stream);\n    }\n  }\n} // Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow.  This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\n\n\nfunction emitReadable(stream) {\n  var state = stream._readableState;\n  debug('emitReadable', state.needReadable, state.emittedReadable);\n  state.needReadable = false;\n\n  if (!state.emittedReadable) {\n    debug('emitReadable', state.flowing);\n    state.emittedReadable = true;\n    process.nextTick(emitReadable_, stream);\n  }\n}\n\nfunction emitReadable_(stream) {\n  var state = stream._readableState;\n  debug('emitReadable_', state.destroyed, state.length, state.ended);\n\n  if (!state.destroyed && (state.length || state.ended)) {\n    stream.emit('readable');\n    state.emittedReadable = false;\n  } // The stream needs another readable event if\n  // 1. It is not flowing, as the flow mechanism will take\n  //    care of it.\n  // 2. It is not ended.\n  // 3. It is below the highWaterMark, so we can schedule\n  //    another readable later.\n\n\n  state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n  flow(stream);\n} // at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data.  that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\n\n\nfunction maybeReadMore(stream, state) {\n  if (!state.readingMore) {\n    state.readingMore = true;\n    process.nextTick(maybeReadMore_, stream, state);\n  }\n}\n\nfunction maybeReadMore_(stream, state) {\n  // Attempt to read more data if we should.\n  //\n  // The conditions for reading more data are (one of):\n  // - Not enough data buffered (state.length < state.highWaterMark). The loop\n  //   is responsible for filling the buffer with enough data if such data\n  //   is available. If highWaterMark is 0 and we are not in the flowing mode\n  //   we should _not_ attempt to buffer any extra data. We'll get more data\n  //   when the stream consumer calls read() instead.\n  // - No data in the buffer, and the stream is in flowing mode. In this mode\n  //   the loop below is responsible for ensuring read() is called. Failing to\n  //   call read here would abort the flow and there's no other mechanism for\n  //   continuing the flow if the stream consumer has just subscribed to the\n  //   'data' event.\n  //\n  // In addition to the above conditions to keep reading data, the following\n  // conditions prevent the data from being read:\n  // - The stream has ended (state.ended).\n  // - There is already a pending 'read' operation (state.reading). This is a\n  //   case where the the stream has called the implementation defined _read()\n  //   method, but they are processing the call asynchronously and have _not_\n  //   called push() with new data. In this case we skip performing more\n  //   read()s. The execution ends in this method again after the _read() ends\n  //   up calling push() with more data.\n  while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n    var len = state.length;\n    debug('maybeReadMore read 0');\n    stream.read(0);\n    if (len === state.length) // didn't get any data, stop spinning.\n      break;\n  }\n\n  state.readingMore = false;\n} // abstract method.  to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\n\n\nReadable.prototype._read = function (n) {\n  errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n  var src = this;\n  var state = this._readableState;\n\n  switch (state.pipesCount) {\n    case 0:\n      state.pipes = dest;\n      break;\n\n    case 1:\n      state.pipes = [state.pipes, dest];\n      break;\n\n    default:\n      state.pipes.push(dest);\n      break;\n  }\n\n  state.pipesCount += 1;\n  debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n  var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n  var endFn = doEnd ? onend : unpipe;\n  if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n  dest.on('unpipe', onunpipe);\n\n  function onunpipe(readable, unpipeInfo) {\n    debug('onunpipe');\n\n    if (readable === src) {\n      if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n        unpipeInfo.hasUnpiped = true;\n        cleanup();\n      }\n    }\n  }\n\n  function onend() {\n    debug('onend');\n    dest.end();\n  } // when the dest drains, it reduces the awaitDrain counter\n  // on the source.  This would be more elegant with a .once()\n  // handler in flow(), but adding and removing repeatedly is\n  // too slow.\n\n\n  var ondrain = pipeOnDrain(src);\n  dest.on('drain', ondrain);\n  var cleanedUp = false;\n\n  function cleanup() {\n    debug('cleanup'); // cleanup event handlers once the pipe is broken\n\n    dest.removeListener('close', onclose);\n    dest.removeListener('finish', onfinish);\n    dest.removeListener('drain', ondrain);\n    dest.removeListener('error', onerror);\n    dest.removeListener('unpipe', onunpipe);\n    src.removeListener('end', onend);\n    src.removeListener('end', unpipe);\n    src.removeListener('data', ondata);\n    cleanedUp = true; // if the reader is waiting for a drain event from this\n    // specific writer, then it would cause it to never start\n    // flowing again.\n    // So, if this is awaiting a drain, then we just call it now.\n    // If we don't know, then assume that we are waiting for one.\n\n    if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n  }\n\n  src.on('data', ondata);\n\n  function ondata(chunk) {\n    debug('ondata');\n    var ret = dest.write(chunk);\n    debug('dest.write', ret);\n\n    if (ret === false) {\n      // If the user unpiped during `dest.write()`, it is possible\n      // to get stuck in a permanently paused state if that write\n      // also returned false.\n      // => Check whether `dest` is still a piping destination.\n      if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n        debug('false write response, pause', state.awaitDrain);\n        state.awaitDrain++;\n      }\n\n      src.pause();\n    }\n  } // if the dest has an error, then stop piping into it.\n  // however, don't suppress the throwing behavior for this.\n\n\n  function onerror(er) {\n    debug('onerror', er);\n    unpipe();\n    dest.removeListener('error', onerror);\n    if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n  } // Make sure our error handler is attached before userland ones.\n\n\n  prependListener(dest, 'error', onerror); // Both close and finish should trigger unpipe, but only once.\n\n  function onclose() {\n    dest.removeListener('finish', onfinish);\n    unpipe();\n  }\n\n  dest.once('close', onclose);\n\n  function onfinish() {\n    debug('onfinish');\n    dest.removeListener('close', onclose);\n    unpipe();\n  }\n\n  dest.once('finish', onfinish);\n\n  function unpipe() {\n    debug('unpipe');\n    src.unpipe(dest);\n  } // tell the dest that it's being piped to\n\n\n  dest.emit('pipe', src); // start the flow if it hasn't been started already.\n\n  if (!state.flowing) {\n    debug('pipe resume');\n    src.resume();\n  }\n\n  return dest;\n};\n\nfunction pipeOnDrain(src) {\n  return function pipeOnDrainFunctionResult() {\n    var state = src._readableState;\n    debug('pipeOnDrain', state.awaitDrain);\n    if (state.awaitDrain) state.awaitDrain--;\n\n    if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n      state.flowing = true;\n      flow(src);\n    }\n  };\n}\n\nReadable.prototype.unpipe = function (dest) {\n  var state = this._readableState;\n  var unpipeInfo = {\n    hasUnpiped: false\n  }; // if we're not piping anywhere, then do nothing.\n\n  if (state.pipesCount === 0) return this; // just one destination.  most common case.\n\n  if (state.pipesCount === 1) {\n    // passed in one, but it's not the right one.\n    if (dest && dest !== state.pipes) return this;\n    if (!dest) dest = state.pipes; // got a match.\n\n    state.pipes = null;\n    state.pipesCount = 0;\n    state.flowing = false;\n    if (dest) dest.emit('unpipe', this, unpipeInfo);\n    return this;\n  } // slow case. multiple pipe destinations.\n\n\n  if (!dest) {\n    // remove all.\n    var dests = state.pipes;\n    var len = state.pipesCount;\n    state.pipes = null;\n    state.pipesCount = 0;\n    state.flowing = false;\n\n    for (var i = 0; i < len; i++) {\n      dests[i].emit('unpipe', this, {\n        hasUnpiped: false\n      });\n    }\n\n    return this;\n  } // try to find the right one.\n\n\n  var index = indexOf(state.pipes, dest);\n  if (index === -1) return this;\n  state.pipes.splice(index, 1);\n  state.pipesCount -= 1;\n  if (state.pipesCount === 1) state.pipes = state.pipes[0];\n  dest.emit('unpipe', this, unpipeInfo);\n  return this;\n}; // set up data events if they are asked for\n// Ensure readable listeners eventually get something\n\n\nReadable.prototype.on = function (ev, fn) {\n  var res = Stream.prototype.on.call(this, ev, fn);\n  var state = this._readableState;\n\n  if (ev === 'data') {\n    // update readableListening so that resume() may be a no-op\n    // a few lines down. This is needed to support once('readable').\n    state.readableListening = this.listenerCount('readable') > 0; // Try start flowing on next tick if stream isn't explicitly paused\n\n    if (state.flowing !== false) this.resume();\n  } else if (ev === 'readable') {\n    if (!state.endEmitted && !state.readableListening) {\n      state.readableListening = state.needReadable = true;\n      state.flowing = false;\n      state.emittedReadable = false;\n      debug('on readable', state.length, state.reading);\n\n      if (state.length) {\n        emitReadable(this);\n      } else if (!state.reading) {\n        process.nextTick(nReadingNextTick, this);\n      }\n    }\n  }\n\n  return res;\n};\n\nReadable.prototype.addListener = Readable.prototype.on;\n\nReadable.prototype.removeListener = function (ev, fn) {\n  var res = Stream.prototype.removeListener.call(this, ev, fn);\n\n  if (ev === 'readable') {\n    // We need to check if there is someone still listening to\n    // readable and reset the state. However this needs to happen\n    // after readable has been emitted but before I/O (nextTick) to\n    // support once('readable', fn) cycles. This means that calling\n    // resume within the same tick will have no\n    // effect.\n    process.nextTick(updateReadableListening, this);\n  }\n\n  return res;\n};\n\nReadable.prototype.removeAllListeners = function (ev) {\n  var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n\n  if (ev === 'readable' || ev === undefined) {\n    // We need to check if there is someone still listening to\n    // readable and reset the state. However this needs to happen\n    // after readable has been emitted but before I/O (nextTick) to\n    // support once('readable', fn) cycles. This means that calling\n    // resume within the same tick will have no\n    // effect.\n    process.nextTick(updateReadableListening, this);\n  }\n\n  return res;\n};\n\nfunction updateReadableListening(self) {\n  var state = self._readableState;\n  state.readableListening = self.listenerCount('readable') > 0;\n\n  if (state.resumeScheduled && !state.paused) {\n    // flowing needs to be set to true now, otherwise\n    // the upcoming resume will not flow.\n    state.flowing = true; // crude way to check if we should resume\n  } else if (self.listenerCount('data') > 0) {\n    self.resume();\n  }\n}\n\nfunction nReadingNextTick(self) {\n  debug('readable nexttick read 0');\n  self.read(0);\n} // pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\n\n\nReadable.prototype.resume = function () {\n  var state = this._readableState;\n\n  if (!state.flowing) {\n    debug('resume'); // we flow only if there is no one listening\n    // for readable, but we still have to call\n    // resume()\n\n    state.flowing = !state.readableListening;\n    resume(this, state);\n  }\n\n  state.paused = false;\n  return this;\n};\n\nfunction resume(stream, state) {\n  if (!state.resumeScheduled) {\n    state.resumeScheduled = true;\n    process.nextTick(resume_, stream, state);\n  }\n}\n\nfunction resume_(stream, state) {\n  debug('resume', state.reading);\n\n  if (!state.reading) {\n    stream.read(0);\n  }\n\n  state.resumeScheduled = false;\n  stream.emit('resume');\n  flow(stream);\n  if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n  debug('call pause flowing=%j', this._readableState.flowing);\n\n  if (this._readableState.flowing !== false) {\n    debug('pause');\n    this._readableState.flowing = false;\n    this.emit('pause');\n  }\n\n  this._readableState.paused = true;\n  return this;\n};\n\nfunction flow(stream) {\n  var state = stream._readableState;\n  debug('flow', state.flowing);\n\n  while (state.flowing && stream.read() !== null) {\n    ;\n  }\n} // wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\n\n\nReadable.prototype.wrap = function (stream) {\n  var _this = this;\n\n  var state = this._readableState;\n  var paused = false;\n  stream.on('end', function () {\n    debug('wrapped end');\n\n    if (state.decoder && !state.ended) {\n      var chunk = state.decoder.end();\n      if (chunk && chunk.length) _this.push(chunk);\n    }\n\n    _this.push(null);\n  });\n  stream.on('data', function (chunk) {\n    debug('wrapped data');\n    if (state.decoder) chunk = state.decoder.write(chunk); // don't skip over falsy values in objectMode\n\n    if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n    var ret = _this.push(chunk);\n\n    if (!ret) {\n      paused = true;\n      stream.pause();\n    }\n  }); // proxy all the other methods.\n  // important when wrapping filters and duplexes.\n\n  for (var i in stream) {\n    if (this[i] === undefined && typeof stream[i] === 'function') {\n      this[i] = function methodWrap(method) {\n        return function methodWrapReturnFunction() {\n          return stream[method].apply(stream, arguments);\n        };\n      }(i);\n    }\n  } // proxy certain important events.\n\n\n  for (var n = 0; n < kProxyEvents.length; n++) {\n    stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n  } // when we try to consume some more bytes, simply unpause the\n  // underlying stream.\n\n\n  this._read = function (n) {\n    debug('wrapped _read', n);\n\n    if (paused) {\n      paused = false;\n      stream.resume();\n    }\n  };\n\n  return this;\n};\n\nif (typeof Symbol === 'function') {\n  Readable.prototype[Symbol.asyncIterator] = function () {\n    if (createReadableStreamAsyncIterator === undefined) {\n      createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n    }\n\n    return createReadableStreamAsyncIterator(this);\n  };\n}\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._readableState.highWaterMark;\n  }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._readableState && this._readableState.buffer;\n  }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._readableState.flowing;\n  },\n  set: function set(state) {\n    if (this._readableState) {\n      this._readableState.flowing = state;\n    }\n  }\n}); // exposed for testing purposes only.\n\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._readableState.length;\n  }\n}); // Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\nfunction fromList(n, state) {\n  // nothing buffered\n  if (state.length === 0) return null;\n  var ret;\n  if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n    // read it all, truncate the list\n    if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n    state.buffer.clear();\n  } else {\n    // read part of list\n    ret = state.buffer.consume(n, state.decoder);\n  }\n  return ret;\n}\n\nfunction endReadable(stream) {\n  var state = stream._readableState;\n  debug('endReadable', state.endEmitted);\n\n  if (!state.endEmitted) {\n    state.ended = true;\n    process.nextTick(endReadableNT, state, stream);\n  }\n}\n\nfunction endReadableNT(state, stream) {\n  debug('endReadableNT', state.endEmitted, state.length); // Check that we didn't get one last unshift.\n\n  if (!state.endEmitted && state.length === 0) {\n    state.endEmitted = true;\n    stream.readable = false;\n    stream.emit('end');\n\n    if (state.autoDestroy) {\n      // In case of duplex streams we need a way to detect\n      // if the writable side is ready for autoDestroy as well\n      var wState = stream._writableState;\n\n      if (!wState || wState.autoDestroy && wState.finished) {\n        stream.destroy();\n      }\n    }\n  }\n}\n\nif (typeof Symbol === 'function') {\n  Readable.from = function (iterable, opts) {\n    if (from === undefined) {\n      from = require('./internal/streams/from');\n    }\n\n    return from(Readable, iterable, opts);\n  };\n}\n\nfunction indexOf(xs, x) {\n  for (var i = 0, l = xs.length; i < l; i++) {\n    if (xs[i] === x) return i;\n  }\n\n  return -1;\n}", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a transform stream is a readable/writable stream where you do\n// something with the data.  Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored.  (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation.  For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes.  When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up.  When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer.  When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks.  If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk.  However,\n// a pathological inflate type of transform can cause excessive buffering\n// here.  For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output.  Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output.  In this case, you could write a very small\n// amount of input, and end up with a very large amount of output.  In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform.  A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n'use strict';\n\nmodule.exports = Transform;\n\nvar _require$codes = require('../errors').codes,\n    ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n    ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n    ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n    ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\n\nvar Duplex = require('./_stream_duplex');\n\nrequire('inherits')(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n  var ts = this._transformState;\n  ts.transforming = false;\n  var cb = ts.writecb;\n\n  if (cb === null) {\n    return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n  }\n\n  ts.writechunk = null;\n  ts.writecb = null;\n  if (data != null) // single equals check for both `null` and `undefined`\n    this.push(data);\n  cb(er);\n  var rs = this._readableState;\n  rs.reading = false;\n\n  if (rs.needReadable || rs.length < rs.highWaterMark) {\n    this._read(rs.highWaterMark);\n  }\n}\n\nfunction Transform(options) {\n  if (!(this instanceof Transform)) return new Transform(options);\n  Duplex.call(this, options);\n  this._transformState = {\n    afterTransform: afterTransform.bind(this),\n    needTransform: false,\n    transforming: false,\n    writecb: null,\n    writechunk: null,\n    writeencoding: null\n  }; // start out asking for a readable event once data is transformed.\n\n  this._readableState.needReadable = true; // we have implemented the _read method, and done the other things\n  // that Readable wants before the first _read call, so unset the\n  // sync guard flag.\n\n  this._readableState.sync = false;\n\n  if (options) {\n    if (typeof options.transform === 'function') this._transform = options.transform;\n    if (typeof options.flush === 'function') this._flush = options.flush;\n  } // When the writable side finishes, then flush out anything remaining.\n\n\n  this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n  var _this = this;\n\n  if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n    this._flush(function (er, data) {\n      done(_this, er, data);\n    });\n  } else {\n    done(this, null, null);\n  }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n  this._transformState.needTransform = false;\n  return Duplex.prototype.push.call(this, chunk, encoding);\n}; // This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side.  You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk.  If you pass\n// an error, then that'll put the hurt on the whole operation.  If you\n// never call cb(), then you'll never get another chunk.\n\n\nTransform.prototype._transform = function (chunk, encoding, cb) {\n  cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n  var ts = this._transformState;\n  ts.writecb = cb;\n  ts.writechunk = chunk;\n  ts.writeencoding = encoding;\n\n  if (!ts.transforming) {\n    var rs = this._readableState;\n    if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n  }\n}; // Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\n\n\nTransform.prototype._read = function (n) {\n  var ts = this._transformState;\n\n  if (ts.writechunk !== null && !ts.transforming) {\n    ts.transforming = true;\n\n    this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n  } else {\n    // mark that we need a transform, so that any data that comes in\n    // will get processed, now that we've asked for it.\n    ts.needTransform = true;\n  }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n  Duplex.prototype._destroy.call(this, err, function (err2) {\n    cb(err2);\n  });\n};\n\nfunction done(stream, er, data) {\n  if (er) return stream.emit('error', er);\n  if (data != null) // single equals check for both `null` and `undefined`\n    stream.push(data); // TODO(BridgeAR): Write a test for these two error cases\n  // if there's nothing in the write buffer, then that means\n  // that nothing more will ever be provided\n\n  if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n  if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n  return stream.push(null);\n}", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n'use strict';\n\nmodule.exports = Writable;\n/* <replacement> */\n\nfunction WriteReq(chunk, encoding, cb) {\n  this.chunk = chunk;\n  this.encoding = encoding;\n  this.callback = cb;\n  this.next = null;\n} // It seems a linked list but it is not\n// there will be only 2 of these for each stream\n\n\nfunction CorkedRequest(state) {\n  var _this = this;\n\n  this.next = null;\n  this.entry = null;\n\n  this.finish = function () {\n    onCorkedFinish(_this, state);\n  };\n}\n/* </replacement> */\n\n/*<replacement>*/\n\n\nvar Duplex;\n/*</replacement>*/\n\nWritable.WritableState = WritableState;\n/*<replacement>*/\n\nvar internalUtil = {\n  deprecate: require('util-deprecate')\n};\n/*</replacement>*/\n\n/*<replacement>*/\n\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n  return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n  return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n    getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n    ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n    ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n    ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n    ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n    ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n    ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n    ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n    ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\n\nrequire('inherits')(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream, isDuplex) {\n  Duplex = Duplex || require('./_stream_duplex');\n  options = options || {}; // Duplex streams are both readable and writable, but share\n  // the same options object.\n  // However, some cases require setting options to different\n  // values for the readable and the writable sides of the duplex stream,\n  // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n\n  if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag to indicate whether or not this stream\n  // contains buffers or objects.\n\n  this.objectMode = !!options.objectMode;\n  if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; // the point at which write() starts returning false\n  // Note: 0 is a valid value, means that we always return false if\n  // the entire buffer is not flushed immediately on write()\n\n  this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex); // if _final has been called\n\n  this.finalCalled = false; // drain event flag.\n\n  this.needDrain = false; // at the start of calling end()\n\n  this.ending = false; // when end() has been called, and returned\n\n  this.ended = false; // when 'finish' is emitted\n\n  this.finished = false; // has it been destroyed\n\n  this.destroyed = false; // should we decode strings into buffers before passing to _write?\n  // this is here so that some node-core streams can optimize string\n  // handling at a lower level.\n\n  var noDecode = options.decodeStrings === false;\n  this.decodeStrings = !noDecode; // Crypto is kind of old and crusty.  Historically, its default string\n  // encoding is 'binary' so we have to make this configurable.\n  // Everything else in the universe uses 'utf8', though.\n\n  this.defaultEncoding = options.defaultEncoding || 'utf8'; // not an actual buffer we keep track of, but a measurement\n  // of how much we're waiting to get pushed to some underlying\n  // socket or file.\n\n  this.length = 0; // a flag to see when we're in the middle of a write.\n\n  this.writing = false; // when true all writes will be buffered until .uncork() call\n\n  this.corked = 0; // a flag to be able to tell if the onwrite cb is called immediately,\n  // or on a later tick.  We set this to true at first, because any\n  // actions that shouldn't happen until \"later\" should generally also\n  // not happen before the first write call.\n\n  this.sync = true; // a flag to know if we're processing previously buffered items, which\n  // may call the _write() callback in the same tick, so that we don't\n  // end up in an overlapped onwrite situation.\n\n  this.bufferProcessing = false; // the callback that's passed to _write(chunk,cb)\n\n  this.onwrite = function (er) {\n    onwrite(stream, er);\n  }; // the callback that the user supplies to write(chunk,encoding,cb)\n\n\n  this.writecb = null; // the amount that is being written when _write is called.\n\n  this.writelen = 0;\n  this.bufferedRequest = null;\n  this.lastBufferedRequest = null; // number of pending user-supplied write callbacks\n  // this must be 0 before 'finish' can be emitted\n\n  this.pendingcb = 0; // emit prefinish if the only thing we're waiting for is _write cbs\n  // This is relevant for synchronous Transform streams\n\n  this.prefinished = false; // True if the error was already emitted and should not be thrown again\n\n  this.errorEmitted = false; // Should close be emitted on destroy. Defaults to true.\n\n  this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'finish' (and potentially 'end')\n\n  this.autoDestroy = !!options.autoDestroy; // count buffered requests\n\n  this.bufferedRequestCount = 0; // allocate the first CorkedRequest, there is always\n  // one allocated and free to use, and we maintain at most two\n\n  this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n  var current = this.bufferedRequest;\n  var out = [];\n\n  while (current) {\n    out.push(current);\n    current = current.next;\n  }\n\n  return out;\n};\n\n(function () {\n  try {\n    Object.defineProperty(WritableState.prototype, 'buffer', {\n      get: internalUtil.deprecate(function writableStateBufferGetter() {\n        return this.getBuffer();\n      }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n    });\n  } catch (_) {}\n})(); // Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\n\n\nvar realHasInstance;\n\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n  realHasInstance = Function.prototype[Symbol.hasInstance];\n  Object.defineProperty(Writable, Symbol.hasInstance, {\n    value: function value(object) {\n      if (realHasInstance.call(this, object)) return true;\n      if (this !== Writable) return false;\n      return object && object._writableState instanceof WritableState;\n    }\n  });\n} else {\n  realHasInstance = function realHasInstance(object) {\n    return object instanceof this;\n  };\n}\n\nfunction Writable(options) {\n  Duplex = Duplex || require('./_stream_duplex'); // Writable ctor is applied to Duplexes, too.\n  // `realHasInstance` is necessary because using plain `instanceof`\n  // would return false, as no `_writableState` property is attached.\n  // Trying to use the custom `instanceof` for Writable here will also break the\n  // Node.js LazyTransform implementation, which has a non-trivial getter for\n  // `_writableState` that would lead to infinite recursion.\n  // Checking for a Stream.Duplex instance is faster here instead of inside\n  // the WritableState constructor, at least with V8 6.5\n\n  var isDuplex = this instanceof Duplex;\n  if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n  this._writableState = new WritableState(options, this, isDuplex); // legacy.\n\n  this.writable = true;\n\n  if (options) {\n    if (typeof options.write === 'function') this._write = options.write;\n    if (typeof options.writev === 'function') this._writev = options.writev;\n    if (typeof options.destroy === 'function') this._destroy = options.destroy;\n    if (typeof options.final === 'function') this._final = options.final;\n  }\n\n  Stream.call(this);\n} // Otherwise people can pipe Writable streams, which is just wrong.\n\n\nWritable.prototype.pipe = function () {\n  errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\n\nfunction writeAfterEnd(stream, cb) {\n  var er = new ERR_STREAM_WRITE_AFTER_END(); // TODO: defer error events consistently everywhere, not just the cb\n\n  errorOrDestroy(stream, er);\n  process.nextTick(cb, er);\n} // Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\n\n\nfunction validChunk(stream, state, chunk, cb) {\n  var er;\n\n  if (chunk === null) {\n    er = new ERR_STREAM_NULL_VALUES();\n  } else if (typeof chunk !== 'string' && !state.objectMode) {\n    er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n  }\n\n  if (er) {\n    errorOrDestroy(stream, er);\n    process.nextTick(cb, er);\n    return false;\n  }\n\n  return true;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n  var state = this._writableState;\n  var ret = false;\n\n  var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n  if (isBuf && !Buffer.isBuffer(chunk)) {\n    chunk = _uint8ArrayToBuffer(chunk);\n  }\n\n  if (typeof encoding === 'function') {\n    cb = encoding;\n    encoding = null;\n  }\n\n  if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n  if (typeof cb !== 'function') cb = nop;\n  if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n    state.pendingcb++;\n    ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n  }\n  return ret;\n};\n\nWritable.prototype.cork = function () {\n  this._writableState.corked++;\n};\n\nWritable.prototype.uncork = function () {\n  var state = this._writableState;\n\n  if (state.corked) {\n    state.corked--;\n    if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n  }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n  // node::ParseEncoding() requires lower case.\n  if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n  if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n  this._writableState.defaultEncoding = encoding;\n  return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState && this._writableState.getBuffer();\n  }\n});\n\nfunction decodeChunk(state, chunk, encoding) {\n  if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n    chunk = Buffer.from(chunk, encoding);\n  }\n\n  return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState.highWaterMark;\n  }\n}); // if we're already writing something, then just put this\n// in the queue, and wait our turn.  Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\n\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n  if (!isBuf) {\n    var newChunk = decodeChunk(state, chunk, encoding);\n\n    if (chunk !== newChunk) {\n      isBuf = true;\n      encoding = 'buffer';\n      chunk = newChunk;\n    }\n  }\n\n  var len = state.objectMode ? 1 : chunk.length;\n  state.length += len;\n  var ret = state.length < state.highWaterMark; // we must ensure that previous needDrain will not be reset to false.\n\n  if (!ret) state.needDrain = true;\n\n  if (state.writing || state.corked) {\n    var last = state.lastBufferedRequest;\n    state.lastBufferedRequest = {\n      chunk: chunk,\n      encoding: encoding,\n      isBuf: isBuf,\n      callback: cb,\n      next: null\n    };\n\n    if (last) {\n      last.next = state.lastBufferedRequest;\n    } else {\n      state.bufferedRequest = state.lastBufferedRequest;\n    }\n\n    state.bufferedRequestCount += 1;\n  } else {\n    doWrite(stream, state, false, len, chunk, encoding, cb);\n  }\n\n  return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n  state.writelen = len;\n  state.writecb = cb;\n  state.writing = true;\n  state.sync = true;\n  if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n  state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n  --state.pendingcb;\n\n  if (sync) {\n    // defer the callback if we are being called synchronously\n    // to avoid piling up things on the stack\n    process.nextTick(cb, er); // this can emit finish, and it will always happen\n    // after error\n\n    process.nextTick(finishMaybe, stream, state);\n    stream._writableState.errorEmitted = true;\n    errorOrDestroy(stream, er);\n  } else {\n    // the caller expect this to happen before if\n    // it is async\n    cb(er);\n    stream._writableState.errorEmitted = true;\n    errorOrDestroy(stream, er); // this can emit finish, but finish must\n    // always follow error\n\n    finishMaybe(stream, state);\n  }\n}\n\nfunction onwriteStateUpdate(state) {\n  state.writing = false;\n  state.writecb = null;\n  state.length -= state.writelen;\n  state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n  var state = stream._writableState;\n  var sync = state.sync;\n  var cb = state.writecb;\n  if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n  onwriteStateUpdate(state);\n  if (er) onwriteError(stream, state, sync, er, cb);else {\n    // Check if we're actually ready to finish, but don't emit yet\n    var finished = needFinish(state) || stream.destroyed;\n\n    if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n      clearBuffer(stream, state);\n    }\n\n    if (sync) {\n      process.nextTick(afterWrite, stream, state, finished, cb);\n    } else {\n      afterWrite(stream, state, finished, cb);\n    }\n  }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n  if (!finished) onwriteDrain(stream, state);\n  state.pendingcb--;\n  cb();\n  finishMaybe(stream, state);\n} // Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\n\n\nfunction onwriteDrain(stream, state) {\n  if (state.length === 0 && state.needDrain) {\n    state.needDrain = false;\n    stream.emit('drain');\n  }\n} // if there's something in the buffer waiting, then process it\n\n\nfunction clearBuffer(stream, state) {\n  state.bufferProcessing = true;\n  var entry = state.bufferedRequest;\n\n  if (stream._writev && entry && entry.next) {\n    // Fast case, write everything using _writev()\n    var l = state.bufferedRequestCount;\n    var buffer = new Array(l);\n    var holder = state.corkedRequestsFree;\n    holder.entry = entry;\n    var count = 0;\n    var allBuffers = true;\n\n    while (entry) {\n      buffer[count] = entry;\n      if (!entry.isBuf) allBuffers = false;\n      entry = entry.next;\n      count += 1;\n    }\n\n    buffer.allBuffers = allBuffers;\n    doWrite(stream, state, true, state.length, buffer, '', holder.finish); // doWrite is almost always async, defer these to save a bit of time\n    // as the hot path ends with doWrite\n\n    state.pendingcb++;\n    state.lastBufferedRequest = null;\n\n    if (holder.next) {\n      state.corkedRequestsFree = holder.next;\n      holder.next = null;\n    } else {\n      state.corkedRequestsFree = new CorkedRequest(state);\n    }\n\n    state.bufferedRequestCount = 0;\n  } else {\n    // Slow case, write chunks one-by-one\n    while (entry) {\n      var chunk = entry.chunk;\n      var encoding = entry.encoding;\n      var cb = entry.callback;\n      var len = state.objectMode ? 1 : chunk.length;\n      doWrite(stream, state, false, len, chunk, encoding, cb);\n      entry = entry.next;\n      state.bufferedRequestCount--; // if we didn't call the onwrite immediately, then\n      // it means that we need to wait until it does.\n      // also, that means that the chunk and cb are currently\n      // being processed, so move the buffer counter past them.\n\n      if (state.writing) {\n        break;\n      }\n    }\n\n    if (entry === null) state.lastBufferedRequest = null;\n  }\n\n  state.bufferedRequest = entry;\n  state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n  cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n  var state = this._writableState;\n\n  if (typeof chunk === 'function') {\n    cb = chunk;\n    chunk = null;\n    encoding = null;\n  } else if (typeof encoding === 'function') {\n    cb = encoding;\n    encoding = null;\n  }\n\n  if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); // .end() fully uncorks\n\n  if (state.corked) {\n    state.corked = 1;\n    this.uncork();\n  } // ignore unnecessary end() calls.\n\n\n  if (!state.ending) endWritable(this, state, cb);\n  return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableLength', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState.length;\n  }\n});\n\nfunction needFinish(state) {\n  return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\n\nfunction callFinal(stream, state) {\n  stream._final(function (err) {\n    state.pendingcb--;\n\n    if (err) {\n      errorOrDestroy(stream, err);\n    }\n\n    state.prefinished = true;\n    stream.emit('prefinish');\n    finishMaybe(stream, state);\n  });\n}\n\nfunction prefinish(stream, state) {\n  if (!state.prefinished && !state.finalCalled) {\n    if (typeof stream._final === 'function' && !state.destroyed) {\n      state.pendingcb++;\n      state.finalCalled = true;\n      process.nextTick(callFinal, stream, state);\n    } else {\n      state.prefinished = true;\n      stream.emit('prefinish');\n    }\n  }\n}\n\nfunction finishMaybe(stream, state) {\n  var need = needFinish(state);\n\n  if (need) {\n    prefinish(stream, state);\n\n    if (state.pendingcb === 0) {\n      state.finished = true;\n      stream.emit('finish');\n\n      if (state.autoDestroy) {\n        // In case of duplex streams we need a way to detect\n        // if the readable side is ready for autoDestroy as well\n        var rState = stream._readableState;\n\n        if (!rState || rState.autoDestroy && rState.endEmitted) {\n          stream.destroy();\n        }\n      }\n    }\n  }\n\n  return need;\n}\n\nfunction endWritable(stream, state, cb) {\n  state.ending = true;\n  finishMaybe(stream, state);\n\n  if (cb) {\n    if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n  }\n\n  state.ended = true;\n  stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n  var entry = corkReq.entry;\n  corkReq.entry = null;\n\n  while (entry) {\n    var cb = entry.callback;\n    state.pendingcb--;\n    cb(err);\n    entry = entry.next;\n  } // reuse the free corkReq.\n\n\n  state.corkedRequestsFree.next = corkReq;\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    if (this._writableState === undefined) {\n      return false;\n    }\n\n    return this._writableState.destroyed;\n  },\n  set: function set(value) {\n    // we ignore the value if the stream\n    // has not been initialized yet\n    if (!this._writableState) {\n      return;\n    } // backward compatibility, the user is explicitly\n    // managing destroyed\n\n\n    this._writableState.destroyed = value;\n  }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\n\nWritable.prototype._destroy = function (err, cb) {\n  cb(err);\n};", "'use strict';\n\nvar _Object$setPrototypeO;\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar finished = require('./end-of-stream');\n\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\n\nfunction createIterResult(value, done) {\n  return {\n    value: value,\n    done: done\n  };\n}\n\nfunction readAndResolve(iter) {\n  var resolve = iter[kLastResolve];\n\n  if (resolve !== null) {\n    var data = iter[kStream].read(); // we defer if data is null\n    // we can be expecting either 'end' or\n    // 'error'\n\n    if (data !== null) {\n      iter[kLastPromise] = null;\n      iter[kLastResolve] = null;\n      iter[kLastReject] = null;\n      resolve(createIterResult(data, false));\n    }\n  }\n}\n\nfunction onReadable(iter) {\n  // we wait for the next tick, because it might\n  // emit an error with process.nextTick\n  process.nextTick(readAndResolve, iter);\n}\n\nfunction wrapForNext(lastPromise, iter) {\n  return function (resolve, reject) {\n    lastPromise.then(function () {\n      if (iter[kEnded]) {\n        resolve(createIterResult(undefined, true));\n        return;\n      }\n\n      iter[kHandlePromise](resolve, reject);\n    }, reject);\n  };\n}\n\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n  get stream() {\n    return this[kStream];\n  },\n\n  next: function next() {\n    var _this = this;\n\n    // if we have detected an error in the meanwhile\n    // reject straight away\n    var error = this[kError];\n\n    if (error !== null) {\n      return Promise.reject(error);\n    }\n\n    if (this[kEnded]) {\n      return Promise.resolve(createIterResult(undefined, true));\n    }\n\n    if (this[kStream].destroyed) {\n      // We need to defer via nextTick because if .destroy(err) is\n      // called, the error will be emitted via nextTick, and\n      // we cannot guarantee that there is no error lingering around\n      // waiting to be emitted.\n      return new Promise(function (resolve, reject) {\n        process.nextTick(function () {\n          if (_this[kError]) {\n            reject(_this[kError]);\n          } else {\n            resolve(createIterResult(undefined, true));\n          }\n        });\n      });\n    } // if we have multiple next() calls\n    // we will wait for the previous Promise to finish\n    // this logic is optimized to support for await loops,\n    // where next() is only called once at a time\n\n\n    var lastPromise = this[kLastPromise];\n    var promise;\n\n    if (lastPromise) {\n      promise = new Promise(wrapForNext(lastPromise, this));\n    } else {\n      // fast path needed to support multiple this.push()\n      // without triggering the next() queue\n      var data = this[kStream].read();\n\n      if (data !== null) {\n        return Promise.resolve(createIterResult(data, false));\n      }\n\n      promise = new Promise(this[kHandlePromise]);\n    }\n\n    this[kLastPromise] = promise;\n    return promise;\n  }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n  return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n  var _this2 = this;\n\n  // destroy(err, cb) is a private API\n  // we can guarantee we have that here, because we control the\n  // Readable class this is attached to\n  return new Promise(function (resolve, reject) {\n    _this2[kStream].destroy(null, function (err) {\n      if (err) {\n        reject(err);\n        return;\n      }\n\n      resolve(createIterResult(undefined, true));\n    });\n  });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\n\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n  var _Object$create;\n\n  var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n    value: stream,\n    writable: true\n  }), _defineProperty(_Object$create, kLastResolve, {\n    value: null,\n    writable: true\n  }), _defineProperty(_Object$create, kLastReject, {\n    value: null,\n    writable: true\n  }), _defineProperty(_Object$create, kError, {\n    value: null,\n    writable: true\n  }), _defineProperty(_Object$create, kEnded, {\n    value: stream._readableState.endEmitted,\n    writable: true\n  }), _defineProperty(_Object$create, kHandlePromise, {\n    value: function value(resolve, reject) {\n      var data = iterator[kStream].read();\n\n      if (data) {\n        iterator[kLastPromise] = null;\n        iterator[kLastResolve] = null;\n        iterator[kLastReject] = null;\n        resolve(createIterResult(data, false));\n      } else {\n        iterator[kLastResolve] = resolve;\n        iterator[kLastReject] = reject;\n      }\n    },\n    writable: true\n  }), _Object$create));\n  iterator[kLastPromise] = null;\n  finished(stream, function (err) {\n    if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n      var reject = iterator[kLastReject]; // reject if we are waiting for data in the Promise\n      // returned by next() and store the error\n\n      if (reject !== null) {\n        iterator[kLastPromise] = null;\n        iterator[kLastResolve] = null;\n        iterator[kLastReject] = null;\n        reject(err);\n      }\n\n      iterator[kError] = err;\n      return;\n    }\n\n    var resolve = iterator[kLastResolve];\n\n    if (resolve !== null) {\n      iterator[kLastPromise] = null;\n      iterator[kLastResolve] = null;\n      iterator[kLastReject] = null;\n      resolve(createIterResult(undefined, true));\n    }\n\n    iterator[kEnded] = true;\n  });\n  stream.on('readable', onReadable.bind(null, iterator));\n  return iterator;\n};\n\nmodule.exports = createReadableStreamAsyncIterator;", "'use strict'; // undocumented cb() API, needed for core, not for public API\n\nfunction destroy(err, cb) {\n  var _this = this;\n\n  var readableDestroyed = this._readableState && this._readableState.destroyed;\n  var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n  if (readableDestroyed || writableDestroyed) {\n    if (cb) {\n      cb(err);\n    } else if (err) {\n      if (!this._writableState) {\n        process.nextTick(emitErrorNT, this, err);\n      } else if (!this._writableState.errorEmitted) {\n        this._writableState.errorEmitted = true;\n        process.nextTick(emitErrorNT, this, err);\n      }\n    }\n\n    return this;\n  } // we set destroyed to true before firing error callbacks in order\n  // to make it re-entrance safe in case destroy() is called within callbacks\n\n\n  if (this._readableState) {\n    this._readableState.destroyed = true;\n  } // if this is a duplex stream mark the writable part as destroyed as well\n\n\n  if (this._writableState) {\n    this._writableState.destroyed = true;\n  }\n\n  this._destroy(err || null, function (err) {\n    if (!cb && err) {\n      if (!_this._writableState) {\n        process.nextTick(emitErrorAndCloseNT, _this, err);\n      } else if (!_this._writableState.errorEmitted) {\n        _this._writableState.errorEmitted = true;\n        process.nextTick(emitErrorAndCloseNT, _this, err);\n      } else {\n        process.nextTick(emitCloseNT, _this);\n      }\n    } else if (cb) {\n      process.nextTick(emitCloseNT, _this);\n      cb(err);\n    } else {\n      process.nextTick(emitCloseNT, _this);\n    }\n  });\n\n  return this;\n}\n\nfunction emitErrorAndCloseNT(self, err) {\n  emitErrorNT(self, err);\n  emitCloseNT(self);\n}\n\nfunction emitCloseNT(self) {\n  if (self._writableState && !self._writableState.emitClose) return;\n  if (self._readableState && !self._readableState.emitClose) return;\n  self.emit('close');\n}\n\nfunction undestroy() {\n  if (this._readableState) {\n    this._readableState.destroyed = false;\n    this._readableState.reading = false;\n    this._readableState.ended = false;\n    this._readableState.endEmitted = false;\n  }\n\n  if (this._writableState) {\n    this._writableState.destroyed = false;\n    this._writableState.ended = false;\n    this._writableState.ending = false;\n    this._writableState.finalCalled = false;\n    this._writableState.prefinished = false;\n    this._writableState.finished = false;\n    this._writableState.errorEmitted = false;\n  }\n}\n\nfunction emitErrorNT(self, err) {\n  self.emit('error', err);\n}\n\nfunction errorOrDestroy(stream, err) {\n  // We have tests that rely on errors being emitted\n  // in the same tick, so changing this is semver major.\n  // For now when you opt-in to autoDestroy we allow\n  // the error to be emitted nextTick. In a future\n  // semver major update we should change the default to this.\n  var rState = stream._readableState;\n  var wState = stream._writableState;\n  if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\n\nmodule.exports = {\n  destroy: destroy,\n  undestroy: undestroy,\n  errorOrDestroy: errorOrDestroy\n};", "// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\n\nfunction once(callback) {\n  var called = false;\n  return function () {\n    if (called) return;\n    called = true;\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    callback.apply(this, args);\n  };\n}\n\nfunction noop() {}\n\nfunction isRequest(stream) {\n  return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction eos(stream, opts, callback) {\n  if (typeof opts === 'function') return eos(stream, null, opts);\n  if (!opts) opts = {};\n  callback = once(callback || noop);\n  var readable = opts.readable || opts.readable !== false && stream.readable;\n  var writable = opts.writable || opts.writable !== false && stream.writable;\n\n  var onlegacyfinish = function onlegacyfinish() {\n    if (!stream.writable) onfinish();\n  };\n\n  var writableEnded = stream._writableState && stream._writableState.finished;\n\n  var onfinish = function onfinish() {\n    writable = false;\n    writableEnded = true;\n    if (!readable) callback.call(stream);\n  };\n\n  var readableEnded = stream._readableState && stream._readableState.endEmitted;\n\n  var onend = function onend() {\n    readable = false;\n    readableEnded = true;\n    if (!writable) callback.call(stream);\n  };\n\n  var onerror = function onerror(err) {\n    callback.call(stream, err);\n  };\n\n  var onclose = function onclose() {\n    var err;\n\n    if (readable && !readableEnded) {\n      if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n      return callback.call(stream, err);\n    }\n\n    if (writable && !writableEnded) {\n      if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n      return callback.call(stream, err);\n    }\n  };\n\n  var onrequest = function onrequest() {\n    stream.req.on('finish', onfinish);\n  };\n\n  if (isRequest(stream)) {\n    stream.on('complete', onfinish);\n    stream.on('abort', onclose);\n    if (stream.req) onrequest();else stream.on('request', onrequest);\n  } else if (writable && !stream._writableState) {\n    // legacy streams\n    stream.on('end', onlegacyfinish);\n    stream.on('close', onlegacyfinish);\n  }\n\n  stream.on('end', onend);\n  stream.on('finish', onfinish);\n  if (opts.error !== false) stream.on('error', onerror);\n  stream.on('close', onclose);\n  return function () {\n    stream.removeListener('complete', onfinish);\n    stream.removeListener('abort', onclose);\n    stream.removeListener('request', onrequest);\n    if (stream.req) stream.req.removeListener('finish', onfinish);\n    stream.removeListener('end', onlegacyfinish);\n    stream.removeListener('close', onlegacyfinish);\n    stream.removeListener('finish', onfinish);\n    stream.removeListener('end', onend);\n    stream.removeListener('error', onerror);\n    stream.removeListener('close', onclose);\n  };\n}\n\nmodule.exports = eos;", "module.exports = function () {\n  throw new Error('Readable.from is not available in the browser')\n};\n", "// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar eos;\n\nfunction once(callback) {\n  var called = false;\n  return function () {\n    if (called) return;\n    called = true;\n    callback.apply(void 0, arguments);\n  };\n}\n\nvar _require$codes = require('../../../errors').codes,\n    ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n    ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\n\nfunction noop(err) {\n  // Rethrow the error if it exists to avoid swallowing it\n  if (err) throw err;\n}\n\nfunction isRequest(stream) {\n  return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction destroyer(stream, reading, writing, callback) {\n  callback = once(callback);\n  var closed = false;\n  stream.on('close', function () {\n    closed = true;\n  });\n  if (eos === undefined) eos = require('./end-of-stream');\n  eos(stream, {\n    readable: reading,\n    writable: writing\n  }, function (err) {\n    if (err) return callback(err);\n    closed = true;\n    callback();\n  });\n  var destroyed = false;\n  return function (err) {\n    if (closed) return;\n    if (destroyed) return;\n    destroyed = true; // request.destroy just do .end - .abort is what we want\n\n    if (isRequest(stream)) return stream.abort();\n    if (typeof stream.destroy === 'function') return stream.destroy();\n    callback(err || new ERR_STREAM_DESTROYED('pipe'));\n  };\n}\n\nfunction call(fn) {\n  fn();\n}\n\nfunction pipe(from, to) {\n  return from.pipe(to);\n}\n\nfunction popCallback(streams) {\n  if (!streams.length) return noop;\n  if (typeof streams[streams.length - 1] !== 'function') return noop;\n  return streams.pop();\n}\n\nfunction pipeline() {\n  for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n    streams[_key] = arguments[_key];\n  }\n\n  var callback = popCallback(streams);\n  if (Array.isArray(streams[0])) streams = streams[0];\n\n  if (streams.length < 2) {\n    throw new ERR_MISSING_ARGS('streams');\n  }\n\n  var error;\n  var destroys = streams.map(function (stream, i) {\n    var reading = i < streams.length - 1;\n    var writing = i > 0;\n    return destroyer(stream, reading, writing, function (err) {\n      if (!error) error = err;\n      if (err) destroys.forEach(call);\n      if (reading) return;\n      destroys.forEach(call);\n      callback(error);\n    });\n  });\n  return streams.reduce(pipe);\n}\n\nmodule.exports = pipeline;", "'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\n\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n  return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\n\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n  var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n\n  if (hwm != null) {\n    if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n      var name = isDuplex ? duplexKey : 'highWaterMark';\n      throw new ERR_INVALID_OPT_VALUE(name, hwm);\n    }\n\n    return Math.floor(hwm);\n  } // Default value\n\n\n  return state.objectMode ? 16 : 16 * 1024;\n}\n\nmodule.exports = {\n  getHighWaterMark: getHighWaterMark\n};", "module.exports = require('events').EventEmitter;\n", "(function(a,b){if(\"function\"==typeof define&&define.amd)define([],b);else if(\"undefined\"!=typeof exports)b();else{b(),a.FileSaver={exports:{}}.exports}})(this,function(){\"use strict\";function b(a,b){return\"undefined\"==typeof b?b={autoBom:!1}:\"object\"!=typeof b&&(console.warn(\"Deprecated: Expected third argument to be a object\"),b={autoBom:!b}),b.autoBom&&/^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(a.type)?new Blob([\"\\uFEFF\",a],{type:a.type}):a}function c(a,b,c){var d=new XMLHttpRequest;d.open(\"GET\",a),d.responseType=\"blob\",d.onload=function(){g(d.response,b,c)},d.onerror=function(){console.error(\"could not download file\")},d.send()}function d(a){var b=new XMLHttpRequest;b.open(\"HEAD\",a,!1);try{b.send()}catch(a){}return 200<=b.status&&299>=b.status}function e(a){try{a.dispatchEvent(new MouseEvent(\"click\"))}catch(c){var b=document.createEvent(\"MouseEvents\");b.initMouseEvent(\"click\",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),a.dispatchEvent(b)}}var f=\"object\"==typeof window&&window.window===window?window:\"object\"==typeof self&&self.self===self?self:\"object\"==typeof global&&global.global===global?global:void 0,a=f.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),g=f.saveAs||(\"object\"!=typeof window||window!==f?function(){}:(typeof HTMLAnchorElement !== \"undefined\" && \"download\" in HTMLAnchorElement.prototype)&&!a?function(b,g,h){var i=f.URL||f.webkitURL,j=document.createElement(\"a\");g=g||b.name||\"download\",j.download=g,j.rel=\"noopener\",\"string\"==typeof b?(j.href=b,j.origin===location.origin?e(j):d(j.href)?c(b,g,h):e(j,j.target=\"_blank\")):(j.href=i.createObjectURL(b),setTimeout(function(){i.revokeObjectURL(j.href)},4E4),setTimeout(function(){e(j)},0))}:\"msSaveOrOpenBlob\"in navigator?function(f,g,h){if(g=g||f.name||\"download\",\"string\"!=typeof f)navigator.msSaveOrOpenBlob(b(f,h),g);else if(d(f))c(f,g,h);else{var i=document.createElement(\"a\");i.href=f,i.target=\"_blank\",setTimeout(function(){e(i)})}}:function(b,d,e,g){if(g=g||open(\"\",\"_blank\"),g&&(g.document.title=g.document.body.innerText=\"downloading...\"),\"string\"==typeof b)return c(b,d,e);var h=\"application/octet-stream\"===b.type,i=/constructor/i.test(f.HTMLElement)||f.safari,j=/CriOS\\/[\\d]+/.test(navigator.userAgent);if((j||h&&i||a)&&\"undefined\"!=typeof FileReader){var k=new FileReader;k.onloadend=function(){var a=k.result;a=j?a:a.replace(/^data:[^;]*;/,\"data:attachment/file;\"),g?g.location.href=a:location=a,g=null},k.readAsDataURL(b)}else{var l=f.URL||f.webkitURL,m=l.createObjectURL(b);g?g.location=m:location.href=m,g=null,setTimeout(function(){l.revokeObjectURL(m)},4E4)}});f.saveAs=g.saveAs=g,\"undefined\"!=typeof module&&(module.exports=g)});\n\n//# sourceMappingURL=FileSaver.min.js.map", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/*<replacement>*/\n\nvar Buffer = require('safe-buffer').Buffer;\n/*</replacement>*/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n  encoding = '' + encoding;\n  switch (encoding && encoding.toLowerCase()) {\n    case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n      return true;\n    default:\n      return false;\n  }\n};\n\nfunction _normalizeEncoding(enc) {\n  if (!enc) return 'utf8';\n  var retried;\n  while (true) {\n    switch (enc) {\n      case 'utf8':\n      case 'utf-8':\n        return 'utf8';\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return 'utf16le';\n      case 'latin1':\n      case 'binary':\n        return 'latin1';\n      case 'base64':\n      case 'ascii':\n      case 'hex':\n        return enc;\n      default:\n        if (retried) return; // undefined\n        enc = ('' + enc).toLowerCase();\n        retried = true;\n    }\n  }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n  var nenc = _normalizeEncoding(enc);\n  if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n  return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n  this.encoding = normalizeEncoding(encoding);\n  var nb;\n  switch (this.encoding) {\n    case 'utf16le':\n      this.text = utf16Text;\n      this.end = utf16End;\n      nb = 4;\n      break;\n    case 'utf8':\n      this.fillLast = utf8FillLast;\n      nb = 4;\n      break;\n    case 'base64':\n      this.text = base64Text;\n      this.end = base64End;\n      nb = 3;\n      break;\n    default:\n      this.write = simpleWrite;\n      this.end = simpleEnd;\n      return;\n  }\n  this.lastNeed = 0;\n  this.lastTotal = 0;\n  this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n  if (buf.length === 0) return '';\n  var r;\n  var i;\n  if (this.lastNeed) {\n    r = this.fillLast(buf);\n    if (r === undefined) return '';\n    i = this.lastNeed;\n    this.lastNeed = 0;\n  } else {\n    i = 0;\n  }\n  if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n  return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n  if (this.lastNeed <= buf.length) {\n    buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n    return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n  }\n  buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n  this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n  if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n  return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n  var j = buf.length - 1;\n  if (j < i) return 0;\n  var nb = utf8CheckByte(buf[j]);\n  if (nb >= 0) {\n    if (nb > 0) self.lastNeed = nb - 1;\n    return nb;\n  }\n  if (--j < i || nb === -2) return 0;\n  nb = utf8CheckByte(buf[j]);\n  if (nb >= 0) {\n    if (nb > 0) self.lastNeed = nb - 2;\n    return nb;\n  }\n  if (--j < i || nb === -2) return 0;\n  nb = utf8CheckByte(buf[j]);\n  if (nb >= 0) {\n    if (nb > 0) {\n      if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n    }\n    return nb;\n  }\n  return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n  if ((buf[0] & 0xC0) !== 0x80) {\n    self.lastNeed = 0;\n    return '\\ufffd';\n  }\n  if (self.lastNeed > 1 && buf.length > 1) {\n    if ((buf[1] & 0xC0) !== 0x80) {\n      self.lastNeed = 1;\n      return '\\ufffd';\n    }\n    if (self.lastNeed > 2 && buf.length > 2) {\n      if ((buf[2] & 0xC0) !== 0x80) {\n        self.lastNeed = 2;\n        return '\\ufffd';\n      }\n    }\n  }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n  var p = this.lastTotal - this.lastNeed;\n  var r = utf8CheckExtraBytes(this, buf, p);\n  if (r !== undefined) return r;\n  if (this.lastNeed <= buf.length) {\n    buf.copy(this.lastChar, p, 0, this.lastNeed);\n    return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n  }\n  buf.copy(this.lastChar, p, 0, buf.length);\n  this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n  var total = utf8CheckIncomplete(this, buf, i);\n  if (!this.lastNeed) return buf.toString('utf8', i);\n  this.lastTotal = total;\n  var end = buf.length - (total - this.lastNeed);\n  buf.copy(this.lastChar, 0, end);\n  return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n  var r = buf && buf.length ? this.write(buf) : '';\n  if (this.lastNeed) return r + '\\ufffd';\n  return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n  if ((buf.length - i) % 2 === 0) {\n    var r = buf.toString('utf16le', i);\n    if (r) {\n      var c = r.charCodeAt(r.length - 1);\n      if (c >= 0xD800 && c <= 0xDBFF) {\n        this.lastNeed = 2;\n        this.lastTotal = 4;\n        this.lastChar[0] = buf[buf.length - 2];\n        this.lastChar[1] = buf[buf.length - 1];\n        return r.slice(0, -1);\n      }\n    }\n    return r;\n  }\n  this.lastNeed = 1;\n  this.lastTotal = 2;\n  this.lastChar[0] = buf[buf.length - 1];\n  return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n  var r = buf && buf.length ? this.write(buf) : '';\n  if (this.lastNeed) {\n    var end = this.lastTotal - this.lastNeed;\n    return r + this.lastChar.toString('utf16le', 0, end);\n  }\n  return r;\n}\n\nfunction base64Text(buf, i) {\n  var n = (buf.length - i) % 3;\n  if (n === 0) return buf.toString('base64', i);\n  this.lastNeed = 3 - n;\n  this.lastTotal = 3;\n  if (n === 1) {\n    this.lastChar[0] = buf[buf.length - 1];\n  } else {\n    this.lastChar[0] = buf[buf.length - 2];\n    this.lastChar[1] = buf[buf.length - 1];\n  }\n  return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n  var r = buf && buf.length ? this.write(buf) : '';\n  if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n  return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n  return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n  return buf && buf.length ? this.write(buf) : '';\n}", "var TINF_OK = 0;\nvar TINF_DATA_ERROR = -3;\n\nfunction Tree() {\n  this.table = new Uint16Array(16);   /* table of code length counts */\n  this.trans = new Uint16Array(288);  /* code -> symbol translation table */\n}\n\nfunction Data(source, dest) {\n  this.source = source;\n  this.sourceIndex = 0;\n  this.tag = 0;\n  this.bitcount = 0;\n  \n  this.dest = dest;\n  this.destLen = 0;\n  \n  this.ltree = new Tree();  /* dynamic length/symbol tree */\n  this.dtree = new Tree();  /* dynamic distance tree */\n}\n\n/* --------------------------------------------------- *\n * -- uninitialized global data (static structures) -- *\n * --------------------------------------------------- */\n\nvar sltree = new Tree();\nvar sdtree = new Tree();\n\n/* extra bits and base tables for length codes */\nvar length_bits = new Uint8Array(30);\nvar length_base = new Uint16Array(30);\n\n/* extra bits and base tables for distance codes */\nvar dist_bits = new Uint8Array(30);\nvar dist_base = new Uint16Array(30);\n\n/* special ordering of code length codes */\nvar clcidx = new Uint8Array([\n  16, 17, 18, 0, 8, 7, 9, 6,\n  10, 5, 11, 4, 12, 3, 13, 2,\n  14, 1, 15\n]);\n\n/* used by tinf_decode_trees, avoids allocations every call */\nvar code_tree = new Tree();\nvar lengths = new Uint8Array(288 + 32);\n\n/* ----------------------- *\n * -- utility functions -- *\n * ----------------------- */\n\n/* build extra bits and base tables */\nfunction tinf_build_bits_base(bits, base, delta, first) {\n  var i, sum;\n\n  /* build bits table */\n  for (i = 0; i < delta; ++i) bits[i] = 0;\n  for (i = 0; i < 30 - delta; ++i) bits[i + delta] = i / delta | 0;\n\n  /* build base table */\n  for (sum = first, i = 0; i < 30; ++i) {\n    base[i] = sum;\n    sum += 1 << bits[i];\n  }\n}\n\n/* build the fixed huffman trees */\nfunction tinf_build_fixed_trees(lt, dt) {\n  var i;\n\n  /* build fixed length tree */\n  for (i = 0; i < 7; ++i) lt.table[i] = 0;\n\n  lt.table[7] = 24;\n  lt.table[8] = 152;\n  lt.table[9] = 112;\n\n  for (i = 0; i < 24; ++i) lt.trans[i] = 256 + i;\n  for (i = 0; i < 144; ++i) lt.trans[24 + i] = i;\n  for (i = 0; i < 8; ++i) lt.trans[24 + 144 + i] = 280 + i;\n  for (i = 0; i < 112; ++i) lt.trans[24 + 144 + 8 + i] = 144 + i;\n\n  /* build fixed distance tree */\n  for (i = 0; i < 5; ++i) dt.table[i] = 0;\n\n  dt.table[5] = 32;\n\n  for (i = 0; i < 32; ++i) dt.trans[i] = i;\n}\n\n/* given an array of code lengths, build a tree */\nvar offs = new Uint16Array(16);\n\nfunction tinf_build_tree(t, lengths, off, num) {\n  var i, sum;\n\n  /* clear code length count table */\n  for (i = 0; i < 16; ++i) t.table[i] = 0;\n\n  /* scan symbol lengths, and sum code length counts */\n  for (i = 0; i < num; ++i) t.table[lengths[off + i]]++;\n\n  t.table[0] = 0;\n\n  /* compute offset table for distribution sort */\n  for (sum = 0, i = 0; i < 16; ++i) {\n    offs[i] = sum;\n    sum += t.table[i];\n  }\n\n  /* create code->symbol translation table (symbols sorted by code) */\n  for (i = 0; i < num; ++i) {\n    if (lengths[off + i]) t.trans[offs[lengths[off + i]]++] = i;\n  }\n}\n\n/* ---------------------- *\n * -- decode functions -- *\n * ---------------------- */\n\n/* get one bit from source stream */\nfunction tinf_getbit(d) {\n  /* check if tag is empty */\n  if (!d.bitcount--) {\n    /* load next tag */\n    d.tag = d.source[d.sourceIndex++];\n    d.bitcount = 7;\n  }\n\n  /* shift bit out of tag */\n  var bit = d.tag & 1;\n  d.tag >>>= 1;\n\n  return bit;\n}\n\n/* read a num bit value from a stream and add base */\nfunction tinf_read_bits(d, num, base) {\n  if (!num)\n    return base;\n\n  while (d.bitcount < 24) {\n    d.tag |= d.source[d.sourceIndex++] << d.bitcount;\n    d.bitcount += 8;\n  }\n\n  var val = d.tag & (0xffff >>> (16 - num));\n  d.tag >>>= num;\n  d.bitcount -= num;\n  return val + base;\n}\n\n/* given a data stream and a tree, decode a symbol */\nfunction tinf_decode_symbol(d, t) {\n  while (d.bitcount < 24) {\n    d.tag |= d.source[d.sourceIndex++] << d.bitcount;\n    d.bitcount += 8;\n  }\n  \n  var sum = 0, cur = 0, len = 0;\n  var tag = d.tag;\n\n  /* get more bits while code value is above sum */\n  do {\n    cur = 2 * cur + (tag & 1);\n    tag >>>= 1;\n    ++len;\n\n    sum += t.table[len];\n    cur -= t.table[len];\n  } while (cur >= 0);\n  \n  d.tag = tag;\n  d.bitcount -= len;\n\n  return t.trans[sum + cur];\n}\n\n/* given a data stream, decode dynamic trees from it */\nfunction tinf_decode_trees(d, lt, dt) {\n  var hlit, hdist, hclen;\n  var i, num, length;\n\n  /* get 5 bits HLIT (257-286) */\n  hlit = tinf_read_bits(d, 5, 257);\n\n  /* get 5 bits HDIST (1-32) */\n  hdist = tinf_read_bits(d, 5, 1);\n\n  /* get 4 bits HCLEN (4-19) */\n  hclen = tinf_read_bits(d, 4, 4);\n\n  for (i = 0; i < 19; ++i) lengths[i] = 0;\n\n  /* read code lengths for code length alphabet */\n  for (i = 0; i < hclen; ++i) {\n    /* get 3 bits code length (0-7) */\n    var clen = tinf_read_bits(d, 3, 0);\n    lengths[clcidx[i]] = clen;\n  }\n\n  /* build code length tree */\n  tinf_build_tree(code_tree, lengths, 0, 19);\n\n  /* decode code lengths for the dynamic trees */\n  for (num = 0; num < hlit + hdist;) {\n    var sym = tinf_decode_symbol(d, code_tree);\n\n    switch (sym) {\n      case 16:\n        /* copy previous code length 3-6 times (read 2 bits) */\n        var prev = lengths[num - 1];\n        for (length = tinf_read_bits(d, 2, 3); length; --length) {\n          lengths[num++] = prev;\n        }\n        break;\n      case 17:\n        /* repeat code length 0 for 3-10 times (read 3 bits) */\n        for (length = tinf_read_bits(d, 3, 3); length; --length) {\n          lengths[num++] = 0;\n        }\n        break;\n      case 18:\n        /* repeat code length 0 for 11-138 times (read 7 bits) */\n        for (length = tinf_read_bits(d, 7, 11); length; --length) {\n          lengths[num++] = 0;\n        }\n        break;\n      default:\n        /* values 0-15 represent the actual code lengths */\n        lengths[num++] = sym;\n        break;\n    }\n  }\n\n  /* build dynamic trees */\n  tinf_build_tree(lt, lengths, 0, hlit);\n  tinf_build_tree(dt, lengths, hlit, hdist);\n}\n\n/* ----------------------------- *\n * -- block inflate functions -- *\n * ----------------------------- */\n\n/* given a stream and two trees, inflate a block of data */\nfunction tinf_inflate_block_data(d, lt, dt) {\n  while (1) {\n    var sym = tinf_decode_symbol(d, lt);\n\n    /* check for end of block */\n    if (sym === 256) {\n      return TINF_OK;\n    }\n\n    if (sym < 256) {\n      d.dest[d.destLen++] = sym;\n    } else {\n      var length, dist, offs;\n      var i;\n\n      sym -= 257;\n\n      /* possibly get more bits from length code */\n      length = tinf_read_bits(d, length_bits[sym], length_base[sym]);\n\n      dist = tinf_decode_symbol(d, dt);\n\n      /* possibly get more bits from distance code */\n      offs = d.destLen - tinf_read_bits(d, dist_bits[dist], dist_base[dist]);\n\n      /* copy match */\n      for (i = offs; i < offs + length; ++i) {\n        d.dest[d.destLen++] = d.dest[i];\n      }\n    }\n  }\n}\n\n/* inflate an uncompressed block of data */\nfunction tinf_inflate_uncompressed_block(d) {\n  var length, invlength;\n  var i;\n  \n  /* unread from bitbuffer */\n  while (d.bitcount > 8) {\n    d.sourceIndex--;\n    d.bitcount -= 8;\n  }\n\n  /* get length */\n  length = d.source[d.sourceIndex + 1];\n  length = 256 * length + d.source[d.sourceIndex];\n\n  /* get one's complement of length */\n  invlength = d.source[d.sourceIndex + 3];\n  invlength = 256 * invlength + d.source[d.sourceIndex + 2];\n\n  /* check length */\n  if (length !== (~invlength & 0x0000ffff))\n    return TINF_DATA_ERROR;\n\n  d.sourceIndex += 4;\n\n  /* copy block */\n  for (i = length; i; --i)\n    d.dest[d.destLen++] = d.source[d.sourceIndex++];\n\n  /* make sure we start next block on a byte boundary */\n  d.bitcount = 0;\n\n  return TINF_OK;\n}\n\n/* inflate stream from source to dest */\nfunction tinf_uncompress(source, dest) {\n  var d = new Data(source, dest);\n  var bfinal, btype, res;\n\n  do {\n    /* read final block flag */\n    bfinal = tinf_getbit(d);\n\n    /* read block type (2 bits) */\n    btype = tinf_read_bits(d, 2, 0);\n\n    /* decompress block */\n    switch (btype) {\n      case 0:\n        /* decompress uncompressed block */\n        res = tinf_inflate_uncompressed_block(d);\n        break;\n      case 1:\n        /* decompress block with fixed huffman trees */\n        res = tinf_inflate_block_data(d, sltree, sdtree);\n        break;\n      case 2:\n        /* decompress block with dynamic huffman trees */\n        tinf_decode_trees(d, d.ltree, d.dtree);\n        res = tinf_inflate_block_data(d, d.ltree, d.dtree);\n        break;\n      default:\n        res = TINF_DATA_ERROR;\n    }\n\n    if (res !== TINF_OK)\n      throw new Error('Data error');\n\n  } while (!bfinal);\n\n  if (d.destLen < d.dest.length) {\n    if (typeof d.dest.slice === 'function')\n      return d.dest.slice(0, d.destLen);\n    else\n      return d.dest.subarray(0, d.destLen);\n  }\n  \n  return d.dest;\n}\n\n/* -------------------- *\n * -- initialization -- *\n * -------------------- */\n\n/* build fixed huffman trees */\ntinf_build_fixed_trees(sltree, sdtree);\n\n/* build extra bits and base tables */\ntinf_build_bits_base(length_bits, length_base, 4, 3);\ntinf_build_bits_base(dist_bits, dist_base, 2, 1);\n\n/* fix a special case */\nlength_bits[28] = 0;\nlength_base[28] = 258;\n\nmodule.exports = tinf_uncompress;\n", "'use strict';\n\nrequire(\"core-js/modules/es.symbol.js\");\nrequire(\"core-js/modules/es.symbol.description.js\");\nrequire(\"core-js/modules/es.symbol.iterator.js\");\nrequire(\"core-js/modules/es.symbol.to-primitive.js\");\nrequire(\"core-js/modules/es.date.to-primitive.js\");\nrequire(\"core-js/modules/es.object.to-string.js\");\nrequire(\"core-js/modules/web.dom-collections.for-each.js\");\nrequire(\"core-js/modules/es.object.keys.js\");\nrequire(\"core-js/modules/es.array.slice.js\");\nrequire(\"core-js/modules/es.array.iterator.js\");\nrequire(\"core-js/modules/es.map.js\");\nrequire(\"core-js/modules/es.string.iterator.js\");\nrequire(\"core-js/modules/web.dom-collections.iterator.js\");\nrequire(\"core-js/modules/es.array.concat.js\");\nrequire(\"core-js/modules/es.number.constructor.js\");\nrequire(\"core-js/modules/es.array.map.js\");\nrequire(\"core-js/modules/es.regexp.flags.js\");\nrequire(\"core-js/modules/es.function.name.js\");\nrequire(\"core-js/modules/es.object.assign.js\");\nrequire(\"core-js/modules/es.string.from-code-point.js\");\nrequire(\"core-js/modules/es.promise.js\");\nrequire(\"core-js/modules/es.object.get-own-property-descriptor.js\");\nrequire(\"core-js/modules/es.set.js\");\nrequire(\"core-js/modules/es.array.splice.js\");\nrequire(\"core-js/modules/es.string.repeat.js\");\nrequire(\"core-js/modules/es.array.sort.js\");\nrequire(\"core-js/modules/es.regexp.exec.js\");\nrequire(\"core-js/modules/es.string.match.js\");\nrequire(\"core-js/modules/es.array.from.js\");\nrequire(\"core-js/modules/es.array.join.js\");\nrequire(\"core-js/modules/es.object.freeze.js\");\nrequire(\"core-js/modules/es.array.fill.js\");\nrequire(\"core-js/modules/es.number.epsilon.js\");\nrequire(\"core-js/modules/es.typed-array.uint16-array.js\");\nrequire(\"core-js/modules/es.typed-array.copy-within.js\");\nrequire(\"core-js/modules/es.typed-array.every.js\");\nrequire(\"core-js/modules/es.typed-array.fill.js\");\nrequire(\"core-js/modules/es.typed-array.filter.js\");\nrequire(\"core-js/modules/es.typed-array.find.js\");\nrequire(\"core-js/modules/es.typed-array.find-index.js\");\nrequire(\"core-js/modules/es.typed-array.for-each.js\");\nrequire(\"core-js/modules/es.typed-array.includes.js\");\nrequire(\"core-js/modules/es.typed-array.index-of.js\");\nrequire(\"core-js/modules/es.typed-array.iterator.js\");\nrequire(\"core-js/modules/es.typed-array.join.js\");\nrequire(\"core-js/modules/es.typed-array.last-index-of.js\");\nrequire(\"core-js/modules/es.typed-array.map.js\");\nrequire(\"core-js/modules/es.typed-array.reduce.js\");\nrequire(\"core-js/modules/es.typed-array.reduce-right.js\");\nrequire(\"core-js/modules/es.typed-array.reverse.js\");\nrequire(\"core-js/modules/es.typed-array.set.js\");\nrequire(\"core-js/modules/es.typed-array.slice.js\");\nrequire(\"core-js/modules/es.typed-array.some.js\");\nrequire(\"core-js/modules/es.typed-array.sort.js\");\nrequire(\"core-js/modules/es.typed-array.subarray.js\");\nrequire(\"core-js/modules/es.typed-array.to-locale-string.js\");\nrequire(\"core-js/modules/es.typed-array.to-string.js\");\nrequire(\"core-js/modules/es.typed-array.int16-array.js\");\nrequire(\"core-js/modules/es.regexp.to-string.js\");\nrequire(\"core-js/modules/es.string.trim.js\");\nvar _;\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\nfunction _interopDefault(ex) {\n  return ex && typeof ex === 'object' && 'default' in ex ? ex['default'] : ex;\n}\nvar r = _interopDefault(require('@foliojs-fork/restructure'));\nvar utils = require('@foliojs-fork/restructure/src/utils');\nvar isEqual = _interopDefault(require('deep-equal'));\nvar unicode = _interopDefault(require('unicode-properties'));\nvar UnicodeTrie = _interopDefault(require('unicode-trie'));\nvar StateMachine = _interopDefault(require('dfa'));\nvar cloneDeep = _interopDefault(require('clone'));\nvar inflate = _interopDefault(require('tiny-inflate'));\nvar brotli = _interopDefault(require('brotli/decompress'));\nvar fs = require('fs');\nvar fontkit = {};\nfontkit.logErrors = false;\nvar formats = [];\nfontkit.registerFormat = function (format) {\n  formats.push(format);\n};\nfontkit.openSync = function (filename, postscriptName) {\n  var buffer = fs.readFileSync(filename);\n  return fontkit.create(buffer, postscriptName);\n};\nfontkit.open = function (filename, postscriptName, callback) {\n  if (typeof postscriptName === 'function') {\n    callback = postscriptName;\n    postscriptName = null;\n  }\n  fs.readFile(filename, function (err, buffer) {\n    if (err) {\n      return callback(err);\n    }\n    try {\n      var font = fontkit.create(buffer, postscriptName);\n    } catch (e) {\n      return callback(e);\n    }\n    return callback(null, font);\n  });\n  return;\n};\nfontkit.create = function (buffer, postscriptName) {\n  for (var i = 0; i < formats.length; i++) {\n    var format = formats[i];\n    if (format.probe(buffer)) {\n      var font = new format(new r.DecodeStream(buffer));\n      if (postscriptName) {\n        return font.getFont(postscriptName);\n      }\n      return font;\n    }\n  }\n  throw new Error('Unknown font format');\n};\nfontkit.defaultLanguage = 'en';\nfontkit.setDefaultLanguage = function (lang) {\n  if (lang === void 0) {\n    lang = 'en';\n  }\n  fontkit.defaultLanguage = lang;\n};\nfunction _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n  return obj;\n}\nfunction _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n  var desc = {};\n  Object.keys(descriptor).forEach(function (key) {\n    desc[key] = descriptor[key];\n  });\n  desc.enumerable = !!desc.enumerable;\n  desc.configurable = !!desc.configurable;\n  if ('value' in desc || desc.initializer) {\n    desc.writable = true;\n  }\n  desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n    return decorator(target, property, desc) || desc;\n  }, desc);\n  if (context && desc.initializer !== void 0) {\n    desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n    desc.initializer = undefined;\n  }\n  if (desc.initializer === void 0) {\n    Object.defineProperty(target, property, desc);\n    desc = null;\n  }\n  return desc;\n}\n\n/**\r\n * This decorator caches the results of a getter or method such that\r\n * the results are lazily computed once, and then cached.\r\n * @private\r\n */\nfunction cache(target, key, descriptor) {\n  if (descriptor.get) {\n    var get = descriptor.get;\n    descriptor.get = function () {\n      var value = get.call(this);\n      Object.defineProperty(this, key, {\n        value: value\n      });\n      return value;\n    };\n  } else if (typeof descriptor.value === 'function') {\n    var fn = descriptor.value;\n    return {\n      get: function get() {\n        var cache = new Map();\n        function memoized() {\n          for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n            args[_key] = arguments[_key];\n          }\n          var key = args.length > 0 ? args[0] : 'value';\n          if (cache.has(key)) {\n            return cache.get(key);\n          }\n          var result = fn.apply(this, args);\n          cache.set(key, result);\n          return result;\n        }\n        Object.defineProperty(this, key, {\n          value: memoized\n        });\n        return memoized;\n      }\n    };\n  }\n}\nvar SubHeader = new r.Struct({\n  firstCode: r.uint16,\n  entryCount: r.uint16,\n  idDelta: r.int16,\n  idRangeOffset: r.uint16\n});\nvar CmapGroup = new r.Struct({\n  startCharCode: r.uint32,\n  endCharCode: r.uint32,\n  glyphID: r.uint32\n});\nvar UnicodeValueRange = new r.Struct({\n  startUnicodeValue: r.uint24,\n  additionalCount: r.uint8\n});\nvar UVSMapping = new r.Struct({\n  unicodeValue: r.uint24,\n  glyphID: r.uint16\n});\nvar DefaultUVS = new r.Array(UnicodeValueRange, r.uint32);\nvar NonDefaultUVS = new r.Array(UVSMapping, r.uint32);\nvar VarSelectorRecord = new r.Struct({\n  varSelector: r.uint24,\n  defaultUVS: new r.Pointer(r.uint32, DefaultUVS, {\n    type: 'parent'\n  }),\n  nonDefaultUVS: new r.Pointer(r.uint32, NonDefaultUVS, {\n    type: 'parent'\n  })\n});\nvar CmapSubtable = new r.VersionedStruct(r.uint16, {\n  0: {\n    // Byte encoding\n    length: r.uint16,\n    // Total table length in bytes (set to 262 for format 0)\n    language: r.uint16,\n    // Language code for this encoding subtable, or zero if language-independent\n    codeMap: new r.LazyArray(r.uint8, 256)\n  },\n  2: {\n    // High-byte mapping (CJK)\n    length: r.uint16,\n    language: r.uint16,\n    subHeaderKeys: new r.Array(r.uint16, 256),\n    subHeaderCount: function subHeaderCount(t) {\n      return Math.max.apply(Math, t.subHeaderKeys);\n    },\n    subHeaders: new r.LazyArray(SubHeader, 'subHeaderCount'),\n    glyphIndexArray: new r.LazyArray(r.uint16, 'subHeaderCount')\n  },\n  4: {\n    // Segment mapping to delta values\n    length: r.uint16,\n    // Total table length in bytes\n    language: r.uint16,\n    // Language code\n    segCountX2: r.uint16,\n    segCount: function segCount(t) {\n      return t.segCountX2 >> 1;\n    },\n    searchRange: r.uint16,\n    entrySelector: r.uint16,\n    rangeShift: r.uint16,\n    endCode: new r.LazyArray(r.uint16, 'segCount'),\n    reservedPad: new r.Reserved(r.uint16),\n    // This value should be zero\n    startCode: new r.LazyArray(r.uint16, 'segCount'),\n    idDelta: new r.LazyArray(r.int16, 'segCount'),\n    idRangeOffset: new r.LazyArray(r.uint16, 'segCount'),\n    glyphIndexArray: new r.LazyArray(r.uint16, function (t) {\n      return (t.length - t._currentOffset) / 2;\n    })\n  },\n  6: {\n    // Trimmed table\n    length: r.uint16,\n    language: r.uint16,\n    firstCode: r.uint16,\n    entryCount: r.uint16,\n    glyphIndices: new r.LazyArray(r.uint16, 'entryCount')\n  },\n  8: {\n    // mixed 16-bit and 32-bit coverage\n    reserved: new r.Reserved(r.uint16),\n    length: r.uint32,\n    language: r.uint16,\n    is32: new r.LazyArray(r.uint8, 8192),\n    nGroups: r.uint32,\n    groups: new r.LazyArray(CmapGroup, 'nGroups')\n  },\n  10: {\n    // Trimmed Array\n    reserved: new r.Reserved(r.uint16),\n    length: r.uint32,\n    language: r.uint32,\n    firstCode: r.uint32,\n    entryCount: r.uint32,\n    glyphIndices: new r.LazyArray(r.uint16, 'numChars')\n  },\n  12: {\n    // Segmented coverage\n    reserved: new r.Reserved(r.uint16),\n    length: r.uint32,\n    language: r.uint32,\n    nGroups: r.uint32,\n    groups: new r.LazyArray(CmapGroup, 'nGroups')\n  },\n  13: {\n    // Many-to-one range mappings (same as 12 except for group.startGlyphID)\n    reserved: new r.Reserved(r.uint16),\n    length: r.uint32,\n    language: r.uint32,\n    nGroups: r.uint32,\n    groups: new r.LazyArray(CmapGroup, 'nGroups')\n  },\n  14: {\n    // Unicode Variation Sequences\n    length: r.uint32,\n    numRecords: r.uint32,\n    varSelectors: new r.LazyArray(VarSelectorRecord, 'numRecords')\n  }\n});\nvar CmapEntry = new r.Struct({\n  platformID: r.uint16,\n  // Platform identifier\n  encodingID: r.uint16,\n  // Platform-specific encoding identifier\n  table: new r.Pointer(r.uint32, CmapSubtable, {\n    type: 'parent',\n    lazy: true\n  })\n}); // character to glyph mapping\n\nvar cmap = new r.Struct({\n  version: r.uint16,\n  numSubtables: r.uint16,\n  tables: new r.Array(CmapEntry, 'numSubtables')\n});\nvar head = new r.Struct({\n  version: r.int32,\n  // 0x00010000 (version 1.0)\n  revision: r.int32,\n  // set by font manufacturer\n  checkSumAdjustment: r.uint32,\n  magicNumber: r.uint32,\n  // set to 0x5F0F3CF5\n  flags: r.uint16,\n  unitsPerEm: r.uint16,\n  // range from 64 to 16384\n  created: new r.Array(r.int32, 2),\n  modified: new r.Array(r.int32, 2),\n  xMin: r.int16,\n  // for all glyph bounding boxes\n  yMin: r.int16,\n  // for all glyph bounding boxes\n  xMax: r.int16,\n  // for all glyph bounding boxes\n  yMax: r.int16,\n  // for all glyph bounding boxes\n  macStyle: new r.Bitfield(r.uint16, ['bold', 'italic', 'underline', 'outline', 'shadow', 'condensed', 'extended']),\n  lowestRecPPEM: r.uint16,\n  // smallest readable size in pixels\n  fontDirectionHint: r.int16,\n  indexToLocFormat: r.int16,\n  // 0 for short offsets, 1 for long\n  glyphDataFormat: r.int16 // 0 for current format\n});\n\nvar hhea = new r.Struct({\n  version: r.int32,\n  ascent: r.int16,\n  // Distance from baseline of highest ascender\n  descent: r.int16,\n  // Distance from baseline of lowest descender\n  lineGap: r.int16,\n  // Typographic line gap\n  advanceWidthMax: r.uint16,\n  // Maximum advance width value in 'hmtx' table\n  minLeftSideBearing: r.int16,\n  // Maximum advance width value in 'hmtx' table\n  minRightSideBearing: r.int16,\n  // Minimum right sidebearing value\n  xMaxExtent: r.int16,\n  caretSlopeRise: r.int16,\n  // Used to calculate the slope of the cursor (rise/run); 1 for vertical\n  caretSlopeRun: r.int16,\n  // 0 for vertical\n  caretOffset: r.int16,\n  // Set to 0 for non-slanted fonts\n  reserved: new r.Reserved(r.int16, 4),\n  metricDataFormat: r.int16,\n  // 0 for current format\n  numberOfMetrics: r.uint16 // Number of advance widths in 'hmtx' table\n});\n\nvar HmtxEntry = new r.Struct({\n  advance: r.uint16,\n  bearing: r.int16\n});\nvar hmtx = new r.Struct({\n  metrics: new r.LazyArray(HmtxEntry, function (t) {\n    return t.parent.hhea.numberOfMetrics;\n  }),\n  bearings: new r.LazyArray(r.int16, function (t) {\n    return t.parent.maxp.numGlyphs - t.parent.hhea.numberOfMetrics;\n  })\n});\nvar maxp = new r.Struct({\n  version: r.int32,\n  numGlyphs: r.uint16,\n  // The number of glyphs in the font\n  maxPoints: r.uint16,\n  // Maximum points in a non-composite glyph\n  maxContours: r.uint16,\n  // Maximum contours in a non-composite glyph\n  maxComponentPoints: r.uint16,\n  // Maximum points in a composite glyph\n  maxComponentContours: r.uint16,\n  // Maximum contours in a composite glyph\n  maxZones: r.uint16,\n  // 1 if instructions do not use the twilight zone, 2 otherwise\n  maxTwilightPoints: r.uint16,\n  // Maximum points used in Z0\n  maxStorage: r.uint16,\n  // Number of Storage Area locations\n  maxFunctionDefs: r.uint16,\n  // Number of FDEFs\n  maxInstructionDefs: r.uint16,\n  // Number of IDEFs\n  maxStackElements: r.uint16,\n  // Maximum stack depth\n  maxSizeOfInstructions: r.uint16,\n  // Maximum byte count for glyph instructions\n  maxComponentElements: r.uint16,\n  // Maximum number of components referenced at “top level” for any composite glyph\n  maxComponentDepth: r.uint16 // Maximum levels of recursion; 1 for simple components\n});\n\n/**\r\n * Gets an encoding name from platform, encoding, and language ids.\r\n * Returned encoding names can be used in iconv-lite to decode text.\r\n */\nfunction getEncoding(platformID, encodingID, languageID) {\n  if (languageID === void 0) {\n    languageID = 0;\n  }\n  if (platformID === 1 && MAC_LANGUAGE_ENCODINGS[languageID]) {\n    return MAC_LANGUAGE_ENCODINGS[languageID];\n  }\n  return ENCODINGS[platformID][encodingID];\n} // Map of platform ids to encoding ids.\n\nvar ENCODINGS = [\n// unicode\n['utf16be', 'utf16be', 'utf16be', 'utf16be', 'utf16be', 'utf16be'],\n// macintosh\n// Mappings available at http://unicode.org/Public/MAPPINGS/VENDORS/APPLE/\n// 0\tRoman                 17\tMalayalam\n// 1\tJapanese\t            18\tSinhalese\n// 2\tTraditional Chinese\t  19\tBurmese\n// 3\tKorean\t              20\tKhmer\n// 4\tArabic\t              21\tThai\n// 5\tHebrew\t              22\tLaotian\n// 6\tGreek\t                23\tGeorgian\n// 7\tRussian\t              24\tArmenian\n// 8\tRSymbol\t              25\tSimplified Chinese\n// 9\tDevanagari\t          26\tTibetan\n// 10\tGurmukhi\t            27\tMongolian\n// 11\tGujarati\t            28\tGeez\n// 12\tOriya\t                29\tSlavic\n// 13\tBengali\t              30\tVietnamese\n// 14\tTamil\t                31\tSindhi\n// 15\tTelugu\t              32\t(Uninterpreted)\n// 16\tKannada\n['macroman', 'shift-jis', 'big5', 'euc-kr', 'iso-8859-6', 'iso-8859-8', 'macgreek', 'maccyrillic', 'symbol', 'Devanagari', 'Gurmukhi', 'Gujarati', 'Oriya', 'Bengali', 'Tamil', 'Telugu', 'Kannada', 'Malayalam', 'Sinhalese', 'Burmese', 'Khmer', 'macthai', 'Laotian', 'Georgian', 'Armenian', 'gb-2312-80', 'Tibetan', 'Mongolian', 'Geez', 'maccenteuro', 'Vietnamese', 'Sindhi'],\n// ISO (deprecated)\n['ascii'],\n// windows\n// Docs here: http://msdn.microsoft.com/en-us/library/system.text.encoding(v=vs.110).aspx\n['symbol', 'utf16be', 'shift-jis', 'gb18030', 'big5', 'wansung', 'johab', null, null, null, 'utf16be']]; // Overrides for Mac scripts by language id.\n// See http://unicode.org/Public/MAPPINGS/VENDORS/APPLE/Readme.txt\n\nvar MAC_LANGUAGE_ENCODINGS = {\n  15: 'maciceland',\n  17: 'macturkish',\n  18: 'maccroatian',\n  24: 'maccenteuro',\n  25: 'maccenteuro',\n  26: 'maccenteuro',\n  27: 'maccenteuro',\n  28: 'maccenteuro',\n  30: 'maciceland',\n  37: 'macromania',\n  38: 'maccenteuro',\n  39: 'maccenteuro',\n  40: 'maccenteuro',\n  143: 'macinuit',\n  // Unsupported by iconv-lite\n  146: 'macgaelic' // Unsupported by iconv-lite\n}; // Map of platform ids to BCP-47 language codes.\n\nvar LANGUAGES = [\n// unicode\n[], {\n  // macintosh\n  0: 'en',\n  30: 'fo',\n  60: 'ks',\n  90: 'rw',\n  1: 'fr',\n  31: 'fa',\n  61: 'ku',\n  91: 'rn',\n  2: 'de',\n  32: 'ru',\n  62: 'sd',\n  92: 'ny',\n  3: 'it',\n  33: 'zh',\n  63: 'bo',\n  93: 'mg',\n  4: 'nl',\n  34: 'nl-BE',\n  64: 'ne',\n  94: 'eo',\n  5: 'sv',\n  35: 'ga',\n  65: 'sa',\n  128: 'cy',\n  6: 'es',\n  36: 'sq',\n  66: 'mr',\n  129: 'eu',\n  7: 'da',\n  37: 'ro',\n  67: 'bn',\n  130: 'ca',\n  8: 'pt',\n  38: 'cz',\n  68: 'as',\n  131: 'la',\n  9: 'no',\n  39: 'sk',\n  69: 'gu',\n  132: 'qu',\n  10: 'he',\n  40: 'si',\n  70: 'pa',\n  133: 'gn',\n  11: 'ja',\n  41: 'yi',\n  71: 'or',\n  134: 'ay',\n  12: 'ar',\n  42: 'sr',\n  72: 'ml',\n  135: 'tt',\n  13: 'fi',\n  43: 'mk',\n  73: 'kn',\n  136: 'ug',\n  14: 'el',\n  44: 'bg',\n  74: 'ta',\n  137: 'dz',\n  15: 'is',\n  45: 'uk',\n  75: 'te',\n  138: 'jv',\n  16: 'mt',\n  46: 'be',\n  76: 'si',\n  139: 'su',\n  17: 'tr',\n  47: 'uz',\n  77: 'my',\n  140: 'gl',\n  18: 'hr',\n  48: 'kk',\n  78: 'km',\n  141: 'af',\n  19: 'zh-Hant',\n  49: 'az-Cyrl',\n  79: 'lo',\n  142: 'br',\n  20: 'ur',\n  50: 'az-Arab',\n  80: 'vi',\n  143: 'iu',\n  21: 'hi',\n  51: 'hy',\n  81: 'id',\n  144: 'gd',\n  22: 'th',\n  52: 'ka',\n  82: 'tl',\n  145: 'gv',\n  23: 'ko',\n  53: 'mo',\n  83: 'ms',\n  146: 'ga',\n  24: 'lt',\n  54: 'ky',\n  84: 'ms-Arab',\n  147: 'to',\n  25: 'pl',\n  55: 'tg',\n  85: 'am',\n  148: 'el-polyton',\n  26: 'hu',\n  56: 'tk',\n  86: 'ti',\n  149: 'kl',\n  27: 'es',\n  57: 'mn-CN',\n  87: 'om',\n  150: 'az',\n  28: 'lv',\n  58: 'mn',\n  88: 'so',\n  151: 'nn',\n  29: 'se',\n  59: 'ps',\n  89: 'sw'\n},\n// ISO (deprecated)\n[], {\n  // windows                                        \n  0x0436: 'af',\n  0x4009: 'en-IN',\n  0x0487: 'rw',\n  0x0432: 'tn',\n  0x041C: 'sq',\n  0x1809: 'en-IE',\n  0x0441: 'sw',\n  0x045B: 'si',\n  0x0484: 'gsw',\n  0x2009: 'en-JM',\n  0x0457: 'kok',\n  0x041B: 'sk',\n  0x045E: 'am',\n  0x4409: 'en-MY',\n  0x0412: 'ko',\n  0x0424: 'sl',\n  0x1401: 'ar-DZ',\n  0x1409: 'en-NZ',\n  0x0440: 'ky',\n  0x2C0A: 'es-AR',\n  0x3C01: 'ar-BH',\n  0x3409: 'en-PH',\n  0x0454: 'lo',\n  0x400A: 'es-BO',\n  0x0C01: 'ar',\n  0x4809: 'en-SG',\n  0x0426: 'lv',\n  0x340A: 'es-CL',\n  0x0801: 'ar-IQ',\n  0x1C09: 'en-ZA',\n  0x0427: 'lt',\n  0x240A: 'es-CO',\n  0x2C01: 'ar-JO',\n  0x2C09: 'en-TT',\n  0x082E: 'dsb',\n  0x140A: 'es-CR',\n  0x3401: 'ar-KW',\n  0x0809: 'en-GB',\n  0x046E: 'lb',\n  0x1C0A: 'es-DO',\n  0x3001: 'ar-LB',\n  0x0409: 'en',\n  0x042F: 'mk',\n  0x300A: 'es-EC',\n  0x1001: 'ar-LY',\n  0x3009: 'en-ZW',\n  0x083E: 'ms-BN',\n  0x440A: 'es-SV',\n  0x1801: 'ary',\n  0x0425: 'et',\n  0x043E: 'ms',\n  0x100A: 'es-GT',\n  0x2001: 'ar-OM',\n  0x0438: 'fo',\n  0x044C: 'ml',\n  0x480A: 'es-HN',\n  0x4001: 'ar-QA',\n  0x0464: 'fil',\n  0x043A: 'mt',\n  0x080A: 'es-MX',\n  0x0401: 'ar-SA',\n  0x040B: 'fi',\n  0x0481: 'mi',\n  0x4C0A: 'es-NI',\n  0x2801: 'ar-SY',\n  0x080C: 'fr-BE',\n  0x047A: 'arn',\n  0x180A: 'es-PA',\n  0x1C01: 'aeb',\n  0x0C0C: 'fr-CA',\n  0x044E: 'mr',\n  0x3C0A: 'es-PY',\n  0x3801: 'ar-AE',\n  0x040C: 'fr',\n  0x047C: 'moh',\n  0x280A: 'es-PE',\n  0x2401: 'ar-YE',\n  0x140C: 'fr-LU',\n  0x0450: 'mn',\n  0x500A: 'es-PR',\n  0x042B: 'hy',\n  0x180C: 'fr-MC',\n  0x0850: 'mn-CN',\n  0x0C0A: 'es',\n  0x044D: 'as',\n  0x100C: 'fr-CH',\n  0x0461: 'ne',\n  0x040A: 'es',\n  0x082C: 'az-Cyrl',\n  0x0462: 'fy',\n  0x0414: 'nb',\n  0x540A: 'es-US',\n  0x042C: 'az',\n  0x0456: 'gl',\n  0x0814: 'nn',\n  0x380A: 'es-UY',\n  0x046D: 'ba',\n  0x0437: 'ka',\n  0x0482: 'oc',\n  0x200A: 'es-VE',\n  0x042D: 'eu',\n  0x0C07: 'de-AT',\n  0x0448: 'or',\n  0x081D: 'sv-FI',\n  0x0423: 'be',\n  0x0407: 'de',\n  0x0463: 'ps',\n  0x041D: 'sv',\n  0x0845: 'bn',\n  0x1407: 'de-LI',\n  0x0415: 'pl',\n  0x045A: 'syr',\n  0x0445: 'bn-IN',\n  0x1007: 'de-LU',\n  0x0416: 'pt',\n  0x0428: 'tg',\n  0x201A: 'bs-Cyrl',\n  0x0807: 'de-CH',\n  0x0816: 'pt-PT',\n  0x085F: 'tzm',\n  0x141A: 'bs',\n  0x0408: 'el',\n  0x0446: 'pa',\n  0x0449: 'ta',\n  0x047E: 'br',\n  0x046F: 'kl',\n  0x046B: 'qu-BO',\n  0x0444: 'tt',\n  0x0402: 'bg',\n  0x0447: 'gu',\n  0x086B: 'qu-EC',\n  0x044A: 'te',\n  0x0403: 'ca',\n  0x0468: 'ha',\n  0x0C6B: 'qu',\n  0x041E: 'th',\n  0x0C04: 'zh-HK',\n  0x040D: 'he',\n  0x0418: 'ro',\n  0x0451: 'bo',\n  0x1404: 'zh-MO',\n  0x0439: 'hi',\n  0x0417: 'rm',\n  0x041F: 'tr',\n  0x0804: 'zh',\n  0x040E: 'hu',\n  0x0419: 'ru',\n  0x0442: 'tk',\n  0x1004: 'zh-SG',\n  0x040F: 'is',\n  0x243B: 'smn',\n  0x0480: 'ug',\n  0x0404: 'zh-TW',\n  0x0470: 'ig',\n  0x103B: 'smj-NO',\n  0x0422: 'uk',\n  0x0483: 'co',\n  0x0421: 'id',\n  0x143B: 'smj',\n  0x042E: 'hsb',\n  0x041A: 'hr',\n  0x045D: 'iu',\n  0x0C3B: 'se-FI',\n  0x0420: 'ur',\n  0x101A: 'hr-BA',\n  0x085D: 'iu-Latn',\n  0x043B: 'se',\n  0x0843: 'uz-Cyrl',\n  0x0405: 'cs',\n  0x083C: 'ga',\n  0x083B: 'se-SE',\n  0x0443: 'uz',\n  0x0406: 'da',\n  0x0434: 'xh',\n  0x203B: 'sms',\n  0x042A: 'vi',\n  0x048C: 'prs',\n  0x0435: 'zu',\n  0x183B: 'sma-NO',\n  0x0452: 'cy',\n  0x0465: 'dv',\n  0x0410: 'it',\n  0x1C3B: 'sms',\n  0x0488: 'wo',\n  0x0813: 'nl-BE',\n  0x0810: 'it-CH',\n  0x044F: 'sa',\n  0x0485: 'sah',\n  0x0413: 'nl',\n  0x0411: 'ja',\n  0x1C1A: 'sr-Cyrl-BA',\n  0x0478: 'ii',\n  0x0C09: 'en-AU',\n  0x044B: 'kn',\n  0x0C1A: 'sr',\n  0x046A: 'yo',\n  0x2809: 'en-BZ',\n  0x043F: 'kk',\n  0x181A: 'sr-Latn-BA',\n  0x1009: 'en-CA',\n  0x0453: 'km',\n  0x081A: 'sr-Latn',\n  0x2409: 'en-029',\n  0x0486: 'quc',\n  0x046C: 'nso'\n}];\nvar NameRecord = new r.Struct({\n  platformID: r.uint16,\n  encodingID: r.uint16,\n  languageID: r.uint16,\n  nameID: r.uint16,\n  length: r.uint16,\n  string: new r.Pointer(r.uint16, new r.String('length', function (t) {\n    return getEncoding(t.platformID, t.encodingID, t.languageID);\n  }), {\n    type: 'parent',\n    relativeTo: function relativeTo(ctx) {\n      return ctx.parent.stringOffset;\n    },\n    allowNull: false\n  })\n});\nvar LangTagRecord = new r.Struct({\n  length: r.uint16,\n  tag: new r.Pointer(r.uint16, new r.String('length', 'utf16be'), {\n    type: 'parent',\n    relativeTo: function relativeTo(ctx) {\n      return ctx.stringOffset;\n    }\n  })\n});\nvar NameTable = new r.VersionedStruct(r.uint16, {\n  0: {\n    count: r.uint16,\n    stringOffset: r.uint16,\n    records: new r.Array(NameRecord, 'count')\n  },\n  1: {\n    count: r.uint16,\n    stringOffset: r.uint16,\n    records: new r.Array(NameRecord, 'count'),\n    langTagCount: r.uint16,\n    langTags: new r.Array(LangTagRecord, 'langTagCount')\n  }\n});\nvar NAMES = ['copyright', 'fontFamily', 'fontSubfamily', 'uniqueSubfamily', 'fullName', 'version', 'postscriptName',\n// Note: A font may have only one PostScript name and that name must be ASCII.\n'trademark', 'manufacturer', 'designer', 'description', 'vendorURL', 'designerURL', 'license', 'licenseURL', null,\n// reserved\n'preferredFamily', 'preferredSubfamily', 'compatibleFull', 'sampleText', 'postscriptCIDFontName', 'wwsFamilyName', 'wwsSubfamilyName'];\nNameTable.process = function (stream) {\n  var records = {};\n  for (var _iterator = _createForOfIteratorHelperLoose(this.records), _step; !(_step = _iterator()).done;) {\n    var record = _step.value;\n    // find out what language this is for\n    var language = LANGUAGES[record.platformID][record.languageID];\n    if (language == null && this.langTags != null && record.languageID >= 0x8000) {\n      language = this.langTags[record.languageID - 0x8000].tag;\n    }\n    if (language == null) {\n      language = record.platformID + '-' + record.languageID;\n    } // if the nameID is >= 256, it is a font feature record (AAT)\n\n    var key = record.nameID >= 256 ? 'fontFeatures' : NAMES[record.nameID] || record.nameID;\n    if (records[key] == null) {\n      records[key] = {};\n    }\n    var obj = records[key];\n    if (record.nameID >= 256) {\n      obj = obj[record.nameID] || (obj[record.nameID] = {});\n    }\n    if (typeof record.string === 'string' || typeof obj[language] !== 'string') {\n      obj[language] = record.string;\n    }\n  }\n  this.records = records;\n};\nNameTable.preEncode = function () {\n  if (Array.isArray(this.records)) return;\n  this.version = 0;\n  var records = [];\n  for (var key in this.records) {\n    var val = this.records[key];\n    if (key === 'fontFeatures') continue;\n    records.push({\n      platformID: 3,\n      encodingID: 1,\n      languageID: 0x409,\n      nameID: NAMES.indexOf(key),\n      length: Buffer.byteLength(val.en, 'utf16le'),\n      string: val.en\n    });\n    if (key === 'postscriptName') {\n      records.push({\n        platformID: 1,\n        encodingID: 0,\n        languageID: 0,\n        nameID: NAMES.indexOf(key),\n        length: val.en.length,\n        string: val.en\n      });\n    }\n  }\n  this.records = records;\n  this.count = records.length;\n  this.stringOffset = NameTable.size(this, null, false);\n};\nvar OS2 = new r.VersionedStruct(r.uint16, {\n  header: {\n    xAvgCharWidth: r.int16,\n    // average weighted advance width of lower case letters and space\n    usWeightClass: r.uint16,\n    // visual weight of stroke in glyphs\n    usWidthClass: r.uint16,\n    // relative change from the normal aspect ratio (width to height ratio)\n    fsType: new r.Bitfield(r.uint16, [\n    // Indicates font embedding licensing rights\n    null, 'noEmbedding', 'viewOnly', 'editable', null, null, null, null, 'noSubsetting', 'bitmapOnly']),\n    ySubscriptXSize: r.int16,\n    // recommended horizontal size in pixels for subscripts\n    ySubscriptYSize: r.int16,\n    // recommended vertical size in pixels for subscripts\n    ySubscriptXOffset: r.int16,\n    // recommended horizontal offset for subscripts\n    ySubscriptYOffset: r.int16,\n    // recommended vertical offset form the baseline for subscripts\n    ySuperscriptXSize: r.int16,\n    // recommended horizontal size in pixels for superscripts\n    ySuperscriptYSize: r.int16,\n    // recommended vertical size in pixels for superscripts\n    ySuperscriptXOffset: r.int16,\n    // recommended horizontal offset for superscripts\n    ySuperscriptYOffset: r.int16,\n    // recommended vertical offset from the baseline for superscripts\n    yStrikeoutSize: r.int16,\n    // width of the strikeout stroke\n    yStrikeoutPosition: r.int16,\n    // position of the strikeout stroke relative to the baseline\n    sFamilyClass: r.int16,\n    // classification of font-family design\n    panose: new r.Array(r.uint8, 10),\n    // describe the visual characteristics of a given typeface\n    ulCharRange: new r.Array(r.uint32, 4),\n    vendorID: new r.String(4),\n    // four character identifier for the font vendor\n    fsSelection: new r.Bitfield(r.uint16, [\n    // bit field containing information about the font\n    'italic', 'underscore', 'negative', 'outlined', 'strikeout', 'bold', 'regular', 'useTypoMetrics', 'wws', 'oblique']),\n    usFirstCharIndex: r.uint16,\n    // The minimum Unicode index in this font\n    usLastCharIndex: r.uint16 // The maximum Unicode index in this font\n  },\n\n  // The Apple version of this table ends here, but the Microsoft one continues on...\n  0: {},\n  1: {\n    typoAscender: r.int16,\n    typoDescender: r.int16,\n    typoLineGap: r.int16,\n    winAscent: r.uint16,\n    winDescent: r.uint16,\n    codePageRange: new r.Array(r.uint32, 2)\n  },\n  2: {\n    // these should be common with version 1 somehow\n    typoAscender: r.int16,\n    typoDescender: r.int16,\n    typoLineGap: r.int16,\n    winAscent: r.uint16,\n    winDescent: r.uint16,\n    codePageRange: new r.Array(r.uint32, 2),\n    xHeight: r.int16,\n    capHeight: r.int16,\n    defaultChar: r.uint16,\n    breakChar: r.uint16,\n    maxContent: r.uint16\n  },\n  5: {\n    typoAscender: r.int16,\n    typoDescender: r.int16,\n    typoLineGap: r.int16,\n    winAscent: r.uint16,\n    winDescent: r.uint16,\n    codePageRange: new r.Array(r.uint32, 2),\n    xHeight: r.int16,\n    capHeight: r.int16,\n    defaultChar: r.uint16,\n    breakChar: r.uint16,\n    maxContent: r.uint16,\n    usLowerOpticalPointSize: r.uint16,\n    usUpperOpticalPointSize: r.uint16\n  }\n});\nvar versions = OS2.versions;\nversions[3] = versions[4] = versions[2];\nvar post = new r.VersionedStruct(r.fixed32, {\n  header: {\n    // these fields exist at the top of all versions\n    italicAngle: r.fixed32,\n    // Italic angle in counter-clockwise degrees from the vertical.\n    underlinePosition: r.int16,\n    // Suggested distance of the top of the underline from the baseline\n    underlineThickness: r.int16,\n    // Suggested values for the underline thickness\n    isFixedPitch: r.uint32,\n    // Whether the font is monospaced\n    minMemType42: r.uint32,\n    // Minimum memory usage when a TrueType font is downloaded as a Type 42 font\n    maxMemType42: r.uint32,\n    // Maximum memory usage when a TrueType font is downloaded as a Type 42 font\n    minMemType1: r.uint32,\n    // Minimum memory usage when a TrueType font is downloaded as a Type 1 font\n    maxMemType1: r.uint32 // Maximum memory usage when a TrueType font is downloaded as a Type 1 font\n  },\n\n  1: {},\n  // version 1 has no additional fields\n  2: {\n    numberOfGlyphs: r.uint16,\n    glyphNameIndex: new r.Array(r.uint16, 'numberOfGlyphs'),\n    names: new r.Array(new r.String(r.uint8))\n  },\n  2.5: {\n    numberOfGlyphs: r.uint16,\n    offsets: new r.Array(r.uint8, 'numberOfGlyphs')\n  },\n  3: {},\n  // version 3 has no additional fields\n  4: {\n    map: new r.Array(r.uint32, function (t) {\n      return t.parent.maxp.numGlyphs;\n    })\n  }\n});\nvar cvt = new r.Struct({\n  controlValues: new r.Array(r.int16)\n});\n\n// These instructions are known as the font program. The main use of this table\n// is for the definition of functions that are used in many different glyph programs.\n\nvar fpgm = new r.Struct({\n  instructions: new r.Array(r.uint8)\n});\nvar loca = new r.VersionedStruct('head.indexToLocFormat', {\n  0: {\n    offsets: new r.Array(r.uint16)\n  },\n  1: {\n    offsets: new r.Array(r.uint32)\n  }\n});\nloca.process = function () {\n  if (this.version === 0) {\n    for (var i = 0; i < this.offsets.length; i++) {\n      this.offsets[i] <<= 1;\n    }\n  }\n};\nloca.preEncode = function () {\n  if (this.version === 0) {\n    for (var i = 0; i < this.offsets.length; i++) {\n      this.offsets[i] >>>= 1;\n    }\n  }\n};\nvar prep = new r.Struct({\n  controlValueProgram: new r.Array(r.uint8)\n});\nvar glyf = new r.Array(new r.Buffer());\nvar CFFIndex = /*#__PURE__*/function () {\n  function CFFIndex(type) {\n    this.type = type;\n  }\n  var _proto = CFFIndex.prototype;\n  _proto.getCFFVersion = function getCFFVersion(ctx) {\n    while (ctx && !ctx.hdrSize) {\n      ctx = ctx.parent;\n    }\n    return ctx ? ctx.version : -1;\n  };\n  _proto.decode = function decode(stream, parent) {\n    var version = this.getCFFVersion(parent);\n    var count = version >= 2 ? stream.readUInt32BE() : stream.readUInt16BE();\n    if (count === 0) {\n      return [];\n    }\n    var offSize = stream.readUInt8();\n    var offsetType;\n    if (offSize === 1) {\n      offsetType = r.uint8;\n    } else if (offSize === 2) {\n      offsetType = r.uint16;\n    } else if (offSize === 3) {\n      offsetType = r.uint24;\n    } else if (offSize === 4) {\n      offsetType = r.uint32;\n    } else {\n      throw new Error(\"Bad offset size in CFFIndex: \".concat(offSize, \" \").concat(stream.pos));\n    }\n    var ret = [];\n    var startPos = stream.pos + (count + 1) * offSize - 1;\n    var start = offsetType.decode(stream);\n    for (var i = 0; i < count; i++) {\n      var end = offsetType.decode(stream);\n      if (this.type != null) {\n        var pos = stream.pos;\n        stream.pos = startPos + start;\n        parent.length = end - start;\n        ret.push(this.type.decode(stream, parent));\n        stream.pos = pos;\n      } else {\n        ret.push({\n          offset: startPos + start,\n          length: end - start\n        });\n      }\n      start = end;\n    }\n    stream.pos = startPos + start;\n    return ret;\n  };\n  _proto.size = function size(arr, parent) {\n    var size = 2;\n    if (arr.length === 0) {\n      return size;\n    }\n    var type = this.type || new r.Buffer(); // find maximum offset to detminine offset type\n\n    var offset = 1;\n    for (var i = 0; i < arr.length; i++) {\n      var item = arr[i];\n      offset += type.size(item, parent);\n    }\n    var offsetType;\n    if (offset <= 0xff) {\n      offsetType = r.uint8;\n    } else if (offset <= 0xffff) {\n      offsetType = r.uint16;\n    } else if (offset <= 0xffffff) {\n      offsetType = r.uint24;\n    } else if (offset <= 0xffffffff) {\n      offsetType = r.uint32;\n    } else {\n      throw new Error(\"Bad offset in CFFIndex\");\n    }\n    size += 1 + offsetType.size() * (arr.length + 1);\n    size += offset - 1;\n    return size;\n  };\n  _proto.encode = function encode(stream, arr, parent) {\n    stream.writeUInt16BE(arr.length);\n    if (arr.length === 0) {\n      return;\n    }\n    var type = this.type || new r.Buffer(); // find maximum offset to detminine offset type\n\n    var sizes = [];\n    var offset = 1;\n    for (var _iterator2 = _createForOfIteratorHelperLoose(arr), _step2; !(_step2 = _iterator2()).done;) {\n      var item = _step2.value;\n      var s = type.size(item, parent);\n      sizes.push(s);\n      offset += s;\n    }\n    var offsetType;\n    if (offset <= 0xff) {\n      offsetType = r.uint8;\n    } else if (offset <= 0xffff) {\n      offsetType = r.uint16;\n    } else if (offset <= 0xffffff) {\n      offsetType = r.uint24;\n    } else if (offset <= 0xffffffff) {\n      offsetType = r.uint32;\n    } else {\n      throw new Error(\"Bad offset in CFFIndex\");\n    } // write offset size\n\n    stream.writeUInt8(offsetType.size()); // write elements\n\n    offset = 1;\n    offsetType.encode(stream, offset);\n    for (var _i22 = 0, _sizes = sizes; _i22 < _sizes.length; _i22++) {\n      var size = _sizes[_i22];\n      offset += size;\n      offsetType.encode(stream, offset);\n    }\n    for (var _iterator3 = _createForOfIteratorHelperLoose(arr), _step3; !(_step3 = _iterator3()).done;) {\n      var _item = _step3.value;\n      type.encode(stream, _item, parent);\n    }\n    return;\n  };\n  return CFFIndex;\n}();\nvar FLOAT_EOF = 0xf;\nvar FLOAT_LOOKUP = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '.', 'E', 'E-', null, '-'];\nvar FLOAT_ENCODE_LOOKUP = {\n  '.': 10,\n  'E': 11,\n  'E-': 12,\n  '-': 14\n};\nvar CFFOperand = /*#__PURE__*/function () {\n  function CFFOperand() {}\n  CFFOperand.decode = function decode(stream, value) {\n    if (32 <= value && value <= 246) {\n      return value - 139;\n    }\n    if (247 <= value && value <= 250) {\n      return (value - 247) * 256 + stream.readUInt8() + 108;\n    }\n    if (251 <= value && value <= 254) {\n      return -(value - 251) * 256 - stream.readUInt8() - 108;\n    }\n    if (value === 28) {\n      return stream.readInt16BE();\n    }\n    if (value === 29) {\n      return stream.readInt32BE();\n    }\n    if (value === 30) {\n      var str = '';\n      while (true) {\n        var b = stream.readUInt8();\n        var n1 = b >> 4;\n        if (n1 === FLOAT_EOF) {\n          break;\n        }\n        str += FLOAT_LOOKUP[n1];\n        var n2 = b & 15;\n        if (n2 === FLOAT_EOF) {\n          break;\n        }\n        str += FLOAT_LOOKUP[n2];\n      }\n      return parseFloat(str);\n    }\n    return null;\n  };\n  CFFOperand.size = function size(value) {\n    // if the value needs to be forced to the largest size (32 bit)\n    // e.g. for unknown pointers, set to 32768\n    if (value.forceLarge) {\n      value = 32768;\n    }\n    if ((value | 0) !== value) {\n      // floating point\n      var str = '' + value;\n      return 1 + Math.ceil((str.length + 1) / 2);\n    } else if (-107 <= value && value <= 107) {\n      return 1;\n    } else if (108 <= value && value <= 1131 || -1131 <= value && value <= -108) {\n      return 2;\n    } else if (-32768 <= value && value <= 32767) {\n      return 3;\n    } else {\n      return 5;\n    }\n  };\n  CFFOperand.encode = function encode(stream, value) {\n    // if the value needs to be forced to the largest size (32 bit)\n    // e.g. for unknown pointers, save the old value and set to 32768\n    var val = Number(value);\n    if (value.forceLarge) {\n      stream.writeUInt8(29);\n      return stream.writeInt32BE(val);\n    } else if ((val | 0) !== val) {\n      // floating point\n      stream.writeUInt8(30);\n      var str = '' + val;\n      for (var i = 0; i < str.length; i += 2) {\n        var c1 = str[i];\n        var n1 = FLOAT_ENCODE_LOOKUP[c1] || +c1;\n        if (i === str.length - 1) {\n          var n2 = FLOAT_EOF;\n        } else {\n          var c2 = str[i + 1];\n          var n2 = FLOAT_ENCODE_LOOKUP[c2] || +c2;\n        }\n        stream.writeUInt8(n1 << 4 | n2 & 15);\n      }\n      if (n2 !== FLOAT_EOF) {\n        return stream.writeUInt8(FLOAT_EOF << 4);\n      }\n    } else if (-107 <= val && val <= 107) {\n      return stream.writeUInt8(val + 139);\n    } else if (108 <= val && val <= 1131) {\n      val -= 108;\n      stream.writeUInt8((val >> 8) + 247);\n      return stream.writeUInt8(val & 0xff);\n    } else if (-1131 <= val && val <= -108) {\n      val = -val - 108;\n      stream.writeUInt8((val >> 8) + 251);\n      return stream.writeUInt8(val & 0xff);\n    } else if (-32768 <= val && val <= 32767) {\n      stream.writeUInt8(28);\n      return stream.writeInt16BE(val);\n    } else {\n      stream.writeUInt8(29);\n      return stream.writeInt32BE(val);\n    }\n  };\n  return CFFOperand;\n}();\nvar CFFDict = /*#__PURE__*/function () {\n  function CFFDict(ops) {\n    if (ops === void 0) {\n      ops = [];\n    }\n    this.ops = ops;\n    this.fields = {};\n    for (var _iterator4 = _createForOfIteratorHelperLoose(ops), _step4; !(_step4 = _iterator4()).done;) {\n      var field = _step4.value;\n      var key = Array.isArray(field[0]) ? field[0][0] << 8 | field[0][1] : field[0];\n      this.fields[key] = field;\n    }\n  }\n  var _proto2 = CFFDict.prototype;\n  _proto2.decodeOperands = function decodeOperands(type, stream, ret, operands) {\n    var _this = this;\n    if (Array.isArray(type)) {\n      return operands.map(function (op, i) {\n        return _this.decodeOperands(type[i], stream, ret, [op]);\n      });\n    } else if (type.decode != null) {\n      return type.decode(stream, ret, operands);\n    } else {\n      switch (type) {\n        case 'number':\n        case 'offset':\n        case 'sid':\n          return operands[0];\n        case 'boolean':\n          return !!operands[0];\n        default:\n          return operands;\n      }\n    }\n  };\n  _proto2.encodeOperands = function encodeOperands(type, stream, ctx, operands) {\n    var _this2 = this;\n    if (Array.isArray(type)) {\n      return operands.map(function (op, i) {\n        return _this2.encodeOperands(type[i], stream, ctx, op)[0];\n      });\n    } else if (type.encode != null) {\n      return type.encode(stream, operands, ctx);\n    } else if (typeof operands === 'number') {\n      return [operands];\n    } else if (typeof operands === 'boolean') {\n      return [+operands];\n    } else if (Array.isArray(operands)) {\n      return operands;\n    } else {\n      return [operands];\n    }\n  };\n  _proto2.decode = function decode(stream, parent) {\n    var end = stream.pos + parent.length;\n    var ret = {};\n    var operands = []; // define hidden properties\n\n    Object.defineProperties(ret, {\n      parent: {\n        value: parent\n      },\n      _startOffset: {\n        value: stream.pos\n      }\n    }); // fill in defaults\n\n    for (var key in this.fields) {\n      var field = this.fields[key];\n      ret[field[1]] = field[3];\n    }\n    while (stream.pos < end) {\n      var b = stream.readUInt8();\n      if (b < 28) {\n        if (b === 12) {\n          b = b << 8 | stream.readUInt8();\n        }\n        var _field = this.fields[b];\n        if (!_field) {\n          throw new Error(\"Unknown operator \".concat(b));\n        }\n        var val = this.decodeOperands(_field[2], stream, ret, operands);\n        if (val != null) {\n          if (val instanceof utils.PropertyDescriptor) {\n            Object.defineProperty(ret, _field[1], val);\n          } else {\n            ret[_field[1]] = val;\n          }\n        }\n        operands = [];\n      } else {\n        operands.push(CFFOperand.decode(stream, b));\n      }\n    }\n    return ret;\n  };\n  _proto2.size = function size(dict, parent, includePointers) {\n    if (includePointers === void 0) {\n      includePointers = true;\n    }\n    var ctx = {\n      parent: parent,\n      val: dict,\n      pointerSize: 0,\n      startOffset: parent.startOffset || 0\n    };\n    var len = 0;\n    for (var k in this.fields) {\n      var field = this.fields[k];\n      var val = dict[field[1]];\n      if (val == null || isEqual(val, field[3])) {\n        continue;\n      }\n      var operands = this.encodeOperands(field[2], null, ctx, val);\n      for (var _iterator5 = _createForOfIteratorHelperLoose(operands), _step5; !(_step5 = _iterator5()).done;) {\n        var op = _step5.value;\n        len += CFFOperand.size(op);\n      }\n      var key = Array.isArray(field[0]) ? field[0] : [field[0]];\n      len += key.length;\n    }\n    if (includePointers) {\n      len += ctx.pointerSize;\n    }\n    return len;\n  };\n  _proto2.encode = function encode(stream, dict, parent) {\n    var ctx = {\n      pointers: [],\n      startOffset: stream.pos,\n      parent: parent,\n      val: dict,\n      pointerSize: 0\n    };\n    ctx.pointerOffset = stream.pos + this.size(dict, ctx, false);\n    for (var _iterator6 = _createForOfIteratorHelperLoose(this.ops), _step6; !(_step6 = _iterator6()).done;) {\n      var field = _step6.value;\n      var val = dict[field[1]];\n      if (val == null || isEqual(val, field[3])) {\n        continue;\n      }\n      var operands = this.encodeOperands(field[2], stream, ctx, val);\n      for (var _iterator7 = _createForOfIteratorHelperLoose(operands), _step7; !(_step7 = _iterator7()).done;) {\n        var op = _step7.value;\n        CFFOperand.encode(stream, op);\n      }\n      var key = Array.isArray(field[0]) ? field[0] : [field[0]];\n      for (var _iterator8 = _createForOfIteratorHelperLoose(key), _step8; !(_step8 = _iterator8()).done;) {\n        var _op = _step8.value;\n        stream.writeUInt8(_op);\n      }\n    }\n    var i = 0;\n    while (i < ctx.pointers.length) {\n      var ptr = ctx.pointers[i++];\n      ptr.type.encode(stream, ptr.val, ptr.parent);\n    }\n    return;\n  };\n  return CFFDict;\n}();\nvar CFFPointer = /*#__PURE__*/function (_r$Pointer) {\n  _inheritsLoose(CFFPointer, _r$Pointer);\n  function CFFPointer(type, options) {\n    if (options === void 0) {\n      options = {};\n    }\n    if (options.type == null) {\n      options.type = 'global';\n    }\n    return _r$Pointer.call(this, null, type, options) || this;\n  }\n  var _proto3 = CFFPointer.prototype;\n  _proto3.decode = function decode(stream, parent, operands) {\n    this.offsetType = {\n      decode: function decode() {\n        return operands[0];\n      }\n    };\n    return _r$Pointer.prototype.decode.call(this, stream, parent, operands);\n  };\n  _proto3.encode = function encode(stream, value, ctx) {\n    if (!stream) {\n      // compute the size (so ctx.pointerSize is correct)\n      this.offsetType = {\n        size: function size() {\n          return 0;\n        }\n      };\n      this.size(value, ctx);\n      return [new Ptr(0)];\n    }\n    var ptr = null;\n    this.offsetType = {\n      encode: function encode(stream, val) {\n        return ptr = val;\n      }\n    };\n    _r$Pointer.prototype.encode.call(this, stream, value, ctx);\n    return [new Ptr(ptr)];\n  };\n  return CFFPointer;\n}(r.Pointer);\nvar Ptr = /*#__PURE__*/function () {\n  function Ptr(val) {\n    this.val = val;\n    this.forceLarge = true;\n  }\n  var _proto4 = Ptr.prototype;\n  _proto4.valueOf = function valueOf() {\n    return this.val;\n  };\n  return Ptr;\n}();\nvar CFFBlendOp = /*#__PURE__*/function () {\n  function CFFBlendOp() {}\n  CFFBlendOp.decode = function decode(stream, parent, operands) {\n    var numBlends = operands.pop(); // TODO: actually blend. For now just consume the deltas\n    // since we don't use any of the values anyway.\n\n    while (operands.length > numBlends) {\n      operands.pop();\n    }\n  };\n  return CFFBlendOp;\n}();\nvar CFFPrivateDict = new CFFDict([\n// key       name                    type                                          default\n[6, 'BlueValues', 'delta', null], [7, 'OtherBlues', 'delta', null], [8, 'FamilyBlues', 'delta', null], [9, 'FamilyOtherBlues', 'delta', null], [[12, 9], 'BlueScale', 'number', 0.039625], [[12, 10], 'BlueShift', 'number', 7], [[12, 11], 'BlueFuzz', 'number', 1], [10, 'StdHW', 'number', null], [11, 'StdVW', 'number', null], [[12, 12], 'StemSnapH', 'delta', null], [[12, 13], 'StemSnapV', 'delta', null], [[12, 14], 'ForceBold', 'boolean', false], [[12, 17], 'LanguageGroup', 'number', 0], [[12, 18], 'ExpansionFactor', 'number', 0.06], [[12, 19], 'initialRandomSeed', 'number', 0], [20, 'defaultWidthX', 'number', 0], [21, 'nominalWidthX', 'number', 0], [22, 'vsindex', 'number', 0], [23, 'blend', CFFBlendOp, null], [19, 'Subrs', new CFFPointer(new CFFIndex(), {\n  type: 'local'\n}), null]]);\n\n// Automatically generated from Appendix A of the CFF specification; do\n// not edit. Length should be 391.\nvar standardStrings = [\".notdef\", \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\", \"percent\", \"ampersand\", \"quoteright\", \"parenleft\", \"parenright\", \"asterisk\", \"plus\", \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\", \"four\", \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\", \"less\", \"equal\", \"greater\", \"question\", \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\", \"bracketleft\", \"backslash\", \"bracketright\", \"asciicircum\", \"underscore\", \"quoteleft\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\", \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\", \"w\", \"x\", \"y\", \"z\", \"braceleft\", \"bar\", \"braceright\", \"asciitilde\", \"exclamdown\", \"cent\", \"sterling\", \"fraction\", \"yen\", \"florin\", \"section\", \"currency\", \"quotesingle\", \"quotedblleft\", \"guillemotleft\", \"guilsinglleft\", \"guilsinglright\", \"fi\", \"fl\", \"endash\", \"dagger\", \"daggerdbl\", \"periodcentered\", \"paragraph\", \"bullet\", \"quotesinglbase\", \"quotedblbase\", \"quotedblright\", \"guillemotright\", \"ellipsis\", \"perthousand\", \"questiondown\", \"grave\", \"acute\", \"circumflex\", \"tilde\", \"macron\", \"breve\", \"dotaccent\", \"dieresis\", \"ring\", \"cedilla\", \"hungarumlaut\", \"ogonek\", \"caron\", \"emdash\", \"AE\", \"ordfeminine\", \"Lslash\", \"Oslash\", \"OE\", \"ordmasculine\", \"ae\", \"dotlessi\", \"lslash\", \"oslash\", \"oe\", \"germandbls\", \"onesuperior\", \"logicalnot\", \"mu\", \"trademark\", \"Eth\", \"onehalf\", \"plusminus\", \"Thorn\", \"onequarter\", \"divide\", \"brokenbar\", \"degree\", \"thorn\", \"threequarters\", \"twosuperior\", \"registered\", \"minus\", \"eth\", \"multiply\", \"threesuperior\", \"copyright\", \"Aacute\", \"Acircumflex\", \"Adieresis\", \"Agrave\", \"Aring\", \"Atilde\", \"Ccedilla\", \"Eacute\", \"Ecircumflex\", \"Edieresis\", \"Egrave\", \"Iacute\", \"Icircumflex\", \"Idieresis\", \"Igrave\", \"Ntilde\", \"Oacute\", \"Ocircumflex\", \"Odieresis\", \"Ograve\", \"Otilde\", \"Scaron\", \"Uacute\", \"Ucircumflex\", \"Udieresis\", \"Ugrave\", \"Yacute\", \"Ydieresis\", \"Zcaron\", \"aacute\", \"acircumflex\", \"adieresis\", \"agrave\", \"aring\", \"atilde\", \"ccedilla\", \"eacute\", \"ecircumflex\", \"edieresis\", \"egrave\", \"iacute\", \"icircumflex\", \"idieresis\", \"igrave\", \"ntilde\", \"oacute\", \"ocircumflex\", \"odieresis\", \"ograve\", \"otilde\", \"scaron\", \"uacute\", \"ucircumflex\", \"udieresis\", \"ugrave\", \"yacute\", \"ydieresis\", \"zcaron\", \"exclamsmall\", \"Hungarumlautsmall\", \"dollaroldstyle\", \"dollarsuperior\", \"ampersandsmall\", \"Acutesmall\", \"parenleftsuperior\", \"parenrightsuperior\", \"twodotenleader\", \"onedotenleader\", \"zerooldstyle\", \"oneoldstyle\", \"twooldstyle\", \"threeoldstyle\", \"fouroldstyle\", \"fiveoldstyle\", \"sixoldstyle\", \"sevenoldstyle\", \"eightoldstyle\", \"nineoldstyle\", \"commasuperior\", \"threequartersemdash\", \"periodsuperior\", \"questionsmall\", \"asuperior\", \"bsuperior\", \"centsuperior\", \"dsuperior\", \"esuperior\", \"isuperior\", \"lsuperior\", \"msuperior\", \"nsuperior\", \"osuperior\", \"rsuperior\", \"ssuperior\", \"tsuperior\", \"ff\", \"ffi\", \"ffl\", \"parenleftinferior\", \"parenrightinferior\", \"Circumflexsmall\", \"hyphensuperior\", \"Gravesmall\", \"Asmall\", \"Bsmall\", \"Csmall\", \"Dsmall\", \"Esmall\", \"Fsmall\", \"Gsmall\", \"Hsmall\", \"Ismall\", \"Jsmall\", \"Ksmall\", \"Lsmall\", \"Msmall\", \"Nsmall\", \"Osmall\", \"Psmall\", \"Qsmall\", \"Rsmall\", \"Ssmall\", \"Tsmall\", \"Usmall\", \"Vsmall\", \"Wsmall\", \"Xsmall\", \"Ysmall\", \"Zsmall\", \"colonmonetary\", \"onefitted\", \"rupiah\", \"Tildesmall\", \"exclamdownsmall\", \"centoldstyle\", \"Lslashsmall\", \"Scaronsmall\", \"Zcaronsmall\", \"Dieresissmall\", \"Brevesmall\", \"Caronsmall\", \"Dotaccentsmall\", \"Macronsmall\", \"figuredash\", \"hypheninferior\", \"Ogoneksmall\", \"Ringsmall\", \"Cedillasmall\", \"questiondownsmall\", \"oneeighth\", \"threeeighths\", \"fiveeighths\", \"seveneighths\", \"onethird\", \"twothirds\", \"zerosuperior\", \"foursuperior\", \"fivesuperior\", \"sixsuperior\", \"sevensuperior\", \"eightsuperior\", \"ninesuperior\", \"zeroinferior\", \"oneinferior\", \"twoinferior\", \"threeinferior\", \"fourinferior\", \"fiveinferior\", \"sixinferior\", \"seveninferior\", \"eightinferior\", \"nineinferior\", \"centinferior\", \"dollarinferior\", \"periodinferior\", \"commainferior\", \"Agravesmall\", \"Aacutesmall\", \"Acircumflexsmall\", \"Atildesmall\", \"Adieresissmall\", \"Aringsmall\", \"AEsmall\", \"Ccedillasmall\", \"Egravesmall\", \"Eacutesmall\", \"Ecircumflexsmall\", \"Edieresissmall\", \"Igravesmall\", \"Iacutesmall\", \"Icircumflexsmall\", \"Idieresissmall\", \"Ethsmall\", \"Ntildesmall\", \"Ogravesmall\", \"Oacutesmall\", \"Ocircumflexsmall\", \"Otildesmall\", \"Odieresissmall\", \"OEsmall\", \"Oslashsmall\", \"Ugravesmall\", \"Uacutesmall\", \"Ucircumflexsmall\", \"Udieresissmall\", \"Yacutesmall\", \"Thornsmall\", \"Ydieresissmall\", \"001.000\", \"001.001\", \"001.002\", \"001.003\", \"Black\", \"Bold\", \"Book\", \"Light\", \"Medium\", \"Regular\", \"Roman\", \"Semibold\"];\nvar StandardEncoding = ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent', 'ampersand', 'quoteright', 'parenleft', 'parenright', 'asterisk', 'plus', 'comma', 'hyphen', 'period', 'slash', 'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon', 'less', 'equal', 'greater', 'question', 'at', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'bracketleft', 'backslash', 'bracketright', 'asciicircum', 'underscore', 'quoteleft', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright', 'asciitilde', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'exclamdown', 'cent', 'sterling', 'fraction', 'yen', 'florin', 'section', 'currency', 'quotesingle', 'quotedblleft', 'guillemotleft', 'guilsinglleft', 'guilsinglright', 'fi', 'fl', '', 'endash', 'dagger', 'daggerdbl', 'periodcentered', '', 'paragraph', 'bullet', 'quotesinglbase', 'quotedblbase', 'quotedblright', 'guillemotright', 'ellipsis', 'perthousand', '', 'questiondown', '', 'grave', 'acute', 'circumflex', 'tilde', 'macron', 'breve', 'dotaccent', 'dieresis', '', 'ring', 'cedilla', '', 'hungarumlaut', 'ogonek', 'caron', 'emdash', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'AE', '', 'ordfeminine', '', '', '', '', 'Lslash', 'Oslash', 'OE', 'ordmasculine', '', '', '', '', '', 'ae', '', '', '', 'dotlessi', '', '', 'lslash', 'oslash', 'oe', 'germandbls'];\nvar ExpertEncoding = ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'space', 'exclamsmall', 'Hungarumlautsmall', '', 'dollaroldstyle', 'dollarsuperior', 'ampersandsmall', 'Acutesmall', 'parenleftsuperior', 'parenrightsuperior', 'twodotenleader', 'onedotenleader', 'comma', 'hyphen', 'period', 'fraction', 'zerooldstyle', 'oneoldstyle', 'twooldstyle', 'threeoldstyle', 'fouroldstyle', 'fiveoldstyle', 'sixoldstyle', 'sevenoldstyle', 'eightoldstyle', 'nineoldstyle', 'colon', 'semicolon', 'commasuperior', 'threequartersemdash', 'periodsuperior', 'questionsmall', '', 'asuperior', 'bsuperior', 'centsuperior', 'dsuperior', 'esuperior', '', '', 'isuperior', '', '', 'lsuperior', 'msuperior', 'nsuperior', 'osuperior', '', '', 'rsuperior', 'ssuperior', 'tsuperior', '', 'ff', 'fi', 'fl', 'ffi', 'ffl', 'parenleftinferior', '', 'parenrightinferior', 'Circumflexsmall', 'hyphensuperior', 'Gravesmall', 'Asmall', 'Bsmall', 'Csmall', 'Dsmall', 'Esmall', 'Fsmall', 'Gsmall', 'Hsmall', 'Ismall', 'Jsmall', 'Ksmall', 'Lsmall', 'Msmall', 'Nsmall', 'Osmall', 'Psmall', 'Qsmall', 'Rsmall', 'Ssmall', 'Tsmall', 'Usmall', 'Vsmall', 'Wsmall', 'Xsmall', 'Ysmall', 'Zsmall', 'colonmonetary', 'onefitted', 'rupiah', 'Tildesmall', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'exclamdownsmall', 'centoldstyle', 'Lslashsmall', '', '', 'Scaronsmall', 'Zcaronsmall', 'Dieresissmall', 'Brevesmall', 'Caronsmall', '', 'Dotaccentsmall', '', '', 'Macronsmall', '', '', 'figuredash', 'hypheninferior', '', '', 'Ogoneksmall', 'Ringsmall', 'Cedillasmall', '', '', '', 'onequarter', 'onehalf', 'threequarters', 'questiondownsmall', 'oneeighth', 'threeeighths', 'fiveeighths', 'seveneighths', 'onethird', 'twothirds', '', '', 'zerosuperior', 'onesuperior', 'twosuperior', 'threesuperior', 'foursuperior', 'fivesuperior', 'sixsuperior', 'sevensuperior', 'eightsuperior', 'ninesuperior', 'zeroinferior', 'oneinferior', 'twoinferior', 'threeinferior', 'fourinferior', 'fiveinferior', 'sixinferior', 'seveninferior', 'eightinferior', 'nineinferior', 'centinferior', 'dollarinferior', 'periodinferior', 'commainferior', 'Agravesmall', 'Aacutesmall', 'Acircumflexsmall', 'Atildesmall', 'Adieresissmall', 'Aringsmall', 'AEsmall', 'Ccedillasmall', 'Egravesmall', 'Eacutesmall', 'Ecircumflexsmall', 'Edieresissmall', 'Igravesmall', 'Iacutesmall', 'Icircumflexsmall', 'Idieresissmall', 'Ethsmall', 'Ntildesmall', 'Ogravesmall', 'Oacutesmall', 'Ocircumflexsmall', 'Otildesmall', 'Odieresissmall', 'OEsmall', 'Oslashsmall', 'Ugravesmall', 'Uacutesmall', 'Ucircumflexsmall', 'Udieresissmall', 'Yacutesmall', 'Thornsmall', 'Ydieresissmall'];\nvar ISOAdobeCharset = ['.notdef', 'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent', 'ampersand', 'quoteright', 'parenleft', 'parenright', 'asterisk', 'plus', 'comma', 'hyphen', 'period', 'slash', 'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon', 'less', 'equal', 'greater', 'question', 'at', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'bracketleft', 'backslash', 'bracketright', 'asciicircum', 'underscore', 'quoteleft', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright', 'asciitilde', 'exclamdown', 'cent', 'sterling', 'fraction', 'yen', 'florin', 'section', 'currency', 'quotesingle', 'quotedblleft', 'guillemotleft', 'guilsinglleft', 'guilsinglright', 'fi', 'fl', 'endash', 'dagger', 'daggerdbl', 'periodcentered', 'paragraph', 'bullet', 'quotesinglbase', 'quotedblbase', 'quotedblright', 'guillemotright', 'ellipsis', 'perthousand', 'questiondown', 'grave', 'acute', 'circumflex', 'tilde', 'macron', 'breve', 'dotaccent', 'dieresis', 'ring', 'cedilla', 'hungarumlaut', 'ogonek', 'caron', 'emdash', 'AE', 'ordfeminine', 'Lslash', 'Oslash', 'OE', 'ordmasculine', 'ae', 'dotlessi', 'lslash', 'oslash', 'oe', 'germandbls', 'onesuperior', 'logicalnot', 'mu', 'trademark', 'Eth', 'onehalf', 'plusminus', 'Thorn', 'onequarter', 'divide', 'brokenbar', 'degree', 'thorn', 'threequarters', 'twosuperior', 'registered', 'minus', 'eth', 'multiply', 'threesuperior', 'copyright', 'Aacute', 'Acircumflex', 'Adieresis', 'Agrave', 'Aring', 'Atilde', 'Ccedilla', 'Eacute', 'Ecircumflex', 'Edieresis', 'Egrave', 'Iacute', 'Icircumflex', 'Idieresis', 'Igrave', 'Ntilde', 'Oacute', 'Ocircumflex', 'Odieresis', 'Ograve', 'Otilde', 'Scaron', 'Uacute', 'Ucircumflex', 'Udieresis', 'Ugrave', 'Yacute', 'Ydieresis', 'Zcaron', 'aacute', 'acircumflex', 'adieresis', 'agrave', 'aring', 'atilde', 'ccedilla', 'eacute', 'ecircumflex', 'edieresis', 'egrave', 'iacute', 'icircumflex', 'idieresis', 'igrave', 'ntilde', 'oacute', 'ocircumflex', 'odieresis', 'ograve', 'otilde', 'scaron', 'uacute', 'ucircumflex', 'udieresis', 'ugrave', 'yacute', 'ydieresis', 'zcaron'];\nvar ExpertCharset = ['.notdef', 'space', 'exclamsmall', 'Hungarumlautsmall', 'dollaroldstyle', 'dollarsuperior', 'ampersandsmall', 'Acutesmall', 'parenleftsuperior', 'parenrightsuperior', 'twodotenleader', 'onedotenleader', 'comma', 'hyphen', 'period', 'fraction', 'zerooldstyle', 'oneoldstyle', 'twooldstyle', 'threeoldstyle', 'fouroldstyle', 'fiveoldstyle', 'sixoldstyle', 'sevenoldstyle', 'eightoldstyle', 'nineoldstyle', 'colon', 'semicolon', 'commasuperior', 'threequartersemdash', 'periodsuperior', 'questionsmall', 'asuperior', 'bsuperior', 'centsuperior', 'dsuperior', 'esuperior', 'isuperior', 'lsuperior', 'msuperior', 'nsuperior', 'osuperior', 'rsuperior', 'ssuperior', 'tsuperior', 'ff', 'fi', 'fl', 'ffi', 'ffl', 'parenleftinferior', 'parenrightinferior', 'Circumflexsmall', 'hyphensuperior', 'Gravesmall', 'Asmall', 'Bsmall', 'Csmall', 'Dsmall', 'Esmall', 'Fsmall', 'Gsmall', 'Hsmall', 'Ismall', 'Jsmall', 'Ksmall', 'Lsmall', 'Msmall', 'Nsmall', 'Osmall', 'Psmall', 'Qsmall', 'Rsmall', 'Ssmall', 'Tsmall', 'Usmall', 'Vsmall', 'Wsmall', 'Xsmall', 'Ysmall', 'Zsmall', 'colonmonetary', 'onefitted', 'rupiah', 'Tildesmall', 'exclamdownsmall', 'centoldstyle', 'Lslashsmall', 'Scaronsmall', 'Zcaronsmall', 'Dieresissmall', 'Brevesmall', 'Caronsmall', 'Dotaccentsmall', 'Macronsmall', 'figuredash', 'hypheninferior', 'Ogoneksmall', 'Ringsmall', 'Cedillasmall', 'onequarter', 'onehalf', 'threequarters', 'questiondownsmall', 'oneeighth', 'threeeighths', 'fiveeighths', 'seveneighths', 'onethird', 'twothirds', 'zerosuperior', 'onesuperior', 'twosuperior', 'threesuperior', 'foursuperior', 'fivesuperior', 'sixsuperior', 'sevensuperior', 'eightsuperior', 'ninesuperior', 'zeroinferior', 'oneinferior', 'twoinferior', 'threeinferior', 'fourinferior', 'fiveinferior', 'sixinferior', 'seveninferior', 'eightinferior', 'nineinferior', 'centinferior', 'dollarinferior', 'periodinferior', 'commainferior', 'Agravesmall', 'Aacutesmall', 'Acircumflexsmall', 'Atildesmall', 'Adieresissmall', 'Aringsmall', 'AEsmall', 'Ccedillasmall', 'Egravesmall', 'Eacutesmall', 'Ecircumflexsmall', 'Edieresissmall', 'Igravesmall', 'Iacutesmall', 'Icircumflexsmall', 'Idieresissmall', 'Ethsmall', 'Ntildesmall', 'Ogravesmall', 'Oacutesmall', 'Ocircumflexsmall', 'Otildesmall', 'Odieresissmall', 'OEsmall', 'Oslashsmall', 'Ugravesmall', 'Uacutesmall', 'Ucircumflexsmall', 'Udieresissmall', 'Yacutesmall', 'Thornsmall', 'Ydieresissmall'];\nvar ExpertSubsetCharset = ['.notdef', 'space', 'dollaroldstyle', 'dollarsuperior', 'parenleftsuperior', 'parenrightsuperior', 'twodotenleader', 'onedotenleader', 'comma', 'hyphen', 'period', 'fraction', 'zerooldstyle', 'oneoldstyle', 'twooldstyle', 'threeoldstyle', 'fouroldstyle', 'fiveoldstyle', 'sixoldstyle', 'sevenoldstyle', 'eightoldstyle', 'nineoldstyle', 'colon', 'semicolon', 'commasuperior', 'threequartersemdash', 'periodsuperior', 'asuperior', 'bsuperior', 'centsuperior', 'dsuperior', 'esuperior', 'isuperior', 'lsuperior', 'msuperior', 'nsuperior', 'osuperior', 'rsuperior', 'ssuperior', 'tsuperior', 'ff', 'fi', 'fl', 'ffi', 'ffl', 'parenleftinferior', 'parenrightinferior', 'hyphensuperior', 'colonmonetary', 'onefitted', 'rupiah', 'centoldstyle', 'figuredash', 'hypheninferior', 'onequarter', 'onehalf', 'threequarters', 'oneeighth', 'threeeighths', 'fiveeighths', 'seveneighths', 'onethird', 'twothirds', 'zerosuperior', 'onesuperior', 'twosuperior', 'threesuperior', 'foursuperior', 'fivesuperior', 'sixsuperior', 'sevensuperior', 'eightsuperior', 'ninesuperior', 'zeroinferior', 'oneinferior', 'twoinferior', 'threeinferior', 'fourinferior', 'fiveinferior', 'sixinferior', 'seveninferior', 'eightinferior', 'nineinferior', 'centinferior', 'dollarinferior', 'periodinferior', 'commainferior'];\n\n// Scripts and Languages #\n//########################\n\nvar LangSysTable = new r.Struct({\n  reserved: new r.Reserved(r.uint16),\n  reqFeatureIndex: r.uint16,\n  featureCount: r.uint16,\n  featureIndexes: new r.Array(r.uint16, 'featureCount')\n});\nvar LangSysRecord = new r.Struct({\n  tag: new r.String(4),\n  langSys: new r.Pointer(r.uint16, LangSysTable, {\n    type: 'parent'\n  })\n});\nvar Script = new r.Struct({\n  defaultLangSys: new r.Pointer(r.uint16, LangSysTable),\n  count: r.uint16,\n  langSysRecords: new r.Array(LangSysRecord, 'count')\n});\nvar ScriptRecord = new r.Struct({\n  tag: new r.String(4),\n  script: new r.Pointer(r.uint16, Script, {\n    type: 'parent'\n  })\n});\nvar ScriptList = new r.Array(ScriptRecord, r.uint16); //#######################\n// Features and Lookups #\n//#######################\n\nvar Feature = new r.Struct({\n  featureParams: r.uint16,\n  // pointer\n  lookupCount: r.uint16,\n  lookupListIndexes: new r.Array(r.uint16, 'lookupCount')\n});\nvar FeatureRecord = new r.Struct({\n  tag: new r.String(4),\n  feature: new r.Pointer(r.uint16, Feature, {\n    type: 'parent'\n  })\n});\nvar FeatureList = new r.Array(FeatureRecord, r.uint16);\nvar LookupFlags = new r.Struct({\n  markAttachmentType: r.uint8,\n  flags: new r.Bitfield(r.uint8, ['rightToLeft', 'ignoreBaseGlyphs', 'ignoreLigatures', 'ignoreMarks', 'useMarkFilteringSet'])\n});\nfunction LookupList(SubTable) {\n  var Lookup = new r.Struct({\n    lookupType: r.uint16,\n    flags: LookupFlags,\n    subTableCount: r.uint16,\n    subTables: new r.Array(new r.Pointer(r.uint16, SubTable), 'subTableCount'),\n    markFilteringSet: new r.Optional(r.uint16, function (t) {\n      return t.flags.flags.useMarkFilteringSet;\n    })\n  });\n  return new r.LazyArray(new r.Pointer(r.uint16, Lookup), r.uint16);\n} //#################\n// Coverage Table #\n//#################\n\nvar RangeRecord = new r.Struct({\n  start: r.uint16,\n  end: r.uint16,\n  startCoverageIndex: r.uint16\n});\nvar Coverage = new r.VersionedStruct(r.uint16, {\n  1: {\n    glyphCount: r.uint16,\n    glyphs: new r.Array(r.uint16, 'glyphCount')\n  },\n  2: {\n    rangeCount: r.uint16,\n    rangeRecords: new r.Array(RangeRecord, 'rangeCount')\n  }\n}); //#########################\n// Class Definition Table #\n//#########################\n\nvar ClassRangeRecord = new r.Struct({\n  start: r.uint16,\n  end: r.uint16,\n  class: r.uint16\n});\nvar ClassDef = new r.VersionedStruct(r.uint16, {\n  1: {\n    // Class array\n    startGlyph: r.uint16,\n    glyphCount: r.uint16,\n    classValueArray: new r.Array(r.uint16, 'glyphCount')\n  },\n  2: {\n    // Class ranges\n    classRangeCount: r.uint16,\n    classRangeRecord: new r.Array(ClassRangeRecord, 'classRangeCount')\n  }\n}); //###############\n// Device Table #\n//###############\n\nvar Device = new r.Struct({\n  a: r.uint16,\n  // startSize for hinting Device, outerIndex for VariationIndex\n  b: r.uint16,\n  // endSize for Device, innerIndex for VariationIndex\n  deltaFormat: r.uint16\n}); //#############################################\n// Contextual Substitution/Positioning Tables #\n//#############################################\n\nvar LookupRecord = new r.Struct({\n  sequenceIndex: r.uint16,\n  lookupListIndex: r.uint16\n});\nvar Rule = new r.Struct({\n  glyphCount: r.uint16,\n  lookupCount: r.uint16,\n  input: new r.Array(r.uint16, function (t) {\n    return t.glyphCount - 1;\n  }),\n  lookupRecords: new r.Array(LookupRecord, 'lookupCount')\n});\nvar RuleSet = new r.Array(new r.Pointer(r.uint16, Rule), r.uint16);\nvar ClassRule = new r.Struct({\n  glyphCount: r.uint16,\n  lookupCount: r.uint16,\n  classes: new r.Array(r.uint16, function (t) {\n    return t.glyphCount - 1;\n  }),\n  lookupRecords: new r.Array(LookupRecord, 'lookupCount')\n});\nvar ClassSet = new r.Array(new r.Pointer(r.uint16, ClassRule), r.uint16);\nvar Context = new r.VersionedStruct(r.uint16, {\n  1: {\n    // Simple context\n    coverage: new r.Pointer(r.uint16, Coverage),\n    ruleSetCount: r.uint16,\n    ruleSets: new r.Array(new r.Pointer(r.uint16, RuleSet), 'ruleSetCount')\n  },\n  2: {\n    // Class-based context\n    coverage: new r.Pointer(r.uint16, Coverage),\n    classDef: new r.Pointer(r.uint16, ClassDef),\n    classSetCnt: r.uint16,\n    classSet: new r.Array(new r.Pointer(r.uint16, ClassSet), 'classSetCnt')\n  },\n  3: {\n    glyphCount: r.uint16,\n    lookupCount: r.uint16,\n    coverages: new r.Array(new r.Pointer(r.uint16, Coverage), 'glyphCount'),\n    lookupRecords: new r.Array(LookupRecord, 'lookupCount')\n  }\n}); //######################################################\n// Chaining Contextual Substitution/Positioning Tables #\n//######################################################\n\nvar ChainRule = new r.Struct({\n  backtrackGlyphCount: r.uint16,\n  backtrack: new r.Array(r.uint16, 'backtrackGlyphCount'),\n  inputGlyphCount: r.uint16,\n  input: new r.Array(r.uint16, function (t) {\n    return t.inputGlyphCount - 1;\n  }),\n  lookaheadGlyphCount: r.uint16,\n  lookahead: new r.Array(r.uint16, 'lookaheadGlyphCount'),\n  lookupCount: r.uint16,\n  lookupRecords: new r.Array(LookupRecord, 'lookupCount')\n});\nvar ChainRuleSet = new r.Array(new r.Pointer(r.uint16, ChainRule), r.uint16);\nvar ChainingContext = new r.VersionedStruct(r.uint16, {\n  1: {\n    // Simple context glyph substitution\n    coverage: new r.Pointer(r.uint16, Coverage),\n    chainCount: r.uint16,\n    chainRuleSets: new r.Array(new r.Pointer(r.uint16, ChainRuleSet), 'chainCount')\n  },\n  2: {\n    // Class-based chaining context\n    coverage: new r.Pointer(r.uint16, Coverage),\n    backtrackClassDef: new r.Pointer(r.uint16, ClassDef),\n    inputClassDef: new r.Pointer(r.uint16, ClassDef),\n    lookaheadClassDef: new r.Pointer(r.uint16, ClassDef),\n    chainCount: r.uint16,\n    chainClassSet: new r.Array(new r.Pointer(r.uint16, ChainRuleSet), 'chainCount')\n  },\n  3: {\n    // Coverage-based chaining context\n    backtrackGlyphCount: r.uint16,\n    backtrackCoverage: new r.Array(new r.Pointer(r.uint16, Coverage), 'backtrackGlyphCount'),\n    inputGlyphCount: r.uint16,\n    inputCoverage: new r.Array(new r.Pointer(r.uint16, Coverage), 'inputGlyphCount'),\n    lookaheadGlyphCount: r.uint16,\n    lookaheadCoverage: new r.Array(new r.Pointer(r.uint16, Coverage), 'lookaheadGlyphCount'),\n    lookupCount: r.uint16,\n    lookupRecords: new r.Array(LookupRecord, 'lookupCount')\n  }\n});\n\n/*******************\r\n * Variation Store *\r\n *******************/\n\nvar F2DOT14 = new r.Fixed(16, 'BE', 14);\nvar RegionAxisCoordinates = new r.Struct({\n  startCoord: F2DOT14,\n  peakCoord: F2DOT14,\n  endCoord: F2DOT14\n});\nvar VariationRegionList = new r.Struct({\n  axisCount: r.uint16,\n  regionCount: r.uint16,\n  variationRegions: new r.Array(new r.Array(RegionAxisCoordinates, 'axisCount'), 'regionCount')\n});\nvar DeltaSet = new r.Struct({\n  shortDeltas: new r.Array(r.int16, function (t) {\n    return t.parent.shortDeltaCount;\n  }),\n  regionDeltas: new r.Array(r.int8, function (t) {\n    return t.parent.regionIndexCount - t.parent.shortDeltaCount;\n  }),\n  deltas: function deltas(t) {\n    return t.shortDeltas.concat(t.regionDeltas);\n  }\n});\nvar ItemVariationData = new r.Struct({\n  itemCount: r.uint16,\n  shortDeltaCount: r.uint16,\n  regionIndexCount: r.uint16,\n  regionIndexes: new r.Array(r.uint16, 'regionIndexCount'),\n  deltaSets: new r.Array(DeltaSet, 'itemCount')\n});\nvar ItemVariationStore = new r.Struct({\n  format: r.uint16,\n  variationRegionList: new r.Pointer(r.uint32, VariationRegionList),\n  variationDataCount: r.uint16,\n  itemVariationData: new r.Array(new r.Pointer(r.uint32, ItemVariationData), 'variationDataCount')\n});\n/**********************\r\n * Feature Variations *\r\n **********************/\n\nvar ConditionTable = new r.VersionedStruct(r.uint16, {\n  1: (_ = {\n    axisIndex: r.uint16\n  }, _[\"axisIndex\"] = r.uint16, _.filterRangeMinValue = F2DOT14, _.filterRangeMaxValue = F2DOT14, _)\n});\nvar ConditionSet = new r.Struct({\n  conditionCount: r.uint16,\n  conditionTable: new r.Array(new r.Pointer(r.uint32, ConditionTable), 'conditionCount')\n});\nvar FeatureTableSubstitutionRecord = new r.Struct({\n  featureIndex: r.uint16,\n  alternateFeatureTable: new r.Pointer(r.uint32, Feature, {\n    type: 'parent'\n  })\n});\nvar FeatureTableSubstitution = new r.Struct({\n  version: r.fixed32,\n  substitutionCount: r.uint16,\n  substitutions: new r.Array(FeatureTableSubstitutionRecord, 'substitutionCount')\n});\nvar FeatureVariationRecord = new r.Struct({\n  conditionSet: new r.Pointer(r.uint32, ConditionSet, {\n    type: 'parent'\n  }),\n  featureTableSubstitution: new r.Pointer(r.uint32, FeatureTableSubstitution, {\n    type: 'parent'\n  })\n});\nvar FeatureVariations = new r.Struct({\n  majorVersion: r.uint16,\n  minorVersion: r.uint16,\n  featureVariationRecordCount: r.uint32,\n  featureVariationRecords: new r.Array(FeatureVariationRecord, 'featureVariationRecordCount')\n});\n\n// otherwise delegates to the provided type.\nvar PredefinedOp = /*#__PURE__*/function () {\n  function PredefinedOp(predefinedOps, type) {\n    this.predefinedOps = predefinedOps;\n    this.type = type;\n  }\n  var _proto5 = PredefinedOp.prototype;\n  _proto5.decode = function decode(stream, parent, operands) {\n    if (this.predefinedOps[operands[0]]) {\n      return this.predefinedOps[operands[0]];\n    }\n    return this.type.decode(stream, parent, operands);\n  };\n  _proto5.size = function size(value, ctx) {\n    return this.type.size(value, ctx);\n  };\n  _proto5.encode = function encode(stream, value, ctx) {\n    var index = this.predefinedOps.indexOf(value);\n    if (index !== -1) {\n      return index;\n    }\n    return this.type.encode(stream, value, ctx);\n  };\n  return PredefinedOp;\n}();\nvar CFFEncodingVersion = /*#__PURE__*/function (_r$Number) {\n  _inheritsLoose(CFFEncodingVersion, _r$Number);\n  function CFFEncodingVersion() {\n    return _r$Number.call(this, 'UInt8') || this;\n  }\n  var _proto6 = CFFEncodingVersion.prototype;\n  _proto6.decode = function decode(stream) {\n    return r.uint8.decode(stream) & 0x7f;\n  };\n  return CFFEncodingVersion;\n}(r.Number);\nvar Range1 = new r.Struct({\n  first: r.uint16,\n  nLeft: r.uint8\n});\nvar Range2 = new r.Struct({\n  first: r.uint16,\n  nLeft: r.uint16\n});\nvar CFFCustomEncoding = new r.VersionedStruct(new CFFEncodingVersion(), {\n  0: {\n    nCodes: r.uint8,\n    codes: new r.Array(r.uint8, 'nCodes')\n  },\n  1: {\n    nRanges: r.uint8,\n    ranges: new r.Array(Range1, 'nRanges')\n  } // TODO: supplement?\n});\n\nvar CFFEncoding = new PredefinedOp([StandardEncoding, ExpertEncoding], new CFFPointer(CFFCustomEncoding, {\n  lazy: true\n})); // Decodes an array of ranges until the total\n// length is equal to the provided length.\nvar RangeArray = /*#__PURE__*/function (_r$Array) {\n  _inheritsLoose(RangeArray, _r$Array);\n  function RangeArray() {\n    return _r$Array.apply(this, arguments) || this;\n  }\n  var _proto7 = RangeArray.prototype;\n  _proto7.decode = function decode(stream, parent) {\n    var length = utils.resolveLength(this.length, stream, parent);\n    var count = 0;\n    var res = [];\n    while (count < length) {\n      var range = this.type.decode(stream, parent);\n      range.offset = count;\n      count += range.nLeft + 1;\n      res.push(range);\n    }\n    return res;\n  };\n  return RangeArray;\n}(r.Array);\nvar CFFCustomCharset = new r.VersionedStruct(r.uint8, {\n  0: {\n    glyphs: new r.Array(r.uint16, function (t) {\n      return t.parent.CharStrings.length - 1;\n    })\n  },\n  1: {\n    ranges: new RangeArray(Range1, function (t) {\n      return t.parent.CharStrings.length - 1;\n    })\n  },\n  2: {\n    ranges: new RangeArray(Range2, function (t) {\n      return t.parent.CharStrings.length - 1;\n    })\n  }\n});\nvar CFFCharset = new PredefinedOp([ISOAdobeCharset, ExpertCharset, ExpertSubsetCharset], new CFFPointer(CFFCustomCharset, {\n  lazy: true\n}));\nvar FDRange3 = new r.Struct({\n  first: r.uint16,\n  fd: r.uint8\n});\nvar FDRange4 = new r.Struct({\n  first: r.uint32,\n  fd: r.uint16\n});\nvar FDSelect = new r.VersionedStruct(r.uint8, {\n  0: {\n    fds: new r.Array(r.uint8, function (t) {\n      return t.parent.CharStrings.length;\n    })\n  },\n  3: {\n    nRanges: r.uint16,\n    ranges: new r.Array(FDRange3, 'nRanges'),\n    sentinel: r.uint16\n  },\n  4: {\n    nRanges: r.uint32,\n    ranges: new r.Array(FDRange4, 'nRanges'),\n    sentinel: r.uint32\n  }\n});\nvar ptr = new CFFPointer(CFFPrivateDict);\nvar CFFPrivateOp = /*#__PURE__*/function () {\n  function CFFPrivateOp() {}\n  var _proto8 = CFFPrivateOp.prototype;\n  _proto8.decode = function decode(stream, parent, operands) {\n    parent.length = operands[0];\n    return ptr.decode(stream, parent, [operands[1]]);\n  };\n  _proto8.size = function size(dict, ctx) {\n    return [CFFPrivateDict.size(dict, ctx, false), ptr.size(dict, ctx)[0]];\n  };\n  _proto8.encode = function encode(stream, dict, ctx) {\n    return [CFFPrivateDict.size(dict, ctx, false), ptr.encode(stream, dict, ctx)[0]];\n  };\n  return CFFPrivateOp;\n}();\nvar FontDict = new CFFDict([\n// key       name                   type(s)                                 default\n[18, 'Private', new CFFPrivateOp(), null], [[12, 38], 'FontName', 'sid', null], [[12, 7], 'FontMatrix', 'array', [0.001, 0, 0, 0.001, 0, 0]], [[12, 5], 'PaintType', 'number', 0]]);\nvar CFFTopDict = new CFFDict([\n// key       name                   type(s)                                 default\n[[12, 30], 'ROS', ['sid', 'sid', 'number'], null], [0, 'version', 'sid', null], [1, 'Notice', 'sid', null], [[12, 0], 'Copyright', 'sid', null], [2, 'FullName', 'sid', null], [3, 'FamilyName', 'sid', null], [4, 'Weight', 'sid', null], [[12, 1], 'isFixedPitch', 'boolean', false], [[12, 2], 'ItalicAngle', 'number', 0], [[12, 3], 'UnderlinePosition', 'number', -100], [[12, 4], 'UnderlineThickness', 'number', 50], [[12, 5], 'PaintType', 'number', 0], [[12, 6], 'CharstringType', 'number', 2], [[12, 7], 'FontMatrix', 'array', [0.001, 0, 0, 0.001, 0, 0]], [13, 'UniqueID', 'number', null], [5, 'FontBBox', 'array', [0, 0, 0, 0]], [[12, 8], 'StrokeWidth', 'number', 0], [14, 'XUID', 'array', null], [15, 'charset', CFFCharset, ISOAdobeCharset], [16, 'Encoding', CFFEncoding, StandardEncoding], [17, 'CharStrings', new CFFPointer(new CFFIndex()), null], [18, 'Private', new CFFPrivateOp(), null], [[12, 20], 'SyntheticBase', 'number', null], [[12, 21], 'PostScript', 'sid', null], [[12, 22], 'BaseFontName', 'sid', null], [[12, 23], 'BaseFontBlend', 'delta', null],\n// CID font specific\n[[12, 31], 'CIDFontVersion', 'number', 0], [[12, 32], 'CIDFontRevision', 'number', 0], [[12, 33], 'CIDFontType', 'number', 0], [[12, 34], 'CIDCount', 'number', 8720], [[12, 35], 'UIDBase', 'number', null], [[12, 37], 'FDSelect', new CFFPointer(FDSelect), null], [[12, 36], 'FDArray', new CFFPointer(new CFFIndex(FontDict)), null], [[12, 38], 'FontName', 'sid', null]]);\nvar VariationStore = new r.Struct({\n  length: r.uint16,\n  itemVariationStore: ItemVariationStore\n});\nvar CFF2TopDict = new CFFDict([[[12, 7], 'FontMatrix', 'array', [0.001, 0, 0, 0.001, 0, 0]], [17, 'CharStrings', new CFFPointer(new CFFIndex()), null], [[12, 37], 'FDSelect', new CFFPointer(FDSelect), null], [[12, 36], 'FDArray', new CFFPointer(new CFFIndex(FontDict)), null], [24, 'vstore', new CFFPointer(VariationStore), null], [25, 'maxstack', 'number', 193]]);\nvar CFFTop = new r.VersionedStruct(r.fixed16, {\n  1: {\n    hdrSize: r.uint8,\n    offSize: r.uint8,\n    nameIndex: new CFFIndex(new r.String('length')),\n    topDictIndex: new CFFIndex(CFFTopDict),\n    stringIndex: new CFFIndex(new r.String('length')),\n    globalSubrIndex: new CFFIndex()\n  },\n  2: {\n    hdrSize: r.uint8,\n    length: r.uint16,\n    topDict: CFF2TopDict,\n    globalSubrIndex: new CFFIndex()\n  }\n});\nvar CFFFont = /*#__PURE__*/function () {\n  function CFFFont(stream) {\n    this.stream = stream;\n    this.decode();\n  }\n  CFFFont.decode = function decode(stream) {\n    return new CFFFont(stream);\n  };\n  var _proto9 = CFFFont.prototype;\n  _proto9.decode = function decode() {\n    var start = this.stream.pos;\n    var top = CFFTop.decode(this.stream);\n    for (var key in top) {\n      var val = top[key];\n      this[key] = val;\n    }\n    if (this.version < 2) {\n      if (this.topDictIndex.length !== 1) {\n        throw new Error(\"Only a single font is allowed in CFF\");\n      }\n      this.topDict = this.topDictIndex[0];\n    }\n    this.isCIDFont = this.topDict.ROS != null;\n    return this;\n  };\n  _proto9.string = function string(sid) {\n    if (this.version >= 2) {\n      return null;\n    }\n    if (sid < standardStrings.length) {\n      return standardStrings[sid];\n    }\n    return this.stringIndex[sid - standardStrings.length];\n  };\n  _proto9.getCharString = function getCharString(glyph) {\n    this.stream.pos = this.topDict.CharStrings[glyph].offset;\n    return this.stream.readBuffer(this.topDict.CharStrings[glyph].length);\n  };\n  _proto9.getGlyphName = function getGlyphName(gid) {\n    // CFF2 glyph names are in the post table.\n    if (this.version >= 2) {\n      return null;\n    } // CID-keyed fonts don't have glyph names\n\n    if (this.isCIDFont) {\n      return null;\n    }\n    var charset = this.topDict.charset;\n    if (Array.isArray(charset)) {\n      return charset[gid];\n    }\n    if (gid === 0) {\n      return '.notdef';\n    }\n    gid -= 1;\n    switch (charset.version) {\n      case 0:\n        return this.string(charset.glyphs[gid]);\n      case 1:\n      case 2:\n        for (var i = 0; i < charset.ranges.length; i++) {\n          var range = charset.ranges[i];\n          if (range.offset <= gid && gid <= range.offset + range.nLeft) {\n            return this.string(range.first + (gid - range.offset));\n          }\n        }\n        break;\n    }\n    return null;\n  };\n  _proto9.fdForGlyph = function fdForGlyph(gid) {\n    if (!this.topDict.FDSelect) {\n      return null;\n    }\n    switch (this.topDict.FDSelect.version) {\n      case 0:\n        return this.topDict.FDSelect.fds[gid];\n      case 3:\n      case 4:\n        var ranges = this.topDict.FDSelect.ranges;\n        var low = 0;\n        var high = ranges.length - 1;\n        while (low <= high) {\n          var mid = low + high >> 1;\n          if (gid < ranges[mid].first) {\n            high = mid - 1;\n          } else if (mid < high && gid >= ranges[mid + 1].first) {\n            low = mid + 1;\n          } else {\n            return ranges[mid].fd;\n          }\n        }\n      default:\n        throw new Error(\"Unknown FDSelect version: \".concat(this.topDict.FDSelect.version));\n    }\n  };\n  _proto9.privateDictForGlyph = function privateDictForGlyph(gid) {\n    if (this.topDict.FDSelect) {\n      var fd = this.fdForGlyph(gid);\n      if (this.topDict.FDArray[fd]) {\n        return this.topDict.FDArray[fd].Private;\n      }\n      return null;\n    }\n    if (this.version < 2) {\n      return this.topDict.Private;\n    }\n    return this.topDict.FDArray[0].Private;\n  };\n  _createClass(CFFFont, [{\n    key: \"postscriptName\",\n    get: function get() {\n      if (this.version < 2) {\n        return this.nameIndex[0];\n      }\n      return null;\n    }\n  }, {\n    key: \"fullName\",\n    get: function get() {\n      return this.string(this.topDict.FullName);\n    }\n  }, {\n    key: \"familyName\",\n    get: function get() {\n      return this.string(this.topDict.FamilyName);\n    }\n  }]);\n  return CFFFont;\n}();\nvar VerticalOrigin = new r.Struct({\n  glyphIndex: r.uint16,\n  vertOriginY: r.int16\n});\nvar VORG = new r.Struct({\n  majorVersion: r.uint16,\n  minorVersion: r.uint16,\n  defaultVertOriginY: r.int16,\n  numVertOriginYMetrics: r.uint16,\n  metrics: new r.Array(VerticalOrigin, 'numVertOriginYMetrics')\n});\nvar BigMetrics = new r.Struct({\n  height: r.uint8,\n  width: r.uint8,\n  horiBearingX: r.int8,\n  horiBearingY: r.int8,\n  horiAdvance: r.uint8,\n  vertBearingX: r.int8,\n  vertBearingY: r.int8,\n  vertAdvance: r.uint8\n});\nvar SmallMetrics = new r.Struct({\n  height: r.uint8,\n  width: r.uint8,\n  bearingX: r.int8,\n  bearingY: r.int8,\n  advance: r.uint8\n});\nvar EBDTComponent = new r.Struct({\n  glyph: r.uint16,\n  xOffset: r.int8,\n  yOffset: r.int8\n});\nvar ByteAligned = function ByteAligned() {};\nvar BitAligned = function BitAligned() {};\nvar glyph = new r.VersionedStruct('version', {\n  1: {\n    metrics: SmallMetrics,\n    data: ByteAligned\n  },\n  2: {\n    metrics: SmallMetrics,\n    data: BitAligned\n  },\n  // format 3 is deprecated\n  // format 4 is not supported by Microsoft\n  5: {\n    data: BitAligned\n  },\n  6: {\n    metrics: BigMetrics,\n    data: ByteAligned\n  },\n  7: {\n    metrics: BigMetrics,\n    data: BitAligned\n  },\n  8: {\n    metrics: SmallMetrics,\n    pad: new r.Reserved(r.uint8),\n    numComponents: r.uint16,\n    components: new r.Array(EBDTComponent, 'numComponents')\n  },\n  9: {\n    metrics: BigMetrics,\n    pad: new r.Reserved(r.uint8),\n    numComponents: r.uint16,\n    components: new r.Array(EBDTComponent, 'numComponents')\n  },\n  17: {\n    metrics: SmallMetrics,\n    dataLen: r.uint32,\n    data: new r.Buffer('dataLen')\n  },\n  18: {\n    metrics: BigMetrics,\n    dataLen: r.uint32,\n    data: new r.Buffer('dataLen')\n  },\n  19: {\n    dataLen: r.uint32,\n    data: new r.Buffer('dataLen')\n  }\n});\nvar SBitLineMetrics = new r.Struct({\n  ascender: r.int8,\n  descender: r.int8,\n  widthMax: r.uint8,\n  caretSlopeNumerator: r.int8,\n  caretSlopeDenominator: r.int8,\n  caretOffset: r.int8,\n  minOriginSB: r.int8,\n  minAdvanceSB: r.int8,\n  maxBeforeBL: r.int8,\n  minAfterBL: r.int8,\n  pad: new r.Reserved(r.int8, 2)\n});\nvar CodeOffsetPair = new r.Struct({\n  glyphCode: r.uint16,\n  offset: r.uint16\n});\nvar IndexSubtable = new r.VersionedStruct(r.uint16, {\n  header: {\n    imageFormat: r.uint16,\n    imageDataOffset: r.uint32\n  },\n  1: {\n    offsetArray: new r.Array(r.uint32, function (t) {\n      return t.parent.lastGlyphIndex - t.parent.firstGlyphIndex + 1;\n    })\n  },\n  2: {\n    imageSize: r.uint32,\n    bigMetrics: BigMetrics\n  },\n  3: {\n    offsetArray: new r.Array(r.uint16, function (t) {\n      return t.parent.lastGlyphIndex - t.parent.firstGlyphIndex + 1;\n    })\n  },\n  4: {\n    numGlyphs: r.uint32,\n    glyphArray: new r.Array(CodeOffsetPair, function (t) {\n      return t.numGlyphs + 1;\n    })\n  },\n  5: {\n    imageSize: r.uint32,\n    bigMetrics: BigMetrics,\n    numGlyphs: r.uint32,\n    glyphCodeArray: new r.Array(r.uint16, 'numGlyphs')\n  }\n});\nvar IndexSubtableArray = new r.Struct({\n  firstGlyphIndex: r.uint16,\n  lastGlyphIndex: r.uint16,\n  subtable: new r.Pointer(r.uint32, IndexSubtable)\n});\nvar BitmapSizeTable = new r.Struct({\n  indexSubTableArray: new r.Pointer(r.uint32, new r.Array(IndexSubtableArray, 1), {\n    type: 'parent'\n  }),\n  indexTablesSize: r.uint32,\n  numberOfIndexSubTables: r.uint32,\n  colorRef: r.uint32,\n  hori: SBitLineMetrics,\n  vert: SBitLineMetrics,\n  startGlyphIndex: r.uint16,\n  endGlyphIndex: r.uint16,\n  ppemX: r.uint8,\n  ppemY: r.uint8,\n  bitDepth: r.uint8,\n  flags: new r.Bitfield(r.uint8, ['horizontal', 'vertical'])\n});\nvar EBLC = new r.Struct({\n  version: r.uint32,\n  // 0x00020000\n  numSizes: r.uint32,\n  sizes: new r.Array(BitmapSizeTable, 'numSizes')\n});\nvar ImageTable = new r.Struct({\n  ppem: r.uint16,\n  resolution: r.uint16,\n  imageOffsets: new r.Array(new r.Pointer(r.uint32, 'void'), function (t) {\n    return t.parent.parent.maxp.numGlyphs + 1;\n  })\n}); // This is the Apple sbix table, used by the \"Apple Color Emoji\" font.\n// It includes several image tables with images for each bitmap glyph\n// of several different sizes.\n\nvar sbix = new r.Struct({\n  version: r.uint16,\n  flags: new r.Bitfield(r.uint16, ['renderOutlines']),\n  numImgTables: r.uint32,\n  imageTables: new r.Array(new r.Pointer(r.uint32, ImageTable), 'numImgTables')\n});\nvar LayerRecord = new r.Struct({\n  gid: r.uint16,\n  // Glyph ID of layer glyph (must be in z-order from bottom to top).\n  paletteIndex: r.uint16 // Index value to use in the appropriate palette. This value must\n}); // be less than numPaletteEntries in the CPAL table, except for\n// the special case noted below. Each palette entry is 16 bits.\n// A palette index of 0xFFFF is a special case indicating that\n// the text foreground color should be used.\n\nvar BaseGlyphRecord = new r.Struct({\n  gid: r.uint16,\n  // Glyph ID of reference glyph. This glyph is for reference only\n  // and is not rendered for color.\n  firstLayerIndex: r.uint16,\n  // Index (from beginning of the Layer Records) to the layer record.\n  // There will be numLayers consecutive entries for this base glyph.\n  numLayers: r.uint16\n});\nvar COLR = new r.Struct({\n  version: r.uint16,\n  numBaseGlyphRecords: r.uint16,\n  baseGlyphRecord: new r.Pointer(r.uint32, new r.Array(BaseGlyphRecord, 'numBaseGlyphRecords')),\n  layerRecords: new r.Pointer(r.uint32, new r.Array(LayerRecord, 'numLayerRecords'), {\n    lazy: true\n  }),\n  numLayerRecords: r.uint16\n});\nvar ColorRecord = new r.Struct({\n  blue: r.uint8,\n  green: r.uint8,\n  red: r.uint8,\n  alpha: r.uint8\n});\nvar CPAL = new r.VersionedStruct(r.uint16, {\n  header: {\n    numPaletteEntries: r.uint16,\n    numPalettes: r.uint16,\n    numColorRecords: r.uint16,\n    colorRecords: new r.Pointer(r.uint32, new r.Array(ColorRecord, 'numColorRecords')),\n    colorRecordIndices: new r.Array(r.uint16, 'numPalettes')\n  },\n  0: {},\n  1: {\n    offsetPaletteTypeArray: new r.Pointer(r.uint32, new r.Array(r.uint32, 'numPalettes')),\n    offsetPaletteLabelArray: new r.Pointer(r.uint32, new r.Array(r.uint16, 'numPalettes')),\n    offsetPaletteEntryLabelArray: new r.Pointer(r.uint32, new r.Array(r.uint16, 'numPaletteEntries'))\n  }\n});\nvar BaseCoord = new r.VersionedStruct(r.uint16, {\n  1: {\n    // Design units only\n    coordinate: r.int16 // X or Y value, in design units\n  },\n\n  2: {\n    // Design units plus contour point\n    coordinate: r.int16,\n    // X or Y value, in design units\n    referenceGlyph: r.uint16,\n    // GlyphID of control glyph\n    baseCoordPoint: r.uint16 // Index of contour point on the referenceGlyph\n  },\n\n  3: {\n    // Design units plus Device table\n    coordinate: r.int16,\n    // X or Y value, in design units\n    deviceTable: new r.Pointer(r.uint16, Device) // Device table for X or Y value\n  }\n});\n\nvar BaseValues = new r.Struct({\n  defaultIndex: r.uint16,\n  // Index of default baseline for this script-same index in the BaseTagList\n  baseCoordCount: r.uint16,\n  baseCoords: new r.Array(new r.Pointer(r.uint16, BaseCoord), 'baseCoordCount')\n});\nvar FeatMinMaxRecord = new r.Struct({\n  tag: new r.String(4),\n  // 4-byte feature identification tag-must match FeatureTag in FeatureList\n  minCoord: new r.Pointer(r.uint16, BaseCoord, {\n    type: 'parent'\n  }),\n  // May be NULL\n  maxCoord: new r.Pointer(r.uint16, BaseCoord, {\n    type: 'parent'\n  }) // May be NULL\n});\n\nvar MinMax = new r.Struct({\n  minCoord: new r.Pointer(r.uint16, BaseCoord),\n  // May be NULL\n  maxCoord: new r.Pointer(r.uint16, BaseCoord),\n  // May be NULL\n  featMinMaxCount: r.uint16,\n  // May be 0\n  featMinMaxRecords: new r.Array(FeatMinMaxRecord, 'featMinMaxCount') // In alphabetical order\n});\n\nvar BaseLangSysRecord = new r.Struct({\n  tag: new r.String(4),\n  // 4-byte language system identification tag\n  minMax: new r.Pointer(r.uint16, MinMax, {\n    type: 'parent'\n  })\n});\nvar BaseScript = new r.Struct({\n  baseValues: new r.Pointer(r.uint16, BaseValues),\n  // May be NULL\n  defaultMinMax: new r.Pointer(r.uint16, MinMax),\n  // May be NULL\n  baseLangSysCount: r.uint16,\n  // May be 0\n  baseLangSysRecords: new r.Array(BaseLangSysRecord, 'baseLangSysCount') // in alphabetical order by BaseLangSysTag\n});\n\nvar BaseScriptRecord = new r.Struct({\n  tag: new r.String(4),\n  // 4-byte script identification tag\n  script: new r.Pointer(r.uint16, BaseScript, {\n    type: 'parent'\n  })\n});\nvar BaseScriptList = new r.Array(BaseScriptRecord, r.uint16); // Array of 4-byte baseline identification tags-must be in alphabetical order\n\nvar BaseTagList = new r.Array(new r.String(4), r.uint16);\nvar Axis = new r.Struct({\n  baseTagList: new r.Pointer(r.uint16, BaseTagList),\n  // May be NULL\n  baseScriptList: new r.Pointer(r.uint16, BaseScriptList)\n});\nvar BASE = new r.VersionedStruct(r.uint32, {\n  header: {\n    horizAxis: new r.Pointer(r.uint16, Axis),\n    // May be NULL\n    vertAxis: new r.Pointer(r.uint16, Axis) // May be NULL\n  },\n\n  0x00010000: {},\n  0x00010001: {\n    itemVariationStore: new r.Pointer(r.uint32, ItemVariationStore)\n  }\n});\nvar AttachPoint = new r.Array(r.uint16, r.uint16);\nvar AttachList = new r.Struct({\n  coverage: new r.Pointer(r.uint16, Coverage),\n  glyphCount: r.uint16,\n  attachPoints: new r.Array(new r.Pointer(r.uint16, AttachPoint), 'glyphCount')\n});\nvar CaretValue = new r.VersionedStruct(r.uint16, {\n  1: {\n    // Design units only\n    coordinate: r.int16\n  },\n  2: {\n    // Contour point\n    caretValuePoint: r.uint16\n  },\n  3: {\n    // Design units plus Device table\n    coordinate: r.int16,\n    deviceTable: new r.Pointer(r.uint16, Device)\n  }\n});\nvar LigGlyph = new r.Array(new r.Pointer(r.uint16, CaretValue), r.uint16);\nvar LigCaretList = new r.Struct({\n  coverage: new r.Pointer(r.uint16, Coverage),\n  ligGlyphCount: r.uint16,\n  ligGlyphs: new r.Array(new r.Pointer(r.uint16, LigGlyph), 'ligGlyphCount')\n});\nvar MarkGlyphSetsDef = new r.Struct({\n  markSetTableFormat: r.uint16,\n  markSetCount: r.uint16,\n  coverage: new r.Array(new r.Pointer(r.uint32, Coverage), 'markSetCount')\n});\nvar GDEF = new r.VersionedStruct(r.uint32, {\n  header: {\n    glyphClassDef: new r.Pointer(r.uint16, ClassDef),\n    attachList: new r.Pointer(r.uint16, AttachList),\n    ligCaretList: new r.Pointer(r.uint16, LigCaretList),\n    markAttachClassDef: new r.Pointer(r.uint16, ClassDef)\n  },\n  0x00010000: {},\n  0x00010002: {\n    markGlyphSetsDef: new r.Pointer(r.uint16, MarkGlyphSetsDef)\n  },\n  0x00010003: {\n    markGlyphSetsDef: new r.Pointer(r.uint16, MarkGlyphSetsDef),\n    itemVariationStore: new r.Pointer(r.uint32, ItemVariationStore)\n  }\n});\nvar ValueFormat = new r.Bitfield(r.uint16, ['xPlacement', 'yPlacement', 'xAdvance', 'yAdvance', 'xPlaDevice', 'yPlaDevice', 'xAdvDevice', 'yAdvDevice']);\nvar types = {\n  xPlacement: r.int16,\n  yPlacement: r.int16,\n  xAdvance: r.int16,\n  yAdvance: r.int16,\n  xPlaDevice: new r.Pointer(r.uint16, Device, {\n    type: 'global',\n    relativeTo: function relativeTo(ctx) {\n      return ctx.rel;\n    }\n  }),\n  yPlaDevice: new r.Pointer(r.uint16, Device, {\n    type: 'global',\n    relativeTo: function relativeTo(ctx) {\n      return ctx.rel;\n    }\n  }),\n  xAdvDevice: new r.Pointer(r.uint16, Device, {\n    type: 'global',\n    relativeTo: function relativeTo(ctx) {\n      return ctx.rel;\n    }\n  }),\n  yAdvDevice: new r.Pointer(r.uint16, Device, {\n    type: 'global',\n    relativeTo: function relativeTo(ctx) {\n      return ctx.rel;\n    }\n  })\n};\nvar ValueRecord = /*#__PURE__*/function () {\n  function ValueRecord(key) {\n    if (key === void 0) {\n      key = 'valueFormat';\n    }\n    this.key = key;\n  }\n  var _proto10 = ValueRecord.prototype;\n  _proto10.buildStruct = function buildStruct(parent) {\n    var struct = parent;\n    while (!struct[this.key] && struct.parent) {\n      struct = struct.parent;\n    }\n    if (!struct[this.key]) return;\n    var fields = {};\n    fields.rel = function () {\n      return struct._startOffset;\n    };\n    var format = struct[this.key];\n    for (var key in format) {\n      if (format[key]) {\n        fields[key] = types[key];\n      }\n    }\n    return new r.Struct(fields);\n  };\n  _proto10.size = function size(val, ctx) {\n    return this.buildStruct(ctx).size(val, ctx);\n  };\n  _proto10.decode = function decode(stream, parent) {\n    var res = this.buildStruct(parent).decode(stream, parent);\n    delete res.rel;\n    return res;\n  };\n  return ValueRecord;\n}();\nvar PairValueRecord = new r.Struct({\n  secondGlyph: r.uint16,\n  value1: new ValueRecord('valueFormat1'),\n  value2: new ValueRecord('valueFormat2')\n});\nvar PairSet = new r.Array(PairValueRecord, r.uint16);\nvar Class2Record = new r.Struct({\n  value1: new ValueRecord('valueFormat1'),\n  value2: new ValueRecord('valueFormat2')\n});\nvar Anchor = new r.VersionedStruct(r.uint16, {\n  1: {\n    // Design units only\n    xCoordinate: r.int16,\n    yCoordinate: r.int16\n  },\n  2: {\n    // Design units plus contour point\n    xCoordinate: r.int16,\n    yCoordinate: r.int16,\n    anchorPoint: r.uint16\n  },\n  3: {\n    // Design units plus Device tables\n    xCoordinate: r.int16,\n    yCoordinate: r.int16,\n    xDeviceTable: new r.Pointer(r.uint16, Device),\n    yDeviceTable: new r.Pointer(r.uint16, Device)\n  }\n});\nvar EntryExitRecord = new r.Struct({\n  entryAnchor: new r.Pointer(r.uint16, Anchor, {\n    type: 'parent'\n  }),\n  exitAnchor: new r.Pointer(r.uint16, Anchor, {\n    type: 'parent'\n  })\n});\nvar MarkRecord = new r.Struct({\n  class: r.uint16,\n  markAnchor: new r.Pointer(r.uint16, Anchor, {\n    type: 'parent'\n  })\n});\nvar MarkArray = new r.Array(MarkRecord, r.uint16);\nvar BaseRecord = new r.Array(new r.Pointer(r.uint16, Anchor), function (t) {\n  return t.parent.classCount;\n});\nvar BaseArray = new r.Array(BaseRecord, r.uint16);\nvar ComponentRecord = new r.Array(new r.Pointer(r.uint16, Anchor), function (t) {\n  return t.parent.parent.classCount;\n});\nvar LigatureAttach = new r.Array(ComponentRecord, r.uint16);\nvar LigatureArray = new r.Array(new r.Pointer(r.uint16, LigatureAttach), r.uint16);\nvar GPOSLookup = new r.VersionedStruct('lookupType', {\n  1: new r.VersionedStruct(r.uint16, {\n    // Single Adjustment\n    1: {\n      // Single positioning value\n      coverage: new r.Pointer(r.uint16, Coverage),\n      valueFormat: ValueFormat,\n      value: new ValueRecord()\n    },\n    2: {\n      coverage: new r.Pointer(r.uint16, Coverage),\n      valueFormat: ValueFormat,\n      valueCount: r.uint16,\n      values: new r.LazyArray(new ValueRecord(), 'valueCount')\n    }\n  }),\n  2: new r.VersionedStruct(r.uint16, {\n    // Pair Adjustment Positioning\n    1: {\n      // Adjustments for glyph pairs\n      coverage: new r.Pointer(r.uint16, Coverage),\n      valueFormat1: ValueFormat,\n      valueFormat2: ValueFormat,\n      pairSetCount: r.uint16,\n      pairSets: new r.LazyArray(new r.Pointer(r.uint16, PairSet), 'pairSetCount')\n    },\n    2: {\n      // Class pair adjustment\n      coverage: new r.Pointer(r.uint16, Coverage),\n      valueFormat1: ValueFormat,\n      valueFormat2: ValueFormat,\n      classDef1: new r.Pointer(r.uint16, ClassDef),\n      classDef2: new r.Pointer(r.uint16, ClassDef),\n      class1Count: r.uint16,\n      class2Count: r.uint16,\n      classRecords: new r.LazyArray(new r.LazyArray(Class2Record, 'class2Count'), 'class1Count')\n    }\n  }),\n  3: {\n    // Cursive Attachment Positioning\n    format: r.uint16,\n    coverage: new r.Pointer(r.uint16, Coverage),\n    entryExitCount: r.uint16,\n    entryExitRecords: new r.Array(EntryExitRecord, 'entryExitCount')\n  },\n  4: {\n    // MarkToBase Attachment Positioning\n    format: r.uint16,\n    markCoverage: new r.Pointer(r.uint16, Coverage),\n    baseCoverage: new r.Pointer(r.uint16, Coverage),\n    classCount: r.uint16,\n    markArray: new r.Pointer(r.uint16, MarkArray),\n    baseArray: new r.Pointer(r.uint16, BaseArray)\n  },\n  5: {\n    // MarkToLigature Attachment Positioning\n    format: r.uint16,\n    markCoverage: new r.Pointer(r.uint16, Coverage),\n    ligatureCoverage: new r.Pointer(r.uint16, Coverage),\n    classCount: r.uint16,\n    markArray: new r.Pointer(r.uint16, MarkArray),\n    ligatureArray: new r.Pointer(r.uint16, LigatureArray)\n  },\n  6: {\n    // MarkToMark Attachment Positioning\n    format: r.uint16,\n    mark1Coverage: new r.Pointer(r.uint16, Coverage),\n    mark2Coverage: new r.Pointer(r.uint16, Coverage),\n    classCount: r.uint16,\n    mark1Array: new r.Pointer(r.uint16, MarkArray),\n    mark2Array: new r.Pointer(r.uint16, BaseArray)\n  },\n  7: Context,\n  // Contextual positioning\n  8: ChainingContext,\n  // Chaining contextual positioning\n  9: {\n    // Extension Positioning\n    posFormat: r.uint16,\n    lookupType: r.uint16,\n    // cannot also be 9\n    extension: new r.Pointer(r.uint32, GPOSLookup)\n  }\n}); // Fix circular reference\n\nGPOSLookup.versions[9].extension.type = GPOSLookup;\nvar GPOS = new r.VersionedStruct(r.uint32, {\n  header: {\n    scriptList: new r.Pointer(r.uint16, ScriptList),\n    featureList: new r.Pointer(r.uint16, FeatureList),\n    lookupList: new r.Pointer(r.uint16, new LookupList(GPOSLookup))\n  },\n  0x00010000: {},\n  0x00010001: {\n    featureVariations: new r.Pointer(r.uint32, FeatureVariations)\n  }\n}); // export GPOSLookup for JSTF table\n\nvar Sequence = new r.Array(r.uint16, r.uint16);\nvar AlternateSet = Sequence;\nvar Ligature = new r.Struct({\n  glyph: r.uint16,\n  compCount: r.uint16,\n  components: new r.Array(r.uint16, function (t) {\n    return t.compCount - 1;\n  })\n});\nvar LigatureSet = new r.Array(new r.Pointer(r.uint16, Ligature), r.uint16);\nvar GSUBLookup = new r.VersionedStruct('lookupType', {\n  1: new r.VersionedStruct(r.uint16, {\n    // Single Substitution\n    1: {\n      coverage: new r.Pointer(r.uint16, Coverage),\n      deltaGlyphID: r.int16\n    },\n    2: {\n      coverage: new r.Pointer(r.uint16, Coverage),\n      glyphCount: r.uint16,\n      substitute: new r.LazyArray(r.uint16, 'glyphCount')\n    }\n  }),\n  2: {\n    // Multiple Substitution\n    substFormat: r.uint16,\n    coverage: new r.Pointer(r.uint16, Coverage),\n    count: r.uint16,\n    sequences: new r.LazyArray(new r.Pointer(r.uint16, Sequence), 'count')\n  },\n  3: {\n    // Alternate Substitution\n    substFormat: r.uint16,\n    coverage: new r.Pointer(r.uint16, Coverage),\n    count: r.uint16,\n    alternateSet: new r.LazyArray(new r.Pointer(r.uint16, AlternateSet), 'count')\n  },\n  4: {\n    // Ligature Substitution\n    substFormat: r.uint16,\n    coverage: new r.Pointer(r.uint16, Coverage),\n    count: r.uint16,\n    ligatureSets: new r.LazyArray(new r.Pointer(r.uint16, LigatureSet), 'count')\n  },\n  5: Context,\n  // Contextual Substitution\n  6: ChainingContext,\n  // Chaining Contextual Substitution\n  7: {\n    // Extension Substitution\n    substFormat: r.uint16,\n    lookupType: r.uint16,\n    // cannot also be 7\n    extension: new r.Pointer(r.uint32, GSUBLookup)\n  },\n  8: {\n    // Reverse Chaining Contextual Single Substitution\n    substFormat: r.uint16,\n    coverage: new r.Pointer(r.uint16, Coverage),\n    backtrackCoverage: new r.Array(new r.Pointer(r.uint16, Coverage), 'backtrackGlyphCount'),\n    lookaheadGlyphCount: r.uint16,\n    lookaheadCoverage: new r.Array(new r.Pointer(r.uint16, Coverage), 'lookaheadGlyphCount'),\n    glyphCount: r.uint16,\n    substitutes: new r.Array(r.uint16, 'glyphCount')\n  }\n}); // Fix circular reference\n\nGSUBLookup.versions[7].extension.type = GSUBLookup;\nvar GSUB = new r.VersionedStruct(r.uint32, {\n  header: {\n    scriptList: new r.Pointer(r.uint16, ScriptList),\n    featureList: new r.Pointer(r.uint16, FeatureList),\n    lookupList: new r.Pointer(r.uint16, new LookupList(GSUBLookup))\n  },\n  0x00010000: {},\n  0x00010001: {\n    featureVariations: new r.Pointer(r.uint32, FeatureVariations)\n  }\n});\nvar JstfGSUBModList = new r.Array(r.uint16, r.uint16);\nvar JstfPriority = new r.Struct({\n  shrinkageEnableGSUB: new r.Pointer(r.uint16, JstfGSUBModList),\n  shrinkageDisableGSUB: new r.Pointer(r.uint16, JstfGSUBModList),\n  shrinkageEnableGPOS: new r.Pointer(r.uint16, JstfGSUBModList),\n  shrinkageDisableGPOS: new r.Pointer(r.uint16, JstfGSUBModList),\n  shrinkageJstfMax: new r.Pointer(r.uint16, new LookupList(GPOSLookup)),\n  extensionEnableGSUB: new r.Pointer(r.uint16, JstfGSUBModList),\n  extensionDisableGSUB: new r.Pointer(r.uint16, JstfGSUBModList),\n  extensionEnableGPOS: new r.Pointer(r.uint16, JstfGSUBModList),\n  extensionDisableGPOS: new r.Pointer(r.uint16, JstfGSUBModList),\n  extensionJstfMax: new r.Pointer(r.uint16, new LookupList(GPOSLookup))\n});\nvar JstfLangSys = new r.Array(new r.Pointer(r.uint16, JstfPriority), r.uint16);\nvar JstfLangSysRecord = new r.Struct({\n  tag: new r.String(4),\n  jstfLangSys: new r.Pointer(r.uint16, JstfLangSys)\n});\nvar JstfScript = new r.Struct({\n  extenderGlyphs: new r.Pointer(r.uint16, new r.Array(r.uint16, r.uint16)),\n  // array of glyphs to extend line length\n  defaultLangSys: new r.Pointer(r.uint16, JstfLangSys),\n  langSysCount: r.uint16,\n  langSysRecords: new r.Array(JstfLangSysRecord, 'langSysCount')\n});\nvar JstfScriptRecord = new r.Struct({\n  tag: new r.String(4),\n  script: new r.Pointer(r.uint16, JstfScript, {\n    type: 'parent'\n  })\n});\nvar JSTF = new r.Struct({\n  version: r.uint32,\n  // should be 0x00010000\n  scriptCount: r.uint16,\n  scriptList: new r.Array(JstfScriptRecord, 'scriptCount')\n});\nvar VariableSizeNumber = /*#__PURE__*/function () {\n  function VariableSizeNumber(size) {\n    this._size = size;\n  }\n  var _proto11 = VariableSizeNumber.prototype;\n  _proto11.decode = function decode(stream, parent) {\n    switch (this.size(0, parent)) {\n      case 1:\n        return stream.readUInt8();\n      case 2:\n        return stream.readUInt16BE();\n      case 3:\n        return stream.readUInt24BE();\n      case 4:\n        return stream.readUInt32BE();\n    }\n  };\n  _proto11.size = function size(val, parent) {\n    return utils.resolveLength(this._size, null, parent);\n  };\n  return VariableSizeNumber;\n}();\nvar MapDataEntry = new r.Struct({\n  entry: new VariableSizeNumber(function (t) {\n    return ((t.parent.entryFormat & 0x0030) >> 4) + 1;\n  }),\n  outerIndex: function outerIndex(t) {\n    return t.entry >> (t.parent.entryFormat & 0x000F) + 1;\n  },\n  innerIndex: function innerIndex(t) {\n    return t.entry & (1 << (t.parent.entryFormat & 0x000F) + 1) - 1;\n  }\n});\nvar DeltaSetIndexMap = new r.Struct({\n  entryFormat: r.uint16,\n  mapCount: r.uint16,\n  mapData: new r.Array(MapDataEntry, 'mapCount')\n});\nvar HVAR = new r.Struct({\n  majorVersion: r.uint16,\n  minorVersion: r.uint16,\n  itemVariationStore: new r.Pointer(r.uint32, ItemVariationStore),\n  advanceWidthMapping: new r.Pointer(r.uint32, DeltaSetIndexMap),\n  LSBMapping: new r.Pointer(r.uint32, DeltaSetIndexMap),\n  RSBMapping: new r.Pointer(r.uint32, DeltaSetIndexMap)\n});\nvar Signature = new r.Struct({\n  format: r.uint32,\n  length: r.uint32,\n  offset: r.uint32\n});\nvar SignatureBlock = new r.Struct({\n  reserved: new r.Reserved(r.uint16, 2),\n  cbSignature: r.uint32,\n  // Length (in bytes) of the PKCS#7 packet in pbSignature\n  signature: new r.Buffer('cbSignature')\n});\nvar DSIG = new r.Struct({\n  ulVersion: r.uint32,\n  // Version number of the DSIG table (0x00000001)\n  usNumSigs: r.uint16,\n  // Number of signatures in the table\n  usFlag: r.uint16,\n  // Permission flags\n  signatures: new r.Array(Signature, 'usNumSigs'),\n  signatureBlocks: new r.Array(SignatureBlock, 'usNumSigs')\n});\nvar GaspRange = new r.Struct({\n  rangeMaxPPEM: r.uint16,\n  // Upper limit of range, in ppem\n  rangeGaspBehavior: new r.Bitfield(r.uint16, [\n  // Flags describing desired rasterizer behavior\n  'grayscale', 'gridfit', 'symmetricSmoothing', 'symmetricGridfit' // only in version 1, for ClearType\n  ])\n});\n\nvar gasp = new r.Struct({\n  version: r.uint16,\n  // set to 0\n  numRanges: r.uint16,\n  gaspRanges: new r.Array(GaspRange, 'numRanges') // Sorted by ppem\n});\n\nvar DeviceRecord = new r.Struct({\n  pixelSize: r.uint8,\n  maximumWidth: r.uint8,\n  widths: new r.Array(r.uint8, function (t) {\n    return t.parent.parent.maxp.numGlyphs;\n  })\n}); // The Horizontal Device Metrics table stores integer advance widths scaled to particular pixel sizes\n\nvar hdmx = new r.Struct({\n  version: r.uint16,\n  numRecords: r.int16,\n  sizeDeviceRecord: r.int32,\n  records: new r.Array(DeviceRecord, 'numRecords')\n});\nvar KernPair = new r.Struct({\n  left: r.uint16,\n  right: r.uint16,\n  value: r.int16\n});\nvar ClassTable = new r.Struct({\n  firstGlyph: r.uint16,\n  nGlyphs: r.uint16,\n  offsets: new r.Array(r.uint16, 'nGlyphs'),\n  max: function max(t) {\n    return t.offsets.length && Math.max.apply(Math, t.offsets);\n  }\n});\nvar Kern2Array = new r.Struct({\n  off: function off(t) {\n    return t._startOffset - t.parent.parent._startOffset;\n  },\n  len: function len(t) {\n    return ((t.parent.leftTable.max - t.off) / t.parent.rowWidth + 1) * (t.parent.rowWidth / 2);\n  },\n  values: new r.LazyArray(r.int16, 'len')\n});\nvar KernSubtable = new r.VersionedStruct('format', {\n  0: {\n    nPairs: r.uint16,\n    searchRange: r.uint16,\n    entrySelector: r.uint16,\n    rangeShift: r.uint16,\n    pairs: new r.Array(KernPair, 'nPairs')\n  },\n  2: {\n    rowWidth: r.uint16,\n    leftTable: new r.Pointer(r.uint16, ClassTable, {\n      type: 'parent'\n    }),\n    rightTable: new r.Pointer(r.uint16, ClassTable, {\n      type: 'parent'\n    }),\n    array: new r.Pointer(r.uint16, Kern2Array, {\n      type: 'parent'\n    })\n  },\n  3: {\n    glyphCount: r.uint16,\n    kernValueCount: r.uint8,\n    leftClassCount: r.uint8,\n    rightClassCount: r.uint8,\n    flags: r.uint8,\n    kernValue: new r.Array(r.int16, 'kernValueCount'),\n    leftClass: new r.Array(r.uint8, 'glyphCount'),\n    rightClass: new r.Array(r.uint8, 'glyphCount'),\n    kernIndex: new r.Array(r.uint8, function (t) {\n      return t.leftClassCount * t.rightClassCount;\n    })\n  }\n});\nvar KernTable = new r.VersionedStruct('version', {\n  0: {\n    // Microsoft uses this format\n    subVersion: r.uint16,\n    // Microsoft has an extra sub-table version number\n    length: r.uint16,\n    // Length of the subtable, in bytes\n    format: r.uint8,\n    // Format of subtable\n    coverage: new r.Bitfield(r.uint8, ['horizontal',\n    // 1 if table has horizontal data, 0 if vertical\n    'minimum',\n    // If set to 1, the table has minimum values. If set to 0, the table has kerning values.\n    'crossStream',\n    // If set to 1, kerning is perpendicular to the flow of the text\n    'override' // If set to 1 the value in this table replaces the accumulated value\n    ]),\n\n    subtable: KernSubtable,\n    padding: new r.Reserved(r.uint8, function (t) {\n      return t.length - t._currentOffset;\n    })\n  },\n  1: {\n    // Apple uses this format\n    length: r.uint32,\n    coverage: new r.Bitfield(r.uint8, [null, null, null, null, null, 'variation',\n    // Set if table has variation kerning values\n    'crossStream',\n    // Set if table has cross-stream kerning values\n    'vertical' // Set if table has vertical kerning values\n    ]),\n\n    format: r.uint8,\n    tupleIndex: r.uint16,\n    subtable: KernSubtable,\n    padding: new r.Reserved(r.uint8, function (t) {\n      return t.length - t._currentOffset;\n    })\n  }\n});\nvar kern = new r.VersionedStruct(r.uint16, {\n  0: {\n    // Microsoft Version\n    nTables: r.uint16,\n    tables: new r.Array(KernTable, 'nTables')\n  },\n  1: {\n    // Apple Version\n    reserved: new r.Reserved(r.uint16),\n    // the other half of the version number\n    nTables: r.uint32,\n    tables: new r.Array(KernTable, 'nTables')\n  }\n});\n\n// Records the ppem for each glyph at which the scaling becomes linear again,\n// despite instructions effecting the advance width\n\nvar LTSH = new r.Struct({\n  version: r.uint16,\n  numGlyphs: r.uint16,\n  yPels: new r.Array(r.uint8, 'numGlyphs')\n});\n\n// NOTE: The PCLT table is strongly discouraged for OpenType fonts with TrueType outlines\n\nvar PCLT = new r.Struct({\n  version: r.uint16,\n  fontNumber: r.uint32,\n  pitch: r.uint16,\n  xHeight: r.uint16,\n  style: r.uint16,\n  typeFamily: r.uint16,\n  capHeight: r.uint16,\n  symbolSet: r.uint16,\n  typeface: new r.String(16),\n  characterComplement: new r.String(8),\n  fileName: new r.String(6),\n  strokeWeight: new r.String(1),\n  widthType: new r.String(1),\n  serifStyle: r.uint8,\n  reserved: new r.Reserved(r.uint8)\n});\n\n// sizes. This is needed in order to match font metrics on Windows.\n\nvar Ratio = new r.Struct({\n  bCharSet: r.uint8,\n  // Character set\n  xRatio: r.uint8,\n  // Value to use for x-Ratio\n  yStartRatio: r.uint8,\n  // Starting y-Ratio value\n  yEndRatio: r.uint8 // Ending y-Ratio value\n});\n\nvar vTable = new r.Struct({\n  yPelHeight: r.uint16,\n  // yPelHeight to which values apply\n  yMax: r.int16,\n  // Maximum value (in pels) for this yPelHeight\n  yMin: r.int16 // Minimum value (in pels) for this yPelHeight\n});\n\nvar VdmxGroup = new r.Struct({\n  recs: r.uint16,\n  // Number of height records in this group\n  startsz: r.uint8,\n  // Starting yPelHeight\n  endsz: r.uint8,\n  // Ending yPelHeight\n  entries: new r.Array(vTable, 'recs') // The VDMX records\n});\n\nvar VDMX = new r.Struct({\n  version: r.uint16,\n  // Version number (0 or 1)\n  numRecs: r.uint16,\n  // Number of VDMX groups present\n  numRatios: r.uint16,\n  // Number of aspect ratio groupings\n  ratioRanges: new r.Array(Ratio, 'numRatios'),\n  // Ratio ranges\n  offsets: new r.Array(r.uint16, 'numRatios'),\n  // Offset to the VDMX group for this ratio range\n  groups: new r.Array(VdmxGroup, 'numRecs') // The actual VDMX groupings\n});\n\nvar vhea = new r.Struct({\n  version: r.uint16,\n  // Version number of the Vertical Header Table\n  ascent: r.int16,\n  // The vertical typographic ascender for this font\n  descent: r.int16,\n  // The vertical typographic descender for this font\n  lineGap: r.int16,\n  // The vertical typographic line gap for this font\n  advanceHeightMax: r.int16,\n  // The maximum advance height measurement found in the font\n  minTopSideBearing: r.int16,\n  // The minimum top side bearing measurement found in the font\n  minBottomSideBearing: r.int16,\n  // The minimum bottom side bearing measurement found in the font\n  yMaxExtent: r.int16,\n  caretSlopeRise: r.int16,\n  // Caret slope (rise/run)\n  caretSlopeRun: r.int16,\n  caretOffset: r.int16,\n  // Set value equal to 0 for nonslanted fonts\n  reserved: new r.Reserved(r.int16, 4),\n  metricDataFormat: r.int16,\n  // Set to 0\n  numberOfMetrics: r.uint16 // Number of advance heights in the Vertical Metrics table\n});\n\nvar VmtxEntry = new r.Struct({\n  advance: r.uint16,\n  // The advance height of the glyph\n  bearing: r.int16 // The top sidebearing of the glyph\n}); // Vertical Metrics Table\n\nvar vmtx = new r.Struct({\n  metrics: new r.LazyArray(VmtxEntry, function (t) {\n    return t.parent.vhea.numberOfMetrics;\n  }),\n  bearings: new r.LazyArray(r.int16, function (t) {\n    return t.parent.maxp.numGlyphs - t.parent.vhea.numberOfMetrics;\n  })\n});\nvar shortFrac = new r.Fixed(16, 'BE', 14);\nvar Correspondence = new r.Struct({\n  fromCoord: shortFrac,\n  toCoord: shortFrac\n});\nvar Segment = new r.Struct({\n  pairCount: r.uint16,\n  correspondence: new r.Array(Correspondence, 'pairCount')\n});\nvar avar = new r.Struct({\n  version: r.fixed32,\n  axisCount: r.uint32,\n  segment: new r.Array(Segment, 'axisCount')\n});\nvar UnboundedArrayAccessor = /*#__PURE__*/function () {\n  function UnboundedArrayAccessor(type, stream, parent) {\n    this.type = type;\n    this.stream = stream;\n    this.parent = parent;\n    this.base = this.stream.pos;\n    this._items = [];\n  }\n  var _proto12 = UnboundedArrayAccessor.prototype;\n  _proto12.getItem = function getItem(index) {\n    if (this._items[index] == null) {\n      var pos = this.stream.pos;\n      this.stream.pos = this.base + this.type.size(null, this.parent) * index;\n      this._items[index] = this.type.decode(this.stream, this.parent);\n      this.stream.pos = pos;\n    }\n    return this._items[index];\n  };\n  _proto12.inspect = function inspect() {\n    return \"[UnboundedArray \".concat(this.type.constructor.name, \"]\");\n  };\n  return UnboundedArrayAccessor;\n}();\nvar UnboundedArray = /*#__PURE__*/function (_r$Array2) {\n  _inheritsLoose(UnboundedArray, _r$Array2);\n  function UnboundedArray(type) {\n    return _r$Array2.call(this, type, 0) || this;\n  }\n  var _proto13 = UnboundedArray.prototype;\n  _proto13.decode = function decode(stream, parent) {\n    return new UnboundedArrayAccessor(this.type, stream, parent);\n  };\n  return UnboundedArray;\n}(r.Array);\nvar LookupTable = function LookupTable(ValueType) {\n  if (ValueType === void 0) {\n    ValueType = r.uint16;\n  }\n  // Helper class that makes internal structures invisible to pointers\n  var Shadow = /*#__PURE__*/function () {\n    function Shadow(type) {\n      this.type = type;\n    }\n    var _proto14 = Shadow.prototype;\n    _proto14.decode = function decode(stream, ctx) {\n      ctx = ctx.parent.parent;\n      return this.type.decode(stream, ctx);\n    };\n    _proto14.size = function size(val, ctx) {\n      ctx = ctx.parent.parent;\n      return this.type.size(val, ctx);\n    };\n    _proto14.encode = function encode(stream, val, ctx) {\n      ctx = ctx.parent.parent;\n      return this.type.encode(stream, val, ctx);\n    };\n    return Shadow;\n  }();\n  ValueType = new Shadow(ValueType);\n  var BinarySearchHeader = new r.Struct({\n    unitSize: r.uint16,\n    nUnits: r.uint16,\n    searchRange: r.uint16,\n    entrySelector: r.uint16,\n    rangeShift: r.uint16\n  });\n  var LookupSegmentSingle = new r.Struct({\n    lastGlyph: r.uint16,\n    firstGlyph: r.uint16,\n    value: ValueType\n  });\n  var LookupSegmentArray = new r.Struct({\n    lastGlyph: r.uint16,\n    firstGlyph: r.uint16,\n    values: new r.Pointer(r.uint16, new r.Array(ValueType, function (t) {\n      return t.lastGlyph - t.firstGlyph + 1;\n    }), {\n      type: 'parent'\n    })\n  });\n  var LookupSingle = new r.Struct({\n    glyph: r.uint16,\n    value: ValueType\n  });\n  return new r.VersionedStruct(r.uint16, {\n    0: {\n      values: new UnboundedArray(ValueType) // length == number of glyphs maybe?\n    },\n\n    2: {\n      binarySearchHeader: BinarySearchHeader,\n      segments: new r.Array(LookupSegmentSingle, function (t) {\n        return t.binarySearchHeader.nUnits;\n      })\n    },\n    4: {\n      binarySearchHeader: BinarySearchHeader,\n      segments: new r.Array(LookupSegmentArray, function (t) {\n        return t.binarySearchHeader.nUnits;\n      })\n    },\n    6: {\n      binarySearchHeader: BinarySearchHeader,\n      segments: new r.Array(LookupSingle, function (t) {\n        return t.binarySearchHeader.nUnits;\n      })\n    },\n    8: {\n      firstGlyph: r.uint16,\n      count: r.uint16,\n      values: new r.Array(ValueType, 'count')\n    }\n  });\n};\nfunction StateTable(entryData, lookupType) {\n  if (entryData === void 0) {\n    entryData = {};\n  }\n  if (lookupType === void 0) {\n    lookupType = r.uint16;\n  }\n  var entry = Object.assign({\n    newState: r.uint16,\n    flags: r.uint16\n  }, entryData);\n  var Entry = new r.Struct(entry);\n  var StateArray = new UnboundedArray(new r.Array(r.uint16, function (t) {\n    return t.nClasses;\n  }));\n  var StateHeader = new r.Struct({\n    nClasses: r.uint32,\n    classTable: new r.Pointer(r.uint32, new LookupTable(lookupType)),\n    stateArray: new r.Pointer(r.uint32, StateArray),\n    entryTable: new r.Pointer(r.uint32, new UnboundedArray(Entry))\n  });\n  return StateHeader;\n} // This is the old version of the StateTable structure\n\nfunction StateTable1(entryData, lookupType) {\n  if (entryData === void 0) {\n    entryData = {};\n  }\n  if (lookupType === void 0) {\n    lookupType = r.uint16;\n  }\n  var ClassLookupTable = new r.Struct({\n    version: function version() {\n      return 8;\n    },\n    // simulate LookupTable\n    firstGlyph: r.uint16,\n    values: new r.Array(r.uint8, r.uint16)\n  });\n  var entry = Object.assign({\n    newStateOffset: r.uint16,\n    // convert offset to stateArray index\n    newState: function newState(t) {\n      return (t.newStateOffset - (t.parent.stateArray.base - t.parent._startOffset)) / t.parent.nClasses;\n    },\n    flags: r.uint16\n  }, entryData);\n  var Entry = new r.Struct(entry);\n  var StateArray = new UnboundedArray(new r.Array(r.uint8, function (t) {\n    return t.nClasses;\n  }));\n  var StateHeader1 = new r.Struct({\n    nClasses: r.uint16,\n    classTable: new r.Pointer(r.uint16, ClassLookupTable),\n    stateArray: new r.Pointer(r.uint16, StateArray),\n    entryTable: new r.Pointer(r.uint16, new UnboundedArray(Entry))\n  });\n  return StateHeader1;\n}\nvar BslnSubtable = new r.VersionedStruct('format', {\n  0: {\n    // Distance-based, no mapping\n    deltas: new r.Array(r.int16, 32)\n  },\n  1: {\n    // Distance-based, with mapping\n    deltas: new r.Array(r.int16, 32),\n    mappingData: new LookupTable(r.uint16)\n  },\n  2: {\n    // Control point-based, no mapping\n    standardGlyph: r.uint16,\n    controlPoints: new r.Array(r.uint16, 32)\n  },\n  3: {\n    // Control point-based, with mapping\n    standardGlyph: r.uint16,\n    controlPoints: new r.Array(r.uint16, 32),\n    mappingData: new LookupTable(r.uint16)\n  }\n});\nvar bsln = new r.Struct({\n  version: r.fixed32,\n  format: r.uint16,\n  defaultBaseline: r.uint16,\n  subtable: BslnSubtable\n});\nvar Setting = new r.Struct({\n  setting: r.uint16,\n  nameIndex: r.int16,\n  name: function name(t) {\n    return t.parent.parent.parent.name.records.fontFeatures[t.nameIndex];\n  }\n});\nvar FeatureName = new r.Struct({\n  feature: r.uint16,\n  nSettings: r.uint16,\n  settingTable: new r.Pointer(r.uint32, new r.Array(Setting, 'nSettings'), {\n    type: 'parent'\n  }),\n  featureFlags: new r.Bitfield(r.uint8, [null, null, null, null, null, null, 'hasDefault', 'exclusive']),\n  defaultSetting: r.uint8,\n  nameIndex: r.int16,\n  name: function name(t) {\n    return t.parent.parent.name.records.fontFeatures[t.nameIndex];\n  }\n});\nvar feat = new r.Struct({\n  version: r.fixed32,\n  featureNameCount: r.uint16,\n  reserved1: new r.Reserved(r.uint16),\n  reserved2: new r.Reserved(r.uint32),\n  featureNames: new r.Array(FeatureName, 'featureNameCount')\n});\nvar Axis$1 = new r.Struct({\n  axisTag: new r.String(4),\n  minValue: r.fixed32,\n  defaultValue: r.fixed32,\n  maxValue: r.fixed32,\n  flags: r.uint16,\n  nameID: r.uint16,\n  name: function name(t) {\n    return t.parent.parent.name.records.fontFeatures[t.nameID];\n  }\n});\nvar Instance = new r.Struct({\n  nameID: r.uint16,\n  name: function name(t) {\n    return t.parent.parent.name.records.fontFeatures[t.nameID];\n  },\n  flags: r.uint16,\n  coord: new r.Array(r.fixed32, function (t) {\n    return t.parent.axisCount;\n  }),\n  postscriptNameID: new r.Optional(r.uint16, function (t) {\n    return t.parent.instanceSize - t._currentOffset > 0;\n  })\n});\nvar fvar = new r.Struct({\n  version: r.fixed32,\n  offsetToData: r.uint16,\n  countSizePairs: r.uint16,\n  axisCount: r.uint16,\n  axisSize: r.uint16,\n  instanceCount: r.uint16,\n  instanceSize: r.uint16,\n  axis: new r.Array(Axis$1, 'axisCount'),\n  instance: new r.Array(Instance, 'instanceCount')\n});\nvar shortFrac$1 = new r.Fixed(16, 'BE', 14);\nvar Offset = /*#__PURE__*/function () {\n  function Offset() {}\n  Offset.decode = function decode(stream, parent) {\n    // In short format, offsets are multiplied by 2.\n    // This doesn't seem to be documented by Apple, but it\n    // is implemented this way in Freetype.\n    return parent.flags ? stream.readUInt32BE() : stream.readUInt16BE() * 2;\n  };\n  return Offset;\n}();\nvar gvar = new r.Struct({\n  version: r.uint16,\n  reserved: new r.Reserved(r.uint16),\n  axisCount: r.uint16,\n  globalCoordCount: r.uint16,\n  globalCoords: new r.Pointer(r.uint32, new r.Array(new r.Array(shortFrac$1, 'axisCount'), 'globalCoordCount')),\n  glyphCount: r.uint16,\n  flags: r.uint16,\n  offsetToData: r.uint32,\n  offsets: new r.Array(new r.Pointer(Offset, 'void', {\n    relativeTo: function relativeTo(ctx) {\n      return ctx.offsetToData;\n    },\n    allowNull: false\n  }), function (t) {\n    return t.glyphCount + 1;\n  })\n});\nvar ClassTable$1 = new r.Struct({\n  length: r.uint16,\n  coverage: r.uint16,\n  subFeatureFlags: r.uint32,\n  stateTable: new StateTable1()\n});\nvar WidthDeltaRecord = new r.Struct({\n  justClass: r.uint32,\n  beforeGrowLimit: r.fixed32,\n  beforeShrinkLimit: r.fixed32,\n  afterGrowLimit: r.fixed32,\n  afterShrinkLimit: r.fixed32,\n  growFlags: r.uint16,\n  shrinkFlags: r.uint16\n});\nvar WidthDeltaCluster = new r.Array(WidthDeltaRecord, r.uint32);\nvar ActionData = new r.VersionedStruct('actionType', {\n  0: {\n    // Decomposition action\n    lowerLimit: r.fixed32,\n    upperLimit: r.fixed32,\n    order: r.uint16,\n    glyphs: new r.Array(r.uint16, r.uint16)\n  },\n  1: {\n    // Unconditional add glyph action\n    addGlyph: r.uint16\n  },\n  2: {\n    // Conditional add glyph action\n    substThreshold: r.fixed32,\n    addGlyph: r.uint16,\n    substGlyph: r.uint16\n  },\n  3: {},\n  // Stretch glyph action (no data, not supported by CoreText)\n  4: {\n    // Ductile glyph action (not supported by CoreText)\n    variationAxis: r.uint32,\n    minimumLimit: r.fixed32,\n    noStretchValue: r.fixed32,\n    maximumLimit: r.fixed32\n  },\n  5: {\n    // Repeated add glyph action\n    flags: r.uint16,\n    glyph: r.uint16\n  }\n});\nvar Action = new r.Struct({\n  actionClass: r.uint16,\n  actionType: r.uint16,\n  actionLength: r.uint32,\n  actionData: ActionData,\n  padding: new r.Reserved(r.uint8, function (t) {\n    return t.actionLength - t._currentOffset;\n  })\n});\nvar PostcompensationAction = new r.Array(Action, r.uint32);\nvar PostCompensationTable = new r.Struct({\n  lookupTable: new LookupTable(new r.Pointer(r.uint16, PostcompensationAction))\n});\nvar JustificationTable = new r.Struct({\n  classTable: new r.Pointer(r.uint16, ClassTable$1, {\n    type: 'parent'\n  }),\n  wdcOffset: r.uint16,\n  postCompensationTable: new r.Pointer(r.uint16, PostCompensationTable, {\n    type: 'parent'\n  }),\n  widthDeltaClusters: new LookupTable(new r.Pointer(r.uint16, WidthDeltaCluster, {\n    type: 'parent',\n    relativeTo: function relativeTo(ctx) {\n      return ctx.wdcOffset;\n    }\n  }))\n});\nvar just = new r.Struct({\n  version: r.uint32,\n  format: r.uint16,\n  horizontal: new r.Pointer(r.uint16, JustificationTable),\n  vertical: new r.Pointer(r.uint16, JustificationTable)\n});\nvar LigatureData = {\n  action: r.uint16\n};\nvar ContextualData = {\n  markIndex: r.uint16,\n  currentIndex: r.uint16\n};\nvar InsertionData = {\n  currentInsertIndex: r.uint16,\n  markedInsertIndex: r.uint16\n};\nvar SubstitutionTable = new r.Struct({\n  items: new UnboundedArray(new r.Pointer(r.uint32, new LookupTable()))\n});\nvar SubtableData = new r.VersionedStruct('type', {\n  0: {\n    // Indic Rearrangement Subtable\n    stateTable: new StateTable()\n  },\n  1: {\n    // Contextual Glyph Substitution Subtable\n    stateTable: new StateTable(ContextualData),\n    substitutionTable: new r.Pointer(r.uint32, SubstitutionTable)\n  },\n  2: {\n    // Ligature subtable\n    stateTable: new StateTable(LigatureData),\n    ligatureActions: new r.Pointer(r.uint32, new UnboundedArray(r.uint32)),\n    components: new r.Pointer(r.uint32, new UnboundedArray(r.uint16)),\n    ligatureList: new r.Pointer(r.uint32, new UnboundedArray(r.uint16))\n  },\n  4: {\n    // Non-contextual Glyph Substitution Subtable\n    lookupTable: new LookupTable()\n  },\n  5: {\n    // Glyph Insertion Subtable\n    stateTable: new StateTable(InsertionData),\n    insertionActions: new r.Pointer(r.uint32, new UnboundedArray(r.uint16))\n  }\n});\nvar Subtable = new r.Struct({\n  length: r.uint32,\n  coverage: r.uint24,\n  type: r.uint8,\n  subFeatureFlags: r.uint32,\n  table: SubtableData,\n  padding: new r.Reserved(r.uint8, function (t) {\n    return t.length - t._currentOffset;\n  })\n});\nvar FeatureEntry = new r.Struct({\n  featureType: r.uint16,\n  featureSetting: r.uint16,\n  enableFlags: r.uint32,\n  disableFlags: r.uint32\n});\nvar MorxChain = new r.Struct({\n  defaultFlags: r.uint32,\n  chainLength: r.uint32,\n  nFeatureEntries: r.uint32,\n  nSubtables: r.uint32,\n  features: new r.Array(FeatureEntry, 'nFeatureEntries'),\n  subtables: new r.Array(Subtable, 'nSubtables')\n});\nvar morx = new r.Struct({\n  version: r.uint16,\n  unused: new r.Reserved(r.uint16),\n  nChains: r.uint32,\n  chains: new r.Array(MorxChain, 'nChains')\n});\nvar OpticalBounds = new r.Struct({\n  left: r.int16,\n  top: r.int16,\n  right: r.int16,\n  bottom: r.int16\n});\nvar opbd = new r.Struct({\n  version: r.fixed32,\n  format: r.uint16,\n  lookupTable: new LookupTable(OpticalBounds)\n});\nvar tables = {};\ntables.cmap = cmap;\ntables.head = head;\ntables.hhea = hhea;\ntables.hmtx = hmtx;\ntables.maxp = maxp;\ntables.name = NameTable;\ntables['OS/2'] = OS2;\ntables.post = post; // TrueType Outlines\ntables.fpgm = fpgm;\ntables.loca = loca;\ntables.prep = prep;\ntables['cvt '] = cvt;\ntables.glyf = glyf; // PostScript Outlines\ntables['CFF '] = CFFFont;\ntables['CFF2'] = CFFFont;\ntables.VORG = VORG; // Bitmap Glyphs\ntables.EBLC = EBLC;\ntables.CBLC = tables.EBLC;\ntables.sbix = sbix;\ntables.COLR = COLR;\ntables.CPAL = CPAL; // Advanced OpenType Tables\ntables.BASE = BASE;\ntables.GDEF = GDEF;\ntables.GPOS = GPOS;\ntables.GSUB = GSUB;\ntables.JSTF = JSTF; // OpenType variations tables\ntables.HVAR = HVAR; // Other OpenType Tables\ntables.DSIG = DSIG;\ntables.gasp = gasp;\ntables.hdmx = hdmx;\ntables.kern = kern;\ntables.LTSH = LTSH;\ntables.PCLT = PCLT;\ntables.VDMX = VDMX;\ntables.vhea = vhea;\ntables.vmtx = vmtx; // Apple Advanced Typography Tables\ntables.avar = avar;\ntables.bsln = bsln;\ntables.feat = feat;\ntables.fvar = fvar;\ntables.gvar = gvar;\ntables.just = just;\ntables.morx = morx;\ntables.opbd = opbd;\nvar TableEntry = new r.Struct({\n  tag: new r.String(4),\n  checkSum: r.uint32,\n  offset: new r.Pointer(r.uint32, 'void', {\n    type: 'global'\n  }),\n  length: r.uint32\n});\nvar Directory = new r.Struct({\n  tag: new r.String(4),\n  numTables: r.uint16,\n  searchRange: r.uint16,\n  entrySelector: r.uint16,\n  rangeShift: r.uint16,\n  tables: new r.Array(TableEntry, 'numTables')\n});\nDirectory.process = function () {\n  var tables = {};\n  for (var _iterator9 = _createForOfIteratorHelperLoose(this.tables), _step9; !(_step9 = _iterator9()).done;) {\n    var table = _step9.value;\n    tables[table.tag] = table;\n  }\n  this.tables = tables;\n};\nDirectory.preEncode = function (stream) {\n  var tables$1 = [];\n  for (var tag in this.tables) {\n    var table = this.tables[tag];\n    if (table) {\n      tables$1.push({\n        tag: tag,\n        checkSum: 0,\n        offset: new r.VoidPointer(tables[tag], table),\n        length: tables[tag].size(table)\n      });\n    }\n  }\n  this.tag = 'true';\n  this.numTables = tables$1.length;\n  this.tables = tables$1;\n  var maxExponentFor2 = Math.floor(Math.log(this.numTables) / Math.LN2);\n  var maxPowerOf2 = Math.pow(2, maxExponentFor2);\n  this.searchRange = maxPowerOf2 * 16;\n  this.entrySelector = Math.log(maxPowerOf2) / Math.LN2;\n  this.rangeShift = this.numTables * 16 - this.searchRange;\n};\nfunction binarySearch(arr, cmp) {\n  var min = 0;\n  var max = arr.length - 1;\n  while (min <= max) {\n    var mid = min + max >> 1;\n    var res = cmp(arr[mid]);\n    if (res < 0) {\n      max = mid - 1;\n    } else if (res > 0) {\n      min = mid + 1;\n    } else {\n      return mid;\n    }\n  }\n  return -1;\n}\nfunction range(index, end) {\n  var range = [];\n  while (index < end) {\n    range.push(index++);\n  }\n  return range;\n}\nvar _class;\ntry {\n  var iconv = require('iconv-lite');\n} catch (err) {}\nvar CmapProcessor = (_class = /*#__PURE__*/function () {\n  function CmapProcessor(cmapTable) {\n    // Attempt to find a Unicode cmap first\n    this.encoding = null;\n    this.cmap = this.findSubtable(cmapTable, [\n    // 32-bit subtables\n    [3, 10], [0, 6], [0, 4],\n    // 16-bit subtables\n    [3, 1], [0, 3], [0, 2], [0, 1], [0, 0]]); // If not unicode cmap was found, and iconv-lite is installed,\n    // take the first table with a supported encoding.\n\n    if (!this.cmap && iconv) {\n      for (var _iterator10 = _createForOfIteratorHelperLoose(cmapTable.tables), _step10; !(_step10 = _iterator10()).done;) {\n        var cmap = _step10.value;\n        var encoding = getEncoding(cmap.platformID, cmap.encodingID, cmap.table.language - 1);\n        if (iconv.encodingExists(encoding)) {\n          this.cmap = cmap.table;\n          this.encoding = encoding;\n        }\n      }\n    }\n    if (!this.cmap) {\n      throw new Error(\"Could not find a supported cmap table\");\n    }\n    this.uvs = this.findSubtable(cmapTable, [[0, 5]]);\n    if (this.uvs && this.uvs.version !== 14) {\n      this.uvs = null;\n    }\n  }\n  var _proto15 = CmapProcessor.prototype;\n  _proto15.findSubtable = function findSubtable(cmapTable, pairs) {\n    for (var _iterator11 = _createForOfIteratorHelperLoose(pairs), _step11; !(_step11 = _iterator11()).done;) {\n      var _step11$value = _step11.value,\n        platformID = _step11$value[0],\n        encodingID = _step11$value[1];\n      for (var _iterator12 = _createForOfIteratorHelperLoose(cmapTable.tables), _step12; !(_step12 = _iterator12()).done;) {\n        var cmap = _step12.value;\n        if (cmap.platformID === platformID && cmap.encodingID === encodingID) {\n          return cmap.table;\n        }\n      }\n    }\n    return null;\n  };\n  _proto15.lookup = function lookup(codepoint, variationSelector) {\n    // If there is no Unicode cmap in this font, we need to re-encode\n    // the codepoint in the encoding that the cmap supports.\n    if (this.encoding) {\n      var buf = iconv.encode(String.fromCodePoint(codepoint), this.encoding);\n      codepoint = 0;\n      for (var i = 0; i < buf.length; i++) {\n        codepoint = codepoint << 8 | buf[i];\n      } // Otherwise, try to get a Unicode variation selector for this codepoint if one is provided.\n    } else if (variationSelector) {\n      var gid = this.getVariationSelector(codepoint, variationSelector);\n      if (gid) {\n        return gid;\n      }\n    }\n    var cmap = this.cmap;\n    switch (cmap.version) {\n      case 0:\n        return cmap.codeMap.get(codepoint) || 0;\n      case 4:\n        {\n          var min = 0;\n          var max = cmap.segCount - 1;\n          while (min <= max) {\n            var mid = min + max >> 1;\n            if (codepoint < cmap.startCode.get(mid)) {\n              max = mid - 1;\n            } else if (codepoint > cmap.endCode.get(mid)) {\n              min = mid + 1;\n            } else {\n              var rangeOffset = cmap.idRangeOffset.get(mid);\n              var _gid = void 0;\n              if (rangeOffset === 0) {\n                _gid = codepoint + cmap.idDelta.get(mid);\n              } else {\n                var index = rangeOffset / 2 + (codepoint - cmap.startCode.get(mid)) - (cmap.segCount - mid);\n                _gid = cmap.glyphIndexArray.get(index) || 0;\n                if (_gid !== 0) {\n                  _gid += cmap.idDelta.get(mid);\n                }\n              }\n              return _gid & 0xffff;\n            }\n          }\n          return 0;\n        }\n      case 8:\n        throw new Error('TODO: cmap format 8');\n      case 6:\n      case 10:\n        return cmap.glyphIndices.get(codepoint - cmap.firstCode) || 0;\n      case 12:\n      case 13:\n        {\n          var _min = 0;\n          var _max = cmap.nGroups - 1;\n          while (_min <= _max) {\n            var _mid = _min + _max >> 1;\n            var group = cmap.groups.get(_mid);\n            if (codepoint < group.startCharCode) {\n              _max = _mid - 1;\n            } else if (codepoint > group.endCharCode) {\n              _min = _mid + 1;\n            } else {\n              if (cmap.version === 12) {\n                return group.glyphID + (codepoint - group.startCharCode);\n              } else {\n                return group.glyphID;\n              }\n            }\n          }\n          return 0;\n        }\n      case 14:\n        throw new Error('TODO: cmap format 14');\n      default:\n        throw new Error(\"Unknown cmap format \".concat(cmap.version));\n    }\n  };\n  _proto15.getVariationSelector = function getVariationSelector(codepoint, variationSelector) {\n    if (!this.uvs) {\n      return 0;\n    }\n    var selectors = this.uvs.varSelectors.toArray();\n    var i = binarySearch(selectors, function (x) {\n      return variationSelector - x.varSelector;\n    });\n    var sel = selectors[i];\n    if (i !== -1 && sel.defaultUVS) {\n      i = binarySearch(sel.defaultUVS, function (x) {\n        return codepoint < x.startUnicodeValue ? -1 : codepoint > x.startUnicodeValue + x.additionalCount ? +1 : 0;\n      });\n    }\n    if (i !== -1 && sel.nonDefaultUVS) {\n      i = binarySearch(sel.nonDefaultUVS, function (x) {\n        return codepoint - x.unicodeValue;\n      });\n      if (i !== -1) {\n        return sel.nonDefaultUVS[i].glyphID;\n      }\n    }\n    return 0;\n  };\n  _proto15.getCharacterSet = function getCharacterSet() {\n    var cmap = this.cmap;\n    switch (cmap.version) {\n      case 0:\n        return range(0, cmap.codeMap.length);\n      case 4:\n        {\n          var res = [];\n          var endCodes = cmap.endCode.toArray();\n          for (var i = 0; i < endCodes.length; i++) {\n            var tail = endCodes[i] + 1;\n            var start = cmap.startCode.get(i);\n            res.push.apply(res, range(start, tail));\n          }\n          return res;\n        }\n      case 8:\n        throw new Error('TODO: cmap format 8');\n      case 6:\n      case 10:\n        return range(cmap.firstCode, cmap.firstCode + cmap.glyphIndices.length);\n      case 12:\n      case 13:\n        {\n          var _res = [];\n          for (var _iterator13 = _createForOfIteratorHelperLoose(cmap.groups.toArray()), _step13; !(_step13 = _iterator13()).done;) {\n            var group = _step13.value;\n            _res.push.apply(_res, range(group.startCharCode, group.endCharCode + 1));\n          }\n          return _res;\n        }\n      case 14:\n        throw new Error('TODO: cmap format 14');\n      default:\n        throw new Error(\"Unknown cmap format \".concat(cmap.version));\n    }\n  };\n  _proto15.codePointsForGlyph = function codePointsForGlyph(gid) {\n    var cmap = this.cmap;\n    switch (cmap.version) {\n      case 0:\n        {\n          var res = [];\n          for (var i = 0; i < 256; i++) {\n            if (cmap.codeMap.get(i) === gid) {\n              res.push(i);\n            }\n          }\n          return res;\n        }\n      case 4:\n        {\n          var _res2 = [];\n          for (var _i = 0; _i < cmap.segCount; _i++) {\n            var end = cmap.endCode.get(_i);\n            var start = cmap.startCode.get(_i);\n            var rangeOffset = cmap.idRangeOffset.get(_i);\n            var delta = cmap.idDelta.get(_i);\n            for (var c = start; c <= end; c++) {\n              var g = 0;\n              if (rangeOffset === 0) {\n                g = c + delta;\n              } else {\n                var index = rangeOffset / 2 + (c - start) - (cmap.segCount - _i);\n                g = cmap.glyphIndexArray.get(index) || 0;\n                if (g !== 0) {\n                  g += delta;\n                }\n              }\n              if (g === gid) {\n                _res2.push(c);\n              }\n            }\n          }\n          return _res2;\n        }\n      case 12:\n        {\n          var _res3 = [];\n          for (var _iterator14 = _createForOfIteratorHelperLoose(cmap.groups.toArray()), _step14; !(_step14 = _iterator14()).done;) {\n            var group = _step14.value;\n            if (gid >= group.glyphID && gid <= group.glyphID + (group.endCharCode - group.startCharCode)) {\n              _res3.push(group.startCharCode + (gid - group.glyphID));\n            }\n          }\n          return _res3;\n        }\n      case 13:\n        {\n          var _res4 = [];\n          for (var _iterator15 = _createForOfIteratorHelperLoose(cmap.groups.toArray()), _step15; !(_step15 = _iterator15()).done;) {\n            var _group = _step15.value;\n            if (gid === _group.glyphID) {\n              _res4.push.apply(_res4, range(_group.startCharCode, _group.endCharCode + 1));\n            }\n          }\n          return _res4;\n        }\n      default:\n        throw new Error(\"Unknown cmap format \".concat(cmap.version));\n    }\n  };\n  return CmapProcessor;\n}(), (_applyDecoratedDescriptor(_class.prototype, \"getCharacterSet\", [cache], Object.getOwnPropertyDescriptor(_class.prototype, \"getCharacterSet\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"codePointsForGlyph\", [cache], Object.getOwnPropertyDescriptor(_class.prototype, \"codePointsForGlyph\"), _class.prototype)), _class);\nvar KernProcessor = /*#__PURE__*/function () {\n  function KernProcessor(font) {\n    this.kern = font.kern;\n  }\n  var _proto16 = KernProcessor.prototype;\n  _proto16.process = function process(glyphs, positions) {\n    for (var glyphIndex = 0; glyphIndex < glyphs.length - 1; glyphIndex++) {\n      var left = glyphs[glyphIndex].id;\n      var right = glyphs[glyphIndex + 1].id;\n      positions[glyphIndex].xAdvance += this.getKerning(left, right);\n    }\n  };\n  _proto16.getKerning = function getKerning(left, right) {\n    var res = 0;\n    for (var _iterator16 = _createForOfIteratorHelperLoose(this.kern.tables), _step16; !(_step16 = _iterator16()).done;) {\n      var table = _step16.value;\n      if (table.coverage.crossStream) {\n        continue;\n      }\n      switch (table.version) {\n        case 0:\n          if (!table.coverage.horizontal) {\n            continue;\n          }\n          break;\n        case 1:\n          if (table.coverage.vertical || table.coverage.variation) {\n            continue;\n          }\n          break;\n        default:\n          throw new Error(\"Unsupported kerning table version \".concat(table.version));\n      }\n      var val = 0;\n      var s = table.subtable;\n      switch (table.format) {\n        case 0:\n          var pairIdx = binarySearch(s.pairs, function (pair) {\n            return left - pair.left || right - pair.right;\n          });\n          if (pairIdx >= 0) {\n            val = s.pairs[pairIdx].value;\n          }\n          break;\n        case 2:\n          var leftOffset = 0,\n            rightOffset = 0;\n          if (left >= s.leftTable.firstGlyph && left < s.leftTable.firstGlyph + s.leftTable.nGlyphs) {\n            leftOffset = s.leftTable.offsets[left - s.leftTable.firstGlyph];\n          } else {\n            leftOffset = s.array.off;\n          }\n          if (right >= s.rightTable.firstGlyph && right < s.rightTable.firstGlyph + s.rightTable.nGlyphs) {\n            rightOffset = s.rightTable.offsets[right - s.rightTable.firstGlyph];\n          }\n          var index = (leftOffset + rightOffset - s.array.off) / 2;\n          val = s.array.values.get(index);\n          break;\n        case 3:\n          if (left >= s.glyphCount || right >= s.glyphCount) {\n            return 0;\n          }\n          val = s.kernValue[s.kernIndex[s.leftClass[left] * s.rightClassCount + s.rightClass[right]]];\n          break;\n        default:\n          throw new Error(\"Unsupported kerning sub-table format \".concat(table.format));\n      } // Microsoft supports the override flag, which resets the result\n      // Otherwise, the sum of the results from all subtables is returned\n\n      if (table.coverage.override) {\n        res = val;\n      } else {\n        res += val;\n      }\n    }\n    return res;\n  };\n  return KernProcessor;\n}();\n/**\r\n * This class is used when GPOS does not define 'mark' or 'mkmk' features\r\n * for positioning marks relative to base glyphs. It uses the unicode\r\n * combining class property to position marks.\r\n *\r\n * Based on code from Harfbuzz, thanks!\r\n * https://github.com/behdad/harfbuzz/blob/master/src/hb-ot-shape-fallback.cc\r\n */\nvar UnicodeLayoutEngine = /*#__PURE__*/function () {\n  function UnicodeLayoutEngine(font) {\n    this.font = font;\n  }\n  var _proto17 = UnicodeLayoutEngine.prototype;\n  _proto17.positionGlyphs = function positionGlyphs(glyphs, positions) {\n    // find each base + mark cluster, and position the marks relative to the base\n    var clusterStart = 0;\n    var clusterEnd = 0;\n    for (var index = 0; index < glyphs.length; index++) {\n      var glyph = glyphs[index];\n      if (glyph.isMark) {\n        // TODO: handle ligatures\n        clusterEnd = index;\n      } else {\n        if (clusterStart !== clusterEnd) {\n          this.positionCluster(glyphs, positions, clusterStart, clusterEnd);\n        }\n        clusterStart = clusterEnd = index;\n      }\n    }\n    if (clusterStart !== clusterEnd) {\n      this.positionCluster(glyphs, positions, clusterStart, clusterEnd);\n    }\n    return positions;\n  };\n  _proto17.positionCluster = function positionCluster(glyphs, positions, clusterStart, clusterEnd) {\n    var base = glyphs[clusterStart];\n    var baseBox = base.cbox.copy(); // adjust bounding box for ligature glyphs\n\n    if (base.codePoints.length > 1) {\n      // LTR. TODO: RTL support.\n      baseBox.minX += (base.codePoints.length - 1) * baseBox.width / base.codePoints.length;\n    }\n    var xOffset = -positions[clusterStart].xAdvance;\n    var yOffset = 0;\n    var yGap = this.font.unitsPerEm / 16; // position each of the mark glyphs relative to the base glyph\n\n    for (var index = clusterStart + 1; index <= clusterEnd; index++) {\n      var mark = glyphs[index];\n      var markBox = mark.cbox;\n      var position = positions[index];\n      var combiningClass = this.getCombiningClass(mark.codePoints[0]);\n      if (combiningClass !== 'Not_Reordered') {\n        position.xOffset = position.yOffset = 0; // x positioning\n\n        switch (combiningClass) {\n          case 'Double_Above':\n          case 'Double_Below':\n            // LTR. TODO: RTL support.\n            position.xOffset += baseBox.minX - markBox.width / 2 - markBox.minX;\n            break;\n          case 'Attached_Below_Left':\n          case 'Below_Left':\n          case 'Above_Left':\n            // left align\n            position.xOffset += baseBox.minX - markBox.minX;\n            break;\n          case 'Attached_Above_Right':\n          case 'Below_Right':\n          case 'Above_Right':\n            // right align\n            position.xOffset += baseBox.maxX - markBox.width - markBox.minX;\n            break;\n          default:\n            // Attached_Below, Attached_Above, Below, Above, other\n            // center align\n            position.xOffset += baseBox.minX + (baseBox.width - markBox.width) / 2 - markBox.minX;\n        } // y positioning\n\n        switch (combiningClass) {\n          case 'Double_Below':\n          case 'Below_Left':\n          case 'Below':\n          case 'Below_Right':\n          case 'Attached_Below_Left':\n          case 'Attached_Below':\n            // add a small gap between the glyphs if they are not attached\n            if (combiningClass === 'Attached_Below_Left' || combiningClass === 'Attached_Below') {\n              baseBox.minY += yGap;\n            }\n            position.yOffset = -baseBox.minY - markBox.maxY;\n            baseBox.minY += markBox.height;\n            break;\n          case 'Double_Above':\n          case 'Above_Left':\n          case 'Above':\n          case 'Above_Right':\n          case 'Attached_Above':\n          case 'Attached_Above_Right':\n            // add a small gap between the glyphs if they are not attached\n            if (combiningClass === 'Attached_Above' || combiningClass === 'Attached_Above_Right') {\n              baseBox.maxY += yGap;\n            }\n            position.yOffset = baseBox.maxY - markBox.minY;\n            baseBox.maxY += markBox.height;\n            break;\n        }\n        position.xAdvance = position.yAdvance = 0;\n        position.xOffset += xOffset;\n        position.yOffset += yOffset;\n      } else {\n        xOffset -= position.xAdvance;\n        yOffset -= position.yAdvance;\n      }\n    }\n    return;\n  };\n  _proto17.getCombiningClass = function getCombiningClass(codePoint) {\n    var combiningClass = unicode.getCombiningClass(codePoint); // Thai / Lao need some per-character work\n\n    if ((codePoint & ~0xff) === 0x0e00) {\n      if (combiningClass === 'Not_Reordered') {\n        switch (codePoint) {\n          case 0x0e31:\n          case 0x0e34:\n          case 0x0e35:\n          case 0x0e36:\n          case 0x0e37:\n          case 0x0e47:\n          case 0x0e4c:\n          case 0x0e3d:\n          case 0x0e4e:\n            return 'Above_Right';\n          case 0x0eb1:\n          case 0x0eb4:\n          case 0x0eb5:\n          case 0x0eb6:\n          case 0x0eb7:\n          case 0x0ebb:\n          case 0x0ecc:\n          case 0x0ecd:\n            return 'Above';\n          case 0x0ebc:\n            return 'Below';\n        }\n      } else if (codePoint === 0x0e3a) {\n        // virama\n        return 'Below_Right';\n      }\n    }\n    switch (combiningClass) {\n      // Hebrew\n      case 'CCC10': // sheva\n\n      case 'CCC11': // hataf segol\n\n      case 'CCC12': // hataf patah\n\n      case 'CCC13': // hataf qamats\n\n      case 'CCC14': // hiriq\n\n      case 'CCC15': // tsere\n\n      case 'CCC16': // segol\n\n      case 'CCC17': // patah\n\n      case 'CCC18': // qamats\n\n      case 'CCC20': // qubuts\n\n      case 'CCC22':\n        // meteg\n        return 'Below';\n      case 'CCC23':\n        // rafe\n        return 'Attached_Above';\n      case 'CCC24':\n        // shin dot\n        return 'Above_Right';\n      case 'CCC25': // sin dot\n\n      case 'CCC19':\n        // holam\n        return 'Above_Left';\n      case 'CCC26':\n        // point varika\n        return 'Above';\n      case 'CCC21':\n        // dagesh\n        break;\n      // Arabic and Syriac\n\n      case 'CCC27': // fathatan\n\n      case 'CCC28': // dammatan\n\n      case 'CCC30': // fatha\n\n      case 'CCC31': // damma\n\n      case 'CCC33': // shadda\n\n      case 'CCC34': // sukun\n\n      case 'CCC35': // superscript alef\n\n      case 'CCC36':\n        // superscript alaph\n        return 'Above';\n      case 'CCC29': // kasratan\n\n      case 'CCC32':\n        // kasra\n        return 'Below';\n      // Thai\n\n      case 'CCC103':\n        // sara u / sara uu\n        return 'Below_Right';\n      case 'CCC107':\n        // mai\n        return 'Above_Right';\n      // Lao\n\n      case 'CCC118':\n        // sign u / sign uu\n        return 'Below';\n      case 'CCC122':\n        // mai\n        return 'Above';\n      // Tibetan\n\n      case 'CCC129': // sign aa\n\n      case 'CCC132':\n        // sign u\n        return 'Below';\n      case 'CCC130':\n        // sign i\n        return 'Above';\n    }\n    return combiningClass;\n  };\n  return UnicodeLayoutEngine;\n}();\n/**\r\n * Represents a glyph bounding box\r\n */\nvar BBox = /*#__PURE__*/function () {\n  function BBox(minX, minY, maxX, maxY) {\n    if (minX === void 0) {\n      minX = Infinity;\n    }\n    if (minY === void 0) {\n      minY = Infinity;\n    }\n    if (maxX === void 0) {\n      maxX = -Infinity;\n    }\n    if (maxY === void 0) {\n      maxY = -Infinity;\n    }\n    /**\r\n     * The minimum X position in the bounding box\r\n     * @type {number}\r\n     */\n    this.minX = minX;\n    /**\r\n     * The minimum Y position in the bounding box\r\n     * @type {number}\r\n     */\n\n    this.minY = minY;\n    /**\r\n     * The maxmimum X position in the bounding box\r\n     * @type {number}\r\n     */\n\n    this.maxX = maxX;\n    /**\r\n     * The maxmimum Y position in the bounding box\r\n     * @type {number}\r\n     */\n\n    this.maxY = maxY;\n  }\n  /**\r\n   * The width of the bounding box\r\n   * @type {number}\r\n   */\n  var _proto18 = BBox.prototype;\n  _proto18.addPoint = function addPoint(x, y) {\n    if (Math.abs(x) !== Infinity) {\n      if (x < this.minX) {\n        this.minX = x;\n      }\n      if (x > this.maxX) {\n        this.maxX = x;\n      }\n    }\n    if (Math.abs(y) !== Infinity) {\n      if (y < this.minY) {\n        this.minY = y;\n      }\n      if (y > this.maxY) {\n        this.maxY = y;\n      }\n    }\n  };\n  _proto18.copy = function copy() {\n    return new BBox(this.minX, this.minY, this.maxX, this.maxY);\n  };\n  _createClass(BBox, [{\n    key: \"width\",\n    get: function get() {\n      return this.maxX - this.minX;\n    }\n    /**\r\n     * The height of the bounding box\r\n     * @type {number}\r\n     */\n  }, {\n    key: \"height\",\n    get: function get() {\n      return this.maxY - this.minY;\n    }\n  }]);\n  return BBox;\n}(); // Data from http://www.microsoft.com/typography/otspec/scripttags.htm\n// and http://www.unicode.org/Public/UNIDATA/PropertyValueAliases.txt.\nvar UNICODE_SCRIPTS = {\n  Caucasian_Albanian: 'aghb',\n  Arabic: 'arab',\n  Imperial_Aramaic: 'armi',\n  Armenian: 'armn',\n  Avestan: 'avst',\n  Balinese: 'bali',\n  Bamum: 'bamu',\n  Bassa_Vah: 'bass',\n  Batak: 'batk',\n  Bengali: ['bng2', 'beng'],\n  Bopomofo: 'bopo',\n  Brahmi: 'brah',\n  Braille: 'brai',\n  Buginese: 'bugi',\n  Buhid: 'buhd',\n  Chakma: 'cakm',\n  Canadian_Aboriginal: 'cans',\n  Carian: 'cari',\n  Cham: 'cham',\n  Cherokee: 'cher',\n  Coptic: 'copt',\n  Cypriot: 'cprt',\n  Cyrillic: 'cyrl',\n  Devanagari: ['dev2', 'deva'],\n  Deseret: 'dsrt',\n  Duployan: 'dupl',\n  Egyptian_Hieroglyphs: 'egyp',\n  Elbasan: 'elba',\n  Ethiopic: 'ethi',\n  Georgian: 'geor',\n  Glagolitic: 'glag',\n  Gothic: 'goth',\n  Grantha: 'gran',\n  Greek: 'grek',\n  Gujarati: ['gjr2', 'gujr'],\n  Gurmukhi: ['gur2', 'guru'],\n  Hangul: 'hang',\n  Han: 'hani',\n  Hanunoo: 'hano',\n  Hebrew: 'hebr',\n  Hiragana: 'hira',\n  Pahawh_Hmong: 'hmng',\n  Katakana_Or_Hiragana: 'hrkt',\n  Old_Italic: 'ital',\n  Javanese: 'java',\n  Kayah_Li: 'kali',\n  Katakana: 'kana',\n  Kharoshthi: 'khar',\n  Khmer: 'khmr',\n  Khojki: 'khoj',\n  Kannada: ['knd2', 'knda'],\n  Kaithi: 'kthi',\n  Tai_Tham: 'lana',\n  Lao: 'lao ',\n  Latin: 'latn',\n  Lepcha: 'lepc',\n  Limbu: 'limb',\n  Linear_A: 'lina',\n  Linear_B: 'linb',\n  Lisu: 'lisu',\n  Lycian: 'lyci',\n  Lydian: 'lydi',\n  Mahajani: 'mahj',\n  Mandaic: 'mand',\n  Manichaean: 'mani',\n  Mende_Kikakui: 'mend',\n  Meroitic_Cursive: 'merc',\n  Meroitic_Hieroglyphs: 'mero',\n  Malayalam: ['mlm2', 'mlym'],\n  Modi: 'modi',\n  Mongolian: 'mong',\n  Mro: 'mroo',\n  Meetei_Mayek: 'mtei',\n  Myanmar: ['mym2', 'mymr'],\n  Old_North_Arabian: 'narb',\n  Nabataean: 'nbat',\n  Nko: 'nko ',\n  Ogham: 'ogam',\n  Ol_Chiki: 'olck',\n  Old_Turkic: 'orkh',\n  Oriya: ['ory2', 'orya'],\n  Osmanya: 'osma',\n  Palmyrene: 'palm',\n  Pau_Cin_Hau: 'pauc',\n  Old_Permic: 'perm',\n  Phags_Pa: 'phag',\n  Inscriptional_Pahlavi: 'phli',\n  Psalter_Pahlavi: 'phlp',\n  Phoenician: 'phnx',\n  Miao: 'plrd',\n  Inscriptional_Parthian: 'prti',\n  Rejang: 'rjng',\n  Runic: 'runr',\n  Samaritan: 'samr',\n  Old_South_Arabian: 'sarb',\n  Saurashtra: 'saur',\n  Shavian: 'shaw',\n  Sharada: 'shrd',\n  Siddham: 'sidd',\n  Khudawadi: 'sind',\n  Sinhala: 'sinh',\n  Sora_Sompeng: 'sora',\n  Sundanese: 'sund',\n  Syloti_Nagri: 'sylo',\n  Syriac: 'syrc',\n  Tagbanwa: 'tagb',\n  Takri: 'takr',\n  Tai_Le: 'tale',\n  New_Tai_Lue: 'talu',\n  Tamil: ['tml2', 'taml'],\n  Tai_Viet: 'tavt',\n  Telugu: ['tel2', 'telu'],\n  Tifinagh: 'tfng',\n  Tagalog: 'tglg',\n  Thaana: 'thaa',\n  Thai: 'thai',\n  Tibetan: 'tibt',\n  Tirhuta: 'tirh',\n  Ugaritic: 'ugar',\n  Vai: 'vai ',\n  Warang_Citi: 'wara',\n  Old_Persian: 'xpeo',\n  Cuneiform: 'xsux',\n  Yi: 'yi  ',\n  Inherited: 'zinh',\n  Common: 'zyyy',\n  Unknown: 'zzzz'\n};\nvar OPENTYPE_SCRIPTS = {};\nfor (var script in UNICODE_SCRIPTS) {\n  var tag = UNICODE_SCRIPTS[script];\n  if (Array.isArray(tag)) {\n    for (var _iterator17 = _createForOfIteratorHelperLoose(tag), _step17; !(_step17 = _iterator17()).done;) {\n      var t = _step17.value;\n      OPENTYPE_SCRIPTS[t] = script;\n    }\n  } else {\n    OPENTYPE_SCRIPTS[tag] = script;\n  }\n}\nfunction fromOpenType(tag) {\n  return OPENTYPE_SCRIPTS[tag];\n}\nfunction forString(string) {\n  var len = string.length;\n  var idx = 0;\n  while (idx < len) {\n    var code = string.charCodeAt(idx++); // Check if this is a high surrogate\n\n    if (0xd800 <= code && code <= 0xdbff && idx < len) {\n      var next = string.charCodeAt(idx); // Check if this is a low surrogate\n\n      if (0xdc00 <= next && next <= 0xdfff) {\n        idx++;\n        code = ((code & 0x3FF) << 10) + (next & 0x3FF) + 0x10000;\n      }\n    }\n    var _script = unicode.getScript(code);\n    if (_script !== 'Common' && _script !== 'Inherited' && _script !== 'Unknown') {\n      return UNICODE_SCRIPTS[_script];\n    }\n  }\n  return UNICODE_SCRIPTS.Unknown;\n}\nfunction forCodePoints(codePoints) {\n  for (var i = 0; i < codePoints.length; i++) {\n    var codePoint = codePoints[i];\n    var _script2 = unicode.getScript(codePoint);\n    if (_script2 !== 'Common' && _script2 !== 'Inherited' && _script2 !== 'Unknown') {\n      return UNICODE_SCRIPTS[_script2];\n    }\n  }\n  return UNICODE_SCRIPTS.Unknown;\n} // The scripts in this map are written from right to left\n\nvar RTL = {\n  arab: true,\n  // Arabic\n  hebr: true,\n  // Hebrew\n  syrc: true,\n  // Syriac\n  thaa: true,\n  // Thaana\n  cprt: true,\n  // Cypriot Syllabary\n  khar: true,\n  // Kharosthi\n  phnx: true,\n  // Phoenician\n  'nko ': true,\n  // N'Ko\n  lydi: true,\n  // Lydian\n  avst: true,\n  // Avestan\n  armi: true,\n  // Imperial Aramaic\n  phli: true,\n  // Inscriptional Pahlavi\n  prti: true,\n  // Inscriptional Parthian\n  sarb: true,\n  // Old South Arabian\n  orkh: true,\n  // Old Turkic, Orkhon Runic\n  samr: true,\n  // Samaritan\n  mand: true,\n  // Mandaic, Mandaean\n  merc: true,\n  // Meroitic Cursive\n  mero: true,\n  // Meroitic Hieroglyphs\n  // Unicode 7.0 (not listed on http://www.microsoft.com/typography/otspec/scripttags.htm)\n  mani: true,\n  // Manichaean\n  mend: true,\n  // Mende Kikakui\n  nbat: true,\n  // Nabataean\n  narb: true,\n  // Old North Arabian\n  palm: true,\n  // Palmyrene\n  phlp: true // Psalter Pahlavi\n};\n\nfunction direction(script) {\n  if (RTL[script]) {\n    return 'rtl';\n  }\n  return 'ltr';\n}\n\n/**\r\n * Represents a run of Glyph and GlyphPosition objects.\r\n * Returned by the font layout method.\r\n */\nvar GlyphRun = /*#__PURE__*/function () {\n  function GlyphRun(glyphs, features, script, language, direction$1) {\n    /**\r\n     * An array of Glyph objects in the run\r\n     * @type {Glyph[]}\r\n     */\n    this.glyphs = glyphs;\n    /**\r\n     * An array of GlyphPosition objects for each glyph in the run\r\n     * @type {GlyphPosition[]}\r\n     */\n\n    this.positions = null;\n    /**\r\n     * The script that was requested for shaping. This was either passed in or detected automatically.\r\n     * @type {string}\r\n     */\n\n    this.script = script;\n    /**\r\n     * The language requested for shaping, as passed in. If `null`, the default language for the\r\n     * script was used.\r\n     * @type {string}\r\n     */\n\n    this.language = language || null;\n    /**\r\n     * The direction requested for shaping, as passed in (either ltr or rtl).\r\n     * If `null`, the default direction of the script is used.\r\n     * @type {string}\r\n     */\n\n    this.direction = direction$1 || direction(script);\n    /**\r\n     * The features requested during shaping. This is a combination of user\r\n     * specified features and features chosen by the shaper.\r\n     * @type {object}\r\n     */\n\n    this.features = {}; // Convert features to an object\n\n    if (Array.isArray(features)) {\n      for (var _iterator18 = _createForOfIteratorHelperLoose(features), _step18; !(_step18 = _iterator18()).done;) {\n        var tag = _step18.value;\n        this.features[tag] = true;\n      }\n    } else if (typeof features === 'object') {\n      this.features = features;\n    }\n  }\n  /**\r\n   * The total advance width of the run.\r\n   * @type {number}\r\n   */\n  _createClass(GlyphRun, [{\n    key: \"advanceWidth\",\n    get: function get() {\n      var width = 0;\n      for (var _iterator19 = _createForOfIteratorHelperLoose(this.positions), _step19; !(_step19 = _iterator19()).done;) {\n        var position = _step19.value;\n        width += position.xAdvance;\n      }\n      return width;\n    }\n    /**\r\n     * The total advance height of the run.\r\n     * @type {number}\r\n     */\n  }, {\n    key: \"advanceHeight\",\n    get: function get() {\n      var height = 0;\n      for (var _iterator20 = _createForOfIteratorHelperLoose(this.positions), _step20; !(_step20 = _iterator20()).done;) {\n        var position = _step20.value;\n        height += position.yAdvance;\n      }\n      return height;\n    }\n    /**\r\n     * The bounding box containing all glyphs in the run.\r\n     * @type {BBox}\r\n     */\n  }, {\n    key: \"bbox\",\n    get: function get() {\n      var bbox = new BBox();\n      var x = 0;\n      var y = 0;\n      for (var index = 0; index < this.glyphs.length; index++) {\n        var glyph = this.glyphs[index];\n        var p = this.positions[index];\n        var b = glyph.bbox;\n        bbox.addPoint(b.minX + x + p.xOffset, b.minY + y + p.yOffset);\n        bbox.addPoint(b.maxX + x + p.xOffset, b.maxY + y + p.yOffset);\n        x += p.xAdvance;\n        y += p.yAdvance;\n      }\n      return bbox;\n    }\n  }]);\n  return GlyphRun;\n}();\n/**\r\n * Represents positioning information for a glyph in a GlyphRun.\r\n */\nvar GlyphPosition = function GlyphPosition(xAdvance, yAdvance, xOffset, yOffset) {\n  if (xAdvance === void 0) {\n    xAdvance = 0;\n  }\n  if (yAdvance === void 0) {\n    yAdvance = 0;\n  }\n  if (xOffset === void 0) {\n    xOffset = 0;\n  }\n  if (yOffset === void 0) {\n    yOffset = 0;\n  }\n  /**\r\n   * The amount to move the virtual pen in the X direction after rendering this glyph.\r\n   * @type {number}\r\n   */\n  this.xAdvance = xAdvance;\n  /**\r\n   * The amount to move the virtual pen in the Y direction after rendering this glyph.\r\n   * @type {number}\r\n   */\n\n  this.yAdvance = yAdvance;\n  /**\r\n   * The offset from the pen position in the X direction at which to render this glyph.\r\n   * @type {number}\r\n   */\n\n  this.xOffset = xOffset;\n  /**\r\n   * The offset from the pen position in the Y direction at which to render this glyph.\r\n   * @type {number}\r\n   */\n\n  this.yOffset = yOffset;\n}; // see https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html\n// and /System/Library/Frameworks/CoreText.framework/Versions/A/Headers/SFNTLayoutTypes.h on a Mac\nvar features = {\n  allTypographicFeatures: {\n    code: 0,\n    exclusive: false,\n    allTypeFeatures: 0\n  },\n  ligatures: {\n    code: 1,\n    exclusive: false,\n    requiredLigatures: 0,\n    commonLigatures: 2,\n    rareLigatures: 4,\n    // logos: 6\n    rebusPictures: 8,\n    diphthongLigatures: 10,\n    squaredLigatures: 12,\n    abbrevSquaredLigatures: 14,\n    symbolLigatures: 16,\n    contextualLigatures: 18,\n    historicalLigatures: 20\n  },\n  cursiveConnection: {\n    code: 2,\n    exclusive: true,\n    unconnected: 0,\n    partiallyConnected: 1,\n    cursive: 2\n  },\n  letterCase: {\n    code: 3,\n    exclusive: true\n  },\n  // upperAndLowerCase: 0          # deprecated\n  // allCaps: 1                    # deprecated\n  // allLowerCase: 2               # deprecated\n  // smallCaps: 3                  # deprecated\n  // initialCaps: 4                # deprecated\n  // initialCapsAndSmallCaps: 5    # deprecated\n  verticalSubstitution: {\n    code: 4,\n    exclusive: false,\n    substituteVerticalForms: 0\n  },\n  linguisticRearrangement: {\n    code: 5,\n    exclusive: false,\n    linguisticRearrangement: 0\n  },\n  numberSpacing: {\n    code: 6,\n    exclusive: true,\n    monospacedNumbers: 0,\n    proportionalNumbers: 1,\n    thirdWidthNumbers: 2,\n    quarterWidthNumbers: 3\n  },\n  smartSwash: {\n    code: 8,\n    exclusive: false,\n    wordInitialSwashes: 0,\n    wordFinalSwashes: 2,\n    // lineInitialSwashes: 4\n    // lineFinalSwashes: 6\n    nonFinalSwashes: 8\n  },\n  diacritics: {\n    code: 9,\n    exclusive: true,\n    showDiacritics: 0,\n    hideDiacritics: 1,\n    decomposeDiacritics: 2\n  },\n  verticalPosition: {\n    code: 10,\n    exclusive: true,\n    normalPosition: 0,\n    superiors: 1,\n    inferiors: 2,\n    ordinals: 3,\n    scientificInferiors: 4\n  },\n  fractions: {\n    code: 11,\n    exclusive: true,\n    noFractions: 0,\n    verticalFractions: 1,\n    diagonalFractions: 2\n  },\n  overlappingCharacters: {\n    code: 13,\n    exclusive: false,\n    preventOverlap: 0\n  },\n  typographicExtras: {\n    code: 14,\n    exclusive: false,\n    // hyphensToEmDash: 0\n    // hyphenToEnDash: 2\n    slashedZero: 4\n  },\n  // formInterrobang: 6\n  // smartQuotes: 8\n  // periodsToEllipsis: 10\n  mathematicalExtras: {\n    code: 15,\n    exclusive: false,\n    // hyphenToMinus: 0\n    // asteristoMultiply: 2\n    // slashToDivide: 4\n    // inequalityLigatures: 6\n    // exponents: 8\n    mathematicalGreek: 10\n  },\n  ornamentSets: {\n    code: 16,\n    exclusive: true,\n    noOrnaments: 0,\n    dingbats: 1,\n    piCharacters: 2,\n    fleurons: 3,\n    decorativeBorders: 4,\n    internationalSymbols: 5,\n    mathSymbols: 6\n  },\n  characterAlternatives: {\n    code: 17,\n    exclusive: true,\n    noAlternates: 0\n  },\n  // user defined options\n  designComplexity: {\n    code: 18,\n    exclusive: true,\n    designLevel1: 0,\n    designLevel2: 1,\n    designLevel3: 2,\n    designLevel4: 3,\n    designLevel5: 4\n  },\n  styleOptions: {\n    code: 19,\n    exclusive: true,\n    noStyleOptions: 0,\n    displayText: 1,\n    engravedText: 2,\n    illuminatedCaps: 3,\n    titlingCaps: 4,\n    tallCaps: 5\n  },\n  characterShape: {\n    code: 20,\n    exclusive: true,\n    traditionalCharacters: 0,\n    simplifiedCharacters: 1,\n    JIS1978Characters: 2,\n    JIS1983Characters: 3,\n    JIS1990Characters: 4,\n    traditionalAltOne: 5,\n    traditionalAltTwo: 6,\n    traditionalAltThree: 7,\n    traditionalAltFour: 8,\n    traditionalAltFive: 9,\n    expertCharacters: 10,\n    JIS2004Characters: 11,\n    hojoCharacters: 12,\n    NLCCharacters: 13,\n    traditionalNamesCharacters: 14\n  },\n  numberCase: {\n    code: 21,\n    exclusive: true,\n    lowerCaseNumbers: 0,\n    upperCaseNumbers: 1\n  },\n  textSpacing: {\n    code: 22,\n    exclusive: true,\n    proportionalText: 0,\n    monospacedText: 1,\n    halfWidthText: 2,\n    thirdWidthText: 3,\n    quarterWidthText: 4,\n    altProportionalText: 5,\n    altHalfWidthText: 6\n  },\n  transliteration: {\n    code: 23,\n    exclusive: true,\n    noTransliteration: 0\n  },\n  // hanjaToHangul: 1\n  // hiraganaToKatakana: 2\n  // katakanaToHiragana: 3\n  // kanaToRomanization: 4\n  // romanizationToHiragana: 5\n  // romanizationToKatakana: 6\n  // hanjaToHangulAltOne: 7\n  // hanjaToHangulAltTwo: 8\n  // hanjaToHangulAltThree: 9\n  annotation: {\n    code: 24,\n    exclusive: true,\n    noAnnotation: 0,\n    boxAnnotation: 1,\n    roundedBoxAnnotation: 2,\n    circleAnnotation: 3,\n    invertedCircleAnnotation: 4,\n    parenthesisAnnotation: 5,\n    periodAnnotation: 6,\n    romanNumeralAnnotation: 7,\n    diamondAnnotation: 8,\n    invertedBoxAnnotation: 9,\n    invertedRoundedBoxAnnotation: 10\n  },\n  kanaSpacing: {\n    code: 25,\n    exclusive: true,\n    fullWidthKana: 0,\n    proportionalKana: 1\n  },\n  ideographicSpacing: {\n    code: 26,\n    exclusive: true,\n    fullWidthIdeographs: 0,\n    proportionalIdeographs: 1,\n    halfWidthIdeographs: 2\n  },\n  unicodeDecomposition: {\n    code: 27,\n    exclusive: false,\n    canonicalComposition: 0,\n    compatibilityComposition: 2,\n    transcodingComposition: 4\n  },\n  rubyKana: {\n    code: 28,\n    exclusive: false,\n    // noRubyKana: 0     # deprecated - use rubyKanaOff instead\n    // rubyKana: 1     # deprecated - use rubyKanaOn instead\n    rubyKana: 2\n  },\n  CJKSymbolAlternatives: {\n    code: 29,\n    exclusive: true,\n    noCJKSymbolAlternatives: 0,\n    CJKSymbolAltOne: 1,\n    CJKSymbolAltTwo: 2,\n    CJKSymbolAltThree: 3,\n    CJKSymbolAltFour: 4,\n    CJKSymbolAltFive: 5\n  },\n  ideographicAlternatives: {\n    code: 30,\n    exclusive: true,\n    noIdeographicAlternatives: 0,\n    ideographicAltOne: 1,\n    ideographicAltTwo: 2,\n    ideographicAltThree: 3,\n    ideographicAltFour: 4,\n    ideographicAltFive: 5\n  },\n  CJKVerticalRomanPlacement: {\n    code: 31,\n    exclusive: true,\n    CJKVerticalRomanCentered: 0,\n    CJKVerticalRomanHBaseline: 1\n  },\n  italicCJKRoman: {\n    code: 32,\n    exclusive: false,\n    // noCJKItalicRoman: 0     # deprecated - use CJKItalicRomanOff instead\n    // CJKItalicRoman: 1     # deprecated - use CJKItalicRomanOn instead\n    CJKItalicRoman: 2\n  },\n  caseSensitiveLayout: {\n    code: 33,\n    exclusive: false,\n    caseSensitiveLayout: 0,\n    caseSensitiveSpacing: 2\n  },\n  alternateKana: {\n    code: 34,\n    exclusive: false,\n    alternateHorizKana: 0,\n    alternateVertKana: 2\n  },\n  stylisticAlternatives: {\n    code: 35,\n    exclusive: false,\n    noStylisticAlternates: 0,\n    stylisticAltOne: 2,\n    stylisticAltTwo: 4,\n    stylisticAltThree: 6,\n    stylisticAltFour: 8,\n    stylisticAltFive: 10,\n    stylisticAltSix: 12,\n    stylisticAltSeven: 14,\n    stylisticAltEight: 16,\n    stylisticAltNine: 18,\n    stylisticAltTen: 20,\n    stylisticAltEleven: 22,\n    stylisticAltTwelve: 24,\n    stylisticAltThirteen: 26,\n    stylisticAltFourteen: 28,\n    stylisticAltFifteen: 30,\n    stylisticAltSixteen: 32,\n    stylisticAltSeventeen: 34,\n    stylisticAltEighteen: 36,\n    stylisticAltNineteen: 38,\n    stylisticAltTwenty: 40\n  },\n  contextualAlternates: {\n    code: 36,\n    exclusive: false,\n    contextualAlternates: 0,\n    swashAlternates: 2,\n    contextualSwashAlternates: 4\n  },\n  lowerCase: {\n    code: 37,\n    exclusive: true,\n    defaultLowerCase: 0,\n    lowerCaseSmallCaps: 1,\n    lowerCasePetiteCaps: 2\n  },\n  upperCase: {\n    code: 38,\n    exclusive: true,\n    defaultUpperCase: 0,\n    upperCaseSmallCaps: 1,\n    upperCasePetiteCaps: 2\n  },\n  languageTag: {\n    // indices into ltag table\n    code: 39,\n    exclusive: true\n  },\n  CJKRomanSpacing: {\n    code: 103,\n    exclusive: true,\n    halfWidthCJKRoman: 0,\n    proportionalCJKRoman: 1,\n    defaultCJKRoman: 2,\n    fullWidthCJKRoman: 3\n  }\n};\nvar feature = function feature(name, selector) {\n  return [features[name].code, features[name][selector]];\n};\nvar OTMapping = {\n  rlig: feature('ligatures', 'requiredLigatures'),\n  clig: feature('ligatures', 'contextualLigatures'),\n  dlig: feature('ligatures', 'rareLigatures'),\n  hlig: feature('ligatures', 'historicalLigatures'),\n  liga: feature('ligatures', 'commonLigatures'),\n  hist: feature('ligatures', 'historicalLigatures'),\n  // ??\n  smcp: feature('lowerCase', 'lowerCaseSmallCaps'),\n  pcap: feature('lowerCase', 'lowerCasePetiteCaps'),\n  frac: feature('fractions', 'diagonalFractions'),\n  dnom: feature('fractions', 'diagonalFractions'),\n  // ??\n  numr: feature('fractions', 'diagonalFractions'),\n  // ??\n  afrc: feature('fractions', 'verticalFractions'),\n  // aalt\n  // abvf, abvm, abvs, akhn, blwf, blwm, blws, cfar, cjct, cpsp, falt, isol, jalt, ljmo, mset?\n  // ltra, ltrm, nukt, pref, pres, pstf, psts, rand, rkrf, rphf, rtla, rtlm, size, tjmo, tnum?\n  // unic, vatu, vhal, vjmo, vpal, vrt2\n  // dist -> trak table?\n  // kern, vkrn -> kern table\n  // lfbd + opbd + rtbd -> opbd table?\n  // mark, mkmk -> acnt table?\n  // locl -> languageTag + ltag table\n  case: feature('caseSensitiveLayout', 'caseSensitiveLayout'),\n  // also caseSensitiveSpacing\n  ccmp: feature('unicodeDecomposition', 'canonicalComposition'),\n  // compatibilityComposition?\n  cpct: feature('CJKVerticalRomanPlacement', 'CJKVerticalRomanCentered'),\n  // guess..., probably not given below\n  valt: feature('CJKVerticalRomanPlacement', 'CJKVerticalRomanCentered'),\n  swsh: feature('contextualAlternates', 'swashAlternates'),\n  cswh: feature('contextualAlternates', 'contextualSwashAlternates'),\n  curs: feature('cursiveConnection', 'cursive'),\n  // ??\n  c2pc: feature('upperCase', 'upperCasePetiteCaps'),\n  c2sc: feature('upperCase', 'upperCaseSmallCaps'),\n  init: feature('smartSwash', 'wordInitialSwashes'),\n  // ??\n  fin2: feature('smartSwash', 'wordFinalSwashes'),\n  // ??\n  medi: feature('smartSwash', 'nonFinalSwashes'),\n  // ??\n  med2: feature('smartSwash', 'nonFinalSwashes'),\n  // ??\n  fin3: feature('smartSwash', 'wordFinalSwashes'),\n  // ??\n  fina: feature('smartSwash', 'wordFinalSwashes'),\n  // ??\n  pkna: feature('kanaSpacing', 'proportionalKana'),\n  half: feature('textSpacing', 'halfWidthText'),\n  // also HalfWidthCJKRoman, HalfWidthIdeographs?\n  halt: feature('textSpacing', 'altHalfWidthText'),\n  hkna: feature('alternateKana', 'alternateHorizKana'),\n  vkna: feature('alternateKana', 'alternateVertKana'),\n  // hngl: feature 'transliteration', 'hanjaToHangulSelector' # deprecated\n  ital: feature('italicCJKRoman', 'CJKItalicRoman'),\n  lnum: feature('numberCase', 'upperCaseNumbers'),\n  onum: feature('numberCase', 'lowerCaseNumbers'),\n  mgrk: feature('mathematicalExtras', 'mathematicalGreek'),\n  // nalt: not enough info. what type of annotation?\n  // ornm: ditto, which ornament style?\n  calt: feature('contextualAlternates', 'contextualAlternates'),\n  // or more?\n  vrt2: feature('verticalSubstitution', 'substituteVerticalForms'),\n  // oh... below?\n  vert: feature('verticalSubstitution', 'substituteVerticalForms'),\n  tnum: feature('numberSpacing', 'monospacedNumbers'),\n  pnum: feature('numberSpacing', 'proportionalNumbers'),\n  sups: feature('verticalPosition', 'superiors'),\n  subs: feature('verticalPosition', 'inferiors'),\n  ordn: feature('verticalPosition', 'ordinals'),\n  pwid: feature('textSpacing', 'proportionalText'),\n  hwid: feature('textSpacing', 'halfWidthText'),\n  qwid: feature('textSpacing', 'quarterWidthText'),\n  // also QuarterWidthNumbers?\n  twid: feature('textSpacing', 'thirdWidthText'),\n  // also ThirdWidthNumbers?\n  fwid: feature('textSpacing', 'proportionalText'),\n  //??\n  palt: feature('textSpacing', 'altProportionalText'),\n  trad: feature('characterShape', 'traditionalCharacters'),\n  smpl: feature('characterShape', 'simplifiedCharacters'),\n  jp78: feature('characterShape', 'JIS1978Characters'),\n  jp83: feature('characterShape', 'JIS1983Characters'),\n  jp90: feature('characterShape', 'JIS1990Characters'),\n  jp04: feature('characterShape', 'JIS2004Characters'),\n  expt: feature('characterShape', 'expertCharacters'),\n  hojo: feature('characterShape', 'hojoCharacters'),\n  nlck: feature('characterShape', 'NLCCharacters'),\n  tnam: feature('characterShape', 'traditionalNamesCharacters'),\n  ruby: feature('rubyKana', 'rubyKana'),\n  titl: feature('styleOptions', 'titlingCaps'),\n  zero: feature('typographicExtras', 'slashedZero'),\n  ss01: feature('stylisticAlternatives', 'stylisticAltOne'),\n  ss02: feature('stylisticAlternatives', 'stylisticAltTwo'),\n  ss03: feature('stylisticAlternatives', 'stylisticAltThree'),\n  ss04: feature('stylisticAlternatives', 'stylisticAltFour'),\n  ss05: feature('stylisticAlternatives', 'stylisticAltFive'),\n  ss06: feature('stylisticAlternatives', 'stylisticAltSix'),\n  ss07: feature('stylisticAlternatives', 'stylisticAltSeven'),\n  ss08: feature('stylisticAlternatives', 'stylisticAltEight'),\n  ss09: feature('stylisticAlternatives', 'stylisticAltNine'),\n  ss10: feature('stylisticAlternatives', 'stylisticAltTen'),\n  ss11: feature('stylisticAlternatives', 'stylisticAltEleven'),\n  ss12: feature('stylisticAlternatives', 'stylisticAltTwelve'),\n  ss13: feature('stylisticAlternatives', 'stylisticAltThirteen'),\n  ss14: feature('stylisticAlternatives', 'stylisticAltFourteen'),\n  ss15: feature('stylisticAlternatives', 'stylisticAltFifteen'),\n  ss16: feature('stylisticAlternatives', 'stylisticAltSixteen'),\n  ss17: feature('stylisticAlternatives', 'stylisticAltSeventeen'),\n  ss18: feature('stylisticAlternatives', 'stylisticAltEighteen'),\n  ss19: feature('stylisticAlternatives', 'stylisticAltNineteen'),\n  ss20: feature('stylisticAlternatives', 'stylisticAltTwenty')\n}; // salt: feature 'stylisticAlternatives', 'stylisticAltOne' # hmm, which one to choose\n// Add cv01-cv99 features\n\nfor (var i = 1; i <= 99; i++) {\n  OTMapping[\"cv\".concat(\"00\".concat(i).slice(-2))] = [features.characterAlternatives.code, i];\n} // create inverse mapping\n\nvar AATMapping = {};\nfor (var ot in OTMapping) {\n  var aat = OTMapping[ot];\n  if (AATMapping[aat[0]] == null) {\n    AATMapping[aat[0]] = {};\n  }\n  AATMapping[aat[0]][aat[1]] = ot;\n} // Maps an array of OpenType features to AAT features\n// in the form of {featureType:{featureSetting:true}}\n\nfunction mapOTToAAT(features) {\n  var res = {};\n  for (var k in features) {\n    var r = void 0;\n    if (r = OTMapping[k]) {\n      if (res[r[0]] == null) {\n        res[r[0]] = {};\n      }\n      res[r[0]][r[1]] = features[k];\n    }\n  }\n  return res;\n} // Maps strings in a [featureType, featureSetting]\n// to their equivalent number codes\n\nfunction mapFeatureStrings(f) {\n  var type = f[0],\n    setting = f[1];\n  if (isNaN(type)) {\n    var typeCode = features[type] && features[type].code;\n  } else {\n    var typeCode = type;\n  }\n  if (isNaN(setting)) {\n    var settingCode = features[type] && features[type][setting];\n  } else {\n    var settingCode = setting;\n  }\n  return [typeCode, settingCode];\n} // Maps AAT features to an array of OpenType features\n// Supports both arrays in the form of [[featureType, featureSetting]]\n// and objects in the form of {featureType:{featureSetting:true}}\n// featureTypes and featureSettings can be either strings or number codes\n\nfunction mapAATToOT(features) {\n  var res = {};\n  if (Array.isArray(features)) {\n    for (var k = 0; k < features.length; k++) {\n      var r = void 0;\n      var f = mapFeatureStrings(features[k]);\n      if (r = AATMapping[f[0]] && AATMapping[f[0]][f[1]]) {\n        res[r] = true;\n      }\n    }\n  } else if (typeof features === 'object') {\n    for (var type in features) {\n      var _feature = features[type];\n      for (var setting in _feature) {\n        var _r = void 0;\n        var _f = mapFeatureStrings([type, setting]);\n        if (_feature[setting] && (_r = AATMapping[_f[0]] && AATMapping[_f[0]][_f[1]])) {\n          res[_r] = true;\n        }\n      }\n    }\n  }\n  return Object.keys(res);\n}\nvar _class$1;\nvar AATLookupTable = (_class$1 = /*#__PURE__*/function () {\n  function AATLookupTable(table) {\n    this.table = table;\n  }\n  var _proto19 = AATLookupTable.prototype;\n  _proto19.lookup = function lookup(glyph) {\n    switch (this.table.version) {\n      case 0:\n        // simple array format\n        return this.table.values.getItem(glyph);\n      case 2: // segment format\n\n      case 4:\n        {\n          var min = 0;\n          var max = this.table.binarySearchHeader.nUnits - 1;\n          while (min <= max) {\n            var mid = min + max >> 1;\n            var seg = this.table.segments[mid]; // special end of search value\n\n            if (seg.firstGlyph === 0xffff) {\n              return null;\n            }\n            if (glyph < seg.firstGlyph) {\n              max = mid - 1;\n            } else if (glyph > seg.lastGlyph) {\n              min = mid + 1;\n            } else {\n              if (this.table.version === 2) {\n                return seg.value;\n              } else {\n                return seg.values[glyph - seg.firstGlyph];\n              }\n            }\n          }\n          return null;\n        }\n      case 6:\n        {\n          // lookup single\n          var _min = 0;\n          var _max = this.table.binarySearchHeader.nUnits - 1;\n          while (_min <= _max) {\n            var mid = _min + _max >> 1;\n            var seg = this.table.segments[mid]; // special end of search value\n\n            if (seg.glyph === 0xffff) {\n              return null;\n            }\n            if (glyph < seg.glyph) {\n              _max = mid - 1;\n            } else if (glyph > seg.glyph) {\n              _min = mid + 1;\n            } else {\n              return seg.value;\n            }\n          }\n          return null;\n        }\n      case 8:\n        // lookup trimmed\n        return this.table.values[glyph - this.table.firstGlyph];\n      default:\n        throw new Error(\"Unknown lookup table format: \".concat(this.table.version));\n    }\n  };\n  _proto19.glyphsForValue = function glyphsForValue(classValue) {\n    var res = [];\n    switch (this.table.version) {\n      case 2: // segment format\n\n      case 4:\n        {\n          for (var _iterator21 = _createForOfIteratorHelperLoose(this.table.segments), _step21; !(_step21 = _iterator21()).done;) {\n            var segment = _step21.value;\n            if (this.table.version === 2 && segment.value === classValue) {\n              res.push.apply(res, range(segment.firstGlyph, segment.lastGlyph + 1));\n            } else {\n              for (var index = 0; index < segment.values.length; index++) {\n                if (segment.values[index] === classValue) {\n                  res.push(segment.firstGlyph + index);\n                }\n              }\n            }\n          }\n          break;\n        }\n      case 6:\n        {\n          // lookup single\n          for (var _iterator22 = _createForOfIteratorHelperLoose(this.table.segments), _step22; !(_step22 = _iterator22()).done;) {\n            var _segment = _step22.value;\n            if (_segment.value === classValue) {\n              res.push(_segment.glyph);\n            }\n          }\n          break;\n        }\n      case 8:\n        {\n          // lookup trimmed\n          for (var i = 0; i < this.table.values.length; i++) {\n            if (this.table.values[i] === classValue) {\n              res.push(this.table.firstGlyph + i);\n            }\n          }\n          break;\n        }\n      default:\n        throw new Error(\"Unknown lookup table format: \".concat(this.table.version));\n    }\n    return res;\n  };\n  return AATLookupTable;\n}(), _applyDecoratedDescriptor(_class$1.prototype, \"glyphsForValue\", [cache], Object.getOwnPropertyDescriptor(_class$1.prototype, \"glyphsForValue\"), _class$1.prototype), _class$1);\nvar START_OF_TEXT_STATE = 0;\nvar END_OF_TEXT_CLASS = 0;\nvar OUT_OF_BOUNDS_CLASS = 1;\nvar DELETED_GLYPH_CLASS = 2;\nvar DONT_ADVANCE = 0x4000;\nvar AATStateMachine = /*#__PURE__*/function () {\n  function AATStateMachine(stateTable) {\n    this.stateTable = stateTable;\n    this.lookupTable = new AATLookupTable(stateTable.classTable);\n  }\n  var _proto20 = AATStateMachine.prototype;\n  _proto20.process = function process(glyphs, reverse, processEntry) {\n    var currentState = START_OF_TEXT_STATE; // START_OF_LINE_STATE is used for kashida glyph insertions sometimes I think?\n\n    var index = reverse ? glyphs.length - 1 : 0;\n    var dir = reverse ? -1 : 1;\n    while (dir === 1 && index <= glyphs.length || dir === -1 && index >= -1) {\n      var glyph = null;\n      var classCode = OUT_OF_BOUNDS_CLASS;\n      var shouldAdvance = true;\n      if (index === glyphs.length || index === -1) {\n        classCode = END_OF_TEXT_CLASS;\n      } else {\n        glyph = glyphs[index];\n        if (glyph.id === 0xffff) {\n          // deleted glyph\n          classCode = DELETED_GLYPH_CLASS;\n        } else {\n          classCode = this.lookupTable.lookup(glyph.id);\n          if (classCode == null) {\n            classCode = OUT_OF_BOUNDS_CLASS;\n          }\n        }\n      }\n      var row = this.stateTable.stateArray.getItem(currentState);\n      var entryIndex = row[classCode];\n      var entry = this.stateTable.entryTable.getItem(entryIndex);\n      if (classCode !== END_OF_TEXT_CLASS && classCode !== DELETED_GLYPH_CLASS) {\n        processEntry(glyph, entry, index);\n        shouldAdvance = !(entry.flags & DONT_ADVANCE);\n      }\n      currentState = entry.newState;\n      if (shouldAdvance) {\n        index += dir;\n      }\n    }\n    return glyphs;\n  }\n  /**\r\n   * Performs a depth-first traversal of the glyph strings\r\n   * represented by the state machine.\r\n   */;\n  _proto20.traverse = function traverse(opts, state, visited) {\n    if (state === void 0) {\n      state = 0;\n    }\n    if (visited === void 0) {\n      visited = new Set();\n    }\n    if (visited.has(state)) {\n      return;\n    }\n    visited.add(state);\n    var _this$stateTable = this.stateTable,\n      nClasses = _this$stateTable.nClasses,\n      stateArray = _this$stateTable.stateArray,\n      entryTable = _this$stateTable.entryTable;\n    var row = stateArray.getItem(state); // Skip predefined classes\n\n    for (var classCode = 4; classCode < nClasses; classCode++) {\n      var entryIndex = row[classCode];\n      var entry = entryTable.getItem(entryIndex); // Try all glyphs in the class\n\n      for (var _iterator23 = _createForOfIteratorHelperLoose(this.lookupTable.glyphsForValue(classCode)), _step23; !(_step23 = _iterator23()).done;) {\n        var glyph = _step23.value;\n        if (opts.enter) {\n          opts.enter(glyph, entry);\n        }\n        if (entry.newState !== 0) {\n          this.traverse(opts, entry.newState, visited);\n        }\n        if (opts.exit) {\n          opts.exit(glyph, entry);\n        }\n      }\n    }\n  };\n  return AATStateMachine;\n}();\nvar _class$2;\nvar MARK_FIRST = 0x8000;\nvar MARK_LAST = 0x2000;\nvar VERB = 0x000F; // contextual substitution and glyph insertion flag\n\nvar SET_MARK = 0x8000; // ligature entry flags\n\nvar SET_COMPONENT = 0x8000;\nvar PERFORM_ACTION = 0x2000; // ligature action masks\n\nvar LAST_MASK = 0x80000000;\nvar STORE_MASK = 0x40000000;\nvar OFFSET_MASK = 0x3FFFFFFF;\nvar REVERSE_DIRECTION = 0x400000;\nvar CURRENT_INSERT_BEFORE = 0x0800;\nvar MARKED_INSERT_BEFORE = 0x0400;\nvar CURRENT_INSERT_COUNT = 0x03E0;\nvar MARKED_INSERT_COUNT = 0x001F;\nvar AATMorxProcessor = (_class$2 = /*#__PURE__*/function () {\n  function AATMorxProcessor(font) {\n    this.processIndicRearragement = this.processIndicRearragement.bind(this);\n    this.processContextualSubstitution = this.processContextualSubstitution.bind(this);\n    this.processLigature = this.processLigature.bind(this);\n    this.processNoncontextualSubstitutions = this.processNoncontextualSubstitutions.bind(this);\n    this.processGlyphInsertion = this.processGlyphInsertion.bind(this);\n    this.font = font;\n    this.morx = font.morx;\n    this.inputCache = null;\n  } // Processes an array of glyphs and applies the specified features\n  // Features should be in the form of {featureType:{featureSetting:boolean}}\n  var _proto21 = AATMorxProcessor.prototype;\n  _proto21.process = function process(glyphs, features) {\n    if (features === void 0) {\n      features = {};\n    }\n    for (var _iterator24 = _createForOfIteratorHelperLoose(this.morx.chains), _step24; !(_step24 = _iterator24()).done;) {\n      var chain = _step24.value;\n      var flags = chain.defaultFlags; // enable/disable the requested features\n\n      for (var _iterator25 = _createForOfIteratorHelperLoose(chain.features), _step25; !(_step25 = _iterator25()).done;) {\n        var feature = _step25.value;\n        var f = void 0;\n        if (f = features[feature.featureType]) {\n          if (f[feature.featureSetting]) {\n            flags &= feature.disableFlags;\n            flags |= feature.enableFlags;\n          } else if (f[feature.featureSetting] === false) {\n            flags |= ~feature.disableFlags;\n            flags &= ~feature.enableFlags;\n          }\n        }\n      }\n      for (var _iterator26 = _createForOfIteratorHelperLoose(chain.subtables), _step26; !(_step26 = _iterator26()).done;) {\n        var subtable = _step26.value;\n        if (subtable.subFeatureFlags & flags) {\n          this.processSubtable(subtable, glyphs);\n        }\n      }\n    } // remove deleted glyphs\n\n    var index = glyphs.length - 1;\n    while (index >= 0) {\n      if (glyphs[index].id === 0xffff) {\n        glyphs.splice(index, 1);\n      }\n      index--;\n    }\n    return glyphs;\n  };\n  _proto21.processSubtable = function processSubtable(subtable, glyphs) {\n    this.subtable = subtable;\n    this.glyphs = glyphs;\n    if (this.subtable.type === 4) {\n      this.processNoncontextualSubstitutions(this.subtable, this.glyphs);\n      return;\n    }\n    this.ligatureStack = [];\n    this.markedGlyph = null;\n    this.firstGlyph = null;\n    this.lastGlyph = null;\n    this.markedIndex = null;\n    var stateMachine = this.getStateMachine(subtable);\n    var process = this.getProcessor();\n    var reverse = !!(this.subtable.coverage & REVERSE_DIRECTION);\n    return stateMachine.process(this.glyphs, reverse, process);\n  };\n  _proto21.getStateMachine = function getStateMachine(subtable) {\n    return new AATStateMachine(subtable.table.stateTable);\n  };\n  _proto21.getProcessor = function getProcessor() {\n    switch (this.subtable.type) {\n      case 0:\n        return this.processIndicRearragement;\n      case 1:\n        return this.processContextualSubstitution;\n      case 2:\n        return this.processLigature;\n      case 4:\n        return this.processNoncontextualSubstitutions;\n      case 5:\n        return this.processGlyphInsertion;\n      default:\n        throw new Error(\"Invalid morx subtable type: \".concat(this.subtable.type));\n    }\n  };\n  _proto21.processIndicRearragement = function processIndicRearragement(glyph, entry, index) {\n    if (entry.flags & MARK_FIRST) {\n      this.firstGlyph = index;\n    }\n    if (entry.flags & MARK_LAST) {\n      this.lastGlyph = index;\n    }\n    reorderGlyphs(this.glyphs, entry.flags & VERB, this.firstGlyph, this.lastGlyph);\n  };\n  _proto21.processContextualSubstitution = function processContextualSubstitution(glyph, entry, index) {\n    var subsitutions = this.subtable.table.substitutionTable.items;\n    if (entry.markIndex !== 0xffff) {\n      var lookup = subsitutions.getItem(entry.markIndex);\n      var lookupTable = new AATLookupTable(lookup);\n      glyph = this.glyphs[this.markedGlyph];\n      var gid = lookupTable.lookup(glyph.id);\n      if (gid) {\n        this.glyphs[this.markedGlyph] = this.font.getGlyph(gid, glyph.codePoints);\n      }\n    }\n    if (entry.currentIndex !== 0xffff) {\n      var _lookup = subsitutions.getItem(entry.currentIndex);\n      var _lookupTable = new AATLookupTable(_lookup);\n      glyph = this.glyphs[index];\n      var gid = _lookupTable.lookup(glyph.id);\n      if (gid) {\n        this.glyphs[index] = this.font.getGlyph(gid, glyph.codePoints);\n      }\n    }\n    if (entry.flags & SET_MARK) {\n      this.markedGlyph = index;\n    }\n  };\n  _proto21.processLigature = function processLigature(glyph, entry, index) {\n    if (entry.flags & SET_COMPONENT) {\n      this.ligatureStack.push(index);\n    }\n    if (entry.flags & PERFORM_ACTION) {\n      var _this$ligatureStack;\n      var actions = this.subtable.table.ligatureActions;\n      var components = this.subtable.table.components;\n      var ligatureList = this.subtable.table.ligatureList;\n      var actionIndex = entry.action;\n      var last = false;\n      var ligatureIndex = 0;\n      var codePoints = [];\n      var ligatureGlyphs = [];\n      while (!last) {\n        var _codePoints;\n        var componentGlyph = this.ligatureStack.pop();\n        (_codePoints = codePoints).unshift.apply(_codePoints, this.glyphs[componentGlyph].codePoints);\n        var action = actions.getItem(actionIndex++);\n        last = !!(action & LAST_MASK);\n        var store = !!(action & STORE_MASK);\n        var offset = (action & OFFSET_MASK) << 2 >> 2; // sign extend 30 to 32 bits\n\n        offset += this.glyphs[componentGlyph].id;\n        var component = components.getItem(offset);\n        ligatureIndex += component;\n        if (last || store) {\n          var ligatureEntry = ligatureList.getItem(ligatureIndex);\n          this.glyphs[componentGlyph] = this.font.getGlyph(ligatureEntry, codePoints);\n          ligatureGlyphs.push(componentGlyph);\n          ligatureIndex = 0;\n          codePoints = [];\n        } else {\n          this.glyphs[componentGlyph] = this.font.getGlyph(0xffff);\n        }\n      } // Put ligature glyph indexes back on the stack\n\n      (_this$ligatureStack = this.ligatureStack).push.apply(_this$ligatureStack, ligatureGlyphs);\n    }\n  };\n  _proto21.processNoncontextualSubstitutions = function processNoncontextualSubstitutions(subtable, glyphs, index) {\n    var lookupTable = new AATLookupTable(subtable.table.lookupTable);\n    for (index = 0; index < glyphs.length; index++) {\n      var glyph = glyphs[index];\n      if (glyph.id !== 0xffff) {\n        var gid = lookupTable.lookup(glyph.id);\n        if (gid) {\n          // 0 means do nothing\n          glyphs[index] = this.font.getGlyph(gid, glyph.codePoints);\n        }\n      }\n    }\n  };\n  _proto21._insertGlyphs = function _insertGlyphs(glyphIndex, insertionActionIndex, count, isBefore) {\n    var _this$glyphs;\n    var insertions = [];\n    while (count--) {\n      var gid = this.subtable.table.insertionActions.getItem(insertionActionIndex++);\n      insertions.push(this.font.getGlyph(gid));\n    }\n    if (!isBefore) {\n      glyphIndex++;\n    }\n    (_this$glyphs = this.glyphs).splice.apply(_this$glyphs, [glyphIndex, 0].concat(insertions));\n  };\n  _proto21.processGlyphInsertion = function processGlyphInsertion(glyph, entry, index) {\n    if (entry.flags & SET_MARK) {\n      this.markedIndex = index;\n    }\n    if (entry.markedInsertIndex !== 0xffff) {\n      var count = (entry.flags & MARKED_INSERT_COUNT) >>> 5;\n      var isBefore = !!(entry.flags & MARKED_INSERT_BEFORE);\n      this._insertGlyphs(this.markedIndex, entry.markedInsertIndex, count, isBefore);\n    }\n    if (entry.currentInsertIndex !== 0xffff) {\n      var _count = (entry.flags & CURRENT_INSERT_COUNT) >>> 5;\n      var _isBefore = !!(entry.flags & CURRENT_INSERT_BEFORE);\n      this._insertGlyphs(index, entry.currentInsertIndex, _count, _isBefore);\n    }\n  };\n  _proto21.getSupportedFeatures = function getSupportedFeatures() {\n    var features = [];\n    for (var _iterator27 = _createForOfIteratorHelperLoose(this.morx.chains), _step27; !(_step27 = _iterator27()).done;) {\n      var chain = _step27.value;\n      for (var _iterator28 = _createForOfIteratorHelperLoose(chain.features), _step28; !(_step28 = _iterator28()).done;) {\n        var feature = _step28.value;\n        features.push([feature.featureType, feature.featureSetting]);\n      }\n    }\n    return features;\n  };\n  _proto21.generateInputs = function generateInputs(gid) {\n    if (!this.inputCache) {\n      this.generateInputCache();\n    }\n    return this.inputCache[gid] || [];\n  };\n  _proto21.generateInputCache = function generateInputCache() {\n    this.inputCache = {};\n    for (var _iterator29 = _createForOfIteratorHelperLoose(this.morx.chains), _step29; !(_step29 = _iterator29()).done;) {\n      var chain = _step29.value;\n      var flags = chain.defaultFlags;\n      for (var _iterator30 = _createForOfIteratorHelperLoose(chain.subtables), _step30; !(_step30 = _iterator30()).done;) {\n        var subtable = _step30.value;\n        if (subtable.subFeatureFlags & flags) {\n          this.generateInputsForSubtable(subtable);\n        }\n      }\n    }\n  };\n  _proto21.generateInputsForSubtable = function generateInputsForSubtable(subtable) {\n    var _this3 = this;\n    // Currently, only supporting ligature subtables.\n    if (subtable.type !== 2) {\n      return;\n    }\n    var reverse = !!(subtable.coverage & REVERSE_DIRECTION);\n    if (reverse) {\n      throw new Error('Reverse subtable, not supported.');\n    }\n    this.subtable = subtable;\n    this.ligatureStack = [];\n    var stateMachine = this.getStateMachine(subtable);\n    var process = this.getProcessor();\n    var input = [];\n    var stack = [];\n    this.glyphs = [];\n    stateMachine.traverse({\n      enter: function enter(glyph, entry) {\n        var glyphs = _this3.glyphs;\n        stack.push({\n          glyphs: glyphs.slice(),\n          ligatureStack: _this3.ligatureStack.slice()\n        }); // Add glyph to input and glyphs to process.\n\n        var g = _this3.font.getGlyph(glyph);\n        input.push(g);\n        glyphs.push(input[input.length - 1]); // Process ligature substitution\n\n        process(glyphs[glyphs.length - 1], entry, glyphs.length - 1); // Add input to result if only one matching (non-deleted) glyph remains.\n\n        var count = 0;\n        var found = 0;\n        for (var i = 0; i < glyphs.length && count <= 1; i++) {\n          if (glyphs[i].id !== 0xffff) {\n            count++;\n            found = glyphs[i].id;\n          }\n        }\n        if (count === 1) {\n          var result = input.map(function (g) {\n            return g.id;\n          });\n          var _cache = _this3.inputCache[found];\n          if (_cache) {\n            _cache.push(result);\n          } else {\n            _this3.inputCache[found] = [result];\n          }\n        }\n      },\n      exit: function exit() {\n        var _stack$pop = stack.pop();\n        _this3.glyphs = _stack$pop.glyphs;\n        _this3.ligatureStack = _stack$pop.ligatureStack;\n        input.pop();\n      }\n    });\n  };\n  return AATMorxProcessor;\n}(), _applyDecoratedDescriptor(_class$2.prototype, \"getStateMachine\", [cache], Object.getOwnPropertyDescriptor(_class$2.prototype, \"getStateMachine\"), _class$2.prototype), _class$2);\n// reverse the glyphs inside those ranges if specified\n// ranges are in [offset, length] format\n\nfunction swap(glyphs, rangeA, rangeB, reverseA, reverseB) {\n  if (reverseA === void 0) {\n    reverseA = false;\n  }\n  if (reverseB === void 0) {\n    reverseB = false;\n  }\n  var end = glyphs.splice(rangeB[0] - (rangeB[1] - 1), rangeB[1]);\n  if (reverseB) {\n    end.reverse();\n  }\n  var start = glyphs.splice.apply(glyphs, [rangeA[0], rangeA[1]].concat(end));\n  if (reverseA) {\n    start.reverse();\n  }\n  glyphs.splice.apply(glyphs, [rangeB[0] - (rangeA[1] - 1), 0].concat(start));\n  return glyphs;\n}\nfunction reorderGlyphs(glyphs, verb, firstGlyph, lastGlyph) {\n  switch (verb) {\n    case 0:\n      // no change\n      return glyphs;\n    case 1:\n      // Ax => xA\n      return swap(glyphs, [firstGlyph, 1], [lastGlyph, 0]);\n    case 2:\n      // xD => Dx\n      return swap(glyphs, [firstGlyph, 0], [lastGlyph, 1]);\n    case 3:\n      // AxD => DxA\n      return swap(glyphs, [firstGlyph, 1], [lastGlyph, 1]);\n    case 4:\n      // ABx => xAB\n      return swap(glyphs, [firstGlyph, 2], [lastGlyph, 0]);\n    case 5:\n      // ABx => xBA\n      return swap(glyphs, [firstGlyph, 2], [lastGlyph, 0], true, false);\n    case 6:\n      // xCD => CDx\n      return swap(glyphs, [firstGlyph, 0], [lastGlyph, 2]);\n    case 7:\n      // xCD => DCx\n      return swap(glyphs, [firstGlyph, 0], [lastGlyph, 2], false, true);\n    case 8:\n      // AxCD => CDxA\n      return swap(glyphs, [firstGlyph, 1], [lastGlyph, 2]);\n    case 9:\n      // AxCD => DCxA\n      return swap(glyphs, [firstGlyph, 1], [lastGlyph, 2], false, true);\n    case 10:\n      // ABxD => DxAB\n      return swap(glyphs, [firstGlyph, 2], [lastGlyph, 1]);\n    case 11:\n      // ABxD => DxBA\n      return swap(glyphs, [firstGlyph, 2], [lastGlyph, 1], true, false);\n    case 12:\n      // ABxCD => CDxAB\n      return swap(glyphs, [firstGlyph, 2], [lastGlyph, 2]);\n    case 13:\n      // ABxCD => CDxBA\n      return swap(glyphs, [firstGlyph, 2], [lastGlyph, 2], true, false);\n    case 14:\n      // ABxCD => DCxAB\n      return swap(glyphs, [firstGlyph, 2], [lastGlyph, 2], false, true);\n    case 15:\n      // ABxCD => DCxBA\n      return swap(glyphs, [firstGlyph, 2], [lastGlyph, 2], true, true);\n    default:\n      throw new Error(\"Unknown verb: \".concat(verb));\n  }\n}\nvar AATLayoutEngine = /*#__PURE__*/function () {\n  function AATLayoutEngine(font) {\n    this.font = font;\n    this.morxProcessor = new AATMorxProcessor(font);\n    this.fallbackPosition = false;\n  }\n  var _proto22 = AATLayoutEngine.prototype;\n  _proto22.substitute = function substitute(glyphRun) {\n    // AAT expects the glyphs to be in visual order prior to morx processing,\n    // so reverse the glyphs if the script is right-to-left.\n    if (glyphRun.direction === 'rtl') {\n      glyphRun.glyphs.reverse();\n    }\n    this.morxProcessor.process(glyphRun.glyphs, mapOTToAAT(glyphRun.features));\n  };\n  _proto22.getAvailableFeatures = function getAvailableFeatures(script, language) {\n    return mapAATToOT(this.morxProcessor.getSupportedFeatures());\n  };\n  _proto22.stringsForGlyph = function stringsForGlyph(gid) {\n    var glyphStrings = this.morxProcessor.generateInputs(gid);\n    var result = new Set();\n    for (var _iterator31 = _createForOfIteratorHelperLoose(glyphStrings), _step31; !(_step31 = _iterator31()).done;) {\n      var glyphs = _step31.value;\n      this._addStrings(glyphs, 0, result, '');\n    }\n    return result;\n  };\n  _proto22._addStrings = function _addStrings(glyphs, index, strings, string) {\n    var codePoints = this.font._cmapProcessor.codePointsForGlyph(glyphs[index]);\n    for (var _iterator32 = _createForOfIteratorHelperLoose(codePoints), _step32; !(_step32 = _iterator32()).done;) {\n      var codePoint = _step32.value;\n      var s = string + String.fromCodePoint(codePoint);\n      if (index < glyphs.length - 1) {\n        this._addStrings(glyphs, index + 1, strings, s);\n      } else {\n        strings.add(s);\n      }\n    }\n  };\n  return AATLayoutEngine;\n}();\n/**\r\n * ShapingPlans are used by the OpenType shapers to store which\r\n * features should by applied, and in what order to apply them.\r\n * The features are applied in groups called stages. A feature\r\n * can be applied globally to all glyphs, or locally to only\r\n * specific glyphs.\r\n *\r\n * @private\r\n */\nvar ShapingPlan = /*#__PURE__*/function () {\n  function ShapingPlan(font, script, direction) {\n    this.font = font;\n    this.script = script;\n    this.direction = direction;\n    this.stages = [];\n    this.globalFeatures = {};\n    this.allFeatures = {};\n  }\n  /**\r\n   * Adds the given features to the last stage.\r\n   * Ignores features that have already been applied.\r\n   */\n  var _proto23 = ShapingPlan.prototype;\n  _proto23._addFeatures = function _addFeatures(features, global) {\n    var stageIndex = this.stages.length - 1;\n    var stage = this.stages[stageIndex];\n    for (var _iterator33 = _createForOfIteratorHelperLoose(features), _step33; !(_step33 = _iterator33()).done;) {\n      var feature = _step33.value;\n      if (this.allFeatures[feature] == null) {\n        stage.push(feature);\n        this.allFeatures[feature] = stageIndex;\n        if (global) {\n          this.globalFeatures[feature] = true;\n        }\n      }\n    }\n  }\n  /**\r\n   * Add features to the last stage\r\n   */;\n  _proto23.add = function add(arg, global) {\n    if (global === void 0) {\n      global = true;\n    }\n    if (this.stages.length === 0) {\n      this.stages.push([]);\n    }\n    if (typeof arg === 'string') {\n      arg = [arg];\n    }\n    if (Array.isArray(arg)) {\n      this._addFeatures(arg, global);\n    } else if (typeof arg === 'object') {\n      this._addFeatures(arg.global || [], true);\n      this._addFeatures(arg.local || [], false);\n    } else {\n      throw new Error(\"Unsupported argument to ShapingPlan#add\");\n    }\n  }\n  /**\r\n   * Add a new stage\r\n   */;\n  _proto23.addStage = function addStage(arg, global) {\n    if (typeof arg === 'function') {\n      this.stages.push(arg, []);\n    } else {\n      this.stages.push([]);\n      this.add(arg, global);\n    }\n  };\n  _proto23.setFeatureOverrides = function setFeatureOverrides(features) {\n    if (Array.isArray(features)) {\n      this.add(features);\n    } else if (typeof features === 'object') {\n      for (var tag in features) {\n        if (features[tag]) {\n          this.add(tag);\n        } else if (this.allFeatures[tag] != null) {\n          var stage = this.stages[this.allFeatures[tag]];\n          stage.splice(stage.indexOf(tag), 1);\n          delete this.allFeatures[tag];\n          delete this.globalFeatures[tag];\n        }\n      }\n    }\n  }\n  /**\r\n   * Assigns the global features to the given glyphs\r\n   */;\n  _proto23.assignGlobalFeatures = function assignGlobalFeatures(glyphs) {\n    for (var _iterator34 = _createForOfIteratorHelperLoose(glyphs), _step34; !(_step34 = _iterator34()).done;) {\n      var glyph = _step34.value;\n      for (var feature in this.globalFeatures) {\n        glyph.features[feature] = true;\n      }\n    }\n  }\n  /**\r\n   * Executes the planned stages using the given OTProcessor\r\n   */;\n  _proto23.process = function process(processor, glyphs, positions) {\n    for (var _iterator35 = _createForOfIteratorHelperLoose(this.stages), _step35; !(_step35 = _iterator35()).done;) {\n      var stage = _step35.value;\n      if (typeof stage === 'function') {\n        if (!positions) {\n          stage(this.font, glyphs, this);\n        }\n      } else if (stage.length > 0) {\n        processor.applyFeatures(stage, glyphs, positions);\n      }\n    }\n  };\n  return ShapingPlan;\n}();\nvar VARIATION_FEATURES = ['rvrn'];\nvar COMMON_FEATURES = ['ccmp', 'locl', 'rlig', 'mark', 'mkmk'];\nvar FRACTIONAL_FEATURES = ['frac', 'numr', 'dnom'];\nvar HORIZONTAL_FEATURES = ['calt', 'clig', 'liga', 'rclt', 'curs', 'kern'];\nvar DIRECTIONAL_FEATURES = {\n  ltr: ['ltra', 'ltrm'],\n  rtl: ['rtla', 'rtlm']\n};\nvar DefaultShaper = /*#__PURE__*/function () {\n  function DefaultShaper() {}\n  DefaultShaper.plan = function plan(_plan, glyphs, features) {\n    // Plan the features we want to apply\n    this.planPreprocessing(_plan);\n    this.planFeatures(_plan);\n    this.planPostprocessing(_plan, features); // Assign the global features to all the glyphs\n\n    _plan.assignGlobalFeatures(glyphs); // Assign local features to glyphs\n\n    this.assignFeatures(_plan, glyphs);\n  };\n  DefaultShaper.planPreprocessing = function planPreprocessing(plan) {\n    plan.add({\n      global: [].concat(VARIATION_FEATURES, DIRECTIONAL_FEATURES[plan.direction]),\n      local: FRACTIONAL_FEATURES\n    });\n  };\n  DefaultShaper.planFeatures = function planFeatures(plan) {// Do nothing by default. Let subclasses override this.\n  };\n  DefaultShaper.planPostprocessing = function planPostprocessing(plan, userFeatures) {\n    plan.add([].concat(COMMON_FEATURES, HORIZONTAL_FEATURES));\n    plan.setFeatureOverrides(userFeatures);\n  };\n  DefaultShaper.assignFeatures = function assignFeatures(plan, glyphs) {\n    // Enable contextual fractions\n    for (var i = 0; i < glyphs.length; i++) {\n      var glyph = glyphs[i];\n      if (glyph.codePoints[0] === 0x2044) {\n        // fraction slash\n        var start = i;\n        var end = i + 1; // Apply numerator\n\n        while (start > 0 && unicode.isDigit(glyphs[start - 1].codePoints[0])) {\n          glyphs[start - 1].features.numr = true;\n          glyphs[start - 1].features.frac = true;\n          start--;\n        } // Apply denominator\n\n        while (end < glyphs.length && unicode.isDigit(glyphs[end].codePoints[0])) {\n          glyphs[end].features.dnom = true;\n          glyphs[end].features.frac = true;\n          end++;\n        } // Apply fraction slash\n\n        glyph.features.frac = true;\n        i = end - 1;\n      }\n    }\n  };\n  return DefaultShaper;\n}();\n_defineProperty(DefaultShaper, \"zeroMarkWidths\", 'AFTER_GPOS');\nvar trie = new UnicodeTrie(Buffer(\"APABAAAAAAAAOAAAAf0BAv7tmi1MxDAUx7vtvjhAgcDgkEgEAnmXEBIMCYaEcygEiqBQ4FAkCE4ikUgMiiBJSAgSiUQSDMn9L9eSl6bddddug9t7yS/trevre+3r27pcNxZiG+yCfdCVv/9LeQxOwRm4AJegD27ALbgD9+ABPJF+z+BN/h7yDj5k/VOWX6SdmU5+wLWknggxDxaS8u0qiiX4uiz9XamQ3wzDMAzDMAzDMAzDVI/h959V/v7BMAzDMAzDMLlyNTNiMSdewVxbiA44B4/guz1qW58VYlMI0WsJ0W+N6kXw0spvPtdwhtkwnGM6uLaV4Xyzg3v3PM9DPfQ/sOg4xPWjipy31P8LTqbU304c/cLCUmWJLNB2Uz2U1KTeRKNmKHVMfbJC+/0loTZRH/W5cvEvBJPMbREkWt3FD1NcqXZBSpuE2Ad0PBehPtNrPtIEdYP+hiRt/V1jIiE69X4NT/uVZI3PUHE9bm5M7ePGdZWy951v7Nn6j8v1WWKP3mt6ttnsigx6VN7Vc0VomSSGqW2mGNP1muZPl7LfjNUaKNFtDGVf2fvE9O7VlBS5j333c5p/eeoOqcs1R/hIqDWLJ7TTlksirVT1SI7l8k4Yp+g3jafGcrU1RM6l9th80XOpnlN97bDNY4i4s61B0Si/ipa0uHMl6zqEjlFfCZm/TM8KmzQDjmuTAQ==\",\"base64\"));\nvar FEATURES = ['isol', 'fina', 'fin2', 'fin3', 'medi', 'med2', 'init'];\nvar ShapingClasses = {\n  Non_Joining: 0,\n  Left_Joining: 1,\n  Right_Joining: 2,\n  Dual_Joining: 3,\n  Join_Causing: 3,\n  ALAPH: 4,\n  'DALATH RISH': 5,\n  Transparent: 6\n};\nvar ISOL = 'isol';\nvar FINA = 'fina';\nvar FIN2 = 'fin2';\nvar FIN3 = 'fin3';\nvar MEDI = 'medi';\nvar MED2 = 'med2';\nvar INIT = 'init';\nvar NONE = null; // Each entry is [prevAction, curAction, nextState]\n\nvar STATE_TABLE = [\n//   Non_Joining,        Left_Joining,       Right_Joining,     Dual_Joining,           ALAPH,            DALATH RISH\n// State 0: prev was U,  not willing to join.\n[[NONE, NONE, 0], [NONE, ISOL, 2], [NONE, ISOL, 1], [NONE, ISOL, 2], [NONE, ISOL, 1], [NONE, ISOL, 6]],\n// State 1: prev was R or ISOL/ALAPH,  not willing to join.\n[[NONE, NONE, 0], [NONE, ISOL, 2], [NONE, ISOL, 1], [NONE, ISOL, 2], [NONE, FIN2, 5], [NONE, ISOL, 6]],\n// State 2: prev was D/L in ISOL form,  willing to join.\n[[NONE, NONE, 0], [NONE, ISOL, 2], [INIT, FINA, 1], [INIT, FINA, 3], [INIT, FINA, 4], [INIT, FINA, 6]],\n// State 3: prev was D in FINA form,  willing to join.\n[[NONE, NONE, 0], [NONE, ISOL, 2], [MEDI, FINA, 1], [MEDI, FINA, 3], [MEDI, FINA, 4], [MEDI, FINA, 6]],\n// State 4: prev was FINA ALAPH,  not willing to join.\n[[NONE, NONE, 0], [NONE, ISOL, 2], [MED2, ISOL, 1], [MED2, ISOL, 2], [MED2, FIN2, 5], [MED2, ISOL, 6]],\n// State 5: prev was FIN2/FIN3 ALAPH,  not willing to join.\n[[NONE, NONE, 0], [NONE, ISOL, 2], [ISOL, ISOL, 1], [ISOL, ISOL, 2], [ISOL, FIN2, 5], [ISOL, ISOL, 6]],\n// State 6: prev was DALATH/RISH,  not willing to join.\n[[NONE, NONE, 0], [NONE, ISOL, 2], [NONE, ISOL, 1], [NONE, ISOL, 2], [NONE, FIN3, 5], [NONE, ISOL, 6]]];\n/**\r\n * This is a shaper for Arabic, and other cursive scripts.\r\n * It uses data from ArabicShaping.txt in the Unicode database,\r\n * compiled to a UnicodeTrie by generate-data.coffee.\r\n *\r\n * The shaping state machine was ported from Harfbuzz.\r\n * https://github.com/behdad/harfbuzz/blob/master/src/hb-ot-shape-complex-arabic.cc\r\n */\nvar ArabicShaper = /*#__PURE__*/function (_DefaultShaper) {\n  _inheritsLoose(ArabicShaper, _DefaultShaper);\n  function ArabicShaper() {\n    return _DefaultShaper.apply(this, arguments) || this;\n  }\n  ArabicShaper.planFeatures = function planFeatures(plan) {\n    plan.add(['ccmp', 'locl']);\n    for (var i = 0; i < FEATURES.length; i++) {\n      var feature = FEATURES[i];\n      plan.addStage(feature, false);\n    }\n    plan.addStage('mset');\n  };\n  ArabicShaper.assignFeatures = function assignFeatures(plan, glyphs) {\n    _DefaultShaper.assignFeatures.call(this, plan, glyphs);\n    var prev = -1;\n    var state = 0;\n    var actions = []; // Apply the state machine to map glyphs to features\n\n    for (var i = 0; i < glyphs.length; i++) {\n      var curAction = void 0,\n        prevAction = void 0;\n      var glyph = glyphs[i];\n      var type = getShapingClass(glyph.codePoints[0]);\n      if (type === ShapingClasses.Transparent) {\n        actions[i] = NONE;\n        continue;\n      }\n      var _STATE_TABLE$state$ty = STATE_TABLE[state][type];\n      prevAction = _STATE_TABLE$state$ty[0];\n      curAction = _STATE_TABLE$state$ty[1];\n      state = _STATE_TABLE$state$ty[2];\n      if (prevAction !== NONE && prev !== -1) {\n        actions[prev] = prevAction;\n      }\n      actions[i] = curAction;\n      prev = i;\n    } // Apply the chosen features to their respective glyphs\n\n    for (var index = 0; index < glyphs.length; index++) {\n      var feature = void 0;\n      var glyph = glyphs[index];\n      if (feature = actions[index]) {\n        glyph.features[feature] = true;\n      }\n    }\n  };\n  return ArabicShaper;\n}(DefaultShaper);\nfunction getShapingClass(codePoint) {\n  var res = trie.get(codePoint);\n  if (res) {\n    return res - 1;\n  }\n  var category = unicode.getCategory(codePoint);\n  if (category === 'Mn' || category === 'Me' || category === 'Cf') {\n    return ShapingClasses.Transparent;\n  }\n  return ShapingClasses.Non_Joining;\n}\nvar GlyphIterator = /*#__PURE__*/function () {\n  function GlyphIterator(glyphs, options) {\n    this.glyphs = glyphs;\n    this.reset(options);\n  }\n  var _proto24 = GlyphIterator.prototype;\n  _proto24.reset = function reset(options, index) {\n    if (options === void 0) {\n      options = {};\n    }\n    if (index === void 0) {\n      index = 0;\n    }\n    this.options = options;\n    this.flags = options.flags || {};\n    this.markAttachmentType = options.markAttachmentType || 0;\n    this.index = index;\n  };\n  _proto24.shouldIgnore = function shouldIgnore(glyph) {\n    return this.flags.ignoreMarks && glyph.isMark || this.flags.ignoreBaseGlyphs && glyph.isBase || this.flags.ignoreLigatures && glyph.isLigature || this.markAttachmentType && glyph.isMark && glyph.markAttachmentType !== this.markAttachmentType;\n  };\n  _proto24.move = function move(dir) {\n    this.index += dir;\n    while (0 <= this.index && this.index < this.glyphs.length && this.shouldIgnore(this.glyphs[this.index])) {\n      this.index += dir;\n    }\n    if (0 > this.index || this.index >= this.glyphs.length) {\n      return null;\n    }\n    return this.glyphs[this.index];\n  };\n  _proto24.next = function next() {\n    return this.move(+1);\n  };\n  _proto24.prev = function prev() {\n    return this.move(-1);\n  };\n  _proto24.peek = function peek(count) {\n    if (count === void 0) {\n      count = 1;\n    }\n    var idx = this.index;\n    var res = this.increment(count);\n    this.index = idx;\n    return res;\n  };\n  _proto24.peekIndex = function peekIndex(count) {\n    if (count === void 0) {\n      count = 1;\n    }\n    var idx = this.index;\n    this.increment(count);\n    var res = this.index;\n    this.index = idx;\n    return res;\n  };\n  _proto24.increment = function increment(count) {\n    if (count === void 0) {\n      count = 1;\n    }\n    var dir = count < 0 ? -1 : 1;\n    count = Math.abs(count);\n    while (count--) {\n      this.move(dir);\n    }\n    return this.glyphs[this.index];\n  };\n  _createClass(GlyphIterator, [{\n    key: \"cur\",\n    get: function get() {\n      return this.glyphs[this.index] || null;\n    }\n  }]);\n  return GlyphIterator;\n}();\nvar DEFAULT_SCRIPTS = ['DFLT', 'dflt', 'latn'];\nvar OTProcessor = /*#__PURE__*/function () {\n  function OTProcessor(font, table) {\n    this.font = font;\n    this.table = table;\n    this.script = null;\n    this.scriptTag = null;\n    this.language = null;\n    this.languageTag = null;\n    this.features = {};\n    this.lookups = {}; // Setup variation substitutions\n\n    this.variationsIndex = font._variationProcessor ? this.findVariationsIndex(font._variationProcessor.normalizedCoords) : -1; // initialize to default script + language\n\n    this.selectScript(); // current context (set by applyFeatures)\n\n    this.glyphs = [];\n    this.positions = []; // only used by GPOS\n\n    this.ligatureID = 1;\n    this.currentFeature = null;\n  }\n  var _proto25 = OTProcessor.prototype;\n  _proto25.findScript = function findScript(script) {\n    if (this.table.scriptList == null) {\n      return null;\n    }\n    if (!Array.isArray(script)) {\n      script = [script];\n    }\n    for (var _iterator36 = _createForOfIteratorHelperLoose(script), _step36; !(_step36 = _iterator36()).done;) {\n      var s = _step36.value;\n      for (var _iterator37 = _createForOfIteratorHelperLoose(this.table.scriptList), _step37; !(_step37 = _iterator37()).done;) {\n        var entry = _step37.value;\n        if (entry.tag === s) {\n          return entry;\n        }\n      }\n    }\n    return null;\n  };\n  _proto25.selectScript = function selectScript(script, language, direction$1) {\n    var changed = false;\n    var entry;\n    if (!this.script || script !== this.scriptTag) {\n      entry = this.findScript(script);\n      if (!entry) {\n        entry = this.findScript(DEFAULT_SCRIPTS);\n      }\n      if (!entry) {\n        return this.scriptTag;\n      }\n      this.scriptTag = entry.tag;\n      this.script = entry.script;\n      this.language = null;\n      this.languageTag = null;\n      changed = true;\n    }\n    if (!direction$1 || direction$1 !== this.direction) {\n      this.direction = direction$1 || direction(script);\n    }\n    if (language && language.length < 4) {\n      language += ' '.repeat(4 - language.length);\n    }\n    if (!language || language !== this.languageTag) {\n      this.language = null;\n      for (var _iterator38 = _createForOfIteratorHelperLoose(this.script.langSysRecords), _step38; !(_step38 = _iterator38()).done;) {\n        var lang = _step38.value;\n        if (lang.tag === language) {\n          this.language = lang.langSys;\n          this.languageTag = lang.tag;\n          break;\n        }\n      }\n      if (!this.language) {\n        this.language = this.script.defaultLangSys;\n        this.languageTag = null;\n      }\n      changed = true;\n    } // Build a feature lookup table\n\n    if (changed) {\n      this.features = {};\n      if (this.language) {\n        for (var _iterator39 = _createForOfIteratorHelperLoose(this.language.featureIndexes), _step39; !(_step39 = _iterator39()).done;) {\n          var featureIndex = _step39.value;\n          var record = this.table.featureList[featureIndex];\n          var substituteFeature = this.substituteFeatureForVariations(featureIndex);\n          this.features[record.tag] = substituteFeature || record.feature;\n        }\n      }\n    }\n    return this.scriptTag;\n  };\n  _proto25.lookupsForFeatures = function lookupsForFeatures(userFeatures, exclude) {\n    if (userFeatures === void 0) {\n      userFeatures = [];\n    }\n    var lookups = [];\n    for (var _iterator40 = _createForOfIteratorHelperLoose(userFeatures), _step40; !(_step40 = _iterator40()).done;) {\n      var tag = _step40.value;\n      var feature = this.features[tag];\n      if (!feature) {\n        continue;\n      }\n      for (var _iterator41 = _createForOfIteratorHelperLoose(feature.lookupListIndexes), _step41; !(_step41 = _iterator41()).done;) {\n        var lookupIndex = _step41.value;\n        if (exclude && exclude.indexOf(lookupIndex) !== -1) {\n          continue;\n        }\n        lookups.push({\n          feature: tag,\n          index: lookupIndex,\n          lookup: this.table.lookupList.get(lookupIndex)\n        });\n      }\n    }\n    lookups.sort(function (a, b) {\n      return a.index - b.index;\n    });\n    return lookups;\n  };\n  _proto25.substituteFeatureForVariations = function substituteFeatureForVariations(featureIndex) {\n    if (this.variationsIndex === -1) {\n      return null;\n    }\n    var record = this.table.featureVariations.featureVariationRecords[this.variationsIndex];\n    var substitutions = record.featureTableSubstitution.substitutions;\n    for (var _iterator42 = _createForOfIteratorHelperLoose(substitutions), _step42; !(_step42 = _iterator42()).done;) {\n      var substitution = _step42.value;\n      if (substitution.featureIndex === featureIndex) {\n        return substitution.alternateFeatureTable;\n      }\n    }\n    return null;\n  };\n  _proto25.findVariationsIndex = function findVariationsIndex(coords) {\n    var variations = this.table.featureVariations;\n    if (!variations) {\n      return -1;\n    }\n    var records = variations.featureVariationRecords;\n    for (var i = 0; i < records.length; i++) {\n      var conditions = records[i].conditionSet.conditionTable;\n      if (this.variationConditionsMatch(conditions, coords)) {\n        return i;\n      }\n    }\n    return -1;\n  };\n  _proto25.variationConditionsMatch = function variationConditionsMatch(conditions, coords) {\n    return conditions.every(function (condition) {\n      var coord = condition.axisIndex < coords.length ? coords[condition.axisIndex] : 0;\n      return condition.filterRangeMinValue <= coord && coord <= condition.filterRangeMaxValue;\n    });\n  };\n  _proto25.applyFeatures = function applyFeatures(userFeatures, glyphs, advances) {\n    var lookups = this.lookupsForFeatures(userFeatures);\n    this.applyLookups(lookups, glyphs, advances);\n  };\n  _proto25.applyLookups = function applyLookups(lookups, glyphs, positions) {\n    this.glyphs = glyphs;\n    this.positions = positions;\n    this.glyphIterator = new GlyphIterator(glyphs);\n    for (var _iterator43 = _createForOfIteratorHelperLoose(lookups), _step43; !(_step43 = _iterator43()).done;) {\n      var _step43$value = _step43.value,\n        feature = _step43$value.feature,\n        lookup = _step43$value.lookup;\n      this.currentFeature = feature;\n      this.glyphIterator.reset(lookup.flags);\n      while (this.glyphIterator.index < glyphs.length) {\n        if (!(feature in this.glyphIterator.cur.features)) {\n          this.glyphIterator.next();\n          continue;\n        }\n        for (var _iterator44 = _createForOfIteratorHelperLoose(lookup.subTables), _step44; !(_step44 = _iterator44()).done;) {\n          var table = _step44.value;\n          var res = this.applyLookup(lookup.lookupType, table);\n          if (res) {\n            break;\n          }\n        }\n        this.glyphIterator.next();\n      }\n    }\n  };\n  _proto25.applyLookup = function applyLookup(lookup, table) {\n    throw new Error(\"applyLookup must be implemented by subclasses\");\n  };\n  _proto25.applyLookupList = function applyLookupList(lookupRecords) {\n    var options = this.glyphIterator.options;\n    var glyphIndex = this.glyphIterator.index;\n    for (var _iterator45 = _createForOfIteratorHelperLoose(lookupRecords), _step45; !(_step45 = _iterator45()).done;) {\n      var lookupRecord = _step45.value;\n      // Reset flags and find glyph index for this lookup record\n      this.glyphIterator.reset(options, glyphIndex);\n      this.glyphIterator.increment(lookupRecord.sequenceIndex); // Get the lookup and setup flags for subtables\n\n      var lookup = this.table.lookupList.get(lookupRecord.lookupListIndex);\n      this.glyphIterator.reset(lookup.flags, this.glyphIterator.index); // Apply lookup subtables until one matches\n\n      for (var _iterator46 = _createForOfIteratorHelperLoose(lookup.subTables), _step46; !(_step46 = _iterator46()).done;) {\n        var table = _step46.value;\n        if (this.applyLookup(lookup.lookupType, table)) {\n          break;\n        }\n      }\n    }\n    this.glyphIterator.reset(options, glyphIndex);\n    return true;\n  };\n  _proto25.coverageIndex = function coverageIndex(coverage, glyph) {\n    if (glyph == null) {\n      glyph = this.glyphIterator.cur.id;\n    }\n    switch (coverage.version) {\n      case 1:\n        return coverage.glyphs.indexOf(glyph);\n      case 2:\n        for (var _iterator47 = _createForOfIteratorHelperLoose(coverage.rangeRecords), _step47; !(_step47 = _iterator47()).done;) {\n          var range = _step47.value;\n          if (range.start <= glyph && glyph <= range.end) {\n            return range.startCoverageIndex + glyph - range.start;\n          }\n        }\n        break;\n    }\n    return -1;\n  };\n  _proto25.match = function match(sequenceIndex, sequence, fn, matched) {\n    var pos = this.glyphIterator.index;\n    var glyph = this.glyphIterator.increment(sequenceIndex);\n    var idx = 0;\n    while (idx < sequence.length && glyph && fn(sequence[idx], glyph)) {\n      if (matched) {\n        matched.push(this.glyphIterator.index);\n      }\n      idx++;\n      glyph = this.glyphIterator.next();\n    }\n    this.glyphIterator.index = pos;\n    if (idx < sequence.length) {\n      return false;\n    }\n    return matched || true;\n  };\n  _proto25.sequenceMatches = function sequenceMatches(sequenceIndex, sequence) {\n    return this.match(sequenceIndex, sequence, function (component, glyph) {\n      return component === glyph.id;\n    });\n  };\n  _proto25.sequenceMatchIndices = function sequenceMatchIndices(sequenceIndex, sequence) {\n    var _this4 = this;\n    return this.match(sequenceIndex, sequence, function (component, glyph) {\n      // If the current feature doesn't apply to this glyph,\n      if (!(_this4.currentFeature in glyph.features)) {\n        return false;\n      }\n      return component === glyph.id;\n    }, []);\n  };\n  _proto25.coverageSequenceMatches = function coverageSequenceMatches(sequenceIndex, sequence) {\n    var _this5 = this;\n    return this.match(sequenceIndex, sequence, function (coverage, glyph) {\n      return _this5.coverageIndex(coverage, glyph.id) >= 0;\n    });\n  };\n  _proto25.getClassID = function getClassID(glyph, classDef) {\n    switch (classDef.version) {\n      case 1:\n        // Class array\n        var i = glyph - classDef.startGlyph;\n        if (i >= 0 && i < classDef.classValueArray.length) {\n          return classDef.classValueArray[i];\n        }\n        break;\n      case 2:\n        for (var _iterator48 = _createForOfIteratorHelperLoose(classDef.classRangeRecord), _step48; !(_step48 = _iterator48()).done;) {\n          var range = _step48.value;\n          if (range.start <= glyph && glyph <= range.end) {\n            return range.class;\n          }\n        }\n        break;\n    }\n    return 0;\n  };\n  _proto25.classSequenceMatches = function classSequenceMatches(sequenceIndex, sequence, classDef) {\n    var _this6 = this;\n    return this.match(sequenceIndex, sequence, function (classID, glyph) {\n      return classID === _this6.getClassID(glyph.id, classDef);\n    });\n  };\n  _proto25.applyContext = function applyContext(table) {\n    switch (table.version) {\n      case 1:\n        var index = this.coverageIndex(table.coverage);\n        if (index === -1) {\n          return false;\n        }\n        var set = table.ruleSets[index];\n        for (var _iterator49 = _createForOfIteratorHelperLoose(set), _step49; !(_step49 = _iterator49()).done;) {\n          var rule = _step49.value;\n          if (this.sequenceMatches(1, rule.input)) {\n            return this.applyLookupList(rule.lookupRecords);\n          }\n        }\n        break;\n      case 2:\n        if (this.coverageIndex(table.coverage) === -1) {\n          return false;\n        }\n        index = this.getClassID(this.glyphIterator.cur.id, table.classDef);\n        if (index === -1) {\n          return false;\n        }\n        set = table.classSet[index];\n        for (var _iterator50 = _createForOfIteratorHelperLoose(set), _step50; !(_step50 = _iterator50()).done;) {\n          var _rule = _step50.value;\n          if (this.classSequenceMatches(1, _rule.classes, table.classDef)) {\n            return this.applyLookupList(_rule.lookupRecords);\n          }\n        }\n        break;\n      case 3:\n        if (this.coverageSequenceMatches(0, table.coverages)) {\n          return this.applyLookupList(table.lookupRecords);\n        }\n        break;\n    }\n    return false;\n  };\n  _proto25.applyChainingContext = function applyChainingContext(table) {\n    switch (table.version) {\n      case 1:\n        var index = this.coverageIndex(table.coverage);\n        if (index === -1) {\n          return false;\n        }\n        var set = table.chainRuleSets[index];\n        for (var _iterator51 = _createForOfIteratorHelperLoose(set), _step51; !(_step51 = _iterator51()).done;) {\n          var rule = _step51.value;\n          if (this.sequenceMatches(-rule.backtrack.length, rule.backtrack) && this.sequenceMatches(1, rule.input) && this.sequenceMatches(1 + rule.input.length, rule.lookahead)) {\n            return this.applyLookupList(rule.lookupRecords);\n          }\n        }\n        break;\n      case 2:\n        if (this.coverageIndex(table.coverage) === -1) {\n          return false;\n        }\n        index = this.getClassID(this.glyphIterator.cur.id, table.inputClassDef);\n        var rules = table.chainClassSet[index];\n        if (!rules) {\n          return false;\n        }\n        for (var _iterator52 = _createForOfIteratorHelperLoose(rules), _step52; !(_step52 = _iterator52()).done;) {\n          var _rule2 = _step52.value;\n          if (this.classSequenceMatches(-_rule2.backtrack.length, _rule2.backtrack, table.backtrackClassDef) && this.classSequenceMatches(1, _rule2.input, table.inputClassDef) && this.classSequenceMatches(1 + _rule2.input.length, _rule2.lookahead, table.lookaheadClassDef)) {\n            return this.applyLookupList(_rule2.lookupRecords);\n          }\n        }\n        break;\n      case 3:\n        if (this.coverageSequenceMatches(-table.backtrackGlyphCount, table.backtrackCoverage) && this.coverageSequenceMatches(0, table.inputCoverage) && this.coverageSequenceMatches(table.inputGlyphCount, table.lookaheadCoverage)) {\n          return this.applyLookupList(table.lookupRecords);\n        }\n        break;\n    }\n    return false;\n  };\n  return OTProcessor;\n}();\nvar GlyphInfo = /*#__PURE__*/function () {\n  function GlyphInfo(font, id, codePoints, features) {\n    if (codePoints === void 0) {\n      codePoints = [];\n    }\n    this._font = font;\n    this.codePoints = codePoints;\n    this.id = id;\n    this.features = {};\n    if (Array.isArray(features)) {\n      for (var i = 0; i < features.length; i++) {\n        var feature = features[i];\n        this.features[feature] = true;\n      }\n    } else if (typeof features === 'object') {\n      Object.assign(this.features, features);\n    }\n    this.ligatureID = null;\n    this.ligatureComponent = null;\n    this.isLigated = false;\n    this.cursiveAttachment = null;\n    this.markAttachment = null;\n    this.shaperInfo = null;\n    this.substituted = false;\n    this.isMultiplied = false;\n  }\n  var _proto26 = GlyphInfo.prototype;\n  _proto26.copy = function copy() {\n    return new GlyphInfo(this._font, this.id, this.codePoints, this.features);\n  };\n  _createClass(GlyphInfo, [{\n    key: \"id\",\n    get: function get() {\n      return this._id;\n    },\n    set: function set(id) {\n      this._id = id;\n      this.substituted = true;\n      var GDEF = this._font.GDEF;\n      if (GDEF && GDEF.glyphClassDef) {\n        // TODO: clean this up\n        var classID = OTProcessor.prototype.getClassID(id, GDEF.glyphClassDef);\n        this.isBase = classID === 1;\n        this.isLigature = classID === 2;\n        this.isMark = classID === 3;\n        this.markAttachmentType = GDEF.markAttachClassDef ? OTProcessor.prototype.getClassID(id, GDEF.markAttachClassDef) : 0;\n      } else {\n        this.isMark = this.codePoints.length > 0 && this.codePoints.every(unicode.isMark);\n        this.isBase = !this.isMark;\n        this.isLigature = this.codePoints.length > 1;\n        this.markAttachmentType = 0;\n      }\n    }\n  }]);\n  return GlyphInfo;\n}();\n/**\r\n * This is a shaper for the Hangul script, used by the Korean language.\r\n * It does the following:\r\n *   - decompose if unsupported by the font:\r\n *     <LV>   -> <L,V>\r\n *     <LVT>  -> <L,V,T>\r\n *     <LV,T> -> <L,V,T>\r\n *\r\n *   - compose if supported by the font:\r\n *     <L,V>   -> <LV>\r\n *     <L,V,T> -> <LVT>\r\n *     <LV,T>  -> <LVT>\r\n *\r\n *   - reorder tone marks (S is any valid syllable):\r\n *     <S, M> -> <M, S>\r\n *\r\n *   - apply ljmo, vjmo, and tjmo OpenType features to decomposed Jamo sequences.\r\n *\r\n * This logic is based on the following documents:\r\n *   - http://www.microsoft.com/typography/OpenTypeDev/hangul/intro.htm\r\n *   - http://ktug.org/~nomos/harfbuzz-hangul/hangulshaper.pdf\r\n */\nvar HangulShaper = /*#__PURE__*/function (_DefaultShaper2) {\n  _inheritsLoose(HangulShaper, _DefaultShaper2);\n  function HangulShaper() {\n    return _DefaultShaper2.apply(this, arguments) || this;\n  }\n  HangulShaper.planFeatures = function planFeatures(plan) {\n    plan.add(['ljmo', 'vjmo', 'tjmo'], false);\n  };\n  HangulShaper.assignFeatures = function assignFeatures(plan, glyphs) {\n    var state = 0;\n    var i = 0;\n    while (i < glyphs.length) {\n      var action = void 0;\n      var glyph = glyphs[i];\n      var code = glyph.codePoints[0];\n      var type = getType(code);\n      var _STATE_TABLE$1$state$ = STATE_TABLE$1[state][type];\n      action = _STATE_TABLE$1$state$[0];\n      state = _STATE_TABLE$1$state$[1];\n      switch (action) {\n        case DECOMPOSE:\n          // Decompose the composed syllable if it is not supported by the font.\n          if (!plan.font.hasGlyphForCodePoint(code)) {\n            i = decompose(glyphs, i, plan.font);\n          }\n          break;\n        case COMPOSE:\n          // Found a decomposed syllable. Try to compose if supported by the font.\n          i = compose(glyphs, i, plan.font);\n          break;\n        case TONE_MARK:\n          // Got a valid syllable, followed by a tone mark. Move the tone mark to the beginning of the syllable.\n          reorderToneMark(glyphs, i, plan.font);\n          break;\n        case INVALID:\n          // Tone mark has no valid syllable to attach to, so insert a dotted circle\n          i = insertDottedCircle(glyphs, i, plan.font);\n          break;\n      }\n      i++;\n    }\n  };\n  return HangulShaper;\n}(DefaultShaper);\n_defineProperty(HangulShaper, \"zeroMarkWidths\", 'NONE');\nvar HANGUL_BASE = 0xac00;\nvar HANGUL_END = 0xd7a4;\nvar HANGUL_COUNT = HANGUL_END - HANGUL_BASE + 1;\nvar L_BASE = 0x1100; // lead\n\nvar V_BASE = 0x1161; // vowel\n\nvar T_BASE = 0x11a7; // trail\n\nvar L_COUNT = 19;\nvar V_COUNT = 21;\nvar T_COUNT = 28;\nvar L_END = L_BASE + L_COUNT - 1;\nvar V_END = V_BASE + V_COUNT - 1;\nvar T_END = T_BASE + T_COUNT - 1;\nvar DOTTED_CIRCLE = 0x25cc;\nvar isL = function isL(code) {\n  return 0x1100 <= code && code <= 0x115f || 0xa960 <= code && code <= 0xa97c;\n};\nvar isV = function isV(code) {\n  return 0x1160 <= code && code <= 0x11a7 || 0xd7b0 <= code && code <= 0xd7c6;\n};\nvar isT = function isT(code) {\n  return 0x11a8 <= code && code <= 0x11ff || 0xd7cb <= code && code <= 0xd7fb;\n};\nvar isTone = function isTone(code) {\n  return 0x302e <= code && code <= 0x302f;\n};\nvar isLVT = function isLVT(code) {\n  return HANGUL_BASE <= code && code <= HANGUL_END;\n};\nvar isLV = function isLV(code) {\n  return code - HANGUL_BASE < HANGUL_COUNT && (code - HANGUL_BASE) % T_COUNT === 0;\n};\nvar isCombiningL = function isCombiningL(code) {\n  return L_BASE <= code && code <= L_END;\n};\nvar isCombiningV = function isCombiningV(code) {\n  return V_BASE <= code && code <= V_END;\n};\nvar isCombiningT = function isCombiningT(code) {\n  return 1 <= code && code <= T_END;\n}; // Character categories\n\nvar X = 0; // Other character\n\nvar L = 1; // Leading consonant\n\nvar V = 2; // Medial vowel\n\nvar T = 3; // Trailing consonant\n\nvar LV = 4; // Composed <LV> syllable\n\nvar LVT = 5; // Composed <LVT> syllable\n\nvar M = 6; // Tone mark\n// This function classifies a character using the above categories.\n\nfunction getType(code) {\n  if (isL(code)) {\n    return L;\n  }\n  if (isV(code)) {\n    return V;\n  }\n  if (isT(code)) {\n    return T;\n  }\n  if (isLV(code)) {\n    return LV;\n  }\n  if (isLVT(code)) {\n    return LVT;\n  }\n  if (isTone(code)) {\n    return M;\n  }\n  return X;\n} // State machine actions\n\nvar NO_ACTION = 0;\nvar DECOMPOSE = 1;\nvar COMPOSE = 2;\nvar TONE_MARK = 4;\nvar INVALID = 5; // Build a state machine that accepts valid syllables, and applies actions along the way.\n// The logic this is implementing is documented at the top of the file.\n\nvar STATE_TABLE$1 = [\n//       X                 L                 V                T                  LV                LVT               M\n// State 0: start state\n[[NO_ACTION, 0], [NO_ACTION, 1], [NO_ACTION, 0], [NO_ACTION, 0], [DECOMPOSE, 2], [DECOMPOSE, 3], [INVALID, 0]],\n// State 1: <L>\n[[NO_ACTION, 0], [NO_ACTION, 1], [COMPOSE, 2], [NO_ACTION, 0], [DECOMPOSE, 2], [DECOMPOSE, 3], [INVALID, 0]],\n// State 2: <L,V> or <LV>\n[[NO_ACTION, 0], [NO_ACTION, 1], [NO_ACTION, 0], [COMPOSE, 3], [DECOMPOSE, 2], [DECOMPOSE, 3], [TONE_MARK, 0]],\n// State 3: <L,V,T> or <LVT>\n[[NO_ACTION, 0], [NO_ACTION, 1], [NO_ACTION, 0], [NO_ACTION, 0], [DECOMPOSE, 2], [DECOMPOSE, 3], [TONE_MARK, 0]]];\nfunction getGlyph(font, code, features) {\n  return new GlyphInfo(font, font.glyphForCodePoint(code).id, [code], features);\n}\nfunction decompose(glyphs, i, font) {\n  var glyph = glyphs[i];\n  var code = glyph.codePoints[0];\n  var s = code - HANGUL_BASE;\n  var t = T_BASE + s % T_COUNT;\n  s = s / T_COUNT | 0;\n  var l = L_BASE + s / V_COUNT | 0;\n  var v = V_BASE + s % V_COUNT; // Don't decompose if all of the components are not available\n\n  if (!font.hasGlyphForCodePoint(l) || !font.hasGlyphForCodePoint(v) || t !== T_BASE && !font.hasGlyphForCodePoint(t)) {\n    return i;\n  } // Replace the current glyph with decomposed L, V, and T glyphs,\n  // and apply the proper OpenType features to each component.\n\n  var ljmo = getGlyph(font, l, glyph.features);\n  ljmo.features.ljmo = true;\n  var vjmo = getGlyph(font, v, glyph.features);\n  vjmo.features.vjmo = true;\n  var insert = [ljmo, vjmo];\n  if (t > T_BASE) {\n    var tjmo = getGlyph(font, t, glyph.features);\n    tjmo.features.tjmo = true;\n    insert.push(tjmo);\n  }\n  glyphs.splice.apply(glyphs, [i, 1].concat(insert));\n  return i + insert.length - 1;\n}\nfunction compose(glyphs, i, font) {\n  var glyph = glyphs[i];\n  var code = glyphs[i].codePoints[0];\n  var type = getType(code);\n  var prev = glyphs[i - 1].codePoints[0];\n  var prevType = getType(prev); // Figure out what type of syllable we're dealing with\n\n  var lv, ljmo, vjmo, tjmo;\n  if (prevType === LV && type === T) {\n    // <LV,T>\n    lv = prev;\n    tjmo = glyph;\n  } else {\n    if (type === V) {\n      // <L,V>\n      ljmo = glyphs[i - 1];\n      vjmo = glyph;\n    } else {\n      // <L,V,T>\n      ljmo = glyphs[i - 2];\n      vjmo = glyphs[i - 1];\n      tjmo = glyph;\n    }\n    var l = ljmo.codePoints[0];\n    var v = vjmo.codePoints[0]; // Make sure L and V are combining characters\n\n    if (isCombiningL(l) && isCombiningV(v)) {\n      lv = HANGUL_BASE + ((l - L_BASE) * V_COUNT + (v - V_BASE)) * T_COUNT;\n    }\n  }\n  var t = tjmo && tjmo.codePoints[0] || T_BASE;\n  if (lv != null && (t === T_BASE || isCombiningT(t))) {\n    var s = lv + (t - T_BASE); // Replace with a composed glyph if supported by the font,\n    // otherwise apply the proper OpenType features to each component.\n\n    if (font.hasGlyphForCodePoint(s)) {\n      var del = prevType === V ? 3 : 2;\n      glyphs.splice(i - del + 1, del, getGlyph(font, s, glyph.features));\n      return i - del + 1;\n    }\n  } // Didn't compose (either a non-combining component or unsupported by font).\n\n  if (ljmo) {\n    ljmo.features.ljmo = true;\n  }\n  if (vjmo) {\n    vjmo.features.vjmo = true;\n  }\n  if (tjmo) {\n    tjmo.features.tjmo = true;\n  }\n  if (prevType === LV) {\n    // Sequence was originally <L,V>, which got combined earlier.\n    // Either the T was non-combining, or the LVT glyph wasn't supported.\n    // Decompose the glyph again and apply OT features.\n    decompose(glyphs, i - 1, font);\n    return i + 1;\n  }\n  return i;\n}\nfunction getLength(code) {\n  switch (getType(code)) {\n    case LV:\n    case LVT:\n      return 1;\n    case V:\n      return 2;\n    case T:\n      return 3;\n  }\n}\nfunction reorderToneMark(glyphs, i, font) {\n  var glyph = glyphs[i];\n  var code = glyphs[i].codePoints[0]; // Move tone mark to the beginning of the previous syllable, unless it is zero width\n\n  if (font.glyphForCodePoint(code).advanceWidth === 0) {\n    return;\n  }\n  var prev = glyphs[i - 1].codePoints[0];\n  var len = getLength(prev);\n  glyphs.splice(i, 1);\n  return glyphs.splice(i - len, 0, glyph);\n}\nfunction insertDottedCircle(glyphs, i, font) {\n  var glyph = glyphs[i];\n  var code = glyphs[i].codePoints[0];\n  if (font.hasGlyphForCodePoint(DOTTED_CIRCLE)) {\n    var dottedCircle = getGlyph(font, DOTTED_CIRCLE, glyph.features); // If the tone mark is zero width, insert the dotted circle before, otherwise after\n\n    var idx = font.glyphForCodePoint(code).advanceWidth === 0 ? i : i + 1;\n    glyphs.splice(idx, 0, dottedCircle);\n    i++;\n  }\n  return i;\n}\nvar stateTable = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 2, 3, 4, 5, 6, 7, 8, 9, 0, 10, 11, 11, 12, 13, 14, 15, 16, 17], [0, 0, 0, 18, 19, 20, 21, 22, 23, 0, 24, 0, 0, 25, 26, 0, 0, 27, 0], [0, 0, 0, 28, 29, 30, 31, 32, 33, 0, 34, 0, 0, 35, 36, 0, 0, 37, 0], [0, 0, 0, 38, 5, 7, 7, 8, 9, 0, 10, 0, 0, 0, 13, 0, 0, 16, 0], [0, 39, 0, 0, 0, 40, 41, 0, 9, 0, 10, 0, 0, 0, 42, 0, 39, 0, 0], [0, 0, 0, 0, 43, 44, 44, 8, 9, 0, 0, 0, 0, 12, 43, 0, 0, 0, 0], [0, 0, 0, 0, 43, 44, 44, 8, 9, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0], [0, 0, 0, 45, 46, 47, 48, 49, 9, 0, 10, 0, 0, 0, 42, 0, 0, 0, 0], [0, 0, 0, 0, 0, 50, 0, 0, 51, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 53, 54, 55, 56, 57, 58, 0, 59, 0, 0, 60, 61, 0, 0, 62, 0], [0, 0, 0, 4, 5, 7, 7, 8, 9, 0, 10, 0, 0, 0, 13, 0, 0, 16, 0], [0, 63, 64, 0, 0, 40, 41, 0, 9, 0, 10, 0, 0, 0, 42, 0, 63, 0, 0], [0, 2, 3, 4, 5, 6, 7, 8, 9, 0, 10, 11, 11, 12, 13, 0, 2, 16, 0], [0, 0, 0, 18, 65, 20, 21, 22, 23, 0, 24, 0, 0, 25, 26, 0, 0, 27, 0], [0, 0, 0, 0, 66, 67, 67, 8, 9, 0, 10, 0, 0, 0, 68, 0, 0, 0, 0], [0, 0, 0, 69, 0, 70, 70, 0, 71, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 73, 19, 74, 74, 22, 23, 0, 24, 0, 0, 0, 26, 0, 0, 27, 0], [0, 75, 0, 0, 0, 76, 77, 0, 23, 0, 24, 0, 0, 0, 78, 0, 75, 0, 0], [0, 0, 0, 0, 79, 80, 80, 22, 23, 0, 0, 0, 0, 25, 79, 0, 0, 0, 0], [0, 0, 0, 18, 19, 20, 74, 22, 23, 0, 24, 0, 0, 25, 26, 0, 0, 27, 0], [0, 0, 0, 81, 82, 83, 84, 85, 23, 0, 24, 0, 0, 0, 78, 0, 0, 0, 0], [0, 0, 0, 0, 0, 86, 0, 0, 87, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 18, 19, 74, 74, 22, 23, 0, 24, 0, 0, 0, 26, 0, 0, 27, 0], [0, 89, 90, 0, 0, 76, 77, 0, 23, 0, 24, 0, 0, 0, 78, 0, 89, 0, 0], [0, 0, 0, 0, 91, 92, 92, 22, 23, 0, 24, 0, 0, 0, 93, 0, 0, 0, 0], [0, 0, 0, 94, 29, 95, 31, 32, 33, 0, 34, 0, 0, 0, 36, 0, 0, 37, 0], [0, 96, 0, 0, 0, 97, 98, 0, 33, 0, 34, 0, 0, 0, 99, 0, 96, 0, 0], [0, 0, 0, 0, 100, 101, 101, 32, 33, 0, 0, 0, 0, 35, 100, 0, 0, 0, 0], [0, 0, 0, 0, 100, 101, 101, 32, 33, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0], [0, 0, 0, 102, 103, 104, 105, 106, 33, 0, 34, 0, 0, 0, 99, 0, 0, 0, 0], [0, 0, 0, 0, 0, 107, 0, 0, 108, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 28, 29, 95, 31, 32, 33, 0, 34, 0, 0, 0, 36, 0, 0, 37, 0], [0, 110, 111, 0, 0, 97, 98, 0, 33, 0, 34, 0, 0, 0, 99, 0, 110, 0, 0], [0, 0, 0, 0, 112, 113, 113, 32, 33, 0, 34, 0, 0, 0, 114, 0, 0, 0, 0], [0, 0, 0, 0, 5, 7, 7, 8, 9, 0, 10, 0, 0, 0, 13, 0, 0, 16, 0], [0, 0, 0, 115, 116, 117, 118, 8, 9, 0, 10, 0, 0, 119, 120, 0, 0, 16, 0], [0, 0, 0, 0, 0, 121, 121, 0, 9, 0, 10, 0, 0, 0, 42, 0, 0, 0, 0], [0, 39, 0, 122, 0, 123, 123, 8, 9, 0, 10, 0, 0, 0, 42, 0, 39, 0, 0], [0, 124, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 124, 0, 0], [0, 39, 0, 0, 0, 121, 125, 0, 9, 0, 10, 0, 0, 0, 42, 0, 39, 0, 0], [0, 0, 0, 0, 0, 126, 126, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 46, 47, 48, 49, 9, 0, 10, 0, 0, 0, 42, 0, 0, 0, 0], [0, 0, 0, 0, 0, 47, 47, 49, 9, 0, 10, 0, 0, 0, 42, 0, 0, 0, 0], [0, 0, 0, 0, 0, 127, 127, 49, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 128, 127, 127, 49, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 129, 130, 131, 132, 133, 9, 0, 10, 0, 0, 0, 42, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 134, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 135, 54, 56, 56, 57, 58, 0, 59, 0, 0, 0, 61, 0, 0, 62, 0], [0, 136, 0, 0, 0, 137, 138, 0, 58, 0, 59, 0, 0, 0, 139, 0, 136, 0, 0], [0, 0, 0, 0, 140, 141, 141, 57, 58, 0, 0, 0, 0, 60, 140, 0, 0, 0, 0], [0, 0, 0, 0, 140, 141, 141, 57, 58, 0, 0, 0, 0, 0, 140, 0, 0, 0, 0], [0, 0, 0, 142, 143, 144, 145, 146, 58, 0, 59, 0, 0, 0, 139, 0, 0, 0, 0], [0, 0, 0, 0, 0, 147, 0, 0, 148, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 149, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 53, 54, 56, 56, 57, 58, 0, 59, 0, 0, 0, 61, 0, 0, 62, 0], [0, 150, 151, 0, 0, 137, 138, 0, 58, 0, 59, 0, 0, 0, 139, 0, 150, 0, 0], [0, 0, 0, 0, 152, 153, 153, 57, 58, 0, 59, 0, 0, 0, 154, 0, 0, 0, 0], [0, 0, 0, 155, 116, 156, 157, 8, 9, 0, 10, 0, 0, 158, 120, 0, 0, 16, 0], [0, 0, 0, 0, 0, 121, 121, 0, 9, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0], [0, 75, 3, 4, 5, 159, 160, 8, 161, 0, 162, 0, 11, 12, 163, 0, 75, 16, 0], [0, 0, 0, 0, 0, 40, 164, 0, 9, 0, 10, 0, 0, 0, 42, 0, 0, 0, 0], [0, 0, 0, 0, 165, 44, 44, 8, 9, 0, 0, 0, 0, 0, 165, 0, 0, 0, 0], [0, 124, 64, 0, 0, 40, 164, 0, 9, 0, 10, 0, 0, 0, 42, 0, 124, 0, 0], [0, 0, 0, 0, 0, 70, 70, 0, 71, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 166, 0, 0, 167, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 168, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 19, 74, 74, 22, 23, 0, 24, 0, 0, 0, 26, 0, 0, 27, 0], [0, 0, 0, 0, 79, 80, 80, 22, 23, 0, 0, 0, 0, 0, 79, 0, 0, 0, 0], [0, 0, 0, 169, 170, 171, 172, 22, 23, 0, 24, 0, 0, 173, 174, 0, 0, 27, 0], [0, 0, 0, 0, 0, 175, 175, 0, 23, 0, 24, 0, 0, 0, 78, 0, 0, 0, 0], [0, 75, 0, 176, 0, 177, 177, 22, 23, 0, 24, 0, 0, 0, 78, 0, 75, 0, 0], [0, 178, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 178, 0, 0], [0, 75, 0, 0, 0, 175, 179, 0, 23, 0, 24, 0, 0, 0, 78, 0, 75, 0, 0], [0, 0, 0, 0, 0, 180, 180, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 82, 83, 84, 85, 23, 0, 24, 0, 0, 0, 78, 0, 0, 0, 0], [0, 0, 0, 0, 0, 83, 83, 85, 23, 0, 24, 0, 0, 0, 78, 0, 0, 0, 0], [0, 0, 0, 0, 0, 181, 181, 85, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 182, 181, 181, 85, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 183, 184, 185, 186, 187, 23, 0, 24, 0, 0, 0, 78, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 86, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 188, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 189, 170, 190, 191, 22, 23, 0, 24, 0, 0, 192, 174, 0, 0, 27, 0], [0, 0, 0, 0, 0, 175, 175, 0, 23, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 76, 193, 0, 23, 0, 24, 0, 0, 0, 78, 0, 0, 0, 0], [0, 0, 0, 0, 194, 80, 80, 22, 23, 0, 0, 0, 0, 0, 194, 0, 0, 0, 0], [0, 178, 90, 0, 0, 76, 193, 0, 23, 0, 24, 0, 0, 0, 78, 0, 178, 0, 0], [0, 0, 0, 0, 29, 95, 31, 32, 33, 0, 34, 0, 0, 0, 36, 0, 0, 37, 0], [0, 0, 0, 0, 100, 101, 101, 32, 33, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0], [0, 0, 0, 195, 196, 197, 198, 32, 33, 0, 34, 0, 0, 199, 200, 0, 0, 37, 0], [0, 0, 0, 0, 0, 201, 201, 0, 33, 0, 34, 0, 0, 0, 99, 0, 0, 0, 0], [0, 96, 0, 202, 0, 203, 203, 32, 33, 0, 34, 0, 0, 0, 99, 0, 96, 0, 0], [0, 204, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 204, 0, 0], [0, 96, 0, 0, 0, 201, 205, 0, 33, 0, 34, 0, 0, 0, 99, 0, 96, 0, 0], [0, 0, 0, 0, 0, 206, 206, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 103, 104, 105, 106, 33, 0, 34, 0, 0, 0, 99, 0, 0, 0, 0], [0, 0, 0, 0, 0, 104, 104, 106, 33, 0, 34, 0, 0, 0, 99, 0, 0, 0, 0], [0, 0, 0, 0, 0, 207, 207, 106, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 208, 207, 207, 106, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 209, 210, 211, 212, 213, 33, 0, 34, 0, 0, 0, 99, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 107, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 214, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 215, 196, 216, 217, 32, 33, 0, 34, 0, 0, 218, 200, 0, 0, 37, 0], [0, 0, 0, 0, 0, 201, 201, 0, 33, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 97, 219, 0, 33, 0, 34, 0, 0, 0, 99, 0, 0, 0, 0], [0, 0, 0, 0, 220, 101, 101, 32, 33, 0, 0, 0, 0, 0, 220, 0, 0, 0, 0], [0, 204, 111, 0, 0, 97, 219, 0, 33, 0, 34, 0, 0, 0, 99, 0, 204, 0, 0], [0, 0, 0, 221, 116, 222, 222, 8, 9, 0, 10, 0, 0, 0, 120, 0, 0, 16, 0], [0, 223, 0, 0, 0, 40, 224, 0, 9, 0, 10, 0, 0, 0, 42, 0, 223, 0, 0], [0, 0, 0, 0, 225, 44, 44, 8, 9, 0, 0, 0, 0, 119, 225, 0, 0, 0, 0], [0, 0, 0, 115, 116, 117, 222, 8, 9, 0, 10, 0, 0, 119, 120, 0, 0, 16, 0], [0, 0, 0, 115, 116, 222, 222, 8, 9, 0, 10, 0, 0, 0, 120, 0, 0, 16, 0], [0, 226, 64, 0, 0, 40, 224, 0, 9, 0, 10, 0, 0, 0, 42, 0, 226, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 39, 0, 0, 0, 121, 121, 0, 9, 0, 10, 0, 0, 0, 42, 0, 39, 0, 0], [0, 0, 0, 0, 0, 44, 44, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 227, 0, 228, 229, 0, 9, 0, 10, 0, 0, 230, 0, 0, 0, 0, 0], [0, 39, 0, 122, 0, 121, 121, 0, 9, 0, 10, 0, 0, 0, 42, 0, 39, 0, 0], [0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 231, 231, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 130, 131, 132, 133, 9, 0, 10, 0, 0, 0, 42, 0, 0, 0, 0], [0, 0, 0, 0, 0, 131, 131, 133, 9, 0, 10, 0, 0, 0, 42, 0, 0, 0, 0], [0, 0, 0, 0, 0, 233, 233, 133, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 234, 233, 233, 133, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 235, 236, 237, 238, 239, 9, 0, 10, 0, 0, 0, 42, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 54, 56, 56, 57, 58, 0, 59, 0, 0, 0, 61, 0, 0, 62, 0], [0, 0, 0, 240, 241, 242, 243, 57, 58, 0, 59, 0, 0, 244, 245, 0, 0, 62, 0], [0, 0, 0, 0, 0, 246, 246, 0, 58, 0, 59, 0, 0, 0, 139, 0, 0, 0, 0], [0, 136, 0, 247, 0, 248, 248, 57, 58, 0, 59, 0, 0, 0, 139, 0, 136, 0, 0], [0, 249, 151, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 249, 0, 0], [0, 136, 0, 0, 0, 246, 250, 0, 58, 0, 59, 0, 0, 0, 139, 0, 136, 0, 0], [0, 0, 0, 0, 0, 251, 251, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 143, 144, 145, 146, 58, 0, 59, 0, 0, 0, 139, 0, 0, 0, 0], [0, 0, 0, 0, 0, 144, 144, 146, 58, 0, 59, 0, 0, 0, 139, 0, 0, 0, 0], [0, 0, 0, 0, 0, 252, 252, 146, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 253, 252, 252, 146, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 254, 255, 256, 257, 258, 58, 0, 59, 0, 0, 0, 139, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 147, 0, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 259, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 260, 241, 261, 262, 57, 58, 0, 59, 0, 0, 263, 245, 0, 0, 62, 0], [0, 0, 0, 0, 0, 246, 246, 0, 58, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 137, 264, 0, 58, 0, 59, 0, 0, 0, 139, 0, 0, 0, 0], [0, 0, 0, 0, 265, 141, 141, 57, 58, 0, 0, 0, 0, 0, 265, 0, 0, 0, 0], [0, 249, 151, 0, 0, 137, 264, 0, 58, 0, 59, 0, 0, 0, 139, 0, 249, 0, 0], [0, 0, 0, 221, 116, 222, 222, 8, 9, 0, 10, 0, 0, 0, 120, 0, 0, 16, 0], [0, 0, 0, 0, 225, 44, 44, 8, 9, 0, 0, 0, 0, 158, 225, 0, 0, 0, 0], [0, 0, 0, 155, 116, 156, 222, 8, 9, 0, 10, 0, 0, 158, 120, 0, 0, 16, 0], [0, 0, 0, 155, 116, 222, 222, 8, 9, 0, 10, 0, 0, 0, 120, 0, 0, 16, 0], [0, 0, 0, 0, 43, 266, 266, 8, 161, 0, 24, 0, 0, 12, 267, 0, 0, 0, 0], [0, 75, 0, 176, 43, 268, 268, 269, 161, 0, 24, 0, 0, 0, 267, 0, 75, 0, 0], [0, 0, 0, 0, 0, 270, 0, 0, 271, 0, 162, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 272, 0, 0, 0, 0, 0, 0, 0, 0], [0, 273, 274, 0, 0, 40, 41, 0, 9, 0, 10, 0, 0, 0, 42, 0, 273, 0, 0], [0, 0, 0, 40, 0, 123, 123, 8, 9, 0, 10, 0, 0, 0, 42, 0, 0, 0, 0], [0, 0, 0, 0, 0, 121, 275, 0, 9, 0, 10, 0, 0, 0, 42, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 166, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 276, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 277, 170, 278, 278, 22, 23, 0, 24, 0, 0, 0, 174, 0, 0, 27, 0], [0, 279, 0, 0, 0, 76, 280, 0, 23, 0, 24, 0, 0, 0, 78, 0, 279, 0, 0], [0, 0, 0, 0, 281, 80, 80, 22, 23, 0, 0, 0, 0, 173, 281, 0, 0, 0, 0], [0, 0, 0, 169, 170, 171, 278, 22, 23, 0, 24, 0, 0, 173, 174, 0, 0, 27, 0], [0, 0, 0, 169, 170, 278, 278, 22, 23, 0, 24, 0, 0, 0, 174, 0, 0, 27, 0], [0, 282, 90, 0, 0, 76, 280, 0, 23, 0, 24, 0, 0, 0, 78, 0, 282, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 75, 0, 0, 0, 175, 175, 0, 23, 0, 24, 0, 0, 0, 78, 0, 75, 0, 0], [0, 0, 0, 0, 0, 80, 80, 22, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 283, 0, 284, 285, 0, 23, 0, 24, 0, 0, 286, 0, 0, 0, 0, 0], [0, 75, 0, 176, 0, 175, 175, 0, 23, 0, 24, 0, 0, 0, 78, 0, 75, 0, 0], [0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 287, 287, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 288, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 184, 185, 186, 187, 23, 0, 24, 0, 0, 0, 78, 0, 0, 0, 0], [0, 0, 0, 0, 0, 185, 185, 187, 23, 0, 24, 0, 0, 0, 78, 0, 0, 0, 0], [0, 0, 0, 0, 0, 289, 289, 187, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 290, 289, 289, 187, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 291, 292, 293, 294, 295, 23, 0, 24, 0, 0, 0, 78, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 277, 170, 278, 278, 22, 23, 0, 24, 0, 0, 0, 174, 0, 0, 27, 0], [0, 0, 0, 0, 281, 80, 80, 22, 23, 0, 0, 0, 0, 192, 281, 0, 0, 0, 0], [0, 0, 0, 189, 170, 190, 278, 22, 23, 0, 24, 0, 0, 192, 174, 0, 0, 27, 0], [0, 0, 0, 189, 170, 278, 278, 22, 23, 0, 24, 0, 0, 0, 174, 0, 0, 27, 0], [0, 0, 0, 76, 0, 177, 177, 22, 23, 0, 24, 0, 0, 0, 78, 0, 0, 0, 0], [0, 0, 0, 0, 0, 175, 296, 0, 23, 0, 24, 0, 0, 0, 78, 0, 0, 0, 0], [0, 0, 0, 297, 196, 298, 298, 32, 33, 0, 34, 0, 0, 0, 200, 0, 0, 37, 0], [0, 299, 0, 0, 0, 97, 300, 0, 33, 0, 34, 0, 0, 0, 99, 0, 299, 0, 0], [0, 0, 0, 0, 301, 101, 101, 32, 33, 0, 0, 0, 0, 199, 301, 0, 0, 0, 0], [0, 0, 0, 195, 196, 197, 298, 32, 33, 0, 34, 0, 0, 199, 200, 0, 0, 37, 0], [0, 0, 0, 195, 196, 298, 298, 32, 33, 0, 34, 0, 0, 0, 200, 0, 0, 37, 0], [0, 302, 111, 0, 0, 97, 300, 0, 33, 0, 34, 0, 0, 0, 99, 0, 302, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 96, 0, 0, 0, 201, 201, 0, 33, 0, 34, 0, 0, 0, 99, 0, 96, 0, 0], [0, 0, 0, 0, 0, 101, 101, 32, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 303, 0, 304, 305, 0, 33, 0, 34, 0, 0, 306, 0, 0, 0, 0, 0], [0, 96, 0, 202, 0, 201, 201, 0, 33, 0, 34, 0, 0, 0, 99, 0, 96, 0, 0], [0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 307, 307, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 308, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 210, 211, 212, 213, 33, 0, 34, 0, 0, 0, 99, 0, 0, 0, 0], [0, 0, 0, 0, 0, 211, 211, 213, 33, 0, 34, 0, 0, 0, 99, 0, 0, 0, 0], [0, 0, 0, 0, 0, 309, 309, 213, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 310, 309, 309, 213, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 311, 312, 313, 314, 315, 33, 0, 34, 0, 0, 0, 99, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 297, 196, 298, 298, 32, 33, 0, 34, 0, 0, 0, 200, 0, 0, 37, 0], [0, 0, 0, 0, 301, 101, 101, 32, 33, 0, 0, 0, 0, 218, 301, 0, 0, 0, 0], [0, 0, 0, 215, 196, 216, 298, 32, 33, 0, 34, 0, 0, 218, 200, 0, 0, 37, 0], [0, 0, 0, 215, 196, 298, 298, 32, 33, 0, 34, 0, 0, 0, 200, 0, 0, 37, 0], [0, 0, 0, 97, 0, 203, 203, 32, 33, 0, 34, 0, 0, 0, 99, 0, 0, 0, 0], [0, 0, 0, 0, 0, 201, 316, 0, 33, 0, 34, 0, 0, 0, 99, 0, 0, 0, 0], [0, 0, 0, 0, 116, 222, 222, 8, 9, 0, 10, 0, 0, 0, 120, 0, 0, 16, 0], [0, 0, 0, 0, 225, 44, 44, 8, 9, 0, 0, 0, 0, 0, 225, 0, 0, 0, 0], [0, 0, 0, 317, 318, 319, 320, 8, 9, 0, 10, 0, 0, 321, 322, 0, 0, 16, 0], [0, 223, 0, 323, 0, 123, 123, 8, 9, 0, 10, 0, 0, 0, 42, 0, 223, 0, 0], [0, 223, 0, 0, 0, 121, 324, 0, 9, 0, 10, 0, 0, 0, 42, 0, 223, 0, 0], [0, 0, 0, 325, 318, 326, 327, 8, 9, 0, 10, 0, 0, 328, 322, 0, 0, 16, 0], [0, 0, 0, 64, 0, 121, 121, 0, 9, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 230, 0, 0, 0, 0, 0], [0, 0, 0, 227, 0, 228, 121, 0, 9, 0, 10, 0, 0, 230, 0, 0, 0, 0, 0], [0, 0, 0, 227, 0, 121, 121, 0, 9, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 0], [0, 0, 0, 0, 0, 329, 329, 133, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 330, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 236, 237, 238, 239, 9, 0, 10, 0, 0, 0, 42, 0, 0, 0, 0], [0, 0, 0, 0, 0, 237, 237, 239, 9, 0, 10, 0, 0, 0, 42, 0, 0, 0, 0], [0, 0, 0, 0, 0, 331, 331, 239, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 332, 331, 331, 239, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 333, 40, 121, 334, 0, 9, 0, 10, 0, 0, 0, 42, 0, 0, 0, 0], [0, 0, 0, 335, 241, 336, 336, 57, 58, 0, 59, 0, 0, 0, 245, 0, 0, 62, 0], [0, 337, 0, 0, 0, 137, 338, 0, 58, 0, 59, 0, 0, 0, 139, 0, 337, 0, 0], [0, 0, 0, 0, 339, 141, 141, 57, 58, 0, 0, 0, 0, 244, 339, 0, 0, 0, 0], [0, 0, 0, 240, 241, 242, 336, 57, 58, 0, 59, 0, 0, 244, 245, 0, 0, 62, 0], [0, 0, 0, 240, 241, 336, 336, 57, 58, 0, 59, 0, 0, 0, 245, 0, 0, 62, 0], [0, 340, 151, 0, 0, 137, 338, 0, 58, 0, 59, 0, 0, 0, 139, 0, 340, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 136, 0, 0, 0, 246, 246, 0, 58, 0, 59, 0, 0, 0, 139, 0, 136, 0, 0], [0, 0, 0, 0, 0, 141, 141, 57, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 341, 0, 342, 343, 0, 58, 0, 59, 0, 0, 344, 0, 0, 0, 0, 0], [0, 136, 0, 247, 0, 246, 246, 0, 58, 0, 59, 0, 0, 0, 139, 0, 136, 0, 0], [0, 0, 0, 0, 0, 0, 0, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 345, 345, 146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 346, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 255, 256, 257, 258, 58, 0, 59, 0, 0, 0, 139, 0, 0, 0, 0], [0, 0, 0, 0, 0, 256, 256, 258, 58, 0, 59, 0, 0, 0, 139, 0, 0, 0, 0], [0, 0, 0, 0, 0, 347, 347, 258, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 348, 347, 347, 258, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 349, 350, 351, 352, 353, 58, 0, 59, 0, 0, 0, 139, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 335, 241, 336, 336, 57, 58, 0, 59, 0, 0, 0, 245, 0, 0, 62, 0], [0, 0, 0, 0, 339, 141, 141, 57, 58, 0, 0, 0, 0, 263, 339, 0, 0, 0, 0], [0, 0, 0, 260, 241, 261, 336, 57, 58, 0, 59, 0, 0, 263, 245, 0, 0, 62, 0], [0, 0, 0, 260, 241, 336, 336, 57, 58, 0, 59, 0, 0, 0, 245, 0, 0, 62, 0], [0, 0, 0, 137, 0, 248, 248, 57, 58, 0, 59, 0, 0, 0, 139, 0, 0, 0, 0], [0, 0, 0, 0, 0, 246, 354, 0, 58, 0, 59, 0, 0, 0, 139, 0, 0, 0, 0], [0, 0, 0, 0, 0, 126, 126, 8, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 355, 90, 0, 0, 121, 125, 0, 9, 0, 10, 0, 0, 0, 42, 0, 355, 0, 0], [0, 0, 0, 0, 0, 356, 356, 269, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 357, 358, 359, 360, 361, 161, 0, 162, 0, 0, 0, 362, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 162, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 270, 0, 0, 0, 0, 162, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 363, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 364, 116, 365, 366, 8, 161, 0, 162, 0, 0, 367, 120, 0, 0, 16, 0], [0, 0, 0, 0, 0, 368, 368, 0, 161, 0, 162, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 40, 0, 121, 121, 0, 9, 0, 10, 0, 0, 0, 42, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 170, 278, 278, 22, 23, 0, 24, 0, 0, 0, 174, 0, 0, 27, 0], [0, 0, 0, 0, 281, 80, 80, 22, 23, 0, 0, 0, 0, 0, 281, 0, 0, 0, 0], [0, 0, 0, 369, 370, 371, 372, 22, 23, 0, 24, 0, 0, 373, 374, 0, 0, 27, 0], [0, 279, 0, 375, 0, 177, 177, 22, 23, 0, 24, 0, 0, 0, 78, 0, 279, 0, 0], [0, 279, 0, 0, 0, 175, 376, 0, 23, 0, 24, 0, 0, 0, 78, 0, 279, 0, 0], [0, 0, 0, 377, 370, 378, 379, 22, 23, 0, 24, 0, 0, 380, 374, 0, 0, 27, 0], [0, 0, 0, 90, 0, 175, 175, 0, 23, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 286, 0, 0, 0, 0, 0], [0, 0, 0, 283, 0, 284, 175, 0, 23, 0, 24, 0, 0, 286, 0, 0, 0, 0, 0], [0, 0, 0, 283, 0, 175, 175, 0, 23, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0], [0, 0, 0, 0, 0, 381, 381, 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 382, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 292, 293, 294, 295, 23, 0, 24, 0, 0, 0, 78, 0, 0, 0, 0], [0, 0, 0, 0, 0, 293, 293, 295, 23, 0, 24, 0, 0, 0, 78, 0, 0, 0, 0], [0, 0, 0, 0, 0, 383, 383, 295, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 384, 383, 383, 295, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 385, 76, 175, 386, 0, 23, 0, 24, 0, 0, 0, 78, 0, 0, 0, 0], [0, 0, 0, 76, 0, 175, 175, 0, 23, 0, 24, 0, 0, 0, 78, 0, 0, 0, 0], [0, 0, 0, 0, 196, 298, 298, 32, 33, 0, 34, 0, 0, 0, 200, 0, 0, 37, 0], [0, 0, 0, 0, 301, 101, 101, 32, 33, 0, 0, 0, 0, 0, 301, 0, 0, 0, 0], [0, 0, 0, 387, 388, 389, 390, 32, 33, 0, 34, 0, 0, 391, 392, 0, 0, 37, 0], [0, 299, 0, 393, 0, 203, 203, 32, 33, 0, 34, 0, 0, 0, 99, 0, 299, 0, 0], [0, 299, 0, 0, 0, 201, 394, 0, 33, 0, 34, 0, 0, 0, 99, 0, 299, 0, 0], [0, 0, 0, 395, 388, 396, 397, 32, 33, 0, 34, 0, 0, 398, 392, 0, 0, 37, 0], [0, 0, 0, 111, 0, 201, 201, 0, 33, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 306, 0, 0, 0, 0, 0], [0, 0, 0, 303, 0, 304, 201, 0, 33, 0, 34, 0, 0, 306, 0, 0, 0, 0, 0], [0, 0, 0, 303, 0, 201, 201, 0, 33, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 103, 0, 0], [0, 0, 0, 0, 0, 399, 399, 213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 312, 313, 314, 315, 33, 0, 34, 0, 0, 0, 99, 0, 0, 0, 0], [0, 0, 0, 0, 0, 313, 313, 315, 33, 0, 34, 0, 0, 0, 99, 0, 0, 0, 0], [0, 0, 0, 0, 0, 401, 401, 315, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 402, 401, 401, 315, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 403, 97, 201, 404, 0, 33, 0, 34, 0, 0, 0, 99, 0, 0, 0, 0], [0, 0, 0, 97, 0, 201, 201, 0, 33, 0, 34, 0, 0, 0, 99, 0, 0, 0, 0], [0, 0, 0, 405, 318, 406, 406, 8, 9, 0, 10, 0, 0, 0, 322, 0, 0, 16, 0], [0, 407, 0, 0, 0, 40, 408, 0, 9, 0, 10, 0, 0, 0, 42, 0, 407, 0, 0], [0, 0, 0, 0, 409, 44, 44, 8, 9, 0, 0, 0, 0, 321, 409, 0, 0, 0, 0], [0, 0, 0, 317, 318, 319, 406, 8, 9, 0, 10, 0, 0, 321, 322, 0, 0, 16, 0], [0, 0, 0, 317, 318, 406, 406, 8, 9, 0, 10, 0, 0, 0, 322, 0, 0, 16, 0], [0, 410, 64, 0, 0, 40, 408, 0, 9, 0, 10, 0, 0, 0, 42, 0, 410, 0, 0], [0, 223, 0, 0, 0, 121, 121, 0, 9, 0, 10, 0, 0, 0, 42, 0, 223, 0, 0], [0, 223, 0, 323, 0, 121, 121, 0, 9, 0, 10, 0, 0, 0, 42, 0, 223, 0, 0], [0, 0, 0, 405, 318, 406, 406, 8, 9, 0, 10, 0, 0, 0, 322, 0, 0, 16, 0], [0, 0, 0, 0, 409, 44, 44, 8, 9, 0, 0, 0, 0, 328, 409, 0, 0, 0, 0], [0, 0, 0, 325, 318, 326, 406, 8, 9, 0, 10, 0, 0, 328, 322, 0, 0, 16, 0], [0, 0, 0, 325, 318, 406, 406, 8, 9, 0, 10, 0, 0, 0, 322, 0, 0, 16, 0], [0, 0, 0, 0, 0, 0, 0, 133, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 130, 0, 0], [0, 0, 0, 0, 0, 411, 411, 239, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 412, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 40, 121, 334, 0, 9, 0, 10, 0, 0, 0, 42, 0, 0, 0, 0], [0, 0, 0, 0, 413, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 241, 336, 336, 57, 58, 0, 59, 0, 0, 0, 245, 0, 0, 62, 0], [0, 0, 0, 0, 339, 141, 141, 57, 58, 0, 0, 0, 0, 0, 339, 0, 0, 0, 0], [0, 0, 0, 414, 415, 416, 417, 57, 58, 0, 59, 0, 0, 418, 419, 0, 0, 62, 0], [0, 337, 0, 420, 0, 248, 248, 57, 58, 0, 59, 0, 0, 0, 139, 0, 337, 0, 0], [0, 337, 0, 0, 0, 246, 421, 0, 58, 0, 59, 0, 0, 0, 139, 0, 337, 0, 0], [0, 0, 0, 422, 415, 423, 424, 57, 58, 0, 59, 0, 0, 425, 419, 0, 0, 62, 0], [0, 0, 0, 151, 0, 246, 246, 0, 58, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 0, 344, 0, 0, 0, 0, 0], [0, 0, 0, 341, 0, 342, 246, 0, 58, 0, 59, 0, 0, 344, 0, 0, 0, 0, 0], [0, 0, 0, 341, 0, 246, 246, 0, 58, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 143, 0, 0], [0, 0, 0, 0, 0, 426, 426, 258, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 427, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 350, 351, 352, 353, 58, 0, 59, 0, 0, 0, 139, 0, 0, 0, 0], [0, 0, 0, 0, 0, 351, 351, 353, 58, 0, 59, 0, 0, 0, 139, 0, 0, 0, 0], [0, 0, 0, 0, 0, 428, 428, 353, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 429, 428, 428, 353, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 430, 137, 246, 431, 0, 58, 0, 59, 0, 0, 0, 139, 0, 0, 0, 0], [0, 0, 0, 137, 0, 246, 246, 0, 58, 0, 59, 0, 0, 0, 139, 0, 0, 0, 0], [0, 0, 0, 432, 116, 433, 434, 8, 161, 0, 162, 0, 0, 435, 120, 0, 0, 16, 0], [0, 0, 0, 0, 0, 180, 180, 269, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 358, 359, 360, 361, 161, 0, 162, 0, 0, 0, 362, 0, 0, 0, 0], [0, 0, 0, 0, 0, 359, 359, 361, 161, 0, 162, 0, 0, 0, 362, 0, 0, 0, 0], [0, 0, 0, 0, 0, 436, 436, 361, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 437, 436, 436, 361, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 438, 439, 440, 441, 442, 161, 0, 162, 0, 0, 0, 362, 0, 0, 0, 0], [0, 443, 274, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 443, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 444, 116, 445, 445, 8, 161, 0, 162, 0, 0, 0, 120, 0, 0, 16, 0], [0, 0, 0, 0, 225, 44, 44, 8, 161, 0, 0, 0, 0, 367, 225, 0, 0, 0, 0], [0, 0, 0, 364, 116, 365, 445, 8, 161, 0, 162, 0, 0, 367, 120, 0, 0, 16, 0], [0, 0, 0, 364, 116, 445, 445, 8, 161, 0, 162, 0, 0, 0, 120, 0, 0, 16, 0], [0, 0, 0, 0, 0, 0, 0, 0, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 446, 370, 447, 447, 22, 23, 0, 24, 0, 0, 0, 374, 0, 0, 27, 0], [0, 448, 0, 0, 0, 76, 449, 0, 23, 0, 24, 0, 0, 0, 78, 0, 448, 0, 0], [0, 0, 0, 0, 450, 80, 80, 22, 23, 0, 0, 0, 0, 373, 450, 0, 0, 0, 0], [0, 0, 0, 369, 370, 371, 447, 22, 23, 0, 24, 0, 0, 373, 374, 0, 0, 27, 0], [0, 0, 0, 369, 370, 447, 447, 22, 23, 0, 24, 0, 0, 0, 374, 0, 0, 27, 0], [0, 451, 90, 0, 0, 76, 449, 0, 23, 0, 24, 0, 0, 0, 78, 0, 451, 0, 0], [0, 279, 0, 0, 0, 175, 175, 0, 23, 0, 24, 0, 0, 0, 78, 0, 279, 0, 0], [0, 279, 0, 375, 0, 175, 175, 0, 23, 0, 24, 0, 0, 0, 78, 0, 279, 0, 0], [0, 0, 0, 446, 370, 447, 447, 22, 23, 0, 24, 0, 0, 0, 374, 0, 0, 27, 0], [0, 0, 0, 0, 450, 80, 80, 22, 23, 0, 0, 0, 0, 380, 450, 0, 0, 0, 0], [0, 0, 0, 377, 370, 378, 447, 22, 23, 0, 24, 0, 0, 380, 374, 0, 0, 27, 0], [0, 0, 0, 377, 370, 447, 447, 22, 23, 0, 24, 0, 0, 0, 374, 0, 0, 27, 0], [0, 0, 0, 0, 0, 0, 0, 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 184, 0, 0], [0, 0, 0, 0, 0, 452, 452, 295, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 453, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 76, 175, 386, 0, 23, 0, 24, 0, 0, 0, 78, 0, 0, 0, 0], [0, 0, 0, 0, 454, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 455, 388, 456, 456, 32, 33, 0, 34, 0, 0, 0, 392, 0, 0, 37, 0], [0, 457, 0, 0, 0, 97, 458, 0, 33, 0, 34, 0, 0, 0, 99, 0, 457, 0, 0], [0, 0, 0, 0, 459, 101, 101, 32, 33, 0, 0, 0, 0, 391, 459, 0, 0, 0, 0], [0, 0, 0, 387, 388, 389, 456, 32, 33, 0, 34, 0, 0, 391, 392, 0, 0, 37, 0], [0, 0, 0, 387, 388, 456, 456, 32, 33, 0, 34, 0, 0, 0, 392, 0, 0, 37, 0], [0, 460, 111, 0, 0, 97, 458, 0, 33, 0, 34, 0, 0, 0, 99, 0, 460, 0, 0], [0, 299, 0, 0, 0, 201, 201, 0, 33, 0, 34, 0, 0, 0, 99, 0, 299, 0, 0], [0, 299, 0, 393, 0, 201, 201, 0, 33, 0, 34, 0, 0, 0, 99, 0, 299, 0, 0], [0, 0, 0, 455, 388, 456, 456, 32, 33, 0, 34, 0, 0, 0, 392, 0, 0, 37, 0], [0, 0, 0, 0, 459, 101, 101, 32, 33, 0, 0, 0, 0, 398, 459, 0, 0, 0, 0], [0, 0, 0, 395, 388, 396, 456, 32, 33, 0, 34, 0, 0, 398, 392, 0, 0, 37, 0], [0, 0, 0, 395, 388, 456, 456, 32, 33, 0, 34, 0, 0, 0, 392, 0, 0, 37, 0], [0, 0, 0, 0, 0, 0, 0, 213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 0, 0], [0, 0, 0, 0, 0, 461, 461, 315, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 462, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 97, 201, 404, 0, 33, 0, 34, 0, 0, 0, 99, 0, 0, 0, 0], [0, 0, 0, 0, 463, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 318, 406, 406, 8, 9, 0, 10, 0, 0, 0, 322, 0, 0, 16, 0], [0, 0, 0, 0, 409, 44, 44, 8, 9, 0, 0, 0, 0, 0, 409, 0, 0, 0, 0], [0, 0, 0, 464, 465, 466, 467, 8, 9, 0, 10, 0, 0, 468, 469, 0, 0, 16, 0], [0, 407, 0, 470, 0, 123, 123, 8, 9, 0, 10, 0, 0, 0, 42, 0, 407, 0, 0], [0, 407, 0, 0, 0, 121, 471, 0, 9, 0, 10, 0, 0, 0, 42, 0, 407, 0, 0], [0, 0, 0, 472, 465, 473, 474, 8, 9, 0, 10, 0, 0, 475, 469, 0, 0, 16, 0], [0, 0, 0, 0, 0, 0, 0, 239, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 236, 0, 0], [0, 0, 0, 0, 0, 0, 476, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 477, 415, 478, 478, 57, 58, 0, 59, 0, 0, 0, 419, 0, 0, 62, 0], [0, 479, 0, 0, 0, 137, 480, 0, 58, 0, 59, 0, 0, 0, 139, 0, 479, 0, 0], [0, 0, 0, 0, 481, 141, 141, 57, 58, 0, 0, 0, 0, 418, 481, 0, 0, 0, 0], [0, 0, 0, 414, 415, 416, 478, 57, 58, 0, 59, 0, 0, 418, 419, 0, 0, 62, 0], [0, 0, 0, 414, 415, 478, 478, 57, 58, 0, 59, 0, 0, 0, 419, 0, 0, 62, 0], [0, 482, 151, 0, 0, 137, 480, 0, 58, 0, 59, 0, 0, 0, 139, 0, 482, 0, 0], [0, 337, 0, 0, 0, 246, 246, 0, 58, 0, 59, 0, 0, 0, 139, 0, 337, 0, 0], [0, 337, 0, 420, 0, 246, 246, 0, 58, 0, 59, 0, 0, 0, 139, 0, 337, 0, 0], [0, 0, 0, 477, 415, 478, 478, 57, 58, 0, 59, 0, 0, 0, 419, 0, 0, 62, 0], [0, 0, 0, 0, 481, 141, 141, 57, 58, 0, 0, 0, 0, 425, 481, 0, 0, 0, 0], [0, 0, 0, 422, 415, 423, 478, 57, 58, 0, 59, 0, 0, 425, 419, 0, 0, 62, 0], [0, 0, 0, 422, 415, 478, 478, 57, 58, 0, 59, 0, 0, 0, 419, 0, 0, 62, 0], [0, 0, 0, 0, 0, 0, 0, 258, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0], [0, 0, 0, 0, 0, 483, 483, 353, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 484, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 137, 246, 431, 0, 58, 0, 59, 0, 0, 0, 139, 0, 0, 0, 0], [0, 0, 0, 0, 485, 0, 0, 0, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 444, 116, 445, 445, 8, 161, 0, 162, 0, 0, 0, 120, 0, 0, 16, 0], [0, 0, 0, 0, 225, 44, 44, 8, 161, 0, 0, 0, 0, 435, 225, 0, 0, 0, 0], [0, 0, 0, 432, 116, 433, 445, 8, 161, 0, 162, 0, 0, 435, 120, 0, 0, 16, 0], [0, 0, 0, 432, 116, 445, 445, 8, 161, 0, 162, 0, 0, 0, 120, 0, 0, 16, 0], [0, 0, 0, 0, 0, 486, 486, 361, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 487, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 439, 440, 441, 442, 161, 0, 162, 0, 0, 0, 362, 0, 0, 0, 0], [0, 0, 0, 0, 0, 440, 440, 442, 161, 0, 162, 0, 0, 0, 362, 0, 0, 0, 0], [0, 0, 0, 0, 0, 488, 488, 442, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 489, 488, 488, 442, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 490, 491, 492, 493, 494, 161, 0, 162, 0, 0, 0, 362, 0, 0, 0, 0], [0, 0, 0, 495, 0, 496, 497, 0, 161, 0, 162, 0, 0, 498, 0, 0, 0, 0, 0], [0, 0, 0, 0, 116, 445, 445, 8, 161, 0, 162, 0, 0, 0, 120, 0, 0, 16, 0], [0, 0, 0, 0, 225, 44, 44, 8, 161, 0, 0, 0, 0, 0, 225, 0, 0, 0, 0], [0, 0, 0, 0, 370, 447, 447, 22, 23, 0, 24, 0, 0, 0, 374, 0, 0, 27, 0], [0, 0, 0, 0, 450, 80, 80, 22, 23, 0, 0, 0, 0, 0, 450, 0, 0, 0, 0], [0, 0, 0, 499, 500, 501, 502, 22, 23, 0, 24, 0, 0, 503, 504, 0, 0, 27, 0], [0, 448, 0, 505, 0, 177, 177, 22, 23, 0, 24, 0, 0, 0, 78, 0, 448, 0, 0], [0, 448, 0, 0, 0, 175, 506, 0, 23, 0, 24, 0, 0, 0, 78, 0, 448, 0, 0], [0, 0, 0, 507, 500, 508, 509, 22, 23, 0, 24, 0, 0, 510, 504, 0, 0, 27, 0], [0, 0, 0, 0, 0, 0, 0, 295, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 292, 0, 0], [0, 0, 0, 0, 0, 0, 511, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 388, 456, 456, 32, 33, 0, 34, 0, 0, 0, 392, 0, 0, 37, 0], [0, 0, 0, 0, 459, 101, 101, 32, 33, 0, 0, 0, 0, 0, 459, 0, 0, 0, 0], [0, 0, 0, 512, 513, 514, 515, 32, 33, 0, 34, 0, 0, 516, 517, 0, 0, 37, 0], [0, 457, 0, 518, 0, 203, 203, 32, 33, 0, 34, 0, 0, 0, 99, 0, 457, 0, 0], [0, 457, 0, 0, 0, 201, 519, 0, 33, 0, 34, 0, 0, 0, 99, 0, 457, 0, 0], [0, 0, 0, 520, 513, 521, 522, 32, 33, 0, 34, 0, 0, 523, 517, 0, 0, 37, 0], [0, 0, 0, 0, 0, 0, 0, 315, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 312, 0, 0], [0, 0, 0, 0, 0, 0, 524, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 525, 465, 526, 526, 8, 9, 0, 10, 0, 0, 0, 469, 0, 0, 16, 0], [0, 527, 0, 0, 0, 40, 528, 0, 9, 0, 10, 0, 0, 0, 42, 0, 527, 0, 0], [0, 0, 0, 0, 529, 44, 44, 8, 9, 0, 0, 0, 0, 468, 529, 0, 0, 0, 0], [0, 0, 0, 464, 465, 466, 526, 8, 9, 0, 10, 0, 0, 468, 469, 0, 0, 16, 0], [0, 0, 0, 464, 465, 526, 526, 8, 9, 0, 10, 0, 0, 0, 469, 0, 0, 16, 0], [0, 530, 64, 0, 0, 40, 528, 0, 9, 0, 10, 0, 0, 0, 42, 0, 530, 0, 0], [0, 407, 0, 0, 0, 121, 121, 0, 9, 0, 10, 0, 0, 0, 42, 0, 407, 0, 0], [0, 407, 0, 470, 0, 121, 121, 0, 9, 0, 10, 0, 0, 0, 42, 0, 407, 0, 0], [0, 0, 0, 525, 465, 526, 526, 8, 9, 0, 10, 0, 0, 0, 469, 0, 0, 16, 0], [0, 0, 0, 0, 529, 44, 44, 8, 9, 0, 0, 0, 0, 475, 529, 0, 0, 0, 0], [0, 0, 0, 472, 465, 473, 526, 8, 9, 0, 10, 0, 0, 475, 469, 0, 0, 16, 0], [0, 0, 0, 472, 465, 526, 526, 8, 9, 0, 10, 0, 0, 0, 469, 0, 0, 16, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0], [0, 0, 0, 0, 415, 478, 478, 57, 58, 0, 59, 0, 0, 0, 419, 0, 0, 62, 0], [0, 0, 0, 0, 481, 141, 141, 57, 58, 0, 0, 0, 0, 0, 481, 0, 0, 0, 0], [0, 0, 0, 531, 532, 533, 534, 57, 58, 0, 59, 0, 0, 535, 536, 0, 0, 62, 0], [0, 479, 0, 537, 0, 248, 248, 57, 58, 0, 59, 0, 0, 0, 139, 0, 479, 0, 0], [0, 479, 0, 0, 0, 246, 538, 0, 58, 0, 59, 0, 0, 0, 139, 0, 479, 0, 0], [0, 0, 0, 539, 532, 540, 541, 57, 58, 0, 59, 0, 0, 542, 536, 0, 0, 62, 0], [0, 0, 0, 0, 0, 0, 0, 353, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 350, 0, 0], [0, 0, 0, 0, 0, 0, 543, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 361, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 358, 0, 0], [0, 0, 0, 0, 0, 544, 544, 442, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 545, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 491, 492, 493, 494, 161, 0, 162, 0, 0, 0, 362, 0, 0, 0, 0], [0, 0, 0, 0, 0, 492, 492, 494, 161, 0, 162, 0, 0, 0, 362, 0, 0, 0, 0], [0, 0, 0, 0, 0, 546, 546, 494, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 547, 546, 546, 494, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 548, 549, 368, 550, 0, 161, 0, 162, 0, 0, 0, 362, 0, 0, 0, 0], [0, 0, 0, 274, 0, 368, 368, 0, 161, 0, 162, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 161, 0, 0, 0, 0, 498, 0, 0, 0, 0, 0], [0, 0, 0, 495, 0, 496, 368, 0, 161, 0, 162, 0, 0, 498, 0, 0, 0, 0, 0], [0, 0, 0, 495, 0, 368, 368, 0, 161, 0, 162, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 551, 500, 552, 552, 22, 23, 0, 24, 0, 0, 0, 504, 0, 0, 27, 0], [0, 553, 0, 0, 0, 76, 554, 0, 23, 0, 24, 0, 0, 0, 78, 0, 553, 0, 0], [0, 0, 0, 0, 555, 80, 80, 22, 23, 0, 0, 0, 0, 503, 555, 0, 0, 0, 0], [0, 0, 0, 499, 500, 501, 552, 22, 23, 0, 24, 0, 0, 503, 504, 0, 0, 27, 0], [0, 0, 0, 499, 500, 552, 552, 22, 23, 0, 24, 0, 0, 0, 504, 0, 0, 27, 0], [0, 556, 90, 0, 0, 76, 554, 0, 23, 0, 24, 0, 0, 0, 78, 0, 556, 0, 0], [0, 448, 0, 0, 0, 175, 175, 0, 23, 0, 24, 0, 0, 0, 78, 0, 448, 0, 0], [0, 448, 0, 505, 0, 175, 175, 0, 23, 0, 24, 0, 0, 0, 78, 0, 448, 0, 0], [0, 0, 0, 551, 500, 552, 552, 22, 23, 0, 24, 0, 0, 0, 504, 0, 0, 27, 0], [0, 0, 0, 0, 555, 80, 80, 22, 23, 0, 0, 0, 0, 510, 555, 0, 0, 0, 0], [0, 0, 0, 507, 500, 508, 552, 22, 23, 0, 24, 0, 0, 510, 504, 0, 0, 27, 0], [0, 0, 0, 507, 500, 552, 552, 22, 23, 0, 24, 0, 0, 0, 504, 0, 0, 27, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 0, 0], [0, 0, 0, 557, 513, 558, 558, 32, 33, 0, 34, 0, 0, 0, 517, 0, 0, 37, 0], [0, 559, 0, 0, 0, 97, 560, 0, 33, 0, 34, 0, 0, 0, 99, 0, 559, 0, 0], [0, 0, 0, 0, 561, 101, 101, 32, 33, 0, 0, 0, 0, 516, 561, 0, 0, 0, 0], [0, 0, 0, 512, 513, 514, 558, 32, 33, 0, 34, 0, 0, 516, 517, 0, 0, 37, 0], [0, 0, 0, 512, 513, 558, 558, 32, 33, 0, 34, 0, 0, 0, 517, 0, 0, 37, 0], [0, 562, 111, 0, 0, 97, 560, 0, 33, 0, 34, 0, 0, 0, 99, 0, 562, 0, 0], [0, 457, 0, 0, 0, 201, 201, 0, 33, 0, 34, 0, 0, 0, 99, 0, 457, 0, 0], [0, 457, 0, 518, 0, 201, 201, 0, 33, 0, 34, 0, 0, 0, 99, 0, 457, 0, 0], [0, 0, 0, 557, 513, 558, 558, 32, 33, 0, 34, 0, 0, 0, 517, 0, 0, 37, 0], [0, 0, 0, 0, 561, 101, 101, 32, 33, 0, 0, 0, 0, 523, 561, 0, 0, 0, 0], [0, 0, 0, 520, 513, 521, 558, 32, 33, 0, 34, 0, 0, 523, 517, 0, 0, 37, 0], [0, 0, 0, 520, 513, 558, 558, 32, 33, 0, 34, 0, 0, 0, 517, 0, 0, 37, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0], [0, 0, 0, 0, 465, 526, 526, 8, 9, 0, 10, 0, 0, 0, 469, 0, 0, 16, 0], [0, 0, 0, 0, 529, 44, 44, 8, 9, 0, 0, 0, 0, 0, 529, 0, 0, 0, 0], [0, 0, 0, 563, 66, 564, 565, 8, 9, 0, 10, 0, 0, 566, 68, 0, 0, 16, 0], [0, 527, 0, 567, 0, 123, 123, 8, 9, 0, 10, 0, 0, 0, 42, 0, 527, 0, 0], [0, 527, 0, 0, 0, 121, 568, 0, 9, 0, 10, 0, 0, 0, 42, 0, 527, 0, 0], [0, 0, 0, 569, 66, 570, 571, 8, 9, 0, 10, 0, 0, 572, 68, 0, 0, 16, 0], [0, 0, 0, 573, 532, 574, 574, 57, 58, 0, 59, 0, 0, 0, 536, 0, 0, 62, 0], [0, 575, 0, 0, 0, 137, 576, 0, 58, 0, 59, 0, 0, 0, 139, 0, 575, 0, 0], [0, 0, 0, 0, 577, 141, 141, 57, 58, 0, 0, 0, 0, 535, 577, 0, 0, 0, 0], [0, 0, 0, 531, 532, 533, 574, 57, 58, 0, 59, 0, 0, 535, 536, 0, 0, 62, 0], [0, 0, 0, 531, 532, 574, 574, 57, 58, 0, 59, 0, 0, 0, 536, 0, 0, 62, 0], [0, 578, 151, 0, 0, 137, 576, 0, 58, 0, 59, 0, 0, 0, 139, 0, 578, 0, 0], [0, 479, 0, 0, 0, 246, 246, 0, 58, 0, 59, 0, 0, 0, 139, 0, 479, 0, 0], [0, 479, 0, 537, 0, 246, 246, 0, 58, 0, 59, 0, 0, 0, 139, 0, 479, 0, 0], [0, 0, 0, 573, 532, 574, 574, 57, 58, 0, 59, 0, 0, 0, 536, 0, 0, 62, 0], [0, 0, 0, 0, 577, 141, 141, 57, 58, 0, 0, 0, 0, 542, 577, 0, 0, 0, 0], [0, 0, 0, 539, 532, 540, 574, 57, 58, 0, 59, 0, 0, 542, 536, 0, 0, 62, 0], [0, 0, 0, 539, 532, 574, 574, 57, 58, 0, 59, 0, 0, 0, 536, 0, 0, 62, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 137, 0, 0], [0, 0, 0, 0, 0, 0, 0, 442, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 439, 0, 0], [0, 0, 0, 0, 0, 579, 579, 494, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 580, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 549, 368, 550, 0, 161, 0, 162, 0, 0, 0, 362, 0, 0, 0, 0], [0, 0, 0, 0, 0, 368, 368, 0, 161, 0, 162, 0, 0, 0, 362, 0, 0, 0, 0], [0, 0, 0, 0, 581, 0, 0, 0, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 500, 552, 552, 22, 23, 0, 24, 0, 0, 0, 504, 0, 0, 27, 0], [0, 0, 0, 0, 555, 80, 80, 22, 23, 0, 0, 0, 0, 0, 555, 0, 0, 0, 0], [0, 0, 0, 582, 91, 583, 584, 22, 23, 0, 24, 0, 0, 585, 93, 0, 0, 27, 0], [0, 553, 0, 586, 0, 177, 177, 22, 23, 0, 24, 0, 0, 0, 78, 0, 553, 0, 0], [0, 553, 0, 0, 0, 175, 587, 0, 23, 0, 24, 0, 0, 0, 78, 0, 553, 0, 0], [0, 0, 0, 588, 91, 589, 590, 22, 23, 0, 24, 0, 0, 591, 93, 0, 0, 27, 0], [0, 0, 0, 0, 513, 558, 558, 32, 33, 0, 34, 0, 0, 0, 517, 0, 0, 37, 0], [0, 0, 0, 0, 561, 101, 101, 32, 33, 0, 0, 0, 0, 0, 561, 0, 0, 0, 0], [0, 0, 0, 592, 112, 593, 594, 32, 33, 0, 34, 0, 0, 595, 114, 0, 0, 37, 0], [0, 559, 0, 596, 0, 203, 203, 32, 33, 0, 34, 0, 0, 0, 99, 0, 559, 0, 0], [0, 559, 0, 0, 0, 201, 597, 0, 33, 0, 34, 0, 0, 0, 99, 0, 559, 0, 0], [0, 0, 0, 598, 112, 599, 600, 32, 33, 0, 34, 0, 0, 601, 114, 0, 0, 37, 0], [0, 0, 0, 602, 66, 67, 67, 8, 9, 0, 10, 0, 0, 0, 68, 0, 0, 16, 0], [0, 0, 0, 0, 165, 44, 44, 8, 9, 0, 0, 0, 0, 566, 165, 0, 0, 0, 0], [0, 0, 0, 563, 66, 564, 67, 8, 9, 0, 10, 0, 0, 566, 68, 0, 0, 16, 0], [0, 0, 0, 563, 66, 67, 67, 8, 9, 0, 10, 0, 0, 0, 68, 0, 0, 16, 0], [0, 527, 0, 0, 0, 121, 121, 0, 9, 0, 10, 0, 0, 0, 42, 0, 527, 0, 0], [0, 527, 0, 567, 0, 121, 121, 0, 9, 0, 10, 0, 0, 0, 42, 0, 527, 0, 0], [0, 0, 0, 602, 66, 67, 67, 8, 9, 0, 10, 0, 0, 0, 68, 0, 0, 16, 0], [0, 0, 0, 0, 165, 44, 44, 8, 9, 0, 0, 0, 0, 572, 165, 0, 0, 0, 0], [0, 0, 0, 569, 66, 570, 67, 8, 9, 0, 10, 0, 0, 572, 68, 0, 0, 16, 0], [0, 0, 0, 569, 66, 67, 67, 8, 9, 0, 10, 0, 0, 0, 68, 0, 0, 16, 0], [0, 0, 0, 0, 532, 574, 574, 57, 58, 0, 59, 0, 0, 0, 536, 0, 0, 62, 0], [0, 0, 0, 0, 577, 141, 141, 57, 58, 0, 0, 0, 0, 0, 577, 0, 0, 0, 0], [0, 0, 0, 603, 152, 604, 605, 57, 58, 0, 59, 0, 0, 606, 154, 0, 0, 62, 0], [0, 575, 0, 607, 0, 248, 248, 57, 58, 0, 59, 0, 0, 0, 139, 0, 575, 0, 0], [0, 575, 0, 0, 0, 246, 608, 0, 58, 0, 59, 0, 0, 0, 139, 0, 575, 0, 0], [0, 0, 0, 609, 152, 610, 611, 57, 58, 0, 59, 0, 0, 612, 154, 0, 0, 62, 0], [0, 0, 0, 0, 0, 0, 0, 494, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 491, 0, 0], [0, 0, 0, 0, 0, 0, 613, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 614, 91, 92, 92, 22, 23, 0, 24, 0, 0, 0, 93, 0, 0, 27, 0], [0, 0, 0, 0, 194, 80, 80, 22, 23, 0, 0, 0, 0, 585, 194, 0, 0, 0, 0], [0, 0, 0, 582, 91, 583, 92, 22, 23, 0, 24, 0, 0, 585, 93, 0, 0, 27, 0], [0, 0, 0, 582, 91, 92, 92, 22, 23, 0, 24, 0, 0, 0, 93, 0, 0, 27, 0], [0, 553, 0, 0, 0, 175, 175, 0, 23, 0, 24, 0, 0, 0, 78, 0, 553, 0, 0], [0, 553, 0, 586, 0, 175, 175, 0, 23, 0, 24, 0, 0, 0, 78, 0, 553, 0, 0], [0, 0, 0, 614, 91, 92, 92, 22, 23, 0, 24, 0, 0, 0, 93, 0, 0, 27, 0], [0, 0, 0, 0, 194, 80, 80, 22, 23, 0, 0, 0, 0, 591, 194, 0, 0, 0, 0], [0, 0, 0, 588, 91, 589, 92, 22, 23, 0, 24, 0, 0, 591, 93, 0, 0, 27, 0], [0, 0, 0, 588, 91, 92, 92, 22, 23, 0, 24, 0, 0, 0, 93, 0, 0, 27, 0], [0, 0, 0, 615, 112, 113, 113, 32, 33, 0, 34, 0, 0, 0, 114, 0, 0, 37, 0], [0, 0, 0, 0, 220, 101, 101, 32, 33, 0, 0, 0, 0, 595, 220, 0, 0, 0, 0], [0, 0, 0, 592, 112, 593, 113, 32, 33, 0, 34, 0, 0, 595, 114, 0, 0, 37, 0], [0, 0, 0, 592, 112, 113, 113, 32, 33, 0, 34, 0, 0, 0, 114, 0, 0, 37, 0], [0, 559, 0, 0, 0, 201, 201, 0, 33, 0, 34, 0, 0, 0, 99, 0, 559, 0, 0], [0, 559, 0, 596, 0, 201, 201, 0, 33, 0, 34, 0, 0, 0, 99, 0, 559, 0, 0], [0, 0, 0, 615, 112, 113, 113, 32, 33, 0, 34, 0, 0, 0, 114, 0, 0, 37, 0], [0, 0, 0, 0, 220, 101, 101, 32, 33, 0, 0, 0, 0, 601, 220, 0, 0, 0, 0], [0, 0, 0, 598, 112, 599, 113, 32, 33, 0, 34, 0, 0, 601, 114, 0, 0, 37, 0], [0, 0, 0, 598, 112, 113, 113, 32, 33, 0, 34, 0, 0, 0, 114, 0, 0, 37, 0], [0, 0, 0, 0, 66, 67, 67, 8, 9, 0, 10, 0, 0, 0, 68, 0, 0, 16, 0], [0, 0, 0, 616, 152, 153, 153, 57, 58, 0, 59, 0, 0, 0, 154, 0, 0, 62, 0], [0, 0, 0, 0, 265, 141, 141, 57, 58, 0, 0, 0, 0, 606, 265, 0, 0, 0, 0], [0, 0, 0, 603, 152, 604, 153, 57, 58, 0, 59, 0, 0, 606, 154, 0, 0, 62, 0], [0, 0, 0, 603, 152, 153, 153, 57, 58, 0, 59, 0, 0, 0, 154, 0, 0, 62, 0], [0, 575, 0, 0, 0, 246, 246, 0, 58, 0, 59, 0, 0, 0, 139, 0, 575, 0, 0], [0, 575, 0, 607, 0, 246, 246, 0, 58, 0, 59, 0, 0, 0, 139, 0, 575, 0, 0], [0, 0, 0, 616, 152, 153, 153, 57, 58, 0, 59, 0, 0, 0, 154, 0, 0, 62, 0], [0, 0, 0, 0, 265, 141, 141, 57, 58, 0, 0, 0, 0, 612, 265, 0, 0, 0, 0], [0, 0, 0, 609, 152, 610, 153, 57, 58, 0, 59, 0, 0, 612, 154, 0, 0, 62, 0], [0, 0, 0, 609, 152, 153, 153, 57, 58, 0, 59, 0, 0, 0, 154, 0, 0, 62, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 549, 0, 0], [0, 0, 0, 0, 91, 92, 92, 22, 23, 0, 24, 0, 0, 0, 93, 0, 0, 27, 0], [0, 0, 0, 0, 112, 113, 113, 32, 33, 0, 34, 0, 0, 0, 114, 0, 0, 37, 0], [0, 0, 0, 0, 152, 153, 153, 57, 58, 0, 59, 0, 0, 0, 154, 0, 0, 62, 0]];\nvar accepting = [false, true, true, true, true, true, false, false, true, true, true, true, true, true, true, true, true, true, true, true, false, true, true, true, true, true, true, true, true, true, false, true, true, true, true, true, true, true, true, true, true, true, false, true, false, true, true, false, false, true, true, true, true, true, true, false, false, true, true, true, true, true, true, true, true, true, true, false, true, true, false, true, true, true, false, true, true, true, false, true, false, true, true, false, false, true, true, true, true, true, true, true, false, true, true, false, true, true, true, false, true, false, true, true, false, false, true, true, true, true, true, true, true, false, true, true, true, false, true, true, true, false, true, false, true, true, false, false, false, true, true, false, false, true, true, true, true, true, true, false, true, false, true, true, false, false, true, true, true, true, true, true, true, false, true, true, false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false, true, true, true, false, true, false, true, true, false, false, false, true, true, false, false, true, true, true, false, true, true, true, true, true, true, false, true, true, true, false, true, false, true, true, false, false, false, true, true, false, false, true, true, true, false, true, true, true, true, true, false, true, true, true, true, true, false, true, true, false, false, false, false, true, true, false, false, true, true, true, false, true, true, true, false, true, false, true, true, false, false, false, true, true, false, false, true, true, true, false, true, true, true, true, false, true, false, true, true, true, true, true, true, true, true, true, false, true, true, true, true, true, false, true, true, false, false, false, false, true, true, false, false, true, true, true, false, true, true, true, true, true, false, true, true, false, false, false, false, true, true, false, false, true, true, true, true, false, true, true, true, true, true, true, false, true, true, false, false, false, false, true, false, true, false, true, true, true, true, true, false, true, true, false, false, false, false, true, true, false, false, true, true, true, false, true, true, false, false, true, false, true, true, false, true, true, false, true, true, false, true, true, true, true, true, true, false, true, true, false, false, false, false, true, false, true, true, false, true, true, true, true, true, true, false, true, true, false, false, false, false, true, false, true, false, true, true, true, true, false, false, false, true, true, false, true, true, true, true, true, true, false, true, true, false, false, false, false, true, false, true, false, true, true, false, false, true, true, false, false, true, true, true, false, true, false, true, true, true, true, false, false, false, true, false, true, true, true, true, false, false, false, true, true, false, true, true, true, true, true, true, false, true, true, false, true, false, true, true, true, true, false, false, false, false, false, false, false, true, true, false, false, true, true, false, true, true, true, true, false, true, true, true, true, true, true, false, true, true, false, true, true, false, true, true, true, true, true, true, false, true, true, false, true, false, true, true, true, true, true, true, false, true, true, true, true, true, true, false, true, true, false, false, false, false, false, true, true, false, true, false, true, true, true, true, true, false, true, true, true, true, true, false, true, true, true, true, true, false, true, true, true, false, true, true, true, true, false, false, false, true, false, true, true, true, true, true, false, true, true, true, false, true, true, true, true, true, false, true, true, true, true, false, true, true, true, true, true, false, true, true, false, true, true, true];\nvar tags = [[], [\"broken_cluster\"], [\"consonant_syllable\"], [\"vowel_syllable\"], [\"broken_cluster\"], [\"broken_cluster\"], [], [], [\"broken_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [\"standalone_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [\"consonant_syllable\"], [\"broken_cluster\"], [\"symbol_cluster\"], [\"consonant_syllable\"], [\"consonant_syllable\"], [], [\"consonant_syllable\"], [\"consonant_syllable\"], [\"consonant_syllable\"], [\"consonant_syllable\"], [\"consonant_syllable\"], [\"consonant_syllable\"], [\"consonant_syllable\"], [\"vowel_syllable\"], [\"vowel_syllable\"], [], [\"vowel_syllable\"], [\"vowel_syllable\"], [\"vowel_syllable\"], [\"vowel_syllable\"], [\"vowel_syllable\"], [\"vowel_syllable\"], [\"vowel_syllable\"], [\"broken_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [], [\"broken_cluster\"], [], [\"broken_cluster\"], [\"broken_cluster\"], [], [], [\"broken_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [\"standalone_cluster\"], [\"standalone_cluster\"], [], [], [\"standalone_cluster\"], [\"standalone_cluster\"], [\"standalone_cluster\"], [\"standalone_cluster\"], [\"standalone_cluster\"], [\"standalone_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [\"consonant_syllable\", \"broken_cluster\"], [\"broken_cluster\"], [], [\"broken_cluster\"], [\"symbol_cluster\"], [], [\"symbol_cluster\"], [\"symbol_cluster\"], [\"consonant_syllable\"], [], [\"consonant_syllable\"], [\"consonant_syllable\"], [\"consonant_syllable\"], [], [\"consonant_syllable\"], [], [\"consonant_syllable\"], [\"consonant_syllable\"], [], [], [\"consonant_syllable\"], [\"consonant_syllable\"], [\"consonant_syllable\"], [\"consonant_syllable\"], [\"consonant_syllable\"], [\"consonant_syllable\"], [\"consonant_syllable\"], [], [\"consonant_syllable\"], [\"vowel_syllable\"], [], [\"vowel_syllable\"], [\"vowel_syllable\"], [\"vowel_syllable\"], [], [\"vowel_syllable\"], [], [\"vowel_syllable\"], [\"vowel_syllable\"], [], [], [\"vowel_syllable\"], [\"vowel_syllable\"], [\"vowel_syllable\"], [\"vowel_syllable\"], [\"vowel_syllable\"], [\"vowel_syllable\"], [\"vowel_syllable\"], [], [\"vowel_syllable\"], [\"broken_cluster\"], [\"broken_cluster\"], [], [\"broken_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [], [\"broken_cluster\"], [], [\"broken_cluster\"], [\"broken_cluster\"], [], [], [], [\"broken_cluster\"], [\"broken_cluster\"], [], [], [\"broken_cluster\"], [\"broken_cluster\"], [\"standalone_cluster\"], [\"standalone_cluster\"], [\"standalone_cluster\"], [\"standalone_cluster\"], [], [\"standalone_cluster\"], [], [\"standalone_cluster\"], [\"standalone_cluster\"], [], [], [\"standalone_cluster\"], [\"standalone_cluster\"], [\"standalone_cluster\"], [\"standalone_cluster\"], [\"standalone_cluster\"], [\"standalone_cluster\"], [\"standalone_cluster\"], [], [\"standalone_cluster\"], [\"broken_cluster\"], [], [\"broken_cluster\"], [\"broken_cluster\"], [\"consonant_syllable\"], [\"consonant_syllable\"], [\"consonant_syllable\", \"broken_cluster\"], [\"consonant_syllable\", \"broken_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [\"symbol_cluster\"], [\"symbol_cluster\"], [\"symbol_cluster\"], [\"consonant_syllable\"], [\"consonant_syllable\"], [], [\"consonant_syllable\"], [\"consonant_syllable\"], [\"consonant_syllable\"], [], [\"consonant_syllable\"], [], [\"consonant_syllable\"], [\"consonant_syllable\"], [], [], [], [\"consonant_syllable\"], [\"consonant_syllable\"], [], [], [\"consonant_syllable\"], [\"consonant_syllable\"], [\"consonant_syllable\"], [], [\"consonant_syllable\"], [\"consonant_syllable\"], [\"consonant_syllable\"], [\"consonant_syllable\"], [\"vowel_syllable\"], [\"vowel_syllable\"], [], [\"vowel_syllable\"], [\"vowel_syllable\"], [\"vowel_syllable\"], [], [\"vowel_syllable\"], [], [\"vowel_syllable\"], [\"vowel_syllable\"], [], [], [], [\"vowel_syllable\"], [\"vowel_syllable\"], [], [], [\"vowel_syllable\"], [\"vowel_syllable\"], [\"vowel_syllable\"], [], [\"vowel_syllable\"], [\"vowel_syllable\"], [\"vowel_syllable\"], [\"vowel_syllable\"], [\"broken_cluster\"], [], [\"broken_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [], [\"broken_cluster\"], [\"broken_cluster\"], [], [], [], [], [\"broken_cluster\"], [\"broken_cluster\"], [], [], [\"broken_cluster\"], [\"standalone_cluster\"], [\"standalone_cluster\"], [], [\"standalone_cluster\"], [\"standalone_cluster\"], [\"standalone_cluster\"], [], [\"standalone_cluster\"], [], [\"standalone_cluster\"], [\"standalone_cluster\"], [], [], [], [\"standalone_cluster\"], [\"standalone_cluster\"], [], [], [\"standalone_cluster\"], [\"standalone_cluster\"], [\"standalone_cluster\"], [], [\"standalone_cluster\"], [\"standalone_cluster\"], [\"standalone_cluster\"], [\"standalone_cluster\"], [], [\"broken_cluster\"], [], [\"consonant_syllable\", \"broken_cluster\"], [\"consonant_syllable\", \"broken_cluster\"], [\"consonant_syllable\", \"broken_cluster\"], [\"consonant_syllable\", \"broken_cluster\"], [\"consonant_syllable\", \"broken_cluster\"], [\"consonant_syllable\", \"broken_cluster\"], [\"broken_cluster\"], [\"symbol_cluster\"], [\"consonant_syllable\"], [], [\"consonant_syllable\"], [\"consonant_syllable\"], [\"consonant_syllable\"], [\"consonant_syllable\"], [\"consonant_syllable\"], [], [\"consonant_syllable\"], [\"consonant_syllable\"], [], [], [], [], [\"consonant_syllable\"], [\"consonant_syllable\"], [], [], [\"consonant_syllable\"], [\"consonant_syllable\"], [\"vowel_syllable\"], [], [\"vowel_syllable\"], [\"vowel_syllable\"], [\"vowel_syllable\"], [\"vowel_syllable\"], [\"vowel_syllable\"], [], [\"vowel_syllable\"], [\"vowel_syllable\"], [], [], [], [], [\"vowel_syllable\"], [\"vowel_syllable\"], [], [], [\"vowel_syllable\"], [\"vowel_syllable\"], [\"broken_cluster\"], [\"broken_cluster\"], [], [\"broken_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [], [\"broken_cluster\"], [\"broken_cluster\"], [], [], [], [], [\"broken_cluster\"], [], [\"standalone_cluster\"], [], [\"standalone_cluster\"], [\"standalone_cluster\"], [\"standalone_cluster\"], [\"standalone_cluster\"], [\"standalone_cluster\"], [], [\"standalone_cluster\"], [\"standalone_cluster\"], [], [], [], [], [\"standalone_cluster\"], [\"standalone_cluster\"], [], [], [\"standalone_cluster\"], [\"standalone_cluster\"], [\"consonant_syllable\", \"broken_cluster\"], [], [\"consonant_syllable\", \"broken_cluster\"], [\"consonant_syllable\", \"broken_cluster\"], [], [], [\"consonant_syllable\", \"broken_cluster\"], [], [\"consonant_syllable\", \"broken_cluster\"], [\"consonant_syllable\", \"broken_cluster\"], [], [\"consonant_syllable\", \"broken_cluster\"], [\"consonant_syllable\", \"broken_cluster\"], [], [\"consonant_syllable\"], [\"consonant_syllable\"], [], [\"consonant_syllable\"], [\"consonant_syllable\"], [\"consonant_syllable\"], [\"consonant_syllable\"], [\"consonant_syllable\"], [\"consonant_syllable\"], [], [\"consonant_syllable\"], [\"consonant_syllable\"], [], [], [], [], [\"consonant_syllable\"], [], [\"vowel_syllable\"], [\"vowel_syllable\"], [], [\"vowel_syllable\"], [\"vowel_syllable\"], [\"vowel_syllable\"], [\"vowel_syllable\"], [\"vowel_syllable\"], [\"vowel_syllable\"], [], [\"vowel_syllable\"], [\"vowel_syllable\"], [], [], [], [], [\"vowel_syllable\"], [], [\"broken_cluster\"], [], [\"broken_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [], [], [], [\"standalone_cluster\"], [\"standalone_cluster\"], [], [\"standalone_cluster\"], [\"standalone_cluster\"], [\"standalone_cluster\"], [\"standalone_cluster\"], [\"standalone_cluster\"], [\"standalone_cluster\"], [], [\"standalone_cluster\"], [\"standalone_cluster\"], [], [], [], [], [\"standalone_cluster\"], [], [\"consonant_syllable\", \"broken_cluster\"], [], [\"consonant_syllable\", \"broken_cluster\"], [\"consonant_syllable\", \"broken_cluster\"], [], [], [\"consonant_syllable\", \"broken_cluster\"], [\"consonant_syllable\", \"broken_cluster\"], [], [], [\"consonant_syllable\", \"broken_cluster\"], [\"consonant_syllable\", \"broken_cluster\"], [\"consonant_syllable\", \"broken_cluster\"], [], [\"consonant_syllable\"], [], [\"consonant_syllable\"], [\"consonant_syllable\"], [\"consonant_syllable\"], [\"consonant_syllable\"], [], [], [], [\"vowel_syllable\"], [], [\"vowel_syllable\"], [\"vowel_syllable\"], [\"vowel_syllable\"], [\"vowel_syllable\"], [], [], [], [\"broken_cluster\"], [\"broken_cluster\"], [], [\"broken_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [], [\"broken_cluster\"], [\"broken_cluster\"], [], [\"standalone_cluster\"], [], [\"standalone_cluster\"], [\"standalone_cluster\"], [\"standalone_cluster\"], [\"standalone_cluster\"], [], [], [], [], [], [], [], [\"consonant_syllable\", \"broken_cluster\"], [\"consonant_syllable\", \"broken_cluster\"], [], [], [\"consonant_syllable\", \"broken_cluster\"], [\"consonant_syllable\", \"broken_cluster\"], [], [\"consonant_syllable\", \"broken_cluster\"], [\"consonant_syllable\", \"broken_cluster\"], [\"consonant_syllable\"], [\"consonant_syllable\"], [], [\"consonant_syllable\"], [\"consonant_syllable\"], [\"consonant_syllable\"], [\"consonant_syllable\"], [\"consonant_syllable\"], [\"consonant_syllable\"], [], [\"consonant_syllable\"], [\"consonant_syllable\"], [], [\"vowel_syllable\"], [\"vowel_syllable\"], [], [\"vowel_syllable\"], [\"vowel_syllable\"], [\"vowel_syllable\"], [\"vowel_syllable\"], [\"vowel_syllable\"], [\"vowel_syllable\"], [], [\"vowel_syllable\"], [\"vowel_syllable\"], [], [\"broken_cluster\"], [], [\"broken_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [\"standalone_cluster\"], [\"standalone_cluster\"], [], [\"standalone_cluster\"], [\"standalone_cluster\"], [\"standalone_cluster\"], [\"standalone_cluster\"], [\"standalone_cluster\"], [\"standalone_cluster\"], [], [\"standalone_cluster\"], [\"standalone_cluster\"], [], [], [], [], [], [\"consonant_syllable\", \"broken_cluster\"], [\"consonant_syllable\", \"broken_cluster\"], [], [\"consonant_syllable\"], [], [\"consonant_syllable\"], [\"consonant_syllable\"], [\"consonant_syllable\"], [\"consonant_syllable\"], [\"vowel_syllable\"], [], [\"vowel_syllable\"], [\"vowel_syllable\"], [\"vowel_syllable\"], [\"vowel_syllable\"], [\"broken_cluster\"], [], [\"broken_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [], [\"broken_cluster\"], [\"broken_cluster\"], [\"standalone_cluster\"], [], [\"standalone_cluster\"], [\"standalone_cluster\"], [\"standalone_cluster\"], [\"standalone_cluster\"], [], [], [], [\"consonant_syllable\"], [], [\"consonant_syllable\"], [\"consonant_syllable\"], [\"consonant_syllable\"], [\"consonant_syllable\"], [\"consonant_syllable\"], [], [\"consonant_syllable\"], [\"consonant_syllable\"], [\"vowel_syllable\"], [], [\"vowel_syllable\"], [\"vowel_syllable\"], [\"vowel_syllable\"], [\"vowel_syllable\"], [\"vowel_syllable\"], [], [\"vowel_syllable\"], [\"vowel_syllable\"], [\"broken_cluster\"], [\"standalone_cluster\"], [], [\"standalone_cluster\"], [\"standalone_cluster\"], [\"standalone_cluster\"], [\"standalone_cluster\"], [\"standalone_cluster\"], [], [\"standalone_cluster\"], [\"standalone_cluster\"], [], [\"consonant_syllable\"], [\"vowel_syllable\"], [\"standalone_cluster\"]];\nvar indicMachine = {\n  stateTable: stateTable,\n  accepting: accepting,\n  tags: tags\n};\nvar categories = [\"O\", \"IND\", \"S\", \"GB\", \"B\", \"FM\", \"CGJ\", \"VMAbv\", \"VMPst\", \"VAbv\", \"VPst\", \"CMBlw\", \"VPre\", \"VBlw\", \"H\", \"VMBlw\", \"CMAbv\", \"MBlw\", \"CS\", \"R\", \"SUB\", \"MPst\", \"MPre\", \"FAbv\", \"FPst\", \"FBlw\", \"null\", \"SMAbv\", \"SMBlw\", \"VMPre\", \"ZWNJ\", \"ZWJ\", \"WJ\", \"M\", \"VS\", \"N\", \"HN\", \"MAbv\"];\nvar decompositions = {\n  \"2507\": [2503, 2494],\n  \"2508\": [2503, 2519],\n  \"2888\": [2887, 2902],\n  \"2891\": [2887, 2878],\n  \"2892\": [2887, 2903],\n  \"3018\": [3014, 3006],\n  \"3019\": [3015, 3006],\n  \"3020\": [3014, 3031],\n  \"3144\": [3142, 3158],\n  \"3264\": [3263, 3285],\n  \"3271\": [3270, 3285],\n  \"3272\": [3270, 3286],\n  \"3274\": [3270, 3266],\n  \"3275\": [3270, 3266, 3285],\n  \"3402\": [3398, 3390],\n  \"3403\": [3399, 3390],\n  \"3404\": [3398, 3415],\n  \"3546\": [3545, 3530],\n  \"3548\": [3545, 3535],\n  \"3549\": [3545, 3535, 3530],\n  \"3550\": [3545, 3551],\n  \"3635\": [3661, 3634],\n  \"3763\": [3789, 3762],\n  \"3955\": [3953, 3954],\n  \"3957\": [3953, 3956],\n  \"3958\": [4018, 3968],\n  \"3959\": [4018, 3953, 3968],\n  \"3960\": [4019, 3968],\n  \"3961\": [4019, 3953, 3968],\n  \"3969\": [3953, 3968],\n  \"6971\": [6970, 6965],\n  \"6973\": [6972, 6965],\n  \"6976\": [6974, 6965],\n  \"6977\": [6975, 6965],\n  \"6979\": [6978, 6965],\n  \"69934\": [69937, 69927],\n  \"69935\": [69938, 69927],\n  \"70475\": [70471, 70462],\n  \"70476\": [70471, 70487],\n  \"70843\": [70841, 70842],\n  \"70844\": [70841, 70832],\n  \"70846\": [70841, 70845],\n  \"71098\": [71096, 71087],\n  \"71099\": [71097, 71087]\n};\nvar stateTable$1 = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [2, 2, 3, 4, 4, 5, 0, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 0, 17, 18, 11, 19, 20, 21, 22, 0, 0, 0, 23, 0, 0, 2, 0, 0, 24, 0, 25], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 28, 0, 0, 0, 0, 0, 27, 0, 0, 0], [0, 0, 0, 0, 0, 29, 0, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 0, 0, 41, 35, 42, 43, 44, 45, 0, 0, 0, 46, 0, 0, 0, 0, 39, 0, 0, 47], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 5, 0, 6, 7, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 20, 21, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 5, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 21, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 5, 0, 6, 7, 8, 9, 0, 0, 12, 0, 14, 0, 0, 0, 0, 0, 0, 0, 20, 21, 22, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 5, 0, 6, 7, 0, 9, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 20, 21, 22, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 5, 0, 6, 7, 8, 9, 10, 11, 12, 13, 14, 0, 16, 0, 0, 18, 11, 19, 20, 21, 22, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 25], [0, 0, 0, 0, 0, 5, 0, 6, 7, 8, 9, 0, 11, 12, 0, 14, 0, 0, 0, 0, 0, 0, 0, 20, 21, 22, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 5, 0, 6, 7, 0, 9, 0, 0, 12, 0, 14, 0, 0, 0, 0, 0, 0, 0, 20, 21, 22, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 5, 0, 0, 7, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 20, 21, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 5, 0, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 0, 0, 18, 11, 19, 20, 21, 22, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 25], [0, 0, 0, 0, 0, 5, 0, 6, 7, 8, 9, 0, 11, 12, 0, 14, 0, 0, 0, 0, 0, 11, 0, 20, 21, 22, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 4, 4, 5, 0, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 0, 0, 18, 11, 19, 20, 21, 22, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 25], [0, 0, 0, 0, 0, 5, 0, 6, 7, 8, 9, 48, 11, 12, 13, 14, 48, 16, 0, 0, 18, 11, 19, 20, 21, 22, 0, 0, 0, 23, 0, 0, 0, 0, 49, 0, 0, 25], [0, 0, 0, 0, 0, 5, 0, 6, 7, 8, 9, 0, 11, 12, 0, 14, 0, 16, 0, 0, 0, 11, 0, 20, 21, 22, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 25], [0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 21, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 5, 0, 6, 7, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 20, 21, 22, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 51, 0], [0, 0, 0, 0, 0, 5, 0, 6, 7, 8, 9, 0, 11, 12, 0, 14, 0, 16, 0, 0, 0, 11, 0, 20, 21, 22, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 29, 0, 30, 31, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 43, 44, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 29, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 44, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 29, 0, 30, 31, 32, 33, 0, 0, 36, 0, 38, 0, 0, 0, 0, 0, 0, 0, 43, 44, 45, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 29, 0, 30, 31, 0, 33, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 43, 44, 45, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 29, 0, 30, 31, 32, 33, 34, 35, 36, 37, 38, 0, 40, 0, 0, 41, 35, 42, 43, 44, 45, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 47], [0, 0, 0, 0, 0, 29, 0, 30, 31, 32, 33, 0, 35, 36, 0, 38, 0, 0, 0, 0, 0, 0, 0, 43, 44, 45, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 29, 0, 30, 31, 0, 33, 0, 0, 36, 0, 38, 0, 0, 0, 0, 0, 0, 0, 43, 44, 45, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 29, 0, 0, 31, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 43, 44, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 29, 0, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 0, 0, 41, 35, 42, 43, 44, 45, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 47], [0, 0, 0, 0, 0, 29, 0, 30, 31, 32, 33, 0, 35, 36, 0, 38, 0, 0, 0, 0, 0, 35, 0, 43, 44, 45, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 29, 0, 30, 31, 32, 33, 52, 35, 36, 37, 38, 52, 40, 0, 0, 41, 35, 42, 43, 44, 45, 0, 0, 0, 46, 0, 0, 0, 0, 53, 0, 0, 47], [0, 0, 0, 0, 0, 29, 0, 30, 31, 32, 33, 0, 35, 36, 0, 38, 0, 40, 0, 0, 0, 35, 0, 43, 44, 45, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 47], [0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 44, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 29, 0, 30, 31, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 43, 44, 45, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 29, 0, 30, 31, 32, 33, 0, 35, 36, 0, 38, 0, 40, 0, 0, 0, 35, 0, 43, 44, 45, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 5, 0, 6, 7, 8, 9, 48, 11, 12, 13, 14, 0, 16, 0, 0, 18, 11, 19, 20, 21, 22, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 25], [0, 0, 0, 0, 0, 5, 0, 6, 7, 8, 9, 48, 11, 12, 13, 14, 48, 16, 0, 0, 18, 11, 19, 20, 21, 22, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 25], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0], [0, 0, 0, 0, 0, 29, 0, 30, 31, 32, 33, 52, 35, 36, 37, 38, 0, 40, 0, 0, 41, 35, 42, 43, 44, 45, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 47], [0, 0, 0, 0, 0, 29, 0, 30, 31, 32, 33, 52, 35, 36, 37, 38, 52, 40, 0, 0, 41, 35, 42, 43, 44, 45, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 47], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 51, 0]];\nvar accepting$1 = [false, true, true, true, true, true, true, true, true, true, true, true, true, false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true];\nvar tags$1 = [[], [\"broken_cluster\"], [\"independent_cluster\"], [\"symbol_cluster\"], [\"standard_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [], [\"broken_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [\"numeral_cluster\"], [\"broken_cluster\"], [\"independent_cluster\"], [\"symbol_cluster\"], [\"symbol_cluster\"], [\"standard_cluster\"], [\"standard_cluster\"], [\"standard_cluster\"], [\"standard_cluster\"], [\"standard_cluster\"], [\"standard_cluster\"], [\"standard_cluster\"], [\"standard_cluster\"], [\"virama_terminated_cluster\"], [\"standard_cluster\"], [\"standard_cluster\"], [\"standard_cluster\"], [\"standard_cluster\"], [\"standard_cluster\"], [\"standard_cluster\"], [\"standard_cluster\"], [\"standard_cluster\"], [\"standard_cluster\"], [\"standard_cluster\"], [\"broken_cluster\"], [\"broken_cluster\"], [\"numeral_cluster\"], [\"number_joiner_terminated_cluster\"], [\"standard_cluster\"], [\"standard_cluster\"], [\"numeral_cluster\"]];\nvar useData = {\n  categories: categories,\n  decompositions: decompositions,\n  stateTable: stateTable$1,\n  accepting: accepting$1,\n  tags: tags$1\n};\n\n// Cateories used in the OpenType spec:\n// https://www.microsoft.com/typography/otfntdev/devanot/shaping.aspx\nvar CATEGORIES = {\n  X: 1 << 0,\n  C: 1 << 1,\n  V: 1 << 2,\n  N: 1 << 3,\n  H: 1 << 4,\n  ZWNJ: 1 << 5,\n  ZWJ: 1 << 6,\n  M: 1 << 7,\n  SM: 1 << 8,\n  VD: 1 << 9,\n  A: 1 << 10,\n  Placeholder: 1 << 11,\n  Dotted_Circle: 1 << 12,\n  RS: 1 << 13,\n  // Register Shifter, used in Khmer OT spec.\n  Coeng: 1 << 14,\n  // Khmer-style Virama.\n  Repha: 1 << 15,\n  // Atomically-encoded logical or visual repha.\n  Ra: 1 << 16,\n  CM: 1 << 17,\n  // Consonant-Medial.\n  Symbol: 1 << 18 // Avagraha, etc that take marks (SM,A,VD).\n}; // Visual positions in a syllable from left to right.\n\nvar POSITIONS = {\n  Start: 1 << 0,\n  Ra_To_Become_Reph: 1 << 1,\n  Pre_M: 1 << 2,\n  Pre_C: 1 << 3,\n  Base_C: 1 << 4,\n  After_Main: 1 << 5,\n  Above_C: 1 << 6,\n  Before_Sub: 1 << 7,\n  Below_C: 1 << 8,\n  After_Sub: 1 << 9,\n  Before_Post: 1 << 10,\n  Post_C: 1 << 11,\n  After_Post: 1 << 12,\n  Final_C: 1 << 13,\n  SMVD: 1 << 14,\n  End: 1 << 15\n};\nvar CONSONANT_FLAGS = CATEGORIES.C | CATEGORIES.Ra | CATEGORIES.CM | CATEGORIES.V | CATEGORIES.Placeholder | CATEGORIES.Dotted_Circle;\nvar JOINER_FLAGS = CATEGORIES.ZWJ | CATEGORIES.ZWNJ;\nvar HALANT_OR_COENG_FLAGS = CATEGORIES.H | CATEGORIES.Coeng;\nvar INDIC_CONFIGS = {\n  Default: {\n    hasOldSpec: false,\n    virama: 0,\n    basePos: 'Last',\n    rephPos: POSITIONS.Before_Post,\n    rephMode: 'Implicit',\n    blwfMode: 'Pre_And_Post'\n  },\n  Devanagari: {\n    hasOldSpec: true,\n    virama: 0x094D,\n    basePos: 'Last',\n    rephPos: POSITIONS.Before_Post,\n    rephMode: 'Implicit',\n    blwfMode: 'Pre_And_Post'\n  },\n  Bengali: {\n    hasOldSpec: true,\n    virama: 0x09CD,\n    basePos: 'Last',\n    rephPos: POSITIONS.After_Sub,\n    rephMode: 'Implicit',\n    blwfMode: 'Pre_And_Post'\n  },\n  Gurmukhi: {\n    hasOldSpec: true,\n    virama: 0x0A4D,\n    basePos: 'Last',\n    rephPos: POSITIONS.Before_Sub,\n    rephMode: 'Implicit',\n    blwfMode: 'Pre_And_Post'\n  },\n  Gujarati: {\n    hasOldSpec: true,\n    virama: 0x0ACD,\n    basePos: 'Last',\n    rephPos: POSITIONS.Before_Post,\n    rephMode: 'Implicit',\n    blwfMode: 'Pre_And_Post'\n  },\n  Oriya: {\n    hasOldSpec: true,\n    virama: 0x0B4D,\n    basePos: 'Last',\n    rephPos: POSITIONS.After_Main,\n    rephMode: 'Implicit',\n    blwfMode: 'Pre_And_Post'\n  },\n  Tamil: {\n    hasOldSpec: true,\n    virama: 0x0BCD,\n    basePos: 'Last',\n    rephPos: POSITIONS.After_Post,\n    rephMode: 'Implicit',\n    blwfMode: 'Pre_And_Post'\n  },\n  Telugu: {\n    hasOldSpec: true,\n    virama: 0x0C4D,\n    basePos: 'Last',\n    rephPos: POSITIONS.After_Post,\n    rephMode: 'Explicit',\n    blwfMode: 'Post_Only'\n  },\n  Kannada: {\n    hasOldSpec: true,\n    virama: 0x0CCD,\n    basePos: 'Last',\n    rephPos: POSITIONS.After_Post,\n    rephMode: 'Implicit',\n    blwfMode: 'Post_Only'\n  },\n  Malayalam: {\n    hasOldSpec: true,\n    virama: 0x0D4D,\n    basePos: 'Last',\n    rephPos: POSITIONS.After_Main,\n    rephMode: 'Log_Repha',\n    blwfMode: 'Pre_And_Post'\n  },\n  // Handled by UniversalShaper\n  // Sinhala: {\n  //   hasOldSpec: false,\n  //   virama: 0x0DCA,\n  //   basePos: 'Last_Sinhala',\n  //   rephPos: POSITIONS.After_Main,\n  //   rephMode: 'Explicit',\n  //   blwfMode: 'Pre_And_Post'\n  // },\n  Khmer: {\n    hasOldSpec: false,\n    virama: 0x17D2,\n    basePos: 'First',\n    rephPos: POSITIONS.Ra_To_Become_Reph,\n    rephMode: 'Vis_Repha',\n    blwfMode: 'Pre_And_Post'\n  }\n}; // Additional decompositions that aren't in Unicode\n\nvar INDIC_DECOMPOSITIONS = {\n  // Khmer\n  0x17BE: [0x17C1, 0x17BE],\n  0x17BF: [0x17C1, 0x17BF],\n  0x17C0: [0x17C1, 0x17C0],\n  0x17C4: [0x17C1, 0x17C4],\n  0x17C5: [0x17C1, 0x17C5]\n};\nvar decompositions$1 = useData.decompositions;\nvar trie$1 = new UnicodeTrie(Buffer(\"AAARAAAAAABg2AAAAWYPmfDtnXuMXFUdx+/uzs7M7szudAtECGJRIMRQbUAithQWkGAKiVhNpFVRRAmIQVCDkDYICGotIA9BTCz8IeUviv7BQ2PBtBIRLBBQIWAUsKg1BKxRAqIgfs/cc+aeOXPej3tnZX7JJ/dxzj3nd36/8753Z5fUsuxgsAwcAU4Gp4BPgM+Cd4P3RjieDs4GXwLrHJ5bDy4DG8A14LvgZrAZbAF3gns0z18ALgY/B78C94NHwBPgabAE/AX8DbwM5sF/QX0yD5vFcU/wVnAgWAoOAyvAceBE8CGwBpwGzgJfAF8BXwXfAFeC68EmsBlsAXeCreA+8CB4DDwF/gh2gd3gFfAGmKxn2QzYC+wHDgRLweFgJTgWrKrnuq/GcQ04jV6fheN54EJwEbgcXAG+Q8O/j+Mt4DZwB9haz8t9Hz3a8iCN/xiOvwRP0evH6fE68AzOH+Ke2eWYhw3PcGnuxvkr4A3QaGRZB7wFLAEHg2XgiEZ/fHKcp/ceBh/A+cngFPCpRm6vM3E8l8a5gN67GMdvgqsbeX2ap9yI601gM7gN3AG20mfuo8cdOP6GpvdUg9oKxz839GV90RDO2/glxN1B790NXsN1rZll7WYRdw+c70uvTwIHNAfTO0RyL5TDmnnbc3lmRQI9UnM0dD5eovfz4FpJ/BNpXNYWV+N6Lfg0hY97JK1vn+Pur9DoQur2F7m436bHDUK8C5t5/8vruo4+97WmXG+GLmzEiBF+PDwEOowYMWLEiBEjRoxYeBw5BDqIPEfXut9yWN+vVNxfrnnmWqR/PdgENoMt4E5wD9gOHgCPgifBs2BXM99b2o3jP8F/wMRUlrXAHNgHvH0q3895J46HguXgWHAGLctmLv9VuL96qnp7jxgxYsSbCbJvuRZ97/tqxT59VVRtixEjRsThBG7OSt5zzoPT0M+cBc4T5noXOs79TqLHeZrHUeCSqeJ96gacXy2kecNU8V6Hh7yXuQlhtw7B/PO1RTkr52Aj8JNFZjYg3gOKuC/g/v6Ls2wNuAY8urg//PcIb+6RZXuDNeCS6SzbBrJWlh0DLiFHco8ed9IjzzvaWfa9sZzTcf6D9mCcnbg3PlNcH4fzS8F2MDaLdQG4dLZIJxbbaZqv4ri8k58f3+mPs66T6/TTzqDeI0aMGDGiHP5dcR8ce/xxYcWi6vOfr725uRzcjnngXVOD61Hync+9uL+Nmyfej/NHpvL56A5Jeuz7uyfo+pqcPz2Vf1NH0ttJ03pekt8SmuY/EPYy9zzbN319ym/9TL6ZIt9MHCXRdxJtoAkWTRdz472n87D9cTwYLJvuz++I6WIePo/zE8AHp4v8WLyP0nufnM6/+zoDx8+DL08P6r9+urheRtO+jD6/cdrsx3mqu8w+xH4PScKIXa5D2jeCm8Et4DbwI/BjcC/4BXgI/Bb8DuwEu8Bu8Ap4A9RaRZptnO8J9gUHgEPAoWA5OLY1qMO90GEV7q+mYWtxPBWcIYnL4p+DsPNbxfVFOP86uAr8DNc34HgTDb8Vx9sVaRFI/LtagzYjnCqpb908EX87eBA8Bh4Hf2jle/9/wvGFVv787rrZZy8h7qtgDOuFOmiBuXYRvg/O9wMHgXeB97SLspk4sq0OI/q9v13+ek+sh3zYSRp9jrYorw9ll1/GRzR+KotYZSHf8laVP2lvpA/8OGdPMk59hqtXZ+L8nHbxvWwqO65ryu+fT3VZz+l4dET7L0R072ljsMyzTpaJqQxsbL8M9WajY789DO85XMp/Dcp3Qztdn+9qf/a97ZWK8PXc3G+TpC/nv8Mncy7ZvICF302P5O+aNiOtLdTXd+D4Q7DVwfcvWvx9zTEJ/o5iG3R8YAjGNFseha5PGuZKz7b7xxXbOrXMcu5eJSo//rXdH/73Enz6L1q/X+fyIu8wZGtNBmkjkzNZNgP2AvuBg2bysKUzduXn/66JtNeN4PCZvO0/x7Ujdn4VnYOvRJzjZ/I+9sQZeftX2Tc1RPcPz/Tf4/si0g+t5Mq+kfZjZL34Mc5ul3PPnE7TOxvHK2qDaZ+L++db2HyYqMo/qVnb/P8uH8/rmnFxR0k6DCu/rjj/RxT7KGUSWgbd+LMQuEgYB1zsk2qtvJD8v5AhdfdttbEunSxbcJD9Zf7chqp1Hlbe7FK1/aPVTfp7FgtC1yGGiSncFK/DhZvi+epZta0WWjlsfDZMyPRdSPrryqSSKnXx1bkq/Ye9TlRpk7Lrjq1UrfdC9X+MtKqwP6+3a/4pJFUZF0pZZpv91MYjMBaRRXbxpho5zQmUY3F+Pt4o7rvQrBXPdm00TaE24uMadaM2meLSI7iu071t3er3b6ZLi8JEde3qw+6zGv+ycF5kaRBh/m1T/7Yl/mMyTuMwadP4xL9ifjJpNwbvDZRJ8G8vnqV/Wf12aa/kyOdl69+BspTsXzGueE6E+JfZnvmXIfNPW+FfXkjb1YmqPNpnLP3b61fHCj/X5tzGANf2y3yqvC7Jv7btV4TVbdammI9l/g0dS5lNxLrk2j9r8xjjxhBQnygg0lgg/bOrfyct+udJi/Yrk0lFnxC7f+5kRbsNmcexfrubt0X/rGvLqrGSnYv3ZPHEe8r7lvMvUfi2LOu/2dg8LrRtQt2yfcv8r5IU70VkIs6nbebUXf0M/o7Znl39Sdoz+X1oEb5N8ffF67qhPfPP6eoUbxf+GRf/6sRnvaSdmw+Bf1VxmbD+2sa//DU7t/Gv2PfKpKdrBP92Ojk+IvqX16ks/2qxbL8EZnc2HqsgYuqPuzZV+I3RbujbDm+T0PmWCVO/5jqftp1zy+wSA6s0JWtp2z5e1oZV+yMsjB3ZXolsv0Ulrv01v3/iKrF94Qtbt9siCnmeb6fjjf59KnLk1xaEbvtvFnFirGvEOqmycQrbm/IMsXd3P28uh4nM3swXRER717OiX8kc7K2qqyn2p3maFGU/aruP5VCv+PraoTYU8yUmmbDwcYo6pusnM486xdoga4dkPCb1pK7Sfc6ebvkd4qeAtQcd/N63bB3lU3dlUnUf38VyvqCqK7JxlNSd7lydrDlm+/uqHiRvl30Nrp/n9zpkZRjoJ3V1diyP05rIYXHYs+w+D5+WMS8b5gZtKcuX0KT5d/WwtB97VnyvY6rjMukI56HI0rFJPwt8PjT/1OXzSbcMeEmdh294qvKK4rNu7j4n3LNZg8TKXwafv025U+XvKjHsT8Q7/7LGaJt9lAh7Asz3uv0XEX6t0duDoWN/93wmh92XpUHmCKb9GALbG+rZP3AfNbQPKKv/jpF/bP0JXfuW1QYk7dhljcyvk5mw+933Hpo1g26PQ2ZP6zVmTJt47P25jncD9vPwGS+q9QS/V6RaY8j8K8LmvUr9HfYCpH5OWL9lZY+Sv6pesHCJHbtrf9k6etZvf0G1L0ja4cAe1UT/s3zdCe3/Q5/n372wMc97/E1Qh0Tbmfwh3m/V9On72tNnrCF1sJkVe1EyXMdBa7+lHMsk44zMF6St9e2djNnbm8ybpHkq+gbbemMaH0UZmD8obKGrk7r+nt+3bE7o83YZp/vqOKdv6PzJNN6mTJsI/51XR7i2ZrGA5B6zFwnjzxmqPjaGfW3tZNrz1eljq29mOOqeCfF/irRt87PNw0uXSVAvrmOMNT569MptsYaV0sic/wbY13e8hPrb9K2ySUJ0j6G/Lu0U4qpTrR23jMp6m5hU+YTaWCeh9aIsm/rqUHV4bFv42kgnZdfH1PUj1D7DVH9d8khRN1zFRl/+/TW//qxL1uH83+mk3H+SvRtS2TDU90nX2TpM6/1xzZpZtoYdK763dqlz0f6uNeFehcs+H/nbGP77MpX06n/ofpzP+tVmTUvRtVuX/cjS67OE5kRBrxyJ+w/dPo7r+9cO1160e3gqu0S2uW7PjN/L6ns/UfMf10Lai87frJ+3KndAfc8yTf1M3T4s6qm4/yh7/2GSkG8UMw//DvRLgbYZSEOxr0LCWvRdjfh9XGzfqN4NivfZd7rsmFp08zmbssrKJEuTfVMZopdpbuwSrhNv3/N2s+0PDG3KNB6RMrFvJHv6B85HXObAoWsd3zm3i+6uZYytv+5+pohbpo6+tpZJFfmGlrcMf4c8b1Pe2OUIsaXJrinCTfaxtZOt+NYnU3hIfQlN20Z/1+dt7JaqLsbIzycNWZmrlNg2Dc2/LJ1T+T6WrrYSml4Ku7ik7yIx2opJD51vU9UfVRmrqL8u/olZj0PyCLV5irxcdKoi/6rKb8qTrHsnhW9jyZH/nSpeWDzxd9769uQ016lgUuf2pAfKPhu2FpfZL2Yb9snLNl/fNIepXaUsj4vNXCXUZ75px8ojNP8UPvAta2g6fb+F1ckZuneshv1vGXXDeyRRrN/bBPS1Jul+l+7zW86R7Wv63WXyDpt/RxraRjvC+TC3O61/Sqj/prag8x372yQivn+XwudrI2X2E2KdtJEov52e0L+uv4FO3p/rvssgsL8F4d/z9PzlWS94m8fqS3361Fi+6qaVYHwi9Yz4iH2fobIj+45cpz/TUaarr/4+z+vaWtVtyAX2d1LG8W9C3f+F1mnf36/k4w3YPrLv+XBVXCJs3cr+n4MKJuLv/fN9GhNdXVP5pJMN9vFi3rpv3/r8Ywg3SYp66zNOsO8QGcxPpnmRS/1mvmJjju3v7absI2xspQrvs1dNbjOj/wP7h1RlZyKGy8occ408UL8En4v6xfC/K3z52XzJd62T8vuZGGsxo/6O46ntmNqqFb/jps2/hHV4rPKH0svT4pstU7t2tZ9u/ZdqbJL1MwP6O86Fyt4jYaIrGz9mjEt8lFL4PtVE6votG2P6fpdf/GZRse7s3bf4BtSl/DIbKMctx++Z+8o6K6z9FPOwKsRmXiaNl7C+6NYRpjlbqG1j72f49qsuY4brd/amb4ZVc8TQ+sSH985LrEe8iPWJnfPrJRbWbb+dwn4x6o+r/aS2S7w3qWt//LnYz2ntE0vH1uDcyKatx1rH+EiMPEN1SZG/iz6+9o01Rob6O7Q+xLZ1jHobK61U+pWVvo2EpuWqzzD6Poa+pvhli0wn8Zq/72Mzm2d90o5VN1x9ZKuzbTgvqWwUIin8FSpl1CXXvFRxU0iozVPYJDRtF3uFphn6XAyJUUdD7SjTJ8v6n9fVbVObkKWp001lc9VRlqdOf5v0ZM+bymdbfp1NfG0bq27Y5JMyfxeJkU6o/inKH8O2Zfgidb6h/g3VJ7QcVbWL0Pxt6rlrPqa4KfQ25a2zl4/E8GdM/4fK/wA=\",\"base64\"));\nvar stateMachine = new StateMachine(indicMachine);\n/**\r\n * The IndicShaper supports indic scripts e.g. Devanagari, Kannada, etc.\r\n * Based on code from Harfbuzz: https://github.com/behdad/harfbuzz/blob/master/src/hb-ot-shape-complex-indic.cc\r\n */\nvar IndicShaper = /*#__PURE__*/function (_DefaultShaper3) {\n  _inheritsLoose(IndicShaper, _DefaultShaper3);\n  function IndicShaper() {\n    return _DefaultShaper3.apply(this, arguments) || this;\n  }\n  IndicShaper.planFeatures = function planFeatures(plan) {\n    plan.addStage(setupSyllables);\n    plan.addStage(['locl', 'ccmp']);\n    plan.addStage(initialReordering);\n    plan.addStage('nukt');\n    plan.addStage('akhn');\n    plan.addStage('rphf', false);\n    plan.addStage('rkrf');\n    plan.addStage('pref', false);\n    plan.addStage('blwf', false);\n    plan.addStage('abvf', false);\n    plan.addStage('half', false);\n    plan.addStage('pstf', false);\n    plan.addStage('vatu');\n    plan.addStage('cjct');\n    plan.addStage('cfar', false);\n    plan.addStage(finalReordering);\n    plan.addStage({\n      local: ['init'],\n      global: ['pres', 'abvs', 'blws', 'psts', 'haln', 'dist', 'abvm', 'blwm', 'calt', 'clig']\n    }); // Setup the indic config for the selected script\n\n    plan.unicodeScript = fromOpenType(plan.script);\n    plan.indicConfig = INDIC_CONFIGS[plan.unicodeScript] || INDIC_CONFIGS.Default;\n    plan.isOldSpec = plan.indicConfig.hasOldSpec && plan.script[plan.script.length - 1] !== '2'; // TODO: turn off kern (Khmer) and liga features.\n  };\n  IndicShaper.assignFeatures = function assignFeatures(plan, glyphs) {\n    var _loop = function _loop(i) {\n      var codepoint = glyphs[i].codePoints[0];\n      var d = INDIC_DECOMPOSITIONS[codepoint] || decompositions$1[codepoint];\n      if (d) {\n        var decomposed = d.map(function (c) {\n          var g = plan.font.glyphForCodePoint(c);\n          return new GlyphInfo(plan.font, g.id, [c], glyphs[i].features);\n        });\n        glyphs.splice.apply(glyphs, [i, 1].concat(decomposed));\n      }\n    };\n\n    // Decompose split matras\n    // TODO: do this in a more general unicode normalizer\n    for (var i = glyphs.length - 1; i >= 0; i--) {\n      _loop(i);\n    }\n  };\n  return IndicShaper;\n}(DefaultShaper);\n_defineProperty(IndicShaper, \"zeroMarkWidths\", 'NONE');\nfunction indicCategory(glyph) {\n  return trie$1.get(glyph.codePoints[0]) >> 8;\n}\nfunction indicPosition(glyph) {\n  return 1 << (trie$1.get(glyph.codePoints[0]) & 0xff);\n}\nvar IndicInfo = function IndicInfo(category, position, syllableType, syllable) {\n  this.category = category;\n  this.position = position;\n  this.syllableType = syllableType;\n  this.syllable = syllable;\n};\nfunction setupSyllables(font, glyphs) {\n  var syllable = 0;\n  var last = 0;\n  for (var _iterator53 = _createForOfIteratorHelperLoose(stateMachine.match(glyphs.map(indicCategory))), _step53; !(_step53 = _iterator53()).done;) {\n    var _step53$value = _step53.value,\n      start = _step53$value[0],\n      end = _step53$value[1],\n      tags = _step53$value[2];\n    if (start > last) {\n      ++syllable;\n      for (var i = last; i < start; i++) {\n        glyphs[i].shaperInfo = new IndicInfo(CATEGORIES.X, POSITIONS.End, 'non_indic_cluster', syllable);\n      }\n    }\n    ++syllable; // Create shaper info\n\n    for (var _i = start; _i <= end; _i++) {\n      glyphs[_i].shaperInfo = new IndicInfo(1 << indicCategory(glyphs[_i]), indicPosition(glyphs[_i]), tags[0], syllable);\n    }\n    last = end + 1;\n  }\n  if (last < glyphs.length) {\n    ++syllable;\n    for (var _i2 = last; _i2 < glyphs.length; _i2++) {\n      glyphs[_i2].shaperInfo = new IndicInfo(CATEGORIES.X, POSITIONS.End, 'non_indic_cluster', syllable);\n    }\n  }\n}\nfunction isConsonant(glyph) {\n  return glyph.shaperInfo.category & CONSONANT_FLAGS;\n}\nfunction isJoiner(glyph) {\n  return glyph.shaperInfo.category & JOINER_FLAGS;\n}\nfunction isHalantOrCoeng(glyph) {\n  return glyph.shaperInfo.category & HALANT_OR_COENG_FLAGS;\n}\nfunction wouldSubstitute(glyphs, feature) {\n  for (var _iterator54 = _createForOfIteratorHelperLoose(glyphs), _step54; !(_step54 = _iterator54()).done;) {\n    var _glyph$features;\n    var glyph = _step54.value;\n    glyph.features = (_glyph$features = {}, _glyph$features[feature] = true, _glyph$features);\n  }\n  var GSUB = glyphs[0]._font._layoutEngine.engine.GSUBProcessor;\n  GSUB.applyFeatures([feature], glyphs);\n  return glyphs.length === 1;\n}\nfunction consonantPosition(font, consonant, virama) {\n  var glyphs = [virama, consonant, virama];\n  if (wouldSubstitute(glyphs.slice(0, 2), 'blwf') || wouldSubstitute(glyphs.slice(1, 3), 'blwf')) {\n    return POSITIONS.Below_C;\n  } else if (wouldSubstitute(glyphs.slice(0, 2), 'pstf') || wouldSubstitute(glyphs.slice(1, 3), 'pstf')) {\n    return POSITIONS.Post_C;\n  } else if (wouldSubstitute(glyphs.slice(0, 2), 'pref') || wouldSubstitute(glyphs.slice(1, 3), 'pref')) {\n    return POSITIONS.Post_C;\n  }\n  return POSITIONS.Base_C;\n}\nfunction initialReordering(font, glyphs, plan) {\n  var indicConfig = plan.indicConfig;\n  var features = font._layoutEngine.engine.GSUBProcessor.features;\n  var dottedCircle = font.glyphForCodePoint(0x25cc).id;\n  var virama = font.glyphForCodePoint(indicConfig.virama).id;\n  if (virama) {\n    var info = new GlyphInfo(font, virama, [indicConfig.virama]);\n    for (var i = 0; i < glyphs.length; i++) {\n      if (glyphs[i].shaperInfo.position === POSITIONS.Base_C) {\n        glyphs[i].shaperInfo.position = consonantPosition(font, glyphs[i].copy(), info);\n      }\n    }\n  }\n  for (var start = 0, end = nextSyllable(glyphs, 0); start < glyphs.length; start = end, end = nextSyllable(glyphs, start)) {\n    var _glyphs$start$shaperI = glyphs[start].shaperInfo,\n      category = _glyphs$start$shaperI.category,\n      syllableType = _glyphs$start$shaperI.syllableType;\n    if (syllableType === 'symbol_cluster' || syllableType === 'non_indic_cluster') {\n      continue;\n    }\n    if (syllableType === 'broken_cluster' && dottedCircle) {\n      var g = new GlyphInfo(font, dottedCircle, [0x25cc]);\n      g.shaperInfo = new IndicInfo(1 << indicCategory(g), indicPosition(g), glyphs[start].shaperInfo.syllableType, glyphs[start].shaperInfo.syllable); // Insert after possible Repha.\n\n      var _i3 = start;\n      while (_i3 < end && glyphs[_i3].shaperInfo.category === CATEGORIES.Repha) {\n        _i3++;\n      }\n      glyphs.splice(_i3++, 0, g);\n      end++;\n    } // 1. Find base consonant:\n    //\n    // The shaping engine finds the base consonant of the syllable, using the\n    // following algorithm: starting from the end of the syllable, move backwards\n    // until a consonant is found that does not have a below-base or post-base\n    // form (post-base forms have to follow below-base forms), or that is not a\n    // pre-base reordering Ra, or arrive at the first consonant. The consonant\n    // stopped at will be the base.\n\n    var base = end;\n    var limit = start;\n    var hasReph = false; // If the syllable starts with Ra + Halant (in a script that has Reph)\n    // and has more than one consonant, Ra is excluded from candidates for\n    // base consonants.\n\n    if (indicConfig.rephPos !== POSITIONS.Ra_To_Become_Reph && features.rphf && start + 3 <= end && (indicConfig.rephMode === 'Implicit' && !isJoiner(glyphs[start + 2]) || indicConfig.rephMode === 'Explicit' && glyphs[start + 2].shaperInfo.category === CATEGORIES.ZWJ)) {\n      // See if it matches the 'rphf' feature.\n      var _g = [glyphs[start].copy(), glyphs[start + 1].copy(), glyphs[start + 2].copy()];\n      if (wouldSubstitute(_g.slice(0, 2), 'rphf') || indicConfig.rephMode === 'Explicit' && wouldSubstitute(_g, 'rphf')) {\n        limit += 2;\n        while (limit < end && isJoiner(glyphs[limit])) {\n          limit++;\n        }\n        base = start;\n        hasReph = true;\n      }\n    } else if (indicConfig.rephMode === 'Log_Repha' && glyphs[start].shaperInfo.category === CATEGORIES.Repha) {\n      limit++;\n      while (limit < end && isJoiner(glyphs[limit])) {\n        limit++;\n      }\n      base = start;\n      hasReph = true;\n    }\n    switch (indicConfig.basePos) {\n      case 'Last':\n        {\n          // starting from the end of the syllable, move backwards\n          var _i4 = end;\n          var seenBelow = false;\n          do {\n            var _info = glyphs[--_i4].shaperInfo; // until a consonant is found\n\n            if (isConsonant(glyphs[_i4])) {\n              // that does not have a below-base or post-base form\n              // (post-base forms have to follow below-base forms),\n              if (_info.position !== POSITIONS.Below_C && (_info.position !== POSITIONS.Post_C || seenBelow)) {\n                base = _i4;\n                break;\n              } // or that is not a pre-base reordering Ra,\n              //\n              // IMPLEMENTATION NOTES:\n              //\n              // Our pre-base reordering Ra's are marked POS_POST_C, so will be skipped\n              // by the logic above already.\n              //\n              // or arrive at the first consonant. The consonant stopped at will\n              // be the base.\n\n              if (_info.position === POSITIONS.Below_C) {\n                seenBelow = true;\n              }\n              base = _i4;\n            } else if (start < _i4 && _info.category === CATEGORIES.ZWJ && glyphs[_i4 - 1].shaperInfo.category === CATEGORIES.H) {\n              // A ZWJ after a Halant stops the base search, and requests an explicit\n              // half form.\n              // A ZWJ before a Halant, requests a subjoined form instead, and hence\n              // search continues.  This is particularly important for Bengali\n              // sequence Ra,H,Ya that should form Ya-Phalaa by subjoining Ya.\n              break;\n            }\n          } while (_i4 > limit);\n          break;\n        }\n      case 'First':\n        {\n          // The first consonant is always the base.\n          base = start; // Mark all subsequent consonants as below.\n\n          for (var _i5 = base + 1; _i5 < end; _i5++) {\n            if (isConsonant(glyphs[_i5])) {\n              glyphs[_i5].shaperInfo.position = POSITIONS.Below_C;\n            }\n          }\n        }\n    } // If the syllable starts with Ra + Halant (in a script that has Reph)\n    // and has more than one consonant, Ra is excluded from candidates for\n    // base consonants.\n    //\n    //  Only do this for unforced Reph. (ie. not for Ra,H,ZWJ)\n\n    if (hasReph && base === start && limit - base <= 2) {\n      hasReph = false;\n    } // 2. Decompose and reorder Matras:\n    //\n    // Each matra and any syllable modifier sign in the cluster are moved to the\n    // appropriate position relative to the consonant(s) in the cluster. The\n    // shaping engine decomposes two- or three-part matras into their constituent\n    // parts before any repositioning. Matra characters are classified by which\n    // consonant in a conjunct they have affinity for and are reordered to the\n    // following positions:\n    //\n    //   o Before first half form in the syllable\n    //   o After subjoined consonants\n    //   o After post-form consonant\n    //   o After main consonant (for above marks)\n    //\n    // IMPLEMENTATION NOTES:\n    //\n    // The normalize() routine has already decomposed matras for us, so we don't\n    // need to worry about that.\n    // 3.  Reorder marks to canonical order:\n    //\n    // Adjacent nukta and halant or nukta and vedic sign are always repositioned\n    // if necessary, so that the nukta is first.\n    //\n    // IMPLEMENTATION NOTES:\n    //\n    // We don't need to do this: the normalize() routine already did this for us.\n    // Reorder characters\n\n    for (var _i6 = start; _i6 < base; _i6++) {\n      var _info2 = glyphs[_i6].shaperInfo;\n      _info2.position = Math.min(POSITIONS.Pre_C, _info2.position);\n    }\n    if (base < end) {\n      glyphs[base].shaperInfo.position = POSITIONS.Base_C;\n    } // Mark final consonants.  A final consonant is one appearing after a matra,\n    // like in Khmer.\n\n    for (var _i7 = base + 1; _i7 < end; _i7++) {\n      if (glyphs[_i7].shaperInfo.category === CATEGORIES.M) {\n        for (var j = _i7 + 1; j < end; j++) {\n          if (isConsonant(glyphs[j])) {\n            glyphs[j].shaperInfo.position = POSITIONS.Final_C;\n            break;\n          }\n        }\n        break;\n      }\n    } // Handle beginning Ra\n\n    if (hasReph) {\n      glyphs[start].shaperInfo.position = POSITIONS.Ra_To_Become_Reph;\n    } // For old-style Indic script tags, move the first post-base Halant after\n    // last consonant.\n    //\n    // Reports suggest that in some scripts Uniscribe does this only if there\n    // is *not* a Halant after last consonant already (eg. Kannada), while it\n    // does it unconditionally in other scripts (eg. Malayalam).  We don't\n    // currently know about other scripts, so we single out Malayalam for now.\n    //\n    // Kannada test case:\n    // U+0C9A,U+0CCD,U+0C9A,U+0CCD\n    // With some versions of Lohit Kannada.\n    // https://bugs.freedesktop.org/show_bug.cgi?id=59118\n    //\n    // Malayalam test case:\n    // U+0D38,U+0D4D,U+0D31,U+0D4D,U+0D31,U+0D4D\n    // With lohit-ttf-20121122/Lohit-Malayalam.ttf\n\n    if (plan.isOldSpec) {\n      var disallowDoubleHalants = plan.unicodeScript !== 'Malayalam';\n      for (var _i8 = base + 1; _i8 < end; _i8++) {\n        if (glyphs[_i8].shaperInfo.category === CATEGORIES.H) {\n          var _j = void 0;\n          for (_j = end - 1; _j > _i8; _j--) {\n            if (isConsonant(glyphs[_j]) || disallowDoubleHalants && glyphs[_j].shaperInfo.category === CATEGORIES.H) {\n              break;\n            }\n          }\n          if (glyphs[_j].shaperInfo.category !== CATEGORIES.H && _j > _i8) {\n            // Move Halant to after last consonant.\n            var t = glyphs[_i8];\n            glyphs.splice.apply(glyphs, [_i8, 0].concat(glyphs.splice(_i8 + 1, _j - _i8)));\n            glyphs[_j] = t;\n          }\n          break;\n        }\n      }\n    } // Attach misc marks to previous char to move with them.\n\n    var lastPos = POSITIONS.Start;\n    for (var _i9 = start; _i9 < end; _i9++) {\n      var _info3 = glyphs[_i9].shaperInfo;\n      if (_info3.category & (JOINER_FLAGS | CATEGORIES.N | CATEGORIES.RS | CATEGORIES.CM | HALANT_OR_COENG_FLAGS & _info3.category)) {\n        _info3.position = lastPos;\n        if (_info3.category === CATEGORIES.H && _info3.position === POSITIONS.Pre_M) {\n          // Uniscribe doesn't move the Halant with Left Matra.\n          // TEST: U+092B,U+093F,U+094DE\n          // We follow.  This is important for the Sinhala\n          // U+0DDA split matra since it decomposes to U+0DD9,U+0DCA\n          // where U+0DD9 is a left matra and U+0DCA is the virama.\n          // We don't want to move the virama with the left matra.\n          // TEST: U+0D9A,U+0DDA\n          for (var _j2 = _i9; _j2 > start; _j2--) {\n            if (glyphs[_j2 - 1].shaperInfo.position !== POSITIONS.Pre_M) {\n              _info3.position = glyphs[_j2 - 1].shaperInfo.position;\n              break;\n            }\n          }\n        }\n      } else if (_info3.position !== POSITIONS.SMVD) {\n        lastPos = _info3.position;\n      }\n    } // For post-base consonants let them own anything before them\n    // since the last consonant or matra.\n\n    var last = base;\n    for (var _i10 = base + 1; _i10 < end; _i10++) {\n      if (isConsonant(glyphs[_i10])) {\n        for (var _j3 = last + 1; _j3 < _i10; _j3++) {\n          if (glyphs[_j3].shaperInfo.position < POSITIONS.SMVD) {\n            glyphs[_j3].shaperInfo.position = glyphs[_i10].shaperInfo.position;\n          }\n        }\n        last = _i10;\n      } else if (glyphs[_i10].shaperInfo.category === CATEGORIES.M) {\n        last = _i10;\n      }\n    }\n    var arr = glyphs.slice(start, end);\n    arr.sort(function (a, b) {\n      return a.shaperInfo.position - b.shaperInfo.position;\n    });\n    glyphs.splice.apply(glyphs, [start, arr.length].concat(arr)); // Find base again\n\n    for (var _i11 = start; _i11 < end; _i11++) {\n      if (glyphs[_i11].shaperInfo.position === POSITIONS.Base_C) {\n        base = _i11;\n        break;\n      }\n    } // Setup features now\n    // Reph\n\n    for (var _i12 = start; _i12 < end && glyphs[_i12].shaperInfo.position === POSITIONS.Ra_To_Become_Reph; _i12++) {\n      glyphs[_i12].features.rphf = true;\n    } // Pre-base\n\n    var blwf = !plan.isOldSpec && indicConfig.blwfMode === 'Pre_And_Post';\n    for (var _i13 = start; _i13 < base; _i13++) {\n      glyphs[_i13].features.half = true;\n      if (blwf) {\n        glyphs[_i13].features.blwf = true;\n      }\n    } // Post-base\n\n    for (var _i14 = base + 1; _i14 < end; _i14++) {\n      glyphs[_i14].features.abvf = true;\n      glyphs[_i14].features.pstf = true;\n      glyphs[_i14].features.blwf = true;\n    }\n    if (plan.isOldSpec && plan.unicodeScript === 'Devanagari') {\n      // Old-spec eye-lash Ra needs special handling.  From the\n      // spec:\n      //\n      // \"The feature 'below-base form' is applied to consonants\n      // having below-base forms and following the base consonant.\n      // The exception is vattu, which may appear below half forms\n      // as well as below the base glyph. The feature 'below-base\n      // form' will be applied to all such occurrences of Ra as well.\"\n      //\n      // Test case: U+0924,U+094D,U+0930,U+094d,U+0915\n      // with Sanskrit 2003 font.\n      //\n      // However, note that Ra,Halant,ZWJ is the correct way to\n      // request eyelash form of Ra, so we wouldbn't inhibit it\n      // in that sequence.\n      //\n      // Test case: U+0924,U+094D,U+0930,U+094d,U+200D,U+0915\n      for (var _i15 = start; _i15 + 1 < base; _i15++) {\n        if (glyphs[_i15].shaperInfo.category === CATEGORIES.Ra && glyphs[_i15 + 1].shaperInfo.category === CATEGORIES.H && (_i15 + 1 === base || glyphs[_i15 + 2].shaperInfo.category === CATEGORIES.ZWJ)) {\n          glyphs[_i15].features.blwf = true;\n          glyphs[_i15 + 1].features.blwf = true;\n        }\n      }\n    }\n    var prefLen = 2;\n    if (features.pref && base + prefLen < end) {\n      // Find a Halant,Ra sequence and mark it for pre-base reordering processing.\n      for (var _i16 = base + 1; _i16 + prefLen - 1 < end; _i16++) {\n        var _g2 = [glyphs[_i16].copy(), glyphs[_i16 + 1].copy()];\n        if (wouldSubstitute(_g2, 'pref')) {\n          for (var _j4 = 0; _j4 < prefLen; _j4++) {\n            glyphs[_i16++].features.pref = true;\n          } // Mark the subsequent stuff with 'cfar'.  Used in Khmer.\n          // Read the feature spec.\n          // This allows distinguishing the following cases with MS Khmer fonts:\n          // U+1784,U+17D2,U+179A,U+17D2,U+1782\n          // U+1784,U+17D2,U+1782,U+17D2,U+179A\n\n          if (features.cfar) {\n            for (; _i16 < end; _i16++) {\n              glyphs[_i16].features.cfar = true;\n            }\n          }\n          break;\n        }\n      }\n    } // Apply ZWJ/ZWNJ effects\n\n    for (var _i17 = start + 1; _i17 < end; _i17++) {\n      if (isJoiner(glyphs[_i17])) {\n        var nonJoiner = glyphs[_i17].shaperInfo.category === CATEGORIES.ZWNJ;\n        var _j5 = _i17;\n        do {\n          _j5--; // ZWJ/ZWNJ should disable CJCT.  They do that by simply\n          // being there, since we don't skip them for the CJCT\n          // feature (ie. F_MANUAL_ZWJ)\n          // A ZWNJ disables HALF.\n\n          if (nonJoiner) {\n            delete glyphs[_j5].features.half;\n          }\n        } while (_j5 > start && !isConsonant(glyphs[_j5]));\n      }\n    }\n  }\n}\nfunction finalReordering(font, glyphs, plan) {\n  var indicConfig = plan.indicConfig;\n  var features = font._layoutEngine.engine.GSUBProcessor.features;\n  for (var start = 0, end = nextSyllable(glyphs, 0); start < glyphs.length; start = end, end = nextSyllable(glyphs, start)) {\n    // 4. Final reordering:\n    //\n    // After the localized forms and basic shaping forms GSUB features have been\n    // applied (see below), the shaping engine performs some final glyph\n    // reordering before applying all the remaining font features to the entire\n    // cluster.\n    var tryPref = !!features.pref; // Find base again\n\n    var base = start;\n    for (; base < end; base++) {\n      if (glyphs[base].shaperInfo.position >= POSITIONS.Base_C) {\n        if (tryPref && base + 1 < end) {\n          for (var i = base + 1; i < end; i++) {\n            if (glyphs[i].features.pref) {\n              if (!(glyphs[i].substituted && glyphs[i].isLigated && !glyphs[i].isMultiplied)) {\n                // Ok, this was a 'pref' candidate but didn't form any.\n                // Base is around here...\n                base = i;\n                while (base < end && isHalantOrCoeng(glyphs[base])) {\n                  base++;\n                }\n                glyphs[base].shaperInfo.position = POSITIONS.BASE_C;\n                tryPref = false;\n              }\n              break;\n            }\n          }\n        } // For Malayalam, skip over unformed below- (but NOT post-) forms.\n\n        if (plan.unicodeScript === 'Malayalam') {\n          for (var _i18 = base + 1; _i18 < end; _i18++) {\n            while (_i18 < end && isJoiner(glyphs[_i18])) {\n              _i18++;\n            }\n            if (_i18 === end || !isHalantOrCoeng(glyphs[_i18])) {\n              break;\n            }\n            _i18++; // Skip halant.\n\n            while (_i18 < end && isJoiner(glyphs[_i18])) {\n              _i18++;\n            }\n            if (_i18 < end && isConsonant(glyphs[_i18]) && glyphs[_i18].shaperInfo.position === POSITIONS.Below_C) {\n              base = _i18;\n              glyphs[base].shaperInfo.position = POSITIONS.Base_C;\n            }\n          }\n        }\n        if (start < base && glyphs[base].shaperInfo.position > POSITIONS.Base_C) {\n          base--;\n        }\n        break;\n      }\n    }\n    if (base === end && start < base && glyphs[base - 1].shaperInfo.category === CATEGORIES.ZWJ) {\n      base--;\n    }\n    if (base < end) {\n      while (start < base && glyphs[base].shaperInfo.category & (CATEGORIES.N | HALANT_OR_COENG_FLAGS)) {\n        base--;\n      }\n    } // o Reorder matras:\n    //\n    // If a pre-base matra character had been reordered before applying basic\n    // features, the glyph can be moved closer to the main consonant based on\n    // whether half-forms had been formed. Actual position for the matra is\n    // defined as “after last standalone halant glyph, after initial matra\n    // position and before the main consonant”. If ZWJ or ZWNJ follow this\n    // halant, position is moved after it.\n    //\n\n    if (start + 1 < end && start < base) {\n      // Otherwise there can't be any pre-base matra characters.\n      // If we lost track of base, alas, position before last thingy.\n      var newPos = base === end ? base - 2 : base - 1; // Malayalam / Tamil do not have \"half\" forms or explicit virama forms.\n      // The glyphs formed by 'half' are Chillus or ligated explicit viramas.\n      // We want to position matra after them.\n\n      if (plan.unicodeScript !== 'Malayalam' && plan.unicodeScript !== 'Tamil') {\n        while (newPos > start && !(glyphs[newPos].shaperInfo.category & (CATEGORIES.M | HALANT_OR_COENG_FLAGS))) {\n          newPos--;\n        } // If we found no Halant we are done.\n        // Otherwise only proceed if the Halant does\n        // not belong to the Matra itself!\n\n        if (isHalantOrCoeng(glyphs[newPos]) && glyphs[newPos].shaperInfo.position !== POSITIONS.Pre_M) {\n          // If ZWJ or ZWNJ follow this halant, position is moved after it.\n          if (newPos + 1 < end && isJoiner(glyphs[newPos + 1])) {\n            newPos++;\n          }\n        } else {\n          newPos = start; // No move.\n        }\n      }\n\n      if (start < newPos && glyphs[newPos].shaperInfo.position !== POSITIONS.Pre_M) {\n        // Now go see if there's actually any matras...\n        for (var _i19 = newPos; _i19 > start; _i19--) {\n          if (glyphs[_i19 - 1].shaperInfo.position === POSITIONS.Pre_M) {\n            var oldPos = _i19 - 1;\n            if (oldPos < base && base <= newPos) {\n              // Shouldn't actually happen.\n              base--;\n            }\n            var tmp = glyphs[oldPos];\n            glyphs.splice.apply(glyphs, [oldPos, 0].concat(glyphs.splice(oldPos + 1, newPos - oldPos)));\n            glyphs[newPos] = tmp;\n            newPos--;\n          }\n        }\n      }\n    } // o Reorder reph:\n    //\n    // Reph’s original position is always at the beginning of the syllable,\n    // (i.e. it is not reordered at the character reordering stage). However,\n    // it will be reordered according to the basic-forms shaping results.\n    // Possible positions for reph, depending on the script, are; after main,\n    // before post-base consonant forms, and after post-base consonant forms.\n    // Two cases:\n    //\n    // - If repha is encoded as a sequence of characters (Ra,H or Ra,H,ZWJ), then\n    //   we should only move it if the sequence ligated to the repha form.\n    //\n    // - If repha is encoded separately and in the logical position, we should only\n    //   move it if it did NOT ligate.  If it ligated, it's probably the font trying\n    //   to make it work without the reordering.\n\n    if (start + 1 < end && glyphs[start].shaperInfo.position === POSITIONS.Ra_To_Become_Reph && glyphs[start].shaperInfo.category === CATEGORIES.Repha !== (glyphs[start].isLigated && !glyphs[start].isMultiplied)) {\n      var newRephPos = void 0;\n      var rephPos = indicConfig.rephPos;\n      var found = false; // 1. If reph should be positioned after post-base consonant forms,\n      //    proceed to step 5.\n\n      if (rephPos !== POSITIONS.After_Post) {\n        //  2. If the reph repositioning class is not after post-base: target\n        //     position is after the first explicit halant glyph between the\n        //     first post-reph consonant and last main consonant. If ZWJ or ZWNJ\n        //     are following this halant, position is moved after it. If such\n        //     position is found, this is the target position. Otherwise,\n        //     proceed to the next step.\n        //\n        //     Note: in old-implementation fonts, where classifications were\n        //     fixed in shaping engine, there was no case where reph position\n        //     will be found on this step.\n        newRephPos = start + 1;\n        while (newRephPos < base && !isHalantOrCoeng(glyphs[newRephPos])) {\n          newRephPos++;\n        }\n        if (newRephPos < base && isHalantOrCoeng(glyphs[newRephPos])) {\n          // ->If ZWJ or ZWNJ are following this halant, position is moved after it.\n          if (newRephPos + 1 < base && isJoiner(glyphs[newRephPos + 1])) {\n            newRephPos++;\n          }\n          found = true;\n        } // 3. If reph should be repositioned after the main consonant: find the\n        //    first consonant not ligated with main, or find the first\n        //    consonant that is not a potential pre-base reordering Ra.\n\n        if (!found && rephPos === POSITIONS.After_Main) {\n          newRephPos = base;\n          while (newRephPos + 1 < end && glyphs[newRephPos + 1].shaperInfo.position <= POSITIONS.After_Main) {\n            newRephPos++;\n          }\n          found = newRephPos < end;\n        } // 4. If reph should be positioned before post-base consonant, find\n        //    first post-base classified consonant not ligated with main. If no\n        //    consonant is found, the target position should be before the\n        //    first matra, syllable modifier sign or vedic sign.\n        //\n        // This is our take on what step 4 is trying to say (and failing, BADLY).\n\n        if (!found && rephPos === POSITIONS.After_Sub) {\n          newRephPos = base;\n          while (newRephPos + 1 < end && !(glyphs[newRephPos + 1].shaperInfo.position & (POSITIONS.Post_C | POSITIONS.After_Post | POSITIONS.SMVD))) {\n            newRephPos++;\n          }\n          found = newRephPos < end;\n        }\n      } //  5. If no consonant is found in steps 3 or 4, move reph to a position\n      //     immediately before the first post-base matra, syllable modifier\n      //     sign or vedic sign that has a reordering class after the intended\n      //     reph position. For example, if the reordering position for reph\n      //     is post-main, it will skip above-base matras that also have a\n      //     post-main position.\n\n      if (!found) {\n        // Copied from step 2.\n        newRephPos = start + 1;\n        while (newRephPos < base && !isHalantOrCoeng(glyphs[newRephPos])) {\n          newRephPos++;\n        }\n        if (newRephPos < base && isHalantOrCoeng(glyphs[newRephPos])) {\n          // ->If ZWJ or ZWNJ are following this halant, position is moved after it.\n          if (newRephPos + 1 < base && isJoiner(glyphs[newRephPos + 1])) {\n            newRephPos++;\n          }\n          found = true;\n        }\n      } // 6. Otherwise, reorder reph to the end of the syllable.\n\n      if (!found) {\n        newRephPos = end - 1;\n        while (newRephPos > start && glyphs[newRephPos].shaperInfo.position === POSITIONS.SMVD) {\n          newRephPos--;\n        } // If the Reph is to be ending up after a Matra,Halant sequence,\n        // position it before that Halant so it can interact with the Matra.\n        // However, if it's a plain Consonant,Halant we shouldn't do that.\n        // Uniscribe doesn't do this.\n        // TEST: U+0930,U+094D,U+0915,U+094B,U+094D\n\n        if (isHalantOrCoeng(glyphs[newRephPos])) {\n          for (var _i20 = base + 1; _i20 < newRephPos; _i20++) {\n            if (glyphs[_i20].shaperInfo.category === CATEGORIES.M) {\n              newRephPos--;\n            }\n          }\n        }\n      }\n      var reph = glyphs[start];\n      glyphs.splice.apply(glyphs, [start, 0].concat(glyphs.splice(start + 1, newRephPos - start)));\n      glyphs[newRephPos] = reph;\n      if (start < base && base <= newRephPos) {\n        base--;\n      }\n    } // o Reorder pre-base reordering consonants:\n    //\n    // If a pre-base reordering consonant is found, reorder it according to\n    // the following rules:\n\n    if (tryPref && base + 1 < end) {\n      for (var _i21 = base + 1; _i21 < end; _i21++) {\n        if (glyphs[_i21].features.pref) {\n          // 1. Only reorder a glyph produced by substitution during application\n          //    of the <pref> feature. (Note that a font may shape a Ra consonant with\n          //    the feature generally but block it in certain contexts.)\n          // Note: We just check that something got substituted.  We don't check that\n          // the <pref> feature actually did it...\n          //\n          // Reorder pref only if it ligated.\n          if (glyphs[_i21].isLigated && !glyphs[_i21].isMultiplied) {\n            // 2. Try to find a target position the same way as for pre-base matra.\n            //    If it is found, reorder pre-base consonant glyph.\n            //\n            // 3. If position is not found, reorder immediately before main\n            //    consonant.\n            var _newPos = base; // Malayalam / Tamil do not have \"half\" forms or explicit virama forms.\n            // The glyphs formed by 'half' are Chillus or ligated explicit viramas.\n            // We want to position matra after them.\n\n            if (plan.unicodeScript !== 'Malayalam' && plan.unicodeScript !== 'Tamil') {\n              while (_newPos > start && !(glyphs[_newPos - 1].shaperInfo.category & (CATEGORIES.M | HALANT_OR_COENG_FLAGS))) {\n                _newPos--;\n              } // In Khmer coeng model, a H,Ra can go *after* matras.  If it goes after a\n              // split matra, it should be reordered to *before* the left part of such matra.\n\n              if (_newPos > start && glyphs[_newPos - 1].shaperInfo.category === CATEGORIES.M) {\n                var _oldPos2 = _i21;\n                for (var j = base + 1; j < _oldPos2; j++) {\n                  if (glyphs[j].shaperInfo.category === CATEGORIES.M) {\n                    _newPos--;\n                    break;\n                  }\n                }\n              }\n            }\n            if (_newPos > start && isHalantOrCoeng(glyphs[_newPos - 1])) {\n              // -> If ZWJ or ZWNJ follow this halant, position is moved after it.\n              if (_newPos < end && isJoiner(glyphs[_newPos])) {\n                _newPos++;\n              }\n            }\n            var _oldPos = _i21;\n            var _tmp = glyphs[_oldPos];\n            glyphs.splice.apply(glyphs, [_newPos + 1, 0].concat(glyphs.splice(_newPos, _oldPos - _newPos)));\n            glyphs[_newPos] = _tmp;\n            if (_newPos <= base && base < _oldPos) {\n              base++;\n            }\n          }\n          break;\n        }\n      }\n    } // Apply 'init' to the Left Matra if it's a word start.\n\n    if (glyphs[start].shaperInfo.position === POSITIONS.Pre_M && (!start || !/Cf|Mn/.test(unicode.getCategory(glyphs[start - 1].codePoints[0])))) {\n      glyphs[start].features.init = true;\n    }\n  }\n}\nfunction nextSyllable(glyphs, start) {\n  if (start >= glyphs.length) return start;\n  var syllable = glyphs[start].shaperInfo.syllable;\n  while (++start < glyphs.length && glyphs[start].shaperInfo.syllable === syllable) {}\n  return start;\n}\nvar categories$1 = useData.categories,\n  decompositions$2 = useData.decompositions;\nvar trie$2 = new UnicodeTrie(Buffer(\"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\",\"base64\"));\nvar stateMachine$1 = new StateMachine(useData);\n/**\r\n * This shaper is an implementation of the Universal Shaping Engine, which\r\n * uses Unicode data to shape a number of scripts without a dedicated shaping engine.\r\n * See https://www.microsoft.com/typography/OpenTypeDev/USE/intro.htm.\r\n */\nvar UniversalShaper = /*#__PURE__*/function (_DefaultShaper4) {\n  _inheritsLoose(UniversalShaper, _DefaultShaper4);\n  function UniversalShaper() {\n    return _DefaultShaper4.apply(this, arguments) || this;\n  }\n  UniversalShaper.planFeatures = function planFeatures(plan) {\n    plan.addStage(setupSyllables$1); // Default glyph pre-processing group\n\n    plan.addStage(['locl', 'ccmp', 'nukt', 'akhn']); // Reordering group\n\n    plan.addStage(clearSubstitutionFlags);\n    plan.addStage(['rphf'], false);\n    plan.addStage(recordRphf);\n    plan.addStage(clearSubstitutionFlags);\n    plan.addStage(['pref']);\n    plan.addStage(recordPref); // Orthographic unit shaping group\n\n    plan.addStage(['rkrf', 'abvf', 'blwf', 'half', 'pstf', 'vatu', 'cjct']);\n    plan.addStage(reorder); // Topographical features\n    // Scripts that need this are handled by the Arabic shaper, not implemented here for now.\n    // plan.addStage(['isol', 'init', 'medi', 'fina', 'med2', 'fin2', 'fin3'], false);\n    // Standard topographic presentation and positional feature application\n\n    plan.addStage(['abvs', 'blws', 'pres', 'psts', 'dist', 'abvm', 'blwm']);\n  };\n  UniversalShaper.assignFeatures = function assignFeatures(plan, glyphs) {\n    var _loop = function _loop(i) {\n      var codepoint = glyphs[i].codePoints[0];\n      if (decompositions$2[codepoint]) {\n        var decomposed = decompositions$2[codepoint].map(function (c) {\n          var g = plan.font.glyphForCodePoint(c);\n          return new GlyphInfo(plan.font, g.id, [c], glyphs[i].features);\n        });\n        glyphs.splice.apply(glyphs, [i, 1].concat(decomposed));\n      }\n    };\n\n    // Decompose split vowels\n    // TODO: do this in a more general unicode normalizer\n    for (var i = glyphs.length - 1; i >= 0; i--) {\n      _loop(i);\n    }\n  };\n  return UniversalShaper;\n}(DefaultShaper);\n_defineProperty(UniversalShaper, \"zeroMarkWidths\", 'BEFORE_GPOS');\nfunction useCategory(glyph) {\n  return trie$2.get(glyph.codePoints[0]);\n}\nvar USEInfo = function USEInfo(category, syllableType, syllable) {\n  this.category = category;\n  this.syllableType = syllableType;\n  this.syllable = syllable;\n};\nfunction setupSyllables$1(font, glyphs) {\n  var syllable = 0;\n  for (var _iterator55 = _createForOfIteratorHelperLoose(stateMachine$1.match(glyphs.map(useCategory))), _step55; !(_step55 = _iterator55()).done;) {\n    var _step55$value = _step55.value,\n      start = _step55$value[0],\n      end = _step55$value[1],\n      tags = _step55$value[2];\n    ++syllable; // Create shaper info\n\n    for (var i = start; i <= end; i++) {\n      glyphs[i].shaperInfo = new USEInfo(categories$1[useCategory(glyphs[i])], tags[0], syllable);\n    } // Assign rphf feature\n\n    var limit = glyphs[start].shaperInfo.category === 'R' ? 1 : Math.min(3, end - start);\n    for (var _i = start; _i < start + limit; _i++) {\n      glyphs[_i].features.rphf = true;\n    }\n  }\n}\nfunction clearSubstitutionFlags(font, glyphs) {\n  for (var _iterator56 = _createForOfIteratorHelperLoose(glyphs), _step56; !(_step56 = _iterator56()).done;) {\n    var glyph = _step56.value;\n    glyph.substituted = false;\n  }\n}\nfunction recordRphf(font, glyphs) {\n  for (var _iterator57 = _createForOfIteratorHelperLoose(glyphs), _step57; !(_step57 = _iterator57()).done;) {\n    var glyph = _step57.value;\n    if (glyph.substituted && glyph.features.rphf) {\n      // Mark a substituted repha.\n      glyph.shaperInfo.category = 'R';\n    }\n  }\n}\nfunction recordPref(font, glyphs) {\n  for (var _iterator58 = _createForOfIteratorHelperLoose(glyphs), _step58; !(_step58 = _iterator58()).done;) {\n    var glyph = _step58.value;\n    if (glyph.substituted) {\n      // Mark a substituted pref as VPre, as they behave the same way.\n      glyph.shaperInfo.category = 'VPre';\n    }\n  }\n}\nfunction reorder(font, glyphs) {\n  var dottedCircle = font.glyphForCodePoint(0x25cc).id;\n  for (var start = 0, end = nextSyllable$1(glyphs, 0); start < glyphs.length; start = end, end = nextSyllable$1(glyphs, start)) {\n    var i = void 0,\n      j = void 0;\n    var info = glyphs[start].shaperInfo;\n    var type = info.syllableType; // Only a few syllable types need reordering.\n\n    if (type !== 'virama_terminated_cluster' && type !== 'standard_cluster' && type !== 'broken_cluster') {\n      continue;\n    } // Insert a dotted circle glyph in broken clusters.\n\n    if (type === 'broken_cluster' && dottedCircle) {\n      var g = new GlyphInfo(font, dottedCircle, [0x25cc]);\n      g.shaperInfo = info; // Insert after possible Repha.\n\n      for (i = start; i < end && glyphs[i].shaperInfo.category === 'R'; i++) {}\n      glyphs.splice(++i, 0, g);\n      end++;\n    } // Move things forward.\n\n    if (info.category === 'R' && end - start > 1) {\n      // Got a repha. Reorder it to after first base, before first halant.\n      for (i = start + 1; i < end; i++) {\n        info = glyphs[i].shaperInfo;\n        if (isBase(info) || isHalant(glyphs[i])) {\n          // If we hit a halant, move before it; otherwise it's a base: move to it's\n          // place, and shift things in between backward.\n          if (isHalant(glyphs[i])) {\n            i--;\n          }\n          glyphs.splice.apply(glyphs, [start, 0].concat(glyphs.splice(start + 1, i - start), [glyphs[i]]));\n          break;\n        }\n      }\n    } // Move things back.\n\n    for (i = start, j = end; i < end; i++) {\n      info = glyphs[i].shaperInfo;\n      if (isBase(info) || isHalant(glyphs[i])) {\n        // If we hit a halant, move after it; otherwise it's a base: move to it's\n        // place, and shift things in between backward.\n        j = isHalant(glyphs[i]) ? i + 1 : i;\n      } else if ((info.category === 'VPre' || info.category === 'VMPre') && j < i) {\n        glyphs.splice.apply(glyphs, [j, 1, glyphs[i]].concat(glyphs.splice(j, i - j)));\n      }\n    }\n  }\n}\nfunction nextSyllable$1(glyphs, start) {\n  if (start >= glyphs.length) return start;\n  var syllable = glyphs[start].shaperInfo.syllable;\n  while (++start < glyphs.length && glyphs[start].shaperInfo.syllable === syllable) {}\n  return start;\n}\nfunction isHalant(glyph) {\n  return glyph.shaperInfo.category === 'H' && !glyph.isLigated;\n}\nfunction isBase(info) {\n  return info.category === 'B' || info.category === 'GB';\n}\nvar SHAPERS = {\n  arab: ArabicShaper,\n  // Arabic\n  mong: ArabicShaper,\n  // Mongolian\n  syrc: ArabicShaper,\n  // Syriac\n  'nko ': ArabicShaper,\n  // N'Ko\n  phag: ArabicShaper,\n  // Phags Pa\n  mand: ArabicShaper,\n  // Mandaic\n  mani: ArabicShaper,\n  // Manichaean\n  phlp: ArabicShaper,\n  // Psalter Pahlavi\n  hang: HangulShaper,\n  // Hangul\n  bng2: IndicShaper,\n  // Bengali\n  beng: IndicShaper,\n  // Bengali\n  dev2: IndicShaper,\n  // Devanagari\n  deva: IndicShaper,\n  // Devanagari\n  gjr2: IndicShaper,\n  // Gujarati\n  gujr: IndicShaper,\n  // Gujarati\n  guru: IndicShaper,\n  // Gurmukhi\n  gur2: IndicShaper,\n  // Gurmukhi\n  knda: IndicShaper,\n  // Kannada\n  knd2: IndicShaper,\n  // Kannada\n  mlm2: IndicShaper,\n  // Malayalam\n  mlym: IndicShaper,\n  // Malayalam\n  ory2: IndicShaper,\n  // Oriya\n  orya: IndicShaper,\n  // Oriya\n  taml: IndicShaper,\n  // Tamil\n  tml2: IndicShaper,\n  // Tamil\n  telu: IndicShaper,\n  // Telugu\n  tel2: IndicShaper,\n  // Telugu\n  khmr: IndicShaper,\n  // Khmer\n  bali: UniversalShaper,\n  // Balinese\n  batk: UniversalShaper,\n  // Batak\n  brah: UniversalShaper,\n  // Brahmi\n  bugi: UniversalShaper,\n  // Buginese\n  buhd: UniversalShaper,\n  // Buhid\n  cakm: UniversalShaper,\n  // Chakma\n  cham: UniversalShaper,\n  // Cham\n  dupl: UniversalShaper,\n  // Duployan\n  egyp: UniversalShaper,\n  // Egyptian Hieroglyphs\n  gran: UniversalShaper,\n  // Grantha\n  hano: UniversalShaper,\n  // Hanunoo\n  java: UniversalShaper,\n  // Javanese\n  kthi: UniversalShaper,\n  // Kaithi\n  kali: UniversalShaper,\n  // Kayah Li\n  khar: UniversalShaper,\n  // Kharoshthi\n  khoj: UniversalShaper,\n  // Khojki\n  sind: UniversalShaper,\n  // Khudawadi\n  lepc: UniversalShaper,\n  // Lepcha\n  limb: UniversalShaper,\n  // Limbu\n  mahj: UniversalShaper,\n  // Mahajani\n  // mand: UniversalShaper, // Mandaic\n  // mani: UniversalShaper, // Manichaean\n  mtei: UniversalShaper,\n  // Meitei Mayek\n  modi: UniversalShaper,\n  // Modi\n  // mong: UniversalShaper, // Mongolian\n  // 'nko ': UniversalShaper, // N’Ko\n  hmng: UniversalShaper,\n  // Pahawh Hmong\n  // phag: UniversalShaper, // Phags-pa\n  // phlp: UniversalShaper, // Psalter Pahlavi\n  rjng: UniversalShaper,\n  // Rejang\n  saur: UniversalShaper,\n  // Saurashtra\n  shrd: UniversalShaper,\n  // Sharada\n  sidd: UniversalShaper,\n  // Siddham\n  sinh: UniversalShaper,\n  // Sinhala\n  sund: UniversalShaper,\n  // Sundanese\n  sylo: UniversalShaper,\n  // Syloti Nagri\n  tglg: UniversalShaper,\n  // Tagalog\n  tagb: UniversalShaper,\n  // Tagbanwa\n  tale: UniversalShaper,\n  // Tai Le\n  lana: UniversalShaper,\n  // Tai Tham\n  tavt: UniversalShaper,\n  // Tai Viet\n  takr: UniversalShaper,\n  // Takri\n  tibt: UniversalShaper,\n  // Tibetan\n  tfng: UniversalShaper,\n  // Tifinagh\n  tirh: UniversalShaper,\n  // Tirhuta\n  latn: DefaultShaper,\n  // Latin\n  DFLT: DefaultShaper // Default\n};\n\nfunction choose(script) {\n  if (!Array.isArray(script)) {\n    script = [script];\n  }\n  for (var _iterator59 = _createForOfIteratorHelperLoose(script), _step59; !(_step59 = _iterator59()).done;) {\n    var s = _step59.value;\n    var shaper = SHAPERS[s];\n    if (shaper) {\n      return shaper;\n    }\n  }\n  return DefaultShaper;\n}\nvar GSUBProcessor = /*#__PURE__*/function (_OTProcessor) {\n  _inheritsLoose(GSUBProcessor, _OTProcessor);\n  function GSUBProcessor() {\n    return _OTProcessor.apply(this, arguments) || this;\n  }\n  var _proto27 = GSUBProcessor.prototype;\n  _proto27.applyLookup = function applyLookup(lookupType, table) {\n    var _this7 = this;\n    switch (lookupType) {\n      case 1:\n        {\n          // Single Substitution\n          var index = this.coverageIndex(table.coverage);\n          if (index === -1) {\n            return false;\n          }\n          var glyph = this.glyphIterator.cur;\n          switch (table.version) {\n            case 1:\n              glyph.id = glyph.id + table.deltaGlyphID & 0xffff;\n              break;\n            case 2:\n              glyph.id = table.substitute.get(index);\n              break;\n          }\n          return true;\n        }\n      case 2:\n        {\n          // Multiple Substitution\n          var _index = this.coverageIndex(table.coverage);\n          if (_index !== -1) {\n            var _this$glyphs2;\n            var sequence = table.sequences.get(_index);\n            if (sequence.length === 0) {\n              // If the sequence length is zero, delete the glyph.\n              // The OpenType spec disallows this, but seems like Harfbuzz and Uniscribe allow it.\n              this.glyphs.splice(this.glyphIterator.index, 1);\n              return true;\n            }\n            this.glyphIterator.cur.id = sequence[0];\n            this.glyphIterator.cur.ligatureComponent = 0;\n            var features = this.glyphIterator.cur.features;\n            var curGlyph = this.glyphIterator.cur;\n            var replacement = sequence.slice(1).map(function (gid, i) {\n              var glyph = new GlyphInfo(_this7.font, gid, undefined, features);\n              glyph.shaperInfo = curGlyph.shaperInfo;\n              glyph.isLigated = curGlyph.isLigated;\n              glyph.ligatureComponent = i + 1;\n              glyph.substituted = true;\n              glyph.isMultiplied = true;\n              return glyph;\n            });\n            (_this$glyphs2 = this.glyphs).splice.apply(_this$glyphs2, [this.glyphIterator.index + 1, 0].concat(replacement));\n            return true;\n          }\n          return false;\n        }\n      case 3:\n        {\n          // Alternate Substitution\n          var _index2 = this.coverageIndex(table.coverage);\n          if (_index2 !== -1) {\n            var USER_INDEX = 0; // TODO\n\n            this.glyphIterator.cur.id = table.alternateSet.get(_index2)[USER_INDEX];\n            return true;\n          }\n          return false;\n        }\n      case 4:\n        {\n          // Ligature Substitution\n          var _index3 = this.coverageIndex(table.coverage);\n          if (_index3 === -1) {\n            return false;\n          }\n          for (var _iterator60 = _createForOfIteratorHelperLoose(table.ligatureSets.get(_index3)), _step60; !(_step60 = _iterator60()).done;) {\n            var ligature = _step60.value;\n            var matched = this.sequenceMatchIndices(1, ligature.components);\n            if (!matched) {\n              continue;\n            }\n            var _curGlyph = this.glyphIterator.cur; // Concatenate all of the characters the new ligature will represent\n\n            var characters = _curGlyph.codePoints.slice();\n            for (var _iterator61 = _createForOfIteratorHelperLoose(matched), _step61; !(_step61 = _iterator61()).done;) {\n              var _characters;\n              var _index4 = _step61.value;\n              (_characters = characters).push.apply(_characters, this.glyphs[_index4].codePoints);\n            } // Create the replacement ligature glyph\n\n            var ligatureGlyph = new GlyphInfo(this.font, ligature.glyph, characters, _curGlyph.features);\n            ligatureGlyph.shaperInfo = _curGlyph.shaperInfo;\n            ligatureGlyph.isLigated = true;\n            ligatureGlyph.substituted = true; // From Harfbuzz:\n            // - If it *is* a mark ligature, we don't allocate a new ligature id, and leave\n            //   the ligature to keep its old ligature id.  This will allow it to attach to\n            //   a base ligature in GPOS.  Eg. if the sequence is: LAM,LAM,SHADDA,FATHA,HEH,\n            //   and LAM,LAM,HEH for a ligature, they will leave SHADDA and FATHA with a\n            //   ligature id and component value of 2.  Then if SHADDA,FATHA form a ligature\n            //   later, we don't want them to lose their ligature id/component, otherwise\n            //   GPOS will fail to correctly position the mark ligature on top of the\n            //   LAM,LAM,HEH ligature. See https://bugzilla.gnome.org/show_bug.cgi?id=676343\n            //\n            // - If a ligature is formed of components that some of which are also ligatures\n            //   themselves, and those ligature components had marks attached to *their*\n            //   components, we have to attach the marks to the new ligature component\n            //   positions!  Now *that*'s tricky!  And these marks may be following the\n            //   last component of the whole sequence, so we should loop forward looking\n            //   for them and update them.\n            //\n            //   Eg. the sequence is LAM,LAM,SHADDA,FATHA,HEH, and the font first forms a\n            //   'calt' ligature of LAM,HEH, leaving the SHADDA and FATHA with a ligature\n            //   id and component == 1.  Now, during 'liga', the LAM and the LAM-HEH ligature\n            //   form a LAM-LAM-HEH ligature.  We need to reassign the SHADDA and FATHA to\n            //   the new ligature with a component value of 2.\n            //\n            //   This in fact happened to a font...  See https://bugzilla.gnome.org/show_bug.cgi?id=437633\n\n            var isMarkLigature = _curGlyph.isMark;\n            for (var i = 0; i < matched.length && isMarkLigature; i++) {\n              isMarkLigature = this.glyphs[matched[i]].isMark;\n            }\n            ligatureGlyph.ligatureID = isMarkLigature ? null : this.ligatureID++;\n            var lastLigID = _curGlyph.ligatureID;\n            var lastNumComps = _curGlyph.codePoints.length;\n            var curComps = lastNumComps;\n            var idx = this.glyphIterator.index + 1; // Set ligatureID and ligatureComponent on glyphs that were skipped in the matched sequence.\n            // This allows GPOS to attach marks to the correct ligature components.\n\n            for (var _iterator62 = _createForOfIteratorHelperLoose(matched), _step62; !(_step62 = _iterator62()).done;) {\n              var matchIndex = _step62.value;\n              // Don't assign new ligature components for mark ligatures (see above)\n              if (isMarkLigature) {\n                idx = matchIndex;\n              } else {\n                while (idx < matchIndex) {\n                  var ligatureComponent = curComps - lastNumComps + Math.min(this.glyphs[idx].ligatureComponent || 1, lastNumComps);\n                  this.glyphs[idx].ligatureID = ligatureGlyph.ligatureID;\n                  this.glyphs[idx].ligatureComponent = ligatureComponent;\n                  idx++;\n                }\n              }\n              lastLigID = this.glyphs[idx].ligatureID;\n              lastNumComps = this.glyphs[idx].codePoints.length;\n              curComps += lastNumComps;\n              idx++; // skip base glyph\n            } // Adjust ligature components for any marks following\n\n            if (lastLigID && !isMarkLigature) {\n              for (var _i = idx; _i < this.glyphs.length; _i++) {\n                if (this.glyphs[_i].ligatureID === lastLigID) {\n                  var ligatureComponent = curComps - lastNumComps + Math.min(this.glyphs[_i].ligatureComponent || 1, lastNumComps);\n                  this.glyphs[_i].ligatureComponent = ligatureComponent;\n                } else {\n                  break;\n                }\n              }\n            } // Delete the matched glyphs, and replace the current glyph with the ligature glyph\n\n            for (var _i2 = matched.length - 1; _i2 >= 0; _i2--) {\n              this.glyphs.splice(matched[_i2], 1);\n            }\n            this.glyphs[this.glyphIterator.index] = ligatureGlyph;\n            return true;\n          }\n          return false;\n        }\n      case 5:\n        // Contextual Substitution\n        return this.applyContext(table);\n      case 6:\n        // Chaining Contextual Substitution\n        return this.applyChainingContext(table);\n      case 7:\n        // Extension Substitution\n        return this.applyLookup(table.lookupType, table.extension);\n      default:\n        throw new Error(\"GSUB lookupType \".concat(lookupType, \" is not supported\"));\n    }\n  };\n  return GSUBProcessor;\n}(OTProcessor);\nvar GPOSProcessor = /*#__PURE__*/function (_OTProcessor2) {\n  _inheritsLoose(GPOSProcessor, _OTProcessor2);\n  function GPOSProcessor() {\n    return _OTProcessor2.apply(this, arguments) || this;\n  }\n  var _proto28 = GPOSProcessor.prototype;\n  _proto28.applyPositionValue = function applyPositionValue(sequenceIndex, value) {\n    var position = this.positions[this.glyphIterator.peekIndex(sequenceIndex)];\n    if (value.xAdvance != null) {\n      position.xAdvance += value.xAdvance;\n    }\n    if (value.yAdvance != null) {\n      position.yAdvance += value.yAdvance;\n    }\n    if (value.xPlacement != null) {\n      position.xOffset += value.xPlacement;\n    }\n    if (value.yPlacement != null) {\n      position.yOffset += value.yPlacement;\n    } // Adjustments for font variations\n\n    var variationProcessor = this.font._variationProcessor;\n    var variationStore = this.font.GDEF && this.font.GDEF.itemVariationStore;\n    if (variationProcessor && variationStore) {\n      if (value.xPlaDevice) {\n        position.xOffset += variationProcessor.getDelta(variationStore, value.xPlaDevice.a, value.xPlaDevice.b);\n      }\n      if (value.yPlaDevice) {\n        position.yOffset += variationProcessor.getDelta(variationStore, value.yPlaDevice.a, value.yPlaDevice.b);\n      }\n      if (value.xAdvDevice) {\n        position.xAdvance += variationProcessor.getDelta(variationStore, value.xAdvDevice.a, value.xAdvDevice.b);\n      }\n      if (value.yAdvDevice) {\n        position.yAdvance += variationProcessor.getDelta(variationStore, value.yAdvDevice.a, value.yAdvDevice.b);\n      }\n    } // TODO: device tables\n  };\n  _proto28.applyLookup = function applyLookup(lookupType, table) {\n    switch (lookupType) {\n      case 1:\n        {\n          // Single positioning value\n          var index = this.coverageIndex(table.coverage);\n          if (index === -1) {\n            return false;\n          }\n          switch (table.version) {\n            case 1:\n              this.applyPositionValue(0, table.value);\n              break;\n            case 2:\n              this.applyPositionValue(0, table.values.get(index));\n              break;\n          }\n          return true;\n        }\n      case 2:\n        {\n          // Pair Adjustment Positioning\n          var nextGlyph = this.glyphIterator.peek();\n          if (!nextGlyph) {\n            return false;\n          }\n          var _index = this.coverageIndex(table.coverage);\n          if (_index === -1) {\n            return false;\n          }\n          switch (table.version) {\n            case 1:\n              // Adjustments for glyph pairs\n              var set = table.pairSets.get(_index);\n              for (var _iterator63 = _createForOfIteratorHelperLoose(set), _step63; !(_step63 = _iterator63()).done;) {\n                var _pair = _step63.value;\n                if (_pair.secondGlyph === nextGlyph.id) {\n                  this.applyPositionValue(0, _pair.value1);\n                  this.applyPositionValue(1, _pair.value2);\n                  return true;\n                }\n              }\n              return false;\n            case 2:\n              // Class pair adjustment\n              var class1 = this.getClassID(this.glyphIterator.cur.id, table.classDef1);\n              var class2 = this.getClassID(nextGlyph.id, table.classDef2);\n              if (class1 === -1 || class2 === -1) {\n                return false;\n              }\n              var pair = table.classRecords.get(class1).get(class2);\n              this.applyPositionValue(0, pair.value1);\n              this.applyPositionValue(1, pair.value2);\n              return true;\n          }\n        }\n      case 3:\n        {\n          // Cursive Attachment Positioning\n          var nextIndex = this.glyphIterator.peekIndex();\n          var _nextGlyph = this.glyphs[nextIndex];\n          if (!_nextGlyph) {\n            return false;\n          }\n          var curRecord = table.entryExitRecords[this.coverageIndex(table.coverage)];\n          if (!curRecord || !curRecord.exitAnchor) {\n            return false;\n          }\n          var nextRecord = table.entryExitRecords[this.coverageIndex(table.coverage, _nextGlyph.id)];\n          if (!nextRecord || !nextRecord.entryAnchor) {\n            return false;\n          }\n          var entry = this.getAnchor(nextRecord.entryAnchor);\n          var exit = this.getAnchor(curRecord.exitAnchor);\n          var cur = this.positions[this.glyphIterator.index];\n          var next = this.positions[nextIndex];\n          switch (this.direction) {\n            case 'ltr':\n              cur.xAdvance = exit.x + cur.xOffset;\n              var d = entry.x + next.xOffset;\n              next.xAdvance -= d;\n              next.xOffset -= d;\n              break;\n            case 'rtl':\n              d = exit.x + cur.xOffset;\n              cur.xAdvance -= d;\n              cur.xOffset -= d;\n              next.xAdvance = entry.x + next.xOffset;\n              break;\n          }\n          if (this.glyphIterator.flags.rightToLeft) {\n            this.glyphIterator.cur.cursiveAttachment = nextIndex;\n            cur.yOffset = entry.y - exit.y;\n          } else {\n            _nextGlyph.cursiveAttachment = this.glyphIterator.index;\n            cur.yOffset = exit.y - entry.y;\n          }\n          return true;\n        }\n      case 4:\n        {\n          // Mark to base positioning\n          var markIndex = this.coverageIndex(table.markCoverage);\n          if (markIndex === -1) {\n            return false;\n          } // search backward for a base glyph\n\n          var baseGlyphIndex = this.glyphIterator.index;\n          while (--baseGlyphIndex >= 0 && (this.glyphs[baseGlyphIndex].isMark || this.glyphs[baseGlyphIndex].ligatureComponent > 0)) {}\n          if (baseGlyphIndex < 0) {\n            return false;\n          }\n          var baseIndex = this.coverageIndex(table.baseCoverage, this.glyphs[baseGlyphIndex].id);\n          if (baseIndex === -1) {\n            return false;\n          }\n          var markRecord = table.markArray[markIndex];\n          var baseAnchor = table.baseArray[baseIndex][markRecord.class];\n          this.applyAnchor(markRecord, baseAnchor, baseGlyphIndex);\n          return true;\n        }\n      case 5:\n        {\n          // Mark to ligature positioning\n          var _markIndex = this.coverageIndex(table.markCoverage);\n          if (_markIndex === -1) {\n            return false;\n          } // search backward for a base glyph\n\n          var _baseGlyphIndex = this.glyphIterator.index;\n          while (--_baseGlyphIndex >= 0 && this.glyphs[_baseGlyphIndex].isMark) {}\n          if (_baseGlyphIndex < 0) {\n            return false;\n          }\n          var ligIndex = this.coverageIndex(table.ligatureCoverage, this.glyphs[_baseGlyphIndex].id);\n          if (ligIndex === -1) {\n            return false;\n          }\n          var ligAttach = table.ligatureArray[ligIndex];\n          var markGlyph = this.glyphIterator.cur;\n          var ligGlyph = this.glyphs[_baseGlyphIndex];\n          var compIndex = ligGlyph.ligatureID && ligGlyph.ligatureID === markGlyph.ligatureID && markGlyph.ligatureComponent > 0 ? Math.min(markGlyph.ligatureComponent, ligGlyph.codePoints.length) - 1 : ligGlyph.codePoints.length - 1;\n          var _markRecord = table.markArray[_markIndex];\n          var _baseAnchor = ligAttach[compIndex][_markRecord.class];\n          this.applyAnchor(_markRecord, _baseAnchor, _baseGlyphIndex);\n          return true;\n        }\n      case 6:\n        {\n          // Mark to mark positioning\n          var mark1Index = this.coverageIndex(table.mark1Coverage);\n          if (mark1Index === -1) {\n            return false;\n          } // get the previous mark to attach to\n\n          var prevIndex = this.glyphIterator.peekIndex(-1);\n          var prev = this.glyphs[prevIndex];\n          if (!prev || !prev.isMark) {\n            return false;\n          }\n          var _cur = this.glyphIterator.cur; // The following logic was borrowed from Harfbuzz\n\n          var good = false;\n          if (_cur.ligatureID === prev.ligatureID) {\n            if (!_cur.ligatureID) {\n              // Marks belonging to the same base\n              good = true;\n            } else if (_cur.ligatureComponent === prev.ligatureComponent) {\n              // Marks belonging to the same ligature component\n              good = true;\n            }\n          } else {\n            // If ligature ids don't match, it may be the case that one of the marks\n            // itself is a ligature, in which case match.\n            if (_cur.ligatureID && !_cur.ligatureComponent || prev.ligatureID && !prev.ligatureComponent) {\n              good = true;\n            }\n          }\n          if (!good) {\n            return false;\n          }\n          var mark2Index = this.coverageIndex(table.mark2Coverage, prev.id);\n          if (mark2Index === -1) {\n            return false;\n          }\n          var _markRecord2 = table.mark1Array[mark1Index];\n          var _baseAnchor2 = table.mark2Array[mark2Index][_markRecord2.class];\n          this.applyAnchor(_markRecord2, _baseAnchor2, prevIndex);\n          return true;\n        }\n      case 7:\n        // Contextual positioning\n        return this.applyContext(table);\n      case 8:\n        // Chaining contextual positioning\n        return this.applyChainingContext(table);\n      case 9:\n        // Extension positioning\n        return this.applyLookup(table.lookupType, table.extension);\n      default:\n        throw new Error(\"Unsupported GPOS table: \".concat(lookupType));\n    }\n  };\n  _proto28.applyAnchor = function applyAnchor(markRecord, baseAnchor, baseGlyphIndex) {\n    var baseCoords = this.getAnchor(baseAnchor);\n    var markCoords = this.getAnchor(markRecord.markAnchor);\n    var basePos = this.positions[baseGlyphIndex];\n    var markPos = this.positions[this.glyphIterator.index];\n    markPos.xOffset = baseCoords.x - markCoords.x;\n    markPos.yOffset = baseCoords.y - markCoords.y;\n    this.glyphIterator.cur.markAttachment = baseGlyphIndex;\n  };\n  _proto28.getAnchor = function getAnchor(anchor) {\n    // TODO: contour point, device tables\n    var x = anchor.xCoordinate;\n    var y = anchor.yCoordinate; // Adjustments for font variations\n\n    var variationProcessor = this.font._variationProcessor;\n    var variationStore = this.font.GDEF && this.font.GDEF.itemVariationStore;\n    if (variationProcessor && variationStore) {\n      if (anchor.xDeviceTable) {\n        x += variationProcessor.getDelta(variationStore, anchor.xDeviceTable.a, anchor.xDeviceTable.b);\n      }\n      if (anchor.yDeviceTable) {\n        y += variationProcessor.getDelta(variationStore, anchor.yDeviceTable.a, anchor.yDeviceTable.b);\n      }\n    }\n    return {\n      x: x,\n      y: y\n    };\n  };\n  _proto28.applyFeatures = function applyFeatures(userFeatures, glyphs, advances) {\n    _OTProcessor2.prototype.applyFeatures.call(this, userFeatures, glyphs, advances);\n    for (var i = 0; i < this.glyphs.length; i++) {\n      this.fixCursiveAttachment(i);\n    }\n    this.fixMarkAttachment();\n  };\n  _proto28.fixCursiveAttachment = function fixCursiveAttachment(i) {\n    var glyph = this.glyphs[i];\n    if (glyph.cursiveAttachment != null) {\n      var j = glyph.cursiveAttachment;\n      glyph.cursiveAttachment = null;\n      this.fixCursiveAttachment(j);\n      this.positions[i].yOffset += this.positions[j].yOffset;\n    }\n  };\n  _proto28.fixMarkAttachment = function fixMarkAttachment() {\n    for (var i = 0; i < this.glyphs.length; i++) {\n      var glyph = this.glyphs[i];\n      if (glyph.markAttachment != null) {\n        var j = glyph.markAttachment;\n        this.positions[i].xOffset += this.positions[j].xOffset;\n        this.positions[i].yOffset += this.positions[j].yOffset;\n        if (this.direction === 'ltr') {\n          for (var k = j; k < i; k++) {\n            this.positions[i].xOffset -= this.positions[k].xAdvance;\n            this.positions[i].yOffset -= this.positions[k].yAdvance;\n          }\n        } else {\n          for (var _k = j + 1; _k < i + 1; _k++) {\n            this.positions[i].xOffset += this.positions[_k].xAdvance;\n            this.positions[i].yOffset += this.positions[_k].yAdvance;\n          }\n        }\n      }\n    }\n  };\n  return GPOSProcessor;\n}(OTProcessor);\nvar OTLayoutEngine = /*#__PURE__*/function () {\n  function OTLayoutEngine(font) {\n    this.font = font;\n    this.glyphInfos = null;\n    this.plan = null;\n    this.GSUBProcessor = null;\n    this.GPOSProcessor = null;\n    this.fallbackPosition = true;\n    if (font.GSUB) {\n      this.GSUBProcessor = new GSUBProcessor(font, font.GSUB);\n    }\n    if (font.GPOS) {\n      this.GPOSProcessor = new GPOSProcessor(font, font.GPOS);\n    }\n  }\n  var _proto29 = OTLayoutEngine.prototype;\n  _proto29.setup = function setup(glyphRun) {\n    var _this8 = this;\n    // Map glyphs to GlyphInfo objects so data can be passed between\n    // GSUB and GPOS without mutating the real (shared) Glyph objects.\n    this.glyphInfos = glyphRun.glyphs.map(function (glyph) {\n      return new GlyphInfo(_this8.font, glyph.id, [].concat(glyph.codePoints));\n    }); // Select a script based on what is available in GSUB/GPOS.\n\n    var script = null;\n    if (this.GPOSProcessor) {\n      script = this.GPOSProcessor.selectScript(glyphRun.script, glyphRun.language, glyphRun.direction);\n    }\n    if (this.GSUBProcessor) {\n      script = this.GSUBProcessor.selectScript(glyphRun.script, glyphRun.language, glyphRun.direction);\n    } // Choose a shaper based on the script, and setup a shaping plan.\n    // This determines which features to apply to which glyphs.\n\n    this.shaper = choose(script);\n    this.plan = new ShapingPlan(this.font, script, glyphRun.direction);\n    this.shaper.plan(this.plan, this.glyphInfos, glyphRun.features); // Assign chosen features to output glyph run\n\n    for (var key in this.plan.allFeatures) {\n      glyphRun.features[key] = true;\n    }\n  };\n  _proto29.substitute = function substitute(glyphRun) {\n    var _this9 = this;\n    if (this.GSUBProcessor) {\n      this.plan.process(this.GSUBProcessor, this.glyphInfos); // Map glyph infos back to normal Glyph objects\n\n      glyphRun.glyphs = this.glyphInfos.map(function (glyphInfo) {\n        return _this9.font.getGlyph(glyphInfo.id, glyphInfo.codePoints);\n      });\n    }\n  };\n  _proto29.position = function position(glyphRun) {\n    if (this.shaper.zeroMarkWidths === 'BEFORE_GPOS') {\n      this.zeroMarkAdvances(glyphRun.positions);\n    }\n    if (this.GPOSProcessor) {\n      this.plan.process(this.GPOSProcessor, this.glyphInfos, glyphRun.positions);\n    }\n    if (this.shaper.zeroMarkWidths === 'AFTER_GPOS') {\n      this.zeroMarkAdvances(glyphRun.positions);\n    } // Reverse the glyphs and positions if the script is right-to-left\n\n    if (glyphRun.direction === 'rtl') {\n      glyphRun.glyphs.reverse();\n      glyphRun.positions.reverse();\n    }\n    return this.GPOSProcessor && this.GPOSProcessor.features;\n  };\n  _proto29.zeroMarkAdvances = function zeroMarkAdvances(positions) {\n    for (var i = 0; i < this.glyphInfos.length; i++) {\n      if (this.glyphInfos[i].isMark) {\n        positions[i].xAdvance = 0;\n        positions[i].yAdvance = 0;\n      }\n    }\n  };\n  _proto29.cleanup = function cleanup() {\n    this.glyphInfos = null;\n    this.plan = null;\n    this.shaper = null;\n  };\n  _proto29.getAvailableFeatures = function getAvailableFeatures(script, language) {\n    var features = [];\n    if (this.GSUBProcessor) {\n      this.GSUBProcessor.selectScript(script, language);\n      features.push.apply(features, Object.keys(this.GSUBProcessor.features));\n    }\n    if (this.GPOSProcessor) {\n      this.GPOSProcessor.selectScript(script, language);\n      features.push.apply(features, Object.keys(this.GPOSProcessor.features));\n    }\n    return features;\n  };\n  return OTLayoutEngine;\n}();\nvar LayoutEngine = /*#__PURE__*/function () {\n  function LayoutEngine(font) {\n    this.font = font;\n    this.unicodeLayoutEngine = null;\n    this.kernProcessor = null; // Choose an advanced layout engine. We try the AAT morx table first since more\n    // scripts are currently supported because the shaping logic is built into the font.\n\n    if (this.font.morx) {\n      this.engine = new AATLayoutEngine(this.font);\n    } else if (this.font.GSUB || this.font.GPOS) {\n      this.engine = new OTLayoutEngine(this.font);\n    }\n  }\n  var _proto30 = LayoutEngine.prototype;\n  _proto30.layout = function layout(string, features, script, language, direction) {\n    // Make the features parameter optional\n    if (typeof features === 'string') {\n      direction = language;\n      language = script;\n      script = features;\n      features = [];\n    } // Map string to glyphs if needed\n\n    if (typeof string === 'string') {\n      // Attempt to detect the script from the string if not provided.\n      if (script == null) {\n        script = forString(string);\n      }\n      var glyphs = this.font.glyphsForString(string);\n    } else {\n      // Attempt to detect the script from the glyph code points if not provided.\n      if (script == null) {\n        var codePoints = [];\n        for (var _iterator64 = _createForOfIteratorHelperLoose(string), _step64; !(_step64 = _iterator64()).done;) {\n          var glyph = _step64.value;\n          codePoints.push.apply(codePoints, glyph.codePoints);\n        }\n        script = forCodePoints(codePoints);\n      }\n      var glyphs = string;\n    }\n    var glyphRun = new GlyphRun(glyphs, features, script, language, direction); // Return early if there are no glyphs\n\n    if (glyphs.length === 0) {\n      glyphRun.positions = [];\n      return glyphRun;\n    } // Setup the advanced layout engine\n\n    if (this.engine && this.engine.setup) {\n      this.engine.setup(glyphRun);\n    } // Substitute and position the glyphs\n\n    this.substitute(glyphRun);\n    this.position(glyphRun);\n    this.hideDefaultIgnorables(glyphRun.glyphs, glyphRun.positions); // Let the layout engine clean up any state it might have\n\n    if (this.engine && this.engine.cleanup) {\n      this.engine.cleanup();\n    }\n    return glyphRun;\n  };\n  _proto30.substitute = function substitute(glyphRun) {\n    // Call the advanced layout engine to make substitutions\n    if (this.engine && this.engine.substitute) {\n      this.engine.substitute(glyphRun);\n    }\n  };\n  _proto30.position = function position(glyphRun) {\n    // Get initial glyph positions\n    glyphRun.positions = glyphRun.glyphs.map(function (glyph) {\n      return new GlyphPosition(glyph.advanceWidth);\n    });\n    var positioned = null; // Call the advanced layout engine. Returns the features applied.\n\n    if (this.engine && this.engine.position) {\n      positioned = this.engine.position(glyphRun);\n    } // if there is no GPOS table, use unicode properties to position marks.\n\n    if (!positioned && (!this.engine || this.engine.fallbackPosition)) {\n      if (!this.unicodeLayoutEngine) {\n        this.unicodeLayoutEngine = new UnicodeLayoutEngine(this.font);\n      }\n      this.unicodeLayoutEngine.positionGlyphs(glyphRun.glyphs, glyphRun.positions);\n    } // if kerning is not supported by GPOS, do kerning with the TrueType/AAT kern table\n\n    if ((!positioned || !positioned.kern) && glyphRun.features.kern !== false && this.font.kern) {\n      if (!this.kernProcessor) {\n        this.kernProcessor = new KernProcessor(this.font);\n      }\n      this.kernProcessor.process(glyphRun.glyphs, glyphRun.positions);\n      glyphRun.features.kern = true;\n    }\n  };\n  _proto30.hideDefaultIgnorables = function hideDefaultIgnorables(glyphs, positions) {\n    var space = this.font.glyphForCodePoint(0x20);\n    for (var i = 0; i < glyphs.length; i++) {\n      if (this.isDefaultIgnorable(glyphs[i].codePoints[0])) {\n        glyphs[i] = space;\n        positions[i].xAdvance = 0;\n        positions[i].yAdvance = 0;\n      }\n    }\n  };\n  _proto30.isDefaultIgnorable = function isDefaultIgnorable(ch) {\n    // From DerivedCoreProperties.txt in the Unicode database,\n    // minus U+115F, U+1160, U+3164 and U+FFA0, which is what\n    // Harfbuzz and Uniscribe do.\n    var plane = ch >> 16;\n    if (plane === 0) {\n      // BMP\n      switch (ch >> 8) {\n        case 0x00:\n          return ch === 0x00AD;\n        case 0x03:\n          return ch === 0x034F;\n        case 0x06:\n          return ch === 0x061C;\n        case 0x17:\n          return 0x17B4 <= ch && ch <= 0x17B5;\n        case 0x18:\n          return 0x180B <= ch && ch <= 0x180E;\n        case 0x20:\n          return 0x200B <= ch && ch <= 0x200F || 0x202A <= ch && ch <= 0x202E || 0x2060 <= ch && ch <= 0x206F;\n        case 0xFE:\n          return 0xFE00 <= ch && ch <= 0xFE0F || ch === 0xFEFF;\n        case 0xFF:\n          return 0xFFF0 <= ch && ch <= 0xFFF8;\n        default:\n          return false;\n      }\n    } else {\n      // Other planes\n      switch (plane) {\n        case 0x01:\n          return 0x1BCA0 <= ch && ch <= 0x1BCA3 || 0x1D173 <= ch && ch <= 0x1D17A;\n        case 0x0E:\n          return 0xE0000 <= ch && ch <= 0xE0FFF;\n        default:\n          return false;\n      }\n    }\n  };\n  _proto30.getAvailableFeatures = function getAvailableFeatures(script, language) {\n    var features = [];\n    if (this.engine) {\n      features.push.apply(features, this.engine.getAvailableFeatures(script, language));\n    }\n    if (this.font.kern && features.indexOf('kern') === -1) {\n      features.push('kern');\n    }\n    return features;\n  };\n  _proto30.stringsForGlyph = function stringsForGlyph(gid) {\n    var result = new Set();\n    var codePoints = this.font._cmapProcessor.codePointsForGlyph(gid);\n    for (var _iterator65 = _createForOfIteratorHelperLoose(codePoints), _step65; !(_step65 = _iterator65()).done;) {\n      var codePoint = _step65.value;\n      result.add(String.fromCodePoint(codePoint));\n    }\n    if (this.engine && this.engine.stringsForGlyph) {\n      for (var _iterator66 = _createForOfIteratorHelperLoose(this.engine.stringsForGlyph(gid)), _step66; !(_step66 = _iterator66()).done;) {\n        var string = _step66.value;\n        result.add(string);\n      }\n    }\n    return Array.from(result);\n  };\n  return LayoutEngine;\n}();\nvar SVG_COMMANDS = {\n  moveTo: 'M',\n  lineTo: 'L',\n  quadraticCurveTo: 'Q',\n  bezierCurveTo: 'C',\n  closePath: 'Z'\n};\n/**\r\n * Path objects are returned by glyphs and represent the actual\r\n * vector outlines for each glyph in the font. Paths can be converted\r\n * to SVG path data strings, or to functions that can be applied to\r\n * render the path to a graphics context.\r\n */\nvar Path = /*#__PURE__*/function () {\n  function Path() {\n    this.commands = [];\n    this._bbox = null;\n    this._cbox = null;\n  }\n  /**\r\n   * Compiles the path to a JavaScript function that can be applied with\r\n   * a graphics context in order to render the path.\r\n   * @return {string}\r\n   */\n  var _proto31 = Path.prototype;\n  _proto31.toFunction = function toFunction() {\n    var _this10 = this;\n    return function (ctx) {\n      _this10.commands.forEach(function (c) {\n        return ctx[c.command].apply(ctx, c.args);\n      });\n    };\n  }\n  /**\r\n   * Converts the path to an SVG path data string\r\n   * @return {string}\r\n   */;\n  _proto31.toSVG = function toSVG() {\n    var cmds = this.commands.map(function (c) {\n      var args = c.args.map(function (arg) {\n        return Math.round(arg * 100) / 100;\n      });\n      return \"\".concat(SVG_COMMANDS[c.command]).concat(args.join(' '));\n    });\n    return cmds.join('');\n  }\n  /**\r\n   * Gets the \"control box\" of a path.\r\n   * This is like the bounding box, but it includes all points including\r\n   * control points of bezier segments and is much faster to compute than\r\n   * the real bounding box.\r\n   * @type {BBox}\r\n   */;\n  /**\r\n   * Applies a mapping function to each point in the path.\r\n   * @param {function} fn\r\n   * @return {Path}\r\n   */\n  _proto31.mapPoints = function mapPoints(fn) {\n    var path = new Path();\n    for (var _iterator67 = _createForOfIteratorHelperLoose(this.commands), _step67; !(_step67 = _iterator67()).done;) {\n      var c = _step67.value;\n      var args = [];\n      for (var i = 0; i < c.args.length; i += 2) {\n        var _fn = fn(c.args[i], c.args[i + 1]),\n          x = _fn[0],\n          y = _fn[1];\n        args.push(x, y);\n      }\n      path[c.command].apply(path, args);\n    }\n    return path;\n  }\n  /**\r\n   * Transforms the path by the given matrix.\r\n   */;\n  _proto31.transform = function transform(m0, m1, m2, m3, m4, m5) {\n    return this.mapPoints(function (x, y) {\n      x = m0 * x + m2 * y + m4;\n      y = m1 * x + m3 * y + m5;\n      return [x, y];\n    });\n  }\n  /**\r\n   * Translates the path by the given offset.\r\n   */;\n  _proto31.translate = function translate(x, y) {\n    return this.transform(1, 0, 0, 1, x, y);\n  }\n  /**\r\n   * Rotates the path by the given angle (in radians).\r\n   */;\n  _proto31.rotate = function rotate(angle) {\n    var cos = Math.cos(angle);\n    var sin = Math.sin(angle);\n    return this.transform(cos, sin, -sin, cos, 0, 0);\n  }\n  /**\r\n   * Scales the path.\r\n   */;\n  _proto31.scale = function scale(scaleX, scaleY) {\n    if (scaleY === void 0) {\n      scaleY = scaleX;\n    }\n    return this.transform(scaleX, 0, 0, scaleY, 0, 0);\n  };\n  _createClass(Path, [{\n    key: \"cbox\",\n    get: function get() {\n      if (!this._cbox) {\n        var cbox = new BBox();\n        for (var _iterator68 = _createForOfIteratorHelperLoose(this.commands), _step68; !(_step68 = _iterator68()).done;) {\n          var command = _step68.value;\n          for (var i = 0; i < command.args.length; i += 2) {\n            cbox.addPoint(command.args[i], command.args[i + 1]);\n          }\n        }\n        this._cbox = Object.freeze(cbox);\n      }\n      return this._cbox;\n    }\n    /**\r\n     * Gets the exact bounding box of the path by evaluating curve segments.\r\n     * Slower to compute than the control box, but more accurate.\r\n     * @type {BBox}\r\n     */\n  }, {\n    key: \"bbox\",\n    get: function get() {\n      if (this._bbox) {\n        return this._bbox;\n      }\n      var bbox = new BBox();\n      var cx = 0,\n        cy = 0;\n      var f = function f(t) {\n        return Math.pow(1 - t, 3) * p0[i] + 3 * Math.pow(1 - t, 2) * t * p1[i] + 3 * (1 - t) * Math.pow(t, 2) * p2[i] + Math.pow(t, 3) * p3[i];\n      };\n      for (var _iterator69 = _createForOfIteratorHelperLoose(this.commands), _step69; !(_step69 = _iterator69()).done;) {\n        var c = _step69.value;\n        switch (c.command) {\n          case 'moveTo':\n          case 'lineTo':\n            var _c$args = c.args,\n              x = _c$args[0],\n              y = _c$args[1];\n            bbox.addPoint(x, y);\n            cx = x;\n            cy = y;\n            break;\n          case 'quadraticCurveTo':\n          case 'bezierCurveTo':\n            if (c.command === 'quadraticCurveTo') {\n              // http://fontforge.org/bezier.html\n              var _c$args2 = c.args,\n                qp1x = _c$args2[0],\n                qp1y = _c$args2[1],\n                p3x = _c$args2[2],\n                p3y = _c$args2[3];\n              var cp1x = cx + 2 / 3 * (qp1x - cx); // CP1 = QP0 + 2/3 * (QP1-QP0)\n\n              var cp1y = cy + 2 / 3 * (qp1y - cy);\n              var cp2x = p3x + 2 / 3 * (qp1x - p3x); // CP2 = QP2 + 2/3 * (QP1-QP2)\n\n              var cp2y = p3y + 2 / 3 * (qp1y - p3y);\n            } else {\n              var _c$args3 = c.args,\n                cp1x = _c$args3[0],\n                cp1y = _c$args3[1],\n                cp2x = _c$args3[2],\n                cp2y = _c$args3[3],\n                p3x = _c$args3[4],\n                p3y = _c$args3[5];\n            } // http://blog.hackers-cafe.net/2009/06/how-to-calculate-bezier-curves-bounding.html\n\n            bbox.addPoint(p3x, p3y);\n            var p0 = [cx, cy];\n            var p1 = [cp1x, cp1y];\n            var p2 = [cp2x, cp2y];\n            var p3 = [p3x, p3y];\n            for (var i = 0; i <= 1; i++) {\n              var b = 6 * p0[i] - 12 * p1[i] + 6 * p2[i];\n              var a = -3 * p0[i] + 9 * p1[i] - 9 * p2[i] + 3 * p3[i];\n              c = 3 * p1[i] - 3 * p0[i];\n              if (a === 0) {\n                if (b === 0) {\n                  continue;\n                }\n                var t = -c / b;\n                if (0 < t && t < 1) {\n                  if (i === 0) {\n                    bbox.addPoint(f(t), bbox.maxY);\n                  } else if (i === 1) {\n                    bbox.addPoint(bbox.maxX, f(t));\n                  }\n                }\n                continue;\n              }\n              var b2ac = Math.pow(b, 2) - 4 * c * a;\n              if (b2ac < 0) {\n                continue;\n              }\n              var t1 = (-b + Math.sqrt(b2ac)) / (2 * a);\n              if (0 < t1 && t1 < 1) {\n                if (i === 0) {\n                  bbox.addPoint(f(t1), bbox.maxY);\n                } else if (i === 1) {\n                  bbox.addPoint(bbox.maxX, f(t1));\n                }\n              }\n              var t2 = (-b - Math.sqrt(b2ac)) / (2 * a);\n              if (0 < t2 && t2 < 1) {\n                if (i === 0) {\n                  bbox.addPoint(f(t2), bbox.maxY);\n                } else if (i === 1) {\n                  bbox.addPoint(bbox.maxX, f(t2));\n                }\n              }\n            }\n            cx = p3x;\n            cy = p3y;\n            break;\n        }\n      }\n      return this._bbox = Object.freeze(bbox);\n    }\n  }]);\n  return Path;\n}();\nvar _loop = function _loop(command) {\n  Path.prototype[command] = function () {\n    this._bbox = this._cbox = null;\n    for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      args[_key2] = arguments[_key2];\n    }\n    this.commands.push({\n      command: command,\n      args: args\n    });\n    return this;\n  };\n};\nfor (var _i23 = 0, _arr = ['moveTo', 'lineTo', 'quadraticCurveTo', 'bezierCurveTo', 'closePath']; _i23 < _arr.length; _i23++) {\n  var command = _arr[_i23];\n  _loop(command);\n}\nvar StandardNames = ['.notdef', '.null', 'nonmarkingreturn', 'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent', 'ampersand', 'quotesingle', 'parenleft', 'parenright', 'asterisk', 'plus', 'comma', 'hyphen', 'period', 'slash', 'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon', 'less', 'equal', 'greater', 'question', 'at', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'bracketleft', 'backslash', 'bracketright', 'asciicircum', 'underscore', 'grave', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright', 'asciitilde', 'Adieresis', 'Aring', 'Ccedilla', 'Eacute', 'Ntilde', 'Odieresis', 'Udieresis', 'aacute', 'agrave', 'acircumflex', 'adieresis', 'atilde', 'aring', 'ccedilla', 'eacute', 'egrave', 'ecircumflex', 'edieresis', 'iacute', 'igrave', 'icircumflex', 'idieresis', 'ntilde', 'oacute', 'ograve', 'ocircumflex', 'odieresis', 'otilde', 'uacute', 'ugrave', 'ucircumflex', 'udieresis', 'dagger', 'degree', 'cent', 'sterling', 'section', 'bullet', 'paragraph', 'germandbls', 'registered', 'copyright', 'trademark', 'acute', 'dieresis', 'notequal', 'AE', 'Oslash', 'infinity', 'plusminus', 'lessequal', 'greaterequal', 'yen', 'mu', 'partialdiff', 'summation', 'product', 'pi', 'integral', 'ordfeminine', 'ordmasculine', 'Omega', 'ae', 'oslash', 'questiondown', 'exclamdown', 'logicalnot', 'radical', 'florin', 'approxequal', 'Delta', 'guillemotleft', 'guillemotright', 'ellipsis', 'nonbreakingspace', 'Agrave', 'Atilde', 'Otilde', 'OE', 'oe', 'endash', 'emdash', 'quotedblleft', 'quotedblright', 'quoteleft', 'quoteright', 'divide', 'lozenge', 'ydieresis', 'Ydieresis', 'fraction', 'currency', 'guilsinglleft', 'guilsinglright', 'fi', 'fl', 'daggerdbl', 'periodcentered', 'quotesinglbase', 'quotedblbase', 'perthousand', 'Acircumflex', 'Ecircumflex', 'Aacute', 'Edieresis', 'Egrave', 'Iacute', 'Icircumflex', 'Idieresis', 'Igrave', 'Oacute', 'Ocircumflex', 'apple', 'Ograve', 'Uacute', 'Ucircumflex', 'Ugrave', 'dotlessi', 'circumflex', 'tilde', 'macron', 'breve', 'dotaccent', 'ring', 'cedilla', 'hungarumlaut', 'ogonek', 'caron', 'Lslash', 'lslash', 'Scaron', 'scaron', 'Zcaron', 'zcaron', 'brokenbar', 'Eth', 'eth', 'Yacute', 'yacute', 'Thorn', 'thorn', 'minus', 'multiply', 'onesuperior', 'twosuperior', 'threesuperior', 'onehalf', 'onequarter', 'threequarters', 'franc', 'Gbreve', 'gbreve', 'Idotaccent', 'Scedilla', 'scedilla', 'Cacute', 'cacute', 'Ccaron', 'ccaron', 'dcroat'];\nvar _class$3;\n/**\r\n * Glyph objects represent a glyph in the font. They have various properties for accessing metrics and\r\n * the actual vector path the glyph represents, and methods for rendering the glyph to a graphics context.\r\n *\r\n * You do not create glyph objects directly. They are created by various methods on the font object.\r\n * There are several subclasses of the base Glyph class internally that may be returned depending\r\n * on the font format, but they all inherit from this class.\r\n */\n\nvar Glyph = (_class$3 = /*#__PURE__*/function () {\n  function Glyph(id, codePoints, font) {\n    /**\r\n     * The glyph id in the font\r\n     * @type {number}\r\n     */\n    this.id = id;\n    /**\r\n     * An array of unicode code points that are represented by this glyph.\r\n     * There can be multiple code points in the case of ligatures and other glyphs\r\n     * that represent multiple visual characters.\r\n     * @type {number[]}\r\n     */\n\n    this.codePoints = codePoints;\n    this._font = font; // TODO: get this info from GDEF if available\n\n    this.isMark = this.codePoints.length > 0 && this.codePoints.every(unicode.isMark);\n    this.isLigature = this.codePoints.length > 1;\n  }\n  var _proto32 = Glyph.prototype;\n  _proto32._getPath = function _getPath() {\n    return new Path();\n  };\n  _proto32._getCBox = function _getCBox() {\n    return this.path.cbox;\n  };\n  _proto32._getBBox = function _getBBox() {\n    return this.path.bbox;\n  };\n  _proto32._getTableMetrics = function _getTableMetrics(table) {\n    if (this.id < table.metrics.length) {\n      return table.metrics.get(this.id);\n    }\n    var metric = table.metrics.get(table.metrics.length - 1);\n    var res = {\n      advance: metric ? metric.advance : 0,\n      bearing: table.bearings.get(this.id - table.metrics.length) || 0\n    };\n    return res;\n  };\n  _proto32._getMetrics = function _getMetrics(cbox) {\n    if (this._metrics) {\n      return this._metrics;\n    }\n    var _this$_getTableMetric = this._getTableMetrics(this._font.hmtx),\n      advanceWidth = _this$_getTableMetric.advance,\n      leftBearing = _this$_getTableMetric.bearing; // For vertical metrics, use vmtx if available, or fall back to global data from OS/2 or hhea\n\n    if (this._font.vmtx) {\n      var _this$_getTableMetric2 = this._getTableMetrics(this._font.vmtx),\n        advanceHeight = _this$_getTableMetric2.advance,\n        topBearing = _this$_getTableMetric2.bearing;\n    } else {\n      var os2;\n      if (typeof cbox === 'undefined' || cbox === null) {\n        cbox = this.cbox;\n      }\n      if ((os2 = this._font['OS/2']) && os2.version > 0) {\n        var advanceHeight = Math.abs(os2.typoAscender - os2.typoDescender);\n        var topBearing = os2.typoAscender - cbox.maxY;\n      } else {\n        var hhea = this._font.hhea;\n        var advanceHeight = Math.abs(hhea.ascent - hhea.descent);\n        var topBearing = hhea.ascent - cbox.maxY;\n      }\n    }\n    if (this._font._variationProcessor && this._font.HVAR) {\n      advanceWidth += this._font._variationProcessor.getAdvanceAdjustment(this.id, this._font.HVAR);\n    }\n    return this._metrics = {\n      advanceWidth: advanceWidth,\n      advanceHeight: advanceHeight,\n      leftBearing: leftBearing,\n      topBearing: topBearing\n    };\n  }\n  /**\r\n   * The glyph’s control box.\r\n   * This is often the same as the bounding box, but is faster to compute.\r\n   * Because of the way bezier curves are defined, some of the control points\r\n   * can be outside of the bounding box. Where `bbox` takes this into account,\r\n   * `cbox` does not. Thus, cbox is less accurate, but faster to compute.\r\n   * See [here](http://www.freetype.org/freetype2/docs/glyphs/glyphs-6.html#section-2)\r\n   * for a more detailed description.\r\n   *\r\n   * @type {BBox}\r\n   */;\n  /**\r\n   * Returns a path scaled to the given font size.\r\n   * @param {number} size\r\n   * @return {Path}\r\n   */\n  _proto32.getScaledPath = function getScaledPath(size) {\n    var scale = 1 / this._font.unitsPerEm * size;\n    return this.path.scale(scale);\n  }\n  /**\r\n   * The glyph's advance width.\r\n   * @type {number}\r\n   */;\n  _proto32._getName = function _getName() {\n    var post = this._font.post;\n    if (!post) {\n      return null;\n    }\n    switch (post.version) {\n      case 1:\n        return StandardNames[this.id];\n      case 2:\n        var id = post.glyphNameIndex[this.id];\n        if (id < StandardNames.length) {\n          return StandardNames[id];\n        }\n        return post.names[id - StandardNames.length];\n      case 2.5:\n        return StandardNames[this.id + post.offsets[this.id]];\n      case 4:\n        return String.fromCharCode(post.map[this.id]);\n    }\n  }\n  /**\r\n   * The glyph's name\r\n   * @type {string}\r\n   */;\n  /**\r\n   * Renders the glyph to the given graphics context, at the specified font size.\r\n   * @param {CanvasRenderingContext2d} ctx\r\n   * @param {number} size\r\n   */\n  _proto32.render = function render(ctx, size) {\n    ctx.save();\n    var scale = 1 / this._font.head.unitsPerEm * size;\n    ctx.scale(scale, scale);\n    var fn = this.path.toFunction();\n    fn(ctx);\n    ctx.fill();\n    ctx.restore();\n  };\n  _createClass(Glyph, [{\n    key: \"cbox\",\n    get: function get() {\n      return this._getCBox();\n    }\n    /**\r\n     * The glyph’s bounding box, i.e. the rectangle that encloses the\r\n     * glyph outline as tightly as possible.\r\n     * @type {BBox}\r\n     */\n  }, {\n    key: \"bbox\",\n    get: function get() {\n      return this._getBBox();\n    }\n    /**\r\n     * A vector Path object representing the glyph outline.\r\n     * @type {Path}\r\n     */\n  }, {\n    key: \"path\",\n    get: function get() {\n      // Cache the path so we only decode it once\n      // Decoding is actually performed by subclasses\n      return this._getPath();\n    }\n  }, {\n    key: \"advanceWidth\",\n    get: function get() {\n      return this._getMetrics().advanceWidth;\n    }\n    /**\r\n     * The glyph's advance height.\r\n     * @type {number}\r\n     */\n  }, {\n    key: \"advanceHeight\",\n    get: function get() {\n      return this._getMetrics().advanceHeight;\n    }\n  }, {\n    key: \"ligatureCaretPositions\",\n    get: function get() {}\n  }, {\n    key: \"name\",\n    get: function get() {\n      return this._getName();\n    }\n  }]);\n  return Glyph;\n}(), (_applyDecoratedDescriptor(_class$3.prototype, \"cbox\", [cache], Object.getOwnPropertyDescriptor(_class$3.prototype, \"cbox\"), _class$3.prototype), _applyDecoratedDescriptor(_class$3.prototype, \"bbox\", [cache], Object.getOwnPropertyDescriptor(_class$3.prototype, \"bbox\"), _class$3.prototype), _applyDecoratedDescriptor(_class$3.prototype, \"path\", [cache], Object.getOwnPropertyDescriptor(_class$3.prototype, \"path\"), _class$3.prototype), _applyDecoratedDescriptor(_class$3.prototype, \"advanceWidth\", [cache], Object.getOwnPropertyDescriptor(_class$3.prototype, \"advanceWidth\"), _class$3.prototype), _applyDecoratedDescriptor(_class$3.prototype, \"advanceHeight\", [cache], Object.getOwnPropertyDescriptor(_class$3.prototype, \"advanceHeight\"), _class$3.prototype), _applyDecoratedDescriptor(_class$3.prototype, \"name\", [cache], Object.getOwnPropertyDescriptor(_class$3.prototype, \"name\"), _class$3.prototype)), _class$3);\nvar GlyfHeader = new r.Struct({\n  numberOfContours: r.int16,\n  // if negative, this is a composite glyph\n  xMin: r.int16,\n  yMin: r.int16,\n  xMax: r.int16,\n  yMax: r.int16\n}); // Flags for simple glyphs\n\nvar ON_CURVE = 1 << 0;\nvar X_SHORT_VECTOR = 1 << 1;\nvar Y_SHORT_VECTOR = 1 << 2;\nvar REPEAT = 1 << 3;\nvar SAME_X = 1 << 4;\nvar SAME_Y = 1 << 5; // Flags for composite glyphs\n\nvar ARG_1_AND_2_ARE_WORDS = 1 << 0;\nvar WE_HAVE_A_SCALE = 1 << 3;\nvar MORE_COMPONENTS = 1 << 5;\nvar WE_HAVE_AN_X_AND_Y_SCALE = 1 << 6;\nvar WE_HAVE_A_TWO_BY_TWO = 1 << 7;\nvar WE_HAVE_INSTRUCTIONS = 1 << 8;\nvar Point = /*#__PURE__*/function () {\n  function Point(onCurve, endContour, x, y) {\n    if (x === void 0) {\n      x = 0;\n    }\n    if (y === void 0) {\n      y = 0;\n    }\n    this.onCurve = onCurve;\n    this.endContour = endContour;\n    this.x = x;\n    this.y = y;\n  }\n  var _proto33 = Point.prototype;\n  _proto33.copy = function copy() {\n    return new Point(this.onCurve, this.endContour, this.x, this.y);\n  };\n  return Point;\n}(); // Represents a component in a composite glyph\nvar Component = function Component(glyphID, dx, dy) {\n  this.glyphID = glyphID;\n  this.dx = dx;\n  this.dy = dy;\n  this.pos = 0;\n  this.scaleX = this.scaleY = 1;\n  this.scale01 = this.scale10 = 0;\n};\n/**\r\n * Represents a TrueType glyph.\r\n */\nvar TTFGlyph = /*#__PURE__*/function (_Glyph) {\n  _inheritsLoose(TTFGlyph, _Glyph);\n  function TTFGlyph() {\n    return _Glyph.apply(this, arguments) || this;\n  }\n  var _proto34 = TTFGlyph.prototype;\n  // Parses just the glyph header and returns the bounding box\n  _proto34._getCBox = function _getCBox(internal) {\n    // We need to decode the glyph if variation processing is requested,\n    // so it's easier just to recompute the path's cbox after decoding.\n    if (this._font._variationProcessor && !internal) {\n      return this.path.cbox;\n    }\n    var stream = this._font._getTableStream('glyf');\n    stream.pos += this._font.loca.offsets[this.id];\n    var glyph = GlyfHeader.decode(stream);\n    var cbox = new BBox(glyph.xMin, glyph.yMin, glyph.xMax, glyph.yMax);\n    return Object.freeze(cbox);\n  } // Parses a single glyph coordinate\n  ;\n  _proto34._parseGlyphCoord = function _parseGlyphCoord(stream, prev, short, same) {\n    if (short) {\n      var val = stream.readUInt8();\n      if (!same) {\n        val = -val;\n      }\n      val += prev;\n    } else {\n      if (same) {\n        var val = prev;\n      } else {\n        var val = prev + stream.readInt16BE();\n      }\n    }\n    return val;\n  } // Decodes the glyph data into points for simple glyphs,\n  // or components for composite glyphs\n  ;\n  _proto34._decode = function _decode() {\n    var glyfPos = this._font.loca.offsets[this.id];\n    var nextPos = this._font.loca.offsets[this.id + 1]; // Nothing to do if there is no data for this glyph\n\n    if (glyfPos === nextPos) {\n      return null;\n    }\n    var stream = this._font._getTableStream('glyf');\n    stream.pos += glyfPos;\n    var startPos = stream.pos;\n    var glyph = GlyfHeader.decode(stream);\n    if (glyph.numberOfContours > 0) {\n      this._decodeSimple(glyph, stream);\n    } else if (glyph.numberOfContours < 0) {\n      this._decodeComposite(glyph, stream, startPos);\n    }\n    return glyph;\n  };\n  _proto34._decodeSimple = function _decodeSimple(glyph, stream) {\n    // this is a simple glyph\n    glyph.points = [];\n    var endPtsOfContours = new r.Array(r.uint16, glyph.numberOfContours).decode(stream);\n    glyph.instructions = new r.Array(r.uint8, r.uint16).decode(stream);\n    var flags = [];\n    var numCoords = endPtsOfContours[endPtsOfContours.length - 1] + 1;\n    while (flags.length < numCoords) {\n      var flag = stream.readUInt8();\n      flags.push(flag); // check for repeat flag\n\n      if (flag & REPEAT) {\n        var count = stream.readUInt8();\n        for (var j = 0; j < count; j++) {\n          flags.push(flag);\n        }\n      }\n    }\n    for (var i = 0; i < flags.length; i++) {\n      var flag = flags[i];\n      var point = new Point(!!(flag & ON_CURVE), endPtsOfContours.indexOf(i) >= 0, 0, 0);\n      glyph.points.push(point);\n    }\n    var px = 0;\n    for (var i = 0; i < flags.length; i++) {\n      var flag = flags[i];\n      glyph.points[i].x = px = this._parseGlyphCoord(stream, px, flag & X_SHORT_VECTOR, flag & SAME_X);\n    }\n    var py = 0;\n    for (var i = 0; i < flags.length; i++) {\n      var flag = flags[i];\n      glyph.points[i].y = py = this._parseGlyphCoord(stream, py, flag & Y_SHORT_VECTOR, flag & SAME_Y);\n    }\n    if (this._font._variationProcessor) {\n      var points = glyph.points.slice();\n      points.push.apply(points, this._getPhantomPoints(glyph));\n      this._font._variationProcessor.transformPoints(this.id, points);\n      glyph.phantomPoints = points.slice(-4);\n    }\n    return;\n  };\n  _proto34._decodeComposite = function _decodeComposite(glyph, stream, offset) {\n    if (offset === void 0) {\n      offset = 0;\n    }\n    // this is a composite glyph\n    glyph.components = [];\n    var haveInstructions = false;\n    var flags = MORE_COMPONENTS;\n    while (flags & MORE_COMPONENTS) {\n      flags = stream.readUInt16BE();\n      var gPos = stream.pos - offset;\n      var glyphID = stream.readUInt16BE();\n      if (!haveInstructions) {\n        haveInstructions = (flags & WE_HAVE_INSTRUCTIONS) !== 0;\n      }\n      if (flags & ARG_1_AND_2_ARE_WORDS) {\n        var dx = stream.readInt16BE();\n        var dy = stream.readInt16BE();\n      } else {\n        var dx = stream.readInt8();\n        var dy = stream.readInt8();\n      }\n      var component = new Component(glyphID, dx, dy);\n      component.pos = gPos;\n      if (flags & WE_HAVE_A_SCALE) {\n        // fixed number with 14 bits of fraction\n        component.scaleX = component.scaleY = (stream.readUInt8() << 24 | stream.readUInt8() << 16) / 1073741824;\n      } else if (flags & WE_HAVE_AN_X_AND_Y_SCALE) {\n        component.scaleX = (stream.readUInt8() << 24 | stream.readUInt8() << 16) / 1073741824;\n        component.scaleY = (stream.readUInt8() << 24 | stream.readUInt8() << 16) / 1073741824;\n      } else if (flags & WE_HAVE_A_TWO_BY_TWO) {\n        component.scaleX = (stream.readUInt8() << 24 | stream.readUInt8() << 16) / 1073741824;\n        component.scale01 = (stream.readUInt8() << 24 | stream.readUInt8() << 16) / 1073741824;\n        component.scale10 = (stream.readUInt8() << 24 | stream.readUInt8() << 16) / 1073741824;\n        component.scaleY = (stream.readUInt8() << 24 | stream.readUInt8() << 16) / 1073741824;\n      }\n      glyph.components.push(component);\n    }\n    if (this._font._variationProcessor) {\n      var points = [];\n      for (var j = 0; j < glyph.components.length; j++) {\n        var component = glyph.components[j];\n        points.push(new Point(true, true, component.dx, component.dy));\n      }\n      points.push.apply(points, this._getPhantomPoints(glyph));\n      this._font._variationProcessor.transformPoints(this.id, points);\n      glyph.phantomPoints = points.splice(-4, 4);\n      for (var i = 0; i < points.length; i++) {\n        var point = points[i];\n        glyph.components[i].dx = point.x;\n        glyph.components[i].dy = point.y;\n      }\n    }\n    return haveInstructions;\n  };\n  _proto34._getPhantomPoints = function _getPhantomPoints(glyph) {\n    var cbox = this._getCBox(true);\n    if (this._metrics == null) {\n      this._metrics = Glyph.prototype._getMetrics.call(this, cbox);\n    }\n    var _this$_metrics = this._metrics,\n      advanceWidth = _this$_metrics.advanceWidth,\n      advanceHeight = _this$_metrics.advanceHeight,\n      leftBearing = _this$_metrics.leftBearing,\n      topBearing = _this$_metrics.topBearing;\n    return [new Point(false, true, glyph.xMin - leftBearing, 0), new Point(false, true, glyph.xMin - leftBearing + advanceWidth, 0), new Point(false, true, 0, glyph.yMax + topBearing), new Point(false, true, 0, glyph.yMax + topBearing + advanceHeight)];\n  } // Decodes font data, resolves composite glyphs, and returns an array of contours\n  ;\n  _proto34._getContours = function _getContours() {\n    var glyph = this._decode();\n    if (!glyph) {\n      return [];\n    }\n    var points = [];\n    if (glyph.numberOfContours < 0) {\n      // resolve composite glyphs\n      for (var _iterator70 = _createForOfIteratorHelperLoose(glyph.components), _step70; !(_step70 = _iterator70()).done;) {\n        var component = _step70.value;\n        var _contours = this._font.getGlyph(component.glyphID)._getContours();\n        for (var i = 0; i < _contours.length; i++) {\n          var contour = _contours[i];\n          for (var j = 0; j < contour.length; j++) {\n            var _point = contour[j];\n            var x = _point.x * component.scaleX + _point.y * component.scale01 + component.dx;\n            var y = _point.y * component.scaleY + _point.x * component.scale10 + component.dy;\n            points.push(new Point(_point.onCurve, _point.endContour, x, y));\n          }\n        }\n      }\n    } else {\n      points = glyph.points || [];\n    } // Recompute and cache metrics if we performed variation processing, and don't have an HVAR table\n\n    if (glyph.phantomPoints && !this._font.directory.tables.HVAR) {\n      this._metrics.advanceWidth = glyph.phantomPoints[1].x - glyph.phantomPoints[0].x;\n      this._metrics.advanceHeight = glyph.phantomPoints[3].y - glyph.phantomPoints[2].y;\n      this._metrics.leftBearing = glyph.xMin - glyph.phantomPoints[0].x;\n      this._metrics.topBearing = glyph.phantomPoints[2].y - glyph.yMax;\n    }\n    var contours = [];\n    var cur = [];\n    for (var k = 0; k < points.length; k++) {\n      var point = points[k];\n      cur.push(point);\n      if (point.endContour) {\n        contours.push(cur);\n        cur = [];\n      }\n    }\n    return contours;\n  };\n  _proto34._getMetrics = function _getMetrics() {\n    if (this._metrics) {\n      return this._metrics;\n    }\n    var cbox = this._getCBox(true);\n    _Glyph.prototype._getMetrics.call(this, cbox);\n    if (this._font._variationProcessor && !this._font.HVAR) {\n      // No HVAR table, decode the glyph. This triggers recomputation of metrics.\n      this.path;\n    }\n    return this._metrics;\n  } // Converts contours to a Path object that can be rendered\n  ;\n  _proto34._getPath = function _getPath() {\n    var contours = this._getContours();\n    var path = new Path();\n    for (var i = 0; i < contours.length; i++) {\n      var contour = contours[i];\n      var firstPt = contour[0];\n      var lastPt = contour[contour.length - 1];\n      var start = 0;\n      if (firstPt.onCurve) {\n        // The first point will be consumed by the moveTo command, so skip in the loop\n        var curvePt = null;\n        start = 1;\n      } else {\n        if (lastPt.onCurve) {\n          // Start at the last point if the first point is off curve and the last point is on curve\n          firstPt = lastPt;\n        } else {\n          // Start at the middle if both the first and last points are off curve\n          firstPt = new Point(false, false, (firstPt.x + lastPt.x) / 2, (firstPt.y + lastPt.y) / 2);\n        }\n        var curvePt = firstPt;\n      }\n      path.moveTo(firstPt.x, firstPt.y);\n      for (var j = start; j < contour.length; j++) {\n        var pt = contour[j];\n        var prevPt = j === 0 ? firstPt : contour[j - 1];\n        if (prevPt.onCurve && pt.onCurve) {\n          path.lineTo(pt.x, pt.y);\n        } else if (prevPt.onCurve && !pt.onCurve) {\n          var curvePt = pt;\n        } else if (!prevPt.onCurve && !pt.onCurve) {\n          var midX = (prevPt.x + pt.x) / 2;\n          var midY = (prevPt.y + pt.y) / 2;\n          path.quadraticCurveTo(prevPt.x, prevPt.y, midX, midY);\n          var curvePt = pt;\n        } else if (!prevPt.onCurve && pt.onCurve) {\n          path.quadraticCurveTo(curvePt.x, curvePt.y, pt.x, pt.y);\n          var curvePt = null;\n        } else {\n          throw new Error(\"Unknown TTF path state\");\n        }\n      } // Connect the first and last points\n\n      if (curvePt) {\n        path.quadraticCurveTo(curvePt.x, curvePt.y, firstPt.x, firstPt.y);\n      }\n      path.closePath();\n    }\n    return path;\n  };\n  return TTFGlyph;\n}(Glyph);\n/**\r\n * Represents an OpenType PostScript glyph, in the Compact Font Format.\r\n */\nvar CFFGlyph = /*#__PURE__*/function (_Glyph2) {\n  _inheritsLoose(CFFGlyph, _Glyph2);\n  function CFFGlyph() {\n    return _Glyph2.apply(this, arguments) || this;\n  }\n  var _proto35 = CFFGlyph.prototype;\n  _proto35._getName = function _getName() {\n    if (this._font.CFF2) {\n      return _Glyph2.prototype._getName.call(this);\n    }\n    return this._font['CFF '].getGlyphName(this.id);\n  };\n  _proto35.bias = function bias(s) {\n    if (s.length < 1240) {\n      return 107;\n    } else if (s.length < 33900) {\n      return 1131;\n    } else {\n      return 32768;\n    }\n  };\n  _proto35._getPath = function _getPath() {\n    var cff = this._font.CFF2 || this._font['CFF '];\n    var stream = cff.stream;\n    var str = cff.topDict.CharStrings[this.id];\n    var end = str.offset + str.length;\n    stream.pos = str.offset;\n    var path = new Path();\n    var stack = [];\n    var trans = [];\n    var width = null;\n    var nStems = 0;\n    var x = 0,\n      y = 0;\n    var usedGsubrs;\n    var usedSubrs;\n    var open = false;\n    this._usedGsubrs = usedGsubrs = {};\n    this._usedSubrs = usedSubrs = {};\n    var gsubrs = cff.globalSubrIndex || [];\n    var gsubrsBias = this.bias(gsubrs);\n    var privateDict = cff.privateDictForGlyph(this.id) || {};\n    var subrs = privateDict.Subrs || [];\n    var subrsBias = this.bias(subrs);\n    var vstore = cff.topDict.vstore && cff.topDict.vstore.itemVariationStore;\n    var vsindex = privateDict.vsindex;\n    var variationProcessor = this._font._variationProcessor;\n    function checkWidth() {\n      if (width == null) {\n        width = stack.shift() + privateDict.nominalWidthX;\n      }\n    }\n    function parseStems() {\n      if (stack.length % 2 !== 0) {\n        checkWidth();\n      }\n      nStems += stack.length >> 1;\n      return stack.length = 0;\n    }\n    function moveTo(x, y) {\n      if (open) {\n        path.closePath();\n      }\n      path.moveTo(x, y);\n      open = true;\n    }\n    var parse = function parse() {\n      while (stream.pos < end) {\n        var op = stream.readUInt8();\n        if (op < 32) {\n          switch (op) {\n            case 1: // hstem\n\n            case 3: // vstem\n\n            case 18: // hstemhm\n\n            case 23:\n              // vstemhm\n              parseStems();\n              break;\n            case 4:\n              // vmoveto\n              if (stack.length > 1) {\n                checkWidth();\n              }\n              y += stack.shift();\n              moveTo(x, y);\n              break;\n            case 5:\n              // rlineto\n              while (stack.length >= 2) {\n                x += stack.shift();\n                y += stack.shift();\n                path.lineTo(x, y);\n              }\n              break;\n            case 6: // hlineto\n\n            case 7:\n              // vlineto\n              var phase = op === 6;\n              while (stack.length >= 1) {\n                if (phase) {\n                  x += stack.shift();\n                } else {\n                  y += stack.shift();\n                }\n                path.lineTo(x, y);\n                phase = !phase;\n              }\n              break;\n            case 8:\n              // rrcurveto\n              while (stack.length > 0) {\n                var c1x = x + stack.shift();\n                var c1y = y + stack.shift();\n                var c2x = c1x + stack.shift();\n                var c2y = c1y + stack.shift();\n                x = c2x + stack.shift();\n                y = c2y + stack.shift();\n                path.bezierCurveTo(c1x, c1y, c2x, c2y, x, y);\n              }\n              break;\n            case 10:\n              // callsubr\n              var index = stack.pop() + subrsBias;\n              var subr = subrs[index];\n              if (subr) {\n                usedSubrs[index] = true;\n                var p = stream.pos;\n                var e = end;\n                stream.pos = subr.offset;\n                end = subr.offset + subr.length;\n                parse();\n                stream.pos = p;\n                end = e;\n              }\n              break;\n            case 11:\n              // return\n              if (cff.version >= 2) {\n                break;\n              }\n              return;\n            case 14:\n              // endchar\n              if (cff.version >= 2) {\n                break;\n              }\n              if (stack.length > 0) {\n                checkWidth();\n              }\n              if (open) {\n                path.closePath();\n                open = false;\n              }\n              break;\n            case 15:\n              {\n                // vsindex\n                if (cff.version < 2) {\n                  throw new Error('vsindex operator not supported in CFF v1');\n                }\n                vsindex = stack.pop();\n                break;\n              }\n            case 16:\n              {\n                // blend\n                if (cff.version < 2) {\n                  throw new Error('blend operator not supported in CFF v1');\n                }\n                if (!variationProcessor) {\n                  throw new Error('blend operator in non-variation font');\n                }\n                var blendVector = variationProcessor.getBlendVector(vstore, vsindex);\n                var numBlends = stack.pop();\n                var numOperands = numBlends * blendVector.length;\n                var delta = stack.length - numOperands;\n                var base = delta - numBlends;\n                for (var i = 0; i < numBlends; i++) {\n                  var sum = stack[base + i];\n                  for (var j = 0; j < blendVector.length; j++) {\n                    sum += blendVector[j] * stack[delta++];\n                  }\n                  stack[base + i] = sum;\n                }\n                while (numOperands--) {\n                  stack.pop();\n                }\n                break;\n              }\n            case 19: // hintmask\n\n            case 20:\n              // cntrmask\n              parseStems();\n              stream.pos += nStems + 7 >> 3;\n              break;\n            case 21:\n              // rmoveto\n              if (stack.length > 2) {\n                checkWidth();\n              }\n              x += stack.shift();\n              y += stack.shift();\n              moveTo(x, y);\n              break;\n            case 22:\n              // hmoveto\n              if (stack.length > 1) {\n                checkWidth();\n              }\n              x += stack.shift();\n              moveTo(x, y);\n              break;\n            case 24:\n              // rcurveline\n              while (stack.length >= 8) {\n                var c1x = x + stack.shift();\n                var c1y = y + stack.shift();\n                var c2x = c1x + stack.shift();\n                var c2y = c1y + stack.shift();\n                x = c2x + stack.shift();\n                y = c2y + stack.shift();\n                path.bezierCurveTo(c1x, c1y, c2x, c2y, x, y);\n              }\n              x += stack.shift();\n              y += stack.shift();\n              path.lineTo(x, y);\n              break;\n            case 25:\n              // rlinecurve\n              while (stack.length >= 8) {\n                x += stack.shift();\n                y += stack.shift();\n                path.lineTo(x, y);\n              }\n              var c1x = x + stack.shift();\n              var c1y = y + stack.shift();\n              var c2x = c1x + stack.shift();\n              var c2y = c1y + stack.shift();\n              x = c2x + stack.shift();\n              y = c2y + stack.shift();\n              path.bezierCurveTo(c1x, c1y, c2x, c2y, x, y);\n              break;\n            case 26:\n              // vvcurveto\n              if (stack.length % 2) {\n                x += stack.shift();\n              }\n              while (stack.length >= 4) {\n                c1x = x;\n                c1y = y + stack.shift();\n                c2x = c1x + stack.shift();\n                c2y = c1y + stack.shift();\n                x = c2x;\n                y = c2y + stack.shift();\n                path.bezierCurveTo(c1x, c1y, c2x, c2y, x, y);\n              }\n              break;\n            case 27:\n              // hhcurveto\n              if (stack.length % 2) {\n                y += stack.shift();\n              }\n              while (stack.length >= 4) {\n                c1x = x + stack.shift();\n                c1y = y;\n                c2x = c1x + stack.shift();\n                c2y = c1y + stack.shift();\n                x = c2x + stack.shift();\n                y = c2y;\n                path.bezierCurveTo(c1x, c1y, c2x, c2y, x, y);\n              }\n              break;\n            case 28:\n              // shortint\n              stack.push(stream.readInt16BE());\n              break;\n            case 29:\n              // callgsubr\n              index = stack.pop() + gsubrsBias;\n              subr = gsubrs[index];\n              if (subr) {\n                usedGsubrs[index] = true;\n                var p = stream.pos;\n                var e = end;\n                stream.pos = subr.offset;\n                end = subr.offset + subr.length;\n                parse();\n                stream.pos = p;\n                end = e;\n              }\n              break;\n            case 30: // vhcurveto\n\n            case 31:\n              // hvcurveto\n              phase = op === 31;\n              while (stack.length >= 4) {\n                if (phase) {\n                  c1x = x + stack.shift();\n                  c1y = y;\n                  c2x = c1x + stack.shift();\n                  c2y = c1y + stack.shift();\n                  y = c2y + stack.shift();\n                  x = c2x + (stack.length === 1 ? stack.shift() : 0);\n                } else {\n                  c1x = x;\n                  c1y = y + stack.shift();\n                  c2x = c1x + stack.shift();\n                  c2y = c1y + stack.shift();\n                  x = c2x + stack.shift();\n                  y = c2y + (stack.length === 1 ? stack.shift() : 0);\n                }\n                path.bezierCurveTo(c1x, c1y, c2x, c2y, x, y);\n                phase = !phase;\n              }\n              break;\n            case 12:\n              op = stream.readUInt8();\n              switch (op) {\n                case 3:\n                  // and\n                  var a = stack.pop();\n                  var b = stack.pop();\n                  stack.push(a && b ? 1 : 0);\n                  break;\n                case 4:\n                  // or\n                  a = stack.pop();\n                  b = stack.pop();\n                  stack.push(a || b ? 1 : 0);\n                  break;\n                case 5:\n                  // not\n                  a = stack.pop();\n                  stack.push(a ? 0 : 1);\n                  break;\n                case 9:\n                  // abs\n                  a = stack.pop();\n                  stack.push(Math.abs(a));\n                  break;\n                case 10:\n                  // add\n                  a = stack.pop();\n                  b = stack.pop();\n                  stack.push(a + b);\n                  break;\n                case 11:\n                  // sub\n                  a = stack.pop();\n                  b = stack.pop();\n                  stack.push(a - b);\n                  break;\n                case 12:\n                  // div\n                  a = stack.pop();\n                  b = stack.pop();\n                  stack.push(a / b);\n                  break;\n                case 14:\n                  // neg\n                  a = stack.pop();\n                  stack.push(-a);\n                  break;\n                case 15:\n                  // eq\n                  a = stack.pop();\n                  b = stack.pop();\n                  stack.push(a === b ? 1 : 0);\n                  break;\n                case 18:\n                  // drop\n                  stack.pop();\n                  break;\n                case 20:\n                  // put\n                  var val = stack.pop();\n                  var idx = stack.pop();\n                  trans[idx] = val;\n                  break;\n                case 21:\n                  // get\n                  idx = stack.pop();\n                  stack.push(trans[idx] || 0);\n                  break;\n                case 22:\n                  // ifelse\n                  var s1 = stack.pop();\n                  var s2 = stack.pop();\n                  var v1 = stack.pop();\n                  var v2 = stack.pop();\n                  stack.push(v1 <= v2 ? s1 : s2);\n                  break;\n                case 23:\n                  // random\n                  stack.push(Math.random());\n                  break;\n                case 24:\n                  // mul\n                  a = stack.pop();\n                  b = stack.pop();\n                  stack.push(a * b);\n                  break;\n                case 26:\n                  // sqrt\n                  a = stack.pop();\n                  stack.push(Math.sqrt(a));\n                  break;\n                case 27:\n                  // dup\n                  a = stack.pop();\n                  stack.push(a, a);\n                  break;\n                case 28:\n                  // exch\n                  a = stack.pop();\n                  b = stack.pop();\n                  stack.push(b, a);\n                  break;\n                case 29:\n                  // index\n                  idx = stack.pop();\n                  if (idx < 0) {\n                    idx = 0;\n                  } else if (idx > stack.length - 1) {\n                    idx = stack.length - 1;\n                  }\n                  stack.push(stack[idx]);\n                  break;\n                case 30:\n                  // roll\n                  var n = stack.pop();\n                  var _j = stack.pop();\n                  if (_j >= 0) {\n                    while (_j > 0) {\n                      var t = stack[n - 1];\n                      for (var _i = n - 2; _i >= 0; _i--) {\n                        stack[_i + 1] = stack[_i];\n                      }\n                      stack[0] = t;\n                      _j--;\n                    }\n                  } else {\n                    while (_j < 0) {\n                      var t = stack[0];\n                      for (var _i2 = 0; _i2 <= n; _i2++) {\n                        stack[_i2] = stack[_i2 + 1];\n                      }\n                      stack[n - 1] = t;\n                      _j++;\n                    }\n                  }\n                  break;\n                case 34:\n                  // hflex\n                  c1x = x + stack.shift();\n                  c1y = y;\n                  c2x = c1x + stack.shift();\n                  c2y = c1y + stack.shift();\n                  var c3x = c2x + stack.shift();\n                  var c3y = c2y;\n                  var c4x = c3x + stack.shift();\n                  var c4y = c3y;\n                  var c5x = c4x + stack.shift();\n                  var c5y = c4y;\n                  var c6x = c5x + stack.shift();\n                  var c6y = c5y;\n                  x = c6x;\n                  y = c6y;\n                  path.bezierCurveTo(c1x, c1y, c2x, c2y, c3x, c3y);\n                  path.bezierCurveTo(c4x, c4y, c5x, c5y, c6x, c6y);\n                  break;\n                case 35:\n                  // flex\n                  var pts = [];\n                  for (var _i3 = 0; _i3 <= 5; _i3++) {\n                    x += stack.shift();\n                    y += stack.shift();\n                    pts.push(x, y);\n                  }\n                  path.bezierCurveTo.apply(path, pts.slice(0, 6));\n                  path.bezierCurveTo.apply(path, pts.slice(6));\n                  stack.shift(); // fd\n\n                  break;\n                case 36:\n                  // hflex1\n                  c1x = x + stack.shift();\n                  c1y = y + stack.shift();\n                  c2x = c1x + stack.shift();\n                  c2y = c1y + stack.shift();\n                  c3x = c2x + stack.shift();\n                  c3y = c2y;\n                  c4x = c3x + stack.shift();\n                  c4y = c3y;\n                  c5x = c4x + stack.shift();\n                  c5y = c4y + stack.shift();\n                  c6x = c5x + stack.shift();\n                  c6y = c5y;\n                  x = c6x;\n                  y = c6y;\n                  path.bezierCurveTo(c1x, c1y, c2x, c2y, c3x, c3y);\n                  path.bezierCurveTo(c4x, c4y, c5x, c5y, c6x, c6y);\n                  break;\n                case 37:\n                  // flex1\n                  var startx = x;\n                  var starty = y;\n                  pts = [];\n                  for (var _i4 = 0; _i4 <= 4; _i4++) {\n                    x += stack.shift();\n                    y += stack.shift();\n                    pts.push(x, y);\n                  }\n                  if (Math.abs(x - startx) > Math.abs(y - starty)) {\n                    // horizontal\n                    x += stack.shift();\n                    y = starty;\n                  } else {\n                    x = startx;\n                    y += stack.shift();\n                  }\n                  pts.push(x, y);\n                  path.bezierCurveTo.apply(path, pts.slice(0, 6));\n                  path.bezierCurveTo.apply(path, pts.slice(6));\n                  break;\n                default:\n                  throw new Error(\"Unknown op: 12 \".concat(op));\n              }\n              break;\n            default:\n              throw new Error(\"Unknown op: \".concat(op));\n          }\n        } else if (op < 247) {\n          stack.push(op - 139);\n        } else if (op < 251) {\n          var b1 = stream.readUInt8();\n          stack.push((op - 247) * 256 + b1 + 108);\n        } else if (op < 255) {\n          var b1 = stream.readUInt8();\n          stack.push(-(op - 251) * 256 - b1 - 108);\n        } else {\n          stack.push(stream.readInt32BE() / 65536);\n        }\n      }\n    };\n    parse();\n    if (open) {\n      path.closePath();\n    }\n    return path;\n  };\n  return CFFGlyph;\n}(Glyph);\nvar SBIXImage = new r.Struct({\n  originX: r.uint16,\n  originY: r.uint16,\n  type: new r.String(4),\n  data: new r.Buffer(function (t) {\n    return t.parent.buflen - t._currentOffset;\n  })\n});\n/**\r\n * Represents a color (e.g. emoji) glyph in Apple's SBIX format.\r\n */\nvar SBIXGlyph = /*#__PURE__*/function (_TTFGlyph) {\n  _inheritsLoose(SBIXGlyph, _TTFGlyph);\n  function SBIXGlyph() {\n    return _TTFGlyph.apply(this, arguments) || this;\n  }\n  var _proto36 = SBIXGlyph.prototype;\n  /**\r\n   * Returns an object representing a glyph image at the given point size.\r\n   * The object has a data property with a Buffer containing the actual image data,\r\n   * along with the image type, and origin.\r\n   *\r\n   * @param {number} size\r\n   * @return {object}\r\n   */\n  _proto36.getImageForSize = function getImageForSize(size) {\n    for (var i = 0; i < this._font.sbix.imageTables.length; i++) {\n      var table = this._font.sbix.imageTables[i];\n      if (table.ppem >= size) {\n        break;\n      }\n    }\n    var offsets = table.imageOffsets;\n    var start = offsets[this.id];\n    var end = offsets[this.id + 1];\n    if (start === end) {\n      return null;\n    }\n    this._font.stream.pos = start;\n    return SBIXImage.decode(this._font.stream, {\n      buflen: end - start\n    });\n  };\n  _proto36.render = function render(ctx, size) {\n    var img = this.getImageForSize(size);\n    if (img != null) {\n      var scale = size / this._font.unitsPerEm;\n      ctx.image(img.data, {\n        height: size,\n        x: img.originX,\n        y: (this.bbox.minY - img.originY) * scale\n      });\n    }\n    if (this._font.sbix.flags.renderOutlines) {\n      _TTFGlyph.prototype.render.call(this, ctx, size);\n    }\n  };\n  return SBIXGlyph;\n}(TTFGlyph);\nvar COLRLayer = function COLRLayer(glyph, color) {\n  this.glyph = glyph;\n  this.color = color;\n};\n/**\r\n * Represents a color (e.g. emoji) glyph in Microsoft's COLR format.\r\n * Each glyph in this format contain a list of colored layers, each\r\n * of which  is another vector glyph.\r\n */\nvar COLRGlyph = /*#__PURE__*/function (_Glyph3) {\n  _inheritsLoose(COLRGlyph, _Glyph3);\n  function COLRGlyph() {\n    return _Glyph3.apply(this, arguments) || this;\n  }\n  var _proto37 = COLRGlyph.prototype;\n  _proto37._getBBox = function _getBBox() {\n    var bbox = new BBox();\n    for (var i = 0; i < this.layers.length; i++) {\n      var layer = this.layers[i];\n      var b = layer.glyph.bbox;\n      bbox.addPoint(b.minX, b.minY);\n      bbox.addPoint(b.maxX, b.maxY);\n    }\n    return bbox;\n  }\n  /**\r\n   * Returns an array of objects containing the glyph and color for\r\n   * each layer in the composite color glyph.\r\n   * @type {object[]}\r\n   */;\n  _proto37.render = function render(ctx, size) {\n    for (var _iterator71 = _createForOfIteratorHelperLoose(this.layers), _step71; !(_step71 = _iterator71()).done;) {\n      var _step71$value = _step71.value,\n        glyph = _step71$value.glyph,\n        color = _step71$value.color;\n      ctx.fillColor([color.red, color.green, color.blue], color.alpha / 255 * 100);\n      glyph.render(ctx, size);\n    }\n    return;\n  };\n  _createClass(COLRGlyph, [{\n    key: \"layers\",\n    get: function get() {\n      var cpal = this._font.CPAL;\n      var colr = this._font.COLR;\n      var low = 0;\n      var high = colr.baseGlyphRecord.length - 1;\n      while (low <= high) {\n        var mid = low + high >> 1;\n        var rec = colr.baseGlyphRecord[mid];\n        if (this.id < rec.gid) {\n          high = mid - 1;\n        } else if (this.id > rec.gid) {\n          low = mid + 1;\n        } else {\n          var baseLayer = rec;\n          break;\n        }\n      } // if base glyph not found in COLR table,\n      // default to normal glyph from glyf or CFF\n\n      if (baseLayer == null) {\n        var g = this._font._getBaseGlyph(this.id);\n        var color = {\n          red: 0,\n          green: 0,\n          blue: 0,\n          alpha: 255\n        };\n        return [new COLRLayer(g, color)];\n      } // otherwise, return an array of all the layers\n\n      var layers = [];\n      for (var i = baseLayer.firstLayerIndex; i < baseLayer.firstLayerIndex + baseLayer.numLayers; i++) {\n        var rec = colr.layerRecords[i];\n        var color = cpal.colorRecords[rec.paletteIndex];\n        var g = this._font._getBaseGlyph(rec.gid);\n        layers.push(new COLRLayer(g, color));\n      }\n      return layers;\n    }\n  }]);\n  return COLRGlyph;\n}(Glyph);\nvar TUPLES_SHARE_POINT_NUMBERS = 0x8000;\nvar TUPLE_COUNT_MASK = 0x0fff;\nvar EMBEDDED_TUPLE_COORD = 0x8000;\nvar INTERMEDIATE_TUPLE = 0x4000;\nvar PRIVATE_POINT_NUMBERS = 0x2000;\nvar TUPLE_INDEX_MASK = 0x0fff;\nvar POINTS_ARE_WORDS = 0x80;\nvar POINT_RUN_COUNT_MASK = 0x7f;\nvar DELTAS_ARE_ZERO = 0x80;\nvar DELTAS_ARE_WORDS = 0x40;\nvar DELTA_RUN_COUNT_MASK = 0x3f;\n/**\r\n * This class is transforms TrueType glyphs according to the data from\r\n * the Apple Advanced Typography variation tables (fvar, gvar, and avar).\r\n * These tables allow infinite adjustments to glyph weight, width, slant,\r\n * and optical size without the designer needing to specify every exact style.\r\n *\r\n * Apple's documentation for these tables is not great, so thanks to the\r\n * Freetype project for figuring much of this out.\r\n *\r\n * @private\r\n */\nvar GlyphVariationProcessor = /*#__PURE__*/function () {\n  function GlyphVariationProcessor(font, coords) {\n    this.font = font;\n    this.normalizedCoords = this.normalizeCoords(coords);\n    this.blendVectors = new Map();\n  }\n  var _proto38 = GlyphVariationProcessor.prototype;\n  _proto38.normalizeCoords = function normalizeCoords(coords) {\n    // the default mapping is linear along each axis, in two segments:\n    // from the minValue to defaultValue, and from defaultValue to maxValue.\n    var normalized = [];\n    for (var i = 0; i < this.font.fvar.axis.length; i++) {\n      var axis = this.font.fvar.axis[i];\n      if (coords[i] < axis.defaultValue) {\n        normalized.push((coords[i] - axis.defaultValue + Number.EPSILON) / (axis.defaultValue - axis.minValue + Number.EPSILON));\n      } else {\n        normalized.push((coords[i] - axis.defaultValue + Number.EPSILON) / (axis.maxValue - axis.defaultValue + Number.EPSILON));\n      }\n    } // if there is an avar table, the normalized value is calculated\n    // by interpolating between the two nearest mapped values.\n\n    if (this.font.avar) {\n      for (var i = 0; i < this.font.avar.segment.length; i++) {\n        var segment = this.font.avar.segment[i];\n        for (var j = 0; j < segment.correspondence.length; j++) {\n          var pair = segment.correspondence[j];\n          if (j >= 1 && normalized[i] < pair.fromCoord) {\n            var prev = segment.correspondence[j - 1];\n            normalized[i] = ((normalized[i] - prev.fromCoord) * (pair.toCoord - prev.toCoord) + Number.EPSILON) / (pair.fromCoord - prev.fromCoord + Number.EPSILON) + prev.toCoord;\n            break;\n          }\n        }\n      }\n    }\n    return normalized;\n  };\n  _proto38.transformPoints = function transformPoints(gid, glyphPoints) {\n    if (!this.font.fvar || !this.font.gvar) {\n      return;\n    }\n    var gvar = this.font.gvar;\n    if (gid >= gvar.glyphCount) {\n      return;\n    }\n    var offset = gvar.offsets[gid];\n    if (offset === gvar.offsets[gid + 1]) {\n      return;\n    } // Read the gvar data for this glyph\n\n    var stream = this.font.stream;\n    stream.pos = offset;\n    if (stream.pos >= stream.length) {\n      return;\n    }\n    var tupleCount = stream.readUInt16BE();\n    var offsetToData = offset + stream.readUInt16BE();\n    if (tupleCount & TUPLES_SHARE_POINT_NUMBERS) {\n      var here = stream.pos;\n      stream.pos = offsetToData;\n      var sharedPoints = this.decodePoints();\n      offsetToData = stream.pos;\n      stream.pos = here;\n    }\n    var origPoints = glyphPoints.map(function (pt) {\n      return pt.copy();\n    });\n    tupleCount &= TUPLE_COUNT_MASK;\n    for (var i = 0; i < tupleCount; i++) {\n      var tupleDataSize = stream.readUInt16BE();\n      var tupleIndex = stream.readUInt16BE();\n      if (tupleIndex & EMBEDDED_TUPLE_COORD) {\n        var tupleCoords = [];\n        for (var a = 0; a < gvar.axisCount; a++) {\n          tupleCoords.push(stream.readInt16BE() / 16384);\n        }\n      } else {\n        if ((tupleIndex & TUPLE_INDEX_MASK) >= gvar.globalCoordCount) {\n          throw new Error('Invalid gvar table');\n        }\n        var tupleCoords = gvar.globalCoords[tupleIndex & TUPLE_INDEX_MASK];\n      }\n      if (tupleIndex & INTERMEDIATE_TUPLE) {\n        var startCoords = [];\n        for (var _a = 0; _a < gvar.axisCount; _a++) {\n          startCoords.push(stream.readInt16BE() / 16384);\n        }\n        var endCoords = [];\n        for (var _a2 = 0; _a2 < gvar.axisCount; _a2++) {\n          endCoords.push(stream.readInt16BE() / 16384);\n        }\n      } // Get the factor at which to apply this tuple\n\n      var factor = this.tupleFactor(tupleIndex, tupleCoords, startCoords, endCoords);\n      if (factor === 0) {\n        offsetToData += tupleDataSize;\n        continue;\n      }\n      var here = stream.pos;\n      stream.pos = offsetToData;\n      if (tupleIndex & PRIVATE_POINT_NUMBERS) {\n        var points = this.decodePoints();\n      } else {\n        var points = sharedPoints;\n      } // points.length = 0 means there are deltas for all points\n\n      var nPoints = points.length === 0 ? glyphPoints.length : points.length;\n      var xDeltas = this.decodeDeltas(nPoints);\n      var yDeltas = this.decodeDeltas(nPoints);\n      if (points.length === 0) {\n        // all points\n        for (var _i = 0; _i < glyphPoints.length; _i++) {\n          var point = glyphPoints[_i];\n          point.x += Math.round(xDeltas[_i] * factor);\n          point.y += Math.round(yDeltas[_i] * factor);\n        }\n      } else {\n        var outPoints = origPoints.map(function (pt) {\n          return pt.copy();\n        });\n        var hasDelta = glyphPoints.map(function () {\n          return false;\n        });\n        for (var _i2 = 0; _i2 < points.length; _i2++) {\n          var idx = points[_i2];\n          if (idx < glyphPoints.length) {\n            var _point = outPoints[idx];\n            hasDelta[idx] = true;\n            _point.x += Math.round(xDeltas[_i2] * factor);\n            _point.y += Math.round(yDeltas[_i2] * factor);\n          }\n        }\n        this.interpolateMissingDeltas(outPoints, origPoints, hasDelta);\n        for (var _i3 = 0; _i3 < glyphPoints.length; _i3++) {\n          var deltaX = outPoints[_i3].x - origPoints[_i3].x;\n          var deltaY = outPoints[_i3].y - origPoints[_i3].y;\n          glyphPoints[_i3].x += deltaX;\n          glyphPoints[_i3].y += deltaY;\n        }\n      }\n      offsetToData += tupleDataSize;\n      stream.pos = here;\n    }\n  };\n  _proto38.decodePoints = function decodePoints() {\n    var stream = this.font.stream;\n    var count = stream.readUInt8();\n    if (count & POINTS_ARE_WORDS) {\n      count = (count & POINT_RUN_COUNT_MASK) << 8 | stream.readUInt8();\n    }\n    var points = new Uint16Array(count);\n    var i = 0;\n    var point = 0;\n    while (i < count) {\n      var run = stream.readUInt8();\n      var runCount = (run & POINT_RUN_COUNT_MASK) + 1;\n      var fn = run & POINTS_ARE_WORDS ? stream.readUInt16 : stream.readUInt8;\n      for (var j = 0; j < runCount && i < count; j++) {\n        point += fn.call(stream);\n        points[i++] = point;\n      }\n    }\n    return points;\n  };\n  _proto38.decodeDeltas = function decodeDeltas(count) {\n    var stream = this.font.stream;\n    var i = 0;\n    var deltas = new Int16Array(count);\n    while (i < count) {\n      var run = stream.readUInt8();\n      var runCount = (run & DELTA_RUN_COUNT_MASK) + 1;\n      if (run & DELTAS_ARE_ZERO) {\n        i += runCount;\n      } else {\n        var fn = run & DELTAS_ARE_WORDS ? stream.readInt16BE : stream.readInt8;\n        for (var j = 0; j < runCount && i < count; j++) {\n          deltas[i++] = fn.call(stream);\n        }\n      }\n    }\n    return deltas;\n  };\n  _proto38.tupleFactor = function tupleFactor(tupleIndex, tupleCoords, startCoords, endCoords) {\n    var normalized = this.normalizedCoords;\n    var gvar = this.font.gvar;\n    var factor = 1;\n    for (var i = 0; i < gvar.axisCount; i++) {\n      if (tupleCoords[i] === 0) {\n        continue;\n      }\n      if (normalized[i] === 0) {\n        return 0;\n      }\n      if ((tupleIndex & INTERMEDIATE_TUPLE) === 0) {\n        if (normalized[i] < Math.min(0, tupleCoords[i]) || normalized[i] > Math.max(0, tupleCoords[i])) {\n          return 0;\n        }\n        factor = (factor * normalized[i] + Number.EPSILON) / (tupleCoords[i] + Number.EPSILON);\n      } else {\n        if (normalized[i] < startCoords[i] || normalized[i] > endCoords[i]) {\n          return 0;\n        } else if (normalized[i] < tupleCoords[i]) {\n          factor = factor * (normalized[i] - startCoords[i] + Number.EPSILON) / (tupleCoords[i] - startCoords[i] + Number.EPSILON);\n        } else {\n          factor = factor * (endCoords[i] - normalized[i] + Number.EPSILON) / (endCoords[i] - tupleCoords[i] + Number.EPSILON);\n        }\n      }\n    }\n    return factor;\n  } // Interpolates points without delta values.\n  // Needed for the Ø and Q glyphs in Skia.\n  // Algorithm from Freetype.\n  ;\n  _proto38.interpolateMissingDeltas = function interpolateMissingDeltas(points, inPoints, hasDelta) {\n    if (points.length === 0) {\n      return;\n    }\n    var point = 0;\n    while (point < points.length) {\n      var firstPoint = point; // find the end point of the contour\n\n      var endPoint = point;\n      var pt = points[endPoint];\n      while (!pt.endContour) {\n        pt = points[++endPoint];\n      } // find the first point that has a delta\n\n      while (point <= endPoint && !hasDelta[point]) {\n        point++;\n      }\n      if (point > endPoint) {\n        continue;\n      }\n      var firstDelta = point;\n      var curDelta = point;\n      point++;\n      while (point <= endPoint) {\n        // find the next point with a delta, and interpolate intermediate points\n        if (hasDelta[point]) {\n          this.deltaInterpolate(curDelta + 1, point - 1, curDelta, point, inPoints, points);\n          curDelta = point;\n        }\n        point++;\n      } // shift contour if we only have a single delta\n\n      if (curDelta === firstDelta) {\n        this.deltaShift(firstPoint, endPoint, curDelta, inPoints, points);\n      } else {\n        // otherwise, handle the remaining points at the end and beginning of the contour\n        this.deltaInterpolate(curDelta + 1, endPoint, curDelta, firstDelta, inPoints, points);\n        if (firstDelta > 0) {\n          this.deltaInterpolate(firstPoint, firstDelta - 1, curDelta, firstDelta, inPoints, points);\n        }\n      }\n      point = endPoint + 1;\n    }\n  };\n  _proto38.deltaInterpolate = function deltaInterpolate(p1, p2, ref1, ref2, inPoints, outPoints) {\n    if (p1 > p2) {\n      return;\n    }\n    var iterable = ['x', 'y'];\n    for (var i = 0; i < iterable.length; i++) {\n      var k = iterable[i];\n      if (inPoints[ref1][k] > inPoints[ref2][k]) {\n        var p = ref1;\n        ref1 = ref2;\n        ref2 = p;\n      }\n      var in1 = inPoints[ref1][k];\n      var in2 = inPoints[ref2][k];\n      var out1 = outPoints[ref1][k];\n      var out2 = outPoints[ref2][k]; // If the reference points have the same coordinate but different\n      // delta, inferred delta is zero.  Otherwise interpolate.\n\n      if (in1 !== in2 || out1 === out2) {\n        var scale = in1 === in2 ? 0 : (out2 - out1) / (in2 - in1);\n        for (var _p = p1; _p <= p2; _p++) {\n          var out = inPoints[_p][k];\n          if (out <= in1) {\n            out += out1 - in1;\n          } else if (out >= in2) {\n            out += out2 - in2;\n          } else {\n            out = out1 + (out - in1) * scale;\n          }\n          outPoints[_p][k] = out;\n        }\n      }\n    }\n  };\n  _proto38.deltaShift = function deltaShift(p1, p2, ref, inPoints, outPoints) {\n    var deltaX = outPoints[ref].x - inPoints[ref].x;\n    var deltaY = outPoints[ref].y - inPoints[ref].y;\n    if (deltaX === 0 && deltaY === 0) {\n      return;\n    }\n    for (var p = p1; p <= p2; p++) {\n      if (p !== ref) {\n        outPoints[p].x += deltaX;\n        outPoints[p].y += deltaY;\n      }\n    }\n  };\n  _proto38.getAdvanceAdjustment = function getAdvanceAdjustment(gid, table) {\n    var outerIndex, innerIndex;\n    if (table.advanceWidthMapping) {\n      var idx = gid;\n      if (idx >= table.advanceWidthMapping.mapCount) {\n        idx = table.advanceWidthMapping.mapCount - 1;\n      }\n      var entryFormat = table.advanceWidthMapping.entryFormat;\n      var _table$advanceWidthMa = table.advanceWidthMapping.mapData[idx];\n      outerIndex = _table$advanceWidthMa.outerIndex;\n      innerIndex = _table$advanceWidthMa.innerIndex;\n    } else {\n      outerIndex = 0;\n      innerIndex = gid;\n    }\n    return this.getDelta(table.itemVariationStore, outerIndex, innerIndex);\n  } // See pseudo code from `Font Variations Overview'\n  // in the OpenType specification.\n  ;\n  _proto38.getDelta = function getDelta(itemStore, outerIndex, innerIndex) {\n    if (outerIndex >= itemStore.itemVariationData.length) {\n      return 0;\n    }\n    var varData = itemStore.itemVariationData[outerIndex];\n    if (innerIndex >= varData.deltaSets.length) {\n      return 0;\n    }\n    var deltaSet = varData.deltaSets[innerIndex];\n    var blendVector = this.getBlendVector(itemStore, outerIndex);\n    var netAdjustment = 0;\n    for (var master = 0; master < varData.regionIndexCount; master++) {\n      netAdjustment += deltaSet.deltas[master] * blendVector[master];\n    }\n    return netAdjustment;\n  };\n  _proto38.getBlendVector = function getBlendVector(itemStore, outerIndex) {\n    var varData = itemStore.itemVariationData[outerIndex];\n    if (this.blendVectors.has(varData)) {\n      return this.blendVectors.get(varData);\n    }\n    var normalizedCoords = this.normalizedCoords;\n    var blendVector = []; // outer loop steps through master designs to be blended\n\n    for (var master = 0; master < varData.regionIndexCount; master++) {\n      var scalar = 1;\n      var regionIndex = varData.regionIndexes[master];\n      var axes = itemStore.variationRegionList.variationRegions[regionIndex]; // inner loop steps through axes in this region\n\n      for (var j = 0; j < axes.length; j++) {\n        var axis = axes[j];\n        var axisScalar = void 0; // compute the scalar contribution of this axis\n        // ignore invalid ranges\n\n        if (axis.startCoord > axis.peakCoord || axis.peakCoord > axis.endCoord) {\n          axisScalar = 1;\n        } else if (axis.startCoord < 0 && axis.endCoord > 0 && axis.peakCoord !== 0) {\n          axisScalar = 1; // peak of 0 means ignore this axis\n        } else if (axis.peakCoord === 0) {\n          axisScalar = 1; // ignore this region if coords are out of range\n        } else if (normalizedCoords[j] < axis.startCoord || normalizedCoords[j] > axis.endCoord) {\n          axisScalar = 0; // calculate a proportional factor\n        } else {\n          if (normalizedCoords[j] === axis.peakCoord) {\n            axisScalar = 1;\n          } else if (normalizedCoords[j] < axis.peakCoord) {\n            axisScalar = (normalizedCoords[j] - axis.startCoord + Number.EPSILON) / (axis.peakCoord - axis.startCoord + Number.EPSILON);\n          } else {\n            axisScalar = (axis.endCoord - normalizedCoords[j] + Number.EPSILON) / (axis.endCoord - axis.peakCoord + Number.EPSILON);\n          }\n        } // take product of all the axis scalars\n\n        scalar *= axisScalar;\n      }\n      blendVector[master] = scalar;\n    }\n    this.blendVectors.set(varData, blendVector);\n    return blendVector;\n  };\n  return GlyphVariationProcessor;\n}();\nvar resolved = Promise.resolve();\nvar Subset = /*#__PURE__*/function () {\n  function Subset(font) {\n    this.font = font;\n    this.glyphs = [];\n    this.mapping = {}; // always include the missing glyph\n\n    this.includeGlyph(0);\n  }\n  var _proto39 = Subset.prototype;\n  _proto39.includeGlyph = function includeGlyph(glyph) {\n    if (typeof glyph === 'object') {\n      glyph = glyph.id;\n    }\n    if (this.mapping[glyph] == null) {\n      this.glyphs.push(glyph);\n      this.mapping[glyph] = this.glyphs.length - 1;\n    }\n    return this.mapping[glyph];\n  };\n  _proto39.encodeStream = function encodeStream() {\n    var _this11 = this;\n    var s = new r.EncodeStream();\n    resolved.then(function () {\n      _this11.encode(s);\n      return s.end();\n    });\n    return s;\n  };\n  return Subset;\n}();\nvar ON_CURVE$1 = 1 << 0;\nvar X_SHORT_VECTOR$1 = 1 << 1;\nvar Y_SHORT_VECTOR$1 = 1 << 2;\nvar REPEAT$1 = 1 << 3;\nvar SAME_X$1 = 1 << 4;\nvar SAME_Y$1 = 1 << 5;\nvar Point$1 = /*#__PURE__*/function () {\n  function Point$1() {}\n  Point$1.size = function size(val) {\n    return val >= 0 && val <= 255 ? 1 : 2;\n  };\n  Point$1.encode = function encode(stream, value) {\n    if (value >= 0 && value <= 255) {\n      stream.writeUInt8(value);\n    } else {\n      stream.writeInt16BE(value);\n    }\n  };\n  return Point$1;\n}();\nvar Glyf = new r.Struct({\n  numberOfContours: r.int16,\n  // if negative, this is a composite glyph\n  xMin: r.int16,\n  yMin: r.int16,\n  xMax: r.int16,\n  yMax: r.int16,\n  endPtsOfContours: new r.Array(r.uint16, 'numberOfContours'),\n  instructions: new r.Array(r.uint8, r.uint16),\n  flags: new r.Array(r.uint8, 0),\n  xPoints: new r.Array(Point$1, 0),\n  yPoints: new r.Array(Point$1, 0)\n});\n/**\r\n * Encodes TrueType glyph outlines\r\n */\nvar TTFGlyphEncoder = /*#__PURE__*/function () {\n  function TTFGlyphEncoder() {}\n  var _proto40 = TTFGlyphEncoder.prototype;\n  _proto40.encodeSimple = function encodeSimple(path, instructions) {\n    if (instructions === void 0) {\n      instructions = [];\n    }\n    var endPtsOfContours = [];\n    var xPoints = [];\n    var yPoints = [];\n    var flags = [];\n    var same = 0;\n    var lastX = 0,\n      lastY = 0,\n      lastFlag = 0;\n    var pointCount = 0;\n    for (var i = 0; i < path.commands.length; i++) {\n      var c = path.commands[i];\n      for (var j = 0; j < c.args.length; j += 2) {\n        var x = c.args[j];\n        var y = c.args[j + 1];\n        var flag = 0; // If the ending point of a quadratic curve is the midpoint\n        // between the control point and the control point of the next\n        // quadratic curve, we can omit the ending point.\n\n        if (c.command === 'quadraticCurveTo' && j === 2) {\n          var next = path.commands[i + 1];\n          if (next && next.command === 'quadraticCurveTo') {\n            var midX = (lastX + next.args[0]) / 2;\n            var midY = (lastY + next.args[1]) / 2;\n            if (x === midX && y === midY) {\n              continue;\n            }\n          }\n        } // All points except control points are on curve.\n\n        if (!(c.command === 'quadraticCurveTo' && j === 0)) {\n          flag |= ON_CURVE$1;\n        }\n        flag = this._encodePoint(x, lastX, xPoints, flag, X_SHORT_VECTOR$1, SAME_X$1);\n        flag = this._encodePoint(y, lastY, yPoints, flag, Y_SHORT_VECTOR$1, SAME_Y$1);\n        if (flag === lastFlag && same < 255) {\n          flags[flags.length - 1] |= REPEAT$1;\n          same++;\n        } else {\n          if (same > 0) {\n            flags.push(same);\n            same = 0;\n          }\n          flags.push(flag);\n          lastFlag = flag;\n        }\n        lastX = x;\n        lastY = y;\n        pointCount++;\n      }\n      if (c.command === 'closePath') {\n        endPtsOfContours.push(pointCount - 1);\n      }\n    } // Close the path if the last command didn't already\n\n    if (path.commands.length > 1 && path.commands[path.commands.length - 1].command !== 'closePath') {\n      endPtsOfContours.push(pointCount - 1);\n    }\n    var bbox = path.bbox;\n    var glyf = {\n      numberOfContours: endPtsOfContours.length,\n      xMin: bbox.minX,\n      yMin: bbox.minY,\n      xMax: bbox.maxX,\n      yMax: bbox.maxY,\n      endPtsOfContours: endPtsOfContours,\n      instructions: instructions,\n      flags: flags,\n      xPoints: xPoints,\n      yPoints: yPoints\n    };\n    var size = Glyf.size(glyf);\n    var tail = 4 - size % 4;\n    var stream = new r.EncodeStream(size + tail);\n    Glyf.encode(stream, glyf); // Align to 4-byte length\n\n    if (tail !== 0) {\n      stream.fill(0, tail);\n    }\n    return stream.buffer;\n  };\n  _proto40._encodePoint = function _encodePoint(value, last, points, flag, shortFlag, sameFlag) {\n    var diff = value - last;\n    if (value === last) {\n      flag |= sameFlag;\n    } else {\n      if (-255 <= diff && diff <= 255) {\n        flag |= shortFlag;\n        if (diff < 0) {\n          diff = -diff;\n        } else {\n          flag |= sameFlag;\n        }\n      }\n      points.push(diff);\n    }\n    return flag;\n  };\n  return TTFGlyphEncoder;\n}();\nvar TTFSubset = /*#__PURE__*/function (_Subset) {\n  _inheritsLoose(TTFSubset, _Subset);\n  function TTFSubset(font) {\n    var _this12;\n    _this12 = _Subset.call(this, font) || this;\n    _this12.glyphEncoder = new TTFGlyphEncoder();\n    return _this12;\n  }\n  var _proto41 = TTFSubset.prototype;\n  _proto41._addGlyph = function _addGlyph(gid) {\n    var glyph = this.font.getGlyph(gid);\n    var glyf = glyph._decode(); // get the offset to the glyph from the loca table\n\n    var curOffset = this.font.loca.offsets[gid];\n    var nextOffset = this.font.loca.offsets[gid + 1];\n    var stream = this.font._getTableStream('glyf');\n    stream.pos += curOffset;\n    var buffer = stream.readBuffer(nextOffset - curOffset); // if it is a compound glyph, include its components\n\n    if (glyf && glyf.numberOfContours < 0) {\n      buffer = Buffer.from(buffer);\n      for (var _iterator72 = _createForOfIteratorHelperLoose(glyf.components), _step72; !(_step72 = _iterator72()).done;) {\n        var component = _step72.value;\n        gid = this.includeGlyph(component.glyphID);\n        buffer.writeUInt16BE(gid, component.pos);\n      }\n    } else if (glyf && this.font._variationProcessor) {\n      // If this is a TrueType variation glyph, re-encode the path\n      buffer = this.glyphEncoder.encodeSimple(glyph.path, glyf.instructions);\n    }\n    this.glyf.push(buffer);\n    this.loca.offsets.push(this.offset);\n    this.hmtx.metrics.push({\n      advance: glyph.advanceWidth,\n      bearing: glyph._getMetrics().leftBearing\n    });\n    this.offset += buffer.length;\n    return this.glyf.length - 1;\n  };\n  _proto41.encode = function encode(stream) {\n    // tables required by PDF spec:\n    //   head, hhea, loca, maxp, cvt , prep, glyf, hmtx, fpgm\n    //\n    // additional tables required for standalone fonts:\n    //   name, cmap, OS/2, post\n    this.glyf = [];\n    this.offset = 0;\n    this.loca = {\n      offsets: [],\n      version: this.font.loca.version\n    };\n    this.hmtx = {\n      metrics: [],\n      bearings: []\n    }; // include all the glyphs\n    // not using a for loop because we need to support adding more\n    // glyphs to the array as we go, and CoffeeScript caches the length.\n\n    var i = 0;\n    while (i < this.glyphs.length) {\n      this._addGlyph(this.glyphs[i++]);\n    }\n    var maxp = cloneDeep(this.font.maxp);\n    maxp.numGlyphs = this.glyf.length;\n    this.loca.offsets.push(this.offset);\n    var head = cloneDeep(this.font.head);\n    head.indexToLocFormat = this.loca.version;\n    var hhea = cloneDeep(this.font.hhea);\n    hhea.numberOfMetrics = this.hmtx.metrics.length; // map = []\n    // for index in [0...256]\n    //     if index < @numGlyphs\n    //         map[index] = index\n    //     else\n    //         map[index] = 0\n    //\n    // cmapTable =\n    //     version: 0\n    //     length: 262\n    //     language: 0\n    //     codeMap: map\n    //\n    // cmap =\n    //     version: 0\n    //     numSubtables: 1\n    //     tables: [\n    //         platformID: 1\n    //         encodingID: 0\n    //         table: cmapTable\n    //     ]\n    // TODO: subset prep, cvt, fpgm?\n\n    Directory.encode(stream, {\n      tables: {\n        head: head,\n        hhea: hhea,\n        loca: this.loca,\n        maxp: maxp,\n        'cvt ': this.font['cvt '],\n        prep: this.font.prep,\n        glyf: this.glyf,\n        hmtx: this.hmtx,\n        fpgm: this.font.fpgm // name: clone @font.name\n        // 'OS/2': clone @font['OS/2']\n        // post: clone @font.post\n        // cmap: cmap\n      }\n    });\n  };\n  return TTFSubset;\n}(Subset);\nvar CFFSubset = /*#__PURE__*/function (_Subset2) {\n  _inheritsLoose(CFFSubset, _Subset2);\n  function CFFSubset(font) {\n    var _this13;\n    _this13 = _Subset2.call(this, font) || this;\n    _this13.cff = _this13.font['CFF '];\n    if (!_this13.cff) {\n      throw new Error('Not a CFF Font');\n    }\n    return _this13;\n  }\n  var _proto42 = CFFSubset.prototype;\n  _proto42.subsetCharstrings = function subsetCharstrings() {\n    this.charstrings = [];\n    var gsubrs = {};\n    for (var _iterator73 = _createForOfIteratorHelperLoose(this.glyphs), _step73; !(_step73 = _iterator73()).done;) {\n      var gid = _step73.value;\n      this.charstrings.push(this.cff.getCharString(gid));\n      var glyph = this.font.getGlyph(gid);\n      var path = glyph.path; // this causes the glyph to be parsed\n\n      for (var subr in glyph._usedGsubrs) {\n        gsubrs[subr] = true;\n      }\n    }\n    this.gsubrs = this.subsetSubrs(this.cff.globalSubrIndex, gsubrs);\n  };\n  _proto42.subsetSubrs = function subsetSubrs(subrs, used) {\n    var res = [];\n    for (var i = 0; i < subrs.length; i++) {\n      var subr = subrs[i];\n      if (used[i]) {\n        this.cff.stream.pos = subr.offset;\n        res.push(this.cff.stream.readBuffer(subr.length));\n      } else {\n        res.push(Buffer.from([11])); // return\n      }\n    }\n\n    return res;\n  };\n  _proto42.subsetFontdict = function subsetFontdict(topDict) {\n    topDict.FDArray = [];\n    topDict.FDSelect = {\n      version: 0,\n      fds: []\n    };\n    var used_fds = {};\n    var used_subrs = [];\n    var fd_select = {};\n    for (var _iterator74 = _createForOfIteratorHelperLoose(this.glyphs), _step74; !(_step74 = _iterator74()).done;) {\n      var gid = _step74.value;\n      var fd = this.cff.fdForGlyph(gid);\n      if (fd == null) {\n        continue;\n      }\n      if (!used_fds[fd]) {\n        topDict.FDArray.push(Object.assign({}, this.cff.topDict.FDArray[fd]));\n        used_subrs.push({});\n        fd_select[fd] = topDict.FDArray.length - 1;\n      }\n      used_fds[fd] = true;\n      topDict.FDSelect.fds.push(fd_select[fd]);\n      var glyph = this.font.getGlyph(gid);\n      var path = glyph.path; // this causes the glyph to be parsed\n\n      for (var subr in glyph._usedSubrs) {\n        used_subrs[fd_select[fd]][subr] = true;\n      }\n    }\n    for (var i = 0; i < topDict.FDArray.length; i++) {\n      var dict = topDict.FDArray[i];\n      delete dict.FontName;\n      if (dict.Private && dict.Private.Subrs) {\n        dict.Private = Object.assign({}, dict.Private);\n        dict.Private.Subrs = this.subsetSubrs(dict.Private.Subrs, used_subrs[i]);\n      }\n    }\n    return;\n  };\n  _proto42.createCIDFontdict = function createCIDFontdict(topDict) {\n    var used_subrs = {};\n    for (var _iterator75 = _createForOfIteratorHelperLoose(this.glyphs), _step75; !(_step75 = _iterator75()).done;) {\n      var gid = _step75.value;\n      var glyph = this.font.getGlyph(gid);\n      var path = glyph.path; // this causes the glyph to be parsed\n\n      for (var subr in glyph._usedSubrs) {\n        used_subrs[subr] = true;\n      }\n    }\n    var privateDict = Object.assign({}, this.cff.topDict.Private);\n    if (this.cff.topDict.Private && this.cff.topDict.Private.Subrs) {\n      privateDict.Subrs = this.subsetSubrs(this.cff.topDict.Private.Subrs, used_subrs);\n    }\n    topDict.FDArray = [{\n      Private: privateDict\n    }];\n    return topDict.FDSelect = {\n      version: 3,\n      nRanges: 1,\n      ranges: [{\n        first: 0,\n        fd: 0\n      }],\n      sentinel: this.charstrings.length\n    };\n  };\n  _proto42.addString = function addString(string) {\n    if (!string) {\n      return null;\n    }\n    if (!this.strings) {\n      this.strings = [];\n    }\n    this.strings.push(string);\n    return standardStrings.length + this.strings.length - 1;\n  };\n  _proto42.encode = function encode(stream) {\n    this.subsetCharstrings();\n    var charset = {\n      version: this.charstrings.length > 255 ? 2 : 1,\n      ranges: [{\n        first: 1,\n        nLeft: this.charstrings.length - 2\n      }]\n    };\n    var topDict = Object.assign({}, this.cff.topDict);\n    topDict.Private = null;\n    topDict.charset = charset;\n    topDict.Encoding = null;\n    topDict.CharStrings = this.charstrings;\n    for (var _i24 = 0, _arr2 = ['version', 'Notice', 'Copyright', 'FullName', 'FamilyName', 'Weight', 'PostScript', 'BaseFontName', 'FontName']; _i24 < _arr2.length; _i24++) {\n      var key = _arr2[_i24];\n      topDict[key] = this.addString(this.cff.string(topDict[key]));\n    }\n    topDict.ROS = [this.addString('Adobe'), this.addString('Identity'), 0];\n    topDict.CIDCount = this.charstrings.length;\n    if (this.cff.isCIDFont) {\n      this.subsetFontdict(topDict);\n    } else {\n      this.createCIDFontdict(topDict);\n    }\n    var top = {\n      version: 1,\n      hdrSize: this.cff.hdrSize,\n      offSize: 4,\n      header: this.cff.header,\n      nameIndex: [this.cff.postscriptName],\n      topDictIndex: [topDict],\n      stringIndex: this.strings,\n      globalSubrIndex: this.gsubrs\n    };\n    CFFTop.encode(stream, top);\n  };\n  return CFFSubset;\n}(Subset);\nvar _class$4;\n/**\r\n * This is the base class for all SFNT-based font formats in fontkit.\r\n * It supports TrueType, and PostScript glyphs, and several color glyph formats.\r\n */\n\nvar TTFFont = (_class$4 = /*#__PURE__*/function () {\n  TTFFont.probe = function probe(buffer) {\n    var format = buffer.toString('ascii', 0, 4);\n    return format === 'true' || format === 'OTTO' || format === String.fromCharCode(0, 1, 0, 0);\n  };\n  function TTFFont(stream, variationCoords) {\n    if (variationCoords === void 0) {\n      variationCoords = null;\n    }\n    this.defaultLanguage = null;\n    this.stream = stream;\n    this.variationCoords = variationCoords;\n    this._directoryPos = this.stream.pos;\n    this._tables = {};\n    this._glyphs = {};\n    this._decodeDirectory(); // define properties for each table to lazily parse\n\n    for (var tag in this.directory.tables) {\n      var table = this.directory.tables[tag];\n      if (tables[tag] && table.length > 0) {\n        Object.defineProperty(this, tag, {\n          get: this._getTable.bind(this, table)\n        });\n      }\n    }\n  }\n  var _proto43 = TTFFont.prototype;\n  _proto43.setDefaultLanguage = function setDefaultLanguage(lang) {\n    if (lang === void 0) {\n      lang = null;\n    }\n    this.defaultLanguage = lang;\n  };\n  _proto43._getTable = function _getTable(table) {\n    if (!(table.tag in this._tables)) {\n      try {\n        this._tables[table.tag] = this._decodeTable(table);\n      } catch (e) {\n        if (fontkit.logErrors) {\n          console.error(\"Error decoding table \".concat(table.tag));\n          console.error(e.stack);\n        }\n      }\n    }\n    return this._tables[table.tag];\n  };\n  _proto43._getTableStream = function _getTableStream(tag) {\n    var table = this.directory.tables[tag];\n    if (table) {\n      this.stream.pos = table.offset;\n      return this.stream;\n    }\n    return null;\n  };\n  _proto43._decodeDirectory = function _decodeDirectory() {\n    return this.directory = Directory.decode(this.stream, {\n      _startOffset: 0\n    });\n  };\n  _proto43._decodeTable = function _decodeTable(table) {\n    var pos = this.stream.pos;\n    var stream = this._getTableStream(table.tag);\n    var result = tables[table.tag].decode(stream, this, table.length);\n    this.stream.pos = pos;\n    return result;\n  }\n  /**\r\n   * Gets a string from the font's `name` table\r\n   * `lang` is a BCP-47 language code.\r\n   * @return {string}\r\n   */;\n  _proto43.getName = function getName(key, lang) {\n    if (lang === void 0) {\n      lang = this.defaultLanguage || fontkit.defaultLanguage;\n    }\n    var record = this.name && this.name.records[key];\n    if (record) {\n      // Attempt to retrieve the entry, depending on which translation is available:\n      return record[lang] || record[this.defaultLanguage] || record[fontkit.defaultLanguage] || record['en'] || record[Object.keys(record)[0]] // Seriously, ANY language would be fine\n      || null;\n    }\n    return null;\n  }\n  /**\r\n   * The unique PostScript name for this font, e.g. \"Helvetica-Bold\"\r\n   * @type {string}\r\n   */;\n  /**\r\n   * Returns whether there is glyph in the font for the given unicode code point.\r\n   *\r\n   * @param {number} codePoint\r\n   * @return {boolean}\r\n   */\n  _proto43.hasGlyphForCodePoint = function hasGlyphForCodePoint(codePoint) {\n    return !!this._cmapProcessor.lookup(codePoint);\n  }\n  /**\r\n   * Maps a single unicode code point to a Glyph object.\r\n   * Does not perform any advanced substitutions (there is no context to do so).\r\n   *\r\n   * @param {number} codePoint\r\n   * @return {Glyph}\r\n   */;\n  _proto43.glyphForCodePoint = function glyphForCodePoint(codePoint) {\n    return this.getGlyph(this._cmapProcessor.lookup(codePoint), [codePoint]);\n  }\n  /**\r\n   * Returns an array of Glyph objects for the given string.\r\n   * This is only a one-to-one mapping from characters to glyphs.\r\n   * For most uses, you should use font.layout (described below), which\r\n   * provides a much more advanced mapping supporting AAT and OpenType shaping.\r\n   *\r\n   * @param {string} string\r\n   * @return {Glyph[]}\r\n   */;\n  _proto43.glyphsForString = function glyphsForString(string) {\n    var glyphs = [];\n    var len = string.length;\n    var idx = 0;\n    var last = -1;\n    var state = -1;\n    while (idx <= len) {\n      var code = 0;\n      var nextState = 0;\n      if (idx < len) {\n        // Decode the next codepoint from UTF 16\n        code = string.charCodeAt(idx++);\n        if (0xd800 <= code && code <= 0xdbff && idx < len) {\n          var next = string.charCodeAt(idx);\n          if (0xdc00 <= next && next <= 0xdfff) {\n            idx++;\n            code = ((code & 0x3ff) << 10) + (next & 0x3ff) + 0x10000;\n          }\n        } // Compute the next state: 1 if the next codepoint is a variation selector, 0 otherwise.\n\n        nextState = 0xfe00 <= code && code <= 0xfe0f || 0xe0100 <= code && code <= 0xe01ef ? 1 : 0;\n      } else {\n        idx++;\n      }\n      if (state === 0 && nextState === 1) {\n        // Variation selector following normal codepoint.\n        glyphs.push(this.getGlyph(this._cmapProcessor.lookup(last, code), [last, code]));\n      } else if (state === 0 && nextState === 0) {\n        // Normal codepoint following normal codepoint.\n        glyphs.push(this.glyphForCodePoint(last));\n      }\n      last = code;\n      state = nextState;\n    }\n    return glyphs;\n  };\n  /**\r\n   * Returns a GlyphRun object, which includes an array of Glyphs and GlyphPositions for the given string.\r\n   *\r\n   * @param {string} string\r\n   * @param {string[]} [userFeatures]\r\n   * @param {string} [script]\r\n   * @param {string} [language]\r\n   * @param {string} [direction]\r\n   * @return {GlyphRun}\r\n   */\n  _proto43.layout = function layout(string, userFeatures, script, language, direction) {\n    return this._layoutEngine.layout(string, userFeatures, script, language, direction);\n  }\n  /**\r\n   * Returns an array of strings that map to the given glyph id.\r\n   * @param {number} gid - glyph id\r\n   */;\n  _proto43.stringsForGlyph = function stringsForGlyph(gid) {\n    return this._layoutEngine.stringsForGlyph(gid);\n  }\n  /**\r\n   * An array of all [OpenType feature tags](https://www.microsoft.com/typography/otspec/featuretags.htm)\r\n   * (or mapped AAT tags) supported by the font.\r\n   * The features parameter is an array of OpenType feature tags to be applied in addition to the default set.\r\n   * If this is an AAT font, the OpenType feature tags are mapped to AAT features.\r\n   *\r\n   * @type {string[]}\r\n   */;\n  _proto43.getAvailableFeatures = function getAvailableFeatures(script, language) {\n    return this._layoutEngine.getAvailableFeatures(script, language);\n  };\n  _proto43._getBaseGlyph = function _getBaseGlyph(glyph, characters) {\n    if (characters === void 0) {\n      characters = [];\n    }\n    if (!this._glyphs[glyph]) {\n      if (this.directory.tables.glyf) {\n        this._glyphs[glyph] = new TTFGlyph(glyph, characters, this);\n      } else if (this.directory.tables['CFF '] || this.directory.tables.CFF2) {\n        this._glyphs[glyph] = new CFFGlyph(glyph, characters, this);\n      }\n    }\n    return this._glyphs[glyph] || null;\n  }\n  /**\r\n   * Returns a glyph object for the given glyph id.\r\n   * You can pass the array of code points this glyph represents for\r\n   * your use later, and it will be stored in the glyph object.\r\n   *\r\n   * @param {number} glyph\r\n   * @param {number[]} characters\r\n   * @return {Glyph}\r\n   */;\n  _proto43.getGlyph = function getGlyph(glyph, characters) {\n    if (characters === void 0) {\n      characters = [];\n    }\n    if (!this._glyphs[glyph]) {\n      if (this.directory.tables.sbix) {\n        this._glyphs[glyph] = new SBIXGlyph(glyph, characters, this);\n      } else if (this.directory.tables.COLR && this.directory.tables.CPAL) {\n        this._glyphs[glyph] = new COLRGlyph(glyph, characters, this);\n      } else {\n        this._getBaseGlyph(glyph, characters);\n      }\n    }\n    return this._glyphs[glyph] || null;\n  }\n  /**\r\n   * Returns a Subset for this font.\r\n   * @return {Subset}\r\n   */;\n  _proto43.createSubset = function createSubset() {\n    if (this.directory.tables['CFF ']) {\n      return new CFFSubset(this);\n    }\n    return new TTFSubset(this);\n  }\n  /**\r\n   * Returns an object describing the available variation axes\r\n   * that this font supports. Keys are setting tags, and values\r\n   * contain the axis name, range, and default value.\r\n   *\r\n   * @type {object}\r\n   */;\n  /**\r\n   * Returns a new font with the given variation settings applied.\r\n   * Settings can either be an instance name, or an object containing\r\n   * variation tags as specified by the `variationAxes` property.\r\n   *\r\n   * @param {object} settings\r\n   * @return {TTFFont}\r\n   */\n  _proto43.getVariation = function getVariation(settings) {\n    if (!(this.directory.tables.fvar && (this.directory.tables.gvar && this.directory.tables.glyf || this.directory.tables.CFF2))) {\n      throw new Error('Variations require a font with the fvar, gvar and glyf, or CFF2 tables.');\n    }\n    if (typeof settings === 'string') {\n      settings = this.namedVariations[settings];\n    }\n    if (typeof settings !== 'object') {\n      throw new Error('Variation settings must be either a variation name or settings object.');\n    } // normalize the coordinates\n\n    var coords = this.fvar.axis.map(function (axis, i) {\n      var axisTag = axis.axisTag.trim();\n      if (axisTag in settings) {\n        return Math.max(axis.minValue, Math.min(axis.maxValue, settings[axisTag]));\n      } else {\n        return axis.defaultValue;\n      }\n    });\n    var stream = new r.DecodeStream(this.stream.buffer);\n    stream.pos = this._directoryPos;\n    var font = new TTFFont(stream, coords);\n    font._tables = this._tables;\n    return font;\n  };\n  // Standardized format plugin API\n  _proto43.getFont = function getFont(name) {\n    return this.getVariation(name);\n  };\n  _createClass(TTFFont, [{\n    key: \"postscriptName\",\n    get: function get() {\n      return this.getName('postscriptName');\n    }\n    /**\r\n     * The font's full name, e.g. \"Helvetica Bold\"\r\n     * @type {string}\r\n     */\n  }, {\n    key: \"fullName\",\n    get: function get() {\n      return this.getName('fullName');\n    }\n    /**\r\n     * The font's family name, e.g. \"Helvetica\"\r\n     * @type {string}\r\n     */\n  }, {\n    key: \"familyName\",\n    get: function get() {\n      return this.getName('fontFamily');\n    }\n    /**\r\n     * The font's sub-family, e.g. \"Bold\".\r\n     * @type {string}\r\n     */\n  }, {\n    key: \"subfamilyName\",\n    get: function get() {\n      return this.getName('fontSubfamily');\n    }\n    /**\r\n     * The font's copyright information\r\n     * @type {string}\r\n     */\n  }, {\n    key: \"copyright\",\n    get: function get() {\n      return this.getName('copyright');\n    }\n    /**\r\n     * The font's version number\r\n     * @type {string}\r\n     */\n  }, {\n    key: \"version\",\n    get: function get() {\n      return this.getName('version');\n    }\n    /**\r\n     * The font’s [ascender](https://en.wikipedia.org/wiki/Ascender_(typography))\r\n     * @type {number}\r\n     */\n  }, {\n    key: \"ascent\",\n    get: function get() {\n      return this.hhea.ascent;\n    }\n    /**\r\n     * The font’s [descender](https://en.wikipedia.org/wiki/Descender)\r\n     * @type {number}\r\n     */\n  }, {\n    key: \"descent\",\n    get: function get() {\n      return this.hhea.descent;\n    }\n    /**\r\n     * The amount of space that should be included between lines\r\n     * @type {number}\r\n     */\n  }, {\n    key: \"lineGap\",\n    get: function get() {\n      return this.hhea.lineGap;\n    }\n    /**\r\n     * The offset from the normal underline position that should be used\r\n     * @type {number}\r\n     */\n  }, {\n    key: \"underlinePosition\",\n    get: function get() {\n      return this.post.underlinePosition;\n    }\n    /**\r\n     * The weight of the underline that should be used\r\n     * @type {number}\r\n     */\n  }, {\n    key: \"underlineThickness\",\n    get: function get() {\n      return this.post.underlineThickness;\n    }\n    /**\r\n     * If this is an italic font, the angle the cursor should be drawn at to match the font design\r\n     * @type {number}\r\n     */\n  }, {\n    key: \"italicAngle\",\n    get: function get() {\n      return this.post.italicAngle;\n    }\n    /**\r\n     * The height of capital letters above the baseline.\r\n     * See [here](https://en.wikipedia.org/wiki/Cap_height) for more details.\r\n     * @type {number}\r\n     */\n  }, {\n    key: \"capHeight\",\n    get: function get() {\n      var os2 = this['OS/2'];\n      return os2 ? os2.capHeight : this.ascent;\n    }\n    /**\r\n     * The height of lower case letters in the font.\r\n     * See [here](https://en.wikipedia.org/wiki/X-height) for more details.\r\n     * @type {number}\r\n     */\n  }, {\n    key: \"xHeight\",\n    get: function get() {\n      var os2 = this['OS/2'];\n      return os2 ? os2.xHeight : 0;\n    }\n    /**\r\n     * The number of glyphs in the font.\r\n     * @type {number}\r\n     */\n  }, {\n    key: \"numGlyphs\",\n    get: function get() {\n      return this.maxp.numGlyphs;\n    }\n    /**\r\n     * The size of the font’s internal coordinate grid\r\n     * @type {number}\r\n     */\n  }, {\n    key: \"unitsPerEm\",\n    get: function get() {\n      return this.head.unitsPerEm;\n    }\n    /**\r\n     * The font’s bounding box, i.e. the box that encloses all glyphs in the font.\r\n     * @type {BBox}\r\n     */\n  }, {\n    key: \"bbox\",\n    get: function get() {\n      return Object.freeze(new BBox(this.head.xMin, this.head.yMin, this.head.xMax, this.head.yMax));\n    }\n  }, {\n    key: \"_cmapProcessor\",\n    get: function get() {\n      return new CmapProcessor(this.cmap);\n    }\n    /**\r\n     * An array of all of the unicode code points supported by the font.\r\n     * @type {number[]}\r\n     */\n  }, {\n    key: \"characterSet\",\n    get: function get() {\n      return this._cmapProcessor.getCharacterSet();\n    }\n  }, {\n    key: \"_layoutEngine\",\n    get: function get() {\n      return new LayoutEngine(this);\n    }\n  }, {\n    key: \"availableFeatures\",\n    get: function get() {\n      return this._layoutEngine.getAvailableFeatures();\n    }\n  }, {\n    key: \"variationAxes\",\n    get: function get() {\n      var res = {};\n      if (!this.fvar) {\n        return res;\n      }\n      for (var _iterator76 = _createForOfIteratorHelperLoose(this.fvar.axis), _step76; !(_step76 = _iterator76()).done;) {\n        var axis = _step76.value;\n        res[axis.axisTag.trim()] = {\n          name: axis.name.en,\n          min: axis.minValue,\n          default: axis.defaultValue,\n          max: axis.maxValue\n        };\n      }\n      return res;\n    }\n    /**\r\n     * Returns an object describing the named variation instances\r\n     * that the font designer has specified. Keys are variation names\r\n     * and values are the variation settings for this instance.\r\n     *\r\n     * @type {object}\r\n     */\n  }, {\n    key: \"namedVariations\",\n    get: function get() {\n      var res = {};\n      if (!this.fvar) {\n        return res;\n      }\n      for (var _iterator77 = _createForOfIteratorHelperLoose(this.fvar.instance), _step77; !(_step77 = _iterator77()).done;) {\n        var instance = _step77.value;\n        var settings = {};\n        for (var i = 0; i < this.fvar.axis.length; i++) {\n          var axis = this.fvar.axis[i];\n          settings[axis.axisTag.trim()] = instance.coord[i];\n        }\n        res[instance.name.en] = settings;\n      }\n      return res;\n    }\n  }, {\n    key: \"_variationProcessor\",\n    get: function get() {\n      if (!this.fvar) {\n        return null;\n      }\n      var variationCoords = this.variationCoords; // Ignore if no variation coords and not CFF2\n\n      if (!variationCoords && !this.CFF2) {\n        return null;\n      }\n      if (!variationCoords) {\n        variationCoords = this.fvar.axis.map(function (axis) {\n          return axis.defaultValue;\n        });\n      }\n      return new GlyphVariationProcessor(this, variationCoords);\n    }\n  }]);\n  return TTFFont;\n}(), (_applyDecoratedDescriptor(_class$4.prototype, \"bbox\", [cache], Object.getOwnPropertyDescriptor(_class$4.prototype, \"bbox\"), _class$4.prototype), _applyDecoratedDescriptor(_class$4.prototype, \"_cmapProcessor\", [cache], Object.getOwnPropertyDescriptor(_class$4.prototype, \"_cmapProcessor\"), _class$4.prototype), _applyDecoratedDescriptor(_class$4.prototype, \"characterSet\", [cache], Object.getOwnPropertyDescriptor(_class$4.prototype, \"characterSet\"), _class$4.prototype), _applyDecoratedDescriptor(_class$4.prototype, \"_layoutEngine\", [cache], Object.getOwnPropertyDescriptor(_class$4.prototype, \"_layoutEngine\"), _class$4.prototype), _applyDecoratedDescriptor(_class$4.prototype, \"variationAxes\", [cache], Object.getOwnPropertyDescriptor(_class$4.prototype, \"variationAxes\"), _class$4.prototype), _applyDecoratedDescriptor(_class$4.prototype, \"namedVariations\", [cache], Object.getOwnPropertyDescriptor(_class$4.prototype, \"namedVariations\"), _class$4.prototype), _applyDecoratedDescriptor(_class$4.prototype, \"_variationProcessor\", [cache], Object.getOwnPropertyDescriptor(_class$4.prototype, \"_variationProcessor\"), _class$4.prototype)), _class$4);\nvar WOFFDirectoryEntry = new r.Struct({\n  tag: new r.String(4),\n  offset: new r.Pointer(r.uint32, 'void', {\n    type: 'global'\n  }),\n  compLength: r.uint32,\n  length: r.uint32,\n  origChecksum: r.uint32\n});\nvar WOFFDirectory = new r.Struct({\n  tag: new r.String(4),\n  // should be 'wOFF'\n  flavor: r.uint32,\n  length: r.uint32,\n  numTables: r.uint16,\n  reserved: new r.Reserved(r.uint16),\n  totalSfntSize: r.uint32,\n  majorVersion: r.uint16,\n  minorVersion: r.uint16,\n  metaOffset: r.uint32,\n  metaLength: r.uint32,\n  metaOrigLength: r.uint32,\n  privOffset: r.uint32,\n  privLength: r.uint32,\n  tables: new r.Array(WOFFDirectoryEntry, 'numTables')\n});\nWOFFDirectory.process = function () {\n  var tables = {};\n  for (var _iterator78 = _createForOfIteratorHelperLoose(this.tables), _step78; !(_step78 = _iterator78()).done;) {\n    var table = _step78.value;\n    tables[table.tag] = table;\n  }\n  this.tables = tables;\n};\nvar WOFFFont = /*#__PURE__*/function (_TTFFont) {\n  _inheritsLoose(WOFFFont, _TTFFont);\n  function WOFFFont() {\n    return _TTFFont.apply(this, arguments) || this;\n  }\n  WOFFFont.probe = function probe(buffer) {\n    return buffer.toString('ascii', 0, 4) === 'wOFF';\n  };\n  var _proto44 = WOFFFont.prototype;\n  _proto44._decodeDirectory = function _decodeDirectory() {\n    this.directory = WOFFDirectory.decode(this.stream, {\n      _startOffset: 0\n    });\n  };\n  _proto44._getTableStream = function _getTableStream(tag) {\n    var table = this.directory.tables[tag];\n    if (table) {\n      this.stream.pos = table.offset;\n      if (table.compLength < table.length) {\n        this.stream.pos += 2; // skip deflate header\n\n        var outBuffer = Buffer.alloc(table.length);\n        var buf = inflate(this.stream.readBuffer(table.compLength - 2), outBuffer);\n        return new r.DecodeStream(buf);\n      } else {\n        return this.stream;\n      }\n    }\n    return null;\n  };\n  return WOFFFont;\n}(TTFFont);\n/**\r\n * Represents a TrueType glyph in the WOFF2 format, which compresses glyphs differently.\r\n */\nvar WOFF2Glyph = /*#__PURE__*/function (_TTFGlyph2) {\n  _inheritsLoose(WOFF2Glyph, _TTFGlyph2);\n  function WOFF2Glyph() {\n    return _TTFGlyph2.apply(this, arguments) || this;\n  }\n  var _proto45 = WOFF2Glyph.prototype;\n  _proto45._decode = function _decode() {\n    // We have to decode in advance (in WOFF2Font), so just return the pre-decoded data.\n    return this._font._transformedGlyphs[this.id];\n  };\n  _proto45._getCBox = function _getCBox() {\n    return this.path.bbox;\n  };\n  return WOFF2Glyph;\n}(TTFGlyph);\nvar Base128 = {\n  decode: function decode(stream) {\n    var result = 0;\n    var iterable = [0, 1, 2, 3, 4];\n    for (var j = 0; j < iterable.length; j++) {\n      var code = stream.readUInt8(); // If any of the top seven bits are set then we're about to overflow.\n\n      if (result & 0xe0000000) {\n        throw new Error('Overflow');\n      }\n      result = result << 7 | code & 0x7f;\n      if ((code & 0x80) === 0) {\n        return result;\n      }\n    }\n    throw new Error('Bad base 128 number');\n  }\n};\nvar knownTags = ['cmap', 'head', 'hhea', 'hmtx', 'maxp', 'name', 'OS/2', 'post', 'cvt ', 'fpgm', 'glyf', 'loca', 'prep', 'CFF ', 'VORG', 'EBDT', 'EBLC', 'gasp', 'hdmx', 'kern', 'LTSH', 'PCLT', 'VDMX', 'vhea', 'vmtx', 'BASE', 'GDEF', 'GPOS', 'GSUB', 'EBSC', 'JSTF', 'MATH', 'CBDT', 'CBLC', 'COLR', 'CPAL', 'SVG ', 'sbix', 'acnt', 'avar', 'bdat', 'bloc', 'bsln', 'cvar', 'fdsc', 'feat', 'fmtx', 'fvar', 'gvar', 'hsty', 'just', 'lcar', 'mort', 'morx', 'opbd', 'prop', 'trak', 'Zapf', 'Silf', 'Glat', 'Gloc', 'Feat', 'Sill'];\nvar WOFF2DirectoryEntry = new r.Struct({\n  flags: r.uint8,\n  customTag: new r.Optional(new r.String(4), function (t) {\n    return (t.flags & 0x3f) === 0x3f;\n  }),\n  tag: function tag(t) {\n    return t.customTag || knownTags[t.flags & 0x3f];\n  },\n  // || (() => { throw new Error(`Bad tag: ${flags & 0x3f}`); })(); },\n  length: Base128,\n  transformVersion: function transformVersion(t) {\n    return t.flags >>> 6 & 0x03;\n  },\n  transformed: function transformed(t) {\n    return t.tag === 'glyf' || t.tag === 'loca' ? t.transformVersion === 0 : t.transformVersion !== 0;\n  },\n  transformLength: new r.Optional(Base128, function (t) {\n    return t.transformed;\n  })\n});\nvar WOFF2Directory = new r.Struct({\n  tag: new r.String(4),\n  // should be 'wOF2'\n  flavor: r.uint32,\n  length: r.uint32,\n  numTables: r.uint16,\n  reserved: new r.Reserved(r.uint16),\n  totalSfntSize: r.uint32,\n  totalCompressedSize: r.uint32,\n  majorVersion: r.uint16,\n  minorVersion: r.uint16,\n  metaOffset: r.uint32,\n  metaLength: r.uint32,\n  metaOrigLength: r.uint32,\n  privOffset: r.uint32,\n  privLength: r.uint32,\n  tables: new r.Array(WOFF2DirectoryEntry, 'numTables')\n});\nWOFF2Directory.process = function () {\n  var tables = {};\n  for (var i = 0; i < this.tables.length; i++) {\n    var table = this.tables[i];\n    tables[table.tag] = table;\n  }\n  return this.tables = tables;\n};\n\n/**\r\n * Subclass of TTFFont that represents a TTF/OTF font compressed by WOFF2\r\n * See spec here: http://www.w3.org/TR/WOFF2/\r\n */\nvar WOFF2Font = /*#__PURE__*/function (_TTFFont2) {\n  _inheritsLoose(WOFF2Font, _TTFFont2);\n  function WOFF2Font() {\n    return _TTFFont2.apply(this, arguments) || this;\n  }\n  WOFF2Font.probe = function probe(buffer) {\n    return buffer.toString('ascii', 0, 4) === 'wOF2';\n  };\n  var _proto46 = WOFF2Font.prototype;\n  _proto46._decodeDirectory = function _decodeDirectory() {\n    this.directory = WOFF2Directory.decode(this.stream);\n    this._dataPos = this.stream.pos;\n  };\n  _proto46._decompress = function _decompress() {\n    // decompress data and setup table offsets if we haven't already\n    if (!this._decompressed) {\n      this.stream.pos = this._dataPos;\n      var buffer = this.stream.readBuffer(this.directory.totalCompressedSize);\n      var decompressedSize = 0;\n      for (var tag in this.directory.tables) {\n        var entry = this.directory.tables[tag];\n        entry.offset = decompressedSize;\n        decompressedSize += entry.transformLength != null ? entry.transformLength : entry.length;\n      }\n      var decompressed = brotli(buffer, decompressedSize);\n      if (!decompressed) {\n        throw new Error('Error decoding compressed data in WOFF2');\n      }\n      this.stream = new r.DecodeStream(Buffer.from(decompressed));\n      this._decompressed = true;\n    }\n  };\n  _proto46._decodeTable = function _decodeTable(table) {\n    this._decompress();\n    return _TTFFont2.prototype._decodeTable.call(this, table);\n  } // Override this method to get a glyph and return our\n  // custom subclass if there is a glyf table.\n  ;\n  _proto46._getBaseGlyph = function _getBaseGlyph(glyph, characters) {\n    if (characters === void 0) {\n      characters = [];\n    }\n    if (!this._glyphs[glyph]) {\n      if (this.directory.tables.glyf && this.directory.tables.glyf.transformed) {\n        if (!this._transformedGlyphs) {\n          this._transformGlyfTable();\n        }\n        return this._glyphs[glyph] = new WOFF2Glyph(glyph, characters, this);\n      } else {\n        return _TTFFont2.prototype._getBaseGlyph.call(this, glyph, characters);\n      }\n    }\n  };\n  _proto46._transformGlyfTable = function _transformGlyfTable() {\n    this._decompress();\n    this.stream.pos = this.directory.tables.glyf.offset;\n    var table = GlyfTable.decode(this.stream);\n    var glyphs = [];\n    for (var index = 0; index < table.numGlyphs; index++) {\n      var glyph = {};\n      var nContours = table.nContours.readInt16BE();\n      glyph.numberOfContours = nContours;\n      if (nContours > 0) {\n        // simple glyph\n        var nPoints = [];\n        var totalPoints = 0;\n        for (var i = 0; i < nContours; i++) {\n          var _r = read255UInt16(table.nPoints);\n          totalPoints += _r;\n          nPoints.push(totalPoints);\n        }\n        glyph.points = decodeTriplet(table.flags, table.glyphs, totalPoints);\n        for (var _i = 0; _i < nContours; _i++) {\n          glyph.points[nPoints[_i] - 1].endContour = true;\n        }\n        var instructionSize = read255UInt16(table.glyphs);\n      } else if (nContours < 0) {\n        // composite glyph\n        var haveInstructions = TTFGlyph.prototype._decodeComposite.call({\n          _font: this\n        }, glyph, table.composites);\n        if (haveInstructions) {\n          var instructionSize = read255UInt16(table.glyphs);\n        }\n      }\n      glyphs.push(glyph);\n    }\n    this._transformedGlyphs = glyphs;\n  };\n  return WOFF2Font;\n}(TTFFont); // Special class that accepts a length and returns a sub-stream for that data\nvar Substream = /*#__PURE__*/function () {\n  function Substream(length) {\n    this.length = length;\n    this._buf = new r.Buffer(length);\n  }\n  var _proto47 = Substream.prototype;\n  _proto47.decode = function decode(stream, parent) {\n    return new r.DecodeStream(this._buf.decode(stream, parent));\n  };\n  return Substream;\n}(); // This struct represents the entire glyf table\nvar GlyfTable = new r.Struct({\n  version: r.uint32,\n  numGlyphs: r.uint16,\n  indexFormat: r.uint16,\n  nContourStreamSize: r.uint32,\n  nPointsStreamSize: r.uint32,\n  flagStreamSize: r.uint32,\n  glyphStreamSize: r.uint32,\n  compositeStreamSize: r.uint32,\n  bboxStreamSize: r.uint32,\n  instructionStreamSize: r.uint32,\n  nContours: new Substream('nContourStreamSize'),\n  nPoints: new Substream('nPointsStreamSize'),\n  flags: new Substream('flagStreamSize'),\n  glyphs: new Substream('glyphStreamSize'),\n  composites: new Substream('compositeStreamSize'),\n  bboxes: new Substream('bboxStreamSize'),\n  instructions: new Substream('instructionStreamSize')\n});\nvar WORD_CODE = 253;\nvar ONE_MORE_BYTE_CODE2 = 254;\nvar ONE_MORE_BYTE_CODE1 = 255;\nvar LOWEST_U_CODE = 253;\nfunction read255UInt16(stream) {\n  var code = stream.readUInt8();\n  if (code === WORD_CODE) {\n    return stream.readUInt16BE();\n  }\n  if (code === ONE_MORE_BYTE_CODE1) {\n    return stream.readUInt8() + LOWEST_U_CODE;\n  }\n  if (code === ONE_MORE_BYTE_CODE2) {\n    return stream.readUInt8() + LOWEST_U_CODE * 2;\n  }\n  return code;\n}\nfunction withSign(flag, baseval) {\n  return flag & 1 ? baseval : -baseval;\n}\nfunction decodeTriplet(flags, glyphs, nPoints) {\n  var y;\n  var x = y = 0;\n  var res = [];\n  for (var i = 0; i < nPoints; i++) {\n    var dx = 0,\n      dy = 0;\n    var flag = flags.readUInt8();\n    var onCurve = !(flag >> 7);\n    flag &= 0x7f;\n    if (flag < 10) {\n      dx = 0;\n      dy = withSign(flag, ((flag & 14) << 7) + glyphs.readUInt8());\n    } else if (flag < 20) {\n      dx = withSign(flag, ((flag - 10 & 14) << 7) + glyphs.readUInt8());\n      dy = 0;\n    } else if (flag < 84) {\n      var b0 = flag - 20;\n      var b1 = glyphs.readUInt8();\n      dx = withSign(flag, 1 + (b0 & 0x30) + (b1 >> 4));\n      dy = withSign(flag >> 1, 1 + ((b0 & 0x0c) << 2) + (b1 & 0x0f));\n    } else if (flag < 120) {\n      var b0 = flag - 84;\n      dx = withSign(flag, 1 + (b0 / 12 << 8) + glyphs.readUInt8());\n      dy = withSign(flag >> 1, 1 + (b0 % 12 >> 2 << 8) + glyphs.readUInt8());\n    } else if (flag < 124) {\n      var b1 = glyphs.readUInt8();\n      var b2 = glyphs.readUInt8();\n      dx = withSign(flag, (b1 << 4) + (b2 >> 4));\n      dy = withSign(flag >> 1, ((b2 & 0x0f) << 8) + glyphs.readUInt8());\n    } else {\n      dx = withSign(flag, glyphs.readUInt16BE());\n      dy = withSign(flag >> 1, glyphs.readUInt16BE());\n    }\n    x += dx;\n    y += dy;\n    res.push(new Point(onCurve, false, x, y));\n  }\n  return res;\n}\nvar TTCHeader = new r.VersionedStruct(r.uint32, {\n  0x00010000: {\n    numFonts: r.uint32,\n    offsets: new r.Array(r.uint32, 'numFonts')\n  },\n  0x00020000: {\n    numFonts: r.uint32,\n    offsets: new r.Array(r.uint32, 'numFonts'),\n    dsigTag: r.uint32,\n    dsigLength: r.uint32,\n    dsigOffset: r.uint32\n  }\n});\nvar TrueTypeCollection = /*#__PURE__*/function () {\n  TrueTypeCollection.probe = function probe(buffer) {\n    return buffer.toString('ascii', 0, 4) === 'ttcf';\n  };\n  function TrueTypeCollection(stream) {\n    this.stream = stream;\n    if (stream.readString(4) !== 'ttcf') {\n      throw new Error('Not a TrueType collection');\n    }\n    this.header = TTCHeader.decode(stream);\n  }\n  var _proto48 = TrueTypeCollection.prototype;\n  _proto48.getFont = function getFont(name) {\n    for (var _iterator79 = _createForOfIteratorHelperLoose(this.header.offsets), _step79; !(_step79 = _iterator79()).done;) {\n      var offset = _step79.value;\n      var stream = new r.DecodeStream(this.stream.buffer);\n      stream.pos = offset;\n      var font = new TTFFont(stream);\n      if (font.postscriptName === name) {\n        return font;\n      }\n    }\n    return null;\n  };\n  _createClass(TrueTypeCollection, [{\n    key: \"fonts\",\n    get: function get() {\n      var fonts = [];\n      for (var _iterator80 = _createForOfIteratorHelperLoose(this.header.offsets), _step80; !(_step80 = _iterator80()).done;) {\n        var offset = _step80.value;\n        var stream = new r.DecodeStream(this.stream.buffer);\n        stream.pos = offset;\n        fonts.push(new TTFFont(stream));\n      }\n      return fonts;\n    }\n  }]);\n  return TrueTypeCollection;\n}();\nvar DFontName = new r.String(r.uint8);\nvar DFontData = new r.Struct({\n  len: r.uint32,\n  buf: new r.Buffer('len')\n});\nvar Ref = new r.Struct({\n  id: r.uint16,\n  nameOffset: r.int16,\n  attr: r.uint8,\n  dataOffset: r.uint24,\n  handle: r.uint32\n});\nvar Type = new r.Struct({\n  name: new r.String(4),\n  maxTypeIndex: r.uint16,\n  refList: new r.Pointer(r.uint16, new r.Array(Ref, function (t) {\n    return t.maxTypeIndex + 1;\n  }), {\n    type: 'parent'\n  })\n});\nvar TypeList = new r.Struct({\n  length: r.uint16,\n  types: new r.Array(Type, function (t) {\n    return t.length + 1;\n  })\n});\nvar DFontMap = new r.Struct({\n  reserved: new r.Reserved(r.uint8, 24),\n  typeList: new r.Pointer(r.uint16, TypeList),\n  nameListOffset: new r.Pointer(r.uint16, 'void')\n});\nvar DFontHeader = new r.Struct({\n  dataOffset: r.uint32,\n  map: new r.Pointer(r.uint32, DFontMap),\n  dataLength: r.uint32,\n  mapLength: r.uint32\n});\nvar DFont = /*#__PURE__*/function () {\n  DFont.probe = function probe(buffer) {\n    var stream = new r.DecodeStream(buffer);\n    try {\n      var header = DFontHeader.decode(stream);\n    } catch (e) {\n      return false;\n    }\n    for (var _iterator81 = _createForOfIteratorHelperLoose(header.map.typeList.types), _step81; !(_step81 = _iterator81()).done;) {\n      var type = _step81.value;\n      if (type.name === 'sfnt') {\n        return true;\n      }\n    }\n    return false;\n  };\n  function DFont(stream) {\n    this.stream = stream;\n    this.header = DFontHeader.decode(this.stream);\n    for (var _iterator82 = _createForOfIteratorHelperLoose(this.header.map.typeList.types), _step82; !(_step82 = _iterator82()).done;) {\n      var type = _step82.value;\n      for (var _iterator83 = _createForOfIteratorHelperLoose(type.refList), _step83; !(_step83 = _iterator83()).done;) {\n        var ref = _step83.value;\n        if (ref.nameOffset >= 0) {\n          this.stream.pos = ref.nameOffset + this.header.map.nameListOffset;\n          ref.name = DFontName.decode(this.stream);\n        } else {\n          ref.name = null;\n        }\n      }\n      if (type.name === 'sfnt') {\n        this.sfnt = type;\n      }\n    }\n  }\n  var _proto49 = DFont.prototype;\n  _proto49.getFont = function getFont(name) {\n    if (!this.sfnt) {\n      return null;\n    }\n    for (var _iterator84 = _createForOfIteratorHelperLoose(this.sfnt.refList), _step84; !(_step84 = _iterator84()).done;) {\n      var ref = _step84.value;\n      var pos = this.header.dataOffset + ref.dataOffset + 4;\n      var stream = new r.DecodeStream(this.stream.buffer.slice(pos));\n      var font = new TTFFont(stream);\n      if (font.postscriptName === name) {\n        return font;\n      }\n    }\n    return null;\n  };\n  _createClass(DFont, [{\n    key: \"fonts\",\n    get: function get() {\n      var fonts = [];\n      for (var _iterator85 = _createForOfIteratorHelperLoose(this.sfnt.refList), _step85; !(_step85 = _iterator85()).done;) {\n        var ref = _step85.value;\n        var pos = this.header.dataOffset + ref.dataOffset + 4;\n        var stream = new r.DecodeStream(this.stream.buffer.slice(pos));\n        fonts.push(new TTFFont(stream));\n      }\n      return fonts;\n    }\n  }]);\n  return DFont;\n}();\nfontkit.registerFormat(TTFFont);\nfontkit.registerFormat(WOFFFont);\nfontkit.registerFormat(WOFF2Font);\nfontkit.registerFormat(TrueTypeCollection);\nfontkit.registerFormat(DFont);\nmodule.exports = fontkit;", "\"use strict\";\n\nvar UnicodeTrie = require('unicode-trie');\n\nvar base64 = require('base64-js');\nvar _require = require('./classes'),\n  BK = _require.BK,\n  CR = _require.CR,\n  LF = _require.LF,\n  NL = _require.NL,\n  SG = _require.SG,\n  WJ = _require.WJ,\n  SP = _require.SP,\n  ZWJ = _require.ZWJ,\n  BA = _require.BA,\n  HY = _require.HY,\n  NS = _require.NS,\n  AI = _require.AI,\n  AL = _require.AL,\n  CJ = _require.CJ,\n  HL = _require.HL,\n  RI = _require.RI,\n  SA = _require.SA,\n  XX = _require.XX;\nvar _require2 = require('./pairs'),\n  DI_BRK = _require2.DI_BRK,\n  IN_BRK = _require2.IN_BRK,\n  CI_BRK = _require2.CI_BRK,\n  CP_BRK = _require2.CP_BRK,\n  PR_BRK = _require2.PR_BRK,\n  pairTable = _require2.pairTable;\nvar data = base64.toByteArray(\"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\");\nvar classTrie = new UnicodeTrie(data);\nvar mapClass = function mapClass(c) {\n  switch (c) {\n    case AI:\n      return AL;\n    case SA:\n    case SG:\n    case XX:\n      return AL;\n    case CJ:\n      return NS;\n    default:\n      return c;\n  }\n};\nvar mapFirst = function mapFirst(c) {\n  switch (c) {\n    case LF:\n    case NL:\n      return BK;\n    case SP:\n      return WJ;\n    default:\n      return c;\n  }\n};\nvar Break = function Break(position, required) {\n  if (required === void 0) {\n    required = false;\n  }\n  this.position = position;\n  this.required = required;\n};\nvar LineBreaker = /*#__PURE__*/function () {\n  function LineBreaker(string) {\n    this.string = string;\n    this.pos = 0;\n    this.lastPos = 0;\n    this.curClass = null;\n    this.nextClass = null;\n    this.LB8a = false;\n    this.LB21a = false;\n    this.LB30a = 0;\n  }\n  var _proto = LineBreaker.prototype;\n  _proto.nextCodePoint = function nextCodePoint() {\n    var code = this.string.charCodeAt(this.pos++);\n    var next = this.string.charCodeAt(this.pos);\n\n    // If a surrogate pair\n    if (0xd800 <= code && code <= 0xdbff && 0xdc00 <= next && next <= 0xdfff) {\n      this.pos++;\n      return (code - 0xd800) * 0x400 + (next - 0xdc00) + 0x10000;\n    }\n    return code;\n  };\n  _proto.nextCharClass = function nextCharClass() {\n    return mapClass(classTrie.get(this.nextCodePoint()));\n  };\n  _proto.getSimpleBreak = function getSimpleBreak() {\n    // handle classes not handled by the pair table\n    switch (this.nextClass) {\n      case SP:\n        return false;\n      case BK:\n      case LF:\n      case NL:\n        this.curClass = BK;\n        return false;\n      case CR:\n        this.curClass = CR;\n        return false;\n    }\n    return null;\n  };\n  _proto.getPairTableBreak = function getPairTableBreak(lastClass) {\n    // if not handled already, use the pair table\n    var shouldBreak = false;\n    switch (pairTable[this.curClass][this.nextClass]) {\n      case DI_BRK:\n        // Direct break\n        shouldBreak = true;\n        break;\n      case IN_BRK:\n        // possible indirect break\n        shouldBreak = lastClass === SP;\n        break;\n      case CI_BRK:\n        shouldBreak = lastClass === SP;\n        if (!shouldBreak) {\n          shouldBreak = false;\n          return shouldBreak;\n        }\n        break;\n      case CP_BRK:\n        // prohibited for combining marks\n        if (lastClass !== SP) {\n          return shouldBreak;\n        }\n        break;\n      case PR_BRK:\n        break;\n    }\n    if (this.LB8a) {\n      shouldBreak = false;\n    }\n\n    // Rule LB21a\n    if (this.LB21a && (this.curClass === HY || this.curClass === BA)) {\n      shouldBreak = false;\n      this.LB21a = false;\n    } else {\n      this.LB21a = this.curClass === HL;\n    }\n\n    // Rule LB30a\n    if (this.curClass === RI) {\n      this.LB30a++;\n      if (this.LB30a == 2 && this.nextClass === RI) {\n        shouldBreak = true;\n        this.LB30a = 0;\n      }\n    } else {\n      this.LB30a = 0;\n    }\n    this.curClass = this.nextClass;\n    return shouldBreak;\n  };\n  _proto.nextBreak = function nextBreak() {\n    // get the first char if we're at the beginning of the string\n    if (this.curClass == null) {\n      var firstClass = this.nextCharClass();\n      this.curClass = mapFirst(firstClass);\n      this.nextClass = firstClass;\n      this.LB8a = firstClass === ZWJ;\n      this.LB30a = 0;\n    }\n    while (this.pos < this.string.length) {\n      this.lastPos = this.pos;\n      var lastClass = this.nextClass;\n      this.nextClass = this.nextCharClass();\n\n      // explicit newline\n      if (this.curClass === BK || this.curClass === CR && this.nextClass !== LF) {\n        this.curClass = mapFirst(mapClass(this.nextClass));\n        return new Break(this.lastPos, true);\n      }\n      var shouldBreak = this.getSimpleBreak();\n      if (shouldBreak === null) {\n        shouldBreak = this.getPairTableBreak(lastClass);\n      }\n\n      // Rule LB8a\n      this.LB8a = this.nextClass === ZWJ;\n      if (shouldBreak) {\n        return new Break(this.lastPos);\n      }\n    }\n    if (this.lastPos < this.string.length) {\n      this.lastPos = this.string.length;\n      return new Break(this.string.length);\n    }\n    return null;\n  };\n  return LineBreaker;\n}();\nmodule.exports = LineBreaker;", "\n/**\n * Module exports.\n */\n\nmodule.exports = deprecate;\n\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate (fn, msg) {\n  if (config('noDeprecation')) {\n    return fn;\n  }\n\n  var warned = false;\n  function deprecated() {\n    if (!warned) {\n      if (config('throwDeprecation')) {\n        throw new Error(msg);\n      } else if (config('traceDeprecation')) {\n        console.trace(msg);\n      } else {\n        console.warn(msg);\n      }\n      warned = true;\n    }\n    return fn.apply(this, arguments);\n  }\n\n  return deprecated;\n}\n\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\nfunction config (name) {\n  // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n  try {\n    if (!global.localStorage) return false;\n  } catch (_) {\n    return false;\n  }\n  var val = global.localStorage[name];\n  if (null == val) return false;\n  return String(val).toLowerCase() === 'true';\n}\n", "module.exports = function isBuffer(arg) {\n  return arg && typeof arg === 'object'\n    && typeof arg.copy === 'function'\n    && typeof arg.fill === 'function'\n    && typeof arg.readUInt8 === 'function';\n}", "// Currently in sync with Node.js lib/internal/util/types.js\n// https://github.com/nodejs/node/commit/112cc7c27551254aa2b17098fb774867f05ed0d9\n\n'use strict';\n\nvar isArgumentsObject = require('is-arguments');\nvar isGeneratorFunction = require('is-generator-function');\nvar whichTypedArray = require('which-typed-array');\nvar isTypedArray = require('is-typed-array');\n\nfunction uncurryThis(f) {\n  return f.call.bind(f);\n}\n\nvar BigIntSupported = typeof BigInt !== 'undefined';\nvar SymbolSupported = typeof Symbol !== 'undefined';\n\nvar ObjectToString = uncurryThis(Object.prototype.toString);\n\nvar numberValue = uncurryThis(Number.prototype.valueOf);\nvar stringValue = uncurryThis(String.prototype.valueOf);\nvar booleanValue = uncurryThis(Boolean.prototype.valueOf);\n\nif (BigIntSupported) {\n  var bigIntValue = uncurryThis(BigInt.prototype.valueOf);\n}\n\nif (SymbolSupported) {\n  var symbolValue = uncurryThis(Symbol.prototype.valueOf);\n}\n\nfunction checkBoxedPrimitive(value, prototypeValueOf) {\n  if (typeof value !== 'object') {\n    return false;\n  }\n  try {\n    prototypeValueOf(value);\n    return true;\n  } catch(e) {\n    return false;\n  }\n}\n\nexports.isArgumentsObject = isArgumentsObject;\nexports.isGeneratorFunction = isGeneratorFunction;\nexports.isTypedArray = isTypedArray;\n\n// Taken from here and modified for better browser support\n// https://github.com/sindresorhus/p-is-promise/blob/cda35a513bda03f977ad5cde3a079d237e82d7ef/index.js\nfunction isPromise(input) {\n\treturn (\n\t\t(\n\t\t\ttypeof Promise !== 'undefined' &&\n\t\t\tinput instanceof Promise\n\t\t) ||\n\t\t(\n\t\t\tinput !== null &&\n\t\t\ttypeof input === 'object' &&\n\t\t\ttypeof input.then === 'function' &&\n\t\t\ttypeof input.catch === 'function'\n\t\t)\n\t);\n}\nexports.isPromise = isPromise;\n\nfunction isArrayBufferView(value) {\n  if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) {\n    return ArrayBuffer.isView(value);\n  }\n\n  return (\n    isTypedArray(value) ||\n    isDataView(value)\n  );\n}\nexports.isArrayBufferView = isArrayBufferView;\n\n\nfunction isUint8Array(value) {\n  return whichTypedArray(value) === 'Uint8Array';\n}\nexports.isUint8Array = isUint8Array;\n\nfunction isUint8ClampedArray(value) {\n  return whichTypedArray(value) === 'Uint8ClampedArray';\n}\nexports.isUint8ClampedArray = isUint8ClampedArray;\n\nfunction isUint16Array(value) {\n  return whichTypedArray(value) === 'Uint16Array';\n}\nexports.isUint16Array = isUint16Array;\n\nfunction isUint32Array(value) {\n  return whichTypedArray(value) === 'Uint32Array';\n}\nexports.isUint32Array = isUint32Array;\n\nfunction isInt8Array(value) {\n  return whichTypedArray(value) === 'Int8Array';\n}\nexports.isInt8Array = isInt8Array;\n\nfunction isInt16Array(value) {\n  return whichTypedArray(value) === 'Int16Array';\n}\nexports.isInt16Array = isInt16Array;\n\nfunction isInt32Array(value) {\n  return whichTypedArray(value) === 'Int32Array';\n}\nexports.isInt32Array = isInt32Array;\n\nfunction isFloat32Array(value) {\n  return whichTypedArray(value) === 'Float32Array';\n}\nexports.isFloat32Array = isFloat32Array;\n\nfunction isFloat64Array(value) {\n  return whichTypedArray(value) === 'Float64Array';\n}\nexports.isFloat64Array = isFloat64Array;\n\nfunction isBigInt64Array(value) {\n  return whichTypedArray(value) === 'BigInt64Array';\n}\nexports.isBigInt64Array = isBigInt64Array;\n\nfunction isBigUint64Array(value) {\n  return whichTypedArray(value) === 'BigUint64Array';\n}\nexports.isBigUint64Array = isBigUint64Array;\n\nfunction isMapToString(value) {\n  return ObjectToString(value) === '[object Map]';\n}\nisMapToString.working = (\n  typeof Map !== 'undefined' &&\n  isMapToString(new Map())\n);\n\nfunction isMap(value) {\n  if (typeof Map === 'undefined') {\n    return false;\n  }\n\n  return isMapToString.working\n    ? isMapToString(value)\n    : value instanceof Map;\n}\nexports.isMap = isMap;\n\nfunction isSetToString(value) {\n  return ObjectToString(value) === '[object Set]';\n}\nisSetToString.working = (\n  typeof Set !== 'undefined' &&\n  isSetToString(new Set())\n);\nfunction isSet(value) {\n  if (typeof Set === 'undefined') {\n    return false;\n  }\n\n  return isSetToString.working\n    ? isSetToString(value)\n    : value instanceof Set;\n}\nexports.isSet = isSet;\n\nfunction isWeakMapToString(value) {\n  return ObjectToString(value) === '[object WeakMap]';\n}\nisWeakMapToString.working = (\n  typeof WeakMap !== 'undefined' &&\n  isWeakMapToString(new WeakMap())\n);\nfunction isWeakMap(value) {\n  if (typeof WeakMap === 'undefined') {\n    return false;\n  }\n\n  return isWeakMapToString.working\n    ? isWeakMapToString(value)\n    : value instanceof WeakMap;\n}\nexports.isWeakMap = isWeakMap;\n\nfunction isWeakSetToString(value) {\n  return ObjectToString(value) === '[object WeakSet]';\n}\nisWeakSetToString.working = (\n  typeof WeakSet !== 'undefined' &&\n  isWeakSetToString(new WeakSet())\n);\nfunction isWeakSet(value) {\n  return isWeakSetToString(value);\n}\nexports.isWeakSet = isWeakSet;\n\nfunction isArrayBufferToString(value) {\n  return ObjectToString(value) === '[object ArrayBuffer]';\n}\nisArrayBufferToString.working = (\n  typeof ArrayBuffer !== 'undefined' &&\n  isArrayBufferToString(new ArrayBuffer())\n);\nfunction isArrayBuffer(value) {\n  if (typeof ArrayBuffer === 'undefined') {\n    return false;\n  }\n\n  return isArrayBufferToString.working\n    ? isArrayBufferToString(value)\n    : value instanceof ArrayBuffer;\n}\nexports.isArrayBuffer = isArrayBuffer;\n\nfunction isDataViewToString(value) {\n  return ObjectToString(value) === '[object DataView]';\n}\nisDataViewToString.working = (\n  typeof ArrayBuffer !== 'undefined' &&\n  typeof DataView !== 'undefined' &&\n  isDataViewToString(new DataView(new ArrayBuffer(1), 0, 1))\n);\nfunction isDataView(value) {\n  if (typeof DataView === 'undefined') {\n    return false;\n  }\n\n  return isDataViewToString.working\n    ? isDataViewToString(value)\n    : value instanceof DataView;\n}\nexports.isDataView = isDataView;\n\n// Store a copy of SharedArrayBuffer in case it's deleted elsewhere\nvar SharedArrayBufferCopy = typeof SharedArrayBuffer !== 'undefined' ? SharedArrayBuffer : undefined;\nfunction isSharedArrayBufferToString(value) {\n  return ObjectToString(value) === '[object SharedArrayBuffer]';\n}\nfunction isSharedArrayBuffer(value) {\n  if (typeof SharedArrayBufferCopy === 'undefined') {\n    return false;\n  }\n\n  if (typeof isSharedArrayBufferToString.working === 'undefined') {\n    isSharedArrayBufferToString.working = isSharedArrayBufferToString(new SharedArrayBufferCopy());\n  }\n\n  return isSharedArrayBufferToString.working\n    ? isSharedArrayBufferToString(value)\n    : value instanceof SharedArrayBufferCopy;\n}\nexports.isSharedArrayBuffer = isSharedArrayBuffer;\n\nfunction isAsyncFunction(value) {\n  return ObjectToString(value) === '[object AsyncFunction]';\n}\nexports.isAsyncFunction = isAsyncFunction;\n\nfunction isMapIterator(value) {\n  return ObjectToString(value) === '[object Map Iterator]';\n}\nexports.isMapIterator = isMapIterator;\n\nfunction isSetIterator(value) {\n  return ObjectToString(value) === '[object Set Iterator]';\n}\nexports.isSetIterator = isSetIterator;\n\nfunction isGeneratorObject(value) {\n  return ObjectToString(value) === '[object Generator]';\n}\nexports.isGeneratorObject = isGeneratorObject;\n\nfunction isWebAssemblyCompiledModule(value) {\n  return ObjectToString(value) === '[object WebAssembly.Module]';\n}\nexports.isWebAssemblyCompiledModule = isWebAssemblyCompiledModule;\n\nfunction isNumberObject(value) {\n  return checkBoxedPrimitive(value, numberValue);\n}\nexports.isNumberObject = isNumberObject;\n\nfunction isStringObject(value) {\n  return checkBoxedPrimitive(value, stringValue);\n}\nexports.isStringObject = isStringObject;\n\nfunction isBooleanObject(value) {\n  return checkBoxedPrimitive(value, booleanValue);\n}\nexports.isBooleanObject = isBooleanObject;\n\nfunction isBigIntObject(value) {\n  return BigIntSupported && checkBoxedPrimitive(value, bigIntValue);\n}\nexports.isBigIntObject = isBigIntObject;\n\nfunction isSymbolObject(value) {\n  return SymbolSupported && checkBoxedPrimitive(value, symbolValue);\n}\nexports.isSymbolObject = isSymbolObject;\n\nfunction isBoxedPrimitive(value) {\n  return (\n    isNumberObject(value) ||\n    isStringObject(value) ||\n    isBooleanObject(value) ||\n    isBigIntObject(value) ||\n    isSymbolObject(value)\n  );\n}\nexports.isBoxedPrimitive = isBoxedPrimitive;\n\nfunction isAnyArrayBuffer(value) {\n  return typeof Uint8Array !== 'undefined' && (\n    isArrayBuffer(value) ||\n    isSharedArrayBuffer(value)\n  );\n}\nexports.isAnyArrayBuffer = isAnyArrayBuffer;\n\n['isProxy', 'isExternal', 'isModuleNamespaceObject'].forEach(function(method) {\n  Object.defineProperty(exports, method, {\n    enumerable: false,\n    value: function() {\n      throw new Error(method + ' is not supported in userland');\n    }\n  });\n});\n", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors ||\n  function getOwnPropertyDescriptors(obj) {\n    var keys = Object.keys(obj);\n    var descriptors = {};\n    for (var i = 0; i < keys.length; i++) {\n      descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);\n    }\n    return descriptors;\n  };\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n  if (!isString(f)) {\n    var objects = [];\n    for (var i = 0; i < arguments.length; i++) {\n      objects.push(inspect(arguments[i]));\n    }\n    return objects.join(' ');\n  }\n\n  var i = 1;\n  var args = arguments;\n  var len = args.length;\n  var str = String(f).replace(formatRegExp, function(x) {\n    if (x === '%%') return '%';\n    if (i >= len) return x;\n    switch (x) {\n      case '%s': return String(args[i++]);\n      case '%d': return Number(args[i++]);\n      case '%j':\n        try {\n          return JSON.stringify(args[i++]);\n        } catch (_) {\n          return '[Circular]';\n        }\n      default:\n        return x;\n    }\n  });\n  for (var x = args[i]; i < len; x = args[++i]) {\n    if (isNull(x) || !isObject(x)) {\n      str += ' ' + x;\n    } else {\n      str += ' ' + inspect(x);\n    }\n  }\n  return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n  if (typeof process !== 'undefined' && process.noDeprecation === true) {\n    return fn;\n  }\n\n  // Allow for deprecating things in the process of starting up.\n  if (typeof process === 'undefined') {\n    return function() {\n      return exports.deprecate(fn, msg).apply(this, arguments);\n    };\n  }\n\n  var warned = false;\n  function deprecated() {\n    if (!warned) {\n      if (process.throwDeprecation) {\n        throw new Error(msg);\n      } else if (process.traceDeprecation) {\n        console.trace(msg);\n      } else {\n        console.error(msg);\n      }\n      warned = true;\n    }\n    return fn.apply(this, arguments);\n  }\n\n  return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnvRegex = /^$/;\n\nif (process.env.NODE_DEBUG) {\n  var debugEnv = process.env.NODE_DEBUG;\n  debugEnv = debugEnv.replace(/[|\\\\{}()[\\]^$+?.]/g, '\\\\$&')\n    .replace(/\\*/g, '.*')\n    .replace(/,/g, '$|^')\n    .toUpperCase();\n  debugEnvRegex = new RegExp('^' + debugEnv + '$', 'i');\n}\nexports.debuglog = function(set) {\n  set = set.toUpperCase();\n  if (!debugs[set]) {\n    if (debugEnvRegex.test(set)) {\n      var pid = process.pid;\n      debugs[set] = function() {\n        var msg = exports.format.apply(exports, arguments);\n        console.error('%s %d: %s', set, pid, msg);\n      };\n    } else {\n      debugs[set] = function() {};\n    }\n  }\n  return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n  // default options\n  var ctx = {\n    seen: [],\n    stylize: stylizeNoColor\n  };\n  // legacy...\n  if (arguments.length >= 3) ctx.depth = arguments[2];\n  if (arguments.length >= 4) ctx.colors = arguments[3];\n  if (isBoolean(opts)) {\n    // legacy...\n    ctx.showHidden = opts;\n  } else if (opts) {\n    // got an \"options\" object\n    exports._extend(ctx, opts);\n  }\n  // set default options\n  if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n  if (isUndefined(ctx.depth)) ctx.depth = 2;\n  if (isUndefined(ctx.colors)) ctx.colors = false;\n  if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n  if (ctx.colors) ctx.stylize = stylizeWithColor;\n  return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n  'bold' : [1, 22],\n  'italic' : [3, 23],\n  'underline' : [4, 24],\n  'inverse' : [7, 27],\n  'white' : [37, 39],\n  'grey' : [90, 39],\n  'black' : [30, 39],\n  'blue' : [34, 39],\n  'cyan' : [36, 39],\n  'green' : [32, 39],\n  'magenta' : [35, 39],\n  'red' : [31, 39],\n  'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n  'special': 'cyan',\n  'number': 'yellow',\n  'boolean': 'yellow',\n  'undefined': 'grey',\n  'null': 'bold',\n  'string': 'green',\n  'date': 'magenta',\n  // \"name\": intentionally not styling\n  'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n  var style = inspect.styles[styleType];\n\n  if (style) {\n    return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n           '\\u001b[' + inspect.colors[style][1] + 'm';\n  } else {\n    return str;\n  }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n  return str;\n}\n\n\nfunction arrayToHash(array) {\n  var hash = {};\n\n  array.forEach(function(val, idx) {\n    hash[val] = true;\n  });\n\n  return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n  // Provide a hook for user-specified inspect functions.\n  // Check that value is an object with an inspect function on it\n  if (ctx.customInspect &&\n      value &&\n      isFunction(value.inspect) &&\n      // Filter out the util module, it's inspect function is special\n      value.inspect !== exports.inspect &&\n      // Also filter out any prototype objects using the circular check.\n      !(value.constructor && value.constructor.prototype === value)) {\n    var ret = value.inspect(recurseTimes, ctx);\n    if (!isString(ret)) {\n      ret = formatValue(ctx, ret, recurseTimes);\n    }\n    return ret;\n  }\n\n  // Primitive types cannot have properties\n  var primitive = formatPrimitive(ctx, value);\n  if (primitive) {\n    return primitive;\n  }\n\n  // Look up the keys of the object.\n  var keys = Object.keys(value);\n  var visibleKeys = arrayToHash(keys);\n\n  if (ctx.showHidden) {\n    keys = Object.getOwnPropertyNames(value);\n  }\n\n  // IE doesn't make error fields non-enumerable\n  // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n  if (isError(value)\n      && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n    return formatError(value);\n  }\n\n  // Some type of object without properties can be shortcutted.\n  if (keys.length === 0) {\n    if (isFunction(value)) {\n      var name = value.name ? ': ' + value.name : '';\n      return ctx.stylize('[Function' + name + ']', 'special');\n    }\n    if (isRegExp(value)) {\n      return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n    }\n    if (isDate(value)) {\n      return ctx.stylize(Date.prototype.toString.call(value), 'date');\n    }\n    if (isError(value)) {\n      return formatError(value);\n    }\n  }\n\n  var base = '', array = false, braces = ['{', '}'];\n\n  // Make Array say that they are Array\n  if (isArray(value)) {\n    array = true;\n    braces = ['[', ']'];\n  }\n\n  // Make functions say that they are functions\n  if (isFunction(value)) {\n    var n = value.name ? ': ' + value.name : '';\n    base = ' [Function' + n + ']';\n  }\n\n  // Make RegExps say that they are RegExps\n  if (isRegExp(value)) {\n    base = ' ' + RegExp.prototype.toString.call(value);\n  }\n\n  // Make dates with properties first say the date\n  if (isDate(value)) {\n    base = ' ' + Date.prototype.toUTCString.call(value);\n  }\n\n  // Make error with message first say the error\n  if (isError(value)) {\n    base = ' ' + formatError(value);\n  }\n\n  if (keys.length === 0 && (!array || value.length == 0)) {\n    return braces[0] + base + braces[1];\n  }\n\n  if (recurseTimes < 0) {\n    if (isRegExp(value)) {\n      return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n    } else {\n      return ctx.stylize('[Object]', 'special');\n    }\n  }\n\n  ctx.seen.push(value);\n\n  var output;\n  if (array) {\n    output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n  } else {\n    output = keys.map(function(key) {\n      return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n    });\n  }\n\n  ctx.seen.pop();\n\n  return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n  if (isUndefined(value))\n    return ctx.stylize('undefined', 'undefined');\n  if (isString(value)) {\n    var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n                                             .replace(/'/g, \"\\\\'\")\n                                             .replace(/\\\\\"/g, '\"') + '\\'';\n    return ctx.stylize(simple, 'string');\n  }\n  if (isNumber(value))\n    return ctx.stylize('' + value, 'number');\n  if (isBoolean(value))\n    return ctx.stylize('' + value, 'boolean');\n  // For some reason typeof null is \"object\", so special case here.\n  if (isNull(value))\n    return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n  return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n  var output = [];\n  for (var i = 0, l = value.length; i < l; ++i) {\n    if (hasOwnProperty(value, String(i))) {\n      output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n          String(i), true));\n    } else {\n      output.push('');\n    }\n  }\n  keys.forEach(function(key) {\n    if (!key.match(/^\\d+$/)) {\n      output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n          key, true));\n    }\n  });\n  return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n  var name, str, desc;\n  desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n  if (desc.get) {\n    if (desc.set) {\n      str = ctx.stylize('[Getter/Setter]', 'special');\n    } else {\n      str = ctx.stylize('[Getter]', 'special');\n    }\n  } else {\n    if (desc.set) {\n      str = ctx.stylize('[Setter]', 'special');\n    }\n  }\n  if (!hasOwnProperty(visibleKeys, key)) {\n    name = '[' + key + ']';\n  }\n  if (!str) {\n    if (ctx.seen.indexOf(desc.value) < 0) {\n      if (isNull(recurseTimes)) {\n        str = formatValue(ctx, desc.value, null);\n      } else {\n        str = formatValue(ctx, desc.value, recurseTimes - 1);\n      }\n      if (str.indexOf('\\n') > -1) {\n        if (array) {\n          str = str.split('\\n').map(function(line) {\n            return '  ' + line;\n          }).join('\\n').slice(2);\n        } else {\n          str = '\\n' + str.split('\\n').map(function(line) {\n            return '   ' + line;\n          }).join('\\n');\n        }\n      }\n    } else {\n      str = ctx.stylize('[Circular]', 'special');\n    }\n  }\n  if (isUndefined(name)) {\n    if (array && key.match(/^\\d+$/)) {\n      return str;\n    }\n    name = JSON.stringify('' + key);\n    if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n      name = name.slice(1, -1);\n      name = ctx.stylize(name, 'name');\n    } else {\n      name = name.replace(/'/g, \"\\\\'\")\n                 .replace(/\\\\\"/g, '\"')\n                 .replace(/(^\"|\"$)/g, \"'\");\n      name = ctx.stylize(name, 'string');\n    }\n  }\n\n  return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n  var numLinesEst = 0;\n  var length = output.reduce(function(prev, cur) {\n    numLinesEst++;\n    if (cur.indexOf('\\n') >= 0) numLinesEst++;\n    return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n  }, 0);\n\n  if (length > 60) {\n    return braces[0] +\n           (base === '' ? '' : base + '\\n ') +\n           ' ' +\n           output.join(',\\n  ') +\n           ' ' +\n           braces[1];\n  }\n\n  return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nexports.types = require('./support/types');\n\nfunction isArray(ar) {\n  return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n  return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n  return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n  return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n  return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n  return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n  return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n  return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n  return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\nexports.types.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n  return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n  return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\nexports.types.isDate = isDate;\n\nfunction isError(e) {\n  return isObject(e) &&\n      (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\nexports.types.isNativeError = isError;\n\nfunction isFunction(arg) {\n  return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n  return arg === null ||\n         typeof arg === 'boolean' ||\n         typeof arg === 'number' ||\n         typeof arg === 'string' ||\n         typeof arg === 'symbol' ||  // ES6 symbol\n         typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n  return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n  return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n              'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n  var d = new Date();\n  var time = [pad(d.getHours()),\n              pad(d.getMinutes()),\n              pad(d.getSeconds())].join(':');\n  return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n  console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n *     prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n  // Don't do anything if add isn't an object\n  if (!add || !isObject(add)) return origin;\n\n  var keys = Object.keys(add);\n  var i = keys.length;\n  while (i--) {\n    origin[keys[i]] = add[keys[i]];\n  }\n  return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n  return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nvar kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined;\n\nexports.promisify = function promisify(original) {\n  if (typeof original !== 'function')\n    throw new TypeError('The \"original\" argument must be of type Function');\n\n  if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {\n    var fn = original[kCustomPromisifiedSymbol];\n    if (typeof fn !== 'function') {\n      throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');\n    }\n    Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n      value: fn, enumerable: false, writable: false, configurable: true\n    });\n    return fn;\n  }\n\n  function fn() {\n    var promiseResolve, promiseReject;\n    var promise = new Promise(function (resolve, reject) {\n      promiseResolve = resolve;\n      promiseReject = reject;\n    });\n\n    var args = [];\n    for (var i = 0; i < arguments.length; i++) {\n      args.push(arguments[i]);\n    }\n    args.push(function (err, value) {\n      if (err) {\n        promiseReject(err);\n      } else {\n        promiseResolve(value);\n      }\n    });\n\n    try {\n      original.apply(this, args);\n    } catch (err) {\n      promiseReject(err);\n    }\n\n    return promise;\n  }\n\n  Object.setPrototypeOf(fn, Object.getPrototypeOf(original));\n\n  if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n    value: fn, enumerable: false, writable: false, configurable: true\n  });\n  return Object.defineProperties(\n    fn,\n    getOwnPropertyDescriptors(original)\n  );\n}\n\nexports.promisify.custom = kCustomPromisifiedSymbol\n\nfunction callbackifyOnRejected(reason, cb) {\n  // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M).\n  // Because `null` is a special error value in callbacks which means \"no error\n  // occurred\", we error-wrap so the callback consumer can distinguish between\n  // \"the promise rejected with null\" or \"the promise fulfilled with undefined\".\n  if (!reason) {\n    var newReason = new Error('Promise was rejected with a falsy value');\n    newReason.reason = reason;\n    reason = newReason;\n  }\n  return cb(reason);\n}\n\nfunction callbackify(original) {\n  if (typeof original !== 'function') {\n    throw new TypeError('The \"original\" argument must be of type Function');\n  }\n\n  // We DO NOT return the promise as it gives the user a false sense that\n  // the promise is actually somehow related to the callback's execution\n  // and that the callback throwing will reject the promise.\n  function callbackified() {\n    var args = [];\n    for (var i = 0; i < arguments.length; i++) {\n      args.push(arguments[i]);\n    }\n\n    var maybeCb = args.pop();\n    if (typeof maybeCb !== 'function') {\n      throw new TypeError('The last argument must be of type Function');\n    }\n    var self = this;\n    var cb = function() {\n      return maybeCb.apply(self, arguments);\n    };\n    // In true node style we process the callback on `nextTick` with all the\n    // implications (stack, `uncaughtException`, `async_hooks`)\n    original.apply(this, args)\n      .then(function(ret) { process.nextTick(cb.bind(null, null, ret)) },\n            function(rej) { process.nextTick(callbackifyOnRejected.bind(null, rej, cb)) });\n  }\n\n  Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));\n  Object.defineProperties(callbackified,\n                          getOwnPropertyDescriptors(original));\n  return callbackified;\n}\nexports.callbackify = callbackify;\n", "'use strict';\n\nvar forEach = require('for-each');\nvar availableTypedArrays = require('available-typed-arrays');\nvar callBound = require('call-bind/callBound');\nvar gOPD = require('gopd');\n\nvar $toString = callBound('Object.prototype.toString');\nvar hasToStringTag = require('has-tostringtag/shams')();\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\nvar typedArrays = availableTypedArrays();\n\nvar $slice = callBound('String.prototype.slice');\nvar toStrTags = {};\nvar getPrototypeOf = Object.getPrototypeOf; // require('getprototypeof');\nif (hasToStringTag && gOPD && getPrototypeOf) {\n\tforEach(typedArrays, function (typedArray) {\n\t\tif (typeof g[typedArray] === 'function') {\n\t\t\tvar arr = new g[typedArray]();\n\t\t\tif (Symbol.toStringTag in arr) {\n\t\t\t\tvar proto = getPrototypeOf(arr);\n\t\t\t\tvar descriptor = gOPD(proto, Symbol.toStringTag);\n\t\t\t\tif (!descriptor) {\n\t\t\t\t\tvar superProto = getPrototypeOf(proto);\n\t\t\t\t\tdescriptor = gOPD(superProto, Symbol.toStringTag);\n\t\t\t\t}\n\t\t\t\ttoStrTags[typedArray] = descriptor.get;\n\t\t\t}\n\t\t}\n\t});\n}\n\nvar tryTypedArrays = function tryAllTypedArrays(value) {\n\tvar foundName = false;\n\tforEach(toStrTags, function (getter, typedArray) {\n\t\tif (!foundName) {\n\t\t\ttry {\n\t\t\t\tvar name = getter.call(value);\n\t\t\t\tif (name === typedArray) {\n\t\t\t\t\tfoundName = name;\n\t\t\t\t}\n\t\t\t} catch (e) {}\n\t\t}\n\t});\n\treturn foundName;\n};\n\nvar isTypedArray = require('is-typed-array');\n\nmodule.exports = function whichTypedArray(value) {\n\tif (!isTypedArray(value)) { return false; }\n\tif (!hasToStringTag || !(Symbol.toStringTag in value)) { return $slice($toString(value), 8, -1); }\n\treturn tryTypedArrays(value);\n};\n", "// This file is just added for convenience so this repository can be\n// directly checked out into a project's deps folder\nmodule.exports = require('./lib/xmldoc');\n", "(function () {\n  var sax;\n\n  if (\n    typeof module !== \"undefined\" &&\n    module.exports &&\n    !global.xmldocAssumeBrowser\n  ) {\n    // We're being used in a Node-like environment\n    sax = require(\"sax\");\n  } else {\n    // assume it's attached to the Window object in a browser\n    sax = this.sax;\n\n    if (!sax) {\n      // no sax for you!\n      throw new Error(\n        \"Expected sax to be defined. Make sure you're including sax.js before this file.\",\n      );\n    }\n  }\n\n  /*\n   * XmlElement is our basic building block. Everything is an XmlElement; even XmlDocument\n   * behaves like an XmlElement by inheriting its attributes and functions.\n   */\n\n  function XmlElement(tag) {\n    // Capture the parser object off of the XmlDocument delegate\n    var parser = delegates[delegates.length - 1].parser;\n\n    this.name = tag.name;\n    this.attr = tag.attributes;\n    this.val = \"\";\n    this.children = [];\n    this.firstChild = null;\n    this.lastChild = null;\n\n    // Assign parse information\n    this.line = parser.line;\n    this.column = parser.column;\n    this.position = parser.position;\n    this.startTagPosition = parser.startTagPosition;\n  }\n\n  // Private methods\n\n  XmlElement.prototype._addChild = function (child) {\n    // add to our children array\n    this.children.push(child);\n\n    // update first/last pointers\n    if (!this.firstChild) this.firstChild = child;\n    this.lastChild = child;\n  };\n\n  // SaxParser handlers\n\n  XmlElement.prototype._opentag = function (tag) {\n    var child = new XmlElement(tag);\n\n    this._addChild(child);\n\n    delegates.unshift(child);\n  };\n\n  XmlElement.prototype._closetag = function () {\n    delegates.shift();\n  };\n\n  XmlElement.prototype._text = function (text) {\n    if (typeof this.children === \"undefined\") return;\n\n    this.val += text;\n\n    this._addChild(new XmlTextNode(text));\n  };\n\n  XmlElement.prototype._cdata = function (cdata) {\n    this.val += cdata;\n\n    this._addChild(new XmlCDataNode(cdata));\n  };\n\n  XmlElement.prototype._comment = function (comment) {\n    if (typeof this.children === \"undefined\") return;\n\n    this._addChild(new XmlCommentNode(comment));\n  };\n\n  XmlElement.prototype._error = function (err) {\n    throw err;\n  };\n\n  // Useful functions\n\n  XmlElement.prototype.eachChild = function (iterator, context) {\n    for (var i = 0, l = this.children.length; i < l; i++)\n      if (this.children[i].type === \"element\")\n        if (\n          iterator.call(context, this.children[i], i, this.children) === false\n        )\n          return;\n  };\n\n  XmlElement.prototype.childNamed = function (name) {\n    for (var i = 0, l = this.children.length; i < l; i++) {\n      var child = this.children[i];\n      if (child.name === name) return child;\n    }\n    return undefined;\n  };\n\n  XmlElement.prototype.childrenNamed = function (name) {\n    var matches = [];\n\n    for (var i = 0, l = this.children.length; i < l; i++)\n      if (this.children[i].name === name) matches.push(this.children[i]);\n\n    return matches;\n  };\n\n  XmlElement.prototype.childWithAttribute = function (name, value) {\n    for (var i = 0, l = this.children.length; i < l; i++) {\n      var child = this.children[i];\n      if (\n        child.type === \"element\" &&\n        ((value && child.attr[name] === value) || (!value && child.attr[name]))\n      )\n        return child;\n    }\n    return undefined;\n  };\n  \n  XmlElement.prototype.descendantsNamed = function (name) {\n     var matches = [];\n\n     for (var i = 0, l = this.children.length; i < l; i++) {\n       var child = this.children[i];\n       if (child.type === \"element\") {\n         if (child.name === name) matches.push(child);\n         matches = matches.concat(child.descendantsNamed(name));\n       }\n     }\n\n     return matches;\n   };\n\n  XmlElement.prototype.descendantWithPath = function (path) {\n    var descendant = this;\n    var components = path.split(\".\");\n\n    for (var i = 0, l = components.length; i < l; i++)\n      if (descendant && descendant.type === \"element\")\n        descendant = descendant.childNamed(components[i]);\n      else return undefined;\n\n    return descendant;\n  };\n\n  XmlElement.prototype.valueWithPath = function (path) {\n    var components = path.split(\"@\");\n    var descendant = this.descendantWithPath(components[0]);\n    if (descendant)\n      return components.length > 1\n        ? descendant.attr[components[1]]\n        : descendant.val;\n    else return undefined;\n  };\n\n  // String formatting (for debugging)\n\n  XmlElement.prototype.toString = function (options) {\n    return this.toStringWithIndent(\"\", options);\n  };\n\n  XmlElement.prototype.toStringWithIndent = function (indent, options) {\n    var s = indent + \"<\" + this.name;\n    var linebreak = options && options.compressed ? \"\" : \"\\n\";\n    var preserveWhitespace = options && options.preserveWhitespace;\n\n    for (var name in this.attr)\n      if (Object.prototype.hasOwnProperty.call(this.attr, name))\n        s += \" \" + name + '=\"' + escapeXML(this.attr[name]) + '\"';\n\n    if (this.children.length === 1 && this.children[0].type !== \"element\") {\n      s += \">\" + this.children[0].toString(options) + \"</\" + this.name + \">\";\n    } else if (this.children.length) {\n      s += \">\" + linebreak;\n\n      var childIndent = indent + (options && options.compressed ? \"\" : \"  \");\n\n      for (var i = 0, l = this.children.length; i < l; i++) {\n        s +=\n          this.children[i].toStringWithIndent(childIndent, options) + linebreak;\n      }\n\n      s += indent + \"</\" + this.name + \">\";\n    } else if (options && options.html) {\n      var whiteList = [\n        \"area\",\n        \"base\",\n        \"br\",\n        \"col\",\n        \"embed\",\n        \"frame\",\n        \"hr\",\n        \"img\",\n        \"input\",\n        \"keygen\",\n        \"link\",\n        \"menuitem\",\n        \"meta\",\n        \"param\",\n        \"source\",\n        \"track\",\n        \"wbr\",\n      ];\n      if (whiteList.indexOf(this.name) !== -1) s += \"/>\";\n      else s += \"></\" + this.name + \">\";\n    } else {\n      s += \"/>\";\n    }\n\n    return s;\n  };\n\n  // Alternative XML nodes\n\n  function XmlTextNode(text) {\n    this.text = text;\n  }\n\n  XmlTextNode.prototype.toString = function (options) {\n    return formatText(escapeXML(this.text), options);\n  };\n\n  XmlTextNode.prototype.toStringWithIndent = function (indent, options) {\n    return indent + this.toString(options);\n  };\n\n  function XmlCDataNode(cdata) {\n    this.cdata = cdata;\n  }\n\n  XmlCDataNode.prototype.toString = function (options) {\n    return \"<![CDATA[\" + formatText(this.cdata, options) + \"]]>\";\n  };\n\n  XmlCDataNode.prototype.toStringWithIndent = function (indent, options) {\n    return indent + this.toString(options);\n  };\n\n  function XmlCommentNode(comment) {\n    this.comment = comment;\n  }\n\n  XmlCommentNode.prototype.toString = function (options) {\n    return \"<!--\" + formatText(escapeXML(this.comment), options) + \"-->\";\n  };\n\n  XmlCommentNode.prototype.toStringWithIndent = function (indent, options) {\n    return indent + this.toString(options);\n  };\n\n  // Node type tag\n\n  XmlElement.prototype.type = \"element\";\n  XmlTextNode.prototype.type = \"text\";\n  XmlCDataNode.prototype.type = \"cdata\";\n  XmlCommentNode.prototype.type = \"comment\";\n\n  /*\n   * XmlDocument is the class we expose to the user; it uses the sax parser to create a hierarchy\n   * of XmlElements.\n   */\n\n  function XmlDocument(xml) {\n    xml && (xml = xml.toString().trim());\n\n    if (!xml) throw new Error(\"No XML to parse!\");\n\n    // Stores doctype (if defined)\n    this.doctype = \"\";\n\n    // Expose the parser to the other delegates while the parser is running\n    this.parser = sax.parser(true); // strict\n    addParserEvents(this.parser);\n\n    // We'll use the file-scoped \"delegates\" var to remember what elements we're currently\n    // parsing; they will push and pop off the stack as we get deeper into the XML hierarchy.\n    // It's safe to use a global because JS is single-threaded.\n    delegates = [this];\n\n    this.parser.write(xml);\n\n    // Remove the parser as it is no longer needed and should not be exposed to clients\n    delete this.parser;\n  }\n\n  // make XmlDocument inherit XmlElement's methods\n  extend(XmlDocument.prototype, XmlElement.prototype);\n\n  XmlDocument.prototype._opentag = function (tag) {\n    if (typeof this.children === \"undefined\")\n      // the first tag we encounter should be the root - we'll \"become\" the root XmlElement\n      XmlElement.call(this, tag);\n    // all other tags will be the root element's children\n    else XmlElement.prototype._opentag.apply(this, arguments);\n  };\n\n  XmlDocument.prototype._doctype = function (doctype) {\n    this.doctype += doctype;\n  };\n\n  // file-scoped global stack of delegates\n  var delegates = null;\n\n  /*\n   * Helper functions\n   */\n\n  function addParserEvents(parser) {\n    parser.onopentag = parser_opentag;\n    parser.onclosetag = parser_closetag;\n    parser.ontext = parser_text;\n    parser.oncdata = parser_cdata;\n    parser.oncomment = parser_comment;\n    parser.ondoctype = parser_doctype;\n    parser.onerror = parser_error;\n  }\n\n  // create these closures and cache them by keeping them file-scoped\n  function parser_opentag() {\n    delegates[0] && delegates[0]._opentag.apply(delegates[0], arguments);\n  }\n  function parser_closetag() {\n    delegates[0] && delegates[0]._closetag.apply(delegates[0], arguments);\n  }\n  function parser_text() {\n    delegates[0] && delegates[0]._text.apply(delegates[0], arguments);\n  }\n  function parser_cdata() {\n    delegates[0] && delegates[0]._cdata.apply(delegates[0], arguments);\n  }\n  function parser_comment() {\n    delegates[0] && delegates[0]._comment.apply(delegates[0], arguments);\n  }\n  function parser_doctype() {\n    delegates[0] && delegates[0]._doctype.apply(delegates[0], arguments);\n  }\n  function parser_error() {\n    delegates[0] && delegates[0]._error.apply(delegates[0], arguments);\n  }\n\n  // a relatively standard extend method\n  function extend(destination, source) {\n    for (var prop in source)\n      if (source.hasOwnProperty(prop)) destination[prop] = source[prop];\n  }\n\n  // escapes XML entities like \"<\", \"&\", etc.\n  function escapeXML(value) {\n    return value\n      .toString()\n      .replace(/&/g, \"&amp;\")\n      .replace(/</g, \"&lt;\")\n      .replace(/>/g, \"&gt;\")\n      .replace(/'/g, \"&apos;\")\n      .replace(/\"/g, \"&quot;\");\n  }\n\n  // formats some text for debugging given a few options\n  function formatText(text, options) {\n    var finalText = text;\n\n    if (options && options.trimmed && text.length > 25) {\n      finalText = finalText.substring(0, 25).trim() + \"…\";\n    }\n\n    if (!(options && options.preserveWhitespace)) {\n      finalText = finalText.trim();\n    }\n\n    return finalText;\n  }\n\n  // Are we being used in a Node-like environment?\n  if (\n    typeof module !== \"undefined\" &&\n    module.exports &&\n    !global.xmldocAssumeBrowser\n  ) {\n    module.exports.XmlDocument = XmlDocument;\n    module.exports.XmlElement = XmlElement;\n    module.exports.XmlTextNode = XmlTextNode;\n    module.exports.XmlCDataNode = XmlCDataNode;\n    module.exports.XmlCommentNode = XmlCommentNode;\n  } else {\n    this.XmlDocument = XmlDocument;\n    this.XmlElement = XmlElement;\n    this.XmlTextNode = XmlTextNode;\n    this.XmlCDataNode = XmlCDataNode;\n    this.XmlCommentNode = XmlCommentNode;\n  }\n})();\n", "'use strict';\r\n\r\n// Internet Explorer polyfills\r\nif (typeof window !== 'undefined' && !window.Promise) {\r\n\trequire('core-js/features/promise');\r\n}\r\nrequire('core-js/es/object/values');\r\n\r\nvar fetchUrl = function (url, headers) {\r\n\treturn new Promise(function (resolve, reject) {\r\n\t\tvar xhr = new XMLHttpRequest();\r\n\t\txhr.open('GET', url, true);\r\n\t\tfor (var headerName in headers) {\r\n\t\t\txhr.setRequestHeader(headerName, headers[headerName]);\r\n\t\t}\r\n\t\txhr.responseType = 'arraybuffer';\r\n\r\n\t\txhr.onreadystatechange = function () {\r\n\t\t\tif (xhr.readyState !== 4) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tvar ok = xhr.status >= 200 && xhr.status < 300;\r\n\t\t\tif (!ok) {\r\n\t\t\t\tsetTimeout(function () {\r\n\t\t\t\t\treject(new TypeError('Failed to fetch (url: \"' + url + '\")'));\r\n\t\t\t\t}, 0);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\txhr.onload = function () {\r\n\t\t\tvar ok = xhr.status >= 200 && xhr.status < 300;\r\n\t\t\tif (ok) {\r\n\t\t\t\tresolve(xhr.response);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\txhr.onerror = function () {\r\n\t\t\tsetTimeout(function () {\r\n\t\t\t\treject(new TypeError('Network request failed (url: \"' + url + '\")'));\r\n\t\t\t}, 0);\r\n\t\t};\r\n\r\n\t\txhr.ontimeout = function () {\r\n\t\t\tsetTimeout(function () {\r\n\t\t\t\treject(new TypeError('Network request failed (url: \"' + url + '\")'));\r\n\t\t\t}, 0);\r\n\t\t};\r\n\r\n\t\txhr.send();\r\n\t});\r\n};\r\n\r\nfunction URLBrowserResolver(fs) {\r\n\tthis.fs = fs;\r\n\tthis.resolving = {};\r\n}\r\n\r\nURLBrowserResolver.prototype.resolve = function (url, headers) {\r\n\tif (!this.resolving[url]) {\r\n\t\tvar _this = this;\r\n\t\tthis.resolving[url] = new Promise(function (resolve, reject) {\r\n\t\t\tif (url.toLowerCase().indexOf('https://') === 0 || url.toLowerCase().indexOf('http://') === 0) {\r\n\t\t\t\tif (_this.fs.existsSync(url)) {\r\n\t\t\t\t\t// url was downloaded earlier\r\n\t\t\t\t\tresolve();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tfetchUrl(url, headers).then(function (buffer) {\r\n\t\t\t\t\t\t_this.fs.writeFileSync(url, buffer);\r\n\t\t\t\t\t\tresolve();\r\n\t\t\t\t\t}, function (result) {\r\n\t\t\t\t\t\treject(result);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\t// cannot be resolved\r\n\t\t\t\tresolve();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\treturn this.resolving[url];\r\n}\r\n\r\nURLBrowserResolver.prototype.resolved = function () {\r\n\tvar _this = this;\r\n\treturn new Promise(function (resolve, reject) {\r\n\t\tPromise.all(Object.values(_this.resolving)).then(function () {\r\n\t\t\tresolve();\r\n\t\t}, function (result) {\r\n\t\t\treject(result);\r\n\t\t});\r\n\t});\r\n}\r\n\r\nmodule.exports = URLBrowserResolver;\r\n", "'use strict';\r\n\r\nvar isFunction = require('../helpers').isFunction;\r\nvar isUndefined = require('../helpers').isUndefined;\r\nvar isNull = require('../helpers').isNull;\r\nvar FileSaver = require('file-saver');\r\nvar saveAs = FileSaver.saveAs;\r\n\r\nvar defaultClientFonts = {\r\n\tRoboto: {\r\n\t\tnormal: 'Roboto-Regular.ttf',\r\n\t\tbold: 'Roboto-Medium.ttf',\r\n\t\titalics: 'Roboto-Italic.ttf',\r\n\t\tbolditalics: 'Roboto-MediumItalic.ttf'\r\n\t}\r\n};\r\n\r\nfunction Document(docDefinition, tableLayouts, fonts, vfs) {\r\n\tthis.docDefinition = docDefinition;\r\n\tthis.tableLayouts = tableLayouts || null;\r\n\tthis.fonts = fonts || defaultClientFonts;\r\n\tthis.vfs = vfs;\r\n}\r\n\r\nfunction canCreatePdf() {\r\n\t// Ensure the browser provides the level of support needed\r\n\ttry {\r\n\t\tvar arr = new Uint8Array(1)\r\n\t\tvar proto = { foo: function () { return 42 } }\r\n\t\tObject.setPrototypeOf(proto, Uint8Array.prototype)\r\n\t\tObject.setPrototypeOf(arr, proto)\r\n\t\treturn arr.foo() === 42\r\n\t} catch (e) {\r\n\t\treturn false\r\n\t}\r\n}\r\n\r\nDocument.prototype._createDoc = function (options, cb) {\r\n\tvar getExtendedUrl = function (url) {\r\n\t\tif (typeof url === 'object') {\r\n\t\t\treturn { url: url.url, headers: url.headers };\r\n\t\t}\r\n\r\n\t\treturn { url: url, headers: {} };\r\n\t};\r\n\r\n\toptions = options || {};\r\n\tif (this.tableLayouts) {\r\n\t\toptions.tableLayouts = this.tableLayouts;\r\n\t}\r\n\r\n\tvar PdfPrinter = require('../printer');\r\n\r\n\tvar printer = new PdfPrinter(this.fonts);\r\n\trequire('fs').bindFS(this.vfs); // bind virtual file system to file system\r\n\r\n\tif (!isFunction(cb)) {\r\n\t\tvar doc = printer.createPdfKitDocument(this.docDefinition, options);\r\n\r\n\t\treturn doc;\r\n\t}\r\n\r\n\tvar URLBrowserResolver = require('./URLBrowserResolver');\r\n\tvar urlResolver = new URLBrowserResolver(require('fs'));\r\n\r\n\tfor (var font in this.fonts) {\r\n\t\tif (this.fonts.hasOwnProperty(font)) {\r\n\t\t\tif (this.fonts[font].normal) {\r\n\t\t\t\tif (Array.isArray(this.fonts[font].normal)) { // TrueType Collection\r\n\t\t\t\t\tvar url = getExtendedUrl(this.fonts[font].normal[0]);\r\n\t\t\t\t\turlResolver.resolve(url.url, url.headers);\r\n\t\t\t\t\tthis.fonts[font].normal[0] = url.url;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvar url = getExtendedUrl(this.fonts[font].normal);\r\n\t\t\t\t\turlResolver.resolve(url.url, url.headers);\r\n\t\t\t\t\tthis.fonts[font].normal = url.url;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (this.fonts[font].bold) {\r\n\t\t\t\tif (Array.isArray(this.fonts[font].bold)) { // TrueType Collection\r\n\t\t\t\t\tvar url = getExtendedUrl(this.fonts[font].bold[0]);\r\n\t\t\t\t\turlResolver.resolve(url.url, url.headers);\r\n\t\t\t\t\tthis.fonts[font].bold[0] = url.url;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvar url = getExtendedUrl(this.fonts[font].bold);\r\n\t\t\t\t\turlResolver.resolve(url.url, url.headers);\r\n\t\t\t\t\tthis.fonts[font].bold = url.url;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (this.fonts[font].italics) {\r\n\t\t\t\tif (Array.isArray(this.fonts[font].italics)) { // TrueType Collection\r\n\t\t\t\t\tvar url = getExtendedUrl(this.fonts[font].italics[0]);\r\n\t\t\t\t\turlResolver.resolve(url.url, url.headers);\r\n\t\t\t\t\tthis.fonts[font].italics[0] = url.url;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvar url = getExtendedUrl(this.fonts[font].italics);\r\n\t\t\t\t\turlResolver.resolve(url.url, url.headers);\r\n\t\t\t\t\tthis.fonts[font].italics = url.url;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (this.fonts[font].bolditalics) {\r\n\t\t\t\tif (Array.isArray(this.fonts[font].bolditalics)) { // TrueType Collection\r\n\t\t\t\t\tvar url = getExtendedUrl(this.fonts[font].bolditalics[0]);\r\n\t\t\t\t\turlResolver.resolve(url.url, url.headers);\r\n\t\t\t\t\tthis.fonts[font].bolditalics[0] = url.url;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvar url = getExtendedUrl(this.fonts[font].bolditalics);\r\n\t\t\t\t\turlResolver.resolve(url.url, url.headers);\r\n\t\t\t\t\tthis.fonts[font].bolditalics = url.url;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tif (this.docDefinition.images) {\r\n\t\tfor (var image in this.docDefinition.images) {\r\n\t\t\tif (this.docDefinition.images.hasOwnProperty(image)) {\r\n\t\t\t\tvar url = getExtendedUrl(this.docDefinition.images[image]);\r\n\t\t\t\turlResolver.resolve(url.url, url.headers);\r\n\t\t\t\tthis.docDefinition.images[image] = url.url;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tvar _this = this;\r\n\r\n\turlResolver.resolved().then(function () {\r\n\t\tvar doc = printer.createPdfKitDocument(_this.docDefinition, options);\r\n\r\n\t\tcb(doc);\r\n\t}, function (result) {\r\n\t\tthrow result;\r\n\t});\r\n};\r\n\r\nDocument.prototype._flushDoc = function (doc, callback) {\r\n\tvar chunks = [];\r\n\tvar result;\r\n\r\n\tdoc.on('readable', function () {\r\n\t\tvar chunk;\r\n\t\twhile ((chunk = doc.read(9007199254740991)) !== null) {\r\n\t\t\tchunks.push(chunk);\r\n\t\t}\r\n\t});\r\n\tdoc.on('end', function () {\r\n\t\tresult = Buffer.concat(chunks);\r\n\t\tcallback(result, doc._pdfMakePages);\r\n\t});\r\n\tdoc.end();\r\n};\r\n\r\nDocument.prototype._getPages = function (options, cb) {\r\n\tif (!cb) {\r\n\t\tthrow '_getPages is an async method and needs a callback argument';\r\n\t}\r\n\tvar _this = this;\r\n\r\n\tthis._createDoc(options, function (doc) {\r\n\t\t_this._flushDoc(doc, function (ignoreBuffer, pages) {\r\n\t\t\tcb(pages);\r\n\t\t});\r\n\t});\r\n};\r\n\r\nDocument.prototype._bufferToBlob = function (buffer) {\r\n\tvar blob;\r\n\ttry {\r\n\t\tblob = new Blob([buffer], { type: 'application/pdf' });\r\n\t} catch (e) {\r\n\t\t// Old browser which can't handle it without making it an byte array (ie10)\r\n\t\tif (e.name === 'InvalidStateError') {\r\n\t\t\tvar byteArray = new Uint8Array(buffer);\r\n\t\t\tblob = new Blob([byteArray.buffer], { type: 'application/pdf' });\r\n\t\t}\r\n\t}\r\n\r\n\tif (!blob) {\r\n\t\tthrow 'Could not generate blob';\r\n\t}\r\n\r\n\treturn blob;\r\n};\r\n\r\nDocument.prototype._openWindow = function () {\r\n\t// we have to open the window immediately and store the reference\r\n\t// otherwise popup blockers will stop us\r\n\tvar win = window.open('', '_blank');\r\n\tif (win === null) {\r\n\t\tthrow 'Open PDF in new window blocked by browser';\r\n\t}\r\n\r\n\treturn win;\r\n};\r\n\r\nDocument.prototype._openPdf = function (options, win) {\r\n\tif (!win) {\r\n\t\twin = this._openWindow();\r\n\t}\r\n\ttry {\r\n\t\tthis.getBlob(function (result) {\r\n\t\t\tvar urlCreator = window.URL || window.webkitURL;\r\n\t\t\tvar pdfUrl = urlCreator.createObjectURL(result);\r\n\t\t\twin.location.href = pdfUrl;\r\n\r\n\t\t\t/* temporarily disabled\r\n\t\t\tif (win !== window) {\r\n\t\t\t\tsetTimeout(function () {\r\n\t\t\t\t\tif (isNull(win.window)) { // is closed by AdBlock\r\n\t\t\t\t\t\twindow.location.href = pdfUrl; // open in actual window\r\n\t\t\t\t\t}\r\n\t\t\t\t}, 500);\r\n\t\t\t}\r\n\t\t\t*/\r\n\t\t}, options);\r\n\t} catch (e) {\r\n\t\twin.close();\r\n\t\tthrow e;\r\n\t}\r\n};\r\n\r\nDocument.prototype.open = function (options, win) {\r\n\toptions = options || {};\r\n\toptions.autoPrint = false;\r\n\twin = win || null;\r\n\r\n\tthis._openPdf(options, win);\r\n};\r\n\r\n\r\nDocument.prototype.print = function (options, win) {\r\n\toptions = options || {};\r\n\toptions.autoPrint = true;\r\n\twin = win || null;\r\n\r\n\tthis._openPdf(options, win);\r\n};\r\n\r\n/**\r\n * download(defaultFileName = 'file.pdf', cb = null, options = {})\r\n * or\r\n * download(cb, options = {})\r\n */\r\nDocument.prototype.download = function (defaultFileName, cb, options) {\r\n\tif (isFunction(defaultFileName)) {\r\n\t\tif (!isUndefined(cb)) {\r\n\t\t\toptions = cb;\r\n\t\t}\r\n\t\tcb = defaultFileName;\r\n\t\tdefaultFileName = null;\r\n\t}\r\n\r\n\tdefaultFileName = defaultFileName || 'file.pdf';\r\n\tthis.getBlob(function (result) {\r\n\t\tsaveAs(result, defaultFileName);\r\n\r\n\t\tif (isFunction(cb)) {\r\n\t\t\tcb();\r\n\t\t}\r\n\t}, options);\r\n};\r\n\r\nDocument.prototype.getBase64 = function (cb, options) {\r\n\tif (!cb) {\r\n\t\tthrow 'getBase64 is an async method and needs a callback argument';\r\n\t}\r\n\tthis.getBuffer(function (buffer) {\r\n\t\tcb(buffer.toString('base64'));\r\n\t}, options);\r\n};\r\n\r\nDocument.prototype.getDataUrl = function (cb, options) {\r\n\tif (!cb) {\r\n\t\tthrow 'getDataUrl is an async method and needs a callback argument';\r\n\t}\r\n\tthis.getBuffer(function (buffer) {\r\n\t\tcb('data:application/pdf;base64,' + buffer.toString('base64'));\r\n\t}, options);\r\n};\r\n\r\nDocument.prototype.getBlob = function (cb, options) {\r\n\tif (!cb) {\r\n\t\tthrow 'getBlob is an async method and needs a callback argument';\r\n\t}\r\n\tvar that = this;\r\n\tthis.getBuffer(function (result) {\r\n\t\tvar blob = that._bufferToBlob(result);\r\n\t\tcb(blob);\r\n\t}, options);\r\n};\r\n\r\nDocument.prototype.getBuffer = function (cb, options) {\r\n\tif (!cb) {\r\n\t\tthrow 'getBuffer is an async method and needs a callback argument';\r\n\t}\r\n\r\n\tvar _this = this;\r\n\r\n\tthis._createDoc(options, function (doc) {\r\n\t\t_this._flushDoc(doc, function (buffer) {\r\n\t\t\tcb(buffer);\r\n\t\t});\r\n\t});\r\n};\r\n\r\nDocument.prototype.getStream = function (options, cb) {\r\n\tif (!isFunction(cb)) {\r\n\t\tvar doc = this._createDoc(options);\r\n\t\treturn doc;\r\n\t}\r\n\r\n\tthis._createDoc(options, function (doc) {\r\n\t\tcb(doc);\r\n\t});\r\n};\r\n\r\nmodule.exports = {\r\n\tcreatePdf: function (docDefinition, tableLayouts, fonts, vfs) {\r\n\t\tif (!canCreatePdf()) {\r\n\t\t\tthrow 'Your browser does not provide the level of support needed';\r\n\t\t}\r\n\t\treturn new Document(\r\n\t\t\tdocDefinition,\r\n\t\t\ttableLayouts || global.pdfMake.tableLayouts,\r\n\t\t\tfonts || global.pdfMake.fonts,\r\n\t\t\tvfs || global.pdfMake.vfs\r\n\t\t);\r\n\t}\r\n};\r\n", "'use strict';\r\n\r\nfunction VirtualFileSystem() {\r\n\tthis.fileSystem = {};\r\n\tthis.dataSystem = {};\r\n}\r\n\r\nVirtualFileSystem.prototype.existsSync = function (filename) {\r\n\tfilename = fixFilename(filename);\r\n\treturn typeof this.fileSystem[filename] !== 'undefined'\r\n\t\t|| typeof this.dataSystem[filename] !== 'undefined';\r\n}\r\n\r\nVirtualFileSystem.prototype.readFileSync = function (filename, options) {\r\n\tfilename = fixFilename(filename);\r\n\r\n\tvar dataContent = this.dataSystem[filename];\r\n\tif (typeof dataContent === 'string' && options === 'utf8') {\r\n\t\treturn dataContent;\r\n\t}\r\n\r\n\tif (dataContent) {\r\n\t\treturn new Buffer(dataContent, typeof dataContent === 'string' ? 'base64' : undefined);\r\n\t}\r\n\r\n\tvar content = this.fileSystem[filename];\r\n\tif (content) {\r\n\t\treturn content;\r\n\t}\r\n\r\n\tthrow 'File \\'' + filename + '\\' not found in virtual file system';\r\n};\r\n\r\nVirtualFileSystem.prototype.writeFileSync = function (filename, content) {\r\n\tthis.fileSystem[fixFilename(filename)] = content;\r\n};\r\n\r\nVirtualFileSystem.prototype.bindFS = function (data) {\r\n\tthis.dataSystem = data || {};\r\n};\r\n\r\n\r\nfunction fixFilename(filename) {\r\n\tif (filename.indexOf(__dirname) === 0) {\r\n\t\tfilename = filename.substring(__dirname.length);\r\n\t}\r\n\r\n\tif (filename.indexOf('/') === 0) {\r\n\t\tfilename = filename.substring(1);\r\n\t}\r\n\r\n\treturn filename;\r\n}\r\n\r\nmodule.exports = new VirtualFileSystem();\r\n", "'use strict';\r\n\r\nvar isString = require('./helpers').isString;\r\n\r\nfunction buildColumnWidths(columns, availableWidth) {\r\n\tvar autoColumns = [],\r\n\t\tautoMin = 0, autoMax = 0,\r\n\t\tstarColumns = [],\r\n\t\tstarMaxMin = 0,\r\n\t\tstarMaxMax = 0,\r\n\t\tfixedColumns = [],\r\n\t\tinitial_availableWidth = availableWidth;\r\n\r\n\tcolumns.forEach(function (column) {\r\n\t\tif (isAutoColumn(column)) {\r\n\t\t\tautoColumns.push(column);\r\n\t\t\tautoMin += column._minWidth;\r\n\t\t\tautoMax += column._maxWidth;\r\n\t\t} else if (isStarColumn(column)) {\r\n\t\t\tstarColumns.push(column);\r\n\t\t\tstarMaxMin = Math.max(starMaxMin, column._minWidth);\r\n\t\t\tstarMaxMax = Math.max(starMaxMax, column._maxWidth);\r\n\t\t} else {\r\n\t\t\tfixedColumns.push(column);\r\n\t\t}\r\n\t});\r\n\r\n\tfixedColumns.forEach(function (col) {\r\n\t\t// width specified as %\r\n\t\tif (isString(col.width) && /\\d+%/.test(col.width)) {\r\n\t\t\tcol.width = parseFloat(col.width) * initial_availableWidth / 100;\r\n\t\t}\r\n\t\tif (col.width < (col._minWidth) && col.elasticWidth) {\r\n\t\t\tcol._calcWidth = col._minWidth;\r\n\t\t} else {\r\n\t\t\tcol._calcWidth = col.width;\r\n\t\t}\r\n\r\n\t\tavailableWidth -= col._calcWidth;\r\n\t});\r\n\r\n\t// http://www.freesoft.org/CIE/RFC/1942/18.htm\r\n\t// http://www.w3.org/TR/CSS2/tables.html#width-layout\r\n\t// http://dev.w3.org/csswg/css3-tables-algorithms/Overview.src.htm\r\n\tvar minW = autoMin + starMaxMin * starColumns.length;\r\n\tvar maxW = autoMax + starMaxMax * starColumns.length;\r\n\tif (minW >= availableWidth) {\r\n\t\t// case 1 - there's no way to fit all columns within available width\r\n\t\t// that's actually pretty bad situation with PDF as we have no horizontal scroll\r\n\t\t// no easy workaround (unless we decide, in the future, to split single words)\r\n\t\t// currently we simply use minWidths for all columns\r\n\t\tautoColumns.forEach(function (col) {\r\n\t\t\tcol._calcWidth = col._minWidth;\r\n\t\t});\r\n\r\n\t\tstarColumns.forEach(function (col) {\r\n\t\t\tcol._calcWidth = starMaxMin; // starMaxMin already contains padding\r\n\t\t});\r\n\t} else {\r\n\t\tif (maxW < availableWidth) {\r\n\t\t\t// case 2 - we can fit rest of the table within available space\r\n\t\t\tautoColumns.forEach(function (col) {\r\n\t\t\t\tcol._calcWidth = col._maxWidth;\r\n\t\t\t\tavailableWidth -= col._calcWidth;\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\t// maxW is too large, but minW fits within available width\r\n\t\t\tvar W = availableWidth - minW;\r\n\t\t\tvar D = maxW - minW;\r\n\r\n\t\t\tautoColumns.forEach(function (col) {\r\n\t\t\t\tvar d = col._maxWidth - col._minWidth;\r\n\t\t\t\tcol._calcWidth = col._minWidth + d * W / D;\r\n\t\t\t\tavailableWidth -= col._calcWidth;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (starColumns.length > 0) {\r\n\t\t\tvar starSize = availableWidth / starColumns.length;\r\n\r\n\t\t\tstarColumns.forEach(function (col) {\r\n\t\t\t\tcol._calcWidth = starSize;\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction isAutoColumn(column) {\r\n\treturn column.width === 'auto';\r\n}\r\n\r\nfunction isStarColumn(column) {\r\n\treturn column.width === null || column.width === undefined || column.width === '*' || column.width === 'star';\r\n}\r\n\r\n//TODO: refactor and reuse in measureTable\r\nfunction measureMinMax(columns) {\r\n\tvar result = { min: 0, max: 0 };\r\n\r\n\tvar maxStar = { min: 0, max: 0 };\r\n\tvar starCount = 0;\r\n\r\n\tfor (var i = 0, l = columns.length; i < l; i++) {\r\n\t\tvar c = columns[i];\r\n\r\n\t\tif (isStarColumn(c)) {\r\n\t\t\tmaxStar.min = Math.max(maxStar.min, c._minWidth);\r\n\t\t\tmaxStar.max = Math.max(maxStar.max, c._maxWidth);\r\n\t\t\tstarCount++;\r\n\t\t} else if (isAutoColumn(c)) {\r\n\t\t\tresult.min += c._minWidth;\r\n\t\t\tresult.max += c._maxWidth;\r\n\t\t} else {\r\n\t\t\tresult.min += ((c.width !== undefined && c.width) || c._minWidth);\r\n\t\t\tresult.max += ((c.width !== undefined && c.width) || c._maxWidth);\r\n\t\t}\r\n\t}\r\n\r\n\tif (starCount) {\r\n\t\tresult.min += starCount * maxStar.min;\r\n\t\tresult.max += starCount * maxStar.max;\r\n\t}\r\n\r\n\treturn result;\r\n}\r\n\r\n/**\r\n * Calculates column widths\r\n * @private\r\n */\r\nmodule.exports = {\r\n\tbuildColumnWidths: buildColumnWidths,\r\n\tmeasureMinMax: measureMinMax,\r\n\tisAutoColumn: isAutoColumn,\r\n\tisStarColumn: isStarColumn\r\n};\r\n", "/*eslint no-unused-vars: [\"error\", {\"args\": \"none\"}]*/\r\n\r\n'use strict';\r\n\r\nvar TextTools = require('./textTools');\r\nvar StyleContextStack = require('./styleContextStack');\r\nvar ColumnCalculator = require('./columnCalculator');\r\nvar isString = require('./helpers').isString;\r\nvar isNumber = require('./helpers').isNumber;\r\nvar isObject = require('./helpers').isObject;\r\nvar isArray = require('./helpers').isArray;\r\nvar fontStringify = require('./helpers').fontStringify;\r\nvar getNodeId = require('./helpers').getNodeId;\r\nvar pack = require('./helpers').pack;\r\nvar qrEncoder = require('./qrEnc.js');\r\n\r\n/**\r\n * @private\r\n */\r\nfunction DocMeasure(fontProvider, styleDictionary, defaultStyle, imageMeasure, svgMeasure, tableLayouts, images) {\r\n\tthis.textTools = new TextTools(fontProvider);\r\n\tthis.styleStack = new StyleContextStack(styleDictionary, defaultStyle);\r\n\tthis.imageMeasure = imageMeasure;\r\n\tthis.svgMeasure = svgMeasure;\r\n\tthis.tableLayouts = tableLayouts;\r\n\tthis.images = images;\r\n\tthis.autoImageIndex = 1;\r\n}\r\n\r\n/**\r\n * Measures all nodes and sets min/max-width properties required for the second\r\n * layout-pass.\r\n * @param  {Object} docStructure document-definition-object\r\n * @return {Object}              document-measurement-object\r\n */\r\nDocMeasure.prototype.measureDocument = function (docStructure) {\r\n\treturn this.measureNode(docStructure);\r\n};\r\n\r\nDocMeasure.prototype.measureNode = function (node) {\r\n\r\n\tvar self = this;\r\n\r\n\treturn this.styleStack.auto(node, function () {\r\n\t\t// TODO: refactor + rethink whether this is the proper way to handle margins\r\n\t\tnode._margin = getNodeMargin(node);\r\n\r\n\t\tif (node.columns) {\r\n\t\t\treturn extendMargins(self.measureColumns(node));\r\n\t\t} else if (node.stack) {\r\n\t\t\treturn extendMargins(self.measureVerticalContainer(node));\r\n\t\t} else if (node.ul) {\r\n\t\t\treturn extendMargins(self.measureUnorderedList(node));\r\n\t\t} else if (node.ol) {\r\n\t\t\treturn extendMargins(self.measureOrderedList(node));\r\n\t\t} else if (node.table) {\r\n\t\t\treturn extendMargins(self.measureTable(node));\r\n\t\t} else if (node.text !== undefined) {\r\n\t\t\treturn extendMargins(self.measureLeaf(node));\r\n\t\t} else if (node.toc) {\r\n\t\t\treturn extendMargins(self.measureToc(node));\r\n\t\t} else if (node.image) {\r\n\t\t\treturn extendMargins(self.measureImage(node));\r\n\t\t} else if (node.svg) {\r\n\t\t\treturn extendMargins(self.measureSVG(node));\r\n\t\t} else if (node.canvas) {\r\n\t\t\treturn extendMargins(self.measureCanvas(node));\r\n\t\t} else if (node.qr) {\r\n\t\t\treturn extendMargins(self.measureQr(node));\r\n\t\t} else {\r\n\t\t\tthrow 'Unrecognized document structure: ' + JSON.stringify(node, fontStringify);\r\n\t\t}\r\n\t});\r\n\r\n\tfunction extendMargins(node) {\r\n\t\tvar margin = node._margin;\r\n\r\n\t\tif (margin) {\r\n\t\t\tnode._minWidth += margin[0] + margin[2];\r\n\t\t\tnode._maxWidth += margin[0] + margin[2];\r\n\t\t}\r\n\r\n\t\treturn node;\r\n\t}\r\n\r\n\tfunction getNodeMargin() {\r\n\r\n\t\tfunction processSingleMargins(node, currentMargin) {\r\n\t\t\tif (node.marginLeft || node.marginTop || node.marginRight || node.marginBottom) {\r\n\t\t\t\treturn [\r\n\t\t\t\t\tnode.marginLeft || currentMargin[0] || 0,\r\n\t\t\t\t\tnode.marginTop || currentMargin[1] || 0,\r\n\t\t\t\t\tnode.marginRight || currentMargin[2] || 0,\r\n\t\t\t\t\tnode.marginBottom || currentMargin[3] || 0\r\n\t\t\t\t];\r\n\t\t\t}\r\n\t\t\treturn currentMargin;\r\n\t\t}\r\n\r\n\t\tfunction flattenStyleArray(styleArray) {\r\n\t\t\tvar flattenedStyles = {};\r\n\t\t\tfor (var i = styleArray.length - 1; i >= 0; i--) {\r\n\t\t\t\tvar styleName = styleArray[i];\r\n\t\t\t\tvar style = self.styleStack.styleDictionary[styleName];\r\n\t\t\t\tfor (var key in style) {\r\n\t\t\t\t\tif (style.hasOwnProperty(key)) {\r\n\t\t\t\t\t\tflattenedStyles[key] = style[key];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn flattenedStyles;\r\n\t\t}\r\n\r\n\t\tfunction convertMargin(margin) {\r\n\t\t\tif (isNumber(margin)) {\r\n\t\t\t\tmargin = [margin, margin, margin, margin];\r\n\t\t\t} else if (isArray(margin)) {\r\n\t\t\t\tif (margin.length === 2) {\r\n\t\t\t\t\tmargin = [margin[0], margin[1], margin[0], margin[1]];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn margin;\r\n\t\t}\r\n\r\n\t\tvar margin = [undefined, undefined, undefined, undefined];\r\n\r\n\t\tif (node.style) {\r\n\t\t\tvar styleArray = isArray(node.style) ? node.style : [node.style];\r\n\t\t\tvar flattenedStyleArray = flattenStyleArray(styleArray);\r\n\r\n\t\t\tif (flattenedStyleArray) {\r\n\t\t\t\tmargin = processSingleMargins(flattenedStyleArray, margin);\r\n\t\t\t}\r\n\r\n\t\t\tif (flattenedStyleArray.margin) {\r\n\t\t\t\tmargin = convertMargin(flattenedStyleArray.margin);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tmargin = processSingleMargins(node, margin);\r\n\r\n\t\tif (node.margin) {\r\n\t\t\tmargin = convertMargin(node.margin);\r\n\t\t}\r\n\r\n\t\tif (margin[0] === undefined && margin[1] === undefined && margin[2] === undefined && margin[3] === undefined) {\r\n\t\t\treturn null;\r\n\t\t} else {\r\n\t\t\treturn margin;\r\n\t\t}\r\n\t}\r\n};\r\n\r\nDocMeasure.prototype.convertIfBase64Image = function (node) {\r\n\tif (/^data:image\\/(jpeg|jpg|png);base64,/.test(node.image)) {\r\n\t\tvar label = '$$pdfmake$$' + this.autoImageIndex++;\r\n\t\tthis.images[label] = node.image;\r\n\t\tnode.image = label;\r\n\t}\r\n};\r\n\r\nDocMeasure.prototype.measureImageWithDimensions = function (node, dimensions) {\r\n\tif (node.fit) {\r\n\t\tvar factor = (dimensions.width / dimensions.height > node.fit[0] / node.fit[1]) ? node.fit[0] / dimensions.width : node.fit[1] / dimensions.height;\r\n\t\tnode._width = node._minWidth = node._maxWidth = dimensions.width * factor;\r\n\t\tnode._height = dimensions.height * factor;\r\n\t} else {\r\n\t\tnode._width = node._minWidth = node._maxWidth = node.width || dimensions.width;\r\n\t\tnode._height = node.height || (dimensions.height * node._width / dimensions.width);\r\n\r\n\t\tif (isNumber(node.maxWidth) && node.maxWidth < node._width) {\r\n\t\t\tnode._width = node._minWidth = node._maxWidth = node.maxWidth;\r\n\t\t\tnode._height = node._width * dimensions.height / dimensions.width;\r\n\t\t}\r\n\r\n\t\tif (isNumber(node.maxHeight) && node.maxHeight < node._height) {\r\n\t\t\tnode._height = node.maxHeight;\r\n\t\t\tnode._width = node._minWidth = node._maxWidth = node._height * dimensions.width / dimensions.height;\r\n\t\t}\r\n\r\n\t\tif (isNumber(node.minWidth) && node.minWidth > node._width) {\r\n\t\t\tnode._width = node._minWidth = node._maxWidth = node.minWidth;\r\n\t\t\tnode._height = node._width * dimensions.height / dimensions.width;\r\n\t\t}\r\n\r\n\t\tif (isNumber(node.minHeight) && node.minHeight > node._height) {\r\n\t\t\tnode._height = node.minHeight;\r\n\t\t\tnode._width = node._minWidth = node._maxWidth = node._height * dimensions.width / dimensions.height;\r\n\t\t}\r\n\t}\r\n\r\n\tnode._alignment = this.styleStack.getProperty('alignment');\r\n};\r\n\r\nDocMeasure.prototype.measureImage = function (node) {\r\n\tif (this.images) {\r\n\t\tthis.convertIfBase64Image(node);\r\n\t}\r\n\r\n\tvar dimensions = this.imageMeasure.measureImage(node.image);\r\n\r\n\tthis.measureImageWithDimensions(node, dimensions);\r\n\r\n\treturn node;\r\n};\r\n\r\nDocMeasure.prototype.measureSVG = function (node) {\r\n\r\n\tvar dimensions = this.svgMeasure.measureSVG(node.svg);\r\n\r\n\tthis.measureImageWithDimensions(node, dimensions);\r\n\r\n\tnode.font = this.styleStack.getProperty('font');\r\n\r\n\t// scale SVG based on final dimension\r\n\tnode.svg = this.svgMeasure.writeDimensions(node.svg, {\r\n\t\twidth: node._width,\r\n\t\theight: node._height\r\n\t});\r\n\r\n\treturn node;\r\n};\r\n\r\nDocMeasure.prototype.measureLeaf = function (node) {\r\n\r\n\tif (node._textRef && node._textRef._textNodeRef.text) {\r\n\t\tnode.text = node._textRef._textNodeRef.text;\r\n\t}\r\n\r\n\t// Make sure style properties of the node itself are considered when building inlines.\r\n\t// We could also just pass [node] to buildInlines, but that fails for bullet points.\r\n\tvar styleStack = this.styleStack.clone();\r\n\tstyleStack.push(node);\r\n\r\n\tvar data = this.textTools.buildInlines(node.text, styleStack);\r\n\r\n\tnode._inlines = data.items;\r\n\tnode._minWidth = data.minWidth;\r\n\tnode._maxWidth = data.maxWidth;\r\n\r\n\treturn node;\r\n};\r\n\r\nDocMeasure.prototype.measureToc = function (node) {\r\n\tif (node.toc.title) {\r\n\t\tnode.toc.title = this.measureNode(node.toc.title);\r\n\t}\r\n\r\n\tif (node.toc._items.length > 0) {\r\n\t\tvar body = [];\r\n\t\tvar textStyle = node.toc.textStyle || {};\r\n\t\tvar numberStyle = node.toc.numberStyle || textStyle;\r\n\t\tvar textMargin = node.toc.textMargin || [0, 0, 0, 0];\r\n\t\tfor (var i = 0, l = node.toc._items.length; i < l; i++) {\r\n\t\t\tvar item = node.toc._items[i];\r\n\t\t\tvar lineStyle = item._textNodeRef.tocStyle || textStyle;\r\n\t\t\tvar lineMargin = item._textNodeRef.tocMargin || textMargin;\r\n\t\t\tvar lineNumberStyle = item._textNodeRef.tocNumberStyle || numberStyle;\r\n\t\t\tvar destination = getNodeId(item._nodeRef);\r\n\t\t\tbody.push([\r\n\t\t\t\t{ text: item._textNodeRef.text, linkToDestination: destination, alignment: 'left', style: lineStyle, margin: lineMargin },\r\n\t\t\t\t{ text: '00000', linkToDestination: destination, alignment: 'right', _tocItemRef: item._nodeRef, style: lineNumberStyle, margin: [0, lineMargin[1], 0, lineMargin[3]] }\r\n\t\t\t]);\r\n\t\t}\r\n\r\n\r\n\t\tnode.toc._table = {\r\n\t\t\ttable: {\r\n\t\t\t\tdontBreakRows: true,\r\n\t\t\t\twidths: ['*', 'auto'],\r\n\t\t\t\tbody: body\r\n\t\t\t},\r\n\t\t\tlayout: 'noBorders'\r\n\t\t};\r\n\r\n\t\tnode.toc._table = this.measureNode(node.toc._table);\r\n\t}\r\n\r\n\treturn node;\r\n};\r\n\r\nDocMeasure.prototype.measureVerticalContainer = function (node) {\r\n\tvar items = node.stack;\r\n\r\n\tnode._minWidth = 0;\r\n\tnode._maxWidth = 0;\r\n\r\n\tfor (var i = 0, l = items.length; i < l; i++) {\r\n\t\titems[i] = this.measureNode(items[i]);\r\n\r\n\t\tnode._minWidth = Math.max(node._minWidth, items[i]._minWidth);\r\n\t\tnode._maxWidth = Math.max(node._maxWidth, items[i]._maxWidth);\r\n\t}\r\n\r\n\treturn node;\r\n};\r\n\r\nDocMeasure.prototype.gapSizeForList = function () {\r\n\treturn this.textTools.sizeOfString('9. ', this.styleStack);\r\n};\r\n\r\nDocMeasure.prototype.buildUnorderedMarker = function (styleStack, gapSize, type) {\r\n\tfunction buildDisc(gapSize, color) {\r\n\t\t// TODO: ascender-based calculations\r\n\t\tvar radius = gapSize.fontSize / 6;\r\n\t\treturn {\r\n\t\t\tcanvas: [{\r\n\t\t\t\tx: radius,\r\n\t\t\t\ty: (gapSize.height / gapSize.lineHeight) + gapSize.descender - gapSize.fontSize / 3,\r\n\t\t\t\tr1: radius,\r\n\t\t\t\tr2: radius,\r\n\t\t\t\ttype: 'ellipse',\r\n\t\t\t\tcolor: color\r\n\t\t\t}]\r\n\t\t};\r\n\t}\r\n\r\n\tfunction buildSquare(gapSize, color) {\r\n\t\t// TODO: ascender-based calculations\r\n\t\tvar size = gapSize.fontSize / 3;\r\n\t\treturn {\r\n\t\t\tcanvas: [{\r\n\t\t\t\tx: 0,\r\n\t\t\t\ty: (gapSize.height / gapSize.lineHeight) + gapSize.descender - (gapSize.fontSize / 3) - (size / 2),\r\n\t\t\t\th: size,\r\n\t\t\t\tw: size,\r\n\t\t\t\ttype: 'rect',\r\n\t\t\t\tcolor: color\r\n\t\t\t}]\r\n\t\t};\r\n\t}\r\n\r\n\tfunction buildCircle(gapSize, color) {\r\n\t\t// TODO: ascender-based calculations\r\n\t\tvar radius = gapSize.fontSize / 6;\r\n\t\treturn {\r\n\t\t\tcanvas: [{\r\n\t\t\t\tx: radius,\r\n\t\t\t\ty: (gapSize.height / gapSize.lineHeight) + gapSize.descender - gapSize.fontSize / 3,\r\n\t\t\t\tr1: radius,\r\n\t\t\t\tr2: radius,\r\n\t\t\t\ttype: 'ellipse',\r\n\t\t\t\tlineColor: color\r\n\t\t\t}]\r\n\t\t};\r\n\t}\r\n\r\n\tvar marker;\r\n\tvar color = styleStack.getProperty('markerColor') || styleStack.getProperty('color') || 'black';\r\n\r\n\tswitch (type) {\r\n\t\tcase 'circle':\r\n\t\t\tmarker = buildCircle(gapSize, color);\r\n\t\t\tbreak;\r\n\r\n\t\tcase 'square':\r\n\t\t\tmarker = buildSquare(gapSize, color);\r\n\t\t\tbreak;\r\n\r\n\t\tcase 'none':\r\n\t\t\tmarker = {};\r\n\t\t\tbreak;\r\n\r\n\t\tcase 'disc':\r\n\t\tdefault:\r\n\t\t\tmarker = buildDisc(gapSize, color);\r\n\t\t\tbreak;\r\n\t}\r\n\r\n\tmarker._minWidth = marker._maxWidth = gapSize.width;\r\n\tmarker._minHeight = marker._maxHeight = gapSize.height;\r\n\r\n\treturn marker;\r\n};\r\n\r\nDocMeasure.prototype.buildOrderedMarker = function (counter, styleStack, type, separator) {\r\n\tfunction prepareAlpha(counter) {\r\n\t\tfunction toAlpha(num) {\r\n\t\t\treturn (num >= 26 ? toAlpha((num / 26 >> 0) - 1) : '') + 'abcdefghijklmnopqrstuvwxyz'[num % 26 >> 0];\r\n\t\t}\r\n\r\n\t\tif (counter < 1) {\r\n\t\t\treturn counter.toString();\r\n\t\t}\r\n\r\n\t\treturn toAlpha(counter - 1);\r\n\t}\r\n\r\n\tfunction prepareRoman(counter) {\r\n\t\tif (counter < 1 || counter > 4999) {\r\n\t\t\treturn counter.toString();\r\n\t\t}\r\n\t\tvar num = counter;\r\n\t\tvar lookup = { M: 1000, CM: 900, D: 500, CD: 400, C: 100, XC: 90, L: 50, XL: 40, X: 10, IX: 9, V: 5, IV: 4, I: 1 }, roman = '', i;\r\n\t\tfor (i in lookup) {\r\n\t\t\twhile (num >= lookup[i]) {\r\n\t\t\t\troman += i;\r\n\t\t\t\tnum -= lookup[i];\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn roman;\r\n\t}\r\n\r\n\tfunction prepareDecimal(counter) {\r\n\t\treturn counter.toString();\r\n\t}\r\n\r\n\tvar counterText;\r\n\tswitch (type) {\r\n\t\tcase 'none':\r\n\t\t\tcounterText = null;\r\n\t\t\tbreak;\r\n\r\n\t\tcase 'upper-alpha':\r\n\t\t\tcounterText = prepareAlpha(counter).toUpperCase();\r\n\t\t\tbreak;\r\n\r\n\t\tcase 'lower-alpha':\r\n\t\t\tcounterText = prepareAlpha(counter);\r\n\t\t\tbreak;\r\n\r\n\t\tcase 'upper-roman':\r\n\t\t\tcounterText = prepareRoman(counter);\r\n\t\t\tbreak;\r\n\r\n\t\tcase 'lower-roman':\r\n\t\t\tcounterText = prepareRoman(counter).toLowerCase();\r\n\t\t\tbreak;\r\n\r\n\t\tcase 'decimal':\r\n\t\tdefault:\r\n\t\t\tcounterText = prepareDecimal(counter);\r\n\t\t\tbreak;\r\n\t}\r\n\r\n\tif (counterText === null) {\r\n\t\treturn {};\r\n\t}\r\n\r\n\tif (separator) {\r\n\t\tif (isArray(separator)) {\r\n\t\t\tif (separator[0]) {\r\n\t\t\t\tcounterText = separator[0] + counterText;\r\n\t\t\t}\r\n\r\n\t\t\tif (separator[1]) {\r\n\t\t\t\tcounterText += separator[1];\r\n\t\t\t}\r\n\t\t\tcounterText += ' ';\r\n\t\t} else {\r\n\t\t\tcounterText += separator + ' ';\r\n\t\t}\r\n\t}\r\n\r\n\tvar textArray = { text: counterText };\r\n\tvar markerColor = styleStack.getProperty('markerColor');\r\n\tif (markerColor) {\r\n\t\ttextArray.color = markerColor;\r\n\t}\r\n\r\n\treturn { _inlines: this.textTools.buildInlines(textArray, styleStack).items };\r\n};\r\n\r\nDocMeasure.prototype.measureUnorderedList = function (node) {\r\n\tvar style = this.styleStack.clone();\r\n\tvar items = node.ul;\r\n\tnode.type = node.type || 'disc';\r\n\tnode._gapSize = this.gapSizeForList();\r\n\tnode._minWidth = 0;\r\n\tnode._maxWidth = 0;\r\n\r\n\tfor (var i = 0, l = items.length; i < l; i++) {\r\n\t\tvar item = items[i] = this.measureNode(items[i]);\r\n\r\n\t\tif (!item.ol && !item.ul) {\r\n\t\t\titem.listMarker = this.buildUnorderedMarker(style, node._gapSize, item.listType || node.type);\r\n\t\t}\r\n\r\n\t\tnode._minWidth = Math.max(node._minWidth, items[i]._minWidth + node._gapSize.width);\r\n\t\tnode._maxWidth = Math.max(node._maxWidth, items[i]._maxWidth + node._gapSize.width);\r\n\t}\r\n\r\n\treturn node;\r\n};\r\n\r\nDocMeasure.prototype.measureOrderedList = function (node) {\r\n\tvar style = this.styleStack.clone();\r\n\tvar items = node.ol;\r\n\tnode.type = node.type || 'decimal';\r\n\tnode.separator = node.separator || '.';\r\n\tnode.reversed = node.reversed || false;\r\n\tif (!isNumber(node.start)) {\r\n\t\tnode.start = node.reversed ? items.length : 1;\r\n\t}\r\n\tnode._gapSize = this.gapSizeForList();\r\n\tnode._minWidth = 0;\r\n\tnode._maxWidth = 0;\r\n\r\n\tvar counter = node.start;\r\n\tfor (var i = 0, l = items.length; i < l; i++) {\r\n\t\tvar item = items[i] = this.measureNode(items[i]);\r\n\r\n\t\tif (!item.ol && !item.ul) {\r\n\t\t\tvar counterValue = isNumber(item.counter) ? item.counter : counter;\r\n\t\t\titem.listMarker = this.buildOrderedMarker(counterValue, style, item.listType || node.type, node.separator);\r\n\t\t\tif (item.listMarker._inlines) {\r\n\t\t\t\tnode._gapSize.width = Math.max(node._gapSize.width, item.listMarker._inlines[0].width);\r\n\t\t\t}\r\n\t\t}  // TODO: else - nested lists numbering\r\n\r\n\t\tnode._minWidth = Math.max(node._minWidth, items[i]._minWidth);\r\n\t\tnode._maxWidth = Math.max(node._maxWidth, items[i]._maxWidth);\r\n\r\n\t\tif (node.reversed) {\r\n\t\t\tcounter--;\r\n\t\t} else {\r\n\t\t\tcounter++;\r\n\t\t}\r\n\t}\r\n\r\n\tnode._minWidth += node._gapSize.width;\r\n\tnode._maxWidth += node._gapSize.width;\r\n\r\n\tfor (var i = 0, l = items.length; i < l; i++) {\r\n\t\tvar item = items[i];\r\n\t\tif (!item.ol && !item.ul) {\r\n\t\t\titem.listMarker._minWidth = item.listMarker._maxWidth = node._gapSize.width;\r\n\t\t}\r\n\t}\r\n\r\n\treturn node;\r\n};\r\n\r\nDocMeasure.prototype.measureColumns = function (node) {\r\n\tvar columns = node.columns;\r\n\tnode._gap = this.styleStack.getProperty('columnGap') || 0;\r\n\r\n\tfor (var i = 0, l = columns.length; i < l; i++) {\r\n\t\tcolumns[i] = this.measureNode(columns[i]);\r\n\t}\r\n\r\n\tvar measures = ColumnCalculator.measureMinMax(columns);\r\n\r\n\tvar numGaps = (columns.length > 0) ? (columns.length - 1) : 0;\r\n\tnode._minWidth = measures.min + node._gap * numGaps;\r\n\tnode._maxWidth = measures.max + node._gap * numGaps;\r\n\r\n\treturn node;\r\n};\r\n\r\nDocMeasure.prototype.measureTable = function (node) {\r\n\textendTableWidths(node);\r\n\tnode._layout = getLayout(this.tableLayouts);\r\n\tnode._offsets = getOffsets(node._layout);\r\n\r\n\tvar colSpans = [];\r\n\tvar col, row, cols, rows;\r\n\r\n\tfor (col = 0, cols = node.table.body[0].length; col < cols; col++) {\r\n\t\tvar c = node.table.widths[col];\r\n\t\tc._minWidth = 0;\r\n\t\tc._maxWidth = 0;\r\n\r\n\t\tfor (row = 0, rows = node.table.body.length; row < rows; row++) {\r\n\t\t\tvar rowData = node.table.body[row];\r\n\t\t\tvar data = rowData[col];\r\n\t\t\tif (data === undefined) {\r\n\t\t\t\tconsole.error('Malformed table row ', rowData, 'in node ', node);\r\n\t\t\t\tthrow 'Malformed table row, a cell is undefined.';\r\n\t\t\t}\r\n\t\t\tif (data === null) { // transform to object\r\n\t\t\t\tdata = '';\r\n\t\t\t}\r\n\r\n\t\t\tif (!data._span) {\r\n\t\t\t\tdata = rowData[col] = this.styleStack.auto(data, measureCb(this, data));\r\n\r\n\t\t\t\tif (data.colSpan && data.colSpan > 1) {\r\n\t\t\t\t\tmarkSpans(rowData, col, data.colSpan);\r\n\t\t\t\t\tcolSpans.push({ col: col, span: data.colSpan, minWidth: data._minWidth, maxWidth: data._maxWidth });\r\n\t\t\t\t} else {\r\n\t\t\t\t\tc._minWidth = Math.max(c._minWidth, data._minWidth);\r\n\t\t\t\t\tc._maxWidth = Math.max(c._maxWidth, data._maxWidth);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (data.rowSpan && data.rowSpan > 1) {\r\n\t\t\t\tmarkVSpans(node.table, row, col, data.rowSpan);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\textendWidthsForColSpans();\r\n\r\n\tvar measures = ColumnCalculator.measureMinMax(node.table.widths);\r\n\r\n\tnode._minWidth = measures.min + node._offsets.total;\r\n\tnode._maxWidth = measures.max + node._offsets.total;\r\n\r\n\treturn node;\r\n\r\n\tfunction measureCb(_this, data) {\r\n\t\treturn function () {\r\n\t\t\tif (isObject(data)) {\r\n\t\t\t\tdata.fillColor = _this.styleStack.getProperty('fillColor');\r\n\t\t\t\tdata.fillOpacity = _this.styleStack.getProperty('fillOpacity');\r\n\t\t\t}\r\n\t\t\treturn _this.measureNode(data);\r\n\t\t};\r\n\t}\r\n\r\n\tfunction getLayout(tableLayouts) {\r\n\t\tvar layout = node.layout;\r\n\r\n\t\tif (isString(layout)) {\r\n\t\t\tlayout = tableLayouts[layout];\r\n\t\t}\r\n\r\n\t\tvar defaultLayout = {\r\n\t\t\thLineWidth: function (i, node) {\r\n\t\t\t\treturn 1;\r\n\t\t\t},\r\n\t\t\tvLineWidth: function (i, node) {\r\n\t\t\t\treturn 1;\r\n\t\t\t},\r\n\t\t\thLineColor: function (i, node) {\r\n\t\t\t\treturn 'black';\r\n\t\t\t},\r\n\t\t\tvLineColor: function (i, node) {\r\n\t\t\t\treturn 'black';\r\n\t\t\t},\r\n\t\t\thLineStyle: function (i, node) {\r\n\t\t\t\treturn null;\r\n\t\t\t},\r\n\t\t\tvLineStyle: function (i, node) {\r\n\t\t\t\treturn null;\r\n\t\t\t},\r\n\t\t\tpaddingLeft: function (i, node) {\r\n\t\t\t\treturn 4;\r\n\t\t\t},\r\n\t\t\tpaddingRight: function (i, node) {\r\n\t\t\t\treturn 4;\r\n\t\t\t},\r\n\t\t\tpaddingTop: function (i, node) {\r\n\t\t\t\treturn 2;\r\n\t\t\t},\r\n\t\t\tpaddingBottom: function (i, node) {\r\n\t\t\t\treturn 2;\r\n\t\t\t},\r\n\t\t\tfillColor: function (i, node) {\r\n\t\t\t\treturn null;\r\n\t\t\t},\r\n\t\t\tfillOpacity: function (i, node) {\r\n\t\t\t\treturn 1;\r\n\t\t\t},\r\n\t\t\tdefaultBorder: true\r\n\t\t};\r\n\r\n\t\treturn pack(defaultLayout, layout);\r\n\t}\r\n\r\n\tfunction getOffsets(layout) {\r\n\t\tvar offsets = [];\r\n\t\tvar totalOffset = 0;\r\n\t\tvar prevRightPadding = 0;\r\n\r\n\t\tfor (var i = 0, l = node.table.widths.length; i < l; i++) {\r\n\t\t\tvar lOffset = prevRightPadding + layout.vLineWidth(i, node) + layout.paddingLeft(i, node);\r\n\t\t\toffsets.push(lOffset);\r\n\t\t\ttotalOffset += lOffset;\r\n\t\t\tprevRightPadding = layout.paddingRight(i, node);\r\n\t\t}\r\n\r\n\t\ttotalOffset += prevRightPadding + layout.vLineWidth(node.table.widths.length, node);\r\n\r\n\t\treturn {\r\n\t\t\ttotal: totalOffset,\r\n\t\t\toffsets: offsets\r\n\t\t};\r\n\t}\r\n\r\n\tfunction extendWidthsForColSpans() {\r\n\t\tvar q, j;\r\n\r\n\t\tfor (var i = 0, l = colSpans.length; i < l; i++) {\r\n\t\t\tvar span = colSpans[i];\r\n\r\n\t\t\tvar currentMinMax = getMinMax(span.col, span.span, node._offsets);\r\n\t\t\tvar minDifference = span.minWidth - currentMinMax.minWidth;\r\n\t\t\tvar maxDifference = span.maxWidth - currentMinMax.maxWidth;\r\n\r\n\t\t\tif (minDifference > 0) {\r\n\t\t\t\tq = minDifference / span.span;\r\n\r\n\t\t\t\tfor (j = 0; j < span.span; j++) {\r\n\t\t\t\t\tnode.table.widths[span.col + j]._minWidth += q;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (maxDifference > 0) {\r\n\t\t\t\tq = maxDifference / span.span;\r\n\r\n\t\t\t\tfor (j = 0; j < span.span; j++) {\r\n\t\t\t\t\tnode.table.widths[span.col + j]._maxWidth += q;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction getMinMax(col, span, offsets) {\r\n\t\tvar result = { minWidth: 0, maxWidth: 0 };\r\n\r\n\t\tfor (var i = 0; i < span; i++) {\r\n\t\t\tresult.minWidth += node.table.widths[col + i]._minWidth + (i ? offsets.offsets[col + i] : 0);\r\n\t\t\tresult.maxWidth += node.table.widths[col + i]._maxWidth + (i ? offsets.offsets[col + i] : 0);\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tfunction markSpans(rowData, col, span) {\r\n\t\tfor (var i = 1; i < span; i++) {\r\n\t\t\trowData[col + i] = {\r\n\t\t\t\t_span: true,\r\n\t\t\t\t_minWidth: 0,\r\n\t\t\t\t_maxWidth: 0,\r\n\t\t\t\trowSpan: rowData[col].rowSpan\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n\r\n\tfunction markVSpans(table, row, col, span) {\r\n\t\tfor (var i = 1; i < span; i++) {\r\n\t\t\ttable.body[row + i][col] = {\r\n\t\t\t\t_span: true,\r\n\t\t\t\t_minWidth: 0,\r\n\t\t\t\t_maxWidth: 0,\r\n\t\t\t\tfillColor: table.body[row][col].fillColor,\r\n\t\t\t\tfillOpacity: table.body[row][col].fillOpacity\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n\r\n\tfunction extendTableWidths(node) {\r\n\t\tif (!node.table.widths) {\r\n\t\t\tnode.table.widths = 'auto';\r\n\t\t}\r\n\r\n\t\tif (isString(node.table.widths)) {\r\n\t\t\tnode.table.widths = [node.table.widths];\r\n\r\n\t\t\twhile (node.table.widths.length < node.table.body[0].length) {\r\n\t\t\t\tnode.table.widths.push(node.table.widths[node.table.widths.length - 1]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (var i = 0, l = node.table.widths.length; i < l; i++) {\r\n\t\t\tvar w = node.table.widths[i];\r\n\t\t\tif (isNumber(w) || isString(w)) {\r\n\t\t\t\tnode.table.widths[i] = { width: w };\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\r\n\r\nDocMeasure.prototype.measureCanvas = function (node) {\r\n\tvar w = 0, h = 0;\r\n\r\n\tfor (var i = 0, l = node.canvas.length; i < l; i++) {\r\n\t\tvar vector = node.canvas[i];\r\n\r\n\t\tswitch (vector.type) {\r\n\t\t\tcase 'ellipse':\r\n\t\t\t\tw = Math.max(w, vector.x + vector.r1);\r\n\t\t\t\th = Math.max(h, vector.y + vector.r2);\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'rect':\r\n\t\t\t\tw = Math.max(w, vector.x + vector.w);\r\n\t\t\t\th = Math.max(h, vector.y + vector.h);\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'line':\r\n\t\t\t\tw = Math.max(w, vector.x1, vector.x2);\r\n\t\t\t\th = Math.max(h, vector.y1, vector.y2);\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'polyline':\r\n\t\t\t\tfor (var i2 = 0, l2 = vector.points.length; i2 < l2; i2++) {\r\n\t\t\t\t\tw = Math.max(w, vector.points[i2].x);\r\n\t\t\t\t\th = Math.max(h, vector.points[i2].y);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tnode._minWidth = node._maxWidth = w;\r\n\tnode._minHeight = node._maxHeight = h;\r\n\tnode._alignment = this.styleStack.getProperty('alignment');\r\n\r\n\treturn node;\r\n};\r\n\r\nDocMeasure.prototype.measureQr = function (node) {\r\n\tnode = qrEncoder.measure(node);\r\n\tnode._alignment = this.styleStack.getProperty('alignment');\r\n\treturn node;\r\n};\r\n\r\nmodule.exports = DocMeasure;\r\n", "'use strict';\r\n\r\nvar isString = require('./helpers').isString;\r\nvar isNumber = require('./helpers').isNumber;\r\nvar isBoolean = require('./helpers').isBoolean;\r\nvar isArray = require('./helpers').isArray;\r\nvar isUndefined = require('./helpers').isUndefined;\r\nvar fontStringify = require('./helpers').fontStringify;\r\n\r\nfunction DocPreprocessor() {\r\n\r\n}\r\n\r\nDocPreprocessor.prototype.preprocessDocument = function (docStructure) {\r\n\tthis.parentNode = null;\r\n\tthis.tocs = [];\r\n\tthis.nodeReferences = [];\r\n\treturn this.preprocessNode(docStructure);\r\n};\r\n\r\nDocPreprocessor.prototype.preprocessNode = function (node) {\r\n\t// expand shortcuts and casting values\r\n\tif (isArray(node)) {\r\n\t\tnode = { stack: node };\r\n\t} else if (isString(node)) {\r\n\t\tnode = { text: node };\r\n\t} else if (isNumber(node) || isBoolean(node)) {\r\n\t\tnode = { text: node.toString() };\r\n\t} else if (node === undefined || node === null) {\r\n\t\tnode = { text: '' };\r\n\t} else if (Object.keys(node).length === 0) { // empty object\r\n\t\tnode = { text: '' };\r\n\t} else if ('text' in node && (node.text === undefined || node.text === null)) {\r\n\t\tnode.text = '';\r\n\t}\r\n\r\n\tif (node.columns) {\r\n\t\treturn this.preprocessColumns(node);\r\n\t} else if (node.stack) {\r\n\t\treturn this.preprocessVerticalContainer(node);\r\n\t} else if (node.ul) {\r\n\t\treturn this.preprocessList(node);\r\n\t} else if (node.ol) {\r\n\t\treturn this.preprocessList(node);\r\n\t} else if (node.table) {\r\n\t\treturn this.preprocessTable(node);\r\n\t} else if (node.text !== undefined) {\r\n\t\treturn this.preprocessText(node);\r\n\t} else if (node.toc) {\r\n\t\treturn this.preprocessToc(node);\r\n\t} else if (node.image) {\r\n\t\treturn this.preprocessImage(node);\r\n\t} else if (node.svg) {\r\n\t\treturn this.preprocessSVG(node);\r\n\t} else if (node.canvas) {\r\n\t\treturn this.preprocessCanvas(node);\r\n\t} else if (node.qr) {\r\n\t\treturn this.preprocessQr(node);\r\n\t} else if (node.pageReference || node.textReference) {\r\n\t\treturn this.preprocessText(node);\r\n\t} else {\r\n\t\tthrow 'Unrecognized document structure: ' + JSON.stringify(node, fontStringify);\r\n\t}\r\n};\r\n\r\nDocPreprocessor.prototype.preprocessColumns = function (node) {\r\n\tvar columns = node.columns;\r\n\r\n\tfor (var i = 0, l = columns.length; i < l; i++) {\r\n\t\tcolumns[i] = this.preprocessNode(columns[i]);\r\n\t}\r\n\r\n\treturn node;\r\n};\r\n\r\nDocPreprocessor.prototype.preprocessVerticalContainer = function (node) {\r\n\tvar items = node.stack;\r\n\r\n\tfor (var i = 0, l = items.length; i < l; i++) {\r\n\t\titems[i] = this.preprocessNode(items[i]);\r\n\t}\r\n\r\n\treturn node;\r\n};\r\n\r\nDocPreprocessor.prototype.preprocessList = function (node) {\r\n\tvar items = node.ul || node.ol;\r\n\r\n\tfor (var i = 0, l = items.length; i < l; i++) {\r\n\t\titems[i] = this.preprocessNode(items[i]);\r\n\t}\r\n\r\n\treturn node;\r\n};\r\n\r\nDocPreprocessor.prototype.preprocessTable = function (node) {\r\n\tvar col, row, cols, rows;\r\n\r\n\tfor (col = 0, cols = node.table.body[0].length; col < cols; col++) {\r\n\t\tfor (row = 0, rows = node.table.body.length; row < rows; row++) {\r\n\t\t\tvar rowData = node.table.body[row];\r\n\t\t\tvar data = rowData[col];\r\n\t\t\tif (data !== undefined) {\r\n\t\t\t\tif (data === null) { // transform to object\r\n\t\t\t\t\tdata = '';\r\n\t\t\t\t}\r\n\t\t\t\tif (!data._span) {\r\n\t\t\t\t\trowData[col] = this.preprocessNode(data);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn node;\r\n};\r\n\r\nDocPreprocessor.prototype.preprocessText = function (node) {\r\n\tif (node.tocItem) {\r\n\t\tif (!isArray(node.tocItem)) {\r\n\t\t\tnode.tocItem = [node.tocItem];\r\n\t\t}\r\n\r\n\t\tfor (var i = 0, l = node.tocItem.length; i < l; i++) {\r\n\t\t\tif (!isString(node.tocItem[i])) {\r\n\t\t\t\tnode.tocItem[i] = '_default_';\r\n\t\t\t}\r\n\r\n\t\t\tvar tocItemId = node.tocItem[i];\r\n\r\n\t\t\tif (!this.tocs[tocItemId]) {\r\n\t\t\t\tthis.tocs[tocItemId] = { toc: { _items: [], _pseudo: true } };\r\n\t\t\t}\r\n\r\n\t\t\tif (!node.id) {\r\n\t\t\t\tnode.id = 'toc-' + tocItemId + '-' + this.tocs[tocItemId].toc._items.length;\r\n\t\t\t}\r\n\r\n\t\t\tvar tocItemRef = {\r\n\t\t\t\t_nodeRef: this._getNodeForNodeRef(node),\r\n\t\t\t\t_textNodeRef: node\r\n\t\t\t};\r\n\t\t\tthis.tocs[tocItemId].toc._items.push(tocItemRef);\r\n\t\t}\r\n\t}\r\n\r\n\tif (node.id) {\r\n\t\tif (this.nodeReferences[node.id]) {\r\n\t\t\tif (!this.nodeReferences[node.id]._pseudo) {\r\n\t\t\t\tthrow \"Node id '\" + node.id + \"' already exists\";\r\n\t\t\t}\r\n\r\n\t\t\tthis.nodeReferences[node.id]._nodeRef = this._getNodeForNodeRef(node);\r\n\t\t\tthis.nodeReferences[node.id]._textNodeRef = node;\r\n\t\t\tthis.nodeReferences[node.id]._pseudo = false;\r\n\t\t} else {\r\n\t\t\tthis.nodeReferences[node.id] = {\r\n\t\t\t\t_nodeRef: this._getNodeForNodeRef(node),\r\n\t\t\t\t_textNodeRef: node\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n\r\n\tif (node.pageReference) {\r\n\t\tif (!this.nodeReferences[node.pageReference]) {\r\n\t\t\tthis.nodeReferences[node.pageReference] = {\r\n\t\t\t\t_nodeRef: {},\r\n\t\t\t\t_textNodeRef: {},\r\n\t\t\t\t_pseudo: true\r\n\t\t\t};\r\n\t\t}\r\n\t\tnode.text = '00000';\r\n\t\tnode.linkToDestination = node.pageReference;\r\n\t\tnode._pageRef = this.nodeReferences[node.pageReference];\r\n\t}\r\n\r\n\tif (node.textReference) {\r\n\t\tif (!this.nodeReferences[node.textReference]) {\r\n\t\t\tthis.nodeReferences[node.textReference] = { _nodeRef: {}, _pseudo: true };\r\n\t\t}\r\n\r\n\t\tnode.text = '';\r\n\t\tnode.linkToDestination = node.textReference;\r\n\t\tnode._textRef = this.nodeReferences[node.textReference];\r\n\t}\r\n\r\n\tif (node.text && node.text.text) {\r\n\t\tnode.text = [this.preprocessNode(node.text)];\r\n\t} else if (isArray(node.text)) {\r\n\t\tvar isSetParentNode = false;\r\n\t\tif (this.parentNode === null) {\r\n\t\t\tthis.parentNode = node;\r\n\t\t\tisSetParentNode = true;\r\n\t\t}\r\n\r\n\t\tfor (var i = 0, l = node.text.length; i < l; i++) {\r\n\t\t\tnode.text[i] = this.preprocessNode(node.text[i]);\r\n\t\t}\r\n\r\n\t\tif (isSetParentNode) {\r\n\t\t\tthis.parentNode = null;\r\n\t\t}\r\n\t}\r\n\r\n\treturn node;\r\n};\r\n\r\nDocPreprocessor.prototype.preprocessToc = function (node) {\r\n\tif (!node.toc.id) {\r\n\t\tnode.toc.id = '_default_';\r\n\t}\r\n\r\n\tnode.toc.title = node.toc.title ? this.preprocessNode(node.toc.title) : null;\r\n\tnode.toc._items = [];\r\n\r\n\tif (this.tocs[node.toc.id]) {\r\n\t\tif (!this.tocs[node.toc.id].toc._pseudo) {\r\n\t\t\tthrow \"TOC '\" + node.toc.id + \"' already exists\";\r\n\t\t}\r\n\r\n\t\tnode.toc._items = this.tocs[node.toc.id].toc._items;\r\n\t}\r\n\r\n\tthis.tocs[node.toc.id] = node;\r\n\r\n\treturn node;\r\n};\r\n\r\nDocPreprocessor.prototype.preprocessImage = function (node) {\r\n\tif (!isUndefined(node.image.type) && !isUndefined(node.image.data) && (node.image.type === 'Buffer') && isArray(node.image.data)) {\r\n\t\tnode.image = Buffer.from(node.image.data);\r\n\t}\r\n\treturn node;\r\n};\r\n\r\nDocPreprocessor.prototype.preprocessSVG = function (node) {\r\n\treturn node;\r\n};\r\n\r\nDocPreprocessor.prototype.preprocessCanvas = function (node) {\r\n\treturn node;\r\n};\r\n\r\nDocPreprocessor.prototype.preprocessQr = function (node) {\r\n\treturn node;\r\n};\r\n\r\nDocPreprocessor.prototype._getNodeForNodeRef = function (node) {\r\n\tif (this.parentNode) {\r\n\t\treturn this.parentNode;\r\n\t}\r\n\r\n\treturn node;\r\n}\r\n\r\nmodule.exports = DocPreprocessor;\r\n", "'use strict';\r\n\r\nvar TraversalTracker = require('./traversalTracker');\r\nvar isString = require('./helpers').isString;\r\n\r\n/**\r\n * Creates an instance of DocumentContext - a store for current x, y positions and available width/height.\r\n * It facilitates column divisions and vertical sync\r\n */\r\nfunction DocumentContext(pageSize, pageMargins) {\r\n\tthis.pages = [];\r\n\r\n\tthis.pageMargins = pageMargins;\r\n\r\n\tthis.x = pageMargins.left;\r\n\tthis.availableWidth = pageSize.width - pageMargins.left - pageMargins.right;\r\n\tthis.availableHeight = 0;\r\n\tthis.page = -1;\r\n\r\n\tthis.snapshots = [];\r\n\r\n\tthis.endingCell = null;\r\n\r\n\tthis.tracker = new TraversalTracker();\r\n\r\n\tthis.backgroundLength = [];\r\n\r\n\tthis.addPage(pageSize);\r\n}\r\n\r\nDocumentContext.prototype.beginColumnGroup = function () {\r\n\tthis.snapshots.push({\r\n\t\tx: this.x,\r\n\t\ty: this.y,\r\n\t\tavailableHeight: this.availableHeight,\r\n\t\tavailableWidth: this.availableWidth,\r\n\t\tpage: this.page,\r\n\t\tbottomMost: {\r\n\t\t\tx: this.x,\r\n\t\t\ty: this.y,\r\n\t\t\tavailableHeight: this.availableHeight,\r\n\t\t\tavailableWidth: this.availableWidth,\r\n\t\t\tpage: this.page\r\n\t\t},\r\n\t\tendingCell: this.endingCell,\r\n\t\tlastColumnWidth: this.lastColumnWidth\r\n\t});\r\n\r\n\tthis.lastColumnWidth = 0;\r\n};\r\n\r\nDocumentContext.prototype.beginColumn = function (width, offset, endingCell) {\r\n\tvar saved = this.snapshots[this.snapshots.length - 1];\r\n\r\n\tthis.calculateBottomMost(saved);\r\n\r\n\tthis.endingCell = endingCell;\r\n\tthis.page = saved.page;\r\n\tthis.x = this.x + this.lastColumnWidth + (offset || 0);\r\n\tthis.y = saved.y;\r\n\tthis.availableWidth = width;\t//saved.availableWidth - offset;\r\n\tthis.availableHeight = saved.availableHeight;\r\n\r\n\tthis.lastColumnWidth = width;\r\n};\r\n\r\nDocumentContext.prototype.calculateBottomMost = function (destContext) {\r\n\tif (this.endingCell) {\r\n\t\tthis.saveContextInEndingCell(this.endingCell);\r\n\t\tthis.endingCell = null;\r\n\t} else {\r\n\t\tdestContext.bottomMost = bottomMostContext(this, destContext.bottomMost);\r\n\t}\r\n};\r\n\r\nDocumentContext.prototype.markEnding = function (endingCell) {\r\n\tthis.page = endingCell._columnEndingContext.page;\r\n\tthis.x = endingCell._columnEndingContext.x;\r\n\tthis.y = endingCell._columnEndingContext.y;\r\n\tthis.availableWidth = endingCell._columnEndingContext.availableWidth;\r\n\tthis.availableHeight = endingCell._columnEndingContext.availableHeight;\r\n\tthis.lastColumnWidth = endingCell._columnEndingContext.lastColumnWidth;\r\n};\r\n\r\nDocumentContext.prototype.saveContextInEndingCell = function (endingCell) {\r\n\tendingCell._columnEndingContext = {\r\n\t\tpage: this.page,\r\n\t\tx: this.x,\r\n\t\ty: this.y,\r\n\t\tavailableHeight: this.availableHeight,\r\n\t\tavailableWidth: this.availableWidth,\r\n\t\tlastColumnWidth: this.lastColumnWidth\r\n\t};\r\n};\r\n\r\nDocumentContext.prototype.completeColumnGroup = function (height) {\r\n\tvar saved = this.snapshots.pop();\r\n\r\n\tthis.calculateBottomMost(saved);\r\n\r\n\tthis.endingCell = null;\r\n\tthis.x = saved.x;\r\n\r\n\tvar y = saved.bottomMost.y;\r\n\tif (height) {\r\n\t\tif (saved.page === saved.bottomMost.page) {\r\n\t\t\tif ((saved.y + height) > y) {\r\n\t\t\t\ty = saved.y + height;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\ty += height;\r\n\t\t}\r\n\t}\r\n\r\n\tthis.y = y;\r\n\tthis.page = saved.bottomMost.page;\r\n\tthis.availableWidth = saved.availableWidth;\r\n\tthis.availableHeight = saved.bottomMost.availableHeight;\r\n\tif (height) {\r\n\t\tthis.availableHeight -= (y - saved.bottomMost.y);\r\n\t}\r\n\tthis.lastColumnWidth = saved.lastColumnWidth;\r\n};\r\n\r\nDocumentContext.prototype.addMargin = function (left, right) {\r\n\tthis.x += left;\r\n\tthis.availableWidth -= left + (right || 0);\r\n};\r\n\r\nDocumentContext.prototype.moveDown = function (offset) {\r\n\tthis.y += offset;\r\n\tthis.availableHeight -= offset;\r\n\r\n\treturn this.availableHeight > 0;\r\n};\r\n\r\nDocumentContext.prototype.initializePage = function () {\r\n\tthis.y = this.pageMargins.top;\r\n\tthis.availableHeight = this.getCurrentPage().pageSize.height - this.pageMargins.top - this.pageMargins.bottom;\r\n\tthis.pageSnapshot().availableWidth = this.getCurrentPage().pageSize.width - this.pageMargins.left - this.pageMargins.right;\r\n};\r\n\r\nDocumentContext.prototype.pageSnapshot = function () {\r\n\tif (this.snapshots[0]) {\r\n\t\treturn this.snapshots[0];\r\n\t} else {\r\n\t\treturn this;\r\n\t}\r\n};\r\n\r\nDocumentContext.prototype.moveTo = function (x, y) {\r\n\tif (x !== undefined && x !== null) {\r\n\t\tthis.x = x;\r\n\t\tthis.availableWidth = this.getCurrentPage().pageSize.width - this.x - this.pageMargins.right;\r\n\t}\r\n\tif (y !== undefined && y !== null) {\r\n\t\tthis.y = y;\r\n\t\tthis.availableHeight = this.getCurrentPage().pageSize.height - this.y - this.pageMargins.bottom;\r\n\t}\r\n};\r\n\r\nDocumentContext.prototype.moveToRelative = function (x, y) {\r\n\tif (x !== undefined && x !== null) {\r\n\t\tthis.x = this.x + x;\r\n\t}\r\n\tif (y !== undefined && y !== null) {\r\n\t\tthis.y = this.y + y;\r\n\t}\r\n};\r\n\r\nDocumentContext.prototype.beginDetachedBlock = function () {\r\n\tthis.snapshots.push({\r\n\t\tx: this.x,\r\n\t\ty: this.y,\r\n\t\tavailableHeight: this.availableHeight,\r\n\t\tavailableWidth: this.availableWidth,\r\n\t\tpage: this.page,\r\n\t\tendingCell: this.endingCell,\r\n\t\tlastColumnWidth: this.lastColumnWidth\r\n\t});\r\n};\r\n\r\nDocumentContext.prototype.endDetachedBlock = function () {\r\n\tvar saved = this.snapshots.pop();\r\n\r\n\tthis.x = saved.x;\r\n\tthis.y = saved.y;\r\n\tthis.availableWidth = saved.availableWidth;\r\n\tthis.availableHeight = saved.availableHeight;\r\n\tthis.page = saved.page;\r\n\tthis.endingCell = saved.endingCell;\r\n\tthis.lastColumnWidth = saved.lastColumnWidth;\r\n};\r\n\r\nfunction pageOrientation(pageOrientationString, currentPageOrientation) {\r\n\tif (pageOrientationString === undefined) {\r\n\t\treturn currentPageOrientation;\r\n\t} else if (isString(pageOrientationString) && (pageOrientationString.toLowerCase() === 'landscape')) {\r\n\t\treturn 'landscape';\r\n\t} else {\r\n\t\treturn 'portrait';\r\n\t}\r\n}\r\n\r\nvar getPageSize = function (currentPage, newPageOrientation) {\r\n\r\n\tnewPageOrientation = pageOrientation(newPageOrientation, currentPage.pageSize.orientation);\r\n\r\n\tif (newPageOrientation !== currentPage.pageSize.orientation) {\r\n\t\treturn {\r\n\t\t\torientation: newPageOrientation,\r\n\t\t\twidth: currentPage.pageSize.height,\r\n\t\t\theight: currentPage.pageSize.width\r\n\t\t};\r\n\t} else {\r\n\t\treturn {\r\n\t\t\torientation: currentPage.pageSize.orientation,\r\n\t\t\twidth: currentPage.pageSize.width,\r\n\t\t\theight: currentPage.pageSize.height\r\n\t\t};\r\n\t}\r\n\r\n};\r\n\r\n\r\nDocumentContext.prototype.moveToNextPage = function (pageOrientation) {\r\n\tvar nextPageIndex = this.page + 1;\r\n\r\n\tvar prevPage = this.page;\r\n\tvar prevY = this.y;\r\n\r\n\tvar createNewPage = nextPageIndex >= this.pages.length;\r\n\tif (createNewPage) {\r\n\t\tvar currentAvailableWidth = this.availableWidth;\r\n\t\tvar currentPageOrientation = this.getCurrentPage().pageSize.orientation;\r\n\r\n\t\tvar pageSize = getPageSize(this.getCurrentPage(), pageOrientation);\r\n\t\tthis.addPage(pageSize);\r\n\r\n\t\tif (currentPageOrientation === pageSize.orientation) {\r\n\t\t\tthis.availableWidth = currentAvailableWidth;\r\n\t\t}\r\n\t} else {\r\n\t\tthis.page = nextPageIndex;\r\n\t\tthis.initializePage();\r\n\t}\r\n\r\n\treturn {\r\n\t\tnewPageCreated: createNewPage,\r\n\t\tprevPage: prevPage,\r\n\t\tprevY: prevY,\r\n\t\ty: this.y\r\n\t};\r\n};\r\n\r\n\r\nDocumentContext.prototype.addPage = function (pageSize) {\r\n\tvar page = { items: [], pageSize: pageSize };\r\n\tthis.pages.push(page);\r\n\tthis.backgroundLength.push(0);\r\n\tthis.page = this.pages.length - 1;\r\n\tthis.initializePage();\r\n\r\n\tthis.tracker.emit('pageAdded');\r\n\r\n\treturn page;\r\n};\r\n\r\nDocumentContext.prototype.getCurrentPage = function () {\r\n\tif (this.page < 0 || this.page >= this.pages.length) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\treturn this.pages[this.page];\r\n};\r\n\r\nDocumentContext.prototype.getCurrentPosition = function () {\r\n\tvar pageSize = this.getCurrentPage().pageSize;\r\n\tvar innerHeight = pageSize.height - this.pageMargins.top - this.pageMargins.bottom;\r\n\tvar innerWidth = pageSize.width - this.pageMargins.left - this.pageMargins.right;\r\n\r\n\treturn {\r\n\t\tpageNumber: this.page + 1,\r\n\t\tpageOrientation: pageSize.orientation,\r\n\t\tpageInnerHeight: innerHeight,\r\n\t\tpageInnerWidth: innerWidth,\r\n\t\tleft: this.x,\r\n\t\ttop: this.y,\r\n\t\tverticalRatio: ((this.y - this.pageMargins.top) / innerHeight),\r\n\t\thorizontalRatio: ((this.x - this.pageMargins.left) / innerWidth)\r\n\t};\r\n};\r\n\r\nfunction bottomMostContext(c1, c2) {\r\n\tvar r;\r\n\r\n\tif (c1.page > c2.page) {\r\n\t\tr = c1;\r\n\t} else if (c2.page > c1.page) {\r\n\t\tr = c2;\r\n\t} else {\r\n\t\tr = (c1.y > c2.y) ? c1 : c2;\r\n\t}\r\n\r\n\treturn {\r\n\t\tpage: r.page,\r\n\t\tx: r.x,\r\n\t\ty: r.y,\r\n\t\tavailableHeight: r.availableHeight,\r\n\t\tavailableWidth: r.availableWidth\r\n\t};\r\n}\r\n\r\nmodule.exports = DocumentContext;\r\n", "'use strict';\r\n\r\nvar Line = require('./line');\r\nvar isNumber = require('./helpers').isNumber;\r\nvar pack = require('./helpers').pack;\r\nvar offsetVector = require('./helpers').offsetVector;\r\nvar DocumentContext = require('./documentContext');\r\n\r\n/**\r\n * Creates an instance of ElementWriter - a line/vector writer, which adds\r\n * elements to current page and sets their positions based on the context\r\n */\r\nfunction ElementWriter(context, tracker) {\r\n\tthis.context = context;\r\n\tthis.contextStack = [];\r\n\tthis.tracker = tracker;\r\n}\r\n\r\nfunction addPageItem(page, item, index) {\r\n\tif (index === null || index === undefined || index < 0 || index > page.items.length) {\r\n\t\tpage.items.push(item);\r\n\t} else {\r\n\t\tpage.items.splice(index, 0, item);\r\n\t}\r\n}\r\n\r\nElementWriter.prototype.addLine = function (line, dontUpdateContextPosition, index) {\r\n\tvar height = line.getHeight();\r\n\tvar context = this.context;\r\n\tvar page = context.getCurrentPage(),\r\n\t\tposition = this.getCurrentPositionOnPage();\r\n\r\n\tif (context.availableHeight < height || !page) {\r\n\t\treturn false;\r\n\t}\r\n\r\n\tline.x = context.x + (line.x || 0);\r\n\tline.y = context.y + (line.y || 0);\r\n\r\n\tthis.alignLine(line);\r\n\r\n\taddPageItem(page, {\r\n\t\ttype: 'line',\r\n\t\titem: line\r\n\t}, index);\r\n\tthis.tracker.emit('lineAdded', line);\r\n\r\n\tif (!dontUpdateContextPosition) {\r\n\t\tcontext.moveDown(height);\r\n\t}\r\n\r\n\treturn position;\r\n};\r\n\r\nElementWriter.prototype.alignLine = function (line) {\r\n\tvar width = this.context.availableWidth;\r\n\tvar lineWidth = line.getWidth();\r\n\r\n\tvar alignment = line.inlines && line.inlines.length > 0 && line.inlines[0].alignment;\r\n\r\n\tvar offset = 0;\r\n\tswitch (alignment) {\r\n\t\tcase 'right':\r\n\t\t\toffset = width - lineWidth;\r\n\t\t\tbreak;\r\n\t\tcase 'center':\r\n\t\t\toffset = (width - lineWidth) / 2;\r\n\t\t\tbreak;\r\n\t}\r\n\r\n\tif (offset) {\r\n\t\tline.x = (line.x || 0) + offset;\r\n\t}\r\n\r\n\tif (alignment === 'justify' &&\r\n\t\t!line.newLineForced &&\r\n\t\t!line.lastLineInParagraph &&\r\n\t\tline.inlines.length > 1) {\r\n\t\tvar additionalSpacing = (width - lineWidth) / (line.inlines.length - 1);\r\n\r\n\t\tfor (var i = 1, l = line.inlines.length; i < l; i++) {\r\n\t\t\toffset = i * additionalSpacing;\r\n\r\n\t\t\tline.inlines[i].x += offset;\r\n\t\t\tline.inlines[i].justifyShift = additionalSpacing;\r\n\t\t}\r\n\t}\r\n};\r\n\r\nElementWriter.prototype.addImage = function (image, index, type) {\r\n\tvar context = this.context;\r\n\tvar page = context.getCurrentPage(),\r\n\t\tposition = this.getCurrentPositionOnPage();\r\n\r\n\tif (!page || (image.absolutePosition === undefined && context.availableHeight < image._height && page.items.length > 0)) {\r\n\t\treturn false;\r\n\t}\r\n\r\n\tif (image._x === undefined) {\r\n\t\timage._x = image.x || 0;\r\n\t}\r\n\r\n\timage.x = context.x + image._x;\r\n\timage.y = context.y;\r\n\r\n\tthis.alignImage(image);\r\n\r\n\taddPageItem(page, {\r\n\t\ttype: type || 'image',\r\n\t\titem: image\r\n\t}, index);\r\n\r\n\tcontext.moveDown(image._height);\r\n\r\n\treturn position;\r\n};\r\n\r\nElementWriter.prototype.addSVG = function (image, index) {\r\n\treturn this.addImage(image, index, 'svg')\r\n};\r\n\r\nElementWriter.prototype.addQr = function (qr, index) {\r\n\tvar context = this.context;\r\n\tvar page = context.getCurrentPage(),\r\n\t\tposition = this.getCurrentPositionOnPage();\r\n\r\n\tif (!page || (qr.absolutePosition === undefined && context.availableHeight < qr._height)) {\r\n\t\treturn false;\r\n\t}\r\n\r\n\tif (qr._x === undefined) {\r\n\t\tqr._x = qr.x || 0;\r\n\t}\r\n\r\n\tqr.x = context.x + qr._x;\r\n\tqr.y = context.y;\r\n\r\n\tthis.alignImage(qr);\r\n\r\n\tfor (var i = 0, l = qr._canvas.length; i < l; i++) {\r\n\t\tvar vector = qr._canvas[i];\r\n\t\tvector.x += qr.x;\r\n\t\tvector.y += qr.y;\r\n\t\tthis.addVector(vector, true, true, index);\r\n\t}\r\n\r\n\tcontext.moveDown(qr._height);\r\n\r\n\treturn position;\r\n};\r\n\r\nElementWriter.prototype.alignImage = function (image) {\r\n\tvar width = this.context.availableWidth;\r\n\tvar imageWidth = image._minWidth;\r\n\tvar offset = 0;\r\n\tswitch (image._alignment) {\r\n\t\tcase 'right':\r\n\t\t\toffset = width - imageWidth;\r\n\t\t\tbreak;\r\n\t\tcase 'center':\r\n\t\t\toffset = (width - imageWidth) / 2;\r\n\t\t\tbreak;\r\n\t}\r\n\r\n\tif (offset) {\r\n\t\timage.x = (image.x || 0) + offset;\r\n\t}\r\n};\r\n\r\nElementWriter.prototype.alignCanvas = function (node) {\r\n\tvar width = this.context.availableWidth;\r\n\tvar canvasWidth = node._minWidth;\r\n\tvar offset = 0;\r\n\tswitch (node._alignment) {\r\n\t\tcase 'right':\r\n\t\t\toffset = width - canvasWidth;\r\n\t\t\tbreak;\r\n\t\tcase 'center':\r\n\t\t\toffset = (width - canvasWidth) / 2;\r\n\t\t\tbreak;\r\n\t}\r\n\tif (offset) {\r\n\t\tnode.canvas.forEach(function (vector) {\r\n\t\t\toffsetVector(vector, offset, 0);\r\n\t\t});\r\n\t}\r\n};\r\n\r\nElementWriter.prototype.addVector = function (vector, ignoreContextX, ignoreContextY, index) {\r\n\tvar context = this.context;\r\n\tvar page = context.getCurrentPage(),\r\n\t\tposition = this.getCurrentPositionOnPage();\r\n\r\n\tif (page) {\r\n\t\toffsetVector(vector, ignoreContextX ? 0 : context.x, ignoreContextY ? 0 : context.y);\r\n\t\taddPageItem(page, {\r\n\t\t\ttype: 'vector',\r\n\t\t\titem: vector\r\n\t\t}, index);\r\n\t\treturn position;\r\n\t}\r\n};\r\n\r\nElementWriter.prototype.beginClip = function (width, height) {\r\n\tvar ctx = this.context;\r\n\tvar page = ctx.getCurrentPage();\r\n\tpage.items.push({\r\n\t\ttype: 'beginClip',\r\n\t\titem: { x: ctx.x, y: ctx.y, width: width, height: height }\r\n\t});\r\n\treturn true;\r\n};\r\n\r\nElementWriter.prototype.endClip = function () {\r\n\tvar ctx = this.context;\r\n\tvar page = ctx.getCurrentPage();\r\n\tpage.items.push({\r\n\t\ttype: 'endClip'\r\n\t});\r\n\treturn true;\r\n};\r\n\r\nfunction cloneLine(line) {\r\n\tvar result = new Line(line.maxWidth);\r\n\r\n\tfor (var key in line) {\r\n\t\tif (line.hasOwnProperty(key)) {\r\n\t\t\tresult[key] = line[key];\r\n\t\t}\r\n\t}\r\n\r\n\treturn result;\r\n}\r\n\r\nElementWriter.prototype.addFragment = function (block, useBlockXOffset, useBlockYOffset, dontUpdateContextPosition) {\r\n\tvar ctx = this.context;\r\n\tvar page = ctx.getCurrentPage();\r\n\r\n\tif (!useBlockXOffset && block.height > ctx.availableHeight) {\r\n\t\treturn false;\r\n\t}\r\n\r\n\tblock.items.forEach(function (item) {\r\n\t\tswitch (item.type) {\r\n\t\t\tcase 'line':\r\n\t\t\t\tvar l = cloneLine(item.item);\r\n\r\n\t\t\t\tif (l._node) {\r\n\t\t\t\t\tl._node.positions[0].pageNumber = ctx.page + 1;\r\n\t\t\t\t}\r\n\t\t\t\tl.x = (l.x || 0) + (useBlockXOffset ? (block.xOffset || 0) : ctx.x);\r\n\t\t\t\tl.y = (l.y || 0) + (useBlockYOffset ? (block.yOffset || 0) : ctx.y);\r\n\r\n\t\t\t\tpage.items.push({\r\n\t\t\t\t\ttype: 'line',\r\n\t\t\t\t\titem: l\r\n\t\t\t\t});\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'vector':\r\n\t\t\t\tvar v = pack(item.item);\r\n\r\n\t\t\t\toffsetVector(v, useBlockXOffset ? (block.xOffset || 0) : ctx.x, useBlockYOffset ? (block.yOffset || 0) : ctx.y);\r\n\t\t\t\tpage.items.push({\r\n\t\t\t\t\ttype: 'vector',\r\n\t\t\t\t\titem: v\r\n\t\t\t\t});\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'image':\r\n\t\t\tcase 'svg':\r\n\t\t\t\tvar img = pack(item.item);\r\n\r\n\t\t\t\timg.x = (img.x || 0) + (useBlockXOffset ? (block.xOffset || 0) : ctx.x);\r\n\t\t\t\timg.y = (img.y || 0) + (useBlockYOffset ? (block.yOffset || 0) : ctx.y);\r\n\r\n\t\t\t\tpage.items.push({\r\n\t\t\t\t\ttype: item.type,\r\n\t\t\t\t\titem: img\r\n\t\t\t\t});\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tif (!dontUpdateContextPosition) {\r\n\t\tctx.moveDown(block.height);\r\n\t}\r\n\r\n\treturn true;\r\n};\r\n\r\n/**\r\n * Pushes the provided context onto the stack or creates a new one\r\n *\r\n * pushContext(context) - pushes the provided context and makes it current\r\n * pushContext(width, height) - creates and pushes a new context with the specified width and height\r\n * pushContext() - creates a new context for unbreakable blocks (with current availableWidth and full-page-height)\r\n */\r\nElementWriter.prototype.pushContext = function (contextOrWidth, height) {\r\n\tif (contextOrWidth === undefined) {\r\n\t\theight = this.context.getCurrentPage().height - this.context.pageMargins.top - this.context.pageMargins.bottom;\r\n\t\tcontextOrWidth = this.context.availableWidth;\r\n\t}\r\n\r\n\tif (isNumber(contextOrWidth)) {\r\n\t\tcontextOrWidth = new DocumentContext({ width: contextOrWidth, height: height }, { left: 0, right: 0, top: 0, bottom: 0 });\r\n\t}\r\n\r\n\tthis.contextStack.push(this.context);\r\n\tthis.context = contextOrWidth;\r\n};\r\n\r\nElementWriter.prototype.popContext = function () {\r\n\tthis.context = this.contextStack.pop();\r\n};\r\n\r\nElementWriter.prototype.getCurrentPositionOnPage = function () {\r\n\treturn (this.contextStack[0] || this.context).getCurrentPosition();\r\n};\r\n\r\n\r\nmodule.exports = ElementWriter;\r\n", "'use strict';\r\n\r\nvar isArray = require('./helpers').isArray;\r\n\r\nfunction typeName(bold, italics) {\r\n\tvar type = 'normal';\r\n\tif (bold && italics) {\r\n\t\ttype = 'bolditalics';\r\n\t} else if (bold) {\r\n\t\ttype = 'bold';\r\n\t} else if (italics) {\r\n\t\ttype = 'italics';\r\n\t}\r\n\treturn type;\r\n}\r\n\r\nfunction FontProvider(fontDescriptors, pdfKitDoc) {\r\n\tthis.fonts = {};\r\n\tthis.pdfKitDoc = pdfKitDoc;\r\n\tthis.fontCache = {};\r\n\r\n\tfor (var font in fontDescriptors) {\r\n\t\tif (fontDescriptors.hasOwnProperty(font)) {\r\n\t\t\tvar fontDef = fontDescriptors[font];\r\n\r\n\t\t\tthis.fonts[font] = {\r\n\t\t\t\tnormal: fontDef.normal,\r\n\t\t\t\tbold: fontDef.bold,\r\n\t\t\t\titalics: fontDef.italics,\r\n\t\t\t\tbolditalics: fontDef.bolditalics\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n}\r\n\r\nFontProvider.prototype.getFontType = function (bold, italics) {\r\n\treturn typeName(bold, italics);\r\n}\r\n\r\nFontProvider.prototype.getFontFile = function (familyName, bold, italics) {\r\n\tvar type = this.getFontType(bold, italics);\r\n\tif (!this.fonts[familyName] || !this.fonts[familyName][type]) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\treturn this.fonts[familyName][type];\r\n}\r\n\r\nFontProvider.prototype.provideFont = function (familyName, bold, italics) {\r\n\tvar type = this.getFontType(bold, italics);\r\n\tif (this.getFontFile(familyName, bold, italics) === null) {\r\n\t\tthrow new Error('Font \\'' + familyName + '\\' in style \\'' + type + '\\' is not defined in the font section of the document definition.');\r\n\t}\r\n\r\n\tthis.fontCache[familyName] = this.fontCache[familyName] || {};\r\n\r\n\tif (!this.fontCache[familyName][type]) {\r\n\t\tvar def = this.fonts[familyName][type];\r\n\t\tif (!isArray(def)) {\r\n\t\t\tdef = [def];\r\n\t\t}\r\n\t\tthis.fontCache[familyName][type] = this.pdfKitDoc.font.apply(this.pdfKitDoc, def)._font;\r\n\t}\r\n\r\n\treturn this.fontCache[familyName][type];\r\n};\r\n\r\nmodule.exports = FontProvider;\r\n", "'use strict';\r\n\r\nfunction isString(variable) {\r\n\treturn typeof variable === 'string' || variable instanceof String;\r\n}\r\n\r\nfunction isNumber(variable) {\r\n\treturn typeof variable === 'number' || variable instanceof Number;\r\n}\r\n\r\nfunction isBoolean(variable) {\r\n\treturn typeof variable === 'boolean';\r\n}\r\n\r\nfunction isArray(variable) {\r\n\treturn Array.isArray(variable);\r\n}\r\n\r\nfunction isFunction(variable) {\r\n\treturn typeof variable === 'function';\r\n}\r\n\r\nfunction isObject(variable) {\r\n\treturn variable !== null && typeof variable === 'object';\r\n}\r\n\r\nfunction isNull(variable) {\r\n\treturn variable === null;\r\n}\r\n\r\nfunction isUndefined(variable) {\r\n\treturn variable === undefined;\r\n}\r\n\r\nfunction pack() {\r\n\tvar result = {};\r\n\r\n\tfor (var i = 0, l = arguments.length; i < l; i++) {\r\n\t\tvar obj = arguments[i];\r\n\r\n\t\tif (obj) {\r\n\t\t\tfor (var key in obj) {\r\n\t\t\t\tif (obj.hasOwnProperty(key)) {\r\n\t\t\t\t\tresult[key] = obj[key];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn result;\r\n}\r\n\r\nfunction offsetVector(vector, x, y) {\r\n\tswitch (vector.type) {\r\n\t\tcase 'ellipse':\r\n\t\tcase 'rect':\r\n\t\t\tvector.x += x;\r\n\t\t\tvector.y += y;\r\n\t\t\tbreak;\r\n\t\tcase 'line':\r\n\t\t\tvector.x1 += x;\r\n\t\t\tvector.x2 += x;\r\n\t\t\tvector.y1 += y;\r\n\t\t\tvector.y2 += y;\r\n\t\t\tbreak;\r\n\t\tcase 'polyline':\r\n\t\t\tfor (var i = 0, l = vector.points.length; i < l; i++) {\r\n\t\t\t\tvector.points[i].x += x;\r\n\t\t\t\tvector.points[i].y += y;\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t}\r\n}\r\n\r\nfunction fontStringify(key, val) {\r\n\tif (key === 'font') {\r\n\t\treturn 'font';\r\n\t}\r\n\treturn val;\r\n}\r\n\r\nfunction getNodeId(node) {\r\n\tif (node.id) {\r\n\t\treturn node.id;\r\n\t}\r\n\r\n\tif (isArray(node.text)) {\r\n\t\tfor (var i = 0, l = node.text.length; i < l; i++) {\r\n\t\t\tvar n = node.text[i];\r\n\t\t\tvar nodeId = getNodeId(n);\r\n\t\t\tif (nodeId) {\r\n\t\t\t\treturn nodeId;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn null;\r\n}\r\n\r\nfunction isPattern(color) {\r\n\treturn isArray(color) && color.length === 2;\r\n}\r\n\r\n// converts from a [<pattern name>, <color>] as used by pdfmake\r\n// into [<pattern object>, <color>] as used by pdfkit\r\n// (the pattern has to be registered in the doc definition of course)\r\nfunction getPattern(color, patterns) {\r\n\treturn [patterns[color[0]], color[1]];\r\n}\r\n\r\nmodule.exports = {\r\n\tisString: isString,\r\n\tisNumber: isNumber,\r\n\tisBoolean: isBoolean,\r\n\tisArray: isArray,\r\n\tisFunction: isFunction,\r\n\tisObject: isObject,\r\n\tisNull: isNull,\r\n\tisUndefined: isUndefined,\r\n\tpack: pack,\r\n\tfontStringify: fontStringify,\r\n\toffsetVector: offsetVector,\r\n\tgetNodeId: getNodeId,\r\n\tisPattern: isPattern,\r\n\tgetPattern: getPattern\r\n};\r\n", "'use strict';\r\n\r\nvar fs = require('fs');\r\n\r\nfunction ImageMeasure(pdfKitDoc, imageDictionary) {\r\n\tthis.pdfKitDoc = pdfKitDoc;\r\n\tthis.imageDictionary = imageDictionary || {};\r\n}\r\n\r\nImageMeasure.prototype.measureImage = function (src) {\r\n\tvar image;\r\n\tvar that = this;\r\n\r\n\tif (!this.pdfKitDoc._imageRegistry[src]) {\r\n\t\ttry {\r\n\t\t\timage = this.pdfKitDoc.openImage(realImageSrc(src));\r\n\t\t\tif (!image) {\r\n\t\t\t\tthrow 'No image';\r\n\t\t\t}\r\n\t\t} catch (error) {\r\n\t\t\tthrow 'Invalid image: ' + error.toString() + '\\nImages dictionary should contain dataURL entries (or local file paths in node.js)';\r\n\t\t}\r\n\t\timage.embed(this.pdfKitDoc);\r\n\t\tthis.pdfKitDoc._imageRegistry[src] = image;\r\n\t} else {\r\n\t\timage = this.pdfKitDoc._imageRegistry[src];\r\n\t}\r\n\r\n\treturn { width: image.width, height: image.height };\r\n\r\n\tfunction realImageSrc(src) {\r\n\t\tvar img = that.imageDictionary[src];\r\n\r\n\t\tif (!img) {\r\n\t\t\treturn src;\r\n\t\t}\r\n\r\n\t\tif (fs.existsSync(img)) {\r\n\t\t\treturn fs.readFileSync(img);\r\n\t\t}\r\n\r\n\t\tvar index = img.indexOf('base64,');\r\n\t\tif (index < 0) {\r\n\t\t\treturn that.imageDictionary[src];\r\n\t\t}\r\n\r\n\t\treturn Buffer.from(img.substring(index + 7), 'base64');\r\n\t}\r\n};\r\n\r\nmodule.exports = ImageMeasure;\r\n", "'use strict';\r\n\r\nvar TraversalTracker = require('./traversalTracker');\r\nvar DocPreprocessor = require('./docPreprocessor');\r\nvar DocMeasure = require('./docMeasure');\r\nvar DocumentContext = require('./documentContext');\r\nvar PageElementWriter = require('./pageElementWriter');\r\nvar ColumnCalculator = require('./columnCalculator');\r\nvar TableProcessor = require('./tableProcessor');\r\nvar Line = require('./line');\r\nvar isString = require('./helpers').isString;\r\nvar isArray = require('./helpers').isArray;\r\nvar isUndefined = require('./helpers').isUndefined;\r\nvar isNull = require('./helpers').isNull;\r\nvar pack = require('./helpers').pack;\r\nvar offsetVector = require('./helpers').offsetVector;\r\nvar fontStringify = require('./helpers').fontStringify;\r\nvar getNodeId = require('./helpers').getNodeId;\r\nvar isFunction = require('./helpers').isFunction;\r\nvar TextTools = require('./textTools');\r\nvar StyleContextStack = require('./styleContextStack');\r\nvar isNumber = require('./helpers').isNumber;\r\n\r\nfunction addAll(target, otherArray) {\r\n\totherArray.forEach(function (item) {\r\n\t\ttarget.push(item);\r\n\t});\r\n}\r\n\r\n/**\r\n * Creates an instance of LayoutBuilder - layout engine which turns document-definition-object\r\n * into a set of pages, lines, inlines and vectors ready to be rendered into a PDF\r\n *\r\n * @param {Object} pageSize - an object defining page width and height\r\n * @param {Object} pageMargins - an object defining top, left, right and bottom margins\r\n */\r\nfunction LayoutBuilder(pageSize, pageMargins, imageMeasure, svgMeasure) {\r\n\tthis.pageSize = pageSize;\r\n\tthis.pageMargins = pageMargins;\r\n\tthis.tracker = new TraversalTracker();\r\n\tthis.imageMeasure = imageMeasure;\r\n\tthis.svgMeasure = svgMeasure;\r\n\tthis.tableLayouts = {};\r\n}\r\n\r\nLayoutBuilder.prototype.registerTableLayouts = function (tableLayouts) {\r\n\tthis.tableLayouts = pack(this.tableLayouts, tableLayouts);\r\n};\r\n\r\n/**\r\n * Executes layout engine on document-definition-object and creates an array of pages\r\n * containing positioned Blocks, Lines and inlines\r\n *\r\n * @param {Object} docStructure document-definition-object\r\n * @param {Object} fontProvider font provider\r\n * @param {Object} styleDictionary dictionary with style definitions\r\n * @param {Object} defaultStyle default style definition\r\n * @return {Array} an array of pages\r\n */\r\nLayoutBuilder.prototype.layoutDocument = function (docStructure, fontProvider, styleDictionary, defaultStyle, background, header, footer, images, watermark, pageBreakBeforeFct) {\r\n\r\n\tfunction addPageBreaksIfNecessary(linearNodeList, pages) {\r\n\r\n\t\tif (!isFunction(pageBreakBeforeFct)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tlinearNodeList = linearNodeList.filter(function (node) {\r\n\t\t\treturn node.positions.length > 0;\r\n\t\t});\r\n\r\n\t\tlinearNodeList.forEach(function (node) {\r\n\t\t\tvar nodeInfo = {};\r\n\t\t\t[\r\n\t\t\t\t'id', 'text', 'ul', 'ol', 'table', 'image', 'qr', 'canvas', 'svg', 'columns',\r\n\t\t\t\t'headlineLevel', 'style', 'pageBreak', 'pageOrientation',\r\n\t\t\t\t'width', 'height'\r\n\t\t\t].forEach(function (key) {\r\n\t\t\t\tif (node[key] !== undefined) {\r\n\t\t\t\t\tnodeInfo[key] = node[key];\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tnodeInfo.startPosition = node.positions[0];\r\n\t\t\tnodeInfo.pageNumbers = Array.from(new Set(node.positions.map(function (node) { return node.pageNumber; })));\r\n\t\t\tnodeInfo.pages = pages.length;\r\n\t\t\tnodeInfo.stack = isArray(node.stack);\r\n\r\n\t\t\tnode.nodeInfo = nodeInfo;\r\n\t\t});\r\n\r\n\t\tfor (var index = 0; index < linearNodeList.length; index++) {\r\n\t\t\tvar node = linearNodeList[index];\r\n\t\t\tif (node.pageBreak !== 'before' && !node.pageBreakCalculated) {\r\n\t\t\t\tnode.pageBreakCalculated = true;\r\n\t\t\t\tvar pageNumber = node.nodeInfo.pageNumbers[0];\r\n\t\t\t\tvar followingNodesOnPage = [];\r\n\t\t\t\tvar nodesOnNextPage = [];\r\n\t\t\t\tvar previousNodesOnPage = [];\r\n\t\t\t\tif (pageBreakBeforeFct.length > 1) {\r\n\t\t\t\t\tfor (var ii = index + 1, l = linearNodeList.length; ii < l; ii++) {\r\n\t\t\t\t\t\tif (linearNodeList[ii].nodeInfo.pageNumbers.indexOf(pageNumber) > -1) {\r\n\t\t\t\t\t\t\tfollowingNodesOnPage.push(linearNodeList[ii].nodeInfo);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (pageBreakBeforeFct.length > 2 && linearNodeList[ii].nodeInfo.pageNumbers.indexOf(pageNumber + 1) > -1) {\r\n\t\t\t\t\t\t\tnodesOnNextPage.push(linearNodeList[ii].nodeInfo);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif (pageBreakBeforeFct.length > 3) {\r\n\t\t\t\t\tfor (var ii = 0; ii < index; ii++) {\r\n\t\t\t\t\t\tif (linearNodeList[ii].nodeInfo.pageNumbers.indexOf(pageNumber) > -1) {\r\n\t\t\t\t\t\t\tpreviousNodesOnPage.push(linearNodeList[ii].nodeInfo);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif (pageBreakBeforeFct(node.nodeInfo, followingNodesOnPage, nodesOnNextPage, previousNodesOnPage)) {\r\n\t\t\t\t\tnode.pageBreak = 'before';\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tthis.docPreprocessor = new DocPreprocessor();\r\n\tthis.docMeasure = new DocMeasure(fontProvider, styleDictionary, defaultStyle, this.imageMeasure, this.svgMeasure, this.tableLayouts, images);\r\n\r\n\r\n\tfunction resetXYs(result) {\r\n\t\tresult.linearNodeList.forEach(function (node) {\r\n\t\t\tnode.resetXY();\r\n\t\t});\r\n\t}\r\n\r\n\tvar result = this.tryLayoutDocument(docStructure, fontProvider, styleDictionary, defaultStyle, background, header, footer, images, watermark);\r\n\twhile (addPageBreaksIfNecessary(result.linearNodeList, result.pages)) {\r\n\t\tresetXYs(result);\r\n\t\tresult = this.tryLayoutDocument(docStructure, fontProvider, styleDictionary, defaultStyle, background, header, footer, images, watermark);\r\n\t}\r\n\r\n\treturn result.pages;\r\n};\r\n\r\nLayoutBuilder.prototype.tryLayoutDocument = function (docStructure, fontProvider, styleDictionary, defaultStyle, background, header, footer, images, watermark, pageBreakBeforeFct) {\r\n\r\n\tthis.linearNodeList = [];\r\n\tdocStructure = this.docPreprocessor.preprocessDocument(docStructure);\r\n\tdocStructure = this.docMeasure.measureDocument(docStructure);\r\n\r\n\tthis.writer = new PageElementWriter(\r\n\t\tnew DocumentContext(this.pageSize, this.pageMargins), this.tracker);\r\n\r\n\tvar _this = this;\r\n\tthis.writer.context().tracker.startTracking('pageAdded', function () {\r\n\t\t_this.addBackground(background);\r\n\t});\r\n\r\n\tthis.addBackground(background);\r\n\tthis.processNode(docStructure);\r\n\tthis.addHeadersAndFooters(header, footer);\r\n\tif (watermark != null) {\r\n\t\tthis.addWatermark(watermark, fontProvider, defaultStyle);\r\n\t}\r\n\r\n\treturn { pages: this.writer.context().pages, linearNodeList: this.linearNodeList };\r\n};\r\n\r\n\r\nLayoutBuilder.prototype.addBackground = function (background) {\r\n\tvar backgroundGetter = isFunction(background) ? background : function () {\r\n\t\treturn background;\r\n\t};\r\n\r\n\tvar context = this.writer.context();\r\n\tvar pageSize = context.getCurrentPage().pageSize;\r\n\r\n\tvar pageBackground = backgroundGetter(context.page + 1, pageSize);\r\n\r\n\tif (pageBackground) {\r\n\t\tthis.writer.beginUnbreakableBlock(pageSize.width, pageSize.height);\r\n\t\tpageBackground = this.docPreprocessor.preprocessDocument(pageBackground);\r\n\t\tthis.processNode(this.docMeasure.measureDocument(pageBackground));\r\n\t\tthis.writer.commitUnbreakableBlock(0, 0);\r\n\t\tcontext.backgroundLength[context.page] += pageBackground.positions.length;\r\n\t}\r\n};\r\n\r\nLayoutBuilder.prototype.addStaticRepeatable = function (headerOrFooter, sizeFunction) {\r\n\tthis.addDynamicRepeatable(function () {\r\n\t\treturn JSON.parse(JSON.stringify(headerOrFooter)); // copy to new object\r\n\t}, sizeFunction);\r\n};\r\n\r\nLayoutBuilder.prototype.addDynamicRepeatable = function (nodeGetter, sizeFunction) {\r\n\tvar pages = this.writer.context().pages;\r\n\r\n\tfor (var pageIndex = 0, l = pages.length; pageIndex < l; pageIndex++) {\r\n\t\tthis.writer.context().page = pageIndex;\r\n\r\n\t\tvar node = nodeGetter(pageIndex + 1, l, this.writer.context().pages[pageIndex].pageSize);\r\n\r\n\t\tif (node) {\r\n\t\t\tvar sizes = sizeFunction(this.writer.context().getCurrentPage().pageSize, this.pageMargins);\r\n\t\t\tthis.writer.beginUnbreakableBlock(sizes.width, sizes.height);\r\n\t\t\tnode = this.docPreprocessor.preprocessDocument(node);\r\n\t\t\tthis.processNode(this.docMeasure.measureDocument(node));\r\n\t\t\tthis.writer.commitUnbreakableBlock(sizes.x, sizes.y);\r\n\t\t}\r\n\t}\r\n};\r\n\r\nLayoutBuilder.prototype.addHeadersAndFooters = function (header, footer) {\r\n\tvar headerSizeFct = function (pageSize, pageMargins) {\r\n\t\treturn {\r\n\t\t\tx: 0,\r\n\t\t\ty: 0,\r\n\t\t\twidth: pageSize.width,\r\n\t\t\theight: pageMargins.top\r\n\t\t};\r\n\t};\r\n\r\n\tvar footerSizeFct = function (pageSize, pageMargins) {\r\n\t\treturn {\r\n\t\t\tx: 0,\r\n\t\t\ty: pageSize.height - pageMargins.bottom,\r\n\t\t\twidth: pageSize.width,\r\n\t\t\theight: pageMargins.bottom\r\n\t\t};\r\n\t};\r\n\r\n\tif (isFunction(header)) {\r\n\t\tthis.addDynamicRepeatable(header, headerSizeFct);\r\n\t} else if (header) {\r\n\t\tthis.addStaticRepeatable(header, headerSizeFct);\r\n\t}\r\n\r\n\tif (isFunction(footer)) {\r\n\t\tthis.addDynamicRepeatable(footer, footerSizeFct);\r\n\t} else if (footer) {\r\n\t\tthis.addStaticRepeatable(footer, footerSizeFct);\r\n\t}\r\n};\r\n\r\nLayoutBuilder.prototype.addWatermark = function (watermark, fontProvider, defaultStyle) {\r\n\tif (isString(watermark)) {\r\n\t\twatermark = { 'text': watermark };\r\n\t}\r\n\r\n\tif (!watermark.text) { // empty watermark text\r\n\t\treturn;\r\n\t}\r\n\r\n\twatermark.font = watermark.font || defaultStyle.font || 'Roboto';\r\n\twatermark.fontSize = watermark.fontSize || 'auto';\r\n\twatermark.color = watermark.color || 'black';\r\n\twatermark.opacity = isNumber(watermark.opacity) ? watermark.opacity : 0.6;\r\n\twatermark.bold = watermark.bold || false;\r\n\twatermark.italics = watermark.italics || false;\r\n\twatermark.angle = !isUndefined(watermark.angle) && !isNull(watermark.angle) ? watermark.angle : null;\r\n\r\n\tif (watermark.angle === null) {\r\n\t\twatermark.angle = Math.atan2(this.pageSize.height, this.pageSize.width) * -180 / Math.PI;\r\n\t}\r\n\r\n\tif (watermark.fontSize === 'auto') {\r\n\t\twatermark.fontSize = getWatermarkFontSize(this.pageSize, watermark, fontProvider);\r\n\t}\r\n\r\n\tvar watermarkObject = {\r\n\t\ttext: watermark.text,\r\n\t\tfont: fontProvider.provideFont(watermark.font, watermark.bold, watermark.italics),\r\n\t\tfontSize: watermark.fontSize,\r\n\t\tcolor: watermark.color,\r\n\t\topacity: watermark.opacity,\r\n\t\tangle: watermark.angle\r\n\t};\r\n\r\n\twatermarkObject._size = getWatermarkSize(watermark, fontProvider);\r\n\r\n\tvar pages = this.writer.context().pages;\r\n\tfor (var i = 0, l = pages.length; i < l; i++) {\r\n\t\tpages[i].watermark = watermarkObject;\r\n\t}\r\n\r\n\tfunction getWatermarkSize(watermark, fontProvider) {\r\n\t\tvar textTools = new TextTools(fontProvider);\r\n\t\tvar styleContextStack = new StyleContextStack(null, { font: watermark.font, bold: watermark.bold, italics: watermark.italics });\r\n\r\n\t\tstyleContextStack.push({\r\n\t\t\tfontSize: watermark.fontSize\r\n\t\t});\r\n\r\n\t\tvar size = textTools.sizeOfString(watermark.text, styleContextStack);\r\n\t\tvar rotatedSize = textTools.sizeOfRotatedText(watermark.text, watermark.angle, styleContextStack);\r\n\r\n\t\treturn { size: size, rotatedSize: rotatedSize };\r\n\t}\r\n\r\n\tfunction getWatermarkFontSize(pageSize, watermark, fontProvider) {\r\n\t\tvar textTools = new TextTools(fontProvider);\r\n\t\tvar styleContextStack = new StyleContextStack(null, { font: watermark.font, bold: watermark.bold, italics: watermark.italics });\r\n\t\tvar rotatedSize;\r\n\r\n\t\t/**\r\n\t\t * Binary search the best font size.\r\n\t\t * Initial bounds [0, 1000]\r\n\t\t * Break when range < 1\r\n\t\t */\r\n\t\tvar a = 0;\r\n\t\tvar b = 1000;\r\n\t\tvar c = (a + b) / 2;\r\n\t\twhile (Math.abs(a - b) > 1) {\r\n\t\t\tstyleContextStack.push({\r\n\t\t\t\tfontSize: c\r\n\t\t\t});\r\n\t\t\trotatedSize = textTools.sizeOfRotatedText(watermark.text, watermark.angle, styleContextStack);\r\n\t\t\tif (rotatedSize.width > pageSize.width) {\r\n\t\t\t\tb = c;\r\n\t\t\t\tc = (a + b) / 2;\r\n\t\t\t} else if (rotatedSize.width < pageSize.width) {\r\n\t\t\t\tif (rotatedSize.height > pageSize.height) {\r\n\t\t\t\t\tb = c;\r\n\t\t\t\t\tc = (a + b) / 2;\r\n\t\t\t\t} else {\r\n\t\t\t\t\ta = c;\r\n\t\t\t\t\tc = (a + b) / 2;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tstyleContextStack.pop();\r\n\t\t}\r\n\t\t/*\r\n\t\t End binary search\r\n\t\t */\r\n\t\treturn c;\r\n\t}\r\n};\r\n\r\nfunction decorateNode(node) {\r\n\tvar x = node.x, y = node.y;\r\n\tnode.positions = [];\r\n\r\n\tif (isArray(node.canvas)) {\r\n\t\tnode.canvas.forEach(function (vector) {\r\n\t\t\tvar x = vector.x, y = vector.y, x1 = vector.x1, y1 = vector.y1, x2 = vector.x2, y2 = vector.y2;\r\n\t\t\tvector.resetXY = function () {\r\n\t\t\t\tvector.x = x;\r\n\t\t\t\tvector.y = y;\r\n\t\t\t\tvector.x1 = x1;\r\n\t\t\t\tvector.y1 = y1;\r\n\t\t\t\tvector.x2 = x2;\r\n\t\t\t\tvector.y2 = y2;\r\n\t\t\t};\r\n\t\t});\r\n\t}\r\n\r\n\tnode.resetXY = function () {\r\n\t\tnode.x = x;\r\n\t\tnode.y = y;\r\n\t\tif (isArray(node.canvas)) {\r\n\t\t\tnode.canvas.forEach(function (vector) {\r\n\t\t\t\tvector.resetXY();\r\n\t\t\t});\r\n\t\t}\r\n\t};\r\n}\r\n\r\nLayoutBuilder.prototype.processNode = function (node) {\r\n\tvar self = this;\r\n\r\n\tthis.linearNodeList.push(node);\r\n\tdecorateNode(node);\r\n\r\n\tapplyMargins(function () {\r\n\t\tvar unbreakable = node.unbreakable;\r\n\t\tif (unbreakable) {\r\n\t\t\tself.writer.beginUnbreakableBlock();\r\n\t\t}\r\n\r\n\t\tvar absPosition = node.absolutePosition;\r\n\t\tif (absPosition) {\r\n\t\t\tself.writer.context().beginDetachedBlock();\r\n\t\t\tself.writer.context().moveTo(absPosition.x || 0, absPosition.y || 0);\r\n\t\t}\r\n\r\n\t\tvar relPosition = node.relativePosition;\r\n\t\tif (relPosition) {\r\n\t\t\tself.writer.context().beginDetachedBlock();\r\n\t\t\tself.writer.context().moveToRelative(relPosition.x || 0, relPosition.y || 0);\r\n\t\t}\r\n\r\n\t\tif (node.stack) {\r\n\t\t\tself.processVerticalContainer(node);\r\n\t\t} else if (node.columns) {\r\n\t\t\tself.processColumns(node);\r\n\t\t} else if (node.ul) {\r\n\t\t\tself.processList(false, node);\r\n\t\t} else if (node.ol) {\r\n\t\t\tself.processList(true, node);\r\n\t\t} else if (node.table) {\r\n\t\t\tself.processTable(node);\r\n\t\t} else if (node.text !== undefined) {\r\n\t\t\tself.processLeaf(node);\r\n\t\t} else if (node.toc) {\r\n\t\t\tself.processToc(node);\r\n\t\t} else if (node.image) {\r\n\t\t\tself.processImage(node);\r\n\t\t} else if (node.svg) {\r\n\t\t\tself.processSVG(node);\r\n\t\t} else if (node.canvas) {\r\n\t\t\tself.processCanvas(node);\r\n\t\t} else if (node.qr) {\r\n\t\t\tself.processQr(node);\r\n\t\t} else if (!node._span) {\r\n\t\t\tthrow 'Unrecognized document structure: ' + JSON.stringify(node, fontStringify);\r\n\t\t}\r\n\r\n\t\tif (absPosition || relPosition) {\r\n\t\t\tself.writer.context().endDetachedBlock();\r\n\t\t}\r\n\r\n\t\tif (unbreakable) {\r\n\t\t\tself.writer.commitUnbreakableBlock();\r\n\t\t}\r\n\t});\r\n\r\n\tfunction applyMargins(callback) {\r\n\t\tvar margin = node._margin;\r\n\r\n\t\tif (node.pageBreak === 'before') {\r\n\t\t\tself.writer.moveToNextPage(node.pageOrientation);\r\n\t\t} else if (node.pageBreak === 'beforeOdd') {\r\n\t\t\tself.writer.moveToNextPage(node.pageOrientation);\r\n\t\t\tif ((self.writer.context().page + 1) % 2 === 1) {\r\n\t\t\t\tself.writer.moveToNextPage(node.pageOrientation);\r\n\t\t\t}\r\n\t\t} else if (node.pageBreak === 'beforeEven') {\r\n\t\t\tself.writer.moveToNextPage(node.pageOrientation);\r\n\t\t\tif ((self.writer.context().page + 1) % 2 === 0) {\r\n\t\t\t\tself.writer.moveToNextPage(node.pageOrientation);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (margin) {\r\n\t\t\tself.writer.context().moveDown(margin[1]);\r\n\t\t\tself.writer.context().addMargin(margin[0], margin[2]);\r\n\t\t}\r\n\r\n\t\tcallback();\r\n\r\n\t\tif (margin) {\r\n\t\t\tself.writer.context().addMargin(-margin[0], -margin[2]);\r\n\t\t\tself.writer.context().moveDown(margin[3]);\r\n\t\t}\r\n\r\n\t\tif (node.pageBreak === 'after') {\r\n\t\t\tself.writer.moveToNextPage(node.pageOrientation);\r\n\t\t} else if (node.pageBreak === 'afterOdd') {\r\n\t\t\tself.writer.moveToNextPage(node.pageOrientation);\r\n\t\t\tif ((self.writer.context().page + 1) % 2 === 1) {\r\n\t\t\t\tself.writer.moveToNextPage(node.pageOrientation);\r\n\t\t\t}\r\n\t\t} else if (node.pageBreak === 'afterEven') {\r\n\t\t\tself.writer.moveToNextPage(node.pageOrientation);\r\n\t\t\tif ((self.writer.context().page + 1) % 2 === 0) {\r\n\t\t\t\tself.writer.moveToNextPage(node.pageOrientation);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\r\n\r\n// vertical container\r\nLayoutBuilder.prototype.processVerticalContainer = function (node) {\r\n\tvar self = this;\r\n\tnode.stack.forEach(function (item) {\r\n\t\tself.processNode(item);\r\n\t\taddAll(node.positions, item.positions);\r\n\r\n\t\t//TODO: paragraph gap\r\n\t});\r\n};\r\n\r\n// columns\r\nLayoutBuilder.prototype.processColumns = function (columnNode) {\r\n\tvar columns = columnNode.columns;\r\n\tvar availableWidth = this.writer.context().availableWidth;\r\n\tvar gaps = gapArray(columnNode._gap);\r\n\r\n\tif (gaps) {\r\n\t\tavailableWidth -= (gaps.length - 1) * columnNode._gap;\r\n\t}\r\n\r\n\tColumnCalculator.buildColumnWidths(columns, availableWidth);\r\n\tvar result = this.processRow(columns, columns, gaps);\r\n\taddAll(columnNode.positions, result.positions);\r\n\r\n\r\n\tfunction gapArray(gap) {\r\n\t\tif (!gap) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tvar gaps = [];\r\n\t\tgaps.push(0);\r\n\r\n\t\tfor (var i = columns.length - 1; i > 0; i--) {\r\n\t\t\tgaps.push(gap);\r\n\t\t}\r\n\r\n\t\treturn gaps;\r\n\t}\r\n};\r\n\r\nLayoutBuilder.prototype.processRow = function (columns, widths, gaps, tableBody, tableRow, height) {\r\n\tvar self = this;\r\n\tvar pageBreaks = [], positions = [];\r\n\r\n\tthis.tracker.auto('pageChanged', storePageBreakData, function () {\r\n\t\twidths = widths || columns;\r\n\r\n\t\tself.writer.context().beginColumnGroup();\r\n\r\n\t\tfor (var i = 0, l = columns.length; i < l; i++) {\r\n\t\t\tvar column = columns[i];\r\n\t\t\tvar width = widths[i]._calcWidth;\r\n\t\t\tvar leftOffset = colLeftOffset(i);\r\n\r\n\t\t\tif (column.colSpan && column.colSpan > 1) {\r\n\t\t\t\tfor (var j = 1; j < column.colSpan; j++) {\r\n\t\t\t\t\twidth += widths[++i]._calcWidth + gaps[i];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tself.writer.context().beginColumn(width, leftOffset, getEndingCell(column, i));\r\n\t\t\tif (!column._span) {\r\n\t\t\t\tself.processNode(column);\r\n\t\t\t\taddAll(positions, column.positions);\r\n\t\t\t} else if (column._columnEndingContext) {\r\n\t\t\t\t// row-span ending\r\n\t\t\t\tself.writer.context().markEnding(column);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tself.writer.context().completeColumnGroup(height);\r\n\t});\r\n\r\n\treturn { pageBreaks: pageBreaks, positions: positions };\r\n\r\n\tfunction storePageBreakData(data) {\r\n\t\tvar pageDesc;\r\n\r\n\t\tfor (var i = 0, l = pageBreaks.length; i < l; i++) {\r\n\t\t\tvar desc = pageBreaks[i];\r\n\t\t\tif (desc.prevPage === data.prevPage) {\r\n\t\t\t\tpageDesc = desc;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (!pageDesc) {\r\n\t\t\tpageDesc = data;\r\n\t\t\tpageBreaks.push(pageDesc);\r\n\t\t}\r\n\t\tpageDesc.prevY = Math.max(pageDesc.prevY, data.prevY);\r\n\t\tpageDesc.y = Math.min(pageDesc.y, data.y);\r\n\t}\r\n\r\n\tfunction colLeftOffset(i) {\r\n\t\tif (gaps && gaps.length > i) {\r\n\t\t\treturn gaps[i];\r\n\t\t}\r\n\t\treturn 0;\r\n\t}\r\n\r\n\tfunction getEndingCell(column, columnIndex) {\r\n\t\tif (column.rowSpan && column.rowSpan > 1) {\r\n\t\t\tvar endingRow = tableRow + column.rowSpan - 1;\r\n\t\t\tif (endingRow >= tableBody.length) {\r\n\t\t\t\tthrow 'Row span for column ' + columnIndex + ' (with indexes starting from 0) exceeded row count';\r\n\t\t\t}\r\n\t\t\treturn tableBody[endingRow][columnIndex];\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t}\r\n};\r\n\r\n// lists\r\nLayoutBuilder.prototype.processList = function (orderedList, node) {\r\n\tvar self = this,\r\n\t\titems = orderedList ? node.ol : node.ul,\r\n\t\tgapSize = node._gapSize;\r\n\r\n\tthis.writer.context().addMargin(gapSize.width);\r\n\r\n\tvar nextMarker;\r\n\tthis.tracker.auto('lineAdded', addMarkerToFirstLeaf, function () {\r\n\t\titems.forEach(function (item) {\r\n\t\t\tnextMarker = item.listMarker;\r\n\t\t\tself.processNode(item);\r\n\t\t\taddAll(node.positions, item.positions);\r\n\t\t});\r\n\t});\r\n\r\n\tthis.writer.context().addMargin(-gapSize.width);\r\n\r\n\tfunction addMarkerToFirstLeaf(line) {\r\n\t\t// I'm not very happy with the way list processing is implemented\r\n\t\t// (both code and algorithm should be rethinked)\r\n\t\tif (nextMarker) {\r\n\t\t\tvar marker = nextMarker;\r\n\t\t\tnextMarker = null;\r\n\r\n\t\t\tif (marker.canvas) {\r\n\t\t\t\tvar vector = marker.canvas[0];\r\n\r\n\t\t\t\toffsetVector(vector, -marker._minWidth, 0);\r\n\t\t\t\tself.writer.addVector(vector);\r\n\t\t\t} else if (marker._inlines) {\r\n\t\t\t\tvar markerLine = new Line(self.pageSize.width);\r\n\t\t\t\tmarkerLine.addInline(marker._inlines[0]);\r\n\t\t\t\tmarkerLine.x = -marker._minWidth;\r\n\t\t\t\tmarkerLine.y = line.getAscenderHeight() - markerLine.getAscenderHeight();\r\n\t\t\t\tself.writer.addLine(markerLine, true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\r\n\r\n// tables\r\nLayoutBuilder.prototype.processTable = function (tableNode) {\r\n\tvar processor = new TableProcessor(tableNode);\r\n\r\n\tprocessor.beginTable(this.writer);\r\n\r\n\tvar rowHeights = tableNode.table.heights;\r\n\tfor (var i = 0, l = tableNode.table.body.length; i < l; i++) {\r\n\t\tprocessor.beginRow(i, this.writer);\r\n\r\n\t\tvar height;\r\n\t\tif (isFunction(rowHeights)) {\r\n\t\t\theight = rowHeights(i);\r\n\t\t} else if (isArray(rowHeights)) {\r\n\t\t\theight = rowHeights[i];\r\n\t\t} else {\r\n\t\t\theight = rowHeights;\r\n\t\t}\r\n\r\n\t\tif (height === 'auto') {\r\n\t\t\theight = undefined;\r\n\t\t}\r\n\r\n\t\tvar result = this.processRow(tableNode.table.body[i], tableNode.table.widths, tableNode._offsets.offsets, tableNode.table.body, i, height);\r\n\t\taddAll(tableNode.positions, result.positions);\r\n\r\n\t\tprocessor.endRow(i, this.writer, result.pageBreaks);\r\n\t}\r\n\r\n\tprocessor.endTable(this.writer);\r\n};\r\n\r\n// leafs (texts)\r\nLayoutBuilder.prototype.processLeaf = function (node) {\r\n\tvar line = this.buildNextLine(node);\r\n\tif (line && (node.tocItem || node.id)) {\r\n\t\tline._node = node;\r\n\t}\r\n\tvar currentHeight = (line) ? line.getHeight() : 0;\r\n\tvar maxHeight = node.maxHeight || -1;\r\n\r\n\tif (line) {\r\n\t\tvar nodeId = getNodeId(node);\r\n\t\tif (nodeId) {\r\n\t\t\tline.id = nodeId;\r\n\t\t}\r\n\t}\r\n\r\n\tif (node._tocItemRef) {\r\n\t\tline._pageNodeRef = node._tocItemRef;\r\n\t}\r\n\r\n\tif (node._pageRef) {\r\n\t\tline._pageNodeRef = node._pageRef._nodeRef;\r\n\t}\r\n\r\n\tif (line && line.inlines && isArray(line.inlines)) {\r\n\t\tfor (var i = 0, l = line.inlines.length; i < l; i++) {\r\n\t\t\tif (line.inlines[i]._tocItemRef) {\r\n\t\t\t\tline.inlines[i]._pageNodeRef = line.inlines[i]._tocItemRef;\r\n\t\t\t}\r\n\r\n\t\t\tif (line.inlines[i]._pageRef) {\r\n\t\t\t\tline.inlines[i]._pageNodeRef = line.inlines[i]._pageRef._nodeRef;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\twhile (line && (maxHeight === -1 || currentHeight < maxHeight)) {\r\n\t\tvar positions = this.writer.addLine(line);\r\n\t\tnode.positions.push(positions);\r\n\t\tline = this.buildNextLine(node);\r\n\t\tif (line) {\r\n\t\t\tcurrentHeight += line.getHeight();\r\n\t\t}\r\n\t}\r\n};\r\n\r\nLayoutBuilder.prototype.processToc = function (node) {\r\n\tif (node.toc.title) {\r\n\t\tthis.processNode(node.toc.title);\r\n\t}\r\n\tif (node.toc._table) {\r\n\t\tthis.processNode(node.toc._table);\r\n\t}\r\n};\r\n\r\nLayoutBuilder.prototype.buildNextLine = function (textNode) {\r\n\r\n\tfunction cloneInline(inline) {\r\n\t\tvar newInline = inline.constructor();\r\n\t\tfor (var key in inline) {\r\n\t\t\tnewInline[key] = inline[key];\r\n\t\t}\r\n\t\treturn newInline;\r\n\t}\r\n\r\n\tif (!textNode._inlines || textNode._inlines.length === 0) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\tvar line = new Line(this.writer.context().availableWidth);\r\n\tvar textTools = new TextTools(null);\r\n\r\n\tvar isForceContinue = false;\r\n\twhile (textNode._inlines && textNode._inlines.length > 0 &&\r\n\t\t(line.hasEnoughSpaceForInline(textNode._inlines[0], textNode._inlines.slice(1)) || isForceContinue)) {\r\n\t\tvar isHardWrap = false;\r\n\t\tvar inline = textNode._inlines.shift();\r\n\t\tisForceContinue = false;\r\n\r\n\t\tif (!inline.noWrap && inline.text.length > 1 && inline.width > line.getAvailableWidth()) {\r\n\t\t\tvar widthPerChar = inline.width / inline.text.length;\r\n\t\t\tvar maxChars = Math.floor(line.getAvailableWidth() / widthPerChar);\r\n\t\t\tif (maxChars < 1) {\r\n\t\t\t\tmaxChars = 1;\r\n\t\t\t}\r\n\t\t\tif (maxChars < inline.text.length) {\r\n\t\t\t\tvar newInline = cloneInline(inline);\r\n\r\n\t\t\t\tnewInline.text = inline.text.substr(maxChars);\r\n\t\t\t\tinline.text = inline.text.substr(0, maxChars);\r\n\r\n\t\t\t\tnewInline.width = textTools.widthOfString(newInline.text, newInline.font, newInline.fontSize, newInline.characterSpacing, newInline.fontFeatures);\r\n\t\t\t\tinline.width = textTools.widthOfString(inline.text, inline.font, inline.fontSize, inline.characterSpacing, inline.fontFeatures);\r\n\r\n\t\t\t\ttextNode._inlines.unshift(newInline);\r\n\t\t\t\tisHardWrap = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tline.addInline(inline);\r\n\r\n\t\tisForceContinue = inline.noNewLine && !isHardWrap;\r\n\t}\r\n\r\n\tline.lastLineInParagraph = textNode._inlines.length === 0;\r\n\r\n\treturn line;\r\n};\r\n\r\n// images\r\nLayoutBuilder.prototype.processImage = function (node) {\r\n\tvar position = this.writer.addImage(node);\r\n\tnode.positions.push(position);\r\n};\r\n\r\nLayoutBuilder.prototype.processSVG = function (node) {\r\n\tvar position = this.writer.addSVG(node);\r\n\tnode.positions.push(position);\r\n};\r\n\r\nLayoutBuilder.prototype.processCanvas = function (node) {\r\n\tvar height = node._minHeight;\r\n\r\n\tif (node.absolutePosition === undefined && this.writer.context().availableHeight < height) {\r\n\t\t// TODO: support for canvas larger than a page\r\n\t\t// TODO: support for other overflow methods\r\n\r\n\t\tthis.writer.moveToNextPage();\r\n\t}\r\n\r\n\tthis.writer.alignCanvas(node);\r\n\r\n\tnode.canvas.forEach(function (vector) {\r\n\t\tvar position = this.writer.addVector(vector);\r\n\t\tnode.positions.push(position);\r\n\t}, this);\r\n\r\n\tthis.writer.context().moveDown(height);\r\n};\r\n\r\nLayoutBuilder.prototype.processQr = function (node) {\r\n\tvar position = this.writer.addQr(node);\r\n\tnode.positions.push(position);\r\n};\r\n\r\nmodule.exports = LayoutBuilder;\r\n", "'use strict';\r\n\r\n/**\r\n * Creates an instance of Line\r\n *\r\n * @constructor\r\n * @this {Line}\r\n * @param {Number} Maximum width this line can have\r\n */\r\nfunction Line(maxWidth) {\r\n\tthis.maxWidth = maxWidth;\r\n\tthis.leadingCut = 0;\r\n\tthis.trailingCut = 0;\r\n\tthis.inlineWidths = 0;\r\n\tthis.inlines = [];\r\n}\r\n\r\nLine.prototype.getAscenderHeight = function () {\r\n\tvar y = 0;\r\n\r\n\tthis.inlines.forEach(function (inline) {\r\n\t\ty = Math.max(y, inline.font.ascender / 1000 * inline.fontSize);\r\n\t});\r\n\treturn y;\r\n};\r\n\r\nLine.prototype.hasEnoughSpaceForInline = function (inline, nextInlines) {\r\n\tnextInlines = nextInlines || [];\r\n\r\n\tif (this.inlines.length === 0) {\r\n\t\treturn true;\r\n\t}\r\n\tif (this.newLineForced) {\r\n\t\treturn false;\r\n\t}\r\n\r\n\tvar inlineWidth = inline.width;\r\n\tvar inlineTrailingCut = inline.trailingCut || 0;\r\n\tif (inline.noNewLine) {\r\n\t\tfor (var i = 0, l = nextInlines.length; i < l; i++) {\r\n\t\t\tvar nextInline = nextInlines[i];\r\n\t\t\tinlineWidth += nextInline.width;\r\n\t\t\tinlineTrailingCut += nextInline.trailingCut || 0;\r\n\t\t\tif (!nextInline.noNewLine) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn (this.inlineWidths + inlineWidth - this.leadingCut - inlineTrailingCut) <= this.maxWidth;\r\n};\r\n\r\nLine.prototype.addInline = function (inline) {\r\n\tif (this.inlines.length === 0) {\r\n\t\tthis.leadingCut = inline.leadingCut || 0;\r\n\t}\r\n\tthis.trailingCut = inline.trailingCut || 0;\r\n\r\n\tinline.x = this.inlineWidths - this.leadingCut;\r\n\r\n\tthis.inlines.push(inline);\r\n\tthis.inlineWidths += inline.width;\r\n\r\n\tif (inline.lineEnd) {\r\n\t\tthis.newLineForced = true;\r\n\t}\r\n};\r\n\r\nLine.prototype.getWidth = function () {\r\n\treturn this.inlineWidths - this.leadingCut - this.trailingCut;\r\n};\r\n\r\nLine.prototype.getAvailableWidth = function () {\r\n\treturn this.maxWidth - this.getWidth();\r\n};\r\n\r\n/**\r\n * Returns line height\r\n * @return {Number}\r\n */\r\nLine.prototype.getHeight = function () {\r\n\tvar max = 0;\r\n\r\n\tthis.inlines.forEach(function (item) {\r\n\t\tmax = Math.max(max, item.height || 0);\r\n\t});\r\n\r\n\treturn max;\r\n};\r\n\r\nmodule.exports = Line;\r\n", "'use strict';\r\n\r\nvar isUndefined = require('./helpers').isUndefined;\r\nvar ElementWriter = require('./elementWriter');\r\n\r\n/**\r\n * Creates an instance of PageElementWriter - an extended ElementWriter\r\n * which can handle:\r\n * - page-breaks (it adds new pages when there's not enough space left),\r\n * - repeatable fragments (like table-headers, which are repeated everytime\r\n *                         a page-break occurs)\r\n * - transactions (used for unbreakable-blocks when we want to make sure\r\n *                 whole block will be rendered on the same page)\r\n */\r\nfunction PageElementWriter(context, tracker) {\r\n\tthis.transactionLevel = 0;\r\n\tthis.repeatables = [];\r\n\tthis.tracker = tracker;\r\n\tthis.writer = new ElementWriter(context, tracker);\r\n}\r\n\r\nfunction fitOnPage(self, addFct) {\r\n\tvar position = addFct(self);\r\n\tif (!position) {\r\n\t\tself.moveToNextPage();\r\n\t\tposition = addFct(self);\r\n\t}\r\n\treturn position;\r\n}\r\n\r\nPageElementWriter.prototype.addLine = function (line, dontUpdateContextPosition, index) {\r\n\treturn fitOnPage(this, function (self) {\r\n\t\treturn self.writer.addLine(line, dontUpdateContextPosition, index);\r\n\t});\r\n};\r\n\r\nPageElementWriter.prototype.addImage = function (image, index) {\r\n\treturn fitOnPage(this, function (self) {\r\n\t\treturn self.writer.addImage(image, index);\r\n\t});\r\n};\r\n\r\nPageElementWriter.prototype.addSVG = function (image, index) {\r\n\treturn fitOnPage(this, function (self) {\r\n\t\treturn self.writer.addSVG(image, index);\r\n\t});\r\n};\r\n\r\nPageElementWriter.prototype.addQr = function (qr, index) {\r\n\treturn fitOnPage(this, function (self) {\r\n\t\treturn self.writer.addQr(qr, index);\r\n\t});\r\n};\r\n\r\nPageElementWriter.prototype.addVector = function (vector, ignoreContextX, ignoreContextY, index) {\r\n\treturn this.writer.addVector(vector, ignoreContextX, ignoreContextY, index);\r\n};\r\n\r\nPageElementWriter.prototype.beginClip = function (width, height) {\r\n\treturn this.writer.beginClip(width, height);\r\n};\r\n\r\nPageElementWriter.prototype.endClip = function () {\r\n\treturn this.writer.endClip();\r\n};\r\n\r\nPageElementWriter.prototype.alignCanvas = function (node) {\r\n\tthis.writer.alignCanvas(node);\r\n};\r\n\r\nPageElementWriter.prototype.addFragment = function (fragment, useBlockXOffset, useBlockYOffset, dontUpdateContextPosition) {\r\n\tif (!this.writer.addFragment(fragment, useBlockXOffset, useBlockYOffset, dontUpdateContextPosition)) {\r\n\t\tthis.moveToNextPage();\r\n\t\tthis.writer.addFragment(fragment, useBlockXOffset, useBlockYOffset, dontUpdateContextPosition);\r\n\t}\r\n};\r\n\r\nPageElementWriter.prototype.moveToNextPage = function (pageOrientation) {\r\n\r\n\tvar nextPage = this.writer.context.moveToNextPage(pageOrientation);\r\n\r\n\t// moveToNextPage is called multiple times for table, because is called for each column\r\n\t// and repeatables are inserted only in the first time. If columns are used, is needed\r\n\t// call for table in first column and then for table in the second column (is other repeatables).\r\n\tthis.repeatables.forEach(function (rep) {\r\n\t\tif (isUndefined(rep.insertedOnPages[this.writer.context.page])) {\r\n\t\t\trep.insertedOnPages[this.writer.context.page] = true;\r\n\t\t\tthis.writer.addFragment(rep, true);\r\n\t\t} else {\r\n\t\t\tthis.writer.context.moveDown(rep.height);\r\n\t\t}\r\n\t}, this);\r\n\r\n\tthis.writer.tracker.emit('pageChanged', {\r\n\t\tprevPage: nextPage.prevPage,\r\n\t\tprevY: nextPage.prevY,\r\n\t\ty: this.writer.context.y\r\n\t});\r\n};\r\n\r\nPageElementWriter.prototype.beginUnbreakableBlock = function (width, height) {\r\n\tif (this.transactionLevel++ === 0) {\r\n\t\tthis.originalX = this.writer.context.x;\r\n\t\tthis.writer.pushContext(width, height);\r\n\t}\r\n};\r\n\r\nPageElementWriter.prototype.commitUnbreakableBlock = function (forcedX, forcedY) {\r\n\tif (--this.transactionLevel === 0) {\r\n\t\tvar unbreakableContext = this.writer.context;\r\n\t\tthis.writer.popContext();\r\n\r\n\t\tvar nbPages = unbreakableContext.pages.length;\r\n\t\tif (nbPages > 0) {\r\n\t\t\t// no support for multi-page unbreakableBlocks\r\n\t\t\tvar fragment = unbreakableContext.pages[0];\r\n\t\t\tfragment.xOffset = forcedX;\r\n\t\t\tfragment.yOffset = forcedY;\r\n\r\n\t\t\t//TODO: vectors can influence height in some situations\r\n\t\t\tif (nbPages > 1) {\r\n\t\t\t\t// on out-of-context blocs (headers, footers, background) height should be the whole DocumentContext height\r\n\t\t\t\tif (forcedX !== undefined || forcedY !== undefined) {\r\n\t\t\t\t\tfragment.height = unbreakableContext.getCurrentPage().pageSize.height - unbreakableContext.pageMargins.top - unbreakableContext.pageMargins.bottom;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tfragment.height = this.writer.context.getCurrentPage().pageSize.height - this.writer.context.pageMargins.top - this.writer.context.pageMargins.bottom;\r\n\t\t\t\t\tfor (var i = 0, l = this.repeatables.length; i < l; i++) {\r\n\t\t\t\t\t\tfragment.height -= this.repeatables[i].height;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tfragment.height = unbreakableContext.y;\r\n\t\t\t}\r\n\r\n\t\t\tif (forcedX !== undefined || forcedY !== undefined) {\r\n\t\t\t\tthis.writer.addFragment(fragment, true, true, true);\r\n\t\t\t} else {\r\n\t\t\t\tthis.addFragment(fragment);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\r\n\r\nPageElementWriter.prototype.currentBlockToRepeatable = function () {\r\n\tvar unbreakableContext = this.writer.context;\r\n\tvar rep = { items: [] };\r\n\r\n\tunbreakableContext.pages[0].items.forEach(function (item) {\r\n\t\trep.items.push(item);\r\n\t});\r\n\r\n\trep.xOffset = this.originalX;\r\n\r\n\t//TODO: vectors can influence height in some situations\r\n\trep.height = unbreakableContext.y;\r\n\r\n\trep.insertedOnPages = [];\r\n\r\n\treturn rep;\r\n};\r\n\r\nPageElementWriter.prototype.pushToRepeatables = function (rep) {\r\n\tthis.repeatables.push(rep);\r\n};\r\n\r\nPageElementWriter.prototype.popFromRepeatables = function () {\r\n\tthis.repeatables.pop();\r\n};\r\n\r\nPageElementWriter.prototype.context = function () {\r\n\treturn this.writer.context;\r\n};\r\n\r\nmodule.exports = PageElementWriter;\r\n", "'use strict';\r\n\r\nfunction _interopDefault(ex) {\r\n\treturn (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex;\r\n}\r\n\r\nvar PdfKit = _interopDefault(require('@foliojs-fork/pdfkit'));\r\n\r\nfunction getEngineInstance() {\r\n\treturn PdfKit;\r\n}\r\n\r\nfunction createPdfDocument(options) {\r\n\toptions = options || {};\r\n\treturn new PdfKit(options);\r\n}\r\n\r\nmodule.exports = {\r\n\tgetEngineInstance: getEngineInstance,\r\n\tcreatePdfDocument: createPdfDocument\r\n};\r\n", "/*eslint no-unused-vars: [\"error\", {\"args\": \"none\"}]*/\r\n'use strict';\r\n\r\nvar PdfKitEngine = require('./pdfKitEngine');\r\nvar FontProvider = require('./fontProvider');\r\nvar LayoutBuilder = require('./layoutBuilder');\r\nvar sizes = require('./standardPageSizes');\r\nvar ImageMeasure = require('./imageMeasure');\r\nvar SVGMeasure = require('./svgMeasure');\r\nvar textDecorator = require('./textDecorator');\r\nvar TextTools = require('./textTools');\r\nvar isFunction = require('./helpers').isFunction;\r\nvar isString = require('./helpers').isString;\r\nvar isNumber = require('./helpers').isNumber;\r\nvar isBoolean = require('./helpers').isBoolean;\r\nvar isArray = require('./helpers').isArray;\r\nvar isUndefined = require('./helpers').isUndefined;\r\nvar isPattern = require('./helpers').isPattern;\r\nvar getPattern = require('./helpers').getPattern;\r\nvar SVGtoPDF = require('./3rd-party/svg-to-pdfkit');\r\n\r\nvar findFont = function (fonts, requiredFonts, defaultFont) {\r\n\tfor (var i = 0; i < requiredFonts.length; i++) {\r\n\t\tvar requiredFont = requiredFonts[i].toLowerCase();\r\n\r\n\t\tfor (var font in fonts) {\r\n\t\t\tif (font.toLowerCase() === requiredFont) {\r\n\t\t\t\treturn font;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn defaultFont;\r\n};\r\n\r\n////////////////////////////////////////\r\n// PdfPrinter\r\n\r\n/**\r\n * @class Creates an instance of a PdfPrinter which turns document definition into a pdf\r\n *\r\n * @param {Object} fontDescriptors font definition dictionary\r\n *\r\n * @example\r\n * var fontDescriptors = {\r\n *\tRoboto: {\r\n *\t\tnormal: 'fonts/Roboto-Regular.ttf',\r\n *\t\tbold: 'fonts/Roboto-Medium.ttf',\r\n *\t\titalics: 'fonts/Roboto-Italic.ttf',\r\n *\t\tbolditalics: 'fonts/Roboto-MediumItalic.ttf'\r\n *\t}\r\n * };\r\n *\r\n * var printer = new PdfPrinter(fontDescriptors);\r\n */\r\nfunction PdfPrinter(fontDescriptors) {\r\n\tthis.fontDescriptors = fontDescriptors;\r\n}\r\n\r\n/**\r\n * Executes layout engine for the specified document and renders it into a pdfkit document\r\n * ready to be saved.\r\n *\r\n * @param {Object} docDefinition document definition\r\n * @param {Object} docDefinition.content an array describing the pdf structure (for more information take a look at the examples in the /examples folder)\r\n * @param {Object} [docDefinition.defaultStyle] default (implicit) style definition\r\n * @param {Object} [docDefinition.styles] dictionary defining all styles which can be used in the document\r\n * @param {Object} [docDefinition.pageSize] page size (pdfkit units, A4 dimensions by default)\r\n * @param {Number} docDefinition.pageSize.width width\r\n * @param {Number} docDefinition.pageSize.height height\r\n * @param {Object} [docDefinition.pageMargins] page margins (pdfkit units)\r\n * @param {Number} docDefinition.maxPagesNumber maximum number of pages to render\r\n *\r\n * @example\r\n *\r\n * var docDefinition = {\r\n * \tinfo: {\r\n *\t\ttitle: 'awesome Document',\r\n *\t\tauthor: 'john doe',\r\n *\t\tsubject: 'subject of document',\r\n *\t\tkeywords: 'keywords for document',\r\n * \t},\r\n *\tcontent: [\r\n *\t\t'First paragraph',\r\n *\t\t'Second paragraph, this time a little bit longer',\r\n *\t\t{ text: 'Third paragraph, slightly bigger font size', fontSize: 20 },\r\n *\t\t{ text: 'Another paragraph using a named style', style: 'header' },\r\n *\t\t{ text: ['playing with ', 'inlines' ] },\r\n *\t\t{ text: ['and ', { text: 'restyling ', bold: true }, 'them'] },\r\n *\t],\r\n *\tstyles: {\r\n *\t\theader: { fontSize: 30, bold: true }\r\n *\t},\r\n *\tpatterns: {\r\n *\t\tstripe45d: {\r\n *\t\t\tboundingBox: [1, 1, 4, 4],\r\n *\t\t\txStep: 3,\r\n *\t\t\tyStep: 3,\r\n *\t\t\tpattern: '1 w 0 1 m 4 5 l s 2 0 m 5 3 l s'\r\n *\t\t}\r\n *\t}\r\n * };\r\n *\r\n * var pdfKitDoc = printer.createPdfKitDocument(docDefinition);\r\n *\r\n * pdfKitDoc.pipe(fs.createWriteStream('sample.pdf'));\r\n * pdfKitDoc.end();\r\n *\r\n * @return {Object} a pdfKit document object which can be saved or encode to data-url\r\n */\r\nPdfPrinter.prototype.createPdfKitDocument = function (docDefinition, options) {\r\n\toptions = options || {};\r\n\r\n\tdocDefinition.version = docDefinition.version || '1.3';\r\n\tdocDefinition.compress = isBoolean(docDefinition.compress) ? docDefinition.compress : true;\r\n\tdocDefinition.images = docDefinition.images || {};\r\n\tdocDefinition.pageMargins = ((docDefinition.pageMargins !== undefined) && (docDefinition.pageMargins !== null)) ? docDefinition.pageMargins : 40;\r\n\r\n\tvar pageSize = fixPageSize(docDefinition.pageSize, docDefinition.pageOrientation);\r\n\r\n\tvar pdfOptions = {\r\n\t\tsize: [pageSize.width, pageSize.height],\r\n\t\tpdfVersion: docDefinition.version,\r\n\t\tcompress: docDefinition.compress,\r\n\t\tuserPassword: docDefinition.userPassword,\r\n\t\townerPassword: docDefinition.ownerPassword,\r\n\t\tpermissions: docDefinition.permissions,\r\n\t\tfontLayoutCache: isBoolean(options.fontLayoutCache) ? options.fontLayoutCache : true,\r\n\t\tbufferPages: options.bufferPages || false,\r\n\t\tautoFirstPage: false,\r\n\t\tinfo: createMetadata(docDefinition),\r\n\t\tfont: null\r\n\t};\r\n\r\n\tthis.pdfKitDoc = PdfKitEngine.createPdfDocument(pdfOptions);\r\n\r\n\tthis.fontProvider = new FontProvider(this.fontDescriptors, this.pdfKitDoc);\r\n\r\n\tvar builder = new LayoutBuilder(pageSize, fixPageMargins(docDefinition.pageMargins), new ImageMeasure(this.pdfKitDoc, docDefinition.images), new SVGMeasure());\r\n\r\n\tregisterDefaultTableLayouts(builder);\r\n\tif (options.tableLayouts) {\r\n\t\tbuilder.registerTableLayouts(options.tableLayouts);\r\n\t}\r\n\r\n\tvar pages = builder.layoutDocument(docDefinition.content, this.fontProvider, docDefinition.styles || {}, docDefinition.defaultStyle || {\r\n\t\tfontSize: 12,\r\n\t\tfont: 'Roboto'\r\n\t}, docDefinition.background, docDefinition.header, docDefinition.footer, docDefinition.images, docDefinition.watermark, docDefinition.pageBreakBefore);\r\n\tvar maxNumberPages = docDefinition.maxPagesNumber || -1;\r\n\tif (isNumber(maxNumberPages) && maxNumberPages > -1) {\r\n\t\tpages = pages.slice(0, maxNumberPages);\r\n\t}\r\n\r\n\t// if pageSize.height is set to Infinity, calculate the actual height of the page that\r\n\t// was laid out using the height of each of the items in the page.\r\n\tif (pageSize.height === Infinity) {\r\n\t\tvar pageHeight = calculatePageHeight(pages, docDefinition.pageMargins);\r\n\t\tthis.pdfKitDoc.options.size = [pageSize.width, pageHeight];\r\n\t}\r\n\r\n\tvar patterns = createPatterns(docDefinition.patterns || {}, this.pdfKitDoc);\r\n\r\n\trenderPages(pages, this.fontProvider, this.pdfKitDoc, patterns, options.progressCallback);\r\n\r\n\tif (options.autoPrint) {\r\n\t\tvar printActionRef = this.pdfKitDoc.ref({\r\n\t\t\tType: 'Action',\r\n\t\t\tS: 'Named',\r\n\t\t\tN: 'Print'\r\n\t\t});\r\n\t\tthis.pdfKitDoc._root.data.OpenAction = printActionRef;\r\n\t\tprintActionRef.end();\r\n\t}\r\n\treturn this.pdfKitDoc;\r\n};\r\n\r\nfunction createMetadata(docDefinition) {\r\n\t// PDF standard has these properties reserved: Title, Author, Subject, Keywords,\r\n\t// Creator, Producer, CreationDate, ModDate, Trapped.\r\n\t// To keep the pdfmake api consistent, the info field are defined lowercase.\r\n\t// Custom properties don't contain a space.\r\n\tfunction standardizePropertyKey(key) {\r\n\t\tvar standardProperties = ['Title', 'Author', 'Subject', 'Keywords',\r\n\t\t\t'Creator', 'Producer', 'CreationDate', 'ModDate', 'Trapped'];\r\n\t\tvar standardizedKey = key.charAt(0).toUpperCase() + key.slice(1);\r\n\t\tif (standardProperties.indexOf(standardizedKey) !== -1) {\r\n\t\t\treturn standardizedKey;\r\n\t\t}\r\n\r\n\t\treturn key.replace(/\\s+/g, '');\r\n\t}\r\n\r\n\tvar info = {\r\n\t\tProducer: 'pdfmake',\r\n\t\tCreator: 'pdfmake'\r\n\t};\r\n\r\n\tif (docDefinition.info) {\r\n\t\tfor (var key in docDefinition.info) {\r\n\t\t\tvar value = docDefinition.info[key];\r\n\t\t\tif (value) {\r\n\t\t\t\tkey = standardizePropertyKey(key);\r\n\t\t\t\tinfo[key] = value;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn info;\r\n}\r\n\r\nfunction calculatePageHeight(pages, margins) {\r\n\tfunction getItemHeight(item) {\r\n\t\tif (isFunction(item.item.getHeight)) {\r\n\t\t\treturn item.item.getHeight();\r\n\t\t} else if (item.item._height) {\r\n\t\t\treturn item.item._height;\r\n\t\t} else if (item.type === 'vector') {\r\n\t\t\tif (typeof item.item.y1 !== 'undefined') {\r\n\t\t\t\treturn item.item.y1 > item.item.y2 ? item.item.y1 : item.item.y2;\r\n\t\t\t} else {\r\n\t\t\t\treturn item.item.h;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\t// TODO: add support for next item types\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t}\r\n\r\n\tfunction getBottomPosition(item) {\r\n\t\tvar top = item.item.y || 0;\r\n\t\tvar height = getItemHeight(item);\r\n\t\treturn top + height;\r\n\t}\r\n\r\n\tvar fixedMargins = fixPageMargins(margins || 40);\r\n\tvar height = fixedMargins.top;\r\n\r\n\tpages.forEach(function (page) {\r\n\t\tpage.items.forEach(function (item) {\r\n\t\t\tvar bottomPosition = getBottomPosition(item);\r\n\t\t\tif (bottomPosition > height) {\r\n\t\t\t\theight = bottomPosition;\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n\r\n\theight += fixedMargins.bottom;\r\n\r\n\treturn height;\r\n}\r\n\r\nfunction fixPageSize(pageSize, pageOrientation) {\r\n\tfunction isNeedSwapPageSizes(pageOrientation) {\r\n\t\tif (isString(pageOrientation)) {\r\n\t\t\tpageOrientation = pageOrientation.toLowerCase();\r\n\t\t\treturn ((pageOrientation === 'portrait') && (size.width > size.height)) ||\r\n\t\t\t\t((pageOrientation === 'landscape') && (size.width < size.height));\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\t// if pageSize.height is set to auto, set the height to infinity so there are no page breaks.\r\n\tif (pageSize && pageSize.height === 'auto') {\r\n\t\tpageSize.height = Infinity;\r\n\t}\r\n\r\n\tvar size = pageSize2widthAndHeight(pageSize || 'A4');\r\n\tif (isNeedSwapPageSizes(pageOrientation)) { // swap page sizes\r\n\t\tsize = { width: size.height, height: size.width };\r\n\t}\r\n\tsize.orientation = size.width > size.height ? 'landscape' : 'portrait';\r\n\treturn size;\r\n}\r\n\r\nfunction fixPageMargins(margin) {\r\n\tif (isNumber(margin)) {\r\n\t\tmargin = { left: margin, right: margin, top: margin, bottom: margin };\r\n\t} else if (isArray(margin)) {\r\n\t\tif (margin.length === 2) {\r\n\t\t\tmargin = { left: margin[0], top: margin[1], right: margin[0], bottom: margin[1] };\r\n\t\t} else if (margin.length === 4) {\r\n\t\t\tmargin = { left: margin[0], top: margin[1], right: margin[2], bottom: margin[3] };\r\n\t\t} else {\r\n\t\t\tthrow 'Invalid pageMargins definition';\r\n\t\t}\r\n\t}\r\n\r\n\treturn margin;\r\n}\r\n\r\nfunction registerDefaultTableLayouts(layoutBuilder) {\r\n\tlayoutBuilder.registerTableLayouts({\r\n\t\tnoBorders: {\r\n\t\t\thLineWidth: function (i) {\r\n\t\t\t\treturn 0;\r\n\t\t\t},\r\n\t\t\tvLineWidth: function (i) {\r\n\t\t\t\treturn 0;\r\n\t\t\t},\r\n\t\t\tpaddingLeft: function (i) {\r\n\t\t\t\treturn i && 4 || 0;\r\n\t\t\t},\r\n\t\t\tpaddingRight: function (i, node) {\r\n\t\t\t\treturn (i < node.table.widths.length - 1) ? 4 : 0;\r\n\t\t\t}\r\n\t\t},\r\n\t\theaderLineOnly: {\r\n\t\t\thLineWidth: function (i, node) {\r\n\t\t\t\tif (i === 0 || i === node.table.body.length) {\r\n\t\t\t\t\treturn 0;\r\n\t\t\t\t}\r\n\t\t\t\treturn (i === node.table.headerRows) ? 2 : 0;\r\n\t\t\t},\r\n\t\t\tvLineWidth: function (i) {\r\n\t\t\t\treturn 0;\r\n\t\t\t},\r\n\t\t\tpaddingLeft: function (i) {\r\n\t\t\t\treturn i === 0 ? 0 : 8;\r\n\t\t\t},\r\n\t\t\tpaddingRight: function (i, node) {\r\n\t\t\t\treturn (i === node.table.widths.length - 1) ? 0 : 8;\r\n\t\t\t}\r\n\t\t},\r\n\t\tlightHorizontalLines: {\r\n\t\t\thLineWidth: function (i, node) {\r\n\t\t\t\tif (i === 0 || i === node.table.body.length) {\r\n\t\t\t\t\treturn 0;\r\n\t\t\t\t}\r\n\t\t\t\treturn (i === node.table.headerRows) ? 2 : 1;\r\n\t\t\t},\r\n\t\t\tvLineWidth: function (i) {\r\n\t\t\t\treturn 0;\r\n\t\t\t},\r\n\t\t\thLineColor: function (i) {\r\n\t\t\t\treturn i === 1 ? 'black' : '#aaa';\r\n\t\t\t},\r\n\t\t\tpaddingLeft: function (i) {\r\n\t\t\t\treturn i === 0 ? 0 : 8;\r\n\t\t\t},\r\n\t\t\tpaddingRight: function (i, node) {\r\n\t\t\t\treturn (i === node.table.widths.length - 1) ? 0 : 8;\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n}\r\n\r\nfunction pageSize2widthAndHeight(pageSize) {\r\n\tif (isString(pageSize)) {\r\n\t\tvar size = sizes[pageSize.toUpperCase()];\r\n\t\tif (!size) {\r\n\t\t\tthrow 'Page size ' + pageSize + ' not recognized';\r\n\t\t}\r\n\t\treturn { width: size[0], height: size[1] };\r\n\t}\r\n\r\n\treturn pageSize;\r\n}\r\n\r\nfunction updatePageOrientationInOptions(currentPage, pdfKitDoc) {\r\n\tvar previousPageOrientation = pdfKitDoc.options.size[0] > pdfKitDoc.options.size[1] ? 'landscape' : 'portrait';\r\n\r\n\tif (currentPage.pageSize.orientation !== previousPageOrientation) {\r\n\t\tvar width = pdfKitDoc.options.size[0];\r\n\t\tvar height = pdfKitDoc.options.size[1];\r\n\t\tpdfKitDoc.options.size = [height, width];\r\n\t}\r\n}\r\n\r\nfunction renderPages(pages, fontProvider, pdfKitDoc, patterns, progressCallback) {\r\n\tpdfKitDoc._pdfMakePages = pages;\r\n\tpdfKitDoc.addPage();\r\n\r\n\tvar totalItems = 0;\r\n\tif (progressCallback) {\r\n\t\tpages.forEach(function (page) {\r\n\t\t\ttotalItems += page.items.length;\r\n\t\t});\r\n\t}\r\n\r\n\tvar renderedItems = 0;\r\n\tprogressCallback = progressCallback || function () {\r\n\t};\r\n\r\n\tfor (var i = 0; i < pages.length; i++) {\r\n\t\tif (i > 0) {\r\n\t\t\tupdatePageOrientationInOptions(pages[i], pdfKitDoc);\r\n\t\t\tpdfKitDoc.addPage(pdfKitDoc.options);\r\n\t\t}\r\n\r\n\t\tvar page = pages[i];\r\n\t\tfor (var ii = 0, il = page.items.length; ii < il; ii++) {\r\n\t\t\tvar item = page.items[ii];\r\n\t\t\tswitch (item.type) {\r\n\t\t\t\tcase 'vector':\r\n\t\t\t\t\trenderVector(item.item, patterns, pdfKitDoc);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'line':\r\n\t\t\t\t\trenderLine(item.item, item.item.x, item.item.y, patterns, pdfKitDoc);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'image':\r\n\t\t\t\t\trenderImage(item.item, item.item.x, item.item.y, pdfKitDoc);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'svg':\r\n\t\t\t\t\trenderSVG(item.item, item.item.x, item.item.y, pdfKitDoc, fontProvider);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'beginClip':\r\n\t\t\t\t\tbeginClip(item.item, pdfKitDoc);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'endClip':\r\n\t\t\t\t\tendClip(pdfKitDoc);\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\trenderedItems++;\r\n\t\t\tprogressCallback(renderedItems / totalItems);\r\n\t\t}\r\n\t\tif (page.watermark) {\r\n\t\t\trenderWatermark(page, pdfKitDoc);\r\n\t\t}\r\n\t}\r\n}\r\n\r\n/**\r\n * Shift the \"y\" height of the text baseline up or down (superscript or subscript,\r\n * respectively). The exact shift can / should be changed according to standard\r\n * conventions.\r\n *\r\n * @param {number} y\r\n * @param {any} inline\r\n */\r\nfunction offsetText(y, inline) {\r\n\tvar newY = y;\r\n\tif (inline.sup) {\r\n\t\tnewY -= inline.fontSize * 0.75;\r\n\t}\r\n\tif (inline.sub) {\r\n\t\tnewY += inline.fontSize * 0.35;\r\n\t}\r\n\treturn newY;\r\n}\r\n\r\nfunction renderLine(line, x, y, patterns, pdfKitDoc) {\r\n\tfunction preparePageNodeRefLine(_pageNodeRef, inline) {\r\n\t\tvar newWidth;\r\n\t\tvar diffWidth;\r\n\t\tvar textTools = new TextTools(null);\r\n\r\n\t\tif (isUndefined(_pageNodeRef.positions)) {\r\n\t\t\tthrow 'Page reference id not found';\r\n\t\t}\r\n\r\n\t\tvar pageNumber = _pageNodeRef.positions[0].pageNumber.toString();\r\n\r\n\t\tinline.text = pageNumber;\r\n\t\tnewWidth = textTools.widthOfString(inline.text, inline.font, inline.fontSize, inline.characterSpacing, inline.fontFeatures);\r\n\t\tdiffWidth = inline.width - newWidth;\r\n\t\tinline.width = newWidth;\r\n\r\n\t\tswitch (inline.alignment) {\r\n\t\t\tcase 'right':\r\n\t\t\t\tinline.x += diffWidth;\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'center':\r\n\t\t\t\tinline.x += diffWidth / 2;\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tif (line._pageNodeRef) {\r\n\t\tpreparePageNodeRefLine(line._pageNodeRef, line.inlines[0]);\r\n\t}\r\n\r\n\tx = x || 0;\r\n\ty = y || 0;\r\n\r\n\tvar lineHeight = line.getHeight();\r\n\tvar ascenderHeight = line.getAscenderHeight();\r\n\tvar descent = lineHeight - ascenderHeight;\r\n\r\n\ttextDecorator.drawBackground(line, x, y, patterns, pdfKitDoc);\r\n\r\n\t//TODO: line.optimizeInlines();\r\n\tfor (var i = 0, l = line.inlines.length; i < l; i++) {\r\n\t\tvar inline = line.inlines[i];\r\n\t\tvar shiftToBaseline = lineHeight - ((inline.font.ascender / 1000) * inline.fontSize) - descent;\r\n\r\n\t\tif (inline._pageNodeRef) {\r\n\t\t\tpreparePageNodeRefLine(inline._pageNodeRef, inline);\r\n\t\t}\r\n\r\n\t\tvar options = {\r\n\t\t\tlineBreak: false,\r\n\t\t\ttextWidth: inline.width,\r\n\t\t\tcharacterSpacing: inline.characterSpacing,\r\n\t\t\twordCount: 1,\r\n\t\t\tlink: inline.link\r\n\t\t};\r\n\r\n\t\tif (inline.linkToDestination) {\r\n\t\t\toptions.goTo = inline.linkToDestination;\r\n\t\t}\r\n\r\n\t\tif (line.id && i === 0) {\r\n\t\t\toptions.destination = line.id;\r\n\t\t}\r\n\r\n\t\tif (inline.fontFeatures) {\r\n\t\t\toptions.features = inline.fontFeatures;\r\n\t\t}\r\n\r\n\t\tvar opacity = isNumber(inline.opacity) ? inline.opacity : 1;\r\n\t\tpdfKitDoc.opacity(opacity);\r\n\t\tpdfKitDoc.fill(inline.color || 'black');\r\n\r\n\t\tpdfKitDoc._font = inline.font;\r\n\t\tpdfKitDoc.fontSize(inline.fontSize);\r\n\r\n\t\tvar shiftedY = offsetText(y + shiftToBaseline, inline);\r\n\t\tpdfKitDoc.text(inline.text, x + inline.x, shiftedY, options);\r\n\r\n\t\tif (inline.linkToPage) {\r\n\t\t\tvar _ref = pdfKitDoc.ref({ Type: 'Action', S: 'GoTo', D: [inline.linkToPage, 0, 0] }).end();\r\n\t\t\tpdfKitDoc.annotate(x + inline.x, shiftedY, inline.width, inline.height, {\r\n\t\t\t\tSubtype: 'Link',\r\n\t\t\t\tDest: [inline.linkToPage - 1, 'XYZ', null, null, null]\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t}\r\n\t// Decorations won't draw correctly for superscript\r\n\ttextDecorator.drawDecorations(line, x, y, pdfKitDoc);\r\n}\r\n\r\nfunction renderWatermark(page, pdfKitDoc) {\r\n\tvar watermark = page.watermark;\r\n\r\n\tpdfKitDoc.fill(watermark.color);\r\n\tpdfKitDoc.opacity(watermark.opacity);\r\n\r\n\tpdfKitDoc.save();\r\n\r\n\tpdfKitDoc.rotate(watermark.angle, { origin: [pdfKitDoc.page.width / 2, pdfKitDoc.page.height / 2] });\r\n\r\n\tvar x = pdfKitDoc.page.width / 2 - watermark._size.size.width / 2;\r\n\tvar y = pdfKitDoc.page.height / 2 - watermark._size.size.height / 2;\r\n\r\n\tpdfKitDoc._font = watermark.font;\r\n\tpdfKitDoc.fontSize(watermark.fontSize);\r\n\tpdfKitDoc.text(watermark.text, x, y, { lineBreak: false });\r\n\r\n\tpdfKitDoc.restore();\r\n}\r\n\r\nfunction renderVector(vector, patterns, pdfKitDoc) {\r\n\t//TODO: pdf optimization (there's no need to write all properties everytime)\r\n\tpdfKitDoc.lineWidth(vector.lineWidth || 1);\r\n\tif (vector.dash) {\r\n\t\tpdfKitDoc.dash(vector.dash.length, { space: vector.dash.space || vector.dash.length, phase: vector.dash.phase || 0 });\r\n\t} else {\r\n\t\tpdfKitDoc.undash();\r\n\t}\r\n\tpdfKitDoc.lineJoin(vector.lineJoin || 'miter');\r\n\tpdfKitDoc.lineCap(vector.lineCap || 'butt');\r\n\r\n\t//TODO: clipping\r\n\r\n\tvar gradient = null;\r\n\r\n\tswitch (vector.type) {\r\n\t\tcase 'ellipse':\r\n\t\t\tpdfKitDoc.ellipse(vector.x, vector.y, vector.r1, vector.r2);\r\n\r\n\t\t\tif (vector.linearGradient) {\r\n\t\t\t\tgradient = pdfKitDoc.linearGradient(vector.x - vector.r1, vector.y, vector.x + vector.r1, vector.y);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase 'rect':\r\n\t\t\tif (vector.r) {\r\n\t\t\t\tpdfKitDoc.roundedRect(vector.x, vector.y, vector.w, vector.h, vector.r);\r\n\t\t\t} else {\r\n\t\t\t\tpdfKitDoc.rect(vector.x, vector.y, vector.w, vector.h);\r\n\t\t\t}\r\n\r\n\t\t\tif (vector.linearGradient) {\r\n\t\t\t\tgradient = pdfKitDoc.linearGradient(vector.x, vector.y, vector.x + vector.w, vector.y);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase 'line':\r\n\t\t\tpdfKitDoc.moveTo(vector.x1, vector.y1);\r\n\t\t\tpdfKitDoc.lineTo(vector.x2, vector.y2);\r\n\t\t\tbreak;\r\n\t\tcase 'polyline':\r\n\t\t\tif (vector.points.length === 0) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tpdfKitDoc.moveTo(vector.points[0].x, vector.points[0].y);\r\n\t\t\tfor (var i = 1, l = vector.points.length; i < l; i++) {\r\n\t\t\t\tpdfKitDoc.lineTo(vector.points[i].x, vector.points[i].y);\r\n\t\t\t}\r\n\r\n\t\t\tif (vector.points.length > 1) {\r\n\t\t\t\tvar p1 = vector.points[0];\r\n\t\t\t\tvar pn = vector.points[vector.points.length - 1];\r\n\r\n\t\t\t\tif (vector.closePath || p1.x === pn.x && p1.y === pn.y) {\r\n\t\t\t\t\tpdfKitDoc.closePath();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase 'path':\r\n\t\t\tpdfKitDoc.path(vector.d);\r\n\t\t\tbreak;\r\n\t}\r\n\r\n\tif (vector.linearGradient && gradient) {\r\n\t\tvar step = 1 / (vector.linearGradient.length - 1);\r\n\r\n\t\tfor (var i = 0; i < vector.linearGradient.length; i++) {\r\n\t\t\tgradient.stop(i * step, vector.linearGradient[i]);\r\n\t\t}\r\n\r\n\t\tvector.color = gradient;\r\n\t}\r\n\r\n\tif (isPattern(vector.color)) {\r\n\t\tvector.color = getPattern(vector.color, patterns);\r\n\t}\r\n\r\n\tvar fillOpacity = isNumber(vector.fillOpacity) ? vector.fillOpacity : 1;\r\n\tvar strokeOpacity = isNumber(vector.strokeOpacity) ? vector.strokeOpacity : 1;\r\n\r\n\tif (vector.color && vector.lineColor) {\r\n\t\tpdfKitDoc.fillColor(vector.color, fillOpacity);\r\n\t\tpdfKitDoc.strokeColor(vector.lineColor, strokeOpacity);\r\n\t\tpdfKitDoc.fillAndStroke();\r\n\t} else if (vector.color) {\r\n\t\tpdfKitDoc.fillColor(vector.color, fillOpacity);\r\n\t\tpdfKitDoc.fill();\r\n\t} else {\r\n\t\tpdfKitDoc.strokeColor(vector.lineColor || 'black', strokeOpacity);\r\n\t\tpdfKitDoc.stroke();\r\n\t}\r\n}\r\n\r\nfunction renderImage(image, x, y, pdfKitDoc) {\r\n\tvar opacity = isNumber(image.opacity) ? image.opacity : 1;\r\n\tpdfKitDoc.opacity(opacity);\r\n\tif (image.cover) {\r\n\t\tvar align = image.cover.align || 'center';\r\n\t\tvar valign = image.cover.valign || 'center';\r\n\t\tvar width = image.cover.width ? image.cover.width : image.width;\r\n\t\tvar height = image.cover.height ? image.cover.height : image.height;\r\n\t\tpdfKitDoc.save();\r\n\t\tpdfKitDoc.rect(image.x, image.y, width, height).clip();\r\n\t\tpdfKitDoc.image(image.image, image.x, image.y, { cover: [width, height], align: align, valign: valign });\r\n\t\tpdfKitDoc.restore();\r\n\t} else {\r\n\t\tpdfKitDoc.image(image.image, image.x, image.y, { width: image._width, height: image._height });\r\n\t}\r\n\tif (image.link) {\r\n\t\tpdfKitDoc.link(image.x, image.y, image._width, image._height, image.link);\r\n\t}\r\n\tif (image.linkToPage) {\r\n\t\tpdfKitDoc.ref({ Type: 'Action', S: 'GoTo', D: [image.linkToPage, 0, 0] }).end();\r\n\t\tpdfKitDoc.annotate(image.x, image.y, image._width, image._height, { Subtype: 'Link', Dest: [image.linkToPage - 1, 'XYZ', null, null, null] });\r\n\t}\r\n\tif (image.linkToDestination) {\r\n\t\tpdfKitDoc.goTo(image.x, image.y, image._width, image._height, image.linkToDestination);\r\n\t}\r\n}\r\n\r\nfunction renderSVG(svg, x, y, pdfKitDoc, fontProvider) {\r\n\tvar options = Object.assign({ width: svg._width, height: svg._height, assumePt: true }, svg.options);\r\n\toptions.fontCallback = function (family, bold, italic) {\r\n\t\tvar fontsFamily = family.split(',').map(function (f) { return f.trim().replace(/('|\")/g, ''); });\r\n\t\tvar font = findFont(fontProvider.fonts, fontsFamily, svg.font || 'Roboto');\r\n\r\n\t\tvar fontFile = fontProvider.getFontFile(font, bold, italic);\r\n\t\tif (fontFile === null) {\r\n\t\t\tvar type = fontProvider.getFontType(bold, italic);\r\n\t\t\tthrow new Error('Font \\'' + font + '\\' in style \\'' + type + '\\' is not defined in the font section of the document definition.');\r\n\t\t}\r\n\r\n\t\treturn fontFile;\r\n\t};\r\n\r\n\tSVGtoPDF(pdfKitDoc, svg.svg, svg.x, svg.y, options);\r\n}\r\n\r\nfunction beginClip(rect, pdfKitDoc) {\r\n\tpdfKitDoc.save();\r\n\tpdfKitDoc.addContent('' + rect.x + ' ' + rect.y + ' ' + rect.width + ' ' + rect.height + ' re');\r\n\tpdfKitDoc.clip();\r\n}\r\n\r\nfunction endClip(pdfKitDoc) {\r\n\tpdfKitDoc.restore();\r\n}\r\n\r\nfunction createPatterns(patternDefinitions, pdfKitDoc) {\r\n\tvar patterns = {};\r\n\tObject.keys(patternDefinitions).forEach(function (p) {\r\n\t\tvar pattern = patternDefinitions[p];\r\n\t\tpatterns[p] = pdfKitDoc.pattern(pattern.boundingBox, pattern.xStep, pattern.yStep, pattern.pattern, pattern.colored);\r\n\t});\r\n\treturn patterns;\r\n}\r\n\r\nmodule.exports = PdfPrinter;\r\n", "/*eslint no-unused-vars: [\"error\", {\"args\": \"none\"}]*/\r\n/*eslint no-redeclare: \"off\"*/\r\n\r\n'use strict';\r\n/* qr.js -- QR code generator in Javascript (revision 2011-01-19)\r\n * Written by Kang Seonghoon <public+qrjs@mearie.org>.\r\n *\r\n * This source code is in the public domain; if your jurisdiction does not\r\n * recognize the public domain the terms of Creative Commons CC0 license\r\n * apply. In the other words, you can always do what you want.\r\n */\r\n\r\n\r\n// per-version information (cf. JIS X 0510:2004 pp. 30--36, 71)\r\n//\r\n// [0]: the degree of generator polynomial by ECC levels\r\n// [1]: # of code blocks by ECC levels\r\n// [2]: left-top positions of alignment patterns\r\n//\r\n// the number in this table (in particular, [0]) does not exactly match with\r\n// the numbers in the specficiation. see augumenteccs below for the reason.\r\nvar VERSIONS = [\r\n\tnull,\r\n\t[[10, 7, 17, 13], [1, 1, 1, 1], []],\r\n\t[[16, 10, 28, 22], [1, 1, 1, 1], [4, 16]],\r\n\t[[26, 15, 22, 18], [1, 1, 2, 2], [4, 20]],\r\n\t[[18, 20, 16, 26], [2, 1, 4, 2], [4, 24]],\r\n\t[[24, 26, 22, 18], [2, 1, 4, 4], [4, 28]],\r\n\t[[16, 18, 28, 24], [4, 2, 4, 4], [4, 32]],\r\n\t[[18, 20, 26, 18], [4, 2, 5, 6], [4, 20, 36]],\r\n\t[[22, 24, 26, 22], [4, 2, 6, 6], [4, 22, 40]],\r\n\t[[22, 30, 24, 20], [5, 2, 8, 8], [4, 24, 44]],\r\n\t[[26, 18, 28, 24], [5, 4, 8, 8], [4, 26, 48]],\r\n\t[[30, 20, 24, 28], [5, 4, 11, 8], [4, 28, 52]],\r\n\t[[22, 24, 28, 26], [8, 4, 11, 10], [4, 30, 56]],\r\n\t[[22, 26, 22, 24], [9, 4, 16, 12], [4, 32, 60]],\r\n\t[[24, 30, 24, 20], [9, 4, 16, 16], [4, 24, 44, 64]],\r\n\t[[24, 22, 24, 30], [10, 6, 18, 12], [4, 24, 46, 68]],\r\n\t[[28, 24, 30, 24], [10, 6, 16, 17], [4, 24, 48, 72]],\r\n\t[[28, 28, 28, 28], [11, 6, 19, 16], [4, 28, 52, 76]],\r\n\t[[26, 30, 28, 28], [13, 6, 21, 18], [4, 28, 54, 80]],\r\n\t[[26, 28, 26, 26], [14, 7, 25, 21], [4, 28, 56, 84]],\r\n\t[[26, 28, 28, 30], [16, 8, 25, 20], [4, 32, 60, 88]],\r\n\t[[26, 28, 30, 28], [17, 8, 25, 23], [4, 26, 48, 70, 92]],\r\n\t[[28, 28, 24, 30], [17, 9, 34, 23], [4, 24, 48, 72, 96]],\r\n\t[[28, 30, 30, 30], [18, 9, 30, 25], [4, 28, 52, 76, 100]],\r\n\t[[28, 30, 30, 30], [20, 10, 32, 27], [4, 26, 52, 78, 104]],\r\n\t[[28, 26, 30, 30], [21, 12, 35, 29], [4, 30, 56, 82, 108]],\r\n\t[[28, 28, 30, 28], [23, 12, 37, 34], [4, 28, 56, 84, 112]],\r\n\t[[28, 30, 30, 30], [25, 12, 40, 34], [4, 32, 60, 88, 116]],\r\n\t[[28, 30, 30, 30], [26, 13, 42, 35], [4, 24, 48, 72, 96, 120]],\r\n\t[[28, 30, 30, 30], [28, 14, 45, 38], [4, 28, 52, 76, 100, 124]],\r\n\t[[28, 30, 30, 30], [29, 15, 48, 40], [4, 24, 50, 76, 102, 128]],\r\n\t[[28, 30, 30, 30], [31, 16, 51, 43], [4, 28, 54, 80, 106, 132]],\r\n\t[[28, 30, 30, 30], [33, 17, 54, 45], [4, 32, 58, 84, 110, 136]],\r\n\t[[28, 30, 30, 30], [35, 18, 57, 48], [4, 28, 56, 84, 112, 140]],\r\n\t[[28, 30, 30, 30], [37, 19, 60, 51], [4, 32, 60, 88, 116, 144]],\r\n\t[[28, 30, 30, 30], [38, 19, 63, 53], [4, 28, 52, 76, 100, 124, 148]],\r\n\t[[28, 30, 30, 30], [40, 20, 66, 56], [4, 22, 48, 74, 100, 126, 152]],\r\n\t[[28, 30, 30, 30], [43, 21, 70, 59], [4, 26, 52, 78, 104, 130, 156]],\r\n\t[[28, 30, 30, 30], [45, 22, 74, 62], [4, 30, 56, 82, 108, 134, 160]],\r\n\t[[28, 30, 30, 30], [47, 24, 77, 65], [4, 24, 52, 80, 108, 136, 164]],\r\n\t[[28, 30, 30, 30], [49, 25, 81, 68], [4, 28, 56, 84, 112, 140, 168]]];\r\n\r\n// mode constants (cf. Table 2 in JIS X 0510:2004 p. 16)\r\nvar MODE_TERMINATOR = 0;\r\nvar MODE_NUMERIC = 1, MODE_ALPHANUMERIC = 2, MODE_OCTET = 4, MODE_KANJI = 8;\r\n\r\n// validation regexps\r\nvar NUMERIC_REGEXP = /^\\d*$/;\r\nvar ALPHANUMERIC_REGEXP = /^[A-Za-z0-9 $%*+\\-./:]*$/;\r\nvar ALPHANUMERIC_OUT_REGEXP = /^[A-Z0-9 $%*+\\-./:]*$/;\r\n\r\n// ECC levels (cf. Table 22 in JIS X 0510:2004 p. 45)\r\nvar ECCLEVEL_L = 1, ECCLEVEL_M = 0, ECCLEVEL_Q = 3, ECCLEVEL_H = 2;\r\n\r\n// GF(2^8)-to-integer mapping with a reducing polynomial x^8+x^4+x^3+x^2+1\r\n// invariant: GF256_MAP[GF256_INVMAP[i]] == i for all i in [1,256)\r\nvar GF256_MAP = [], GF256_INVMAP = [-1];\r\nfor (var i = 0, v = 1; i < 255; ++i) {\r\n\tGF256_MAP.push(v);\r\n\tGF256_INVMAP[v] = i;\r\n\tv = (v * 2) ^ (v >= 128 ? 0x11d : 0);\r\n}\r\n\r\n// generator polynomials up to degree 30\r\n// (should match with polynomials in JIS X 0510:2004 Appendix A)\r\n//\r\n// generator polynomial of degree K is product of (x-\\alpha^0), (x-\\alpha^1),\r\n// ..., (x-\\alpha^(K-1)). by convention, we omit the K-th coefficient (always 1)\r\n// from the result; also other coefficients are written in terms of the exponent\r\n// to \\alpha to avoid the redundant calculation. (see also calculateecc below.)\r\nvar GF256_GENPOLY = [[]];\r\nfor (var i = 0; i < 30; ++i) {\r\n\tvar prevpoly = GF256_GENPOLY[i], poly = [];\r\n\tfor (var j = 0; j <= i; ++j) {\r\n\t\tvar a = (j < i ? GF256_MAP[prevpoly[j]] : 0);\r\n\t\tvar b = GF256_MAP[(i + (prevpoly[j - 1] || 0)) % 255];\r\n\t\tpoly.push(GF256_INVMAP[a ^ b]);\r\n\t}\r\n\tGF256_GENPOLY.push(poly);\r\n}\r\n\r\n// alphanumeric character mapping (cf. Table 5 in JIS X 0510:2004 p. 19)\r\nvar ALPHANUMERIC_MAP = {};\r\nfor (var i = 0; i < 45; ++i) {\r\n\tALPHANUMERIC_MAP['0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:'.charAt(i)] = i;\r\n}\r\n\r\n// mask functions in terms of row # and column #\r\n// (cf. Table 20 in JIS X 0510:2004 p. 42)\r\n/*jshint unused: false */\r\nvar MASKFUNCS = [\r\n\tfunction (i, j) {\r\n\t\treturn (i + j) % 2 === 0;\r\n\t},\r\n\tfunction (i, j) {\r\n\t\treturn i % 2 === 0;\r\n\t},\r\n\tfunction (i, j) {\r\n\t\treturn j % 3 === 0;\r\n\t},\r\n\tfunction (i, j) {\r\n\t\treturn (i + j) % 3 === 0;\r\n\t},\r\n\tfunction (i, j) {\r\n\t\treturn (((i / 2) | 0) + ((j / 3) | 0)) % 2 === 0;\r\n\t},\r\n\tfunction (i, j) {\r\n\t\treturn (i * j) % 2 + (i * j) % 3 === 0;\r\n\t},\r\n\tfunction (i, j) {\r\n\t\treturn ((i * j) % 2 + (i * j) % 3) % 2 === 0;\r\n\t},\r\n\tfunction (i, j) {\r\n\t\treturn ((i + j) % 2 + (i * j) % 3) % 2 === 0;\r\n\t}];\r\n\r\n// returns true when the version information has to be embeded.\r\nvar needsverinfo = function (ver) {\r\n\treturn ver > 6;\r\n};\r\n\r\n// returns the size of entire QR code for given version.\r\nvar getsizebyver = function (ver) {\r\n\treturn 4 * ver + 17;\r\n};\r\n\r\n// returns the number of bits available for code words in this version.\r\nvar nfullbits = function (ver) {\r\n\t/*\r\n\t * |<--------------- n --------------->|\r\n\t * |        |<----- n-17 ---->|        |\r\n\t * +-------+                ///+-------+ ----\r\n\t * |       |                ///|       |    ^\r\n\t * |  9x9  |       @@@@@    ///|  9x8  |    |\r\n\t * |       | # # # @5x5@ # # # |       |    |\r\n\t * +-------+       @@@@@       +-------+    |\r\n\t *       #                               ---|\r\n\t *                                        ^ |\r\n\t *       #                                |\r\n\t *     @@@@@       @@@@@       @@@@@      | n\r\n\t *     @5x5@       @5x5@       @5x5@   n-17\r\n\t *     @@@@@       @@@@@       @@@@@      | |\r\n\t *       #                                | |\r\n\t * //////                                 v |\r\n\t * //////#                               ---|\r\n\t * +-------+       @@@@@       @@@@@        |\r\n\t * |       |       @5x5@       @5x5@        |\r\n\t * |  8x9  |       @@@@@       @@@@@        |\r\n\t * |       |                                v\r\n\t * +-------+                             ----\r\n\t *\r\n\t * when the entire code has n^2 modules and there are m^2-3 alignment\r\n\t * patterns, we have:\r\n\t * - 225 (= 9x9 + 9x8 + 8x9) modules for finder patterns and\r\n\t *   format information;\r\n\t * - 2n-34 (= 2(n-17)) modules for timing patterns;\r\n\t * - 36 (= 3x6 + 6x3) modules for version information, if any;\r\n\t * - 25m^2-75 (= (m^2-3)(5x5)) modules for alignment patterns\r\n\t *   if any, but 10m-20 (= 2(m-2)x5) of them overlaps with\r\n\t *   timing patterns.\r\n\t */\r\n\tvar v = VERSIONS[ver];\r\n\tvar nbits = 16 * ver * ver + 128 * ver + 64; // finder, timing and format info.\r\n\tif (needsverinfo(ver))\r\n\t\tnbits -= 36; // version information\r\n\tif (v[2].length) { // alignment patterns\r\n\t\tnbits -= 25 * v[2].length * v[2].length - 10 * v[2].length - 55;\r\n\t}\r\n\treturn nbits;\r\n};\r\n\r\n// returns the number of bits available for data portions (i.e. excludes ECC\r\n// bits but includes mode and length bits) in this version and ECC level.\r\nvar ndatabits = function (ver, ecclevel) {\r\n\tvar nbits = nfullbits(ver) & ~7; // no sub-octet code words\r\n\tvar v = VERSIONS[ver];\r\n\tnbits -= 8 * v[0][ecclevel] * v[1][ecclevel]; // ecc bits\r\n\treturn nbits;\r\n};\r\n\r\n// returns the number of bits required for the length of data.\r\n// (cf. Table 3 in JIS X 0510:2004 p. 16)\r\nvar ndatalenbits = function (ver, mode) {\r\n\tswitch (mode) {\r\n\t\tcase MODE_NUMERIC:\r\n\t\t\treturn (ver < 10 ? 10 : ver < 27 ? 12 : 14);\r\n\t\tcase MODE_ALPHANUMERIC:\r\n\t\t\treturn (ver < 10 ? 9 : ver < 27 ? 11 : 13);\r\n\t\tcase MODE_OCTET:\r\n\t\t\treturn (ver < 10 ? 8 : 16);\r\n\t\tcase MODE_KANJI:\r\n\t\t\treturn (ver < 10 ? 8 : ver < 27 ? 10 : 12);\r\n\t}\r\n};\r\n\r\n// returns the maximum length of data possible in given configuration.\r\nvar getmaxdatalen = function (ver, mode, ecclevel) {\r\n\tvar nbits = ndatabits(ver, ecclevel) - 4 - ndatalenbits(ver, mode); // 4 for mode bits\r\n\tswitch (mode) {\r\n\t\tcase MODE_NUMERIC:\r\n\t\t\treturn ((nbits / 10) | 0) * 3 + (nbits % 10 < 4 ? 0 : nbits % 10 < 7 ? 1 : 2);\r\n\t\tcase MODE_ALPHANUMERIC:\r\n\t\t\treturn ((nbits / 11) | 0) * 2 + (nbits % 11 < 6 ? 0 : 1);\r\n\t\tcase MODE_OCTET:\r\n\t\t\treturn (nbits / 8) | 0;\r\n\t\tcase MODE_KANJI:\r\n\t\t\treturn (nbits / 13) | 0;\r\n\t}\r\n};\r\n\r\n// checks if the given data can be encoded in given mode, and returns\r\n// the converted data for the further processing if possible. otherwise\r\n// returns null.\r\n//\r\n// this function does not check the length of data; it is a duty of\r\n// encode function below (as it depends on the version and ECC level too).\r\nvar validatedata = function (mode, data) {\r\n\tswitch (mode) {\r\n\t\tcase MODE_NUMERIC:\r\n\t\t\tif (!data.match(NUMERIC_REGEXP))\r\n\t\t\t\treturn null;\r\n\t\t\treturn data;\r\n\r\n\t\tcase MODE_ALPHANUMERIC:\r\n\t\t\tif (!data.match(ALPHANUMERIC_REGEXP))\r\n\t\t\t\treturn null;\r\n\t\t\treturn data.toUpperCase();\r\n\r\n\t\tcase MODE_OCTET:\r\n\t\t\tif (typeof data === 'string') { // encode as utf-8 string\r\n\t\t\t\tvar newdata = [];\r\n\t\t\t\tfor (var i = 0; i < data.length; ++i) {\r\n\t\t\t\t\tvar ch = data.charCodeAt(i);\r\n\t\t\t\t\tif (ch < 0x80) {\r\n\t\t\t\t\t\tnewdata.push(ch);\r\n\t\t\t\t\t} else if (ch < 0x800) {\r\n\t\t\t\t\t\tnewdata.push(0xc0 | (ch >> 6),\r\n\t\t\t\t\t\t\t0x80 | (ch & 0x3f));\r\n\t\t\t\t\t} else if (ch < 0x10000) {\r\n\t\t\t\t\t\tnewdata.push(0xe0 | (ch >> 12),\r\n\t\t\t\t\t\t\t0x80 | ((ch >> 6) & 0x3f),\r\n\t\t\t\t\t\t\t0x80 | (ch & 0x3f));\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tnewdata.push(0xf0 | (ch >> 18),\r\n\t\t\t\t\t\t\t0x80 | ((ch >> 12) & 0x3f),\r\n\t\t\t\t\t\t\t0x80 | ((ch >> 6) & 0x3f),\r\n\t\t\t\t\t\t\t0x80 | (ch & 0x3f));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn newdata;\r\n\t\t\t} else {\r\n\t\t\t\treturn data;\r\n\t\t\t}\r\n\t}\r\n};\r\n\r\n// returns the code words (sans ECC bits) for given data and configurations.\r\n// requires data to be preprocessed by validatedata. no length check is\r\n// performed, and everything has to be checked before calling this function.\r\nvar encode = function (ver, mode, data, maxbuflen) {\r\n\tvar buf = [];\r\n\tvar bits = 0, remaining = 8;\r\n\tvar datalen = data.length;\r\n\r\n\t// this function is intentionally no-op when n=0.\r\n\tvar pack = function (x, n) {\r\n\t\tif (n >= remaining) {\r\n\t\t\tbuf.push(bits | (x >> (n -= remaining)));\r\n\t\t\twhile (n >= 8)\r\n\t\t\t\tbuf.push((x >> (n -= 8)) & 255);\r\n\t\t\tbits = 0;\r\n\t\t\tremaining = 8;\r\n\t\t}\r\n\t\tif (n > 0)\r\n\t\t\tbits |= (x & ((1 << n) - 1)) << (remaining -= n);\r\n\t};\r\n\r\n\tvar nlenbits = ndatalenbits(ver, mode);\r\n\tpack(mode, 4);\r\n\tpack(datalen, nlenbits);\r\n\r\n\tswitch (mode) {\r\n\t\tcase MODE_NUMERIC:\r\n\t\t\tfor (var i = 2; i < datalen; i += 3) {\r\n\t\t\t\tpack(parseInt(data.substring(i - 2, i + 1), 10), 10);\r\n\t\t\t}\r\n\t\t\tpack(parseInt(data.substring(i - 2), 10), [0, 4, 7][datalen % 3]);\r\n\t\t\tbreak;\r\n\r\n\t\tcase MODE_ALPHANUMERIC:\r\n\t\t\tfor (var i = 1; i < datalen; i += 2) {\r\n\t\t\t\tpack(ALPHANUMERIC_MAP[data.charAt(i - 1)] * 45 +\r\n\t\t\t\t\tALPHANUMERIC_MAP[data.charAt(i)], 11);\r\n\t\t\t}\r\n\t\t\tif (datalen % 2 == 1) {\r\n\t\t\t\tpack(ALPHANUMERIC_MAP[data.charAt(i - 1)], 6);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\tcase MODE_OCTET:\r\n\t\t\tfor (var i = 0; i < datalen; ++i) {\r\n\t\t\t\tpack(data[i], 8);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t}\r\n\r\n\t// final bits. it is possible that adding terminator causes the buffer\r\n\t// to overflow, but then the buffer truncated to the maximum size will\r\n\t// be valid as the truncated terminator mode bits and padding is\r\n\t// identical in appearance (cf. JIS X 0510:2004 sec 8.4.8).\r\n\tpack(MODE_TERMINATOR, 4);\r\n\tif (remaining < 8)\r\n\t\tbuf.push(bits);\r\n\r\n\t// the padding to fill up the remaining space. we should not add any\r\n\t// words when the overflow already occurred.\r\n\twhile (buf.length + 1 < maxbuflen)\r\n\t\tbuf.push(0xec, 0x11);\r\n\tif (buf.length < maxbuflen)\r\n\t\tbuf.push(0xec);\r\n\treturn buf;\r\n};\r\n\r\n// calculates ECC code words for given code words and generator polynomial.\r\n//\r\n// this is quite similar to CRC calculation as both Reed-Solomon and CRC use\r\n// the certain kind of cyclic codes, which is effectively the division of\r\n// zero-augumented polynomial by the generator polynomial. the only difference\r\n// is that Reed-Solomon uses GF(2^8), instead of CRC's GF(2), and Reed-Solomon\r\n// uses the different generator polynomial than CRC's.\r\nvar calculateecc = function (poly, genpoly) {\r\n\tvar modulus = poly.slice(0);\r\n\tvar polylen = poly.length, genpolylen = genpoly.length;\r\n\tfor (var i = 0; i < genpolylen; ++i)\r\n\t\tmodulus.push(0);\r\n\tfor (var i = 0; i < polylen; ) {\r\n\t\tvar quotient = GF256_INVMAP[modulus[i++]];\r\n\t\tif (quotient >= 0) {\r\n\t\t\tfor (var j = 0; j < genpolylen; ++j) {\r\n\t\t\t\tmodulus[i + j] ^= GF256_MAP[(quotient + genpoly[j]) % 255];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn modulus.slice(polylen);\r\n};\r\n\r\n// auguments ECC code words to given code words. the resulting words are\r\n// ready to be encoded in the matrix.\r\n//\r\n// the much of actual augumenting procedure follows JIS X 0510:2004 sec 8.7.\r\n// the code is simplified using the fact that the size of each code & ECC\r\n// blocks is almost same; for example, when we have 4 blocks and 46 data words\r\n// the number of code words in those blocks are 11, 11, 12, 12 respectively.\r\nvar augumenteccs = function (poly, nblocks, genpoly) {\r\n\tvar subsizes = [];\r\n\tvar subsize = (poly.length / nblocks) | 0, subsize0 = 0;\r\n\tvar pivot = nblocks - poly.length % nblocks;\r\n\tfor (var i = 0; i < pivot; ++i) {\r\n\t\tsubsizes.push(subsize0);\r\n\t\tsubsize0 += subsize;\r\n\t}\r\n\tfor (var i = pivot; i < nblocks; ++i) {\r\n\t\tsubsizes.push(subsize0);\r\n\t\tsubsize0 += subsize + 1;\r\n\t}\r\n\tsubsizes.push(subsize0);\r\n\r\n\tvar eccs = [];\r\n\tfor (var i = 0; i < nblocks; ++i) {\r\n\t\teccs.push(calculateecc(poly.slice(subsizes[i], subsizes[i + 1]), genpoly));\r\n\t}\r\n\r\n\tvar result = [];\r\n\tvar nitemsperblock = (poly.length / nblocks) | 0;\r\n\tfor (var i = 0; i < nitemsperblock; ++i) {\r\n\t\tfor (var j = 0; j < nblocks; ++j) {\r\n\t\t\tresult.push(poly[subsizes[j] + i]);\r\n\t\t}\r\n\t}\r\n\tfor (var j = pivot; j < nblocks; ++j) {\r\n\t\tresult.push(poly[subsizes[j + 1] - 1]);\r\n\t}\r\n\tfor (var i = 0; i < genpoly.length; ++i) {\r\n\t\tfor (var j = 0; j < nblocks; ++j) {\r\n\t\t\tresult.push(eccs[j][i]);\r\n\t\t}\r\n\t}\r\n\treturn result;\r\n};\r\n\r\n// auguments BCH(p+q,q) code to the polynomial over GF(2), given the proper\r\n// genpoly. the both input and output are in binary numbers, and unlike\r\n// calculateecc genpoly should include the 1 bit for the highest degree.\r\n//\r\n// actual polynomials used for this procedure are as follows:\r\n// - p=10, q=5, genpoly=x^10+x^8+x^5+x^4+x^2+x+1 (JIS X 0510:2004 Appendix C)\r\n// - p=18, q=6, genpoly=x^12+x^11+x^10+x^9+x^8+x^5+x^2+1 (ibid. Appendix D)\r\nvar augumentbch = function (poly, p, genpoly, q) {\r\n\tvar modulus = poly << q;\r\n\tfor (var i = p - 1; i >= 0; --i) {\r\n\t\tif ((modulus >> (q + i)) & 1)\r\n\t\t\tmodulus ^= genpoly << i;\r\n\t}\r\n\treturn (poly << q) | modulus;\r\n};\r\n\r\n// creates the base matrix for given version. it returns two matrices, one of\r\n// them is the actual one and the another represents the \"reserved\" portion\r\n// (e.g. finder and timing patterns) of the matrix.\r\n//\r\n// some entries in the matrix may be undefined, rather than 0 or 1. this is\r\n// intentional (no initialization needed!), and putdata below will fill\r\n// the remaining ones.\r\nvar makebasematrix = function (ver) {\r\n\tvar v = VERSIONS[ver], n = getsizebyver(ver);\r\n\tvar matrix = [], reserved = [];\r\n\tfor (var i = 0; i < n; ++i) {\r\n\t\tmatrix.push([]);\r\n\t\treserved.push([]);\r\n\t}\r\n\r\n\tvar blit = function (y, x, h, w, bits) {\r\n\t\tfor (var i = 0; i < h; ++i) {\r\n\t\t\tfor (var j = 0; j < w; ++j) {\r\n\t\t\t\tmatrix[y + i][x + j] = (bits[i] >> j) & 1;\r\n\t\t\t\treserved[y + i][x + j] = 1;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t// finder patterns and a part of timing patterns\r\n\t// will also mark the format information area (not yet written) as reserved.\r\n\tblit(0, 0, 9, 9, [0x7f, 0x41, 0x5d, 0x5d, 0x5d, 0x41, 0x17f, 0x00, 0x40]);\r\n\tblit(n - 8, 0, 8, 9, [0x100, 0x7f, 0x41, 0x5d, 0x5d, 0x5d, 0x41, 0x7f]);\r\n\tblit(0, n - 8, 9, 8, [0xfe, 0x82, 0xba, 0xba, 0xba, 0x82, 0xfe, 0x00, 0x00]);\r\n\r\n\t// the rest of timing patterns\r\n\tfor (var i = 9; i < n - 8; ++i) {\r\n\t\tmatrix[6][i] = matrix[i][6] = ~i & 1;\r\n\t\treserved[6][i] = reserved[i][6] = 1;\r\n\t}\r\n\r\n\t// alignment patterns\r\n\tvar aligns = v[2], m = aligns.length;\r\n\tfor (var i = 0; i < m; ++i) {\r\n\t\tvar minj = (i === 0 || i === m - 1 ? 1 : 0), maxj = (i === 0 ? m - 1 : m);\r\n\t\tfor (var j = minj; j < maxj; ++j) {\r\n\t\t\tblit(aligns[i], aligns[j], 5, 5, [0x1f, 0x11, 0x15, 0x11, 0x1f]);\r\n\t\t}\r\n\t}\r\n\r\n\t// version information\r\n\tif (needsverinfo(ver)) {\r\n\t\tvar code = augumentbch(ver, 6, 0x1f25, 12);\r\n\t\tvar k = 0;\r\n\t\tfor (var i = 0; i < 6; ++i) {\r\n\t\t\tfor (var j = 0; j < 3; ++j) {\r\n\t\t\t\tmatrix[i][(n - 11) + j] = matrix[(n - 11) + j][i] = (code >> k++) & 1;\r\n\t\t\t\treserved[i][(n - 11) + j] = reserved[(n - 11) + j][i] = 1;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn {matrix: matrix, reserved: reserved};\r\n};\r\n\r\n// fills the data portion (i.e. unmarked in reserved) of the matrix with given\r\n// code words. the size of code words should be no more than available bits,\r\n// and remaining bits are padded to 0 (cf. JIS X 0510:2004 sec 8.7.3).\r\nvar putdata = function (matrix, reserved, buf) {\r\n\tvar n = matrix.length;\r\n\tvar k = 0, dir = -1;\r\n\tfor (var i = n - 1; i >= 0; i -= 2) {\r\n\t\tif (i == 6)\r\n\t\t\t--i; // skip the entire timing pattern column\r\n\t\tvar jj = (dir < 0 ? n - 1 : 0);\r\n\t\tfor (var j = 0; j < n; ++j) {\r\n\t\t\tfor (var ii = i; ii > i - 2; --ii) {\r\n\t\t\t\tif (!reserved[jj][ii]) {\r\n\t\t\t\t\t// may overflow, but (undefined >> x)\r\n\t\t\t\t\t// is 0 so it will auto-pad to zero.\r\n\t\t\t\t\tmatrix[jj][ii] = (buf[k >> 3] >> (~k & 7)) & 1;\r\n\t\t\t\t\t++k;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tjj += dir;\r\n\t\t}\r\n\t\tdir = -dir;\r\n\t}\r\n\treturn matrix;\r\n};\r\n\r\n// XOR-masks the data portion of the matrix. repeating the call with the same\r\n// arguments will revert the prior call (convenient in the matrix evaluation).\r\nvar maskdata = function (matrix, reserved, mask) {\r\n\tvar maskf = MASKFUNCS[mask];\r\n\tvar n = matrix.length;\r\n\tfor (var i = 0; i < n; ++i) {\r\n\t\tfor (var j = 0; j < n; ++j) {\r\n\t\t\tif (!reserved[i][j])\r\n\t\t\t\tmatrix[i][j] ^= maskf(i, j);\r\n\t\t}\r\n\t}\r\n\treturn matrix;\r\n};\r\n\r\n// puts the format information.\r\nvar putformatinfo = function (matrix, reserved, ecclevel, mask) {\r\n\tvar n = matrix.length;\r\n\tvar code = augumentbch((ecclevel << 3) | mask, 5, 0x537, 10) ^ 0x5412;\r\n\tfor (var i = 0; i < 15; ++i) {\r\n\t\tvar r = [0, 1, 2, 3, 4, 5, 7, 8, n - 7, n - 6, n - 5, n - 4, n - 3, n - 2, n - 1][i];\r\n\t\tvar c = [n - 1, n - 2, n - 3, n - 4, n - 5, n - 6, n - 7, n - 8, 7, 5, 4, 3, 2, 1, 0][i];\r\n\t\tmatrix[r][8] = matrix[8][c] = (code >> i) & 1;\r\n\t\t// we don't have to mark those bits reserved; always done\r\n\t\t// in makebasematrix above.\r\n\t}\r\n\treturn matrix;\r\n};\r\n\r\n// evaluates the resulting matrix and returns the score (lower is better).\r\n// (cf. JIS X 0510:2004 sec 8.8.2)\r\n//\r\n// the evaluation procedure tries to avoid the problematic patterns naturally\r\n// occuring from the original matrix. for example, it penaltizes the patterns\r\n// which just look like the finder pattern which will confuse the decoder.\r\n// we choose the mask which results in the lowest score among 8 possible ones.\r\n//\r\n// note: zxing seems to use the same procedure and in many cases its choice\r\n// agrees to ours, but sometimes it does not. practically it doesn't matter.\r\nvar evaluatematrix = function (matrix) {\r\n\t// N1+(k-5) points for each consecutive row of k same-colored modules,\r\n\t// where k >= 5. no overlapping row counts.\r\n\tvar PENALTY_CONSECUTIVE = 3;\r\n\t// N2 points for each 2x2 block of same-colored modules.\r\n\t// overlapping block does count.\r\n\tvar PENALTY_TWOBYTWO = 3;\r\n\t// N3 points for each pattern with >4W:1B:1W:3B:1W:1B or\r\n\t// 1B:1W:3B:1W:1B:>4W, or their multiples (e.g. highly unlikely,\r\n\t// but 13W:3B:3W:9B:3W:3B counts).\r\n\tvar PENALTY_FINDERLIKE = 40;\r\n\t// N4*k points for every (5*k)% deviation from 50% black density.\r\n\t// i.e. k=1 for 55~60% and 40~45%, k=2 for 60~65% and 35~40%, etc.\r\n\tvar PENALTY_DENSITY = 10;\r\n\r\n\tvar evaluategroup = function (groups) { // assumes [W,B,W,B,W,...,B,W]\r\n\t\tvar score = 0;\r\n\t\tfor (var i = 0; i < groups.length; ++i) {\r\n\t\t\tif (groups[i] >= 5)\r\n\t\t\t\tscore += PENALTY_CONSECUTIVE + (groups[i] - 5);\r\n\t\t}\r\n\t\tfor (var i = 5; i < groups.length; i += 2) {\r\n\t\t\tvar p = groups[i];\r\n\t\t\tif (groups[i - 1] == p && groups[i - 2] == 3 * p && groups[i - 3] == p &&\r\n\t\t\t\tgroups[i - 4] == p && (groups[i - 5] >= 4 * p || groups[i + 1] >= 4 * p)) {\r\n\t\t\t\t// this part differs from zxing...\r\n\t\t\t\tscore += PENALTY_FINDERLIKE;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn score;\r\n\t};\r\n\r\n\tvar n = matrix.length;\r\n\tvar score = 0, nblacks = 0;\r\n\tfor (var i = 0; i < n; ++i) {\r\n\t\tvar row = matrix[i];\r\n\t\tvar groups;\r\n\r\n\t\t// evaluate the current row\r\n\t\tgroups = [0]; // the first empty group of white\r\n\t\tfor (var j = 0; j < n; ) {\r\n\t\t\tvar k;\r\n\t\t\tfor (k = 0; j < n && row[j]; ++k)\r\n\t\t\t\t++j;\r\n\t\t\tgroups.push(k);\r\n\t\t\tfor (k = 0; j < n && !row[j]; ++k)\r\n\t\t\t\t++j;\r\n\t\t\tgroups.push(k);\r\n\t\t}\r\n\t\tscore += evaluategroup(groups);\r\n\r\n\t\t// evaluate the current column\r\n\t\tgroups = [0];\r\n\t\tfor (var j = 0; j < n; ) {\r\n\t\t\tvar k;\r\n\t\t\tfor (k = 0; j < n && matrix[j][i]; ++k)\r\n\t\t\t\t++j;\r\n\t\t\tgroups.push(k);\r\n\t\t\tfor (k = 0; j < n && !matrix[j][i]; ++k)\r\n\t\t\t\t++j;\r\n\t\t\tgroups.push(k);\r\n\t\t}\r\n\t\tscore += evaluategroup(groups);\r\n\r\n\t\t// check the 2x2 box and calculate the density\r\n\t\tvar nextrow = matrix[i + 1] || [];\r\n\t\tnblacks += row[0];\r\n\t\tfor (var j = 1; j < n; ++j) {\r\n\t\t\tvar p = row[j];\r\n\t\t\tnblacks += p;\r\n\t\t\t// at least comparison with next row should be strict...\r\n\t\t\tif (row[j - 1] == p && nextrow[j] === p && nextrow[j - 1] === p) {\r\n\t\t\t\tscore += PENALTY_TWOBYTWO;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tscore += PENALTY_DENSITY * ((Math.abs(nblacks / n / n - 0.5) / 0.05) | 0);\r\n\treturn score;\r\n};\r\n\r\n// returns the fully encoded QR code matrix which contains given data.\r\n// it also chooses the best mask automatically when mask is -1.\r\nvar generate = function (data, ver, mode, ecclevel, mask) {\r\n\tvar v = VERSIONS[ver];\r\n\tvar buf = encode(ver, mode, data, ndatabits(ver, ecclevel) >> 3);\r\n\tbuf = augumenteccs(buf, v[1][ecclevel], GF256_GENPOLY[v[0][ecclevel]]);\r\n\r\n\tvar result = makebasematrix(ver);\r\n\tvar matrix = result.matrix, reserved = result.reserved;\r\n\tputdata(matrix, reserved, buf);\r\n\r\n\tif (mask < 0) {\r\n\t\t// find the best mask\r\n\t\tmaskdata(matrix, reserved, 0);\r\n\t\tputformatinfo(matrix, reserved, ecclevel, 0);\r\n\t\tvar bestmask = 0, bestscore = evaluatematrix(matrix);\r\n\t\tmaskdata(matrix, reserved, 0);\r\n\t\tfor (mask = 1; mask < 8; ++mask) {\r\n\t\t\tmaskdata(matrix, reserved, mask);\r\n\t\t\tputformatinfo(matrix, reserved, ecclevel, mask);\r\n\t\t\tvar score = evaluatematrix(matrix);\r\n\t\t\tif (bestscore > score) {\r\n\t\t\t\tbestscore = score;\r\n\t\t\t\tbestmask = mask;\r\n\t\t\t}\r\n\t\t\tmaskdata(matrix, reserved, mask);\r\n\t\t}\r\n\t\tmask = bestmask;\r\n\t}\r\n\r\n\tmaskdata(matrix, reserved, mask);\r\n\tputformatinfo(matrix, reserved, ecclevel, mask);\r\n\treturn matrix;\r\n};\r\n\r\n// the public interface is trivial; the options available are as follows:\r\n//\r\n// - version: an integer in [1,40]. when omitted (or -1) the smallest possible\r\n//   version is chosen.\r\n// - mode: one of 'numeric', 'alphanumeric', 'octet'. when omitted the smallest\r\n//   possible mode is chosen.\r\n// - eccLevel: one of 'L', 'M', 'Q', 'H'. defaults to 'L'.\r\n// - mask: an integer in [0,7]. when omitted (or -1) the best mask is chosen.\r\n//\r\n\r\nfunction generateFrame(data, options) {\r\n\tvar MODES = {'numeric': MODE_NUMERIC, 'alphanumeric': MODE_ALPHANUMERIC,\r\n\t\t'octet': MODE_OCTET};\r\n\tvar ECCLEVELS = {'L': ECCLEVEL_L, 'M': ECCLEVEL_M, 'Q': ECCLEVEL_Q,\r\n\t\t'H': ECCLEVEL_H};\r\n\r\n\toptions = options || {};\r\n\tvar ver = options.version || -1;\r\n\tvar ecclevel = ECCLEVELS[(options.eccLevel || 'L').toUpperCase()];\r\n\tvar mode = options.mode ? MODES[options.mode.toLowerCase()] : -1;\r\n\tvar mask = 'mask' in options ? options.mask : -1;\r\n\r\n\tif (mode < 0) {\r\n\t\tif (typeof data === 'string') {\r\n\t\t\tif (data.match(NUMERIC_REGEXP)) {\r\n\t\t\t\tmode = MODE_NUMERIC;\r\n\t\t\t} else if (data.match(ALPHANUMERIC_OUT_REGEXP)) {\r\n\t\t\t\t// while encode supports case-insensitive encoding, we restrict the data to be uppercased when auto-selecting the mode.\r\n\t\t\t\tmode = MODE_ALPHANUMERIC;\r\n\t\t\t} else {\r\n\t\t\t\tmode = MODE_OCTET;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tmode = MODE_OCTET;\r\n\t\t}\r\n\t} else if (!(mode == MODE_NUMERIC || mode == MODE_ALPHANUMERIC ||\r\n\t\tmode == MODE_OCTET)) {\r\n\t\tthrow 'invalid or unsupported mode';\r\n\t}\r\n\r\n\tdata = validatedata(mode, data);\r\n\tif (data === null)\r\n\t\tthrow 'invalid data format';\r\n\r\n\tif (ecclevel < 0 || ecclevel > 3)\r\n\t\tthrow 'invalid ECC level';\r\n\r\n\tif (ver < 0) {\r\n\t\tfor (ver = 1; ver <= 40; ++ver) {\r\n\t\t\tif (data.length <= getmaxdatalen(ver, mode, ecclevel))\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t\tif (ver > 40)\r\n\t\t\tthrow 'too large data for the Qr format';\r\n\t} else if (ver < 1 || ver > 40) {\r\n\t\tthrow 'invalid Qr version! should be between 1 and 40';\r\n\t}\r\n\r\n\tif (mask != -1 && (mask < 0 || mask > 8))\r\n\t\tthrow 'invalid mask';\r\n\t//console.log('version:', ver, 'mode:', mode, 'ECC:', ecclevel, 'mask:', mask )\r\n\treturn generate(data, ver, mode, ecclevel, mask);\r\n}\r\n\r\n\r\n// options\r\n// - modulesize: a number. this is a size of each modules in pixels, and\r\n//   defaults to 5px.\r\n// - margin: a number. this is a size of margin in *modules*, and defaults to\r\n//   4 (white modules). the specficiation mandates the margin no less than 4\r\n//   modules, so it is better not to alter this value unless you know what\r\n//   you're doing.\r\nfunction buildCanvas(data, options) {\r\n\r\n\tvar canvas = [];\r\n\tvar background = options.background || '#fff';\r\n\tvar foreground = options.foreground || '#000';\r\n\t//var margin = options.margin || 4;\r\n\tvar matrix = generateFrame(data, options);\r\n\tvar n = matrix.length;\r\n\tvar modSize = Math.floor(options.fit ? options.fit / n : 5);\r\n\tvar size = n * modSize;\r\n\r\n\tcanvas.push({\r\n\t\ttype: 'rect',\r\n\t\tx: 0, y: 0, w: size, h: size, lineWidth: 0, color: background\r\n\t});\r\n\r\n\tfor (var i = 0; i < n; ++i) {\r\n\t\tfor (var j = 0; j < n; ++j) {\r\n\t\t\tif (matrix[i][j]) {\r\n\t\t\t\tcanvas.push({\r\n\t\t\t\t\ttype: 'rect',\r\n\t\t\t\t\tx: modSize * j,\r\n\t\t\t\t\ty: modSize * i,\r\n\t\t\t\t\tw: modSize,\r\n\t\t\t\t\th: modSize,\r\n\t\t\t\t\tlineWidth: 0,\r\n\t\t\t\t\tcolor: foreground\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn {\r\n\t\tcanvas: canvas,\r\n\t\tsize: size\r\n\t};\r\n\r\n}\r\n\r\nfunction measure(node) {\r\n\tvar cd = buildCanvas(node.qr, node);\r\n\tnode._canvas = cd.canvas;\r\n\tnode._width = node._height = node._minWidth = node._maxWidth = node._minHeight = node._maxHeight = cd.size;\r\n\treturn node;\r\n}\r\n\r\nmodule.exports = {\r\n\tmeasure: measure\r\n};", "'use strict';\r\n\r\nmodule.exports = {\r\n\t'4A0': [4767.87, 6740.79],\r\n\t'2A0': [3370.39, 4767.87],\r\n\tA0: [2383.94, 3370.39],\r\n\tA1: [1683.78, 2383.94],\r\n\tA2: [1190.55, 1683.78],\r\n\tA3: [841.89, 1190.55],\r\n\tA4: [595.28, 841.89],\r\n\tA5: [419.53, 595.28],\r\n\tA6: [297.64, 419.53],\r\n\tA7: [209.76, 297.64],\r\n\tA8: [147.40, 209.76],\r\n\tA9: [104.88, 147.40],\r\n\tA10: [73.70, 104.88],\r\n\tB0: [2834.65, 4008.19],\r\n\tB1: [2004.09, 2834.65],\r\n\tB2: [1417.32, 2004.09],\r\n\tB3: [1000.63, 1417.32],\r\n\tB4: [708.66, 1000.63],\r\n\tB5: [498.90, 708.66],\r\n\tB6: [354.33, 498.90],\r\n\tB7: [249.45, 354.33],\r\n\tB8: [175.75, 249.45],\r\n\tB9: [124.72, 175.75],\r\n\tB10: [87.87, 124.72],\r\n\tC0: [2599.37, 3676.54],\r\n\tC1: [1836.85, 2599.37],\r\n\tC2: [1298.27, 1836.85],\r\n\tC3: [918.43, 1298.27],\r\n\tC4: [649.13, 918.43],\r\n\tC5: [459.21, 649.13],\r\n\tC6: [323.15, 459.21],\r\n\tC7: [229.61, 323.15],\r\n\tC8: [161.57, 229.61],\r\n\tC9: [113.39, 161.57],\r\n\tC10: [79.37, 113.39],\r\n\tRA0: [2437.80, 3458.27],\r\n\tRA1: [1729.13, 2437.80],\r\n\tRA2: [1218.90, 1729.13],\r\n\tRA3: [864.57, 1218.90],\r\n\tRA4: [609.45, 864.57],\r\n\tSRA0: [2551.18, 3628.35],\r\n\tSRA1: [1814.17, 2551.18],\r\n\tSRA2: [1275.59, 1814.17],\r\n\tSRA3: [907.09, 1275.59],\r\n\tSRA4: [637.80, 907.09],\r\n\tEXECUTIVE: [521.86, 756.00],\r\n\tFOLIO: [612.00, 936.00],\r\n\tLEGAL: [612.00, 1008.00],\r\n\tLETTER: [612.00, 792.00],\r\n\tTABLOID: [792.00, 1224.00]\r\n};\r\n", "'use strict';\r\n\r\nvar isString = require('./helpers').isString;\r\nvar isArray = require('./helpers').isArray;\r\nvar isUndefined = require('./helpers').isUndefined;\r\nvar isNull = require('./helpers').isNull;\r\n\r\n/**\r\n * Creates an instance of StyleContextStack used for style inheritance and style overrides\r\n *\r\n * @constructor\r\n * @this {StyleContextStack}\r\n * @param {Object} named styles dictionary\r\n * @param {Object} optional default style definition\r\n */\r\nfunction StyleContextStack(styleDictionary, defaultStyle) {\r\n\tthis.defaultStyle = defaultStyle || {};\r\n\tthis.styleDictionary = styleDictionary;\r\n\tthis.styleOverrides = [];\r\n}\r\n\r\n/**\r\n * Creates cloned version of current stack\r\n * @return {StyleContextStack} current stack snapshot\r\n */\r\nStyleContextStack.prototype.clone = function () {\r\n\tvar stack = new StyleContextStack(this.styleDictionary, this.defaultStyle);\r\n\r\n\tthis.styleOverrides.forEach(function (item) {\r\n\t\tstack.styleOverrides.push(item);\r\n\t});\r\n\r\n\treturn stack;\r\n};\r\n\r\n/**\r\n * Pushes style-name or style-overrides-object onto the stack for future evaluation\r\n *\r\n * @param {String|Object} styleNameOrOverride style-name (referring to styleDictionary) or\r\n *                                            a new dictionary defining overriding properties\r\n */\r\nStyleContextStack.prototype.push = function (styleNameOrOverride) {\r\n\tthis.styleOverrides.push(styleNameOrOverride);\r\n};\r\n\r\n/**\r\n * Removes last style-name or style-overrides-object from the stack\r\n *\r\n * @param {Number} howMany - optional number of elements to be popped (if not specified,\r\n *                           one element will be removed from the stack)\r\n */\r\nStyleContextStack.prototype.pop = function (howMany) {\r\n\thowMany = howMany || 1;\r\n\r\n\twhile (howMany-- > 0) {\r\n\t\tthis.styleOverrides.pop();\r\n\t}\r\n};\r\n\r\n/**\r\n * Creates a set of named styles or/and a style-overrides-object based on the item,\r\n * pushes those elements onto the stack for future evaluation and returns the number\r\n * of elements pushed, so they can be easily poped then.\r\n *\r\n * @param {Object} item - an object with optional style property and/or style overrides\r\n * @return the number of items pushed onto the stack\r\n */\r\nStyleContextStack.prototype.autopush = function (item) {\r\n\tif (isString(item)) {\r\n\t\treturn 0;\r\n\t}\r\n\r\n\tvar styleNames = [];\r\n\r\n\tif (item.style) {\r\n\t\tif (isArray(item.style)) {\r\n\t\t\tstyleNames = item.style;\r\n\t\t} else {\r\n\t\t\tstyleNames = [item.style];\r\n\t\t}\r\n\t}\r\n\r\n\tfor (var i = 0, l = styleNames.length; i < l; i++) {\r\n\t\tthis.push(styleNames[i]);\r\n\t}\r\n\r\n\tvar styleProperties = [\r\n\t\t'font',\r\n\t\t'fontSize',\r\n\t\t'fontFeatures',\r\n\t\t'bold',\r\n\t\t'italics',\r\n\t\t'alignment',\r\n\t\t'color',\r\n\t\t'columnGap',\r\n\t\t'fillColor',\r\n\t\t'fillOpacity',\r\n\t\t'decoration',\r\n\t\t'decorationStyle',\r\n\t\t'decorationColor',\r\n\t\t'background',\r\n\t\t'lineHeight',\r\n\t\t'characterSpacing',\r\n\t\t'noWrap',\r\n\t\t'markerColor',\r\n\t\t'leadingIndent',\r\n\t\t'sup',\r\n\t\t'sub'\r\n\t\t//'tableCellPadding'\r\n\t\t// 'cellBorder',\r\n\t\t// 'headerCellBorder',\r\n\t\t// 'oddRowCellBorder',\r\n\t\t// 'evenRowCellBorder',\r\n\t\t// 'tableBorder'\r\n\t];\r\n\tvar styleOverrideObject = {};\r\n\tvar pushStyleOverrideObject = false;\r\n\r\n\tstyleProperties.forEach(function (key) {\r\n\t\tif (!isUndefined(item[key]) && !isNull(item[key])) {\r\n\t\t\tstyleOverrideObject[key] = item[key];\r\n\t\t\tpushStyleOverrideObject = true;\r\n\t\t}\r\n\t});\r\n\r\n\tif (pushStyleOverrideObject) {\r\n\t\tthis.push(styleOverrideObject);\r\n\t}\r\n\r\n\treturn styleNames.length + (pushStyleOverrideObject ? 1 : 0);\r\n};\r\n\r\n/**\r\n * Automatically pushes elements onto the stack, using autopush based on item,\r\n * executes callback and then pops elements back. Returns value returned by callback\r\n *\r\n * @param  {Object}   item - an object with optional style property and/or style overrides\r\n * @param  {Function} function to be called between autopush and pop\r\n * @return {Object} value returned by callback\r\n */\r\nStyleContextStack.prototype.auto = function (item, callback) {\r\n\tvar pushedItems = this.autopush(item);\r\n\tvar result = callback();\r\n\r\n\tif (pushedItems > 0) {\r\n\t\tthis.pop(pushedItems);\r\n\t}\r\n\r\n\treturn result;\r\n};\r\n\r\n/**\r\n * Evaluates stack and returns value of a named property\r\n *\r\n * @param {String} property - property name\r\n * @return property value or null if not found\r\n */\r\nStyleContextStack.prototype.getProperty = function (property) {\r\n\tif (this.styleOverrides) {\r\n\t\tfor (var i = this.styleOverrides.length - 1; i >= 0; i--) {\r\n\t\t\tvar item = this.styleOverrides[i];\r\n\r\n\t\t\tif (isString(item)) {\r\n\t\t\t\t// named-style-override\r\n\t\t\t\tvar style = this.styleDictionary[item];\r\n\t\t\t\tif (style && !isUndefined(style[property]) && !isNull(style[property])) {\r\n\t\t\t\t\treturn style[property];\r\n\t\t\t\t}\r\n\t\t\t} else if (!isUndefined(item[property]) && !isNull(item[property])) {\r\n\t\t\t\t// style-overrides-object\r\n\t\t\t\treturn item[property];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn this.defaultStyle && this.defaultStyle[property];\r\n};\r\n\r\nmodule.exports = StyleContextStack;\r\n", "'use strict';\r\n\r\nvar xmldoc = require('xmldoc');\r\n\r\n/** Strip unit postfix, parse number, but return undefined instead of NaN for bad input */\r\nfunction stripUnits(textVal) {\r\n\tvar n = parseFloat(textVal);\r\n\tif (typeof n !== 'number' || isNaN(n)) {\r\n\t\treturn undefined;\r\n\t}\r\n\treturn n;\r\n}\r\n\r\n/** Make sure it's valid XML and the root tage is <svg/>, returns xmldoc DOM */\r\nfunction parseSVG(svgString) {\r\n\tvar doc;\r\n\r\n\ttry {\r\n\t\tdoc = new xmldoc.XmlDocument(svgString);\r\n\t} catch (err) {\r\n\t\tthrow new Error('SVGMeasure: ' + err);\r\n\t}\r\n\r\n\tif (doc.name !== \"svg\") {\r\n\t\tthrow new Error('SVGMeasure: expected <svg> document');\r\n\t}\r\n\r\n\treturn doc;\r\n}\r\n\r\nfunction SVGMeasure() {\r\n}\r\n\r\nSVGMeasure.prototype.measureSVG = function (svgString) {\r\n\r\n\tvar doc = parseSVG(svgString);\r\n\r\n\tvar docWidth = stripUnits(doc.attr.width);\r\n\tvar docHeight = stripUnits(doc.attr.height);\r\n\r\n\tif ((docWidth == undefined || docHeight == undefined) && typeof doc.attr.viewBox == 'string') {\r\n\t\tvar viewBoxParts = doc.attr.viewBox.split(/[,\\s]+/);\r\n\t\tif (viewBoxParts.length !== 4) {\r\n\t\t\tthrow new Error(\"Unexpected svg viewbox format, should have 4 entries but found: '\" + doc.attr.viewBox + \"'\");\r\n\t\t}\r\n\t\tif (docWidth == undefined) {\r\n\t\t\tdocWidth = stripUnits(viewBoxParts[2]);\r\n\t\t}\r\n\t\tif (docHeight == undefined) {\r\n\t\t\tdocHeight = stripUnits(viewBoxParts[3]);\r\n\t\t}\r\n\t}\r\n\r\n\treturn {\r\n\t\twidth: docWidth,\r\n\t\theight: docHeight\r\n\t};\r\n};\r\n\r\nSVGMeasure.prototype.writeDimensions = function (svgString, dimensions) {\r\n\r\n\tvar doc = parseSVG(svgString);\r\n\r\n\tdoc.attr.width = \"\" + dimensions.width;\r\n\tdoc.attr.height = \"\" + dimensions.height;\r\n\r\n\treturn doc.toString();\r\n};\r\n\r\nmodule.exports = SVGMeasure;\r\n", "'use strict';\r\n\r\nvar ColumnCalculator = require('./columnCalculator');\r\nvar isFunction = require('./helpers').isFunction;\r\nvar isNumber = require('./helpers').isNumber;\r\n\r\nfunction TableProcessor(tableNode) {\r\n\tthis.tableNode = tableNode;\r\n}\r\n\r\nTableProcessor.prototype.beginTable = function (writer) {\r\n\tvar tableNode;\r\n\tvar availableWidth;\r\n\tvar self = this;\r\n\r\n\ttableNode = this.tableNode;\r\n\tthis.offsets = tableNode._offsets;\r\n\tthis.layout = tableNode._layout;\r\n\r\n\tavailableWidth = writer.context().availableWidth - this.offsets.total;\r\n\tColumnCalculator.buildColumnWidths(tableNode.table.widths, availableWidth);\r\n\r\n\tthis.tableWidth = tableNode._offsets.total + getTableInnerContentWidth();\r\n\tthis.rowSpanData = prepareRowSpanData();\r\n\tthis.cleanUpRepeatables = false;\r\n\r\n\tthis.headerRows = tableNode.table.headerRows || 0;\r\n\tthis.rowsWithoutPageBreak = this.headerRows + (tableNode.table.keepWithHeaderRows || 0);\r\n\tthis.dontBreakRows = tableNode.table.dontBreakRows || false;\r\n\r\n\tif (this.rowsWithoutPageBreak) {\r\n\t\twriter.beginUnbreakableBlock();\r\n\t}\r\n\r\n\t// update the border properties of all cells before drawing any lines\r\n\tprepareCellBorders(this.tableNode.table.body);\r\n\r\n\tthis.drawHorizontalLine(0, writer);\r\n\r\n\tfunction getTableInnerContentWidth() {\r\n\t\tvar width = 0;\r\n\r\n\t\ttableNode.table.widths.forEach(function (w) {\r\n\t\t\twidth += w._calcWidth;\r\n\t\t});\r\n\r\n\t\treturn width;\r\n\t}\r\n\r\n\tfunction prepareRowSpanData() {\r\n\t\tvar rsd = [];\r\n\t\tvar x = 0;\r\n\t\tvar lastWidth = 0;\r\n\r\n\t\trsd.push({ left: 0, rowSpan: 0 });\r\n\r\n\t\tfor (var i = 0, l = self.tableNode.table.body[0].length; i < l; i++) {\r\n\t\t\tvar paddings = self.layout.paddingLeft(i, self.tableNode) + self.layout.paddingRight(i, self.tableNode);\r\n\t\t\tvar lBorder = self.layout.vLineWidth(i, self.tableNode);\r\n\t\t\tlastWidth = paddings + lBorder + self.tableNode.table.widths[i]._calcWidth;\r\n\t\t\trsd[rsd.length - 1].width = lastWidth;\r\n\t\t\tx += lastWidth;\r\n\t\t\trsd.push({ left: x, rowSpan: 0, width: 0 });\r\n\t\t}\r\n\r\n\t\treturn rsd;\r\n\t}\r\n\r\n\t// Iterate through all cells. If the current cell is the start of a\r\n\t// rowSpan/colSpan, update the border property of the cells on its\r\n\t// bottom/right accordingly. This is needed since each iteration of the\r\n\t// line-drawing loops draws lines for a single cell, not for an entire\r\n\t// rowSpan/colSpan.\r\n\tfunction prepareCellBorders(body) {\r\n\t\tfor (var rowIndex = 0; rowIndex < body.length; rowIndex++) {\r\n\t\t\tvar row = body[rowIndex];\r\n\r\n\t\t\tfor (var colIndex = 0; colIndex < row.length; colIndex++) {\r\n\t\t\t\tvar cell = row[colIndex];\r\n\r\n\t\t\t\tif (cell.border) {\r\n\t\t\t\t\tvar rowSpan = cell.rowSpan || 1;\r\n\t\t\t\t\tvar colSpan = cell.colSpan || 1;\r\n\r\n\t\t\t\t\tfor (var rowOffset = 0; rowOffset < rowSpan; rowOffset++) {\r\n\t\t\t\t\t\t// set left border\r\n\t\t\t\t\t\tif (cell.border[0] !== undefined && rowOffset > 0) {\r\n\t\t\t\t\t\t\tsetBorder(rowIndex + rowOffset, colIndex, 0, cell.border[0]);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t// set right border\r\n\t\t\t\t\t\tif (cell.border[2] !== undefined) {\r\n\t\t\t\t\t\t\tsetBorder(rowIndex + rowOffset, colIndex + colSpan - 1, 2, cell.border[2]);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tfor (var colOffset = 0; colOffset < colSpan; colOffset++) {\r\n\t\t\t\t\t\t// set top border\r\n\t\t\t\t\t\tif (cell.border[1] !== undefined && colOffset > 0) {\r\n\t\t\t\t\t\t\tsetBorder(rowIndex, colIndex + colOffset, 1, cell.border[1]);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t// set bottom border\r\n\t\t\t\t\t\tif (cell.border[3] !== undefined) {\r\n\t\t\t\t\t\t\tsetBorder(rowIndex + rowSpan - 1, colIndex + colOffset, 3, cell.border[3]);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// helper function to set the border for a given cell\r\n\t\tfunction setBorder(rowIndex, colIndex, borderIndex, borderValue) {\r\n\t\t\tvar cell = body[rowIndex][colIndex];\r\n\t\t\tcell.border = cell.border || {};\r\n\t\t\tcell.border[borderIndex] = borderValue;\r\n\t\t}\r\n\t}\r\n};\r\n\r\nTableProcessor.prototype.onRowBreak = function (rowIndex, writer) {\r\n\tvar self = this;\r\n\treturn function () {\r\n\t\tvar offset = self.rowPaddingTop + (!self.headerRows ? self.topLineWidth : 0);\r\n\t\twriter.context().availableHeight -= self.reservedAtBottom;\r\n\t\twriter.context().moveDown(offset);\r\n\t};\r\n};\r\n\r\nTableProcessor.prototype.beginRow = function (rowIndex, writer) {\r\n\tthis.topLineWidth = this.layout.hLineWidth(rowIndex, this.tableNode);\r\n\tthis.rowPaddingTop = this.layout.paddingTop(rowIndex, this.tableNode);\r\n\tthis.bottomLineWidth = this.layout.hLineWidth(rowIndex + 1, this.tableNode);\r\n\tthis.rowPaddingBottom = this.layout.paddingBottom(rowIndex, this.tableNode);\r\n\r\n\tthis.rowCallback = this.onRowBreak(rowIndex, writer);\r\n\twriter.tracker.startTracking('pageChanged', this.rowCallback);\r\n\tif (this.dontBreakRows) {\r\n\t\twriter.beginUnbreakableBlock();\r\n\t}\r\n\tthis.rowTopY = writer.context().y;\r\n\tthis.reservedAtBottom = this.bottomLineWidth + this.rowPaddingBottom;\r\n\r\n\twriter.context().availableHeight -= this.reservedAtBottom;\r\n\r\n\twriter.context().moveDown(this.rowPaddingTop);\r\n};\r\n\r\nTableProcessor.prototype.drawHorizontalLine = function (lineIndex, writer, overrideY) {\r\n\tvar lineWidth = this.layout.hLineWidth(lineIndex, this.tableNode);\r\n\tif (lineWidth) {\r\n\t\tvar style = this.layout.hLineStyle(lineIndex, this.tableNode);\r\n\t\tvar dash;\r\n\t\tif (style && style.dash) {\r\n\t\t\tdash = style.dash;\r\n\t\t}\r\n\r\n\t\tvar offset = lineWidth / 2;\r\n\t\tvar currentLine = null;\r\n\t\tvar body = this.tableNode.table.body;\r\n\t\tvar cellAbove;\r\n\t\tvar currentCell;\r\n\t\tvar rowCellAbove;\r\n\r\n\t\tfor (var i = 0, l = this.rowSpanData.length; i < l; i++) {\r\n\t\t\tvar data = this.rowSpanData[i];\r\n\t\t\tvar shouldDrawLine = !data.rowSpan;\r\n\t\t\tvar borderColor = null;\r\n\r\n\t\t\t// draw only if the current cell requires a top border or the cell in the\r\n\t\t\t// row above requires a bottom border\r\n\t\t\tif (shouldDrawLine && i < l - 1) {\r\n\t\t\t\tvar topBorder = false, bottomBorder = false, rowBottomBorder = false;\r\n\r\n\t\t\t\t// the cell in the row above\r\n\t\t\t\tif (lineIndex > 0) {\r\n\t\t\t\t\tcellAbove = body[lineIndex - 1][i];\r\n\t\t\t\t\tbottomBorder = cellAbove.border ? cellAbove.border[3] : this.layout.defaultBorder;\r\n\t\t\t\t\tif (bottomBorder && cellAbove.borderColor) {\r\n\t\t\t\t\t\tborderColor = cellAbove.borderColor[3];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// the current cell\r\n\t\t\t\tif (lineIndex < body.length) {\r\n\t\t\t\t\tcurrentCell = body[lineIndex][i];\r\n\t\t\t\t\ttopBorder = currentCell.border ? currentCell.border[1] : this.layout.defaultBorder;\r\n\t\t\t\t\tif (topBorder && borderColor == null && currentCell.borderColor) {\r\n\t\t\t\t\t\tborderColor = currentCell.borderColor[1];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tshouldDrawLine = topBorder || bottomBorder;\r\n\t\t\t}\r\n\r\n\t\t\tif (cellAbove && cellAbove._rowSpanCurrentOffset) {\r\n\t\t\t\trowCellAbove = body[lineIndex - 1 - cellAbove._rowSpanCurrentOffset][i];\r\n\t\t\t\trowBottomBorder = rowCellAbove && rowCellAbove.border ? rowCellAbove.border[3] : this.layout.defaultBorder;\r\n\t\t\t\tif (rowBottomBorder && rowCellAbove && rowCellAbove.borderColor) {\r\n\t\t\t\t\tborderColor = rowCellAbove.borderColor[3];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (borderColor == null) {\r\n\t\t\t\tborderColor = isFunction(this.layout.hLineColor) ? this.layout.hLineColor(lineIndex, this.tableNode, i) : this.layout.hLineColor;\r\n\t\t\t}\r\n\r\n\t\t\tif (!currentLine && shouldDrawLine) {\r\n\t\t\t\tcurrentLine = { left: data.left, width: 0 };\r\n\t\t\t}\r\n\r\n\t\t\tif (shouldDrawLine) {\r\n\t\t\t\tvar colSpanIndex = 0;\r\n\t\t\t\tif (rowCellAbove && rowCellAbove.colSpan && rowBottomBorder) {\r\n\t\t\t\t\twhile (rowCellAbove.colSpan > colSpanIndex) {\r\n\t\t\t\t\t\tcurrentLine.width += (this.rowSpanData[i + colSpanIndex++].width || 0);\r\n\t\t\t\t\t}\r\n\t\t\t\t\ti += colSpanIndex - 1;\r\n\t\t\t\t} else if (cellAbove && cellAbove.colSpan && bottomBorder) {\r\n\t\t\t\t\twhile (cellAbove.colSpan > colSpanIndex) {\r\n\t\t\t\t\t\tcurrentLine.width += (this.rowSpanData[i + colSpanIndex++].width || 0);\r\n\t\t\t\t\t}\r\n\t\t\t\t\ti += colSpanIndex - 1;\r\n\t\t\t\t} else if (currentCell && currentCell.colSpan && topBorder) {\r\n\t\t\t\t\twhile (currentCell.colSpan > colSpanIndex) {\r\n\t\t\t\t\t\tcurrentLine.width += (this.rowSpanData[i + colSpanIndex++].width || 0);\r\n\t\t\t\t\t}\r\n\t\t\t\t\ti += colSpanIndex - 1;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcurrentLine.width += (this.rowSpanData[i].width || 0);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar y = (overrideY || 0) + offset;\r\n\r\n\r\n\t\t\tif (shouldDrawLine) {\r\n\t\t\t\tif (currentLine && currentLine.width) {\r\n\t\t\t\t\twriter.addVector({\r\n\t\t\t\t\t\ttype: 'line',\r\n\t\t\t\t\t\tx1: currentLine.left,\r\n\t\t\t\t\t\tx2: currentLine.left + currentLine.width,\r\n\t\t\t\t\t\ty1: y,\r\n\t\t\t\t\t\ty2: y,\r\n\t\t\t\t\t\tlineWidth: lineWidth,\r\n\t\t\t\t\t\tdash: dash,\r\n\t\t\t\t\t\tlineColor: borderColor\r\n\t\t\t\t\t}, false, overrideY);\r\n\t\t\t\t\tcurrentLine = null;\r\n\t\t\t\t\tborderColor = null;\r\n\t\t\t\t\tcellAbove = null;\r\n\t\t\t\t\tcurrentCell = null;\r\n\t\t\t\t\trowCellAbove = null;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\twriter.context().moveDown(lineWidth);\r\n\t}\r\n};\r\n\r\nTableProcessor.prototype.drawVerticalLine = function (x, y0, y1, vLineColIndex, writer, vLineRowIndex, beforeVLineColIndex) {\r\n\tvar width = this.layout.vLineWidth(vLineColIndex, this.tableNode);\r\n\tif (width === 0) {\r\n\t\treturn;\r\n\t}\r\n\tvar style = this.layout.vLineStyle(vLineColIndex, this.tableNode);\r\n\tvar dash;\r\n\tif (style && style.dash) {\r\n\t\tdash = style.dash;\r\n\t}\r\n\r\n\tvar body = this.tableNode.table.body;\r\n\tvar cellBefore;\r\n\tvar currentCell;\r\n\tvar borderColor;\r\n\r\n\t// the cell in the col before\r\n\tif (vLineColIndex > 0) {\r\n\t\tcellBefore = body[vLineRowIndex][beforeVLineColIndex];\r\n\t\tif (cellBefore && cellBefore.borderColor) {\r\n\t\t\tif (cellBefore.border ? cellBefore.border[2] : this.layout.defaultBorder) {\r\n\t\t\t\tborderColor = cellBefore.borderColor[2];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// the current cell\r\n\tif (borderColor == null && vLineColIndex < body.length) {\r\n\t\tcurrentCell = body[vLineRowIndex][vLineColIndex];\r\n\t\tif (currentCell && currentCell.borderColor) {\r\n\t\t\tif (currentCell.border ? currentCell.border[0] : this.layout.defaultBorder) {\r\n\t\t\t\tborderColor = currentCell.borderColor[0];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tif (borderColor == null && cellBefore && cellBefore._rowSpanCurrentOffset) {\r\n\t\tvar rowCellBeforeAbove = body[vLineRowIndex - cellBefore._rowSpanCurrentOffset][beforeVLineColIndex];\r\n\t\tif (rowCellBeforeAbove.borderColor) {\r\n\t\t\tif (rowCellBeforeAbove.border ? rowCellBeforeAbove.border[2] : this.layout.defaultBorder) {\r\n\t\t\t\tborderColor = rowCellBeforeAbove.borderColor[2];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tif (borderColor == null && currentCell && currentCell._rowSpanCurrentOffset) {\r\n\t\tvar rowCurrentCellAbove = body[vLineRowIndex - currentCell._rowSpanCurrentOffset][vLineColIndex];\r\n\t\tif (rowCurrentCellAbove.borderColor) {\r\n\t\t\tif (rowCurrentCellAbove.border ? rowCurrentCellAbove.border[2] : this.layout.defaultBorder) {\r\n\t\t\t\tborderColor = rowCurrentCellAbove.borderColor[2];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tif (borderColor == null) {\r\n\t\tborderColor = isFunction(this.layout.vLineColor) ? this.layout.vLineColor(vLineColIndex, this.tableNode, vLineRowIndex) : this.layout.vLineColor;\r\n\t}\r\n\twriter.addVector({\r\n\t\ttype: 'line',\r\n\t\tx1: x + width / 2,\r\n\t\tx2: x + width / 2,\r\n\t\ty1: y0,\r\n\t\ty2: y1,\r\n\t\tlineWidth: width,\r\n\t\tdash: dash,\r\n\t\tlineColor: borderColor\r\n\t}, false, true);\r\n\tcellBefore = null;\r\n\tcurrentCell = null;\r\n\tborderColor = null;\r\n};\r\n\r\nTableProcessor.prototype.endTable = function (writer) {\r\n\tif (this.cleanUpRepeatables) {\r\n\t\twriter.popFromRepeatables();\r\n\t}\r\n};\r\n\r\nTableProcessor.prototype.endRow = function (rowIndex, writer, pageBreaks) {\r\n\tvar l, i;\r\n\tvar self = this;\r\n\twriter.tracker.stopTracking('pageChanged', this.rowCallback);\r\n\twriter.context().moveDown(this.layout.paddingBottom(rowIndex, this.tableNode));\r\n\twriter.context().availableHeight += this.reservedAtBottom;\r\n\r\n\tvar endingPage = writer.context().page;\r\n\tvar endingY = writer.context().y;\r\n\r\n\tvar xs = getLineXs();\r\n\r\n\tvar ys = [];\r\n\r\n\tvar hasBreaks = pageBreaks && pageBreaks.length > 0;\r\n\tvar body = this.tableNode.table.body;\r\n\r\n\tys.push({\r\n\t\ty0: this.rowTopY,\r\n\t\tpage: hasBreaks ? pageBreaks[0].prevPage : endingPage\r\n\t});\r\n\r\n\tif (hasBreaks) {\r\n\t\tfor (i = 0, l = pageBreaks.length; i < l; i++) {\r\n\t\t\tvar pageBreak = pageBreaks[i];\r\n\t\t\tys[ys.length - 1].y1 = pageBreak.prevY;\r\n\r\n\t\t\tys.push({ y0: pageBreak.y, page: pageBreak.prevPage + 1 });\r\n\t\t}\r\n\t}\r\n\r\n\tys[ys.length - 1].y1 = endingY;\r\n\r\n\tvar skipOrphanePadding = (ys[0].y1 - ys[0].y0 === this.rowPaddingTop);\r\n\tfor (var yi = (skipOrphanePadding ? 1 : 0), yl = ys.length; yi < yl; yi++) {\r\n\t\tvar willBreak = yi < ys.length - 1;\r\n\t\tvar rowBreakWithoutHeader = (yi > 0 && !this.headerRows);\r\n\t\tvar hzLineOffset = rowBreakWithoutHeader ? 0 : this.topLineWidth;\r\n\t\tvar y1 = ys[yi].y0;\r\n\t\tvar y2 = ys[yi].y1;\r\n\r\n\t\tif (willBreak) {\r\n\t\t\ty2 = y2 + this.rowPaddingBottom;\r\n\t\t}\r\n\r\n\t\tif (writer.context().page != ys[yi].page) {\r\n\t\t\twriter.context().page = ys[yi].page;\r\n\r\n\t\t\t//TODO: buggy, availableHeight should be updated on every pageChanged event\r\n\t\t\t// TableProcessor should be pageChanged listener, instead of processRow\r\n\t\t\tthis.reservedAtBottom = 0;\r\n\t\t}\r\n\r\n\t\tfor (i = 0, l = xs.length; i < l; i++) {\r\n\t\t\tvar leftCellBorder = false;\r\n\t\t\tvar rightCellBorder = false;\r\n\t\t\tvar colIndex = xs[i].index;\r\n\r\n\t\t\t// current cell\r\n\t\t\tif (colIndex < body[rowIndex].length) {\r\n\t\t\t\tvar cell = body[rowIndex][colIndex];\r\n\t\t\t\tleftCellBorder = cell.border ? cell.border[0] : this.layout.defaultBorder;\r\n\t\t\t\trightCellBorder = cell.border ? cell.border[2] : this.layout.defaultBorder;\r\n\t\t\t}\r\n\r\n\t\t\t// before cell\r\n\t\t\tif (colIndex > 0 && !leftCellBorder) {\r\n\t\t\t\tvar cell = body[rowIndex][colIndex - 1];\r\n\t\t\t\tleftCellBorder = cell.border ? cell.border[2] : this.layout.defaultBorder;\r\n\t\t\t}\r\n\r\n\t\t\t// after cell\r\n\t\t\tif (colIndex + 1 < body[rowIndex].length && !rightCellBorder) {\r\n\t\t\t\tvar cell = body[rowIndex][colIndex + 1];\r\n\t\t\t\trightCellBorder = cell.border ? cell.border[0] : this.layout.defaultBorder;\r\n\t\t\t}\r\n\r\n\t\t\tif (leftCellBorder) {\r\n\t\t\t\tthis.drawVerticalLine(xs[i].x, y1 - hzLineOffset, y2 + this.bottomLineWidth, xs[i].index, writer, rowIndex, xs[i - 1] ? xs[i - 1].index : null);\r\n\t\t\t}\r\n\r\n\t\t\tif (i < l - 1) {\r\n\t\t\t\tvar fillColor = body[rowIndex][colIndex].fillColor;\r\n\t\t\t\tvar fillOpacity = body[rowIndex][colIndex].fillOpacity;\r\n\t\t\t\tif (!fillColor) {\r\n\t\t\t\t\tfillColor = isFunction(this.layout.fillColor) ? this.layout.fillColor(rowIndex, this.tableNode, colIndex) : this.layout.fillColor;\r\n\t\t\t\t}\r\n\t\t\t\tif (!isNumber(fillOpacity)) {\r\n\t\t\t\t\tfillOpacity = isFunction(this.layout.fillOpacity) ? this.layout.fillOpacity(rowIndex, this.tableNode, colIndex) : this.layout.fillOpacity;\r\n\t\t\t\t}\r\n\t\t\t\tvar overlayPattern = body[rowIndex][colIndex].overlayPattern;\r\n\t\t\t\tvar overlayOpacity = body[rowIndex][colIndex].overlayOpacity;\r\n\t\t\t\tif (fillColor || overlayPattern) {\r\n\t\t\t\t\tvar widthLeftBorder = leftCellBorder ? this.layout.vLineWidth(colIndex, this.tableNode) : 0;\r\n\t\t\t\t\tvar widthRightBorder;\r\n\t\t\t\t\tif ((colIndex === 0 || colIndex + 1 == body[rowIndex].length) && !rightCellBorder) {\r\n\t\t\t\t\t\twidthRightBorder = this.layout.vLineWidth(colIndex + 1, this.tableNode);\r\n\t\t\t\t\t} else if (rightCellBorder) {\r\n\t\t\t\t\t\twidthRightBorder = this.layout.vLineWidth(colIndex + 1, this.tableNode) / 2;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\twidthRightBorder = 0;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tvar x1f = this.dontBreakRows ? xs[i].x + widthLeftBorder : xs[i].x + (widthLeftBorder / 2);\r\n\t\t\t\t\tvar y1f = this.dontBreakRows ? y1 : y1 - (hzLineOffset / 2);\r\n\t\t\t\t\tvar x2f = xs[i + 1].x + widthRightBorder;\r\n\t\t\t\t\tvar y2f = this.dontBreakRows ? y2 + this.bottomLineWidth : y2 + (this.bottomLineWidth / 2);\r\n\t\t\t\t\tvar bgWidth = x2f - x1f;\r\n\t\t\t\t\tvar bgHeight = y2f - y1f;\r\n\t\t\t\t\tif (fillColor) {\r\n\t\t\t\t\t\twriter.addVector({\r\n\t\t\t\t\t\t\ttype: 'rect',\r\n\t\t\t\t\t\t\tx: x1f,\r\n\t\t\t\t\t\t\ty: y1f,\r\n\t\t\t\t\t\t\tw: bgWidth,\r\n\t\t\t\t\t\t\th: bgHeight,\r\n\t\t\t\t\t\t\tlineWidth: 0,\r\n\t\t\t\t\t\t\tcolor: fillColor,\r\n\t\t\t\t\t\t\tfillOpacity: fillOpacity\r\n\t\t\t\t\t\t}, false, true, writer.context().backgroundLength[writer.context().page]);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (overlayPattern) {\r\n\t\t\t\t\t\twriter.addVector({\r\n\t\t\t\t\t\t\ttype: 'rect',\r\n\t\t\t\t\t\t\tx: x1f,\r\n\t\t\t\t\t\t\ty: y1f,\r\n\t\t\t\t\t\t\tw: bgWidth,\r\n\t\t\t\t\t\t\th: bgHeight,\r\n\t\t\t\t\t\t\tlineWidth: 0,\r\n\t\t\t\t\t\t\tcolor: overlayPattern,\r\n\t\t\t\t\t\t\tfillOpacity: overlayOpacity\r\n\t\t\t\t\t\t}, false, true);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (willBreak && this.layout.hLineWhenBroken !== false) {\r\n\t\t\tthis.drawHorizontalLine(rowIndex + 1, writer, y2);\r\n\t\t}\r\n\t\tif (rowBreakWithoutHeader && this.layout.hLineWhenBroken !== false) {\r\n\t\t\tthis.drawHorizontalLine(rowIndex, writer, y1);\r\n\t\t}\r\n\t}\r\n\r\n\twriter.context().page = endingPage;\r\n\twriter.context().y = endingY;\r\n\r\n\tvar row = this.tableNode.table.body[rowIndex];\r\n\tfor (i = 0, l = row.length; i < l; i++) {\r\n\t\tif (row[i].rowSpan) {\r\n\t\t\tthis.rowSpanData[i].rowSpan = row[i].rowSpan;\r\n\r\n\t\t\t// fix colSpans\r\n\t\t\tif (row[i].colSpan && row[i].colSpan > 1) {\r\n\t\t\t\tfor (var j = 1; j < row[i].rowSpan; j++) {\r\n\t\t\t\t\tthis.tableNode.table.body[rowIndex + j][i]._colSpan = row[i].colSpan;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// fix rowSpans\r\n\t\t\tif (row[i].rowSpan && row[i].rowSpan > 1) {\r\n\t\t\t\tfor (var j = 1; j < row[i].rowSpan; j++) {\r\n\t\t\t\t\tthis.tableNode.table.body[rowIndex + j][i]._rowSpanCurrentOffset = j;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this.rowSpanData[i].rowSpan > 0) {\r\n\t\t\tthis.rowSpanData[i].rowSpan--;\r\n\t\t}\r\n\t}\r\n\r\n\tthis.drawHorizontalLine(rowIndex + 1, writer);\r\n\r\n\tif (this.headerRows && rowIndex === this.headerRows - 1) {\r\n\t\tthis.headerRepeatable = writer.currentBlockToRepeatable();\r\n\t}\r\n\r\n\tif (this.dontBreakRows) {\r\n\t\twriter.tracker.auto('pageChanged',\r\n\t\t\tfunction () {\r\n\t\t\t\tif (!self.headerRows && self.layout.hLineWhenBroken !== false) {\r\n\t\t\t\t\tself.drawHorizontalLine(rowIndex, writer);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tfunction () {\r\n\t\t\t\twriter.commitUnbreakableBlock();\r\n\t\t\t}\r\n\t\t);\r\n\t}\r\n\r\n\tif (this.headerRepeatable && (rowIndex === (this.rowsWithoutPageBreak - 1) || rowIndex === this.tableNode.table.body.length - 1)) {\r\n\t\twriter.commitUnbreakableBlock();\r\n\t\twriter.pushToRepeatables(this.headerRepeatable);\r\n\t\tthis.cleanUpRepeatables = true;\r\n\t\tthis.headerRepeatable = null;\r\n\t}\r\n\r\n\tfunction getLineXs() {\r\n\t\tvar result = [];\r\n\t\tvar cols = 0;\r\n\r\n\t\tfor (var i = 0, l = self.tableNode.table.body[rowIndex].length; i < l; i++) {\r\n\t\t\tif (!cols) {\r\n\t\t\t\tresult.push({ x: self.rowSpanData[i].left, index: i });\r\n\r\n\t\t\t\tvar item = self.tableNode.table.body[rowIndex][i];\r\n\t\t\t\tcols = (item._colSpan || item.colSpan || 0);\r\n\t\t\t}\r\n\t\t\tif (cols > 0) {\r\n\t\t\t\tcols--;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tresult.push({ x: self.rowSpanData[self.rowSpanData.length - 1].left, index: self.rowSpanData.length - 1 });\r\n\r\n\t\treturn result;\r\n\t}\r\n};\r\n\r\nmodule.exports = TableProcessor;\r\n", "'use strict';\r\n\r\nvar isArray = require('./helpers').isArray;\r\nvar isPattern = require('./helpers').isPattern;\r\nvar getPattern = require('./helpers').getPattern;\r\n\r\nfunction groupDecorations(line) {\r\n\tvar groups = [], currentGroup = null;\r\n\tfor (var i = 0, l = line.inlines.length; i < l; i++) {\r\n\t\tvar inline = line.inlines[i];\r\n\t\tvar decoration = inline.decoration;\r\n\t\tif (!decoration) {\r\n\t\t\tcurrentGroup = null;\r\n\t\t\tcontinue;\r\n\t\t}\r\n\t\tif (!isArray(decoration)) {\r\n\t\t\tdecoration = [decoration];\r\n\t\t}\r\n\t\tvar color = inline.decorationColor || inline.color || 'black';\r\n\t\tvar style = inline.decorationStyle || 'solid';\r\n\t\tfor (var ii = 0, ll = decoration.length; ii < ll; ii++) {\r\n\t\t\tvar decorationItem = decoration[ii];\r\n\t\t\tif (!currentGroup || decorationItem !== currentGroup.decoration ||\r\n\t\t\t\tstyle !== currentGroup.decorationStyle || color !== currentGroup.decorationColor) {\r\n\r\n\t\t\t\tcurrentGroup = {\r\n\t\t\t\t\tline: line,\r\n\t\t\t\t\tdecoration: decorationItem,\r\n\t\t\t\t\tdecorationColor: color,\r\n\t\t\t\t\tdecorationStyle: style,\r\n\t\t\t\t\tinlines: [inline]\r\n\t\t\t\t};\r\n\t\t\t\tgroups.push(currentGroup);\r\n\t\t\t} else {\r\n\t\t\t\tcurrentGroup.inlines.push(inline);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn groups;\r\n}\r\n\r\nfunction drawDecoration(group, x, y, pdfKitDoc) {\r\n\tfunction maxInline() {\r\n\t\tvar max = 0;\r\n\t\tfor (var i = 0, l = group.inlines.length; i < l; i++) {\r\n\t\t\tvar inline = group.inlines[i];\r\n\t\t\tmax = inline.fontSize > max ? i : max;\r\n\t\t}\r\n\t\treturn group.inlines[max];\r\n\t}\r\n\tfunction width() {\r\n\t\tvar sum = 0;\r\n\t\tfor (var i = 0, l = group.inlines.length; i < l; i++) {\r\n\t\t\tvar justifyShift = (group.inlines[i].justifyShift || 0);\r\n\t\t\tsum += group.inlines[i].width + justifyShift;\r\n\t\t}\r\n\t\treturn sum;\r\n\t}\r\n\tvar firstInline = group.inlines[0],\r\n\t\tbiggerInline = maxInline(),\r\n\t\ttotalWidth = width(),\r\n\t\tlineAscent = group.line.getAscenderHeight(),\r\n\t\tascent = biggerInline.font.ascender / 1000 * biggerInline.fontSize,\r\n\t\theight = biggerInline.height,\r\n\t\tdescent = height - ascent;\r\n\r\n\tvar lw = 0.5 + Math.floor(Math.max(biggerInline.fontSize - 8, 0) / 2) * 0.12;\r\n\r\n\tswitch (group.decoration) {\r\n\t\tcase 'underline':\r\n\t\t\ty += lineAscent + descent * 0.45;\r\n\t\t\tbreak;\r\n\t\tcase 'overline':\r\n\t\t\ty += lineAscent - (ascent * 0.85);\r\n\t\t\tbreak;\r\n\t\tcase 'lineThrough':\r\n\t\t\ty += lineAscent - (ascent * 0.25);\r\n\t\t\tbreak;\r\n\t\tdefault:\r\n\t\t\tthrow 'Unkown decoration : ' + group.decoration;\r\n\t}\r\n\tpdfKitDoc.save();\r\n\r\n\tif (group.decorationStyle === 'double') {\r\n\t\tvar gap = Math.max(0.5, lw * 2);\r\n\t\tpdfKitDoc.fillColor(group.decorationColor)\r\n\t\t\t.rect(x + firstInline.x, y - lw / 2, totalWidth, lw / 2).fill()\r\n\t\t\t.rect(x + firstInline.x, y + gap - lw / 2, totalWidth, lw / 2).fill();\r\n\t} else if (group.decorationStyle === 'dashed') {\r\n\t\tvar nbDashes = Math.ceil(totalWidth / (3.96 + 2.84));\r\n\t\tvar rdx = x + firstInline.x;\r\n\t\tpdfKitDoc.rect(rdx, y, totalWidth, lw).clip();\r\n\t\tpdfKitDoc.fillColor(group.decorationColor);\r\n\t\tfor (var i = 0; i < nbDashes; i++) {\r\n\t\t\tpdfKitDoc.rect(rdx, y - lw / 2, 3.96, lw).fill();\r\n\t\t\trdx += 3.96 + 2.84;\r\n\t\t}\r\n\t} else if (group.decorationStyle === 'dotted') {\r\n\t\tvar nbDots = Math.ceil(totalWidth / (lw * 3));\r\n\t\tvar rx = x + firstInline.x;\r\n\t\tpdfKitDoc.rect(rx, y, totalWidth, lw).clip();\r\n\t\tpdfKitDoc.fillColor(group.decorationColor);\r\n\t\tfor (var ii = 0; ii < nbDots; ii++) {\r\n\t\t\tpdfKitDoc.rect(rx, y - lw / 2, lw, lw).fill();\r\n\t\t\trx += (lw * 3);\r\n\t\t}\r\n\t} else if (group.decorationStyle === 'wavy') {\r\n\t\tvar sh = 0.7, sv = 1;\r\n\t\tvar nbWaves = Math.ceil(totalWidth / (sh * 2)) + 1;\r\n\t\tvar rwx = x + firstInline.x - 1;\r\n\t\tpdfKitDoc.rect(x + firstInline.x, y - sv, totalWidth, y + sv).clip();\r\n\t\tpdfKitDoc.lineWidth(0.24);\r\n\t\tpdfKitDoc.moveTo(rwx, y);\r\n\t\tfor (var iii = 0; iii < nbWaves; iii++) {\r\n\t\t\tpdfKitDoc.bezierCurveTo(rwx + sh, y - sv, rwx + sh * 2, y - sv, rwx + sh * 3, y)\r\n\t\t\t\t.bezierCurveTo(rwx + sh * 4, y + sv, rwx + sh * 5, y + sv, rwx + sh * 6, y);\r\n\t\t\trwx += sh * 6;\r\n\t\t}\r\n\t\tpdfKitDoc.stroke(group.decorationColor);\r\n\t} else {\r\n\t\tpdfKitDoc.fillColor(group.decorationColor)\r\n\t\t\t.rect(x + firstInline.x, y - lw / 2, totalWidth, lw)\r\n\t\t\t.fill();\r\n\t}\r\n\tpdfKitDoc.restore();\r\n}\r\n\r\nfunction drawDecorations(line, x, y, pdfKitDoc) {\r\n\tvar groups = groupDecorations(line);\r\n\tfor (var i = 0, l = groups.length; i < l; i++) {\r\n\t\tdrawDecoration(groups[i], x, y, pdfKitDoc);\r\n\t}\r\n}\r\n\r\nfunction drawBackground(line, x, y, patterns, pdfKitDoc) {\r\n\tvar height = line.getHeight();\r\n\tfor (var i = 0, l = line.inlines.length; i < l; i++) {\r\n\t\tvar inline = line.inlines[i];\r\n\t\tif (!inline.background) {\r\n\t\t\tcontinue;\r\n\t\t}\r\n\t\tvar color = inline.background;\r\n\t\tif (isPattern(inline.background)) {\r\n\t\t\tcolor = getPattern(inline.background, patterns);\r\n\t\t}\r\n\t\tvar justifyShift = (inline.justifyShift || 0);\r\n\t\tpdfKitDoc.fillColor(color)\r\n\t\t\t.rect(x + inline.x - justifyShift, y, inline.width + justifyShift, height)\r\n\t\t\t.fill();\r\n\t}\r\n}\r\n\r\nmodule.exports = {\r\n\tdrawBackground: drawBackground,\r\n\tdrawDecorations: drawDecorations\r\n};\r\n", "'use strict';\r\n\r\nvar isString = require('./helpers').isString;\r\nvar isNumber = require('./helpers').isNumber;\r\nvar isObject = require('./helpers').isObject;\r\nvar isArray = require('./helpers').isArray;\r\nvar isUndefined = require('./helpers').isUndefined;\r\nvar LineBreaker = require('@foliojs-fork/linebreak');\r\n\r\nvar LEADING = /^(\\s)+/g;\r\nvar TRAILING = /(\\s)+$/g;\r\n\r\n/**\r\n * Creates an instance of TextTools - text measurement utility\r\n *\r\n * @constructor\r\n * @param {FontProvider} fontProvider\r\n */\r\nfunction TextTools(fontProvider) {\r\n\tthis.fontProvider = fontProvider;\r\n}\r\n\r\n/**\r\n * Converts an array of strings (or inline-definition-objects) into a collection\r\n * of inlines and calculated minWidth/maxWidth.\r\n * and their min/max widths\r\n * @param  {Object} textArray - an array of inline-definition-objects (or strings)\r\n * @param  {Object} styleContextStack current style stack\r\n * @return {Object}                   collection of inlines, minWidth, maxWidth\r\n */\r\nTextTools.prototype.buildInlines = function (textArray, styleContextStack) {\r\n\tvar measured = measure(this.fontProvider, textArray, styleContextStack);\r\n\r\n\tvar minWidth = 0,\r\n\t\tmaxWidth = 0,\r\n\t\tcurrentLineWidth;\r\n\r\n\tmeasured.forEach(function (inline) {\r\n\t\tminWidth = Math.max(minWidth, inline.width - inline.leadingCut - inline.trailingCut);\r\n\r\n\t\tif (!currentLineWidth) {\r\n\t\t\tcurrentLineWidth = { width: 0, leadingCut: inline.leadingCut, trailingCut: 0 };\r\n\t\t}\r\n\r\n\t\tcurrentLineWidth.width += inline.width;\r\n\t\tcurrentLineWidth.trailingCut = inline.trailingCut;\r\n\r\n\t\tmaxWidth = Math.max(maxWidth, getTrimmedWidth(currentLineWidth));\r\n\r\n\t\tif (inline.lineEnd) {\r\n\t\t\tcurrentLineWidth = null;\r\n\t\t}\r\n\t});\r\n\r\n\tif (getStyleProperty({}, styleContextStack, 'noWrap', false)) {\r\n\t\tminWidth = maxWidth;\r\n\t}\r\n\r\n\treturn {\r\n\t\titems: measured,\r\n\t\tminWidth: minWidth,\r\n\t\tmaxWidth: maxWidth\r\n\t};\r\n\r\n\tfunction getTrimmedWidth(item) {\r\n\t\treturn Math.max(0, item.width - item.leadingCut - item.trailingCut);\r\n\t}\r\n};\r\n\r\n/**\r\n * Returns size of the specified string (without breaking it) using the current style\r\n * @param  {String} text              text to be measured\r\n * @param  {Object} styleContextStack current style stack\r\n * @return {Object}                   size of the specified string\r\n */\r\nTextTools.prototype.sizeOfString = function (text, styleContextStack) {\r\n\ttext = text ? text.toString().replace(/\\t/g, '    ') : '';\r\n\r\n\t//TODO: refactor - extract from measure\r\n\tvar fontName = getStyleProperty({}, styleContextStack, 'font', 'Roboto');\r\n\tvar fontSize = getStyleProperty({}, styleContextStack, 'fontSize', 12);\r\n\tvar fontFeatures = getStyleProperty({}, styleContextStack, 'fontFeatures', null);\r\n\tvar bold = getStyleProperty({}, styleContextStack, 'bold', false);\r\n\tvar italics = getStyleProperty({}, styleContextStack, 'italics', false);\r\n\tvar lineHeight = getStyleProperty({}, styleContextStack, 'lineHeight', 1);\r\n\tvar characterSpacing = getStyleProperty({}, styleContextStack, 'characterSpacing', 0);\r\n\r\n\tvar font = this.fontProvider.provideFont(fontName, bold, italics);\r\n\r\n\treturn {\r\n\t\twidth: widthOfString(text, font, fontSize, characterSpacing, fontFeatures),\r\n\t\theight: font.lineHeight(fontSize) * lineHeight,\r\n\t\tfontSize: fontSize,\r\n\t\tlineHeight: lineHeight,\r\n\t\tascender: font.ascender / 1000 * fontSize,\r\n\t\tdescender: font.descender / 1000 * fontSize\r\n\t};\r\n};\r\n\r\n/**\r\n * Returns size of the specified rotated string (without breaking it) using the current style\r\n *\r\n * @param  {string} text text to be measured\r\n * @param  {number} angle\r\n * @param  {object} styleContextStack current style stack\r\n * @returns {object} size of the specified string\r\n */\r\nTextTools.prototype.sizeOfRotatedText = function (text, angle, styleContextStack) {\r\n\tvar angleRad = angle * Math.PI / -180;\r\n\tvar size = this.sizeOfString(text, styleContextStack);\r\n\treturn {\r\n\t\twidth: Math.abs(size.height * Math.sin(angleRad)) + Math.abs(size.width * Math.cos(angleRad)),\r\n\t\theight: Math.abs(size.width * Math.sin(angleRad)) + Math.abs(size.height * Math.cos(angleRad))\r\n\t};\r\n}\r\n\r\nTextTools.prototype.widthOfString = function (text, font, fontSize, characterSpacing, fontFeatures) {\r\n\treturn widthOfString(text, font, fontSize, characterSpacing, fontFeatures);\r\n};\r\n\r\nfunction splitWords(text, noWrap) {\r\n\tvar results = [];\r\n\ttext = text.replace(/\\t/g, '    ');\r\n\r\n\tif (noWrap) {\r\n\t\tresults.push({ text: text });\r\n\t\treturn results;\r\n\t}\r\n\r\n\tvar breaker = new LineBreaker(text);\r\n\tvar last = 0;\r\n\tvar bk;\r\n\r\n\twhile (bk = breaker.nextBreak()) {\r\n\t\tvar word = text.slice(last, bk.position);\r\n\r\n\t\tif (bk.required || word.match(/\\r?\\n$|\\r$/)) { // new line\r\n\t\t\tword = word.replace(/\\r?\\n$|\\r$/, '');\r\n\t\t\tresults.push({ text: word, lineEnd: true });\r\n\t\t} else {\r\n\t\t\tresults.push({ text: word });\r\n\t\t}\r\n\r\n\t\tlast = bk.position;\r\n\t}\r\n\r\n\treturn results;\r\n}\r\n\r\nfunction copyStyle(source, destination) {\r\n\tdestination = destination || {};\r\n\tsource = source || {}; //TODO: default style\r\n\r\n\tfor (var key in source) {\r\n\t\tif (key != 'text' && source.hasOwnProperty(key)) {\r\n\t\t\tdestination[key] = source[key];\r\n\t\t}\r\n\t}\r\n\r\n\treturn destination;\r\n}\r\n\r\nfunction normalizeTextArray(array, styleContextStack) {\r\n\tfunction flatten(array) {\r\n\t\treturn array.reduce(function (prev, cur) {\r\n\t\t\tvar current = isArray(cur.text) ? flatten(cur.text) : cur;\r\n\t\t\tvar more = [].concat(current).some(Array.isArray);\r\n\t\t\treturn prev.concat(more ? flatten(current) : current);\r\n\t\t}, []);\r\n\t}\r\n\r\n\tfunction getOneWord(index, words, noWrap) {\r\n\t\tif (isUndefined(words[index])) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tif (words[index].lineEnd) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tvar word = words[index].text;\r\n\r\n\t\tif (noWrap) {\r\n\t\t\tvar tmpWords = splitWords(normalizeString(word), false);\r\n\t\t\tif (isUndefined(tmpWords[tmpWords.length - 1])) {\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t\tword = tmpWords[tmpWords.length - 1].text;\r\n\t\t}\r\n\r\n\t\treturn word;\r\n\t}\r\n\r\n\tvar results = [];\r\n\r\n\tif (!isArray(array)) {\r\n\t\tarray = [array];\r\n\t}\r\n\r\n\tarray = flatten(array);\r\n\r\n\tvar lastWord = null;\r\n\tfor (var i = 0, l = array.length; i < l; i++) {\r\n\t\tvar item = array[i];\r\n\t\tvar style = null;\r\n\t\tvar words;\r\n\r\n\t\tvar noWrap = getStyleProperty(item || {}, styleContextStack, 'noWrap', false);\r\n\t\tif (isObject(item)) {\r\n\t\t\tif (item._textRef && item._textRef._textNodeRef.text) {\r\n\t\t\t\titem.text = item._textRef._textNodeRef.text;\r\n\t\t\t}\r\n\t\t\twords = splitWords(normalizeString(item.text), noWrap);\r\n\t\t\tstyle = copyStyle(item);\r\n\t\t} else {\r\n\t\t\twords = splitWords(normalizeString(item), noWrap);\r\n\t\t}\r\n\r\n\t\tif (lastWord && words.length) {\r\n\t\t\tvar firstWord = getOneWord(0, words, noWrap);\r\n\r\n\t\t\tvar wrapWords = splitWords(normalizeString(lastWord + firstWord), false);\r\n\t\t\tif (wrapWords.length === 1) {\r\n\t\t\t\tresults[results.length - 1].noNewLine = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (var i2 = 0, l2 = words.length; i2 < l2; i2++) {\r\n\t\t\tvar result = {\r\n\t\t\t\ttext: words[i2].text\r\n\t\t\t};\r\n\r\n\t\t\tif (words[i2].lineEnd) {\r\n\t\t\t\tresult.lineEnd = true;\r\n\t\t\t}\r\n\r\n\t\t\tcopyStyle(style, result);\r\n\r\n\t\t\tresults.push(result);\r\n\t\t}\r\n\r\n\t\tlastWord = null;\r\n\t\tif (i + 1 < l) {\r\n\t\t\tlastWord = getOneWord(words.length - 1, words, noWrap);\r\n\t\t}\r\n\t}\r\n\r\n\treturn results;\r\n}\r\n\r\nfunction normalizeString(value) {\r\n\tif (value === undefined || value === null) {\r\n\t\treturn '';\r\n\t} else if (isNumber(value)) {\r\n\t\treturn value.toString();\r\n\t} else if (isString(value)) {\r\n\t\treturn value;\r\n\t} else {\r\n\t\treturn value.toString();\r\n\t}\r\n}\r\n\r\nfunction getStyleProperty(item, styleContextStack, property, defaultValue) {\r\n\tvar value;\r\n\r\n\tif (item[property] !== undefined && item[property] !== null) {\r\n\t\t// item defines this property\r\n\t\treturn item[property];\r\n\t}\r\n\r\n\tif (!styleContextStack) {\r\n\t\treturn defaultValue;\r\n\t}\r\n\r\n\tstyleContextStack.auto(item, function () {\r\n\t\tvalue = styleContextStack.getProperty(property);\r\n\t});\r\n\r\n\tif (value !== null && value !== undefined) {\r\n\t\treturn value;\r\n\t} else {\r\n\t\treturn defaultValue;\r\n\t}\r\n}\r\n\r\nfunction measure(fontProvider, textArray, styleContextStack) {\r\n\tvar normalized = normalizeTextArray(textArray, styleContextStack);\r\n\r\n\tif (normalized.length) {\r\n\t\tvar leadingIndent = getStyleProperty(normalized[0], styleContextStack, 'leadingIndent', 0);\r\n\r\n\t\tif (leadingIndent) {\r\n\t\t\tnormalized[0].leadingCut = -leadingIndent;\r\n\t\t\tnormalized[0].leadingIndent = leadingIndent;\r\n\t\t}\r\n\t}\r\n\r\n\tnormalized.forEach(function (item) {\r\n\t\tvar fontName = getStyleProperty(item, styleContextStack, 'font', 'Roboto');\r\n\t\tvar fontSize = getStyleProperty(item, styleContextStack, 'fontSize', 12);\r\n\t\tvar fontFeatures = getStyleProperty(item, styleContextStack, 'fontFeatures', null);\r\n\t\tvar bold = getStyleProperty(item, styleContextStack, 'bold', false);\r\n\t\tvar italics = getStyleProperty(item, styleContextStack, 'italics', false);\r\n\t\tvar color = getStyleProperty(item, styleContextStack, 'color', 'black');\r\n\t\tvar decoration = getStyleProperty(item, styleContextStack, 'decoration', null);\r\n\t\tvar decorationColor = getStyleProperty(item, styleContextStack, 'decorationColor', null);\r\n\t\tvar decorationStyle = getStyleProperty(item, styleContextStack, 'decorationStyle', null);\r\n\t\tvar background = getStyleProperty(item, styleContextStack, 'background', null);\r\n\t\tvar lineHeight = getStyleProperty(item, styleContextStack, 'lineHeight', 1);\r\n\t\tvar characterSpacing = getStyleProperty(item, styleContextStack, 'characterSpacing', 0);\r\n\t\tvar link = getStyleProperty(item, styleContextStack, 'link', null);\r\n\t\tvar linkToPage = getStyleProperty(item, styleContextStack, 'linkToPage', null);\r\n\t\tvar linkToDestination = getStyleProperty(item, styleContextStack, 'linkToDestination', null);\r\n\t\tvar noWrap = getStyleProperty(item, styleContextStack, 'noWrap', null);\r\n\t\tvar preserveLeadingSpaces = getStyleProperty(item, styleContextStack, 'preserveLeadingSpaces', false);\r\n\t\tvar preserveTrailingSpaces = getStyleProperty(item, styleContextStack, 'preserveTrailingSpaces', false);\r\n\t\tvar opacity = getStyleProperty(item, styleContextStack, 'opacity', 1);\r\n\t\tvar sup = getStyleProperty(item, styleContextStack, 'sup', false);\r\n\t\tvar sub = getStyleProperty(item, styleContextStack, 'sub', false);\r\n\r\n\t\tif ((sup || sub) && item.fontSize === undefined) {\r\n\t\t\t// font size reduction taken from here: https://en.wikipedia.org/wiki/Subscript_and_superscript#Desktop_publishing\r\n\t\t\tfontSize *= 0.58\r\n\t\t}\r\n\r\n\t\tvar font = fontProvider.provideFont(fontName, bold, italics);\r\n\r\n\t\titem.width = widthOfString(item.text, font, fontSize, characterSpacing, fontFeatures);\r\n\t\titem.height = font.lineHeight(fontSize) * lineHeight;\r\n\r\n\t\tif (!item.leadingCut) {\r\n\t\t\titem.leadingCut = 0;\r\n\t\t}\r\n\r\n\t\tvar leadingSpaces;\r\n\t\tif (!preserveLeadingSpaces && (leadingSpaces = item.text.match(LEADING))) {\r\n\t\t\titem.leadingCut += widthOfString(leadingSpaces[0], font, fontSize, characterSpacing, fontFeatures);\r\n\t\t}\r\n\r\n\t\tvar trailingSpaces;\r\n\t\tif (!preserveTrailingSpaces && (trailingSpaces = item.text.match(TRAILING))) {\r\n\t\t\titem.trailingCut = widthOfString(trailingSpaces[0], font, fontSize, characterSpacing, fontFeatures);\r\n\t\t} else {\r\n\t\t\titem.trailingCut = 0;\r\n\t\t}\r\n\r\n\t\titem.alignment = getStyleProperty(item, styleContextStack, 'alignment', 'left');\r\n\t\titem.font = font;\r\n\t\titem.fontSize = fontSize;\r\n\t\titem.fontFeatures = fontFeatures;\r\n\t\titem.characterSpacing = characterSpacing;\r\n\t\titem.color = color;\r\n\t\titem.decoration = decoration;\r\n\t\titem.decorationColor = decorationColor;\r\n\t\titem.decorationStyle = decorationStyle;\r\n\t\titem.background = background;\r\n\t\titem.link = link;\r\n\t\titem.linkToPage = linkToPage;\r\n\t\titem.linkToDestination = linkToDestination;\r\n\t\titem.noWrap = noWrap;\r\n\t\titem.opacity = opacity;\r\n\t\titem.sup = sup;\r\n\t\titem.sub = sub;\r\n\t});\r\n\r\n\treturn normalized;\r\n}\r\n\r\nfunction widthOfString(text, font, fontSize, characterSpacing, fontFeatures) {\r\n\treturn font.widthOfString(text, fontSize, fontFeatures) + ((characterSpacing || 0) * (text.length - 1));\r\n}\r\n\r\nmodule.exports = TextTools;\r\n", "'use strict';\r\n\r\nfunction TraversalTracker() {\r\n\tthis.events = {};\r\n}\r\n\r\nTraversalTracker.prototype.startTracking = function (event, callback) {\r\n\tvar callbacks = this.events[event] || (this.events[event] = []);\r\n\r\n\tif (callbacks.indexOf(callback) < 0) {\r\n\t\tcallbacks.push(callback);\r\n\t}\r\n};\r\n\r\nTraversalTracker.prototype.stopTracking = function (event, callback) {\r\n\tvar callbacks = this.events[event];\r\n\r\n\tif (!callbacks) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tvar index = callbacks.indexOf(callback);\r\n\tif (index >= 0) {\r\n\t\tcallbacks.splice(index, 1);\r\n\t}\r\n};\r\n\r\nTraversalTracker.prototype.emit = function (event) {\r\n\tvar args = Array.prototype.slice.call(arguments, 1);\r\n\tvar callbacks = this.events[event];\r\n\r\n\tif (!callbacks) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tcallbacks.forEach(function (callback) {\r\n\t\tcallback.apply(this, args);\r\n\t});\r\n};\r\n\r\nTraversalTracker.prototype.auto = function (event, callback, innerFunction) {\r\n\tthis.startTracking(event, callback);\r\n\tinnerFunction();\r\n\tthis.stopTracking(event, callback);\r\n};\r\n\r\nmodule.exports = TraversalTracker;\r\n", "/* (ignored) */", "/* (ignored) */", "/* (ignored) */", "/* (ignored) */", "'use strict';\n\nvar possibleNames = [\n\t'BigInt64Array',\n\t'BigUint64Array',\n\t'Float32Array',\n\t'Float64Array',\n\t'Int16Array',\n\t'Int32Array',\n\t'Int8Array',\n\t'Uint16Array',\n\t'Uint32Array',\n\t'Uint8Array',\n\t'Uint8ClampedArray'\n];\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\n\nmodule.exports = function availableTypedArrays() {\n\tvar out = [];\n\tfor (var i = 0; i < possibleNames.length; i++) {\n\t\tif (typeof g[possibleNames[i]] === 'function') {\n\t\t\tout[out.length] = possibleNames[i];\n\t\t}\n\t}\n\treturn out;\n};\n", "var $c5L0i$base64js = require(\"base64-js\");\nvar $c5L0i$unicodetrie = require(\"unicode-trie\");\n\nfunction $parcel$interopDefault(a) {\n  return a && a.__esModule ? a.default : a;\n}\nfunction $parcel$defineInteropFlag(a) {\n  Object.defineProperty(a, '__esModule', {value: true, configurable: true});\n}\nfunction $parcel$export(e, n, v, s) {\n  Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});\n}\n\n$parcel$defineInteropFlag(module.exports);\n\n$parcel$export(module.exports, \"getCategory\", () => $43d7963e56408b24$export$410364bbb673ddbc);\n$parcel$export(module.exports, \"getCombiningClass\", () => $43d7963e56408b24$export$c03b919c6651ed55);\n$parcel$export(module.exports, \"getScript\", () => $43d7963e56408b24$export$941569448d136665);\n$parcel$export(module.exports, \"getEastAsianWidth\", () => $43d7963e56408b24$export$92f6187db8ca6d26);\n$parcel$export(module.exports, \"getNumericValue\", () => $43d7963e56408b24$export$7d1258ebb7625a0d);\n$parcel$export(module.exports, \"isAlphabetic\", () => $43d7963e56408b24$export$52c8ea63abd07594);\n$parcel$export(module.exports, \"isDigit\", () => $43d7963e56408b24$export$727d9dbc4fbb948f);\n$parcel$export(module.exports, \"isPunctuation\", () => $43d7963e56408b24$export$a5b49f4dc6a07d2c);\n$parcel$export(module.exports, \"isLowerCase\", () => $43d7963e56408b24$export$7b6804e8df61fcf5);\n$parcel$export(module.exports, \"isUpperCase\", () => $43d7963e56408b24$export$aebd617640818cda);\n$parcel$export(module.exports, \"isTitleCase\", () => $43d7963e56408b24$export$de8b4ee23b2cf823);\n$parcel$export(module.exports, \"isWhiteSpace\", () => $43d7963e56408b24$export$3c52dd84024ae72c);\n$parcel$export(module.exports, \"isBaseForm\", () => $43d7963e56408b24$export$a11bdcffe109e74b);\n$parcel$export(module.exports, \"isMark\", () => $43d7963e56408b24$export$e33ad6871e762338);\n$parcel$export(module.exports, \"default\", () => $43d7963e56408b24$export$2e2bcd8739ae039);\n\n\nvar $29668e65f2091c2c$exports = {};\n$29668e65f2091c2c$exports = JSON.parse('{\"categories\":[\"Cc\",\"Zs\",\"Po\",\"Sc\",\"Ps\",\"Pe\",\"Sm\",\"Pd\",\"Nd\",\"Lu\",\"Sk\",\"Pc\",\"Ll\",\"So\",\"Lo\",\"Pi\",\"Cf\",\"No\",\"Pf\",\"Lt\",\"Lm\",\"Mn\",\"Me\",\"Mc\",\"Nl\",\"Zl\",\"Zp\",\"Cs\",\"Co\"],\"combiningClasses\":[\"Not_Reordered\",\"Above\",\"Above_Right\",\"Below\",\"Attached_Above_Right\",\"Attached_Below\",\"Overlay\",\"Iota_Subscript\",\"Double_Below\",\"Double_Above\",\"Below_Right\",\"Above_Left\",\"CCC10\",\"CCC11\",\"CCC12\",\"CCC13\",\"CCC14\",\"CCC15\",\"CCC16\",\"CCC17\",\"CCC18\",\"CCC19\",\"CCC20\",\"CCC21\",\"CCC22\",\"CCC23\",\"CCC24\",\"CCC25\",\"CCC30\",\"CCC31\",\"CCC32\",\"CCC27\",\"CCC28\",\"CCC29\",\"CCC33\",\"CCC34\",\"CCC35\",\"CCC36\",\"Nukta\",\"Virama\",\"CCC84\",\"CCC91\",\"CCC103\",\"CCC107\",\"CCC118\",\"CCC122\",\"CCC129\",\"CCC130\",\"CCC132\",\"Attached_Above\",\"Below_Left\",\"Left\",\"Kana_Voicing\",\"CCC26\",\"Right\"],\"scripts\":[\"Common\",\"Latin\",\"Bopomofo\",\"Inherited\",\"Greek\",\"Coptic\",\"Cyrillic\",\"Armenian\",\"Hebrew\",\"Arabic\",\"Syriac\",\"Thaana\",\"Nko\",\"Samaritan\",\"Mandaic\",\"Devanagari\",\"Bengali\",\"Gurmukhi\",\"Gujarati\",\"Oriya\",\"Tamil\",\"Telugu\",\"Kannada\",\"Malayalam\",\"Sinhala\",\"Thai\",\"Lao\",\"Tibetan\",\"Myanmar\",\"Georgian\",\"Hangul\",\"Ethiopic\",\"Cherokee\",\"Canadian_Aboriginal\",\"Ogham\",\"Runic\",\"Tagalog\",\"Hanunoo\",\"Buhid\",\"Tagbanwa\",\"Khmer\",\"Mongolian\",\"Limbu\",\"Tai_Le\",\"New_Tai_Lue\",\"Buginese\",\"Tai_Tham\",\"Balinese\",\"Sundanese\",\"Batak\",\"Lepcha\",\"Ol_Chiki\",\"Braille\",\"Glagolitic\",\"Tifinagh\",\"Han\",\"Hiragana\",\"Katakana\",\"Yi\",\"Lisu\",\"Vai\",\"Bamum\",\"Syloti_Nagri\",\"Phags_Pa\",\"Saurashtra\",\"Kayah_Li\",\"Rejang\",\"Javanese\",\"Cham\",\"Tai_Viet\",\"Meetei_Mayek\",\"null\",\"Linear_B\",\"Lycian\",\"Carian\",\"Old_Italic\",\"Gothic\",\"Old_Permic\",\"Ugaritic\",\"Old_Persian\",\"Deseret\",\"Shavian\",\"Osmanya\",\"Osage\",\"Elbasan\",\"Caucasian_Albanian\",\"Linear_A\",\"Cypriot\",\"Imperial_Aramaic\",\"Palmyrene\",\"Nabataean\",\"Hatran\",\"Phoenician\",\"Lydian\",\"Meroitic_Hieroglyphs\",\"Meroitic_Cursive\",\"Kharoshthi\",\"Old_South_Arabian\",\"Old_North_Arabian\",\"Manichaean\",\"Avestan\",\"Inscriptional_Parthian\",\"Inscriptional_Pahlavi\",\"Psalter_Pahlavi\",\"Old_Turkic\",\"Old_Hungarian\",\"Hanifi_Rohingya\",\"Old_Sogdian\",\"Sogdian\",\"Elymaic\",\"Brahmi\",\"Kaithi\",\"Sora_Sompeng\",\"Chakma\",\"Mahajani\",\"Sharada\",\"Khojki\",\"Multani\",\"Khudawadi\",\"Grantha\",\"Newa\",\"Tirhuta\",\"Siddham\",\"Modi\",\"Takri\",\"Ahom\",\"Dogra\",\"Warang_Citi\",\"Nandinagari\",\"Zanabazar_Square\",\"Soyombo\",\"Pau_Cin_Hau\",\"Bhaiksuki\",\"Marchen\",\"Masaram_Gondi\",\"Gunjala_Gondi\",\"Makasar\",\"Cuneiform\",\"Egyptian_Hieroglyphs\",\"Anatolian_Hieroglyphs\",\"Mro\",\"Bassa_Vah\",\"Pahawh_Hmong\",\"Medefaidrin\",\"Miao\",\"Tangut\",\"Nushu\",\"Duployan\",\"SignWriting\",\"Nyiakeng_Puachue_Hmong\",\"Wancho\",\"Mende_Kikakui\",\"Adlam\"],\"eaw\":[\"N\",\"Na\",\"A\",\"W\",\"H\",\"F\"]}');\n\n\nconst $43d7963e56408b24$var$trie = new (0, ($parcel$interopDefault($c5L0i$unicodetrie)))((0, ($parcel$interopDefault($c5L0i$base64js))).toByteArray(\"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\"));\nconst $43d7963e56408b24$var$log2 = Math.log2 || ((n)=>Math.log(n) / Math.LN2);\nconst $43d7963e56408b24$var$bits = (n)=>$43d7963e56408b24$var$log2(n) + 1 | 0;\n// compute the number of bits stored for each field\nconst $43d7963e56408b24$var$CATEGORY_BITS = $43d7963e56408b24$var$bits((0, (/*@__PURE__*/$parcel$interopDefault($29668e65f2091c2c$exports))).categories.length - 1);\nconst $43d7963e56408b24$var$COMBINING_BITS = $43d7963e56408b24$var$bits((0, (/*@__PURE__*/$parcel$interopDefault($29668e65f2091c2c$exports))).combiningClasses.length - 1);\nconst $43d7963e56408b24$var$SCRIPT_BITS = $43d7963e56408b24$var$bits((0, (/*@__PURE__*/$parcel$interopDefault($29668e65f2091c2c$exports))).scripts.length - 1);\nconst $43d7963e56408b24$var$EAW_BITS = $43d7963e56408b24$var$bits((0, (/*@__PURE__*/$parcel$interopDefault($29668e65f2091c2c$exports))).eaw.length - 1);\nconst $43d7963e56408b24$var$NUMBER_BITS = 10;\n// compute shift and mask values for each field\nconst $43d7963e56408b24$var$CATEGORY_SHIFT = $43d7963e56408b24$var$COMBINING_BITS + $43d7963e56408b24$var$SCRIPT_BITS + $43d7963e56408b24$var$EAW_BITS + $43d7963e56408b24$var$NUMBER_BITS;\nconst $43d7963e56408b24$var$COMBINING_SHIFT = $43d7963e56408b24$var$SCRIPT_BITS + $43d7963e56408b24$var$EAW_BITS + $43d7963e56408b24$var$NUMBER_BITS;\nconst $43d7963e56408b24$var$SCRIPT_SHIFT = $43d7963e56408b24$var$EAW_BITS + $43d7963e56408b24$var$NUMBER_BITS;\nconst $43d7963e56408b24$var$EAW_SHIFT = $43d7963e56408b24$var$NUMBER_BITS;\nconst $43d7963e56408b24$var$CATEGORY_MASK = (1 << $43d7963e56408b24$var$CATEGORY_BITS) - 1;\nconst $43d7963e56408b24$var$COMBINING_MASK = (1 << $43d7963e56408b24$var$COMBINING_BITS) - 1;\nconst $43d7963e56408b24$var$SCRIPT_MASK = (1 << $43d7963e56408b24$var$SCRIPT_BITS) - 1;\nconst $43d7963e56408b24$var$EAW_MASK = (1 << $43d7963e56408b24$var$EAW_BITS) - 1;\nconst $43d7963e56408b24$var$NUMBER_MASK = (1 << $43d7963e56408b24$var$NUMBER_BITS) - 1;\nfunction $43d7963e56408b24$export$410364bbb673ddbc(codePoint) {\n    const val = $43d7963e56408b24$var$trie.get(codePoint);\n    return (0, (/*@__PURE__*/$parcel$interopDefault($29668e65f2091c2c$exports))).categories[val >> $43d7963e56408b24$var$CATEGORY_SHIFT & $43d7963e56408b24$var$CATEGORY_MASK];\n}\nfunction $43d7963e56408b24$export$c03b919c6651ed55(codePoint) {\n    const val = $43d7963e56408b24$var$trie.get(codePoint);\n    return (0, (/*@__PURE__*/$parcel$interopDefault($29668e65f2091c2c$exports))).combiningClasses[val >> $43d7963e56408b24$var$COMBINING_SHIFT & $43d7963e56408b24$var$COMBINING_MASK];\n}\nfunction $43d7963e56408b24$export$941569448d136665(codePoint) {\n    const val = $43d7963e56408b24$var$trie.get(codePoint);\n    return (0, (/*@__PURE__*/$parcel$interopDefault($29668e65f2091c2c$exports))).scripts[val >> $43d7963e56408b24$var$SCRIPT_SHIFT & $43d7963e56408b24$var$SCRIPT_MASK];\n}\nfunction $43d7963e56408b24$export$92f6187db8ca6d26(codePoint) {\n    const val = $43d7963e56408b24$var$trie.get(codePoint);\n    return (0, (/*@__PURE__*/$parcel$interopDefault($29668e65f2091c2c$exports))).eaw[val >> $43d7963e56408b24$var$EAW_SHIFT & $43d7963e56408b24$var$EAW_MASK];\n}\nfunction $43d7963e56408b24$export$7d1258ebb7625a0d(codePoint) {\n    let val = $43d7963e56408b24$var$trie.get(codePoint);\n    let num = val & $43d7963e56408b24$var$NUMBER_MASK;\n    if (num === 0) return null;\n    else if (num <= 50) return num - 1;\n    else if (num < 0x1e0) {\n        const numerator = (num >> 4) - 12;\n        const denominator = (num & 0xf) + 1;\n        return numerator / denominator;\n    } else if (num < 0x300) {\n        val = (num >> 5) - 14;\n        let exp = (num & 0x1f) + 2;\n        while(exp > 0){\n            val *= 10;\n            exp--;\n        }\n        return val;\n    } else {\n        val = (num >> 2) - 0xbf;\n        let exp = (num & 3) + 1;\n        while(exp > 0){\n            val *= 60;\n            exp--;\n        }\n        return val;\n    }\n}\nfunction $43d7963e56408b24$export$52c8ea63abd07594(codePoint) {\n    const category = $43d7963e56408b24$export$410364bbb673ddbc(codePoint);\n    return category === \"Lu\" || category === \"Ll\" || category === \"Lt\" || category === \"Lm\" || category === \"Lo\" || category === \"Nl\";\n}\nfunction $43d7963e56408b24$export$727d9dbc4fbb948f(codePoint) {\n    return $43d7963e56408b24$export$410364bbb673ddbc(codePoint) === \"Nd\";\n}\nfunction $43d7963e56408b24$export$a5b49f4dc6a07d2c(codePoint) {\n    const category = $43d7963e56408b24$export$410364bbb673ddbc(codePoint);\n    return category === \"Pc\" || category === \"Pd\" || category === \"Pe\" || category === \"Pf\" || category === \"Pi\" || category === \"Po\" || category === \"Ps\";\n}\nfunction $43d7963e56408b24$export$7b6804e8df61fcf5(codePoint) {\n    return $43d7963e56408b24$export$410364bbb673ddbc(codePoint) === \"Ll\";\n}\nfunction $43d7963e56408b24$export$aebd617640818cda(codePoint) {\n    return $43d7963e56408b24$export$410364bbb673ddbc(codePoint) === \"Lu\";\n}\nfunction $43d7963e56408b24$export$de8b4ee23b2cf823(codePoint) {\n    return $43d7963e56408b24$export$410364bbb673ddbc(codePoint) === \"Lt\";\n}\nfunction $43d7963e56408b24$export$3c52dd84024ae72c(codePoint) {\n    const category = $43d7963e56408b24$export$410364bbb673ddbc(codePoint);\n    return category === \"Zs\" || category === \"Zl\" || category === \"Zp\";\n}\nfunction $43d7963e56408b24$export$a11bdcffe109e74b(codePoint) {\n    const category = $43d7963e56408b24$export$410364bbb673ddbc(codePoint);\n    return category === \"Nd\" || category === \"No\" || category === \"Nl\" || category === \"Lu\" || category === \"Ll\" || category === \"Lt\" || category === \"Lm\" || category === \"Lo\" || category === \"Me\" || category === \"Mc\";\n}\nfunction $43d7963e56408b24$export$e33ad6871e762338(codePoint) {\n    const category = $43d7963e56408b24$export$410364bbb673ddbc(codePoint);\n    return category === \"Mn\" || category === \"Me\" || category === \"Mc\";\n}\nvar // Backwards compatibility.\n$43d7963e56408b24$export$2e2bcd8739ae039 = {\n    getCategory: $43d7963e56408b24$export$410364bbb673ddbc,\n    getCombiningClass: $43d7963e56408b24$export$c03b919c6651ed55,\n    getScript: $43d7963e56408b24$export$941569448d136665,\n    getEastAsianWidth: $43d7963e56408b24$export$92f6187db8ca6d26,\n    getNumericValue: $43d7963e56408b24$export$7d1258ebb7625a0d,\n    isAlphabetic: $43d7963e56408b24$export$52c8ea63abd07594,\n    isDigit: $43d7963e56408b24$export$727d9dbc4fbb948f,\n    isPunctuation: $43d7963e56408b24$export$a5b49f4dc6a07d2c,\n    isLowerCase: $43d7963e56408b24$export$7b6804e8df61fcf5,\n    isUpperCase: $43d7963e56408b24$export$aebd617640818cda,\n    isTitleCase: $43d7963e56408b24$export$de8b4ee23b2cf823,\n    isWhiteSpace: $43d7963e56408b24$export$3c52dd84024ae72c,\n    isBaseForm: $43d7963e56408b24$export$a11bdcffe109e74b,\n    isMark: $43d7963e56408b24$export$e33ad6871e762338\n};\n\n\n//# sourceMappingURL=main.cjs.map\n", "// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n", "__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();", "__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};", "", "// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(2536);\n", "", "this.pdfMake = this.pdfMake || {}; this.pdfMake.vfs = {\r\n  \"Roboto-Italic.ttf\": \"AAEAAAARAQAABAAQR0RFRqWLoiAAAdT4AAACWEdQT1PInCKzAAHXUAAAZfhHU1VChRYO9AACPUgAABX2T1MvMpeDsUwAAAGYAAAAYGNtYXDOyFo6AAAWdAAABoJjdnQgO/gmfQAAL1AAAAD+ZnBnbagFhDIAABz4AAAPhmdhc3AACAAZAAHU7AAAAAxnbHlmJ9ZJigAAOpAAAZd6aGVhZAakHScAAAEcAAAANmhoZWEMnBKaAAABVAAAACRobXR4O9/cTQAAAfgAABR8bG9jYY3Y7xYAADBQAAAKQG1heHAIzxDGAAABeAAAACBuYW1lOSJt4gAB0gwAAALAcG9zdP9hAGQAAdTMAAAAIHByZXB5WM7TAAAsgAAAAs4AAQAAAAMBSDPLHDFfDzz1ABsIAAAAAADE8BEuAAAAAN8Gv2v6N/3VCUMIcwACAAkAAgAAAAAAAAABAAAHbP4MAAAJA/o3/mwJQwgAAbMAAAAAAAAAAAAAAAAFHwABAAAFHwCpABUAdgAHAAIAEAAvAJoAAALmD3UAAwABAAQEiQGQAAUAAAWaBTMAAAEfBZoFMwAAA9EAZgIAAAACAAAAAAAAAAAA4AAC/1AAIFsAAAAgAAAAAEdPT0cAAQAA//0GAP4AAGYHmgIAIAABnwAAAAAEOgWwAAAAIAADA5YAZAAAAAAAAAAAAfcAAAH3AAACAABEAnwAyQTHAFIEXABJBa8AugTUADkBWwCsAqgAbQK0/5ADWABrBGcATAGH/48CJQAaAgwANAM0/5AEXABqBFwA+gRcABgEXAA1BFwABQRcAHIEXABtBFwAnQRcAEAEXACUAesAKQGu/5sD8gBCBEIAcAQPADsDqwClBvgAQQUQ/68E1gA7BQ0AcAUYADsEaQA7BEoAOwVJAHQFiQA7AhwASQRIAAcE3gA7BC4AOwbGADsFiQA7BVcAcwTlADsFVwBrBMgAOwScACkEoQCpBQgAYwTxAKUG4gDDBN3/1ASpAKgEpv/sAg8AAAMwAMACD/97Az4ATwOA/4ECZgDQBDkAMQRcAB8EEABGBGAARwQdAEUCswB1BFwAAwRGACAB4wAvAdv/EwPvACAB4wAvBs4AHgRJACAEbQBGBFz/1wRpAEYCoQAgBAEALgKKAEMERwBbA8IAbgXVAIAD2v/FA6z/qgPa/+4CoAA3AeUAIgKg/40FRwBpAeX/8QQ/AFAEg//zBYkAEgQUAEMB3f/4BML/2gM/ANoGGQBeA3kAwwOuAFYETACBBhoAXQOPAPgC5gDoBCYAJgLiAF0C4gBvAm8A1QRm/+YDzAB4AgcApQHt/8gC4gDgA4gAvwOtABEFuQC6Bg8AtQYTAJ4Drf/RB0H/gwQkACgFVwAgBJYAOQSdAB8GjgATBI0AXARvAEQEZgA6BHn/4ASjAEYFcAA2AewALwRSAC4ELgAjAhkAJAVgADUEZgAlB2YAVQcMAEcB7QA0BV0AUgKl/0cFVQBmBHAAQwVlAGMEzQBbAfX/CQQYAD8DpwEYA3MBKAOZAPgDUQEHAeMBDgKZAQECGv+uA6kA3gLlAMMCSP/pAAD9agAA/eoAAP0LAAD99AAA/NsAAPy6Af4BIwPtAPQCEQClBFEARAV5/7IFSABnBRf/xARvAAwFiQBEBG//2wWPAFYFXgCFBSkACgRjAEgEmf/xA+QAhQRmAEUEMAApBAUAigRmACUEawB1AoQAhARN/7gDzgBABKAAYARm/90ELQBKBGUASAQMAIcEPABoBXgAQAVvAE4GZABnBH4AUgQiAGcGGABoBdIAogU8AHMIUP/NCGMARAZRALQFiABCBO4ANgXW/4wHC/+rBJwAJQWJAEQFf//LBOEAlAX+AFsFrQBBBVAAywdNAEIHhABCBeMAigbAAEQE3gA2BTwAdgb6AEkE8f/pBEsARwRwADEDQgAuBK//jQXy/6cD8QAgBHsAMAQyADAEfP/IBcEAMQR6ADAEewAwA7sAYAWhAEkEmgAwBDkAeQZHADAGbAAlBNEAVgYQADEENwAxBC0AMgZWADEEQv+/BEYAIAQtAE4Glf/DBq8AMARwACAEewAwBtMAbgX9AE8ENgAvBvUASgXLAC0Erv+6BCb/ogbWAFsF3gBPBp4AJgW1ACoIwABJB5UALwQE/80Dvf/JBUgAZwRpAEME5ACtA+UAhQVIAGcEZgBDBssAdAX1AFIG0wBuBf0ATwUKAGkEJwBMBNgAQAAA/OcAAP0KAAD+FgAA/jsAAPo3AAD6TgXlAEQE0QAwBDYALwT0ADsEZ//XBEIANQN2ACUEwABEA+cAJQdx/6sGOv+nBXkARASeADAE4wA2BFwALgZaALwFWgB2BdsAOwS+ADAHkwA7BYgAJQf8AEIGvwAlBcEAawSvAFwE+//UBBT/xQb2AKwFNABXBZoAywR9AHkFRgDKBEkAlAVGABwGAACIBJoABATjADYEOQAuBdr/ywTT/8gFhwBEBGYAJQXtADsE0AAwByEAOwYYADEFXQBSBIQAPASE//0Env/5A5n/6QUQ/9QEKf/FBNEALgZiADEGsABIBiYArQUEAGgEKQCwA+kAoAeG/+AGRP/aB74APAZvACME0QBlA/4ATQWCAJsE+gB9BTwAaAXe/8sE1//IAwkA8wP/AAAH9AAAA/8AAAf0AAACrgAAAgQAAAFcAAAEZgAAAikAAAGfAAABAgAAANUAAAAAAAACLQAaAi0AGgUiAKYGGQCYA4r/XgGOALABjgCJAYz/lwGOANICyAC4AtAAlQKt/5QESAB3BG3/9gKeAKEDsQA4BTsAOAF0AFIHbwCWAlUAXQJVAAQDh//wAuIAjwLiAGQC4gCKAuIAkALiAKIC4gB7AuIAqgNHAH4C4v/cAuIALQLi/6sC4v+8AuL/sgLi/9gC4v/eAuL/8ALi/8kC4v/4BIP/8wYlAAoGXwA5CD8AOwW+AAkF/AAfBFwAUQWtAEMEAwBKBFIACwUf//IFJv/lBbsAzAOxAEsH+wA1BNsA6wTxAH8GAQC2BqwAkgalAJAGQwC+BG0ATQVkACQEi/+tBHAAqwSgAEEH+wBLAf3/FQRfADMEQgBwA/z/0wQZABgD6QBCAkQAdwJ8AHEB9f/kBNcAdQRNAFkEaAB1BqAAdQagAHUEyAB1BmgAKAAAAAAH9f+rCDUAXALY/+oC2ABsAtgAHAPxAGkD8QAnA/EAcAPwAEsD8QBKA/H/9wPxABcD8f/9A/EAvQPxAEYEA//dBAsAdQQz/7cF5gCUBEYAeQRbAEIEBwBuBAAAEgQpAB0EmABGBDsAHgSYAEwEvQAeBdQAHgOZAB4ENAAeA7L/9gHaACsEvgAeBIgATAOvAB4EAAASBBQABgOFABkDkwAeBEb/sASYAEwERv+wA27/0wSqAB4D0v/WBT4AUgTwAH0EzQAOBUkAbQRaAEgHCv/DBxgAHgVKAG4EqQAeBDkAIAT9/4kF3f+vBB8AEgTGACAELQAfBJz/xAQAAFoFAQAeBEgAVgYgAB4GeQAeBPYAUQXNACAELgAgBFoAIAZFAB4EZP/gA/P/+gYY/68EVwAfBOMAHwUPAGoFlwBQBEcAdQSE/7cGMQBtBEgAVQRIAB4FmAAuBKYAQAQfABIEnABGBBQAAAPGAB8H5AAeBIf/3gLY//sC2P/xAtgAFwLYAB0C2AAvAtgACALYADcDewCTAqABCwPIAB4EGv+ZBJ8ASAUjAEQE/QBEA/UAJgUVAEQD8AAmBF0AHgRaAEgEMAAeBGP/pgHvAPwDiQESAAD9KgPSANMD1gAiA/AAzgPXAM0DkwAeA4QBEgODARMC4gCPAuIAZALiAIoC4gCQAuIAogLiAHsC4gCqBVgAgAWDAIEFaABEBbMAgwW2AIMDuAC8BF8AOQQ3/4EEqv/TBEn/1QQOACsDiQEUAYb/vgZxAEwElgA+Ae3/DwRm/6wEZv/jBGb/uARmACwEZgBWBGYAJARmAGYEZgAbBGYAQARmAQ0CAP8JAf//CQH2AC8B9v94AfYALwQwAB4E2gBkBAEAYgRcAB8EEwBEBHAAQwRpACMEfABCBGv/1wR5AEIEHQBGBFwANQRO/78DaACpBLEALAOZ/+kGCv+aA9oAHgSY//QEvQAeBL0AHgH3AAACJQAaBTYALwU2AC8EZAA+BKEAqQKK//QFEP+vBRD/rwUQ/68FEP+vBRD/rwUQ/68FEP+vBQ0AcARpADsEaQA7BGkAOwRpADsCHABJAhwASQIcAEkCHABJBYkAOwVXAHMFVwBzBVcAcwVXAHMFVwBzBQgAYwUIAGMFCABjBQgAYwSpAKgEOQAxBDkAMQQ5ADEEOQAxBDkAMQQ5ADEEOQAxBBAARgQdAEUEHQBFBB0ARQQdAEUB7AAvAewALwHsAC8B7AAvBEkAIARtAEYEbQBGBG0ARgRtAEYEbQBGBEcAWwRHAFsERwBbBEcAWwOs/6oDrP+qBRD/rwQ5ADEFEP+vBDkAMQUQ/68EOQAxBQ0AcAQQAEYFDQBwBBAARgUNAHAEEABGBQ0AcAQQAEYFGAA7BPYARwRpADsEHQBFBGkAOwQdAEUEaQA7BB0ARQRpADsEHQBFBGkAOwQdAEUFSQB0BFwAAwVJAHQEXAADBUkAdARcAAMFSQB0BFwAAwWJADsERgAgAhwASQHsABECHABJAewALgIcAEkB7AAvAhz/iwHj/20CHABJBmQASQO+AC8ESAAHAfX/CQTeADsD7wAgBC4AOwHjAC8ELgA7AeP/ogQuADsCeQAvBC4AOwK/AC8FiQA7BEkAIAWJADsESQAgBYkAOwRJACAESQAgBVcAcwRtAEYFVwBzBG0ARgVXAHMEbQBGBMgAOwKhACAEyAA7AqH/nwTIADsCoQAgBJwAKQQBAC4EnAApBAEALgScACkEAQAuBJwAKQQBAC4EnAApBAEALgShAKkCigBDBKEAqQKKAEMEoQCpArIAQwUIAGMERwBbBQgAYwRHAFsFCABjBEcAWwUIAGMERwBbBQgAYwRHAFsFCABjBEcAWwbiAMMF1QCABKkAqAOs/6oEqQCoBKb/7APa/+4Epv/sA9r/7gSm/+wD2v/uB0H/gwaOABMFVwAgBGYAOgRd/68EXf+vBAcAbgRj/6YEY/+mBGP/pgRj/6YEY/+mBGP/pgRj/6YEWgBIA8gAHgPIAB4DyAAeA8gAHgHaACsB2gArAdoAKwHaACsEvQAeBJgATASYAEwEmABMBJgATASYAEwEWwBCBFsAQgRbAEIEWwBCBAsAdQRj/6YEY/+mBGP/pgRaAEgEWgBIBFoASARaAEgEXQAeA8gAHgPIAB4DyAAeA8gAHgPIAB4EiABMBIgATASIAEwEiABMBL4AHgHaAA4B2gArAdoAKwHk/4IB2gArA7L/9gQ0AB4DmQAeA5kAHgOZAB4DmQAeBL0AHgS9AB4EvQAeBJgATASYAEwEmABMBCkAHQQpAB0EKQAdBAAAEgQAABIEAAASBAAAEgQHAG4EBwBuBAcAbgRbAEIEWwBCBFsAQgRbAEIEWwBCBFsAQgXmAJQECwB1BAsAdQQD/90EA//dBAP/3QUQ/68EzQADBe0AEQKAABcFawBrBQ3/7QU9AB4ChAAgBRD/rwTWADsEaQA7BKb/7AWJADsCHABJBN4AOwbGADsFiQA7BVcAcwTlADsEoQCpBKkAqATd/9QCHABJBKkAqARjAEgEMAApBGYAJQKEAIQEPABoBFIALgRtAEYEZv/mA8IAbgRO/78ChABlBDwAaARtAEYEPABoBmQAZwRpADsEUQBEBJwAKQIcAEkCHABJBEgABwT9AEQE3gA7BOEAlAUQ/68E1gA7BFEARARpADsFiQBEBsYAOwWJADsFVwBzBYkARATlADsFDQBwBKEAqQTd/9QEOQAxBB0ARQR7ADAEbQBGBFz/1wQQAEYDrP+qA9r/xQQdAEUDQgAuBAEALgHjAC8B7AAvAdv/EwQyADADrP+qBuIAwwXVAIAG4gDDBdUAgAbiAMMF1QCABKkAqAOs/6oBWwCsAnwAyQQAAEQB9f8JAY4AiQbGADsGzgAeBRD/rwQ5ADEEaQA7BYkARAQdAEUEewAwBV4AhQVvAE4E5ACtA+UAhQgZAEYJAwBzBJwAJQPxACAFDQBwBBAARgSpAKgD5ACFAhwASQcL/6sF8v+nAhwASQUQ/68EOQAxBRD/rwQ5ADEHQf+DBo4AEwRpADsEHQBFBV0AUgQYAD8EGAA/Bwv/qwXy/6cEnAAlA/EAIAWJAEQEewAwBYkARAR7ADAFVwBzBG0ARgVIAGcEaQBDBUgAZwRpAEMFPAB2BC0AMgThAJQDrP+qBOEAlAOs/6oE4QCUA6z/qgVQAMsEOQB5BsAARAYQADEEYABHBRD/rwQ5ADEFEP+vBDkAMQUQ/68EOQAxBRD/rwQ5ADEFEP+vBDkAMQUQ/68EOQAxBRD/rwQ5ADEFEP+vBDkAMQUQ/68EOQAxBRD/rwQ5ADEFEP+vBDkAMQUQ/68EOQAxBGkAOwQdAEUEaQA7BB0ARQRpADsEHQBFBGkAOwQdAEUEaQA7BB0ARQRpADsEHQBFBGkAOwQdAEUEaQA7BB0ARQIcAEkB7AAvAhwADQHj//AFVwBzBG0ARgVXAHMEbQBGBVcAcwRtAEYFVwBzBG0ARgVXAHMEbQBGBVcAcwRtAEYFVwBzBG0ARgVVAGYEcABDBVUAZgRwAEMFVQBmBHAAQwVVAGYEcABDBVUAZgRwAEMFCABjBEcAWwUIAGMERwBbBWUAYwTNAFsFZQBjBM0AWwVlAGMEzQBbBWUAYwTNAFsFZQBjBM0AWwSpAKgDrP+qBKkAqAOs/6oEqQCoA6z/qgR+AAAEoQCpA7sAYAVQAMsEOQB5BFEARANCAC4GAACIBJoABARGACAE3gAsBN4ALARRABEDQv/nBREAWAQJADoEqQCoA+QAXgTd/9QD2v/FBDAAKQRK/9cGGQCYBFwAGARcADUEXAAFBFwAcgRwAIEEhABUBHAAlASEAH4FSQB0BFwAAwWJADsESQAgBRD/rwQ5ADEEaQA7BB0ARQIc/+AB7P+NBVcAcwRtAEYEyAA7AqEAIAUIAGMERwBbBIb/sQTWADsEXAAfBRgAOwRgAEcFGAA7BGAARwWJADsERgAgBN4AOwPvACAE3gA7A+8AIAQuADsB4//wBsYAOwbOAB4FiQA7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AAD//wAr/+0FcQSNBCYB8wAAAAcB8gHaAAD///+aAAAGAAYABiYChAAAAQcAdQKXAAAAC7YGGQ8BAU1WACs0AP////T/xgSjBh4GJgKGAAABBwB1AYIAHgALtgMwEQEBW1YAKzQA//8AEv38A+sEngYmAekAAAAHAcoA4v6e//8AlAAABikGHgYmAeUAAAEHAEQBpQAeAAu2BBgKAQFrVgArNAD//wCUAAAGKQYeBiYB5QAAAQcAdQIxAB4AC7YEFgoBAWtWACs0AP//AJQAAAYpBeYGJgHlAAABBwBqAXEAHgANtwUEHwoBAYRWACs0NAD//wB1AAAEZQYeBiYB4wAAAAcARACwAB7///+v/k4EiwWwBiYAJQAAAQcApAFmAAAAC7YDDgUBATlWACs0AP//ADH+TgPHBFAGJgBFAAABBwCkALQAAAALtgI7MQAATVYAKzQA//8AO/5YBLEFsAYmACkAAAEHAKQBJwAKAAu2BBACAABDVgArNAD//wBF/k4D2gRRBiYASQAAAQcApAD+AAAAC7YBLAAAAE1WACs0AP///6b+TgPjBI0GJgJDAAAABwCkAQsAAP//AB7+VgPwBI0GJgI4AAAABwCkANcACP////D+qgGfBDoGJgCNAAABBwCtAzYACgAOtAEHAgEBuP9/sFYAKzQAAAAAAA8AugADAAEECQAAAF4AAAADAAEECQABAAwAXgADAAEECQACAAwAagADAAEECQADABoAdgADAAEECQAEABoAdgADAAEECQAFACYAkAADAAEECQAGABoAtgADAAEECQAHAEAA0AADAAEECQAIAAwBEAADAAEECQAJACYBHAADAAEECQALABQBQgADAAEECQAMABQBQgADAAEECQANAFwBVgADAAEECQAOAFQBsgADAAEECQAZAAwAXgBDAG8AcAB5AHIAaQBnAGgAdAAgADIAMAAxADEAIABHAG8AbwBnAGwAZQAgAEkAbgBjAC4AIABBAGwAbAAgAFIAaQBnAGgAdABzACAAUgBlAHMAZQByAHYAZQBkAC4AUgBvAGIAbwB0AG8ASQB0AGEAbABpAGMAUgBvAGIAbwB0AG8AIABJAHQAYQBsAGkAYwBWAGUAcgBzAGkAbwBuACAAMwAuADAAMAA1ADsAIAAyADAAMgAyAFIAbwBiAG8AdABvAC0ASQB0AGEAbABp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As//8wLR//MC0//zAuH/8wLj//MC5f/zAuf/8wMJ//MDC//zAw3/8wM+//MDm//zA6j/8wPO//MD0f/zA/7/8wQB//MEHP/zBB7/8wQg//MEW//zBF3/8wRf//MEYf/zBGP/8wRl//MEZ//zBGn/8wRr//MEbf/zBG//8wRx//MEsP/zBMn/8wBAAEf/7ABI/+wASf/sAEv/7ABV/+wAlP/sAJn/7AC7/+wAyP/sAMn/7AD3/+wBA//sAR7/7AEi/+wBQv/sAWD/7AFh/+wBa//sArL/7AKz/+wCtP/sArX/7AK2/+wCzv/sAtD/7ALS/+wC1P/sAtb/7ALY/+wC2v/sAtz/7ALe/+wC4P/sAuL/7ALk/+wC5v/sAuj/7AOv/+wD1f/sA9n/7APc/+wD9//sA/3/7AQC/+wEEP/sBBL/7AQT/+wEH//sBC7/7ARI/+wESv/sBEz/7ARO/+wEUP/sBFL/7ARU/+wEVv/sBGr/7ARs/+wEbv/sBHL/7ASt/+wEuv/sBLz/7ABAACf/5gAr/+YAM//mADX/5gCD/+YAk//mAJj/5gCz/+YAuP/CAMQAEADT/+YBCP/mARf/5gEb/+YBHf/mAR//5gEh/+YBQf/mAWr/5gJV/+YCVv/mAlj/5gJZ/+YCl//mAqH/5gKi/+YCo//mAqT/5gKl/+YCzf/mAs//5gLR/+YC0//mAuH/5gLj/+YC5f/mAuf/5gMJ/+YDC//mAw3/5gM+/+YDm//mA6j/5gPO/+YD0f/mA/7/5gQB/+YEHP/mBB7/5gQg/+YEW//mBF3/5gRf/+YEYf/mBGP/5gRl/+YEZ//mBGn/5gRr/+YEbf/mBG//5gRx/+YEsP/mBMn/5gBHABAAAAASAAAAR//nAEj/5wBJ/+cAS//nAFX/5wCU/+cAmf/nALv/5wDEAA8AyP/nAMn/5wD3/+cBA//nAR7/5wEi/+cBQv/nAWD/5wFh/+cBa//nAYYAAAGKAAABjgAAAY8AAAKy/+cCs//nArT/5wK1/+cCtv/nAs7/5wLQ/+cC0v/nAtT/5wLW/+cC2P/nAtr/5wLc/+cC3v/nAuD/5wLi/+cC5P/nAub/5wLo/+cDr//nA9X/5wPZ/+cD3P/nA/f/5wP9/+cEAv/nBBD/5wQS/+cEE//nBB//5wQu/+cESP/nBEr/5wRM/+cETv/nBFD/5wRS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/+sC4P/rAuL/6wLk/+sC5v/rAuj/6wL2/vgDCv/rAwz/6wMO/+sDHwAUAyEAFAMjABQDJv/qAyj/6gMq/+oDLP/qAy7/6gMw/+oDNP/oA0P/wANE/8ADRf/AA0b/wANH/8ADSP/AA0n/wANe/8ADX//AA2D/wAOX/1YDn/9WA6//6wOz/+oDtf/rA7f/6AO6/+oDu//rA7z/6gPD/vgDx/9WA9IAFAPU/94D1f/rA9f/6wPZ/+sD2v/oA9z/6wPj/+gD6//oA/P/VgP0/94D9//rA/z/6AP9/+sEAv/rBAT/6AQJ/1YECv/eBAv/VgQM/94EEP/rBBL/6wQT/+sEHf/rBB//6wQh/+sEJf/oBCf/6AQp/+gELv/rBC//VgQw/94EMf9WBDL/3gQz/1YENP/eBDX/VgQ2/94EN/9WBDj/3gQ5/1YEOv/eBDv/VgQ8/94EPf9WBD7/3gQ//1YEQP/eBEH/VgRC/94EQ/9WBET/3gRF/1YERv/eBEj/6wRK/+sETP/rBE7/6wRQ/+sEUv/rBFT/6wRW/+sEXP/rBF7/6wRg/+sEYv/rBGT/6wRm/+sEaP/rBGr/6wRs/+sEbv/rBHD/6wRy/+sEdP/qBHb/6gR4/+oEev/qBHz/6gR+/+oEgP/qBIL/6ASE/+gEhv/oBIgAFASq/1YEq//eBK3/6wSx/+sEtf/qBLr/6wS8/+sE0AAUBNT/6ATW/+gE3P/ABOP/wAT7/8AAAgCgAAQABAAAAAYABgABAAsADAACABMAEwAEACUAKgAFACwALQALAC8ANgANADgAOAAVADoAPwAWAEUARgAcAEkASgAeAEwATAAgAE8ATwAhAFEAVAAiAFYAVgAmAFgAWAAnAFoAXQAoAF8AXwAsAIoAigAtAJYAlgAuAJ0AnQAvALEAtQAwALcAuQA1ALsAuwA4AL0AvgA5AMAAwQA7AMMAxQA9AMcAzgBAANIA0gBIANQA3gBJAOAA7wBUAPEA8QBkAPYA+ABlAPsA/ABoAP4BAABqAQMBBQBtAQoBCgBwAQ0BDQBxARgBGgByASIBIgB1AS4BMAB2ATMBNQB5ATcBNwB8ATkBOQB9ATsBOwB+AUMBRAB/AVQBVACBAVYBVgCCAVgBWACDAVwBXgCEAYQBhQCHAYcBiQCJAegB6ACMAeoB6wCNAe0B7QCPAfAB8ACQAfsB/QCRAkACQACUAkMCQwCVAlUCVQCWAlcCWACXAosCjACZAo4CjgCbApACpQCcAqoCsQCyArMCtgC6ArsCwAC+AsUCzQDEAs8CzwDNAtEC0QDOAtMC0wDPAtUC1QDQAtcC4ADRAukC6wDbAu0C7QDeAu8C7wDfAvEC8QDgAvMC8wDhAvgC+ADiAvoC+gDjAvwC/ADkAv4C/gDlAwADAADmAwIDDgDnAxADEAD0AxIDEgD1AxQDFAD2Ax8DHwD3AyEDIQD4AyMDIwD5AzEDMQD6AzMDNgD7AzgDOAD/AzoDOgEAA0ADSQEBA1QDWAELA14DYAEQA2UDZQETA3cDegEUA34DgAEYA4kDiQEbA5cDnAEcA58DrgEiA7EDsQEyA7UDtQEzA7cDtwE0A7sDuwE1A74DvwE2A8EDwgE4A8QDygE6A8wDzgFBA9AD1QFEA9cD2AFKA9oD3QFMA+MD5AFQA+YD5gFSA+gD6AFTA+oD7QFUA/AD9QFYA/cD9wFeA/sD/AFfBAEEAQFhBAMEDAFiBA8EEAFsBBIEFQFuBBwEHQFyBCEEIQF0BCMEKQF1BC8EVwF8BFkEWQGlBFsEaAGmBHAEcAG0BIEEhgG1BIgEiAG7BIwEjQG8BJAEkAG+BJIEkwG/BJUElQHBBJcElwHCBKgErAHDBK4ErgHIBLAEsQHJBLMEswHLBLcEuQHMBLsEuwHPBL0EvwHQBMEEwQHTBMMEwwHUBMUEywHVBM0EzQHcBNAE0AHdBNME1wHeBNkE2QHjBNsE3AHkBOAE4AHmBOME4wHnBO4E7gHoBPsE+wHpBQIFAgHqBQYFBgHrAAIAmgAGAAYAAAALAAsAAQAQABAAAgASABIAAwAlACkABAAsADQACQA4AD4AEgBFAEcAGQBJAEkAHABMAEwAHQBRAFQAHgBWAFYAIgBaAFoAIwBcAF4AJACKAIoAJwCWAJYAKACxALQAKQC9AL0ALQDBAMEALgDHAMcALwDUANUAMADXANcAMgDaANoAMwDcAN4ANADgAOYANwDsAOwAPgDuAO4APwD3APcAQAD8APwAQQD+AP8AQgEEAQUARAEKAQoARgENAQ0ARwEYARoASAEuATAASwEzATUATgE3ATcAUQE5ATkAUgE7ATsAUwFDAUQAVAFUAVQAVgFWAVYAVwFYAVgAWAFcAV4AWQGEAYoAXAGOAY8AYwHoAegAZQHtAe0AZgHwAfEAZwH7Af0AaQIPAg8AbAIeAiAAbQJAAkAAcAJDAkMAcQJVAlUAcgJXAlgAcwKLAowAdQKOAo4AdwKQArYAeAK7AsAAnwLFAtUApQLXAuAAtgLpAusAwALtAu0AwwLvAu8AxALxAvEAxQLzAvMAxgL2AvYAxwL4AvgAyAL6AvoAyQL8AvwAygL+Av4AywMAAwAAzAMCAw4AzQMQAxAA2gMSAxIA2wMUAxQA3AMfAx8A3QMhAyEA3gMjAyMA3wMlAyUA4AMnAycA4QMpAykA4gMrAysA4wMtAy0A5AMvAy8A5QMxAzEA5gMzAzsA5wNAA0kA8ANUA1gA+gNeA2AA/wNlA2UBAgN2A3oBAwN+A4ABCAOJA4kBCwOXA5wBDAOfA64BEgOxA7EBIgO1A7UBIwO3A7cBJAO7A7sBJQO+A78BJgPBA8oBKAPMA84BMgPQA9UBNQPXA90BOwPjA+QBQgPmA+YBRAPoA+gBRQPqA+0BRgPwA/UBSgP3A/cBUAP7A/wBUQQBBAwBUwQPBBABXwQSBBUBYQQcBB0BZQQhBCEBZwQjBCkBaAQvBFcBbwRZBFkBmARbBGgBmQRwBHABpwRzBHMBqAR1BHUBqQSBBIYBqgSIBIgBsASMBI0BsQSQBJABswSSBJMBtASVBJUBtgSXBJcBtwSoBKwBuASuBK4BvQSwBLEBvgSzBLMBwAS3BLkBwQS7BLsBxAS9BL8BxQTBBMEByATDBMMByQTFBMsBygTNBM0B0QTQBNAB0gTSBNcB0wTZBNwB2QTgBOAB3QTjBOMB3gTpBOkB3wTuBO4B4AT5BPkB4QT7BPsB4gUCBQIB4wUGBQYB5AACAXQABgAGAA8ACwALAA8AEAAQABoAEgASABoAJQAlAAIAJgAmACQAJwAnABAAKAAoAAEAKQApAAQALgAuAAgALwAvAA0AMAAwABcAMwAzAAEANAA0ACUAOAA4ABIAOQA5AAgAOgA6ABwAOwA7ABgAPAA8ABEAPQA9AAwAPgA+ABkARQBFAAMARgBGAA4ARwBHABMASQBJAAUATABMAAkAUQBSAAkAUwBTAAYAVABUAA4AVgBWABsAWgBaAAcAXABcABUAXQBdAAcAXgBeAB8AigCKAA4AlgCWAAEAsQCxABYAsgCyAAIAswCzAAEAtAC0AAIAvQC9AAcAwQDBAAkAxwDHAA4A1ADVACAA2gDaABEA3gDeACEA5ADkACAA5gDmACAA7ADsACIA7gDuABUA9wD3AA4A/AD8ACMA/gD+ACMA/wD/AA4BBAEFACMBCgEKACMBDQENAAIBGAEYAAYBGQEZABwBGgEaAAcBLgEuAA4BLwEvABYBMAEwACIBMwEzABEBNAE0ABUBNQE1AA0BNwE3AA0BOQE5AA0BQwFDABEBRAFEABUBWAFYAAEBXAFcACIBXQFdABEBXgFeABUBhAGFAA8BhgGGABoBhwGJAA8BigGKABoBjgGPABoB6AHoAB0B7QHtAAoB8AHwAB4B8QHxABQB+wH7AAsB/AH8AAoB/QH9AAsCDwIPABQCHgIgABQCQAJAAAoCQwJDAAsCVQJVABACVwJYAAECiwKMAAECjgKOABICkAKWAAIClwKXABACmAKbAAQCoQKlAAECpgKpAAgCqgKqAAwCqwKxAAMCsgKyABMCswK2AAUCuwK7AAkCvALAAAYCxQLGAAcCxwLHAAICyALIAAMCyQLJAAICygLKAAMCywLLAAICzALMAAMCzQLNABACzgLOABMCzwLPABAC0ALQABMC0QLRABAC0gLSABMC0wLTABAC1ALUABMC1QLVAAEC1wLXAAQC2ALYAAUC2QLZAAQC2gLaAAUC2wLbAAQC3ALcAAUC3QLdAAQC3gLeAAUC3wLfAAQC4ALgAAUC6gLqAAkC9gL2AAgC+AL4AA0C+gL6ABcC/AL8ABcC/gL+ABcDAAMAABcDAwMDAAkDBQMFAAkDBwMIAAkDCQMJAAEDCgMKAAYDCwMLAAEDDAMMAAYDDQMNAAEDDgMOAAYDEAMQABsDEgMSABsDFAMUABsDHwMfABIDIQMhABIDIwMjABIDJQMlAAgDJwMnAAgDKQMpAAgDKwMrAAgDLQMtAAgDLwMvAAgDMQMxABgDMwMzAAwDNAM0AAcDNQM1AAwDNgM2ABkDNwM3AB8DOAM4ABkDOQM5AB8DOgM6ABkDOwM7AB8DQANBAAoDQgNCAB0DQwNJAAsDVANYAAoDXgNgAAsDZQNlAAoDdgN2ABQDdwN6AB4DfgOAAAoDiQOJAB0DlwOXAAIDmAOYAAQDmwObAAEDnAOcAAwDnwOfAAIDoAOgACQDoQOhAAQDogOiABkDpQOlAA0DqAOoAAEDqQOpACUDqgOqABIDqwOr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AAIAAQAAAAAAAAAeACEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbABsAAAAPAA8AGAAPAA8ADwAYAAAAAAAAABgAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgAZACQAAAAOABUAHAAAAAUAAAAFAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAACgAFAAoAAAAAAAAAAAAAAAAAFQAFAAAAAAAVAAAAAAAAABkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZAAAAAAAVAAUAEgAZABUAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgACAAAAAgACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQAAgAAAAAAAAAAAAAAAAAAAAAAAAACAAIAAgACAAIACwALAAsACwAMAAYABgAGAAYABgAGAAYAAQABAAEAAQABAAAAAAAAAAAAAwAHAAcABwAHAAcACAAIAAgACAAJAAkABAAGAAQABgAEAAYAAgABAAIAAQACAAEAAgABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAIAAQACAAEAAgABAAIAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAADAAMAAgAHAAIABwACAAcAAAAAAAAAAAAAAAAAFAARABQAEQAUABEAFAARABQAEQANAAAADQAAAA0AAAALAAgACwAIAAsACAALAAgACwAIAAsACAAWAAAADAAJAAwAFwAdABcAHQAXAB0AAAAAAAIAAAAAAAAAAAAKAAoACgAKAAoACgAKAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAA4ADgAOAA4AEgAKAAoACgAFAAUABQAFAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAHAAcABwAHAAAABUAAAAOAA4ADgAOAA4ADgAkABIAEgAAAAAAAAAEAAAAAAAAAAIADAAAAAAABAAAAAAAFwAAAAAAAAAAAAAAAgAAAAAADAAQAAAADAABAAAAAwAAAAgAAAAHAAAACQAAAAAACAAHAAgAAAAAAAAAAAAAAAAAIwAAAAAAHwAEAAAAAAAAAAAAAAAAAAIAAAAAAAIADQAQAAYAAQADAAcAAwABAAkAEwABAAMAEQAAAAAAAAADAAkAFgAAABYAAAAWAAAADAAJAA8ADwAAAAAADwAAAAMABAAGAAAAAAABAAMAAAAAABoACQABAAIAAAAAAAIAAQAMAAkAAAAQABMAAAAEAAYABAAGAAAAAAAAAAEAAAABAAEAEAATAAAAAAAAAAMAAAADAAIABwACAAEAAgAHAAAAAAAfAAkAHwAJAB8ACQAgACIAAAADAAEABAAGAAQABgAEAAYABAAGAAQABgAEAAYABAAGAAQABgAEAAYABAAGAAQABgAEAAYAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAAAAAAAAAIABwACAAcAAgAHAAIABwACAAcAAgAHAAIABwACAAEAAgABAAIAAQACAAcAAgABAAsACAALAAgAAAAIAAAACAAAAAgAAAAIAAAACAAMAAkADAAJAAwACQAAAA0AAAAgACIAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAABsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMABAAGAAAAAQAAAAAAAgAHAAAAAAAAAAgAAAAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAwACAAAAAAAAAAAAFAARAA0AAAALABoACQAaAAkAFgAAABcAHQAAAAoAAAAAAAAABQASAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAA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BOgB/QH+Af8E7QIAAgAE7gTvAgECAgIDAgoE/AT9AgsCDAINAg4CDwIQBQAFAQUDBQYFDwISAhMCFAIVAhYCFwIYAhkCGgIbAgQCBQIGAgcCCAIJAksCHQIeAh8CIAUJAiECIwIkAiUCJwIpAocDQgNDA0QDRQNGA0cDSANJA0oDSwNMA00DTgNPA1ADUQNSA1MDVANVA1YDVwNYA1kDWgNbA1wDXQOTA14DXwNgA2EDYgNjA2QDZQNmA2cDaANpA2oDawNsA20DbgNvA3ADcQNyA3MFEAN1A3YDdwN4A3kDegN7A3wDfQN+A38DgAOBA4IDgwOEA4UDhgUTA4cDiAOKA4kDiwOMA40DjgOPA5ADkQOSA5QDlQOWBREFEgTcBN0E3gTfBOkE7ATqBOsE8ATxBPIE4AThBOIE+wT+BP8FAgUEBQUCEQUHBPME9AT1BPYE9wT4BPkE+gUUBRUFFgUXBQgFCgULAigFDQIqBQ4FDAImAhwCIgUcBR0AAgcAAPoB9wKCAeEB4AHfAd4B3QHcAdsB2gHZAdgCQwJCAkECQAI4AfYB9QH0AfMB8gHxAfAB7wHuAe0B7AHrAeoB6QHoAecB5gHlAeQB4wHiAfgB+QKEAoYChQKHAoMCiAJiAfoB+wH8Af0B/gH/AgACAQICAgMCBAIFAgYCBwIIAgkCCgILAgwCDQIOAhACEQUPAhICEwIUAhUCFgIXAhgCGQIaAhsCSwIdAh4CHwIgBQkCIQIjAiQCJQImAicCKAIpAisCLAIuAi0DQANBA0IDQwNEA0UDRgNHA0gDSQNKA0sDTANNA04DTwNQA1EDUgNTA1QDVQNWA1cDWANZA1oDWwNcA10DXgNfA2ADYQNiA2MDZANlA2YDZwNoA2kDagNrA2wDbQNuA28DcANxA3IDcwN0BRADdQN2A3cDeAN5A3oDewN8A30DfgN/A4ADgQOCA4MDhAOFA4YFEwOHA4gDigOJA4sDjAONA44DjwOQA5EDkgOTA5QDlQOWBREFEgTcBN0E3gTfBOAE4QTiBOME5ATlBOYE5wToBOkE6gTrBOwE7QTuBO8E8ATxBPIE8wT0BPUE9gT3BPgCDwT5BPoE+wT8BP0E/gT/BQAFAQUCBQMFBAUFBQYFBwUUBRUFFgUXBQgFCgULBQ0CKgUOBQwCHAIiBRwFHQABAAEBewABAAEASwABAAEAuwABAAEANgABAAEAEwABAAIDGQMaAAIG5AbYAAIG5gbYAAEG7gABBvAAAQbyAAIAAQAUAB0AAAABAAIALwBPAAEAAwBJAEsCegACAAAAAQbeAAEABgLLAswC3QLeA2ADaQABAAYATQBOAvID3wPhBFoAAgADAZQBlAAAAdUB1wABAi8CNQAEAAIAAgCoAKwAAQEkAScAAQABAAwAJwAoACsAMwA1AEYARwBIAEsAUwBUAFUAAgACABQAHQAAAmUCbgAKAAIABgBNAE0ABgBOAE4ABALyAvIABQPfA98AAwPhA+EAAgRaBFoAAQACAAQAFAAdAAACdgJ2AAoCgQKBAAsEngSlAAwAAgAGABoAGgAAABwAHAABAloCXwACAmMCYwAIAmUCbgAJAnUCdQATAAEAFAAaABwCWgJbAlwCXQJeAl8CYwJ1AnYCgQSeBJ8EoAShBKIEowSkBKUAAQXeAAEF4AABBeIAAQXkAAEF5gABBegAAQXqAAEF7AABBe4AAQXwAAEF8gABBfQAAQX2AAEF+AABBfoAAgX8BgIAAgYCBggAAgYIBg4AAgYOBhQAAgYUBhoAAgYaBiAAAgYgBiYAAgYmBiwAAgYsBjIAAgYyBjgAAgY4Bj4AAwY+BkQGSgADBkgGTgZUAAMGUgZYBl4AAwZcBmIGaAADBmYGbAZyAAMGcAZ2BnwAAwZ6BoAGhgADBoQGigaQAAQGjgaUBpoGoAAEBpwGogaoBq4ABQaqBrAGtga8BsIABQa8BsIGyAbOBtQABQbOBtQG2gbgBuYABQbgBuYG7AbyBvgABQbyBvgG/gcEBwoABQcEBwoHEAcWBxwABQcWBxwHIgcoBy4ABQcoBy4HNAc6B0AABQc6B0AHRgdMB1IABgdMB1IHWAdeB2QHagAGB2IHaAduB3QHegeAAAYHeAd+B4QHigeQB5YABgeOB5QHmgegB6YHrAAGB6QHqgewB7YHvAfCAAYHugfAB8YHzAfSB9gABgfQB9YH3AfiB+gH7gAHCC4H5gfsB/IH+Af+CAQABwgmB/oIAAgGCAwIEggYAAEA6wAKAEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0AXgCFAIYAhwCJAIoAiwCNAJAAkgCUALsAvAC9AL4AvwDAAMEAwgDDAMQAxQDGAMcAyADJAMoAywDMAM0AzgDqAOsA7ADtAO4A7wDwAPEA8gDzAPQA9QD2APcA+AD5APoA+wD8AP0A/gD/AQABAQECAQMBBAEFAQYBBwEwATQBNgE4AToBPAFCAUQBRgFKAU0BWgKNAo8CqwKsAq0CrgKvArACsQKyArMCtAK1ArYCtwK4ArkCugK7ArwCvQK+Ar8CwALBAsICwwLEAsUCxgLIAsoCzALOAtAC0gLUAtYC2ALaAtwC3gLgAuIC5ALmAugC6gLsAu4C8ALyAvUC9wL5AvsC/QL/AwEDAwMFAwcDCgMMAw4DEAMSAxQDFgMYAxoDHAMeAyADIgMkAyYDKAMqAywDLgMwAzIDNAM3AzkDOwM9Az8DrwOwA7EDsgO0A7UDtgO3A7gDuQO6A7sDvAO9A9QD1QPWA9cD2APZA9oD2wPcA90D3gPfA+AD4QPiA+MD5QPnA+kD6wQABAIEBAQSBBkEHwQlBI8EkASUBJgFGQUbAAEA+gAIAAoAFAAVABYAFwAYABkAGgAbABwAHQAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AD4AZQBnAIEAgwCEAIwAjwCRAJMAsQCyALMAtAC1ALYAtwC4ALkAugDSANMA1ADVANYA1wDYANkA2gDbANwA3QDeAN8A4ADhAOIA4wDkAOUA5gDnAOgA6QEvATMBNQE3ATkBOwFBAUMBRQFJAUsBTAFYAVkBpwGtAbIBtQKLAowCjgKQApECkgKTApQClQKWApcCmAKZApoCmwKcAp0CngKfAqACoQKiAqMCpAKlAqYCpwKoAqkCqgLHAskCywLNAs8C0QLTAtUC1wLZAtsC3QLfAuEC4wLlAucC6QLrAu0C7wLxAvMC9AL2AvgC+gL8Av4DAAMCAwQDBgMJAwsDDQMPAxEDEwMVAxcDGQMbAx0DHwMhAyMDJQMnAykDKwMtAy8DMQMzAzUDNgM4AzoDPAM+A5cDmAOZA5oDmwOcA50DnwOgA6EDogOjA6QDpQOmA6cDqAOpA6oDqwOsA60DrgO+A78DwAPBA8IDwwPEA8UDxgPHA8gDyQPKA8sDzAPNA84DzwPQA9ED0gPTA+QD5gPoA+oD/wQBBAMEGAQeBCQEjgSTBJcFGAUaAcwAAgBNAc0AAgBQAc4AAwBKAE0BzwADAEoAUAABAAEASgHLAAIASgHRAAIAWAHQAAIAWAABAAMASgBXAJUAAAABAAEAAQABAAAAAwS3AAIArQLNAAIAqQS9AAIArQTKAAIAqQS4AAIArQLOAAIAqQSnAAIAqQS+AAIArQRaAAIArQTLAAIAqQM8AAIAqQM+AAIAqQM9AAIAqQM/AAIAqQS2AAIAqQS7AAIBygS5AAIArQSmAAIAqQLnAAIBygPxAAIAqQTFAAIArQMfAAIBygTQAAIArQTVAAIArQTTAAIAqgM2AAIAqQTZAAIArQS8AAIBygS6AAIArQPyAAIAqQTGAAIArQMgAAIBygTRAAIArQTWAAIArQTUAAIAqgM3AAIAqQTaAAIArQS/AAIAqQL4AAIBygTBAAIArQL6AAIAqQL8AAIBygTDAAIArQMVAAIAqQMbAAIBygTOAAIArQPmAAIAqQTXAAIArQPkAAIAqATAAAIAqQL5AAIBygTCAAIArQL7AAIAqQL9AAIBygTEAAIArQMWAAIAqQMcAAIBygTPAAIArQPnAAIAqQTYAAIArQPlAAIAqAMPAAIAqQMRAAIBygTMAAIArQSyAAIArAMQAAIAqQMSAAIBygTNAAIArQSzAAIArAMCAAIAqQMEAAIBygTHAAIArQSoAAIAqAKgAAIAqgKqAAIAqQSBAAIArQPqAAIAqASDAAIAqwSFAAIAqgMDAAIAqQMFAAIBygTIAAIArQSpAAIAqAK7AAIAqgLFAAIAqQSCAAIArQPrAAIAqASEAAIAqwSGAAIAqgK4AAIAqQK3AAIAqARYAAIAqwLsAAIAqgSvAAIArARpAAIAqQRxAAIArQRrAAIAqARtAAIAqwRvAAIAqgRqAAIAqQRyAAIArQRsAAIAqARuAAIAqwRwAAIAqgR3AAIAqQR/AAIArQR5AAIAqAR7AAIAqwR9AAIAqgR4AAIAqQSAAAIArQR6AAIAqAR8AAIAqwR+AAIAqgKRAAIAqQQvAAIArQKQAAIAqAQxAAIAqwKTAAIAqgSqAAIArAKZAAIAqQRHAAIArQKYAAIAqARJAAIAqwRLAAIAqgSsAAIArAKdAAIAqQRZAAIArQKcAAIAqARXAAIAqwLrAAIAqgSuAAIArAKsAAIAqQQwAAIArQKrAAIAqAQyAAIAqwKuAAIAqgSrAAIArAK0AAIAqQRIAAIArQKzAAIAqARKAAIAqwRMAAIAqgStAAIArAK9AAIAqQRcAAIArQK8AAIAqAReAAIAqwK/AAIAqgSxAAIArALCAAIAqQR0AAIArQLBAAIAqAR2AAIAqwMmAAIAqgS1AAIArAKiAAIAqQRbAAIArQKhAAIAqARdAAIAqwKkAAIAqgSwAAIArAKnAAIAqQRzAAIArQKmAAIAqAR1AAIAqwMlAAIAqgS0AAIArATJAAMAqgCpBNIAAwCqAKkAAgARACUAKQAAACsALQAFAC8ANAAIADYAOwAOAD0APgAUAEUASQAWAEsATQAbAE8AVAAeAFYAWwAkAF0AXgAqAIEAgQAsAIMAgwAtAIYAhgAuAIkAiQAvAI0AjQAwAJgAmwAxANAA0AA1AAA=\",\r\n  \"Roboto-Medium.ttf\": \"AAEAAAARAQAABAAQR0RFRqWLoiAAAb9IAAACWEdQT1Pk1zcKAAHBoAAAZixHU1VChRYO9AACJ8wAABX2T1MvMpfnsYsAAAGYAAAAYGNtYXDOyFo6AAAWdAAABoJjdnQgO/gmfQAAL1AAAAD+ZnBnbagFhDIAABz4AAAPhmdhc3AACAAZAAG/PAAAAAxnbHlmoVpeAgAAOpAAAYGiaGVhZAatHSkAAAEcAAAANmhoZWEK9grYAAABVAAAACRobXR4JpFVzgAAAfgAABR8bG9jYSpiho0AADBQAAAKQG1heHAIzxDGAAABeAAAACBuYW1lQlx1PgABvDQAAALmcG9zdP9tAGQAAb8cAAAAIHByZXB5WM7TAAAsgAAAAs4AAQAAAAMBSOm9QH9fDzz1ABkIAAAAAADE8BEuAAAAAN8Gv236Jv3VCWEIcwAAAAkAAgAAAAAAAAABAAAHbP4MAAAJbvom/j4JYQABAAAAAAAAAAAAAAAAAAAFHwABAAAFHwCpABUAdgAHAAIAEAAvAJoAAALmD3UAAwABAAQEiQH0AAUAAAWaBTMAAAEfBZoFMwAAA9EAZgIAAAACAAAAAAAAAAAA4AAC/1AAIFsAAAAgAAAAAEdPT0cAQAAA//0GAP4AAGYHmgIAIAABnwAAAAAEOgWwAAAAIAADA4wAZAAAAAAAAAAAAf0AAAH9AAACHgCMAo4AYATTAFYEjABkBeQAZAUhAFUBVwBSAsUAgQLMACcDjAAcBHEAQgHKACICuABQAjkAhgMfAAEEjABoBIwAqgSMAFIEjABOBIwANwSMAH8EjABzBIwARASMAGcEjABdAhwAfwHrADMEEgA+BIAAjwQoAH4D5AA7By0AWwVOABEFDQCUBTkAZgU5AJQEhQCUBGgAlAVzAGsFrQCUAkQApQRyAC8FDgCUBFIAlAb/AJQFrQCUBYMAZQUbAJQFgwBgBQkAlATYAEsE4AAtBTwAgAUqABEHCwAvBQ0AJgTjAAgE0wBQAiwAhQNVABICLAALA24ANgOVAAICkAA4BFAAVgR/AH0ELQBOBIIAUARJAFEC0wArBIkAUgRyAHoCCgB8AgL/qwQsAH0CCgCMBvgAfAR0AHoEigBOBH8AfQSHAFAC1AB9BB4ASQKqAAoEcwB3A/gAFgXwACMEBgAfA+sADAQGAFECqwA4Af0ArwKrABwFTQB1Ah8AhQSCAGcEtQBfBZ4AXARAAA0B+ACJBPkAXAOSAGMGSQBaA5AAjgPjAFcEawB/BkoAWQPaAJ0DDwCBBEoAXAL1AD0C9QA3ApQAbwTBAJMD6gBJAkQAkAITAGwC9QCCA6cAeQPjAF4FygBfBiIAUwZcAGYD5QBGB37//ARCAEwFgQBpBM8AlQTrAIoGwgBIBKQAaASRAEMEhgBOBJEAgQTsAFAFsAAfAhcAkASaAI0EZAAgAlIAIAWXAJAEhgB9B7AAZQc+AFkCBwCJBY0AVQLQ/94FkQBbBJ0ATQWjAIAE5gB3AiX/rgQ5AFcD3gCQA6oAbgPaAJ0DfgB1AgoAgQKqAHgCTAApA84AdwMoAEsCcwCJAAD8kwAA/WIAAPx0AAD9OgAA/AgAAP0eAmsAzQQ7AG4CRACQBHQAmQXCABoFegBcBTUAIASMAGoFrgCZBIwARwX5AEwFsQBGBVkAbASEAFYEyACXBA0AHgSGAFEEZQBiBA8AWQSGAH0EpwB2AqUAowRoABUEGgBnBPwAMASGAIAEMwBQBI4AUAQqADwEXQB/BdEARgXMAFIGlABlBLQAeASH/+EGeQArBf0AJAVTAGcIgQAtCIwAmQZRAC0FpQCPBQcAkAX9ACYHqQAVBNsASQWmAJIFqAAsBQsAMgZfAE4F+ACOBYUAkQeaAJUH+gCVBiEAFQbwAJkFAgCQBUgAYwdiAKEE6AAXBIAAWgSLAI8DWwCDBPIAJwaHACAEFwBOBJIAhARsAI8ElAAgBgIAjwSRAIQEkgCEA/oAIwXUAFMEzwCEBGUAYAaNAIQG8QB9BSEAIAZvAI8EaQCPBDkAUAaCAJIEcAAuBHL/1wQ5AFIG1gAdBuQAhASG/+gEkgCEB1gAiAZqAHIEaP/hBygAmAYCAIYFFgAaBGMACwdLAKwGPQCaBuUAfgXdAIEJKgClB+4AkAQgACgD9QAyBXoAYASIAE0FGAAQBA0AHgV6AGAEhgBOB1QAiAZWAHUHWACIBmoAcgUQAGcERwBdBPsAcAAA/HAAAPx1AAD9gQAA/aYAAPomAAD6UQYgAJIFEwCEBGj/4QUQAJQEhgB9BGsAjwOjAH0E6gCZBCQAfQgjABUG4AAgBckAmQT7AI8FLgCRBKwAjQaUADQFoAA8BiAAlAUHAIQH3QCUBa0AfQhJAJcG7wB9BjcAZwUEAGAFOQAmBEEAHwcoACkFbwAnBfIAkQTcAGAFcACBBHQAdQWFAIkGGwAKBMT/ywUgAJEEeACNBh8ALAUUACAFrQCZBIYAfQYqAJQFEQCEB3UAlAZ0AI8FjQBVBKMAWwSkAF0EwwAsA6oAJAVpACYEcQAfBPkATwbzAGgG2wBfBlEAPQUoAC8EgwBKBEgAcwe8AEIGpAA/B/UAlAaeAHQFBgBcBC8AVQWoACEFHQBEBU4AfQZGACwFOwAgAxsAZAQUAAAIKQAABBQAAAgpAAACuQAAAgoAAAFcAAAEfwAAAjAAAAGiAAABAAAAANEAAAAAAAACtwBQArcAUAUjAJwGKgB7A5oACAG/AGUBugA3Ac4ANQGjAEsDCwBtAxMAQwMAADUEWwA/BJoAXQLMAIoD/QCNBaoAjQHPAF4HrgBQAnQAbAJpAFUDmQArAvUATAL1ADYC9QBQAvUATgL1ADcC9QBLAvUARwNcAGcC9QBMAvUAggL1AD0C9QA3AvUANgL1AFAC9QBOAvUANwL1AEsC9QBHBLUAYgZuACMGvwCZCJUAlAY7ACMGmwB9BIwAXAXqACMELQAqBJsAJAViAE8FfgArBeQAbgPjAEUIKQCQBQgAbwUUAJYGNwBcBt4AVgbQAF4GrABcBJMAYQWKAKYE3gA/BIAAnASdADsIUgBhAjL/pwSRAGUEgACPBBIAPQQoAH0EDgAlAlEAnAKOAGQB6QBHBRkAKwStABoEvQArBygAKwcoACsFDwArBrcASQAAAAAIMABZCDUAXAL1AD0C9QCCAvUATAQdAE8EHQBXBB0AOAQdAF8EHQBmBB0AMwQdAD0EHQBDBB0AmAQdAFgEKwBBBD4ABgRcABMGCQAnBHkACASIAGkEPwAlBDcAPwRkAHUEvQBNBGsAdgS9AE4E3AB2BgUAdgO3AHYEXgB2A9YAJgH+AIYE3QB2BKcAVgPIAHYENwA/BGgAOgOlAAoDvAB2BHkACAS9AE4EeQAIA50ARgTZAHYEHgBEBaYATwVYAE8E4ABeBZIAIwSAAE8HVgAkB1gAdgWZACUE2AB2BHIAdgVeACcGRQAbBEYAQwTiAHYEXQB2BMsAJARMAB8FYgB2BI0AQwaEAHYHDgB2BWEACQYWAHYEZwB2BIAAPQaPAHYEhABCBCgACwajABsEoAB2BQ0AdgV0ACEF+ABOBFYABgTEABMGlwAjBI0AQwSNAHYGAAAOBM4ATQRHAEMEvQBOBGgAOgP0AEUILQB2BPQAKAL1ADcC9QA2AvUAUAL1AE4C9QA3AvUASwL1AEcDtgCNAq4AmAPgAHYEOgAMBLYAVgVBAJkFKACZBDAAgQU1AJkEKACBBHoAdgSAAE8EYAB2BJoACAH+AJADoQB1AAD8ngP3AHoD+v9RBAsAeQP6AHkDvAB2A50AdQOdAHUC9QBMAvUANgL1AFAC9QBOAvUANwL1AEsC9QBHBXMAaQWeAGkFfwCZBdkAaQXaAGkEKACWBIIAawRYAA8EuwA0BGsAZwQuAEIDoQB2AboAYgaYAE4ErwBuAgz/pwSMADgEjABoBIwALASMAGIEjABfBIwANASMAGwEjABZBIwAZwSMAOYCJv+uAiX/rgIXAJACF//6AhcAkARgAHYE5gBgBDAAOQSIAH0EPgBPBJUATgSRAE4EnQBJBJIAfQSaAE4ESQBRBIkAUARZADQDrQBhBQwAXwPEAAUGRv/sBAcAdgS9AE4FDgA0BNwAdgH9AAACuABQBVcAFwVXABcEkP/1BOAALQKq/+sFTgARBU4AEQVOABEFTgARBU4AEQVOABEFTgARBTkAZgSFAJQEhQCUBIUAlASFAJQCRP/LAkQApQJE/8oCRP++Ba0AlAWDAGUFgwBlBYMAZQWDAGUFgwBlBTwAgAU8AIAFPACABTwAgATjAAgEUABWBFAAVgRQAFYEUABWBFAAVgRQAFYEUABWBC0ATgRJAFEESQBRBEkAUQRJAFECF/+1AhcAkAIX/7MCF/+oBHQAegSKAE4EigBOBIoATgSKAE4EigBOBHMAdwRzAHcEcwB3BHMAdwPrAAwD6wAMBU4AEQRQAFYFTgARBFAAVgVOABEEUABWBTkAZgQtAE4FOQBmBC0ATgU5AGYELQBOBTkAZgQtAE4FOQCUBRgAUASFAJQESQBRBIUAlARJAFEEhQCUBEkAUQSFAJQESQBRBIUAlARJAFEFcwBrBIkAUgVzAGsEiQBSBXMAawSJAFIFcwBrBIkAUgWtAJQEcgB6AkT/tAIX/50CRP/RAhf/uwJE/90CF//GAkQAGAIK//8CRACfBrUApQQLAHwEcgAvAiX/rgUOAJQELAB9BFIAlAIKAIwEUgCUAgoAWQRSAJQCoACMBFIAlALmAIwFrQCUBHQAegWtAJQEdAB6Ba0AlAR0AHoEdP+jBYMAZQSKAE4FgwBlBIoATgWDAGUEigBOBQkAlALUAH0FCQCUAtQAUgUJAJQC1AA3BNgASwQeAEkE2ABLBB4ASQTYAEsEHgBJBNgASwQeAEkE2ABLBB4ASQTgAC0CqgAKBOAALQKqAAoE4AAtAtIACgU8AIAEcwB3BTwAgARzAHcFPACABHMAdwU8AIAEcwB3BTwAgARzAHcFPACABHMAdwcLAC8F8AAjBOMACAPrAAwE4wAIBNMAUAQGAFEE0wBQBAYAUQTTAFAEBgBRB37//AbCAEgFgQBpBIYATgR6/6UEev+lBD8AJQSaAAgEmgAIBJoACASaAAgEmgAIBJoACASaAAgEgABPA+AAdgPgAHYD4AB2A+AAdgH+/6kB/gCGAf7/pwH+/5wE3AB2BL0ATgS9AE4EvQBOBL0ATgS9AE4EiABpBIgAaQSIAGkEiABpBD4ABgSaAAgEmgAIBJoACASAAE8EgABPBIAATwSAAE8EegBhA+AAdgPgAHYD4AB2A+AAdgPgAHYEpwBWBKcAVgSnAFYEpwBWBN0AdgH+/5EB/v+vAf7/ugH+ABcB/gB9A9YAJgReAHYDtwB2A7cAdgO3AHYDtwB2BNwAdgTcAHYE3AB2BL0ATgS9AE4EvQBOBGQAdQRkAHUEZAB1BDcAPwQ3AD8ENwA/BDcAPwQ/ACUEPwAlBD8AJQSIAGkEiABpBIgAaQSIAGkEiABpBIgAaQYJACcEPgAGBD4ABgQrAEEEKwBBBCsAQQVOABEE6f9CBhH/SgKo/04Fl/+0BUf/QQVt/8ICpf+FBU4AEQUNAJQEhQCUBNMAUAWtAJQCRAClBQ4AlAb/AJQFrQCUBYMAZQUbAJQE4AAtBOMACAUNACYCRP++BOMACASEAFYEZQBiBIYAfQKlAKMEXQB/BJoAjQSKAE4EwQCTA/gAFgRZADQCpf/DBF0AfwSKAE4EXQB/BpQAZQSFAJQEdACZBNgASwJEAKUCRP++BHIALwUoAJkFDgCUBQsAMgVOABEFDQCUBHQAmQSFAJQFpgCSBv8AlAWtAJQFgwBlBa4AmQUbAJQFOQBmBOAALQUNACYEUABWBEkAUQSSAIQEigBOBH8AfQQtAE4D6wAMBAYAHwRJAFEDWwCDBB4ASQIKAHwCF/+oAgL/qwRsAI8D6wAMBwsALwXwACMHCwAv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FgoBAWtWACs0AP//ACcAAAXlBesGJgHlAAABBwBqATsAHgANtwUEHwoBAYRWACs0NAD//wAGAAAEOAYeBiYB4wAAAAcARACKAB7//wAR/lcFPwWwBiYAJQAAAQcApAGAAAMAC7YDDgUBATlWACs0AP//AFb+XAP5BE4GJgBFAAABBwCkALQACAALtgI7MQAATVYAKzQA//8AlP5eBE0FsAYmACkAAAEHAKQBQgAKAAu2BBACAABDVgArNAD//wBR/lQECgROBiYASQAAAQcApAEFAAAAC7YBLAAAAE1WACs0AP//AAj+VASRBI0GJgJDAAAABwCkASIAAP//AHb+XAO2BI0GJgI4AAAABwCkAPEACP//AHj+oQGLBDoGJgCNAAABBwCtA1oACgAOtAEHAgEBuP9/sFYAKzQAAAAAABEA0gADAAEECQAAAF4AAAADAAEECQABABoAXgADAAEECQACAA4AeAADAAEECQADABoAXgADAAEECQAEABoAXgADAAEECQAFACYAhgADAAEECQAGABoArAADAAEECQAHAEAAxgADAAEECQAIAAwBBgADAAEECQAJACYBEgADAAEECQALABQBOAADAAEECQAMABQBOAADAAEECQANAFwBTAADAAEECQAOAFQBqAADAAEECQAQAAwB/AADAAEECQARAAwCCAADAAEECQAZAAwB/ABDAG8AcAB5AHIAaQBnAGgAdAAgADIAMAAxADEAIABHAG8AbwBnAGwAZQAgAEkAbgBjAC4AIABBAGwAbAAgAFIAaQBnAGgAdABzACAAUgBlAHMAZQByAHYAZQBkAC4AUgBvAGIAbwB0AG8AIABNAGUAZABpAHUAbQBSAGUAZwB1AGwAYQByAFYAZQByAHMAaQBvAG4AIAAzAC4AMAAwADUAOwAgADIAMAAyADIAUgBvAGIAbwB0AG8ALQBNAGUAZABpAHUAbQBSAG8AYgBvAHQAbwAgAGkAcwAgAGEAIAB0AHIAYQBkAGUAbQBhAHIAawAgAG8AZgAgAEcAbwBvAGcAbABlAC4ARwBvAG8AZwBsAGUAQwBoAHIAaQBzAHQAaQBhAG4AIABSAG8AYgBlAHIAdABzAG8AbgBHAG8AbwBnAGwAZQAuAGMAbwBtAEwAaQBjAGUAbgBzAGUAZAAgAHUAbgBkAGUAcgAgAHQAaABlACAAQQBwAGEAYwBoAGUAIABMAGkAYwBlAG4AcwBlACwAIABWAGUAcgBzAGkAbwBuACAAMgAuADAAaAB0AHQAcAA6AC8ALwB3AHcAdwAuAGEAcABhAGMAaABlAC4AbwByAGcALwBsAGkAYwBlAG4AcwBlAHMALwBMAEkAQwBFAE4AUwBFAC0AMgAuADAAUgBvAGIAbwB0AG8ATQBlAGQAaQB1AG0AAAADAAAAAAAA/2oAZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAgAIAAj//wAPAAEAAgAOAAAAAAAAAigAAgBZACUAPgABAEQAXgABAGoAagABAHAAcAABAHUAdQABAIEAgQABAIMAgwABAIYAhgABAIkAiQABAIsAlgABAJgAnwABAKEAowABAKUApgABAKgArQADALEAsQABALoAuwABAL8AvwABAMEAwQABAMMAxAABAMcAxwABAMsAywABAM0AzgABANAA0QABANMA0wABANoA3gABAOEA4QABAOUA5QABAOcA6QABAOsA+wABAP0A/QABAP8BAQABAQMBAwABAQgBCQABARYBGgABARwBHAABASABIgABASQBJwADASoBKwABATMBNAABATYBNgABATsBPAABAUEBRAABAUcBSAABAUsBTQABAVEBUQABAVQBWAABAV0BXgABAWIBYgABAWQBZAABAWgBaAABAWoBbAABAW4BbgABAXABcAABAcsB0QACAeIB9gABAfoB+gABAgMCAwABAgUCBQABAgwCDgABAhACEQABAhMCEwABAhcCFwABAhkCGwABAiECIQABAiYCKAABAioCKgABAjgCOAABAjsCOwABAj0CPQABAkACQwABAm8CcwABAoMCiAABAosC8wABAvYDtQABA7cDtwABA7kDwwABA8UDzgABA9AD6wABA+8D7wABA/ED+AABA/oD/AABA/8EAwABBAUEkAABBJMElAABBJYElwABBJkEnAABBKYFAgABBQQFDgABBREFHgABAAEAAwAAABAAAAAWAAAAIAABAAEArQACAAEAqACsAAAAAgACAKgArAAAASQBJwAFAAEAAAAeABAACgACAC4ANgACY3BzcAA6a2VybgBAAARERkxUADhjeXJsADhncmVrADhsYXRuADgAAQAAAAEAIgACAAgAAgAuBBAAAAABAAAAAAABAAEADgAAAAEPAgAFACQASAAA//8AAgAAAAEAAUuMAAQAAAHsE9wRBBEEF7QQ5hdaEVQRkhJkEXZH7hKkEqQVxBG2EqQSpBJkEsYgkBlQH8YRpBHMFwAY3hHiFO4SghIsEUAp5BEiJsIRXhFeEw4SLBGEGHgSRhH4EQoSRhU0EiwSZBnGHwAXWhJkF1olxCfEIwodmBDsEkYRLD54EV438iTSKMYSEhDyEPhBYhD+FHYUChpIOeQtpjRCLFgSpDDqPBYXACFeEqQSpBV6EqQSpBKkMpQa0hKkE7IeOhx0GBYj7B0GEUoiNBEKEzQ2GERgEiwUsCsaG1wS6BIsG+YTXhaqFEAS6BdaEw4RpBJGE4gSLB8AEUoXABEKFcQVxBXEEqQXABEKEqQSpBJkEUoXABEKEQQvSBEEEQQRBBEcFg4WXBEWETYREBEWERARaBEQEZISZBJkEmQSZB/GF1oXWhdaF1oXWhdaF1oRkhF2EXYRdhF2EqQSpBKkEqQSpBJkEmQSZBJkEmQY3hKCEoISghKCEoISghKCEUARQBFAEUARXhMOEw4TDhMOEw4SRhJGF1oSghdaEoIXWhKCEZIRkhGSEZISZBF2EUARdhFAEXYRQBF2EUARdhFAEqQRXhKkEqQSpBKkEqQVxBG2EbYRthG2EqQRXhKkEV4SpBFeEV4SZBMOEmQTDhJkEw4RhBGEEYQfxh/GH8YRzBjeEkYY3hHiEeIR4hEWERYRHBEQERAREBEQERAREBEQERYRFhEWERYRFhEQERAREBEWETYRNhE2ETYRFhEWERYRHBdaEXYSpBKkEmQY3hdaEVQRdhHiEqQSpBXEEqQSpBJkEsYfxhjeFwASpBjeEV4TDhJGEw4Rdh8AEqQSpBXEFcQVehdaEVQfABF2EqQSpBJkEsYRkh/GFwASghFAEw4SLBJGEQoRQBFKEkYRzBHMEcwY3hJGEQQRBBEEEqQRXhdaEoIRdhFAEaQSRhGSGN4SRhKkFwARChKkF1oSghdaEoIRdhFAEUARQBcAEQoSZBMOEw4SLBV6EkYVehJGFXoSRhdaEoIXWhKCF1oSghdaEoIXWhKCF1oSghdaEoIXWhKCF1oSghdaEoIXWhKCF1oSghF2EUARdhFAEXYRQBF2EUARdhFAEXYRQBF2EUARdhFAEqQSpBJkEw4SZBMOEmQTDhJkEw4SZBMOEmQTDhJkEw4TDhje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BGX/8wRn//MEaf/zBGv/8wRt//MEb//zBHH/8wSw//MEyf/zAEAAR//sAEj/7ABJ/+wAS//sAFX/7ACU/+wAmf/sALv/7ADI/+wAyf/sAPf/7AED/+wBHv/sASL/7AFC/+wBYP/sAWH/7AFr/+wCsv/sArP/7AK0/+wCtf/sArb/7ALO/+wC0P/sAtL/7ALU/+wC1v/sAtj/7ALa/+wC3P/sAt7/7ALg/+wC4v/sAuT/7ALm/+wC6P/sA6//7APV/+wD2f/sA9z/7AP3/+wD/f/sBAL/7AQQ/+wEEv/sBBP/7AQf/+wELv/sBEj/7ARK/+wETP/sBE7/7ARQ/+wEUv/sBFT/7ARW/+wEav/sBGz/7ARu/+wEcv/sBK3/7AS6/+wEvP/sAEAAJ//mACv/5gAz/+YANf/mAIP/5gCT/+YAmP/mALP/5gC4/8IAxAAQANP/5gEI/+YBF//mARv/5gEd/+YBH//mASH/5gFB/+YBav/mAlX/5gJW/+YCWP/mAln/5gKX/+YCof/mAqL/5gKj/+YCpP/mAqX/5gLN/+YCz//mAtH/5gLT/+YC4f/mAuP/5gLl/+YC5//mAwn/5gML/+YDDf/mAz7/5gOb/+YDqP/mA87/5gPR/+YD/v/mBAH/5gQc/+YEHv/mBCD/5gRb/+YEXf/mBF//5gRh/+YEY//mBGX/5gRn/+YEaf/mBGv/5gRt/+YEb//mBHH/5gSw/+YEyf/mAEcAEAAEABIABABH/+cASP/nAEn/5wBL/+cAVf/nAJT/5wCZ/+cAu//nAMQADwDI/+cAyf/nAPf/5wED/+cBHv/nASL/5wFC/+cBYP/nAWH/5wFr/+cBhgAEAYoABAGOAAQBjwAEArL/5wKz/+cCtP/nArX/5wK2/+cCzv/nAtD/5wLS/+cC1P/nAtb/5wLY/+cC2v/nAtz/5wLe/+cC4P/nAuL/5wLk/+cC5v/nAuj/5wOv/+cD1f/nA9n/5wPc/+cD9//nA/3/5wQC/+cEEP/nBBL/5wQT/+cEH//nBC7/5wRI/+cESv/nBEz/5wRO/+cEUP/nBFL/5wRU/+cEVv/nBGr/5wRs/+cEbv/nBHL/5wSt/+cEuv/nBLz/5wBNAAYAEAALABAADQAUAEEAEgBH/+gASP/oAEn/6ABL/+gAVf/oAGEAEwCU/+gAmf/oALv/6ADI/+gAyf/oAPf/6AED/+gBHv/oASL/6AFC/+gBYP/oAWH/6AFr/+gBhAAQAYUAEAGHABABiAAQAYkAEAKy/+gCs//oArT/6AK1/+gCtv/oAs7/6ALQ/+gC0v/oAtT/6ALW/+gC2P/oAtr/6ALc/+gC3v/oAuD/6ALi/+gC5P/oAub/6ALo/+gDr//oA9X/6APZ/+gD3P/oA+wAEAPtABAD8AAQA/f/6AP9/+gEAv/oBBD/6AQS/+gEE//oBB//6AQu/+gESP/oBEr/6ARM/+gETv/oBFD/6ARS/+gEVP/oBFb/6ARq/+gEbP/oBG7/6ARy/+gErf/oBLr/6AS8/+gATwBHAAEASAABAEkAAQBLAAEAVQABAJQAAQCZAAEAuwABAMgAAQDJAAEA7QArAPIAFAD2/+MA9wABAPn/8AD8/+YA/v/1AQMAAQEEABQBHgABASIAAQE6/9MBQgABAUj/8AFK/98BUQAUAWAAAQFhAAEBawABAW3/4wFwABQCsgABArMAAQK0AAECtQABArYAAQLOAAEC0AABAtIAAQLUAAEC1gABAtgAAQLaAAEC3AABAt4AAQLgAAEC4gABAuQAAQLmAAEC6AABA68AAQPVAAED2QABA9wAAQP3AAED/QABBAIAAQQQAAEEEgABBBMAAQQfAAEEK//wBC4AAQRIAAEESgABBEwAAQROAAEEUAABBFIAAQRUAAEEVgABBGoAAQRsAAEEbgABBHIAAQSL//AErQABBLoAAQS8AAEAUwA4/74AUf/1AFL/9QBU//UAWv/vAF3/7wC9/+8Awf/1ANL/vgDW/74A5v/JAOz/9QDw//UA8f/1APP/9QD0//UA9f/1APb/3wD4//UA+v/1APv/9QD+//UBAP/1AQX/9QEJ/+0BGv/vASD/6wEr//UBNv/1ATn/vgE6/98BPP/1AT7/9QFF/74BTP/pAVP/9QFV//UBV//1AVz/9QFj//UBbf/gArv/9QLF/+8Cxv/vAwP/9QMF//UDB//1Awj/9QMf/74DIf++AyP/vgM0/+8Dsf/1A7f/7wPS/74D1v/1A9j/9QPa/+8D3f/1A+L/9QPj/+8D6//vA/L/9QP4//UD/P/vBAT/7wQZ//UEG//1BCX/7wQn/+8EKf/vBC3/9QSC/+8EhP/vBIb/7wSI/74Ejf/1BKn/9QTG//UEyP/1BND/vgTU/+8E1v/vAGgAOP8zADr/yAA8//AAPf+sAFH/7wBS/+8AVP/vAMH/7wDS/zMA1P/1ANb/MwDa//AA3f/1AN7/6wDh/+YA5v/CAOz/7wDw/+8A8f/vAPP/7wD0/+8A9f/vAPb/zgD4/+8A+v/vAPv/7wD+/+8BAP/vAQX/7wEZ/8gBK//vATP/8AE2/+8BOf8zATr/zQE8/+8BPv/vAUP/8AFF/zMBR//mAUn/5gFM/98BUP/1AVP/7wFV/+8BV//vAVz/7wFd//ABYv/QAWT/6wFm//UBbP+fAW3/0AFv//UCqv+sArv/7wMD/+8DBf/vAwf/7wMI/+8DH/8zAyH/MwMj/zMDM/+sAzX/rAOc/6wDq/+sA6z/8AOu/6wDsf/vA8b/6wPS/zMD0//wA9b/7wPY/+8D3f/vA+L/7wPq/6wD8v/vA/j/7wP7/8gEA/+sBAb/8AQU//AEGf/vBBv/7wQk/+sEJv/rBCj/6wQq/+YELf/vBIH/rASD/6wEhf+sBIj/MwSK/+YEjf/vBJf/rASp/+8Exv/vBMj/7wTQ/zME0//IBNX/yABoAEf/tABI/7QASf+0AEv/tABMABQATwAUAFAAFABT/3oAVf+0AFf/ZABbAAsAlP+0AJn/tAC7/7QAyP+0AMn/tAD3/7QBA/+0ARj/egEe/7QBIv+0AUL/tAFg/7QBYf+0AWv/tAHR/2QCsv+0ArP/tAK0/7QCtf+0Arb/tAK8/3oCvf96Ar7/egK//3oCwP96As7/tALQ/7QC0v+0AtT/tALW/7QC2P+0Atr/tALc/7QC3v+0AuD/tALi/7QC5P+0Aub/tALo/7QDCv96Awz/egMO/3oDFv9kAxj/ZAMa/2QDHP9kAx7/ZAOv/7QDtf96A7v/egPV/7QD1/96A9n/tAPc/7QD3v9kA/f/tAP9/7QEAv+0BBD/tAQS/7QEE/+0BB3/egQf/7QEIf96BC7/tARI/7QESv+0BEz/tARO/7QEUP+0BFL/tARU/7QEVv+0BFz/egRe/3oEYP96BGL/egRk/3oEZv96BGj/egRq/7QEbP+0BG7/tARw/3oEcv+0BK3/tASx/3oEuv+0BLz/tAS+ABQEwAAUBMIAFATP/2QAagA4/+YAOv/nADz/8gA9/+cAUf/xAFL/8QBU//EAXP/xAMH/8QDS/+YA1v/mANr/8gDe/+4A4f/oAOb/5gDs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ASL/3AEr/+EBNv/hATz/4QE+/+EBQv/cAVP/4QFV/+EBV//hAVz/4QFg/9wBYf/cAWv/3AKy/9wCs//cArT/3AK1/9wCtv/cArv/4QK8/9YCvf/WAr7/1gK//9YCwP/WAsH/3QLC/90Cw//dAsT/3QLF/+ECxv/hAs7/3ALQ/9wC0v/cAtT/3ALW/9wC2P/cAtr/3ALc/9wC3v/cAuD/3ALi/9wC5P/cAub/3ALo/9wDA//hAwX/4QMH/+EDCP/hAwr/1gMM/9YDDv/WAyb/3QMo/90DKv/dAyz/3QMu/90DMP/dAzT/4QOv/9wDsf/hA7P/3QO1/9YDt//hA7r/3QO7/9YDvP/dA9X/3APW/+ED1//WA9j/4QPZ/9wD2v/hA9z/3APd/+ED4v/hA+P/4QPr/+ED8v/hA/f/3AP4/+ED/P/hA/3/3AQC/9wEBP/hBBD/3AQS/9wEE//cBBn/4QQb/+EEHf/WBB//3AQh/9YEJf/hBCf/4QQp/+EELf/hBC7/3ARI/9wESv/cBEz/3ARO/9wEUP/cBFL/3ARU/9wEVv/cBFz/1gRe/9YEYP/WBGL/1gRk/9YEZv/WBGj/1gRq/9wEbP/cBG7/3ARw/9YEcv/cBHT/3QR2/90EeP/dBHr/3QR8/90Efv/dBID/3QSC/+EEhP/hBIb/4QSN/+EEqf/hBK3/3ASx/9YEtf/dBLr/3AS8/9wExv/hBMj/4QTU/+EE1v/hAL8ABgAMAAsADABH/+gASP/oAEn/6ABKAAwAS//oAFP/6gBV/+gAWgALAF0ACwCU/+gAmf/oALv/6AC9AAsAvv/0AMT/1wDGAAsAyP/oAMn/6ADKAAwA9//oAQP/6AEY/+oBGgALAR7/6AEi/+gBQv/oAWD/6AFh/+gBa//oAYQADAGFAAwBhwAMAYgADAGJAAwB4wANAeYADQHoAA4B6f/1Aev/7AHt/+0B9f/sAfv/vwH8/+0B/f+/AgQADgIF/+0CCAAOAiAADgIh/+0CIgANAiQADgIq/+0CQf/uAkP/vwKy/+gCs//oArT/6AK1/+gCtv/oArz/6gK9/+oCvv/qAr//6gLA/+oCxQALAsYACwLO/+gC0P/oAtL/6ALU/+gC1v/oAtj/6ALa/+gC3P/oAt7/6ALg/+gC4v/oAuT/6ALm/+gC6P/oAwr/6gMM/+oDDv/qAzQACwND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/8ADSf/AA17/wANf/8ADYP/AA5f/TgOf/04Dr//rA7P/6gO1/+sDt//oA7r/6gO7/+sDvP/qA8P/DQPH/04D0gAUA9T/3gPV/+sD1//rA9n/6wPa/+gD3P/rA+P/6APr/+gD8/9OA/T/3gP3/+sD/P/oA/3/6wQC/+sEBP/oBAn/TgQK/94EC/9OBAz/3gQQ/+sEEv/rBBP/6wQd/+sEH//rBCH/6wQl/+gEJ//oBCn/6AQu/+sEL/9OBDD/3gQx/04EMv/eBDP/TgQ0/94ENf9OBDb/3gQ3/04EOP/eBDn/TgQ6/94EO/9OBDz/3gQ9/04EPv/eBD//TgRA/94EQf9OBEL/3gRD/04ERP/eBEX/TgRG/94ESP/rBEr/6wRM/+sETv/rBFD/6wRS/+sEVP/rBFb/6wRc/+sEXv/rBGD/6wRi/+sEZP/rBGb/6wRo/+sEav/rBGz/6wRu/+sEcP/rBHL/6wR0/+oEdv/qBHj/6gR6/+oEfP/qBH7/6gSA/+oEgv/oBIT/6ASG/+gEiAAUBKr/TgSr/94Erf/rBLH/6wS1/+oEuv/rBLz/6wTQABQE1P/oBNb/6ATc/8AE4//ABPv/wAACAKAABAAEAAAABgAGAAEACwAMAAIAEwATAAQAJQAqAAUALAAtAAsALwA2AA0AOAA4ABUAOgA/ABYARQBGABwASQBKAB4ATABMACAATwBPACEAUQBUACIAVgBWACYAWABYACcAWgBdACgAXwBfACwAigCKAC0AlgCWAC4AnQCdAC8AsQC1ADAAtwC5ADUAuwC7ADgAvQC+ADkAwADBADsAwwDFAD0AxwDOAEAA0gDSAEgA1ADeAEkA4ADvAFQA8QDxAGQA9gD4AGUA+wD8AGgA/gEAAGoBAwEFAG0BCgEKAHABDQENAHEBGAEaAHIBIgEiAHUBLgEwAHYBMwE1AHkBNwE3AHwBOQE5AH0BOwE7AH4BQwFEAH8BVAFUAIEBVgFWAIIBWAFYAIMBXAFeAIQBhAGFAIcBhwGJAIkB6AHoAIwB6gHrAI0B7QHtAI8B8AHwAJAB+wH9AJECQAJAAJQCQwJDAJUCVQJVAJYCVwJYAJcCiwKMAJkCjgKOAJsCkAKlAJwCqgKxALICswK2ALoCuwLAAL4CxQLNAMQCzwLPAM0C0QLRAM4C0wLTAM8C1QLVANAC1wLgANEC6QLrANsC7QLtAN4C7wLvAN8C8QLxAOAC8wLzAOEC+AL4AOIC+gL6AOMC/AL8AOQC/gL+AOUDAAMAAOYDAgMOAOcDEAMQAPQDEgMSAPUDFAMUAPYDHwMfAPcDIQMhAPgDIwMjAPkDMQMxAPoDMwM2APsDOAM4AP8DOgM6AQADQANJAQEDVANYAQsDXgNgARADZQNlARMDdwN6ARQDfgOAARgDiQOJARsDlwOcARwDnwOuASIDsQOxATIDtQO1ATMDtwO3ATQDuwO7ATUDvgO/ATYDwQPCATgDxAPKAToDzAPOAUED0APVAUQD1wPYAUoD2gPdAUwD4wPkAVAD5gPmAVID6APoAVMD6gPtAVQD8AP1AVgD9wP3AV4D+wP8AV8EAQQBAWEEAwQMAWIEDwQQAWwEEgQVAW4EHAQdAXIEIQQhAXQEIwQpAXUELwRXAXwEWQRZAaUEWwRoAaYEcARwAbQEgQSGAbUEiASIAbsEjASNAbwEkASQAb4EkgSTAb8ElQSVAcEElwSXAcIEqASsAcMErgSuAcgEsASxAckEswSzAcsEtwS5AcwEuwS7Ac8EvQS/AdAEwQTBAdMEwwTDAdQExQTLAdUEzQTNAdwE0ATQAd0E0wTXAd4E2QTZAeME2wTcAeQE4ATgAeYE4wTjAecE7gTuAegE+wT7AekFAgUCAeoFBgUGAesAAgCaAAYABgAAAAsACwABABAAEAACABIAEgADACUAKQAEACwANAAJADgAPgASAEUARwAZAEkASQAcAEwATAAdAFEAVAAeAFYAVgAiAFoAWgAjAFwAXgAkAIoAigAnAJYAlgAoALEAtAApAL0AvQAtAMEAwQAuAMcAxwAvANQA1QAwANcA1wAyANoA2gAzANwA3gA0AOAA5gA3AOwA7AA+AO4A7gA/APcA9wBAAPwA/ABBAP4A/wBCAQQBBQBEAQoBCgBGAQ0BDQBHARgBGgBIAS4BMABLATMBNQBOATcBNwBRATkBOQBSATsBOwBTAUMBRABUAVQBVABWAVYBVgBXAVgBWABYAVwBXgBZAYQBigBcAY4BjwBjAegB6ABlAe0B7QBmAfAB8QBnAfsB/QBpAg8CDwBsAh4CIABtAkACQABwAkMCQwBxAlUCVQByAlcCWABzAosCjAB1Ao4CjgB3ApACtgB4ArsCwACfAsUC1QClAtcC4AC2AukC6wDA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABkAJAAAAA4AFQAcAAAABQAAAAUAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAKAAUACgAAAAAAAAAAAAAAAAAVAAUAAAAAABUAAAAAAAAAGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkAAAAAABUABQASABkAFQAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAIAAAACAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAAAAAAAAAAABAAEAAQABAAEAAQABAACAAAAAAAAAAAAAAAAAAAAAAAAAAIAAgACAAIAAgALAAsACwALAAwABgAGAAYABgAGAAYABgABAAEAAQABAAEAAAAAAAAAAAADAAcABwAHAAcABwAIAAgACAAIAAkACQAEAAYABAAGAAQABgACAAEAAgABAAIAAQACAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAgABAAIAAQACAAEAAgABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAwAAAAMAAwACAAcAAgAHAAIABwAAAAAAAAAAAAAAAAAUABEAFAARABQAEQAUABEAFAARAA0AAAANAAAADQAAAAsACAALAAgACwAIAAsACAALAAgACwAIABYAAAAMAAkADAAXAB0AFwAdABcAHQAAAAAAAgAAAAAAAAAAAAoACgAKAAoACgAKAAoABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUADgAOAA4ADgAS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AiQCJQInAikChwNCA0MDRANFA0YDRwNIA0kDSgNLA0wDTQNOA08DUANRA1IDUwNUA1UDVgNXA1gDWQNaA1sDXANdA5MDXgNfA2ADYQNiA2MDZANlA2YDZwNoA2kDagNrA2wDbQNuA28DcANxA3IDcwUQA3UDdgN3A3gDeQN6A3sDfAN9A34DfwOAA4EDggODA4QDhQOGBRMDhwOIA4oDiQOLA4wDjQOOA48DkAORA5IDlAOVA5YFEQUSBNwE3QTeBN8E6QTsBOoE6wTwBPEE8gTgBOEE4gT7BP4E/wUCBQQFBQIRBQcE8wT0BPUE9gT3BPgE+QT6BRQFFQUWBRcFCAUKBQsCKAUNAioFDgUMAiYCHAIiBRwFHQACBwAA+gH3AoIB4QHgAd8B3gHdAdwB2wHaAdkB2AJDAkICQQJAAjgB9gH1AfQB8wHyAfEB8AHvAe4B7QHsAesB6gHpAegB5wHmAeUB5AHjAeIB+AH5AoQChgKFAocCgwKIAmIB+gH7AfwB/QH+Af8CAAIBAgICAwIEAgUCBgIHAggCCQIKAgsCDAINAg4CEAIRBQ8CEgITAhQCFQIWAhcCGAIZAhoCGwJLAh0CHgIfAiAFCQIhAiMCJAIlAiYCJwIoAikCKwIsAi4CLQNAA0EDQgNDA0QDRQNGA0cDSANJA0oDSwNMA00DTgNPA1ADUQNSA1MDVANVA1YDVwNYA1kDWgNbA1wDXQNeA18DYANhA2IDYwNkA2UDZgNnA2gDaQNqA2sDbANtA24DbwNwA3EDcgNzA3QFEAN1A3YDdwN4A3kDegN7A3wDfQN+A38DgAOBA4IDgwOEA4UDhgUTA4cDiAOKA4kDiwOMA40DjgOPA5ADkQOSA5MDlAOVA5YFEQUSBNwE3QTeBN8E4AThBOIE4wTkBOUE5gTnBOgE6QTqBOsE7ATtBO4E7wTwBPEE8gTzBPQE9QT2BPcE+AIPBPkE+gT7BPwE/QT+BP8FAAUBBQIFAwUEBQUFBgUHBRQFFQUWBRcFCAUKBQsFDQIqBQ4FDAIcAiIFHAUdAAEAAQF7AAEAAQBLAAEAAQC7AAEAAQA2AAEAAQATAAEAAgMZAxoAAgbkBtgAAgbmBtgAAQbuAAEG8AABBvIAAgABABQAHQAAAAEAAgAvAE8AAQADAEkASwJ6AAIAAAABBt4AAQAGAssCzALdAt4DYANpAAEABgBNAE4C8gPfA+EEWgACAAMBlAGUAAAB1QHXAAECLwI1AAQAAgACAKgArAABASQBJwABAAEADAAnACgAKwAzADUARgBHAEgASwBTAFQAVQACAAIAFAAdAAACZQJuAAoAAgAGAE0ATQAGAE4ATgAEAvIC8gAFA98D3wADA+ED4QACBFoEWgABAAIABAAUAB0AAAJ2AnYACgKBAoEACwSeBKUADAACAAYAGgAaAAAAHAAcAAECWgJfAAICYwJjAAgCZQJuAAkCdQJ1ABMAAQAUABoAHAJaAlsCXAJdAl4CXwJjAnUCdgKBBJ4EnwSgBKEEogSjBKQEpQABBd4AAQXgAAEF4gABBeQAAQXmAAEF6AABBeoAAQXsAAEF7gABBfAAAQXyAAEF9AABBfYAAQX4AAEF+gACBfwGAgACBgIGCAACBggGDgACBg4GFAACBhQGGgACBhoGIAACBiAGJgACBiYGLAACBiwGMgACBjIGOAACBjgGPgADBj4GRAZKAAMGSAZOBlQAAwZSBlgGXgADBlwGYgZoAAMGZgZsBnIAAwZwBnYGfAADBnoGgAaGAAMGhAaKBpAABAaOBpQGmgagAAQGnAaiBqgGrgAFBqoGsAa2BrwGwgAFBrwGwgbIBs4G1AAFBs4G1AbaBuAG5gAFBuAG5gbsBvIG+AAFBvIG+Ab+BwQHCgAFBwQHCgcQBxYHHAAFBxYHHAciBygHLgAFBygHLgc0BzoHQAAFBzoHQAdGB0wHUgAGB0wHUgdYB14HZAdqAAYHYgdoB24HdAd6B4AABgd4B34HhAeKB5AHlgAGB44HlAeaB6AHpgesAAYHpAeqB7AHtge8B8IABge6B8AHxgfMB9IH2AAGB9AH1gfcB+IH6AfuAAcILgfmB+wH8gf4B/4IBAAHCCYH+ggACAYIDAgSCBgAAQDrAAoARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQBeAIUAhgCHAIkAigCLAI0AkACSAJQAuwC8AL0AvgC/AMAAwQDCAMMAxADFAMYAxwDIAMkAygDLAMwAzQDOAOoA6wDsAO0A7gDvAPAA8QDyAPMA9AD1APYA9wD4APkA+gD7APwA/QD+AP8BAAEBAQIBAwEEAQUBBgEHATABNAE2ATgBOgE8AUIBRAFGAUoBTQFaAo0CjwKrAqwCrQKuAq8CsAKxArICswK0ArUCtgK3ArgCuQK6ArsCvAK9Ar4CvwLAAsECwgLDAsQCxQLGAsgCygLMAs4C0ALSAtQC1gLYAtoC3ALeAuAC4gLkAuYC6ALqAuwC7gLwAvIC9QL3AvkC+wL9Av8DAQMDAwUDBwMKAwwDDgMQAxIDFAMWAxgDGgMcAx4DIAMiAyQDJgMoAyoDLAMuAzADMgM0AzcDOQM7Az0DPwOvA7ADsQOyA7QDtQO2A7cDuAO5A7oDuwO8A70D1APVA9YD1wPYA9kD2gPbA9wD3QPeA98D4APhA+ID4wPlA+cD6QPrBAAEAgQEBBIEGQQfBCUEjwSQBJQEmAUZBRsAAQD6AAgACgAUABUAFgAXABgAGQAaABsAHAAdACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0APgBlAGcAgQCDAIQAjACPAJEAkwCxALIAswC0ALUAtgC3ALgAuQC6ANIA0wDUANUA1gDXANgA2QDaANsA3ADdAN4A3wDgAOEA4gDjAOQA5QDmAOcA6ADpAS8BMwE1ATcBOQE7AUEBQwFFAUkBSwFMAVgBWQGnAa0BsgG1AosCjAKOApACkQKSApMClAKVApYClwKYApkCmgKbApwCnQKeAp8CoAKhAqICowKkAqUCpgKnAqgCqQKqAscCyQLLAs0CzwLRAtMC1QLXAtkC2wLdAt8C4QLjAuUC5wLpAusC7QLvAvEC8wL0AvYC+AL6AvwC/gMAAwIDBAMGAwkDCwMNAw8DEQMTAxUDFwMZAxsDHQMfAyEDIwMlAycDKQMrAy0DLwMxAzMDNQM2AzgDOgM8Az4DlwOYA5kDmgObA5wDnQOfA6ADoQOiA6MDpAOlA6YDpwOoA6kDqgOrA6wDrQOuA74DvwPAA8EDwgPDA8QDxQPGA8cDyAPJA8oDywPMA80DzgPPA9AD0QPSA9MD5APmA+gD6gP/BAEEAwQYBB4EJASOBJMElwUYBRoBzAACAE0BzQACAFABzgADAEoATQHPAAMASgBQAAEAAQBKAcsAAgBKAdEAAgBYAdAAAgBYAAEAAwBKAFcAlQAAAAEAAQABAAEAAAADBLcAAgCtAs0AAgCpBL0AAgCtBMoAAgCpBLgAAgCtAs4AAgCpBKcAAgCpBL4AAgCtBFoAAgCtBMsAAgCpAzwAAgCpAz4AAgCpAz0AAgCpAz8AAgCpBLYAAgCpBLsAAgHKBLkAAgCtBKYAAgCpAucAAgHKA/EAAgCpBMUAAgCtAx8AAgHKBNAAAgCtBNUAAgCtBNMAAgCqAzYAAgCpBNkAAgCtBLwAAgHKBLoAAgCtA/IAAgCpBMYAAgCtAyAAAgHKBNEAAgCtBNYAAgCtBNQAAgCqAzcAAgCpBNoAAgCtBL8AAgCpAvgAAgHKBMEAAgCtAvoAAgCpAvwAAgHKBMMAAgCtAxUAAgCpAxsAAgHKBM4AAgCtA+YAAgCpBNcAAgCtA+QAAgCoBMAAAgCpAvkAAgHKBMIAAgCtAvsAAgCpAv0AAgHKBMQAAgCtAxYAAgCpAxwAAgHKBM8AAgCtA+cAAgCpBNgAAgCtA+UAAgCoAw8AAgCpAxEAAgHKBMwAAgCtBLIAAgCsAxAAAgCpAxIAAgHKBM0AAgCtBLMAAgCsAwIAAgCpAwQAAgHKBMcAAgCtBKgAAgCoAqAAAgCqAqoAAgCpBIEAAgCtA+oAAgCoBIMAAgCrBIUAAgCqAwMAAgCpAwUAAgHKBMgAAgCtBKkAAgCoArsAAgCqAsUAAgCpBIIAAgCtA+sAAgCoBIQAAgCrBIYAAgCqArgAAgCpArcAAgCoBFgAAgCrAuwAAgCqBK8AAgCsBGkAAgCpBHEAAgCtBGsAAgCoBG0AAgCrBG8AAgCqBGoAAgCpBHIAAgCtBGwAAgCoBG4AAgCrBHAAAgCqBHcAAgCpBH8AAgCtBHkAAgCoBHsAAgCrBH0AAgCqBHgAAgCpBIAAAgCtBHoAAgCoBHwAAgCrBH4AAgCqApEAAgCpBC8AAgCtApAAAgCoBDEAAgCrApMAAgCqBKoAAgCsApkAAgCpBEcAAgCtApgAAgCoBEkAAgCrBEsAAgCqBKwAAgCsAp0AAgCpBFkAAgCtApwAAgCoBFcAAgCrAusAAgCqBK4AAgCsAqwAAgCpBDAAAgCtAqsAAgCoBDIAAgCrAq4AAgCqBKsAAgCsArQAAgCpBEgAAgCtArMAAgCoBEoAAgCrBEwAAgCqBK0AAgCsAr0AAgCpBFwAAgCtArwAAgCoBF4AAgCrAr8AAgCqBLEAAgCsAsIAAgCpBHQAAgCtAsEAAgCoBHYAAgCrAyYAAgCqBLUAAgCsAqIAAgCpBFsAAgCtAqEAAgCoBF0AAgCrAqQAAgCqBLAAAgCsAqcAAgCpBHMAAgCtAqYAAgCoBHUAAgCrAyUAAgCqBLQAAgCsBMkAAwCqAKkE0gADAKoAqQACABEAJQApAAAAKwAtAAUALwA0AAgANgA7AA4APQA+ABQARQBJABYASwBNABsATwBUAB4AVgBbACQAXQBeACoAgQCBACwAgwCDAC0AhgCGAC4AiQCJAC8AjQCNADAAmACbADEA0ADQADUAAA==\",\r\n  \"Roboto-MediumItalic.ttf\": \"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BGoAWwRqAAkF0gA7BKkAMgQmAA4EnAA0BEYABwPWAB4H7wAJBM7/2gLe//UC3v/zAt4ACwLeABYC3gAlAt4ABQLeADQDmQCRApoBCAPCAAkEGv+HBJIAOwUZACsFAAArBBAAFAUNACsECQAUBFcACQReADkEPwAJBHb/mgHvAOgDhQEEAAD9JwPZANwD2wAWA+wA3APcANsDnwAJA4EBBAOBAQUC6ACJAugAZgLoAH4C6ACJAugAmALoAHgC6ACnBUoAbAVzAGsFVQArBawAbgWuAG0ECQCrBF8AHAQ3/4EEl//RBEn/2AQOADEDhQEFAa3/uAZmADsEiwBFAfz/AARz/6kEc//ZBHP/yQRzABMEcwBMBHMAIgRzAFcEcwAxBHMANwRzAPgCH/8EAh//BAIRACMCEf98AhEAIwQ/AAkEwQBMBBAAVgRmABAEHgA2BHIANwRuAC0EegAyBG//yAR3ADYEKAA6BGYALgQ4/58DmwCrBOYAJAOn/+8GFf9+A+gACQSZ/9sE5wAiBLYACQH4AAACowBABS8AIAUvACAEbgArBLoAnQKW/+UFJf+jBSX/owUl/6MFJf+jBSX/owUl/6MFJf+jBREAXwRjACYEYwAmBGMAJgRjACYCMgA3AjIANwIyADcCMgA3BYEAJgVZAGIFWQBiBVkAYgVZAGIFWQBiBRQAWAUUAFgFFABYBRQAWAS9AKEELwAcBC8AHAQvABwELwAcBC8AHAQvABwELwAcBA0ANwQoADoEKAA6BCgAOgQoADoCBwAjAgcAIwIHACMCBwAjBFIADQRnADgEZwA4BGcAOARnADgEZwA4BFEASgRRAEoEUQBKBFEASgPN/7wDzf+8BSX/owQvABwFJf+jBC8AHAUl/6MELwAcBREAXwQNADcFEQBfBA0ANwURAF8EDQA3BREAXwQNADcFEQAmBPUAOARjACYEKAA6BGMAJgQoADoEYwAmBCgAOgRjACYEKAA6BGMAJgQoADoFSQBmBGb/+QVJAGYEZv/5BUkAZgRm//kFSQBmBGb/+QWBACYEUAANAjIANwIHABMCMgA3AgcAIwIyADcCBwAjAjL/jgH6/3UCMgA3BoIANwPsACAETwAEAhX/BATnACYEDAARBDEAJgH6ACAEMQAmAfr/pgQxACYCkAAgBDEAJgLWACAFgQAmBFIADQWBACYEUgANBYEAJgRSAA0EUgANBVkAYgRnADgFWQBiBGcAOAVZAGIEZwA4BOIAJgK+ABEE4gAmAr7/nwTiACYCvgARBLQAJgP/ABsEtAAmA/8AGwS0ACYD/wAbBLQAJgP/ABsEtAAmA/8AGwS6AJ0ClgA/BLoAnQKWAD8EugCdAr4APwUUAFgEUQBKBRQAWARRAEoFFABYBFEASgUUAFgEUQBKBRQAWARRAEoFFABYBFEASgbVALUFwgB5BL0AoQPN/7wEvQChBK7/5QPo/+YErv/lA+j/5gSu/+UD6P/mB0X/jQaOAA4FVwAWBGMAKgRX/5YEV/+WBB4AYwR2/5oEdv+aBHb/mgR2/5oEdv+aBHb/mgR2/5oEXgA5A8IACQPCAAkDwgAJA8IACQHvABoB7wAaAe8AGgHvABoEtgAJBJkAOwSZADsEmQA7BJkAOwSZADsEZgA4BGYAOARmADgEZgA4BB4AbAR2/5oEdv+aBHb/mgReADkEXgA5BF4AOQReADkEVwAJA8IACQPCAAkDwgAJA8IACQPCAAkEgwA/BIMAPwSDAD8EgwA/BLcACQHvAA4B7wAaAe8AGgH5/5cB7wAaA7n/8wQ8AAkDmwAJA5sACQObAAkDmwAJBLYACQS2AAkEtgAJBJkAOwSZADsEmQA7BEMACQRDAAkEQwAJBBYADwQWAA8EFgAPBBYADwQeAGMEHgBjBB4AYwRmADgEZgA4BGYAOARmADgEZgA4BGYAOAXaAIsEHgBsBB4AbAQL/9YEC//WBAv/1gUl/6MEx/+6BeX/wgKW/8YFbQAmBSH/uAVEAB4CkAAJBSX/owTmACYEYwAmBK7/5QWBACYCMgA3BOcAJgbJACYFgQAmBVkAYgT0ACYEugCdBL0AoQTm/8ACMgA3BL0AoQRhADsEQwAoBGMAEQKQAGYEPABXBHcAIQRnADgEnf/eA9oAZAQ4/58CkABEBDwAVwRnADgEPABXBmEAUgRjACYEUgArBLQAJgIyADcCMgA3BE8ABAUAACsE5wAmBOQAmQUl/6ME5gAmBFIAKwRjACYFegAlBskAJgWBACYFWQBiBYIAKwT0ACYFEQBfBLoAnQTm/8AELwAcBCgAOgRvABcEZwA4BF3/yAQNADcDzf+8A+j/ugQoADoDQQAWA/8AGwH6ACACBwAjAfL/AgRKACIDzf+8BtUAtQXCAHkG1QC1BcIAeQbVALUFwgB5BL0AoQPN/7wBTACRAnoAnQQbADMCFf8EAa0AjQbJACYGwwAPBSX/owQvABwEYwAmBXoAJQQoADoEbwAXBYUAdgWfAD8E8QCoA+4AdQg0ADgJJgBiBLYAHwP4ABcFEQBfBA0ANwS9AKED7QB1AjIANwdu/6QGVf+wAjIANwUl/6MELwAcBSX/owQvABwHRf+NBo4ADgRjACYEKAA6BWIASwQZADQEGQA0B27/pAZV/7AEtgAfA/gAFwV6ACUEbwAXBXoAJQRvABcFWQBiBGcAOAVQAGEEZQA0BVAAYQRlADQFIABIBBkAIATkAJkDzf+8BOQAmQPN/7wE5ACZA83/vAVaAMQEQwBtBsUALAZIACMEXwA4BSX/owQvABwFJf+jBC8AHAUl/6MELwAcBSX/owQvABwFJf+jBC8AHAUl/6MELwAcBSX/owQvABwFJf+jBC8AHAUl/6MELwAcBSX/owQvABwFJf+jBC8AHAUl/6MELwAcBGMAJgQoADoEYwAmBCgAOgRjACYEKAA6BGMAJgQoADoEYwAmBCgAOgRjACYEKAA6BGMAJgQoADoEYwAmBCgAOgIyADcCBwAjAjL//wH6/+MFWQBiBGcAOAVZAGIEZwA4BVkAYgRnADgFWQBiBGcAOAVZAGIEZwA4BVkAYgRnADgFWQBiBGcAOAVmAFwEegA0BWYAXAR6ADQFZgBcBHoANAVmAFwEegA0BWYAXAR6ADQFFABYBFEASgUUAFgEUQBKBXcAWATAAEoFdwBYBMAASgV3AFgEwABKBXcAWATAAEoFdwBYBMAASgS9AKEDzf+8BL0AoQPN/7wEvQChA83/vAR9//QEugCdA9sAVAVaAMQEQwBtBFIAKwNBABYF7ABVBKD/8gRQAA0E2wAkBNsAJARSAAADQf/HBRQAPwQkACgEvQChA+0AUgTm/8AD6P+6BEMAKARG/8IGBAB8BGkADQRpACYEaQANBGkAWAR9AHEEkQBLBH0AjASRAHMFSQBmBGb/+QWBACYEUgANBSX/owQvABwEYwAmBCgAOgIy/88CB/+ABVkAYgRnADgE4gAmAr4ADAUUAFgEUQBKBMj/hQTmACYEXQAQBREAJgRfADgFEQAmBF8AOAWBACYEUAANBOcAJgQMABEE5wAmBAwAEQQxACYB+v/jBskAJgbDAA8FgQAm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AGQAaQB1AG0AIABJAHQAYQBsAGkAYwBWAGUAcgBzAGkAbwBuACAAMwAuADAAMAA1ADsAIAAyADAAMgAyAFIAbwBiAG8AdABvAC0ATQBlAGQAaQB1AG0ASQB0AGEAbABpAGMAUgBvAGIAbwB0AG8AIABpAHMAIABhACAAdAByAGEAZABlAG0AYQByAGsAIABvAGYAIABHAG8AbwBnAGwAZQAuAEcAbwBvAGcAbABlAEMAaAByAGkAcwB0AGkAYQBuACAAUgBvAGIAZQByAHQAcwBvAG4ARwBvAG8AZwBsAGUALgBjAG8AbQBMAGkAYwBlAG4AcwBlAGQAIAB1AG4AZABlAHIAIAB0AGgAZQAgAEEAcABhAGMAaABlACAATABpAGMAZQBuAHMAZQAsACAAVgBlAHIAcwBpAG8AbgAgADIALgAwAGgAdAB0AHAAOgAvAC8AdwB3AHcALgBhAHAAYQBjAGgAZQAuAG8AcgBnAC8AbABpAGMAZQBuAHMAZQBzAC8ATABJAEMARQBOAFMARQAtADIALgAwAFIAbwBiAG8AdABvAE0AZQBkAGkAdQBtACAASQB0AGEAbABpAGMAAAADAAD/9AAA/2oAZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAgAIAAj//wAPAAEAAgAOAAAAAAAAAigAAgBZACUAPgABAEQAXgABAGoAagABAHAAcAABAHUAdQABAIEAgQABAIMAgwABAIYAhgABAIkAiQABAIsAlgABAJgAnwABAKEAowABAKUApgABAKgArQADALEAsQABALoAuwABAL8AvwABAMEAwQABAMMAxAABAMcAxwABAMsAywABAM0AzgABANAA0QABANMA0wABANoA3gABAOEA4QABAOUA5QABAOcA6QABAOsA+wABAP0A/QABAP8BAQABAQMBAwABAQgBCQABARYBGgABARwBHAABASABIgABASQBJwADASoBKwABATMBNAABATYBNgABATsBPAABAUEBRAABAUcBSAABAUsBTQABAVEBUQABAVQBWAABAV0BXgABAWIBYgABAWQBZAABAWgBaAABAWoBbAABAW4BbgABAXABcAABAcsB0QACAeIB9gABAfoB+gABAgMCAwABAgUCBQABAgwCDgABAhACEQABAhMCEwABAhcCFwABAhkCGwABAiECIQABAiYCKAAB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/+gEX//oBGH/6ARj/+gEZf/oBGf/6ARp/+gEa//oBG3/6ARv/+gEcf/oBIH/3wSD/98Ehf/fBIj/4ASK/+EEi//gBJf/3wSqABAEsP/oBMn/6ATQ/+AE0//gBNX/4AC6AEf/3ABI/9wASf/cAEv/3ABR/+EAUv/hAFP/1gBU/+EAVf/cAFn/3QBa/+EAXf/hAJT/3ACZ/9wAm//dALv/3AC9/+EAvv/1AL//5gDB/+EAwv/rAMP/6QDF//AAxv/nAMj/3ADJ/9wAyv/jAMv/3QDM/84Azf/UAM7/2wDs/+EA8P/hAPH/4QDz/+EA9P/hAPX/4QD3/9wA+P/hAPr/4QD7/+EA/v/hAQD/4QED/9wBBf/hARj/1gEa/+EBHv/cASL/3AEr/+EBNv/hATz/4QE+/+EBQv/cAVP/4QFV/+EBV//hAVz/4QFg/9wBYf/cAWv/3AKy/9wCs//cArT/3AK1/9wCtv/cArv/4QK8/9YCvf/WAr7/1gK//9YCwP/WAsH/3QLC/90Cw//dAsT/3QLF/+ECxv/hAs7/3ALQ/9wC0v/cAtT/3ALW/9wC2P/cAtr/3ALc/9wC3v/cAuD/3ALi/9wC5P/cAub/3ALo/9wDA//hAwX/4QMH/+EDCP/hAwr/1gMM/9YDDv/WAyb/3QMo/90DKv/dAyz/3QMu/90DMP/dAzT/4QOv/9wDsf/hA7P/3QO1/9YDt//hA7r/3QO7/9YDvP/dA9X/3APW/+ED1//WA9j/4QPZ/9wD2v/hA9z/3APd/+ED4v/hA+P/4QPr/+ED8v/hA/f/3AP4/+ED/P/hA/3/3AQC/9wEBP/hBBD/3AQS/9wEE//cBBn/4QQb/+EEHf/WBB//3AQh/9YEJf/hBCf/4QQp/+EELf/hBC7/3ARI/9wESv/cBEz/3ARO/9wEUP/cBFL/3ARU/9wEVv/cBFz/1gRe/9YEYP/WBGL/1gRk/9YEZv/WBGj/1gRq/9wEbP/cBG7/3ARw/9YEcv/cBHT/3QR2/90EeP/dBHr/3QR8/90Efv/dBID/3QSC/+EEhP/hBIb/4QSN/+EEqf/hBK3/3ASx/9YEtf/dBLr/3AS8/9wExv/hBMj/4QTU/+EE1v/hAL8ABgAMAAsADABH/+gASP/oAEn/6ABKAAwAS//oAFP/6gBV/+gAWgALAF0ACwCU/+gAmf/oALv/6AC9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/8AB/f/AAkP/wAKQ/04Ckf9OApL/TgKT/04ClP9OApX/TgKW/04Cq//eAqz/3gKt/94Crv/eAq//3gKw/94Csf/eArL/6wKz/+sCtP/rArX/6wK2/+sCvP/rAr3/6wK+/+sCv//rAsD/6wLB/+oCwv/qAsP/6gLE/+oCxf/oAsb/6ALH/04CyP/eAsn/TgLK/94Cy/9OAsz/3gLO/+sC0P/rAtL/6wLU/+sC1v/rAtj/6wLa/+sC3P/rAt7/6wLg/+sC4v/rAuT/6wLm/+sC6P/rAvb/DQMK/+sDDP/rAw7/6wMfABQDIQAUAyMAFAMm/+oDKP/qAyr/6gMs/+oDLv/qAzD/6gM0/+gDQ//AA0T/wANF/8ADRv/AA0f/wANI/8ADSf/AA17/wANf/8ADYP/AA5f/TgOf/04Dr//rA7P/6gO1/+sDt//oA7r/6gO7/+sDvP/qA8P/DQPH/04D0gAUA9T/3gPV/+sD1//rA9n/6wPa/+gD3P/rA+P/6APr/+gD8/9OA/T/3gP3/+sD/P/oA/3/6wQC/+sEBP/oBAn/TgQK/94EC/9OBAz/3gQQ/+sEEv/rBBP/6wQd/+sEH//rBCH/6wQl/+gEJ//oBCn/6AQu/+sEL/9OBDD/3gQx/04EMv/eBDP/TgQ0/94ENf9OBDb/3gQ3/04EOP/eBDn/TgQ6/94EO/9OBDz/3gQ9/04EPv/eBD//TgRA/94EQf9OBEL/3gRD/04ERP/eBEX/TgRG/94ESP/rBEr/6wRM/+sETv/rBFD/6wRS/+sEVP/rBFb/6wRc/+sEXv/rBGD/6wRi/+sEZP/rBGb/6wRo/+sEav/rBGz/6wRu/+sEcP/rBHL/6wR0/+oEdv/qBHj/6gR6/+oEfP/qBH7/6gSA/+oEgv/oBIT/6ASG/+gEiAAUBKr/TgSr/94Erf/rBLH/6wS1/+oEuv/rBLz/6wTQABQE1P/oBNb/6ATc/8AE4//ABPv/wAACAKAABAAEAAAABgAGAAEACwAMAAIAEwATAAQAJQAqAAUALAAtAAsALwA2AA0AOAA4ABUAOgA/ABYARQBGABwASQBKAB4ATABMACAATwBPACEAUQBUACIAVgBWACYAWABYACcAWgBdACgAXwBfACwAigCKAC0AlgCWAC4AnQCdAC8AsQC1ADAAtwC5ADUAuwC7ADgAvQC+ADkAwADBADsAwwDFAD0AxwDOAEAA0gDSAEgA1ADeAEkA4ADvAFQA8QDxAGQA9gD4AGUA+wD8AGgA/gEAAGoBAwEFAG0BCgEKAHABDQENAHEBGAEaAHIBIgEiAHUBLgEwAHYBMwE1AHkBNwE3AHwBOQE5AH0BOwE7AH4BQwFEAH8BVAFUAIEBVgFWAIIBWAFYAIMBXAFeAIQBhAGFAIcBhwGJAIkB6AHoAIwB6gHrAI0B7QHtAI8B8AHwAJAB+wH9AJECQAJAAJQCQwJDAJUCVQJVAJYCVwJYAJcCiwKMAJkCjgKOAJsCkAKlAJwCqgKxALICswK2ALoCuwLAAL4CxQLNAMQCzwLPAM0C0QLRAM4C0wLTAM8C1QLVANAC1wLgANEC6QLrANsC7QLtAN4C7wLvAN8C8QLxAOAC8wLzAOEC+AL4AOIC+gL6AOMC/AL8AOQC/gL+AOUDAAMAAOYDAgMOAOcDEAMQAPQDEgMSAPUDFAMUAPYDHwMfAPcDIQMhAPgDIwMjAPkDMQMxAPoDMwM2APsDOAM4AP8DOgM6AQADQANJAQEDVANYAQsDXgNgARADZQNlARMDdwN6ARQDfgOAARgDiQOJARsDlwOcARwDnwOuASIDsQOxATIDtQO1ATMDtwO3ATQDuwO7ATUDvgO/ATYDwQPCATgDxAPKAToDzAPOAUED0APVAUQD1wPYAUoD2gPdAUwD4wPkAVAD5gPmAVID6APoAVMD6gPtAVQD8AP1AVgD9wP3AV4D+wP8AV8EAQQBAWEEAwQMAWIEDwQQAWwEEgQVAW4EHAQdAXIEIQQhAXQEIwQpAXUELwRXAXwEWQRZAaUEWwRoAaYEcARwAbQEgQSGAbUEiASIAbsEjASNAbwEkASQAb4EkgSTAb8ElQSVAcEElwSXAcIEqASsAcMErgSuAcgEsASxAckEswSzAcsEtwS5AcwEuwS7Ac8EvQS/AdAEwQTBAdMEwwTDAdQExQTLAdUEzQTNAdwE0ATQAd0E0wTXAd4E2QTZAeME2wTcAeQE4ATgAeYE4wTjAecE7gTuAegE+wT7AekFAgUCAeoFBgUGAesAAgCaAAYABgAAAAsACwABABAAEAACABIAEgADACUAKQAEACwANAAJADgAPgASAEUARwAZAEkASQAcAEwATAAdAFEAVAAeAFYAVgAiAFoAWgAjAFwAXgAkAIoAigAnAJYAlgAoALEAtAApAL0AvQAtAMEAwQAuAMcAxwAvANQA1QAwANcA1wAyANoA2gAzANwA3gA0AOAA5gA3AOwA7AA+AO4A7gA/APcA9wBAAPwA/ABBAP4A/wBCAQQBBQBEAQoBCgBGAQ0BDQBHARgBGgBIAS4BMABLATMBNQBOATcBNwBRATkBOQBSATsBOwBTAUMBRABUAVQBVABWAVYBVgBXAVgBWABYAVwBXgBZAYQBigBcAY4BjwBjAegB6ABlAe0B7QBmAfAB8QBnAfsB/QBpAg8CDwBsAh4CIABtAkACQABwAkMCQwBxAlUCVQByAlcCWABzAosCjAB1Ao4CjgB3ApACtgB4ArsCwACfAsUC1QClAtcC4AC2AukC6wDAAu0C7QDDAu8C7wDEAvEC8QDFAvMC8wDGAvYC9gDHAvgC+ADIAvoC+gDJAvwC/ADKAv4C/gDLAwADAADMAwIDDgDNAxADEADaAxIDEgDbAxQDFADcAx8DHwDdAyEDIQDeAyMDIwDfAyUDJQDgAycDJwDhAykDKQDiAysDKwDjAy0DLQDkAy8DLwDlAzEDMQDmAzMDOwDnA0ADSQDwA1QDWAD6A14DYAD/A2UDZQECA3YDegEDA34DgAEIA4kDiQELA5cDnAEMA58DrgESA7EDsQEiA7UDtQEjA7cDtwEkA7sDuwElA74DvwEmA8EDygEoA8wDzgEyA9AD1QE1A9cD3QE7A+MD5AFCA+YD5gFEA+gD6AFFA+oD7QFGA/AD9QFKA/cD9wFQA/sD/AFRBAEEDAFTBA8EEAFfBBIEFQFhBBwEHQFlBCEEIQFnBCMEKQFoBC8EVwFvBFkEWQGYBFsEaAGZBHAEcAGnBHMEcwGoBHUEdQGpBIEEhgGqBIgEiAGwBIwEjQGxBJAEkAGzBJIEkwG0BJUElQG2BJcElwG3BKgErAG4BK4ErgG9BLAEsQG+BLMEswHABLcEuQHBBLsEuwHEBL0EvwHFBMEEwQHIBMMEwwHJBMUEywHKBM0EzQHRBNAE0AHSBNIE1wHTBNkE3AHZBOAE4AHdBOME4wHeBOkE6QHfBO4E7gHgBPkE+QHhBPsE+wHiBQIFAgHjBQYFBgHkAAIBdAAGAAYADwALAAsADwAQABAAGgASABIAGgAlACUAAgAmACYAJAAnACcAEAAoACgAAQApACkABAAuAC4ACAAv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AAAABAAAAAAAAAAAAAAAAAAAAAAAAAACAAcAGgAJAAIAAAACAAEAAgAAAAIAAQAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAABAAEwAAAAMAAAAAAA0AAAAAAAMAAAADAAAAAAACAAEAEAATAA0AAAAgACIAAAAAAAAAAAAAAAAAAAAeACEAAAADAAAAAwAAAAMAAAAAAAAAAAADABAAEwAAAAEAAQAAAAAAAAAAAB4AAAAAAAAAAgABAAAAAAAAAB4AIQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsAGwAAAA8ADwAYAA8ADwAPABgAAAAAAAAAGAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABkAJAAAAA4AFQAcAAAABQAAAAUAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAKAAUACgAAAAAAAAAAAAAAAAAVAAUAAAAAABUAAAAAAAAAGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkAAAAAABUABQASABkAFQAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAIAAAACAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAAAAAAAAAAABAAEAAQABAAEAAQABAACAAAAAAAAAAAAAAAAAAAAAAAAAAIAAgACAAIAAgALAAsACwALAAwABgAGAAYABgAGAAYABgABAAEAAQABAAEAAAAAAAAAAAADAAcABwAHAAcABwAIAAgACAAIAAkACQAEAAYABAAGAAQABgACAAEAAgABAAIAAQACAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAgABAAIAAQACAAEAAgABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAwAAAAMAAwACAAcAAgAHAAIABwAAAAAAAAAAAAAAAAAUABEAFAARABQAEQAUABEAFAARAA0AAAANAAAADQAAAAsACAALAAgACwAIAAsACAALAAgACwAIABYAAAAMAAkADAAXAB0AFwAdABcAHQAAAAAAAgAAAAAAAAAAAAoACgAKAAoACgAKAAoABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUADgAOAA4ADgASAAoACgAKAAUABQAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAcABwAHAAcAAAAFQAAAA4ADgAOAA4ADgAOACQAEgASAAAAAAAAAAQAAAAAAAAAAgAMAAAAAAAEAAAAAAAXAAAAAAAAAAAAAAACAAAAAAAMABAAAAAMAAEAAAADAAAACAAAAAcAAAAJAAAAAAAIAAcACAAAAAAAAAAAAAAAAAAjAAAAAAAfAAQAAAAAAAAAAAAAAAAAAgAAAAAAAgANABAABgABAAMABwADAAEACQATAAEAAwARAAAAAAAAAAMACQAWAAAAFgAAABYAAAAMAAkADwAPAAAAAAAPAAAAAwAEAAYAAAAAAAEAAwAAAAAAGgAJAAEAAgAAAAAAAgABAAwACQAAABAAEwAAAAQABgAEAAYAAAAAAAAAAQAAAAEAAQAQABMAAAAAAAAAAwAAAAMAAgAHAAIAAQACAAcAAAAAAB8ACQAfAAkAHwAJACAAIgAAAAMAAQAEAAYABAAGAAQABgAEAAYABAAGAAQABgAEAAYABAAGAAQABgAEAAYABAAGAAQABgAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAAAAAAAAAgAHAAIABwACAAcAAgAHAAIABwACAAcAAgAHAAIAAQACAAEAAgABAAIABwACAAEACwAIAAsACAAAAAgAAAAIAAAACAAAAAgAAAAIAAwACQAMAAkADAAJAAAADQAAACAAIgAAAAMAAAAA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BjIGOgX8BoYHVAXABnIGQgYCB2QGCAZKBpIGDgccBcQFyAYUByoFzAXQBdQGUgZaBhoGngc4BdgGfAZiBiAHRgYmBmoGqgYsBdwF4AXkBegGtgbCBs4G2gbmBewAAgcCAOsCggJDAkICQQJAAjgB9gH1AfQB8wHyAfEB8AHvAe4B7QHsAesB6gHpAegB5wHmAeUB5AHjAeICdAKEA0EChgKFA0AB8wKDAogCYgTjBOQB+gH7BOUE5gTnAfwE6AH9Af4B/wTtAgACAATuBO8CAQICAgMCCgT8BP0CCwIMAg0CDgIPAhAFAAUBBQMFBgUPAhICEwIUAhUCFgIXAhgCGQIaAhsCBAIFAgYCBwIIAgkCSwIdAh4CHwIgBQkCIQIjAiQCJQInAikChwNCA0MDRANFA0YDRwNIA0kDSgNLA0wDTQNOA08DUANRA1IDUwNUA1UDVgNXA1gDWQNaA1sDXANdA5MDXgNfA2ADYQNiA2MDZANlA2YDZwNoA2kDagNrA2wDbQNuA28DcANxA3IDcwUQA3UDdgN3A3gDeQN6A3sDfAN9A34DfwOAA4EDggODA4QDhQOGBRMDhwOIA4oDiQOLA4wDjQOOA48DkAORA5IDlAOVA5YFEQUSBNwE3QTeBN8E6QTsBOoE6wTwBPEE8gTgBOEE4gT7BP4E/wUCBQQFBQIRBQcE8wT0BPUE9gT3BPgE+QT6BRQFFQUWBRcFCAUKBQsCKAUNAioFDgUMAiYCHAIiBRwFHQACBwAA+gH3AoIB4QHgAd8B3gHdAdwB2wHaAdkB2AJDAkICQQJAAjgB9gH1AfQB8wHyAfEB8AHvAe4B7QHsAesB6gHpAegB5wHmAeUB5AHjAeIB+AH5AoQChgKFAocCgwKIAmIB+gH7AfwB/QH+Af8CAAIBAgICAwIEAgUCBgIHAggCCQIKAgsCDAINAg4CEAIRBQ8CEgITAhQCFQIWAhcCGAIZAhoCGwJLAh0CHgIfAiAFCQIhAiMCJAIlAiYCJwIoAikCKwIsAi4CLQNAA0EDQgNDA0QDRQNGA0cDSANJA0oDSwNMA00DTgNPA1ADUQNSA1MDVANVA1YDVwNYA1kDWgNbA1wDXQNeA18DYANhA2IDYwNkA2UDZgNnA2gDaQNqA2sDbANtA24DbwNwA3EDcgNzA3QFEAN1A3YDdwN4A3kDegN7A3wDfQN+A38DgAOBA4IDgwOEA4UDhgUTA4cDiAOKA4kDiwOMA40DjgOPA5ADkQOSA5MDlAOVA5YFEQUSBNwE3QTeBN8E4AThBOIE4wTkBOUE5gTnBOgE6QTqBOsE7ATtBO4E7wTwBPEE8gTzBPQE9QT2BPcE+AIPBPkE+gT7BPwE/QT+BP8FAAUBBQIFAwUEBQUFBgUHBRQFFQUWBRcFCAUKBQsFDQIqBQ4FDAIcAiIFHAUdAAEAAQF7AAEAAQBLAAEAAQC7AAEAAQA2AAEAAQATAAEAAgMZAxoAAgbkBtgAAgbmBtgAAQbuAAEG8AABBvIAAgABABQAHQAAAAEAAgAvAE8AAQADAEkASwJ6AAIAAAABBt4AAQAGAssCzALdAt4DYANpAAEABgBNAE4C8gPfA+EEWgACAAMBlAGUAAAB1QHXAAECLwI1AAQAAgACAKgArAABASQBJwABAAEADAAnACgAKwAzADUARgBHAEgASwBTAFQAVQACAAIAFAAdAAACZQJuAAoAAgAGAE0ATQAGAE4ATgAEAvIC8gAFA98D3wADA+ED4QACBFoEWgABAAIABAAUAB0AAAJ2AnYACgKBAoEACwSeBKUADAACAAYAGgAaAAAAHAAcAAECWgJfAAICYwJjAAgCZQJuAAkCdQJ1ABMAAQAUABoAHAJaAlsCXAJdAl4CXwJjAnUCdgKBBJ4EnwSgBKEEogSjBKQEpQABBd4AAQXgAAEF4gABBeQAAQXmAAEF6AABBeoAAQXsAAEF7gABBfAAAQXyAAEF9AABBfYAAQX4AAEF+gACBfwGAgACBgIGCAACBggGDgACBg4GFAACBhQGGgACBhoGIAACBiAGJgACBiYGLAACBiwGMgACBjIGOAACBjgGPgADBj4GRAZKAAMGSAZOBlQAAwZSBlgGXgADBlwGYgZoAAMGZgZsBnIAAwZwBnYGfAADBnoGgAaGAAMGhAaKBpAABAaOBpQGmgagAAQGnAaiBqgGrgAFBqoGsAa2BrwGwgAFBrwGwgbIBs4G1AAFBs4G1AbaBuAG5gAFBuAG5gbsBvIG+AAFBvIG+Ab+BwQHCgAFBwQHCgcQBxYHHAAFBxYHHAciBygHLgAFBygHLgc0BzoHQAAFBzoHQAdGB0wHUgAGB0wHUgdYB14HZAdqAAYHYgdoB24HdAd6B4AABgd4B34HhAeKB5AHlgAGB44HlAeaB6AHpgesAAYHpAeqB7AHtge8B8IABge6B8AHxgfMB9IH2AAGB9AH1gfcB+IH6AfuAAcILgfmB+wH8gf4B/4IBAAHCCYH+ggACAYIDAgSCBgAAQDrAAoARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQBeAIUAhgCHAIkAigCLAI0AkACSAJQAuwC8AL0AvgC/AMAAwQDCAMMAxADFAMYAxwDIAMkAygDLAMwAzQDOAOoA6wDsAO0A7gDvAPAA8QDyAPMA9AD1APYA9wD4APkA+gD7APwA/QD+AP8BAAEBAQIBAwEEAQUBBgEHATABNAE2ATgBOgE8AUIBRAFGAUoBTQFaAo0CjwKrAqwCrQKuAq8CsAKxArICswK0ArUCtgK3ArgCuQK6ArsCvAK9Ar4CvwLAAsECwgLDAsQCxQLGAsgCygLMAs4C0ALSAtQC1gLYAtoC3ALeAuAC4gLkAuYC6ALqAuwC7gLwAvIC9QL3AvkC+wL9Av8DAQMDAwUDBwMKAwwDDgMQAxIDFAMWAxgDGgMcAx4DIAMiAyQDJgMoAyoDLAMuAzADMgM0AzcDOQM7Az0DPwOvA7ADsQOyA7QDtQO2A7cDuAO5A7oDuwO8A70D1APVA9YD1wPYA9kD2gPbA9wD3QPeA98D4APhA+ID4wPlA+cD6QPrBAAEAgQEBBIEGQQfBCUEjwSQBJQEmAUZBRsAAQD6AAgACgAUABUAFgAXABgAGQAaABsAHAAdACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0APgBlAGcAgQCDAIQAjACPAJEAkwCxALIAswC0ALUAtgC3ALgAuQC6ANIA0wDUANUA1gDXANgA2QDaANsA3ADdAN4A3wDgAOEA4gDjAOQA5QDmAOcA6ADpAS8BMwE1ATcBOQE7AUEBQwFFAUkBSwFMAVgBWQGnAa0BsgG1AosCjAKOApACkQKSApMClAKVApYClwKYApkCmgKbApwCnQKeAp8CoAKhAqICowKkAqUCpgKnAqgCqQKqAscCyQLLAs0CzwLRAtMC1QLXAtkC2wLdAt8C4QLjAuUC5wLpAusC7QLvAvEC8wL0AvYC+AL6AvwC/gMAAwIDBAMGAwkDCwMNAw8DEQMTAxUDFwMZAxsDHQMfAyEDIwMlAycDKQMrAy0DLwMxAzMDNQM2AzgDOgM8Az4DlwOYA5kDmgObA5wDnQOfA6ADoQOiA6MDpAOlA6YDpwOoA6kDqgOrA6wDrQOuA74DvwPAA8EDwgPDA8QDxQPGA8cDyAPJA8oDywPMA80DzgPPA9AD0QPSA9MD5APmA+gD6gP/BAEEAwQYBB4EJASOBJMElwUYBRoBzAACAE0BzQACAFABzgADAEoATQHPAAMASgBQAAEAAQBKAcsAAgBKAdEAAgBYAdAAAgBYAAEAAwBKAFcAlQAAAAEAAQABAAEAAAADBLcAAgCtAs0AAgCpBL0AAgCtBMoAAgCpBLgAAgCtAs4AAgCpBKcAAgCpBL4AAgCtBFoAAgCtBMsAAgCpAzwAAgCpAz4AAgCpAz0AAgCpAz8AAgCpBLYAAgCpBLsAAgHKBLkAAgCtBKYAAgCpAucAAgHKA/EAAgCpBMUAAgCtAx8AAgHKBNAAAgCtBNUAAgCtBNMAAgCqAzYAAgCpBNkAAgCtBLwAAgHKBLoAAgCtA/IAAgCpBMYAAgCtAyAAAgHKBNEAAgCtBNYAAgCtBNQAAgCqAzcAAgCpBNoAAgCtBL8AAgCpAvgAAgHKBMEAAgCtAvoAAgCpAvwAAgHKBMMAAgCtAxUAAgCpAxsAAgHKBM4AAgCtA+YAAgCpBNcAAgCtA+QAAgCoBMAAAgCpAvkAAgHKBMIAAgCtAvsAAgCpAv0AAgHKBMQAAgCtAxYAAgCpAxwAAgHKBM8AAgCtA+cAAgCpBNgAAgCtA+UAAgCoAw8AAgCpAxEAAgHKBMwAAgCtBLIAAgCsAxAAAgCpAxIAAgHKBM0AAgCtBLMAAgCsAwIAAgCpAwQAAgHKBMcAAgCtBKgAAgCoAqAAAgCqAqoAAgCpBIEAAgCtA+oAAgCoBIMAAgCrBIUAAgCqAwMAAgCpAwUAAgHKBMgAAgCtBKkAAgCoArsAAgCqAsUAAgCpBIIAAgCtA+sAAgCoBIQAAgCrBIYAAgCqArgAAgCpArcAAgCoBFgAAgCrAuwAAgCqBK8AAgCsBGkAAgCpBHEAAgCtBGsAAgCoBG0AAgCrBG8AAgCqBGoAAgCpBHIAAgCtBGwAAgCoBG4AAgCrBHAAAgCqBHcAAgCpBH8AAgCtBHkAAgCoBHsAAgCrBH0AAgCqBHgAAgCpBIAAAgCtBHoAAgCoBHwAAgCrBH4AAgCqApEAAgCpBC8AAgCtApAAAgCoBDEAAgCrApMAAgCqBKoAAgCsApkAAgCpBEcAAgCtApgAAgCoBEkAAgCrBEsAAgCqBKwAAgCsAp0AAgCpBFkAAgCtApwAAgCoBFcAAgCrAusAAgCqBK4AAgCsAqwAAgCpBDAAAgCtAqsAAgCoBDIAAgCrAq4AAgCqBKsAAgCsArQAAgCpBEgAAgCtArMAAgCoBEoAAgCrBEwAAgCqBK0AAgCsAr0AAgCpBFwAAgCtArwAAgCoBF4AAgCrAr8AAgCqBLEAAgCsAsIAAgCpBHQAAgCtAsEAAgCoBHYAAgCrAyYAAgCqBLUAAgCsAqIAAgCpBFsAAgCtAqEAAgCoBF0AAgCrAqQAAgCqBLAAAgCsAqcAAgCpBHMAAgCtAqYAAgCoBHUAAgCrAyUAAgCqBLQAAgCsBMkAAwCqAKkE0gADAKoAqQACABEAJQApAAAAKwAtAAUALwA0AAgANgA7AA4APQA+ABQARQBJABYASwBNABsATwBUAB4AVgBbACQAXQBeACoAgQCBACwAgwCDAC0AhgCGAC4AiQCJAC8AjQCNADAAmACbADEA0ADQADUAAA==\",\r\n  \"Roboto-Regular.ttf\": \"AAEAAAARAQAABAAQR0RFRqWLoiAAAb8IAAACWEdQT1PInCKzAAHBYAAAZfhHU1VChRYO9AACJ1gAABX2T1MvMpeDsYsAAAGYAAAAYGNtYXDOyFo6AAAWdAAABoJjdnQgO/gmfQAAL1AAAAD+ZnBnbagFhDIAABz4AAAPhmdhc3AACAAZAAG+/AAAAAxnbHlmnLrJSwAAOpAAAYGgaGVhZAZzHSoAAAEcAAAANmhoZWEKugrAAAABVAAAACRobXR45eWbKgAAAfgAABR8bG9jYQ+pa9gAADBQAAAKQG1heHAIzxDGAAABeAAAACBuYW1lOEJpvQABvDAAAAKqcG9zdP9tAGQAAb7cAAAAIHByZXB5WM7TAAAsgAAAAs4AAQAAAAMBSPgkVmdfDzz1ABsIAAAAAADE8BEuAAAAAN8Gv276Gv3VCTEIcwAAAAkAAgAAAAAAAAABAAAHbP4MAAAJSvoa/koJMQABAAAAAAAAAAAAAAAAAAAFHwABAAAFHwCpABUAdgAHAAIAEAAvAJoAAALmD3UAAwABAAQEiQGQAAUAAAWaBTMAAAEfBZoFMwAAA9EAZgIAAAACAAAAAAAAAAAA4AAC/1AAIFsAAAAgAAAAAEdPT0cAQAAA//0GAP4AAGYHmgIAIAABnwAAAAAEOgWwAAAAIAADA4wAZAAAAAAAAAAAAfwAAAH8AAACEAChApAAiQTtAHcEfwBuBdwAaQT6AGYBZgBoAr0AhgLJACcDcgAcBIoATgGTAB0CNgAmAhwAkANNABMEfwBzBH8AqwR/AF4EfwBfBH8ANQR/AJoEfwCFBH8ATgR/AHEEfwBkAfAAhQGxACkEEQBIBGQAmAQvAIcDyABLBy8AbQU4AB0E/ACpBTUAeAVAAKkEjACpBGwAqQVzAHoFtQCpAi0AtwRqADUFBQCpBE8AqQb8AKkFtQCpBYEAdwUMAKkFgQBuBO4AqQTAAFEExgAyBTAAjAUYAB0HGQA9BQQAOgTOAA8EywBXAh8AkwNJACkCHwAKA1gAQAOcAAQCeQA5BFoAbQR+AIwEMABdBIMAXwQ+AF0CyAA9BH4AYQRoAI0B8gCOAer/vgQOAI0B8gCcBwQAiwRrAI0EkABcBH4AjASMAF8CtgCNBCEAXwKeAAkEaQCJA+AAIQYDACsD+AAqA8kAFgP4AFkCtQBAAfQAsAK1ABQFcQCDAfQAiwRhAGkEpwBbBbUAaQQ0AA8B7ACUBOgAWwNZAGUGSQBcA5QAkwPBAGUEbgB/BkoAWwOrAI8C/QCDBEcAYQLvAEIC7wA/AoIAewSJAJsD6gBEAhcAlAH8AHQC7wB7A6QAewPAAGcF3ABVBjUAUAY5AHADygBEB3r/8QRFAFkFgQB3BLoApwTCAIwGwgBPBLEAfgSSAEcEiQBcBJwAlQTIAF8FmwAeAfsAnAR0AJsETwAjAioAIwWLAKIEiQCSB6EAaQdEAGEB/AChBYcAXgK6/+MFfwBmBJMAXAWQAIwE8wCJAgT/tAQ4AGMDxACqA44AjgOrAI8DawCCAfIAjgKuAHkCKwAyA8YAewL8AF8CWgB/AAD8pwAA/W4AAPyKAAD9XQAA/CcAAP04Ag4AuAQMAHICFwCUBHMAsgWkACAFcgBnBT8AMgSSAHgFtQCyBJIARgW7AE4FiQBaBVIAcgSGAGQEvQChBAMALwSJAGEEUQBkBCUAbQSJAJIEjwB7ApgAwwRvACYD7ABmBMUAKQSJAJIETgBlBIgAYQQsAFEEXgCQBaMAWAWaAGAGlwB6BKIAegRD/9oGSABLBgAAKwVlAHsIkgAyCKUAsgaDAD4FtACwBQsAowYEADMHQwAbBMAAUAW1ALIFqgAwBQgATQYtAFQF2gCvBXoAlweHALAHwACwBhIAEQbrALIFBQCjBWUAlAcnALcFGABaBG0AYgSTAJ4DXACbBNQALgYhABYEEABYBJ4AnQRTAJ0EoAAsBe8AngSdAJ0EngCdA9kAKAXOAGQEvgCdBFoAaAZ5AJ0GnwCSBPcAHgY2AJ4EWACeBE4AZAaIAJ4EZAAvBGj/5wROAGcGyQAnBuQAnQSJ//0EngCdBwkAnAYsAIEEV//bBywAuAX5AJoE0wAoBEcADwcMAMoGDAC9BtIAkwXiAJcJBQC3B9EAnAQkAFAD2wBMBXIAZwSMAFwFCwAWBAQALwVyAGcEiQBcBwEAnAYkAH4HCQCcBiwAgQUyAHYESABkBP4AdAAA/GYAAPxwAAD9ZQAA/aQAAPoaAAD6KwYJALIE7QCdBFf/2wUbAKkEigCMBGQAogORAJIE2wCyBAYAkgeiABsGYQAWBZoAsgS4AJ0FCgCkBH4AmwaMAEUFhAA/Bf8AqQTZAJ0HzwCpBbQAkggxALAG9ACSBe8AcQTUAG4FGAA6BCoAKgctADQFXQAfBbwAlwSWAGgFcACXBGsAhAVwAIkGMAA/BL7/3QUKAKQEWgCbBf4AMATvACwFswCyBIkAkgYSAKkE7ACdB08AqQY+AJ4FhwBeBKgAaASoAGoEuAA5A6sAOgUuADoEQAAqBPcAVwaVAFoG5QBkBlcANgUsADEESgBTBAgAeQfCAEUGdgA/B/sAqgaiAJAE9wB2BB4AZgWuACQFIQBGBWUAlwYCADAE8wAsAyEAcAQUAAAIKQAABBQAAAgpAAACuQAAAgoAAAFcAAAEfwAAAjAAAAGiAAABAAAAANEAAAAAAAACNAAmAjQAJgVAAKIGPwCQA6YADQGaAGEBmgAwAZgAJAGaAE8C1ABpAtwAPALCACQEagBGBJAAVwKzAIsDxACUBVoAlAF/AFIHqgBEAmcAbAJnAFoDowA8Au8AUQLvADYC7wBcAu8AVgLvADsC7wBPAu8ASgNhAHoC7wBRAu8AewLvAEIC7wA/Au8ANgLvAFwC7wBWAu8AOwLvAE8C7wBKBKcAWwZWAB8GkQCnCHYAqQXrAB8GKwCMBH8AXwXaAB8EIwArBHQAIQVIAF0FTwAfBegAewPOAGgIOgCiBQEAaAUYAJgGJgBUBtcAZQbPAGQGagBaBJAAagWPAKkErwBGBJMAqATFAD8IOgBjAg3/rwSCAGUEZACYBBEAPQQvAIQECAAsAkwAtQKQAG8CBABdBPMAPQRvACAEiwA9BtQAPQbUAD0E7gA9BpsAXwAAAAAINABbCDUAXALvAEIC7wB7Au8AUQQQAFYEEABhBBAAQgQPAHIEEACBBBAAMQQQAE8EEABPBBAAmQQQAGMEIwBIBCsADgRUACcGFQAxBGgAFAR9AHUEJwApBCAARARKAIoEvABaBF0AiwS8AGAE4wCLBgIAiwO1AIsEVQCLA88ALAHpAJgE5ACLBKwAZAPMAIsEIABEBDQAMQOhAA4DrwCLBGgAFAS8AGAEaAAUA4kAPgTPAIsD8ABABWcAYQUXAGEE8wB2BXMAJwR8AGEHQgAoB1AAiwV0ACkEzgCLBFoAiwUlAC4GCwAfBEAASATsAIsETgCMBMEAKAQgACMFKQCLBGoAPQZRAIsGrACLBR0ACQXxAIsETwCLBHwASwZ3AIsEhwBQBBIACwZIAB8EeQCMBQoAjAU3ACQFwwBgBF8ADgSoACcGYgAnBGoAPQRqAIsFxAACBMsAXgRAAEgEvABgBDQAMQPkAEMIIgCLBKsAKALvAD8C7wA2Au8AXALvAFYC7wA7Au8ATwLvAEoDlwCPArUAnwPmAIsEOgAfBMQAZAVMALIFJACyBBQAkwU9ALIEDwCTBIAAiwR8AGEEUQCLBIYAFAH+AJ8DpQCCAAD8owPwAG8D9P9dBA8AaQP1AGkDrwCLA6AAggOfAIIC7wBRAu8ANgLvAFwC7wBWAu8AOwLvAE8C7wBKBYIAfgWvAH4FkwCyBeAAfgXjAH4D1QCgBIIAgwRYAA8EzwA+BGsAZQQuAEoDpQCEAZIAaAakAGAEugCCAfz/tgR/ADsEfwBzBH8AIgR/AHYEfwB2BH8ANgR/AH4EfwBeBH8AcQR/APQCBv+0AgT/tAH7AJwB+//5AfsAnARRAIsFAAB4BCEAOwR+AIwEMwBdBJMAWwSMAFsEnwBaBI4AjAScAFsEPgBdBH4AYQRwAFoDeQBXBNYAaAO1AAEGOgAJA/kAiwS8AGAE4wAwBOMAiwH8AAACNgAmBV4AJQVeACUEhgABBMYAMgKe//QFOAAdBTgAHQU4AB0FOAAdBTgAHQU4AB0FOAAdBTUAeASMAKkEjACpBIwAqQSMAKkCLf/fAi0AsQIt/+oCLf/VBbUAqQWBAHcFgQB3BYEAdwWBAHcFgQB3BTAAjAUwAIwFMACMBTAAjATOAA8EWgBtBFoAbQRaAG0EWgBtBFoAbQRaAG0EWgBtBDAAXQQ+AF0EPgBdBD4AXQQ+AF0B+//EAfsAlgH7/88B+/+6BGsAjQSQAFwEkABcBJAAXASQAFwEkABcBGkAiQRpAIkEaQCJBGkAiQPJABYDyQAWBTgAHQRaAG0FOAAdBFoAbQU4AB0EWgBtBTUAeAQwAF0FNQB4BDAAXQU1AHgEMABdBTUAeAQwAF0FQACpBRkAXwSMAKkEPgBdBIwAqQQ+AF0EjACpBD4AXQSMAKkEPgBdBIwAqQQ+AF0FcwB6BH4AYQVzAHoEfgBhBXMAegR+AGEFcwB6BH4AYQW1AKkEaACNAi3/tgH7/5sCLf/NAfv/sgIt/+wB+//RAi0AFwHy//oCLQCqBpcAtwPcAI4EagA1AgT/tAUFAKkEDgCNBE8AogHyAJMETwCpAfIAVgRPAKkCiACcBE8AqQLOAJwFtQCpBGsAjQW1AKkEawCNBbUAqQRrAI0Ea/+7BYEAdwSQAFwFgQB3BJAAXAWBAHcEkABcBO4AqQK2AI0E7gCpArYAUwTuAKkCtgBkBMAAUQQhAF8EwABRBCEAXwTAAFEEIQBfBMAAUQQhAF8EwABRBCEAXwTGADICngAJBMYAMgKeAAkExgAyAsYACQUwAIwEaQCJBTAAjARpAIkFMACMBGkAiQUwAIwEaQCJBTAAjARpAIkFMACMBGkAiQcZAD0GAwArBM4ADwPJABYEzgAPBMsAVwP4AFkEywBXA/gAWQTLAFcD+ABZB3r/8QbCAE8FgQB3BIkAXASA/70EgP+9BCcAKQSGABQEhgAUBIYAFASGABQEhgAUBIYAFASGABQEfABhA+YAiwPmAIsD5gCLA+YAiwHp/7wB6QCOAen/xwHp/7IE4wCLBLwAYAS8AGAEvABgBLwAYAS8AGAEfQB1BH0AdQR9AHUEfQB1BCsADgSGABQEhgAUBIYAFAR8AGEEfABhBHwAYQR8AGEEgACLA+YAiwPmAIsD5gCLA+YAiwPmAIsErABkBKwAZASsAGQErABkBOQAiwHp/5MB6f+qAen/yQHpAAUB6QCHA88ALARVAIsDtQCDA7UAiwO1AIsDtQCLBOMAiwTjAIsE4wCLBLwAYAS8AGAEvABgBEoAigRKAIoESgCKBCAARAQgAEQEIABEBCAARAQnACkEJwApBCcAKQR9AHUEfQB1BH0AdQR9AHUEfQB1BH0AdQYVADEEKwAOBCsADgQjAEgEIwBIBCMASAU4AB0E8P+MBhn/mgKR/6AFlf/6BTL/dgVm//wCmP+bBTgAHQT8AKkEjACpBMsAVwW1AKkCLQC3BQUAqQb8AKkFtQCpBYEAdwUMAKkExgAyBM4ADwUEADoCLf/VBM4ADwSGAGQEUQBkBIkAkgKYAMMEXgCQBHQAmwSQAFwEiQCbA+AAIQRwAFoCmP/kBF4AkASQAFwEXgCQBpcAegSMAKkEcwCyBMAAUQItALcCLf/VBGoANQUkALIFBQCpBQgATQU4AB0E/ACpBHMAsgSMAKkFtQCyBvwAqQW1AKkFgQB3BbUAsgUMAKkFNQB4BMYAMgUEADoEWgBtBD4AXQSeAJ0EkABcBH4AjAQwAF0DyQAWA/gAKgQ+AF0DXACbBCEAXwHyAI4B+/+6Aer/vgRTAJ0DyQAWBxkAPQYDACsHGQA9BgMAKwcZAD0GAwArBM4ADwPJABYBZgBoApAAiQQgAKECBP+0AZoAMAb8AKkHBACLBTgAHQRaAG0EjACpBbUAsgQ+AF0EngCdBYkAWgWaAGAFCwAWBAT/+whZAFwJSgB3BMAAUAQQAFgFNQB4BDAAXQTOAA8EAwAvAi0AtwdDABsGIQAWAi0AtwU4AB0EWgBtBTgAHQRaAG0Hev/xBsIATwSMAKkEPgBdBYcAXgQ4AGMEOABjB0MAGwYhABYEwABQBBAAWAW1ALIEngCdBbUAsgSeAJ0FgQB3BJAAXAVyAGcEjABcBXIAZwSMAFwFZQCUBE4AZAUIAE0DyQAWBQgATQPJABYFCABNA8kAFgV6AJcEWgBoBusAsgY2AJ4EgwBfBTgAHQRaAG0FOAAdBFoAbQU4AB0EWgBtBTgAHQRa/8kFOAAdBFoAbQU4AB0EWgBtBTgAHQRaAG0FOAAdBFoAbQU4AB0EWgBtBTgAHQRaAG0FOAAdBFoAbQU4AB0EWgBtBIwAqQQ+AF0EjACpBD4AXQSMAKkEPgBdBIwAqQQ+AF0EjP/uBD7/uASMAKkEPgBdBIwAqQQ+AF0EjACpBD4AXQItALcB+wCcAi0ApAHyAIYFgQB3BJAAXAWBAHcEkABcBYEAdwSQAFwFgQBGBJD/wgWBAHcEkABcBYEAdwSQAFwFgQB3BJAAXAV/AGYEkwBcBX8AZgSTAFwFfwBmBJMAXAV/AGYEkwBcBX8AZgSTAFwFMACMBGkAiQUwAIwEaQCJBZAAjATzAIkFkACMBPMAiQWQAIwE8wCJBZAAjATzAIkFkACMBPMAiQTOAA8DyQAWBM4ADwPJABYEzgAPA8kAFgShAF8ExgAyA9kAKAV6AJcEWgBoBHMAsgNcAJsGMAA/BL7/3QRoAI0FBf/UBQX/1ARzAAMDXP/9BTgACwQo/9MEzgAPBAMALwUEADoD+AAqBFEAZARsABIGPwCQBH8AXgR/AF8EfwA1BH8AmgSTAJkEpwCFBJMAZASnAIcFcwB6BH4AYQW1AKkEawCNBTgAHQRaADoEjABfBD4AKQIt/wsB+/7wBYEAdwSQADME7gBWArb/jAUwAIwEaQArBKf/OAT8AKkEfgCMBUAAqQSDAF8FQACpBIMAXwW1AKkEaACNBQUAqQQOAI0FBQCpBA4AjQRPAKkB8gCGBvwAqQcEAIsFtQCp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GRwfkhGaEcIWzBiqEdgUuhJ4EiIRNimwEVQmjhFUEVQTBBIiEXoYRBI8Ee4RChI8FQASIhJaGZIezBcmEloXJiWQJ5Ai1h1kEOwSPBEiPkQRVDe+JJ4okhIIEPIQ+EEuEP4UQhPWGhQ5sC1yNA4sJBKaMLY74hbMISoSmhKaFUYSmhKaEpoyYBqeEpoTfh4GHEAX4iO4HNIRQCIAEQoTVDXkRCwSIhR8KuYbKBLeEiIbshMqFnYUDBLeFyYTBBGaEjwTVBIiHswRQBbMEQoVkBWQFZASmhbMEQoSmhKaEloRQBbMEQoRBC8UEQQRBBEEERwV2hYoERYRLBEQERYREBFeERARiBJaEloSWhJaH5IXJhcmFyYXJhcmFyYXJhGIEWwRbBFsEWwSmhKaEpoSmhKaEloSWhJaEloSWhiqEngSeBJ4EngSeBJ4EngRNhE2ETYRNhFUEwQTBBMEEwQTBBI8EjwXJhJ4FyYSeBcmEngRiBGIEYgRiBJaEWwRNhFsETYRbBE2EWwRNhFsETYSmhFUEpoSmhKaEpoSmhWQEawRrBGsEawSmhFUEpoRVBKaEVQRVBJaEwQSWhMEEloTBBF6EXoReh+SH5IfkhHCGKoSPBiqEdgR2BHYERYRFhEcERAREBEQERAREBEQERARFhEWERYRFhEWERAREBEQERYRLBEsESwRLBEWERYRFhEcFyYRbBKaEpoSWhiqFyYRShFsEdgSmhKaFZASmhKaEloSvB+SGKoWzBKaGKoRVBMEEjwTBBFsHswSmhKaFZAVkBVGFyYRSh7MEWwSmhKaEloSvBGIH5IWzBJ4ETYTBBIiEjwRChE2EUASPBHCEcIRwhiqEjwRBBEEEQQSmhFUFyYSeBFsETYRmhI8EYgYqhI8EpoWzBEKEpoXJhJ4FyYSeBFsETYRNhE2FswRChJaEwQTBBIiFUYSPBVGEjwVRhI8FyYSeBcmEngXJhJ4FyYSeBcmEngXJhJ4FyYSeBcmEngXJhJ4FyYSeBcmEngXJhJ4EWwRNhFsETYRbBE2EWwRNhFsETYRbBE2EWwRNhFsETYSmhKaEloTBBJaEwQSWhMEEloTBBJaEwQSWhMEEloTBBMEGKoSPBiqEjwYqhI8H5IezBFAEVQTfh7MFZAYqhKaEVQXJhJ4EWwSmhJaEwQRehFKEiISWhJaEpoRVBWQFZARrBKa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/+wCtP/sArX/7AK2/+wCzv/sAtD/7ALS/+wC1P/sAtb/7ALY/+wC2v/sAtz/7ALe/+wC4P/sAuL/7ALk/+wC5v/sAuj/7AOv/+wD1f/sA9n/7APc/+wD9//sA/3/7AQC/+wEEP/sBBL/7AQT/+wEH//sBC7/7ARI/+wESv/sBEz/7ARO/+wEUP/sBFL/7ARU/+wEVv/sBGr/7ARs/+wEbv/sBHL/7ASt/+wEuv/sBLz/7ABAACf/5gAr/+YAM//mADX/5gCD/+YAk//mAJj/5gCz/+YAuP/CAMQAEADT/+YBCP/mARf/5gEb/+YBHf/mAR//5gEh/+YBQf/mAWr/5gJV/+YCVv/mAlj/5gJZ/+YCl//mAqH/5gKi/+YCo//mAqT/5gKl/+YCzf/mAs//5gLR/+YC0//mAuH/5gLj/+YC5f/mAuf/5gMJ/+YDC//mAw3/5gM+/+YDm//mA6j/5gPO/+YD0f/mA/7/5gQB/+YEHP/mBB7/5gQg/+YEW//mBF3/5gRf/+YEYf/mBGP/5gRl/+YEZ//mBGn/5gRr/+YEbf/mBG//5gRx/+YEsP/mBMn/5gBHABAAAAASAAAAR//nAEj/5wBJ/+cAS//nAFX/5wCU/+cAmf/nALv/5wDEAA8AyP/nAMn/5wD3/+cBA//nAR7/5wEi/+cBQv/nAWD/5wFh/+cBa//nAYYAAAGKAAABjgAAAY8AAAKy/+cCs//nArT/5wK1/+cCtv/nAs7/5wLQ/+cC0v/nAtT/5wLW/+cC2P/nAtr/5wLc/+cC3v/nAuD/5wLi/+cC5P/nAub/5wLo/+cDr//nA9X/5wPZ/+cD3P/nA/f/5wP9/+cEAv/nBBD/5wQS/+cEE//nBB//5wQu/+cESP/nBEr/5wRM/+cETv/nBFD/5wRS/+cEVP/nBFb/5wRq/+cEbP/nBG7/5wRy/+cErf/nBLr/5wS8/+cATQAGABAACwAQAA0AFABBABIAR//oAEj/6ABJ/+gAS//oAFX/6ABhABMAlP/oAJn/6AC7/+gAyP/oAMn/6AD3/+gBA//oAR7/6AEi/+gBQv/oAWD/6AFh/+gBa//oAYQAEAGFABABhwAQAYgAEAGJABACsv/oArP/6AK0/+gCtf/oArb/6ALO/+gC0P/oAtL/6ALU/+gC1v/oAtj/6ALa/+gC3P/oAt7/6ALg/+gC4v/o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A9z/sAPjAAsD6wALA+wADQPtAA0D8AANA/T/8AP3/7AD/AALA/3/sAQC/7AEBAALBAr/8AQM//AEEP+wBBL/sAQT/7AEHf/WBB//sAQh/9YEJQALBCcACwQpAAsELv+wBDD/8AQy//AENP/wBDb/8AQ4//AEOv/wBDz/8AQ+//AEQP/wBEL/8ARE//AERv/wBEj/sARK/7AETP+wBE7/sARQ/7AEUv+wBFT/sARW/7AEXP/WBF7/1gRg/9YEYv/WBGT/1gRm/9YEaP/WBGr/sARs/7AEbv+wBHD/1gRy/7AEggALBIQACwSGAAsEq//wBK3/sASx/9YEuv+wBLz/sATUAAsE1gALBNz/vwTg/+0E4QANBOP/vwTvAA0E8gANBPv/vwUC/+0FBf/tBQYADgUK/+0FCwANAOcAEP8WABL/FgAl/1YALv74ADgAFABF/94AR//rAEj/6wBJ/+sAS//rAFP/6wBV/+sAVv/mAFn/6gBa/+gAXf/oAJT/6wCZ/+sAm//qALL/VgC0/1YAu//rAL3/6ADI/+sAyf/rAMv/6gDSABQA1gAUAPf/6wED/+sBDf9WARj/6wEa/+gBHv/rASL/6wE5ABQBQv/rAUUAFAFg/+sBYf/rAWv/6wGG/xYBiv8WAY7/FgGP/xYB+//AAf3/wAJD/8ACkP9WApH/VgKS/1YCk/9WApT/VgKV/1YClv9WAqv/3gKs/94Crf/eAq7/3gKv/94CsP/eArH/3gKy/+sCs//rArT/6wK1/+sCtv/rArz/6wK9/+sCvv/rAr//6wLA/+sCwf/qAsL/6gLD/+oCxP/qAsX/6ALG/+gCx/9WAsj/3gLJ/1YCyv/eAsv/VgLM/94Czv/rAtD/6wLS/+sC1P/rAtb/6wLY/+sC2v/rAtz/6wLe/+sC4P/rAuL/6wLk/+sC5v/rAuj/6wL2/vgDCv/rAwz/6wMO/+sDHwAUAyEAFAMjABQDJv/qAyj/6gMq/+oDLP/qAy7/6gMw/+oDNP/oA0P/wANE/8ADRf/AA0b/wANH/8ADSP/AA0n/wANe/8ADX//AA2D/wAOX/1YDn/9WA6//6wOz/+oDtf/rA7f/6AO6/+oDu//rA7z/6gPD/vgDx/9WA9IAFAPU/94D1f/rA9f/6wPZ/+sD2v/oA9z/6wPj/+gD6//oA/P/VgP0/94D9//rA/z/6AP9/+sEAv/rBAT/6AQJ/1YECv/eBAv/VgQM/94EEP/rBBL/6wQT/+sEHf/rBB//6wQh/+sEJf/oBCf/6AQp/+gELv/rBC//VgQw/94EMf9WBDL/3gQz/1YENP/eBDX/VgQ2/94EN/9WBDj/3gQ5/1YEOv/eBDv/VgQ8/94EPf9WBD7/3gQ//1YEQP/eBEH/VgRC/94EQ/9WBET/3gRF/1YERv/eBEj/6wRK/+sETP/rBE7/6wRQ/+sEUv/rBFT/6wRW/+sEXP/rBF7/6wRg/+sEYv/rBGT/6wRm/+sEaP/rBGr/6wRs/+sEbv/rBHD/6wRy/+sEdP/qBHb/6gR4/+oEev/qBHz/6gR+/+oEgP/qBIL/6ASE/+gEhv/oBIgAFASq/1YEq//eBK3/6wSx/+sEtf/qBLr/6wS8/+sE0AAUBNT/6ATW/+gE3P/ABOP/wAT7/8AAAgCgAAQABAAAAAYABgABAAsADAACABMAEwAEACUAKgAFACwALQALAC8ANgANADgAOAAVADoAPwAWAEUARgAcAEkASgAeAEwATAAgAE8ATwAhAFEAVAAiAFYAVgAmAFgAWAAnAFoAXQAoAF8AXwAsAIoAigAtAJYAlgAuAJ0AnQAvALEAtQAwALcAuQA1ALsAuwA4AL0AvgA5AMAAwQA7AMMAxQA9AMcAzgBAANIA0gBIANQA3gBJAOAA7wBUAPEA8QBkAPYA+ABlAPsA/ABoAP4BAABqAQMBBQBtAQoBCgBwAQ0BDQBxARgBGgByASIBIgB1AS4BMAB2ATMBNQB5ATcBNwB8ATkBOQB9ATsBOwB+AUMBRAB/AVQBVACBAVYBVgCCAVgBWACDAVwBXgCEAYQBhQCHAYcBiQCJAegB6ACMAeoB6wCNAe0B7QCPAfAB8ACQAfsB/QCRAkACQACUAkMCQwCVAlUCVQCWAlcCWACXAosCjACZAo4CjgCbApACpQCcAqoCsQCyArMCtgC6ArsCwAC+AsUCzQDEAs8CzwDNAtEC0QDOAtMC0wDPAtUC1QDQAtcC4ADRAukC6wDbAu0C7QDeAu8C7wDfAvEC8QDgAvMC8wDhAvgC+ADiAvoC+gDjAvwC/ADkAv4C/gDlAwADAADmAwIDDgDnAxADEAD0AxIDEgD1AxQDFAD2Ax8DHwD3AyEDIQD4AyMDIwD5AzEDMQD6AzMDNgD7AzgDOAD/AzoDOgEAA0ADSQEBA1QDWAELA14DYAEQA2UDZQETA3cDegEUA34DgAEYA4kDiQEbA5cDnAEcA58DrgEiA7EDsQEyA7UDtQEzA7cDtwE0A7sDuwE1A74DvwE2A8EDwgE4A8QDygE6A8wDzgFBA9AD1QFEA9cD2AFKA9oD3QFMA+MD5AFQA+YD5gFSA+gD6AFTA+oD7QFUA/AD9QFYA/cD9wFeA/sD/AFfBAEEAQFhBAMEDAFiBA8EEAFsBBIEFQFuBBwEHQFyBCEEIQF0BCMEKQF1BC8EVwF8BFkEWQGlBFsEaAGmBHAEcAG0BIEEhgG1BIgEiAG7BIwEjQG8BJAEkAG+BJIEkwG/BJUElQHBBJcElwHCBKgErAHDBK4ErgHIBLAEsQHJBLMEswHLBLcEuQHMBLsEuwHPBL0EvwHQBMEEwQHTBMMEwwHUBMUEywHVBM0EzQHcBNAE0AHdBNME1wHeBNkE2QHjBNsE3AHkBOAE4AHmBOME4wHnBO4E7gHoBPsE+wHpBQIFAgHqBQYFBgHrAAIAmgAGAAYAAAALAAsAAQAQABAAAgASABIAAwAlACkABAAsADQACQA4AD4AEgBFAEcAGQBJAEkAHABMAEwAHQBRAFQAHgBWAFYAIgBaAFoAIwBcAF4AJACKAIoAJwCWAJYAKACxALQAKQC9AL0ALQDBAMEALgDHAMcALwDUANUAMADXANcAMgDaANoAMwDcAN4ANADgAOYANwDsAOwAPgDuAO4APwD3APcAQAD8APwAQQD+AP8AQgEEAQUARAEKAQoARgENAQ0ARwEYARoASAEuATAASwEzATUATgE3ATcAUQE5ATkAUgE7ATsAUwFDAUQAVAFUAVQAVgFWAVYAVwFYAVgAWAFcAV4AWQGEAYoAXAGOAY8AYwHoAegAZQHtAe0AZgHwAfEAZwH7Af0AaQIPAg8AbAIeAiAAbQJAAkAAcAJDAkMAcQJVAlUAcgJXAlgAcwKLAowAdQKOAo4AdwKQArYAeAK7AsAAnwLFAtUApQLXAuAAtgLpAusAwALtAu0AwwLvAu8AxALxAvEAxQLzAvMAxgL2AvYAxwL4AvgAyAL6AvoAyQL8AvwAygL+Av4AywMAAwAAzAMCAw4AzQMQAxAA2gMSAxIA2wMUAxQA3AMfAx8A3QMhAyEA3gMjAyMA3wMlAyUA4AMnAycA4QMp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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAgAAAAAAAAACAAAAAAAjAAAAAAAAAAAAAgAAAAIAAAAUAA0ACwAaABYAEAAMABcAAAAAAAAAAAAAAAAABgAAAAEAAQABAAAAAQAAAAAAAAAAAAAAAwADAAcAAwABAAAAEQAAAAgACQAAABMACQAdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgABAAAAAAAAAAIAAQAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAIABAAAAAAAAAAAAAAAAAABAAAACQAAAAAAAAADAAAAAAAAAAAAAAAAAAEAAQAAAAgAAAAAAAAAAAAAAAAADQACAB4AAAANAAAAAAAAABAAAAAAAB4AHwAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAATAAAAAwADACEAAwADAAMAAAABAAMAIgADAAMAAAAAAAMAAAADAAAAAAABACEAAwAAAAAAAgAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAgAHABoACQACAAAAAgABAAIAAAACAAEAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAQABMAAAADAAAAAAANAAAAAAADAAAAAwAAAAAAAgABABAAEwANAAAAIAAiAAAAAAAAAAAAAAAAAAAAHgAhAAAAAwAAAAMAAAADAAAAAAAAAAAAAwAQABMAAAABAAEAAAAAAAAAAAAeAAAAAAAAAAIAAQAAAAAAAAAeACEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbABsAAAAPAA8AGAAPAA8ADwAYAAAAAAAAABgAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgAZACQAAAAOABUAHAAAAAUAAAAFAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAACgAFAAoAAAAAAAAAAAAAAAAAFQAFAAAAAAAVAAAAAAAAABkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZAAAAAAAVAAUAEgAZABUAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgACAAAAAgACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQAAgAAAAAAAAAAAAAAAAAAAAAAAAACAAIAAgACAAIACwALAAsACwAMAAYABgAGAAYABgAGAAYAAQABAAEAAQABAAAAAAAAAAAAAwAHAAcABwAHAAcACAAIAAgACAAJAAkABAAGAAQABgAEAAYAAgABAAIAAQACAAEAAgABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAIAAQACAAEAAgABAAIAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAADAAMAAgAHAAIABwACAAcAAAAAAAAAAAAAAAAAFAARABQAEQAUABEAFAARABQAEQANAAAADQAAAA0AAAALAAgACwAIAAsACAALAAgACwAIAAsACAAWAAAADAAJAAwAFwAdABcAHQAXAB0AAAAAAAIAAAAAAAAAAAAKAAoACgAKAAoACgAKAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAA4ADgAOAA4AEgAKAAoACgAFAAUABQAFAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAHAAcABwAHAAAABUAAAAOAA4ADgAOAA4ADgAkABIAEgAAAAAAAAAE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\"\r\n};", "/*!\n * Select2 4.1.0-rc.0\n * https://select2.github.io\n *\n * Released under the MIT license\n * https://github.com/select2/select2/blob/master/LICENSE.md\n */\n;(function (factory) {\n  if (typeof define === 'function' && define.amd) {\n    // AMD. Register as an anonymous module.\n    define(['jquery'], factory);\n  } else if (typeof module === 'object' && module.exports) {\n    // Node/CommonJS\n    module.exports = function (root, jQuery) {\n      if (jQuery === undefined) {\n        // require('jQuery') returns a factory that requires window to\n        // build a jQuery instance, we normalize how we use modules\n        // that require this pattern but the window provided is a noop\n        // if it's defined (how jquery works)\n        if (typeof window !== 'undefined') {\n          jQuery = require('jquery');\n        }\n        else {\n          jQuery = require('jquery')(root);\n        }\n      }\n      factory(jQuery);\n      return jQuery;\n    };\n  } else {\n    // Browser globals\n    factory(jQuery);\n  }\n} (function (jQuery) {\n  // This is needed so we can catch the AMD loader configuration and use it\n  // The inner file should be wrapped (by `banner.start.js`) in a function that\n  // returns the AMD loader references.\n  var S2 =(function () {\n  // Restore the Select2 AMD loader so it can be used\n  // Needed mostly in the language files, where the loader is not inserted\n  if (jQuery && jQuery.fn && jQuery.fn.select2 && jQuery.fn.select2.amd) {\n    var S2 = jQuery.fn.select2.amd;\n  }\nvar S2;(function () { if (!S2 || !S2.requirejs) {\nif (!S2) { S2 = {}; } else { require = S2; }\n/**\n * @license almond 0.3.3 Copyright jQuery Foundation and other contributors.\n * Released under MIT license, http://github.com/requirejs/almond/LICENSE\n */\n//Going sloppy to avoid 'use strict' string cost, but strict practices should\n//be followed.\n/*global setTimeout: false */\n\nvar requirejs, require, define;\n(function (undef) {\n    var main, req, makeMap, handlers,\n        defined = {},\n        waiting = {},\n        config = {},\n        defining = {},\n        hasOwn = Object.prototype.hasOwnProperty,\n        aps = [].slice,\n        jsSuffixRegExp = /\\.js$/;\n\n    function hasProp(obj, prop) {\n        return hasOwn.call(obj, prop);\n    }\n\n    /**\n     * Given a relative module name, like ./something, normalize it to\n     * a real name that can be mapped to a path.\n     * @param {String} name the relative name\n     * @param {String} baseName a real name that the name arg is relative\n     * to.\n     * @returns {String} normalized name\n     */\n    function normalize(name, baseName) {\n        var nameParts, nameSegment, mapValue, foundMap, lastIndex,\n            foundI, foundStarMap, starI, i, j, part, normalizedBaseParts,\n            baseParts = baseName && baseName.split(\"/\"),\n            map = config.map,\n            starMap = (map && map['*']) || {};\n\n        //Adjust any relative paths.\n        if (name) {\n            name = name.split('/');\n            lastIndex = name.length - 1;\n\n            // If wanting node ID compatibility, strip .js from end\n            // of IDs. Have to do this here, and not in nameToUrl\n            // because node allows either .js or non .js to map\n            // to same file.\n            if (config.nodeIdCompat && jsSuffixRegExp.test(name[lastIndex])) {\n                name[lastIndex] = name[lastIndex].replace(jsSuffixRegExp, '');\n            }\n\n            // Starts with a '.' so need the baseName\n            if (name[0].charAt(0) === '.' && baseParts) {\n                //Convert baseName to array, and lop off the last part,\n                //so that . matches that 'directory' and not name of the baseName's\n                //module. For instance, baseName of 'one/two/three', maps to\n                //'one/two/three.js', but we want the directory, 'one/two' for\n                //this normalization.\n                normalizedBaseParts = baseParts.slice(0, baseParts.length - 1);\n                name = normalizedBaseParts.concat(name);\n            }\n\n            //start trimDots\n            for (i = 0; i < name.length; i++) {\n                part = name[i];\n                if (part === '.') {\n                    name.splice(i, 1);\n                    i -= 1;\n                } else if (part === '..') {\n                    // If at the start, or previous value is still ..,\n                    // keep them so that when converted to a path it may\n                    // still work when converted to a path, even though\n                    // as an ID it is less than ideal. In larger point\n                    // releases, may be better to just kick out an error.\n                    if (i === 0 || (i === 1 && name[2] === '..') || name[i - 1] === '..') {\n                        continue;\n                    } else if (i > 0) {\n                        name.splice(i - 1, 2);\n                        i -= 2;\n                    }\n                }\n            }\n            //end trimDots\n\n            name = name.join('/');\n        }\n\n        //Apply map config if available.\n        if ((baseParts || starMap) && map) {\n            nameParts = name.split('/');\n\n            for (i = nameParts.length; i > 0; i -= 1) {\n                nameSegment = nameParts.slice(0, i).join(\"/\");\n\n                if (baseParts) {\n                    //Find the longest baseName segment match in the config.\n                    //So, do joins on the biggest to smallest lengths of baseParts.\n                    for (j = baseParts.length; j > 0; j -= 1) {\n                        mapValue = map[baseParts.slice(0, j).join('/')];\n\n                        //baseName segment has  config, find if it has one for\n                        //this name.\n                        if (mapValue) {\n                            mapValue = mapValue[nameSegment];\n                            if (mapValue) {\n                                //Match, update name to the new value.\n                                foundMap = mapValue;\n                                foundI = i;\n                                break;\n                            }\n                        }\n                    }\n                }\n\n                if (foundMap) {\n                    break;\n                }\n\n                //Check for a star map match, but just hold on to it,\n                //if there is a shorter segment match later in a matching\n                //config, then favor over this star map.\n                if (!foundStarMap && starMap && starMap[nameSegment]) {\n                    foundStarMap = starMap[nameSegment];\n                    starI = i;\n                }\n            }\n\n            if (!foundMap && foundStarMap) {\n                foundMap = foundStarMap;\n                foundI = starI;\n            }\n\n            if (foundMap) {\n                nameParts.splice(0, foundI, foundMap);\n                name = nameParts.join('/');\n            }\n        }\n\n        return name;\n    }\n\n    function makeRequire(relName, forceSync) {\n        return function () {\n            //A version of a require function that passes a moduleName\n            //value for items that may need to\n            //look up paths relative to the moduleName\n            var args = aps.call(arguments, 0);\n\n            //If first arg is not require('string'), and there is only\n            //one arg, it is the array form without a callback. Insert\n            //a null so that the following concat is correct.\n            if (typeof args[0] !== 'string' && args.length === 1) {\n                args.push(null);\n            }\n            return req.apply(undef, args.concat([relName, forceSync]));\n        };\n    }\n\n    function makeNormalize(relName) {\n        return function (name) {\n            return normalize(name, relName);\n        };\n    }\n\n    function makeLoad(depName) {\n        return function (value) {\n            defined[depName] = value;\n        };\n    }\n\n    function callDep(name) {\n        if (hasProp(waiting, name)) {\n            var args = waiting[name];\n            delete waiting[name];\n            defining[name] = true;\n            main.apply(undef, args);\n        }\n\n        if (!hasProp(defined, name) && !hasProp(defining, name)) {\n            throw new Error('No ' + name);\n        }\n        return defined[name];\n    }\n\n    //Turns a plugin!resource to [plugin, resource]\n    //with the plugin being undefined if the name\n    //did not have a plugin prefix.\n    function splitPrefix(name) {\n        var prefix,\n            index = name ? name.indexOf('!') : -1;\n        if (index > -1) {\n            prefix = name.substring(0, index);\n            name = name.substring(index + 1, name.length);\n        }\n        return [prefix, name];\n    }\n\n    //Creates a parts array for a relName where first part is plugin ID,\n    //second part is resource ID. Assumes relName has already been normalized.\n    function makeRelParts(relName) {\n        return relName ? splitPrefix(relName) : [];\n    }\n\n    /**\n     * Makes a name map, normalizing the name, and using a plugin\n     * for normalization if necessary. Grabs a ref to plugin\n     * too, as an optimization.\n     */\n    makeMap = function (name, relParts) {\n        var plugin,\n            parts = splitPrefix(name),\n            prefix = parts[0],\n            relResourceName = relParts[1];\n\n        name = parts[1];\n\n        if (prefix) {\n            prefix = normalize(prefix, relResourceName);\n            plugin = callDep(prefix);\n        }\n\n        //Normalize according\n        if (prefix) {\n            if (plugin && plugin.normalize) {\n                name = plugin.normalize(name, makeNormalize(relResourceName));\n            } else {\n                name = normalize(name, relResourceName);\n            }\n        } else {\n            name = normalize(name, relResourceName);\n            parts = splitPrefix(name);\n            prefix = parts[0];\n            name = parts[1];\n            if (prefix) {\n                plugin = callDep(prefix);\n            }\n        }\n\n        //Using ridiculous property names for space reasons\n        return {\n            f: prefix ? prefix + '!' + name : name, //fullName\n            n: name,\n            pr: prefix,\n            p: plugin\n        };\n    };\n\n    function makeConfig(name) {\n        return function () {\n            return (config && config.config && config.config[name]) || {};\n        };\n    }\n\n    handlers = {\n        require: function (name) {\n            return makeRequire(name);\n        },\n        exports: function (name) {\n            var e = defined[name];\n            if (typeof e !== 'undefined') {\n                return e;\n            } else {\n                return (defined[name] = {});\n            }\n        },\n        module: function (name) {\n            return {\n                id: name,\n                uri: '',\n                exports: defined[name],\n                config: makeConfig(name)\n            };\n        }\n    };\n\n    main = function (name, deps, callback, relName) {\n        var cjsModule, depName, ret, map, i, relParts,\n            args = [],\n            callbackType = typeof callback,\n            usingExports;\n\n        //Use name if no relName\n        relName = relName || name;\n        relParts = makeRelParts(relName);\n\n        //Call the callback to define the module, if necessary.\n        if (callbackType === 'undefined' || callbackType === 'function') {\n            //Pull out the defined dependencies and pass the ordered\n            //values to the callback.\n            //Default to [require, exports, module] if no deps\n            deps = !deps.length && callback.length ? ['require', 'exports', 'module'] : deps;\n            for (i = 0; i < deps.length; i += 1) {\n                map = makeMap(deps[i], relParts);\n                depName = map.f;\n\n                //Fast path CommonJS standard dependencies.\n                if (depName === \"require\") {\n                    args[i] = handlers.require(name);\n                } else if (depName === \"exports\") {\n                    //CommonJS module spec 1.1\n                    args[i] = handlers.exports(name);\n                    usingExports = true;\n                } else if (depName === \"module\") {\n                    //CommonJS module spec 1.1\n                    cjsModule = args[i] = handlers.module(name);\n                } else if (hasProp(defined, depName) ||\n                           hasProp(waiting, depName) ||\n                           hasProp(defining, depName)) {\n                    args[i] = callDep(depName);\n                } else if (map.p) {\n                    map.p.load(map.n, makeRequire(relName, true), makeLoad(depName), {});\n                    args[i] = defined[depName];\n                } else {\n                    throw new Error(name + ' missing ' + depName);\n                }\n            }\n\n            ret = callback ? callback.apply(defined[name], args) : undefined;\n\n            if (name) {\n                //If setting exports via \"module\" is in play,\n                //favor that over return value and exports. After that,\n                //favor a non-undefined return value over exports use.\n                if (cjsModule && cjsModule.exports !== undef &&\n                        cjsModule.exports !== defined[name]) {\n                    defined[name] = cjsModule.exports;\n                } else if (ret !== undef || !usingExports) {\n                    //Use the return value from the function.\n                    defined[name] = ret;\n                }\n            }\n        } else if (name) {\n            //May just be an object definition for the module. Only\n            //worry about defining if have a module name.\n            defined[name] = callback;\n        }\n    };\n\n    requirejs = require = req = function (deps, callback, relName, forceSync, alt) {\n        if (typeof deps === \"string\") {\n            if (handlers[deps]) {\n                //callback in this case is really relName\n                return handlers[deps](callback);\n            }\n            //Just return the module wanted. In this scenario, the\n            //deps arg is the module name, and second arg (if passed)\n            //is just the relName.\n            //Normalize module name, if it contains . or ..\n            return callDep(makeMap(deps, makeRelParts(callback)).f);\n        } else if (!deps.splice) {\n            //deps is a config object, not an array.\n            config = deps;\n            if (config.deps) {\n                req(config.deps, config.callback);\n            }\n            if (!callback) {\n                return;\n            }\n\n            if (callback.splice) {\n                //callback is an array, which means it is a dependency list.\n                //Adjust args if there are dependencies\n                deps = callback;\n                callback = relName;\n                relName = null;\n            } else {\n                deps = undef;\n            }\n        }\n\n        //Support require(['a'])\n        callback = callback || function () {};\n\n        //If relName is a function, it is an errback handler,\n        //so remove it.\n        if (typeof relName === 'function') {\n            relName = forceSync;\n            forceSync = alt;\n        }\n\n        //Simulate async callback;\n        if (forceSync) {\n            main(undef, deps, callback, relName);\n        } else {\n            //Using a non-zero value because of concern for what old browsers\n            //do, and latest browsers \"upgrade\" to 4 if lower value is used:\n            //http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#dom-windowtimers-settimeout:\n            //If want a value immediately, use require('id') instead -- something\n            //that works in almond on the global level, but not guaranteed and\n            //unlikely to work in other AMD implementations.\n            setTimeout(function () {\n                main(undef, deps, callback, relName);\n            }, 4);\n        }\n\n        return req;\n    };\n\n    /**\n     * Just drops the config on the floor, but returns req in case\n     * the config return value is used.\n     */\n    req.config = function (cfg) {\n        return req(cfg);\n    };\n\n    /**\n     * Expose module registry for debugging and tooling\n     */\n    requirejs._defined = defined;\n\n    define = function (name, deps, callback) {\n        if (typeof name !== 'string') {\n            throw new Error('See almond README: incorrect module build, no module name');\n        }\n\n        //This module may not have dependencies\n        if (!deps.splice) {\n            //deps is not an array, so probably means\n            //an object literal or factory function for\n            //the value. Adjust args.\n            callback = deps;\n            deps = [];\n        }\n\n        if (!hasProp(defined, name) && !hasProp(waiting, name)) {\n            waiting[name] = [name, deps, callback];\n        }\n    };\n\n    define.amd = {\n        jQuery: true\n    };\n}());\n\nS2.requirejs = requirejs;S2.require = require;S2.define = define;\n}\n}());\nS2.define(\"almond\", function(){});\n\n/* global jQuery:false, $:false */\nS2.define('jquery',[],function () {\n  var _$ = jQuery || $;\n\n  if (_$ == null && console && console.error) {\n    console.error(\n      'Select2: An instance of jQuery or a jQuery-compatible library was not ' +\n      'found. Make sure that you are including jQuery before Select2 on your ' +\n      'web page.'\n    );\n  }\n\n  return _$;\n});\n\nS2.define('select2/utils',[\n  'jquery'\n], function ($) {\n  var Utils = {};\n\n  Utils.Extend = function (ChildClass, SuperClass) {\n    var __hasProp = {}.hasOwnProperty;\n\n    function BaseConstructor () {\n      this.constructor = ChildClass;\n    }\n\n    for (var key in SuperClass) {\n      if (__hasProp.call(SuperClass, key)) {\n        ChildClass[key] = SuperClass[key];\n      }\n    }\n\n    BaseConstructor.prototype = SuperClass.prototype;\n    ChildClass.prototype = new BaseConstructor();\n    ChildClass.__super__ = SuperClass.prototype;\n\n    return ChildClass;\n  };\n\n  function getMethods (theClass) {\n    var proto = theClass.prototype;\n\n    var methods = [];\n\n    for (var methodName in proto) {\n      var m = proto[methodName];\n\n      if (typeof m !== 'function') {\n        continue;\n      }\n\n      if (methodName === 'constructor') {\n        continue;\n      }\n\n      methods.push(methodName);\n    }\n\n    return methods;\n  }\n\n  Utils.Decorate = function (SuperClass, DecoratorClass) {\n    var decoratedMethods = getMethods(DecoratorClass);\n    var superMethods = getMethods(SuperClass);\n\n    function DecoratedClass () {\n      var unshift = Array.prototype.unshift;\n\n      var argCount = DecoratorClass.prototype.constructor.length;\n\n      var calledConstructor = SuperClass.prototype.constructor;\n\n      if (argCount > 0) {\n        unshift.call(arguments, SuperClass.prototype.constructor);\n\n        calledConstructor = DecoratorClass.prototype.constructor;\n      }\n\n      calledConstructor.apply(this, arguments);\n    }\n\n    DecoratorClass.displayName = SuperClass.displayName;\n\n    function ctr () {\n      this.constructor = DecoratedClass;\n    }\n\n    DecoratedClass.prototype = new ctr();\n\n    for (var m = 0; m < superMethods.length; m++) {\n      var superMethod = superMethods[m];\n\n      DecoratedClass.prototype[superMethod] =\n        SuperClass.prototype[superMethod];\n    }\n\n    var calledMethod = function (methodName) {\n      // Stub out the original method if it's not decorating an actual method\n      var originalMethod = function () {};\n\n      if (methodName in DecoratedClass.prototype) {\n        originalMethod = DecoratedClass.prototype[methodName];\n      }\n\n      var decoratedMethod = DecoratorClass.prototype[methodName];\n\n      return function () {\n        var unshift = Array.prototype.unshift;\n\n        unshift.call(arguments, originalMethod);\n\n        return decoratedMethod.apply(this, arguments);\n      };\n    };\n\n    for (var d = 0; d < decoratedMethods.length; d++) {\n      var decoratedMethod = decoratedMethods[d];\n\n      DecoratedClass.prototype[decoratedMethod] = calledMethod(decoratedMethod);\n    }\n\n    return DecoratedClass;\n  };\n\n  var Observable = function () {\n    this.listeners = {};\n  };\n\n  Observable.prototype.on = function (event, callback) {\n    this.listeners = this.listeners || {};\n\n    if (event in this.listeners) {\n      this.listeners[event].push(callback);\n    } else {\n      this.listeners[event] = [callback];\n    }\n  };\n\n  Observable.prototype.trigger = function (event) {\n    var slice = Array.prototype.slice;\n    var params = slice.call(arguments, 1);\n\n    this.listeners = this.listeners || {};\n\n    // Params should always come in as an array\n    if (params == null) {\n      params = [];\n    }\n\n    // If there are no arguments to the event, use a temporary object\n    if (params.length === 0) {\n      params.push({});\n    }\n\n    // Set the `_type` of the first object to the event\n    params[0]._type = event;\n\n    if (event in this.listeners) {\n      this.invoke(this.listeners[event], slice.call(arguments, 1));\n    }\n\n    if ('*' in this.listeners) {\n      this.invoke(this.listeners['*'], arguments);\n    }\n  };\n\n  Observable.prototype.invoke = function (listeners, params) {\n    for (var i = 0, len = listeners.length; i < len; i++) {\n      listeners[i].apply(this, params);\n    }\n  };\n\n  Utils.Observable = Observable;\n\n  Utils.generateChars = function (length) {\n    var chars = '';\n\n    for (var i = 0; i < length; i++) {\n      var randomChar = Math.floor(Math.random() * 36);\n      chars += randomChar.toString(36);\n    }\n\n    return chars;\n  };\n\n  Utils.bind = function (func, context) {\n    return function () {\n      func.apply(context, arguments);\n    };\n  };\n\n  Utils._convertData = function (data) {\n    for (var originalKey in data) {\n      var keys = originalKey.split('-');\n\n      var dataLevel = data;\n\n      if (keys.length === 1) {\n        continue;\n      }\n\n      for (var k = 0; k < keys.length; k++) {\n        var key = keys[k];\n\n        // Lowercase the first letter\n        // By default, dash-separated becomes camelCase\n        key = key.substring(0, 1).toLowerCase() + key.substring(1);\n\n        if (!(key in dataLevel)) {\n          dataLevel[key] = {};\n        }\n\n        if (k == keys.length - 1) {\n          dataLevel[key] = data[originalKey];\n        }\n\n        dataLevel = dataLevel[key];\n      }\n\n      delete data[originalKey];\n    }\n\n    return data;\n  };\n\n  Utils.hasScroll = function (index, el) {\n    // Adapted from the function created by @ShadowScripter\n    // and adapted by @BillBarry on the Stack Exchange Code Review website.\n    // The original code can be found at\n    // http://codereview.stackexchange.com/q/13338\n    // and was designed to be used with the Sizzle selector engine.\n\n    var $el = $(el);\n    var overflowX = el.style.overflowX;\n    var overflowY = el.style.overflowY;\n\n    //Check both x and y declarations\n    if (overflowX === overflowY &&\n        (overflowY === 'hidden' || overflowY === 'visible')) {\n      return false;\n    }\n\n    if (overflowX === 'scroll' || overflowY === 'scroll') {\n      return true;\n    }\n\n    return ($el.innerHeight() < el.scrollHeight ||\n      $el.innerWidth() < el.scrollWidth);\n  };\n\n  Utils.escapeMarkup = function (markup) {\n    var replaceMap = {\n      '\\\\': '&#92;',\n      '&': '&amp;',\n      '<': '&lt;',\n      '>': '&gt;',\n      '\"': '&quot;',\n      '\\'': '&#39;',\n      '/': '&#47;'\n    };\n\n    // Do not try to escape the markup if it's not a string\n    if (typeof markup !== 'string') {\n      return markup;\n    }\n\n    return String(markup).replace(/[&<>\"'\\/\\\\]/g, function (match) {\n      return replaceMap[match];\n    });\n  };\n\n  // Cache objects in Utils.__cache instead of $.data (see #4346)\n  Utils.__cache = {};\n\n  var id = 0;\n  Utils.GetUniqueElementId = function (element) {\n    // Get a unique element Id. If element has no id,\n    // creates a new unique number, stores it in the id\n    // attribute and returns the new id with a prefix.\n    // If an id already exists, it simply returns it with a prefix.\n\n    var select2Id = element.getAttribute('data-select2-id');\n\n    if (select2Id != null) {\n      return select2Id;\n    }\n\n    // If element has id, use it.\n    if (element.id) {\n      select2Id = 'select2-data-' + element.id;\n    } else {\n      select2Id = 'select2-data-' + (++id).toString() +\n        '-' + Utils.generateChars(4);\n    }\n\n    element.setAttribute('data-select2-id', select2Id);\n\n    return select2Id;\n  };\n\n  Utils.StoreData = function (element, name, value) {\n    // Stores an item in the cache for a specified element.\n    // name is the cache key.\n    var id = Utils.GetUniqueElementId(element);\n    if (!Utils.__cache[id]) {\n      Utils.__cache[id] = {};\n    }\n\n    Utils.__cache[id][name] = value;\n  };\n\n  Utils.GetData = function (element, name) {\n    // Retrieves a value from the cache by its key (name)\n    // name is optional. If no name specified, return\n    // all cache items for the specified element.\n    // and for a specified element.\n    var id = Utils.GetUniqueElementId(element);\n    if (name) {\n      if (Utils.__cache[id]) {\n        if (Utils.__cache[id][name] != null) {\n          return Utils.__cache[id][name];\n        }\n        return $(element).data(name); // Fallback to HTML5 data attribs.\n      }\n      return $(element).data(name); // Fallback to HTML5 data attribs.\n    } else {\n      return Utils.__cache[id];\n    }\n  };\n\n  Utils.RemoveData = function (element) {\n    // Removes all cached items for a specified element.\n    var id = Utils.GetUniqueElementId(element);\n    if (Utils.__cache[id] != null) {\n      delete Utils.__cache[id];\n    }\n\n    element.removeAttribute('data-select2-id');\n  };\n\n  Utils.copyNonInternalCssClasses = function (dest, src) {\n    var classes;\n\n    var destinationClasses = dest.getAttribute('class').trim().split(/\\s+/);\n\n    destinationClasses = destinationClasses.filter(function (clazz) {\n      // Save all Select2 classes\n      return clazz.indexOf('select2-') === 0;\n    });\n\n    var sourceClasses = src.getAttribute('class').trim().split(/\\s+/);\n\n    sourceClasses = sourceClasses.filter(function (clazz) {\n      // Only copy non-Select2 classes\n      return clazz.indexOf('select2-') !== 0;\n    });\n\n    var replacements = destinationClasses.concat(sourceClasses);\n\n    dest.setAttribute('class', replacements.join(' '));\n  };\n\n  return Utils;\n});\n\nS2.define('select2/results',[\n  'jquery',\n  './utils'\n], function ($, Utils) {\n  function Results ($element, options, dataAdapter) {\n    this.$element = $element;\n    this.data = dataAdapter;\n    this.options = options;\n\n    Results.__super__.constructor.call(this);\n  }\n\n  Utils.Extend(Results, Utils.Observable);\n\n  Results.prototype.render = function () {\n    var $results = $(\n      '<ul class=\"select2-results__options\" role=\"listbox\"></ul>'\n    );\n\n    if (this.options.get('multiple')) {\n      $results.attr('aria-multiselectable', 'true');\n    }\n\n    this.$results = $results;\n\n    return $results;\n  };\n\n  Results.prototype.clear = function () {\n    this.$results.empty();\n  };\n\n  Results.prototype.displayMessage = function (params) {\n    var escapeMarkup = this.options.get('escapeMarkup');\n\n    this.clear();\n    this.hideLoading();\n\n    var $message = $(\n      '<li role=\"alert\" aria-live=\"assertive\"' +\n      ' class=\"select2-results__option\"></li>'\n    );\n\n    var message = this.options.get('translations').get(params.message);\n\n    $message.append(\n      escapeMarkup(\n        message(params.args)\n      )\n    );\n\n    $message[0].className += ' select2-results__message';\n\n    this.$results.append($message);\n  };\n\n  Results.prototype.hideMessages = function () {\n    this.$results.find('.select2-results__message').remove();\n  };\n\n  Results.prototype.append = function (data) {\n    this.hideLoading();\n\n    var $options = [];\n\n    if (data.results == null || data.results.length === 0) {\n      if (this.$results.children().length === 0) {\n        this.trigger('results:message', {\n          message: 'noResults'\n        });\n      }\n\n      return;\n    }\n\n    data.results = this.sort(data.results);\n\n    for (var d = 0; d < data.results.length; d++) {\n      var item = data.results[d];\n\n      var $option = this.option(item);\n\n      $options.push($option);\n    }\n\n    this.$results.append($options);\n  };\n\n  Results.prototype.position = function ($results, $dropdown) {\n    var $resultsContainer = $dropdown.find('.select2-results');\n    $resultsContainer.append($results);\n  };\n\n  Results.prototype.sort = function (data) {\n    var sorter = this.options.get('sorter');\n\n    return sorter(data);\n  };\n\n  Results.prototype.highlightFirstItem = function () {\n    var $options = this.$results\n      .find('.select2-results__option--selectable');\n\n    var $selected = $options.filter('.select2-results__option--selected');\n\n    // Check if there are any selected options\n    if ($selected.length > 0) {\n      // If there are selected options, highlight the first\n      $selected.first().trigger('mouseenter');\n    } else {\n      // If there are no selected options, highlight the first option\n      // in the dropdown\n      $options.first().trigger('mouseenter');\n    }\n\n    this.ensureHighlightVisible();\n  };\n\n  Results.prototype.setClasses = function () {\n    var self = this;\n\n    this.data.current(function (selected) {\n      var selectedIds = selected.map(function (s) {\n        return s.id.toString();\n      });\n\n      var $options = self.$results\n        .find('.select2-results__option--selectable');\n\n      $options.each(function () {\n        var $option = $(this);\n\n        var item = Utils.GetData(this, 'data');\n\n        // id needs to be converted to a string when comparing\n        var id = '' + item.id;\n\n        if ((item.element != null && item.element.selected) ||\n            (item.element == null && selectedIds.indexOf(id) > -1)) {\n          this.classList.add('select2-results__option--selected');\n          $option.attr('aria-selected', 'true');\n        } else {\n          this.classList.remove('select2-results__option--selected');\n          $option.attr('aria-selected', 'false');\n        }\n      });\n\n    });\n  };\n\n  Results.prototype.showLoading = function (params) {\n    this.hideLoading();\n\n    var loadingMore = this.options.get('translations').get('searching');\n\n    var loading = {\n      disabled: true,\n      loading: true,\n      text: loadingMore(params)\n    };\n    var $loading = this.option(loading);\n    $loading.className += ' loading-results';\n\n    this.$results.prepend($loading);\n  };\n\n  Results.prototype.hideLoading = function () {\n    this.$results.find('.loading-results').remove();\n  };\n\n  Results.prototype.option = function (data) {\n    var option = document.createElement('li');\n    option.classList.add('select2-results__option');\n    option.classList.add('select2-results__option--selectable');\n\n    var attrs = {\n      'role': 'option'\n    };\n\n    var matches = window.Element.prototype.matches ||\n      window.Element.prototype.msMatchesSelector ||\n      window.Element.prototype.webkitMatchesSelector;\n\n    if ((data.element != null && matches.call(data.element, ':disabled')) ||\n        (data.element == null && data.disabled)) {\n      attrs['aria-disabled'] = 'true';\n\n      option.classList.remove('select2-results__option--selectable');\n      option.classList.add('select2-results__option--disabled');\n    }\n\n    if (data.id == null) {\n      option.classList.remove('select2-results__option--selectable');\n    }\n\n    if (data._resultId != null) {\n      option.id = data._resultId;\n    }\n\n    if (data.title) {\n      option.title = data.title;\n    }\n\n    if (data.children) {\n      attrs.role = 'group';\n      attrs['aria-label'] = data.text;\n\n      option.classList.remove('select2-results__option--selectable');\n      option.classList.add('select2-results__option--group');\n    }\n\n    for (var attr in attrs) {\n      var val = attrs[attr];\n\n      option.setAttribute(attr, val);\n    }\n\n    if (data.children) {\n      var $option = $(option);\n\n      var label = document.createElement('strong');\n      label.className = 'select2-results__group';\n\n      this.template(data, label);\n\n      var $children = [];\n\n      for (var c = 0; c < data.children.length; c++) {\n        var child = data.children[c];\n\n        var $child = this.option(child);\n\n        $children.push($child);\n      }\n\n      var $childrenContainer = $('<ul></ul>', {\n        'class': 'select2-results__options select2-results__options--nested',\n        'role': 'none'\n      });\n\n      $childrenContainer.append($children);\n\n      $option.append(label);\n      $option.append($childrenContainer);\n    } else {\n      this.template(data, option);\n    }\n\n    Utils.StoreData(option, 'data', data);\n\n    return option;\n  };\n\n  Results.prototype.bind = function (container, $container) {\n    var self = this;\n\n    var id = container.id + '-results';\n\n    this.$results.attr('id', id);\n\n    container.on('results:all', function (params) {\n      self.clear();\n      self.append(params.data);\n\n      if (container.isOpen()) {\n        self.setClasses();\n        self.highlightFirstItem();\n      }\n    });\n\n    container.on('results:append', function (params) {\n      self.append(params.data);\n\n      if (container.isOpen()) {\n        self.setClasses();\n      }\n    });\n\n    container.on('query', function (params) {\n      self.hideMessages();\n      self.showLoading(params);\n    });\n\n    container.on('select', function () {\n      if (!container.isOpen()) {\n        return;\n      }\n\n      self.setClasses();\n\n      if (self.options.get('scrollAfterSelect')) {\n        self.highlightFirstItem();\n      }\n    });\n\n    container.on('unselect', function () {\n      if (!container.isOpen()) {\n        return;\n      }\n\n      self.setClasses();\n\n      if (self.options.get('scrollAfterSelect')) {\n        self.highlightFirstItem();\n      }\n    });\n\n    container.on('open', function () {\n      // When the dropdown is open, aria-expended=\"true\"\n      self.$results.attr('aria-expanded', 'true');\n      self.$results.attr('aria-hidden', 'false');\n\n      self.setClasses();\n      self.ensureHighlightVisible();\n    });\n\n    container.on('close', function () {\n      // When the dropdown is closed, aria-expended=\"false\"\n      self.$results.attr('aria-expanded', 'false');\n      self.$results.attr('aria-hidden', 'true');\n      self.$results.removeAttr('aria-activedescendant');\n    });\n\n    container.on('results:toggle', function () {\n      var $highlighted = self.getHighlightedResults();\n\n      if ($highlighted.length === 0) {\n        return;\n      }\n\n      $highlighted.trigger('mouseup');\n    });\n\n    container.on('results:select', function () {\n      var $highlighted = self.getHighlightedResults();\n\n      if ($highlighted.length === 0) {\n        return;\n      }\n\n      var data = Utils.GetData($highlighted[0], 'data');\n\n      if ($highlighted.hasClass('select2-results__option--selected')) {\n        self.trigger('close', {});\n      } else {\n        self.trigger('select', {\n          data: data\n        });\n      }\n    });\n\n    container.on('results:previous', function () {\n      var $highlighted = self.getHighlightedResults();\n\n      var $options = self.$results.find('.select2-results__option--selectable');\n\n      var currentIndex = $options.index($highlighted);\n\n      // If we are already at the top, don't move further\n      // If no options, currentIndex will be -1\n      if (currentIndex <= 0) {\n        return;\n      }\n\n      var nextIndex = currentIndex - 1;\n\n      // If none are highlighted, highlight the first\n      if ($highlighted.length === 0) {\n        nextIndex = 0;\n      }\n\n      var $next = $options.eq(nextIndex);\n\n      $next.trigger('mouseenter');\n\n      var currentOffset = self.$results.offset().top;\n      var nextTop = $next.offset().top;\n      var nextOffset = self.$results.scrollTop() + (nextTop - currentOffset);\n\n      if (nextIndex === 0) {\n        self.$results.scrollTop(0);\n      } else if (nextTop - currentOffset < 0) {\n        self.$results.scrollTop(nextOffset);\n      }\n    });\n\n    container.on('results:next', function () {\n      var $highlighted = self.getHighlightedResults();\n\n      var $options = self.$results.find('.select2-results__option--selectable');\n\n      var currentIndex = $options.index($highlighted);\n\n      var nextIndex = currentIndex + 1;\n\n      // If we are at the last option, stay there\n      if (nextIndex >= $options.length) {\n        return;\n      }\n\n      var $next = $options.eq(nextIndex);\n\n      $next.trigger('mouseenter');\n\n      var currentOffset = self.$results.offset().top +\n        self.$results.outerHeight(false);\n      var nextBottom = $next.offset().top + $next.outerHeight(false);\n      var nextOffset = self.$results.scrollTop() + nextBottom - currentOffset;\n\n      if (nextIndex === 0) {\n        self.$results.scrollTop(0);\n      } else if (nextBottom > currentOffset) {\n        self.$results.scrollTop(nextOffset);\n      }\n    });\n\n    container.on('results:focus', function (params) {\n      params.element[0].classList.add('select2-results__option--highlighted');\n      params.element[0].setAttribute('aria-selected', 'true');\n    });\n\n    container.on('results:message', function (params) {\n      self.displayMessage(params);\n    });\n\n    if ($.fn.mousewheel) {\n      this.$results.on('mousewheel', function (e) {\n        var top = self.$results.scrollTop();\n\n        var bottom = self.$results.get(0).scrollHeight - top + e.deltaY;\n\n        var isAtTop = e.deltaY > 0 && top - e.deltaY <= 0;\n        var isAtBottom = e.deltaY < 0 && bottom <= self.$results.height();\n\n        if (isAtTop) {\n          self.$results.scrollTop(0);\n\n          e.preventDefault();\n          e.stopPropagation();\n        } else if (isAtBottom) {\n          self.$results.scrollTop(\n            self.$results.get(0).scrollHeight - self.$results.height()\n          );\n\n          e.preventDefault();\n          e.stopPropagation();\n        }\n      });\n    }\n\n    this.$results.on('mouseup', '.select2-results__option--selectable',\n      function (evt) {\n      var $this = $(this);\n\n      var data = Utils.GetData(this, 'data');\n\n      if ($this.hasClass('select2-results__option--selected')) {\n        if (self.options.get('multiple')) {\n          self.trigger('unselect', {\n            originalEvent: evt,\n            data: data\n          });\n        } else {\n          self.trigger('close', {});\n        }\n\n        return;\n      }\n\n      self.trigger('select', {\n        originalEvent: evt,\n        data: data\n      });\n    });\n\n    this.$results.on('mouseenter', '.select2-results__option--selectable',\n      function (evt) {\n      var data = Utils.GetData(this, 'data');\n\n      self.getHighlightedResults()\n          .removeClass('select2-results__option--highlighted')\n          .attr('aria-selected', 'false');\n\n      self.trigger('results:focus', {\n        data: data,\n        element: $(this)\n      });\n    });\n  };\n\n  Results.prototype.getHighlightedResults = function () {\n    var $highlighted = this.$results\n    .find('.select2-results__option--highlighted');\n\n    return $highlighted;\n  };\n\n  Results.prototype.destroy = function () {\n    this.$results.remove();\n  };\n\n  Results.prototype.ensureHighlightVisible = function () {\n    var $highlighted = this.getHighlightedResults();\n\n    if ($highlighted.length === 0) {\n      return;\n    }\n\n    var $options = this.$results.find('.select2-results__option--selectable');\n\n    var currentIndex = $options.index($highlighted);\n\n    var currentOffset = this.$results.offset().top;\n    var nextTop = $highlighted.offset().top;\n    var nextOffset = this.$results.scrollTop() + (nextTop - currentOffset);\n\n    var offsetDelta = nextTop - currentOffset;\n    nextOffset -= $highlighted.outerHeight(false) * 2;\n\n    if (currentIndex <= 2) {\n      this.$results.scrollTop(0);\n    } else if (offsetDelta > this.$results.outerHeight() || offsetDelta < 0) {\n      this.$results.scrollTop(nextOffset);\n    }\n  };\n\n  Results.prototype.template = function (result, container) {\n    var template = this.options.get('templateResult');\n    var escapeMarkup = this.options.get('escapeMarkup');\n\n    var content = template(result, container);\n\n    if (content == null) {\n      container.style.display = 'none';\n    } else if (typeof content === 'string') {\n      container.innerHTML = escapeMarkup(content);\n    } else {\n      $(container).append(content);\n    }\n  };\n\n  return Results;\n});\n\nS2.define('select2/keys',[\n\n], function () {\n  var KEYS = {\n    BACKSPACE: 8,\n    TAB: 9,\n    ENTER: 13,\n    SHIFT: 16,\n    CTRL: 17,\n    ALT: 18,\n    ESC: 27,\n    SPACE: 32,\n    PAGE_UP: 33,\n    PAGE_DOWN: 34,\n    END: 35,\n    HOME: 36,\n    LEFT: 37,\n    UP: 38,\n    RIGHT: 39,\n    DOWN: 40,\n    DELETE: 46\n  };\n\n  return KEYS;\n});\n\nS2.define('select2/selection/base',[\n  'jquery',\n  '../utils',\n  '../keys'\n], function ($, Utils, KEYS) {\n  function BaseSelection ($element, options) {\n    this.$element = $element;\n    this.options = options;\n\n    BaseSelection.__super__.constructor.call(this);\n  }\n\n  Utils.Extend(BaseSelection, Utils.Observable);\n\n  BaseSelection.prototype.render = function () {\n    var $selection = $(\n      '<span class=\"select2-selection\" role=\"combobox\" ' +\n      ' aria-haspopup=\"true\" aria-expanded=\"false\">' +\n      '</span>'\n    );\n\n    this._tabindex = 0;\n\n    if (Utils.GetData(this.$element[0], 'old-tabindex') != null) {\n      this._tabindex = Utils.GetData(this.$element[0], 'old-tabindex');\n    } else if (this.$element.attr('tabindex') != null) {\n      this._tabindex = this.$element.attr('tabindex');\n    }\n\n    $selection.attr('title', this.$element.attr('title'));\n    $selection.attr('tabindex', this._tabindex);\n    $selection.attr('aria-disabled', 'false');\n\n    this.$selection = $selection;\n\n    return $selection;\n  };\n\n  BaseSelection.prototype.bind = function (container, $container) {\n    var self = this;\n\n    var resultsId = container.id + '-results';\n\n    this.container = container;\n\n    this.$selection.on('focus', function (evt) {\n      self.trigger('focus', evt);\n    });\n\n    this.$selection.on('blur', function (evt) {\n      self._handleBlur(evt);\n    });\n\n    this.$selection.on('keydown', function (evt) {\n      self.trigger('keypress', evt);\n\n      if (evt.which === KEYS.SPACE) {\n        evt.preventDefault();\n      }\n    });\n\n    container.on('results:focus', function (params) {\n      self.$selection.attr('aria-activedescendant', params.data._resultId);\n    });\n\n    container.on('selection:update', function (params) {\n      self.update(params.data);\n    });\n\n    container.on('open', function () {\n      // When the dropdown is open, aria-expanded=\"true\"\n      self.$selection.attr('aria-expanded', 'true');\n      self.$selection.attr('aria-owns', resultsId);\n\n      self._attachCloseHandler(container);\n    });\n\n    container.on('close', function () {\n      // When the dropdown is closed, aria-expanded=\"false\"\n      self.$selection.attr('aria-expanded', 'false');\n      self.$selection.removeAttr('aria-activedescendant');\n      self.$selection.removeAttr('aria-owns');\n\n      self.$selection.trigger('focus');\n\n      self._detachCloseHandler(container);\n    });\n\n    container.on('enable', function () {\n      self.$selection.attr('tabindex', self._tabindex);\n      self.$selection.attr('aria-disabled', 'false');\n    });\n\n    container.on('disable', function () {\n      self.$selection.attr('tabindex', '-1');\n      self.$selection.attr('aria-disabled', 'true');\n    });\n  };\n\n  BaseSelection.prototype._handleBlur = function (evt) {\n    var self = this;\n\n    // This needs to be delayed as the active element is the body when the tab\n    // key is pressed, possibly along with others.\n    window.setTimeout(function () {\n      // Don't trigger `blur` if the focus is still in the selection\n      if (\n        (document.activeElement == self.$selection[0]) ||\n        ($.contains(self.$selection[0], document.activeElement))\n      ) {\n        return;\n      }\n\n      self.trigger('blur', evt);\n    }, 1);\n  };\n\n  BaseSelection.prototype._attachCloseHandler = function (container) {\n\n    $(document.body).on('mousedown.select2.' + container.id, function (e) {\n      var $target = $(e.target);\n\n      var $select = $target.closest('.select2');\n\n      var $all = $('.select2.select2-container--open');\n\n      $all.each(function () {\n        if (this == $select[0]) {\n          return;\n        }\n\n        var $element = Utils.GetData(this, 'element');\n\n        $element.select2('close');\n      });\n    });\n  };\n\n  BaseSelection.prototype._detachCloseHandler = function (container) {\n    $(document.body).off('mousedown.select2.' + container.id);\n  };\n\n  BaseSelection.prototype.position = function ($selection, $container) {\n    var $selectionContainer = $container.find('.selection');\n    $selectionContainer.append($selection);\n  };\n\n  BaseSelection.prototype.destroy = function () {\n    this._detachCloseHandler(this.container);\n  };\n\n  BaseSelection.prototype.update = function (data) {\n    throw new Error('The `update` method must be defined in child classes.');\n  };\n\n  /**\n   * Helper method to abstract the \"enabled\" (not \"disabled\") state of this\n   * object.\n   *\n   * @return {true} if the instance is not disabled.\n   * @return {false} if the instance is disabled.\n   */\n  BaseSelection.prototype.isEnabled = function () {\n    return !this.isDisabled();\n  };\n\n  /**\n   * Helper method to abstract the \"disabled\" state of this object.\n   *\n   * @return {true} if the disabled option is true.\n   * @return {false} if the disabled option is false.\n   */\n  BaseSelection.prototype.isDisabled = function () {\n    return this.options.get('disabled');\n  };\n\n  return BaseSelection;\n});\n\nS2.define('select2/selection/single',[\n  'jquery',\n  './base',\n  '../utils',\n  '../keys'\n], function ($, BaseSelection, Utils, KEYS) {\n  function SingleSelection () {\n    SingleSelection.__super__.constructor.apply(this, arguments);\n  }\n\n  Utils.Extend(SingleSelection, BaseSelection);\n\n  SingleSelection.prototype.render = function () {\n    var $selection = SingleSelection.__super__.render.call(this);\n\n    $selection[0].classList.add('select2-selection--single');\n\n    $selection.html(\n      '<span class=\"select2-selection__rendered\"></span>' +\n      '<span class=\"select2-selection__arrow\" role=\"presentation\">' +\n        '<b role=\"presentation\"></b>' +\n      '</span>'\n    );\n\n    return $selection;\n  };\n\n  SingleSelection.prototype.bind = function (container, $container) {\n    var self = this;\n\n    SingleSelection.__super__.bind.apply(this, arguments);\n\n    var id = container.id + '-container';\n\n    this.$selection.find('.select2-selection__rendered')\n      .attr('id', id)\n      .attr('role', 'textbox')\n      .attr('aria-readonly', 'true');\n    this.$selection.attr('aria-labelledby', id);\n    this.$selection.attr('aria-controls', id);\n\n    this.$selection.on('mousedown', function (evt) {\n      // Only respond to left clicks\n      if (evt.which !== 1) {\n        return;\n      }\n\n      self.trigger('toggle', {\n        originalEvent: evt\n      });\n    });\n\n    this.$selection.on('focus', function (evt) {\n      // User focuses on the container\n    });\n\n    this.$selection.on('blur', function (evt) {\n      // User exits the container\n    });\n\n    container.on('focus', function (evt) {\n      if (!container.isOpen()) {\n        self.$selection.trigger('focus');\n      }\n    });\n  };\n\n  SingleSelection.prototype.clear = function () {\n    var $rendered = this.$selection.find('.select2-selection__rendered');\n    $rendered.empty();\n    $rendered.removeAttr('title'); // clear tooltip on empty\n  };\n\n  SingleSelection.prototype.display = function (data, container) {\n    var template = this.options.get('templateSelection');\n    var escapeMarkup = this.options.get('escapeMarkup');\n\n    return escapeMarkup(template(data, container));\n  };\n\n  SingleSelection.prototype.selectionContainer = function () {\n    return $('<span></span>');\n  };\n\n  SingleSelection.prototype.update = function (data) {\n    if (data.length === 0) {\n      this.clear();\n      return;\n    }\n\n    var selection = data[0];\n\n    var $rendered = this.$selection.find('.select2-selection__rendered');\n    var formatted = this.display(selection, $rendered);\n\n    $rendered.empty().append(formatted);\n\n    var title = selection.title || selection.text;\n\n    if (title) {\n      $rendered.attr('title', title);\n    } else {\n      $rendered.removeAttr('title');\n    }\n  };\n\n  return SingleSelection;\n});\n\nS2.define('select2/selection/multiple',[\n  'jquery',\n  './base',\n  '../utils'\n], function ($, BaseSelection, Utils) {\n  function MultipleSelection ($element, options) {\n    MultipleSelection.__super__.constructor.apply(this, arguments);\n  }\n\n  Utils.Extend(MultipleSelection, BaseSelection);\n\n  MultipleSelection.prototype.render = function () {\n    var $selection = MultipleSelection.__super__.render.call(this);\n\n    $selection[0].classList.add('select2-selection--multiple');\n\n    $selection.html(\n      '<ul class=\"select2-selection__rendered\"></ul>'\n    );\n\n    return $selection;\n  };\n\n  MultipleSelection.prototype.bind = function (container, $container) {\n    var self = this;\n\n    MultipleSelection.__super__.bind.apply(this, arguments);\n\n    var id = container.id + '-container';\n    this.$selection.find('.select2-selection__rendered').attr('id', id);\n\n    this.$selection.on('click', function (evt) {\n      self.trigger('toggle', {\n        originalEvent: evt\n      });\n    });\n\n    this.$selection.on(\n      'click',\n      '.select2-selection__choice__remove',\n      function (evt) {\n        // Ignore the event if it is disabled\n        if (self.isDisabled()) {\n          return;\n        }\n\n        var $remove = $(this);\n        var $selection = $remove.parent();\n\n        var data = Utils.GetData($selection[0], 'data');\n\n        self.trigger('unselect', {\n          originalEvent: evt,\n          data: data\n        });\n      }\n    );\n\n    this.$selection.on(\n      'keydown',\n      '.select2-selection__choice__remove',\n      function (evt) {\n        // Ignore the event if it is disabled\n        if (self.isDisabled()) {\n          return;\n        }\n\n        evt.stopPropagation();\n      }\n    );\n  };\n\n  MultipleSelection.prototype.clear = function () {\n    var $rendered = this.$selection.find('.select2-selection__rendered');\n    $rendered.empty();\n    $rendered.removeAttr('title');\n  };\n\n  MultipleSelection.prototype.display = function (data, container) {\n    var template = this.options.get('templateSelection');\n    var escapeMarkup = this.options.get('escapeMarkup');\n\n    return escapeMarkup(template(data, container));\n  };\n\n  MultipleSelection.prototype.selectionContainer = function () {\n    var $container = $(\n      '<li class=\"select2-selection__choice\">' +\n        '<button type=\"button\" class=\"select2-selection__choice__remove\" ' +\n        'tabindex=\"-1\">' +\n          '<span aria-hidden=\"true\">&times;</span>' +\n        '</button>' +\n        '<span class=\"select2-selection__choice__display\"></span>' +\n      '</li>'\n    );\n\n    return $container;\n  };\n\n  MultipleSelection.prototype.update = function (data) {\n    this.clear();\n\n    if (data.length === 0) {\n      return;\n    }\n\n    var $selections = [];\n\n    var selectionIdPrefix = this.$selection.find('.select2-selection__rendered')\n      .attr('id') + '-choice-';\n\n    for (var d = 0; d < data.length; d++) {\n      var selection = data[d];\n\n      var $selection = this.selectionContainer();\n      var formatted = this.display(selection, $selection);\n\n      var selectionId = selectionIdPrefix + Utils.generateChars(4) + '-';\n\n      if (selection.id) {\n        selectionId += selection.id;\n      } else {\n        selectionId += Utils.generateChars(4);\n      }\n\n      $selection.find('.select2-selection__choice__display')\n        .append(formatted)\n        .attr('id', selectionId);\n\n      var title = selection.title || selection.text;\n\n      if (title) {\n        $selection.attr('title', title);\n      }\n\n      var removeItem = this.options.get('translations').get('removeItem');\n\n      var $remove = $selection.find('.select2-selection__choice__remove');\n\n      $remove.attr('title', removeItem());\n      $remove.attr('aria-label', removeItem());\n      $remove.attr('aria-describedby', selectionId);\n\n      Utils.StoreData($selection[0], 'data', selection);\n\n      $selections.push($selection);\n    }\n\n    var $rendered = this.$selection.find('.select2-selection__rendered');\n\n    $rendered.append($selections);\n  };\n\n  return MultipleSelection;\n});\n\nS2.define('select2/selection/placeholder',[\n\n], function () {\n  function Placeholder (decorated, $element, options) {\n    this.placeholder = this.normalizePlaceholder(options.get('placeholder'));\n\n    decorated.call(this, $element, options);\n  }\n\n  Placeholder.prototype.normalizePlaceholder = function (_, placeholder) {\n    if (typeof placeholder === 'string') {\n      placeholder = {\n        id: '',\n        text: placeholder\n      };\n    }\n\n    return placeholder;\n  };\n\n  Placeholder.prototype.createPlaceholder = function (decorated, placeholder) {\n    var $placeholder = this.selectionContainer();\n\n    $placeholder.html(this.display(placeholder));\n    $placeholder[0].classList.add('select2-selection__placeholder');\n    $placeholder[0].classList.remove('select2-selection__choice');\n\n    var placeholderTitle = placeholder.title ||\n      placeholder.text ||\n      $placeholder.text();\n\n    this.$selection.find('.select2-selection__rendered').attr(\n      'title',\n      placeholderTitle\n    );\n\n    return $placeholder;\n  };\n\n  Placeholder.prototype.update = function (decorated, data) {\n    var singlePlaceholder = (\n      data.length == 1 && data[0].id != this.placeholder.id\n    );\n    var multipleSelections = data.length > 1;\n\n    if (multipleSelections || singlePlaceholder) {\n      return decorated.call(this, data);\n    }\n\n    this.clear();\n\n    var $placeholder = this.createPlaceholder(this.placeholder);\n\n    this.$selection.find('.select2-selection__rendered').append($placeholder);\n  };\n\n  return Placeholder;\n});\n\nS2.define('select2/selection/allowClear',[\n  'jquery',\n  '../keys',\n  '../utils'\n], function ($, KEYS, Utils) {\n  function AllowClear () { }\n\n  AllowClear.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n\n    decorated.call(this, container, $container);\n\n    if (this.placeholder == null) {\n      if (this.options.get('debug') && window.console && console.error) {\n        console.error(\n          'Select2: The `allowClear` option should be used in combination ' +\n          'with the `placeholder` option.'\n        );\n      }\n    }\n\n    this.$selection.on('mousedown', '.select2-selection__clear',\n      function (evt) {\n        self._handleClear(evt);\n    });\n\n    container.on('keypress', function (evt) {\n      self._handleKeyboardClear(evt, container);\n    });\n  };\n\n  AllowClear.prototype._handleClear = function (_, evt) {\n    // Ignore the event if it is disabled\n    if (this.isDisabled()) {\n      return;\n    }\n\n    var $clear = this.$selection.find('.select2-selection__clear');\n\n    // Ignore the event if nothing has been selected\n    if ($clear.length === 0) {\n      return;\n    }\n\n    evt.stopPropagation();\n\n    var data = Utils.GetData($clear[0], 'data');\n\n    var previousVal = this.$element.val();\n    this.$element.val(this.placeholder.id);\n\n    var unselectData = {\n      data: data\n    };\n    this.trigger('clear', unselectData);\n    if (unselectData.prevented) {\n      this.$element.val(previousVal);\n      return;\n    }\n\n    for (var d = 0; d < data.length; d++) {\n      unselectData = {\n        data: data[d]\n      };\n\n      // Trigger the `unselect` event, so people can prevent it from being\n      // cleared.\n      this.trigger('unselect', unselectData);\n\n      // If the event was prevented, don't clear it out.\n      if (unselectData.prevented) {\n        this.$element.val(previousVal);\n        return;\n      }\n    }\n\n    this.$element.trigger('input').trigger('change');\n\n    this.trigger('toggle', {});\n  };\n\n  AllowClear.prototype._handleKeyboardClear = function (_, evt, container) {\n    if (container.isOpen()) {\n      return;\n    }\n\n    if (evt.which == KEYS.DELETE || evt.which == KEYS.BACKSPACE) {\n      this._handleClear(evt);\n    }\n  };\n\n  AllowClear.prototype.update = function (decorated, data) {\n    decorated.call(this, data);\n\n    this.$selection.find('.select2-selection__clear').remove();\n    this.$selection[0].classList.remove('select2-selection--clearable');\n\n    if (this.$selection.find('.select2-selection__placeholder').length > 0 ||\n        data.length === 0) {\n      return;\n    }\n\n    var selectionId = this.$selection.find('.select2-selection__rendered')\n      .attr('id');\n\n    var removeAll = this.options.get('translations').get('removeAllItems');\n\n    var $remove = $(\n      '<button type=\"button\" class=\"select2-selection__clear\" tabindex=\"-1\">' +\n        '<span aria-hidden=\"true\">&times;</span>' +\n      '</button>'\n    );\n    $remove.attr('title', removeAll());\n    $remove.attr('aria-label', removeAll());\n    $remove.attr('aria-describedby', selectionId);\n    Utils.StoreData($remove[0], 'data', data);\n\n    this.$selection.prepend($remove);\n    this.$selection[0].classList.add('select2-selection--clearable');\n  };\n\n  return AllowClear;\n});\n\nS2.define('select2/selection/search',[\n  'jquery',\n  '../utils',\n  '../keys'\n], function ($, Utils, KEYS) {\n  function Search (decorated, $element, options) {\n    decorated.call(this, $element, options);\n  }\n\n  Search.prototype.render = function (decorated) {\n    var searchLabel = this.options.get('translations').get('search');\n    var $search = $(\n      '<span class=\"select2-search select2-search--inline\">' +\n        '<textarea class=\"select2-search__field\"'+\n        ' type=\"search\" tabindex=\"-1\"' +\n        ' autocorrect=\"off\" autocapitalize=\"none\"' +\n        ' spellcheck=\"false\" role=\"searchbox\" aria-autocomplete=\"list\" >' +\n        '</textarea>' +\n      '</span>'\n    );\n\n    this.$searchContainer = $search;\n    this.$search = $search.find('textarea');\n\n    this.$search.prop('autocomplete', this.options.get('autocomplete'));\n    this.$search.attr('aria-label', searchLabel());\n\n    var $rendered = decorated.call(this);\n\n    this._transferTabIndex();\n    $rendered.append(this.$searchContainer);\n\n    return $rendered;\n  };\n\n  Search.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n\n    var resultsId = container.id + '-results';\n    var selectionId = container.id + '-container';\n\n    decorated.call(this, container, $container);\n\n    self.$search.attr('aria-describedby', selectionId);\n\n    container.on('open', function () {\n      self.$search.attr('aria-controls', resultsId);\n      self.$search.trigger('focus');\n    });\n\n    container.on('close', function () {\n      self.$search.val('');\n      self.resizeSearch();\n      self.$search.removeAttr('aria-controls');\n      self.$search.removeAttr('aria-activedescendant');\n      self.$search.trigger('focus');\n    });\n\n    container.on('enable', function () {\n      self.$search.prop('disabled', false);\n\n      self._transferTabIndex();\n    });\n\n    container.on('disable', function () {\n      self.$search.prop('disabled', true);\n    });\n\n    container.on('focus', function (evt) {\n      self.$search.trigger('focus');\n    });\n\n    container.on('results:focus', function (params) {\n      if (params.data._resultId) {\n        self.$search.attr('aria-activedescendant', params.data._resultId);\n      } else {\n        self.$search.removeAttr('aria-activedescendant');\n      }\n    });\n\n    this.$selection.on('focusin', '.select2-search--inline', function (evt) {\n      self.trigger('focus', evt);\n    });\n\n    this.$selection.on('focusout', '.select2-search--inline', function (evt) {\n      self._handleBlur(evt);\n    });\n\n    this.$selection.on('keydown', '.select2-search--inline', function (evt) {\n      evt.stopPropagation();\n\n      self.trigger('keypress', evt);\n\n      self._keyUpPrevented = evt.isDefaultPrevented();\n\n      var key = evt.which;\n\n      if (key === KEYS.BACKSPACE && self.$search.val() === '') {\n        var $previousChoice = self.$selection\n          .find('.select2-selection__choice').last();\n\n        if ($previousChoice.length > 0) {\n          var item = Utils.GetData($previousChoice[0], 'data');\n\n          self.searchRemoveChoice(item);\n\n          evt.preventDefault();\n        }\n      }\n    });\n\n    this.$selection.on('click', '.select2-search--inline', function (evt) {\n      if (self.$search.val()) {\n        evt.stopPropagation();\n      }\n    });\n\n    // Try to detect the IE version should the `documentMode` property that\n    // is stored on the document. This is only implemented in IE and is\n    // slightly cleaner than doing a user agent check.\n    // This property is not available in Edge, but Edge also doesn't have\n    // this bug.\n    var msie = document.documentMode;\n    var disableInputEvents = msie && msie <= 11;\n\n    // Workaround for browsers which do not support the `input` event\n    // This will prevent double-triggering of events for browsers which support\n    // both the `keyup` and `input` events.\n    this.$selection.on(\n      'input.searchcheck',\n      '.select2-search--inline',\n      function (evt) {\n        // IE will trigger the `input` event when a placeholder is used on a\n        // search box. To get around this issue, we are forced to ignore all\n        // `input` events in IE and keep using `keyup`.\n        if (disableInputEvents) {\n          self.$selection.off('input.search input.searchcheck');\n          return;\n        }\n\n        // Unbind the duplicated `keyup` event\n        self.$selection.off('keyup.search');\n      }\n    );\n\n    this.$selection.on(\n      'keyup.search input.search',\n      '.select2-search--inline',\n      function (evt) {\n        // IE will trigger the `input` event when a placeholder is used on a\n        // search box. To get around this issue, we are forced to ignore all\n        // `input` events in IE and keep using `keyup`.\n        if (disableInputEvents && evt.type === 'input') {\n          self.$selection.off('input.search input.searchcheck');\n          return;\n        }\n\n        var key = evt.which;\n\n        // We can freely ignore events from modifier keys\n        if (key == KEYS.SHIFT || key == KEYS.CTRL || key == KEYS.ALT) {\n          return;\n        }\n\n        // Tabbing will be handled during the `keydown` phase\n        if (key == KEYS.TAB) {\n          return;\n        }\n\n        self.handleSearch(evt);\n      }\n    );\n  };\n\n  /**\n   * This method will transfer the tabindex attribute from the rendered\n   * selection to the search box. This allows for the search box to be used as\n   * the primary focus instead of the selection container.\n   *\n   * @private\n   */\n  Search.prototype._transferTabIndex = function (decorated) {\n    this.$search.attr('tabindex', this.$selection.attr('tabindex'));\n    this.$selection.attr('tabindex', '-1');\n  };\n\n  Search.prototype.createPlaceholder = function (decorated, placeholder) {\n    this.$search.attr('placeholder', placeholder.text);\n  };\n\n  Search.prototype.update = function (decorated, data) {\n    var searchHadFocus = this.$search[0] == document.activeElement;\n\n    this.$search.attr('placeholder', '');\n\n    decorated.call(this, data);\n\n    this.resizeSearch();\n    if (searchHadFocus) {\n      this.$search.trigger('focus');\n    }\n  };\n\n  Search.prototype.handleSearch = function () {\n    this.resizeSearch();\n\n    if (!this._keyUpPrevented) {\n      var input = this.$search.val();\n\n      this.trigger('query', {\n        term: input\n      });\n    }\n\n    this._keyUpPrevented = false;\n  };\n\n  Search.prototype.searchRemoveChoice = function (decorated, item) {\n    this.trigger('unselect', {\n      data: item\n    });\n\n    this.$search.val(item.text);\n    this.handleSearch();\n  };\n\n  Search.prototype.resizeSearch = function () {\n    this.$search.css('width', '25px');\n\n    var width = '100%';\n\n    if (this.$search.attr('placeholder') === '') {\n      var minimumWidth = this.$search.val().length + 1;\n\n      width = (minimumWidth * 0.75) + 'em';\n    }\n\n    this.$search.css('width', width);\n  };\n\n  return Search;\n});\n\nS2.define('select2/selection/selectionCss',[\n  '../utils'\n], function (Utils) {\n  function SelectionCSS () { }\n\n  SelectionCSS.prototype.render = function (decorated) {\n    var $selection = decorated.call(this);\n\n    var selectionCssClass = this.options.get('selectionCssClass') || '';\n\n    if (selectionCssClass.indexOf(':all:') !== -1) {\n      selectionCssClass = selectionCssClass.replace(':all:', '');\n\n      Utils.copyNonInternalCssClasses($selection[0], this.$element[0]);\n    }\n\n    $selection.addClass(selectionCssClass);\n\n    return $selection;\n  };\n\n  return SelectionCSS;\n});\n\nS2.define('select2/selection/eventRelay',[\n  'jquery'\n], function ($) {\n  function EventRelay () { }\n\n  EventRelay.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n    var relayEvents = [\n      'open', 'opening',\n      'close', 'closing',\n      'select', 'selecting',\n      'unselect', 'unselecting',\n      'clear', 'clearing'\n    ];\n\n    var preventableEvents = [\n      'opening', 'closing', 'selecting', 'unselecting', 'clearing'\n    ];\n\n    decorated.call(this, container, $container);\n\n    container.on('*', function (name, params) {\n      // Ignore events that should not be relayed\n      if (relayEvents.indexOf(name) === -1) {\n        return;\n      }\n\n      // The parameters should always be an object\n      params = params || {};\n\n      // Generate the jQuery event for the Select2 event\n      var evt = $.Event('select2:' + name, {\n        params: params\n      });\n\n      self.$element.trigger(evt);\n\n      // Only handle preventable events if it was one\n      if (preventableEvents.indexOf(name) === -1) {\n        return;\n      }\n\n      params.prevented = evt.isDefaultPrevented();\n    });\n  };\n\n  return EventRelay;\n});\n\nS2.define('select2/translation',[\n  'jquery',\n  'require'\n], function ($, require) {\n  function Translation (dict) {\n    this.dict = dict || {};\n  }\n\n  Translation.prototype.all = function () {\n    return this.dict;\n  };\n\n  Translation.prototype.get = function (key) {\n    return this.dict[key];\n  };\n\n  Translation.prototype.extend = function (translation) {\n    this.dict = $.extend({}, translation.all(), this.dict);\n  };\n\n  // Static functions\n\n  Translation._cache = {};\n\n  Translation.loadPath = function (path) {\n    if (!(path in Translation._cache)) {\n      var translations = require(path);\n\n      Translation._cache[path] = translations;\n    }\n\n    return new Translation(Translation._cache[path]);\n  };\n\n  return Translation;\n});\n\nS2.define('select2/diacritics',[\n\n], function () {\n  var diacritics = {\n    '\\u24B6': 'A',\n    '\\uFF21': 'A',\n    '\\u00C0': 'A',\n    '\\u00C1': 'A',\n    '\\u00C2': 'A',\n    '\\u1EA6': 'A',\n    '\\u1EA4': 'A',\n    '\\u1EAA': 'A',\n    '\\u1EA8': 'A',\n    '\\u00C3': 'A',\n    '\\u0100': 'A',\n    '\\u0102': 'A',\n    '\\u1EB0': 'A',\n    '\\u1EAE': 'A',\n    '\\u1EB4': 'A',\n    '\\u1EB2': 'A',\n    '\\u0226': 'A',\n    '\\u01E0': 'A',\n    '\\u00C4': 'A',\n    '\\u01DE': 'A',\n    '\\u1EA2': 'A',\n    '\\u00C5': 'A',\n    '\\u01FA': 'A',\n    '\\u01CD': 'A',\n    '\\u0200': 'A',\n    '\\u0202': 'A',\n    '\\u1EA0': 'A',\n    '\\u1EAC': 'A',\n    '\\u1EB6': 'A',\n    '\\u1E00': 'A',\n    '\\u0104': 'A',\n    '\\u023A': 'A',\n    '\\u2C6F': 'A',\n    '\\uA732': 'AA',\n    '\\u00C6': 'AE',\n    '\\u01FC': 'AE',\n    '\\u01E2': 'AE',\n    '\\uA734': 'AO',\n    '\\uA736': 'AU',\n    '\\uA738': 'AV',\n    '\\uA73A': 'AV',\n    '\\uA73C': 'AY',\n    '\\u24B7': 'B',\n    '\\uFF22': 'B',\n    '\\u1E02': 'B',\n    '\\u1E04': 'B',\n    '\\u1E06': 'B',\n    '\\u0243': 'B',\n    '\\u0182': 'B',\n    '\\u0181': 'B',\n    '\\u24B8': 'C',\n    '\\uFF23': 'C',\n    '\\u0106': 'C',\n    '\\u0108': 'C',\n    '\\u010A': 'C',\n    '\\u010C': 'C',\n    '\\u00C7': 'C',\n    '\\u1E08': 'C',\n    '\\u0187': 'C',\n    '\\u023B': 'C',\n    '\\uA73E': 'C',\n    '\\u24B9': 'D',\n    '\\uFF24': 'D',\n    '\\u1E0A': 'D',\n    '\\u010E': 'D',\n    '\\u1E0C': 'D',\n    '\\u1E10': 'D',\n    '\\u1E12': 'D',\n    '\\u1E0E': 'D',\n    '\\u0110': 'D',\n    '\\u018B': 'D',\n    '\\u018A': 'D',\n    '\\u0189': 'D',\n    '\\uA779': 'D',\n    '\\u01F1': 'DZ',\n    '\\u01C4': 'DZ',\n    '\\u01F2': 'Dz',\n    '\\u01C5': 'Dz',\n    '\\u24BA': 'E',\n    '\\uFF25': 'E',\n    '\\u00C8': 'E',\n    '\\u00C9': 'E',\n    '\\u00CA': 'E',\n    '\\u1EC0': 'E',\n    '\\u1EBE': 'E',\n    '\\u1EC4': 'E',\n    '\\u1EC2': 'E',\n    '\\u1EBC': 'E',\n    '\\u0112': 'E',\n    '\\u1E14': 'E',\n    '\\u1E16': 'E',\n    '\\u0114': 'E',\n    '\\u0116': 'E',\n    '\\u00CB': 'E',\n    '\\u1EBA': 'E',\n    '\\u011A': 'E',\n    '\\u0204': 'E',\n    '\\u0206': 'E',\n    '\\u1EB8': 'E',\n    '\\u1EC6': 'E',\n    '\\u0228': 'E',\n    '\\u1E1C': 'E',\n    '\\u0118': 'E',\n    '\\u1E18': 'E',\n    '\\u1E1A': 'E',\n    '\\u0190': 'E',\n    '\\u018E': 'E',\n    '\\u24BB': 'F',\n    '\\uFF26': 'F',\n    '\\u1E1E': 'F',\n    '\\u0191': 'F',\n    '\\uA77B': 'F',\n    '\\u24BC': 'G',\n    '\\uFF27': 'G',\n    '\\u01F4': 'G',\n    '\\u011C': 'G',\n    '\\u1E20': 'G',\n    '\\u011E': 'G',\n    '\\u0120': 'G',\n    '\\u01E6': 'G',\n    '\\u0122': 'G',\n    '\\u01E4': 'G',\n    '\\u0193': 'G',\n    '\\uA7A0': 'G',\n    '\\uA77D': 'G',\n    '\\uA77E': 'G',\n    '\\u24BD': 'H',\n    '\\uFF28': 'H',\n    '\\u0124': 'H',\n    '\\u1E22': 'H',\n    '\\u1E26': 'H',\n    '\\u021E': 'H',\n    '\\u1E24': 'H',\n    '\\u1E28': 'H',\n    '\\u1E2A': 'H',\n    '\\u0126': 'H',\n    '\\u2C67': 'H',\n    '\\u2C75': 'H',\n    '\\uA78D': 'H',\n    '\\u24BE': 'I',\n    '\\uFF29': 'I',\n    '\\u00CC': 'I',\n    '\\u00CD': 'I',\n    '\\u00CE': 'I',\n    '\\u0128': 'I',\n    '\\u012A': 'I',\n    '\\u012C': 'I',\n    '\\u0130': 'I',\n    '\\u00CF': 'I',\n    '\\u1E2E': 'I',\n    '\\u1EC8': 'I',\n    '\\u01CF': 'I',\n    '\\u0208': 'I',\n    '\\u020A': 'I',\n    '\\u1ECA': 'I',\n    '\\u012E': 'I',\n    '\\u1E2C': 'I',\n    '\\u0197': 'I',\n    '\\u24BF': 'J',\n    '\\uFF2A': 'J',\n    '\\u0134': 'J',\n    '\\u0248': 'J',\n    '\\u24C0': 'K',\n    '\\uFF2B': 'K',\n    '\\u1E30': 'K',\n    '\\u01E8': 'K',\n    '\\u1E32': 'K',\n    '\\u0136': 'K',\n    '\\u1E34': 'K',\n    '\\u0198': 'K',\n    '\\u2C69': 'K',\n    '\\uA740': 'K',\n    '\\uA742': 'K',\n    '\\uA744': 'K',\n    '\\uA7A2': 'K',\n    '\\u24C1': 'L',\n    '\\uFF2C': 'L',\n    '\\u013F': 'L',\n    '\\u0139': 'L',\n    '\\u013D': 'L',\n    '\\u1E36': 'L',\n    '\\u1E38': 'L',\n    '\\u013B': 'L',\n    '\\u1E3C': 'L',\n    '\\u1E3A': 'L',\n    '\\u0141': 'L',\n    '\\u023D': 'L',\n    '\\u2C62': 'L',\n    '\\u2C60': 'L',\n    '\\uA748': 'L',\n    '\\uA746': 'L',\n    '\\uA780': 'L',\n    '\\u01C7': 'LJ',\n    '\\u01C8': 'Lj',\n    '\\u24C2': 'M',\n    '\\uFF2D': 'M',\n    '\\u1E3E': 'M',\n    '\\u1E40': 'M',\n    '\\u1E42': 'M',\n    '\\u2C6E': 'M',\n    '\\u019C': 'M',\n    '\\u24C3': 'N',\n    '\\uFF2E': 'N',\n    '\\u01F8': 'N',\n    '\\u0143': 'N',\n    '\\u00D1': 'N',\n    '\\u1E44': 'N',\n    '\\u0147': 'N',\n    '\\u1E46': 'N',\n    '\\u0145': 'N',\n    '\\u1E4A': 'N',\n    '\\u1E48': 'N',\n    '\\u0220': 'N',\n    '\\u019D': 'N',\n    '\\uA790': 'N',\n    '\\uA7A4': 'N',\n    '\\u01CA': 'NJ',\n    '\\u01CB': 'Nj',\n    '\\u24C4': 'O',\n    '\\uFF2F': 'O',\n    '\\u00D2': 'O',\n    '\\u00D3': 'O',\n    '\\u00D4': 'O',\n    '\\u1ED2': 'O',\n    '\\u1ED0': 'O',\n    '\\u1ED6': 'O',\n    '\\u1ED4': 'O',\n    '\\u00D5': 'O',\n    '\\u1E4C': 'O',\n    '\\u022C': 'O',\n    '\\u1E4E': 'O',\n    '\\u014C': 'O',\n    '\\u1E50': 'O',\n    '\\u1E52': 'O',\n    '\\u014E': 'O',\n    '\\u022E': 'O',\n    '\\u0230': 'O',\n    '\\u00D6': 'O',\n    '\\u022A': 'O',\n    '\\u1ECE': 'O',\n    '\\u0150': 'O',\n    '\\u01D1': 'O',\n    '\\u020C': 'O',\n    '\\u020E': 'O',\n    '\\u01A0': 'O',\n    '\\u1EDC': 'O',\n    '\\u1EDA': 'O',\n    '\\u1EE0': 'O',\n    '\\u1EDE': 'O',\n    '\\u1EE2': 'O',\n    '\\u1ECC': 'O',\n    '\\u1ED8': 'O',\n    '\\u01EA': 'O',\n    '\\u01EC': 'O',\n    '\\u00D8': 'O',\n    '\\u01FE': 'O',\n    '\\u0186': 'O',\n    '\\u019F': 'O',\n    '\\uA74A': 'O',\n    '\\uA74C': 'O',\n    '\\u0152': 'OE',\n    '\\u01A2': 'OI',\n    '\\uA74E': 'OO',\n    '\\u0222': 'OU',\n    '\\u24C5': 'P',\n    '\\uFF30': 'P',\n    '\\u1E54': 'P',\n    '\\u1E56': 'P',\n    '\\u01A4': 'P',\n    '\\u2C63': 'P',\n    '\\uA750': 'P',\n    '\\uA752': 'P',\n    '\\uA754': 'P',\n    '\\u24C6': 'Q',\n    '\\uFF31': 'Q',\n    '\\uA756': 'Q',\n    '\\uA758': 'Q',\n    '\\u024A': 'Q',\n    '\\u24C7': 'R',\n    '\\uFF32': 'R',\n    '\\u0154': 'R',\n    '\\u1E58': 'R',\n    '\\u0158': 'R',\n    '\\u0210': 'R',\n    '\\u0212': 'R',\n    '\\u1E5A': 'R',\n    '\\u1E5C': 'R',\n    '\\u0156': 'R',\n    '\\u1E5E': 'R',\n    '\\u024C': 'R',\n    '\\u2C64': 'R',\n    '\\uA75A': 'R',\n    '\\uA7A6': 'R',\n    '\\uA782': 'R',\n    '\\u24C8': 'S',\n    '\\uFF33': 'S',\n    '\\u1E9E': 'S',\n    '\\u015A': 'S',\n    '\\u1E64': 'S',\n    '\\u015C': 'S',\n    '\\u1E60': 'S',\n    '\\u0160': 'S',\n    '\\u1E66': 'S',\n    '\\u1E62': 'S',\n    '\\u1E68': 'S',\n    '\\u0218': 'S',\n    '\\u015E': 'S',\n    '\\u2C7E': 'S',\n    '\\uA7A8': 'S',\n    '\\uA784': 'S',\n    '\\u24C9': 'T',\n    '\\uFF34': 'T',\n    '\\u1E6A': 'T',\n    '\\u0164': 'T',\n    '\\u1E6C': 'T',\n    '\\u021A': 'T',\n    '\\u0162': 'T',\n    '\\u1E70': 'T',\n    '\\u1E6E': 'T',\n    '\\u0166': 'T',\n    '\\u01AC': 'T',\n    '\\u01AE': 'T',\n    '\\u023E': 'T',\n    '\\uA786': 'T',\n    '\\uA728': 'TZ',\n    '\\u24CA': 'U',\n    '\\uFF35': 'U',\n    '\\u00D9': 'U',\n    '\\u00DA': 'U',\n    '\\u00DB': 'U',\n    '\\u0168': 'U',\n    '\\u1E78': 'U',\n    '\\u016A': 'U',\n    '\\u1E7A': 'U',\n    '\\u016C': 'U',\n    '\\u00DC': 'U',\n    '\\u01DB': 'U',\n    '\\u01D7': 'U',\n    '\\u01D5': 'U',\n    '\\u01D9': 'U',\n    '\\u1EE6': 'U',\n    '\\u016E': 'U',\n    '\\u0170': 'U',\n    '\\u01D3': 'U',\n    '\\u0214': 'U',\n    '\\u0216': 'U',\n    '\\u01AF': 'U',\n    '\\u1EEA': 'U',\n    '\\u1EE8': 'U',\n    '\\u1EEE': 'U',\n    '\\u1EEC': 'U',\n    '\\u1EF0': 'U',\n    '\\u1EE4': 'U',\n    '\\u1E72': 'U',\n    '\\u0172': 'U',\n    '\\u1E76': 'U',\n    '\\u1E74': 'U',\n    '\\u0244': 'U',\n    '\\u24CB': 'V',\n    '\\uFF36': 'V',\n    '\\u1E7C': 'V',\n    '\\u1E7E': 'V',\n    '\\u01B2': 'V',\n    '\\uA75E': 'V',\n    '\\u0245': 'V',\n    '\\uA760': 'VY',\n    '\\u24CC': 'W',\n    '\\uFF37': 'W',\n    '\\u1E80': 'W',\n    '\\u1E82': 'W',\n    '\\u0174': 'W',\n    '\\u1E86': 'W',\n    '\\u1E84': 'W',\n    '\\u1E88': 'W',\n    '\\u2C72': 'W',\n    '\\u24CD': 'X',\n    '\\uFF38': 'X',\n    '\\u1E8A': 'X',\n    '\\u1E8C': 'X',\n    '\\u24CE': 'Y',\n    '\\uFF39': 'Y',\n    '\\u1EF2': 'Y',\n    '\\u00DD': 'Y',\n    '\\u0176': 'Y',\n    '\\u1EF8': 'Y',\n    '\\u0232': 'Y',\n    '\\u1E8E': 'Y',\n    '\\u0178': 'Y',\n    '\\u1EF6': 'Y',\n    '\\u1EF4': 'Y',\n    '\\u01B3': 'Y',\n    '\\u024E': 'Y',\n    '\\u1EFE': 'Y',\n    '\\u24CF': 'Z',\n    '\\uFF3A': 'Z',\n    '\\u0179': 'Z',\n    '\\u1E90': 'Z',\n    '\\u017B': 'Z',\n    '\\u017D': 'Z',\n    '\\u1E92': 'Z',\n    '\\u1E94': 'Z',\n    '\\u01B5': 'Z',\n    '\\u0224': 'Z',\n    '\\u2C7F': 'Z',\n    '\\u2C6B': 'Z',\n    '\\uA762': 'Z',\n    '\\u24D0': 'a',\n    '\\uFF41': 'a',\n    '\\u1E9A': 'a',\n    '\\u00E0': 'a',\n    '\\u00E1': 'a',\n    '\\u00E2': 'a',\n    '\\u1EA7': 'a',\n    '\\u1EA5': 'a',\n    '\\u1EAB': 'a',\n    '\\u1EA9': 'a',\n    '\\u00E3': 'a',\n    '\\u0101': 'a',\n    '\\u0103': 'a',\n    '\\u1EB1': 'a',\n    '\\u1EAF': 'a',\n    '\\u1EB5': 'a',\n    '\\u1EB3': 'a',\n    '\\u0227': 'a',\n    '\\u01E1': 'a',\n    '\\u00E4': 'a',\n    '\\u01DF': 'a',\n    '\\u1EA3': 'a',\n    '\\u00E5': 'a',\n    '\\u01FB': 'a',\n    '\\u01CE': 'a',\n    '\\u0201': 'a',\n    '\\u0203': 'a',\n    '\\u1EA1': 'a',\n    '\\u1EAD': 'a',\n    '\\u1EB7': 'a',\n    '\\u1E01': 'a',\n    '\\u0105': 'a',\n    '\\u2C65': 'a',\n    '\\u0250': 'a',\n    '\\uA733': 'aa',\n    '\\u00E6': 'ae',\n    '\\u01FD': 'ae',\n    '\\u01E3': 'ae',\n    '\\uA735': 'ao',\n    '\\uA737': 'au',\n    '\\uA739': 'av',\n    '\\uA73B': 'av',\n    '\\uA73D': 'ay',\n    '\\u24D1': 'b',\n    '\\uFF42': 'b',\n    '\\u1E03': 'b',\n    '\\u1E05': 'b',\n    '\\u1E07': 'b',\n    '\\u0180': 'b',\n    '\\u0183': 'b',\n    '\\u0253': 'b',\n    '\\u24D2': 'c',\n    '\\uFF43': 'c',\n    '\\u0107': 'c',\n    '\\u0109': 'c',\n    '\\u010B': 'c',\n    '\\u010D': 'c',\n    '\\u00E7': 'c',\n    '\\u1E09': 'c',\n    '\\u0188': 'c',\n    '\\u023C': 'c',\n    '\\uA73F': 'c',\n    '\\u2184': 'c',\n    '\\u24D3': 'd',\n    '\\uFF44': 'd',\n    '\\u1E0B': 'd',\n    '\\u010F': 'd',\n    '\\u1E0D': 'd',\n    '\\u1E11': 'd',\n    '\\u1E13': 'd',\n    '\\u1E0F': 'd',\n    '\\u0111': 'd',\n    '\\u018C': 'd',\n    '\\u0256': 'd',\n    '\\u0257': 'd',\n    '\\uA77A': 'd',\n    '\\u01F3': 'dz',\n    '\\u01C6': 'dz',\n    '\\u24D4': 'e',\n    '\\uFF45': 'e',\n    '\\u00E8': 'e',\n    '\\u00E9': 'e',\n    '\\u00EA': 'e',\n    '\\u1EC1': 'e',\n    '\\u1EBF': 'e',\n    '\\u1EC5': 'e',\n    '\\u1EC3': 'e',\n    '\\u1EBD': 'e',\n    '\\u0113': 'e',\n    '\\u1E15': 'e',\n    '\\u1E17': 'e',\n    '\\u0115': 'e',\n    '\\u0117': 'e',\n    '\\u00EB': 'e',\n    '\\u1EBB': 'e',\n    '\\u011B': 'e',\n    '\\u0205': 'e',\n    '\\u0207': 'e',\n    '\\u1EB9': 'e',\n    '\\u1EC7': 'e',\n    '\\u0229': 'e',\n    '\\u1E1D': 'e',\n    '\\u0119': 'e',\n    '\\u1E19': 'e',\n    '\\u1E1B': 'e',\n    '\\u0247': 'e',\n    '\\u025B': 'e',\n    '\\u01DD': 'e',\n    '\\u24D5': 'f',\n    '\\uFF46': 'f',\n    '\\u1E1F': 'f',\n    '\\u0192': 'f',\n    '\\uA77C': 'f',\n    '\\u24D6': 'g',\n    '\\uFF47': 'g',\n    '\\u01F5': 'g',\n    '\\u011D': 'g',\n    '\\u1E21': 'g',\n    '\\u011F': 'g',\n    '\\u0121': 'g',\n    '\\u01E7': 'g',\n    '\\u0123': 'g',\n    '\\u01E5': 'g',\n    '\\u0260': 'g',\n    '\\uA7A1': 'g',\n    '\\u1D79': 'g',\n    '\\uA77F': 'g',\n    '\\u24D7': 'h',\n    '\\uFF48': 'h',\n    '\\u0125': 'h',\n    '\\u1E23': 'h',\n    '\\u1E27': 'h',\n    '\\u021F': 'h',\n    '\\u1E25': 'h',\n    '\\u1E29': 'h',\n    '\\u1E2B': 'h',\n    '\\u1E96': 'h',\n    '\\u0127': 'h',\n    '\\u2C68': 'h',\n    '\\u2C76': 'h',\n    '\\u0265': 'h',\n    '\\u0195': 'hv',\n    '\\u24D8': 'i',\n    '\\uFF49': 'i',\n    '\\u00EC': 'i',\n    '\\u00ED': 'i',\n    '\\u00EE': 'i',\n    '\\u0129': 'i',\n    '\\u012B': 'i',\n    '\\u012D': 'i',\n    '\\u00EF': 'i',\n    '\\u1E2F': 'i',\n    '\\u1EC9': 'i',\n    '\\u01D0': 'i',\n    '\\u0209': 'i',\n    '\\u020B': 'i',\n    '\\u1ECB': 'i',\n    '\\u012F': 'i',\n    '\\u1E2D': 'i',\n    '\\u0268': 'i',\n    '\\u0131': 'i',\n    '\\u24D9': 'j',\n    '\\uFF4A': 'j',\n    '\\u0135': 'j',\n    '\\u01F0': 'j',\n    '\\u0249': 'j',\n    '\\u24DA': 'k',\n    '\\uFF4B': 'k',\n    '\\u1E31': 'k',\n    '\\u01E9': 'k',\n    '\\u1E33': 'k',\n    '\\u0137': 'k',\n    '\\u1E35': 'k',\n    '\\u0199': 'k',\n    '\\u2C6A': 'k',\n    '\\uA741': 'k',\n    '\\uA743': 'k',\n    '\\uA745': 'k',\n    '\\uA7A3': 'k',\n    '\\u24DB': 'l',\n    '\\uFF4C': 'l',\n    '\\u0140': 'l',\n    '\\u013A': 'l',\n    '\\u013E': 'l',\n    '\\u1E37': 'l',\n    '\\u1E39': 'l',\n    '\\u013C': 'l',\n    '\\u1E3D': 'l',\n    '\\u1E3B': 'l',\n    '\\u017F': 'l',\n    '\\u0142': 'l',\n    '\\u019A': 'l',\n    '\\u026B': 'l',\n    '\\u2C61': 'l',\n    '\\uA749': 'l',\n    '\\uA781': 'l',\n    '\\uA747': 'l',\n    '\\u01C9': 'lj',\n    '\\u24DC': 'm',\n    '\\uFF4D': 'm',\n    '\\u1E3F': 'm',\n    '\\u1E41': 'm',\n    '\\u1E43': 'm',\n    '\\u0271': 'm',\n    '\\u026F': 'm',\n    '\\u24DD': 'n',\n    '\\uFF4E': 'n',\n    '\\u01F9': 'n',\n    '\\u0144': 'n',\n    '\\u00F1': 'n',\n    '\\u1E45': 'n',\n    '\\u0148': 'n',\n    '\\u1E47': 'n',\n    '\\u0146': 'n',\n    '\\u1E4B': 'n',\n    '\\u1E49': 'n',\n    '\\u019E': 'n',\n    '\\u0272': 'n',\n    '\\u0149': 'n',\n    '\\uA791': 'n',\n    '\\uA7A5': 'n',\n    '\\u01CC': 'nj',\n    '\\u24DE': 'o',\n    '\\uFF4F': 'o',\n    '\\u00F2': 'o',\n    '\\u00F3': 'o',\n    '\\u00F4': 'o',\n    '\\u1ED3': 'o',\n    '\\u1ED1': 'o',\n    '\\u1ED7': 'o',\n    '\\u1ED5': 'o',\n    '\\u00F5': 'o',\n    '\\u1E4D': 'o',\n    '\\u022D': 'o',\n    '\\u1E4F': 'o',\n    '\\u014D': 'o',\n    '\\u1E51': 'o',\n    '\\u1E53': 'o',\n    '\\u014F': 'o',\n    '\\u022F': 'o',\n    '\\u0231': 'o',\n    '\\u00F6': 'o',\n    '\\u022B': 'o',\n    '\\u1ECF': 'o',\n    '\\u0151': 'o',\n    '\\u01D2': 'o',\n    '\\u020D': 'o',\n    '\\u020F': 'o',\n    '\\u01A1': 'o',\n    '\\u1EDD': 'o',\n    '\\u1EDB': 'o',\n    '\\u1EE1': 'o',\n    '\\u1EDF': 'o',\n    '\\u1EE3': 'o',\n    '\\u1ECD': 'o',\n    '\\u1ED9': 'o',\n    '\\u01EB': 'o',\n    '\\u01ED': 'o',\n    '\\u00F8': 'o',\n    '\\u01FF': 'o',\n    '\\u0254': 'o',\n    '\\uA74B': 'o',\n    '\\uA74D': 'o',\n    '\\u0275': 'o',\n    '\\u0153': 'oe',\n    '\\u01A3': 'oi',\n    '\\u0223': 'ou',\n    '\\uA74F': 'oo',\n    '\\u24DF': 'p',\n    '\\uFF50': 'p',\n    '\\u1E55': 'p',\n    '\\u1E57': 'p',\n    '\\u01A5': 'p',\n    '\\u1D7D': 'p',\n    '\\uA751': 'p',\n    '\\uA753': 'p',\n    '\\uA755': 'p',\n    '\\u24E0': 'q',\n    '\\uFF51': 'q',\n    '\\u024B': 'q',\n    '\\uA757': 'q',\n    '\\uA759': 'q',\n    '\\u24E1': 'r',\n    '\\uFF52': 'r',\n    '\\u0155': 'r',\n    '\\u1E59': 'r',\n    '\\u0159': 'r',\n    '\\u0211': 'r',\n    '\\u0213': 'r',\n    '\\u1E5B': 'r',\n    '\\u1E5D': 'r',\n    '\\u0157': 'r',\n    '\\u1E5F': 'r',\n    '\\u024D': 'r',\n    '\\u027D': 'r',\n    '\\uA75B': 'r',\n    '\\uA7A7': 'r',\n    '\\uA783': 'r',\n    '\\u24E2': 's',\n    '\\uFF53': 's',\n    '\\u00DF': 's',\n    '\\u015B': 's',\n    '\\u1E65': 's',\n    '\\u015D': 's',\n    '\\u1E61': 's',\n    '\\u0161': 's',\n    '\\u1E67': 's',\n    '\\u1E63': 's',\n    '\\u1E69': 's',\n    '\\u0219': 's',\n    '\\u015F': 's',\n    '\\u023F': 's',\n    '\\uA7A9': 's',\n    '\\uA785': 's',\n    '\\u1E9B': 's',\n    '\\u24E3': 't',\n    '\\uFF54': 't',\n    '\\u1E6B': 't',\n    '\\u1E97': 't',\n    '\\u0165': 't',\n    '\\u1E6D': 't',\n    '\\u021B': 't',\n    '\\u0163': 't',\n    '\\u1E71': 't',\n    '\\u1E6F': 't',\n    '\\u0167': 't',\n    '\\u01AD': 't',\n    '\\u0288': 't',\n    '\\u2C66': 't',\n    '\\uA787': 't',\n    '\\uA729': 'tz',\n    '\\u24E4': 'u',\n    '\\uFF55': 'u',\n    '\\u00F9': 'u',\n    '\\u00FA': 'u',\n    '\\u00FB': 'u',\n    '\\u0169': 'u',\n    '\\u1E79': 'u',\n    '\\u016B': 'u',\n    '\\u1E7B': 'u',\n    '\\u016D': 'u',\n    '\\u00FC': 'u',\n    '\\u01DC': 'u',\n    '\\u01D8': 'u',\n    '\\u01D6': 'u',\n    '\\u01DA': 'u',\n    '\\u1EE7': 'u',\n    '\\u016F': 'u',\n    '\\u0171': 'u',\n    '\\u01D4': 'u',\n    '\\u0215': 'u',\n    '\\u0217': 'u',\n    '\\u01B0': 'u',\n    '\\u1EEB': 'u',\n    '\\u1EE9': 'u',\n    '\\u1EEF': 'u',\n    '\\u1EED': 'u',\n    '\\u1EF1': 'u',\n    '\\u1EE5': 'u',\n    '\\u1E73': 'u',\n    '\\u0173': 'u',\n    '\\u1E77': 'u',\n    '\\u1E75': 'u',\n    '\\u0289': 'u',\n    '\\u24E5': 'v',\n    '\\uFF56': 'v',\n    '\\u1E7D': 'v',\n    '\\u1E7F': 'v',\n    '\\u028B': 'v',\n    '\\uA75F': 'v',\n    '\\u028C': 'v',\n    '\\uA761': 'vy',\n    '\\u24E6': 'w',\n    '\\uFF57': 'w',\n    '\\u1E81': 'w',\n    '\\u1E83': 'w',\n    '\\u0175': 'w',\n    '\\u1E87': 'w',\n    '\\u1E85': 'w',\n    '\\u1E98': 'w',\n    '\\u1E89': 'w',\n    '\\u2C73': 'w',\n    '\\u24E7': 'x',\n    '\\uFF58': 'x',\n    '\\u1E8B': 'x',\n    '\\u1E8D': 'x',\n    '\\u24E8': 'y',\n    '\\uFF59': 'y',\n    '\\u1EF3': 'y',\n    '\\u00FD': 'y',\n    '\\u0177': 'y',\n    '\\u1EF9': 'y',\n    '\\u0233': 'y',\n    '\\u1E8F': 'y',\n    '\\u00FF': 'y',\n    '\\u1EF7': 'y',\n    '\\u1E99': 'y',\n    '\\u1EF5': 'y',\n    '\\u01B4': 'y',\n    '\\u024F': 'y',\n    '\\u1EFF': 'y',\n    '\\u24E9': 'z',\n    '\\uFF5A': 'z',\n    '\\u017A': 'z',\n    '\\u1E91': 'z',\n    '\\u017C': 'z',\n    '\\u017E': 'z',\n    '\\u1E93': 'z',\n    '\\u1E95': 'z',\n    '\\u01B6': 'z',\n    '\\u0225': 'z',\n    '\\u0240': 'z',\n    '\\u2C6C': 'z',\n    '\\uA763': 'z',\n    '\\u0386': '\\u0391',\n    '\\u0388': '\\u0395',\n    '\\u0389': '\\u0397',\n    '\\u038A': '\\u0399',\n    '\\u03AA': '\\u0399',\n    '\\u038C': '\\u039F',\n    '\\u038E': '\\u03A5',\n    '\\u03AB': '\\u03A5',\n    '\\u038F': '\\u03A9',\n    '\\u03AC': '\\u03B1',\n    '\\u03AD': '\\u03B5',\n    '\\u03AE': '\\u03B7',\n    '\\u03AF': '\\u03B9',\n    '\\u03CA': '\\u03B9',\n    '\\u0390': '\\u03B9',\n    '\\u03CC': '\\u03BF',\n    '\\u03CD': '\\u03C5',\n    '\\u03CB': '\\u03C5',\n    '\\u03B0': '\\u03C5',\n    '\\u03CE': '\\u03C9',\n    '\\u03C2': '\\u03C3',\n    '\\u2019': '\\''\n  };\n\n  return diacritics;\n});\n\nS2.define('select2/data/base',[\n  '../utils'\n], function (Utils) {\n  function BaseAdapter ($element, options) {\n    BaseAdapter.__super__.constructor.call(this);\n  }\n\n  Utils.Extend(BaseAdapter, Utils.Observable);\n\n  BaseAdapter.prototype.current = function (callback) {\n    throw new Error('The `current` method must be defined in child classes.');\n  };\n\n  BaseAdapter.prototype.query = function (params, callback) {\n    throw new Error('The `query` method must be defined in child classes.');\n  };\n\n  BaseAdapter.prototype.bind = function (container, $container) {\n    // Can be implemented in subclasses\n  };\n\n  BaseAdapter.prototype.destroy = function () {\n    // Can be implemented in subclasses\n  };\n\n  BaseAdapter.prototype.generateResultId = function (container, data) {\n    var id = container.id + '-result-';\n\n    id += Utils.generateChars(4);\n\n    if (data.id != null) {\n      id += '-' + data.id.toString();\n    } else {\n      id += '-' + Utils.generateChars(4);\n    }\n    return id;\n  };\n\n  return BaseAdapter;\n});\n\nS2.define('select2/data/select',[\n  './base',\n  '../utils',\n  'jquery'\n], function (BaseAdapter, Utils, $) {\n  function SelectAdapter ($element, options) {\n    this.$element = $element;\n    this.options = options;\n\n    SelectAdapter.__super__.constructor.call(this);\n  }\n\n  Utils.Extend(SelectAdapter, BaseAdapter);\n\n  SelectAdapter.prototype.current = function (callback) {\n    var self = this;\n\n    var data = Array.prototype.map.call(\n      this.$element[0].querySelectorAll(':checked'),\n      function (selectedElement) {\n        return self.item($(selectedElement));\n      }\n    );\n\n    callback(data);\n  };\n\n  SelectAdapter.prototype.select = function (data) {\n    var self = this;\n\n    data.selected = true;\n\n    // If data.element is a DOM node, use it instead\n    if (\n      data.element != null && data.element.tagName.toLowerCase() === 'option'\n    ) {\n      data.element.selected = true;\n\n      this.$element.trigger('input').trigger('change');\n\n      return;\n    }\n\n    if (this.$element.prop('multiple')) {\n      this.current(function (currentData) {\n        var val = [];\n\n        data = [data];\n        data.push.apply(data, currentData);\n\n        for (var d = 0; d < data.length; d++) {\n          var id = data[d].id;\n\n          if (val.indexOf(id) === -1) {\n            val.push(id);\n          }\n        }\n\n        self.$element.val(val);\n        self.$element.trigger('input').trigger('change');\n      });\n    } else {\n      var val = data.id;\n\n      this.$element.val(val);\n      this.$element.trigger('input').trigger('change');\n    }\n  };\n\n  SelectAdapter.prototype.unselect = function (data) {\n    var self = this;\n\n    if (!this.$element.prop('multiple')) {\n      return;\n    }\n\n    data.selected = false;\n\n    if (\n      data.element != null &&\n      data.element.tagName.toLowerCase() === 'option'\n    ) {\n      data.element.selected = false;\n\n      this.$element.trigger('input').trigger('change');\n\n      return;\n    }\n\n    this.current(function (currentData) {\n      var val = [];\n\n      for (var d = 0; d < currentData.length; d++) {\n        var id = currentData[d].id;\n\n        if (id !== data.id && val.indexOf(id) === -1) {\n          val.push(id);\n        }\n      }\n\n      self.$element.val(val);\n\n      self.$element.trigger('input').trigger('change');\n    });\n  };\n\n  SelectAdapter.prototype.bind = function (container, $container) {\n    var self = this;\n\n    this.container = container;\n\n    container.on('select', function (params) {\n      self.select(params.data);\n    });\n\n    container.on('unselect', function (params) {\n      self.unselect(params.data);\n    });\n  };\n\n  SelectAdapter.prototype.destroy = function () {\n    // Remove anything added to child elements\n    this.$element.find('*').each(function () {\n      // Remove any custom data set by Select2\n      Utils.RemoveData(this);\n    });\n  };\n\n  SelectAdapter.prototype.query = function (params, callback) {\n    var data = [];\n    var self = this;\n\n    var $options = this.$element.children();\n\n    $options.each(function () {\n      if (\n        this.tagName.toLowerCase() !== 'option' &&\n        this.tagName.toLowerCase() !== 'optgroup'\n      ) {\n        return;\n      }\n\n      var $option = $(this);\n\n      var option = self.item($option);\n\n      var matches = self.matches(params, option);\n\n      if (matches !== null) {\n        data.push(matches);\n      }\n    });\n\n    callback({\n      results: data\n    });\n  };\n\n  SelectAdapter.prototype.addOptions = function ($options) {\n    this.$element.append($options);\n  };\n\n  SelectAdapter.prototype.option = function (data) {\n    var option;\n\n    if (data.children) {\n      option = document.createElement('optgroup');\n      option.label = data.text;\n    } else {\n      option = document.createElement('option');\n\n      if (option.textContent !== undefined) {\n        option.textContent = data.text;\n      } else {\n        option.innerText = data.text;\n      }\n    }\n\n    if (data.id !== undefined) {\n      option.value = data.id;\n    }\n\n    if (data.disabled) {\n      option.disabled = true;\n    }\n\n    if (data.selected) {\n      option.selected = true;\n    }\n\n    if (data.title) {\n      option.title = data.title;\n    }\n\n    var normalizedData = this._normalizeItem(data);\n    normalizedData.element = option;\n\n    // Override the option's data with the combined data\n    Utils.StoreData(option, 'data', normalizedData);\n\n    return $(option);\n  };\n\n  SelectAdapter.prototype.item = function ($option) {\n    var data = {};\n\n    data = Utils.GetData($option[0], 'data');\n\n    if (data != null) {\n      return data;\n    }\n\n    var option = $option[0];\n\n    if (option.tagName.toLowerCase() === 'option') {\n      data = {\n        id: $option.val(),\n        text: $option.text(),\n        disabled: $option.prop('disabled'),\n        selected: $option.prop('selected'),\n        title: $option.prop('title')\n      };\n    } else if (option.tagName.toLowerCase() === 'optgroup') {\n      data = {\n        text: $option.prop('label'),\n        children: [],\n        title: $option.prop('title')\n      };\n\n      var $children = $option.children('option');\n      var children = [];\n\n      for (var c = 0; c < $children.length; c++) {\n        var $child = $($children[c]);\n\n        var child = this.item($child);\n\n        children.push(child);\n      }\n\n      data.children = children;\n    }\n\n    data = this._normalizeItem(data);\n    data.element = $option[0];\n\n    Utils.StoreData($option[0], 'data', data);\n\n    return data;\n  };\n\n  SelectAdapter.prototype._normalizeItem = function (item) {\n    if (item !== Object(item)) {\n      item = {\n        id: item,\n        text: item\n      };\n    }\n\n    item = $.extend({}, {\n      text: ''\n    }, item);\n\n    var defaults = {\n      selected: false,\n      disabled: false\n    };\n\n    if (item.id != null) {\n      item.id = item.id.toString();\n    }\n\n    if (item.text != null) {\n      item.text = item.text.toString();\n    }\n\n    if (item._resultId == null && item.id && this.container != null) {\n      item._resultId = this.generateResultId(this.container, item);\n    }\n\n    return $.extend({}, defaults, item);\n  };\n\n  SelectAdapter.prototype.matches = function (params, data) {\n    var matcher = this.options.get('matcher');\n\n    return matcher(params, data);\n  };\n\n  return SelectAdapter;\n});\n\nS2.define('select2/data/array',[\n  './select',\n  '../utils',\n  'jquery'\n], function (SelectAdapter, Utils, $) {\n  function ArrayAdapter ($element, options) {\n    this._dataToConvert = options.get('data') || [];\n\n    ArrayAdapter.__super__.constructor.call(this, $element, options);\n  }\n\n  Utils.Extend(ArrayAdapter, SelectAdapter);\n\n  ArrayAdapter.prototype.bind = function (container, $container) {\n    ArrayAdapter.__super__.bind.call(this, container, $container);\n\n    this.addOptions(this.convertToOptions(this._dataToConvert));\n  };\n\n  ArrayAdapter.prototype.select = function (data) {\n    var $option = this.$element.find('option').filter(function (i, elm) {\n      return elm.value == data.id.toString();\n    });\n\n    if ($option.length === 0) {\n      $option = this.option(data);\n\n      this.addOptions($option);\n    }\n\n    ArrayAdapter.__super__.select.call(this, data);\n  };\n\n  ArrayAdapter.prototype.convertToOptions = function (data) {\n    var self = this;\n\n    var $existing = this.$element.find('option');\n    var existingIds = $existing.map(function () {\n      return self.item($(this)).id;\n    }).get();\n\n    var $options = [];\n\n    // Filter out all items except for the one passed in the argument\n    function onlyItem (item) {\n      return function () {\n        return $(this).val() == item.id;\n      };\n    }\n\n    for (var d = 0; d < data.length; d++) {\n      var item = this._normalizeItem(data[d]);\n\n      // Skip items which were pre-loaded, only merge the data\n      if (existingIds.indexOf(item.id) >= 0) {\n        var $existingOption = $existing.filter(onlyItem(item));\n\n        var existingData = this.item($existingOption);\n        var newData = $.extend(true, {}, item, existingData);\n\n        var $newOption = this.option(newData);\n\n        $existingOption.replaceWith($newOption);\n\n        continue;\n      }\n\n      var $option = this.option(item);\n\n      if (item.children) {\n        var $children = this.convertToOptions(item.children);\n\n        $option.append($children);\n      }\n\n      $options.push($option);\n    }\n\n    return $options;\n  };\n\n  return ArrayAdapter;\n});\n\nS2.define('select2/data/ajax',[\n  './array',\n  '../utils',\n  'jquery'\n], function (ArrayAdapter, Utils, $) {\n  function AjaxAdapter ($element, options) {\n    this.ajaxOptions = this._applyDefaults(options.get('ajax'));\n\n    if (this.ajaxOptions.processResults != null) {\n      this.processResults = this.ajaxOptions.processResults;\n    }\n\n    AjaxAdapter.__super__.constructor.call(this, $element, options);\n  }\n\n  Utils.Extend(AjaxAdapter, ArrayAdapter);\n\n  AjaxAdapter.prototype._applyDefaults = function (options) {\n    var defaults = {\n      data: function (params) {\n        return $.extend({}, params, {\n          q: params.term\n        });\n      },\n      transport: function (params, success, failure) {\n        var $request = $.ajax(params);\n\n        $request.then(success);\n        $request.fail(failure);\n\n        return $request;\n      }\n    };\n\n    return $.extend({}, defaults, options, true);\n  };\n\n  AjaxAdapter.prototype.processResults = function (results) {\n    return results;\n  };\n\n  AjaxAdapter.prototype.query = function (params, callback) {\n    var matches = [];\n    var self = this;\n\n    if (this._request != null) {\n      // JSONP requests cannot always be aborted\n      if (typeof this._request.abort === 'function') {\n        this._request.abort();\n      }\n\n      this._request = null;\n    }\n\n    var options = $.extend({\n      type: 'GET'\n    }, this.ajaxOptions);\n\n    if (typeof options.url === 'function') {\n      options.url = options.url.call(this.$element, params);\n    }\n\n    if (typeof options.data === 'function') {\n      options.data = options.data.call(this.$element, params);\n    }\n\n    function request () {\n      var $request = options.transport(options, function (data) {\n        var results = self.processResults(data, params);\n\n        if (self.options.get('debug') && window.console && console.error) {\n          // Check to make sure that the response included a `results` key.\n          if (!results || !results.results || !Array.isArray(results.results)) {\n            console.error(\n              'Select2: The AJAX results did not return an array in the ' +\n              '`results` key of the response.'\n            );\n          }\n        }\n\n        callback(results);\n      }, function () {\n        // Attempt to detect if a request was aborted\n        // Only works if the transport exposes a status property\n        if ('status' in $request &&\n            ($request.status === 0 || $request.status === '0')) {\n          return;\n        }\n\n        self.trigger('results:message', {\n          message: 'errorLoading'\n        });\n      });\n\n      self._request = $request;\n    }\n\n    if (this.ajaxOptions.delay && params.term != null) {\n      if (this._queryTimeout) {\n        window.clearTimeout(this._queryTimeout);\n      }\n\n      this._queryTimeout = window.setTimeout(request, this.ajaxOptions.delay);\n    } else {\n      request();\n    }\n  };\n\n  return AjaxAdapter;\n});\n\nS2.define('select2/data/tags',[\n  'jquery'\n], function ($) {\n  function Tags (decorated, $element, options) {\n    var tags = options.get('tags');\n\n    var createTag = options.get('createTag');\n\n    if (createTag !== undefined) {\n      this.createTag = createTag;\n    }\n\n    var insertTag = options.get('insertTag');\n\n    if (insertTag !== undefined) {\n        this.insertTag = insertTag;\n    }\n\n    decorated.call(this, $element, options);\n\n    if (Array.isArray(tags)) {\n      for (var t = 0; t < tags.length; t++) {\n        var tag = tags[t];\n        var item = this._normalizeItem(tag);\n\n        var $option = this.option(item);\n\n        this.$element.append($option);\n      }\n    }\n  }\n\n  Tags.prototype.query = function (decorated, params, callback) {\n    var self = this;\n\n    this._removeOldTags();\n\n    if (params.term == null || params.page != null) {\n      decorated.call(this, params, callback);\n      return;\n    }\n\n    function wrapper (obj, child) {\n      var data = obj.results;\n\n      for (var i = 0; i < data.length; i++) {\n        var option = data[i];\n\n        var checkChildren = (\n          option.children != null &&\n          !wrapper({\n            results: option.children\n          }, true)\n        );\n\n        var optionText = (option.text || '').toUpperCase();\n        var paramsTerm = (params.term || '').toUpperCase();\n\n        var checkText = optionText === paramsTerm;\n\n        if (checkText || checkChildren) {\n          if (child) {\n            return false;\n          }\n\n          obj.data = data;\n          callback(obj);\n\n          return;\n        }\n      }\n\n      if (child) {\n        return true;\n      }\n\n      var tag = self.createTag(params);\n\n      if (tag != null) {\n        var $option = self.option(tag);\n        $option.attr('data-select2-tag', 'true');\n\n        self.addOptions([$option]);\n\n        self.insertTag(data, tag);\n      }\n\n      obj.results = data;\n\n      callback(obj);\n    }\n\n    decorated.call(this, params, wrapper);\n  };\n\n  Tags.prototype.createTag = function (decorated, params) {\n    if (params.term == null) {\n      return null;\n    }\n\n    var term = params.term.trim();\n\n    if (term === '') {\n      return null;\n    }\n\n    return {\n      id: term,\n      text: term\n    };\n  };\n\n  Tags.prototype.insertTag = function (_, data, tag) {\n    data.unshift(tag);\n  };\n\n  Tags.prototype._removeOldTags = function (_) {\n    var $options = this.$element.find('option[data-select2-tag]');\n\n    $options.each(function () {\n      if (this.selected) {\n        return;\n      }\n\n      $(this).remove();\n    });\n  };\n\n  return Tags;\n});\n\nS2.define('select2/data/tokenizer',[\n  'jquery'\n], function ($) {\n  function Tokenizer (decorated, $element, options) {\n    var tokenizer = options.get('tokenizer');\n\n    if (tokenizer !== undefined) {\n      this.tokenizer = tokenizer;\n    }\n\n    decorated.call(this, $element, options);\n  }\n\n  Tokenizer.prototype.bind = function (decorated, container, $container) {\n    decorated.call(this, container, $container);\n\n    this.$search =  container.dropdown.$search || container.selection.$search ||\n      $container.find('.select2-search__field');\n  };\n\n  Tokenizer.prototype.query = function (decorated, params, callback) {\n    var self = this;\n\n    function createAndSelect (data) {\n      // Normalize the data object so we can use it for checks\n      var item = self._normalizeItem(data);\n\n      // Check if the data object already exists as a tag\n      // Select it if it doesn't\n      var $existingOptions = self.$element.find('option').filter(function () {\n        return $(this).val() === item.id;\n      });\n\n      // If an existing option wasn't found for it, create the option\n      if (!$existingOptions.length) {\n        var $option = self.option(item);\n        $option.attr('data-select2-tag', true);\n\n        self._removeOldTags();\n        self.addOptions([$option]);\n      }\n\n      // Select the item, now that we know there is an option for it\n      select(item);\n    }\n\n    function select (data) {\n      self.trigger('select', {\n        data: data\n      });\n    }\n\n    params.term = params.term || '';\n\n    var tokenData = this.tokenizer(params, this.options, createAndSelect);\n\n    if (tokenData.term !== params.term) {\n      // Replace the search term if we have the search box\n      if (this.$search.length) {\n        this.$search.val(tokenData.term);\n        this.$search.trigger('focus');\n      }\n\n      params.term = tokenData.term;\n    }\n\n    decorated.call(this, params, callback);\n  };\n\n  Tokenizer.prototype.tokenizer = function (_, params, options, callback) {\n    var separators = options.get('tokenSeparators') || [];\n    var term = params.term;\n    var i = 0;\n\n    var createTag = this.createTag || function (params) {\n      return {\n        id: params.term,\n        text: params.term\n      };\n    };\n\n    while (i < term.length) {\n      var termChar = term[i];\n\n      if (separators.indexOf(termChar) === -1) {\n        i++;\n\n        continue;\n      }\n\n      var part = term.substr(0, i);\n      var partParams = $.extend({}, params, {\n        term: part\n      });\n\n      var data = createTag(partParams);\n\n      if (data == null) {\n        i++;\n        continue;\n      }\n\n      callback(data);\n\n      // Reset the term to not include the tokenized portion\n      term = term.substr(i + 1) || '';\n      i = 0;\n    }\n\n    return {\n      term: term\n    };\n  };\n\n  return Tokenizer;\n});\n\nS2.define('select2/data/minimumInputLength',[\n\n], function () {\n  function MinimumInputLength (decorated, $e, options) {\n    this.minimumInputLength = options.get('minimumInputLength');\n\n    decorated.call(this, $e, options);\n  }\n\n  MinimumInputLength.prototype.query = function (decorated, params, callback) {\n    params.term = params.term || '';\n\n    if (params.term.length < this.minimumInputLength) {\n      this.trigger('results:message', {\n        message: 'inputTooShort',\n        args: {\n          minimum: this.minimumInputLength,\n          input: params.term,\n          params: params\n        }\n      });\n\n      return;\n    }\n\n    decorated.call(this, params, callback);\n  };\n\n  return MinimumInputLength;\n});\n\nS2.define('select2/data/maximumInputLength',[\n\n], function () {\n  function MaximumInputLength (decorated, $e, options) {\n    this.maximumInputLength = options.get('maximumInputLength');\n\n    decorated.call(this, $e, options);\n  }\n\n  MaximumInputLength.prototype.query = function (decorated, params, callback) {\n    params.term = params.term || '';\n\n    if (this.maximumInputLength > 0 &&\n        params.term.length > this.maximumInputLength) {\n      this.trigger('results:message', {\n        message: 'inputTooLong',\n        args: {\n          maximum: this.maximumInputLength,\n          input: params.term,\n          params: params\n        }\n      });\n\n      return;\n    }\n\n    decorated.call(this, params, callback);\n  };\n\n  return MaximumInputLength;\n});\n\nS2.define('select2/data/maximumSelectionLength',[\n\n], function (){\n  function MaximumSelectionLength (decorated, $e, options) {\n    this.maximumSelectionLength = options.get('maximumSelectionLength');\n\n    decorated.call(this, $e, options);\n  }\n\n  MaximumSelectionLength.prototype.bind =\n    function (decorated, container, $container) {\n      var self = this;\n\n      decorated.call(this, container, $container);\n\n      container.on('select', function () {\n        self._checkIfMaximumSelected();\n      });\n  };\n\n  MaximumSelectionLength.prototype.query =\n    function (decorated, params, callback) {\n      var self = this;\n\n      this._checkIfMaximumSelected(function () {\n        decorated.call(self, params, callback);\n      });\n  };\n\n  MaximumSelectionLength.prototype._checkIfMaximumSelected =\n    function (_, successCallback) {\n      var self = this;\n\n      this.current(function (currentData) {\n        var count = currentData != null ? currentData.length : 0;\n        if (self.maximumSelectionLength > 0 &&\n          count >= self.maximumSelectionLength) {\n          self.trigger('results:message', {\n            message: 'maximumSelected',\n            args: {\n              maximum: self.maximumSelectionLength\n            }\n          });\n          return;\n        }\n\n        if (successCallback) {\n          successCallback();\n        }\n      });\n  };\n\n  return MaximumSelectionLength;\n});\n\nS2.define('select2/dropdown',[\n  'jquery',\n  './utils'\n], function ($, Utils) {\n  function Dropdown ($element, options) {\n    this.$element = $element;\n    this.options = options;\n\n    Dropdown.__super__.constructor.call(this);\n  }\n\n  Utils.Extend(Dropdown, Utils.Observable);\n\n  Dropdown.prototype.render = function () {\n    var $dropdown = $(\n      '<span class=\"select2-dropdown\">' +\n        '<span class=\"select2-results\"></span>' +\n      '</span>'\n    );\n\n    $dropdown.attr('dir', this.options.get('dir'));\n\n    this.$dropdown = $dropdown;\n\n    return $dropdown;\n  };\n\n  Dropdown.prototype.bind = function () {\n    // Should be implemented in subclasses\n  };\n\n  Dropdown.prototype.position = function ($dropdown, $container) {\n    // Should be implemented in subclasses\n  };\n\n  Dropdown.prototype.destroy = function () {\n    // Remove the dropdown from the DOM\n    this.$dropdown.remove();\n  };\n\n  return Dropdown;\n});\n\nS2.define('select2/dropdown/search',[\n  'jquery'\n], function ($) {\n  function Search () { }\n\n  Search.prototype.render = function (decorated) {\n    var $rendered = decorated.call(this);\n    var searchLabel = this.options.get('translations').get('search');\n\n    var $search = $(\n      '<span class=\"select2-search select2-search--dropdown\">' +\n        '<input class=\"select2-search__field\" type=\"search\" tabindex=\"-1\"' +\n        ' autocorrect=\"off\" autocapitalize=\"none\"' +\n        ' spellcheck=\"false\" role=\"searchbox\" aria-autocomplete=\"list\" />' +\n      '</span>'\n    );\n\n    this.$searchContainer = $search;\n    this.$search = $search.find('input');\n\n    this.$search.prop('autocomplete', this.options.get('autocomplete'));\n    this.$search.attr('aria-label', searchLabel());\n\n    $rendered.prepend($search);\n\n    return $rendered;\n  };\n\n  Search.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n\n    var resultsId = container.id + '-results';\n\n    decorated.call(this, container, $container);\n\n    this.$search.on('keydown', function (evt) {\n      self.trigger('keypress', evt);\n\n      self._keyUpPrevented = evt.isDefaultPrevented();\n    });\n\n    // Workaround for browsers which do not support the `input` event\n    // This will prevent double-triggering of events for browsers which support\n    // both the `keyup` and `input` events.\n    this.$search.on('input', function (evt) {\n      // Unbind the duplicated `keyup` event\n      $(this).off('keyup');\n    });\n\n    this.$search.on('keyup input', function (evt) {\n      self.handleSearch(evt);\n    });\n\n    container.on('open', function () {\n      self.$search.attr('tabindex', 0);\n      self.$search.attr('aria-controls', resultsId);\n\n      self.$search.trigger('focus');\n\n      window.setTimeout(function () {\n        self.$search.trigger('focus');\n      }, 0);\n    });\n\n    container.on('close', function () {\n      self.$search.attr('tabindex', -1);\n      self.$search.removeAttr('aria-controls');\n      self.$search.removeAttr('aria-activedescendant');\n\n      self.$search.val('');\n      self.$search.trigger('blur');\n    });\n\n    container.on('focus', function () {\n      if (!container.isOpen()) {\n        self.$search.trigger('focus');\n      }\n    });\n\n    container.on('results:all', function (params) {\n      if (params.query.term == null || params.query.term === '') {\n        var showSearch = self.showSearch(params);\n\n        if (showSearch) {\n          self.$searchContainer[0].classList.remove('select2-search--hide');\n        } else {\n          self.$searchContainer[0].classList.add('select2-search--hide');\n        }\n      }\n    });\n\n    container.on('results:focus', function (params) {\n      if (params.data._resultId) {\n        self.$search.attr('aria-activedescendant', params.data._resultId);\n      } else {\n        self.$search.removeAttr('aria-activedescendant');\n      }\n    });\n  };\n\n  Search.prototype.handleSearch = function (evt) {\n    if (!this._keyUpPrevented) {\n      var input = this.$search.val();\n\n      this.trigger('query', {\n        term: input\n      });\n    }\n\n    this._keyUpPrevented = false;\n  };\n\n  Search.prototype.showSearch = function (_, params) {\n    return true;\n  };\n\n  return Search;\n});\n\nS2.define('select2/dropdown/hidePlaceholder',[\n\n], function () {\n  function HidePlaceholder (decorated, $element, options, dataAdapter) {\n    this.placeholder = this.normalizePlaceholder(options.get('placeholder'));\n\n    decorated.call(this, $element, options, dataAdapter);\n  }\n\n  HidePlaceholder.prototype.append = function (decorated, data) {\n    data.results = this.removePlaceholder(data.results);\n\n    decorated.call(this, data);\n  };\n\n  HidePlaceholder.prototype.normalizePlaceholder = function (_, placeholder) {\n    if (typeof placeholder === 'string') {\n      placeholder = {\n        id: '',\n        text: placeholder\n      };\n    }\n\n    return placeholder;\n  };\n\n  HidePlaceholder.prototype.removePlaceholder = function (_, data) {\n    var modifiedData = data.slice(0);\n\n    for (var d = data.length - 1; d >= 0; d--) {\n      var item = data[d];\n\n      if (this.placeholder.id === item.id) {\n        modifiedData.splice(d, 1);\n      }\n    }\n\n    return modifiedData;\n  };\n\n  return HidePlaceholder;\n});\n\nS2.define('select2/dropdown/infiniteScroll',[\n  'jquery'\n], function ($) {\n  function InfiniteScroll (decorated, $element, options, dataAdapter) {\n    this.lastParams = {};\n\n    decorated.call(this, $element, options, dataAdapter);\n\n    this.$loadingMore = this.createLoadingMore();\n    this.loading = false;\n  }\n\n  InfiniteScroll.prototype.append = function (decorated, data) {\n    this.$loadingMore.remove();\n    this.loading = false;\n\n    decorated.call(this, data);\n\n    if (this.showLoadingMore(data)) {\n      this.$results.append(this.$loadingMore);\n      this.loadMoreIfNeeded();\n    }\n  };\n\n  InfiniteScroll.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n\n    decorated.call(this, container, $container);\n\n    container.on('query', function (params) {\n      self.lastParams = params;\n      self.loading = true;\n    });\n\n    container.on('query:append', function (params) {\n      self.lastParams = params;\n      self.loading = true;\n    });\n\n    this.$results.on('scroll', this.loadMoreIfNeeded.bind(this));\n  };\n\n  InfiniteScroll.prototype.loadMoreIfNeeded = function () {\n    var isLoadMoreVisible = $.contains(\n      document.documentElement,\n      this.$loadingMore[0]\n    );\n\n    if (this.loading || !isLoadMoreVisible) {\n      return;\n    }\n\n    var currentOffset = this.$results.offset().top +\n      this.$results.outerHeight(false);\n    var loadingMoreOffset = this.$loadingMore.offset().top +\n      this.$loadingMore.outerHeight(false);\n\n    if (currentOffset + 50 >= loadingMoreOffset) {\n      this.loadMore();\n    }\n  };\n\n  InfiniteScroll.prototype.loadMore = function () {\n    this.loading = true;\n\n    var params = $.extend({}, {page: 1}, this.lastParams);\n\n    params.page++;\n\n    this.trigger('query:append', params);\n  };\n\n  InfiniteScroll.prototype.showLoadingMore = function (_, data) {\n    return data.pagination && data.pagination.more;\n  };\n\n  InfiniteScroll.prototype.createLoadingMore = function () {\n    var $option = $(\n      '<li ' +\n      'class=\"select2-results__option select2-results__option--load-more\"' +\n      'role=\"option\" aria-disabled=\"true\"></li>'\n    );\n\n    var message = this.options.get('translations').get('loadingMore');\n\n    $option.html(message(this.lastParams));\n\n    return $option;\n  };\n\n  return InfiniteScroll;\n});\n\nS2.define('select2/dropdown/attachBody',[\n  'jquery',\n  '../utils'\n], function ($, Utils) {\n  function AttachBody (decorated, $element, options) {\n    this.$dropdownParent = $(options.get('dropdownParent') || document.body);\n\n    decorated.call(this, $element, options);\n  }\n\n  AttachBody.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n\n    decorated.call(this, container, $container);\n\n    container.on('open', function () {\n      self._showDropdown();\n      self._attachPositioningHandler(container);\n\n      // Must bind after the results handlers to ensure correct sizing\n      self._bindContainerResultHandlers(container);\n    });\n\n    container.on('close', function () {\n      self._hideDropdown();\n      self._detachPositioningHandler(container);\n    });\n\n    this.$dropdownContainer.on('mousedown', function (evt) {\n      evt.stopPropagation();\n    });\n  };\n\n  AttachBody.prototype.destroy = function (decorated) {\n    decorated.call(this);\n\n    this.$dropdownContainer.remove();\n  };\n\n  AttachBody.prototype.position = function (decorated, $dropdown, $container) {\n    // Clone all of the container classes\n    $dropdown.attr('class', $container.attr('class'));\n\n    $dropdown[0].classList.remove('select2');\n    $dropdown[0].classList.add('select2-container--open');\n\n    $dropdown.css({\n      position: 'absolute',\n      top: -999999\n    });\n\n    this.$container = $container;\n  };\n\n  AttachBody.prototype.render = function (decorated) {\n    var $container = $('<span></span>');\n\n    var $dropdown = decorated.call(this);\n    $container.append($dropdown);\n\n    this.$dropdownContainer = $container;\n\n    return $container;\n  };\n\n  AttachBody.prototype._hideDropdown = function (decorated) {\n    this.$dropdownContainer.detach();\n  };\n\n  AttachBody.prototype._bindContainerResultHandlers =\n      function (decorated, container) {\n\n    // These should only be bound once\n    if (this._containerResultsHandlersBound) {\n      return;\n    }\n\n    var self = this;\n\n    container.on('results:all', function () {\n      self._positionDropdown();\n      self._resizeDropdown();\n    });\n\n    container.on('results:append', function () {\n      self._positionDropdown();\n      self._resizeDropdown();\n    });\n\n    container.on('results:message', function () {\n      self._positionDropdown();\n      self._resizeDropdown();\n    });\n\n    container.on('select', function () {\n      self._positionDropdown();\n      self._resizeDropdown();\n    });\n\n    container.on('unselect', function () {\n      self._positionDropdown();\n      self._resizeDropdown();\n    });\n\n    this._containerResultsHandlersBound = true;\n  };\n\n  AttachBody.prototype._attachPositioningHandler =\n      function (decorated, container) {\n    var self = this;\n\n    var scrollEvent = 'scroll.select2.' + container.id;\n    var resizeEvent = 'resize.select2.' + container.id;\n    var orientationEvent = 'orientationchange.select2.' + container.id;\n\n    var $watchers = this.$container.parents().filter(Utils.hasScroll);\n    $watchers.each(function () {\n      Utils.StoreData(this, 'select2-scroll-position', {\n        x: $(this).scrollLeft(),\n        y: $(this).scrollTop()\n      });\n    });\n\n    $watchers.on(scrollEvent, function (ev) {\n      var position = Utils.GetData(this, 'select2-scroll-position');\n      $(this).scrollTop(position.y);\n    });\n\n    $(window).on(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent,\n      function (e) {\n      self._positionDropdown();\n      self._resizeDropdown();\n    });\n  };\n\n  AttachBody.prototype._detachPositioningHandler =\n      function (decorated, container) {\n    var scrollEvent = 'scroll.select2.' + container.id;\n    var resizeEvent = 'resize.select2.' + container.id;\n    var orientationEvent = 'orientationchange.select2.' + container.id;\n\n    var $watchers = this.$container.parents().filter(Utils.hasScroll);\n    $watchers.off(scrollEvent);\n\n    $(window).off(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent);\n  };\n\n  AttachBody.prototype._positionDropdown = function () {\n    var $window = $(window);\n\n    var isCurrentlyAbove = this.$dropdown[0].classList\n      .contains('select2-dropdown--above');\n    var isCurrentlyBelow = this.$dropdown[0].classList\n      .contains('select2-dropdown--below');\n\n    var newDirection = null;\n\n    var offset = this.$container.offset();\n\n    offset.bottom = offset.top + this.$container.outerHeight(false);\n\n    var container = {\n      height: this.$container.outerHeight(false)\n    };\n\n    container.top = offset.top;\n    container.bottom = offset.top + container.height;\n\n    var dropdown = {\n      height: this.$dropdown.outerHeight(false)\n    };\n\n    var viewport = {\n      top: $window.scrollTop(),\n      bottom: $window.scrollTop() + $window.height()\n    };\n\n    var enoughRoomAbove = viewport.top < (offset.top - dropdown.height);\n    var enoughRoomBelow = viewport.bottom > (offset.bottom + dropdown.height);\n\n    var css = {\n      left: offset.left,\n      top: container.bottom\n    };\n\n    // Determine what the parent element is to use for calculating the offset\n    var $offsetParent = this.$dropdownParent;\n\n    // For statically positioned elements, we need to get the element\n    // that is determining the offset\n    if ($offsetParent.css('position') === 'static') {\n      $offsetParent = $offsetParent.offsetParent();\n    }\n\n    var parentOffset = {\n      top: 0,\n      left: 0\n    };\n\n    if (\n      $.contains(document.body, $offsetParent[0]) ||\n      $offsetParent[0].isConnected\n      ) {\n      parentOffset = $offsetParent.offset();\n    }\n\n    css.top -= parentOffset.top;\n    css.left -= parentOffset.left;\n\n    if (!isCurrentlyAbove && !isCurrentlyBelow) {\n      newDirection = 'below';\n    }\n\n    if (!enoughRoomBelow && enoughRoomAbove && !isCurrentlyAbove) {\n      newDirection = 'above';\n    } else if (!enoughRoomAbove && enoughRoomBelow && isCurrentlyAbove) {\n      newDirection = 'below';\n    }\n\n    if (newDirection == 'above' ||\n      (isCurrentlyAbove && newDirection !== 'below')) {\n      css.top = container.top - parentOffset.top - dropdown.height;\n    }\n\n    if (newDirection != null) {\n      this.$dropdown[0].classList.remove('select2-dropdown--below');\n      this.$dropdown[0].classList.remove('select2-dropdown--above');\n      this.$dropdown[0].classList.add('select2-dropdown--' + newDirection);\n\n      this.$container[0].classList.remove('select2-container--below');\n      this.$container[0].classList.remove('select2-container--above');\n      this.$container[0].classList.add('select2-container--' + newDirection);\n    }\n\n    this.$dropdownContainer.css(css);\n  };\n\n  AttachBody.prototype._resizeDropdown = function () {\n    var css = {\n      width: this.$container.outerWidth(false) + 'px'\n    };\n\n    if (this.options.get('dropdownAutoWidth')) {\n      css.minWidth = css.width;\n      css.position = 'relative';\n      css.width = 'auto';\n    }\n\n    this.$dropdown.css(css);\n  };\n\n  AttachBody.prototype._showDropdown = function (decorated) {\n    this.$dropdownContainer.appendTo(this.$dropdownParent);\n\n    this._positionDropdown();\n    this._resizeDropdown();\n  };\n\n  return AttachBody;\n});\n\nS2.define('select2/dropdown/minimumResultsForSearch',[\n\n], function () {\n  function countResults (data) {\n    var count = 0;\n\n    for (var d = 0; d < data.length; d++) {\n      var item = data[d];\n\n      if (item.children) {\n        count += countResults(item.children);\n      } else {\n        count++;\n      }\n    }\n\n    return count;\n  }\n\n  function MinimumResultsForSearch (decorated, $element, options, dataAdapter) {\n    this.minimumResultsForSearch = options.get('minimumResultsForSearch');\n\n    if (this.minimumResultsForSearch < 0) {\n      this.minimumResultsForSearch = Infinity;\n    }\n\n    decorated.call(this, $element, options, dataAdapter);\n  }\n\n  MinimumResultsForSearch.prototype.showSearch = function (decorated, params) {\n    if (countResults(params.data.results) < this.minimumResultsForSearch) {\n      return false;\n    }\n\n    return decorated.call(this, params);\n  };\n\n  return MinimumResultsForSearch;\n});\n\nS2.define('select2/dropdown/selectOnClose',[\n  '../utils'\n], function (Utils) {\n  function SelectOnClose () { }\n\n  SelectOnClose.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n\n    decorated.call(this, container, $container);\n\n    container.on('close', function (params) {\n      self._handleSelectOnClose(params);\n    });\n  };\n\n  SelectOnClose.prototype._handleSelectOnClose = function (_, params) {\n    if (params && params.originalSelect2Event != null) {\n      var event = params.originalSelect2Event;\n\n      // Don't select an item if the close event was triggered from a select or\n      // unselect event\n      if (event._type === 'select' || event._type === 'unselect') {\n        return;\n      }\n    }\n\n    var $highlightedResults = this.getHighlightedResults();\n\n    // Only select highlighted results\n    if ($highlightedResults.length < 1) {\n      return;\n    }\n\n    var data = Utils.GetData($highlightedResults[0], 'data');\n\n    // Don't re-select already selected resulte\n    if (\n      (data.element != null && data.element.selected) ||\n      (data.element == null && data.selected)\n    ) {\n      return;\n    }\n\n    this.trigger('select', {\n        data: data\n    });\n  };\n\n  return SelectOnClose;\n});\n\nS2.define('select2/dropdown/closeOnSelect',[\n\n], function () {\n  function CloseOnSelect () { }\n\n  CloseOnSelect.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n\n    decorated.call(this, container, $container);\n\n    container.on('select', function (evt) {\n      self._selectTriggered(evt);\n    });\n\n    container.on('unselect', function (evt) {\n      self._selectTriggered(evt);\n    });\n  };\n\n  CloseOnSelect.prototype._selectTriggered = function (_, evt) {\n    var originalEvent = evt.originalEvent;\n\n    // Don't close if the control key is being held\n    if (originalEvent && (originalEvent.ctrlKey || originalEvent.metaKey)) {\n      return;\n    }\n\n    this.trigger('close', {\n      originalEvent: originalEvent,\n      originalSelect2Event: evt\n    });\n  };\n\n  return CloseOnSelect;\n});\n\nS2.define('select2/dropdown/dropdownCss',[\n  '../utils'\n], function (Utils) {\n  function DropdownCSS () { }\n\n  DropdownCSS.prototype.render = function (decorated) {\n    var $dropdown = decorated.call(this);\n\n    var dropdownCssClass = this.options.get('dropdownCssClass') || '';\n\n    if (dropdownCssClass.indexOf(':all:') !== -1) {\n      dropdownCssClass = dropdownCssClass.replace(':all:', '');\n\n      Utils.copyNonInternalCssClasses($dropdown[0], this.$element[0]);\n    }\n\n    $dropdown.addClass(dropdownCssClass);\n\n    return $dropdown;\n  };\n\n  return DropdownCSS;\n});\n\nS2.define('select2/dropdown/tagsSearchHighlight',[\n  '../utils'\n], function (Utils) {\n  function TagsSearchHighlight () { }\n\n  TagsSearchHighlight.prototype.highlightFirstItem = function (decorated) {\n    var $options = this.$results\n    .find(\n      '.select2-results__option--selectable' +\n      ':not(.select2-results__option--selected)'\n    );\n\n    if ($options.length > 0) {\n      var $firstOption = $options.first();\n      var data = Utils.GetData($firstOption[0], 'data');\n      var firstElement = data.element;\n\n      if (firstElement && firstElement.getAttribute) {\n        if (firstElement.getAttribute('data-select2-tag') === 'true') {\n          $firstOption.trigger('mouseenter');\n\n          return;\n        }\n      }\n    }\n\n    decorated.call(this);\n  };\n\n  return TagsSearchHighlight;\n});\n\nS2.define('select2/i18n/en',[],function () {\n  // English\n  return {\n    errorLoading: function () {\n      return 'The results could not be loaded.';\n    },\n    inputTooLong: function (args) {\n      var overChars = args.input.length - args.maximum;\n\n      var message = 'Please delete ' + overChars + ' character';\n\n      if (overChars != 1) {\n        message += 's';\n      }\n\n      return message;\n    },\n    inputTooShort: function (args) {\n      var remainingChars = args.minimum - args.input.length;\n\n      var message = 'Please enter ' + remainingChars + ' or more characters';\n\n      return message;\n    },\n    loadingMore: function () {\n      return 'Loading more results\u2026';\n    },\n    maximumSelected: function (args) {\n      var message = 'You can only select ' + args.maximum + ' item';\n\n      if (args.maximum != 1) {\n        message += 's';\n      }\n\n      return message;\n    },\n    noResults: function () {\n      return 'No results found';\n    },\n    searching: function () {\n      return 'Searching\u2026';\n    },\n    removeAllItems: function () {\n      return 'Remove all items';\n    },\n    removeItem: function () {\n      return 'Remove item';\n    },\n    search: function() {\n      return 'Search';\n    }\n  };\n});\n\nS2.define('select2/defaults',[\n  'jquery',\n\n  './results',\n\n  './selection/single',\n  './selection/multiple',\n  './selection/placeholder',\n  './selection/allowClear',\n  './selection/search',\n  './selection/selectionCss',\n  './selection/eventRelay',\n\n  './utils',\n  './translation',\n  './diacritics',\n\n  './data/select',\n  './data/array',\n  './data/ajax',\n  './data/tags',\n  './data/tokenizer',\n  './data/minimumInputLength',\n  './data/maximumInputLength',\n  './data/maximumSelectionLength',\n\n  './dropdown',\n  './dropdown/search',\n  './dropdown/hidePlaceholder',\n  './dropdown/infiniteScroll',\n  './dropdown/attachBody',\n  './dropdown/minimumResultsForSearch',\n  './dropdown/selectOnClose',\n  './dropdown/closeOnSelect',\n  './dropdown/dropdownCss',\n  './dropdown/tagsSearchHighlight',\n\n  './i18n/en'\n], function ($,\n\n             ResultsList,\n\n             SingleSelection, MultipleSelection, Placeholder, AllowClear,\n             SelectionSearch, SelectionCSS, EventRelay,\n\n             Utils, Translation, DIACRITICS,\n\n             SelectData, ArrayData, AjaxData, Tags, Tokenizer,\n             MinimumInputLength, MaximumInputLength, MaximumSelectionLength,\n\n             Dropdown, DropdownSearch, HidePlaceholder, InfiniteScroll,\n             AttachBody, MinimumResultsForSearch, SelectOnClose, CloseOnSelect,\n             DropdownCSS, TagsSearchHighlight,\n\n             EnglishTranslation) {\n  function Defaults () {\n    this.reset();\n  }\n\n  Defaults.prototype.apply = function (options) {\n    options = $.extend(true, {}, this.defaults, options);\n\n    if (options.dataAdapter == null) {\n      if (options.ajax != null) {\n        options.dataAdapter = AjaxData;\n      } else if (options.data != null) {\n        options.dataAdapter = ArrayData;\n      } else {\n        options.dataAdapter = SelectData;\n      }\n\n      if (options.minimumInputLength > 0) {\n        options.dataAdapter = Utils.Decorate(\n          options.dataAdapter,\n          MinimumInputLength\n        );\n      }\n\n      if (options.maximumInputLength > 0) {\n        options.dataAdapter = Utils.Decorate(\n          options.dataAdapter,\n          MaximumInputLength\n        );\n      }\n\n      if (options.maximumSelectionLength > 0) {\n        options.dataAdapter = Utils.Decorate(\n          options.dataAdapter,\n          MaximumSelectionLength\n        );\n      }\n\n      if (options.tags) {\n        options.dataAdapter = Utils.Decorate(options.dataAdapter, Tags);\n      }\n\n      if (options.tokenSeparators != null || options.tokenizer != null) {\n        options.dataAdapter = Utils.Decorate(\n          options.dataAdapter,\n          Tokenizer\n        );\n      }\n    }\n\n    if (options.resultsAdapter == null) {\n      options.resultsAdapter = ResultsList;\n\n      if (options.ajax != null) {\n        options.resultsAdapter = Utils.Decorate(\n          options.resultsAdapter,\n          InfiniteScroll\n        );\n      }\n\n      if (options.placeholder != null) {\n        options.resultsAdapter = Utils.Decorate(\n          options.resultsAdapter,\n          HidePlaceholder\n        );\n      }\n\n      if (options.selectOnClose) {\n        options.resultsAdapter = Utils.Decorate(\n          options.resultsAdapter,\n          SelectOnClose\n        );\n      }\n\n      if (options.tags) {\n        options.resultsAdapter = Utils.Decorate(\n          options.resultsAdapter,\n          TagsSearchHighlight\n        );\n      }\n    }\n\n    if (options.dropdownAdapter == null) {\n      if (options.multiple) {\n        options.dropdownAdapter = Dropdown;\n      } else {\n        var SearchableDropdown = Utils.Decorate(Dropdown, DropdownSearch);\n\n        options.dropdownAdapter = SearchableDropdown;\n      }\n\n      if (options.minimumResultsForSearch !== 0) {\n        options.dropdownAdapter = Utils.Decorate(\n          options.dropdownAdapter,\n          MinimumResultsForSearch\n        );\n      }\n\n      if (options.closeOnSelect) {\n        options.dropdownAdapter = Utils.Decorate(\n          options.dropdownAdapter,\n          CloseOnSelect\n        );\n      }\n\n      if (options.dropdownCssClass != null) {\n        options.dropdownAdapter = Utils.Decorate(\n          options.dropdownAdapter,\n          DropdownCSS\n        );\n      }\n\n      options.dropdownAdapter = Utils.Decorate(\n        options.dropdownAdapter,\n        AttachBody\n      );\n    }\n\n    if (options.selectionAdapter == null) {\n      if (options.multiple) {\n        options.selectionAdapter = MultipleSelection;\n      } else {\n        options.selectionAdapter = SingleSelection;\n      }\n\n      // Add the placeholder mixin if a placeholder was specified\n      if (options.placeholder != null) {\n        options.selectionAdapter = Utils.Decorate(\n          options.selectionAdapter,\n          Placeholder\n        );\n      }\n\n      if (options.allowClear) {\n        options.selectionAdapter = Utils.Decorate(\n          options.selectionAdapter,\n          AllowClear\n        );\n      }\n\n      if (options.multiple) {\n        options.selectionAdapter = Utils.Decorate(\n          options.selectionAdapter,\n          SelectionSearch\n        );\n      }\n\n      if (options.selectionCssClass != null) {\n        options.selectionAdapter = Utils.Decorate(\n          options.selectionAdapter,\n          SelectionCSS\n        );\n      }\n\n      options.selectionAdapter = Utils.Decorate(\n        options.selectionAdapter,\n        EventRelay\n      );\n    }\n\n    // If the defaults were not previously applied from an element, it is\n    // possible for the language option to have not been resolved\n    options.language = this._resolveLanguage(options.language);\n\n    // Always fall back to English since it will always be complete\n    options.language.push('en');\n\n    var uniqueLanguages = [];\n\n    for (var l = 0; l < options.language.length; l++) {\n      var language = options.language[l];\n\n      if (uniqueLanguages.indexOf(language) === -1) {\n        uniqueLanguages.push(language);\n      }\n    }\n\n    options.language = uniqueLanguages;\n\n    options.translations = this._processTranslations(\n      options.language,\n      options.debug\n    );\n\n    return options;\n  };\n\n  Defaults.prototype.reset = function () {\n    function stripDiacritics (text) {\n      // Used 'uni range + named function' from http://jsperf.com/diacritics/18\n      function match(a) {\n        return DIACRITICS[a] || a;\n      }\n\n      return text.replace(/[^\\u0000-\\u007E]/g, match);\n    }\n\n    function matcher (params, data) {\n      // Always return the object if there is nothing to compare\n      if (params.term == null || params.term.trim() === '') {\n        return data;\n      }\n\n      // Do a recursive check for options with children\n      if (data.children && data.children.length > 0) {\n        // Clone the data object if there are children\n        // This is required as we modify the object to remove any non-matches\n        var match = $.extend(true, {}, data);\n\n        // Check each child of the option\n        for (var c = data.children.length - 1; c >= 0; c--) {\n          var child = data.children[c];\n\n          var matches = matcher(params, child);\n\n          // If there wasn't a match, remove the object in the array\n          if (matches == null) {\n            match.children.splice(c, 1);\n          }\n        }\n\n        // If any children matched, return the new object\n        if (match.children.length > 0) {\n          return match;\n        }\n\n        // If there were no matching children, check just the plain object\n        return matcher(params, match);\n      }\n\n      var original = stripDiacritics(data.text).toUpperCase();\n      var term = stripDiacritics(params.term).toUpperCase();\n\n      // Check if the text contains the term\n      if (original.indexOf(term) > -1) {\n        return data;\n      }\n\n      // If it doesn't contain the term, don't return anything\n      return null;\n    }\n\n    this.defaults = {\n      amdLanguageBase: './i18n/',\n      autocomplete: 'off',\n      closeOnSelect: true,\n      debug: false,\n      dropdownAutoWidth: false,\n      escapeMarkup: Utils.escapeMarkup,\n      language: {},\n      matcher: matcher,\n      minimumInputLength: 0,\n      maximumInputLength: 0,\n      maximumSelectionLength: 0,\n      minimumResultsForSearch: 0,\n      selectOnClose: false,\n      scrollAfterSelect: false,\n      sorter: function (data) {\n        return data;\n      },\n      templateResult: function (result) {\n        return result.text;\n      },\n      templateSelection: function (selection) {\n        return selection.text;\n      },\n      theme: 'default',\n      width: 'resolve'\n    };\n  };\n\n  Defaults.prototype.applyFromElement = function (options, $element) {\n    var optionLanguage = options.language;\n    var defaultLanguage = this.defaults.language;\n    var elementLanguage = $element.prop('lang');\n    var parentLanguage = $element.closest('[lang]').prop('lang');\n\n    var languages = Array.prototype.concat.call(\n      this._resolveLanguage(elementLanguage),\n      this._resolveLanguage(optionLanguage),\n      this._resolveLanguage(defaultLanguage),\n      this._resolveLanguage(parentLanguage)\n    );\n\n    options.language = languages;\n\n    return options;\n  };\n\n  Defaults.prototype._resolveLanguage = function (language) {\n    if (!language) {\n      return [];\n    }\n\n    if ($.isEmptyObject(language)) {\n      return [];\n    }\n\n    if ($.isPlainObject(language)) {\n      return [language];\n    }\n\n    var languages;\n\n    if (!Array.isArray(language)) {\n      languages = [language];\n    } else {\n      languages = language;\n    }\n\n    var resolvedLanguages = [];\n\n    for (var l = 0; l < languages.length; l++) {\n      resolvedLanguages.push(languages[l]);\n\n      if (typeof languages[l] === 'string' && languages[l].indexOf('-') > 0) {\n        // Extract the region information if it is included\n        var languageParts = languages[l].split('-');\n        var baseLanguage = languageParts[0];\n\n        resolvedLanguages.push(baseLanguage);\n      }\n    }\n\n    return resolvedLanguages;\n  };\n\n  Defaults.prototype._processTranslations = function (languages, debug) {\n    var translations = new Translation();\n\n    for (var l = 0; l < languages.length; l++) {\n      var languageData = new Translation();\n\n      var language = languages[l];\n\n      if (typeof language === 'string') {\n        try {\n          // Try to load it with the original name\n          languageData = Translation.loadPath(language);\n        } catch (e) {\n          try {\n            // If we couldn't load it, check if it wasn't the full path\n            language = this.defaults.amdLanguageBase + language;\n            languageData = Translation.loadPath(language);\n          } catch (ex) {\n            // The translation could not be loaded at all. Sometimes this is\n            // because of a configuration problem, other times this can be\n            // because of how Select2 helps load all possible translation files\n            if (debug && window.console && console.warn) {\n              console.warn(\n                'Select2: The language file for \"' + language + '\" could ' +\n                'not be automatically loaded. A fallback will be used instead.'\n              );\n            }\n          }\n        }\n      } else if ($.isPlainObject(language)) {\n        languageData = new Translation(language);\n      } else {\n        languageData = language;\n      }\n\n      translations.extend(languageData);\n    }\n\n    return translations;\n  };\n\n  Defaults.prototype.set = function (key, value) {\n    var camelKey = $.camelCase(key);\n\n    var data = {};\n    data[camelKey] = value;\n\n    var convertedData = Utils._convertData(data);\n\n    $.extend(true, this.defaults, convertedData);\n  };\n\n  var defaults = new Defaults();\n\n  return defaults;\n});\n\nS2.define('select2/options',[\n  'jquery',\n  './defaults',\n  './utils'\n], function ($, Defaults, Utils) {\n  function Options (options, $element) {\n    this.options = options;\n\n    if ($element != null) {\n      this.fromElement($element);\n    }\n\n    if ($element != null) {\n      this.options = Defaults.applyFromElement(this.options, $element);\n    }\n\n    this.options = Defaults.apply(this.options);\n  }\n\n  Options.prototype.fromElement = function ($e) {\n    var excludedData = ['select2'];\n\n    if (this.options.multiple == null) {\n      this.options.multiple = $e.prop('multiple');\n    }\n\n    if (this.options.disabled == null) {\n      this.options.disabled = $e.prop('disabled');\n    }\n\n    if (this.options.autocomplete == null && $e.prop('autocomplete')) {\n      this.options.autocomplete = $e.prop('autocomplete');\n    }\n\n    if (this.options.dir == null) {\n      if ($e.prop('dir')) {\n        this.options.dir = $e.prop('dir');\n      } else if ($e.closest('[dir]').prop('dir')) {\n        this.options.dir = $e.closest('[dir]').prop('dir');\n      } else {\n        this.options.dir = 'ltr';\n      }\n    }\n\n    $e.prop('disabled', this.options.disabled);\n    $e.prop('multiple', this.options.multiple);\n\n    if (Utils.GetData($e[0], 'select2Tags')) {\n      if (this.options.debug && window.console && console.warn) {\n        console.warn(\n          'Select2: The `data-select2-tags` attribute has been changed to ' +\n          'use the `data-data` and `data-tags=\"true\"` attributes and will be ' +\n          'removed in future versions of Select2.'\n        );\n      }\n\n      Utils.StoreData($e[0], 'data', Utils.GetData($e[0], 'select2Tags'));\n      Utils.StoreData($e[0], 'tags', true);\n    }\n\n    if (Utils.GetData($e[0], 'ajaxUrl')) {\n      if (this.options.debug && window.console && console.warn) {\n        console.warn(\n          'Select2: The `data-ajax-url` attribute has been changed to ' +\n          '`data-ajax--url` and support for the old attribute will be removed' +\n          ' in future versions of Select2.'\n        );\n      }\n\n      $e.attr('ajax--url', Utils.GetData($e[0], 'ajaxUrl'));\n      Utils.StoreData($e[0], 'ajax-Url', Utils.GetData($e[0], 'ajaxUrl'));\n    }\n\n    var dataset = {};\n\n    function upperCaseLetter(_, letter) {\n      return letter.toUpperCase();\n    }\n\n    // Pre-load all of the attributes which are prefixed with `data-`\n    for (var attr = 0; attr < $e[0].attributes.length; attr++) {\n      var attributeName = $e[0].attributes[attr].name;\n      var prefix = 'data-';\n\n      if (attributeName.substr(0, prefix.length) == prefix) {\n        // Get the contents of the attribute after `data-`\n        var dataName = attributeName.substring(prefix.length);\n\n        // Get the data contents from the consistent source\n        // This is more than likely the jQuery data helper\n        var dataValue = Utils.GetData($e[0], dataName);\n\n        // camelCase the attribute name to match the spec\n        var camelDataName = dataName.replace(/-([a-z])/g, upperCaseLetter);\n\n        // Store the data attribute contents into the dataset since\n        dataset[camelDataName] = dataValue;\n      }\n    }\n\n    // Prefer the element's `dataset` attribute if it exists\n    // jQuery 1.x does not correctly handle data attributes with multiple dashes\n    if ($.fn.jquery && $.fn.jquery.substr(0, 2) == '1.' && $e[0].dataset) {\n      dataset = $.extend(true, {}, $e[0].dataset, dataset);\n    }\n\n    // Prefer our internal data cache if it exists\n    var data = $.extend(true, {}, Utils.GetData($e[0]), dataset);\n\n    data = Utils._convertData(data);\n\n    for (var key in data) {\n      if (excludedData.indexOf(key) > -1) {\n        continue;\n      }\n\n      if ($.isPlainObject(this.options[key])) {\n        $.extend(this.options[key], data[key]);\n      } else {\n        this.options[key] = data[key];\n      }\n    }\n\n    return this;\n  };\n\n  Options.prototype.get = function (key) {\n    return this.options[key];\n  };\n\n  Options.prototype.set = function (key, val) {\n    this.options[key] = val;\n  };\n\n  return Options;\n});\n\nS2.define('select2/core',[\n  'jquery',\n  './options',\n  './utils',\n  './keys'\n], function ($, Options, Utils, KEYS) {\n  var Select2 = function ($element, options) {\n    if (Utils.GetData($element[0], 'select2') != null) {\n      Utils.GetData($element[0], 'select2').destroy();\n    }\n\n    this.$element = $element;\n\n    this.id = this._generateId($element);\n\n    options = options || {};\n\n    this.options = new Options(options, $element);\n\n    Select2.__super__.constructor.call(this);\n\n    // Set up the tabindex\n\n    var tabindex = $element.attr('tabindex') || 0;\n    Utils.StoreData($element[0], 'old-tabindex', tabindex);\n    $element.attr('tabindex', '-1');\n\n    // Set up containers and adapters\n\n    var DataAdapter = this.options.get('dataAdapter');\n    this.dataAdapter = new DataAdapter($element, this.options);\n\n    var $container = this.render();\n\n    this._placeContainer($container);\n\n    var SelectionAdapter = this.options.get('selectionAdapter');\n    this.selection = new SelectionAdapter($element, this.options);\n    this.$selection = this.selection.render();\n\n    this.selection.position(this.$selection, $container);\n\n    var DropdownAdapter = this.options.get('dropdownAdapter');\n    this.dropdown = new DropdownAdapter($element, this.options);\n    this.$dropdown = this.dropdown.render();\n\n    this.dropdown.position(this.$dropdown, $container);\n\n    var ResultsAdapter = this.options.get('resultsAdapter');\n    this.results = new ResultsAdapter($element, this.options, this.dataAdapter);\n    this.$results = this.results.render();\n\n    this.results.position(this.$results, this.$dropdown);\n\n    // Bind events\n\n    var self = this;\n\n    // Bind the container to all of the adapters\n    this._bindAdapters();\n\n    // Register any DOM event handlers\n    this._registerDomEvents();\n\n    // Register any internal event handlers\n    this._registerDataEvents();\n    this._registerSelectionEvents();\n    this._registerDropdownEvents();\n    this._registerResultsEvents();\n    this._registerEvents();\n\n    // Set the initial state\n    this.dataAdapter.current(function (initialData) {\n      self.trigger('selection:update', {\n        data: initialData\n      });\n    });\n\n    // Hide the original select\n    $element[0].classList.add('select2-hidden-accessible');\n    $element.attr('aria-hidden', 'true');\n\n    // Synchronize any monitored attributes\n    this._syncAttributes();\n\n    Utils.StoreData($element[0], 'select2', this);\n\n    // Ensure backwards compatibility with $element.data('select2').\n    $element.data('select2', this);\n  };\n\n  Utils.Extend(Select2, Utils.Observable);\n\n  Select2.prototype._generateId = function ($element) {\n    var id = '';\n\n    if ($element.attr('id') != null) {\n      id = $element.attr('id');\n    } else if ($element.attr('name') != null) {\n      id = $element.attr('name') + '-' + Utils.generateChars(2);\n    } else {\n      id = Utils.generateChars(4);\n    }\n\n    id = id.replace(/(:|\\.|\\[|\\]|,)/g, '');\n    id = 'select2-' + id;\n\n    return id;\n  };\n\n  Select2.prototype._placeContainer = function ($container) {\n    $container.insertAfter(this.$element);\n\n    var width = this._resolveWidth(this.$element, this.options.get('width'));\n\n    if (width != null) {\n      $container.css('width', width);\n    }\n  };\n\n  Select2.prototype._resolveWidth = function ($element, method) {\n    var WIDTH = /^width:(([-+]?([0-9]*\\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;\n\n    if (method == 'resolve') {\n      var styleWidth = this._resolveWidth($element, 'style');\n\n      if (styleWidth != null) {\n        return styleWidth;\n      }\n\n      return this._resolveWidth($element, 'element');\n    }\n\n    if (method == 'element') {\n      var elementWidth = $element.outerWidth(false);\n\n      if (elementWidth <= 0) {\n        return 'auto';\n      }\n\n      return elementWidth + 'px';\n    }\n\n    if (method == 'style') {\n      var style = $element.attr('style');\n\n      if (typeof(style) !== 'string') {\n        return null;\n      }\n\n      var attrs = style.split(';');\n\n      for (var i = 0, l = attrs.length; i < l; i = i + 1) {\n        var attr = attrs[i].replace(/\\s/g, '');\n        var matches = attr.match(WIDTH);\n\n        if (matches !== null && matches.length >= 1) {\n          return matches[1];\n        }\n      }\n\n      return null;\n    }\n\n    if (method == 'computedstyle') {\n      var computedStyle = window.getComputedStyle($element[0]);\n\n      return computedStyle.width;\n    }\n\n    return method;\n  };\n\n  Select2.prototype._bindAdapters = function () {\n    this.dataAdapter.bind(this, this.$container);\n    this.selection.bind(this, this.$container);\n\n    this.dropdown.bind(this, this.$container);\n    this.results.bind(this, this.$container);\n  };\n\n  Select2.prototype._registerDomEvents = function () {\n    var self = this;\n\n    this.$element.on('change.select2', function () {\n      self.dataAdapter.current(function (data) {\n        self.trigger('selection:update', {\n          data: data\n        });\n      });\n    });\n\n    this.$element.on('focus.select2', function (evt) {\n      self.trigger('focus', evt);\n    });\n\n    this._syncA = Utils.bind(this._syncAttributes, this);\n    this._syncS = Utils.bind(this._syncSubtree, this);\n\n    this._observer = new window.MutationObserver(function (mutations) {\n      self._syncA();\n      self._syncS(mutations);\n    });\n    this._observer.observe(this.$element[0], {\n      attributes: true,\n      childList: true,\n      subtree: false\n    });\n  };\n\n  Select2.prototype._registerDataEvents = function () {\n    var self = this;\n\n    this.dataAdapter.on('*', function (name, params) {\n      self.trigger(name, params);\n    });\n  };\n\n  Select2.prototype._registerSelectionEvents = function () {\n    var self = this;\n    var nonRelayEvents = ['toggle', 'focus'];\n\n    this.selection.on('toggle', function () {\n      self.toggleDropdown();\n    });\n\n    this.selection.on('focus', function (params) {\n      self.focus(params);\n    });\n\n    this.selection.on('*', function (name, params) {\n      if (nonRelayEvents.indexOf(name) !== -1) {\n        return;\n      }\n\n      self.trigger(name, params);\n    });\n  };\n\n  Select2.prototype._registerDropdownEvents = function () {\n    var self = this;\n\n    this.dropdown.on('*', function (name, params) {\n      self.trigger(name, params);\n    });\n  };\n\n  Select2.prototype._registerResultsEvents = function () {\n    var self = this;\n\n    this.results.on('*', function (name, params) {\n      self.trigger(name, params);\n    });\n  };\n\n  Select2.prototype._registerEvents = function () {\n    var self = this;\n\n    this.on('open', function () {\n      self.$container[0].classList.add('select2-container--open');\n    });\n\n    this.on('close', function () {\n      self.$container[0].classList.remove('select2-container--open');\n    });\n\n    this.on('enable', function () {\n      self.$container[0].classList.remove('select2-container--disabled');\n    });\n\n    this.on('disable', function () {\n      self.$container[0].classList.add('select2-container--disabled');\n    });\n\n    this.on('blur', function () {\n      self.$container[0].classList.remove('select2-container--focus');\n    });\n\n    this.on('query', function (params) {\n      if (!self.isOpen()) {\n        self.trigger('open', {});\n      }\n\n      this.dataAdapter.query(params, function (data) {\n        self.trigger('results:all', {\n          data: data,\n          query: params\n        });\n      });\n    });\n\n    this.on('query:append', function (params) {\n      this.dataAdapter.query(params, function (data) {\n        self.trigger('results:append', {\n          data: data,\n          query: params\n        });\n      });\n    });\n\n    this.on('keypress', function (evt) {\n      var key = evt.which;\n\n      if (self.isOpen()) {\n        if (key === KEYS.ESC || (key === KEYS.UP && evt.altKey)) {\n          self.close(evt);\n\n          evt.preventDefault();\n        } else if (key === KEYS.ENTER || key === KEYS.TAB) {\n          self.trigger('results:select', {});\n\n          evt.preventDefault();\n        } else if ((key === KEYS.SPACE && evt.ctrlKey)) {\n          self.trigger('results:toggle', {});\n\n          evt.preventDefault();\n        } else if (key === KEYS.UP) {\n          self.trigger('results:previous', {});\n\n          evt.preventDefault();\n        } else if (key === KEYS.DOWN) {\n          self.trigger('results:next', {});\n\n          evt.preventDefault();\n        }\n      } else {\n        if (key === KEYS.ENTER || key === KEYS.SPACE ||\n            (key === KEYS.DOWN && evt.altKey)) {\n          self.open();\n\n          evt.preventDefault();\n        }\n      }\n    });\n  };\n\n  Select2.prototype._syncAttributes = function () {\n    this.options.set('disabled', this.$element.prop('disabled'));\n\n    if (this.isDisabled()) {\n      if (this.isOpen()) {\n        this.close();\n      }\n\n      this.trigger('disable', {});\n    } else {\n      this.trigger('enable', {});\n    }\n  };\n\n  Select2.prototype._isChangeMutation = function (mutations) {\n    var self = this;\n\n    if (mutations.addedNodes && mutations.addedNodes.length > 0) {\n      for (var n = 0; n < mutations.addedNodes.length; n++) {\n        var node = mutations.addedNodes[n];\n\n        if (node.selected) {\n          return true;\n        }\n      }\n    } else if (mutations.removedNodes && mutations.removedNodes.length > 0) {\n      return true;\n    } else if (Array.isArray(mutations)) {\n      return mutations.some(function (mutation) {\n        return self._isChangeMutation(mutation);\n      });\n    }\n\n    return false;\n  };\n\n  Select2.prototype._syncSubtree = function (mutations) {\n    var changed = this._isChangeMutation(mutations);\n    var self = this;\n\n    // Only re-pull the data if we think there is a change\n    if (changed) {\n      this.dataAdapter.current(function (currentData) {\n        self.trigger('selection:update', {\n          data: currentData\n        });\n      });\n    }\n  };\n\n  /**\n   * Override the trigger method to automatically trigger pre-events when\n   * there are events that can be prevented.\n   */\n  Select2.prototype.trigger = function (name, args) {\n    var actualTrigger = Select2.__super__.trigger;\n    var preTriggerMap = {\n      'open': 'opening',\n      'close': 'closing',\n      'select': 'selecting',\n      'unselect': 'unselecting',\n      'clear': 'clearing'\n    };\n\n    if (args === undefined) {\n      args = {};\n    }\n\n    if (name in preTriggerMap) {\n      var preTriggerName = preTriggerMap[name];\n      var preTriggerArgs = {\n        prevented: false,\n        name: name,\n        args: args\n      };\n\n      actualTrigger.call(this, preTriggerName, preTriggerArgs);\n\n      if (preTriggerArgs.prevented) {\n        args.prevented = true;\n\n        return;\n      }\n    }\n\n    actualTrigger.call(this, name, args);\n  };\n\n  Select2.prototype.toggleDropdown = function () {\n    if (this.isDisabled()) {\n      return;\n    }\n\n    if (this.isOpen()) {\n      this.close();\n    } else {\n      this.open();\n    }\n  };\n\n  Select2.prototype.open = function () {\n    if (this.isOpen()) {\n      return;\n    }\n\n    if (this.isDisabled()) {\n      return;\n    }\n\n    this.trigger('query', {});\n  };\n\n  Select2.prototype.close = function (evt) {\n    if (!this.isOpen()) {\n      return;\n    }\n\n    this.trigger('close', { originalEvent : evt });\n  };\n\n  /**\n   * Helper method to abstract the \"enabled\" (not \"disabled\") state of this\n   * object.\n   *\n   * @return {true} if the instance is not disabled.\n   * @return {false} if the instance is disabled.\n   */\n  Select2.prototype.isEnabled = function () {\n    return !this.isDisabled();\n  };\n\n  /**\n   * Helper method to abstract the \"disabled\" state of this object.\n   *\n   * @return {true} if the disabled option is true.\n   * @return {false} if the disabled option is false.\n   */\n  Select2.prototype.isDisabled = function () {\n    return this.options.get('disabled');\n  };\n\n  Select2.prototype.isOpen = function () {\n    return this.$container[0].classList.contains('select2-container--open');\n  };\n\n  Select2.prototype.hasFocus = function () {\n    return this.$container[0].classList.contains('select2-container--focus');\n  };\n\n  Select2.prototype.focus = function (data) {\n    // No need to re-trigger focus events if we are already focused\n    if (this.hasFocus()) {\n      return;\n    }\n\n    this.$container[0].classList.add('select2-container--focus');\n    this.trigger('focus', {});\n  };\n\n  Select2.prototype.enable = function (args) {\n    if (this.options.get('debug') && window.console && console.warn) {\n      console.warn(\n        'Select2: The `select2(\"enable\")` method has been deprecated and will' +\n        ' be removed in later Select2 versions. Use $element.prop(\"disabled\")' +\n        ' instead.'\n      );\n    }\n\n    if (args == null || args.length === 0) {\n      args = [true];\n    }\n\n    var disabled = !args[0];\n\n    this.$element.prop('disabled', disabled);\n  };\n\n  Select2.prototype.data = function () {\n    if (this.options.get('debug') &&\n        arguments.length > 0 && window.console && console.warn) {\n      console.warn(\n        'Select2: Data can no longer be set using `select2(\"data\")`. You ' +\n        'should consider setting the value instead using `$element.val()`.'\n      );\n    }\n\n    var data = [];\n\n    this.dataAdapter.current(function (currentData) {\n      data = currentData;\n    });\n\n    return data;\n  };\n\n  Select2.prototype.val = function (args) {\n    if (this.options.get('debug') && window.console && console.warn) {\n      console.warn(\n        'Select2: The `select2(\"val\")` method has been deprecated and will be' +\n        ' removed in later Select2 versions. Use $element.val() instead.'\n      );\n    }\n\n    if (args == null || args.length === 0) {\n      return this.$element.val();\n    }\n\n    var newVal = args[0];\n\n    if (Array.isArray(newVal)) {\n      newVal = newVal.map(function (obj) {\n        return obj.toString();\n      });\n    }\n\n    this.$element.val(newVal).trigger('input').trigger('change');\n  };\n\n  Select2.prototype.destroy = function () {\n    Utils.RemoveData(this.$container[0]);\n    this.$container.remove();\n\n    this._observer.disconnect();\n    this._observer = null;\n\n    this._syncA = null;\n    this._syncS = null;\n\n    this.$element.off('.select2');\n    this.$element.attr('tabindex',\n    Utils.GetData(this.$element[0], 'old-tabindex'));\n\n    this.$element[0].classList.remove('select2-hidden-accessible');\n    this.$element.attr('aria-hidden', 'false');\n    Utils.RemoveData(this.$element[0]);\n    this.$element.removeData('select2');\n\n    this.dataAdapter.destroy();\n    this.selection.destroy();\n    this.dropdown.destroy();\n    this.results.destroy();\n\n    this.dataAdapter = null;\n    this.selection = null;\n    this.dropdown = null;\n    this.results = null;\n  };\n\n  Select2.prototype.render = function () {\n    var $container = $(\n      '<span class=\"select2 select2-container\">' +\n        '<span class=\"selection\"></span>' +\n        '<span class=\"dropdown-wrapper\" aria-hidden=\"true\"></span>' +\n      '</span>'\n    );\n\n    $container.attr('dir', this.options.get('dir'));\n\n    this.$container = $container;\n\n    this.$container[0].classList\n      .add('select2-container--' + this.options.get('theme'));\n\n    Utils.StoreData($container[0], 'element', this.$element);\n\n    return $container;\n  };\n\n  return Select2;\n});\n\nS2.define('jquery-mousewheel',[\n  'jquery'\n], function ($) {\n  // Used to shim jQuery.mousewheel for non-full builds.\n  return $;\n});\n\nS2.define('jquery.select2',[\n  'jquery',\n  'jquery-mousewheel',\n\n  './select2/core',\n  './select2/defaults',\n  './select2/utils'\n], function ($, _, Select2, Defaults, Utils) {\n  if ($.fn.select2 == null) {\n    // All methods that should return the element\n    var thisMethods = ['open', 'close', 'destroy'];\n\n    $.fn.select2 = function (options) {\n      options = options || {};\n\n      if (typeof options === 'object') {\n        this.each(function () {\n          var instanceOptions = $.extend(true, {}, options);\n\n          var instance = new Select2($(this), instanceOptions);\n        });\n\n        return this;\n      } else if (typeof options === 'string') {\n        var ret;\n        var args = Array.prototype.slice.call(arguments, 1);\n\n        this.each(function () {\n          var instance = Utils.GetData(this, 'select2');\n\n          if (instance == null && window.console && console.error) {\n            console.error(\n              'The select2(\\'' + options + '\\') method was called on an ' +\n              'element that is not using Select2.'\n            );\n          }\n\n          ret = instance[options].apply(instance, args);\n        });\n\n        // Check if we should be returning `this`\n        if (thisMethods.indexOf(options) > -1) {\n          return this;\n        }\n\n        return ret;\n      } else {\n        throw new Error('Invalid arguments for Select2: ' + options);\n      }\n    };\n  }\n\n  if ($.fn.select2.defaults == null) {\n    $.fn.select2.defaults = Defaults;\n  }\n\n  return Select2;\n});\n\n  // Return the AMD loader configuration so it can be used outside of this file\n  return {\n    define: S2.define,\n    require: S2.require\n  };\n}());\n\n  // Autoload the jQuery bindings\n  // We know that all of the modules exist above this, so we're safe\n  var select2 = S2.require('jquery.select2');\n\n  // Hold the AMD module references on the jQuery function that was just loaded\n  // This allows Select2 to use the internal loader outside of this file, such\n  // as in the language files.\n  jQuery.fn.select2.amd = S2;\n\n  // Return the Select2 instance for anyone who is importing it.\n  return select2;\n}));\n", "/*!\n * Chart.js v3.9.1\n * https://www.chartjs.org\n * (c) 2022 Chart.js Contributors\n * Released under the MIT License\n */\n!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).Chart=e()}(this,(function(){\"use strict\";function t(){}const e=function(){let t=0;return function(){return t++}}();function i(t){return null==t}function s(t){if(Array.isArray&&Array.isArray(t))return!0;const e=Object.prototype.toString.call(t);return\"[object\"===e.slice(0,7)&&\"Array]\"===e.slice(-6)}function n(t){return null!==t&&\"[object Object]\"===Object.prototype.toString.call(t)}const o=t=>(\"number\"==typeof t||t instanceof Number)&&isFinite(+t);function a(t,e){return o(t)?t:e}function r(t,e){return void 0===t?e:t}const l=(t,e)=>\"string\"==typeof t&&t.endsWith(\"%\")?parseFloat(t)/100:t/e,h=(t,e)=>\"string\"==typeof t&&t.endsWith(\"%\")?parseFloat(t)/100*e:+t;function c(t,e,i){if(t&&\"function\"==typeof t.call)return t.apply(i,e)}function d(t,e,i,o){let a,r,l;if(s(t))if(r=t.length,o)for(a=r-1;a>=0;a--)e.call(i,t[a],a);else for(a=0;a<r;a++)e.call(i,t[a],a);else if(n(t))for(l=Object.keys(t),r=l.length,a=0;a<r;a++)e.call(i,t[l[a]],l[a])}function u(t,e){let i,s,n,o;if(!t||!e||t.length!==e.length)return!1;for(i=0,s=t.length;i<s;++i)if(n=t[i],o=e[i],n.datasetIndex!==o.datasetIndex||n.index!==o.index)return!1;return!0}function f(t){if(s(t))return t.map(f);if(n(t)){const e=Object.create(null),i=Object.keys(t),s=i.length;let n=0;for(;n<s;++n)e[i[n]]=f(t[i[n]]);return e}return t}function g(t){return-1===[\"__proto__\",\"prototype\",\"constructor\"].indexOf(t)}function p(t,e,i,s){if(!g(t))return;const o=e[t],a=i[t];n(o)&&n(a)?m(o,a,s):e[t]=f(a)}function m(t,e,i){const o=s(e)?e:[e],a=o.length;if(!n(t))return t;const r=(i=i||{}).merger||p;for(let s=0;s<a;++s){if(!n(e=o[s]))continue;const a=Object.keys(e);for(let s=0,n=a.length;s<n;++s)r(a[s],t,e,i)}return t}function b(t,e){return m(t,e,{merger:x})}function x(t,e,i){if(!g(t))return;const s=e[t],o=i[t];n(s)&&n(o)?b(s,o):Object.prototype.hasOwnProperty.call(e,t)||(e[t]=f(o))}const _={\"\":t=>t,x:t=>t.x,y:t=>t.y};function y(t,e){const i=_[e]||(_[e]=function(t){const e=v(t);return t=>{for(const i of e){if(\"\"===i)break;t=t&&t[i]}return t}}(e));return i(t)}function v(t){const e=t.split(\".\"),i=[];let s=\"\";for(const t of e)s+=t,s.endsWith(\"\\\\\")?s=s.slice(0,-1)+\".\":(i.push(s),s=\"\");return i}function w(t){return t.charAt(0).toUpperCase()+t.slice(1)}const M=t=>void 0!==t,k=t=>\"function\"==typeof t,S=(t,e)=>{if(t.size!==e.size)return!1;for(const i of t)if(!e.has(i))return!1;return!0};function P(t){return\"mouseup\"===t.type||\"click\"===t.type||\"contextmenu\"===t.type}const D=Math.PI,O=2*D,C=O+D,A=Number.POSITIVE_INFINITY,T=D/180,L=D/2,E=D/4,R=2*D/3,I=Math.log10,z=Math.sign;function F(t){const e=Math.round(t);t=N(t,e,t/1e3)?e:t;const i=Math.pow(10,Math.floor(I(t))),s=t/i;return(s<=1?1:s<=2?2:s<=5?5:10)*i}function V(t){const e=[],i=Math.sqrt(t);let s;for(s=1;s<i;s++)t%s==0&&(e.push(s),e.push(t/s));return i===(0|i)&&e.push(i),e.sort(((t,e)=>t-e)).pop(),e}function B(t){return!isNaN(parseFloat(t))&&isFinite(t)}function N(t,e,i){return Math.abs(t-e)<i}function W(t,e){const i=Math.round(t);return i-e<=t&&i+e>=t}function j(t,e,i){let s,n,o;for(s=0,n=t.length;s<n;s++)o=t[s][i],isNaN(o)||(e.min=Math.min(e.min,o),e.max=Math.max(e.max,o))}function H(t){return t*(D/180)}function $(t){return t*(180/D)}function Y(t){if(!o(t))return;let e=1,i=0;for(;Math.round(t*e)/e!==t;)e*=10,i++;return i}function U(t,e){const i=e.x-t.x,s=e.y-t.y,n=Math.sqrt(i*i+s*s);let o=Math.atan2(s,i);return o<-.5*D&&(o+=O),{angle:o,distance:n}}function X(t,e){return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))}function q(t,e){return(t-e+C)%O-D}function K(t){return(t%O+O)%O}function G(t,e,i,s){const n=K(t),o=K(e),a=K(i),r=K(o-n),l=K(a-n),h=K(n-o),c=K(n-a);return n===o||n===a||s&&o===a||r>l&&h<c}function Z(t,e,i){return Math.max(e,Math.min(i,t))}function J(t){return Z(t,-32768,32767)}function Q(t,e,i,s=1e-6){return t>=Math.min(e,i)-s&&t<=Math.max(e,i)+s}function tt(t,e,i){i=i||(i=>t[i]<e);let s,n=t.length-1,o=0;for(;n-o>1;)s=o+n>>1,i(s)?o=s:n=s;return{lo:o,hi:n}}const et=(t,e,i,s)=>tt(t,i,s?s=>t[s][e]<=i:s=>t[s][e]<i),it=(t,e,i)=>tt(t,i,(s=>t[s][e]>=i));function st(t,e,i){let s=0,n=t.length;for(;s<n&&t[s]<e;)s++;for(;n>s&&t[n-1]>i;)n--;return s>0||n<t.length?t.slice(s,n):t}const nt=[\"push\",\"pop\",\"shift\",\"splice\",\"unshift\"];function ot(t,e){t._chartjs?t._chartjs.listeners.push(e):(Object.defineProperty(t,\"_chartjs\",{configurable:!0,enumerable:!1,value:{listeners:[e]}}),nt.forEach((e=>{const i=\"_onData\"+w(e),s=t[e];Object.defineProperty(t,e,{configurable:!0,enumerable:!1,value(...e){const n=s.apply(this,e);return t._chartjs.listeners.forEach((t=>{\"function\"==typeof t[i]&&t[i](...e)})),n}})})))}function at(t,e){const i=t._chartjs;if(!i)return;const s=i.listeners,n=s.indexOf(e);-1!==n&&s.splice(n,1),s.length>0||(nt.forEach((e=>{delete t[e]})),delete t._chartjs)}function rt(t){const e=new Set;let i,s;for(i=0,s=t.length;i<s;++i)e.add(t[i]);return e.size===s?t:Array.from(e)}const lt=\"undefined\"==typeof window?function(t){return t()}:window.requestAnimationFrame;function ht(t,e,i){const s=i||(t=>Array.prototype.slice.call(t));let n=!1,o=[];return function(...i){o=s(i),n||(n=!0,lt.call(window,(()=>{n=!1,t.apply(e,o)})))}}function ct(t,e){let i;return function(...s){return e?(clearTimeout(i),i=setTimeout(t,e,s)):t.apply(this,s),e}}const dt=t=>\"start\"===t?\"left\":\"end\"===t?\"right\":\"center\",ut=(t,e,i)=>\"start\"===t?e:\"end\"===t?i:(e+i)/2,ft=(t,e,i,s)=>t===(s?\"left\":\"right\")?i:\"center\"===t?(e+i)/2:e;function gt(t,e,i){const s=e.length;let n=0,o=s;if(t._sorted){const{iScale:a,_parsed:r}=t,l=a.axis,{min:h,max:c,minDefined:d,maxDefined:u}=a.getUserBounds();d&&(n=Z(Math.min(et(r,a.axis,h).lo,i?s:et(e,l,a.getPixelForValue(h)).lo),0,s-1)),o=u?Z(Math.max(et(r,a.axis,c,!0).hi+1,i?0:et(e,l,a.getPixelForValue(c),!0).hi+1),n,s)-n:s-n}return{start:n,count:o}}function pt(t){const{xScale:e,yScale:i,_scaleRanges:s}=t,n={xmin:e.min,xmax:e.max,ymin:i.min,ymax:i.max};if(!s)return t._scaleRanges=n,!0;const o=s.xmin!==e.min||s.xmax!==e.max||s.ymin!==i.min||s.ymax!==i.max;return Object.assign(s,n),o}var mt=new class{constructor(){this._request=null,this._charts=new Map,this._running=!1,this._lastDate=void 0}_notify(t,e,i,s){const n=e.listeners[s],o=e.duration;n.forEach((s=>s({chart:t,initial:e.initial,numSteps:o,currentStep:Math.min(i-e.start,o)})))}_refresh(){this._request||(this._running=!0,this._request=lt.call(window,(()=>{this._update(),this._request=null,this._running&&this._refresh()})))}_update(t=Date.now()){let e=0;this._charts.forEach(((i,s)=>{if(!i.running||!i.items.length)return;const n=i.items;let o,a=n.length-1,r=!1;for(;a>=0;--a)o=n[a],o._active?(o._total>i.duration&&(i.duration=o._total),o.tick(t),r=!0):(n[a]=n[n.length-1],n.pop());r&&(s.draw(),this._notify(s,i,t,\"progress\")),n.length||(i.running=!1,this._notify(s,i,t,\"complete\"),i.initial=!1),e+=n.length})),this._lastDate=t,0===e&&(this._running=!1)}_getAnims(t){const e=this._charts;let i=e.get(t);return i||(i={running:!1,initial:!0,items:[],listeners:{complete:[],progress:[]}},e.set(t,i)),i}listen(t,e,i){this._getAnims(t).listeners[e].push(i)}add(t,e){e&&e.length&&this._getAnims(t).items.push(...e)}has(t){return this._getAnims(t).items.length>0}start(t){const e=this._charts.get(t);e&&(e.running=!0,e.start=Date.now(),e.duration=e.items.reduce(((t,e)=>Math.max(t,e._duration)),0),this._refresh())}running(t){if(!this._running)return!1;const e=this._charts.get(t);return!!(e&&e.running&&e.items.length)}stop(t){const e=this._charts.get(t);if(!e||!e.items.length)return;const i=e.items;let s=i.length-1;for(;s>=0;--s)i[s].cancel();e.items=[],this._notify(t,e,Date.now(),\"complete\")}remove(t){return this._charts.delete(t)}};\n/*!\n * @kurkle/color v0.2.1\n * https://github.com/kurkle/color#readme\n * (c) 2022 Jukka Kurkela\n * Released under the MIT License\n */function bt(t){return t+.5|0}const xt=(t,e,i)=>Math.max(Math.min(t,i),e);function _t(t){return xt(bt(2.55*t),0,255)}function yt(t){return xt(bt(255*t),0,255)}function vt(t){return xt(bt(t/2.55)/100,0,1)}function wt(t){return xt(bt(100*t),0,100)}const Mt={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15},kt=[...\"0123456789ABCDEF\"],St=t=>kt[15&t],Pt=t=>kt[(240&t)>>4]+kt[15&t],Dt=t=>(240&t)>>4==(15&t);function Ot(t){var e=(t=>Dt(t.r)&&Dt(t.g)&&Dt(t.b)&&Dt(t.a))(t)?St:Pt;return t?\"#\"+e(t.r)+e(t.g)+e(t.b)+((t,e)=>t<255?e(t):\"\")(t.a,e):void 0}const Ct=/^(hsla?|hwb|hsv)\\(\\s*([-+.e\\d]+)(?:deg)?[\\s,]+([-+.e\\d]+)%[\\s,]+([-+.e\\d]+)%(?:[\\s,]+([-+.e\\d]+)(%)?)?\\s*\\)$/;function At(t,e,i){const s=e*Math.min(i,1-i),n=(e,n=(e+t/30)%12)=>i-s*Math.max(Math.min(n-3,9-n,1),-1);return[n(0),n(8),n(4)]}function Tt(t,e,i){const s=(s,n=(s+t/60)%6)=>i-i*e*Math.max(Math.min(n,4-n,1),0);return[s(5),s(3),s(1)]}function Lt(t,e,i){const s=At(t,1,.5);let n;for(e+i>1&&(n=1/(e+i),e*=n,i*=n),n=0;n<3;n++)s[n]*=1-e-i,s[n]+=e;return s}function Et(t){const e=t.r/255,i=t.g/255,s=t.b/255,n=Math.max(e,i,s),o=Math.min(e,i,s),a=(n+o)/2;let r,l,h;return n!==o&&(h=n-o,l=a>.5?h/(2-n-o):h/(n+o),r=function(t,e,i,s,n){return t===n?(e-i)/s+(e<i?6:0):e===n?(i-t)/s+2:(t-e)/s+4}(e,i,s,h,n),r=60*r+.5),[0|r,l||0,a]}function Rt(t,e,i,s){return(Array.isArray(e)?t(e[0],e[1],e[2]):t(e,i,s)).map(yt)}function It(t,e,i){return Rt(At,t,e,i)}function zt(t){return(t%360+360)%360}function Ft(t){const e=Ct.exec(t);let i,s=255;if(!e)return;e[5]!==i&&(s=e[6]?_t(+e[5]):yt(+e[5]));const n=zt(+e[2]),o=+e[3]/100,a=+e[4]/100;return i=\"hwb\"===e[1]?function(t,e,i){return Rt(Lt,t,e,i)}(n,o,a):\"hsv\"===e[1]?function(t,e,i){return Rt(Tt,t,e,i)}(n,o,a):It(n,o,a),{r:i[0],g:i[1],b:i[2],a:s}}const Vt={x:\"dark\",Z:\"light\",Y:\"re\",X:\"blu\",W:\"gr\",V:\"medium\",U:\"slate\",A:\"ee\",T:\"ol\",S:\"or\",B:\"ra\",C:\"lateg\",D:\"ights\",R:\"in\",Q:\"turquois\",E:\"hi\",P:\"ro\",O:\"al\",N:\"le\",M:\"de\",L:\"yello\",F:\"en\",K:\"ch\",G:\"arks\",H:\"ea\",I:\"ightg\",J:\"wh\"},Bt={OiceXe:\"f0f8ff\",antiquewEte:\"faebd7\",aqua:\"ffff\",aquamarRe:\"7fffd4\",azuY:\"f0ffff\",beige:\"f5f5dc\",bisque:\"ffe4c4\",black:\"0\",blanKedOmond:\"ffebcd\",Xe:\"ff\",XeviTet:\"8a2be2\",bPwn:\"a52a2a\",burlywood:\"deb887\",caMtXe:\"5f9ea0\",KartYuse:\"7fff00\",KocTate:\"d2691e\",cSO:\"ff7f50\",cSnflowerXe:\"6495ed\",cSnsilk:\"fff8dc\",crimson:\"dc143c\",cyan:\"ffff\",xXe:\"8b\",xcyan:\"8b8b\",xgTMnPd:\"b8860b\",xWay:\"a9a9a9\",xgYF:\"6400\",xgYy:\"a9a9a9\",xkhaki:\"bdb76b\",xmagFta:\"8b008b\",xTivegYF:\"556b2f\",xSange:\"ff8c00\",xScEd:\"9932cc\",xYd:\"8b0000\",xsOmon:\"e9967a\",xsHgYF:\"8fbc8f\",xUXe:\"483d8b\",xUWay:\"2f4f4f\",xUgYy:\"2f4f4f\",xQe:\"ced1\",xviTet:\"9400d3\",dAppRk:\"ff1493\",dApskyXe:\"bfff\",dimWay:\"696969\",dimgYy:\"696969\",dodgerXe:\"1e90ff\",fiYbrick:\"b22222\",flSOwEte:\"fffaf0\",foYstWAn:\"228b22\",fuKsia:\"ff00ff\",gaRsbSo:\"dcdcdc\",ghostwEte:\"f8f8ff\",gTd:\"ffd700\",gTMnPd:\"daa520\",Way:\"808080\",gYF:\"8000\",gYFLw:\"adff2f\",gYy:\"808080\",honeyMw:\"f0fff0\",hotpRk:\"ff69b4\",RdianYd:\"cd5c5c\",Rdigo:\"4b0082\",ivSy:\"fffff0\",khaki:\"f0e68c\",lavFMr:\"e6e6fa\",lavFMrXsh:\"fff0f5\",lawngYF:\"7cfc00\",NmoncEffon:\"fffacd\",ZXe:\"add8e6\",ZcSO:\"f08080\",Zcyan:\"e0ffff\",ZgTMnPdLw:\"fafad2\",ZWay:\"d3d3d3\",ZgYF:\"90ee90\",ZgYy:\"d3d3d3\",ZpRk:\"ffb6c1\",ZsOmon:\"ffa07a\",ZsHgYF:\"20b2aa\",ZskyXe:\"87cefa\",ZUWay:\"778899\",ZUgYy:\"778899\",ZstAlXe:\"b0c4de\",ZLw:\"ffffe0\",lime:\"ff00\",limegYF:\"32cd32\",lRF:\"faf0e6\",magFta:\"ff00ff\",maPon:\"800000\",VaquamarRe:\"66cdaa\",VXe:\"cd\",VScEd:\"ba55d3\",VpurpN:\"9370db\",VsHgYF:\"3cb371\",VUXe:\"7b68ee\",VsprRggYF:\"fa9a\",VQe:\"48d1cc\",VviTetYd:\"c71585\",midnightXe:\"191970\",mRtcYam:\"f5fffa\",mistyPse:\"ffe4e1\",moccasR:\"ffe4b5\",navajowEte:\"ffdead\",navy:\"80\",Tdlace:\"fdf5e6\",Tive:\"808000\",TivedBb:\"6b8e23\",Sange:\"ffa500\",SangeYd:\"ff4500\",ScEd:\"da70d6\",pOegTMnPd:\"eee8aa\",pOegYF:\"98fb98\",pOeQe:\"afeeee\",pOeviTetYd:\"db7093\",papayawEp:\"ffefd5\",pHKpuff:\"ffdab9\",peru:\"cd853f\",pRk:\"ffc0cb\",plum:\"dda0dd\",powMrXe:\"b0e0e6\",purpN:\"800080\",YbeccapurpN:\"663399\",Yd:\"ff0000\",Psybrown:\"bc8f8f\",PyOXe:\"4169e1\",saddNbPwn:\"8b4513\",sOmon:\"fa8072\",sandybPwn:\"f4a460\",sHgYF:\"2e8b57\",sHshell:\"fff5ee\",siFna:\"a0522d\",silver:\"c0c0c0\",skyXe:\"87ceeb\",UXe:\"6a5acd\",UWay:\"708090\",UgYy:\"708090\",snow:\"fffafa\",sprRggYF:\"ff7f\",stAlXe:\"4682b4\",tan:\"d2b48c\",teO:\"8080\",tEstN:\"d8bfd8\",tomato:\"ff6347\",Qe:\"40e0d0\",viTet:\"ee82ee\",JHt:\"f5deb3\",wEte:\"ffffff\",wEtesmoke:\"f5f5f5\",Lw:\"ffff00\",LwgYF:\"9acd32\"};let Nt;function Wt(t){Nt||(Nt=function(){const t={},e=Object.keys(Bt),i=Object.keys(Vt);let s,n,o,a,r;for(s=0;s<e.length;s++){for(a=r=e[s],n=0;n<i.length;n++)o=i[n],r=r.replace(o,Vt[o]);o=parseInt(Bt[a],16),t[r]=[o>>16&255,o>>8&255,255&o]}return t}(),Nt.transparent=[0,0,0,0]);const e=Nt[t.toLowerCase()];return e&&{r:e[0],g:e[1],b:e[2],a:4===e.length?e[3]:255}}const jt=/^rgba?\\(\\s*([-+.\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?(?:[\\s,/]+([-+.e\\d]+)(%)?)?\\s*\\)$/;const Ht=t=>t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055,$t=t=>t<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4);function Yt(t,e,i){if(t){let s=Et(t);s[e]=Math.max(0,Math.min(s[e]+s[e]*i,0===e?360:1)),s=It(s),t.r=s[0],t.g=s[1],t.b=s[2]}}function Ut(t,e){return t?Object.assign(e||{},t):t}function Xt(t){var e={r:0,g:0,b:0,a:255};return Array.isArray(t)?t.length>=3&&(e={r:t[0],g:t[1],b:t[2],a:255},t.length>3&&(e.a=yt(t[3]))):(e=Ut(t,{r:0,g:0,b:0,a:1})).a=yt(e.a),e}function qt(t){return\"r\"===t.charAt(0)?function(t){const e=jt.exec(t);let i,s,n,o=255;if(e){if(e[7]!==i){const t=+e[7];o=e[8]?_t(t):xt(255*t,0,255)}return i=+e[1],s=+e[3],n=+e[5],i=255&(e[2]?_t(i):xt(i,0,255)),s=255&(e[4]?_t(s):xt(s,0,255)),n=255&(e[6]?_t(n):xt(n,0,255)),{r:i,g:s,b:n,a:o}}}(t):Ft(t)}class Kt{constructor(t){if(t instanceof Kt)return t;const e=typeof t;let i;var s,n,o;\"object\"===e?i=Xt(t):\"string\"===e&&(o=(s=t).length,\"#\"===s[0]&&(4===o||5===o?n={r:255&17*Mt[s[1]],g:255&17*Mt[s[2]],b:255&17*Mt[s[3]],a:5===o?17*Mt[s[4]]:255}:7!==o&&9!==o||(n={r:Mt[s[1]]<<4|Mt[s[2]],g:Mt[s[3]]<<4|Mt[s[4]],b:Mt[s[5]]<<4|Mt[s[6]],a:9===o?Mt[s[7]]<<4|Mt[s[8]]:255})),i=n||Wt(t)||qt(t)),this._rgb=i,this._valid=!!i}get valid(){return this._valid}get rgb(){var t=Ut(this._rgb);return t&&(t.a=vt(t.a)),t}set rgb(t){this._rgb=Xt(t)}rgbString(){return this._valid?(t=this._rgb)&&(t.a<255?`rgba(${t.r}, ${t.g}, ${t.b}, ${vt(t.a)})`:`rgb(${t.r}, ${t.g}, ${t.b})`):void 0;var t}hexString(){return this._valid?Ot(this._rgb):void 0}hslString(){return this._valid?function(t){if(!t)return;const e=Et(t),i=e[0],s=wt(e[1]),n=wt(e[2]);return t.a<255?`hsla(${i}, ${s}%, ${n}%, ${vt(t.a)})`:`hsl(${i}, ${s}%, ${n}%)`}(this._rgb):void 0}mix(t,e){if(t){const i=this.rgb,s=t.rgb;let n;const o=e===n?.5:e,a=2*o-1,r=i.a-s.a,l=((a*r==-1?a:(a+r)/(1+a*r))+1)/2;n=1-l,i.r=255&l*i.r+n*s.r+.5,i.g=255&l*i.g+n*s.g+.5,i.b=255&l*i.b+n*s.b+.5,i.a=o*i.a+(1-o)*s.a,this.rgb=i}return this}interpolate(t,e){return t&&(this._rgb=function(t,e,i){const s=$t(vt(t.r)),n=$t(vt(t.g)),o=$t(vt(t.b));return{r:yt(Ht(s+i*($t(vt(e.r))-s))),g:yt(Ht(n+i*($t(vt(e.g))-n))),b:yt(Ht(o+i*($t(vt(e.b))-o))),a:t.a+i*(e.a-t.a)}}(this._rgb,t._rgb,e)),this}clone(){return new Kt(this.rgb)}alpha(t){return this._rgb.a=yt(t),this}clearer(t){return this._rgb.a*=1-t,this}greyscale(){const t=this._rgb,e=bt(.3*t.r+.59*t.g+.11*t.b);return t.r=t.g=t.b=e,this}opaquer(t){return this._rgb.a*=1+t,this}negate(){const t=this._rgb;return t.r=255-t.r,t.g=255-t.g,t.b=255-t.b,this}lighten(t){return Yt(this._rgb,2,t),this}darken(t){return Yt(this._rgb,2,-t),this}saturate(t){return Yt(this._rgb,1,t),this}desaturate(t){return Yt(this._rgb,1,-t),this}rotate(t){return function(t,e){var i=Et(t);i[0]=zt(i[0]+e),i=It(i),t.r=i[0],t.g=i[1],t.b=i[2]}(this._rgb,t),this}}function Gt(t){return new Kt(t)}function Zt(t){if(t&&\"object\"==typeof t){const e=t.toString();return\"[object CanvasPattern]\"===e||\"[object CanvasGradient]\"===e}return!1}function Jt(t){return Zt(t)?t:Gt(t)}function Qt(t){return Zt(t)?t:Gt(t).saturate(.5).darken(.1).hexString()}const te=Object.create(null),ee=Object.create(null);function ie(t,e){if(!e)return t;const i=e.split(\".\");for(let e=0,s=i.length;e<s;++e){const s=i[e];t=t[s]||(t[s]=Object.create(null))}return t}function se(t,e,i){return\"string\"==typeof e?m(ie(t,e),i):m(ie(t,\"\"),e)}var ne=new class{constructor(t){this.animation=void 0,this.backgroundColor=\"rgba(0,0,0,0.1)\",this.borderColor=\"rgba(0,0,0,0.1)\",this.color=\"#666\",this.datasets={},this.devicePixelRatio=t=>t.chart.platform.getDevicePixelRatio(),this.elements={},this.events=[\"mousemove\",\"mouseout\",\"click\",\"touchstart\",\"touchmove\"],this.font={family:\"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",size:12,style:\"normal\",lineHeight:1.2,weight:null},this.hover={},this.hoverBackgroundColor=(t,e)=>Qt(e.backgroundColor),this.hoverBorderColor=(t,e)=>Qt(e.borderColor),this.hoverColor=(t,e)=>Qt(e.color),this.indexAxis=\"x\",this.interaction={mode:\"nearest\",intersect:!0,includeInvisible:!1},this.maintainAspectRatio=!0,this.onHover=null,this.onClick=null,this.parsing=!0,this.plugins={},this.responsive=!0,this.scale=void 0,this.scales={},this.showLine=!0,this.drawActiveElementsOnTop=!0,this.describe(t)}set(t,e){return se(this,t,e)}get(t){return ie(this,t)}describe(t,e){return se(ee,t,e)}override(t,e){return se(te,t,e)}route(t,e,i,s){const o=ie(this,t),a=ie(this,i),l=\"_\"+e;Object.defineProperties(o,{[l]:{value:o[e],writable:!0},[e]:{enumerable:!0,get(){const t=this[l],e=a[s];return n(t)?Object.assign({},e,t):r(t,e)},set(t){this[l]=t}}})}}({_scriptable:t=>!t.startsWith(\"on\"),_indexable:t=>\"events\"!==t,hover:{_fallback:\"interaction\"},interaction:{_scriptable:!1,_indexable:!1}});function oe(){return\"undefined\"!=typeof window&&\"undefined\"!=typeof document}function ae(t){let e=t.parentNode;return e&&\"[object ShadowRoot]\"===e.toString()&&(e=e.host),e}function re(t,e,i){let s;return\"string\"==typeof t?(s=parseInt(t,10),-1!==t.indexOf(\"%\")&&(s=s/100*e.parentNode[i])):s=t,s}const le=t=>window.getComputedStyle(t,null);function he(t,e){return le(t).getPropertyValue(e)}const ce=[\"top\",\"right\",\"bottom\",\"left\"];function de(t,e,i){const s={};i=i?\"-\"+i:\"\";for(let n=0;n<4;n++){const o=ce[n];s[o]=parseFloat(t[e+\"-\"+o+i])||0}return s.width=s.left+s.right,s.height=s.top+s.bottom,s}function ue(t,e){if(\"native\"in t)return t;const{canvas:i,currentDevicePixelRatio:s}=e,n=le(i),o=\"border-box\"===n.boxSizing,a=de(n,\"padding\"),r=de(n,\"border\",\"width\"),{x:l,y:h,box:c}=function(t,e){const i=t.touches,s=i&&i.length?i[0]:t,{offsetX:n,offsetY:o}=s;let a,r,l=!1;if(((t,e,i)=>(t>0||e>0)&&(!i||!i.shadowRoot))(n,o,t.target))a=n,r=o;else{const t=e.getBoundingClientRect();a=s.clientX-t.left,r=s.clientY-t.top,l=!0}return{x:a,y:r,box:l}}(t,i),d=a.left+(c&&r.left),u=a.top+(c&&r.top);let{width:f,height:g}=e;return o&&(f-=a.width+r.width,g-=a.height+r.height),{x:Math.round((l-d)/f*i.width/s),y:Math.round((h-u)/g*i.height/s)}}const fe=t=>Math.round(10*t)/10;function ge(t,e,i,s){const n=le(t),o=de(n,\"margin\"),a=re(n.maxWidth,t,\"clientWidth\")||A,r=re(n.maxHeight,t,\"clientHeight\")||A,l=function(t,e,i){let s,n;if(void 0===e||void 0===i){const o=ae(t);if(o){const t=o.getBoundingClientRect(),a=le(o),r=de(a,\"border\",\"width\"),l=de(a,\"padding\");e=t.width-l.width-r.width,i=t.height-l.height-r.height,s=re(a.maxWidth,o,\"clientWidth\"),n=re(a.maxHeight,o,\"clientHeight\")}else e=t.clientWidth,i=t.clientHeight}return{width:e,height:i,maxWidth:s||A,maxHeight:n||A}}(t,e,i);let{width:h,height:c}=l;if(\"content-box\"===n.boxSizing){const t=de(n,\"border\",\"width\"),e=de(n,\"padding\");h-=e.width+t.width,c-=e.height+t.height}return h=Math.max(0,h-o.width),c=Math.max(0,s?Math.floor(h/s):c-o.height),h=fe(Math.min(h,a,l.maxWidth)),c=fe(Math.min(c,r,l.maxHeight)),h&&!c&&(c=fe(h/2)),{width:h,height:c}}function pe(t,e,i){const s=e||1,n=Math.floor(t.height*s),o=Math.floor(t.width*s);t.height=n/s,t.width=o/s;const a=t.canvas;return a.style&&(i||!a.style.height&&!a.style.width)&&(a.style.height=`${t.height}px`,a.style.width=`${t.width}px`),(t.currentDevicePixelRatio!==s||a.height!==n||a.width!==o)&&(t.currentDevicePixelRatio=s,a.height=n,a.width=o,t.ctx.setTransform(s,0,0,s,0,0),!0)}const me=function(){let t=!1;try{const e={get passive(){return t=!0,!1}};window.addEventListener(\"test\",null,e),window.removeEventListener(\"test\",null,e)}catch(t){}return t}();function be(t,e){const i=he(t,e),s=i&&i.match(/^(\\d+)(\\.\\d+)?px$/);return s?+s[1]:void 0}function xe(t){return!t||i(t.size)||i(t.family)?null:(t.style?t.style+\" \":\"\")+(t.weight?t.weight+\" \":\"\")+t.size+\"px \"+t.family}function _e(t,e,i,s,n){let o=e[n];return o||(o=e[n]=t.measureText(n).width,i.push(n)),o>s&&(s=o),s}function ye(t,e,i,n){let o=(n=n||{}).data=n.data||{},a=n.garbageCollect=n.garbageCollect||[];n.font!==e&&(o=n.data={},a=n.garbageCollect=[],n.font=e),t.save(),t.font=e;let r=0;const l=i.length;let h,c,d,u,f;for(h=0;h<l;h++)if(u=i[h],null!=u&&!0!==s(u))r=_e(t,o,a,r,u);else if(s(u))for(c=0,d=u.length;c<d;c++)f=u[c],null==f||s(f)||(r=_e(t,o,a,r,f));t.restore();const g=a.length/2;if(g>i.length){for(h=0;h<g;h++)delete o[a[h]];a.splice(0,g)}return r}function ve(t,e,i){const s=t.currentDevicePixelRatio,n=0!==i?Math.max(i/2,.5):0;return Math.round((e-n)*s)/s+n}function we(t,e){(e=e||t.getContext(\"2d\")).save(),e.resetTransform(),e.clearRect(0,0,t.width,t.height),e.restore()}function Me(t,e,i,s){ke(t,e,i,s,null)}function ke(t,e,i,s,n){let o,a,r,l,h,c;const d=e.pointStyle,u=e.rotation,f=e.radius;let g=(u||0)*T;if(d&&\"object\"==typeof d&&(o=d.toString(),\"[object HTMLImageElement]\"===o||\"[object HTMLCanvasElement]\"===o))return t.save(),t.translate(i,s),t.rotate(g),t.drawImage(d,-d.width/2,-d.height/2,d.width,d.height),void t.restore();if(!(isNaN(f)||f<=0)){switch(t.beginPath(),d){default:n?t.ellipse(i,s,n/2,f,0,0,O):t.arc(i,s,f,0,O),t.closePath();break;case\"triangle\":t.moveTo(i+Math.sin(g)*f,s-Math.cos(g)*f),g+=R,t.lineTo(i+Math.sin(g)*f,s-Math.cos(g)*f),g+=R,t.lineTo(i+Math.sin(g)*f,s-Math.cos(g)*f),t.closePath();break;case\"rectRounded\":h=.516*f,l=f-h,a=Math.cos(g+E)*l,r=Math.sin(g+E)*l,t.arc(i-a,s-r,h,g-D,g-L),t.arc(i+r,s-a,h,g-L,g),t.arc(i+a,s+r,h,g,g+L),t.arc(i-r,s+a,h,g+L,g+D),t.closePath();break;case\"rect\":if(!u){l=Math.SQRT1_2*f,c=n?n/2:l,t.rect(i-c,s-l,2*c,2*l);break}g+=E;case\"rectRot\":a=Math.cos(g)*f,r=Math.sin(g)*f,t.moveTo(i-a,s-r),t.lineTo(i+r,s-a),t.lineTo(i+a,s+r),t.lineTo(i-r,s+a),t.closePath();break;case\"crossRot\":g+=E;case\"cross\":a=Math.cos(g)*f,r=Math.sin(g)*f,t.moveTo(i-a,s-r),t.lineTo(i+a,s+r),t.moveTo(i+r,s-a),t.lineTo(i-r,s+a);break;case\"star\":a=Math.cos(g)*f,r=Math.sin(g)*f,t.moveTo(i-a,s-r),t.lineTo(i+a,s+r),t.moveTo(i+r,s-a),t.lineTo(i-r,s+a),g+=E,a=Math.cos(g)*f,r=Math.sin(g)*f,t.moveTo(i-a,s-r),t.lineTo(i+a,s+r),t.moveTo(i+r,s-a),t.lineTo(i-r,s+a);break;case\"line\":a=n?n/2:Math.cos(g)*f,r=Math.sin(g)*f,t.moveTo(i-a,s-r),t.lineTo(i+a,s+r);break;case\"dash\":t.moveTo(i,s),t.lineTo(i+Math.cos(g)*f,s+Math.sin(g)*f)}t.fill(),e.borderWidth>0&&t.stroke()}}function Se(t,e,i){return i=i||.5,!e||t&&t.x>e.left-i&&t.x<e.right+i&&t.y>e.top-i&&t.y<e.bottom+i}function Pe(t,e){t.save(),t.beginPath(),t.rect(e.left,e.top,e.right-e.left,e.bottom-e.top),t.clip()}function De(t){t.restore()}function Oe(t,e,i,s,n){if(!e)return t.lineTo(i.x,i.y);if(\"middle\"===n){const s=(e.x+i.x)/2;t.lineTo(s,e.y),t.lineTo(s,i.y)}else\"after\"===n!=!!s?t.lineTo(e.x,i.y):t.lineTo(i.x,e.y);t.lineTo(i.x,i.y)}function Ce(t,e,i,s){if(!e)return t.lineTo(i.x,i.y);t.bezierCurveTo(s?e.cp1x:e.cp2x,s?e.cp1y:e.cp2y,s?i.cp2x:i.cp1x,s?i.cp2y:i.cp1y,i.x,i.y)}function Ae(t,e,n,o,a,r={}){const l=s(e)?e:[e],h=r.strokeWidth>0&&\"\"!==r.strokeColor;let c,d;for(t.save(),t.font=a.string,function(t,e){e.translation&&t.translate(e.translation[0],e.translation[1]);i(e.rotation)||t.rotate(e.rotation);e.color&&(t.fillStyle=e.color);e.textAlign&&(t.textAlign=e.textAlign);e.textBaseline&&(t.textBaseline=e.textBaseline)}(t,r),c=0;c<l.length;++c)d=l[c],h&&(r.strokeColor&&(t.strokeStyle=r.strokeColor),i(r.strokeWidth)||(t.lineWidth=r.strokeWidth),t.strokeText(d,n,o,r.maxWidth)),t.fillText(d,n,o,r.maxWidth),Te(t,n,o,d,r),o+=a.lineHeight;t.restore()}function Te(t,e,i,s,n){if(n.strikethrough||n.underline){const o=t.measureText(s),a=e-o.actualBoundingBoxLeft,r=e+o.actualBoundingBoxRight,l=i-o.actualBoundingBoxAscent,h=i+o.actualBoundingBoxDescent,c=n.strikethrough?(l+h)/2:h;t.strokeStyle=t.fillStyle,t.beginPath(),t.lineWidth=n.decorationWidth||2,t.moveTo(a,c),t.lineTo(r,c),t.stroke()}}function Le(t,e){const{x:i,y:s,w:n,h:o,radius:a}=e;t.arc(i+a.topLeft,s+a.topLeft,a.topLeft,-L,D,!0),t.lineTo(i,s+o-a.bottomLeft),t.arc(i+a.bottomLeft,s+o-a.bottomLeft,a.bottomLeft,D,L,!0),t.lineTo(i+n-a.bottomRight,s+o),t.arc(i+n-a.bottomRight,s+o-a.bottomRight,a.bottomRight,L,0,!0),t.lineTo(i+n,s+a.topRight),t.arc(i+n-a.topRight,s+a.topRight,a.topRight,0,-L,!0),t.lineTo(i+a.topLeft,s)}function Ee(t,e=[\"\"],i=t,s,n=(()=>t[0])){M(s)||(s=$e(\"_fallback\",t));const o={[Symbol.toStringTag]:\"Object\",_cacheable:!0,_scopes:t,_rootScopes:i,_fallback:s,_getTarget:n,override:n=>Ee([n,...t],e,i,s)};return new Proxy(o,{deleteProperty:(e,i)=>(delete e[i],delete e._keys,delete t[0][i],!0),get:(i,s)=>Ve(i,s,(()=>function(t,e,i,s){let n;for(const o of e)if(n=$e(ze(o,t),i),M(n))return Fe(t,n)?je(i,s,t,n):n}(s,e,t,i))),getOwnPropertyDescriptor:(t,e)=>Reflect.getOwnPropertyDescriptor(t._scopes[0],e),getPrototypeOf:()=>Reflect.getPrototypeOf(t[0]),has:(t,e)=>Ye(t).includes(e),ownKeys:t=>Ye(t),set(t,e,i){const s=t._storage||(t._storage=n());return t[e]=s[e]=i,delete t._keys,!0}})}function Re(t,e,i,o){const a={_cacheable:!1,_proxy:t,_context:e,_subProxy:i,_stack:new Set,_descriptors:Ie(t,o),setContext:e=>Re(t,e,i,o),override:s=>Re(t.override(s),e,i,o)};return new Proxy(a,{deleteProperty:(e,i)=>(delete e[i],delete t[i],!0),get:(t,e,i)=>Ve(t,e,(()=>function(t,e,i){const{_proxy:o,_context:a,_subProxy:r,_descriptors:l}=t;let h=o[e];k(h)&&l.isScriptable(e)&&(h=function(t,e,i,s){const{_proxy:n,_context:o,_subProxy:a,_stack:r}=i;if(r.has(t))throw new Error(\"Recursion detected: \"+Array.from(r).join(\"->\")+\"->\"+t);r.add(t),e=e(o,a||s),r.delete(t),Fe(t,e)&&(e=je(n._scopes,n,t,e));return e}(e,h,t,i));s(h)&&h.length&&(h=function(t,e,i,s){const{_proxy:o,_context:a,_subProxy:r,_descriptors:l}=i;if(M(a.index)&&s(t))e=e[a.index%e.length];else if(n(e[0])){const i=e,s=o._scopes.filter((t=>t!==i));e=[];for(const n of i){const i=je(s,o,t,n);e.push(Re(i,a,r&&r[t],l))}}return e}(e,h,t,l.isIndexable));Fe(e,h)&&(h=Re(h,a,r&&r[e],l));return h}(t,e,i))),getOwnPropertyDescriptor:(e,i)=>e._descriptors.allKeys?Reflect.has(t,i)?{enumerable:!0,configurable:!0}:void 0:Reflect.getOwnPropertyDescriptor(t,i),getPrototypeOf:()=>Reflect.getPrototypeOf(t),has:(e,i)=>Reflect.has(t,i),ownKeys:()=>Reflect.ownKeys(t),set:(e,i,s)=>(t[i]=s,delete e[i],!0)})}function Ie(t,e={scriptable:!0,indexable:!0}){const{_scriptable:i=e.scriptable,_indexable:s=e.indexable,_allKeys:n=e.allKeys}=t;return{allKeys:n,scriptable:i,indexable:s,isScriptable:k(i)?i:()=>i,isIndexable:k(s)?s:()=>s}}const ze=(t,e)=>t?t+w(e):e,Fe=(t,e)=>n(e)&&\"adapters\"!==t&&(null===Object.getPrototypeOf(e)||e.constructor===Object);function Ve(t,e,i){if(Object.prototype.hasOwnProperty.call(t,e))return t[e];const s=i();return t[e]=s,s}function Be(t,e,i){return k(t)?t(e,i):t}const Ne=(t,e)=>!0===t?e:\"string\"==typeof t?y(e,t):void 0;function We(t,e,i,s,n){for(const o of e){const e=Ne(i,o);if(e){t.add(e);const o=Be(e._fallback,i,n);if(M(o)&&o!==i&&o!==s)return o}else if(!1===e&&M(s)&&i!==s)return null}return!1}function je(t,e,i,o){const a=e._rootScopes,r=Be(e._fallback,i,o),l=[...t,...a],h=new Set;h.add(o);let c=He(h,l,i,r||i,o);return null!==c&&((!M(r)||r===i||(c=He(h,l,r,c,o),null!==c))&&Ee(Array.from(h),[\"\"],a,r,(()=>function(t,e,i){const o=t._getTarget();e in o||(o[e]={});const a=o[e];if(s(a)&&n(i))return i;return a}(e,i,o))))}function He(t,e,i,s,n){for(;i;)i=We(t,e,i,s,n);return i}function $e(t,e){for(const i of e){if(!i)continue;const e=i[t];if(M(e))return e}}function Ye(t){let e=t._keys;return e||(e=t._keys=function(t){const e=new Set;for(const i of t)for(const t of Object.keys(i).filter((t=>!t.startsWith(\"_\"))))e.add(t);return Array.from(e)}(t._scopes)),e}function Ue(t,e,i,s){const{iScale:n}=t,{key:o=\"r\"}=this._parsing,a=new Array(s);let r,l,h,c;for(r=0,l=s;r<l;++r)h=r+i,c=e[h],a[r]={r:n.parse(y(c,o),h)};return a}const Xe=Number.EPSILON||1e-14,qe=(t,e)=>e<t.length&&!t[e].skip&&t[e],Ke=t=>\"x\"===t?\"y\":\"x\";function Ge(t,e,i,s){const n=t.skip?e:t,o=e,a=i.skip?e:i,r=X(o,n),l=X(a,o);let h=r/(r+l),c=l/(r+l);h=isNaN(h)?0:h,c=isNaN(c)?0:c;const d=s*h,u=s*c;return{previous:{x:o.x-d*(a.x-n.x),y:o.y-d*(a.y-n.y)},next:{x:o.x+u*(a.x-n.x),y:o.y+u*(a.y-n.y)}}}function Ze(t,e=\"x\"){const i=Ke(e),s=t.length,n=Array(s).fill(0),o=Array(s);let a,r,l,h=qe(t,0);for(a=0;a<s;++a)if(r=l,l=h,h=qe(t,a+1),l){if(h){const t=h[e]-l[e];n[a]=0!==t?(h[i]-l[i])/t:0}o[a]=r?h?z(n[a-1])!==z(n[a])?0:(n[a-1]+n[a])/2:n[a-1]:n[a]}!function(t,e,i){const s=t.length;let n,o,a,r,l,h=qe(t,0);for(let c=0;c<s-1;++c)l=h,h=qe(t,c+1),l&&h&&(N(e[c],0,Xe)?i[c]=i[c+1]=0:(n=i[c]/e[c],o=i[c+1]/e[c],r=Math.pow(n,2)+Math.pow(o,2),r<=9||(a=3/Math.sqrt(r),i[c]=n*a*e[c],i[c+1]=o*a*e[c])))}(t,n,o),function(t,e,i=\"x\"){const s=Ke(i),n=t.length;let o,a,r,l=qe(t,0);for(let h=0;h<n;++h){if(a=r,r=l,l=qe(t,h+1),!r)continue;const n=r[i],c=r[s];a&&(o=(n-a[i])/3,r[`cp1${i}`]=n-o,r[`cp1${s}`]=c-o*e[h]),l&&(o=(l[i]-n)/3,r[`cp2${i}`]=n+o,r[`cp2${s}`]=c+o*e[h])}}(t,o,e)}function Je(t,e,i){return Math.max(Math.min(t,i),e)}function Qe(t,e,i,s,n){let o,a,r,l;if(e.spanGaps&&(t=t.filter((t=>!t.skip))),\"monotone\"===e.cubicInterpolationMode)Ze(t,n);else{let i=s?t[t.length-1]:t[0];for(o=0,a=t.length;o<a;++o)r=t[o],l=Ge(i,r,t[Math.min(o+1,a-(s?0:1))%a],e.tension),r.cp1x=l.previous.x,r.cp1y=l.previous.y,r.cp2x=l.next.x,r.cp2y=l.next.y,i=r}e.capBezierPoints&&function(t,e){let i,s,n,o,a,r=Se(t[0],e);for(i=0,s=t.length;i<s;++i)a=o,o=r,r=i<s-1&&Se(t[i+1],e),o&&(n=t[i],a&&(n.cp1x=Je(n.cp1x,e.left,e.right),n.cp1y=Je(n.cp1y,e.top,e.bottom)),r&&(n.cp2x=Je(n.cp2x,e.left,e.right),n.cp2y=Je(n.cp2y,e.top,e.bottom)))}(t,i)}const ti=t=>0===t||1===t,ei=(t,e,i)=>-Math.pow(2,10*(t-=1))*Math.sin((t-e)*O/i),ii=(t,e,i)=>Math.pow(2,-10*t)*Math.sin((t-e)*O/i)+1,si={linear:t=>t,easeInQuad:t=>t*t,easeOutQuad:t=>-t*(t-2),easeInOutQuad:t=>(t/=.5)<1?.5*t*t:-.5*(--t*(t-2)-1),easeInCubic:t=>t*t*t,easeOutCubic:t=>(t-=1)*t*t+1,easeInOutCubic:t=>(t/=.5)<1?.5*t*t*t:.5*((t-=2)*t*t+2),easeInQuart:t=>t*t*t*t,easeOutQuart:t=>-((t-=1)*t*t*t-1),easeInOutQuart:t=>(t/=.5)<1?.5*t*t*t*t:-.5*((t-=2)*t*t*t-2),easeInQuint:t=>t*t*t*t*t,easeOutQuint:t=>(t-=1)*t*t*t*t+1,easeInOutQuint:t=>(t/=.5)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2),easeInSine:t=>1-Math.cos(t*L),easeOutSine:t=>Math.sin(t*L),easeInOutSine:t=>-.5*(Math.cos(D*t)-1),easeInExpo:t=>0===t?0:Math.pow(2,10*(t-1)),easeOutExpo:t=>1===t?1:1-Math.pow(2,-10*t),easeInOutExpo:t=>ti(t)?t:t<.5?.5*Math.pow(2,10*(2*t-1)):.5*(2-Math.pow(2,-10*(2*t-1))),easeInCirc:t=>t>=1?t:-(Math.sqrt(1-t*t)-1),easeOutCirc:t=>Math.sqrt(1-(t-=1)*t),easeInOutCirc:t=>(t/=.5)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1),easeInElastic:t=>ti(t)?t:ei(t,.075,.3),easeOutElastic:t=>ti(t)?t:ii(t,.075,.3),easeInOutElastic(t){const e=.1125;return ti(t)?t:t<.5?.5*ei(2*t,e,.45):.5+.5*ii(2*t-1,e,.45)},easeInBack(t){const e=1.70158;return t*t*((e+1)*t-e)},easeOutBack(t){const e=1.70158;return(t-=1)*t*((e+1)*t+e)+1},easeInOutBack(t){let e=1.70158;return(t/=.5)<1?t*t*((1+(e*=1.525))*t-e)*.5:.5*((t-=2)*t*((1+(e*=1.525))*t+e)+2)},easeInBounce:t=>1-si.easeOutBounce(1-t),easeOutBounce(t){const e=7.5625,i=2.75;return t<1/i?e*t*t:t<2/i?e*(t-=1.5/i)*t+.75:t<2.5/i?e*(t-=2.25/i)*t+.9375:e*(t-=2.625/i)*t+.984375},easeInOutBounce:t=>t<.5?.5*si.easeInBounce(2*t):.5*si.easeOutBounce(2*t-1)+.5};function ni(t,e,i,s){return{x:t.x+i*(e.x-t.x),y:t.y+i*(e.y-t.y)}}function oi(t,e,i,s){return{x:t.x+i*(e.x-t.x),y:\"middle\"===s?i<.5?t.y:e.y:\"after\"===s?i<1?t.y:e.y:i>0?e.y:t.y}}function ai(t,e,i,s){const n={x:t.cp2x,y:t.cp2y},o={x:e.cp1x,y:e.cp1y},a=ni(t,n,i),r=ni(n,o,i),l=ni(o,e,i),h=ni(a,r,i),c=ni(r,l,i);return ni(h,c,i)}const ri=new Map;function li(t,e,i){return function(t,e){e=e||{};const i=t+JSON.stringify(e);let s=ri.get(i);return s||(s=new Intl.NumberFormat(t,e),ri.set(i,s)),s}(e,i).format(t)}const hi=new RegExp(/^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/),ci=new RegExp(/^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/);function di(t,e){const i=(\"\"+t).match(hi);if(!i||\"normal\"===i[1])return 1.2*e;switch(t=+i[2],i[3]){case\"px\":return t;case\"%\":t/=100}return e*t}function ui(t,e){const i={},s=n(e),o=s?Object.keys(e):e,a=n(t)?s?i=>r(t[i],t[e[i]]):e=>t[e]:()=>t;for(const t of o)i[t]=+a(t)||0;return i}function fi(t){return ui(t,{top:\"y\",right:\"x\",bottom:\"y\",left:\"x\"})}function gi(t){return ui(t,[\"topLeft\",\"topRight\",\"bottomLeft\",\"bottomRight\"])}function pi(t){const e=fi(t);return e.width=e.left+e.right,e.height=e.top+e.bottom,e}function mi(t,e){t=t||{},e=e||ne.font;let i=r(t.size,e.size);\"string\"==typeof i&&(i=parseInt(i,10));let s=r(t.style,e.style);s&&!(\"\"+s).match(ci)&&(console.warn('Invalid font style specified: \"'+s+'\"'),s=\"\");const n={family:r(t.family,e.family),lineHeight:di(r(t.lineHeight,e.lineHeight),i),size:i,style:s,weight:r(t.weight,e.weight),string:\"\"};return n.string=xe(n),n}function bi(t,e,i,n){let o,a,r,l=!0;for(o=0,a=t.length;o<a;++o)if(r=t[o],void 0!==r&&(void 0!==e&&\"function\"==typeof r&&(r=r(e),l=!1),void 0!==i&&s(r)&&(r=r[i%r.length],l=!1),void 0!==r))return n&&!l&&(n.cacheable=!1),r}function xi(t,e,i){const{min:s,max:n}=t,o=h(e,(n-s)/2),a=(t,e)=>i&&0===t?0:t+e;return{min:a(s,-Math.abs(o)),max:a(n,o)}}function _i(t,e){return Object.assign(Object.create(t),e)}function yi(t,e,i){return t?function(t,e){return{x:i=>t+t+e-i,setWidth(t){e=t},textAlign:t=>\"center\"===t?t:\"right\"===t?\"left\":\"right\",xPlus:(t,e)=>t-e,leftForLtr:(t,e)=>t-e}}(e,i):{x:t=>t,setWidth(t){},textAlign:t=>t,xPlus:(t,e)=>t+e,leftForLtr:(t,e)=>t}}function vi(t,e){let i,s;\"ltr\"!==e&&\"rtl\"!==e||(i=t.canvas.style,s=[i.getPropertyValue(\"direction\"),i.getPropertyPriority(\"direction\")],i.setProperty(\"direction\",e,\"important\"),t.prevTextDirection=s)}function wi(t,e){void 0!==e&&(delete t.prevTextDirection,t.canvas.style.setProperty(\"direction\",e[0],e[1]))}function Mi(t){return\"angle\"===t?{between:G,compare:q,normalize:K}:{between:Q,compare:(t,e)=>t-e,normalize:t=>t}}function ki({start:t,end:e,count:i,loop:s,style:n}){return{start:t%i,end:e%i,loop:s&&(e-t+1)%i==0,style:n}}function Si(t,e,i){if(!i)return[t];const{property:s,start:n,end:o}=i,a=e.length,{compare:r,between:l,normalize:h}=Mi(s),{start:c,end:d,loop:u,style:f}=function(t,e,i){const{property:s,start:n,end:o}=i,{between:a,normalize:r}=Mi(s),l=e.length;let h,c,{start:d,end:u,loop:f}=t;if(f){for(d+=l,u+=l,h=0,c=l;h<c&&a(r(e[d%l][s]),n,o);++h)d--,u--;d%=l,u%=l}return u<d&&(u+=l),{start:d,end:u,loop:f,style:t.style}}(t,e,i),g=[];let p,m,b,x=!1,_=null;const y=()=>x||l(n,b,p)&&0!==r(n,b),v=()=>!x||0===r(o,p)||l(o,b,p);for(let t=c,i=c;t<=d;++t)m=e[t%a],m.skip||(p=h(m[s]),p!==b&&(x=l(p,n,o),null===_&&y()&&(_=0===r(p,n)?t:i),null!==_&&v()&&(g.push(ki({start:_,end:t,loop:u,count:a,style:f})),_=null),i=t,b=p));return null!==_&&g.push(ki({start:_,end:d,loop:u,count:a,style:f})),g}function Pi(t,e){const i=[],s=t.segments;for(let n=0;n<s.length;n++){const o=Si(s[n],t.points,e);o.length&&i.push(...o)}return i}function Di(t,e){const i=t.points,s=t.options.spanGaps,n=i.length;if(!n)return[];const o=!!t._loop,{start:a,end:r}=function(t,e,i,s){let n=0,o=e-1;if(i&&!s)for(;n<e&&!t[n].skip;)n++;for(;n<e&&t[n].skip;)n++;for(n%=e,i&&(o+=n);o>n&&t[o%e].skip;)o--;return o%=e,{start:n,end:o}}(i,n,o,s);if(!0===s)return Oi(t,[{start:a,end:r,loop:o}],i,e);return Oi(t,function(t,e,i,s){const n=t.length,o=[];let a,r=e,l=t[e];for(a=e+1;a<=i;++a){const i=t[a%n];i.skip||i.stop?l.skip||(s=!1,o.push({start:e%n,end:(a-1)%n,loop:s}),e=r=i.stop?a:null):(r=a,l.skip&&(e=a)),l=i}return null!==r&&o.push({start:e%n,end:r%n,loop:s}),o}(i,a,r<a?r+n:r,!!t._fullLoop&&0===a&&r===n-1),i,e)}function Oi(t,e,i,s){return s&&s.setContext&&i?function(t,e,i,s){const n=t._chart.getContext(),o=Ci(t.options),{_datasetIndex:a,options:{spanGaps:r}}=t,l=i.length,h=[];let c=o,d=e[0].start,u=d;function f(t,e,s,n){const o=r?-1:1;if(t!==e){for(t+=l;i[t%l].skip;)t-=o;for(;i[e%l].skip;)e+=o;t%l!=e%l&&(h.push({start:t%l,end:e%l,loop:s,style:n}),c=n,d=e%l)}}for(const t of e){d=r?d:t.start;let e,o=i[d%l];for(u=d+1;u<=t.end;u++){const r=i[u%l];e=Ci(s.setContext(_i(n,{type:\"segment\",p0:o,p1:r,p0DataIndex:(u-1)%l,p1DataIndex:u%l,datasetIndex:a}))),Ai(e,c)&&f(d,u-1,t.loop,c),o=r,c=e}d<u-1&&f(d,u-1,t.loop,c)}return h}(t,e,i,s):e}function Ci(t){return{backgroundColor:t.backgroundColor,borderCapStyle:t.borderCapStyle,borderDash:t.borderDash,borderDashOffset:t.borderDashOffset,borderJoinStyle:t.borderJoinStyle,borderWidth:t.borderWidth,borderColor:t.borderColor}}function Ai(t,e){return e&&JSON.stringify(t)!==JSON.stringify(e)}var Ti=Object.freeze({__proto__:null,easingEffects:si,isPatternOrGradient:Zt,color:Jt,getHoverColor:Qt,noop:t,uid:e,isNullOrUndef:i,isArray:s,isObject:n,isFinite:o,finiteOrDefault:a,valueOrDefault:r,toPercentage:l,toDimension:h,callback:c,each:d,_elementsEqual:u,clone:f,_merger:p,merge:m,mergeIf:b,_mergerIf:x,_deprecated:function(t,e,i,s){void 0!==e&&console.warn(t+': \"'+i+'\" is deprecated. Please use \"'+s+'\" instead')},resolveObjectKey:y,_splitKey:v,_capitalize:w,defined:M,isFunction:k,setsEqual:S,_isClickEvent:P,toFontString:xe,_measureText:_e,_longestText:ye,_alignPixel:ve,clearCanvas:we,drawPoint:Me,drawPointLegend:ke,_isPointInArea:Se,clipArea:Pe,unclipArea:De,_steppedLineTo:Oe,_bezierCurveTo:Ce,renderText:Ae,addRoundedRectPath:Le,_lookup:tt,_lookupByKey:et,_rlookupByKey:it,_filterBetween:st,listenArrayEvents:ot,unlistenArrayEvents:at,_arrayUnique:rt,_createResolver:Ee,_attachContext:Re,_descriptors:Ie,_parseObjectDataRadialScale:Ue,splineCurve:Ge,splineCurveMonotone:Ze,_updateBezierControlPoints:Qe,_isDomSupported:oe,_getParentNode:ae,getStyle:he,getRelativePosition:ue,getMaximumSize:ge,retinaScale:pe,supportsEventListenerOptions:me,readUsedSize:be,fontString:function(t,e,i){return e+\" \"+t+\"px \"+i},requestAnimFrame:lt,throttled:ht,debounce:ct,_toLeftRightCenter:dt,_alignStartEnd:ut,_textX:ft,_getStartAndCountOfVisiblePoints:gt,_scaleRangesChanged:pt,_pointInLine:ni,_steppedInterpolation:oi,_bezierInterpolation:ai,formatNumber:li,toLineHeight:di,_readValueToProps:ui,toTRBL:fi,toTRBLCorners:gi,toPadding:pi,toFont:mi,resolve:bi,_addGrace:xi,createContext:_i,PI:D,TAU:O,PITAU:C,INFINITY:A,RAD_PER_DEG:T,HALF_PI:L,QUARTER_PI:E,TWO_THIRDS_PI:R,log10:I,sign:z,niceNum:F,_factorize:V,isNumber:B,almostEquals:N,almostWhole:W,_setMinAndMaxByKey:j,toRadians:H,toDegrees:$,_decimalPlaces:Y,getAngleFromPoint:U,distanceBetweenPoints:X,_angleDiff:q,_normalizeAngle:K,_angleBetween:G,_limitValue:Z,_int16Range:J,_isBetween:Q,getRtlAdapter:yi,overrideTextDirection:vi,restoreTextDirection:wi,_boundSegment:Si,_boundSegments:Pi,_computeSegments:Di});function Li(t,e,i,s){const{controller:n,data:o,_sorted:a}=t,r=n._cachedMeta.iScale;if(r&&e===r.axis&&\"r\"!==e&&a&&o.length){const t=r._reversePixels?it:et;if(!s)return t(o,e,i);if(n._sharedOptions){const s=o[0],n=\"function\"==typeof s.getRange&&s.getRange(e);if(n){const s=t(o,e,i-n),a=t(o,e,i+n);return{lo:s.lo,hi:a.hi}}}}return{lo:0,hi:o.length-1}}function Ei(t,e,i,s,n){const o=t.getSortedVisibleDatasetMetas(),a=i[e];for(let t=0,i=o.length;t<i;++t){const{index:i,data:r}=o[t],{lo:l,hi:h}=Li(o[t],e,a,n);for(let t=l;t<=h;++t){const e=r[t];e.skip||s(e,i,t)}}}function Ri(t,e,i,s,n){const o=[];if(!n&&!t.isPointInArea(e))return o;return Ei(t,i,e,(function(i,a,r){(n||Se(i,t.chartArea,0))&&i.inRange(e.x,e.y,s)&&o.push({element:i,datasetIndex:a,index:r})}),!0),o}function Ii(t,e,i,s,n,o){let a=[];const r=function(t){const e=-1!==t.indexOf(\"x\"),i=-1!==t.indexOf(\"y\");return function(t,s){const n=e?Math.abs(t.x-s.x):0,o=i?Math.abs(t.y-s.y):0;return Math.sqrt(Math.pow(n,2)+Math.pow(o,2))}}(i);let l=Number.POSITIVE_INFINITY;return Ei(t,i,e,(function(i,h,c){const d=i.inRange(e.x,e.y,n);if(s&&!d)return;const u=i.getCenterPoint(n);if(!(!!o||t.isPointInArea(u))&&!d)return;const f=r(e,u);f<l?(a=[{element:i,datasetIndex:h,index:c}],l=f):f===l&&a.push({element:i,datasetIndex:h,index:c})})),a}function zi(t,e,i,s,n,o){return o||t.isPointInArea(e)?\"r\"!==i||s?Ii(t,e,i,s,n,o):function(t,e,i,s){let n=[];return Ei(t,i,e,(function(t,i,o){const{startAngle:a,endAngle:r}=t.getProps([\"startAngle\",\"endAngle\"],s),{angle:l}=U(t,{x:e.x,y:e.y});G(l,a,r)&&n.push({element:t,datasetIndex:i,index:o})})),n}(t,e,i,n):[]}function Fi(t,e,i,s,n){const o=[],a=\"x\"===i?\"inXRange\":\"inYRange\";let r=!1;return Ei(t,i,e,((t,s,l)=>{t[a](e[i],n)&&(o.push({element:t,datasetIndex:s,index:l}),r=r||t.inRange(e.x,e.y,n))})),s&&!r?[]:o}var Vi={evaluateInteractionItems:Ei,modes:{index(t,e,i,s){const n=ue(e,t),o=i.axis||\"x\",a=i.includeInvisible||!1,r=i.intersect?Ri(t,n,o,s,a):zi(t,n,o,!1,s,a),l=[];return r.length?(t.getSortedVisibleDatasetMetas().forEach((t=>{const e=r[0].index,i=t.data[e];i&&!i.skip&&l.push({element:i,datasetIndex:t.index,index:e})})),l):[]},dataset(t,e,i,s){const n=ue(e,t),o=i.axis||\"xy\",a=i.includeInvisible||!1;let r=i.intersect?Ri(t,n,o,s,a):zi(t,n,o,!1,s,a);if(r.length>0){const e=r[0].datasetIndex,i=t.getDatasetMeta(e).data;r=[];for(let t=0;t<i.length;++t)r.push({element:i[t],datasetIndex:e,index:t})}return r},point:(t,e,i,s)=>Ri(t,ue(e,t),i.axis||\"xy\",s,i.includeInvisible||!1),nearest(t,e,i,s){const n=ue(e,t),o=i.axis||\"xy\",a=i.includeInvisible||!1;return zi(t,n,o,i.intersect,s,a)},x:(t,e,i,s)=>Fi(t,ue(e,t),\"x\",i.intersect,s),y:(t,e,i,s)=>Fi(t,ue(e,t),\"y\",i.intersect,s)}};const Bi=[\"left\",\"top\",\"right\",\"bottom\"];function Ni(t,e){return t.filter((t=>t.pos===e))}function Wi(t,e){return t.filter((t=>-1===Bi.indexOf(t.pos)&&t.box.axis===e))}function ji(t,e){return t.sort(((t,i)=>{const s=e?i:t,n=e?t:i;return s.weight===n.weight?s.index-n.index:s.weight-n.weight}))}function Hi(t,e){const i=function(t){const e={};for(const i of t){const{stack:t,pos:s,stackWeight:n}=i;if(!t||!Bi.includes(s))continue;const o=e[t]||(e[t]={count:0,placed:0,weight:0,size:0});o.count++,o.weight+=n}return e}(t),{vBoxMaxWidth:s,hBoxMaxHeight:n}=e;let o,a,r;for(o=0,a=t.length;o<a;++o){r=t[o];const{fullSize:a}=r.box,l=i[r.stack],h=l&&r.stackWeight/l.weight;r.horizontal?(r.width=h?h*s:a&&e.availableWidth,r.height=n):(r.width=s,r.height=h?h*n:a&&e.availableHeight)}return i}function $i(t,e,i,s){return Math.max(t[i],e[i])+Math.max(t[s],e[s])}function Yi(t,e){t.top=Math.max(t.top,e.top),t.left=Math.max(t.left,e.left),t.bottom=Math.max(t.bottom,e.bottom),t.right=Math.max(t.right,e.right)}function Ui(t,e,i,s){const{pos:o,box:a}=i,r=t.maxPadding;if(!n(o)){i.size&&(t[o]-=i.size);const e=s[i.stack]||{size:0,count:1};e.size=Math.max(e.size,i.horizontal?a.height:a.width),i.size=e.size/e.count,t[o]+=i.size}a.getPadding&&Yi(r,a.getPadding());const l=Math.max(0,e.outerWidth-$i(r,t,\"left\",\"right\")),h=Math.max(0,e.outerHeight-$i(r,t,\"top\",\"bottom\")),c=l!==t.w,d=h!==t.h;return t.w=l,t.h=h,i.horizontal?{same:c,other:d}:{same:d,other:c}}function Xi(t,e){const i=e.maxPadding;function s(t){const s={left:0,top:0,right:0,bottom:0};return t.forEach((t=>{s[t]=Math.max(e[t],i[t])})),s}return s(t?[\"left\",\"right\"]:[\"top\",\"bottom\"])}function qi(t,e,i,s){const n=[];let o,a,r,l,h,c;for(o=0,a=t.length,h=0;o<a;++o){r=t[o],l=r.box,l.update(r.width||e.w,r.height||e.h,Xi(r.horizontal,e));const{same:a,other:d}=Ui(e,i,r,s);h|=a&&n.length,c=c||d,l.fullSize||n.push(r)}return h&&qi(n,e,i,s)||c}function Ki(t,e,i,s,n){t.top=i,t.left=e,t.right=e+s,t.bottom=i+n,t.width=s,t.height=n}function Gi(t,e,i,s){const n=i.padding;let{x:o,y:a}=e;for(const r of t){const t=r.box,l=s[r.stack]||{count:1,placed:0,weight:1},h=r.stackWeight/l.weight||1;if(r.horizontal){const s=e.w*h,o=l.size||t.height;M(l.start)&&(a=l.start),t.fullSize?Ki(t,n.left,a,i.outerWidth-n.right-n.left,o):Ki(t,e.left+l.placed,a,s,o),l.start=a,l.placed+=s,a=t.bottom}else{const s=e.h*h,a=l.size||t.width;M(l.start)&&(o=l.start),t.fullSize?Ki(t,o,n.top,a,i.outerHeight-n.bottom-n.top):Ki(t,o,e.top+l.placed,a,s),l.start=o,l.placed+=s,o=t.right}}e.x=o,e.y=a}ne.set(\"layout\",{autoPadding:!0,padding:{top:0,right:0,bottom:0,left:0}});var Zi={addBox(t,e){t.boxes||(t.boxes=[]),e.fullSize=e.fullSize||!1,e.position=e.position||\"top\",e.weight=e.weight||0,e._layers=e._layers||function(){return[{z:0,draw(t){e.draw(t)}}]},t.boxes.push(e)},removeBox(t,e){const i=t.boxes?t.boxes.indexOf(e):-1;-1!==i&&t.boxes.splice(i,1)},configure(t,e,i){e.fullSize=i.fullSize,e.position=i.position,e.weight=i.weight},update(t,e,i,s){if(!t)return;const n=pi(t.options.layout.padding),o=Math.max(e-n.width,0),a=Math.max(i-n.height,0),r=function(t){const e=function(t){const e=[];let i,s,n,o,a,r;for(i=0,s=(t||[]).length;i<s;++i)n=t[i],({position:o,options:{stack:a,stackWeight:r=1}}=n),e.push({index:i,box:n,pos:o,horizontal:n.isHorizontal(),weight:n.weight,stack:a&&o+a,stackWeight:r});return e}(t),i=ji(e.filter((t=>t.box.fullSize)),!0),s=ji(Ni(e,\"left\"),!0),n=ji(Ni(e,\"right\")),o=ji(Ni(e,\"top\"),!0),a=ji(Ni(e,\"bottom\")),r=Wi(e,\"x\"),l=Wi(e,\"y\");return{fullSize:i,leftAndTop:s.concat(o),rightAndBottom:n.concat(l).concat(a).concat(r),chartArea:Ni(e,\"chartArea\"),vertical:s.concat(n).concat(l),horizontal:o.concat(a).concat(r)}}(t.boxes),l=r.vertical,h=r.horizontal;d(t.boxes,(t=>{\"function\"==typeof t.beforeLayout&&t.beforeLayout()}));const c=l.reduce(((t,e)=>e.box.options&&!1===e.box.options.display?t:t+1),0)||1,u=Object.freeze({outerWidth:e,outerHeight:i,padding:n,availableWidth:o,availableHeight:a,vBoxMaxWidth:o/2/c,hBoxMaxHeight:a/2}),f=Object.assign({},n);Yi(f,pi(s));const g=Object.assign({maxPadding:f,w:o,h:a,x:n.left,y:n.top},n),p=Hi(l.concat(h),u);qi(r.fullSize,g,u,p),qi(l,g,u,p),qi(h,g,u,p)&&qi(l,g,u,p),function(t){const e=t.maxPadding;function i(i){const s=Math.max(e[i]-t[i],0);return t[i]+=s,s}t.y+=i(\"top\"),t.x+=i(\"left\"),i(\"right\"),i(\"bottom\")}(g),Gi(r.leftAndTop,g,u,p),g.x+=g.w,g.y+=g.h,Gi(r.rightAndBottom,g,u,p),t.chartArea={left:g.left,top:g.top,right:g.left+g.w,bottom:g.top+g.h,height:g.h,width:g.w},d(r.chartArea,(e=>{const i=e.box;Object.assign(i,t.chartArea),i.update(g.w,g.h,{left:0,top:0,right:0,bottom:0})}))}};class Ji{acquireContext(t,e){}releaseContext(t){return!1}addEventListener(t,e,i){}removeEventListener(t,e,i){}getDevicePixelRatio(){return 1}getMaximumSize(t,e,i,s){return e=Math.max(0,e||t.width),i=i||t.height,{width:e,height:Math.max(0,s?Math.floor(e/s):i)}}isAttached(t){return!0}updateConfig(t){}}class Qi extends Ji{acquireContext(t){return t&&t.getContext&&t.getContext(\"2d\")||null}updateConfig(t){t.options.animation=!1}}const ts={touchstart:\"mousedown\",touchmove:\"mousemove\",touchend:\"mouseup\",pointerenter:\"mouseenter\",pointerdown:\"mousedown\",pointermove:\"mousemove\",pointerup:\"mouseup\",pointerleave:\"mouseout\",pointerout:\"mouseout\"},es=t=>null===t||\"\"===t;const is=!!me&&{passive:!0};function ss(t,e,i){t.canvas.removeEventListener(e,i,is)}function ns(t,e){for(const i of t)if(i===e||i.contains(e))return!0}function os(t,e,i){const s=t.canvas,n=new MutationObserver((t=>{let e=!1;for(const i of t)e=e||ns(i.addedNodes,s),e=e&&!ns(i.removedNodes,s);e&&i()}));return n.observe(document,{childList:!0,subtree:!0}),n}function as(t,e,i){const s=t.canvas,n=new MutationObserver((t=>{let e=!1;for(const i of t)e=e||ns(i.removedNodes,s),e=e&&!ns(i.addedNodes,s);e&&i()}));return n.observe(document,{childList:!0,subtree:!0}),n}const rs=new Map;let ls=0;function hs(){const t=window.devicePixelRatio;t!==ls&&(ls=t,rs.forEach(((e,i)=>{i.currentDevicePixelRatio!==t&&e()})))}function cs(t,e,i){const s=t.canvas,n=s&&ae(s);if(!n)return;const o=ht(((t,e)=>{const s=n.clientWidth;i(t,e),s<n.clientWidth&&i()}),window),a=new ResizeObserver((t=>{const e=t[0],i=e.contentRect.width,s=e.contentRect.height;0===i&&0===s||o(i,s)}));return a.observe(n),function(t,e){rs.size||window.addEventListener(\"resize\",hs),rs.set(t,e)}(t,o),a}function ds(t,e,i){i&&i.disconnect(),\"resize\"===e&&function(t){rs.delete(t),rs.size||window.removeEventListener(\"resize\",hs)}(t)}function us(t,e,i){const s=t.canvas,n=ht((e=>{null!==t.ctx&&i(function(t,e){const i=ts[t.type]||t.type,{x:s,y:n}=ue(t,e);return{type:i,chart:e,native:t,x:void 0!==s?s:null,y:void 0!==n?n:null}}(e,t))}),t,(t=>{const e=t[0];return[e,e.offsetX,e.offsetY]}));return function(t,e,i){t.addEventListener(e,i,is)}(s,e,n),n}class fs extends Ji{acquireContext(t,e){const i=t&&t.getContext&&t.getContext(\"2d\");return i&&i.canvas===t?(function(t,e){const i=t.style,s=t.getAttribute(\"height\"),n=t.getAttribute(\"width\");if(t.$chartjs={initial:{height:s,width:n,style:{display:i.display,height:i.height,width:i.width}}},i.display=i.display||\"block\",i.boxSizing=i.boxSizing||\"border-box\",es(n)){const e=be(t,\"width\");void 0!==e&&(t.width=e)}if(es(s))if(\"\"===t.style.height)t.height=t.width/(e||2);else{const e=be(t,\"height\");void 0!==e&&(t.height=e)}}(t,e),i):null}releaseContext(t){const e=t.canvas;if(!e.$chartjs)return!1;const s=e.$chartjs.initial;[\"height\",\"width\"].forEach((t=>{const n=s[t];i(n)?e.removeAttribute(t):e.setAttribute(t,n)}));const n=s.style||{};return Object.keys(n).forEach((t=>{e.style[t]=n[t]})),e.width=e.width,delete e.$chartjs,!0}addEventListener(t,e,i){this.removeEventListener(t,e);const s=t.$proxies||(t.$proxies={}),n={attach:os,detach:as,resize:cs}[e]||us;s[e]=n(t,e,i)}removeEventListener(t,e){const i=t.$proxies||(t.$proxies={}),s=i[e];if(!s)return;({attach:ds,detach:ds,resize:ds}[e]||ss)(t,e,s),i[e]=void 0}getDevicePixelRatio(){return window.devicePixelRatio}getMaximumSize(t,e,i,s){return ge(t,e,i,s)}isAttached(t){const e=ae(t);return!(!e||!e.isConnected)}}function gs(t){return!oe()||\"undefined\"!=typeof OffscreenCanvas&&t instanceof OffscreenCanvas?Qi:fs}var ps=Object.freeze({__proto__:null,_detectPlatform:gs,BasePlatform:Ji,BasicPlatform:Qi,DomPlatform:fs});const ms=\"transparent\",bs={boolean:(t,e,i)=>i>.5?e:t,color(t,e,i){const s=Jt(t||ms),n=s.valid&&Jt(e||ms);return n&&n.valid?n.mix(s,i).hexString():e},number:(t,e,i)=>t+(e-t)*i};class xs{constructor(t,e,i,s){const n=e[i];s=bi([t.to,s,n,t.from]);const o=bi([t.from,n,s]);this._active=!0,this._fn=t.fn||bs[t.type||typeof o],this._easing=si[t.easing]||si.linear,this._start=Math.floor(Date.now()+(t.delay||0)),this._duration=this._total=Math.floor(t.duration),this._loop=!!t.loop,this._target=e,this._prop=i,this._from=o,this._to=s,this._promises=void 0}active(){return this._active}update(t,e,i){if(this._active){this._notify(!1);const s=this._target[this._prop],n=i-this._start,o=this._duration-n;this._start=i,this._duration=Math.floor(Math.max(o,t.duration)),this._total+=n,this._loop=!!t.loop,this._to=bi([t.to,e,s,t.from]),this._from=bi([t.from,s,e])}}cancel(){this._active&&(this.tick(Date.now()),this._active=!1,this._notify(!1))}tick(t){const e=t-this._start,i=this._duration,s=this._prop,n=this._from,o=this._loop,a=this._to;let r;if(this._active=n!==a&&(o||e<i),!this._active)return this._target[s]=a,void this._notify(!0);e<0?this._target[s]=n:(r=e/i%2,r=o&&r>1?2-r:r,r=this._easing(Math.min(1,Math.max(0,r))),this._target[s]=this._fn(n,a,r))}wait(){const t=this._promises||(this._promises=[]);return new Promise(((e,i)=>{t.push({res:e,rej:i})}))}_notify(t){const e=t?\"res\":\"rej\",i=this._promises||[];for(let t=0;t<i.length;t++)i[t][e]()}}ne.set(\"animation\",{delay:void 0,duration:1e3,easing:\"easeOutQuart\",fn:void 0,from:void 0,loop:void 0,to:void 0,type:void 0});const _s=Object.keys(ne.animation);ne.describe(\"animation\",{_fallback:!1,_indexable:!1,_scriptable:t=>\"onProgress\"!==t&&\"onComplete\"!==t&&\"fn\"!==t}),ne.set(\"animations\",{colors:{type:\"color\",properties:[\"color\",\"borderColor\",\"backgroundColor\"]},numbers:{type:\"number\",properties:[\"x\",\"y\",\"borderWidth\",\"radius\",\"tension\"]}}),ne.describe(\"animations\",{_fallback:\"animation\"}),ne.set(\"transitions\",{active:{animation:{duration:400}},resize:{animation:{duration:0}},show:{animations:{colors:{from:\"transparent\"},visible:{type:\"boolean\",duration:0}}},hide:{animations:{colors:{to:\"transparent\"},visible:{type:\"boolean\",easing:\"linear\",fn:t=>0|t}}}});class ys{constructor(t,e){this._chart=t,this._properties=new Map,this.configure(e)}configure(t){if(!n(t))return;const e=this._properties;Object.getOwnPropertyNames(t).forEach((i=>{const o=t[i];if(!n(o))return;const a={};for(const t of _s)a[t]=o[t];(s(o.properties)&&o.properties||[i]).forEach((t=>{t!==i&&e.has(t)||e.set(t,a)}))}))}_animateOptions(t,e){const i=e.options,s=function(t,e){if(!e)return;let i=t.options;if(!i)return void(t.options=e);i.$shared&&(t.options=i=Object.assign({},i,{$shared:!1,$animations:{}}));return i}(t,i);if(!s)return[];const n=this._createAnimations(s,i);return i.$shared&&function(t,e){const i=[],s=Object.keys(e);for(let e=0;e<s.length;e++){const n=t[s[e]];n&&n.active()&&i.push(n.wait())}return Promise.all(i)}(t.options.$animations,i).then((()=>{t.options=i}),(()=>{})),n}_createAnimations(t,e){const i=this._properties,s=[],n=t.$animations||(t.$animations={}),o=Object.keys(e),a=Date.now();let r;for(r=o.length-1;r>=0;--r){const l=o[r];if(\"$\"===l.charAt(0))continue;if(\"options\"===l){s.push(...this._animateOptions(t,e));continue}const h=e[l];let c=n[l];const d=i.get(l);if(c){if(d&&c.active()){c.update(d,h,a);continue}c.cancel()}d&&d.duration?(n[l]=c=new xs(d,t,l,h),s.push(c)):t[l]=h}return s}update(t,e){if(0===this._properties.size)return void Object.assign(t,e);const i=this._createAnimations(t,e);return i.length?(mt.add(this._chart,i),!0):void 0}}function vs(t,e){const i=t&&t.options||{},s=i.reverse,n=void 0===i.min?e:0,o=void 0===i.max?e:0;return{start:s?o:n,end:s?n:o}}function ws(t,e){const i=[],s=t._getSortedDatasetMetas(e);let n,o;for(n=0,o=s.length;n<o;++n)i.push(s[n].index);return i}function Ms(t,e,i,s={}){const n=t.keys,a=\"single\"===s.mode;let r,l,h,c;if(null!==e){for(r=0,l=n.length;r<l;++r){if(h=+n[r],h===i){if(s.all)continue;break}c=t.values[h],o(c)&&(a||0===e||z(e)===z(c))&&(e+=c)}return e}}function ks(t,e){const i=t&&t.options.stacked;return i||void 0===i&&void 0!==e.stack}function Ss(t,e,i){const s=t[e]||(t[e]={});return s[i]||(s[i]={})}function Ps(t,e,i,s){for(const n of e.getMatchingVisibleMetas(s).reverse()){const e=t[n.index];if(i&&e>0||!i&&e<0)return n.index}return null}function Ds(t,e){const{chart:i,_cachedMeta:s}=t,n=i._stacks||(i._stacks={}),{iScale:o,vScale:a,index:r}=s,l=o.axis,h=a.axis,c=function(t,e,i){return`${t.id}.${e.id}.${i.stack||i.type}`}(o,a,s),d=e.length;let u;for(let t=0;t<d;++t){const i=e[t],{[l]:o,[h]:d}=i;u=(i._stacks||(i._stacks={}))[h]=Ss(n,c,o),u[r]=d,u._top=Ps(u,a,!0,s.type),u._bottom=Ps(u,a,!1,s.type)}}function Os(t,e){const i=t.scales;return Object.keys(i).filter((t=>i[t].axis===e)).shift()}function Cs(t,e){const i=t.controller.index,s=t.vScale&&t.vScale.axis;if(s){e=e||t._parsed;for(const t of e){const e=t._stacks;if(!e||void 0===e[s]||void 0===e[s][i])return;delete e[s][i]}}}const As=t=>\"reset\"===t||\"none\"===t,Ts=(t,e)=>e?t:Object.assign({},t);class Ls{constructor(t,e){this.chart=t,this._ctx=t.ctx,this.index=e,this._cachedDataOpts={},this._cachedMeta=this.getMeta(),this._type=this._cachedMeta.type,this.options=void 0,this._parsing=!1,this._data=void 0,this._objectData=void 0,this._sharedOptions=void 0,this._drawStart=void 0,this._drawCount=void 0,this.enableOptionSharing=!1,this.supportsDecimation=!1,this.$context=void 0,this._syncList=[],this.initialize()}initialize(){const t=this._cachedMeta;this.configure(),this.linkScales(),t._stacked=ks(t.vScale,t),this.addElements()}updateIndex(t){this.index!==t&&Cs(this._cachedMeta),this.index=t}linkScales(){const t=this.chart,e=this._cachedMeta,i=this.getDataset(),s=(t,e,i,s)=>\"x\"===t?e:\"r\"===t?s:i,n=e.xAxisID=r(i.xAxisID,Os(t,\"x\")),o=e.yAxisID=r(i.yAxisID,Os(t,\"y\")),a=e.rAxisID=r(i.rAxisID,Os(t,\"r\")),l=e.indexAxis,h=e.iAxisID=s(l,n,o,a),c=e.vAxisID=s(l,o,n,a);e.xScale=this.getScaleForId(n),e.yScale=this.getScaleForId(o),e.rScale=this.getScaleForId(a),e.iScale=this.getScaleForId(h),e.vScale=this.getScaleForId(c)}getDataset(){return this.chart.data.datasets[this.index]}getMeta(){return this.chart.getDatasetMeta(this.index)}getScaleForId(t){return this.chart.scales[t]}_getOtherScale(t){const e=this._cachedMeta;return t===e.iScale?e.vScale:e.iScale}reset(){this._update(\"reset\")}_destroy(){const t=this._cachedMeta;this._data&&at(this._data,this),t._stacked&&Cs(t)}_dataCheck(){const t=this.getDataset(),e=t.data||(t.data=[]),i=this._data;if(n(e))this._data=function(t){const e=Object.keys(t),i=new Array(e.length);let s,n,o;for(s=0,n=e.length;s<n;++s)o=e[s],i[s]={x:o,y:t[o]};return i}(e);else if(i!==e){if(i){at(i,this);const t=this._cachedMeta;Cs(t),t._parsed=[]}e&&Object.isExtensible(e)&&ot(e,this),this._syncList=[],this._data=e}}addElements(){const t=this._cachedMeta;this._dataCheck(),this.datasetElementType&&(t.dataset=new this.datasetElementType)}buildOrUpdateElements(t){const e=this._cachedMeta,i=this.getDataset();let s=!1;this._dataCheck();const n=e._stacked;e._stacked=ks(e.vScale,e),e.stack!==i.stack&&(s=!0,Cs(e),e.stack=i.stack),this._resyncElements(t),(s||n!==e._stacked)&&Ds(this,e._parsed)}configure(){const t=this.chart.config,e=t.datasetScopeKeys(this._type),i=t.getOptionScopes(this.getDataset(),e,!0);this.options=t.createResolver(i,this.getContext()),this._parsing=this.options.parsing,this._cachedDataOpts={}}parse(t,e){const{_cachedMeta:i,_data:o}=this,{iScale:a,_stacked:r}=i,l=a.axis;let h,c,d,u=0===t&&e===o.length||i._sorted,f=t>0&&i._parsed[t-1];if(!1===this._parsing)i._parsed=o,i._sorted=!0,d=o;else{d=s(o[t])?this.parseArrayData(i,o,t,e):n(o[t])?this.parseObjectData(i,o,t,e):this.parsePrimitiveData(i,o,t,e);const a=()=>null===c[l]||f&&c[l]<f[l];for(h=0;h<e;++h)i._parsed[h+t]=c=d[h],u&&(a()&&(u=!1),f=c);i._sorted=u}r&&Ds(this,d)}parsePrimitiveData(t,e,i,s){const{iScale:n,vScale:o}=t,a=n.axis,r=o.axis,l=n.getLabels(),h=n===o,c=new Array(s);let d,u,f;for(d=0,u=s;d<u;++d)f=d+i,c[d]={[a]:h||n.parse(l[f],f),[r]:o.parse(e[f],f)};return c}parseArrayData(t,e,i,s){const{xScale:n,yScale:o}=t,a=new Array(s);let r,l,h,c;for(r=0,l=s;r<l;++r)h=r+i,c=e[h],a[r]={x:n.parse(c[0],h),y:o.parse(c[1],h)};return a}parseObjectData(t,e,i,s){const{xScale:n,yScale:o}=t,{xAxisKey:a=\"x\",yAxisKey:r=\"y\"}=this._parsing,l=new Array(s);let h,c,d,u;for(h=0,c=s;h<c;++h)d=h+i,u=e[d],l[h]={x:n.parse(y(u,a),d),y:o.parse(y(u,r),d)};return l}getParsed(t){return this._cachedMeta._parsed[t]}getDataElement(t){return this._cachedMeta.data[t]}applyStack(t,e,i){const s=this.chart,n=this._cachedMeta,o=e[t.axis];return Ms({keys:ws(s,!0),values:e._stacks[t.axis]},o,n.index,{mode:i})}updateRangeFromParsed(t,e,i,s){const n=i[e.axis];let o=null===n?NaN:n;const a=s&&i._stacks[e.axis];s&&a&&(s.values=a,o=Ms(s,n,this._cachedMeta.index)),t.min=Math.min(t.min,o),t.max=Math.max(t.max,o)}getMinMax(t,e){const i=this._cachedMeta,s=i._parsed,n=i._sorted&&t===i.iScale,a=s.length,r=this._getOtherScale(t),l=((t,e,i)=>t&&!e.hidden&&e._stacked&&{keys:ws(i,!0),values:null})(e,i,this.chart),h={min:Number.POSITIVE_INFINITY,max:Number.NEGATIVE_INFINITY},{min:c,max:d}=function(t){const{min:e,max:i,minDefined:s,maxDefined:n}=t.getUserBounds();return{min:s?e:Number.NEGATIVE_INFINITY,max:n?i:Number.POSITIVE_INFINITY}}(r);let u,f;function g(){f=s[u];const e=f[r.axis];return!o(f[t.axis])||c>e||d<e}for(u=0;u<a&&(g()||(this.updateRangeFromParsed(h,t,f,l),!n));++u);if(n)for(u=a-1;u>=0;--u)if(!g()){this.updateRangeFromParsed(h,t,f,l);break}return h}getAllParsedValues(t){const e=this._cachedMeta._parsed,i=[];let s,n,a;for(s=0,n=e.length;s<n;++s)a=e[s][t.axis],o(a)&&i.push(a);return i}getMaxOverflow(){return!1}getLabelAndValue(t){const e=this._cachedMeta,i=e.iScale,s=e.vScale,n=this.getParsed(t);return{label:i?\"\"+i.getLabelForValue(n[i.axis]):\"\",value:s?\"\"+s.getLabelForValue(n[s.axis]):\"\"}}_update(t){const e=this._cachedMeta;this.update(t||\"default\"),e._clip=function(t){let e,i,s,o;return n(t)?(e=t.top,i=t.right,s=t.bottom,o=t.left):e=i=s=o=t,{top:e,right:i,bottom:s,left:o,disabled:!1===t}}(r(this.options.clip,function(t,e,i){if(!1===i)return!1;const s=vs(t,i),n=vs(e,i);return{top:n.end,right:s.end,bottom:n.start,left:s.start}}(e.xScale,e.yScale,this.getMaxOverflow())))}update(t){}draw(){const t=this._ctx,e=this.chart,i=this._cachedMeta,s=i.data||[],n=e.chartArea,o=[],a=this._drawStart||0,r=this._drawCount||s.length-a,l=this.options.drawActiveElementsOnTop;let h;for(i.dataset&&i.dataset.draw(t,n,a,r),h=a;h<a+r;++h){const e=s[h];e.hidden||(e.active&&l?o.push(e):e.draw(t,n))}for(h=0;h<o.length;++h)o[h].draw(t,n)}getStyle(t,e){const i=e?\"active\":\"default\";return void 0===t&&this._cachedMeta.dataset?this.resolveDatasetElementOptions(i):this.resolveDataElementOptions(t||0,i)}getContext(t,e,i){const s=this.getDataset();let n;if(t>=0&&t<this._cachedMeta.data.length){const e=this._cachedMeta.data[t];n=e.$context||(e.$context=function(t,e,i){return _i(t,{active:!1,dataIndex:e,parsed:void 0,raw:void 0,element:i,index:e,mode:\"default\",type:\"data\"})}(this.getContext(),t,e)),n.parsed=this.getParsed(t),n.raw=s.data[t],n.index=n.dataIndex=t}else n=this.$context||(this.$context=function(t,e){return _i(t,{active:!1,dataset:void 0,datasetIndex:e,index:e,mode:\"default\",type:\"dataset\"})}(this.chart.getContext(),this.index)),n.dataset=s,n.index=n.datasetIndex=this.index;return n.active=!!e,n.mode=i,n}resolveDatasetElementOptions(t){return this._resolveElementOptions(this.datasetElementType.id,t)}resolveDataElementOptions(t,e){return this._resolveElementOptions(this.dataElementType.id,e,t)}_resolveElementOptions(t,e=\"default\",i){const s=\"active\"===e,n=this._cachedDataOpts,o=t+\"-\"+e,a=n[o],r=this.enableOptionSharing&&M(i);if(a)return Ts(a,r);const l=this.chart.config,h=l.datasetElementScopeKeys(this._type,t),c=s?[`${t}Hover`,\"hover\",t,\"\"]:[t,\"\"],d=l.getOptionScopes(this.getDataset(),h),u=Object.keys(ne.elements[t]),f=l.resolveNamedOptions(d,u,(()=>this.getContext(i,s)),c);return f.$shared&&(f.$shared=r,n[o]=Object.freeze(Ts(f,r))),f}_resolveAnimations(t,e,i){const s=this.chart,n=this._cachedDataOpts,o=`animation-${e}`,a=n[o];if(a)return a;let r;if(!1!==s.options.animation){const s=this.chart.config,n=s.datasetAnimationScopeKeys(this._type,e),o=s.getOptionScopes(this.getDataset(),n);r=s.createResolver(o,this.getContext(t,i,e))}const l=new ys(s,r&&r.animations);return r&&r._cacheable&&(n[o]=Object.freeze(l)),l}getSharedOptions(t){if(t.$shared)return this._sharedOptions||(this._sharedOptions=Object.assign({},t))}includeOptions(t,e){return!e||As(t)||this.chart._animationsDisabled}_getSharedOptions(t,e){const i=this.resolveDataElementOptions(t,e),s=this._sharedOptions,n=this.getSharedOptions(i),o=this.includeOptions(e,n)||n!==s;return this.updateSharedOptions(n,e,i),{sharedOptions:n,includeOptions:o}}updateElement(t,e,i,s){As(s)?Object.assign(t,i):this._resolveAnimations(e,s).update(t,i)}updateSharedOptions(t,e,i){t&&!As(e)&&this._resolveAnimations(void 0,e).update(t,i)}_setStyle(t,e,i,s){t.active=s;const n=this.getStyle(e,s);this._resolveAnimations(e,i,s).update(t,{options:!s&&this.getSharedOptions(n)||n})}removeHoverStyle(t,e,i){this._setStyle(t,i,\"active\",!1)}setHoverStyle(t,e,i){this._setStyle(t,i,\"active\",!0)}_removeDatasetHoverStyle(){const t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,\"active\",!1)}_setDatasetHoverStyle(){const t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,\"active\",!0)}_resyncElements(t){const e=this._data,i=this._cachedMeta.data;for(const[t,e,i]of this._syncList)this[t](e,i);this._syncList=[];const s=i.length,n=e.length,o=Math.min(n,s);o&&this.parse(0,o),n>s?this._insertElements(s,n-s,t):n<s&&this._removeElements(n,s-n)}_insertElements(t,e,i=!0){const s=this._cachedMeta,n=s.data,o=t+e;let a;const r=t=>{for(t.length+=e,a=t.length-1;a>=o;a--)t[a]=t[a-e]};for(r(n),a=t;a<o;++a)n[a]=new this.dataElementType;this._parsing&&r(s._parsed),this.parse(t,e),i&&this.updateElements(n,t,e,\"reset\")}updateElements(t,e,i,s){}_removeElements(t,e){const i=this._cachedMeta;if(this._parsing){const s=i._parsed.splice(t,e);i._stacked&&Cs(i,s)}i.data.splice(t,e)}_sync(t){if(this._parsing)this._syncList.push(t);else{const[e,i,s]=t;this[e](i,s)}this.chart._dataChanges.push([this.index,...t])}_onDataPush(){const t=arguments.length;this._sync([\"_insertElements\",this.getDataset().data.length-t,t])}_onDataPop(){this._sync([\"_removeElements\",this._cachedMeta.data.length-1,1])}_onDataShift(){this._sync([\"_removeElements\",0,1])}_onDataSplice(t,e){e&&this._sync([\"_removeElements\",t,e]);const i=arguments.length-2;i&&this._sync([\"_insertElements\",t,i])}_onDataUnshift(){this._sync([\"_insertElements\",0,arguments.length])}}Ls.defaults={},Ls.prototype.datasetElementType=null,Ls.prototype.dataElementType=null;class Es{constructor(){this.x=void 0,this.y=void 0,this.active=!1,this.options=void 0,this.$animations=void 0}tooltipPosition(t){const{x:e,y:i}=this.getProps([\"x\",\"y\"],t);return{x:e,y:i}}hasValue(){return B(this.x)&&B(this.y)}getProps(t,e){const i=this.$animations;if(!e||!i)return this;const s={};return t.forEach((t=>{s[t]=i[t]&&i[t].active()?i[t]._to:this[t]})),s}}Es.defaults={},Es.defaultRoutes=void 0;const Rs={values:t=>s(t)?t:\"\"+t,numeric(t,e,i){if(0===t)return\"0\";const s=this.chart.options.locale;let n,o=t;if(i.length>1){const e=Math.max(Math.abs(i[0].value),Math.abs(i[i.length-1].value));(e<1e-4||e>1e15)&&(n=\"scientific\"),o=function(t,e){let i=e.length>3?e[2].value-e[1].value:e[1].value-e[0].value;Math.abs(i)>=1&&t!==Math.floor(t)&&(i=t-Math.floor(t));return i}(t,i)}const a=I(Math.abs(o)),r=Math.max(Math.min(-1*Math.floor(a),20),0),l={notation:n,minimumFractionDigits:r,maximumFractionDigits:r};return Object.assign(l,this.options.ticks.format),li(t,s,l)},logarithmic(t,e,i){if(0===t)return\"0\";const s=t/Math.pow(10,Math.floor(I(t)));return 1===s||2===s||5===s?Rs.numeric.call(this,t,e,i):\"\"}};var Is={formatters:Rs};function zs(t,e){const s=t.options.ticks,n=s.maxTicksLimit||function(t){const e=t.options.offset,i=t._tickSize(),s=t._length/i+(e?0:1),n=t._maxLength/i;return Math.floor(Math.min(s,n))}(t),o=s.major.enabled?function(t){const e=[];let i,s;for(i=0,s=t.length;i<s;i++)t[i].major&&e.push(i);return e}(e):[],a=o.length,r=o[0],l=o[a-1],h=[];if(a>n)return function(t,e,i,s){let n,o=0,a=i[0];for(s=Math.ceil(s),n=0;n<t.length;n++)n===a&&(e.push(t[n]),o++,a=i[o*s])}(e,h,o,a/n),h;const c=function(t,e,i){const s=function(t){const e=t.length;let i,s;if(e<2)return!1;for(s=t[0],i=1;i<e;++i)if(t[i]-t[i-1]!==s)return!1;return s}(t),n=e.length/i;if(!s)return Math.max(n,1);const o=V(s);for(let t=0,e=o.length-1;t<e;t++){const e=o[t];if(e>n)return e}return Math.max(n,1)}(o,e,n);if(a>0){let t,s;const n=a>1?Math.round((l-r)/(a-1)):null;for(Fs(e,h,c,i(n)?0:r-n,r),t=0,s=a-1;t<s;t++)Fs(e,h,c,o[t],o[t+1]);return Fs(e,h,c,l,i(n)?e.length:l+n),h}return Fs(e,h,c),h}function Fs(t,e,i,s,n){const o=r(s,0),a=Math.min(r(n,t.length),t.length);let l,h,c,d=0;for(i=Math.ceil(i),n&&(l=n-s,i=l/Math.floor(l/i)),c=o;c<0;)d++,c=Math.round(o+d*i);for(h=Math.max(o,0);h<a;h++)h===c&&(e.push(t[h]),d++,c=Math.round(o+d*i))}ne.set(\"scale\",{display:!0,offset:!1,reverse:!1,beginAtZero:!1,bounds:\"ticks\",grace:0,grid:{display:!0,lineWidth:1,drawBorder:!0,drawOnChartArea:!0,drawTicks:!0,tickLength:8,tickWidth:(t,e)=>e.lineWidth,tickColor:(t,e)=>e.color,offset:!1,borderDash:[],borderDashOffset:0,borderWidth:1},title:{display:!1,text:\"\",padding:{top:4,bottom:4}},ticks:{minRotation:0,maxRotation:50,mirror:!1,textStrokeWidth:0,textStrokeColor:\"\",padding:3,display:!0,autoSkip:!0,autoSkipPadding:3,labelOffset:0,callback:Is.formatters.values,minor:{},major:{},align:\"center\",crossAlign:\"near\",showLabelBackdrop:!1,backdropColor:\"rgba(255, 255, 255, 0.75)\",backdropPadding:2}}),ne.route(\"scale.ticks\",\"color\",\"\",\"color\"),ne.route(\"scale.grid\",\"color\",\"\",\"borderColor\"),ne.route(\"scale.grid\",\"borderColor\",\"\",\"borderColor\"),ne.route(\"scale.title\",\"color\",\"\",\"color\"),ne.describe(\"scale\",{_fallback:!1,_scriptable:t=>!t.startsWith(\"before\")&&!t.startsWith(\"after\")&&\"callback\"!==t&&\"parser\"!==t,_indexable:t=>\"borderDash\"!==t&&\"tickBorderDash\"!==t}),ne.describe(\"scales\",{_fallback:\"scale\"}),ne.describe(\"scale.ticks\",{_scriptable:t=>\"backdropPadding\"!==t&&\"callback\"!==t,_indexable:t=>\"backdropPadding\"!==t});const Vs=(t,e,i)=>\"top\"===e||\"left\"===e?t[e]+i:t[e]-i;function Bs(t,e){const i=[],s=t.length/e,n=t.length;let o=0;for(;o<n;o+=s)i.push(t[Math.floor(o)]);return i}function Ns(t,e,i){const s=t.ticks.length,n=Math.min(e,s-1),o=t._startPixel,a=t._endPixel,r=1e-6;let l,h=t.getPixelForTick(n);if(!(i&&(l=1===s?Math.max(h-o,a-h):0===e?(t.getPixelForTick(1)-h)/2:(h-t.getPixelForTick(n-1))/2,h+=n<e?l:-l,h<o-r||h>a+r)))return h}function Ws(t){return t.drawTicks?t.tickLength:0}function js(t,e){if(!t.display)return 0;const i=mi(t.font,e),n=pi(t.padding);return(s(t.text)?t.text.length:1)*i.lineHeight+n.height}function Hs(t,e,i){let s=dt(t);return(i&&\"right\"!==e||!i&&\"right\"===e)&&(s=(t=>\"left\"===t?\"right\":\"right\"===t?\"left\":t)(s)),s}class $s extends Es{constructor(t){super(),this.id=t.id,this.type=t.type,this.options=void 0,this.ctx=t.ctx,this.chart=t.chart,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this._margins={left:0,right:0,top:0,bottom:0},this.maxWidth=void 0,this.maxHeight=void 0,this.paddingTop=void 0,this.paddingBottom=void 0,this.paddingLeft=void 0,this.paddingRight=void 0,this.axis=void 0,this.labelRotation=void 0,this.min=void 0,this.max=void 0,this._range=void 0,this.ticks=[],this._gridLineItems=null,this._labelItems=null,this._labelSizes=null,this._length=0,this._maxLength=0,this._longestTextCache={},this._startPixel=void 0,this._endPixel=void 0,this._reversePixels=!1,this._userMax=void 0,this._userMin=void 0,this._suggestedMax=void 0,this._suggestedMin=void 0,this._ticksLength=0,this._borderValue=0,this._cache={},this._dataLimitsCached=!1,this.$context=void 0}init(t){this.options=t.setContext(this.getContext()),this.axis=t.axis,this._userMin=this.parse(t.min),this._userMax=this.parse(t.max),this._suggestedMin=this.parse(t.suggestedMin),this._suggestedMax=this.parse(t.suggestedMax)}parse(t,e){return t}getUserBounds(){let{_userMin:t,_userMax:e,_suggestedMin:i,_suggestedMax:s}=this;return t=a(t,Number.POSITIVE_INFINITY),e=a(e,Number.NEGATIVE_INFINITY),i=a(i,Number.POSITIVE_INFINITY),s=a(s,Number.NEGATIVE_INFINITY),{min:a(t,i),max:a(e,s),minDefined:o(t),maxDefined:o(e)}}getMinMax(t){let e,{min:i,max:s,minDefined:n,maxDefined:o}=this.getUserBounds();if(n&&o)return{min:i,max:s};const r=this.getMatchingVisibleMetas();for(let a=0,l=r.length;a<l;++a)e=r[a].controller.getMinMax(this,t),n||(i=Math.min(i,e.min)),o||(s=Math.max(s,e.max));return i=o&&i>s?s:i,s=n&&i>s?i:s,{min:a(i,a(s,i)),max:a(s,a(i,s))}}getPadding(){return{left:this.paddingLeft||0,top:this.paddingTop||0,right:this.paddingRight||0,bottom:this.paddingBottom||0}}getTicks(){return this.ticks}getLabels(){const t=this.chart.data;return this.options.labels||(this.isHorizontal()?t.xLabels:t.yLabels)||t.labels||[]}beforeLayout(){this._cache={},this._dataLimitsCached=!1}beforeUpdate(){c(this.options.beforeUpdate,[this])}update(t,e,i){const{beginAtZero:s,grace:n,ticks:o}=this.options,a=o.sampleSize;this.beforeUpdate(),this.maxWidth=t,this.maxHeight=e,this._margins=i=Object.assign({left:0,right:0,top:0,bottom:0},i),this.ticks=null,this._labelSizes=null,this._gridLineItems=null,this._labelItems=null,this.beforeSetDimensions(),this.setDimensions(),this.afterSetDimensions(),this._maxLength=this.isHorizontal()?this.width+i.left+i.right:this.height+i.top+i.bottom,this._dataLimitsCached||(this.beforeDataLimits(),this.determineDataLimits(),this.afterDataLimits(),this._range=xi(this,n,s),this._dataLimitsCached=!0),this.beforeBuildTicks(),this.ticks=this.buildTicks()||[],this.afterBuildTicks();const r=a<this.ticks.length;this._convertTicksToLabels(r?Bs(this.ticks,a):this.ticks),this.configure(),this.beforeCalculateLabelRotation(),this.calculateLabelRotation(),this.afterCalculateLabelRotation(),o.display&&(o.autoSkip||\"auto\"===o.source)&&(this.ticks=zs(this,this.ticks),this._labelSizes=null,this.afterAutoSkip()),r&&this._convertTicksToLabels(this.ticks),this.beforeFit(),this.fit(),this.afterFit(),this.afterUpdate()}configure(){let t,e,i=this.options.reverse;this.isHorizontal()?(t=this.left,e=this.right):(t=this.top,e=this.bottom,i=!i),this._startPixel=t,this._endPixel=e,this._reversePixels=i,this._length=e-t,this._alignToPixels=this.options.alignToPixels}afterUpdate(){c(this.options.afterUpdate,[this])}beforeSetDimensions(){c(this.options.beforeSetDimensions,[this])}setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.left=0,this.right=this.width):(this.height=this.maxHeight,this.top=0,this.bottom=this.height),this.paddingLeft=0,this.paddingTop=0,this.paddingRight=0,this.paddingBottom=0}afterSetDimensions(){c(this.options.afterSetDimensions,[this])}_callHooks(t){this.chart.notifyPlugins(t,this.getContext()),c(this.options[t],[this])}beforeDataLimits(){this._callHooks(\"beforeDataLimits\")}determineDataLimits(){}afterDataLimits(){this._callHooks(\"afterDataLimits\")}beforeBuildTicks(){this._callHooks(\"beforeBuildTicks\")}buildTicks(){return[]}afterBuildTicks(){this._callHooks(\"afterBuildTicks\")}beforeTickToLabelConversion(){c(this.options.beforeTickToLabelConversion,[this])}generateTickLabels(t){const e=this.options.ticks;let i,s,n;for(i=0,s=t.length;i<s;i++)n=t[i],n.label=c(e.callback,[n.value,i,t],this)}afterTickToLabelConversion(){c(this.options.afterTickToLabelConversion,[this])}beforeCalculateLabelRotation(){c(this.options.beforeCalculateLabelRotation,[this])}calculateLabelRotation(){const t=this.options,e=t.ticks,i=this.ticks.length,s=e.minRotation||0,n=e.maxRotation;let o,a,r,l=s;if(!this._isVisible()||!e.display||s>=n||i<=1||!this.isHorizontal())return void(this.labelRotation=s);const h=this._getLabelSizes(),c=h.widest.width,d=h.highest.height,u=Z(this.chart.width-c,0,this.maxWidth);o=t.offset?this.maxWidth/i:u/(i-1),c+6>o&&(o=u/(i-(t.offset?.5:1)),a=this.maxHeight-Ws(t.grid)-e.padding-js(t.title,this.chart.options.font),r=Math.sqrt(c*c+d*d),l=$(Math.min(Math.asin(Z((h.highest.height+6)/o,-1,1)),Math.asin(Z(a/r,-1,1))-Math.asin(Z(d/r,-1,1)))),l=Math.max(s,Math.min(n,l))),this.labelRotation=l}afterCalculateLabelRotation(){c(this.options.afterCalculateLabelRotation,[this])}afterAutoSkip(){}beforeFit(){c(this.options.beforeFit,[this])}fit(){const t={width:0,height:0},{chart:e,options:{ticks:i,title:s,grid:n}}=this,o=this._isVisible(),a=this.isHorizontal();if(o){const o=js(s,e.options.font);if(a?(t.width=this.maxWidth,t.height=Ws(n)+o):(t.height=this.maxHeight,t.width=Ws(n)+o),i.display&&this.ticks.length){const{first:e,last:s,widest:n,highest:o}=this._getLabelSizes(),r=2*i.padding,l=H(this.labelRotation),h=Math.cos(l),c=Math.sin(l);if(a){const e=i.mirror?0:c*n.width+h*o.height;t.height=Math.min(this.maxHeight,t.height+e+r)}else{const e=i.mirror?0:h*n.width+c*o.height;t.width=Math.min(this.maxWidth,t.width+e+r)}this._calculatePadding(e,s,c,h)}}this._handleMargins(),a?(this.width=this._length=e.width-this._margins.left-this._margins.right,this.height=t.height):(this.width=t.width,this.height=this._length=e.height-this._margins.top-this._margins.bottom)}_calculatePadding(t,e,i,s){const{ticks:{align:n,padding:o},position:a}=this.options,r=0!==this.labelRotation,l=\"top\"!==a&&\"x\"===this.axis;if(this.isHorizontal()){const a=this.getPixelForTick(0)-this.left,h=this.right-this.getPixelForTick(this.ticks.length-1);let c=0,d=0;r?l?(c=s*t.width,d=i*e.height):(c=i*t.height,d=s*e.width):\"start\"===n?d=e.width:\"end\"===n?c=t.width:\"inner\"!==n&&(c=t.width/2,d=e.width/2),this.paddingLeft=Math.max((c-a+o)*this.width/(this.width-a),0),this.paddingRight=Math.max((d-h+o)*this.width/(this.width-h),0)}else{let i=e.height/2,s=t.height/2;\"start\"===n?(i=0,s=t.height):\"end\"===n&&(i=e.height,s=0),this.paddingTop=i+o,this.paddingBottom=s+o}}_handleMargins(){this._margins&&(this._margins.left=Math.max(this.paddingLeft,this._margins.left),this._margins.top=Math.max(this.paddingTop,this._margins.top),this._margins.right=Math.max(this.paddingRight,this._margins.right),this._margins.bottom=Math.max(this.paddingBottom,this._margins.bottom))}afterFit(){c(this.options.afterFit,[this])}isHorizontal(){const{axis:t,position:e}=this.options;return\"top\"===e||\"bottom\"===e||\"x\"===t}isFullSize(){return this.options.fullSize}_convertTicksToLabels(t){let e,s;for(this.beforeTickToLabelConversion(),this.generateTickLabels(t),e=0,s=t.length;e<s;e++)i(t[e].label)&&(t.splice(e,1),s--,e--);this.afterTickToLabelConversion()}_getLabelSizes(){let t=this._labelSizes;if(!t){const e=this.options.ticks.sampleSize;let i=this.ticks;e<i.length&&(i=Bs(i,e)),this._labelSizes=t=this._computeLabelSizes(i,i.length)}return t}_computeLabelSizes(t,e){const{ctx:n,_longestTextCache:o}=this,a=[],r=[];let l,h,c,u,f,g,p,m,b,x,_,y=0,v=0;for(l=0;l<e;++l){if(u=t[l].label,f=this._resolveTickFontOptions(l),n.font=g=f.string,p=o[g]=o[g]||{data:{},gc:[]},m=f.lineHeight,b=x=0,i(u)||s(u)){if(s(u))for(h=0,c=u.length;h<c;++h)_=u[h],i(_)||s(_)||(b=_e(n,p.data,p.gc,b,_),x+=m)}else b=_e(n,p.data,p.gc,b,u),x=m;a.push(b),r.push(x),y=Math.max(b,y),v=Math.max(x,v)}!function(t,e){d(t,(t=>{const i=t.gc,s=i.length/2;let n;if(s>e){for(n=0;n<s;++n)delete t.data[i[n]];i.splice(0,s)}}))}(o,e);const w=a.indexOf(y),M=r.indexOf(v),k=t=>({width:a[t]||0,height:r[t]||0});return{first:k(0),last:k(e-1),widest:k(w),highest:k(M),widths:a,heights:r}}getLabelForValue(t){return t}getPixelForValue(t,e){return NaN}getValueForPixel(t){}getPixelForTick(t){const e=this.ticks;return t<0||t>e.length-1?null:this.getPixelForValue(e[t].value)}getPixelForDecimal(t){this._reversePixels&&(t=1-t);const e=this._startPixel+t*this._length;return J(this._alignToPixels?ve(this.chart,e,0):e)}getDecimalForPixel(t){const e=(t-this._startPixel)/this._length;return this._reversePixels?1-e:e}getBasePixel(){return this.getPixelForValue(this.getBaseValue())}getBaseValue(){const{min:t,max:e}=this;return t<0&&e<0?e:t>0&&e>0?t:0}getContext(t){const e=this.ticks||[];if(t>=0&&t<e.length){const i=e[t];return i.$context||(i.$context=function(t,e,i){return _i(t,{tick:i,index:e,type:\"tick\"})}(this.getContext(),t,i))}return this.$context||(this.$context=_i(this.chart.getContext(),{scale:this,type:\"scale\"}))}_tickSize(){const t=this.options.ticks,e=H(this.labelRotation),i=Math.abs(Math.cos(e)),s=Math.abs(Math.sin(e)),n=this._getLabelSizes(),o=t.autoSkipPadding||0,a=n?n.widest.width+o:0,r=n?n.highest.height+o:0;return this.isHorizontal()?r*i>a*s?a/i:r/s:r*s<a*i?r/i:a/s}_isVisible(){const t=this.options.display;return\"auto\"!==t?!!t:this.getMatchingVisibleMetas().length>0}_computeGridLineItems(t){const e=this.axis,i=this.chart,s=this.options,{grid:o,position:a}=s,l=o.offset,h=this.isHorizontal(),c=this.ticks.length+(l?1:0),d=Ws(o),u=[],f=o.setContext(this.getContext()),g=f.drawBorder?f.borderWidth:0,p=g/2,m=function(t){return ve(i,t,g)};let b,x,_,y,v,w,M,k,S,P,D,O;if(\"top\"===a)b=m(this.bottom),w=this.bottom-d,k=b-p,P=m(t.top)+p,O=t.bottom;else if(\"bottom\"===a)b=m(this.top),P=t.top,O=m(t.bottom)-p,w=b+p,k=this.top+d;else if(\"left\"===a)b=m(this.right),v=this.right-d,M=b-p,S=m(t.left)+p,D=t.right;else if(\"right\"===a)b=m(this.left),S=t.left,D=m(t.right)-p,v=b+p,M=this.left+d;else if(\"x\"===e){if(\"center\"===a)b=m((t.top+t.bottom)/2+.5);else if(n(a)){const t=Object.keys(a)[0],e=a[t];b=m(this.chart.scales[t].getPixelForValue(e))}P=t.top,O=t.bottom,w=b+p,k=w+d}else if(\"y\"===e){if(\"center\"===a)b=m((t.left+t.right)/2);else if(n(a)){const t=Object.keys(a)[0],e=a[t];b=m(this.chart.scales[t].getPixelForValue(e))}v=b-p,M=v-d,S=t.left,D=t.right}const C=r(s.ticks.maxTicksLimit,c),A=Math.max(1,Math.ceil(c/C));for(x=0;x<c;x+=A){const t=o.setContext(this.getContext(x)),e=t.lineWidth,s=t.color,n=t.borderDash||[],a=t.borderDashOffset,r=t.tickWidth,c=t.tickColor,d=t.tickBorderDash||[],f=t.tickBorderDashOffset;_=Ns(this,x,l),void 0!==_&&(y=ve(i,_,e),h?v=M=S=D=y:w=k=P=O=y,u.push({tx1:v,ty1:w,tx2:M,ty2:k,x1:S,y1:P,x2:D,y2:O,width:e,color:s,borderDash:n,borderDashOffset:a,tickWidth:r,tickColor:c,tickBorderDash:d,tickBorderDashOffset:f}))}return this._ticksLength=c,this._borderValue=b,u}_computeLabelItems(t){const e=this.axis,i=this.options,{position:o,ticks:a}=i,r=this.isHorizontal(),l=this.ticks,{align:h,crossAlign:c,padding:d,mirror:u}=a,f=Ws(i.grid),g=f+d,p=u?-d:g,m=-H(this.labelRotation),b=[];let x,_,y,v,w,M,k,S,P,D,O,C,A=\"middle\";if(\"top\"===o)M=this.bottom-p,k=this._getXAxisLabelAlignment();else if(\"bottom\"===o)M=this.top+p,k=this._getXAxisLabelAlignment();else if(\"left\"===o){const t=this._getYAxisLabelAlignment(f);k=t.textAlign,w=t.x}else if(\"right\"===o){const t=this._getYAxisLabelAlignment(f);k=t.textAlign,w=t.x}else if(\"x\"===e){if(\"center\"===o)M=(t.top+t.bottom)/2+g;else if(n(o)){const t=Object.keys(o)[0],e=o[t];M=this.chart.scales[t].getPixelForValue(e)+g}k=this._getXAxisLabelAlignment()}else if(\"y\"===e){if(\"center\"===o)w=(t.left+t.right)/2-g;else if(n(o)){const t=Object.keys(o)[0],e=o[t];w=this.chart.scales[t].getPixelForValue(e)}k=this._getYAxisLabelAlignment(f).textAlign}\"y\"===e&&(\"start\"===h?A=\"top\":\"end\"===h&&(A=\"bottom\"));const T=this._getLabelSizes();for(x=0,_=l.length;x<_;++x){y=l[x],v=y.label;const t=a.setContext(this.getContext(x));S=this.getPixelForTick(x)+a.labelOffset,P=this._resolveTickFontOptions(x),D=P.lineHeight,O=s(v)?v.length:1;const e=O/2,i=t.color,n=t.textStrokeColor,h=t.textStrokeWidth;let d,f=k;if(r?(w=S,\"inner\"===k&&(f=x===_-1?this.options.reverse?\"left\":\"right\":0===x?this.options.reverse?\"right\":\"left\":\"center\"),C=\"top\"===o?\"near\"===c||0!==m?-O*D+D/2:\"center\"===c?-T.highest.height/2-e*D+D:-T.highest.height+D/2:\"near\"===c||0!==m?D/2:\"center\"===c?T.highest.height/2-e*D:T.highest.height-O*D,u&&(C*=-1)):(M=S,C=(1-O)*D/2),t.showLabelBackdrop){const e=pi(t.backdropPadding),i=T.heights[x],s=T.widths[x];let n=M+C-e.top,o=w-e.left;switch(A){case\"middle\":n-=i/2;break;case\"bottom\":n-=i}switch(k){case\"center\":o-=s/2;break;case\"right\":o-=s}d={left:o,top:n,width:s+e.width,height:i+e.height,color:t.backdropColor}}b.push({rotation:m,label:v,font:P,color:i,strokeColor:n,strokeWidth:h,textOffset:C,textAlign:f,textBaseline:A,translation:[w,M],backdrop:d})}return b}_getXAxisLabelAlignment(){const{position:t,ticks:e}=this.options;if(-H(this.labelRotation))return\"top\"===t?\"left\":\"right\";let i=\"center\";return\"start\"===e.align?i=\"left\":\"end\"===e.align?i=\"right\":\"inner\"===e.align&&(i=\"inner\"),i}_getYAxisLabelAlignment(t){const{position:e,ticks:{crossAlign:i,mirror:s,padding:n}}=this.options,o=t+n,a=this._getLabelSizes().widest.width;let r,l;return\"left\"===e?s?(l=this.right+n,\"near\"===i?r=\"left\":\"center\"===i?(r=\"center\",l+=a/2):(r=\"right\",l+=a)):(l=this.right-o,\"near\"===i?r=\"right\":\"center\"===i?(r=\"center\",l-=a/2):(r=\"left\",l=this.left)):\"right\"===e?s?(l=this.left+n,\"near\"===i?r=\"right\":\"center\"===i?(r=\"center\",l-=a/2):(r=\"left\",l-=a)):(l=this.left+o,\"near\"===i?r=\"left\":\"center\"===i?(r=\"center\",l+=a/2):(r=\"right\",l=this.right)):r=\"right\",{textAlign:r,x:l}}_computeLabelArea(){if(this.options.ticks.mirror)return;const t=this.chart,e=this.options.position;return\"left\"===e||\"right\"===e?{top:0,left:this.left,bottom:t.height,right:this.right}:\"top\"===e||\"bottom\"===e?{top:this.top,left:0,bottom:this.bottom,right:t.width}:void 0}drawBackground(){const{ctx:t,options:{backgroundColor:e},left:i,top:s,width:n,height:o}=this;e&&(t.save(),t.fillStyle=e,t.fillRect(i,s,n,o),t.restore())}getLineWidthForValue(t){const e=this.options.grid;if(!this._isVisible()||!e.display)return 0;const i=this.ticks.findIndex((e=>e.value===t));if(i>=0){return e.setContext(this.getContext(i)).lineWidth}return 0}drawGrid(t){const e=this.options.grid,i=this.ctx,s=this._gridLineItems||(this._gridLineItems=this._computeGridLineItems(t));let n,o;const a=(t,e,s)=>{s.width&&s.color&&(i.save(),i.lineWidth=s.width,i.strokeStyle=s.color,i.setLineDash(s.borderDash||[]),i.lineDashOffset=s.borderDashOffset,i.beginPath(),i.moveTo(t.x,t.y),i.lineTo(e.x,e.y),i.stroke(),i.restore())};if(e.display)for(n=0,o=s.length;n<o;++n){const t=s[n];e.drawOnChartArea&&a({x:t.x1,y:t.y1},{x:t.x2,y:t.y2},t),e.drawTicks&&a({x:t.tx1,y:t.ty1},{x:t.tx2,y:t.ty2},{color:t.tickColor,width:t.tickWidth,borderDash:t.tickBorderDash,borderDashOffset:t.tickBorderDashOffset})}}drawBorder(){const{chart:t,ctx:e,options:{grid:i}}=this,s=i.setContext(this.getContext()),n=i.drawBorder?s.borderWidth:0;if(!n)return;const o=i.setContext(this.getContext(0)).lineWidth,a=this._borderValue;let r,l,h,c;this.isHorizontal()?(r=ve(t,this.left,n)-n/2,l=ve(t,this.right,o)+o/2,h=c=a):(h=ve(t,this.top,n)-n/2,c=ve(t,this.bottom,o)+o/2,r=l=a),e.save(),e.lineWidth=s.borderWidth,e.strokeStyle=s.borderColor,e.beginPath(),e.moveTo(r,h),e.lineTo(l,c),e.stroke(),e.restore()}drawLabels(t){if(!this.options.ticks.display)return;const e=this.ctx,i=this._computeLabelArea();i&&Pe(e,i);const s=this._labelItems||(this._labelItems=this._computeLabelItems(t));let n,o;for(n=0,o=s.length;n<o;++n){const t=s[n],i=t.font,o=t.label;t.backdrop&&(e.fillStyle=t.backdrop.color,e.fillRect(t.backdrop.left,t.backdrop.top,t.backdrop.width,t.backdrop.height)),Ae(e,o,0,t.textOffset,i,t)}i&&De(e)}drawTitle(){const{ctx:t,options:{position:e,title:i,reverse:o}}=this;if(!i.display)return;const a=mi(i.font),r=pi(i.padding),l=i.align;let h=a.lineHeight/2;\"bottom\"===e||\"center\"===e||n(e)?(h+=r.bottom,s(i.text)&&(h+=a.lineHeight*(i.text.length-1))):h+=r.top;const{titleX:c,titleY:d,maxWidth:u,rotation:f}=function(t,e,i,s){const{top:o,left:a,bottom:r,right:l,chart:h}=t,{chartArea:c,scales:d}=h;let u,f,g,p=0;const m=r-o,b=l-a;if(t.isHorizontal()){if(f=ut(s,a,l),n(i)){const t=Object.keys(i)[0],s=i[t];g=d[t].getPixelForValue(s)+m-e}else g=\"center\"===i?(c.bottom+c.top)/2+m-e:Vs(t,i,e);u=l-a}else{if(n(i)){const t=Object.keys(i)[0],s=i[t];f=d[t].getPixelForValue(s)-b+e}else f=\"center\"===i?(c.left+c.right)/2-b+e:Vs(t,i,e);g=ut(s,r,o),p=\"left\"===i?-L:L}return{titleX:f,titleY:g,maxWidth:u,rotation:p}}(this,h,e,l);Ae(t,i.text,0,0,a,{color:i.color,maxWidth:u,rotation:f,textAlign:Hs(l,e,o),textBaseline:\"middle\",translation:[c,d]})}draw(t){this._isVisible()&&(this.drawBackground(),this.drawGrid(t),this.drawBorder(),this.drawTitle(),this.drawLabels(t))}_layers(){const t=this.options,e=t.ticks&&t.ticks.z||0,i=r(t.grid&&t.grid.z,-1);return this._isVisible()&&this.draw===$s.prototype.draw?[{z:i,draw:t=>{this.drawBackground(),this.drawGrid(t),this.drawTitle()}},{z:i+1,draw:()=>{this.drawBorder()}},{z:e,draw:t=>{this.drawLabels(t)}}]:[{z:e,draw:t=>{this.draw(t)}}]}getMatchingVisibleMetas(t){const e=this.chart.getSortedVisibleDatasetMetas(),i=this.axis+\"AxisID\",s=[];let n,o;for(n=0,o=e.length;n<o;++n){const o=e[n];o[i]!==this.id||t&&o.type!==t||s.push(o)}return s}_resolveTickFontOptions(t){return mi(this.options.ticks.setContext(this.getContext(t)).font)}_maxDigits(){const t=this._resolveTickFontOptions(0).lineHeight;return(this.isHorizontal()?this.width:this.height)/t}}class Ys{constructor(t,e,i){this.type=t,this.scope=e,this.override=i,this.items=Object.create(null)}isForType(t){return Object.prototype.isPrototypeOf.call(this.type.prototype,t.prototype)}register(t){const e=Object.getPrototypeOf(t);let i;(function(t){return\"id\"in t&&\"defaults\"in t})(e)&&(i=this.register(e));const s=this.items,n=t.id,o=this.scope+\".\"+n;if(!n)throw new Error(\"class does not have id: \"+t);return n in s||(s[n]=t,function(t,e,i){const s=m(Object.create(null),[i?ne.get(i):{},ne.get(e),t.defaults]);ne.set(e,s),t.defaultRoutes&&function(t,e){Object.keys(e).forEach((i=>{const s=i.split(\".\"),n=s.pop(),o=[t].concat(s).join(\".\"),a=e[i].split(\".\"),r=a.pop(),l=a.join(\".\");ne.route(o,n,l,r)}))}(e,t.defaultRoutes);t.descriptors&&ne.describe(e,t.descriptors)}(t,o,i),this.override&&ne.override(t.id,t.overrides)),o}get(t){return this.items[t]}unregister(t){const e=this.items,i=t.id,s=this.scope;i in e&&delete e[i],s&&i in ne[s]&&(delete ne[s][i],this.override&&delete te[i])}}var Us=new class{constructor(){this.controllers=new Ys(Ls,\"datasets\",!0),this.elements=new Ys(Es,\"elements\"),this.plugins=new Ys(Object,\"plugins\"),this.scales=new Ys($s,\"scales\"),this._typedRegistries=[this.controllers,this.scales,this.elements]}add(...t){this._each(\"register\",t)}remove(...t){this._each(\"unregister\",t)}addControllers(...t){this._each(\"register\",t,this.controllers)}addElements(...t){this._each(\"register\",t,this.elements)}addPlugins(...t){this._each(\"register\",t,this.plugins)}addScales(...t){this._each(\"register\",t,this.scales)}getController(t){return this._get(t,this.controllers,\"controller\")}getElement(t){return this._get(t,this.elements,\"element\")}getPlugin(t){return this._get(t,this.plugins,\"plugin\")}getScale(t){return this._get(t,this.scales,\"scale\")}removeControllers(...t){this._each(\"unregister\",t,this.controllers)}removeElements(...t){this._each(\"unregister\",t,this.elements)}removePlugins(...t){this._each(\"unregister\",t,this.plugins)}removeScales(...t){this._each(\"unregister\",t,this.scales)}_each(t,e,i){[...e].forEach((e=>{const s=i||this._getRegistryForType(e);i||s.isForType(e)||s===this.plugins&&e.id?this._exec(t,s,e):d(e,(e=>{const s=i||this._getRegistryForType(e);this._exec(t,s,e)}))}))}_exec(t,e,i){const s=w(t);c(i[\"before\"+s],[],i),e[t](i),c(i[\"after\"+s],[],i)}_getRegistryForType(t){for(let e=0;e<this._typedRegistries.length;e++){const i=this._typedRegistries[e];if(i.isForType(t))return i}return this.plugins}_get(t,e,i){const s=e.get(t);if(void 0===s)throw new Error('\"'+t+'\" is not a registered '+i+\".\");return s}};class Xs{constructor(){this._init=[]}notify(t,e,i,s){\"beforeInit\"===e&&(this._init=this._createDescriptors(t,!0),this._notify(this._init,t,\"install\"));const n=s?this._descriptors(t).filter(s):this._descriptors(t),o=this._notify(n,t,e,i);return\"afterDestroy\"===e&&(this._notify(n,t,\"stop\"),this._notify(this._init,t,\"uninstall\")),o}_notify(t,e,i,s){s=s||{};for(const n of t){const t=n.plugin;if(!1===c(t[i],[e,s,n.options],t)&&s.cancelable)return!1}return!0}invalidate(){i(this._cache)||(this._oldCache=this._cache,this._cache=void 0)}_descriptors(t){if(this._cache)return this._cache;const e=this._cache=this._createDescriptors(t);return this._notifyStateChanges(t),e}_createDescriptors(t,e){const i=t&&t.config,s=r(i.options&&i.options.plugins,{}),n=function(t){const e={},i=[],s=Object.keys(Us.plugins.items);for(let t=0;t<s.length;t++)i.push(Us.getPlugin(s[t]));const n=t.plugins||[];for(let t=0;t<n.length;t++){const s=n[t];-1===i.indexOf(s)&&(i.push(s),e[s.id]=!0)}return{plugins:i,localIds:e}}(i);return!1!==s||e?function(t,{plugins:e,localIds:i},s,n){const o=[],a=t.getContext();for(const r of e){const e=r.id,l=qs(s[e],n);null!==l&&o.push({plugin:r,options:Ks(t.config,{plugin:r,local:i[e]},l,a)})}return o}(t,n,s,e):[]}_notifyStateChanges(t){const e=this._oldCache||[],i=this._cache,s=(t,e)=>t.filter((t=>!e.some((e=>t.plugin.id===e.plugin.id))));this._notify(s(e,i),t,\"stop\"),this._notify(s(i,e),t,\"start\")}}function qs(t,e){return e||!1!==t?!0===t?{}:t:null}function Ks(t,{plugin:e,local:i},s,n){const o=t.pluginScopeKeys(e),a=t.getOptionScopes(s,o);return i&&e.defaults&&a.push(e.defaults),t.createResolver(a,n,[\"\"],{scriptable:!1,indexable:!1,allKeys:!0})}function Gs(t,e){const i=ne.datasets[t]||{};return((e.datasets||{})[t]||{}).indexAxis||e.indexAxis||i.indexAxis||\"x\"}function Zs(t,e){return\"x\"===t||\"y\"===t?t:e.axis||(\"top\"===(i=e.position)||\"bottom\"===i?\"x\":\"left\"===i||\"right\"===i?\"y\":void 0)||t.charAt(0).toLowerCase();var i}function Js(t){const e=t.options||(t.options={});e.plugins=r(e.plugins,{}),e.scales=function(t,e){const i=te[t.type]||{scales:{}},s=e.scales||{},o=Gs(t.type,e),a=Object.create(null),r=Object.create(null);return Object.keys(s).forEach((t=>{const e=s[t];if(!n(e))return console.error(`Invalid scale configuration for scale: ${t}`);if(e._proxy)return console.warn(`Ignoring resolver passed as options for scale: ${t}`);const l=Zs(t,e),h=function(t,e){return t===e?\"_index_\":\"_value_\"}(l,o),c=i.scales||{};a[l]=a[l]||t,r[t]=b(Object.create(null),[{axis:l},e,c[l],c[h]])})),t.data.datasets.forEach((i=>{const n=i.type||t.type,o=i.indexAxis||Gs(n,e),l=(te[n]||{}).scales||{};Object.keys(l).forEach((t=>{const e=function(t,e){let i=t;return\"_index_\"===t?i=e:\"_value_\"===t&&(i=\"x\"===e?\"y\":\"x\"),i}(t,o),n=i[e+\"AxisID\"]||a[e]||e;r[n]=r[n]||Object.create(null),b(r[n],[{axis:e},s[n],l[t]])}))})),Object.keys(r).forEach((t=>{const e=r[t];b(e,[ne.scales[e.type],ne.scale])})),r}(t,e)}function Qs(t){return(t=t||{}).datasets=t.datasets||[],t.labels=t.labels||[],t}const tn=new Map,en=new Set;function sn(t,e){let i=tn.get(t);return i||(i=e(),tn.set(t,i),en.add(i)),i}const nn=(t,e,i)=>{const s=y(e,i);void 0!==s&&t.add(s)};class on{constructor(t){this._config=function(t){return(t=t||{}).data=Qs(t.data),Js(t),t}(t),this._scopeCache=new Map,this._resolverCache=new Map}get platform(){return this._config.platform}get type(){return this._config.type}set type(t){this._config.type=t}get data(){return this._config.data}set data(t){this._config.data=Qs(t)}get options(){return this._config.options}set options(t){this._config.options=t}get plugins(){return this._config.plugins}update(){const t=this._config;this.clearCache(),Js(t)}clearCache(){this._scopeCache.clear(),this._resolverCache.clear()}datasetScopeKeys(t){return sn(t,(()=>[[`datasets.${t}`,\"\"]]))}datasetAnimationScopeKeys(t,e){return sn(`${t}.transition.${e}`,(()=>[[`datasets.${t}.transitions.${e}`,`transitions.${e}`],[`datasets.${t}`,\"\"]]))}datasetElementScopeKeys(t,e){return sn(`${t}-${e}`,(()=>[[`datasets.${t}.elements.${e}`,`datasets.${t}`,`elements.${e}`,\"\"]]))}pluginScopeKeys(t){const e=t.id;return sn(`${this.type}-plugin-${e}`,(()=>[[`plugins.${e}`,...t.additionalOptionScopes||[]]]))}_cachedScopes(t,e){const i=this._scopeCache;let s=i.get(t);return s&&!e||(s=new Map,i.set(t,s)),s}getOptionScopes(t,e,i){const{options:s,type:n}=this,o=this._cachedScopes(t,i),a=o.get(e);if(a)return a;const r=new Set;e.forEach((e=>{t&&(r.add(t),e.forEach((e=>nn(r,t,e)))),e.forEach((t=>nn(r,s,t))),e.forEach((t=>nn(r,te[n]||{},t))),e.forEach((t=>nn(r,ne,t))),e.forEach((t=>nn(r,ee,t)))}));const l=Array.from(r);return 0===l.length&&l.push(Object.create(null)),en.has(e)&&o.set(e,l),l}chartOptionScopes(){const{options:t,type:e}=this;return[t,te[e]||{},ne.datasets[e]||{},{type:e},ne,ee]}resolveNamedOptions(t,e,i,n=[\"\"]){const o={$shared:!0},{resolver:a,subPrefixes:r}=an(this._resolverCache,t,n);let l=a;if(function(t,e){const{isScriptable:i,isIndexable:n}=Ie(t);for(const o of e){const e=i(o),a=n(o),r=(a||e)&&t[o];if(e&&(k(r)||rn(r))||a&&s(r))return!0}return!1}(a,e)){o.$shared=!1;l=Re(a,i=k(i)?i():i,this.createResolver(t,i,r))}for(const t of e)o[t]=l[t];return o}createResolver(t,e,i=[\"\"],s){const{resolver:o}=an(this._resolverCache,t,i);return n(e)?Re(o,e,void 0,s):o}}function an(t,e,i){let s=t.get(e);s||(s=new Map,t.set(e,s));const n=i.join();let o=s.get(n);if(!o){o={resolver:Ee(e,i),subPrefixes:i.filter((t=>!t.toLowerCase().includes(\"hover\")))},s.set(n,o)}return o}const rn=t=>n(t)&&Object.getOwnPropertyNames(t).reduce(((e,i)=>e||k(t[i])),!1);const ln=[\"top\",\"bottom\",\"left\",\"right\",\"chartArea\"];function hn(t,e){return\"top\"===t||\"bottom\"===t||-1===ln.indexOf(t)&&\"x\"===e}function cn(t,e){return function(i,s){return i[t]===s[t]?i[e]-s[e]:i[t]-s[t]}}function dn(t){const e=t.chart,i=e.options.animation;e.notifyPlugins(\"afterRender\"),c(i&&i.onComplete,[t],e)}function un(t){const e=t.chart,i=e.options.animation;c(i&&i.onProgress,[t],e)}function fn(t){return oe()&&\"string\"==typeof t?t=document.getElementById(t):t&&t.length&&(t=t[0]),t&&t.canvas&&(t=t.canvas),t}const gn={},pn=t=>{const e=fn(t);return Object.values(gn).filter((t=>t.canvas===e)).pop()};function mn(t,e,i){const s=Object.keys(t);for(const n of s){const s=+n;if(s>=e){const o=t[n];delete t[n],(i>0||s>e)&&(t[s+i]=o)}}}class bn{constructor(t,i){const s=this.config=new on(i),n=fn(t),o=pn(n);if(o)throw new Error(\"Canvas is already in use. Chart with ID '\"+o.id+\"' must be destroyed before the canvas with ID '\"+o.canvas.id+\"' can be reused.\");const a=s.createResolver(s.chartOptionScopes(),this.getContext());this.platform=new(s.platform||gs(n)),this.platform.updateConfig(s);const r=this.platform.acquireContext(n,a.aspectRatio),l=r&&r.canvas,h=l&&l.height,c=l&&l.width;this.id=e(),this.ctx=r,this.canvas=l,this.width=c,this.height=h,this._options=a,this._aspectRatio=this.aspectRatio,this._layers=[],this._metasets=[],this._stacks=void 0,this.boxes=[],this.currentDevicePixelRatio=void 0,this.chartArea=void 0,this._active=[],this._lastEvent=void 0,this._listeners={},this._responsiveListeners=void 0,this._sortedMetasets=[],this.scales={},this._plugins=new Xs,this.$proxies={},this._hiddenIndices={},this.attached=!1,this._animationsDisabled=void 0,this.$context=void 0,this._doResize=ct((t=>this.update(t)),a.resizeDelay||0),this._dataChanges=[],gn[this.id]=this,r&&l?(mt.listen(this,\"complete\",dn),mt.listen(this,\"progress\",un),this._initialize(),this.attached&&this.update()):console.error(\"Failed to create chart: can't acquire context from the given item\")}get aspectRatio(){const{options:{aspectRatio:t,maintainAspectRatio:e},width:s,height:n,_aspectRatio:o}=this;return i(t)?e&&o?o:n?s/n:null:t}get data(){return this.config.data}set data(t){this.config.data=t}get options(){return this._options}set options(t){this.config.options=t}_initialize(){return this.notifyPlugins(\"beforeInit\"),this.options.responsive?this.resize():pe(this,this.options.devicePixelRatio),this.bindEvents(),this.notifyPlugins(\"afterInit\"),this}clear(){return we(this.canvas,this.ctx),this}stop(){return mt.stop(this),this}resize(t,e){mt.running(this)?this._resizeBeforeDraw={width:t,height:e}:this._resize(t,e)}_resize(t,e){const i=this.options,s=this.canvas,n=i.maintainAspectRatio&&this.aspectRatio,o=this.platform.getMaximumSize(s,t,e,n),a=i.devicePixelRatio||this.platform.getDevicePixelRatio(),r=this.width?\"resize\":\"attach\";this.width=o.width,this.height=o.height,this._aspectRatio=this.aspectRatio,pe(this,a,!0)&&(this.notifyPlugins(\"resize\",{size:o}),c(i.onResize,[this,o],this),this.attached&&this._doResize(r)&&this.render())}ensureScalesHaveIDs(){d(this.options.scales||{},((t,e)=>{t.id=e}))}buildOrUpdateScales(){const t=this.options,e=t.scales,i=this.scales,s=Object.keys(i).reduce(((t,e)=>(t[e]=!1,t)),{});let n=[];e&&(n=n.concat(Object.keys(e).map((t=>{const i=e[t],s=Zs(t,i),n=\"r\"===s,o=\"x\"===s;return{options:i,dposition:n?\"chartArea\":o?\"bottom\":\"left\",dtype:n?\"radialLinear\":o?\"category\":\"linear\"}})))),d(n,(e=>{const n=e.options,o=n.id,a=Zs(o,n),l=r(n.type,e.dtype);void 0!==n.position&&hn(n.position,a)===hn(e.dposition)||(n.position=e.dposition),s[o]=!0;let h=null;if(o in i&&i[o].type===l)h=i[o];else{h=new(Us.getScale(l))({id:o,type:l,ctx:this.ctx,chart:this}),i[h.id]=h}h.init(n,t)})),d(s,((t,e)=>{t||delete i[e]})),d(i,(t=>{Zi.configure(this,t,t.options),Zi.addBox(this,t)}))}_updateMetasets(){const t=this._metasets,e=this.data.datasets.length,i=t.length;if(t.sort(((t,e)=>t.index-e.index)),i>e){for(let t=e;t<i;++t)this._destroyDatasetMeta(t);t.splice(e,i-e)}this._sortedMetasets=t.slice(0).sort(cn(\"order\",\"index\"))}_removeUnreferencedMetasets(){const{_metasets:t,data:{datasets:e}}=this;t.length>e.length&&delete this._stacks,t.forEach(((t,i)=>{0===e.filter((e=>e===t._dataset)).length&&this._destroyDatasetMeta(i)}))}buildOrUpdateControllers(){const t=[],e=this.data.datasets;let i,s;for(this._removeUnreferencedMetasets(),i=0,s=e.length;i<s;i++){const s=e[i];let n=this.getDatasetMeta(i);const o=s.type||this.config.type;if(n.type&&n.type!==o&&(this._destroyDatasetMeta(i),n=this.getDatasetMeta(i)),n.type=o,n.indexAxis=s.indexAxis||Gs(o,this.options),n.order=s.order||0,n.index=i,n.label=\"\"+s.label,n.visible=this.isDatasetVisible(i),n.controller)n.controller.updateIndex(i),n.controller.linkScales();else{const e=Us.getController(o),{datasetElementType:s,dataElementType:a}=ne.datasets[o];Object.assign(e.prototype,{dataElementType:Us.getElement(a),datasetElementType:s&&Us.getElement(s)}),n.controller=new e(this,i),t.push(n.controller)}}return this._updateMetasets(),t}_resetElements(){d(this.data.datasets,((t,e)=>{this.getDatasetMeta(e).controller.reset()}),this)}reset(){this._resetElements(),this.notifyPlugins(\"reset\")}update(t){const e=this.config;e.update();const i=this._options=e.createResolver(e.chartOptionScopes(),this.getContext()),s=this._animationsDisabled=!i.animation;if(this._updateScales(),this._checkEventBindings(),this._updateHiddenIndices(),this._plugins.invalidate(),!1===this.notifyPlugins(\"beforeUpdate\",{mode:t,cancelable:!0}))return;const n=this.buildOrUpdateControllers();this.notifyPlugins(\"beforeElementsUpdate\");let o=0;for(let t=0,e=this.data.datasets.length;t<e;t++){const{controller:e}=this.getDatasetMeta(t),i=!s&&-1===n.indexOf(e);e.buildOrUpdateElements(i),o=Math.max(+e.getMaxOverflow(),o)}o=this._minPadding=i.layout.autoPadding?o:0,this._updateLayout(o),s||d(n,(t=>{t.reset()})),this._updateDatasets(t),this.notifyPlugins(\"afterUpdate\",{mode:t}),this._layers.sort(cn(\"z\",\"_idx\"));const{_active:a,_lastEvent:r}=this;r?this._eventHandler(r,!0):a.length&&this._updateHoverStyles(a,a,!0),this.render()}_updateScales(){d(this.scales,(t=>{Zi.removeBox(this,t)})),this.ensureScalesHaveIDs(),this.buildOrUpdateScales()}_checkEventBindings(){const t=this.options,e=new Set(Object.keys(this._listeners)),i=new Set(t.events);S(e,i)&&!!this._responsiveListeners===t.responsive||(this.unbindEvents(),this.bindEvents())}_updateHiddenIndices(){const{_hiddenIndices:t}=this,e=this._getUniformDataChanges()||[];for(const{method:i,start:s,count:n}of e){mn(t,s,\"_removeElements\"===i?-n:n)}}_getUniformDataChanges(){const t=this._dataChanges;if(!t||!t.length)return;this._dataChanges=[];const e=this.data.datasets.length,i=e=>new Set(t.filter((t=>t[0]===e)).map(((t,e)=>e+\",\"+t.splice(1).join(\",\")))),s=i(0);for(let t=1;t<e;t++)if(!S(s,i(t)))return;return Array.from(s).map((t=>t.split(\",\"))).map((t=>({method:t[1],start:+t[2],count:+t[3]})))}_updateLayout(t){if(!1===this.notifyPlugins(\"beforeLayout\",{cancelable:!0}))return;Zi.update(this,this.width,this.height,t);const e=this.chartArea,i=e.width<=0||e.height<=0;this._layers=[],d(this.boxes,(t=>{i&&\"chartArea\"===t.position||(t.configure&&t.configure(),this._layers.push(...t._layers()))}),this),this._layers.forEach(((t,e)=>{t._idx=e})),this.notifyPlugins(\"afterLayout\")}_updateDatasets(t){if(!1!==this.notifyPlugins(\"beforeDatasetsUpdate\",{mode:t,cancelable:!0})){for(let t=0,e=this.data.datasets.length;t<e;++t)this.getDatasetMeta(t).controller.configure();for(let e=0,i=this.data.datasets.length;e<i;++e)this._updateDataset(e,k(t)?t({datasetIndex:e}):t);this.notifyPlugins(\"afterDatasetsUpdate\",{mode:t})}}_updateDataset(t,e){const i=this.getDatasetMeta(t),s={meta:i,index:t,mode:e,cancelable:!0};!1!==this.notifyPlugins(\"beforeDatasetUpdate\",s)&&(i.controller._update(e),s.cancelable=!1,this.notifyPlugins(\"afterDatasetUpdate\",s))}render(){!1!==this.notifyPlugins(\"beforeRender\",{cancelable:!0})&&(mt.has(this)?this.attached&&!mt.running(this)&&mt.start(this):(this.draw(),dn({chart:this})))}draw(){let t;if(this._resizeBeforeDraw){const{width:t,height:e}=this._resizeBeforeDraw;this._resize(t,e),this._resizeBeforeDraw=null}if(this.clear(),this.width<=0||this.height<=0)return;if(!1===this.notifyPlugins(\"beforeDraw\",{cancelable:!0}))return;const e=this._layers;for(t=0;t<e.length&&e[t].z<=0;++t)e[t].draw(this.chartArea);for(this._drawDatasets();t<e.length;++t)e[t].draw(this.chartArea);this.notifyPlugins(\"afterDraw\")}_getSortedDatasetMetas(t){const e=this._sortedMetasets,i=[];let s,n;for(s=0,n=e.length;s<n;++s){const n=e[s];t&&!n.visible||i.push(n)}return i}getSortedVisibleDatasetMetas(){return this._getSortedDatasetMetas(!0)}_drawDatasets(){if(!1===this.notifyPlugins(\"beforeDatasetsDraw\",{cancelable:!0}))return;const t=this.getSortedVisibleDatasetMetas();for(let e=t.length-1;e>=0;--e)this._drawDataset(t[e]);this.notifyPlugins(\"afterDatasetsDraw\")}_drawDataset(t){const e=this.ctx,i=t._clip,s=!i.disabled,n=this.chartArea,o={meta:t,index:t.index,cancelable:!0};!1!==this.notifyPlugins(\"beforeDatasetDraw\",o)&&(s&&Pe(e,{left:!1===i.left?0:n.left-i.left,right:!1===i.right?this.width:n.right+i.right,top:!1===i.top?0:n.top-i.top,bottom:!1===i.bottom?this.height:n.bottom+i.bottom}),t.controller.draw(),s&&De(e),o.cancelable=!1,this.notifyPlugins(\"afterDatasetDraw\",o))}isPointInArea(t){return Se(t,this.chartArea,this._minPadding)}getElementsAtEventForMode(t,e,i,s){const n=Vi.modes[e];return\"function\"==typeof n?n(this,t,i,s):[]}getDatasetMeta(t){const e=this.data.datasets[t],i=this._metasets;let s=i.filter((t=>t&&t._dataset===e)).pop();return s||(s={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:e&&e.order||0,index:t,_dataset:e,_parsed:[],_sorted:!1},i.push(s)),s}getContext(){return this.$context||(this.$context=_i(null,{chart:this,type:\"chart\"}))}getVisibleDatasetCount(){return this.getSortedVisibleDatasetMetas().length}isDatasetVisible(t){const e=this.data.datasets[t];if(!e)return!1;const i=this.getDatasetMeta(t);return\"boolean\"==typeof i.hidden?!i.hidden:!e.hidden}setDatasetVisibility(t,e){this.getDatasetMeta(t).hidden=!e}toggleDataVisibility(t){this._hiddenIndices[t]=!this._hiddenIndices[t]}getDataVisibility(t){return!this._hiddenIndices[t]}_updateVisibility(t,e,i){const s=i?\"show\":\"hide\",n=this.getDatasetMeta(t),o=n.controller._resolveAnimations(void 0,s);M(e)?(n.data[e].hidden=!i,this.update()):(this.setDatasetVisibility(t,i),o.update(n,{visible:i}),this.update((e=>e.datasetIndex===t?s:void 0)))}hide(t,e){this._updateVisibility(t,e,!1)}show(t,e){this._updateVisibility(t,e,!0)}_destroyDatasetMeta(t){const e=this._metasets[t];e&&e.controller&&e.controller._destroy(),delete this._metasets[t]}_stop(){let t,e;for(this.stop(),mt.remove(this),t=0,e=this.data.datasets.length;t<e;++t)this._destroyDatasetMeta(t)}destroy(){this.notifyPlugins(\"beforeDestroy\");const{canvas:t,ctx:e}=this;this._stop(),this.config.clearCache(),t&&(this.unbindEvents(),we(t,e),this.platform.releaseContext(e),this.canvas=null,this.ctx=null),this.notifyPlugins(\"destroy\"),delete gn[this.id],this.notifyPlugins(\"afterDestroy\")}toBase64Image(...t){return this.canvas.toDataURL(...t)}bindEvents(){this.bindUserEvents(),this.options.responsive?this.bindResponsiveEvents():this.attached=!0}bindUserEvents(){const t=this._listeners,e=this.platform,i=(i,s)=>{e.addEventListener(this,i,s),t[i]=s},s=(t,e,i)=>{t.offsetX=e,t.offsetY=i,this._eventHandler(t)};d(this.options.events,(t=>i(t,s)))}bindResponsiveEvents(){this._responsiveListeners||(this._responsiveListeners={});const t=this._responsiveListeners,e=this.platform,i=(i,s)=>{e.addEventListener(this,i,s),t[i]=s},s=(i,s)=>{t[i]&&(e.removeEventListener(this,i,s),delete t[i])},n=(t,e)=>{this.canvas&&this.resize(t,e)};let o;const a=()=>{s(\"attach\",a),this.attached=!0,this.resize(),i(\"resize\",n),i(\"detach\",o)};o=()=>{this.attached=!1,s(\"resize\",n),this._stop(),this._resize(0,0),i(\"attach\",a)},e.isAttached(this.canvas)?a():o()}unbindEvents(){d(this._listeners,((t,e)=>{this.platform.removeEventListener(this,e,t)})),this._listeners={},d(this._responsiveListeners,((t,e)=>{this.platform.removeEventListener(this,e,t)})),this._responsiveListeners=void 0}updateHoverStyle(t,e,i){const s=i?\"set\":\"remove\";let n,o,a,r;for(\"dataset\"===e&&(n=this.getDatasetMeta(t[0].datasetIndex),n.controller[\"_\"+s+\"DatasetHoverStyle\"]()),a=0,r=t.length;a<r;++a){o=t[a];const e=o&&this.getDatasetMeta(o.datasetIndex).controller;e&&e[s+\"HoverStyle\"](o.element,o.datasetIndex,o.index)}}getActiveElements(){return this._active||[]}setActiveElements(t){const e=this._active||[],i=t.map((({datasetIndex:t,index:e})=>{const i=this.getDatasetMeta(t);if(!i)throw new Error(\"No dataset found at index \"+t);return{datasetIndex:t,element:i.data[e],index:e}}));!u(i,e)&&(this._active=i,this._lastEvent=null,this._updateHoverStyles(i,e))}notifyPlugins(t,e,i){return this._plugins.notify(this,t,e,i)}_updateHoverStyles(t,e,i){const s=this.options.hover,n=(t,e)=>t.filter((t=>!e.some((e=>t.datasetIndex===e.datasetIndex&&t.index===e.index)))),o=n(e,t),a=i?t:n(t,e);o.length&&this.updateHoverStyle(o,s.mode,!1),a.length&&s.mode&&this.updateHoverStyle(a,s.mode,!0)}_eventHandler(t,e){const i={event:t,replay:e,cancelable:!0,inChartArea:this.isPointInArea(t)},s=e=>(e.options.events||this.options.events).includes(t.native.type);if(!1===this.notifyPlugins(\"beforeEvent\",i,s))return;const n=this._handleEvent(t,e,i.inChartArea);return i.cancelable=!1,this.notifyPlugins(\"afterEvent\",i,s),(n||i.changed)&&this.render(),this}_handleEvent(t,e,i){const{_active:s=[],options:n}=this,o=e,a=this._getActiveElements(t,s,i,o),r=P(t),l=function(t,e,i,s){return i&&\"mouseout\"!==t.type?s?e:t:null}(t,this._lastEvent,i,r);i&&(this._lastEvent=null,c(n.onHover,[t,a,this],this),r&&c(n.onClick,[t,a,this],this));const h=!u(a,s);return(h||e)&&(this._active=a,this._updateHoverStyles(a,s,e)),this._lastEvent=l,h}_getActiveElements(t,e,i,s){if(\"mouseout\"===t.type)return[];if(!i)return e;const n=this.options.hover;return this.getElementsAtEventForMode(t,n.mode,n,s)}}const xn=()=>d(bn.instances,(t=>t._plugins.invalidate())),_n=!0;function yn(){throw new Error(\"This method is not implemented: Check that a complete date adapter is provided.\")}Object.defineProperties(bn,{defaults:{enumerable:_n,value:ne},instances:{enumerable:_n,value:gn},overrides:{enumerable:_n,value:te},registry:{enumerable:_n,value:Us},version:{enumerable:_n,value:\"3.9.1\"},getChart:{enumerable:_n,value:pn},register:{enumerable:_n,value:(...t)=>{Us.add(...t),xn()}},unregister:{enumerable:_n,value:(...t)=>{Us.remove(...t),xn()}}});class vn{constructor(t){this.options=t||{}}init(t){}formats(){return yn()}parse(t,e){return yn()}format(t,e){return yn()}add(t,e,i){return yn()}diff(t,e,i){return yn()}startOf(t,e,i){return yn()}endOf(t,e){return yn()}}vn.override=function(t){Object.assign(vn.prototype,t)};var wn={_date:vn};function Mn(t){const e=t.iScale,i=function(t,e){if(!t._cache.$bar){const i=t.getMatchingVisibleMetas(e);let s=[];for(let e=0,n=i.length;e<n;e++)s=s.concat(i[e].controller.getAllParsedValues(t));t._cache.$bar=rt(s.sort(((t,e)=>t-e)))}return t._cache.$bar}(e,t.type);let s,n,o,a,r=e._length;const l=()=>{32767!==o&&-32768!==o&&(M(a)&&(r=Math.min(r,Math.abs(o-a)||r)),a=o)};for(s=0,n=i.length;s<n;++s)o=e.getPixelForValue(i[s]),l();for(a=void 0,s=0,n=e.ticks.length;s<n;++s)o=e.getPixelForTick(s),l();return r}function kn(t,e,i,n){return s(t)?function(t,e,i,s){const n=i.parse(t[0],s),o=i.parse(t[1],s),a=Math.min(n,o),r=Math.max(n,o);let l=a,h=r;Math.abs(a)>Math.abs(r)&&(l=r,h=a),e[i.axis]=h,e._custom={barStart:l,barEnd:h,start:n,end:o,min:a,max:r}}(t,e,i,n):e[i.axis]=i.parse(t,n),e}function Sn(t,e,i,s){const n=t.iScale,o=t.vScale,a=n.getLabels(),r=n===o,l=[];let h,c,d,u;for(h=i,c=i+s;h<c;++h)u=e[h],d={},d[n.axis]=r||n.parse(a[h],h),l.push(kn(u,d,o,h));return l}function Pn(t){return t&&void 0!==t.barStart&&void 0!==t.barEnd}function Dn(t,e,i,s){let n=e.borderSkipped;const o={};if(!n)return void(t.borderSkipped=o);if(!0===n)return void(t.borderSkipped={top:!0,right:!0,bottom:!0,left:!0});const{start:a,end:r,reverse:l,top:h,bottom:c}=function(t){let e,i,s,n,o;return t.horizontal?(e=t.base>t.x,i=\"left\",s=\"right\"):(e=t.base<t.y,i=\"bottom\",s=\"top\"),e?(n=\"end\",o=\"start\"):(n=\"start\",o=\"end\"),{start:i,end:s,reverse:e,top:n,bottom:o}}(t);\"middle\"===n&&i&&(t.enableBorderRadius=!0,(i._top||0)===s?n=h:(i._bottom||0)===s?n=c:(o[On(c,a,r,l)]=!0,n=h)),o[On(n,a,r,l)]=!0,t.borderSkipped=o}function On(t,e,i,s){var n,o,a;return s?(a=i,t=Cn(t=(n=t)===(o=e)?a:n===a?o:n,i,e)):t=Cn(t,e,i),t}function Cn(t,e,i){return\"start\"===t?e:\"end\"===t?i:t}function An(t,{inflateAmount:e},i){t.inflateAmount=\"auto\"===e?1===i?.33:0:e}class Tn extends Ls{parsePrimitiveData(t,e,i,s){return Sn(t,e,i,s)}parseArrayData(t,e,i,s){return Sn(t,e,i,s)}parseObjectData(t,e,i,s){const{iScale:n,vScale:o}=t,{xAxisKey:a=\"x\",yAxisKey:r=\"y\"}=this._parsing,l=\"x\"===n.axis?a:r,h=\"x\"===o.axis?a:r,c=[];let d,u,f,g;for(d=i,u=i+s;d<u;++d)g=e[d],f={},f[n.axis]=n.parse(y(g,l),d),c.push(kn(y(g,h),f,o,d));return c}updateRangeFromParsed(t,e,i,s){super.updateRangeFromParsed(t,e,i,s);const n=i._custom;n&&e===this._cachedMeta.vScale&&(t.min=Math.min(t.min,n.min),t.max=Math.max(t.max,n.max))}getMaxOverflow(){return 0}getLabelAndValue(t){const e=this._cachedMeta,{iScale:i,vScale:s}=e,n=this.getParsed(t),o=n._custom,a=Pn(o)?\"[\"+o.start+\", \"+o.end+\"]\":\"\"+s.getLabelForValue(n[s.axis]);return{label:\"\"+i.getLabelForValue(n[i.axis]),value:a}}initialize(){this.enableOptionSharing=!0,super.initialize();this._cachedMeta.stack=this.getDataset().stack}update(t){const e=this._cachedMeta;this.updateElements(e.data,0,e.data.length,t)}updateElements(t,e,s,n){const o=\"reset\"===n,{index:a,_cachedMeta:{vScale:r}}=this,l=r.getBasePixel(),h=r.isHorizontal(),c=this._getRuler(),{sharedOptions:d,includeOptions:u}=this._getSharedOptions(e,n);for(let f=e;f<e+s;f++){const e=this.getParsed(f),s=o||i(e[r.axis])?{base:l,head:l}:this._calculateBarValuePixels(f),g=this._calculateBarIndexPixels(f,c),p=(e._stacks||{})[r.axis],m={horizontal:h,base:s.base,enableBorderRadius:!p||Pn(e._custom)||a===p._top||a===p._bottom,x:h?s.head:g.center,y:h?g.center:s.head,height:h?g.size:Math.abs(s.size),width:h?Math.abs(s.size):g.size};u&&(m.options=d||this.resolveDataElementOptions(f,t[f].active?\"active\":n));const b=m.options||t[f].options;Dn(m,b,p,a),An(m,b,c.ratio),this.updateElement(t[f],f,m,n)}}_getStacks(t,e){const{iScale:s}=this._cachedMeta,n=s.getMatchingVisibleMetas(this._type).filter((t=>t.controller.options.grouped)),o=s.options.stacked,a=[],r=t=>{const s=t.controller.getParsed(e),n=s&&s[t.vScale.axis];if(i(n)||isNaN(n))return!0};for(const i of n)if((void 0===e||!r(i))&&((!1===o||-1===a.indexOf(i.stack)||void 0===o&&void 0===i.stack)&&a.push(i.stack),i.index===t))break;return a.length||a.push(void 0),a}_getStackCount(t){return this._getStacks(void 0,t).length}_getStackIndex(t,e,i){const s=this._getStacks(t,i),n=void 0!==e?s.indexOf(e):-1;return-1===n?s.length-1:n}_getRuler(){const t=this.options,e=this._cachedMeta,i=e.iScale,s=[];let n,o;for(n=0,o=e.data.length;n<o;++n)s.push(i.getPixelForValue(this.getParsed(n)[i.axis],n));const a=t.barThickness;return{min:a||Mn(e),pixels:s,start:i._startPixel,end:i._endPixel,stackCount:this._getStackCount(),scale:i,grouped:t.grouped,ratio:a?1:t.categoryPercentage*t.barPercentage}}_calculateBarValuePixels(t){const{_cachedMeta:{vScale:e,_stacked:s},options:{base:n,minBarLength:o}}=this,a=n||0,r=this.getParsed(t),l=r._custom,h=Pn(l);let c,d,u=r[e.axis],f=0,g=s?this.applyStack(e,r,s):u;g!==u&&(f=g-u,g=u),h&&(u=l.barStart,g=l.barEnd-l.barStart,0!==u&&z(u)!==z(l.barEnd)&&(f=0),f+=u);const p=i(n)||h?f:n;let m=e.getPixelForValue(p);if(c=this.chart.getDataVisibility(t)?e.getPixelForValue(f+g):m,d=c-m,Math.abs(d)<o){d=function(t,e,i){return 0!==t?z(t):(e.isHorizontal()?1:-1)*(e.min>=i?1:-1)}(d,e,a)*o,u===a&&(m-=d/2);const t=e.getPixelForDecimal(0),i=e.getPixelForDecimal(1),s=Math.min(t,i),n=Math.max(t,i);m=Math.max(Math.min(m,n),s),c=m+d}if(m===e.getPixelForValue(a)){const t=z(d)*e.getLineWidthForValue(a)/2;m+=t,d-=t}return{size:d,base:m,head:c,center:c+d/2}}_calculateBarIndexPixels(t,e){const s=e.scale,n=this.options,o=n.skipNull,a=r(n.maxBarThickness,1/0);let l,h;if(e.grouped){const s=o?this._getStackCount(t):e.stackCount,r=\"flex\"===n.barThickness?function(t,e,i,s){const n=e.pixels,o=n[t];let a=t>0?n[t-1]:null,r=t<n.length-1?n[t+1]:null;const l=i.categoryPercentage;null===a&&(a=o-(null===r?e.end-e.start:r-o)),null===r&&(r=o+o-a);const h=o-(o-Math.min(a,r))/2*l;return{chunk:Math.abs(r-a)/2*l/s,ratio:i.barPercentage,start:h}}(t,e,n,s):function(t,e,s,n){const o=s.barThickness;let a,r;return i(o)?(a=e.min*s.categoryPercentage,r=s.barPercentage):(a=o*n,r=1),{chunk:a/n,ratio:r,start:e.pixels[t]-a/2}}(t,e,n,s),c=this._getStackIndex(this.index,this._cachedMeta.stack,o?t:void 0);l=r.start+r.chunk*c+r.chunk/2,h=Math.min(a,r.chunk*r.ratio)}else l=s.getPixelForValue(this.getParsed(t)[s.axis],t),h=Math.min(a,e.min*e.ratio);return{base:l-h/2,head:l+h/2,center:l,size:h}}draw(){const t=this._cachedMeta,e=t.vScale,i=t.data,s=i.length;let n=0;for(;n<s;++n)null!==this.getParsed(n)[e.axis]&&i[n].draw(this._ctx)}}Tn.id=\"bar\",Tn.defaults={datasetElementType:!1,dataElementType:\"bar\",categoryPercentage:.8,barPercentage:.9,grouped:!0,animations:{numbers:{type:\"number\",properties:[\"x\",\"y\",\"base\",\"width\",\"height\"]}}},Tn.overrides={scales:{_index_:{type:\"category\",offset:!0,grid:{offset:!0}},_value_:{type:\"linear\",beginAtZero:!0}}};class Ln extends Ls{initialize(){this.enableOptionSharing=!0,super.initialize()}parsePrimitiveData(t,e,i,s){const n=super.parsePrimitiveData(t,e,i,s);for(let t=0;t<n.length;t++)n[t]._custom=this.resolveDataElementOptions(t+i).radius;return n}parseArrayData(t,e,i,s){const n=super.parseArrayData(t,e,i,s);for(let t=0;t<n.length;t++){const s=e[i+t];n[t]._custom=r(s[2],this.resolveDataElementOptions(t+i).radius)}return n}parseObjectData(t,e,i,s){const n=super.parseObjectData(t,e,i,s);for(let t=0;t<n.length;t++){const s=e[i+t];n[t]._custom=r(s&&s.r&&+s.r,this.resolveDataElementOptions(t+i).radius)}return n}getMaxOverflow(){const t=this._cachedMeta.data;let e=0;for(let i=t.length-1;i>=0;--i)e=Math.max(e,t[i].size(this.resolveDataElementOptions(i))/2);return e>0&&e}getLabelAndValue(t){const e=this._cachedMeta,{xScale:i,yScale:s}=e,n=this.getParsed(t),o=i.getLabelForValue(n.x),a=s.getLabelForValue(n.y),r=n._custom;return{label:e.label,value:\"(\"+o+\", \"+a+(r?\", \"+r:\"\")+\")\"}}update(t){const e=this._cachedMeta.data;this.updateElements(e,0,e.length,t)}updateElements(t,e,i,s){const n=\"reset\"===s,{iScale:o,vScale:a}=this._cachedMeta,{sharedOptions:r,includeOptions:l}=this._getSharedOptions(e,s),h=o.axis,c=a.axis;for(let d=e;d<e+i;d++){const e=t[d],i=!n&&this.getParsed(d),u={},f=u[h]=n?o.getPixelForDecimal(.5):o.getPixelForValue(i[h]),g=u[c]=n?a.getBasePixel():a.getPixelForValue(i[c]);u.skip=isNaN(f)||isNaN(g),l&&(u.options=r||this.resolveDataElementOptions(d,e.active?\"active\":s),n&&(u.options.radius=0)),this.updateElement(e,d,u,s)}}resolveDataElementOptions(t,e){const i=this.getParsed(t);let s=super.resolveDataElementOptions(t,e);s.$shared&&(s=Object.assign({},s,{$shared:!1}));const n=s.radius;return\"active\"!==e&&(s.radius=0),s.radius+=r(i&&i._custom,n),s}}Ln.id=\"bubble\",Ln.defaults={datasetElementType:!1,dataElementType:\"point\",animations:{numbers:{type:\"number\",properties:[\"x\",\"y\",\"borderWidth\",\"radius\"]}}},Ln.overrides={scales:{x:{type:\"linear\"},y:{type:\"linear\"}},plugins:{tooltip:{callbacks:{title:()=>\"\"}}}};class En extends Ls{constructor(t,e){super(t,e),this.enableOptionSharing=!0,this.innerRadius=void 0,this.outerRadius=void 0,this.offsetX=void 0,this.offsetY=void 0}linkScales(){}parse(t,e){const i=this.getDataset().data,s=this._cachedMeta;if(!1===this._parsing)s._parsed=i;else{let o,a,r=t=>+i[t];if(n(i[t])){const{key:t=\"value\"}=this._parsing;r=e=>+y(i[e],t)}for(o=t,a=t+e;o<a;++o)s._parsed[o]=r(o)}}_getRotation(){return H(this.options.rotation-90)}_getCircumference(){return H(this.options.circumference)}_getRotationExtents(){let t=O,e=-O;for(let i=0;i<this.chart.data.datasets.length;++i)if(this.chart.isDatasetVisible(i)){const s=this.chart.getDatasetMeta(i).controller,n=s._getRotation(),o=s._getCircumference();t=Math.min(t,n),e=Math.max(e,n+o)}return{rotation:t,circumference:e-t}}update(t){const e=this.chart,{chartArea:i}=e,s=this._cachedMeta,n=s.data,o=this.getMaxBorderWidth()+this.getMaxOffset(n)+this.options.spacing,a=Math.max((Math.min(i.width,i.height)-o)/2,0),r=Math.min(l(this.options.cutout,a),1),c=this._getRingWeight(this.index),{circumference:d,rotation:u}=this._getRotationExtents(),{ratioX:f,ratioY:g,offsetX:p,offsetY:m}=function(t,e,i){let s=1,n=1,o=0,a=0;if(e<O){const r=t,l=r+e,h=Math.cos(r),c=Math.sin(r),d=Math.cos(l),u=Math.sin(l),f=(t,e,s)=>G(t,r,l,!0)?1:Math.max(e,e*i,s,s*i),g=(t,e,s)=>G(t,r,l,!0)?-1:Math.min(e,e*i,s,s*i),p=f(0,h,d),m=f(L,c,u),b=g(D,h,d),x=g(D+L,c,u);s=(p-b)/2,n=(m-x)/2,o=-(p+b)/2,a=-(m+x)/2}return{ratioX:s,ratioY:n,offsetX:o,offsetY:a}}(u,d,r),b=(i.width-o)/f,x=(i.height-o)/g,_=Math.max(Math.min(b,x)/2,0),y=h(this.options.radius,_),v=(y-Math.max(y*r,0))/this._getVisibleDatasetWeightTotal();this.offsetX=p*y,this.offsetY=m*y,s.total=this.calculateTotal(),this.outerRadius=y-v*this._getRingWeightOffset(this.index),this.innerRadius=Math.max(this.outerRadius-v*c,0),this.updateElements(n,0,n.length,t)}_circumference(t,e){const i=this.options,s=this._cachedMeta,n=this._getCircumference();return e&&i.animation.animateRotate||!this.chart.getDataVisibility(t)||null===s._parsed[t]||s.data[t].hidden?0:this.calculateCircumference(s._parsed[t]*n/O)}updateElements(t,e,i,s){const n=\"reset\"===s,o=this.chart,a=o.chartArea,r=o.options.animation,l=(a.left+a.right)/2,h=(a.top+a.bottom)/2,c=n&&r.animateScale,d=c?0:this.innerRadius,u=c?0:this.outerRadius,{sharedOptions:f,includeOptions:g}=this._getSharedOptions(e,s);let p,m=this._getRotation();for(p=0;p<e;++p)m+=this._circumference(p,n);for(p=e;p<e+i;++p){const e=this._circumference(p,n),i=t[p],o={x:l+this.offsetX,y:h+this.offsetY,startAngle:m,endAngle:m+e,circumference:e,outerRadius:u,innerRadius:d};g&&(o.options=f||this.resolveDataElementOptions(p,i.active?\"active\":s)),m+=e,this.updateElement(i,p,o,s)}}calculateTotal(){const t=this._cachedMeta,e=t.data;let i,s=0;for(i=0;i<e.length;i++){const n=t._parsed[i];null===n||isNaN(n)||!this.chart.getDataVisibility(i)||e[i].hidden||(s+=Math.abs(n))}return s}calculateCircumference(t){const e=this._cachedMeta.total;return e>0&&!isNaN(t)?O*(Math.abs(t)/e):0}getLabelAndValue(t){const e=this._cachedMeta,i=this.chart,s=i.data.labels||[],n=li(e._parsed[t],i.options.locale);return{label:s[t]||\"\",value:n}}getMaxBorderWidth(t){let e=0;const i=this.chart;let s,n,o,a,r;if(!t)for(s=0,n=i.data.datasets.length;s<n;++s)if(i.isDatasetVisible(s)){o=i.getDatasetMeta(s),t=o.data,a=o.controller;break}if(!t)return 0;for(s=0,n=t.length;s<n;++s)r=a.resolveDataElementOptions(s),\"inner\"!==r.borderAlign&&(e=Math.max(e,r.borderWidth||0,r.hoverBorderWidth||0));return e}getMaxOffset(t){let e=0;for(let i=0,s=t.length;i<s;++i){const t=this.resolveDataElementOptions(i);e=Math.max(e,t.offset||0,t.hoverOffset||0)}return e}_getRingWeightOffset(t){let e=0;for(let i=0;i<t;++i)this.chart.isDatasetVisible(i)&&(e+=this._getRingWeight(i));return e}_getRingWeight(t){return Math.max(r(this.chart.data.datasets[t].weight,1),0)}_getVisibleDatasetWeightTotal(){return this._getRingWeightOffset(this.chart.data.datasets.length)||1}}En.id=\"doughnut\",En.defaults={datasetElementType:!1,dataElementType:\"arc\",animation:{animateRotate:!0,animateScale:!1},animations:{numbers:{type:\"number\",properties:[\"circumference\",\"endAngle\",\"innerRadius\",\"outerRadius\",\"startAngle\",\"x\",\"y\",\"offset\",\"borderWidth\",\"spacing\"]}},cutout:\"50%\",rotation:0,circumference:360,radius:\"100%\",spacing:0,indexAxis:\"r\"},En.descriptors={_scriptable:t=>\"spacing\"!==t,_indexable:t=>\"spacing\"!==t},En.overrides={aspectRatio:1,plugins:{legend:{labels:{generateLabels(t){const e=t.data;if(e.labels.length&&e.datasets.length){const{labels:{pointStyle:i}}=t.legend.options;return e.labels.map(((e,s)=>{const n=t.getDatasetMeta(0).controller.getStyle(s);return{text:e,fillStyle:n.backgroundColor,strokeStyle:n.borderColor,lineWidth:n.borderWidth,pointStyle:i,hidden:!t.getDataVisibility(s),index:s}}))}return[]}},onClick(t,e,i){i.chart.toggleDataVisibility(e.index),i.chart.update()}},tooltip:{callbacks:{title:()=>\"\",label(t){let e=t.label;const i=\": \"+t.formattedValue;return s(e)?(e=e.slice(),e[0]+=i):e+=i,e}}}}};class Rn extends Ls{initialize(){this.enableOptionSharing=!0,this.supportsDecimation=!0,super.initialize()}update(t){const e=this._cachedMeta,{dataset:i,data:s=[],_dataset:n}=e,o=this.chart._animationsDisabled;let{start:a,count:r}=gt(e,s,o);this._drawStart=a,this._drawCount=r,pt(e)&&(a=0,r=s.length),i._chart=this.chart,i._datasetIndex=this.index,i._decimated=!!n._decimated,i.points=s;const l=this.resolveDatasetElementOptions(t);this.options.showLine||(l.borderWidth=0),l.segment=this.options.segment,this.updateElement(i,void 0,{animated:!o,options:l},t),this.updateElements(s,a,r,t)}updateElements(t,e,s,n){const o=\"reset\"===n,{iScale:a,vScale:r,_stacked:l,_dataset:h}=this._cachedMeta,{sharedOptions:c,includeOptions:d}=this._getSharedOptions(e,n),u=a.axis,f=r.axis,{spanGaps:g,segment:p}=this.options,m=B(g)?g:Number.POSITIVE_INFINITY,b=this.chart._animationsDisabled||o||\"none\"===n;let x=e>0&&this.getParsed(e-1);for(let g=e;g<e+s;++g){const e=t[g],s=this.getParsed(g),_=b?e:{},y=i(s[f]),v=_[u]=a.getPixelForValue(s[u],g),w=_[f]=o||y?r.getBasePixel():r.getPixelForValue(l?this.applyStack(r,s,l):s[f],g);_.skip=isNaN(v)||isNaN(w)||y,_.stop=g>0&&Math.abs(s[u]-x[u])>m,p&&(_.parsed=s,_.raw=h.data[g]),d&&(_.options=c||this.resolveDataElementOptions(g,e.active?\"active\":n)),b||this.updateElement(e,g,_,n),x=s}}getMaxOverflow(){const t=this._cachedMeta,e=t.dataset,i=e.options&&e.options.borderWidth||0,s=t.data||[];if(!s.length)return i;const n=s[0].size(this.resolveDataElementOptions(0)),o=s[s.length-1].size(this.resolveDataElementOptions(s.length-1));return Math.max(i,n,o)/2}draw(){const t=this._cachedMeta;t.dataset.updateControlPoints(this.chart.chartArea,t.iScale.axis),super.draw()}}Rn.id=\"line\",Rn.defaults={datasetElementType:\"line\",dataElementType:\"point\",showLine:!0,spanGaps:!1},Rn.overrides={scales:{_index_:{type:\"category\"},_value_:{type:\"linear\"}}};class In extends Ls{constructor(t,e){super(t,e),this.innerRadius=void 0,this.outerRadius=void 0}getLabelAndValue(t){const e=this._cachedMeta,i=this.chart,s=i.data.labels||[],n=li(e._parsed[t].r,i.options.locale);return{label:s[t]||\"\",value:n}}parseObjectData(t,e,i,s){return Ue.bind(this)(t,e,i,s)}update(t){const e=this._cachedMeta.data;this._updateRadius(),this.updateElements(e,0,e.length,t)}getMinMax(){const t=this._cachedMeta,e={min:Number.POSITIVE_INFINITY,max:Number.NEGATIVE_INFINITY};return t.data.forEach(((t,i)=>{const s=this.getParsed(i).r;!isNaN(s)&&this.chart.getDataVisibility(i)&&(s<e.min&&(e.min=s),s>e.max&&(e.max=s))})),e}_updateRadius(){const t=this.chart,e=t.chartArea,i=t.options,s=Math.min(e.right-e.left,e.bottom-e.top),n=Math.max(s/2,0),o=(n-Math.max(i.cutoutPercentage?n/100*i.cutoutPercentage:1,0))/t.getVisibleDatasetCount();this.outerRadius=n-o*this.index,this.innerRadius=this.outerRadius-o}updateElements(t,e,i,s){const n=\"reset\"===s,o=this.chart,a=o.options.animation,r=this._cachedMeta.rScale,l=r.xCenter,h=r.yCenter,c=r.getIndexAngle(0)-.5*D;let d,u=c;const f=360/this.countVisibleElements();for(d=0;d<e;++d)u+=this._computeAngle(d,s,f);for(d=e;d<e+i;d++){const e=t[d];let i=u,g=u+this._computeAngle(d,s,f),p=o.getDataVisibility(d)?r.getDistanceFromCenterForValue(this.getParsed(d).r):0;u=g,n&&(a.animateScale&&(p=0),a.animateRotate&&(i=g=c));const m={x:l,y:h,innerRadius:0,outerRadius:p,startAngle:i,endAngle:g,options:this.resolveDataElementOptions(d,e.active?\"active\":s)};this.updateElement(e,d,m,s)}}countVisibleElements(){const t=this._cachedMeta;let e=0;return t.data.forEach(((t,i)=>{!isNaN(this.getParsed(i).r)&&this.chart.getDataVisibility(i)&&e++})),e}_computeAngle(t,e,i){return this.chart.getDataVisibility(t)?H(this.resolveDataElementOptions(t,e).angle||i):0}}In.id=\"polarArea\",In.defaults={dataElementType:\"arc\",animation:{animateRotate:!0,animateScale:!0},animations:{numbers:{type:\"number\",properties:[\"x\",\"y\",\"startAngle\",\"endAngle\",\"innerRadius\",\"outerRadius\"]}},indexAxis:\"r\",startAngle:0},In.overrides={aspectRatio:1,plugins:{legend:{labels:{generateLabels(t){const e=t.data;if(e.labels.length&&e.datasets.length){const{labels:{pointStyle:i}}=t.legend.options;return e.labels.map(((e,s)=>{const n=t.getDatasetMeta(0).controller.getStyle(s);return{text:e,fillStyle:n.backgroundColor,strokeStyle:n.borderColor,lineWidth:n.borderWidth,pointStyle:i,hidden:!t.getDataVisibility(s),index:s}}))}return[]}},onClick(t,e,i){i.chart.toggleDataVisibility(e.index),i.chart.update()}},tooltip:{callbacks:{title:()=>\"\",label:t=>t.chart.data.labels[t.dataIndex]+\": \"+t.formattedValue}}},scales:{r:{type:\"radialLinear\",angleLines:{display:!1},beginAtZero:!0,grid:{circular:!0},pointLabels:{display:!1},startAngle:0}}};class zn extends En{}zn.id=\"pie\",zn.defaults={cutout:0,rotation:0,circumference:360,radius:\"100%\"};class Fn extends Ls{getLabelAndValue(t){const e=this._cachedMeta.vScale,i=this.getParsed(t);return{label:e.getLabels()[t],value:\"\"+e.getLabelForValue(i[e.axis])}}parseObjectData(t,e,i,s){return Ue.bind(this)(t,e,i,s)}update(t){const e=this._cachedMeta,i=e.dataset,s=e.data||[],n=e.iScale.getLabels();if(i.points=s,\"resize\"!==t){const e=this.resolveDatasetElementOptions(t);this.options.showLine||(e.borderWidth=0);const o={_loop:!0,_fullLoop:n.length===s.length,options:e};this.updateElement(i,void 0,o,t)}this.updateElements(s,0,s.length,t)}updateElements(t,e,i,s){const n=this._cachedMeta.rScale,o=\"reset\"===s;for(let a=e;a<e+i;a++){const e=t[a],i=this.resolveDataElementOptions(a,e.active?\"active\":s),r=n.getPointPositionForValue(a,this.getParsed(a).r),l=o?n.xCenter:r.x,h=o?n.yCenter:r.y,c={x:l,y:h,angle:r.angle,skip:isNaN(l)||isNaN(h),options:i};this.updateElement(e,a,c,s)}}}Fn.id=\"radar\",Fn.defaults={datasetElementType:\"line\",dataElementType:\"point\",indexAxis:\"r\",showLine:!0,elements:{line:{fill:\"start\"}}},Fn.overrides={aspectRatio:1,scales:{r:{type:\"radialLinear\"}}};class Vn extends Ls{update(t){const e=this._cachedMeta,{data:i=[]}=e,s=this.chart._animationsDisabled;let{start:n,count:o}=gt(e,i,s);if(this._drawStart=n,this._drawCount=o,pt(e)&&(n=0,o=i.length),this.options.showLine){const{dataset:n,_dataset:o}=e;n._chart=this.chart,n._datasetIndex=this.index,n._decimated=!!o._decimated,n.points=i;const a=this.resolveDatasetElementOptions(t);a.segment=this.options.segment,this.updateElement(n,void 0,{animated:!s,options:a},t)}this.updateElements(i,n,o,t)}addElements(){const{showLine:t}=this.options;!this.datasetElementType&&t&&(this.datasetElementType=Us.getElement(\"line\")),super.addElements()}updateElements(t,e,s,n){const o=\"reset\"===n,{iScale:a,vScale:r,_stacked:l,_dataset:h}=this._cachedMeta,c=this.resolveDataElementOptions(e,n),d=this.getSharedOptions(c),u=this.includeOptions(n,d),f=a.axis,g=r.axis,{spanGaps:p,segment:m}=this.options,b=B(p)?p:Number.POSITIVE_INFINITY,x=this.chart._animationsDisabled||o||\"none\"===n;let _=e>0&&this.getParsed(e-1);for(let c=e;c<e+s;++c){const e=t[c],s=this.getParsed(c),p=x?e:{},y=i(s[g]),v=p[f]=a.getPixelForValue(s[f],c),w=p[g]=o||y?r.getBasePixel():r.getPixelForValue(l?this.applyStack(r,s,l):s[g],c);p.skip=isNaN(v)||isNaN(w)||y,p.stop=c>0&&Math.abs(s[f]-_[f])>b,m&&(p.parsed=s,p.raw=h.data[c]),u&&(p.options=d||this.resolveDataElementOptions(c,e.active?\"active\":n)),x||this.updateElement(e,c,p,n),_=s}this.updateSharedOptions(d,n,c)}getMaxOverflow(){const t=this._cachedMeta,e=t.data||[];if(!this.options.showLine){let t=0;for(let i=e.length-1;i>=0;--i)t=Math.max(t,e[i].size(this.resolveDataElementOptions(i))/2);return t>0&&t}const i=t.dataset,s=i.options&&i.options.borderWidth||0;if(!e.length)return s;const n=e[0].size(this.resolveDataElementOptions(0)),o=e[e.length-1].size(this.resolveDataElementOptions(e.length-1));return Math.max(s,n,o)/2}}Vn.id=\"scatter\",Vn.defaults={datasetElementType:!1,dataElementType:\"point\",showLine:!1,fill:!1},Vn.overrides={interaction:{mode:\"point\"},plugins:{tooltip:{callbacks:{title:()=>\"\",label:t=>\"(\"+t.label+\", \"+t.formattedValue+\")\"}}},scales:{x:{type:\"linear\"},y:{type:\"linear\"}}};var Bn=Object.freeze({__proto__:null,BarController:Tn,BubbleController:Ln,DoughnutController:En,LineController:Rn,PolarAreaController:In,PieController:zn,RadarController:Fn,ScatterController:Vn});function Nn(t,e,i){const{startAngle:s,pixelMargin:n,x:o,y:a,outerRadius:r,innerRadius:l}=e;let h=n/r;t.beginPath(),t.arc(o,a,r,s-h,i+h),l>n?(h=n/l,t.arc(o,a,l,i+h,s-h,!0)):t.arc(o,a,n,i+L,s-L),t.closePath(),t.clip()}function Wn(t,e,i,s){const n=ui(t.options.borderRadius,[\"outerStart\",\"outerEnd\",\"innerStart\",\"innerEnd\"]);const o=(i-e)/2,a=Math.min(o,s*e/2),r=t=>{const e=(i-Math.min(o,t))*s/2;return Z(t,0,Math.min(o,e))};return{outerStart:r(n.outerStart),outerEnd:r(n.outerEnd),innerStart:Z(n.innerStart,0,a),innerEnd:Z(n.innerEnd,0,a)}}function jn(t,e,i,s){return{x:i+t*Math.cos(e),y:s+t*Math.sin(e)}}function Hn(t,e,i,s,n,o){const{x:a,y:r,startAngle:l,pixelMargin:h,innerRadius:c}=e,d=Math.max(e.outerRadius+s+i-h,0),u=c>0?c+s+i+h:0;let f=0;const g=n-l;if(s){const t=((c>0?c-s:0)+(d>0?d-s:0))/2;f=(g-(0!==t?g*t/(t+s):g))/2}const p=(g-Math.max(.001,g*d-i/D)/d)/2,m=l+p+f,b=n-p-f,{outerStart:x,outerEnd:_,innerStart:y,innerEnd:v}=Wn(e,u,d,b-m),w=d-x,M=d-_,k=m+x/w,S=b-_/M,P=u+y,O=u+v,C=m+y/P,A=b-v/O;if(t.beginPath(),o){if(t.arc(a,r,d,k,S),_>0){const e=jn(M,S,a,r);t.arc(e.x,e.y,_,S,b+L)}const e=jn(O,b,a,r);if(t.lineTo(e.x,e.y),v>0){const e=jn(O,A,a,r);t.arc(e.x,e.y,v,b+L,A+Math.PI)}if(t.arc(a,r,u,b-v/u,m+y/u,!0),y>0){const e=jn(P,C,a,r);t.arc(e.x,e.y,y,C+Math.PI,m-L)}const i=jn(w,m,a,r);if(t.lineTo(i.x,i.y),x>0){const e=jn(w,k,a,r);t.arc(e.x,e.y,x,m-L,k)}}else{t.moveTo(a,r);const e=Math.cos(k)*d+a,i=Math.sin(k)*d+r;t.lineTo(e,i);const s=Math.cos(S)*d+a,n=Math.sin(S)*d+r;t.lineTo(s,n)}t.closePath()}function $n(t,e,i,s,n,o){const{options:a}=e,{borderWidth:r,borderJoinStyle:l}=a,h=\"inner\"===a.borderAlign;r&&(h?(t.lineWidth=2*r,t.lineJoin=l||\"round\"):(t.lineWidth=r,t.lineJoin=l||\"bevel\"),e.fullCircles&&function(t,e,i){const{x:s,y:n,startAngle:o,pixelMargin:a,fullCircles:r}=e,l=Math.max(e.outerRadius-a,0),h=e.innerRadius+a;let c;for(i&&Nn(t,e,o+O),t.beginPath(),t.arc(s,n,h,o+O,o,!0),c=0;c<r;++c)t.stroke();for(t.beginPath(),t.arc(s,n,l,o,o+O),c=0;c<r;++c)t.stroke()}(t,e,h),h&&Nn(t,e,n),Hn(t,e,i,s,n,o),t.stroke())}class Yn extends Es{constructor(t){super(),this.options=void 0,this.circumference=void 0,this.startAngle=void 0,this.endAngle=void 0,this.innerRadius=void 0,this.outerRadius=void 0,this.pixelMargin=0,this.fullCircles=0,t&&Object.assign(this,t)}inRange(t,e,i){const s=this.getProps([\"x\",\"y\"],i),{angle:n,distance:o}=U(s,{x:t,y:e}),{startAngle:a,endAngle:l,innerRadius:h,outerRadius:c,circumference:d}=this.getProps([\"startAngle\",\"endAngle\",\"innerRadius\",\"outerRadius\",\"circumference\"],i),u=this.options.spacing/2,f=r(d,l-a)>=O||G(n,a,l),g=Q(o,h+u,c+u);return f&&g}getCenterPoint(t){const{x:e,y:i,startAngle:s,endAngle:n,innerRadius:o,outerRadius:a}=this.getProps([\"x\",\"y\",\"startAngle\",\"endAngle\",\"innerRadius\",\"outerRadius\",\"circumference\"],t),{offset:r,spacing:l}=this.options,h=(s+n)/2,c=(o+a+l+r)/2;return{x:e+Math.cos(h)*c,y:i+Math.sin(h)*c}}tooltipPosition(t){return this.getCenterPoint(t)}draw(t){const{options:e,circumference:i}=this,s=(e.offset||0)/2,n=(e.spacing||0)/2,o=e.circular;if(this.pixelMargin=\"inner\"===e.borderAlign?.33:0,this.fullCircles=i>O?Math.floor(i/O):0,0===i||this.innerRadius<0||this.outerRadius<0)return;t.save();let a=0;if(s){a=s/2;const e=(this.startAngle+this.endAngle)/2;t.translate(Math.cos(e)*a,Math.sin(e)*a),this.circumference>=D&&(a=s)}t.fillStyle=e.backgroundColor,t.strokeStyle=e.borderColor;const r=function(t,e,i,s,n){const{fullCircles:o,startAngle:a,circumference:r}=e;let l=e.endAngle;if(o){Hn(t,e,i,s,a+O,n);for(let e=0;e<o;++e)t.fill();isNaN(r)||(l=a+r%O,r%O==0&&(l+=O))}return Hn(t,e,i,s,l,n),t.fill(),l}(t,this,a,n,o);$n(t,this,a,n,r,o),t.restore()}}function Un(t,e,i=e){t.lineCap=r(i.borderCapStyle,e.borderCapStyle),t.setLineDash(r(i.borderDash,e.borderDash)),t.lineDashOffset=r(i.borderDashOffset,e.borderDashOffset),t.lineJoin=r(i.borderJoinStyle,e.borderJoinStyle),t.lineWidth=r(i.borderWidth,e.borderWidth),t.strokeStyle=r(i.borderColor,e.borderColor)}function Xn(t,e,i){t.lineTo(i.x,i.y)}function qn(t,e,i={}){const s=t.length,{start:n=0,end:o=s-1}=i,{start:a,end:r}=e,l=Math.max(n,a),h=Math.min(o,r),c=n<a&&o<a||n>r&&o>r;return{count:s,start:l,loop:e.loop,ilen:h<l&&!c?s+h-l:h-l}}function Kn(t,e,i,s){const{points:n,options:o}=e,{count:a,start:r,loop:l,ilen:h}=qn(n,i,s),c=function(t){return t.stepped?Oe:t.tension||\"monotone\"===t.cubicInterpolationMode?Ce:Xn}(o);let d,u,f,{move:g=!0,reverse:p}=s||{};for(d=0;d<=h;++d)u=n[(r+(p?h-d:d))%a],u.skip||(g?(t.moveTo(u.x,u.y),g=!1):c(t,f,u,p,o.stepped),f=u);return l&&(u=n[(r+(p?h:0))%a],c(t,f,u,p,o.stepped)),!!l}function Gn(t,e,i,s){const n=e.points,{count:o,start:a,ilen:r}=qn(n,i,s),{move:l=!0,reverse:h}=s||{};let c,d,u,f,g,p,m=0,b=0;const x=t=>(a+(h?r-t:t))%o,_=()=>{f!==g&&(t.lineTo(m,g),t.lineTo(m,f),t.lineTo(m,p))};for(l&&(d=n[x(0)],t.moveTo(d.x,d.y)),c=0;c<=r;++c){if(d=n[x(c)],d.skip)continue;const e=d.x,i=d.y,s=0|e;s===u?(i<f?f=i:i>g&&(g=i),m=(b*m+e)/++b):(_(),t.lineTo(e,i),u=s,b=0,f=g=i),p=i}_()}function Zn(t){const e=t.options,i=e.borderDash&&e.borderDash.length;return!(t._decimated||t._loop||e.tension||\"monotone\"===e.cubicInterpolationMode||e.stepped||i)?Gn:Kn}Yn.id=\"arc\",Yn.defaults={borderAlign:\"center\",borderColor:\"#fff\",borderJoinStyle:void 0,borderRadius:0,borderWidth:2,offset:0,spacing:0,angle:void 0,circular:!0},Yn.defaultRoutes={backgroundColor:\"backgroundColor\"};const Jn=\"function\"==typeof Path2D;function Qn(t,e,i,s){Jn&&!e.options.segment?function(t,e,i,s){let n=e._path;n||(n=e._path=new Path2D,e.path(n,i,s)&&n.closePath()),Un(t,e.options),t.stroke(n)}(t,e,i,s):function(t,e,i,s){const{segments:n,options:o}=e,a=Zn(e);for(const r of n)Un(t,o,r.style),t.beginPath(),a(t,e,r,{start:i,end:i+s-1})&&t.closePath(),t.stroke()}(t,e,i,s)}class to extends Es{constructor(t){super(),this.animated=!0,this.options=void 0,this._chart=void 0,this._loop=void 0,this._fullLoop=void 0,this._path=void 0,this._points=void 0,this._segments=void 0,this._decimated=!1,this._pointsUpdated=!1,this._datasetIndex=void 0,t&&Object.assign(this,t)}updateControlPoints(t,e){const i=this.options;if((i.tension||\"monotone\"===i.cubicInterpolationMode)&&!i.stepped&&!this._pointsUpdated){const s=i.spanGaps?this._loop:this._fullLoop;Qe(this._points,i,t,s,e),this._pointsUpdated=!0}}set points(t){this._points=t,delete this._segments,delete this._path,this._pointsUpdated=!1}get points(){return this._points}get segments(){return this._segments||(this._segments=Di(this,this.options.segment))}first(){const t=this.segments,e=this.points;return t.length&&e[t[0].start]}last(){const t=this.segments,e=this.points,i=t.length;return i&&e[t[i-1].end]}interpolate(t,e){const i=this.options,s=t[e],n=this.points,o=Pi(this,{property:e,start:s,end:s});if(!o.length)return;const a=[],r=function(t){return t.stepped?oi:t.tension||\"monotone\"===t.cubicInterpolationMode?ai:ni}(i);let l,h;for(l=0,h=o.length;l<h;++l){const{start:h,end:c}=o[l],d=n[h],u=n[c];if(d===u){a.push(d);continue}const f=r(d,u,Math.abs((s-d[e])/(u[e]-d[e])),i.stepped);f[e]=t[e],a.push(f)}return 1===a.length?a[0]:a}pathSegment(t,e,i){return Zn(this)(t,this,e,i)}path(t,e,i){const s=this.segments,n=Zn(this);let o=this._loop;e=e||0,i=i||this.points.length-e;for(const a of s)o&=n(t,this,a,{start:e,end:e+i-1});return!!o}draw(t,e,i,s){const n=this.options||{};(this.points||[]).length&&n.borderWidth&&(t.save(),Qn(t,this,i,s),t.restore()),this.animated&&(this._pointsUpdated=!1,this._path=void 0)}}function eo(t,e,i,s){const n=t.options,{[i]:o}=t.getProps([i],s);return Math.abs(e-o)<n.radius+n.hitRadius}to.id=\"line\",to.defaults={borderCapStyle:\"butt\",borderDash:[],borderDashOffset:0,borderJoinStyle:\"miter\",borderWidth:3,capBezierPoints:!0,cubicInterpolationMode:\"default\",fill:!1,spanGaps:!1,stepped:!1,tension:0},to.defaultRoutes={backgroundColor:\"backgroundColor\",borderColor:\"borderColor\"},to.descriptors={_scriptable:!0,_indexable:t=>\"borderDash\"!==t&&\"fill\"!==t};class io extends Es{constructor(t){super(),this.options=void 0,this.parsed=void 0,this.skip=void 0,this.stop=void 0,t&&Object.assign(this,t)}inRange(t,e,i){const s=this.options,{x:n,y:o}=this.getProps([\"x\",\"y\"],i);return Math.pow(t-n,2)+Math.pow(e-o,2)<Math.pow(s.hitRadius+s.radius,2)}inXRange(t,e){return eo(this,t,\"x\",e)}inYRange(t,e){return eo(this,t,\"y\",e)}getCenterPoint(t){const{x:e,y:i}=this.getProps([\"x\",\"y\"],t);return{x:e,y:i}}size(t){let e=(t=t||this.options||{}).radius||0;e=Math.max(e,e&&t.hoverRadius||0);return 2*(e+(e&&t.borderWidth||0))}draw(t,e){const i=this.options;this.skip||i.radius<.1||!Se(this,e,this.size(i)/2)||(t.strokeStyle=i.borderColor,t.lineWidth=i.borderWidth,t.fillStyle=i.backgroundColor,Me(t,i,this.x,this.y))}getRange(){const t=this.options||{};return t.radius+t.hitRadius}}function so(t,e){const{x:i,y:s,base:n,width:o,height:a}=t.getProps([\"x\",\"y\",\"base\",\"width\",\"height\"],e);let r,l,h,c,d;return t.horizontal?(d=a/2,r=Math.min(i,n),l=Math.max(i,n),h=s-d,c=s+d):(d=o/2,r=i-d,l=i+d,h=Math.min(s,n),c=Math.max(s,n)),{left:r,top:h,right:l,bottom:c}}function no(t,e,i,s){return t?0:Z(e,i,s)}function oo(t){const e=so(t),i=e.right-e.left,s=e.bottom-e.top,o=function(t,e,i){const s=t.options.borderWidth,n=t.borderSkipped,o=fi(s);return{t:no(n.top,o.top,0,i),r:no(n.right,o.right,0,e),b:no(n.bottom,o.bottom,0,i),l:no(n.left,o.left,0,e)}}(t,i/2,s/2),a=function(t,e,i){const{enableBorderRadius:s}=t.getProps([\"enableBorderRadius\"]),o=t.options.borderRadius,a=gi(o),r=Math.min(e,i),l=t.borderSkipped,h=s||n(o);return{topLeft:no(!h||l.top||l.left,a.topLeft,0,r),topRight:no(!h||l.top||l.right,a.topRight,0,r),bottomLeft:no(!h||l.bottom||l.left,a.bottomLeft,0,r),bottomRight:no(!h||l.bottom||l.right,a.bottomRight,0,r)}}(t,i/2,s/2);return{outer:{x:e.left,y:e.top,w:i,h:s,radius:a},inner:{x:e.left+o.l,y:e.top+o.t,w:i-o.l-o.r,h:s-o.t-o.b,radius:{topLeft:Math.max(0,a.topLeft-Math.max(o.t,o.l)),topRight:Math.max(0,a.topRight-Math.max(o.t,o.r)),bottomLeft:Math.max(0,a.bottomLeft-Math.max(o.b,o.l)),bottomRight:Math.max(0,a.bottomRight-Math.max(o.b,o.r))}}}}function ao(t,e,i,s){const n=null===e,o=null===i,a=t&&!(n&&o)&&so(t,s);return a&&(n||Q(e,a.left,a.right))&&(o||Q(i,a.top,a.bottom))}function ro(t,e){t.rect(e.x,e.y,e.w,e.h)}function lo(t,e,i={}){const s=t.x!==i.x?-e:0,n=t.y!==i.y?-e:0,o=(t.x+t.w!==i.x+i.w?e:0)-s,a=(t.y+t.h!==i.y+i.h?e:0)-n;return{x:t.x+s,y:t.y+n,w:t.w+o,h:t.h+a,radius:t.radius}}io.id=\"point\",io.defaults={borderWidth:1,hitRadius:1,hoverBorderWidth:1,hoverRadius:4,pointStyle:\"circle\",radius:3,rotation:0},io.defaultRoutes={backgroundColor:\"backgroundColor\",borderColor:\"borderColor\"};class ho extends Es{constructor(t){super(),this.options=void 0,this.horizontal=void 0,this.base=void 0,this.width=void 0,this.height=void 0,this.inflateAmount=void 0,t&&Object.assign(this,t)}draw(t){const{inflateAmount:e,options:{borderColor:i,backgroundColor:s}}=this,{inner:n,outer:o}=oo(this),a=(r=o.radius).topLeft||r.topRight||r.bottomLeft||r.bottomRight?Le:ro;var r;t.save(),o.w===n.w&&o.h===n.h||(t.beginPath(),a(t,lo(o,e,n)),t.clip(),a(t,lo(n,-e,o)),t.fillStyle=i,t.fill(\"evenodd\")),t.beginPath(),a(t,lo(n,e)),t.fillStyle=s,t.fill(),t.restore()}inRange(t,e,i){return ao(this,t,e,i)}inXRange(t,e){return ao(this,t,null,e)}inYRange(t,e){return ao(this,null,t,e)}getCenterPoint(t){const{x:e,y:i,base:s,horizontal:n}=this.getProps([\"x\",\"y\",\"base\",\"horizontal\"],t);return{x:n?(e+s)/2:e,y:n?i:(i+s)/2}}getRange(t){return\"x\"===t?this.width/2:this.height/2}}ho.id=\"bar\",ho.defaults={borderSkipped:\"start\",borderWidth:0,borderRadius:0,inflateAmount:\"auto\",pointStyle:void 0},ho.defaultRoutes={backgroundColor:\"backgroundColor\",borderColor:\"borderColor\"};var co=Object.freeze({__proto__:null,ArcElement:Yn,LineElement:to,PointElement:io,BarElement:ho});function uo(t){if(t._decimated){const e=t._data;delete t._decimated,delete t._data,Object.defineProperty(t,\"data\",{value:e})}}function fo(t){t.data.datasets.forEach((t=>{uo(t)}))}var go={id:\"decimation\",defaults:{algorithm:\"min-max\",enabled:!1},beforeElementsUpdate:(t,e,s)=>{if(!s.enabled)return void fo(t);const n=t.width;t.data.datasets.forEach(((e,o)=>{const{_data:a,indexAxis:r}=e,l=t.getDatasetMeta(o),h=a||e.data;if(\"y\"===bi([r,t.options.indexAxis]))return;if(!l.controller.supportsDecimation)return;const c=t.scales[l.xAxisID];if(\"linear\"!==c.type&&\"time\"!==c.type)return;if(t.options.parsing)return;let{start:d,count:u}=function(t,e){const i=e.length;let s,n=0;const{iScale:o}=t,{min:a,max:r,minDefined:l,maxDefined:h}=o.getUserBounds();return l&&(n=Z(et(e,o.axis,a).lo,0,i-1)),s=h?Z(et(e,o.axis,r).hi+1,n,i)-n:i-n,{start:n,count:s}}(l,h);if(u<=(s.threshold||4*n))return void uo(e);let f;switch(i(a)&&(e._data=h,delete e.data,Object.defineProperty(e,\"data\",{configurable:!0,enumerable:!0,get:function(){return this._decimated},set:function(t){this._data=t}})),s.algorithm){case\"lttb\":f=function(t,e,i,s,n){const o=n.samples||s;if(o>=i)return t.slice(e,e+i);const a=[],r=(i-2)/(o-2);let l=0;const h=e+i-1;let c,d,u,f,g,p=e;for(a[l++]=t[p],c=0;c<o-2;c++){let s,n=0,o=0;const h=Math.floor((c+1)*r)+1+e,m=Math.min(Math.floor((c+2)*r)+1,i)+e,b=m-h;for(s=h;s<m;s++)n+=t[s].x,o+=t[s].y;n/=b,o/=b;const x=Math.floor(c*r)+1+e,_=Math.min(Math.floor((c+1)*r)+1,i)+e,{x:y,y:v}=t[p];for(u=f=-1,s=x;s<_;s++)f=.5*Math.abs((y-n)*(t[s].y-v)-(y-t[s].x)*(o-v)),f>u&&(u=f,d=t[s],g=s);a[l++]=d,p=g}return a[l++]=t[h],a}(h,d,u,n,s);break;case\"min-max\":f=function(t,e,s,n){let o,a,r,l,h,c,d,u,f,g,p=0,m=0;const b=[],x=e+s-1,_=t[e].x,y=t[x].x-_;for(o=e;o<e+s;++o){a=t[o],r=(a.x-_)/y*n,l=a.y;const e=0|r;if(e===h)l<f?(f=l,c=o):l>g&&(g=l,d=o),p=(m*p+a.x)/++m;else{const s=o-1;if(!i(c)&&!i(d)){const e=Math.min(c,d),i=Math.max(c,d);e!==u&&e!==s&&b.push({...t[e],x:p}),i!==u&&i!==s&&b.push({...t[i],x:p})}o>0&&s!==u&&b.push(t[s]),b.push(a),h=e,m=0,f=g=l,c=d=u=o}}return b}(h,d,u,n);break;default:throw new Error(`Unsupported decimation algorithm '${s.algorithm}'`)}e._decimated=f}))},destroy(t){fo(t)}};function po(t,e,i,s){if(s)return;let n=e[t],o=i[t];return\"angle\"===t&&(n=K(n),o=K(o)),{property:t,start:n,end:o}}function mo(t,e,i){for(;e>t;e--){const t=i[e];if(!isNaN(t.x)&&!isNaN(t.y))break}return e}function bo(t,e,i,s){return t&&e?s(t[i],e[i]):t?t[i]:e?e[i]:0}function xo(t,e){let i=[],n=!1;return s(t)?(n=!0,i=t):i=function(t,e){const{x:i=null,y:s=null}=t||{},n=e.points,o=[];return e.segments.forEach((({start:t,end:e})=>{e=mo(t,e,n);const a=n[t],r=n[e];null!==s?(o.push({x:a.x,y:s}),o.push({x:r.x,y:s})):null!==i&&(o.push({x:i,y:a.y}),o.push({x:i,y:r.y}))})),o}(t,e),i.length?new to({points:i,options:{tension:0},_loop:n,_fullLoop:n}):null}function _o(t){return t&&!1!==t.fill}function yo(t,e,i){let s=t[e].fill;const n=[e];let a;if(!i)return s;for(;!1!==s&&-1===n.indexOf(s);){if(!o(s))return s;if(a=t[s],!a)return!1;if(a.visible)return s;n.push(s),s=a.fill}return!1}function vo(t,e,i){const s=function(t){const e=t.options,i=e.fill;let s=r(i&&i.target,i);void 0===s&&(s=!!e.backgroundColor);if(!1===s||null===s)return!1;if(!0===s)return\"origin\";return s}(t);if(n(s))return!isNaN(s.value)&&s;let a=parseFloat(s);return o(a)&&Math.floor(a)===a?function(t,e,i,s){\"-\"!==t&&\"+\"!==t||(i=e+i);if(i===e||i<0||i>=s)return!1;return i}(s[0],e,a,i):[\"origin\",\"start\",\"end\",\"stack\",\"shape\"].indexOf(s)>=0&&s}function wo(t,e,i){const s=[];for(let n=0;n<i.length;n++){const o=i[n],{first:a,last:r,point:l}=Mo(o,e,\"x\");if(!(!l||a&&r))if(a)s.unshift(l);else if(t.push(l),!r)break}t.push(...s)}function Mo(t,e,i){const s=t.interpolate(e,i);if(!s)return{};const n=s[i],o=t.segments,a=t.points;let r=!1,l=!1;for(let t=0;t<o.length;t++){const e=o[t],s=a[e.start][i],h=a[e.end][i];if(Q(n,s,h)){r=n===s,l=n===h;break}}return{first:r,last:l,point:s}}class ko{constructor(t){this.x=t.x,this.y=t.y,this.radius=t.radius}pathSegment(t,e,i){const{x:s,y:n,radius:o}=this;return e=e||{start:0,end:O},t.arc(s,n,o,e.end,e.start,!0),!i.bounds}interpolate(t){const{x:e,y:i,radius:s}=this,n=t.angle;return{x:e+Math.cos(n)*s,y:i+Math.sin(n)*s,angle:n}}}function So(t){const{chart:e,fill:i,line:s}=t;if(o(i))return function(t,e){const i=t.getDatasetMeta(e);return i&&t.isDatasetVisible(e)?i.dataset:null}(e,i);if(\"stack\"===i)return function(t){const{scale:e,index:i,line:s}=t,n=[],o=s.segments,a=s.points,r=function(t,e){const i=[],s=t.getMatchingVisibleMetas(\"line\");for(let t=0;t<s.length;t++){const n=s[t];if(n.index===e)break;n.hidden||i.unshift(n.dataset)}return i}(e,i);r.push(xo({x:null,y:e.bottom},s));for(let t=0;t<o.length;t++){const e=o[t];for(let t=e.start;t<=e.end;t++)wo(n,a[t],r)}return new to({points:n,options:{}})}(t);if(\"shape\"===i)return!0;const a=function(t){if((t.scale||{}).getPointPositionForValue)return function(t){const{scale:e,fill:i}=t,s=e.options,o=e.getLabels().length,a=s.reverse?e.max:e.min,r=function(t,e,i){let s;return s=\"start\"===t?i:\"end\"===t?e.options.reverse?e.min:e.max:n(t)?t.value:e.getBaseValue(),s}(i,e,a),l=[];if(s.grid.circular){const t=e.getPointPositionForValue(0,a);return new ko({x:t.x,y:t.y,radius:e.getDistanceFromCenterForValue(r)})}for(let t=0;t<o;++t)l.push(e.getPointPositionForValue(t,r));return l}(t);return function(t){const{scale:e={},fill:i}=t,s=function(t,e){let i=null;return\"start\"===t?i=e.bottom:\"end\"===t?i=e.top:n(t)?i=e.getPixelForValue(t.value):e.getBasePixel&&(i=e.getBasePixel()),i}(i,e);if(o(s)){const t=e.isHorizontal();return{x:t?s:null,y:t?null:s}}return null}(t)}(t);return a instanceof ko?a:xo(a,s)}function Po(t,e,i){const s=So(e),{line:n,scale:o,axis:a}=e,r=n.options,l=r.fill,h=r.backgroundColor,{above:c=h,below:d=h}=l||{};s&&n.points.length&&(Pe(t,i),function(t,e){const{line:i,target:s,above:n,below:o,area:a,scale:r}=e,l=i._loop?\"angle\":e.axis;t.save(),\"x\"===l&&o!==n&&(Do(t,s,a.top),Oo(t,{line:i,target:s,color:n,scale:r,property:l}),t.restore(),t.save(),Do(t,s,a.bottom));Oo(t,{line:i,target:s,color:o,scale:r,property:l}),t.restore()}(t,{line:n,target:s,above:c,below:d,area:i,scale:o,axis:a}),De(t))}function Do(t,e,i){const{segments:s,points:n}=e;let o=!0,a=!1;t.beginPath();for(const r of s){const{start:s,end:l}=r,h=n[s],c=n[mo(s,l,n)];o?(t.moveTo(h.x,h.y),o=!1):(t.lineTo(h.x,i),t.lineTo(h.x,h.y)),a=!!e.pathSegment(t,r,{move:a}),a?t.closePath():t.lineTo(c.x,i)}t.lineTo(e.first().x,i),t.closePath(),t.clip()}function Oo(t,e){const{line:i,target:s,property:n,color:o,scale:a}=e,r=function(t,e,i){const s=t.segments,n=t.points,o=e.points,a=[];for(const t of s){let{start:s,end:r}=t;r=mo(s,r,n);const l=po(i,n[s],n[r],t.loop);if(!e.segments){a.push({source:t,target:l,start:n[s],end:n[r]});continue}const h=Pi(e,l);for(const e of h){const s=po(i,o[e.start],o[e.end],e.loop),r=Si(t,n,s);for(const t of r)a.push({source:t,target:e,start:{[i]:bo(l,s,\"start\",Math.max)},end:{[i]:bo(l,s,\"end\",Math.min)}})}}return a}(i,s,n);for(const{source:e,target:l,start:h,end:c}of r){const{style:{backgroundColor:r=o}={}}=e,d=!0!==s;t.save(),t.fillStyle=r,Co(t,a,d&&po(n,h,c)),t.beginPath();const u=!!i.pathSegment(t,e);let f;if(d){u?t.closePath():Ao(t,s,c,n);const e=!!s.pathSegment(t,l,{move:u,reverse:!0});f=u&&e,f||Ao(t,s,h,n)}t.closePath(),t.fill(f?\"evenodd\":\"nonzero\"),t.restore()}}function Co(t,e,i){const{top:s,bottom:n}=e.chart.chartArea,{property:o,start:a,end:r}=i||{};\"x\"===o&&(t.beginPath(),t.rect(a,s,r-a,n-s),t.clip())}function Ao(t,e,i,s){const n=e.interpolate(i,s);n&&t.lineTo(n.x,n.y)}var To={id:\"filler\",afterDatasetsUpdate(t,e,i){const s=(t.data.datasets||[]).length,n=[];let o,a,r,l;for(a=0;a<s;++a)o=t.getDatasetMeta(a),r=o.dataset,l=null,r&&r.options&&r instanceof to&&(l={visible:t.isDatasetVisible(a),index:a,fill:vo(r,a,s),chart:t,axis:o.controller.options.indexAxis,scale:o.vScale,line:r}),o.$filler=l,n.push(l);for(a=0;a<s;++a)l=n[a],l&&!1!==l.fill&&(l.fill=yo(n,a,i.propagate))},beforeDraw(t,e,i){const s=\"beforeDraw\"===i.drawTime,n=t.getSortedVisibleDatasetMetas(),o=t.chartArea;for(let e=n.length-1;e>=0;--e){const i=n[e].$filler;i&&(i.line.updateControlPoints(o,i.axis),s&&i.fill&&Po(t.ctx,i,o))}},beforeDatasetsDraw(t,e,i){if(\"beforeDatasetsDraw\"!==i.drawTime)return;const s=t.getSortedVisibleDatasetMetas();for(let e=s.length-1;e>=0;--e){const i=s[e].$filler;_o(i)&&Po(t.ctx,i,t.chartArea)}},beforeDatasetDraw(t,e,i){const s=e.meta.$filler;_o(s)&&\"beforeDatasetDraw\"===i.drawTime&&Po(t.ctx,s,t.chartArea)},defaults:{propagate:!0,drawTime:\"beforeDatasetDraw\"}};const Lo=(t,e)=>{let{boxHeight:i=e,boxWidth:s=e}=t;return t.usePointStyle&&(i=Math.min(i,e),s=t.pointStyleWidth||Math.min(s,e)),{boxWidth:s,boxHeight:i,itemHeight:Math.max(e,i)}};class Eo extends Es{constructor(t){super(),this._added=!1,this.legendHitBoxes=[],this._hoveredItem=null,this.doughnutMode=!1,this.chart=t.chart,this.options=t.options,this.ctx=t.ctx,this.legendItems=void 0,this.columnSizes=void 0,this.lineWidths=void 0,this.maxHeight=void 0,this.maxWidth=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.height=void 0,this.width=void 0,this._margins=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(t,e,i){this.maxWidth=t,this.maxHeight=e,this._margins=i,this.setDimensions(),this.buildLabels(),this.fit()}setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.left=this._margins.left,this.right=this.width):(this.height=this.maxHeight,this.top=this._margins.top,this.bottom=this.height)}buildLabels(){const t=this.options.labels||{};let e=c(t.generateLabels,[this.chart],this)||[];t.filter&&(e=e.filter((e=>t.filter(e,this.chart.data)))),t.sort&&(e=e.sort(((e,i)=>t.sort(e,i,this.chart.data)))),this.options.reverse&&e.reverse(),this.legendItems=e}fit(){const{options:t,ctx:e}=this;if(!t.display)return void(this.width=this.height=0);const i=t.labels,s=mi(i.font),n=s.size,o=this._computeTitleHeight(),{boxWidth:a,itemHeight:r}=Lo(i,n);let l,h;e.font=s.string,this.isHorizontal()?(l=this.maxWidth,h=this._fitRows(o,n,a,r)+10):(h=this.maxHeight,l=this._fitCols(o,n,a,r)+10),this.width=Math.min(l,t.maxWidth||this.maxWidth),this.height=Math.min(h,t.maxHeight||this.maxHeight)}_fitRows(t,e,i,s){const{ctx:n,maxWidth:o,options:{labels:{padding:a}}}=this,r=this.legendHitBoxes=[],l=this.lineWidths=[0],h=s+a;let c=t;n.textAlign=\"left\",n.textBaseline=\"middle\";let d=-1,u=-h;return this.legendItems.forEach(((t,f)=>{const g=i+e/2+n.measureText(t.text).width;(0===f||l[l.length-1]+g+2*a>o)&&(c+=h,l[l.length-(f>0?0:1)]=0,u+=h,d++),r[f]={left:0,top:u,row:d,width:g,height:s},l[l.length-1]+=g+a})),c}_fitCols(t,e,i,s){const{ctx:n,maxHeight:o,options:{labels:{padding:a}}}=this,r=this.legendHitBoxes=[],l=this.columnSizes=[],h=o-t;let c=a,d=0,u=0,f=0,g=0;return this.legendItems.forEach(((t,o)=>{const p=i+e/2+n.measureText(t.text).width;o>0&&u+s+2*a>h&&(c+=d+a,l.push({width:d,height:u}),f+=d+a,g++,d=u=0),r[o]={left:f,top:u,col:g,width:p,height:s},d=Math.max(d,p),u+=s+a})),c+=d,l.push({width:d,height:u}),c}adjustHitBoxes(){if(!this.options.display)return;const t=this._computeTitleHeight(),{legendHitBoxes:e,options:{align:i,labels:{padding:s},rtl:n}}=this,o=yi(n,this.left,this.width);if(this.isHorizontal()){let n=0,a=ut(i,this.left+s,this.right-this.lineWidths[n]);for(const r of e)n!==r.row&&(n=r.row,a=ut(i,this.left+s,this.right-this.lineWidths[n])),r.top+=this.top+t+s,r.left=o.leftForLtr(o.x(a),r.width),a+=r.width+s}else{let n=0,a=ut(i,this.top+t+s,this.bottom-this.columnSizes[n].height);for(const r of e)r.col!==n&&(n=r.col,a=ut(i,this.top+t+s,this.bottom-this.columnSizes[n].height)),r.top=a,r.left+=this.left+s,r.left=o.leftForLtr(o.x(r.left),r.width),a+=r.height+s}}isHorizontal(){return\"top\"===this.options.position||\"bottom\"===this.options.position}draw(){if(this.options.display){const t=this.ctx;Pe(t,this),this._draw(),De(t)}}_draw(){const{options:t,columnSizes:e,lineWidths:i,ctx:s}=this,{align:n,labels:o}=t,a=ne.color,l=yi(t.rtl,this.left,this.width),h=mi(o.font),{color:c,padding:d}=o,u=h.size,f=u/2;let g;this.drawTitle(),s.textAlign=l.textAlign(\"left\"),s.textBaseline=\"middle\",s.lineWidth=.5,s.font=h.string;const{boxWidth:p,boxHeight:m,itemHeight:b}=Lo(o,u),x=this.isHorizontal(),_=this._computeTitleHeight();g=x?{x:ut(n,this.left+d,this.right-i[0]),y:this.top+d+_,line:0}:{x:this.left+d,y:ut(n,this.top+_+d,this.bottom-e[0].height),line:0},vi(this.ctx,t.textDirection);const y=b+d;this.legendItems.forEach(((v,w)=>{s.strokeStyle=v.fontColor||c,s.fillStyle=v.fontColor||c;const M=s.measureText(v.text).width,k=l.textAlign(v.textAlign||(v.textAlign=o.textAlign)),S=p+f+M;let P=g.x,D=g.y;l.setWidth(this.width),x?w>0&&P+S+d>this.right&&(D=g.y+=y,g.line++,P=g.x=ut(n,this.left+d,this.right-i[g.line])):w>0&&D+y>this.bottom&&(P=g.x=P+e[g.line].width+d,g.line++,D=g.y=ut(n,this.top+_+d,this.bottom-e[g.line].height));!function(t,e,i){if(isNaN(p)||p<=0||isNaN(m)||m<0)return;s.save();const n=r(i.lineWidth,1);if(s.fillStyle=r(i.fillStyle,a),s.lineCap=r(i.lineCap,\"butt\"),s.lineDashOffset=r(i.lineDashOffset,0),s.lineJoin=r(i.lineJoin,\"miter\"),s.lineWidth=n,s.strokeStyle=r(i.strokeStyle,a),s.setLineDash(r(i.lineDash,[])),o.usePointStyle){const a={radius:m*Math.SQRT2/2,pointStyle:i.pointStyle,rotation:i.rotation,borderWidth:n},r=l.xPlus(t,p/2);ke(s,a,r,e+f,o.pointStyleWidth&&p)}else{const o=e+Math.max((u-m)/2,0),a=l.leftForLtr(t,p),r=gi(i.borderRadius);s.beginPath(),Object.values(r).some((t=>0!==t))?Le(s,{x:a,y:o,w:p,h:m,radius:r}):s.rect(a,o,p,m),s.fill(),0!==n&&s.stroke()}s.restore()}(l.x(P),D,v),P=ft(k,P+p+f,x?P+S:this.right,t.rtl),function(t,e,i){Ae(s,i.text,t,e+b/2,h,{strikethrough:i.hidden,textAlign:l.textAlign(i.textAlign)})}(l.x(P),D,v),x?g.x+=S+d:g.y+=y})),wi(this.ctx,t.textDirection)}drawTitle(){const t=this.options,e=t.title,i=mi(e.font),s=pi(e.padding);if(!e.display)return;const n=yi(t.rtl,this.left,this.width),o=this.ctx,a=e.position,r=i.size/2,l=s.top+r;let h,c=this.left,d=this.width;if(this.isHorizontal())d=Math.max(...this.lineWidths),h=this.top+l,c=ut(t.align,c,this.right-d);else{const e=this.columnSizes.reduce(((t,e)=>Math.max(t,e.height)),0);h=l+ut(t.align,this.top,this.bottom-e-t.labels.padding-this._computeTitleHeight())}const u=ut(a,c,c+d);o.textAlign=n.textAlign(dt(a)),o.textBaseline=\"middle\",o.strokeStyle=e.color,o.fillStyle=e.color,o.font=i.string,Ae(o,e.text,u,h,i)}_computeTitleHeight(){const t=this.options.title,e=mi(t.font),i=pi(t.padding);return t.display?e.lineHeight+i.height:0}_getLegendItemAt(t,e){let i,s,n;if(Q(t,this.left,this.right)&&Q(e,this.top,this.bottom))for(n=this.legendHitBoxes,i=0;i<n.length;++i)if(s=n[i],Q(t,s.left,s.left+s.width)&&Q(e,s.top,s.top+s.height))return this.legendItems[i];return null}handleEvent(t){const e=this.options;if(!function(t,e){if((\"mousemove\"===t||\"mouseout\"===t)&&(e.onHover||e.onLeave))return!0;if(e.onClick&&(\"click\"===t||\"mouseup\"===t))return!0;return!1}(t.type,e))return;const i=this._getLegendItemAt(t.x,t.y);if(\"mousemove\"===t.type||\"mouseout\"===t.type){const o=this._hoveredItem,a=(n=i,null!==(s=o)&&null!==n&&s.datasetIndex===n.datasetIndex&&s.index===n.index);o&&!a&&c(e.onLeave,[t,o,this],this),this._hoveredItem=i,i&&!a&&c(e.onHover,[t,i,this],this)}else i&&c(e.onClick,[t,i,this],this);var s,n}}var Ro={id:\"legend\",_element:Eo,start(t,e,i){const s=t.legend=new Eo({ctx:t.ctx,options:i,chart:t});Zi.configure(t,s,i),Zi.addBox(t,s)},stop(t){Zi.removeBox(t,t.legend),delete t.legend},beforeUpdate(t,e,i){const s=t.legend;Zi.configure(t,s,i),s.options=i},afterUpdate(t){const e=t.legend;e.buildLabels(),e.adjustHitBoxes()},afterEvent(t,e){e.replay||t.legend.handleEvent(e.event)},defaults:{display:!0,position:\"top\",align:\"center\",fullSize:!0,reverse:!1,weight:1e3,onClick(t,e,i){const s=e.datasetIndex,n=i.chart;n.isDatasetVisible(s)?(n.hide(s),e.hidden=!0):(n.show(s),e.hidden=!1)},onHover:null,onLeave:null,labels:{color:t=>t.chart.options.color,boxWidth:40,padding:10,generateLabels(t){const e=t.data.datasets,{labels:{usePointStyle:i,pointStyle:s,textAlign:n,color:o}}=t.legend.options;return t._getSortedDatasetMetas().map((t=>{const a=t.controller.getStyle(i?0:void 0),r=pi(a.borderWidth);return{text:e[t.index].label,fillStyle:a.backgroundColor,fontColor:o,hidden:!t.visible,lineCap:a.borderCapStyle,lineDash:a.borderDash,lineDashOffset:a.borderDashOffset,lineJoin:a.borderJoinStyle,lineWidth:(r.width+r.height)/4,strokeStyle:a.borderColor,pointStyle:s||a.pointStyle,rotation:a.rotation,textAlign:n||a.textAlign,borderRadius:0,datasetIndex:t.index}}),this)}},title:{color:t=>t.chart.options.color,display:!1,position:\"center\",text:\"\"}},descriptors:{_scriptable:t=>!t.startsWith(\"on\"),labels:{_scriptable:t=>![\"generateLabels\",\"filter\",\"sort\"].includes(t)}}};class Io extends Es{constructor(t){super(),this.chart=t.chart,this.options=t.options,this.ctx=t.ctx,this._padding=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(t,e){const i=this.options;if(this.left=0,this.top=0,!i.display)return void(this.width=this.height=this.right=this.bottom=0);this.width=this.right=t,this.height=this.bottom=e;const n=s(i.text)?i.text.length:1;this._padding=pi(i.padding);const o=n*mi(i.font).lineHeight+this._padding.height;this.isHorizontal()?this.height=o:this.width=o}isHorizontal(){const t=this.options.position;return\"top\"===t||\"bottom\"===t}_drawArgs(t){const{top:e,left:i,bottom:s,right:n,options:o}=this,a=o.align;let r,l,h,c=0;return this.isHorizontal()?(l=ut(a,i,n),h=e+t,r=n-i):(\"left\"===o.position?(l=i+t,h=ut(a,s,e),c=-.5*D):(l=n-t,h=ut(a,e,s),c=.5*D),r=s-e),{titleX:l,titleY:h,maxWidth:r,rotation:c}}draw(){const t=this.ctx,e=this.options;if(!e.display)return;const i=mi(e.font),s=i.lineHeight/2+this._padding.top,{titleX:n,titleY:o,maxWidth:a,rotation:r}=this._drawArgs(s);Ae(t,e.text,0,0,i,{color:e.color,maxWidth:a,rotation:r,textAlign:dt(e.align),textBaseline:\"middle\",translation:[n,o]})}}var zo={id:\"title\",_element:Io,start(t,e,i){!function(t,e){const i=new Io({ctx:t.ctx,options:e,chart:t});Zi.configure(t,i,e),Zi.addBox(t,i),t.titleBlock=i}(t,i)},stop(t){const e=t.titleBlock;Zi.removeBox(t,e),delete t.titleBlock},beforeUpdate(t,e,i){const s=t.titleBlock;Zi.configure(t,s,i),s.options=i},defaults:{align:\"center\",display:!1,font:{weight:\"bold\"},fullSize:!0,padding:10,position:\"top\",text:\"\",weight:2e3},defaultRoutes:{color:\"color\"},descriptors:{_scriptable:!0,_indexable:!1}};const Fo=new WeakMap;var Vo={id:\"subtitle\",start(t,e,i){const s=new Io({ctx:t.ctx,options:i,chart:t});Zi.configure(t,s,i),Zi.addBox(t,s),Fo.set(t,s)},stop(t){Zi.removeBox(t,Fo.get(t)),Fo.delete(t)},beforeUpdate(t,e,i){const s=Fo.get(t);Zi.configure(t,s,i),s.options=i},defaults:{align:\"center\",display:!1,font:{weight:\"normal\"},fullSize:!0,padding:0,position:\"top\",text:\"\",weight:1500},defaultRoutes:{color:\"color\"},descriptors:{_scriptable:!0,_indexable:!1}};const Bo={average(t){if(!t.length)return!1;let e,i,s=0,n=0,o=0;for(e=0,i=t.length;e<i;++e){const i=t[e].element;if(i&&i.hasValue()){const t=i.tooltipPosition();s+=t.x,n+=t.y,++o}}return{x:s/o,y:n/o}},nearest(t,e){if(!t.length)return!1;let i,s,n,o=e.x,a=e.y,r=Number.POSITIVE_INFINITY;for(i=0,s=t.length;i<s;++i){const s=t[i].element;if(s&&s.hasValue()){const t=X(e,s.getCenterPoint());t<r&&(r=t,n=s)}}if(n){const t=n.tooltipPosition();o=t.x,a=t.y}return{x:o,y:a}}};function No(t,e){return e&&(s(e)?Array.prototype.push.apply(t,e):t.push(e)),t}function Wo(t){return(\"string\"==typeof t||t instanceof String)&&t.indexOf(\"\\n\")>-1?t.split(\"\\n\"):t}function jo(t,e){const{element:i,datasetIndex:s,index:n}=e,o=t.getDatasetMeta(s).controller,{label:a,value:r}=o.getLabelAndValue(n);return{chart:t,label:a,parsed:o.getParsed(n),raw:t.data.datasets[s].data[n],formattedValue:r,dataset:o.getDataset(),dataIndex:n,datasetIndex:s,element:i}}function Ho(t,e){const i=t.chart.ctx,{body:s,footer:n,title:o}=t,{boxWidth:a,boxHeight:r}=e,l=mi(e.bodyFont),h=mi(e.titleFont),c=mi(e.footerFont),u=o.length,f=n.length,g=s.length,p=pi(e.padding);let m=p.height,b=0,x=s.reduce(((t,e)=>t+e.before.length+e.lines.length+e.after.length),0);if(x+=t.beforeBody.length+t.afterBody.length,u&&(m+=u*h.lineHeight+(u-1)*e.titleSpacing+e.titleMarginBottom),x){m+=g*(e.displayColors?Math.max(r,l.lineHeight):l.lineHeight)+(x-g)*l.lineHeight+(x-1)*e.bodySpacing}f&&(m+=e.footerMarginTop+f*c.lineHeight+(f-1)*e.footerSpacing);let _=0;const y=function(t){b=Math.max(b,i.measureText(t).width+_)};return i.save(),i.font=h.string,d(t.title,y),i.font=l.string,d(t.beforeBody.concat(t.afterBody),y),_=e.displayColors?a+2+e.boxPadding:0,d(s,(t=>{d(t.before,y),d(t.lines,y),d(t.after,y)})),_=0,i.font=c.string,d(t.footer,y),i.restore(),b+=p.width,{width:b,height:m}}function $o(t,e,i,s){const{x:n,width:o}=i,{width:a,chartArea:{left:r,right:l}}=t;let h=\"center\";return\"center\"===s?h=n<=(r+l)/2?\"left\":\"right\":n<=o/2?h=\"left\":n>=a-o/2&&(h=\"right\"),function(t,e,i,s){const{x:n,width:o}=s,a=i.caretSize+i.caretPadding;return\"left\"===t&&n+o+a>e.width||\"right\"===t&&n-o-a<0||void 0}(h,t,e,i)&&(h=\"center\"),h}function Yo(t,e,i){const s=i.yAlign||e.yAlign||function(t,e){const{y:i,height:s}=e;return i<s/2?\"top\":i>t.height-s/2?\"bottom\":\"center\"}(t,i);return{xAlign:i.xAlign||e.xAlign||$o(t,e,i,s),yAlign:s}}function Uo(t,e,i,s){const{caretSize:n,caretPadding:o,cornerRadius:a}=t,{xAlign:r,yAlign:l}=i,h=n+o,{topLeft:c,topRight:d,bottomLeft:u,bottomRight:f}=gi(a);let g=function(t,e){let{x:i,width:s}=t;return\"right\"===e?i-=s:\"center\"===e&&(i-=s/2),i}(e,r);const p=function(t,e,i){let{y:s,height:n}=t;return\"top\"===e?s+=i:s-=\"bottom\"===e?n+i:n/2,s}(e,l,h);return\"center\"===l?\"left\"===r?g+=h:\"right\"===r&&(g-=h):\"left\"===r?g-=Math.max(c,u)+n:\"right\"===r&&(g+=Math.max(d,f)+n),{x:Z(g,0,s.width-e.width),y:Z(p,0,s.height-e.height)}}function Xo(t,e,i){const s=pi(i.padding);return\"center\"===e?t.x+t.width/2:\"right\"===e?t.x+t.width-s.right:t.x+s.left}function qo(t){return No([],Wo(t))}function Ko(t,e){const i=e&&e.dataset&&e.dataset.tooltip&&e.dataset.tooltip.callbacks;return i?t.override(i):t}class Go extends Es{constructor(t){super(),this.opacity=0,this._active=[],this._eventPosition=void 0,this._size=void 0,this._cachedAnimations=void 0,this._tooltipItems=[],this.$animations=void 0,this.$context=void 0,this.chart=t.chart||t._chart,this._chart=this.chart,this.options=t.options,this.dataPoints=void 0,this.title=void 0,this.beforeBody=void 0,this.body=void 0,this.afterBody=void 0,this.footer=void 0,this.xAlign=void 0,this.yAlign=void 0,this.x=void 0,this.y=void 0,this.height=void 0,this.width=void 0,this.caretX=void 0,this.caretY=void 0,this.labelColors=void 0,this.labelPointStyles=void 0,this.labelTextColors=void 0}initialize(t){this.options=t,this._cachedAnimations=void 0,this.$context=void 0}_resolveAnimations(){const t=this._cachedAnimations;if(t)return t;const e=this.chart,i=this.options.setContext(this.getContext()),s=i.enabled&&e.options.animation&&i.animations,n=new ys(this.chart,s);return s._cacheable&&(this._cachedAnimations=Object.freeze(n)),n}getContext(){return this.$context||(this.$context=(t=this.chart.getContext(),e=this,i=this._tooltipItems,_i(t,{tooltip:e,tooltipItems:i,type:\"tooltip\"})));var t,e,i}getTitle(t,e){const{callbacks:i}=e,s=i.beforeTitle.apply(this,[t]),n=i.title.apply(this,[t]),o=i.afterTitle.apply(this,[t]);let a=[];return a=No(a,Wo(s)),a=No(a,Wo(n)),a=No(a,Wo(o)),a}getBeforeBody(t,e){return qo(e.callbacks.beforeBody.apply(this,[t]))}getBody(t,e){const{callbacks:i}=e,s=[];return d(t,(t=>{const e={before:[],lines:[],after:[]},n=Ko(i,t);No(e.before,Wo(n.beforeLabel.call(this,t))),No(e.lines,n.label.call(this,t)),No(e.after,Wo(n.afterLabel.call(this,t))),s.push(e)})),s}getAfterBody(t,e){return qo(e.callbacks.afterBody.apply(this,[t]))}getFooter(t,e){const{callbacks:i}=e,s=i.beforeFooter.apply(this,[t]),n=i.footer.apply(this,[t]),o=i.afterFooter.apply(this,[t]);let a=[];return a=No(a,Wo(s)),a=No(a,Wo(n)),a=No(a,Wo(o)),a}_createItems(t){const e=this._active,i=this.chart.data,s=[],n=[],o=[];let a,r,l=[];for(a=0,r=e.length;a<r;++a)l.push(jo(this.chart,e[a]));return t.filter&&(l=l.filter(((e,s,n)=>t.filter(e,s,n,i)))),t.itemSort&&(l=l.sort(((e,s)=>t.itemSort(e,s,i)))),d(l,(e=>{const i=Ko(t.callbacks,e);s.push(i.labelColor.call(this,e)),n.push(i.labelPointStyle.call(this,e)),o.push(i.labelTextColor.call(this,e))})),this.labelColors=s,this.labelPointStyles=n,this.labelTextColors=o,this.dataPoints=l,l}update(t,e){const i=this.options.setContext(this.getContext()),s=this._active;let n,o=[];if(s.length){const t=Bo[i.position].call(this,s,this._eventPosition);o=this._createItems(i),this.title=this.getTitle(o,i),this.beforeBody=this.getBeforeBody(o,i),this.body=this.getBody(o,i),this.afterBody=this.getAfterBody(o,i),this.footer=this.getFooter(o,i);const e=this._size=Ho(this,i),a=Object.assign({},t,e),r=Yo(this.chart,i,a),l=Uo(i,a,r,this.chart);this.xAlign=r.xAlign,this.yAlign=r.yAlign,n={opacity:1,x:l.x,y:l.y,width:e.width,height:e.height,caretX:t.x,caretY:t.y}}else 0!==this.opacity&&(n={opacity:0});this._tooltipItems=o,this.$context=void 0,n&&this._resolveAnimations().update(this,n),t&&i.external&&i.external.call(this,{chart:this.chart,tooltip:this,replay:e})}drawCaret(t,e,i,s){const n=this.getCaretPosition(t,i,s);e.lineTo(n.x1,n.y1),e.lineTo(n.x2,n.y2),e.lineTo(n.x3,n.y3)}getCaretPosition(t,e,i){const{xAlign:s,yAlign:n}=this,{caretSize:o,cornerRadius:a}=i,{topLeft:r,topRight:l,bottomLeft:h,bottomRight:c}=gi(a),{x:d,y:u}=t,{width:f,height:g}=e;let p,m,b,x,_,y;return\"center\"===n?(_=u+g/2,\"left\"===s?(p=d,m=p-o,x=_+o,y=_-o):(p=d+f,m=p+o,x=_-o,y=_+o),b=p):(m=\"left\"===s?d+Math.max(r,h)+o:\"right\"===s?d+f-Math.max(l,c)-o:this.caretX,\"top\"===n?(x=u,_=x-o,p=m-o,b=m+o):(x=u+g,_=x+o,p=m+o,b=m-o),y=x),{x1:p,x2:m,x3:b,y1:x,y2:_,y3:y}}drawTitle(t,e,i){const s=this.title,n=s.length;let o,a,r;if(n){const l=yi(i.rtl,this.x,this.width);for(t.x=Xo(this,i.titleAlign,i),e.textAlign=l.textAlign(i.titleAlign),e.textBaseline=\"middle\",o=mi(i.titleFont),a=i.titleSpacing,e.fillStyle=i.titleColor,e.font=o.string,r=0;r<n;++r)e.fillText(s[r],l.x(t.x),t.y+o.lineHeight/2),t.y+=o.lineHeight+a,r+1===n&&(t.y+=i.titleMarginBottom-a)}}_drawColorBox(t,e,i,s,o){const a=this.labelColors[i],r=this.labelPointStyles[i],{boxHeight:l,boxWidth:h,boxPadding:c}=o,d=mi(o.bodyFont),u=Xo(this,\"left\",o),f=s.x(u),g=l<d.lineHeight?(d.lineHeight-l)/2:0,p=e.y+g;if(o.usePointStyle){const e={radius:Math.min(h,l)/2,pointStyle:r.pointStyle,rotation:r.rotation,borderWidth:1},i=s.leftForLtr(f,h)+h/2,n=p+l/2;t.strokeStyle=o.multiKeyBackground,t.fillStyle=o.multiKeyBackground,Me(t,e,i,n),t.strokeStyle=a.borderColor,t.fillStyle=a.backgroundColor,Me(t,e,i,n)}else{t.lineWidth=n(a.borderWidth)?Math.max(...Object.values(a.borderWidth)):a.borderWidth||1,t.strokeStyle=a.borderColor,t.setLineDash(a.borderDash||[]),t.lineDashOffset=a.borderDashOffset||0;const e=s.leftForLtr(f,h-c),i=s.leftForLtr(s.xPlus(f,1),h-c-2),r=gi(a.borderRadius);Object.values(r).some((t=>0!==t))?(t.beginPath(),t.fillStyle=o.multiKeyBackground,Le(t,{x:e,y:p,w:h,h:l,radius:r}),t.fill(),t.stroke(),t.fillStyle=a.backgroundColor,t.beginPath(),Le(t,{x:i,y:p+1,w:h-2,h:l-2,radius:r}),t.fill()):(t.fillStyle=o.multiKeyBackground,t.fillRect(e,p,h,l),t.strokeRect(e,p,h,l),t.fillStyle=a.backgroundColor,t.fillRect(i,p+1,h-2,l-2))}t.fillStyle=this.labelTextColors[i]}drawBody(t,e,i){const{body:s}=this,{bodySpacing:n,bodyAlign:o,displayColors:a,boxHeight:r,boxWidth:l,boxPadding:h}=i,c=mi(i.bodyFont);let u=c.lineHeight,f=0;const g=yi(i.rtl,this.x,this.width),p=function(i){e.fillText(i,g.x(t.x+f),t.y+u/2),t.y+=u+n},m=g.textAlign(o);let b,x,_,y,v,w,M;for(e.textAlign=o,e.textBaseline=\"middle\",e.font=c.string,t.x=Xo(this,m,i),e.fillStyle=i.bodyColor,d(this.beforeBody,p),f=a&&\"right\"!==m?\"center\"===o?l/2+h:l+2+h:0,y=0,w=s.length;y<w;++y){for(b=s[y],x=this.labelTextColors[y],e.fillStyle=x,d(b.before,p),_=b.lines,a&&_.length&&(this._drawColorBox(e,t,y,g,i),u=Math.max(c.lineHeight,r)),v=0,M=_.length;v<M;++v)p(_[v]),u=c.lineHeight;d(b.after,p)}f=0,u=c.lineHeight,d(this.afterBody,p),t.y-=n}drawFooter(t,e,i){const s=this.footer,n=s.length;let o,a;if(n){const r=yi(i.rtl,this.x,this.width);for(t.x=Xo(this,i.footerAlign,i),t.y+=i.footerMarginTop,e.textAlign=r.textAlign(i.footerAlign),e.textBaseline=\"middle\",o=mi(i.footerFont),e.fillStyle=i.footerColor,e.font=o.string,a=0;a<n;++a)e.fillText(s[a],r.x(t.x),t.y+o.lineHeight/2),t.y+=o.lineHeight+i.footerSpacing}}drawBackground(t,e,i,s){const{xAlign:n,yAlign:o}=this,{x:a,y:r}=t,{width:l,height:h}=i,{topLeft:c,topRight:d,bottomLeft:u,bottomRight:f}=gi(s.cornerRadius);e.fillStyle=s.backgroundColor,e.strokeStyle=s.borderColor,e.lineWidth=s.borderWidth,e.beginPath(),e.moveTo(a+c,r),\"top\"===o&&this.drawCaret(t,e,i,s),e.lineTo(a+l-d,r),e.quadraticCurveTo(a+l,r,a+l,r+d),\"center\"===o&&\"right\"===n&&this.drawCaret(t,e,i,s),e.lineTo(a+l,r+h-f),e.quadraticCurveTo(a+l,r+h,a+l-f,r+h),\"bottom\"===o&&this.drawCaret(t,e,i,s),e.lineTo(a+u,r+h),e.quadraticCurveTo(a,r+h,a,r+h-u),\"center\"===o&&\"left\"===n&&this.drawCaret(t,e,i,s),e.lineTo(a,r+c),e.quadraticCurveTo(a,r,a+c,r),e.closePath(),e.fill(),s.borderWidth>0&&e.stroke()}_updateAnimationTarget(t){const e=this.chart,i=this.$animations,s=i&&i.x,n=i&&i.y;if(s||n){const i=Bo[t.position].call(this,this._active,this._eventPosition);if(!i)return;const o=this._size=Ho(this,t),a=Object.assign({},i,this._size),r=Yo(e,t,a),l=Uo(t,a,r,e);s._to===l.x&&n._to===l.y||(this.xAlign=r.xAlign,this.yAlign=r.yAlign,this.width=o.width,this.height=o.height,this.caretX=i.x,this.caretY=i.y,this._resolveAnimations().update(this,l))}}_willRender(){return!!this.opacity}draw(t){const e=this.options.setContext(this.getContext());let i=this.opacity;if(!i)return;this._updateAnimationTarget(e);const s={width:this.width,height:this.height},n={x:this.x,y:this.y};i=Math.abs(i)<.001?0:i;const o=pi(e.padding),a=this.title.length||this.beforeBody.length||this.body.length||this.afterBody.length||this.footer.length;e.enabled&&a&&(t.save(),t.globalAlpha=i,this.drawBackground(n,t,s,e),vi(t,e.textDirection),n.y+=o.top,this.drawTitle(n,t,e),this.drawBody(n,t,e),this.drawFooter(n,t,e),wi(t,e.textDirection),t.restore())}getActiveElements(){return this._active||[]}setActiveElements(t,e){const i=this._active,s=t.map((({datasetIndex:t,index:e})=>{const i=this.chart.getDatasetMeta(t);if(!i)throw new Error(\"Cannot find a dataset at index \"+t);return{datasetIndex:t,element:i.data[e],index:e}})),n=!u(i,s),o=this._positionChanged(s,e);(n||o)&&(this._active=s,this._eventPosition=e,this._ignoreReplayEvents=!0,this.update(!0))}handleEvent(t,e,i=!0){if(e&&this._ignoreReplayEvents)return!1;this._ignoreReplayEvents=!1;const s=this.options,n=this._active||[],o=this._getActiveElements(t,n,e,i),a=this._positionChanged(o,t),r=e||!u(o,n)||a;return r&&(this._active=o,(s.enabled||s.external)&&(this._eventPosition={x:t.x,y:t.y},this.update(!0,e))),r}_getActiveElements(t,e,i,s){const n=this.options;if(\"mouseout\"===t.type)return[];if(!s)return e;const o=this.chart.getElementsAtEventForMode(t,n.mode,n,i);return n.reverse&&o.reverse(),o}_positionChanged(t,e){const{caretX:i,caretY:s,options:n}=this,o=Bo[n.position].call(this,t,e);return!1!==o&&(i!==o.x||s!==o.y)}}Go.positioners=Bo;var Zo={id:\"tooltip\",_element:Go,positioners:Bo,afterInit(t,e,i){i&&(t.tooltip=new Go({chart:t,options:i}))},beforeUpdate(t,e,i){t.tooltip&&t.tooltip.initialize(i)},reset(t,e,i){t.tooltip&&t.tooltip.initialize(i)},afterDraw(t){const e=t.tooltip;if(e&&e._willRender()){const i={tooltip:e};if(!1===t.notifyPlugins(\"beforeTooltipDraw\",i))return;e.draw(t.ctx),t.notifyPlugins(\"afterTooltipDraw\",i)}},afterEvent(t,e){if(t.tooltip){const i=e.replay;t.tooltip.handleEvent(e.event,i,e.inChartArea)&&(e.changed=!0)}},defaults:{enabled:!0,external:null,position:\"average\",backgroundColor:\"rgba(0,0,0,0.8)\",titleColor:\"#fff\",titleFont:{weight:\"bold\"},titleSpacing:2,titleMarginBottom:6,titleAlign:\"left\",bodyColor:\"#fff\",bodySpacing:2,bodyFont:{},bodyAlign:\"left\",footerColor:\"#fff\",footerSpacing:2,footerMarginTop:6,footerFont:{weight:\"bold\"},footerAlign:\"left\",padding:6,caretPadding:2,caretSize:5,cornerRadius:6,boxHeight:(t,e)=>e.bodyFont.size,boxWidth:(t,e)=>e.bodyFont.size,multiKeyBackground:\"#fff\",displayColors:!0,boxPadding:0,borderColor:\"rgba(0,0,0,0)\",borderWidth:0,animation:{duration:400,easing:\"easeOutQuart\"},animations:{numbers:{type:\"number\",properties:[\"x\",\"y\",\"width\",\"height\",\"caretX\",\"caretY\"]},opacity:{easing:\"linear\",duration:200}},callbacks:{beforeTitle:t,title(t){if(t.length>0){const e=t[0],i=e.chart.data.labels,s=i?i.length:0;if(this&&this.options&&\"dataset\"===this.options.mode)return e.dataset.label||\"\";if(e.label)return e.label;if(s>0&&e.dataIndex<s)return i[e.dataIndex]}return\"\"},afterTitle:t,beforeBody:t,beforeLabel:t,label(t){if(this&&this.options&&\"dataset\"===this.options.mode)return t.label+\": \"+t.formattedValue||t.formattedValue;let e=t.dataset.label||\"\";e&&(e+=\": \");const s=t.formattedValue;return i(s)||(e+=s),e},labelColor(t){const e=t.chart.getDatasetMeta(t.datasetIndex).controller.getStyle(t.dataIndex);return{borderColor:e.borderColor,backgroundColor:e.backgroundColor,borderWidth:e.borderWidth,borderDash:e.borderDash,borderDashOffset:e.borderDashOffset,borderRadius:0}},labelTextColor(){return this.options.bodyColor},labelPointStyle(t){const e=t.chart.getDatasetMeta(t.datasetIndex).controller.getStyle(t.dataIndex);return{pointStyle:e.pointStyle,rotation:e.rotation}},afterLabel:t,afterBody:t,beforeFooter:t,footer:t,afterFooter:t}},defaultRoutes:{bodyFont:\"font\",footerFont:\"font\",titleFont:\"font\"},descriptors:{_scriptable:t=>\"filter\"!==t&&\"itemSort\"!==t&&\"external\"!==t,_indexable:!1,callbacks:{_scriptable:!1,_indexable:!1},animation:{_fallback:!1},animations:{_fallback:\"animation\"}},additionalOptionScopes:[\"interaction\"]},Jo=Object.freeze({__proto__:null,Decimation:go,Filler:To,Legend:Ro,SubTitle:Vo,Title:zo,Tooltip:Zo});function Qo(t,e,i,s){const n=t.indexOf(e);if(-1===n)return((t,e,i,s)=>(\"string\"==typeof e?(i=t.push(e)-1,s.unshift({index:i,label:e})):isNaN(e)&&(i=null),i))(t,e,i,s);return n!==t.lastIndexOf(e)?i:n}class ta extends $s{constructor(t){super(t),this._startValue=void 0,this._valueRange=0,this._addedLabels=[]}init(t){const e=this._addedLabels;if(e.length){const t=this.getLabels();for(const{index:i,label:s}of e)t[i]===s&&t.splice(i,1);this._addedLabels=[]}super.init(t)}parse(t,e){if(i(t))return null;const s=this.getLabels();return((t,e)=>null===t?null:Z(Math.round(t),0,e))(e=isFinite(e)&&s[e]===t?e:Qo(s,t,r(e,t),this._addedLabels),s.length-1)}determineDataLimits(){const{minDefined:t,maxDefined:e}=this.getUserBounds();let{min:i,max:s}=this.getMinMax(!0);\"ticks\"===this.options.bounds&&(t||(i=0),e||(s=this.getLabels().length-1)),this.min=i,this.max=s}buildTicks(){const t=this.min,e=this.max,i=this.options.offset,s=[];let n=this.getLabels();n=0===t&&e===n.length-1?n:n.slice(t,e+1),this._valueRange=Math.max(n.length-(i?0:1),1),this._startValue=this.min-(i?.5:0);for(let i=t;i<=e;i++)s.push({value:i});return s}getLabelForValue(t){const e=this.getLabels();return t>=0&&t<e.length?e[t]:t}configure(){super.configure(),this.isHorizontal()||(this._reversePixels=!this._reversePixels)}getPixelForValue(t){return\"number\"!=typeof t&&(t=this.parse(t)),null===t?NaN:this.getPixelForDecimal((t-this._startValue)/this._valueRange)}getPixelForTick(t){const e=this.ticks;return t<0||t>e.length-1?null:this.getPixelForValue(e[t].value)}getValueForPixel(t){return Math.round(this._startValue+this.getDecimalForPixel(t)*this._valueRange)}getBasePixel(){return this.bottom}}function ea(t,e,{horizontal:i,minRotation:s}){const n=H(s),o=(i?Math.sin(n):Math.cos(n))||.001,a=.75*e*(\"\"+t).length;return Math.min(e/o,a)}ta.id=\"category\",ta.defaults={ticks:{callback:ta.prototype.getLabelForValue}};class ia extends $s{constructor(t){super(t),this.start=void 0,this.end=void 0,this._startValue=void 0,this._endValue=void 0,this._valueRange=0}parse(t,e){return i(t)||(\"number\"==typeof t||t instanceof Number)&&!isFinite(+t)?null:+t}handleTickRangeOptions(){const{beginAtZero:t}=this.options,{minDefined:e,maxDefined:i}=this.getUserBounds();let{min:s,max:n}=this;const o=t=>s=e?s:t,a=t=>n=i?n:t;if(t){const t=z(s),e=z(n);t<0&&e<0?a(0):t>0&&e>0&&o(0)}if(s===n){let e=1;(n>=Number.MAX_SAFE_INTEGER||s<=Number.MIN_SAFE_INTEGER)&&(e=Math.abs(.05*n)),a(n+e),t||o(s-e)}this.min=s,this.max=n}getTickLimit(){const t=this.options.ticks;let e,{maxTicksLimit:i,stepSize:s}=t;return s?(e=Math.ceil(this.max/s)-Math.floor(this.min/s)+1,e>1e3&&(console.warn(`scales.${this.id}.ticks.stepSize: ${s} would result generating up to ${e} ticks. Limiting to 1000.`),e=1e3)):(e=this.computeTickLimit(),i=i||11),i&&(e=Math.min(i,e)),e}computeTickLimit(){return Number.POSITIVE_INFINITY}buildTicks(){const t=this.options,e=t.ticks;let s=this.getTickLimit();s=Math.max(2,s);const n=function(t,e){const s=[],{bounds:n,step:o,min:a,max:r,precision:l,count:h,maxTicks:c,maxDigits:d,includeBounds:u}=t,f=o||1,g=c-1,{min:p,max:m}=e,b=!i(a),x=!i(r),_=!i(h),y=(m-p)/(d+1);let v,w,M,k,S=F((m-p)/g/f)*f;if(S<1e-14&&!b&&!x)return[{value:p},{value:m}];k=Math.ceil(m/S)-Math.floor(p/S),k>g&&(S=F(k*S/g/f)*f),i(l)||(v=Math.pow(10,l),S=Math.ceil(S*v)/v),\"ticks\"===n?(w=Math.floor(p/S)*S,M=Math.ceil(m/S)*S):(w=p,M=m),b&&x&&o&&W((r-a)/o,S/1e3)?(k=Math.round(Math.min((r-a)/S,c)),S=(r-a)/k,w=a,M=r):_?(w=b?a:w,M=x?r:M,k=h-1,S=(M-w)/k):(k=(M-w)/S,k=N(k,Math.round(k),S/1e3)?Math.round(k):Math.ceil(k));const P=Math.max(Y(S),Y(w));v=Math.pow(10,i(l)?P:l),w=Math.round(w*v)/v,M=Math.round(M*v)/v;let D=0;for(b&&(u&&w!==a?(s.push({value:a}),w<a&&D++,N(Math.round((w+D*S)*v)/v,a,ea(a,y,t))&&D++):w<a&&D++);D<k;++D)s.push({value:Math.round((w+D*S)*v)/v});return x&&u&&M!==r?s.length&&N(s[s.length-1].value,r,ea(r,y,t))?s[s.length-1].value=r:s.push({value:r}):x&&M!==r||s.push({value:M}),s}({maxTicks:s,bounds:t.bounds,min:t.min,max:t.max,precision:e.precision,step:e.stepSize,count:e.count,maxDigits:this._maxDigits(),horizontal:this.isHorizontal(),minRotation:e.minRotation||0,includeBounds:!1!==e.includeBounds},this._range||this);return\"ticks\"===t.bounds&&j(n,this,\"value\"),t.reverse?(n.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),n}configure(){const t=this.ticks;let e=this.min,i=this.max;if(super.configure(),this.options.offset&&t.length){const s=(i-e)/Math.max(t.length-1,1)/2;e-=s,i+=s}this._startValue=e,this._endValue=i,this._valueRange=i-e}getLabelForValue(t){return li(t,this.chart.options.locale,this.options.ticks.format)}}class sa extends ia{determineDataLimits(){const{min:t,max:e}=this.getMinMax(!0);this.min=o(t)?t:0,this.max=o(e)?e:1,this.handleTickRangeOptions()}computeTickLimit(){const t=this.isHorizontal(),e=t?this.width:this.height,i=H(this.options.ticks.minRotation),s=(t?Math.sin(i):Math.cos(i))||.001,n=this._resolveTickFontOptions(0);return Math.ceil(e/Math.min(40,n.lineHeight/s))}getPixelForValue(t){return null===t?NaN:this.getPixelForDecimal((t-this._startValue)/this._valueRange)}getValueForPixel(t){return this._startValue+this.getDecimalForPixel(t)*this._valueRange}}function na(t){return 1===t/Math.pow(10,Math.floor(I(t)))}sa.id=\"linear\",sa.defaults={ticks:{callback:Is.formatters.numeric}};class oa extends $s{constructor(t){super(t),this.start=void 0,this.end=void 0,this._startValue=void 0,this._valueRange=0}parse(t,e){const i=ia.prototype.parse.apply(this,[t,e]);if(0!==i)return o(i)&&i>0?i:null;this._zero=!0}determineDataLimits(){const{min:t,max:e}=this.getMinMax(!0);this.min=o(t)?Math.max(0,t):null,this.max=o(e)?Math.max(0,e):null,this.options.beginAtZero&&(this._zero=!0),this.handleTickRangeOptions()}handleTickRangeOptions(){const{minDefined:t,maxDefined:e}=this.getUserBounds();let i=this.min,s=this.max;const n=e=>i=t?i:e,o=t=>s=e?s:t,a=(t,e)=>Math.pow(10,Math.floor(I(t))+e);i===s&&(i<=0?(n(1),o(10)):(n(a(i,-1)),o(a(s,1)))),i<=0&&n(a(s,-1)),s<=0&&o(a(i,1)),this._zero&&this.min!==this._suggestedMin&&i===a(this.min,0)&&n(a(i,-1)),this.min=i,this.max=s}buildTicks(){const t=this.options,e=function(t,e){const i=Math.floor(I(e.max)),s=Math.ceil(e.max/Math.pow(10,i)),n=[];let o=a(t.min,Math.pow(10,Math.floor(I(e.min)))),r=Math.floor(I(o)),l=Math.floor(o/Math.pow(10,r)),h=r<0?Math.pow(10,Math.abs(r)):1;do{n.push({value:o,major:na(o)}),++l,10===l&&(l=1,++r,h=r>=0?1:h),o=Math.round(l*Math.pow(10,r)*h)/h}while(r<i||r===i&&l<s);const c=a(t.max,o);return n.push({value:c,major:na(o)}),n}({min:this._userMin,max:this._userMax},this);return\"ticks\"===t.bounds&&j(e,this,\"value\"),t.reverse?(e.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),e}getLabelForValue(t){return void 0===t?\"0\":li(t,this.chart.options.locale,this.options.ticks.format)}configure(){const t=this.min;super.configure(),this._startValue=I(t),this._valueRange=I(this.max)-I(t)}getPixelForValue(t){return void 0!==t&&0!==t||(t=this.min),null===t||isNaN(t)?NaN:this.getPixelForDecimal(t===this.min?0:(I(t)-this._startValue)/this._valueRange)}getValueForPixel(t){const e=this.getDecimalForPixel(t);return Math.pow(10,this._startValue+e*this._valueRange)}}function aa(t){const e=t.ticks;if(e.display&&t.display){const t=pi(e.backdropPadding);return r(e.font&&e.font.size,ne.font.size)+t.height}return 0}function ra(t,e,i,s,n){return t===s||t===n?{start:e-i/2,end:e+i/2}:t<s||t>n?{start:e-i,end:e}:{start:e,end:e+i}}function la(t){const e={l:t.left+t._padding.left,r:t.right-t._padding.right,t:t.top+t._padding.top,b:t.bottom-t._padding.bottom},i=Object.assign({},e),n=[],o=[],a=t._pointLabels.length,r=t.options.pointLabels,l=r.centerPointLabels?D/a:0;for(let u=0;u<a;u++){const a=r.setContext(t.getPointLabelContext(u));o[u]=a.padding;const f=t.getPointPosition(u,t.drawingArea+o[u],l),g=mi(a.font),p=(h=t.ctx,c=g,d=s(d=t._pointLabels[u])?d:[d],{w:ye(h,c.string,d),h:d.length*c.lineHeight});n[u]=p;const m=K(t.getIndexAngle(u)+l),b=Math.round($(m));ha(i,e,m,ra(b,f.x,p.w,0,180),ra(b,f.y,p.h,90,270))}var h,c,d;t.setCenterPoint(e.l-i.l,i.r-e.r,e.t-i.t,i.b-e.b),t._pointLabelItems=function(t,e,i){const s=[],n=t._pointLabels.length,o=t.options,a=aa(o)/2,r=t.drawingArea,l=o.pointLabels.centerPointLabels?D/n:0;for(let o=0;o<n;o++){const n=t.getPointPosition(o,r+a+i[o],l),h=Math.round($(K(n.angle+L))),c=e[o],d=ua(n.y,c.h,h),u=ca(h),f=da(n.x,c.w,u);s.push({x:n.x,y:d,textAlign:u,left:f,top:d,right:f+c.w,bottom:d+c.h})}return s}(t,n,o)}function ha(t,e,i,s,n){const o=Math.abs(Math.sin(i)),a=Math.abs(Math.cos(i));let r=0,l=0;s.start<e.l?(r=(e.l-s.start)/o,t.l=Math.min(t.l,e.l-r)):s.end>e.r&&(r=(s.end-e.r)/o,t.r=Math.max(t.r,e.r+r)),n.start<e.t?(l=(e.t-n.start)/a,t.t=Math.min(t.t,e.t-l)):n.end>e.b&&(l=(n.end-e.b)/a,t.b=Math.max(t.b,e.b+l))}function ca(t){return 0===t||180===t?\"center\":t<180?\"left\":\"right\"}function da(t,e,i){return\"right\"===i?t-=e:\"center\"===i&&(t-=e/2),t}function ua(t,e,i){return 90===i||270===i?t-=e/2:(i>270||i<90)&&(t-=e),t}function fa(t,e,i,s){const{ctx:n}=t;if(i)n.arc(t.xCenter,t.yCenter,e,0,O);else{let i=t.getPointPosition(0,e);n.moveTo(i.x,i.y);for(let o=1;o<s;o++)i=t.getPointPosition(o,e),n.lineTo(i.x,i.y)}}oa.id=\"logarithmic\",oa.defaults={ticks:{callback:Is.formatters.logarithmic,major:{enabled:!0}}};class ga extends ia{constructor(t){super(t),this.xCenter=void 0,this.yCenter=void 0,this.drawingArea=void 0,this._pointLabels=[],this._pointLabelItems=[]}setDimensions(){const t=this._padding=pi(aa(this.options)/2),e=this.width=this.maxWidth-t.width,i=this.height=this.maxHeight-t.height;this.xCenter=Math.floor(this.left+e/2+t.left),this.yCenter=Math.floor(this.top+i/2+t.top),this.drawingArea=Math.floor(Math.min(e,i)/2)}determineDataLimits(){const{min:t,max:e}=this.getMinMax(!1);this.min=o(t)&&!isNaN(t)?t:0,this.max=o(e)&&!isNaN(e)?e:0,this.handleTickRangeOptions()}computeTickLimit(){return Math.ceil(this.drawingArea/aa(this.options))}generateTickLabels(t){ia.prototype.generateTickLabels.call(this,t),this._pointLabels=this.getLabels().map(((t,e)=>{const i=c(this.options.pointLabels.callback,[t,e],this);return i||0===i?i:\"\"})).filter(((t,e)=>this.chart.getDataVisibility(e)))}fit(){const t=this.options;t.display&&t.pointLabels.display?la(this):this.setCenterPoint(0,0,0,0)}setCenterPoint(t,e,i,s){this.xCenter+=Math.floor((t-e)/2),this.yCenter+=Math.floor((i-s)/2),this.drawingArea-=Math.min(this.drawingArea/2,Math.max(t,e,i,s))}getIndexAngle(t){return K(t*(O/(this._pointLabels.length||1))+H(this.options.startAngle||0))}getDistanceFromCenterForValue(t){if(i(t))return NaN;const e=this.drawingArea/(this.max-this.min);return this.options.reverse?(this.max-t)*e:(t-this.min)*e}getValueForDistanceFromCenter(t){if(i(t))return NaN;const e=t/(this.drawingArea/(this.max-this.min));return this.options.reverse?this.max-e:this.min+e}getPointLabelContext(t){const e=this._pointLabels||[];if(t>=0&&t<e.length){const i=e[t];return function(t,e,i){return _i(t,{label:i,index:e,type:\"pointLabel\"})}(this.getContext(),t,i)}}getPointPosition(t,e,i=0){const s=this.getIndexAngle(t)-L+i;return{x:Math.cos(s)*e+this.xCenter,y:Math.sin(s)*e+this.yCenter,angle:s}}getPointPositionForValue(t,e){return this.getPointPosition(t,this.getDistanceFromCenterForValue(e))}getBasePosition(t){return this.getPointPositionForValue(t||0,this.getBaseValue())}getPointLabelPosition(t){const{left:e,top:i,right:s,bottom:n}=this._pointLabelItems[t];return{left:e,top:i,right:s,bottom:n}}drawBackground(){const{backgroundColor:t,grid:{circular:e}}=this.options;if(t){const i=this.ctx;i.save(),i.beginPath(),fa(this,this.getDistanceFromCenterForValue(this._endValue),e,this._pointLabels.length),i.closePath(),i.fillStyle=t,i.fill(),i.restore()}}drawGrid(){const t=this.ctx,e=this.options,{angleLines:s,grid:n}=e,o=this._pointLabels.length;let a,r,l;if(e.pointLabels.display&&function(t,e){const{ctx:s,options:{pointLabels:n}}=t;for(let o=e-1;o>=0;o--){const e=n.setContext(t.getPointLabelContext(o)),a=mi(e.font),{x:r,y:l,textAlign:h,left:c,top:d,right:u,bottom:f}=t._pointLabelItems[o],{backdropColor:g}=e;if(!i(g)){const t=gi(e.borderRadius),i=pi(e.backdropPadding);s.fillStyle=g;const n=c-i.left,o=d-i.top,a=u-c+i.width,r=f-d+i.height;Object.values(t).some((t=>0!==t))?(s.beginPath(),Le(s,{x:n,y:o,w:a,h:r,radius:t}),s.fill()):s.fillRect(n,o,a,r)}Ae(s,t._pointLabels[o],r,l+a.lineHeight/2,a,{color:e.color,textAlign:h,textBaseline:\"middle\"})}}(this,o),n.display&&this.ticks.forEach(((t,e)=>{if(0!==e){r=this.getDistanceFromCenterForValue(t.value);!function(t,e,i,s){const n=t.ctx,o=e.circular,{color:a,lineWidth:r}=e;!o&&!s||!a||!r||i<0||(n.save(),n.strokeStyle=a,n.lineWidth=r,n.setLineDash(e.borderDash),n.lineDashOffset=e.borderDashOffset,n.beginPath(),fa(t,i,o,s),n.closePath(),n.stroke(),n.restore())}(this,n.setContext(this.getContext(e-1)),r,o)}})),s.display){for(t.save(),a=o-1;a>=0;a--){const i=s.setContext(this.getPointLabelContext(a)),{color:n,lineWidth:o}=i;o&&n&&(t.lineWidth=o,t.strokeStyle=n,t.setLineDash(i.borderDash),t.lineDashOffset=i.borderDashOffset,r=this.getDistanceFromCenterForValue(e.ticks.reverse?this.min:this.max),l=this.getPointPosition(a,r),t.beginPath(),t.moveTo(this.xCenter,this.yCenter),t.lineTo(l.x,l.y),t.stroke())}t.restore()}}drawBorder(){}drawLabels(){const t=this.ctx,e=this.options,i=e.ticks;if(!i.display)return;const s=this.getIndexAngle(0);let n,o;t.save(),t.translate(this.xCenter,this.yCenter),t.rotate(s),t.textAlign=\"center\",t.textBaseline=\"middle\",this.ticks.forEach(((s,a)=>{if(0===a&&!e.reverse)return;const r=i.setContext(this.getContext(a)),l=mi(r.font);if(n=this.getDistanceFromCenterForValue(this.ticks[a].value),r.showLabelBackdrop){t.font=l.string,o=t.measureText(s.label).width,t.fillStyle=r.backdropColor;const e=pi(r.backdropPadding);t.fillRect(-o/2-e.left,-n-l.size/2-e.top,o+e.width,l.size+e.height)}Ae(t,s.label,0,-n,l,{color:r.color})})),t.restore()}drawTitle(){}}ga.id=\"radialLinear\",ga.defaults={display:!0,animate:!0,position:\"chartArea\",angleLines:{display:!0,lineWidth:1,borderDash:[],borderDashOffset:0},grid:{circular:!1},startAngle:0,ticks:{showLabelBackdrop:!0,callback:Is.formatters.numeric},pointLabels:{backdropColor:void 0,backdropPadding:2,display:!0,font:{size:10},callback:t=>t,padding:5,centerPointLabels:!1}},ga.defaultRoutes={\"angleLines.color\":\"borderColor\",\"pointLabels.color\":\"color\",\"ticks.color\":\"color\"},ga.descriptors={angleLines:{_fallback:\"grid\"}};const pa={millisecond:{common:!0,size:1,steps:1e3},second:{common:!0,size:1e3,steps:60},minute:{common:!0,size:6e4,steps:60},hour:{common:!0,size:36e5,steps:24},day:{common:!0,size:864e5,steps:30},week:{common:!1,size:6048e5,steps:4},month:{common:!0,size:2628e6,steps:12},quarter:{common:!1,size:7884e6,steps:4},year:{common:!0,size:3154e7}},ma=Object.keys(pa);function ba(t,e){return t-e}function xa(t,e){if(i(e))return null;const s=t._adapter,{parser:n,round:a,isoWeekday:r}=t._parseOpts;let l=e;return\"function\"==typeof n&&(l=n(l)),o(l)||(l=\"string\"==typeof n?s.parse(l,n):s.parse(l)),null===l?null:(a&&(l=\"week\"!==a||!B(r)&&!0!==r?s.startOf(l,a):s.startOf(l,\"isoWeek\",r)),+l)}function _a(t,e,i,s){const n=ma.length;for(let o=ma.indexOf(t);o<n-1;++o){const t=pa[ma[o]],n=t.steps?t.steps:Number.MAX_SAFE_INTEGER;if(t.common&&Math.ceil((i-e)/(n*t.size))<=s)return ma[o]}return ma[n-1]}function ya(t,e,i){if(i){if(i.length){const{lo:s,hi:n}=tt(i,e);t[i[s]>=e?i[s]:i[n]]=!0}}else t[e]=!0}function va(t,e,i){const s=[],n={},o=e.length;let a,r;for(a=0;a<o;++a)r=e[a],n[r]=a,s.push({value:r,major:!1});return 0!==o&&i?function(t,e,i,s){const n=t._adapter,o=+n.startOf(e[0].value,s),a=e[e.length-1].value;let r,l;for(r=o;r<=a;r=+n.add(r,1,s))l=i[r],l>=0&&(e[l].major=!0);return e}(t,s,n,i):s}class wa extends $s{constructor(t){super(t),this._cache={data:[],labels:[],all:[]},this._unit=\"day\",this._majorUnit=void 0,this._offsets={},this._normalized=!1,this._parseOpts=void 0}init(t,e){const i=t.time||(t.time={}),s=this._adapter=new wn._date(t.adapters.date);s.init(e),b(i.displayFormats,s.formats()),this._parseOpts={parser:i.parser,round:i.round,isoWeekday:i.isoWeekday},super.init(t),this._normalized=e.normalized}parse(t,e){return void 0===t?null:xa(this,t)}beforeLayout(){super.beforeLayout(),this._cache={data:[],labels:[],all:[]}}determineDataLimits(){const t=this.options,e=this._adapter,i=t.time.unit||\"day\";let{min:s,max:n,minDefined:a,maxDefined:r}=this.getUserBounds();function l(t){a||isNaN(t.min)||(s=Math.min(s,t.min)),r||isNaN(t.max)||(n=Math.max(n,t.max))}a&&r||(l(this._getLabelBounds()),\"ticks\"===t.bounds&&\"labels\"===t.ticks.source||l(this.getMinMax(!1))),s=o(s)&&!isNaN(s)?s:+e.startOf(Date.now(),i),n=o(n)&&!isNaN(n)?n:+e.endOf(Date.now(),i)+1,this.min=Math.min(s,n-1),this.max=Math.max(s+1,n)}_getLabelBounds(){const t=this.getLabelTimestamps();let e=Number.POSITIVE_INFINITY,i=Number.NEGATIVE_INFINITY;return t.length&&(e=t[0],i=t[t.length-1]),{min:e,max:i}}buildTicks(){const t=this.options,e=t.time,i=t.ticks,s=\"labels\"===i.source?this.getLabelTimestamps():this._generate();\"ticks\"===t.bounds&&s.length&&(this.min=this._userMin||s[0],this.max=this._userMax||s[s.length-1]);const n=this.min,o=st(s,n,this.max);return this._unit=e.unit||(i.autoSkip?_a(e.minUnit,this.min,this.max,this._getLabelCapacity(n)):function(t,e,i,s,n){for(let o=ma.length-1;o>=ma.indexOf(i);o--){const i=ma[o];if(pa[i].common&&t._adapter.diff(n,s,i)>=e-1)return i}return ma[i?ma.indexOf(i):0]}(this,o.length,e.minUnit,this.min,this.max)),this._majorUnit=i.major.enabled&&\"year\"!==this._unit?function(t){for(let e=ma.indexOf(t)+1,i=ma.length;e<i;++e)if(pa[ma[e]].common)return ma[e]}(this._unit):void 0,this.initOffsets(s),t.reverse&&o.reverse(),va(this,o,this._majorUnit)}afterAutoSkip(){this.options.offsetAfterAutoskip&&this.initOffsets(this.ticks.map((t=>+t.value)))}initOffsets(t){let e,i,s=0,n=0;this.options.offset&&t.length&&(e=this.getDecimalForValue(t[0]),s=1===t.length?1-e:(this.getDecimalForValue(t[1])-e)/2,i=this.getDecimalForValue(t[t.length-1]),n=1===t.length?i:(i-this.getDecimalForValue(t[t.length-2]))/2);const o=t.length<3?.5:.25;s=Z(s,0,o),n=Z(n,0,o),this._offsets={start:s,end:n,factor:1/(s+1+n)}}_generate(){const t=this._adapter,e=this.min,i=this.max,s=this.options,n=s.time,o=n.unit||_a(n.minUnit,e,i,this._getLabelCapacity(e)),a=r(n.stepSize,1),l=\"week\"===o&&n.isoWeekday,h=B(l)||!0===l,c={};let d,u,f=e;if(h&&(f=+t.startOf(f,\"isoWeek\",l)),f=+t.startOf(f,h?\"day\":o),t.diff(i,e,o)>1e5*a)throw new Error(e+\" and \"+i+\" are too far apart with stepSize of \"+a+\" \"+o);const g=\"data\"===s.ticks.source&&this.getDataTimestamps();for(d=f,u=0;d<i;d=+t.add(d,a,o),u++)ya(c,d,g);return d!==i&&\"ticks\"!==s.bounds&&1!==u||ya(c,d,g),Object.keys(c).sort(((t,e)=>t-e)).map((t=>+t))}getLabelForValue(t){const e=this._adapter,i=this.options.time;return i.tooltipFormat?e.format(t,i.tooltipFormat):e.format(t,i.displayFormats.datetime)}_tickFormatFunction(t,e,i,s){const n=this.options,o=n.time.displayFormats,a=this._unit,r=this._majorUnit,l=a&&o[a],h=r&&o[r],d=i[e],u=r&&h&&d&&d.major,f=this._adapter.format(t,s||(u?h:l)),g=n.ticks.callback;return g?c(g,[f,e,i],this):f}generateTickLabels(t){let e,i,s;for(e=0,i=t.length;e<i;++e)s=t[e],s.label=this._tickFormatFunction(s.value,e,t)}getDecimalForValue(t){return null===t?NaN:(t-this.min)/(this.max-this.min)}getPixelForValue(t){const e=this._offsets,i=this.getDecimalForValue(t);return this.getPixelForDecimal((e.start+i)*e.factor)}getValueForPixel(t){const e=this._offsets,i=this.getDecimalForPixel(t)/e.factor-e.end;return this.min+i*(this.max-this.min)}_getLabelSize(t){const e=this.options.ticks,i=this.ctx.measureText(t).width,s=H(this.isHorizontal()?e.maxRotation:e.minRotation),n=Math.cos(s),o=Math.sin(s),a=this._resolveTickFontOptions(0).size;return{w:i*n+a*o,h:i*o+a*n}}_getLabelCapacity(t){const e=this.options.time,i=e.displayFormats,s=i[e.unit]||i.millisecond,n=this._tickFormatFunction(t,0,va(this,[t],this._majorUnit),s),o=this._getLabelSize(n),a=Math.floor(this.isHorizontal()?this.width/o.w:this.height/o.h)-1;return a>0?a:1}getDataTimestamps(){let t,e,i=this._cache.data||[];if(i.length)return i;const s=this.getMatchingVisibleMetas();if(this._normalized&&s.length)return this._cache.data=s[0].controller.getAllParsedValues(this);for(t=0,e=s.length;t<e;++t)i=i.concat(s[t].controller.getAllParsedValues(this));return this._cache.data=this.normalize(i)}getLabelTimestamps(){const t=this._cache.labels||[];let e,i;if(t.length)return t;const s=this.getLabels();for(e=0,i=s.length;e<i;++e)t.push(xa(this,s[e]));return this._cache.labels=this._normalized?t:this.normalize(t)}normalize(t){return rt(t.sort(ba))}}function Ma(t,e,i){let s,n,o,a,r=0,l=t.length-1;i?(e>=t[r].pos&&e<=t[l].pos&&({lo:r,hi:l}=et(t,\"pos\",e)),({pos:s,time:o}=t[r]),({pos:n,time:a}=t[l])):(e>=t[r].time&&e<=t[l].time&&({lo:r,hi:l}=et(t,\"time\",e)),({time:s,pos:o}=t[r]),({time:n,pos:a}=t[l]));const h=n-s;return h?o+(a-o)*(e-s)/h:o}wa.id=\"time\",wa.defaults={bounds:\"data\",adapters:{},time:{parser:!1,unit:!1,round:!1,isoWeekday:!1,minUnit:\"millisecond\",displayFormats:{}},ticks:{source:\"auto\",major:{enabled:!1}}};class ka extends wa{constructor(t){super(t),this._table=[],this._minPos=void 0,this._tableRange=void 0}initOffsets(){const t=this._getTimestampsForTable(),e=this._table=this.buildLookupTable(t);this._minPos=Ma(e,this.min),this._tableRange=Ma(e,this.max)-this._minPos,super.initOffsets(t)}buildLookupTable(t){const{min:e,max:i}=this,s=[],n=[];let o,a,r,l,h;for(o=0,a=t.length;o<a;++o)l=t[o],l>=e&&l<=i&&s.push(l);if(s.length<2)return[{time:e,pos:0},{time:i,pos:1}];for(o=0,a=s.length;o<a;++o)h=s[o+1],r=s[o-1],l=s[o],Math.round((h+r)/2)!==l&&n.push({time:l,pos:o/(a-1)});return n}_getTimestampsForTable(){let t=this._cache.all||[];if(t.length)return t;const e=this.getDataTimestamps(),i=this.getLabelTimestamps();return t=e.length&&i.length?this.normalize(e.concat(i)):e.length?e:i,t=this._cache.all=t,t}getDecimalForValue(t){return(Ma(this._table,t)-this._minPos)/this._tableRange}getValueForPixel(t){const e=this._offsets,i=this.getDecimalForPixel(t)/e.factor-e.end;return Ma(this._table,i*this._tableRange+this._minPos,!0)}}ka.id=\"timeseries\",ka.defaults=wa.defaults;var Sa=Object.freeze({__proto__:null,CategoryScale:ta,LinearScale:sa,LogarithmicScale:oa,RadialLinearScale:ga,TimeScale:wa,TimeSeriesScale:ka});return bn.register(Bn,Sa,co,Jo),bn.helpers={...Ti},bn._adapters=wn,bn.Animation=xs,bn.Animations=ys,bn.animator=mt,bn.controllers=Us.controllers.items,bn.DatasetController=Ls,bn.Element=Es,bn.elements=co,bn.Interaction=Vi,bn.layouts=Zi,bn.platforms=ps,bn.Scale=$s,bn.Ticks=Is,Object.assign(bn,Bn,Sa,co,Jo,ps),bn.Chart=bn,\"undefined\"!=typeof window&&(window.Chart=bn),bn}));\n", "/*\nUnobtrusive JavaScript\nhttps://github.com/rails/rails/blob/main/actionview/app/assets/javascripts\nReleased under the MIT license\n */;\n\n(function() {\n  var context = this;\n\n  (function() {\n    (function() {\n      this.Rails = {\n        linkClickSelector: 'a[data-confirm], a[data-method], a[data-remote]:not([disabled]), a[data-disable-with], a[data-disable]',\n        buttonClickSelector: {\n          selector: 'button[data-remote]:not([form]), button[data-confirm]:not([form])',\n          exclude: 'form button'\n        },\n        inputChangeSelector: 'select[data-remote], input[data-remote], textarea[data-remote]',\n        formSubmitSelector: 'form:not([data-turbo=true])',\n        formInputClickSelector: 'form:not([data-turbo=true]) input[type=submit], form:not([data-turbo=true]) input[type=image], form:not([data-turbo=true]) button[type=submit], form:not([data-turbo=true]) button:not([type]), input[type=submit][form], input[type=image][form], button[type=submit][form], button[form]:not([type])',\n        formDisableSelector: 'input[data-disable-with]:enabled, button[data-disable-with]:enabled, textarea[data-disable-with]:enabled, input[data-disable]:enabled, button[data-disable]:enabled, textarea[data-disable]:enabled',\n        formEnableSelector: 'input[data-disable-with]:disabled, button[data-disable-with]:disabled, textarea[data-disable-with]:disabled, input[data-disable]:disabled, button[data-disable]:disabled, textarea[data-disable]:disabled',\n        fileInputSelector: 'input[name][type=file]:not([disabled])',\n        linkDisableSelector: 'a[data-disable-with], a[data-disable]',\n        buttonDisableSelector: 'button[data-remote][data-disable-with], button[data-remote][data-disable]'\n      };\n\n    }).call(this);\n  }).call(context);\n\n  var Rails = context.Rails;\n\n  (function() {\n    (function() {\n      var nonce;\n\n      nonce = null;\n\n      Rails.loadCSPNonce = function() {\n        var ref;\n        return nonce = (ref = document.querySelector(\"meta[name=csp-nonce]\")) != null ? ref.content : void 0;\n      };\n\n      Rails.cspNonce = function() {\n        return nonce != null ? nonce : Rails.loadCSPNonce();\n      };\n\n    }).call(this);\n    (function() {\n      var expando, m;\n\n      m = Element.prototype.matches || Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector;\n\n      Rails.matches = function(element, selector) {\n        if (selector.exclude != null) {\n          return m.call(element, selector.selector) && !m.call(element, selector.exclude);\n        } else {\n          return m.call(element, selector);\n        }\n      };\n\n      expando = '_ujsData';\n\n      Rails.getData = function(element, key) {\n        var ref;\n        return (ref = element[expando]) != null ? ref[key] : void 0;\n      };\n\n      Rails.setData = function(element, key, value) {\n        if (element[expando] == null) {\n          element[expando] = {};\n        }\n        return element[expando][key] = value;\n      };\n\n      Rails.isContentEditable = function(element) {\n        var isEditable;\n        isEditable = false;\n        while (true) {\n          if (element.isContentEditable) {\n            isEditable = true;\n            break;\n          }\n          element = element.parentElement;\n          if (!element) {\n            break;\n          }\n        }\n        return isEditable;\n      };\n\n      Rails.$ = function(selector) {\n        return Array.prototype.slice.call(document.querySelectorAll(selector));\n      };\n\n    }).call(this);\n    (function() {\n      var $, csrfParam, csrfToken;\n\n      $ = Rails.$;\n\n      csrfToken = Rails.csrfToken = function() {\n        var meta;\n        meta = document.querySelector('meta[name=csrf-token]');\n        return meta && meta.content;\n      };\n\n      csrfParam = Rails.csrfParam = function() {\n        var meta;\n        meta = document.querySelector('meta[name=csrf-param]');\n        return meta && meta.content;\n      };\n\n      Rails.CSRFProtection = function(xhr) {\n        var token;\n        token = csrfToken();\n        if (token != null) {\n          return xhr.setRequestHeader('X-CSRF-Token', token);\n        }\n      };\n\n      Rails.refreshCSRFTokens = function() {\n        var param, token;\n        token = csrfToken();\n        param = csrfParam();\n        if ((token != null) && (param != null)) {\n          return $('form input[name=\"' + param + '\"]').forEach(function(input) {\n            return input.value = token;\n          });\n        }\n      };\n\n    }).call(this);\n    (function() {\n      var CustomEvent, fire, matches, preventDefault;\n\n      matches = Rails.matches;\n\n      CustomEvent = window.CustomEvent;\n\n      if (typeof CustomEvent !== 'function') {\n        CustomEvent = function(event, params) {\n          var evt;\n          evt = document.createEvent('CustomEvent');\n          evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n          return evt;\n        };\n        CustomEvent.prototype = window.Event.prototype;\n        preventDefault = CustomEvent.prototype.preventDefault;\n        CustomEvent.prototype.preventDefault = function() {\n          var result;\n          result = preventDefault.call(this);\n          if (this.cancelable && !this.defaultPrevented) {\n            Object.defineProperty(this, 'defaultPrevented', {\n              get: function() {\n                return true;\n              }\n            });\n          }\n          return result;\n        };\n      }\n\n      fire = Rails.fire = function(obj, name, data) {\n        var event;\n        event = new CustomEvent(name, {\n          bubbles: true,\n          cancelable: true,\n          detail: data\n        });\n        obj.dispatchEvent(event);\n        return !event.defaultPrevented;\n      };\n\n      Rails.stopEverything = function(e) {\n        fire(e.target, 'ujs:everythingStopped');\n        e.preventDefault();\n        e.stopPropagation();\n        return e.stopImmediatePropagation();\n      };\n\n      Rails.delegate = function(element, selector, eventType, handler) {\n        return element.addEventListener(eventType, function(e) {\n          var target;\n          target = e.target;\n          while (!(!(target instanceof Element) || matches(target, selector))) {\n            target = target.parentNode;\n          }\n          if (target instanceof Element && handler.call(target, e) === false) {\n            e.preventDefault();\n            return e.stopPropagation();\n          }\n        });\n      };\n\n    }).call(this);\n    (function() {\n      var AcceptHeaders, CSRFProtection, createXHR, cspNonce, fire, prepareOptions, processResponse;\n\n      cspNonce = Rails.cspNonce, CSRFProtection = Rails.CSRFProtection, fire = Rails.fire;\n\n      AcceptHeaders = {\n        '*': '*/*',\n        text: 'text/plain',\n        html: 'text/html',\n        xml: 'application/xml, text/xml',\n        json: 'application/json, text/javascript',\n        script: 'text/javascript, application/javascript, application/ecmascript, application/x-ecmascript'\n      };\n\n      Rails.ajax = function(options) {\n        var xhr;\n        options = prepareOptions(options);\n        xhr = createXHR(options, function() {\n          var ref, response;\n          response = processResponse((ref = xhr.response) != null ? ref : xhr.responseText, xhr.getResponseHeader('Content-Type'));\n          if (Math.floor(xhr.status / 100) === 2) {\n            if (typeof options.success === \"function\") {\n              options.success(response, xhr.statusText, xhr);\n            }\n          } else {\n            if (typeof options.error === \"function\") {\n              options.error(response, xhr.statusText, xhr);\n            }\n          }\n          return typeof options.complete === \"function\" ? options.complete(xhr, xhr.statusText) : void 0;\n        });\n        if ((options.beforeSend != null) && !options.beforeSend(xhr, options)) {\n          return false;\n        }\n        if (xhr.readyState === XMLHttpRequest.OPENED) {\n          return xhr.send(options.data);\n        }\n      };\n\n      prepareOptions = function(options) {\n        options.url = options.url || location.href;\n        options.type = options.type.toUpperCase();\n        if (options.type === 'GET' && options.data) {\n          if (options.url.indexOf('?') < 0) {\n            options.url += '?' + options.data;\n          } else {\n            options.url += '&' + options.data;\n          }\n        }\n        if (AcceptHeaders[options.dataType] == null) {\n          options.dataType = '*';\n        }\n        options.accept = AcceptHeaders[options.dataType];\n        if (options.dataType !== '*') {\n          options.accept += ', */*; q=0.01';\n        }\n        return options;\n      };\n\n      createXHR = function(options, done) {\n        var xhr;\n        xhr = new XMLHttpRequest();\n        xhr.open(options.type, options.url, true);\n        xhr.setRequestHeader('Accept', options.accept);\n        if (typeof options.data === 'string') {\n          xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');\n        }\n        if (!options.crossDomain) {\n          xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n          CSRFProtection(xhr);\n        }\n        xhr.withCredentials = !!options.withCredentials;\n        xhr.onreadystatechange = function() {\n          if (xhr.readyState === XMLHttpRequest.DONE) {\n            return done(xhr);\n          }\n        };\n        return xhr;\n      };\n\n      processResponse = function(response, type) {\n        var parser, script;\n        if (typeof response === 'string' && typeof type === 'string') {\n          if (type.match(/\\bjson\\b/)) {\n            try {\n              response = JSON.parse(response);\n            } catch (error) {}\n          } else if (type.match(/\\b(?:java|ecma)script\\b/)) {\n            script = document.createElement('script');\n            script.setAttribute('nonce', cspNonce());\n            script.text = response;\n            document.head.appendChild(script).parentNode.removeChild(script);\n          } else if (type.match(/\\b(xml|html|svg)\\b/)) {\n            parser = new DOMParser();\n            type = type.replace(/;.+/, '');\n            try {\n              response = parser.parseFromString(response, type);\n            } catch (error) {}\n          }\n        }\n        return response;\n      };\n\n      Rails.href = function(element) {\n        return element.href;\n      };\n\n      Rails.isCrossDomain = function(url) {\n        var e, originAnchor, urlAnchor;\n        originAnchor = document.createElement('a');\n        originAnchor.href = location.href;\n        urlAnchor = document.createElement('a');\n        try {\n          urlAnchor.href = url;\n          return !(((!urlAnchor.protocol || urlAnchor.protocol === ':') && !urlAnchor.host) || (originAnchor.protocol + '//' + originAnchor.host === urlAnchor.protocol + '//' + urlAnchor.host));\n        } catch (error) {\n          e = error;\n          return true;\n        }\n      };\n\n    }).call(this);\n    (function() {\n      var matches, toArray;\n\n      matches = Rails.matches;\n\n      toArray = function(e) {\n        return Array.prototype.slice.call(e);\n      };\n\n      Rails.serializeElement = function(element, additionalParam) {\n        var inputs, params;\n        inputs = [element];\n        if (matches(element, 'form')) {\n          inputs = toArray(element.elements);\n        }\n        params = [];\n        inputs.forEach(function(input) {\n          if (!input.name || input.disabled) {\n            return;\n          }\n          if (matches(input, 'fieldset[disabled] *')) {\n            return;\n          }\n          if (matches(input, 'select')) {\n            return toArray(input.options).forEach(function(option) {\n              if (option.selected) {\n                return params.push({\n                  name: input.name,\n                  value: option.value\n                });\n              }\n            });\n          } else if (input.checked || ['radio', 'checkbox', 'submit'].indexOf(input.type) === -1) {\n            return params.push({\n              name: input.name,\n              value: input.value\n            });\n          }\n        });\n        if (additionalParam) {\n          params.push(additionalParam);\n        }\n        return params.map(function(param) {\n          if (param.name != null) {\n            return (encodeURIComponent(param.name)) + \"=\" + (encodeURIComponent(param.value));\n          } else {\n            return param;\n          }\n        }).join('&');\n      };\n\n      Rails.formElements = function(form, selector) {\n        if (matches(form, 'form')) {\n          return toArray(form.elements).filter(function(el) {\n            return matches(el, selector);\n          });\n        } else {\n          return toArray(form.querySelectorAll(selector));\n        }\n      };\n\n    }).call(this);\n    (function() {\n      var allowAction, fire, stopEverything;\n\n      fire = Rails.fire, stopEverything = Rails.stopEverything;\n\n      Rails.handleConfirm = function(e) {\n        if (!allowAction(this)) {\n          return stopEverything(e);\n        }\n      };\n\n      Rails.confirm = function(message, element) {\n        return confirm(message);\n      };\n\n      allowAction = function(element) {\n        var answer, callback, message;\n        message = element.getAttribute('data-confirm');\n        if (!message) {\n          return true;\n        }\n        answer = false;\n        if (fire(element, 'confirm')) {\n          try {\n            answer = Rails.confirm(message, element);\n          } catch (error) {}\n          callback = fire(element, 'confirm:complete', [answer]);\n        }\n        return answer && callback;\n      };\n\n    }).call(this);\n    (function() {\n      var disableFormElement, disableFormElements, disableLinkElement, enableFormElement, enableFormElements, enableLinkElement, formElements, getData, isContentEditable, isXhrRedirect, matches, setData, stopEverything;\n\n      matches = Rails.matches, getData = Rails.getData, setData = Rails.setData, stopEverything = Rails.stopEverything, formElements = Rails.formElements, isContentEditable = Rails.isContentEditable;\n\n      Rails.handleDisabledElement = function(e) {\n        var element;\n        element = this;\n        if (element.disabled) {\n          return stopEverything(e);\n        }\n      };\n\n      Rails.enableElement = function(e) {\n        var element;\n        if (e instanceof Event) {\n          if (isXhrRedirect(e)) {\n            return;\n          }\n          element = e.target;\n        } else {\n          element = e;\n        }\n        if (isContentEditable(element)) {\n          return;\n        }\n        if (matches(element, Rails.linkDisableSelector)) {\n          return enableLinkElement(element);\n        } else if (matches(element, Rails.buttonDisableSelector) || matches(element, Rails.formEnableSelector)) {\n          return enableFormElement(element);\n        } else if (matches(element, Rails.formSubmitSelector)) {\n          return enableFormElements(element);\n        }\n      };\n\n      Rails.disableElement = function(e) {\n        var element;\n        element = e instanceof Event ? e.target : e;\n        if (isContentEditable(element)) {\n          return;\n        }\n        if (matches(element, Rails.linkDisableSelector)) {\n          return disableLinkElement(element);\n        } else if (matches(element, Rails.buttonDisableSelector) || matches(element, Rails.formDisableSelector)) {\n          return disableFormElement(element);\n        } else if (matches(element, Rails.formSubmitSelector)) {\n          return disableFormElements(element);\n        }\n      };\n\n      disableLinkElement = function(element) {\n        var replacement;\n        if (getData(element, 'ujs:disabled')) {\n          return;\n        }\n        replacement = element.getAttribute('data-disable-with');\n        if (replacement != null) {\n          setData(element, 'ujs:enable-with', element.innerHTML);\n          element.innerHTML = replacement;\n        }\n        element.addEventListener('click', stopEverything);\n        return setData(element, 'ujs:disabled', true);\n      };\n\n      enableLinkElement = function(element) {\n        var originalText;\n        originalText = getData(element, 'ujs:enable-with');\n        if (originalText != null) {\n          element.innerHTML = originalText;\n          setData(element, 'ujs:enable-with', null);\n        }\n        element.removeEventListener('click', stopEverything);\n        return setData(element, 'ujs:disabled', null);\n      };\n\n      disableFormElements = function(form) {\n        return formElements(form, Rails.formDisableSelector).forEach(disableFormElement);\n      };\n\n      disableFormElement = function(element) {\n        var replacement;\n        if (getData(element, 'ujs:disabled')) {\n          return;\n        }\n        replacement = element.getAttribute('data-disable-with');\n        if (replacement != null) {\n          if (matches(element, 'button')) {\n            setData(element, 'ujs:enable-with', element.innerHTML);\n            element.innerHTML = replacement;\n          } else {\n            setData(element, 'ujs:enable-with', element.value);\n            element.value = replacement;\n          }\n        }\n        element.disabled = true;\n        return setData(element, 'ujs:disabled', true);\n      };\n\n      enableFormElements = function(form) {\n        return formElements(form, Rails.formEnableSelector).forEach(enableFormElement);\n      };\n\n      enableFormElement = function(element) {\n        var originalText;\n        originalText = getData(element, 'ujs:enable-with');\n        if (originalText != null) {\n          if (matches(element, 'button')) {\n            element.innerHTML = originalText;\n          } else {\n            element.value = originalText;\n          }\n          setData(element, 'ujs:enable-with', null);\n        }\n        element.disabled = false;\n        return setData(element, 'ujs:disabled', null);\n      };\n\n      isXhrRedirect = function(event) {\n        var ref, xhr;\n        xhr = (ref = event.detail) != null ? ref[0] : void 0;\n        return (xhr != null ? xhr.getResponseHeader(\"X-Xhr-Redirect\") : void 0) != null;\n      };\n\n    }).call(this);\n    (function() {\n      var isContentEditable, stopEverything;\n\n      stopEverything = Rails.stopEverything;\n\n      isContentEditable = Rails.isContentEditable;\n\n      Rails.handleMethod = function(e) {\n        var csrfParam, csrfToken, form, formContent, href, link, method;\n        link = this;\n        method = link.getAttribute('data-method');\n        if (!method) {\n          return;\n        }\n        if (isContentEditable(this)) {\n          return;\n        }\n        href = Rails.href(link);\n        csrfToken = Rails.csrfToken();\n        csrfParam = Rails.csrfParam();\n        form = document.createElement('form');\n        formContent = \"<input name='_method' value='\" + method + \"' type='hidden' />\";\n        if ((csrfParam != null) && (csrfToken != null) && !Rails.isCrossDomain(href)) {\n          formContent += \"<input name='\" + csrfParam + \"' value='\" + csrfToken + \"' type='hidden' />\";\n        }\n        formContent += '<input type=\"submit\" />';\n        form.method = 'post';\n        form.action = href;\n        form.target = link.target;\n        form.innerHTML = formContent;\n        form.style.display = 'none';\n        document.body.appendChild(form);\n        form.querySelector('[type=\"submit\"]').click();\n        return stopEverything(e);\n      };\n\n    }).call(this);\n    (function() {\n      var ajax, fire, getData, isContentEditable, isCrossDomain, isRemote, matches, serializeElement, setData, stopEverything,\n        slice = [].slice;\n\n      matches = Rails.matches, getData = Rails.getData, setData = Rails.setData, fire = Rails.fire, stopEverything = Rails.stopEverything, ajax = Rails.ajax, isCrossDomain = Rails.isCrossDomain, serializeElement = Rails.serializeElement, isContentEditable = Rails.isContentEditable;\n\n      isRemote = function(element) {\n        var value;\n        value = element.getAttribute('data-remote');\n        return (value != null) && value !== 'false';\n      };\n\n      Rails.handleRemote = function(e) {\n        var button, data, dataType, element, method, url, withCredentials;\n        element = this;\n        if (!isRemote(element)) {\n          return true;\n        }\n        if (!fire(element, 'ajax:before')) {\n          fire(element, 'ajax:stopped');\n          return false;\n        }\n        if (isContentEditable(element)) {\n          fire(element, 'ajax:stopped');\n          return false;\n        }\n        withCredentials = element.getAttribute('data-with-credentials');\n        dataType = element.getAttribute('data-type') || 'script';\n        if (matches(element, Rails.formSubmitSelector)) {\n          button = getData(element, 'ujs:submit-button');\n          method = getData(element, 'ujs:submit-button-formmethod') || element.method;\n          url = getData(element, 'ujs:submit-button-formaction') || element.getAttribute('action') || location.href;\n          if (method.toUpperCase() === 'GET') {\n            url = url.replace(/\\?.*$/, '');\n          }\n          if (element.enctype === 'multipart/form-data') {\n            data = new FormData(element);\n            if (button != null) {\n              data.append(button.name, button.value);\n            }\n          } else {\n            data = serializeElement(element, button);\n          }\n          setData(element, 'ujs:submit-button', null);\n          setData(element, 'ujs:submit-button-formmethod', null);\n          setData(element, 'ujs:submit-button-formaction', null);\n        } else if (matches(element, Rails.buttonClickSelector) || matches(element, Rails.inputChangeSelector)) {\n          method = element.getAttribute('data-method');\n          url = element.getAttribute('data-url');\n          data = serializeElement(element, element.getAttribute('data-params'));\n        } else {\n          method = element.getAttribute('data-method');\n          url = Rails.href(element);\n          data = element.getAttribute('data-params');\n        }\n        ajax({\n          type: method || 'GET',\n          url: url,\n          data: data,\n          dataType: dataType,\n          beforeSend: function(xhr, options) {\n            if (fire(element, 'ajax:beforeSend', [xhr, options])) {\n              return fire(element, 'ajax:send', [xhr]);\n            } else {\n              fire(element, 'ajax:stopped');\n              return false;\n            }\n          },\n          success: function() {\n            var args;\n            args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n            return fire(element, 'ajax:success', args);\n          },\n          error: function() {\n            var args;\n            args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n            return fire(element, 'ajax:error', args);\n          },\n          complete: function() {\n            var args;\n            args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n            return fire(element, 'ajax:complete', args);\n          },\n          crossDomain: isCrossDomain(url),\n          withCredentials: (withCredentials != null) && withCredentials !== 'false'\n        });\n        return stopEverything(e);\n      };\n\n      Rails.formSubmitButtonClick = function(e) {\n        var button, form;\n        button = this;\n        form = button.form;\n        if (!form) {\n          return;\n        }\n        if (button.name) {\n          setData(form, 'ujs:submit-button', {\n            name: button.name,\n            value: button.value\n          });\n        }\n        setData(form, 'ujs:formnovalidate-button', button.formNoValidate);\n        setData(form, 'ujs:submit-button-formaction', button.getAttribute('formaction'));\n        return setData(form, 'ujs:submit-button-formmethod', button.getAttribute('formmethod'));\n      };\n\n      Rails.preventInsignificantClick = function(e) {\n        var data, insignificantMetaClick, link, metaClick, method, nonPrimaryMouseClick;\n        link = this;\n        method = (link.getAttribute('data-method') || 'GET').toUpperCase();\n        data = link.getAttribute('data-params');\n        metaClick = e.metaKey || e.ctrlKey;\n        insignificantMetaClick = metaClick && method === 'GET' && !data;\n        nonPrimaryMouseClick = (e.button != null) && e.button !== 0;\n        if (nonPrimaryMouseClick || insignificantMetaClick) {\n          return e.stopImmediatePropagation();\n        }\n      };\n\n    }).call(this);\n    (function() {\n      var $, CSRFProtection, delegate, disableElement, enableElement, fire, formSubmitButtonClick, getData, handleConfirm, handleDisabledElement, handleMethod, handleRemote, loadCSPNonce, preventInsignificantClick, refreshCSRFTokens;\n\n      fire = Rails.fire, delegate = Rails.delegate, getData = Rails.getData, $ = Rails.$, refreshCSRFTokens = Rails.refreshCSRFTokens, CSRFProtection = Rails.CSRFProtection, loadCSPNonce = Rails.loadCSPNonce, enableElement = Rails.enableElement, disableElement = Rails.disableElement, handleDisabledElement = Rails.handleDisabledElement, handleConfirm = Rails.handleConfirm, preventInsignificantClick = Rails.preventInsignificantClick, handleRemote = Rails.handleRemote, formSubmitButtonClick = Rails.formSubmitButtonClick, handleMethod = Rails.handleMethod;\n\n      if ((typeof jQuery !== \"undefined\" && jQuery !== null) && (jQuery.ajax != null)) {\n        if (jQuery.rails) {\n          throw new Error('If you load both jquery_ujs and rails-ujs, use rails-ujs only.');\n        }\n        jQuery.rails = Rails;\n        jQuery.ajaxPrefilter(function(options, originalOptions, xhr) {\n          if (!options.crossDomain) {\n            return CSRFProtection(xhr);\n          }\n        });\n      }\n\n      Rails.start = function() {\n        if (window._rails_loaded) {\n          throw new Error('rails-ujs has already been loaded!');\n        }\n        window.addEventListener('pageshow', function() {\n          $(Rails.formEnableSelector).forEach(function(el) {\n            if (getData(el, 'ujs:disabled')) {\n              return enableElement(el);\n            }\n          });\n          return $(Rails.linkDisableSelector).forEach(function(el) {\n            if (getData(el, 'ujs:disabled')) {\n              return enableElement(el);\n            }\n          });\n        });\n        delegate(document, Rails.linkDisableSelector, 'ajax:complete', enableElement);\n        delegate(document, Rails.linkDisableSelector, 'ajax:stopped', enableElement);\n        delegate(document, Rails.buttonDisableSelector, 'ajax:complete', enableElement);\n        delegate(document, Rails.buttonDisableSelector, 'ajax:stopped', enableElement);\n        delegate(document, Rails.linkClickSelector, 'click', preventInsignificantClick);\n        delegate(document, Rails.linkClickSelector, 'click', handleDisabledElement);\n        delegate(document, Rails.linkClickSelector, 'click', handleConfirm);\n        delegate(document, Rails.linkClickSelector, 'click', disableElement);\n        delegate(document, Rails.linkClickSelector, 'click', handleRemote);\n        delegate(document, Rails.linkClickSelector, 'click', handleMethod);\n        delegate(document, Rails.buttonClickSelector, 'click', preventInsignificantClick);\n        delegate(document, Rails.buttonClickSelector, 'click', handleDisabledElement);\n        delegate(document, Rails.buttonClickSelector, 'click', handleConfirm);\n        delegate(document, Rails.buttonClickSelector, 'click', disableElement);\n        delegate(document, Rails.buttonClickSelector, 'click', handleRemote);\n        delegate(document, Rails.inputChangeSelector, 'change', handleDisabledElement);\n        delegate(document, Rails.inputChangeSelector, 'change', handleConfirm);\n        delegate(document, Rails.inputChangeSelector, 'change', handleRemote);\n        delegate(document, Rails.formSubmitSelector, 'submit', handleDisabledElement);\n        delegate(document, Rails.formSubmitSelector, 'submit', handleConfirm);\n        delegate(document, Rails.formSubmitSelector, 'submit', handleRemote);\n        delegate(document, Rails.formSubmitSelector, 'submit', function(e) {\n          return setTimeout((function() {\n            return disableElement(e);\n          }), 13);\n        });\n        delegate(document, Rails.formSubmitSelector, 'ajax:send', disableElement);\n        delegate(document, Rails.formSubmitSelector, 'ajax:complete', enableElement);\n        delegate(document, Rails.formInputClickSelector, 'click', preventInsignificantClick);\n        delegate(document, Rails.formInputClickSelector, 'click', handleDisabledElement);\n        delegate(document, Rails.formInputClickSelector, 'click', handleConfirm);\n        delegate(document, Rails.formInputClickSelector, 'click', formSubmitButtonClick);\n        document.addEventListener('DOMContentLoaded', refreshCSRFTokens);\n        document.addEventListener('DOMContentLoaded', loadCSPNonce);\n        return window._rails_loaded = true;\n      };\n\n      if (window.Rails === Rails && fire(document, 'rails:attachBindings')) {\n        Rails.start();\n      }\n\n    }).call(this);\n  }).call(this);\n\n  if (typeof module === \"object\" && module.exports) {\n    module.exports = Rails;\n  } else if (typeof define === \"function\" && define.amd) {\n    define(Rails);\n  }\n}).call(this);\n", "require(\"@rails/ujs\").start();\n\n\nimport $ from 'jquery';\n\nimport React from 'react';\nimport { createRoot } from \"react-dom/client\";\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport * as bootstrap from \"bootstrap\";\n\nimport consumer from \"../channels/consumer\";\n\n// React Components\nimport DashboardMainUI from \"../components/dashboard/MainUI\";\nimport MembersProfile from \"../components/members/MembersProfile.js\";\nimport MembersFormDisplay from \"../components/members/FormDisplay\";\nimport SurveyAnswerUIDisplay from \"../components/members/SurveyAnswerUIDisplay\";\nimport LoanApplicationForm from \"../components/loans/ApplicationFormComponent\";\nimport LoanAccountingEntryComponent from \"../components/loans/AccountingEntryComponent\";\nimport BillingUIComponent from \"../components/billings/BillingUIComponent\";\nimport MembershipPaymentCollectionUIComponent from \"../components/membership_payment_collections/MembershipPaymentCollectionUIComponent\";\nimport DepositCollectionUIComponent from \"../components/deposit_collections/DepositCollectionUIComponent\";\nimport TimeDepositCollectionUIComponent from \"../components/time_deposit_collections/TimeDepositCollectionUIComponent\";\nimport WithdrawalCollectionUIComponent from \"../components/withdrawal_collections/WithdrawalCollectionUIComponent\";\nimport InsuranceFundTransferCollectionUIComponent from \"../components/insurance_fund_transfer_collections/InsuranceFundTransferCollectionUIComponent\";\nimport InsuranceWithdrawalCollectionUIComponent from \"../components/insurance_withdrawal_collections/InsuranceWithdrawalCollectionUIComponent\";\nimport MonthlyClosingCollectionsShowUI from \"../components/monthly_closing_collections/ShowUI\";\nimport InsuranceMonthlyClosingCollectionsShowUI from \"../components/insurance_monthly_closing_collections/ShowUI\";\nimport InsuranceStatusComponent from \"../components/member_accounts/InsuranceStatusComponent\";\nimport TrialBalanceComponent from \"../components/accounting/TrialBalanceComponent\";\nimport GeneralLedgerComponent from \"../components/accounting/GeneralLedgerComponent\";\nimport AccountingEntryFormComponent from \"../components/accounting/AccountingEntryFormComponent\";\nimport DataStoresIcprShowComponent from \"../components/data_stores/icpr/ShowComponent\";\nimport DataStoresPatronageRefundShowComponent from \"../components/data_stores/patronage_refund/ShowComponent\";\nimport SurveyQuestionUIComponent from \"../components/administration/surveys/survey_questions/SurveyQuestionUIComponent.js\";\nimport RepaymentRatesShowComponent from \"../components/data_stores/repayment_rates/ShowComponent.js\";\nimport ManualAgingShowComponent from \"../components/data_stores/manual_aging/ShowComponent.js\";\nimport PersonalFundsShowComponent from \"../components/data_stores/personal_funds/ShowComponent.js\";\nimport InsurancePersonalFundsShowComponent from \"../components/data_stores/insurance_personal_funds/ShowComponent.js\";\nimport SOAExpensesShowComponent from \"../components/data_stores/soa_expenses/ShowComponent.js\";\nimport SOALoansShowComponent from \"../components/data_stores/soa_loans/ShowComponent.js\";\nimport SOAFundsShowComponent from \"../components/data_stores/soa_funds/ShowComponent.js\";\nimport WatchlistsShowComponent from \"../components/data_stores/watchlists/ShowComponent.js\";\nimport XWeeksToPayShowComponent from \"../components/data_stores/x_weeks_to_pay/ShowComponent.js\";\nimport BranchResignationsShowComponent from \"../components/data_stores/branch_resignations/ShowComponent.js\";\nimport AccountingEntrySubsidiaryBalancingComponent from \"../components/monitoring/AccountingEntrySubsidiaryBalancingComponent.js\";\nimport AccountingEntryPrecisionComponent from \"../components/monitoring/AccountingEntryPrecisionComponent.js\";\nimport FormResignationComponent from \"../components/members/FormResignationComponent.js\";\nimport EquityWithdrawalCollectionUIComponent from \"../components/equity_withdrawal_collections/EquityWithdrawalCollectionUIComponent.js\";\nimport GeneralLedgerDisplayComponent from \"../components/accounting/GeneralLedgerDisplayComponent.js\";\nimport MembershipArrangementShow from \"../components/MembershipArrangementShow.js\";\nimport MonthlyNewAndResignedShow from \"../components/data_stores/monthly_new_and_resigned/ShowComponent.js\";\nimport MembersInGoodStandingShowComponent from \"../components/data_stores/members_in_good_standing/ShowComponent.js\";\nimport ForWriteoffShowComponent from \"../components/data_stores/for_writeoff/ShowComponent.js\";\nimport MembershipTypeShow from \"../components/administration/membership_types/MembershpTypesShow.js\";\nimport AdministrationDashboard from \"../components/administration/pages/AdministrationDashboard.js\";\nimport ClosingRecordsManager from \"../components/closing_records/ClosingRecordsManager.js\";\nimport AdministrationBranchesShow from \"../components/administration/branches/Show.js\";\nimport AdministrationCentersShow from \"../components/administration/centers/Show.js\";\nimport BranchPsrRecordsShow from \"../components/branch_psr_records/Show.js\";\nimport VisualizeMonthlyPsr from \"../components/visualize/MonthlyPsr.js\";\nimport TransferSavingsRecordsShow from \"../components/transfer_savings/ShowComponent.js\";\nimport ShareCapitalSummary from \"../components/share_capital_summary/ShowComponents.js\";\nimport PsrSchedulesGenerate from \"../components/psr_schedules/Generate.js\";\nimport AdministrationUsersForm from \"../components/administration/users/Form.js\";\nimport AdministrationUsersIndex from \"../components/administration/users/Index.js\";\nimport AdministrationUsersShow from \"../components/administration/users/Show.js\";\nimport AllowanceComputationReportShowComponent from \"../components/data_stores/allowance_computation_report/ShowComponents.js\";\nimport Login from \"../components/users/Login.js\";\nimport AllowanceLosses from \"../components/allowance_losses/Generate.js\";\n\n// \"init\" Objects\nimport SavingsAccountsShow from \"../models/SavingsAccountsShow.js\";\nimport SavingsAccountsShowWithdrawalRequest from \"../models/ShowWithdrawalRequest.js\";\nimport AccountingCodesIndex from \"../models/AccountingCodesIndex.js\";\nimport AccountingBooksIndex from \"../models/AccountingBooksIndex.js\";\nimport LoansShow from \"../models/LoansShow.js\";\nimport BillingsIndex from \"../models/BillingsIndex.js\";\nimport BillingsShow from \"../models/BillingsShow.js\";\nimport MembershipPaymentCollectionsIndex from \"../models/MembershipPaymentCollectionsIndex.js\";\nimport MembershipPaymentCollectionsShow from \"../models/MembershipPaymentCollectionsShow.js\";\nimport DepositCollectionsIndex from \"../models/DepositCollectionsIndex.js\";\nimport DepositCollectionsShow from \"../models/DepositCollectionsShow.js\";\nimport TimeDepositCollectionsIndex from \"../models/TimeDepositCollectionsIndex.js\";\nimport TimeDepositCollectionsShow from \"../models/TimeDepositCollectionsShow.js\";\nimport WithdrawalCollectionsIndex from \"../models/WithdrawalCollectionsIndex.js\";\nimport WithdrawalCollectionsShow from \"../models/WithdrawalCollectionsShow.js\";\nimport MembersIndex from \"../models/MembersIndex.js\";\nimport SurveyAnswer from \"../models/SurveyAnswer.js\";\nimport SavingsInsuranceTransferCollectionsIndex from \"../models/SavingsInsuranceTransferCollectionsIndex.js\";\nimport SavingsInsuranceTransferCollectionsShow from \"../models/SavingsInsuranceTransferCollectionsShow.js\";\n\nimport InsuranceLoanBundleEnrollmentsIndex from \"../models/InsuranceLoanBundleEnrollmentsIndex.js\";\nimport InsuranceLoanBundleEnrollmentsShow from \"../models/InsuranceLoanBundleEnrollmentsShow.js\";\n\nimport KpfLoanClipsIndex from \"../models/KpfLoanClipsIndex.js\";\nimport KpfLoanClipsShow from \"../models/KpfLoanClipsShow.js\";\n\nimport InsuranceFundTransferCollectionsIndex from \"../models/InsuranceFundTransferCollectionsIndex.js\";\nimport InsuranceFundTransferCollectionsShow from \"../models/InsuranceFundTransferCollectionsShow.js\";\nimport InsuranceWithdrawalCollectionsIndex from \"../models/InsuranceWithdrawalCollectionsIndex.js\";\nimport InsuranceWithdrawalCollectionsShow from \"../models/InsuranceWithdrawalCollectionsShow.js\";\nimport MonthlyClosingCollectionsIndex from \"../models/MonthlyClosingCollectionsIndex.js\";\nimport MonthlyClosingCollectionsShow from \"../models/MonthlyClosingCollectionsShow.js\";\nimport InsuranceMonthlyClosingCollectionsIndex from \"../models/InsuranceMonthlyClosingCollectionsIndex.js\";\nimport InsuranceMonthlyClosingCollectionsShow from \"../models/InsuranceMonthlyClosingCollectionsShow.js\";\nimport CommissionCollectionsIndex from \"../models/CommissionCollectionsIndex.js\";\nimport CommissionCollectionsShow from \"../models/CommissionCollectionsShow.js\";\nimport YearEndClosingsIndex from \"../models/YearEndClosingsIndex.js\";\nimport YearEndClosingsShow from \"../models/YearEndClosingsShow.js\";\nimport DataStoresIcprIndex from \"../models/DataStoresIcprIndex.js\";\nimport DataStoresIcprShow from \"../models/DataStoresIcprShow.js\";\nimport PatronageRefundIndex from \"../models/PatronageRefundIndex.js\";\nimport PatronageRefundShow from \"../models/PatronageRefundShow.js\";\nimport BalanceSheetsIndex from \"../models/BalanceSheetsIndex.js\";\nimport IncomeStatementsIndex from \"../models/IncomeStatementsIndex.js\";\nimport SubsidiaryAdjustmentsIndex from \"../models/SubsidiaryAdjustmentsIndex.js\"; \nimport SubsidiaryAdjustmentsShow from \"../models/SubsidiaryAdjustmentsShow.js\";\nimport BatchMoratoriumAdjustmentsIndex from \"../models/BatchMoratoriumAdjustmentsIndex.js\";\nimport BatchMoratoriumAdjustmentsShow from \"../models/BatchMoratoriumAdjustmentsShow.js\";\nimport MemberAccountValidationsIndex from \"../models/MemberAccountValidationsIndex.js\";\nimport MemberAccountValidationsShow from \"../models/MemberAccountValidationsShow.js\";\nimport MemberAccountValidationsForm from \"../models/MemberAccountValidationsForm.js\";\nimport ClaimsShow from \"../models/ClaimsShow.js\";\nimport ValidationsReport from \"../models/ValidationsReport.js\";\nimport AccountingEntriesShow from \"../models/AccountingEntriesShow.js\";\nimport InsuranceAccountStatusIndex from \"../models/InsuranceAccountStatusIndex.js\";\nimport Seriatim from \"../models/Seriatim.js\";\nimport AdministrationLoanProductsShow from \"../models/AdministrationLoanProductsShow.js\";\nimport AdministrationLoanProductsIndex from \"../models/AdministrationLoanProductsIndex.js\";\nimport AdministrationAreasIndex from \"../models/AdministrationAreasIndex.js\";\nimport AdministrationClustersIndex from \"../models/AdministrationClustersIndex.js\";\nimport AdministrationBranchesIndex from \"../models/AdministrationBranchesIndex.js\";\nimport AdministrationSurveysIndex from \"../models/AdministrationSurveysIndex.js\";\nimport AdministrationSurveysShow from \"../models/AdministrationSurveysShow.js\";\nimport MemberSharesShow from \"../models/MemberSharesShow.js\";\nimport MemberSharesForm from \"../models/MemberSharesForm.js\";\nimport MemberSharesPrintShareCertificate from '../models/MemberSharesPrintShareCertificate.js';\nimport ExportsBillingPerCenter from \"../models/ExportsBillingPerCenter.js\";\nimport MonthlyNewAndResignedIndex from \"../models/MonthlyNewAndResignedIndex.js\";\nimport ExportTools from \"../models/ExportTools.js\";\nimport RepaymentRatesIndex from \"../models/RepaymentRatesIndex.js\";\nimport ManualAgingIndex from \"../models/ManualAgingIndex.js\";\nimport PersonalFundsIndex from \"../models/PersonalFundsIndex.js\";\nimport PersonalFundsShow from \"../models/PersonalFundsShow.js\";\nimport InsurancePersonalFundsIndex from \"../models/InsurancePersonalFundsIndex.js\";\nimport InsurancePersonalFundsShow from \"../models/InsurancePersonalFundsShow.js\";\nimport BranchLoansStatsIndex from \"../models/BranchLoansStatsIndex.js\";\nimport BranchLoansStatsShow from \"../models/BranchLoansStatsShow.js\";\nimport MemberCountsIndex from \"../models/MemberCountsIndex.js\";\nimport MemberCountsShow from \"../models/MemberCountsShow.js\";\nimport InsuranceMemberCountsIndex from \"../models/InsuranceMemberCountsIndex.js\";\nimport InsuranceMemberCountsShow from \"../models/InsuranceMemberCountsShow.js\";\nimport ClaimsCountsIndex from \"../models/ClaimsCountsIndex.js\";\nimport ClaimsCountsShow from \"../models/ClaimsCountsShow.js\";\nimport AccountingEntriesSummariesIndex from \"../models/AccountingEntriesSummariesIndex.js\";\nimport SOAExpensesIndex from \"../models/SOAExpensesIndex.js\";\nimport SOALoansIndex from \"../models/SOALoansIndex.js\";\nimport SOAFundsIndex from \"../models/SOAFundsIndex.js\";\nimport WatchlistsIndex from \"../models/WatchlistsIndex.js\";\nimport MonthlyIncentivesIndex from \"../models/MonthlyIncentivesIndex.js\";\nimport XWeeksToPayIndex from \"../models/XWeeksToPayIndex.js\";\nimport BranchResignationsIndex from \"../models/BranchResignationsIndex.js\";\nimport ReportsMonthlyRemittance from \"../models/ReportsMonthlyRemittance.js\";\nimport ReportsInsuranceInterest from \"../models/ReportsInsuranceInterest.js\";\nimport ReportsInsuredLoans from \"../models/ReportsInsuredLoans.js\";\nimport ReportsHiipReport from \"../models/ReportsHiipReport.js\";\nimport ReportsMemberReports from \"../models/ReportsMemberReports.js\";\nimport ReportsCollectionsCLIP from \"../models/ReportsCollectionsCLIP.js\";\nimport ReportsCollectionsBLIP from \"../models/ReportsCollectionsBLIP.js\";\nimport ReportsMemberDependents from \"../models/ReportsMemberDependents.js\";\nimport ReportsMemberQuarterlyReports from \"../models/ReportsMemberQuarterlyReports.js\";\nimport ReportsInsuranceQuarterlyReports from \"../models/ReportsInsuranceQuarterlyReports.js\";\nimport ReportsMemberCounts from \"../models/ReportsMemberCounts.js\";\nimport ReportsCIC from \"../models/ReportsCIC.js\";\nimport ReportsMonthlyCollection from \"../models/ReportsMonthlyCollection.js\";\nimport ReportsSummaryOfCertificatesAndPolicies from \"../models/ReportsSummaryOfCertificatesAndPolicies.js\";\nimport ReportsSavingsInsuranceTransferReports from \"../models/ReportsSavingsInsuranceTransferReports.js\";\n\nimport ReportsInsuranceLoanBundleReports from \"../models/ReportsInsuranceLoanBundleReports.js\";\nimport ReportsKpfLoanClipReports from \"../models/ReportsKpfLoanClipReports.js\";\n\nimport ReportsClaimsProcessingTimeReport from \"../models/ReportsClaimsProcessingTimeReport.js\";\nimport ReportsClaimsProcessingTimeReportSummary from \"../models/ReportsClaimsProcessingTimeReportSummary.js\";\nimport ReportsReclassifiedReport from \"../models/ReportsReclassifiedReport.js\";\nimport ReportsPersonalDocuments from \"../models/ReportsPersonalDocuments.js\";\nimport ReportsClaims from \"../models/ReportsClaims.js\";\nimport UserDemeritsShow from \"../models/UserDemeritsShow.js\";\nimport EquityWithdrawalCollectionsIndex from \"../models/EquityWithdrawalCollectionsIndex.js\";\nimport EquityWithdrawalCollectionsShow from \"../models/EquityWithdrawalCollectionsShow.js\";\nimport ClaimsIndex from \"../models/ClaimsIndex.js\";\nimport AdjustmentsMoratoriumsIndex from \"../models/AdjustmentsMoratoriumsIndex.js\";\nimport ChangePassword from \"../models/ChangePassword.js\";\nimport TrialBalancesIndex from \"../models/TrialBalancesIndex.js\";\nimport TrialBalancesShow from \"../models/TrialBalancesShow.js\";\nimport GeneralLedgersIndex from \"../models/GeneralLedgersIndex.js\";\nimport GeneralLedgersShow from \"../models/GeneralLedgersShow.js\";\nimport MembersSearch from \"../models/MembersSearch.js\";\nimport AdjustmentsAccruedInterestsIndex from \"../models/AdjustmentsAccruedInterestsIndex.js\";\nimport AdjustmentsAccruedInterestsShow from \"../models/AdjustmentsAccruedInterestsShow.js\";\nimport AccruedPaymentCollectionsIndex  from \"../models/AccruedPaymentCollectionsIndex.js\";\nimport AccruedPaymentCollectionsShow  from \"../models/AccruedPaymentCollectionsShow.js\";\nimport AdjustmentsRecomputeRestructuresIndex from \"../models/AdjustmentsRecomputeRestructuresIndex.js\";\nimport AdjustmentsRecomputeRestructuresShow from \"../models/AdjustmentsRecomputeRestructuresShow.js\";\nimport DailyBranchMetricsIndex from \"../models/DailyBranchMetricsIndex.js\";\nimport Dashboard from \"../models/Dashboard.js\";\nimport MonthlyAccountingCodeSummariesIndex from \"../models/MonthlyAccountingCodeSummariesIndex.js\";\nimport TrendsIndex from \"../models/TrendsIndex.js\";\nimport OnlineApplicationsShow from \"../models/OnlineApplicationsShow.js\";\nimport OnlineLoanApplicationsShow from \"../models/OnlineLoanApplicationsShow.js\";\nimport OnlineLoanApplicationsEdit from \"../models/OnlineLoanApplicationsEdit.js\";\nimport BillingForFullPaymentsIndex from \"../models/BillingForFullPaymentsIndex.js\";\nimport BillingForFullPaymentsShow from \"../models/BillingForFullPaymentsShow.js\";\nimport LoansReverseForm from \"../models/LoansReverseForm.js\";\nimport MidasIndex from \"../models/MidasIndex.js\";\nimport MembersInGoodStandingIndex from \"../models/MembersInGoodStandingIndex.js\";\nimport MembersInGoodStandingShow from \"../models/MembersInGoodStandingShow.js\";\nimport ForWriteoffIndex from \"../models/ForWriteoffIndex.js\";\nimport ForWriteoffShow from \"../models/ForWriteoffShow.js\";\nimport TransferMemberRecordsIndex from \"../models/TransferMemberRecordsIndex.js\";\nimport TransferMemberRecordsShow from \"../models/TransferMemberRecordsShow.js\";\nimport MembersMakePayments from \"../models/MembersMakePayment.js\";\nimport BillingForWriteoffIndex from \"../models/BillingForWriteoffIndex.js\";\nimport BillingForWriteoffShow from \"../models/BillingForWriteoffShow.js\";\nimport MemberIdGeneratorsIndex from \"../models/MemberIdGeneratorsIndex.js\";\nimport MemberIdGeneratorsShow from \"../models/MemberIdGeneratorsShow.js\";\nimport MonthlyIncentivesShow from \"../models/MonthlyIncentivesShow.js\";\nimport Sidebar from \"../models/Sidebar.js\";\nimport BillingForWriteoffCollectionIndex from \"../models/BillingForWriteoffCollectionIndex.js\";\nimport BillingForWriteoffCollectionShow from \"../models/BillingForWriteoffCollectionShow.js\";\nimport AdditionalShareIndex from \"../models/AdditionalShareIndex.js\";\nimport AdditionalShareShow from \"../models/AdditionalShareShow.js\";\nimport Profile from  \"../models/Profile.js\";\nimport MembersProjectTypesIndex from \"../models/MembersProjectTypesIndex.js\";\nimport MembersProjectTypesShow from \"../models/MembersProjectTypesShow.js\";\nimport TransferSavingsIndex from \"../models/TransferSavingsIndex.js\";\nimport TransferSavingsShow from \"../models/TransferSavingsShow.js\";\nimport MbsTransferIndex from \"../models/MbsTransferIndex\";\nimport MbsTransferShow from \"../models/MbsTransferShow\";\nimport InvoluntaryMembersIndex from \"../models/InvoluntaryMembersIndex.js\";\nimport InvoluntaryMembersShow from \"../models/InvoluntaryMembersShow.js\";\nimport BankTransferIndex from \"../models/BankTransferIndex.js\";\nimport ShareCapitalSummaryIndex from \"../models/ShareCapitalSummaryIndex.js\";\nimport ProjectTypeSummaryIndex from \"../models/ProjectTypeSummaryIndex.js\";\nimport AssetsLiabilitiesIndex from \"../models/AssetsLiabilitiesIndex.js\";\nimport BranchCashFlowIndex\tfrom \"../models/BranchCashFlowIndex.js\";\nimport ShareCapitalInvoluntaryIndex from \"../models/ShareCapitalInvoluntary.js\";\nimport ShareCapitalInvoluntaryShow from \"../models/ShareCapitalInvoluntaryShow.js\";\n\nimport BillingForInvoluntaryIndex from \"../models/BillingForInvoluntaryIndex.js\";\nimport BillingForInvoluntaryShow from \"../models/BillingForInvoluntaryShow.js\";\nimport AllowanceComputationIndex from \"../models/AllowanceComputationIndex.js\";\n\nimport AdministrationAddressIndex from '../models/AdministrationAddressIndex.js';\nimport AdministrationProvinceIndex from '../models/AdministrationProvinceIndex.js';\nimport AdministrationMunicipalityIndex from '../models/AdministrationMunicipalityIndex.js';\nimport AdministrationBarangayIndex from '../models/AdministrationBarangayIndex.js';\n\nimport WrittenOffReportIndex from '../models/WrittenOffReportIndex.js';\nimport WrittenOffReportShow from '../models/WrittenOffReportShow.js';\nimport InvoluntaryPaymentIndex from '../models/InvoluntaryPaymentIndex.js';\nimport InvoluntaryPaymentShow from '../models/InvoluntaryPaymentShow.js';\nimport ApiReceiveMembersIndex from '../models/ApiReceiveMembersIndex.js';\nimport ApiReceiveMembersShow from '../models/ApiReceiveMembersShow.js';\n\nimport DormantIndex from '../models/DormantIndex.js';\nimport DormantShow from '../models/DormantShow.js';\nimport HolidayIndex from '../models/HolidayIndex.js';\n\nimport ReportsBillingLapsedMemberReports from '../models/ReportsBillingLapsedMemberReports.js';\nimport BoardResolutionIndex from '../models/BoardResolutionIndex.js';\nimport BoardResolutionShow from '../models/BoardResolutionShow.js';\nimport UploadLoansIndex from \"../models/UploadLoansIndex.js\";\n\n//const renderComponent = (Component, payload) => {\n//  ReactDOM.render(\n//    <Component {...payload} />,\n//    document.getElementById(\"react-root\"),\n//  )\n//}\n//>>>>>>> Instapay_Pesonet\n\nconst hooks = {\n  \"members/form\":                                     [MembersFormDisplay],\n  \"members/index\":                                    [MembersIndex],\n  \"members/search\":                                   [MembersSearch],\n  \"members/show\":                                     [MembersProfile],\n  \"members/form_make_payments\":                       [MembersMakePayments],\n  \"members/survey_answer\":                            [SurveyAnswer],\n  \"members/survey_answer_form\":                       [SurveyAnswerUIDisplay],\n  \"pages/index\":                                      [DashboardMainUI, Dashboard],\n  \"pages/login\":                                      [Login],\n  //\"pages/forgot_password\":                            [PagesForgotPassword],\n  \"savings_accounts/show\":                            [SavingsAccountsShow],\n  \"savings_accounts/time_deposit_withdrawal\":         [SavingsAccountsShowWithdrawalRequest],\n  \"accounting/crb\":                                   [AccountingBooksIndex],\n  \"accounting/cdb\":                                   [AccountingBooksIndex],\n  \"accounting/jvb\":                                   [AccountingBooksIndex],\n  \"accounting/misc\":                                  [AccountingBooksIndex],\n  \"accounting/accounting_codes/index\":                [AccountingCodesIndex],\n  \"loans/show\":                                       [LoansShow, LoanAccountingEntryComponent],\n  \"loans/form\":                                       [LoanApplicationForm],\n  \"branch_psr_records/show\":                          [BranchPsrRecordsShow],\n  \"billings/index\":                                   [BillingsIndex],\n  \"billings/show\":                                    [BillingsShow, BillingUIComponent],\n  \"membership_payment_collections/index\":             [MembershipPaymentCollectionsIndex],\n  \"membership_payment_collections/show\":              [MembershipPaymentCollectionsShow, MembershipPaymentCollectionUIComponent],\n  \"deposit_collections/index\":                        [DepositCollectionsIndex],\n  \"deposit_collections/show\":                         [DepositCollectionsShow, DepositCollectionUIComponent],\n  \"time_deposit_collections/index\":                   [TimeDepositCollectionsIndex],\n  \"time_deposit_collections/show\":                    [TimeDepositCollectionsShow, TimeDepositCollectionUIComponent],\n  \"withdrawal_collections/index\":                     [WithdrawalCollectionsIndex],\n  \"withdrawal_collections/show\":                      [WithdrawalCollectionsShow, WithdrawalCollectionUIComponent],\n  \"savings_insurance_transfer_collections/index\":     [SavingsInsuranceTransferCollectionsIndex],\n  \"savings_insurance_transfer_collections/show\":      [SavingsInsuranceTransferCollectionsShow],\n  \"insurance_loan_bundle_enrollments/index\":     \t  [InsuranceLoanBundleEnrollmentsIndex],\n  \"insurance_loan_bundle_enrollments/show\":      \t  [InsuranceLoanBundleEnrollmentsShow],\n  \"kpf_loan_clips/index\":     \t  \t\t\t\t\t  [KpfLoanClipsIndex],\n  \"kpf_loan_clips/show\":      \t  \t\t\t\t\t  [KpfLoanClipsShow],\n  \"insurance_fund_transfer_collections/index\":        [InsuranceFundTransferCollectionsIndex],\n  \"insurance_fund_transfer_collections/show\":         [InsuranceFundTransferCollectionsShow, InsuranceFundTransferCollectionUIComponent],\n  \"insurance_withdrawal_collections/index\":           [InsuranceWithdrawalCollectionsIndex],\n  \"insurance_withdrawal_collections/show\":            [InsuranceWithdrawalCollectionsShow, InsuranceWithdrawalCollectionUIComponent],\n  \"monthly_closing_collections/index\":                [MonthlyClosingCollectionsIndex],\n  \"monthly_closing_collections/show\":                 [MonthlyClosingCollectionsShow, MonthlyClosingCollectionsShowUI],\n  \"insurance_monthly_closing_collections/index\":      [InsuranceMonthlyClosingCollectionsIndex],\n  \"insurance_monthly_closing_collections/show\":       [InsuranceMonthlyClosingCollectionsShow, InsuranceMonthlyClosingCollectionsShowUI],\n  \"commission_collections/index\":                     [CommissionCollectionsIndex],\n  \"commission_collections/show\":                      [CommissionCollectionsShow],\n  \"insurance_accounts/show\":                          [InsuranceStatusComponent],\n  \"accounting/trial_balance\":                         [TrialBalanceComponent],\n  \"accounting/general_ledger\":                        [GeneralLedgerComponent],\n  \"accounting/accounting_entries/form\":               [AccountingEntryFormComponent],\n  \"accounting/year_end_closings/index\":               [YearEndClosingsIndex],\n  \"accounting/year_end_closings/show\":                [YearEndClosingsShow],\n  \"data_stores/icpr/index\":                           [DataStoresIcprIndex],\n  \"data_stores/icpr/show\":                            [DataStoresIcprShow, DataStoresIcprShowComponent],\n \n  \"data_stores/patronage_refund/index\":               [PatronageRefundIndex],\n  \"data_stores/patronage_refund/show\":                [PatronageRefundShow,DataStoresPatronageRefundShowComponent],\n  \n\n  \"data_stores/members_project_types/index\":          [MembersProjectTypesIndex],\n  \"data_stores/members_project_types/show\":          [MembersProjectTypesShow],\n  \n\n  \"accounting/balance_sheets/index\":                  [BalanceSheetsIndex],\n  \"accounting/income_statements/index\":               [IncomeStatementsIndex],\n  \"adjustments/subsidiary_adjustments/index\":         [SubsidiaryAdjustmentsIndex],\n  \"adjustments/subsidiary_adjustments/show\":          [SubsidiaryAdjustmentsShow],\n  \"adjustments/batch_moratorium_adjustments/index\":   [BatchMoratoriumAdjustmentsIndex],\n  \"adjustments/batch_moratorium_adjustments/show\":    [BatchMoratoriumAdjustmentsShow],\n  \"adjustments/moratoriums/index\":                    [AdjustmentsMoratoriumsIndex],\n  \"adjustments/accrued_interests/index\":              [AdjustmentsAccruedInterestsIndex],\n  \"adjustments/recompute_restructures/index\":         [AdjustmentsRecomputeRestructuresIndex],\n  \"adjustments/recompute_restructures/show\":          [AdjustmentsRecomputeRestructuresShow],\n  \"accrued_payment_collections/index\":                [AccruedPaymentCollectionsIndex],\n  \"adjustments/accrued_interests/show\":               [AdjustmentsAccruedInterestsShow],\n  \"member_account_validations/index\":                 [MemberAccountValidationsIndex],\n  \"member_account_validations/show\":                  [MemberAccountValidationsShow],\n  \"member_account_validations/edit\":                  [MemberAccountValidationsForm],\n  \"claims/show\":                                      [ClaimsShow],\n  \"pages/validations\":                                [ValidationsReport],\n  \"accounting/accounting_entries/show\":               [AccountingEntriesShow],\n  \"pages/daily_report_insurance_account_status\":      [InsuranceAccountStatusIndex],\n  \"pages/seriatim\":                                   [Seriatim],\n  \"claims/index\":                                     [ClaimsIndex],\n  \"closing_records/index\":                            [ClosingRecordsManager],\n  \"administration/pages/index\":                       [AdministrationDashboard],\n  \"administration/users/index\":                       [AdministrationUsersIndex],\n  \"administration/users/show\":                        [AdministrationUsersShow],\n  \"administration/users/new\":                         [AdministrationUsersForm],\n  \"administration/users/edit\":                        [AdministrationUsersForm],\n  \"administration/loan_products/show\":                [AdministrationLoanProductsShow],\n  \"administration/loan_products/index\":               [AdministrationLoanProductsIndex],\n  \"administration/areas/index\":                       [AdministrationAreasIndex],\n  \"administration/clusters/index\":                    [AdministrationClustersIndex],\n  \"administration/branches/index\":                    [AdministrationBranchesIndex],\n  \"administration/branches/show\":                     [AdministrationBranchesShow],\n  \"administration/centers/show\":                      [AdministrationCentersShow],\n  \"administration/surveys/index\":                     [AdministrationSurveysIndex],\n  \"administration/surveys/show\":                      [AdministrationSurveysShow],\n  \"administration/surveys/survey_question_form\":      [SurveyQuestionUIComponent],\n  \"administration/member_shares/print\":               [MemberSharesPrintShareCertificate],\n  \"members/member_shares/show\":                       [MemberSharesShow],\n  \"members/member_shares/new\":                        [MemberSharesForm],\n  \"pages/billing_per_center\":                         [ExportsBillingPerCenter],\n  \"data_stores/monthly_new_and_resigned/index\":       [MonthlyNewAndResignedIndex], \n  \"data_stores/monthly_new_and_resigned/show\":        [MonthlyNewAndResignedShow], \n  \"pages/export_tools\":                               [ExportTools],\n  \"data_stores/repayment_rates/index\":                [RepaymentRatesIndex],\n  \"data_stores/repayment_rates/show\":                 [RepaymentRatesShowComponent],\n  \"data_stores/manual_aging/index\":                   [ManualAgingIndex],\n  \"data_stores/manual_aging/show\":                    [ManualAgingShowComponent],\n  \"data_stores/personal_funds/index\":                 [PersonalFundsIndex],\n  \"data_stores/personal_funds/show\":                  [PersonalFundsShowComponent, PersonalFundsShow],\n  \"data_stores/insurance_personal_funds/index\":       [InsurancePersonalFundsIndex],\n  \"data_stores/insurance_personal_funds/show\":        [InsurancePersonalFundsShowComponent, InsurancePersonalFundsShow],\n  \"data_stores/branch_loans_stats/index\":             [BranchLoansStatsIndex],\n  \"data_stores/branch_loans_stats/show\":              [BranchLoansStatsShow],\n  \"data_stores/member_counts/index\":                  [MemberCountsIndex],\n  \"data_stores/member_counts/show\":                   [MemberCountsShow],\n  \"data_stores/insurance_member_counts/index\":        [InsuranceMemberCountsIndex],\n  \"data_stores/insurance_member_counts/show\":         [InsuranceMemberCountsShow],\n  \"data_stores/claims_counts/index\":                  [ClaimsCountsIndex],\n  \"data_stores/claims_counts/show\":                   [ClaimsCountsShow],\n  \"data_stores/accounting_entries_summaries/index\":   [AccountingEntriesSummariesIndex],\n  \"data_stores/soa_expenses/index\":                   [SOAExpensesIndex],\n  \"data_stores/soa_expenses/show\":                    [SOAExpensesShowComponent],\n  \"data_stores/soa_loans/index\":                      [SOALoansIndex],\n  \"data_stores/soa_loans/show\":                       [SOALoansShowComponent],\n  \"data_stores/soa_funds/index\":                      [SOAFundsIndex],\n  \"data_stores/soa_funds/show\":                       [SOAFundsShowComponent],\n  \"data_stores/watchlists/index\":                     [WatchlistsIndex],\n  \"data_stores/watchlists/show\":                      [WatchlistsShowComponent],\n  \"data_stores/monthly_incentives/index\":             [MonthlyIncentivesIndex],\n  \"data_stores/x_weeks_to_pay/index\":                 [XWeeksToPayIndex],\n  \"data_stores/x_weeks_to_pay/show\":                  [XWeeksToPayShowComponent],\n  \"data_stores/branch_resignations/index\":            [BranchResignationsIndex],\n  \"data_stores/allowance_computation_report/show\":    [AllowanceComputationReportShowComponent],\n  \"data_stores/branch_resignations/show\":             [BranchResignationsShowComponent],\n  \"reports/monthly_remittance\":                       [ReportsMonthlyRemittance],\n  \"reports/insurance_interest\":                       [ReportsInsuranceInterest],\n  \"reports/insured_loans\":                            [ReportsInsuredLoans],\n  \"reports/hiip_report\":                              [ReportsHiipReport],\n  \"reports/member_reports\":                           [ReportsMemberReports],\n  \"reports/collections_clip\":                         [ReportsCollectionsCLIP],\n  \"reports/collections_blip\":                         [ReportsCollectionsBLIP],\n  \"reports/member_dependents\":                        [ReportsMemberDependents],\n  \"reports/member_quarterly_reports\":                 [ReportsMemberQuarterlyReports],\n  \"reports/insurance_quarterly_reports\":              [ReportsInsuranceQuarterlyReports],\n  \"reports/member_counts\":                            [ReportsMemberCounts],\n  \"reports/cic\":                                      [ReportsCIC],\n  \"reports/monthly_collection\":                       [ReportsMonthlyCollection],\n  \"reports/summary_of_certificates_and_policies\":     [ReportsSummaryOfCertificatesAndPolicies],\n  \"reports/savings_insurance_transfer_reports\": \t  [ReportsSavingsInsuranceTransferReports],\n  \"reports/insurance_loan_bundle_reports\": \t  \t\t  [ReportsInsuranceLoanBundleReports],\n  \"reports/billing_lapsed_member_reports\": \t  \t\t  [ReportsBillingLapsedMemberReports],\n  \"reports/kpf_loan_clip_reports\": \t  \t\t  \t\t  [ReportsKpfLoanClipReports],\n  \"reports/claims_processing_time_report\": \t \t\t  [ReportsClaimsProcessingTimeReport],\n  \"reports/claims_processing_time_report_summary\": \t  [ReportsClaimsProcessingTimeReportSummary],\n  \"reports/reclassified_report\": \t \t\t  \t\t  [ReportsReclassifiedReport],\n  \"reports/personal_documents\":                       [ReportsPersonalDocuments],\n  \"reports/claims\":                                   [ReportsClaims],\n  \"monitoring/accounting_entry_subsidiary_balancing\": [AccountingEntrySubsidiaryBalancingComponent],\n  \"monitoring/accounting_entry_precision\":            [AccountingEntryPrecisionComponent],\n  \"administration/user_demerits/show\":                [UserDemeritsShow],\n  \"members/form_resignation\":                         [FormResignationComponent],\n  \"equity_withdrawal_collections/index\":              [EquityWithdrawalCollectionsIndex],\n  \"equity_withdrawal_collections/show\":               [EquityWithdrawalCollectionsShow, EquityWithdrawalCollectionUIComponent],\n  \"pages/change_password\":                            [ChangePassword],\n  \"accounting/trial_balances/index\":                  [TrialBalancesIndex],\n  \"accounting/trial_balances/show\":                   [TrialBalancesShow],\n  \"accounting/general_ledgers/index\":                 [GeneralLedgersIndex],\n  \"accounting/general_ledgers/show\":                  [GeneralLedgersShow, GeneralLedgerDisplayComponent],\n  \"daily_branch_metrics/index\":                       [DailyBranchMetricsIndex],\n  \"monthly_accounting_code_summaries/index\":          [MonthlyAccountingCodeSummariesIndex],\n  \"trends/index\":                                     [TrendsIndex],\n  \"online_applications/show\":                         [OnlineApplicationsShow],\n  \"online_loan_applications/show\":                    [OnlineLoanApplicationsShow],\n  \"online_loan_applications/edit\":                    [OnlineLoanApplicationsEdit],\n  \"billing_for_full_payments/index\":                  [BillingForFullPaymentsIndex],\n  \"billing_for_full_payments/show\":                   [BillingForFullPaymentsShow],\n  \"accrued_payment_collections/show\":                 [AccruedPaymentCollectionsShow],\n  \"administration/membership_arrangements/show\":      [MembershipArrangementShow],\n  \"administration/membership_types/add_loan_product_configurations\":  [MembershipTypeShow],\n  \"loans/reverse_form\":                               [LoansReverseForm],\n  \"excel_reports/index\":                 \t            [MidasIndex],\n  \"data_stores/members_in_good_standing/index\":       [MembersInGoodStandingIndex],\n  \"data_stores/members_in_good_standing/show\":        [MembersInGoodStandingShow,MembersInGoodStandingShowComponent],\n  \"data_stores/for_writeoff/index\":                   [ForWriteoffIndex],\n  \"data_stores/for_writeoff/show\":                    [ForWriteoffShow,ForWriteoffShowComponent],\n  \"transfer_member_records/index\":                    [TransferMemberRecordsIndex],\n  \"transfer_member_records/show\":                     [TransferMemberRecordsShow],\n  \"adjustments/make_payments/show\":                   [MembersMakePayments],\n  \"billing_for_writeoff/index\":                       [BillingForWriteoffIndex],\n  \"billing_for_writeoff/show\":                        [BillingForWriteoffShow],\n  \"data_stores/member_id_generators/index\":           [MemberIdGeneratorsIndex],\n  \"data_stores/project_types_summary/index\":          [ProjectTypeSummaryIndex],\n  \"data_stores/member_id_generators/show\":            [MemberIdGeneratorsShow],\n  \"data_stores/monthly_incentives/show\":              [MonthlyIncentivesShow],\n  \"billing_for_writeoff_collections/index\":           [BillingForWriteoffCollectionIndex],\n  \"billing_for_writeoff_collections/show\":            [BillingForWriteoffCollectionShow],\n  \"additional_share/index\":                           [AdditionalShareIndex],\n  \"additional_share/show\":                            [AdditionalShareShow],\n  \"mbs_transfer/index\":                               [MbsTransferIndex],\n  \"mbs_transfer/show\":                                [MbsTransferShow],\t\n  \"visualize/monthly_psr\":                            [VisualizeMonthlyPsr],\n  \"transfer_savings/index\":                           [TransferSavingsIndex],\n  \"transfer_savings/show\":                            [TransferSavingsShow,TransferSavingsRecordsShow],\n  \"pages/profile\":                                    [Profile],\n  \"bank_transfer/index\":                              [BankTransferIndex],\n  \"data_stores/share_capital_summary/index\":          [ShareCapitalSummaryIndex],\n  \"data_stores/share_capital_summary/show\":\t\t\t\t\t\t[ShareCapitalSummary],\n  \"data_stores/involuntary_members/index\":            [InvoluntaryMembersIndex],\n  \"data_stores/involuntary_members/show\": \t\t\t\t\t\t[InvoluntaryMembersShow],\n  \"psr_schedules/generate\":                           [PsrSchedulesGenerate],\n  \"data_stores/assets_liabilities/index\":\t\t\t\t\t\t\t[AssetsLiabilitiesIndex],\n  \"branch_cash_flow/index\":                           [BranchCashFlowIndex],\n  \"data_stores/share_capital_involuntary/index\": \t\t\t[ShareCapitalInvoluntaryIndex],\n  \"data_stores/share_capital_involuntary/show\":       [ShareCapitalInvoluntaryShow],\n  \"billing_for_involuntary/index\":                    [BillingForInvoluntaryIndex],\n  \"billing_for_involuntary/show\":                     [BillingForInvoluntaryShow],\n\n  \"data_stores/allowance_computation_report/index\":\t\t      [AllowanceComputationIndex],\n  \"administration/admin_address/index\":             [AdministrationAddressIndex],\n  \"administration/admin_province/index\":            [AdministrationProvinceIndex],\n  \"administration/admin_municipality/index\":        [AdministrationMunicipalityIndex],\n  \"administration/admin_barangay/index\":            [AdministrationBarangayIndex],\n\n\n  \"data_stores/written_off_report/index\":             [WrittenOffReportIndex],\n  \"data_stores/written_off_report/show\":              [WrittenOffReportShow],\n  \"allowance_losses/generate\":                        [AllowanceLosses],\n  \"involuntary_payment/index\":                        [InvoluntaryPaymentIndex],\n  \"involuntary_payment/show\":                         [InvoluntaryPaymentShow],\n  \"api_receive_members/index\":                        [ApiReceiveMembersIndex],\n  \"api_receive_members/show\":                         [ApiReceiveMembersShow],\n  \n  \"data_stores/dormant/index\":                        [DormantIndex],\n  \"data_stores/dormant/show\":                         [DormantShow],\n  \"data_stores/holiday/index\":                        [HolidayIndex],\n  \"data_stores/board_resolution/index\":               [BoardResolutionIndex],\n  \"data_stores/board_resolution/show\":                [BoardResolutionShow],\n  \"upload_loans/index\":                         [UploadLoansIndex],\n\n}\n\nconst renderComponent = (Component, payload) => {\n  const rootElement = document.getElementById(\"react-root\");\n  const root        = createRoot(rootElement);\n\n  root.render(\n    <Component {...payload} />\n  )\n}\n\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n  const { route, payload } = JSON.parse($(\"meta[name='parameters']\").attr('content'));\n  const authenticityToken = $(\"meta[name='csrf-token']\").attr('content');\n  const options = { authenticityToken, ...payload }\n\n  const components = hooks[route];\n  if (components) {\n    components.forEach((component) => {\n      if (typeof component.init === \"function\") {\n        // \"init\" object\n        component.init(options)\n      } else {\n        // React component\n        renderComponent(component, options)\n      }\n    })\n  }\n\n  if(route != \"pages/login\") {\n    // SIDEBAR JS\n    Sidebar.init();\n  }\n});\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * Constants\n */\n\nconst elementMap = new Map()\n\nexport default {\n  set(element, key, instance) {\n    if (!elementMap.has(element)) {\n      elementMap.set(element, new Map())\n    }\n\n    const instanceMap = elementMap.get(element)\n\n    // make it clear we only want one instance per element\n    // can be removed later when multiple key/instances are fine to be used\n    if (!instanceMap.has(key) && instanceMap.size !== 0) {\n      // eslint-disable-next-line no-console\n      console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`)\n      return\n    }\n\n    instanceMap.set(key, instance)\n  },\n\n  get(element, key) {\n    if (elementMap.has(element)) {\n      return elementMap.get(element).get(key) || null\n    }\n\n    return null\n  },\n\n  remove(element, key) {\n    if (!elementMap.has(element)) {\n      return\n    }\n\n    const instanceMap = elementMap.get(element)\n\n    instanceMap.delete(key)\n\n    // free up element references if there are no instances left for an element\n    if (instanceMap.size === 0) {\n      elementMap.delete(element)\n    }\n  }\n}\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1_000_000\nconst MILLISECONDS_MULTIPLIER = 1000\nconst TRANSITION_END = 'transitionend'\n\n/**\n * Properly escape IDs selectors to handle weird IDs\n * @param {string} selector\n * @returns {string}\n */\nconst parseSelector = selector => {\n  if (selector && window.CSS && window.CSS.escape) {\n    // document.querySelector needs escaping to handle IDs (html5+) containing for instance /\n    selector = selector.replace(/#([^\\s\"#']+)/g, (match, id) => `#${CSS.escape(id)}`)\n  }\n\n  return selector\n}\n\n// Shout-out Angus Croll (https://goo.gl/pxwQGp)\nconst toType = object => {\n  if (object === null || object === undefined) {\n    return `${object}`\n  }\n\n  return Object.prototype.toString.call(object).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\n/**\n * Public Util API\n */\n\nconst getUID = prefix => {\n  do {\n    prefix += Math.floor(Math.random() * MAX_UID)\n  } while (document.getElementById(prefix))\n\n  return prefix\n}\n\nconst getTransitionDurationFromElement = element => {\n  if (!element) {\n    return 0\n  }\n\n  // Get transition-duration of the element\n  let { transitionDuration, transitionDelay } = window.getComputedStyle(element)\n\n  const floatTransitionDuration = Number.parseFloat(transitionDuration)\n  const floatTransitionDelay = Number.parseFloat(transitionDelay)\n\n  // Return 0 if element or transition duration is not found\n  if (!floatTransitionDuration && !floatTransitionDelay) {\n    return 0\n  }\n\n  // If multiple durations are defined, take the first\n  transitionDuration = transitionDuration.split(',')[0]\n  transitionDelay = transitionDelay.split(',')[0]\n\n  return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n}\n\nconst triggerTransitionEnd = element => {\n  element.dispatchEvent(new Event(TRANSITION_END))\n}\n\nconst isElement = object => {\n  if (!object || typeof object !== 'object') {\n    return false\n  }\n\n  if (typeof object.jquery !== 'undefined') {\n    object = object[0]\n  }\n\n  return typeof object.nodeType !== 'undefined'\n}\n\nconst getElement = object => {\n  // it's a jQuery object or a node element\n  if (isElement(object)) {\n    return object.jquery ? object[0] : object\n  }\n\n  if (typeof object === 'string' && object.length > 0) {\n    return document.querySelector(parseSelector(object))\n  }\n\n  return null\n}\n\nconst isVisible = element => {\n  if (!isElement(element) || element.getClientRects().length === 0) {\n    return false\n  }\n\n  const elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible'\n  // Handle `details` element as its content may falsie appear visible when it is closed\n  const closedDetails = element.closest('details:not([open])')\n\n  if (!closedDetails) {\n    return elementIsVisible\n  }\n\n  if (closedDetails !== element) {\n    const summary = element.closest('summary')\n    if (summary && summary.parentNode !== closedDetails) {\n      return false\n    }\n\n    if (summary === null) {\n      return false\n    }\n  }\n\n  return elementIsVisible\n}\n\nconst isDisabled = element => {\n  if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n    return true\n  }\n\n  if (element.classList.contains('disabled')) {\n    return true\n  }\n\n  if (typeof element.disabled !== 'undefined') {\n    return element.disabled\n  }\n\n  return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false'\n}\n\nconst findShadowRoot = element => {\n  if (!document.documentElement.attachShadow) {\n    return null\n  }\n\n  // Can find the shadow root otherwise it'll return the document\n  if (typeof element.getRootNode === 'function') {\n    const root = element.getRootNode()\n    return root instanceof ShadowRoot ? root : null\n  }\n\n  if (element instanceof ShadowRoot) {\n    return element\n  }\n\n  // when we don't find a shadow root\n  if (!element.parentNode) {\n    return null\n  }\n\n  return findShadowRoot(element.parentNode)\n}\n\nconst noop = () => {}\n\n/**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\nconst reflow = element => {\n  element.offsetHeight // eslint-disable-line no-unused-expressions\n}\n\nconst getjQuery = () => {\n  if (window.jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {\n    return window.jQuery\n  }\n\n  return null\n}\n\nconst DOMContentLoadedCallbacks = []\n\nconst onDOMContentLoaded = callback => {\n  if (document.readyState === 'loading') {\n    // add listener on the first call when the document is in loading state\n    if (!DOMContentLoadedCallbacks.length) {\n      document.addEventListener('DOMContentLoaded', () => {\n        for (const callback of DOMContentLoadedCallbacks) {\n          callback()\n        }\n      })\n    }\n\n    DOMContentLoadedCallbacks.push(callback)\n  } else {\n    callback()\n  }\n}\n\nconst isRTL = () => document.documentElement.dir === 'rtl'\n\nconst defineJQueryPlugin = plugin => {\n  onDOMContentLoaded(() => {\n    const $ = getjQuery()\n    /* istanbul ignore if */\n    if ($) {\n      const name = plugin.NAME\n      const JQUERY_NO_CONFLICT = $.fn[name]\n      $.fn[name] = plugin.jQueryInterface\n      $.fn[name].Constructor = plugin\n      $.fn[name].noConflict = () => {\n        $.fn[name] = JQUERY_NO_CONFLICT\n        return plugin.jQueryInterface\n      }\n    }\n  })\n}\n\nconst execute = (possibleCallback, args = [], defaultValue = possibleCallback) => {\n  return typeof possibleCallback === 'function' ? possibleCallback(...args) : defaultValue\n}\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n  if (!waitForTransition) {\n    execute(callback)\n    return\n  }\n\n  const durationPadding = 5\n  const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding\n\n  let called = false\n\n  const handler = ({ target }) => {\n    if (target !== transitionElement) {\n      return\n    }\n\n    called = true\n    transitionElement.removeEventListener(TRANSITION_END, handler)\n    execute(callback)\n  }\n\n  transitionElement.addEventListener(TRANSITION_END, handler)\n  setTimeout(() => {\n    if (!called) {\n      triggerTransitionEnd(transitionElement)\n    }\n  }, emulatedDuration)\n}\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list    The list of elements\n * @param activeElement   The active element\n * @param shouldGetNext   Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n  const listLength = list.length\n  let index = list.indexOf(activeElement)\n\n  // if the element does not exist in the list return an element\n  // depending on the direction and if cycle is allowed\n  if (index === -1) {\n    return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0]\n  }\n\n  index += shouldGetNext ? 1 : -1\n\n  if (isCycleAllowed) {\n    index = (index + listLength) % listLength\n  }\n\n  return list[Math.max(0, Math.min(index, listLength - 1))]\n}\n\nexport {\n  defineJQueryPlugin,\n  execute,\n  executeAfterTransition,\n  findShadowRoot,\n  getElement,\n  getjQuery,\n  getNextActiveElement,\n  getTransitionDurationFromElement,\n  getUID,\n  isDisabled,\n  isElement,\n  isRTL,\n  isVisible,\n  noop,\n  onDOMContentLoaded,\n  parseSelector,\n  reflow,\n  triggerTransitionEnd,\n  toType\n}\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { getjQuery } from '../util/index.js'\n\n/**\n * Constants\n */\n\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/\nconst stripNameRegex = /\\..*/\nconst stripUidRegex = /::\\d+$/\nconst eventRegistry = {} // Events storage\nlet uidEvent = 1\nconst customEvents = {\n  mouseenter: 'mouseover',\n  mouseleave: 'mouseout'\n}\n\nconst nativeEvents = new Set([\n  'click',\n  'dblclick',\n  'mouseup',\n  'mousedown',\n  'contextmenu',\n  'mousewheel',\n  'DOMMouseScroll',\n  'mouseover',\n  'mouseout',\n  'mousemove',\n  'selectstart',\n  'selectend',\n  'keydown',\n  'keypress',\n  'keyup',\n  'orientationchange',\n  'touchstart',\n  'touchmove',\n  'touchend',\n  'touchcancel',\n  'pointerdown',\n  'pointermove',\n  'pointerup',\n  'pointerleave',\n  'pointercancel',\n  'gesturestart',\n  'gesturechange',\n  'gestureend',\n  'focus',\n  'blur',\n  'change',\n  'reset',\n  'select',\n  'submit',\n  'focusin',\n  'focusout',\n  'load',\n  'unload',\n  'beforeunload',\n  'resize',\n  'move',\n  'DOMContentLoaded',\n  'readystatechange',\n  'error',\n  'abort',\n  'scroll'\n])\n\n/**\n * Private methods\n */\n\nfunction makeEventUid(element, uid) {\n  return (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++\n}\n\nfunction getElementEvents(element) {\n  const uid = makeEventUid(element)\n\n  element.uidEvent = uid\n  eventRegistry[uid] = eventRegistry[uid] || {}\n\n  return eventRegistry[uid]\n}\n\nfunction bootstrapHandler(element, fn) {\n  return function handler(event) {\n    hydrateObj(event, { delegateTarget: element })\n\n    if (handler.oneOff) {\n      EventHandler.off(element, event.type, fn)\n    }\n\n    return fn.apply(element, [event])\n  }\n}\n\nfunction bootstrapDelegationHandler(element, selector, fn) {\n  return function handler(event) {\n    const domElements = element.querySelectorAll(selector)\n\n    for (let { target } = event; target && target !== this; target = target.parentNode) {\n      for (const domElement of domElements) {\n        if (domElement !== target) {\n          continue\n        }\n\n        hydrateObj(event, { delegateTarget: target })\n\n        if (handler.oneOff) {\n          EventHandler.off(element, event.type, selector, fn)\n        }\n\n        return fn.apply(target, [event])\n      }\n    }\n  }\n}\n\nfunction findHandler(events, callable, delegationSelector = null) {\n  return Object.values(events)\n    .find(event => event.callable === callable && event.delegationSelector === delegationSelector)\n}\n\nfunction normalizeParameters(originalTypeEvent, handler, delegationFunction) {\n  const isDelegated = typeof handler === 'string'\n  // TODO: tooltip passes `false` instead of selector, so we need to check\n  const callable = isDelegated ? delegationFunction : (handler || delegationFunction)\n  let typeEvent = getTypeEvent(originalTypeEvent)\n\n  if (!nativeEvents.has(typeEvent)) {\n    typeEvent = originalTypeEvent\n  }\n\n  return [isDelegated, callable, typeEvent]\n}\n\nfunction addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {\n  if (typeof originalTypeEvent !== 'string' || !element) {\n    return\n  }\n\n  let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)\n\n  // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n  // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n  if (originalTypeEvent in customEvents) {\n    const wrapFunction = fn => {\n      return function (event) {\n        if (!event.relatedTarget || (event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget))) {\n          return fn.call(this, event)\n        }\n      }\n    }\n\n    callable = wrapFunction(callable)\n  }\n\n  const events = getElementEvents(element)\n  const handlers = events[typeEvent] || (events[typeEvent] = {})\n  const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null)\n\n  if (previousFunction) {\n    previousFunction.oneOff = previousFunction.oneOff && oneOff\n\n    return\n  }\n\n  const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, ''))\n  const fn = isDelegated ?\n    bootstrapDelegationHandler(element, handler, callable) :\n    bootstrapHandler(element, callable)\n\n  fn.delegationSelector = isDelegated ? handler : null\n  fn.callable = callable\n  fn.oneOff = oneOff\n  fn.uidEvent = uid\n  handlers[uid] = fn\n\n  element.addEventListener(typeEvent, fn, isDelegated)\n}\n\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\n  const fn = findHandler(events[typeEvent], handler, delegationSelector)\n\n  if (!fn) {\n    return\n  }\n\n  element.removeEventListener(typeEvent, fn, Boolean(delegationSelector))\n  delete events[typeEvent][fn.uidEvent]\n}\n\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\n  const storeElementEvent = events[typeEvent] || {}\n\n  for (const [handlerKey, event] of Object.entries(storeElementEvent)) {\n    if (handlerKey.includes(namespace)) {\n      removeHandler(element, events, typeEvent, event.callable, event.delegationSelector)\n    }\n  }\n}\n\nfunction getTypeEvent(event) {\n  // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n  event = event.replace(stripNameRegex, '')\n  return customEvents[event] || event\n}\n\nconst EventHandler = {\n  on(element, event, handler, delegationFunction) {\n    addHandler(element, event, handler, delegationFunction, false)\n  },\n\n  one(element, event, handler, delegationFunction) {\n    addHandler(element, event, handler, delegationFunction, true)\n  },\n\n  off(element, originalTypeEvent, handler, delegationFunction) {\n    if (typeof originalTypeEvent !== 'string' || !element) {\n      return\n    }\n\n    const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)\n    const inNamespace = typeEvent !== originalTypeEvent\n    const events = getElementEvents(element)\n    const storeElementEvent = events[typeEvent] || {}\n    const isNamespace = originalTypeEvent.startsWith('.')\n\n    if (typeof callable !== 'undefined') {\n      // Simplest case: handler is passed, remove that listener ONLY.\n      if (!Object.keys(storeElementEvent).length) {\n        return\n      }\n\n      removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null)\n      return\n    }\n\n    if (isNamespace) {\n      for (const elementEvent of Object.keys(events)) {\n        removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1))\n      }\n    }\n\n    for (const [keyHandlers, event] of Object.entries(storeElementEvent)) {\n      const handlerKey = keyHandlers.replace(stripUidRegex, '')\n\n      if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n        removeHandler(element, events, typeEvent, event.callable, event.delegationSelector)\n      }\n    }\n  },\n\n  trigger(element, event, args) {\n    if (typeof event !== 'string' || !element) {\n      return null\n    }\n\n    const $ = getjQuery()\n    const typeEvent = getTypeEvent(event)\n    const inNamespace = event !== typeEvent\n\n    let jQueryEvent = null\n    let bubbles = true\n    let nativeDispatch = true\n    let defaultPrevented = false\n\n    if (inNamespace && $) {\n      jQueryEvent = $.Event(event, args)\n\n      $(element).trigger(jQueryEvent)\n      bubbles = !jQueryEvent.isPropagationStopped()\n      nativeDispatch = !jQueryEvent.isImmediatePropagationStopped()\n      defaultPrevented = jQueryEvent.isDefaultPrevented()\n    }\n\n    const evt = hydrateObj(new Event(event, { bubbles, cancelable: true }), args)\n\n    if (defaultPrevented) {\n      evt.preventDefault()\n    }\n\n    if (nativeDispatch) {\n      element.dispatchEvent(evt)\n    }\n\n    if (evt.defaultPrevented && jQueryEvent) {\n      jQueryEvent.preventDefault()\n    }\n\n    return evt\n  }\n}\n\nfunction hydrateObj(obj, meta = {}) {\n  for (const [key, value] of Object.entries(meta)) {\n    try {\n      obj[key] = value\n    } catch {\n      Object.defineProperty(obj, key, {\n        configurable: true,\n        get() {\n          return value\n        }\n      })\n    }\n  }\n\n  return obj\n}\n\nexport default EventHandler\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nfunction normalizeData(value) {\n  if (value === 'true') {\n    return true\n  }\n\n  if (value === 'false') {\n    return false\n  }\n\n  if (value === Number(value).toString()) {\n    return Number(value)\n  }\n\n  if (value === '' || value === 'null') {\n    return null\n  }\n\n  if (typeof value !== 'string') {\n    return value\n  }\n\n  try {\n    return JSON.parse(decodeURIComponent(value))\n  } catch {\n    return value\n  }\n}\n\nfunction normalizeDataKey(key) {\n  return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`)\n}\n\nconst Manipulator = {\n  setDataAttribute(element, key, value) {\n    element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value)\n  },\n\n  removeDataAttribute(element, key) {\n    element.removeAttribute(`data-bs-${normalizeDataKey(key)}`)\n  },\n\n  getDataAttributes(element) {\n    if (!element) {\n      return {}\n    }\n\n    const attributes = {}\n    const bsKeys = Object.keys(element.dataset).filter(key => key.startsWith('bs') && !key.startsWith('bsConfig'))\n\n    for (const key of bsKeys) {\n      let pureKey = key.replace(/^bs/, '')\n      pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length)\n      attributes[pureKey] = normalizeData(element.dataset[key])\n    }\n\n    return attributes\n  },\n\n  getDataAttribute(element, key) {\n    return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`))\n  }\n}\n\nexport default Manipulator\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap util/config.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Manipulator from '../dom/manipulator.js'\nimport { isElement, toType } from './index.js'\n\n/**\n * Class definition\n */\n\nclass Config {\n  // Getters\n  static get Default() {\n    return {}\n  }\n\n  static get DefaultType() {\n    return {}\n  }\n\n  static get NAME() {\n    throw new Error('You have to implement the static method \"NAME\", for each component!')\n  }\n\n  _getConfig(config) {\n    config = this._mergeConfigObj(config)\n    config = this._configAfterMerge(config)\n    this._typeCheckConfig(config)\n    return config\n  }\n\n  _configAfterMerge(config) {\n    return config\n  }\n\n  _mergeConfigObj(config, element) {\n    const jsonConfig = isElement(element) ? Manipulator.getDataAttribute(element, 'config') : {} // try to parse\n\n    return {\n      ...this.constructor.Default,\n      ...(typeof jsonConfig === 'object' ? jsonConfig : {}),\n      ...(isElement(element) ? Manipulator.getDataAttributes(element) : {}),\n      ...(typeof config === 'object' ? config : {})\n    }\n  }\n\n  _typeCheckConfig(config, configTypes = this.constructor.DefaultType) {\n    for (const [property, expectedTypes] of Object.entries(configTypes)) {\n      const value = config[property]\n      const valueType = isElement(value) ? 'element' : toType(value)\n\n      if (!new RegExp(expectedTypes).test(valueType)) {\n        throw new TypeError(\n          `${this.constructor.NAME.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`\n        )\n      }\n    }\n  }\n}\n\nexport default Config\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Data from './dom/data.js'\nimport EventHandler from './dom/event-handler.js'\nimport Config from './util/config.js'\nimport { executeAfterTransition, getElement } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst VERSION = '5.3.1'\n\n/**\n * Class definition\n */\n\nclass BaseComponent extends Config {\n  constructor(element, config) {\n    super()\n\n    element = getElement(element)\n    if (!element) {\n      return\n    }\n\n    this._element = element\n    this._config = this._getConfig(config)\n\n    Data.set(this._element, this.constructor.DATA_KEY, this)\n  }\n\n  // Public\n  dispose() {\n    Data.remove(this._element, this.constructor.DATA_KEY)\n    EventHandler.off(this._element, this.constructor.EVENT_KEY)\n\n    for (const propertyName of Object.getOwnPropertyNames(this)) {\n      this[propertyName] = null\n    }\n  }\n\n  _queueCallback(callback, element, isAnimated = true) {\n    executeAfterTransition(callback, element, isAnimated)\n  }\n\n  _getConfig(config) {\n    config = this._mergeConfigObj(config, this._element)\n    config = this._configAfterMerge(config)\n    this._typeCheckConfig(config)\n    return config\n  }\n\n  // Static\n  static getInstance(element) {\n    return Data.get(getElement(element), this.DATA_KEY)\n  }\n\n  static getOrCreateInstance(element, config = {}) {\n    return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null)\n  }\n\n  static get VERSION() {\n    return VERSION\n  }\n\n  static get DATA_KEY() {\n    return `bs.${this.NAME}`\n  }\n\n  static get EVENT_KEY() {\n    return `.${this.DATA_KEY}`\n  }\n\n  static eventName(name) {\n    return `${name}${this.EVENT_KEY}`\n  }\n}\n\nexport default BaseComponent\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { isDisabled, isVisible, parseSelector } from '../util/index.js'\n\nconst getSelector = element => {\n  let selector = element.getAttribute('data-bs-target')\n\n  if (!selector || selector === '#') {\n    let hrefAttribute = element.getAttribute('href')\n\n    // The only valid content that could double as a selector are IDs or classes,\n    // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n    // `document.querySelector` will rightfully complain it is invalid.\n    // See https://github.com/twbs/bootstrap/issues/32273\n    if (!hrefAttribute || (!hrefAttribute.includes('#') && !hrefAttribute.startsWith('.'))) {\n      return null\n    }\n\n    // Just in case some CMS puts out a full URL with the anchor appended\n    if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) {\n      hrefAttribute = `#${hrefAttribute.split('#')[1]}`\n    }\n\n    selector = hrefAttribute && hrefAttribute !== '#' ? hrefAttribute.trim() : null\n  }\n\n  return parseSelector(selector)\n}\n\nconst SelectorEngine = {\n  find(selector, element = document.documentElement) {\n    return [].concat(...Element.prototype.querySelectorAll.call(element, selector))\n  },\n\n  findOne(selector, element = document.documentElement) {\n    return Element.prototype.querySelector.call(element, selector)\n  },\n\n  children(element, selector) {\n    return [].concat(...element.children).filter(child => child.matches(selector))\n  },\n\n  parents(element, selector) {\n    const parents = []\n    let ancestor = element.parentNode.closest(selector)\n\n    while (ancestor) {\n      parents.push(ancestor)\n      ancestor = ancestor.parentNode.closest(selector)\n    }\n\n    return parents\n  },\n\n  prev(element, selector) {\n    let previous = element.previousElementSibling\n\n    while (previous) {\n      if (previous.matches(selector)) {\n        return [previous]\n      }\n\n      previous = previous.previousElementSibling\n    }\n\n    return []\n  },\n  // TODO: this is now unused; remove later along with prev()\n  next(element, selector) {\n    let next = element.nextElementSibling\n\n    while (next) {\n      if (next.matches(selector)) {\n        return [next]\n      }\n\n      next = next.nextElementSibling\n    }\n\n    return []\n  },\n\n  focusableChildren(element) {\n    const focusables = [\n      'a',\n      'button',\n      'input',\n      'textarea',\n      'select',\n      'details',\n      '[tabindex]',\n      '[contenteditable=\"true\"]'\n    ].map(selector => `${selector}:not([tabindex^=\"-\"])`).join(',')\n\n    return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el))\n  },\n\n  getSelectorFromElement(element) {\n    const selector = getSelector(element)\n\n    if (selector) {\n      return SelectorEngine.findOne(selector) ? selector : null\n    }\n\n    return null\n  },\n\n  getElementFromSelector(element) {\n    const selector = getSelector(element)\n\n    return selector ? SelectorEngine.findOne(selector) : null\n  },\n\n  getMultipleElementsFromSelector(element) {\n    const selector = getSelector(element)\n\n    return selector ? SelectorEngine.find(selector) : []\n  }\n}\n\nexport default SelectorEngine\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap util/component-functions.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport SelectorEngine from '../dom/selector-engine.js'\nimport { isDisabled } from './index.js'\n\nconst enableDismissTrigger = (component, method = 'hide') => {\n  const clickEvent = `click.dismiss${component.EVENT_KEY}`\n  const name = component.NAME\n\n  EventHandler.on(document, clickEvent, `[data-bs-dismiss=\"${name}\"]`, function (event) {\n    if (['A', 'AREA'].includes(this.tagName)) {\n      event.preventDefault()\n    }\n\n    if (isDisabled(this)) {\n      return\n    }\n\n    const target = SelectorEngine.getElementFromSelector(this) || this.closest(`.${name}`)\n    const instance = component.getOrCreateInstance(target)\n\n    // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method\n    instance[method]()\n  })\n}\n\nexport {\n  enableDismissTrigger\n}\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport { defineJQueryPlugin } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'alert'\nconst DATA_KEY = 'bs.alert'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_CLOSE = `close${EVENT_KEY}`\nconst EVENT_CLOSED = `closed${EVENT_KEY}`\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\n/**\n * Class definition\n */\n\nclass Alert extends BaseComponent {\n  // Getters\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  close() {\n    const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE)\n\n    if (closeEvent.defaultPrevented) {\n      return\n    }\n\n    this._element.classList.remove(CLASS_NAME_SHOW)\n\n    const isAnimated = this._element.classList.contains(CLASS_NAME_FADE)\n    this._queueCallback(() => this._destroyElement(), this._element, isAnimated)\n  }\n\n  // Private\n  _destroyElement() {\n    this._element.remove()\n    EventHandler.trigger(this._element, EVENT_CLOSED)\n    this.dispose()\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Alert.getOrCreateInstance(this)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config](this)\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nenableDismissTrigger(Alert, 'close')\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Alert)\n\nexport default Alert\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { defineJQueryPlugin } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'button'\nconst DATA_KEY = 'bs.button'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst CLASS_NAME_ACTIVE = 'active'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"button\"]'\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\n/**\n * Class definition\n */\n\nclass Button extends BaseComponent {\n  // Getters\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method\n    this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE))\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Button.getOrCreateInstance(this)\n\n      if (config === 'toggle') {\n        data[config]()\n      }\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, event => {\n  event.preventDefault()\n\n  const button = event.target.closest(SELECTOR_DATA_TOGGLE)\n  const data = Button.getOrCreateInstance(button)\n\n  data.toggle()\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Button)\n\nexport default Button\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap util/swipe.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport Config from './config.js'\nimport { execute } from './index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'swipe'\nconst EVENT_KEY = '.bs.swipe'\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY}`\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY}`\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY}`\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY}`\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY}`\nconst POINTER_TYPE_TOUCH = 'touch'\nconst POINTER_TYPE_PEN = 'pen'\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event'\nconst SWIPE_THRESHOLD = 40\n\nconst Default = {\n  endCallback: null,\n  leftCallback: null,\n  rightCallback: null\n}\n\nconst DefaultType = {\n  endCallback: '(function|null)',\n  leftCallback: '(function|null)',\n  rightCallback: '(function|null)'\n}\n\n/**\n * Class definition\n */\n\nclass Swipe extends Config {\n  constructor(element, config) {\n    super()\n    this._element = element\n\n    if (!element || !Swipe.isSupported()) {\n      return\n    }\n\n    this._config = this._getConfig(config)\n    this._deltaX = 0\n    this._supportPointerEvents = Boolean(window.PointerEvent)\n    this._initEvents()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  dispose() {\n    EventHandler.off(this._element, EVENT_KEY)\n  }\n\n  // Private\n  _start(event) {\n    if (!this._supportPointerEvents) {\n      this._deltaX = event.touches[0].clientX\n\n      return\n    }\n\n    if (this._eventIsPointerPenTouch(event)) {\n      this._deltaX = event.clientX\n    }\n  }\n\n  _end(event) {\n    if (this._eventIsPointerPenTouch(event)) {\n      this._deltaX = event.clientX - this._deltaX\n    }\n\n    this._handleSwipe()\n    execute(this._config.endCallback)\n  }\n\n  _move(event) {\n    this._deltaX = event.touches && event.touches.length > 1 ?\n      0 :\n      event.touches[0].clientX - this._deltaX\n  }\n\n  _handleSwipe() {\n    const absDeltaX = Math.abs(this._deltaX)\n\n    if (absDeltaX <= SWIPE_THRESHOLD) {\n      return\n    }\n\n    const direction = absDeltaX / this._deltaX\n\n    this._deltaX = 0\n\n    if (!direction) {\n      return\n    }\n\n    execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback)\n  }\n\n  _initEvents() {\n    if (this._supportPointerEvents) {\n      EventHandler.on(this._element, EVENT_POINTERDOWN, event => this._start(event))\n      EventHandler.on(this._element, EVENT_POINTERUP, event => this._end(event))\n\n      this._element.classList.add(CLASS_NAME_POINTER_EVENT)\n    } else {\n      EventHandler.on(this._element, EVENT_TOUCHSTART, event => this._start(event))\n      EventHandler.on(this._element, EVENT_TOUCHMOVE, event => this._move(event))\n      EventHandler.on(this._element, EVENT_TOUCHEND, event => this._end(event))\n    }\n  }\n\n  _eventIsPointerPenTouch(event) {\n    return this._supportPointerEvents && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)\n  }\n\n  // Static\n  static isSupported() {\n    return 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0\n  }\n}\n\nexport default Swipe\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n  defineJQueryPlugin,\n  getNextActiveElement,\n  isRTL,\n  isVisible,\n  reflow,\n  triggerTransitionEnd\n} from './util/index.js'\nimport Swipe from './util/swipe.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'carousel'\nconst DATA_KEY = 'bs.carousel'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst TOUCHEVENT_COMPAT_WAIT = 500 // Time for mouse compat events to fire after touch\n\nconst ORDER_NEXT = 'next'\nconst ORDER_PREV = 'prev'\nconst DIRECTION_LEFT = 'left'\nconst DIRECTION_RIGHT = 'right'\n\nconst EVENT_SLIDE = `slide${EVENT_KEY}`\nconst EVENT_SLID = `slid${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_MOUSEENTER = `mouseenter${EVENT_KEY}`\nconst EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY}`\nconst EVENT_DRAG_START = `dragstart${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_CAROUSEL = 'carousel'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_SLIDE = 'slide'\nconst CLASS_NAME_END = 'carousel-item-end'\nconst CLASS_NAME_START = 'carousel-item-start'\nconst CLASS_NAME_NEXT = 'carousel-item-next'\nconst CLASS_NAME_PREV = 'carousel-item-prev'\n\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ITEM = '.carousel-item'\nconst SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM\nconst SELECTOR_ITEM_IMG = '.carousel-item img'\nconst SELECTOR_INDICATORS = '.carousel-indicators'\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'\nconst SELECTOR_DATA_RIDE = '[data-bs-ride=\"carousel\"]'\n\nconst KEY_TO_DIRECTION = {\n  [ARROW_LEFT_KEY]: DIRECTION_RIGHT,\n  [ARROW_RIGHT_KEY]: DIRECTION_LEFT\n}\n\nconst Default = {\n  interval: 5000,\n  keyboard: true,\n  pause: 'hover',\n  ride: false,\n  touch: true,\n  wrap: true\n}\n\nconst DefaultType = {\n  interval: '(number|boolean)', // TODO:v6 remove boolean support\n  keyboard: 'boolean',\n  pause: '(string|boolean)',\n  ride: '(boolean|string)',\n  touch: 'boolean',\n  wrap: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Carousel extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._interval = null\n    this._activeElement = null\n    this._isSliding = false\n    this.touchTimeout = null\n    this._swipeHelper = null\n\n    this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element)\n    this._addEventListeners()\n\n    if (this._config.ride === CLASS_NAME_CAROUSEL) {\n      this.cycle()\n    }\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  next() {\n    this._slide(ORDER_NEXT)\n  }\n\n  nextWhenVisible() {\n    // FIXME TODO use `document.visibilityState`\n    // Don't call next when the page isn't visible\n    // or the carousel or its parent isn't visible\n    if (!document.hidden && isVisible(this._element)) {\n      this.next()\n    }\n  }\n\n  prev() {\n    this._slide(ORDER_PREV)\n  }\n\n  pause() {\n    if (this._isSliding) {\n      triggerTransitionEnd(this._element)\n    }\n\n    this._clearInterval()\n  }\n\n  cycle() {\n    this._clearInterval()\n    this._updateInterval()\n\n    this._interval = setInterval(() => this.nextWhenVisible(), this._config.interval)\n  }\n\n  _maybeEnableCycle() {\n    if (!this._config.ride) {\n      return\n    }\n\n    if (this._isSliding) {\n      EventHandler.one(this._element, EVENT_SLID, () => this.cycle())\n      return\n    }\n\n    this.cycle()\n  }\n\n  to(index) {\n    const items = this._getItems()\n    if (index > items.length - 1 || index < 0) {\n      return\n    }\n\n    if (this._isSliding) {\n      EventHandler.one(this._element, EVENT_SLID, () => this.to(index))\n      return\n    }\n\n    const activeIndex = this._getItemIndex(this._getActive())\n    if (activeIndex === index) {\n      return\n    }\n\n    const order = index > activeIndex ? ORDER_NEXT : ORDER_PREV\n\n    this._slide(order, items[index])\n  }\n\n  dispose() {\n    if (this._swipeHelper) {\n      this._swipeHelper.dispose()\n    }\n\n    super.dispose()\n  }\n\n  // Private\n  _configAfterMerge(config) {\n    config.defaultInterval = config.interval\n    return config\n  }\n\n  _addEventListeners() {\n    if (this._config.keyboard) {\n      EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n    }\n\n    if (this._config.pause === 'hover') {\n      EventHandler.on(this._element, EVENT_MOUSEENTER, () => this.pause())\n      EventHandler.on(this._element, EVENT_MOUSELEAVE, () => this._maybeEnableCycle())\n    }\n\n    if (this._config.touch && Swipe.isSupported()) {\n      this._addTouchEventListeners()\n    }\n  }\n\n  _addTouchEventListeners() {\n    for (const img of SelectorEngine.find(SELECTOR_ITEM_IMG, this._element)) {\n      EventHandler.on(img, EVENT_DRAG_START, event => event.preventDefault())\n    }\n\n    const endCallBack = () => {\n      if (this._config.pause !== 'hover') {\n        return\n      }\n\n      // If it's a touch-enabled device, mouseenter/leave are fired as\n      // part of the mouse compatibility events on first tap - the carousel\n      // would stop cycling until user tapped out of it;\n      // here, we listen for touchend, explicitly pause the carousel\n      // (as if it's the second time we tap on it, mouseenter compat event\n      // is NOT fired) and after a timeout (to allow for mouse compatibility\n      // events to fire) we explicitly restart cycling\n\n      this.pause()\n      if (this.touchTimeout) {\n        clearTimeout(this.touchTimeout)\n      }\n\n      this.touchTimeout = setTimeout(() => this._maybeEnableCycle(), TOUCHEVENT_COMPAT_WAIT + this._config.interval)\n    }\n\n    const swipeConfig = {\n      leftCallback: () => this._slide(this._directionToOrder(DIRECTION_LEFT)),\n      rightCallback: () => this._slide(this._directionToOrder(DIRECTION_RIGHT)),\n      endCallback: endCallBack\n    }\n\n    this._swipeHelper = new Swipe(this._element, swipeConfig)\n  }\n\n  _keydown(event) {\n    if (/input|textarea/i.test(event.target.tagName)) {\n      return\n    }\n\n    const direction = KEY_TO_DIRECTION[event.key]\n    if (direction) {\n      event.preventDefault()\n      this._slide(this._directionToOrder(direction))\n    }\n  }\n\n  _getItemIndex(element) {\n    return this._getItems().indexOf(element)\n  }\n\n  _setActiveIndicatorElement(index) {\n    if (!this._indicatorsElement) {\n      return\n    }\n\n    const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement)\n\n    activeIndicator.classList.remove(CLASS_NAME_ACTIVE)\n    activeIndicator.removeAttribute('aria-current')\n\n    const newActiveIndicator = SelectorEngine.findOne(`[data-bs-slide-to=\"${index}\"]`, this._indicatorsElement)\n\n    if (newActiveIndicator) {\n      newActiveIndicator.classList.add(CLASS_NAME_ACTIVE)\n      newActiveIndicator.setAttribute('aria-current', 'true')\n    }\n  }\n\n  _updateInterval() {\n    const element = this._activeElement || this._getActive()\n\n    if (!element) {\n      return\n    }\n\n    const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10)\n\n    this._config.interval = elementInterval || this._config.defaultInterval\n  }\n\n  _slide(order, element = null) {\n    if (this._isSliding) {\n      return\n    }\n\n    const activeElement = this._getActive()\n    const isNext = order === ORDER_NEXT\n    const nextElement = element || getNextActiveElement(this._getItems(), activeElement, isNext, this._config.wrap)\n\n    if (nextElement === activeElement) {\n      return\n    }\n\n    const nextElementIndex = this._getItemIndex(nextElement)\n\n    const triggerEvent = eventName => {\n      return EventHandler.trigger(this._element, eventName, {\n        relatedTarget: nextElement,\n        direction: this._orderToDirection(order),\n        from: this._getItemIndex(activeElement),\n        to: nextElementIndex\n      })\n    }\n\n    const slideEvent = triggerEvent(EVENT_SLIDE)\n\n    if (slideEvent.defaultPrevented) {\n      return\n    }\n\n    if (!activeElement || !nextElement) {\n      // Some weirdness is happening, so we bail\n      // TODO: change tests that use empty divs to avoid this check\n      return\n    }\n\n    const isCycling = Boolean(this._interval)\n    this.pause()\n\n    this._isSliding = true\n\n    this._setActiveIndicatorElement(nextElementIndex)\n    this._activeElement = nextElement\n\n    const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END\n    const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV\n\n    nextElement.classList.add(orderClassName)\n\n    reflow(nextElement)\n\n    activeElement.classList.add(directionalClassName)\n    nextElement.classList.add(directionalClassName)\n\n    const completeCallBack = () => {\n      nextElement.classList.remove(directionalClassName, orderClassName)\n      nextElement.classList.add(CLASS_NAME_ACTIVE)\n\n      activeElement.classList.remove(CLASS_NAME_ACTIVE, orderClassName, directionalClassName)\n\n      this._isSliding = false\n\n      triggerEvent(EVENT_SLID)\n    }\n\n    this._queueCallback(completeCallBack, activeElement, this._isAnimated())\n\n    if (isCycling) {\n      this.cycle()\n    }\n  }\n\n  _isAnimated() {\n    return this._element.classList.contains(CLASS_NAME_SLIDE)\n  }\n\n  _getActive() {\n    return SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n  }\n\n  _getItems() {\n    return SelectorEngine.find(SELECTOR_ITEM, this._element)\n  }\n\n  _clearInterval() {\n    if (this._interval) {\n      clearInterval(this._interval)\n      this._interval = null\n    }\n  }\n\n  _directionToOrder(direction) {\n    if (isRTL()) {\n      return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT\n    }\n\n    return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV\n  }\n\n  _orderToDirection(order) {\n    if (isRTL()) {\n      return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT\n    }\n\n    return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Carousel.getOrCreateInstance(this, config)\n\n      if (typeof config === 'number') {\n        data.to(config)\n        return\n      }\n\n      if (typeof config === 'string') {\n        if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n          throw new TypeError(`No method named \"${config}\"`)\n        }\n\n        data[config]()\n      }\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, function (event) {\n  const target = SelectorEngine.getElementFromSelector(this)\n\n  if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n    return\n  }\n\n  event.preventDefault()\n\n  const carousel = Carousel.getOrCreateInstance(target)\n  const slideIndex = this.getAttribute('data-bs-slide-to')\n\n  if (slideIndex) {\n    carousel.to(slideIndex)\n    carousel._maybeEnableCycle()\n    return\n  }\n\n  if (Manipulator.getDataAttribute(this, 'slide') === 'next') {\n    carousel.next()\n    carousel._maybeEnableCycle()\n    return\n  }\n\n  carousel.prev()\n  carousel._maybeEnableCycle()\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE)\n\n  for (const carousel of carousels) {\n    Carousel.getOrCreateInstance(carousel)\n  }\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Carousel)\n\nexport default Carousel\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n  defineJQueryPlugin,\n  getElement,\n  reflow\n} from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'collapse'\nconst DATA_KEY = 'bs.collapse'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_COLLAPSE = 'collapse'\nconst CLASS_NAME_COLLAPSING = 'collapsing'\nconst CLASS_NAME_COLLAPSED = 'collapsed'\nconst CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`\nconst CLASS_NAME_HORIZONTAL = 'collapse-horizontal'\n\nconst WIDTH = 'width'\nconst HEIGHT = 'height'\n\nconst SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"collapse\"]'\n\nconst Default = {\n  parent: null,\n  toggle: true\n}\n\nconst DefaultType = {\n  parent: '(null|element)',\n  toggle: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Collapse extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._isTransitioning = false\n    this._triggerArray = []\n\n    const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n    for (const elem of toggleList) {\n      const selector = SelectorEngine.getSelectorFromElement(elem)\n      const filterElement = SelectorEngine.find(selector)\n        .filter(foundElement => foundElement === this._element)\n\n      if (selector !== null && filterElement.length) {\n        this._triggerArray.push(elem)\n      }\n    }\n\n    this._initializeChildren()\n\n    if (!this._config.parent) {\n      this._addAriaAndCollapsedClass(this._triggerArray, this._isShown())\n    }\n\n    if (this._config.toggle) {\n      this.toggle()\n    }\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    if (this._isShown()) {\n      this.hide()\n    } else {\n      this.show()\n    }\n  }\n\n  show() {\n    if (this._isTransitioning || this._isShown()) {\n      return\n    }\n\n    let activeChildren = []\n\n    // find active children\n    if (this._config.parent) {\n      activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES)\n        .filter(element => element !== this._element)\n        .map(element => Collapse.getOrCreateInstance(element, { toggle: false }))\n    }\n\n    if (activeChildren.length && activeChildren[0]._isTransitioning) {\n      return\n    }\n\n    const startEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n    if (startEvent.defaultPrevented) {\n      return\n    }\n\n    for (const activeInstance of activeChildren) {\n      activeInstance.hide()\n    }\n\n    const dimension = this._getDimension()\n\n    this._element.classList.remove(CLASS_NAME_COLLAPSE)\n    this._element.classList.add(CLASS_NAME_COLLAPSING)\n\n    this._element.style[dimension] = 0\n\n    this._addAriaAndCollapsedClass(this._triggerArray, true)\n    this._isTransitioning = true\n\n    const complete = () => {\n      this._isTransitioning = false\n\n      this._element.classList.remove(CLASS_NAME_COLLAPSING)\n      this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n      this._element.style[dimension] = ''\n\n      EventHandler.trigger(this._element, EVENT_SHOWN)\n    }\n\n    const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n    const scrollSize = `scroll${capitalizedDimension}`\n\n    this._queueCallback(complete, this._element, true)\n    this._element.style[dimension] = `${this._element[scrollSize]}px`\n  }\n\n  hide() {\n    if (this._isTransitioning || !this._isShown()) {\n      return\n    }\n\n    const startEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n    if (startEvent.defaultPrevented) {\n      return\n    }\n\n    const dimension = this._getDimension()\n\n    this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n    reflow(this._element)\n\n    this._element.classList.add(CLASS_NAME_COLLAPSING)\n    this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n    for (const trigger of this._triggerArray) {\n      const element = SelectorEngine.getElementFromSelector(trigger)\n\n      if (element && !this._isShown(element)) {\n        this._addAriaAndCollapsedClass([trigger], false)\n      }\n    }\n\n    this._isTransitioning = true\n\n    const complete = () => {\n      this._isTransitioning = false\n      this._element.classList.remove(CLASS_NAME_COLLAPSING)\n      this._element.classList.add(CLASS_NAME_COLLAPSE)\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    }\n\n    this._element.style[dimension] = ''\n\n    this._queueCallback(complete, this._element, true)\n  }\n\n  _isShown(element = this._element) {\n    return element.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  // Private\n  _configAfterMerge(config) {\n    config.toggle = Boolean(config.toggle) // Coerce string values\n    config.parent = getElement(config.parent)\n    return config\n  }\n\n  _getDimension() {\n    return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT\n  }\n\n  _initializeChildren() {\n    if (!this._config.parent) {\n      return\n    }\n\n    const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE)\n\n    for (const element of children) {\n      const selected = SelectorEngine.getElementFromSelector(element)\n\n      if (selected) {\n        this._addAriaAndCollapsedClass([element], this._isShown(selected))\n      }\n    }\n  }\n\n  _getFirstLevelChildren(selector) {\n    const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent)\n    // remove children if greater depth\n    return SelectorEngine.find(selector, this._config.parent).filter(element => !children.includes(element))\n  }\n\n  _addAriaAndCollapsedClass(triggerArray, isOpen) {\n    if (!triggerArray.length) {\n      return\n    }\n\n    for (const element of triggerArray) {\n      element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen)\n      element.setAttribute('aria-expanded', isOpen)\n    }\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    const _config = {}\n    if (typeof config === 'string' && /show|hide/.test(config)) {\n      _config.toggle = false\n    }\n\n    return this.each(function () {\n      const data = Collapse.getOrCreateInstance(this, _config)\n\n      if (typeof config === 'string') {\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`)\n        }\n\n        data[config]()\n      }\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n  if (event.target.tagName === 'A' || (event.delegateTarget && event.delegateTarget.tagName === 'A')) {\n    event.preventDefault()\n  }\n\n  for (const element of SelectorEngine.getMultipleElementsFromSelector(this)) {\n    Collapse.getOrCreateInstance(element, { toggle: false }).toggle()\n  }\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Collapse)\n\nexport default Collapse\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n  defineJQueryPlugin,\n  execute,\n  getElement,\n  getNextActiveElement,\n  isDisabled,\n  isElement,\n  isRTL,\n  isVisible,\n  noop\n} from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'dropdown'\nconst DATA_KEY = 'bs.dropdown'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ESCAPE_KEY = 'Escape'\nconst TAB_KEY = 'Tab'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst RIGHT_MOUSE_BUTTON = 2 // MouseEvent.button value for the secondary button, usually the right button\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_DROPUP = 'dropup'\nconst CLASS_NAME_DROPEND = 'dropend'\nconst CLASS_NAME_DROPSTART = 'dropstart'\nconst CLASS_NAME_DROPUP_CENTER = 'dropup-center'\nconst CLASS_NAME_DROPDOWN_CENTER = 'dropdown-center'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"dropdown\"]:not(.disabled):not(:disabled)'\nconst SELECTOR_DATA_TOGGLE_SHOWN = `${SELECTOR_DATA_TOGGLE}.${CLASS_NAME_SHOW}`\nconst SELECTOR_MENU = '.dropdown-menu'\nconst SELECTOR_NAVBAR = '.navbar'\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav'\nconst SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'\n\nconst PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start'\nconst PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end'\nconst PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start'\nconst PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end'\nconst PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start'\nconst PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start'\nconst PLACEMENT_TOPCENTER = 'top'\nconst PLACEMENT_BOTTOMCENTER = 'bottom'\n\nconst Default = {\n  autoClose: true,\n  boundary: 'clippingParents',\n  display: 'dynamic',\n  offset: [0, 2],\n  popperConfig: null,\n  reference: 'toggle'\n}\n\nconst DefaultType = {\n  autoClose: '(boolean|string)',\n  boundary: '(string|element)',\n  display: 'string',\n  offset: '(array|string|function)',\n  popperConfig: '(null|object|function)',\n  reference: '(string|element|object)'\n}\n\n/**\n * Class definition\n */\n\nclass Dropdown extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._popper = null\n    this._parent = this._element.parentNode // dropdown wrapper\n    // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/\n    this._menu = SelectorEngine.next(this._element, SELECTOR_MENU)[0] ||\n      SelectorEngine.prev(this._element, SELECTOR_MENU)[0] ||\n      SelectorEngine.findOne(SELECTOR_MENU, this._parent)\n    this._inNavbar = this._detectNavbar()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    return this._isShown() ? this.hide() : this.show()\n  }\n\n  show() {\n    if (isDisabled(this._element) || this._isShown()) {\n      return\n    }\n\n    const relatedTarget = {\n      relatedTarget: this._element\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, relatedTarget)\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._createPopper()\n\n    // If this is a touch-enabled device we add extra\n    // empty mouseover listeners to the body's immediate children;\n    // only needed because of broken event delegation on iOS\n    // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n    if ('ontouchstart' in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) {\n      for (const element of [].concat(...document.body.children)) {\n        EventHandler.on(element, 'mouseover', noop)\n      }\n    }\n\n    this._element.focus()\n    this._element.setAttribute('aria-expanded', true)\n\n    this._menu.classList.add(CLASS_NAME_SHOW)\n    this._element.classList.add(CLASS_NAME_SHOW)\n    EventHandler.trigger(this._element, EVENT_SHOWN, relatedTarget)\n  }\n\n  hide() {\n    if (isDisabled(this._element) || !this._isShown()) {\n      return\n    }\n\n    const relatedTarget = {\n      relatedTarget: this._element\n    }\n\n    this._completeHide(relatedTarget)\n  }\n\n  dispose() {\n    if (this._popper) {\n      this._popper.destroy()\n    }\n\n    super.dispose()\n  }\n\n  update() {\n    this._inNavbar = this._detectNavbar()\n    if (this._popper) {\n      this._popper.update()\n    }\n  }\n\n  // Private\n  _completeHide(relatedTarget) {\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE, relatedTarget)\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    // If this is a touch-enabled device we remove the extra\n    // empty mouseover listeners we added for iOS support\n    if ('ontouchstart' in document.documentElement) {\n      for (const element of [].concat(...document.body.children)) {\n        EventHandler.off(element, 'mouseover', noop)\n      }\n    }\n\n    if (this._popper) {\n      this._popper.destroy()\n    }\n\n    this._menu.classList.remove(CLASS_NAME_SHOW)\n    this._element.classList.remove(CLASS_NAME_SHOW)\n    this._element.setAttribute('aria-expanded', 'false')\n    Manipulator.removeDataAttribute(this._menu, 'popper')\n    EventHandler.trigger(this._element, EVENT_HIDDEN, relatedTarget)\n  }\n\n  _getConfig(config) {\n    config = super._getConfig(config)\n\n    if (typeof config.reference === 'object' && !isElement(config.reference) &&\n      typeof config.reference.getBoundingClientRect !== 'function'\n    ) {\n      // Popper virtual elements require a getBoundingClientRect method\n      throw new TypeError(`${NAME.toUpperCase()}: Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.`)\n    }\n\n    return config\n  }\n\n  _createPopper() {\n    if (typeof Popper === 'undefined') {\n      throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)')\n    }\n\n    let referenceElement = this._element\n\n    if (this._config.reference === 'parent') {\n      referenceElement = this._parent\n    } else if (isElement(this._config.reference)) {\n      referenceElement = getElement(this._config.reference)\n    } else if (typeof this._config.reference === 'object') {\n      referenceElement = this._config.reference\n    }\n\n    const popperConfig = this._getPopperConfig()\n    this._popper = Popper.createPopper(referenceElement, this._menu, popperConfig)\n  }\n\n  _isShown() {\n    return this._menu.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  _getPlacement() {\n    const parentDropdown = this._parent\n\n    if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {\n      return PLACEMENT_RIGHT\n    }\n\n    if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {\n      return PLACEMENT_LEFT\n    }\n\n    if (parentDropdown.classList.contains(CLASS_NAME_DROPUP_CENTER)) {\n      return PLACEMENT_TOPCENTER\n    }\n\n    if (parentDropdown.classList.contains(CLASS_NAME_DROPDOWN_CENTER)) {\n      return PLACEMENT_BOTTOMCENTER\n    }\n\n    // We need to trim the value because custom properties can also include spaces\n    const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end'\n\n    if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {\n      return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP\n    }\n\n    return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM\n  }\n\n  _detectNavbar() {\n    return this._element.closest(SELECTOR_NAVBAR) !== null\n  }\n\n  _getOffset() {\n    const { offset } = this._config\n\n    if (typeof offset === 'string') {\n      return offset.split(',').map(value => Number.parseInt(value, 10))\n    }\n\n    if (typeof offset === 'function') {\n      return popperData => offset(popperData, this._element)\n    }\n\n    return offset\n  }\n\n  _getPopperConfig() {\n    const defaultBsPopperConfig = {\n      placement: this._getPlacement(),\n      modifiers: [{\n        name: 'preventOverflow',\n        options: {\n          boundary: this._config.boundary\n        }\n      },\n      {\n        name: 'offset',\n        options: {\n          offset: this._getOffset()\n        }\n      }]\n    }\n\n    // Disable Popper if we have a static display or Dropdown is in Navbar\n    if (this._inNavbar || this._config.display === 'static') {\n      Manipulator.setDataAttribute(this._menu, 'popper', 'static') // TODO: v6 remove\n      defaultBsPopperConfig.modifiers = [{\n        name: 'applyStyles',\n        enabled: false\n      }]\n    }\n\n    return {\n      ...defaultBsPopperConfig,\n      ...execute(this._config.popperConfig, [defaultBsPopperConfig])\n    }\n  }\n\n  _selectMenuItem({ key, target }) {\n    const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(element => isVisible(element))\n\n    if (!items.length) {\n      return\n    }\n\n    // if target isn't included in items (e.g. when expanding the dropdown)\n    // allow cycling to get the last item in case key equals ARROW_UP_KEY\n    getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target)).focus()\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Dropdown.getOrCreateInstance(this, config)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (typeof data[config] === 'undefined') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config]()\n    })\n  }\n\n  static clearMenus(event) {\n    if (event.button === RIGHT_MOUSE_BUTTON || (event.type === 'keyup' && event.key !== TAB_KEY)) {\n      return\n    }\n\n    const openToggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE_SHOWN)\n\n    for (const toggle of openToggles) {\n      const context = Dropdown.getInstance(toggle)\n      if (!context || context._config.autoClose === false) {\n        continue\n      }\n\n      const composedPath = event.composedPath()\n      const isMenuTarget = composedPath.includes(context._menu)\n      if (\n        composedPath.includes(context._element) ||\n        (context._config.autoClose === 'inside' && !isMenuTarget) ||\n        (context._config.autoClose === 'outside' && isMenuTarget)\n      ) {\n        continue\n      }\n\n      // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu\n      if (context._menu.contains(event.target) && ((event.type === 'keyup' && event.key === TAB_KEY) || /input|select|option|textarea|form/i.test(event.target.tagName))) {\n        continue\n      }\n\n      const relatedTarget = { relatedTarget: context._element }\n\n      if (event.type === 'click') {\n        relatedTarget.clickEvent = event\n      }\n\n      context._completeHide(relatedTarget)\n    }\n  }\n\n  static dataApiKeydownHandler(event) {\n    // If not an UP | DOWN | ESCAPE key => not a dropdown command\n    // If input/textarea && if key is other than ESCAPE => not a dropdown command\n\n    const isInput = /input|textarea/i.test(event.target.tagName)\n    const isEscapeEvent = event.key === ESCAPE_KEY\n    const isUpOrDownEvent = [ARROW_UP_KEY, ARROW_DOWN_KEY].includes(event.key)\n\n    if (!isUpOrDownEvent && !isEscapeEvent) {\n      return\n    }\n\n    if (isInput && !isEscapeEvent) {\n      return\n    }\n\n    event.preventDefault()\n\n    // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/\n    const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE) ?\n      this :\n      (SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE)[0] ||\n        SelectorEngine.next(this, SELECTOR_DATA_TOGGLE)[0] ||\n        SelectorEngine.findOne(SELECTOR_DATA_TOGGLE, event.delegateTarget.parentNode))\n\n    const instance = Dropdown.getOrCreateInstance(getToggleButton)\n\n    if (isUpOrDownEvent) {\n      event.stopPropagation()\n      instance.show()\n      instance._selectMenuItem(event)\n      return\n    }\n\n    if (instance._isShown()) { // else is escape and we check if it is shown\n      event.stopPropagation()\n      instance.hide()\n      getToggleButton.focus()\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_CLICK_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  event.preventDefault()\n  Dropdown.getOrCreateInstance(this).toggle()\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Dropdown)\n\nexport default Dropdown\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap util/backdrop.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport Config from './config.js'\nimport { execute, executeAfterTransition, getElement, reflow } from './index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'backdrop'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst EVENT_MOUSEDOWN = `mousedown.bs.${NAME}`\n\nconst Default = {\n  className: 'modal-backdrop',\n  clickCallback: null,\n  isAnimated: false,\n  isVisible: true, // if false, we use the backdrop helper without adding any element to the dom\n  rootElement: 'body' // give the choice to place backdrop under different elements\n}\n\nconst DefaultType = {\n  className: 'string',\n  clickCallback: '(function|null)',\n  isAnimated: 'boolean',\n  isVisible: 'boolean',\n  rootElement: '(element|string)'\n}\n\n/**\n * Class definition\n */\n\nclass Backdrop extends Config {\n  constructor(config) {\n    super()\n    this._config = this._getConfig(config)\n    this._isAppended = false\n    this._element = null\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  show(callback) {\n    if (!this._config.isVisible) {\n      execute(callback)\n      return\n    }\n\n    this._append()\n\n    const element = this._getElement()\n    if (this._config.isAnimated) {\n      reflow(element)\n    }\n\n    element.classList.add(CLASS_NAME_SHOW)\n\n    this._emulateAnimation(() => {\n      execute(callback)\n    })\n  }\n\n  hide(callback) {\n    if (!this._config.isVisible) {\n      execute(callback)\n      return\n    }\n\n    this._getElement().classList.remove(CLASS_NAME_SHOW)\n\n    this._emulateAnimation(() => {\n      this.dispose()\n      execute(callback)\n    })\n  }\n\n  dispose() {\n    if (!this._isAppended) {\n      return\n    }\n\n    EventHandler.off(this._element, EVENT_MOUSEDOWN)\n\n    this._element.remove()\n    this._isAppended = false\n  }\n\n  // Private\n  _getElement() {\n    if (!this._element) {\n      const backdrop = document.createElement('div')\n      backdrop.className = this._config.className\n      if (this._config.isAnimated) {\n        backdrop.classList.add(CLASS_NAME_FADE)\n      }\n\n      this._element = backdrop\n    }\n\n    return this._element\n  }\n\n  _configAfterMerge(config) {\n    // use getElement() with the default \"body\" to get a fresh Element on each instantiation\n    config.rootElement = getElement(config.rootElement)\n    return config\n  }\n\n  _append() {\n    if (this._isAppended) {\n      return\n    }\n\n    const element = this._getElement()\n    this._config.rootElement.append(element)\n\n    EventHandler.on(element, EVENT_MOUSEDOWN, () => {\n      execute(this._config.clickCallback)\n    })\n\n    this._isAppended = true\n  }\n\n  _emulateAnimation(callback) {\n    executeAfterTransition(callback, this._getElement(), this._config.isAnimated)\n  }\n}\n\nexport default Backdrop\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap util/focustrap.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport SelectorEngine from '../dom/selector-engine.js'\nimport Config from './config.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'focustrap'\nconst DATA_KEY = 'bs.focustrap'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY}`\n\nconst TAB_KEY = 'Tab'\nconst TAB_NAV_FORWARD = 'forward'\nconst TAB_NAV_BACKWARD = 'backward'\n\nconst Default = {\n  autofocus: true,\n  trapElement: null // The element to trap focus inside of\n}\n\nconst DefaultType = {\n  autofocus: 'boolean',\n  trapElement: 'element'\n}\n\n/**\n * Class definition\n */\n\nclass FocusTrap extends Config {\n  constructor(config) {\n    super()\n    this._config = this._getConfig(config)\n    this._isActive = false\n    this._lastTabNavDirection = null\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  activate() {\n    if (this._isActive) {\n      return\n    }\n\n    if (this._config.autofocus) {\n      this._config.trapElement.focus()\n    }\n\n    EventHandler.off(document, EVENT_KEY) // guard against infinite focus loop\n    EventHandler.on(document, EVENT_FOCUSIN, event => this._handleFocusin(event))\n    EventHandler.on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event))\n\n    this._isActive = true\n  }\n\n  deactivate() {\n    if (!this._isActive) {\n      return\n    }\n\n    this._isActive = false\n    EventHandler.off(document, EVENT_KEY)\n  }\n\n  // Private\n  _handleFocusin(event) {\n    const { trapElement } = this._config\n\n    if (event.target === document || event.target === trapElement || trapElement.contains(event.target)) {\n      return\n    }\n\n    const elements = SelectorEngine.focusableChildren(trapElement)\n\n    if (elements.length === 0) {\n      trapElement.focus()\n    } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) {\n      elements[elements.length - 1].focus()\n    } else {\n      elements[0].focus()\n    }\n  }\n\n  _handleKeydown(event) {\n    if (event.key !== TAB_KEY) {\n      return\n    }\n\n    this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD\n  }\n}\n\nexport default FocusTrap\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap util/scrollBar.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Manipulator from '../dom/manipulator.js'\nimport SelectorEngine from '../dom/selector-engine.js'\nimport { isElement } from './index.js'\n\n/**\n * Constants\n */\n\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'\nconst SELECTOR_STICKY_CONTENT = '.sticky-top'\nconst PROPERTY_PADDING = 'padding-right'\nconst PROPERTY_MARGIN = 'margin-right'\n\n/**\n * Class definition\n */\n\nclass ScrollBarHelper {\n  constructor() {\n    this._element = document.body\n  }\n\n  // Public\n  getWidth() {\n    // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes\n    const documentWidth = document.documentElement.clientWidth\n    return Math.abs(window.innerWidth - documentWidth)\n  }\n\n  hide() {\n    const width = this.getWidth()\n    this._disableOverFlow()\n    // give padding to element to balance the hidden scrollbar width\n    this._setElementAttributes(this._element, PROPERTY_PADDING, calculatedValue => calculatedValue + width)\n    // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth\n    this._setElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING, calculatedValue => calculatedValue + width)\n    this._setElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN, calculatedValue => calculatedValue - width)\n  }\n\n  reset() {\n    this._resetElementAttributes(this._element, 'overflow')\n    this._resetElementAttributes(this._element, PROPERTY_PADDING)\n    this._resetElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING)\n    this._resetElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN)\n  }\n\n  isOverflowing() {\n    return this.getWidth() > 0\n  }\n\n  // Private\n  _disableOverFlow() {\n    this._saveInitialAttribute(this._element, 'overflow')\n    this._element.style.overflow = 'hidden'\n  }\n\n  _setElementAttributes(selector, styleProperty, callback) {\n    const scrollbarWidth = this.getWidth()\n    const manipulationCallBack = element => {\n      if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {\n        return\n      }\n\n      this._saveInitialAttribute(element, styleProperty)\n      const calculatedValue = window.getComputedStyle(element).getPropertyValue(styleProperty)\n      element.style.setProperty(styleProperty, `${callback(Number.parseFloat(calculatedValue))}px`)\n    }\n\n    this._applyManipulationCallback(selector, manipulationCallBack)\n  }\n\n  _saveInitialAttribute(element, styleProperty) {\n    const actualValue = element.style.getPropertyValue(styleProperty)\n    if (actualValue) {\n      Manipulator.setDataAttribute(element, styleProperty, actualValue)\n    }\n  }\n\n  _resetElementAttributes(selector, styleProperty) {\n    const manipulationCallBack = element => {\n      const value = Manipulator.getDataAttribute(element, styleProperty)\n      // We only want to remove the property if the value is `null`; the value can also be zero\n      if (value === null) {\n        element.style.removeProperty(styleProperty)\n        return\n      }\n\n      Manipulator.removeDataAttribute(element, styleProperty)\n      element.style.setProperty(styleProperty, value)\n    }\n\n    this._applyManipulationCallback(selector, manipulationCallBack)\n  }\n\n  _applyManipulationCallback(selector, callBack) {\n    if (isElement(selector)) {\n      callBack(selector)\n      return\n    }\n\n    for (const sel of SelectorEngine.find(selector, this._element)) {\n      callBack(sel)\n    }\n  }\n}\n\nexport default ScrollBarHelper\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport Backdrop from './util/backdrop.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport FocusTrap from './util/focustrap.js'\nimport { defineJQueryPlugin, isRTL, isVisible, reflow } from './util/index.js'\nimport ScrollBarHelper from './util/scrollbar.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'modal'\nconst DATA_KEY = 'bs.modal'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst ESCAPE_KEY = 'Escape'\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_OPEN = 'modal-open'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_STATIC = 'modal-static'\n\nconst OPEN_SELECTOR = '.modal.show'\nconst SELECTOR_DIALOG = '.modal-dialog'\nconst SELECTOR_MODAL_BODY = '.modal-body'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"modal\"]'\n\nconst Default = {\n  backdrop: true,\n  focus: true,\n  keyboard: true\n}\n\nconst DefaultType = {\n  backdrop: '(boolean|string)',\n  focus: 'boolean',\n  keyboard: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Modal extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element)\n    this._backdrop = this._initializeBackDrop()\n    this._focustrap = this._initializeFocusTrap()\n    this._isShown = false\n    this._isTransitioning = false\n    this._scrollBar = new ScrollBarHelper()\n\n    this._addEventListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle(relatedTarget) {\n    return this._isShown ? this.hide() : this.show(relatedTarget)\n  }\n\n  show(relatedTarget) {\n    if (this._isShown || this._isTransitioning) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, {\n      relatedTarget\n    })\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._isShown = true\n    this._isTransitioning = true\n\n    this._scrollBar.hide()\n\n    document.body.classList.add(CLASS_NAME_OPEN)\n\n    this._adjustDialog()\n\n    this._backdrop.show(() => this._showElement(relatedTarget))\n  }\n\n  hide() {\n    if (!this._isShown || this._isTransitioning) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._isShown = false\n    this._isTransitioning = true\n    this._focustrap.deactivate()\n\n    this._element.classList.remove(CLASS_NAME_SHOW)\n\n    this._queueCallback(() => this._hideModal(), this._element, this._isAnimated())\n  }\n\n  dispose() {\n    EventHandler.off(window, EVENT_KEY)\n    EventHandler.off(this._dialog, EVENT_KEY)\n\n    this._backdrop.dispose()\n    this._focustrap.deactivate()\n\n    super.dispose()\n  }\n\n  handleUpdate() {\n    this._adjustDialog()\n  }\n\n  // Private\n  _initializeBackDrop() {\n    return new Backdrop({\n      isVisible: Boolean(this._config.backdrop), // 'static' option will be translated to true, and booleans will keep their value,\n      isAnimated: this._isAnimated()\n    })\n  }\n\n  _initializeFocusTrap() {\n    return new FocusTrap({\n      trapElement: this._element\n    })\n  }\n\n  _showElement(relatedTarget) {\n    // try to append dynamic modal\n    if (!document.body.contains(this._element)) {\n      document.body.append(this._element)\n    }\n\n    this._element.style.display = 'block'\n    this._element.removeAttribute('aria-hidden')\n    this._element.setAttribute('aria-modal', true)\n    this._element.setAttribute('role', 'dialog')\n    this._element.scrollTop = 0\n\n    const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog)\n    if (modalBody) {\n      modalBody.scrollTop = 0\n    }\n\n    reflow(this._element)\n\n    this._element.classList.add(CLASS_NAME_SHOW)\n\n    const transitionComplete = () => {\n      if (this._config.focus) {\n        this._focustrap.activate()\n      }\n\n      this._isTransitioning = false\n      EventHandler.trigger(this._element, EVENT_SHOWN, {\n        relatedTarget\n      })\n    }\n\n    this._queueCallback(transitionComplete, this._dialog, this._isAnimated())\n  }\n\n  _addEventListeners() {\n    EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n      if (event.key !== ESCAPE_KEY) {\n        return\n      }\n\n      if (this._config.keyboard) {\n        this.hide()\n        return\n      }\n\n      this._triggerBackdropTransition()\n    })\n\n    EventHandler.on(window, EVENT_RESIZE, () => {\n      if (this._isShown && !this._isTransitioning) {\n        this._adjustDialog()\n      }\n    })\n\n    EventHandler.on(this._element, EVENT_MOUSEDOWN_DISMISS, event => {\n      // a bad trick to segregate clicks that may start inside dialog but end outside, and avoid listen to scrollbar clicks\n      EventHandler.one(this._element, EVENT_CLICK_DISMISS, event2 => {\n        if (this._element !== event.target || this._element !== event2.target) {\n          return\n        }\n\n        if (this._config.backdrop === 'static') {\n          this._triggerBackdropTransition()\n          return\n        }\n\n        if (this._config.backdrop) {\n          this.hide()\n        }\n      })\n    })\n  }\n\n  _hideModal() {\n    this._element.style.display = 'none'\n    this._element.setAttribute('aria-hidden', true)\n    this._element.removeAttribute('aria-modal')\n    this._element.removeAttribute('role')\n    this._isTransitioning = false\n\n    this._backdrop.hide(() => {\n      document.body.classList.remove(CLASS_NAME_OPEN)\n      this._resetAdjustments()\n      this._scrollBar.reset()\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    })\n  }\n\n  _isAnimated() {\n    return this._element.classList.contains(CLASS_NAME_FADE)\n  }\n\n  _triggerBackdropTransition() {\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight\n    const initialOverflowY = this._element.style.overflowY\n    // return if the following background transition hasn't yet completed\n    if (initialOverflowY === 'hidden' || this._element.classList.contains(CLASS_NAME_STATIC)) {\n      return\n    }\n\n    if (!isModalOverflowing) {\n      this._element.style.overflowY = 'hidden'\n    }\n\n    this._element.classList.add(CLASS_NAME_STATIC)\n    this._queueCallback(() => {\n      this._element.classList.remove(CLASS_NAME_STATIC)\n      this._queueCallback(() => {\n        this._element.style.overflowY = initialOverflowY\n      }, this._dialog)\n    }, this._dialog)\n\n    this._element.focus()\n  }\n\n  /**\n   * The following methods are used to handle overflowing modals\n   */\n\n  _adjustDialog() {\n    const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight\n    const scrollbarWidth = this._scrollBar.getWidth()\n    const isBodyOverflowing = scrollbarWidth > 0\n\n    if (isBodyOverflowing && !isModalOverflowing) {\n      const property = isRTL() ? 'paddingLeft' : 'paddingRight'\n      this._element.style[property] = `${scrollbarWidth}px`\n    }\n\n    if (!isBodyOverflowing && isModalOverflowing) {\n      const property = isRTL() ? 'paddingRight' : 'paddingLeft'\n      this._element.style[property] = `${scrollbarWidth}px`\n    }\n  }\n\n  _resetAdjustments() {\n    this._element.style.paddingLeft = ''\n    this._element.style.paddingRight = ''\n  }\n\n  // Static\n  static jQueryInterface(config, relatedTarget) {\n    return this.each(function () {\n      const data = Modal.getOrCreateInstance(this, config)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (typeof data[config] === 'undefined') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config](relatedTarget)\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  const target = SelectorEngine.getElementFromSelector(this)\n\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  EventHandler.one(target, EVENT_SHOW, showEvent => {\n    if (showEvent.defaultPrevented) {\n      // only register focus restorer if modal will actually get shown\n      return\n    }\n\n    EventHandler.one(target, EVENT_HIDDEN, () => {\n      if (isVisible(this)) {\n        this.focus()\n      }\n    })\n  })\n\n  // avoid conflict when clicking modal toggler while another one is open\n  const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR)\n  if (alreadyOpen) {\n    Modal.getInstance(alreadyOpen).hide()\n  }\n\n  const data = Modal.getOrCreateInstance(target)\n\n  data.toggle(this)\n})\n\nenableDismissTrigger(Modal)\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Modal)\n\nexport default Modal\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap offcanvas.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport Backdrop from './util/backdrop.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport FocusTrap from './util/focustrap.js'\nimport {\n  defineJQueryPlugin,\n  isDisabled,\n  isVisible\n} from './util/index.js'\nimport ScrollBarHelper from './util/scrollbar.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'offcanvas'\nconst DATA_KEY = 'bs.offcanvas'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst ESCAPE_KEY = 'Escape'\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SHOWING = 'showing'\nconst CLASS_NAME_HIDING = 'hiding'\nconst CLASS_NAME_BACKDROP = 'offcanvas-backdrop'\nconst OPEN_SELECTOR = '.offcanvas.show'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"offcanvas\"]'\n\nconst Default = {\n  backdrop: true,\n  keyboard: true,\n  scroll: false\n}\n\nconst DefaultType = {\n  backdrop: '(boolean|string)',\n  keyboard: 'boolean',\n  scroll: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Offcanvas extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._isShown = false\n    this._backdrop = this._initializeBackDrop()\n    this._focustrap = this._initializeFocusTrap()\n    this._addEventListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle(relatedTarget) {\n    return this._isShown ? this.hide() : this.show(relatedTarget)\n  }\n\n  show(relatedTarget) {\n    if (this._isShown) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, { relatedTarget })\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._isShown = true\n    this._backdrop.show()\n\n    if (!this._config.scroll) {\n      new ScrollBarHelper().hide()\n    }\n\n    this._element.setAttribute('aria-modal', true)\n    this._element.setAttribute('role', 'dialog')\n    this._element.classList.add(CLASS_NAME_SHOWING)\n\n    const completeCallBack = () => {\n      if (!this._config.scroll || this._config.backdrop) {\n        this._focustrap.activate()\n      }\n\n      this._element.classList.add(CLASS_NAME_SHOW)\n      this._element.classList.remove(CLASS_NAME_SHOWING)\n      EventHandler.trigger(this._element, EVENT_SHOWN, { relatedTarget })\n    }\n\n    this._queueCallback(completeCallBack, this._element, true)\n  }\n\n  hide() {\n    if (!this._isShown) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._focustrap.deactivate()\n    this._element.blur()\n    this._isShown = false\n    this._element.classList.add(CLASS_NAME_HIDING)\n    this._backdrop.hide()\n\n    const completeCallback = () => {\n      this._element.classList.remove(CLASS_NAME_SHOW, CLASS_NAME_HIDING)\n      this._element.removeAttribute('aria-modal')\n      this._element.removeAttribute('role')\n\n      if (!this._config.scroll) {\n        new ScrollBarHelper().reset()\n      }\n\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    }\n\n    this._queueCallback(completeCallback, this._element, true)\n  }\n\n  dispose() {\n    this._backdrop.dispose()\n    this._focustrap.deactivate()\n    super.dispose()\n  }\n\n  // Private\n  _initializeBackDrop() {\n    const clickCallback = () => {\n      if (this._config.backdrop === 'static') {\n        EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n        return\n      }\n\n      this.hide()\n    }\n\n    // 'static' option will be translated to true, and booleans will keep their value\n    const isVisible = Boolean(this._config.backdrop)\n\n    return new Backdrop({\n      className: CLASS_NAME_BACKDROP,\n      isVisible,\n      isAnimated: true,\n      rootElement: this._element.parentNode,\n      clickCallback: isVisible ? clickCallback : null\n    })\n  }\n\n  _initializeFocusTrap() {\n    return new FocusTrap({\n      trapElement: this._element\n    })\n  }\n\n  _addEventListeners() {\n    EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n      if (event.key !== ESCAPE_KEY) {\n        return\n      }\n\n      if (this._config.keyboard) {\n        this.hide()\n        return\n      }\n\n      EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n    })\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Offcanvas.getOrCreateInstance(this, config)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config](this)\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  const target = SelectorEngine.getElementFromSelector(this)\n\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  if (isDisabled(this)) {\n    return\n  }\n\n  EventHandler.one(target, EVENT_HIDDEN, () => {\n    // focus on trigger when it is closed\n    if (isVisible(this)) {\n      this.focus()\n    }\n  })\n\n  // avoid conflict when clicking a toggler of an offcanvas, while another is open\n  const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR)\n  if (alreadyOpen && alreadyOpen !== target) {\n    Offcanvas.getInstance(alreadyOpen).hide()\n  }\n\n  const data = Offcanvas.getOrCreateInstance(target)\n  data.toggle(this)\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  for (const selector of SelectorEngine.find(OPEN_SELECTOR)) {\n    Offcanvas.getOrCreateInstance(selector).show()\n  }\n})\n\nEventHandler.on(window, EVENT_RESIZE, () => {\n  for (const element of SelectorEngine.find('[aria-modal][class*=show][class*=offcanvas-]')) {\n    if (getComputedStyle(element).position !== 'fixed') {\n      Offcanvas.getOrCreateInstance(element).hide()\n    }\n  }\n})\n\nenableDismissTrigger(Offcanvas)\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Offcanvas)\n\nexport default Offcanvas\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n// js-docs-start allow-list\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\nexport const DefaultAllowlist = {\n  // Global attributes allowed on any supplied element below.\n  '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n  a: ['target', 'href', 'title', 'rel'],\n  area: [],\n  b: [],\n  br: [],\n  col: [],\n  code: [],\n  div: [],\n  em: [],\n  hr: [],\n  h1: [],\n  h2: [],\n  h3: [],\n  h4: [],\n  h5: [],\n  h6: [],\n  i: [],\n  img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n  li: [],\n  ol: [],\n  p: [],\n  pre: [],\n  s: [],\n  small: [],\n  span: [],\n  sub: [],\n  sup: [],\n  strong: [],\n  u: [],\n  ul: []\n}\n// js-docs-end allow-list\n\nconst uriAttributes = new Set([\n  'background',\n  'cite',\n  'href',\n  'itemtype',\n  'longdesc',\n  'poster',\n  'src',\n  'xlink:href'\n])\n\n/**\n * A pattern that recognizes URLs that are safe wrt. XSS in URL navigation\n * contexts.\n *\n * Shout-out to Angular https://github.com/angular/angular/blob/15.2.8/packages/core/src/sanitization/url_sanitizer.ts#L38\n */\n// eslint-disable-next-line unicorn/better-regex\nconst SAFE_URL_PATTERN = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i\n\nconst allowedAttribute = (attribute, allowedAttributeList) => {\n  const attributeName = attribute.nodeName.toLowerCase()\n\n  if (allowedAttributeList.includes(attributeName)) {\n    if (uriAttributes.has(attributeName)) {\n      return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue))\n    }\n\n    return true\n  }\n\n  // Check if a regular expression validates the attribute.\n  return allowedAttributeList.filter(attributeRegex => attributeRegex instanceof RegExp)\n    .some(regex => regex.test(attributeName))\n}\n\nexport function sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) {\n  if (!unsafeHtml.length) {\n    return unsafeHtml\n  }\n\n  if (sanitizeFunction && typeof sanitizeFunction === 'function') {\n    return sanitizeFunction(unsafeHtml)\n  }\n\n  const domParser = new window.DOMParser()\n  const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html')\n  const elements = [].concat(...createdDocument.body.querySelectorAll('*'))\n\n  for (const element of elements) {\n    const elementName = element.nodeName.toLowerCase()\n\n    if (!Object.keys(allowList).includes(elementName)) {\n      element.remove()\n      continue\n    }\n\n    const attributeList = [].concat(...element.attributes)\n    const allowedAttributes = [].concat(allowList['*'] || [], allowList[elementName] || [])\n\n    for (const attribute of attributeList) {\n      if (!allowedAttribute(attribute, allowedAttributes)) {\n        element.removeAttribute(attribute.nodeName)\n      }\n    }\n  }\n\n  return createdDocument.body.innerHTML\n}\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap util/template-factory.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport SelectorEngine from '../dom/selector-engine.js'\nimport Config from './config.js'\nimport { DefaultAllowlist, sanitizeHtml } from './sanitizer.js'\nimport { execute, getElement, isElement } from './index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'TemplateFactory'\n\nconst Default = {\n  allowList: DefaultAllowlist,\n  content: {}, // { selector : text ,  selector2 : text2 , }\n  extraClass: '',\n  html: false,\n  sanitize: true,\n  sanitizeFn: null,\n  template: '<div></div>'\n}\n\nconst DefaultType = {\n  allowList: 'object',\n  content: 'object',\n  extraClass: '(string|function)',\n  html: 'boolean',\n  sanitize: 'boolean',\n  sanitizeFn: '(null|function)',\n  template: 'string'\n}\n\nconst DefaultContentType = {\n  entry: '(string|element|function|null)',\n  selector: '(string|element)'\n}\n\n/**\n * Class definition\n */\n\nclass TemplateFactory extends Config {\n  constructor(config) {\n    super()\n    this._config = this._getConfig(config)\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  getContent() {\n    return Object.values(this._config.content)\n      .map(config => this._resolvePossibleFunction(config))\n      .filter(Boolean)\n  }\n\n  hasContent() {\n    return this.getContent().length > 0\n  }\n\n  changeContent(content) {\n    this._checkContent(content)\n    this._config.content = { ...this._config.content, ...content }\n    return this\n  }\n\n  toHtml() {\n    const templateWrapper = document.createElement('div')\n    templateWrapper.innerHTML = this._maybeSanitize(this._config.template)\n\n    for (const [selector, text] of Object.entries(this._config.content)) {\n      this._setContent(templateWrapper, text, selector)\n    }\n\n    const template = templateWrapper.children[0]\n    const extraClass = this._resolvePossibleFunction(this._config.extraClass)\n\n    if (extraClass) {\n      template.classList.add(...extraClass.split(' '))\n    }\n\n    return template\n  }\n\n  // Private\n  _typeCheckConfig(config) {\n    super._typeCheckConfig(config)\n    this._checkContent(config.content)\n  }\n\n  _checkContent(arg) {\n    for (const [selector, content] of Object.entries(arg)) {\n      super._typeCheckConfig({ selector, entry: content }, DefaultContentType)\n    }\n  }\n\n  _setContent(template, content, selector) {\n    const templateElement = SelectorEngine.findOne(selector, template)\n\n    if (!templateElement) {\n      return\n    }\n\n    content = this._resolvePossibleFunction(content)\n\n    if (!content) {\n      templateElement.remove()\n      return\n    }\n\n    if (isElement(content)) {\n      this._putElementInTemplate(getElement(content), templateElement)\n      return\n    }\n\n    if (this._config.html) {\n      templateElement.innerHTML = this._maybeSanitize(content)\n      return\n    }\n\n    templateElement.textContent = content\n  }\n\n  _maybeSanitize(arg) {\n    return this._config.sanitize ? sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg\n  }\n\n  _resolvePossibleFunction(arg) {\n    return execute(arg, [this])\n  }\n\n  _putElementInTemplate(element, templateElement) {\n    if (this._config.html) {\n      templateElement.innerHTML = ''\n      templateElement.append(element)\n      return\n    }\n\n    templateElement.textContent = element.textContent\n  }\n}\n\nexport default TemplateFactory\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport { defineJQueryPlugin, execute, findShadowRoot, getElement, getUID, isRTL, noop } from './util/index.js'\nimport { DefaultAllowlist } from './util/sanitizer.js'\nimport TemplateFactory from './util/template-factory.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'tooltip'\nconst DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn'])\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_MODAL = 'modal'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner'\nconst SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`\n\nconst EVENT_MODAL_HIDE = 'hide.bs.modal'\n\nconst TRIGGER_HOVER = 'hover'\nconst TRIGGER_FOCUS = 'focus'\nconst TRIGGER_CLICK = 'click'\nconst TRIGGER_MANUAL = 'manual'\n\nconst EVENT_HIDE = 'hide'\nconst EVENT_HIDDEN = 'hidden'\nconst EVENT_SHOW = 'show'\nconst EVENT_SHOWN = 'shown'\nconst EVENT_INSERTED = 'inserted'\nconst EVENT_CLICK = 'click'\nconst EVENT_FOCUSIN = 'focusin'\nconst EVENT_FOCUSOUT = 'focusout'\nconst EVENT_MOUSEENTER = 'mouseenter'\nconst EVENT_MOUSELEAVE = 'mouseleave'\n\nconst AttachmentMap = {\n  AUTO: 'auto',\n  TOP: 'top',\n  RIGHT: isRTL() ? 'left' : 'right',\n  BOTTOM: 'bottom',\n  LEFT: isRTL() ? 'right' : 'left'\n}\n\nconst Default = {\n  allowList: DefaultAllowlist,\n  animation: true,\n  boundary: 'clippingParents',\n  container: false,\n  customClass: '',\n  delay: 0,\n  fallbackPlacements: ['top', 'right', 'bottom', 'left'],\n  html: false,\n  offset: [0, 6],\n  placement: 'top',\n  popperConfig: null,\n  sanitize: true,\n  sanitizeFn: null,\n  selector: false,\n  template: '<div class=\"tooltip\" role=\"tooltip\">' +\n            '<div class=\"tooltip-arrow\"></div>' +\n            '<div class=\"tooltip-inner\"></div>' +\n            '</div>',\n  title: '',\n  trigger: 'hover focus'\n}\n\nconst DefaultType = {\n  allowList: 'object',\n  animation: 'boolean',\n  boundary: '(string|element)',\n  container: '(string|element|boolean)',\n  customClass: '(string|function)',\n  delay: '(number|object)',\n  fallbackPlacements: 'array',\n  html: 'boolean',\n  offset: '(array|string|function)',\n  placement: '(string|function)',\n  popperConfig: '(null|object|function)',\n  sanitize: 'boolean',\n  sanitizeFn: '(null|function)',\n  selector: '(string|boolean)',\n  template: 'string',\n  title: '(string|element|function)',\n  trigger: 'string'\n}\n\n/**\n * Class definition\n */\n\nclass Tooltip extends BaseComponent {\n  constructor(element, config) {\n    if (typeof Popper === 'undefined') {\n      throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)')\n    }\n\n    super(element, config)\n\n    // Private\n    this._isEnabled = true\n    this._timeout = 0\n    this._isHovered = null\n    this._activeTrigger = {}\n    this._popper = null\n    this._templateFactory = null\n    this._newContent = null\n\n    // Protected\n    this.tip = null\n\n    this._setListeners()\n\n    if (!this._config.selector) {\n      this._fixTitle()\n    }\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  enable() {\n    this._isEnabled = true\n  }\n\n  disable() {\n    this._isEnabled = false\n  }\n\n  toggleEnabled() {\n    this._isEnabled = !this._isEnabled\n  }\n\n  toggle() {\n    if (!this._isEnabled) {\n      return\n    }\n\n    this._activeTrigger.click = !this._activeTrigger.click\n    if (this._isShown()) {\n      this._leave()\n      return\n    }\n\n    this._enter()\n  }\n\n  dispose() {\n    clearTimeout(this._timeout)\n\n    EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n\n    if (this._element.getAttribute('data-bs-original-title')) {\n      this._element.setAttribute('title', this._element.getAttribute('data-bs-original-title'))\n    }\n\n    this._disposePopper()\n    super.dispose()\n  }\n\n  show() {\n    if (this._element.style.display === 'none') {\n      throw new Error('Please use show on visible elements')\n    }\n\n    if (!(this._isWithContent() && this._isEnabled)) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOW))\n    const shadowRoot = findShadowRoot(this._element)\n    const isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(this._element)\n\n    if (showEvent.defaultPrevented || !isInTheDom) {\n      return\n    }\n\n    // TODO: v6 remove this or make it optional\n    this._disposePopper()\n\n    const tip = this._getTipElement()\n\n    this._element.setAttribute('aria-describedby', tip.getAttribute('id'))\n\n    const { container } = this._config\n\n    if (!this._element.ownerDocument.documentElement.contains(this.tip)) {\n      container.append(tip)\n      EventHandler.trigger(this._element, this.constructor.eventName(EVENT_INSERTED))\n    }\n\n    this._popper = this._createPopper(tip)\n\n    tip.classList.add(CLASS_NAME_SHOW)\n\n    // If this is a touch-enabled device we add extra\n    // empty mouseover listeners to the body's immediate children;\n    // only needed because of broken event delegation on iOS\n    // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n    if ('ontouchstart' in document.documentElement) {\n      for (const element of [].concat(...document.body.children)) {\n        EventHandler.on(element, 'mouseover', noop)\n      }\n    }\n\n    const complete = () => {\n      EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOWN))\n\n      if (this._isHovered === false) {\n        this._leave()\n      }\n\n      this._isHovered = false\n    }\n\n    this._queueCallback(complete, this.tip, this._isAnimated())\n  }\n\n  hide() {\n    if (!this._isShown()) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDE))\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    const tip = this._getTipElement()\n    tip.classList.remove(CLASS_NAME_SHOW)\n\n    // If this is a touch-enabled device we remove the extra\n    // empty mouseover listeners we added for iOS support\n    if ('ontouchstart' in document.documentElement) {\n      for (const element of [].concat(...document.body.children)) {\n        EventHandler.off(element, 'mouseover', noop)\n      }\n    }\n\n    this._activeTrigger[TRIGGER_CLICK] = false\n    this._activeTrigger[TRIGGER_FOCUS] = false\n    this._activeTrigger[TRIGGER_HOVER] = false\n    this._isHovered = null // it is a trick to support manual triggering\n\n    const complete = () => {\n      if (this._isWithActiveTrigger()) {\n        return\n      }\n\n      if (!this._isHovered) {\n        this._disposePopper()\n      }\n\n      this._element.removeAttribute('aria-describedby')\n      EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDDEN))\n    }\n\n    this._queueCallback(complete, this.tip, this._isAnimated())\n  }\n\n  update() {\n    if (this._popper) {\n      this._popper.update()\n    }\n  }\n\n  // Protected\n  _isWithContent() {\n    return Boolean(this._getTitle())\n  }\n\n  _getTipElement() {\n    if (!this.tip) {\n      this.tip = this._createTipElement(this._newContent || this._getContentForTemplate())\n    }\n\n    return this.tip\n  }\n\n  _createTipElement(content) {\n    const tip = this._getTemplateFactory(content).toHtml()\n\n    // TODO: remove this check in v6\n    if (!tip) {\n      return null\n    }\n\n    tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW)\n    // TODO: v6 the following can be achieved with CSS only\n    tip.classList.add(`bs-${this.constructor.NAME}-auto`)\n\n    const tipId = getUID(this.constructor.NAME).toString()\n\n    tip.setAttribute('id', tipId)\n\n    if (this._isAnimated()) {\n      tip.classList.add(CLASS_NAME_FADE)\n    }\n\n    return tip\n  }\n\n  setContent(content) {\n    this._newContent = content\n    if (this._isShown()) {\n      this._disposePopper()\n      this.show()\n    }\n  }\n\n  _getTemplateFactory(content) {\n    if (this._templateFactory) {\n      this._templateFactory.changeContent(content)\n    } else {\n      this._templateFactory = new TemplateFactory({\n        ...this._config,\n        // the `content` var has to be after `this._config`\n        // to override config.content in case of popover\n        content,\n        extraClass: this._resolvePossibleFunction(this._config.customClass)\n      })\n    }\n\n    return this._templateFactory\n  }\n\n  _getContentForTemplate() {\n    return {\n      [SELECTOR_TOOLTIP_INNER]: this._getTitle()\n    }\n  }\n\n  _getTitle() {\n    return this._resolvePossibleFunction(this._config.title) || this._element.getAttribute('data-bs-original-title')\n  }\n\n  // Private\n  _initializeOnDelegatedTarget(event) {\n    return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig())\n  }\n\n  _isAnimated() {\n    return this._config.animation || (this.tip && this.tip.classList.contains(CLASS_NAME_FADE))\n  }\n\n  _isShown() {\n    return this.tip && this.tip.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  _createPopper(tip) {\n    const placement = execute(this._config.placement, [this, tip, this._element])\n    const attachment = AttachmentMap[placement.toUpperCase()]\n    return Popper.createPopper(this._element, tip, this._getPopperConfig(attachment))\n  }\n\n  _getOffset() {\n    const { offset } = this._config\n\n    if (typeof offset === 'string') {\n      return offset.split(',').map(value => Number.parseInt(value, 10))\n    }\n\n    if (typeof offset === 'function') {\n      return popperData => offset(popperData, this._element)\n    }\n\n    return offset\n  }\n\n  _resolvePossibleFunction(arg) {\n    return execute(arg, [this._element])\n  }\n\n  _getPopperConfig(attachment) {\n    const defaultBsPopperConfig = {\n      placement: attachment,\n      modifiers: [\n        {\n          name: 'flip',\n          options: {\n            fallbackPlacements: this._config.fallbackPlacements\n          }\n        },\n        {\n          name: 'offset',\n          options: {\n            offset: this._getOffset()\n          }\n        },\n        {\n          name: 'preventOverflow',\n          options: {\n            boundary: this._config.boundary\n          }\n        },\n        {\n          name: 'arrow',\n          options: {\n            element: `.${this.constructor.NAME}-arrow`\n          }\n        },\n        {\n          name: 'preSetPlacement',\n          enabled: true,\n          phase: 'beforeMain',\n          fn: data => {\n            // Pre-set Popper's placement attribute in order to read the arrow sizes properly.\n            // Otherwise, Popper mixes up the width and height dimensions since the initial arrow style is for top placement\n            this._getTipElement().setAttribute('data-popper-placement', data.state.placement)\n          }\n        }\n      ]\n    }\n\n    return {\n      ...defaultBsPopperConfig,\n      ...execute(this._config.popperConfig, [defaultBsPopperConfig])\n    }\n  }\n\n  _setListeners() {\n    const triggers = this._config.trigger.split(' ')\n\n    for (const trigger of triggers) {\n      if (trigger === 'click') {\n        EventHandler.on(this._element, this.constructor.eventName(EVENT_CLICK), this._config.selector, event => {\n          const context = this._initializeOnDelegatedTarget(event)\n          context.toggle()\n        })\n      } else if (trigger !== TRIGGER_MANUAL) {\n        const eventIn = trigger === TRIGGER_HOVER ?\n          this.constructor.eventName(EVENT_MOUSEENTER) :\n          this.constructor.eventName(EVENT_FOCUSIN)\n        const eventOut = trigger === TRIGGER_HOVER ?\n          this.constructor.eventName(EVENT_MOUSELEAVE) :\n          this.constructor.eventName(EVENT_FOCUSOUT)\n\n        EventHandler.on(this._element, eventIn, this._config.selector, event => {\n          const context = this._initializeOnDelegatedTarget(event)\n          context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true\n          context._enter()\n        })\n        EventHandler.on(this._element, eventOut, this._config.selector, event => {\n          const context = this._initializeOnDelegatedTarget(event)\n          context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] =\n            context._element.contains(event.relatedTarget)\n\n          context._leave()\n        })\n      }\n    }\n\n    this._hideModalHandler = () => {\n      if (this._element) {\n        this.hide()\n      }\n    }\n\n    EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n  }\n\n  _fixTitle() {\n    const title = this._element.getAttribute('title')\n\n    if (!title) {\n      return\n    }\n\n    if (!this._element.getAttribute('aria-label') && !this._element.textContent.trim()) {\n      this._element.setAttribute('aria-label', title)\n    }\n\n    this._element.setAttribute('data-bs-original-title', title) // DO NOT USE IT. Is only for backwards compatibility\n    this._element.removeAttribute('title')\n  }\n\n  _enter() {\n    if (this._isShown() || this._isHovered) {\n      this._isHovered = true\n      return\n    }\n\n    this._isHovered = true\n\n    this._setTimeout(() => {\n      if (this._isHovered) {\n        this.show()\n      }\n    }, this._config.delay.show)\n  }\n\n  _leave() {\n    if (this._isWithActiveTrigger()) {\n      return\n    }\n\n    this._isHovered = false\n\n    this._setTimeout(() => {\n      if (!this._isHovered) {\n        this.hide()\n      }\n    }, this._config.delay.hide)\n  }\n\n  _setTimeout(handler, timeout) {\n    clearTimeout(this._timeout)\n    this._timeout = setTimeout(handler, timeout)\n  }\n\n  _isWithActiveTrigger() {\n    return Object.values(this._activeTrigger).includes(true)\n  }\n\n  _getConfig(config) {\n    const dataAttributes = Manipulator.getDataAttributes(this._element)\n\n    for (const dataAttribute of Object.keys(dataAttributes)) {\n      if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) {\n        delete dataAttributes[dataAttribute]\n      }\n    }\n\n    config = {\n      ...dataAttributes,\n      ...(typeof config === 'object' && config ? config : {})\n    }\n    config = this._mergeConfigObj(config)\n    config = this._configAfterMerge(config)\n    this._typeCheckConfig(config)\n    return config\n  }\n\n  _configAfterMerge(config) {\n    config.container = config.container === false ? document.body : getElement(config.container)\n\n    if (typeof config.delay === 'number') {\n      config.delay = {\n        show: config.delay,\n        hide: config.delay\n      }\n    }\n\n    if (typeof config.title === 'number') {\n      config.title = config.title.toString()\n    }\n\n    if (typeof config.content === 'number') {\n      config.content = config.content.toString()\n    }\n\n    return config\n  }\n\n  _getDelegateConfig() {\n    const config = {}\n\n    for (const [key, value] of Object.entries(this._config)) {\n      if (this.constructor.Default[key] !== value) {\n        config[key] = value\n      }\n    }\n\n    config.selector = false\n    config.trigger = 'manual'\n\n    // In the future can be replaced with:\n    // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]])\n    // `Object.fromEntries(keysWithDifferentValues)`\n    return config\n  }\n\n  _disposePopper() {\n    if (this._popper) {\n      this._popper.destroy()\n      this._popper = null\n    }\n\n    if (this.tip) {\n      this.tip.remove()\n      this.tip = null\n    }\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Tooltip.getOrCreateInstance(this, config)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (typeof data[config] === 'undefined') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config]()\n    })\n  }\n}\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Tooltip)\n\nexport default Tooltip\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Tooltip from './tooltip.js'\nimport { defineJQueryPlugin } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'popover'\n\nconst SELECTOR_TITLE = '.popover-header'\nconst SELECTOR_CONTENT = '.popover-body'\n\nconst Default = {\n  ...Tooltip.Default,\n  content: '',\n  offset: [0, 8],\n  placement: 'right',\n  template: '<div class=\"popover\" role=\"tooltip\">' +\n    '<div class=\"popover-arrow\"></div>' +\n    '<h3 class=\"popover-header\"></h3>' +\n    '<div class=\"popover-body\"></div>' +\n    '</div>',\n  trigger: 'click'\n}\n\nconst DefaultType = {\n  ...Tooltip.DefaultType,\n  content: '(null|string|element|function)'\n}\n\n/**\n * Class definition\n */\n\nclass Popover extends Tooltip {\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Overrides\n  _isWithContent() {\n    return this._getTitle() || this._getContent()\n  }\n\n  // Private\n  _getContentForTemplate() {\n    return {\n      [SELECTOR_TITLE]: this._getTitle(),\n      [SELECTOR_CONTENT]: this._getContent()\n    }\n  }\n\n  _getContent() {\n    return this._resolvePossibleFunction(this._config.content)\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Popover.getOrCreateInstance(this, config)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (typeof data[config] === 'undefined') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config]()\n    })\n  }\n}\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Popover)\n\nexport default Popover\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport { defineJQueryPlugin, getElement, isDisabled, isVisible } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'scrollspy'\nconst DATA_KEY = 'bs.scrollspy'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_ACTIVATE = `activate${EVENT_KEY}`\nconst EVENT_CLICK = `click${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item'\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_SPY = '[data-bs-spy=\"scroll\"]'\nconst SELECTOR_TARGET_LINKS = '[href]'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_NAV_LINKS = '.nav-link'\nconst SELECTOR_NAV_ITEMS = '.nav-item'\nconst SELECTOR_LIST_ITEMS = '.list-group-item'\nconst SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_NAV_ITEMS} > ${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\n\nconst Default = {\n  offset: null, // TODO: v6 @deprecated, keep it for backwards compatibility reasons\n  rootMargin: '0px 0px -25%',\n  smoothScroll: false,\n  target: null,\n  threshold: [0.1, 0.5, 1]\n}\n\nconst DefaultType = {\n  offset: '(number|null)', // TODO v6 @deprecated, keep it for backwards compatibility reasons\n  rootMargin: 'string',\n  smoothScroll: 'boolean',\n  target: 'element',\n  threshold: 'array'\n}\n\n/**\n * Class definition\n */\n\nclass ScrollSpy extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    // this._element is the observablesContainer and config.target the menu links wrapper\n    this._targetLinks = new Map()\n    this._observableSections = new Map()\n    this._rootElement = getComputedStyle(this._element).overflowY === 'visible' ? null : this._element\n    this._activeTarget = null\n    this._observer = null\n    this._previousScrollData = {\n      visibleEntryTop: 0,\n      parentScrollTop: 0\n    }\n    this.refresh() // initialize\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  refresh() {\n    this._initializeTargetsAndObservables()\n    this._maybeEnableSmoothScroll()\n\n    if (this._observer) {\n      this._observer.disconnect()\n    } else {\n      this._observer = this._getNewObserver()\n    }\n\n    for (const section of this._observableSections.values()) {\n      this._observer.observe(section)\n    }\n  }\n\n  dispose() {\n    this._observer.disconnect()\n    super.dispose()\n  }\n\n  // Private\n  _configAfterMerge(config) {\n    // TODO: on v6 target should be given explicitly & remove the {target: 'ss-target'} case\n    config.target = getElement(config.target) || document.body\n\n    // TODO: v6 Only for backwards compatibility reasons. Use rootMargin only\n    config.rootMargin = config.offset ? `${config.offset}px 0px -30%` : config.rootMargin\n\n    if (typeof config.threshold === 'string') {\n      config.threshold = config.threshold.split(',').map(value => Number.parseFloat(value))\n    }\n\n    return config\n  }\n\n  _maybeEnableSmoothScroll() {\n    if (!this._config.smoothScroll) {\n      return\n    }\n\n    // unregister any previous listeners\n    EventHandler.off(this._config.target, EVENT_CLICK)\n\n    EventHandler.on(this._config.target, EVENT_CLICK, SELECTOR_TARGET_LINKS, event => {\n      const observableSection = this._observableSections.get(event.target.hash)\n      if (observableSection) {\n        event.preventDefault()\n        const root = this._rootElement || window\n        const height = observableSection.offsetTop - this._element.offsetTop\n        if (root.scrollTo) {\n          root.scrollTo({ top: height, behavior: 'smooth' })\n          return\n        }\n\n        // Chrome 60 doesn't support `scrollTo`\n        root.scrollTop = height\n      }\n    })\n  }\n\n  _getNewObserver() {\n    const options = {\n      root: this._rootElement,\n      threshold: this._config.threshold,\n      rootMargin: this._config.rootMargin\n    }\n\n    return new IntersectionObserver(entries => this._observerCallback(entries), options)\n  }\n\n  // The logic of selection\n  _observerCallback(entries) {\n    const targetElement = entry => this._targetLinks.get(`#${entry.target.id}`)\n    const activate = entry => {\n      this._previousScrollData.visibleEntryTop = entry.target.offsetTop\n      this._process(targetElement(entry))\n    }\n\n    const parentScrollTop = (this._rootElement || document.documentElement).scrollTop\n    const userScrollsDown = parentScrollTop >= this._previousScrollData.parentScrollTop\n    this._previousScrollData.parentScrollTop = parentScrollTop\n\n    for (const entry of entries) {\n      if (!entry.isIntersecting) {\n        this._activeTarget = null\n        this._clearActiveClass(targetElement(entry))\n\n        continue\n      }\n\n      const entryIsLowerThanPrevious = entry.target.offsetTop >= this._previousScrollData.visibleEntryTop\n      // if we are scrolling down, pick the bigger offsetTop\n      if (userScrollsDown && entryIsLowerThanPrevious) {\n        activate(entry)\n        // if parent isn't scrolled, let's keep the first visible item, breaking the iteration\n        if (!parentScrollTop) {\n          return\n        }\n\n        continue\n      }\n\n      // if we are scrolling up, pick the smallest offsetTop\n      if (!userScrollsDown && !entryIsLowerThanPrevious) {\n        activate(entry)\n      }\n    }\n  }\n\n  _initializeTargetsAndObservables() {\n    this._targetLinks = new Map()\n    this._observableSections = new Map()\n\n    const targetLinks = SelectorEngine.find(SELECTOR_TARGET_LINKS, this._config.target)\n\n    for (const anchor of targetLinks) {\n      // ensure that the anchor has an id and is not disabled\n      if (!anchor.hash || isDisabled(anchor)) {\n        continue\n      }\n\n      const observableSection = SelectorEngine.findOne(decodeURI(anchor.hash), this._element)\n\n      // ensure that the observableSection exists & is visible\n      if (isVisible(observableSection)) {\n        this._targetLinks.set(decodeURI(anchor.hash), anchor)\n        this._observableSections.set(anchor.hash, observableSection)\n      }\n    }\n  }\n\n  _process(target) {\n    if (this._activeTarget === target) {\n      return\n    }\n\n    this._clearActiveClass(this._config.target)\n    this._activeTarget = target\n    target.classList.add(CLASS_NAME_ACTIVE)\n    this._activateParents(target)\n\n    EventHandler.trigger(this._element, EVENT_ACTIVATE, { relatedTarget: target })\n  }\n\n  _activateParents(target) {\n    // Activate dropdown parents\n    if (target.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {\n      SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE, target.closest(SELECTOR_DROPDOWN))\n        .classList.add(CLASS_NAME_ACTIVE)\n      return\n    }\n\n    for (const listGroup of SelectorEngine.parents(target, SELECTOR_NAV_LIST_GROUP)) {\n      // Set triggered links parents as active\n      // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n      for (const item of SelectorEngine.prev(listGroup, SELECTOR_LINK_ITEMS)) {\n        item.classList.add(CLASS_NAME_ACTIVE)\n      }\n    }\n  }\n\n  _clearActiveClass(parent) {\n    parent.classList.remove(CLASS_NAME_ACTIVE)\n\n    const activeNodes = SelectorEngine.find(`${SELECTOR_TARGET_LINKS}.${CLASS_NAME_ACTIVE}`, parent)\n    for (const node of activeNodes) {\n      node.classList.remove(CLASS_NAME_ACTIVE)\n    }\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = ScrollSpy.getOrCreateInstance(this, config)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config]()\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  for (const spy of SelectorEngine.find(SELECTOR_DATA_SPY)) {\n    ScrollSpy.getOrCreateInstance(spy)\n  }\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(ScrollSpy)\n\nexport default ScrollSpy\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport { defineJQueryPlugin, getNextActiveElement, isDisabled } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'tab'\nconst DATA_KEY = 'bs.tab'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}`\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst HOME_KEY = 'Home'\nconst END_KEY = 'End'\n\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_DROPDOWN = 'dropdown'\n\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\nconst SELECTOR_DROPDOWN_MENU = '.dropdown-menu'\nconst NOT_SELECTOR_DROPDOWN_TOGGLE = ':not(.dropdown-toggle)'\n\nconst SELECTOR_TAB_PANEL = '.list-group, .nav, [role=\"tablist\"]'\nconst SELECTOR_OUTER = '.nav-item, .list-group-item'\nconst SELECTOR_INNER = `.nav-link${NOT_SELECTOR_DROPDOWN_TOGGLE}, .list-group-item${NOT_SELECTOR_DROPDOWN_TOGGLE}, [role=\"tab\"]${NOT_SELECTOR_DROPDOWN_TOGGLE}`\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tab\"], [data-bs-toggle=\"pill\"], [data-bs-toggle=\"list\"]' // TODO: could only be `tab` in v6\nconst SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`\n\nconst SELECTOR_DATA_TOGGLE_ACTIVE = `.${CLASS_NAME_ACTIVE}[data-bs-toggle=\"tab\"], .${CLASS_NAME_ACTIVE}[data-bs-toggle=\"pill\"], .${CLASS_NAME_ACTIVE}[data-bs-toggle=\"list\"]`\n\n/**\n * Class definition\n */\n\nclass Tab extends BaseComponent {\n  constructor(element) {\n    super(element)\n    this._parent = this._element.closest(SELECTOR_TAB_PANEL)\n\n    if (!this._parent) {\n      return\n      // TODO: should throw exception in v6\n      // throw new TypeError(`${element.outerHTML} has not a valid parent ${SELECTOR_INNER_ELEM}`)\n    }\n\n    // Set up initial aria attributes\n    this._setInitialAttributes(this._parent, this._getChildren())\n\n    EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n  }\n\n  // Getters\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  show() { // Shows this elem and deactivate the active sibling if exists\n    const innerElem = this._element\n    if (this._elemIsActive(innerElem)) {\n      return\n    }\n\n    // Search for active tab on same parent to deactivate it\n    const active = this._getActiveElem()\n\n    const hideEvent = active ?\n      EventHandler.trigger(active, EVENT_HIDE, { relatedTarget: innerElem }) :\n      null\n\n    const showEvent = EventHandler.trigger(innerElem, EVENT_SHOW, { relatedTarget: active })\n\n    if (showEvent.defaultPrevented || (hideEvent && hideEvent.defaultPrevented)) {\n      return\n    }\n\n    this._deactivate(active, innerElem)\n    this._activate(innerElem, active)\n  }\n\n  // Private\n  _activate(element, relatedElem) {\n    if (!element) {\n      return\n    }\n\n    element.classList.add(CLASS_NAME_ACTIVE)\n\n    this._activate(SelectorEngine.getElementFromSelector(element)) // Search and activate/show the proper section\n\n    const complete = () => {\n      if (element.getAttribute('role') !== 'tab') {\n        element.classList.add(CLASS_NAME_SHOW)\n        return\n      }\n\n      element.removeAttribute('tabindex')\n      element.setAttribute('aria-selected', true)\n      this._toggleDropDown(element, true)\n      EventHandler.trigger(element, EVENT_SHOWN, {\n        relatedTarget: relatedElem\n      })\n    }\n\n    this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE))\n  }\n\n  _deactivate(element, relatedElem) {\n    if (!element) {\n      return\n    }\n\n    element.classList.remove(CLASS_NAME_ACTIVE)\n    element.blur()\n\n    this._deactivate(SelectorEngine.getElementFromSelector(element)) // Search and deactivate the shown section too\n\n    const complete = () => {\n      if (element.getAttribute('role') !== 'tab') {\n        element.classList.remove(CLASS_NAME_SHOW)\n        return\n      }\n\n      element.setAttribute('aria-selected', false)\n      element.setAttribute('tabindex', '-1')\n      this._toggleDropDown(element, false)\n      EventHandler.trigger(element, EVENT_HIDDEN, { relatedTarget: relatedElem })\n    }\n\n    this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE))\n  }\n\n  _keydown(event) {\n    if (!([ARROW_LEFT_KEY, ARROW_RIGHT_KEY, ARROW_UP_KEY, ARROW_DOWN_KEY, HOME_KEY, END_KEY].includes(event.key))) {\n      return\n    }\n\n    event.stopPropagation()// stopPropagation/preventDefault both added to support up/down keys without scrolling the page\n    event.preventDefault()\n\n    const children = this._getChildren().filter(element => !isDisabled(element))\n    let nextActiveElement\n\n    if ([HOME_KEY, END_KEY].includes(event.key)) {\n      nextActiveElement = children[event.key === HOME_KEY ? 0 : children.length - 1]\n    } else {\n      const isNext = [ARROW_RIGHT_KEY, ARROW_DOWN_KEY].includes(event.key)\n      nextActiveElement = getNextActiveElement(children, event.target, isNext, true)\n    }\n\n    if (nextActiveElement) {\n      nextActiveElement.focus({ preventScroll: true })\n      Tab.getOrCreateInstance(nextActiveElement).show()\n    }\n  }\n\n  _getChildren() { // collection of inner elements\n    return SelectorEngine.find(SELECTOR_INNER_ELEM, this._parent)\n  }\n\n  _getActiveElem() {\n    return this._getChildren().find(child => this._elemIsActive(child)) || null\n  }\n\n  _setInitialAttributes(parent, children) {\n    this._setAttributeIfNotExists(parent, 'role', 'tablist')\n\n    for (const child of children) {\n      this._setInitialAttributesOnChild(child)\n    }\n  }\n\n  _setInitialAttributesOnChild(child) {\n    child = this._getInnerElement(child)\n    const isActive = this._elemIsActive(child)\n    const outerElem = this._getOuterElement(child)\n    child.setAttribute('aria-selected', isActive)\n\n    if (outerElem !== child) {\n      this._setAttributeIfNotExists(outerElem, 'role', 'presentation')\n    }\n\n    if (!isActive) {\n      child.setAttribute('tabindex', '-1')\n    }\n\n    this._setAttributeIfNotExists(child, 'role', 'tab')\n\n    // set attributes to the related panel too\n    this._setInitialAttributesOnTargetPanel(child)\n  }\n\n  _setInitialAttributesOnTargetPanel(child) {\n    const target = SelectorEngine.getElementFromSelector(child)\n\n    if (!target) {\n      return\n    }\n\n    this._setAttributeIfNotExists(target, 'role', 'tabpanel')\n\n    if (child.id) {\n      this._setAttributeIfNotExists(target, 'aria-labelledby', `${child.id}`)\n    }\n  }\n\n  _toggleDropDown(element, open) {\n    const outerElem = this._getOuterElement(element)\n    if (!outerElem.classList.contains(CLASS_DROPDOWN)) {\n      return\n    }\n\n    const toggle = (selector, className) => {\n      const element = SelectorEngine.findOne(selector, outerElem)\n      if (element) {\n        element.classList.toggle(className, open)\n      }\n    }\n\n    toggle(SELECTOR_DROPDOWN_TOGGLE, CLASS_NAME_ACTIVE)\n    toggle(SELECTOR_DROPDOWN_MENU, CLASS_NAME_SHOW)\n    outerElem.setAttribute('aria-expanded', open)\n  }\n\n  _setAttributeIfNotExists(element, attribute, value) {\n    if (!element.hasAttribute(attribute)) {\n      element.setAttribute(attribute, value)\n    }\n  }\n\n  _elemIsActive(elem) {\n    return elem.classList.contains(CLASS_NAME_ACTIVE)\n  }\n\n  // Try to get the inner element (usually the .nav-link)\n  _getInnerElement(elem) {\n    return elem.matches(SELECTOR_INNER_ELEM) ? elem : SelectorEngine.findOne(SELECTOR_INNER_ELEM, elem)\n  }\n\n  // Try to get the outer element (usually the .nav-item)\n  _getOuterElement(elem) {\n    return elem.closest(SELECTOR_OUTER) || elem\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Tab.getOrCreateInstance(this)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config]()\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  if (isDisabled(this)) {\n    return\n  }\n\n  Tab.getOrCreateInstance(this).show()\n})\n\n/**\n * Initialize on focus\n */\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  for (const element of SelectorEngine.find(SELECTOR_DATA_TOGGLE_ACTIVE)) {\n    Tab.getOrCreateInstance(element)\n  }\n})\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Tab)\n\nexport default Tab\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap toast.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport { defineJQueryPlugin, reflow } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'toast'\nconst DATA_KEY = 'bs.toast'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`\nconst EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_FOCUSOUT = `focusout${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_HIDE = 'hide' // @deprecated - kept here only for backwards compatibility\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SHOWING = 'showing'\n\nconst DefaultType = {\n  animation: 'boolean',\n  autohide: 'boolean',\n  delay: 'number'\n}\n\nconst Default = {\n  animation: true,\n  autohide: true,\n  delay: 5000\n}\n\n/**\n * Class definition\n */\n\nclass Toast extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._timeout = null\n    this._hasMouseInteraction = false\n    this._hasKeyboardInteraction = false\n    this._setListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  show() {\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._clearTimeout()\n\n    if (this._config.animation) {\n      this._element.classList.add(CLASS_NAME_FADE)\n    }\n\n    const complete = () => {\n      this._element.classList.remove(CLASS_NAME_SHOWING)\n      EventHandler.trigger(this._element, EVENT_SHOWN)\n\n      this._maybeScheduleHide()\n    }\n\n    this._element.classList.remove(CLASS_NAME_HIDE) // @deprecated\n    reflow(this._element)\n    this._element.classList.add(CLASS_NAME_SHOW, CLASS_NAME_SHOWING)\n\n    this._queueCallback(complete, this._element, this._config.animation)\n  }\n\n  hide() {\n    if (!this.isShown()) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    const complete = () => {\n      this._element.classList.add(CLASS_NAME_HIDE) // @deprecated\n      this._element.classList.remove(CLASS_NAME_SHOWING, CLASS_NAME_SHOW)\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    }\n\n    this._element.classList.add(CLASS_NAME_SHOWING)\n    this._queueCallback(complete, this._element, this._config.animation)\n  }\n\n  dispose() {\n    this._clearTimeout()\n\n    if (this.isShown()) {\n      this._element.classList.remove(CLASS_NAME_SHOW)\n    }\n\n    super.dispose()\n  }\n\n  isShown() {\n    return this._element.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  // Private\n\n  _maybeScheduleHide() {\n    if (!this._config.autohide) {\n      return\n    }\n\n    if (this._hasMouseInteraction || this._hasKeyboardInteraction) {\n      return\n    }\n\n    this._timeout = setTimeout(() => {\n      this.hide()\n    }, this._config.delay)\n  }\n\n  _onInteraction(event, isInteracting) {\n    switch (event.type) {\n      case 'mouseover':\n      case 'mouseout': {\n        this._hasMouseInteraction = isInteracting\n        break\n      }\n\n      case 'focusin':\n      case 'focusout': {\n        this._hasKeyboardInteraction = isInteracting\n        break\n      }\n\n      default: {\n        break\n      }\n    }\n\n    if (isInteracting) {\n      this._clearTimeout()\n      return\n    }\n\n    const nextElement = event.relatedTarget\n    if (this._element === nextElement || this._element.contains(nextElement)) {\n      return\n    }\n\n    this._maybeScheduleHide()\n  }\n\n  _setListeners() {\n    EventHandler.on(this._element, EVENT_MOUSEOVER, event => this._onInteraction(event, true))\n    EventHandler.on(this._element, EVENT_MOUSEOUT, event => this._onInteraction(event, false))\n    EventHandler.on(this._element, EVENT_FOCUSIN, event => this._onInteraction(event, true))\n    EventHandler.on(this._element, EVENT_FOCUSOUT, event => this._onInteraction(event, false))\n  }\n\n  _clearTimeout() {\n    clearTimeout(this._timeout)\n    this._timeout = null\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Toast.getOrCreateInstance(this, config)\n\n      if (typeof config === 'string') {\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`)\n        }\n\n        data[config](this)\n      }\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nenableDismissTrigger(Toast)\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Toast)\n\nexport default Toast\n", "var adapters = {\n  logger: self.console,\n  WebSocket: self.WebSocket\n};\n\nvar logger = {\n  log(...messages) {\n    if (this.enabled) {\n      messages.push(Date.now());\n      adapters.logger.log(\"[ActionCable]\", ...messages);\n    }\n  }\n};\n\nconst now = () => (new Date).getTime();\n\nconst secondsSince = time => (now() - time) / 1e3;\n\nclass ConnectionMonitor {\n  constructor(connection) {\n    this.visibilityDidChange = this.visibilityDidChange.bind(this);\n    this.connection = connection;\n    this.reconnectAttempts = 0;\n  }\n  start() {\n    if (!this.isRunning()) {\n      this.startedAt = now();\n      delete this.stoppedAt;\n      this.startPolling();\n      addEventListener(\"visibilitychange\", this.visibilityDidChange);\n      logger.log(`ConnectionMonitor started. stale threshold = ${this.constructor.staleThreshold} s`);\n    }\n  }\n  stop() {\n    if (this.isRunning()) {\n      this.stoppedAt = now();\n      this.stopPolling();\n      removeEventListener(\"visibilitychange\", this.visibilityDidChange);\n      logger.log(\"ConnectionMonitor stopped\");\n    }\n  }\n  isRunning() {\n    return this.startedAt && !this.stoppedAt;\n  }\n  recordPing() {\n    this.pingedAt = now();\n  }\n  recordConnect() {\n    this.reconnectAttempts = 0;\n    this.recordPing();\n    delete this.disconnectedAt;\n    logger.log(\"ConnectionMonitor recorded connect\");\n  }\n  recordDisconnect() {\n    this.disconnectedAt = now();\n    logger.log(\"ConnectionMonitor recorded disconnect\");\n  }\n  startPolling() {\n    this.stopPolling();\n    this.poll();\n  }\n  stopPolling() {\n    clearTimeout(this.pollTimeout);\n  }\n  poll() {\n    this.pollTimeout = setTimeout((() => {\n      this.reconnectIfStale();\n      this.poll();\n    }), this.getPollInterval());\n  }\n  getPollInterval() {\n    const {staleThreshold: staleThreshold, reconnectionBackoffRate: reconnectionBackoffRate} = this.constructor;\n    const backoff = Math.pow(1 + reconnectionBackoffRate, Math.min(this.reconnectAttempts, 10));\n    const jitterMax = this.reconnectAttempts === 0 ? 1 : reconnectionBackoffRate;\n    const jitter = jitterMax * Math.random();\n    return staleThreshold * 1e3 * backoff * (1 + jitter);\n  }\n  reconnectIfStale() {\n    if (this.connectionIsStale()) {\n      logger.log(`ConnectionMonitor detected stale connection. reconnectAttempts = ${this.reconnectAttempts}, time stale = ${secondsSince(this.refreshedAt)} s, stale threshold = ${this.constructor.staleThreshold} s`);\n      this.reconnectAttempts++;\n      if (this.disconnectedRecently()) {\n        logger.log(`ConnectionMonitor skipping reopening recent disconnect. time disconnected = ${secondsSince(this.disconnectedAt)} s`);\n      } else {\n        logger.log(\"ConnectionMonitor reopening\");\n        this.connection.reopen();\n      }\n    }\n  }\n  get refreshedAt() {\n    return this.pingedAt ? this.pingedAt : this.startedAt;\n  }\n  connectionIsStale() {\n    return secondsSince(this.refreshedAt) > this.constructor.staleThreshold;\n  }\n  disconnectedRecently() {\n    return this.disconnectedAt && secondsSince(this.disconnectedAt) < this.constructor.staleThreshold;\n  }\n  visibilityDidChange() {\n    if (document.visibilityState === \"visible\") {\n      setTimeout((() => {\n        if (this.connectionIsStale() || !this.connection.isOpen()) {\n          logger.log(`ConnectionMonitor reopening stale connection on visibilitychange. visibilityState = ${document.visibilityState}`);\n          this.connection.reopen();\n        }\n      }), 200);\n    }\n  }\n}\n\nConnectionMonitor.staleThreshold = 6;\n\nConnectionMonitor.reconnectionBackoffRate = .15;\n\nvar INTERNAL = {\n  message_types: {\n    welcome: \"welcome\",\n    disconnect: \"disconnect\",\n    ping: \"ping\",\n    confirmation: \"confirm_subscription\",\n    rejection: \"reject_subscription\"\n  },\n  disconnect_reasons: {\n    unauthorized: \"unauthorized\",\n    invalid_request: \"invalid_request\",\n    server_restart: \"server_restart\"\n  },\n  default_mount_path: \"/cable\",\n  protocols: [ \"actioncable-v1-json\", \"actioncable-unsupported\" ]\n};\n\nconst {message_types: message_types, protocols: protocols} = INTERNAL;\n\nconst supportedProtocols = protocols.slice(0, protocols.length - 1);\n\nconst indexOf = [].indexOf;\n\nclass Connection {\n  constructor(consumer) {\n    this.open = this.open.bind(this);\n    this.consumer = consumer;\n    this.subscriptions = this.consumer.subscriptions;\n    this.monitor = new ConnectionMonitor(this);\n    this.disconnected = true;\n  }\n  send(data) {\n    if (this.isOpen()) {\n      this.webSocket.send(JSON.stringify(data));\n      return true;\n    } else {\n      return false;\n    }\n  }\n  open() {\n    if (this.isActive()) {\n      logger.log(`Attempted to open WebSocket, but existing socket is ${this.getState()}`);\n      return false;\n    } else {\n      logger.log(`Opening WebSocket, current state is ${this.getState()}, subprotocols: ${protocols}`);\n      if (this.webSocket) {\n        this.uninstallEventHandlers();\n      }\n      this.webSocket = new adapters.WebSocket(this.consumer.url, protocols);\n      this.installEventHandlers();\n      this.monitor.start();\n      return true;\n    }\n  }\n  close({allowReconnect: allowReconnect} = {\n    allowReconnect: true\n  }) {\n    if (!allowReconnect) {\n      this.monitor.stop();\n    }\n    if (this.isOpen()) {\n      return this.webSocket.close();\n    }\n  }\n  reopen() {\n    logger.log(`Reopening WebSocket, current state is ${this.getState()}`);\n    if (this.isActive()) {\n      try {\n        return this.close();\n      } catch (error) {\n        logger.log(\"Failed to reopen WebSocket\", error);\n      } finally {\n        logger.log(`Reopening WebSocket in ${this.constructor.reopenDelay}ms`);\n        setTimeout(this.open, this.constructor.reopenDelay);\n      }\n    } else {\n      return this.open();\n    }\n  }\n  getProtocol() {\n    if (this.webSocket) {\n      return this.webSocket.protocol;\n    }\n  }\n  isOpen() {\n    return this.isState(\"open\");\n  }\n  isActive() {\n    return this.isState(\"open\", \"connecting\");\n  }\n  isProtocolSupported() {\n    return indexOf.call(supportedProtocols, this.getProtocol()) >= 0;\n  }\n  isState(...states) {\n    return indexOf.call(states, this.getState()) >= 0;\n  }\n  getState() {\n    if (this.webSocket) {\n      for (let state in adapters.WebSocket) {\n        if (adapters.WebSocket[state] === this.webSocket.readyState) {\n          return state.toLowerCase();\n        }\n      }\n    }\n    return null;\n  }\n  installEventHandlers() {\n    for (let eventName in this.events) {\n      const handler = this.events[eventName].bind(this);\n      this.webSocket[`on${eventName}`] = handler;\n    }\n  }\n  uninstallEventHandlers() {\n    for (let eventName in this.events) {\n      this.webSocket[`on${eventName}`] = function() {};\n    }\n  }\n}\n\nConnection.reopenDelay = 500;\n\nConnection.prototype.events = {\n  message(event) {\n    if (!this.isProtocolSupported()) {\n      return;\n    }\n    const {identifier: identifier, message: message, reason: reason, reconnect: reconnect, type: type} = JSON.parse(event.data);\n    switch (type) {\n     case message_types.welcome:\n      this.monitor.recordConnect();\n      return this.subscriptions.reload();\n\n     case message_types.disconnect:\n      logger.log(`Disconnecting. Reason: ${reason}`);\n      return this.close({\n        allowReconnect: reconnect\n      });\n\n     case message_types.ping:\n      return this.monitor.recordPing();\n\n     case message_types.confirmation:\n      this.subscriptions.confirmSubscription(identifier);\n      return this.subscriptions.notify(identifier, \"connected\");\n\n     case message_types.rejection:\n      return this.subscriptions.reject(identifier);\n\n     default:\n      return this.subscriptions.notify(identifier, \"received\", message);\n    }\n  },\n  open() {\n    logger.log(`WebSocket onopen event, using '${this.getProtocol()}' subprotocol`);\n    this.disconnected = false;\n    if (!this.isProtocolSupported()) {\n      logger.log(\"Protocol is unsupported. Stopping monitor and disconnecting.\");\n      return this.close({\n        allowReconnect: false\n      });\n    }\n  },\n  close(event) {\n    logger.log(\"WebSocket onclose event\");\n    if (this.disconnected) {\n      return;\n    }\n    this.disconnected = true;\n    this.monitor.recordDisconnect();\n    return this.subscriptions.notifyAll(\"disconnected\", {\n      willAttemptReconnect: this.monitor.isRunning()\n    });\n  },\n  error() {\n    logger.log(\"WebSocket onerror event\");\n  }\n};\n\nconst extend = function(object, properties) {\n  if (properties != null) {\n    for (let key in properties) {\n      const value = properties[key];\n      object[key] = value;\n    }\n  }\n  return object;\n};\n\nclass Subscription {\n  constructor(consumer, params = {}, mixin) {\n    this.consumer = consumer;\n    this.identifier = JSON.stringify(params);\n    extend(this, mixin);\n  }\n  perform(action, data = {}) {\n    data.action = action;\n    return this.send(data);\n  }\n  send(data) {\n    return this.consumer.send({\n      command: \"message\",\n      identifier: this.identifier,\n      data: JSON.stringify(data)\n    });\n  }\n  unsubscribe() {\n    return this.consumer.subscriptions.remove(this);\n  }\n}\n\nclass SubscriptionGuarantor {\n  constructor(subscriptions) {\n    this.subscriptions = subscriptions;\n    this.pendingSubscriptions = [];\n  }\n  guarantee(subscription) {\n    if (this.pendingSubscriptions.indexOf(subscription) == -1) {\n      logger.log(`SubscriptionGuarantor guaranteeing ${subscription.identifier}`);\n      this.pendingSubscriptions.push(subscription);\n    } else {\n      logger.log(`SubscriptionGuarantor already guaranteeing ${subscription.identifier}`);\n    }\n    this.startGuaranteeing();\n  }\n  forget(subscription) {\n    logger.log(`SubscriptionGuarantor forgetting ${subscription.identifier}`);\n    this.pendingSubscriptions = this.pendingSubscriptions.filter((s => s !== subscription));\n  }\n  startGuaranteeing() {\n    this.stopGuaranteeing();\n    this.retrySubscribing();\n  }\n  stopGuaranteeing() {\n    clearTimeout(this.retryTimeout);\n  }\n  retrySubscribing() {\n    this.retryTimeout = setTimeout((() => {\n      if (this.subscriptions && typeof this.subscriptions.subscribe === \"function\") {\n        this.pendingSubscriptions.map((subscription => {\n          logger.log(`SubscriptionGuarantor resubscribing ${subscription.identifier}`);\n          this.subscriptions.subscribe(subscription);\n        }));\n      }\n    }), 500);\n  }\n}\n\nclass Subscriptions {\n  constructor(consumer) {\n    this.consumer = consumer;\n    this.guarantor = new SubscriptionGuarantor(this);\n    this.subscriptions = [];\n  }\n  create(channelName, mixin) {\n    const channel = channelName;\n    const params = typeof channel === \"object\" ? channel : {\n      channel: channel\n    };\n    const subscription = new Subscription(this.consumer, params, mixin);\n    return this.add(subscription);\n  }\n  add(subscription) {\n    this.subscriptions.push(subscription);\n    this.consumer.ensureActiveConnection();\n    this.notify(subscription, \"initialized\");\n    this.subscribe(subscription);\n    return subscription;\n  }\n  remove(subscription) {\n    this.forget(subscription);\n    if (!this.findAll(subscription.identifier).length) {\n      this.sendCommand(subscription, \"unsubscribe\");\n    }\n    return subscription;\n  }\n  reject(identifier) {\n    return this.findAll(identifier).map((subscription => {\n      this.forget(subscription);\n      this.notify(subscription, \"rejected\");\n      return subscription;\n    }));\n  }\n  forget(subscription) {\n    this.guarantor.forget(subscription);\n    this.subscriptions = this.subscriptions.filter((s => s !== subscription));\n    return subscription;\n  }\n  findAll(identifier) {\n    return this.subscriptions.filter((s => s.identifier === identifier));\n  }\n  reload() {\n    return this.subscriptions.map((subscription => this.subscribe(subscription)));\n  }\n  notifyAll(callbackName, ...args) {\n    return this.subscriptions.map((subscription => this.notify(subscription, callbackName, ...args)));\n  }\n  notify(subscription, callbackName, ...args) {\n    let subscriptions;\n    if (typeof subscription === \"string\") {\n      subscriptions = this.findAll(subscription);\n    } else {\n      subscriptions = [ subscription ];\n    }\n    return subscriptions.map((subscription => typeof subscription[callbackName] === \"function\" ? subscription[callbackName](...args) : undefined));\n  }\n  subscribe(subscription) {\n    if (this.sendCommand(subscription, \"subscribe\")) {\n      this.guarantor.guarantee(subscription);\n    }\n  }\n  confirmSubscription(identifier) {\n    logger.log(`Subscription confirmed ${identifier}`);\n    this.findAll(identifier).map((subscription => this.guarantor.forget(subscription)));\n  }\n  sendCommand(subscription, command) {\n    const {identifier: identifier} = subscription;\n    return this.consumer.send({\n      command: command,\n      identifier: identifier\n    });\n  }\n}\n\nclass Consumer {\n  constructor(url) {\n    this._url = url;\n    this.subscriptions = new Subscriptions(this);\n    this.connection = new Connection(this);\n  }\n  get url() {\n    return createWebSocketURL(this._url);\n  }\n  send(data) {\n    return this.connection.send(data);\n  }\n  connect() {\n    return this.connection.open();\n  }\n  disconnect() {\n    return this.connection.close({\n      allowReconnect: false\n    });\n  }\n  ensureActiveConnection() {\n    if (!this.connection.isActive()) {\n      return this.connection.open();\n    }\n  }\n}\n\nfunction createWebSocketURL(url) {\n  if (typeof url === \"function\") {\n    url = url();\n  }\n  if (url && !/^wss?:/i.test(url)) {\n    const a = document.createElement(\"a\");\n    a.href = url;\n    a.href = a.href;\n    a.protocol = a.protocol.replace(\"http\", \"ws\");\n    return a.href;\n  } else {\n    return url;\n  }\n}\n\nfunction createConsumer(url = getConfig(\"url\") || INTERNAL.default_mount_path) {\n  return new Consumer(url);\n}\n\nfunction getConfig(name) {\n  const element = document.head.querySelector(`meta[name='action-cable-${name}']`);\n  if (element) {\n    return element.getAttribute(\"content\");\n  }\n}\n\nexport { Connection, ConnectionMonitor, Consumer, INTERNAL, Subscription, SubscriptionGuarantor, Subscriptions, adapters, createConsumer, createWebSocketURL, getConfig, logger };\n", "import { createConsumer } from \"@rails/actioncable\";\n\nexport default createConsumer();\n", "import React, { useState, useEffect } from 'react';\nimport $ from 'jquery';\nimport SkCubeLoading from '../SkCubeLoading';\n\n// DASHBOARDS\nimport DashboardOAS from './DashboardOAS';\nimport DashboardMII from './DashboardMII';\nimport DashboardManagementMii from './DashboardManagementMii';\n\nimport ManagementOverview from './ManagementOverview';\nimport Disbursement from './Disbursement';\n\nexport default function MainUI(props) {\n  const [token]                                 = useState(props.token);\n  const [isError, setIsError]                   = useState(false);\n  const [isLoading, setIsLoading]               = useState(true);\n  const [roles, setRoles]                       = useState(props.roles);\n  const [username, setUsername]                 = useState(props.username);\n  const [isMicroinsurance, setIsMicroinsurance] = useState(props.is_microinsurance);\n\n  if(isMicroinsurance) {\n    return (\n      <>\n        <DashboardManagementMii/>\n        <DashboardMII/>\n      </>\n    )\n  } else {\n    return (\n      <>\n        <ul className=\"nav nav-tabs\" role=\"tablist\">\n          <li className=\"nav-item\">\n            <a href=\"#overview\" role=\"tab\" data-bs-toggle=\"tab\" aria-controls=\"overview\" className=\"nav-link active show\">\n              Overview\n            </a>\n          </li>\n          <li className=\"nav-item\">\n            <a href=\"#branch-stats\" role=\"tab\" data-bs-toggle=\"tab\" aria-controls=\"branch-stats\" className=\"nav-link\">\n              Branch Stats\n            </a>\n          </li>\n          <li className=\"nav-item\">\n            <a href=\"#disbursement\" role=\"tab\" data-bs-toggle=\"tab\" aria-controls=\"disbursement\" className=\"nav-link\">\n              Disbursement\n            </a>\n          </li>\n        </ul>\n        <div className=\"tab-content border-start border-bottom border-end\">\n          <div id=\"overview\" className=\"overview p-3 tab-pane active show\" role=\"tabpanel\">\n            <ManagementOverview\n              token={props.token}\n            />\n          </div>\n          <div id=\"branch-stats\" className=\"branch-stats p-3 tab-pane\" role=\"tabpanel\">\n            <DashboardOAS\n              token={props.token}\n            />\n          </div>\n          <div id=\"disbursement\" className=\"disbursement p-3 tab-pane\" role=\"tabpanel\">\n            <Disbursement\n              token={props.token}\n            />\n          </div>\n        </div>\n      </>\n    )\n  }\n}\n", "import React from \"react\";\n\nexport default class SkCubeLoading extends React.Component {\n  constructor(props) {\n    super(props);\n\n    this.state  = {\n    }\n  }\n\n  render() {\n    return  (\n      <div className=\"sk-cube-grid\">\n        <div className=\"sk-cube sk-cube1\"></div>\n        <div className=\"sk-cube sk-cube2\"></div>\n        <div className=\"sk-cube sk-cube3\"></div>\n        <div className=\"sk-cube sk-cube4\"></div>\n        <div className=\"sk-cube sk-cube5\"></div>\n        <div className=\"sk-cube sk-cube6\"></div>\n        <div className=\"sk-cube sk-cube7\"></div>\n        <div className=\"sk-cube sk-cube8\"></div>\n        <div className=\"sk-cube sk-cube9\"></div>\n      </div>\n    );\n  }\n}\n", "import React from 'react';\nimport $ from 'jquery';\nimport Select from 'react-select';\nimport Modal from 'react-modal';\nimport Collapsible from 'react-collapsible';\nimport SkCubeLoading from '../SkCubeLoading';\nimport {numberAsPercent, numberWithCommas} from '../utils/helpers';\nimport {Accordion, AccordionItem,AccordionItemHeading,AccordionItemButton,AccordionItemPanel}from 'react-accessible-accordion';\n\nconst customStyles = {\n  content : {\n    top                   : '50%',\n    left                  : '50%',\n    right                 : 'auto',\n    bottom                : 'auto',\n    marginRight           : '-50%',\n    transform             : 'translate(-50%, -50%)',\n    height                : '50%',\n    overlfow              : 'scroll'\n  }\n};\n\n//Modal.setAppElement('#dashboard-content');\n\nexport default class DashboardOAS extends React.Component {\n  constructor(props) {\n    super(props);\n\n    this.state  = {\n      currentBranch: {\n        id: \"\",\n        name: \"\",\n        centers: []\n      },\n      branches: [],\n      centers: [],\n      data: {\n      },\n      currentMemberList: [],\n      isLoading: true,\n      modalCycleCountSummaryIsOpen: false\n    }\n  }\n\n  componentDidMount() {\n    var context = this;\n    $.ajax({\n      url: '/api/v1/dashboard',\n      success: function(response) {\n        var currentBranch = {\n          id: \"\",\n          name: \"\",\n          centers: []\n        };\n\n        if(response.branches.length > 0) {\n          currentBranch = response.branches[0]; \n        }\n\n        context.setState({\n          branches: response.branches,\n          currentBranch: currentBranch,\n          data: {\n            branch_loans_stats: response.branch_loans_stats,\n            member_counts: response.member_counts,\n            watchlist: response.watchlist,\n            centers: response.centers,\n            cycle_count_summary: response.cycle_count_summary\n          },\n          isLoading: false\n        });\n      },\n      error: function(response) {\n        console.log(response);\n        alert(\"Error in fetching branches!\");\n      }\n    });\n  }\n\n  closeCycleCountSummaryModal() {\n    this.setState({\n      modalCycleCountSummaryIsOpen: false\n    });\n  }\n\n  openCycleCountSummaryModal() {\n    this.setState({\n      modalCycleCountSummaryIsOpen: true\n    });\n  }\n\n  handleCycleCountClicked(loanProductId, cycle) {\n    var o = this.state.data.cycle_count_summary;\n\n    var members = [];\n\n    for(var i = 0; i < o.records.length; i++) {\n      for(var j = 0; j < o.records[i].loan_products.length; j++) {\n        if(o.records[i].loan_products[j].id == loanProductId && o.records[i].cycle == cycle) {\n          for(var k = 0; k < o.records[i].loan_products[j].records.length; k++) {\n            members.push(o.records[i].loan_products[j].records[k]);\n          }\n        }\n      }\n    }\n\n    this.setState({\n      currentMemberList: members\n    });\n\n    console.log(members);\n\n    this.openCycleCountSummaryModal();\n  }\n\n  handleBranchChanged(o) {\n    var currentBranch = this.state.currentBranch;\n\n    for(var i = 0; i < this.state.branches.length; i++) {\n      if(this.state.branches[i].id == o.value) {\n        currentBranch = this.state.branches[i];\n      }\n    }\n\n    this.setState({\n      currentBranch: currentBranch\n    });\n  }\n\n  handleSyncClicked() {\n    var context       = this;\n    var currentBranch = this.state.currentBranch;\n\n    context.setState({\n      isLoading: true\n    });\n\n    $.ajax({\n      url: '/api/v1/dashboard',\n      method: 'GET',\n      data: {\n        branch_id: currentBranch.id\n      },\n      success: function(response) {\n        context.setState({\n          data: {\n            branch_loans_stats: response.branch_loans_stats,\n            member_counts: response.member_counts,\n            watchlist: response.watchlist,\n            centers: response.centers,\n            cycle_count_summary: response.cycle_count_summary\n          },\n          isLoading: false\n        });\n      },\n      error: function(response) {\n        console.log(response);\n        alert(\"Error in fetching data!\");\n      }\n    });\n  }\n\n  renderControls() {\n    var state = this.state;\n\n    var branch  = {\n      value: state.currentBranch.id,\n      label: state.currentBranch.name\n    };\n\n    var branchOptions = []\n\n    for(var i = 0; i < this.state.branches.length; i++) {\n      branchOptions.push({\n        value: this.state.branches[i].id,\n        label: this.state.branches[i].name\n      });\n    }\n\n    return  (\n      <div className=\"row\">\n        <div className=\"col-md-10\">\n          <div className=\"form-group\">\n            <label>\n              Branch\n            </label>\n            <Select\n              options={branchOptions}\n              onChange={this.handleBranchChanged.bind(this)}\n              value={branch}\n              disabled={this.state.isLoading}\n            />\n          </div>\n        </div>\n        <div className=\"col-md-2\">\n          <div className=\"form-group\">\n            <label>\n              Actions\n            </label>\n            <br/>\n            <div className=\"d-grid gap-2\">\n              <button\n                className=\"btn btn-primary\"\n                type=\"button\"\n                onClick={this.handleSyncClicked.bind(this)}\n                disabled={this.state.isLoading}\n              >\n                <span className=\"bi bi-arrow-repeat\"/>\n                Sync\n              </button>\n            </div>\n          </div>\n        </div>\n      </div>\n    );\n  }\n\n  renderBranchLoansStats() {\n    var o = this.state.data.branch_loans_stats;\n\n    if(this.state.isLoading) {\n      return  (\n        <SkCubeLoading/>\n      );\n    } else if(!o) {\n      return  (\n        <p>\n          No data found\n        </p>\n      );\n    } else {\n      var loanProductRows = [];\n\n      o.loan_products.forEach(function(e) {\n        loanProductRows.push(\n          <tr key={\"lp-\" + e.id}>\n            <td>\n              <strong>\n                {e.name}\n              </strong>\n            </td>\n            <td className=\"text-center\">\n              {e.active_loans}\n            </td>\n            <td className=\"text-end\">\n              {numberWithCommas(e.portfolio)}\n            </td>\n            <td className=\"text-end\">\n              {numberWithCommas(e.principal_past_due_amount)}\n            </td>\n            <td className=\"text-end\">\n              {numberWithCommas(e.par_amount)}\n            </td>\n            <td className=\"text-center\">\n              <small>\n                {numberAsPercent(e.par_rate)}\n              </small>\n              <div className=\"progress progress-xs\">\n                <div className=\"progress-bar bg-danger\" role=\"progressbar\" style={{width: \"\" + numberAsPercent(e.par_rate)}}>\n                </div>\n              </div>\n            </td>\n            <td className=\"text-center\">\n              <small>\n                {numberAsPercent(e.rr)}\n              </small>\n              <div className=\"progress progress-xs\">\n                <div className=\"progress-bar bg-success\" role=\"progressbar\" style={{width: \"\" + numberAsPercent(e.rr)}}>\n                </div>\n              </div>\n            </td>\n          </tr>\n        );\n      });\n\n      return  (\n        <div>\n          <h5>\n            Loans Stats as of {o.as_of}\n          </h5>\n          <div className=\"row\">\n            <div className=\"col\">\n              <h6>\n                Overall PAR: {numberAsPercent(o.total_par_rate)}\n              </h6>\n              <div className=\"progress progress-xs\">\n                <div className=\"progress-bar bg-danger\" role=\"progressbar\" style={{width: \"\" + numberAsPercent(o.total_par_rate)}}>\n                </div>\n              </div>\n            </div>\n            <div className=\"col\">\n              <h6>\n                Overall Repayment Rate: {numberAsPercent(o.total_rr)}\n              </h6>\n              <div className=\"progress progress-xs\">\n                <div className=\"progress-bar bg-success\" role=\"progressbar\" style={{width: \"\" + numberAsPercent(o.total_rr)}}>\n                </div>\n              </div>\n            </div>\n          </div>\n          <br/>\n          <div className=\"table-responsive\">\n            <table className=\"table table-bordered table-sm table-hover\">\n              <thead>\n                <tr style={{backgroundColor: \"#797979\", color: \"#fff\"}}>\n                  <th>\n                    Loan Product\n                  </th>\n                  <th className=\"text-center\">\n                    Active Loans\n                  </th>\n                  <th className=\"text-end\">\n                    Portfolio\n                  </th>\n                  <th className=\"text-end\">\n                    Past Due Amount\n                  </th>\n                  <th className=\"text-end\">\n                    Par Amount\n                  </th>\n                  <th className=\"text-center\">\n                    Par Rate\n                  </th>\n                  <th className=\"text-center\">\n                    RR\n                  </th>\n                </tr>\n              </thead>\n              <tbody>\n                {loanProductRows}\n              </tbody>\n              <tfoot>\n                <tr style={{backgroundColor: \"#f0f0f0\"}}>\n                  <th>\n                    Total\n                  </th>\n                  <th className=\"text-center\">\n                    {o.total_active_loans}\n                  </th>\n                  <th className=\"text-end\">\n                    {numberWithCommas(o.total_portfolio)}\n                  </th>\n                  <th className=\"text-end\">\n                    {numberWithCommas(o.total_principal_past_due_amount)}\n                  </th>\n                  <th className=\"text-end\">\n                    {numberWithCommas(o.total_par_amount)}\n                  </th>\n                  <th className=\"text-center\">\n                    {numberAsPercent(o.total_par_rate)}\n                    <div className=\"progress progress-xs\">\n                      <div className=\"progress-bar bg-danger\" role=\"progressbar\" style={{width: \"\" + numberAsPercent(o.total_par_rate)}}>\n                      </div>\n                    </div>\n                  </th>\n                  <th className=\"text-center\">\n                    {numberAsPercent(o.total_rr)}\n                    <div className=\"progress progress-xs\">\n                      <div className=\"progress-bar bg-success\" role=\"progressbar\" style={{width: \"\" + numberAsPercent(o.total_rr)}}>\n                      </div>\n                    </div>\n                  </th>\n                </tr>\n              </tfoot>\n            </table>\n          </div>\n        </div>\n      );\n    }\n  }\n\n  renderCycleCountSummary() {\n    var o = this.state.data.cycle_count_summary;\n\n    if(this.state.isLoading) {\n      return  (\n        <SkCubeLoading/>\n      );\n    } else if(!o) {\n      return  (\n        <p>\n          No data found for cycle count summary.\n        </p>\n      );\n    } else {\n      var rows  = [];\n\n      for(var i = 0; i < o.records.length; i++) {\n        var cols = [];\n\n        for(var j = 0; j < o.records[i].loan_products.length; j++) {\n          cols.push(\n            <td key={\"row-\" + i + \"-\" + o.records[i].loan_products[j].id} className=\"text-center\">\n              <a href=\"#\" onClick={this.handleCycleCountClicked.bind(this, o.records[i].loan_products[j].id, o.records[i].cycle)}>\n                {o.records[i].loan_products[j].count}\n              </a>\n            </td>\n          );\n        }\n\n        rows.push(\n          <tr key={\"cycle-count-summary-\" + i}>\n            <td key={\"cycle-val-\" + i} className=\"text-center\">\n              {o.records[i].cycle}\n            </td>\n            {cols}\n            <td key={\"cycle-total-\" + i} className=\"text-center\">\n              {o.records[i].total}\n            </td>\n          </tr>\n        );\n      }\n\n      return (\n        <div>\n          <Modal\n            isOpen={this.state.modalCycleCountSummaryIsOpen}\n            style={customStyles}\n            contentLabel=\"Example Modal\"\n          >\n            <h2>\n              Member List\n            </h2>\n            <hr/>\n            <div className=\"table-responsive\">\n              <table className=\"table table-sm table-bordered\">\n                <thead>\n                  <tr>\n                    <th width={\"5%\"}>\n                    </th>\n                    <th>\n                      Name\n                    </th>\n                  </tr>\n                </thead>\n                <tbody>\n                  {\n                    this.state.currentMemberList.map((m, index) => (\n                        <tr key={\"member-\" + index}>\n                          <td className=\"text-center\">\n                            <a href={\"/members/\" + m.member.id + \"/display\"}>\n                              <span className=\"fa fa-search\"/>\n                            </a>\n                          </td>\n                          <td>\n                            {m.member.last_name}, {m.member.first_name}\n                          </td>\n                        </tr>\n                      )\n                    )\n                  }\n                </tbody>\n              </table>\n            </div>\n            <hr/>\n            <button \n              onClick={this.closeCycleCountSummaryModal.bind(this)}\n              className=\"btn btn-danger btn-sm\"\n            >\n              <span className=\"bi bi-x\"/>\n              Close\n            </button>\n          </Modal>\n\n          <Accordion allowZeroExpanded>\n\t\t\t\t\t\t<AccordionItem>\n\t\t\t\t\t\t\t<AccordionItemHeading>\n\t\t\t\t\t\t\t\t<AccordionItemButton>\n\t\t\t\t\t\t\t\t\tLoan Cycle Count Summary\n\t\t\t\t\t\t\t\t</AccordionItemButton>\n\t\t\t\t\t\t\t</AccordionItemHeading>\n\t\t\t\t\t\t\t<AccordionItemPanel>\n          <div className=\"table-responsive\">\n            <table className=\"table table-bordered table-sm\">\n              <thead>\n                <tr style={{backgroundColor: \"#797979\", color: \"#fff\"}}>\n                  {\n                    o.headers.map((h, index) => (\n                        <th key={\"header-\" + index} className=\"text-center\" style={{whiteSpace: \"nowrap\"}}>\n                          {h}\n                        </th>\n                      )\n                    )\n                  }\n                </tr>\n              </thead>\n              <tbody>\n                {rows}\n              </tbody>\n              <tfoot>\n                <tr style={{backgroundColor: \"#f0f0f0\"}}>\n                  {\n                    o.totals.map((t, index) => (\n                        <th key={\"total-\" + index} className=\"text-center\">\n                          {t}\n                        </th>\n                      )\n                    )\n                  }\n                </tr>\n              </tfoot>\n            </table>\n          </div>\n\t\t\t\t\t</AccordionItemPanel>\n\t\t\t\t\t</AccordionItem>\n\t\t\t\t\t</Accordion>\n        </div>\n      );\n    }\n  }\n\n  renderWatchlist() {\n    var o = this.state.data.watchlist;\n\n    if(this.state.isLoading) {\n      return  (\n        <SkCubeLoading/>\n      );\n    } else if(!o) {\n      return  (\n        <p>\n          No data found for watchlist.\n        </p>\n      );\n    } else {\n      var rows          = [];\n      var totalPastDue  = 0.00;\n      var totalPrincipalBalance  = 0.00;\n      var totalInterestBalance  = 0.00;\n\n      var totalCategoryAParAmount     = 0.00;\n      var totalCategoryBParAmount     = 0.00;\n      var totalCategoryCParAmount     = 0.00;\n\n      for(var i = 0; i < o.records.length; i++) {\n\tvar categoryAParAmount     = 0.00;\n\tvar categoryBParAmount     = 0.00;\n\tvar categoryCParAmount     = 0.00;\n\n\tvar numDaysPar  = parseInt(o.records[i].num_days_par);\n      \tvar par         = o.records[i].par;\n\t      \n\ttotalPastDue += parseFloat(o.records[i].total_balance);\n\ttotalPrincipalBalance += parseFloat(o.records[i].principal_balance);\n\ttotalInterestBalance += parseFloat(o.records[i].interest_balance);\n\n\tif(par > 0) { \n\t   if(numDaysPar >= 1 && numDaysPar <= 30) {\n\t     categoryAParAmount     \t= parseFloat(o.records[i].overall_principal_balance);\n\t     totalCategoryAParAmount    += categoryAParAmount;\n\t   } else if(numDaysPar >= 31 && numDaysPar <= 365) {\n\t     categoryBParAmount     \t= parseFloat(o.records[i].overall_principal_balance);\n\t     totalCategoryBParAmount    += categoryBParAmount;\n\t   } else if(numDaysPar >= 365){\n\t     categoryCParAmount     \t= parseFloat(o.records[i].overall_principal_balance);\n\t     totalCategoryCParAmount    += categoryCParAmount;\n\t   }\n\t}\n        rows.push(\n          <tr key={\"watchlist-record-\" + o.records[i].id}>\n            <td className=\"text-center\">\n              {i + 1}\n            </td>\n            <td>\n              <strong>\n                <a href={\"/loans/\" + o.records[i].id}>\n                  {o.records[i].member.last_name}, {o.records[i].member.first_name} {o.records[i].member.middle_name}\n                </a>\n              </strong>\n            </td>\n            <td>\n              {o.records[i].center.name}\n            </td>\n            <td>\n              {o.records[i].officer.last_name}, {o.records[i].officer.first_name}\n            </td>\n            <td>\n              {o.records[i].loan_product.name}\n\t    </td>\n\t    <td className=\"text-end\">\n              {numberWithCommas(o.records[i].principal_balance)}\n            </td>\n            <td className=\"text-end\">\n              {numberWithCommas(o.records[i].interest_balance)}\n            </td>\n            <td className=\"text-end\">\n              <strong>\n                {numberWithCommas(o.records[i].total_balance)}\n              </strong>\n            </td>\n\t    <td className=\"text-end\">\n              {numberWithCommas(categoryAParAmount)}\n\t    </td>\n\t    <td className=\"text-end\">\n              {numberWithCommas(categoryBParAmount)}\n\t    </td>\n\t    <td className=\"text-end\">\n              {numberWithCommas(categoryCParAmount)}\n\t    </td>\n\t  </tr>\n        );\n      }\n\n      rows.push(\n        <tr key={\"watchlist-grand-total\"}>\n          <th>\n          </th>\n          <th colSpan=\"4\">\n            GRAND TOTAL ({o.records.length}) \n          </th>\n          <th className=\"text-end\">\n            {numberWithCommas(totalPrincipalBalance)}\n\t  </th>\n\t  <th className=\"text-end\">\n            {numberWithCommas(totalInterestBalance)}\n          </th>\n \t  <th className=\"text-end\">\n            {numberWithCommas(totalPastDue)}\n\t  </th>\n\t  <th className=\"text-end\">\n            {numberWithCommas(totalCategoryAParAmount)}\n\t  </th>\n\t  <th className=\"text-end\">\n            {numberWithCommas(totalCategoryBParAmount)}\n\t  </th>\n\t  <th className=\"text-end\">\n            {numberWithCommas(totalCategoryCParAmount)}\n\t  </th>\n\n \n        </tr>\n      );\n\n      return  (\n        <div>\n          <Accordion allowZeroExpanded>\n\t\t\t\t\t\t<AccordionItem>\n\t\t\t\t\t\t\t<AccordionItemHeading>\n\t\t\t\t\t\t\t\t<AccordionItemButton>\n\t\t\t\t\t\t\t\t\tWatchlist as of {o.as_of} ({o.records.length})\n\t\t\t\t\t\t\t\t</AccordionItemButton>\n\t\t\t\t\t\t\t</AccordionItemHeading>\n\t\t\t\t\t\t<AccordionItemPanel>\n          <div className=\"table-responsive\">\n            <table className=\"table table-bordered table-sm table-hover\">\n              <thead>\n                <tr style={{backgroundColor: \"#797979\", color: \"#fff\"}}>\n                  <th>\n                  </th>\n                  <th>\n                    Member\n                  </th>\n                  <th>\n                    Center\n                  </th>\n                  <th>\n                    Officer\n                  </th>\n                  <th>\n                    Loan Product\n                  </th>\n\t\t  <th className=\"text-end\">\n                    Past Due Amount - Principal\n                  </th>\n \t          <th className=\"text-end\">\n                    Past Due Amount - Interest\n                  </th>\n\t\t  <th className=\"text-end\">\n                    Total Past Due\n                  </th>\n\t\t  <th className=\"text-end\">\n                    PAR 1 - 30 days\n                  </th>\n  \t\t  <th className=\"text-end\">\n                    PAR 31 - 365 days\n                  </th>\n\t\t  <th className=\"text-end\">\n                    PAR 365 days onwards\n                  </th>\n\t      \t</tr>\n              </thead>\n              <tbody>\n                {rows}\n              </tbody>\n            </table>\n          </div>\n\t\t\t\t\t</AccordionItemPanel>\n\t\t\t\t</AccordionItem>\n\t\t\t\t</Accordion>\n\t\t\t\t</div>\n      );\n    }\n  }\n\n  renderMemberTypeCounts(memberTypeCounts) {\n    return (\n      <div className=\"row\">\n        {\n          memberTypeCounts.map((o) => (\n              <div className='col' key={\"mem-type-\" + o.member_type}>\n                <label>{o.member_type}:&nbsp;</label>\n                <span className=\"text-muted\">\n                  {o.count}\n                </span>\n              </div>\n            )\n          )\n        }\n      </div>\n    );\n  }\n\n  renderCenters() {\n  const collapsible = {\n      backgroundColor: \"#808080\",\n      padding: \"15px\",\n      color: \"white\",\n      fontFamily: \"sans-serif\"\n  };\n    var o = this.state.data.centers;\n\n    if(this.state.isLoading) {\n      return  (\n        <SkCubeLoading/>\n      );\n    } else if(!o) {\n      return  (\n        <p>\n          No data found for centers.\n        </p>\n      );\n    } else {\n      var centerRecords = [];\n      var centers       = this.state.data.centers.centers;\n\n      for(var i = 0; i < centers.length; i++) {\n        if(centers[i].active_count >= 1) {\n          centerRecords.push(\n            <tr key={\"center-meeting-day-\" + i}>\n              <td>\n                {centers[i].name}\n              </td>\n              <td>\n                {centers[i].officer.last_name}, {centers[i].officer.first_name}\n              </td>\n              <td className=\"text-center\">\n                {centers[i].active_count} | {centers[i].pending_count}\n              </td>\n              <td>\n                {centers[i].meeting_day_display} \n              </td>\n            </tr>\n          );\n        }\n      }\n\n      return (\n        <div>\n          <Accordion allowZeroExpanded>\n            <AccordionItem>\n              <AccordionItemHeading>\n                <AccordionItemButton>\n                  Center Meeting\n                  </AccordionItemButton>\n                </AccordionItemHeading>\n              <AccordionItemPanel>\n          <div className=\"table-responsive\">\n            <table className=\"table table-bordered table-sm table-hover\">\n              <thead>\n                <tr style={{backgroundColor: \"#797979\", color: \"#fff\"}}>\n                  <th>\n                    Name\n                  </th>\n                  <th>\n                    Officer\n                  </th>\n                  <th className=\"text-center\">\n                    A | P\n                  </th>\n                  <th>\n                    Meeting Day\n                  </th>\n                </tr>\n              </thead>\n              <tbody>\n                {centerRecords}\n              </tbody>\n            </table>\n          </div>\n        </AccordionItemPanel>\n      </AccordionItem>\n    </Accordion>\n        </div>\n      );\n    }\n  }\n\n  renderMemberCounts() {\n    var o = this.state.data.member_counts;\n\n    if(this.state.isLoading) {\n      return  (\n        <SkCubeLoading/>\n      );\n    } else if(!o) {\n      return  (\n        <p>\n          No data found for member counts.\n        </p>\n      );\n    } else {\n      var inactive_male= 0;\n      var inactive_female= 0;\n      var inactive_others= 0;\n      var inactive_total= 0;\n     if(o.data.counts.inactive_members != null){\n        inactive_male += o.data.counts.inactive_members.male;\n        inactive_female += o.data.counts.inactive_members.female;\n        inactive_others += o.data.counts.inactive_members.others;\n        inactive_total += o.data.counts.inactive_members.total;\n     }\n      return  (\n        <div>\n          <h5>\n            <a href={\"/data_stores/member_counts/\" + o.id} target='_blank'>\n              Member Counts as of {o.meta.as_of}\n            </a>\n          </h5>\n          {this.renderMemberTypeCounts(o.data.member_type_counts)}\n          <div className=\"table-responsive\">\n            <table className=\"table table-bordered table-sm table-hover\">\n              <thead>\n                <tr style={{backgroundColor: \"#797979\", color: \"#fff\"}}>\n                  <th>\n                  </th>\n                  <th className=\"text-center\">\n                    Male\n                  </th>\n                  <th className=\"text-center\">\n                    Female\n                  </th>\n                  <th className=\"text-center\">\n                    Others\n                  </th>\n                  <th className=\"text-center\">\n                    TOTAL\n                  </th>\n                </tr>\n              </thead>\n              <tbody>\n                <tr>\n                  <th>\n                    Pure Savers\n                  </th>\n                  <td className=\"text-center\">\n                    {o.data.counts.pure_savers.male}\n                  </td>\n                  <td className=\"text-center\">\n                    {o.data.counts.pure_savers.female}\n                  </td>\n                  <td className=\"text-center\">\n                    {o.data.counts.pure_savers.others}\n                  </td>\n                  <td className=\"text-center\">\n                    {o.data.counts.pure_savers.total}\n                  </td>\n                </tr>\n                <tr>\n                  <th>\n                    Active Borrowers\n                  </th>\n                  <td className=\"text-center\">\n                    {o.data.counts.loaners.male}\n                  </td>\n                  <td className=\"text-center\">\n                    {o.data.counts.loaners.female}\n                  </td>\n                  <td className=\"text-center\">\n                    {o.data.counts.loaners.others}\n                  </td>\n                  <td className=\"text-center\">\n                    {o.data.counts.loaners.total}\n                  </td>\n                </tr>\n                <tr>\n                  <th>\n                    New Members\n                  </th>\n                  <td className=\"text-center\">\n                    {o.data.counts.active_members.male}\n                  </td>\n                  <td className=\"text-center\">\n                    {o.data.counts.active_members.female}\n                  </td>\n                  <td className=\"text-center\">\n                    {o.data.counts.active_members.others}\n                  </td>\n                  <td className=\"text-center\">\n                    {o.data.counts.active_members.total}\n                  </td>\n                </tr>\n               \n                <tr>\n                  <th>\n                   Non-patronizing Members\n                  </th>\n                  <td className=\"text-center\">\n                    {inactive_male}\n                  </td>\n                  <td className=\"text-center\">\n                    {inactive_female}\n                  </td>\n                  <td className=\"text-center\">\n                    {inactive_others}\n                  </td>\n                  <td className=\"text-center\">\n                    {inactive_total}\n                  </td>\n                </tr>\n                \n                <tr>\n                  <th>\n                    GRAND TOTAL\n                  </th>\n                  <th className=\"text-center\">\n                    {o.data.counts.active_members.male + o.data.counts.loaners.male + o.data.counts.pure_savers.male + inactive_male}\n                  </th>\n                  <th className=\"text-center\">\n                    {o.data.counts.active_members.female + o.data.counts.loaners.female + o.data.counts.pure_savers.female + inactive_female}\n                  </th>\n                  <th className=\"text-center\">\n                    {o.data.counts.active_members.others + o.data.counts.loaners.others + o.data.counts.pure_savers.others + inactive_others}\n                  </th>\n                  <th className=\"text-center\">\n                    {o.data.counts.active_members.total + o.data.counts.loaners.total + o.data.counts.pure_savers.total + inactive_total}\n                  </th>\n                </tr>\n              </tbody>\n            </table>\n          </div>\n        </div>\n      );\n    }\n  }\n\n  render() {\n    return  (\n      <div>\n        {this.renderControls()}\n        <hr/>\n        {this.renderBranchLoansStats()} \n        {this.renderMemberCounts()}\n        {this.renderWatchlist()}\n        {this.renderCenters()}\n        {this.renderCycleCountSummary()}\n      </div>\n    );\n  }\n}\n", "export default function _typeof(obj) {\n  \"@babel/helpers - typeof\";\n\n  return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n    return typeof obj;\n  } : function (obj) {\n    return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n  }, _typeof(obj);\n}", "import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n  if (_typeof(input) !== \"object\" || input === null) return input;\n  var prim = input[Symbol.toPrimitive];\n  if (prim !== undefined) {\n    var res = prim.call(input, hint || \"default\");\n    if (_typeof(res) !== \"object\") return res;\n    throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n  }\n  return (hint === \"string\" ? String : Number)(input);\n}", "import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n  var key = toPrimitive(arg, \"string\");\n  return _typeof(key) === \"symbol\" ? key : String(key);\n}", "import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n  key = toPropertyKey(key);\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n  return obj;\n}", "import defineProperty from \"./defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) {\n  var keys = Object.keys(object);\n  if (Object.getOwnPropertySymbols) {\n    var symbols = Object.getOwnPropertySymbols(object);\n    enumerableOnly && (symbols = symbols.filter(function (sym) {\n      return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n    })), keys.push.apply(keys, symbols);\n  }\n  return keys;\n}\nexport default function _objectSpread2(target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = null != arguments[i] ? arguments[i] : {};\n    i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n      defineProperty(target, key, source[key]);\n    }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n      Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n    });\n  }\n  return target;\n}", "export default function _arrayWithHoles(arr) {\n  if (Array.isArray(arr)) return arr;\n}", "export default function _iterableToArrayLimit(arr, i) {\n  var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"];\n  if (null != _i) {\n    var _s,\n      _e,\n      _x,\n      _r,\n      _arr = [],\n      _n = !0,\n      _d = !1;\n    try {\n      if (_x = (_i = _i.call(arr)).next, 0 === i) {\n        if (Object(_i) !== _i) return;\n        _n = !1;\n      } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0);\n    } catch (err) {\n      _d = !0, _e = err;\n    } finally {\n      try {\n        if (!_n && null != _i[\"return\"] && (_r = _i[\"return\"](), Object(_r) !== _r)) return;\n      } finally {\n        if (_d) throw _e;\n      }\n    }\n    return _arr;\n  }\n}", "export default function _arrayLikeToArray(arr, len) {\n  if (len == null || len > arr.length) len = arr.length;\n  for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n  return arr2;\n}", "import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n  if (!o) return;\n  if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n  var n = Object.prototype.toString.call(o).slice(8, -1);\n  if (n === \"Object\" && o.constructor) n = o.constructor.name;\n  if (n === \"Map\" || n === \"Set\") return Array.from(o);\n  if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}", "export default function _nonIterableRest() {\n  throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}", "import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n  return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}", "export default function _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n  return target;\n}", "import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nexport default function _objectWithoutProperties(source, excluded) {\n  if (source == null) return {};\n  var target = objectWithoutPropertiesLoose(source, excluded);\n  var key, i;\n  if (Object.getOwnPropertySymbols) {\n    var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n    for (i = 0; i < sourceSymbolKeys.length; i++) {\n      key = sourceSymbolKeys[i];\n      if (excluded.indexOf(key) >= 0) continue;\n      if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n      target[key] = source[key];\n    }\n  }\n  return target;\n}", "import _objectSpread from '@babel/runtime/helpers/esm/objectSpread2';\nimport _slicedToArray from '@babel/runtime/helpers/esm/slicedToArray';\nimport _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';\nimport { useState, useCallback } from 'react';\n\nvar _excluded = [\"defaultInputValue\", \"defaultMenuIsOpen\", \"defaultValue\", \"inputValue\", \"menuIsOpen\", \"onChange\", \"onInputChange\", \"onMenuClose\", \"onMenuOpen\", \"value\"];\nfunction useStateManager(_ref) {\n  var _ref$defaultInputValu = _ref.defaultInputValue,\n    defaultInputValue = _ref$defaultInputValu === void 0 ? '' : _ref$defaultInputValu,\n    _ref$defaultMenuIsOpe = _ref.defaultMenuIsOpen,\n    defaultMenuIsOpen = _ref$defaultMenuIsOpe === void 0 ? false : _ref$defaultMenuIsOpe,\n    _ref$defaultValue = _ref.defaultValue,\n    defaultValue = _ref$defaultValue === void 0 ? null : _ref$defaultValue,\n    propsInputValue = _ref.inputValue,\n    propsMenuIsOpen = _ref.menuIsOpen,\n    propsOnChange = _ref.onChange,\n    propsOnInputChange = _ref.onInputChange,\n    propsOnMenuClose = _ref.onMenuClose,\n    propsOnMenuOpen = _ref.onMenuOpen,\n    propsValue = _ref.value,\n    restSelectProps = _objectWithoutProperties(_ref, _excluded);\n  var _useState = useState(propsInputValue !== undefined ? propsInputValue : defaultInputValue),\n    _useState2 = _slicedToArray(_useState, 2),\n    stateInputValue = _useState2[0],\n    setStateInputValue = _useState2[1];\n  var _useState3 = useState(propsMenuIsOpen !== undefined ? propsMenuIsOpen : defaultMenuIsOpen),\n    _useState4 = _slicedToArray(_useState3, 2),\n    stateMenuIsOpen = _useState4[0],\n    setStateMenuIsOpen = _useState4[1];\n  var _useState5 = useState(propsValue !== undefined ? propsValue : defaultValue),\n    _useState6 = _slicedToArray(_useState5, 2),\n    stateValue = _useState6[0],\n    setStateValue = _useState6[1];\n  var onChange = useCallback(function (value, actionMeta) {\n    if (typeof propsOnChange === 'function') {\n      propsOnChange(value, actionMeta);\n    }\n    setStateValue(value);\n  }, [propsOnChange]);\n  var onInputChange = useCallback(function (value, actionMeta) {\n    var newValue;\n    if (typeof propsOnInputChange === 'function') {\n      newValue = propsOnInputChange(value, actionMeta);\n    }\n    setStateInputValue(newValue !== undefined ? newValue : value);\n  }, [propsOnInputChange]);\n  var onMenuOpen = useCallback(function () {\n    if (typeof propsOnMenuOpen === 'function') {\n      propsOnMenuOpen();\n    }\n    setStateMenuIsOpen(true);\n  }, [propsOnMenuOpen]);\n  var onMenuClose = useCallback(function () {\n    if (typeof propsOnMenuClose === 'function') {\n      propsOnMenuClose();\n    }\n    setStateMenuIsOpen(false);\n  }, [propsOnMenuClose]);\n  var inputValue = propsInputValue !== undefined ? propsInputValue : stateInputValue;\n  var menuIsOpen = propsMenuIsOpen !== undefined ? propsMenuIsOpen : stateMenuIsOpen;\n  var value = propsValue !== undefined ? propsValue : stateValue;\n  return _objectSpread(_objectSpread({}, restSelectProps), {}, {\n    inputValue: inputValue,\n    menuIsOpen: menuIsOpen,\n    onChange: onChange,\n    onInputChange: onInputChange,\n    onMenuClose: onMenuClose,\n    onMenuOpen: onMenuOpen,\n    value: value\n  });\n}\n\nexport { useStateManager as u };\n", "export default function _extends() {\n  _extends = Object.assign ? Object.assign.bind() : function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n    return target;\n  };\n  return _extends.apply(this, arguments);\n}", "import { u as useStateManager } from './useStateManager-7e1e8489.esm.js';\nexport { u as useStateManager } from './useStateManager-7e1e8489.esm.js';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport * as React from 'react';\nimport { forwardRef, useMemo } from 'react';\nimport { S as Select } from './Select-aecb2a80.esm.js';\nexport { c as createFilter, d as defaultTheme, m as mergeStyles } from './Select-aecb2a80.esm.js';\nimport { CacheProvider } from '@emotion/react';\nimport createCache from '@emotion/cache';\nexport { c as components } from './index-baa8dc4f.esm.js';\nimport '@babel/runtime/helpers/objectSpread2';\nimport '@babel/runtime/helpers/slicedToArray';\nimport '@babel/runtime/helpers/objectWithoutProperties';\nimport '@babel/runtime/helpers/classCallCheck';\nimport '@babel/runtime/helpers/createClass';\nimport '@babel/runtime/helpers/inherits';\nimport '@babel/runtime/helpers/createSuper';\nimport '@babel/runtime/helpers/toConsumableArray';\nimport 'memoize-one';\nimport '@babel/runtime/helpers/typeof';\nimport '@babel/runtime/helpers/taggedTemplateLiteral';\nimport '@babel/runtime/helpers/defineProperty';\nimport 'react-dom';\nimport '@floating-ui/dom';\nimport 'use-isomorphic-layout-effect';\n\nvar StateManagedSelect = /*#__PURE__*/forwardRef(function (props, ref) {\n  var baseSelectProps = useStateManager(props);\n  return /*#__PURE__*/React.createElement(Select, _extends({\n    ref: ref\n  }, baseSelectProps));\n});\nvar StateManagedSelect$1 = StateManagedSelect;\n\nvar NonceProvider = (function (_ref) {\n  var nonce = _ref.nonce,\n    children = _ref.children,\n    cacheKey = _ref.cacheKey;\n  var emotionCache = useMemo(function () {\n    return createCache({\n      key: cacheKey,\n      nonce: nonce\n    });\n  }, [cacheKey, nonce]);\n  return /*#__PURE__*/React.createElement(CacheProvider, {\n    value: emotionCache\n  }, children);\n});\n\nexport { NonceProvider, StateManagedSelect$1 as default };\n", "export default function _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}", "import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(target, props) {\n  for (var i = 0; i < props.length; i++) {\n    var descriptor = props[i];\n    descriptor.enumerable = descriptor.enumerable || false;\n    descriptor.configurable = true;\n    if (\"value\" in descriptor) descriptor.writable = true;\n    Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);\n  }\n}\nexport default function _createClass(Constructor, protoProps, staticProps) {\n  if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n  if (staticProps) _defineProperties(Constructor, staticProps);\n  Object.defineProperty(Constructor, \"prototype\", {\n    writable: false\n  });\n  return Constructor;\n}", "export default function _setPrototypeOf(o, p) {\n  _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n  return _setPrototypeOf(o, p);\n}", "import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n  if (typeof superClass !== \"function\" && superClass !== null) {\n    throw new TypeError(\"Super expression must either be null or a function\");\n  }\n  subClass.prototype = Object.create(superClass && superClass.prototype, {\n    constructor: {\n      value: subClass,\n      writable: true,\n      configurable: true\n    }\n  });\n  Object.defineProperty(subClass, \"prototype\", {\n    writable: false\n  });\n  if (superClass) setPrototypeOf(subClass, superClass);\n}", "export default function _getPrototypeOf(o) {\n  _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n    return o.__proto__ || Object.getPrototypeOf(o);\n  };\n  return _getPrototypeOf(o);\n}", "export default function _isNativeReflectConstruct() {\n  if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n  if (Reflect.construct.sham) return false;\n  if (typeof Proxy === \"function\") return true;\n  try {\n    Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n    return true;\n  } catch (e) {\n    return false;\n  }\n}", "export default function _assertThisInitialized(self) {\n  if (self === void 0) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n  return self;\n}", "import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n  if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n    return call;\n  } else if (call !== void 0) {\n    throw new TypeError(\"Derived constructors may only return object or undefined\");\n  }\n  return assertThisInitialized(self);\n}", "import getPrototypeOf from \"./getPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nimport possibleConstructorReturn from \"./possibleConstructorReturn.js\";\nexport default function _createSuper(Derived) {\n  var hasNativeReflectConstruct = isNativeReflectConstruct();\n  return function _createSuperInternal() {\n    var Super = getPrototypeOf(Derived),\n      result;\n    if (hasNativeReflectConstruct) {\n      var NewTarget = getPrototypeOf(this).constructor;\n      result = Reflect.construct(Super, arguments, NewTarget);\n    } else {\n      result = Super.apply(this, arguments);\n    }\n    return possibleConstructorReturn(this, result);\n  };\n}", "import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n  if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}", "export default function _iterableToArray(iter) {\n  if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}", "export default function _nonIterableSpread() {\n  throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}", "import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n  return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}", "import _extends from '@babel/runtime/helpers/esm/extends';\nimport _objectSpread from '@babel/runtime/helpers/esm/objectSpread2';\nimport _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\nimport _inherits from '@babel/runtime/helpers/esm/inherits';\nimport _createSuper from '@babel/runtime/helpers/esm/createSuper';\nimport _toConsumableArray from '@babel/runtime/helpers/esm/toConsumableArray';\nimport * as React from 'react';\nimport { useMemo, Fragment, useRef, useCallback, useEffect, Component } from 'react';\nimport { r as removeProps, s as supportsPassiveEvents, a as clearIndicatorCSS, b as containerCSS, d as css$1, e as dropdownIndicatorCSS, g as groupCSS, f as groupHeadingCSS, i as indicatorsContainerCSS, h as indicatorSeparatorCSS, j as inputCSS, l as loadingIndicatorCSS, k as loadingMessageCSS, m as menuCSS, n as menuListCSS, o as menuPortalCSS, p as multiValueCSS, q as multiValueLabelCSS, t as multiValueRemoveCSS, u as noOptionsMessageCSS, v as optionCSS, w as placeholderCSS, x as css$2, y as valueContainerCSS, z as isTouchCapable, A as isMobileDevice, B as multiValueAsValue, C as singleValueAsValue, D as valueTernary, E as classNames, F as defaultComponents, G as isDocumentElement, H as cleanValue, I as scrollIntoView, J as noop, M as MenuPlacer, K as notNullish } from './index-baa8dc4f.esm.js';\nimport { jsx, css } from '@emotion/react';\nimport memoizeOne from 'memoize-one';\nimport _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';\n\nfunction _EMOTION_STRINGIFIED_CSS_ERROR__$2() { return \"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\"; }\n\n// Assistive text to describe visual elements. Hidden for sighted users.\nvar _ref = process.env.NODE_ENV === \"production\" ? {\n  name: \"7pg0cj-a11yText\",\n  styles: \"label:a11yText;z-index:9999;border:0;clip:rect(1px, 1px, 1px, 1px);height:1px;width:1px;position:absolute;overflow:hidden;padding:0;white-space:nowrap\"\n} : {\n  name: \"1f43avz-a11yText-A11yText\",\n  styles: \"label:a11yText;z-index:9999;border:0;clip:rect(1px, 1px, 1px, 1px);height:1px;width:1px;position:absolute;overflow:hidden;padding:0;white-space:nowrap;label:A11yText;\",\n  map: \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkExMXlUZXh0LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNSSIsImZpbGUiOiJBMTF5VGV4dC50c3giLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQGpzeCBqc3ggKi9cbmltcG9ydCB7IGpzeCB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcblxuLy8gQXNzaXN0aXZlIHRleHQgdG8gZGVzY3JpYmUgdmlzdWFsIGVsZW1lbnRzLiBIaWRkZW4gZm9yIHNpZ2h0ZWQgdXNlcnMuXG5jb25zdCBBMTF5VGV4dCA9IChwcm9wczogSlNYLkludHJpbnNpY0VsZW1lbnRzWydzcGFuJ10pID0+IChcbiAgPHNwYW5cbiAgICBjc3M9e3tcbiAgICAgIGxhYmVsOiAnYTExeVRleHQnLFxuICAgICAgekluZGV4OiA5OTk5LFxuICAgICAgYm9yZGVyOiAwLFxuICAgICAgY2xpcDogJ3JlY3QoMXB4LCAxcHgsIDFweCwgMXB4KScsXG4gICAgICBoZWlnaHQ6IDEsXG4gICAgICB3aWR0aDogMSxcbiAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICAgICAgcGFkZGluZzogMCxcbiAgICAgIHdoaXRlU3BhY2U6ICdub3dyYXAnLFxuICAgIH19XG4gICAgey4uLnByb3BzfVxuICAvPlxuKTtcblxuZXhwb3J0IGRlZmF1bHQgQTExeVRleHQ7XG4iXX0= */\",\n  toString: _EMOTION_STRINGIFIED_CSS_ERROR__$2\n};\nvar A11yText = function A11yText(props) {\n  return jsx(\"span\", _extends({\n    css: _ref\n  }, props));\n};\nvar A11yText$1 = A11yText;\n\nvar defaultAriaLiveMessages = {\n  guidance: function guidance(props) {\n    var isSearchable = props.isSearchable,\n      isMulti = props.isMulti,\n      isDisabled = props.isDisabled,\n      tabSelectsValue = props.tabSelectsValue,\n      context = props.context;\n    switch (context) {\n      case 'menu':\n        return \"Use Up and Down to choose options\".concat(isDisabled ? '' : ', press Enter to select the currently focused option', \", press Escape to exit the menu\").concat(tabSelectsValue ? ', press Tab to select the option and exit the menu' : '', \".\");\n      case 'input':\n        return \"\".concat(props['aria-label'] || 'Select', \" is focused \").concat(isSearchable ? ',type to refine list' : '', \", press Down to open the menu, \").concat(isMulti ? ' press left to focus selected values' : '');\n      case 'value':\n        return 'Use left and right to toggle between focused values, press Backspace to remove the currently focused value';\n      default:\n        return '';\n    }\n  },\n  onChange: function onChange(props) {\n    var action = props.action,\n      _props$label = props.label,\n      label = _props$label === void 0 ? '' : _props$label,\n      labels = props.labels,\n      isDisabled = props.isDisabled;\n    switch (action) {\n      case 'deselect-option':\n      case 'pop-value':\n      case 'remove-value':\n        return \"option \".concat(label, \", deselected.\");\n      case 'clear':\n        return 'All selected options have been cleared.';\n      case 'initial-input-focus':\n        return \"option\".concat(labels.length > 1 ? 's' : '', \" \").concat(labels.join(','), \", selected.\");\n      case 'select-option':\n        return isDisabled ? \"option \".concat(label, \" is disabled. Select another option.\") : \"option \".concat(label, \", selected.\");\n      default:\n        return '';\n    }\n  },\n  onFocus: function onFocus(props) {\n    var context = props.context,\n      focused = props.focused,\n      options = props.options,\n      _props$label2 = props.label,\n      label = _props$label2 === void 0 ? '' : _props$label2,\n      selectValue = props.selectValue,\n      isDisabled = props.isDisabled,\n      isSelected = props.isSelected;\n    var getArrayIndex = function getArrayIndex(arr, item) {\n      return arr && arr.length ? \"\".concat(arr.indexOf(item) + 1, \" of \").concat(arr.length) : '';\n    };\n    if (context === 'value' && selectValue) {\n      return \"value \".concat(label, \" focused, \").concat(getArrayIndex(selectValue, focused), \".\");\n    }\n    if (context === 'menu') {\n      var disabled = isDisabled ? ' disabled' : '';\n      var status = \"\".concat(isSelected ? 'selected' : 'focused').concat(disabled);\n      return \"option \".concat(label, \" \").concat(status, \", \").concat(getArrayIndex(options, focused), \".\");\n    }\n    return '';\n  },\n  onFilter: function onFilter(props) {\n    var inputValue = props.inputValue,\n      resultsMessage = props.resultsMessage;\n    return \"\".concat(resultsMessage).concat(inputValue ? ' for search term ' + inputValue : '', \".\");\n  }\n};\n\nvar LiveRegion = function LiveRegion(props) {\n  var ariaSelection = props.ariaSelection,\n    focusedOption = props.focusedOption,\n    focusedValue = props.focusedValue,\n    focusableOptions = props.focusableOptions,\n    isFocused = props.isFocused,\n    selectValue = props.selectValue,\n    selectProps = props.selectProps,\n    id = props.id;\n  var ariaLiveMessages = selectProps.ariaLiveMessages,\n    getOptionLabel = selectProps.getOptionLabel,\n    inputValue = selectProps.inputValue,\n    isMulti = selectProps.isMulti,\n    isOptionDisabled = selectProps.isOptionDisabled,\n    isSearchable = selectProps.isSearchable,\n    menuIsOpen = selectProps.menuIsOpen,\n    options = selectProps.options,\n    screenReaderStatus = selectProps.screenReaderStatus,\n    tabSelectsValue = selectProps.tabSelectsValue;\n  var ariaLabel = selectProps['aria-label'];\n  var ariaLive = selectProps['aria-live'];\n\n  // Update aria live message configuration when prop changes\n  var messages = useMemo(function () {\n    return _objectSpread(_objectSpread({}, defaultAriaLiveMessages), ariaLiveMessages || {});\n  }, [ariaLiveMessages]);\n\n  // Update aria live selected option when prop changes\n  var ariaSelected = useMemo(function () {\n    var message = '';\n    if (ariaSelection && messages.onChange) {\n      var option = ariaSelection.option,\n        selectedOptions = ariaSelection.options,\n        removedValue = ariaSelection.removedValue,\n        removedValues = ariaSelection.removedValues,\n        value = ariaSelection.value;\n      // select-option when !isMulti does not return option so we assume selected option is value\n      var asOption = function asOption(val) {\n        return !Array.isArray(val) ? val : null;\n      };\n\n      // If there is just one item from the action then get its label\n      var selected = removedValue || option || asOption(value);\n      var label = selected ? getOptionLabel(selected) : '';\n\n      // If there are multiple items from the action then return an array of labels\n      var multiSelected = selectedOptions || removedValues || undefined;\n      var labels = multiSelected ? multiSelected.map(getOptionLabel) : [];\n      var onChangeProps = _objectSpread({\n        // multiSelected items are usually items that have already been selected\n        // or set by the user as a default value so we assume they are not disabled\n        isDisabled: selected && isOptionDisabled(selected, selectValue),\n        label: label,\n        labels: labels\n      }, ariaSelection);\n      message = messages.onChange(onChangeProps);\n    }\n    return message;\n  }, [ariaSelection, messages, isOptionDisabled, selectValue, getOptionLabel]);\n  var ariaFocused = useMemo(function () {\n    var focusMsg = '';\n    var focused = focusedOption || focusedValue;\n    var isSelected = !!(focusedOption && selectValue && selectValue.includes(focusedOption));\n    if (focused && messages.onFocus) {\n      var onFocusProps = {\n        focused: focused,\n        label: getOptionLabel(focused),\n        isDisabled: isOptionDisabled(focused, selectValue),\n        isSelected: isSelected,\n        options: focusableOptions,\n        context: focused === focusedOption ? 'menu' : 'value',\n        selectValue: selectValue\n      };\n      focusMsg = messages.onFocus(onFocusProps);\n    }\n    return focusMsg;\n  }, [focusedOption, focusedValue, getOptionLabel, isOptionDisabled, messages, focusableOptions, selectValue]);\n  var ariaResults = useMemo(function () {\n    var resultsMsg = '';\n    if (menuIsOpen && options.length && messages.onFilter) {\n      var resultsMessage = screenReaderStatus({\n        count: focusableOptions.length\n      });\n      resultsMsg = messages.onFilter({\n        inputValue: inputValue,\n        resultsMessage: resultsMessage\n      });\n    }\n    return resultsMsg;\n  }, [focusableOptions, inputValue, menuIsOpen, messages, options, screenReaderStatus]);\n  var ariaGuidance = useMemo(function () {\n    var guidanceMsg = '';\n    if (messages.guidance) {\n      var context = focusedValue ? 'value' : menuIsOpen ? 'menu' : 'input';\n      guidanceMsg = messages.guidance({\n        'aria-label': ariaLabel,\n        context: context,\n        isDisabled: focusedOption && isOptionDisabled(focusedOption, selectValue),\n        isMulti: isMulti,\n        isSearchable: isSearchable,\n        tabSelectsValue: tabSelectsValue\n      });\n    }\n    return guidanceMsg;\n  }, [ariaLabel, focusedOption, focusedValue, isMulti, isOptionDisabled, isSearchable, menuIsOpen, messages, selectValue, tabSelectsValue]);\n  var ariaContext = \"\".concat(ariaFocused, \" \").concat(ariaResults, \" \").concat(ariaGuidance);\n  var ScreenReaderText = jsx(Fragment, null, jsx(\"span\", {\n    id: \"aria-selection\"\n  }, ariaSelected), jsx(\"span\", {\n    id: \"aria-context\"\n  }, ariaContext));\n  var isInitialFocus = (ariaSelection === null || ariaSelection === void 0 ? void 0 : ariaSelection.action) === 'initial-input-focus';\n  return jsx(Fragment, null, jsx(A11yText$1, {\n    id: id\n  }, isInitialFocus && ScreenReaderText), jsx(A11yText$1, {\n    \"aria-live\": ariaLive,\n    \"aria-atomic\": \"false\",\n    \"aria-relevant\": \"additions text\"\n  }, isFocused && !isInitialFocus && ScreenReaderText));\n};\nvar LiveRegion$1 = LiveRegion;\n\nvar diacritics = [{\n  base: 'A',\n  letters: \"A\\u24B6\\uFF21\\xC0\\xC1\\xC2\\u1EA6\\u1EA4\\u1EAA\\u1EA8\\xC3\\u0100\\u0102\\u1EB0\\u1EAE\\u1EB4\\u1EB2\\u0226\\u01E0\\xC4\\u01DE\\u1EA2\\xC5\\u01FA\\u01CD\\u0200\\u0202\\u1EA0\\u1EAC\\u1EB6\\u1E00\\u0104\\u023A\\u2C6F\"\n}, {\n  base: 'AA',\n  letters: \"\\uA732\"\n}, {\n  base: 'AE',\n  letters: \"\\xC6\\u01FC\\u01E2\"\n}, {\n  base: 'AO',\n  letters: \"\\uA734\"\n}, {\n  base: 'AU',\n  letters: \"\\uA736\"\n}, {\n  base: 'AV',\n  letters: \"\\uA738\\uA73A\"\n}, {\n  base: 'AY',\n  letters: \"\\uA73C\"\n}, {\n  base: 'B',\n  letters: \"B\\u24B7\\uFF22\\u1E02\\u1E04\\u1E06\\u0243\\u0182\\u0181\"\n}, {\n  base: 'C',\n  letters: \"C\\u24B8\\uFF23\\u0106\\u0108\\u010A\\u010C\\xC7\\u1E08\\u0187\\u023B\\uA73E\"\n}, {\n  base: 'D',\n  letters: \"D\\u24B9\\uFF24\\u1E0A\\u010E\\u1E0C\\u1E10\\u1E12\\u1E0E\\u0110\\u018B\\u018A\\u0189\\uA779\"\n}, {\n  base: 'DZ',\n  letters: \"\\u01F1\\u01C4\"\n}, {\n  base: 'Dz',\n  letters: \"\\u01F2\\u01C5\"\n}, {\n  base: 'E',\n  letters: \"E\\u24BA\\uFF25\\xC8\\xC9\\xCA\\u1EC0\\u1EBE\\u1EC4\\u1EC2\\u1EBC\\u0112\\u1E14\\u1E16\\u0114\\u0116\\xCB\\u1EBA\\u011A\\u0204\\u0206\\u1EB8\\u1EC6\\u0228\\u1E1C\\u0118\\u1E18\\u1E1A\\u0190\\u018E\"\n}, {\n  base: 'F',\n  letters: \"F\\u24BB\\uFF26\\u1E1E\\u0191\\uA77B\"\n}, {\n  base: 'G',\n  letters: \"G\\u24BC\\uFF27\\u01F4\\u011C\\u1E20\\u011E\\u0120\\u01E6\\u0122\\u01E4\\u0193\\uA7A0\\uA77D\\uA77E\"\n}, {\n  base: 'H',\n  letters: \"H\\u24BD\\uFF28\\u0124\\u1E22\\u1E26\\u021E\\u1E24\\u1E28\\u1E2A\\u0126\\u2C67\\u2C75\\uA78D\"\n}, {\n  base: 'I',\n  letters: \"I\\u24BE\\uFF29\\xCC\\xCD\\xCE\\u0128\\u012A\\u012C\\u0130\\xCF\\u1E2E\\u1EC8\\u01CF\\u0208\\u020A\\u1ECA\\u012E\\u1E2C\\u0197\"\n}, {\n  base: 'J',\n  letters: \"J\\u24BF\\uFF2A\\u0134\\u0248\"\n}, {\n  base: 'K',\n  letters: \"K\\u24C0\\uFF2B\\u1E30\\u01E8\\u1E32\\u0136\\u1E34\\u0198\\u2C69\\uA740\\uA742\\uA744\\uA7A2\"\n}, {\n  base: 'L',\n  letters: \"L\\u24C1\\uFF2C\\u013F\\u0139\\u013D\\u1E36\\u1E38\\u013B\\u1E3C\\u1E3A\\u0141\\u023D\\u2C62\\u2C60\\uA748\\uA746\\uA780\"\n}, {\n  base: 'LJ',\n  letters: \"\\u01C7\"\n}, {\n  base: 'Lj',\n  letters: \"\\u01C8\"\n}, {\n  base: 'M',\n  letters: \"M\\u24C2\\uFF2D\\u1E3E\\u1E40\\u1E42\\u2C6E\\u019C\"\n}, {\n  base: 'N',\n  letters: \"N\\u24C3\\uFF2E\\u01F8\\u0143\\xD1\\u1E44\\u0147\\u1E46\\u0145\\u1E4A\\u1E48\\u0220\\u019D\\uA790\\uA7A4\"\n}, {\n  base: 'NJ',\n  letters: \"\\u01CA\"\n}, {\n  base: 'Nj',\n  letters: \"\\u01CB\"\n}, {\n  base: 'O',\n  letters: \"O\\u24C4\\uFF2F\\xD2\\xD3\\xD4\\u1ED2\\u1ED0\\u1ED6\\u1ED4\\xD5\\u1E4C\\u022C\\u1E4E\\u014C\\u1E50\\u1E52\\u014E\\u022E\\u0230\\xD6\\u022A\\u1ECE\\u0150\\u01D1\\u020C\\u020E\\u01A0\\u1EDC\\u1EDA\\u1EE0\\u1EDE\\u1EE2\\u1ECC\\u1ED8\\u01EA\\u01EC\\xD8\\u01FE\\u0186\\u019F\\uA74A\\uA74C\"\n}, {\n  base: 'OI',\n  letters: \"\\u01A2\"\n}, {\n  base: 'OO',\n  letters: \"\\uA74E\"\n}, {\n  base: 'OU',\n  letters: \"\\u0222\"\n}, {\n  base: 'P',\n  letters: \"P\\u24C5\\uFF30\\u1E54\\u1E56\\u01A4\\u2C63\\uA750\\uA752\\uA754\"\n}, {\n  base: 'Q',\n  letters: \"Q\\u24C6\\uFF31\\uA756\\uA758\\u024A\"\n}, {\n  base: 'R',\n  letters: \"R\\u24C7\\uFF32\\u0154\\u1E58\\u0158\\u0210\\u0212\\u1E5A\\u1E5C\\u0156\\u1E5E\\u024C\\u2C64\\uA75A\\uA7A6\\uA782\"\n}, {\n  base: 'S',\n  letters: \"S\\u24C8\\uFF33\\u1E9E\\u015A\\u1E64\\u015C\\u1E60\\u0160\\u1E66\\u1E62\\u1E68\\u0218\\u015E\\u2C7E\\uA7A8\\uA784\"\n}, {\n  base: 'T',\n  letters: \"T\\u24C9\\uFF34\\u1E6A\\u0164\\u1E6C\\u021A\\u0162\\u1E70\\u1E6E\\u0166\\u01AC\\u01AE\\u023E\\uA786\"\n}, {\n  base: 'TZ',\n  letters: \"\\uA728\"\n}, {\n  base: 'U',\n  letters: \"U\\u24CA\\uFF35\\xD9\\xDA\\xDB\\u0168\\u1E78\\u016A\\u1E7A\\u016C\\xDC\\u01DB\\u01D7\\u01D5\\u01D9\\u1EE6\\u016E\\u0170\\u01D3\\u0214\\u0216\\u01AF\\u1EEA\\u1EE8\\u1EEE\\u1EEC\\u1EF0\\u1EE4\\u1E72\\u0172\\u1E76\\u1E74\\u0244\"\n}, {\n  base: 'V',\n  letters: \"V\\u24CB\\uFF36\\u1E7C\\u1E7E\\u01B2\\uA75E\\u0245\"\n}, {\n  base: 'VY',\n  letters: \"\\uA760\"\n}, {\n  base: 'W',\n  letters: \"W\\u24CC\\uFF37\\u1E80\\u1E82\\u0174\\u1E86\\u1E84\\u1E88\\u2C72\"\n}, {\n  base: 'X',\n  letters: \"X\\u24CD\\uFF38\\u1E8A\\u1E8C\"\n}, {\n  base: 'Y',\n  letters: \"Y\\u24CE\\uFF39\\u1EF2\\xDD\\u0176\\u1EF8\\u0232\\u1E8E\\u0178\\u1EF6\\u1EF4\\u01B3\\u024E\\u1EFE\"\n}, {\n  base: 'Z',\n  letters: \"Z\\u24CF\\uFF3A\\u0179\\u1E90\\u017B\\u017D\\u1E92\\u1E94\\u01B5\\u0224\\u2C7F\\u2C6B\\uA762\"\n}, {\n  base: 'a',\n  letters: \"a\\u24D0\\uFF41\\u1E9A\\xE0\\xE1\\xE2\\u1EA7\\u1EA5\\u1EAB\\u1EA9\\xE3\\u0101\\u0103\\u1EB1\\u1EAF\\u1EB5\\u1EB3\\u0227\\u01E1\\xE4\\u01DF\\u1EA3\\xE5\\u01FB\\u01CE\\u0201\\u0203\\u1EA1\\u1EAD\\u1EB7\\u1E01\\u0105\\u2C65\\u0250\"\n}, {\n  base: 'aa',\n  letters: \"\\uA733\"\n}, {\n  base: 'ae',\n  letters: \"\\xE6\\u01FD\\u01E3\"\n}, {\n  base: 'ao',\n  letters: \"\\uA735\"\n}, {\n  base: 'au',\n  letters: \"\\uA737\"\n}, {\n  base: 'av',\n  letters: \"\\uA739\\uA73B\"\n}, {\n  base: 'ay',\n  letters: \"\\uA73D\"\n}, {\n  base: 'b',\n  letters: \"b\\u24D1\\uFF42\\u1E03\\u1E05\\u1E07\\u0180\\u0183\\u0253\"\n}, {\n  base: 'c',\n  letters: \"c\\u24D2\\uFF43\\u0107\\u0109\\u010B\\u010D\\xE7\\u1E09\\u0188\\u023C\\uA73F\\u2184\"\n}, {\n  base: 'd',\n  letters: \"d\\u24D3\\uFF44\\u1E0B\\u010F\\u1E0D\\u1E11\\u1E13\\u1E0F\\u0111\\u018C\\u0256\\u0257\\uA77A\"\n}, {\n  base: 'dz',\n  letters: \"\\u01F3\\u01C6\"\n}, {\n  base: 'e',\n  letters: \"e\\u24D4\\uFF45\\xE8\\xE9\\xEA\\u1EC1\\u1EBF\\u1EC5\\u1EC3\\u1EBD\\u0113\\u1E15\\u1E17\\u0115\\u0117\\xEB\\u1EBB\\u011B\\u0205\\u0207\\u1EB9\\u1EC7\\u0229\\u1E1D\\u0119\\u1E19\\u1E1B\\u0247\\u025B\\u01DD\"\n}, {\n  base: 'f',\n  letters: \"f\\u24D5\\uFF46\\u1E1F\\u0192\\uA77C\"\n}, {\n  base: 'g',\n  letters: \"g\\u24D6\\uFF47\\u01F5\\u011D\\u1E21\\u011F\\u0121\\u01E7\\u0123\\u01E5\\u0260\\uA7A1\\u1D79\\uA77F\"\n}, {\n  base: 'h',\n  letters: \"h\\u24D7\\uFF48\\u0125\\u1E23\\u1E27\\u021F\\u1E25\\u1E29\\u1E2B\\u1E96\\u0127\\u2C68\\u2C76\\u0265\"\n}, {\n  base: 'hv',\n  letters: \"\\u0195\"\n}, {\n  base: 'i',\n  letters: \"i\\u24D8\\uFF49\\xEC\\xED\\xEE\\u0129\\u012B\\u012D\\xEF\\u1E2F\\u1EC9\\u01D0\\u0209\\u020B\\u1ECB\\u012F\\u1E2D\\u0268\\u0131\"\n}, {\n  base: 'j',\n  letters: \"j\\u24D9\\uFF4A\\u0135\\u01F0\\u0249\"\n}, {\n  base: 'k',\n  letters: \"k\\u24DA\\uFF4B\\u1E31\\u01E9\\u1E33\\u0137\\u1E35\\u0199\\u2C6A\\uA741\\uA743\\uA745\\uA7A3\"\n}, {\n  base: 'l',\n  letters: \"l\\u24DB\\uFF4C\\u0140\\u013A\\u013E\\u1E37\\u1E39\\u013C\\u1E3D\\u1E3B\\u017F\\u0142\\u019A\\u026B\\u2C61\\uA749\\uA781\\uA747\"\n}, {\n  base: 'lj',\n  letters: \"\\u01C9\"\n}, {\n  base: 'm',\n  letters: \"m\\u24DC\\uFF4D\\u1E3F\\u1E41\\u1E43\\u0271\\u026F\"\n}, {\n  base: 'n',\n  letters: \"n\\u24DD\\uFF4E\\u01F9\\u0144\\xF1\\u1E45\\u0148\\u1E47\\u0146\\u1E4B\\u1E49\\u019E\\u0272\\u0149\\uA791\\uA7A5\"\n}, {\n  base: 'nj',\n  letters: \"\\u01CC\"\n}, {\n  base: 'o',\n  letters: \"o\\u24DE\\uFF4F\\xF2\\xF3\\xF4\\u1ED3\\u1ED1\\u1ED7\\u1ED5\\xF5\\u1E4D\\u022D\\u1E4F\\u014D\\u1E51\\u1E53\\u014F\\u022F\\u0231\\xF6\\u022B\\u1ECF\\u0151\\u01D2\\u020D\\u020F\\u01A1\\u1EDD\\u1EDB\\u1EE1\\u1EDF\\u1EE3\\u1ECD\\u1ED9\\u01EB\\u01ED\\xF8\\u01FF\\u0254\\uA74B\\uA74D\\u0275\"\n}, {\n  base: 'oi',\n  letters: \"\\u01A3\"\n}, {\n  base: 'ou',\n  letters: \"\\u0223\"\n}, {\n  base: 'oo',\n  letters: \"\\uA74F\"\n}, {\n  base: 'p',\n  letters: \"p\\u24DF\\uFF50\\u1E55\\u1E57\\u01A5\\u1D7D\\uA751\\uA753\\uA755\"\n}, {\n  base: 'q',\n  letters: \"q\\u24E0\\uFF51\\u024B\\uA757\\uA759\"\n}, {\n  base: 'r',\n  letters: \"r\\u24E1\\uFF52\\u0155\\u1E59\\u0159\\u0211\\u0213\\u1E5B\\u1E5D\\u0157\\u1E5F\\u024D\\u027D\\uA75B\\uA7A7\\uA783\"\n}, {\n  base: 's',\n  letters: \"s\\u24E2\\uFF53\\xDF\\u015B\\u1E65\\u015D\\u1E61\\u0161\\u1E67\\u1E63\\u1E69\\u0219\\u015F\\u023F\\uA7A9\\uA785\\u1E9B\"\n}, {\n  base: 't',\n  letters: \"t\\u24E3\\uFF54\\u1E6B\\u1E97\\u0165\\u1E6D\\u021B\\u0163\\u1E71\\u1E6F\\u0167\\u01AD\\u0288\\u2C66\\uA787\"\n}, {\n  base: 'tz',\n  letters: \"\\uA729\"\n}, {\n  base: 'u',\n  letters: \"u\\u24E4\\uFF55\\xF9\\xFA\\xFB\\u0169\\u1E79\\u016B\\u1E7B\\u016D\\xFC\\u01DC\\u01D8\\u01D6\\u01DA\\u1EE7\\u016F\\u0171\\u01D4\\u0215\\u0217\\u01B0\\u1EEB\\u1EE9\\u1EEF\\u1EED\\u1EF1\\u1EE5\\u1E73\\u0173\\u1E77\\u1E75\\u0289\"\n}, {\n  base: 'v',\n  letters: \"v\\u24E5\\uFF56\\u1E7D\\u1E7F\\u028B\\uA75F\\u028C\"\n}, {\n  base: 'vy',\n  letters: \"\\uA761\"\n}, {\n  base: 'w',\n  letters: \"w\\u24E6\\uFF57\\u1E81\\u1E83\\u0175\\u1E87\\u1E85\\u1E98\\u1E89\\u2C73\"\n}, {\n  base: 'x',\n  letters: \"x\\u24E7\\uFF58\\u1E8B\\u1E8D\"\n}, {\n  base: 'y',\n  letters: \"y\\u24E8\\uFF59\\u1EF3\\xFD\\u0177\\u1EF9\\u0233\\u1E8F\\xFF\\u1EF7\\u1E99\\u1EF5\\u01B4\\u024F\\u1EFF\"\n}, {\n  base: 'z',\n  letters: \"z\\u24E9\\uFF5A\\u017A\\u1E91\\u017C\\u017E\\u1E93\\u1E95\\u01B6\\u0225\\u0240\\u2C6C\\uA763\"\n}];\nvar anyDiacritic = new RegExp('[' + diacritics.map(function (d) {\n  return d.letters;\n}).join('') + ']', 'g');\nvar diacriticToBase = {};\nfor (var i = 0; i < diacritics.length; i++) {\n  var diacritic = diacritics[i];\n  for (var j = 0; j < diacritic.letters.length; j++) {\n    diacriticToBase[diacritic.letters[j]] = diacritic.base;\n  }\n}\nvar stripDiacritics = function stripDiacritics(str) {\n  return str.replace(anyDiacritic, function (match) {\n    return diacriticToBase[match];\n  });\n};\n\nvar memoizedStripDiacriticsForInput = memoizeOne(stripDiacritics);\nvar trimString = function trimString(str) {\n  return str.replace(/^\\s+|\\s+$/g, '');\n};\nvar defaultStringify = function defaultStringify(option) {\n  return \"\".concat(option.label, \" \").concat(option.value);\n};\nvar createFilter = function createFilter(config) {\n  return function (option, rawInput) {\n    // eslint-disable-next-line no-underscore-dangle\n    if (option.data.__isNew__) return true;\n    var _ignoreCase$ignoreAcc = _objectSpread({\n        ignoreCase: true,\n        ignoreAccents: true,\n        stringify: defaultStringify,\n        trim: true,\n        matchFrom: 'any'\n      }, config),\n      ignoreCase = _ignoreCase$ignoreAcc.ignoreCase,\n      ignoreAccents = _ignoreCase$ignoreAcc.ignoreAccents,\n      stringify = _ignoreCase$ignoreAcc.stringify,\n      trim = _ignoreCase$ignoreAcc.trim,\n      matchFrom = _ignoreCase$ignoreAcc.matchFrom;\n    var input = trim ? trimString(rawInput) : rawInput;\n    var candidate = trim ? trimString(stringify(option)) : stringify(option);\n    if (ignoreCase) {\n      input = input.toLowerCase();\n      candidate = candidate.toLowerCase();\n    }\n    if (ignoreAccents) {\n      input = memoizedStripDiacriticsForInput(input);\n      candidate = stripDiacritics(candidate);\n    }\n    return matchFrom === 'start' ? candidate.substr(0, input.length) === input : candidate.indexOf(input) > -1;\n  };\n};\n\nvar _excluded = [\"innerRef\"];\nfunction DummyInput(_ref) {\n  var innerRef = _ref.innerRef,\n    props = _objectWithoutProperties(_ref, _excluded);\n  // Remove animation props not meant for HTML elements\n  var filteredProps = removeProps(props, 'onExited', 'in', 'enter', 'exit', 'appear');\n  return jsx(\"input\", _extends({\n    ref: innerRef\n  }, filteredProps, {\n    css: /*#__PURE__*/css({\n      label: 'dummyInput',\n      // get rid of any default styles\n      background: 0,\n      border: 0,\n      // important! this hides the flashing cursor\n      caretColor: 'transparent',\n      fontSize: 'inherit',\n      gridArea: '1 / 1 / 2 / 3',\n      outline: 0,\n      padding: 0,\n      // important! without `width` browsers won't allow focus\n      width: 1,\n      // remove cursor on desktop\n      color: 'transparent',\n      // remove cursor on mobile whilst maintaining \"scroll into view\" behaviour\n      left: -100,\n      opacity: 0,\n      position: 'relative',\n      transform: 'scale(.01)'\n    }, process.env.NODE_ENV === \"production\" ? \"\" : \";label:DummyInput;\", process.env.NODE_ENV === \"production\" ? \"\" : \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkR1bW15SW5wdXQudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXlCTSIsImZpbGUiOiJEdW1teUlucHV0LnRzeCIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBAanN4IGpzeCAqL1xuaW1wb3J0IHsgUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsganN4IH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xuaW1wb3J0IHsgcmVtb3ZlUHJvcHMgfSBmcm9tICcuLi91dGlscyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIER1bW15SW5wdXQoe1xuICBpbm5lclJlZixcbiAgLi4ucHJvcHNcbn06IEpTWC5JbnRyaW5zaWNFbGVtZW50c1snaW5wdXQnXSAmIHtcbiAgcmVhZG9ubHkgaW5uZXJSZWY6IFJlZjxIVE1MSW5wdXRFbGVtZW50Pjtcbn0pIHtcbiAgLy8gUmVtb3ZlIGFuaW1hdGlvbiBwcm9wcyBub3QgbWVhbnQgZm9yIEhUTUwgZWxlbWVudHNcbiAgY29uc3QgZmlsdGVyZWRQcm9wcyA9IHJlbW92ZVByb3BzKFxuICAgIHByb3BzLFxuICAgICdvbkV4aXRlZCcsXG4gICAgJ2luJyxcbiAgICAnZW50ZXInLFxuICAgICdleGl0JyxcbiAgICAnYXBwZWFyJ1xuICApO1xuXG4gIHJldHVybiAoXG4gICAgPGlucHV0XG4gICAgICByZWY9e2lubmVyUmVmfVxuICAgICAgey4uLmZpbHRlcmVkUHJvcHN9XG4gICAgICBjc3M9e3tcbiAgICAgICAgbGFiZWw6ICdkdW1teUlucHV0JyxcbiAgICAgICAgLy8gZ2V0IHJpZCBvZiBhbnkgZGVmYXVsdCBzdHlsZXNcbiAgICAgICAgYmFja2dyb3VuZDogMCxcbiAgICAgICAgYm9yZGVyOiAwLFxuICAgICAgICAvLyBpbXBvcnRhbnQhIHRoaXMgaGlkZXMgdGhlIGZsYXNoaW5nIGN1cnNvclxuICAgICAgICBjYXJldENvbG9yOiAndHJhbnNwYXJlbnQnLFxuICAgICAgICBmb250U2l6ZTogJ2luaGVyaXQnLFxuICAgICAgICBncmlkQXJlYTogJzEgLyAxIC8gMiAvIDMnLFxuICAgICAgICBvdXRsaW5lOiAwLFxuICAgICAgICBwYWRkaW5nOiAwLFxuICAgICAgICAvLyBpbXBvcnRhbnQhIHdpdGhvdXQgYHdpZHRoYCBicm93c2VycyB3b24ndCBhbGxvdyBmb2N1c1xuICAgICAgICB3aWR0aDogMSxcblxuICAgICAgICAvLyByZW1vdmUgY3Vyc29yIG9uIGRlc2t0b3BcbiAgICAgICAgY29sb3I6ICd0cmFuc3BhcmVudCcsXG5cbiAgICAgICAgLy8gcmVtb3ZlIGN1cnNvciBvbiBtb2JpbGUgd2hpbHN0IG1haW50YWluaW5nIFwic2Nyb2xsIGludG8gdmlld1wiIGJlaGF2aW91clxuICAgICAgICBsZWZ0OiAtMTAwLFxuICAgICAgICBvcGFjaXR5OiAwLFxuICAgICAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICAgICAgdHJhbnNmb3JtOiAnc2NhbGUoLjAxKScsXG4gICAgICB9fVxuICAgIC8+XG4gICk7XG59XG4iXX0= */\")\n  }));\n}\n\nvar cancelScroll = function cancelScroll(event) {\n  event.preventDefault();\n  event.stopPropagation();\n};\nfunction useScrollCapture(_ref) {\n  var isEnabled = _ref.isEnabled,\n    onBottomArrive = _ref.onBottomArrive,\n    onBottomLeave = _ref.onBottomLeave,\n    onTopArrive = _ref.onTopArrive,\n    onTopLeave = _ref.onTopLeave;\n  var isBottom = useRef(false);\n  var isTop = useRef(false);\n  var touchStart = useRef(0);\n  var scrollTarget = useRef(null);\n  var handleEventDelta = useCallback(function (event, delta) {\n    if (scrollTarget.current === null) return;\n    var _scrollTarget$current = scrollTarget.current,\n      scrollTop = _scrollTarget$current.scrollTop,\n      scrollHeight = _scrollTarget$current.scrollHeight,\n      clientHeight = _scrollTarget$current.clientHeight;\n    var target = scrollTarget.current;\n    var isDeltaPositive = delta > 0;\n    var availableScroll = scrollHeight - clientHeight - scrollTop;\n    var shouldCancelScroll = false;\n\n    // reset bottom/top flags\n    if (availableScroll > delta && isBottom.current) {\n      if (onBottomLeave) onBottomLeave(event);\n      isBottom.current = false;\n    }\n    if (isDeltaPositive && isTop.current) {\n      if (onTopLeave) onTopLeave(event);\n      isTop.current = false;\n    }\n\n    // bottom limit\n    if (isDeltaPositive && delta > availableScroll) {\n      if (onBottomArrive && !isBottom.current) {\n        onBottomArrive(event);\n      }\n      target.scrollTop = scrollHeight;\n      shouldCancelScroll = true;\n      isBottom.current = true;\n\n      // top limit\n    } else if (!isDeltaPositive && -delta > scrollTop) {\n      if (onTopArrive && !isTop.current) {\n        onTopArrive(event);\n      }\n      target.scrollTop = 0;\n      shouldCancelScroll = true;\n      isTop.current = true;\n    }\n\n    // cancel scroll\n    if (shouldCancelScroll) {\n      cancelScroll(event);\n    }\n  }, [onBottomArrive, onBottomLeave, onTopArrive, onTopLeave]);\n  var onWheel = useCallback(function (event) {\n    handleEventDelta(event, event.deltaY);\n  }, [handleEventDelta]);\n  var onTouchStart = useCallback(function (event) {\n    // set touch start so we can calculate touchmove delta\n    touchStart.current = event.changedTouches[0].clientY;\n  }, []);\n  var onTouchMove = useCallback(function (event) {\n    var deltaY = touchStart.current - event.changedTouches[0].clientY;\n    handleEventDelta(event, deltaY);\n  }, [handleEventDelta]);\n  var startListening = useCallback(function (el) {\n    // bail early if no element is available to attach to\n    if (!el) return;\n    var notPassive = supportsPassiveEvents ? {\n      passive: false\n    } : false;\n    el.addEventListener('wheel', onWheel, notPassive);\n    el.addEventListener('touchstart', onTouchStart, notPassive);\n    el.addEventListener('touchmove', onTouchMove, notPassive);\n  }, [onTouchMove, onTouchStart, onWheel]);\n  var stopListening = useCallback(function (el) {\n    // bail early if no element is available to detach from\n    if (!el) return;\n    el.removeEventListener('wheel', onWheel, false);\n    el.removeEventListener('touchstart', onTouchStart, false);\n    el.removeEventListener('touchmove', onTouchMove, false);\n  }, [onTouchMove, onTouchStart, onWheel]);\n  useEffect(function () {\n    if (!isEnabled) return;\n    var element = scrollTarget.current;\n    startListening(element);\n    return function () {\n      stopListening(element);\n    };\n  }, [isEnabled, startListening, stopListening]);\n  return function (element) {\n    scrollTarget.current = element;\n  };\n}\n\nvar STYLE_KEYS = ['boxSizing', 'height', 'overflow', 'paddingRight', 'position'];\nvar LOCK_STYLES = {\n  boxSizing: 'border-box',\n  // account for possible declaration `width: 100%;` on body\n  overflow: 'hidden',\n  position: 'relative',\n  height: '100%'\n};\nfunction preventTouchMove(e) {\n  e.preventDefault();\n}\nfunction allowTouchMove(e) {\n  e.stopPropagation();\n}\nfunction preventInertiaScroll() {\n  var top = this.scrollTop;\n  var totalScroll = this.scrollHeight;\n  var currentScroll = top + this.offsetHeight;\n  if (top === 0) {\n    this.scrollTop = 1;\n  } else if (currentScroll === totalScroll) {\n    this.scrollTop = top - 1;\n  }\n}\n\n// `ontouchstart` check works on most browsers\n// `maxTouchPoints` works on IE10/11 and Surface\nfunction isTouchDevice() {\n  return 'ontouchstart' in window || navigator.maxTouchPoints;\n}\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nvar activeScrollLocks = 0;\nvar listenerOptions = {\n  capture: false,\n  passive: false\n};\nfunction useScrollLock(_ref) {\n  var isEnabled = _ref.isEnabled,\n    _ref$accountForScroll = _ref.accountForScrollbars,\n    accountForScrollbars = _ref$accountForScroll === void 0 ? true : _ref$accountForScroll;\n  var originalStyles = useRef({});\n  var scrollTarget = useRef(null);\n  var addScrollLock = useCallback(function (touchScrollTarget) {\n    if (!canUseDOM) return;\n    var target = document.body;\n    var targetStyle = target && target.style;\n    if (accountForScrollbars) {\n      // store any styles already applied to the body\n      STYLE_KEYS.forEach(function (key) {\n        var val = targetStyle && targetStyle[key];\n        originalStyles.current[key] = val;\n      });\n    }\n\n    // apply the lock styles and padding if this is the first scroll lock\n    if (accountForScrollbars && activeScrollLocks < 1) {\n      var currentPadding = parseInt(originalStyles.current.paddingRight, 10) || 0;\n      var clientWidth = document.body ? document.body.clientWidth : 0;\n      var adjustedPadding = window.innerWidth - clientWidth + currentPadding || 0;\n      Object.keys(LOCK_STYLES).forEach(function (key) {\n        var val = LOCK_STYLES[key];\n        if (targetStyle) {\n          targetStyle[key] = val;\n        }\n      });\n      if (targetStyle) {\n        targetStyle.paddingRight = \"\".concat(adjustedPadding, \"px\");\n      }\n    }\n\n    // account for touch devices\n    if (target && isTouchDevice()) {\n      // Mobile Safari ignores { overflow: hidden } declaration on the body.\n      target.addEventListener('touchmove', preventTouchMove, listenerOptions);\n\n      // Allow scroll on provided target\n      if (touchScrollTarget) {\n        touchScrollTarget.addEventListener('touchstart', preventInertiaScroll, listenerOptions);\n        touchScrollTarget.addEventListener('touchmove', allowTouchMove, listenerOptions);\n      }\n    }\n\n    // increment active scroll locks\n    activeScrollLocks += 1;\n  }, [accountForScrollbars]);\n  var removeScrollLock = useCallback(function (touchScrollTarget) {\n    if (!canUseDOM) return;\n    var target = document.body;\n    var targetStyle = target && target.style;\n\n    // safely decrement active scroll locks\n    activeScrollLocks = Math.max(activeScrollLocks - 1, 0);\n\n    // reapply original body styles, if any\n    if (accountForScrollbars && activeScrollLocks < 1) {\n      STYLE_KEYS.forEach(function (key) {\n        var val = originalStyles.current[key];\n        if (targetStyle) {\n          targetStyle[key] = val;\n        }\n      });\n    }\n\n    // remove touch listeners\n    if (target && isTouchDevice()) {\n      target.removeEventListener('touchmove', preventTouchMove, listenerOptions);\n      if (touchScrollTarget) {\n        touchScrollTarget.removeEventListener('touchstart', preventInertiaScroll, listenerOptions);\n        touchScrollTarget.removeEventListener('touchmove', allowTouchMove, listenerOptions);\n      }\n    }\n  }, [accountForScrollbars]);\n  useEffect(function () {\n    if (!isEnabled) return;\n    var element = scrollTarget.current;\n    addScrollLock(element);\n    return function () {\n      removeScrollLock(element);\n    };\n  }, [isEnabled, addScrollLock, removeScrollLock]);\n  return function (element) {\n    scrollTarget.current = element;\n  };\n}\n\nfunction _EMOTION_STRINGIFIED_CSS_ERROR__$1() { return \"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\"; }\nvar blurSelectInput = function blurSelectInput() {\n  return document.activeElement && document.activeElement.blur();\n};\nvar _ref2$1 = process.env.NODE_ENV === \"production\" ? {\n  name: \"1kfdb0e\",\n  styles: \"position:fixed;left:0;bottom:0;right:0;top:0\"\n} : {\n  name: \"bp8cua-ScrollManager\",\n  styles: \"position:fixed;left:0;bottom:0;right:0;top:0;label:ScrollManager;\",\n  map: \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlNjcm9sbE1hbmFnZXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQStDVSIsImZpbGUiOiJTY3JvbGxNYW5hZ2VyLnRzeCIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBAanN4IGpzeCAqL1xuaW1wb3J0IHsganN4IH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xuaW1wb3J0IHsgRnJhZ21lbnQsIFJlYWN0RWxlbWVudCwgUmVmQ2FsbGJhY2sgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdXNlU2Nyb2xsQ2FwdHVyZSBmcm9tICcuL3VzZVNjcm9sbENhcHR1cmUnO1xuaW1wb3J0IHVzZVNjcm9sbExvY2sgZnJvbSAnLi91c2VTY3JvbGxMb2NrJztcblxuaW50ZXJmYWNlIFByb3BzIHtcbiAgcmVhZG9ubHkgY2hpbGRyZW46IChyZWY6IFJlZkNhbGxiYWNrPEhUTUxFbGVtZW50PikgPT4gUmVhY3RFbGVtZW50O1xuICByZWFkb25seSBsb2NrRW5hYmxlZDogYm9vbGVhbjtcbiAgcmVhZG9ubHkgY2FwdHVyZUVuYWJsZWQ6IGJvb2xlYW47XG4gIHJlYWRvbmx5IG9uQm90dG9tQXJyaXZlPzogKGV2ZW50OiBXaGVlbEV2ZW50IHwgVG91Y2hFdmVudCkgPT4gdm9pZDtcbiAgcmVhZG9ubHkgb25Cb3R0b21MZWF2ZT86IChldmVudDogV2hlZWxFdmVudCB8IFRvdWNoRXZlbnQpID0+IHZvaWQ7XG4gIHJlYWRvbmx5IG9uVG9wQXJyaXZlPzogKGV2ZW50OiBXaGVlbEV2ZW50IHwgVG91Y2hFdmVudCkgPT4gdm9pZDtcbiAgcmVhZG9ubHkgb25Ub3BMZWF2ZT86IChldmVudDogV2hlZWxFdmVudCB8IFRvdWNoRXZlbnQpID0+IHZvaWQ7XG59XG5cbmNvbnN0IGJsdXJTZWxlY3RJbnB1dCA9ICgpID0+XG4gIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgJiYgKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpLmJsdXIoKTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gU2Nyb2xsTWFuYWdlcih7XG4gIGNoaWxkcmVuLFxuICBsb2NrRW5hYmxlZCxcbiAgY2FwdHVyZUVuYWJsZWQgPSB0cnVlLFxuICBvbkJvdHRvbUFycml2ZSxcbiAgb25Cb3R0b21MZWF2ZSxcbiAgb25Ub3BBcnJpdmUsXG4gIG9uVG9wTGVhdmUsXG59OiBQcm9wcykge1xuICBjb25zdCBzZXRTY3JvbGxDYXB0dXJlVGFyZ2V0ID0gdXNlU2Nyb2xsQ2FwdHVyZSh7XG4gICAgaXNFbmFibGVkOiBjYXB0dXJlRW5hYmxlZCxcbiAgICBvbkJvdHRvbUFycml2ZSxcbiAgICBvbkJvdHRvbUxlYXZlLFxuICAgIG9uVG9wQXJyaXZlLFxuICAgIG9uVG9wTGVhdmUsXG4gIH0pO1xuICBjb25zdCBzZXRTY3JvbGxMb2NrVGFyZ2V0ID0gdXNlU2Nyb2xsTG9jayh7IGlzRW5hYmxlZDogbG9ja0VuYWJsZWQgfSk7XG5cbiAgY29uc3QgdGFyZ2V0UmVmOiBSZWZDYWxsYmFjazxIVE1MRWxlbWVudD4gPSAoZWxlbWVudCkgPT4ge1xuICAgIHNldFNjcm9sbENhcHR1cmVUYXJnZXQoZWxlbWVudCk7XG4gICAgc2V0U2Nyb2xsTG9ja1RhcmdldChlbGVtZW50KTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxGcmFnbWVudD5cbiAgICAgIHtsb2NrRW5hYmxlZCAmJiAoXG4gICAgICAgIDxkaXZcbiAgICAgICAgICBvbkNsaWNrPXtibHVyU2VsZWN0SW5wdXR9XG4gICAgICAgICAgY3NzPXt7IHBvc2l0aW9uOiAnZml4ZWQnLCBsZWZ0OiAwLCBib3R0b206IDAsIHJpZ2h0OiAwLCB0b3A6IDAgfX1cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgICB7Y2hpbGRyZW4odGFyZ2V0UmVmKX1cbiAgICA8L0ZyYWdtZW50PlxuICApO1xufVxuIl19 */\",\n  toString: _EMOTION_STRINGIFIED_CSS_ERROR__$1\n};\nfunction ScrollManager(_ref) {\n  var children = _ref.children,\n    lockEnabled = _ref.lockEnabled,\n    _ref$captureEnabled = _ref.captureEnabled,\n    captureEnabled = _ref$captureEnabled === void 0 ? true : _ref$captureEnabled,\n    onBottomArrive = _ref.onBottomArrive,\n    onBottomLeave = _ref.onBottomLeave,\n    onTopArrive = _ref.onTopArrive,\n    onTopLeave = _ref.onTopLeave;\n  var setScrollCaptureTarget = useScrollCapture({\n    isEnabled: captureEnabled,\n    onBottomArrive: onBottomArrive,\n    onBottomLeave: onBottomLeave,\n    onTopArrive: onTopArrive,\n    onTopLeave: onTopLeave\n  });\n  var setScrollLockTarget = useScrollLock({\n    isEnabled: lockEnabled\n  });\n  var targetRef = function targetRef(element) {\n    setScrollCaptureTarget(element);\n    setScrollLockTarget(element);\n  };\n  return jsx(Fragment, null, lockEnabled && jsx(\"div\", {\n    onClick: blurSelectInput,\n    css: _ref2$1\n  }), children(targetRef));\n}\n\nfunction _EMOTION_STRINGIFIED_CSS_ERROR__() { return \"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\"; }\nvar _ref2 = process.env.NODE_ENV === \"production\" ? {\n  name: \"1a0ro4n-requiredInput\",\n  styles: \"label:requiredInput;opacity:0;pointer-events:none;position:absolute;bottom:0;left:0;right:0;width:100%\"\n} : {\n  name: \"5kkxb2-requiredInput-RequiredInput\",\n  styles: \"label:requiredInput;opacity:0;pointer-events:none;position:absolute;bottom:0;left:0;right:0;width:100%;label:RequiredInput;\",\n  map: \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlJlcXVpcmVkSW5wdXQudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWNJIiwiZmlsZSI6IlJlcXVpcmVkSW5wdXQudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiLyoqIEBqc3gganN4ICovXG5pbXBvcnQgeyBGb2N1c0V2ZW50SGFuZGxlciwgRnVuY3Rpb25Db21wb25lbnQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBqc3ggfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5cbmNvbnN0IFJlcXVpcmVkSW5wdXQ6IEZ1bmN0aW9uQ29tcG9uZW50PHtcbiAgcmVhZG9ubHkgbmFtZT86IHN0cmluZztcbiAgcmVhZG9ubHkgb25Gb2N1czogRm9jdXNFdmVudEhhbmRsZXI8SFRNTElucHV0RWxlbWVudD47XG59PiA9ICh7IG5hbWUsIG9uRm9jdXMgfSkgPT4gKFxuICA8aW5wdXRcbiAgICByZXF1aXJlZFxuICAgIG5hbWU9e25hbWV9XG4gICAgdGFiSW5kZXg9ey0xfVxuICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgb25Gb2N1cz17b25Gb2N1c31cbiAgICBjc3M9e3tcbiAgICAgIGxhYmVsOiAncmVxdWlyZWRJbnB1dCcsXG4gICAgICBvcGFjaXR5OiAwLFxuICAgICAgcG9pbnRlckV2ZW50czogJ25vbmUnLFxuICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICBib3R0b206IDAsXG4gICAgICBsZWZ0OiAwLFxuICAgICAgcmlnaHQ6IDAsXG4gICAgICB3aWR0aDogJzEwMCUnLFxuICAgIH19XG4gICAgLy8gUHJldmVudCBgU3dpdGNoaW5nIGZyb20gdW5jb250cm9sbGVkIHRvIGNvbnRyb2xsZWRgIGVycm9yXG4gICAgdmFsdWU9XCJcIlxuICAgIG9uQ2hhbmdlPXsoKSA9PiB7fX1cbiAgLz5cbik7XG5cbmV4cG9ydCBkZWZhdWx0IFJlcXVpcmVkSW5wdXQ7XG4iXX0= */\",\n  toString: _EMOTION_STRINGIFIED_CSS_ERROR__\n};\nvar RequiredInput = function RequiredInput(_ref) {\n  var name = _ref.name,\n    onFocus = _ref.onFocus;\n  return jsx(\"input\", {\n    required: true,\n    name: name,\n    tabIndex: -1,\n    \"aria-hidden\": \"true\",\n    onFocus: onFocus,\n    css: _ref2\n    // Prevent `Switching from uncontrolled to controlled` error\n    ,\n    value: \"\",\n    onChange: function onChange() {}\n  });\n};\nvar RequiredInput$1 = RequiredInput;\n\nvar formatGroupLabel = function formatGroupLabel(group) {\n  return group.label;\n};\nvar getOptionLabel$1 = function getOptionLabel(option) {\n  return option.label;\n};\nvar getOptionValue$1 = function getOptionValue(option) {\n  return option.value;\n};\nvar isOptionDisabled = function isOptionDisabled(option) {\n  return !!option.isDisabled;\n};\n\nvar defaultStyles = {\n  clearIndicator: clearIndicatorCSS,\n  container: containerCSS,\n  control: css$1,\n  dropdownIndicator: dropdownIndicatorCSS,\n  group: groupCSS,\n  groupHeading: groupHeadingCSS,\n  indicatorsContainer: indicatorsContainerCSS,\n  indicatorSeparator: indicatorSeparatorCSS,\n  input: inputCSS,\n  loadingIndicator: loadingIndicatorCSS,\n  loadingMessage: loadingMessageCSS,\n  menu: menuCSS,\n  menuList: menuListCSS,\n  menuPortal: menuPortalCSS,\n  multiValue: multiValueCSS,\n  multiValueLabel: multiValueLabelCSS,\n  multiValueRemove: multiValueRemoveCSS,\n  noOptionsMessage: noOptionsMessageCSS,\n  option: optionCSS,\n  placeholder: placeholderCSS,\n  singleValue: css$2,\n  valueContainer: valueContainerCSS\n};\n// Merge Utility\n// Allows consumers to extend a base Select with additional styles\n\nfunction mergeStyles(source) {\n  var target = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  // initialize with source styles\n  var styles = _objectSpread({}, source);\n\n  // massage in target styles\n  Object.keys(target).forEach(function (keyAsString) {\n    var key = keyAsString;\n    if (source[key]) {\n      styles[key] = function (rsCss, props) {\n        return target[key](source[key](rsCss, props), props);\n      };\n    } else {\n      styles[key] = target[key];\n    }\n  });\n  return styles;\n}\n\nvar colors = {\n  primary: '#2684FF',\n  primary75: '#4C9AFF',\n  primary50: '#B2D4FF',\n  primary25: '#DEEBFF',\n  danger: '#DE350B',\n  dangerLight: '#FFBDAD',\n  neutral0: 'hsl(0, 0%, 100%)',\n  neutral5: 'hsl(0, 0%, 95%)',\n  neutral10: 'hsl(0, 0%, 90%)',\n  neutral20: 'hsl(0, 0%, 80%)',\n  neutral30: 'hsl(0, 0%, 70%)',\n  neutral40: 'hsl(0, 0%, 60%)',\n  neutral50: 'hsl(0, 0%, 50%)',\n  neutral60: 'hsl(0, 0%, 40%)',\n  neutral70: 'hsl(0, 0%, 30%)',\n  neutral80: 'hsl(0, 0%, 20%)',\n  neutral90: 'hsl(0, 0%, 10%)'\n};\nvar borderRadius = 4;\n// Used to calculate consistent margin/padding on elements\nvar baseUnit = 4;\n// The minimum height of the control\nvar controlHeight = 38;\n// The amount of space between the control and menu */\nvar menuGutter = baseUnit * 2;\nvar spacing = {\n  baseUnit: baseUnit,\n  controlHeight: controlHeight,\n  menuGutter: menuGutter\n};\nvar defaultTheme = {\n  borderRadius: borderRadius,\n  colors: colors,\n  spacing: spacing\n};\n\nvar defaultProps = {\n  'aria-live': 'polite',\n  backspaceRemovesValue: true,\n  blurInputOnSelect: isTouchCapable(),\n  captureMenuScroll: !isTouchCapable(),\n  classNames: {},\n  closeMenuOnSelect: true,\n  closeMenuOnScroll: false,\n  components: {},\n  controlShouldRenderValue: true,\n  escapeClearsValue: false,\n  filterOption: createFilter(),\n  formatGroupLabel: formatGroupLabel,\n  getOptionLabel: getOptionLabel$1,\n  getOptionValue: getOptionValue$1,\n  isDisabled: false,\n  isLoading: false,\n  isMulti: false,\n  isRtl: false,\n  isSearchable: true,\n  isOptionDisabled: isOptionDisabled,\n  loadingMessage: function loadingMessage() {\n    return 'Loading...';\n  },\n  maxMenuHeight: 300,\n  minMenuHeight: 140,\n  menuIsOpen: false,\n  menuPlacement: 'bottom',\n  menuPosition: 'absolute',\n  menuShouldBlockScroll: false,\n  menuShouldScrollIntoView: !isMobileDevice(),\n  noOptionsMessage: function noOptionsMessage() {\n    return 'No options';\n  },\n  openMenuOnFocus: false,\n  openMenuOnClick: true,\n  options: [],\n  pageSize: 5,\n  placeholder: 'Select...',\n  screenReaderStatus: function screenReaderStatus(_ref) {\n    var count = _ref.count;\n    return \"\".concat(count, \" result\").concat(count !== 1 ? 's' : '', \" available\");\n  },\n  styles: {},\n  tabIndex: 0,\n  tabSelectsValue: true,\n  unstyled: false\n};\nfunction toCategorizedOption(props, option, selectValue, index) {\n  var isDisabled = _isOptionDisabled(props, option, selectValue);\n  var isSelected = _isOptionSelected(props, option, selectValue);\n  var label = getOptionLabel(props, option);\n  var value = getOptionValue(props, option);\n  return {\n    type: 'option',\n    data: option,\n    isDisabled: isDisabled,\n    isSelected: isSelected,\n    label: label,\n    value: value,\n    index: index\n  };\n}\nfunction buildCategorizedOptions(props, selectValue) {\n  return props.options.map(function (groupOrOption, groupOrOptionIndex) {\n    if ('options' in groupOrOption) {\n      var categorizedOptions = groupOrOption.options.map(function (option, optionIndex) {\n        return toCategorizedOption(props, option, selectValue, optionIndex);\n      }).filter(function (categorizedOption) {\n        return isFocusable(props, categorizedOption);\n      });\n      return categorizedOptions.length > 0 ? {\n        type: 'group',\n        data: groupOrOption,\n        options: categorizedOptions,\n        index: groupOrOptionIndex\n      } : undefined;\n    }\n    var categorizedOption = toCategorizedOption(props, groupOrOption, selectValue, groupOrOptionIndex);\n    return isFocusable(props, categorizedOption) ? categorizedOption : undefined;\n  }).filter(notNullish);\n}\nfunction buildFocusableOptionsFromCategorizedOptions(categorizedOptions) {\n  return categorizedOptions.reduce(function (optionsAccumulator, categorizedOption) {\n    if (categorizedOption.type === 'group') {\n      optionsAccumulator.push.apply(optionsAccumulator, _toConsumableArray(categorizedOption.options.map(function (option) {\n        return option.data;\n      })));\n    } else {\n      optionsAccumulator.push(categorizedOption.data);\n    }\n    return optionsAccumulator;\n  }, []);\n}\nfunction buildFocusableOptions(props, selectValue) {\n  return buildFocusableOptionsFromCategorizedOptions(buildCategorizedOptions(props, selectValue));\n}\nfunction isFocusable(props, categorizedOption) {\n  var _props$inputValue = props.inputValue,\n    inputValue = _props$inputValue === void 0 ? '' : _props$inputValue;\n  var data = categorizedOption.data,\n    isSelected = categorizedOption.isSelected,\n    label = categorizedOption.label,\n    value = categorizedOption.value;\n  return (!shouldHideSelectedOptions(props) || !isSelected) && _filterOption(props, {\n    label: label,\n    value: value,\n    data: data\n  }, inputValue);\n}\nfunction getNextFocusedValue(state, nextSelectValue) {\n  var focusedValue = state.focusedValue,\n    lastSelectValue = state.selectValue;\n  var lastFocusedIndex = lastSelectValue.indexOf(focusedValue);\n  if (lastFocusedIndex > -1) {\n    var nextFocusedIndex = nextSelectValue.indexOf(focusedValue);\n    if (nextFocusedIndex > -1) {\n      // the focused value is still in the selectValue, return it\n      return focusedValue;\n    } else if (lastFocusedIndex < nextSelectValue.length) {\n      // the focusedValue is not present in the next selectValue array by\n      // reference, so return the new value at the same index\n      return nextSelectValue[lastFocusedIndex];\n    }\n  }\n  return null;\n}\nfunction getNextFocusedOption(state, options) {\n  var lastFocusedOption = state.focusedOption;\n  return lastFocusedOption && options.indexOf(lastFocusedOption) > -1 ? lastFocusedOption : options[0];\n}\nvar getOptionLabel = function getOptionLabel(props, data) {\n  return props.getOptionLabel(data);\n};\nvar getOptionValue = function getOptionValue(props, data) {\n  return props.getOptionValue(data);\n};\nfunction _isOptionDisabled(props, option, selectValue) {\n  return typeof props.isOptionDisabled === 'function' ? props.isOptionDisabled(option, selectValue) : false;\n}\nfunction _isOptionSelected(props, option, selectValue) {\n  if (selectValue.indexOf(option) > -1) return true;\n  if (typeof props.isOptionSelected === 'function') {\n    return props.isOptionSelected(option, selectValue);\n  }\n  var candidate = getOptionValue(props, option);\n  return selectValue.some(function (i) {\n    return getOptionValue(props, i) === candidate;\n  });\n}\nfunction _filterOption(props, option, inputValue) {\n  return props.filterOption ? props.filterOption(option, inputValue) : true;\n}\nvar shouldHideSelectedOptions = function shouldHideSelectedOptions(props) {\n  var hideSelectedOptions = props.hideSelectedOptions,\n    isMulti = props.isMulti;\n  if (hideSelectedOptions === undefined) return isMulti;\n  return hideSelectedOptions;\n};\nvar instanceId = 1;\nvar Select = /*#__PURE__*/function (_Component) {\n  _inherits(Select, _Component);\n  var _super = _createSuper(Select);\n  // Misc. Instance Properties\n  // ------------------------------\n\n  // TODO\n\n  // Refs\n  // ------------------------------\n\n  // Lifecycle\n  // ------------------------------\n\n  function Select(_props) {\n    var _this;\n    _classCallCheck(this, Select);\n    _this = _super.call(this, _props);\n    _this.state = {\n      ariaSelection: null,\n      focusedOption: null,\n      focusedValue: null,\n      inputIsHidden: false,\n      isFocused: false,\n      selectValue: [],\n      clearFocusValueOnUpdate: false,\n      prevWasFocused: false,\n      inputIsHiddenAfterUpdate: undefined,\n      prevProps: undefined\n    };\n    _this.blockOptionHover = false;\n    _this.isComposing = false;\n    _this.commonProps = void 0;\n    _this.initialTouchX = 0;\n    _this.initialTouchY = 0;\n    _this.instancePrefix = '';\n    _this.openAfterFocus = false;\n    _this.scrollToFocusedOptionOnUpdate = false;\n    _this.userIsDragging = void 0;\n    _this.controlRef = null;\n    _this.getControlRef = function (ref) {\n      _this.controlRef = ref;\n    };\n    _this.focusedOptionRef = null;\n    _this.getFocusedOptionRef = function (ref) {\n      _this.focusedOptionRef = ref;\n    };\n    _this.menuListRef = null;\n    _this.getMenuListRef = function (ref) {\n      _this.menuListRef = ref;\n    };\n    _this.inputRef = null;\n    _this.getInputRef = function (ref) {\n      _this.inputRef = ref;\n    };\n    _this.focus = _this.focusInput;\n    _this.blur = _this.blurInput;\n    _this.onChange = function (newValue, actionMeta) {\n      var _this$props = _this.props,\n        onChange = _this$props.onChange,\n        name = _this$props.name;\n      actionMeta.name = name;\n      _this.ariaOnChange(newValue, actionMeta);\n      onChange(newValue, actionMeta);\n    };\n    _this.setValue = function (newValue, action, option) {\n      var _this$props2 = _this.props,\n        closeMenuOnSelect = _this$props2.closeMenuOnSelect,\n        isMulti = _this$props2.isMulti,\n        inputValue = _this$props2.inputValue;\n      _this.onInputChange('', {\n        action: 'set-value',\n        prevInputValue: inputValue\n      });\n      if (closeMenuOnSelect) {\n        _this.setState({\n          inputIsHiddenAfterUpdate: !isMulti\n        });\n        _this.onMenuClose();\n      }\n      // when the select value should change, we should reset focusedValue\n      _this.setState({\n        clearFocusValueOnUpdate: true\n      });\n      _this.onChange(newValue, {\n        action: action,\n        option: option\n      });\n    };\n    _this.selectOption = function (newValue) {\n      var _this$props3 = _this.props,\n        blurInputOnSelect = _this$props3.blurInputOnSelect,\n        isMulti = _this$props3.isMulti,\n        name = _this$props3.name;\n      var selectValue = _this.state.selectValue;\n      var deselected = isMulti && _this.isOptionSelected(newValue, selectValue);\n      var isDisabled = _this.isOptionDisabled(newValue, selectValue);\n      if (deselected) {\n        var candidate = _this.getOptionValue(newValue);\n        _this.setValue(multiValueAsValue(selectValue.filter(function (i) {\n          return _this.getOptionValue(i) !== candidate;\n        })), 'deselect-option', newValue);\n      } else if (!isDisabled) {\n        // Select option if option is not disabled\n        if (isMulti) {\n          _this.setValue(multiValueAsValue([].concat(_toConsumableArray(selectValue), [newValue])), 'select-option', newValue);\n        } else {\n          _this.setValue(singleValueAsValue(newValue), 'select-option');\n        }\n      } else {\n        _this.ariaOnChange(singleValueAsValue(newValue), {\n          action: 'select-option',\n          option: newValue,\n          name: name\n        });\n        return;\n      }\n      if (blurInputOnSelect) {\n        _this.blurInput();\n      }\n    };\n    _this.removeValue = function (removedValue) {\n      var isMulti = _this.props.isMulti;\n      var selectValue = _this.state.selectValue;\n      var candidate = _this.getOptionValue(removedValue);\n      var newValueArray = selectValue.filter(function (i) {\n        return _this.getOptionValue(i) !== candidate;\n      });\n      var newValue = valueTernary(isMulti, newValueArray, newValueArray[0] || null);\n      _this.onChange(newValue, {\n        action: 'remove-value',\n        removedValue: removedValue\n      });\n      _this.focusInput();\n    };\n    _this.clearValue = function () {\n      var selectValue = _this.state.selectValue;\n      _this.onChange(valueTernary(_this.props.isMulti, [], null), {\n        action: 'clear',\n        removedValues: selectValue\n      });\n    };\n    _this.popValue = function () {\n      var isMulti = _this.props.isMulti;\n      var selectValue = _this.state.selectValue;\n      var lastSelectedValue = selectValue[selectValue.length - 1];\n      var newValueArray = selectValue.slice(0, selectValue.length - 1);\n      var newValue = valueTernary(isMulti, newValueArray, newValueArray[0] || null);\n      _this.onChange(newValue, {\n        action: 'pop-value',\n        removedValue: lastSelectedValue\n      });\n    };\n    _this.getValue = function () {\n      return _this.state.selectValue;\n    };\n    _this.cx = function () {\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n      return classNames.apply(void 0, [_this.props.classNamePrefix].concat(args));\n    };\n    _this.getOptionLabel = function (data) {\n      return getOptionLabel(_this.props, data);\n    };\n    _this.getOptionValue = function (data) {\n      return getOptionValue(_this.props, data);\n    };\n    _this.getStyles = function (key, props) {\n      var unstyled = _this.props.unstyled;\n      var base = defaultStyles[key](props, unstyled);\n      base.boxSizing = 'border-box';\n      var custom = _this.props.styles[key];\n      return custom ? custom(base, props) : base;\n    };\n    _this.getClassNames = function (key, props) {\n      var _this$props$className, _this$props$className2;\n      return (_this$props$className = (_this$props$className2 = _this.props.classNames)[key]) === null || _this$props$className === void 0 ? void 0 : _this$props$className.call(_this$props$className2, props);\n    };\n    _this.getElementId = function (element) {\n      return \"\".concat(_this.instancePrefix, \"-\").concat(element);\n    };\n    _this.getComponents = function () {\n      return defaultComponents(_this.props);\n    };\n    _this.buildCategorizedOptions = function () {\n      return buildCategorizedOptions(_this.props, _this.state.selectValue);\n    };\n    _this.getCategorizedOptions = function () {\n      return _this.props.menuIsOpen ? _this.buildCategorizedOptions() : [];\n    };\n    _this.buildFocusableOptions = function () {\n      return buildFocusableOptionsFromCategorizedOptions(_this.buildCategorizedOptions());\n    };\n    _this.getFocusableOptions = function () {\n      return _this.props.menuIsOpen ? _this.buildFocusableOptions() : [];\n    };\n    _this.ariaOnChange = function (value, actionMeta) {\n      _this.setState({\n        ariaSelection: _objectSpread({\n          value: value\n        }, actionMeta)\n      });\n    };\n    _this.onMenuMouseDown = function (event) {\n      if (event.button !== 0) {\n        return;\n      }\n      event.stopPropagation();\n      event.preventDefault();\n      _this.focusInput();\n    };\n    _this.onMenuMouseMove = function (event) {\n      _this.blockOptionHover = false;\n    };\n    _this.onControlMouseDown = function (event) {\n      // Event captured by dropdown indicator\n      if (event.defaultPrevented) {\n        return;\n      }\n      var openMenuOnClick = _this.props.openMenuOnClick;\n      if (!_this.state.isFocused) {\n        if (openMenuOnClick) {\n          _this.openAfterFocus = true;\n        }\n        _this.focusInput();\n      } else if (!_this.props.menuIsOpen) {\n        if (openMenuOnClick) {\n          _this.openMenu('first');\n        }\n      } else {\n        if (event.target.tagName !== 'INPUT' && event.target.tagName !== 'TEXTAREA') {\n          _this.onMenuClose();\n        }\n      }\n      if (event.target.tagName !== 'INPUT' && event.target.tagName !== 'TEXTAREA') {\n        event.preventDefault();\n      }\n    };\n    _this.onDropdownIndicatorMouseDown = function (event) {\n      // ignore mouse events that weren't triggered by the primary button\n      if (event && event.type === 'mousedown' && event.button !== 0) {\n        return;\n      }\n      if (_this.props.isDisabled) return;\n      var _this$props4 = _this.props,\n        isMulti = _this$props4.isMulti,\n        menuIsOpen = _this$props4.menuIsOpen;\n      _this.focusInput();\n      if (menuIsOpen) {\n        _this.setState({\n          inputIsHiddenAfterUpdate: !isMulti\n        });\n        _this.onMenuClose();\n      } else {\n        _this.openMenu('first');\n      }\n      event.preventDefault();\n    };\n    _this.onClearIndicatorMouseDown = function (event) {\n      // ignore mouse events that weren't triggered by the primary button\n      if (event && event.type === 'mousedown' && event.button !== 0) {\n        return;\n      }\n      _this.clearValue();\n      event.preventDefault();\n      _this.openAfterFocus = false;\n      if (event.type === 'touchend') {\n        _this.focusInput();\n      } else {\n        setTimeout(function () {\n          return _this.focusInput();\n        });\n      }\n    };\n    _this.onScroll = function (event) {\n      if (typeof _this.props.closeMenuOnScroll === 'boolean') {\n        if (event.target instanceof HTMLElement && isDocumentElement(event.target)) {\n          _this.props.onMenuClose();\n        }\n      } else if (typeof _this.props.closeMenuOnScroll === 'function') {\n        if (_this.props.closeMenuOnScroll(event)) {\n          _this.props.onMenuClose();\n        }\n      }\n    };\n    _this.onCompositionStart = function () {\n      _this.isComposing = true;\n    };\n    _this.onCompositionEnd = function () {\n      _this.isComposing = false;\n    };\n    _this.onTouchStart = function (_ref2) {\n      var touches = _ref2.touches;\n      var touch = touches && touches.item(0);\n      if (!touch) {\n        return;\n      }\n      _this.initialTouchX = touch.clientX;\n      _this.initialTouchY = touch.clientY;\n      _this.userIsDragging = false;\n    };\n    _this.onTouchMove = function (_ref3) {\n      var touches = _ref3.touches;\n      var touch = touches && touches.item(0);\n      if (!touch) {\n        return;\n      }\n      var deltaX = Math.abs(touch.clientX - _this.initialTouchX);\n      var deltaY = Math.abs(touch.clientY - _this.initialTouchY);\n      var moveThreshold = 5;\n      _this.userIsDragging = deltaX > moveThreshold || deltaY > moveThreshold;\n    };\n    _this.onTouchEnd = function (event) {\n      if (_this.userIsDragging) return;\n\n      // close the menu if the user taps outside\n      // we're checking on event.target here instead of event.currentTarget, because we want to assert information\n      // on events on child elements, not the document (which we've attached this handler to).\n      if (_this.controlRef && !_this.controlRef.contains(event.target) && _this.menuListRef && !_this.menuListRef.contains(event.target)) {\n        _this.blurInput();\n      }\n\n      // reset move vars\n      _this.initialTouchX = 0;\n      _this.initialTouchY = 0;\n    };\n    _this.onControlTouchEnd = function (event) {\n      if (_this.userIsDragging) return;\n      _this.onControlMouseDown(event);\n    };\n    _this.onClearIndicatorTouchEnd = function (event) {\n      if (_this.userIsDragging) return;\n      _this.onClearIndicatorMouseDown(event);\n    };\n    _this.onDropdownIndicatorTouchEnd = function (event) {\n      if (_this.userIsDragging) return;\n      _this.onDropdownIndicatorMouseDown(event);\n    };\n    _this.handleInputChange = function (event) {\n      var prevInputValue = _this.props.inputValue;\n      var inputValue = event.currentTarget.value;\n      _this.setState({\n        inputIsHiddenAfterUpdate: false\n      });\n      _this.onInputChange(inputValue, {\n        action: 'input-change',\n        prevInputValue: prevInputValue\n      });\n      if (!_this.props.menuIsOpen) {\n        _this.onMenuOpen();\n      }\n    };\n    _this.onInputFocus = function (event) {\n      if (_this.props.onFocus) {\n        _this.props.onFocus(event);\n      }\n      _this.setState({\n        inputIsHiddenAfterUpdate: false,\n        isFocused: true\n      });\n      if (_this.openAfterFocus || _this.props.openMenuOnFocus) {\n        _this.openMenu('first');\n      }\n      _this.openAfterFocus = false;\n    };\n    _this.onInputBlur = function (event) {\n      var prevInputValue = _this.props.inputValue;\n      if (_this.menuListRef && _this.menuListRef.contains(document.activeElement)) {\n        _this.inputRef.focus();\n        return;\n      }\n      if (_this.props.onBlur) {\n        _this.props.onBlur(event);\n      }\n      _this.onInputChange('', {\n        action: 'input-blur',\n        prevInputValue: prevInputValue\n      });\n      _this.onMenuClose();\n      _this.setState({\n        focusedValue: null,\n        isFocused: false\n      });\n    };\n    _this.onOptionHover = function (focusedOption) {\n      if (_this.blockOptionHover || _this.state.focusedOption === focusedOption) {\n        return;\n      }\n      _this.setState({\n        focusedOption: focusedOption\n      });\n    };\n    _this.shouldHideSelectedOptions = function () {\n      return shouldHideSelectedOptions(_this.props);\n    };\n    _this.onValueInputFocus = function (e) {\n      e.preventDefault();\n      e.stopPropagation();\n      _this.focus();\n    };\n    _this.onKeyDown = function (event) {\n      var _this$props5 = _this.props,\n        isMulti = _this$props5.isMulti,\n        backspaceRemovesValue = _this$props5.backspaceRemovesValue,\n        escapeClearsValue = _this$props5.escapeClearsValue,\n        inputValue = _this$props5.inputValue,\n        isClearable = _this$props5.isClearable,\n        isDisabled = _this$props5.isDisabled,\n        menuIsOpen = _this$props5.menuIsOpen,\n        onKeyDown = _this$props5.onKeyDown,\n        tabSelectsValue = _this$props5.tabSelectsValue,\n        openMenuOnFocus = _this$props5.openMenuOnFocus;\n      var _this$state = _this.state,\n        focusedOption = _this$state.focusedOption,\n        focusedValue = _this$state.focusedValue,\n        selectValue = _this$state.selectValue;\n      if (isDisabled) return;\n      if (typeof onKeyDown === 'function') {\n        onKeyDown(event);\n        if (event.defaultPrevented) {\n          return;\n        }\n      }\n\n      // Block option hover events when the user has just pressed a key\n      _this.blockOptionHover = true;\n      switch (event.key) {\n        case 'ArrowLeft':\n          if (!isMulti || inputValue) return;\n          _this.focusValue('previous');\n          break;\n        case 'ArrowRight':\n          if (!isMulti || inputValue) return;\n          _this.focusValue('next');\n          break;\n        case 'Delete':\n        case 'Backspace':\n          if (inputValue) return;\n          if (focusedValue) {\n            _this.removeValue(focusedValue);\n          } else {\n            if (!backspaceRemovesValue) return;\n            if (isMulti) {\n              _this.popValue();\n            } else if (isClearable) {\n              _this.clearValue();\n            }\n          }\n          break;\n        case 'Tab':\n          if (_this.isComposing) return;\n          if (event.shiftKey || !menuIsOpen || !tabSelectsValue || !focusedOption ||\n          // don't capture the event if the menu opens on focus and the focused\n          // option is already selected; it breaks the flow of navigation\n          openMenuOnFocus && _this.isOptionSelected(focusedOption, selectValue)) {\n            return;\n          }\n          _this.selectOption(focusedOption);\n          break;\n        case 'Enter':\n          if (event.keyCode === 229) {\n            // ignore the keydown event from an Input Method Editor(IME)\n            // ref. https://www.w3.org/TR/uievents/#determine-keydown-keyup-keyCode\n            break;\n          }\n          if (menuIsOpen) {\n            if (!focusedOption) return;\n            if (_this.isComposing) return;\n            _this.selectOption(focusedOption);\n            break;\n          }\n          return;\n        case 'Escape':\n          if (menuIsOpen) {\n            _this.setState({\n              inputIsHiddenAfterUpdate: false\n            });\n            _this.onInputChange('', {\n              action: 'menu-close',\n              prevInputValue: inputValue\n            });\n            _this.onMenuClose();\n          } else if (isClearable && escapeClearsValue) {\n            _this.clearValue();\n          }\n          break;\n        case ' ':\n          // space\n          if (inputValue) {\n            return;\n          }\n          if (!menuIsOpen) {\n            _this.openMenu('first');\n            break;\n          }\n          if (!focusedOption) return;\n          _this.selectOption(focusedOption);\n          break;\n        case 'ArrowUp':\n          if (menuIsOpen) {\n            _this.focusOption('up');\n          } else {\n            _this.openMenu('last');\n          }\n          break;\n        case 'ArrowDown':\n          if (menuIsOpen) {\n            _this.focusOption('down');\n          } else {\n            _this.openMenu('first');\n          }\n          break;\n        case 'PageUp':\n          if (!menuIsOpen) return;\n          _this.focusOption('pageup');\n          break;\n        case 'PageDown':\n          if (!menuIsOpen) return;\n          _this.focusOption('pagedown');\n          break;\n        case 'Home':\n          if (!menuIsOpen) return;\n          _this.focusOption('first');\n          break;\n        case 'End':\n          if (!menuIsOpen) return;\n          _this.focusOption('last');\n          break;\n        default:\n          return;\n      }\n      event.preventDefault();\n    };\n    _this.instancePrefix = 'react-select-' + (_this.props.instanceId || ++instanceId);\n    _this.state.selectValue = cleanValue(_props.value);\n\n    // Set focusedOption if menuIsOpen is set on init (e.g. defaultMenuIsOpen)\n    if (_props.menuIsOpen && _this.state.selectValue.length) {\n      var focusableOptions = _this.buildFocusableOptions();\n      var optionIndex = focusableOptions.indexOf(_this.state.selectValue[0]);\n      _this.state.focusedOption = focusableOptions[optionIndex];\n    }\n    return _this;\n  }\n  _createClass(Select, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      this.startListeningComposition();\n      this.startListeningToTouch();\n      if (this.props.closeMenuOnScroll && document && document.addEventListener) {\n        // Listen to all scroll events, and filter them out inside of 'onScroll'\n        document.addEventListener('scroll', this.onScroll, true);\n      }\n      if (this.props.autoFocus) {\n        this.focusInput();\n      }\n\n      // Scroll focusedOption into view if menuIsOpen is set on mount (e.g. defaultMenuIsOpen)\n      if (this.props.menuIsOpen && this.state.focusedOption && this.menuListRef && this.focusedOptionRef) {\n        scrollIntoView(this.menuListRef, this.focusedOptionRef);\n      }\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate(prevProps) {\n      var _this$props6 = this.props,\n        isDisabled = _this$props6.isDisabled,\n        menuIsOpen = _this$props6.menuIsOpen;\n      var isFocused = this.state.isFocused;\n      if (\n      // ensure focus is restored correctly when the control becomes enabled\n      isFocused && !isDisabled && prevProps.isDisabled ||\n      // ensure focus is on the Input when the menu opens\n      isFocused && menuIsOpen && !prevProps.menuIsOpen) {\n        this.focusInput();\n      }\n      if (isFocused && isDisabled && !prevProps.isDisabled) {\n        // ensure select state gets blurred in case Select is programmatically disabled while focused\n        // eslint-disable-next-line react/no-did-update-set-state\n        this.setState({\n          isFocused: false\n        }, this.onMenuClose);\n      } else if (!isFocused && !isDisabled && prevProps.isDisabled && this.inputRef === document.activeElement) {\n        // ensure select state gets focused in case Select is programatically re-enabled while focused (Firefox)\n        // eslint-disable-next-line react/no-did-update-set-state\n        this.setState({\n          isFocused: true\n        });\n      }\n\n      // scroll the focused option into view if necessary\n      if (this.menuListRef && this.focusedOptionRef && this.scrollToFocusedOptionOnUpdate) {\n        scrollIntoView(this.menuListRef, this.focusedOptionRef);\n        this.scrollToFocusedOptionOnUpdate = false;\n      }\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      this.stopListeningComposition();\n      this.stopListeningToTouch();\n      document.removeEventListener('scroll', this.onScroll, true);\n    }\n\n    // ==============================\n    // Consumer Handlers\n    // ==============================\n  }, {\n    key: \"onMenuOpen\",\n    value: function onMenuOpen() {\n      this.props.onMenuOpen();\n    }\n  }, {\n    key: \"onMenuClose\",\n    value: function onMenuClose() {\n      this.onInputChange('', {\n        action: 'menu-close',\n        prevInputValue: this.props.inputValue\n      });\n      this.props.onMenuClose();\n    }\n  }, {\n    key: \"onInputChange\",\n    value: function onInputChange(newValue, actionMeta) {\n      this.props.onInputChange(newValue, actionMeta);\n    }\n\n    // ==============================\n    // Methods\n    // ==============================\n  }, {\n    key: \"focusInput\",\n    value: function focusInput() {\n      if (!this.inputRef) return;\n      this.inputRef.focus();\n    }\n  }, {\n    key: \"blurInput\",\n    value: function blurInput() {\n      if (!this.inputRef) return;\n      this.inputRef.blur();\n    }\n\n    // aliased for consumers\n  }, {\n    key: \"openMenu\",\n    value: function openMenu(focusOption) {\n      var _this2 = this;\n      var _this$state2 = this.state,\n        selectValue = _this$state2.selectValue,\n        isFocused = _this$state2.isFocused;\n      var focusableOptions = this.buildFocusableOptions();\n      var openAtIndex = focusOption === 'first' ? 0 : focusableOptions.length - 1;\n      if (!this.props.isMulti) {\n        var selectedIndex = focusableOptions.indexOf(selectValue[0]);\n        if (selectedIndex > -1) {\n          openAtIndex = selectedIndex;\n        }\n      }\n\n      // only scroll if the menu isn't already open\n      this.scrollToFocusedOptionOnUpdate = !(isFocused && this.menuListRef);\n      this.setState({\n        inputIsHiddenAfterUpdate: false,\n        focusedValue: null,\n        focusedOption: focusableOptions[openAtIndex]\n      }, function () {\n        return _this2.onMenuOpen();\n      });\n    }\n  }, {\n    key: \"focusValue\",\n    value: function focusValue(direction) {\n      var _this$state3 = this.state,\n        selectValue = _this$state3.selectValue,\n        focusedValue = _this$state3.focusedValue;\n\n      // Only multiselects support value focusing\n      if (!this.props.isMulti) return;\n      this.setState({\n        focusedOption: null\n      });\n      var focusedIndex = selectValue.indexOf(focusedValue);\n      if (!focusedValue) {\n        focusedIndex = -1;\n      }\n      var lastIndex = selectValue.length - 1;\n      var nextFocus = -1;\n      if (!selectValue.length) return;\n      switch (direction) {\n        case 'previous':\n          if (focusedIndex === 0) {\n            // don't cycle from the start to the end\n            nextFocus = 0;\n          } else if (focusedIndex === -1) {\n            // if nothing is focused, focus the last value first\n            nextFocus = lastIndex;\n          } else {\n            nextFocus = focusedIndex - 1;\n          }\n          break;\n        case 'next':\n          if (focusedIndex > -1 && focusedIndex < lastIndex) {\n            nextFocus = focusedIndex + 1;\n          }\n          break;\n      }\n      this.setState({\n        inputIsHidden: nextFocus !== -1,\n        focusedValue: selectValue[nextFocus]\n      });\n    }\n  }, {\n    key: \"focusOption\",\n    value: function focusOption() {\n      var direction = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'first';\n      var pageSize = this.props.pageSize;\n      var focusedOption = this.state.focusedOption;\n      var options = this.getFocusableOptions();\n      if (!options.length) return;\n      var nextFocus = 0; // handles 'first'\n      var focusedIndex = options.indexOf(focusedOption);\n      if (!focusedOption) {\n        focusedIndex = -1;\n      }\n      if (direction === 'up') {\n        nextFocus = focusedIndex > 0 ? focusedIndex - 1 : options.length - 1;\n      } else if (direction === 'down') {\n        nextFocus = (focusedIndex + 1) % options.length;\n      } else if (direction === 'pageup') {\n        nextFocus = focusedIndex - pageSize;\n        if (nextFocus < 0) nextFocus = 0;\n      } else if (direction === 'pagedown') {\n        nextFocus = focusedIndex + pageSize;\n        if (nextFocus > options.length - 1) nextFocus = options.length - 1;\n      } else if (direction === 'last') {\n        nextFocus = options.length - 1;\n      }\n      this.scrollToFocusedOptionOnUpdate = true;\n      this.setState({\n        focusedOption: options[nextFocus],\n        focusedValue: null\n      });\n    }\n  }, {\n    key: \"getTheme\",\n    value:\n    // ==============================\n    // Getters\n    // ==============================\n\n    function getTheme() {\n      // Use the default theme if there are no customisations.\n      if (!this.props.theme) {\n        return defaultTheme;\n      }\n      // If the theme prop is a function, assume the function\n      // knows how to merge the passed-in default theme with\n      // its own modifications.\n      if (typeof this.props.theme === 'function') {\n        return this.props.theme(defaultTheme);\n      }\n      // Otherwise, if a plain theme object was passed in,\n      // overlay it with the default theme.\n      return _objectSpread(_objectSpread({}, defaultTheme), this.props.theme);\n    }\n  }, {\n    key: \"getCommonProps\",\n    value: function getCommonProps() {\n      var clearValue = this.clearValue,\n        cx = this.cx,\n        getStyles = this.getStyles,\n        getClassNames = this.getClassNames,\n        getValue = this.getValue,\n        selectOption = this.selectOption,\n        setValue = this.setValue,\n        props = this.props;\n      var isMulti = props.isMulti,\n        isRtl = props.isRtl,\n        options = props.options;\n      var hasValue = this.hasValue();\n      return {\n        clearValue: clearValue,\n        cx: cx,\n        getStyles: getStyles,\n        getClassNames: getClassNames,\n        getValue: getValue,\n        hasValue: hasValue,\n        isMulti: isMulti,\n        isRtl: isRtl,\n        options: options,\n        selectOption: selectOption,\n        selectProps: props,\n        setValue: setValue,\n        theme: this.getTheme()\n      };\n    }\n  }, {\n    key: \"hasValue\",\n    value: function hasValue() {\n      var selectValue = this.state.selectValue;\n      return selectValue.length > 0;\n    }\n  }, {\n    key: \"hasOptions\",\n    value: function hasOptions() {\n      return !!this.getFocusableOptions().length;\n    }\n  }, {\n    key: \"isClearable\",\n    value: function isClearable() {\n      var _this$props7 = this.props,\n        isClearable = _this$props7.isClearable,\n        isMulti = _this$props7.isMulti;\n\n      // single select, by default, IS NOT clearable\n      // multi select, by default, IS clearable\n      if (isClearable === undefined) return isMulti;\n      return isClearable;\n    }\n  }, {\n    key: \"isOptionDisabled\",\n    value: function isOptionDisabled(option, selectValue) {\n      return _isOptionDisabled(this.props, option, selectValue);\n    }\n  }, {\n    key: \"isOptionSelected\",\n    value: function isOptionSelected(option, selectValue) {\n      return _isOptionSelected(this.props, option, selectValue);\n    }\n  }, {\n    key: \"filterOption\",\n    value: function filterOption(option, inputValue) {\n      return _filterOption(this.props, option, inputValue);\n    }\n  }, {\n    key: \"formatOptionLabel\",\n    value: function formatOptionLabel(data, context) {\n      if (typeof this.props.formatOptionLabel === 'function') {\n        var _inputValue = this.props.inputValue;\n        var _selectValue = this.state.selectValue;\n        return this.props.formatOptionLabel(data, {\n          context: context,\n          inputValue: _inputValue,\n          selectValue: _selectValue\n        });\n      } else {\n        return this.getOptionLabel(data);\n      }\n    }\n  }, {\n    key: \"formatGroupLabel\",\n    value: function formatGroupLabel(data) {\n      return this.props.formatGroupLabel(data);\n    }\n\n    // ==============================\n    // Mouse Handlers\n    // ==============================\n  }, {\n    key: \"startListeningComposition\",\n    value:\n    // ==============================\n    // Composition Handlers\n    // ==============================\n\n    function startListeningComposition() {\n      if (document && document.addEventListener) {\n        document.addEventListener('compositionstart', this.onCompositionStart, false);\n        document.addEventListener('compositionend', this.onCompositionEnd, false);\n      }\n    }\n  }, {\n    key: \"stopListeningComposition\",\n    value: function stopListeningComposition() {\n      if (document && document.removeEventListener) {\n        document.removeEventListener('compositionstart', this.onCompositionStart);\n        document.removeEventListener('compositionend', this.onCompositionEnd);\n      }\n    }\n  }, {\n    key: \"startListeningToTouch\",\n    value:\n    // ==============================\n    // Touch Handlers\n    // ==============================\n\n    function startListeningToTouch() {\n      if (document && document.addEventListener) {\n        document.addEventListener('touchstart', this.onTouchStart, false);\n        document.addEventListener('touchmove', this.onTouchMove, false);\n        document.addEventListener('touchend', this.onTouchEnd, false);\n      }\n    }\n  }, {\n    key: \"stopListeningToTouch\",\n    value: function stopListeningToTouch() {\n      if (document && document.removeEventListener) {\n        document.removeEventListener('touchstart', this.onTouchStart);\n        document.removeEventListener('touchmove', this.onTouchMove);\n        document.removeEventListener('touchend', this.onTouchEnd);\n      }\n    }\n  }, {\n    key: \"renderInput\",\n    value:\n    // ==============================\n    // Renderers\n    // ==============================\n    function renderInput() {\n      var _this$props8 = this.props,\n        isDisabled = _this$props8.isDisabled,\n        isSearchable = _this$props8.isSearchable,\n        inputId = _this$props8.inputId,\n        inputValue = _this$props8.inputValue,\n        tabIndex = _this$props8.tabIndex,\n        form = _this$props8.form,\n        menuIsOpen = _this$props8.menuIsOpen,\n        required = _this$props8.required;\n      var _this$getComponents = this.getComponents(),\n        Input = _this$getComponents.Input;\n      var _this$state4 = this.state,\n        inputIsHidden = _this$state4.inputIsHidden,\n        ariaSelection = _this$state4.ariaSelection;\n      var commonProps = this.commonProps;\n      var id = inputId || this.getElementId('input');\n\n      // aria attributes makes the JSX \"noisy\", separated for clarity\n      var ariaAttributes = _objectSpread(_objectSpread(_objectSpread({\n        'aria-autocomplete': 'list',\n        'aria-expanded': menuIsOpen,\n        'aria-haspopup': true,\n        'aria-errormessage': this.props['aria-errormessage'],\n        'aria-invalid': this.props['aria-invalid'],\n        'aria-label': this.props['aria-label'],\n        'aria-labelledby': this.props['aria-labelledby'],\n        'aria-required': required,\n        role: 'combobox'\n      }, menuIsOpen && {\n        'aria-controls': this.getElementId('listbox'),\n        'aria-owns': this.getElementId('listbox')\n      }), !isSearchable && {\n        'aria-readonly': true\n      }), this.hasValue() ? (ariaSelection === null || ariaSelection === void 0 ? void 0 : ariaSelection.action) === 'initial-input-focus' && {\n        'aria-describedby': this.getElementId('live-region')\n      } : {\n        'aria-describedby': this.getElementId('placeholder')\n      });\n      if (!isSearchable) {\n        // use a dummy input to maintain focus/blur functionality\n        return /*#__PURE__*/React.createElement(DummyInput, _extends({\n          id: id,\n          innerRef: this.getInputRef,\n          onBlur: this.onInputBlur,\n          onChange: noop,\n          onFocus: this.onInputFocus,\n          disabled: isDisabled,\n          tabIndex: tabIndex,\n          inputMode: \"none\",\n          form: form,\n          value: \"\"\n        }, ariaAttributes));\n      }\n      return /*#__PURE__*/React.createElement(Input, _extends({}, commonProps, {\n        autoCapitalize: \"none\",\n        autoComplete: \"off\",\n        autoCorrect: \"off\",\n        id: id,\n        innerRef: this.getInputRef,\n        isDisabled: isDisabled,\n        isHidden: inputIsHidden,\n        onBlur: this.onInputBlur,\n        onChange: this.handleInputChange,\n        onFocus: this.onInputFocus,\n        spellCheck: \"false\",\n        tabIndex: tabIndex,\n        form: form,\n        type: \"text\",\n        value: inputValue\n      }, ariaAttributes));\n    }\n  }, {\n    key: \"renderPlaceholderOrValue\",\n    value: function renderPlaceholderOrValue() {\n      var _this3 = this;\n      var _this$getComponents2 = this.getComponents(),\n        MultiValue = _this$getComponents2.MultiValue,\n        MultiValueContainer = _this$getComponents2.MultiValueContainer,\n        MultiValueLabel = _this$getComponents2.MultiValueLabel,\n        MultiValueRemove = _this$getComponents2.MultiValueRemove,\n        SingleValue = _this$getComponents2.SingleValue,\n        Placeholder = _this$getComponents2.Placeholder;\n      var commonProps = this.commonProps;\n      var _this$props9 = this.props,\n        controlShouldRenderValue = _this$props9.controlShouldRenderValue,\n        isDisabled = _this$props9.isDisabled,\n        isMulti = _this$props9.isMulti,\n        inputValue = _this$props9.inputValue,\n        placeholder = _this$props9.placeholder;\n      var _this$state5 = this.state,\n        selectValue = _this$state5.selectValue,\n        focusedValue = _this$state5.focusedValue,\n        isFocused = _this$state5.isFocused;\n      if (!this.hasValue() || !controlShouldRenderValue) {\n        return inputValue ? null : /*#__PURE__*/React.createElement(Placeholder, _extends({}, commonProps, {\n          key: \"placeholder\",\n          isDisabled: isDisabled,\n          isFocused: isFocused,\n          innerProps: {\n            id: this.getElementId('placeholder')\n          }\n        }), placeholder);\n      }\n      if (isMulti) {\n        return selectValue.map(function (opt, index) {\n          var isOptionFocused = opt === focusedValue;\n          var key = \"\".concat(_this3.getOptionLabel(opt), \"-\").concat(_this3.getOptionValue(opt));\n          return /*#__PURE__*/React.createElement(MultiValue, _extends({}, commonProps, {\n            components: {\n              Container: MultiValueContainer,\n              Label: MultiValueLabel,\n              Remove: MultiValueRemove\n            },\n            isFocused: isOptionFocused,\n            isDisabled: isDisabled,\n            key: key,\n            index: index,\n            removeProps: {\n              onClick: function onClick() {\n                return _this3.removeValue(opt);\n              },\n              onTouchEnd: function onTouchEnd() {\n                return _this3.removeValue(opt);\n              },\n              onMouseDown: function onMouseDown(e) {\n                e.preventDefault();\n              }\n            },\n            data: opt\n          }), _this3.formatOptionLabel(opt, 'value'));\n        });\n      }\n      if (inputValue) {\n        return null;\n      }\n      var singleValue = selectValue[0];\n      return /*#__PURE__*/React.createElement(SingleValue, _extends({}, commonProps, {\n        data: singleValue,\n        isDisabled: isDisabled\n      }), this.formatOptionLabel(singleValue, 'value'));\n    }\n  }, {\n    key: \"renderClearIndicator\",\n    value: function renderClearIndicator() {\n      var _this$getComponents3 = this.getComponents(),\n        ClearIndicator = _this$getComponents3.ClearIndicator;\n      var commonProps = this.commonProps;\n      var _this$props10 = this.props,\n        isDisabled = _this$props10.isDisabled,\n        isLoading = _this$props10.isLoading;\n      var isFocused = this.state.isFocused;\n      if (!this.isClearable() || !ClearIndicator || isDisabled || !this.hasValue() || isLoading) {\n        return null;\n      }\n      var innerProps = {\n        onMouseDown: this.onClearIndicatorMouseDown,\n        onTouchEnd: this.onClearIndicatorTouchEnd,\n        'aria-hidden': 'true'\n      };\n      return /*#__PURE__*/React.createElement(ClearIndicator, _extends({}, commonProps, {\n        innerProps: innerProps,\n        isFocused: isFocused\n      }));\n    }\n  }, {\n    key: \"renderLoadingIndicator\",\n    value: function renderLoadingIndicator() {\n      var _this$getComponents4 = this.getComponents(),\n        LoadingIndicator = _this$getComponents4.LoadingIndicator;\n      var commonProps = this.commonProps;\n      var _this$props11 = this.props,\n        isDisabled = _this$props11.isDisabled,\n        isLoading = _this$props11.isLoading;\n      var isFocused = this.state.isFocused;\n      if (!LoadingIndicator || !isLoading) return null;\n      var innerProps = {\n        'aria-hidden': 'true'\n      };\n      return /*#__PURE__*/React.createElement(LoadingIndicator, _extends({}, commonProps, {\n        innerProps: innerProps,\n        isDisabled: isDisabled,\n        isFocused: isFocused\n      }));\n    }\n  }, {\n    key: \"renderIndicatorSeparator\",\n    value: function renderIndicatorSeparator() {\n      var _this$getComponents5 = this.getComponents(),\n        DropdownIndicator = _this$getComponents5.DropdownIndicator,\n        IndicatorSeparator = _this$getComponents5.IndicatorSeparator;\n\n      // separator doesn't make sense without the dropdown indicator\n      if (!DropdownIndicator || !IndicatorSeparator) return null;\n      var commonProps = this.commonProps;\n      var isDisabled = this.props.isDisabled;\n      var isFocused = this.state.isFocused;\n      return /*#__PURE__*/React.createElement(IndicatorSeparator, _extends({}, commonProps, {\n        isDisabled: isDisabled,\n        isFocused: isFocused\n      }));\n    }\n  }, {\n    key: \"renderDropdownIndicator\",\n    value: function renderDropdownIndicator() {\n      var _this$getComponents6 = this.getComponents(),\n        DropdownIndicator = _this$getComponents6.DropdownIndicator;\n      if (!DropdownIndicator) return null;\n      var commonProps = this.commonProps;\n      var isDisabled = this.props.isDisabled;\n      var isFocused = this.state.isFocused;\n      var innerProps = {\n        onMouseDown: this.onDropdownIndicatorMouseDown,\n        onTouchEnd: this.onDropdownIndicatorTouchEnd,\n        'aria-hidden': 'true'\n      };\n      return /*#__PURE__*/React.createElement(DropdownIndicator, _extends({}, commonProps, {\n        innerProps: innerProps,\n        isDisabled: isDisabled,\n        isFocused: isFocused\n      }));\n    }\n  }, {\n    key: \"renderMenu\",\n    value: function renderMenu() {\n      var _this4 = this;\n      var _this$getComponents7 = this.getComponents(),\n        Group = _this$getComponents7.Group,\n        GroupHeading = _this$getComponents7.GroupHeading,\n        Menu = _this$getComponents7.Menu,\n        MenuList = _this$getComponents7.MenuList,\n        MenuPortal = _this$getComponents7.MenuPortal,\n        LoadingMessage = _this$getComponents7.LoadingMessage,\n        NoOptionsMessage = _this$getComponents7.NoOptionsMessage,\n        Option = _this$getComponents7.Option;\n      var commonProps = this.commonProps;\n      var focusedOption = this.state.focusedOption;\n      var _this$props12 = this.props,\n        captureMenuScroll = _this$props12.captureMenuScroll,\n        inputValue = _this$props12.inputValue,\n        isLoading = _this$props12.isLoading,\n        loadingMessage = _this$props12.loadingMessage,\n        minMenuHeight = _this$props12.minMenuHeight,\n        maxMenuHeight = _this$props12.maxMenuHeight,\n        menuIsOpen = _this$props12.menuIsOpen,\n        menuPlacement = _this$props12.menuPlacement,\n        menuPosition = _this$props12.menuPosition,\n        menuPortalTarget = _this$props12.menuPortalTarget,\n        menuShouldBlockScroll = _this$props12.menuShouldBlockScroll,\n        menuShouldScrollIntoView = _this$props12.menuShouldScrollIntoView,\n        noOptionsMessage = _this$props12.noOptionsMessage,\n        onMenuScrollToTop = _this$props12.onMenuScrollToTop,\n        onMenuScrollToBottom = _this$props12.onMenuScrollToBottom;\n      if (!menuIsOpen) return null;\n\n      // TODO: Internal Option Type here\n      var render = function render(props, id) {\n        var type = props.type,\n          data = props.data,\n          isDisabled = props.isDisabled,\n          isSelected = props.isSelected,\n          label = props.label,\n          value = props.value;\n        var isFocused = focusedOption === data;\n        var onHover = isDisabled ? undefined : function () {\n          return _this4.onOptionHover(data);\n        };\n        var onSelect = isDisabled ? undefined : function () {\n          return _this4.selectOption(data);\n        };\n        var optionId = \"\".concat(_this4.getElementId('option'), \"-\").concat(id);\n        var innerProps = {\n          id: optionId,\n          onClick: onSelect,\n          onMouseMove: onHover,\n          onMouseOver: onHover,\n          tabIndex: -1\n        };\n        return /*#__PURE__*/React.createElement(Option, _extends({}, commonProps, {\n          innerProps: innerProps,\n          data: data,\n          isDisabled: isDisabled,\n          isSelected: isSelected,\n          key: optionId,\n          label: label,\n          type: type,\n          value: value,\n          isFocused: isFocused,\n          innerRef: isFocused ? _this4.getFocusedOptionRef : undefined\n        }), _this4.formatOptionLabel(props.data, 'menu'));\n      };\n      var menuUI;\n      if (this.hasOptions()) {\n        menuUI = this.getCategorizedOptions().map(function (item) {\n          if (item.type === 'group') {\n            var _data = item.data,\n              options = item.options,\n              groupIndex = item.index;\n            var groupId = \"\".concat(_this4.getElementId('group'), \"-\").concat(groupIndex);\n            var headingId = \"\".concat(groupId, \"-heading\");\n            return /*#__PURE__*/React.createElement(Group, _extends({}, commonProps, {\n              key: groupId,\n              data: _data,\n              options: options,\n              Heading: GroupHeading,\n              headingProps: {\n                id: headingId,\n                data: item.data\n              },\n              label: _this4.formatGroupLabel(item.data)\n            }), item.options.map(function (option) {\n              return render(option, \"\".concat(groupIndex, \"-\").concat(option.index));\n            }));\n          } else if (item.type === 'option') {\n            return render(item, \"\".concat(item.index));\n          }\n        });\n      } else if (isLoading) {\n        var message = loadingMessage({\n          inputValue: inputValue\n        });\n        if (message === null) return null;\n        menuUI = /*#__PURE__*/React.createElement(LoadingMessage, commonProps, message);\n      } else {\n        var _message = noOptionsMessage({\n          inputValue: inputValue\n        });\n        if (_message === null) return null;\n        menuUI = /*#__PURE__*/React.createElement(NoOptionsMessage, commonProps, _message);\n      }\n      var menuPlacementProps = {\n        minMenuHeight: minMenuHeight,\n        maxMenuHeight: maxMenuHeight,\n        menuPlacement: menuPlacement,\n        menuPosition: menuPosition,\n        menuShouldScrollIntoView: menuShouldScrollIntoView\n      };\n      var menuElement = /*#__PURE__*/React.createElement(MenuPlacer, _extends({}, commonProps, menuPlacementProps), function (_ref4) {\n        var ref = _ref4.ref,\n          _ref4$placerProps = _ref4.placerProps,\n          placement = _ref4$placerProps.placement,\n          maxHeight = _ref4$placerProps.maxHeight;\n        return /*#__PURE__*/React.createElement(Menu, _extends({}, commonProps, menuPlacementProps, {\n          innerRef: ref,\n          innerProps: {\n            onMouseDown: _this4.onMenuMouseDown,\n            onMouseMove: _this4.onMenuMouseMove,\n            id: _this4.getElementId('listbox')\n          },\n          isLoading: isLoading,\n          placement: placement\n        }), /*#__PURE__*/React.createElement(ScrollManager, {\n          captureEnabled: captureMenuScroll,\n          onTopArrive: onMenuScrollToTop,\n          onBottomArrive: onMenuScrollToBottom,\n          lockEnabled: menuShouldBlockScroll\n        }, function (scrollTargetRef) {\n          return /*#__PURE__*/React.createElement(MenuList, _extends({}, commonProps, {\n            innerRef: function innerRef(instance) {\n              _this4.getMenuListRef(instance);\n              scrollTargetRef(instance);\n            },\n            isLoading: isLoading,\n            maxHeight: maxHeight,\n            focusedOption: focusedOption\n          }), menuUI);\n        }));\n      });\n\n      // positioning behaviour is almost identical for portalled and fixed,\n      // so we use the same component. the actual portalling logic is forked\n      // within the component based on `menuPosition`\n      return menuPortalTarget || menuPosition === 'fixed' ? /*#__PURE__*/React.createElement(MenuPortal, _extends({}, commonProps, {\n        appendTo: menuPortalTarget,\n        controlElement: this.controlRef,\n        menuPlacement: menuPlacement,\n        menuPosition: menuPosition\n      }), menuElement) : menuElement;\n    }\n  }, {\n    key: \"renderFormField\",\n    value: function renderFormField() {\n      var _this5 = this;\n      var _this$props13 = this.props,\n        delimiter = _this$props13.delimiter,\n        isDisabled = _this$props13.isDisabled,\n        isMulti = _this$props13.isMulti,\n        name = _this$props13.name,\n        required = _this$props13.required;\n      var selectValue = this.state.selectValue;\n      if (required && !this.hasValue() && !isDisabled) {\n        return /*#__PURE__*/React.createElement(RequiredInput$1, {\n          name: name,\n          onFocus: this.onValueInputFocus\n        });\n      }\n      if (!name || isDisabled) return;\n      if (isMulti) {\n        if (delimiter) {\n          var value = selectValue.map(function (opt) {\n            return _this5.getOptionValue(opt);\n          }).join(delimiter);\n          return /*#__PURE__*/React.createElement(\"input\", {\n            name: name,\n            type: \"hidden\",\n            value: value\n          });\n        } else {\n          var input = selectValue.length > 0 ? selectValue.map(function (opt, i) {\n            return /*#__PURE__*/React.createElement(\"input\", {\n              key: \"i-\".concat(i),\n              name: name,\n              type: \"hidden\",\n              value: _this5.getOptionValue(opt)\n            });\n          }) : /*#__PURE__*/React.createElement(\"input\", {\n            name: name,\n            type: \"hidden\",\n            value: \"\"\n          });\n          return /*#__PURE__*/React.createElement(\"div\", null, input);\n        }\n      } else {\n        var _value = selectValue[0] ? this.getOptionValue(selectValue[0]) : '';\n        return /*#__PURE__*/React.createElement(\"input\", {\n          name: name,\n          type: \"hidden\",\n          value: _value\n        });\n      }\n    }\n  }, {\n    key: \"renderLiveRegion\",\n    value: function renderLiveRegion() {\n      var commonProps = this.commonProps;\n      var _this$state6 = this.state,\n        ariaSelection = _this$state6.ariaSelection,\n        focusedOption = _this$state6.focusedOption,\n        focusedValue = _this$state6.focusedValue,\n        isFocused = _this$state6.isFocused,\n        selectValue = _this$state6.selectValue;\n      var focusableOptions = this.getFocusableOptions();\n      return /*#__PURE__*/React.createElement(LiveRegion$1, _extends({}, commonProps, {\n        id: this.getElementId('live-region'),\n        ariaSelection: ariaSelection,\n        focusedOption: focusedOption,\n        focusedValue: focusedValue,\n        isFocused: isFocused,\n        selectValue: selectValue,\n        focusableOptions: focusableOptions\n      }));\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this$getComponents8 = this.getComponents(),\n        Control = _this$getComponents8.Control,\n        IndicatorsContainer = _this$getComponents8.IndicatorsContainer,\n        SelectContainer = _this$getComponents8.SelectContainer,\n        ValueContainer = _this$getComponents8.ValueContainer;\n      var _this$props14 = this.props,\n        className = _this$props14.className,\n        id = _this$props14.id,\n        isDisabled = _this$props14.isDisabled,\n        menuIsOpen = _this$props14.menuIsOpen;\n      var isFocused = this.state.isFocused;\n      var commonProps = this.commonProps = this.getCommonProps();\n      return /*#__PURE__*/React.createElement(SelectContainer, _extends({}, commonProps, {\n        className: className,\n        innerProps: {\n          id: id,\n          onKeyDown: this.onKeyDown\n        },\n        isDisabled: isDisabled,\n        isFocused: isFocused\n      }), this.renderLiveRegion(), /*#__PURE__*/React.createElement(Control, _extends({}, commonProps, {\n        innerRef: this.getControlRef,\n        innerProps: {\n          onMouseDown: this.onControlMouseDown,\n          onTouchEnd: this.onControlTouchEnd\n        },\n        isDisabled: isDisabled,\n        isFocused: isFocused,\n        menuIsOpen: menuIsOpen\n      }), /*#__PURE__*/React.createElement(ValueContainer, _extends({}, commonProps, {\n        isDisabled: isDisabled\n      }), this.renderPlaceholderOrValue(), this.renderInput()), /*#__PURE__*/React.createElement(IndicatorsContainer, _extends({}, commonProps, {\n        isDisabled: isDisabled\n      }), this.renderClearIndicator(), this.renderLoadingIndicator(), this.renderIndicatorSeparator(), this.renderDropdownIndicator())), this.renderMenu(), this.renderFormField());\n    }\n  }], [{\n    key: \"getDerivedStateFromProps\",\n    value: function getDerivedStateFromProps(props, state) {\n      var prevProps = state.prevProps,\n        clearFocusValueOnUpdate = state.clearFocusValueOnUpdate,\n        inputIsHiddenAfterUpdate = state.inputIsHiddenAfterUpdate,\n        ariaSelection = state.ariaSelection,\n        isFocused = state.isFocused,\n        prevWasFocused = state.prevWasFocused;\n      var options = props.options,\n        value = props.value,\n        menuIsOpen = props.menuIsOpen,\n        inputValue = props.inputValue,\n        isMulti = props.isMulti;\n      var selectValue = cleanValue(value);\n      var newMenuOptionsState = {};\n      if (prevProps && (value !== prevProps.value || options !== prevProps.options || menuIsOpen !== prevProps.menuIsOpen || inputValue !== prevProps.inputValue)) {\n        var focusableOptions = menuIsOpen ? buildFocusableOptions(props, selectValue) : [];\n        var focusedValue = clearFocusValueOnUpdate ? getNextFocusedValue(state, selectValue) : null;\n        var focusedOption = getNextFocusedOption(state, focusableOptions);\n        newMenuOptionsState = {\n          selectValue: selectValue,\n          focusedOption: focusedOption,\n          focusedValue: focusedValue,\n          clearFocusValueOnUpdate: false\n        };\n      }\n      // some updates should toggle the state of the input visibility\n      var newInputIsHiddenState = inputIsHiddenAfterUpdate != null && props !== prevProps ? {\n        inputIsHidden: inputIsHiddenAfterUpdate,\n        inputIsHiddenAfterUpdate: undefined\n      } : {};\n      var newAriaSelection = ariaSelection;\n      var hasKeptFocus = isFocused && prevWasFocused;\n      if (isFocused && !hasKeptFocus) {\n        // If `value` or `defaultValue` props are not empty then announce them\n        // when the Select is initially focused\n        newAriaSelection = {\n          value: valueTernary(isMulti, selectValue, selectValue[0] || null),\n          options: selectValue,\n          action: 'initial-input-focus'\n        };\n        hasKeptFocus = !prevWasFocused;\n      }\n\n      // If the 'initial-input-focus' action has been set already\n      // then reset the ariaSelection to null\n      if ((ariaSelection === null || ariaSelection === void 0 ? void 0 : ariaSelection.action) === 'initial-input-focus') {\n        newAriaSelection = null;\n      }\n      return _objectSpread(_objectSpread(_objectSpread({}, newMenuOptionsState), newInputIsHiddenState), {}, {\n        prevProps: props,\n        ariaSelection: newAriaSelection,\n        prevWasFocused: hasKeptFocus\n      });\n    }\n  }]);\n  return Select;\n}(Component);\nSelect.defaultProps = defaultProps;\n\nexport { Select as S, defaultProps as a, getOptionLabel$1 as b, createFilter as c, defaultTheme as d, getOptionValue$1 as g, mergeStyles as m };\n", "import * as React from 'react';\nimport { useContext, forwardRef } from 'react';\nimport createCache from '@emotion/cache';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport weakMemoize from '@emotion/weak-memoize';\nimport hoistNonReactStatics from '../_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js';\nimport { getRegisteredStyles, registerStyles, insertStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\nimport { useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';\n\nvar isBrowser = \"object\" !== 'undefined';\nvar hasOwnProperty = {}.hasOwnProperty;\n\nvar EmotionCacheContext = /* #__PURE__ */React.createContext( // we're doing this to avoid preconstruct's dead code elimination in this one case\n// because this module is primarily intended for the browser and node\n// but it's also required in react native and similar environments sometimes\n// and we could have a special build just for that\n// but this is much easier and the native packages\n// might use a different theme context in the future anyway\ntypeof HTMLElement !== 'undefined' ? /* #__PURE__ */createCache({\n  key: 'css'\n}) : null);\n\nif (process.env.NODE_ENV !== 'production') {\n  EmotionCacheContext.displayName = 'EmotionCacheContext';\n}\n\nvar CacheProvider = EmotionCacheContext.Provider;\nvar __unsafe_useEmotionCache = function useEmotionCache() {\n  return useContext(EmotionCacheContext);\n};\n\nvar withEmotionCache = function withEmotionCache(func) {\n  // $FlowFixMe\n  return /*#__PURE__*/forwardRef(function (props, ref) {\n    // the cache will never be null in the browser\n    var cache = useContext(EmotionCacheContext);\n    return func(props, cache, ref);\n  });\n};\n\nif (!isBrowser) {\n  withEmotionCache = function withEmotionCache(func) {\n    return function (props) {\n      var cache = useContext(EmotionCacheContext);\n\n      if (cache === null) {\n        // yes, we're potentially creating this on every render\n        // it doesn't actually matter though since it's only on the server\n        // so there will only every be a single render\n        // that could change in the future because of suspense and etc. but for now,\n        // this works and i don't want to optimise for a future thing that we aren't sure about\n        cache = createCache({\n          key: 'css'\n        });\n        return /*#__PURE__*/React.createElement(EmotionCacheContext.Provider, {\n          value: cache\n        }, func(props, cache));\n      } else {\n        return func(props, cache);\n      }\n    };\n  };\n}\n\nvar ThemeContext = /* #__PURE__ */React.createContext({});\n\nif (process.env.NODE_ENV !== 'production') {\n  ThemeContext.displayName = 'EmotionThemeContext';\n}\n\nvar useTheme = function useTheme() {\n  return React.useContext(ThemeContext);\n};\n\nvar getTheme = function getTheme(outerTheme, theme) {\n  if (typeof theme === 'function') {\n    var mergedTheme = theme(outerTheme);\n\n    if (process.env.NODE_ENV !== 'production' && (mergedTheme == null || typeof mergedTheme !== 'object' || Array.isArray(mergedTheme))) {\n      throw new Error('[ThemeProvider] Please return an object from your theme function, i.e. theme={() => ({})}!');\n    }\n\n    return mergedTheme;\n  }\n\n  if (process.env.NODE_ENV !== 'production' && (theme == null || typeof theme !== 'object' || Array.isArray(theme))) {\n    throw new Error('[ThemeProvider] Please make your theme prop a plain object');\n  }\n\n  return _extends({}, outerTheme, theme);\n};\n\nvar createCacheWithTheme = /* #__PURE__ */weakMemoize(function (outerTheme) {\n  return weakMemoize(function (theme) {\n    return getTheme(outerTheme, theme);\n  });\n});\nvar ThemeProvider = function ThemeProvider(props) {\n  var theme = React.useContext(ThemeContext);\n\n  if (props.theme !== theme) {\n    theme = createCacheWithTheme(theme)(props.theme);\n  }\n\n  return /*#__PURE__*/React.createElement(ThemeContext.Provider, {\n    value: theme\n  }, props.children);\n};\nfunction withTheme(Component) {\n  var componentName = Component.displayName || Component.name || 'Component';\n\n  var render = function render(props, ref) {\n    var theme = React.useContext(ThemeContext);\n    return /*#__PURE__*/React.createElement(Component, _extends({\n      theme: theme,\n      ref: ref\n    }, props));\n  }; // $FlowFixMe\n\n\n  var WithTheme = /*#__PURE__*/React.forwardRef(render);\n  WithTheme.displayName = \"WithTheme(\" + componentName + \")\";\n  return hoistNonReactStatics(WithTheme, Component);\n}\n\nvar getLastPart = function getLastPart(functionName) {\n  // The match may be something like 'Object.createEmotionProps' or\n  // 'Loader.prototype.render'\n  var parts = functionName.split('.');\n  return parts[parts.length - 1];\n};\n\nvar getFunctionNameFromStackTraceLine = function getFunctionNameFromStackTraceLine(line) {\n  // V8\n  var match = /^\\s+at\\s+([A-Za-z0-9$.]+)\\s/.exec(line);\n  if (match) return getLastPart(match[1]); // Safari / Firefox\n\n  match = /^([A-Za-z0-9$.]+)@/.exec(line);\n  if (match) return getLastPart(match[1]);\n  return undefined;\n};\n\nvar internalReactFunctionNames = /* #__PURE__ */new Set(['renderWithHooks', 'processChild', 'finishClassComponent', 'renderToString']); // These identifiers come from error stacks, so they have to be valid JS\n// identifiers, thus we only need to replace what is a valid character for JS,\n// but not for CSS.\n\nvar sanitizeIdentifier = function sanitizeIdentifier(identifier) {\n  return identifier.replace(/\\$/g, '-');\n};\n\nvar getLabelFromStackTrace = function getLabelFromStackTrace(stackTrace) {\n  if (!stackTrace) return undefined;\n  var lines = stackTrace.split('\\n');\n\n  for (var i = 0; i < lines.length; i++) {\n    var functionName = getFunctionNameFromStackTraceLine(lines[i]); // The first line of V8 stack traces is just \"Error\"\n\n    if (!functionName) continue; // If we reach one of these, we have gone too far and should quit\n\n    if (internalReactFunctionNames.has(functionName)) break; // The component name is the first function in the stack that starts with an\n    // uppercase letter\n\n    if (/^[A-Z]/.test(functionName)) return sanitizeIdentifier(functionName);\n  }\n\n  return undefined;\n};\n\nvar typePropName = '__EMOTION_TYPE_PLEASE_DO_NOT_USE__';\nvar labelPropName = '__EMOTION_LABEL_PLEASE_DO_NOT_USE__';\nvar createEmotionProps = function createEmotionProps(type, props) {\n  if (process.env.NODE_ENV !== 'production' && typeof props.css === 'string' && // check if there is a css declaration\n  props.css.indexOf(':') !== -1) {\n    throw new Error(\"Strings are not allowed as css prop values, please wrap it in a css template literal from '@emotion/react' like this: css`\" + props.css + \"`\");\n  }\n\n  var newProps = {};\n\n  for (var key in props) {\n    if (hasOwnProperty.call(props, key)) {\n      newProps[key] = props[key];\n    }\n  }\n\n  newProps[typePropName] = type; // For performance, only call getLabelFromStackTrace in development and when\n  // the label hasn't already been computed\n\n  if (process.env.NODE_ENV !== 'production' && !!props.css && (typeof props.css !== 'object' || typeof props.css.name !== 'string' || props.css.name.indexOf('-') === -1)) {\n    var label = getLabelFromStackTrace(new Error().stack);\n    if (label) newProps[labelPropName] = label;\n  }\n\n  return newProps;\n};\n\nvar Insertion = function Insertion(_ref) {\n  var cache = _ref.cache,\n      serialized = _ref.serialized,\n      isStringTag = _ref.isStringTag;\n  registerStyles(cache, serialized, isStringTag);\n  useInsertionEffectAlwaysWithSyncFallback(function () {\n    return insertStyles(cache, serialized, isStringTag);\n  });\n\n  return null;\n};\n\nvar Emotion = /* #__PURE__ */withEmotionCache(function (props, cache, ref) {\n  var cssProp = props.css; // so that using `css` from `emotion` and passing the result to the css prop works\n  // not passing the registered cache to serializeStyles because it would\n  // make certain babel optimisations not possible\n\n  if (typeof cssProp === 'string' && cache.registered[cssProp] !== undefined) {\n    cssProp = cache.registered[cssProp];\n  }\n\n  var WrappedComponent = props[typePropName];\n  var registeredStyles = [cssProp];\n  var className = '';\n\n  if (typeof props.className === 'string') {\n    className = getRegisteredStyles(cache.registered, registeredStyles, props.className);\n  } else if (props.className != null) {\n    className = props.className + \" \";\n  }\n\n  var serialized = serializeStyles(registeredStyles, undefined, React.useContext(ThemeContext));\n\n  if (process.env.NODE_ENV !== 'production' && serialized.name.indexOf('-') === -1) {\n    var labelFromStack = props[labelPropName];\n\n    if (labelFromStack) {\n      serialized = serializeStyles([serialized, 'label:' + labelFromStack + ';']);\n    }\n  }\n\n  className += cache.key + \"-\" + serialized.name;\n  var newProps = {};\n\n  for (var key in props) {\n    if (hasOwnProperty.call(props, key) && key !== 'css' && key !== typePropName && (process.env.NODE_ENV === 'production' || key !== labelPropName)) {\n      newProps[key] = props[key];\n    }\n  }\n\n  newProps.ref = ref;\n  newProps.className = className;\n  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Insertion, {\n    cache: cache,\n    serialized: serialized,\n    isStringTag: typeof WrappedComponent === 'string'\n  }), /*#__PURE__*/React.createElement(WrappedComponent, newProps));\n});\n\nif (process.env.NODE_ENV !== 'production') {\n  Emotion.displayName = 'EmotionCssPropInternal';\n}\n\nvar Emotion$1 = Emotion;\n\nexport { CacheProvider as C, Emotion$1 as E, ThemeContext as T, __unsafe_useEmotionCache as _, ThemeProvider as a, withTheme as b, createEmotionProps as c, hasOwnProperty as h, isBrowser as i, useTheme as u, withEmotionCache as w };\n", "/*\n\nBased off glamor's StyleSheet, thanks Sunil \u2764\uFE0F\n\nhigh performance StyleSheet for css-in-js systems\n\n- uses multiple style tags behind the scenes for millions of rules\n- uses `insertRule` for appending in production for *much* faster performance\n\n// usage\n\nimport { StyleSheet } from '@emotion/sheet'\n\nlet styleSheet = new StyleSheet({ key: '', container: document.head })\n\nstyleSheet.insert('#box { border: 1px solid red; }')\n- appends a css rule into the stylesheet\n\nstyleSheet.flush()\n- empties the stylesheet of all its contents\n\n*/\n// $FlowFixMe\nfunction sheetForTag(tag) {\n  if (tag.sheet) {\n    // $FlowFixMe\n    return tag.sheet;\n  } // this weirdness brought to you by firefox\n\n  /* istanbul ignore next */\n\n\n  for (var i = 0; i < document.styleSheets.length; i++) {\n    if (document.styleSheets[i].ownerNode === tag) {\n      // $FlowFixMe\n      return document.styleSheets[i];\n    }\n  }\n}\n\nfunction createStyleElement(options) {\n  var tag = document.createElement('style');\n  tag.setAttribute('data-emotion', options.key);\n\n  if (options.nonce !== undefined) {\n    tag.setAttribute('nonce', options.nonce);\n  }\n\n  tag.appendChild(document.createTextNode(''));\n  tag.setAttribute('data-s', '');\n  return tag;\n}\n\nvar StyleSheet = /*#__PURE__*/function () {\n  // Using Node instead of HTMLElement since container may be a ShadowRoot\n  function StyleSheet(options) {\n    var _this = this;\n\n    this._insertTag = function (tag) {\n      var before;\n\n      if (_this.tags.length === 0) {\n        if (_this.insertionPoint) {\n          before = _this.insertionPoint.nextSibling;\n        } else if (_this.prepend) {\n          before = _this.container.firstChild;\n        } else {\n          before = _this.before;\n        }\n      } else {\n        before = _this.tags[_this.tags.length - 1].nextSibling;\n      }\n\n      _this.container.insertBefore(tag, before);\n\n      _this.tags.push(tag);\n    };\n\n    this.isSpeedy = options.speedy === undefined ? process.env.NODE_ENV === 'production' : options.speedy;\n    this.tags = [];\n    this.ctr = 0;\n    this.nonce = options.nonce; // key is the value of the data-emotion attribute, it's used to identify different sheets\n\n    this.key = options.key;\n    this.container = options.container;\n    this.prepend = options.prepend;\n    this.insertionPoint = options.insertionPoint;\n    this.before = null;\n  }\n\n  var _proto = StyleSheet.prototype;\n\n  _proto.hydrate = function hydrate(nodes) {\n    nodes.forEach(this._insertTag);\n  };\n\n  _proto.insert = function insert(rule) {\n    // the max length is how many rules we have per style tag, it's 65000 in speedy mode\n    // it's 1 in dev because we insert source maps that map a single rule to a location\n    // and you can only have one source map per style tag\n    if (this.ctr % (this.isSpeedy ? 65000 : 1) === 0) {\n      this._insertTag(createStyleElement(this));\n    }\n\n    var tag = this.tags[this.tags.length - 1];\n\n    if (process.env.NODE_ENV !== 'production') {\n      var isImportRule = rule.charCodeAt(0) === 64 && rule.charCodeAt(1) === 105;\n\n      if (isImportRule && this._alreadyInsertedOrderInsensitiveRule) {\n        // this would only cause problem in speedy mode\n        // but we don't want enabling speedy to affect the observable behavior\n        // so we report this error at all times\n        console.error(\"You're attempting to insert the following rule:\\n\" + rule + '\\n\\n`@import` rules must be before all other types of rules in a stylesheet but other rules have already been inserted. Please ensure that `@import` rules are before all other rules.');\n      }\n      this._alreadyInsertedOrderInsensitiveRule = this._alreadyInsertedOrderInsensitiveRule || !isImportRule;\n    }\n\n    if (this.isSpeedy) {\n      var sheet = sheetForTag(tag);\n\n      try {\n        // this is the ultrafast version, works across browsers\n        // the big drawback is that the css won't be editable in devtools\n        sheet.insertRule(rule, sheet.cssRules.length);\n      } catch (e) {\n        if (process.env.NODE_ENV !== 'production' && !/:(-moz-placeholder|-moz-focus-inner|-moz-focusring|-ms-input-placeholder|-moz-read-write|-moz-read-only|-ms-clear|-ms-expand|-ms-reveal){/.test(rule)) {\n          console.error(\"There was a problem inserting the following rule: \\\"\" + rule + \"\\\"\", e);\n        }\n      }\n    } else {\n      tag.appendChild(document.createTextNode(rule));\n    }\n\n    this.ctr++;\n  };\n\n  _proto.flush = function flush() {\n    // $FlowFixMe\n    this.tags.forEach(function (tag) {\n      return tag.parentNode && tag.parentNode.removeChild(tag);\n    });\n    this.tags = [];\n    this.ctr = 0;\n\n    if (process.env.NODE_ENV !== 'production') {\n      this._alreadyInsertedOrderInsensitiveRule = false;\n    }\n  };\n\n  return StyleSheet;\n}();\n\nexport { StyleSheet };\n", "export var MS = '-ms-'\nexport var MOZ = '-moz-'\nexport var WEBKIT = '-webkit-'\n\nexport var COMMENT = 'comm'\nexport var RULESET = 'rule'\nexport var DECLARATION = 'decl'\n\nexport var PAGE = '@page'\nexport var MEDIA = '@media'\nexport var IMPORT = '@import'\nexport var CHARSET = '@charset'\nexport var VIEWPORT = '@viewport'\nexport var SUPPORTS = '@supports'\nexport var DOCUMENT = '@document'\nexport var NAMESPACE = '@namespace'\nexport var KEYFRAMES = '@keyframes'\nexport var FONT_FACE = '@font-face'\nexport var COUNTER_STYLE = '@counter-style'\nexport var FONT_FEATURE_VALUES = '@font-feature-values'\nexport var LAYER = '@layer'\n", "/**\n * @param {number}\n * @return {number}\n */\nexport var abs = Math.abs\n\n/**\n * @param {number}\n * @return {string}\n */\nexport var from = String.fromCharCode\n\n/**\n * @param {object}\n * @return {object}\n */\nexport var assign = Object.assign\n\n/**\n * @param {string} value\n * @param {number} length\n * @return {number}\n */\nexport function hash (value, length) {\n\treturn charat(value, 0) ^ 45 ? (((((((length << 2) ^ charat(value, 0)) << 2) ^ charat(value, 1)) << 2) ^ charat(value, 2)) << 2) ^ charat(value, 3) : 0\n}\n\n/**\n * @param {string} value\n * @return {string}\n */\nexport function trim (value) {\n\treturn value.trim()\n}\n\n/**\n * @param {string} value\n * @param {RegExp} pattern\n * @return {string?}\n */\nexport function match (value, pattern) {\n\treturn (value = pattern.exec(value)) ? value[0] : value\n}\n\n/**\n * @param {string} value\n * @param {(string|RegExp)} pattern\n * @param {string} replacement\n * @return {string}\n */\nexport function replace (value, pattern, replacement) {\n\treturn value.replace(pattern, replacement)\n}\n\n/**\n * @param {string} value\n * @param {string} search\n * @return {number}\n */\nexport function indexof (value, search) {\n\treturn value.indexOf(search)\n}\n\n/**\n * @param {string} value\n * @param {number} index\n * @return {number}\n */\nexport function charat (value, index) {\n\treturn value.charCodeAt(index) | 0\n}\n\n/**\n * @param {string} value\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function substr (value, begin, end) {\n\treturn value.slice(begin, end)\n}\n\n/**\n * @param {string} value\n * @return {number}\n */\nexport function strlen (value) {\n\treturn value.length\n}\n\n/**\n * @param {any[]} value\n * @return {number}\n */\nexport function sizeof (value) {\n\treturn value.length\n}\n\n/**\n * @param {any} value\n * @param {any[]} array\n * @return {any}\n */\nexport function append (value, array) {\n\treturn array.push(value), value\n}\n\n/**\n * @param {string[]} array\n * @param {function} callback\n * @return {string}\n */\nexport function combine (array, callback) {\n\treturn array.map(callback).join('')\n}\n", "import {from, trim, charat, strlen, substr, append, assign} from './Utility.js'\n\nexport var line = 1\nexport var column = 1\nexport var length = 0\nexport var position = 0\nexport var character = 0\nexport var characters = ''\n\n/**\n * @param {string} value\n * @param {object | null} root\n * @param {object | null} parent\n * @param {string} type\n * @param {string[] | string} props\n * @param {object[] | string} children\n * @param {number} length\n */\nexport function node (value, root, parent, type, props, children, length) {\n\treturn {value: value, root: root, parent: parent, type: type, props: props, children: children, line: line, column: column, length: length, return: ''}\n}\n\n/**\n * @param {object} root\n * @param {object} props\n * @return {object}\n */\nexport function copy (root, props) {\n\treturn assign(node('', null, null, '', null, null, 0), root, {length: -root.length}, props)\n}\n\n/**\n * @return {number}\n */\nexport function char () {\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function prev () {\n\tcharacter = position > 0 ? charat(characters, --position) : 0\n\n\tif (column--, character === 10)\n\t\tcolumn = 1, line--\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function next () {\n\tcharacter = position < length ? charat(characters, position++) : 0\n\n\tif (column++, character === 10)\n\t\tcolumn = 1, line++\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function peek () {\n\treturn charat(characters, position)\n}\n\n/**\n * @return {number}\n */\nexport function caret () {\n\treturn position\n}\n\n/**\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function slice (begin, end) {\n\treturn substr(characters, begin, end)\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function token (type) {\n\tswitch (type) {\n\t\t// \\0 \\t \\n \\r \\s whitespace token\n\t\tcase 0: case 9: case 10: case 13: case 32:\n\t\t\treturn 5\n\t\t// ! + , / > @ ~ isolate token\n\t\tcase 33: case 43: case 44: case 47: case 62: case 64: case 126:\n\t\t// ; { } breakpoint token\n\t\tcase 59: case 123: case 125:\n\t\t\treturn 4\n\t\t// : accompanied token\n\t\tcase 58:\n\t\t\treturn 3\n\t\t// \" ' ( [ opening delimit token\n\t\tcase 34: case 39: case 40: case 91:\n\t\t\treturn 2\n\t\t// ) ] closing delimit token\n\t\tcase 41: case 93:\n\t\t\treturn 1\n\t}\n\n\treturn 0\n}\n\n/**\n * @param {string} value\n * @return {any[]}\n */\nexport function alloc (value) {\n\treturn line = column = 1, length = strlen(characters = value), position = 0, []\n}\n\n/**\n * @param {any} value\n * @return {any}\n */\nexport function dealloc (value) {\n\treturn characters = '', value\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function delimit (type) {\n\treturn trim(slice(position - 1, delimiter(type === 91 ? type + 2 : type === 40 ? type + 1 : type)))\n}\n\n/**\n * @param {string} value\n * @return {string[]}\n */\nexport function tokenize (value) {\n\treturn dealloc(tokenizer(alloc(value)))\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function whitespace (type) {\n\twhile (character = peek())\n\t\tif (character < 33)\n\t\t\tnext()\n\t\telse\n\t\t\tbreak\n\n\treturn token(type) > 2 || token(character) > 3 ? '' : ' '\n}\n\n/**\n * @param {string[]} children\n * @return {string[]}\n */\nexport function tokenizer (children) {\n\twhile (next())\n\t\tswitch (token(character)) {\n\t\t\tcase 0: append(identifier(position - 1), children)\n\t\t\t\tbreak\n\t\t\tcase 2: append(delimit(character), children)\n\t\t\t\tbreak\n\t\t\tdefault: append(from(character), children)\n\t\t}\n\n\treturn children\n}\n\n/**\n * @param {number} index\n * @param {number} count\n * @return {string}\n */\nexport function escaping (index, count) {\n\twhile (--count && next())\n\t\t// not 0-9 A-F a-f\n\t\tif (character < 48 || character > 102 || (character > 57 && character < 65) || (character > 70 && character < 97))\n\t\t\tbreak\n\n\treturn slice(index, caret() + (count < 6 && peek() == 32 && next() == 32))\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function delimiter (type) {\n\twhile (next())\n\t\tswitch (character) {\n\t\t\t// ] ) \" '\n\t\t\tcase type:\n\t\t\t\treturn position\n\t\t\t// \" '\n\t\t\tcase 34: case 39:\n\t\t\t\tif (type !== 34 && type !== 39)\n\t\t\t\t\tdelimiter(character)\n\t\t\t\tbreak\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (type === 41)\n\t\t\t\t\tdelimiter(type)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tnext()\n\t\t\t\tbreak\n\t\t}\n\n\treturn position\n}\n\n/**\n * @param {number} type\n * @param {number} index\n * @return {number}\n */\nexport function commenter (type, index) {\n\twhile (next())\n\t\t// //\n\t\tif (type + character === 47 + 10)\n\t\t\tbreak\n\t\t// /*\n\t\telse if (type + character === 42 + 42 && peek() === 47)\n\t\t\tbreak\n\n\treturn '/*' + slice(index, position - 1) + '*' + from(type === 47 ? type : next())\n}\n\n/**\n * @param {number} index\n * @return {string}\n */\nexport function identifier (index) {\n\twhile (!token(peek()))\n\t\tnext()\n\n\treturn slice(index, position)\n}\n", "import {COMMENT, RULESET, DECLARATION} from './Enum.js'\nimport {abs, charat, trim, from, sizeof, strlen, substr, append, replace, indexof} from './Utility.js'\nimport {node, char, prev, next, peek, caret, alloc, dealloc, delimit, whitespace, escaping, identifier, commenter} from './Tokenizer.js'\n\n/**\n * @param {string} value\n * @return {object[]}\n */\nexport function compile (value) {\n\treturn dealloc(parse('', null, null, null, [''], value = alloc(value), 0, [0], value))\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {string[]} rule\n * @param {string[]} rules\n * @param {string[]} rulesets\n * @param {number[]} pseudo\n * @param {number[]} points\n * @param {string[]} declarations\n * @return {object}\n */\nexport function parse (value, root, parent, rule, rules, rulesets, pseudo, points, declarations) {\n\tvar index = 0\n\tvar offset = 0\n\tvar length = pseudo\n\tvar atrule = 0\n\tvar property = 0\n\tvar previous = 0\n\tvar variable = 1\n\tvar scanning = 1\n\tvar ampersand = 1\n\tvar character = 0\n\tvar type = ''\n\tvar props = rules\n\tvar children = rulesets\n\tvar reference = rule\n\tvar characters = type\n\n\twhile (scanning)\n\t\tswitch (previous = character, character = next()) {\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (previous != 108 && charat(characters, length - 1) == 58) {\n\t\t\t\t\tif (indexof(characters += replace(delimit(character), '&', '&\\f'), '&\\f') != -1)\n\t\t\t\t\t\tampersand = -1\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t// \" ' [\n\t\t\tcase 34: case 39: case 91:\n\t\t\t\tcharacters += delimit(character)\n\t\t\t\tbreak\n\t\t\t// \\t \\n \\r \\s\n\t\t\tcase 9: case 10: case 13: case 32:\n\t\t\t\tcharacters += whitespace(previous)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tcharacters += escaping(caret() - 1, 7)\n\t\t\t\tcontinue\n\t\t\t// /\n\t\t\tcase 47:\n\t\t\t\tswitch (peek()) {\n\t\t\t\t\tcase 42: case 47:\n\t\t\t\t\t\tappend(comment(commenter(next(), caret()), root, parent), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tcharacters += '/'\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t// {\n\t\t\tcase 123 * variable:\n\t\t\t\tpoints[index++] = strlen(characters) * ampersand\n\t\t\t// } ; \\0\n\t\t\tcase 125 * variable: case 59: case 0:\n\t\t\t\tswitch (character) {\n\t\t\t\t\t// \\0 }\n\t\t\t\t\tcase 0: case 125: scanning = 0\n\t\t\t\t\t// ;\n\t\t\t\t\tcase 59 + offset: if (ampersand == -1) characters = replace(characters, /\\f/g, '')\n\t\t\t\t\t\tif (property > 0 && (strlen(characters) - length))\n\t\t\t\t\t\t\tappend(property > 32 ? declaration(characters + ';', rule, parent, length - 1) : declaration(replace(characters, ' ', '') + ';', rule, parent, length - 2), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @ ;\n\t\t\t\t\tcase 59: characters += ';'\n\t\t\t\t\t// { rule/at-rule\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tappend(reference = ruleset(characters, root, parent, index, offset, rules, points, type, props = [], children = [], length), rulesets)\n\n\t\t\t\t\t\tif (character === 123)\n\t\t\t\t\t\t\tif (offset === 0)\n\t\t\t\t\t\t\t\tparse(characters, root, reference, reference, props, rulesets, length, points, children)\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tswitch (atrule === 99 && charat(characters, 3) === 110 ? 100 : atrule) {\n\t\t\t\t\t\t\t\t\t// d l m s\n\t\t\t\t\t\t\t\t\tcase 100: case 108: case 109: case 115:\n\t\t\t\t\t\t\t\t\t\tparse(value, reference, reference, rule && append(ruleset(value, reference, reference, 0, 0, rules, points, type, rules, props = [], length), children), rules, children, length, points, rule ? props : children)\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\tparse(characters, reference, reference, reference, [''], children, 0, points, children)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tindex = offset = property = 0, variable = ampersand = 1, type = characters = '', length = pseudo\n\t\t\t\tbreak\n\t\t\t// :\n\t\t\tcase 58:\n\t\t\t\tlength = 1 + strlen(characters), property = previous\n\t\t\tdefault:\n\t\t\t\tif (variable < 1)\n\t\t\t\t\tif (character == 123)\n\t\t\t\t\t\t--variable\n\t\t\t\t\telse if (character == 125 && variable++ == 0 && prev() == 125)\n\t\t\t\t\t\tcontinue\n\n\t\t\t\tswitch (characters += from(character), character * variable) {\n\t\t\t\t\t// &\n\t\t\t\t\tcase 38:\n\t\t\t\t\t\tampersand = offset > 0 ? 1 : (characters += '\\f', -1)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// ,\n\t\t\t\t\tcase 44:\n\t\t\t\t\t\tpoints[index++] = (strlen(characters) - 1) * ampersand, ampersand = 1\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @\n\t\t\t\t\tcase 64:\n\t\t\t\t\t\t// -\n\t\t\t\t\t\tif (peek() === 45)\n\t\t\t\t\t\t\tcharacters += delimit(next())\n\n\t\t\t\t\t\tatrule = peek(), offset = length = strlen(type = characters += identifier(caret())), character++\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// -\n\t\t\t\t\tcase 45:\n\t\t\t\t\t\tif (previous === 45 && strlen(characters) == 2)\n\t\t\t\t\t\t\tvariable = 0\n\t\t\t\t}\n\t\t}\n\n\treturn rulesets\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} index\n * @param {number} offset\n * @param {string[]} rules\n * @param {number[]} points\n * @param {string} type\n * @param {string[]} props\n * @param {string[]} children\n * @param {number} length\n * @return {object}\n */\nexport function ruleset (value, root, parent, index, offset, rules, points, type, props, children, length) {\n\tvar post = offset - 1\n\tvar rule = offset === 0 ? rules : ['']\n\tvar size = sizeof(rule)\n\n\tfor (var i = 0, j = 0, k = 0; i < index; ++i)\n\t\tfor (var x = 0, y = substr(value, post + 1, post = abs(j = points[i])), z = value; x < size; ++x)\n\t\t\tif (z = trim(j > 0 ? rule[x] + ' ' + y : replace(y, /&\\f/g, rule[x])))\n\t\t\t\tprops[k++] = z\n\n\treturn node(value, root, parent, offset === 0 ? RULESET : type, props, children, length)\n}\n\n/**\n * @param {number} value\n * @param {object} root\n * @param {object?} parent\n * @return {object}\n */\nexport function comment (value, root, parent) {\n\treturn node(value, root, parent, COMMENT, from(char()), substr(value, 2, -2), 0)\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} length\n * @return {object}\n */\nexport function declaration (value, root, parent, length) {\n\treturn node(value, root, parent, DECLARATION, substr(value, 0, length), substr(value, length + 1, -1), length)\n}\n", "import {IMPORT, LAYER, COMMENT, RULESET, DECLARATION, KEYFRAMES} from './Enum.js'\nimport {strlen, sizeof} from './Utility.js'\n\n/**\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function serialize (children, callback) {\n\tvar output = ''\n\tvar length = sizeof(children)\n\n\tfor (var i = 0; i < length; i++)\n\t\toutput += callback(children[i], i, children, callback) || ''\n\n\treturn output\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function stringify (element, index, children, callback) {\n\tswitch (element.type) {\n\t\tcase LAYER: if (element.children.length) break\n\t\tcase IMPORT: case DECLARATION: return element.return = element.return || element.value\n\t\tcase COMMENT: return ''\n\t\tcase KEYFRAMES: return element.return = element.value + '{' + serialize(element.children, callback) + '}'\n\t\tcase RULESET: element.value = element.props.join(',')\n\t}\n\n\treturn strlen(children = serialize(element.children, callback)) ? element.return = element.value + '{' + children + '}' : ''\n}\n", "import {MS, MOZ, WEBKIT, RULESET, KEYFRAMES, DECLARATION} from './Enum.js'\nimport {match, charat, substr, strlen, sizeof, replace, combine} from './Utility.js'\nimport {copy, tokenize} from './Tokenizer.js'\nimport {serialize} from './Serializer.js'\nimport {prefix} from './Prefixer.js'\n\n/**\n * @param {function[]} collection\n * @return {function}\n */\nexport function middleware (collection) {\n\tvar length = sizeof(collection)\n\n\treturn function (element, index, children, callback) {\n\t\tvar output = ''\n\n\t\tfor (var i = 0; i < length; i++)\n\t\t\toutput += collection[i](element, index, children, callback) || ''\n\n\t\treturn output\n\t}\n}\n\n/**\n * @param {function} callback\n * @return {function}\n */\nexport function rulesheet (callback) {\n\treturn function (element) {\n\t\tif (!element.root)\n\t\t\tif (element = element.return)\n\t\t\t\tcallback(element)\n\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n */\nexport function prefixer (element, index, children, callback) {\n\tif (element.length > -1)\n\t\tif (!element.return)\n\t\t\tswitch (element.type) {\n\t\t\t\tcase DECLARATION: element.return = prefix(element.value, element.length, children)\n\t\t\t\t\treturn\n\t\t\t\tcase KEYFRAMES:\n\t\t\t\t\treturn serialize([copy(element, {value: replace(element.value, '@', '@' + WEBKIT)})], callback)\n\t\t\t\tcase RULESET:\n\t\t\t\t\tif (element.length)\n\t\t\t\t\t\treturn combine(element.props, function (value) {\n\t\t\t\t\t\t\tswitch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n\t\t\t\t\t\t\t\t// :read-(only|write)\n\t\t\t\t\t\t\t\tcase ':read-only': case ':read-write':\n\t\t\t\t\t\t\t\t\treturn serialize([copy(element, {props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]})], callback)\n\t\t\t\t\t\t\t\t// :placeholder\n\t\t\t\t\t\t\t\tcase '::placeholder':\n\t\t\t\t\t\t\t\t\treturn serialize([\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]}),\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]}),\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]})\n\t\t\t\t\t\t\t\t\t], callback)\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn ''\n\t\t\t\t\t\t})\n\t\t\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n */\nexport function namespace (element) {\n\tswitch (element.type) {\n\t\tcase RULESET:\n\t\t\telement.props = element.props.map(function (value) {\n\t\t\t\treturn combine(tokenize(value), function (value, index, children) {\n\t\t\t\t\tswitch (charat(value, 0)) {\n\t\t\t\t\t\t// \\f\n\t\t\t\t\t\tcase 12:\n\t\t\t\t\t\t\treturn substr(value, 1, strlen(value))\n\t\t\t\t\t\t// \\0 ( + > ~\n\t\t\t\t\t\tcase 0: case 40: case 43: case 62: case 126:\n\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t// :\n\t\t\t\t\t\tcase 58:\n\t\t\t\t\t\t\tif (children[++index] === 'global')\n\t\t\t\t\t\t\t\tchildren[index] = '', children[++index] = '\\f' + substr(children[index], index = 1, -1)\n\t\t\t\t\t\t// \\s\n\t\t\t\t\t\tcase 32:\n\t\t\t\t\t\t\treturn index === 1 ? '' : value\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tswitch (index) {\n\t\t\t\t\t\t\t\tcase 0: element = value\n\t\t\t\t\t\t\t\t\treturn sizeof(children) > 1 ? '' : value\n\t\t\t\t\t\t\t\tcase index = sizeof(children) - 1: case 2:\n\t\t\t\t\t\t\t\t\treturn index === 2 ? value + element + element : value + element\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t})\n\t}\n}\n", "function memoize(fn) {\n  var cache = Object.create(null);\n  return function (arg) {\n    if (cache[arg] === undefined) cache[arg] = fn(arg);\n    return cache[arg];\n  };\n}\n\nexport { memoize as default };\n", "import { StyleSheet } from '@emotion/sheet';\nimport { dealloc, alloc, next, token, from, peek, delimit, slice, position, RULESET, combine, match, serialize, copy, replace, WEBKIT, MOZ, MS, KEYFRAMES, DECLARATION, hash, charat, strlen, indexof, stringify, COMMENT, rulesheet, middleware, compile } from 'stylis';\nimport '@emotion/weak-memoize';\nimport '@emotion/memoize';\n\nvar identifierWithPointTracking = function identifierWithPointTracking(begin, points, index) {\n  var previous = 0;\n  var character = 0;\n\n  while (true) {\n    previous = character;\n    character = peek(); // &\\f\n\n    if (previous === 38 && character === 12) {\n      points[index] = 1;\n    }\n\n    if (token(character)) {\n      break;\n    }\n\n    next();\n  }\n\n  return slice(begin, position);\n};\n\nvar toRules = function toRules(parsed, points) {\n  // pretend we've started with a comma\n  var index = -1;\n  var character = 44;\n\n  do {\n    switch (token(character)) {\n      case 0:\n        // &\\f\n        if (character === 38 && peek() === 12) {\n          // this is not 100% correct, we don't account for literal sequences here - like for example quoted strings\n          // stylis inserts \\f after & to know when & where it should replace this sequence with the context selector\n          // and when it should just concatenate the outer and inner selectors\n          // it's very unlikely for this sequence to actually appear in a different context, so we just leverage this fact here\n          points[index] = 1;\n        }\n\n        parsed[index] += identifierWithPointTracking(position - 1, points, index);\n        break;\n\n      case 2:\n        parsed[index] += delimit(character);\n        break;\n\n      case 4:\n        // comma\n        if (character === 44) {\n          // colon\n          parsed[++index] = peek() === 58 ? '&\\f' : '';\n          points[index] = parsed[index].length;\n          break;\n        }\n\n      // fallthrough\n\n      default:\n        parsed[index] += from(character);\n    }\n  } while (character = next());\n\n  return parsed;\n};\n\nvar getRules = function getRules(value, points) {\n  return dealloc(toRules(alloc(value), points));\n}; // WeakSet would be more appropriate, but only WeakMap is supported in IE11\n\n\nvar fixedElements = /* #__PURE__ */new WeakMap();\nvar compat = function compat(element) {\n  if (element.type !== 'rule' || !element.parent || // positive .length indicates that this rule contains pseudo\n  // negative .length indicates that this rule has been already prefixed\n  element.length < 1) {\n    return;\n  }\n\n  var value = element.value,\n      parent = element.parent;\n  var isImplicitRule = element.column === parent.column && element.line === parent.line;\n\n  while (parent.type !== 'rule') {\n    parent = parent.parent;\n    if (!parent) return;\n  } // short-circuit for the simplest case\n\n\n  if (element.props.length === 1 && value.charCodeAt(0) !== 58\n  /* colon */\n  && !fixedElements.get(parent)) {\n    return;\n  } // if this is an implicitly inserted rule (the one eagerly inserted at the each new nested level)\n  // then the props has already been manipulated beforehand as they that array is shared between it and its \"rule parent\"\n\n\n  if (isImplicitRule) {\n    return;\n  }\n\n  fixedElements.set(element, true);\n  var points = [];\n  var rules = getRules(value, points);\n  var parentRules = parent.props;\n\n  for (var i = 0, k = 0; i < rules.length; i++) {\n    for (var j = 0; j < parentRules.length; j++, k++) {\n      element.props[k] = points[i] ? rules[i].replace(/&\\f/g, parentRules[j]) : parentRules[j] + \" \" + rules[i];\n    }\n  }\n};\nvar removeLabel = function removeLabel(element) {\n  if (element.type === 'decl') {\n    var value = element.value;\n\n    if ( // charcode for l\n    value.charCodeAt(0) === 108 && // charcode for b\n    value.charCodeAt(2) === 98) {\n      // this ignores label\n      element[\"return\"] = '';\n      element.value = '';\n    }\n  }\n};\nvar ignoreFlag = 'emotion-disable-server-rendering-unsafe-selector-warning-please-do-not-use-this-the-warning-exists-for-a-reason';\n\nvar isIgnoringComment = function isIgnoringComment(element) {\n  return element.type === 'comm' && element.children.indexOf(ignoreFlag) > -1;\n};\n\nvar createUnsafeSelectorsAlarm = function createUnsafeSelectorsAlarm(cache) {\n  return function (element, index, children) {\n    if (element.type !== 'rule' || cache.compat) return;\n    var unsafePseudoClasses = element.value.match(/(:first|:nth|:nth-last)-child/g);\n\n    if (unsafePseudoClasses) {\n      var isNested = !!element.parent; // in nested rules comments become children of the \"auto-inserted\" rule and that's always the `element.parent`\n      //\n      // considering this input:\n      // .a {\n      //   .b /* comm */ {}\n      //   color: hotpink;\n      // }\n      // we get output corresponding to this:\n      // .a {\n      //   & {\n      //     /* comm */\n      //     color: hotpink;\n      //   }\n      //   .b {}\n      // }\n\n      var commentContainer = isNested ? element.parent.children : // global rule at the root level\n      children;\n\n      for (var i = commentContainer.length - 1; i >= 0; i--) {\n        var node = commentContainer[i];\n\n        if (node.line < element.line) {\n          break;\n        } // it is quite weird but comments are *usually* put at `column: element.column - 1`\n        // so we seek *from the end* for the node that is earlier than the rule's `element` and check that\n        // this will also match inputs like this:\n        // .a {\n        //   /* comm */\n        //   .b {}\n        // }\n        //\n        // but that is fine\n        //\n        // it would be the easiest to change the placement of the comment to be the first child of the rule:\n        // .a {\n        //   .b { /* comm */ }\n        // }\n        // with such inputs we wouldn't have to search for the comment at all\n        // TODO: consider changing this comment placement in the next major version\n\n\n        if (node.column < element.column) {\n          if (isIgnoringComment(node)) {\n            return;\n          }\n\n          break;\n        }\n      }\n\n      unsafePseudoClasses.forEach(function (unsafePseudoClass) {\n        console.error(\"The pseudo class \\\"\" + unsafePseudoClass + \"\\\" is potentially unsafe when doing server-side rendering. Try changing it to \\\"\" + unsafePseudoClass.split('-child')[0] + \"-of-type\\\".\");\n      });\n    }\n  };\n};\n\nvar isImportRule = function isImportRule(element) {\n  return element.type.charCodeAt(1) === 105 && element.type.charCodeAt(0) === 64;\n};\n\nvar isPrependedWithRegularRules = function isPrependedWithRegularRules(index, children) {\n  for (var i = index - 1; i >= 0; i--) {\n    if (!isImportRule(children[i])) {\n      return true;\n    }\n  }\n\n  return false;\n}; // use this to remove incorrect elements from further processing\n// so they don't get handed to the `sheet` (or anything else)\n// as that could potentially lead to additional logs which in turn could be overhelming to the user\n\n\nvar nullifyElement = function nullifyElement(element) {\n  element.type = '';\n  element.value = '';\n  element[\"return\"] = '';\n  element.children = '';\n  element.props = '';\n};\n\nvar incorrectImportAlarm = function incorrectImportAlarm(element, index, children) {\n  if (!isImportRule(element)) {\n    return;\n  }\n\n  if (element.parent) {\n    console.error(\"`@import` rules can't be nested inside other rules. Please move it to the top level and put it before regular rules. Keep in mind that they can only be used within global styles.\");\n    nullifyElement(element);\n  } else if (isPrependedWithRegularRules(index, children)) {\n    console.error(\"`@import` rules can't be after other rules. Please put your `@import` rules before your other rules.\");\n    nullifyElement(element);\n  }\n};\n\n/* eslint-disable no-fallthrough */\n\nfunction prefix(value, length) {\n  switch (hash(value, length)) {\n    // color-adjust\n    case 5103:\n      return WEBKIT + 'print-' + value + value;\n    // animation, animation-(delay|direction|duration|fill-mode|iteration-count|name|play-state|timing-function)\n\n    case 5737:\n    case 4201:\n    case 3177:\n    case 3433:\n    case 1641:\n    case 4457:\n    case 2921: // text-decoration, filter, clip-path, backface-visibility, column, box-decoration-break\n\n    case 5572:\n    case 6356:\n    case 5844:\n    case 3191:\n    case 6645:\n    case 3005: // mask, mask-image, mask-(mode|clip|size), mask-(repeat|origin), mask-position, mask-composite,\n\n    case 6391:\n    case 5879:\n    case 5623:\n    case 6135:\n    case 4599:\n    case 4855: // background-clip, columns, column-(count|fill|gap|rule|rule-color|rule-style|rule-width|span|width)\n\n    case 4215:\n    case 6389:\n    case 5109:\n    case 5365:\n    case 5621:\n    case 3829:\n      return WEBKIT + value + value;\n    // appearance, user-select, transform, hyphens, text-size-adjust\n\n    case 5349:\n    case 4246:\n    case 4810:\n    case 6968:\n    case 2756:\n      return WEBKIT + value + MOZ + value + MS + value + value;\n    // flex, flex-direction\n\n    case 6828:\n    case 4268:\n      return WEBKIT + value + MS + value + value;\n    // order\n\n    case 6165:\n      return WEBKIT + value + MS + 'flex-' + value + value;\n    // align-items\n\n    case 5187:\n      return WEBKIT + value + replace(value, /(\\w+).+(:[^]+)/, WEBKIT + 'box-$1$2' + MS + 'flex-$1$2') + value;\n    // align-self\n\n    case 5443:\n      return WEBKIT + value + MS + 'flex-item-' + replace(value, /flex-|-self/, '') + value;\n    // align-content\n\n    case 4675:\n      return WEBKIT + value + MS + 'flex-line-pack' + replace(value, /align-content|flex-|-self/, '') + value;\n    // flex-shrink\n\n    case 5548:\n      return WEBKIT + value + MS + replace(value, 'shrink', 'negative') + value;\n    // flex-basis\n\n    case 5292:\n      return WEBKIT + value + MS + replace(value, 'basis', 'preferred-size') + value;\n    // flex-grow\n\n    case 6060:\n      return WEBKIT + 'box-' + replace(value, '-grow', '') + WEBKIT + value + MS + replace(value, 'grow', 'positive') + value;\n    // transition\n\n    case 4554:\n      return WEBKIT + replace(value, /([^-])(transform)/g, '$1' + WEBKIT + '$2') + value;\n    // cursor\n\n    case 6187:\n      return replace(replace(replace(value, /(zoom-|grab)/, WEBKIT + '$1'), /(image-set)/, WEBKIT + '$1'), value, '') + value;\n    // background, background-image\n\n    case 5495:\n    case 3959:\n      return replace(value, /(image-set\\([^]*)/, WEBKIT + '$1' + '$`$1');\n    // justify-content\n\n    case 4968:\n      return replace(replace(value, /(.+:)(flex-)?(.*)/, WEBKIT + 'box-pack:$3' + MS + 'flex-pack:$3'), /s.+-b[^;]+/, 'justify') + WEBKIT + value + value;\n    // (margin|padding)-inline-(start|end)\n\n    case 4095:\n    case 3583:\n    case 4068:\n    case 2532:\n      return replace(value, /(.+)-inline(.+)/, WEBKIT + '$1$2') + value;\n    // (min|max)?(width|height|inline-size|block-size)\n\n    case 8116:\n    case 7059:\n    case 5753:\n    case 5535:\n    case 5445:\n    case 5701:\n    case 4933:\n    case 4677:\n    case 5533:\n    case 5789:\n    case 5021:\n    case 4765:\n      // stretch, max-content, min-content, fill-available\n      if (strlen(value) - 1 - length > 6) switch (charat(value, length + 1)) {\n        // (m)ax-content, (m)in-content\n        case 109:\n          // -\n          if (charat(value, length + 4) !== 45) break;\n        // (f)ill-available, (f)it-content\n\n        case 102:\n          return replace(value, /(.+:)(.+)-([^]+)/, '$1' + WEBKIT + '$2-$3' + '$1' + MOZ + (charat(value, length + 3) == 108 ? '$3' : '$2-$3')) + value;\n        // (s)tretch\n\n        case 115:\n          return ~indexof(value, 'stretch') ? prefix(replace(value, 'stretch', 'fill-available'), length) + value : value;\n      }\n      break;\n    // position: sticky\n\n    case 4949:\n      // (s)ticky?\n      if (charat(value, length + 1) !== 115) break;\n    // display: (flex|inline-flex)\n\n    case 6444:\n      switch (charat(value, strlen(value) - 3 - (~indexof(value, '!important') && 10))) {\n        // stic(k)y\n        case 107:\n          return replace(value, ':', ':' + WEBKIT) + value;\n        // (inline-)?fl(e)x\n\n        case 101:\n          return replace(value, /(.+:)([^;!]+)(;|!.+)?/, '$1' + WEBKIT + (charat(value, 14) === 45 ? 'inline-' : '') + 'box$3' + '$1' + WEBKIT + '$2$3' + '$1' + MS + '$2box$3') + value;\n      }\n\n      break;\n    // writing-mode\n\n    case 5936:\n      switch (charat(value, length + 11)) {\n        // vertical-l(r)\n        case 114:\n          return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb') + value;\n        // vertical-r(l)\n\n        case 108:\n          return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb-rl') + value;\n        // horizontal(-)tb\n\n        case 45:\n          return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'lr') + value;\n      }\n\n      return WEBKIT + value + MS + value + value;\n  }\n\n  return value;\n}\n\nvar prefixer = function prefixer(element, index, children, callback) {\n  if (element.length > -1) if (!element[\"return\"]) switch (element.type) {\n    case DECLARATION:\n      element[\"return\"] = prefix(element.value, element.length);\n      break;\n\n    case KEYFRAMES:\n      return serialize([copy(element, {\n        value: replace(element.value, '@', '@' + WEBKIT)\n      })], callback);\n\n    case RULESET:\n      if (element.length) return combine(element.props, function (value) {\n        switch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n          // :read-(only|write)\n          case ':read-only':\n          case ':read-write':\n            return serialize([copy(element, {\n              props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]\n            })], callback);\n          // :placeholder\n\n          case '::placeholder':\n            return serialize([copy(element, {\n              props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]\n            }), copy(element, {\n              props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]\n            }), copy(element, {\n              props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]\n            })], callback);\n        }\n\n        return '';\n      });\n  }\n};\n\nvar defaultStylisPlugins = [prefixer];\n\nvar createCache = function createCache(options) {\n  var key = options.key;\n\n  if (process.env.NODE_ENV !== 'production' && !key) {\n    throw new Error(\"You have to configure `key` for your cache. Please make sure it's unique (and not equal to 'css') as it's used for linking styles to your cache.\\n\" + \"If multiple caches share the same key they might \\\"fight\\\" for each other's style elements.\");\n  }\n\n  if (key === 'css') {\n    var ssrStyles = document.querySelectorAll(\"style[data-emotion]:not([data-s])\"); // get SSRed styles out of the way of React's hydration\n    // document.head is a safe place to move them to(though note document.head is not necessarily the last place they will be)\n    // note this very very intentionally targets all style elements regardless of the key to ensure\n    // that creating a cache works inside of render of a React component\n\n    Array.prototype.forEach.call(ssrStyles, function (node) {\n      // we want to only move elements which have a space in the data-emotion attribute value\n      // because that indicates that it is an Emotion 11 server-side rendered style elements\n      // while we will already ignore Emotion 11 client-side inserted styles because of the :not([data-s]) part in the selector\n      // Emotion 10 client-side inserted styles did not have data-s (but importantly did not have a space in their data-emotion attributes)\n      // so checking for the space ensures that loading Emotion 11 after Emotion 10 has inserted some styles\n      // will not result in the Emotion 10 styles being destroyed\n      var dataEmotionAttribute = node.getAttribute('data-emotion');\n\n      if (dataEmotionAttribute.indexOf(' ') === -1) {\n        return;\n      }\n      document.head.appendChild(node);\n      node.setAttribute('data-s', '');\n    });\n  }\n\n  var stylisPlugins = options.stylisPlugins || defaultStylisPlugins;\n\n  if (process.env.NODE_ENV !== 'production') {\n    // $FlowFixMe\n    if (/[^a-z-]/.test(key)) {\n      throw new Error(\"Emotion key must only contain lower case alphabetical characters and - but \\\"\" + key + \"\\\" was passed\");\n    }\n  }\n\n  var inserted = {};\n  var container;\n  var nodesToHydrate = [];\n\n  {\n    container = options.container || document.head;\n    Array.prototype.forEach.call( // this means we will ignore elements which don't have a space in them which\n    // means that the style elements we're looking at are only Emotion 11 server-rendered style elements\n    document.querySelectorAll(\"style[data-emotion^=\\\"\" + key + \" \\\"]\"), function (node) {\n      var attrib = node.getAttribute(\"data-emotion\").split(' '); // $FlowFixMe\n\n      for (var i = 1; i < attrib.length; i++) {\n        inserted[attrib[i]] = true;\n      }\n\n      nodesToHydrate.push(node);\n    });\n  }\n\n  var _insert;\n\n  var omnipresentPlugins = [compat, removeLabel];\n\n  if (process.env.NODE_ENV !== 'production') {\n    omnipresentPlugins.push(createUnsafeSelectorsAlarm({\n      get compat() {\n        return cache.compat;\n      }\n\n    }), incorrectImportAlarm);\n  }\n\n  {\n    var currentSheet;\n    var finalizingPlugins = [stringify, process.env.NODE_ENV !== 'production' ? function (element) {\n      if (!element.root) {\n        if (element[\"return\"]) {\n          currentSheet.insert(element[\"return\"]);\n        } else if (element.value && element.type !== COMMENT) {\n          // insert empty rule in non-production environments\n          // so @emotion/jest can grab `key` from the (JS)DOM for caches without any rules inserted yet\n          currentSheet.insert(element.value + \"{}\");\n        }\n      }\n    } : rulesheet(function (rule) {\n      currentSheet.insert(rule);\n    })];\n    var serializer = middleware(omnipresentPlugins.concat(stylisPlugins, finalizingPlugins));\n\n    var stylis = function stylis(styles) {\n      return serialize(compile(styles), serializer);\n    };\n\n    _insert = function insert(selector, serialized, sheet, shouldCache) {\n      currentSheet = sheet;\n\n      if (process.env.NODE_ENV !== 'production' && serialized.map !== undefined) {\n        currentSheet = {\n          insert: function insert(rule) {\n            sheet.insert(rule + serialized.map);\n          }\n        };\n      }\n\n      stylis(selector ? selector + \"{\" + serialized.styles + \"}\" : serialized.styles);\n\n      if (shouldCache) {\n        cache.inserted[serialized.name] = true;\n      }\n    };\n  }\n\n  var cache = {\n    key: key,\n    sheet: new StyleSheet({\n      key: key,\n      container: container,\n      nonce: options.nonce,\n      speedy: options.speedy,\n      prepend: options.prepend,\n      insertionPoint: options.insertionPoint\n    }),\n    nonce: options.nonce,\n    inserted: inserted,\n    registered: {},\n    insert: _insert\n  };\n  cache.sheet.hydrate(nodesToHydrate);\n  return cache;\n};\n\nexport { createCache as default };\n", "var isBrowser = \"object\" !== 'undefined';\nfunction getRegisteredStyles(registered, registeredStyles, classNames) {\n  var rawClassName = '';\n  classNames.split(' ').forEach(function (className) {\n    if (registered[className] !== undefined) {\n      registeredStyles.push(registered[className] + \";\");\n    } else {\n      rawClassName += className + \" \";\n    }\n  });\n  return rawClassName;\n}\nvar registerStyles = function registerStyles(cache, serialized, isStringTag) {\n  var className = cache.key + \"-\" + serialized.name;\n\n  if ( // we only need to add the styles to the registered cache if the\n  // class name could be used further down\n  // the tree but if it's a string tag, we know it won't\n  // so we don't have to add it to registered cache.\n  // this improves memory usage since we can avoid storing the whole style string\n  (isStringTag === false || // we need to always store it if we're in compat mode and\n  // in node since emotion-server relies on whether a style is in\n  // the registered cache to know whether a style is global or not\n  // also, note that this check will be dead code eliminated in the browser\n  isBrowser === false ) && cache.registered[className] === undefined) {\n    cache.registered[className] = serialized.styles;\n  }\n};\nvar insertStyles = function insertStyles(cache, serialized, isStringTag) {\n  registerStyles(cache, serialized, isStringTag);\n  var className = cache.key + \"-\" + serialized.name;\n\n  if (cache.inserted[serialized.name] === undefined) {\n    var current = serialized;\n\n    do {\n      cache.insert(serialized === current ? \".\" + className : '', current, cache.sheet, true);\n\n      current = current.next;\n    } while (current !== undefined);\n  }\n};\n\nexport { getRegisteredStyles, insertStyles, registerStyles };\n", "/* eslint-disable */\n// Inspired by https://github.com/garycourt/murmurhash-js\n// Ported from https://github.com/aappleby/smhasher/blob/61a0530f28277f2e850bfc39600ce61d02b518de/src/MurmurHash2.cpp#L37-L86\nfunction murmur2(str) {\n  // 'm' and 'r' are mixing constants generated offline.\n  // They're not really 'magic', they just happen to work well.\n  // const m = 0x5bd1e995;\n  // const r = 24;\n  // Initialize the hash\n  var h = 0; // Mix 4 bytes at a time into the hash\n\n  var k,\n      i = 0,\n      len = str.length;\n\n  for (; len >= 4; ++i, len -= 4) {\n    k = str.charCodeAt(i) & 0xff | (str.charCodeAt(++i) & 0xff) << 8 | (str.charCodeAt(++i) & 0xff) << 16 | (str.charCodeAt(++i) & 0xff) << 24;\n    k =\n    /* Math.imul(k, m): */\n    (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16);\n    k ^=\n    /* k >>> r: */\n    k >>> 24;\n    h =\n    /* Math.imul(k, m): */\n    (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16) ^\n    /* Math.imul(h, m): */\n    (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n  } // Handle the last few bytes of the input array\n\n\n  switch (len) {\n    case 3:\n      h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n\n    case 2:\n      h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n\n    case 1:\n      h ^= str.charCodeAt(i) & 0xff;\n      h =\n      /* Math.imul(h, m): */\n      (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n  } // Do a few final mixes of the hash to ensure the last few\n  // bytes are well-incorporated.\n\n\n  h ^= h >>> 13;\n  h =\n  /* Math.imul(h, m): */\n  (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n  return ((h ^ h >>> 15) >>> 0).toString(36);\n}\n\nexport { murmur2 as default };\n", "var unitlessKeys = {\n  animationIterationCount: 1,\n  aspectRatio: 1,\n  borderImageOutset: 1,\n  borderImageSlice: 1,\n  borderImageWidth: 1,\n  boxFlex: 1,\n  boxFlexGroup: 1,\n  boxOrdinalGroup: 1,\n  columnCount: 1,\n  columns: 1,\n  flex: 1,\n  flexGrow: 1,\n  flexPositive: 1,\n  flexShrink: 1,\n  flexNegative: 1,\n  flexOrder: 1,\n  gridRow: 1,\n  gridRowEnd: 1,\n  gridRowSpan: 1,\n  gridRowStart: 1,\n  gridColumn: 1,\n  gridColumnEnd: 1,\n  gridColumnSpan: 1,\n  gridColumnStart: 1,\n  msGridRow: 1,\n  msGridRowSpan: 1,\n  msGridColumn: 1,\n  msGridColumnSpan: 1,\n  fontWeight: 1,\n  lineHeight: 1,\n  opacity: 1,\n  order: 1,\n  orphans: 1,\n  tabSize: 1,\n  widows: 1,\n  zIndex: 1,\n  zoom: 1,\n  WebkitLineClamp: 1,\n  // SVG-related properties\n  fillOpacity: 1,\n  floodOpacity: 1,\n  stopOpacity: 1,\n  strokeDasharray: 1,\n  strokeDashoffset: 1,\n  strokeMiterlimit: 1,\n  strokeOpacity: 1,\n  strokeWidth: 1\n};\n\nexport { unitlessKeys as default };\n", "import hashString from '@emotion/hash';\nimport unitless from '@emotion/unitless';\nimport memoize from '@emotion/memoize';\n\nvar ILLEGAL_ESCAPE_SEQUENCE_ERROR = \"You have illegal escape sequence in your template literal, most likely inside content's property value.\\nBecause you write your CSS inside a JavaScript string you actually have to do double escaping, so for example \\\"content: '\\\\00d7';\\\" should become \\\"content: '\\\\\\\\00d7';\\\".\\nYou can read more about this here:\\nhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#ES2018_revision_of_illegal_escape_sequences\";\nvar UNDEFINED_AS_OBJECT_KEY_ERROR = \"You have passed in falsy value as style object's key (can happen when in example you pass unexported component as computed key).\";\nvar hyphenateRegex = /[A-Z]|^ms/g;\nvar animationRegex = /_EMO_([^_]+?)_([^]*?)_EMO_/g;\n\nvar isCustomProperty = function isCustomProperty(property) {\n  return property.charCodeAt(1) === 45;\n};\n\nvar isProcessableValue = function isProcessableValue(value) {\n  return value != null && typeof value !== 'boolean';\n};\n\nvar processStyleName = /* #__PURE__ */memoize(function (styleName) {\n  return isCustomProperty(styleName) ? styleName : styleName.replace(hyphenateRegex, '-$&').toLowerCase();\n});\n\nvar processStyleValue = function processStyleValue(key, value) {\n  switch (key) {\n    case 'animation':\n    case 'animationName':\n      {\n        if (typeof value === 'string') {\n          return value.replace(animationRegex, function (match, p1, p2) {\n            cursor = {\n              name: p1,\n              styles: p2,\n              next: cursor\n            };\n            return p1;\n          });\n        }\n      }\n  }\n\n  if (unitless[key] !== 1 && !isCustomProperty(key) && typeof value === 'number' && value !== 0) {\n    return value + 'px';\n  }\n\n  return value;\n};\n\nif (process.env.NODE_ENV !== 'production') {\n  var contentValuePattern = /(var|attr|counters?|url|element|(((repeating-)?(linear|radial))|conic)-gradient)\\(|(no-)?(open|close)-quote/;\n  var contentValues = ['normal', 'none', 'initial', 'inherit', 'unset'];\n  var oldProcessStyleValue = processStyleValue;\n  var msPattern = /^-ms-/;\n  var hyphenPattern = /-(.)/g;\n  var hyphenatedCache = {};\n\n  processStyleValue = function processStyleValue(key, value) {\n    if (key === 'content') {\n      if (typeof value !== 'string' || contentValues.indexOf(value) === -1 && !contentValuePattern.test(value) && (value.charAt(0) !== value.charAt(value.length - 1) || value.charAt(0) !== '\"' && value.charAt(0) !== \"'\")) {\n        throw new Error(\"You seem to be using a value for 'content' without quotes, try replacing it with `content: '\\\"\" + value + \"\\\"'`\");\n      }\n    }\n\n    var processed = oldProcessStyleValue(key, value);\n\n    if (processed !== '' && !isCustomProperty(key) && key.indexOf('-') !== -1 && hyphenatedCache[key] === undefined) {\n      hyphenatedCache[key] = true;\n      console.error(\"Using kebab-case for css properties in objects is not supported. Did you mean \" + key.replace(msPattern, 'ms-').replace(hyphenPattern, function (str, _char) {\n        return _char.toUpperCase();\n      }) + \"?\");\n    }\n\n    return processed;\n  };\n}\n\nvar noComponentSelectorMessage = 'Component selectors can only be used in conjunction with ' + '@emotion/babel-plugin, the swc Emotion plugin, or another Emotion-aware ' + 'compiler transform.';\n\nfunction handleInterpolation(mergedProps, registered, interpolation) {\n  if (interpolation == null) {\n    return '';\n  }\n\n  if (interpolation.__emotion_styles !== undefined) {\n    if (process.env.NODE_ENV !== 'production' && interpolation.toString() === 'NO_COMPONENT_SELECTOR') {\n      throw new Error(noComponentSelectorMessage);\n    }\n\n    return interpolation;\n  }\n\n  switch (typeof interpolation) {\n    case 'boolean':\n      {\n        return '';\n      }\n\n    case 'object':\n      {\n        if (interpolation.anim === 1) {\n          cursor = {\n            name: interpolation.name,\n            styles: interpolation.styles,\n            next: cursor\n          };\n          return interpolation.name;\n        }\n\n        if (interpolation.styles !== undefined) {\n          var next = interpolation.next;\n\n          if (next !== undefined) {\n            // not the most efficient thing ever but this is a pretty rare case\n            // and there will be very few iterations of this generally\n            while (next !== undefined) {\n              cursor = {\n                name: next.name,\n                styles: next.styles,\n                next: cursor\n              };\n              next = next.next;\n            }\n          }\n\n          var styles = interpolation.styles + \";\";\n\n          if (process.env.NODE_ENV !== 'production' && interpolation.map !== undefined) {\n            styles += interpolation.map;\n          }\n\n          return styles;\n        }\n\n        return createStringFromObject(mergedProps, registered, interpolation);\n      }\n\n    case 'function':\n      {\n        if (mergedProps !== undefined) {\n          var previousCursor = cursor;\n          var result = interpolation(mergedProps);\n          cursor = previousCursor;\n          return handleInterpolation(mergedProps, registered, result);\n        } else if (process.env.NODE_ENV !== 'production') {\n          console.error('Functions that are interpolated in css calls will be stringified.\\n' + 'If you want to have a css call based on props, create a function that returns a css call like this\\n' + 'let dynamicStyle = (props) => css`color: ${props.color}`\\n' + 'It can be called directly with props or interpolated in a styled call like this\\n' + \"let SomeComponent = styled('div')`${dynamicStyle}`\");\n        }\n\n        break;\n      }\n\n    case 'string':\n      if (process.env.NODE_ENV !== 'production') {\n        var matched = [];\n        var replaced = interpolation.replace(animationRegex, function (match, p1, p2) {\n          var fakeVarName = \"animation\" + matched.length;\n          matched.push(\"const \" + fakeVarName + \" = keyframes`\" + p2.replace(/^@keyframes animation-\\w+/, '') + \"`\");\n          return \"${\" + fakeVarName + \"}\";\n        });\n\n        if (matched.length) {\n          console.error('`keyframes` output got interpolated into plain string, please wrap it with `css`.\\n\\n' + 'Instead of doing this:\\n\\n' + [].concat(matched, [\"`\" + replaced + \"`\"]).join('\\n') + '\\n\\nYou should wrap it with `css` like this:\\n\\n' + (\"css`\" + replaced + \"`\"));\n        }\n      }\n\n      break;\n  } // finalize string values (regular strings and functions interpolated into css calls)\n\n\n  if (registered == null) {\n    return interpolation;\n  }\n\n  var cached = registered[interpolation];\n  return cached !== undefined ? cached : interpolation;\n}\n\nfunction createStringFromObject(mergedProps, registered, obj) {\n  var string = '';\n\n  if (Array.isArray(obj)) {\n    for (var i = 0; i < obj.length; i++) {\n      string += handleInterpolation(mergedProps, registered, obj[i]) + \";\";\n    }\n  } else {\n    for (var _key in obj) {\n      var value = obj[_key];\n\n      if (typeof value !== 'object') {\n        if (registered != null && registered[value] !== undefined) {\n          string += _key + \"{\" + registered[value] + \"}\";\n        } else if (isProcessableValue(value)) {\n          string += processStyleName(_key) + \":\" + processStyleValue(_key, value) + \";\";\n        }\n      } else {\n        if (_key === 'NO_COMPONENT_SELECTOR' && process.env.NODE_ENV !== 'production') {\n          throw new Error(noComponentSelectorMessage);\n        }\n\n        if (Array.isArray(value) && typeof value[0] === 'string' && (registered == null || registered[value[0]] === undefined)) {\n          for (var _i = 0; _i < value.length; _i++) {\n            if (isProcessableValue(value[_i])) {\n              string += processStyleName(_key) + \":\" + processStyleValue(_key, value[_i]) + \";\";\n            }\n          }\n        } else {\n          var interpolated = handleInterpolation(mergedProps, registered, value);\n\n          switch (_key) {\n            case 'animation':\n            case 'animationName':\n              {\n                string += processStyleName(_key) + \":\" + interpolated + \";\";\n                break;\n              }\n\n            default:\n              {\n                if (process.env.NODE_ENV !== 'production' && _key === 'undefined') {\n                  console.error(UNDEFINED_AS_OBJECT_KEY_ERROR);\n                }\n\n                string += _key + \"{\" + interpolated + \"}\";\n              }\n          }\n        }\n      }\n    }\n  }\n\n  return string;\n}\n\nvar labelPattern = /label:\\s*([^\\s;\\n{]+)\\s*(;|$)/g;\nvar sourceMapPattern;\n\nif (process.env.NODE_ENV !== 'production') {\n  sourceMapPattern = /\\/\\*#\\ssourceMappingURL=data:application\\/json;\\S+\\s+\\*\\//g;\n} // this is the cursor for keyframes\n// keyframes are stored on the SerializedStyles object as a linked list\n\n\nvar cursor;\nvar serializeStyles = function serializeStyles(args, registered, mergedProps) {\n  if (args.length === 1 && typeof args[0] === 'object' && args[0] !== null && args[0].styles !== undefined) {\n    return args[0];\n  }\n\n  var stringMode = true;\n  var styles = '';\n  cursor = undefined;\n  var strings = args[0];\n\n  if (strings == null || strings.raw === undefined) {\n    stringMode = false;\n    styles += handleInterpolation(mergedProps, registered, strings);\n  } else {\n    if (process.env.NODE_ENV !== 'production' && strings[0] === undefined) {\n      console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n    }\n\n    styles += strings[0];\n  } // we start at 1 since we've already handled the first arg\n\n\n  for (var i = 1; i < args.length; i++) {\n    styles += handleInterpolation(mergedProps, registered, args[i]);\n\n    if (stringMode) {\n      if (process.env.NODE_ENV !== 'production' && strings[i] === undefined) {\n        console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n      }\n\n      styles += strings[i];\n    }\n  }\n\n  var sourceMap;\n\n  if (process.env.NODE_ENV !== 'production') {\n    styles = styles.replace(sourceMapPattern, function (match) {\n      sourceMap = match;\n      return '';\n    });\n  } // using a global regex with .exec is stateful so lastIndex has to be reset each time\n\n\n  labelPattern.lastIndex = 0;\n  var identifierName = '';\n  var match; // https://esbench.com/bench/5b809c2cf2949800a0f61fb5\n\n  while ((match = labelPattern.exec(styles)) !== null) {\n    identifierName += '-' + // $FlowFixMe we know it's not null\n    match[1];\n  }\n\n  var name = hashString(styles) + identifierName;\n\n  if (process.env.NODE_ENV !== 'production') {\n    // $FlowFixMe SerializedStyles type doesn't have toString property (and we don't want to add it)\n    return {\n      name: name,\n      styles: styles,\n      map: sourceMap,\n      next: cursor,\n      toString: function toString() {\n        return \"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\";\n      }\n    };\n  }\n\n  return {\n    name: name,\n    styles: styles,\n    next: cursor\n  };\n};\n\nexport { serializeStyles };\n", "import * as React from 'react';\n\nvar syncFallback = function syncFallback(create) {\n  return create();\n};\n\nvar useInsertionEffect = React['useInsertion' + 'Effect'] ? React['useInsertion' + 'Effect'] : false;\nvar useInsertionEffectAlwaysWithSyncFallback = useInsertionEffect || syncFallback;\nvar useInsertionEffectWithLayoutFallback = useInsertionEffect || React.useLayoutEffect;\n\nexport { useInsertionEffectAlwaysWithSyncFallback, useInsertionEffectWithLayoutFallback };\n", "import { h as hasOwnProperty, E as Emotion, c as createEmotionProps, w as withEmotionCache, T as ThemeContext, i as isBrowser$1 } from './emotion-element-c39617d8.browser.esm.js';\nexport { C as CacheProvider, T as ThemeContext, a as ThemeProvider, _ as __unsafe_useEmotionCache, u as useTheme, w as withEmotionCache, b as withTheme } from './emotion-element-c39617d8.browser.esm.js';\nimport * as React from 'react';\nimport { insertStyles, registerStyles, getRegisteredStyles } from '@emotion/utils';\nimport { useInsertionEffectWithLayoutFallback, useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';\nimport { serializeStyles } from '@emotion/serialize';\nimport '@emotion/cache';\nimport '@babel/runtime/helpers/extends';\nimport '@emotion/weak-memoize';\nimport '../_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js';\nimport 'hoist-non-react-statics';\n\nvar pkg = {\n\tname: \"@emotion/react\",\n\tversion: \"11.11.1\",\n\tmain: \"dist/emotion-react.cjs.js\",\n\tmodule: \"dist/emotion-react.esm.js\",\n\tbrowser: {\n\t\t\"./dist/emotion-react.esm.js\": \"./dist/emotion-react.browser.esm.js\"\n\t},\n\texports: {\n\t\t\".\": {\n\t\t\tmodule: {\n\t\t\t\tworker: \"./dist/emotion-react.worker.esm.js\",\n\t\t\t\tbrowser: \"./dist/emotion-react.browser.esm.js\",\n\t\t\t\t\"default\": \"./dist/emotion-react.esm.js\"\n\t\t\t},\n\t\t\t\"import\": \"./dist/emotion-react.cjs.mjs\",\n\t\t\t\"default\": \"./dist/emotion-react.cjs.js\"\n\t\t},\n\t\t\"./jsx-runtime\": {\n\t\t\tmodule: {\n\t\t\t\tworker: \"./jsx-runtime/dist/emotion-react-jsx-runtime.worker.esm.js\",\n\t\t\t\tbrowser: \"./jsx-runtime/dist/emotion-react-jsx-runtime.browser.esm.js\",\n\t\t\t\t\"default\": \"./jsx-runtime/dist/emotion-react-jsx-runtime.esm.js\"\n\t\t\t},\n\t\t\t\"import\": \"./jsx-runtime/dist/emotion-react-jsx-runtime.cjs.mjs\",\n\t\t\t\"default\": \"./jsx-runtime/dist/emotion-react-jsx-runtime.cjs.js\"\n\t\t},\n\t\t\"./_isolated-hnrs\": {\n\t\t\tmodule: {\n\t\t\t\tworker: \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.worker.esm.js\",\n\t\t\t\tbrowser: \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js\",\n\t\t\t\t\"default\": \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.esm.js\"\n\t\t\t},\n\t\t\t\"import\": \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.cjs.mjs\",\n\t\t\t\"default\": \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.cjs.js\"\n\t\t},\n\t\t\"./jsx-dev-runtime\": {\n\t\t\tmodule: {\n\t\t\t\tworker: \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.worker.esm.js\",\n\t\t\t\tbrowser: \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.browser.esm.js\",\n\t\t\t\t\"default\": \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.esm.js\"\n\t\t\t},\n\t\t\t\"import\": \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.cjs.mjs\",\n\t\t\t\"default\": \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.cjs.js\"\n\t\t},\n\t\t\"./package.json\": \"./package.json\",\n\t\t\"./types/css-prop\": \"./types/css-prop.d.ts\",\n\t\t\"./macro\": {\n\t\t\ttypes: {\n\t\t\t\t\"import\": \"./macro.d.mts\",\n\t\t\t\t\"default\": \"./macro.d.ts\"\n\t\t\t},\n\t\t\t\"default\": \"./macro.js\"\n\t\t}\n\t},\n\ttypes: \"types/index.d.ts\",\n\tfiles: [\n\t\t\"src\",\n\t\t\"dist\",\n\t\t\"jsx-runtime\",\n\t\t\"jsx-dev-runtime\",\n\t\t\"_isolated-hnrs\",\n\t\t\"types/*.d.ts\",\n\t\t\"macro.*\"\n\t],\n\tsideEffects: false,\n\tauthor: \"Emotion Contributors\",\n\tlicense: \"MIT\",\n\tscripts: {\n\t\t\"test:typescript\": \"dtslint types\"\n\t},\n\tdependencies: {\n\t\t\"@babel/runtime\": \"^7.18.3\",\n\t\t\"@emotion/babel-plugin\": \"^11.11.0\",\n\t\t\"@emotion/cache\": \"^11.11.0\",\n\t\t\"@emotion/serialize\": \"^1.1.2\",\n\t\t\"@emotion/use-insertion-effect-with-fallbacks\": \"^1.0.1\",\n\t\t\"@emotion/utils\": \"^1.2.1\",\n\t\t\"@emotion/weak-memoize\": \"^0.3.1\",\n\t\t\"hoist-non-react-statics\": \"^3.3.1\"\n\t},\n\tpeerDependencies: {\n\t\treact: \">=16.8.0\"\n\t},\n\tpeerDependenciesMeta: {\n\t\t\"@types/react\": {\n\t\t\toptional: true\n\t\t}\n\t},\n\tdevDependencies: {\n\t\t\"@definitelytyped/dtslint\": \"0.0.112\",\n\t\t\"@emotion/css\": \"11.11.0\",\n\t\t\"@emotion/css-prettifier\": \"1.1.3\",\n\t\t\"@emotion/server\": \"11.11.0\",\n\t\t\"@emotion/styled\": \"11.11.0\",\n\t\t\"html-tag-names\": \"^1.1.2\",\n\t\treact: \"16.14.0\",\n\t\t\"svg-tag-names\": \"^1.1.1\",\n\t\ttypescript: \"^4.5.5\"\n\t},\n\trepository: \"https://github.com/emotion-js/emotion/tree/main/packages/react\",\n\tpublishConfig: {\n\t\taccess: \"public\"\n\t},\n\t\"umd:main\": \"dist/emotion-react.umd.min.js\",\n\tpreconstruct: {\n\t\tentrypoints: [\n\t\t\t\"./index.js\",\n\t\t\t\"./jsx-runtime.js\",\n\t\t\t\"./jsx-dev-runtime.js\",\n\t\t\t\"./_isolated-hnrs.js\"\n\t\t],\n\t\tumdName: \"emotionReact\",\n\t\texports: {\n\t\t\tenvConditions: [\n\t\t\t\t\"browser\",\n\t\t\t\t\"worker\"\n\t\t\t],\n\t\t\textra: {\n\t\t\t\t\"./types/css-prop\": \"./types/css-prop.d.ts\",\n\t\t\t\t\"./macro\": {\n\t\t\t\t\ttypes: {\n\t\t\t\t\t\t\"import\": \"./macro.d.mts\",\n\t\t\t\t\t\t\"default\": \"./macro.d.ts\"\n\t\t\t\t\t},\n\t\t\t\t\t\"default\": \"./macro.js\"\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar jsx = function jsx(type, props) {\n  var args = arguments;\n\n  if (props == null || !hasOwnProperty.call(props, 'css')) {\n    // $FlowFixMe\n    return React.createElement.apply(undefined, args);\n  }\n\n  var argsLength = args.length;\n  var createElementArgArray = new Array(argsLength);\n  createElementArgArray[0] = Emotion;\n  createElementArgArray[1] = createEmotionProps(type, props);\n\n  for (var i = 2; i < argsLength; i++) {\n    createElementArgArray[i] = args[i];\n  } // $FlowFixMe\n\n\n  return React.createElement.apply(null, createElementArgArray);\n};\n\nvar warnedAboutCssPropForGlobal = false; // maintain place over rerenders.\n// initial render from browser, insertBefore context.sheet.tags[0] or if a style hasn't been inserted there yet, appendChild\n// initial client-side render from SSR, use place of hydrating tag\n\nvar Global = /* #__PURE__ */withEmotionCache(function (props, cache) {\n  if (process.env.NODE_ENV !== 'production' && !warnedAboutCssPropForGlobal && ( // check for className as well since the user is\n  // probably using the custom createElement which\n  // means it will be turned into a className prop\n  // $FlowFixMe I don't really want to add it to the type since it shouldn't be used\n  props.className || props.css)) {\n    console.error(\"It looks like you're using the css prop on Global, did you mean to use the styles prop instead?\");\n    warnedAboutCssPropForGlobal = true;\n  }\n\n  var styles = props.styles;\n  var serialized = serializeStyles([styles], undefined, React.useContext(ThemeContext));\n\n  if (!isBrowser$1) {\n    var _ref;\n\n    var serializedNames = serialized.name;\n    var serializedStyles = serialized.styles;\n    var next = serialized.next;\n\n    while (next !== undefined) {\n      serializedNames += ' ' + next.name;\n      serializedStyles += next.styles;\n      next = next.next;\n    }\n\n    var shouldCache = cache.compat === true;\n    var rules = cache.insert(\"\", {\n      name: serializedNames,\n      styles: serializedStyles\n    }, cache.sheet, shouldCache);\n\n    if (shouldCache) {\n      return null;\n    }\n\n    return /*#__PURE__*/React.createElement(\"style\", (_ref = {}, _ref[\"data-emotion\"] = cache.key + \"-global \" + serializedNames, _ref.dangerouslySetInnerHTML = {\n      __html: rules\n    }, _ref.nonce = cache.sheet.nonce, _ref));\n  } // yes, i know these hooks are used conditionally\n  // but it is based on a constant that will never change at runtime\n  // it's effectively like having two implementations and switching them out\n  // so it's not actually breaking anything\n\n\n  var sheetRef = React.useRef();\n  useInsertionEffectWithLayoutFallback(function () {\n    var key = cache.key + \"-global\"; // use case of https://github.com/emotion-js/emotion/issues/2675\n\n    var sheet = new cache.sheet.constructor({\n      key: key,\n      nonce: cache.sheet.nonce,\n      container: cache.sheet.container,\n      speedy: cache.sheet.isSpeedy\n    });\n    var rehydrating = false; // $FlowFixMe\n\n    var node = document.querySelector(\"style[data-emotion=\\\"\" + key + \" \" + serialized.name + \"\\\"]\");\n\n    if (cache.sheet.tags.length) {\n      sheet.before = cache.sheet.tags[0];\n    }\n\n    if (node !== null) {\n      rehydrating = true; // clear the hash so this node won't be recognizable as rehydratable by other <Global/>s\n\n      node.setAttribute('data-emotion', key);\n      sheet.hydrate([node]);\n    }\n\n    sheetRef.current = [sheet, rehydrating];\n    return function () {\n      sheet.flush();\n    };\n  }, [cache]);\n  useInsertionEffectWithLayoutFallback(function () {\n    var sheetRefCurrent = sheetRef.current;\n    var sheet = sheetRefCurrent[0],\n        rehydrating = sheetRefCurrent[1];\n\n    if (rehydrating) {\n      sheetRefCurrent[1] = false;\n      return;\n    }\n\n    if (serialized.next !== undefined) {\n      // insert keyframes\n      insertStyles(cache, serialized.next, true);\n    }\n\n    if (sheet.tags.length) {\n      // if this doesn't exist then it will be null so the style element will be appended\n      var element = sheet.tags[sheet.tags.length - 1].nextElementSibling;\n      sheet.before = element;\n      sheet.flush();\n    }\n\n    cache.insert(\"\", serialized, sheet, false);\n  }, [cache, serialized.name]);\n  return null;\n});\n\nif (process.env.NODE_ENV !== 'production') {\n  Global.displayName = 'EmotionGlobal';\n}\n\nfunction css() {\n  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n\n  return serializeStyles(args);\n}\n\nvar keyframes = function keyframes() {\n  var insertable = css.apply(void 0, arguments);\n  var name = \"animation-\" + insertable.name; // $FlowFixMe\n\n  return {\n    name: name,\n    styles: \"@keyframes \" + name + \"{\" + insertable.styles + \"}\",\n    anim: 1,\n    toString: function toString() {\n      return \"_EMO_\" + this.name + \"_\" + this.styles + \"_EMO_\";\n    }\n  };\n};\n\nvar classnames = function classnames(args) {\n  var len = args.length;\n  var i = 0;\n  var cls = '';\n\n  for (; i < len; i++) {\n    var arg = args[i];\n    if (arg == null) continue;\n    var toAdd = void 0;\n\n    switch (typeof arg) {\n      case 'boolean':\n        break;\n\n      case 'object':\n        {\n          if (Array.isArray(arg)) {\n            toAdd = classnames(arg);\n          } else {\n            if (process.env.NODE_ENV !== 'production' && arg.styles !== undefined && arg.name !== undefined) {\n              console.error('You have passed styles created with `css` from `@emotion/react` package to the `cx`.\\n' + '`cx` is meant to compose class names (strings) so you should convert those styles to a class name by passing them to the `css` received from <ClassNames/> component.');\n            }\n\n            toAdd = '';\n\n            for (var k in arg) {\n              if (arg[k] && k) {\n                toAdd && (toAdd += ' ');\n                toAdd += k;\n              }\n            }\n          }\n\n          break;\n        }\n\n      default:\n        {\n          toAdd = arg;\n        }\n    }\n\n    if (toAdd) {\n      cls && (cls += ' ');\n      cls += toAdd;\n    }\n  }\n\n  return cls;\n};\n\nfunction merge(registered, css, className) {\n  var registeredStyles = [];\n  var rawClassName = getRegisteredStyles(registered, registeredStyles, className);\n\n  if (registeredStyles.length < 2) {\n    return className;\n  }\n\n  return rawClassName + css(registeredStyles);\n}\n\nvar Insertion = function Insertion(_ref) {\n  var cache = _ref.cache,\n      serializedArr = _ref.serializedArr;\n  useInsertionEffectAlwaysWithSyncFallback(function () {\n\n    for (var i = 0; i < serializedArr.length; i++) {\n      insertStyles(cache, serializedArr[i], false);\n    }\n  });\n\n  return null;\n};\n\nvar ClassNames = /* #__PURE__ */withEmotionCache(function (props, cache) {\n  var hasRendered = false;\n  var serializedArr = [];\n\n  var css = function css() {\n    if (hasRendered && process.env.NODE_ENV !== 'production') {\n      throw new Error('css can only be used during render');\n    }\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    var serialized = serializeStyles(args, cache.registered);\n    serializedArr.push(serialized); // registration has to happen here as the result of this might get consumed by `cx`\n\n    registerStyles(cache, serialized, false);\n    return cache.key + \"-\" + serialized.name;\n  };\n\n  var cx = function cx() {\n    if (hasRendered && process.env.NODE_ENV !== 'production') {\n      throw new Error('cx can only be used during render');\n    }\n\n    for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      args[_key2] = arguments[_key2];\n    }\n\n    return merge(cache.registered, css, classnames(args));\n  };\n\n  var content = {\n    css: css,\n    cx: cx,\n    theme: React.useContext(ThemeContext)\n  };\n  var ele = props.children(content);\n  hasRendered = true;\n  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Insertion, {\n    cache: cache,\n    serializedArr: serializedArr\n  }), ele);\n});\n\nif (process.env.NODE_ENV !== 'production') {\n  ClassNames.displayName = 'EmotionClassNames';\n}\n\nif (process.env.NODE_ENV !== 'production') {\n  var isBrowser = \"object\" !== 'undefined'; // #1727, #2905 for some reason Jest and Vitest evaluate modules twice if some consuming module gets mocked\n\n  var isTestEnv = typeof jest !== 'undefined' || typeof vi !== 'undefined';\n\n  if (isBrowser && !isTestEnv) {\n    // globalThis has wide browser support - https://caniuse.com/?search=globalThis, Node.js 12 and later\n    var globalContext = // $FlowIgnore\n    typeof globalThis !== 'undefined' ? globalThis // eslint-disable-line no-undef\n    : isBrowser ? window : global;\n    var globalKey = \"__EMOTION_REACT_\" + pkg.version.split('.')[0] + \"__\";\n\n    if (globalContext[globalKey]) {\n      console.warn('You are loading @emotion/react when it is already loaded. Running ' + 'multiple instances may cause problems. This can happen if multiple ' + 'versions are used, or if multiple builds of the same version are ' + 'used.');\n    }\n\n    globalContext[globalKey] = true;\n  }\n}\n\nexport { ClassNames, Global, jsx as createElement, css, jsx, keyframes };\n", "export default function _taggedTemplateLiteral(strings, raw) {\n  if (!raw) {\n    raw = strings.slice(0);\n  }\n  return Object.freeze(Object.defineProperties(strings, {\n    raw: {\n      value: Object.freeze(raw)\n    }\n  }));\n}", "import _objectSpread from '@babel/runtime/helpers/esm/objectSpread2';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport { jsx, keyframes, css as css$2 } from '@emotion/react';\nimport _slicedToArray from '@babel/runtime/helpers/esm/slicedToArray';\nimport _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';\nimport _typeof from '@babel/runtime/helpers/esm/typeof';\nimport _taggedTemplateLiteral from '@babel/runtime/helpers/esm/taggedTemplateLiteral';\nimport _defineProperty from '@babel/runtime/helpers/esm/defineProperty';\nimport { useContext, useRef, useState, useMemo, useCallback, createContext } from 'react';\nimport { createPortal } from 'react-dom';\nimport { autoUpdate } from '@floating-ui/dom';\nimport useLayoutEffect from 'use-isomorphic-layout-effect';\n\nvar _excluded$4 = [\"className\", \"clearValue\", \"cx\", \"getStyles\", \"getClassNames\", \"getValue\", \"hasValue\", \"isMulti\", \"isRtl\", \"options\", \"selectOption\", \"selectProps\", \"setValue\", \"theme\"];\n// ==============================\n// NO OP\n// ==============================\n\nvar noop = function noop() {};\n\n// ==============================\n// Class Name Prefixer\n// ==============================\n\n/**\n String representation of component state for styling with class names.\n\n Expects an array of strings OR a string/object pair:\n - className(['comp', 'comp-arg', 'comp-arg-2'])\n   @returns 'react-select__comp react-select__comp-arg react-select__comp-arg-2'\n - className('comp', { some: true, state: false })\n   @returns 'react-select__comp react-select__comp--some'\n*/\nfunction applyPrefixToName(prefix, name) {\n  if (!name) {\n    return prefix;\n  } else if (name[0] === '-') {\n    return prefix + name;\n  } else {\n    return prefix + '__' + name;\n  }\n}\nfunction classNames(prefix, state) {\n  for (var _len = arguments.length, classNameList = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n    classNameList[_key - 2] = arguments[_key];\n  }\n  var arr = [].concat(classNameList);\n  if (state && prefix) {\n    for (var key in state) {\n      if (state.hasOwnProperty(key) && state[key]) {\n        arr.push(\"\".concat(applyPrefixToName(prefix, key)));\n      }\n    }\n  }\n  return arr.filter(function (i) {\n    return i;\n  }).map(function (i) {\n    return String(i).trim();\n  }).join(' ');\n}\n// ==============================\n// Clean Value\n// ==============================\n\nvar cleanValue = function cleanValue(value) {\n  if (isArray(value)) return value.filter(Boolean);\n  if (_typeof(value) === 'object' && value !== null) return [value];\n  return [];\n};\n\n// ==============================\n// Clean Common Props\n// ==============================\n\nvar cleanCommonProps = function cleanCommonProps(props) {\n  //className\n  props.className;\n    props.clearValue;\n    props.cx;\n    props.getStyles;\n    props.getClassNames;\n    props.getValue;\n    props.hasValue;\n    props.isMulti;\n    props.isRtl;\n    props.options;\n    props.selectOption;\n    props.selectProps;\n    props.setValue;\n    props.theme;\n    var innerProps = _objectWithoutProperties(props, _excluded$4);\n  return _objectSpread({}, innerProps);\n};\n\n// ==============================\n// Get Style Props\n// ==============================\n\nvar getStyleProps = function getStyleProps(props, name, classNamesState) {\n  var cx = props.cx,\n    getStyles = props.getStyles,\n    getClassNames = props.getClassNames,\n    className = props.className;\n  return {\n    css: getStyles(name, props),\n    className: cx(classNamesState !== null && classNamesState !== void 0 ? classNamesState : {}, getClassNames(name, props), className)\n  };\n};\n\n// ==============================\n// Handle Input Change\n// ==============================\n\nfunction handleInputChange(inputValue, actionMeta, onInputChange) {\n  if (onInputChange) {\n    var _newValue = onInputChange(inputValue, actionMeta);\n    if (typeof _newValue === 'string') return _newValue;\n  }\n  return inputValue;\n}\n\n// ==============================\n// Scroll Helpers\n// ==============================\n\nfunction isDocumentElement(el) {\n  return [document.documentElement, document.body, window].indexOf(el) > -1;\n}\n\n// Normalized Scroll Top\n// ------------------------------\n\nfunction normalizedHeight(el) {\n  if (isDocumentElement(el)) {\n    return window.innerHeight;\n  }\n  return el.clientHeight;\n}\n\n// Normalized scrollTo & scrollTop\n// ------------------------------\n\nfunction getScrollTop(el) {\n  if (isDocumentElement(el)) {\n    return window.pageYOffset;\n  }\n  return el.scrollTop;\n}\nfunction scrollTo(el, top) {\n  // with a scroll distance, we perform scroll on the element\n  if (isDocumentElement(el)) {\n    window.scrollTo(0, top);\n    return;\n  }\n  el.scrollTop = top;\n}\n\n// Get Scroll Parent\n// ------------------------------\n\nfunction getScrollParent(element) {\n  var style = getComputedStyle(element);\n  var excludeStaticParent = style.position === 'absolute';\n  var overflowRx = /(auto|scroll)/;\n  if (style.position === 'fixed') return document.documentElement;\n  for (var parent = element; parent = parent.parentElement;) {\n    style = getComputedStyle(parent);\n    if (excludeStaticParent && style.position === 'static') {\n      continue;\n    }\n    if (overflowRx.test(style.overflow + style.overflowY + style.overflowX)) {\n      return parent;\n    }\n  }\n  return document.documentElement;\n}\n\n// Animated Scroll To\n// ------------------------------\n\n/**\n  @param t: time (elapsed)\n  @param b: initial value\n  @param c: amount of change\n  @param d: duration\n*/\nfunction easeOutCubic(t, b, c, d) {\n  return c * ((t = t / d - 1) * t * t + 1) + b;\n}\nfunction animatedScrollTo(element, to) {\n  var duration = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 200;\n  var callback = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : noop;\n  var start = getScrollTop(element);\n  var change = to - start;\n  var increment = 10;\n  var currentTime = 0;\n  function animateScroll() {\n    currentTime += increment;\n    var val = easeOutCubic(currentTime, start, change, duration);\n    scrollTo(element, val);\n    if (currentTime < duration) {\n      window.requestAnimationFrame(animateScroll);\n    } else {\n      callback(element);\n    }\n  }\n  animateScroll();\n}\n\n// Scroll Into View\n// ------------------------------\n\nfunction scrollIntoView(menuEl, focusedEl) {\n  var menuRect = menuEl.getBoundingClientRect();\n  var focusedRect = focusedEl.getBoundingClientRect();\n  var overScroll = focusedEl.offsetHeight / 3;\n  if (focusedRect.bottom + overScroll > menuRect.bottom) {\n    scrollTo(menuEl, Math.min(focusedEl.offsetTop + focusedEl.clientHeight - menuEl.offsetHeight + overScroll, menuEl.scrollHeight));\n  } else if (focusedRect.top - overScroll < menuRect.top) {\n    scrollTo(menuEl, Math.max(focusedEl.offsetTop - overScroll, 0));\n  }\n}\n\n// ==============================\n// Get bounding client object\n// ==============================\n\n// cannot get keys using array notation with DOMRect\nfunction getBoundingClientObj(element) {\n  var rect = element.getBoundingClientRect();\n  return {\n    bottom: rect.bottom,\n    height: rect.height,\n    left: rect.left,\n    right: rect.right,\n    top: rect.top,\n    width: rect.width\n  };\n}\n\n// ==============================\n// Touch Capability Detector\n// ==============================\n\nfunction isTouchCapable() {\n  try {\n    document.createEvent('TouchEvent');\n    return true;\n  } catch (e) {\n    return false;\n  }\n}\n\n// ==============================\n// Mobile Device Detector\n// ==============================\n\nfunction isMobileDevice() {\n  try {\n    return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n  } catch (e) {\n    return false;\n  }\n}\n\n// ==============================\n// Passive Event Detector\n// ==============================\n\n// https://github.com/rafgraph/detect-it/blob/main/src/index.ts#L19-L36\nvar passiveOptionAccessed = false;\nvar options = {\n  get passive() {\n    return passiveOptionAccessed = true;\n  }\n};\n// check for SSR\nvar w = typeof window !== 'undefined' ? window : {};\nif (w.addEventListener && w.removeEventListener) {\n  w.addEventListener('p', noop, options);\n  w.removeEventListener('p', noop, false);\n}\nvar supportsPassiveEvents = passiveOptionAccessed;\nfunction notNullish(item) {\n  return item != null;\n}\nfunction isArray(arg) {\n  return Array.isArray(arg);\n}\nfunction valueTernary(isMulti, multiValue, singleValue) {\n  return isMulti ? multiValue : singleValue;\n}\nfunction singleValueAsValue(singleValue) {\n  return singleValue;\n}\nfunction multiValueAsValue(multiValue) {\n  return multiValue;\n}\nvar removeProps = function removeProps(propsObj) {\n  for (var _len2 = arguments.length, properties = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n    properties[_key2 - 1] = arguments[_key2];\n  }\n  var propsMap = Object.entries(propsObj).filter(function (_ref) {\n    var _ref2 = _slicedToArray(_ref, 1),\n      key = _ref2[0];\n    return !properties.includes(key);\n  });\n  return propsMap.reduce(function (newProps, _ref3) {\n    var _ref4 = _slicedToArray(_ref3, 2),\n      key = _ref4[0],\n      val = _ref4[1];\n    newProps[key] = val;\n    return newProps;\n  }, {});\n};\n\nvar _excluded$3 = [\"children\", \"innerProps\"],\n  _excluded2$1 = [\"children\", \"innerProps\"];\nfunction getMenuPlacement(_ref) {\n  var preferredMaxHeight = _ref.maxHeight,\n    menuEl = _ref.menuEl,\n    minHeight = _ref.minHeight,\n    preferredPlacement = _ref.placement,\n    shouldScroll = _ref.shouldScroll,\n    isFixedPosition = _ref.isFixedPosition,\n    controlHeight = _ref.controlHeight;\n  var scrollParent = getScrollParent(menuEl);\n  var defaultState = {\n    placement: 'bottom',\n    maxHeight: preferredMaxHeight\n  };\n\n  // something went wrong, return default state\n  if (!menuEl || !menuEl.offsetParent) return defaultState;\n\n  // we can't trust `scrollParent.scrollHeight` --> it may increase when\n  // the menu is rendered\n  var _scrollParent$getBoun = scrollParent.getBoundingClientRect(),\n    scrollHeight = _scrollParent$getBoun.height;\n  var _menuEl$getBoundingCl = menuEl.getBoundingClientRect(),\n    menuBottom = _menuEl$getBoundingCl.bottom,\n    menuHeight = _menuEl$getBoundingCl.height,\n    menuTop = _menuEl$getBoundingCl.top;\n  var _menuEl$offsetParent$ = menuEl.offsetParent.getBoundingClientRect(),\n    containerTop = _menuEl$offsetParent$.top;\n  var viewHeight = isFixedPosition ? window.innerHeight : normalizedHeight(scrollParent);\n  var scrollTop = getScrollTop(scrollParent);\n  var marginBottom = parseInt(getComputedStyle(menuEl).marginBottom, 10);\n  var marginTop = parseInt(getComputedStyle(menuEl).marginTop, 10);\n  var viewSpaceAbove = containerTop - marginTop;\n  var viewSpaceBelow = viewHeight - menuTop;\n  var scrollSpaceAbove = viewSpaceAbove + scrollTop;\n  var scrollSpaceBelow = scrollHeight - scrollTop - menuTop;\n  var scrollDown = menuBottom - viewHeight + scrollTop + marginBottom;\n  var scrollUp = scrollTop + menuTop - marginTop;\n  var scrollDuration = 160;\n  switch (preferredPlacement) {\n    case 'auto':\n    case 'bottom':\n      // 1: the menu will fit, do nothing\n      if (viewSpaceBelow >= menuHeight) {\n        return {\n          placement: 'bottom',\n          maxHeight: preferredMaxHeight\n        };\n      }\n\n      // 2: the menu will fit, if scrolled\n      if (scrollSpaceBelow >= menuHeight && !isFixedPosition) {\n        if (shouldScroll) {\n          animatedScrollTo(scrollParent, scrollDown, scrollDuration);\n        }\n        return {\n          placement: 'bottom',\n          maxHeight: preferredMaxHeight\n        };\n      }\n\n      // 3: the menu will fit, if constrained\n      if (!isFixedPosition && scrollSpaceBelow >= minHeight || isFixedPosition && viewSpaceBelow >= minHeight) {\n        if (shouldScroll) {\n          animatedScrollTo(scrollParent, scrollDown, scrollDuration);\n        }\n\n        // we want to provide as much of the menu as possible to the user,\n        // so give them whatever is available below rather than the minHeight.\n        var constrainedHeight = isFixedPosition ? viewSpaceBelow - marginBottom : scrollSpaceBelow - marginBottom;\n        return {\n          placement: 'bottom',\n          maxHeight: constrainedHeight\n        };\n      }\n\n      // 4. Forked beviour when there isn't enough space below\n\n      // AUTO: flip the menu, render above\n      if (preferredPlacement === 'auto' || isFixedPosition) {\n        // may need to be constrained after flipping\n        var _constrainedHeight = preferredMaxHeight;\n        var spaceAbove = isFixedPosition ? viewSpaceAbove : scrollSpaceAbove;\n        if (spaceAbove >= minHeight) {\n          _constrainedHeight = Math.min(spaceAbove - marginBottom - controlHeight, preferredMaxHeight);\n        }\n        return {\n          placement: 'top',\n          maxHeight: _constrainedHeight\n        };\n      }\n\n      // BOTTOM: allow browser to increase scrollable area and immediately set scroll\n      if (preferredPlacement === 'bottom') {\n        if (shouldScroll) {\n          scrollTo(scrollParent, scrollDown);\n        }\n        return {\n          placement: 'bottom',\n          maxHeight: preferredMaxHeight\n        };\n      }\n      break;\n    case 'top':\n      // 1: the menu will fit, do nothing\n      if (viewSpaceAbove >= menuHeight) {\n        return {\n          placement: 'top',\n          maxHeight: preferredMaxHeight\n        };\n      }\n\n      // 2: the menu will fit, if scrolled\n      if (scrollSpaceAbove >= menuHeight && !isFixedPosition) {\n        if (shouldScroll) {\n          animatedScrollTo(scrollParent, scrollUp, scrollDuration);\n        }\n        return {\n          placement: 'top',\n          maxHeight: preferredMaxHeight\n        };\n      }\n\n      // 3: the menu will fit, if constrained\n      if (!isFixedPosition && scrollSpaceAbove >= minHeight || isFixedPosition && viewSpaceAbove >= minHeight) {\n        var _constrainedHeight2 = preferredMaxHeight;\n\n        // we want to provide as much of the menu as possible to the user,\n        // so give them whatever is available below rather than the minHeight.\n        if (!isFixedPosition && scrollSpaceAbove >= minHeight || isFixedPosition && viewSpaceAbove >= minHeight) {\n          _constrainedHeight2 = isFixedPosition ? viewSpaceAbove - marginTop : scrollSpaceAbove - marginTop;\n        }\n        if (shouldScroll) {\n          animatedScrollTo(scrollParent, scrollUp, scrollDuration);\n        }\n        return {\n          placement: 'top',\n          maxHeight: _constrainedHeight2\n        };\n      }\n\n      // 4. not enough space, the browser WILL NOT increase scrollable area when\n      // absolutely positioned element rendered above the viewport (only below).\n      // Flip the menu, render below\n      return {\n        placement: 'bottom',\n        maxHeight: preferredMaxHeight\n      };\n    default:\n      throw new Error(\"Invalid placement provided \\\"\".concat(preferredPlacement, \"\\\".\"));\n  }\n  return defaultState;\n}\n\n// Menu Component\n// ------------------------------\n\nfunction alignToControl(placement) {\n  var placementToCSSProp = {\n    bottom: 'top',\n    top: 'bottom'\n  };\n  return placement ? placementToCSSProp[placement] : 'bottom';\n}\nvar coercePlacement = function coercePlacement(p) {\n  return p === 'auto' ? 'bottom' : p;\n};\nvar menuCSS = function menuCSS(_ref2, unstyled) {\n  var _objectSpread2;\n  var placement = _ref2.placement,\n    _ref2$theme = _ref2.theme,\n    borderRadius = _ref2$theme.borderRadius,\n    spacing = _ref2$theme.spacing,\n    colors = _ref2$theme.colors;\n  return _objectSpread((_objectSpread2 = {\n    label: 'menu'\n  }, _defineProperty(_objectSpread2, alignToControl(placement), '100%'), _defineProperty(_objectSpread2, \"position\", 'absolute'), _defineProperty(_objectSpread2, \"width\", '100%'), _defineProperty(_objectSpread2, \"zIndex\", 1), _objectSpread2), unstyled ? {} : {\n    backgroundColor: colors.neutral0,\n    borderRadius: borderRadius,\n    boxShadow: '0 0 0 1px hsla(0, 0%, 0%, 0.1), 0 4px 11px hsla(0, 0%, 0%, 0.1)',\n    marginBottom: spacing.menuGutter,\n    marginTop: spacing.menuGutter\n  });\n};\nvar PortalPlacementContext = /*#__PURE__*/createContext(null);\n\n// NOTE: internal only\nvar MenuPlacer = function MenuPlacer(props) {\n  var children = props.children,\n    minMenuHeight = props.minMenuHeight,\n    maxMenuHeight = props.maxMenuHeight,\n    menuPlacement = props.menuPlacement,\n    menuPosition = props.menuPosition,\n    menuShouldScrollIntoView = props.menuShouldScrollIntoView,\n    theme = props.theme;\n  var _ref3 = useContext(PortalPlacementContext) || {},\n    setPortalPlacement = _ref3.setPortalPlacement;\n  var ref = useRef(null);\n  var _useState = useState(maxMenuHeight),\n    _useState2 = _slicedToArray(_useState, 2),\n    maxHeight = _useState2[0],\n    setMaxHeight = _useState2[1];\n  var _useState3 = useState(null),\n    _useState4 = _slicedToArray(_useState3, 2),\n    placement = _useState4[0],\n    setPlacement = _useState4[1];\n  var controlHeight = theme.spacing.controlHeight;\n  useLayoutEffect(function () {\n    var menuEl = ref.current;\n    if (!menuEl) return;\n\n    // DO NOT scroll if position is fixed\n    var isFixedPosition = menuPosition === 'fixed';\n    var shouldScroll = menuShouldScrollIntoView && !isFixedPosition;\n    var state = getMenuPlacement({\n      maxHeight: maxMenuHeight,\n      menuEl: menuEl,\n      minHeight: minMenuHeight,\n      placement: menuPlacement,\n      shouldScroll: shouldScroll,\n      isFixedPosition: isFixedPosition,\n      controlHeight: controlHeight\n    });\n    setMaxHeight(state.maxHeight);\n    setPlacement(state.placement);\n    setPortalPlacement === null || setPortalPlacement === void 0 ? void 0 : setPortalPlacement(state.placement);\n  }, [maxMenuHeight, menuPlacement, menuPosition, menuShouldScrollIntoView, minMenuHeight, setPortalPlacement, controlHeight]);\n  return children({\n    ref: ref,\n    placerProps: _objectSpread(_objectSpread({}, props), {}, {\n      placement: placement || coercePlacement(menuPlacement),\n      maxHeight: maxHeight\n    })\n  });\n};\nvar Menu = function Menu(props) {\n  var children = props.children,\n    innerRef = props.innerRef,\n    innerProps = props.innerProps;\n  return jsx(\"div\", _extends({}, getStyleProps(props, 'menu', {\n    menu: true\n  }), {\n    ref: innerRef\n  }, innerProps), children);\n};\nvar Menu$1 = Menu;\n\n// ==============================\n// Menu List\n// ==============================\n\nvar menuListCSS = function menuListCSS(_ref4, unstyled) {\n  var maxHeight = _ref4.maxHeight,\n    baseUnit = _ref4.theme.spacing.baseUnit;\n  return _objectSpread({\n    maxHeight: maxHeight,\n    overflowY: 'auto',\n    position: 'relative',\n    // required for offset[Height, Top] > keyboard scroll\n    WebkitOverflowScrolling: 'touch'\n  }, unstyled ? {} : {\n    paddingBottom: baseUnit,\n    paddingTop: baseUnit\n  });\n};\nvar MenuList = function MenuList(props) {\n  var children = props.children,\n    innerProps = props.innerProps,\n    innerRef = props.innerRef,\n    isMulti = props.isMulti;\n  return jsx(\"div\", _extends({}, getStyleProps(props, 'menuList', {\n    'menu-list': true,\n    'menu-list--is-multi': isMulti\n  }), {\n    ref: innerRef\n  }, innerProps), children);\n};\n\n// ==============================\n// Menu Notices\n// ==============================\n\nvar noticeCSS = function noticeCSS(_ref5, unstyled) {\n  var _ref5$theme = _ref5.theme,\n    baseUnit = _ref5$theme.spacing.baseUnit,\n    colors = _ref5$theme.colors;\n  return _objectSpread({\n    textAlign: 'center'\n  }, unstyled ? {} : {\n    color: colors.neutral40,\n    padding: \"\".concat(baseUnit * 2, \"px \").concat(baseUnit * 3, \"px\")\n  });\n};\nvar noOptionsMessageCSS = noticeCSS;\nvar loadingMessageCSS = noticeCSS;\nvar NoOptionsMessage = function NoOptionsMessage(_ref6) {\n  var _ref6$children = _ref6.children,\n    children = _ref6$children === void 0 ? 'No options' : _ref6$children,\n    innerProps = _ref6.innerProps,\n    restProps = _objectWithoutProperties(_ref6, _excluded$3);\n  return jsx(\"div\", _extends({}, getStyleProps(_objectSpread(_objectSpread({}, restProps), {}, {\n    children: children,\n    innerProps: innerProps\n  }), 'noOptionsMessage', {\n    'menu-notice': true,\n    'menu-notice--no-options': true\n  }), innerProps), children);\n};\nvar LoadingMessage = function LoadingMessage(_ref7) {\n  var _ref7$children = _ref7.children,\n    children = _ref7$children === void 0 ? 'Loading...' : _ref7$children,\n    innerProps = _ref7.innerProps,\n    restProps = _objectWithoutProperties(_ref7, _excluded2$1);\n  return jsx(\"div\", _extends({}, getStyleProps(_objectSpread(_objectSpread({}, restProps), {}, {\n    children: children,\n    innerProps: innerProps\n  }), 'loadingMessage', {\n    'menu-notice': true,\n    'menu-notice--loading': true\n  }), innerProps), children);\n};\n\n// ==============================\n// Menu Portal\n// ==============================\n\nvar menuPortalCSS = function menuPortalCSS(_ref8) {\n  var rect = _ref8.rect,\n    offset = _ref8.offset,\n    position = _ref8.position;\n  return {\n    left: rect.left,\n    position: position,\n    top: offset,\n    width: rect.width,\n    zIndex: 1\n  };\n};\nvar MenuPortal = function MenuPortal(props) {\n  var appendTo = props.appendTo,\n    children = props.children,\n    controlElement = props.controlElement,\n    innerProps = props.innerProps,\n    menuPlacement = props.menuPlacement,\n    menuPosition = props.menuPosition;\n  var menuPortalRef = useRef(null);\n  var cleanupRef = useRef(null);\n  var _useState5 = useState(coercePlacement(menuPlacement)),\n    _useState6 = _slicedToArray(_useState5, 2),\n    placement = _useState6[0],\n    setPortalPlacement = _useState6[1];\n  var portalPlacementContext = useMemo(function () {\n    return {\n      setPortalPlacement: setPortalPlacement\n    };\n  }, []);\n  var _useState7 = useState(null),\n    _useState8 = _slicedToArray(_useState7, 2),\n    computedPosition = _useState8[0],\n    setComputedPosition = _useState8[1];\n  var updateComputedPosition = useCallback(function () {\n    if (!controlElement) return;\n    var rect = getBoundingClientObj(controlElement);\n    var scrollDistance = menuPosition === 'fixed' ? 0 : window.pageYOffset;\n    var offset = rect[placement] + scrollDistance;\n    if (offset !== (computedPosition === null || computedPosition === void 0 ? void 0 : computedPosition.offset) || rect.left !== (computedPosition === null || computedPosition === void 0 ? void 0 : computedPosition.rect.left) || rect.width !== (computedPosition === null || computedPosition === void 0 ? void 0 : computedPosition.rect.width)) {\n      setComputedPosition({\n        offset: offset,\n        rect: rect\n      });\n    }\n  }, [controlElement, menuPosition, placement, computedPosition === null || computedPosition === void 0 ? void 0 : computedPosition.offset, computedPosition === null || computedPosition === void 0 ? void 0 : computedPosition.rect.left, computedPosition === null || computedPosition === void 0 ? void 0 : computedPosition.rect.width]);\n  useLayoutEffect(function () {\n    updateComputedPosition();\n  }, [updateComputedPosition]);\n  var runAutoUpdate = useCallback(function () {\n    if (typeof cleanupRef.current === 'function') {\n      cleanupRef.current();\n      cleanupRef.current = null;\n    }\n    if (controlElement && menuPortalRef.current) {\n      cleanupRef.current = autoUpdate(controlElement, menuPortalRef.current, updateComputedPosition, {\n        elementResize: 'ResizeObserver' in window\n      });\n    }\n  }, [controlElement, updateComputedPosition]);\n  useLayoutEffect(function () {\n    runAutoUpdate();\n  }, [runAutoUpdate]);\n  var setMenuPortalElement = useCallback(function (menuPortalElement) {\n    menuPortalRef.current = menuPortalElement;\n    runAutoUpdate();\n  }, [runAutoUpdate]);\n\n  // bail early if required elements aren't present\n  if (!appendTo && menuPosition !== 'fixed' || !computedPosition) return null;\n\n  // same wrapper element whether fixed or portalled\n  var menuWrapper = jsx(\"div\", _extends({\n    ref: setMenuPortalElement\n  }, getStyleProps(_objectSpread(_objectSpread({}, props), {}, {\n    offset: computedPosition.offset,\n    position: menuPosition,\n    rect: computedPosition.rect\n  }), 'menuPortal', {\n    'menu-portal': true\n  }), innerProps), children);\n  return jsx(PortalPlacementContext.Provider, {\n    value: portalPlacementContext\n  }, appendTo ? /*#__PURE__*/createPortal(menuWrapper, appendTo) : menuWrapper);\n};\n\n// ==============================\n// Root Container\n// ==============================\n\nvar containerCSS = function containerCSS(_ref) {\n  var isDisabled = _ref.isDisabled,\n    isRtl = _ref.isRtl;\n  return {\n    label: 'container',\n    direction: isRtl ? 'rtl' : undefined,\n    pointerEvents: isDisabled ? 'none' : undefined,\n    // cancel mouse events when disabled\n    position: 'relative'\n  };\n};\nvar SelectContainer = function SelectContainer(props) {\n  var children = props.children,\n    innerProps = props.innerProps,\n    isDisabled = props.isDisabled,\n    isRtl = props.isRtl;\n  return jsx(\"div\", _extends({}, getStyleProps(props, 'container', {\n    '--is-disabled': isDisabled,\n    '--is-rtl': isRtl\n  }), innerProps), children);\n};\n\n// ==============================\n// Value Container\n// ==============================\n\nvar valueContainerCSS = function valueContainerCSS(_ref2, unstyled) {\n  var spacing = _ref2.theme.spacing,\n    isMulti = _ref2.isMulti,\n    hasValue = _ref2.hasValue,\n    controlShouldRenderValue = _ref2.selectProps.controlShouldRenderValue;\n  return _objectSpread({\n    alignItems: 'center',\n    display: isMulti && hasValue && controlShouldRenderValue ? 'flex' : 'grid',\n    flex: 1,\n    flexWrap: 'wrap',\n    WebkitOverflowScrolling: 'touch',\n    position: 'relative',\n    overflow: 'hidden'\n  }, unstyled ? {} : {\n    padding: \"\".concat(spacing.baseUnit / 2, \"px \").concat(spacing.baseUnit * 2, \"px\")\n  });\n};\nvar ValueContainer = function ValueContainer(props) {\n  var children = props.children,\n    innerProps = props.innerProps,\n    isMulti = props.isMulti,\n    hasValue = props.hasValue;\n  return jsx(\"div\", _extends({}, getStyleProps(props, 'valueContainer', {\n    'value-container': true,\n    'value-container--is-multi': isMulti,\n    'value-container--has-value': hasValue\n  }), innerProps), children);\n};\n\n// ==============================\n// Indicator Container\n// ==============================\n\nvar indicatorsContainerCSS = function indicatorsContainerCSS() {\n  return {\n    alignItems: 'center',\n    alignSelf: 'stretch',\n    display: 'flex',\n    flexShrink: 0\n  };\n};\nvar IndicatorsContainer = function IndicatorsContainer(props) {\n  var children = props.children,\n    innerProps = props.innerProps;\n  return jsx(\"div\", _extends({}, getStyleProps(props, 'indicatorsContainer', {\n    indicators: true\n  }), innerProps), children);\n};\n\nvar _templateObject;\nvar _excluded$2 = [\"size\"],\n  _excluded2 = [\"innerProps\", \"isRtl\", \"size\"];\nfunction _EMOTION_STRINGIFIED_CSS_ERROR__() { return \"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\"; }\n\n// ==============================\n// Dropdown & Clear Icons\n// ==============================\nvar _ref2 = process.env.NODE_ENV === \"production\" ? {\n  name: \"8mmkcg\",\n  styles: \"display:inline-block;fill:currentColor;line-height:1;stroke:currentColor;stroke-width:0\"\n} : {\n  name: \"tj5bde-Svg\",\n  styles: \"display:inline-block;fill:currentColor;line-height:1;stroke:currentColor;stroke-width:0;label:Svg;\",\n  map: \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGljYXRvcnMudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXlCSSIsImZpbGUiOiJpbmRpY2F0b3JzLnRzeCIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBAanN4IGpzeCAqL1xuaW1wb3J0IHsgUmVhY3ROb2RlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsganN4LCBrZXlmcmFtZXMgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5cbmltcG9ydCB7XG4gIENvbW1vblByb3BzQW5kQ2xhc3NOYW1lLFxuICBDU1NPYmplY3RXaXRoTGFiZWwsXG4gIEdyb3VwQmFzZSxcbn0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgZ2V0U3R5bGVQcm9wcyB9IGZyb20gJy4uL3V0aWxzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBEcm9wZG93biAmIENsZWFyIEljb25zXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuY29uc3QgU3ZnID0gKHtcbiAgc2l6ZSxcbiAgLi4ucHJvcHNcbn06IEpTWC5JbnRyaW5zaWNFbGVtZW50c1snc3ZnJ10gJiB7IHNpemU6IG51bWJlciB9KSA9PiAoXG4gIDxzdmdcbiAgICBoZWlnaHQ9e3NpemV9XG4gICAgd2lkdGg9e3NpemV9XG4gICAgdmlld0JveD1cIjAgMCAyMCAyMFwiXG4gICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICBmb2N1c2FibGU9XCJmYWxzZVwiXG4gICAgY3NzPXt7XG4gICAgICBkaXNwbGF5OiAnaW5saW5lLWJsb2NrJyxcbiAgICAgIGZpbGw6ICdjdXJyZW50Q29sb3InLFxuICAgICAgbGluZUhlaWdodDogMSxcbiAgICAgIHN0cm9rZTogJ2N1cnJlbnRDb2xvcicsXG4gICAgICBzdHJva2VXaWR0aDogMCxcbiAgICB9fVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbik7XG5cbmV4cG9ydCB0eXBlIENyb3NzSWNvblByb3BzID0gSlNYLkludHJpbnNpY0VsZW1lbnRzWydzdmcnXSAmIHsgc2l6ZT86IG51bWJlciB9O1xuZXhwb3J0IGNvbnN0IENyb3NzSWNvbiA9IChwcm9wczogQ3Jvc3NJY29uUHJvcHMpID0+IChcbiAgPFN2ZyBzaXplPXsyMH0gey4uLnByb3BzfT5cbiAgICA8cGF0aCBkPVwiTTE0LjM0OCAxNC44NDljLTAuNDY5IDAuNDY5LTEuMjI5IDAuNDY5LTEuNjk3IDBsLTIuNjUxLTMuMDMwLTIuNjUxIDMuMDI5Yy0wLjQ2OSAwLjQ2OS0xLjIyOSAwLjQ2OS0xLjY5NyAwLTAuNDY5LTAuNDY5LTAuNDY5LTEuMjI5IDAtMS42OTdsMi43NTgtMy4xNS0yLjc1OS0zLjE1MmMtMC40NjktMC40NjktMC40NjktMS4yMjggMC0xLjY5N3MxLjIyOC0wLjQ2OSAxLjY5NyAwbDIuNjUyIDMuMDMxIDIuNjUxLTMuMDMxYzAuNDY5LTAuNDY5IDEuMjI4LTAuNDY5IDEuNjk3IDBzMC40NjkgMS4yMjkgMCAxLjY5N2wtMi43NTggMy4xNTIgMi43NTggMy4xNWMwLjQ2OSAwLjQ2OSAwLjQ2OSAxLjIyOSAwIDEuNjk4elwiIC8+XG4gIDwvU3ZnPlxuKTtcbmV4cG9ydCB0eXBlIERvd25DaGV2cm9uUHJvcHMgPSBKU1guSW50cmluc2ljRWxlbWVudHNbJ3N2ZyddICYgeyBzaXplPzogbnVtYmVyIH07XG5leHBvcnQgY29uc3QgRG93bkNoZXZyb24gPSAocHJvcHM6IERvd25DaGV2cm9uUHJvcHMpID0+IChcbiAgPFN2ZyBzaXplPXsyMH0gey4uLnByb3BzfT5cbiAgICA8cGF0aCBkPVwiTTQuNTE2IDcuNTQ4YzAuNDM2LTAuNDQ2IDEuMDQzLTAuNDgxIDEuNTc2IDBsMy45MDggMy43NDcgMy45MDgtMy43NDdjMC41MzMtMC40ODEgMS4xNDEtMC40NDYgMS41NzQgMCAwLjQzNiAwLjQ0NSAwLjQwOCAxLjE5NyAwIDEuNjE1LTAuNDA2IDAuNDE4LTQuNjk1IDQuNTAyLTQuNjk1IDQuNTAyLTAuMjE3IDAuMjIzLTAuNTAyIDAuMzM1LTAuNzg3IDAuMzM1cy0wLjU3LTAuMTEyLTAuNzg5LTAuMzM1YzAgMC00LjI4Ny00LjA4NC00LjY5NS00LjUwMnMtMC40MzYtMS4xNyAwLTEuNjE1elwiIC8+XG4gIDwvU3ZnPlxuKTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBEcm9wZG93biAmIENsZWFyIEJ1dHRvbnNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgaW50ZXJmYWNlIERyb3Bkb3duSW5kaWNhdG9yUHJvcHM8XG4gIE9wdGlvbiA9IHVua25vd24sXG4gIElzTXVsdGkgZXh0ZW5kcyBib29sZWFuID0gYm9vbGVhbixcbiAgR3JvdXAgZXh0ZW5kcyBHcm91cEJhc2U8T3B0aW9uPiA9IEdyb3VwQmFzZTxPcHRpb24+XG4+IGV4dGVuZHMgQ29tbW9uUHJvcHNBbmRDbGFzc05hbWU8T3B0aW9uLCBJc011bHRpLCBHcm91cD4ge1xuICAvKiogVGhlIGNoaWxkcmVuIHRvIGJlIHJlbmRlcmVkIGluc2lkZSB0aGUgaW5kaWNhdG9yLiAqL1xuICBjaGlsZHJlbj86IFJlYWN0Tm9kZTtcbiAgLyoqIFByb3BzIHRoYXQgd2lsbCBiZSBwYXNzZWQgb24gdG8gdGhlIGNoaWxkcmVuLiAqL1xuICBpbm5lclByb3BzOiBKU1guSW50cmluc2ljRWxlbWVudHNbJ2RpdiddO1xuICAvKiogVGhlIGZvY3VzZWQgc3RhdGUgb2YgdGhlIHNlbGVjdC4gKi9cbiAgaXNGb2N1c2VkOiBib29sZWFuO1xuICBpc0Rpc2FibGVkOiBib29sZWFuO1xufVxuXG5jb25zdCBiYXNlQ1NTID0gPFxuICBPcHRpb24sXG4gIElzTXVsdGkgZXh0ZW5kcyBib29sZWFuLFxuICBHcm91cCBleHRlbmRzIEdyb3VwQmFzZTxPcHRpb24+XG4+KFxuICB7XG4gICAgaXNGb2N1c2VkLFxuICAgIHRoZW1lOiB7XG4gICAgICBzcGFjaW5nOiB7IGJhc2VVbml0IH0sXG4gICAgICBjb2xvcnMsXG4gICAgfSxcbiAgfTpcbiAgICB8IERyb3Bkb3duSW5kaWNhdG9yUHJvcHM8T3B0aW9uLCBJc011bHRpLCBHcm91cD5cbiAgICB8IENsZWFySW5kaWNhdG9yUHJvcHM8T3B0aW9uLCBJc011bHRpLCBHcm91cD4sXG4gIHVuc3R5bGVkOiBib29sZWFuXG4pOiBDU1NPYmplY3RXaXRoTGFiZWwgPT4gKHtcbiAgbGFiZWw6ICdpbmRpY2F0b3JDb250YWluZXInLFxuICBkaXNwbGF5OiAnZmxleCcsXG4gIHRyYW5zaXRpb246ICdjb2xvciAxNTBtcycsXG4gIC4uLih1bnN0eWxlZFxuICAgID8ge31cbiAgICA6IHtcbiAgICAgICAgY29sb3I6IGlzRm9jdXNlZCA/IGNvbG9ycy5uZXV0cmFsNjAgOiBjb2xvcnMubmV1dHJhbDIwLFxuICAgICAgICBwYWRkaW5nOiBiYXNlVW5pdCAqIDIsXG4gICAgICAgICc6aG92ZXInOiB7XG4gICAgICAgICAgY29sb3I6IGlzRm9jdXNlZCA/IGNvbG9ycy5uZXV0cmFsODAgOiBjb2xvcnMubmV1dHJhbDQwLFxuICAgICAgICB9LFxuICAgICAgfSksXG59KTtcblxuZXhwb3J0IGNvbnN0IGRyb3Bkb3duSW5kaWNhdG9yQ1NTID0gYmFzZUNTUztcbmV4cG9ydCBjb25zdCBEcm9wZG93bkluZGljYXRvciA9IDxcbiAgT3B0aW9uLFxuICBJc011bHRpIGV4dGVuZHMgYm9vbGVhbixcbiAgR3JvdXAgZXh0ZW5kcyBHcm91cEJhc2U8T3B0aW9uPlxuPihcbiAgcHJvcHM6IERyb3Bkb3duSW5kaWNhdG9yUHJvcHM8T3B0aW9uLCBJc011bHRpLCBHcm91cD5cbikgPT4ge1xuICBjb25zdCB7IGNoaWxkcmVuLCBpbm5lclByb3BzIH0gPSBwcm9wcztcbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICB7Li4uZ2V0U3R5bGVQcm9wcyhwcm9wcywgJ2Ryb3Bkb3duSW5kaWNhdG9yJywge1xuICAgICAgICBpbmRpY2F0b3I6IHRydWUsXG4gICAgICAgICdkcm9wZG93bi1pbmRpY2F0b3InOiB0cnVlLFxuICAgICAgfSl9XG4gICAgICB7Li4uaW5uZXJQcm9wc31cbiAgICA+XG4gICAgICB7Y2hpbGRyZW4gfHwgPERvd25DaGV2cm9uIC8+fVxuICAgIDwvZGl2PlxuICApO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBDbGVhckluZGljYXRvclByb3BzPFxuICBPcHRpb24gPSB1bmtub3duLFxuICBJc011bHRpIGV4dGVuZHMgYm9vbGVhbiA9IGJvb2xlYW4sXG4gIEdyb3VwIGV4dGVuZHMgR3JvdXBCYXNlPE9wdGlvbj4gPSBHcm91cEJhc2U8T3B0aW9uPlxuPiBleHRlbmRzIENvbW1vblByb3BzQW5kQ2xhc3NOYW1lPE9wdGlvbiwgSXNNdWx0aSwgR3JvdXA+IHtcbiAgLyoqIFRoZSBjaGlsZHJlbiB0byBiZSByZW5kZXJlZCBpbnNpZGUgdGhlIGluZGljYXRvci4gKi9cbiAgY2hpbGRyZW4/OiBSZWFjdE5vZGU7XG4gIC8qKiBQcm9wcyB0aGF0IHdpbGwgYmUgcGFzc2VkIG9uIHRvIHRoZSBjaGlsZHJlbi4gKi9cbiAgaW5uZXJQcm9wczogSlNYLkludHJpbnNpY0VsZW1lbnRzWydkaXYnXTtcbiAgLyoqIFRoZSBmb2N1c2VkIHN0YXRlIG9mIHRoZSBzZWxlY3QuICovXG4gIGlzRm9jdXNlZDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNvbnN0IGNsZWFySW5kaWNhdG9yQ1NTID0gYmFzZUNTUztcbmV4cG9ydCBjb25zdCBDbGVhckluZGljYXRvciA9IDxcbiAgT3B0aW9uLFxuICBJc011bHRpIGV4dGVuZHMgYm9vbGVhbixcbiAgR3JvdXAgZXh0ZW5kcyBHcm91cEJhc2U8T3B0aW9uPlxuPihcbiAgcHJvcHM6IENsZWFySW5kaWNhdG9yUHJvcHM8T3B0aW9uLCBJc011bHRpLCBHcm91cD5cbikgPT4ge1xuICBjb25zdCB7IGNoaWxkcmVuLCBpbm5lclByb3BzIH0gPSBwcm9wcztcbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICB7Li4uZ2V0U3R5bGVQcm9wcyhwcm9wcywgJ2NsZWFySW5kaWNhdG9yJywge1xuICAgICAgICBpbmRpY2F0b3I6IHRydWUsXG4gICAgICAgICdjbGVhci1pbmRpY2F0b3InOiB0cnVlLFxuICAgICAgfSl9XG4gICAgICB7Li4uaW5uZXJQcm9wc31cbiAgICA+XG4gICAgICB7Y2hpbGRyZW4gfHwgPENyb3NzSWNvbiAvPn1cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU2VwYXJhdG9yXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IGludGVyZmFjZSBJbmRpY2F0b3JTZXBhcmF0b3JQcm9wczxcbiAgT3B0aW9uID0gdW5rbm93bixcbiAgSXNNdWx0aSBleHRlbmRzIGJvb2xlYW4gPSBib29sZWFuLFxuICBHcm91cCBleHRlbmRzIEdyb3VwQmFzZTxPcHRpb24+ID0gR3JvdXBCYXNlPE9wdGlvbj5cbj4gZXh0ZW5kcyBDb21tb25Qcm9wc0FuZENsYXNzTmFtZTxPcHRpb24sIElzTXVsdGksIEdyb3VwPiB7XG4gIGlzRGlzYWJsZWQ6IGJvb2xlYW47XG4gIGlzRm9jdXNlZDogYm9vbGVhbjtcbiAgaW5uZXJQcm9wcz86IEpTWC5JbnRyaW5zaWNFbGVtZW50c1snc3BhbiddO1xufVxuXG5leHBvcnQgY29uc3QgaW5kaWNhdG9yU2VwYXJhdG9yQ1NTID0gPFxuICBPcHRpb24sXG4gIElzTXVsdGkgZXh0ZW5kcyBib29sZWFuLFxuICBHcm91cCBleHRlbmRzIEdyb3VwQmFzZTxPcHRpb24+XG4+KFxuICB7XG4gICAgaXNEaXNhYmxlZCxcbiAgICB0aGVtZToge1xuICAgICAgc3BhY2luZzogeyBiYXNlVW5pdCB9LFxuICAgICAgY29sb3JzLFxuICAgIH0sXG4gIH06IEluZGljYXRvclNlcGFyYXRvclByb3BzPE9wdGlvbiwgSXNNdWx0aSwgR3JvdXA+LFxuICB1bnN0eWxlZDogYm9vbGVhblxuKTogQ1NTT2JqZWN0V2l0aExhYmVsID0+ICh7XG4gIGxhYmVsOiAnaW5kaWNhdG9yU2VwYXJhdG9yJyxcbiAgYWxpZ25TZWxmOiAnc3RyZXRjaCcsXG4gIHdpZHRoOiAxLFxuICAuLi4odW5zdHlsZWRcbiAgICA/IHt9XG4gICAgOiB7XG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogaXNEaXNhYmxlZCA/IGNvbG9ycy5uZXV0cmFsMTAgOiBjb2xvcnMubmV1dHJhbDIwLFxuICAgICAgICBtYXJnaW5Cb3R0b206IGJhc2VVbml0ICogMixcbiAgICAgICAgbWFyZ2luVG9wOiBiYXNlVW5pdCAqIDIsXG4gICAgICB9KSxcbn0pO1xuXG5leHBvcnQgY29uc3QgSW5kaWNhdG9yU2VwYXJhdG9yID0gPFxuICBPcHRpb24sXG4gIElzTXVsdGkgZXh0ZW5kcyBib29sZWFuLFxuICBHcm91cCBleHRlbmRzIEdyb3VwQmFzZTxPcHRpb24+XG4+KFxuICBwcm9wczogSW5kaWNhdG9yU2VwYXJhdG9yUHJvcHM8T3B0aW9uLCBJc011bHRpLCBHcm91cD5cbikgPT4ge1xuICBjb25zdCB7IGlubmVyUHJvcHMgfSA9IHByb3BzO1xuICByZXR1cm4gKFxuICAgIDxzcGFuXG4gICAgICB7Li4uaW5uZXJQcm9wc31cbiAgICAgIHsuLi5nZXRTdHlsZVByb3BzKHByb3BzLCAnaW5kaWNhdG9yU2VwYXJhdG9yJywge1xuICAgICAgICAnaW5kaWNhdG9yLXNlcGFyYXRvcic6IHRydWUsXG4gICAgICB9KX1cbiAgICAvPlxuICApO1xufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBMb2FkaW5nXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuY29uc3QgbG9hZGluZ0RvdEFuaW1hdGlvbnMgPSBrZXlmcmFtZXNgXG4gIDAlLCA4MCUsIDEwMCUgeyBvcGFjaXR5OiAwOyB9XG4gIDQwJSB7IG9wYWNpdHk6IDE7IH1cbmA7XG5cbmV4cG9ydCBjb25zdCBsb2FkaW5nSW5kaWNhdG9yQ1NTID0gPFxuICBPcHRpb24sXG4gIElzTXVsdGkgZXh0ZW5kcyBib29sZWFuLFxuICBHcm91cCBleHRlbmRzIEdyb3VwQmFzZTxPcHRpb24+XG4+KFxuICB7XG4gICAgaXNGb2N1c2VkLFxuICAgIHNpemUsXG4gICAgdGhlbWU6IHtcbiAgICAgIGNvbG9ycyxcbiAgICAgIHNwYWNpbmc6IHsgYmFzZVVuaXQgfSxcbiAgICB9LFxuICB9OiBMb2FkaW5nSW5kaWNhdG9yUHJvcHM8T3B0aW9uLCBJc011bHRpLCBHcm91cD4sXG4gIHVuc3R5bGVkOiBib29sZWFuXG4pOiBDU1NPYmplY3RXaXRoTGFiZWwgPT4gKHtcbiAgbGFiZWw6ICdsb2FkaW5nSW5kaWNhdG9yJyxcbiAgZGlzcGxheTogJ2ZsZXgnLFxuICB0cmFuc2l0aW9uOiAnY29sb3IgMTUwbXMnLFxuICBhbGlnblNlbGY6ICdjZW50ZXInLFxuICBmb250U2l6ZTogc2l6ZSxcbiAgbGluZUhlaWdodDogMSxcbiAgbWFyZ2luUmlnaHQ6IHNpemUsXG4gIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gIHZlcnRpY2FsQWxpZ246ICdtaWRkbGUnLFxuICAuLi4odW5zdHlsZWRcbiAgICA/IHt9XG4gICAgOiB7XG4gICAgICAgIGNvbG9yOiBpc0ZvY3VzZWQgPyBjb2xvcnMubmV1dHJhbDYwIDogY29sb3JzLm5ldXRyYWwyMCxcbiAgICAgICAgcGFkZGluZzogYmFzZVVuaXQgKiAyLFxuICAgICAgfSksXG59KTtcblxuaW50ZXJmYWNlIExvYWRpbmdEb3RQcm9wcyB7XG4gIGRlbGF5OiBudW1iZXI7XG4gIG9mZnNldDogYm9vbGVhbjtcbn1cbmNvbnN0IExvYWRpbmdEb3QgPSAoeyBkZWxheSwgb2Zmc2V0IH06IExvYWRpbmdEb3RQcm9wcykgPT4gKFxuICA8c3BhblxuICAgIGNzcz17e1xuICAgICAgYW5pbWF0aW9uOiBgJHtsb2FkaW5nRG90QW5pbWF0aW9uc30gMXMgZWFzZS1pbi1vdXQgJHtkZWxheX1tcyBpbmZpbml0ZTtgLFxuICAgICAgYmFja2dyb3VuZENvbG9yOiAnY3VycmVudENvbG9yJyxcbiAgICAgIGJvcmRlclJhZGl1czogJzFlbScsXG4gICAgICBkaXNwbGF5OiAnaW5saW5lLWJsb2NrJyxcbiAgICAgIG1hcmdpbkxlZnQ6IG9mZnNldCA/ICcxZW0nIDogdW5kZWZpbmVkLFxuICAgICAgaGVpZ2h0OiAnMWVtJyxcbiAgICAgIHZlcnRpY2FsQWxpZ246ICd0b3AnLFxuICAgICAgd2lkdGg6ICcxZW0nLFxuICAgIH19XG4gIC8+XG4pO1xuXG5leHBvcnQgaW50ZXJmYWNlIExvYWRpbmdJbmRpY2F0b3JQcm9wczxcbiAgT3B0aW9uID0gdW5rbm93bixcbiAgSXNNdWx0aSBleHRlbmRzIGJvb2xlYW4gPSBib29sZWFuLFxuICBHcm91cCBleHRlbmRzIEdyb3VwQmFzZTxPcHRpb24+ID0gR3JvdXBCYXNlPE9wdGlvbj5cbj4gZXh0ZW5kcyBDb21tb25Qcm9wc0FuZENsYXNzTmFtZTxPcHRpb24sIElzTXVsdGksIEdyb3VwPiB7XG4gIC8qKiBQcm9wcyB0aGF0IHdpbGwgYmUgcGFzc2VkIG9uIHRvIHRoZSBjaGlsZHJlbi4gKi9cbiAgaW5uZXJQcm9wczogSlNYLkludHJpbnNpY0VsZW1lbnRzWydkaXYnXTtcbiAgLyoqIFRoZSBmb2N1c2VkIHN0YXRlIG9mIHRoZSBzZWxlY3QuICovXG4gIGlzRm9jdXNlZDogYm9vbGVhbjtcbiAgaXNEaXNhYmxlZDogYm9vbGVhbjtcbiAgLyoqIFNldCBzaXplIG9mIHRoZSBjb250YWluZXIuICovXG4gIHNpemU6IG51bWJlcjtcbn1cbmV4cG9ydCBjb25zdCBMb2FkaW5nSW5kaWNhdG9yID0gPFxuICBPcHRpb24sXG4gIElzTXVsdGkgZXh0ZW5kcyBib29sZWFuLFxuICBHcm91cCBleHRlbmRzIEdyb3VwQmFzZTxPcHRpb24+XG4+KHtcbiAgaW5uZXJQcm9wcyxcbiAgaXNSdGwsXG4gIHNpemUgPSA0LFxuICAuLi5yZXN0UHJvcHNcbn06IExvYWRpbmdJbmRpY2F0b3JQcm9wczxPcHRpb24sIElzTXVsdGksIEdyb3VwPikgPT4ge1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIHsuLi5nZXRTdHlsZVByb3BzKFxuICAgICAgICB7IC4uLnJlc3RQcm9wcywgaW5uZXJQcm9wcywgaXNSdGwsIHNpemUgfSxcbiAgICAgICAgJ2xvYWRpbmdJbmRpY2F0b3InLFxuICAgICAgICB7XG4gICAgICAgICAgaW5kaWNhdG9yOiB0cnVlLFxuICAgICAgICAgICdsb2FkaW5nLWluZGljYXRvcic6IHRydWUsXG4gICAgICAgIH1cbiAgICAgICl9XG4gICAgICB7Li4uaW5uZXJQcm9wc31cbiAgICA+XG4gICAgICA8TG9hZGluZ0RvdCBkZWxheT17MH0gb2Zmc2V0PXtpc1J0bH0gLz5cbiAgICAgIDxMb2FkaW5nRG90IGRlbGF5PXsxNjB9IG9mZnNldCAvPlxuICAgICAgPExvYWRpbmdEb3QgZGVsYXk9ezMyMH0gb2Zmc2V0PXshaXNSdGx9IC8+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuIl19 */\",\n  toString: _EMOTION_STRINGIFIED_CSS_ERROR__\n};\nvar Svg = function Svg(_ref) {\n  var size = _ref.size,\n    props = _objectWithoutProperties(_ref, _excluded$2);\n  return jsx(\"svg\", _extends({\n    height: size,\n    width: size,\n    viewBox: \"0 0 20 20\",\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    css: _ref2\n  }, props));\n};\nvar CrossIcon = function CrossIcon(props) {\n  return jsx(Svg, _extends({\n    size: 20\n  }, props), jsx(\"path\", {\n    d: \"M14.348 14.849c-0.469 0.469-1.229 0.469-1.697 0l-2.651-3.030-2.651 3.029c-0.469 0.469-1.229 0.469-1.697 0-0.469-0.469-0.469-1.229 0-1.697l2.758-3.15-2.759-3.152c-0.469-0.469-0.469-1.228 0-1.697s1.228-0.469 1.697 0l2.652 3.031 2.651-3.031c0.469-0.469 1.228-0.469 1.697 0s0.469 1.229 0 1.697l-2.758 3.152 2.758 3.15c0.469 0.469 0.469 1.229 0 1.698z\"\n  }));\n};\nvar DownChevron = function DownChevron(props) {\n  return jsx(Svg, _extends({\n    size: 20\n  }, props), jsx(\"path\", {\n    d: \"M4.516 7.548c0.436-0.446 1.043-0.481 1.576 0l3.908 3.747 3.908-3.747c0.533-0.481 1.141-0.446 1.574 0 0.436 0.445 0.408 1.197 0 1.615-0.406 0.418-4.695 4.502-4.695 4.502-0.217 0.223-0.502 0.335-0.787 0.335s-0.57-0.112-0.789-0.335c0 0-4.287-4.084-4.695-4.502s-0.436-1.17 0-1.615z\"\n  }));\n};\n\n// ==============================\n// Dropdown & Clear Buttons\n// ==============================\n\nvar baseCSS = function baseCSS(_ref3, unstyled) {\n  var isFocused = _ref3.isFocused,\n    _ref3$theme = _ref3.theme,\n    baseUnit = _ref3$theme.spacing.baseUnit,\n    colors = _ref3$theme.colors;\n  return _objectSpread({\n    label: 'indicatorContainer',\n    display: 'flex',\n    transition: 'color 150ms'\n  }, unstyled ? {} : {\n    color: isFocused ? colors.neutral60 : colors.neutral20,\n    padding: baseUnit * 2,\n    ':hover': {\n      color: isFocused ? colors.neutral80 : colors.neutral40\n    }\n  });\n};\nvar dropdownIndicatorCSS = baseCSS;\nvar DropdownIndicator = function DropdownIndicator(props) {\n  var children = props.children,\n    innerProps = props.innerProps;\n  return jsx(\"div\", _extends({}, getStyleProps(props, 'dropdownIndicator', {\n    indicator: true,\n    'dropdown-indicator': true\n  }), innerProps), children || jsx(DownChevron, null));\n};\nvar clearIndicatorCSS = baseCSS;\nvar ClearIndicator = function ClearIndicator(props) {\n  var children = props.children,\n    innerProps = props.innerProps;\n  return jsx(\"div\", _extends({}, getStyleProps(props, 'clearIndicator', {\n    indicator: true,\n    'clear-indicator': true\n  }), innerProps), children || jsx(CrossIcon, null));\n};\n\n// ==============================\n// Separator\n// ==============================\n\nvar indicatorSeparatorCSS = function indicatorSeparatorCSS(_ref4, unstyled) {\n  var isDisabled = _ref4.isDisabled,\n    _ref4$theme = _ref4.theme,\n    baseUnit = _ref4$theme.spacing.baseUnit,\n    colors = _ref4$theme.colors;\n  return _objectSpread({\n    label: 'indicatorSeparator',\n    alignSelf: 'stretch',\n    width: 1\n  }, unstyled ? {} : {\n    backgroundColor: isDisabled ? colors.neutral10 : colors.neutral20,\n    marginBottom: baseUnit * 2,\n    marginTop: baseUnit * 2\n  });\n};\nvar IndicatorSeparator = function IndicatorSeparator(props) {\n  var innerProps = props.innerProps;\n  return jsx(\"span\", _extends({}, innerProps, getStyleProps(props, 'indicatorSeparator', {\n    'indicator-separator': true\n  })));\n};\n\n// ==============================\n// Loading\n// ==============================\n\nvar loadingDotAnimations = keyframes(_templateObject || (_templateObject = _taggedTemplateLiteral([\"\\n  0%, 80%, 100% { opacity: 0; }\\n  40% { opacity: 1; }\\n\"])));\nvar loadingIndicatorCSS = function loadingIndicatorCSS(_ref5, unstyled) {\n  var isFocused = _ref5.isFocused,\n    size = _ref5.size,\n    _ref5$theme = _ref5.theme,\n    colors = _ref5$theme.colors,\n    baseUnit = _ref5$theme.spacing.baseUnit;\n  return _objectSpread({\n    label: 'loadingIndicator',\n    display: 'flex',\n    transition: 'color 150ms',\n    alignSelf: 'center',\n    fontSize: size,\n    lineHeight: 1,\n    marginRight: size,\n    textAlign: 'center',\n    verticalAlign: 'middle'\n  }, unstyled ? {} : {\n    color: isFocused ? colors.neutral60 : colors.neutral20,\n    padding: baseUnit * 2\n  });\n};\nvar LoadingDot = function LoadingDot(_ref6) {\n  var delay = _ref6.delay,\n    offset = _ref6.offset;\n  return jsx(\"span\", {\n    css: /*#__PURE__*/css$2({\n      animation: \"\".concat(loadingDotAnimations, \" 1s ease-in-out \").concat(delay, \"ms infinite;\"),\n      backgroundColor: 'currentColor',\n      borderRadius: '1em',\n      display: 'inline-block',\n      marginLeft: offset ? '1em' : undefined,\n      height: '1em',\n      verticalAlign: 'top',\n      width: '1em'\n    }, process.env.NODE_ENV === \"production\" ? \"\" : \";label:LoadingDot;\", process.env.NODE_ENV === \"production\" ? \"\" : \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGljYXRvcnMudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQW1RSSIsImZpbGUiOiJpbmRpY2F0b3JzLnRzeCIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBAanN4IGpzeCAqL1xuaW1wb3J0IHsgUmVhY3ROb2RlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsganN4LCBrZXlmcmFtZXMgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5cbmltcG9ydCB7XG4gIENvbW1vblByb3BzQW5kQ2xhc3NOYW1lLFxuICBDU1NPYmplY3RXaXRoTGFiZWwsXG4gIEdyb3VwQmFzZSxcbn0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgZ2V0U3R5bGVQcm9wcyB9IGZyb20gJy4uL3V0aWxzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBEcm9wZG93biAmIENsZWFyIEljb25zXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuY29uc3QgU3ZnID0gKHtcbiAgc2l6ZSxcbiAgLi4ucHJvcHNcbn06IEpTWC5JbnRyaW5zaWNFbGVtZW50c1snc3ZnJ10gJiB7IHNpemU6IG51bWJlciB9KSA9PiAoXG4gIDxzdmdcbiAgICBoZWlnaHQ9e3NpemV9XG4gICAgd2lkdGg9e3NpemV9XG4gICAgdmlld0JveD1cIjAgMCAyMCAyMFwiXG4gICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICBmb2N1c2FibGU9XCJmYWxzZVwiXG4gICAgY3NzPXt7XG4gICAgICBkaXNwbGF5OiAnaW5saW5lLWJsb2NrJyxcbiAgICAgIGZpbGw6ICdjdXJyZW50Q29sb3InLFxuICAgICAgbGluZUhlaWdodDogMSxcbiAgICAgIHN0cm9rZTogJ2N1cnJlbnRDb2xvcicsXG4gICAgICBzdHJva2VXaWR0aDogMCxcbiAgICB9fVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbik7XG5cbmV4cG9ydCB0eXBlIENyb3NzSWNvblByb3BzID0gSlNYLkludHJpbnNpY0VsZW1lbnRzWydzdmcnXSAmIHsgc2l6ZT86IG51bWJlciB9O1xuZXhwb3J0IGNvbnN0IENyb3NzSWNvbiA9IChwcm9wczogQ3Jvc3NJY29uUHJvcHMpID0+IChcbiAgPFN2ZyBzaXplPXsyMH0gey4uLnByb3BzfT5cbiAgICA8cGF0aCBkPVwiTTE0LjM0OCAxNC44NDljLTAuNDY5IDAuNDY5LTEuMjI5IDAuNDY5LTEuNjk3IDBsLTIuNjUxLTMuMDMwLTIuNjUxIDMuMDI5Yy0wLjQ2OSAwLjQ2OS0xLjIyOSAwLjQ2OS0xLjY5NyAwLTAuNDY5LTAuNDY5LTAuNDY5LTEuMjI5IDAtMS42OTdsMi43NTgtMy4xNS0yLjc1OS0zLjE1MmMtMC40NjktMC40NjktMC40NjktMS4yMjggMC0xLjY5N3MxLjIyOC0wLjQ2OSAxLjY5NyAwbDIuNjUyIDMuMDMxIDIuNjUxLTMuMDMxYzAuNDY5LTAuNDY5IDEuMjI4LTAuNDY5IDEuNjk3IDBzMC40NjkgMS4yMjkgMCAxLjY5N2wtMi43NTggMy4xNTIgMi43NTggMy4xNWMwLjQ2OSAwLjQ2OSAwLjQ2OSAxLjIyOSAwIDEuNjk4elwiIC8+XG4gIDwvU3ZnPlxuKTtcbmV4cG9ydCB0eXBlIERvd25DaGV2cm9uUHJvcHMgPSBKU1guSW50cmluc2ljRWxlbWVudHNbJ3N2ZyddICYgeyBzaXplPzogbnVtYmVyIH07XG5leHBvcnQgY29uc3QgRG93bkNoZXZyb24gPSAocHJvcHM6IERvd25DaGV2cm9uUHJvcHMpID0+IChcbiAgPFN2ZyBzaXplPXsyMH0gey4uLnByb3BzfT5cbiAgICA8cGF0aCBkPVwiTTQuNTE2IDcuNTQ4YzAuNDM2LTAuNDQ2IDEuMDQzLTAuNDgxIDEuNTc2IDBsMy45MDggMy43NDcgMy45MDgtMy43NDdjMC41MzMtMC40ODEgMS4xNDEtMC40NDYgMS41NzQgMCAwLjQzNiAwLjQ0NSAwLjQwOCAxLjE5NyAwIDEuNjE1LTAuNDA2IDAuNDE4LTQuNjk1IDQuNTAyLTQuNjk1IDQuNTAyLTAuMjE3IDAuMjIzLTAuNTAyIDAuMzM1LTAuNzg3IDAuMzM1cy0wLjU3LTAuMTEyLTAuNzg5LTAuMzM1YzAgMC00LjI4Ny00LjA4NC00LjY5NS00LjUwMnMtMC40MzYtMS4xNyAwLTEuNjE1elwiIC8+XG4gIDwvU3ZnPlxuKTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBEcm9wZG93biAmIENsZWFyIEJ1dHRvbnNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgaW50ZXJmYWNlIERyb3Bkb3duSW5kaWNhdG9yUHJvcHM8XG4gIE9wdGlvbiA9IHVua25vd24sXG4gIElzTXVsdGkgZXh0ZW5kcyBib29sZWFuID0gYm9vbGVhbixcbiAgR3JvdXAgZXh0ZW5kcyBHcm91cEJhc2U8T3B0aW9uPiA9IEdyb3VwQmFzZTxPcHRpb24+XG4+IGV4dGVuZHMgQ29tbW9uUHJvcHNBbmRDbGFzc05hbWU8T3B0aW9uLCBJc011bHRpLCBHcm91cD4ge1xuICAvKiogVGhlIGNoaWxkcmVuIHRvIGJlIHJlbmRlcmVkIGluc2lkZSB0aGUgaW5kaWNhdG9yLiAqL1xuICBjaGlsZHJlbj86IFJlYWN0Tm9kZTtcbiAgLyoqIFByb3BzIHRoYXQgd2lsbCBiZSBwYXNzZWQgb24gdG8gdGhlIGNoaWxkcmVuLiAqL1xuICBpbm5lclByb3BzOiBKU1guSW50cmluc2ljRWxlbWVudHNbJ2RpdiddO1xuICAvKiogVGhlIGZvY3VzZWQgc3RhdGUgb2YgdGhlIHNlbGVjdC4gKi9cbiAgaXNGb2N1c2VkOiBib29sZWFuO1xuICBpc0Rpc2FibGVkOiBib29sZWFuO1xufVxuXG5jb25zdCBiYXNlQ1NTID0gPFxuICBPcHRpb24sXG4gIElzTXVsdGkgZXh0ZW5kcyBib29sZWFuLFxuICBHcm91cCBleHRlbmRzIEdyb3VwQmFzZTxPcHRpb24+XG4+KFxuICB7XG4gICAgaXNGb2N1c2VkLFxuICAgIHRoZW1lOiB7XG4gICAgICBzcGFjaW5nOiB7IGJhc2VVbml0IH0sXG4gICAgICBjb2xvcnMsXG4gICAgfSxcbiAgfTpcbiAgICB8IERyb3Bkb3duSW5kaWNhdG9yUHJvcHM8T3B0aW9uLCBJc011bHRpLCBHcm91cD5cbiAgICB8IENsZWFySW5kaWNhdG9yUHJvcHM8T3B0aW9uLCBJc011bHRpLCBHcm91cD4sXG4gIHVuc3R5bGVkOiBib29sZWFuXG4pOiBDU1NPYmplY3RXaXRoTGFiZWwgPT4gKHtcbiAgbGFiZWw6ICdpbmRpY2F0b3JDb250YWluZXInLFxuICBkaXNwbGF5OiAnZmxleCcsXG4gIHRyYW5zaXRpb246ICdjb2xvciAxNTBtcycsXG4gIC4uLih1bnN0eWxlZFxuICAgID8ge31cbiAgICA6IHtcbiAgICAgICAgY29sb3I6IGlzRm9jdXNlZCA/IGNvbG9ycy5uZXV0cmFsNjAgOiBjb2xvcnMubmV1dHJhbDIwLFxuICAgICAgICBwYWRkaW5nOiBiYXNlVW5pdCAqIDIsXG4gICAgICAgICc6aG92ZXInOiB7XG4gICAgICAgICAgY29sb3I6IGlzRm9jdXNlZCA/IGNvbG9ycy5uZXV0cmFsODAgOiBjb2xvcnMubmV1dHJhbDQwLFxuICAgICAgICB9LFxuICAgICAgfSksXG59KTtcblxuZXhwb3J0IGNvbnN0IGRyb3Bkb3duSW5kaWNhdG9yQ1NTID0gYmFzZUNTUztcbmV4cG9ydCBjb25zdCBEcm9wZG93bkluZGljYXRvciA9IDxcbiAgT3B0aW9uLFxuICBJc011bHRpIGV4dGVuZHMgYm9vbGVhbixcbiAgR3JvdXAgZXh0ZW5kcyBHcm91cEJhc2U8T3B0aW9uPlxuPihcbiAgcHJvcHM6IERyb3Bkb3duSW5kaWNhdG9yUHJvcHM8T3B0aW9uLCBJc011bHRpLCBHcm91cD5cbikgPT4ge1xuICBjb25zdCB7IGNoaWxkcmVuLCBpbm5lclByb3BzIH0gPSBwcm9wcztcbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICB7Li4uZ2V0U3R5bGVQcm9wcyhwcm9wcywgJ2Ryb3Bkb3duSW5kaWNhdG9yJywge1xuICAgICAgICBpbmRpY2F0b3I6IHRydWUsXG4gICAgICAgICdkcm9wZG93bi1pbmRpY2F0b3InOiB0cnVlLFxuICAgICAgfSl9XG4gICAgICB7Li4uaW5uZXJQcm9wc31cbiAgICA+XG4gICAgICB7Y2hpbGRyZW4gfHwgPERvd25DaGV2cm9uIC8+fVxuICAgIDwvZGl2PlxuICApO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBDbGVhckluZGljYXRvclByb3BzPFxuICBPcHRpb24gPSB1bmtub3duLFxuICBJc011bHRpIGV4dGVuZHMgYm9vbGVhbiA9IGJvb2xlYW4sXG4gIEdyb3VwIGV4dGVuZHMgR3JvdXBCYXNlPE9wdGlvbj4gPSBHcm91cEJhc2U8T3B0aW9uPlxuPiBleHRlbmRzIENvbW1vblByb3BzQW5kQ2xhc3NOYW1lPE9wdGlvbiwgSXNNdWx0aSwgR3JvdXA+IHtcbiAgLyoqIFRoZSBjaGlsZHJlbiB0byBiZSByZW5kZXJlZCBpbnNpZGUgdGhlIGluZGljYXRvci4gKi9cbiAgY2hpbGRyZW4/OiBSZWFjdE5vZGU7XG4gIC8qKiBQcm9wcyB0aGF0IHdpbGwgYmUgcGFzc2VkIG9uIHRvIHRoZSBjaGlsZHJlbi4gKi9cbiAgaW5uZXJQcm9wczogSlNYLkludHJpbnNpY0VsZW1lbnRzWydkaXYnXTtcbiAgLyoqIFRoZSBmb2N1c2VkIHN0YXRlIG9mIHRoZSBzZWxlY3QuICovXG4gIGlzRm9jdXNlZDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNvbnN0IGNsZWFySW5kaWNhdG9yQ1NTID0gYmFzZUNTUztcbmV4cG9ydCBjb25zdCBDbGVhckluZGljYXRvciA9IDxcbiAgT3B0aW9uLFxuICBJc011bHRpIGV4dGVuZHMgYm9vbGVhbixcbiAgR3JvdXAgZXh0ZW5kcyBHcm91cEJhc2U8T3B0aW9uPlxuPihcbiAgcHJvcHM6IENsZWFySW5kaWNhdG9yUHJvcHM8T3B0aW9uLCBJc011bHRpLCBHcm91cD5cbikgPT4ge1xuICBjb25zdCB7IGNoaWxkcmVuLCBpbm5lclByb3BzIH0gPSBwcm9wcztcbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICB7Li4uZ2V0U3R5bGVQcm9wcyhwcm9wcywgJ2NsZWFySW5kaWNhdG9yJywge1xuICAgICAgICBpbmRpY2F0b3I6IHRydWUsXG4gICAgICAgICdjbGVhci1pbmRpY2F0b3InOiB0cnVlLFxuICAgICAgfSl9XG4gICAgICB7Li4uaW5uZXJQcm9wc31cbiAgICA+XG4gICAgICB7Y2hpbGRyZW4gfHwgPENyb3NzSWNvbiAvPn1cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU2VwYXJhdG9yXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IGludGVyZmFjZSBJbmRpY2F0b3JTZXBhcmF0b3JQcm9wczxcbiAgT3B0aW9uID0gdW5rbm93bixcbiAgSXNNdWx0aSBleHRlbmRzIGJvb2xlYW4gPSBib29sZWFuLFxuICBHcm91cCBleHRlbmRzIEdyb3VwQmFzZTxPcHRpb24+ID0gR3JvdXBCYXNlPE9wdGlvbj5cbj4gZXh0ZW5kcyBDb21tb25Qcm9wc0FuZENsYXNzTmFtZTxPcHRpb24sIElzTXVsdGksIEdyb3VwPiB7XG4gIGlzRGlzYWJsZWQ6IGJvb2xlYW47XG4gIGlzRm9jdXNlZDogYm9vbGVhbjtcbiAgaW5uZXJQcm9wcz86IEpTWC5JbnRyaW5zaWNFbGVtZW50c1snc3BhbiddO1xufVxuXG5leHBvcnQgY29uc3QgaW5kaWNhdG9yU2VwYXJhdG9yQ1NTID0gPFxuICBPcHRpb24sXG4gIElzTXVsdGkgZXh0ZW5kcyBib29sZWFuLFxuICBHcm91cCBleHRlbmRzIEdyb3VwQmFzZTxPcHRpb24+XG4+KFxuICB7XG4gICAgaXNEaXNhYmxlZCxcbiAgICB0aGVtZToge1xuICAgICAgc3BhY2luZzogeyBiYXNlVW5pdCB9LFxuICAgICAgY29sb3JzLFxuICAgIH0sXG4gIH06IEluZGljYXRvclNlcGFyYXRvclByb3BzPE9wdGlvbiwgSXNNdWx0aSwgR3JvdXA+LFxuICB1bnN0eWxlZDogYm9vbGVhblxuKTogQ1NTT2JqZWN0V2l0aExhYmVsID0+ICh7XG4gIGxhYmVsOiAnaW5kaWNhdG9yU2VwYXJhdG9yJyxcbiAgYWxpZ25TZWxmOiAnc3RyZXRjaCcsXG4gIHdpZHRoOiAxLFxuICAuLi4odW5zdHlsZWRcbiAgICA/IHt9XG4gICAgOiB7XG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogaXNEaXNhYmxlZCA/IGNvbG9ycy5uZXV0cmFsMTAgOiBjb2xvcnMubmV1dHJhbDIwLFxuICAgICAgICBtYXJnaW5Cb3R0b206IGJhc2VVbml0ICogMixcbiAgICAgICAgbWFyZ2luVG9wOiBiYXNlVW5pdCAqIDIsXG4gICAgICB9KSxcbn0pO1xuXG5leHBvcnQgY29uc3QgSW5kaWNhdG9yU2VwYXJhdG9yID0gPFxuICBPcHRpb24sXG4gIElzTXVsdGkgZXh0ZW5kcyBib29sZWFuLFxuICBHcm91cCBleHRlbmRzIEdyb3VwQmFzZTxPcHRpb24+XG4+KFxuICBwcm9wczogSW5kaWNhdG9yU2VwYXJhdG9yUHJvcHM8T3B0aW9uLCBJc011bHRpLCBHcm91cD5cbikgPT4ge1xuICBjb25zdCB7IGlubmVyUHJvcHMgfSA9IHByb3BzO1xuICByZXR1cm4gKFxuICAgIDxzcGFuXG4gICAgICB7Li4uaW5uZXJQcm9wc31cbiAgICAgIHsuLi5nZXRTdHlsZVByb3BzKHByb3BzLCAnaW5kaWNhdG9yU2VwYXJhdG9yJywge1xuICAgICAgICAnaW5kaWNhdG9yLXNlcGFyYXRvcic6IHRydWUsXG4gICAgICB9KX1cbiAgICAvPlxuICApO1xufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBMb2FkaW5nXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuY29uc3QgbG9hZGluZ0RvdEFuaW1hdGlvbnMgPSBrZXlmcmFtZXNgXG4gIDAlLCA4MCUsIDEwMCUgeyBvcGFjaXR5OiAwOyB9XG4gIDQwJSB7IG9wYWNpdHk6IDE7IH1cbmA7XG5cbmV4cG9ydCBjb25zdCBsb2FkaW5nSW5kaWNhdG9yQ1NTID0gPFxuICBPcHRpb24sXG4gIElzTXVsdGkgZXh0ZW5kcyBib29sZWFuLFxuICBHcm91cCBleHRlbmRzIEdyb3VwQmFzZTxPcHRpb24+XG4+KFxuICB7XG4gICAgaXNGb2N1c2VkLFxuICAgIHNpemUsXG4gICAgdGhlbWU6IHtcbiAgICAgIGNvbG9ycyxcbiAgICAgIHNwYWNpbmc6IHsgYmFzZVVuaXQgfSxcbiAgICB9LFxuICB9OiBMb2FkaW5nSW5kaWNhdG9yUHJvcHM8T3B0aW9uLCBJc011bHRpLCBHcm91cD4sXG4gIHVuc3R5bGVkOiBib29sZWFuXG4pOiBDU1NPYmplY3RXaXRoTGFiZWwgPT4gKHtcbiAgbGFiZWw6ICdsb2FkaW5nSW5kaWNhdG9yJyxcbiAgZGlzcGxheTogJ2ZsZXgnLFxuICB0cmFuc2l0aW9uOiAnY29sb3IgMTUwbXMnLFxuICBhbGlnblNlbGY6ICdjZW50ZXInLFxuICBmb250U2l6ZTogc2l6ZSxcbiAgbGluZUhlaWdodDogMSxcbiAgbWFyZ2luUmlnaHQ6IHNpemUsXG4gIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gIHZlcnRpY2FsQWxpZ246ICdtaWRkbGUnLFxuICAuLi4odW5zdHlsZWRcbiAgICA/IHt9XG4gICAgOiB7XG4gICAgICAgIGNvbG9yOiBpc0ZvY3VzZWQgPyBjb2xvcnMubmV1dHJhbDYwIDogY29sb3JzLm5ldXRyYWwyMCxcbiAgICAgICAgcGFkZGluZzogYmFzZVVuaXQgKiAyLFxuICAgICAgfSksXG59KTtcblxuaW50ZXJmYWNlIExvYWRpbmdEb3RQcm9wcyB7XG4gIGRlbGF5OiBudW1iZXI7XG4gIG9mZnNldDogYm9vbGVhbjtcbn1cbmNvbnN0IExvYWRpbmdEb3QgPSAoeyBkZWxheSwgb2Zmc2V0IH06IExvYWRpbmdEb3RQcm9wcykgPT4gKFxuICA8c3BhblxuICAgIGNzcz17e1xuICAgICAgYW5pbWF0aW9uOiBgJHtsb2FkaW5nRG90QW5pbWF0aW9uc30gMXMgZWFzZS1pbi1vdXQgJHtkZWxheX1tcyBpbmZpbml0ZTtgLFxuICAgICAgYmFja2dyb3VuZENvbG9yOiAnY3VycmVudENvbG9yJyxcbiAgICAgIGJvcmRlclJhZGl1czogJzFlbScsXG4gICAgICBkaXNwbGF5OiAnaW5saW5lLWJsb2NrJyxcbiAgICAgIG1hcmdpbkxlZnQ6IG9mZnNldCA/ICcxZW0nIDogdW5kZWZpbmVkLFxuICAgICAgaGVpZ2h0OiAnMWVtJyxcbiAgICAgIHZlcnRpY2FsQWxpZ246ICd0b3AnLFxuICAgICAgd2lkdGg6ICcxZW0nLFxuICAgIH19XG4gIC8+XG4pO1xuXG5leHBvcnQgaW50ZXJmYWNlIExvYWRpbmdJbmRpY2F0b3JQcm9wczxcbiAgT3B0aW9uID0gdW5rbm93bixcbiAgSXNNdWx0aSBleHRlbmRzIGJvb2xlYW4gPSBib29sZWFuLFxuICBHcm91cCBleHRlbmRzIEdyb3VwQmFzZTxPcHRpb24+ID0gR3JvdXBCYXNlPE9wdGlvbj5cbj4gZXh0ZW5kcyBDb21tb25Qcm9wc0FuZENsYXNzTmFtZTxPcHRpb24sIElzTXVsdGksIEdyb3VwPiB7XG4gIC8qKiBQcm9wcyB0aGF0IHdpbGwgYmUgcGFzc2VkIG9uIHRvIHRoZSBjaGlsZHJlbi4gKi9cbiAgaW5uZXJQcm9wczogSlNYLkludHJpbnNpY0VsZW1lbnRzWydkaXYnXTtcbiAgLyoqIFRoZSBmb2N1c2VkIHN0YXRlIG9mIHRoZSBzZWxlY3QuICovXG4gIGlzRm9jdXNlZDogYm9vbGVhbjtcbiAgaXNEaXNhYmxlZDogYm9vbGVhbjtcbiAgLyoqIFNldCBzaXplIG9mIHRoZSBjb250YWluZXIuICovXG4gIHNpemU6IG51bWJlcjtcbn1cbmV4cG9ydCBjb25zdCBMb2FkaW5nSW5kaWNhdG9yID0gPFxuICBPcHRpb24sXG4gIElzTXVsdGkgZXh0ZW5kcyBib29sZWFuLFxuICBHcm91cCBleHRlbmRzIEdyb3VwQmFzZTxPcHRpb24+XG4+KHtcbiAgaW5uZXJQcm9wcyxcbiAgaXNSdGwsXG4gIHNpemUgPSA0LFxuICAuLi5yZXN0UHJvcHNcbn06IExvYWRpbmdJbmRpY2F0b3JQcm9wczxPcHRpb24sIElzTXVsdGksIEdyb3VwPikgPT4ge1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIHsuLi5nZXRTdHlsZVByb3BzKFxuICAgICAgICB7IC4uLnJlc3RQcm9wcywgaW5uZXJQcm9wcywgaXNSdGwsIHNpemUgfSxcbiAgICAgICAgJ2xvYWRpbmdJbmRpY2F0b3InLFxuICAgICAgICB7XG4gICAgICAgICAgaW5kaWNhdG9yOiB0cnVlLFxuICAgICAgICAgICdsb2FkaW5nLWluZGljYXRvcic6IHRydWUsXG4gICAgICAgIH1cbiAgICAgICl9XG4gICAgICB7Li4uaW5uZXJQcm9wc31cbiAgICA+XG4gICAgICA8TG9hZGluZ0RvdCBkZWxheT17MH0gb2Zmc2V0PXtpc1J0bH0gLz5cbiAgICAgIDxMb2FkaW5nRG90IGRlbGF5PXsxNjB9IG9mZnNldCAvPlxuICAgICAgPExvYWRpbmdEb3QgZGVsYXk9ezMyMH0gb2Zmc2V0PXshaXNSdGx9IC8+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuIl19 */\")\n  });\n};\nvar LoadingIndicator = function LoadingIndicator(_ref7) {\n  var innerProps = _ref7.innerProps,\n    isRtl = _ref7.isRtl,\n    _ref7$size = _ref7.size,\n    size = _ref7$size === void 0 ? 4 : _ref7$size,\n    restProps = _objectWithoutProperties(_ref7, _excluded2);\n  return jsx(\"div\", _extends({}, getStyleProps(_objectSpread(_objectSpread({}, restProps), {}, {\n    innerProps: innerProps,\n    isRtl: isRtl,\n    size: size\n  }), 'loadingIndicator', {\n    indicator: true,\n    'loading-indicator': true\n  }), innerProps), jsx(LoadingDot, {\n    delay: 0,\n    offset: isRtl\n  }), jsx(LoadingDot, {\n    delay: 160,\n    offset: true\n  }), jsx(LoadingDot, {\n    delay: 320,\n    offset: !isRtl\n  }));\n};\n\nvar css$1 = function css(_ref, unstyled) {\n  var isDisabled = _ref.isDisabled,\n    isFocused = _ref.isFocused,\n    _ref$theme = _ref.theme,\n    colors = _ref$theme.colors,\n    borderRadius = _ref$theme.borderRadius,\n    spacing = _ref$theme.spacing;\n  return _objectSpread({\n    label: 'control',\n    alignItems: 'center',\n    cursor: 'default',\n    display: 'flex',\n    flexWrap: 'wrap',\n    justifyContent: 'space-between',\n    minHeight: spacing.controlHeight,\n    outline: '0 !important',\n    position: 'relative',\n    transition: 'all 100ms'\n  }, unstyled ? {} : {\n    backgroundColor: isDisabled ? colors.neutral5 : colors.neutral0,\n    borderColor: isDisabled ? colors.neutral10 : isFocused ? colors.primary : colors.neutral20,\n    borderRadius: borderRadius,\n    borderStyle: 'solid',\n    borderWidth: 1,\n    boxShadow: isFocused ? \"0 0 0 1px \".concat(colors.primary) : undefined,\n    '&:hover': {\n      borderColor: isFocused ? colors.primary : colors.neutral30\n    }\n  });\n};\nvar Control = function Control(props) {\n  var children = props.children,\n    isDisabled = props.isDisabled,\n    isFocused = props.isFocused,\n    innerRef = props.innerRef,\n    innerProps = props.innerProps,\n    menuIsOpen = props.menuIsOpen;\n  return jsx(\"div\", _extends({\n    ref: innerRef\n  }, getStyleProps(props, 'control', {\n    control: true,\n    'control--is-disabled': isDisabled,\n    'control--is-focused': isFocused,\n    'control--menu-is-open': menuIsOpen\n  }), innerProps), children);\n};\nvar Control$1 = Control;\n\nvar _excluded$1 = [\"data\"];\nvar groupCSS = function groupCSS(_ref, unstyled) {\n  var spacing = _ref.theme.spacing;\n  return unstyled ? {} : {\n    paddingBottom: spacing.baseUnit * 2,\n    paddingTop: spacing.baseUnit * 2\n  };\n};\nvar Group = function Group(props) {\n  var children = props.children,\n    cx = props.cx,\n    getStyles = props.getStyles,\n    getClassNames = props.getClassNames,\n    Heading = props.Heading,\n    headingProps = props.headingProps,\n    innerProps = props.innerProps,\n    label = props.label,\n    theme = props.theme,\n    selectProps = props.selectProps;\n  return jsx(\"div\", _extends({}, getStyleProps(props, 'group', {\n    group: true\n  }), innerProps), jsx(Heading, _extends({}, headingProps, {\n    selectProps: selectProps,\n    theme: theme,\n    getStyles: getStyles,\n    getClassNames: getClassNames,\n    cx: cx\n  }), label), jsx(\"div\", null, children));\n};\nvar groupHeadingCSS = function groupHeadingCSS(_ref2, unstyled) {\n  var _ref2$theme = _ref2.theme,\n    colors = _ref2$theme.colors,\n    spacing = _ref2$theme.spacing;\n  return _objectSpread({\n    label: 'group',\n    cursor: 'default',\n    display: 'block'\n  }, unstyled ? {} : {\n    color: colors.neutral40,\n    fontSize: '75%',\n    fontWeight: 500,\n    marginBottom: '0.25em',\n    paddingLeft: spacing.baseUnit * 3,\n    paddingRight: spacing.baseUnit * 3,\n    textTransform: 'uppercase'\n  });\n};\nvar GroupHeading = function GroupHeading(props) {\n  var _cleanCommonProps = cleanCommonProps(props);\n    _cleanCommonProps.data;\n    var innerProps = _objectWithoutProperties(_cleanCommonProps, _excluded$1);\n  return jsx(\"div\", _extends({}, getStyleProps(props, 'groupHeading', {\n    'group-heading': true\n  }), innerProps));\n};\nvar Group$1 = Group;\n\nvar _excluded = [\"innerRef\", \"isDisabled\", \"isHidden\", \"inputClassName\"];\nvar inputCSS = function inputCSS(_ref, unstyled) {\n  var isDisabled = _ref.isDisabled,\n    value = _ref.value,\n    _ref$theme = _ref.theme,\n    spacing = _ref$theme.spacing,\n    colors = _ref$theme.colors;\n  return _objectSpread(_objectSpread({\n    visibility: isDisabled ? 'hidden' : 'visible',\n    // force css to recompute when value change due to @emotion bug.\n    // We can remove it whenever the bug is fixed.\n    transform: value ? 'translateZ(0)' : ''\n  }, containerStyle), unstyled ? {} : {\n    margin: spacing.baseUnit / 2,\n    paddingBottom: spacing.baseUnit / 2,\n    paddingTop: spacing.baseUnit / 2,\n    color: colors.neutral80\n  });\n};\nvar spacingStyle = {\n  gridArea: '1 / 2',\n  font: 'inherit',\n  minWidth: '2px',\n  border: 0,\n  margin: 0,\n  outline: 0,\n  padding: 0\n};\nvar containerStyle = {\n  flex: '1 1 auto',\n  display: 'inline-grid',\n  gridArea: '1 / 1 / 2 / 3',\n  gridTemplateColumns: '0 min-content',\n  '&:after': _objectSpread({\n    content: 'attr(data-value) \" \"',\n    visibility: 'hidden',\n    whiteSpace: 'pre'\n  }, spacingStyle)\n};\nvar inputStyle = function inputStyle(isHidden) {\n  return _objectSpread({\n    label: 'input',\n    color: 'inherit',\n    background: 0,\n    opacity: isHidden ? 0 : 1,\n    width: '100%'\n  }, spacingStyle);\n};\nvar Input = function Input(props) {\n  var cx = props.cx,\n    value = props.value;\n  var _cleanCommonProps = cleanCommonProps(props),\n    innerRef = _cleanCommonProps.innerRef,\n    isDisabled = _cleanCommonProps.isDisabled,\n    isHidden = _cleanCommonProps.isHidden,\n    inputClassName = _cleanCommonProps.inputClassName,\n    innerProps = _objectWithoutProperties(_cleanCommonProps, _excluded);\n  return jsx(\"div\", _extends({}, getStyleProps(props, 'input', {\n    'input-container': true\n  }), {\n    \"data-value\": value || ''\n  }), jsx(\"input\", _extends({\n    className: cx({\n      input: true\n    }, inputClassName),\n    ref: innerRef,\n    style: inputStyle(isHidden),\n    disabled: isDisabled\n  }, innerProps)));\n};\nvar Input$1 = Input;\n\nvar multiValueCSS = function multiValueCSS(_ref, unstyled) {\n  var _ref$theme = _ref.theme,\n    spacing = _ref$theme.spacing,\n    borderRadius = _ref$theme.borderRadius,\n    colors = _ref$theme.colors;\n  return _objectSpread({\n    label: 'multiValue',\n    display: 'flex',\n    minWidth: 0\n  }, unstyled ? {} : {\n    backgroundColor: colors.neutral10,\n    borderRadius: borderRadius / 2,\n    margin: spacing.baseUnit / 2\n  });\n};\nvar multiValueLabelCSS = function multiValueLabelCSS(_ref2, unstyled) {\n  var _ref2$theme = _ref2.theme,\n    borderRadius = _ref2$theme.borderRadius,\n    colors = _ref2$theme.colors,\n    cropWithEllipsis = _ref2.cropWithEllipsis;\n  return _objectSpread({\n    overflow: 'hidden',\n    textOverflow: cropWithEllipsis || cropWithEllipsis === undefined ? 'ellipsis' : undefined,\n    whiteSpace: 'nowrap'\n  }, unstyled ? {} : {\n    borderRadius: borderRadius / 2,\n    color: colors.neutral80,\n    fontSize: '85%',\n    padding: 3,\n    paddingLeft: 6\n  });\n};\nvar multiValueRemoveCSS = function multiValueRemoveCSS(_ref3, unstyled) {\n  var _ref3$theme = _ref3.theme,\n    spacing = _ref3$theme.spacing,\n    borderRadius = _ref3$theme.borderRadius,\n    colors = _ref3$theme.colors,\n    isFocused = _ref3.isFocused;\n  return _objectSpread({\n    alignItems: 'center',\n    display: 'flex'\n  }, unstyled ? {} : {\n    borderRadius: borderRadius / 2,\n    backgroundColor: isFocused ? colors.dangerLight : undefined,\n    paddingLeft: spacing.baseUnit,\n    paddingRight: spacing.baseUnit,\n    ':hover': {\n      backgroundColor: colors.dangerLight,\n      color: colors.danger\n    }\n  });\n};\nvar MultiValueGeneric = function MultiValueGeneric(_ref4) {\n  var children = _ref4.children,\n    innerProps = _ref4.innerProps;\n  return jsx(\"div\", innerProps, children);\n};\nvar MultiValueContainer = MultiValueGeneric;\nvar MultiValueLabel = MultiValueGeneric;\nfunction MultiValueRemove(_ref5) {\n  var children = _ref5.children,\n    innerProps = _ref5.innerProps;\n  return jsx(\"div\", _extends({\n    role: \"button\"\n  }, innerProps), children || jsx(CrossIcon, {\n    size: 14\n  }));\n}\nvar MultiValue = function MultiValue(props) {\n  var children = props.children,\n    components = props.components,\n    data = props.data,\n    innerProps = props.innerProps,\n    isDisabled = props.isDisabled,\n    removeProps = props.removeProps,\n    selectProps = props.selectProps;\n  var Container = components.Container,\n    Label = components.Label,\n    Remove = components.Remove;\n  return jsx(Container, {\n    data: data,\n    innerProps: _objectSpread(_objectSpread({}, getStyleProps(props, 'multiValue', {\n      'multi-value': true,\n      'multi-value--is-disabled': isDisabled\n    })), innerProps),\n    selectProps: selectProps\n  }, jsx(Label, {\n    data: data,\n    innerProps: _objectSpread({}, getStyleProps(props, 'multiValueLabel', {\n      'multi-value__label': true\n    })),\n    selectProps: selectProps\n  }, children), jsx(Remove, {\n    data: data,\n    innerProps: _objectSpread(_objectSpread({}, getStyleProps(props, 'multiValueRemove', {\n      'multi-value__remove': true\n    })), {}, {\n      'aria-label': \"Remove \".concat(children || 'option')\n    }, removeProps),\n    selectProps: selectProps\n  }));\n};\nvar MultiValue$1 = MultiValue;\n\nvar optionCSS = function optionCSS(_ref, unstyled) {\n  var isDisabled = _ref.isDisabled,\n    isFocused = _ref.isFocused,\n    isSelected = _ref.isSelected,\n    _ref$theme = _ref.theme,\n    spacing = _ref$theme.spacing,\n    colors = _ref$theme.colors;\n  return _objectSpread({\n    label: 'option',\n    cursor: 'default',\n    display: 'block',\n    fontSize: 'inherit',\n    width: '100%',\n    userSelect: 'none',\n    WebkitTapHighlightColor: 'rgba(0, 0, 0, 0)'\n  }, unstyled ? {} : {\n    backgroundColor: isSelected ? colors.primary : isFocused ? colors.primary25 : 'transparent',\n    color: isDisabled ? colors.neutral20 : isSelected ? colors.neutral0 : 'inherit',\n    padding: \"\".concat(spacing.baseUnit * 2, \"px \").concat(spacing.baseUnit * 3, \"px\"),\n    // provide some affordance on touch devices\n    ':active': {\n      backgroundColor: !isDisabled ? isSelected ? colors.primary : colors.primary50 : undefined\n    }\n  });\n};\nvar Option = function Option(props) {\n  var children = props.children,\n    isDisabled = props.isDisabled,\n    isFocused = props.isFocused,\n    isSelected = props.isSelected,\n    innerRef = props.innerRef,\n    innerProps = props.innerProps;\n  return jsx(\"div\", _extends({}, getStyleProps(props, 'option', {\n    option: true,\n    'option--is-disabled': isDisabled,\n    'option--is-focused': isFocused,\n    'option--is-selected': isSelected\n  }), {\n    ref: innerRef,\n    \"aria-disabled\": isDisabled\n  }, innerProps), children);\n};\nvar Option$1 = Option;\n\nvar placeholderCSS = function placeholderCSS(_ref, unstyled) {\n  var _ref$theme = _ref.theme,\n    spacing = _ref$theme.spacing,\n    colors = _ref$theme.colors;\n  return _objectSpread({\n    label: 'placeholder',\n    gridArea: '1 / 1 / 2 / 3'\n  }, unstyled ? {} : {\n    color: colors.neutral50,\n    marginLeft: spacing.baseUnit / 2,\n    marginRight: spacing.baseUnit / 2\n  });\n};\nvar Placeholder = function Placeholder(props) {\n  var children = props.children,\n    innerProps = props.innerProps;\n  return jsx(\"div\", _extends({}, getStyleProps(props, 'placeholder', {\n    placeholder: true\n  }), innerProps), children);\n};\nvar Placeholder$1 = Placeholder;\n\nvar css = function css(_ref, unstyled) {\n  var isDisabled = _ref.isDisabled,\n    _ref$theme = _ref.theme,\n    spacing = _ref$theme.spacing,\n    colors = _ref$theme.colors;\n  return _objectSpread({\n    label: 'singleValue',\n    gridArea: '1 / 1 / 2 / 3',\n    maxWidth: '100%',\n    overflow: 'hidden',\n    textOverflow: 'ellipsis',\n    whiteSpace: 'nowrap'\n  }, unstyled ? {} : {\n    color: isDisabled ? colors.neutral40 : colors.neutral80,\n    marginLeft: spacing.baseUnit / 2,\n    marginRight: spacing.baseUnit / 2\n  });\n};\nvar SingleValue = function SingleValue(props) {\n  var children = props.children,\n    isDisabled = props.isDisabled,\n    innerProps = props.innerProps;\n  return jsx(\"div\", _extends({}, getStyleProps(props, 'singleValue', {\n    'single-value': true,\n    'single-value--is-disabled': isDisabled\n  }), innerProps), children);\n};\nvar SingleValue$1 = SingleValue;\n\nvar components = {\n  ClearIndicator: ClearIndicator,\n  Control: Control$1,\n  DropdownIndicator: DropdownIndicator,\n  DownChevron: DownChevron,\n  CrossIcon: CrossIcon,\n  Group: Group$1,\n  GroupHeading: GroupHeading,\n  IndicatorsContainer: IndicatorsContainer,\n  IndicatorSeparator: IndicatorSeparator,\n  Input: Input$1,\n  LoadingIndicator: LoadingIndicator,\n  Menu: Menu$1,\n  MenuList: MenuList,\n  MenuPortal: MenuPortal,\n  LoadingMessage: LoadingMessage,\n  NoOptionsMessage: NoOptionsMessage,\n  MultiValue: MultiValue$1,\n  MultiValueContainer: MultiValueContainer,\n  MultiValueLabel: MultiValueLabel,\n  MultiValueRemove: MultiValueRemove,\n  Option: Option$1,\n  Placeholder: Placeholder$1,\n  SelectContainer: SelectContainer,\n  SingleValue: SingleValue$1,\n  ValueContainer: ValueContainer\n};\nvar defaultComponents = function defaultComponents(props) {\n  return _objectSpread(_objectSpread({}, components), props.components);\n};\n\nexport { isMobileDevice as A, multiValueAsValue as B, singleValueAsValue as C, valueTernary as D, classNames as E, defaultComponents as F, isDocumentElement as G, cleanValue as H, scrollIntoView as I, noop as J, notNullish as K, handleInputChange as L, MenuPlacer as M, clearIndicatorCSS as a, containerCSS as b, components as c, css$1 as d, dropdownIndicatorCSS as e, groupHeadingCSS as f, groupCSS as g, indicatorSeparatorCSS as h, indicatorsContainerCSS as i, inputCSS as j, loadingMessageCSS as k, loadingIndicatorCSS as l, menuCSS as m, menuListCSS as n, menuPortalCSS as o, multiValueCSS as p, multiValueLabelCSS as q, removeProps as r, supportsPassiveEvents as s, multiValueRemoveCSS as t, noOptionsMessageCSS as u, optionCSS as v, placeholderCSS as w, css as x, valueContainerCSS as y, isTouchCapable as z };\n", "const sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n  x: v,\n  y: v\n});\nconst oppositeSideMap = {\n  left: 'right',\n  right: 'left',\n  bottom: 'top',\n  top: 'bottom'\n};\nconst oppositeAlignmentMap = {\n  start: 'end',\n  end: 'start'\n};\nfunction clamp(start, value, end) {\n  return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n  return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n  return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n  return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n  return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n  return axis === 'y' ? 'height' : 'width';\n}\nfunction getSideAxis(placement) {\n  return ['top', 'bottom'].includes(getSide(placement)) ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n  return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n  if (rtl === void 0) {\n    rtl = false;\n  }\n  const alignment = getAlignment(placement);\n  const alignmentAxis = getAlignmentAxis(placement);\n  const length = getAxisLength(alignmentAxis);\n  let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n  if (rects.reference[length] > rects.floating[length]) {\n    mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n  }\n  return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n  const oppositePlacement = getOppositePlacement(placement);\n  return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n  return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);\n}\nfunction getSideList(side, isStart, rtl) {\n  const lr = ['left', 'right'];\n  const rl = ['right', 'left'];\n  const tb = ['top', 'bottom'];\n  const bt = ['bottom', 'top'];\n  switch (side) {\n    case 'top':\n    case 'bottom':\n      if (rtl) return isStart ? rl : lr;\n      return isStart ? lr : rl;\n    case 'left':\n    case 'right':\n      return isStart ? tb : bt;\n    default:\n      return [];\n  }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n  const alignment = getAlignment(placement);\n  let list = getSideList(getSide(placement), direction === 'start', rtl);\n  if (alignment) {\n    list = list.map(side => side + \"-\" + alignment);\n    if (flipAlignment) {\n      list = list.concat(list.map(getOppositeAlignmentPlacement));\n    }\n  }\n  return list;\n}\nfunction getOppositePlacement(placement) {\n  return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);\n}\nfunction expandPaddingObject(padding) {\n  return {\n    top: 0,\n    right: 0,\n    bottom: 0,\n    left: 0,\n    ...padding\n  };\n}\nfunction getPaddingObject(padding) {\n  return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n    top: padding,\n    right: padding,\n    bottom: padding,\n    left: padding\n  };\n}\nfunction rectToClientRect(rect) {\n  return {\n    ...rect,\n    top: rect.y,\n    left: rect.x,\n    right: rect.x + rect.width,\n    bottom: rect.y + rect.height\n  };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n", "function getNodeName(node) {\n  if (isNode(node)) {\n    return (node.nodeName || '').toLowerCase();\n  }\n  // Mocked nodes in testing environments may not be instances of Node. By\n  // returning `#document` an infinite loop won't occur.\n  // https://github.com/floating-ui/floating-ui/issues/2317\n  return '#document';\n}\nfunction getWindow(node) {\n  var _node$ownerDocument;\n  return (node == null ? void 0 : (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n  var _ref;\n  return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode(value) {\n  return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n  return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n  return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n  // Browsers without `ShadowRoot` support.\n  if (typeof ShadowRoot === 'undefined') {\n    return false;\n  }\n  return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nfunction isOverflowElement(element) {\n  const {\n    overflow,\n    overflowX,\n    overflowY,\n    display\n  } = getComputedStyle(element);\n  return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !['inline', 'contents'].includes(display);\n}\nfunction isTableElement(element) {\n  return ['table', 'td', 'th'].includes(getNodeName(element));\n}\nfunction isContainingBlock(element) {\n  const webkit = isWebKit();\n  const css = getComputedStyle(element);\n\n  // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n  return css.transform !== 'none' || css.perspective !== 'none' || (css.containerType ? css.containerType !== 'normal' : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !webkit && (css.filter ? css.filter !== 'none' : false) || ['transform', 'perspective', 'filter'].some(value => (css.willChange || '').includes(value)) || ['paint', 'layout', 'strict', 'content'].some(value => (css.contain || '').includes(value));\n}\nfunction getContainingBlock(element) {\n  let currentNode = getParentNode(element);\n  while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n    if (isContainingBlock(currentNode)) {\n      return currentNode;\n    } else {\n      currentNode = getParentNode(currentNode);\n    }\n  }\n  return null;\n}\nfunction isWebKit() {\n  if (typeof CSS === 'undefined' || !CSS.supports) return false;\n  return CSS.supports('-webkit-backdrop-filter', 'none');\n}\nfunction isLastTraversableNode(node) {\n  return ['html', 'body', '#document'].includes(getNodeName(node));\n}\nfunction getComputedStyle(element) {\n  return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n  if (isElement(element)) {\n    return {\n      scrollLeft: element.scrollLeft,\n      scrollTop: element.scrollTop\n    };\n  }\n  return {\n    scrollLeft: element.pageXOffset,\n    scrollTop: element.pageYOffset\n  };\n}\nfunction getParentNode(node) {\n  if (getNodeName(node) === 'html') {\n    return node;\n  }\n  const result =\n  // Step into the shadow DOM of the parent of a slotted node.\n  node.assignedSlot ||\n  // DOM Element detected.\n  node.parentNode ||\n  // ShadowRoot detected.\n  isShadowRoot(node) && node.host ||\n  // Fallback.\n  getDocumentElement(node);\n  return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n  const parentNode = getParentNode(node);\n  if (isLastTraversableNode(parentNode)) {\n    return node.ownerDocument ? node.ownerDocument.body : node.body;\n  }\n  if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n    return parentNode;\n  }\n  return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list) {\n  var _node$ownerDocument2;\n  if (list === void 0) {\n    list = [];\n  }\n  const scrollableAncestor = getNearestOverflowAncestor(node);\n  const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n  const win = getWindow(scrollableAncestor);\n  if (isBody) {\n    return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : []);\n  }\n  return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor));\n}\n\nexport { getComputedStyle, getContainingBlock, getDocumentElement, getNearestOverflowAncestor, getNodeName, getNodeScroll, getOverflowAncestors, getParentNode, getWindow, isContainingBlock, isElement, isHTMLElement, isLastTraversableNode, isNode, isOverflowElement, isShadowRoot, isTableElement, isWebKit };\n", "import { rectToClientRect, computePosition as computePosition$1 } from '@floating-ui/core';\nexport { arrow, autoPlacement, detectOverflow, flip, hide, inline, limitShift, offset, shift, size } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle, isHTMLElement, isElement, getWindow, isWebKit, getDocumentElement, getNodeName, isOverflowElement, getNodeScroll, getOverflowAncestors, getParentNode, isLastTraversableNode, isContainingBlock, isTableElement, getContainingBlock } from '@floating-ui/utils/dom';\nexport { getOverflowAncestors } from '@floating-ui/utils/dom';\n\nfunction getCssDimensions(element) {\n  const css = getComputedStyle(element);\n  // In testing environments, the `width` and `height` properties are empty\n  // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n  let width = parseFloat(css.width) || 0;\n  let height = parseFloat(css.height) || 0;\n  const hasOffset = isHTMLElement(element);\n  const offsetWidth = hasOffset ? element.offsetWidth : width;\n  const offsetHeight = hasOffset ? element.offsetHeight : height;\n  const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n  if (shouldFallback) {\n    width = offsetWidth;\n    height = offsetHeight;\n  }\n  return {\n    width,\n    height,\n    $: shouldFallback\n  };\n}\n\nfunction unwrapElement(element) {\n  return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n  const domElement = unwrapElement(element);\n  if (!isHTMLElement(domElement)) {\n    return createCoords(1);\n  }\n  const rect = domElement.getBoundingClientRect();\n  const {\n    width,\n    height,\n    $\n  } = getCssDimensions(domElement);\n  let x = ($ ? round(rect.width) : rect.width) / width;\n  let y = ($ ? round(rect.height) : rect.height) / height;\n\n  // 0, NaN, or Infinity should always fallback to 1.\n\n  if (!x || !Number.isFinite(x)) {\n    x = 1;\n  }\n  if (!y || !Number.isFinite(y)) {\n    y = 1;\n  }\n  return {\n    x,\n    y\n  };\n}\n\nconst noOffsets = /*#__PURE__*/createCoords(0);\nfunction getVisualOffsets(element) {\n  const win = getWindow(element);\n  if (!isWebKit() || !win.visualViewport) {\n    return noOffsets;\n  }\n  return {\n    x: win.visualViewport.offsetLeft,\n    y: win.visualViewport.offsetTop\n  };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n  if (isFixed === void 0) {\n    isFixed = false;\n  }\n  if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {\n    return false;\n  }\n  return isFixed;\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n  if (includeScale === void 0) {\n    includeScale = false;\n  }\n  if (isFixedStrategy === void 0) {\n    isFixedStrategy = false;\n  }\n  const clientRect = element.getBoundingClientRect();\n  const domElement = unwrapElement(element);\n  let scale = createCoords(1);\n  if (includeScale) {\n    if (offsetParent) {\n      if (isElement(offsetParent)) {\n        scale = getScale(offsetParent);\n      }\n    } else {\n      scale = getScale(element);\n    }\n  }\n  const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n  let x = (clientRect.left + visualOffsets.x) / scale.x;\n  let y = (clientRect.top + visualOffsets.y) / scale.y;\n  let width = clientRect.width / scale.x;\n  let height = clientRect.height / scale.y;\n  if (domElement) {\n    const win = getWindow(domElement);\n    const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n    let currentIFrame = win.frameElement;\n    while (currentIFrame && offsetParent && offsetWin !== win) {\n      const iframeScale = getScale(currentIFrame);\n      const iframeRect = currentIFrame.getBoundingClientRect();\n      const css = getComputedStyle(currentIFrame);\n      const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n      const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n      x *= iframeScale.x;\n      y *= iframeScale.y;\n      width *= iframeScale.x;\n      height *= iframeScale.y;\n      x += left;\n      y += top;\n      currentIFrame = getWindow(currentIFrame).frameElement;\n    }\n  }\n  return rectToClientRect({\n    width,\n    height,\n    x,\n    y\n  });\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n  let {\n    rect,\n    offsetParent,\n    strategy\n  } = _ref;\n  const isOffsetParentAnElement = isHTMLElement(offsetParent);\n  const documentElement = getDocumentElement(offsetParent);\n  if (offsetParent === documentElement) {\n    return rect;\n  }\n  let scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  let scale = createCoords(1);\n  const offsets = createCoords(0);\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && strategy !== 'fixed') {\n    if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n    if (isHTMLElement(offsetParent)) {\n      const offsetRect = getBoundingClientRect(offsetParent);\n      scale = getScale(offsetParent);\n      offsets.x = offsetRect.x + offsetParent.clientLeft;\n      offsets.y = offsetRect.y + offsetParent.clientTop;\n    }\n  }\n  return {\n    width: rect.width * scale.x,\n    height: rect.height * scale.y,\n    x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x,\n    y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y\n  };\n}\n\nfunction getClientRects(element) {\n  return Array.from(element.getClientRects());\n}\n\nfunction getWindowScrollBarX(element) {\n  // If <html> has a CSS width greater than the viewport, then this will be\n  // incorrect for RTL.\n  return getBoundingClientRect(getDocumentElement(element)).left + getNodeScroll(element).scrollLeft;\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n  const html = getDocumentElement(element);\n  const scroll = getNodeScroll(element);\n  const body = element.ownerDocument.body;\n  const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n  const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n  let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n  const y = -scroll.scrollTop;\n  if (getComputedStyle(body).direction === 'rtl') {\n    x += max(html.clientWidth, body.clientWidth) - width;\n  }\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\n\nfunction getViewportRect(element, strategy) {\n  const win = getWindow(element);\n  const html = getDocumentElement(element);\n  const visualViewport = win.visualViewport;\n  let width = html.clientWidth;\n  let height = html.clientHeight;\n  let x = 0;\n  let y = 0;\n  if (visualViewport) {\n    width = visualViewport.width;\n    height = visualViewport.height;\n    const visualViewportBased = isWebKit();\n    if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n      x = visualViewport.offsetLeft;\n      y = visualViewport.offsetTop;\n    }\n  }\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\n\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n  const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n  const top = clientRect.top + element.clientTop;\n  const left = clientRect.left + element.clientLeft;\n  const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);\n  const width = element.clientWidth * scale.x;\n  const height = element.clientHeight * scale.y;\n  const x = left * scale.x;\n  const y = top * scale.y;\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n  let rect;\n  if (clippingAncestor === 'viewport') {\n    rect = getViewportRect(element, strategy);\n  } else if (clippingAncestor === 'document') {\n    rect = getDocumentRect(getDocumentElement(element));\n  } else if (isElement(clippingAncestor)) {\n    rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n  } else {\n    const visualOffsets = getVisualOffsets(element);\n    rect = {\n      ...clippingAncestor,\n      x: clippingAncestor.x - visualOffsets.x,\n      y: clippingAncestor.y - visualOffsets.y\n    };\n  }\n  return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n  const parentNode = getParentNode(element);\n  if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n    return false;\n  }\n  return getComputedStyle(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n  const cachedResult = cache.get(element);\n  if (cachedResult) {\n    return cachedResult;\n  }\n  let result = getOverflowAncestors(element).filter(el => isElement(el) && getNodeName(el) !== 'body');\n  let currentContainingBlockComputedStyle = null;\n  const elementIsFixed = getComputedStyle(element).position === 'fixed';\n  let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n  // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n  while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n    const computedStyle = getComputedStyle(currentNode);\n    const currentNodeIsContaining = isContainingBlock(currentNode);\n    if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n      currentContainingBlockComputedStyle = null;\n    }\n    const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && ['absolute', 'fixed'].includes(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n    if (shouldDropCurrentNode) {\n      // Drop non-containing blocks.\n      result = result.filter(ancestor => ancestor !== currentNode);\n    } else {\n      // Record last containing block for next iteration.\n      currentContainingBlockComputedStyle = computedStyle;\n    }\n    currentNode = getParentNode(currentNode);\n  }\n  cache.set(element, result);\n  return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n  let {\n    element,\n    boundary,\n    rootBoundary,\n    strategy\n  } = _ref;\n  const elementClippingAncestors = boundary === 'clippingAncestors' ? getClippingElementAncestors(element, this._c) : [].concat(boundary);\n  const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n  const firstClippingAncestor = clippingAncestors[0];\n  const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n    const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n    accRect.top = max(rect.top, accRect.top);\n    accRect.right = min(rect.right, accRect.right);\n    accRect.bottom = min(rect.bottom, accRect.bottom);\n    accRect.left = max(rect.left, accRect.left);\n    return accRect;\n  }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n  return {\n    width: clippingRect.right - clippingRect.left,\n    height: clippingRect.bottom - clippingRect.top,\n    x: clippingRect.left,\n    y: clippingRect.top\n  };\n}\n\nfunction getDimensions(element) {\n  return getCssDimensions(element);\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n  const isOffsetParentAnElement = isHTMLElement(offsetParent);\n  const documentElement = getDocumentElement(offsetParent);\n  const isFixed = strategy === 'fixed';\n  const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n  let scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  const offsets = createCoords(0);\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n    if (isOffsetParentAnElement) {\n      const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n      offsets.x = offsetRect.x + offsetParent.clientLeft;\n      offsets.y = offsetRect.y + offsetParent.clientTop;\n    } else if (documentElement) {\n      offsets.x = getWindowScrollBarX(documentElement);\n    }\n  }\n  return {\n    x: rect.left + scroll.scrollLeft - offsets.x,\n    y: rect.top + scroll.scrollTop - offsets.y,\n    width: rect.width,\n    height: rect.height\n  };\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n  if (!isHTMLElement(element) || getComputedStyle(element).position === 'fixed') {\n    return null;\n  }\n  if (polyfill) {\n    return polyfill(element);\n  }\n  return element.offsetParent;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n  const window = getWindow(element);\n  if (!isHTMLElement(element)) {\n    return window;\n  }\n  let offsetParent = getTrueOffsetParent(element, polyfill);\n  while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n    offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n  }\n  if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static' && !isContainingBlock(offsetParent))) {\n    return window;\n  }\n  return offsetParent || getContainingBlock(element) || window;\n}\n\nconst getElementRects = async function (_ref) {\n  let {\n    reference,\n    floating,\n    strategy\n  } = _ref;\n  const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n  const getDimensionsFn = this.getDimensions;\n  return {\n    reference: getRectRelativeToOffsetParent(reference, await getOffsetParentFn(floating), strategy),\n    floating: {\n      x: 0,\n      y: 0,\n      ...(await getDimensionsFn(floating))\n    }\n  };\n};\n\nfunction isRTL(element) {\n  return getComputedStyle(element).direction === 'rtl';\n}\n\nconst platform = {\n  convertOffsetParentRelativeRectToViewportRelativeRect,\n  getDocumentElement,\n  getClippingRect,\n  getOffsetParent,\n  getElementRects,\n  getClientRects,\n  getDimensions,\n  getScale,\n  isElement,\n  isRTL\n};\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n  let io = null;\n  let timeoutId;\n  const root = getDocumentElement(element);\n  function cleanup() {\n    clearTimeout(timeoutId);\n    io && io.disconnect();\n    io = null;\n  }\n  function refresh(skip, threshold) {\n    if (skip === void 0) {\n      skip = false;\n    }\n    if (threshold === void 0) {\n      threshold = 1;\n    }\n    cleanup();\n    const {\n      left,\n      top,\n      width,\n      height\n    } = element.getBoundingClientRect();\n    if (!skip) {\n      onMove();\n    }\n    if (!width || !height) {\n      return;\n    }\n    const insetTop = floor(top);\n    const insetRight = floor(root.clientWidth - (left + width));\n    const insetBottom = floor(root.clientHeight - (top + height));\n    const insetLeft = floor(left);\n    const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n    const options = {\n      rootMargin,\n      threshold: max(0, min(1, threshold)) || 1\n    };\n    let isFirstUpdate = true;\n    function handleObserve(entries) {\n      const ratio = entries[0].intersectionRatio;\n      if (ratio !== threshold) {\n        if (!isFirstUpdate) {\n          return refresh();\n        }\n        if (!ratio) {\n          timeoutId = setTimeout(() => {\n            refresh(false, 1e-7);\n          }, 100);\n        } else {\n          refresh(false, ratio);\n        }\n      }\n      isFirstUpdate = false;\n    }\n\n    // Older browsers don't support a `document` as the root and will throw an\n    // error.\n    try {\n      io = new IntersectionObserver(handleObserve, {\n        ...options,\n        // Handle <iframe>s\n        root: root.ownerDocument\n      });\n    } catch (e) {\n      io = new IntersectionObserver(handleObserve, options);\n    }\n    io.observe(element);\n  }\n  refresh(true);\n  return cleanup;\n}\n\n/**\n * Automatically updates the position of the floating element when necessary.\n * Should only be called when the floating element is mounted on the DOM or\n * visible on the screen.\n * @returns cleanup function that should be invoked when the floating element is\n * removed from the DOM or hidden from the screen.\n * @see https://floating-ui.com/docs/autoUpdate\n */\nfunction autoUpdate(reference, floating, update, options) {\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    ancestorScroll = true,\n    ancestorResize = true,\n    elementResize = typeof ResizeObserver === 'function',\n    layoutShift = typeof IntersectionObserver === 'function',\n    animationFrame = false\n  } = options;\n  const referenceEl = unwrapElement(reference);\n  const ancestors = ancestorScroll || ancestorResize ? [...(referenceEl ? getOverflowAncestors(referenceEl) : []), ...getOverflowAncestors(floating)] : [];\n  ancestors.forEach(ancestor => {\n    ancestorScroll && ancestor.addEventListener('scroll', update, {\n      passive: true\n    });\n    ancestorResize && ancestor.addEventListener('resize', update);\n  });\n  const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update) : null;\n  let reobserveFrame = -1;\n  let resizeObserver = null;\n  if (elementResize) {\n    resizeObserver = new ResizeObserver(_ref => {\n      let [firstEntry] = _ref;\n      if (firstEntry && firstEntry.target === referenceEl && resizeObserver) {\n        // Prevent update loops when using the `size` middleware.\n        // https://github.com/floating-ui/floating-ui/issues/1740\n        resizeObserver.unobserve(floating);\n        cancelAnimationFrame(reobserveFrame);\n        reobserveFrame = requestAnimationFrame(() => {\n          resizeObserver && resizeObserver.observe(floating);\n        });\n      }\n      update();\n    });\n    if (referenceEl && !animationFrame) {\n      resizeObserver.observe(referenceEl);\n    }\n    resizeObserver.observe(floating);\n  }\n  let frameId;\n  let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;\n  if (animationFrame) {\n    frameLoop();\n  }\n  function frameLoop() {\n    const nextRefRect = getBoundingClientRect(reference);\n    if (prevRefRect && (nextRefRect.x !== prevRefRect.x || nextRefRect.y !== prevRefRect.y || nextRefRect.width !== prevRefRect.width || nextRefRect.height !== prevRefRect.height)) {\n      update();\n    }\n    prevRefRect = nextRefRect;\n    frameId = requestAnimationFrame(frameLoop);\n  }\n  update();\n  return () => {\n    ancestors.forEach(ancestor => {\n      ancestorScroll && ancestor.removeEventListener('scroll', update);\n      ancestorResize && ancestor.removeEventListener('resize', update);\n    });\n    cleanupIo && cleanupIo();\n    resizeObserver && resizeObserver.disconnect();\n    resizeObserver = null;\n    if (animationFrame) {\n      cancelAnimationFrame(frameId);\n    }\n  };\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a reference element when it is given a certain CSS positioning\n * strategy.\n */\nconst computePosition = (reference, floating, options) => {\n  // This caches the expensive `getClippingElementAncestors` function so that\n  // multiple lifecycle resets re-use the same result. It only lives for a\n  // single call. If other functions become expensive, we can add them as well.\n  const cache = new Map();\n  const mergedOptions = {\n    platform,\n    ...options\n  };\n  const platformWithCache = {\n    ...mergedOptions.platform,\n    _c: cache\n  };\n  return computePosition$1(reference, floating, {\n    ...mergedOptions,\n    platform: platformWithCache\n  });\n};\n\nexport { autoUpdate, computePosition, platform };\n", "import { useLayoutEffect } from 'react';\n\nvar index =  useLayoutEffect ;\n\nexport default index;\n", "var safeIsNaN = Number.isNaN ||\n    function ponyfill(value) {\n        return typeof value === 'number' && value !== value;\n    };\nfunction isEqual(first, second) {\n    if (first === second) {\n        return true;\n    }\n    if (safeIsNaN(first) && safeIsNaN(second)) {\n        return true;\n    }\n    return false;\n}\nfunction areInputsEqual(newInputs, lastInputs) {\n    if (newInputs.length !== lastInputs.length) {\n        return false;\n    }\n    for (var i = 0; i < newInputs.length; i++) {\n        if (!isEqual(newInputs[i], lastInputs[i])) {\n            return false;\n        }\n    }\n    return true;\n}\n\nfunction memoizeOne(resultFn, isEqual) {\n    if (isEqual === void 0) { isEqual = areInputsEqual; }\n    var cache = null;\n    function memoized() {\n        var newArgs = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            newArgs[_i] = arguments[_i];\n        }\n        if (cache && cache.lastThis === this && isEqual(newArgs, cache.lastArgs)) {\n            return cache.lastResult;\n        }\n        var lastResult = resultFn.apply(this, newArgs);\n        cache = {\n            lastResult: lastResult,\n            lastArgs: newArgs,\n            lastThis: this,\n        };\n        return lastResult;\n    }\n    memoized.clear = function clear() {\n        cache = null;\n    };\n    return memoized;\n}\n\nexport { memoizeOne as default };\n", "export function buildLoanProductConfigObject() {\n  var configObject = {\n    loan_product_id: \"\",\n    receivable_accounting_code_id: \"\",\n    interest_receivable_accounting_code_id: \"\",\n    default_amount: 5000.00,\n    maintaining_balances: [\n      {\n        account_type: \"SAVINGS\",\n        account_subtype: \"K-IMPOK\",\n        percentage: 0.0,\n        threshold: 0.00\n      }\n    ],\n    midas: {\n      contract_type: 22,\n      contract_phase: \"AC\",\n      transaction_type: \"NA\",\n      loan_purpose: \"ET\"\n    },\n    deductions: [\n      {\n        name: \"\",\n        accounting_code_id: \"\",\n        amount: 0.00,\n        deduction_type: \"\",\n        business_permit_available: false,\n        business_permit_amount: 0.00,\n        skip_for_special_loan_fund: false,\n        use_for_special_loan_fund: false,\n        advance_insurance_value: false,\n        meta: {\n          member_type: \"Regular\",\n          account_type: \"\",\n          account_subtype: \"\",\n          value: 0.00,\n          algo: \"\",\n          offset: 0,\n          membership_name: \"\",\n          term_map: {\n            weekly: [\n              {\n                num_installments: 15,\n                ratio: 0.0035\n              },\n              {\n                num_installments: 25,\n                ratio: 0.007\n              },\n              {\n                num_installments: 35,\n                ratio: 0.0105\n              },\n              {\n                num_installments: 50,\n                ratio: 0.0140\n              }\n            ],\n            monthly: [\n              {\n                num_installments: 3,\n                ratio: 0.0035\n              },\n              {\n                num_installments: 6,\n                ratio: 0.007\n              },\n              {\n                num_installments: 9,\n                ratio: 0.0105\n              },\n              {\n                num_installments: 12,\n                ratio: 0.0140\n              }\n            ],\n            semi_monthly: [\n              {\n                num_installments: 6,\n                ratio: 0.0035\n              },\n              {\n                num_installments: 12,\n                ratio: 0.007\n              },\n              {\n                num_installments: 18,\n                ratio: 0.0105\n              },\n              {\n                num_installments: 24,\n                ratio: 0.0140\n              }\n            ]\n          }\n        }\n      }\n    ]\n  }\n\n  return configObject;\n}\n\nexport function buildBillingTableData(o) {\n  var data  = [];\n\n  for(var i = 0; i < o.data.records.length; i++) {\n    // Loan products\n    data.push({\n    });\n\n    // Deposits\n\n    // Insurance\n\n    // Withdraw payments\n  }\n\n  return data;\n}\n\nexport function numberAsPercent(x) {\n  //x = ((Math.round(x * 100) / 100) * 100).toFixed(2);\n\n  return parseFloat(x * 100).toFixed(2) + \"%\";\n}\n\nexport function numberWithCommas(x) {\n  x = (Math.round(x * 100) / 100).toFixed(2);\n\n  if(x < 0) {\n    x = x * -1; \n    x = \"(\" + x.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\") + \")\";\n  } else {\n    x = x.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\n  }   \n\n  return x;\n}\n\nexport function getReligionOptions() {\n  var religions = [\n    \"Roman Catholic\", \n    \"Other Christian\", \n    \"Members Church of God International\", \n    \"Iglesia ni Cristo\", \n    \"Protestant\", \n    \"Jehovah's Witnesses\", \n    \"Seventh-day Adventist Church\", \n    \"Muslim\", \n    \"Aglipayan\", \n    \"Seventh Day Baptist Church\", \n    \"Church of God\", \n    \"Jesus Miracle Crusade International Ministry\", \n    \"Pentecostal Missionary Church of Christ\", \n    \"Assemblies of God\", \n    \"The Church of Jesus Christ of Latter-day Saints\", \n    \"Sta. Iglesia Rosa Mistica Inc.\", \n    \"United Pentecostal Church International\", \n    \"Evangelical\", \n    \"Most Holy Church of God in Jesus Christ\"\n  ]\n\n  var data = [];\n\n  for(var i = 0; i < religions.length; i++) {\n    data.push({\n      value: religions[i],\n      label: religions[i]\n    });\n  }\n\n  return data;\n}\n", "import { createElement, PureComponent, createContext, useId, useState, Fragment } from 'react';\n\nfunction ownKeys(object, enumerableOnly) {\n  var keys = Object.keys(object);\n\n  if (Object.getOwnPropertySymbols) {\n    var symbols = Object.getOwnPropertySymbols(object);\n    enumerableOnly && (symbols = symbols.filter(function (sym) {\n      return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n    })), keys.push.apply(keys, symbols);\n  }\n\n  return keys;\n}\n\nfunction _objectSpread2(target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = null != arguments[i] ? arguments[i] : {};\n    i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n      _defineProperty(target, key, source[key]);\n    }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n      Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n    });\n  }\n\n  return target;\n}\n\nfunction _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}\n\nfunction _defineProperties(target, props) {\n  for (var i = 0; i < props.length; i++) {\n    var descriptor = props[i];\n    descriptor.enumerable = descriptor.enumerable || false;\n    descriptor.configurable = true;\n    if (\"value\" in descriptor) descriptor.writable = true;\n    Object.defineProperty(target, descriptor.key, descriptor);\n  }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n  if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n  if (staticProps) _defineProperties(Constructor, staticProps);\n  Object.defineProperty(Constructor, \"prototype\", {\n    writable: false\n  });\n  return Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n}\n\nfunction _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n\n  return _extends.apply(this, arguments);\n}\n\nfunction _inherits(subClass, superClass) {\n  if (typeof superClass !== \"function\" && superClass !== null) {\n    throw new TypeError(\"Super expression must either be null or a function\");\n  }\n\n  subClass.prototype = Object.create(superClass && superClass.prototype, {\n    constructor: {\n      value: subClass,\n      writable: true,\n      configurable: true\n    }\n  });\n  Object.defineProperty(subClass, \"prototype\", {\n    writable: false\n  });\n  if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _getPrototypeOf(o) {\n  _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n    return o.__proto__ || Object.getPrototypeOf(o);\n  };\n  return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n  _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n\n  return _setPrototypeOf(o, p);\n}\n\nfunction _isNativeReflectConstruct() {\n  if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n  if (Reflect.construct.sham) return false;\n  if (typeof Proxy === \"function\") return true;\n\n  try {\n    Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n    return true;\n  } catch (e) {\n    return false;\n  }\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n\n  return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n  if (source == null) return {};\n\n  var target = _objectWithoutPropertiesLoose(source, excluded);\n\n  var key, i;\n\n  if (Object.getOwnPropertySymbols) {\n    var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n    for (i = 0; i < sourceSymbolKeys.length; i++) {\n      key = sourceSymbolKeys[i];\n      if (excluded.indexOf(key) >= 0) continue;\n      if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n      target[key] = source[key];\n    }\n  }\n\n  return target;\n}\n\nfunction _assertThisInitialized(self) {\n  if (self === void 0) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return self;\n}\n\nfunction _possibleConstructorReturn(self, call) {\n  if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n    return call;\n  } else if (call !== void 0) {\n    throw new TypeError(\"Derived constructors may only return object or undefined\");\n  }\n\n  return _assertThisInitialized(self);\n}\n\nfunction _createSuper(Derived) {\n  var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n  return function _createSuperInternal() {\n    var Super = _getPrototypeOf(Derived),\n        result;\n\n    if (hasNativeReflectConstruct) {\n      var NewTarget = _getPrototypeOf(this).constructor;\n\n      result = Reflect.construct(Super, arguments, NewTarget);\n    } else {\n      result = Super.apply(this, arguments);\n    }\n\n    return _possibleConstructorReturn(this, result);\n  };\n}\n\nfunction _slicedToArray(arr, i) {\n  return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n\nfunction _toConsumableArray(arr) {\n  return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n  if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _arrayWithHoles(arr) {\n  if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArray(iter) {\n  if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n  var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n  if (_i == null) return;\n  var _arr = [];\n  var _n = true;\n  var _d = false;\n\n  var _s, _e;\n\n  try {\n    for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n      _arr.push(_s.value);\n\n      if (i && _arr.length === i) break;\n    }\n  } catch (err) {\n    _d = true;\n    _e = err;\n  } finally {\n    try {\n      if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n    } finally {\n      if (_d) throw _e;\n    }\n  }\n\n  return _arr;\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n  if (!o) return;\n  if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n  var n = Object.prototype.toString.call(o).slice(8, -1);\n  if (n === \"Object\" && o.constructor) n = o.constructor.name;\n  if (n === \"Map\" || n === \"Set\") return Array.from(o);\n  if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n  if (len == null || len > arr.length) len = arr.length;\n\n  for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n  return arr2;\n}\n\nfunction _nonIterableSpread() {\n  throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nfunction _nonIterableRest() {\n  throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nvar AccordionStore = /*#__PURE__*/_createClass(function AccordionStore(_ref) {\n  var _this = this;\n\n  var _ref$expanded = _ref.expanded,\n      _expanded = _ref$expanded === void 0 ? [] : _ref$expanded,\n      _ref$allowMultipleExp = _ref.allowMultipleExpanded,\n      allowMultipleExpanded = _ref$allowMultipleExp === void 0 ? false : _ref$allowMultipleExp,\n      _ref$allowZeroExpande = _ref.allowZeroExpanded,\n      allowZeroExpanded = _ref$allowZeroExpande === void 0 ? false : _ref$allowZeroExpande;\n\n  _classCallCheck(this, AccordionStore);\n\n  _defineProperty(this, \"expanded\", void 0);\n\n  _defineProperty(this, \"allowMultipleExpanded\", void 0);\n\n  _defineProperty(this, \"allowZeroExpanded\", void 0);\n\n  _defineProperty(this, \"toggleExpanded\", function (uuid) {\n    if (_this.isItemDisabled(uuid)) {\n      return _this;\n    }\n\n    var isExpanded = _this.isItemExpanded(uuid);\n\n    if (!isExpanded) {\n      return _this.augment({\n        expanded: _this.allowMultipleExpanded ? [].concat(_toConsumableArray(_this.expanded), [uuid]) : [uuid]\n      });\n    } else {\n      return _this.augment({\n        expanded: _this.expanded.filter(function (expandedUuid) {\n          return expandedUuid !== uuid;\n        })\n      });\n    }\n  });\n\n  _defineProperty(this, \"isItemDisabled\", function (uuid) {\n    var isExpanded = _this.isItemExpanded(uuid);\n\n    var isOnlyOneExpanded = _this.expanded.length === 1;\n    return Boolean(isExpanded && !_this.allowZeroExpanded && isOnlyOneExpanded);\n  });\n\n  _defineProperty(this, \"isItemExpanded\", function (uuid) {\n    return _this.expanded.indexOf(uuid) !== -1;\n  });\n\n  _defineProperty(this, \"getPanelAttributes\", function (uuid, dangerouslySetExpanded) {\n    var expanded = dangerouslySetExpanded !== null && dangerouslySetExpanded !== void 0 ? dangerouslySetExpanded : _this.isItemExpanded(uuid);\n    return {\n      role: _this.allowMultipleExpanded ? undefined : 'region',\n      'aria-hidden': _this.allowMultipleExpanded ? !expanded : undefined,\n      'aria-labelledby': _this.getButtonId(uuid),\n      id: _this.getPanelId(uuid),\n      hidden: expanded ? undefined : true\n    };\n  });\n\n  _defineProperty(this, \"getHeadingAttributes\", function () {\n    return {\n      role: 'heading'\n    };\n  });\n\n  _defineProperty(this, \"getButtonAttributes\", function (uuid, dangerouslySetExpanded) {\n    var expanded = dangerouslySetExpanded !== null && dangerouslySetExpanded !== void 0 ? dangerouslySetExpanded : _this.isItemExpanded(uuid);\n\n    var disabled = _this.isItemDisabled(uuid);\n\n    return {\n      id: _this.getButtonId(uuid),\n      'aria-disabled': disabled,\n      'aria-expanded': expanded,\n      'aria-controls': _this.getPanelId(uuid),\n      role: 'button',\n      tabIndex: 0\n    };\n  });\n\n  _defineProperty(this, \"getPanelId\", function (id) {\n    return \"accordion__panel-\".concat(id);\n  });\n\n  _defineProperty(this, \"getButtonId\", function (id) {\n    return \"accordion__heading-\".concat(id);\n  });\n\n  _defineProperty(this, \"augment\", function (args) {\n    return new AccordionStore(_objectSpread2({\n      expanded: _this.expanded,\n      allowMultipleExpanded: _this.allowMultipleExpanded,\n      allowZeroExpanded: _this.allowZeroExpanded\n    }, args));\n  });\n\n  this.expanded = _expanded;\n  this.allowMultipleExpanded = allowMultipleExpanded;\n  this.allowZeroExpanded = allowZeroExpanded;\n});\n\nvar Context = /*#__PURE__*/createContext(null);\nvar Provider = /*#__PURE__*/function (_React$PureComponent) {\n  _inherits(Provider, _React$PureComponent);\n\n  var _super = _createSuper(Provider);\n\n  function Provider() {\n    var _this;\n\n    _classCallCheck(this, Provider);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _super.call.apply(_super, [this].concat(args));\n\n    _defineProperty(_assertThisInitialized(_this), \"state\", new AccordionStore({\n      expanded: _this.props.preExpanded,\n      allowMultipleExpanded: _this.props.allowMultipleExpanded,\n      allowZeroExpanded: _this.props.allowZeroExpanded\n    }));\n\n    _defineProperty(_assertThisInitialized(_this), \"toggleExpanded\", function (key) {\n      _this.setState(function (state) {\n        return state.toggleExpanded(key);\n      }, function () {\n        if (_this.props.onChange) {\n          _this.props.onChange(_this.state.expanded);\n        }\n      });\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"isItemDisabled\", function (key) {\n      return _this.state.isItemDisabled(key);\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"isItemExpanded\", function (key) {\n      return _this.state.isItemExpanded(key);\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"getPanelAttributes\", function (key, dangerouslySetExpanded) {\n      return _this.state.getPanelAttributes(key, dangerouslySetExpanded);\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"getHeadingAttributes\", function () {\n      // uuid: UUID\n      return _this.state.getHeadingAttributes();\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"getButtonAttributes\", function (key, dangerouslySetExpanded) {\n      return _this.state.getButtonAttributes(key, dangerouslySetExpanded);\n    });\n\n    return _this;\n  }\n\n  _createClass(Provider, [{\n    key: \"render\",\n    value: function render() {\n      var _this$state = this.state,\n          allowZeroExpanded = _this$state.allowZeroExpanded,\n          allowMultipleExpanded = _this$state.allowMultipleExpanded;\n      return /*#__PURE__*/createElement(Context.Provider, {\n        value: {\n          allowMultipleExpanded: allowMultipleExpanded,\n          allowZeroExpanded: allowZeroExpanded,\n          toggleExpanded: this.toggleExpanded,\n          isItemDisabled: this.isItemDisabled,\n          isItemExpanded: this.isItemExpanded,\n          getPanelAttributes: this.getPanelAttributes,\n          getHeadingAttributes: this.getHeadingAttributes,\n          getButtonAttributes: this.getButtonAttributes\n        }\n      }, this.props.children || null);\n    }\n  }]);\n\n  return Provider;\n}(PureComponent);\n\n_defineProperty(Provider, \"defaultProps\", {\n  allowMultipleExpanded: false,\n  allowZeroExpanded: false\n});\n\nvar Consumer = /*#__PURE__*/function (_React$PureComponent2) {\n  _inherits(Consumer, _React$PureComponent2);\n\n  var _super2 = _createSuper(Consumer);\n\n  function Consumer() {\n    var _this2;\n\n    _classCallCheck(this, Consumer);\n\n    for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      args[_key2] = arguments[_key2];\n    }\n\n    _this2 = _super2.call.apply(_super2, [this].concat(args));\n\n    _defineProperty(_assertThisInitialized(_this2), \"renderChildren\", function (container) {\n      return container ? _this2.props.children(container) : null;\n    });\n\n    return _this2;\n  }\n\n  _createClass(Consumer, [{\n    key: \"render\",\n    value: function render() {\n      return /*#__PURE__*/createElement(Context.Consumer, null, this.renderChildren);\n    }\n  }]);\n\n  return Consumer;\n}(PureComponent);\n\nvar _excluded = [\"className\", \"allowMultipleExpanded\", \"allowZeroExpanded\", \"onChange\", \"preExpanded\"];\n\nvar Accordion = function Accordion(_ref) {\n  var _ref$className = _ref.className,\n      className = _ref$className === void 0 ? 'accordion' : _ref$className,\n      allowMultipleExpanded = _ref.allowMultipleExpanded,\n      allowZeroExpanded = _ref.allowZeroExpanded,\n      onChange = _ref.onChange,\n      preExpanded = _ref.preExpanded,\n      rest = _objectWithoutProperties(_ref, _excluded);\n\n  return /*#__PURE__*/createElement(Provider, {\n    preExpanded: preExpanded,\n    allowMultipleExpanded: allowMultipleExpanded,\n    allowZeroExpanded: allowZeroExpanded,\n    onChange: onChange\n  }, /*#__PURE__*/createElement(\"div\", _extends({\n    \"data-accordion-component\": \"Accordion\",\n    className: className\n  }, rest)));\n};\n\nvar DisplayName;\n\n(function (DisplayName) {\n  DisplayName[\"Accordion\"] = \"Accordion\";\n  DisplayName[\"AccordionItem\"] = \"AccordionItem\";\n  DisplayName[\"AccordionItemButton\"] = \"AccordionItemButton\";\n  DisplayName[\"AccordionItemHeading\"] = \"AccordionItemHeading\";\n  DisplayName[\"AccordionItemPanel\"] = \"AccordionItemPanel\";\n})(DisplayName || (DisplayName = {}));\n\nvar DisplayName$1 = DisplayName;\n\n// @ts-ignore\nvar DEFAULT = 0;\nvar counter = 0;\nfunction useGlobalCounterId() {\n  var current = counter;\n  counter = counter + 1;\n  return \"raa-\".concat(current);\n}\nfunction resetGlobalCounterId() {\n  counter = DEFAULT;\n}\nvar useNextId = useId || useGlobalCounterId; // HTML5 ids allow all unicode characters, except for ASCII whitespaces\n// https://infra.spec.whatwg.org/#ascii-whitespace\n// eslint-disable-next-line no-control-regex\n\nvar idRegex = /[\\u0009\\u000a\\u000c\\u000d\\u0020]/g;\nfunction assertValidHtmlId(htmlId) {\n  if (htmlId === '' || idRegex.test(htmlId)) {\n    console.error(\"uuid must be a valid HTML5 id but was given \\\"\".concat(htmlId, \"\\\", ASCII whitespaces are forbidden\"));\n    return false;\n  }\n\n  return true;\n}\n\nvar Context$1 = /*#__PURE__*/createContext(null);\n\nvar Provider$1 = function Provider(_ref) {\n  var children = _ref.children,\n      uuid = _ref.uuid,\n      accordionContext = _ref.accordionContext,\n      dangerouslySetExpanded = _ref.dangerouslySetExpanded;\n\n  var toggleExpanded = function toggleExpanded() {\n    accordionContext.toggleExpanded(uuid);\n  };\n\n  var renderChildren = function renderChildren(accordionContext) {\n    var expanded = dangerouslySetExpanded !== null && dangerouslySetExpanded !== void 0 ? dangerouslySetExpanded : accordionContext.isItemExpanded(uuid);\n    var disabled = accordionContext.isItemDisabled(uuid);\n    var panelAttributes = accordionContext.getPanelAttributes(uuid, dangerouslySetExpanded);\n    var headingAttributes = accordionContext.getHeadingAttributes(uuid);\n    var buttonAttributes = accordionContext.getButtonAttributes(uuid, dangerouslySetExpanded);\n    return /*#__PURE__*/createElement(Context$1.Provider, {\n      value: {\n        uuid: uuid,\n        expanded: expanded,\n        disabled: disabled,\n        toggleExpanded: toggleExpanded,\n        panelAttributes: panelAttributes,\n        headingAttributes: headingAttributes,\n        buttonAttributes: buttonAttributes\n      }\n    }, children);\n  };\n\n  return /*#__PURE__*/createElement(Consumer, null, renderChildren);\n};\n\nvar ProviderWrapper = function ProviderWrapper(props) {\n  return /*#__PURE__*/createElement(Consumer, null, function (accordionContext) {\n    return /*#__PURE__*/createElement(Provider$1, _extends({}, props, {\n      accordionContext: accordionContext\n    }));\n  });\n};\nvar Consumer$1 = function Consumer(_ref2) {\n  var children = _ref2.children;\n\n  var renderChildren = function renderChildren(container) {\n    return container ? children(container) : null;\n  };\n\n  return /*#__PURE__*/createElement(Context$1.Consumer, null, renderChildren);\n};\n\nvar _excluded$1 = [\"uuid\", \"dangerouslySetExpanded\", \"className\", \"activeClassName\"];\n\nvar AccordionItem = function AccordionItem(_ref) {\n  var customUuid = _ref.uuid,\n      dangerouslySetExpanded = _ref.dangerouslySetExpanded,\n      _ref$className = _ref.className,\n      className = _ref$className === void 0 ? 'accordion__item' : _ref$className,\n      activeClassName = _ref.activeClassName,\n      rest = _objectWithoutProperties(_ref, _excluded$1);\n\n  var _useState = useState(useNextId()),\n      _useState2 = _slicedToArray(_useState, 1),\n      instanceUuid = _useState2[0];\n\n  var uuid = customUuid !== null && customUuid !== void 0 ? customUuid : instanceUuid;\n\n  var renderChildren = function renderChildren(itemContext) {\n    var expanded = itemContext.expanded;\n    var cx = expanded && activeClassName ? activeClassName : className;\n    return /*#__PURE__*/createElement(\"div\", _extends({\n      \"data-accordion-component\": \"AccordionItem\",\n      className: cx\n    }, rest));\n  };\n\n  assertValidHtmlId(uuid.toString());\n\n  if (rest.id) {\n    assertValidHtmlId(rest.id);\n  }\n\n  return /*#__PURE__*/createElement(ProviderWrapper, {\n    uuid: uuid,\n    dangerouslySetExpanded: dangerouslySetExpanded\n  }, /*#__PURE__*/createElement(Consumer$1, null, renderChildren));\n};\n\nAccordionItem.displayName = DisplayName$1.AccordionItem;\n\nfunction getClosestAccordion(el) {\n  return el && (el.matches('[data-accordion-component=\"Accordion\"]') ? el : getClosestAccordion(el.parentElement));\n}\nfunction getSiblingButtons(item) {\n  var parentAccordion = getClosestAccordion(item);\n  return parentAccordion && Array.from(parentAccordion.querySelectorAll('[data-accordion-component=\"AccordionItemButton\"]'));\n}\nfunction focusFirstSiblingOf(item) {\n  var siblings = getSiblingButtons(item) || [];\n  var first = siblings[0];\n\n  if (first) {\n    first.focus();\n  }\n}\nfunction focusLastSiblingOf(item) {\n  var siblings = getSiblingButtons(item) || [];\n  var last = siblings[siblings.length - 1];\n\n  if (last) {\n    last.focus();\n  }\n}\nfunction focusNextSiblingOf(item) {\n  var siblings = getSiblingButtons(item) || [];\n  var currentIndex = siblings.indexOf(item);\n\n  if (currentIndex !== -1) {\n    var next = siblings[currentIndex + 1];\n\n    if (next) {\n      next.focus();\n    }\n  }\n}\nfunction focusPreviousSiblingOf(item) {\n  var siblings = getSiblingButtons(item) || [];\n  var currentIndex = siblings.indexOf(item);\n\n  if (currentIndex !== -1) {\n    var previous = siblings[currentIndex - 1];\n\n    if (previous) {\n      previous.focus();\n    }\n  }\n}\n\nvar keycodes = {\n  END: 'End',\n  ENTER: 'Enter',\n  HOME: 'Home',\n  SPACE: ' ',\n  SPACE_DEPRECATED: 'Spacebar',\n  UP: 'ArrowUp',\n  DOWN: 'ArrowDown',\n  LEFT: 'ArrowLeft',\n  RIGHT: 'ArrowRight'\n};\n\nvar _excluded$2 = [\"toggleExpanded\", \"className\"];\n\nvar AccordionItemButton = function AccordionItemButton(_ref) {\n  var toggleExpanded = _ref.toggleExpanded,\n      _ref$className = _ref.className,\n      className = _ref$className === void 0 ? 'accordion__button' : _ref$className,\n      rest = _objectWithoutProperties(_ref, _excluded$2);\n\n  var handleKeyPress = function handleKeyPress(evt) {\n    var keyCode = evt.key;\n\n    if (keyCode === keycodes.ENTER || keyCode === keycodes.SPACE || keyCode === keycodes.SPACE_DEPRECATED) {\n      evt.preventDefault();\n      toggleExpanded();\n    }\n    /* The following block is ignored from test coverage because at time\n     * time of writing Jest/react-testing-library can not assert 'focus'\n     * functionality.\n     */\n    // istanbul ignore next\n\n\n    if (evt.target instanceof HTMLElement) {\n      switch (keyCode) {\n        case keycodes.HOME:\n          {\n            evt.preventDefault();\n            focusFirstSiblingOf(evt.target);\n            break;\n          }\n\n        case keycodes.END:\n          {\n            evt.preventDefault();\n            focusLastSiblingOf(evt.target);\n            break;\n          }\n\n        case keycodes.LEFT:\n        case keycodes.UP:\n          {\n            evt.preventDefault();\n            focusPreviousSiblingOf(evt.target);\n            break;\n          }\n\n        case keycodes.RIGHT:\n        case keycodes.DOWN:\n          {\n            evt.preventDefault();\n            focusNextSiblingOf(evt.target);\n            break;\n          }\n      }\n    }\n  };\n\n  if (rest.id) {\n    assertValidHtmlId(rest.id);\n  }\n\n  return /*#__PURE__*/createElement(\"div\", _extends({\n    className: className\n  }, rest, {\n    role: \"button\",\n    tabIndex: 0,\n    onClick: toggleExpanded,\n    onKeyDown: handleKeyPress,\n    \"data-accordion-component\": \"AccordionItemButton\"\n  }));\n};\n\nvar AccordionItemButtonWrapper = function AccordionItemButtonWrapper(props) {\n  return /*#__PURE__*/createElement(Consumer$1, null, function (itemContext) {\n    var toggleExpanded = itemContext.toggleExpanded,\n        buttonAttributes = itemContext.buttonAttributes;\n    return /*#__PURE__*/createElement(AccordionItemButton, _extends({\n      toggleExpanded: toggleExpanded\n    }, props, buttonAttributes));\n  });\n};\n\nvar defaultProps = {\n  className: 'accordion__heading',\n  'aria-level': 3\n};\nvar SPEC_ERROR = \"AccordionItemButton may contain only one child element, which must be an instance of AccordionItemButton.\\n\\nFrom the WAI-ARIA spec (https://www.w3.org/TR/wai-aria-practices-1.1/#accordion):\\n\\n\\u201CThe button element is the only element inside the heading element. That is, if there are other visually persistent elements, they are not included inside the heading element.\\u201D\\n\\n\";\nvar AccordionItemHeading = /*#__PURE__*/function (_React$PureComponent) {\n  _inherits(AccordionItemHeading, _React$PureComponent);\n\n  var _super = _createSuper(AccordionItemHeading);\n\n  function AccordionItemHeading() {\n    var _this;\n\n    _classCallCheck(this, AccordionItemHeading);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _super.call.apply(_super, [this].concat(args));\n\n    _defineProperty(_assertThisInitialized(_this), \"ref\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"setRef\", function (ref) {\n      _this.ref = ref;\n    });\n\n    return _this;\n  }\n\n  _createClass(AccordionItemHeading, [{\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate() {\n      AccordionItemHeading.VALIDATE(this.ref);\n    }\n  }, {\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      AccordionItemHeading.VALIDATE(this.ref);\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      return /*#__PURE__*/createElement(\"div\", _extends({\n        \"data-accordion-component\": \"AccordionItemHeading\"\n      }, this.props, {\n        ref: this.setRef\n      }));\n    }\n  }], [{\n    key: \"VALIDATE\",\n    value: function VALIDATE(ref) {\n      if (ref === undefined) {\n        throw new Error('ref is undefined');\n      }\n\n      if (!(ref.childElementCount === 1 && ref.firstElementChild && ref.firstElementChild.getAttribute('data-accordion-component') === 'AccordionItemButton')) {\n        throw new Error(SPEC_ERROR);\n      }\n    }\n  }]);\n\n  return AccordionItemHeading;\n}(PureComponent);\n\n_defineProperty(AccordionItemHeading, \"defaultProps\", defaultProps);\n\nvar AccordionItemHeadingWrapper = function AccordionItemHeadingWrapper(props) {\n  return /*#__PURE__*/createElement(Consumer$1, null, function (itemContext) {\n    var headingAttributes = itemContext.headingAttributes;\n\n    if (props.id) {\n      assertValidHtmlId(props.id);\n    }\n\n    return /*#__PURE__*/createElement(AccordionItemHeading, _extends({}, props, headingAttributes));\n  });\n};\n\nAccordionItemHeadingWrapper.displayName = DisplayName$1.AccordionItemHeading;\n\nvar _excluded$3 = [\"className\", \"region\", \"id\"];\n\nvar AccordionItemPanel = function AccordionItemPanel(_ref) {\n  var _ref$className = _ref.className,\n      className = _ref$className === void 0 ? 'accordion__panel' : _ref$className,\n      region = _ref.region,\n      id = _ref.id,\n      rest = _objectWithoutProperties(_ref, _excluded$3);\n\n  var renderChildren = function renderChildren(_ref2) {\n    var panelAttributes = _ref2.panelAttributes;\n\n    if (id) {\n      assertValidHtmlId(id);\n    }\n\n    var attrs = _objectSpread2(_objectSpread2({}, panelAttributes), {}, {\n      'aria-labelledby': region ? panelAttributes['aria-labelledby'] : undefined\n    });\n\n    return /*#__PURE__*/createElement(\"div\", _extends({\n      \"data-accordion-component\": \"AccordionItemPanel\",\n      className: className\n    }, rest, attrs, {\n      role: region ? 'region' : undefined\n    }));\n  };\n\n  return /*#__PURE__*/createElement(Consumer$1, null, renderChildren);\n};\n\nvar AccordionItemState = function AccordionItemState(_ref) {\n  var children = _ref.children;\n\n  var renderChildren = function renderChildren(itemContext) {\n    var expanded = itemContext.expanded,\n        disabled = itemContext.disabled;\n    return /*#__PURE__*/createElement(Fragment, null, children({\n      expanded: expanded,\n      disabled: disabled\n    }));\n  };\n\n  return /*#__PURE__*/createElement(Consumer$1, null, renderChildren);\n};\n\nexport { Accordion, AccordionItem, AccordionItemButtonWrapper as AccordionItemButton, AccordionItemHeadingWrapper as AccordionItemHeading, AccordionItemPanel, AccordionItemState, resetGlobalCounterId as resetNextUuid };\n", "import React from 'react';\nimport $ from 'jquery';\nimport Select from 'react-select';\nimport Modal from 'react-modal';\n\nimport SkCubeLoading from '../SkCubeLoading';\nimport {numberAsPercent, numberWithCommas} from '../utils/helpers';\n\nconst customStyles = {\n  content : {\n    top                   : '50%',\n    left                  : '50%',\n    right                 : 'auto',\n    bottom                : 'auto',\n    marginRight           : '-50%',\n    transform             : 'translate(-50%, -50%)',\n    height                : '50%',\n    overlfow              : 'scroll'\n  }\n};\n\n//Modal.setAppElement('#dashboard-content');\n\nexport default class DashboardMII extends React.Component {\n  constructor(props) {\n    super(props);\n\n    this.state  = {\n      currentBranch: {\n        id: \"\",\n        name: \"\"\n      },\n      branches: [],\n      data: {\n      },\n      currentMemberList: [],\n      isLoading: true,\n      modalCycleCountSummaryIsOpen: false\n    }\n  }\n\n  componentDidMount() {\n    var context = this;\n    $.ajax({\n      url: '/api/v1/dashboard_mii',\n      success: function(response) {\n        var currentBranch = {\n          id: \"\",\n          name: \"\",\n          centers: []\n        };\n\n        if(response.branches.length > 0) {\n          currentBranch = response.branches[0]; \n        }\n\n        context.setState({\n          branches: response.branches,\n          currentBranch: currentBranch,\n          data: {\n            member_counts: response.member_counts\n          },\n          isLoading: false\n        });\n      },\n      error: function(response) {\n        console.log(response);\n        alert(\"Error in fetching branches!\");\n      }\n    });\n  }\n\n  handleBranchChanged(o) {\n    var currentBranch = this.state.currentBranch;\n\n    for(var i = 0; i < this.state.branches.length; i++) {\n      if(this.state.branches[i].id == o.value) {\n        currentBranch = this.state.branches[i];\n      }\n    }\n\n    this.setState({\n      currentBranch: currentBranch\n    });\n  }\n\n  handleSyncClicked() {\n    var context       = this;\n    var currentBranch = this.state.currentBranch;\n\n    context.setState({\n      isLoading: true\n    });\n\n    $.ajax({\n      url: '/api/v1/dashboard_mii',\n      method: 'GET',\n      data: {\n        branch_id: currentBranch.id\n      },\n      success: function(response) {\n        context.setState({\n          data: {\n            member_counts: response.member_counts\n          },\n          isLoading: false\n        });\n      },\n      error: function(response) {\n        console.log(response);\n        alert(\"Error in fetching data!\");\n      }\n    });\n  }\n\n  renderControls() {\n    var state = this.state;\n\n    var branch  = {\n      value: state.currentBranch.id,\n      label: state.currentBranch.name\n    };\n\n    var branchOptions = []\n\n    for(var i = 0; i < this.state.branches.length; i++) {\n      branchOptions.push({\n        value: this.state.branches[i].id,\n        label: this.state.branches[i].name\n      });\n    }\n\n    return  (\n      <div className=\"row\">\n        <div className=\"col-md-10\">\n          <div className=\"form-group\">\n            <label>\n              Branch\n            </label>\n            <Select\n              options={branchOptions}\n              onChange={this.handleBranchChanged.bind(this)}\n              value={branch}\n              disabled={this.state.isLoading}\n            />\n          </div>\n        </div>\n        <div className=\"col-md-2\">\n          <div className=\"form-group\">\n            <label>\n              Actions\n            </label>\n            <br/>\n            <button\n              className=\"btn btn-primary btn-block\"\n              onClick={this.handleSyncClicked.bind(this)}\n              disabled={this.state.isLoading}\n            >\n              <span className=\"fa fa-sync\"/>\n              Sync\n            </button>\n          </div>\n        </div>\n      </div>\n    );\n  }\n\n  renderMemberTypeCounts(memberTypeCounts) {\n    return (\n      <div className=\"row\">\n        {\n          memberTypeCounts.map((o) => (\n              <div className='col' key={\"mem-type-\" + o.member_type}>\n                <label>{o.member_type}:&nbsp;</label>\n                <span className=\"text-muted\">\n                  {o.count}\n                </span>\n              </div>\n            )\n          )\n        }\n      </div>\n    );\n  }\n\n  renderMemberCounts() {\n    var o = this.state.data.member_counts;\n\n    if(this.state.isLoading) {\n      return  (\n        <SkCubeLoading/>\n      );\n    } else if(!o) {\n      return  (\n        <p>\n          No data found for member counts MII.\n        </p>\n      );\n    } else {\n      return  (\n        <div>\n          <h5>\n            <a href={\"/data_stores/member_counts/\" + o.id} target='_blank'>\n              Member Counts as of {o.meta.as_of}\n            </a>\n          </h5>\n          {this.renderMemberTypeCounts(o.data.member_type_counts)}\n          <table className=\"table table-bordered table-sm table-hover\">\n            <thead>\n              <tr style={{backgroundColor: \"#797979\", color: \"#fff\"}}>\n                <th>\n                </th>\n                <th className=\"text-center\">\n                  Male\n                </th>\n                <th className=\"text-center\">\n                  Female\n                </th>\n                <th className=\"text-center\">\n                  Others\n                </th>\n                <th className=\"text-center\">\n                  TOTAL\n                </th>\n              </tr>\n            </thead>\n            <tbody>\n              <tr>\n                <th>\n                  Active Members\n                </th>\n                <td className=\"text-center\">\n                  {o.data.counts.active_members.male}\n                </td>\n                <td className=\"text-center\">\n                  {o.data.counts.active_members.female}\n                </td>\n                <td className=\"text-center\">\n                  {o.data.counts.active_members.others}\n                </td>\n                <td className=\"text-center\">\n                  {o.data.counts.active_members.total}\n                </td>\n              </tr>\n              <tr>\n                <th>\n                  GRAND TOTAL\n                </th>\n                <th className=\"text-center\">\n                  {o.data.counts.active_members.male}\n                </th>\n                <th className=\"text-center\">\n                  {o.data.counts.active_members.female}\n                </th>\n                <th className=\"text-center\">\n                  {o.data.counts.active_members.others}\n                </th>\n                <th className=\"text-center\">\n                  {o.data.counts.active_members.total}\n                </th>\n              </tr>\n            </tbody>\n          </table>\n        </div>\n      );\n    }\n  }\n\n  render() {\n    return  (\n      <div>\n        {this.renderControls()} \n        {this.renderMemberCounts()}\n      </div>\n    );\n  }\n}\n\n", "import React from 'react';\nimport $ from 'jquery';\n\nimport SkCubeLoading from '../SkCubeLoading';\nimport {numberAsPercent, numberWithCommas} from '../utils/helpers';\n\nimport ManagementOverviewMii from './ManagementOverviewMii';\n\nexport default class DashboardManagementMii extends React.Component {\n  constructor(props) {\n    super(props);\n\n    this.state  = {\n    }\n  }\n\n  componentDidMount() {\n    var context = this;\n  }\n\n  render() {\n    return (\n      <div>\n        <ManagementOverviewMii\n        />\n      </div>\n    );\n  }\n}\n", "import React from 'react';\nimport $ from 'jquery';\n\nimport SkCubeLoading from '../SkCubeLoading';\nimport {numberAsPercent, numberWithCommas} from '../utils/helpers';\n\nexport default class ManagementOverviewMii extends React.Component {\n  constructor(props) {\n    super(props);\n\n    this.state  = {\n      isLoading: true,\n      isFetching: false,\n      data: false,\n      asOf: \"\",\n    }\n  }\n\n  componentDidMount() {\n    this.fetch();\n  }\n\n  fetch() {\n    var context = this;\n\n    $.ajax({\n      method: 'GET',\n      url: '/api/v1/dashboard_mii/overview_mii',\n      data: {\n        as_of: context.state.asOf\n      },\n      success: function(response) {\n        console.log(response);\n\n        context.setState({\n          isLoading: false,\n          isFetching: false,\n          data: response\n        });\n      },\n      error: function(response) {\n        console.log(response);\n        alert(\"Error in fetching overview mii data\");\n      }\n    });\n  }\n\n  handleSyncClicked() {\n    this.setState({\n      isFetching: true\n    });\n\n    this.fetch();\n  }\n\n  handleAsOfChanged(event) {\n    this.setState({\n      asOf: event.target.value\n    });\n  }\n\n  renderOverviewTable() {\n    var areas   = this.state.data.areas;\n    var areas_kcoop   = this.state.data.areas_kcoop;\n    var rows    = [];\n    var colSpan = 13;\n\n    var areaColor     = \"#bad5fd\";\n    var clusterColor  = \"#c5ffc1\";\n    var branchColor   = \"#797979\";\n\n    var tTotalLife        = 0.00;\n    var tTotalRf          = 0.00;\n    var tTotalLifeRf      = 0.00;\n    var tActiveMembers    = 0;\n    var tInforceMembers   = 0;\n    var tLapsedMembers    = 0;\n    var tPendingMembers   = 0;\n    var tDormantMembers   = 0;\n    var tResignedActiveMembers = 0;\n\n    for(var i = 0; i < areas.length; i++) {\n      rows.push(\n        <tr key={\"area-\" + areas[i].id} style={{backgroundColor: areaColor}}>\n          <th className=\"text-center\" colSpan={colSpan}>\n            {areas[i].name}\n          </th>\n        </tr>\n      );\n     \n      var clusters    = areas[i].clusters;\n\n      var aTotalLife        = 0.00;\n      var aTotalRf          = 0.00;\n      var aTotalLifeRf      = 0.00;\n      var aActiveMembers    = 0;\n      var aInforceMembers   = 0;\n      var aLapsedMembers    = 0;\n      var aPendingMembers   = 0;\n      var aDormantMembers   = 0;\n      var aResignedActiveMembers = 0;\n\n      for(var j = 0; j < clusters.length; j++) {\n        rows.push(\n          <tr key={\"cluster-\" + clusters[j].id} style={{backgroundColor: clusterColor}}>\n            <th className=\"text-center\" colSpan={colSpan}>\n              {clusters[j].name}\n            </th>\n          </tr>\n        );\n\n        var branches  = clusters[j].branches;\n\n        var cTotalLife        = 0.00;\n        var cTotalRf          = 0.00;\n        var cTotalLifeRf      = 0.00;\n        var cActiveMembers    = 0;\n        var cInforceMembers   = 0;\n        var cLapsedMembers    = 0;\n        var cPendingMembers   = 0;\n        var cDormantMembers   = 0;\n        var cResignedActiveMembers = 0;\n\n        for(var k = 0; k < branches.length; k++) {\n          if(k == 0) {\n            rows.push(\n              <tr key={\"header-\" + branches[k].id} style={{backgroundColor: branchColor, color: \"white\"}}>\n                <th>\n                  Branch Name\n                </th>\n                <th className=\"text-center\">\n                  Inforce\n                </th>\n                <th className=\"text-center\">\n                  Lapsed\n                </th>\n                <th className=\"text-center\">\n                  Pending\n                </th>\n                <th className=\"text-center\">\n                  Dormant\n                </th>\n                <th className=\"text-center\">\n                  Resigned Active\n                </th>\n                <th className=\"text-center\">\n                  Active Members\n                </th>\n                <th>\n                  As Of (Member Count)\n                </th>\n                <th className=\"text-center\">\n                  LIFE\n                </th>\n                <th className=\"text-center\">\n                  RF\n                </th>\n                <th>\n                  As Of (Personal Fund)\n                </th>\n              </tr>\n            );\n          }\n\n          cTotalLife        += branches[k].data.total_life\n          cTotalRf          += branches[k].data.total_rf\n          cActiveMembers    += branches[k].data.active_members.total;\n          cInforceMembers   += branches[k].data.inforce_members.total;\n          cLapsedMembers    += branches[k].data.lapsed_members.total;\n          cPendingMembers   += branches[k].data.pending_members.total;\n          cDormantMembers   += branches[k].data.dormant_members.total;\n          cResignedActiveMembers += branches[k].data.resigned_active_members.total;\n\n          aTotalLife        += branches[k].data.total_life\n          aTotalRf          += branches[k].data.total_rf\n          aActiveMembers    += branches[k].data.active_members.total;\n          aInforceMembers   += branches[k].data.inforce_members.total;\n          aLapsedMembers    += branches[k].data.lapsed_members.total;\n          aPendingMembers   += branches[k].data.pending_members.total;\n          aDormantMembers   += branches[k].data.dormant_members.total;\n          aResignedActiveMembers += branches[k].data.resigned_active_members.total;\n\n          tTotalLife        += branches[k].data.total_life\n          tTotalRf          += branches[k].data.total_rf\n          tActiveMembers    += branches[k].data.active_members.total;\n          tInforceMembers   += branches[k].data.inforce_members.total;\n          tLapsedMembers    += branches[k].data.lapsed_members.total;\n          tPendingMembers   += branches[k].data.pending_members.total;\n          tDormantMembers   += branches[k].data.dormant_members.total;\n          tResignedActiveMembers += branches[k].data.resigned_active_members.total;\n\n          rows.push(\n            <tr key={\"branch-\" + branches[k].id}>\n              <td>\n                <strong>\n                  {branches[k].name}\n                </strong>\n              </td>\n              <td className=\"text-center\">\n                {branches[k].data.inforce_members.total}\n              </td>\n              <td className=\"text-center\">\n                {branches[k].data.lapsed_members.total}\n              </td>\n              <td className=\"text-center\">\n                {branches[k].data.pending_members.total}\n              </td>\n              <td className=\"text-center\">\n                {branches[k].data.dormant_members.total}\n              </td>\n              <td className=\"text-center\">\n                {branches[k].data.resigned_active_members.total}\n              </td>\n              <td className=\"text-center\">\n                {branches[k].data.active_members.total}\n              </td>\n              <td className=\"text-center\">\n                {branches[k].data.member_counts_as_of}\n              </td>\n              <td className=\"text-center\">\n                {numberWithCommas(branches[k].data.total_life)}\n              </td>\n              <td className=\"text-center\">\n                {numberWithCommas(branches[k].data.total_rf)}\n              </td>\n              <td className=\"text-center\">\n                {branches[k].data.personal_funds_as_of}\n              </td>\n            </tr>\n          );\n        }\n\n        rows.push(\n          <tr key={\"cluster-total-\" + clusters[j].id} style={{backgroundColor: clusterColor}}>\n            <td>\n              <strong>\n                {clusters[j].name} Total\n              </strong>\n            </td>\n            <td className=\"text-center\">\n              <strong>\n                {cInforceMembers}\n              </strong>\n            </td>\n            <td className=\"text-center\">\n              <strong>\n                {cLapsedMembers}\n              </strong>\n            </td>\n            <td className=\"text-center\">\n              <strong>\n                {cPendingMembers}\n              </strong>\n            </td>\n            <td className=\"text-center\">\n              <strong>\n                {cDormantMembers}\n              </strong>\n            </td>\n            <td className=\"text-center\">\n              <strong>\n                {cResignedActiveMembers}\n              </strong>\n            </td>\n            <td className=\"text-center\">\n              <strong>\n                {cActiveMembers}\n              </strong>\n            </td>\n            <td>\n            </td>\n            <td className=\"text-center\">\n              <strong>\n                {numberWithCommas(cTotalLife)}\n              </strong>\n            </td>\n            <td className=\"text-center\">\n              <strong>\n                {numberWithCommas(cTotalRf)}\n              </strong>\n            </td>\n            <td>\n            </td>\n          </tr>\n        );\n      }\n\n      rows.push(\n        <tr key={\"area-total-\" + areas[i].id} style={{backgroundColor: areaColor}}>\n          <td>\n            <strong>\n              {areas[i].name} Total\n            </strong>\n          </td>\n          <td className=\"text-center\">\n            <strong>\n              {aInforceMembers}\n            </strong>\n          </td>\n          <td className=\"text-center\">\n            <strong>\n              {aLapsedMembers}\n            </strong>\n          </td>\n          <td className=\"text-center\">\n            <strong>\n              {aPendingMembers}\n            </strong>\n          </td>\n          <td className=\"text-center\">\n            <strong>\n              {aDormantMembers}\n            </strong>\n          </td>\n          <td className=\"text-center\">\n            <strong>\n              {aResignedActiveMembers}\n            </strong>\n          </td>\n          <td className=\"text-center\">\n            <strong>\n              {aActiveMembers}\n            </strong>\n          </td>\n          <td>\n          </td>\n          <td className=\"text-center\">\n            <strong>\n              {numberWithCommas(aTotalLife)}\n            </strong>\n          </td>\n          <td className=\"text-center\">\n            <strong>\n              {numberWithCommas(aTotalRf)}\n            </strong>\n          </td>\n          <td>\n          </td>\n        </tr>\n      );\n    }\n\n\n    rows.push(\n      <tr key={\"grand-total\"} style={{backgroundColor: \"#000\", color: \"#fff\"}}>\n        <td>\n          <strong>\n            Grand Total\n          </strong>\n        </td>\n        <td className=\"text-center\">\n          <strong>\n            {tInforceMembers}\n          </strong>\n        </td>\n        <td className=\"text-center\">\n          <strong>\n            {tLapsedMembers}\n          </strong>\n        </td>\n        <td className=\"text-center\">\n          <strong>\n            {tPendingMembers}\n          </strong>\n        </td>\n        <td className=\"text-center\">\n          <strong>\n            {tDormantMembers}\n          </strong>\n        </td>\n        <td className=\"text-center\">\n          <strong>\n            {tResignedActiveMembers}\n          </strong>\n        </td>\n        <td className=\"text-center\">\n          <strong>\n            {tActiveMembers}\n          </strong>\n        </td>\n        <td>\n        </td>\n        <td className=\"text-center\">\n          <strong>\n            {numberWithCommas(tTotalLife)}\n          </strong>\n        </td>\n        <td className=\"text-center\">\n          <strong>\n            {numberWithCommas(tTotalRf)}\n          </strong>\n        </td>\n        <td>\n        </td>\n      </tr>\n    );\n\n    return (\n      <table className=\"table table-sm table-bordered\">\n        <tbody>\n          {rows}\n        </tbody>\n      </table>\n    );\n  }\n\n  renderOverviewTableSummary() {\n    var areas   = this.state.data.areas;\n    var rows    = [];\n    var colSpan = 13;\n\n    var areaColor     = \"#bad5fd\";\n    var clusterColor  = \"#c5ffc1\";\n    var branchColor   = \"#797979\";\n\n    var tTotalLife        = 0.00;\n    var tTotalRf          = 0.00;\n    var tTotalLifeRf      = 0.00;\n    var tActiveMembers    = 0;\n    var tInforceMembers   = 0;\n    var tLapsedMembers    = 0;\n    var tPendingMembers   = 0;\n    var tDormantMembers   = 0;\n    var tResignedActiveMembers = 0;\n\n    var kmbaAssociatetTotalLife                 = 0.00;\n    var kmbaAssociatetTotalRf                   = 0.00;              \n    var kmbaAssociatetActiveMembers             = 0.00;        \n    var kmbaAssociatetInforceMembers            = 0.00;     \n    var kmbaAssociatetLapsedMembers             = 0.00;             \n    var kmbaAssociatetPendingMembers            = 0.00;            \n    var kmbaAssociatetDormantMembers            = 0.00;            \n    var kmbaAssociatetResignedActiveMembers     = 0.00;\n\n    var kcoopAssociatetTotalLife                 = 0.00;\n    var kcoopAssociatetTotalRf                   = 0.00;              \n    var kcoopAssociatetActiveMembers             = 0.00;        \n    var kcoopAssociatetInforceMembers            = 0.00;     \n    var kcoopAssociatetLapsedMembers             = 0.00;             \n    var kcoopAssociatetPendingMembers            = 0.00;            \n    var kcoopAssociatetDormantMembers            = 0.00;            \n    var kcoopAssociatetResignedActiveMembers     = 0.00;      \n      \n\n    rows.push(\n      <tr style={{backgroundColor: areaColor}}>\n        <th className=\"text-center\" colSpan={colSpan}>\n          <h4>        \n            MEMBERS REPORT SUMMARY\n          </h4>  \n        </th>\n      </tr>\n    );\n\n    rows.push(\n      <tr key={\"header-\"} style={{backgroundColor: branchColor, color: \"white\"}}>\n        <th>\n          Area Name\n        </th>\n        <th className=\"text-center\">\n          Inforce\n        </th>\n        <th className=\"text-center\">\n          Lapsed\n        </th>\n        <th className=\"text-center\">\n          Pending\n        </th>\n        <th className=\"text-center\">\n          Dormant\n        </th>\n        <th className=\"text-center\">\n          LIFE\n        </th>\n        <th className=\"text-center\">\n          RF\n        </th>\n      </tr>\n    );\n\n    for(var i = 0; i < areas.length; i++) {\n      \n     \n      var clusters    = areas[i].clusters;\n\n      var aTotalLife        = 0.00;\n      var aTotalRf          = 0.00;\n      var aTotalLifeRf      = 0.00;\n      var aActiveMembers    = 0;\n      var aInforceMembers   = 0;\n      var aLapsedMembers    = 0;\n      var aPendingMembers   = 0;\n      var aDormantMembers   = 0;\n      var aResignedActiveMembers = 0;\n\n      for(var j = 0; j < clusters.length; j++) {\n        var branches  = clusters[j].branches;\n\n        var cTotalLife        = 0.00;\n        var cTotalRf          = 0.00;\n        var cTotalLifeRf      = 0.00;\n        var cActiveMembers    = 0;\n        var cInforceMembers   = 0;\n        var cLapsedMembers    = 0;\n        var cPendingMembers   = 0;\n        var cDormantMembers   = 0;\n        var cResignedActiveMembers = 0;\n\n        for(var k = 0; k < branches.length; k++) {\n          if(k == 0) {\n            \n          }\n\n          cTotalLife        += branches[k].data.total_life\n          cTotalRf          += branches[k].data.total_rf\n          cActiveMembers    += branches[k].data.active_members.total;\n          cInforceMembers   += branches[k].data.inforce_members.total;\n          cLapsedMembers    += branches[k].data.lapsed_members.total;\n          cPendingMembers   += branches[k].data.pending_members.total;\n          cDormantMembers   += branches[k].data.dormant_members.total;\n          cResignedActiveMembers += branches[k].data.resigned_active_members.total;\n\n          aTotalLife        += branches[k].data.total_life\n          aTotalRf          += branches[k].data.total_rf\n          aActiveMembers    += branches[k].data.active_members.total;\n          aInforceMembers   += branches[k].data.inforce_members.total;\n          aLapsedMembers    += branches[k].data.lapsed_members.total;\n          aPendingMembers   += branches[k].data.pending_members.total;\n          aDormantMembers   += branches[k].data.dormant_members.total;\n          aResignedActiveMembers += branches[k].data.resigned_active_members.total;\n\n          if (i < 3) {\n            kmbaAssociatetTotalLife                   += branches[k].data.total_life\n            kmbaAssociatetTotalRf                     += branches[k].data.total_rf\n            kmbaAssociatetActiveMembers               += branches[k].data.active_members.total;\n            kmbaAssociatetInforceMembers              += branches[k].data.inforce_members.total;\n            kmbaAssociatetLapsedMembers               += branches[k].data.lapsed_members.total;\n            kmbaAssociatetPendingMembers              += branches[k].data.pending_members.total;\n            kmbaAssociatetDormantMembers              += branches[k].data.dormant_members.total;\n            kmbaAssociatetResignedActiveMembers       += branches[k].data.resigned_active_members.total;\n            var areaName = \"KMBA Associate\";\n\n          } else {\n            kcoopAssociatetTotalLife                   += branches[k].data.total_life\n            kcoopAssociatetTotalRf                     += branches[k].data.total_rf\n            kcoopAssociatetActiveMembers               += branches[k].data.active_members.total;\n            kcoopAssociatetInforceMembers              += branches[k].data.inforce_members.total;\n            kcoopAssociatetLapsedMembers               += branches[k].data.lapsed_members.total;\n            kcoopAssociatetPendingMembers              += branches[k].data.pending_members.total;\n            kcoopAssociatetDormantMembers              += branches[k].data.dormant_members.total;\n            kcoopAssociatetResignedActiveMembers       += branches[k].data.resigned_active_members.total;\n            var areaName = \"KCOOP\";\n          }\n\n\n          tTotalLife        += branches[k].data.total_life\n          tTotalRf          += branches[k].data.total_rf\n          tActiveMembers    += branches[k].data.active_members.total;\n          tInforceMembers   += branches[k].data.inforce_members.total;\n          tLapsedMembers    += branches[k].data.lapsed_members.total;\n          tPendingMembers   += branches[k].data.pending_members.total;\n          tDormantMembers   += branches[k].data.dormant_members.total;\n          tResignedActiveMembers += branches[k].data.resigned_active_members.total;\n        }\n      }\n\n      rows.push(\n        <tr key={\"area-total-\" + areas[i].id}>\n          <td>\n            <strong>\n              {areas[i].name}\n            </strong>\n          </td>\n          <td className=\"text-center\">\n            <strong>\n              {aInforceMembers}\n            </strong>\n          </td>\n          <td className=\"text-center\">\n            <strong>\n              {aLapsedMembers}\n            </strong>\n          </td>\n          <td className=\"text-center\">\n            <strong>\n              {aPendingMembers}\n            </strong>\n          </td>\n          <td className=\"text-center\">\n            <strong>\n              {aDormantMembers}\n            </strong>\n          </td>\n          <td className=\"text-center\">\n            <strong>\n              {numberWithCommas(aTotalLife)}\n            </strong>\n          </td>\n          <td className=\"text-center\">\n            <strong>\n              {numberWithCommas(aTotalRf)}\n            </strong>\n          </td>\n        </tr>\n      );\n    }\n\n    rows.push(\n      <tr key={\"subtotal-kmba-associate\"} style={{backgroundColor: \"#696\", color: \"#fff\"}}>\n        <th>\n          KMBA Associate Sub Total \n        </th>\n        <th className=\"text-center\">\n          {kmbaAssociatetInforceMembers}\n        </th>\n        <th className=\"text-center\">\n          {kmbaAssociatetLapsedMembers}\n        </th>\n        <th className=\"text-center\">\n          {kmbaAssociatetPendingMembers}\n        </th>\n        <th className=\"text-center\">\n          {kmbaAssociatetDormantMembers}\n        </th>\n        <th className=\"text-center\">\n          {numberWithCommas(kmbaAssociatetTotalLife)}\n        </th>\n        <th className=\"text-center\">\n          {numberWithCommas(kmbaAssociatetTotalRf)}\n        </th>\n      </tr>\n    );\n\n    rows.push(\n      <tr key={\"subtotal-kcoop\"} style={{backgroundColor: \"#696\", color: \"#fff\"}}>\n        <th>\n          KCOOP Sub Total \n        </th>\n        <th className=\"text-center\">\n          {kcoopAssociatetInforceMembers}\n        </th>\n        <th className=\"text-center\">\n          {kcoopAssociatetLapsedMembers}\n        </th>\n        <th className=\"text-center\">\n          {kcoopAssociatetPendingMembers}\n        </th>\n        <th className=\"text-center\">\n          {kcoopAssociatetDormantMembers}\n        </th>\n        <th className=\"text-center\">\n          {numberWithCommas(kcoopAssociatetTotalLife)}\n        </th>\n        <th className=\"text-center\">\n          {numberWithCommas(kcoopAssociatetTotalRf)}\n        </th>\n      </tr>\n    );\n\n    rows.push(\n      <tr key={\"grand-total\"} style={{backgroundColor: \"#000\", color: \"#fff\"}}>\n        <td>\n          <strong>\n            Grand Total\n          </strong>\n        </td>\n        <td className=\"text-center\">\n          <strong>\n            {tInforceMembers}\n          </strong>\n        </td>\n        <td className=\"text-center\">\n          <strong>\n            {tLapsedMembers}\n          </strong>\n        </td>\n        <td className=\"text-center\">\n          <strong>\n            {tPendingMembers}\n          </strong>\n        </td>\n        <td className=\"text-center\">\n          <strong>\n            {tDormantMembers}\n          </strong>\n        </td>\n        <td className=\"text-center\">\n          <strong>\n            {numberWithCommas(tTotalLife)}\n          </strong>\n        </td>\n        <td className=\"text-center\">\n          <strong>\n            {numberWithCommas(tTotalRf)}\n          </strong>\n        </td>\n      </tr>\n    );\n\n    return (\n      <table className=\"table table-sm table-bordered\">\n        <tbody>\n          {rows}\n        </tbody>\n      </table>\n    );\n  }\n\n  renderOverviewTableClaims() {\n    var areas   = this.state.data.areas;\n    var rows    = [];\n    var colSpan = 13;\n\n    var areaColor     = \"#bad5fd\";\n    var clusterColor  = \"#c5ffc1\";\n    var branchColor   = \"#797979\";\n\n    var tTotalBLip                = 0.00;\n    var tTotalClip                = 0.00;\n    var tTotalHiip                = 0.00;\n    var tTotalKbente              = 0.00;\n    var tTotalKkalinga            = 0.00;\n    var tTotalKjsp                = 0.00;\n    var tTotalCalamityAssistance  = 0.00;\n    var tBlip                     = 0;\n    var tClip                     = 0;\n    var tHiip                     = 0;\n    var tKbente                   = 0;\n    var tKkalinga                 = 0;\n    var tKjsp                     = 0;\n    var tCalamityAssistance       = 0;\n\n    rows.push(\n      <tr style={{backgroundColor: areaColor}}>\n        <th className=\"text-center\" colSpan={colSpan}>\n          <h4>        \n            CLAIMS COUNTS PER BRANCH\n          </h4>  \n        </th>\n      </tr>\n    );\n\n    rows.push(\n      <tr style={{backgroundColor: branchColor, color: \"white\"}}>\n        <th>\n          Branch Name\n        </th>\n        <th className=\"text-center\">\n          BLIP\n        </th>\n        <th className=\"text-center\">\n          CLIP\n        </th>\n        <th className=\"text-center\">\n          HIIP\n        </th>\n        <th className=\"text-center\">\n          K-BENTE\n        </th>\n        <th className=\"text-center\">\n          K-KALINGA\n        </th>\n        <th className=\"text-center\">\n          CALAMITY ASSISTANCE\n        </th>\n        <th className=\"text-center\">\n          KJSP\n        </th>\n        <th>\n          As Of (Claim Counts)\n        </th>\n      </tr>\n    );\n\n    for(var i = 0; i < areas.length; i++) {\n     \n      var clusters    = areas[i].clusters;\n\n      for(var j = 0; j < clusters.length; j++) {\n\n        var branches  = clusters[j].branches;\n\n        for(var k = 0; k < branches.length; k++) {\n        \n\n          tTotalBLip                += branches[k].data.total_blip_claims;\n          tTotalClip                += branches[k].data.total_clip_claims;\n          tTotalHiip                += branches[k].data.total_hiip_claims;\n          tTotalKbente              += branches[k].data.total_kbente_claims;\n          tTotalKkalinga            += branches[k].data.total_kkalinga_claims;\n          tTotalKjsp                += branches[k].data.total_kjsp_claims;\n          tTotalCalamityAssistance  += branches[k].data.total_calamity_assistance_claims;\n          tBlip                     += branches[k].data.approved_claims.blip;\n          tClip                     += branches[k].data.approved_claims.clip;\n          tHiip                     += branches[k].data.approved_claims.hiip;\n          tKbente                   += branches[k].data.approved_claims.k_bente;\n          tKkalinga                 += branches[k].data.approved_claims.k_kalinga;\n          tKjsp                     += branches[k].data.approved_claims.kjsp;\n          tCalamityAssistance       += branches[k].data.approved_claims.calamity_assistance;\n\n          rows.push(\n            <tr key={\"branch-\" + branches[k].id}>\n              <td>\n                <strong>\n                  {branches[k].name}\n                </strong>\n              </td>\n              <td className=\"text-center\">\n                {branches[k].data.approved_claims.blip}\n              </td>\n              <td className=\"text-center\">\n                {branches[k].data.approved_claims.clip}\n              </td>\n              <td className=\"text-center\">\n                {branches[k].data.approved_claims.hiip}\n              </td>\n              <td className=\"text-center\">\n                {branches[k].data.approved_claims.k_bente}\n              </td>\n              <td className=\"text-center\">\n                {branches[k].data.approved_claims.k_kalinga}\n              </td>\n              <td className=\"text-center\">\n                {branches[k].data.approved_claims.calamity_assistance}\n              </td>\n              <td className=\"text-center\">\n                {branches[k].data.approved_claims.kjsp}\n              </td>\n              <td className=\"text-center\">\n                {branches[k].data.claims_counts_as_of}\n              </td>\n            </tr>\n          );\n        }\n      }\n    }\n\n    rows.push(\n      <tr style={{backgroundColor: \"#696\", color: \"#fff\"}}>\n        <td>\n          <strong>\n            Grand Total\n          </strong>\n        </td>\n        <td className=\"text-center\">\n          <strong>\n            {tBlip}\n          </strong>\n        </td>\n        <td className=\"text-center\">\n          <strong>\n            {tClip}\n          </strong>\n        </td>\n        <td className=\"text-center\">\n          <strong>\n            {tHiip}\n          </strong>\n        </td>\n        <td className=\"text-center\">\n          <strong>\n            {tKbente}\n          </strong>\n        </td>\n        <td className=\"text-center\">\n          <strong>\n            {tKkalinga}\n          </strong>\n        </td>\n        <td className=\"text-center\">\n          <strong>\n            {tCalamityAssistance}\n          </strong>\n        </td>\n        <td className=\"text-center\">\n          <strong>\n            {tKjsp}\n          </strong>\n        </td>\n        <td>\n        </td>\n      </tr>\n    );\n\n    rows.push(\n      <tr style={{backgroundColor: \"#000\", color: \"#fff\"}}>\n        <td>\n          <strong>\n            Grand Total Amount\n          </strong>\n        </td>\n        <td className=\"text-center\">\n          <strong>\n            {numberWithCommas(tTotalBLip)}\n          </strong>\n        </td>\n        <td className=\"text-center\">\n          <strong>\n            {numberWithCommas(tTotalClip)}\n          </strong>\n        </td>\n        <td className=\"text-center\">\n          <strong>\n            {numberWithCommas(tTotalHiip)}\n          </strong>\n        </td>\n        <td className=\"text-center\">\n          <strong>\n            {numberWithCommas(tTotalKbente)}\n          </strong>\n        </td>\n        <td className=\"text-center\">\n          <strong>\n            {numberWithCommas(tTotalKkalinga)}\n          </strong>\n        </td>\n        <td className=\"text-center\">\n          <strong>\n            {numberWithCommas(tTotalCalamityAssistance)}\n          </strong>\n        </td>\n        <td className=\"text-center\">\n          <strong>\n            {numberWithCommas(tTotalKjsp)}\n          </strong>\n        </td>\n        <td>\n        </td>\n      </tr>\n    );\n\n    return (\n      <table className=\"table table-sm table-bordered\">\n        <tbody>\n          {rows}\n        </tbody>\n      </table>\n    );\n  }\n\n  renderOverviewTableClaimsSummary() {\n    var areas   = this.state.data.areas;\n    var rows    = [];\n    var colSpan = 13;\n\n    var areaColor     = \"#bad5fd\";\n    var clusterColor  = \"#c5ffc1\";\n    var branchColor   = \"#797979\";\n\n    var tTotalBLip                = 0.00;\n    var tTotalClip                = 0.00;\n    var tTotalHiip                = 0.00;\n    var tTotalKbente              = 0.00;\n    var tTotalKkalinga            = 0.00;\n    var tTotalKjsp                = 0.00;\n    var tTotalCalamityAssistance  = 0.00;\n    var tBlip                     = 0;\n    var tClip                     = 0;\n    var tHiip                     = 0;\n    var tKbente                   = 0;\n    var tKkalinga                 = 0;\n    var tKjsp                     = 0;\n    var tCalamityAssistance       = 0;\n\n    var tTotalKcoopBlipAmount     = 0.00;\n    var tTotalKcoopBlip           = 0;\n    var tTotalCapsrBlipAmount     = 0.00;\n    var tTotalCapsrBlip           = 0;\n    var tTotalAssociateBlipAmount = 0.00;\n    var tTotalAssociateBlip       = 0;\n    var tTotalJvoBlipAmount       = 0.00;\n    var tTotalJvoBlip             = 0;\n\n    var tTotalKcoopClipAmount     = 0.00;\n    var tTotalKcoopClip           = 0;\n    var tTotalCapsrClipAmount     = 0.00;\n    var tTotalCapsrClip           = 0;\n    var tTotalAssociateClipAmount = 0.00;\n    var tTotalAssociateClip       = 0;\n    var tTotalJvoClipAmount       = 0.00;\n    var tTotalJvoClip             = 0;\n\n    var tTotalKcoopHiipAmount     = 0.00;\n    var tTotalKcoopHiip           = 0;\n    var tTotalCapsrHiipAmount     = 0.00;\n    var tTotalCapsrHiip           = 0;\n    var tTotalAssociateHiipAmount = 0.00;\n    var tTotalAssociateHiip       = 0;\n    var tTotalJvoHiipAmount       = 0.00;\n    var tTotalJvoHiip             = 0;\n\n    var tTotalKcoopKbenteAmount     = 0.00;\n    var tTotalKcoopKbente           = 0;\n    var tTotalCapsrKbenteAmount     = 0.00;\n    var tTotalCapsrKbente           = 0;\n    var tTotalAssociateKbenteAmount = 0.00;\n    var tTotalAssociateKbente       = 0;\n    var tTotalJvoKbenteAmount       = 0.00;\n    var tTotalJvoKbente             = 0;\n\n    var tTotalKcoopKkalingaAmount     = 0.00;\n    var tTotalKcoopKkalinga           = 0;\n    var tTotalCapsrKkalingaAmount     = 0.00;\n    var tTotalCapsrKkalinga           = 0;\n    var tTotalAssociateKkalingaAmount = 0.00;\n    var tTotalAssociateKkalinga       = 0;\n    var tTotalJvoKkalingaAmount       = 0.00;\n    var tTotalJvoKkalinga             = 0;\n\n    var tTotalKcoopKjspAmount     = 0.00;\n    var tTotalKcoopKjsp           = 0;\n    var tTotalCapsrKjspAmount     = 0.00;\n    var tTotalCapsrKjsp           = 0;\n    var tTotalAssociateKjspAmount = 0.00;\n    var tTotalAssociateKjsp       = 0;\n    var tTotalJvoKjspAmount       = 0.00;\n    var tTotalJvoKjsp             = 0;\n\n    var tTotalKcoopCalamityAssistanceAmount     = 0.00;\n    var tTotalKcoopCalamityAssistance           = 0;\n    var tTotalCapsrCalamityAssistanceAmount     = 0.00;\n    var tTotalCapsrCalamityAssistance           = 0;\n    var tTotalAssociateCalamityAssistanceAmount = 0.00;\n    var tTotalAssociateCalamityAssistance       = 0;\n    var tTotalJvoCalamityAssistanceAmount       = 0.00;\n    var tTotalJvoCalamityAssistance             = 0;\n\n    var tTotalKcoopClaimsAmount       = 0.00;\n    var tTotalKcoopClaims             = 0;\n    var tTotalCapsrClaimsAmount       = 0.00;\n    var tTotalCapsrClaims             = 0;\n    var tTotalAssociateClaimsAmount   = 0.00;\n    var tTotalAssociateClaims         = 0;\n    var tTotalJvoClaimsAmount         = 0.00;\n    var tTotalJvoClaims               = 0;\n\n    var tTotalClaims                  = 0;\n    var tTotalClaimsAmount            = 0.00;\n\n    rows.push(\n      <tr style={{backgroundColor: areaColor}}>\n        <th className=\"text-center\" colSpan={colSpan}>\n          <h4>        \n            CLAIMS SUMMARY\n          </h4>  \n        </th>\n      </tr>\n    );\n\n    rows.push(\n      <tr style={{backgroundColor: branchColor, color: \"white\"}}>\n        <th>\n        </th>\n        <th className=\"text-center\" colSpan=\"2\">\n          KCOOP\n        </th>\n        <th className=\"text-center\" colSpan=\"2\">\n          CAPS-R\n        </th>\n        <th className=\"text-center\" colSpan=\"2\">\n          ASSOCIATE\n        </th>\n        <th className=\"text-center\" colSpan=\"2\">\n          JVOMFI\n        </th>\n        <th className=\"text-center\" colSpan=\"2\">\n          TOTAL\n        </th>\n      </tr>\n    );\n\n    rows.push(\n      <tr style={{backgroundColor: branchColor, color: \"white\"}}>\n        <th>\n        </th>\n        <th className=\"text-center\">\n          NUMBER\n        </th>\n        <th className=\"text-center\">\n          AMOUNT\n        </th>\n        <th className=\"text-center\">\n          NUMBER\n        </th>\n        <th className=\"text-center\">\n          AMOUNT\n        </th>\n        <th className=\"text-center\">\n          NUMBER\n        </th>\n        <th className=\"text-center\">\n          AMOUNT\n        </th>\n        <th className=\"text-center\">\n          NUMBER\n        </th>\n        <th className=\"text-center\">\n          AMOUNT\n        </th>\n        <th className=\"text-center\">\n          NUMBER\n        </th>\n        <th className=\"text-center\">\n          AMOUNT\n        </th>\n      </tr> \n    );\n\n    for(var i = 0; i < areas.length; i++) {\n     \n      var clusters    = areas[i].clusters;\n\n      for(var j = 0; j < clusters.length; j++) {\n\n        var branches  = clusters[j].branches;\n\n        for(var k = 0; k < branches.length; k++) {\n        \n\n          tTotalBLip                += branches[k].data.total_blip_claims;\n          tTotalClip                += branches[k].data.total_clip_claims;\n          tTotalHiip                += branches[k].data.total_hiip_claims;\n          tTotalKbente              += branches[k].data.total_kbente_claims;\n          tTotalKkalinga            += branches[k].data.total_kkalinga_claims;\n          tTotalKjsp                += branches[k].data.total_kjsp_claims;\n          tTotalCalamityAssistance  += branches[k].data.total_calamity_assistance_claims;\n          tBlip                     += branches[k].data.approved_claims.blip;\n          tClip                     += branches[k].data.approved_claims.clip;\n          tHiip                     += branches[k].data.approved_claims.hiip;\n          tKbente                   += branches[k].data.approved_claims.k_bente;\n          tKkalinga                 += branches[k].data.approved_claims.k_kalinga;\n          tKjsp                     += branches[k].data.approved_claims.kjsp;\n          tCalamityAssistance       += branches[k].data.approved_claims.calamity_assistance;\n\n          tTotalKcoopBlip           += branches[k].data.total_blip_kcoop;\n          tTotalKcoopBlipAmount     += branches[k].data.total_blip_kcoop_amount;\n          tTotalCapsrBlip           += branches[k].data.total_blip_capsr;\n          tTotalCapsrBlipAmount     += branches[k].data.total_blip_capsr_amount;\n          tTotalAssociateBlip       += branches[k].data.total_blip_associate;\n          tTotalAssociateBlipAmount += branches[k].data.total_blip_associate_amount;\n          tTotalJvoBlip             += branches[k].data.total_blip_jvo;\n          tTotalJvoBlipAmount       += branches[k].data.total_blip_jvo_amount;\n\n          tTotalKcoopClip           += branches[k].data.total_clip_kcoop;\n          tTotalKcoopClipAmount     += branches[k].data.total_clip_kcoop_amount;\n          tTotalCapsrClip           += branches[k].data.total_clip_capsr;\n          tTotalCapsrClipAmount     += branches[k].data.total_clip_capsr_amount;\n          tTotalAssociateClip       += branches[k].data.total_clip_associate;\n          tTotalAssociateClipAmount += branches[k].data.total_clip_associate_amount;\n          tTotalJvoClip             += branches[k].data.total_clip_jvo;\n          tTotalJvoClipAmount       += branches[k].data.total_clip_jvo_amount;\n\n          tTotalKcoopHiip           += branches[k].data.total_hiip_kcoop;\n          tTotalKcoopHiipAmount     += branches[k].data.total_hiip_kcoop_amount;\n          tTotalCapsrHiip           += branches[k].data.total_hiip_capsr;\n          tTotalCapsrHiipAmount     += branches[k].data.total_hiip_capsr_amount;\n          tTotalAssociateHiip       += branches[k].data.total_hiip_associate;\n          tTotalAssociateHiipAmount += branches[k].data.total_hiip_associate_amount;\n          tTotalJvoHiip             += branches[k].data.total_hiip_jvo;\n          tTotalJvoHiipAmount       += branches[k].data.total_hiip_jvo_amount;\n\n          tTotalKcoopKbente           += branches[k].data.total_kbente_kcoop;\n          tTotalKcoopKbenteAmount     += branches[k].data.total_kbente_kcoop_amount;\n          tTotalCapsrKbente           += branches[k].data.total_kbente_capsr;\n          tTotalCapsrKbenteAmount     += branches[k].data.total_kbente_capsr_amount;\n          tTotalAssociateKbente       += branches[k].data.total_kbente_associate;\n          tTotalAssociateKbenteAmount += branches[k].data.total_kbente_associate_amount;\n          tTotalJvoKbente             += branches[k].data.total_kbente_jvo;\n          tTotalJvoKbenteAmount       += branches[k].data.total_kbente_jvo_amount;\n\n          tTotalKcoopKjsp           += branches[k].data.total_kjsp_kcoop;\n          tTotalKcoopKjspAmount     += branches[k].data.total_kjsp_kcoop_amount;\n          tTotalCapsrKjsp           += branches[k].data.total_kjsp_capsr;\n          tTotalCapsrKjspAmount     += branches[k].data.total_kjsp_capsr_amount;\n          tTotalAssociateKjsp       += branches[k].data.total_kjsp_associate;\n          tTotalAssociateKjspAmount += branches[k].data.total_kjsp_associate_amount;\n          tTotalJvoKjsp             += branches[k].data.total_kjsp_jvo;\n          tTotalJvoKjspAmount       += branches[k].data.total_kjsp_jvo_amount;\n\n          tTotalKcoopKkalinga           += branches[k].data.total_kkalinga_kcoop;\n          tTotalKcoopKkalingaAmount     += branches[k].data.total_kkalinga_kcoop_amount;\n          tTotalCapsrKkalinga           += branches[k].data.total_kkalinga_capsr;\n          tTotalCapsrKkalingaAmount     += branches[k].data.total_kkalinga_capsr_amount;\n          tTotalAssociateKkalinga       += branches[k].data.total_kkalinga_associate;\n          tTotalAssociateKkalingaAmount += branches[k].data.total_kkalinga_associate_amount;\n          tTotalJvoKkalinga             += branches[k].data.total_kkalinga_jvo;\n          tTotalJvoKkalingaAmount       += branches[k].data.total_kkalinga_jvo_amount;\n\n          tTotalKcoopCalamityAssistance           += branches[k].data.total_calamity_assistance_kcoop;\n          tTotalKcoopCalamityAssistanceAmount     += branches[k].data.total_calamity_assistance_kcoop_amount;\n          tTotalCapsrCalamityAssistance           += branches[k].data.total_calamity_assistance_capsr;\n          tTotalCapsrCalamityAssistanceAmount     += branches[k].data.total_calamity_assistance_capsr_amount;\n          tTotalAssociateCalamityAssistance       += branches[k].data.total_calamity_assistance_associate;\n          tTotalAssociateCalamityAssistanceAmount += branches[k].data.total_calamity_assistance_associate_amount;\n          tTotalJvoCalamityAssistance             += branches[k].data.total_calamity_assistance_jvo;\n          tTotalJvoCalamityAssistanceAmount       += branches[k].data.total_calamity_assistance_jvo_amount;\n\n        }\n      }\n\n      tTotalKcoopClaims       = tTotalKcoopBlip + tTotalKcoopClip + tTotalKcoopHiip + tTotalKcoopKbente + tTotalKcoopKjsp + tTotalKcoopKkalinga + tTotalKcoopCalamityAssistance\n      tTotalKcoopClaimsAmount = tTotalKcoopBlipAmount + tTotalKcoopClipAmount + tTotalKcoopHiipAmount + tTotalKcoopKbenteAmount + tTotalKcoopKjspAmount + tTotalKcoopKkalingaAmount + tTotalKcoopCalamityAssistanceAmount\n      tTotalCapsrClaims       = tTotalCapsrBlip + tTotalCapsrClip + tTotalCapsrHiip + tTotalCapsrKbente + tTotalCapsrKjsp + tTotalCapsrKkalinga + tTotalCapsrCalamityAssistance\n      tTotalCapsrClaimsAmount = tTotalCapsrBlipAmount + tTotalCapsrClipAmount + tTotalCapsrHiipAmount + tTotalCapsrKbenteAmount + tTotalCapsrKjspAmount + tTotalCapsrKkalingaAmount + tTotalCapsrCalamityAssistanceAmount\n      tTotalAssociateClaims       = tTotalAssociateBlip + tTotalAssociateClip + tTotalAssociateHiip + tTotalAssociateKbente + tTotalAssociateKjsp + tTotalAssociateKkalinga + tTotalAssociateCalamityAssistance\n      tTotalAssociateClaimsAmount = tTotalAssociateBlipAmount + tTotalAssociateClipAmount + tTotalAssociateHiipAmount + tTotalAssociateKbenteAmount + tTotalAssociateKjspAmount + tTotalAssociateKkalingaAmount + tTotalAssociateCalamityAssistanceAmount\n      tTotalJvoClaims       = tTotalJvoBlip + tTotalJvoClip + tTotalJvoHiip + tTotalJvoKbente + tTotalJvoKjsp + tTotalJvoKkalinga + tTotalJvoCalamityAssistance\n      tTotalJvoClaimsAmount = tTotalJvoBlipAmount + tTotalJvoClipAmount + tTotalJvoHiipAmount + tTotalJvoKbenteAmount + tTotalJvoKjspAmount + tTotalJvoKkalingaAmount + tTotalJvoCalamityAssistanceAmount\n    \n      tTotalClaims       = tBlip + tClip + tHiip + tKbente + tKjsp + tKkalinga + tCalamityAssistance\n      tTotalClaimsAmount = tTotalBLip + tTotalClip + tTotalHiip + tTotalKbente + tTotalKjsp + tTotalKkalinga + tTotalCalamityAssistance\n    }\n\n    rows.push(\n      <tr>\n        <td>\n          <strong>\n            <a href={\"blip_summary\"} target='_blank'>  \n              BLIP\n            </a>\n          </strong>\n        </td>\n        <td className=\"text-center\">\n          {tTotalKcoopBlip}\n        </td>\n        <td className=\"text-center\">\n          {numberWithCommas(tTotalKcoopBlipAmount)}\n        </td>\n        <td className=\"text-center\">\n          {tTotalCapsrBlip}\n        </td>\n        <td className=\"text-center\">\n          {numberWithCommas(tTotalCapsrBlipAmount)}\n        </td>\n        <td className=\"text-center\">\n          {tTotalAssociateBlip}\n        </td>\n        <td className=\"text-center\">\n          {numberWithCommas(tTotalAssociateBlipAmount)}\n        </td>\n        <td className=\"text-center\">\n          {tTotalJvoBlip}\n        </td>\n        <td className=\"text-center\">\n          {numberWithCommas(tTotalJvoBlipAmount)}\n        </td>\n        <td className=\"text-center\">\n          {tBlip}\n        </td>\n        <td className=\"text-center\">\n          {numberWithCommas(tTotalBLip)}\n        </td>\n      </tr>\n    );\n\n    rows.push(\n      <tr>\n        <td>\n          <strong>\n            CLIP\n          </strong>\n        </td>\n        <td className=\"text-center\">\n          {tTotalKcoopClip}\n        </td>\n        <td className=\"text-center\">\n          {numberWithCommas(tTotalKcoopClipAmount)}\n        </td>\n        <td className=\"text-center\">\n          {tTotalCapsrClip}\n        </td>\n        <td className=\"text-center\">\n          {numberWithCommas(tTotalCapsrClipAmount)}\n        </td>\n        <td className=\"text-center\">\n          {tTotalAssociateClip}\n        </td>\n        <td className=\"text-center\">\n          {numberWithCommas(tTotalAssociateClipAmount)}\n        </td>\n        <td className=\"text-center\">\n          {tTotalJvoClip}\n        </td>\n        <td className=\"text-center\">\n          {numberWithCommas(tTotalJvoClipAmount)}\n        </td>\n        <td className=\"text-center\">\n          {tClip}\n        </td>\n        <td className=\"text-center\">\n          {numberWithCommas(tTotalClip)}\n        </td>\n      </tr>\n    );\n\n    rows.push(\n      <tr>\n        <td>\n          <strong>\n            HIIP\n          </strong>\n        </td>\n        <td className=\"text-center\">\n          {tTotalKcoopHiip}\n        </td>\n        <td className=\"text-center\">\n          {numberWithCommas(tTotalKcoopHiipAmount)}\n        </td>\n        <td className=\"text-center\">\n          {tTotalCapsrHiip}\n        </td>\n        <td className=\"text-center\">\n          {numberWithCommas(tTotalCapsrHiipAmount)}\n        </td>\n        <td className=\"text-center\">\n          {tTotalAssociateHiip}\n        </td>\n        <td className=\"text-center\">\n          {numberWithCommas(tTotalAssociateHiipAmount)}\n        </td>\n        <td className=\"text-center\">\n          {tTotalJvoHiip}\n        </td>\n        <td className=\"text-center\">\n          {numberWithCommas(tTotalJvoHiipAmount)}\n        </td>\n        <td className=\"text-center\">\n          {tHiip}\n        </td>\n        <td className=\"text-center\">\n          {numberWithCommas(tTotalHiip)}\n        </td>\n      </tr>\n    );\n\n    rows.push(\n      <tr>\n        <td>\n          <strong>\n            K-BENTE\n          </strong>\n        </td>\n        <td className=\"text-center\">\n          {tTotalKcoopKbente}\n        </td>\n        <td className=\"text-center\">\n          {numberWithCommas(tTotalKcoopKbenteAmount)}\n        </td>\n        <td className=\"text-center\">\n          {tTotalCapsrKbente}\n        </td>\n        <td className=\"text-center\">\n          {numberWithCommas(tTotalCapsrKbenteAmount)}\n        </td>\n        <td className=\"text-center\">\n          {tTotalAssociateKbente}\n        </td>\n        <td className=\"text-center\">\n          {numberWithCommas(tTotalAssociateKbenteAmount)}\n        </td>\n        <td className=\"text-center\">\n          {tTotalJvoKbente}\n        </td>\n        <td className=\"text-center\">\n          {numberWithCommas(tTotalJvoKbenteAmount)}\n        </td>\n        <td className=\"text-center\">\n          {tKbente}\n        </td>\n        <td className=\"text-center\">\n          {numberWithCommas(tTotalKbente)}\n        </td>\n      </tr>\n    );\n\n    rows.push(\n      <tr>\n        <td>\n          <strong>\n            K-KALINGA\n          </strong>\n        </td>\n        <td className=\"text-center\">\n          {tTotalKcoopKkalinga}\n        </td>\n        <td className=\"text-center\">\n          {numberWithCommas(tTotalKcoopKkalingaAmount)}\n        </td>\n        <td className=\"text-center\">\n          {tTotalCapsrKkalinga}\n        </td>\n        <td className=\"text-center\">\n          {numberWithCommas(tTotalCapsrKkalingaAmount)}\n        </td>\n        <td className=\"text-center\">\n          {tTotalAssociateKkalinga}\n        </td>\n        <td className=\"text-center\">\n          {numberWithCommas(tTotalAssociateKkalingaAmount)}\n        </td>\n        <td className=\"text-center\">\n          {tTotalJvoKkalinga}\n        </td>\n        <td className=\"text-center\">\n          {numberWithCommas(tTotalJvoKkalingaAmount)}\n        </td>\n        <td className=\"text-center\">\n          {tKkalinga}\n        </td>\n        <td className=\"text-center\">\n          {numberWithCommas(tTotalKkalinga)}\n        </td>\n      </tr>\n    );\n\n    rows.push(\n      <tr>\n        <td>\n          <strong>\n            CALAMITY ASSISTANCE\n          </strong>\n        </td>\n        <td className=\"text-center\">\n          {tTotalKcoopCalamityAssistance}\n        </td>\n        <td className=\"text-center\">\n          {numberWithCommas(tTotalKcoopCalamityAssistanceAmount)}\n        </td>\n        <td className=\"text-center\">\n          {tTotalCapsrCalamityAssistance}\n        </td>\n        <td className=\"text-center\">\n          {numberWithCommas(tTotalCapsrCalamityAssistanceAmount)}\n        </td>\n        <td className=\"text-center\">\n          {tTotalAssociateCalamityAssistance}\n        </td>\n        <td className=\"text-center\">\n          {numberWithCommas(tTotalAssociateCalamityAssistanceAmount)}\n        </td>\n        <td className=\"text-center\">\n          {tTotalJvoCalamityAssistance}\n        </td>\n        <td className=\"text-center\">\n          {numberWithCommas(tTotalJvoCalamityAssistanceAmount)}\n        </td>\n        <td className=\"text-center\">\n          {tCalamityAssistance}\n        </td>\n        <td className=\"text-center\">\n          {numberWithCommas(tTotalCalamityAssistance)}\n        </td>\n      </tr>\n    );\n\n    rows.push(\n      <tr>\n        <td>\n          <strong>\n            KJSP\n          </strong>\n        </td>\n        <td className=\"text-center\">\n          {tTotalKcoopKjsp}\n        </td>\n        <td className=\"text-center\">\n          {numberWithCommas(tTotalKcoopKjspAmount)}\n        </td>\n        <td className=\"text-center\">\n          {tTotalCapsrKjsp}\n        </td>\n        <td className=\"text-center\">\n          {numberWithCommas(tTotalCapsrKjspAmount)}\n        </td>\n        <td className=\"text-center\">\n          {tTotalAssociateKjsp}\n        </td>\n        <td className=\"text-center\">\n          {numberWithCommas(tTotalAssociateKjspAmount)}\n        </td>\n        <td className=\"text-center\">\n          {tTotalJvoKjsp}\n        </td>\n        <td className=\"text-center\">\n          {numberWithCommas(tTotalJvoKjspAmount)}\n        </td>\n        <td className=\"text-center\">\n          {tKjsp}\n        </td>\n        <td className=\"text-center\">\n          {numberWithCommas(tTotalKjsp)}\n        </td>\n      </tr>\n    );\n\n    rows.push(\n      <tr style={{backgroundColor: \"#000\", color: \"#fff\"}}>\n        <td>\n          <strong>\n            Grand Total\n          </strong>\n        </td>\n        <td className=\"text-center\">\n          <strong>\n            {tTotalKcoopClaims}\n          </strong>\n        </td>\n        <td className=\"text-center\">\n          <strong>\n            {numberWithCommas(tTotalKcoopClaimsAmount)}\n          </strong>\n        </td>\n        <td className=\"text-center\">\n          <strong>\n            {tTotalCapsrClaims}\n          </strong>\n        </td>\n        <td className=\"text-center\">\n          <strong>\n            {numberWithCommas(tTotalCapsrClaimsAmount)}\n          </strong>\n        </td>\n        <td className=\"text-center\">\n          <strong>\n            {tTotalAssociateClaims}\n          </strong>\n        </td>\n        <td className=\"text-center\">\n          <strong>\n            {numberWithCommas(tTotalAssociateClaimsAmount)}\n          </strong>\n        </td>\n        <td className=\"text-center\">\n          <strong>\n            {tTotalJvoClaims}\n          </strong>\n        </td>\n        <td className=\"text-center\">\n          <strong>\n            {numberWithCommas(tTotalJvoClaimsAmount)}\n          </strong>\n        </td>\n        <td className=\"text-center\">\n          <strong>\n            {tTotalClaims}\n          </strong>\n        </td>\n        <td className=\"text-center\">\n          <strong>\n            {numberWithCommas(tTotalClaimsAmount)}\n          </strong>\n        </td>\n      </tr>\n    );\n\n    return (\n      <table className=\"table table-sm table-bordered\">\n        <tbody>\n          {rows}\n        </tbody>\n      </table>\n    );\n  }\n\n  renderOverviewTableUploadedDocuments(){\n    var areas   = this.state.data.areas;\n    var rows    = [];\n    var colSpan = 13;\n\n    var areaColor     = \"#bad5fd\";\n    var clusterColor  = \"#c5ffc1\";\n    var branchColor   = \"#797979\";\n\n    var tTotalNumberOfAttachFiles                     = 0.00;\n    var tTotalNumberOfActiveMembers                   = 0.00;\n    var tTotalPercentage                              = 0.00;\n    var tUploadDocummentsCountasOf                    = 0.00;\n\n    var kmbaAssociateTotalUploadDocuments             = 0;\n    var kmbaAssociateTotalNumberOfActiveMembers       = 0;\n    var kmbaAssociateTotalPercentage                  = 0;\n    var kmbaAssociateTotalDocummentsCountasOf         = 0;\n\n    var kcoopTotalUploadDocuments                     = 0;\n    var kcoopTotalNumberOfActiveMembers               = 0;\n    var kcoopTotalPercentage                          = 0;\n    var kcoopTotalDocummentsCountasOf                 = 0;\n   \n    rows.push(\n      <tr style={{backgroundColor: areaColor}}>\n        <th className=\"text-center\" colSpan={colSpan}>\n          <h4>        \n            UPLOADED DOCUMENTS FOR ASSOCIATE AND KCOOP SUMMARY\n          </h4>  \n        </th>\n      </tr>\n    );\n\n    rows.push(\n      <tr style={{backgroundColor: branchColor, color: \"white\"}}>\n        <th>\n          Area Name\n        </th>\n        <th className=\"text-center\">\n          UPLOADED DOCUMENTS\n        </th>\n        <th className=\"text-center\">\n          ACTIVE MEMBERS\n        </th>\n        <th className=\"text-center\">\n          UPLOADED PERCENTAGE\n        </th>\n        <th className=\"text-center\">\n          NOT UPLOADED PERCENTAGE\n        </th>\n        <th className=\"text-center\">\n          As Of (Uploaded Documents Counts)\n        </th>\n      </tr>\n    );\n\n    for(var i = 0; i < areas.length; i++) {\n      \n      var clusters    = areas[i].clusters;\n\n      var aTotalNumberOfAttachFiles        = 0.00;\n      var aTotalNumberOfActiveMembers      = 0.00;\n      var aTotalPercentage                 = 0.00;\n      var aUploadDocummentsCountasOf       = 0.00;\n      \n      for(var j = 0; j < clusters.length; j++) {\n        var branches  = clusters[j].branches;\n\n        var cTotalNumberOfAttachFiles    = 0.00;\n        var cTotalNumberOfActiveMembers  = 0.00;\n        var cTotalPercentage             = 0.00;\n        var cUploadDocummentsCountasOf   = 0.00;\n\n        for(var k = 0; k < branches.length; k++) {\n          if(k == 0) {\n            \n          }\n\n          cTotalNumberOfAttachFiles         += branches[k].data.number_of_attached_files;\n          cTotalNumberOfActiveMembers       += branches[k].data.number_of_active_members;\n          cUploadDocummentsCountasOf         = branches[k].data.uploaded_documents_counts_as_of;\n\n          aTotalNumberOfAttachFiles         += branches[k].data.number_of_attached_files;\n          aTotalNumberOfActiveMembers       += branches[k].data.number_of_active_members;\n          aUploadDocummentsCountasOf         = branches[k].data.uploaded_documents_counts_as_of;\n\n          if (i < 3) {\n            kmbaAssociateTotalUploadDocuments           += branches[k].data.number_of_attached_files;\n            kmbaAssociateTotalNumberOfActiveMembers     += branches[k].data.number_of_active_members;\n            kmbaAssociateTotalDocummentsCountasOf        = branches[k].data.uploaded_documents_counts_as_of;\n            var areaName = \"KMBA Associate\";\n          } else {\n            kcoopTotalUploadDocuments                   += branches[k].data.number_of_attached_files;\n            kcoopTotalNumberOfActiveMembers             += branches[k].data.number_of_active_members;\n            kcoopTotalDocummentsCountasOf                = branches[k].data.uploaded_documents_counts_as_of;\n            var areaName = \"KCOOP\";\n          }\n\n          tTotalNumberOfAttachFiles         += branches[k].data.number_of_attached_files;\n          tTotalNumberOfActiveMembers       += branches[k].data.number_of_active_members;\n          tUploadDocummentsCountasOf         = branches[k].data.uploaded_documents_counts_as_of;\n        }\n      }\n\n      rows.push(\n        <tr key={\"area-total-\" + areas[i].id}>\n          <th>\n           {areas[i].name}\n          </th>\n          <td className=\"text-center\">\n            {aTotalNumberOfAttachFiles}\n          </td>\n          <td className=\"text-center\">\n            {aTotalNumberOfActiveMembers}\n          </td>\n          <td className=\"text-center\">\n            {Math.round((aTotalNumberOfAttachFiles / aTotalNumberOfActiveMembers) * 100)}%\n          </td>\n          <td className=\"text-center\">\n            {Math.round((((aTotalNumberOfAttachFiles / aTotalNumberOfActiveMembers) * 100) - 100) * -1)}%\n          </td>\n          <td className=\"text-center\">\n            {aUploadDocummentsCountasOf}\n          </td>\n        </tr>\n      );\n    }\n\n    rows.push(\n      <tr key={\"subtotal-kmba-associate\"}>\n        <th>\n          KMBA Associate Sub Total \n        </th>\n        <th className=\"text-center\">\n          {kmbaAssociateTotalUploadDocuments}\n        </th>\n        <th className=\"text-center\">\n          {kmbaAssociateTotalNumberOfActiveMembers}\n        </th>\n        <th className=\"text-center\">\n          {Math.round((kmbaAssociateTotalUploadDocuments / kmbaAssociateTotalNumberOfActiveMembers) *100)}%\n        </th>\n        <th className=\"text-center\">\n          {Math.round((((kmbaAssociateTotalUploadDocuments / kmbaAssociateTotalNumberOfActiveMembers) *100) - 100) * -1)}%\n        </th>\n        <td className=\"text-center\">\n          {kmbaAssociateTotalDocummentsCountasOf} \n        </td>\n      </tr>\n    );\n\n    rows.push(\n      <tr key={\"subtotal-kcoop\"}>\n        <th>\n          KCOOP Sub Total \n        </th>\n        <th className=\"text-center\">\n          {kcoopTotalUploadDocuments}\n        </th>\n        <th className=\"text-center\">\n          {kcoopTotalNumberOfActiveMembers}\n        </th>\n        <th className=\"text-center\">\n           {Math.round((kcoopTotalUploadDocuments / kcoopTotalNumberOfActiveMembers) * 100)}%\n        </th>\n        <th className=\"text-center\">\n           {Math.round((((kcoopTotalUploadDocuments / kcoopTotalNumberOfActiveMembers) * 100) - 100) * -1)}%\n        </th>\n        <td className=\"text-center\">\n          {kcoopTotalDocummentsCountasOf} \n        </td>\n      </tr>\n    );\n\n    rows.push(\n      <tr key={\"grand-total\"} style={{backgroundColor: \"#000\", color: \"#fff\"}}>\n        <td>\n          <strong>\n            Grand Total\n          </strong>\n        </td>\n        <td className=\"text-center\">\n          <strong>\n            {tTotalNumberOfAttachFiles}\n          </strong>\n        </td>\n        <td className=\"text-center\">\n          <strong>\n            {tTotalNumberOfActiveMembers}\n          </strong>\n        </td>\n        <td className=\"text-center\">\n          <strong>\n            {Math.round((tTotalNumberOfAttachFiles / tTotalNumberOfActiveMembers) * 100)}%\n          </strong>\n        </td>\n        <td className=\"text-center\">\n          <strong>\n            {Math.round((((tTotalNumberOfAttachFiles / tTotalNumberOfActiveMembers) * 100) - 100) * -1)}%\n          </strong>\n        </td>\n        <td className=\"text-center\">\n          {tUploadDocummentsCountasOf}\n        </td>\n      </tr>\n    );\n\n    return (\n      <table className=\"table table-sm table-bordered\">\n        <tbody>\n          {rows}\n        </tbody>\n      </table>\n    );\n  }\n\n  renderOverviewTableUploadedDocumentsCounts() {\n    var areas   = this.state.data.areas;\n    var rows    = [];\n    var colSpan = 13;\n\n    var areaColor     = \"#bad5fd\";\n    var clusterColor  = \"#c5ffc1\";\n    var branchColor   = \"#797979\";\n\n    var tTotalUploadedFIle                = 0.00;\n    var tTotalActiveMember                = 0.00;\n    var tTotalPercentage                  = 0.00;\n\n    var tUploadedFile                     = 0;\n    var tActiveMember                     = 0;\n    var tPercentage                       = 0;\n   \n    rows.push(\n      <tr style={{backgroundColor: areaColor}}>\n        <th className=\"text-center\" colSpan={colSpan}>\n          <h4>        \n            UPLOADED DOCUMENTS COUNTS PER BRANCH\n          </h4>  \n        </th>\n      </tr>\n    );\n\n    rows.push(\n      <tr style={{backgroundColor: branchColor, color: \"white\"}}>\n        <th>\n          Branch Name\n        </th>\n        <th className=\"text-center\">\n          UPLOADED DOCUMENTS\n        </th>\n        <th className=\"text-center\">\n          ACTIVE MEMBERS\n        </th>\n        <th className=\"text-center\">\n          UPLOADED PERCENTAGE\n        </th>\n        <th className=\"text-center\">\n          NOT UPLOADED PERCENTAGE\n        </th>\n        <th>\n          As Of (Uploaded Documents Counts)\n        </th>\n      </tr>\n    );\n\n    for(var i = 0; i < areas.length; i++) {\n     \n      var clusters    = areas[i].clusters;\n\n      for(var j = 0; j < clusters.length; j++) {\n\n        var branches  = clusters[j].branches;\n\n        for(var k = 0; k < branches.length; k++) {\n    \n          tTotalUploadedFIle                += branches[k].data.total_uploaded_documents_counts;\n          tTotalActiveMember                += branches[k].data.total_active_members;\n          tTotalPercentage                  += branches[k].data.total_percentage;\n          tUploadedFile                     += branches[k].data.number_of_attached_files;\n          tActiveMember                     += branches[k].data.number_of_active_members;\n          tPercentage                       += branches[k].data.percentage;\n          \n\n          rows.push(\n            <tr key={\"branch-\" + branches[k].id}>\n              <td>\n                <strong>\n                  {branches[k].name}\n                </strong>\n              </td>\n              <td className=\"text-center\">\n                {branches[k].data.number_of_attached_files}\n              </td>\n              <td className=\"text-center\">\n                {branches[k].data.number_of_active_members}\n              </td>\n              <td className=\"text-center\">\n                {branches[k].data.percentage}%\n              </td>\n              <td className=\"text-center\">\n                {(branches[k].data.percentage - 100) * -1}%\n              </td>\n              <td className=\"text-center\">\n                {branches[k].data.uploaded_documents_counts_as_of}\n              </td>\n            </tr>\n          );\n        }\n      }\n    }\n\n    rows.push(\n      <tr style={{backgroundColor: \"#696\", color: \"#fff\"}}>\n        <td>\n          <strong>\n            Grand Total\n          </strong>\n        </td>\n        <td className=\"text-center\">\n          <strong>\n            {tUploadedFile}\n          </strong>\n        </td>\n        <td className=\"text-center\">\n          <strong>\n            {tActiveMember}\n          </strong>\n        </td>\n        <td className=\"text-center\">\n          <strong>\n            {tTotalPercentage = tUploadedFile * 100 / tActiveMember}\n          </strong>\n        </td>\n        <td className=\"text-center\">\n          <strong>\n            {(((tTotalPercentage = tUploadedFile * 100 / tActiveMember) - 100) * -1)}\n          </strong>\n        </td>\n        <td>\n        </td>\n      </tr>\n    );\n\n    return (\n      <table className=\"table table-sm table-bordered\">\n        <tbody>\n          {rows}\n        </tbody>\n      </table>\n    );\n  }\n\n  render() {\n    if(this.state.isLoading) {\n      return (\n        <div>\n          <SkCubeLoading/>\n          <center>\n            <h6>\n              Loading Overview...\n            </h6>\n          </center>\n        </div>\n      );\n    } else {\n      return (\n        <div>\n          <h4>\n            Overview\n          </h4>\n          <div className=\"row\">\n            <div className=\"col-md-10 col-xs-12\">\n              <div className=\"form-group\">\n                <input\n                  type=\"date\"\n                  className=\"form-control\"\n                  disabled={this.state.isFetching}\n                  value={this.state.asOf}\n                  onChange={this.handleAsOfChanged.bind(this)}\n                />\n              </div>\n            </div>\n            <div className=\"col-md-2 col-xs-12\">\n              <div className=\"form-group\">\n                <button \n                  className=\"btn btn-info btn-block\"\n                  disabled={this.state.isFetching}\n                  onClick={this.handleSyncClicked.bind(this)}\n                >\n                  <span className=\"fa fa-sync\"/>\n                  Sync\n                </button>\n              </div>\n            </div>\n          </div>\n          {this.renderOverviewTable()}\n          <br />\n          {this.renderOverviewTableSummary()}\n          <br />\n          {this.renderOverviewTableClaimsSummary()}\n          <br />\n          {this.renderOverviewTableClaims()}\n          <br />\n          {this.renderOverviewTableUploadedDocuments()}\n          <br />\n          {this.renderOverviewTableUploadedDocumentsCounts()}\n        </div>\n      );\n    }\n  }\n}", "import React from 'react';\nimport axios from 'axios';\n\nimport MapOverview from './MapOverview';\nimport SkCubeLoading from '../SkCubeLoading';\nimport {numberAsPercent, numberWithCommas} from '../utils/helpers';\n\nexport default class ManagementOverview extends React.Component {\n  constructor(props) {\n    super(props);\n\n    this.state  = {\n      isLoading: true,\n      isFetching: false,\n      data: false,\n      asOf: \"\",\n    }\n  }\n\n  componentDidMount() {\n    this.fetch();\n  }\n\n  fetch() {\n    var context = this;\n\n    axios.get(\n      '/api/dashboard/overview?as_of=' + this.state.asOf,\n      {\n        headers: {\n          \"X-KOINS-HQ-TOKEN\": this.props.token\n        }\n      }\n    ).then((res) => {\n      context.setState({\n        isLoading: false,\n        isFetching: false,\n        data: res.data\n      })\n    }).catch((error) => {\n      console.log(error);\n      alert(\"Error in fetching dashboard overview\");\n    })\n  }\n\n  handleSyncClicked() {\n    this.setState({\n      isFetching: true\n    });\n\n    this.fetch();\n  }\n\n  handleAsOfChanged(event) {\n    this.setState({\n      asOf: event.target.value\n    });\n  }\n\n  renderOverviewTable() {\n    var areas   = this.state.data.areas;\n    var rows    = [];\n    var colSpan = 12;\n\n    var areaColor     = \"#bad5fd\";\n    var totalColor    = \"#c5ffc1\";\n    var branchColor   = \"#797979\";\n    var clusterColor  = \"#f3cf99\";\n\n    var tPrincipal        = 0.00;\n    var tPrincipalPaid    = 0.00;\n    var tPortfolio        = 0.00;\n    var tPastDueAmount    = 0.00;\n    var tParAmount        = 0.00;\n    var tPrincipalPaidDue = 0.00;\n    var tPrincipalDue     = 0.00;\n    var tPureSavers       = 0;\n    var tActiveLoaners    = 0;\n    var tActiveMembers    = 0;\n    var tInactiveMembers  = 0;\n    var inactive_members  = 0;\n\n    for(var i = 0; i < areas.length; i++) {\n      rows.push(\n        <tr key={\"area-\" + areas[i].id} style={{backgroundColor: areaColor}}>\n          <th className=\"text-center\" colSpan={colSpan}>\n            {areas[i].name}\n          </th>\n        </tr>\n      );\n     \n\n      var clusters    = areas[i].clusters;\n\n      var aPrincipal        = 0.00;\n      var aPrincipalPaid    = 0.00;\n      var aPortfolio        = 0.00;\n      var aPastDueAmount    = 0.00;\n      var aParAmount        = 0.00;\n      var aPrincipalPaidDue = 0.00;\n      var aPrincipalDue     = 0.00;\n      var aPureSavers       = 0;\n      var aActiveLoaners    = 0;\n      var aActiveMembers    = 0;\n      var aInactiveMembers   = 0;\n\n      for(var j = 0; j < clusters.length; j++) {\n        rows.push(\n          <tr key={\"cluster-\" + clusters[j].id} style={{backgroundColor: clusterColor}}>\n            <th className=\"text-center\" colSpan={colSpan}>\n              {clusters[j].name}\n            </th>\n          </tr>\n        );\n\n        var branches  = clusters[j].branches;\n\n        var cPrincipal        = 0.00;\n        var cPrincipalPaid    = 0.00;\n        var cPortfolio        = 0.00;\n        var cPastDueAmount    = 0.00;\n        var cParAmount        = 0.00;\n        var cPrincipalPaidDue = 0.00;\n        var cPrincipalDue     = 0.00;\n        var cPureSavers       = 0;\n        var cActiveLoaners    = 0;\n        var cActiveMembers    = 0;\n        var cInactiveMembers  = 0;\n\n        for(var k = 0; k < branches.length; k++) {\n          if(k == 0) {\n            rows.push(\n              <tr key={\"header-\" + branches[k].id} style={{backgroundColor: branchColor, color: \"white\"}}>\n                <th>\n                  Branch Name\n                </th>\n                <th className=\"text-end\">\n                  Portfolio\n                </th>\n                <th className=\"text-end\">\n                  Past Due Amount\n                </th>\n                <th className=\"text-end\">\n                  PAR Amount\n                </th>\n                <th className=\"\">\n                  PAR Rate\n                </th>\n                <th className=\"\">\n                  RR\n                </th>\n                <th className=\"text-center\">\n                  Pure Savers\n                </th>\n                <th className=\"text-center\">\n                  Active Borrowers\n                </th>\n                <th className=\"text-center\">\n                  New Members\n                </th>\n                <th className=\"text-center\">\n                  Non-patronizing Members\n                </th>\n                <th>\n                  As Of\n                </th>\n              </tr>\n            );\n          }\n          \n          \n          \n          cPrincipal        += branches[k].data.principal;\n          cPrincipalPaid    += branches[k].data.principal_paid;\n          cPortfolio        += branches[k].data.portfolio;\n          cPastDueAmount    += branches[k].data.principal_balance;\n          cParAmount        += branches[k].data.par_amount;\n          cPrincipalPaidDue += branches[k].data.principal_paid_due;\n          cPrincipalDue     += branches[k].data.principal_due;\n          cPureSavers       += branches[k].data.pure_savers.total;\n          cActiveLoaners    += branches[k].data.loaners.total;\n          cActiveMembers    += branches[k].data.active_members.total;\n\n          \n\n          aPrincipal        += branches[k].data.principal;\n          aPrincipalPaid    += branches[k].data.principal_paid;\n          aPortfolio        += branches[k].data.portfolio;\n          aPastDueAmount    += branches[k].data.principal_balance;\n          aParAmount        += branches[k].data.par_amount;\n          aPrincipalPaidDue += branches[k].data.principal_paid_due;\n          aPrincipalDue     += branches[k].data.principal_due;\n          aPureSavers       += branches[k].data.pure_savers.total;\n          aActiveLoaners    += branches[k].data.loaners.total;\n          aActiveMembers    += branches[k].data.active_members.total;\n          \n\n          tPrincipal        += branches[k].data.principal;\n          tPrincipalPaid    += branches[k].data.principal_paid;\n          tPortfolio        += branches[k].data.portfolio;\n          tPastDueAmount    += branches[k].data.principal_balance;\n          tParAmount        += branches[k].data.par_amount;\n          tPrincipalPaidDue += branches[k].data.principal_paid_due;\n          tPrincipalDue     += branches[k].data.principal_due;\n          tPureSavers       += branches[k].data.pure_savers.total;\n          tActiveLoaners    += branches[k].data.loaners.total;\n          tActiveMembers    += branches[k].data.active_members.total;\n        \n          cInactiveMembers  += branches[k].data.inactive_members.total;\n          aInactiveMembers  += branches[k].data.inactive_members.total;\n          tInactiveMembers  += branches[k].data.inactive_members.total;\n            \n          rows.push(\n            <tr key={\"branch-\" + branches[k].id}>\n              <td>\n                <strong>\n                  {branches[k].name}\n                </strong>\n              </td>\n              <td className=\"text-end\">\n                {numberWithCommas(branches[k].data.portfolio)}\n              </td>\n              <td className=\"text-end\">\n                {numberWithCommas(branches[k].data.principal_balance)}\n              </td>\n              <td className=\"text-end\">\n                {numberWithCommas(branches[k].data.par_amount)}\n              </td>\n              <td className=\"\">\n                {numberAsPercent(branches[k].data.par)}\n              </td>\n              <td className=\"\">\n                {numberAsPercent(branches[k].data.principal_rr)}\n              </td>\n              <td className=\"text-center\">\n                {branches[k].data.pure_savers.total}\n              </td>\n              <td className=\"text-center\">\n                {branches[k].data.loaners.total}\n              </td>\n              <td className=\"text-center\">\n                {branches[k].data.active_members.total}\n              </td>\n              <td className=\"text-center\">\n                {branches[k].data.inactive_members.total}\n              </td>\n              <td>\n                {branches[k].data.as_of}\n              </td>\n            </tr>\n          );\n        }\n\n        // Cluster level total\n        var cPrincipalRR  = (cPrincipalPaidDue / cPrincipalDue);\n\n        if(cPrincipalPaidDue <= 0) {\n          cPrincipalRR = 0.00;\n        }\n\n        if(cPrincipalRR > 1) {\n          cPrincipalRR = 1;\n        }\n\n        if(cPrincipalRR >= 1 && cPrincipalPaid < cPrincipalDue) {\n          cPrincipalRR = 0.99;\n        }\n\n        var cPrincipalBalance = (cPrincipalDue - cPrincipalPaid);\n        var cPar              = (cParAmount / cPortfolio);\n\n        rows.push(\n          <tr key={\"cluster-total-\" + clusters[j].id} style={{backgroundColor: totalColor}}>\n            <td>\n              <strong>\n                {clusters[j].name} Total\n              </strong>\n            </td>\n            <td className=\"text-end\">\n              <strong>\n                {numberWithCommas(cPortfolio)}\n              </strong>\n            </td>\n            <td className=\"text-end\">\n              <strong>\n                {numberWithCommas(cPastDueAmount)}\n              </strong>\n            </td>\n            <td className=\"text-end\">\n              <strong>\n                {numberWithCommas(cParAmount)}\n              </strong>\n            </td>\n            <td>\n              <strong>\n                {numberAsPercent(cPar)}\n              </strong>\n            </td>\n            <td>\n              <strong>\n                {numberAsPercent(cPrincipalRR)}\n              </strong>\n            </td>\n            <td className=\"text-center\">\n              <strong>\n                {cPureSavers}\n              </strong>\n            </td>\n            <td className=\"text-center\">\n              <strong>\n                {cActiveLoaners}\n              </strong>\n            </td>\n            <td className=\"text-center\">\n              <strong>\n                {cActiveMembers}\n              </strong>\n            </td>\n            <td className=\"text-center\">\n            <strong>\n                {cInactiveMembers}\n              </strong>\n            </td>\n            <td>\n            </td>\n          </tr>\n        );\n      }\n\n      // Area level total\n      var aPrincipalRR  = (aPrincipalPaidDue / aPrincipalDue);\n\n      if(aPrincipalPaidDue <= 0) {\n        aPrincipalRR = 0.00;\n      }\n\n      if(aPrincipalRR > 1) {\n        aPrincipalRR = 1;\n      }\n\n      if(aPrincipalRR >= 1 && aPrincipalPaid < aPrincipalDue) {\n        aPrincipalRR = 0.99;\n      }\n\n      var aPrincipalBalance = (aPrincipalDue - aPrincipalPaid);\n      var aPar              = (aParAmount / aPortfolio);\n\n      rows.push(\n        <tr key={\"area-total-\" + areas[i].id} style={{backgroundColor: areaColor}}>\n          <td>\n            <strong>\n              {areas[i].name} Total\n            </strong>\n          </td>\n          <td className=\"text-end\">\n            <strong>\n              {numberWithCommas(aPortfolio)}\n            </strong>\n          </td>\n          <td className=\"text-end\">\n            <strong>\n              {numberWithCommas(aPastDueAmount)}\n            </strong>\n          </td>\n          <td className=\"text-end\">\n            <strong>\n              {numberWithCommas(aParAmount)}\n            </strong>\n          </td>\n          <td>\n            <strong>\n              {numberAsPercent(aPar)}\n            </strong>\n          </td>\n          <td>\n            <strong>\n              {numberAsPercent(aPrincipalRR)}\n            </strong>\n          </td>\n          <td className=\"text-center\">\n            <strong>\n              {aPureSavers}\n            </strong>\n          </td>\n          <td className=\"text-center\">\n            <strong>\n              {aActiveLoaners}\n            </strong>\n          </td>\n          <td className=\"text-center\">\n            <strong>\n              {aActiveMembers}\n            </strong>\n          </td>\n           <td className=\"text-center\">\n            <strong>\n              {aInactiveMembers}\n            </strong>\n          </td>\n           <td>\n          </td>\n        </tr>\n      );\n    }\n\n    // Grand total\n    var tPrincipalRR  = (tPrincipalPaidDue / tPrincipalDue);\n\n    if(tPrincipalPaidDue <= 0) {\n      tPrincipalRR = 0.00;\n    }\n\n    if(tPrincipalRR > 1) {\n      tPrincipalRR = 1;\n    }\n\n    if(tPrincipalRR >= 1 && tPrincipalPaid < tPrincipalDue) {\n      tPrincipalRR = 0.99;\n    }\n\n    var tPrincipalBalance = (tPrincipalDue - tPrincipalPaid);\n    var tPar              = (tParAmount / tPortfolio);\n\n    rows.push(\n      <tr key={\"grand-total\"} style={{backgroundColor: \"#000\", color: \"#fff\"}}>\n        <td>\n          <strong>\n            Grand Total\n          </strong>\n        </td>\n        <td className=\"text-end\">\n          <strong>\n            {numberWithCommas(tPortfolio)}\n          </strong>\n        </td>\n        <td className=\"text-end\">\n          <strong>\n            {numberWithCommas(tPastDueAmount)}\n          </strong>\n        </td>\n        <td className=\"text-end\">\n          <strong>\n            {numberWithCommas(tParAmount)}\n          </strong>\n        </td>\n        <td>\n          <strong>\n            {numberAsPercent(tPar)}\n          </strong>\n        </td>\n        <td>\n          <strong>\n            {numberAsPercent(tPrincipalRR)}\n          </strong>\n        </td>\n        <td className=\"text-center\">\n          <strong>\n            {tPureSavers}\n          </strong>\n        </td>\n        <td className=\"text-center\">\n          <strong>\n            {tActiveLoaners}\n          </strong>\n        </td>\n        <td className=\"text-center\">\n          <strong>\n            {tActiveMembers}\n          </strong>\n        </td>\n        <td className=\"text-center\">\n          <strong>\n            {tInactiveMembers}\n          </strong>\n        </td>\n        <td>\n        </td>\n      </tr>\n    );\n\n    return (\n      <div className=\"table-responsive\">\n        <table className=\"table table-sm table-bordered\">\n          <tbody>\n            {rows}\n          </tbody>\n        </table>\n      </div>\n    );\n  }\n\n  render() {\n    if(this.state.isLoading) {\n      return (\n        <div>\n          <SkCubeLoading/>\n          <center>\n            <h6>\n              Loading Overview...\n            </h6>\n          </center>\n        </div>\n      );\n    } else {\n      return (\n        <>\n          <div className=\"row\">\n            <div className=\"col-md-10 col-xs-12\">\n              <div className=\"form-group\">\n                <input\n                  type=\"date\"\n                  className=\"form-control\"\n                  disabled={this.state.isFetching}\n                  value={this.state.asOf}\n                  onChange={this.handleAsOfChanged.bind(this)}\n                />\n              </div>\n            </div>\n            <div className=\"col-md-2 col-xs-12\">\n              <div className=\"d-grid gap-2\">\n                <button \n                  className=\"btn btn-primary btn-block\"\n                  disabled={this.state.isFetching}\n                  onClick={this.handleSyncClicked.bind(this)}\n                >\n                  <span className=\"bi bi-arrow-repeat\"/>\n                  Sync\n                </button>\n              </div>\n            </div>\n          </div>\n          {/* <MapOverview\n            token={this.props.token}\n            data={this.state.data}\n          /> */}\n          <hr/>\n          {this.renderOverviewTable()}\n        </>\n      );\n    }\n  }\n}\n", "import React, { useState, useEffect } from \"react\";\nimport Modal from 'react-bootstrap/Modal';\nimport {\n  MapContainer,\n  Marker,\n  Popup,\n  TileLayer,\n  useMap\n} from 'react-leaflet';\nimport axios from \"axios\";\nimport {numberAsPercent, numberWithCommas} from '../utils/helpers';\n\nexport default function MapOverview(props) {\n  const [centerLat, setCenterLat] = useState(props.centerLat || 14.6091);\n  const [centerLon, setCenterLon] = useState(props.centerLon || 121.0223);\n\n  return (\n    <>\n      <MapContainer\n        center={[centerLat, centerLon]}\n        zoom={13}\n        scrollWheelZoom={true}\n        style={{\n          height: \"600px\"\n        }}\n      >\n        <TileLayer\n          attribution='&copy; <a href=\"https://www.openstreetmap.org/copyright\">OpenStreetMap</a> contributors'\n          url=\"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png\"\n        />\n        {(() => {\n          branchData = [];\n\n          props.data.areas.forEach((area) => {\n            area.clusters.forEach((cluster) => {\n              cluster.branches.forEach((branch) => {\n                branchData.push(branch);\n              });\n            })\n          });\n\n          return (\n            branchData.map((branchMarker) => {\n              return (\n                <Marker\n                  key={`branch-marker-${branchMarker.id}`}\n                  position={{ lat: branchMarker.lat, lng: branchMarker.lon }}\n                >\n                  <Popup\n                    maxHeight=\"auto\"\n                  >\n                    <div className=\"card\">\n                      <div className=\"card-body\">\n                        <h4>\n                          {branchMarker.name}\n                        </h4>\n                        <hr/>\n                        <table className=\"table table-bordered table-sm\"> \n                          <tbody>\n                            <tr>\n                              <th>\n                                <strong>\n                                  Portfolio\n                                </strong>\n                              </th>\n                              <td>\n                                {numberWithCommas(branchMarker.data.portfolio)}\n                              </td>\n                            </tr>\n                            <tr>\n                              <th>\n                                <strong>\n                                  Past Due Amount\n                                </strong>\n                              </th>\n                              <td>\n                                {numberWithCommas(branchMarker.data.principal_balance)}\n                              </td>\n                            </tr>\n                            <tr>\n                              <th>\n                                <strong>\n                                  PAR Amount\n                                </strong>\n                              </th>\n                              <td>\n                                {numberWithCommas(branchMarker.data.par_amount)}\n                              </td>\n                            </tr>\n                            <tr>\n                              <th>\n                                <strong>\n                                  PAR Rate\n                                </strong>\n                              </th>\n                              <td>\n                                {numberAsPercent(branchMarker.data.par)}\n                              </td>\n                            </tr>\n                            <tr>\n                              <th>\n                                <strong>\n                                  RR\n                                </strong>\n                              </th>\n                              <td>\n                                {numberAsPercent(branchMarker.data.principal_rr)}\n                              </td>\n                            </tr>\n                            <tr>\n                              <th>\n                                <strong>\n                                  Pure Savers\n                                </strong>\n                              </th>\n                              <td>\n                                {branchMarker.data.pure_savers.total}\n                              </td>\n                            </tr>\n                            <tr>\n                              <th>\n                                <strong>\n                                  Active Borrowers\n                                </strong>\n                              </th>\n                              <td>\n                                {branchMarker.data.loaners.total}\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                    </div>\n                  </Popup>\n                </Marker>\n              )\n            })\n          )\n        })()}\n      </MapContainer>\n      <hr/>\n    </>\n  )\n}\n", "import classNames from 'classnames';\nimport addEventListener from 'dom-helpers/addEventListener';\nimport canUseDOM from 'dom-helpers/canUseDOM';\nimport ownerDocument from 'dom-helpers/ownerDocument';\nimport removeEventListener from 'dom-helpers/removeEventListener';\nimport getScrollbarSize from 'dom-helpers/scrollbarSize';\nimport useCallbackRef from '@restart/hooks/useCallbackRef';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport useMergedRefs from '@restart/hooks/useMergedRefs';\nimport useWillUnmount from '@restart/hooks/useWillUnmount';\nimport transitionEnd from 'dom-helpers/transitionEnd';\nimport * as React from 'react';\nimport { useCallback, useMemo, useRef, useState } from 'react';\nimport BaseModal from '@restart/ui/Modal';\nimport { getSharedManager } from './BootstrapModalManager';\nimport Fade from './Fade';\nimport ModalBody from './ModalBody';\nimport ModalContext from './ModalContext';\nimport ModalDialog from './ModalDialog';\nimport ModalFooter from './ModalFooter';\nimport ModalHeader from './ModalHeader';\nimport ModalTitle from './ModalTitle';\nimport { useBootstrapPrefix, useIsRTL } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n/* eslint-disable no-use-before-define, react/no-multi-comp */\nfunction DialogTransition(props) {\n  return /*#__PURE__*/_jsx(Fade, {\n    ...props,\n    timeout: null\n  });\n}\nfunction BackdropTransition(props) {\n  return /*#__PURE__*/_jsx(Fade, {\n    ...props,\n    timeout: null\n  });\n}\n\n/* eslint-enable no-use-before-define */\nconst Modal = /*#__PURE__*/React.forwardRef(({\n  bsPrefix,\n  className,\n  style,\n  dialogClassName,\n  contentClassName,\n  children,\n  dialogAs: Dialog = ModalDialog,\n  'aria-labelledby': ariaLabelledby,\n  'aria-describedby': ariaDescribedby,\n  'aria-label': ariaLabel,\n  /* BaseModal props */\n\n  show = false,\n  animation = true,\n  backdrop = true,\n  keyboard = true,\n  onEscapeKeyDown,\n  onShow,\n  onHide,\n  container,\n  autoFocus = true,\n  enforceFocus = true,\n  restoreFocus = true,\n  restoreFocusOptions,\n  onEntered,\n  onExit,\n  onExiting,\n  onEnter,\n  onEntering,\n  onExited,\n  backdropClassName,\n  manager: propsManager,\n  ...props\n}, ref) => {\n  const [modalStyle, setStyle] = useState({});\n  const [animateStaticModal, setAnimateStaticModal] = useState(false);\n  const waitingForMouseUpRef = useRef(false);\n  const ignoreBackdropClickRef = useRef(false);\n  const removeStaticModalAnimationRef = useRef(null);\n  const [modal, setModalRef] = useCallbackRef();\n  const mergedRef = useMergedRefs(ref, setModalRef);\n  const handleHide = useEventCallback(onHide);\n  const isRTL = useIsRTL();\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'modal');\n  const modalContext = useMemo(() => ({\n    onHide: handleHide\n  }), [handleHide]);\n  function getModalManager() {\n    if (propsManager) return propsManager;\n    return getSharedManager({\n      isRTL\n    });\n  }\n  function updateDialogStyle(node) {\n    if (!canUseDOM) return;\n    const containerIsOverflowing = getModalManager().getScrollbarWidth() > 0;\n    const modalIsOverflowing = node.scrollHeight > ownerDocument(node).documentElement.clientHeight;\n    setStyle({\n      paddingRight: containerIsOverflowing && !modalIsOverflowing ? getScrollbarSize() : undefined,\n      paddingLeft: !containerIsOverflowing && modalIsOverflowing ? getScrollbarSize() : undefined\n    });\n  }\n  const handleWindowResize = useEventCallback(() => {\n    if (modal) {\n      updateDialogStyle(modal.dialog);\n    }\n  });\n  useWillUnmount(() => {\n    removeEventListener(window, 'resize', handleWindowResize);\n    removeStaticModalAnimationRef.current == null ? void 0 : removeStaticModalAnimationRef.current();\n  });\n\n  // We prevent the modal from closing during a drag by detecting where the\n  // click originates from. If it starts in the modal and then ends outside\n  // don't close.\n  const handleDialogMouseDown = () => {\n    waitingForMouseUpRef.current = true;\n  };\n  const handleMouseUp = e => {\n    if (waitingForMouseUpRef.current && modal && e.target === modal.dialog) {\n      ignoreBackdropClickRef.current = true;\n    }\n    waitingForMouseUpRef.current = false;\n  };\n  const handleStaticModalAnimation = () => {\n    setAnimateStaticModal(true);\n    removeStaticModalAnimationRef.current = transitionEnd(modal.dialog, () => {\n      setAnimateStaticModal(false);\n    });\n  };\n  const handleStaticBackdropClick = e => {\n    if (e.target !== e.currentTarget) {\n      return;\n    }\n    handleStaticModalAnimation();\n  };\n  const handleClick = e => {\n    if (backdrop === 'static') {\n      handleStaticBackdropClick(e);\n      return;\n    }\n    if (ignoreBackdropClickRef.current || e.target !== e.currentTarget) {\n      ignoreBackdropClickRef.current = false;\n      return;\n    }\n    onHide == null ? void 0 : onHide();\n  };\n  const handleEscapeKeyDown = e => {\n    if (keyboard) {\n      onEscapeKeyDown == null ? void 0 : onEscapeKeyDown(e);\n    } else {\n      // Call preventDefault to stop modal from closing in @restart/ui.\n      e.preventDefault();\n      if (backdrop === 'static') {\n        // Play static modal animation.\n        handleStaticModalAnimation();\n      }\n    }\n  };\n  const handleEnter = (node, isAppearing) => {\n    if (node) {\n      updateDialogStyle(node);\n    }\n    onEnter == null ? void 0 : onEnter(node, isAppearing);\n  };\n  const handleExit = node => {\n    removeStaticModalAnimationRef.current == null ? void 0 : removeStaticModalAnimationRef.current();\n    onExit == null ? void 0 : onExit(node);\n  };\n  const handleEntering = (node, isAppearing) => {\n    onEntering == null ? void 0 : onEntering(node, isAppearing);\n\n    // FIXME: This should work even when animation is disabled.\n    addEventListener(window, 'resize', handleWindowResize);\n  };\n  const handleExited = node => {\n    if (node) node.style.display = ''; // RHL removes it sometimes\n    onExited == null ? void 0 : onExited(node);\n\n    // FIXME: This should work even when animation is disabled.\n    removeEventListener(window, 'resize', handleWindowResize);\n  };\n  const renderBackdrop = useCallback(backdropProps => /*#__PURE__*/_jsx(\"div\", {\n    ...backdropProps,\n    className: classNames(`${bsPrefix}-backdrop`, backdropClassName, !animation && 'show')\n  }), [animation, backdropClassName, bsPrefix]);\n  const baseModalStyle = {\n    ...style,\n    ...modalStyle\n  };\n\n  // If `display` is not set to block, autoFocus inside the modal fails\n  // https://github.com/react-bootstrap/react-bootstrap/issues/5102\n  baseModalStyle.display = 'block';\n  const renderDialog = dialogProps => /*#__PURE__*/_jsx(\"div\", {\n    role: \"dialog\",\n    ...dialogProps,\n    style: baseModalStyle,\n    className: classNames(className, bsPrefix, animateStaticModal && `${bsPrefix}-static`, !animation && 'show'),\n    onClick: backdrop ? handleClick : undefined,\n    onMouseUp: handleMouseUp,\n    \"aria-label\": ariaLabel,\n    \"aria-labelledby\": ariaLabelledby,\n    \"aria-describedby\": ariaDescribedby,\n    children: /*#__PURE__*/_jsx(Dialog, {\n      ...props,\n      onMouseDown: handleDialogMouseDown,\n      className: dialogClassName,\n      contentClassName: contentClassName,\n      children: children\n    })\n  });\n  return /*#__PURE__*/_jsx(ModalContext.Provider, {\n    value: modalContext,\n    children: /*#__PURE__*/_jsx(BaseModal, {\n      show: show,\n      ref: mergedRef,\n      backdrop: backdrop,\n      container: container,\n      keyboard: true // Always set true - see handleEscapeKeyDown\n      ,\n      autoFocus: autoFocus,\n      enforceFocus: enforceFocus,\n      restoreFocus: restoreFocus,\n      restoreFocusOptions: restoreFocusOptions,\n      onEscapeKeyDown: handleEscapeKeyDown,\n      onShow: onShow,\n      onHide: onHide,\n      onEnter: handleEnter,\n      onEntering: handleEntering,\n      onEntered: onEntered,\n      onExit: handleExit,\n      onExiting: onExiting,\n      onExited: handleExited,\n      manager: getModalManager(),\n      transition: animation ? DialogTransition : undefined,\n      backdropTransition: animation ? BackdropTransition : undefined,\n      renderBackdrop: renderBackdrop,\n      renderDialog: renderDialog\n    })\n  });\n});\nModal.displayName = 'Modal';\nexport default Object.assign(Modal, {\n  Body: ModalBody,\n  Header: ModalHeader,\n  Title: ModalTitle,\n  Footer: ModalFooter,\n  Dialog: ModalDialog,\n  TRANSITION_DURATION: 300,\n  BACKDROP_TRANSITION_DURATION: 150\n});", "export default !!(typeof window !== 'undefined' && window.document && window.document.createElement);", "/* eslint-disable no-return-assign */\nimport canUseDOM from './canUseDOM';\nexport var optionsSupported = false;\nexport var onceSupported = false;\n\ntry {\n  var options = {\n    get passive() {\n      return optionsSupported = true;\n    },\n\n    get once() {\n      // eslint-disable-next-line no-multi-assign\n      return onceSupported = optionsSupported = true;\n    }\n\n  };\n\n  if (canUseDOM) {\n    window.addEventListener('test', options, options);\n    window.removeEventListener('test', options, true);\n  }\n} catch (e) {\n  /* */\n}\n\n/**\n * An `addEventListener` ponyfill, supports the `once` option\n * \n * @param node the element\n * @param eventName the event name\n * @param handle the handler\n * @param options event options\n */\nfunction addEventListener(node, eventName, handler, options) {\n  if (options && typeof options !== 'boolean' && !onceSupported) {\n    var once = options.once,\n        capture = options.capture;\n    var wrappedHandler = handler;\n\n    if (!onceSupported && once) {\n      wrappedHandler = handler.__once || function onceHandler(event) {\n        this.removeEventListener(eventName, onceHandler, capture);\n        handler.call(this, event);\n      };\n\n      handler.__once = wrappedHandler;\n    }\n\n    node.addEventListener(eventName, wrappedHandler, optionsSupported ? options : capture);\n  }\n\n  node.addEventListener(eventName, handler, options);\n}\n\nexport default addEventListener;", "/**\n * Returns the owner document of a given element.\n * \n * @param node the element\n */\nexport default function ownerDocument(node) {\n  return node && node.ownerDocument || document;\n}", "/**\n * A `removeEventListener` ponyfill\n * \n * @param node the element\n * @param eventName the event name\n * @param handle the handler\n * @param options event options\n */\nfunction removeEventListener(node, eventName, handler, options) {\n  var capture = options && typeof options !== 'boolean' ? options.capture : options;\n  node.removeEventListener(eventName, handler, capture);\n\n  if (handler.__once) {\n    node.removeEventListener(eventName, handler.__once, capture);\n  }\n}\n\nexport default removeEventListener;", "import canUseDOM from './canUseDOM';\nvar size;\nexport default function scrollbarSize(recalc) {\n  if (!size && size !== 0 || recalc) {\n    if (canUseDOM) {\n      var scrollDiv = document.createElement('div');\n      scrollDiv.style.position = 'absolute';\n      scrollDiv.style.top = '-9999px';\n      scrollDiv.style.width = '50px';\n      scrollDiv.style.height = '50px';\n      scrollDiv.style.overflow = 'scroll';\n      document.body.appendChild(scrollDiv);\n      size = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n      document.body.removeChild(scrollDiv);\n    }\n  }\n\n  return size;\n}", "import { useState } from 'react';\n\n/**\n * A convenience hook around `useState` designed to be paired with\n * the component [callback ref](https://reactjs.org/docs/refs-and-the-dom.html#callback-refs) api.\n * Callback refs are useful over `useRef()` when you need to respond to the ref being set\n * instead of lazily accessing it in an effect.\n *\n * ```ts\n * const [element, attachRef] = useCallbackRef<HTMLDivElement>()\n *\n * useEffect(() => {\n *   if (!element) return\n *\n *   const calendar = new FullCalendar.Calendar(element)\n *\n *   return () => {\n *     calendar.destroy()\n *   }\n * }, [element])\n *\n * return <div ref={attachRef} />\n * ```\n *\n * @category refs\n */\nexport default function useCallbackRef() {\n  return useState(null);\n}", "import { useCallback } from 'react';\nimport useCommittedRef from './useCommittedRef';\nexport default function useEventCallback(fn) {\n  const ref = useCommittedRef(fn);\n  return useCallback(function (...args) {\n    return ref.current && ref.current(...args);\n  }, [ref]);\n}", "import { useEffect, useRef } from 'react';\n\n/**\n * Creates a `Ref` whose value is updated in an effect, ensuring the most recent\n * value is the one rendered with. Generally only required for Concurrent mode usage\n * where previous work in `render()` may be discarded before being used.\n *\n * This is safe to access in an event handler.\n *\n * @param value The `Ref` value\n */\nfunction useCommittedRef(value) {\n  const ref = useRef(value);\n  useEffect(() => {\n    ref.current = value;\n  }, [value]);\n  return ref;\n}\nexport default useCommittedRef;", "import { useMemo } from 'react';\nconst toFnRef = ref => !ref || typeof ref === 'function' ? ref : value => {\n  ref.current = value;\n};\nexport function mergeRefs(refA, refB) {\n  const a = toFnRef(refA);\n  const b = toFnRef(refB);\n  return value => {\n    if (a) a(value);\n    if (b) b(value);\n  };\n}\n\n/**\n * Create and returns a single callback ref composed from two other Refs.\n *\n * ```tsx\n * const Button = React.forwardRef((props, ref) => {\n *   const [element, attachRef] = useCallbackRef<HTMLButtonElement>();\n *   const mergedRef = useMergedRefs(ref, attachRef);\n *\n *   return <button ref={mergedRef} {...props}/>\n * })\n * ```\n *\n * @param refA A Callback or mutable Ref\n * @param refB A Callback or mutable Ref\n * @category refs\n */\nfunction useMergedRefs(refA, refB) {\n  return useMemo(() => mergeRefs(refA, refB), [refA, refB]);\n}\nexport default useMergedRefs;", "import { useRef } from 'react';\n\n/**\n * Returns a ref that is immediately updated with the new value\n *\n * @param value The Ref value\n * @category refs\n */\nexport default function useUpdatedRef(value) {\n  const valueRef = useRef(value);\n  valueRef.current = value;\n  return valueRef;\n}", "import useUpdatedRef from './useUpdatedRef';\nimport { useEffect } from 'react';\n\n/**\n * Attach a callback that fires when a component unmounts\n *\n * @param fn Handler to run when the component unmounts\n * @category effects\n */\nexport default function useWillUnmount(fn) {\n  const onUnmount = useUpdatedRef(fn);\n  useEffect(() => () => onUnmount.current(), []);\n}", "import ownerDocument from './ownerDocument';\n/**\n * Returns the owner window of a given element.\n * \n * @param node the element\n */\n\nexport default function ownerWindow(node) {\n  var doc = ownerDocument(node);\n  return doc && doc.defaultView || window;\n}", "import ownerWindow from './ownerWindow';\n/**\n * Returns one or all computed style properties of an element.\n * \n * @param node the element\n * @param psuedoElement the style property\n */\n\nexport default function getComputedStyle(node, psuedoElement) {\n  return ownerWindow(node).getComputedStyle(node, psuedoElement);\n}", "var rUpper = /([A-Z])/g;\nexport default function hyphenate(string) {\n  return string.replace(rUpper, '-$1').toLowerCase();\n}", "/**\n * Copyright 2013-2014, Facebook, Inc.\n * All rights reserved.\n * https://github.com/facebook/react/blob/2aeb8a2a6beb00617a4217f7f8284924fa2ad819/src/vendor/core/hyphenateStyleName.js\n */\nimport hyphenate from './hyphenate';\nvar msPattern = /^ms-/;\nexport default function hyphenateStyleName(string) {\n  return hyphenate(string).replace(msPattern, '-ms-');\n}", "var supportedTransforms = /^((translate|rotate|scale)(X|Y|Z|3d)?|matrix(3d)?|perspective|skew(X|Y)?)$/i;\nexport default function isTransform(value) {\n  return !!(value && supportedTransforms.test(value));\n}", "import getComputedStyle from './getComputedStyle';\nimport hyphenate from './hyphenateStyle';\nimport isTransform from './isTransform';\n\nfunction style(node, property) {\n  var css = '';\n  var transforms = '';\n\n  if (typeof property === 'string') {\n    return node.style.getPropertyValue(hyphenate(property)) || getComputedStyle(node).getPropertyValue(hyphenate(property));\n  }\n\n  Object.keys(property).forEach(function (key) {\n    var value = property[key];\n\n    if (!value && value !== 0) {\n      node.style.removeProperty(hyphenate(key));\n    } else if (isTransform(key)) {\n      transforms += key + \"(\" + value + \") \";\n    } else {\n      css += hyphenate(key) + \": \" + value + \";\";\n    }\n  });\n\n  if (transforms) {\n    css += \"transform: \" + transforms + \";\";\n  }\n\n  node.style.cssText += \";\" + css;\n}\n\nexport default style;", "import addEventListener from './addEventListener';\nimport removeEventListener from './removeEventListener';\n\nfunction listen(node, eventName, handler, options) {\n  addEventListener(node, eventName, handler, options);\n  return function () {\n    removeEventListener(node, eventName, handler, options);\n  };\n}\n\nexport default listen;", "/**\n * Triggers an event on a given element.\n * \n * @param node the element\n * @param eventName the event name to trigger\n * @param bubbles whether the event should bubble up\n * @param cancelable whether the event should be cancelable\n */\nexport default function triggerEvent(node, eventName, bubbles, cancelable) {\n  if (bubbles === void 0) {\n    bubbles = false;\n  }\n\n  if (cancelable === void 0) {\n    cancelable = true;\n  }\n\n  if (node) {\n    var event = document.createEvent('HTMLEvents');\n    event.initEvent(eventName, bubbles, cancelable);\n    node.dispatchEvent(event);\n  }\n}", "import css from './css';\nimport listen from './listen';\nimport triggerEvent from './triggerEvent';\n\nfunction parseDuration(node) {\n  var str = css(node, 'transitionDuration') || '';\n  var mult = str.indexOf('ms') === -1 ? 1000 : 1;\n  return parseFloat(str) * mult;\n}\n\nfunction emulateTransitionEnd(element, duration, padding) {\n  if (padding === void 0) {\n    padding = 5;\n  }\n\n  var called = false;\n  var handle = setTimeout(function () {\n    if (!called) triggerEvent(element, 'transitionend', true);\n  }, duration + padding);\n  var remove = listen(element, 'transitionend', function () {\n    called = true;\n  }, {\n    once: true\n  });\n  return function () {\n    clearTimeout(handle);\n    remove();\n  };\n}\n\nexport default function transitionEnd(element, handler, duration, padding) {\n  if (duration == null) duration = parseDuration(element) || 0;\n  var removeEmulate = emulateTransitionEnd(element, duration, padding);\n  var remove = listen(element, 'transitionend', handler);\n  return function () {\n    removeEmulate();\n    remove();\n  };\n}", "import ownerDocument from './ownerDocument';\n/**\n * Returns the actively focused element safely.\n *\n * @param doc the document to check\n */\n\nexport default function activeElement(doc) {\n  if (doc === void 0) {\n    doc = ownerDocument();\n  }\n\n  // Support: IE 9 only\n  // IE9 throws an \"Unspecified error\" accessing document.activeElement from an <iframe>\n  try {\n    var active = doc.activeElement; // IE11 returns a seemingly empty object in some cases when accessing\n    // document.activeElement from an <iframe>\n\n    if (!active || !active.nodeName) return null;\n    return active;\n  } catch (e) {\n    /* ie throws if no active element */\n    return doc.body;\n  }\n}", "/* eslint-disable no-bitwise, no-cond-assign */\n\n/**\n * Checks if an element contains another given element.\n * \n * @param context the context element\n * @param node the element to check\n */\nexport default function contains(context, node) {\n  // HTML DOM and SVG DOM may have different support levels,\n  // so we need to check on context instead of a document root element.\n  if (context.contains) return context.contains(node);\n  if (context.compareDocumentPosition) return context === node || !!(context.compareDocumentPosition(node) & 16);\n}", "const _excluded = [\"show\", \"role\", \"className\", \"style\", \"children\", \"backdrop\", \"keyboard\", \"onBackdropClick\", \"onEscapeKeyDown\", \"transition\", \"runTransition\", \"backdropTransition\", \"runBackdropTransition\", \"autoFocus\", \"enforceFocus\", \"restoreFocus\", \"restoreFocusOptions\", \"renderDialog\", \"renderBackdrop\", \"manager\", \"container\", \"onShow\", \"onHide\", \"onExit\", \"onExited\", \"onExiting\", \"onEnter\", \"onEntering\", \"onEntered\"];\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n/* eslint-disable @typescript-eslint/no-use-before-define, react/prop-types */\n\nimport activeElement from 'dom-helpers/activeElement';\nimport contains from 'dom-helpers/contains';\nimport canUseDOM from 'dom-helpers/canUseDOM';\nimport listen from 'dom-helpers/listen';\nimport { useState, useRef, useCallback, useImperativeHandle, forwardRef, useEffect } from 'react';\nimport * as React from 'react';\nimport ReactDOM from 'react-dom';\nimport useMounted from '@restart/hooks/useMounted';\nimport useWillUnmount from '@restart/hooks/useWillUnmount';\nimport usePrevious from '@restart/hooks/usePrevious';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport ModalManager from './ModalManager';\nimport useWaitForDOMRef from './useWaitForDOMRef';\nimport useWindow from './useWindow';\nimport { renderTransition } from './ImperativeTransition';\nimport { isEscKey } from './utils';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { Fragment as _Fragment } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nlet manager;\nfunction getManager(window) {\n  if (!manager) manager = new ModalManager({\n    ownerDocument: window == null ? void 0 : window.document\n  });\n  return manager;\n}\nfunction useModalManager(provided) {\n  const window = useWindow();\n  const modalManager = provided || getManager(window);\n  const modal = useRef({\n    dialog: null,\n    backdrop: null\n  });\n  return Object.assign(modal.current, {\n    add: () => modalManager.add(modal.current),\n    remove: () => modalManager.remove(modal.current),\n    isTopModal: () => modalManager.isTopModal(modal.current),\n    setDialogRef: useCallback(ref => {\n      modal.current.dialog = ref;\n    }, []),\n    setBackdropRef: useCallback(ref => {\n      modal.current.backdrop = ref;\n    }, [])\n  });\n}\nconst Modal = /*#__PURE__*/forwardRef((_ref, ref) => {\n  let {\n      show = false,\n      role = 'dialog',\n      className,\n      style,\n      children,\n      backdrop = true,\n      keyboard = true,\n      onBackdropClick,\n      onEscapeKeyDown,\n      transition,\n      runTransition,\n      backdropTransition,\n      runBackdropTransition,\n      autoFocus = true,\n      enforceFocus = true,\n      restoreFocus = true,\n      restoreFocusOptions,\n      renderDialog,\n      renderBackdrop = props => /*#__PURE__*/_jsx(\"div\", Object.assign({}, props)),\n      manager: providedManager,\n      container: containerRef,\n      onShow,\n      onHide = () => {},\n      onExit,\n      onExited,\n      onExiting,\n      onEnter,\n      onEntering,\n      onEntered\n    } = _ref,\n    rest = _objectWithoutPropertiesLoose(_ref, _excluded);\n  const ownerWindow = useWindow();\n  const container = useWaitForDOMRef(containerRef);\n  const modal = useModalManager(providedManager);\n  const isMounted = useMounted();\n  const prevShow = usePrevious(show);\n  const [exited, setExited] = useState(!show);\n  const lastFocusRef = useRef(null);\n  useImperativeHandle(ref, () => modal, [modal]);\n  if (canUseDOM && !prevShow && show) {\n    lastFocusRef.current = activeElement(ownerWindow == null ? void 0 : ownerWindow.document);\n  }\n\n  // TODO: I think this needs to be in an effect\n  if (show && exited) {\n    setExited(false);\n  }\n  const handleShow = useEventCallback(() => {\n    modal.add();\n    removeKeydownListenerRef.current = listen(document, 'keydown', handleDocumentKeyDown);\n    removeFocusListenerRef.current = listen(document, 'focus',\n    // the timeout is necessary b/c this will run before the new modal is mounted\n    // and so steals focus from it\n    () => setTimeout(handleEnforceFocus), true);\n    if (onShow) {\n      onShow();\n    }\n\n    // autofocus after onShow to not trigger a focus event for previous\n    // modals before this one is shown.\n    if (autoFocus) {\n      var _modal$dialog$ownerDo, _modal$dialog;\n      const currentActiveElement = activeElement((_modal$dialog$ownerDo = (_modal$dialog = modal.dialog) == null ? void 0 : _modal$dialog.ownerDocument) != null ? _modal$dialog$ownerDo : ownerWindow == null ? void 0 : ownerWindow.document);\n      if (modal.dialog && currentActiveElement && !contains(modal.dialog, currentActiveElement)) {\n        lastFocusRef.current = currentActiveElement;\n        modal.dialog.focus();\n      }\n    }\n  });\n  const handleHide = useEventCallback(() => {\n    modal.remove();\n    removeKeydownListenerRef.current == null ? void 0 : removeKeydownListenerRef.current();\n    removeFocusListenerRef.current == null ? void 0 : removeFocusListenerRef.current();\n    if (restoreFocus) {\n      var _lastFocusRef$current;\n      // Support: <=IE11 doesn't support `focus()` on svg elements (RB: #917)\n      (_lastFocusRef$current = lastFocusRef.current) == null ? void 0 : _lastFocusRef$current.focus == null ? void 0 : _lastFocusRef$current.focus(restoreFocusOptions);\n      lastFocusRef.current = null;\n    }\n  });\n\n  // TODO: try and combine these effects: https://github.com/react-bootstrap/react-overlays/pull/794#discussion_r409954120\n\n  // Show logic when:\n  //  - show is `true` _and_ `container` has resolved\n  useEffect(() => {\n    if (!show || !container) return;\n    handleShow();\n  }, [show, container, /* should never change: */handleShow]);\n\n  // Hide cleanup logic when:\n  //  - `exited` switches to true\n  //  - component unmounts;\n  useEffect(() => {\n    if (!exited) return;\n    handleHide();\n  }, [exited, handleHide]);\n  useWillUnmount(() => {\n    handleHide();\n  });\n\n  // --------------------------------\n\n  const handleEnforceFocus = useEventCallback(() => {\n    if (!enforceFocus || !isMounted() || !modal.isTopModal()) {\n      return;\n    }\n    const currentActiveElement = activeElement(ownerWindow == null ? void 0 : ownerWindow.document);\n    if (modal.dialog && currentActiveElement && !contains(modal.dialog, currentActiveElement)) {\n      modal.dialog.focus();\n    }\n  });\n  const handleBackdropClick = useEventCallback(e => {\n    if (e.target !== e.currentTarget) {\n      return;\n    }\n    onBackdropClick == null ? void 0 : onBackdropClick(e);\n    if (backdrop === true) {\n      onHide();\n    }\n  });\n  const handleDocumentKeyDown = useEventCallback(e => {\n    if (keyboard && isEscKey(e) && modal.isTopModal()) {\n      onEscapeKeyDown == null ? void 0 : onEscapeKeyDown(e);\n      if (!e.defaultPrevented) {\n        onHide();\n      }\n    }\n  });\n  const removeFocusListenerRef = useRef();\n  const removeKeydownListenerRef = useRef();\n  const handleHidden = (...args) => {\n    setExited(true);\n    onExited == null ? void 0 : onExited(...args);\n  };\n  if (!container) {\n    return null;\n  }\n  const dialogProps = Object.assign({\n    role,\n    ref: modal.setDialogRef,\n    // apparently only works on the dialog role element\n    'aria-modal': role === 'dialog' ? true : undefined\n  }, rest, {\n    style,\n    className,\n    tabIndex: -1\n  });\n  let dialog = renderDialog ? renderDialog(dialogProps) : /*#__PURE__*/_jsx(\"div\", Object.assign({}, dialogProps, {\n    children: /*#__PURE__*/React.cloneElement(children, {\n      role: 'document'\n    })\n  }));\n  dialog = renderTransition(transition, runTransition, {\n    unmountOnExit: true,\n    mountOnEnter: true,\n    appear: true,\n    in: !!show,\n    onExit,\n    onExiting,\n    onExited: handleHidden,\n    onEnter,\n    onEntering,\n    onEntered,\n    children: dialog\n  });\n  let backdropElement = null;\n  if (backdrop) {\n    backdropElement = renderBackdrop({\n      ref: modal.setBackdropRef,\n      onClick: handleBackdropClick\n    });\n    backdropElement = renderTransition(backdropTransition, runBackdropTransition, {\n      in: !!show,\n      appear: true,\n      mountOnEnter: true,\n      unmountOnExit: true,\n      children: backdropElement\n    });\n  }\n  return /*#__PURE__*/_jsx(_Fragment, {\n    children: /*#__PURE__*/ReactDOM.createPortal( /*#__PURE__*/_jsxs(_Fragment, {\n      children: [backdropElement, dialog]\n    }), container)\n  });\n});\nModal.displayName = 'Modal';\nexport default Object.assign(Modal, {\n  Manager: ModalManager\n});", "import { useRef, useEffect } from 'react';\n\n/**\n * Track whether a component is current mounted. Generally less preferable than\n * properlly canceling effects so they don't run after a component is unmounted,\n * but helpful in cases where that isn't feasible, such as a `Promise` resolution.\n *\n * @returns a function that returns the current isMounted state of the component\n *\n * ```ts\n * const [data, setData] = useState(null)\n * const isMounted = useMounted()\n *\n * useEffect(() => {\n *   fetchdata().then((newData) => {\n *      if (isMounted()) {\n *        setData(newData);\n *      }\n *   })\n * })\n * ```\n */\nexport default function useMounted() {\n  const mounted = useRef(true);\n  const isMounted = useRef(() => mounted.current);\n  useEffect(() => {\n    mounted.current = true;\n    return () => {\n      mounted.current = false;\n    };\n  }, []);\n  return isMounted.current;\n}", "import { useEffect, useRef } from 'react';\n\n/**\n * Store the last of some value. Tracked via a `Ref` only updating it\n * after the component renders.\n *\n * Helpful if you need to compare a prop value to it's previous value during render.\n *\n * ```ts\n * function Component(props) {\n *   const lastProps = usePrevious(props)\n *\n *   if (lastProps.foo !== props.foo)\n *     resetValueFromProps(props.foo)\n * }\n * ```\n *\n * @param value the value to track\n */\nexport default function usePrevious(value) {\n  const ref = useRef(null);\n  useEffect(() => {\n    ref.current = value;\n  });\n  return ref.current;\n}", "export const ATTRIBUTE_PREFIX = `data-rr-ui-`;\nexport const PROPERTY_PREFIX = `rrUi`;\nexport function dataAttr(property) {\n  return `${ATTRIBUTE_PREFIX}${property}`;\n}\nexport function dataProp(property) {\n  return `${PROPERTY_PREFIX}${property}`;\n}", "/**\n * Get the width of the vertical window scrollbar if it's visible\n */\nexport default function getBodyScrollbarWidth(ownerDocument = document) {\n  const window = ownerDocument.defaultView;\n  return Math.abs(window.innerWidth - ownerDocument.documentElement.clientWidth);\n}", "import css from 'dom-helpers/css';\nimport { dataAttr } from './DataKey';\nimport getBodyScrollbarWidth from './getScrollbarWidth';\nexport const OPEN_DATA_ATTRIBUTE = dataAttr('modal-open');\n\n/**\n * Manages a stack of Modals as well as ensuring\n * body scrolling is is disabled and padding accounted for\n */\nclass ModalManager {\n  constructor({\n    ownerDocument,\n    handleContainerOverflow = true,\n    isRTL = false\n  } = {}) {\n    this.handleContainerOverflow = handleContainerOverflow;\n    this.isRTL = isRTL;\n    this.modals = [];\n    this.ownerDocument = ownerDocument;\n  }\n  getScrollbarWidth() {\n    return getBodyScrollbarWidth(this.ownerDocument);\n  }\n  getElement() {\n    return (this.ownerDocument || document).body;\n  }\n  setModalAttributes(_modal) {\n    // For overriding\n  }\n  removeModalAttributes(_modal) {\n    // For overriding\n  }\n  setContainerStyle(containerState) {\n    const style = {\n      overflow: 'hidden'\n    };\n\n    // we are only interested in the actual `style` here\n    // because we will override it\n    const paddingProp = this.isRTL ? 'paddingLeft' : 'paddingRight';\n    const container = this.getElement();\n    containerState.style = {\n      overflow: container.style.overflow,\n      [paddingProp]: container.style[paddingProp]\n    };\n    if (containerState.scrollBarWidth) {\n      // use computed style, here to get the real padding\n      // to add our scrollbar width\n      style[paddingProp] = `${parseInt(css(container, paddingProp) || '0', 10) + containerState.scrollBarWidth}px`;\n    }\n    container.setAttribute(OPEN_DATA_ATTRIBUTE, '');\n    css(container, style);\n  }\n  reset() {\n    [...this.modals].forEach(m => this.remove(m));\n  }\n  removeContainerStyle(containerState) {\n    const container = this.getElement();\n    container.removeAttribute(OPEN_DATA_ATTRIBUTE);\n    Object.assign(container.style, containerState.style);\n  }\n  add(modal) {\n    let modalIdx = this.modals.indexOf(modal);\n    if (modalIdx !== -1) {\n      return modalIdx;\n    }\n    modalIdx = this.modals.length;\n    this.modals.push(modal);\n    this.setModalAttributes(modal);\n    if (modalIdx !== 0) {\n      return modalIdx;\n    }\n    this.state = {\n      scrollBarWidth: this.getScrollbarWidth(),\n      style: {}\n    };\n    if (this.handleContainerOverflow) {\n      this.setContainerStyle(this.state);\n    }\n    return modalIdx;\n  }\n  remove(modal) {\n    const modalIdx = this.modals.indexOf(modal);\n    if (modalIdx === -1) {\n      return;\n    }\n    this.modals.splice(modalIdx, 1);\n\n    // if that was the last modal in a container,\n    // clean up the container\n    if (!this.modals.length && this.handleContainerOverflow) {\n      this.removeContainerStyle(this.state);\n    }\n    this.removeModalAttributes(modal);\n  }\n  isTopModal(modal) {\n    return !!this.modals.length && this.modals[this.modals.length - 1] === modal;\n  }\n}\nexport default ModalManager;", "import ownerDocument from 'dom-helpers/ownerDocument';\nimport canUseDOM from 'dom-helpers/canUseDOM';\nimport { useState, useEffect } from 'react';\nimport useWindow from './useWindow';\nexport const resolveContainerRef = (ref, document) => {\n  if (!canUseDOM) return null;\n  if (ref == null) return (document || ownerDocument()).body;\n  if (typeof ref === 'function') ref = ref();\n  if (ref && 'current' in ref) ref = ref.current;\n  if (ref && ('nodeType' in ref || ref.getBoundingClientRect)) return ref;\n  return null;\n};\nexport default function useWaitForDOMRef(ref, onResolved) {\n  const window = useWindow();\n  const [resolvedRef, setRef] = useState(() => resolveContainerRef(ref, window == null ? void 0 : window.document));\n  if (!resolvedRef) {\n    const earlyRef = resolveContainerRef(ref);\n    if (earlyRef) setRef(earlyRef);\n  }\n  useEffect(() => {\n    if (onResolved && resolvedRef) {\n      onResolved(resolvedRef);\n    }\n  }, [onResolved, resolvedRef]);\n  useEffect(() => {\n    const nextRef = resolveContainerRef(ref);\n    if (nextRef !== resolvedRef) {\n      setRef(nextRef);\n    }\n  }, [ref, resolvedRef]);\n  return resolvedRef;\n}", "import { createContext, useContext } from 'react';\nimport canUseDOM from 'dom-helpers/canUseDOM';\nconst Context = /*#__PURE__*/createContext(canUseDOM ? window : undefined);\nexport const WindowProvider = Context.Provider;\n\n/**\n * The document \"window\" placed in React context. Helpful for determining\n * SSR context, or when rendering into an iframe.\n *\n * @returns the current window\n */\nexport default function useWindow() {\n  return useContext(Context);\n}", "import { useEffect, useLayoutEffect } from 'react';\nconst isReactNative = typeof global !== 'undefined' &&\n// @ts-ignore\nglobal.navigator &&\n// @ts-ignore\nglobal.navigator.product === 'ReactNative';\nconst isDOM = typeof document !== 'undefined';\n\n/**\n * Is `useLayoutEffect` in a DOM or React Native environment, otherwise resolves to useEffect\n * Only useful to avoid the console warning.\n *\n * PREFER `useEffect` UNLESS YOU KNOW WHAT YOU ARE DOING.\n *\n * @category effects\n */\nexport default isDOM || isReactNative ? useLayoutEffect : useEffect;", "import useMergedRefs from '@restart/hooks/useMergedRefs';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport useIsomorphicEffect from '@restart/hooks/useIsomorphicEffect';\nimport React, { useRef, cloneElement, useState } from 'react';\nimport NoopTransition from './NoopTransition';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function useTransition({\n  in: inProp,\n  onTransition\n}) {\n  const ref = useRef(null);\n  const isInitialRef = useRef(true);\n  const handleTransition = useEventCallback(onTransition);\n  useIsomorphicEffect(() => {\n    if (!ref.current) {\n      return undefined;\n    }\n    let stale = false;\n    handleTransition({\n      in: inProp,\n      element: ref.current,\n      initial: isInitialRef.current,\n      isStale: () => stale\n    });\n    return () => {\n      stale = true;\n    };\n  }, [inProp, handleTransition]);\n  useIsomorphicEffect(() => {\n    isInitialRef.current = false;\n    // this is for strict mode\n    return () => {\n      isInitialRef.current = true;\n    };\n  }, []);\n  return ref;\n}\n/**\n * Adapts an imperative transition function to a subset of the RTG `<Transition>` component API.\n *\n * ImperativeTransition does not support mounting options or `appear` at the moment, meaning\n * that it always acts like: `mountOnEnter={true} unmountOnExit={true} appear={true}`\n */\nexport default function ImperativeTransition({\n  children,\n  in: inProp,\n  onExited,\n  onEntered,\n  transition\n}) {\n  const [exited, setExited] = useState(!inProp);\n\n  // TODO: I think this needs to be in an effect\n  if (inProp && exited) {\n    setExited(false);\n  }\n  const ref = useTransition({\n    in: !!inProp,\n    onTransition: options => {\n      const onFinish = () => {\n        if (options.isStale()) return;\n        if (options.in) {\n          onEntered == null ? void 0 : onEntered(options.element, options.initial);\n        } else {\n          setExited(true);\n          onExited == null ? void 0 : onExited(options.element);\n        }\n      };\n      Promise.resolve(transition(options)).then(onFinish, error => {\n        if (!options.in) setExited(true);\n        throw error;\n      });\n    }\n  });\n  const combinedRef = useMergedRefs(ref, children.ref);\n  return exited && !inProp ? null : /*#__PURE__*/cloneElement(children, {\n    ref: combinedRef\n  });\n}\nexport function renderTransition(Component, runTransition, props) {\n  if (Component) {\n    return /*#__PURE__*/_jsx(Component, Object.assign({}, props));\n  }\n  if (runTransition) {\n    return /*#__PURE__*/_jsx(ImperativeTransition, Object.assign({}, props, {\n      transition: runTransition\n    }));\n  }\n  return /*#__PURE__*/_jsx(NoopTransition, Object.assign({}, props));\n}", "import useEventCallback from '@restart/hooks/useEventCallback';\nimport useMergedRefs from '@restart/hooks/useMergedRefs';\nimport { cloneElement, useEffect, useRef } from 'react';\nfunction NoopTransition({\n  children,\n  in: inProp,\n  onExited,\n  mountOnEnter,\n  unmountOnExit\n}) {\n  const ref = useRef(null);\n  const hasEnteredRef = useRef(inProp);\n  const handleExited = useEventCallback(onExited);\n  useEffect(() => {\n    if (inProp) hasEnteredRef.current = true;else {\n      handleExited(ref.current);\n    }\n  }, [inProp, handleExited]);\n  const combinedRef = useMergedRefs(ref, children.ref);\n  const child = /*#__PURE__*/cloneElement(children, {\n    ref: combinedRef\n  });\n  if (inProp) return child;\n  if (unmountOnExit) {\n    return null;\n  }\n  if (!hasEnteredRef.current && mountOnEnter) {\n    return null;\n  }\n  return child;\n}\nexport default NoopTransition;", "/* eslint-disable import/prefer-default-export */\nexport function isEscKey(e) {\n  return e.code === 'Escape' || e.keyCode === 27;\n}", "/**\n * Checks if a given element has a CSS class.\n * \n * @param element the element\n * @param className the CSS class name\n */\nexport default function hasClass(element, className) {\n  if (element.classList) return !!className && element.classList.contains(className);\n  return (\" \" + (element.className.baseVal || element.className) + \" \").indexOf(\" \" + className + \" \") !== -1;\n}", "import hasClass from './hasClass';\n/**\n * Adds a CSS class to a given element.\n * \n * @param element the element\n * @param className the CSS class name\n */\n\nexport default function addClass(element, className) {\n  if (element.classList) element.classList.add(className);else if (!hasClass(element, className)) if (typeof element.className === 'string') element.className = element.className + \" \" + className;else element.setAttribute('class', (element.className && element.className.baseVal || '') + \" \" + className);\n}", "var toArray = Function.prototype.bind.call(Function.prototype.call, [].slice);\n/**\n * Runs `querySelectorAll` on a given element.\n * \n * @param element the element\n * @param selector the selector\n */\n\nexport default function qsa(element, selector) {\n  return toArray(element.querySelectorAll(selector));\n}", "function replaceClassName(origClass, classToRemove) {\n  return origClass.replace(new RegExp(\"(^|\\\\s)\" + classToRemove + \"(?:\\\\s|$)\", 'g'), '$1').replace(/\\s+/g, ' ').replace(/^\\s*|\\s*$/g, '');\n}\n/**\n * Removes a CSS class from a given element.\n * \n * @param element the element\n * @param className the CSS class name\n */\n\n\nexport default function removeClass(element, className) {\n  if (element.classList) {\n    element.classList.remove(className);\n  } else if (typeof element.className === 'string') {\n    element.className = replaceClassName(element.className, className);\n  } else {\n    element.setAttribute('class', replaceClassName(element.className && element.className.baseVal || '', className));\n  }\n}", "import addClass from 'dom-helpers/addClass';\nimport css from 'dom-helpers/css';\nimport qsa from 'dom-helpers/querySelectorAll';\nimport removeClass from 'dom-helpers/removeClass';\nimport ModalManager from '@restart/ui/ModalManager';\nconst Selector = {\n  FIXED_CONTENT: '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top',\n  STICKY_CONTENT: '.sticky-top',\n  NAVBAR_TOGGLER: '.navbar-toggler'\n};\nclass BootstrapModalManager extends ModalManager {\n  adjustAndStore(prop, element, adjust) {\n    const actual = element.style[prop];\n    // TODO: DOMStringMap and CSSStyleDeclaration aren't strictly compatible\n    // @ts-ignore\n    element.dataset[prop] = actual;\n    css(element, {\n      [prop]: `${parseFloat(css(element, prop)) + adjust}px`\n    });\n  }\n  restore(prop, element) {\n    const value = element.dataset[prop];\n    if (value !== undefined) {\n      delete element.dataset[prop];\n      css(element, {\n        [prop]: value\n      });\n    }\n  }\n  setContainerStyle(containerState) {\n    super.setContainerStyle(containerState);\n    const container = this.getElement();\n    addClass(container, 'modal-open');\n    if (!containerState.scrollBarWidth) return;\n    const paddingProp = this.isRTL ? 'paddingLeft' : 'paddingRight';\n    const marginProp = this.isRTL ? 'marginLeft' : 'marginRight';\n    qsa(container, Selector.FIXED_CONTENT).forEach(el => this.adjustAndStore(paddingProp, el, containerState.scrollBarWidth));\n    qsa(container, Selector.STICKY_CONTENT).forEach(el => this.adjustAndStore(marginProp, el, -containerState.scrollBarWidth));\n    qsa(container, Selector.NAVBAR_TOGGLER).forEach(el => this.adjustAndStore(marginProp, el, containerState.scrollBarWidth));\n  }\n  removeContainerStyle(containerState) {\n    super.removeContainerStyle(containerState);\n    const container = this.getElement();\n    removeClass(container, 'modal-open');\n    const paddingProp = this.isRTL ? 'paddingLeft' : 'paddingRight';\n    const marginProp = this.isRTL ? 'marginLeft' : 'marginRight';\n    qsa(container, Selector.FIXED_CONTENT).forEach(el => this.restore(paddingProp, el));\n    qsa(container, Selector.STICKY_CONTENT).forEach(el => this.restore(marginProp, el));\n    qsa(container, Selector.NAVBAR_TOGGLER).forEach(el => this.restore(marginProp, el));\n  }\n}\nlet sharedManager;\nexport function getSharedManager(options) {\n  if (!sharedManager) sharedManager = new BootstrapModalManager(options);\n  return sharedManager;\n}\nexport default BootstrapModalManager;", "import classNames from 'classnames';\nimport * as React from 'react';\nimport { useCallback } from 'react';\nimport { ENTERED, ENTERING } from 'react-transition-group/Transition';\nimport transitionEndListener from './transitionEndListener';\nimport triggerBrowserReflow from './triggerBrowserReflow';\nimport TransitionWrapper from './TransitionWrapper';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst fadeStyles = {\n  [ENTERING]: 'show',\n  [ENTERED]: 'show'\n};\nconst Fade = /*#__PURE__*/React.forwardRef(({\n  className,\n  children,\n  transitionClasses = {},\n  onEnter,\n  ...rest\n}, ref) => {\n  const props = {\n    in: false,\n    timeout: 300,\n    mountOnEnter: false,\n    unmountOnExit: false,\n    appear: false,\n    ...rest\n  };\n  const handleEnter = useCallback((node, isAppearing) => {\n    triggerBrowserReflow(node);\n    onEnter == null ? void 0 : onEnter(node, isAppearing);\n  }, [onEnter]);\n  return /*#__PURE__*/_jsx(TransitionWrapper, {\n    ref: ref,\n    addEndListener: transitionEndListener,\n    ...props,\n    onEnter: handleEnter,\n    childRef: children.ref,\n    children: (status, innerProps) => /*#__PURE__*/React.cloneElement(children, {\n      ...innerProps,\n      className: classNames('fade', className, children.props.className, fadeStyles[status], transitionClasses[status])\n    })\n  });\n});\nFade.displayName = 'Fade';\nexport default Fade;", "import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  setPrototypeOf(subClass, superClass);\n}", "import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport config from './config';\nimport { timeoutsShape } from './utils/PropTypes';\nimport TransitionGroupContext from './TransitionGroupContext';\nimport { forceReflow } from './utils/reflow';\nexport var UNMOUNTED = 'unmounted';\nexport var EXITED = 'exited';\nexport var ENTERING = 'entering';\nexport var ENTERED = 'entered';\nexport var EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n *   transition: `opacity ${duration}ms ease-in-out`,\n *   opacity: 0,\n * }\n *\n * const transitionStyles = {\n *   entering: { opacity: 1 },\n *   entered:  { opacity: 1 },\n *   exiting:  { opacity: 0 },\n *   exited:  { opacity: 0 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n *   <Transition in={inProp} timeout={duration}>\n *     {state => (\n *       <div style={{\n *         ...defaultStyle,\n *         ...transitionStyles[state]\n *       }}>\n *         I'm a fade Transition!\n *       </div>\n *     )}\n *   </Transition>\n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n *  - `'entering'`\n *  - `'entered'`\n *  - `'exiting'`\n *  - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n *   const [inProp, setInProp] = useState(false);\n *   return (\n *     <div>\n *       <Transition in={inProp} timeout={500}>\n *         {state => (\n *           // ...\n *         )}\n *       </Transition>\n *       <button onClick={() => setInProp(true)}>\n *         Click to Enter\n *       </button>\n *     </div>\n *   );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nvar Transition = /*#__PURE__*/function (_React$Component) {\n  _inheritsLoose(Transition, _React$Component);\n\n  function Transition(props, context) {\n    var _this;\n\n    _this = _React$Component.call(this, props, context) || this;\n    var parentGroup = context; // In the context of a TransitionGroup all enters are really appears\n\n    var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n    var initialStatus;\n    _this.appearStatus = null;\n\n    if (props.in) {\n      if (appear) {\n        initialStatus = EXITED;\n        _this.appearStatus = ENTERING;\n      } else {\n        initialStatus = ENTERED;\n      }\n    } else {\n      if (props.unmountOnExit || props.mountOnEnter) {\n        initialStatus = UNMOUNTED;\n      } else {\n        initialStatus = EXITED;\n      }\n    }\n\n    _this.state = {\n      status: initialStatus\n    };\n    _this.nextCallback = null;\n    return _this;\n  }\n\n  Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n    var nextIn = _ref.in;\n\n    if (nextIn && prevState.status === UNMOUNTED) {\n      return {\n        status: EXITED\n      };\n    }\n\n    return null;\n  } // getSnapshotBeforeUpdate(prevProps) {\n  //   let nextStatus = null\n  //   if (prevProps !== this.props) {\n  //     const { status } = this.state\n  //     if (this.props.in) {\n  //       if (status !== ENTERING && status !== ENTERED) {\n  //         nextStatus = ENTERING\n  //       }\n  //     } else {\n  //       if (status === ENTERING || status === ENTERED) {\n  //         nextStatus = EXITING\n  //       }\n  //     }\n  //   }\n  //   return { nextStatus }\n  // }\n  ;\n\n  var _proto = Transition.prototype;\n\n  _proto.componentDidMount = function componentDidMount() {\n    this.updateStatus(true, this.appearStatus);\n  };\n\n  _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n    var nextStatus = null;\n\n    if (prevProps !== this.props) {\n      var status = this.state.status;\n\n      if (this.props.in) {\n        if (status !== ENTERING && status !== ENTERED) {\n          nextStatus = ENTERING;\n        }\n      } else {\n        if (status === ENTERING || status === ENTERED) {\n          nextStatus = EXITING;\n        }\n      }\n    }\n\n    this.updateStatus(false, nextStatus);\n  };\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    this.cancelNextCallback();\n  };\n\n  _proto.getTimeouts = function getTimeouts() {\n    var timeout = this.props.timeout;\n    var exit, enter, appear;\n    exit = enter = appear = timeout;\n\n    if (timeout != null && typeof timeout !== 'number') {\n      exit = timeout.exit;\n      enter = timeout.enter; // TODO: remove fallback for next major\n\n      appear = timeout.appear !== undefined ? timeout.appear : enter;\n    }\n\n    return {\n      exit: exit,\n      enter: enter,\n      appear: appear\n    };\n  };\n\n  _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n    if (mounting === void 0) {\n      mounting = false;\n    }\n\n    if (nextStatus !== null) {\n      // nextStatus will always be ENTERING or EXITING.\n      this.cancelNextCallback();\n\n      if (nextStatus === ENTERING) {\n        if (this.props.unmountOnExit || this.props.mountOnEnter) {\n          var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this); // https://github.com/reactjs/react-transition-group/pull/749\n          // With unmountOnExit or mountOnEnter, the enter animation should happen at the transition between `exited` and `entering`.\n          // To make the animation happen,  we have to separate each rendering and avoid being processed as batched.\n\n          if (node) forceReflow(node);\n        }\n\n        this.performEnter(mounting);\n      } else {\n        this.performExit();\n      }\n    } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n      this.setState({\n        status: UNMOUNTED\n      });\n    }\n  };\n\n  _proto.performEnter = function performEnter(mounting) {\n    var _this2 = this;\n\n    var enter = this.props.enter;\n    var appearing = this.context ? this.context.isMounting : mounting;\n\n    var _ref2 = this.props.nodeRef ? [appearing] : [ReactDOM.findDOMNode(this), appearing],\n        maybeNode = _ref2[0],\n        maybeAppearing = _ref2[1];\n\n    var timeouts = this.getTimeouts();\n    var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n    // if we are mounting and running this it means appear _must_ be set\n\n    if (!mounting && !enter || config.disabled) {\n      this.safeSetState({\n        status: ENTERED\n      }, function () {\n        _this2.props.onEntered(maybeNode);\n      });\n      return;\n    }\n\n    this.props.onEnter(maybeNode, maybeAppearing);\n    this.safeSetState({\n      status: ENTERING\n    }, function () {\n      _this2.props.onEntering(maybeNode, maybeAppearing);\n\n      _this2.onTransitionEnd(enterTimeout, function () {\n        _this2.safeSetState({\n          status: ENTERED\n        }, function () {\n          _this2.props.onEntered(maybeNode, maybeAppearing);\n        });\n      });\n    });\n  };\n\n  _proto.performExit = function performExit() {\n    var _this3 = this;\n\n    var exit = this.props.exit;\n    var timeouts = this.getTimeouts();\n    var maybeNode = this.props.nodeRef ? undefined : ReactDOM.findDOMNode(this); // no exit animation skip right to EXITED\n\n    if (!exit || config.disabled) {\n      this.safeSetState({\n        status: EXITED\n      }, function () {\n        _this3.props.onExited(maybeNode);\n      });\n      return;\n    }\n\n    this.props.onExit(maybeNode);\n    this.safeSetState({\n      status: EXITING\n    }, function () {\n      _this3.props.onExiting(maybeNode);\n\n      _this3.onTransitionEnd(timeouts.exit, function () {\n        _this3.safeSetState({\n          status: EXITED\n        }, function () {\n          _this3.props.onExited(maybeNode);\n        });\n      });\n    });\n  };\n\n  _proto.cancelNextCallback = function cancelNextCallback() {\n    if (this.nextCallback !== null) {\n      this.nextCallback.cancel();\n      this.nextCallback = null;\n    }\n  };\n\n  _proto.safeSetState = function safeSetState(nextState, callback) {\n    // This shouldn't be necessary, but there are weird race conditions with\n    // setState callbacks and unmounting in testing, so always make sure that\n    // we can cancel any pending setState callbacks after we unmount.\n    callback = this.setNextCallback(callback);\n    this.setState(nextState, callback);\n  };\n\n  _proto.setNextCallback = function setNextCallback(callback) {\n    var _this4 = this;\n\n    var active = true;\n\n    this.nextCallback = function (event) {\n      if (active) {\n        active = false;\n        _this4.nextCallback = null;\n        callback(event);\n      }\n    };\n\n    this.nextCallback.cancel = function () {\n      active = false;\n    };\n\n    return this.nextCallback;\n  };\n\n  _proto.onTransitionEnd = function onTransitionEnd(timeout, handler) {\n    this.setNextCallback(handler);\n    var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this);\n    var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n    if (!node || doesNotHaveTimeoutOrListener) {\n      setTimeout(this.nextCallback, 0);\n      return;\n    }\n\n    if (this.props.addEndListener) {\n      var _ref3 = this.props.nodeRef ? [this.nextCallback] : [node, this.nextCallback],\n          maybeNode = _ref3[0],\n          maybeNextCallback = _ref3[1];\n\n      this.props.addEndListener(maybeNode, maybeNextCallback);\n    }\n\n    if (timeout != null) {\n      setTimeout(this.nextCallback, timeout);\n    }\n  };\n\n  _proto.render = function render() {\n    var status = this.state.status;\n\n    if (status === UNMOUNTED) {\n      return null;\n    }\n\n    var _this$props = this.props,\n        children = _this$props.children,\n        _in = _this$props.in,\n        _mountOnEnter = _this$props.mountOnEnter,\n        _unmountOnExit = _this$props.unmountOnExit,\n        _appear = _this$props.appear,\n        _enter = _this$props.enter,\n        _exit = _this$props.exit,\n        _timeout = _this$props.timeout,\n        _addEndListener = _this$props.addEndListener,\n        _onEnter = _this$props.onEnter,\n        _onEntering = _this$props.onEntering,\n        _onEntered = _this$props.onEntered,\n        _onExit = _this$props.onExit,\n        _onExiting = _this$props.onExiting,\n        _onExited = _this$props.onExited,\n        _nodeRef = _this$props.nodeRef,\n        childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"in\", \"mountOnEnter\", \"unmountOnExit\", \"appear\", \"enter\", \"exit\", \"timeout\", \"addEndListener\", \"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\", \"nodeRef\"]);\n\n    return (\n      /*#__PURE__*/\n      // allows for nested Transitions\n      React.createElement(TransitionGroupContext.Provider, {\n        value: null\n      }, typeof children === 'function' ? children(status, childProps) : React.cloneElement(React.Children.only(children), childProps))\n    );\n  };\n\n  return Transition;\n}(React.Component);\n\nTransition.contextType = TransitionGroupContext;\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n  /**\n   * A React reference to DOM element that need to transition:\n   * https://stackoverflow.com/a/51127130/4671932\n   *\n   *   - When `nodeRef` prop is used, `node` is not passed to callback functions\n   *      (e.g. `onEnter`) because user already has direct access to the node.\n   *   - When changing `key` prop of `Transition` in a `TransitionGroup` a new\n   *     `nodeRef` need to be provided to `Transition` with changed `key` prop\n   *     (see\n   *     [test/CSSTransition-test.js](https://github.com/reactjs/react-transition-group/blob/13435f897b3ab71f6e19d724f145596f5910581c/test/CSSTransition-test.js#L362-L437)).\n   */\n  nodeRef: PropTypes.shape({\n    current: typeof Element === 'undefined' ? PropTypes.any : function (propValue, key, componentName, location, propFullName, secret) {\n      var value = propValue[key];\n      return PropTypes.instanceOf(value && 'ownerDocument' in value ? value.ownerDocument.defaultView.Element : Element)(propValue, key, componentName, location, propFullName, secret);\n    }\n  }),\n\n  /**\n   * A `function` child can be used instead of a React element. This function is\n   * called with the current transition status (`'entering'`, `'entered'`,\n   * `'exiting'`, `'exited'`), which can be used to apply context\n   * specific props to a component.\n   *\n   * ```jsx\n   * <Transition in={this.state.in} timeout={150}>\n   *   {state => (\n   *     <MyComponent className={`fade fade-${state}`} />\n   *   )}\n   * </Transition>\n   * ```\n   */\n  children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n\n  /**\n   * Show the component; triggers the enter or exit states\n   */\n  in: PropTypes.bool,\n\n  /**\n   * By default the child component is mounted immediately along with\n   * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n   * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n   * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n   */\n  mountOnEnter: PropTypes.bool,\n\n  /**\n   * By default the child component stays mounted after it reaches the `'exited'` state.\n   * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n   */\n  unmountOnExit: PropTypes.bool,\n\n  /**\n   * By default the child component does not perform the enter transition when\n   * it first mounts, regardless of the value of `in`. If you want this\n   * behavior, set both `appear` and `in` to `true`.\n   *\n   * > **Note**: there are no special appear states like `appearing`/`appeared`, this prop\n   * > only adds an additional enter transition. However, in the\n   * > `<CSSTransition>` component that first enter transition does result in\n   * > additional `.appear-*` classes, that way you can choose to style it\n   * > differently.\n   */\n  appear: PropTypes.bool,\n\n  /**\n   * Enable or disable enter transitions.\n   */\n  enter: PropTypes.bool,\n\n  /**\n   * Enable or disable exit transitions.\n   */\n  exit: PropTypes.bool,\n\n  /**\n   * The duration of the transition, in milliseconds.\n   * Required unless `addEndListener` is provided.\n   *\n   * You may specify a single timeout for all transitions:\n   *\n   * ```jsx\n   * timeout={500}\n   * ```\n   *\n   * or individually:\n   *\n   * ```jsx\n   * timeout={{\n   *  appear: 500,\n   *  enter: 300,\n   *  exit: 500,\n   * }}\n   * ```\n   *\n   * - `appear` defaults to the value of `enter`\n   * - `enter` defaults to `0`\n   * - `exit` defaults to `0`\n   *\n   * @type {number | { enter?: number, exit?: number, appear?: number }}\n   */\n  timeout: function timeout(props) {\n    var pt = timeoutsShape;\n    if (!props.addEndListener) pt = pt.isRequired;\n\n    for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      args[_key - 1] = arguments[_key];\n    }\n\n    return pt.apply(void 0, [props].concat(args));\n  },\n\n  /**\n   * Add a custom transition end trigger. Called with the transitioning\n   * DOM node and a `done` callback. Allows for more fine grained transition end\n   * logic. Timeouts are still used as a fallback if provided.\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * ```jsx\n   * addEndListener={(node, done) => {\n   *   // use the css transitionend event to mark the finish of a transition\n   *   node.addEventListener('transitionend', done, false);\n   * }}\n   * ```\n   */\n  addEndListener: PropTypes.func,\n\n  /**\n   * Callback fired before the \"entering\" status is applied. An extra parameter\n   * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * @type Function(node: HtmlElement, isAppearing: bool) -> void\n   */\n  onEnter: PropTypes.func,\n\n  /**\n   * Callback fired after the \"entering\" status is applied. An extra parameter\n   * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * @type Function(node: HtmlElement, isAppearing: bool)\n   */\n  onEntering: PropTypes.func,\n\n  /**\n   * Callback fired after the \"entered\" status is applied. An extra parameter\n   * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * @type Function(node: HtmlElement, isAppearing: bool) -> void\n   */\n  onEntered: PropTypes.func,\n\n  /**\n   * Callback fired before the \"exiting\" status is applied.\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * @type Function(node: HtmlElement) -> void\n   */\n  onExit: PropTypes.func,\n\n  /**\n   * Callback fired after the \"exiting\" status is applied.\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * @type Function(node: HtmlElement) -> void\n   */\n  onExiting: PropTypes.func,\n\n  /**\n   * Callback fired after the \"exited\" status is applied.\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed\n   *\n   * @type Function(node: HtmlElement) -> void\n   */\n  onExited: PropTypes.func\n} : {}; // Name the function so it is clearer in the documentation\n\nfunction noop() {}\n\nTransition.defaultProps = {\n  in: false,\n  mountOnEnter: false,\n  unmountOnExit: false,\n  appear: false,\n  enter: true,\n  exit: true,\n  onEnter: noop,\n  onEntering: noop,\n  onEntered: noop,\n  onExit: noop,\n  onExiting: noop,\n  onExited: noop\n};\nTransition.UNMOUNTED = UNMOUNTED;\nTransition.EXITED = EXITED;\nTransition.ENTERING = ENTERING;\nTransition.ENTERED = ENTERED;\nTransition.EXITING = EXITING;\nexport default Transition;", "export default {\n  disabled: false\n};", "import PropTypes from 'prop-types';\nexport var timeoutsShape = process.env.NODE_ENV !== 'production' ? PropTypes.oneOfType([PropTypes.number, PropTypes.shape({\n  enter: PropTypes.number,\n  exit: PropTypes.number,\n  appear: PropTypes.number\n}).isRequired]) : null;\nexport var classNamesShape = process.env.NODE_ENV !== 'production' ? PropTypes.oneOfType([PropTypes.string, PropTypes.shape({\n  enter: PropTypes.string,\n  exit: PropTypes.string,\n  active: PropTypes.string\n}), PropTypes.shape({\n  enter: PropTypes.string,\n  enterDone: PropTypes.string,\n  enterActive: PropTypes.string,\n  exit: PropTypes.string,\n  exitDone: PropTypes.string,\n  exitActive: PropTypes.string\n})]) : null;", "import React from 'react';\nexport default React.createContext(null);", "export var forceReflow = function forceReflow(node) {\n  return node.scrollTop;\n};", "import css from 'dom-helpers/css';\nimport transitionEnd from 'dom-helpers/transitionEnd';\nfunction parseDuration(node, property) {\n  const str = css(node, property) || '';\n  const mult = str.indexOf('ms') === -1 ? 1000 : 1;\n  return parseFloat(str) * mult;\n}\nexport default function transitionEndListener(element, handler) {\n  const duration = parseDuration(element, 'transitionDuration');\n  const delay = parseDuration(element, 'transitionDelay');\n  const remove = transitionEnd(element, e => {\n    if (e.target === element) {\n      remove();\n      handler(e);\n    }\n  }, duration + delay);\n}", "// reading a dimension prop will cause the browser to recalculate,\n// which will let our animations work\nexport default function triggerBrowserReflow(node) {\n  // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n  node.offsetHeight;\n}", "import React, { useCallback, useRef } from 'react';\nimport Transition from 'react-transition-group/Transition';\nimport useMergedRefs from '@restart/hooks/useMergedRefs';\nimport safeFindDOMNode from './safeFindDOMNode';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n// Normalizes Transition callbacks when nodeRef is used.\nconst TransitionWrapper = /*#__PURE__*/React.forwardRef(({\n  onEnter,\n  onEntering,\n  onEntered,\n  onExit,\n  onExiting,\n  onExited,\n  addEndListener,\n  children,\n  childRef,\n  ...props\n}, ref) => {\n  const nodeRef = useRef(null);\n  const mergedRef = useMergedRefs(nodeRef, childRef);\n  const attachRef = r => {\n    mergedRef(safeFindDOMNode(r));\n  };\n  const normalize = callback => param => {\n    if (callback && nodeRef.current) {\n      callback(nodeRef.current, param);\n    }\n  };\n\n  /* eslint-disable react-hooks/exhaustive-deps */\n  const handleEnter = useCallback(normalize(onEnter), [onEnter]);\n  const handleEntering = useCallback(normalize(onEntering), [onEntering]);\n  const handleEntered = useCallback(normalize(onEntered), [onEntered]);\n  const handleExit = useCallback(normalize(onExit), [onExit]);\n  const handleExiting = useCallback(normalize(onExiting), [onExiting]);\n  const handleExited = useCallback(normalize(onExited), [onExited]);\n  const handleAddEndListener = useCallback(normalize(addEndListener), [addEndListener]);\n  /* eslint-enable react-hooks/exhaustive-deps */\n\n  return /*#__PURE__*/_jsx(Transition, {\n    ref: ref,\n    ...props,\n    onEnter: handleEnter,\n    onEntered: handleEntered,\n    onEntering: handleEntering,\n    onExit: handleExit,\n    onExited: handleExited,\n    onExiting: handleExiting,\n    addEndListener: handleAddEndListener,\n    nodeRef: nodeRef,\n    children: typeof children === 'function' ? (status, innerProps) =>\n    // TODO: Types for RTG missing innerProps, so need to cast.\n    children(status, {\n      ...innerProps,\n      ref: attachRef\n    }) : /*#__PURE__*/React.cloneElement(children, {\n      ref: attachRef\n    })\n  });\n});\nexport default TransitionWrapper;", "import ReactDOM from 'react-dom';\nexport default function safeFindDOMNode(componentOrElement) {\n  if (componentOrElement && 'setState' in componentOrElement) {\n    return ReactDOM.findDOMNode(componentOrElement);\n  }\n  return componentOrElement != null ? componentOrElement : null;\n}", "import classNames from 'classnames';\nimport camelize from 'dom-helpers/camelize';\nimport * as React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst pascalCase = str => str[0].toUpperCase() + camelize(str).slice(1);\n// TODO: emstricten & fix the typing here! `createWithBsPrefix<TElementType>...`\nexport default function createWithBsPrefix(prefix, {\n  displayName = pascalCase(prefix),\n  Component,\n  defaultProps\n} = {}) {\n  const BsComponent = /*#__PURE__*/React.forwardRef(({\n    className,\n    bsPrefix,\n    as: Tag = Component || 'div',\n    ...props\n  }, ref) => {\n    const componentProps = {\n      ...defaultProps,\n      ...props\n    };\n    const resolvedPrefix = useBootstrapPrefix(bsPrefix, prefix);\n    return /*#__PURE__*/_jsx(Tag, {\n      ref: ref,\n      className: classNames(className, resolvedPrefix),\n      ...componentProps\n    });\n  });\n  BsComponent.displayName = displayName;\n  return BsComponent;\n}", "var rHyphen = /-(.)/g;\nexport default function camelize(string) {\n  return string.replace(rHyphen, function (_, chr) {\n    return chr.toUpperCase();\n  });\n}", "import * as React from 'react';\nimport { useContext, useMemo } from 'react';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const DEFAULT_BREAKPOINTS = ['xxl', 'xl', 'lg', 'md', 'sm', 'xs'];\nexport const DEFAULT_MIN_BREAKPOINT = 'xs';\nconst ThemeContext = /*#__PURE__*/React.createContext({\n  prefixes: {},\n  breakpoints: DEFAULT_BREAKPOINTS,\n  minBreakpoint: DEFAULT_MIN_BREAKPOINT\n});\nconst {\n  Consumer,\n  Provider\n} = ThemeContext;\nfunction ThemeProvider({\n  prefixes = {},\n  breakpoints = DEFAULT_BREAKPOINTS,\n  minBreakpoint = DEFAULT_MIN_BREAKPOINT,\n  dir,\n  children\n}) {\n  const contextValue = useMemo(() => ({\n    prefixes: {\n      ...prefixes\n    },\n    breakpoints,\n    minBreakpoint,\n    dir\n  }), [prefixes, breakpoints, minBreakpoint, dir]);\n  return /*#__PURE__*/_jsx(Provider, {\n    value: contextValue,\n    children: children\n  });\n}\nexport function useBootstrapPrefix(prefix, defaultPrefix) {\n  const {\n    prefixes\n  } = useContext(ThemeContext);\n  return prefix || prefixes[defaultPrefix] || defaultPrefix;\n}\nexport function useBootstrapBreakpoints() {\n  const {\n    breakpoints\n  } = useContext(ThemeContext);\n  return breakpoints;\n}\nexport function useBootstrapMinBreakpoint() {\n  const {\n    minBreakpoint\n  } = useContext(ThemeContext);\n  return minBreakpoint;\n}\nexport function useIsRTL() {\n  const {\n    dir\n  } = useContext(ThemeContext);\n  return dir === 'rtl';\n}\nfunction createBootstrapComponent(Component, opts) {\n  if (typeof opts === 'string') opts = {\n    prefix: opts\n  };\n  const isClassy = Component.prototype && Component.prototype.isReactComponent;\n  // If it's a functional component make sure we don't break it with a ref\n  const {\n    prefix,\n    forwardRefAs = isClassy ? 'ref' : 'innerRef'\n  } = opts;\n  const Wrapped = /*#__PURE__*/React.forwardRef(({\n    ...props\n  }, ref) => {\n    props[forwardRefAs] = ref;\n    const bsPrefix = useBootstrapPrefix(props.bsPrefix, prefix);\n    return /*#__PURE__*/_jsx(Component, {\n      ...props,\n      bsPrefix: bsPrefix\n    });\n  });\n  Wrapped.displayName = `Bootstrap(${Component.displayName || Component.name})`;\n  return Wrapped;\n}\nexport { createBootstrapComponent, Consumer as ThemeConsumer };\nexport default ThemeProvider;", "import createWithBsPrefix from './createWithBsPrefix';\nexport default createWithBsPrefix('modal-body');", "import * as React from 'react';\nconst ModalContext = /*#__PURE__*/React.createContext({\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  onHide() {}\n});\nexport default ModalContext;", "import classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst ModalDialog = /*#__PURE__*/React.forwardRef(({\n  bsPrefix,\n  className,\n  contentClassName,\n  centered,\n  size,\n  fullscreen,\n  children,\n  scrollable,\n  ...props\n}, ref) => {\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'modal');\n  const dialogClass = `${bsPrefix}-dialog`;\n  const fullScreenClass = typeof fullscreen === 'string' ? `${bsPrefix}-fullscreen-${fullscreen}` : `${bsPrefix}-fullscreen`;\n  return /*#__PURE__*/_jsx(\"div\", {\n    ...props,\n    ref: ref,\n    className: classNames(dialogClass, className, size && `${bsPrefix}-${size}`, centered && `${dialogClass}-centered`, scrollable && `${dialogClass}-scrollable`, fullscreen && fullScreenClass),\n    children: /*#__PURE__*/_jsx(\"div\", {\n      className: classNames(`${bsPrefix}-content`, contentClassName),\n      children: children\n    })\n  });\n});\nModalDialog.displayName = 'ModalDialog';\nexport default ModalDialog;", "import createWithBsPrefix from './createWithBsPrefix';\nexport default createWithBsPrefix('modal-footer');", "import classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport AbstractModalHeader from './AbstractModalHeader';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst ModalHeader = /*#__PURE__*/React.forwardRef(({\n  bsPrefix,\n  className,\n  closeLabel = 'Close',\n  closeButton = false,\n  ...props\n}, ref) => {\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'modal-header');\n  return /*#__PURE__*/_jsx(AbstractModalHeader, {\n    ref: ref,\n    ...props,\n    className: classNames(className, bsPrefix),\n    closeLabel: closeLabel,\n    closeButton: closeButton\n  });\n});\nModalHeader.displayName = 'ModalHeader';\nexport default ModalHeader;", "import * as React from 'react';\nimport { useContext } from 'react';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport CloseButton from './CloseButton';\nimport ModalContext from './ModalContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst AbstractModalHeader = /*#__PURE__*/React.forwardRef(({\n  closeLabel = 'Close',\n  closeVariant,\n  closeButton = false,\n  onHide,\n  children,\n  ...props\n}, ref) => {\n  const context = useContext(ModalContext);\n  const handleClick = useEventCallback(() => {\n    context == null ? void 0 : context.onHide();\n    onHide == null ? void 0 : onHide();\n  });\n  return /*#__PURE__*/_jsxs(\"div\", {\n    ref: ref,\n    ...props,\n    children: [children, closeButton && /*#__PURE__*/_jsx(CloseButton, {\n      \"aria-label\": closeLabel,\n      variant: closeVariant,\n      onClick: handleClick\n    })]\n  });\n});\nexport default AbstractModalHeader;", "import PropTypes from 'prop-types';\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst propTypes = {\n  /** An accessible label indicating the relevant information about the Close Button. */\n  'aria-label': PropTypes.string,\n  /** A callback fired after the Close Button is clicked. */\n  onClick: PropTypes.func,\n  /**\n   * Render different color variant for the button.\n   *\n   * Omitting this will render the default dark color.\n   */\n  variant: PropTypes.oneOf(['white'])\n};\nconst CloseButton = /*#__PURE__*/React.forwardRef(({\n  className,\n  variant,\n  'aria-label': ariaLabel = 'Close',\n  ...props\n}, ref) => /*#__PURE__*/_jsx(\"button\", {\n  ref: ref,\n  type: \"button\",\n  className: classNames('btn-close', variant && `btn-close-${variant}`, className),\n  \"aria-label\": ariaLabel,\n  ...props\n}));\nCloseButton.displayName = 'CloseButton';\nCloseButton.propTypes = propTypes;\nexport default CloseButton;", "import * as React from 'react';\nimport classNames from 'classnames';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default (className => /*#__PURE__*/React.forwardRef((p, ref) => /*#__PURE__*/_jsx(\"div\", {\n  ...p,\n  ref: ref,\n  className: classNames(p.className, className)\n})));", "import createWithBsPrefix from './createWithBsPrefix';\nimport divWithClassName from './divWithClassName';\nconst DivStyledAsH4 = divWithClassName('h4');\nexport default createWithBsPrefix('modal-title', {\n  Component: DivStyledAsH4\n});", "import { useEffect, useRef } from 'react';\nexport function useAttribution(map, attribution) {\n    const attributionRef = useRef(attribution);\n    useEffect(function updateAttribution() {\n        if (attribution !== attributionRef.current && map.attributionControl != null) {\n            if (attributionRef.current != null) {\n                map.attributionControl.removeAttribution(attributionRef.current);\n            }\n            if (attribution != null) {\n                map.attributionControl.addAttribution(attribution);\n            }\n        }\n        attributionRef.current = attribution;\n    }, [\n        map,\n        attribution\n    ]);\n}\n", "import React, { forwardRef, useEffect, useImperativeHandle, useState } from 'react';\nimport { createPortal } from 'react-dom';\nimport { LeafletProvider } from './context.js';\nexport function createContainerComponent(useElement) {\n    function ContainerComponent(props, forwardedRef) {\n        const { instance , context  } = useElement(props).current;\n        useImperativeHandle(forwardedRef, ()=>instance);\n        return props.children == null ? null : /*#__PURE__*/ React.createElement(LeafletProvider, {\n            value: context\n        }, props.children);\n    }\n    return /*#__PURE__*/ forwardRef(ContainerComponent);\n}\nexport function createDivOverlayComponent(useElement) {\n    function OverlayComponent(props, forwardedRef) {\n        const [isOpen, setOpen] = useState(false);\n        const { instance  } = useElement(props, setOpen).current;\n        useImperativeHandle(forwardedRef, ()=>instance);\n        useEffect(function updateOverlay() {\n            if (isOpen) {\n                instance.update();\n            }\n        }, [\n            instance,\n            isOpen,\n            props.children\n        ]);\n        // @ts-ignore _contentNode missing in type definition\n        const contentNode = instance._contentNode;\n        return contentNode ? /*#__PURE__*/ createPortal(props.children, contentNode) : null;\n    }\n    return /*#__PURE__*/ forwardRef(OverlayComponent);\n}\nexport function createLeafComponent(useElement) {\n    function LeafComponent(props, forwardedRef) {\n        const { instance  } = useElement(props).current;\n        useImperativeHandle(forwardedRef, ()=>instance);\n        return null;\n    }\n    return /*#__PURE__*/ forwardRef(LeafComponent);\n}\n", "import { createContext, useContext } from 'react';\nexport const CONTEXT_VERSION = 1;\nexport function createLeafletContext(map) {\n    return Object.freeze({\n        __version: CONTEXT_VERSION,\n        map\n    });\n}\nexport function extendContext(source, extra) {\n    return Object.freeze({\n        ...source,\n        ...extra\n    });\n}\nexport const LeafletContext = createContext(null);\nexport const LeafletProvider = LeafletContext.Provider;\nexport function useLeafletContext() {\n    const context = useContext(LeafletContext);\n    if (context == null) {\n        throw new Error('No context provided: useLeafletContext() can only be used in a descendant of <MapContainer>');\n    }\n    return context;\n}\n", "import { useEffect, useRef } from 'react';\nexport function useEventHandlers(element, eventHandlers) {\n    const eventHandlersRef = useRef();\n    useEffect(function addEventHandlers() {\n        if (eventHandlers != null) {\n            element.instance.on(eventHandlers);\n        }\n        eventHandlersRef.current = eventHandlers;\n        return function removeEventHandlers() {\n            if (eventHandlersRef.current != null) {\n                element.instance.off(eventHandlersRef.current);\n            }\n            eventHandlersRef.current = null;\n        };\n    }, [\n        element,\n        eventHandlers\n    ]);\n}\n", "export function withPane(props, context) {\n    const pane = props.pane ?? context.pane;\n    return pane ? {\n        ...props,\n        pane\n    } : props;\n}\n", "import { useEffect, useRef } from 'react';\nexport function createElementObject(instance, context, container) {\n    return Object.freeze({\n        instance,\n        context,\n        container\n    });\n}\nexport function createElementHook(createElement, updateElement) {\n    if (updateElement == null) {\n        return function useImmutableLeafletElement(props, context) {\n            const elementRef = useRef();\n            if (!elementRef.current) elementRef.current = createElement(props, context);\n            return elementRef;\n        };\n    }\n    return function useMutableLeafletElement(props, context) {\n        const elementRef = useRef();\n        if (!elementRef.current) elementRef.current = createElement(props, context);\n        const propsRef = useRef(props);\n        const { instance  } = elementRef.current;\n        useEffect(function updateElementProps() {\n            if (propsRef.current !== props) {\n                updateElement(instance, props, propsRef.current);\n                propsRef.current = props;\n            }\n        }, [\n            instance,\n            props,\n            context\n        ]);\n        return elementRef;\n    };\n}\n", "import { useEffect } from 'react';\nimport { useAttribution } from './attribution.js';\nimport { useLeafletContext } from './context.js';\nimport { useEventHandlers } from './events.js';\nimport { withPane } from './pane.js';\nexport function useLayerLifecycle(element, context) {\n    useEffect(function addLayer() {\n        const container = context.layerContainer ?? context.map;\n        container.addLayer(element.instance);\n        return function removeLayer() {\n            context.layerContainer?.removeLayer(element.instance);\n            context.map.removeLayer(element.instance);\n        };\n    }, [\n        context,\n        element\n    ]);\n}\nexport function createLayerHook(useElement) {\n    return function useLayer(props) {\n        const context = useLeafletContext();\n        const elementRef = useElement(withPane(props, context), context);\n        useAttribution(context.map, props.attribution);\n        useEventHandlers(elementRef.current, props.eventHandlers);\n        useLayerLifecycle(elementRef.current, context);\n        return elementRef;\n    };\n}\n", "import { createContainerComponent, createDivOverlayComponent, createLeafComponent } from './component.js';\nimport { createControlHook } from './control.js';\nimport { createElementHook, createElementObject } from './element.js';\nimport { createLayerHook } from './layer.js';\nimport { createDivOverlayHook } from './div-overlay.js';\nimport { createPathHook } from './path.js';\nexport function createControlComponent(createInstance) {\n    function createElement(props, context) {\n        return createElementObject(createInstance(props), context);\n    }\n    const useElement = createElementHook(createElement);\n    const useControl = createControlHook(useElement);\n    return createLeafComponent(useControl);\n}\nexport function createLayerComponent(createElement, updateElement) {\n    const useElement = createElementHook(createElement, updateElement);\n    const useLayer = createLayerHook(useElement);\n    return createContainerComponent(useLayer);\n}\nexport function createOverlayComponent(createElement, useLifecycle) {\n    const useElement = createElementHook(createElement);\n    const useOverlay = createDivOverlayHook(useElement, useLifecycle);\n    return createDivOverlayComponent(useOverlay);\n}\nexport function createPathComponent(createElement, updateElement) {\n    const useElement = createElementHook(createElement, updateElement);\n    const usePath = createPathHook(useElement);\n    return createContainerComponent(usePath);\n}\nexport function createTileLayerComponent(createElement, updateElement) {\n    const useElement = createElementHook(createElement, updateElement);\n    const useLayer = createLayerHook(useElement);\n    return createLeafComponent(useLayer);\n}\n", "export function updateGridLayer(layer, props, prevProps) {\n    const { opacity , zIndex  } = props;\n    if (opacity != null && opacity !== prevProps.opacity) {\n        layer.setOpacity(opacity);\n    }\n    if (zIndex != null && zIndex !== prevProps.zIndex) {\n        layer.setZIndex(zIndex);\n    }\n}\n", "function _extends() {\n    _extends = Object.assign || function(target) {\n        for(var i = 1; i < arguments.length; i++){\n            var source = arguments[i];\n            for(var key in source){\n                if (Object.prototype.hasOwnProperty.call(source, key)) {\n                    target[key] = source[key];\n                }\n            }\n        }\n        return target;\n    };\n    return _extends.apply(this, arguments);\n}\nimport { LeafletProvider, createLeafletContext } from '@react-leaflet/core';\nimport { Map as LeafletMap } from 'leaflet';\nimport React, { forwardRef, useCallback, useEffect, useImperativeHandle, useState } from 'react';\nfunction MapContainerComponent({ bounds , boundsOptions , center , children , className , id , placeholder , style , whenReady , zoom , ...options }, forwardedRef) {\n    const [props] = useState({\n        className,\n        id,\n        style\n    });\n    const [context, setContext] = useState(null);\n    useImperativeHandle(forwardedRef, ()=>context?.map ?? null, [\n        context\n    ]);\n    const mapRef = useCallback((node)=>{\n        if (node !== null && context === null) {\n            const map = new LeafletMap(node, options);\n            if (center != null && zoom != null) {\n                map.setView(center, zoom);\n            } else if (bounds != null) {\n                map.fitBounds(bounds, boundsOptions);\n            }\n            if (whenReady != null) {\n                map.whenReady(whenReady);\n            }\n            setContext(createLeafletContext(map));\n        }\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    }, []);\n    useEffect(()=>{\n        return ()=>{\n            context?.map.remove();\n        };\n    }, [\n        context\n    ]);\n    const contents = context ? /*#__PURE__*/ React.createElement(LeafletProvider, {\n        value: context\n    }, children) : placeholder ?? null;\n    return /*#__PURE__*/ React.createElement(\"div\", _extends({}, props, {\n        ref: mapRef\n    }), contents);\n}\nexport const MapContainer = /*#__PURE__*/ forwardRef(MapContainerComponent);\n", "import { createElementObject, createLayerComponent, extendContext } from '@react-leaflet/core';\nimport { Marker as LeafletMarker } from 'leaflet';\nexport const Marker = createLayerComponent(function createMarker({ position , ...options }, ctx) {\n    const marker = new LeafletMarker(position, options);\n    return createElementObject(marker, extendContext(ctx, {\n        overlayContainer: marker\n    }));\n}, function updateMarker(marker, props, prevProps) {\n    if (props.position !== prevProps.position) {\n        marker.setLatLng(props.position);\n    }\n    if (props.icon != null && props.icon !== prevProps.icon) {\n        marker.setIcon(props.icon);\n    }\n    if (props.zIndexOffset != null && props.zIndexOffset !== prevProps.zIndexOffset) {\n        marker.setZIndexOffset(props.zIndexOffset);\n    }\n    if (props.opacity != null && props.opacity !== prevProps.opacity) {\n        marker.setOpacity(props.opacity);\n    }\n    if (marker.dragging != null && props.draggable !== prevProps.draggable) {\n        if (props.draggable === true) {\n            marker.dragging.enable();\n        } else {\n            marker.dragging.disable();\n        }\n    }\n});\n", "import { createElementObject, createTileLayerComponent, updateGridLayer, withPane } from '@react-leaflet/core';\nimport { TileLayer as LeafletTileLayer } from 'leaflet';\nexport const TileLayer = createTileLayerComponent(function createTileLayer({ url , ...options }, context) {\n    const layer = new LeafletTileLayer(url, withPane(options, context));\n    return createElementObject(layer, context);\n}, function updateTileLayer(layer, props, prevProps) {\n    updateGridLayer(layer, props, prevProps);\n    const { url  } = props;\n    if (url != null && url !== prevProps.url) {\n        layer.setUrl(url);\n    }\n});\n", "import React, { useEffect, useState } from 'react';\nimport axios from 'axios';\nimport SkCubeLoading from '../SkCubeLoading';\n\nfunction Disbursement(props) {\n    const token = props.token;\n\n    const [isLoading, setIsLoading] = useState(true);\n    const [isFetching, setIsFetching] = useState(false);\n\n    const [asOf, setAsOf] = useState(\"\");\n\n    const [data, setData] = useState(false);\n\n    const fetch = async () => {\n        \n        let res = await axios.get(\n            '/api/dashboard/disbursement?as_of=' + asOf,\n            {\n                headers: {\n                    \"X-KOINS-HQ-TOKEN\": token\n                }\n            }\n        ).catch((error) => {\n            console.log(error);\n            alert(\"Error in fetching dashboard overview\");\n        })\n\n        // REMOVE HEAD OFFICE FOR DISBURSEMENT\n        // const data = res.data\n        // const removedHO = data.filter(data => {\n        //     return data.areas.id !== 'b9659f7e-c4d5-4b8b-be3b-508bd7c6a583';\n        // });\n        //console.log(\"res.data: \", res.data);\n        if (res.status === 200) {\n            //console.log(\"res.data: \", res.data.areas);\n            //data = res.data;\n            //responseData = res.data;\n            setData(res.data);\n\n            setIsLoading(false);\n            setIsFetching(false);\n        }\n\n    }\n\n    function handleSyncClicked() {\n        setIsFetching(true);\n        //console.log(\"as_of: \", asOf);\n        fetch();\n    }\n\n    function handleAsOfChanged(event) {\n        setAsOf(event.target.value);\n        //console.log(\"as_of: \", asOf);\n    }\n\n    var colSpan = 4;\n\n    // COLORS\n    const areaColor = \"#bad5fd\";\n    const totalColor = \"#c5ffc1\";\n    const branchColor = \"#797979\";\n    const clusterColor = \"#f3cf99\";\n\n    const borderColor = \"#dee2e6\";\n\n    const headerSato = \"10%\";\n    const headerDisbursement = \"30%\";\n    const headerCollection = \"60%\";\n\n\n    const rowDisbursementLink = \"8%\";\n    const rowDisbursementPrincipal = \"32%\";\n    const rowDisbursementStartDate = \"30%\";\n    const rowDisbursementEndDate = \"30%\";\n\n    const rowCollectionLink = \"5%\";\n    const rowCollectionPrincipal = \"21%\";\n    const rowCollectionInterest = \"21%\";\n    const rowCollectionTotal = \"21%\";\n    const rowCollectionStartDate = \"16%\";\n    const rowCollectionEndDate = \"16%\";\n\n    useEffect(() => {\n        fetch();\n\n    }, []);\n\n    return (\n        <>\n            {isLoading ? (\n                <div>\n                    <SkCubeLoading />\n                    <center>\n                        <h6>\n                            Loading Overview...\n                        </h6>\n                    </center>\n                </div>\n            ) : (\n                <>\n                    <div className=\"row\">\n                        <div className=\"col-md-10 col-xs-12\">\n                            <div className=\"form-group\">\n                                <input\n                                    type=\"date\"\n                                    className=\"form-control\"\n                                    disabled={isFetching}\n                                    //disabled={true}\n                                    value={asOf}\n                                    onChange={e => handleAsOfChanged(e)}\n                                />\n                            </div>\n                        </div>\n                        <div className=\"col-md-2 col-xs-12\">\n                            <div className=\"d-grid gap-2\">\n                                <button\n                                    className=\"btn btn-primary btn-block\"\n                                    disabled={isFetching}\n                                    //disabled={true}\n                                    onClick={handleSyncClicked}\n                                >\n                                    <span className=\"bi bi-arrow-repeat\" />\n                                    Sync\n                                </button>\n                            </div>\n                        </div>\n                    </div>\n                    <hr />\n                    {isFetching ? (\n                            <div>\n                                <SkCubeLoading />\n                                <center>\n                                    <h6>\n                                        Loading Overview...\n                                    </h6>\n                                </center>\n                            </div>\n                        ):(\n                            <div className=\"table-responsive\">\n                                <table className=\"table table-sm table-bordered\">\n                                    <tbody>\n\n                                        {data.areas.map((areas, areasIndex) => {\n                                            // console.log(\"updated data: \", this.state.data);\n                                            return (\n                                                <>\n\n                                                    {/* AREA HEADER */}\n                                                    <tr key={\"area-\" + areas.id} style={{ backgroundColor: areaColor }}>\n                                                        <th className=\"text-center\" colSpan={colSpan}>\n                                                            {areas.name}\n                                                        </th>\n                                                    </tr>\n                                                    {/* CLUSTER HEADERS */}\n                                                    {areas.clusters.map((clusters, clustersIndex) => {\n                                                        return (\n                                                            <>\n\n                                                                <tr key={\"cluster-\" + clusters.id} style={{ backgroundColor: clusterColor }}>\n                                                                    <th className=\"text-center\" colSpan={colSpan}>\n                                                                        {clusters.name}\n                                                                    </th>\n                                                                </tr>\n\n                                                                {/* HEADERS */}\n                                                                <tr key={\"header-\" + clusters.id} style={{ backgroundColor: branchColor, color: \"white\" }}>\n                                                                    <th className=\"text-center\" style={{ width: headerSato, verticalAlign: \"middle\" }}>\n                                                                        Sato\n                                                                    </th>\n                                                                    {/* DISBURSEMENT TAB */}\n                                                                    <th className=\"text-center\" style={{ width: headerDisbursement, verticalAlign: \"middle\" }}>\n                                                                        <table style={{ width: \"100%\" }}>\n                                                                            <tr>\n                                                                                <th className=\"text-center\" style={{ borderBottom: \"0.5px solid\", borderColor: borderColor }} colSpan={colSpan}>\n                                                                                    Disbursement\n                                                                                </th>\n                                                                            </tr>\n                                                                            <tr>\n                                                                                <th className=\"text-center\" style={{ borderRight: \"0.5px solid\", borderColor: borderColor, width: rowDisbursementLink }}>\n                                                                                    \n                                                                                </th>\n                                                                                <th className=\"text-center\" style={{ borderRight: \"0.5px solid\", borderColor: borderColor, width: rowDisbursementPrincipal }}>\n                                                                                    Principal\n                                                                                </th>\n                                                                                <th className=\"text-center\" style={{ borderRight: \"0.5px solid\", borderColor: borderColor, width: rowDisbursementStartDate }}>\n                                                                                    Start Date\n                                                                                </th>\n                                                                                <th className=\"text-center\" style={{ width: rowDisbursementEndDate }}>\n                                                                                    End Date\n                                                                                </th>\n                                                                            </tr>\n                                                                        </table>\n                                                                    </th>\n\n                                                                    {/* COLLECTION TAB */}\n                                                                    <th className=\"text-center\" style={{ width: headerCollection, verticalAlign: \"middle\" }}>\n                                                                        <table style={{ width: \"100%\" }}>\n                                                                            <tbody>\n                                                                                <tr>\n                                                                                    <th className=\"text-center\" style={{ borderBottom: \"0.5px solid\", borderColor: borderColor }} colSpan={colSpan+2}>\n                                                                                        Collection\n                                                                                    </th>\n                                                                                </tr>\n\n                                                                                <tr>\n                                                                                    <th className=\"text-center\" style={{ borderRight: \"0.5px solid\", borderColor: borderColor, width: rowCollectionLink }}>\n                                                                                    \n                                                                                    </th>\n                                                                                    <th className=\"text-center\" style={{ borderRight: \"0.5px solid\", borderColor: borderColor, width: rowCollectionPrincipal }}>\n                                                                                        Principal\n                                                                                    </th>\n                                                                                    <th className=\"text-center\" style={{ borderRight: \"0.5px solid\", borderColor: borderColor, width: rowCollectionInterest }}>\n                                                                                        Interest\n                                                                                    </th>\n                                                                                    <th className=\"text-center\" style={{ borderRight: \"0.5px solid\", borderColor: borderColor, width: rowCollectionTotal }}>\n                                                                                        Total\n                                                                                    </th>\n                                                                                    <th className=\"text-center\" style={{ borderRight: \"0.5px solid\", borderColor: borderColor, width: rowCollectionStartDate }}>\n                                                                                        Start Date\n                                                                                    </th>\n                                                                                    <th className=\"text-center\" style={{ width: rowCollectionEndDate }}>\n                                                                                        End Date\n                                                                                    </th>\n                                                                                </tr>\n                                                                            </tbody>\n                                                                        </table>\n\n                                                                    </th>\n                                                                    \n\n                                                                </tr>\n                                                                {/* DATA BRANCH ROW */}\n                                                                {clusters.branches.map((branches, branchesIndex) => {\n                                                                    return (\n                                                                        <>\n\n                                                                            <tr key={\"branch-\" + branches.id} >\n                                                                                <td>\n                                                                                    <strong>\n                                                                                        {/* Branch Name */}\n                                                                                        {branches.name}\n                                                                                    </strong>\n                                                                                </td>\n                                                                                <td className=\"text-center\">\n                                                                                    <table style={{ width: \"100%\" }}>\n                                                                                        <tbody>\n                                                                                            <tr>\n                                                                                                <td className=\"text-center\" style={{ width: rowDisbursementLink }}>\n                                                                                                        {/* Disbursement Link Branches */}\n                                                                                                        {branches.soa_expenses_id.length > 0 ? (\n                                                                                                            <a href={'/data_stores/soa_expenses/'+branches.soa_expenses_id} target='_blank'>\n                                                                                                                <div className='bi bi-search'>\n\n                                                                                                                </div>\n                                                                                                            </a>\n                                                                                                        ):(\n                                                                                                            <>\n                                                                                                            </>\n                                                                                                        )\n                                                                                                        }\n                                                                                                </td>\n\n                                                                                                <td className=\"text-center\" style={{ borderRight: \"0.5px solid\", borderColor: borderColor, width: rowDisbursementPrincipal }}>\n                                                                                                        \n                                                                                                        {/* Disbursement Principal Branches */}\n                                                                                                        {branches.total_disbursement.toLocaleString('en-PH', {\n                                                                                                            //style: 'currency',\n                                                                                                            //currency: 'PHP',\n                                                                                                            maximumFractionDigits: 2,\n                                                                                                        })}\n                                                                                                    \n                                                                                                </td>\n\n                                                                                                <td className=\"text-center\" style={{ borderRight: \"0.5px solid\", borderColor: borderColor, width: rowDisbursementStartDate }}>\n                                                                                                        {/* Disbursement As Of Branches */}\n                                                                                                        {branches.start_date_se}\n                                                                                                </td>\n\n                                                                                                <td className=\"text-center\" style={{ width: rowDisbursementEndDate }}>\n                                                                                                        {/* Disbursement As Of Branches */}\n                                                                                                        {branches.end_date_se}\n                                                                                                </td>\n                                                                                            </tr>\n                                                                                        </tbody>\n                                                                                    </table>\n                                                                                        \n                                                                                    \n                                                                                </td>\n                                                                                <td className=\"text-center\">\n                                                                                    <table style={{ width: \"100%\" }}>\n                                                                                        <tbody>\n                                                                                            <tr>\n                                                                                                <td className=\"text-center\" style={{ borderRight: \"0.5px solid\", borderColor: borderColor, width: rowCollectionLink }}>\n                                                                                                        {/* Collection Link BRANCHES */}\n                                                                                                        {branches.soa_loans_id.length > 0 ? (\n                                                                                                            <a href={'/data_stores/soa_loans/'+branches.soa_loans_id} target='_blank'>\n                                                                                                                <div className='bi bi-search'>\n\n                                                                                                                </div>\n                                                                                                            </a>\n                                                                                                        ):(\n                                                                                                            <>\n                                                                                                            </>\n                                                                                                        )\n                                                                                                        }\n                                                                                                </td>\n                                                                                                <td className=\"text-center\" style={{ borderRight: \"0.5px solid\", borderColor: borderColor, width: rowCollectionPrincipal }}>\n                                                                                                    \n                                                                                                        {/* Principal */}\n                                                                                                        {branches.total_principal_paid.toLocaleString('en-PH', {\n                                                                                                            //style: 'currency',\n                                                                                                            //currency: 'PHP',\n                                                                                                            maximumFractionDigits: 2,\n                                                                                                        })}\n                                                                                                    \n                                                                                                </td>\n                                                                                                <td className=\"text-center\" style={{ borderRight: \"0.5px solid\", borderColor: borderColor, width: rowCollectionInterest }}>\n                                                                                                    \n                                                                                                        {/* Interest */}\n                                                                                                        {branches.total_interest_paid.toLocaleString('en-PH', {\n                                                                                                            //style: 'currency',\n                                                                                                            //currency: 'PHP',\n                                                                                                            maximumFractionDigits: 2,\n                                                                                                        })}\n                                                                                                    \n                                                                                                </td>\n                                                                                                <td className=\"text-center\" style={{ borderRight: \"0.5px solid\", borderColor: borderColor, width: rowCollectionTotal }}>\n                                                                                                    \n                                                                                                        {/* Total */}\n                                                                                                        {branches.total_paid.toLocaleString('en-PH', {\n                                                                                                            //style: 'currency',\n                                                                                                            //currency: 'PHP',\n                                                                                                            maximumFractionDigits: 2,\n                                                                                                        })}\n                                                                                                    \n                                                                                                </td>\n\n                                                                                                <td className=\"text-center\" style={{ borderRight: \"0.5px solid\", borderColor: borderColor, width: rowCollectionStartDate }}>\n                                                                                                        {/* Start Date BRANCHES */}\n                                                                                                        {branches.start_date_sl}\n                                                                                                </td>\n\n                                                                                                <td className=\"text-center\" style={{ width: rowCollectionEndDate }}>\n                                                                                                        {/* End Date BRANCHES */}\n                                                                                                        {branches.end_date_sl}\n                                                                                                </td>\n                                                                                            </tr>\n                                                                                        </tbody>\n                                                                                    </table>\n                                                                                </td>\n                                                                                \n                                                                            </tr>\n                                                                        </>\n                                                                    )\n                                                                })} {/* END OF DATA BRANCH ROW */}\n\n\n                                                                {/* CLUSTER TOTAL ROW*/}\n                                                                <tr key={\"cluster-total\"} style={{ backgroundColor: totalColor }}>\n                                                                    <td>\n                                                                        <strong>\n                                                                            {/* Cluster Name Total */}\n                                                                            {clusters.name + \" Total\"}\n                                                                        </strong>\n                                                                    </td>\n                                                                    <td className=\"text-center\">\n                                                                        <table style={{ width: \"100%\" }}>\n                                                                            <tbody>\n                                                                                <tr>\n                                                                                    <td className=\"text-center\" style={{ borderRight: \"0.5px solid\", borderColor: borderColor, width: rowDisbursementLink }}>\n                                                                                        <strong>\n                                                                                            {/* Disbursement Link CLUSTER */}\n                                                                                            {}\n                                                                                        </strong>\n                                                                                    </td>\n                                                                                    <td className=\"text-center\" style={{ borderRight: \"0.5px solid\", borderColor: borderColor, width: rowDisbursementPrincipal }}>\n                                                                                            \n                                                                                        <strong>\n                                                                                            {/* CLUSTER Disbursement PrincipalTotal */}\n                                                                                            {clusters.cluster_total_disbursement.toLocaleString('en-PH', {\n                                                                                                //style: 'currency',\n                                                                                                //currency: 'PHP',\n                                                                                                maximumFractionDigits: 2,\n                                                                                            })}\n                                                                                        </strong>\n                                                                                        \n                                                                                    </td>\n\n                                                                                    <td className=\"text-center\" style={{ borderRight: \"0.5px solid\", borderColor: borderColor, width: rowDisbursementStartDate }}>\n                                                                                            {/* CLUSTER Disbursement start Date */}\n                                                                                    </td>\n\n                                                                                    <td className=\"text-center\" style={{ width: rowDisbursementEndDate }}>\n                                                                                            {/* CLUSTER Disbursement End Date*/}\n                                                                                    </td>\n                                                                                </tr>\n                                                                            </tbody>\n                                                                        </table>\n                                                                        \n                                                                    </td>\n                                                                    <td className=\"text-center\">\n                                                                        <table style={{ width: \"100%\" }}>\n                                                                            <tbody>\n                                                                                <tr>\n                                                                                    <td className=\"text-center\" style={{ borderRight: \"0.5px solid\", borderColor: borderColor, width: rowCollectionLink }}>\n                                                                                        <strong>\n                                                                                            {/* Collection Link CLUSTER */}\n                                                                                            {}\n                                                                                        </strong>\n                                                                                    </td>\n                                                                                    <td className=\"text-center\" style={{ borderRight: \"0.5px solid\", borderColor: borderColor, width: rowCollectionPrincipal }}>\n                                                                                        <strong>\n                                                                                            {/* Cluster Principal Total */}\n                                                                                            {clusters.cluster_total_principal_paid.toLocaleString('en-PH', {\n                                                                                                //style: 'currency',\n                                                                                                //currency: 'PHP',\n                                                                                                maximumFractionDigits: 2,\n                                                                                            })}\n                                                                                        </strong>\n                                                                                    </td>\n                                                                                    <td className=\"text-center\" style={{ borderRight: \"0.5px solid\", borderColor: borderColor, width: rowCollectionInterest }}>\n                                                                                        <strong>\n                                                                                            {/* Cluster Interest Total */}\n                                                                                            {clusters.cluster_total_interest_paid.toLocaleString('en-PH', {\n                                                                                                //style: 'currency',\n                                                                                                //currency: 'PHP',\n                                                                                                maximumFractionDigits: 2,\n                                                                                            })}\n                                                                                        </strong>\n                                                                                    </td>\n                                                                                    <td className=\"text-center\" style={{ borderRight: \"0.5px solid\", borderColor: borderColor, width: rowCollectionTotal }}>\n                                                                                        <strong>\n                                                                                            {/* Cluster Total Total */}\n                                                                                            {clusters.cluster_total_paid.toLocaleString('en-PH', {\n                                                                                                //style: 'currency',\n                                                                                                //currency: 'PHP',\n                                                                                                maximumFractionDigits: 2,\n                                                                                            })}\n                                                                                        </strong>\n                                                                                    </td>\n                                                                                    <td className=\"text-center\" style={{ borderRight: \"0.5px solid\", borderColor: borderColor, width: rowCollectionStartDate }}>\n                                                                                            {/* CLUSTER COLLECTION  Start Date*/}\n                                                                                            \n                                                                                    </td>\n                                                                                    <td className=\"text-center\" style={{ width: rowCollectionEndDate }}>\n                                                                                            {/* CLUSTER COLLECTION End Date */}\n                                                                                            \n                                                                                    </td>\n                                                                                </tr>\n                                                                            </tbody>\n                                                                        </table>\n\n                                                                    </td>\n                                                                </tr>\n                                                            </>\n                                                        )\n                                                    })}  {/* END OF CLUSTER */}\n\n                                                    {/* AREA TOTAL ROW */}\n                                                    <tr key={\"area-total\"} style={{ backgroundColor: areaColor }}>\n                                                        <td>\n                                                            <strong>\n                                                                {/* Area Name Total */}\n                                                                {areas.name + \" Total\"}\n                                                            </strong>\n                                                        </td>\n                                                        <td className=\"text-center\">\n                                                            <table style={{ width: \"100%\" }}>\n                                                                <tbody>\n                                                                    <tr>\n                                                                        <td className=\"text-center\" style={{ borderRight: \"0.5px solid\", borderColor: borderColor, width: rowDisbursementLink }}>\n                                                                            <strong>\n                                                                                {/* Disbursement Link AREA */}\n                                                                                {}\n                                                                            </strong>\n                                                                        </td>\n                                                                        <td className=\"text-center\" style={{ borderRight: \"0.5px solid\", borderColor: borderColor, width: rowDisbursementPrincipal }}>\n                                                                                \n                                                                            <strong>\n                                                                                {/* Area Disbursement Total */}\n                                                                                {areas.areas_total_disbursement.toLocaleString('en-PH', {\n                                                                                    //style: 'currency',\n                                                                                    //currency: 'PHP',\n                                                                                    maximumFractionDigits: 2,\n                                                                                })}\n                                                                            </strong>\n                                                                            \n                                                                        </td>\n\n                                                                        <td className=\"text-center\" style={{ borderRight: \"0.5px solid\", borderColor: borderColor, width: rowDisbursementStartDate }}>\n                                                                                {/* Area Disbursement start date */}\n                                                                                <strong>\n\n                                                                                </strong>\n                                                                        </td>\n\n                                                                        <td className=\"text-center\" style={{ width: rowDisbursementEndDate }}>\n                                                                                {/* Area Disbursement end date */}\n                                                                                <strong>\n\n                                                                                </strong>\n                                                                        </td>\n                                                                    </tr>\n                                                                </tbody>\n                                                            </table>\n                                                            \n                                                        </td>\n                                                        <td className=\"text-center\">\n                                                            <table style={{ width: \"100%\" }}>\n                                                                <tbody>\n                                                                    <tr>\n                                                                        <td className=\"text-center\" style={{ borderRight: \"0.5px solid\", borderColor: borderColor, width: rowCollectionLink }}>\n                                                                            <strong>\n                                                                                {/* Collection Link AREA */}\n                                                                                {}\n                                                                            </strong>\n                                                                        </td>\n                                                                        <td className=\"text-center\" style={{ borderRight: \"0.5px solid\", borderColor: borderColor, width: rowCollectionPrincipal }}>\n                                                                            <strong>\n                                                                                {/* Area Principal Total */}\n                                                                                {areas.areas_total_principal_paid.toLocaleString('en-PH', {\n                                                                                    //style: 'currency',\n                                                                                    //currency: 'PHP',\n                                                                                    maximumFractionDigits: 2,\n                                                                                })}\n                                                                            </strong>\n                                                                        </td>\n                                                                        <td className=\"text-center\" style={{ borderRight: \"0.5px solid\", borderColor: borderColor, width: rowCollectionInterest }}>\n                                                                            <strong>\n                                                                                {/* Area Interest Total */}\n                                                                                {areas.areas_total_interest_paid.toLocaleString('en-PH', {\n                                                                                    //style: 'currency',\n                                                                                    //currency: 'PHP',\n                                                                                    maximumFractionDigits: 2,\n                                                                                })}\n                                                                            </strong>\n                                                                        </td>\n                                                                        <td className=\"text-center\" style={{ borderRight: \"0.5px solid\", borderColor: borderColor, width: rowCollectionTotal }}>\n                                                                            <strong>\n                                                                                {/* Area Total Total */}\n                                                                                {areas.areas_total_paid.toLocaleString('en-PH', {\n                                                                                    //style: 'currency',\n                                                                                    //currency: 'PHP',\n                                                                                    maximumFractionDigits: 2,\n                                                                                })}\n                                                                            </strong>\n                                                                        </td>\n                                                                        <td className=\"text-center\" style={{ borderRight: \"0.5px solid\", borderColor: borderColor, width: rowCollectionStartDate }}>\n                                                                            <strong>\n                                                                                {/* Area As Of start date */}\n                                                                            </strong>\n                                                                        </td>\n                                                                        <td className=\"text-center\" style={{ width: rowCollectionEndDate }}>\n                                                                            <strong>\n                                                                                {/* Area As Of end date */}\n                                                                            </strong>\n                                                                        </td>\n                                                                    </tr>\n                                                                </tbody>\n                                                            </table>\n\n                                                        </td>\n                                                        \n                                                    </tr>\n                                                    <br />\n\n                                                </>\n                                            )\n                                        })} {/* END OF AREA */}\n\n                                        {/* GRAND TOTAL */}\n                                        <tr key={\"grand-total\"} style={{ backgroundColor: \"#000\", color: \"#fff\" }}>\n                                            <td>\n                                                <strong>\n                                                    {/* Grand Total */}\n                                                    Grand Total\n                                                </strong>\n                                            </td>\n                                            <td className=\"text-center\">\n                                                <table style={{ width: \"100%\" }}>\n                                                    <tbody>\n                                                        <tr>\n                                                            <td className=\"text-center\" style={{ borderRight: \"0.5px solid\", borderColor: borderColor, width: rowDisbursementLink }}>\n                                                                <strong>\n                                                                    {/* Disbursement Link GRAND */}\n                                                                    {}\n                                                                </strong>\n                                                            </td>\n                                                            <td className=\"text-center\" style={{ borderRight: \"0.5px solid\", borderColor: borderColor, width: rowDisbursementPrincipal }}>\n                                                                    \n                                                                <strong>\n                                                                    {/* Grand Disbursement Total */}\n                                                                    {data.grand_total_disbursement.toLocaleString('en-PH', {\n                                                                        //style: 'currency',\n                                                                        //currency: 'PHP',\n                                                                        maximumFractionDigits: 2,\n                                                                    })}\n                                                                </strong>\n                                                                \n                                                            </td>\n\n                                                            <td className=\"text-center\" style={{ borderRight: \"0.5px solid\", borderColor: borderColor, width: rowDisbursementStartDate }}>\n                                                                    {/* Grand Disbursement Start Date */}\n                                                                    <strong>\n\n                                                                    </strong>\n                                                            </td>\n\n                                                            <td className=\"text-center\" style={{ width: rowDisbursementEndDate }}>\n                                                                    {/* Grand Disbursement End Date */}\n                                                                    <strong>\n\n                                                                    </strong>\n                                                            </td>\n                                                        </tr>\n                                                    </tbody>\n                                                </table>\n                                                \n                                            </td>\n                                            <td className=\"text-center\">\n                                                <table style={{ width: \"100%\" }}>\n                                                    <tbody>\n                                                        <tr>\n                                                            <td className=\"text-center\" style={{ borderRight: \"0.5px solid\", borderColor: borderColor, width: rowCollectionLink }}>\n                                                                <strong>\n                                                                    {/* Collection Link GRAND */}\n                                                                    {}\n                                                                </strong>\n                                                            </td>\n                                                            <td className=\"text-center\" style={{ borderRight: \"0.5px solid\", borderColor: borderColor, width: rowCollectionPrincipal }}>\n                                                                <strong>\n                                                                    {/* Grand Principal Total */}\n                                                                    {data.grand_total_principal_paid.toLocaleString('en-PH', {\n                                                                        //style: 'currency',\n                                                                        //currency: 'PHP',\n                                                                        maximumFractionDigits: 2,\n                                                                    })}\n                                                                </strong>\n                                                            </td>\n                                                            <td className=\"text-center\" style={{ borderRight: \"0.5px solid\", borderColor: borderColor, width: rowCollectionInterest }}>\n                                                                <strong>\n                                                                    {/* Grand Interest Total */}\n                                                                    {data.grand_total_interest_paid.toLocaleString('en-PH', {\n                                                                        //style: 'currency',\n                                                                        //currency: 'PHP',\n                                                                        maximumFractionDigits: 2,\n                                                                    })}\n                                                                </strong>\n                                                            </td>\n                                                            <td className=\"text-center\" style={{ borderRight: \"0.5px solid\", borderColor: borderColor, width: rowCollectionTotal }}>\n                                                                <strong>\n                                                                    {/* Grand Total Total */}\n                                                                    {data.grand_total_paid.toLocaleString('en-PH', {\n                                                                        //style: 'currency',\n                                                                        //currency: 'PHP',\n                                                                        maximumFractionDigits: 2,\n                                                                    })}\n                                                                </strong>\n                                                            </td>\n                                                            <td className=\"text-center\" style={{ borderRight: \"0.5px solid\", borderColor: borderColor, width: rowCollectionStartDate }}>\n                                                                <strong>\n                                                                    {/* Grand Start Date */}\n                                                                </strong>\n                                                            </td>\n\n                                                            <td className=\"text-center\" style={{ width: rowCollectionEndDate }}>\n                                                                <strong>\n                                                                    {/* Grand End Date */}\n                                                                </strong>\n                                                            </td>\n                                                        </tr>\n                                                    </tbody>\n                                                </table>\n\n                                            </td>\n                                        </tr>\n\n                                    </tbody>\n                                </table>\n                            </div>\n                        )\n                    }\n                    \n                </>\n            )}\n        </>\n\n    )\n}\n\nexport default Disbursement", "import React, { useState, useEffect } from \"react\";\nimport Modal from 'react-bootstrap/Modal';\nimport Button from 'react-bootstrap/Button';\nimport axios from 'axios';\nimport ErrorList from '../ErrorList';\nimport MembersProfileHome from './MembersProfileHome';\nimport MembersProfileLoans from './MembersProfileLoans';\nimport MembersProfileSavings from './MembersProfileSavings';\nimport MembersProfileInsurance from './MembersProfileInsurance';\nimport MembersProfileEquities from './MembersProfileEquities';\nimport MembersProfileSurveyAnswers from './MembersProfileSurveyAnswers';\nimport MembersProfileShares from './MembersProfileShares';\nimport MembersProfileAttachmentFiles from './MembersProfileAttachmentFiles';\nimport MembersProfileMembershipPayments from './MembersProfileMembershipPayments';\nimport MembersProfileMyKoins from './MembersProfileMyKoins';\nimport MembersProfileActions from './MembersProfileActions';\n\nexport default function MembersProfile(props) {\n  const [member]                        = useState(props.member);\n  const [data]                          = useState(props.data);\n  const [isResigned]                    = useState(props.is_resigned);\n  const [isReinstated]                  = useState(props.reinstated);\n  const [dateOfMembership]              = useState(props.date_of_membership);\n  const [memberAge]                     = useState(props.member_age);\n  const [dateOfBirth]                   = useState(props.date_of_birth);\n  const [dateResigned]                  = useState(props.date_resigned);\n  const [previousDateResigned]          = useState(props.previous_date_resigned);\n  const [membershipType]                = useState(props.membership_type);\n  const [membershipArrangement]         = useState(props.membership_arrangement);\n  const [recognitionDate]               = useState(props.recognition_date);\n  const [lengthOfStay]                  = useState(props.length_of_stay);\n  const [branch]                        = useState(props.branch);\n  const [center]                        = useState(props.center);\n  const [profilePictureUrl]             = useState(props.profile_picture_url);\n  const [memberData]                    = useState(props.member_data);\n  const [activeLoans]                   = useState(props.active_loans);\n  const [pendingLoans]                  = useState(props.pending_loans);\n  const [forVerificationLoans]          = useState(props.for_verification_loans);\n  const [paidLoans]                     = useState(props.paid_loans);\n  const [verifiedLoans]                 = useState(props.verified_loans);\n  const [inProcessLoans]                = useState(props.in_process_loans);\n  const [writeoffLoans]                 = useState(props.writeoff_loans);\n  const [forwriteoffLoans]              = useState(props.for_writeoff_loans);\n  const [savingsAccounts]               = useState(props.savings_accounts);\n  const [insuranceAccounts]             = useState(props.insurance_accounts);\n  const [equityAccounts]                = useState(props.equity_accounts);\n  const [memberShares]                  = useState(props.member_shares);\n  const [membershipPayments]            = useState(props.membership_payments);\n  const [surveys]                       = useState(props.surveys);\n  const [surveyAnswers]                 = useState(props.survey_answers);\n  const [loanBalance]                   = useState(props.loan_balance);\n  const [loanCycles]                    = useState(props.loan_cycles);\n  const [missingAccounts]               = useState(props.missing_accounts);\n  const [token]                         = useState(props.token);\n  const [address]                       = useState(props.address);\n  const [legalDependents]               = useState(props.legal_dependents);\n  const [beneficiaries]                 = useState(props.beneficiaries);\n  const [resignationRecords]            = useState(props.resignation_records);\n  const [entryPointLoanCycleCount]      = useState(props.entry_point_loan_cycle_count);\n  const [totalSavings]                  = useState(props.total_savings);\n  const [totalInsurance]                = useState(props.total_insurance);\n  const [totalEquity]                   = useState(props.total_equity);\n  const [roles]                         = useState(props.roles);\n  const [attachmentFiles]               = useState(props.attachment_files);\n  const [loanProductsForRestructuring]  = useState(props.loan_products_for_restructuring);\n  const [coMakers]                      = useState(props.co_makers);\n  const [projectType]                   = useState(props.project_type);\n  const [accruedInterest]               = useState(props.accrued_interest_data);\n  const [faceAmount]                    = useState(props.face_amount);\n  const [fromMobileApp]                 = useState(props.from_mobile_app);\n\n  const [configData, setConfigData] = useState();\n\n  useEffect(() => {\n    axios.get('/api/yml_values/production_values')\n      .then(response => setConfigData(response.data))\n      .catch(error => console.error(error));\n  }, []);\n\n  return (\n    <>\n      <div className=\"container-fluid\">\n        <div className=\"row d-flex justify-content-center align-items-center\">\n          <div className=\"col\">\n            <div className=\"card\">\n              <div className=\"rounded-top text-white d-flex flex-row\" style={ { backgroundColor: \"#000\", height: \"200px\" } }>\n                <div className=\"ms-4 d-flex flex-column\" style={{ width: \"150px\" }}>\n                  <img \n                    src={profilePictureUrl}\n                    className=\"img-fluid img-thumbnail mt-4 mb-2\"\n                    style={{ width: \"150px\", zIndex: \"1\", objectFit: \"cover\", overflow: \"hidden\" }}\n                  />\n                </div>\n                <div className=\"ms-4 mt-4\">\n                  <h3>\n                    {member.last_name}, {member.first_name} {member.middle_name}\n                  </h3>\n                  <p>\n                    {member.identification_number}\n                  </p>\n                  {(() => {\n                    if(JSON.stringify(configData, null, 2) == 'true') {\n                      if(fromMobileApp == \"yes\") {\n                        return (\n                          <button class=\"btn btn-primary\">\n                            Mobile App\n                          </button>\n                        )\n                      }\n                    }\n                  })()}\n                </div>\n              </div>\n            </div>\n            <div className=\"card\">\n              <ul className=\"nav nav-tabs\" role=\"tablist\">\n                <li className=\"nav-item\">\n                  <a href=\"#home\" role=\"tab\" data-bs-toggle=\"tab\" aria-controls=\"profile\" className=\"nav-link active show\">\n                    Profile\n                  </a>\n                </li>\n                <li className=\"nav-item\">\n                  <a href=\"#loans\" role=\"tab\" data-bs-toggle=\"tab\" aria-controls=\"loans\" className=\"nav-link\">\n                    Loans\n                  </a>\n                </li>\n                <li className=\"nav-item\">\n                  <a href=\"#savings_accounts\" role=\"tab\" data-bs-toggle=\"tab\" aria-controls=\"savings_accounts\" className=\"nav-link\">\n                    Savings\n                  </a>\n                </li>\n                <li className=\"nav-item\">\n                  <a href=\"#insurance_accounts\" role=\"tab\" data-bs-toggle=\"tab\" aria-controls=\"insurance_accounts\" className=\"nav-link\">\n                    Insurance\n                  </a>\n                </li>\n                <li className=\"nav-item\">\n                  <a href=\"#equity_accounts\" role=\"tab\" data-bs-toggle=\"tab\" aria-controls=\"equity_accounts\" className=\"nav-link\">\n                    Equity\n                  </a>\n                </li>\n                <li className=\"nav-item\">\n                  <a href=\"#survey_answers\" role=\"tab\" data-bs-toggle=\"tab\" aria-controls=\"survey_answers\" className=\"nav-link\">\n                    Surveys\n                  </a>\n                </li>\n                <li className=\"nav-item\">\n                  <a href=\"#shares\" role=\"tab\" data-bs-toggle=\"tab\" aria-controls=\"shares\" className=\"nav-link\">\n                    Shares\n                  </a>\n                </li>\n                <li className=\"nav-item\">\n                  <a href=\"#attachments\" role=\"tab\" data-bs-toggle=\"tab\" aria-controls=\"attachments\" className=\"nav-link\">\n                    Attachment Files\n                  </a>\n                </li>\n                <li className=\"nav-item\">\n                  <a href=\"#membership_payments\" role=\"tab\" data-bs-toggle=\"tab\" aria-controls=\"membership_payments\" className=\"nav-link\">\n                    Membership Payments\n                  </a>\n                </li>\n                <li className=\"nav-item\">\n                  <a href=\"#mykoins\" role=\"tab\" data-bs-toggle=\"tab\" aria-controls=\"mykoins\" className=\"nav-link\">\n                    My KOINS\n                  </a>\n                </li>\n                <li className=\"nav-item\">\n                  <a href=\"#actions\" role=\"tab\" data-bs-toggle=\"tab\" aria-controls=\"actions\" className=\"nav-link\">\n                    Actions\n                  </a>\n                </li>\n              </ul>\n              \n              <div className=\"tab-content border-start border-bottom border-end\">\n                <div id=\"home\" className=\"home p-3 tab-pane active show\" role=\"tabpanel\">\n                  <MembersProfileHome\n                    member={member}\n                    data={data}\n                    branch={branch}\n                    center={center}\n                    isResigned={isResigned}\n                    isReinstated={isReinstated}\n                    dateOfMembership={dateOfMembership}\n                    dateResigned={dateResigned}\n                    previousDateResigned={previousDateResigned}\n                    membershipType={membershipType}\n                    membershipArrangement={membershipArrangement}\n                    recognitionDate={recognitionDate}\n                    lengthOfStay={lengthOfStay}\n                    faceAmount={faceAmount}\n                    memberAge={memberAge}\n                    dateOfBirth={dateOfBirth}\n                    address={address}\n                    legalDependents={legalDependents}\n                    beneficiaries={beneficiaries}\n                    resignationRecords={resignationRecords}\n                    projectType={projectType}\n                  />\n                </div>\n                <div id=\"loans\" className=\"home p-3 tab-pane\" role=\"tabpanel\">\n                  <MembersProfileLoans\n                    memberId={member.id}\n                    token={token}\n                    activeLoans={activeLoans}\n                    pendingLoans={pendingLoans}\n                    forVerificationLoans={forVerificationLoans}\n                    verifiedLoans={verifiedLoans}\n                    inProcessLoans={inProcessLoans}\n                    writeoffLoans={writeoffLoans}\n                    paidLoans={paidLoans}\n                    entryPointLoanCycleCount={entryPointLoanCycleCount}\n                    loanProductsForRestructuring={loanProductsForRestructuring}\n                    coMakers={coMakers}\n                    accruedInterest={accruedInterest}\n                    forwriteoffLoans={forwriteoffLoans}\n                  />\n                </div>\n                <div id=\"savings_accounts\" className=\"home p-3 tab-pane\" role=\"tabpanel\">\n                  <MembersProfileSavings\n                    records={savingsAccounts || []}\n                    total={totalSavings}\n                  />\n                </div>\n                <div id=\"insurance_accounts\" className=\"home p-3 tab-pane\" role=\"tabpanel\">\n                  <MembersProfileInsurance\n                    records={insuranceAccounts || []}\n                    total={totalInsurance}\n                    roles={roles}\n                  />\n                </div>\n                <div id=\"equity_accounts\" className=\"home p-3 tab-pane\" role=\"tabpanel\">\n                  <MembersProfileEquities\n                    records={equityAccounts || []}\n                    total={totalEquity}\n                  />\n                </div>\n                <div id=\"survey_answers\" className=\"home p-3 tab-pane\" role=\"tabpanel\">\n                  <MembersProfileSurveyAnswers\n                    records={surveyAnswers || []}\n                    memberId={member.id}\n                  />\n                </div>\n                <div id=\"shares\" className=\"home p-3 tab-pane\" role=\"tabpanel\">\n                  <MembersProfileShares\n                    records={memberShares || []}\n                    memberId={member.id}\n                    roles={roles}\n                  />\n                </div>\n                <div id=\"attachments\" className=\"home p-3 tab-pane\" role=\"tabpanel\">\n                  <MembersProfileAttachmentFiles\n                    records={attachmentFiles || []}\n                    memberId={member.id}\n                    roles={roles}\n                  />\n                </div>\n                <div id=\"membership_payments\" className=\"home p-3 tab-pane\" role=\"tabpanel\">\n                  <MembersProfileMembershipPayments\n                    records={membershipPayments || []}\n                    memberId={member.id}\n                    roles={roles}\n                  />\n                </div>\n                <div id=\"mykoins\" className=\"home p-3 tab-pane\" role=\"tabpanel\">\n                  <MembersProfileMyKoins\n                    memberId={member.id}\n                    token={token}\n                  />\n                </div>\n                <div id=\"actions\" className=\"home p-3 tab-pane\" role=\"tabpanel\">\n                  <MembersProfileActions\n                    member={member}\n                    memberId={member.id}\n                    surveys={surveys}\n                    token={token}\n                    roles={roles}\n                    status={member.status}\n                  />\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n    </>\n  )\n}\n", "import classNames from 'classnames';\nimport * as React from 'react';\nimport { useButtonProps } from '@restart/ui/Button';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst Button = /*#__PURE__*/React.forwardRef(({\n  as,\n  bsPrefix,\n  variant = 'primary',\n  size,\n  active = false,\n  disabled = false,\n  className,\n  ...props\n}, ref) => {\n  const prefix = useBootstrapPrefix(bsPrefix, 'btn');\n  const [buttonProps, {\n    tagName\n  }] = useButtonProps({\n    tagName: as,\n    disabled,\n    ...props\n  });\n  const Component = tagName;\n  return /*#__PURE__*/_jsx(Component, {\n    ...buttonProps,\n    ...props,\n    ref: ref,\n    disabled: disabled,\n    className: classNames(className, prefix, active && 'active', variant && `${prefix}-${variant}`, size && `${prefix}-${size}`, props.href && disabled && 'disabled')\n  });\n});\nButton.displayName = 'Button';\nexport default Button;", "const _excluded = [\"as\", \"disabled\"];\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from 'react';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function isTrivialHref(href) {\n  return !href || href.trim() === '#';\n}\nexport function useButtonProps({\n  tagName,\n  disabled,\n  href,\n  target,\n  rel,\n  role,\n  onClick,\n  tabIndex = 0,\n  type\n}) {\n  if (!tagName) {\n    if (href != null || target != null || rel != null) {\n      tagName = 'a';\n    } else {\n      tagName = 'button';\n    }\n  }\n  const meta = {\n    tagName\n  };\n  if (tagName === 'button') {\n    return [{\n      type: type || 'button',\n      disabled\n    }, meta];\n  }\n  const handleClick = event => {\n    if (disabled || tagName === 'a' && isTrivialHref(href)) {\n      event.preventDefault();\n    }\n    if (disabled) {\n      event.stopPropagation();\n      return;\n    }\n    onClick == null ? void 0 : onClick(event);\n  };\n  const handleKeyDown = event => {\n    if (event.key === ' ') {\n      event.preventDefault();\n      handleClick(event);\n    }\n  };\n  if (tagName === 'a') {\n    // Ensure there's a href so Enter can trigger anchor button.\n    href || (href = '#');\n    if (disabled) {\n      href = undefined;\n    }\n  }\n  return [{\n    role: role != null ? role : 'button',\n    // explicitly undefined so that it overrides the props disabled in a spread\n    // e.g. <Tag {...props} {...hookProps} />\n    disabled: undefined,\n    tabIndex: disabled ? undefined : tabIndex,\n    href,\n    target: tagName === 'a' ? target : undefined,\n    'aria-disabled': !disabled ? undefined : disabled,\n    rel: tagName === 'a' ? rel : undefined,\n    onClick: handleClick,\n    onKeyDown: handleKeyDown\n  }, meta];\n}\nconst Button = /*#__PURE__*/React.forwardRef((_ref, ref) => {\n  let {\n      as: asProp,\n      disabled\n    } = _ref,\n    props = _objectWithoutPropertiesLoose(_ref, _excluded);\n  const [buttonProps, {\n    tagName: Component\n  }] = useButtonProps(Object.assign({\n    tagName: asProp,\n    disabled\n  }, props));\n  return /*#__PURE__*/_jsx(Component, Object.assign({}, props, buttonProps, {\n    ref: ref\n  }));\n});\nButton.displayName = 'Button';\nexport default Button;", "import React from \"react\";\n\nexport default function ErrorList(props) {\n  if(props.errors && props.errors.length > 0) {\n    return (\n      <div className=\"alert alert-danger\">\n        <div className=\"row\">\n          <div className=\"col\">\n            <br/>\n            <p>\n              <strong>\n                The following errors occurred:\n              </strong>\n            </p>\n            <ul>\n              {props.errors.map((e, i) => {\n                return (\n                  <li key={`error-${i}`}>\n                    {e}\n                  </li>\n                )\n              })}\n            </ul>\n          </div>\n        </div>\n      </div>\n    )\n  } else {\n    return (\n      <></>\n    )\n  }\n}\n", "import React, { useState, useEffect } from \"react\";\nimport MembersProfileLegalDependents from \"./MembersProfileLegalDependents\";\nimport MembersProfileBeneficiaries from \"./MembersProfileBeneficiaries\";\nimport MembersProfileResignationRecords from \"./MembersProfileResignationRecords\";\nimport MembersProfileProjectType from \"./MembersProfileProjectType\";\nimport MembersProfilePrincipalBorrowers from \"./MembersProfilePrincipalBorrowers\";\nimport axios from 'axios';\nimport AddressService from \"../utils/AddressService\";\n\n\nexport default function MembersProfileHome(props) {\n  const [configData,     setConfigData]     = useState();\n  const [regions,        setRegions]        = useState([]);\n  const [provinces,      setProvinces]      = useState([]);\n  const [municipalities, setMunicipalities] = useState([]);\n  const [barangays,      setBarangays]      = useState([]);\n\n  useEffect(() => {\n    const fetchData = async () => {\n      try {\n        // Fetch configuration data\n        const configResponse = await axios.get('/api/yml_values/production_values');\n        setConfigData(configResponse.data);\n        \n        // Fetch regions data\n        const regionsResponse = await axios.get('/api/v1/administration/admin_address/fetch'); \n        setRegions(regionsResponse.data);\n\n        // Fetch province data\n        const provincesResponse = await axios.get('/api/v1/administration/admin_province/fetch'); \n        setProvinces(provincesResponse.data);\n\n        // Fetch municipality data\n        const municipalitiesResponse = await axios.get('/api/v1/administration/admin_municipality/fetch'); \n        setMunicipalities(municipalitiesResponse.data);\n\n        // Fetch barangay data\n        const barangaysResponse = await axios.get('/api/v1/administration/admin_barangay/fetch'); \n        setBarangays(barangaysResponse.data);\n        \n      } catch (error) {\n        console.error('Error fetching data:', error);\n      }\n    };\n    \n    fetchData();\n  }, []);\n\n  const getRegionName = (regionId) => {\n    if (!Array.isArray(regions)) {\n      console.error('Regions data is not an array or not defined:', regions);\n      return 'Region not found';\n    }\n    const region = regions.find(r => r.id === regionId);\n    return region ? region.region_name : 'Region not found';\n  };\n\n  const getProvinceName = (provinceId) => {\n    if (!Array.isArray(provinces)) {\n      console.error('Provinces data is not an array or not defined:', provinces);\n      return 'Province not found';\n    }\n    const province = provinces.find(p => p.id === provinceId);\n    return province ? province.province_name : 'Province not found';\n  };\n\n  const getMunicipalityName = (municipalityId) => {\n    if (!Array.isArray(municipalities)) {\n        console.error('Municipalities data is not an array or not defined:', municipalities);\n        return 'Municipality not found';\n    }\n    const municipality = municipalities.find(m => m.id === municipalityId);\n    return municipality ? municipality.municipality_name : 'Municipality not found';\n  };\n\n  const getBarangayName = (barangayId) => {\n    if (!Array.isArray(barangays)) {\n      console.error('Barangays data is not an array or not defined:', barangays);\n      return 'Barangay not found';\n    }\n    const barangay = barangays.find(b => b.id === barangayId);\n    return barangay ? barangay.barangay_name : 'Barangay not found';\n  };\n\n\n  return (\n    <div id=\"semi_member_details\">\n      <div className=\"row\">\n        <div className=\"col-md-3\">\n          <ul className=\"list-group list-group-unbordered\">\n            {(() => {\n              if(JSON.stringify(configData, null, 2) == 'true') {\n                if(props.member.insurance_status == 'inforce') {\n                  return (\n                    <button className=\"btn btn-success\">\n                        <b>\n                          INFORCE\n                        </b>\n                      </button>\n                    )\n                  }\n                else if(props.member.insurance_status == 'lapsed') {\n                  return (\n                    <button className=\"btn btn-warning\">\n                      <b>\n                        LAPSED    \n                      </b>\n                    </button>\n                  )\n                }\n                else if(props.member.insurance_status == 'dormant') {\n                  return (\n                    <button className=\"btn btn-danger\">\n                      <b>\n                        DORMANT    \n                      </b>\n                    </button>\n                  )\n                }\n                else if(props.member.insurance_status == 'pending') {\n                  return (\n                    <button className=\"btn btn-light\">\n                      <b>\n                        PENDING    \n                      </b>\n                    </button>\n                  )\n                }\n              }    \n            })()}\n            <li className=\"list-group-item\">\n              Branch\n              <div className=\"value text-muted\">\n                <b>\n                  {props.branch ? props.branch.name : \"N/A\"}\n                </b>\n              </div>\n            </li>\n            <li className=\"list-group-item\">\n              Center\n              <div className=\"value text-muted\">\n                <b>\n                  {props.center ? props.center.name : \"N/A\"}\n                </b>\n              </div>\n            </li>\n            <li className=\"list-group-item\">\n              Status\n              <div className=\"value text-muted\">\n                <b>\n                  {props.member.status.toUpperCase()}\n                </b>\n              </div>\n            </li>\n            <li className=\"list-group-item\">\n              Date of Membership\n              <div className=\"value text-muted\">\n                <b>\n                  {props.dateOfMembership ? props.dateOfMembership : \"N/A\"}\n                </b>\n              </div>\n            </li>\n            {(() => {\n              if(props.isResigned) {\n                return (\n                  <li className=\"list-group-item\">\n                    Date Resigned\n                    <div className=\"value text-muted\">\n                      <b>\n                        {props.dateResigned}\n                      </b>\n                    </div>\n                  </li>\n                )\n              }\n            })()}\n            {(() => {\n              if(props.previousDateResigned) {\n                return (\n                  <li className=\"list-group-item\">\n                    Previous Date Resigned\n                    <div className=\"value text-muted\">\n                      <b>\n                        {props.previousDateResigned}\n                      </b>\n                    </div>\n                  </li>\n                )\n              }\n            })()}\n            <li className=\"list-group-item\">\n              Insurance Status\n              <div className=\"value text-muted\">\n                <b>\n                  {props.member.insurance_status.toUpperCase()}\n                </b>\n              </div>\n            </li>\n            {(() => {\n              if(JSON.stringify(configData, null, 2) == 'false') {\n                return (\n                  <li className=\"list-group-item\">\n                    Membership Type\n                    <div className=\"value text-muted\">\n                      <b>\n                        {props.membershipType ? props.membershipType.name : \"N/A\"}\n                      </b>\n                    </div>\n                  </li>\n                )\n              }\n            })()}\n            {(() => {\n              if(JSON.stringify(configData, null, 2) == 'false') {\n                return (\n                  <li className=\"list-group-item\">\n                    Arrangement\n                    <div className=\"value text-muted\">\n                      <b>\n                        {props.membershipArrangement ? props.membershipArrangement.name : \"N/A\"}\n                      </b>\n                    </div>\n                  </li>\n                )\n              }\n            })()}   \n            <li className=\"list-group-item\">\n                    Recognition Date\n                    <div className=\"value text-muted\">\n                      <b>\n                        {props.recognitionDate ? props.recognitionDate : \"N/A\"}\n                      </b>\n                    </div>\n                  </li>\n            <li className=\"list-group-item\">\n              Length of Stay (MBA)\n              <div className=\"value text-muted\">\n                <b>\n                  {props.lengthOfStay ? props.lengthOfStay : \"N/A\"}\n                </b>\n              </div>\n            </li>\n              {(() => {\n              if(JSON.stringify(configData, null, 2) == 'true')  {\n                return (\n                  <li className=\"list-group-item\">\n                    Face Amount\n                    <div className=\"value text-muted\">\n                      <b>\n                        {props.faceAmount ? props.faceAmount: \"N/A\"}\n                      </b>\n                    </div>\n                  </li>\n                )\n              }\n            })()}\n            <li className=\"list-group-item\">\n              Resolution Number\n              <div className=\"value text-muted\">\n                <b>\n                {props.member.data && props.member.data.board_resolution_number \n                  ? props.member.data.board_resolution_number \n                  : \"N/A\"}\n                  {/* {props.member.status === \"active\" && props.member.data.new_reso ? \n  (props.member.data.new_reso.board_resolution_number ? \n    props.member.data.new_reso.resolution_number : \"N/A\") \n  : (props.member.status === \"resigned\" && props.member.data.resigned_reso ?\n    (props.member.data.resigned_reso.board_resolution_number ?\n      props.member.data.resigned_reso.board_resolution_number : \"N/A\")\n    : \"N/A\")\n} */}\n                </b>\n              </div>\n            </li>\n            <li className=\"list-group-item\">\n            Sms Status\n            <div className=\"value text-muted\">\n              <b style={{ color: props.member.data?.sms_record?.sms_rec ? \"green\" : \"inherit\" }}>\n                {props.member.data?.sms_record?.sms_rec !== undefined &&\n                new Date(props.member.data.sms_record.loan_maturity) > new Date() \n                  ? props.member.data.sms_record.sms_rec.toString().toUpperCase()\n                  : \"N/A\"}\n              </b>\n            </div>\n          </li>\n          </ul>\n        </div>\n        <div className=\"col-md-9\">\n          <table id=\"profile-table\" className=\"table table-bordered table-responsive\">\n            <thead>\n            </thead>\n            <tbody>\n              <tr>\n                <th>\n                  Pangalan\n                </th>\n                <td>\n                  {props.member.last_name}, {props.member.first_name} {props.member.middle_name}\n                </td>\n              </tr>\n              <tr>\n                <th>\n                  Mother Maiden Name\n                </th>\n                <td>\n                  {props.data.mothers_middle_name}\n                </td>\n              </tr>\n              <tr>\n                <th>\n                  Identification Number\n                </th>\n                <td>\n                  {props.member.identification_number}\n                </td>\n              </tr>\n              <tr>\n                <th>\n                  Kasarian\n                </th>\n                <td>\n                  {props.member.gender.toUpperCase()}\n                </td>\n              </tr>\n              <tr>\n                <th>\n                  Edad\n                </th>\n                <td>\n                  {props.memberAge}\n                </td>\n              </tr>\n              <tr>\n                <th>\n                  Kapanganakan\n                </th>\n                <td>\n                  {props.dateOfBirth}\n                </td>\n              </tr>\n              <tr>\n                <th>\n                  Address\n                </th>\n                <td>\n                {props.data.address[\"street\"]} &nbsp;\n                {AddressService.activateMicroinsurance()\n                  ? (props.data.address[\"district\"] || 'District not found')\n                  : getBarangayName(props.data.address[\"district\"])} &nbsp;\n                {AddressService.activateMicroinsurance()\n                  ? (props.data.address[\"city\"] || 'City not found') \n                  : getMunicipalityName(props.data.address[\"city\"])} &nbsp;\n                {AddressService.activateMicroinsurance()\n                  ? (props.data.address[\"province\"] || 'Province not found') \n                  : getProvinceName(props.data.address[\"province\"])} &nbsp;\n                {AddressService.activateMicroinsurance()\n                  ? (props.data.address[\"region\"] || 'Region not found')\n                  : getRegionName(props.data.address[\"region\"])} &nbsp;\n                </td>\n              </tr>\n              <tr>\n                <th>\n                  Numero ng Mobile\n                </th>\n                <td>\n                  {props.member.mobile_number}\n                </td>\n              </tr>\n              <tr>\n                <th>\n                  Numero ng Telepono\n                </th>\n                <td>\n                  {props.member.home_number}\n                </td>\n              </tr>\n              <tr>\n                <th>\n                  Katayuang Sibil\n                </th>\n                <td>\n                  {props.member.civil_status}\n                </td>\n              </tr>\n              <tr>\n                <th>\n                  Relihiyon\n                </th>\n                <td>\n                  {props.member.religion}\n                </td>\n              </tr>\n              <tr>\n                <th>\n                  Lugar ng Kapanganakan\n                </th>\n                <td>\n                  {props.member.place_of_birth}\n                </td>\n              </tr>\n              <tr>\n                <th>\n                  PHILHEALTH #\n                </th>\n                <td>\n                  {props.data.government_identification_numbers.phil_health_number}\n                </td>\n              </tr>\n              <tr>\n                <th>\n                  PAG-IBIG #\n                </th>\n                <td>\n                  {props.data.government_identification_numbers.pag_ibig_number}\n                </td>\n              </tr>\n              <tr>\n                <th>\n                  SSS #\n                </th>\n                <td>\n                  {props.data.government_identification_numbers.sss_number}\n                </td>\n              </tr>\n              <tr>\n                <th>\n                  TIN #\n                </th>\n                <td>\n                  {props.data.government_identification_numbers.tin_number}\n                </td>\n              </tr>\n              {(() => {\n                if(props.member.data[\"reinstatement\"] != null) {\n                  return (\n                    <tr>\n                      <th>\n                        Is Reinstated\n                      </th>\n                      <td>\n                        YES\n                      </td>\n                    </tr>\n                  )\n                }\n                return (\n                    <tr>\n                      <th>\n                        Is Reinstated\n                      </th>\n                      <td>\n                        NO\n                      </td>\n                    </tr>\n                  )\n              })()}\n              {(() => {\n                if(props.member.data[\"reinstatement\"] != null) {\n                  return (\n                    <tr>\n                      <th>\n                        Reinstatement Date\n                      </th>\n                      <td>\n                        {props.data.reinstatement.reinstatement_date}\n                      </td>\n                    </tr>\n                  )\n                }\n              })()}\n              {(() => {\n                if(props.member.data[\"reinstatement\"] != null) {\n                  return (\n                    <tr>\n                      <th>\n                        Amount to be paid for reinstatement\n                      </th>\n                      <td>\n                        {props.data.reinstatement.amount_to_paid}\n                      </td>\n                    </tr>\n                  )\n                }\n              })()}\n              {(() => {\n                if(props.member.data[\"reinstatement\"] != null) {\n                  return (\n                    <tr>\n                      <th>\n                        Old Recognition Date\n                      </th>\n                      <td>\n                        {props.data.reinstatement.old_recognition_date}\n                      </td>\n                    </tr>\n                  )\n                }\n              })()}\n              {(() => {\n                if(props.member.data[\"is_reclassified\"] != null) {\n                  return (\n                    <tr>\n                      <th>\n                        Is Reclassified\n                      </th>\n                      <td>\n                        YES\n                      </td>\n                    </tr>\n                  )\n                }\n                return (\n                    <tr>\n                      <th>\n                        Is Reclassified\n                      </th>\n                      <td>\n                        NO\n                      </td>\n                    </tr>\n                  )\n              })()}\n            </tbody>\n          </table>\n        </div>\n      </div>\n      <hr/>\n      <div className=\"row\">\n        <div className=\"col\">\n          {/* Principal Borrowers */}\n        <h3 className=\"text-muted\">Principal Borrowers</h3>\n        <MembersProfilePrincipalBorrowers\n          records={props?.member?.data?.principal_borrower || []}\n        />\n        <hr className=\"my-4\" />\n          <h3 className=\"text-muted\">\n            Project Type\n          </h3>\n          <MembersProfileProjectType\n            records={props.projectType}\n          />\n          <hr/>\n          <h3 className=\"text-muted\">\n            Legal Dependents\n          </h3>\n          <MembersProfileLegalDependents\n            records={props.legalDependents}\n          />\n          <hr/>\n          <h3 className=\"text-muted\">\n            Beneficiaries\n          </h3>\n          <MembersProfileBeneficiaries\n            records={props.beneficiaries}\n          />\n          <hr/>\n          <h3 className=\"text-muted\">\n            Resignation Records\n          </h3>\n          <MembersProfileResignationRecords\n            records={props.resignationRecords}\n          />\n        </div>\n      </div>\n    </div>\n  )\n}\n", "import React, { useState, useEffect } from \"react\";\n\nexport default function MembersProfileLegalDependents(props) {\n  return (\n    <>\n      {(() => {\n        if(props.records && props.records.length > 0) {\n          return (\n            <table className=\"table table-sm table-bordered\">\n              <thead>\n                <tr>\n                  <th>\n                    Name\n                  </th>\n                  <th>\n                    Date of Birth\n                  </th>\n                  <th>\n                    Age\n                  </th>\n                  <th>\n                    Gender\n                  </th>\n                  <th>\n                    Relationship\n                  </th>\n                  <th>\n                    Educational Attainment\n                  </th>\n                  <th>\n                    Course\n                  </th>\n                </tr>\n              </thead>\n              <tbody>\n                {props.records.map((o) => {\n                  return (\n                    <tr key={\"legal-dependent-\" + o.id}>\n                      <td>\n                        {o.full_name}\n                      </td>\n                      <td>\n                        {o.date_of_birth}\n                      </td>\n                      <td>\n                        {o.age}\n                      </td>\n                      <td>\n                        {o.gender}\n                      </td>\n                      <td>\n                        {o.relationship}\n                      </td>\n                      <td>\n                        {o.educational_attainment}\n                      </td>\n                      <td>\n                        {o.course}\n                      </td>\n                    </tr>\n                  )\n                })}\n              </tbody>\n            </table>\n          )\n        } else {\n          return (\n            <p>\n              No records found.  \n            </p>\n          )\n        }\n      })()}\n    </>\n  )\n}\n", "import React, { useState, useEffect } from \"react\";\n\nexport default function MembersProfileBeneficiaries(props) {\n  return (\n    <>\n      {(() => {\n        if(props.records && props.records.length > 0) {\n          return (\n            <table className=\"table table-sm table-bordered\">\n              <thead>\n                <tr>\n                  <th>\n                    Name\n                  </th>\n                  <th>\n                    Date of Birth\n                  </th>\n                  <th>\n                    Age\n                  </th>\n                  <th>\n                    Relationship\n                  </th>\n                  <th>\n                    Primary\n                  </th>\n                </tr>\n              </thead>\n              <tbody>\n                {props.records.map((o) => {\n                  return (\n                    <tr key={\"beneficiary-\" + o.id}>\n                      <td>\n                        {o.full_name}\n                      </td>\n                      <td>\n                        {o.date_of_birth}\n                      </td>\n                      <td>\n                        {o.age}\n                      </td>\n                      <td>\n                        {o.relationship}\n                      </td>\n                      <td>\n                        {(() => {\n                          if(o.is_primary) {\n                            return (\n                              <span className=\"badge badge-primary\">\n                                Yes\n                              </span>\n                            )\n                          }\n                        })()}\n                      </td>\n                    </tr>\n                  )\n                })}\n              </tbody>\n            </table>\n          )\n        } else {\n          return (\n            <p>\n              No records found.  \n            </p>\n          )\n        }\n      })()}\n    </>\n  )\n}\n", "import React, { useState, useEffect } from \"react\";\n\nexport default function MembersProfileResignationRecords(props) {\n  return (\n    <>\n      {(() => {\n        if(props.records && props.records.length > 0) {\n          return (\n            <table className=\"table table-sm table-bordered\">\n              <thead>\n                <tr>\n                  <th>\n                    Date Resigned\n                  </th>\n                  <th>\n                    Type\n                  </th>\n                  <th>  \n                    Reason\n                  </th>\n                  <th>\n                    Relationship\n                  </th>\n                  <th>\n                    Educational Attainment\n                  </th>\n                  <th>\n                    Course\n                  </th>\n                </tr>\n              </thead>\n              <tbody>\n                {props.records.map((o, i) => {\n                  return (\n                    <tr key={\"resignation-record-\" + i}>\n                    </tr>\n                  )\n                })}\n              </tbody>\n            </table>\n          )\n        } else {\n          return (\n            <p>\n              No records found.  \n            </p>\n          )\n        }\n      })()}\n    </>\n  )\n}\n", "import React, { useState, useEffect } from \"react\";\n\nexport default function MembersProfileProjectType(props) {\n  return (\n    <>\n      {(() => {\n        if(props.records && props.records.length > 0) {\n          return (\n            <table className=\"table table-sm table-bordered\">\n              <thead>\n                <tr>\n                  <th>\n                    Project Category\n                  </th>\n                  <th>\n                    Project Type\n                  </th>\n                </tr>\n              </thead>\n              <tbody>\n                {props.records.map((o) => {\n                  return (\n                    <tr key={\"project-type-\" + o.id}>\n                      <td>\n                        {o.project_type_category}\n                      </td>\n                      <td>\n                        {o. project_type}\n                      </td>\n                    </tr>\n                  )\n                })}\n              </tbody>\n            </table>\n          )\n        } else {\n          return (\n            <p>\n              No records found.  \n            </p>\n          )\n        }\n      })()}\n    </>\n  )\n}\n", "// MembersProfilePrincipalBorrowers.js\nimport React from \"react\";\n\nexport default function MembersProfilePrincipalBorrowers({ records = [] }) {\n  const hasRows = Array.isArray(records) && records.length > 0;\n  if (!hasRows) return <p>No principal borrower records found.</p>;\n\n  return (\n    <table className=\"table table-sm table-bordered\">\n      <thead>\n        <tr>\n          <th>Member</th>\n          <th>PN Number</th>\n          <th>Loan Product</th>\n          <th>Status</th>\n        </tr>\n      </thead>\n      <tbody>\n        {records.map((pb, idx) => (\n          <tr key={`${pb.loan_id || pb.member_id || idx}`}>\n            <td>{pb.member_name || \"\u2014\"}</td>\n            <td>{pb.loan_pn_number || \"\u2014\"}</td>\n            <td>\n              {pb.loan_id ? (\n                <a\n                  href={`/loans/${pb.loan_id}`}\n                  style={{ textDecoration: \"none\", cursor: \"pointer\" }}\n                >\n                  {pb.loan_product_name || \"\u2014\"}\n                </a>\n              ) : (\n                pb.loan_product_name || \"\u2014\"\n              )}\n            </td>\n            <td>{pb.loan_status || \"\u2014\"}</td>\n          </tr>\n        ))}\n      </tbody>\n    </table>\n  );\n}\n", "{\n\t\"regions\": [{\n\t    \"name\": \"NCR\",\n\t\t\t\"provinces\": [{\n\t\t\t\t\t\"name\": \"NCR, FIRST DISTRICT\",\n\t\t\t\t\t\"cities\": [{\n\t\t\t\t\t\t\t\t\"name\": \"MANILA-BINONDO\",\n\t\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BARANGAY 287\",\n\t\t\t\t\t\t\t\t\"BARANGAY 288\",\n\t\t\t\t\t\t\t\t\"BARANGAY 289\",\n\t\t\t\t\t\t\t\t\"BARANGAY 290\",\n\t\t\t\t\t\t\t\t\"BARANGAY 291\",\n\t\t\t\t\t\t\t\t\"BARANGAY 292\",\n\t\t\t\t\t\t\t\t\"BARANGAY 293\",\n\t\t\t\t\t\t\t\t\"BARANGAY 294\",\n\t\t\t\t\t\t\t\t\"BARANGAY 295\",\n\t\t\t\t\t\t\t\t\"BARANGAY 296\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"name\": \"MANILA-ERMITA\",\n\t\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BARANGAY 659\",\n\t\t\t\t\t\t\t\t\"BARANGAY 659-A\",\n\t\t\t\t\t\t\t\t\"BARANGAY 660\",\n\t\t\t\t\t\t\t\t\"BARANGAY 660-A\",\n\t\t\t\t\t\t\t\t\"BARANGAY 661\",\n\t\t\t\t\t\t\t\t\"BARANGAY 663\",\n\t\t\t\t\t\t\t\t\"BARANGAY 663-A\",\n\t\t\t\t\t\t\t\t\"BARANGAY 664\",\n\t\t\t\t\t\t\t\t\"BARANGAY 666\",\n\t\t\t\t\t\t\t\t\"BARANGAY 667\",\n\t\t\t\t\t\t\t\t\"BARANGAY 668\",\n\t\t\t\t\t\t\t\t\"BARANGAY 669\",\n\t\t\t\t\t\t\t\t\"BARANGAY 670\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"name\": \"MANILA-INTRAMUROS\",\n\t\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BARANGAY 654\",\n\t\t\t\t\t\t\t\t\"BARANGAY 655\",\n\t\t\t\t\t\t\t\t\"BARANGAY 656\",\n\t\t\t\t\t\t\t\t\"BARANGAY 657\",\n\t\t\t\t\t\t\t\t\"BARANGAY 658\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"name\": \"MANILA-MALATE\",\n\t\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BARANGAY 688\",\n\t\t\t\t\t\t\t\t\"BARANGAY 689\",\n\t\t\t\t\t\t\t\t\"BARANGAY 690\",\n\t\t\t\t\t\t\t\t\"BARANGAY 691\",\n\t\t\t\t\t\t\t\t\"BARANGAY 692\",\n\t\t\t\t\t\t\t\t\"BARANGAY 693\",\n\t\t\t\t\t\t\t\t\"BARANGAY 694\",\n\t\t\t\t\t\t\t\t\"BARANGAY 695\",\n\t\t\t\t\t\t\t\t\"BARANGAY 696\",\n\t\t\t\t\t\t\t\t\"BARANGAY 697\",\n\t\t\t\t\t\t\t\t\"BARANGAY 698\",\n\t\t\t\t\t\t\t\t\"BARANGAY 699\",\n\t\t\t\t\t\t\t\t\"BARANGAY 700\",\n\t\t\t\t\t\t\t\t\"BARANGAY 701\",\n\t\t\t\t\t\t\t\t\"BARANGAY 702\",\n\t\t\t\t\t\t\t\t\"BARANGAY 703\",\n\t\t\t\t\t\t\t\t\"BARANGAY 704\",\n\t\t\t\t\t\t\t\t\"BARANGAY 705\",\n\t\t\t\t\t\t\t\t\"BARANGAY 706\",\n\t\t\t\t\t\t\t\t\"BARANGAY 707\",\n\t\t\t\t\t\t\t\t\"BARANGAY 708\",\n\t\t\t\t\t\t\t\t\"BARANGAY 709\",\n\t\t\t\t\t\t\t\t\"BARANGAY 710\",\n\t\t\t\t\t\t\t\t\"BARANGAY 711\",\n\t\t\t\t\t\t\t\t\"BARANGAY 712\",\n\t\t\t\t\t\t\t\t\"BARANGAY 713\",\n\t\t\t\t\t\t\t\t\"BARANGAY 714\",\n\t\t\t\t\t\t\t\t\"BARANGAY 715\",\n\t\t\t\t\t\t\t\t\"BARANGAY 716\",\n\t\t\t\t\t\t\t\t\"BARANGAY 717\",\n\t\t\t\t\t\t\t\t\"BARANGAY 718\",\n\t\t\t\t\t\t\t\t\"BARANGAY 719\",\n\t\t\t\t\t\t\t\t\"BARANGAY 720\",\n\t\t\t\t\t\t\t\t\"BARANGAY 721\",\n\t\t\t\t\t\t\t\t\"BARANGAY 722\",\n\t\t\t\t\t\t\t\t\"BARANGAY 723\",\n\t\t\t\t\t\t\t\t\"BARANGAY 724\",\n\t\t\t\t\t\t\t\t\"BARANGAY 725\",\n\t\t\t\t\t\t\t\t\"BARANGAY 726\",\n\t\t\t\t\t\t\t\t\"BARANGAY 727\",\n\t\t\t\t\t\t\t\t\"BARANGAY 728\",\n\t\t\t\t\t\t\t\t\"BARANGAY 729\",\n\t\t\t\t\t\t\t\t\"BARANGAY 730\",\n\t\t\t\t\t\t\t\t\"BARANGAY 731\",\n\t\t\t\t\t\t\t\t\"BARANGAY 732\",\n\t\t\t\t\t\t\t\t\"BARANGAY 733\",\n\t\t\t\t\t\t\t\t\"BARANGAY 734\",\n\t\t\t\t\t\t\t\t\"BARANGAY 735\",\n\t\t\t\t\t\t\t\t\"BARANGAY 736\",\n\t\t\t\t\t\t\t\t\"BARANGAY 737\",\n\t\t\t\t\t\t\t\t\"BARANGAY 738\",\n\t\t\t\t\t\t\t\t\"BARANGAY 739\",\n\t\t\t\t\t\t\t\t\"BARANGAY 740\",\n\t\t\t\t\t\t\t\t\"BARANGAY 741\",\n\t\t\t\t\t\t\t\t\"BARANGAY 742\",\n\t\t\t\t\t\t\t\t\"BARANGAY 743\",\n\t\t\t\t\t\t\t\t\"BARANGAY 744\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"name\": \"MANILA-PACO\",\n\t\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BARANGAY 662\",\n\t\t\t\t\t\t\t\t\"BARANGAY 664-A\",\n\t\t\t\t\t\t\t\t\"BARANGAY 671\",\n\t\t\t\t\t\t\t\t\"BARANGAY 672\",\n\t\t\t\t\t\t\t\t\"BARANGAY 673\",\n\t\t\t\t\t\t\t\t\"BARANGAY 674\",\n\t\t\t\t\t\t\t\t\"BARANGAY 675\",\n\t\t\t\t\t\t\t\t\"BARANGAY 676\",\n\t\t\t\t\t\t\t\t\"BARANGAY 677\",\n\t\t\t\t\t\t\t\t\"BARANGAY 678\",\n\t\t\t\t\t\t\t\t\"BARANGAY 679\",\n\t\t\t\t\t\t\t\t\"BARANGAY 680\",\n\t\t\t\t\t\t\t\t\"BARANGAY 681\",\n\t\t\t\t\t\t\t\t\"BARANGAY 682\",\n\t\t\t\t\t\t\t\t\"BARANGAY 683\",\n\t\t\t\t\t\t\t\t\"BARANGAY 684\",\n\t\t\t\t\t\t\t\t\"BARANGAY 685\",\n\t\t\t\t\t\t\t\t\"BARANGAY 686\",\n\t\t\t\t\t\t\t\t\"BARANGAY 687\",\n\t\t\t\t\t\t\t\t\"BARANGAY 809\",\n\t\t\t\t\t\t\t\t\"BARANGAY 810\",\n\t\t\t\t\t\t\t\t\"BARANGAY 811\",\n\t\t\t\t\t\t\t\t\"BARANGAY 812\",\n\t\t\t\t\t\t\t\t\"BARANGAY 813\",\n\t\t\t\t\t\t\t\t\"BARANGAY 814\",\n\t\t\t\t\t\t\t\t\"BARANGAY 815\",\n\t\t\t\t\t\t\t\t\"BARANGAY 816\",\n\t\t\t\t\t\t\t\t\"BARANGAY 817\",\n\t\t\t\t\t\t\t\t\"BARANGAY 818\",\n\t\t\t\t\t\t\t\t\"BARANGAY 818-A\",\n\t\t\t\t\t\t\t\t\"BARANGAY 819\",\n\t\t\t\t\t\t\t\t\"BARANGAY 820\",\n\t\t\t\t\t\t\t\t\"BARANGAY 821\",\n\t\t\t\t\t\t\t\t\"BARANGAY 822\",\n\t\t\t\t\t\t\t\t\"BARANGAY 823\",\n\t\t\t\t\t\t\t\t\"BARANGAY 824\",\n\t\t\t\t\t\t\t\t\"BARANGAY 825\",\n\t\t\t\t\t\t\t\t\"BARANGAY 826\",\n\t\t\t\t\t\t\t\t\"BARANGAY 827\",\n\t\t\t\t\t\t\t\t\"BARANGAY 828\",\n\t\t\t\t\t\t\t\t\"BARANGAY 829\",\n\t\t\t\t\t\t\t\t\"BARANGAY 830\",\n\t\t\t\t\t\t\t\t\"BARANGAY 831\",\n\t\t\t\t\t\t\t\t\"BARANGAY 832\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"name\": \"MANILA-PANDACAN\",\n\t\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BARANGAY 833\",\n\t\t\t\t\t\t\t\t\"BARANGAY 834\",\n\t\t\t\t\t\t\t\t\"BARANGAY 835\",\n\t\t\t\t\t\t\t\t\"BARANGAY 836\",\n\t\t\t\t\t\t\t\t\"BARANGAY 837\",\n\t\t\t\t\t\t\t\t\"BARANGAY 838\",\n\t\t\t\t\t\t\t\t\"BARANGAY 839\",\n\t\t\t\t\t\t\t\t\"BARANGAY 840\",\n\t\t\t\t\t\t\t\t\"BARANGAY 841\",\n\t\t\t\t\t\t\t\t\"BARANGAY 842\",\n\t\t\t\t\t\t\t\t\"BARANGAY 843\",\n\t\t\t\t\t\t\t\t\"BARANGAY 844\",\n\t\t\t\t\t\t\t\t\"BARANGAY 845\",\n\t\t\t\t\t\t\t\t\"BARANGAY 846\",\n\t\t\t\t\t\t\t\t\"BARANGAY 847\",\n\t\t\t\t\t\t\t\t\"BARANGAY 848\",\n\t\t\t\t\t\t\t\t\"BARANGAY 849\",\n\t\t\t\t\t\t\t\t\"BARANGAY 850\",\n\t\t\t\t\t\t\t\t\"BARANGAY 851\",\n\t\t\t\t\t\t\t\t\"BARANGAY 852\",\n\t\t\t\t\t\t\t\t\"BARANGAY 853\",\n\t\t\t\t\t\t\t\t\"BARANGAY 854\",\n\t\t\t\t\t\t\t\t\"BARANGAY 855\",\n\t\t\t\t\t\t\t\t\"BARANGAY 856\",\n\t\t\t\t\t\t\t\t\"BARANGAY 857\",\n\t\t\t\t\t\t\t\t\"BARANGAY 858\",\n\t\t\t\t\t\t\t\t\"BARANGAY 859\",\n\t\t\t\t\t\t\t\t\"BARANGAY 860\",\n\t\t\t\t\t\t\t\t\"BARANGAY 861\",\n\t\t\t\t\t\t\t\t\"BARANGAY 862\",\n\t\t\t\t\t\t\t\t\"BARANGAY 863\",\n\t\t\t\t\t\t\t\t\"BARANGAY 864\",\n\t\t\t\t\t\t\t\t\"BARANGAY 865\",\n\t\t\t\t\t\t\t\t\"BARANGAY 866\",\n\t\t\t\t\t\t\t\t\"BARANGAY 867\",\n\t\t\t\t\t\t\t\t\"BARANGAY 868\",\n\t\t\t\t\t\t\t\t\"BARANGAY 869\",\n\t\t\t\t\t\t\t\t\"BARANGAY 870\",\n\t\t\t\t\t\t\t\t\"BARANGAY 871\",\n\t\t\t\t\t\t\t\t\"BARANGAY 872\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"name\": \"MANILA-PORT AREA\",\n\t\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BARANGAY 649\",\n\t\t\t\t\t\t\t\t\"BARANGAY 650\",\n\t\t\t\t\t\t\t\t\"BARANGAY 651\",\n\t\t\t\t\t\t\t\t\"BARANGAY 652\",\n\t\t\t\t\t\t\t\t\"BARANGAY 653\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"name\": \"MANILA-QUIAPO\",\n\t\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BARANGAY 306\",\n\t\t\t\t\t\t\t\t\"BARANGAY 307\",\n\t\t\t\t\t\t\t\t\"BARANGAY 308\",\n\t\t\t\t\t\t\t\t\"BARANGAY 309\",\n\t\t\t\t\t\t\t\t\"BARANGAY 383\",\n\t\t\t\t\t\t\t\t\"BARANGAY 384\",\n\t\t\t\t\t\t\t\t\"BARANGAY 385\",\n\t\t\t\t\t\t\t\t\"BARANGAY 386\",\n\t\t\t\t\t\t\t\t\"BARANGAY 387\",\n\t\t\t\t\t\t\t\t\"BARANGAY 388\",\n\t\t\t\t\t\t\t\t\"BARANGAY 389\",\n\t\t\t\t\t\t\t\t\"BARANGAY 390\",\n\t\t\t\t\t\t\t\t\"BARANGAY 391\",\n\t\t\t\t\t\t\t\t\"BARANGAY 392\",\n\t\t\t\t\t\t\t\t\"BARANGAY 393\",\n\t\t\t\t\t\t\t\t\"BARANGAY 394\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"name\": \"MANILA-SAMPALOC\",\n\t\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BARANGAY 395\",\n\t\t\t\t\t\t\t\t\"BARANGAY 396\",\n\t\t\t\t\t\t\t\t\"BARANGAY 397\",\n\t\t\t\t\t\t\t\t\"BARANGAY 398\",\n\t\t\t\t\t\t\t\t\"BARANGAY 399\",\n\t\t\t\t\t\t\t\t\"BARANGAY 400\",\n\t\t\t\t\t\t\t\t\"BARANGAY 401\",\n\t\t\t\t\t\t\t\t\"BARANGAY 402\",\n\t\t\t\t\t\t\t\t\"BARANGAY 403\",\n\t\t\t\t\t\t\t\t\"BARANGAY 404\",\n\t\t\t\t\t\t\t\t\"BARANGAY 405\",\n\t\t\t\t\t\t\t\t\"BARANGAY 406\",\n\t\t\t\t\t\t\t\t\"BARANGAY 407\",\n\t\t\t\t\t\t\t\t\"BARANGAY 408\",\n\t\t\t\t\t\t\t\t\"BARANGAY 409\",\n\t\t\t\t\t\t\t\t\"BARANGAY 410\",\n\t\t\t\t\t\t\t\t\"BARANGAY 411\",\n\t\t\t\t\t\t\t\t\"BARANGAY 412\",\n\t\t\t\t\t\t\t\t\"BARANGAY 413\",\n\t\t\t\t\t\t\t\t\"BARANGAY 414\",\n\t\t\t\t\t\t\t\t\"BARANGAY 415\",\n\t\t\t\t\t\t\t\t\"BARANGAY 416\",\n\t\t\t\t\t\t\t\t\"BARANGAY 417\",\n\t\t\t\t\t\t\t\t\"BARANGAY 418\",\n\t\t\t\t\t\t\t\t\"BARANGAY 419\",\n\t\t\t\t\t\t\t\t\"BARANGAY 420\",\n\t\t\t\t\t\t\t\t\"BARANGAY 421\",\n\t\t\t\t\t\t\t\t\"BARANGAY 422\",\n\t\t\t\t\t\t\t\t\"BARANGAY 423\",\n\t\t\t\t\t\t\t\t\"BARANGAY 424\",\n\t\t\t\t\t\t\t\t\"BARANGAY 425\",\n\t\t\t\t\t\t\t\t\"BARANGAY 426\",\n\t\t\t\t\t\t\t\t\"BARANGAY 427\",\n\t\t\t\t\t\t\t\t\"BARANGAY 428\",\n\t\t\t\t\t\t\t\t\"BARANGAY 429\",\n\t\t\t\t\t\t\t\t\"BARANGAY 430\",\n\t\t\t\t\t\t\t\t\"BARANGAY 431\",\n\t\t\t\t\t\t\t\t\"BARANGAY 432\",\n\t\t\t\t\t\t\t\t\"BARANGAY 433\",\n\t\t\t\t\t\t\t\t\"BARANGAY 434\",\n\t\t\t\t\t\t\t\t\"BARANGAY 435\",\n\t\t\t\t\t\t\t\t\"BARANGAY 436\",\n\t\t\t\t\t\t\t\t\"BARANGAY 437\",\n\t\t\t\t\t\t\t\t\"BARANGAY 438\",\n\t\t\t\t\t\t\t\t\"BARANGAY 439\",\n\t\t\t\t\t\t\t\t\"BARANGAY 440\",\n\t\t\t\t\t\t\t\t\"BARANGAY 441\",\n\t\t\t\t\t\t\t\t\"BARANGAY 442\",\n\t\t\t\t\t\t\t\t\"BARANGAY 443\",\n\t\t\t\t\t\t\t\t\"BARANGAY 444\",\n\t\t\t\t\t\t\t\t\"BARANGAY 445\",\n\t\t\t\t\t\t\t\t\"BARANGAY 446\",\n\t\t\t\t\t\t\t\t\"BARANGAY 447\",\n\t\t\t\t\t\t\t\t\"BARANGAY 448\",\n\t\t\t\t\t\t\t\t\"BARANGAY 449\",\n\t\t\t\t\t\t\t\t\"BARANGAY 450\",\n\t\t\t\t\t\t\t\t\"BARANGAY 451\",\n\t\t\t\t\t\t\t\t\"BARANGAY 452\",\n\t\t\t\t\t\t\t\t\"BARANGAY 453\",\n\t\t\t\t\t\t\t\t\"BARANGAY 454\",\n\t\t\t\t\t\t\t\t\"BARANGAY 455\",\n\t\t\t\t\t\t\t\t\"BARANGAY 456\",\n\t\t\t\t\t\t\t\t\"BARANGAY 457\",\n\t\t\t\t\t\t\t\t\"BARANGAY 458\",\n\t\t\t\t\t\t\t\t\"BARANGAY 459\",\n\t\t\t\t\t\t\t\t\"BARANGAY 460\",\n\t\t\t\t\t\t\t\t\"BARANGAY 461\",\n\t\t\t\t\t\t\t\t\"BARANGAY 462\",\n\t\t\t\t\t\t\t\t\"BARANGAY 463\",\n\t\t\t\t\t\t\t\t\"BARANGAY 464\",\n\t\t\t\t\t\t\t\t\"BARANGAY 465\",\n\t\t\t\t\t\t\t\t\"BARANGAY 466\",\n\t\t\t\t\t\t\t\t\"BARANGAY 467\",\n\t\t\t\t\t\t\t\t\"BARANGAY 468\",\n\t\t\t\t\t\t\t\t\"BARANGAY 469\",\n\t\t\t\t\t\t\t\t\"BARANGAY 470\",\n\t\t\t\t\t\t\t\t\"BARANGAY 471\",\n\t\t\t\t\t\t\t\t\"BARANGAY 472\",\n\t\t\t\t\t\t\t\t\"BARANGAY 473\",\n\t\t\t\t\t\t\t\t\"BARANGAY 474\",\n\t\t\t\t\t\t\t\t\"BARANGAY 475\",\n\t\t\t\t\t\t\t\t\"BARANGAY 476\",\n\t\t\t\t\t\t\t\t\"BARANGAY 477\",\n\t\t\t\t\t\t\t\t\"BARANGAY 478\",\n\t\t\t\t\t\t\t\t\"BARANGAY 479\",\n\t\t\t\t\t\t\t\t\"BARANGAY 480\",\n\t\t\t\t\t\t\t\t\"BARANGAY 481\",\n\t\t\t\t\t\t\t\t\"BARANGAY 482\",\n\t\t\t\t\t\t\t\t\"BARANGAY 483\",\n\t\t\t\t\t\t\t\t\"BARANGAY 484\",\n\t\t\t\t\t\t\t\t\"BARANGAY 485\",\n\t\t\t\t\t\t\t\t\"BARANGAY 486\",\n\t\t\t\t\t\t\t\t\"BARANGAY 487\",\n\t\t\t\t\t\t\t\t\"BARANGAY 488\",\n\t\t\t\t\t\t\t\t\"BARANGAY 489\",\n\t\t\t\t\t\t\t\t\"BARANGAY 490\",\n\t\t\t\t\t\t\t\t\"BARANGAY 491\",\n\t\t\t\t\t\t\t\t\"BARANGAY 492\",\n\t\t\t\t\t\t\t\t\"BARANGAY 493\",\n\t\t\t\t\t\t\t\t\"BARANGAY 494\",\n\t\t\t\t\t\t\t\t\"BARANGAY 495\",\n\t\t\t\t\t\t\t\t\"BARANGAY 496\",\n\t\t\t\t\t\t\t\t\"BARANGAY 497\",\n\t\t\t\t\t\t\t\t\"BARANGAY 498\",\n\t\t\t\t\t\t\t\t\"BARANGAY 499\",\n\t\t\t\t\t\t\t\t\"BARANGAY 500\",\n\t\t\t\t\t\t\t\t\"BARANGAY 501\",\n\t\t\t\t\t\t\t\t\"BARANGAY 502\",\n\t\t\t\t\t\t\t\t\"BARANGAY 503\",\n\t\t\t\t\t\t\t\t\"BARANGAY 504\",\n\t\t\t\t\t\t\t\t\"BARANGAY 505\",\n\t\t\t\t\t\t\t\t\"BARANGAY 506\",\n\t\t\t\t\t\t\t\t\"BARANGAY 507\",\n\t\t\t\t\t\t\t\t\"BARANGAY 508\",\n\t\t\t\t\t\t\t\t\"BARANGAY 509\",\n\t\t\t\t\t\t\t\t\"BARANGAY 510\",\n\t\t\t\t\t\t\t\t\"BARANGAY 511\",\n\t\t\t\t\t\t\t\t\"BARANGAY 512\",\n\t\t\t\t\t\t\t\t\"BARANGAY 513\",\n\t\t\t\t\t\t\t\t\"BARANGAY 514\",\n\t\t\t\t\t\t\t\t\"BARANGAY 515\",\n\t\t\t\t\t\t\t\t\"BARANGAY 516\",\n\t\t\t\t\t\t\t\t\"BARANGAY 517\",\n\t\t\t\t\t\t\t\t\"BARANGAY 518\",\n\t\t\t\t\t\t\t\t\"BARANGAY 519\",\n\t\t\t\t\t\t\t\t\"BARANGAY 520\",\n\t\t\t\t\t\t\t\t\"BARANGAY 521\",\n\t\t\t\t\t\t\t\t\"BARANGAY 522\",\n\t\t\t\t\t\t\t\t\"BARANGAY 523\",\n\t\t\t\t\t\t\t\t\"BARANGAY 524\",\n\t\t\t\t\t\t\t\t\"BARANGAY 525\",\n\t\t\t\t\t\t\t\t\"BARANGAY 526\",\n\t\t\t\t\t\t\t\t\"BARANGAY 527\",\n\t\t\t\t\t\t\t\t\"BARANGAY 528\",\n\t\t\t\t\t\t\t\t\"BARANGAY 529\",\n\t\t\t\t\t\t\t\t\"BARANGAY 530\",\n\t\t\t\t\t\t\t\t\"BARANGAY 531\",\n\t\t\t\t\t\t\t\t\"BARANGAY 532\",\n\t\t\t\t\t\t\t\t\"BARANGAY 533\",\n\t\t\t\t\t\t\t\t\"BARANGAY 534\",\n\t\t\t\t\t\t\t\t\"BARANGAY 535\",\n\t\t\t\t\t\t\t\t\"BARANGAY 536\",\n\t\t\t\t\t\t\t\t\"BARANGAY 537\",\n\t\t\t\t\t\t\t\t\"BARANGAY 538\",\n\t\t\t\t\t\t\t\t\"BARANGAY 539\",\n\t\t\t\t\t\t\t\t\"BARANGAY 540\",\n\t\t\t\t\t\t\t\t\"BARANGAY 541\",\n\t\t\t\t\t\t\t\t\"BARANGAY 542\",\n\t\t\t\t\t\t\t\t\"BARANGAY 543\",\n\t\t\t\t\t\t\t\t\"BARANGAY 544\",\n\t\t\t\t\t\t\t\t\"BARANGAY 545\",\n\t\t\t\t\t\t\t\t\"BARANGAY 546\",\n\t\t\t\t\t\t\t\t\"BARANGAY 547\",\n\t\t\t\t\t\t\t\t\"BARANGAY 548\",\n\t\t\t\t\t\t\t\t\"BARANGAY 549\",\n\t\t\t\t\t\t\t\t\"BARANGAY 550\",\n\t\t\t\t\t\t\t\t\"BARANGAY 551\",\n\t\t\t\t\t\t\t\t\"BARANGAY 552\",\n\t\t\t\t\t\t\t\t\"BARANGAY 553\",\n\t\t\t\t\t\t\t\t\"BARANGAY 554\",\n\t\t\t\t\t\t\t\t\"BARANGAY 555\",\n\t\t\t\t\t\t\t\t\"BARANGAY 556\",\n\t\t\t\t\t\t\t\t\"BARANGAY 557\",\n\t\t\t\t\t\t\t\t\"BARANGAY 558\",\n\t\t\t\t\t\t\t\t\"BARANGAY 559\",\n\t\t\t\t\t\t\t\t\"BARANGAY 560\",\n\t\t\t\t\t\t\t\t\"BARANGAY 561\",\n\t\t\t\t\t\t\t\t\"BARANGAY 562\",\n\t\t\t\t\t\t\t\t\"BARANGAY 563\",\n\t\t\t\t\t\t\t\t\"BARANGAY 564\",\n\t\t\t\t\t\t\t\t\"BARANGAY 565\",\n\t\t\t\t\t\t\t\t\"BARANGAY 566\",\n\t\t\t\t\t\t\t\t\"BARANGAY 567\",\n\t\t\t\t\t\t\t\t\"BARANGAY 568\",\n\t\t\t\t\t\t\t\t\"BARANGAY 569\",\n\t\t\t\t\t\t\t\t\"BARANGAY 570\",\n\t\t\t\t\t\t\t\t\"BARANGAY 571\",\n\t\t\t\t\t\t\t\t\"BARANGAY 572\",\n\t\t\t\t\t\t\t\t\"BARANGAY 573\",\n\t\t\t\t\t\t\t\t\"BARANGAY 574\",\n\t\t\t\t\t\t\t\t\"BARANGAY 575\",\n\t\t\t\t\t\t\t\t\"BARANGAY 576\",\n\t\t\t\t\t\t\t\t\"BARANGAY 577\",\n\t\t\t\t\t\t\t\t\"BARANGAY 578\",\n\t\t\t\t\t\t\t\t\"BARANGAY 579\",\n\t\t\t\t\t\t\t\t\"BARANGAY 580\",\n\t\t\t\t\t\t\t\t\"BARANGAY 581\",\n\t\t\t\t\t\t\t\t\"BARANGAY 582\",\n\t\t\t\t\t\t\t\t\"BARANGAY 583\",\n\t\t\t\t\t\t\t\t\"BARANGAY 584\",\n\t\t\t\t\t\t\t\t\"BARANGAY 585\",\n\t\t\t\t\t\t\t\t\"BARANGAY 586\",\n\t\t\t\t\t\t\t\t\"BARANGAY 587\",\n\t\t\t\t\t\t\t\t\"BARANGAY 587-A\",\n\t\t\t\t\t\t\t\t\"BARANGAY 588\",\n\t\t\t\t\t\t\t\t\"BARANGAY 589\",\n\t\t\t\t\t\t\t\t\"BARANGAY 590\",\n\t\t\t\t\t\t\t\t\"BARANGAY 591\",\n\t\t\t\t\t\t\t\t\"BARANGAY 592\",\n\t\t\t\t\t\t\t\t\"BARANGAY 593\",\n\t\t\t\t\t\t\t\t\"BARANGAY 594\",\n\t\t\t\t\t\t\t\t\"BARANGAY 595\",\n\t\t\t\t\t\t\t\t\"BARANGAY 596\",\n\t\t\t\t\t\t\t\t\"BARANGAY 597\",\n\t\t\t\t\t\t\t\t\"BARANGAY 598\",\n\t\t\t\t\t\t\t\t\"BARANGAY 599\",\n\t\t\t\t\t\t\t\t\"BARANGAY 600\",\n\t\t\t\t\t\t\t\t\"BARANGAY 601\",\n\t\t\t\t\t\t\t\t\"BARANGAY 602\",\n\t\t\t\t\t\t\t\t\"BARANGAY 603\",\n\t\t\t\t\t\t\t\t\"BARANGAY 604\",\n\t\t\t\t\t\t\t\t\"BARANGAY 605\",\n\t\t\t\t\t\t\t\t\"BARANGAY 606\",\n\t\t\t\t\t\t\t\t\"BARANGAY 607\",\n\t\t\t\t\t\t\t\t\"BARANGAY 608\",\n\t\t\t\t\t\t\t\t\"BARANGAY 609\",\n\t\t\t\t\t\t\t\t\"BARANGAY 610\",\n\t\t\t\t\t\t\t\t\"BARANGAY 611\",\n\t\t\t\t\t\t\t\t\"BARANGAY 612\",\n\t\t\t\t\t\t\t\t\"BARANGAY 613\",\n\t\t\t\t\t\t\t\t\"BARANGAY 614\",\n\t\t\t\t\t\t\t\t\"BARANGAY 615\",\n\t\t\t\t\t\t\t\t\"BARANGAY 616\",\n\t\t\t\t\t\t\t\t\"BARANGAY 617\",\n\t\t\t\t\t\t\t\t\"BARANGAY 618\",\n\t\t\t\t\t\t\t\t\"BARANGAY 619\",\n\t\t\t\t\t\t\t\t\"BARANGAY 620\",\n\t\t\t\t\t\t\t\t\"BARANGAY 621\",\n\t\t\t\t\t\t\t\t\"BARANGAY 622\",\n\t\t\t\t\t\t\t\t\"BARANGAY 623\",\n\t\t\t\t\t\t\t\t\"BARANGAY 624\",\n\t\t\t\t\t\t\t\t\"BARANGAY 625\",\n\t\t\t\t\t\t\t\t\"BARANGAY 626\",\n\t\t\t\t\t\t\t\t\"BARANGAY 627\",\n\t\t\t\t\t\t\t\t\"BARANGAY 628\",\n\t\t\t\t\t\t\t\t\"BARANGAY 629\",\n\t\t\t\t\t\t\t\t\"BARANGAY 630\",\n\t\t\t\t\t\t\t\t\"BARANGAY 631\",\n\t\t\t\t\t\t\t\t\"BARANGAY 632\",\n\t\t\t\t\t\t\t\t\"BARANGAY 633\",\n\t\t\t\t\t\t\t\t\"BARANGAY 634\",\n\t\t\t\t\t\t\t\t\"BARANGAY 635\",\n\t\t\t\t\t\t\t\t\"BARANGAY 636\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"name\": \"MANILA-SAN MIGUEL\",\n\t\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BARANGAY 637\",\n\t\t\t\t\t\t\t\t\"BARANGAY 638\",\n\t\t\t\t\t\t\t\t\"BARANGAY 639\",\n\t\t\t\t\t\t\t\t\"BARANGAY 640\",\n\t\t\t\t\t\t\t\t\"BARANGAY 641\",\n\t\t\t\t\t\t\t\t\"BARANGAY 642\",\n\t\t\t\t\t\t\t\t\"BARANGAY 643\",\n\t\t\t\t\t\t\t\t\"BARANGAY 644\",\n\t\t\t\t\t\t\t\t\"BARANGAY 645\",\n\t\t\t\t\t\t\t\t\"BARANGAY 646\",\n\t\t\t\t\t\t\t\t\"BARANGAY 647\",\n\t\t\t\t\t\t\t\t\"BARANGAY 648\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"name\": \"MANILA-SAN NICOLAS\",\n\t\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BARANGAY 268\",\n\t\t\t\t\t\t\t\t\"BARANGAY 269\",\n\t\t\t\t\t\t\t\t\"BARANGAY 270\",\n\t\t\t\t\t\t\t\t\"BARANGAY 271\",\n\t\t\t\t\t\t\t\t\"BARANGAY 272\",\n\t\t\t\t\t\t\t\t\"BARANGAY 273\",\n\t\t\t\t\t\t\t\t\"BARANGAY 274\",\n\t\t\t\t\t\t\t\t\"BARANGAY 275\",\n\t\t\t\t\t\t\t\t\"BARANGAY 276\",\n\t\t\t\t\t\t\t\t\"BARANGAY 281\",\n\t\t\t\t\t\t\t\t\"BARANGAY 282\",\n\t\t\t\t\t\t\t\t\"BARANGAY 283\",\n\t\t\t\t\t\t\t\t\"BARANGAY 284\",\n\t\t\t\t\t\t\t\t\"BARANGAY 285\",\n\t\t\t\t\t\t\t\t\"BARANGAY 286\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"name\": \"MANILA-SANTA ANA\",\n\t\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BARANGAY 745\",\n\t\t\t\t\t\t\t\t\"BARANGAY 746\",\n\t\t\t\t\t\t\t\t\"BARANGAY 747\",\n\t\t\t\t\t\t\t\t\"BARANGAY 748\",\n\t\t\t\t\t\t\t\t\"BARANGAY 749\",\n\t\t\t\t\t\t\t\t\"BARANGAY 750\",\n\t\t\t\t\t\t\t\t\"BARANGAY 751\",\n\t\t\t\t\t\t\t\t\"BARANGAY 752\",\n\t\t\t\t\t\t\t\t\"BARANGAY 753\",\n\t\t\t\t\t\t\t\t\"BARANGAY 754\",\n\t\t\t\t\t\t\t\t\"BARANGAY 755\",\n\t\t\t\t\t\t\t\t\"BARANGAY 756\",\n\t\t\t\t\t\t\t\t\"BARANGAY 757\",\n\t\t\t\t\t\t\t\t\"BARANGAY 758\",\n\t\t\t\t\t\t\t\t\"BARANGAY 759\",\n\t\t\t\t\t\t\t\t\"BARANGAY 760\",\n\t\t\t\t\t\t\t\t\"BARANGAY 761\",\n\t\t\t\t\t\t\t\t\"BARANGAY 762\",\n\t\t\t\t\t\t\t\t\"BARANGAY 763\",\n\t\t\t\t\t\t\t\t\"BARANGAY 764\",\n\t\t\t\t\t\t\t\t\"BARANGAY 765\",\n\t\t\t\t\t\t\t\t\"BARANGAY 766\",\n\t\t\t\t\t\t\t\t\"BARANGAY 767\",\n\t\t\t\t\t\t\t\t\"BARANGAY 768\",\n\t\t\t\t\t\t\t\t\"BARANGAY 769\",\n\t\t\t\t\t\t\t\t\"BARANGAY 770\",\n\t\t\t\t\t\t\t\t\"BARANGAY 771\",\n\t\t\t\t\t\t\t\t\"BARANGAY 772\",\n\t\t\t\t\t\t\t\t\"BARANGAY 773\",\n\t\t\t\t\t\t\t\t\"BARANGAY 774\",\n\t\t\t\t\t\t\t\t\"BARANGAY 775\",\n\t\t\t\t\t\t\t\t\"BARANGAY 776\",\n\t\t\t\t\t\t\t\t\"BARANGAY 777\",\n\t\t\t\t\t\t\t\t\"BARANGAY 778\",\n\t\t\t\t\t\t\t\t\"BARANGAY 779\",\n\t\t\t\t\t\t\t\t\"BARANGAY 780\",\n\t\t\t\t\t\t\t\t\"BARANGAY 781\",\n\t\t\t\t\t\t\t\t\"BARANGAY 782\",\n\t\t\t\t\t\t\t\t\"BARANGAY 783\",\n\t\t\t\t\t\t\t\t\"BARANGAY 784\",\n\t\t\t\t\t\t\t\t\"BARANGAY 785\",\n\t\t\t\t\t\t\t\t\"BARANGAY 786\",\n\t\t\t\t\t\t\t\t\"BARANGAY 787\",\n\t\t\t\t\t\t\t\t\"BARANGAY 788\",\n\t\t\t\t\t\t\t\t\"BARANGAY 789\",\n\t\t\t\t\t\t\t\t\"BARANGAY 790\",\n\t\t\t\t\t\t\t\t\"BARANGAY 791\",\n\t\t\t\t\t\t\t\t\"BARANGAY 792\",\n\t\t\t\t\t\t\t\t\"BARANGAY 793\",\n\t\t\t\t\t\t\t\t\"BARANGAY 794\",\n\t\t\t\t\t\t\t\t\"BARANGAY 795\",\n\t\t\t\t\t\t\t\t\"BARANGAY 796\",\n\t\t\t\t\t\t\t\t\"BARANGAY 797\",\n\t\t\t\t\t\t\t\t\"BARANGAY 798\",\n\t\t\t\t\t\t\t\t\"BARANGAY 799\",\n\t\t\t\t\t\t\t\t\"BARANGAY 800\",\n\t\t\t\t\t\t\t\t\"BARANGAY 801\",\n\t\t\t\t\t\t\t\t\"BARANGAY 802\",\n\t\t\t\t\t\t\t\t\"BARANGAY 803\",\n\t\t\t\t\t\t\t\t\"BARANGAY 804\",\n\t\t\t\t\t\t\t\t\"BARANGAY 805\",\n\t\t\t\t\t\t\t\t\"BARANGAY 806\",\n\t\t\t\t\t\t\t\t\"BARANGAY 807\",\n\t\t\t\t\t\t\t\t\"BARANGAY 808\",\n\t\t\t\t\t\t\t\t\"BARANGAY 818-A\",\n\t\t\t\t\t\t\t\t\"BARANGAY 866\",\n\t\t\t\t\t\t\t\t\"BARANGAY 873\",\n\t\t\t\t\t\t\t\t\"BARANGAY 874\",\n\t\t\t\t\t\t\t\t\"BARANGAY 875\",\n\t\t\t\t\t\t\t\t\"BARANGAY 876\",\n\t\t\t\t\t\t\t\t\"BARANGAY 877\",\n\t\t\t\t\t\t\t\t\"BARANGAY 878\",\n\t\t\t\t\t\t\t\t\"BARANGAY 879\",\n\t\t\t\t\t\t\t\t\"BARANGAY 880\",\n\t\t\t\t\t\t\t\t\"BARANGAY 881\",\n\t\t\t\t\t\t\t\t\"BARANGAY 882\",\n\t\t\t\t\t\t\t\t\"BARANGAY 883\",\n\t\t\t\t\t\t\t\t\"BARANGAY 884\",\n\t\t\t\t\t\t\t\t\"BARANGAY 885\",\n\t\t\t\t\t\t\t\t\"BARANGAY 886\",\n\t\t\t\t\t\t\t\t\"BARANGAY 887\",\n\t\t\t\t\t\t\t\t\"BARANGAY 888\",\n\t\t\t\t\t\t\t\t\"BARANGAY 889\",\n\t\t\t\t\t\t\t\t\"BARANGAY 890\",\n\t\t\t\t\t\t\t\t\"BARANGAY 891\",\n\t\t\t\t\t\t\t\t\"BARANGAY 892\",\n\t\t\t\t\t\t\t\t\"BARANGAY 893\",\n\t\t\t\t\t\t\t\t\"BARANGAY 894\",\n\t\t\t\t\t\t\t\t\"BARANGAY 895\",\n\t\t\t\t\t\t\t\t\"BARANGAY 896\",\n\t\t\t\t\t\t\t\t\"BARANGAY 897\",\n\t\t\t\t\t\t\t\t\"BARANGAY 898\",\n\t\t\t\t\t\t\t\t\"BARANGAY 899\",\n\t\t\t\t\t\t\t\t\"BARANGAY 900\",\n\t\t\t\t\t\t\t\t\"BARANGAY 901\",\n\t\t\t\t\t\t\t\t\"BARANGAY 902\",\n\t\t\t\t\t\t\t\t\"BARANGAY 903\",\n\t\t\t\t\t\t\t\t\"BARANGAY 904\",\n\t\t\t\t\t\t\t\t\"BARANGAY 905\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"name\": \"MANILA-SANTA CRUZ\",\n\t\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BARANGAY 297\",\n\t\t\t\t\t\t\t\t\"BARANGAY 298\",\n\t\t\t\t\t\t\t\t\"BARANGAY 299\",\n\t\t\t\t\t\t\t\t\"BARANGAY 300\",\n\t\t\t\t\t\t\t\t\"BARANGAY 301\",\n\t\t\t\t\t\t\t\t\"BARANGAY 302\",\n\t\t\t\t\t\t\t\t\"BARANGAY 303\",\n\t\t\t\t\t\t\t\t\"BARANGAY 304\",\n\t\t\t\t\t\t\t\t\"BARANGAY 305\",\n\t\t\t\t\t\t\t\t\"BARANGAY 310\",\n\t\t\t\t\t\t\t\t\"BARANGAY 311\",\n\t\t\t\t\t\t\t\t\"BARANGAY 312\",\n\t\t\t\t\t\t\t\t\"BARANGAY 313\",\n\t\t\t\t\t\t\t\t\"BARANGAY 314\",\n\t\t\t\t\t\t\t\t\"BARANGAY 315\",\n\t\t\t\t\t\t\t\t\"BARANGAY 316\",\n\t\t\t\t\t\t\t\t\"BARANGAY 317\",\n\t\t\t\t\t\t\t\t\"BARANGAY 318\",\n\t\t\t\t\t\t\t\t\"BARANGAY 319\",\n\t\t\t\t\t\t\t\t\"BARANGAY 320\",\n\t\t\t\t\t\t\t\t\"BARANGAY 321\",\n\t\t\t\t\t\t\t\t\"BARANGAY 322\",\n\t\t\t\t\t\t\t\t\"BARANGAY 323\",\n\t\t\t\t\t\t\t\t\"BARANGAY 324\",\n\t\t\t\t\t\t\t\t\"BARANGAY 325\",\n\t\t\t\t\t\t\t\t\"BARANGAY 326\",\n\t\t\t\t\t\t\t\t\"BARANGAY 327\",\n\t\t\t\t\t\t\t\t\"BARANGAY 328\",\n\t\t\t\t\t\t\t\t\"BARANGAY 329\",\n\t\t\t\t\t\t\t\t\"BARANGAY 330\",\n\t\t\t\t\t\t\t\t\"BARANGAY 331\",\n\t\t\t\t\t\t\t\t\"BARANGAY 332\",\n\t\t\t\t\t\t\t\t\"BARANGAY 333\",\n\t\t\t\t\t\t\t\t\"BARANGAY 334\",\n\t\t\t\t\t\t\t\t\"BARANGAY 335\",\n\t\t\t\t\t\t\t\t\"BARANGAY 336\",\n\t\t\t\t\t\t\t\t\"BARANGAY 337\",\n\t\t\t\t\t\t\t\t\"BARANGAY 338\",\n\t\t\t\t\t\t\t\t\"BARANGAY 339\",\n\t\t\t\t\t\t\t\t\"BARANGAY 340\",\n\t\t\t\t\t\t\t\t\"BARANGAY 341\",\n\t\t\t\t\t\t\t\t\"BARANGAY 342\",\n\t\t\t\t\t\t\t\t\"BARANGAY 343\",\n\t\t\t\t\t\t\t\t\"BARANGAY 344\",\n\t\t\t\t\t\t\t\t\"BARANGAY 345\",\n\t\t\t\t\t\t\t\t\"BARANGAY 346\",\n\t\t\t\t\t\t\t\t\"BARANGAY 347\",\n\t\t\t\t\t\t\t\t\"BARANGAY 348\",\n\t\t\t\t\t\t\t\t\"BARANGAY 349\",\n\t\t\t\t\t\t\t\t\"BARANGAY 350\",\n\t\t\t\t\t\t\t\t\"BARANGAY 351\",\n\t\t\t\t\t\t\t\t\"BARANGAY 352\",\n\t\t\t\t\t\t\t\t\"BARANGAY 353\",\n\t\t\t\t\t\t\t\t\"BARANGAY 354\",\n\t\t\t\t\t\t\t\t\"BARANGAY 355\",\n\t\t\t\t\t\t\t\t\"BARANGAY 356\",\n\t\t\t\t\t\t\t\t\"BARANGAY 357\",\n\t\t\t\t\t\t\t\t\"BARANGAY 358\",\n\t\t\t\t\t\t\t\t\"BARANGAY 359\",\n\t\t\t\t\t\t\t\t\"BARANGAY 360\",\n\t\t\t\t\t\t\t\t\"BARANGAY 361\",\n\t\t\t\t\t\t\t\t\"BARANGAY 362\",\n\t\t\t\t\t\t\t\t\"BARANGAY 363\",\n\t\t\t\t\t\t\t\t\"BARANGAY 364\",\n\t\t\t\t\t\t\t\t\"BARANGAY 365\",\n\t\t\t\t\t\t\t\t\"BARANGAY 366\",\n\t\t\t\t\t\t\t\t\"BARANGAY 367\",\n\t\t\t\t\t\t\t\t\"BARANGAY 368\",\n\t\t\t\t\t\t\t\t\"BARANGAY 369\",\n\t\t\t\t\t\t\t\t\"BARANGAY 370\",\n\t\t\t\t\t\t\t\t\"BARANGAY 371\",\n\t\t\t\t\t\t\t\t\"BARANGAY 372\",\n\t\t\t\t\t\t\t\t\"BARANGAY 373\",\n\t\t\t\t\t\t\t\t\"BARANGAY 374\",\n\t\t\t\t\t\t\t\t\"BARANGAY 375\",\n\t\t\t\t\t\t\t\t\"BARANGAY 376\",\n\t\t\t\t\t\t\t\t\"BARANGAY 377\",\n\t\t\t\t\t\t\t\t\"BARANGAY 378\",\n\t\t\t\t\t\t\t\t\"BARANGAY 379\",\n\t\t\t\t\t\t\t\t\"BARANGAY 380\",\n\t\t\t\t\t\t\t\t\"BARANGAY 381\",\n\t\t\t\t\t\t\t\t\"BARANGAY 382\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"name\": \"MANILA-TONDO I/II\",\n\t\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BARANGAY 1\",\n\t\t\t\t\t\t\t\t\"BARANGAY 2\",\n\t\t\t\t\t\t\t\t\"BARANGAY 3\",\n\t\t\t\t\t\t\t\t\"BARANGAY 4\",\n\t\t\t\t\t\t\t\t\"BARANGAY 5\",\n\t\t\t\t\t\t\t\t\"BARANGAY 6\",\n\t\t\t\t\t\t\t\t\"BARANGAY 7\",\n\t\t\t\t\t\t\t\t\"BARANGAY 8\",\n\t\t\t\t\t\t\t\t\"BARANGAY 9\",\n\t\t\t\t\t\t\t\t\"BARANGAY 10\",\n\t\t\t\t\t\t\t\t\"BARANGAY 11\",\n\t\t\t\t\t\t\t\t\"BARANGAY 12\",\n\t\t\t\t\t\t\t\t\"BARANGAY 13\",\n\t\t\t\t\t\t\t\t\"BARANGAY 14\",\n\t\t\t\t\t\t\t\t\"BARANGAY 15\",\n\t\t\t\t\t\t\t\t\"BARANGAY 16\",\n\t\t\t\t\t\t\t\t\"BARANGAY 17\",\n\t\t\t\t\t\t\t\t\"BARANGAY 18\",\n\t\t\t\t\t\t\t\t\"BARANGAY 19\",\n\t\t\t\t\t\t\t\t\"BARANGAY 20\",\n\t\t\t\t\t\t\t\t\"BARANGAY 25\",\n\t\t\t\t\t\t\t\t\"BARANGAY 26\",\n\t\t\t\t\t\t\t\t\"BARANGAY 28\",\n\t\t\t\t\t\t\t\t\"BARANGAY 29\",\n\t\t\t\t\t\t\t\t\"BARANGAY 30\",\n\t\t\t\t\t\t\t\t\"BARANGAY 31\",\n\t\t\t\t\t\t\t\t\"BARANGAY 32\",\n\t\t\t\t\t\t\t\t\"BARANGAY 33\",\n\t\t\t\t\t\t\t\t\"BARANGAY 34\",\n\t\t\t\t\t\t\t\t\"BARANGAY 35\",\n\t\t\t\t\t\t\t\t\"BARANGAY 36\",\n\t\t\t\t\t\t\t\t\"BARANGAY 37\",\n\t\t\t\t\t\t\t\t\"BARANGAY 38\",\n\t\t\t\t\t\t\t\t\"BARANGAY 39\",\n\t\t\t\t\t\t\t\t\"BARANGAY 41\",\n\t\t\t\t\t\t\t\t\"BARANGAY 42\",\n\t\t\t\t\t\t\t\t\"BARANGAY 43\",\n\t\t\t\t\t\t\t\t\"BARANGAY 44\",\n\t\t\t\t\t\t\t\t\"BARANGAY 45\",\n\t\t\t\t\t\t\t\t\"BARANGAY 46\",\n\t\t\t\t\t\t\t\t\"BARANGAY 47\",\n\t\t\t\t\t\t\t\t\"BARANGAY 48\",\n\t\t\t\t\t\t\t\t\"BARANGAY 49\",\n\t\t\t\t\t\t\t\t\"BARANGAY 50\",\n\t\t\t\t\t\t\t\t\"BARANGAY 51\",\n\t\t\t\t\t\t\t\t\"BARANGAY 52\",\n\t\t\t\t\t\t\t\t\"BARANGAY 53\",\n\t\t\t\t\t\t\t\t\"BARANGAY 54\",\n\t\t\t\t\t\t\t\t\"BARANGAY 55\",\n\t\t\t\t\t\t\t\t\"BARANGAY 56\",\n\t\t\t\t\t\t\t\t\"BARANGAY 57\",\n\t\t\t\t\t\t\t\t\"BARANGAY 58\",\n\t\t\t\t\t\t\t\t\"BARANGAY 59\",\n\t\t\t\t\t\t\t\t\"BARANGAY 60\",\n\t\t\t\t\t\t\t\t\"BARANGAY 61\",\n\t\t\t\t\t\t\t\t\"BARANGAY 62\",\n\t\t\t\t\t\t\t\t\"BARANGAY 63\",\n\t\t\t\t\t\t\t\t\"BARANGAY 64\",\n\t\t\t\t\t\t\t\t\"BARANGAY 65\",\n\t\t\t\t\t\t\t\t\"BARANGAY 66\",\n\t\t\t\t\t\t\t\t\"BARANGAY 67\",\n\t\t\t\t\t\t\t\t\"BARANGAY 68\",\n\t\t\t\t\t\t\t\t\"BARANGAY 69\",\n\t\t\t\t\t\t\t\t\"BARANGAY 70\",\n\t\t\t\t\t\t\t\t\"BARANGAY 71\",\n\t\t\t\t\t\t\t\t\"BARANGAY 72\",\n\t\t\t\t\t\t\t\t\"BARANGAY 73\",\n\t\t\t\t\t\t\t\t\"BARANGAY 74\",\n\t\t\t\t\t\t\t\t\"BARANGAY 75\",\n\t\t\t\t\t\t\t\t\"BARANGAY 76\",\n\t\t\t\t\t\t\t\t\"BARANGAY 77\",\n\t\t\t\t\t\t\t\t\"BARANGAY 78\",\n\t\t\t\t\t\t\t\t\"BARANGAY 79\",\n\t\t\t\t\t\t\t\t\"BARANGAY 80\",\n\t\t\t\t\t\t\t\t\"BARANGAY 81\",\n\t\t\t\t\t\t\t\t\"BARANGAY 82\",\n\t\t\t\t\t\t\t\t\"BARANGAY 83\",\n\t\t\t\t\t\t\t\t\"BARANGAY 84\",\n\t\t\t\t\t\t\t\t\"BARANGAY 85\",\n\t\t\t\t\t\t\t\t\"BARANGAY 86\",\n\t\t\t\t\t\t\t\t\"BARANGAY 87\",\n\t\t\t\t\t\t\t\t\"BARANGAY 88\",\n\t\t\t\t\t\t\t\t\"BARANGAY 89\",\n\t\t\t\t\t\t\t\t\"BARANGAY 90\",\n\t\t\t\t\t\t\t\t\"BARANGAY 91\",\n\t\t\t\t\t\t\t\t\"BARANGAY 92\",\n\t\t\t\t\t\t\t\t\"BARANGAY 93\",\n\t\t\t\t\t\t\t\t\"BARANGAY 94\",\n\t\t\t\t\t\t\t\t\"BARANGAY 95\",\n\t\t\t\t\t\t\t\t\"BARANGAY 96\",\n\t\t\t\t\t\t\t\t\"BARANGAY 97\",\n\t\t\t\t\t\t\t\t\"BARANGAY 98\",\n\t\t\t\t\t\t\t\t\"BARANGAY 99\",\n\t\t\t\t\t\t\t\t\"BARANGAY 100\",\n\t\t\t\t\t\t\t\t\"BARANGAY 101\",\n\t\t\t\t\t\t\t\t\"BARANGAY 102\",\n\t\t\t\t\t\t\t\t\"BARANGAY 103\",\n\t\t\t\t\t\t\t\t\"BARANGAY 104\",\n\t\t\t\t\t\t\t\t\"BARANGAY 105\",\n\t\t\t\t\t\t\t\t\"BARANGAY 106\",\n\t\t\t\t\t\t\t\t\"BARANGAY 107\",\n\t\t\t\t\t\t\t\t\"BARANGAY 108\",\n\t\t\t\t\t\t\t\t\"BARANGAY 109\",\n\t\t\t\t\t\t\t\t\"BARANGAY 110\",\n\t\t\t\t\t\t\t\t\"BARANGAY 111\",\n\t\t\t\t\t\t\t\t\"BARANGAY 112\",\n\t\t\t\t\t\t\t\t\"BARANGAY 116\",\n\t\t\t\t\t\t\t\t\"BARANGAY 117\",\n\t\t\t\t\t\t\t\t\"BARANGAY 118\",\n\t\t\t\t\t\t\t\t\"BARANGAY 119\",\n\t\t\t\t\t\t\t\t\"BARANGAY 120\",\n\t\t\t\t\t\t\t\t\"BARANGAY 121\",\n\t\t\t\t\t\t\t\t\"BARANGAY 122\",\n\t\t\t\t\t\t\t\t\"BARANGAY 123\",\n\t\t\t\t\t\t\t\t\"BARANGAY 124\",\n\t\t\t\t\t\t\t\t\"BARANGAY 125\",\n\t\t\t\t\t\t\t\t\"BARANGAY 126\",\n\t\t\t\t\t\t\t\t\"BARANGAY 127\",\n\t\t\t\t\t\t\t\t\"BARANGAY 128\",\n\t\t\t\t\t\t\t\t\"BARANGAY 129\",\n\t\t\t\t\t\t\t\t\"BARANGAY 130\",\n\t\t\t\t\t\t\t\t\"BARANGAY 131\",\n\t\t\t\t\t\t\t\t\"BARANGAY 132\",\n\t\t\t\t\t\t\t\t\"BARANGAY 133\",\n\t\t\t\t\t\t\t\t\"BARANGAY 134\",\n\t\t\t\t\t\t\t\t\"BARANGAY 135\",\n\t\t\t\t\t\t\t\t\"BARANGAY 136\",\n\t\t\t\t\t\t\t\t\"BARANGAY 137\",\n\t\t\t\t\t\t\t\t\"BARANGAY 138\",\n\t\t\t\t\t\t\t\t\"BARANGAY 139\",\n\t\t\t\t\t\t\t\t\"BARANGAY 140\",\n\t\t\t\t\t\t\t\t\"BARANGAY 141\",\n\t\t\t\t\t\t\t\t\"BARANGAY 142\",\n\t\t\t\t\t\t\t\t\"BARANGAY 143\",\n\t\t\t\t\t\t\t\t\"BARANGAY 144\",\n\t\t\t\t\t\t\t\t\"BARANGAY 145\",\n\t\t\t\t\t\t\t\t\"BARANGAY 146\",\n\t\t\t\t\t\t\t\t\"BARANGAY 147\",\n\t\t\t\t\t\t\t\t\"BARANGAY 148\",\n\t\t\t\t\t\t\t\t\"BARANGAY 149\",\n\t\t\t\t\t\t\t\t\"BARANGAY 150\",\n\t\t\t\t\t\t\t\t\"BARANGAY 151\",\n\t\t\t\t\t\t\t\t\"BARANGAY 152\",\n\t\t\t\t\t\t\t\t\"BARANGAY 153\",\n\t\t\t\t\t\t\t\t\"BARANGAY 154\",\n\t\t\t\t\t\t\t\t\"BARANGAY 155\",\n\t\t\t\t\t\t\t\t\"BARANGAY 156\",\n\t\t\t\t\t\t\t\t\"BARANGAY 157\",\n\t\t\t\t\t\t\t\t\"BARANGAY 158\",\n\t\t\t\t\t\t\t\t\"BARANGAY 159\",\n\t\t\t\t\t\t\t\t\"BARANGAY 160\",\n\t\t\t\t\t\t\t\t\"BARANGAY 161\",\n\t\t\t\t\t\t\t\t\"BARANGAY 162\",\n\t\t\t\t\t\t\t\t\"BARANGAY 163\",\n\t\t\t\t\t\t\t\t\"BARANGAY 164\",\n\t\t\t\t\t\t\t\t\"BARANGAY 165\",\n\t\t\t\t\t\t\t\t\"BARANGAY 166\",\n\t\t\t\t\t\t\t\t\"BARANGAY 167\",\n\t\t\t\t\t\t\t\t\"BARANGAY 168\",\n\t\t\t\t\t\t\t\t\"BARANGAY 169\",\n\t\t\t\t\t\t\t\t\"BARANGAY 170\",\n\t\t\t\t\t\t\t\t\"BARANGAY 171\",\n\t\t\t\t\t\t\t\t\"BARANGAY 172\",\n\t\t\t\t\t\t\t\t\"BARANGAY 173\",\n\t\t\t\t\t\t\t\t\"BARANGAY 174\",\n\t\t\t\t\t\t\t\t\"BARANGAY 175\",\n\t\t\t\t\t\t\t\t\"BARANGAY 176\",\n\t\t\t\t\t\t\t\t\"BARANGAY 177\",\n\t\t\t\t\t\t\t\t\"BARANGAY 178\",\n\t\t\t\t\t\t\t\t\"BARANGAY 179\",\n\t\t\t\t\t\t\t\t\"BARANGAY 180\",\n\t\t\t\t\t\t\t\t\"BARANGAY 181\",\n\t\t\t\t\t\t\t\t\"BARANGAY 182\",\n\t\t\t\t\t\t\t\t\"BARANGAY 183\",\n\t\t\t\t\t\t\t\t\"BARANGAY 184\",\n\t\t\t\t\t\t\t\t\"BARANGAY 185\",\n\t\t\t\t\t\t\t\t\"BARANGAY 186\",\n\t\t\t\t\t\t\t\t\"BARANGAY 187\",\n\t\t\t\t\t\t\t\t\"BARANGAY 188\",\n\t\t\t\t\t\t\t\t\"BARANGAY 189\",\n\t\t\t\t\t\t\t\t\"BARANGAY 190\",\n\t\t\t\t\t\t\t\t\"BARANGAY 191\",\n\t\t\t\t\t\t\t\t\"BARANGAY 192\",\n\t\t\t\t\t\t\t\t\"BARANGAY 193\",\n\t\t\t\t\t\t\t\t\"BARANGAY 194\",\n\t\t\t\t\t\t\t\t\"BARANGAY 195\",\n\t\t\t\t\t\t\t\t\"BARANGAY 196\",\n\t\t\t\t\t\t\t\t\"BARANGAY 197\",\n\t\t\t\t\t\t\t\t\"BARANGAY 198\",\n\t\t\t\t\t\t\t\t\"BARANGAY 199\",\n\t\t\t\t\t\t\t\t\"BARANGAY 200\",\n\t\t\t\t\t\t\t\t\"BARANGAY 201\",\n\t\t\t\t\t\t\t\t\"BARANGAY 202\",\n\t\t\t\t\t\t\t\t\"BARANGAY 202-A\",\n\t\t\t\t\t\t\t\t\"BARANGAY 203\",\n\t\t\t\t\t\t\t\t\"BARANGAY 204\",\n\t\t\t\t\t\t\t\t\"BARANGAY 205\",\n\t\t\t\t\t\t\t\t\"BARANGAY 206\",\n\t\t\t\t\t\t\t\t\"BARANGAY 207\",\n\t\t\t\t\t\t\t\t\"BARANGAY 208\",\n\t\t\t\t\t\t\t\t\"BARANGAY 209\",\n\t\t\t\t\t\t\t\t\"BARANGAY 210\",\n\t\t\t\t\t\t\t\t\"BARANGAY 211\",\n\t\t\t\t\t\t\t\t\"BARANGAY 212\",\n\t\t\t\t\t\t\t\t\"BARANGAY 213\",\n\t\t\t\t\t\t\t\t\"BARANGAY 214\",\n\t\t\t\t\t\t\t\t\"BARANGAY 215\",\n\t\t\t\t\t\t\t\t\"BARANGAY 216\",\n\t\t\t\t\t\t\t\t\"BARANGAY 217\",\n\t\t\t\t\t\t\t\t\"BARANGAY 218\",\n\t\t\t\t\t\t\t\t\"BARANGAY 219\",\n\t\t\t\t\t\t\t\t\"BARANGAY 220\",\n\t\t\t\t\t\t\t\t\"BARANGAY 221\",\n\t\t\t\t\t\t\t\t\"BARANGAY 222\",\n\t\t\t\t\t\t\t\t\"BARANGAY 223\",\n\t\t\t\t\t\t\t\t\"BARANGAY 224\",\n\t\t\t\t\t\t\t\t\"BARANGAY 225\",\n\t\t\t\t\t\t\t\t\"BARANGAY 226\",\n\t\t\t\t\t\t\t\t\"BARANGAY 227\",\n\t\t\t\t\t\t\t\t\"BARANGAY 228\",\n\t\t\t\t\t\t\t\t\"BARANGAY 229\",\n\t\t\t\t\t\t\t\t\"BARANGAY 230\",\n\t\t\t\t\t\t\t\t\"BARANGAY 231\",\n\t\t\t\t\t\t\t\t\"BARANGAY 232\",\n\t\t\t\t\t\t\t\t\"BARANGAY 233\",\n\t\t\t\t\t\t\t\t\"BARANGAY 234\",\n\t\t\t\t\t\t\t\t\"BARANGAY 235\",\n\t\t\t\t\t\t\t\t\"BARANGAY 236\",\n\t\t\t\t\t\t\t\t\"BARANGAY 237\",\n\t\t\t\t\t\t\t\t\"BARANGAY 238\",\n\t\t\t\t\t\t\t\t\"BARANGAY 239\",\n\t\t\t\t\t\t\t\t\"BARANGAY 240\",\n\t\t\t\t\t\t\t\t\"BARANGAY 241\",\n\t\t\t\t\t\t\t\t\"BARANGAY 242\",\n\t\t\t\t\t\t\t\t\"BARANGAY 243\",\n\t\t\t\t\t\t\t\t\"BARANGAY 244\",\n\t\t\t\t\t\t\t\t\"BARANGAY 245\",\n\t\t\t\t\t\t\t\t\"BARANGAY 246\",\n\t\t\t\t\t\t\t\t\"BARANGAY 247\",\n\t\t\t\t\t\t\t\t\"BARANGAY 248\",\n\t\t\t\t\t\t\t\t\"BARANGAY 249\",\n\t\t\t\t\t\t\t\t\"BARANGAY 250\",\n\t\t\t\t\t\t\t\t\"BARANGAY 251\",\n\t\t\t\t\t\t\t\t\"BARANGAY 252\",\n\t\t\t\t\t\t\t\t\"BARANGAY 253\",\n\t\t\t\t\t\t\t\t\"BARANGAY 254\",\n\t\t\t\t\t\t\t\t\"BARANGAY 255\",\n\t\t\t\t\t\t\t\t\"BARANGAY 256\",\n\t\t\t\t\t\t\t\t\"BARANGAY 257\",\n\t\t\t\t\t\t\t\t\"BARANGAY 258\",\n\t\t\t\t\t\t\t\t\"BARANGAY 259\",\n\t\t\t\t\t\t\t\t\"BARANGAY 260\",\n\t\t\t\t\t\t\t\t\"BARANGAY 261\",\n\t\t\t\t\t\t\t\t\"BARANGAY 262\",\n\t\t\t\t\t\t\t\t\"BARANGAY 263\",\n\t\t\t\t\t\t\t\t\"BARANGAY 264\",\n\t\t\t\t\t\t\t\t\"BARANGAY 265\",\n\t\t\t\t\t\t\t\t\"BARANGAY 266\",\n\t\t\t\t\t\t\t\t\"BARANGAY 267\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t}]\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\"name\": \"NCR, SECOND DISTRICT\",\n\t\t\t\t\t\"cities\": [{\n\t\t\t\t\t\t\t\"name\": \"MANDALUYONG\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ADDITION HILLS\",\n\t\t\t\t\t\t\t\t\"BAGONG SILANG\",\n\t\t\t\t\t\t\t\t\"BARANGKA DRIVE\",\n\t\t\t\t\t\t\t\t\"BARANGKA IBABA\",\n\t\t\t\t\t\t\t\t\"BARANGKA ILAYA\",\n\t\t\t\t\t\t\t\t\"BARANGKA ITAAS\",\n\t\t\t\t\t\t\t\t\"BUAYANG BATO\",\n\t\t\t\t\t\t\t\t\"BUROL\",\n\t\t\t\t\t\t\t\t\"DAANG BAKAL\",\n\t\t\t\t\t\t\t\t\"HAGDANG BATO ITAAS\",\n\t\t\t\t\t\t\t\t\"HAGDANG BATO LIBIS\",\n\t\t\t\t\t\t\t\t\"HARAPIN ANG BUKAS\",\n\t\t\t\t\t\t\t\t\"HIGHWAY HILLS\",\n\t\t\t\t\t\t\t\t\"HULO\",\n\t\t\t\t\t\t\t\t\"MABINI-J. RIZAL\",\n\t\t\t\t\t\t\t\t\"MALAMIG\",\n\t\t\t\t\t\t\t\t\"MAUWAY\",\n\t\t\t\t\t\t\t\t\"NAMAYAN\",\n\t\t\t\t\t\t\t\t\"NEW ZA\u00D1IGA\",\n\t\t\t\t\t\t\t\t\"OLD ZA\u00D1IGA\",\n\t\t\t\t\t\t\t\t\"PAG-ASA\",\n\t\t\t\t\t\t\t\t\"PLAINVIEW\",\n\t\t\t\t\t\t\t\t\"PLEASANT HILLS\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"SAN JOSE\",\n\t\t\t\t\t\t\t\t\"VERGARA\",\n\t\t\t\t\t\t\t\t\"WACK-WACK GREENHILLS\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"MARIKINA\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BARANGKA\",\n\t\t\t\t\t\t\t\t\"CALUMPANG\",\n\t\t\t\t\t\t\t\t\"CONCEPCION UNO\",\n\t\t\t\t\t\t\t\t\"CONCEPCION DOS\",\n\t\t\t\t\t\t\t\t\"FORTUNE\",\n\t\t\t\t\t\t\t\t\"INDUSTRIAL VALLEY\",\n\t\t\t\t\t\t\t\t\"JESUS DELA PE\u00D1A\",\n\t\t\t\t\t\t\t\t\"MALANDAY\",\n\t\t\t\t\t\t\t\t\"MARIKINA HEIGHTS (CONCEPCION)\",\n\t\t\t\t\t\t\t\t\"NANGKA\",\n\t\t\t\t\t\t\t\t\"PARANG\",\n\t\t\t\t\t\t\t\t\"SAN ROQUE\",\n\t\t\t\t\t\t\t\t\"SANTA ELENA (POB.)\",\n\t\t\t\t\t\t\t\t\"SANTO NI\u00D1O\",\n\t\t\t\t\t\t\t\t\"TA\u00D1ONG\",\n\t\t\t\t\t\t\t\t\"TUMANA\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"PASIG\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BAGONG ILOG\",\n\t\t\t\t\t\t\t\t\"BAGONG KATIPUNAN\",\n\t\t\t\t\t\t\t\t\"BAMBANG\",\n\t\t\t\t\t\t\t\t\"BUTING\",\n\t\t\t\t\t\t\t\t\"CANIOGAN\",\n\t\t\t\t\t\t\t\t\"DELA PAZ\",\n\t\t\t\t\t\t\t\t\"KALAWAAN\",\n\t\t\t\t\t\t\t\t\"KAPASIGAN\",\n\t\t\t\t\t\t\t\t\"KAPITOLYO\",\n\t\t\t\t\t\t\t\t\"MALINAO\",\n\t\t\t\t\t\t\t\t\"MANGGAHAN\",\n\t\t\t\t\t\t\t\t\"MAYBUNGA\",\n\t\t\t\t\t\t\t\t\"ORANBO\",\n\t\t\t\t\t\t\t\t\"PALATIW\",\n\t\t\t\t\t\t\t\t\"PINAGBUHATAN\",\n\t\t\t\t\t\t\t\t\"PINEDA\",\n\t\t\t\t\t\t\t\t\"ROSARIO\",\n\t\t\t\t\t\t\t\t\"SAGAD\",\n\t\t\t\t\t\t\t\t\"SAN ANTONIO\",\n\t\t\t\t\t\t\t\t\"SAN JOAQUIN\",\n\t\t\t\t\t\t\t\t\"SAN JOSE\",\n\t\t\t\t\t\t\t\t\"SAN MIGUEL\",\n\t\t\t\t\t\t\t\t\"SAN NICOLAS (POB.)\",\n\t\t\t\t\t\t\t\t\"SANTA CRUZ\",\n\t\t\t\t\t\t\t\t\"SANTA LUCIA\",\n\t\t\t\t\t\t\t\t\"SANTA ROSA\",\n\t\t\t\t\t\t\t\t\"SANTO TOMAS\",\n\t\t\t\t\t\t\t\t\"SANTOLAN\",\n\t\t\t\t\t\t\t\t\"SUMILANG\",\n\t\t\t\t\t\t\t\t\"UGONG\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"QUEZON CITY\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ALICIA\",\n\t\t\t\t\t\t\t\t\"AMIHAN\",\n\t\t\t\t\t\t\t\t\"APOLONIO SAMSON\",\n\t\t\t\t\t\t\t\t\"AURORA\",\n\t\t\t\t\t\t\t\t\"BAESA\",\n\t\t\t\t\t\t\t\t\"BAGBAG\",\n\t\t\t\t\t\t\t\t\"BAGONG LIPUNAN NG CRAME\",\n\t\t\t\t\t\t\t\t\"BAGONG PAG-ASA\",\n\t\t\t\t\t\t\t\t\"BAGONG SILANGAN\",\n\t\t\t\t\t\t\t\t\"BAGUMBAYAN\",\n\t\t\t\t\t\t\t\t\"BAGUMBUHAY\",\n\t\t\t\t\t\t\t\t\"BAHAY TORO\",\n\t\t\t\t\t\t\t\t\"BALINGASA\",\n\t\t\t\t\t\t\t\t\"BALONG BATO\",\n\t\t\t\t\t\t\t\t\"BATASAN HILLS\",\n\t\t\t\t\t\t\t\t\"BAYANIHAN\",\n\t\t\t\t\t\t\t\t\"BLUE RIDGE A\",\n\t\t\t\t\t\t\t\t\"BLUE RIDGE B\",\n\t\t\t\t\t\t\t\t\"BOTOCAN\",\n\t\t\t\t\t\t\t\t\"BUNGAD\",\n\t\t\t\t\t\t\t\t\"CAMP AGUINALDO\",\n\t\t\t\t\t\t\t\t\"CAPRI\",\n\t\t\t\t\t\t\t\t\"CENTRAL\",\n\t\t\t\t\t\t\t\t\"CLARO\",\n\t\t\t\t\t\t\t\t\"COMMONWEALTH\",\n\t\t\t\t\t\t\t\t\"CULIAT\",\n\t\t\t\t\t\t\t\t\"DAMAR\",\n\t\t\t\t\t\t\t\t\"DAMAYAN\",\n\t\t\t\t\t\t\t\t\"DAMAYANG LAGI\",\n\t\t\t\t\t\t\t\t\"DEL MONTE\",\n\t\t\t\t\t\t\t\t\"DIOQUINO ZOBEL\",\n\t\t\t\t\t\t\t\t\"DO\u00D1A IMELDA\",\n\t\t\t\t\t\t\t\t\"DO\u00D1A JOSEFA\",\n\t\t\t\t\t\t\t\t\"DDON MANUEL\",\n\t\t\t\t\t\t\t\t\"DUYAN-DUYAN\",\n\t\t\t\t\t\t\t\t\"E. RODRIGUEZ\",\n\t\t\t\t\t\t\t\t\"EAST KAMIAS\",\n\t\t\t\t\t\t\t\t\"ESCOPA I\",\n\t\t\t\t\t\t\t\t\"ESCOPA II\",\n\t\t\t\t\t\t\t\t\"ESCOPA III\",\n\t\t\t\t\t\t\t\t\"ESCOPA IV\",\n\t\t\t\t\t\t\t\t\"FAIRVIEW\",\n\t\t\t\t\t\t\t\t\"GREATER LAGRO\",\n\t\t\t\t\t\t\t\t\"GULOD\",\n\t\t\t\t\t\t\t\t\"HOLY SPIRIT\",\n\t\t\t\t\t\t\t\t\"HORSESHOE\",\n\t\t\t\t\t\t\t\t\"IMMACULATE CONCEPCION\",\n\t\t\t\t\t\t\t\t\"KALIGAYAHAN\",\n\t\t\t\t\t\t\t\t\"KALUSUGAN\",\n\t\t\t\t\t\t\t\t\"KAMUNING\",\n\t\t\t\t\t\t\t\t\"KATIPUNAN\",\n\t\t\t\t\t\t\t\t\"KAUNLARAN\",\n\t\t\t\t\t\t\t\t\"KRISTONG HARI\",\n\t\t\t\t\t\t\t\t\"KRUS NA LIGAS\",\n\t\t\t\t\t\t\t\t\"LAGING HANDA\",\n\t\t\t\t\t\t\t\t\"LIBIS\",\n\t\t\t\t\t\t\t\t\"LOURDES\",\n\t\t\t\t\t\t\t\t\"LOYOLA HEIGHTS\",\n\t\t\t\t\t\t\t\t\"MAHARLIKA\",\n\t\t\t\t\t\t\t\t\"MALAYA\",\n\t\t\t\t\t\t\t\t\"MANGGA\",\n\t\t\t\t\t\t\t\t\"MANRESA\",\n\t\t\t\t\t\t\t\t\"MARIANA\",\n\t\t\t\t\t\t\t\t\"MARIBLO\",\n\t\t\t\t\t\t\t\t\"MARILAG\",\n\t\t\t\t\t\t\t\t\"MASAGANA\",\n\t\t\t\t\t\t\t\t\"MASAMBONG\",\n\t\t\t\t\t\t\t\t\"MATANDANG BALARA\",\n\t\t\t\t\t\t\t\t\"MILAGROSA\",\n\t\t\t\t\t\t\t\t\"N.S. AMORANTO (GINTONG SILAHIS)\",\n\t\t\t\t\t\t\t\t\"NAGKAISANG NAYON\",\n\t\t\t\t\t\t\t\t\"NNAYONG KAUNLARAN\",\n\t\t\t\t\t\t\t\t\"NEW ERA (CONSTITUTION HILLS)\",\n\t\t\t\t\t\t\t\t\"NORTH FAIRVIEW\",\n\t\t\t\t\t\t\t\t\"NOVALICHES PROPER\",\n\t\t\t\t\t\t\t\t\"OBRERO\",\n\t\t\t\t\t\t\t\t\"OLD CAPITOL SITE\",\n\t\t\t\t\t\t\t\t\"PAANG BUNDOK\",\n\t\t\t\t\t\t\t\t\"PAG-IBIG SA NAYON\",\n\t\t\t\t\t\t\t\t\"PALIGSAHAN\",\n\t\t\t\t\t\t\t\t\"PALTOK\",\n\t\t\t\t\t\t\t\t\"PANSOL\",\n\t\t\t\t\t\t\t\t\"PARAISO\",\n\t\t\t\t\t\t\t\t\"PASONG PUTIK PROPER\",\n\t\t\t\t\t\t\t\t\"PASONG TAMO\",\n\t\t\t\t\t\t\t\t\"PAYATAS\",\n\t\t\t\t\t\t\t\t\"PHIL-AM\",\n\t\t\t\t\t\t\t\t\"PINAGKAISAHAN\",\n\t\t\t\t\t\t\t\t\"PINYAHAN\",\n\t\t\t\t\t\t\t\t\"PROJECT 6\",\n\t\t\t\t\t\t\t\t\"QUIRINO 2-A\",\n\t\t\t\t\t\t\t\t\"QUIRINO 2-B\",\n\t\t\t\t\t\t\t\t\"QUIRINO 2-C\",\n\t\t\t\t\t\t\t\t\"QUIRINO 3-A\",\n\t\t\t\t\t\t\t\t\"RAMON MAGSAYSAY\",\n\t\t\t\t\t\t\t\t\"ROXAS\",\n\t\t\t\t\t\t\t\t\"SACRED HEART\",\n\t\t\t\t\t\t\t\t\"SAINT IGNATIUS\",\n\t\t\t\t\t\t\t\t\"SAINT PETER\",\n\t\t\t\t\t\t\t\t\"SALVACION\",\n\t\t\t\t\t\t\t\t\"SAN AGUSTIN\",\n\t\t\t\t\t\t\t\t\"SAN ANTONIO\",\n\t\t\t\t\t\t\t\t\"SAN BARTOLOME\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO LABRADOR\",\n\t\t\t\t\t\t\t\t\"SAN JOSE\",\n\t\t\t\t\t\t\t\t\"SAN MARTIN DE PORRES\",\n\t\t\t\t\t\t\t\t\"SAN ROQUE\",\n\t\t\t\t\t\t\t\t\"SAN VICENTE\",\n\t\t\t\t\t\t\t\t\"SANGANDAAN\",\n\t\t\t\t\t\t\t\t\"SANTA CRUZ\",\n\t\t\t\t\t\t\t\t\"SANTA LUCIA\",\n\t\t\t\t\t\t\t\t\"SANTA MONICA\",\n\t\t\t\t\t\t\t\t\"SANTA TERESITA\",\n\t\t\t\t\t\t\t\t\"SANTO CRISTO\",\n\t\t\t\t\t\t\t\t\"SANTO DOMINGO (MATALAHIB)\",\n\t\t\t\t\t\t\t\t\"SANTO NI\u00D1O\",\n\t\t\t\t\t\t\t\t\"SANTOL\",\n\t\t\t\t\t\t\t\t\"SAUYO\",\n\t\t\t\t\t\t\t\t\"SIENNA\",\n\t\t\t\t\t\t\t\t\"SIKATUNA VILLAGE\",\n\t\t\t\t\t\t\t\t\"SILANGAN\",\n\t\t\t\t\t\t\t\t\"SOCORRO\",\n\t\t\t\t\t\t\t\t\"SOUTH TRIANGLE\",\n\t\t\t\t\t\t\t\t\"TAGUMPAY\",\n\t\t\t\t\t\t\t\t\"TALAYAN\",\n\t\t\t\t\t\t\t\t\"TALIPAPA\",\n\t\t\t\t\t\t\t\t\"TANDANG SORA\",\n\t\t\t\t\t\t\t\t\"TATALON\",\n\t\t\t\t\t\t\t\t\"TEACHERS VILLAGE EAST\",\n\t\t\t\t\t\t\t\t\"TEACHERS VILLAGE WEST\",\n\t\t\t\t\t\t\t\t\"U.P. CAMPUS\",\n\t\t\t\t\t\t\t\t\"U.P. VILLAGE\",\n\t\t\t\t\t\t\t\t\"UGONG NORTE\",\n\t\t\t\t\t\t\t\t\"UNANG SIGAW\",\n\t\t\t\t\t\t\t\t\"VALENCIA\",\n\t\t\t\t\t\t\t\t\"VASRA\",\n\t\t\t\t\t\t\t\t\"VETERANS VILLAGE\",\n\t\t\t\t\t\t\t\t\"VILLA MARIA CLARA\",\n\t\t\t\t\t\t\t\t\"WEST KAMIAS\",\n\t\t\t\t\t\t\t\t\"WEST TRIANGLE\",\n\t\t\t\t\t\t\t\t\"WHITE PLAINS\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"SAN JUAN\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ADDTION HILLS\",\n\t\t\t\t\t\t\t\t\"BALONG BATO\",\n\t\t\t\t\t\t\t\t\"BATIS\",\n\t\t\t\t\t\t\t\t\"CORAZON DE JESUS\",\n\t\t\t\t\t\t\t\t\"ERMITA\u00D1O\",\n\t\t\t\t\t\t\t\t\"GREEN HILLS\",\n\t\t\t\t\t\t\t\t\"HALO-HALO (ST. JOSEPH)\",\n\t\t\t\t\t\t\t\t\"ISABELITA\",\n\t\t\t\t\t\t\t\t\"KABAYANAN\",\n\t\t\t\t\t\t\t\t\"LITTLE BAGUIO\",\n\t\t\t\t\t\t\t\t\"MAYTUNAS\",\n\t\t\t\t\t\t\t\t\"ONSE\",\n\t\t\t\t\t\t\t\t\"PASADE\u00D1A\",\n\t\t\t\t\t\t\t\t\"PEDRO CRUZ\",\n\t\t\t\t\t\t\t\t\"PROGRESO\",\n\t\t\t\t\t\t\t\t\"RIVERA\",\n\t\t\t\t\t\t\t\t\"SALAPAN\",\n\t\t\t\t\t\t\t\t\"SAN PERFECTO\",\n\t\t\t\t\t\t\t\t\"SANTA LUCIA\",\n\t\t\t\t\t\t\t\t\"TIBAGAN\",\n\t\t\t\t\t\t\t\t\"WEST CRAME\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"NCR, THIRD DISTRICT\",\n\t\t\t\t\t\"cities\": [{\n\t\t\t\t\t\t\t\"name\": \"CALOOCAN\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BARANGAY 1\",\n\t\t\t\t\t\t\t\t\"BARANGAY 2\",\n\t\t\t\t\t\t\t\t\"BARANGAY 3\",\n\t\t\t\t\t\t\t\t\"BARANGAY 4\",\n\t\t\t\t\t\t\t\t\"BARANGAY 5\",\n\t\t\t\t\t\t\t\t\"BARANGAY 6\",\n\t\t\t\t\t\t\t\t\"BARANGAY 7\",\n\t\t\t\t\t\t\t\t\"BARANGAY 8\",\n\t\t\t\t\t\t\t\t\"BARANGAY 9\",\n\t\t\t\t\t\t\t\t\"BARANGAY 10\",\n\t\t\t\t\t\t\t\t\"BARANGAY 11\",\n\t\t\t\t\t\t\t\t\"BARANGAY 12\",\n\t\t\t\t\t\t\t\t\"BARANGAY 13\",\n\t\t\t\t\t\t\t\t\"BARANGAY 14\",\n\t\t\t\t\t\t\t\t\"BARANGAY 15\",\n\t\t\t\t\t\t\t\t\"BARANGAY 16\",\n\t\t\t\t\t\t\t\t\"BARANGAY 17\",\n\t\t\t\t\t\t\t\t\"BARANGAY 18\",\n\t\t\t\t\t\t\t\t\"BARANGAY 19\",\n\t\t\t\t\t\t\t\t\"BARANGAY 20\",\n\t\t\t\t\t\t\t\t\"BARANGAY 21\",\n\t\t\t\t\t\t\t\t\"BARANGAY 22\",\n\t\t\t\t\t\t\t\t\"BARANGAY 23\",\n\t\t\t\t\t\t\t\t\"BARANGAY 24\",\n\t\t\t\t\t\t\t\t\"BARANGAY 25\",\n\t\t\t\t\t\t\t\t\"BARANGAY 26\",\n\t\t\t\t\t\t\t\t\"BARANGAY 27\",\n\t\t\t\t\t\t\t\t\"BARANGAY 28\",\n\t\t\t\t\t\t\t\t\"BARANGAY 29\",\n\t\t\t\t\t\t\t\t\"BARANGAY 30\",\n\t\t\t\t\t\t\t\t\"BARANGAY 31\",\n\t\t\t\t\t\t\t\t\"BARANGAY 32\",\n\t\t\t\t\t\t\t\t\"BARANGAY 33\",\n\t\t\t\t\t\t\t\t\"BARANGAY 34\",\n\t\t\t\t\t\t\t\t\"BARANGAY 35\",\n\t\t\t\t\t\t\t\t\"BARANGAY 36\",\n\t\t\t\t\t\t\t\t\"BARANGAY 37\",\n\t\t\t\t\t\t\t\t\"BARANGAY 38\",\n\t\t\t\t\t\t\t\t\"BARANGAY 39\",\n\t\t\t\t\t\t\t\t\"BARANGAY 40\",\n\t\t\t\t\t\t\t\t\"BARANGAY 41\",\n\t\t\t\t\t\t\t\t\"BARANGAY 42\",\n\t\t\t\t\t\t\t\t\"BARANGAY 43\",\n\t\t\t\t\t\t\t\t\"BARANGAY 44\",\n\t\t\t\t\t\t\t\t\"BARANGAY 45\",\n\t\t\t\t\t\t\t\t\"BARANGAY 46\",\n\t\t\t\t\t\t\t\t\"BARANGAY 47\",\n\t\t\t\t\t\t\t\t\"BARANGAY 48\",\n\t\t\t\t\t\t\t\t\"BARANGAY 49\",\n\t\t\t\t\t\t\t\t\"BARANGAY 50\",\n\t\t\t\t\t\t\t\t\"BARANGAY 51\",\n\t\t\t\t\t\t\t\t\"BARANGAY 52\",\n\t\t\t\t\t\t\t\t\"BARANGAY 53\",\n\t\t\t\t\t\t\t\t\"BARANGAY 54\",\n\t\t\t\t\t\t\t\t\"BARANGAY 55\",\n\t\t\t\t\t\t\t\t\"BARANGAY 56\",\n\t\t\t\t\t\t\t\t\"BARANGAY 57\",\n\t\t\t\t\t\t\t\t\"BARANGAY 58\",\n\t\t\t\t\t\t\t\t\"BARANGAY 59\",\n\t\t\t\t\t\t\t\t\"BARANGAY 60\",\n\t\t\t\t\t\t\t\t\"BARANGAY 61\",\n\t\t\t\t\t\t\t\t\"BARANGAY 62\",\n\t\t\t\t\t\t\t\t\"BARANGAY 63\",\n\t\t\t\t\t\t\t\t\"BARANGAY 64\",\n\t\t\t\t\t\t\t\t\"BARANGAY 65\",\n\t\t\t\t\t\t\t\t\"BARANGAY 66\",\n\t\t\t\t\t\t\t\t\"BARANGAY 67\",\n\t\t\t\t\t\t\t\t\"BARANGAY 68\",\n\t\t\t\t\t\t\t\t\"BARANGAY 69\",\n\t\t\t\t\t\t\t\t\"BARANGAY 70\",\n\t\t\t\t\t\t\t\t\"BARANGAY 71\",\n\t\t\t\t\t\t\t\t\"BARANGAY 72\",\n\t\t\t\t\t\t\t\t\"BARANGAY 73\",\n\t\t\t\t\t\t\t\t\"BARANGAY 74\",\n\t\t\t\t\t\t\t\t\"BARANGAY 75\",\n\t\t\t\t\t\t\t\t\"BARANGAY 76\",\n\t\t\t\t\t\t\t\t\"BARANGAY 77\",\n\t\t\t\t\t\t\t\t\"BARANGAY 78\",\n\t\t\t\t\t\t\t\t\"BARANGAY 79\",\n\t\t\t\t\t\t\t\t\"BARANGAY 80\",\n\t\t\t\t\t\t\t\t\"BARANGAY 81\",\n\t\t\t\t\t\t\t\t\"BARANGAY 82\",\n\t\t\t\t\t\t\t\t\"BARANGAY 83\",\n\t\t\t\t\t\t\t\t\"BARANGAY 84\",\n\t\t\t\t\t\t\t\t\"BARANGAY 85\",\n\t\t\t\t\t\t\t\t\"BARANGAY 86\",\n\t\t\t\t\t\t\t\t\"BARANGAY 87\",\n\t\t\t\t\t\t\t\t\"BARANGAY 88\",\n\t\t\t\t\t\t\t\t\"BARANGAY 89\",\n\t\t\t\t\t\t\t\t\"BARANGAY 90\",\n\t\t\t\t\t\t\t\t\"BARANGAY 91\",\n\t\t\t\t\t\t\t\t\"BARANGAY 92\",\n\t\t\t\t\t\t\t\t\"BARANGAY 93\",\n\t\t\t\t\t\t\t\t\"BARANGAY 94\",\n\t\t\t\t\t\t\t\t\"BARANGAY 95\",\n\t\t\t\t\t\t\t\t\"BARANGAY 96\",\n\t\t\t\t\t\t\t\t\"BARANGAY 97\",\n\t\t\t\t\t\t\t\t\"BARANGAY 98\",\n\t\t\t\t\t\t\t\t\"BARANGAY 99\",\n\t\t\t\t\t\t\t\t\"BARANGAY 100\",\n\t\t\t\t\t\t\t\t\"BARANGAY 101\",\n\t\t\t\t\t\t\t\t\"BARANGAY 102\",\n\t\t\t\t\t\t\t\t\"BARANGAY 103\",\n\t\t\t\t\t\t\t\t\"BARANGAY 104\",\n\t\t\t\t\t\t\t\t\"BARANGAY 105\",\n\t\t\t\t\t\t\t\t\"BARANGAY 106\",\n\t\t\t\t\t\t\t\t\"BARANGAY 107\",\n\t\t\t\t\t\t\t\t\"BARANGAY 108\",\n\t\t\t\t\t\t\t\t\"BARANGAY 109\",\n\t\t\t\t\t\t\t\t\"BARANGAY 110\",\n\t\t\t\t\t\t\t\t\"BARANGAY 111\",\n\t\t\t\t\t\t\t\t\"BARANGAY 112\",\n\t\t\t\t\t\t\t\t\"BARANGAY 113\",\n\t\t\t\t\t\t\t\t\"BARANGAY 114\",\n\t\t\t\t\t\t\t\t\"BARANGAY 115\",\n\t\t\t\t\t\t\t\t\"BARANGAY 116\",\n\t\t\t\t\t\t\t\t\"BARANGAY 117\",\n\t\t\t\t\t\t\t\t\"BARANGAY 118\",\n\t\t\t\t\t\t\t\t\"BARANGAY 119\",\n\t\t\t\t\t\t\t\t\"BARANGAY 120\",\n\t\t\t\t\t\t\t\t\"BARANGAY 121\",\n\t\t\t\t\t\t\t\t\"BARANGAY 122\",\n\t\t\t\t\t\t\t\t\"BARANGAY 123\",\n\t\t\t\t\t\t\t\t\"BARANGAY 124\",\n\t\t\t\t\t\t\t\t\"BARANGAY 125\",\n\t\t\t\t\t\t\t\t\"BARANGAY 126\",\n\t\t\t\t\t\t\t\t\"BARANGAY 127\",\n\t\t\t\t\t\t\t\t\"BARANGAY 128\",\n\t\t\t\t\t\t\t\t\"BARANGAY 129\",\n\t\t\t\t\t\t\t\t\"BARANGAY 130\",\n\t\t\t\t\t\t\t\t\"BARANGAY 131\",\n\t\t\t\t\t\t\t\t\"BARANGAY 132\",\n\t\t\t\t\t\t\t\t\"BARANGAY 133\",\n\t\t\t\t\t\t\t\t\"BARANGAY 134\",\n\t\t\t\t\t\t\t\t\"BARANGAY 135\",\n\t\t\t\t\t\t\t\t\"BARANGAY 136\",\n\t\t\t\t\t\t\t\t\"BARANGAY 137\",\n\t\t\t\t\t\t\t\t\"BARANGAY 138\",\n\t\t\t\t\t\t\t\t\"BARANGAY 139\",\n\t\t\t\t\t\t\t\t\"BARANGAY 140\",\n\t\t\t\t\t\t\t\t\"BARANGAY 141\",\n\t\t\t\t\t\t\t\t\"BARANGAY 142\",\n\t\t\t\t\t\t\t\t\"BARANGAY 143\",\n\t\t\t\t\t\t\t\t\"BARANGAY 144\",\n\t\t\t\t\t\t\t\t\"BARANGAY 145\",\n\t\t\t\t\t\t\t\t\"BARANGAY 146\",\n\t\t\t\t\t\t\t\t\"BARANGAY 147\",\n\t\t\t\t\t\t\t\t\"BARANGAY 148\",\n\t\t\t\t\t\t\t\t\"BARANGAY 149\",\n\t\t\t\t\t\t\t\t\"BARANGAY 150\",\n\t\t\t\t\t\t\t\t\"BARANGAY 151\",\n\t\t\t\t\t\t\t\t\"BARANGAY 152\",\n\t\t\t\t\t\t\t\t\"BARANGAY 153\",\n\t\t\t\t\t\t\t\t\"BARANGAY 154\",\n\t\t\t\t\t\t\t\t\"BARANGAY 155\",\n\t\t\t\t\t\t\t\t\"BARANGAY 156\",\n\t\t\t\t\t\t\t\t\"BARANGAY 157\",\n\t\t\t\t\t\t\t\t\"BARANGAY 158\",\n\t\t\t\t\t\t\t\t\"BARANGAY 159\",\n\t\t\t\t\t\t\t\t\"BARANGAY 160\",\n\t\t\t\t\t\t\t\t\"BARANGAY 161\",\n\t\t\t\t\t\t\t\t\"BARANGAY 162\",\n\t\t\t\t\t\t\t\t\"BARANGAY 163\",\n\t\t\t\t\t\t\t\t\"BARANGAY 164\",\n\t\t\t\t\t\t\t\t\"BARANGAY 165\",\n\t\t\t\t\t\t\t\t\"BARANGAY 166\",\n\t\t\t\t\t\t\t\t\"BARANGAY 167\",\n\t\t\t\t\t\t\t\t\"BARANGAY 168\",\n\t\t\t\t\t\t\t\t\"BARANGAY 169\",\n\t\t\t\t\t\t\t\t\"BARANGAY 170\",\n\t\t\t\t\t\t\t\t\"BARANGAY 171\",\n\t\t\t\t\t\t\t\t\"BARANGAY 172\",\n\t\t\t\t\t\t\t\t\"BARANGAY 173\",\n\t\t\t\t\t\t\t\t\"BARANGAY 174\",\n\t\t\t\t\t\t\t\t\"BARANGAY 175\",\n\t\t\t\t\t\t\t\t\"BARANGAY 176\",\n\t\t\t\t\t\t\t\t\"BARANGAY 177\",\n\t\t\t\t\t\t\t\t\"BARANGAY 178\",\n\t\t\t\t\t\t\t\t\"BARANGAY 179\",\n\t\t\t\t\t\t\t\t\"BARANGAY 180\",\n\t\t\t\t\t\t\t\t\"BARANGAY 181\",\n\t\t\t\t\t\t\t\t\"BARANGAY 182\",\n\t\t\t\t\t\t\t\t\"BARANGAY 183\",\n\t\t\t\t\t\t\t\t\"BARANGAY 184\",\n\t\t\t\t\t\t\t\t\"BARANGAY 185\",\n\t\t\t\t\t\t\t\t\"BARANGAY 186\",\n\t\t\t\t\t\t\t\t\"BARANGAY 187\",\n\t\t\t\t\t\t\t\t\"BARANGAY 188\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"MALABON\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ACACIA\",\n\t\t\t\t\t\t\t\t\"BARITAN\",\n\t\t\t\t\t\t\t\t\"BAYAN-BAYANAN\",\n\t\t\t\t\t\t\t\t\"CATMON\",\n\t\t\t\t\t\t\t\t\"CONCEPCION\",\n\t\t\t\t\t\t\t\t\"DAMPALIT\",\n\t\t\t\t\t\t\t\t\"FLORES\",\n\t\t\t\t\t\t\t\t\"HULONG DUHAT\",\n\t\t\t\t\t\t\t\t\"IBABA\",\n\t\t\t\t\t\t\t\t\"LONGOS\",\n\t\t\t\t\t\t\t\t\"MAYSILO\",\n\t\t\t\t\t\t\t\t\"MUZON\",\n\t\t\t\t\t\t\t\t\"NIUGAN\",\n\t\t\t\t\t\t\t\t\"PANGHULO\",\n\t\t\t\t\t\t\t\t\"POTRERO\",\n\t\t\t\t\t\t\t\t\"SAN AGUSTIN\",\n\t\t\t\t\t\t\t\t\"SANTOLAN\",\n\t\t\t\t\t\t\t\t\"TA\u00D1ONG (POB.)\",\n\t\t\t\t\t\t\t\t\"TINAJEROS\",\n\t\t\t\t\t\t\t\t\"TONSUYA\",\n\t\t\t\t\t\t\t\t\"TUGATOG\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"NAVOTAS\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BAGUMBAYAN NORTH\",\n\t\t\t\t\t\t\t\t\"BAGUMBAYAN SOUTH\",\n\t\t\t\t\t\t\t\t\"BANGCULASI\",\n\t\t\t\t\t\t\t\t\"DAANGHARI\",\n\t\t\t\t\t\t\t\t\"NAVOTAS EAST\",\n\t\t\t\t\t\t\t\t\"NAVOTAS WEST\",\n\t\t\t\t\t\t\t\t\"NORTH BAY BOULEVARD NORTH\",\n\t\t\t\t\t\t\t\t\"NBBS KAUNLARAN\",\n\t\t\t\t\t\t\t\t\"NBBS DAGAT-DAGATAN\",\n\t\t\t\t\t\t\t\t\"NBBS PROPER\",\n\t\t\t\t\t\t\t\t\"SAN JOSE (POB.)\",\n\t\t\t\t\t\t\t\t\"SAN RAFAEL VILLAGE\",\n\t\t\t\t\t\t\t\t\"SAN ROQUE\",\n\t\t\t\t\t\t\t\t\"SIPAC-ALMASEN\",\n\t\t\t\t\t\t\t\t\"TANGOS NORTH\",\n\t\t\t\t\t\t\t\t\"TANGOS SOUTH\",\n\t\t\t\t\t\t\t\t\"TANZA 1\",\n\t\t\t\t\t\t\t\t\"TANZA 2\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"VALENZUELA\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ARKONG BATO\",\n\t\t\t\t\t\t\t\t\"BAGBAGUIN\",\n\t\t\t\t\t\t\t\t\"BALANGKAS\",\n\t\t\t\t\t\t\t\t\"BIGNAY\",\n\t\t\t\t\t\t\t\t\"BISIG\",\n\t\t\t\t\t\t\t\t\"CANUMAY EAST\",\n\t\t\t\t\t\t\t\t\"CANUMAY WEST\",\n\t\t\t\t\t\t\t\t\"COLOONG\",\n\t\t\t\t\t\t\t\t\"DALANDANAN\",\n\t\t\t\t\t\t\t\t\"HEN. T. DE LEON\",\n\t\t\t\t\t\t\t\t\"ISLA\",\n\t\t\t\t\t\t\t\t\"KARUHATAN\",\n\t\t\t\t\t\t\t\t\"LAWANG BATO\",\n\t\t\t\t\t\t\t\t\"LINGUNAN\",\n\t\t\t\t\t\t\t\t\"MABOLO\",\n\t\t\t\t\t\t\t\t\"MALANDAY\",\n\t\t\t\t\t\t\t\t\"MALINTA\",\n\t\t\t\t\t\t\t\t\"MAPULANG LUPA\",\n\t\t\t\t\t\t\t\t\"MARULAS\",\n\t\t\t\t\t\t\t\t\"MAYSAN\",\n\t\t\t\t\t\t\t\t\"PALASAN\",\n\t\t\t\t\t\t\t\t\"PARADA\",\n\t\t\t\t\t\t\t\t\"PARIANCILLO VILLA\",\n\t\t\t\t\t\t\t\t\"PASO DE BLAS\",\n\t\t\t\t\t\t\t\t\"PASOLO\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"PULO\",\n\t\t\t\t\t\t\t\t\"PUNTURIN\",\n\t\t\t\t\t\t\t\t\"RINCON\",\n\t\t\t\t\t\t\t\t\"TAGALAG\",\n\t\t\t\t\t\t\t\t\"UGONG\",\n\t\t\t\t\t\t\t\t\"VIENTE REALES\",\n\t\t\t\t\t\t\t\t\"WAWANG PULO\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"NCR, FOURTH DISTRICT\",\n\t\t\t\t\t\"cities\": [{\n\t\t\t\t\t\t\t\"name\": \"LAS PI\u00D1AS\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ALMANZA UNO\",\n\t\t\t\t\t\t\t\t\"ALMANZA DOS\",\n\t\t\t\t\t\t\t\t\"B. F. INTERNATIONAL VILLAGE\",\n\t\t\t\t\t\t\t\t\"DANIEL FAJARDO\",\n\t\t\t\t\t\t\t\t\"ELIAS ALDANA\",\n\t\t\t\t\t\t\t\t\"ILAYA\",\n\t\t\t\t\t\t\t\t\"MANUYO UNO\",\n\t\t\t\t\t\t\t\t\"MANUYO DOS\",\n\t\t\t\t\t\t\t\t\"PAMPLONA UNO\",\n\t\t\t\t\t\t\t\t\"PAMPLONA DOS\",\n\t\t\t\t\t\t\t\t\"PAMPLONA TRES\",\n\t\t\t\t\t\t\t\t\"PILAR\",\n\t\t\t\t\t\t\t\t\"PULANG LUPA UNO\",\n\t\t\t\t\t\t\t\t\"PULANG LUPA DOS\",\n\t\t\t\t\t\t\t\t\"TALON UNO\",\n\t\t\t\t\t\t\t\t\"TALON DOS\",\n\t\t\t\t\t\t\t\t\"TALON TRES\",\n\t\t\t\t\t\t\t\t\"TALON KWATRO\",\n\t\t\t\t\t\t\t\t\"TALON SINGKO\",\n\t\t\t\t\t\t\t\t\"ZAPOTE\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"MAKATI\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BANGKAL\",\n\t\t\t\t\t\t\t\t\"BEL-AIR\",\n\t\t\t\t\t\t\t\t\"CARMONA\",\n\t\t\t\t\t\t\t\t\"CEMBO\",\n\t\t\t\t\t\t\t\t\"COMEMBO\",\n\t\t\t\t\t\t\t\t\"DASMARI\u00D1AS\",\n\t\t\t\t\t\t\t\t\"EEAST REMBO\",\n\t\t\t\t\t\t\t\t\"FORBES PARK\",\n\t\t\t\t\t\t\t\t\"GUADALUPE NUEVO\",\n\t\t\t\t\t\t\t\t\"GUADALUPE VIEJO\",\n\t\t\t\t\t\t\t\t\"KASILAWAN\",\n\t\t\t\t\t\t\t\t\"LA PAZ\",\n\t\t\t\t\t\t\t\t\"MAGALLANES\",\n\t\t\t\t\t\t\t\t\"OLYMPIA\",\n\t\t\t\t\t\t\t\t\"PALANAN\",\n\t\t\t\t\t\t\t\t\"PEMBO\",\n\t\t\t\t\t\t\t\t\"PINAGKAISAHAN\",\n\t\t\t\t\t\t\t\t\"PIO DEL PILAR\",\n\t\t\t\t\t\t\t\t\"PITOGO\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"POST PROPER NORTHSIDE\",\n\t\t\t\t\t\t\t\t\"POST PROPER SOUTHSIDE\",\n\t\t\t\t\t\t\t\t\"RIZAL\",\n\t\t\t\t\t\t\t\t\"SAN ANTONIO\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO\",\n\t\t\t\t\t\t\t\t\"SAN LORENZO\",\n\t\t\t\t\t\t\t\t\"SANTA CRUZ\",\n\t\t\t\t\t\t\t\t\"SINGKAMAS\",\n\t\t\t\t\t\t\t\t\"SOUTH CEMBO\",\n\t\t\t\t\t\t\t\t\"TEJEROS\",\n\t\t\t\t\t\t\t\t\"URDANETA\",\n\t\t\t\t\t\t\t\t\"VALENZUELA\",\n\t\t\t\t\t\t\t\t\"WEST REMBO\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"MUNTINLUPA\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ALABANG\",\n\t\t\t\t\t\t\t\t\"BAYANAN\",\n\t\t\t\t\t\t\t\t\"BULI\",\n\t\t\t\t\t\t\t\t\"CUPANG\",\n\t\t\t\t\t\t\t\t\"NEW ALABANG VILLAGE\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"PUTATAN\",\n\t\t\t\t\t\t\t\t\"SUCAT\",\n\t\t\t\t\t\t\t\t\"TUNASAN\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"PARA\u00D1AQUE\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"B. F. HOMES\",\n\t\t\t\t\t\t\t\t\"BACLARAN\",\n\t\t\t\t\t\t\t\t\"DON BOSCO\",\n\t\t\t\t\t\t\t\t\"DoON GALO\",\n\t\t\t\t\t\t\t\t\"LA HUERTA\",\n\t\t\t\t\t\t\t\t\"MARCELO GREEN VILLAGE\",\n\t\t\t\t\t\t\t\t\"MERVILLE\",\n\t\t\t\t\t\t\t\t\"MOONWALK\",\n\t\t\t\t\t\t\t\t\"SAN ANTONIO\",\n\t\t\t\t\t\t\t\t\"SAN DIONISIO\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO\",\n\t\t\t\t\t\t\t\t\"SAN MARTIN DE PORRES\",\n\t\t\t\t\t\t\t\t\"SANTO NI\u00D1O\",\n\t\t\t\t\t\t\t\t\"SUN VALLEY\",\n\t\t\t\t\t\t\t\t\"TAMBO\",\n\t\t\t\t\t\t\t\t\"VITALEZ\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"PASAY\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BARANGAY 1\",\n\t\t\t\t\t\t\t\t\"BARANGAY 2\",\n\t\t\t\t\t\t\t\t\"BARANGAY 3\",\n\t\t\t\t\t\t\t\t\"BARANGAY 4\",\n\t\t\t\t\t\t\t\t\"BARANGAY 5\",\n\t\t\t\t\t\t\t\t\"BARANGAY 6\",\n\t\t\t\t\t\t\t\t\"BARANGAY 7\",\n\t\t\t\t\t\t\t\t\"BARANGAY 8\",\n\t\t\t\t\t\t\t\t\"BARANGAY 9\",\n\t\t\t\t\t\t\t\t\"BARANGAY 10\",\n\t\t\t\t\t\t\t\t\"BARANGAY 11\",\n\t\t\t\t\t\t\t\t\"BARANGAY 12\",\n\t\t\t\t\t\t\t\t\"BARANGAY 13\",\n\t\t\t\t\t\t\t\t\"BARANGAY 14\",\n\t\t\t\t\t\t\t\t\"BARANGAY 15\",\n\t\t\t\t\t\t\t\t\"BARANGAY 16\",\n\t\t\t\t\t\t\t\t\"BARANGAY 17\",\n\t\t\t\t\t\t\t\t\"BARANGAY 18\",\n\t\t\t\t\t\t\t\t\"BARANGAY 19\",\n\t\t\t\t\t\t\t\t\"BARANGAY 20\",\n\t\t\t\t\t\t\t\t\"BARANGAY 21\",\n\t\t\t\t\t\t\t\t\"BARANGAY 22\",\n\t\t\t\t\t\t\t\t\"BARANGAY 23\",\n\t\t\t\t\t\t\t\t\"BARANGAY 24\",\n\t\t\t\t\t\t\t\t\"BARANGAY 25\",\n\t\t\t\t\t\t\t\t\"BARANGAY 26\",\n\t\t\t\t\t\t\t\t\"BARANGAY 27\",\n\t\t\t\t\t\t\t\t\"BARANGAY 28\",\n\t\t\t\t\t\t\t\t\"BARANGAY 29\",\n\t\t\t\t\t\t\t\t\"BARANGAY 30\",\n\t\t\t\t\t\t\t\t\"BARANGAY 31\",\n\t\t\t\t\t\t\t\t\"BARANGAY 32\",\n\t\t\t\t\t\t\t\t\"BARANGAY 33\",\n\t\t\t\t\t\t\t\t\"BARANGAY 34\",\n\t\t\t\t\t\t\t\t\"BARANGAY 35\",\n\t\t\t\t\t\t\t\t\"BARANGAY 36\",\n\t\t\t\t\t\t\t\t\"BARANGAY 37\",\n\t\t\t\t\t\t\t\t\"BARANGAY 38\",\n\t\t\t\t\t\t\t\t\"BARANGAY 39\",\n\t\t\t\t\t\t\t\t\"BARANGAY 40\",\n\t\t\t\t\t\t\t\t\"BARANGAY 41\",\n\t\t\t\t\t\t\t\t\"BARANGAY 42\",\n\t\t\t\t\t\t\t\t\"BARANGAY 43\",\n\t\t\t\t\t\t\t\t\"BARANGAY 44\",\n\t\t\t\t\t\t\t\t\"BARANGAY 45\",\n\t\t\t\t\t\t\t\t\"BARANGAY 46\",\n\t\t\t\t\t\t\t\t\"BARANGAY 47\",\n\t\t\t\t\t\t\t\t\"BARANGAY 48\",\n\t\t\t\t\t\t\t\t\"BARANGAY 49\",\n\t\t\t\t\t\t\t\t\"BARANGAY 50\",\n\t\t\t\t\t\t\t\t\"BARANGAY 51\",\n\t\t\t\t\t\t\t\t\"BARANGAY 52\",\n\t\t\t\t\t\t\t\t\"BARANGAY 53\",\n\t\t\t\t\t\t\t\t\"BARANGAY 54\",\n\t\t\t\t\t\t\t\t\"BARANGAY 55\",\n\t\t\t\t\t\t\t\t\"BARANGAY 56\",\n\t\t\t\t\t\t\t\t\"BARANGAY 57\",\n\t\t\t\t\t\t\t\t\"BARANGAY 58\",\n\t\t\t\t\t\t\t\t\"BARANGAY 59\",\n\t\t\t\t\t\t\t\t\"BARANGAY 60\",\n\t\t\t\t\t\t\t\t\"BARANGAY 61\",\n\t\t\t\t\t\t\t\t\"BARANGAY 62\",\n\t\t\t\t\t\t\t\t\"BARANGAY 63\",\n\t\t\t\t\t\t\t\t\"BARANGAY 64\",\n\t\t\t\t\t\t\t\t\"BARANGAY 65\",\n\t\t\t\t\t\t\t\t\"BARANGAY 66\",\n\t\t\t\t\t\t\t\t\"BARANGAY 67\",\n\t\t\t\t\t\t\t\t\"BARANGAY 68\",\n\t\t\t\t\t\t\t\t\"BARANGAY 69\",\n\t\t\t\t\t\t\t\t\"BARANGAY 70\",\n\t\t\t\t\t\t\t\t\"BARANGAY 71\",\n\t\t\t\t\t\t\t\t\"BARANGAY 72\",\n\t\t\t\t\t\t\t\t\"BARANGAY 73\",\n\t\t\t\t\t\t\t\t\"BARANGAY 74\",\n\t\t\t\t\t\t\t\t\"BARANGAY 75\",\n\t\t\t\t\t\t\t\t\"BARANGAY 76\",\n\t\t\t\t\t\t\t\t\"BARANGAY 77\",\n\t\t\t\t\t\t\t\t\"BARANGAY 78\",\n\t\t\t\t\t\t\t\t\"BARANGAY 79\",\n\t\t\t\t\t\t\t\t\"BARANGAY 80\",\n\t\t\t\t\t\t\t\t\"BARANGAY 81\",\n\t\t\t\t\t\t\t\t\"BARANGAY 82\",\n\t\t\t\t\t\t\t\t\"BARANGAY 83\",\n\t\t\t\t\t\t\t\t\"BARANGAY 84\",\n\t\t\t\t\t\t\t\t\"BARANGAY 85\",\n\t\t\t\t\t\t\t\t\"BARANGAY 86\",\n\t\t\t\t\t\t\t\t\"BARANGAY 87\",\n\t\t\t\t\t\t\t\t\"BARANGAY 88\",\n\t\t\t\t\t\t\t\t\"BARANGAY 89\",\n\t\t\t\t\t\t\t\t\"BARANGAY 90\",\n\t\t\t\t\t\t\t\t\"BARANGAY 91\",\n\t\t\t\t\t\t\t\t\"BARANGAY 92\",\n\t\t\t\t\t\t\t\t\"BARANGAY 93\",\n\t\t\t\t\t\t\t\t\"BARANGAY 94\",\n\t\t\t\t\t\t\t\t\"BARANGAY 95\",\n\t\t\t\t\t\t\t\t\"BARANGAY 96\",\n\t\t\t\t\t\t\t\t\"BARANGAY 97\",\n\t\t\t\t\t\t\t\t\"BARANGAY 98\",\n\t\t\t\t\t\t\t\t\"BARANGAY 99\",\n\t\t\t\t\t\t\t\t\"BARANGAY 100\",\n\t\t\t\t\t\t\t\t\"BARANGAY 101\",\n\t\t\t\t\t\t\t\t\"BARANGAY 102\",\n\t\t\t\t\t\t\t\t\"BARANGAY 103\",\n\t\t\t\t\t\t\t\t\"BARANGAY 104\",\n\t\t\t\t\t\t\t\t\"BARANGAY 105\",\n\t\t\t\t\t\t\t\t\"BARANGAY 106\",\n\t\t\t\t\t\t\t\t\"BARANGAY 107\",\n\t\t\t\t\t\t\t\t\"BARANGAY 108\",\n\t\t\t\t\t\t\t\t\"BARANGAY 109\",\n\t\t\t\t\t\t\t\t\"BARANGAY 110\",\n\t\t\t\t\t\t\t\t\"BARANGAY 111\",\n\t\t\t\t\t\t\t\t\"BARANGAY 112\",\n\t\t\t\t\t\t\t\t\"BARANGAY 113\",\n\t\t\t\t\t\t\t\t\"BARANGAY 114\",\n\t\t\t\t\t\t\t\t\"BARANGAY 115\",\n\t\t\t\t\t\t\t\t\"BARANGAY 116\",\n\t\t\t\t\t\t\t\t\"BARANGAY 117\",\n\t\t\t\t\t\t\t\t\"BARANGAY 118\",\n\t\t\t\t\t\t\t\t\"BARANGAY 119\",\n\t\t\t\t\t\t\t\t\"BARANGAY 120\",\n\t\t\t\t\t\t\t\t\"BARANGAY 121\",\n\t\t\t\t\t\t\t\t\"BARANGAY 122\",\n\t\t\t\t\t\t\t\t\"BARANGAY 123\",\n\t\t\t\t\t\t\t\t\"BARANGAY 124\",\n\t\t\t\t\t\t\t\t\"BARANGAY 125\",\n\t\t\t\t\t\t\t\t\"BARANGAY 126\",\n\t\t\t\t\t\t\t\t\"BARANGAY 127\",\n\t\t\t\t\t\t\t\t\"BARANGAY 128\",\n\t\t\t\t\t\t\t\t\"BARANGAY 129\",\n\t\t\t\t\t\t\t\t\"BARANGAY 130\",\n\t\t\t\t\t\t\t\t\"BARANGAY 131\",\n\t\t\t\t\t\t\t\t\"BARANGAY 132\",\n\t\t\t\t\t\t\t\t\"BARANGAY 133\",\n\t\t\t\t\t\t\t\t\"BARANGAY 134\",\n\t\t\t\t\t\t\t\t\"BARANGAY 135\",\n\t\t\t\t\t\t\t\t\"BARANGAY 136\",\n\t\t\t\t\t\t\t\t\"BARANGAY 137\",\n\t\t\t\t\t\t\t\t\"BARANGAY 138\",\n\t\t\t\t\t\t\t\t\"BARANGAY 139\",\n\t\t\t\t\t\t\t\t\"BARANGAY 140\",\n\t\t\t\t\t\t\t\t\"BARANGAY 141\",\n\t\t\t\t\t\t\t\t\"BARANGAY 142\",\n\t\t\t\t\t\t\t\t\"BARANGAY 143\",\n\t\t\t\t\t\t\t\t\"BARANGAY 144\",\n\t\t\t\t\t\t\t\t\"BARANGAY 145\",\n\t\t\t\t\t\t\t\t\"BARANGAY 146\",\n\t\t\t\t\t\t\t\t\"BARANGAY 147\",\n\t\t\t\t\t\t\t\t\"BARANGAY 148\",\n\t\t\t\t\t\t\t\t\"BARANGAY 149\",\n\t\t\t\t\t\t\t\t\"BARANGAY 150\",\n\t\t\t\t\t\t\t\t\"BARANGAY 151\",\n\t\t\t\t\t\t\t\t\"BARANGAY 152\",\n\t\t\t\t\t\t\t\t\"BARANGAY 153\",\n\t\t\t\t\t\t\t\t\"BARANGAY 154\",\n\t\t\t\t\t\t\t\t\"BARANGAY 155\",\n\t\t\t\t\t\t\t\t\"BARANGAY 156\",\n\t\t\t\t\t\t\t\t\"BARANGAY 157\",\n\t\t\t\t\t\t\t\t\"BARANGAY 158\",\n\t\t\t\t\t\t\t\t\"BARANGAY 159\",\n\t\t\t\t\t\t\t\t\"BARANGAY 160\",\n\t\t\t\t\t\t\t\t\"BARANGAY 161\",\n\t\t\t\t\t\t\t\t\"BARANGAY 162\",\n\t\t\t\t\t\t\t\t\"BARANGAY 163\",\n\t\t\t\t\t\t\t\t\"BARANGAY 164\",\n\t\t\t\t\t\t\t\t\"BARANGAY 165\",\n\t\t\t\t\t\t\t\t\"BARANGAY 166\",\n\t\t\t\t\t\t\t\t\"BARANGAY 167\",\n\t\t\t\t\t\t\t\t\"BARANGAY 168\",\n\t\t\t\t\t\t\t\t\"BARANGAY 169\",\n\t\t\t\t\t\t\t\t\"BARANGAY 170\",\n\t\t\t\t\t\t\t\t\"BARANGAY 171\",\n\t\t\t\t\t\t\t\t\"BARANGAY 172\",\n\t\t\t\t\t\t\t\t\"BARANGAY 173\",\n\t\t\t\t\t\t\t\t\"BARANGAY 174\",\n\t\t\t\t\t\t\t\t\"BARANGAY 175\",\n\t\t\t\t\t\t\t\t\"BARANGAY 176\",\n\t\t\t\t\t\t\t\t\"BARANGAY 177\",\n\t\t\t\t\t\t\t\t\"BARANGAY 178\",\n\t\t\t\t\t\t\t\t\"BARANGAY 179\",\n\t\t\t\t\t\t\t\t\"BARANGAY 180\",\n\t\t\t\t\t\t\t\t\"BARANGAY 181\",\n\t\t\t\t\t\t\t\t\"BARANGAY 182\",\n\t\t\t\t\t\t\t\t\"BARANGAY 183\",\n\t\t\t\t\t\t\t\t\"BARANGAY 184\",\n\t\t\t\t\t\t\t\t\"BARANGAY 185\",\n\t\t\t\t\t\t\t\t\"BARANGAY 186\",\n\t\t\t\t\t\t\t\t\"BARANGAY 187\",\n\t\t\t\t\t\t\t\t\"BARANGAY 188\",\n\t\t\t\t\t\t\t\t\"BARANGAY 189\",\n\t\t\t\t\t\t\t\t\"BARANGAY 190\",\n\t\t\t\t\t\t\t\t\"BARANGAY 191\",\n\t\t\t\t\t\t\t\t\"BARANGAY 192\",\n\t\t\t\t\t\t\t\t\"BARANGAY 193\",\n\t\t\t\t\t\t\t\t\"BARANGAY 194\",\n\t\t\t\t\t\t\t\t\"BARANGAY 195\",\n\t\t\t\t\t\t\t\t\"BARANGAY 196\",\n\t\t\t\t\t\t\t\t\"BARANGAY 197\",\n\t\t\t\t\t\t\t\t\"BARANGAY 198\",\n\t\t\t\t\t\t\t\t\"BARANGAY 199\",\n\t\t\t\t\t\t\t\t\"BARANGAY 200\",\n\t\t\t\t\t\t\t\t\"BARANGAY 201\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"TAGUIG\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BAGUMBAYAN\",\n\t\t\t\t\t\t\t\t\"BAMBANG\",\n\t\t\t\t\t\t\t\t\"CALZADA\",\n\t\t\t\t\t\t\t\t\"CENTRAL BICUTAN\",\n\t\t\t\t\t\t\t\t\"CENTRAL SIGNAL VILLAGE\",\n\t\t\t\t\t\t\t\t\"FORT BONIFACIO\",\n\t\t\t\t\t\t\t\t\"HAGONOY\",\n\t\t\t\t\t\t\t\t\"IBAYO-TIPAS\",\n\t\t\t\t\t\t\t\t\"KATUPARAN\",\n\t\t\t\t\t\t\t\t\"LIGID-TIPAS\",\n\t\t\t\t\t\t\t\t\"LOWER BICUTAN\",\n\t\t\t\t\t\t\t\t\"MAHARLIKA VILLAGE\",\n\t\t\t\t\t\t\t\t\"NAPINDAN\",\n\t\t\t\t\t\t\t\t\"NEW LOWER BICUTAN\",\n\t\t\t\t\t\t\t\t\"NORTH DAANG HARI\",\n\t\t\t\t\t\t\t\t\"NORTH SIGNAL VILLAGE\",\n\t\t\t\t\t\t\t\t\"PALINGON\",\n\t\t\t\t\t\t\t\t\"PINAGSAMA\",\n\t\t\t\t\t\t\t\t\"SAN MIGUEL\",\n\t\t\t\t\t\t\t\t\"SANTA ANA\",\n\t\t\t\t\t\t\t\t\"SOUTH DAANG HARI\",\n\t\t\t\t\t\t\t\t\"SOUTH SIGNAL VILLAGE\",\n\t\t\t\t\t\t\t\t\"TANYAG\",\n\t\t\t\t\t\t\t\t\"TUKTUKAN\",\n\t\t\t\t\t\t\t\t\"UPPER BICUTAN\",\n\t\t\t\t\t\t\t\t\"USUSAN\",\n\t\t\t\t\t\t\t\t\"WAWA\",\n\t\t\t\t\t\t\t\t\"WESTERN BICUTAN\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"PATEROS\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"AGUHO\",\n\t\t\t\t\t\t\t\t\"MAGTANGGOL\",\n\t\t\t\t\t\t\t\t\"MARTIRES DEL 96\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"SAN PEDRO\",\n\t\t\t\t\t\t\t\t\"SAN ROQUE\",\n\t\t\t\t\t\t\t\t\"SANTA ANA\",\n\t\t\t\t\t\t\t\t\"SANTO ROSARIO-KANLURAN\",\n\t\t\t\t\t\t\t\t\"SANTO ROSARIO-SILANGAN\",\n\t\t\t\t\t\t\t\t\"TABACALERA\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"REGION I\",\n\t\t\t\"provinces\": [{\n\t\t\t\t\t\"name\": \"ILOCOS NORTE\",\n\t\t\t\t\t\"cities\": [{\n\t\t\t\t\t\t\t\"name\": \"ADAMS\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ADAMS PROPER (POBLACION)\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"BACARRA\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BANI\",\n\t\t\t\t\t\t\t\t\"BUYON\",\n\t\t\t\t\t\t\t\t\"CABARUAN\",\n\t\t\t\t\t\t\t\t\"CABULALAAN\",\n\t\t\t\t\t\t\t\t\"CABUSLIGAN\",\n\t\t\t\t\t\t\t\t\"CADARATAN\",\n\t\t\t\t\t\t\t\t\"CALIOET-LIBONG\",\n\t\t\t\t\t\t\t\t\"CASILIAN\",\n\t\t\t\t\t\t\t\t\"COROCOR\",\n\t\t\t\t\t\t\t\t\"DURIPES\",\n\t\t\t\t\t\t\t\t\"GANAGAN\",\n\t\t\t\t\t\t\t\t\"LIBTONG\",\n\t\t\t\t\t\t\t\t\"MACUPIT\",\n\t\t\t\t\t\t\t\t\"NAMBARAN\",\n\t\t\t\t\t\t\t\t\"NATBA\",\n\t\t\t\t\t\t\t\t\"PANINAAN\",\n\t\t\t\t\t\t\t\t\"PASIOCAN\",\n\t\t\t\t\t\t\t\t\"PASNGAL\",\n\t\t\t\t\t\t\t\t\"PIPIAS\",\n\t\t\t\t\t\t\t\t\"PULANGI\",\n\t\t\t\t\t\t\t\t\"PUNGTO\",\n\t\t\t\t\t\t\t\t\"SAN AGUSTIN I (POBLACION)\",\n\t\t\t\t\t\t\t\t\"SAN AGUSTIN II (POBLACION)\",\n\t\t\t\t\t\t\t\t\"SAN ANDRES I (POBLACION)\",\n\t\t\t\t\t\t\t\t\"SAN ANDRES II (POBLACION)\",\n\t\t\t\t\t\t\t\t\"SAN GABRIEL I (POBLACION)\",\n\t\t\t\t\t\t\t\t\"SAN GABRIEL II (POBLACION)\",\n\t\t\t\t\t\t\t\t\"SAN PEDRO I (POBLACION)\",\n\t\t\t\t\t\t\t\t\"SAN PEDRO II (POBLACION)\",\n\t\t\t\t\t\t\t\t\"SAN ROQUE I (POBLACION)\",\n\t\t\t\t\t\t\t\t\"SAN ROQUE II (POBLACION)\",\n\t\t\t\t\t\t\t\t\"SAN SIMON I (POBLACION)\",\n\t\t\t\t\t\t\t\t\"SAN SIMON II (POBLACION)\",\n\t\t\t\t\t\t\t\t\"SAN VICENTE (POBLACION)\",\n\t\t\t\t\t\t\t\t\"SANGIL\",\n\t\t\t\t\t\t\t\t\"SANTA FILOMENA I (POBLACION)\",\n\t\t\t\t\t\t\t\t\"SANTA FILOMENA II (POBLACION)\",\n\t\t\t\t\t\t\t\t\"SANTA RITA (POBLACION)\",\n\t\t\t\t\t\t\t\t\"SANTO CRISTO I (POBLACION)\",\n\t\t\t\t\t\t\t\t\"SANTO CRISTO II (POBLACION)\",\n\t\t\t\t\t\t\t\t\"TAMBIDAO\",\n\t\t\t\t\t\t\t\t\"TEPPANG\",\n\t\t\t\t\t\t\t\t\"TUBBURAN\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"BADOC\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ALAY-NANGBABAAN (ALAY 15-B)\",\n\t\t\t\t\t\t\t\t\"ALOGOOG\",\n\t\t\t\t\t\t\t\t\"AR-ARUSIP\",\n\t\t\t\t\t\t\t\t\"ARING\",\n\t\t\t\t\t\t\t\t\"BALBALDEZ\",\n\t\t\t\t\t\t\t\t\"BATO\",\n\t\t\t\t\t\t\t\t\"CAMANGA\",\n\t\t\t\t\t\t\t\t\"CANAAN (POBLACION)\",\n\t\t\t\t\t\t\t\t\"CARAITAN\",\n\t\t\t\t\t\t\t\t\"GABUT NORTE\",\n\t\t\t\t\t\t\t\t\"GABUT SUR\",\n\t\t\t\t\t\t\t\t\"GARRETA (POBLACION)\",\n\t\t\t\t\t\t\t\t\"LA VIRGEN MILAGROSA (PAGUETPET)\",\n\t\t\t\t\t\t\t\t\"LABUT\",\n\t\t\t\t\t\t\t\t\"LACUBEN\",\n\t\t\t\t\t\t\t\t\"LUBIGAN\",\n\t\t\t\t\t\t\t\t\"MABUSAG NORTE\",\n\t\t\t\t\t\t\t\t\"MABUSAG SUR\",\n\t\t\t\t\t\t\t\t\"MADUPAYAS\",\n\t\t\t\t\t\t\t\t\"MORONG\",\n\t\t\t\t\t\t\t\t\"NAGREBCAN\",\n\t\t\t\t\t\t\t\t\"NAPU\",\n\t\t\t\t\t\t\t\t\"PAGSANAHAN NORTE\",\n\t\t\t\t\t\t\t\t\"PAGSANAHAN SUR\",\n\t\t\t\t\t\t\t\t\"PALTIT\",\n\t\t\t\t\t\t\t\t\"PARANG\",\n\t\t\t\t\t\t\t\t\"PASUC\",\n\t\t\t\t\t\t\t\t\"SANTA CRUZ NORTE\",\n\t\t\t\t\t\t\t\t\"SANTA CRUZ SUR\",\n\t\t\t\t\t\t\t\t\"SAUD\",\n\t\t\t\t\t\t\t\t\"TUROD\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"BANGUI\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ABACA\",\n\t\t\t\t\t\t\t\t\"BACSIL\",\n\t\t\t\t\t\t\t\t\"BANBAN\",\n\t\t\t\t\t\t\t\t\"BARUYEN\",\n\t\t\t\t\t\t\t\t\"DADAOR\",\n\t\t\t\t\t\t\t\t\"LANAO\",\n\t\t\t\t\t\t\t\t\"MALASIN\",\n\t\t\t\t\t\t\t\t\"MANAYON\",\n\t\t\t\t\t\t\t\t\"MASIKIL\",\n\t\t\t\t\t\t\t\t\"NAGBALAGAN\",\n\t\t\t\t\t\t\t\t\"PAYAC\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO\",\n\t\t\t\t\t\t\t\t\"SAN LORENZO (POBLACION)\",\n\t\t\t\t\t\t\t\t\"TAGUIPORO\",\n\t\t\t\t\t\t\t\t\"UTOL\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"BANNA (ESPIRITU)\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BALIOEG\",\n\t\t\t\t\t\t\t\t\"BANGSAR\",\n\t\t\t\t\t\t\t\t\"BARBARANGAY\",\n\t\t\t\t\t\t\t\t\"BINACAG\",\n\t\t\t\t\t\t\t\t\"BOMITOG\",\n\t\t\t\t\t\t\t\t\"BUGASI\",\n\t\t\t\t\t\t\t\t\"CAESTEBANAN\",\n\t\t\t\t\t\t\t\t\"CARIBQUIB\",\n\t\t\t\t\t\t\t\t\"CATAGTAGUEN\",\n\t\t\t\t\t\t\t\t\"CRISPINA\",\n\t\t\t\t\t\t\t\t\"HILARIO (POBLACION)\",\n\t\t\t\t\t\t\t\t\"IMELDA\",\n\t\t\t\t\t\t\t\t\"LORENZO (POBLACION)\",\n\t\t\t\t\t\t\t\t\"MACAYEPYEP\",\n\t\t\t\t\t\t\t\t\"MARCOS (POBLACION)\",\n\t\t\t\t\t\t\t\t\"NAGPATAYAN\",\n\t\t\t\t\t\t\t\t\"SINAMAR\",\n\t\t\t\t\t\t\t\t\"TABTABAGAN\",\n\t\t\t\t\t\t\t\t\"VALDEZ\",\n\t\t\t\t\t\t\t\t\"VALENCIANO (POBLACION)\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"BATAC\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ABLAN POBLACION (LABUCAO)\",\n\t\t\t\t\t\t\t\t\"ACOSTA POBLACION (ILOILO)\",\n\t\t\t\t\t\t\t\t\"AGLIPAY (POBLACION)\",\n\t\t\t\t\t\t\t\t\"BAAY\",\n\t\t\t\t\t\t\t\t\"BALIGAT\",\n\t\t\t\t\t\t\t\t\"BAOA EAST\",\n\t\t\t\t\t\t\t\t\"BAOA WEST\",\n\t\t\t\t\t\t\t\t\"BARANI (POBLACION)\",\n\t\t\t\t\t\t\t\t\"BEN-AGAN (POBLACION)\",\n\t\t\t\t\t\t\t\t\"BIL-LOCA\",\n\t\t\t\t\t\t\t\t\"BININGAN\",\n\t\t\t\t\t\t\t\t\"BUNGON\",\n\t\t\t\t\t\t\t\t\"CALLAGUIP (POBLACION)\",\n\t\t\t\t\t\t\t\t\"CAMANDINGAN\",\n\t\t\t\t\t\t\t\t\"CAMGUIDAN\",\n\t\t\t\t\t\t\t\t\"CANGRUNAAN (POBLACION)\",\n\t\t\t\t\t\t\t\t\"CAPACUAN\",\n\t\t\t\t\t\t\t\t\"CAUNAYAN (POBLACION)\",\n\t\t\t\t\t\t\t\t\"COLO\",\n\t\t\t\t\t\t\t\t\"DARIWDIW\",\n\t\t\t\t\t\t\t\t\"LACUB (POBLACION)\",\n\t\t\t\t\t\t\t\t\"MABALENG\",\n\t\t\t\t\t\t\t\t\"MAGNUANG\",\n\t\t\t\t\t\t\t\t\"MAIPALIG\",\n\t\t\t\t\t\t\t\t\"NAGBACALAN\",\n\t\t\t\t\t\t\t\t\"NAGUIRANGAN\",\n\t\t\t\t\t\t\t\t\"PALONGPONG\",\n\t\t\t\t\t\t\t\t\"PALPALICONG (POBLACION)\",\n\t\t\t\t\t\t\t\t\"PARANGOPONG\",\n\t\t\t\t\t\t\t\t\"PAYAO\",\n\t\t\t\t\t\t\t\t\"PIMENTEL (CUBOL)\",\n\t\t\t\t\t\t\t\t\"QUILING NORTE\",\n\t\t\t\t\t\t\t\t\"QUILING SUR\",\n\t\t\t\t\t\t\t\t\"QUIOM\",\n\t\t\t\t\t\t\t\t\"RAYURAY\",\n\t\t\t\t\t\t\t\t\"RICARTE POBLACION (NALASIN)\",\n\t\t\t\t\t\t\t\t\"SAN JULIAN (POBLACION)\",\n\t\t\t\t\t\t\t\t\"SAN MATEO\",\n\t\t\t\t\t\t\t\t\"SAN PEDRO\",\n\t\t\t\t\t\t\t\t\"SUABIT (POBLACION)\",\n\t\t\t\t\t\t\t\t\"SUMADER\",\n\t\t\t\t\t\t\t\t\"TABUG\",\n\t\t\t\t\t\t\t\t\"VALDEZ POBLACION (CAOAYAN)\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"BURGOS\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ABLAN SARAT\",\n\t\t\t\t\t\t\t\t\"AGAGA\",\n\t\t\t\t\t\t\t\t\"BAYOG\",\n\t\t\t\t\t\t\t\t\"BOBON\",\n\t\t\t\t\t\t\t\t\"BUDUAN (MALITUEK)\",\n\t\t\t\t\t\t\t\t\"NAGSUROT\",\n\t\t\t\t\t\t\t\t\"PAAYAS\",\n\t\t\t\t\t\t\t\t\"PAGALI\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"SAOIT\",\n\t\t\t\t\t\t\t\t\"TANAP\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"CARASI\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ANGSET\",\n\t\t\t\t\t\t\t\t\"BARBAQUESO (POBLACION)\",\n\t\t\t\t\t\t\t\t\"VIRBIRA\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"CURRIMAO\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ANGGAPANG NORTE\",\n\t\t\t\t\t\t\t\t\"ANGGAPANG SUR\",\n\t\t\t\t\t\t\t\t\"BIMMANGA\",\n\t\t\t\t\t\t\t\t\"CABUUSAN\",\n\t\t\t\t\t\t\t\t\"COMCOMLOONG\",\n\t\t\t\t\t\t\t\t\"GAANG\",\n\t\t\t\t\t\t\t\t\"LANG-AYAN-BARAMBAN\",\n\t\t\t\t\t\t\t\t\"LIOES\",\n\t\t\t\t\t\t\t\t\"MAGLAOI CENTRO\",\n\t\t\t\t\t\t\t\t\"MAGLAOI NORTE\",\n\t\t\t\t\t\t\t\t\"MAGLAOI SUR\",\n\t\t\t\t\t\t\t\t\"PAGULUDAN-SALINDEG\",\n\t\t\t\t\t\t\t\t\"PANGIL\",\n\t\t\t\t\t\t\t\t\"PIAS NORTE\",\n\t\t\t\t\t\t\t\t\"PIAS SUR\",\n\t\t\t\t\t\t\t\t\"POBLACION I\",\n\t\t\t\t\t\t\t\t\"POBLACION II\",\n\t\t\t\t\t\t\t\t\"SALUGAN\",\n\t\t\t\t\t\t\t\t\"SAN SIMEON\",\n\t\t\t\t\t\t\t\t\"SANTA CRUZ\",\n\t\t\t\t\t\t\t\t\"TAPAO-TIGUE\",\n\t\t\t\t\t\t\t\t\"TORRE\",\n\t\t\t\t\t\t\t\t\"VICTORIA\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"DINGRAS\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ALBANO (POBLACION)\",\n\t\t\t\t\t\t\t\t\"BACSIL\",\n\t\t\t\t\t\t\t\t\"BAGUT\",\n\t\t\t\t\t\t\t\t\"BARESBES\",\n\t\t\t\t\t\t\t\t\"BARONG\",\n\t\t\t\t\t\t\t\t\"BUNGCAG\",\n\t\t\t\t\t\t\t\t\"CALI\",\n\t\t\t\t\t\t\t\t\"CAPASAN\",\n\t\t\t\t\t\t\t\t\"DANCEL (POBLACION)\",\n\t\t\t\t\t\t\t\t\"ELIZABETH\",\n\t\t\t\t\t\t\t\t\"ESPIRITU\",\n\t\t\t\t\t\t\t\t\"FOZ\",\n\t\t\t\t\t\t\t\t\"GUERRERO (POBLACION)\",\n\t\t\t\t\t\t\t\t\"LANAS\",\n\t\t\t\t\t\t\t\t\"LUMBAD\",\n\t\t\t\t\t\t\t\t\"MADAMBA (POBLACION)\",\n\t\t\t\t\t\t\t\t\"MANDALOQUE\",\n\t\t\t\t\t\t\t\t\"MEDINA\",\n\t\t\t\t\t\t\t\t\"PARADO (BANGAY)\",\n\t\t\t\t\t\t\t\t\"PERALTA (POBLACION)\",\n\t\t\t\t\t\t\t\t\"PURUGANAN (POBLACION)\",\n\t\t\t\t\t\t\t\t\"ROOT (BALDIAS)\",\n\t\t\t\t\t\t\t\t\"SAGPATAN\",\n\t\t\t\t\t\t\t\t\"SALUDARES\",\n\t\t\t\t\t\t\t\t\"SAN ESTEBAN\",\n\t\t\t\t\t\t\t\t\"SAN FRANCISCO (SURRATE)\",\n\t\t\t\t\t\t\t\t\"SAN MARCELINO (PADONG)\",\n\t\t\t\t\t\t\t\t\"SAN MARCOS\",\n\t\t\t\t\t\t\t\t\"SULQUIANO (SIDIRAN)\",\n\t\t\t\t\t\t\t\t\"SUYO\",\n\t\t\t\t\t\t\t\t\"VER (NAGLAYAAN)\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"DUMALNEG\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"DUMALNEG\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"LAOAG\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BARANGAY NO. 1, SAN LORENZO (POBLACION)\",\n\t\t\t\t\t\t\t\t\"BARANGAY NO. 10, SAN JOSE (POBLACION)\",\n\t\t\t\t\t\t\t\t\"BARANGAY NO. 11, SANTA BALBINA (POBLACION)\",\n\t\t\t\t\t\t\t\t\"BARANGAY NO. 12, SAN ISIDRO (POBLACION)\",\n\t\t\t\t\t\t\t\t\"BARANGAY NO. 13, NUESTRA SE\u00D1ORA DE VISITACION (POBLACION)\",\n\t\t\t\t\t\t\t\t\"BARANGAY NO. 14, SANTO TOMAS (POBLACION)\",\n\t\t\t\t\t\t\t\t\"BARANGAY NO. 15, SAN GUILLERMO (POBLACION)\",\n\t\t\t\t\t\t\t\t\"BARANGAY NO. 16, SAN JACINTO (POBLACION)\",\n\t\t\t\t\t\t\t\t\"BARANGAY NO. 17, SAN FRANCISCO (POBLACION)\",\n\t\t\t\t\t\t\t\t\"BARANGAY NO. 18, SAN QUIRINO (POBLACION)\",\n\t\t\t\t\t\t\t\t\"BARANGAY NO. 19, SANTA MARCELA (POBLACION)\",\n\t\t\t\t\t\t\t\t\"BARANGAY NO. 2, SANTA JOAQUINA (POBLACION)\",\n\t\t\t\t\t\t\t\t\"BARANGAY NO. 20, SAN MIGUEL (POBLACION)\",\n\t\t\t\t\t\t\t\t\"BARANGAY NO. 21, SAN PEDRO (POBLACION)\",\n\t\t\t\t\t\t\t\t\"BARANGAY NO. 22, SAN ANDRES (POBLACION)\",\n\t\t\t\t\t\t\t\t\"BARANGAY NO. 23, SAN MATIAS (POBLACION)\",\n\t\t\t\t\t\t\t\t\"BARANGAY NO. 24, NUESTRA SE\u00D1ORA DE CONSOLACION (POBLACION)\",\n\t\t\t\t\t\t\t\t\"BARANGAY NO. 25, SANTA CAYETANA (POBLACION)\",\n\t\t\t\t\t\t\t\t\"BARANGAY NO. 26, SAN MARCELINO (POBLACION)\",\n\t\t\t\t\t\t\t\t\"BARANGAY NO. 27, NUESTRA SE\u00D1ORA DE SOLEDAD (POBLACION)\",\n\t\t\t\t\t\t\t\t\"BARANGAY NO. 28, SAN BERNARDO (POBLACION)\",\n\t\t\t\t\t\t\t\t\"BARANGAY NO. 29, SANTO TOMAS (POBLACION)\",\n\t\t\t\t\t\t\t\t\"BARANGAY NO. 3, NUESTRA SE\u00D1ORA DEL ROSARIO (POBLACION)\",\n\t\t\t\t\t\t\t\t\"BARANGAY NO. 30-A, SUYO\",\n\t\t\t\t\t\t\t\t\"BARANGAY NO. 30-B, SANTA MARIA\",\n\t\t\t\t\t\t\t\t\"BARANGAY NO. 31, TALINGAAN\",\n\t\t\t\t\t\t\t\t\"BARANGAY NO. 32-A, LA PAZ EAST\",\n\t\t\t\t\t\t\t\t\"BARANGAY NO. 32-B, LA PAZ WEST\",\n\t\t\t\t\t\t\t\t\"BARANGAY NO. 32-C, LA PAZ EAST\",\n\t\t\t\t\t\t\t\t\"BARANGAY NO. 33-A, LA PAZ PROPER\",\n\t\t\t\t\t\t\t\t\"BARANGAY NO. 33-B, LA PAZ PROPER\",\n\t\t\t\t\t\t\t\t\"BARANGAY NO. 34-A, GABU NORTE WEST\",\n\t\t\t\t\t\t\t\t\"BARANGAY NO. 34-B, GABU NORTE EAST\",\n\t\t\t\t\t\t\t\t\"BARANGAY NO. 35, GABU SUR\",\n\t\t\t\t\t\t\t\t\"BARANGAY NO. 36, ARANIW\",\n\t\t\t\t\t\t\t\t\"BARANGAY NO. 37, CALAYAB\",\n\t\t\t\t\t\t\t\t\"BARANGAY NO. 38-A, MANGATO EAST\",\n\t\t\t\t\t\t\t\t\"BARANGAY NO. 38-B, MANGATO WEST\",\n\t\t\t\t\t\t\t\t\"BARANGAY NO. 39, SANTA ROSA\",\n\t\t\t\t\t\t\t\t\"BARANGAY NO. 4, SAN GUILLERMO (POBLACION)\",\n\t\t\t\t\t\t\t\t\"BARANGAY NO. 40, BALATONG\",\n\t\t\t\t\t\t\t\t\"BARANGAY NO. 41, BALACAD\",\n\t\t\t\t\t\t\t\t\"BARANGAY NO. 42, APAYA\",\n\t\t\t\t\t\t\t\t\"BARANGAY NO. 43, CAVIT\",\n\t\t\t\t\t\t\t\t\"BARANGAY NO. 44, ZAMBOANGA\",\n\t\t\t\t\t\t\t\t\"BARANGAY NO. 45, TANGID\",\n\t\t\t\t\t\t\t\t\"BARANGAY NO. 46, NALBO\",\n\t\t\t\t\t\t\t\t\"BARANGAY NO. 47, BENGCAG\",\n\t\t\t\t\t\t\t\t\"BARANGAY NO. 48-A, CABUNGAAN NORTH\",\n\t\t\t\t\t\t\t\t\"BARANGAY NO. 48-B, CABUNGAAN SOUTH\",\n\t\t\t\t\t\t\t\t\"BARANGAY NO. 49-A, DARAYDAY\",\n\t\t\t\t\t\t\t\t\"BARANGAY NO. 49-B, RARABURAN\",\n\t\t\t\t\t\t\t\t\"BARANGAY NO. 5, SAN PEDRO (POBLACION)\",\n\t\t\t\t\t\t\t\t\"BARANGAY NO. 50, BUTTONG\",\n\t\t\t\t\t\t\t\t\"BARANGAY NO. 51-A, NANGALISAN EAST\",\n\t\t\t\t\t\t\t\t\"BARANGAY NO. 51-B, NANGALISAN WEST\",\n\t\t\t\t\t\t\t\t\"BARANGAY NO. 52-A, SAN MATEO\",\n\t\t\t\t\t\t\t\t\"BARANGAY NO. 52-B, LATAAG\",\n\t\t\t\t\t\t\t\t\"BARANGAY NO. 53, RIOENG\",\n\t\t\t\t\t\t\t\t\"BARANGAY NO. 54-A, CAMANGAAN\",\n\t\t\t\t\t\t\t\t\"BARANGAY NO. 54-B, LAGUI-SAIL\",\n\t\t\t\t\t\t\t\t\"BARANGAY NO. 55-A, BARIT-PANDAN\",\n\t\t\t\t\t\t\t\t\"BARANGAY NO. 55-B, SALET-BULANGON\",\n\t\t\t\t\t\t\t\t\"BARANGAY NO. 55-C, VIRA\",\n\t\t\t\t\t\t\t\t\"BARANGAY NO. 56-A, BACSIL NORTH\",\n\t\t\t\t\t\t\t\t\"BARANGAY NO. 56-B, BACSIL SOUTH\",\n\t\t\t\t\t\t\t\t\"BARANGAY NO. 57, PILA\",\n\t\t\t\t\t\t\t\t\"BARANGAY NO. 58, CASILI\",\n\t\t\t\t\t\t\t\t\"BARANGAY NO. 59-A, DIBUA SOUTH\",\n\t\t\t\t\t\t\t\t\"BARANGAY NO. 59-B, DIBUA NORTH\",\n\t\t\t\t\t\t\t\t\"BARANGAY NO. 6, SAN AGUSTIN (POBLACION)\",\n\t\t\t\t\t\t\t\t\"BARANGAY NO. 60-A, CAAOACAN\",\n\t\t\t\t\t\t\t\t\"BARANGAY NO. 60-B, MADILADIG\",\n\t\t\t\t\t\t\t\t\"BARANGAY NO. 61, CATABAN\",\n\t\t\t\t\t\t\t\t\"BARANGAY NO. 62-A, NAVOTAS NORTH\",\n\t\t\t\t\t\t\t\t\"BARANGAY NO. 62-B, NAVOTAS SOUTH\",\n\t\t\t\t\t\t\t\t\"BARANGAY NO. 7-A, NUESTRA SE\u00D1ORA DEL NATIVIDAD (POBLACION)\",\n\t\t\t\t\t\t\t\t\"BARANGAY NO. 7-B, NUESTRA SE\u00D1ORA DEL NATIVIDAD (POBLACION)\",\n\t\t\t\t\t\t\t\t\"BARANGAY NO. 8, SAN VICENTE (POBLACION)\",\n\t\t\t\t\t\t\t\t\"BARANGAY NO. 9, SANTA ANGELA (POBLACION)\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"MARCOS\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"CACAFEAN\",\n\t\t\t\t\t\t\t\t\"DAQUIOAG\",\n\t\t\t\t\t\t\t\t\"ELIZABETH (CULAO)\",\n\t\t\t\t\t\t\t\t\"ESCODA\",\n\t\t\t\t\t\t\t\t\"FERDINAND\",\n\t\t\t\t\t\t\t\t\"FORTUNA\",\n\t\t\t\t\t\t\t\t\"IMELDA (CAPARIAAN)\",\n\t\t\t\t\t\t\t\t\"LYDIA (POBLACION)\",\n\t\t\t\t\t\t\t\t\"MABUTI\",\n\t\t\t\t\t\t\t\t\"PACIFICO (AGUNIT)\",\n\t\t\t\t\t\t\t\t\"SANTIAGO\",\n\t\t\t\t\t\t\t\t\"TABUCBUC (RAGAS)\",\n\t\t\t\t\t\t\t\t\"VALDEZ (BIDING)\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"NUEVA ERA\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ACNAM\",\n\t\t\t\t\t\t\t\t\"BARANGOBONG\",\n\t\t\t\t\t\t\t\t\"BARIKIR\",\n\t\t\t\t\t\t\t\t\"BUGAYONG\",\n\t\t\t\t\t\t\t\t\"CABITTAURAN\",\n\t\t\t\t\t\t\t\t\"CARAY\",\n\t\t\t\t\t\t\t\t\"GAMADEN\",\n\t\t\t\t\t\t\t\t\"NAGUILLAN (PAGPAG-ONG)\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"SANTO NI\u00D1O\",\n\t\t\t\t\t\t\t\t\"UGUIS\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"PAGUDPUD\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"AGGASI\",\n\t\t\t\t\t\t\t\t\"BADUANG\",\n\t\t\t\t\t\t\t\t\"BALAOI\",\n\t\t\t\t\t\t\t\t\"BURAYOC\",\n\t\t\t\t\t\t\t\t\"CAPARISPISAN\",\n\t\t\t\t\t\t\t\t\"CAUNAYAN\",\n\t\t\t\t\t\t\t\t\"DAMPIG\",\n\t\t\t\t\t\t\t\t\"LIGAYA\",\n\t\t\t\t\t\t\t\t\"PANCIAN\",\n\t\t\t\t\t\t\t\t\"PASALENG\",\n\t\t\t\t\t\t\t\t\"POBLACION 1\",\n\t\t\t\t\t\t\t\t\"POBLACION 2\",\n\t\t\t\t\t\t\t\t\"SAGUIGUI\",\n\t\t\t\t\t\t\t\t\"SAUD\",\n\t\t\t\t\t\t\t\t\"SUBEC\",\n\t\t\t\t\t\t\t\t\"TARRAG\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"PAOAY\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BACSIL\",\n\t\t\t\t\t\t\t\t\"CABAGOAN\",\n\t\t\t\t\t\t\t\t\"CABANGARAN\",\n\t\t\t\t\t\t\t\t\"CALLAGUIP\",\n\t\t\t\t\t\t\t\t\"CAYUBOG\",\n\t\t\t\t\t\t\t\t\"DOLORES\",\n\t\t\t\t\t\t\t\t\"LAOA\",\n\t\t\t\t\t\t\t\t\"MASINTOC\",\n\t\t\t\t\t\t\t\t\"MONTE\",\n\t\t\t\t\t\t\t\t\"MUMULAAN\",\n\t\t\t\t\t\t\t\t\"NAGBACALAN\",\n\t\t\t\t\t\t\t\t\"NALASIN\",\n\t\t\t\t\t\t\t\t\"NANGUYUDAN\",\n\t\t\t\t\t\t\t\t\"OAIG-UPAY-ABULAO\",\n\t\t\t\t\t\t\t\t\"PAMBARAN\",\n\t\t\t\t\t\t\t\t\"PANNARATAN (POBLACION)\",\n\t\t\t\t\t\t\t\t\"PARATONG\",\n\t\t\t\t\t\t\t\t\"PASIL\",\n\t\t\t\t\t\t\t\t\"SALBANG (POBLACION)\",\n\t\t\t\t\t\t\t\t\"SAN AGUSTIN\",\n\t\t\t\t\t\t\t\t\"SAN BLAS (POBLACION)\",\n\t\t\t\t\t\t\t\t\"SAN JUAN\",\n\t\t\t\t\t\t\t\t\"SAN PEDRO\",\n\t\t\t\t\t\t\t\t\"SAN ROQUE (POBLACION)\",\n\t\t\t\t\t\t\t\t\"SANGLADAN POBLACION (NALBUAN)\",\n\t\t\t\t\t\t\t\t\"SANTA RITA (POBLACION)\",\n\t\t\t\t\t\t\t\t\"SIDEG\",\n\t\t\t\t\t\t\t\t\"SUBA\",\n\t\t\t\t\t\t\t\t\"SUNGADAN\",\n\t\t\t\t\t\t\t\t\"SURGUI\",\n\t\t\t\t\t\t\t\t\"VERONICA\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"PASUQUIN\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BATULI\",\n\t\t\t\t\t\t\t\t\"BINSANG\",\n\t\t\t\t\t\t\t\t\"CARUAN\",\n\t\t\t\t\t\t\t\t\"CARUSIKIS\",\n\t\t\t\t\t\t\t\t\"CARUSIPAN\",\n\t\t\t\t\t\t\t\t\"DADAEMAN\",\n\t\t\t\t\t\t\t\t\"DARUPIDIP\",\n\t\t\t\t\t\t\t\t\"DAVILA\",\n\t\t\t\t\t\t\t\t\"DILANIS\",\n\t\t\t\t\t\t\t\t\"DILAVO\",\n\t\t\t\t\t\t\t\t\"ESTANCIA\",\n\t\t\t\t\t\t\t\t\"NAGLICUAN\",\n\t\t\t\t\t\t\t\t\"NAGSANGA\",\n\t\t\t\t\t\t\t\t\"NALVO (CABABAAN-NALVO)\",\n\t\t\t\t\t\t\t\t\"NGABANGAB\",\n\t\t\t\t\t\t\t\t\"PANGIL\",\n\t\t\t\t\t\t\t\t\"POBLACION 1\",\n\t\t\t\t\t\t\t\t\"POBLACION 2\",\n\t\t\t\t\t\t\t\t\"POBLACION 3\",\n\t\t\t\t\t\t\t\t\"POBLACION 4\",\n\t\t\t\t\t\t\t\t\"PRAGATA (PRAGATA-BUNGRO)\",\n\t\t\t\t\t\t\t\t\"PUYUPUYAN\",\n\t\t\t\t\t\t\t\t\"SALPAD\",\n\t\t\t\t\t\t\t\t\"SAN JUAN\",\n\t\t\t\t\t\t\t\t\"SANTA CATALINA\",\n\t\t\t\t\t\t\t\t\"SANTA MATILDE\",\n\t\t\t\t\t\t\t\t\"SAPAT\",\n\t\t\t\t\t\t\t\t\"SULBEC\",\n\t\t\t\t\t\t\t\t\"SULONGAN\",\n\t\t\t\t\t\t\t\t\"SURONG\",\n\t\t\t\t\t\t\t\t\"SUSUGAEN\",\n\t\t\t\t\t\t\t\t\"TABUNGAO\",\n\t\t\t\t\t\t\t\t\"TADAO\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"PIDDIG\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"AB-ABUT\",\n\t\t\t\t\t\t\t\t\"ABUCAY\",\n\t\t\t\t\t\t\t\t\"ANAO (POBLACION)\",\n\t\t\t\t\t\t\t\t\"ARUA-AY\",\n\t\t\t\t\t\t\t\t\"BIMMANGA\",\n\t\t\t\t\t\t\t\t\"BOYBOY\",\n\t\t\t\t\t\t\t\t\"CABAROAN (POBLACION)\",\n\t\t\t\t\t\t\t\t\"CALAMBEG\",\n\t\t\t\t\t\t\t\t\"CALLUSA\",\n\t\t\t\t\t\t\t\t\"DUPITAC\",\n\t\t\t\t\t\t\t\t\"ESTANCIA\",\n\t\t\t\t\t\t\t\t\"GAYAMAT\",\n\t\t\t\t\t\t\t\t\"LAGANDIT\",\n\t\t\t\t\t\t\t\t\"LIBNAOAN\",\n\t\t\t\t\t\t\t\t\"LOING (POBLACION)\",\n\t\t\t\t\t\t\t\t\"MAAB-ABACA\",\n\t\t\t\t\t\t\t\t\"MANGITAYAG\",\n\t\t\t\t\t\t\t\t\"MARUAYA\",\n\t\t\t\t\t\t\t\t\"SAN ANTONIO\",\n\t\t\t\t\t\t\t\t\"SANTA MARIA\",\n\t\t\t\t\t\t\t\t\"SUCSUQUEN\",\n\t\t\t\t\t\t\t\t\"TANGAOAN\",\n\t\t\t\t\t\t\t\t\"TONOTON\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"PINILI\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"AGLIPAY\",\n\t\t\t\t\t\t\t\t\"APATUT-LUBONG\",\n\t\t\t\t\t\t\t\t\"BADI\",\n\t\t\t\t\t\t\t\t\"BARBAR\",\n\t\t\t\t\t\t\t\t\"BUANGA\",\n\t\t\t\t\t\t\t\t\"BULBULALA\",\n\t\t\t\t\t\t\t\t\"BUNGRO\",\n\t\t\t\t\t\t\t\t\"CABAROAN\",\n\t\t\t\t\t\t\t\t\"CAPANGDANAN\",\n\t\t\t\t\t\t\t\t\"DALAYAP\",\n\t\t\t\t\t\t\t\t\"DARAT\",\n\t\t\t\t\t\t\t\t\"GULPENG\",\n\t\t\t\t\t\t\t\t\"LILIPUTEN\",\n\t\t\t\t\t\t\t\t\"LUMBAAN-BICBICA\",\n\t\t\t\t\t\t\t\t\"NAGTRIGOAN\",\n\t\t\t\t\t\t\t\t\"PAGDILAO (POBLACION)\",\n\t\t\t\t\t\t\t\t\"PUGAOAN\",\n\t\t\t\t\t\t\t\t\"PURITAC\",\n\t\t\t\t\t\t\t\t\"PUZOL\",\n\t\t\t\t\t\t\t\t\"SACRITAN\",\n\t\t\t\t\t\t\t\t\"SALANAP\",\n\t\t\t\t\t\t\t\t\"SANTO TOMAS\",\n\t\t\t\t\t\t\t\t\"TARTARABANG\",\n\t\t\t\t\t\t\t\t\"UPON\",\n\t\t\t\t\t\t\t\t\"VALBUENA (POBLACION)\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"SAN NICOLAS\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"SAN AGUSTIN\",\n\t\t\t\t\t\t\t\t\"SAN BALTAZAR (POBLACION)\",\n\t\t\t\t\t\t\t\t\"SAN BARTOLOME (POBLACION)\",\n\t\t\t\t\t\t\t\t\"SAN CAYETANO (POBLACION)\",\n\t\t\t\t\t\t\t\t\"SAN EUGENIO (POBLACION)\",\n\t\t\t\t\t\t\t\t\"SAN FERNANDO (POBLACION)\",\n\t\t\t\t\t\t\t\t\"SAN FRANCISCO (POBLACION)\",\n\t\t\t\t\t\t\t\t\"SAN GREGORIO (POBLACION)\",\n\t\t\t\t\t\t\t\t\"SAN GUILLERMO\",\n\t\t\t\t\t\t\t\t\"SAN ILDEFONSO (POBLACION)\",\n\t\t\t\t\t\t\t\t\"SAN JOSE (POBLACION)\",\n\t\t\t\t\t\t\t\t\"SAN JUAN BAUTISTA (POBLACION)\",\n\t\t\t\t\t\t\t\t\"SAN LORENZO\",\n\t\t\t\t\t\t\t\t\"SAN LUCAS (POBLACION)\",\n\t\t\t\t\t\t\t\t\"SAN MARCOS (PAYAS)\",\n\t\t\t\t\t\t\t\t\"SAN MIGUEL (POBLACION)\",\n\t\t\t\t\t\t\t\t\"SAN PABLO\",\n\t\t\t\t\t\t\t\t\"SAN PAULO (POBLACION)\",\n\t\t\t\t\t\t\t\t\"SAN PEDRO (BINGAO)\",\n\t\t\t\t\t\t\t\t\"SAN RUFINO (POBLACION)\",\n\t\t\t\t\t\t\t\t\"SAN SILVESTRE (POBLACION)\",\n\t\t\t\t\t\t\t\t\"SANTA ASUNCION (SAMAC)\",\n\t\t\t\t\t\t\t\t\"SANTA CECILIA (BARABAR)\",\n\t\t\t\t\t\t\t\t\"SANTA MONICA (NAGREBCAN)\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"SARRAT\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"SAN AGUSTIN (POBLACION)\",\n\t\t\t\t\t\t\t\t\"SAN ANDRES\",\n\t\t\t\t\t\t\t\t\"SAN ANTONIO\",\n\t\t\t\t\t\t\t\t\"SAN BERNABE\",\n\t\t\t\t\t\t\t\t\"SAN CRISTOBAL\",\n\t\t\t\t\t\t\t\t\"SAN FELIPE\",\n\t\t\t\t\t\t\t\t\"SAN FRANCISCO (POBLACION)\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO\",\n\t\t\t\t\t\t\t\t\"SAN JOAQUIN (POBLACION)\",\n\t\t\t\t\t\t\t\t\"SAN JOSE\",\n\t\t\t\t\t\t\t\t\"SAN JUAN\",\n\t\t\t\t\t\t\t\t\"SAN LEANDRO (POBLACION)\",\n\t\t\t\t\t\t\t\t\"SAN LORENZO\",\n\t\t\t\t\t\t\t\t\"SAN MANUEL\",\n\t\t\t\t\t\t\t\t\"SAN MARCOS\",\n\t\t\t\t\t\t\t\t\"SAN NICOLAS\",\n\t\t\t\t\t\t\t\t\"SAN PEDRO\",\n\t\t\t\t\t\t\t\t\"SAN ROQUE\",\n\t\t\t\t\t\t\t\t\"SAN VICENTE (POBLACION)\",\n\t\t\t\t\t\t\t\t\"SANTA BARBARA (POBLACION)\",\n\t\t\t\t\t\t\t\t\"SANTA MAGDALENA\",\n\t\t\t\t\t\t\t\t\"SANTA ROSA\",\n\t\t\t\t\t\t\t\t\"SANTO SANTIAGO\",\n\t\t\t\t\t\t\t\t\"SANTO TOMAS\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"SOLSONA\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"AGUITAP\",\n\t\t\t\t\t\t\t\t\"BAGBAG\",\n\t\t\t\t\t\t\t\t\"BAGBAGO\",\n\t\t\t\t\t\t\t\t\"BARCELONA\",\n\t\t\t\t\t\t\t\t\"BUBUOS\",\n\t\t\t\t\t\t\t\t\"CAPURICTAN\",\n\t\t\t\t\t\t\t\t\"CATANGRARAN\",\n\t\t\t\t\t\t\t\t\"DARASDAS\",\n\t\t\t\t\t\t\t\t\"JUAN (POBLACION)\",\n\t\t\t\t\t\t\t\t\"LAURETA (POBLACION)\",\n\t\t\t\t\t\t\t\t\"LIPAY\",\n\t\t\t\t\t\t\t\t\"MAANANTENG\",\n\t\t\t\t\t\t\t\t\"MANALPAC\",\n\t\t\t\t\t\t\t\t\"MARIQUET\",\n\t\t\t\t\t\t\t\t\"NAGPATPATAN\",\n\t\t\t\t\t\t\t\t\"NALASIN\",\n\t\t\t\t\t\t\t\t\"PUTTAO\",\n\t\t\t\t\t\t\t\t\"SAN JUAN\",\n\t\t\t\t\t\t\t\t\"SAN JULIAN\",\n\t\t\t\t\t\t\t\t\"SANTA ANA\",\n\t\t\t\t\t\t\t\t\"SANTIAGO\",\n\t\t\t\t\t\t\t\t\"TALUGTOG\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"VINTAR\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ABKIR\",\n\t\t\t\t\t\t\t\t\"ALEJO MALASIG\",\n\t\t\t\t\t\t\t\t\"ALSEM\",\n\t\t\t\t\t\t\t\t\"BAGO\",\n\t\t\t\t\t\t\t\t\"BULBULALA\",\n\t\t\t\t\t\t\t\t\"CABANGARAN\",\n\t\t\t\t\t\t\t\t\"CABAYO\",\n\t\t\t\t\t\t\t\t\"CABISOCOLAN\",\n\t\t\t\t\t\t\t\t\"CANAAM\",\n\t\t\t\t\t\t\t\t\"COLUMBIA\",\n\t\t\t\t\t\t\t\t\"DAGUPAN\",\n\t\t\t\t\t\t\t\t\"DIPILAT\",\n\t\t\t\t\t\t\t\t\"ESPERANZA\",\n\t\t\t\t\t\t\t\t\"ESTER\",\n\t\t\t\t\t\t\t\t\"ISIC ISIC\",\n\t\t\t\t\t\t\t\t\"LUBNAC\",\n\t\t\t\t\t\t\t\t\"MABANBANAG\",\n\t\t\t\t\t\t\t\t\"MALAMPA (PENINAAN-MALAMPA)\",\n\t\t\t\t\t\t\t\t\"MANARANG\",\n\t\t\t\t\t\t\t\t\"MARGAAY\",\n\t\t\t\t\t\t\t\t\"NAMOROC\",\n\t\t\t\t\t\t\t\t\"PARPAROROC\",\n\t\t\t\t\t\t\t\t\"PARUT\",\n\t\t\t\t\t\t\t\t\"PEDRO F. ALVIAR (DIATON)\",\n\t\t\t\t\t\t\t\t\"SALSALAMAGUI\",\n\t\t\t\t\t\t\t\t\"SAN JOSE (LIPAY)\",\n\t\t\t\t\t\t\t\t\"SAN NICOLAS (POBLACION)\",\n\t\t\t\t\t\t\t\t\"SAN PEDRO (POBLACION)\",\n\t\t\t\t\t\t\t\t\"SAN RAMON (POBLACION)\",\n\t\t\t\t\t\t\t\t\"SAN ROQUE (POBLACION)\",\n\t\t\t\t\t\t\t\t\"SANTA MARIA (POBLACION)\",\n\t\t\t\t\t\t\t\t\"TAMDAGAN\",\n\t\t\t\t\t\t\t\t\"VISAYA\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"ILOCOS SUR\",\n\t\t\t\t\t\"cities\": [{\n\t\t\t\t\t\t\t\"name\": \"ALILEM\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ALILEM DAYA (POBLACION)\",\n\t\t\t\t\t\t\t\t\"AMILONGAN\",\n\t\t\t\t\t\t\t\t\"ANAAO\",\n\t\t\t\t\t\t\t\t\"APANG\",\n\t\t\t\t\t\t\t\t\"APAYA\",\n\t\t\t\t\t\t\t\t\"BATBATO\",\n\t\t\t\t\t\t\t\t\"DADDAAY\",\n\t\t\t\t\t\t\t\t\"DALAWA\",\n\t\t\t\t\t\t\t\t\"KIAT\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"BANAYOYO\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BAGBAGOTOT\",\n\t\t\t\t\t\t\t\t\"BANBANAAL\",\n\t\t\t\t\t\t\t\t\"BISANGOL\",\n\t\t\t\t\t\t\t\t\"CADANGLAAN\",\n\t\t\t\t\t\t\t\t\"CASILAGAN NORTE\",\n\t\t\t\t\t\t\t\t\"CASILAGAN SUR\",\n\t\t\t\t\t\t\t\t\"ELEFANTE\",\n\t\t\t\t\t\t\t\t\"GUARDIA\",\n\t\t\t\t\t\t\t\t\"LINTIC\",\n\t\t\t\t\t\t\t\t\"LOPEZ\",\n\t\t\t\t\t\t\t\t\"MONTERO\",\n\t\t\t\t\t\t\t\t\"NAGUIMBA\",\n\t\t\t\t\t\t\t\t\"PILA\",\n\t\t\t\t\t\t\t\t\"POBLACION\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"BANTAY\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"AGGAY\",\n\t\t\t\t\t\t\t\t\"AN-ANNAM\",\n\t\t\t\t\t\t\t\t\"BALALENG\",\n\t\t\t\t\t\t\t\t\"BANAOANG\",\n\t\t\t\t\t\t\t\t\"BARANGAY 1 (POBLACION)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 2 (POBLACION)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 3 (POBLACION)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 4 (POBLACION)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 5 (POBLACION)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 6 (POBLACION)\",\n\t\t\t\t\t\t\t\t\"BULAG\",\n\t\t\t\t\t\t\t\t\"BUQUIG\",\n\t\t\t\t\t\t\t\t\"CABALANGGAN\",\n\t\t\t\t\t\t\t\t\"CABAROAN\",\n\t\t\t\t\t\t\t\t\"CABUSLIGAN\",\n\t\t\t\t\t\t\t\t\"CAPANGDANAN\",\n\t\t\t\t\t\t\t\t\"GUIMOD\",\n\t\t\t\t\t\t\t\t\"LINGSAT\",\n\t\t\t\t\t\t\t\t\"MALINGEB\",\n\t\t\t\t\t\t\t\t\"MIRA\",\n\t\t\t\t\t\t\t\t\"NAGUIDDAYAN\",\n\t\t\t\t\t\t\t\t\"ORA\",\n\t\t\t\t\t\t\t\t\"PAING\",\n\t\t\t\t\t\t\t\t\"PUSPUS\",\n\t\t\t\t\t\t\t\t\"QUIMMARAYAN\",\n\t\t\t\t\t\t\t\t\"SAGNEB\",\n\t\t\t\t\t\t\t\t\"SAGPAT\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO\",\n\t\t\t\t\t\t\t\t\"SAN JULIAN\",\n\t\t\t\t\t\t\t\t\"SAN MARIANO (SALLACONG)\",\n\t\t\t\t\t\t\t\t\"SINABAAN\",\n\t\t\t\t\t\t\t\t\"TAGUIPORO\",\n\t\t\t\t\t\t\t\t\"TALEB\",\n\t\t\t\t\t\t\t\t\"TAY-AC\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"BURGOS\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"AMBUGAT\",\n\t\t\t\t\t\t\t\t\"BALUGANG\",\n\t\t\t\t\t\t\t\t\"BANGBANGAR\",\n\t\t\t\t\t\t\t\t\"BESSANG\",\n\t\t\t\t\t\t\t\t\"CABCABURAO\",\n\t\t\t\t\t\t\t\t\"CADACAD\",\n\t\t\t\t\t\t\t\t\"CALLITONG\",\n\t\t\t\t\t\t\t\t\"DAYANKI\",\n\t\t\t\t\t\t\t\t\"DIRDIRIG (DIRDIRIG-PADAY)\",\n\t\t\t\t\t\t\t\t\"LESSEB\",\n\t\t\t\t\t\t\t\t\"LUBING\",\n\t\t\t\t\t\t\t\t\"LUCABAN\",\n\t\t\t\t\t\t\t\t\"LUNA\",\n\t\t\t\t\t\t\t\t\"MACAOAYAN\",\n\t\t\t\t\t\t\t\t\"MAMBUG\",\n\t\t\t\t\t\t\t\t\"MANABOC\",\n\t\t\t\t\t\t\t\t\"MAPANIT\",\n\t\t\t\t\t\t\t\t\"NAGPANAOAN\",\n\t\t\t\t\t\t\t\t\"PADUROS\",\n\t\t\t\t\t\t\t\t\"PATAC\",\n\t\t\t\t\t\t\t\t\"POBLACION NORTE (BATO)\",\n\t\t\t\t\t\t\t\t\"POBLACION SUR (MASINGIT)\",\n\t\t\t\t\t\t\t\t\"SABANGAN PINGGAN\",\n\t\t\t\t\t\t\t\t\"SUBADI NORTE\",\n\t\t\t\t\t\t\t\t\"SUBADI SUR\",\n\t\t\t\t\t\t\t\t\"TALIAO\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"CABUGAO\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ALINAAY\",\n\t\t\t\t\t\t\t\t\"ARAGAN\",\n\t\t\t\t\t\t\t\t\"ARNAP\",\n\t\t\t\t\t\t\t\t\"BACLIG (POBLACION)\",\n\t\t\t\t\t\t\t\t\"BATO\",\n\t\t\t\t\t\t\t\t\"BONIFACIO (POBLACION)\",\n\t\t\t\t\t\t\t\t\"BUNGRO\",\n\t\t\t\t\t\t\t\t\"CACADIRAN\",\n\t\t\t\t\t\t\t\t\"CAELLAYAN\",\n\t\t\t\t\t\t\t\t\"CARUSIPAN\",\n\t\t\t\t\t\t\t\t\"CATUCDAAN\",\n\t\t\t\t\t\t\t\t\"CUANCABAL\",\n\t\t\t\t\t\t\t\t\"CUANTACLA\",\n\t\t\t\t\t\t\t\t\"DACLAPAN\",\n\t\t\t\t\t\t\t\t\"DARDARAT\",\n\t\t\t\t\t\t\t\t\"LIPIT\",\n\t\t\t\t\t\t\t\t\"MARADODON\",\n\t\t\t\t\t\t\t\t\"MARGAAY\",\n\t\t\t\t\t\t\t\t\"NAGSANTAAN\",\n\t\t\t\t\t\t\t\t\"NAGSINCAOAN\",\n\t\t\t\t\t\t\t\t\"NAMRUANGAN\",\n\t\t\t\t\t\t\t\t\"PILA\",\n\t\t\t\t\t\t\t\t\"PUG-OS\",\n\t\t\t\t\t\t\t\t\"QUEZON (POBLACION)\",\n\t\t\t\t\t\t\t\t\"REPPAAC\",\n\t\t\t\t\t\t\t\t\"RIZAL (POBLACION)\",\n\t\t\t\t\t\t\t\t\"SABANG\",\n\t\t\t\t\t\t\t\t\"SAGAYADEN\",\n\t\t\t\t\t\t\t\t\"SALAPASAP\",\n\t\t\t\t\t\t\t\t\"SALOMAGUE\",\n\t\t\t\t\t\t\t\t\"SISIM\",\n\t\t\t\t\t\t\t\t\"TUROD\",\n\t\t\t\t\t\t\t\t\"TUROD-PATAC\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"CANDON\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ALLANGIGAN PRIMERO\",\n\t\t\t\t\t\t\t\t\"ALLANGIGAN SEGUNDO\",\n\t\t\t\t\t\t\t\t\"AMGUID\",\n\t\t\t\t\t\t\t\t\"AYUDANTE\",\n\t\t\t\t\t\t\t\t\"BAGANI CAMPOSANTO\",\n\t\t\t\t\t\t\t\t\"BAGANI GABOR\",\n\t\t\t\t\t\t\t\t\"BAGANI TOCGO\",\n\t\t\t\t\t\t\t\t\"BAGANI UBBOG\",\n\t\t\t\t\t\t\t\t\"BAGAR\",\n\t\t\t\t\t\t\t\t\"BALINGAOAN\",\n\t\t\t\t\t\t\t\t\"BUGNAY\",\n\t\t\t\t\t\t\t\t\"CALAOAAN\",\n\t\t\t\t\t\t\t\t\"CALONGBUYAN\",\n\t\t\t\t\t\t\t\t\"CATERMAN\",\n\t\t\t\t\t\t\t\t\"CUBCUBBOOT\",\n\t\t\t\t\t\t\t\t\"DARAPIDAP\",\n\t\t\t\t\t\t\t\t\"LANGLANGCA PRIMERO\",\n\t\t\t\t\t\t\t\t\"LANGLANGCA SEGUNDO\",\n\t\t\t\t\t\t\t\t\"OAIG-DAYA\",\n\t\t\t\t\t\t\t\t\"PALACAPAC\",\n\t\t\t\t\t\t\t\t\"PARAS\",\n\t\t\t\t\t\t\t\t\"PARIOC PRIMERO\",\n\t\t\t\t\t\t\t\t\"PARIOC SEGUNDO\",\n\t\t\t\t\t\t\t\t\"PATPATA PRIMERO\",\n\t\t\t\t\t\t\t\t\"PATPATA SEGUNDO\",\n\t\t\t\t\t\t\t\t\"PAYPAYAD\",\n\t\t\t\t\t\t\t\t\"SALVADOR PRIMERO\",\n\t\t\t\t\t\t\t\t\"SALVADOR SEGUNDO\",\n\t\t\t\t\t\t\t\t\"SAN AGUSTIN\",\n\t\t\t\t\t\t\t\t\"SAN ANDRES\",\n\t\t\t\t\t\t\t\t\"SAN ANTONIO (POBLACION)\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO (POBLACION)\",\n\t\t\t\t\t\t\t\t\"SAN JOSE (POBLACION)\",\n\t\t\t\t\t\t\t\t\"SAN JUAN (POBLACION)\",\n\t\t\t\t\t\t\t\t\"SAN NICOLAS\",\n\t\t\t\t\t\t\t\t\"SAN PEDRO\",\n\t\t\t\t\t\t\t\t\"SANTO TOMAS\",\n\t\t\t\t\t\t\t\t\"TABLAC\",\n\t\t\t\t\t\t\t\t\"TALOGTOG\",\n\t\t\t\t\t\t\t\t\"TAMURONG PRIMERO\",\n\t\t\t\t\t\t\t\t\"TAMURONG SEGUNDO\",\n\t\t\t\t\t\t\t\t\"VILLARICA\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"CAOAYAN\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ANONANG MAYOR\",\n\t\t\t\t\t\t\t\t\"ANONANG MENOR\",\n\t\t\t\t\t\t\t\t\"BAGGOC\",\n\t\t\t\t\t\t\t\t\"CALLAGUIP\",\n\t\t\t\t\t\t\t\t\"CAPARACADAN\",\n\t\t\t\t\t\t\t\t\"DON ALEJANDRO QUIROLOGICO (POBLACION)\",\n\t\t\t\t\t\t\t\t\"DON DIMAS QUERUBIN (POBLACION)\",\n\t\t\t\t\t\t\t\t\"DON LORENZO QUERUBIN (POBLACION)\",\n\t\t\t\t\t\t\t\t\"FUERTE\",\n\t\t\t\t\t\t\t\t\"MANANGAT\",\n\t\t\t\t\t\t\t\t\"NAGUILIAN\",\n\t\t\t\t\t\t\t\t\"NANSUAGAO\",\n\t\t\t\t\t\t\t\t\"PANDAN\",\n\t\t\t\t\t\t\t\t\"PANTAY-QUITIQUIT\",\n\t\t\t\t\t\t\t\t\"PANTAY TAMURONG\",\n\t\t\t\t\t\t\t\t\"PURO\",\n\t\t\t\t\t\t\t\t\"VILLAMAR\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"CERVANTES\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ALULING\",\n\t\t\t\t\t\t\t\t\"COMILLAS NORTH\",\n\t\t\t\t\t\t\t\t\"COMILLAS SOUTH\",\n\t\t\t\t\t\t\t\t\"CONCEPCION (POBLACION)\",\n\t\t\t\t\t\t\t\t\"DINWEDE EAST\",\n\t\t\t\t\t\t\t\t\"DINWEDE WEST\",\n\t\t\t\t\t\t\t\t\"LIBANG\",\n\t\t\t\t\t\t\t\t\"MALAYA\",\n\t\t\t\t\t\t\t\t\"PILIPIL\",\n\t\t\t\t\t\t\t\t\"REMEDIOS\",\n\t\t\t\t\t\t\t\t\"ROSARIO (POBLACION)\",\n\t\t\t\t\t\t\t\t\"SAN JUAN\",\n\t\t\t\t\t\t\t\t\"SAN LUIS\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"GALIMUYOD\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ABAYA\",\n\t\t\t\t\t\t\t\t\"BARACBAC\",\n\t\t\t\t\t\t\t\t\"BIDBIDAY\",\n\t\t\t\t\t\t\t\t\"BITONG\",\n\t\t\t\t\t\t\t\t\"BOROBOR\",\n\t\t\t\t\t\t\t\t\"CALIMUGTONG\",\n\t\t\t\t\t\t\t\t\"CALONGBUYAN\",\n\t\t\t\t\t\t\t\t\"CALUMBAYA\",\n\t\t\t\t\t\t\t\t\"DALDAGAN\",\n\t\t\t\t\t\t\t\t\"KILANG\",\n\t\t\t\t\t\t\t\t\"LEGASPI\",\n\t\t\t\t\t\t\t\t\"MABAYAG\",\n\t\t\t\t\t\t\t\t\"MATANUBONG\",\n\t\t\t\t\t\t\t\t\"MCKINLEY\",\n\t\t\t\t\t\t\t\t\"NAGSINGCAOAN\",\n\t\t\t\t\t\t\t\t\"OAIG-DAYA\",\n\t\t\t\t\t\t\t\t\"PAGANGPANG\",\n\t\t\t\t\t\t\t\t\"PATAC\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"RUBIO\",\n\t\t\t\t\t\t\t\t\"SABANGAN-BATO\",\n\t\t\t\t\t\t\t\t\"SACAANG\",\n\t\t\t\t\t\t\t\t\"SAN VICENTE\",\n\t\t\t\t\t\t\t\t\"SAPANG\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"GREGORIO DEL PILAR\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ALFONSO (TANGAOAN)\",\n\t\t\t\t\t\t\t\t\"BUSSOT\",\n\t\t\t\t\t\t\t\t\"CONCEPCION\",\n\t\t\t\t\t\t\t\t\"DAPDAPPIG\",\n\t\t\t\t\t\t\t\t\"MATUE-BUTARAG\",\n\t\t\t\t\t\t\t\t\"POBLACION NORTE\",\n\t\t\t\t\t\t\t\t\"POBLACION SUR\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"LIDLIDDA\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BANUCAL\",\n\t\t\t\t\t\t\t\t\"BEQUI-WALIN\",\n\t\t\t\t\t\t\t\t\"BUGUI\",\n\t\t\t\t\t\t\t\t\"CALUNGBUYAN\",\n\t\t\t\t\t\t\t\t\"CARCARABASA\",\n\t\t\t\t\t\t\t\t\"LABUT\",\n\t\t\t\t\t\t\t\t\"POBLACION NORTE\",\n\t\t\t\t\t\t\t\t\"POBLACION SUR\",\n\t\t\t\t\t\t\t\t\"SAN VICENTE\",\n\t\t\t\t\t\t\t\t\"SUYSUYAN\",\n\t\t\t\t\t\t\t\t\"TAY-AC\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"MAGSINGAL\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ALANGAN\",\n\t\t\t\t\t\t\t\t\"BACAR\",\n\t\t\t\t\t\t\t\t\"BARBARIT\",\n\t\t\t\t\t\t\t\t\"BUNGRO\",\n\t\t\t\t\t\t\t\t\"CABAROAN\",\n\t\t\t\t\t\t\t\t\"CADANGLAAN\",\n\t\t\t\t\t\t\t\t\"CARAISAN\",\n\t\t\t\t\t\t\t\t\"DACUTAN\",\n\t\t\t\t\t\t\t\t\"LABUT\",\n\t\t\t\t\t\t\t\t\"MAAS-ASIN\",\n\t\t\t\t\t\t\t\t\"MACATCATUD\",\n\t\t\t\t\t\t\t\t\"MANZANTE\",\n\t\t\t\t\t\t\t\t\"MARATUDO\",\n\t\t\t\t\t\t\t\t\"MIRAMAR\",\n\t\t\t\t\t\t\t\t\"NAMALPALAN\",\n\t\t\t\t\t\t\t\t\"NAPO\",\n\t\t\t\t\t\t\t\t\"PAGSANAAN NORTE\",\n\t\t\t\t\t\t\t\t\"PAGSANAAN SUR\",\n\t\t\t\t\t\t\t\t\"PANAY NORTE\",\n\t\t\t\t\t\t\t\t\"PANAY SUR\",\n\t\t\t\t\t\t\t\t\"PATONG\",\n\t\t\t\t\t\t\t\t\"PURO\",\n\t\t\t\t\t\t\t\t\"SAN BASILIO (POBLACION)\",\n\t\t\t\t\t\t\t\t\"SAN CLEMENTE (POBLACION)\",\n\t\t\t\t\t\t\t\t\"SAN JULIAN (POBLACION)\",\n\t\t\t\t\t\t\t\t\"SAN LUCAS (POBLACION)\",\n\t\t\t\t\t\t\t\t\"SAN RAMON (POBLACION)\",\n\t\t\t\t\t\t\t\t\"SAN VICENTE (POBLACION)\",\n\t\t\t\t\t\t\t\t\"SANTA MONICA\",\n\t\t\t\t\t\t\t\t\"SARSARACAT\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"NAGBUKEL\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BALAWEG\",\n\t\t\t\t\t\t\t\t\"BANDRIL\",\n\t\t\t\t\t\t\t\t\"BANTUGO\",\n\t\t\t\t\t\t\t\t\"CADACAD\",\n\t\t\t\t\t\t\t\t\"CASILAGAN\",\n\t\t\t\t\t\t\t\t\"CASOCOS\",\n\t\t\t\t\t\t\t\t\"LAPTING\",\n\t\t\t\t\t\t\t\t\"MAPISI\",\n\t\t\t\t\t\t\t\t\"MISSION\",\n\t\t\t\t\t\t\t\t\"POBLACION EAST\",\n\t\t\t\t\t\t\t\t\"POBLACION WEST\",\n\t\t\t\t\t\t\t\t\"TALEB\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"NARVACAN\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ABUOR\",\n\t\t\t\t\t\t\t\t\"AMBULOGAN\",\n\t\t\t\t\t\t\t\t\"AQUIB\",\n\t\t\t\t\t\t\t\t\"BANGLAYAN\",\n\t\t\t\t\t\t\t\t\"BANTAY ABOT\",\n\t\t\t\t\t\t\t\t\"BULANOS\",\n\t\t\t\t\t\t\t\t\"CADACAD\",\n\t\t\t\t\t\t\t\t\"CAGAYUNGAN\",\n\t\t\t\t\t\t\t\t\"CAMARAO\",\n\t\t\t\t\t\t\t\t\"CASILAGAN\",\n\t\t\t\t\t\t\t\t\"CODOOG\",\n\t\t\t\t\t\t\t\t\"DASAY\",\n\t\t\t\t\t\t\t\t\"DINALAOAN\",\n\t\t\t\t\t\t\t\t\"ESTANCIA\",\n\t\t\t\t\t\t\t\t\"LANIPAO\",\n\t\t\t\t\t\t\t\t\"LUNGOG\",\n\t\t\t\t\t\t\t\t\"MARGAAY\",\n\t\t\t\t\t\t\t\t\"MAROZO\",\n\t\t\t\t\t\t\t\t\"NAGUNEG\",\n\t\t\t\t\t\t\t\t\"ORENCE\",\n\t\t\t\t\t\t\t\t\"PANTOC\",\n\t\t\t\t\t\t\t\t\"PARATONG\",\n\t\t\t\t\t\t\t\t\"PARPARIA\",\n\t\t\t\t\t\t\t\t\"QUINARAYAN\",\n\t\t\t\t\t\t\t\t\"RIVADAVIA\",\n\t\t\t\t\t\t\t\t\"SAN ANTONIO\",\n\t\t\t\t\t\t\t\t\"SAN JOSE (POBLACION)\",\n\t\t\t\t\t\t\t\t\"SAN PABLO\",\n\t\t\t\t\t\t\t\t\"SAN PEDRO\",\n\t\t\t\t\t\t\t\t\"SANTA LUCIA (POBLACION)\",\n\t\t\t\t\t\t\t\t\"SARMINGAN\",\n\t\t\t\t\t\t\t\t\"SUCOC\",\n\t\t\t\t\t\t\t\t\"SULVEC\",\n\t\t\t\t\t\t\t\t\"TUROD\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"QUIRINO (ANGKAKI)\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BANOEN\",\n\t\t\t\t\t\t\t\t\"CAYUS\",\n\t\t\t\t\t\t\t\t\"LAMAG (TUBTUBA)\",\n\t\t\t\t\t\t\t\t\"LEGLEG (POBLACION)\",\n\t\t\t\t\t\t\t\t\"MALIDEG\",\n\t\t\t\t\t\t\t\t\"NAMITPIT\",\n\t\t\t\t\t\t\t\t\"PATIACAN\",\n\t\t\t\t\t\t\t\t\"PATUNGCALEO (LAMAG)\",\n\t\t\t\t\t\t\t\t\"SUAGAYAN\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"SALCEDO (BAUGEN)\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ATABAY\",\n\t\t\t\t\t\t\t\t\"BALIDBID\",\n\t\t\t\t\t\t\t\t\"BALUARTE\",\n\t\t\t\t\t\t\t\t\"BAYBAYADING\",\n\t\t\t\t\t\t\t\t\"BOGUIBOG\",\n\t\t\t\t\t\t\t\t\"BULALA-LEGUEY\",\n\t\t\t\t\t\t\t\t\"CALANGCUASAN\",\n\t\t\t\t\t\t\t\t\"CULIONG\",\n\t\t\t\t\t\t\t\t\"DINARATAN\",\n\t\t\t\t\t\t\t\t\"KALIWAKIW\",\n\t\t\t\t\t\t\t\t\"KINMARIN\",\n\t\t\t\t\t\t\t\t\"LUCBUBAN\",\n\t\t\t\t\t\t\t\t\"MADARANG\",\n\t\t\t\t\t\t\t\t\"MALIGCONG\",\n\t\t\t\t\t\t\t\t\"PIAS\",\n\t\t\t\t\t\t\t\t\"POBLACION NORTE\",\n\t\t\t\t\t\t\t\t\"POBLACION SUR\",\n\t\t\t\t\t\t\t\t\"SAN GASPAR\",\n\t\t\t\t\t\t\t\t\"SAN TIBURCIO\",\n\t\t\t\t\t\t\t\t\"SORIOAN\",\n\t\t\t\t\t\t\t\t\"UBBOG\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"SAN EMILIO\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"CABAROAN (POBLACION)\",\n\t\t\t\t\t\t\t\t\"KALUMSING\",\n\t\t\t\t\t\t\t\t\"LANCUAS\",\n\t\t\t\t\t\t\t\t\"MATIBUEY\",\n\t\t\t\t\t\t\t\t\"PALTOC\",\n\t\t\t\t\t\t\t\t\"SAN MILIANO\",\n\t\t\t\t\t\t\t\t\"SIBSIBBU\",\n\t\t\t\t\t\t\t\t\"TIAGAN\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"SAN ESTEBAN\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ANSAD\",\n\t\t\t\t\t\t\t\t\"APATOT\",\n\t\t\t\t\t\t\t\t\"BATERIA\",\n\t\t\t\t\t\t\t\t\"CABAROAN\",\n\t\t\t\t\t\t\t\t\"CAPPA-CAPPA\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"SAN NICOLAS\",\n\t\t\t\t\t\t\t\t\"SAN PABLO\",\n\t\t\t\t\t\t\t\t\"SAN RAFAEL\",\n\t\t\t\t\t\t\t\t\"VILLA QUIRINO\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"SAN ILDEFONSO\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ARNAP\",\n\t\t\t\t\t\t\t\t\"BAHET\",\n\t\t\t\t\t\t\t\t\"BELEN\",\n\t\t\t\t\t\t\t\t\"BUNGRO\",\n\t\t\t\t\t\t\t\t\"BUSIING NORTE\",\n\t\t\t\t\t\t\t\t\"BUSIING SUR\",\n\t\t\t\t\t\t\t\t\"DONGALO\",\n\t\t\t\t\t\t\t\t\"GONGOGONG\",\n\t\t\t\t\t\t\t\t\"IBOY\",\n\t\t\t\t\t\t\t\t\"KINAMANTIRISAN\",\n\t\t\t\t\t\t\t\t\"OTOL-PATAC\",\n\t\t\t\t\t\t\t\t\"POBLACION EAST\",\n\t\t\t\t\t\t\t\t\"POBLACION WEST\",\n\t\t\t\t\t\t\t\t\"SAGNEB\",\n\t\t\t\t\t\t\t\t\"SAGSAGAT\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"SAN JUAN (LAPOG)\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ASILANG\",\n\t\t\t\t\t\t\t\t\"BACSIL\",\n\t\t\t\t\t\t\t\t\"BALIW\",\n\t\t\t\t\t\t\t\t\"BANNUAR (POBLACION)\",\n\t\t\t\t\t\t\t\t\"BARBAR\",\n\t\t\t\t\t\t\t\t\"CABANGLOTAN\",\n\t\t\t\t\t\t\t\t\"CACANDONGAN\",\n\t\t\t\t\t\t\t\t\"CAMANGGAAN\",\n\t\t\t\t\t\t\t\t\"CAMINDOROAN\",\n\t\t\t\t\t\t\t\t\"CARONOAN\",\n\t\t\t\t\t\t\t\t\"DARAO\",\n\t\t\t\t\t\t\t\t\"DARDARAT\",\n\t\t\t\t\t\t\t\t\"GUIMOD NORTE\",\n\t\t\t\t\t\t\t\t\"GUIMOD SUR\",\n\t\t\t\t\t\t\t\t\"IMMAYOS NORTE\",\n\t\t\t\t\t\t\t\t\"IMMAYOS SUR\",\n\t\t\t\t\t\t\t\t\"LABNIG\",\n\t\t\t\t\t\t\t\t\"LAPTING\",\n\t\t\t\t\t\t\t\t\"LIRA (POBLACION)\",\n\t\t\t\t\t\t\t\t\"MALAMIN\",\n\t\t\t\t\t\t\t\t\"MURAYA\",\n\t\t\t\t\t\t\t\t\"NAGSABARAN\",\n\t\t\t\t\t\t\t\t\"NAGSUPOTAN\",\n\t\t\t\t\t\t\t\t\"PANDAYAN (POBLACION)\",\n\t\t\t\t\t\t\t\t\"REFARO\",\n\t\t\t\t\t\t\t\t\"RESURRECCION (POBLACION)\",\n\t\t\t\t\t\t\t\t\"SABANGAN\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO\",\n\t\t\t\t\t\t\t\t\"SAOANG\",\n\t\t\t\t\t\t\t\t\"SOLOTSOLOT\",\n\t\t\t\t\t\t\t\t\"SUNGGIAM\",\n\t\t\t\t\t\t\t\t\"SURNGIT\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"SAN VICENTE\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BANTAOAY\",\n\t\t\t\t\t\t\t\t\"BAYUBAY NORTE\",\n\t\t\t\t\t\t\t\t\"BAYUBAY SUR\",\n\t\t\t\t\t\t\t\t\"LUBONG\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"PUDOC\",\n\t\t\t\t\t\t\t\t\"SAN SEBASTIAN\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"SANTA\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"AMPANDULA\",\n\t\t\t\t\t\t\t\t\"BANAOANG\",\n\t\t\t\t\t\t\t\t\"BASUG\",\n\t\t\t\t\t\t\t\t\"BUCALAG\",\n\t\t\t\t\t\t\t\t\"CABANGARAN\",\n\t\t\t\t\t\t\t\t\"CALUNGBOYAN\",\n\t\t\t\t\t\t\t\t\"CASIBER\",\n\t\t\t\t\t\t\t\t\"DAMMAY\",\n\t\t\t\t\t\t\t\t\"LABUT NORTE\",\n\t\t\t\t\t\t\t\t\"LABUT SUR\",\n\t\t\t\t\t\t\t\t\"MABILBILA NORTE\",\n\t\t\t\t\t\t\t\t\"MABILBILA SUR\",\n\t\t\t\t\t\t\t\t\"MAGSAYSAY DISTRICT (POBLACION)\",\n\t\t\t\t\t\t\t\t\"MANUEVA\",\n\t\t\t\t\t\t\t\t\"MARCOS (POBLACION)\",\n\t\t\t\t\t\t\t\t\"NAGPANAOAN\",\n\t\t\t\t\t\t\t\t\"NAMALANGAN\",\n\t\t\t\t\t\t\t\t\"ORIBI\",\n\t\t\t\t\t\t\t\t\"PASUNGOL\",\n\t\t\t\t\t\t\t\t\"QUEZON (POBLACION)\",\n\t\t\t\t\t\t\t\t\"QUIRINO (POBLACION)\",\n\t\t\t\t\t\t\t\t\"RANCHO\",\n\t\t\t\t\t\t\t\t\"RIZAL\",\n\t\t\t\t\t\t\t\t\"SACUYYA NORTE\",\n\t\t\t\t\t\t\t\t\"SACUYYA SUR\",\n\t\t\t\t\t\t\t\t\"TABUCOLAN\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"SANTA CATALINA\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"CABAROAN\",\n\t\t\t\t\t\t\t\t\"CABITTAOGAN\",\n\t\t\t\t\t\t\t\t\"CABULOAN\",\n\t\t\t\t\t\t\t\t\"PANGADA\",\n\t\t\t\t\t\t\t\t\"PARATONG\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"SINABAAN\",\n\t\t\t\t\t\t\t\t\"SUBEC\",\n\t\t\t\t\t\t\t\t\"TAMORONG\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"SANTA CRUZ\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"AMARAO\",\n\t\t\t\t\t\t\t\t\"BABAYOAN\",\n\t\t\t\t\t\t\t\t\"BACSAYAN\",\n\t\t\t\t\t\t\t\t\"BANAY\",\n\t\t\t\t\t\t\t\t\"BAYUGAO ESTE\",\n\t\t\t\t\t\t\t\t\"BAYUGAO OESTE\",\n\t\t\t\t\t\t\t\t\"BESALAN\",\n\t\t\t\t\t\t\t\t\"BUGBUGA\",\n\t\t\t\t\t\t\t\t\"CALAOAAN\",\n\t\t\t\t\t\t\t\t\"CAMANGGAAN\",\n\t\t\t\t\t\t\t\t\"CANDALICAN\",\n\t\t\t\t\t\t\t\t\"CAPARIAAN\",\n\t\t\t\t\t\t\t\t\"CASILAGAN\",\n\t\t\t\t\t\t\t\t\"COSCOSNONG\",\n\t\t\t\t\t\t\t\t\"DALIGAN\",\n\t\t\t\t\t\t\t\t\"DILI\",\n\t\t\t\t\t\t\t\t\"GABOR NORTE\",\n\t\t\t\t\t\t\t\t\"GABOR SUR\",\n\t\t\t\t\t\t\t\t\"LALONG\",\n\t\t\t\t\t\t\t\t\"LANTAG\",\n\t\t\t\t\t\t\t\t\"LAS-UD\",\n\t\t\t\t\t\t\t\t\"MAMBOG\",\n\t\t\t\t\t\t\t\t\"MANTANAS\",\n\t\t\t\t\t\t\t\t\"NAGTENGNGA\",\n\t\t\t\t\t\t\t\t\"PADAOIL\",\n\t\t\t\t\t\t\t\t\"PARATONG\",\n\t\t\t\t\t\t\t\t\"PATTIQUI\",\n\t\t\t\t\t\t\t\t\"PIDPID\",\n\t\t\t\t\t\t\t\t\"PILAR\",\n\t\t\t\t\t\t\t\t\"PINIPIN\",\n\t\t\t\t\t\t\t\t\"POBLACION ESTE\",\n\t\t\t\t\t\t\t\t\"POBLACION NORTH\",\n\t\t\t\t\t\t\t\t\"POBLACION SUR\",\n\t\t\t\t\t\t\t\t\"POBLACION WESTE\",\n\t\t\t\t\t\t\t\t\"QUINFERMIN\",\n\t\t\t\t\t\t\t\t\"QUINSORIANO\",\n\t\t\t\t\t\t\t\t\"SAGAT\",\n\t\t\t\t\t\t\t\t\"SAN ANTONIO\",\n\t\t\t\t\t\t\t\t\"SAN JOSE\",\n\t\t\t\t\t\t\t\t\"SAN PEDRO\",\n\t\t\t\t\t\t\t\t\"SAOAT\",\n\t\t\t\t\t\t\t\t\"SEVILLA\",\n\t\t\t\t\t\t\t\t\"SIDAOEN\",\n\t\t\t\t\t\t\t\t\"SUYO\",\n\t\t\t\t\t\t\t\t\"TAMPUGO\",\n\t\t\t\t\t\t\t\t\"TUROD\",\n\t\t\t\t\t\t\t\t\"VILLA GARCIA\",\n\t\t\t\t\t\t\t\t\"VILLA HERMOSA\",\n\t\t\t\t\t\t\t\t\"VILLA LAURENCIA\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"SANTA LUCIA\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ALINCAOEG\",\n\t\t\t\t\t\t\t\t\"ANGKILENG\",\n\t\t\t\t\t\t\t\t\"ARANGIN\",\n\t\t\t\t\t\t\t\t\"AYUSAN (POBLACION)\",\n\t\t\t\t\t\t\t\t\"BANBANABA\",\n\t\t\t\t\t\t\t\t\"BANI\",\n\t\t\t\t\t\t\t\t\"BAO-AS\",\n\t\t\t\t\t\t\t\t\"BARANGOBONG (POBLACION)\",\n\t\t\t\t\t\t\t\t\"BULICLIC\",\n\t\t\t\t\t\t\t\t\"BURGOS (POBLACION)\",\n\t\t\t\t\t\t\t\t\"CABARITAN\",\n\t\t\t\t\t\t\t\t\"CATAYAGAN\",\n\t\t\t\t\t\t\t\t\"CONCONIG EAST\",\n\t\t\t\t\t\t\t\t\"CONCONIG WEST\",\n\t\t\t\t\t\t\t\t\"DAMACUAG\",\n\t\t\t\t\t\t\t\t\"LUBA\",\n\t\t\t\t\t\t\t\t\"LUBONG\",\n\t\t\t\t\t\t\t\t\"NAGREBCAN\",\n\t\t\t\t\t\t\t\t\"NAGTABLAAN\",\n\t\t\t\t\t\t\t\t\"NAMATICAN\",\n\t\t\t\t\t\t\t\t\"NANGALISAN\",\n\t\t\t\t\t\t\t\t\"PALALI NORTE\",\n\t\t\t\t\t\t\t\t\"PALALI SUR\",\n\t\t\t\t\t\t\t\t\"PAOC NORTE\",\n\t\t\t\t\t\t\t\t\"PAOC SUR\",\n\t\t\t\t\t\t\t\t\"PARATONG\",\n\t\t\t\t\t\t\t\t\"PILA EAST\",\n\t\t\t\t\t\t\t\t\"PILA WEST\",\n\t\t\t\t\t\t\t\t\"QUINABALAYANGAN\",\n\t\t\t\t\t\t\t\t\"RONDA\",\n\t\t\t\t\t\t\t\t\"SABUANAN\",\n\t\t\t\t\t\t\t\t\"SAN JUAN\",\n\t\t\t\t\t\t\t\t\"SAN PEDRO\",\n\t\t\t\t\t\t\t\t\"SAPANG\",\n\t\t\t\t\t\t\t\t\"SUAGAYAN\",\n\t\t\t\t\t\t\t\t\"VICAL\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"SANTA MARIA\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"AG-AGRAO\",\n\t\t\t\t\t\t\t\t\"AMPUAGAN\",\n\t\t\t\t\t\t\t\t\"BABALLASIOAN\",\n\t\t\t\t\t\t\t\t\"BALIW DAYA\",\n\t\t\t\t\t\t\t\t\"BALIW LAUD\",\n\t\t\t\t\t\t\t\t\"BIA-O\",\n\t\t\t\t\t\t\t\t\"BUTIR\",\n\t\t\t\t\t\t\t\t\"CABAROAN\",\n\t\t\t\t\t\t\t\t\"DANUMAN EAST\",\n\t\t\t\t\t\t\t\t\"DANUMAN WEST\",\n\t\t\t\t\t\t\t\t\"DUNGLAYAN\",\n\t\t\t\t\t\t\t\t\"GUSING\",\n\t\t\t\t\t\t\t\t\"LANGAOAN\",\n\t\t\t\t\t\t\t\t\"LASLASONG NORTE\",\n\t\t\t\t\t\t\t\t\"LASLASONG SUR\",\n\t\t\t\t\t\t\t\t\"LASLASONG WEST\",\n\t\t\t\t\t\t\t\t\"LESSEB\",\n\t\t\t\t\t\t\t\t\"LINGSAT\",\n\t\t\t\t\t\t\t\t\"LUBONG\",\n\t\t\t\t\t\t\t\t\"MAYNGANAY NORTE\",\n\t\t\t\t\t\t\t\t\"MAYNGANAY SUR\",\n\t\t\t\t\t\t\t\t\"NAGSAYAOAN\",\n\t\t\t\t\t\t\t\t\"NAGTUPACAN\",\n\t\t\t\t\t\t\t\t\"NALVO\",\n\t\t\t\t\t\t\t\t\"PACANG\",\n\t\t\t\t\t\t\t\t\"PENNED\",\n\t\t\t\t\t\t\t\t\"POBLACION NORTE\",\n\t\t\t\t\t\t\t\t\"POBLACION SUR\",\n\t\t\t\t\t\t\t\t\"SILAG\",\n\t\t\t\t\t\t\t\t\"SUMAGUI\",\n\t\t\t\t\t\t\t\t\"SUSO\",\n\t\t\t\t\t\t\t\t\"TANGAOAN\",\n\t\t\t\t\t\t\t\t\"TINAAN\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"SANTIAGO\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"AL-ALUDIG\",\n\t\t\t\t\t\t\t\t\"AMBUCAO\",\n\t\t\t\t\t\t\t\t\"BAYBAYABAS\",\n\t\t\t\t\t\t\t\t\"BIGBIGA\",\n\t\t\t\t\t\t\t\t\"BULBULALA\",\n\t\t\t\t\t\t\t\t\"BUSEL-BUSEL\",\n\t\t\t\t\t\t\t\t\"BUTOL\",\n\t\t\t\t\t\t\t\t\"CABURAO\",\n\t\t\t\t\t\t\t\t\"DAN-AR\",\n\t\t\t\t\t\t\t\t\"GABAO\",\n\t\t\t\t\t\t\t\t\"GUINABANG\",\n\t\t\t\t\t\t\t\t\"IMUS\",\n\t\t\t\t\t\t\t\t\"LANG-AYAN\",\n\t\t\t\t\t\t\t\t\"MAMBUG\",\n\t\t\t\t\t\t\t\t\"NALASIN\",\n\t\t\t\t\t\t\t\t\"OLO-OLO NORTE\",\n\t\t\t\t\t\t\t\t\"OLO-OLO SUR\",\n\t\t\t\t\t\t\t\t\"POBLACION NORTE\",\n\t\t\t\t\t\t\t\t\"POBLACION SUR\",\n\t\t\t\t\t\t\t\t\"SABANGAN\",\n\t\t\t\t\t\t\t\t\"SALINCUB\",\n\t\t\t\t\t\t\t\t\"SAN JOSE (BARAOAS)\",\n\t\t\t\t\t\t\t\t\"SAN ROQUE\",\n\t\t\t\t\t\t\t\t\"UBBOG\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"SANTO DOMINGO\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BINALAYANGAN\",\n\t\t\t\t\t\t\t\t\"BINONGAN\",\n\t\t\t\t\t\t\t\t\"BOROBOR\",\n\t\t\t\t\t\t\t\t\"CABARITAN\",\n\t\t\t\t\t\t\t\t\"CABIGBIGAAN\",\n\t\t\t\t\t\t\t\t\"CALAUTIT\",\n\t\t\t\t\t\t\t\t\"CALAY-AB\",\n\t\t\t\t\t\t\t\t\"CAMESTIZOAN\",\n\t\t\t\t\t\t\t\t\"CASILI\",\n\t\t\t\t\t\t\t\t\"FLORA\",\n\t\t\t\t\t\t\t\t\"LAGATIT\",\n\t\t\t\t\t\t\t\t\"LAOINGEN\",\n\t\t\t\t\t\t\t\t\"LUSSOC\",\n\t\t\t\t\t\t\t\t\"NAGBETTEDAN\",\n\t\t\t\t\t\t\t\t\"NAGLAOA-AN\",\n\t\t\t\t\t\t\t\t\"NALASIN\",\n\t\t\t\t\t\t\t\t\"NAMBARAN\",\n\t\t\t\t\t\t\t\t\"NANERMAN\",\n\t\t\t\t\t\t\t\t\"NAPO\",\n\t\t\t\t\t\t\t\t\"PADU CHICO\",\n\t\t\t\t\t\t\t\t\"PADU GRANDE\",\n\t\t\t\t\t\t\t\t\"PAGURAPER\",\n\t\t\t\t\t\t\t\t\"PANAY\",\n\t\t\t\t\t\t\t\t\"PANGPANGDAN\",\n\t\t\t\t\t\t\t\t\"PARADA\",\n\t\t\t\t\t\t\t\t\"PARAS\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"PUERTA REAL\",\n\t\t\t\t\t\t\t\t\"PUSSUAC\",\n\t\t\t\t\t\t\t\t\"QUIMMARAYAN\",\n\t\t\t\t\t\t\t\t\"SAN PABLO\",\n\t\t\t\t\t\t\t\t\"SANTA CRUZ\",\n\t\t\t\t\t\t\t\t\"SANTO TOMAS\",\n\t\t\t\t\t\t\t\t\"SIVED\",\n\t\t\t\t\t\t\t\t\"SUKSUKIT\",\n\t\t\t\t\t\t\t\t\"VACUNERO\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"SIGAY\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ABACCAN\",\n\t\t\t\t\t\t\t\t\"MABILEG\",\n\t\t\t\t\t\t\t\t\"MATALLUCOD\",\n\t\t\t\t\t\t\t\t\"POBLACION (MADAYAW)\",\n\t\t\t\t\t\t\t\t\"SAN ELIAS\",\n\t\t\t\t\t\t\t\t\"SAN RAMON\",\n\t\t\t\t\t\t\t\t\"SANTO ROSARIO\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"SINAIT\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"AGUING\",\n\t\t\t\t\t\t\t\t\"BALIW\",\n\t\t\t\t\t\t\t\t\"BALLAIGUI (POBLACION)\",\n\t\t\t\t\t\t\t\t\"BARACBAC\",\n\t\t\t\t\t\t\t\t\"BARIKIR\",\n\t\t\t\t\t\t\t\t\"BATTOG\",\n\t\t\t\t\t\t\t\t\"BINACUD\",\n\t\t\t\t\t\t\t\t\"CABANGTALAN\",\n\t\t\t\t\t\t\t\t\"CABARAMBANAN\",\n\t\t\t\t\t\t\t\t\"CABULALAAN\",\n\t\t\t\t\t\t\t\t\"CADANGLAAN\",\n\t\t\t\t\t\t\t\t\"CALANUTIAN\",\n\t\t\t\t\t\t\t\t\"CALINGAYAN\",\n\t\t\t\t\t\t\t\t\"CURTIN\",\n\t\t\t\t\t\t\t\t\"DADALAQUITEN NORTE\",\n\t\t\t\t\t\t\t\t\"DADALAQUITEN SUR\",\n\t\t\t\t\t\t\t\t\"DEAN LEOPOLDO YABES (PUG-OS)\",\n\t\t\t\t\t\t\t\t\"DUYAYYAT\",\n\t\t\t\t\t\t\t\t\"JORDAN\",\n\t\t\t\t\t\t\t\t\"KATIPUNAN\",\n\t\t\t\t\t\t\t\t\"MACABIAG (POBLACION)\",\n\t\t\t\t\t\t\t\t\"MAGSAYSAY\",\n\t\t\t\t\t\t\t\t\"MARNAY\",\n\t\t\t\t\t\t\t\t\"MASADAG\",\n\t\t\t\t\t\t\t\t\"NAGBALIOARTIAN\",\n\t\t\t\t\t\t\t\t\"NAGCULLOOBAN\",\n\t\t\t\t\t\t\t\t\"NAGONGBURAN\",\n\t\t\t\t\t\t\t\t\"NAMNAMA (POBLACION)\",\n\t\t\t\t\t\t\t\t\"PACIS\",\n\t\t\t\t\t\t\t\t\"PARATONG\",\n\t\t\t\t\t\t\t\t\"PURAG\",\n\t\t\t\t\t\t\t\t\"QUIBIT-QUIBIT\",\n\t\t\t\t\t\t\t\t\"QUIMMALLOGONG\",\n\t\t\t\t\t\t\t\t\"RANG-AY (POBLACION)\",\n\t\t\t\t\t\t\t\t\"RICUDO\",\n\t\t\t\t\t\t\t\t\"SABA\u00D1GAN (MARCOS)\",\n\t\t\t\t\t\t\t\t\"SALLACAPO\",\n\t\t\t\t\t\t\t\t\"SANTA CRUZ\",\n\t\t\t\t\t\t\t\t\"SAPRIANA\",\n\t\t\t\t\t\t\t\t\"TAPAO\",\n\t\t\t\t\t\t\t\t\"TEPPENG\",\n\t\t\t\t\t\t\t\t\"TUBIGAY\",\n\t\t\t\t\t\t\t\t\"UBBOG\",\n\t\t\t\t\t\t\t\t\"ZAPAT\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"SUGPON\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BALBALAYANG (POBLACION)\",\n\t\t\t\t\t\t\t\t\"BANGA\",\n\t\t\t\t\t\t\t\t\"CAOAYAN\",\n\t\t\t\t\t\t\t\t\"DANAC\",\n\t\t\t\t\t\t\t\t\"LICUNGAN (CULLANG)\",\n\t\t\t\t\t\t\t\t\"PANGOTAN\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"SUYO\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BARINGCUCURONG\",\n\t\t\t\t\t\t\t\t\"CABUGAO\",\n\t\t\t\t\t\t\t\t\"MAN-ATONG\",\n\t\t\t\t\t\t\t\t\"PATOC-AO\",\n\t\t\t\t\t\t\t\t\"POBLACION (KIMPUSA)\",\n\t\t\t\t\t\t\t\t\"SUYO PROPER\",\n\t\t\t\t\t\t\t\t\"URZADAN\",\n\t\t\t\t\t\t\t\t\"USO\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"TAGUDIN\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"AG-AGUMAN\",\n\t\t\t\t\t\t\t\t\"AMBALAYAT\",\n\t\t\t\t\t\t\t\t\"BARACBAC\",\n\t\t\t\t\t\t\t\t\"BARIO-AN\",\n\t\t\t\t\t\t\t\t\"BARITAO\",\n\t\t\t\t\t\t\t\t\"BECQUES\",\n\t\t\t\t\t\t\t\t\"BIMMANGA\",\n\t\t\t\t\t\t\t\t\"BIO\",\n\t\t\t\t\t\t\t\t\"BITALAG\",\n\t\t\t\t\t\t\t\t\"BORONO\",\n\t\t\t\t\t\t\t\t\"BUCAO EAST\",\n\t\t\t\t\t\t\t\t\"BUCAO WEST\",\n\t\t\t\t\t\t\t\t\"CABAROAN\",\n\t\t\t\t\t\t\t\t\"CABUGBUGAN\",\n\t\t\t\t\t\t\t\t\"CABULANGLANGAN\",\n\t\t\t\t\t\t\t\t\"DACUTAN\",\n\t\t\t\t\t\t\t\t\"DARDARAT\",\n\t\t\t\t\t\t\t\t\"DEL PILAR (POBLACION)\",\n\t\t\t\t\t\t\t\t\"FAROLA\",\n\t\t\t\t\t\t\t\t\"GABUR\",\n\t\t\t\t\t\t\t\t\"GARITAN\",\n\t\t\t\t\t\t\t\t\"JARDIN\",\n\t\t\t\t\t\t\t\t\"LACONG\",\n\t\t\t\t\t\t\t\t\"LANTAG\",\n\t\t\t\t\t\t\t\t\"LAS-UD\",\n\t\t\t\t\t\t\t\t\"LIBTONG\",\n\t\t\t\t\t\t\t\t\"LUBNAC\",\n\t\t\t\t\t\t\t\t\"MAGSAYSAY (POBLACION)\",\n\t\t\t\t\t\t\t\t\"MALACA\u00D1ANG\",\n\t\t\t\t\t\t\t\t\"PACAC\",\n\t\t\t\t\t\t\t\t\"PALLOGAN\",\n\t\t\t\t\t\t\t\t\"PUDOC EAST\",\n\t\t\t\t\t\t\t\t\"PUDOC WEST\",\n\t\t\t\t\t\t\t\t\"PULA\",\n\t\t\t\t\t\t\t\t\"QUIRINO (POBLACION)\",\n\t\t\t\t\t\t\t\t\"RANGET\",\n\t\t\t\t\t\t\t\t\"RIZAL (POBLACION)\",\n\t\t\t\t\t\t\t\t\"SALVACION\",\n\t\t\t\t\t\t\t\t\"SAN MIGUEL\",\n\t\t\t\t\t\t\t\t\"SAWAT\",\n\t\t\t\t\t\t\t\t\"TALLAOEN\",\n\t\t\t\t\t\t\t\t\"TAMPUGO\",\n\t\t\t\t\t\t\t\t\"TARANGOTONG\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"VIGAN\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"AYUSAN NORTE\",\n\t\t\t\t\t\t\t\t\"AYUSAN SUR\",\n\t\t\t\t\t\t\t\t\"BARANGAY I (POBLACION)\",\n\t\t\t\t\t\t\t\t\"BARANGAY II (POBLACION)\",\n\t\t\t\t\t\t\t\t\"BARANGAY III (POBLACION)\",\n\t\t\t\t\t\t\t\t\"BARANGAY IV (POBLACION)\",\n\t\t\t\t\t\t\t\t\"BARANGAY IX\",\n\t\t\t\t\t\t\t\t\"BARANGAY V (POBLACION)\",\n\t\t\t\t\t\t\t\t\"BARANGAY VI (POBLACION)\",\n\t\t\t\t\t\t\t\t\"BARANGAY VII\",\n\t\t\t\t\t\t\t\t\"BARANGAY VIII\",\n\t\t\t\t\t\t\t\t\"BARRACA\",\n\t\t\t\t\t\t\t\t\"BEDDENG DAYA\",\n\t\t\t\t\t\t\t\t\"BEDDENG LAUD\",\n\t\t\t\t\t\t\t\t\"BONGTOLAN\",\n\t\t\t\t\t\t\t\t\"BULALA\",\n\t\t\t\t\t\t\t\t\"CABALANGEGAN\",\n\t\t\t\t\t\t\t\t\"CABAROAN DAYA\",\n\t\t\t\t\t\t\t\t\"CABAROAN LAUD\",\n\t\t\t\t\t\t\t\t\"CAMANGAAN\",\n\t\t\t\t\t\t\t\t\"CAPANGPANGAN\",\n\t\t\t\t\t\t\t\t\"MINDORO\",\n\t\t\t\t\t\t\t\t\"NAGSANGALAN\",\n\t\t\t\t\t\t\t\t\"PANTAY DAYA\",\n\t\t\t\t\t\t\t\t\"PANTAY FATIMA\",\n\t\t\t\t\t\t\t\t\"PANTAY LAUD\",\n\t\t\t\t\t\t\t\t\"PAOA\",\n\t\t\t\t\t\t\t\t\"PARATONG\",\n\t\t\t\t\t\t\t\t\"PONG-OL\",\n\t\t\t\t\t\t\t\t\"PUROK-A-BASSIT\",\n\t\t\t\t\t\t\t\t\"PUROK-A-DACKEL\",\n\t\t\t\t\t\t\t\t\"RAOIS\",\n\t\t\t\t\t\t\t\t\"RUGSUANAN\",\n\t\t\t\t\t\t\t\t\"SALINDEG\",\n\t\t\t\t\t\t\t\t\"SAN JOSE\",\n\t\t\t\t\t\t\t\t\"SAN JULIAN NORTE\",\n\t\t\t\t\t\t\t\t\"SAN JULIAN SUR\",\n\t\t\t\t\t\t\t\t\"SAN PEDRO\",\n\t\t\t\t\t\t\t\t\"TAMAG\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"LA UNION\",\n\t\t\t\t\t\"cities\": [{\n\t\t\t\t\t\t\t\"name\": \"AGOO\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"AMBITACAY\",\n\t\t\t\t\t\t\t\t\"BALAWARTE\",\n\t\t\t\t\t\t\t\t\"CAPAS\",\n\t\t\t\t\t\t\t\t\"CONSOLACION (POBLACION)\",\n\t\t\t\t\t\t\t\t\"MACALVA CENTRAL\",\n\t\t\t\t\t\t\t\t\"MACALVA NORTE\",\n\t\t\t\t\t\t\t\t\"MACALVA SUR\",\n\t\t\t\t\t\t\t\t\"NAZARENO\",\n\t\t\t\t\t\t\t\t\"PUROK\",\n\t\t\t\t\t\t\t\t\"SAN AGUSTIN EAST\",\n\t\t\t\t\t\t\t\t\"SAN AGUSTIN NORTE\",\n\t\t\t\t\t\t\t\t\"SAN AGUSTIN SUR\",\n\t\t\t\t\t\t\t\t\"SAN ANTONINO\",\n\t\t\t\t\t\t\t\t\"SAN ANTONIO\",\n\t\t\t\t\t\t\t\t\"SAN FRANCISCO\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO\",\n\t\t\t\t\t\t\t\t\"SAN JOAQUIN NORTE\",\n\t\t\t\t\t\t\t\t\"SAN JOAQUIN SUR\",\n\t\t\t\t\t\t\t\t\"SAN JOSE NORTE\",\n\t\t\t\t\t\t\t\t\"SAN JOSE SUR\",\n\t\t\t\t\t\t\t\t\"SAN JUAN\",\n\t\t\t\t\t\t\t\t\"SAN JULIAN CENTRAL\",\n\t\t\t\t\t\t\t\t\"SAN JULIAN EAST\",\n\t\t\t\t\t\t\t\t\"SAN JULIAN NORTE\",\n\t\t\t\t\t\t\t\t\"SAN JULIAN WEST\",\n\t\t\t\t\t\t\t\t\"SAN MANUEL NORTE\",\n\t\t\t\t\t\t\t\t\"SAN MANUEL SUR\",\n\t\t\t\t\t\t\t\t\"SAN MARCOS\",\n\t\t\t\t\t\t\t\t\"SAN MIGUEL\",\n\t\t\t\t\t\t\t\t\"SAN NICOLAS CENTRAL (POBLACION)\",\n\t\t\t\t\t\t\t\t\"SAN NICOLAS EAST\",\n\t\t\t\t\t\t\t\t\"SAN NICOLAS NORTE (POBLACION)\",\n\t\t\t\t\t\t\t\t\"SAN NICOLAS SUR (POBLACION)\",\n\t\t\t\t\t\t\t\t\"SAN NICOLAS WEST\",\n\t\t\t\t\t\t\t\t\"SAN PEDRO\",\n\t\t\t\t\t\t\t\t\"SAN ROQUE EAST\",\n\t\t\t\t\t\t\t\t\"SAN ROQUE WEST\",\n\t\t\t\t\t\t\t\t\"SAN VICENTE NORTE\",\n\t\t\t\t\t\t\t\t\"SAN VICENTE SUR\",\n\t\t\t\t\t\t\t\t\"SANTA ANA\",\n\t\t\t\t\t\t\t\t\"SANTA BARBARA (POBLACION)\",\n\t\t\t\t\t\t\t\t\"SANTA FE\",\n\t\t\t\t\t\t\t\t\"SANTA MARIA\",\n\t\t\t\t\t\t\t\t\"SANTA MONICA\",\n\t\t\t\t\t\t\t\t\"SANTA RITA (NALINAC)\",\n\t\t\t\t\t\t\t\t\"SANTA RITA EAST\",\n\t\t\t\t\t\t\t\t\"SANTA RITA NORTE\",\n\t\t\t\t\t\t\t\t\"SANTA RITA SUR\",\n\t\t\t\t\t\t\t\t\"SANTA RITA WEST\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"ARINGAY\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ALASKA\",\n\t\t\t\t\t\t\t\t\"BASCA\",\n\t\t\t\t\t\t\t\t\"DULAO\",\n\t\t\t\t\t\t\t\t\"GALLANO\",\n\t\t\t\t\t\t\t\t\"MACABATO\",\n\t\t\t\t\t\t\t\t\"MANGA\",\n\t\t\t\t\t\t\t\t\"PANGAO-AOAN EAST\",\n\t\t\t\t\t\t\t\t\"PANGAO-AOAN WEST\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"SAMARA\",\n\t\t\t\t\t\t\t\t\"SAN ANTONIO\",\n\t\t\t\t\t\t\t\t\"SAN BENITO NORTE\",\n\t\t\t\t\t\t\t\t\"SAN BENITO SUR\",\n\t\t\t\t\t\t\t\t\"SAN EUGENIO\",\n\t\t\t\t\t\t\t\t\"SAN JUAN EAST\",\n\t\t\t\t\t\t\t\t\"SAN JUAN WEST\",\n\t\t\t\t\t\t\t\t\"SAN SIMON EAST\",\n\t\t\t\t\t\t\t\t\"SAN SIMON WEST\",\n\t\t\t\t\t\t\t\t\"SANTA CECILIA\",\n\t\t\t\t\t\t\t\t\"SANTA LUCIA\",\n\t\t\t\t\t\t\t\t\"SANTA RITA EAST\",\n\t\t\t\t\t\t\t\t\"SANTA RITA WEST\",\n\t\t\t\t\t\t\t\t\"SANTO ROSARIO EAST\",\n\t\t\t\t\t\t\t\t\"SANTO ROSARIO WEST\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"BACNOTAN\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"AGTIPAL\",\n\t\t\t\t\t\t\t\t\"AROSIP\",\n\t\t\t\t\t\t\t\t\"BACQUI\",\n\t\t\t\t\t\t\t\t\"BACSIL\",\n\t\t\t\t\t\t\t\t\"BAGUTOT\",\n\t\t\t\t\t\t\t\t\"BALLOGO\",\n\t\t\t\t\t\t\t\t\"BARORO\",\n\t\t\t\t\t\t\t\t\"BITALAG\",\n\t\t\t\t\t\t\t\t\"BULALA\",\n\t\t\t\t\t\t\t\t\"BURAYOC\",\n\t\t\t\t\t\t\t\t\"BUSSAOIT\",\n\t\t\t\t\t\t\t\t\"CABAROAN\",\n\t\t\t\t\t\t\t\t\"CABARSICAN\",\n\t\t\t\t\t\t\t\t\"CABUGAO\",\n\t\t\t\t\t\t\t\t\"CALAUTIT\",\n\t\t\t\t\t\t\t\t\"CARCARMAY\",\n\t\t\t\t\t\t\t\t\"CASIAMAN\",\n\t\t\t\t\t\t\t\t\"GALONGEN\",\n\t\t\t\t\t\t\t\t\"GUINABANG\",\n\t\t\t\t\t\t\t\t\"LEGLEG\",\n\t\t\t\t\t\t\t\t\"LISQUEB\",\n\t\t\t\t\t\t\t\t\"MABANENGBENG 1ST\",\n\t\t\t\t\t\t\t\t\"MABANENGBENG 2ND\",\n\t\t\t\t\t\t\t\t\"MARAGAYAP\",\n\t\t\t\t\t\t\t\t\"NAGATIRAN\",\n\t\t\t\t\t\t\t\t\"NAGSARABOAN\",\n\t\t\t\t\t\t\t\t\"NAGSIMBAANAN\",\n\t\t\t\t\t\t\t\t\"NANGALISAN\",\n\t\t\t\t\t\t\t\t\"NARRA\",\n\t\t\t\t\t\t\t\t\"ORTEGA\",\n\t\t\t\t\t\t\t\t\"OYA-OY\",\n\t\t\t\t\t\t\t\t\"PAAGAN\",\n\t\t\t\t\t\t\t\t\"PANDAN\",\n\t\t\t\t\t\t\t\t\"PANG-PANG\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"QUIRINO\",\n\t\t\t\t\t\t\t\t\"RAOIS\",\n\t\t\t\t\t\t\t\t\"SALINCOB\",\n\t\t\t\t\t\t\t\t\"SAN MARTIN\",\n\t\t\t\t\t\t\t\t\"SANTA CRUZ\",\n\t\t\t\t\t\t\t\t\"SANTA RITA\",\n\t\t\t\t\t\t\t\t\"SAPILANG\",\n\t\t\t\t\t\t\t\t\"SAYOAN\",\n\t\t\t\t\t\t\t\t\"SIPULO\",\n\t\t\t\t\t\t\t\t\"TAMMOCALAO\",\n\t\t\t\t\t\t\t\t\"UBBOG\",\n\t\t\t\t\t\t\t\t\"ZARAGOSA\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"BAGULIN\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ALIBANGSAY\",\n\t\t\t\t\t\t\t\t\"BAAY\",\n\t\t\t\t\t\t\t\t\"CAMBALY\",\n\t\t\t\t\t\t\t\t\"CARDIZ\",\n\t\t\t\t\t\t\t\t\"DAGUP\",\n\t\t\t\t\t\t\t\t\"LIBBO\",\n\t\t\t\t\t\t\t\t\"SUYO (POBLACION)\",\n\t\t\t\t\t\t\t\t\"TAGUDTUD\",\n\t\t\t\t\t\t\t\t\"TIO-ANGAN\",\n\t\t\t\t\t\t\t\t\"WALLAYAN\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"BALAOAN\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ALMEIDA\",\n\t\t\t\t\t\t\t\t\"ANTONINO\",\n\t\t\t\t\t\t\t\t\"APATUT\",\n\t\t\t\t\t\t\t\t\"AR-ARAMPANG\",\n\t\t\t\t\t\t\t\t\"BARACBAC ESTE\",\n\t\t\t\t\t\t\t\t\"BARACBAC OESTE\",\n\t\t\t\t\t\t\t\t\"BET-ANG\",\n\t\t\t\t\t\t\t\t\"BULBULALA\",\n\t\t\t\t\t\t\t\t\"BUNGOL\",\n\t\t\t\t\t\t\t\t\"BUTUBUT ESTE\",\n\t\t\t\t\t\t\t\t\"BUTUBUT NORTE\",\n\t\t\t\t\t\t\t\t\"BUTUBUT OESTE\",\n\t\t\t\t\t\t\t\t\"BUTUBUT SUR\",\n\t\t\t\t\t\t\t\t\"CABUAAN OESTE (POBLACION)\",\n\t\t\t\t\t\t\t\t\"CALLIAT\",\n\t\t\t\t\t\t\t\t\"CALUNGBUYAN\",\n\t\t\t\t\t\t\t\t\"CAMILING\",\n\t\t\t\t\t\t\t\t\"DR. CAMILO OSIAS POBLACION (CABUAAN ESTE)\",\n\t\t\t\t\t\t\t\t\"GUINABURAN\",\n\t\t\t\t\t\t\t\t\"MASUPE\",\n\t\t\t\t\t\t\t\t\"NAGSABARAN NORTE\",\n\t\t\t\t\t\t\t\t\"NAGSABARAN SUR\",\n\t\t\t\t\t\t\t\t\"NALASIN\",\n\t\t\t\t\t\t\t\t\"NAPASET\",\n\t\t\t\t\t\t\t\t\"PA-O\",\n\t\t\t\t\t\t\t\t\"PAGBENNECAN\",\n\t\t\t\t\t\t\t\t\"PAGLEDDEGAN\",\n\t\t\t\t\t\t\t\t\"PANTAR NORTE\",\n\t\t\t\t\t\t\t\t\"PANTAR SUR\",\n\t\t\t\t\t\t\t\t\"PARAOIR\",\n\t\t\t\t\t\t\t\t\"PATPATA\",\n\t\t\t\t\t\t\t\t\"SABLUT\",\n\t\t\t\t\t\t\t\t\"SAN PABLO\",\n\t\t\t\t\t\t\t\t\"SINAPANGAN NORTE\",\n\t\t\t\t\t\t\t\t\"SINAPANGAN SUR\",\n\t\t\t\t\t\t\t\t\"TALLIPUGO\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"BANGAR\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"AGDEPPA\",\n\t\t\t\t\t\t\t\t\"ALZATE\",\n\t\t\t\t\t\t\t\t\"BANGAOILAN EAST\",\n\t\t\t\t\t\t\t\t\"BANGAOILAN WEST\",\n\t\t\t\t\t\t\t\t\"BARRACA\",\n\t\t\t\t\t\t\t\t\"CADAPLI\",\n\t\t\t\t\t\t\t\t\"CAGGAO\",\n\t\t\t\t\t\t\t\t\"CENTRAL EAST NO. 1 (POBLACION)\",\n\t\t\t\t\t\t\t\t\"CENTRAL EAST NO. 2 (POBLACION)\",\n\t\t\t\t\t\t\t\t\"CENTRAL WEST NO. 1 (POBLACION)\",\n\t\t\t\t\t\t\t\t\"CENTRAL WEST NO. 2 (POBLACION)\",\n\t\t\t\t\t\t\t\t\"CENTRAL WEST NO. 3 (POBLACION)\",\n\t\t\t\t\t\t\t\t\"CONSUEGRA\",\n\t\t\t\t\t\t\t\t\"GENERAL PRIM EAST\",\n\t\t\t\t\t\t\t\t\"GENERAL PRIM WEST\",\n\t\t\t\t\t\t\t\t\"GENERAL TERRERO\",\n\t\t\t\t\t\t\t\t\"LUZONG NORTE\",\n\t\t\t\t\t\t\t\t\"LUZONG SUR\",\n\t\t\t\t\t\t\t\t\"MARIA CRISTINA EAST\",\n\t\t\t\t\t\t\t\t\"MARIA CRISTINA WEST\",\n\t\t\t\t\t\t\t\t\"MINDORO\",\n\t\t\t\t\t\t\t\t\"NAGSABARAN\",\n\t\t\t\t\t\t\t\t\"PARATONG NO. 3\",\n\t\t\t\t\t\t\t\t\"PARATONG NO. 4\",\n\t\t\t\t\t\t\t\t\"PARATONG NORTE\",\n\t\t\t\t\t\t\t\t\"QUINTARONG\",\n\t\t\t\t\t\t\t\t\"REYNA REGENTE\",\n\t\t\t\t\t\t\t\t\"RISSING\",\n\t\t\t\t\t\t\t\t\"SAN BLAS\",\n\t\t\t\t\t\t\t\t\"SAN CRISTOBAL\",\n\t\t\t\t\t\t\t\t\"SINAPANGAN NORTE\",\n\t\t\t\t\t\t\t\t\"SINAPANGAN SUR\",\n\t\t\t\t\t\t\t\t\"UBBOG\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"BAUANG\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ACAO\",\n\t\t\t\t\t\t\t\t\"BACCUIT NORTE\",\n\t\t\t\t\t\t\t\t\"BACCUIT SUR\",\n\t\t\t\t\t\t\t\t\"BAGBAG\",\n\t\t\t\t\t\t\t\t\"BALLAY\",\n\t\t\t\t\t\t\t\t\"BAWANTA\",\n\t\t\t\t\t\t\t\t\"BOY-UTAN\",\n\t\t\t\t\t\t\t\t\"BUCAYAB\",\n\t\t\t\t\t\t\t\t\"CABALAYANGAN\",\n\t\t\t\t\t\t\t\t\"CABISILAN\",\n\t\t\t\t\t\t\t\t\"CALUMBAYA\",\n\t\t\t\t\t\t\t\t\"CARMAY\",\n\t\t\t\t\t\t\t\t\"CASILAGAN\",\n\t\t\t\t\t\t\t\t\"CENTRAL EAST (POBLACION)\",\n\t\t\t\t\t\t\t\t\"CENTRAL WEST (POBLACION)\",\n\t\t\t\t\t\t\t\t\"DILI\",\n\t\t\t\t\t\t\t\t\"DISSO-OR\",\n\t\t\t\t\t\t\t\t\"GUERRERO\",\n\t\t\t\t\t\t\t\t\"LOWER SAN AGUSTIN\",\n\t\t\t\t\t\t\t\t\"NAGREBCAN\",\n\t\t\t\t\t\t\t\t\"PAGDALAGAN SUR\",\n\t\t\t\t\t\t\t\t\"PALINTUCANG\",\n\t\t\t\t\t\t\t\t\"PALUGSI-LIMMANSANGAN\",\n\t\t\t\t\t\t\t\t\"PARIAN ESTE\",\n\t\t\t\t\t\t\t\t\"PARIAN OESTE\",\n\t\t\t\t\t\t\t\t\"PARINGAO\",\n\t\t\t\t\t\t\t\t\"PAYOCPOC NORTE ESTE\",\n\t\t\t\t\t\t\t\t\"PAYOCPOC NORTE OESTE\",\n\t\t\t\t\t\t\t\t\"PAYOCPOC SUR\",\n\t\t\t\t\t\t\t\t\"PILAR\",\n\t\t\t\t\t\t\t\t\"POTTOT\",\n\t\t\t\t\t\t\t\t\"PUDOC\",\n\t\t\t\t\t\t\t\t\"PUGO\",\n\t\t\t\t\t\t\t\t\"QUINAVITE\",\n\t\t\t\t\t\t\t\t\"SANTA MONICA\",\n\t\t\t\t\t\t\t\t\"SANTIAGO\",\n\t\t\t\t\t\t\t\t\"TABERNA\",\n\t\t\t\t\t\t\t\t\"UPPER SAN AGUSTIN\",\n\t\t\t\t\t\t\t\t\"URAYONG\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"BURGOS\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"AGPAY\",\n\t\t\t\t\t\t\t\t\"BILIS\",\n\t\t\t\t\t\t\t\t\"CAOAYAN\",\n\t\t\t\t\t\t\t\t\"DALACDAC\",\n\t\t\t\t\t\t\t\t\"DELLES\",\n\t\t\t\t\t\t\t\t\"IMELDA\",\n\t\t\t\t\t\t\t\t\"LIBTONG\",\n\t\t\t\t\t\t\t\t\"LINUAN\",\n\t\t\t\t\t\t\t\t\"LOWER TUMAPOC\",\n\t\t\t\t\t\t\t\t\"NEW POBLACION\",\n\t\t\t\t\t\t\t\t\"OLD POBLACION\",\n\t\t\t\t\t\t\t\t\"UPPER TUMAPOC\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"CABA\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BAUTISTA\",\n\t\t\t\t\t\t\t\t\"GANA\",\n\t\t\t\t\t\t\t\t\"JUAN CARTAS\",\n\t\t\t\t\t\t\t\t\"LAS-UD\",\n\t\t\t\t\t\t\t\t\"LIQUICIA\",\n\t\t\t\t\t\t\t\t\"POBLACION NORTE\",\n\t\t\t\t\t\t\t\t\"POBLACION SUR\",\n\t\t\t\t\t\t\t\t\"SAN CARLOS\",\n\t\t\t\t\t\t\t\t\"SAN CORNELIO\",\n\t\t\t\t\t\t\t\t\"SAN FERMIN\",\n\t\t\t\t\t\t\t\t\"SAN GREGORIO\",\n\t\t\t\t\t\t\t\t\"SAN JOSE\",\n\t\t\t\t\t\t\t\t\"SANTIAGO NORTE\",\n\t\t\t\t\t\t\t\t\"SANTIAGO SUR\",\n\t\t\t\t\t\t\t\t\"SOBREDILLO\",\n\t\t\t\t\t\t\t\t\"URAYONG\",\n\t\t\t\t\t\t\t\t\"WENCESLAO\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"LUNA\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ALCALA (POBLACION)\",\n\t\t\t\t\t\t\t\t\"AYAOAN\",\n\t\t\t\t\t\t\t\t\"BARANGOBONG\",\n\t\t\t\t\t\t\t\t\"BARRIENTOS\",\n\t\t\t\t\t\t\t\t\"BUNGRO\",\n\t\t\t\t\t\t\t\t\"BUSELBUSEL\",\n\t\t\t\t\t\t\t\t\"CABALITOCAN\",\n\t\t\t\t\t\t\t\t\"CANTORIA NO. 1\",\n\t\t\t\t\t\t\t\t\"CANTORIA NO. 2\",\n\t\t\t\t\t\t\t\t\"CANTORIA NO. 3\",\n\t\t\t\t\t\t\t\t\"CANTORIA NO. 4\",\n\t\t\t\t\t\t\t\t\"CARISQUIS\",\n\t\t\t\t\t\t\t\t\"DARIGAYOS\",\n\t\t\t\t\t\t\t\t\"MAGALLANES (POBLACION)\",\n\t\t\t\t\t\t\t\t\"MAGSIPING\",\n\t\t\t\t\t\t\t\t\"MAMAY\",\n\t\t\t\t\t\t\t\t\"NAGREBCAN\",\n\t\t\t\t\t\t\t\t\"NALVO NORTE\",\n\t\t\t\t\t\t\t\t\"NALVO SUR\",\n\t\t\t\t\t\t\t\t\"NAPASET\",\n\t\t\t\t\t\t\t\t\"OAQUI NO. 1\",\n\t\t\t\t\t\t\t\t\"OAQUI NO. 2\",\n\t\t\t\t\t\t\t\t\"OAQUI NO. 3\",\n\t\t\t\t\t\t\t\t\"OAQUI NO. 4\",\n\t\t\t\t\t\t\t\t\"PILA\",\n\t\t\t\t\t\t\t\t\"PITPITAC\",\n\t\t\t\t\t\t\t\t\"RIMOS NO. 1\",\n\t\t\t\t\t\t\t\t\"RIMOS NO. 2\",\n\t\t\t\t\t\t\t\t\"RIMOS NO. 3\",\n\t\t\t\t\t\t\t\t\"RIMOS NO. 4\",\n\t\t\t\t\t\t\t\t\"RIMOS NO. 5\",\n\t\t\t\t\t\t\t\t\"RISSING\",\n\t\t\t\t\t\t\t\t\"SALCEDO (POBLACION)\",\n\t\t\t\t\t\t\t\t\"SANTO DOMINGO NORTE\",\n\t\t\t\t\t\t\t\t\"SANTO DOMINGO SUR\",\n\t\t\t\t\t\t\t\t\"SUCOC NORTE\",\n\t\t\t\t\t\t\t\t\"SUCOC SUR\",\n\t\t\t\t\t\t\t\t\"SUYO\",\n\t\t\t\t\t\t\t\t\"TALLAOEN\",\n\t\t\t\t\t\t\t\t\"VICTORIA (POBLACION)\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"NAGUILIAN\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"AGUIOAS\",\n\t\t\t\t\t\t\t\t\"AL-ALINAO NORTE\",\n\t\t\t\t\t\t\t\t\"AL-ALINAO SUR\",\n\t\t\t\t\t\t\t\t\"AMBARACAO NORTE\",\n\t\t\t\t\t\t\t\t\"AMBARACAO SUR\",\n\t\t\t\t\t\t\t\t\"ANGIN\",\n\t\t\t\t\t\t\t\t\"BALECBEC\",\n\t\t\t\t\t\t\t\t\"BANCAGAN\",\n\t\t\t\t\t\t\t\t\"BARAOAS NORTE\",\n\t\t\t\t\t\t\t\t\"BARAOAS SUR\",\n\t\t\t\t\t\t\t\t\"BARIQUIR\",\n\t\t\t\t\t\t\t\t\"BATO\",\n\t\t\t\t\t\t\t\t\"BIMMOTOBOT\",\n\t\t\t\t\t\t\t\t\"CABARITAN NORTE\",\n\t\t\t\t\t\t\t\t\"CABARITAN SUR\",\n\t\t\t\t\t\t\t\t\"CASILAGAN\",\n\t\t\t\t\t\t\t\t\"DAL-LIPAOEN\",\n\t\t\t\t\t\t\t\t\"DARAMUANGAN\",\n\t\t\t\t\t\t\t\t\"GUESSET\",\n\t\t\t\t\t\t\t\t\"GUSING NORTE\",\n\t\t\t\t\t\t\t\t\"GUSING SUR\",\n\t\t\t\t\t\t\t\t\"IMELDA\",\n\t\t\t\t\t\t\t\t\"LIOAC NORTE\",\n\t\t\t\t\t\t\t\t\"LIOAC SUR\",\n\t\t\t\t\t\t\t\t\"MAGUNGUNAY\",\n\t\t\t\t\t\t\t\t\"MAMAT-ING NORTE\",\n\t\t\t\t\t\t\t\t\"MAMAT-ING SUR\",\n\t\t\t\t\t\t\t\t\"NAGSIDORISAN\",\n\t\t\t\t\t\t\t\t\"NATIVIDAD (POBLACION)\",\n\t\t\t\t\t\t\t\t\"ORTIZ (POBLACION)\",\n\t\t\t\t\t\t\t\t\"RIBSUAN\",\n\t\t\t\t\t\t\t\t\"SAN ANTONIO\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO\",\n\t\t\t\t\t\t\t\t\"SILI\",\n\t\t\t\t\t\t\t\t\"SUGUIDAN NORTE\",\n\t\t\t\t\t\t\t\t\"SUGUIDAN SUR\",\n\t\t\t\t\t\t\t\t\"TUDDINGAN\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"PUGO\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"AMBALITE\",\n\t\t\t\t\t\t\t\t\"AMBANGONAN\",\n\t\t\t\t\t\t\t\t\"CARES\",\n\t\t\t\t\t\t\t\t\"CUENCA\",\n\t\t\t\t\t\t\t\t\"DUPLAS\",\n\t\t\t\t\t\t\t\t\"MAOASOAS NORTE\",\n\t\t\t\t\t\t\t\t\"MAOASOAS SUR\",\n\t\t\t\t\t\t\t\t\"PALINA\",\n\t\t\t\t\t\t\t\t\"POBLACION EAST\",\n\t\t\t\t\t\t\t\t\"POBLACION WEST\",\n\t\t\t\t\t\t\t\t\"SAN LUIS\",\n\t\t\t\t\t\t\t\t\"SAYTAN\",\n\t\t\t\t\t\t\t\t\"TAVORA EAST\",\n\t\t\t\t\t\t\t\t\"TAVORA PROPER\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"ROSARIO\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ALIPANG\",\n\t\t\t\t\t\t\t\t\"AMBANGONAN\",\n\t\t\t\t\t\t\t\t\"AMLANG\",\n\t\t\t\t\t\t\t\t\"BACANI\",\n\t\t\t\t\t\t\t\t\"BANGAR\",\n\t\t\t\t\t\t\t\t\"BANI\",\n\t\t\t\t\t\t\t\t\"BENTENG-SAPILANG\",\n\t\t\t\t\t\t\t\t\"CADUMANIAN\",\n\t\t\t\t\t\t\t\t\"CAMP ONE\",\n\t\t\t\t\t\t\t\t\"CARUNUAN EAST\",\n\t\t\t\t\t\t\t\t\"CARUNUAN WEST\",\n\t\t\t\t\t\t\t\t\"CASILAGAN\",\n\t\t\t\t\t\t\t\t\"CATAGUINGTINGAN\",\n\t\t\t\t\t\t\t\t\"CONCEPCION\",\n\t\t\t\t\t\t\t\t\"DAMORTIS\",\n\t\t\t\t\t\t\t\t\"GUMOT-NAGCOLARAN\",\n\t\t\t\t\t\t\t\t\"INABAAN NORTE\",\n\t\t\t\t\t\t\t\t\"INABAAN SUR\",\n\t\t\t\t\t\t\t\t\"MARCOS\",\n\t\t\t\t\t\t\t\t\"NAGTAGAAN\",\n\t\t\t\t\t\t\t\t\"NANCAMOTIAN\",\n\t\t\t\t\t\t\t\t\"PARASAPAS\",\n\t\t\t\t\t\t\t\t\"POBLACION EAST\",\n\t\t\t\t\t\t\t\t\"POBLACION WEST\",\n\t\t\t\t\t\t\t\t\"PUZON\",\n\t\t\t\t\t\t\t\t\"RABON\",\n\t\t\t\t\t\t\t\t\"SAN JOSE\",\n\t\t\t\t\t\t\t\t\"SUBUSUB\",\n\t\t\t\t\t\t\t\t\"TABTABUNGAO\",\n\t\t\t\t\t\t\t\t\"TANGLAG\",\n\t\t\t\t\t\t\t\t\"TAY-AC\",\n\t\t\t\t\t\t\t\t\"UDIAO\",\n\t\t\t\t\t\t\t\t\"VILA\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"SAN FERNANDO\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ABUT\",\n\t\t\t\t\t\t\t\t\"APALENG\",\n\t\t\t\t\t\t\t\t\"BACSIL\",\n\t\t\t\t\t\t\t\t\"BANGBANGOLAN\",\n\t\t\t\t\t\t\t\t\"BANGCUSAY\",\n\t\t\t\t\t\t\t\t\"BARANGAY I (POBLACION)\",\n\t\t\t\t\t\t\t\t\"BARANGAY II (POBLACION)\",\n\t\t\t\t\t\t\t\t\"BARANGAY III (POBLACION)\",\n\t\t\t\t\t\t\t\t\"BARANGAY IV (POBLACION)\",\n\t\t\t\t\t\t\t\t\"BARAOAS\",\n\t\t\t\t\t\t\t\t\"BATO\",\n\t\t\t\t\t\t\t\t\"BIDAY\",\n\t\t\t\t\t\t\t\t\"BIRUNGET\",\n\t\t\t\t\t\t\t\t\"BUNGRO\",\n\t\t\t\t\t\t\t\t\"CABAROAN (NEGRO)\",\n\t\t\t\t\t\t\t\t\"CABARSICAN\",\n\t\t\t\t\t\t\t\t\"CADACLAN\",\n\t\t\t\t\t\t\t\t\"CALABUGAO\",\n\t\t\t\t\t\t\t\t\"CAMANSI\",\n\t\t\t\t\t\t\t\t\"CANAOAY\",\n\t\t\t\t\t\t\t\t\"CARLATAN\",\n\t\t\t\t\t\t\t\t\"CATBANGEN\",\n\t\t\t\t\t\t\t\t\"DALLANGAYAN ESTE\",\n\t\t\t\t\t\t\t\t\"DALLANGAYAN OESTE\",\n\t\t\t\t\t\t\t\t\"DALUMPINAS ESTE\",\n\t\t\t\t\t\t\t\t\"DALUMPINAS OESTE\",\n\t\t\t\t\t\t\t\t\"ILOCANOS NORTE\",\n\t\t\t\t\t\t\t\t\"ILOCANOS SUR\",\n\t\t\t\t\t\t\t\t\"LANGCUAS\",\n\t\t\t\t\t\t\t\t\"LINGSAT\",\n\t\t\t\t\t\t\t\t\"MADAYEGDEG\",\n\t\t\t\t\t\t\t\t\"MAMELTAC\",\n\t\t\t\t\t\t\t\t\"MASICONG\",\n\t\t\t\t\t\t\t\t\"NAGYUBUYUBAN\",\n\t\t\t\t\t\t\t\t\"NAMTUTAN\",\n\t\t\t\t\t\t\t\t\"NARRA ESTE\",\n\t\t\t\t\t\t\t\t\"NARRA OESTE\",\n\t\t\t\t\t\t\t\t\"PACPACO\",\n\t\t\t\t\t\t\t\t\"PAGDALAGAN\",\n\t\t\t\t\t\t\t\t\"PAGDARAOAN\",\n\t\t\t\t\t\t\t\t\"PAGUDPUD\",\n\t\t\t\t\t\t\t\t\"PAO NORTE\",\n\t\t\t\t\t\t\t\t\"PAO SUR\",\n\t\t\t\t\t\t\t\t\"PARIAN\",\n\t\t\t\t\t\t\t\t\"PIAS\",\n\t\t\t\t\t\t\t\t\"PORO\",\n\t\t\t\t\t\t\t\t\"PUSPUS\",\n\t\t\t\t\t\t\t\t\"SACYUD\",\n\t\t\t\t\t\t\t\t\"SAGAYAD\",\n\t\t\t\t\t\t\t\t\"SAN AGUSTIN\",\n\t\t\t\t\t\t\t\t\"SAN FRANCISCO\",\n\t\t\t\t\t\t\t\t\"SAN VICENTE\",\n\t\t\t\t\t\t\t\t\"SANTIAGO NORTE\",\n\t\t\t\t\t\t\t\t\"SANTIAGO SUR\",\n\t\t\t\t\t\t\t\t\"SAOAY\",\n\t\t\t\t\t\t\t\t\"SEVILLA\",\n\t\t\t\t\t\t\t\t\"SIBOAN-OTONG\",\n\t\t\t\t\t\t\t\t\"TANQUI\",\n\t\t\t\t\t\t\t\t\"TANQUIGAN\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"SAN GABRIEL\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"AMONTOC\",\n\t\t\t\t\t\t\t\t\"APAYAO\",\n\t\t\t\t\t\t\t\t\"BALBALAYANG\",\n\t\t\t\t\t\t\t\t\"BAYABAS\",\n\t\t\t\t\t\t\t\t\"BUCAO\",\n\t\t\t\t\t\t\t\t\"BUMBUNEG\",\n\t\t\t\t\t\t\t\t\"DAKING\",\n\t\t\t\t\t\t\t\t\"LACONG\",\n\t\t\t\t\t\t\t\t\"LIPAY ESTE\",\n\t\t\t\t\t\t\t\t\"LIPAY NORTE\",\n\t\t\t\t\t\t\t\t\"LIPAY PROPER\",\n\t\t\t\t\t\t\t\t\"LIPAY SUR\",\n\t\t\t\t\t\t\t\t\"LON-OY\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"POLIPOL\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"SAN JUAN\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ALLANGIGAN\",\n\t\t\t\t\t\t\t\t\"ALUDAID\",\n\t\t\t\t\t\t\t\t\"BACSAYAN\",\n\t\t\t\t\t\t\t\t\"BALBALLOSA\",\n\t\t\t\t\t\t\t\t\"BAMBANAY\",\n\t\t\t\t\t\t\t\t\"BUGBUGCAO\",\n\t\t\t\t\t\t\t\t\"CAARUSIPAN\",\n\t\t\t\t\t\t\t\t\"CABAROAN\",\n\t\t\t\t\t\t\t\t\"CABUGNAYAN\",\n\t\t\t\t\t\t\t\t\"CACAPIAN\",\n\t\t\t\t\t\t\t\t\"CACULANGAN\",\n\t\t\t\t\t\t\t\t\"CALINCAMASAN\",\n\t\t\t\t\t\t\t\t\"CASILAGAN\",\n\t\t\t\t\t\t\t\t\"CATDONGAN\",\n\t\t\t\t\t\t\t\t\"DANGDANGLA\",\n\t\t\t\t\t\t\t\t\"DASAY\",\n\t\t\t\t\t\t\t\t\"DINANUM\",\n\t\t\t\t\t\t\t\t\"DUPLAS\",\n\t\t\t\t\t\t\t\t\"GUINGUINABANG\",\n\t\t\t\t\t\t\t\t\"ILI NORTE (POBLACION)\",\n\t\t\t\t\t\t\t\t\"ILI SUR (POBLACION)\",\n\t\t\t\t\t\t\t\t\"LEGLEG\",\n\t\t\t\t\t\t\t\t\"LUBING\",\n\t\t\t\t\t\t\t\t\"NADSAAG\",\n\t\t\t\t\t\t\t\t\"NAGSABARAN\",\n\t\t\t\t\t\t\t\t\"NAGUIRANGAN\",\n\t\t\t\t\t\t\t\t\"NAGUITUBAN\",\n\t\t\t\t\t\t\t\t\"NAGYUBUYUBAN\",\n\t\t\t\t\t\t\t\t\"OAQUING\",\n\t\t\t\t\t\t\t\t\"PACPACAC\",\n\t\t\t\t\t\t\t\t\"PAGDILDILAN\",\n\t\t\t\t\t\t\t\t\"PANICSICAN\",\n\t\t\t\t\t\t\t\t\"QUIDEM\",\n\t\t\t\t\t\t\t\t\"SAN FELIPE\",\n\t\t\t\t\t\t\t\t\"SANTA ROSA\",\n\t\t\t\t\t\t\t\t\"SANTO ROSARIO\",\n\t\t\t\t\t\t\t\t\"SARACAT\",\n\t\t\t\t\t\t\t\t\"SINAPANGAN\",\n\t\t\t\t\t\t\t\t\"TABOC\",\n\t\t\t\t\t\t\t\t\"TALOGTOG\",\n\t\t\t\t\t\t\t\t\"URBIZTONDO\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"SANTO TOMAS\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"AMBITACAY\",\n\t\t\t\t\t\t\t\t\"BAIL\",\n\t\t\t\t\t\t\t\t\"BALAOC\",\n\t\t\t\t\t\t\t\t\"BALSAAN\",\n\t\t\t\t\t\t\t\t\"BAYBAY\",\n\t\t\t\t\t\t\t\t\"CABARUAN\",\n\t\t\t\t\t\t\t\t\"CASANTAAN\",\n\t\t\t\t\t\t\t\t\"CASILAGAN\",\n\t\t\t\t\t\t\t\t\"CUPANG\",\n\t\t\t\t\t\t\t\t\"DAMORTIS\",\n\t\t\t\t\t\t\t\t\"FERNANDO\",\n\t\t\t\t\t\t\t\t\"LINONG\",\n\t\t\t\t\t\t\t\t\"LOMBOY\",\n\t\t\t\t\t\t\t\t\"MALABAGO\",\n\t\t\t\t\t\t\t\t\"NAMBOONGAN\",\n\t\t\t\t\t\t\t\t\"NAMONITAN\",\n\t\t\t\t\t\t\t\t\"NARVACAN\",\n\t\t\t\t\t\t\t\t\"PATAC\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"PONGPONG\",\n\t\t\t\t\t\t\t\t\"RAOIS\",\n\t\t\t\t\t\t\t\t\"TOCOC\",\n\t\t\t\t\t\t\t\t\"TUBOD\",\n\t\t\t\t\t\t\t\t\"UBAGAN\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"SANTOL\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"CORROOY\",\n\t\t\t\t\t\t\t\t\"LETTAC NORTE\",\n\t\t\t\t\t\t\t\t\"LETTAC SUR\",\n\t\t\t\t\t\t\t\t\"MANGAAN\",\n\t\t\t\t\t\t\t\t\"PAAGAN\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"PUGUIL\",\n\t\t\t\t\t\t\t\t\"RAMOT\",\n\t\t\t\t\t\t\t\t\"SAPDAAN\",\n\t\t\t\t\t\t\t\t\"SASABA\",\n\t\t\t\t\t\t\t\t\"TUBADAY\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"SUDIPEN\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BIGBIGA\",\n\t\t\t\t\t\t\t\t\"BULALAAN\",\n\t\t\t\t\t\t\t\t\"CASTRO\",\n\t\t\t\t\t\t\t\t\"DUPLAS\",\n\t\t\t\t\t\t\t\t\"ILOCANO\",\n\t\t\t\t\t\t\t\t\"IPET\",\n\t\t\t\t\t\t\t\t\"MALICLICO\",\n\t\t\t\t\t\t\t\t\"NAMALTUGAN\",\n\t\t\t\t\t\t\t\t\"OLD CENTRAL\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"PORPORIKET\",\n\t\t\t\t\t\t\t\t\"SAN FRANCISCO NORTE\",\n\t\t\t\t\t\t\t\t\"SAN FRANCISCO SUR\",\n\t\t\t\t\t\t\t\t\"SAN JOSE\",\n\t\t\t\t\t\t\t\t\"SENGNGAT\",\n\t\t\t\t\t\t\t\t\"TUROD\",\n\t\t\t\t\t\t\t\t\"UP-UPLAS\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"TUBAO\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"AMALLAPAY\",\n\t\t\t\t\t\t\t\t\"ANDUYAN\",\n\t\t\t\t\t\t\t\t\"CAOIGUE\",\n\t\t\t\t\t\t\t\t\"FRANCIA SUR\",\n\t\t\t\t\t\t\t\t\"FRANCIA WEST\",\n\t\t\t\t\t\t\t\t\"GARCIA\",\n\t\t\t\t\t\t\t\t\"GONZALES\",\n\t\t\t\t\t\t\t\t\"HALOG EAST\",\n\t\t\t\t\t\t\t\t\"HALOG WEST\",\n\t\t\t\t\t\t\t\t\"LEONES EAST\",\n\t\t\t\t\t\t\t\t\"LEONES WEST\",\n\t\t\t\t\t\t\t\t\"LINAPEW\",\n\t\t\t\t\t\t\t\t\"LLOREN\",\n\t\t\t\t\t\t\t\t\"MAGSAYSAY\",\n\t\t\t\t\t\t\t\t\"PIDEG\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"RIZAL\",\n\t\t\t\t\t\t\t\t\"SANTA TERESA\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"PANGASINAN\",\n\t\t\t\t\t\"cities\": [{\n\t\t\t\t\t\t\t\"name\": \"AGNO\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ALLABON\",\n\t\t\t\t\t\t\t\t\"ALOLENG\",\n\t\t\t\t\t\t\t\t\"BANGAN-ODA\",\n\t\t\t\t\t\t\t\t\"BARUAN\",\n\t\t\t\t\t\t\t\t\"BOBOY\",\n\t\t\t\t\t\t\t\t\"CAYUNGNAN\",\n\t\t\t\t\t\t\t\t\"DANGLEY\",\n\t\t\t\t\t\t\t\t\"GAYUSAN\",\n\t\t\t\t\t\t\t\t\"MACABOBONI\",\n\t\t\t\t\t\t\t\t\"MAGSAYSAY\",\n\t\t\t\t\t\t\t\t\"NAMATUCAN\",\n\t\t\t\t\t\t\t\t\"PATAR\",\n\t\t\t\t\t\t\t\t\"POBLACION EAST\",\n\t\t\t\t\t\t\t\t\"POBLACION WEST\",\n\t\t\t\t\t\t\t\t\"SAN JUAN\",\n\t\t\t\t\t\t\t\t\"TUPA\",\n\t\t\t\t\t\t\t\t\"VIGA\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"AGUILAR\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BAYAOAS\",\n\t\t\t\t\t\t\t\t\"BAYBAY\",\n\t\t\t\t\t\t\t\t\"BOCACLIW\",\n\t\t\t\t\t\t\t\t\"BOCBOC EAST\",\n\t\t\t\t\t\t\t\t\"BOCBOC WEST\",\n\t\t\t\t\t\t\t\t\"BUER\",\n\t\t\t\t\t\t\t\t\"CALSIB\",\n\t\t\t\t\t\t\t\t\"LAOAG\",\n\t\t\t\t\t\t\t\t\"MANLOCBOC\",\n\t\t\t\t\t\t\t\t\"NI\u00D1OY\",\n\t\t\t\t\t\t\t\t\"PANACOL\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"POGOMBOA\",\n\t\t\t\t\t\t\t\t\"POGONSILI\",\n\t\t\t\t\t\t\t\t\"SAN JOSE\",\n\t\t\t\t\t\t\t\t\"TAMPAC\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"ALAMINOS\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ALOS\",\n\t\t\t\t\t\t\t\t\"AMANDIEGO\",\n\t\t\t\t\t\t\t\t\"AMANGBANGAN\",\n\t\t\t\t\t\t\t\t\"BALANGOBONG\",\n\t\t\t\t\t\t\t\t\"BALAYANG\",\n\t\t\t\t\t\t\t\t\"BALEYADAAN\",\n\t\t\t\t\t\t\t\t\"BISOCOL\",\n\t\t\t\t\t\t\t\t\"BOLANEY\",\n\t\t\t\t\t\t\t\t\"BUED\",\n\t\t\t\t\t\t\t\t\"CABATUAN\",\n\t\t\t\t\t\t\t\t\"CAYUCAY\",\n\t\t\t\t\t\t\t\t\"DULACAC\",\n\t\t\t\t\t\t\t\t\"INERANGAN\",\n\t\t\t\t\t\t\t\t\"LANDOC\",\n\t\t\t\t\t\t\t\t\"LINMANSANGAN\",\n\t\t\t\t\t\t\t\t\"LUCAP\",\n\t\t\t\t\t\t\t\t\"MAAWI\",\n\t\t\t\t\t\t\t\t\"MACATIW\",\n\t\t\t\t\t\t\t\t\"MAGSAYSAY\",\n\t\t\t\t\t\t\t\t\"MONA\",\n\t\t\t\t\t\t\t\t\"PALAMIS\",\n\t\t\t\t\t\t\t\t\"PANDAN\",\n\t\t\t\t\t\t\t\t\"PANGAPISAN\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"POCALPOCAL\",\n\t\t\t\t\t\t\t\t\"POGO\",\n\t\t\t\t\t\t\t\t\"POLO\",\n\t\t\t\t\t\t\t\t\"QUIBUAR\",\n\t\t\t\t\t\t\t\t\"SABANGAN\",\n\t\t\t\t\t\t\t\t\"SAN ANTONIO (RAMON MAGSAYSAY)\",\n\t\t\t\t\t\t\t\t\"SAN JOSE\",\n\t\t\t\t\t\t\t\t\"SAN ROQUE\",\n\t\t\t\t\t\t\t\t\"SAN VICENTE\",\n\t\t\t\t\t\t\t\t\"SANTA MARIA\",\n\t\t\t\t\t\t\t\t\"TANAYTANAY\",\n\t\t\t\t\t\t\t\t\"TANGCARANG\",\n\t\t\t\t\t\t\t\t\"TAWINTAWIN\",\n\t\t\t\t\t\t\t\t\"TELBANG\",\n\t\t\t\t\t\t\t\t\"VICTORIA\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"ALCALA\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ANULID\",\n\t\t\t\t\t\t\t\t\"ATAINAN\",\n\t\t\t\t\t\t\t\t\"BERSAMIN\",\n\t\t\t\t\t\t\t\t\"CANARVACANAN\",\n\t\t\t\t\t\t\t\t\"CARANGLAAN\",\n\t\t\t\t\t\t\t\t\"CURARENG\",\n\t\t\t\t\t\t\t\t\"GUALSIC\",\n\t\t\t\t\t\t\t\t\"KASIKIS\",\n\t\t\t\t\t\t\t\t\"LAOAC\",\n\t\t\t\t\t\t\t\t\"MACAYO\",\n\t\t\t\t\t\t\t\t\"PINDANGAN CENTRO\",\n\t\t\t\t\t\t\t\t\"PINDANGAN EAST\",\n\t\t\t\t\t\t\t\t\"PINDANGAN WEST\",\n\t\t\t\t\t\t\t\t\"POBLACION EAST\",\n\t\t\t\t\t\t\t\t\"POBLACION WEST\",\n\t\t\t\t\t\t\t\t\"SAN JUAN\",\n\t\t\t\t\t\t\t\t\"SAN NICOLAS\",\n\t\t\t\t\t\t\t\t\"SAN PEDRO APARTADO\",\n\t\t\t\t\t\t\t\t\"SAN PEDRO III\",\n\t\t\t\t\t\t\t\t\"SAN VICENTE\",\n\t\t\t\t\t\t\t\t\"VACANTE\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"ANDA\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"AWAG\",\n\t\t\t\t\t\t\t\t\"AWILE\",\n\t\t\t\t\t\t\t\t\"BATIARAO\",\n\t\t\t\t\t\t\t\t\"CABUNGAN\",\n\t\t\t\t\t\t\t\t\"CAROT\",\n\t\t\t\t\t\t\t\t\"DOLAOAN\",\n\t\t\t\t\t\t\t\t\"IMBO\",\n\t\t\t\t\t\t\t\t\"MACALEENG\",\n\t\t\t\t\t\t\t\t\"MACANDOCANDONG\",\n\t\t\t\t\t\t\t\t\"MAL-ONG\",\n\t\t\t\t\t\t\t\t\"NAMAGBAGAN\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"ROXAS\",\n\t\t\t\t\t\t\t\t\"SABLIG\",\n\t\t\t\t\t\t\t\t\"SAN JOSE\",\n\t\t\t\t\t\t\t\t\"SIAPAR\",\n\t\t\t\t\t\t\t\t\"TONDOL\",\n\t\t\t\t\t\t\t\t\"TORITORI\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"ASINGAN\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ARISTON ESTE\",\n\t\t\t\t\t\t\t\t\"ARISTON WESTE\",\n\t\t\t\t\t\t\t\t\"BANTOG\",\n\t\t\t\t\t\t\t\t\"BARO\",\n\t\t\t\t\t\t\t\t\"BOBONAN\",\n\t\t\t\t\t\t\t\t\"CABALITIAN\",\n\t\t\t\t\t\t\t\t\"CALEPAAN\",\n\t\t\t\t\t\t\t\t\"CAROSUCAN NORTE\",\n\t\t\t\t\t\t\t\t\"CAROSUCAN SUR\",\n\t\t\t\t\t\t\t\t\"COLDIT\",\n\t\t\t\t\t\t\t\t\"DOMANPOT\",\n\t\t\t\t\t\t\t\t\"DUPAC\",\n\t\t\t\t\t\t\t\t\"MACALONG\",\n\t\t\t\t\t\t\t\t\"PALARIS\",\n\t\t\t\t\t\t\t\t\"POBLACION EAST\",\n\t\t\t\t\t\t\t\t\"POBLACION WEST\",\n\t\t\t\t\t\t\t\t\"SAN VICENTE ESTE\",\n\t\t\t\t\t\t\t\t\"SAN VICENTE WESTE\",\n\t\t\t\t\t\t\t\t\"SANCHEZ\",\n\t\t\t\t\t\t\t\t\"SOBOL\",\n\t\t\t\t\t\t\t\t\"TOBOY\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"BALUNGAO\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ANGAYAN NORTE\",\n\t\t\t\t\t\t\t\t\"ANGAYAN SUR\",\n\t\t\t\t\t\t\t\t\"CAPULAAN\",\n\t\t\t\t\t\t\t\t\"ESMERALDA\",\n\t\t\t\t\t\t\t\t\"KITA-KITA\",\n\t\t\t\t\t\t\t\t\"MABINI\",\n\t\t\t\t\t\t\t\t\"MAUBAN\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"PUGARO\",\n\t\t\t\t\t\t\t\t\"RAJAL\",\n\t\t\t\t\t\t\t\t\"SAN ANDRES\",\n\t\t\t\t\t\t\t\t\"SAN AURELIO 1ST\",\n\t\t\t\t\t\t\t\t\"SAN AURELIO 2ND\",\n\t\t\t\t\t\t\t\t\"SAN AURELIO 3RD\",\n\t\t\t\t\t\t\t\t\"SAN JOAQUIN\",\n\t\t\t\t\t\t\t\t\"SAN JULIAN\",\n\t\t\t\t\t\t\t\t\"SAN LEON\",\n\t\t\t\t\t\t\t\t\"SAN MARCELINO\",\n\t\t\t\t\t\t\t\t\"SAN MIGUEL\",\n\t\t\t\t\t\t\t\t\"SAN RAYMUNDO\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"BANI\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"AMBABAAY\",\n\t\t\t\t\t\t\t\t\"APORAO\",\n\t\t\t\t\t\t\t\t\"ARWAS\",\n\t\t\t\t\t\t\t\t\"BALLAG\",\n\t\t\t\t\t\t\t\t\"BANOG NORTE\",\n\t\t\t\t\t\t\t\t\"BANOG SUR\",\n\t\t\t\t\t\t\t\t\"CALABENG\",\n\t\t\t\t\t\t\t\t\"CENTRO TOMA\",\n\t\t\t\t\t\t\t\t\"COLAYO\",\n\t\t\t\t\t\t\t\t\"DACAP NORTE\",\n\t\t\t\t\t\t\t\t\"DACAP SUR\",\n\t\t\t\t\t\t\t\t\"GARRITA\",\n\t\t\t\t\t\t\t\t\"LUAC\",\n\t\t\t\t\t\t\t\t\"MACABIT\",\n\t\t\t\t\t\t\t\t\"MASIDEM\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"QUINAOAYANAN\",\n\t\t\t\t\t\t\t\t\"RANAO\",\n\t\t\t\t\t\t\t\t\"RANOM ILOCO\",\n\t\t\t\t\t\t\t\t\"SAN JOSE\",\n\t\t\t\t\t\t\t\t\"SAN MIGUEL\",\n\t\t\t\t\t\t\t\t\"SAN SIMON\",\n\t\t\t\t\t\t\t\t\"SAN VICENTE\",\n\t\t\t\t\t\t\t\t\"TIEP\",\n\t\t\t\t\t\t\t\t\"TIPOR\",\n\t\t\t\t\t\t\t\t\"TUGUI GRANDE\",\n\t\t\t\t\t\t\t\t\"TUGUI NORTE\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"BASISTA\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ANAMBONGAN\",\n\t\t\t\t\t\t\t\t\"BAYOYONG\",\n\t\t\t\t\t\t\t\t\"CABELDETAN\",\n\t\t\t\t\t\t\t\t\"DUMPAY\",\n\t\t\t\t\t\t\t\t\"MALIMPEC EAST\",\n\t\t\t\t\t\t\t\t\"MAPOLOPOLO\",\n\t\t\t\t\t\t\t\t\"NALNERAN\",\n\t\t\t\t\t\t\t\t\"NAVATAT\",\n\t\t\t\t\t\t\t\t\"OBONG\",\n\t\t\t\t\t\t\t\t\"OSME\u00D1A SR.\",\n\t\t\t\t\t\t\t\t\"PALMA\",\n\t\t\t\t\t\t\t\t\"PATACBO\",\n\t\t\t\t\t\t\t\t\"POBLACION\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"BAUTISTA\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ARTACHO\",\n\t\t\t\t\t\t\t\t\"BALUYOT\",\n\t\t\t\t\t\t\t\t\"CABUAAN\",\n\t\t\t\t\t\t\t\t\"CACANDONGAN\",\n\t\t\t\t\t\t\t\t\"DIAZ\",\n\t\t\t\t\t\t\t\t\"KETEGAN\",\n\t\t\t\t\t\t\t\t\"NANDACAN\",\n\t\t\t\t\t\t\t\t\"NIBALIW NORTE\",\n\t\t\t\t\t\t\t\t\"NIBALIW SUR\",\n\t\t\t\t\t\t\t\t\"PALISOC\",\n\t\t\t\t\t\t\t\t\"POBLACION EAST\",\n\t\t\t\t\t\t\t\t\"POBLACION WEST\",\n\t\t\t\t\t\t\t\t\"POGO\",\n\t\t\t\t\t\t\t\t\"POPONTO\",\n\t\t\t\t\t\t\t\t\"PRIMICIAS\",\n\t\t\t\t\t\t\t\t\"SINABAAN\",\n\t\t\t\t\t\t\t\t\"VACANTE\",\n\t\t\t\t\t\t\t\t\"VILLANUEVA\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"BAYAMBANG\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ALINGGAN\",\n\t\t\t\t\t\t\t\t\"AMANCOSILING NORTE\",\n\t\t\t\t\t\t\t\t\"AMANCOSILING SUR\",\n\t\t\t\t\t\t\t\t\"AMANPEREZ\",\n\t\t\t\t\t\t\t\t\"AMBAYAT I\",\n\t\t\t\t\t\t\t\t\"AMBAYAT II\",\n\t\t\t\t\t\t\t\t\"APALEN\",\n\t\t\t\t\t\t\t\t\"ASIN\",\n\t\t\t\t\t\t\t\t\"ATAYNAN\",\n\t\t\t\t\t\t\t\t\"BACNONO\",\n\t\t\t\t\t\t\t\t\"BALAYBUAYA\",\n\t\t\t\t\t\t\t\t\"BANABAN\",\n\t\t\t\t\t\t\t\t\"BANI\",\n\t\t\t\t\t\t\t\t\"BATANGCAWA\",\n\t\t\t\t\t\t\t\t\"BELENG\",\n\t\t\t\t\t\t\t\t\"BICAL NORTE\",\n\t\t\t\t\t\t\t\t\"BICAL SUR\",\n\t\t\t\t\t\t\t\t\"BONGATO EAST\",\n\t\t\t\t\t\t\t\t\"BONGATO WEST\",\n\t\t\t\t\t\t\t\t\"BUAYAEN\",\n\t\t\t\t\t\t\t\t\"BUENLAG 1ST\",\n\t\t\t\t\t\t\t\t\"BUENLAG 2ND\",\n\t\t\t\t\t\t\t\t\"CADRE SITE\",\n\t\t\t\t\t\t\t\t\"CARUNGAY\",\n\t\t\t\t\t\t\t\t\"CATURAY\",\n\t\t\t\t\t\t\t\t\"DARAWEY (TANGAL)\",\n\t\t\t\t\t\t\t\t\"DUERA\",\n\t\t\t\t\t\t\t\t\"DUSOC\",\n\t\t\t\t\t\t\t\t\"HERMOZA\",\n\t\t\t\t\t\t\t\t\"IDONG\",\n\t\t\t\t\t\t\t\t\"INANLORENZANA\",\n\t\t\t\t\t\t\t\t\"INIRANGAN\",\n\t\t\t\t\t\t\t\t\"ITON\",\n\t\t\t\t\t\t\t\t\"LANGIRAN\",\n\t\t\t\t\t\t\t\t\"LIGUE\",\n\t\t\t\t\t\t\t\t\"MACAYOCAYO\",\n\t\t\t\t\t\t\t\t\"MAGSAYSAY\",\n\t\t\t\t\t\t\t\t\"MAIGPA\",\n\t\t\t\t\t\t\t\t\"MALIMPEC\",\n\t\t\t\t\t\t\t\t\"MALIOER\",\n\t\t\t\t\t\t\t\t\"MANAGOS\",\n\t\t\t\t\t\t\t\t\"MANAMBONG NORTE\",\n\t\t\t\t\t\t\t\t\"MANAMBONG PARTE\",\n\t\t\t\t\t\t\t\t\"MANAMBONG SUR\",\n\t\t\t\t\t\t\t\t\"MANGAYAO\",\n\t\t\t\t\t\t\t\t\"MARCELO H. DEL PILAR\",\n\t\t\t\t\t\t\t\t\"NALSIAN NORTE\",\n\t\t\t\t\t\t\t\t\"NALSIAN SUR\",\n\t\t\t\t\t\t\t\t\"PANGDEL\",\n\t\t\t\t\t\t\t\t\"PANTOL\",\n\t\t\t\t\t\t\t\t\"PARAGOS\",\n\t\t\t\t\t\t\t\t\"POBLACION SUR\",\n\t\t\t\t\t\t\t\t\"PUGO\",\n\t\t\t\t\t\t\t\t\"REYNADO\",\n\t\t\t\t\t\t\t\t\"SAN GABRIEL 1ST\",\n\t\t\t\t\t\t\t\t\"SAN GABRIEL 2ND\",\n\t\t\t\t\t\t\t\t\"SAN VICENTE\",\n\t\t\t\t\t\t\t\t\"SANGCAGULIS\",\n\t\t\t\t\t\t\t\t\"SANLIBO\",\n\t\t\t\t\t\t\t\t\"SAPANG\",\n\t\t\t\t\t\t\t\t\"TAMARO\",\n\t\t\t\t\t\t\t\t\"TAMBAC\",\n\t\t\t\t\t\t\t\t\"TAMPOG\",\n\t\t\t\t\t\t\t\t\"TANOLONG\",\n\t\t\t\t\t\t\t\t\"TATARAO\",\n\t\t\t\t\t\t\t\t\"TELBANG\",\n\t\t\t\t\t\t\t\t\"TOCOC EAST\",\n\t\t\t\t\t\t\t\t\"TOCOC WEST\",\n\t\t\t\t\t\t\t\t\"WARDING\",\n\t\t\t\t\t\t\t\t\"WAWA\",\n\t\t\t\t\t\t\t\t\"ZONE I (POBLACION)\",\n\t\t\t\t\t\t\t\t\"ZONE II (POBLACION)\",\n\t\t\t\t\t\t\t\t\"ZONE III (POBLACION)\",\n\t\t\t\t\t\t\t\t\"ZONE IV (POBLACION)\",\n\t\t\t\t\t\t\t\t\"ZONE V (POBLACION)\",\n\t\t\t\t\t\t\t\t\"ZONE VI (POBLACION)\",\n\t\t\t\t\t\t\t\t\"ZONE VII (POBLACION)\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"BINALONAN\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BALANGOBONG\",\n\t\t\t\t\t\t\t\t\"BUED\",\n\t\t\t\t\t\t\t\t\"BUGAYONG\",\n\t\t\t\t\t\t\t\t\"CAMANGAAN\",\n\t\t\t\t\t\t\t\t\"CANARVACANAN\",\n\t\t\t\t\t\t\t\t\"CAPAS\",\n\t\t\t\t\t\t\t\t\"CILI\",\n\t\t\t\t\t\t\t\t\"DUMAYAT\",\n\t\t\t\t\t\t\t\t\"LINMANSANGAN\",\n\t\t\t\t\t\t\t\t\"MANGCASUY\",\n\t\t\t\t\t\t\t\t\"MORENO\",\n\t\t\t\t\t\t\t\t\"PASILENG NORTE\",\n\t\t\t\t\t\t\t\t\"PASILENG SUR\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"SAN FELIPE CENTRAL\",\n\t\t\t\t\t\t\t\t\"SAN FELIPE SUR\",\n\t\t\t\t\t\t\t\t\"SAN PABLO\",\n\t\t\t\t\t\t\t\t\"SANTA CATALINA\",\n\t\t\t\t\t\t\t\t\"SANTA MARIA NORTE\",\n\t\t\t\t\t\t\t\t\"SANTIAGO\",\n\t\t\t\t\t\t\t\t\"SANTO NI\u00D1O\",\n\t\t\t\t\t\t\t\t\"SUMABNIT\",\n\t\t\t\t\t\t\t\t\"TABUYOC\",\n\t\t\t\t\t\t\t\t\"VACANTE\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"BINMALEY\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"AMANCORO\",\n\t\t\t\t\t\t\t\t\"BALAGAN\",\n\t\t\t\t\t\t\t\t\"BALOGO\",\n\t\t\t\t\t\t\t\t\"BASING\",\n\t\t\t\t\t\t\t\t\"BAYBAY LOPEZ\",\n\t\t\t\t\t\t\t\t\"BAYBAY POLONG\",\n\t\t\t\t\t\t\t\t\"BIEC\",\n\t\t\t\t\t\t\t\t\"BUENLAG\",\n\t\t\t\t\t\t\t\t\"CALIT\",\n\t\t\t\t\t\t\t\t\"CALOOCAN DUPO\",\n\t\t\t\t\t\t\t\t\"CALOOCAN NORTE\",\n\t\t\t\t\t\t\t\t\"CALOOCAN SUR\",\n\t\t\t\t\t\t\t\t\"CAMALEY\",\n\t\t\t\t\t\t\t\t\"CANAOALAN\",\n\t\t\t\t\t\t\t\t\"DULAG\",\n\t\t\t\t\t\t\t\t\"GAYAMAN\",\n\t\t\t\t\t\t\t\t\"LINOC\",\n\t\t\t\t\t\t\t\t\"LOMBOY\",\n\t\t\t\t\t\t\t\t\"MALINDONG\",\n\t\t\t\t\t\t\t\t\"MANAT\",\n\t\t\t\t\t\t\t\t\"NAGPALANGAN\",\n\t\t\t\t\t\t\t\t\"NAGUILAYAN\",\n\t\t\t\t\t\t\t\t\"PALLAS\",\n\t\t\t\t\t\t\t\t\"PAPAGUEYAN\",\n\t\t\t\t\t\t\t\t\"PARAYAO\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"POTOTAN\",\n\t\t\t\t\t\t\t\t\"SABANGAN\",\n\t\t\t\t\t\t\t\t\"SALAPINGAO\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO NORTE\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO SUR\",\n\t\t\t\t\t\t\t\t\"SANTA ROSA\",\n\t\t\t\t\t\t\t\t\"TOMBOR\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"BOLINAO\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ARNEDO\",\n\t\t\t\t\t\t\t\t\"BALINGASAY\",\n\t\t\t\t\t\t\t\t\"BINABALIAN\",\n\t\t\t\t\t\t\t\t\"CABUYAO\",\n\t\t\t\t\t\t\t\t\"CATUDAY\",\n\t\t\t\t\t\t\t\t\"CATUNGI\",\n\t\t\t\t\t\t\t\t\"CONCORDIA (POBLACION)\",\n\t\t\t\t\t\t\t\t\"CULANG\",\n\t\t\t\t\t\t\t\t\"DEWEY\",\n\t\t\t\t\t\t\t\t\"ESTANZA\",\n\t\t\t\t\t\t\t\t\"GERMINAL (POBLACION)\",\n\t\t\t\t\t\t\t\t\"GOYODEN\",\n\t\t\t\t\t\t\t\t\"ILOGMALINO\",\n\t\t\t\t\t\t\t\t\"LAMBES (LAMES)\",\n\t\t\t\t\t\t\t\t\"LIWA-LIWA\",\n\t\t\t\t\t\t\t\t\"LUCERO\",\n\t\t\t\t\t\t\t\t\"LUCIENTE 1\",\n\t\t\t\t\t\t\t\t\"LUCIENTE 2\",\n\t\t\t\t\t\t\t\t\"LUNA\",\n\t\t\t\t\t\t\t\t\"PATAR\",\n\t\t\t\t\t\t\t\t\"PILAR\",\n\t\t\t\t\t\t\t\t\"SALUD\",\n\t\t\t\t\t\t\t\t\"SAMANG NORTE\",\n\t\t\t\t\t\t\t\t\"SAMANG SUR\",\n\t\t\t\t\t\t\t\t\"SAMPALOC\",\n\t\t\t\t\t\t\t\t\"SAN ROQUE\",\n\t\t\t\t\t\t\t\t\"TARA\",\n\t\t\t\t\t\t\t\t\"TUPA\",\n\t\t\t\t\t\t\t\t\"VICTORY\",\n\t\t\t\t\t\t\t\t\"ZARAGOZA\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"BUGALLON\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ANGARIAN\",\n\t\t\t\t\t\t\t\t\"ASINAN\",\n\t\t\t\t\t\t\t\t\"BACABAC\",\n\t\t\t\t\t\t\t\t\"BANAGA\",\n\t\t\t\t\t\t\t\t\"BOLAOEN\",\n\t\t\t\t\t\t\t\t\"BUENLAG\",\n\t\t\t\t\t\t\t\t\"CABAYAOASAN\",\n\t\t\t\t\t\t\t\t\"CAYANGA\",\n\t\t\t\t\t\t\t\t\"GUESET\",\n\t\t\t\t\t\t\t\t\"HACIENDA\",\n\t\t\t\t\t\t\t\t\"LAGUIT CENTRO\",\n\t\t\t\t\t\t\t\t\"LAGUIT PADILLA\",\n\t\t\t\t\t\t\t\t\"MAGTAKING\",\n\t\t\t\t\t\t\t\t\"PANGASCASAN\",\n\t\t\t\t\t\t\t\t\"PANTAL\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"POLONG\",\n\t\t\t\t\t\t\t\t\"PORTIC\",\n\t\t\t\t\t\t\t\t\"SALASA\",\n\t\t\t\t\t\t\t\t\"SALOMAGUE NORTE\",\n\t\t\t\t\t\t\t\t\"SALOMAGUE SUR\",\n\t\t\t\t\t\t\t\t\"SAMAT\",\n\t\t\t\t\t\t\t\t\"SAN FRANCISCO\",\n\t\t\t\t\t\t\t\t\"UMANDAY\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"BURGOS\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ANAPAO (BUR ANAPAC)\",\n\t\t\t\t\t\t\t\t\"CACAYASEN\",\n\t\t\t\t\t\t\t\t\"CONCORDIA\",\n\t\t\t\t\t\t\t\t\"DON MATIAS\",\n\t\t\t\t\t\t\t\t\"ILIO-ILIO (ILIW-ILIW)\",\n\t\t\t\t\t\t\t\t\"PAPALLASEN\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"POGORUAC\",\n\t\t\t\t\t\t\t\t\"SAN MIGUEL\",\n\t\t\t\t\t\t\t\t\"SAN PASCUAL\",\n\t\t\t\t\t\t\t\t\"SAN VICENTE\",\n\t\t\t\t\t\t\t\t\"SAPA GRANDE\",\n\t\t\t\t\t\t\t\t\"SAPA PEQUE\u00D1A\",\n\t\t\t\t\t\t\t\t\"TAMBACAN\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"CALASIAO\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"AMBONAO\",\n\t\t\t\t\t\t\t\t\"AMBUETEL\",\n\t\t\t\t\t\t\t\t\"BANAOANG\",\n\t\t\t\t\t\t\t\t\"BUED\",\n\t\t\t\t\t\t\t\t\"BUENLAG\",\n\t\t\t\t\t\t\t\t\"CABILOCAAN\",\n\t\t\t\t\t\t\t\t\"DINALAOAN\",\n\t\t\t\t\t\t\t\t\"DOYONG\",\n\t\t\t\t\t\t\t\t\"GABON\",\n\t\t\t\t\t\t\t\t\"LASIP\",\n\t\t\t\t\t\t\t\t\"LONGOS\",\n\t\t\t\t\t\t\t\t\"LUMBANG\",\n\t\t\t\t\t\t\t\t\"MACABITO\",\n\t\t\t\t\t\t\t\t\"MALABAGO\",\n\t\t\t\t\t\t\t\t\"MANCUP\",\n\t\t\t\t\t\t\t\t\"NAGSAING\",\n\t\t\t\t\t\t\t\t\"NALSIAN\",\n\t\t\t\t\t\t\t\t\"POBLACION EAST\",\n\t\t\t\t\t\t\t\t\"POBLACION WEST\",\n\t\t\t\t\t\t\t\t\"QUESBAN\",\n\t\t\t\t\t\t\t\t\"SAN MIGUEL\",\n\t\t\t\t\t\t\t\t\"SAN VICENTE\",\n\t\t\t\t\t\t\t\t\"SONGKOY\",\n\t\t\t\t\t\t\t\t\"TALIBAEW\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"DAGUPAN\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BACAYAO NORTE\",\n\t\t\t\t\t\t\t\t\"BACAYAO SUR\",\n\t\t\t\t\t\t\t\t\"BARANGAY I (T. BUGALLON)\",\n\t\t\t\t\t\t\t\t\"BARANGAY II (NUEVA)\",\n\t\t\t\t\t\t\t\t\"BARANGAY IV (ZAMORA)\",\n\t\t\t\t\t\t\t\t\"BOLOSAN\",\n\t\t\t\t\t\t\t\t\"BONUAN BINLOC\",\n\t\t\t\t\t\t\t\t\"BONUAN BOQUIG\",\n\t\t\t\t\t\t\t\t\"BONUAN GUESET\",\n\t\t\t\t\t\t\t\t\"CALMAY\",\n\t\t\t\t\t\t\t\t\"CARAEL\",\n\t\t\t\t\t\t\t\t\"CARANGLAAN\",\n\t\t\t\t\t\t\t\t\"HERRERO\",\n\t\t\t\t\t\t\t\t\"LASIP CHICO\",\n\t\t\t\t\t\t\t\t\"LASIP GRANDE\",\n\t\t\t\t\t\t\t\t\"LOMBOY\",\n\t\t\t\t\t\t\t\t\"LUCAO\",\n\t\t\t\t\t\t\t\t\"MALUED\",\n\t\t\t\t\t\t\t\t\"MAMALINGLING\",\n\t\t\t\t\t\t\t\t\"MANGIN\",\n\t\t\t\t\t\t\t\t\"MAYOMBO\",\n\t\t\t\t\t\t\t\t\"PANTAL\",\n\t\t\t\t\t\t\t\t\"POBLACION OESTE\",\n\t\t\t\t\t\t\t\t\"POGO CHICO\",\n\t\t\t\t\t\t\t\t\"POGO GRANDE\",\n\t\t\t\t\t\t\t\t\"PUGARO SUIT\",\n\t\t\t\t\t\t\t\t\"SALAPINGAO\",\n\t\t\t\t\t\t\t\t\"SALISAY\",\n\t\t\t\t\t\t\t\t\"TAMBAC\",\n\t\t\t\t\t\t\t\t\"TAPUAC\",\n\t\t\t\t\t\t\t\t\"TEBENG\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"DASOL\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ALILAO\",\n\t\t\t\t\t\t\t\t\"AMALBALAN\",\n\t\t\t\t\t\t\t\t\"BOBONOT\",\n\t\t\t\t\t\t\t\t\"EGUIA\",\n\t\t\t\t\t\t\t\t\"GAIS-GUIPE\",\n\t\t\t\t\t\t\t\t\"HERMOSA\",\n\t\t\t\t\t\t\t\t\"MACALANG\",\n\t\t\t\t\t\t\t\t\"MAGSAYSAY\",\n\t\t\t\t\t\t\t\t\"MALACAPAS\",\n\t\t\t\t\t\t\t\t\"MALIMPIN\",\n\t\t\t\t\t\t\t\t\"OSME\u00D1A\",\n\t\t\t\t\t\t\t\t\"PETAL\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"SAN VICENTE\",\n\t\t\t\t\t\t\t\t\"TAMBAC\",\n\t\t\t\t\t\t\t\t\"TAMBOBONG\",\n\t\t\t\t\t\t\t\t\"ULI\",\n\t\t\t\t\t\t\t\t\"VIGA\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"INFANTA\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BABUYAN\",\n\t\t\t\t\t\t\t\t\"BAMBAN\",\n\t\t\t\t\t\t\t\t\"BATANG\",\n\t\t\t\t\t\t\t\t\"BAYAMBANG\",\n\t\t\t\t\t\t\t\t\"CATO\",\n\t\t\t\t\t\t\t\t\"DOLIMAN\",\n\t\t\t\t\t\t\t\t\"FATIMA\",\n\t\t\t\t\t\t\t\t\"MAYA\",\n\t\t\t\t\t\t\t\t\"NANGALISAN\",\n\t\t\t\t\t\t\t\t\"NAYOM\",\n\t\t\t\t\t\t\t\t\"PITA\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"POTOL\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"LABRADOR\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BOLO\",\n\t\t\t\t\t\t\t\t\"BONGALON\",\n\t\t\t\t\t\t\t\t\"DULIG\",\n\t\t\t\t\t\t\t\t\"LAOIS\",\n\t\t\t\t\t\t\t\t\"MAGSAYSAY\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"SAN GONZALO\",\n\t\t\t\t\t\t\t\t\"SAN JOSE\",\n\t\t\t\t\t\t\t\t\"TOBUAN\",\n\t\t\t\t\t\t\t\t\"UYONG\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"LAOAC\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ANIS\",\n\t\t\t\t\t\t\t\t\"BALLIGI\",\n\t\t\t\t\t\t\t\t\"BANUAR\",\n\t\t\t\t\t\t\t\t\"BOTIQUE\",\n\t\t\t\t\t\t\t\t\"CAARINGAYAN\",\n\t\t\t\t\t\t\t\t\"CABILAOAN WEST\",\n\t\t\t\t\t\t\t\t\"CABULALAAN\",\n\t\t\t\t\t\t\t\t\"CALAOAGAN\",\n\t\t\t\t\t\t\t\t\"CALMAY\",\n\t\t\t\t\t\t\t\t\"CASAMPAGAAN\",\n\t\t\t\t\t\t\t\t\"CASANESTEBANAN\",\n\t\t\t\t\t\t\t\t\"CASANTIAGOAN\",\n\t\t\t\t\t\t\t\t\"DOMINGO ALARCIO (CABILAOAN EAST)\",\n\t\t\t\t\t\t\t\t\"INMANDUYAN\",\n\t\t\t\t\t\t\t\t\"LEBUEG\",\n\t\t\t\t\t\t\t\t\"MARABOC\",\n\t\t\t\t\t\t\t\t\"NANBAGATAN\",\n\t\t\t\t\t\t\t\t\"PANAGA\",\n\t\t\t\t\t\t\t\t\"POBLACION (LAOAC)\",\n\t\t\t\t\t\t\t\t\"TALOGTOG\",\n\t\t\t\t\t\t\t\t\"TURKO\",\n\t\t\t\t\t\t\t\t\"YATYAT\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"LINGAYEN\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ALIWEKWEK\",\n\t\t\t\t\t\t\t\t\"BAAY\",\n\t\t\t\t\t\t\t\t\"BALANGOBONG\",\n\t\t\t\t\t\t\t\t\"BALOCOC\",\n\t\t\t\t\t\t\t\t\"BANTAYAN\",\n\t\t\t\t\t\t\t\t\"BASING\",\n\t\t\t\t\t\t\t\t\"CAPANDANAN\",\n\t\t\t\t\t\t\t\t\"DOMALANDAN CENTER\",\n\t\t\t\t\t\t\t\t\"DOMALANDAN EAST\",\n\t\t\t\t\t\t\t\t\"DOMALANDAN WEST\",\n\t\t\t\t\t\t\t\t\"DORONGAN\",\n\t\t\t\t\t\t\t\t\"DULAG\",\n\t\t\t\t\t\t\t\t\"ESTANZA\",\n\t\t\t\t\t\t\t\t\"LASIP\",\n\t\t\t\t\t\t\t\t\"LIBSONG EAST\",\n\t\t\t\t\t\t\t\t\"LIBSONG WEST\",\n\t\t\t\t\t\t\t\t\"MALAWA\",\n\t\t\t\t\t\t\t\t\"MALIMPUEC\",\n\t\t\t\t\t\t\t\t\"MANIBOC\",\n\t\t\t\t\t\t\t\t\"MATALAVA\",\n\t\t\t\t\t\t\t\t\"NAGUELGUEL\",\n\t\t\t\t\t\t\t\t\"NAMOLAN\",\n\t\t\t\t\t\t\t\t\"PANGAPISAN NORTH\",\n\t\t\t\t\t\t\t\t\"PANGAPISAN SUR\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"QUIBAOL\",\n\t\t\t\t\t\t\t\t\"ROSARIO\",\n\t\t\t\t\t\t\t\t\"SABANGAN\",\n\t\t\t\t\t\t\t\t\"TALOGTOG\",\n\t\t\t\t\t\t\t\t\"TONTON\",\n\t\t\t\t\t\t\t\t\"TUMBAR\",\n\t\t\t\t\t\t\t\t\"WAWA\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"MABINI\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BACNIT\",\n\t\t\t\t\t\t\t\t\"BARLO\",\n\t\t\t\t\t\t\t\t\"CAABIANGAAN\",\n\t\t\t\t\t\t\t\t\"CABANAETAN\",\n\t\t\t\t\t\t\t\t\"CABINUANGAN\",\n\t\t\t\t\t\t\t\t\"CALZADA\",\n\t\t\t\t\t\t\t\t\"CARANGLAAN\",\n\t\t\t\t\t\t\t\t\"DE GUZMAN\",\n\t\t\t\t\t\t\t\t\"LUNA\",\n\t\t\t\t\t\t\t\t\"MAGALONG\",\n\t\t\t\t\t\t\t\t\"NIBALIW\",\n\t\t\t\t\t\t\t\t\"PATAR\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"SAN PEDRO\",\n\t\t\t\t\t\t\t\t\"TAGUDIN\",\n\t\t\t\t\t\t\t\t\"VILLACORTA\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"MALASIQUI\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ABONAGAN\",\n\t\t\t\t\t\t\t\t\"AGDAO\",\n\t\t\t\t\t\t\t\t\"ALACAN\",\n\t\t\t\t\t\t\t\t\"ALIAGA\",\n\t\t\t\t\t\t\t\t\"AMACALAN\",\n\t\t\t\t\t\t\t\t\"ANOLID\",\n\t\t\t\t\t\t\t\t\"APAYA\",\n\t\t\t\t\t\t\t\t\"ASIN ESTE\",\n\t\t\t\t\t\t\t\t\"ASIN WESTE\",\n\t\t\t\t\t\t\t\t\"BACUNDAO ESTE\",\n\t\t\t\t\t\t\t\t\"BACUNDAO WESTE\",\n\t\t\t\t\t\t\t\t\"BAKITIW\",\n\t\t\t\t\t\t\t\t\"BALITE\",\n\t\t\t\t\t\t\t\t\"BANAWANG\",\n\t\t\t\t\t\t\t\t\"BARANG\",\n\t\t\t\t\t\t\t\t\"BAWER\",\n\t\t\t\t\t\t\t\t\"BINALAY\",\n\t\t\t\t\t\t\t\t\"BOBON\",\n\t\t\t\t\t\t\t\t\"BOLAOIT\",\n\t\t\t\t\t\t\t\t\"BONGAR\",\n\t\t\t\t\t\t\t\t\"BUTAO\",\n\t\t\t\t\t\t\t\t\"CABATLING\",\n\t\t\t\t\t\t\t\t\"CABUELDATAN\",\n\t\t\t\t\t\t\t\t\"CALBUEG\",\n\t\t\t\t\t\t\t\t\"CANAN NORTE\",\n\t\t\t\t\t\t\t\t\"CANAN SUR\",\n\t\t\t\t\t\t\t\t\"CAWAYAN BOGTONG\",\n\t\t\t\t\t\t\t\t\"DON PEDRO\",\n\t\t\t\t\t\t\t\t\"GATANG\",\n\t\t\t\t\t\t\t\t\"GOLIMAN\",\n\t\t\t\t\t\t\t\t\"GOMEZ\",\n\t\t\t\t\t\t\t\t\"GUILIG\",\n\t\t\t\t\t\t\t\t\"ICAN\",\n\t\t\t\t\t\t\t\t\"INGALAGALA\",\n\t\t\t\t\t\t\t\t\"LAREG-LAREG\",\n\t\t\t\t\t\t\t\t\"LASIP\",\n\t\t\t\t\t\t\t\t\"LEPA\",\n\t\t\t\t\t\t\t\t\"LOQUEB ESTE\",\n\t\t\t\t\t\t\t\t\"LOQUEB NORTE\",\n\t\t\t\t\t\t\t\t\"LOQUEB SUR\",\n\t\t\t\t\t\t\t\t\"LUNEC\",\n\t\t\t\t\t\t\t\t\"MABULITEC\",\n\t\t\t\t\t\t\t\t\"MALIMPEC\",\n\t\t\t\t\t\t\t\t\"MANGGAN-DAMPAY\",\n\t\t\t\t\t\t\t\t\"NALSIAN NORTE\",\n\t\t\t\t\t\t\t\t\"NALSIAN SUR\",\n\t\t\t\t\t\t\t\t\"NANCAPIAN\",\n\t\t\t\t\t\t\t\t\"NANSANGAAN\",\n\t\t\t\t\t\t\t\t\"OLEA\",\n\t\t\t\t\t\t\t\t\"PACUAN\",\n\t\t\t\t\t\t\t\t\"PALAPAR NORTE\",\n\t\t\t\t\t\t\t\t\"PALAPAR SUR\",\n\t\t\t\t\t\t\t\t\"PALONG\",\n\t\t\t\t\t\t\t\t\"PAMARANUM\",\n\t\t\t\t\t\t\t\t\"PASIMA\",\n\t\t\t\t\t\t\t\t\"PAYAR\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"POLONG NORTE\",\n\t\t\t\t\t\t\t\t\"POLONG SUR\",\n\t\t\t\t\t\t\t\t\"POTIOCAN\",\n\t\t\t\t\t\t\t\t\"SAN JULIAN\",\n\t\t\t\t\t\t\t\t\"TABO-SILI\",\n\t\t\t\t\t\t\t\t\"TALOSPATANG\",\n\t\t\t\t\t\t\t\t\"TALOY\",\n\t\t\t\t\t\t\t\t\"TALOYAN\",\n\t\t\t\t\t\t\t\t\"TAMBAC\",\n\t\t\t\t\t\t\t\t\"TOBOR\",\n\t\t\t\t\t\t\t\t\"TOLONGUAT\",\n\t\t\t\t\t\t\t\t\"TOMLING\",\n\t\t\t\t\t\t\t\t\"UMANDO\",\n\t\t\t\t\t\t\t\t\"VIADO\",\n\t\t\t\t\t\t\t\t\"WAIG\",\n\t\t\t\t\t\t\t\t\"WAREY\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"MANAOAG\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BABASIT\",\n\t\t\t\t\t\t\t\t\"BAGUINAY\",\n\t\t\t\t\t\t\t\t\"BARITAO\",\n\t\t\t\t\t\t\t\t\"BISAL\",\n\t\t\t\t\t\t\t\t\"BUCAO\",\n\t\t\t\t\t\t\t\t\"CABANBANAN\",\n\t\t\t\t\t\t\t\t\"CALAOCAN\",\n\t\t\t\t\t\t\t\t\"INAMOTAN\",\n\t\t\t\t\t\t\t\t\"LELEMAAN\",\n\t\t\t\t\t\t\t\t\"LICSI\",\n\t\t\t\t\t\t\t\t\"LIPIT NORTE\",\n\t\t\t\t\t\t\t\t\"LIPIT SUR\",\n\t\t\t\t\t\t\t\t\"MATOLONG\",\n\t\t\t\t\t\t\t\t\"MERMER\",\n\t\t\t\t\t\t\t\t\"NALSIAN\",\n\t\t\t\t\t\t\t\t\"ORAAN EAST\",\n\t\t\t\t\t\t\t\t\"ORAAN WEST\",\n\t\t\t\t\t\t\t\t\"PANTAL\",\n\t\t\t\t\t\t\t\t\"PAO\",\n\t\t\t\t\t\t\t\t\"PARIAN\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"PUGARO\",\n\t\t\t\t\t\t\t\t\"SAN RAMON\",\n\t\t\t\t\t\t\t\t\"SANTA INES\",\n\t\t\t\t\t\t\t\t\"SAPANG\",\n\t\t\t\t\t\t\t\t\"TEBUEL\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"MANGALDAN\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ALITAYA\",\n\t\t\t\t\t\t\t\t\"AMANSABINA\",\n\t\t\t\t\t\t\t\t\"ANOLID\",\n\t\t\t\t\t\t\t\t\"BANAOANG\",\n\t\t\t\t\t\t\t\t\"BANTAYAN\",\n\t\t\t\t\t\t\t\t\"BARI\",\n\t\t\t\t\t\t\t\t\"BATENG\",\n\t\t\t\t\t\t\t\t\"BUENLAG\",\n\t\t\t\t\t\t\t\t\"DAVID\",\n\t\t\t\t\t\t\t\t\"EMBARCADERO\",\n\t\t\t\t\t\t\t\t\"GUEGUESANGEN\",\n\t\t\t\t\t\t\t\t\"GUESANG\",\n\t\t\t\t\t\t\t\t\"GUIGUILONEN\",\n\t\t\t\t\t\t\t\t\"GUILIG\",\n\t\t\t\t\t\t\t\t\"INLAMBO\",\n\t\t\t\t\t\t\t\t\"LANAS\",\n\t\t\t\t\t\t\t\t\"LANDAS\",\n\t\t\t\t\t\t\t\t\"MAASIN\",\n\t\t\t\t\t\t\t\t\"MACAYUG\",\n\t\t\t\t\t\t\t\t\"MALABAGO\",\n\t\t\t\t\t\t\t\t\"NAVALUAN\",\n\t\t\t\t\t\t\t\t\"NIBALIW\",\n\t\t\t\t\t\t\t\t\"OSIEM\",\n\t\t\t\t\t\t\t\t\"PALUA\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"POGO\",\n\t\t\t\t\t\t\t\t\"SALAAN\",\n\t\t\t\t\t\t\t\t\"SALAY\",\n\t\t\t\t\t\t\t\t\"TALOGTOG\",\n\t\t\t\t\t\t\t\t\"TEBAG\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"MANGATAREM\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ANDANGIN\",\n\t\t\t\t\t\t\t\t\"ARELLANO STREET (POBLACION)\",\n\t\t\t\t\t\t\t\t\"BANTAY\",\n\t\t\t\t\t\t\t\t\"BANTOCALING\",\n\t\t\t\t\t\t\t\t\"BARACBAC\",\n\t\t\t\t\t\t\t\t\"BOGTONG BOLO\",\n\t\t\t\t\t\t\t\t\"BOGTONG BUNAO\",\n\t\t\t\t\t\t\t\t\"BOGTONG CENTRO\",\n\t\t\t\t\t\t\t\t\"BOGTONG NIOG\",\n\t\t\t\t\t\t\t\t\"BOGTONG SILAG\",\n\t\t\t\t\t\t\t\t\"BUAYA\",\n\t\t\t\t\t\t\t\t\"BUENLAG\",\n\t\t\t\t\t\t\t\t\"BUENO\",\n\t\t\t\t\t\t\t\t\"BUNAGAN\",\n\t\t\t\t\t\t\t\t\"BUNLALACAO\",\n\t\t\t\t\t\t\t\t\"BURGOS STREET (POBLACION)\",\n\t\t\t\t\t\t\t\t\"CABALUYAN 1ST\",\n\t\t\t\t\t\t\t\t\"CABALUYAN 2ND\",\n\t\t\t\t\t\t\t\t\"CABARABUAN\",\n\t\t\t\t\t\t\t\t\"CABARUAN\",\n\t\t\t\t\t\t\t\t\"CABAYAOASAN\",\n\t\t\t\t\t\t\t\t\"CABAYUGAN\",\n\t\t\t\t\t\t\t\t\"CACAOITEN\",\n\t\t\t\t\t\t\t\t\"CALUMBOYAN NORTE\",\n\t\t\t\t\t\t\t\t\"CALUMBOYAN SUR\",\n\t\t\t\t\t\t\t\t\"CALVO (POBLACION)\",\n\t\t\t\t\t\t\t\t\"CASILAGAN\",\n\t\t\t\t\t\t\t\t\"CATARATARAAN\",\n\t\t\t\t\t\t\t\t\"CATURAY NORTE\",\n\t\t\t\t\t\t\t\t\"CATURAY SUR\",\n\t\t\t\t\t\t\t\t\"CAVIERNESAN\",\n\t\t\t\t\t\t\t\t\"DORONGAN KETAKET\",\n\t\t\t\t\t\t\t\t\"DORONGAN LINMANSANGAN\",\n\t\t\t\t\t\t\t\t\"DORONGAN PUNTA\",\n\t\t\t\t\t\t\t\t\"DORONGAN SAWAT\",\n\t\t\t\t\t\t\t\t\"DORONGAN VALERIO\",\n\t\t\t\t\t\t\t\t\"GENERAL LUNA (POBLACION)\",\n\t\t\t\t\t\t\t\t\"HISTORIA\",\n\t\t\t\t\t\t\t\t\"LAWAK LANGKA\",\n\t\t\t\t\t\t\t\t\"LINMANSANGAN\",\n\t\t\t\t\t\t\t\t\"LOPEZ (POBLACION)\",\n\t\t\t\t\t\t\t\t\"MABINI (POBLACION)\",\n\t\t\t\t\t\t\t\t\"MACARANG\",\n\t\t\t\t\t\t\t\t\"MALABOBO\",\n\t\t\t\t\t\t\t\t\"MALIBONG\",\n\t\t\t\t\t\t\t\t\"MALUNEC\",\n\t\t\t\t\t\t\t\t\"MARAVILLA (POBLACION)\",\n\t\t\t\t\t\t\t\t\"MARAVILLA-ARELLANO EXTENSION (POBLACION)\",\n\t\t\t\t\t\t\t\t\"MUELANG\",\n\t\t\t\t\t\t\t\t\"NAGUILAYAN EAST\",\n\t\t\t\t\t\t\t\t\"NAGUILAYAN WEST\",\n\t\t\t\t\t\t\t\t\"NANCASALAN\",\n\t\t\t\t\t\t\t\t\"NIOG-CABISON-BULANEY\",\n\t\t\t\t\t\t\t\t\"OLEGARIO-CAOILE (POBLACION)\",\n\t\t\t\t\t\t\t\t\"OLO CACAMPOSAN\",\n\t\t\t\t\t\t\t\t\"OLO CAFABROSAN\",\n\t\t\t\t\t\t\t\t\"OLO CAGARLITAN\",\n\t\t\t\t\t\t\t\t\"OSME\u00D1A (POBLACION)\",\n\t\t\t\t\t\t\t\t\"PACALAT\",\n\t\t\t\t\t\t\t\t\"PAMPANO\",\n\t\t\t\t\t\t\t\t\"PARIAN\",\n\t\t\t\t\t\t\t\t\"PAUL\",\n\t\t\t\t\t\t\t\t\"PEANIA PEDANIA (BEDANIA)\",\n\t\t\t\t\t\t\t\t\"POGON-ANIAT\",\n\t\t\t\t\t\t\t\t\"POGON-LOMBOY (POBLACION)\",\n\t\t\t\t\t\t\t\t\"PONGLO MUELAG\",\n\t\t\t\t\t\t\t\t\"PONGLO-BALEG\",\n\t\t\t\t\t\t\t\t\"QUETEGAN (POGON-BALEG)\",\n\t\t\t\t\t\t\t\t\"QUEZON (POBLACION)\",\n\t\t\t\t\t\t\t\t\"SALAVANTE\",\n\t\t\t\t\t\t\t\t\"SAPANG\",\n\t\t\t\t\t\t\t\t\"SONSON ONGKIT\",\n\t\t\t\t\t\t\t\t\"SUACO\",\n\t\t\t\t\t\t\t\t\"TAGAC\",\n\t\t\t\t\t\t\t\t\"TAKIPAN\",\n\t\t\t\t\t\t\t\t\"TALOGTOG\",\n\t\t\t\t\t\t\t\t\"TOKOK BARIKIR\",\n\t\t\t\t\t\t\t\t\"TORRE 1ST\",\n\t\t\t\t\t\t\t\t\"TORRE 2ND\",\n\t\t\t\t\t\t\t\t\"TORRES BUGALLON (POBLACION)\",\n\t\t\t\t\t\t\t\t\"UMANGAN\",\n\t\t\t\t\t\t\t\t\"ZAMORA (POBLACION)\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"MAPANDAN\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"AMANOAOAC\",\n\t\t\t\t\t\t\t\t\"APAYA\",\n\t\t\t\t\t\t\t\t\"ASERDA\",\n\t\t\t\t\t\t\t\t\"BALOLING\",\n\t\t\t\t\t\t\t\t\"CORAL\",\n\t\t\t\t\t\t\t\t\"GOLDEN\",\n\t\t\t\t\t\t\t\t\"JIMENEZ\",\n\t\t\t\t\t\t\t\t\"LAMBAYAN\",\n\t\t\t\t\t\t\t\t\"LUYAN (LUYAN SOUTH)\",\n\t\t\t\t\t\t\t\t\"NILOMBOT\",\n\t\t\t\t\t\t\t\t\"PIAS\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"PRIMICIAS\",\n\t\t\t\t\t\t\t\t\"SANTA MARIA (LUYAN NORTH)\",\n\t\t\t\t\t\t\t\t\"TORRES\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"NATIVIDAD\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BARANGOBONG\",\n\t\t\t\t\t\t\t\t\"BATCHELOR EAST\",\n\t\t\t\t\t\t\t\t\"BATCHELOR WEST\",\n\t\t\t\t\t\t\t\t\"BURGOS (SAN NARCISO)\",\n\t\t\t\t\t\t\t\t\"CACANDUNGAN\",\n\t\t\t\t\t\t\t\t\"CALAPUGAN\",\n\t\t\t\t\t\t\t\t\"CANAREM\",\n\t\t\t\t\t\t\t\t\"LUNA\",\n\t\t\t\t\t\t\t\t\"POBLACION EAST\",\n\t\t\t\t\t\t\t\t\"POBLACION WEST\",\n\t\t\t\t\t\t\t\t\"RIZAL\",\n\t\t\t\t\t\t\t\t\"SALUD\",\n\t\t\t\t\t\t\t\t\"SAN EUGENIO\",\n\t\t\t\t\t\t\t\t\"SAN MACARIO NORTE\",\n\t\t\t\t\t\t\t\t\"SAN MACARIO SUR\",\n\t\t\t\t\t\t\t\t\"SAN MAXIMO\",\n\t\t\t\t\t\t\t\t\"SAN MIGUEL\",\n\t\t\t\t\t\t\t\t\"SILAG\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"POZORRUBIO\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ALIPANGPANG\",\n\t\t\t\t\t\t\t\t\"AMAGBAGAN\",\n\t\t\t\t\t\t\t\t\"BALACAG\",\n\t\t\t\t\t\t\t\t\"BANDING\",\n\t\t\t\t\t\t\t\t\"BANTUGAN\",\n\t\t\t\t\t\t\t\t\"BATAKIL\",\n\t\t\t\t\t\t\t\t\"BOBONAN\",\n\t\t\t\t\t\t\t\t\"BUNEG\",\n\t\t\t\t\t\t\t\t\"CABLONG\",\n\t\t\t\t\t\t\t\t\"CASANFERNANDOAN\",\n\t\t\t\t\t\t\t\t\"CASTA\u00D1O\",\n\t\t\t\t\t\t\t\t\"DILAN\",\n\t\t\t\t\t\t\t\t\"DON BENITO\",\n\t\t\t\t\t\t\t\t\"HAWAY\",\n\t\t\t\t\t\t\t\t\"IMBALBALATONG\",\n\t\t\t\t\t\t\t\t\"INOMAN\",\n\t\t\t\t\t\t\t\t\"LAOAC\",\n\t\t\t\t\t\t\t\t\"MAAMBAL\",\n\t\t\t\t\t\t\t\t\"MALASIN\",\n\t\t\t\t\t\t\t\t\"MALOKIAT\",\n\t\t\t\t\t\t\t\t\"MANAOL\",\n\t\t\t\t\t\t\t\t\"NAMA\",\n\t\t\t\t\t\t\t\t\"NANTANGALAN\",\n\t\t\t\t\t\t\t\t\"PALACPALAC\",\n\t\t\t\t\t\t\t\t\"PALGUYOD\",\n\t\t\t\t\t\t\t\t\"POBLACION I\",\n\t\t\t\t\t\t\t\t\"POBLACION II\",\n\t\t\t\t\t\t\t\t\"POBLACION III\",\n\t\t\t\t\t\t\t\t\"POBLACION IV\",\n\t\t\t\t\t\t\t\t\"ROSARIO\",\n\t\t\t\t\t\t\t\t\"SUGCONG\",\n\t\t\t\t\t\t\t\t\"TALOGTOG\",\n\t\t\t\t\t\t\t\t\"TULNAC\",\n\t\t\t\t\t\t\t\t\"VILLEGAS\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"ROSALES\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ACOP\",\n\t\t\t\t\t\t\t\t\"BAKITBAKIT\",\n\t\t\t\t\t\t\t\t\"BALINGCANAWAY\",\n\t\t\t\t\t\t\t\t\"CABALAOANGAN NORTE\",\n\t\t\t\t\t\t\t\t\"CABALAOANGAN SUR\",\n\t\t\t\t\t\t\t\t\"CALANUTAN (DON FELIX COLOMA)\",\n\t\t\t\t\t\t\t\t\"CAMANGAAN\",\n\t\t\t\t\t\t\t\t\"CAPITAN TOMAS\",\n\t\t\t\t\t\t\t\t\"CARMAY EAST\",\n\t\t\t\t\t\t\t\t\"CARMAY WEST\",\n\t\t\t\t\t\t\t\t\"CARMEN EAST\",\n\t\t\t\t\t\t\t\t\"CARMEN WEST\",\n\t\t\t\t\t\t\t\t\"CASANICOLASAN\",\n\t\t\t\t\t\t\t\t\"COLILING\",\n\t\t\t\t\t\t\t\t\"DON ANTONIO VILLAGE\",\n\t\t\t\t\t\t\t\t\"GUILING\",\n\t\t\t\t\t\t\t\t\"PALAKIPAK\",\n\t\t\t\t\t\t\t\t\"PANGAOAN\",\n\t\t\t\t\t\t\t\t\"RABAGO\",\n\t\t\t\t\t\t\t\t\"RIZAL\",\n\t\t\t\t\t\t\t\t\"SALVACION\",\n\t\t\t\t\t\t\t\t\"SAN ANGEL\",\n\t\t\t\t\t\t\t\t\"SAN ANTONIO\",\n\t\t\t\t\t\t\t\t\"SAN BARTOLOME\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO\",\n\t\t\t\t\t\t\t\t\"SAN LUIS\",\n\t\t\t\t\t\t\t\t\"SAN PEDRO EAST\",\n\t\t\t\t\t\t\t\t\"SAN PEDRO WEST\",\n\t\t\t\t\t\t\t\t\"SAN VICENTE\",\n\t\t\t\t\t\t\t\t\"STATION DISTRICT\",\n\t\t\t\t\t\t\t\t\"TOMANA EAST\",\n\t\t\t\t\t\t\t\t\"TOMANA WEST\",\n\t\t\t\t\t\t\t\t\"ZONE I (POBLACION)\",\n\t\t\t\t\t\t\t\t\"ZONE II (POBLACION)\",\n\t\t\t\t\t\t\t\t\"ZONE III (POBLACION)\",\n\t\t\t\t\t\t\t\t\"ZONE IV (POBLACION)\",\n\t\t\t\t\t\t\t\t\"ZONE V (POBLACION)\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"SAN CARLOS\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ABANON\",\n\t\t\t\t\t\t\t\t\"AGDAO\",\n\t\t\t\t\t\t\t\t\"ANANDO\",\n\t\t\t\t\t\t\t\t\"ANO\",\n\t\t\t\t\t\t\t\t\"ANTIPANGOL\",\n\t\t\t\t\t\t\t\t\"APONIT\",\n\t\t\t\t\t\t\t\t\"BACNAR\",\n\t\t\t\t\t\t\t\t\"BALAYA\",\n\t\t\t\t\t\t\t\t\"BALAYONG\",\n\t\t\t\t\t\t\t\t\"BALDOG\",\n\t\t\t\t\t\t\t\t\"BALITE SUR\",\n\t\t\t\t\t\t\t\t\"BALOCOC\",\n\t\t\t\t\t\t\t\t\"BANI\",\n\t\t\t\t\t\t\t\t\"BEGA\",\n\t\t\t\t\t\t\t\t\"BOCBOC\",\n\t\t\t\t\t\t\t\t\"BOGAOAN\",\n\t\t\t\t\t\t\t\t\"BOLINGIT\",\n\t\t\t\t\t\t\t\t\"BOLOSAN\",\n\t\t\t\t\t\t\t\t\"BONIFACIO (POBLACION)\",\n\t\t\t\t\t\t\t\t\"BUENGLAT\",\n\t\t\t\t\t\t\t\t\"BUGALLON-POSADAS STREET (POBLACION)\",\n\t\t\t\t\t\t\t\t\"BURGOS PADLAN (POBLACION)\",\n\t\t\t\t\t\t\t\t\"CACARITAN\",\n\t\t\t\t\t\t\t\t\"CAINGAL\",\n\t\t\t\t\t\t\t\t\"CALOBAOAN\",\n\t\t\t\t\t\t\t\t\"CALOMBOYAN\",\n\t\t\t\t\t\t\t\t\"CAOAYAN-KILING\",\n\t\t\t\t\t\t\t\t\"CAPATAAN\",\n\t\t\t\t\t\t\t\t\"COBOL\",\n\t\t\t\t\t\t\t\t\"COLILING\",\n\t\t\t\t\t\t\t\t\"CRUZ\",\n\t\t\t\t\t\t\t\t\"DOYONG\",\n\t\t\t\t\t\t\t\t\"GAMATA\",\n\t\t\t\t\t\t\t\t\"GUELEW\",\n\t\t\t\t\t\t\t\t\"ILANG\",\n\t\t\t\t\t\t\t\t\"INERANGAN\",\n\t\t\t\t\t\t\t\t\"ISLA\",\n\t\t\t\t\t\t\t\t\"LIBAS\",\n\t\t\t\t\t\t\t\t\"LILIMASAN\",\n\t\t\t\t\t\t\t\t\"LONGOS\",\n\t\t\t\t\t\t\t\t\"LUCBAN (POBLACION)\",\n\t\t\t\t\t\t\t\t\"M. SORIANO\",\n\t\t\t\t\t\t\t\t\"MABALBALINO\",\n\t\t\t\t\t\t\t\t\"MABINI (POBLACION)\",\n\t\t\t\t\t\t\t\t\"MAGTAKING\",\n\t\t\t\t\t\t\t\t\"MALACA\u00D1ANG\",\n\t\t\t\t\t\t\t\t\"MALIWARA\",\n\t\t\t\t\t\t\t\t\"MAMARLAO\",\n\t\t\t\t\t\t\t\t\"MANZON\",\n\t\t\t\t\t\t\t\t\"MATAGDEM\",\n\t\t\t\t\t\t\t\t\"MESTIZO NORTE\",\n\t\t\t\t\t\t\t\t\"NAGUILAYAN\",\n\t\t\t\t\t\t\t\t\"NILENTAP\",\n\t\t\t\t\t\t\t\t\"PADILLA-GOMEZ\",\n\t\t\t\t\t\t\t\t\"PAGAL\",\n\t\t\t\t\t\t\t\t\"PAITAN-PANOYPOY\",\n\t\t\t\t\t\t\t\t\"PALAMING\",\n\t\t\t\t\t\t\t\t\"PALARIS (POBLACION)\",\n\t\t\t\t\t\t\t\t\"PALOSPOS\",\n\t\t\t\t\t\t\t\t\"PANGALANGAN\",\n\t\t\t\t\t\t\t\t\"PANGOLOAN\",\n\t\t\t\t\t\t\t\t\"PANGPANG\",\n\t\t\t\t\t\t\t\t\"PARAYAO\",\n\t\t\t\t\t\t\t\t\"PAYAPA\",\n\t\t\t\t\t\t\t\t\"PAYAR\",\n\t\t\t\t\t\t\t\t\"PEREZ BOULEVARD (POBLACION)\",\n\t\t\t\t\t\t\t\t\"PNR STATION SITE\",\n\t\t\t\t\t\t\t\t\"POLO\",\n\t\t\t\t\t\t\t\t\"QUEZON BOULEVARD (POBLACION)\",\n\t\t\t\t\t\t\t\t\"QUINTONG\",\n\t\t\t\t\t\t\t\t\"RIZAL (POBLACION)\",\n\t\t\t\t\t\t\t\t\"ROXAS BOULEVARD (POBLACION)\",\n\t\t\t\t\t\t\t\t\"SALINAP\",\n\t\t\t\t\t\t\t\t\"SAN JUAN\",\n\t\t\t\t\t\t\t\t\"SAN PEDRO-TALOY\",\n\t\t\t\t\t\t\t\t\"SAPINIT\",\n\t\t\t\t\t\t\t\t\"SUPO\",\n\t\t\t\t\t\t\t\t\"TALANG\",\n\t\t\t\t\t\t\t\t\"TAMAYO\",\n\t\t\t\t\t\t\t\t\"TANDANG SORA\",\n\t\t\t\t\t\t\t\t\"TANDOC\",\n\t\t\t\t\t\t\t\t\"TARECE\",\n\t\t\t\t\t\t\t\t\"TARECTEC\",\n\t\t\t\t\t\t\t\t\"TAYAMBANI\",\n\t\t\t\t\t\t\t\t\"TEBAG\",\n\t\t\t\t\t\t\t\t\"TURAC\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"SAN FABIAN\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ALACAN\",\n\t\t\t\t\t\t\t\t\"AMBALANGAN-DALIN\",\n\t\t\t\t\t\t\t\t\"ANGIO\",\n\t\t\t\t\t\t\t\t\"ANONANG\",\n\t\t\t\t\t\t\t\t\"ARAMAL\",\n\t\t\t\t\t\t\t\t\"BIGBIGA\",\n\t\t\t\t\t\t\t\t\"BINDAY\",\n\t\t\t\t\t\t\t\t\"BOLAOEN\",\n\t\t\t\t\t\t\t\t\"BOLASI\",\n\t\t\t\t\t\t\t\t\"CABARUAN\",\n\t\t\t\t\t\t\t\t\"CAYANGA\",\n\t\t\t\t\t\t\t\t\"COLISAO\",\n\t\t\t\t\t\t\t\t\"GOMOT\",\n\t\t\t\t\t\t\t\t\"INMALOG\",\n\t\t\t\t\t\t\t\t\"INMALOG NORTE\",\n\t\t\t\t\t\t\t\t\"LEKEP-BUTAO\",\n\t\t\t\t\t\t\t\t\"LIPIT-TOMEENG\",\n\t\t\t\t\t\t\t\t\"LONGOS\",\n\t\t\t\t\t\t\t\t\"LONGOS PROPER\",\n\t\t\t\t\t\t\t\t\"LONGOS-AMANGONAN-PARAC-PARAC (FABRICA)\",\n\t\t\t\t\t\t\t\t\"MABILAO\",\n\t\t\t\t\t\t\t\t\"NIBALIW CENTRAL\",\n\t\t\t\t\t\t\t\t\"NIBALIW EAST\",\n\t\t\t\t\t\t\t\t\"NIBALIW MAGLIBA\",\n\t\t\t\t\t\t\t\t\"NIBALIW NARVARTE (NIBALIW WEST COMPOUND)\",\n\t\t\t\t\t\t\t\t\"NIBALIW VIDAL (NIBALIW WEST PROPER)\",\n\t\t\t\t\t\t\t\t\"PALAPAD\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"RABON\",\n\t\t\t\t\t\t\t\t\"SAGUD-BAHLEY\",\n\t\t\t\t\t\t\t\t\"SOBOL\",\n\t\t\t\t\t\t\t\t\"TEMPRA-GUILIG\",\n\t\t\t\t\t\t\t\t\"TIBLONG\",\n\t\t\t\t\t\t\t\t\"TOCOK\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"SAN JACINTO\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"AWAI\",\n\t\t\t\t\t\t\t\t\"BAGONG PAG-ASA (POBLACION EAST)\",\n\t\t\t\t\t\t\t\t\"BOLO\",\n\t\t\t\t\t\t\t\t\"CAPAOAY (POBLACION)\",\n\t\t\t\t\t\t\t\t\"CASIBONG\",\n\t\t\t\t\t\t\t\t\"GUIBEL\",\n\t\t\t\t\t\t\t\t\"IMELDA (DECRITO)\",\n\t\t\t\t\t\t\t\t\"LABNEY\",\n\t\t\t\t\t\t\t\t\"LOBONG\",\n\t\t\t\t\t\t\t\t\"MACAYUG\",\n\t\t\t\t\t\t\t\t\"MAGSAYSAY (CAPAY)\",\n\t\t\t\t\t\t\t\t\"SAN GUILLERMO (POBLACION WEST)\",\n\t\t\t\t\t\t\t\t\"SAN JOSE\",\n\t\t\t\t\t\t\t\t\"SAN JUAN\",\n\t\t\t\t\t\t\t\t\"SAN ROQUE\",\n\t\t\t\t\t\t\t\t\"SAN VICENTE\",\n\t\t\t\t\t\t\t\t\"SANTA CRUZ\",\n\t\t\t\t\t\t\t\t\"SANTA MARIA\",\n\t\t\t\t\t\t\t\t\"SANTO TOMAS\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"SAN MANUEL\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"CABACARAAN\",\n\t\t\t\t\t\t\t\t\"CABARITAN\",\n\t\t\t\t\t\t\t\t\"FLORES\",\n\t\t\t\t\t\t\t\t\"GUISET NORTE (POBLACION)\",\n\t\t\t\t\t\t\t\t\"GUISET SUR (POBLACION)\",\n\t\t\t\t\t\t\t\t\"LAPALO\",\n\t\t\t\t\t\t\t\t\"NAGSAAG\",\n\t\t\t\t\t\t\t\t\"NARRA\",\n\t\t\t\t\t\t\t\t\"SAN ANTONIO-ARZADON\",\n\t\t\t\t\t\t\t\t\"SAN BONIFACIO\",\n\t\t\t\t\t\t\t\t\"SAN JUAN\",\n\t\t\t\t\t\t\t\t\"SAN ROQUE\",\n\t\t\t\t\t\t\t\t\"SAN VICENTE\",\n\t\t\t\t\t\t\t\t\"SANTO DOMINGO\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"SAN NICOLAS\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BENSICAN\",\n\t\t\t\t\t\t\t\t\"CABITNONGAN\",\n\t\t\t\t\t\t\t\t\"CABOLOAN\",\n\t\t\t\t\t\t\t\t\"CACABUGAOAN\",\n\t\t\t\t\t\t\t\t\"CALANUTIAN\",\n\t\t\t\t\t\t\t\t\"CALAOCAN\",\n\t\t\t\t\t\t\t\t\"CAMANGGAAN\",\n\t\t\t\t\t\t\t\t\"CAMINDOROAN\",\n\t\t\t\t\t\t\t\t\"CASARATAN\",\n\t\t\t\t\t\t\t\t\"DALUMPINAS\",\n\t\t\t\t\t\t\t\t\"FIANZA\",\n\t\t\t\t\t\t\t\t\"LUNGAO\",\n\t\t\t\t\t\t\t\t\"MALICO\",\n\t\t\t\t\t\t\t\t\"MALILION\",\n\t\t\t\t\t\t\t\t\"NAGKAYSA\",\n\t\t\t\t\t\t\t\t\"NINING\",\n\t\t\t\t\t\t\t\t\"POBLACION EAST\",\n\t\t\t\t\t\t\t\t\"POBLACION WEST\",\n\t\t\t\t\t\t\t\t\"SALINGCOB\",\n\t\t\t\t\t\t\t\t\"SALPAD\",\n\t\t\t\t\t\t\t\t\"SAN FELIPE EAST\",\n\t\t\t\t\t\t\t\t\"SAN FELIPE WEST\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO (STA. CRUZAN)\",\n\t\t\t\t\t\t\t\t\"SAN JOSE\",\n\t\t\t\t\t\t\t\t\"SAN RAFAEL CENTRO\",\n\t\t\t\t\t\t\t\t\"SAN RAFAEL EAST\",\n\t\t\t\t\t\t\t\t\"SAN RAFAEL WEST\",\n\t\t\t\t\t\t\t\t\"SAN ROQUE\",\n\t\t\t\t\t\t\t\t\"SANTA MARIA EAST\",\n\t\t\t\t\t\t\t\t\"SANTA MARIA WEST\",\n\t\t\t\t\t\t\t\t\"SANTO TOMAS\",\n\t\t\t\t\t\t\t\t\"SIBLOT\",\n\t\t\t\t\t\t\t\t\"SOBOL\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"SAN QUINTIN\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ALAC\",\n\t\t\t\t\t\t\t\t\"BALIGAYAN\",\n\t\t\t\t\t\t\t\t\"BANTOG\",\n\t\t\t\t\t\t\t\t\"BOLINTAGUEN\",\n\t\t\t\t\t\t\t\t\"CABALAOANGAN\",\n\t\t\t\t\t\t\t\t\"CABANGARAN\",\n\t\t\t\t\t\t\t\t\"CALOMBOYAN\",\n\t\t\t\t\t\t\t\t\"CARAYACAN\",\n\t\t\t\t\t\t\t\t\"CASANTAMARIAN\",\n\t\t\t\t\t\t\t\t\"GONZALO\",\n\t\t\t\t\t\t\t\t\"LABUAN\",\n\t\t\t\t\t\t\t\t\"LAGASIT\",\n\t\t\t\t\t\t\t\t\"LUMAYAO\",\n\t\t\t\t\t\t\t\t\"MABINI\",\n\t\t\t\t\t\t\t\t\"MANTACDANG\",\n\t\t\t\t\t\t\t\t\"NANGAPUGAN\",\n\t\t\t\t\t\t\t\t\"POBLACION ZONE I\",\n\t\t\t\t\t\t\t\t\"POBLACION ZONE II\",\n\t\t\t\t\t\t\t\t\"POBLACION ZONE III\",\n\t\t\t\t\t\t\t\t\"SAN PEDRO\",\n\t\t\t\t\t\t\t\t\"UNGIB\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"SANTA BARBARA\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ALIBAGO\",\n\t\t\t\t\t\t\t\t\"BALINGUEO\",\n\t\t\t\t\t\t\t\t\"BANAOANG\",\n\t\t\t\t\t\t\t\t\"BANZAL\",\n\t\t\t\t\t\t\t\t\"BOTAO\",\n\t\t\t\t\t\t\t\t\"CABLONG\",\n\t\t\t\t\t\t\t\t\"CARUSOCAN\",\n\t\t\t\t\t\t\t\t\"DALONGUE\",\n\t\t\t\t\t\t\t\t\"ERFE\",\n\t\t\t\t\t\t\t\t\"GUEGUESANGEN\",\n\t\t\t\t\t\t\t\t\"LEET\",\n\t\t\t\t\t\t\t\t\"MALANAY\",\n\t\t\t\t\t\t\t\t\"MANINGDING\",\n\t\t\t\t\t\t\t\t\"MARONONG\",\n\t\t\t\t\t\t\t\t\"MATICMATIC\",\n\t\t\t\t\t\t\t\t\"MINIEN EAST\",\n\t\t\t\t\t\t\t\t\"MINIEN WEST\",\n\t\t\t\t\t\t\t\t\"NILOMBOT\",\n\t\t\t\t\t\t\t\t\"PATAYAC\",\n\t\t\t\t\t\t\t\t\"PAYAS\",\n\t\t\t\t\t\t\t\t\"POBLACION NORTE\",\n\t\t\t\t\t\t\t\t\"POBLACION SUR\",\n\t\t\t\t\t\t\t\t\"PRIMICIAS (VENTINILLA WEST)\",\n\t\t\t\t\t\t\t\t\"SAPANG\",\n\t\t\t\t\t\t\t\t\"SONQUIL\",\n\t\t\t\t\t\t\t\t\"TEBAG EAST\",\n\t\t\t\t\t\t\t\t\"TEBAG WEST\",\n\t\t\t\t\t\t\t\t\"TULIAO\",\n\t\t\t\t\t\t\t\t\"VENTINILLA (VENTINILLA EAST)\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"SANTA MARIA\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BAL-LOY\",\n\t\t\t\t\t\t\t\t\"BANTOG\",\n\t\t\t\t\t\t\t\t\"CABOLUAN\",\n\t\t\t\t\t\t\t\t\"CAL-LITANG\",\n\t\t\t\t\t\t\t\t\"CAPANDANAN\",\n\t\t\t\t\t\t\t\t\"CAUPLASAN\",\n\t\t\t\t\t\t\t\t\"DALAYAP\",\n\t\t\t\t\t\t\t\t\"LIBSONG\",\n\t\t\t\t\t\t\t\t\"NAMAGBAGAN\",\n\t\t\t\t\t\t\t\t\"PAITAN\",\n\t\t\t\t\t\t\t\t\"PATAQUID\",\n\t\t\t\t\t\t\t\t\"PILAR\",\n\t\t\t\t\t\t\t\t\"POBLACION EAST\",\n\t\t\t\t\t\t\t\t\"POBLACION WEST\",\n\t\t\t\t\t\t\t\t\"PUGOT\",\n\t\t\t\t\t\t\t\t\"SAMON\",\n\t\t\t\t\t\t\t\t\"SAN ALEJANDRO\",\n\t\t\t\t\t\t\t\t\"SAN MARIANO\",\n\t\t\t\t\t\t\t\t\"SAN PABLO\",\n\t\t\t\t\t\t\t\t\"SAN PATRICIO\",\n\t\t\t\t\t\t\t\t\"SAN VICENTE\",\n\t\t\t\t\t\t\t\t\"SANTA CRUZ\",\n\t\t\t\t\t\t\t\t\"SANTA ROSA\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"SANTO TOMAS\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"LA LUNA\",\n\t\t\t\t\t\t\t\t\"POBLACION EAST\",\n\t\t\t\t\t\t\t\t\"POBLACION WEST\",\n\t\t\t\t\t\t\t\t\"SALVACION\",\n\t\t\t\t\t\t\t\t\"SAN AGUSTIN\",\n\t\t\t\t\t\t\t\t\"SAN ANTONIO\",\n\t\t\t\t\t\t\t\t\"SAN JOSE\",\n\t\t\t\t\t\t\t\t\"SAN MARCOS\",\n\t\t\t\t\t\t\t\t\"SANTO DOMINGO\",\n\t\t\t\t\t\t\t\t\"SANTO NI\u00D1O\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"SISON\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"AGAT\",\n\t\t\t\t\t\t\t\t\"ALIBENG\",\n\t\t\t\t\t\t\t\t\"AMAGBAGAN\",\n\t\t\t\t\t\t\t\t\"ARTACHO\",\n\t\t\t\t\t\t\t\t\"ASAN NORTE\",\n\t\t\t\t\t\t\t\t\"ASAN SUR\",\n\t\t\t\t\t\t\t\t\"BANTAY INSIK\",\n\t\t\t\t\t\t\t\t\"BILA\",\n\t\t\t\t\t\t\t\t\"BINMECKEG\",\n\t\t\t\t\t\t\t\t\"BULAOEN EAST\",\n\t\t\t\t\t\t\t\t\"BULAOEN WEST\",\n\t\t\t\t\t\t\t\t\"CABARITAN\",\n\t\t\t\t\t\t\t\t\"CALUNETAN\",\n\t\t\t\t\t\t\t\t\"CAMANGAAN\",\n\t\t\t\t\t\t\t\t\"CAURINGAN\",\n\t\t\t\t\t\t\t\t\"DUNGON\",\n\t\t\t\t\t\t\t\t\"ESPERANZA\",\n\t\t\t\t\t\t\t\t\"INMALOG\",\n\t\t\t\t\t\t\t\t\"KILLO\",\n\t\t\t\t\t\t\t\t\"LABAYUG\",\n\t\t\t\t\t\t\t\t\"PALDIT\",\n\t\t\t\t\t\t\t\t\"PINDANGAN\",\n\t\t\t\t\t\t\t\t\"PINMILAPIL\",\n\t\t\t\t\t\t\t\t\"POBLACION CENTRAL\",\n\t\t\t\t\t\t\t\t\"POBLACION NORTE\",\n\t\t\t\t\t\t\t\t\"POBLACION SUR\",\n\t\t\t\t\t\t\t\t\"SAGUNTO\",\n\t\t\t\t\t\t\t\t\"TARA-TARA\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"SUAL\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BAQUIOEN\",\n\t\t\t\t\t\t\t\t\"BAYBAY NORTE\",\n\t\t\t\t\t\t\t\t\"BAYBAY SUR\",\n\t\t\t\t\t\t\t\t\"BOLAOEN\",\n\t\t\t\t\t\t\t\t\"CABALITIAN\",\n\t\t\t\t\t\t\t\t\"CALUMBUYAN\",\n\t\t\t\t\t\t\t\t\"CAMAGSINGALAN\",\n\t\t\t\t\t\t\t\t\"CAOAYAN\",\n\t\t\t\t\t\t\t\t\"CAPANTOLAN\",\n\t\t\t\t\t\t\t\t\"MACAYCAYAWAN\",\n\t\t\t\t\t\t\t\t\"PAITAN EAST\",\n\t\t\t\t\t\t\t\t\"PAITAN WEST\",\n\t\t\t\t\t\t\t\t\"PANGASCASAN\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"SANTO DOMINGO\",\n\t\t\t\t\t\t\t\t\"SESELANGEN\",\n\t\t\t\t\t\t\t\t\"SIOASIO EAST\",\n\t\t\t\t\t\t\t\t\"SIOASIO WEST\",\n\t\t\t\t\t\t\t\t\"VICTORIA\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"TAYUG\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"AGNO\",\n\t\t\t\t\t\t\t\t\"AMISTAD\",\n\t\t\t\t\t\t\t\t\"BARANGAY A (POBLACION)\",\n\t\t\t\t\t\t\t\t\"BARANGAY B (POBLACION)\",\n\t\t\t\t\t\t\t\t\"BARANGAY C (POBLACION)\",\n\t\t\t\t\t\t\t\t\"BARANGAY D (POBLACION)\",\n\t\t\t\t\t\t\t\t\"BARANGOBONG\",\n\t\t\t\t\t\t\t\t\"CARRIEDO\",\n\t\t\t\t\t\t\t\t\"CRISANTO LICHAUCO\",\n\t\t\t\t\t\t\t\t\"EVANGELISTA\",\n\t\t\t\t\t\t\t\t\"GUZON\",\n\t\t\t\t\t\t\t\t\"LAWAK\",\n\t\t\t\t\t\t\t\t\"LEGASPI\",\n\t\t\t\t\t\t\t\t\"LIBERTAD\",\n\t\t\t\t\t\t\t\t\"MAGALLANES\",\n\t\t\t\t\t\t\t\t\"PANGANIBAN\",\n\t\t\t\t\t\t\t\t\"SALENG\",\n\t\t\t\t\t\t\t\t\"SANTO DOMINGO\",\n\t\t\t\t\t\t\t\t\"TOKETEC\",\n\t\t\t\t\t\t\t\t\"TRENCHERA\",\n\t\t\t\t\t\t\t\t\"ZAMORA\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"UMINGAN\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ABOT MOLINA\",\n\t\t\t\t\t\t\t\t\"ALO-O\",\n\t\t\t\t\t\t\t\t\"AMARONAN\",\n\t\t\t\t\t\t\t\t\"ANNAM\",\n\t\t\t\t\t\t\t\t\"BANTUG\",\n\t\t\t\t\t\t\t\t\"BARACBAC\",\n\t\t\t\t\t\t\t\t\"BARAT\",\n\t\t\t\t\t\t\t\t\"BUENAVISTA\",\n\t\t\t\t\t\t\t\t\"CABALITIAN\",\n\t\t\t\t\t\t\t\t\"CABANGARAN\",\n\t\t\t\t\t\t\t\t\"CABARUAN\",\n\t\t\t\t\t\t\t\t\"CABATUAN\",\n\t\t\t\t\t\t\t\t\"CADIZ\",\n\t\t\t\t\t\t\t\t\"CALITLITAN\",\n\t\t\t\t\t\t\t\t\"CAPAS\",\n\t\t\t\t\t\t\t\t\"CARAYUNGAN SUR\",\n\t\t\t\t\t\t\t\t\"CAROSALESAN\",\n\t\t\t\t\t\t\t\t\"CASILAN\",\n\t\t\t\t\t\t\t\t\"CAURDANETAAN\",\n\t\t\t\t\t\t\t\t\"CONCEPCION\",\n\t\t\t\t\t\t\t\t\"DECRETO\",\n\t\t\t\t\t\t\t\t\"DEL ROSARIO\",\n\t\t\t\t\t\t\t\t\"DIAZ\",\n\t\t\t\t\t\t\t\t\"DIKET\",\n\t\t\t\t\t\t\t\t\"DON JUSTO ABALOS (CAROAN)\",\n\t\t\t\t\t\t\t\t\"DON MONTANO\",\n\t\t\t\t\t\t\t\t\"ESPERANZA\",\n\t\t\t\t\t\t\t\t\"EVANGELISTA\",\n\t\t\t\t\t\t\t\t\"FLORES\",\n\t\t\t\t\t\t\t\t\"FULGOSINO\",\n\t\t\t\t\t\t\t\t\"GONZALES\",\n\t\t\t\t\t\t\t\t\"LA PAZ\",\n\t\t\t\t\t\t\t\t\"LABUAN\",\n\t\t\t\t\t\t\t\t\"LAUREN\",\n\t\t\t\t\t\t\t\t\"LUBONG\",\n\t\t\t\t\t\t\t\t\"LUNA ESTE\",\n\t\t\t\t\t\t\t\t\"LUNA WESTE\",\n\t\t\t\t\t\t\t\t\"MANTACDANG\",\n\t\t\t\t\t\t\t\t\"MASEIL-SEIL\",\n\t\t\t\t\t\t\t\t\"NAMPALCAN\",\n\t\t\t\t\t\t\t\t\"NANCALABASAAN\",\n\t\t\t\t\t\t\t\t\"PANGANGAAN\",\n\t\t\t\t\t\t\t\t\"PAPALLASEN\",\n\t\t\t\t\t\t\t\t\"PEMIENTA\",\n\t\t\t\t\t\t\t\t\"POBLACION EAST\",\n\t\t\t\t\t\t\t\t\"POBLACION WEST\",\n\t\t\t\t\t\t\t\t\"PRADO\",\n\t\t\t\t\t\t\t\t\"RESURRECCION\",\n\t\t\t\t\t\t\t\t\"RICOS\",\n\t\t\t\t\t\t\t\t\"SAN ANDRES\",\n\t\t\t\t\t\t\t\t\"SAN JUAN\",\n\t\t\t\t\t\t\t\t\"SAN LEON\",\n\t\t\t\t\t\t\t\t\"SAN PABLO\",\n\t\t\t\t\t\t\t\t\"SAN VICENTE\",\n\t\t\t\t\t\t\t\t\"SANTA MARIA\",\n\t\t\t\t\t\t\t\t\"SANTA ROSA\",\n\t\t\t\t\t\t\t\t\"SINABAAN\",\n\t\t\t\t\t\t\t\t\"TANGGAL SAWANG\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"URBIZTONDO\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ANGATEL\",\n\t\t\t\t\t\t\t\t\"BALANGAY\",\n\t\t\t\t\t\t\t\t\"BATANGCAOA\",\n\t\t\t\t\t\t\t\t\"BAUG\",\n\t\t\t\t\t\t\t\t\"BAYAOAS\",\n\t\t\t\t\t\t\t\t\"BITUAG\",\n\t\t\t\t\t\t\t\t\"CAMAMBUGAN\",\n\t\t\t\t\t\t\t\t\"DALANGIRING\",\n\t\t\t\t\t\t\t\t\"DUPLAC\",\n\t\t\t\t\t\t\t\t\"GALARIN\",\n\t\t\t\t\t\t\t\t\"GUETEB\",\n\t\t\t\t\t\t\t\t\"MALACA\",\n\t\t\t\t\t\t\t\t\"MALAYO\",\n\t\t\t\t\t\t\t\t\"MALIBONG\",\n\t\t\t\t\t\t\t\t\"PASIBI EAST\",\n\t\t\t\t\t\t\t\t\"PASIBI WEST\",\n\t\t\t\t\t\t\t\t\"PISUAC\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"REAL\",\n\t\t\t\t\t\t\t\t\"SALAVANTE\",\n\t\t\t\t\t\t\t\t\"SAWAT\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"URDANETA\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ANONAS\",\n\t\t\t\t\t\t\t\t\"BACTAD EAST\",\n\t\t\t\t\t\t\t\t\"BAYAOAS\",\n\t\t\t\t\t\t\t\t\"BOLAOEN\",\n\t\t\t\t\t\t\t\t\"CABARUAN\",\n\t\t\t\t\t\t\t\t\"CABULOAN\",\n\t\t\t\t\t\t\t\t\"CAMANANG\",\n\t\t\t\t\t\t\t\t\"CAMANTILES\",\n\t\t\t\t\t\t\t\t\"CASANTAAN\",\n\t\t\t\t\t\t\t\t\"CATABLAN\",\n\t\t\t\t\t\t\t\t\"CAYAMBANAN\",\n\t\t\t\t\t\t\t\t\"CONSOLACION\",\n\t\t\t\t\t\t\t\t\"DILAN-PAURIDO\",\n\t\t\t\t\t\t\t\t\"LABIT PROPER\",\n\t\t\t\t\t\t\t\t\"LABIT WEST\",\n\t\t\t\t\t\t\t\t\"MABANOGBOG\",\n\t\t\t\t\t\t\t\t\"MACALONG\",\n\t\t\t\t\t\t\t\t\"NANCALOBASAAN\",\n\t\t\t\t\t\t\t\t\"NANCAMALIRAN EAST\",\n\t\t\t\t\t\t\t\t\"NANCAMALIRAN WEST\",\n\t\t\t\t\t\t\t\t\"NANCAYASAN\",\n\t\t\t\t\t\t\t\t\"OLTAMA\",\n\t\t\t\t\t\t\t\t\"PALINA EAST\",\n\t\t\t\t\t\t\t\t\"PALINA WEST\",\n\t\t\t\t\t\t\t\t\"PEDRO T. ORATA (BACTAD PROPER)\",\n\t\t\t\t\t\t\t\t\"PINMALUDPOD\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"SAN JOSE\",\n\t\t\t\t\t\t\t\t\"SAN VICENTE\",\n\t\t\t\t\t\t\t\t\"SANTA LUCIA\",\n\t\t\t\t\t\t\t\t\"SANTO DOMINGO\",\n\t\t\t\t\t\t\t\t\"SUGCONG\",\n\t\t\t\t\t\t\t\t\"TIPOSU\",\n\t\t\t\t\t\t\t\t\"TULONG\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"VILLASIS\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"AMAMPEREZ\",\n\t\t\t\t\t\t\t\t\"BACAG\",\n\t\t\t\t\t\t\t\t\"BARANGOBONG\",\n\t\t\t\t\t\t\t\t\"BARRACA\",\n\t\t\t\t\t\t\t\t\"CAPULAAN\",\n\t\t\t\t\t\t\t\t\"CARAMUTAN\",\n\t\t\t\t\t\t\t\t\"LA PAZ\",\n\t\t\t\t\t\t\t\t\"LABIT\",\n\t\t\t\t\t\t\t\t\"LIPAY\",\n\t\t\t\t\t\t\t\t\"LOMBOY\",\n\t\t\t\t\t\t\t\t\"PIAZ (PLAZA)\",\n\t\t\t\t\t\t\t\t\"ZONE V (POBLACION)\",\n\t\t\t\t\t\t\t\t\"ZONE I (POBLACION)\",\n\t\t\t\t\t\t\t\t\"ZONE II (POBLACION)\",\n\t\t\t\t\t\t\t\t\"ZONE III (POBLACION)\",\n\t\t\t\t\t\t\t\t\"ZONE IV (POBLACION)\",\n\t\t\t\t\t\t\t\t\"PUELAY\",\n\t\t\t\t\t\t\t\t\"SAN BLAS\",\n\t\t\t\t\t\t\t\t\"SAN NICOLAS\",\n\t\t\t\t\t\t\t\t\"TOMBOD\",\n\t\t\t\t\t\t\t\t\"UNZAD\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"REGION III\",\n\t\t\t\"provinces\": [{\n\t\t\t\t\t\"name\": \"AURORA\",\n\t\t\t\t\t\"cities\": [{\n\t\t\t\t\t\t\t\"name\": \"BALER\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BARANGAY I (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY II (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY III (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY IV (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY V (POB.)\",\n\t\t\t\t\t\t\t\t\"BUHANGIN\",\n\t\t\t\t\t\t\t\t\"CALABUANAN\",\n\t\t\t\t\t\t\t\t\"OBLIGACION\",\n\t\t\t\t\t\t\t\t\"PINGIT\",\n\t\t\t\t\t\t\t\t\"RESERVA\",\n\t\t\t\t\t\t\t\t\"SABANG\",\n\t\t\t\t\t\t\t\t\"SUCLAYIN\",\n\t\t\t\t\t\t\t\t\"ZABALI\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"CASIGURAN\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BARANGAY 1 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 2 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 3 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 4 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 5 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 6 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 7 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 8 (POB.)\",\n\t\t\t\t\t\t\t\t\"BIANUAN\",\n\t\t\t\t\t\t\t\t\"CALABGAN\",\n\t\t\t\t\t\t\t\t\"CALANGCUASAN\",\n\t\t\t\t\t\t\t\t\"CALANTAS\",\n\t\t\t\t\t\t\t\t\"COZO\",\n\t\t\t\t\t\t\t\t\"CULAT\",\n\t\t\t\t\t\t\t\t\"DIBACONG\",\n\t\t\t\t\t\t\t\t\"DIBET\",\n\t\t\t\t\t\t\t\t\"DITINAGYAN\",\n\t\t\t\t\t\t\t\t\"ESPERANZA\",\n\t\t\t\t\t\t\t\t\"ESTEVES\",\n\t\t\t\t\t\t\t\t\"LUAL\",\n\t\t\t\t\t\t\t\t\"MARIKIT\",\n\t\t\t\t\t\t\t\t\"SAN ILDEFONSO\",\n\t\t\t\t\t\t\t\t\"TABAS\",\n\t\t\t\t\t\t\t\t\"TINIB\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"DILASAG\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"DIAGYAN\",\n\t\t\t\t\t\t\t\t\"DICABASAN\",\n\t\t\t\t\t\t\t\t\"DILAGUIDI\",\n\t\t\t\t\t\t\t\t\"DIMASESET\",\n\t\t\t\t\t\t\t\t\"DINIOG\",\n\t\t\t\t\t\t\t\t\"ESPERANZA\",\n\t\t\t\t\t\t\t\t\"LAWANG\",\n\t\t\t\t\t\t\t\t\"MALIGAYA (POB.)\",\n\t\t\t\t\t\t\t\t\"MANGGITAHAN\",\n\t\t\t\t\t\t\t\t\"MASAGANA (POB.)\",\n\t\t\t\t\t\t\t\t\"URA\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"DINALUNGAN\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ABULEG\",\n\t\t\t\t\t\t\t\t\"DIBARAYBAY\",\n\t\t\t\t\t\t\t\t\"DITAWINI\",\n\t\t\t\t\t\t\t\t\"MAPALAD\",\n\t\t\t\t\t\t\t\t\"NIPOO (BULO)\",\n\t\t\t\t\t\t\t\t\"PALEG\",\n\t\t\t\t\t\t\t\t\"SIMBAHAN\",\n\t\t\t\t\t\t\t\t\"ZONE I (POB.)\",\n\t\t\t\t\t\t\t\t\"ZONE II (POB.)\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"DINGALAN\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"APLAYA\",\n\t\t\t\t\t\t\t\t\"BUTAS NA BATO\",\n\t\t\t\t\t\t\t\t\"CABOG (MATAWE)\",\n\t\t\t\t\t\t\t\t\"CARAGSACAN\",\n\t\t\t\t\t\t\t\t\"DAVILDAVILAN\",\n\t\t\t\t\t\t\t\t\"DIKAPANIKIAN\",\n\t\t\t\t\t\t\t\t\"IBONA\",\n\t\t\t\t\t\t\t\t\"PALTIC\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"TANAWAN\",\n\t\t\t\t\t\t\t\t\"UMIRAY (MALAMIG)\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"DIPACULAO\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BAYABAS\",\n\t\t\t\t\t\t\t\t\"BORLONGAN\",\n\t\t\t\t\t\t\t\t\"BUENAVISTA\",\n\t\t\t\t\t\t\t\t\"CALAOCAN\",\n\t\t\t\t\t\t\t\t\"DIAMANEN\",\n\t\t\t\t\t\t\t\t\"DIANED\",\n\t\t\t\t\t\t\t\t\"DIARABASIN\",\n\t\t\t\t\t\t\t\t\"DIBUTUNAN\",\n\t\t\t\t\t\t\t\t\"DIMABUNO\",\n\t\t\t\t\t\t\t\t\"DINADIAWAN\",\n\t\t\t\t\t\t\t\t\"DITALE\",\n\t\t\t\t\t\t\t\t\"GUPA\",\n\t\t\t\t\t\t\t\t\"IPIL\",\n\t\t\t\t\t\t\t\t\"LABOY\",\n\t\t\t\t\t\t\t\t\"LIPIT\",\n\t\t\t\t\t\t\t\t\"LOBBOT\",\n\t\t\t\t\t\t\t\t\"MALIGAYA\",\n\t\t\t\t\t\t\t\t\"MIJARES\",\n\t\t\t\t\t\t\t\t\"MUCDOL\",\n\t\t\t\t\t\t\t\t\"NORTH POBLACION\",\n\t\t\t\t\t\t\t\t\"PUANGI\",\n\t\t\t\t\t\t\t\t\"SALAY\",\n\t\t\t\t\t\t\t\t\"SAPANGKAWAYAN\",\n\t\t\t\t\t\t\t\t\"SOUTH POBLACION\",\n\t\t\t\t\t\t\t\t\"TOYTOYAN\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"MARIA AURORA\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ALCALA\",\n\t\t\t\t\t\t\t\t\"BAGTU\",\n\t\t\t\t\t\t\t\t\"BANGCO\",\n\t\t\t\t\t\t\t\t\"BANNAWAG\",\n\t\t\t\t\t\t\t\t\"BARANGAY I (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY II (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY III (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY IV (POB.)\",\n\t\t\t\t\t\t\t\t\"BAUBO\",\n\t\t\t\t\t\t\t\t\"BAYANIHAN\",\n\t\t\t\t\t\t\t\t\"BAZAL\",\n\t\t\t\t\t\t\t\t\"CABITUCULAN EAST\",\n\t\t\t\t\t\t\t\t\"CABITUCULAN WEST\",\n\t\t\t\t\t\t\t\t\"CADAYACAN\",\n\t\t\t\t\t\t\t\t\"DEBUCAO\",\n\t\t\t\t\t\t\t\t\"DECOLIAT\",\n\t\t\t\t\t\t\t\t\"DETAILEN\",\n\t\t\t\t\t\t\t\t\"DIAAT\",\n\t\t\t\t\t\t\t\t\"DIALATMAN\",\n\t\t\t\t\t\t\t\t\"DIAMAN\",\n\t\t\t\t\t\t\t\t\"DIANAWAN\",\n\t\t\t\t\t\t\t\t\"DIKILDIT\",\n\t\t\t\t\t\t\t\t\"DIMANPUDSO\",\n\t\t\t\t\t\t\t\t\"DIOME\",\n\t\t\t\t\t\t\t\t\"ESTONILO\",\n\t\t\t\t\t\t\t\t\"FLORIDA\",\n\t\t\t\t\t\t\t\t\"GALINTUJA\",\n\t\t\t\t\t\t\t\t\"MALASIN\",\n\t\t\t\t\t\t\t\t\"PONGLO\",\n\t\t\t\t\t\t\t\t\"QUIRINO\",\n\t\t\t\t\t\t\t\t\"RAMADA\",\n\t\t\t\t\t\t\t\t\"SAN JOAQUIN\",\n\t\t\t\t\t\t\t\t\"SAN JOSE\",\n\t\t\t\t\t\t\t\t\"SAN JUAN\",\n\t\t\t\t\t\t\t\t\"SAN LEONARDO\",\n\t\t\t\t\t\t\t\t\"SANTA LUCIA\",\n\t\t\t\t\t\t\t\t\"SANTO TOMAS\",\n\t\t\t\t\t\t\t\t\"SUGUIT\",\n\t\t\t\t\t\t\t\t\"VILLA AURORA\",\n\t\t\t\t\t\t\t\t\"WENCESLAO\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"SAN LUIS\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BACONG\",\n\t\t\t\t\t\t\t\t\"BARANGAY I (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY II (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY III (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY IV (POB.)\",\n\t\t\t\t\t\t\t\t\"DIBALO\",\n\t\t\t\t\t\t\t\t\"DIBAYABAY\",\n\t\t\t\t\t\t\t\t\"DIBUT\",\n\t\t\t\t\t\t\t\t\"DIKAPINISAN\",\n\t\t\t\t\t\t\t\t\"DIMANAYAT\",\n\t\t\t\t\t\t\t\t\"DITEKI\",\n\t\t\t\t\t\t\t\t\"DITUMABO\",\n\t\t\t\t\t\t\t\t\"L. PIMENTEL\",\n\t\t\t\t\t\t\t\t\"NONONG SENIOR\",\n\t\t\t\t\t\t\t\t\"REAL\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO\",\n\t\t\t\t\t\t\t\t\"SAN JOSE\",\n\t\t\t\t\t\t\t\t\"ZARAH\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"BATAAN\",\n\t\t\t\t\t\"cities\": [{\n\t\t\t\t\t\t\t\"name\": \"ABUCAY\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BANGKAL\",\n\t\t\t\t\t\t\t\t\"CALAYLAYAN (POB.)\",\n\t\t\t\t\t\t\t\t\"CAPITANGAN\",\n\t\t\t\t\t\t\t\t\"GABON\",\n\t\t\t\t\t\t\t\t\"LAON (POB.)\",\n\t\t\t\t\t\t\t\t\"MABATANG\",\n\t\t\t\t\t\t\t\t\"OMBOY\",\n\t\t\t\t\t\t\t\t\"SALIAN\",\n\t\t\t\t\t\t\t\t\"WAWA (POB.)\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"BAGAC\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ATILANO L. RICARDO\",\n\t\t\t\t\t\t\t\t\"BAGUMBAYAN (POB.)\",\n\t\t\t\t\t\t\t\t\"BANAWANG\",\n\t\t\t\t\t\t\t\t\"BINUANGAN\",\n\t\t\t\t\t\t\t\t\"BINUKAWAN\",\n\t\t\t\t\t\t\t\t\"IBABA\",\n\t\t\t\t\t\t\t\t\"IBIS\",\n\t\t\t\t\t\t\t\t\"PAG-ASA (WAWA-SIBACAN)\",\n\t\t\t\t\t\t\t\t\"PARANG\",\n\t\t\t\t\t\t\t\t\"PAYSAWAN\",\n\t\t\t\t\t\t\t\t\"QUINAWAN\",\n\t\t\t\t\t\t\t\t\"SAN ANTONIO\",\n\t\t\t\t\t\t\t\t\"SAYSAIN\",\n\t\t\t\t\t\t\t\t\"TABING-ILOG (POB.)\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"CITY OF BALANGA\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BAGONG SILANG\",\n\t\t\t\t\t\t\t\t\"BAGUMBAYAN\",\n\t\t\t\t\t\t\t\t\"CABOG-CABOG\",\n\t\t\t\t\t\t\t\t\"CAMACHO\",\n\t\t\t\t\t\t\t\t\"CATANING\",\n\t\t\t\t\t\t\t\t\"CENTRAL\",\n\t\t\t\t\t\t\t\t\"CUPANG NORTH\",\n\t\t\t\t\t\t\t\t\"CUPANG PROPER\",\n\t\t\t\t\t\t\t\t\"CUPANG WEST\",\n\t\t\t\t\t\t\t\t\"DANGCOL (BERNABE)\",\n\t\t\t\t\t\t\t\t\"DO\u00F1A FRANCISCA\",\n\t\t\t\t\t\t\t\t\"IBAYO\",\n\t\t\t\t\t\t\t\t\"LOTE\",\n\t\t\t\t\t\t\t\t\"MALABIA\",\n\t\t\t\t\t\t\t\t\"MUNTING BATANGAS (CADRE)\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"PTO. RIVAS IBABA\",\n\t\t\t\t\t\t\t\t\"PTO. RIVAS ITAAS\",\n\t\t\t\t\t\t\t\t\"SAN JOSE\",\n\t\t\t\t\t\t\t\t\"SIBACAN\",\n\t\t\t\t\t\t\t\t\"TALISAY\",\n\t\t\t\t\t\t\t\t\"TANATO\",\n\t\t\t\t\t\t\t\t\"TENEJERO\",\n\t\t\t\t\t\t\t\t\"TORTUGAS\",\n\t\t\t\t\t\t\t\t\"TUYO\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"DINALUPIHAN\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"AQUINO\",\n\t\t\t\t\t\t\t\t\"BANGAL\",\n\t\t\t\t\t\t\t\t\"BAYAN-BAYANAN\",\n\t\t\t\t\t\t\t\t\"BONIFACIO (POB.)\",\n\t\t\t\t\t\t\t\t\"BURGOS (POB.)\",\n\t\t\t\t\t\t\t\t\"COLO\",\n\t\t\t\t\t\t\t\t\"DAANG BAGO\",\n\t\t\t\t\t\t\t\t\"DALAO\",\n\t\t\t\t\t\t\t\t\"DEL PILAR (POB.)\",\n\t\t\t\t\t\t\t\t\"GEN. LUNA (POB.)\",\n\t\t\t\t\t\t\t\t\"GOMEZ (POB.)\",\n\t\t\t\t\t\t\t\t\"HAPPY VALLEY\",\n\t\t\t\t\t\t\t\t\"JOSE C. PAYUMO, JR.\",\n\t\t\t\t\t\t\t\t\"KATAASAN\",\n\t\t\t\t\t\t\t\t\"LAYAC\",\n\t\t\t\t\t\t\t\t\"LUACAN\",\n\t\t\t\t\t\t\t\t\"MABINI EXT. (POB.)\",\n\t\t\t\t\t\t\t\t\"MABINI PROPER (POB.)\",\n\t\t\t\t\t\t\t\t\"MAGSAYSAY\",\n\t\t\t\t\t\t\t\t\"MALIGAYA\",\n\t\t\t\t\t\t\t\t\"NAPARING\",\n\t\t\t\t\t\t\t\t\"NEW SAN JOSE\",\n\t\t\t\t\t\t\t\t\"OLD SAN JOSE\",\n\t\t\t\t\t\t\t\t\"PADRE DANDAN (POB.)\",\n\t\t\t\t\t\t\t\t\"PAGALANGGANG\",\n\t\t\t\t\t\t\t\t\"PAG-ASA\",\n\t\t\t\t\t\t\t\t\"PAYANGAN\",\n\t\t\t\t\t\t\t\t\"PENTOR\",\n\t\t\t\t\t\t\t\t\"PINULOT\",\n\t\t\t\t\t\t\t\t\"PITA\",\n\t\t\t\t\t\t\t\t\"RIZAL (POB.)\",\n\t\t\t\t\t\t\t\t\"ROOSEVELT\",\n\t\t\t\t\t\t\t\t\"ROXAS (POB.)\",\n\t\t\t\t\t\t\t\t\"SAGUING\",\n\t\t\t\t\t\t\t\t\"SAN BENITO\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO (POB.)\",\n\t\t\t\t\t\t\t\t\"SAN PABLO (BULATE)\",\n\t\t\t\t\t\t\t\t\"SAN RAMON\",\n\t\t\t\t\t\t\t\t\"SAN SIMON\",\n\t\t\t\t\t\t\t\t\"SANTA ISABEL (TABACAN)\",\n\t\t\t\t\t\t\t\t\"SANTO NI\u00D1O\",\n\t\t\t\t\t\t\t\t\"SAPANG BALAS\",\n\t\t\t\t\t\t\t\t\"TORRES BUGAUEN (POB.)\",\n\t\t\t\t\t\t\t\t\"TUBO-TUBO\",\n\t\t\t\t\t\t\t\t\"TUCOP\",\n\t\t\t\t\t\t\t\t\"ZAMORA (POB.)\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"HERMOSA\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"A. RIVERA (POB.)\",\n\t\t\t\t\t\t\t\t\"ALMACEN\",\n\t\t\t\t\t\t\t\t\"BACONG\",\n\t\t\t\t\t\t\t\t\"BALSIC\",\n\t\t\t\t\t\t\t\t\"BAMBAN\",\n\t\t\t\t\t\t\t\t\"BURGOS-SOLIMAN (POB.)\",\n\t\t\t\t\t\t\t\t\"CATANING (POB.)\",\n\t\t\t\t\t\t\t\t\"CULIS\",\n\t\t\t\t\t\t\t\t\"DAUNGAN (POB.)\",\n\t\t\t\t\t\t\t\t\"JUDGE ROMAN CRUZ SR. (MANDAMA)\",\n\t\t\t\t\t\t\t\t\"MABIGA\",\n\t\t\t\t\t\t\t\t\"MABUCO\",\n\t\t\t\t\t\t\t\t\"MAITE\",\n\t\t\t\t\t\t\t\t\"MAMBOG - MANDAMA\",\n\t\t\t\t\t\t\t\t\"PALIHAN\",\n\t\t\t\t\t\t\t\t\"PANDATUNG\",\n\t\t\t\t\t\t\t\t\"PULO\",\n\t\t\t\t\t\t\t\t\"SABA\",\n\t\t\t\t\t\t\t\t\"SACRIFICE VALLEY\",\n\t\t\t\t\t\t\t\t\"SAN PEDRO (POB.)\",\n\t\t\t\t\t\t\t\t\"SANTO CRISTO (POB.)\",\n\t\t\t\t\t\t\t\t\"SUMALO\",\n\t\t\t\t\t\t\t\t\"TIPO\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"LIMAY\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ALANGAN\",\n\t\t\t\t\t\t\t\t\"DUALE\",\n\t\t\t\t\t\t\t\t\"KITANG 2 & LUZ\",\n\t\t\t\t\t\t\t\t\"KITANG I\",\n\t\t\t\t\t\t\t\t\"LAMAO\",\n\t\t\t\t\t\t\t\t\"LANDING\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"REFORMISTA\",\n\t\t\t\t\t\t\t\t\"SAN FRANCISCO DE ASIS\",\n\t\t\t\t\t\t\t\t\"ST. FRANCIS II\",\n\t\t\t\t\t\t\t\t\"TOWNSITE\",\n\t\t\t\t\t\t\t\t\"WAWA\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"MARIVELES\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ALAS-ASIN\",\n\t\t\t\t\t\t\t\t\"ALION\",\n\t\t\t\t\t\t\t\t\"BALON-ANITO\",\n\t\t\t\t\t\t\t\t\"BASECO COUNTRY (NASSCO)\",\n\t\t\t\t\t\t\t\t\"BATANGAS II\",\n\t\t\t\t\t\t\t\t\"BIAAN\",\n\t\t\t\t\t\t\t\t\"CABCABEN\",\n\t\t\t\t\t\t\t\t\"CAMAYA\",\n\t\t\t\t\t\t\t\t\"IPAG\",\n\t\t\t\t\t\t\t\t\"LUCANIN\",\n\t\t\t\t\t\t\t\t\"MALAYA\",\n\t\t\t\t\t\t\t\t\"MALIGAYA\",\n\t\t\t\t\t\t\t\t\"MT. VIEW\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"SAN CARLOS\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO\",\n\t\t\t\t\t\t\t\t\"SISIMAN\",\n\t\t\t\t\t\t\t\t\"TOWNSITE\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"MORONG\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BINARITAN\",\n\t\t\t\t\t\t\t\t\"MABAYO\",\n\t\t\t\t\t\t\t\t\"NAGBALAYONG\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"SABANG\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"ORANI\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"APOLLO\",\n\t\t\t\t\t\t\t\t\"BAGONG PARAISO (POB.)\",\n\t\t\t\t\t\t\t\t\"BALUT (POB.)\",\n\t\t\t\t\t\t\t\t\"BAYAN (POB.)\",\n\t\t\t\t\t\t\t\t\"CALERO (POB.)\",\n\t\t\t\t\t\t\t\t\"CENTRO I (POB.)\",\n\t\t\t\t\t\t\t\t\"CENTRO II (POB.)\",\n\t\t\t\t\t\t\t\t\"DONA\",\n\t\t\t\t\t\t\t\t\"KABALUTAN\",\n\t\t\t\t\t\t\t\t\"KAPARANGAN\",\n\t\t\t\t\t\t\t\t\"MARIA FE\",\n\t\t\t\t\t\t\t\t\"MASANTOL\",\n\t\t\t\t\t\t\t\t\"MULAWIN\",\n\t\t\t\t\t\t\t\t\"PAG-ASA\",\n\t\t\t\t\t\t\t\t\"PAKING-CARBONERO (POB.)\",\n\t\t\t\t\t\t\t\t\"PALIHAN (POB.)\",\n\t\t\t\t\t\t\t\t\"PANTALAN BAGO (POB.)\",\n\t\t\t\t\t\t\t\t\"PANTALAN LUMA (POB.)\",\n\t\t\t\t\t\t\t\t\"PARANG PARANG (POB.)\",\n\t\t\t\t\t\t\t\t\"PUKSUAN\",\n\t\t\t\t\t\t\t\t\"SIBUL\",\n\t\t\t\t\t\t\t\t\"SILAHIS\",\n\t\t\t\t\t\t\t\t\"TAGUMPAY\",\n\t\t\t\t\t\t\t\t\"TALA\",\n\t\t\t\t\t\t\t\t\"TALIMUNDOC\",\n\t\t\t\t\t\t\t\t\"TAPULAO\",\n\t\t\t\t\t\t\t\t\"TENEJERO (POB.)\",\n\t\t\t\t\t\t\t\t\"TUGATOG\",\n\t\t\t\t\t\t\t\t\"WAWA (POB.)\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"ORION\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ARELLANO (POB.)\",\n\t\t\t\t\t\t\t\t\"BAGUMBAYAN (POB.)\",\n\t\t\t\t\t\t\t\t\"BALAGTAS (POB.)\",\n\t\t\t\t\t\t\t\t\"BALUT (POB.)\",\n\t\t\t\t\t\t\t\t\"BANTAN\",\n\t\t\t\t\t\t\t\t\"BILOLO\",\n\t\t\t\t\t\t\t\t\"CALUNGUSAN\",\n\t\t\t\t\t\t\t\t\"CAMACHILE\",\n\t\t\t\t\t\t\t\t\"DAANG BAGO (POB.)\",\n\t\t\t\t\t\t\t\t\"DAANG BILOLO (POB.)\",\n\t\t\t\t\t\t\t\t\"DAANG PARE\",\n\t\t\t\t\t\t\t\t\"GENERAL LIM (KAPUT)\",\n\t\t\t\t\t\t\t\t\"KAPUNITAN\",\n\t\t\t\t\t\t\t\t\"LATI (POB.)\",\n\t\t\t\t\t\t\t\t\"LUSUNGAN (POB.)\",\n\t\t\t\t\t\t\t\t\"PUTING BUHANGIN\",\n\t\t\t\t\t\t\t\t\"SABATAN\",\n\t\t\t\t\t\t\t\t\"SAN VICENTE (POB.)\",\n\t\t\t\t\t\t\t\t\"SANTA ELENA\",\n\t\t\t\t\t\t\t\t\"SANTO DOMINGO\",\n\t\t\t\t\t\t\t\t\"VILLA ANGELES (POB.)\",\n\t\t\t\t\t\t\t\t\"WAKAS (POB.)\",\n\t\t\t\t\t\t\t\t\"WAWA (POB.)\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"PILAR\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ALA-ULI\",\n\t\t\t\t\t\t\t\t\"BAGUMBAYAN\",\n\t\t\t\t\t\t\t\t\"BALUT I\",\n\t\t\t\t\t\t\t\t\"BALUT II\",\n\t\t\t\t\t\t\t\t\"BANTAN MUNTI\",\n\t\t\t\t\t\t\t\t\"BURGOS\",\n\t\t\t\t\t\t\t\t\"DEL ROSARIO (POB.)\",\n\t\t\t\t\t\t\t\t\"DIWA\",\n\t\t\t\t\t\t\t\t\"LANDING\",\n\t\t\t\t\t\t\t\t\"LIYANG\",\n\t\t\t\t\t\t\t\t\"NAGWALING\",\n\t\t\t\t\t\t\t\t\"PANILAO\",\n\t\t\t\t\t\t\t\t\"PANTINGAN\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"RIZAL (POB.)\",\n\t\t\t\t\t\t\t\t\"SANTA ROSA\",\n\t\t\t\t\t\t\t\t\"WAKAS NORTH\",\n\t\t\t\t\t\t\t\t\"WAKAS SOUTH\",\n\t\t\t\t\t\t\t\t\"WAWA\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"SAMAL\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"EAST CALAGUIMAN (POB.)\",\n\t\t\t\t\t\t\t\t\"EAST DAANG BAGO (POB.)\",\n\t\t\t\t\t\t\t\t\"GUGO\",\n\t\t\t\t\t\t\t\t\"IBABA (POB.)\",\n\t\t\t\t\t\t\t\t\"IMELDA\",\n\t\t\t\t\t\t\t\t\"LALAWIGAN\",\n\t\t\t\t\t\t\t\t\"PALILI\",\n\t\t\t\t\t\t\t\t\"SAN JUAN (POB.)\",\n\t\t\t\t\t\t\t\t\"SAN ROQUE (POB.)\",\n\t\t\t\t\t\t\t\t\"SANTA LUCIA\",\n\t\t\t\t\t\t\t\t\"SAPA\",\n\t\t\t\t\t\t\t\t\"TABING ILOG\",\n\t\t\t\t\t\t\t\t\"WEST CALAGUIMAN (POB.)\",\n\t\t\t\t\t\t\t\t\"WEST DAANG BAGO (POB.)\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"BULACAN\",\n\t\t\t\t\t\"cities\": [{\n\t\t\t\t\t\t\t\"name\": \"ANGAT\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BANABAN\",\n\t\t\t\t\t\t\t\t\"BAYBAY\",\n\t\t\t\t\t\t\t\t\"BINAGBAG\",\n\t\t\t\t\t\t\t\t\"DONACION\",\n\t\t\t\t\t\t\t\t\"ENCANTO\",\n\t\t\t\t\t\t\t\t\"LAOG\",\n\t\t\t\t\t\t\t\t\"MARUNGKO\",\n\t\t\t\t\t\t\t\t\"NIUGAN\",\n\t\t\t\t\t\t\t\t\"PALTOK\",\n\t\t\t\t\t\t\t\t\"PULONG YANTOK\",\n\t\t\t\t\t\t\t\t\"SAN ROQUE (POB.)\",\n\t\t\t\t\t\t\t\t\"SANTA CRUZ (POB.)\",\n\t\t\t\t\t\t\t\t\"SANTA LUCIA\",\n\t\t\t\t\t\t\t\t\"SANTO CRISTO (POB.)\",\n\t\t\t\t\t\t\t\t\"SULUCAN\",\n\t\t\t\t\t\t\t\t\"TABOC\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"BALAGTAS\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BOROL 1ST\",\n\t\t\t\t\t\t\t\t\"BOROL 2ND\",\n\t\t\t\t\t\t\t\t\"DALIG\",\n\t\t\t\t\t\t\t\t\"LONGOS\",\n\t\t\t\t\t\t\t\t\"PANGINAY\",\n\t\t\t\t\t\t\t\t\"PULONG GUBAT\",\n\t\t\t\t\t\t\t\t\"SAN JUAN\",\n\t\t\t\t\t\t\t\t\"SANTOL\",\n\t\t\t\t\t\t\t\t\"WAWA (POB.)\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"BALIUAG\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BAGONG NAYON\",\n\t\t\t\t\t\t\t\t\"BARANGCA\",\n\t\t\t\t\t\t\t\t\"CALANTIPAY\",\n\t\t\t\t\t\t\t\t\"CATULINAN\",\n\t\t\t\t\t\t\t\t\"CONCEPCION\",\n\t\t\t\t\t\t\t\t\"HINUKAY\",\n\t\t\t\t\t\t\t\t\"MAKINABANG\",\n\t\t\t\t\t\t\t\t\"MATANGTUBIG\",\n\t\t\t\t\t\t\t\t\"PAGALA\",\n\t\t\t\t\t\t\t\t\"PAITAN\",\n\t\t\t\t\t\t\t\t\"PIEL\",\n\t\t\t\t\t\t\t\t\"PINAGBARILAN\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"SABANG\",\n\t\t\t\t\t\t\t\t\"SAN JOSE\",\n\t\t\t\t\t\t\t\t\"SAN ROQUE\",\n\t\t\t\t\t\t\t\t\"SANTA BARBARA\",\n\t\t\t\t\t\t\t\t\"SANTO CRISTO\",\n\t\t\t\t\t\t\t\t\"SANTO NI\u00D1O\",\n\t\t\t\t\t\t\t\t\"SUBIC\",\n\t\t\t\t\t\t\t\t\"SULIVAN\",\n\t\t\t\t\t\t\t\t\"TANGOS\",\n\t\t\t\t\t\t\t\t\"TARCAN\",\n\t\t\t\t\t\t\t\t\"TIAONG\",\n\t\t\t\t\t\t\t\t\"TIBAG\",\n\t\t\t\t\t\t\t\t\"TILAPAYONG\",\n\t\t\t\t\t\t\t\t\"VIRGEN DELAS FLORES\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"BOCAUE\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ANTIPONA\",\n\t\t\t\t\t\t\t\t\"BAGUMBAYAN\",\n\t\t\t\t\t\t\t\t\"BAMBANG\",\n\t\t\t\t\t\t\t\t\"BATIA\",\n\t\t\t\t\t\t\t\t\"BI\u00D1ANG 1ST\",\n\t\t\t\t\t\t\t\t\"BI\u00D1ANG 2ND\",\n\t\t\t\t\t\t\t\t\"BOLACAN\",\n\t\t\t\t\t\t\t\t\"BUNDUKAN\",\n\t\t\t\t\t\t\t\t\"BUNLO\",\n\t\t\t\t\t\t\t\t\"CAINGIN\",\n\t\t\t\t\t\t\t\t\"DUHAT\",\n\t\t\t\t\t\t\t\t\"IGULOT\",\n\t\t\t\t\t\t\t\t\"LOLOMBOY\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"SULUCAN\",\n\t\t\t\t\t\t\t\t\"TAAL\",\n\t\t\t\t\t\t\t\t\"TAMBOBONG\",\n\t\t\t\t\t\t\t\t\"TURO\",\n\t\t\t\t\t\t\t\t\"WAKAS\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"BULACAN\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BAGUMBAYAN\",\n\t\t\t\t\t\t\t\t\"BALUBAD\",\n\t\t\t\t\t\t\t\t\"BAMBANG\",\n\t\t\t\t\t\t\t\t\"MATUNGAO\",\n\t\t\t\t\t\t\t\t\"MAYSANTOL\",\n\t\t\t\t\t\t\t\t\"PEREZ\",\n\t\t\t\t\t\t\t\t\"PITPITAN\",\n\t\t\t\t\t\t\t\t\"SAN FRANCISCO\",\n\t\t\t\t\t\t\t\t\"SAN JOSE (POB.)\",\n\t\t\t\t\t\t\t\t\"SAN NICOLAS\",\n\t\t\t\t\t\t\t\t\"SANTA ANA\",\n\t\t\t\t\t\t\t\t\"SANTA INES\",\n\t\t\t\t\t\t\t\t\"TALIPTIP\",\n\t\t\t\t\t\t\t\t\"TIBIG\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"BUSTOS\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BONGA MAYOR\",\n\t\t\t\t\t\t\t\t\"BONGA MENOR\",\n\t\t\t\t\t\t\t\t\"BUISAN\",\n\t\t\t\t\t\t\t\t\"CAMACHILIHAN\",\n\t\t\t\t\t\t\t\t\"CAMBAOG\",\n\t\t\t\t\t\t\t\t\"CATACTE\",\n\t\t\t\t\t\t\t\t\"LICIADA\",\n\t\t\t\t\t\t\t\t\"MALAMIG\",\n\t\t\t\t\t\t\t\t\"MALAWAK\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"SAN PEDRO\",\n\t\t\t\t\t\t\t\t\"TALAMPAS\",\n\t\t\t\t\t\t\t\t\"TANAWAN\",\n\t\t\t\t\t\t\t\t\"TIBAGAN\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"CALUMPIT\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BALITE\",\n\t\t\t\t\t\t\t\t\"BALUNGAO\",\n\t\t\t\t\t\t\t\t\"BUGUION\",\n\t\t\t\t\t\t\t\t\"BULUSAN\",\n\t\t\t\t\t\t\t\t\"CALIZON\",\n\t\t\t\t\t\t\t\t\"CALUMPANG\",\n\t\t\t\t\t\t\t\t\"CANIOGAN\",\n\t\t\t\t\t\t\t\t\"CORAZON\",\n\t\t\t\t\t\t\t\t\"FRANCES\",\n\t\t\t\t\t\t\t\t\"GATBUCA\",\n\t\t\t\t\t\t\t\t\"GUGO\",\n\t\t\t\t\t\t\t\t\"IBA ESTE\",\n\t\t\t\t\t\t\t\t\"LONGOS\",\n\t\t\t\t\t\t\t\t\"MEYSULAO\",\n\t\t\t\t\t\t\t\t\"MEYTO\",\n\t\t\t\t\t\t\t\t\"PALIMBANG\",\n\t\t\t\t\t\t\t\t\"PANDUCOT\",\n\t\t\t\t\t\t\t\t\"PIO CRUZCOSA\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"PUNGO\",\n\t\t\t\t\t\t\t\t\"SAN JOSE\",\n\t\t\t\t\t\t\t\t\"SAN MARCOS\",\n\t\t\t\t\t\t\t\t\"SAN MIGUEL\",\n\t\t\t\t\t\t\t\t\"SANTA LUCIA\",\n\t\t\t\t\t\t\t\t\"SANTO NI\u00D1O\",\n\t\t\t\t\t\t\t\t\"SAPANG BAYAN\",\n\t\t\t\t\t\t\t\t\"SERGIO BAYAN\",\n\t\t\t\t\t\t\t\t\"SUCOL\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"CITY OF MALOLOS\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ANILAO\",\n\t\t\t\t\t\t\t\t\"ATLAG\",\n\t\t\t\t\t\t\t\t\"BABATNIN\",\n\t\t\t\t\t\t\t\t\"BAGNA\",\n\t\t\t\t\t\t\t\t\"BAGONG BAYAN\",\n\t\t\t\t\t\t\t\t\"BALAYONG\",\n\t\t\t\t\t\t\t\t\"BALITE\",\n\t\t\t\t\t\t\t\t\"BANGKAL\",\n\t\t\t\t\t\t\t\t\"BARIHAN\",\n\t\t\t\t\t\t\t\t\"BULIHAN\",\n\t\t\t\t\t\t\t\t\"BUNGAHAN\",\n\t\t\t\t\t\t\t\t\"CAINGIN\",\n\t\t\t\t\t\t\t\t\"CALERO\",\n\t\t\t\t\t\t\t\t\"CALILIGAWAN\",\n\t\t\t\t\t\t\t\t\"CANALATE\",\n\t\t\t\t\t\t\t\t\"CANIOGAN\",\n\t\t\t\t\t\t\t\t\"CATMON\",\n\t\t\t\t\t\t\t\t\"COFRADIA\",\n\t\t\t\t\t\t\t\t\"DAKILA\",\n\t\t\t\t\t\t\t\t\"GUINHAWA\",\n\t\t\t\t\t\t\t\t\"LIGAS\",\n\t\t\t\t\t\t\t\t\"LIYANG\",\n\t\t\t\t\t\t\t\t\"LONGOS\",\n\t\t\t\t\t\t\t\t\"LOOK 1ST\",\n\t\t\t\t\t\t\t\t\"LOOK 2ND\",\n\t\t\t\t\t\t\t\t\"LUGAM\",\n\t\t\t\t\t\t\t\t\"MABOLO\",\n\t\t\t\t\t\t\t\t\"MAMBOG\",\n\t\t\t\t\t\t\t\t\"MASILE\",\n\t\t\t\t\t\t\t\t\"MATIMBO\",\n\t\t\t\t\t\t\t\t\"MOJON\",\n\t\t\t\t\t\t\t\t\"NAMAYAN\",\n\t\t\t\t\t\t\t\t\"NIUGAN\",\n\t\t\t\t\t\t\t\t\"PAMARAWAN\",\n\t\t\t\t\t\t\t\t\"PANASAHAN\",\n\t\t\t\t\t\t\t\t\"PINAGBAKAHAN\",\n\t\t\t\t\t\t\t\t\"SAN AGUSTIN\",\n\t\t\t\t\t\t\t\t\"SAN GABRIEL\",\n\t\t\t\t\t\t\t\t\"SAN JUAN\",\n\t\t\t\t\t\t\t\t\"SAN PABLO\",\n\t\t\t\t\t\t\t\t\"SAN VICENTE (POB.)\",\n\t\t\t\t\t\t\t\t\"SANTIAGO\",\n\t\t\t\t\t\t\t\t\"SANTISIMA TRINIDAD\",\n\t\t\t\t\t\t\t\t\"SANTO CRISTO\",\n\t\t\t\t\t\t\t\t\"SANTO NI\u00D1O (POB.)\",\n\t\t\t\t\t\t\t\t\"SANTO ROSARIO (POB.)\",\n\t\t\t\t\t\t\t\t\"SANTOL\",\n\t\t\t\t\t\t\t\t\"SUMAPANG BATA\",\n\t\t\t\t\t\t\t\t\"SUMAPANG MATANDA\",\n\t\t\t\t\t\t\t\t\"TAAL\",\n\t\t\t\t\t\t\t\t\"TIKAY\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"CITY OF MEYCAUAYAN\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BAGBAGUIN\",\n\t\t\t\t\t\t\t\t\"BAHAY PARE\",\n\t\t\t\t\t\t\t\t\"BANCAL\",\n\t\t\t\t\t\t\t\t\"BANGA\",\n\t\t\t\t\t\t\t\t\"BAYUGO\",\n\t\t\t\t\t\t\t\t\"CAINGIN\",\n\t\t\t\t\t\t\t\t\"CALVARIO\",\n\t\t\t\t\t\t\t\t\"CAMALIG\",\n\t\t\t\t\t\t\t\t\"HULO\",\n\t\t\t\t\t\t\t\t\"IBA\",\n\t\t\t\t\t\t\t\t\"LANGKA\",\n\t\t\t\t\t\t\t\t\"LAWA\",\n\t\t\t\t\t\t\t\t\"LIBTONG\",\n\t\t\t\t\t\t\t\t\"LIPUTAN\",\n\t\t\t\t\t\t\t\t\"LONGOS\",\n\t\t\t\t\t\t\t\t\"MALHACAN\",\n\t\t\t\t\t\t\t\t\"PAJO\",\n\t\t\t\t\t\t\t\t\"PANDAYAN\",\n\t\t\t\t\t\t\t\t\"PANTOC\",\n\t\t\t\t\t\t\t\t\"PEREZ\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"SAINT FRANCIS (GASAK)\",\n\t\t\t\t\t\t\t\t\"SALUYSOY\",\n\t\t\t\t\t\t\t\t\"TUGATOG\",\n\t\t\t\t\t\t\t\t\"UBIHAN\",\n\t\t\t\t\t\t\t\t\"ZAMORA\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"CITY OF SAN JOSE DEL MONTE\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ASSUMPTION\",\n\t\t\t\t\t\t\t\t\"BAGONG BUHAY\",\n\t\t\t\t\t\t\t\t\"BAGONG BUHAY II\",\n\t\t\t\t\t\t\t\t\"BAGONG BUHAY III\",\n\t\t\t\t\t\t\t\t\"CITRUS\",\n\t\t\t\t\t\t\t\t\"CIUDAD REAL\",\n\t\t\t\t\t\t\t\t\"DULONG BAYAN\",\n\t\t\t\t\t\t\t\t\"FATIMA\",\n\t\t\t\t\t\t\t\t\"FATIMA II\",\n\t\t\t\t\t\t\t\t\"FATIMA III\",\n\t\t\t\t\t\t\t\t\"FATIMA IV\",\n\t\t\t\t\t\t\t\t\"FATIMA V\",\n\t\t\t\t\t\t\t\t\"FRANCISCO HOMES-GUIJO\",\n\t\t\t\t\t\t\t\t\"FRANCISCO HOMES-MULAWIN\",\n\t\t\t\t\t\t\t\t\"FRANCISCO HOMES-NARRA\",\n\t\t\t\t\t\t\t\t\"FRANCISCO HOMES-YAKAL\",\n\t\t\t\t\t\t\t\t\"GAYA-GAYA\",\n\t\t\t\t\t\t\t\t\"GRACEVILLE\",\n\t\t\t\t\t\t\t\t\"GUMAOC CENTRAL\",\n\t\t\t\t\t\t\t\t\"GUMAOC EAST\",\n\t\t\t\t\t\t\t\t\"GUMAOC WEST\",\n\t\t\t\t\t\t\t\t\"KAYBANBAN\",\n\t\t\t\t\t\t\t\t\"KAYPIAN\",\n\t\t\t\t\t\t\t\t\"LAWANG PARI\",\n\t\t\t\t\t\t\t\t\"MAHARLIKA\",\n\t\t\t\t\t\t\t\t\"MINUYAN\",\n\t\t\t\t\t\t\t\t\"MINUYAN II\",\n\t\t\t\t\t\t\t\t\"MINUYAN III\",\n\t\t\t\t\t\t\t\t\"MINUYAN IV\",\n\t\t\t\t\t\t\t\t\"MINUYAN PROPER\",\n\t\t\t\t\t\t\t\t\"MINUYAN V\",\n\t\t\t\t\t\t\t\t\"MUZON\",\n\t\t\t\t\t\t\t\t\"PARADISE III\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"POBLACION I\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO\",\n\t\t\t\t\t\t\t\t\"SAN MANUEL\",\n\t\t\t\t\t\t\t\t\"SAN MARTIN\",\n\t\t\t\t\t\t\t\t\"SAN MARTIN II\",\n\t\t\t\t\t\t\t\t\"SAN MARTIN III\",\n\t\t\t\t\t\t\t\t\"SAN MARTIN IV\",\n\t\t\t\t\t\t\t\t\"SAN PEDRO\",\n\t\t\t\t\t\t\t\t\"SAN RAFAEL\",\n\t\t\t\t\t\t\t\t\"SAN RAFAEL I\",\n\t\t\t\t\t\t\t\t\"SAN RAFAEL III\",\n\t\t\t\t\t\t\t\t\"SAN RAFAEL IV\",\n\t\t\t\t\t\t\t\t\"SAN RAFAEL V\",\n\t\t\t\t\t\t\t\t\"SAN ROQUE\",\n\t\t\t\t\t\t\t\t\"SANTA CRUZ\",\n\t\t\t\t\t\t\t\t\"SANTA CRUZ II\",\n\t\t\t\t\t\t\t\t\"SANTA CRUZ III\",\n\t\t\t\t\t\t\t\t\"SANTA CRUZ IV\",\n\t\t\t\t\t\t\t\t\"SANTA CRUZ V\",\n\t\t\t\t\t\t\t\t\"SANTO CRISTO\",\n\t\t\t\t\t\t\t\t\"SANTO NI\u00D1O\",\n\t\t\t\t\t\t\t\t\"SANTO NI\u00D1O II\",\n\t\t\t\t\t\t\t\t\"SAPANG PALAY\",\n\t\t\t\t\t\t\t\t\"ST. MARTIN DE PORRES\",\n\t\t\t\t\t\t\t\t\"TUNGKONG MANGGA\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"DO\u00D1A REMEDIOS TRINIDAD\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BAYABAS\",\n\t\t\t\t\t\t\t\t\"CAMACHILE\",\n\t\t\t\t\t\t\t\t\"CAMACHIN\",\n\t\t\t\t\t\t\t\t\"KABAYUNAN\",\n\t\t\t\t\t\t\t\t\"KALAWAKAN\",\n\t\t\t\t\t\t\t\t\"PULONG SAMPALOK\",\n\t\t\t\t\t\t\t\t\"SAPANG BULAK\",\n\t\t\t\t\t\t\t\t\"TALBAK\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"GUIGUINTO\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"CUTCUT\",\n\t\t\t\t\t\t\t\t\"DAUNGAN\",\n\t\t\t\t\t\t\t\t\"ILANG-ILANG\",\n\t\t\t\t\t\t\t\t\"MALIS\",\n\t\t\t\t\t\t\t\t\"PANGINAY\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"PRITIL\",\n\t\t\t\t\t\t\t\t\"PULONG GUBAT\",\n\t\t\t\t\t\t\t\t\"SANTA CRUZ\",\n\t\t\t\t\t\t\t\t\"SANTA RITA\",\n\t\t\t\t\t\t\t\t\"TABANG\",\n\t\t\t\t\t\t\t\t\"TABE\",\n\t\t\t\t\t\t\t\t\"TIAONG\",\n\t\t\t\t\t\t\t\t\"TUKTUKAN\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"HAGONOY\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ABULALAS\",\n\t\t\t\t\t\t\t\t\"CARILLO\",\n\t\t\t\t\t\t\t\t\"IBA\",\n\t\t\t\t\t\t\t\t\"IBA-IBAYO\",\n\t\t\t\t\t\t\t\t\"MERCADO\",\n\t\t\t\t\t\t\t\t\"PALAPAT\",\n\t\t\t\t\t\t\t\t\"PUGAD\",\n\t\t\t\t\t\t\t\t\"SAGRADA FAMILIA\",\n\t\t\t\t\t\t\t\t\"SAN AGUSTIN\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO\",\n\t\t\t\t\t\t\t\t\"SAN JOSE\",\n\t\t\t\t\t\t\t\t\"SAN JUAN\",\n\t\t\t\t\t\t\t\t\"SAN MIGUEL\",\n\t\t\t\t\t\t\t\t\"SAN NICOLAS\",\n\t\t\t\t\t\t\t\t\"SAN PABLO\",\n\t\t\t\t\t\t\t\t\"SAN PASCUAL\",\n\t\t\t\t\t\t\t\t\"SAN PEDRO\",\n\t\t\t\t\t\t\t\t\"SAN ROQUE\",\n\t\t\t\t\t\t\t\t\"SAN SEBASTIAN\",\n\t\t\t\t\t\t\t\t\"SANTA CRUZ\",\n\t\t\t\t\t\t\t\t\"SANTA ELENA\",\n\t\t\t\t\t\t\t\t\"SANTA MONICA\",\n\t\t\t\t\t\t\t\t\"SANTO NI\u00D1O (POB.)\",\n\t\t\t\t\t\t\t\t\"SANTO ROSARIO\",\n\t\t\t\t\t\t\t\t\"TAMPOK\",\n\t\t\t\t\t\t\t\t\"TIBAGUIN\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"MARILAO\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ABANGAN NORTE\",\n\t\t\t\t\t\t\t\t\"ABANGAN SUR\",\n\t\t\t\t\t\t\t\t\"IBAYO\",\n\t\t\t\t\t\t\t\t\"LAMBAKIN\",\n\t\t\t\t\t\t\t\t\"LIAS\",\n\t\t\t\t\t\t\t\t\"LOMA DE GATO\",\n\t\t\t\t\t\t\t\t\"NAGBALON\",\n\t\t\t\t\t\t\t\t\"PATUBIG\",\n\t\t\t\t\t\t\t\t\"POBLACION I\",\n\t\t\t\t\t\t\t\t\"POBLACION II\",\n\t\t\t\t\t\t\t\t\"PRENZA I\",\n\t\t\t\t\t\t\t\t\"PRENZA II\",\n\t\t\t\t\t\t\t\t\"SANTA ROSA I\",\n\t\t\t\t\t\t\t\t\"SANTA ROSA II\",\n\t\t\t\t\t\t\t\t\"SAOG\",\n\t\t\t\t\t\t\t\t\"TABING ILOG\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"NORZAGARAY\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BANGKAL\",\n\t\t\t\t\t\t\t\t\"BARAKA\",\n\t\t\t\t\t\t\t\t\"BIGTE\",\n\t\t\t\t\t\t\t\t\"BITUNGOL\",\n\t\t\t\t\t\t\t\t\"FRIENDSHIP VILLAGE RESOURCES (FVR)\",\n\t\t\t\t\t\t\t\t\"MATICTIC\",\n\t\t\t\t\t\t\t\t\"MINUYAN\",\n\t\t\t\t\t\t\t\t\"PARTIDA\",\n\t\t\t\t\t\t\t\t\"PINAGTULAYAN\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"SAN LORENZO\",\n\t\t\t\t\t\t\t\t\"SAN MATEO\",\n\t\t\t\t\t\t\t\t\"TIGBE\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"OBANDO\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BINUANGAN\",\n\t\t\t\t\t\t\t\t\"CATANGHALAN\",\n\t\t\t\t\t\t\t\t\"HULO\",\n\t\t\t\t\t\t\t\t\"LAWA\",\n\t\t\t\t\t\t\t\t\"PACO\",\n\t\t\t\t\t\t\t\t\"PAG-ASA (POB.)\",\n\t\t\t\t\t\t\t\t\"PALIWAS\",\n\t\t\t\t\t\t\t\t\"PANGHULO\",\n\t\t\t\t\t\t\t\t\"SALAMBAO\",\n\t\t\t\t\t\t\t\t\"SAN PASCUAL\",\n\t\t\t\t\t\t\t\t\"TAWIRAN\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"PANDI\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BAGBAGUIN\",\n\t\t\t\t\t\t\t\t\"BAGONG BARRIO\",\n\t\t\t\t\t\t\t\t\"BAKA-BAKAHAN\",\n\t\t\t\t\t\t\t\t\"BUNSURAN I\",\n\t\t\t\t\t\t\t\t\"BUNSURAN II\",\n\t\t\t\t\t\t\t\t\"BUNSURAN III\",\n\t\t\t\t\t\t\t\t\"CACARONG BATA\",\n\t\t\t\t\t\t\t\t\"CACARONG MATANDA\",\n\t\t\t\t\t\t\t\t\"CUPANG\",\n\t\t\t\t\t\t\t\t\"MALIBONG BATA\",\n\t\t\t\t\t\t\t\t\"MALIBONG MATANDA\",\n\t\t\t\t\t\t\t\t\"MANATAL\",\n\t\t\t\t\t\t\t\t\"MAPULANG LUPA\",\n\t\t\t\t\t\t\t\t\"MASAGANA\",\n\t\t\t\t\t\t\t\t\"MASUSO\",\n\t\t\t\t\t\t\t\t\"PINAGKUARTELAN\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"REAL DE CACARONG\",\n\t\t\t\t\t\t\t\t\"SAN ROQUE\",\n\t\t\t\t\t\t\t\t\"SANTO NI\u00D1O\",\n\t\t\t\t\t\t\t\t\"SILING BATA\",\n\t\t\t\t\t\t\t\t\"SILING MATANDA\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"PAOMBONG\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BINAKOD\",\n\t\t\t\t\t\t\t\t\"KAPITANGAN\",\n\t\t\t\t\t\t\t\t\"MALUMOT\",\n\t\t\t\t\t\t\t\t\"MASUKOL\",\n\t\t\t\t\t\t\t\t\"PINALAGDAN\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO I\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO II\",\n\t\t\t\t\t\t\t\t\"SAN JOSE\",\n\t\t\t\t\t\t\t\t\"SAN ROQUE\",\n\t\t\t\t\t\t\t\t\"SAN VICENTE\",\n\t\t\t\t\t\t\t\t\"SANTA CRUZ\",\n\t\t\t\t\t\t\t\t\"SANTO NI\u00D1O\",\n\t\t\t\t\t\t\t\t\"SANTO ROSARIO\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"PLARIDEL\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"AGNAYA\",\n\t\t\t\t\t\t\t\t\"BAGONG SILANG\",\n\t\t\t\t\t\t\t\t\"BANGA I\",\n\t\t\t\t\t\t\t\t\"BANGA II\",\n\t\t\t\t\t\t\t\t\"BINTOG\",\n\t\t\t\t\t\t\t\t\"BULIHAN\",\n\t\t\t\t\t\t\t\t\"CULIANIN\",\n\t\t\t\t\t\t\t\t\"DAMPOL\",\n\t\t\t\t\t\t\t\t\"LAGUNDI\",\n\t\t\t\t\t\t\t\t\"LALANGAN\",\n\t\t\t\t\t\t\t\t\"LUMANG BAYAN\",\n\t\t\t\t\t\t\t\t\"PARULAN\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"RUEDA\",\n\t\t\t\t\t\t\t\t\"SAN JOSE\",\n\t\t\t\t\t\t\t\t\"SANTA INES\",\n\t\t\t\t\t\t\t\t\"SANTO NI\u00D1O\",\n\t\t\t\t\t\t\t\t\"SIPAT\",\n\t\t\t\t\t\t\t\t\"TABANG\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"PULILAN\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BALATONG A\",\n\t\t\t\t\t\t\t\t\"BALATONG B\",\n\t\t\t\t\t\t\t\t\"CUTCOT\",\n\t\t\t\t\t\t\t\t\"DAMPOL I\",\n\t\t\t\t\t\t\t\t\"DAMPOL II-A\",\n\t\t\t\t\t\t\t\t\"DAMPOL II-B\",\n\t\t\t\t\t\t\t\t\"DULONG MALABON\",\n\t\t\t\t\t\t\t\t\"INAON\",\n\t\t\t\t\t\t\t\t\"LONGOS\",\n\t\t\t\t\t\t\t\t\"LUMBAC\",\n\t\t\t\t\t\t\t\t\"PALTAO\",\n\t\t\t\t\t\t\t\t\"PENABATAN\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"SANTA PEREGRINA\",\n\t\t\t\t\t\t\t\t\"SANTO CRISTO\",\n\t\t\t\t\t\t\t\t\"TAAL\",\n\t\t\t\t\t\t\t\t\"TABON\",\n\t\t\t\t\t\t\t\t\"TIBAG\",\n\t\t\t\t\t\t\t\t\"TINEJERO\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"SAN ILDEFONSO\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"AKLE\",\n\t\t\t\t\t\t\t\t\"ALAGAO\",\n\t\t\t\t\t\t\t\t\"ANYATAM\",\n\t\t\t\t\t\t\t\t\"BAGONG BARRIO\",\n\t\t\t\t\t\t\t\t\"BASUIT\",\n\t\t\t\t\t\t\t\t\"BUBULONG MALAKI\",\n\t\t\t\t\t\t\t\t\"BUBULONG MUNTI\",\n\t\t\t\t\t\t\t\t\"BUHOL NA MANGGA\",\n\t\t\t\t\t\t\t\t\"BULUSUKAN\",\n\t\t\t\t\t\t\t\t\"CALASAG\",\n\t\t\t\t\t\t\t\t\"CALAWITAN\",\n\t\t\t\t\t\t\t\t\"CASALAT\",\n\t\t\t\t\t\t\t\t\"GABIHAN\",\n\t\t\t\t\t\t\t\t\"GARLANG\",\n\t\t\t\t\t\t\t\t\"LAPNIT\",\n\t\t\t\t\t\t\t\t\"MAASIM\",\n\t\t\t\t\t\t\t\t\"MAKAPILAPIL\",\n\t\t\t\t\t\t\t\t\"MALIPAMPANG\",\n\t\t\t\t\t\t\t\t\"MATAAS NA PARANG\",\n\t\t\t\t\t\t\t\t\"MATIMBUBONG\",\n\t\t\t\t\t\t\t\t\"NABAONG GARLANG\",\n\t\t\t\t\t\t\t\t\"PALAPALA\",\n\t\t\t\t\t\t\t\t\"PASONG BANGKAL\",\n\t\t\t\t\t\t\t\t\"PINAOD\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"PULONG TAMO\",\n\t\t\t\t\t\t\t\t\"SAN JUAN\",\n\t\t\t\t\t\t\t\t\"SANTA CATALINA BATA\",\n\t\t\t\t\t\t\t\t\"SANTA CATALINA MATANDA\",\n\t\t\t\t\t\t\t\t\"SAPANG DAYAP\",\n\t\t\t\t\t\t\t\t\"SAPANG PUTIK\",\n\t\t\t\t\t\t\t\t\"SAPANG PUTOL\",\n\t\t\t\t\t\t\t\t\"SUMANDIG\",\n\t\t\t\t\t\t\t\t\"TELEPATIO\",\n\t\t\t\t\t\t\t\t\"UMPUCAN\",\n\t\t\t\t\t\t\t\t\"UPIG\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"SAN MIGUEL\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BAGONG PAG-ASA\",\n\t\t\t\t\t\t\t\t\"BAGONG SILANG\",\n\t\t\t\t\t\t\t\t\"BALAONG\",\n\t\t\t\t\t\t\t\t\"BALITE\",\n\t\t\t\t\t\t\t\t\"BANTOG\",\n\t\t\t\t\t\t\t\t\"BARDIAS\",\n\t\t\t\t\t\t\t\t\"BARITAN\",\n\t\t\t\t\t\t\t\t\"BATASAN BATA\",\n\t\t\t\t\t\t\t\t\"BATASAN MATANDA\",\n\t\t\t\t\t\t\t\t\"BIAK-NA-BATO\",\n\t\t\t\t\t\t\t\t\"BICLAT\",\n\t\t\t\t\t\t\t\t\"BUGA\",\n\t\t\t\t\t\t\t\t\"BULIRAN\",\n\t\t\t\t\t\t\t\t\"BULUALTO\",\n\t\t\t\t\t\t\t\t\"CALUMPANG\",\n\t\t\t\t\t\t\t\t\"CAMBIO\",\n\t\t\t\t\t\t\t\t\"CAMIAS\",\n\t\t\t\t\t\t\t\t\"ILOG-BULO\",\n\t\t\t\t\t\t\t\t\"KING KABAYO\",\n\t\t\t\t\t\t\t\t\"LABNE\",\n\t\t\t\t\t\t\t\t\"LAMBAKIN\",\n\t\t\t\t\t\t\t\t\"MAGMARALE\",\n\t\t\t\t\t\t\t\t\"MALIBAY\",\n\t\t\t\t\t\t\t\t\"MALIGAYA\",\n\t\t\t\t\t\t\t\t\"MANDILE\",\n\t\t\t\t\t\t\t\t\"MASALIPIT\",\n\t\t\t\t\t\t\t\t\"PACALAG\",\n\t\t\t\t\t\t\t\t\"PALIWASAN\",\n\t\t\t\t\t\t\t\t\"PARTIDA\",\n\t\t\t\t\t\t\t\t\"PINAMBARAN\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"PULONG BAYABAS\",\n\t\t\t\t\t\t\t\t\"PULONG DUHAT\",\n\t\t\t\t\t\t\t\t\"SACDALAN\",\n\t\t\t\t\t\t\t\t\"SALACOT\",\n\t\t\t\t\t\t\t\t\"SALANGAN\",\n\t\t\t\t\t\t\t\t\"SAN AGUSTIN\",\n\t\t\t\t\t\t\t\t\"SAN JOSE\",\n\t\t\t\t\t\t\t\t\"SAN JUAN\",\n\t\t\t\t\t\t\t\t\"SAN VICENTE\",\n\t\t\t\t\t\t\t\t\"SANTA INES\",\n\t\t\t\t\t\t\t\t\"SANTA LUCIA\",\n\t\t\t\t\t\t\t\t\"SANTA RITA BATA\",\n\t\t\t\t\t\t\t\t\"SANTA RITA MATANDA\",\n\t\t\t\t\t\t\t\t\"SAPANG\",\n\t\t\t\t\t\t\t\t\"SIBUL\",\n\t\t\t\t\t\t\t\t\"TARTARO\",\n\t\t\t\t\t\t\t\t\"TIBAGAN\",\n\t\t\t\t\t\t\t\t\"TIGPALAS\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"SAN RAFAEL\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BANCA-BANCA\",\n\t\t\t\t\t\t\t\t\"BMA-BALAGTAS\",\n\t\t\t\t\t\t\t\t\"CAINGIN\",\n\t\t\t\t\t\t\t\t\"CAPIHAN\",\n\t\t\t\t\t\t\t\t\"CORAL NA BATO\",\n\t\t\t\t\t\t\t\t\"CRUZ NA DAAN\",\n\t\t\t\t\t\t\t\t\"DAGAT-DAGATAN\",\n\t\t\t\t\t\t\t\t\"DILIMAN I\",\n\t\t\t\t\t\t\t\t\"DILIMAN II\",\n\t\t\t\t\t\t\t\t\"LIBIS\",\n\t\t\t\t\t\t\t\t\"LICO\",\n\t\t\t\t\t\t\t\t\"MAASIM\",\n\t\t\t\t\t\t\t\t\"MABALAS-BALAS\",\n\t\t\t\t\t\t\t\t\"MAGUINAO\",\n\t\t\t\t\t\t\t\t\"MARONGUILLO\",\n\t\t\t\t\t\t\t\t\"PACO\",\n\t\t\t\t\t\t\t\t\"PANSUMALOC\",\n\t\t\t\t\t\t\t\t\"PANTUBIG\",\n\t\t\t\t\t\t\t\t\"PASONG BANGKAL\",\n\t\t\t\t\t\t\t\t\"PASONG CALLOS\",\n\t\t\t\t\t\t\t\t\"PASONG INTSIK\",\n\t\t\t\t\t\t\t\t\"PINACPINACAN\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"PULO\",\n\t\t\t\t\t\t\t\t\"PULONG BAYABAS\",\n\t\t\t\t\t\t\t\t\"SALAPUNGAN\",\n\t\t\t\t\t\t\t\t\"SAMPALOC\",\n\t\t\t\t\t\t\t\t\"SAN AGUSTIN\",\n\t\t\t\t\t\t\t\t\"SAN ROQUE\",\n\t\t\t\t\t\t\t\t\"SAPANG PAHALANG\",\n\t\t\t\t\t\t\t\t\"TALACSAN\",\n\t\t\t\t\t\t\t\t\"TAMBUBONG\",\n\t\t\t\t\t\t\t\t\"TUKOD\",\n\t\t\t\t\t\t\t\t\"ULINGAO\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"SANTA MARIA\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BAGBAGUIN\",\n\t\t\t\t\t\t\t\t\"BALASING\",\n\t\t\t\t\t\t\t\t\"BUENAVISTA\",\n\t\t\t\t\t\t\t\t\"BULAC\",\n\t\t\t\t\t\t\t\t\"CAMANGYANAN\",\n\t\t\t\t\t\t\t\t\"CATMON\",\n\t\t\t\t\t\t\t\t\"CAY POMBO\",\n\t\t\t\t\t\t\t\t\"CAYSIO\",\n\t\t\t\t\t\t\t\t\"GUYONG\",\n\t\t\t\t\t\t\t\t\"LALAKHAN\",\n\t\t\t\t\t\t\t\t\"MAG-ASAWANG SAPA\",\n\t\t\t\t\t\t\t\t\"MAHABANG PARANG\",\n\t\t\t\t\t\t\t\t\"MANGGAHAN\",\n\t\t\t\t\t\t\t\t\"PARADA\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"PULONG BUHANGIN\",\n\t\t\t\t\t\t\t\t\"SAN GABRIEL\",\n\t\t\t\t\t\t\t\t\"SAN JOSE PATAG\",\n\t\t\t\t\t\t\t\t\"SAN VICENTE\",\n\t\t\t\t\t\t\t\t\"SANTA CLARA\",\n\t\t\t\t\t\t\t\t\"SANTA CRUZ\",\n\t\t\t\t\t\t\t\t\"SILANGAN\",\n\t\t\t\t\t\t\t\t\"TABING BAKOD\",\n\t\t\t\t\t\t\t\t\"TUMANA\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"NUEVA ECIJA\",\n\t\t\t\t\t\"cities\": [{\n\t\t\t\t\t\t\t\"name\": \"ALIAGA\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BETES\",\n\t\t\t\t\t\t\t\t\"BIBICLAT\",\n\t\t\t\t\t\t\t\t\"BUCOT\",\n\t\t\t\t\t\t\t\t\"LA PURISIMA\",\n\t\t\t\t\t\t\t\t\"MACABUCOD\",\n\t\t\t\t\t\t\t\t\"MAGSAYSAY\",\n\t\t\t\t\t\t\t\t\"PANTOC\",\n\t\t\t\t\t\t\t\t\"POBLACION CENTRO\",\n\t\t\t\t\t\t\t\t\"POBLACION EAST I\",\n\t\t\t\t\t\t\t\t\"POBLACION EAST II\",\n\t\t\t\t\t\t\t\t\"POBLACION WEST III\",\n\t\t\t\t\t\t\t\t\"POBLACION WEST IV\",\n\t\t\t\t\t\t\t\t\"SAN CARLOS\",\n\t\t\t\t\t\t\t\t\"SAN EMILIANO\",\n\t\t\t\t\t\t\t\t\"SAN EUSTACIO\",\n\t\t\t\t\t\t\t\t\"SAN FELIPE BATA\",\n\t\t\t\t\t\t\t\t\"SAN FELIPE MATANDA\",\n\t\t\t\t\t\t\t\t\"SAN JUAN\",\n\t\t\t\t\t\t\t\t\"SAN PABLO BATA\",\n\t\t\t\t\t\t\t\t\"SAN PABLO MATANDA\",\n\t\t\t\t\t\t\t\t\"SANTA MONICA\",\n\t\t\t\t\t\t\t\t\"SANTIAGO\",\n\t\t\t\t\t\t\t\t\"SANTO ROSARIO\",\n\t\t\t\t\t\t\t\t\"SANTO TOMAS\",\n\t\t\t\t\t\t\t\t\"SUNSON\",\n\t\t\t\t\t\t\t\t\"UMANGAN\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"BONGABON\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ANTIPOLO\",\n\t\t\t\t\t\t\t\t\"ARIENDO\",\n\t\t\t\t\t\t\t\t\"BANTUG\",\n\t\t\t\t\t\t\t\t\"CALAANAN\",\n\t\t\t\t\t\t\t\t\"COMMERCIAL (POB.)\",\n\t\t\t\t\t\t\t\t\"CRUZ\",\n\t\t\t\t\t\t\t\t\"CURVA (J. TOMACRUZ)\",\n\t\t\t\t\t\t\t\t\"DIGMALA\",\n\t\t\t\t\t\t\t\t\"KAINGIN (POB.)\",\n\t\t\t\t\t\t\t\t\"LABI\",\n\t\t\t\t\t\t\t\t\"LARCON\",\n\t\t\t\t\t\t\t\t\"LUSOK\",\n\t\t\t\t\t\t\t\t\"MACABACLAY\",\n\t\t\t\t\t\t\t\t\"MAGTANGGOL (POB.)\",\n\t\t\t\t\t\t\t\t\"MANTILE (POB.)\",\n\t\t\t\t\t\t\t\t\"OLIVETE\",\n\t\t\t\t\t\t\t\t\"PALO MARIA (POB.)\",\n\t\t\t\t\t\t\t\t\"PESA\",\n\t\t\t\t\t\t\t\t\"RIZAL (POB.)\",\n\t\t\t\t\t\t\t\t\"SAMPALUCAN (POB.)\",\n\t\t\t\t\t\t\t\t\"SAN ROQUE (POB.)\",\n\t\t\t\t\t\t\t\t\"SANTOR\",\n\t\t\t\t\t\t\t\t\"SINIPIT (POB.)\",\n\t\t\t\t\t\t\t\t\"SISILANG NA LIGAYA (POB.)\",\n\t\t\t\t\t\t\t\t\"SOCIAL (POB.)\",\n\t\t\t\t\t\t\t\t\"TUGATUG\",\n\t\t\t\t\t\t\t\t\"TULAY NA BATO (POB.)\",\n\t\t\t\t\t\t\t\t\"VEGA\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"CABANATUAN CITY\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ADUAS CENTRO (ADUAS)\",\n\t\t\t\t\t\t\t\t\"ADUAS NORTE\",\n\t\t\t\t\t\t\t\t\"ADUAS SUR\",\n\t\t\t\t\t\t\t\t\"BAGONG BUHAY\",\n\t\t\t\t\t\t\t\t\"BAGONG SIKAT\",\n\t\t\t\t\t\t\t\t\"BAKERO\",\n\t\t\t\t\t\t\t\t\"BAKOD BAYAN\",\n\t\t\t\t\t\t\t\t\"BALITE\",\n\t\t\t\t\t\t\t\t\"BANGAD\",\n\t\t\t\t\t\t\t\t\"BANTUG BULALO\",\n\t\t\t\t\t\t\t\t\"BANTUG NORTE\",\n\t\t\t\t\t\t\t\t\"BARLIS\",\n\t\t\t\t\t\t\t\t\"BARRERA DISTRICT (POB.)\",\n\t\t\t\t\t\t\t\t\"BERNARDO DISTRICT (POB.)\",\n\t\t\t\t\t\t\t\t\"BITAS\",\n\t\t\t\t\t\t\t\t\"BONIFACIO DISTRICT (POB.)\",\n\t\t\t\t\t\t\t\t\"BULIRAN\",\n\t\t\t\t\t\t\t\t\"CAALIBANGBANGAN\",\n\t\t\t\t\t\t\t\t\"CABU\",\n\t\t\t\t\t\t\t\t\"CALAWAGAN (KALAWAGAN)\",\n\t\t\t\t\t\t\t\t\"CAMPO TINIO\",\n\t\t\t\t\t\t\t\t\"CARIDAD\",\n\t\t\t\t\t\t\t\t\"CAUDILLO\",\n\t\t\t\t\t\t\t\t\"CINCO-CINCO\",\n\t\t\t\t\t\t\t\t\"CITY SUPERMARKET (POB.)\",\n\t\t\t\t\t\t\t\t\"COMMUNAL\",\n\t\t\t\t\t\t\t\t\"CRUZ ROJA\",\n\t\t\t\t\t\t\t\t\"DAANG SARILE\",\n\t\t\t\t\t\t\t\t\"DALAMPANG\",\n\t\t\t\t\t\t\t\t\"DICARMA (POB.)\",\n\t\t\t\t\t\t\t\t\"DIMASALANG (POB.)\",\n\t\t\t\t\t\t\t\t\"DIONISIO S. GARCIA\",\n\t\t\t\t\t\t\t\t\"FATIMA (POB.)\",\n\t\t\t\t\t\t\t\t\"GENERAL LUNA (POB.)\",\n\t\t\t\t\t\t\t\t\"HERMOGENES C. CONCEPCION, SR.\",\n\t\t\t\t\t\t\t\t\"IBABAO BANA\",\n\t\t\t\t\t\t\t\t\"IMELDA DISTRICT\",\n\t\t\t\t\t\t\t\t\"ISLA (POB.)\",\n\t\t\t\t\t\t\t\t\"KALIKID NORTE\",\n\t\t\t\t\t\t\t\t\"KALIKID SUR\",\n\t\t\t\t\t\t\t\t\"KAPITAN PEPE (POB.)\",\n\t\t\t\t\t\t\t\t\"LAGARE\",\n\t\t\t\t\t\t\t\t\"LOURDES (MATUNGAL-TUNGAL)\",\n\t\t\t\t\t\t\t\t\"M. S. GARCIA\",\n\t\t\t\t\t\t\t\t\"MABINI EXTENSION\",\n\t\t\t\t\t\t\t\t\"MABINI HOMESITE\",\n\t\t\t\t\t\t\t\t\"MACATBONG\",\n\t\t\t\t\t\t\t\t\"MAGSAYSAY DISTRICT\",\n\t\t\t\t\t\t\t\t\"MAGSAYSAY SOUTH\",\n\t\t\t\t\t\t\t\t\"MARIA THERESA\",\n\t\t\t\t\t\t\t\t\"MATADERO (POB.)\",\n\t\t\t\t\t\t\t\t\"MAYAPYAP NORTE\",\n\t\t\t\t\t\t\t\t\"MAYAPYAP SUR\",\n\t\t\t\t\t\t\t\t\"MELOJAVILLA (POB.)\",\n\t\t\t\t\t\t\t\t\"NABAO (POB.)\",\n\t\t\t\t\t\t\t\t\"OBRERO\",\n\t\t\t\t\t\t\t\t\"PADRE BURGOS (POB.)\",\n\t\t\t\t\t\t\t\t\"PADRE CRISOSTOMO\",\n\t\t\t\t\t\t\t\t\"PAGAS\",\n\t\t\t\t\t\t\t\t\"PALAGAY\",\n\t\t\t\t\t\t\t\t\"PAMALDAN\",\n\t\t\t\t\t\t\t\t\"PANGATIAN\",\n\t\t\t\t\t\t\t\t\"PATALAC\",\n\t\t\t\t\t\t\t\t\"POLILIO\",\n\t\t\t\t\t\t\t\t\"PULA\",\n\t\t\t\t\t\t\t\t\"QUEZON DISTRICT (POB.)\",\n\t\t\t\t\t\t\t\t\"RIZDELIS (POB.)\",\n\t\t\t\t\t\t\t\t\"SAMON\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO\",\n\t\t\t\t\t\t\t\t\"SAN JOSEF NORTE\",\n\t\t\t\t\t\t\t\t\"SAN JOSEF SUR\",\n\t\t\t\t\t\t\t\t\"SAN JUAN POB. (ACOFA)\",\n\t\t\t\t\t\t\t\t\"SAN ROQUE NORTE\",\n\t\t\t\t\t\t\t\t\"SAN ROQUE SUR\",\n\t\t\t\t\t\t\t\t\"SANBERMICRISTI (POB.)\",\n\t\t\t\t\t\t\t\t\"SANGITAN\",\n\t\t\t\t\t\t\t\t\"SANGITAN EAST\",\n\t\t\t\t\t\t\t\t\"SANTA ARCADIA\",\n\t\t\t\t\t\t\t\t\"SANTO NI\u00D1O\",\n\t\t\t\t\t\t\t\t\"SAPANG\",\n\t\t\t\t\t\t\t\t\"SUMACAB ESTE\",\n\t\t\t\t\t\t\t\t\"SUMACAB NORTE\",\n\t\t\t\t\t\t\t\t\"SUMACAB SOUTH\",\n\t\t\t\t\t\t\t\t\"TALIPAPA\",\n\t\t\t\t\t\t\t\t\"VALDEFUENTE\",\n\t\t\t\t\t\t\t\t\"VALLE CRUZ\",\n\t\t\t\t\t\t\t\t\"VIJANDRE DISTRICT (POB.)\",\n\t\t\t\t\t\t\t\t\"VILLA OFELIA-CARIDAD\",\n\t\t\t\t\t\t\t\t\"ZULUETA DISTRICT (POB.)\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"CABIAO\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BAGONG BUHAY\",\n\t\t\t\t\t\t\t\t\"BAGONG SIKAT\",\n\t\t\t\t\t\t\t\t\"BAGONG SILANG\",\n\t\t\t\t\t\t\t\t\"CONCEPCION\",\n\t\t\t\t\t\t\t\t\"ENTABLADO\",\n\t\t\t\t\t\t\t\t\"MALIGAYA\",\n\t\t\t\t\t\t\t\t\"NATIVIDAD NORTH (POB.)\",\n\t\t\t\t\t\t\t\t\"NATIVIDAD SOUTH (POB.)\",\n\t\t\t\t\t\t\t\t\"PALASINAN\",\n\t\t\t\t\t\t\t\t\"POLILIO\",\n\t\t\t\t\t\t\t\t\"SAN ANTONIO\",\n\t\t\t\t\t\t\t\t\"SAN CARLOS\",\n\t\t\t\t\t\t\t\t\"SAN FERNANDO NORTE\",\n\t\t\t\t\t\t\t\t\"SAN FERNANDO SUR\",\n\t\t\t\t\t\t\t\t\"SAN GREGORIO\",\n\t\t\t\t\t\t\t\t\"SAN JUAN NORTH (POB.)\",\n\t\t\t\t\t\t\t\t\"SAN JUAN SOUTH (POB.)\",\n\t\t\t\t\t\t\t\t\"SAN ROQUE\",\n\t\t\t\t\t\t\t\t\"SAN VICENTE\",\n\t\t\t\t\t\t\t\t\"SANTA INES\",\n\t\t\t\t\t\t\t\t\"SANTA ISABEL\",\n\t\t\t\t\t\t\t\t\"SANTA RITA\",\n\t\t\t\t\t\t\t\t\"SINIPIT\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"CARRANGLAN\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BANTUG\",\n\t\t\t\t\t\t\t\t\"BUNGA\",\n\t\t\t\t\t\t\t\t\"BURGOS\",\n\t\t\t\t\t\t\t\t\"CAPINTALAN\",\n\t\t\t\t\t\t\t\t\"D. L. MAGLANOC POB. (BGY.III)\",\n\t\t\t\t\t\t\t\t\"F. C. OTIC POB. (BGY. II)\",\n\t\t\t\t\t\t\t\t\"G. S. ROSARIO POB. (BGY. IV)\",\n\t\t\t\t\t\t\t\t\"GENERAL LUNA\",\n\t\t\t\t\t\t\t\t\"JOSON (DIGIDIG)\",\n\t\t\t\t\t\t\t\t\"MINULI\",\n\t\t\t\t\t\t\t\t\"PIUT\",\n\t\t\t\t\t\t\t\t\"PUNCAN\",\n\t\t\t\t\t\t\t\t\"PUTLAN\",\n\t\t\t\t\t\t\t\t\"R.A.PADILLA (BALUARTE)\",\n\t\t\t\t\t\t\t\t\"SALAZAR\",\n\t\t\t\t\t\t\t\t\"SAN AGUSTIN\",\n\t\t\t\t\t\t\t\t\"T. L. PADILLA POB. (BGY. I)\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"CITY OF GAPAN\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BALANTE\",\n\t\t\t\t\t\t\t\t\"BAYANIHAN\",\n\t\t\t\t\t\t\t\t\"BULAK\",\n\t\t\t\t\t\t\t\t\"BUNGO\",\n\t\t\t\t\t\t\t\t\"KAPALANGAN\",\n\t\t\t\t\t\t\t\t\"MABUNGA\",\n\t\t\t\t\t\t\t\t\"MABURAK\",\n\t\t\t\t\t\t\t\t\"MAHIPON\",\n\t\t\t\t\t\t\t\t\"MAKABACLAY\",\n\t\t\t\t\t\t\t\t\"MALIMBA\",\n\t\t\t\t\t\t\t\t\"MANGINO\",\n\t\t\t\t\t\t\t\t\"MARELO\",\n\t\t\t\t\t\t\t\t\"PAMBUAN\",\n\t\t\t\t\t\t\t\t\"PARCUTELA\",\n\t\t\t\t\t\t\t\t\"PUTING TUBIG\",\n\t\t\t\t\t\t\t\t\"SAN LORENZO (POB.)\",\n\t\t\t\t\t\t\t\t\"SAN NICOLAS\",\n\t\t\t\t\t\t\t\t\"SAN ROQUE\",\n\t\t\t\t\t\t\t\t\"SAN VICENTE (POB.)\",\n\t\t\t\t\t\t\t\t\"SANTA CRUZ\",\n\t\t\t\t\t\t\t\t\"SANTO CRISTO NORTE\",\n\t\t\t\t\t\t\t\t\"SANTO CRISTO SUR\",\n\t\t\t\t\t\t\t\t\"SANTO NI\u00D1O\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"CUYAPO\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BALOY\",\n\t\t\t\t\t\t\t\t\"BAMBANABA\",\n\t\t\t\t\t\t\t\t\"BANTUG\",\n\t\t\t\t\t\t\t\t\"BENTIGAN\",\n\t\t\t\t\t\t\t\t\"BIBICLAT\",\n\t\t\t\t\t\t\t\t\"BONIFACIO\",\n\t\t\t\t\t\t\t\t\"BUED\",\n\t\t\t\t\t\t\t\t\"BULALA\",\n\t\t\t\t\t\t\t\t\"BURGOS\",\n\t\t\t\t\t\t\t\t\"CABATUAN\",\n\t\t\t\t\t\t\t\t\"CABILEO\",\n\t\t\t\t\t\t\t\t\"CACAPASAN\",\n\t\t\t\t\t\t\t\t\"CALANCUASAN NORTE\",\n\t\t\t\t\t\t\t\t\"CALANCUASAN SUR\",\n\t\t\t\t\t\t\t\t\"COLOSBOA\",\n\t\t\t\t\t\t\t\t\"COLUMBITIN\",\n\t\t\t\t\t\t\t\t\"CURVA\",\n\t\t\t\t\t\t\t\t\"DISTRICT I (POB. I)\",\n\t\t\t\t\t\t\t\t\"DISTRICT II (POB. II)\",\n\t\t\t\t\t\t\t\t\"DISTRICT IV (POB. IV)\",\n\t\t\t\t\t\t\t\t\"DISTRICT V (POB. V)\",\n\t\t\t\t\t\t\t\t\"DISTRICT VI (POB. VI)\",\n\t\t\t\t\t\t\t\t\"DISTRICT VII (POB. VII)\",\n\t\t\t\t\t\t\t\t\"DISTRICT VIII (POB. VIII)\",\n\t\t\t\t\t\t\t\t\"LANDIG\",\n\t\t\t\t\t\t\t\t\"LATAP\",\n\t\t\t\t\t\t\t\t\"LOOB\",\n\t\t\t\t\t\t\t\t\"LUNA\",\n\t\t\t\t\t\t\t\t\"MALBEG-PATALAN\",\n\t\t\t\t\t\t\t\t\"MALINENG\",\n\t\t\t\t\t\t\t\t\"MATINDEG\",\n\t\t\t\t\t\t\t\t\"MAYCABAN\",\n\t\t\t\t\t\t\t\t\"NACURALAN\",\n\t\t\t\t\t\t\t\t\"NAGMISAHAN\",\n\t\t\t\t\t\t\t\t\"PAITAN NORTE\",\n\t\t\t\t\t\t\t\t\"PAITAN SUR\",\n\t\t\t\t\t\t\t\t\"PIGLISAN\",\n\t\t\t\t\t\t\t\t\"PUGO\",\n\t\t\t\t\t\t\t\t\"RIZAL\",\n\t\t\t\t\t\t\t\t\"SABIT\",\n\t\t\t\t\t\t\t\t\"SALAGUSOG\",\n\t\t\t\t\t\t\t\t\"SAN ANTONIO\",\n\t\t\t\t\t\t\t\t\"SAN JOSE\",\n\t\t\t\t\t\t\t\t\"SAN JUAN\",\n\t\t\t\t\t\t\t\t\"SANTA CLARA\",\n\t\t\t\t\t\t\t\t\"SANTA CRUZ\",\n\t\t\t\t\t\t\t\t\"SINIMBAAN\",\n\t\t\t\t\t\t\t\t\"TAGTAGUMBAO\",\n\t\t\t\t\t\t\t\t\"TUTULOY\",\n\t\t\t\t\t\t\t\t\"UNGAB\",\n\t\t\t\t\t\t\t\t\"VILLAFLORES\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"GABALDON\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BAGONG SIKAT\",\n\t\t\t\t\t\t\t\t\"BAGTING\",\n\t\t\t\t\t\t\t\t\"BANTUG\",\n\t\t\t\t\t\t\t\t\"BITULOK (NORTH POB.)\",\n\t\t\t\t\t\t\t\t\"BUGNAN\",\n\t\t\t\t\t\t\t\t\"CALABASA\",\n\t\t\t\t\t\t\t\t\"CAMACHILE\",\n\t\t\t\t\t\t\t\t\"CUYAPA\",\n\t\t\t\t\t\t\t\t\"LIGAYA\",\n\t\t\t\t\t\t\t\t\"MACASANDAL\",\n\t\t\t\t\t\t\t\t\"MALINAO\",\n\t\t\t\t\t\t\t\t\"PANTOC\",\n\t\t\t\t\t\t\t\t\"PINAMALISAN\",\n\t\t\t\t\t\t\t\t\"SAWMILL\",\n\t\t\t\t\t\t\t\t\"SOUTH POBLACION\",\n\t\t\t\t\t\t\t\t\"TAGUMPAY\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"GEN. MAMERTO NATIVIDAD\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BALANGKARE NORTE\",\n\t\t\t\t\t\t\t\t\"BALANGKARE SUR\",\n\t\t\t\t\t\t\t\t\"BALARING\",\n\t\t\t\t\t\t\t\t\"BELEN\",\n\t\t\t\t\t\t\t\t\"BRAVO\",\n\t\t\t\t\t\t\t\t\"BUROL\",\n\t\t\t\t\t\t\t\t\"KABULIHAN\",\n\t\t\t\t\t\t\t\t\"MAG-ASAWANG SAMPALOC\",\n\t\t\t\t\t\t\t\t\"MANAROG\",\n\t\t\t\t\t\t\t\t\"MATAAS NA KAHOY\",\n\t\t\t\t\t\t\t\t\"PANACSAC\",\n\t\t\t\t\t\t\t\t\"PICALEON\",\n\t\t\t\t\t\t\t\t\"PINAHAN\",\n\t\t\t\t\t\t\t\t\"PLATERO\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"PULA\",\n\t\t\t\t\t\t\t\t\"PULONG SINGKAMAS\",\n\t\t\t\t\t\t\t\t\"SAPANG BATO\",\n\t\t\t\t\t\t\t\t\"TALABUTAB NORTE\",\n\t\t\t\t\t\t\t\t\"TALABUTAB SUR\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"GENERAL TINIO\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BAGO\",\n\t\t\t\t\t\t\t\t\"CONCEPCION\",\n\t\t\t\t\t\t\t\t\"NAZARETH\",\n\t\t\t\t\t\t\t\t\"PADOLINA\",\n\t\t\t\t\t\t\t\t\"PALALE\",\n\t\t\t\t\t\t\t\t\"PIAS\",\n\t\t\t\t\t\t\t\t\"POBLACION CENTRAL\",\n\t\t\t\t\t\t\t\t\"POBLACION EAST\",\n\t\t\t\t\t\t\t\t\"POBLACION WEST\",\n\t\t\t\t\t\t\t\t\"PULONG MATONG\",\n\t\t\t\t\t\t\t\t\"RIO CHICO\",\n\t\t\t\t\t\t\t\t\"SAMPAGUITA\",\n\t\t\t\t\t\t\t\t\"SAN PEDRO (POB.)\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"GUIMBA\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"AGCANO\",\n\t\t\t\t\t\t\t\t\"AYOS LOMBOY\",\n\t\t\t\t\t\t\t\t\"BACAYAO\",\n\t\t\t\t\t\t\t\t\"BAGONG BARRIO\",\n\t\t\t\t\t\t\t\t\"BALBALINO\",\n\t\t\t\t\t\t\t\t\"BALINGOG EAST\",\n\t\t\t\t\t\t\t\t\"BALINGOG WEST\",\n\t\t\t\t\t\t\t\t\"BANITAN\",\n\t\t\t\t\t\t\t\t\"BANTUG\",\n\t\t\t\t\t\t\t\t\"BULAKID\",\n\t\t\t\t\t\t\t\t\"BUNOL\",\n\t\t\t\t\t\t\t\t\"CABALLERO\",\n\t\t\t\t\t\t\t\t\"CABARUAN\",\n\t\t\t\t\t\t\t\t\"CAINGIN TABING ILOG\",\n\t\t\t\t\t\t\t\t\"CALEM\",\n\t\t\t\t\t\t\t\t\"CAMILING\",\n\t\t\t\t\t\t\t\t\"CARDINAL\",\n\t\t\t\t\t\t\t\t\"CASONGSONG\",\n\t\t\t\t\t\t\t\t\"CATIMON\",\n\t\t\t\t\t\t\t\t\"CAVITE\",\n\t\t\t\t\t\t\t\t\"CAWAYAN BUGTONG\",\n\t\t\t\t\t\t\t\t\"CONSUELO\",\n\t\t\t\t\t\t\t\t\"CULONG\",\n\t\t\t\t\t\t\t\t\"ESCANO\",\n\t\t\t\t\t\t\t\t\"FAIGAL\",\n\t\t\t\t\t\t\t\t\"GALVAN\",\n\t\t\t\t\t\t\t\t\"GUISET\",\n\t\t\t\t\t\t\t\t\"LAMORITO\",\n\t\t\t\t\t\t\t\t\"LENNEC\",\n\t\t\t\t\t\t\t\t\"MACAMIAS\",\n\t\t\t\t\t\t\t\t\"MACAPABELLAG\",\n\t\t\t\t\t\t\t\t\"MACATCATUIT\",\n\t\t\t\t\t\t\t\t\"MANACSAC\",\n\t\t\t\t\t\t\t\t\"MANGGANG MARIKIT\",\n\t\t\t\t\t\t\t\t\"MATURANOC\",\n\t\t\t\t\t\t\t\t\"MAYBUBON\",\n\t\t\t\t\t\t\t\t\"NAGLABRAHAN\",\n\t\t\t\t\t\t\t\t\"NAGPANDAYAN\",\n\t\t\t\t\t\t\t\t\"NARVACAN I\",\n\t\t\t\t\t\t\t\t\"NARVACAN II\",\n\t\t\t\t\t\t\t\t\"PACAC\",\n\t\t\t\t\t\t\t\t\"PARTIDA I\",\n\t\t\t\t\t\t\t\t\"PARTIDA II\",\n\t\t\t\t\t\t\t\t\"PASONG INCHIC\",\n\t\t\t\t\t\t\t\t\"SAINT JOHN DISTRICT (POB.)\",\n\t\t\t\t\t\t\t\t\"SAN AGUSTIN\",\n\t\t\t\t\t\t\t\t\"SAN ANDRES\",\n\t\t\t\t\t\t\t\t\"SAN BERNARDINO\",\n\t\t\t\t\t\t\t\t\"SAN MARCELINO\",\n\t\t\t\t\t\t\t\t\"SAN MIGUEL\",\n\t\t\t\t\t\t\t\t\"SAN RAFAEL\",\n\t\t\t\t\t\t\t\t\"SAN ROQUE\",\n\t\t\t\t\t\t\t\t\"SANTA ANA\",\n\t\t\t\t\t\t\t\t\"SANTA CRUZ\",\n\t\t\t\t\t\t\t\t\"SANTA LUCIA\",\n\t\t\t\t\t\t\t\t\"SANTA VERONICA DISTRICT (POB.)\",\n\t\t\t\t\t\t\t\t\"SANTO CRISTO DISTRICT (POB.)\",\n\t\t\t\t\t\t\t\t\"SARANAY DISTRICT (POB.)\",\n\t\t\t\t\t\t\t\t\"SINULATAN\",\n\t\t\t\t\t\t\t\t\"SUBOL\",\n\t\t\t\t\t\t\t\t\"TAMPAC I\",\n\t\t\t\t\t\t\t\t\"TAMPAC II & III\",\n\t\t\t\t\t\t\t\t\"TRIALA\",\n\t\t\t\t\t\t\t\t\"YUSON\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"JAEN\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"CALABASA\",\n\t\t\t\t\t\t\t\t\"DAMPULAN (POB.)\",\n\t\t\t\t\t\t\t\t\"DON MARIANO MARCOS (POB.)\",\n\t\t\t\t\t\t\t\t\"HILERA\",\n\t\t\t\t\t\t\t\t\"IMBUNIA\",\n\t\t\t\t\t\t\t\t\"IMELDA POB. (DO\u00D1A AURORA)\",\n\t\t\t\t\t\t\t\t\"LAMBAKIN\",\n\t\t\t\t\t\t\t\t\"LANGLA\",\n\t\t\t\t\t\t\t\t\"MAGSALISI\",\n\t\t\t\t\t\t\t\t\"MALABON-KAINGIN\",\n\t\t\t\t\t\t\t\t\"MARAWA\",\n\t\t\t\t\t\t\t\t\"NIYUGAN\",\n\t\t\t\t\t\t\t\t\"OCAMPO-RIVERA DISTRICT (POB.)\",\n\t\t\t\t\t\t\t\t\"PAKOL\",\n\t\t\t\t\t\t\t\t\"PAMACPACAN\",\n\t\t\t\t\t\t\t\t\"PINANGGAAN\",\n\t\t\t\t\t\t\t\t\"PUTLOD\",\n\t\t\t\t\t\t\t\t\"SAN JOSE\",\n\t\t\t\t\t\t\t\t\"SAN JOSEF (NABAO)\",\n\t\t\t\t\t\t\t\t\"SAN PABLO\",\n\t\t\t\t\t\t\t\t\"SAN ROQUE\",\n\t\t\t\t\t\t\t\t\"SAN VICENTE\",\n\t\t\t\t\t\t\t\t\"SANTA RITA\",\n\t\t\t\t\t\t\t\t\"SANTO TOMAS NORTH\",\n\t\t\t\t\t\t\t\t\"SANTO TOMAS SOUTH\",\n\t\t\t\t\t\t\t\t\"SAPANG\",\n\t\t\t\t\t\t\t\t\"ULANIN-PITAK\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"LAUR\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BARANGAY I (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY II (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY III (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY IV (POB.)\",\n\t\t\t\t\t\t\t\t\"BETANIA\",\n\t\t\t\t\t\t\t\t\"CANANTONG\",\n\t\t\t\t\t\t\t\t\"NAUZON\",\n\t\t\t\t\t\t\t\t\"PANGARULONG\",\n\t\t\t\t\t\t\t\t\"PINAGBAYANAN\",\n\t\t\t\t\t\t\t\t\"SAGANA\",\n\t\t\t\t\t\t\t\t\"SAN FELIPE\",\n\t\t\t\t\t\t\t\t\"SAN FERNANDO\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO\",\n\t\t\t\t\t\t\t\t\"SAN JOSEF\",\n\t\t\t\t\t\t\t\t\"SAN JUAN\",\n\t\t\t\t\t\t\t\t\"SAN VICENTE\",\n\t\t\t\t\t\t\t\t\"SICLONG\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"LICAB\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"AQUINO\",\n\t\t\t\t\t\t\t\t\"LINAO\",\n\t\t\t\t\t\t\t\t\"POBLACION NORTE\",\n\t\t\t\t\t\t\t\t\"POBLACION SUR\",\n\t\t\t\t\t\t\t\t\"SAN CASIMIRO\",\n\t\t\t\t\t\t\t\t\"SAN CRISTOBAL\",\n\t\t\t\t\t\t\t\t\"SAN JOSE\",\n\t\t\t\t\t\t\t\t\"SAN JUAN\",\n\t\t\t\t\t\t\t\t\"SANTA MARIA\",\n\t\t\t\t\t\t\t\t\"TABING ILOG\",\n\t\t\t\t\t\t\t\t\"VILLAROSA\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"LLANERA\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"A. BONIFACIO\",\n\t\t\t\t\t\t\t\t\"BAGUMBAYAN (POB.)\",\n\t\t\t\t\t\t\t\t\"BOSQUE\",\n\t\t\t\t\t\t\t\t\"CARIDAD NORTE\",\n\t\t\t\t\t\t\t\t\"CARIDAD SUR\",\n\t\t\t\t\t\t\t\t\"CASILE\",\n\t\t\t\t\t\t\t\t\"FLORIDA BLANCA\",\n\t\t\t\t\t\t\t\t\"GENERAL LUNA\",\n\t\t\t\t\t\t\t\t\"GENERAL RICARTE\",\n\t\t\t\t\t\t\t\t\"GOMEZ\",\n\t\t\t\t\t\t\t\t\"INANAMA\",\n\t\t\t\t\t\t\t\t\"LIGAYA\",\n\t\t\t\t\t\t\t\t\"MABINI\",\n\t\t\t\t\t\t\t\t\"MURCON\",\n\t\t\t\t\t\t\t\t\"PLARIDEL\",\n\t\t\t\t\t\t\t\t\"SAN FELIPE\",\n\t\t\t\t\t\t\t\t\"SAN FRANCISCO\",\n\t\t\t\t\t\t\t\t\"SAN NICOLAS\",\n\t\t\t\t\t\t\t\t\"SAN VICENTE\",\n\t\t\t\t\t\t\t\t\"SANTA BARBARA\",\n\t\t\t\t\t\t\t\t\"VICTORIA\",\n\t\t\t\t\t\t\t\t\"VILLA VINIEGAS\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"LUPAO\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"AGUPALO ESTE\",\n\t\t\t\t\t\t\t\t\"AGUPALO WESTE\",\n\t\t\t\t\t\t\t\t\"ALALAY CHICA\",\n\t\t\t\t\t\t\t\t\"ALALAY GRANDE\",\n\t\t\t\t\t\t\t\t\"BAGONG FLORES\",\n\t\t\t\t\t\t\t\t\"BALBALUNGAO\",\n\t\t\t\t\t\t\t\t\"BURGOS\",\n\t\t\t\t\t\t\t\t\"CORDERO\",\n\t\t\t\t\t\t\t\t\"J. U. TIENZO (ARIMAL)\",\n\t\t\t\t\t\t\t\t\"MAPANGPANG\",\n\t\t\t\t\t\t\t\t\"NAMULANDAYAN\",\n\t\t\t\t\t\t\t\t\"PARISTA\",\n\t\t\t\t\t\t\t\t\"POBLACION EAST\",\n\t\t\t\t\t\t\t\t\"POBLACION NORTH\",\n\t\t\t\t\t\t\t\t\"POBLACION SOUTH\",\n\t\t\t\t\t\t\t\t\"POBLACION WEST\",\n\t\t\t\t\t\t\t\t\"SALVACION I\",\n\t\t\t\t\t\t\t\t\"SALVACION II\",\n\t\t\t\t\t\t\t\t\"SAN ANTONIO ESTE\",\n\t\t\t\t\t\t\t\t\"SAN ANTONIO WESTE\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO\",\n\t\t\t\t\t\t\t\t\"SAN PEDRO\",\n\t\t\t\t\t\t\t\t\"SAN ROQUE\",\n\t\t\t\t\t\t\t\t\"SANTO DOMINGO\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"NAMPICUAN\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ALEMANIA\",\n\t\t\t\t\t\t\t\t\"AMBASADOR ALZATE VILLAGE\",\n\t\t\t\t\t\t\t\t\"CABADUCAN EAST (POB.)\",\n\t\t\t\t\t\t\t\t\"CABADUCAN WEST (POB.)\",\n\t\t\t\t\t\t\t\t\"CABAWANGAN\",\n\t\t\t\t\t\t\t\t\"EAST CENTRAL POBLACION\",\n\t\t\t\t\t\t\t\t\"EDY\",\n\t\t\t\t\t\t\t\t\"ESTACION (POB.)\",\n\t\t\t\t\t\t\t\t\"MAELING\",\n\t\t\t\t\t\t\t\t\"MAYANTOC\",\n\t\t\t\t\t\t\t\t\"MEDICO\",\n\t\t\t\t\t\t\t\t\"MONIC\",\n\t\t\t\t\t\t\t\t\"NORTH POBLACION\",\n\t\t\t\t\t\t\t\t\"NORTHWEST POBLACION\",\n\t\t\t\t\t\t\t\t\"RECUERDO\",\n\t\t\t\t\t\t\t\t\"SOUTH CENTRAL POBLACION\",\n\t\t\t\t\t\t\t\t\"SOUTHEAST POBLACION\",\n\t\t\t\t\t\t\t\t\"SOUTHWEST POBLACION\",\n\t\t\t\t\t\t\t\t\"TONY\",\n\t\t\t\t\t\t\t\t\"WEST CENTRAL POBLACION\",\n\t\t\t\t\t\t\t\t\"WEST POBLACION\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"PALAYAN CITY\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ATATE\",\n\t\t\t\t\t\t\t\t\"AULO\",\n\t\t\t\t\t\t\t\t\"BAGONG BUHAY\",\n\t\t\t\t\t\t\t\t\"BO. MILITAR (FORT MAGSAYSAY)\",\n\t\t\t\t\t\t\t\t\"CABALLERO\",\n\t\t\t\t\t\t\t\t\"CAIMITO\",\n\t\t\t\t\t\t\t\t\"DO\u00D1A JOSEFA\",\n\t\t\t\t\t\t\t\t\"GANADERIA\",\n\t\t\t\t\t\t\t\t\"IMELDA VALLEY\",\n\t\t\t\t\t\t\t\t\"LANGKA\",\n\t\t\t\t\t\t\t\t\"MALATE (POB.)\",\n\t\t\t\t\t\t\t\t\"MALIGAYA\",\n\t\t\t\t\t\t\t\t\"MANACNAC\",\n\t\t\t\t\t\t\t\t\"MAPAIT\",\n\t\t\t\t\t\t\t\t\"MARCOS VILLAGE\",\n\t\t\t\t\t\t\t\t\"POPOLON PAGAS\",\n\t\t\t\t\t\t\t\t\"SANTOLAN\",\n\t\t\t\t\t\t\t\t\"SAPANG BUHO\",\n\t\t\t\t\t\t\t\t\"SINGALAT\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"PANTABANGAN\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"CADACLAN\",\n\t\t\t\t\t\t\t\t\"CAMBITALA\",\n\t\t\t\t\t\t\t\t\"CONVERSION\",\n\t\t\t\t\t\t\t\t\"FATIMA\",\n\t\t\t\t\t\t\t\t\"GANDUZ\",\n\t\t\t\t\t\t\t\t\"LIBERTY\",\n\t\t\t\t\t\t\t\t\"MALBANG\",\n\t\t\t\t\t\t\t\t\"MARIKIT\",\n\t\t\t\t\t\t\t\t\"NAPON-NAPON\",\n\t\t\t\t\t\t\t\t\"POBLACION EAST\",\n\t\t\t\t\t\t\t\t\"POBLACION WEST\",\n\t\t\t\t\t\t\t\t\"SAMPALOC\",\n\t\t\t\t\t\t\t\t\"SAN JUAN\",\n\t\t\t\t\t\t\t\t\"VILLARICA\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"PE\u00D1ARANDA\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"CALLOS\",\n\t\t\t\t\t\t\t\t\"LAS PI\u00D1AS\",\n\t\t\t\t\t\t\t\t\"POBLACION I\",\n\t\t\t\t\t\t\t\t\"POBLACION II\",\n\t\t\t\t\t\t\t\t\"POBLACION III\",\n\t\t\t\t\t\t\t\t\"POBLACION IV\",\n\t\t\t\t\t\t\t\t\"SAN JOSEF\",\n\t\t\t\t\t\t\t\t\"SAN MARIANO (MAUGAT)\",\n\t\t\t\t\t\t\t\t\"SANTO TOMAS\",\n\t\t\t\t\t\t\t\t\"SINASAJAN\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"QUEZON\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BARANGAY I (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY II (POB.)\",\n\t\t\t\t\t\t\t\t\"BERTESE\",\n\t\t\t\t\t\t\t\t\"DO\u00D1A LUCIA\",\n\t\t\t\t\t\t\t\t\"DULONG BAYAN\",\n\t\t\t\t\t\t\t\t\"ILOG BALIWAG\",\n\t\t\t\t\t\t\t\t\"PULONG BAHAY\",\n\t\t\t\t\t\t\t\t\"SAN ALEJANDRO\",\n\t\t\t\t\t\t\t\t\"SAN ANDRES I\",\n\t\t\t\t\t\t\t\t\"SAN ANDRES II\",\n\t\t\t\t\t\t\t\t\"SAN MANUEL\",\n\t\t\t\t\t\t\t\t\"SAN MIGUEL\",\n\t\t\t\t\t\t\t\t\"SANTA CLARA\",\n\t\t\t\t\t\t\t\t\"SANTA RITA\",\n\t\t\t\t\t\t\t\t\"SANTO CRISTO\",\n\t\t\t\t\t\t\t\t\"SANTO TOMAS FERIA\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"RIZAL\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"AGBANNAWAG\",\n\t\t\t\t\t\t\t\t\"AGLIPAY (CURVA)\",\n\t\t\t\t\t\t\t\t\"BICOS\",\n\t\t\t\t\t\t\t\t\"CABUCBUCAN\",\n\t\t\t\t\t\t\t\t\"CALAOCAN DISTRICT\",\n\t\t\t\t\t\t\t\t\"CANAAN EAST\",\n\t\t\t\t\t\t\t\t\"CANAAN WEST\",\n\t\t\t\t\t\t\t\t\"CASILAGAN\",\n\t\t\t\t\t\t\t\t\"DEL PILAR\",\n\t\t\t\t\t\t\t\t\"ESTRELLA\",\n\t\t\t\t\t\t\t\t\"GENERAL LUNA\",\n\t\t\t\t\t\t\t\t\"MACAPSING\",\n\t\t\t\t\t\t\t\t\"MALIGAYA\",\n\t\t\t\t\t\t\t\t\"PACO ROMAN\",\n\t\t\t\t\t\t\t\t\"PAG-ASA\",\n\t\t\t\t\t\t\t\t\"POBLACION CENTRAL\",\n\t\t\t\t\t\t\t\t\"POBLACION EAST\",\n\t\t\t\t\t\t\t\t\"POBLACION NORTE\",\n\t\t\t\t\t\t\t\t\"POBLACION SUR\",\n\t\t\t\t\t\t\t\t\"POBLACION WEST\",\n\t\t\t\t\t\t\t\t\"PORTAL\",\n\t\t\t\t\t\t\t\t\"SAN ESTEBAN\",\n\t\t\t\t\t\t\t\t\"SAN GREGORIO\",\n\t\t\t\t\t\t\t\t\"SANTA MONICA\",\n\t\t\t\t\t\t\t\t\"VILLA LABRADOR\",\n\t\t\t\t\t\t\t\t\"VILLA PARAISO\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"SAN ANTONIO\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BULIRAN\",\n\t\t\t\t\t\t\t\t\"CAMA JUAN\",\n\t\t\t\t\t\t\t\t\"JULO\",\n\t\t\t\t\t\t\t\t\"LAWANG KUPANG\",\n\t\t\t\t\t\t\t\t\"LUYOS\",\n\t\t\t\t\t\t\t\t\"MAUGAT\",\n\t\t\t\t\t\t\t\t\"PANABINGAN\",\n\t\t\t\t\t\t\t\t\"PAPAYA\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"SAN FRANCISCO\",\n\t\t\t\t\t\t\t\t\"SAN JOSE\",\n\t\t\t\t\t\t\t\t\"SAN MARIANO\",\n\t\t\t\t\t\t\t\t\"SANTA BARBARA\",\n\t\t\t\t\t\t\t\t\"SANTA CRUZ\",\n\t\t\t\t\t\t\t\t\"SANTO CRISTO\",\n\t\t\t\t\t\t\t\t\"TIKIW\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"SAN ISIDRO\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ALUA\",\n\t\t\t\t\t\t\t\t\"CALABA\",\n\t\t\t\t\t\t\t\t\"MALAPIT\",\n\t\t\t\t\t\t\t\t\"MANGGA\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"PULO\",\n\t\t\t\t\t\t\t\t\"SAN ROQUE\",\n\t\t\t\t\t\t\t\t\"SANTO CRISTO\",\n\t\t\t\t\t\t\t\t\"TABON\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"SAN JOSE CITY\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"A. PASCUAL\",\n\t\t\t\t\t\t\t\t\"ABAR 2ND\",\n\t\t\t\t\t\t\t\t\"ABAR IST\",\n\t\t\t\t\t\t\t\t\"BAGONG SIKAT\",\n\t\t\t\t\t\t\t\t\"CAANAWAN\",\n\t\t\t\t\t\t\t\t\"CALAOCAN\",\n\t\t\t\t\t\t\t\t\"CAMANACSACAN\",\n\t\t\t\t\t\t\t\t\"CANUTO RAMOS POB. (DISTRICT III)\",\n\t\t\t\t\t\t\t\t\"CRISANTO SANCHEZ POB. (DISTRICT V)\",\n\t\t\t\t\t\t\t\t\"CULAYLAY\",\n\t\t\t\t\t\t\t\t\"DIZOL\",\n\t\t\t\t\t\t\t\t\"FERDINAND E. MARCOS POB. (DISTRICT II)\",\n\t\t\t\t\t\t\t\t\"KALIWANAGAN\",\n\t\t\t\t\t\t\t\t\"KITA-KITA\",\n\t\t\t\t\t\t\t\t\"MALASIN\",\n\t\t\t\t\t\t\t\t\"MANICLA\",\n\t\t\t\t\t\t\t\t\"PALESTINA\",\n\t\t\t\t\t\t\t\t\"PARANG MANGGA\",\n\t\t\t\t\t\t\t\t\"PINILI\",\n\t\t\t\t\t\t\t\t\"PORAIS\",\n\t\t\t\t\t\t\t\t\"RAFAEL RUEDA, SR. POB. (DISTRICT I)\",\n\t\t\t\t\t\t\t\t\"RAYMUNDO EUGENIO POB. (DISTRICT IV)\",\n\t\t\t\t\t\t\t\t\"SAN AGUSTIN\",\n\t\t\t\t\t\t\t\t\"SAN JUAN\",\n\t\t\t\t\t\t\t\t\"SAN MAURICIO\",\n\t\t\t\t\t\t\t\t\"SANTO NI\u00D1O 1ST\",\n\t\t\t\t\t\t\t\t\"SANTO NI\u00D1O 2ND\",\n\t\t\t\t\t\t\t\t\"SANTO NI\u00D1O 3RD\",\n\t\t\t\t\t\t\t\t\"SANTO TOMAS\",\n\t\t\t\t\t\t\t\t\"SIBUT\",\n\t\t\t\t\t\t\t\t\"SINIPIT BUBON\",\n\t\t\t\t\t\t\t\t\"TABULAC\",\n\t\t\t\t\t\t\t\t\"TAYABO\",\n\t\t\t\t\t\t\t\t\"TONDOD\",\n\t\t\t\t\t\t\t\t\"TULAT\",\n\t\t\t\t\t\t\t\t\"VILLA FLORESCA\",\n\t\t\t\t\t\t\t\t\"VILLA JOSON (PARILLA)\",\n\t\t\t\t\t\t\t\t\"VILLA MARINA\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"SAN LEONARDO\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BONIFACIO DISTRICT (POB.)\",\n\t\t\t\t\t\t\t\t\"BURGOS DISTRICT (POB.)\",\n\t\t\t\t\t\t\t\t\"CASTELLANO\",\n\t\t\t\t\t\t\t\t\"DIVERSION\",\n\t\t\t\t\t\t\t\t\"MAGPAPALAYOC\",\n\t\t\t\t\t\t\t\t\"MALLORCA\",\n\t\t\t\t\t\t\t\t\"MAMBANGNAN\",\n\t\t\t\t\t\t\t\t\"NIEVES\",\n\t\t\t\t\t\t\t\t\"RIZAL DISTRICT (POB.)\",\n\t\t\t\t\t\t\t\t\"SAN ANTON\",\n\t\t\t\t\t\t\t\t\"SAN BARTOLOME (POB.)\",\n\t\t\t\t\t\t\t\t\"SAN ROQUE\",\n\t\t\t\t\t\t\t\t\"TABUATING\",\n\t\t\t\t\t\t\t\t\"TAGUMPAY\",\n\t\t\t\t\t\t\t\t\"TAMBO ADORABLE\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"SANTA ROSA\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"AGUINALDO\",\n\t\t\t\t\t\t\t\t\"BERANG\",\n\t\t\t\t\t\t\t\t\"BURGOS\",\n\t\t\t\t\t\t\t\t\"COJUANGCO (POB.)\",\n\t\t\t\t\t\t\t\t\"DEL PILAR\",\n\t\t\t\t\t\t\t\t\"GOMEZ\",\n\t\t\t\t\t\t\t\t\"INSPECTOR\",\n\t\t\t\t\t\t\t\t\"ISLA\",\n\t\t\t\t\t\t\t\t\"LA FUENTE\",\n\t\t\t\t\t\t\t\t\"LIWAYWAY\",\n\t\t\t\t\t\t\t\t\"LOURDES\",\n\t\t\t\t\t\t\t\t\"LUNA\",\n\t\t\t\t\t\t\t\t\"MABINI\",\n\t\t\t\t\t\t\t\t\"MALACA\u00D1ANG\",\n\t\t\t\t\t\t\t\t\"MALIOLIO\",\n\t\t\t\t\t\t\t\t\"MAPALAD\",\n\t\t\t\t\t\t\t\t\"RAJAL CENTRO\",\n\t\t\t\t\t\t\t\t\"RAJAL NORTE\",\n\t\t\t\t\t\t\t\t\"RAJAL SUR\",\n\t\t\t\t\t\t\t\t\"RIZAL (POB.)\",\n\t\t\t\t\t\t\t\t\"SAN GREGORIO\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO\",\n\t\t\t\t\t\t\t\t\"SAN JOSEP\",\n\t\t\t\t\t\t\t\t\"SAN MARIANO\",\n\t\t\t\t\t\t\t\t\"SAN PEDRO\",\n\t\t\t\t\t\t\t\t\"SANTA TERESITA\",\n\t\t\t\t\t\t\t\t\"SANTO ROSARIO\",\n\t\t\t\t\t\t\t\t\"SAPSAP\",\n\t\t\t\t\t\t\t\t\"SOLEDAD\",\n\t\t\t\t\t\t\t\t\"TAGPOS\",\n\t\t\t\t\t\t\t\t\"TRAMO\",\n\t\t\t\t\t\t\t\t\"VALENZUELA (POB.)\",\n\t\t\t\t\t\t\t\t\"ZAMORA (POB.)\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"SANTO DOMINGO\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BALOC\",\n\t\t\t\t\t\t\t\t\"BUASAO\",\n\t\t\t\t\t\t\t\t\"BURGOS\",\n\t\t\t\t\t\t\t\t\"CABUGAO\",\n\t\t\t\t\t\t\t\t\"CASULUCAN\",\n\t\t\t\t\t\t\t\t\"COMITANG\",\n\t\t\t\t\t\t\t\t\"CONCEPCION\",\n\t\t\t\t\t\t\t\t\"DOLORES\",\n\t\t\t\t\t\t\t\t\"GENERAL LUNA\",\n\t\t\t\t\t\t\t\t\"HULO\",\n\t\t\t\t\t\t\t\t\"MABINI\",\n\t\t\t\t\t\t\t\t\"MALASIN\",\n\t\t\t\t\t\t\t\t\"MALAYA (POOK MALAYA)\",\n\t\t\t\t\t\t\t\t\"MALAYANTOC\",\n\t\t\t\t\t\t\t\t\"MAMBARAO\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"PULONG BULI\",\n\t\t\t\t\t\t\t\t\"SAGABA\",\n\t\t\t\t\t\t\t\t\"SAN AGUSTIN\",\n\t\t\t\t\t\t\t\t\"SAN FABIAN\",\n\t\t\t\t\t\t\t\t\"SAN FRANCISCO\",\n\t\t\t\t\t\t\t\t\"SAN PASCUAL\",\n\t\t\t\t\t\t\t\t\"SANTA RITA\",\n\t\t\t\t\t\t\t\t\"SANTO ROSARIO\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"SCIENCE CITY OF MU\u00D1OZ\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BAGONG SIKAT\",\n\t\t\t\t\t\t\t\t\"BALANTE\",\n\t\t\t\t\t\t\t\t\"BANTUG\",\n\t\t\t\t\t\t\t\t\"BICAL\",\n\t\t\t\t\t\t\t\t\"CABISUCULAN\",\n\t\t\t\t\t\t\t\t\"CALABALABAAN\",\n\t\t\t\t\t\t\t\t\"CALISITAN\",\n\t\t\t\t\t\t\t\t\"CATALANACAN\",\n\t\t\t\t\t\t\t\t\"CURVA\",\n\t\t\t\t\t\t\t\t\"FRANZA\",\n\t\t\t\t\t\t\t\t\"GABALDON\",\n\t\t\t\t\t\t\t\t\"LABNEY\",\n\t\t\t\t\t\t\t\t\"LICAONG\",\n\t\t\t\t\t\t\t\t\"LINGLINGAY\",\n\t\t\t\t\t\t\t\t\"MAGTANGGOL\",\n\t\t\t\t\t\t\t\t\"MALIGAYA\",\n\t\t\t\t\t\t\t\t\"MANGANDINGAY\",\n\t\t\t\t\t\t\t\t\"MAPANGPANG\",\n\t\t\t\t\t\t\t\t\"MARAGOL\",\n\t\t\t\t\t\t\t\t\"MATINGKIS\",\n\t\t\t\t\t\t\t\t\"NAGLABRAHAN\",\n\t\t\t\t\t\t\t\t\"PALUSAPIS\",\n\t\t\t\t\t\t\t\t\"PANDALLA\",\n\t\t\t\t\t\t\t\t\"POBLACION EAST\",\n\t\t\t\t\t\t\t\t\"POBLACION NORTH\",\n\t\t\t\t\t\t\t\t\"POBLACION SOUTH\",\n\t\t\t\t\t\t\t\t\"POBLACION WEST\",\n\t\t\t\t\t\t\t\t\"RANG-AYAN\",\n\t\t\t\t\t\t\t\t\"RIZAL\",\n\t\t\t\t\t\t\t\t\"SAN ANDRES\",\n\t\t\t\t\t\t\t\t\"SAN ANTONIO\",\n\t\t\t\t\t\t\t\t\"SAN FELIPE\",\n\t\t\t\t\t\t\t\t\"SAPANG CAWAYAN\",\n\t\t\t\t\t\t\t\t\"VILLA CUIZON\",\n\t\t\t\t\t\t\t\t\"VILLA ISLA\",\n\t\t\t\t\t\t\t\t\"VILLA NATI\",\n\t\t\t\t\t\t\t\t\"VILLA SANTOS\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"TALAVERA\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ANDAL ALINO (POB.)\",\n\t\t\t\t\t\t\t\t\"BAGONG SIKAT\",\n\t\t\t\t\t\t\t\t\"BAGONG SILANG\",\n\t\t\t\t\t\t\t\t\"BAKAL I\",\n\t\t\t\t\t\t\t\t\"BAKAL II\",\n\t\t\t\t\t\t\t\t\"BAKAL III\",\n\t\t\t\t\t\t\t\t\"BALUGA\",\n\t\t\t\t\t\t\t\t\"BANTUG\",\n\t\t\t\t\t\t\t\t\"BANTUG HACIENDA\",\n\t\t\t\t\t\t\t\t\"BANTUG HAMOG (BASANG HAMOG)\",\n\t\t\t\t\t\t\t\t\"BUGTONG NA BULI\",\n\t\t\t\t\t\t\t\t\"BULAC\",\n\t\t\t\t\t\t\t\t\"BURNAY\",\n\t\t\t\t\t\t\t\t\"CAANIPLAHAN\",\n\t\t\t\t\t\t\t\t\"CABUBULAONAN\",\n\t\t\t\t\t\t\t\t\"CALIPAHAN\",\n\t\t\t\t\t\t\t\t\"CAMPOS\",\n\t\t\t\t\t\t\t\t\"CAPUTICAN\",\n\t\t\t\t\t\t\t\t\"CASULUCAN ESTE\",\n\t\t\t\t\t\t\t\t\"COLLADO\",\n\t\t\t\t\t\t\t\t\"DIMASALANG NORTE\",\n\t\t\t\t\t\t\t\t\"DIMASALANG SUR\",\n\t\t\t\t\t\t\t\t\"DINARAYAT\",\n\t\t\t\t\t\t\t\t\"ESGUERRA DISTRICT (POB.)\",\n\t\t\t\t\t\t\t\t\"GULOD\",\n\t\t\t\t\t\t\t\t\"HOMESTEAD I\",\n\t\t\t\t\t\t\t\t\"HOMESTEAD II\",\n\t\t\t\t\t\t\t\t\"KINALANGUYAN\",\n\t\t\t\t\t\t\t\t\"LA TORRE\",\n\t\t\t\t\t\t\t\t\"LOMBOY\",\n\t\t\t\t\t\t\t\t\"MABUHAY\",\n\t\t\t\t\t\t\t\t\"MAESTRANG KIKAY (POB.)\",\n\t\t\t\t\t\t\t\t\"MAMANDIL\",\n\t\t\t\t\t\t\t\t\"MARCOS DISTRICT (POB.)\",\n\t\t\t\t\t\t\t\t\"MATINGKIS\",\n\t\t\t\t\t\t\t\t\"MINABUYOC\",\n\t\t\t\t\t\t\t\t\"PAG-ASA (POB.)\",\n\t\t\t\t\t\t\t\t\"PALUDPOD\",\n\t\t\t\t\t\t\t\t\"PANTOC BULAC\",\n\t\t\t\t\t\t\t\t\"PINAGPANAAN\",\n\t\t\t\t\t\t\t\t\"POBLACION SUR\",\n\t\t\t\t\t\t\t\t\"PULA\",\n\t\t\t\t\t\t\t\t\"PULONG SAN MIGUEL (POB.)\",\n\t\t\t\t\t\t\t\t\"PUROK MATIAS (POB.)\",\n\t\t\t\t\t\t\t\t\"SAMPALOC\",\n\t\t\t\t\t\t\t\t\"SAN MIGUEL NA MUNTI\",\n\t\t\t\t\t\t\t\t\"SAN PASCUAL\",\n\t\t\t\t\t\t\t\t\"SAN RICARDO\",\n\t\t\t\t\t\t\t\t\"SIBUL\",\n\t\t\t\t\t\t\t\t\"SICSICAN MATANDA\",\n\t\t\t\t\t\t\t\t\"TABACAO\",\n\t\t\t\t\t\t\t\t\"TAGAYTAY\",\n\t\t\t\t\t\t\t\t\"VALLE\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"TALUGTUG\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ALULA\",\n\t\t\t\t\t\t\t\t\"BAYBAYABAS\",\n\t\t\t\t\t\t\t\t\"BUTED\",\n\t\t\t\t\t\t\t\t\"CABIANGAN\",\n\t\t\t\t\t\t\t\t\"CALISITAN\",\n\t\t\t\t\t\t\t\t\"CINENSE\",\n\t\t\t\t\t\t\t\t\"CULIAT\",\n\t\t\t\t\t\t\t\t\"MAASIN\",\n\t\t\t\t\t\t\t\t\"MAGSAYSAY (POB.)\",\n\t\t\t\t\t\t\t\t\"MAYAMOT I\",\n\t\t\t\t\t\t\t\t\"MAYAMOT II\",\n\t\t\t\t\t\t\t\t\"NANGABULAN\",\n\t\t\t\t\t\t\t\t\"OSME\u00D1A (POB.)\",\n\t\t\t\t\t\t\t\t\"PANGIT\",\n\t\t\t\t\t\t\t\t\"PATOLA\",\n\t\t\t\t\t\t\t\t\"QUEZON (POB.)\",\n\t\t\t\t\t\t\t\t\"QUIRINO (POB.)\",\n\t\t\t\t\t\t\t\t\"ROXAS (POB.)\",\n\t\t\t\t\t\t\t\t\"SAGUING\",\n\t\t\t\t\t\t\t\t\"SAMPALOC\",\n\t\t\t\t\t\t\t\t\"SANTA CATALINA\",\n\t\t\t\t\t\t\t\t\"SANTO DOMINGO\",\n\t\t\t\t\t\t\t\t\"SARINGAYA\",\n\t\t\t\t\t\t\t\t\"SAVERONA\",\n\t\t\t\t\t\t\t\t\"TANDOC\",\n\t\t\t\t\t\t\t\t\"TIBAG\",\n\t\t\t\t\t\t\t\t\"VILLA BOADO\",\n\t\t\t\t\t\t\t\t\"VILLA ROSARIO\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"ZARAGOZA\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BATITANG\",\n\t\t\t\t\t\t\t\t\"CARMEN\",\n\t\t\t\t\t\t\t\t\"CONCEPCION\",\n\t\t\t\t\t\t\t\t\"DEL PILAR\",\n\t\t\t\t\t\t\t\t\"GENERAL LUNA\",\n\t\t\t\t\t\t\t\t\"H. ROMERO\",\n\t\t\t\t\t\t\t\t\"MACARSE\",\n\t\t\t\t\t\t\t\t\"MANAUL\",\n\t\t\t\t\t\t\t\t\"MAYAMOT\",\n\t\t\t\t\t\t\t\t\"PANTOC\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO\",\n\t\t\t\t\t\t\t\t\"SAN RAFAEL\",\n\t\t\t\t\t\t\t\t\"SAN VICENTE (POB.)\",\n\t\t\t\t\t\t\t\t\"SANTA CRUZ\",\n\t\t\t\t\t\t\t\t\"SANTA LUCIA OLD\",\n\t\t\t\t\t\t\t\t\"SANTA LUCIA YOUNG\",\n\t\t\t\t\t\t\t\t\"SANTO ROSARIO OLD\",\n\t\t\t\t\t\t\t\t\"SANTO ROSARIO YOUNG\",\n\t\t\t\t\t\t\t\t\"VALERIANA\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"PAMPANGA\",\n\t\t\t\t\t\"cities\": [{\n\t\t\t\t\t\t\t\"name\": \"ANGELES CITY\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"AGAPITO DEL ROSARIO\",\n\t\t\t\t\t\t\t\t\"AMSIC\",\n\t\t\t\t\t\t\t\t\"ANUNAS\",\n\t\t\t\t\t\t\t\t\"BALIBAGO\",\n\t\t\t\t\t\t\t\t\"CAPAYA\",\n\t\t\t\t\t\t\t\t\"CLARO M. RECTO\",\n\t\t\t\t\t\t\t\t\"CUAYAN\",\n\t\t\t\t\t\t\t\t\"CUTCUT\",\n\t\t\t\t\t\t\t\t\"CUTUD\",\n\t\t\t\t\t\t\t\t\"LOURDES NORTH WEST\",\n\t\t\t\t\t\t\t\t\"LOURDES SUR\",\n\t\t\t\t\t\t\t\t\"LOURDES SUR EAST\",\n\t\t\t\t\t\t\t\t\"MALABANIAS\",\n\t\t\t\t\t\t\t\t\"MARGOT\",\n\t\t\t\t\t\t\t\t\"MINING\",\n\t\t\t\t\t\t\t\t\"NINOY AQUINO (MARISOL)\",\n\t\t\t\t\t\t\t\t\"PAMPANG\",\n\t\t\t\t\t\t\t\t\"PANDAN\",\n\t\t\t\t\t\t\t\t\"PULUNG CACUTUD\",\n\t\t\t\t\t\t\t\t\"PULUNG MARAGUL\",\n\t\t\t\t\t\t\t\t\"PULUNGBULU\",\n\t\t\t\t\t\t\t\t\"SALAPUNGAN\",\n\t\t\t\t\t\t\t\t\"SAN JOSE\",\n\t\t\t\t\t\t\t\t\"SAN NICOLAS\",\n\t\t\t\t\t\t\t\t\"SANTA TERESITA\",\n\t\t\t\t\t\t\t\t\"SANTA TRINIDAD\",\n\t\t\t\t\t\t\t\t\"SANTO CRISTO\",\n\t\t\t\t\t\t\t\t\"SANTO DOMINGO\",\n\t\t\t\t\t\t\t\t\"SANTO ROSARIO (POB.)\",\n\t\t\t\t\t\t\t\t\"SAPALIBUTAD\",\n\t\t\t\t\t\t\t\t\"SAPANGBATO\",\n\t\t\t\t\t\t\t\t\"TABUN\",\n\t\t\t\t\t\t\t\t\"VIRGEN DELOS REMEDIOS\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"APALIT\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BALUCUC\",\n\t\t\t\t\t\t\t\t\"CALANTIPE\",\n\t\t\t\t\t\t\t\t\"CANSINALA\",\n\t\t\t\t\t\t\t\t\"CAPALANGAN\",\n\t\t\t\t\t\t\t\t\"COLGANTE\",\n\t\t\t\t\t\t\t\t\"PALIGUI\",\n\t\t\t\t\t\t\t\t\"SAMPALOC\",\n\t\t\t\t\t\t\t\t\"SAN JUAN (POB.)\",\n\t\t\t\t\t\t\t\t\"SAN VICENTE\",\n\t\t\t\t\t\t\t\t\"SUCAD\",\n\t\t\t\t\t\t\t\t\"SULIPAN\",\n\t\t\t\t\t\t\t\t\"TABUYUC (SANTO ROSARIO)\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"ARAYAT\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ARENAS\",\n\t\t\t\t\t\t\t\t\"BALITI\",\n\t\t\t\t\t\t\t\t\"BATASAN\",\n\t\t\t\t\t\t\t\t\"BUENSUCESO\",\n\t\t\t\t\t\t\t\t\"CANDATING\",\n\t\t\t\t\t\t\t\t\"CUPANG (SANTA LUCIA)\",\n\t\t\t\t\t\t\t\t\"GATIAWIN\",\n\t\t\t\t\t\t\t\t\"GUEMASAN\",\n\t\t\t\t\t\t\t\t\"KALEDIAN (CAMBA)\",\n\t\t\t\t\t\t\t\t\"LA PAZ (TURU)\",\n\t\t\t\t\t\t\t\t\"LACMIT\",\n\t\t\t\t\t\t\t\t\"LACQUIOS\",\n\t\t\t\t\t\t\t\t\"MANGGA-CACUTUD\",\n\t\t\t\t\t\t\t\t\"MAPALAD\",\n\t\t\t\t\t\t\t\t\"MATAMO (SANTA LUCIA)\",\n\t\t\t\t\t\t\t\t\"PANLINLANG\",\n\t\t\t\t\t\t\t\t\"PARALAYA\",\n\t\t\t\t\t\t\t\t\"PLAZANG LUMA\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"SAN AGUSTIN NORTE\",\n\t\t\t\t\t\t\t\t\"SAN AGUSTIN SUR\",\n\t\t\t\t\t\t\t\t\"SAN ANTONIO\",\n\t\t\t\t\t\t\t\t\"SAN JOSE MESULO\",\n\t\t\t\t\t\t\t\t\"SAN JUAN BANO\",\n\t\t\t\t\t\t\t\t\"SAN MATEO\",\n\t\t\t\t\t\t\t\t\"SAN NICOLAS\",\n\t\t\t\t\t\t\t\t\"SAN ROQUE BITAS\",\n\t\t\t\t\t\t\t\t\"SANTO NI\u00D1O TABUAN\",\n\t\t\t\t\t\t\t\t\"SUCLAYIN\",\n\t\t\t\t\t\t\t\t\"TELAPAYONG\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"BACOLOR\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BALAS\",\n\t\t\t\t\t\t\t\t\"CABALANTIAN\",\n\t\t\t\t\t\t\t\t\"CABAMBANGAN (POB.)\",\n\t\t\t\t\t\t\t\t\"CABETICAN\",\n\t\t\t\t\t\t\t\t\"CALIBUTBUT\",\n\t\t\t\t\t\t\t\t\"CONCEPCION\",\n\t\t\t\t\t\t\t\t\"DOLORES\",\n\t\t\t\t\t\t\t\t\"DUAT\",\n\t\t\t\t\t\t\t\t\"MACABACLE\",\n\t\t\t\t\t\t\t\t\"MAGLIMAN\",\n\t\t\t\t\t\t\t\t\"MALIWALU\",\n\t\t\t\t\t\t\t\t\"MESALIPIT\",\n\t\t\t\t\t\t\t\t\"PARULOG\",\n\t\t\t\t\t\t\t\t\"POTRERO\",\n\t\t\t\t\t\t\t\t\"SAN ANTONIO\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO\",\n\t\t\t\t\t\t\t\t\"SAN VICENTE\",\n\t\t\t\t\t\t\t\t\"SANTA BARBARA\",\n\t\t\t\t\t\t\t\t\"SANTA INES\",\n\t\t\t\t\t\t\t\t\"TALBA\",\n\t\t\t\t\t\t\t\t\"TINAJERO\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"CANDABA\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BAHAY PARE\",\n\t\t\t\t\t\t\t\t\"BAMBANG\",\n\t\t\t\t\t\t\t\t\"BARANGCA\",\n\t\t\t\t\t\t\t\t\"BARIT\",\n\t\t\t\t\t\t\t\t\"BUAS (POB.)\",\n\t\t\t\t\t\t\t\t\"CUAYANG BUGTONG\",\n\t\t\t\t\t\t\t\t\"DALAYAP\",\n\t\t\t\t\t\t\t\t\"DULONG ILOG\",\n\t\t\t\t\t\t\t\t\"GULAP\",\n\t\t\t\t\t\t\t\t\"LANANG\",\n\t\t\t\t\t\t\t\t\"LOURDES\",\n\t\t\t\t\t\t\t\t\"MAGUMBALI\",\n\t\t\t\t\t\t\t\t\"MANDASIG\",\n\t\t\t\t\t\t\t\t\"MANDILI\",\n\t\t\t\t\t\t\t\t\"MANGGA\",\n\t\t\t\t\t\t\t\t\"MAPANIQUI\",\n\t\t\t\t\t\t\t\t\"PALIGUI\",\n\t\t\t\t\t\t\t\t\"PANGCLARA\",\n\t\t\t\t\t\t\t\t\"PANSINAO\",\n\t\t\t\t\t\t\t\t\"PARALAYA (POB.)\",\n\t\t\t\t\t\t\t\t\"PASIG\",\n\t\t\t\t\t\t\t\t\"PESCADORES (POB.)\",\n\t\t\t\t\t\t\t\t\"PULONG GUBAT\",\n\t\t\t\t\t\t\t\t\"PULONG PALAZAN\",\n\t\t\t\t\t\t\t\t\"SALAPUNGAN\",\n\t\t\t\t\t\t\t\t\"SAN AGUSTIN (POB.)\",\n\t\t\t\t\t\t\t\t\"SANTO ROSARIO\",\n\t\t\t\t\t\t\t\t\"TAGULOD\",\n\t\t\t\t\t\t\t\t\"TALANG\",\n\t\t\t\t\t\t\t\t\"TENEJERO\",\n\t\t\t\t\t\t\t\t\"VIZAL SAN PABLO\",\n\t\t\t\t\t\t\t\t\"VIZAL SANTO CRISTO\",\n\t\t\t\t\t\t\t\t\"VIZAL SANTO NI\u00D1O\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"CITY OF SAN FERNANDO\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ALASAS\",\n\t\t\t\t\t\t\t\t\"BALITI\",\n\t\t\t\t\t\t\t\t\"BULAON\",\n\t\t\t\t\t\t\t\t\"CALULUT\",\n\t\t\t\t\t\t\t\t\"DEL CARMEN\",\n\t\t\t\t\t\t\t\t\"DEL PILAR\",\n\t\t\t\t\t\t\t\t\"DEL ROSARIO\",\n\t\t\t\t\t\t\t\t\"DELA PAZ NORTE\",\n\t\t\t\t\t\t\t\t\"DELA PAZ SUR\",\n\t\t\t\t\t\t\t\t\"DOLORES\",\n\t\t\t\t\t\t\t\t\"JULIANA\",\n\t\t\t\t\t\t\t\t\"LARA\",\n\t\t\t\t\t\t\t\t\"LOURDES\",\n\t\t\t\t\t\t\t\t\"MAGLIMAN\",\n\t\t\t\t\t\t\t\t\"MAIMPIS\",\n\t\t\t\t\t\t\t\t\"MALINO\",\n\t\t\t\t\t\t\t\t\"MALPITIC\",\n\t\t\t\t\t\t\t\t\"PANDARAS\",\n\t\t\t\t\t\t\t\t\"PANIPUAN\",\n\t\t\t\t\t\t\t\t\"PULUNG BULU\",\n\t\t\t\t\t\t\t\t\"QUEBIAUAN\",\n\t\t\t\t\t\t\t\t\"SAGUIN\",\n\t\t\t\t\t\t\t\t\"SAN AGUSTIN\",\n\t\t\t\t\t\t\t\t\"SAN FELIPE\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO\",\n\t\t\t\t\t\t\t\t\"SAN JOSE\",\n\t\t\t\t\t\t\t\t\"SAN JUAN\",\n\t\t\t\t\t\t\t\t\"SAN NICOLAS\",\n\t\t\t\t\t\t\t\t\"SAN PEDRO\",\n\t\t\t\t\t\t\t\t\"SANTA LUCIA\",\n\t\t\t\t\t\t\t\t\"SANTA TERESITA\",\n\t\t\t\t\t\t\t\t\"SANTO NI\u00D1O\",\n\t\t\t\t\t\t\t\t\"SANTO ROSARIO (POB.)\",\n\t\t\t\t\t\t\t\t\"SINDALAN\",\n\t\t\t\t\t\t\t\t\"TELABASTAGAN\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"FLORIDABLANCA\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ANON\",\n\t\t\t\t\t\t\t\t\"APALIT\",\n\t\t\t\t\t\t\t\t\"BASA AIR BASE\",\n\t\t\t\t\t\t\t\t\"BENEDICTO\",\n\t\t\t\t\t\t\t\t\"BODEGA\",\n\t\t\t\t\t\t\t\t\"CABANGCALAN\",\n\t\t\t\t\t\t\t\t\"CALANTAS\",\n\t\t\t\t\t\t\t\t\"CARMENCITA\",\n\t\t\t\t\t\t\t\t\"CONSUELO\",\n\t\t\t\t\t\t\t\t\"DAMPE\",\n\t\t\t\t\t\t\t\t\"DEL CARMEN\",\n\t\t\t\t\t\t\t\t\"FORTUNA\",\n\t\t\t\t\t\t\t\t\"GUTAD\",\n\t\t\t\t\t\t\t\t\"MABICAL\",\n\t\t\t\t\t\t\t\t\"MALIGAYA\",\n\t\t\t\t\t\t\t\t\"MAWACAT\",\n\t\t\t\t\t\t\t\t\"NABUCLOD\",\n\t\t\t\t\t\t\t\t\"PABANLAG\",\n\t\t\t\t\t\t\t\t\"PAGUIRUAN\",\n\t\t\t\t\t\t\t\t\"PALMAYO\",\n\t\t\t\t\t\t\t\t\"PANDAGUIRIG\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"SAN ANTONIO\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO\",\n\t\t\t\t\t\t\t\t\"SAN JOSE\",\n\t\t\t\t\t\t\t\t\"SAN NICOLAS\",\n\t\t\t\t\t\t\t\t\"SAN PEDRO\",\n\t\t\t\t\t\t\t\t\"SAN RAMON\",\n\t\t\t\t\t\t\t\t\"SAN ROQUE\",\n\t\t\t\t\t\t\t\t\"SANTA MONICA\",\n\t\t\t\t\t\t\t\t\"SANTO ROSARIO (MALABO)\",\n\t\t\t\t\t\t\t\t\"SOLIB\",\n\t\t\t\t\t\t\t\t\"VALDEZ\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"GUAGUA\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ASCOMO\",\n\t\t\t\t\t\t\t\t\"BANCAL\",\n\t\t\t\t\t\t\t\t\"JOSE ABAD SANTOS (SIRAN)\",\n\t\t\t\t\t\t\t\t\"LAMBAC\",\n\t\t\t\t\t\t\t\t\"MAGSAYSAY\",\n\t\t\t\t\t\t\t\t\"MAQUIAPO\",\n\t\t\t\t\t\t\t\t\"NATIVIDAD\",\n\t\t\t\t\t\t\t\t\"PLAZA BURGOS (POB.)\",\n\t\t\t\t\t\t\t\t\"PULUNGMASLE\",\n\t\t\t\t\t\t\t\t\"RIZAL\",\n\t\t\t\t\t\t\t\t\"SAN AGUSTIN\",\n\t\t\t\t\t\t\t\t\"SAN ANTONIO\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO\",\n\t\t\t\t\t\t\t\t\"SAN JOSE\",\n\t\t\t\t\t\t\t\t\"SAN JUAN\",\n\t\t\t\t\t\t\t\t\"SAN JUAN BAUTISTA\",\n\t\t\t\t\t\t\t\t\"SAN JUAN NEPOMUCENO\",\n\t\t\t\t\t\t\t\t\"SAN MATIAS\",\n\t\t\t\t\t\t\t\t\"SAN MIGUEL (BETIS)\",\n\t\t\t\t\t\t\t\t\"SAN NICOLAS 1ST\",\n\t\t\t\t\t\t\t\t\"SAN NICOLAS 2ND\",\n\t\t\t\t\t\t\t\t\"SAN PABLO\",\n\t\t\t\t\t\t\t\t\"SAN PEDRO\",\n\t\t\t\t\t\t\t\t\"SAN RAFAEL (DUCK ISLAND)\",\n\t\t\t\t\t\t\t\t\"SAN ROQUE\",\n\t\t\t\t\t\t\t\t\"SAN VICENTE (IBUS)\",\n\t\t\t\t\t\t\t\t\"SANTA FILOMENA (POB.)\",\n\t\t\t\t\t\t\t\t\"SANTA INES\",\n\t\t\t\t\t\t\t\t\"SANTA URSULA\",\n\t\t\t\t\t\t\t\t\"SANTO CRISTO\",\n\t\t\t\t\t\t\t\t\"SANTO NI\u00D1O (POB.)\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"LUBAO\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BALANTACAN\",\n\t\t\t\t\t\t\t\t\"BANCAL PUGAD\",\n\t\t\t\t\t\t\t\t\"BANCAL SINUBLI\",\n\t\t\t\t\t\t\t\t\"BARUYA (SAN RAFAEL)\",\n\t\t\t\t\t\t\t\t\"CALANGAIN\",\n\t\t\t\t\t\t\t\t\"CONCEPCION\",\n\t\t\t\t\t\t\t\t\"DE LA PAZ\",\n\t\t\t\t\t\t\t\t\"DEL CARMEN\",\n\t\t\t\t\t\t\t\t\"DON IGNACIO DIMSON\",\n\t\t\t\t\t\t\t\t\"LOURDES (LAUC PAU)\",\n\t\t\t\t\t\t\t\t\"PRADO SIONGCO\",\n\t\t\t\t\t\t\t\t\"REMEDIOS\",\n\t\t\t\t\t\t\t\t\"SAN AGUSTIN\",\n\t\t\t\t\t\t\t\t\"SAN ANTONIO\",\n\t\t\t\t\t\t\t\t\"SAN FRANCISCO\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO\",\n\t\t\t\t\t\t\t\t\"SAN JOSE APUNAN\",\n\t\t\t\t\t\t\t\t\"SAN JOSE GUMI\",\n\t\t\t\t\t\t\t\t\"SAN JUAN (POB.)\",\n\t\t\t\t\t\t\t\t\"SAN MATIAS\",\n\t\t\t\t\t\t\t\t\"SAN MIGUEL\",\n\t\t\t\t\t\t\t\t\"SAN NICOLAS 1ST (POB.)\",\n\t\t\t\t\t\t\t\t\"SAN NICOLAS 2ND\",\n\t\t\t\t\t\t\t\t\"SAN PABLO 1ST\",\n\t\t\t\t\t\t\t\t\"SAN PABLO 2ND\",\n\t\t\t\t\t\t\t\t\"SAN PEDRO PALCARANGAN\",\n\t\t\t\t\t\t\t\t\"SAN PEDRO SAUG\",\n\t\t\t\t\t\t\t\t\"SAN ROQUE ARBOL\",\n\t\t\t\t\t\t\t\t\"SAN ROQUE DAU\",\n\t\t\t\t\t\t\t\t\"SAN VICENTE\",\n\t\t\t\t\t\t\t\t\"SANTA BARBARA\",\n\t\t\t\t\t\t\t\t\"SANTA CATALINA\",\n\t\t\t\t\t\t\t\t\"SANTA CRUZ\",\n\t\t\t\t\t\t\t\t\"SANTA LUCIA (POB.)\",\n\t\t\t\t\t\t\t\t\"SANTA MARIA\",\n\t\t\t\t\t\t\t\t\"SANTA MONICA\",\n\t\t\t\t\t\t\t\t\"SANTA RITA\",\n\t\t\t\t\t\t\t\t\"SANTA TERESA 1ST\",\n\t\t\t\t\t\t\t\t\"SANTA TERESA 2ND\",\n\t\t\t\t\t\t\t\t\"SANTIAGO\",\n\t\t\t\t\t\t\t\t\"SANTO CRISTO\",\n\t\t\t\t\t\t\t\t\"SANTO DOMINGO\",\n\t\t\t\t\t\t\t\t\"SANTO NI\u00D1O (PRADO ARUBA)\",\n\t\t\t\t\t\t\t\t\"SANTO TOMAS (POB.)\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"MABALACAT\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ATLU-BOLA\",\n\t\t\t\t\t\t\t\t\"BICAL\",\n\t\t\t\t\t\t\t\t\"BUNDAGUL\",\n\t\t\t\t\t\t\t\t\"CACUTUD\",\n\t\t\t\t\t\t\t\t\"CALUMPANG\",\n\t\t\t\t\t\t\t\t\"CAMACHILES\",\n\t\t\t\t\t\t\t\t\"DAPDAP\",\n\t\t\t\t\t\t\t\t\"DAU\",\n\t\t\t\t\t\t\t\t\"DOLORES\",\n\t\t\t\t\t\t\t\t\"DUQUIT\",\n\t\t\t\t\t\t\t\t\"LAKANDULA\",\n\t\t\t\t\t\t\t\t\"MABIGA\",\n\t\t\t\t\t\t\t\t\"MACAPAGAL VILLAGE\",\n\t\t\t\t\t\t\t\t\"MAMATITANG\",\n\t\t\t\t\t\t\t\t\"MANGALIT\",\n\t\t\t\t\t\t\t\t\"MARCOS VILLAGE\",\n\t\t\t\t\t\t\t\t\"MAWAQUE\",\n\t\t\t\t\t\t\t\t\"PARALAYUNAN\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"SAN FRANCISCO\",\n\t\t\t\t\t\t\t\t\"SAN JOAQUIN\",\n\t\t\t\t\t\t\t\t\"SANTA INES\",\n\t\t\t\t\t\t\t\t\"SANTA MARIA\",\n\t\t\t\t\t\t\t\t\"SANTO ROSARIO\",\n\t\t\t\t\t\t\t\t\"SAPANG BALEN\",\n\t\t\t\t\t\t\t\t\"SAPANG BIABAS\",\n\t\t\t\t\t\t\t\t\"TABUN\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"MACABEBE\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BATASAN\",\n\t\t\t\t\t\t\t\t\"CADUANG TETE\",\n\t\t\t\t\t\t\t\t\"CANDELARIA\",\n\t\t\t\t\t\t\t\t\"CASTULI\",\n\t\t\t\t\t\t\t\t\"CONSUELO\",\n\t\t\t\t\t\t\t\t\"DALAYAP\",\n\t\t\t\t\t\t\t\t\"MATAGUITI\",\n\t\t\t\t\t\t\t\t\"SAN ESTEBAN\",\n\t\t\t\t\t\t\t\t\"SAN FRANCISCO\",\n\t\t\t\t\t\t\t\t\"SAN GABRIEL (POB.)\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO\",\n\t\t\t\t\t\t\t\t\"SAN JOSE\",\n\t\t\t\t\t\t\t\t\"SAN JUAN\",\n\t\t\t\t\t\t\t\t\"SAN RAFAEL\",\n\t\t\t\t\t\t\t\t\"SAN ROQUE\",\n\t\t\t\t\t\t\t\t\"SAN VICENTE\",\n\t\t\t\t\t\t\t\t\"SANTA CRUZ (POB.)\",\n\t\t\t\t\t\t\t\t\"SANTA LUTGARDA\",\n\t\t\t\t\t\t\t\t\"SANTA MARIA\",\n\t\t\t\t\t\t\t\t\"SANTA RITA (POB.)\",\n\t\t\t\t\t\t\t\t\"SANTO NI\u00D1O\",\n\t\t\t\t\t\t\t\t\"SANTO ROSARIO (POB.)\",\n\t\t\t\t\t\t\t\t\"SAPLAD DAVID\",\n\t\t\t\t\t\t\t\t\"TACASAN\",\n\t\t\t\t\t\t\t\t\"TELACSAN\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"MAGALANG\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"AYALA\",\n\t\t\t\t\t\t\t\t\"BUCANAN\",\n\t\t\t\t\t\t\t\t\"CAMIAS\",\n\t\t\t\t\t\t\t\t\"DOLORES\",\n\t\t\t\t\t\t\t\t\"ESCALER\",\n\t\t\t\t\t\t\t\t\"LA PAZ\",\n\t\t\t\t\t\t\t\t\"NAVALING\",\n\t\t\t\t\t\t\t\t\"SAN AGUSTIN\",\n\t\t\t\t\t\t\t\t\"SAN ANTONIO\",\n\t\t\t\t\t\t\t\t\"SAN FRANCISO\",\n\t\t\t\t\t\t\t\t\"SAN ILDEFONSO\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO\",\n\t\t\t\t\t\t\t\t\"SAN JOSE\",\n\t\t\t\t\t\t\t\t\"SAN MIGUEL\",\n\t\t\t\t\t\t\t\t\"SAN NICOLAS 1ST (POB.)\",\n\t\t\t\t\t\t\t\t\"SAN NICOLAS 2ND\",\n\t\t\t\t\t\t\t\t\"SAN PABLO (POB.)\",\n\t\t\t\t\t\t\t\t\"SAN PEDRO I\",\n\t\t\t\t\t\t\t\t\"SAN PEDRO II\",\n\t\t\t\t\t\t\t\t\"SAN ROQUE\",\n\t\t\t\t\t\t\t\t\"SAN VICENTE\",\n\t\t\t\t\t\t\t\t\"SANTA CRUZ (POB.)\",\n\t\t\t\t\t\t\t\t\"SANTA LUCIA\",\n\t\t\t\t\t\t\t\t\"SANTA MARIA\",\n\t\t\t\t\t\t\t\t\"SANTO NI\u00D1O\",\n\t\t\t\t\t\t\t\t\"SANTO ROSARIO\",\n\t\t\t\t\t\t\t\t\"TURU\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"MASANTOL\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ALAULI\",\n\t\t\t\t\t\t\t\t\"BAGANG\",\n\t\t\t\t\t\t\t\t\"BALIBAGO\",\n\t\t\t\t\t\t\t\t\"BEBE ANAC\",\n\t\t\t\t\t\t\t\t\"BEBE MATUA\",\n\t\t\t\t\t\t\t\t\"BULACUS\",\n\t\t\t\t\t\t\t\t\"CAMBASI\",\n\t\t\t\t\t\t\t\t\"MALAULI\",\n\t\t\t\t\t\t\t\t\"NIGUI\",\n\t\t\t\t\t\t\t\t\"PALIMPE\",\n\t\t\t\t\t\t\t\t\"PUTI\",\n\t\t\t\t\t\t\t\t\"SAGRADA (TIBAGIN)\",\n\t\t\t\t\t\t\t\t\"SAN AGUSTIN (CAINGIN)\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO ANAC\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO MATUA (POB.)\",\n\t\t\t\t\t\t\t\t\"SAN NICOLAS (POB.)\",\n\t\t\t\t\t\t\t\t\"SAN PEDRO\",\n\t\t\t\t\t\t\t\t\"SANTA CRUZ\",\n\t\t\t\t\t\t\t\t\"SANTA LUCIA ANAC (POB.)\",\n\t\t\t\t\t\t\t\t\"SANTA LUCIA MATUA\",\n\t\t\t\t\t\t\t\t\"SANTA LUCIA PAGUIBA\",\n\t\t\t\t\t\t\t\t\"SANTA LUCIA WAKAS\",\n\t\t\t\t\t\t\t\t\"SANTA MONICA (CAINGIN)\",\n\t\t\t\t\t\t\t\t\"SANTO NI\u00D1O\",\n\t\t\t\t\t\t\t\t\"SAPANG KAWAYAN\",\n\t\t\t\t\t\t\t\t\"SUA\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"MEXICO\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ACLI\",\n\t\t\t\t\t\t\t\t\"ANAO\",\n\t\t\t\t\t\t\t\t\"BALAS\",\n\t\t\t\t\t\t\t\t\"BUENAVISTA\",\n\t\t\t\t\t\t\t\t\"CAMUNING\",\n\t\t\t\t\t\t\t\t\"CAWAYAN\",\n\t\t\t\t\t\t\t\t\"CONCEPCION\",\n\t\t\t\t\t\t\t\t\"CULUBASA\",\n\t\t\t\t\t\t\t\t\"DIVISORIA\",\n\t\t\t\t\t\t\t\t\"DOLORES (PIRING)\",\n\t\t\t\t\t\t\t\t\"EDEN\",\n\t\t\t\t\t\t\t\t\"GANDUS\",\n\t\t\t\t\t\t\t\t\"LAGUNDI\",\n\t\t\t\t\t\t\t\t\"LAPUT\",\n\t\t\t\t\t\t\t\t\"LAUG\",\n\t\t\t\t\t\t\t\t\"MASAMAT\",\n\t\t\t\t\t\t\t\t\"MASANGSANG\",\n\t\t\t\t\t\t\t\t\"NUEVA VICTORIA\",\n\t\t\t\t\t\t\t\t\"PANDACAQUI\",\n\t\t\t\t\t\t\t\t\"PANGATLAN\",\n\t\t\t\t\t\t\t\t\"PANIPUAN\",\n\t\t\t\t\t\t\t\t\"PARIAN (POB.)\",\n\t\t\t\t\t\t\t\t\"SABANILLA\",\n\t\t\t\t\t\t\t\t\"SAN ANTONIO\",\n\t\t\t\t\t\t\t\t\"SAN CARLOS\",\n\t\t\t\t\t\t\t\t\"SAN JOSE MALINO\",\n\t\t\t\t\t\t\t\t\"SAN JOSE MATULID\",\n\t\t\t\t\t\t\t\t\"SAN JUAN\",\n\t\t\t\t\t\t\t\t\"SAN LORENZO\",\n\t\t\t\t\t\t\t\t\"SAN MIGUEL\",\n\t\t\t\t\t\t\t\t\"SAN NICOLAS\",\n\t\t\t\t\t\t\t\t\"SAN PABLO\",\n\t\t\t\t\t\t\t\t\"SAN PATRICIO\",\n\t\t\t\t\t\t\t\t\"SAN RAFAEL\",\n\t\t\t\t\t\t\t\t\"SAN ROQUE\",\n\t\t\t\t\t\t\t\t\"SAN VICENTE\",\n\t\t\t\t\t\t\t\t\"SANTA CRUZ\",\n\t\t\t\t\t\t\t\t\"SANTA MARIA\",\n\t\t\t\t\t\t\t\t\"SANTO DOMINGO\",\n\t\t\t\t\t\t\t\t\"SANTO ROSARIO\",\n\t\t\t\t\t\t\t\t\"SAPANG MAISAC\",\n\t\t\t\t\t\t\t\t\"SUCLABAN\",\n\t\t\t\t\t\t\t\t\"TANGLE (TANGLAY)\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"MINALIN\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BULAC\",\n\t\t\t\t\t\t\t\t\"DAWE\",\n\t\t\t\t\t\t\t\t\"LOURDES\",\n\t\t\t\t\t\t\t\t\"MANIANGO\",\n\t\t\t\t\t\t\t\t\"SAN FRANCISCO 1ST\",\n\t\t\t\t\t\t\t\t\"SAN FRANCISCO 2ND\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO\",\n\t\t\t\t\t\t\t\t\"SAN NICOLAS (POB.)\",\n\t\t\t\t\t\t\t\t\"SAN PEDRO\",\n\t\t\t\t\t\t\t\t\"SANTA CATALINA\",\n\t\t\t\t\t\t\t\t\"SANTA MARIA\",\n\t\t\t\t\t\t\t\t\"SANTA RITA\",\n\t\t\t\t\t\t\t\t\"SANTO DOMINGO\",\n\t\t\t\t\t\t\t\t\"SANTO ROSARIO (POB.)\",\n\t\t\t\t\t\t\t\t\"SAPLAD\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"PORAC\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BABO PANGULO\",\n\t\t\t\t\t\t\t\t\"BABO SACAN\",\n\t\t\t\t\t\t\t\t\"BALUBAD\",\n\t\t\t\t\t\t\t\t\"CALZADANG BAYU\",\n\t\t\t\t\t\t\t\t\"CAMIAS\",\n\t\t\t\t\t\t\t\t\"CANGATBA\",\n\t\t\t\t\t\t\t\t\"DIAZ\",\n\t\t\t\t\t\t\t\t\"DOLORES (HACIENDA DOLORES)\",\n\t\t\t\t\t\t\t\t\"INARARO (AETAS)\",\n\t\t\t\t\t\t\t\t\"JALUNG\",\n\t\t\t\t\t\t\t\t\"MANCATIAN\",\n\t\t\t\t\t\t\t\t\"MANIBAUG LIBUTAD\",\n\t\t\t\t\t\t\t\t\"MANIBAUG PARALAYA\",\n\t\t\t\t\t\t\t\t\"MANIBAUG PASIG\",\n\t\t\t\t\t\t\t\t\"MANUALI\",\n\t\t\t\t\t\t\t\t\"MITLA PROPER\",\n\t\t\t\t\t\t\t\t\"PALAT\",\n\t\t\t\t\t\t\t\t\"PIAS\",\n\t\t\t\t\t\t\t\t\"PIO\",\n\t\t\t\t\t\t\t\t\"PLANAS\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"PULONG SANTOL\",\n\t\t\t\t\t\t\t\t\"SALU\",\n\t\t\t\t\t\t\t\t\"SAN JOSE MITLA\",\n\t\t\t\t\t\t\t\t\"SANTA CRUZ\",\n\t\t\t\t\t\t\t\t\"SAPANG UWAK (AETAS)\",\n\t\t\t\t\t\t\t\t\"SEPUNG BULAUN\",\n\t\t\t\t\t\t\t\t\"SINURA\",\n\t\t\t\t\t\t\t\t\"VILLA MARIA (AETAS)\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"SAN LUIS\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"SAN AGUSTIN\",\n\t\t\t\t\t\t\t\t\"SAN CARLOS\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO\",\n\t\t\t\t\t\t\t\t\"SAN JOSE\",\n\t\t\t\t\t\t\t\t\"SAN JUAN\",\n\t\t\t\t\t\t\t\t\"SAN NICOLAS\",\n\t\t\t\t\t\t\t\t\"SAN ROQUE\",\n\t\t\t\t\t\t\t\t\"SAN SEBASTIAN\",\n\t\t\t\t\t\t\t\t\"SANTA CATALINA\",\n\t\t\t\t\t\t\t\t\"SANTA CRUZ PAMBILOG\",\n\t\t\t\t\t\t\t\t\"SANTA CRUZ POBLACION\",\n\t\t\t\t\t\t\t\t\"SANTA LUCIA\",\n\t\t\t\t\t\t\t\t\"SANTA MONICA\",\n\t\t\t\t\t\t\t\t\"SANTA RITA\",\n\t\t\t\t\t\t\t\t\"SANTO NI\u00D1O\",\n\t\t\t\t\t\t\t\t\"SANTO ROSARIO\",\n\t\t\t\t\t\t\t\t\"SANTO TOMAS\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"SAN SIMON\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"CONCEPCION\",\n\t\t\t\t\t\t\t\t\"DE LA PAZ\",\n\t\t\t\t\t\t\t\t\"SAN AGUSTIN\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO\",\n\t\t\t\t\t\t\t\t\"SAN JOSE\",\n\t\t\t\t\t\t\t\t\"SAN JUAN (POB.)\",\n\t\t\t\t\t\t\t\t\"SAN MIGUEL\",\n\t\t\t\t\t\t\t\t\"SAN NICOLAS\",\n\t\t\t\t\t\t\t\t\"SAN PABLO LIBUTAD\",\n\t\t\t\t\t\t\t\t\"SAN PABLO PROPER\",\n\t\t\t\t\t\t\t\t\"SAN PEDRO\",\n\t\t\t\t\t\t\t\t\"SANTA CRUZ\",\n\t\t\t\t\t\t\t\t\"SANTA MONICA\",\n\t\t\t\t\t\t\t\t\"SANTO NI\u00D1O\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"SANTA ANA\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"SAN AGUSTIN\",\n\t\t\t\t\t\t\t\t\"SAN BARTOLOME\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO\",\n\t\t\t\t\t\t\t\t\"SAN JOAQUIN (POB.)\",\n\t\t\t\t\t\t\t\t\"SAN JOSE\",\n\t\t\t\t\t\t\t\t\"SAN JUAN\",\n\t\t\t\t\t\t\t\t\"SAN NICOLAS\",\n\t\t\t\t\t\t\t\t\"SAN PABLO\",\n\t\t\t\t\t\t\t\t\"SAN PEDRO\",\n\t\t\t\t\t\t\t\t\"SAN ROQUE\",\n\t\t\t\t\t\t\t\t\"SANTA LUCIA\",\n\t\t\t\t\t\t\t\t\"SANTA MARIA\",\n\t\t\t\t\t\t\t\t\"SANTIAGO\",\n\t\t\t\t\t\t\t\t\"SANTO ROSARIO\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"SANTA RITA\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BECURAN\",\n\t\t\t\t\t\t\t\t\"DILA-DILA\",\n\t\t\t\t\t\t\t\t\"SAN AGUSTIN\",\n\t\t\t\t\t\t\t\t\"SAN BASILIO\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO\",\n\t\t\t\t\t\t\t\t\"SAN JOSE (POB.)\",\n\t\t\t\t\t\t\t\t\"SAN JUAN\",\n\t\t\t\t\t\t\t\t\"SAN MATIAS\",\n\t\t\t\t\t\t\t\t\"SAN VICENTE\",\n\t\t\t\t\t\t\t\t\"SANTA MONICA\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"SANTO TOMAS\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"MORAS DE LA PAZ\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"SAN BARTOLOME\",\n\t\t\t\t\t\t\t\t\"SAN MATIAS\",\n\t\t\t\t\t\t\t\t\"SAN VICENTE\",\n\t\t\t\t\t\t\t\t\"SANTO ROSARIO (PAU)\",\n\t\t\t\t\t\t\t\t\"SAPA (SANTO NI\u00D1O)\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"SASMUAN\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BATANG 1ST\",\n\t\t\t\t\t\t\t\t\"BATANG 2ND\",\n\t\t\t\t\t\t\t\t\"MABUANBUAN\",\n\t\t\t\t\t\t\t\t\"MALUSAC\",\n\t\t\t\t\t\t\t\t\"SABITANAN\",\n\t\t\t\t\t\t\t\t\"SAN ANTONIO\",\n\t\t\t\t\t\t\t\t\"SAN NICOLAS 1ST\",\n\t\t\t\t\t\t\t\t\"SAN NICOLAS 2ND\",\n\t\t\t\t\t\t\t\t\"SAN PEDRO\",\n\t\t\t\t\t\t\t\t\"SANTA LUCIA (POB.)\",\n\t\t\t\t\t\t\t\t\"SANTA MONICA\",\n\t\t\t\t\t\t\t\t\"SANTO TOMAS\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"TARLAC\",\n\t\t\t\t\t\"cities\": [{\n\t\t\t\t\t\t\t\"name\": \"ANAO\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BAGUINDOC (BAGUINLOC)\",\n\t\t\t\t\t\t\t\t\"BANTOG\",\n\t\t\t\t\t\t\t\t\"CAMPOS\",\n\t\t\t\t\t\t\t\t\"CARMEN\",\n\t\t\t\t\t\t\t\t\"CASILI\",\n\t\t\t\t\t\t\t\t\"DON RAMON\",\n\t\t\t\t\t\t\t\t\"HERNANDO\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"RIZAL\",\n\t\t\t\t\t\t\t\t\"SAN FRANCISCO EAST\",\n\t\t\t\t\t\t\t\t\"SAN FRANCISCO WEST\",\n\t\t\t\t\t\t\t\t\"SAN JOSE NORTH\",\n\t\t\t\t\t\t\t\t\"SAN JOSE SOUTH\",\n\t\t\t\t\t\t\t\t\"SAN JUAN\",\n\t\t\t\t\t\t\t\t\"SAN ROQUE\",\n\t\t\t\t\t\t\t\t\"SANTO DOMINGO\",\n\t\t\t\t\t\t\t\t\"SINENSE\",\n\t\t\t\t\t\t\t\t\"SUAVERDEZ\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"BAMBAN\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ANUPUL\",\n\t\t\t\t\t\t\t\t\"BANABA\",\n\t\t\t\t\t\t\t\t\"BANGCU\",\n\t\t\t\t\t\t\t\t\"CULUBASA\",\n\t\t\t\t\t\t\t\t\"DELA CRUZ\",\n\t\t\t\t\t\t\t\t\"LA PAZ\",\n\t\t\t\t\t\t\t\t\"LOURDES\",\n\t\t\t\t\t\t\t\t\"MALONZO\",\n\t\t\t\t\t\t\t\t\"SAN NICOLAS (POB.)\",\n\t\t\t\t\t\t\t\t\"SAN PEDRO\",\n\t\t\t\t\t\t\t\t\"SAN RAFAEL\",\n\t\t\t\t\t\t\t\t\"SAN ROQUE\",\n\t\t\t\t\t\t\t\t\"SAN VICENTE\",\n\t\t\t\t\t\t\t\t\"SANTO NI\u00D1O\",\n\t\t\t\t\t\t\t\t\"VIRGEN DE LOS REMEDIOS (PACALCAL)\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"CAMILING\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ANOLING 1ST\",\n\t\t\t\t\t\t\t\t\"ANOLING 2ND\",\n\t\t\t\t\t\t\t\t\"ANOLING 3RD\",\n\t\t\t\t\t\t\t\t\"BACABAC\",\n\t\t\t\t\t\t\t\t\"BACSAY\",\n\t\t\t\t\t\t\t\t\"BANCAY 1ST\",\n\t\t\t\t\t\t\t\t\"BANCAY 2ND\",\n\t\t\t\t\t\t\t\t\"BILAD\",\n\t\t\t\t\t\t\t\t\"BIRBIRA\",\n\t\t\t\t\t\t\t\t\"BOBON 1ST\",\n\t\t\t\t\t\t\t\t\"BOBON 2ND\",\n\t\t\t\t\t\t\t\t\"BOBON CAAROSIPAN\",\n\t\t\t\t\t\t\t\t\"CABANABAAN\",\n\t\t\t\t\t\t\t\t\"CACAMILINGAN NORTE\",\n\t\t\t\t\t\t\t\t\"CACAMILINGAN SUR\",\n\t\t\t\t\t\t\t\t\"CANIAG\",\n\t\t\t\t\t\t\t\t\"CARAEL\",\n\t\t\t\t\t\t\t\t\"CAYAOAN\",\n\t\t\t\t\t\t\t\t\"CAYASAN\",\n\t\t\t\t\t\t\t\t\"FLORIDA\",\n\t\t\t\t\t\t\t\t\"LASONG\",\n\t\t\t\t\t\t\t\t\"LIBUEG\",\n\t\t\t\t\t\t\t\t\"MALACAMPA\",\n\t\t\t\t\t\t\t\t\"MANAKEM\",\n\t\t\t\t\t\t\t\t\"MANUPEG\",\n\t\t\t\t\t\t\t\t\"MARAWI\",\n\t\t\t\t\t\t\t\t\"MATUBOG\",\n\t\t\t\t\t\t\t\t\"NAGRAMBACAN\",\n\t\t\t\t\t\t\t\t\"NAGSERIALAN\",\n\t\t\t\t\t\t\t\t\"PALIMBO PROPER\",\n\t\t\t\t\t\t\t\t\"PALIMBO-CAAROSIPAN\",\n\t\t\t\t\t\t\t\t\"PAO 1ST\",\n\t\t\t\t\t\t\t\t\"PAO 2ND\",\n\t\t\t\t\t\t\t\t\"PAO 3RD\",\n\t\t\t\t\t\t\t\t\"PAPAAC\",\n\t\t\t\t\t\t\t\t\"PINDANGAN 1ST\",\n\t\t\t\t\t\t\t\t\"PINDANGAN 2ND\",\n\t\t\t\t\t\t\t\t\"POBLACION A\",\n\t\t\t\t\t\t\t\t\"POBLACION B\",\n\t\t\t\t\t\t\t\t\"POBLACION C\",\n\t\t\t\t\t\t\t\t\"POBLACION D\",\n\t\t\t\t\t\t\t\t\"POBLACION E\",\n\t\t\t\t\t\t\t\t\"POBLACION F\",\n\t\t\t\t\t\t\t\t\"POBLACION G\",\n\t\t\t\t\t\t\t\t\"POBLACION H\",\n\t\t\t\t\t\t\t\t\"POBLACION I\",\n\t\t\t\t\t\t\t\t\"POBLACION J\",\n\t\t\t\t\t\t\t\t\"SANTA MARIA\",\n\t\t\t\t\t\t\t\t\"SAWAT\",\n\t\t\t\t\t\t\t\t\"SINILIAN 1ST\",\n\t\t\t\t\t\t\t\t\"SINILIAN 2ND\",\n\t\t\t\t\t\t\t\t\"SINILIAN 3RD\",\n\t\t\t\t\t\t\t\t\"SINILIAN CACALIBOSOAN\",\n\t\t\t\t\t\t\t\t\"SINULATAN 1ST\",\n\t\t\t\t\t\t\t\t\"SINULATAN 2ND\",\n\t\t\t\t\t\t\t\t\"SURGUI 1ST\",\n\t\t\t\t\t\t\t\t\"SURGUI 2ND\",\n\t\t\t\t\t\t\t\t\"SURGUI 3RD\",\n\t\t\t\t\t\t\t\t\"TAMBUGAN\",\n\t\t\t\t\t\t\t\t\"TELBANG\",\n\t\t\t\t\t\t\t\t\"TUEC\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"CAPAS\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ARANGUREN\",\n\t\t\t\t\t\t\t\t\"BUENO\",\n\t\t\t\t\t\t\t\t\"CRISTO REY\",\n\t\t\t\t\t\t\t\t\"CUBCUB (POB.)\",\n\t\t\t\t\t\t\t\t\"CUTCUT 1ST\",\n\t\t\t\t\t\t\t\t\"CUTCUT 2ND\",\n\t\t\t\t\t\t\t\t\"DOLORES\",\n\t\t\t\t\t\t\t\t\"ESTRADA (CALINGCUAN)\",\n\t\t\t\t\t\t\t\t\"LAWY\",\n\t\t\t\t\t\t\t\t\"MANGA\",\n\t\t\t\t\t\t\t\t\"MANLAPIG\",\n\t\t\t\t\t\t\t\t\"MARUGLU\",\n\t\t\t\t\t\t\t\t\"SANTA JULIANA\",\n\t\t\t\t\t\t\t\t\"SANTA LUCIA\",\n\t\t\t\t\t\t\t\t\"SANTA RITA\",\n\t\t\t\t\t\t\t\t\"SANTO DOMINGO 1ST\",\n\t\t\t\t\t\t\t\t\"SANTO DOMINGO 2ND\",\n\t\t\t\t\t\t\t\t\"SANTO ROSARIO\",\n\t\t\t\t\t\t\t\t\"TALAGA\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"CITY OF TARLAC\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"AGUSO\",\n\t\t\t\t\t\t\t\t\"ALVINDIA SEGUNDO\",\n\t\t\t\t\t\t\t\t\"AMUCAO\",\n\t\t\t\t\t\t\t\t\"ARMENIA\",\n\t\t\t\t\t\t\t\t\"ASTURIAS\",\n\t\t\t\t\t\t\t\t\"ATIOC\",\n\t\t\t\t\t\t\t\t\"BALANTI\",\n\t\t\t\t\t\t\t\t\"BALETE\",\n\t\t\t\t\t\t\t\t\"BALIBAGO I\",\n\t\t\t\t\t\t\t\t\"BALIBAGO II\",\n\t\t\t\t\t\t\t\t\"BALINGCANAWAY\",\n\t\t\t\t\t\t\t\t\"BANABA\",\n\t\t\t\t\t\t\t\t\"BANTOG\",\n\t\t\t\t\t\t\t\t\"BARAS-BARAS\",\n\t\t\t\t\t\t\t\t\"BATANG-BATANG\",\n\t\t\t\t\t\t\t\t\"BINAUGANAN\",\n\t\t\t\t\t\t\t\t\"BORA\",\n\t\t\t\t\t\t\t\t\"BUENAVISTA\",\n\t\t\t\t\t\t\t\t\"BUHILIT (BUBULIT)\",\n\t\t\t\t\t\t\t\t\"BUROT\",\n\t\t\t\t\t\t\t\t\"CALINGCUAN\",\n\t\t\t\t\t\t\t\t\"CAPEHAN\",\n\t\t\t\t\t\t\t\t\"CARANGIAN\",\n\t\t\t\t\t\t\t\t\"CARE\",\n\t\t\t\t\t\t\t\t\"CENTRAL\",\n\t\t\t\t\t\t\t\t\"CULIPAT\",\n\t\t\t\t\t\t\t\t\"CUT-CUT I\",\n\t\t\t\t\t\t\t\t\"CUT-CUT II\",\n\t\t\t\t\t\t\t\t\"DALAYAP\",\n\t\t\t\t\t\t\t\t\"DELA PAZ\",\n\t\t\t\t\t\t\t\t\"DOLORES\",\n\t\t\t\t\t\t\t\t\"LAOANG\",\n\t\t\t\t\t\t\t\t\"LIGTASAN\",\n\t\t\t\t\t\t\t\t\"LOURDES\",\n\t\t\t\t\t\t\t\t\"MABINI\",\n\t\t\t\t\t\t\t\t\"MALIGAYA\",\n\t\t\t\t\t\t\t\t\"MALIWALO\",\n\t\t\t\t\t\t\t\t\"MAPALACSIAO\",\n\t\t\t\t\t\t\t\t\"MAPALAD\",\n\t\t\t\t\t\t\t\t\"MATADERO\",\n\t\t\t\t\t\t\t\t\"MATATALAIB\",\n\t\t\t\t\t\t\t\t\"PARAISO\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"SALAPUNGAN\",\n\t\t\t\t\t\t\t\t\"SAN CARLOS\",\n\t\t\t\t\t\t\t\t\"SAN FRANCISCO\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO\",\n\t\t\t\t\t\t\t\t\"SAN JOSE\",\n\t\t\t\t\t\t\t\t\"SAN JOSE DE URQUICO\",\n\t\t\t\t\t\t\t\t\"SAN JUAN DE MATA\",\n\t\t\t\t\t\t\t\t\"SAN LUIS\",\n\t\t\t\t\t\t\t\t\"SAN MANUEL\",\n\t\t\t\t\t\t\t\t\"SAN MIGUEL\",\n\t\t\t\t\t\t\t\t\"SAN NICOLAS\",\n\t\t\t\t\t\t\t\t\"SAN PABLO\",\n\t\t\t\t\t\t\t\t\"SAN PASCUAL\",\n\t\t\t\t\t\t\t\t\"SAN RAFAEL\",\n\t\t\t\t\t\t\t\t\"SAN ROQUE\",\n\t\t\t\t\t\t\t\t\"SAN SEBASTIAN\",\n\t\t\t\t\t\t\t\t\"SAN VICENTE\",\n\t\t\t\t\t\t\t\t\"SANTA CRUZ (ALVINDIA PRIMERO)\",\n\t\t\t\t\t\t\t\t\"SANTA MARIA\",\n\t\t\t\t\t\t\t\t\"SANTO CRISTO\",\n\t\t\t\t\t\t\t\t\"SANTO DOMINGO\",\n\t\t\t\t\t\t\t\t\"SANTO NI\u00D1O\",\n\t\t\t\t\t\t\t\t\"SAPANG MARAGUL\",\n\t\t\t\t\t\t\t\t\"SAPANG TAGALOG\",\n\t\t\t\t\t\t\t\t\"SEPUNG CALZADA\",\n\t\t\t\t\t\t\t\t\"SINAIT\",\n\t\t\t\t\t\t\t\t\"SUIZO\",\n\t\t\t\t\t\t\t\t\"TARIJI\",\n\t\t\t\t\t\t\t\t\"TIBAG\",\n\t\t\t\t\t\t\t\t\"TIBAGAN\",\n\t\t\t\t\t\t\t\t\"TRINIDAD (TRINIDAD PRIMERO)\",\n\t\t\t\t\t\t\t\t\"UNGOT\",\n\t\t\t\t\t\t\t\t\"VILLA BACOLOR\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"CONCEPCION\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ALFONSO\",\n\t\t\t\t\t\t\t\t\"BALUTU\",\n\t\t\t\t\t\t\t\t\"CAFE\",\n\t\t\t\t\t\t\t\t\"CALIUS GUECO\",\n\t\t\t\t\t\t\t\t\"CALULUAN\",\n\t\t\t\t\t\t\t\t\"CASTILLO\",\n\t\t\t\t\t\t\t\t\"CORAZON DE JESUS\",\n\t\t\t\t\t\t\t\t\"CULATINGAN\",\n\t\t\t\t\t\t\t\t\"DUNGAN\",\n\t\t\t\t\t\t\t\t\"DUTUNG-A-MATAS\",\n\t\t\t\t\t\t\t\t\"GREEN VILLAGE\",\n\t\t\t\t\t\t\t\t\"LILIBANGAN\",\n\t\t\t\t\t\t\t\t\"MABILOG\",\n\t\t\t\t\t\t\t\t\"MAGAO\",\n\t\t\t\t\t\t\t\t\"MALUPA\",\n\t\t\t\t\t\t\t\t\"MINANE\",\n\t\t\t\t\t\t\t\t\"PANALICSIAN (PANALICSICAN)\",\n\t\t\t\t\t\t\t\t\"PANDO\",\n\t\t\t\t\t\t\t\t\"PARANG\",\n\t\t\t\t\t\t\t\t\"PARULUNG\",\n\t\t\t\t\t\t\t\t\"PITABUNAN\",\n\t\t\t\t\t\t\t\t\"SAN AGUSTIN (MURCIA)\",\n\t\t\t\t\t\t\t\t\"SAN ANTONIO\",\n\t\t\t\t\t\t\t\t\"SAN BARTOLOME\",\n\t\t\t\t\t\t\t\t\"SAN FRANCISCO\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO (ALMENDRAS)\",\n\t\t\t\t\t\t\t\t\"SAN JOSE (POB.)\",\n\t\t\t\t\t\t\t\t\"SAN JUAN (CASTRO)\",\n\t\t\t\t\t\t\t\t\"SAN MARTIN\",\n\t\t\t\t\t\t\t\t\"SAN NICOLAS (POB.)\",\n\t\t\t\t\t\t\t\t\"SAN NICOLAS BALAS\",\n\t\t\t\t\t\t\t\t\"SAN VICENTE (CALUIS/COBRA)\",\n\t\t\t\t\t\t\t\t\"SANTA CRUZ\",\n\t\t\t\t\t\t\t\t\"SANTA MARIA\",\n\t\t\t\t\t\t\t\t\"SANTA MONICA\",\n\t\t\t\t\t\t\t\t\"SANTA RITA\",\n\t\t\t\t\t\t\t\t\"SANTA ROSA\",\n\t\t\t\t\t\t\t\t\"SANTIAGO\",\n\t\t\t\t\t\t\t\t\"SANTO CRISTO\",\n\t\t\t\t\t\t\t\t\"SANTO NI\u00D1O\",\n\t\t\t\t\t\t\t\t\"SANTO ROSARIO (MAGUNTING)\",\n\t\t\t\t\t\t\t\t\"TALIMUNDUC MARIMLA\",\n\t\t\t\t\t\t\t\t\"TALIMUNDUC SAN MIGUEL\",\n\t\t\t\t\t\t\t\t\"TELABANCA\",\n\t\t\t\t\t\t\t\t\"TINANG\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"GERONA\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ABAGON\",\n\t\t\t\t\t\t\t\t\"AMACALAN\",\n\t\t\t\t\t\t\t\t\"APSAYAN\",\n\t\t\t\t\t\t\t\t\"AYSON\",\n\t\t\t\t\t\t\t\t\"BAWA\",\n\t\t\t\t\t\t\t\t\"BUENLAG\",\n\t\t\t\t\t\t\t\t\"BULARIT\",\n\t\t\t\t\t\t\t\t\"CALAYAAN\",\n\t\t\t\t\t\t\t\t\"CARBONEL\",\n\t\t\t\t\t\t\t\t\"CARDONA\",\n\t\t\t\t\t\t\t\t\"CATURAY\",\n\t\t\t\t\t\t\t\t\"DANZO\",\n\t\t\t\t\t\t\t\t\"DICOLOR\",\n\t\t\t\t\t\t\t\t\"DON BASILIO\",\n\t\t\t\t\t\t\t\t\"LUNA\",\n\t\t\t\t\t\t\t\t\"MABINI\",\n\t\t\t\t\t\t\t\t\"MAGASPAC\",\n\t\t\t\t\t\t\t\t\"MALAYEP\",\n\t\t\t\t\t\t\t\t\"MATAPITAP\",\n\t\t\t\t\t\t\t\t\"MATAYUMCAB\",\n\t\t\t\t\t\t\t\t\"NEW SALEM\",\n\t\t\t\t\t\t\t\t\"OLOYBUAYA\",\n\t\t\t\t\t\t\t\t\"PADAPADA\",\n\t\t\t\t\t\t\t\t\"PARSOLINGAN\",\n\t\t\t\t\t\t\t\t\"PINASLING (PINASUNG)\",\n\t\t\t\t\t\t\t\t\"PLASTADO\",\n\t\t\t\t\t\t\t\t\"POBLACION 1\",\n\t\t\t\t\t\t\t\t\"POBLACION 2\",\n\t\t\t\t\t\t\t\t\"POBLACION 3\",\n\t\t\t\t\t\t\t\t\"QUEZON\",\n\t\t\t\t\t\t\t\t\"RIZAL\",\n\t\t\t\t\t\t\t\t\"SALAPUNGAN\",\n\t\t\t\t\t\t\t\t\"SAN AGUSTIN\",\n\t\t\t\t\t\t\t\t\"SAN ANTONIO\",\n\t\t\t\t\t\t\t\t\"SAN BARTOLOME\",\n\t\t\t\t\t\t\t\t\"SAN JOSE\",\n\t\t\t\t\t\t\t\t\"SANTA LUCIA\",\n\t\t\t\t\t\t\t\t\"SANTIAGO\",\n\t\t\t\t\t\t\t\t\"SEMBRANO\",\n\t\t\t\t\t\t\t\t\"SINGAT\",\n\t\t\t\t\t\t\t\t\"SULIPA\",\n\t\t\t\t\t\t\t\t\"TAGUMBAO\",\n\t\t\t\t\t\t\t\t\"TANGCARAN\",\n\t\t\t\t\t\t\t\t\"VILLA PAZ\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"LA PAZ\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BALANOY\",\n\t\t\t\t\t\t\t\t\"BANTOG-CARICUTAN\",\n\t\t\t\t\t\t\t\t\"CARAMUTAN\",\n\t\t\t\t\t\t\t\t\"CAUT\",\n\t\t\t\t\t\t\t\t\"COMILLAS\",\n\t\t\t\t\t\t\t\t\"DUMARAIS\",\n\t\t\t\t\t\t\t\t\"GUEVARRA\",\n\t\t\t\t\t\t\t\t\"KAPANIKIAN\",\n\t\t\t\t\t\t\t\t\"LA PURISIMA\",\n\t\t\t\t\t\t\t\t\"LARA\",\n\t\t\t\t\t\t\t\t\"LAUNGCUPANG\",\n\t\t\t\t\t\t\t\t\"LOMBOY\",\n\t\t\t\t\t\t\t\t\"MACALONG\",\n\t\t\t\t\t\t\t\t\"MATAYUMTAYUM\",\n\t\t\t\t\t\t\t\t\"MAYANG\",\n\t\t\t\t\t\t\t\t\"MOTRICO\",\n\t\t\t\t\t\t\t\t\"PALUDPUD\",\n\t\t\t\t\t\t\t\t\"RIZAL\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO (POB.)\",\n\t\t\t\t\t\t\t\t\"SAN ROQUE (POB.)\",\n\t\t\t\t\t\t\t\t\"SIERRA\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"MAYANTOC\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"AMBALINGIT\",\n\t\t\t\t\t\t\t\t\"BAYBAYAOAS\",\n\t\t\t\t\t\t\t\t\"BIGBIGA\",\n\t\t\t\t\t\t\t\t\"BINBINACA\",\n\t\t\t\t\t\t\t\t\"CALABTANGAN\",\n\t\t\t\t\t\t\t\t\"CAOCAOAYAN\",\n\t\t\t\t\t\t\t\t\"CARABAOAN\",\n\t\t\t\t\t\t\t\t\"CUBCUB\",\n\t\t\t\t\t\t\t\t\"GAYONGGAYONG\",\n\t\t\t\t\t\t\t\t\"GOSSOOD\",\n\t\t\t\t\t\t\t\t\"LABNEY\",\n\t\t\t\t\t\t\t\t\"MAMONIT\",\n\t\t\t\t\t\t\t\t\"MANINIOG\",\n\t\t\t\t\t\t\t\t\"MAPANDAN\",\n\t\t\t\t\t\t\t\t\"NAMBALAN\",\n\t\t\t\t\t\t\t\t\"PEDRO L. QUINES\",\n\t\t\t\t\t\t\t\t\"PITOMBAYOG\",\n\t\t\t\t\t\t\t\t\"POBLACION NORTE\",\n\t\t\t\t\t\t\t\t\"POBLACION SUR\",\n\t\t\t\t\t\t\t\t\"ROTROTTOOC\",\n\t\t\t\t\t\t\t\t\"SAN BARTOLOME\",\n\t\t\t\t\t\t\t\t\"SAN JOSE\",\n\t\t\t\t\t\t\t\t\"TALDIAPAN\",\n\t\t\t\t\t\t\t\t\"TANGCARANG\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"MONCADA\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ABLANG-SAPANG\",\n\t\t\t\t\t\t\t\t\"ARINGIN\",\n\t\t\t\t\t\t\t\t\"ATENCIO\",\n\t\t\t\t\t\t\t\t\"BANAOANG EAST\",\n\t\t\t\t\t\t\t\t\"BANAOANG WEST\",\n\t\t\t\t\t\t\t\t\"BAQUERO NORTE\",\n\t\t\t\t\t\t\t\t\"BAQUERO SUR\",\n\t\t\t\t\t\t\t\t\"BURGOS\",\n\t\t\t\t\t\t\t\t\"CALAMAY\",\n\t\t\t\t\t\t\t\t\"CALAPAN\",\n\t\t\t\t\t\t\t\t\"CAMANGAAN EAST\",\n\t\t\t\t\t\t\t\t\"CAMANGAAN WEST\",\n\t\t\t\t\t\t\t\t\"CAMPOSANTO 1 - NORTE\",\n\t\t\t\t\t\t\t\t\"CAMPOSANTO 1 - SUR\",\n\t\t\t\t\t\t\t\t\"CAMPOSANTO 2\",\n\t\t\t\t\t\t\t\t\"CAPAOAYAN\",\n\t\t\t\t\t\t\t\t\"LAPSING\",\n\t\t\t\t\t\t\t\t\"MABINI\",\n\t\t\t\t\t\t\t\t\"MALUAC\",\n\t\t\t\t\t\t\t\t\"POBLACION 1\",\n\t\t\t\t\t\t\t\t\"POBLACION 2\",\n\t\t\t\t\t\t\t\t\"POBLACION 3\",\n\t\t\t\t\t\t\t\t\"POBLACION 4\",\n\t\t\t\t\t\t\t\t\"RIZAL\",\n\t\t\t\t\t\t\t\t\"SAN JUAN\",\n\t\t\t\t\t\t\t\t\"SAN JULIAN\",\n\t\t\t\t\t\t\t\t\"SAN LEON\",\n\t\t\t\t\t\t\t\t\"SAN PEDRO\",\n\t\t\t\t\t\t\t\t\"SAN ROQUE\",\n\t\t\t\t\t\t\t\t\"SANTA LUCIA EAST\",\n\t\t\t\t\t\t\t\t\"SANTA LUCIA WEST\",\n\t\t\t\t\t\t\t\t\"SANTA MARIA\",\n\t\t\t\t\t\t\t\t\"SANTA MONICA\",\n\t\t\t\t\t\t\t\t\"TOLEGA NORTE\",\n\t\t\t\t\t\t\t\t\"TOLEGA SUR\",\n\t\t\t\t\t\t\t\t\"TUBECTUBANG\",\n\t\t\t\t\t\t\t\t\"VILLA\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"PANIQUI\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ABOGADO\",\n\t\t\t\t\t\t\t\t\"ACOCOLAO\",\n\t\t\t\t\t\t\t\t\"ADUAS\",\n\t\t\t\t\t\t\t\t\"APULID\",\n\t\t\t\t\t\t\t\t\"BALAOANG\",\n\t\t\t\t\t\t\t\t\"BARANG (BORANG)\",\n\t\t\t\t\t\t\t\t\"BRILLANTE\",\n\t\t\t\t\t\t\t\t\"BURGOS\",\n\t\t\t\t\t\t\t\t\"CABAYAOASAN\",\n\t\t\t\t\t\t\t\t\"CANAN\",\n\t\t\t\t\t\t\t\t\"CARINO\",\n\t\t\t\t\t\t\t\t\"CAYANGA\",\n\t\t\t\t\t\t\t\t\"COLIBANGBANG\",\n\t\t\t\t\t\t\t\t\"CORAL\",\n\t\t\t\t\t\t\t\t\"DAPDAP\",\n\t\t\t\t\t\t\t\t\"ESTACION\",\n\t\t\t\t\t\t\t\t\"MABILANG\",\n\t\t\t\t\t\t\t\t\"MANAOIS\",\n\t\t\t\t\t\t\t\t\"MATALAPITAP\",\n\t\t\t\t\t\t\t\t\"NAGMISAAN\",\n\t\t\t\t\t\t\t\t\"NANCAMARINAN\",\n\t\t\t\t\t\t\t\t\"NIPACO\",\n\t\t\t\t\t\t\t\t\"PATALAN\",\n\t\t\t\t\t\t\t\t\"POBLACION NORTE\",\n\t\t\t\t\t\t\t\t\"POBLACION SUR\",\n\t\t\t\t\t\t\t\t\"RANG-AYAN\",\n\t\t\t\t\t\t\t\t\"SALUMAGUE\",\n\t\t\t\t\t\t\t\t\"SAMPUT\",\n\t\t\t\t\t\t\t\t\"SAN CARLOS\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO\",\n\t\t\t\t\t\t\t\t\"SAN JUAN DE MILLA\",\n\t\t\t\t\t\t\t\t\"SANTA INES\",\n\t\t\t\t\t\t\t\t\"SINIGPIT\",\n\t\t\t\t\t\t\t\t\"TABLANG\",\n\t\t\t\t\t\t\t\t\"VENTENILLA\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"PURA\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BALITE\",\n\t\t\t\t\t\t\t\t\"BUENAVISTA\",\n\t\t\t\t\t\t\t\t\"CADANGLAAN\",\n\t\t\t\t\t\t\t\t\"ESTIPONA\",\n\t\t\t\t\t\t\t\t\"LINAO\",\n\t\t\t\t\t\t\t\t\"MAASIN\",\n\t\t\t\t\t\t\t\t\"MATINDEG\",\n\t\t\t\t\t\t\t\t\"MAUNGIB\",\n\t\t\t\t\t\t\t\t\"NAYA\",\n\t\t\t\t\t\t\t\t\"NILASIN 1ST\",\n\t\t\t\t\t\t\t\t\"NILASIN 2ND\",\n\t\t\t\t\t\t\t\t\"POBLACION 1\",\n\t\t\t\t\t\t\t\t\"POBLACION 2\",\n\t\t\t\t\t\t\t\t\"POBLACION 3\",\n\t\t\t\t\t\t\t\t\"POROC\",\n\t\t\t\t\t\t\t\t\"SINGAT\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"RAMOS\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"CORAL-ILOCO\",\n\t\t\t\t\t\t\t\t\"GUITEB\",\n\t\t\t\t\t\t\t\t\"PANCE\",\n\t\t\t\t\t\t\t\t\"POBLACION CENTER\",\n\t\t\t\t\t\t\t\t\"POBLACION NORTH\",\n\t\t\t\t\t\t\t\t\"POBLACION SOUTH\",\n\t\t\t\t\t\t\t\t\"SAN JUAN\",\n\t\t\t\t\t\t\t\t\"SAN RAYMUNDO\",\n\t\t\t\t\t\t\t\t\"TOLEDO\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"SAN CLEMENTE\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BALLOC\",\n\t\t\t\t\t\t\t\t\"BAMBAN\",\n\t\t\t\t\t\t\t\t\"CASIPO\",\n\t\t\t\t\t\t\t\t\"CATAGUDINGAN\",\n\t\t\t\t\t\t\t\t\"DALDALAYAP\",\n\t\t\t\t\t\t\t\t\"DOCLONG 1\",\n\t\t\t\t\t\t\t\t\"DOCLONG 2\",\n\t\t\t\t\t\t\t\t\"MAASIN\",\n\t\t\t\t\t\t\t\t\"NAGSABARAN\",\n\t\t\t\t\t\t\t\t\"PIT-AO\",\n\t\t\t\t\t\t\t\t\"POBLACION NORTE\",\n\t\t\t\t\t\t\t\t\"POBLACION SUR\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"SAN JOSE\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BURGOS\",\n\t\t\t\t\t\t\t\t\"DAVID\",\n\t\t\t\t\t\t\t\t\"IBA\",\n\t\t\t\t\t\t\t\t\"LABNEY\",\n\t\t\t\t\t\t\t\t\"LAWACAMULAG\",\n\t\t\t\t\t\t\t\t\"LUBIGAN\",\n\t\t\t\t\t\t\t\t\"MAAMOT\",\n\t\t\t\t\t\t\t\t\"MABABANABA\",\n\t\t\t\t\t\t\t\t\"MORIONES\",\n\t\t\t\t\t\t\t\t\"PAO\",\n\t\t\t\t\t\t\t\t\"SAN JUAN DE VALDEZ\",\n\t\t\t\t\t\t\t\t\"SULA\",\n\t\t\t\t\t\t\t\t\"VILLA AGLIPAY\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"SAN MANUEL\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"COLUBOT\",\n\t\t\t\t\t\t\t\t\"LANAT\",\n\t\t\t\t\t\t\t\t\"LEGASPI\",\n\t\t\t\t\t\t\t\t\"MANGANDINGAY\",\n\t\t\t\t\t\t\t\t\"MATARANNOC\",\n\t\t\t\t\t\t\t\t\"PACPACO\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"SALCEDO\",\n\t\t\t\t\t\t\t\t\"SAN AGUSTIN\",\n\t\t\t\t\t\t\t\t\"SAN FELIPE\",\n\t\t\t\t\t\t\t\t\"SAN JACINTO\",\n\t\t\t\t\t\t\t\t\"SAN MIGUEL\",\n\t\t\t\t\t\t\t\t\"SAN NARCISO\",\n\t\t\t\t\t\t\t\t\"SAN VICENTE\",\n\t\t\t\t\t\t\t\t\"SANTA MARIA\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"SANTA IGNACIA\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BALDIOS\",\n\t\t\t\t\t\t\t\t\"BOTBOTONES\",\n\t\t\t\t\t\t\t\t\"CAANAMONGAN\",\n\t\t\t\t\t\t\t\t\"CABARUAN\",\n\t\t\t\t\t\t\t\t\"CABUGBUGAN\",\n\t\t\t\t\t\t\t\t\"CADULDULAOAN\",\n\t\t\t\t\t\t\t\t\"CALIPAYAN\",\n\t\t\t\t\t\t\t\t\"MACAGUING\",\n\t\t\t\t\t\t\t\t\"NAMBALAN\",\n\t\t\t\t\t\t\t\t\"PADAPADA\",\n\t\t\t\t\t\t\t\t\"PILPILA\",\n\t\t\t\t\t\t\t\t\"PINPINAS\",\n\t\t\t\t\t\t\t\t\"POBLACION EAST\",\n\t\t\t\t\t\t\t\t\"POBLACION WEST\",\n\t\t\t\t\t\t\t\t\"PUGO-CECILIO\",\n\t\t\t\t\t\t\t\t\"SAN FRANCISCO\",\n\t\t\t\t\t\t\t\t\"SAN SOTERO\",\n\t\t\t\t\t\t\t\t\"SAN VICENTE\",\n\t\t\t\t\t\t\t\t\"SANTA INES CENTRO\",\n\t\t\t\t\t\t\t\t\"SANTA INES EAST\",\n\t\t\t\t\t\t\t\t\"SANTA INES WEST\",\n\t\t\t\t\t\t\t\t\"TAGUIPORO\",\n\t\t\t\t\t\t\t\t\"TIMMAGUAB\",\n\t\t\t\t\t\t\t\t\"VARGAS\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"VICTORIA\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BACULONG\",\n\t\t\t\t\t\t\t\t\"BALAYANG\",\n\t\t\t\t\t\t\t\t\"BALBALOTO\",\n\t\t\t\t\t\t\t\t\"BANGAR\",\n\t\t\t\t\t\t\t\t\"BANTOG\",\n\t\t\t\t\t\t\t\t\"BATANGBATANG\",\n\t\t\t\t\t\t\t\t\"BULO\",\n\t\t\t\t\t\t\t\t\"CABULUAN\",\n\t\t\t\t\t\t\t\t\"CALIBUNGAN\",\n\t\t\t\t\t\t\t\t\"CANAREM\",\n\t\t\t\t\t\t\t\t\"CRUZ\",\n\t\t\t\t\t\t\t\t\"LALAPAC\",\n\t\t\t\t\t\t\t\t\"MALUID\",\n\t\t\t\t\t\t\t\t\"MANGOLAGO\",\n\t\t\t\t\t\t\t\t\"MASALASA\",\n\t\t\t\t\t\t\t\t\"PALACPALAC\",\n\t\t\t\t\t\t\t\t\"SAN AGUSTIN\",\n\t\t\t\t\t\t\t\t\"SAN ANDRES\",\n\t\t\t\t\t\t\t\t\"SAN FERNANDO (POB.)\",\n\t\t\t\t\t\t\t\t\"SAN FRANCISCO\",\n\t\t\t\t\t\t\t\t\"SAN GAVINO (POB.)\",\n\t\t\t\t\t\t\t\t\"SAN JACINTO\",\n\t\t\t\t\t\t\t\t\"SAN NICOLAS (POB.)\",\n\t\t\t\t\t\t\t\t\"SAN VICENTE\",\n\t\t\t\t\t\t\t\t\"SANTA BARBARA\",\n\t\t\t\t\t\t\t\t\"SANTA LUCIA (POB.)\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"ZAMBALES\",\n\t\t\t\t\t\"cities\": [{\n\t\t\t\t\t\t\t\"name\": \"BOTOLAN\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BANCAL\",\n\t\t\t\t\t\t\t\t\"BANGAN\",\n\t\t\t\t\t\t\t\t\"BATONLAPOC\",\n\t\t\t\t\t\t\t\t\"BELBEL\",\n\t\t\t\t\t\t\t\t\"BENEG\",\n\t\t\t\t\t\t\t\t\"BINUCLUTAN\",\n\t\t\t\t\t\t\t\t\"BURGOS\",\n\t\t\t\t\t\t\t\t\"CABATUAN\",\n\t\t\t\t\t\t\t\t\"CAPAYAWAN\",\n\t\t\t\t\t\t\t\t\"CARAEL\",\n\t\t\t\t\t\t\t\t\"DANACBUNGA\",\n\t\t\t\t\t\t\t\t\"MAGUISGUIS\",\n\t\t\t\t\t\t\t\t\"MALOMBOY\",\n\t\t\t\t\t\t\t\t\"MAMBOG\",\n\t\t\t\t\t\t\t\t\"MORAZA\",\n\t\t\t\t\t\t\t\t\"NACOLCOL\",\n\t\t\t\t\t\t\t\t\"OWAOG-NIBLOC\",\n\t\t\t\t\t\t\t\t\"PACO (POB.)\",\n\t\t\t\t\t\t\t\t\"PALIS\",\n\t\t\t\t\t\t\t\t\"PANAN\",\n\t\t\t\t\t\t\t\t\"PAREL\",\n\t\t\t\t\t\t\t\t\"PAUDPOD\",\n\t\t\t\t\t\t\t\t\"POONBATO\",\n\t\t\t\t\t\t\t\t\"PORAC\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO\",\n\t\t\t\t\t\t\t\t\"SAN JUAN\",\n\t\t\t\t\t\t\t\t\"SAN MIGUEL\",\n\t\t\t\t\t\t\t\t\"SANTIAGO\",\n\t\t\t\t\t\t\t\t\"TAMPO (POB.)\",\n\t\t\t\t\t\t\t\t\"TAUGTOG\",\n\t\t\t\t\t\t\t\t\"VILLAR\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"CABANGAN\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ANONANG\",\n\t\t\t\t\t\t\t\t\"APO-APO\",\n\t\t\t\t\t\t\t\t\"AREW\",\n\t\t\t\t\t\t\t\t\"BANUAMBAYO (POB.)\",\n\t\t\t\t\t\t\t\t\"CADMANG-RESERVA\",\n\t\t\t\t\t\t\t\t\"CAMILING (CAMIING)\",\n\t\t\t\t\t\t\t\t\"CASABAAN\",\n\t\t\t\t\t\t\t\t\"DEL CARMEN (POB.)\",\n\t\t\t\t\t\t\t\t\"DOLORES (POB.)\",\n\t\t\t\t\t\t\t\t\"FELMIDA-DIAZ\",\n\t\t\t\t\t\t\t\t\"LAOAG\",\n\t\t\t\t\t\t\t\t\"LOMBOY\",\n\t\t\t\t\t\t\t\t\"LONGOS\",\n\t\t\t\t\t\t\t\t\"MABANGLIT\",\n\t\t\t\t\t\t\t\t\"NEW SAN JUAN\",\n\t\t\t\t\t\t\t\t\"SAN ANTONIO\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO\",\n\t\t\t\t\t\t\t\t\"SAN JUAN (POB.)\",\n\t\t\t\t\t\t\t\t\"SAN RAFAEL\",\n\t\t\t\t\t\t\t\t\"SANTA RITA\",\n\t\t\t\t\t\t\t\t\"SANTO NI\u00F1O\",\n\t\t\t\t\t\t\t\t\"TONDO\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"CANDELARIA\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BABANCAL\",\n\t\t\t\t\t\t\t\t\"BINABALIAN\",\n\t\t\t\t\t\t\t\t\"CATOL\",\n\t\t\t\t\t\t\t\t\"DAMPAY\",\n\t\t\t\t\t\t\t\t\"LAUIS\",\n\t\t\t\t\t\t\t\t\"LIBERTADOR\",\n\t\t\t\t\t\t\t\t\"MALABON (SAN ROQUE)\",\n\t\t\t\t\t\t\t\t\"MALIMANGA\",\n\t\t\t\t\t\t\t\t\"PAMIBIAN\",\n\t\t\t\t\t\t\t\t\"PANAYONAN\",\n\t\t\t\t\t\t\t\t\"PINAGREALAN\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"SINABACAN\",\n\t\t\t\t\t\t\t\t\"TAPOSO\",\n\t\t\t\t\t\t\t\t\"UACON\",\n\t\t\t\t\t\t\t\t\"YAMOT\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"CASTILLEJOS\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BALAYBAY\",\n\t\t\t\t\t\t\t\t\"BUENAVISTA\",\n\t\t\t\t\t\t\t\t\"DEL PILAR\",\n\t\t\t\t\t\t\t\t\"LOOC\",\n\t\t\t\t\t\t\t\t\"MAGSAYSAY\",\n\t\t\t\t\t\t\t\t\"NAGBAYAN\",\n\t\t\t\t\t\t\t\t\"NAGBUNGA\",\n\t\t\t\t\t\t\t\t\"SAN AGUSTIN\",\n\t\t\t\t\t\t\t\t\"SAN JOSE (POB.)\",\n\t\t\t\t\t\t\t\t\"SAN JUAN (POB.)\",\n\t\t\t\t\t\t\t\t\"SAN NICOLAS\",\n\t\t\t\t\t\t\t\t\"SAN PABLO (POB.)\",\n\t\t\t\t\t\t\t\t\"SAN ROQUE\",\n\t\t\t\t\t\t\t\t\"SANTA MARIA\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"IBA\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"AMUNGAN\",\n\t\t\t\t\t\t\t\t\"BANGANTALINGA\",\n\t\t\t\t\t\t\t\t\"DIRITA-BALOGUEN\",\n\t\t\t\t\t\t\t\t\"LIPAY-DINGIN-PANIBUATAN\",\n\t\t\t\t\t\t\t\t\"PALANGINAN (PALANGUINAN-TAMBAK)\",\n\t\t\t\t\t\t\t\t\"SAN AGUSTIN\",\n\t\t\t\t\t\t\t\t\"SANTA BARBARA\",\n\t\t\t\t\t\t\t\t\"SANTO ROSARIO\",\n\t\t\t\t\t\t\t\t\"ZONE 1 POB. (LIBABA)\",\n\t\t\t\t\t\t\t\t\"ZONE 2 POB. (AYPA)\",\n\t\t\t\t\t\t\t\t\"ZONE 3 POB. (BOTLAY)\",\n\t\t\t\t\t\t\t\t\"ZONE 4 POB. (SAGAPAN)\",\n\t\t\t\t\t\t\t\t\"ZONE 5 POB. (BANO)\",\n\t\t\t\t\t\t\t\t\"ZONE 6 POB. (BAYTAN)\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"MASINLOC\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BALOGANON\",\n\t\t\t\t\t\t\t\t\"BAMBAN\",\n\t\t\t\t\t\t\t\t\"BANI\",\n\t\t\t\t\t\t\t\t\"COLLAT\",\n\t\t\t\t\t\t\t\t\"INHOBOL\",\n\t\t\t\t\t\t\t\t\"NORTH POBLACION\",\n\t\t\t\t\t\t\t\t\"SAN LORENZO\",\n\t\t\t\t\t\t\t\t\"SAN SALVADOR\",\n\t\t\t\t\t\t\t\t\"SANTA RITA\",\n\t\t\t\t\t\t\t\t\"SANTO ROSARIO\",\n\t\t\t\t\t\t\t\t\"SOUTH POBLACION\",\n\t\t\t\t\t\t\t\t\"TALTAL\",\n\t\t\t\t\t\t\t\t\"TAPUAC\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"OLANGAPO CITY\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ASINAN\",\n\t\t\t\t\t\t\t\t\"BANICAIN\",\n\t\t\t\t\t\t\t\t\"BARRETO\",\n\t\t\t\t\t\t\t\t\"EAST BAJAC-BAJAC\",\n\t\t\t\t\t\t\t\t\"EAST TAPINAC\",\n\t\t\t\t\t\t\t\t\"GORDON HEIGHTS\",\n\t\t\t\t\t\t\t\t\"KALAKLAN\",\n\t\t\t\t\t\t\t\t\"MABAYUAN\",\n\t\t\t\t\t\t\t\t\"NEW CABALAN\",\n\t\t\t\t\t\t\t\t\"NEW ILALIM\",\n\t\t\t\t\t\t\t\t\"NEW KABABAE\",\n\t\t\t\t\t\t\t\t\"NEW KALALAKE\",\n\t\t\t\t\t\t\t\t\"OLD CABALAN\",\n\t\t\t\t\t\t\t\t\"PAG-ASA\",\n\t\t\t\t\t\t\t\t\"SANTA RITA\",\n\t\t\t\t\t\t\t\t\"WEST BAJAC-BAJAC\",\n\t\t\t\t\t\t\t\t\"WEST TAPINAC\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"PALAUIG\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ALWA\",\n\t\t\t\t\t\t\t\t\"BATO\",\n\t\t\t\t\t\t\t\t\"BULAWEN\",\n\t\t\t\t\t\t\t\t\"CAUYAN\",\n\t\t\t\t\t\t\t\t\"EAST POBLACION\",\n\t\t\t\t\t\t\t\t\"GARRETA\",\n\t\t\t\t\t\t\t\t\"LIBABA\",\n\t\t\t\t\t\t\t\t\"LIOZON\",\n\t\t\t\t\t\t\t\t\"LIPAY\",\n\t\t\t\t\t\t\t\t\"LOCLOC\",\n\t\t\t\t\t\t\t\t\"MACARANG\",\n\t\t\t\t\t\t\t\t\"MAGALAWA\",\n\t\t\t\t\t\t\t\t\"PANGOLINGAN\",\n\t\t\t\t\t\t\t\t\"SALAZA\",\n\t\t\t\t\t\t\t\t\"SAN JUAN\",\n\t\t\t\t\t\t\t\t\"SANTO NI\u00F1O\",\n\t\t\t\t\t\t\t\t\"SANTO TOMAS\",\n\t\t\t\t\t\t\t\t\"TITION (SAN VICENTE)\",\n\t\t\t\t\t\t\t\t\"WEST POBLACION\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"SAN ANTONIO\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ANGELES\",\n\t\t\t\t\t\t\t\t\"ANTIPOLO (POB.)\",\n\t\t\t\t\t\t\t\t\"BURGOS (POB.)\",\n\t\t\t\t\t\t\t\t\"EAST DIRITA\",\n\t\t\t\t\t\t\t\t\"LUNA (POB.)\",\n\t\t\t\t\t\t\t\t\"PUNDAQUIT\",\n\t\t\t\t\t\t\t\t\"RIZAL\",\n\t\t\t\t\t\t\t\t\"SAN ESTEBAN\",\n\t\t\t\t\t\t\t\t\"SAN GREGORIO (POB.)\",\n\t\t\t\t\t\t\t\t\"SAN JUAN (POB.)\",\n\t\t\t\t\t\t\t\t\"SAN MIGUEL\",\n\t\t\t\t\t\t\t\t\"SAN NICOLAS (POB.)\",\n\t\t\t\t\t\t\t\t\"SANTIAGO\",\n\t\t\t\t\t\t\t\t\"WEST DIRITA\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"SAN FELIPE\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"AMAGNA (POB.)\",\n\t\t\t\t\t\t\t\t\"APOSTOL (POB.)\",\n\t\t\t\t\t\t\t\t\"BALINCAGUING\",\n\t\t\t\t\t\t\t\t\"FARA\u00F1AL (POB.)\",\n\t\t\t\t\t\t\t\t\"FERIA (POB.)\",\n\t\t\t\t\t\t\t\t\"MALOMA\",\n\t\t\t\t\t\t\t\t\"MANGLICMOT (POB.)\",\n\t\t\t\t\t\t\t\t\"ROSETE (POB.)\",\n\t\t\t\t\t\t\t\t\"SAN RAFAEL\",\n\t\t\t\t\t\t\t\t\"SANTO NI\u00F1O\",\n\t\t\t\t\t\t\t\t\"SINDOL\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"SAN MARCELINO\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"AGLAO\",\n\t\t\t\t\t\t\t\t\"BUHAWEN\",\n\t\t\t\t\t\t\t\t\"BURGOS (POB.)\",\n\t\t\t\t\t\t\t\t\"CENTRAL (POB.)\",\n\t\t\t\t\t\t\t\t\"CONSUELO NORTE\",\n\t\t\t\t\t\t\t\t\"CONSUELO SUR (POB.)\",\n\t\t\t\t\t\t\t\t\"LA PAZ (POB.)\",\n\t\t\t\t\t\t\t\t\"LAOAG\",\n\t\t\t\t\t\t\t\t\"LINASIN\",\n\t\t\t\t\t\t\t\t\"LINUSUNGAN\",\n\t\t\t\t\t\t\t\t\"LUCERO (POB.)\",\n\t\t\t\t\t\t\t\t\"NAGBUNGA\",\n\t\t\t\t\t\t\t\t\"RABANES\",\n\t\t\t\t\t\t\t\t\"RIZAL (POB.)\",\n\t\t\t\t\t\t\t\t\"SAN GUILLERMO (POB.)\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO (POB.)\",\n\t\t\t\t\t\t\t\t\"SAN RAFAEL\",\n\t\t\t\t\t\t\t\t\"SANTA FE\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"SAN NARCISO\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ALUSIIS\",\n\t\t\t\t\t\t\t\t\"BEDDENG\",\n\t\t\t\t\t\t\t\t\"CANDELARIA (POB.)\",\n\t\t\t\t\t\t\t\t\"DALLIPAWEN\",\n\t\t\t\t\t\t\t\t\"GRULLO\",\n\t\t\t\t\t\t\t\t\"LA PAZ\",\n\t\t\t\t\t\t\t\t\"LIBERTAD (POB.)\",\n\t\t\t\t\t\t\t\t\"NAMATACAN\",\n\t\t\t\t\t\t\t\t\"NATIVIDAD (POB.)\",\n\t\t\t\t\t\t\t\t\"OMAYA\",\n\t\t\t\t\t\t\t\t\"PAITE\",\n\t\t\t\t\t\t\t\t\"PATROCINIO (POB.)\",\n\t\t\t\t\t\t\t\t\"SAN JOSE (POB.)\",\n\t\t\t\t\t\t\t\t\"SAN JUAN (POB.)\",\n\t\t\t\t\t\t\t\t\"SAN PASCUAL (POB.)\",\n\t\t\t\t\t\t\t\t\"SAN RAFAEL (POB.)\",\n\t\t\t\t\t\t\t\t\"SIMINUBLAN\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"SANTA CRUZ\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BABUYAN\",\n\t\t\t\t\t\t\t\t\"BANGCOL\",\n\t\t\t\t\t\t\t\t\"BAYTO\",\n\t\t\t\t\t\t\t\t\"BIAY\",\n\t\t\t\t\t\t\t\t\"BOLITOC\",\n\t\t\t\t\t\t\t\t\"BULAWON\",\n\t\t\t\t\t\t\t\t\"CANAYNAYAN\",\n\t\t\t\t\t\t\t\t\"GAMA\",\n\t\t\t\t\t\t\t\t\"GUINABON\",\n\t\t\t\t\t\t\t\t\"GUISGUIS\",\n\t\t\t\t\t\t\t\t\"LIPAY\",\n\t\t\t\t\t\t\t\t\"LOMBOY\",\n\t\t\t\t\t\t\t\t\"LUCAPON NORTH\",\n\t\t\t\t\t\t\t\t\"LUCAPON SOUTH\",\n\t\t\t\t\t\t\t\t\"MALABAGO\",\n\t\t\t\t\t\t\t\t\"NAULO\",\n\t\t\t\t\t\t\t\t\"PAGATPAT\",\n\t\t\t\t\t\t\t\t\"PAMONORAN\",\n\t\t\t\t\t\t\t\t\"POBLACION NORTH\",\n\t\t\t\t\t\t\t\t\"POBLACION SOUTH\",\n\t\t\t\t\t\t\t\t\"SABANG\",\n\t\t\t\t\t\t\t\t\"SAN FERNANDO\",\n\t\t\t\t\t\t\t\t\"TABALONG\",\n\t\t\t\t\t\t\t\t\"TUBOTUBO NORTH\",\n\t\t\t\t\t\t\t\t\"TUBOTUBO SOUTH\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"SUBIC\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ANINGWAY SACATIHAN\",\n\t\t\t\t\t\t\t\t\"ASINAN POBLACION\",\n\t\t\t\t\t\t\t\t\"ASINAN PROPER\",\n\t\t\t\t\t\t\t\t\"BARACA-CAMACHILE (POB.)\",\n\t\t\t\t\t\t\t\t\"BATIAWAN\",\n\t\t\t\t\t\t\t\t\"CALAPACUAN\",\n\t\t\t\t\t\t\t\t\"CALAPANDAYAN (POB.)\",\n\t\t\t\t\t\t\t\t\"CAWAG\",\n\t\t\t\t\t\t\t\t\"ILWAS (POB.)\",\n\t\t\t\t\t\t\t\t\"MANGAN-VACA\",\n\t\t\t\t\t\t\t\t\"MATAIN\",\n\t\t\t\t\t\t\t\t\"NAUGSOL\",\n\t\t\t\t\t\t\t\t\"PAMATAWAN\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO\",\n\t\t\t\t\t\t\t\t\"SANTO TOMAS\",\n\t\t\t\t\t\t\t\t\"WAWANDUE (POB.)\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"REGION IV-A\",\n\t\t\t\"provinces\": [{\n\t\t\t\t\t\"name\": \"BATANGAS\",\n\t\t\t\t\t\"cities\": [{\n\t\t\t\t\t\t\t\"name\": \"AGONCILLO\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ADIA\",\n\t\t\t\t\t\t\t\t\"BAGONG SIKAT\",\n\t\t\t\t\t\t\t\t\"BALANGON\",\n\t\t\t\t\t\t\t\t\"BANGIN\",\n\t\t\t\t\t\t\t\t\"BANYAGA\",\n\t\t\t\t\t\t\t\t\"BARIGON\",\n\t\t\t\t\t\t\t\t\"BILIBINWANG\",\n\t\t\t\t\t\t\t\t\"CORAL NA MUNTI\",\n\t\t\t\t\t\t\t\t\"GUITNA\",\n\t\t\t\t\t\t\t\t\"MABINI\",\n\t\t\t\t\t\t\t\t\"PAMIGA\",\n\t\t\t\t\t\t\t\t\"PANHULAN\",\n\t\t\t\t\t\t\t\t\"PANSIPIT\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"POOK\",\n\t\t\t\t\t\t\t\t\"SAN JACINTO\",\n\t\t\t\t\t\t\t\t\"SAN TEODORO\",\n\t\t\t\t\t\t\t\t\"SANTA CRUZ\",\n\t\t\t\t\t\t\t\t\"SANTO TOMAS\",\n\t\t\t\t\t\t\t\t\"SUBIC IBABA\",\n\t\t\t\t\t\t\t\t\"SUBIC ILAYA\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"ALITAGTAG\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BALAGBAG\",\n\t\t\t\t\t\t\t\t\"CONCEPCION\",\n\t\t\t\t\t\t\t\t\"CONCORDIA\",\n\t\t\t\t\t\t\t\t\"DALIPIT EAST\",\n\t\t\t\t\t\t\t\t\"DALIPIT WEST\",\n\t\t\t\t\t\t\t\t\"DOMINADOR EAST\",\n\t\t\t\t\t\t\t\t\"DOMINADOR WEST\",\n\t\t\t\t\t\t\t\t\"MUNLAWIN NORTE\",\n\t\t\t\t\t\t\t\t\"MUNLAWIN SUR\",\n\t\t\t\t\t\t\t\t\"MUZON PRIMERO\",\n\t\t\t\t\t\t\t\t\"MUZON SEGUNDO\",\n\t\t\t\t\t\t\t\t\"PINAGKURUSAN\",\n\t\t\t\t\t\t\t\t\"PING-AS\",\n\t\t\t\t\t\t\t\t\"POBLACION EAST\",\n\t\t\t\t\t\t\t\t\"POBLACION WEST\",\n\t\t\t\t\t\t\t\t\"SAN JOSE\",\n\t\t\t\t\t\t\t\t\"SAN JUAN\",\n\t\t\t\t\t\t\t\t\"SANTA CRUZ\",\n\t\t\t\t\t\t\t\t\"TADLAC\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"BALAYAN\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BACLARAN\",\n\t\t\t\t\t\t\t\t\"BARANGAY 1 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 10 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 11 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 12 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 2 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 3 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 4 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 5 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 6 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 7 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 8 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 9 (POB.)\",\n\t\t\t\t\t\t\t\t\"CALAN\",\n\t\t\t\t\t\t\t\t\"CALOOCAN\",\n\t\t\t\t\t\t\t\t\"CALZADA\",\n\t\t\t\t\t\t\t\t\"CANDA\",\n\t\t\t\t\t\t\t\t\"CARENAHAN\",\n\t\t\t\t\t\t\t\t\"CAYBUNGA\",\n\t\t\t\t\t\t\t\t\"CAYPONCE\",\n\t\t\t\t\t\t\t\t\"DALIG\",\n\t\t\t\t\t\t\t\t\"DAO\",\n\t\t\t\t\t\t\t\t\"DILAO\",\n\t\t\t\t\t\t\t\t\"DUHATAN\",\n\t\t\t\t\t\t\t\t\"DURUNGAO\",\n\t\t\t\t\t\t\t\t\"GIMALAS\",\n\t\t\t\t\t\t\t\t\"GUMAMELA\",\n\t\t\t\t\t\t\t\t\"LAGNAS\",\n\t\t\t\t\t\t\t\t\"LANATAN\",\n\t\t\t\t\t\t\t\t\"LANGGANGAN\",\n\t\t\t\t\t\t\t\t\"LUCBAN POOK\",\n\t\t\t\t\t\t\t\t\"LUCBAN PUTOL\",\n\t\t\t\t\t\t\t\t\"MAGABE\",\n\t\t\t\t\t\t\t\t\"MALALAY\",\n\t\t\t\t\t\t\t\t\"MUNTING TUBIG\",\n\t\t\t\t\t\t\t\t\"NAVOTAS\",\n\t\t\t\t\t\t\t\t\"PALIKPIKAN\",\n\t\t\t\t\t\t\t\t\"PATUGO\",\n\t\t\t\t\t\t\t\t\"POOC\",\n\t\t\t\t\t\t\t\t\"SAMBAT\",\n\t\t\t\t\t\t\t\t\"SAMPAGA\",\n\t\t\t\t\t\t\t\t\"SAN JUAN\",\n\t\t\t\t\t\t\t\t\"SAN PIRO\",\n\t\t\t\t\t\t\t\t\"SANTOL\",\n\t\t\t\t\t\t\t\t\"SUKOL\",\n\t\t\t\t\t\t\t\t\"TACTAC\",\n\t\t\t\t\t\t\t\t\"TALUDTUD\",\n\t\t\t\t\t\t\t\t\"TANGGOY\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"BALETE\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ALANGILAN\",\n\t\t\t\t\t\t\t\t\"CALAWIT\",\n\t\t\t\t\t\t\t\t\"LOOC\",\n\t\t\t\t\t\t\t\t\"MAGAPI\",\n\t\t\t\t\t\t\t\t\"MAKINA\",\n\t\t\t\t\t\t\t\t\"MALABANAN\",\n\t\t\t\t\t\t\t\t\"PALIGAWAN\",\n\t\t\t\t\t\t\t\t\"PALSARA\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"SALA\",\n\t\t\t\t\t\t\t\t\"SAMPALOCAN\",\n\t\t\t\t\t\t\t\t\"SAN SEBASTIAN\",\n\t\t\t\t\t\t\t\t\"SOLIS\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"BATANGAS CITY\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ALANGILAN\",\n\t\t\t\t\t\t\t\t\"BALAGTAS\",\n\t\t\t\t\t\t\t\t\"BALETE\",\n\t\t\t\t\t\t\t\t\"BANABA CENTER\",\n\t\t\t\t\t\t\t\t\"BANABA IBABA\",\n\t\t\t\t\t\t\t\t\"BANABA KANLURAN\",\n\t\t\t\t\t\t\t\t\"BANABA SILANGAN\",\n\t\t\t\t\t\t\t\t\"BARANGAY 1 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 2 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 3 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 4 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 5 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 6 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 7 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 8 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 9 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 10 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 11 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 12 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 13 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 14 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 15 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 16 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 17 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 18 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 19 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 20 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 21 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 22 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 23 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 24 (POB.)\",\n\t\t\t\t\t\t\t\t\"BILOGO\",\n\t\t\t\t\t\t\t\t\"BOLBOK\",\n\t\t\t\t\t\t\t\t\"BUKAL\",\n\t\t\t\t\t\t\t\t\"CALICANTO\",\n\t\t\t\t\t\t\t\t\"CATANDALA\",\n\t\t\t\t\t\t\t\t\"CONCEPCION\",\n\t\t\t\t\t\t\t\t\"CONDE ITAAS\",\n\t\t\t\t\t\t\t\t\"CONDE LABAK\",\n\t\t\t\t\t\t\t\t\"CUTA\",\n\t\t\t\t\t\t\t\t\"DALIG\",\n\t\t\t\t\t\t\t\t\"DELA PAZ\",\n\t\t\t\t\t\t\t\t\"DELA PAZ PULOT APLAYA\",\n\t\t\t\t\t\t\t\t\"DELA PAZ PULOT ITAAS\",\n\t\t\t\t\t\t\t\t\"DOMOCLAY\",\n\t\t\t\t\t\t\t\t\"DUMANTAY\",\n\t\t\t\t\t\t\t\t\"GULOD ITAAS\",\n\t\t\t\t\t\t\t\t\"GULOD LABAK\",\n\t\t\t\t\t\t\t\t\"HALIGUE KANLURAN\",\n\t\t\t\t\t\t\t\t\"HALIGUE SILANGAN\",\n\t\t\t\t\t\t\t\t\"ILIHAN\",\n\t\t\t\t\t\t\t\t\"KUMBA\",\n\t\t\t\t\t\t\t\t\"KUMINTANG IBABA\",\n\t\t\t\t\t\t\t\t\"KUMINTANG ILAYA\",\n\t\t\t\t\t\t\t\t\"LIBJO\",\n\t\t\t\t\t\t\t\t\"LIPONPON, ISLA VERDE\",\n\t\t\t\t\t\t\t\t\"MAAPAS\",\n\t\t\t\t\t\t\t\t\"MABACONG (MATOCO)\",\n\t\t\t\t\t\t\t\t\"MAHABANG DAHILIG\",\n\t\t\t\t\t\t\t\t\"MAHABANG PARANG\",\n\t\t\t\t\t\t\t\t\"MAHACOT KANLURAN\",\n\t\t\t\t\t\t\t\t\"MAHACOT SILANGAN\",\n\t\t\t\t\t\t\t\t\"MALALIM\",\n\t\t\t\t\t\t\t\t\"MALIBAYO\",\n\t\t\t\t\t\t\t\t\"MALITAM\",\n\t\t\t\t\t\t\t\t\"MARUCLAP\",\n\t\t\t\t\t\t\t\t\"PAGKILATAN\",\n\t\t\t\t\t\t\t\t\"PAHARANG KANLURAN\",\n\t\t\t\t\t\t\t\t\"PAHARANG SILANGAN\",\n\t\t\t\t\t\t\t\t\"PALLOCAN KANLURAN\",\n\t\t\t\t\t\t\t\t\"PALLOCAN SILANGAN\",\n\t\t\t\t\t\t\t\t\"PINAMUCAN\",\n\t\t\t\t\t\t\t\t\"PINAMUCAN IBABA\",\n\t\t\t\t\t\t\t\t\"PINAMUCAN SILANGAN\",\n\t\t\t\t\t\t\t\t\"SAMPAGA\",\n\t\t\t\t\t\t\t\t\"SAN AGAPITO, ISLA VERDE\",\n\t\t\t\t\t\t\t\t\"SAN AGUSTIN KANLURAN, ISLA VERDE\",\n\t\t\t\t\t\t\t\t\"SAN AGUSTIN SILANGAN, ISLA VERDE\",\n\t\t\t\t\t\t\t\t\"SAN ANDRES, ISLA VERDE\",\n\t\t\t\t\t\t\t\t\"SAN ANTONIO, ISLA VERDE\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO\",\n\t\t\t\t\t\t\t\t\"SAN JOSE SICO\",\n\t\t\t\t\t\t\t\t\"SAN MIGUEL\",\n\t\t\t\t\t\t\t\t\"SAN PEDRO\",\n\t\t\t\t\t\t\t\t\"SANTA CLARA\",\n\t\t\t\t\t\t\t\t\"SANTA RITA APLAYA\",\n\t\t\t\t\t\t\t\t\"SANTA RITA KARSADA\",\n\t\t\t\t\t\t\t\t\"SANTO DOMINGO\",\n\t\t\t\t\t\t\t\t\"SANTO NI\u00F1O\",\n\t\t\t\t\t\t\t\t\"SIMLONG\",\n\t\t\t\t\t\t\t\t\"SIRANG LUPA\",\n\t\t\t\t\t\t\t\t\"SOROSORO IBABA\",\n\t\t\t\t\t\t\t\t\"SOROSORO ILAYA\",\n\t\t\t\t\t\t\t\t\"SOROSORO KARSADA\",\n\t\t\t\t\t\t\t\t\"TABANGAO AMBULONG\",\n\t\t\t\t\t\t\t\t\"TABANGAO APLAYA (TABANGAO PROPER)\",\n\t\t\t\t\t\t\t\t\"TABANGAO DAO\",\n\t\t\t\t\t\t\t\t\"TALAHIB PANDAYAN\",\n\t\t\t\t\t\t\t\t\"TALAHIB PAYAPA\",\n\t\t\t\t\t\t\t\t\"TALUMPOK KANLURAN\",\n\t\t\t\t\t\t\t\t\"TALUMPOK SILANGAN\",\n\t\t\t\t\t\t\t\t\"TINGA ITAAS\",\n\t\t\t\t\t\t\t\t\"TINGA LABAK\",\n\t\t\t\t\t\t\t\t\"TULO\",\n\t\t\t\t\t\t\t\t\"WAWA\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"BAUAN\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ALAGAO\",\n\t\t\t\t\t\t\t\t\"APLAYA\",\n\t\t\t\t\t\t\t\t\"AS-IS\",\n\t\t\t\t\t\t\t\t\"BAGONG SILANG\",\n\t\t\t\t\t\t\t\t\"BAGUILAWA\",\n\t\t\t\t\t\t\t\t\"BALAYONG\",\n\t\t\t\t\t\t\t\t\"BARANGAY I (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY II (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY III (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY IV (POB.)\",\n\t\t\t\t\t\t\t\t\"BOLO\",\n\t\t\t\t\t\t\t\t\"COLVO\",\n\t\t\t\t\t\t\t\t\"CUPANG\",\n\t\t\t\t\t\t\t\t\"DURUNGAO\",\n\t\t\t\t\t\t\t\t\"GULIBAY\",\n\t\t\t\t\t\t\t\t\"INICBULAN\",\n\t\t\t\t\t\t\t\t\"LOCLOC\",\n\t\t\t\t\t\t\t\t\"MAGALANG-GALANG\",\n\t\t\t\t\t\t\t\t\"MALINDIG\",\n\t\t\t\t\t\t\t\t\"MANALUPONG\",\n\t\t\t\t\t\t\t\t\"MANGHINAO PROPER\",\n\t\t\t\t\t\t\t\t\"MANGHINAO UNO\",\n\t\t\t\t\t\t\t\t\"NEW DANGLAYAN\",\n\t\t\t\t\t\t\t\t\"ORENSE\",\n\t\t\t\t\t\t\t\t\"PITUGO\",\n\t\t\t\t\t\t\t\t\"RIZAL\",\n\t\t\t\t\t\t\t\t\"SAMPAGUITA\",\n\t\t\t\t\t\t\t\t\"SAN AGUSTIN\",\n\t\t\t\t\t\t\t\t\"SAN ANDRES PROPER\",\n\t\t\t\t\t\t\t\t\"SAN ANDRES UNO\",\n\t\t\t\t\t\t\t\t\"SAN DIEGO\",\n\t\t\t\t\t\t\t\t\"SAN MIGUEL\",\n\t\t\t\t\t\t\t\t\"SAN PABLO\",\n\t\t\t\t\t\t\t\t\"SAN PEDRO\",\n\t\t\t\t\t\t\t\t\"SAN ROQUE\",\n\t\t\t\t\t\t\t\t\"SAN TEODORO\",\n\t\t\t\t\t\t\t\t\"SAN VICENTE\",\n\t\t\t\t\t\t\t\t\"SANTA MARIA\",\n\t\t\t\t\t\t\t\t\"SANTO DOMINGO\",\n\t\t\t\t\t\t\t\t\"SINALA\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"CALACA\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BACLAS\",\n\t\t\t\t\t\t\t\t\"BAGONG TUBIG\",\n\t\t\t\t\t\t\t\t\"BALIMBING\",\n\t\t\t\t\t\t\t\t\"BAMBANG\",\n\t\t\t\t\t\t\t\t\"BARANGAY 1 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 2 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 3 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 4 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 5 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 6 (POB.)\",\n\t\t\t\t\t\t\t\t\"BISAYA\",\n\t\t\t\t\t\t\t\t\"CAHIL\",\n\t\t\t\t\t\t\t\t\"CALANTAS\",\n\t\t\t\t\t\t\t\t\"CALUANGAN\",\n\t\t\t\t\t\t\t\t\"CAMASTILISAN\",\n\t\t\t\t\t\t\t\t\"CORAL NI BACAL\",\n\t\t\t\t\t\t\t\t\"CORAL NI LOPEZ (SUGOD)\",\n\t\t\t\t\t\t\t\t\"DACANLAO\",\n\t\t\t\t\t\t\t\t\"DILA\",\n\t\t\t\t\t\t\t\t\"LOMA\",\n\t\t\t\t\t\t\t\t\"LUMBANG CALZADA\",\n\t\t\t\t\t\t\t\t\"LUMBANG NA BATA\",\n\t\t\t\t\t\t\t\t\"LUMBANG NA MATANDA\",\n\t\t\t\t\t\t\t\t\"MADALUNOT\",\n\t\t\t\t\t\t\t\t\"MAKINA\",\n\t\t\t\t\t\t\t\t\"MATIPOK\",\n\t\t\t\t\t\t\t\t\"MUNTING CORAL\",\n\t\t\t\t\t\t\t\t\"NIYUGAN\",\n\t\t\t\t\t\t\t\t\"PANTAY\",\n\t\t\t\t\t\t\t\t\"PUTING BATO EAST\",\n\t\t\t\t\t\t\t\t\"PUTING BATO WEST\",\n\t\t\t\t\t\t\t\t\"PUTING KAHOY\",\n\t\t\t\t\t\t\t\t\"QUISUMBING\",\n\t\t\t\t\t\t\t\t\"SALONG\",\n\t\t\t\t\t\t\t\t\"SAN RAFAEL\",\n\t\t\t\t\t\t\t\t\"SINISIAN\",\n\t\t\t\t\t\t\t\t\"TAKLANG ANAK\",\n\t\t\t\t\t\t\t\t\"TALISAY\",\n\t\t\t\t\t\t\t\t\"TAMAYO\",\n\t\t\t\t\t\t\t\t\"TIMBAIN\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"CALATAGAN\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BAGONG SILANG\",\n\t\t\t\t\t\t\t\t\"BAHA\",\n\t\t\t\t\t\t\t\t\"BALIBAGO\",\n\t\t\t\t\t\t\t\t\"BALITOC\",\n\t\t\t\t\t\t\t\t\"BARANGAY 1 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 2 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 3 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 4 (POB.)\",\n\t\t\t\t\t\t\t\t\"BIGA\",\n\t\t\t\t\t\t\t\t\"BUCAL\",\n\t\t\t\t\t\t\t\t\"CARLOSA\",\n\t\t\t\t\t\t\t\t\"CARRETUNAN\",\n\t\t\t\t\t\t\t\t\"ENCARNACION\",\n\t\t\t\t\t\t\t\t\"GULOD\",\n\t\t\t\t\t\t\t\t\"HUKAY\",\n\t\t\t\t\t\t\t\t\"LUCSUHIN\",\n\t\t\t\t\t\t\t\t\"LUYA\",\n\t\t\t\t\t\t\t\t\"PARAISO\",\n\t\t\t\t\t\t\t\t\"QUILITISAN\",\n\t\t\t\t\t\t\t\t\"REAL\",\n\t\t\t\t\t\t\t\t\"SAMBUNGAN\",\n\t\t\t\t\t\t\t\t\"SANTA ANA\",\n\t\t\t\t\t\t\t\t\"TALIBAYOG\",\n\t\t\t\t\t\t\t\t\"TALISAY\",\n\t\t\t\t\t\t\t\t\"TANAGAN\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"CITY OF TANAUAN\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ALTURA BATA\",\n\t\t\t\t\t\t\t\t\"ALTURA MATANDA\",\n\t\t\t\t\t\t\t\t\"ALTURA-SOUTH\",\n\t\t\t\t\t\t\t\t\"AMBULONG\",\n\t\t\t\t\t\t\t\t\"BAGBAG\",\n\t\t\t\t\t\t\t\t\"BAGUMBAYAN\",\n\t\t\t\t\t\t\t\t\"BALELE\",\n\t\t\t\t\t\t\t\t\"BANADERO\",\n\t\t\t\t\t\t\t\t\"BANJO EAST\",\n\t\t\t\t\t\t\t\t\"BANJO LAUREL (BANJO WEST)\",\n\t\t\t\t\t\t\t\t\"BILOG-BILOG\",\n\t\t\t\t\t\t\t\t\"BOOT\",\n\t\t\t\t\t\t\t\t\"CALE\",\n\t\t\t\t\t\t\t\t\"DARASA\",\n\t\t\t\t\t\t\t\t\"GONZALES\",\n\t\t\t\t\t\t\t\t\"HIDALGO\",\n\t\t\t\t\t\t\t\t\"JANOPOL\",\n\t\t\t\t\t\t\t\t\"JANOPOL ORIENTAL\",\n\t\t\t\t\t\t\t\t\"LAUREL\",\n\t\t\t\t\t\t\t\t\"LUYOS\",\n\t\t\t\t\t\t\t\t\"MABINI\",\n\t\t\t\t\t\t\t\t\"MALAKING PULO\",\n\t\t\t\t\t\t\t\t\"MARIA PAZ\",\n\t\t\t\t\t\t\t\t\"MAUGAT\",\n\t\t\t\t\t\t\t\t\"MONTA\u00F1A (IK-IK)\",\n\t\t\t\t\t\t\t\t\"NATATAS\",\n\t\t\t\t\t\t\t\t\"PAGASPAS\",\n\t\t\t\t\t\t\t\t\"PANTAY BATA\",\n\t\t\t\t\t\t\t\t\"PANTAY MATANDA\",\n\t\t\t\t\t\t\t\t\"POBLACION BARANGAY 1\",\n\t\t\t\t\t\t\t\t\"POBLACION BARANGAY 2\",\n\t\t\t\t\t\t\t\t\"POBLACION BARANGAY 3\",\n\t\t\t\t\t\t\t\t\"POBLACION BARANGAY 4\",\n\t\t\t\t\t\t\t\t\"POBLACION BARANGAY 5\",\n\t\t\t\t\t\t\t\t\"POBLACION BARANGAY 6\",\n\t\t\t\t\t\t\t\t\"POBLACION BARANGAY 7\",\n\t\t\t\t\t\t\t\t\"SALA\",\n\t\t\t\t\t\t\t\t\"SAMBAT\",\n\t\t\t\t\t\t\t\t\"SAN JOSE\",\n\t\t\t\t\t\t\t\t\"SANTOL (DO\u00F1A JACOBA GARCIA)\",\n\t\t\t\t\t\t\t\t\"SANTOR\",\n\t\t\t\t\t\t\t\t\"SULPOC\",\n\t\t\t\t\t\t\t\t\"SUPLANG\",\n\t\t\t\t\t\t\t\t\"TALAGA\",\n\t\t\t\t\t\t\t\t\"TINURIK\",\n\t\t\t\t\t\t\t\t\"TRAPICHE\",\n\t\t\t\t\t\t\t\t\"ULANGO\",\n\t\t\t\t\t\t\t\t\"WAWA\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"CUENCA\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BALAGBAG\",\n\t\t\t\t\t\t\t\t\"BARANGAY 1 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 2 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 3 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 4 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 5 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 6 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 7 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 8 (POB.)\",\n\t\t\t\t\t\t\t\t\"BUNGAHAN\",\n\t\t\t\t\t\t\t\t\"CALUMAYIN\",\n\t\t\t\t\t\t\t\t\"DALIPIT EAST\",\n\t\t\t\t\t\t\t\t\"DALIPIT WEST\",\n\t\t\t\t\t\t\t\t\"DITA\",\n\t\t\t\t\t\t\t\t\"DON JUAN\",\n\t\t\t\t\t\t\t\t\"EMMANUEL\",\n\t\t\t\t\t\t\t\t\"IBABAO\",\n\t\t\t\t\t\t\t\t\"LABAC\",\n\t\t\t\t\t\t\t\t\"PINAGKAISAHAN\",\n\t\t\t\t\t\t\t\t\"SAN FELIPE\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"IBAAN\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BAGO\",\n\t\t\t\t\t\t\t\t\"BALANGA\",\n\t\t\t\t\t\t\t\t\"BUNGAHAN\",\n\t\t\t\t\t\t\t\t\"CALAMIAS\",\n\t\t\t\t\t\t\t\t\"CATANDALA\",\n\t\t\t\t\t\t\t\t\"COLIAT\",\n\t\t\t\t\t\t\t\t\"DAYAPAN\",\n\t\t\t\t\t\t\t\t\"LAPU-LAPU\",\n\t\t\t\t\t\t\t\t\"LUCSUHIN\",\n\t\t\t\t\t\t\t\t\"MABALOR\",\n\t\t\t\t\t\t\t\t\"MALAININ\",\n\t\t\t\t\t\t\t\t\"MATALA\",\n\t\t\t\t\t\t\t\t\"MUNTING-TUBIG\",\n\t\t\t\t\t\t\t\t\"PALINDAN\",\n\t\t\t\t\t\t\t\t\"PANGAO\",\n\t\t\t\t\t\t\t\t\"PANGHAYAAN\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"QUILO\",\n\t\t\t\t\t\t\t\t\"SABANG\",\n\t\t\t\t\t\t\t\t\"SALABAN I\",\n\t\t\t\t\t\t\t\t\"SALABAN II\",\n\t\t\t\t\t\t\t\t\"SAN AGUSTIN\",\n\t\t\t\t\t\t\t\t\"SANDALAN\",\n\t\t\t\t\t\t\t\t\"SANTO NI\u00F1O\",\n\t\t\t\t\t\t\t\t\"TALAIBON\",\n\t\t\t\t\t\t\t\t\"TULAY NA PATPAT\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"LAUREL\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"AS-IS\",\n\t\t\t\t\t\t\t\t\"BALAKILONG\",\n\t\t\t\t\t\t\t\t\"BARANGAY 1 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 2 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 3 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 4 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 5 (POB.)\",\n\t\t\t\t\t\t\t\t\"BERINAYAN\",\n\t\t\t\t\t\t\t\t\"BUGAAN EAST\",\n\t\t\t\t\t\t\t\t\"BUGAAN WEST\",\n\t\t\t\t\t\t\t\t\"BUSO-BUSO\",\n\t\t\t\t\t\t\t\t\"DAYAP ITAAS\",\n\t\t\t\t\t\t\t\t\"GULOD\",\n\t\t\t\t\t\t\t\t\"J. LEVISTE\",\n\t\t\t\t\t\t\t\t\"MOLINETE\",\n\t\t\t\t\t\t\t\t\"NIYUGAN\",\n\t\t\t\t\t\t\t\t\"PALIPARAN\",\n\t\t\t\t\t\t\t\t\"SAN GABRIEL\",\n\t\t\t\t\t\t\t\t\"SAN GREGORIO\",\n\t\t\t\t\t\t\t\t\"SANTA MARIA\",\n\t\t\t\t\t\t\t\t\"TICUB\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"LEMERY\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ANAK-DAGAT\",\n\t\t\t\t\t\t\t\t\"ARUMAHAN\",\n\t\t\t\t\t\t\t\t\"AYAO-IYAO\",\n\t\t\t\t\t\t\t\t\"BAGONG POOK\",\n\t\t\t\t\t\t\t\t\"BAGONG SIKAT\",\n\t\t\t\t\t\t\t\t\"BALANGA\",\n\t\t\t\t\t\t\t\t\"BUKAL\",\n\t\t\t\t\t\t\t\t\"CAHILAN I\",\n\t\t\t\t\t\t\t\t\"CAHILAN II\",\n\t\t\t\t\t\t\t\t\"DAYAPAN\",\n\t\t\t\t\t\t\t\t\"DISTRICT I (POB.)\",\n\t\t\t\t\t\t\t\t\"DISTRICT II (POB.)\",\n\t\t\t\t\t\t\t\t\"DISTRICT III (POB.)\",\n\t\t\t\t\t\t\t\t\"DISTRICT IV (POB.)\",\n\t\t\t\t\t\t\t\t\"DITA\",\n\t\t\t\t\t\t\t\t\"GULOD\",\n\t\t\t\t\t\t\t\t\"LUCKY\",\n\t\t\t\t\t\t\t\t\"MAGUIHAN\",\n\t\t\t\t\t\t\t\t\"MAHABANG DAHILIG\",\n\t\t\t\t\t\t\t\t\"MAHAYAHAY\",\n\t\t\t\t\t\t\t\t\"MAIGSING DAHILIG\",\n\t\t\t\t\t\t\t\t\"MALIGAYA\",\n\t\t\t\t\t\t\t\t\"MALINIS\",\n\t\t\t\t\t\t\t\t\"MASALISI\",\n\t\t\t\t\t\t\t\t\"MATAAS NA BAYAN\",\n\t\t\t\t\t\t\t\t\"MATINGAIN I\",\n\t\t\t\t\t\t\t\t\"MATINGAIN II\",\n\t\t\t\t\t\t\t\t\"MAYASANG\",\n\t\t\t\t\t\t\t\t\"NIUGAN\",\n\t\t\t\t\t\t\t\t\"NONONG CASTO\",\n\t\t\t\t\t\t\t\t\"PALANAS\",\n\t\t\t\t\t\t\t\t\"PAYAPA IBABA\",\n\t\t\t\t\t\t\t\t\"PAYAPA ILAYA\",\n\t\t\t\t\t\t\t\t\"RIZAL\",\n\t\t\t\t\t\t\t\t\"SAMBAL IBABA\",\n\t\t\t\t\t\t\t\t\"SAMBAL ILAYA\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO IBABA\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO ITAAS\",\n\t\t\t\t\t\t\t\t\"SANGALANG\",\n\t\t\t\t\t\t\t\t\"SINISIAN EAST\",\n\t\t\t\t\t\t\t\t\"SINISIAN WEST\",\n\t\t\t\t\t\t\t\t\"TALAGA\",\n\t\t\t\t\t\t\t\t\"TUBIGAN\",\n\t\t\t\t\t\t\t\t\"TUBUAN\",\n\t\t\t\t\t\t\t\t\"WAWA IBABA\",\n\t\t\t\t\t\t\t\t\"WAWA ILAYA\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"LIAN\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BAGONG POOK\",\n\t\t\t\t\t\t\t\t\"BALIBAGO\",\n\t\t\t\t\t\t\t\t\"BARANGAY 1 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 2 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 3 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 4 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 5 (POB.)\",\n\t\t\t\t\t\t\t\t\"BINUBUSAN\",\n\t\t\t\t\t\t\t\t\"BUNGAHAN\",\n\t\t\t\t\t\t\t\t\"CUMBA\",\n\t\t\t\t\t\t\t\t\"HUMAYINGAN\",\n\t\t\t\t\t\t\t\t\"KAPITO\",\n\t\t\t\t\t\t\t\t\"LUMANIAG\",\n\t\t\t\t\t\t\t\t\"LUYAHAN\",\n\t\t\t\t\t\t\t\t\"MALARUHATAN\",\n\t\t\t\t\t\t\t\t\"MATABUNGKAY\",\n\t\t\t\t\t\t\t\t\"PRENZA\",\n\t\t\t\t\t\t\t\t\"PUTING-KAHOY\",\n\t\t\t\t\t\t\t\t\"SAN DIEGO\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"LIPA CITY\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ADYA\",\n\t\t\t\t\t\t\t\t\"ANILAO\",\n\t\t\t\t\t\t\t\t\"ANILAO-LABAC\",\n\t\t\t\t\t\t\t\t\"ANTIPOLO DEL NORTE\",\n\t\t\t\t\t\t\t\t\"ANTIPOLO DEL SUR\",\n\t\t\t\t\t\t\t\t\"BAGONG POOK\",\n\t\t\t\t\t\t\t\t\"BALINTAWAK\",\n\t\t\t\t\t\t\t\t\"BANAYBANAY\",\n\t\t\t\t\t\t\t\t\"BARANGAY 12 (POB.)\",\n\t\t\t\t\t\t\t\t\"BOLBOK\",\n\t\t\t\t\t\t\t\t\"BUGTONG NA PULO\",\n\t\t\t\t\t\t\t\t\"BULACNIN\",\n\t\t\t\t\t\t\t\t\"BULAKLAKAN\",\n\t\t\t\t\t\t\t\t\"CALAMIAS\",\n\t\t\t\t\t\t\t\t\"CUMBA\",\n\t\t\t\t\t\t\t\t\"DAGATAN\",\n\t\t\t\t\t\t\t\t\"DUHATAN\",\n\t\t\t\t\t\t\t\t\"HALANG\",\n\t\t\t\t\t\t\t\t\"INOSLOBAN\",\n\t\t\t\t\t\t\t\t\"KAYUMANGGI\",\n\t\t\t\t\t\t\t\t\"LATAG\",\n\t\t\t\t\t\t\t\t\"LODLOD\",\n\t\t\t\t\t\t\t\t\"LUMBANG\",\n\t\t\t\t\t\t\t\t\"MABINI\",\n\t\t\t\t\t\t\t\t\"MALAGONLONG\",\n\t\t\t\t\t\t\t\t\"MALITLIT\",\n\t\t\t\t\t\t\t\t\"MARAUOY\",\n\t\t\t\t\t\t\t\t\"MATAAS NA LUPA\",\n\t\t\t\t\t\t\t\t\"MUNTING PULO\",\n\t\t\t\t\t\t\t\t\"PAGOLINGIN BATA\",\n\t\t\t\t\t\t\t\t\"PAGOLINGIN EAST\",\n\t\t\t\t\t\t\t\t\"PAGOLINGIN WEST\",\n\t\t\t\t\t\t\t\t\"PANGAO\",\n\t\t\t\t\t\t\t\t\"PINAGKAWITAN\",\n\t\t\t\t\t\t\t\t\"PINAGTONGULAN\",\n\t\t\t\t\t\t\t\t\"PLARIDEL\",\n\t\t\t\t\t\t\t\t\"POBLACION BARANGAY 1\",\n\t\t\t\t\t\t\t\t\"POBLACION BARANGAY 2\",\n\t\t\t\t\t\t\t\t\"POBLACION BARANGAY 3\",\n\t\t\t\t\t\t\t\t\"POBLACION BARANGAY 4\",\n\t\t\t\t\t\t\t\t\"POBLACION BARANGAY 5\",\n\t\t\t\t\t\t\t\t\"POBLACION BARANGAY 6\",\n\t\t\t\t\t\t\t\t\"POBLACION BARANGAY 7\",\n\t\t\t\t\t\t\t\t\"POBLACION BARANGAY 8\",\n\t\t\t\t\t\t\t\t\"POBLACION BARANGAY 9\",\n\t\t\t\t\t\t\t\t\"POBLACION BARANGAY 9-A\",\n\t\t\t\t\t\t\t\t\"POBLACION BARANGAY 10\",\n\t\t\t\t\t\t\t\t\"POBLACION BARANGAY 11\",\n\t\t\t\t\t\t\t\t\"PUSIL\",\n\t\t\t\t\t\t\t\t\"QUEZON\",\n\t\t\t\t\t\t\t\t\"RIZAL\",\n\t\t\t\t\t\t\t\t\"SABANG\",\n\t\t\t\t\t\t\t\t\"SAMPAGUITA\",\n\t\t\t\t\t\t\t\t\"SAN BENITO\",\n\t\t\t\t\t\t\t\t\"SAN CARLOS\",\n\t\t\t\t\t\t\t\t\"SAN CELESTINO\",\n\t\t\t\t\t\t\t\t\"SAN FRANCISCO\",\n\t\t\t\t\t\t\t\t\"SAN GUILLERMO\",\n\t\t\t\t\t\t\t\t\"SAN JOSE\",\n\t\t\t\t\t\t\t\t\"SAN LUCAS\",\n\t\t\t\t\t\t\t\t\"SAN SALVADOR\",\n\t\t\t\t\t\t\t\t\"SAN SEBASTIAN (BALAGBAG)\",\n\t\t\t\t\t\t\t\t\"SANTO NI\u00F1O\",\n\t\t\t\t\t\t\t\t\"SANTO TORIBIO\",\n\t\t\t\t\t\t\t\t\"SAPAC\",\n\t\t\t\t\t\t\t\t\"SICO\",\n\t\t\t\t\t\t\t\t\"TALISAY\",\n\t\t\t\t\t\t\t\t\"TAMBO\",\n\t\t\t\t\t\t\t\t\"TANGOB\",\n\t\t\t\t\t\t\t\t\"TANGUAY\",\n\t\t\t\t\t\t\t\t\"TIBIG\",\n\t\t\t\t\t\t\t\t\"TIPACAN\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"LOBO\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"APAR\",\n\t\t\t\t\t\t\t\t\"BALATBAT\",\n\t\t\t\t\t\t\t\t\"BALIBAGO\",\n\t\t\t\t\t\t\t\t\"BANALO\",\n\t\t\t\t\t\t\t\t\"BIGA\",\n\t\t\t\t\t\t\t\t\"BIGNAY\",\n\t\t\t\t\t\t\t\t\"CALO\",\n\t\t\t\t\t\t\t\t\"CALUMPIT\",\n\t\t\t\t\t\t\t\t\"FABRICA\",\n\t\t\t\t\t\t\t\t\"JAYBANGA\",\n\t\t\t\t\t\t\t\t\"LAGADLARIN\",\n\t\t\t\t\t\t\t\t\"MABILOG NA BUNDOK\",\n\t\t\t\t\t\t\t\t\"MALABRIGO\",\n\t\t\t\t\t\t\t\t\"MALALIM NA SANOG\",\n\t\t\t\t\t\t\t\t\"MALAPAD NA PARANG\",\n\t\t\t\t\t\t\t\t\"MASAGUITSIT\",\n\t\t\t\t\t\t\t\t\"NAGTALONGTONG\",\n\t\t\t\t\t\t\t\t\"NAGTOCTOC\",\n\t\t\t\t\t\t\t\t\"OLO-OLO\",\n\t\t\t\t\t\t\t\t\"PINAGHAWANAN\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"SAN MIGUEL\",\n\t\t\t\t\t\t\t\t\"SAN NICOLAS\",\n\t\t\t\t\t\t\t\t\"SAWANG\",\n\t\t\t\t\t\t\t\t\"SOLOC\",\n\t\t\t\t\t\t\t\t\"TAYUMAN\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"MABINI\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ANILAO EAST\",\n\t\t\t\t\t\t\t\t\"ANILAO PROPER\",\n\t\t\t\t\t\t\t\t\"BAGALANGIT\",\n\t\t\t\t\t\t\t\t\"BULACAN\",\n\t\t\t\t\t\t\t\t\"CALAMIAS\",\n\t\t\t\t\t\t\t\t\"ESTRELLA\",\n\t\t\t\t\t\t\t\t\"GASANG\",\n\t\t\t\t\t\t\t\t\"LAUREL\",\n\t\t\t\t\t\t\t\t\"LIGAYA\",\n\t\t\t\t\t\t\t\t\"MAINAGA\",\n\t\t\t\t\t\t\t\t\"MAINIT\",\n\t\t\t\t\t\t\t\t\"MAJUBEN\",\n\t\t\t\t\t\t\t\t\"MALIMATOC I\",\n\t\t\t\t\t\t\t\t\"MALIMATOC II\",\n\t\t\t\t\t\t\t\t\"NAG-IBA\",\n\t\t\t\t\t\t\t\t\"PILAHAN\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"PULANG LUPA\",\n\t\t\t\t\t\t\t\t\"PULONG ANAHAO\",\n\t\t\t\t\t\t\t\t\"PULONG BALIBAGUHAN\",\n\t\t\t\t\t\t\t\t\"PULONG NIOGAN\",\n\t\t\t\t\t\t\t\t\"SAGUING\",\n\t\t\t\t\t\t\t\t\"SAMPAGUITA\",\n\t\t\t\t\t\t\t\t\"SAN FRANCISCO\",\n\t\t\t\t\t\t\t\t\"SAN JOSE\",\n\t\t\t\t\t\t\t\t\"SAN JUAN\",\n\t\t\t\t\t\t\t\t\"SAN TEODORO\",\n\t\t\t\t\t\t\t\t\"SANTA ANA\",\n\t\t\t\t\t\t\t\t\"SANTA MESA\",\n\t\t\t\t\t\t\t\t\"SANTO NI\u00F1O\",\n\t\t\t\t\t\t\t\t\"SANTO TOMAS\",\n\t\t\t\t\t\t\t\t\"SOLO\",\n\t\t\t\t\t\t\t\t\"TALAGA EAST\",\n\t\t\t\t\t\t\t\t\"TALAGA PROPER\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"MALVAR\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BAGONG POOK\",\n\t\t\t\t\t\t\t\t\"BILUCAO (SAN ISIDRO WESTERN)\",\n\t\t\t\t\t\t\t\t\"BULIHAN\",\n\t\t\t\t\t\t\t\t\"LUTA DEL NORTE\",\n\t\t\t\t\t\t\t\t\"LUTA DEL SUR\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"SAN ANDRES\",\n\t\t\t\t\t\t\t\t\"SAN FERNANDO\",\n\t\t\t\t\t\t\t\t\"SAN GREGORIO\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO EAST\",\n\t\t\t\t\t\t\t\t\"SAN JUAN\",\n\t\t\t\t\t\t\t\t\"SAN PEDRO I (EASTERN)\",\n\t\t\t\t\t\t\t\t\"SAN PEDRO II (WESTERN)\",\n\t\t\t\t\t\t\t\t\"SAN PIOQUINTO\",\n\t\t\t\t\t\t\t\t\"SANTIAGO\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"MATAAS NA KAHOY\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BARANGAY II-A (POB.)\",\n\t\t\t\t\t\t\t\t\"BAYORBOR\",\n\t\t\t\t\t\t\t\t\"BUBUYAN\",\n\t\t\t\t\t\t\t\t\"CALINGATAN\",\n\t\t\t\t\t\t\t\t\"DISTRICT I (POB.)\",\n\t\t\t\t\t\t\t\t\"DISTRICT II (POB.)\",\n\t\t\t\t\t\t\t\t\"DISTRICT III (POB.)\",\n\t\t\t\t\t\t\t\t\"DISTRICT IV (POB.)\",\n\t\t\t\t\t\t\t\t\"KINALAGLAGAN\",\n\t\t\t\t\t\t\t\t\"LOOB\",\n\t\t\t\t\t\t\t\t\"LUMANG LIPA\",\n\t\t\t\t\t\t\t\t\"MANGGAHAN\",\n\t\t\t\t\t\t\t\t\"NANGKAAN\",\n\t\t\t\t\t\t\t\t\"SAN SEBASTIAN\",\n\t\t\t\t\t\t\t\t\"SANTOL\",\n\t\t\t\t\t\t\t\t\"UPA\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"NASUGBU\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"AGA\",\n\t\t\t\t\t\t\t\t\"BALAYTIGUI\",\n\t\t\t\t\t\t\t\t\"BANILAD\",\n\t\t\t\t\t\t\t\t\"BARANGAY 1 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 2 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 3 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 4 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 5 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 6 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 7 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 8 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 9 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 10 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 11 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 12 (POB.)\",\n\t\t\t\t\t\t\t\t\"BILARAN\",\n\t\t\t\t\t\t\t\t\"BUCANA\",\n\t\t\t\t\t\t\t\t\"BULIHAN\",\n\t\t\t\t\t\t\t\t\"BUNDUCAN\",\n\t\t\t\t\t\t\t\t\"BUTUCAN\",\n\t\t\t\t\t\t\t\t\"CALAYO\",\n\t\t\t\t\t\t\t\t\"CATANDAAN\",\n\t\t\t\t\t\t\t\t\"COGUNAN\",\n\t\t\t\t\t\t\t\t\"DAYAP\",\n\t\t\t\t\t\t\t\t\"KAYLAWAY\",\n\t\t\t\t\t\t\t\t\"KAYRILAW\",\n\t\t\t\t\t\t\t\t\"LATAG\",\n\t\t\t\t\t\t\t\t\"LOOC\",\n\t\t\t\t\t\t\t\t\"LUMBANGAN\",\n\t\t\t\t\t\t\t\t\"MALAPAD NA BATO\",\n\t\t\t\t\t\t\t\t\"MATAAS NA PULO\",\n\t\t\t\t\t\t\t\t\"MAUGAT\",\n\t\t\t\t\t\t\t\t\"MUNTING INDAN\",\n\t\t\t\t\t\t\t\t\"NATIPUAN\",\n\t\t\t\t\t\t\t\t\"PANTALAN\",\n\t\t\t\t\t\t\t\t\"PAPAYA\",\n\t\t\t\t\t\t\t\t\"PUTAT\",\n\t\t\t\t\t\t\t\t\"REPARO\",\n\t\t\t\t\t\t\t\t\"TALANGAN\",\n\t\t\t\t\t\t\t\t\"TUMALIM\",\n\t\t\t\t\t\t\t\t\"UTOD\",\n\t\t\t\t\t\t\t\t\"WAWA\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"PADRE GARCIA\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BANABA\",\n\t\t\t\t\t\t\t\t\"BANAYBANAY\",\n\t\t\t\t\t\t\t\t\"BAWI\",\n\t\t\t\t\t\t\t\t\"BUKAL\",\n\t\t\t\t\t\t\t\t\"CASTILLO\",\n\t\t\t\t\t\t\t\t\"CAWONGAN\",\n\t\t\t\t\t\t\t\t\"MANGGAS\",\n\t\t\t\t\t\t\t\t\"MAUGAT EAST\",\n\t\t\t\t\t\t\t\t\"MAUGAT WEST\",\n\t\t\t\t\t\t\t\t\"PANSOL\",\n\t\t\t\t\t\t\t\t\"PAYAPA\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"QUILO-QUILO NORTH\",\n\t\t\t\t\t\t\t\t\"QUILO-QUILO SOUTH\",\n\t\t\t\t\t\t\t\t\"SAN FELIPE\",\n\t\t\t\t\t\t\t\t\"SAN MIGUEL\",\n\t\t\t\t\t\t\t\t\"TAMAK\",\n\t\t\t\t\t\t\t\t\"TANGOB\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"ROSARIO\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ALUPAY\",\n\t\t\t\t\t\t\t\t\"ANTIPOLO\",\n\t\t\t\t\t\t\t\t\"BAGONG POOK\",\n\t\t\t\t\t\t\t\t\"BALIBAGO\",\n\t\t\t\t\t\t\t\t\"BARANGAY A (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY B (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY C (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY D (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY E (POB.)\",\n\t\t\t\t\t\t\t\t\"BAYAWANG\",\n\t\t\t\t\t\t\t\t\"BAYBAYIN\",\n\t\t\t\t\t\t\t\t\"BULIHAN\",\n\t\t\t\t\t\t\t\t\"CAHIGAM\",\n\t\t\t\t\t\t\t\t\"CALANTAS\",\n\t\t\t\t\t\t\t\t\"COLONGAN\",\n\t\t\t\t\t\t\t\t\"ITLUGAN\",\n\t\t\t\t\t\t\t\t\"LEVISTE (TUBAHAN)\",\n\t\t\t\t\t\t\t\t\"LUMBANGAN\",\n\t\t\t\t\t\t\t\t\"MAALAS-AS\",\n\t\t\t\t\t\t\t\t\"MABATO\",\n\t\t\t\t\t\t\t\t\"MABUNGA\",\n\t\t\t\t\t\t\t\t\"MACALAMCAM A\",\n\t\t\t\t\t\t\t\t\"MACALAMCAM B\",\n\t\t\t\t\t\t\t\t\"MALAYA\",\n\t\t\t\t\t\t\t\t\"MALIGAYA\",\n\t\t\t\t\t\t\t\t\"MARILAG\",\n\t\t\t\t\t\t\t\t\"MASAYA\",\n\t\t\t\t\t\t\t\t\"MATAMIS\",\n\t\t\t\t\t\t\t\t\"MAVALOR\",\n\t\t\t\t\t\t\t\t\"MAYURO\",\n\t\t\t\t\t\t\t\t\"NAMUCO\",\n\t\t\t\t\t\t\t\t\"NAMUNGA\",\n\t\t\t\t\t\t\t\t\"NASI\",\n\t\t\t\t\t\t\t\t\"NATU\",\n\t\t\t\t\t\t\t\t\"PALAKPAK\",\n\t\t\t\t\t\t\t\t\"PINAGSIBAAN\",\n\t\t\t\t\t\t\t\t\"PUTINGKAHOY\",\n\t\t\t\t\t\t\t\t\"QUILIB\",\n\t\t\t\t\t\t\t\t\"SALAO\",\n\t\t\t\t\t\t\t\t\"SAN CARLOS\",\n\t\t\t\t\t\t\t\t\"SAN IGNACIO\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO\",\n\t\t\t\t\t\t\t\t\"SAN JOSE\",\n\t\t\t\t\t\t\t\t\"SAN ROQUE\",\n\t\t\t\t\t\t\t\t\"SANTA CRUZ\",\n\t\t\t\t\t\t\t\t\"TIMBUGAN\",\n\t\t\t\t\t\t\t\t\"TIQUIWAN\",\n\t\t\t\t\t\t\t\t\"TULOS\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"SAN JOSE\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"AGUILA\",\n\t\t\t\t\t\t\t\t\"ANUS\",\n\t\t\t\t\t\t\t\t\"AYA\",\n\t\t\t\t\t\t\t\t\"BAGONG POOK\",\n\t\t\t\t\t\t\t\t\"BALAGTASIN\",\n\t\t\t\t\t\t\t\t\"BALAGTASIN I\",\n\t\t\t\t\t\t\t\t\"BANAYBANAY I\",\n\t\t\t\t\t\t\t\t\"BANAYBANAY II\",\n\t\t\t\t\t\t\t\t\"BIGAIN I\",\n\t\t\t\t\t\t\t\t\"BIGAIN II\",\n\t\t\t\t\t\t\t\t\"BIGAIN SOUTH\",\n\t\t\t\t\t\t\t\t\"CALANSAYAN\",\n\t\t\t\t\t\t\t\t\"DAGATAN\",\n\t\t\t\t\t\t\t\t\"DON LUIS\",\n\t\t\t\t\t\t\t\t\"GALAMAY-AMO\",\n\t\t\t\t\t\t\t\t\"LALAYAT\",\n\t\t\t\t\t\t\t\t\"LAPOLAPO I\",\n\t\t\t\t\t\t\t\t\"LAPOLAPO II\",\n\t\t\t\t\t\t\t\t\"LEPUTE\",\n\t\t\t\t\t\t\t\t\"LUMIL\",\n\t\t\t\t\t\t\t\t\"MOJON-TAMPOY\",\n\t\t\t\t\t\t\t\t\"NATUNUAN\",\n\t\t\t\t\t\t\t\t\"PALANCA\",\n\t\t\t\t\t\t\t\t\"PINAGTUNG-ULAN\",\n\t\t\t\t\t\t\t\t\"POBLACION BARANGAY I\",\n\t\t\t\t\t\t\t\t\"POBLACION BARANGAY II\",\n\t\t\t\t\t\t\t\t\"POBLACION BARANGAY III\",\n\t\t\t\t\t\t\t\t\"POBLACION BARANGAY IV\",\n\t\t\t\t\t\t\t\t\"SABANG\",\n\t\t\t\t\t\t\t\t\"SALABAN\",\n\t\t\t\t\t\t\t\t\"SANTO CRISTO\",\n\t\t\t\t\t\t\t\t\"TAYSAN\",\n\t\t\t\t\t\t\t\t\"TUGTUG\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"SAN JUAN\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ABUNG\",\n\t\t\t\t\t\t\t\t\"BALAGBAG\",\n\t\t\t\t\t\t\t\t\"BARUALTE\",\n\t\t\t\t\t\t\t\t\"BATAAN\",\n\t\t\t\t\t\t\t\t\"BUHAY NA SAPA\",\n\t\t\t\t\t\t\t\t\"BULSA\",\n\t\t\t\t\t\t\t\t\"CALICANTO\",\n\t\t\t\t\t\t\t\t\"CALITCALIT\",\n\t\t\t\t\t\t\t\t\"CALUBCUB I\",\n\t\t\t\t\t\t\t\t\"CALUBCUB II\",\n\t\t\t\t\t\t\t\t\"CATMON\",\n\t\t\t\t\t\t\t\t\"COLOCONTO\",\n\t\t\t\t\t\t\t\t\"ESCRIBANO\",\n\t\t\t\t\t\t\t\t\"HUGOM\",\n\t\t\t\t\t\t\t\t\"IMELDA (TUBOG)\",\n\t\t\t\t\t\t\t\t\"JANAOJANAO\",\n\t\t\t\t\t\t\t\t\"LAIYA-APLAYA\",\n\t\t\t\t\t\t\t\t\"LAIYA-IBABAO\",\n\t\t\t\t\t\t\t\t\"LIBATO\",\n\t\t\t\t\t\t\t\t\"LIPAHAN\",\n\t\t\t\t\t\t\t\t\"MABALANOY\",\n\t\t\t\t\t\t\t\t\"MARAYKIT\",\n\t\t\t\t\t\t\t\t\"MUZON\",\n\t\t\t\t\t\t\t\t\"NAGSAULAY\",\n\t\t\t\t\t\t\t\t\"PALAHANAN I\",\n\t\t\t\t\t\t\t\t\"PALAHANAN II\",\n\t\t\t\t\t\t\t\t\"PALINGOWAK\",\n\t\t\t\t\t\t\t\t\"PINAGBAYANAN\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"POCTOL\",\n\t\t\t\t\t\t\t\t\"PULANGBATO\",\n\t\t\t\t\t\t\t\t\"PUTINGBUHANGIN\",\n\t\t\t\t\t\t\t\t\"QUIPOT\",\n\t\t\t\t\t\t\t\t\"SAMPIRO\",\n\t\t\t\t\t\t\t\t\"SAPANGAN\",\n\t\t\t\t\t\t\t\t\"SICO I\",\n\t\t\t\t\t\t\t\t\"SICO II\",\n\t\t\t\t\t\t\t\t\"SUBUKIN\",\n\t\t\t\t\t\t\t\t\"TALAHIBAN I\",\n\t\t\t\t\t\t\t\t\"TALAHIBAN II\",\n\t\t\t\t\t\t\t\t\"TICALAN\",\n\t\t\t\t\t\t\t\t\"TIPAZ\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"SAN LUIS\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ABIACAO\",\n\t\t\t\t\t\t\t\t\"BAGONG TUBIG\",\n\t\t\t\t\t\t\t\t\"BALAGTASIN\",\n\t\t\t\t\t\t\t\t\"BALITE\",\n\t\t\t\t\t\t\t\t\"BANOYO\",\n\t\t\t\t\t\t\t\t\"BOBOY\",\n\t\t\t\t\t\t\t\t\"BONLIW\",\n\t\t\t\t\t\t\t\t\"CALUMPANG EAST\",\n\t\t\t\t\t\t\t\t\"CALUMPANG WEST\",\n\t\t\t\t\t\t\t\t\"DULANGAN\",\n\t\t\t\t\t\t\t\t\"DURUNGAO\",\n\t\t\t\t\t\t\t\t\"LOCLOC\",\n\t\t\t\t\t\t\t\t\"LUYA\",\n\t\t\t\t\t\t\t\t\"MAHABANG PARANG\",\n\t\t\t\t\t\t\t\t\"MANGGAHAN\",\n\t\t\t\t\t\t\t\t\"MUZON\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"SAN ANTONIO\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO\",\n\t\t\t\t\t\t\t\t\"SAN JOSE\",\n\t\t\t\t\t\t\t\t\"SAN MARTIN\",\n\t\t\t\t\t\t\t\t\"SANTA MONICA\",\n\t\t\t\t\t\t\t\t\"TALIBA\",\n\t\t\t\t\t\t\t\t\"TALON\",\n\t\t\t\t\t\t\t\t\"TEJERO\",\n\t\t\t\t\t\t\t\t\"TUNGAL\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"SAN NICOLAS\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ABELO\",\n\t\t\t\t\t\t\t\t\"ALAS-AS\",\n\t\t\t\t\t\t\t\t\"BALETE\",\n\t\t\t\t\t\t\t\t\"BALUK-BALUK\",\n\t\t\t\t\t\t\t\t\"BANCORO\",\n\t\t\t\t\t\t\t\t\"BANGIN\",\n\t\t\t\t\t\t\t\t\"CALANGAY\",\n\t\t\t\t\t\t\t\t\"HIPIT\",\n\t\t\t\t\t\t\t\t\"MAABUD NORTH\",\n\t\t\t\t\t\t\t\t\"MAABUD SOUTH\",\n\t\t\t\t\t\t\t\t\"MUNLAWIN\",\n\t\t\t\t\t\t\t\t\"PANSIPIT\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"PULANG-BATO\",\n\t\t\t\t\t\t\t\t\"SANTO NI\u00F1O\",\n\t\t\t\t\t\t\t\t\"SINTURISAN\",\n\t\t\t\t\t\t\t\t\"TAGUDTOD\",\n\t\t\t\t\t\t\t\t\"TALANG\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"SAN PASCUAL\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ALALUM\",\n\t\t\t\t\t\t\t\t\"ANTIPOLO\",\n\t\t\t\t\t\t\t\t\"BALIMBING\",\n\t\t\t\t\t\t\t\t\"BANABA\",\n\t\t\t\t\t\t\t\t\"BAYANAN\",\n\t\t\t\t\t\t\t\t\"DANGLAYAN\",\n\t\t\t\t\t\t\t\t\"DEL PILAR\",\n\t\t\t\t\t\t\t\t\"GELERANG KAWAYAN\",\n\t\t\t\t\t\t\t\t\"ILAT NORTH\",\n\t\t\t\t\t\t\t\t\"ILAT SOUTH\",\n\t\t\t\t\t\t\t\t\"KAINGIN\",\n\t\t\t\t\t\t\t\t\"LAUREL\",\n\t\t\t\t\t\t\t\t\"MALAKING POOK\",\n\t\t\t\t\t\t\t\t\"MATAAS NA LUPA\",\n\t\t\t\t\t\t\t\t\"NATUNUAN NORTH\",\n\t\t\t\t\t\t\t\t\"NATUNUAN SOUTH\",\n\t\t\t\t\t\t\t\t\"PADRE CASTILLO\",\n\t\t\t\t\t\t\t\t\"PALSAHINGIN\",\n\t\t\t\t\t\t\t\t\"PILA\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"POOK NI BANAL\",\n\t\t\t\t\t\t\t\t\"POOK NI KAPITAN\",\n\t\t\t\t\t\t\t\t\"RESPLANDOR\",\n\t\t\t\t\t\t\t\t\"SAMBAT\",\n\t\t\t\t\t\t\t\t\"SAN ANTONIO\",\n\t\t\t\t\t\t\t\t\"SAN MARIANO\",\n\t\t\t\t\t\t\t\t\"SAN MATEO\",\n\t\t\t\t\t\t\t\t\"SANTA ELENA\",\n\t\t\t\t\t\t\t\t\"SANTO NI\u00F1O\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"SANTA TERESITA\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ANTIPOLO\",\n\t\t\t\t\t\t\t\t\"BIHIS\",\n\t\t\t\t\t\t\t\t\"BUROL\",\n\t\t\t\t\t\t\t\t\"CALAYAAN\",\n\t\t\t\t\t\t\t\t\"CALUMALA\",\n\t\t\t\t\t\t\t\t\"CUTA EAST\",\n\t\t\t\t\t\t\t\t\"CUTANG CAWAYAN\",\n\t\t\t\t\t\t\t\t\"IRUKAN\",\n\t\t\t\t\t\t\t\t\"PACIFICO\",\n\t\t\t\t\t\t\t\t\"POBLACION I\",\n\t\t\t\t\t\t\t\t\"POBLACION II\",\n\t\t\t\t\t\t\t\t\"POBLACION III\",\n\t\t\t\t\t\t\t\t\"SAIMSIM\",\n\t\t\t\t\t\t\t\t\"SAMPA\",\n\t\t\t\t\t\t\t\t\"SINIPIAN\",\n\t\t\t\t\t\t\t\t\"TAMBO IBABA\",\n\t\t\t\t\t\t\t\t\"TAMBO ILAYA\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"SANTO TOMAS\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BARANGAY I (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY II (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY III (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY IV (POB.)\",\n\t\t\t\t\t\t\t\t\"SAN AGUSTIN\",\n\t\t\t\t\t\t\t\t\"SAN ANTONIO\",\n\t\t\t\t\t\t\t\t\"SAN BARTOLOME\",\n\t\t\t\t\t\t\t\t\"SAN FELIX\",\n\t\t\t\t\t\t\t\t\"SAN FERNANDO\",\n\t\t\t\t\t\t\t\t\"SAN FRANCISCO\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO NORTE\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO SUR\",\n\t\t\t\t\t\t\t\t\"SAN JOAQUIN\",\n\t\t\t\t\t\t\t\t\"SAN JOSE\",\n\t\t\t\t\t\t\t\t\"SAN JUAN\",\n\t\t\t\t\t\t\t\t\"SAN LUIS\",\n\t\t\t\t\t\t\t\t\"SAN MIGUEL\",\n\t\t\t\t\t\t\t\t\"SAN PABLO\",\n\t\t\t\t\t\t\t\t\"SAN PEDRO\",\n\t\t\t\t\t\t\t\t\"SAN RAFAEL\",\n\t\t\t\t\t\t\t\t\"SAN ROQUE\",\n\t\t\t\t\t\t\t\t\"SAN VICENTE\",\n\t\t\t\t\t\t\t\t\"SANTA ANA\",\n\t\t\t\t\t\t\t\t\"SANTA ANASTACIA\",\n\t\t\t\t\t\t\t\t\"SANTA CLARA\",\n\t\t\t\t\t\t\t\t\"SANTA CRUZ\",\n\t\t\t\t\t\t\t\t\"SANTA ELENA\",\n\t\t\t\t\t\t\t\t\"SANTA MARIA\",\n\t\t\t\t\t\t\t\t\"SANTA TERESITA\",\n\t\t\t\t\t\t\t\t\"SANTIAGO\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"TAAL\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"APACAY\",\n\t\t\t\t\t\t\t\t\"BALISONG\",\n\t\t\t\t\t\t\t\t\"BIHIS\",\n\t\t\t\t\t\t\t\t\"BOLBOK\",\n\t\t\t\t\t\t\t\t\"BULI\",\n\t\t\t\t\t\t\t\t\"BUTONG\",\n\t\t\t\t\t\t\t\t\"CARASUCHE\",\n\t\t\t\t\t\t\t\t\"CAWIT\",\n\t\t\t\t\t\t\t\t\"CAYSASAY\",\n\t\t\t\t\t\t\t\t\"CUBAMBA\",\n\t\t\t\t\t\t\t\t\"CULTIHAN\",\n\t\t\t\t\t\t\t\t\"GAHOL\",\n\t\t\t\t\t\t\t\t\"HALANG\",\n\t\t\t\t\t\t\t\t\"IBA\",\n\t\t\t\t\t\t\t\t\"ILOG\",\n\t\t\t\t\t\t\t\t\"IMAMAWO\",\n\t\t\t\t\t\t\t\t\"IPIL\",\n\t\t\t\t\t\t\t\t\"LAGUILE\",\n\t\t\t\t\t\t\t\t\"LATAG\",\n\t\t\t\t\t\t\t\t\"LUNTAL\",\n\t\t\t\t\t\t\t\t\"MAHABANG LODLOD\",\n\t\t\t\t\t\t\t\t\"NIOGAN\",\n\t\t\t\t\t\t\t\t\"PANSOL\",\n\t\t\t\t\t\t\t\t\"POBLACION 1\",\n\t\t\t\t\t\t\t\t\"POBLACION 2\",\n\t\t\t\t\t\t\t\t\"POBLACION 3\",\n\t\t\t\t\t\t\t\t\"POBLACION 4\",\n\t\t\t\t\t\t\t\t\"POBLACION 5\",\n\t\t\t\t\t\t\t\t\"POBLACION 6\",\n\t\t\t\t\t\t\t\t\"POBLACION 7\",\n\t\t\t\t\t\t\t\t\"POBLACION 8\",\n\t\t\t\t\t\t\t\t\"POBLACION 9\",\n\t\t\t\t\t\t\t\t\"POBLACION 10\",\n\t\t\t\t\t\t\t\t\"POBLACION 11\",\n\t\t\t\t\t\t\t\t\"POBLACION 12\",\n\t\t\t\t\t\t\t\t\"POBLACION 13\",\n\t\t\t\t\t\t\t\t\"POBLACION 14\",\n\t\t\t\t\t\t\t\t\"POOK\",\n\t\t\t\t\t\t\t\t\"SEIRAN\",\n\t\t\t\t\t\t\t\t\"TATLONG MARIA\",\n\t\t\t\t\t\t\t\t\"TIERRA ALTA\",\n\t\t\t\t\t\t\t\t\"TULO\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"TALISAY\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"AYA\",\n\t\t\t\t\t\t\t\t\"BALAS\",\n\t\t\t\t\t\t\t\t\"BANGA\",\n\t\t\t\t\t\t\t\t\"BUCO\",\n\t\t\t\t\t\t\t\t\"CALOOCAN\",\n\t\t\t\t\t\t\t\t\"LEYNES\",\n\t\t\t\t\t\t\t\t\"MIRANDA\",\n\t\t\t\t\t\t\t\t\"POBLACION BARANGAY 1\",\n\t\t\t\t\t\t\t\t\"POBLACION BARANGAY 2\",\n\t\t\t\t\t\t\t\t\"POBLACION BARANGAY 3\",\n\t\t\t\t\t\t\t\t\"POBLACION BARANGAY 4\",\n\t\t\t\t\t\t\t\t\"POBLACION BARANGAY 5\",\n\t\t\t\t\t\t\t\t\"POBLACION BARANGAY 6\",\n\t\t\t\t\t\t\t\t\"POBLACION BARANGAY 7\",\n\t\t\t\t\t\t\t\t\"POBLACION BARANGAY 8\",\n\t\t\t\t\t\t\t\t\"QUILING\",\n\t\t\t\t\t\t\t\t\"SAMPALOC\",\n\t\t\t\t\t\t\t\t\"SAN GUILLERMO\",\n\t\t\t\t\t\t\t\t\"SANTA MARIA\",\n\t\t\t\t\t\t\t\t\"TRANCA\",\n\t\t\t\t\t\t\t\t\"TUMAWAY\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"TAYSAN\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BACAO\",\n\t\t\t\t\t\t\t\t\"BILOGO\",\n\t\t\t\t\t\t\t\t\"BUKAL\",\n\t\t\t\t\t\t\t\t\"DAGATAN\",\n\t\t\t\t\t\t\t\t\"GUINHAWA\",\n\t\t\t\t\t\t\t\t\"LAUREL\",\n\t\t\t\t\t\t\t\t\"MABAYABAS\",\n\t\t\t\t\t\t\t\t\"MAHANADIONG\",\n\t\t\t\t\t\t\t\t\"MAPULO\",\n\t\t\t\t\t\t\t\t\"MATAAS NA LUPA\",\n\t\t\t\t\t\t\t\t\"PAG-ASA\",\n\t\t\t\t\t\t\t\t\"PANGHAYAAN\",\n\t\t\t\t\t\t\t\t\"PI\u00F1A\",\n\t\t\t\t\t\t\t\t\"PINAGBAYANAN\",\n\t\t\t\t\t\t\t\t\"POBLACION EAST\",\n\t\t\t\t\t\t\t\t\"POBLACION WEST\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO\",\n\t\t\t\t\t\t\t\t\"SAN MARCELINO\",\n\t\t\t\t\t\t\t\t\"SANTO NI\u00F1O\",\n\t\t\t\t\t\t\t\t\"TILAMBO\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"TINGLOY\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BARANGAY 13 (POBLACION 1)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 14 (POBLACION 2)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 15 (POBLACION 3)\",\n\t\t\t\t\t\t\t\t\"CORONA\",\n\t\t\t\t\t\t\t\t\"GAMAO\",\n\t\t\t\t\t\t\t\t\"MAKAWAYAN\",\n\t\t\t\t\t\t\t\t\"MARIKABAN\",\n\t\t\t\t\t\t\t\t\"PAPAYA\",\n\t\t\t\t\t\t\t\t\"PISA\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO\",\n\t\t\t\t\t\t\t\t\"SAN JOSE\",\n\t\t\t\t\t\t\t\t\"SAN JUAN\",\n\t\t\t\t\t\t\t\t\"SAN PEDRO\",\n\t\t\t\t\t\t\t\t\"SANTO TOMAS\",\n\t\t\t\t\t\t\t\t\"TALAHIB\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"TUY\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ACLE\",\n\t\t\t\t\t\t\t\t\"BAYUDBUD\",\n\t\t\t\t\t\t\t\t\"BOLBOC\",\n\t\t\t\t\t\t\t\t\"BURGOS (POB.)\",\n\t\t\t\t\t\t\t\t\"DALIMA\",\n\t\t\t\t\t\t\t\t\"DAO\",\n\t\t\t\t\t\t\t\t\"GUINHAWA\",\n\t\t\t\t\t\t\t\t\"LUMBANGAN\",\n\t\t\t\t\t\t\t\t\"LUNA (POB.)\",\n\t\t\t\t\t\t\t\t\"LUNTAL\",\n\t\t\t\t\t\t\t\t\"MAGAHIS\",\n\t\t\t\t\t\t\t\t\"MALIBU\",\n\t\t\t\t\t\t\t\t\"MATAYWANAC\",\n\t\t\t\t\t\t\t\t\"PALINCARO\",\n\t\t\t\t\t\t\t\t\"PUTOL\",\n\t\t\t\t\t\t\t\t\"RILLO (POB.)\",\n\t\t\t\t\t\t\t\t\"RIZAL (POB.)\",\n\t\t\t\t\t\t\t\t\"SABANG\",\n\t\t\t\t\t\t\t\t\"SAN JOSE\",\n\t\t\t\t\t\t\t\t\"TALON\",\n\t\t\t\t\t\t\t\t\"TOONG\",\n\t\t\t\t\t\t\t\t\"TUYON-TUYON\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"CAVITE\",\n\t\t\t\t\t\"cities\": [{\n\t\t\t\t\t\t\t\"name\": \"ALFONSO\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"AMUYONG\",\n\t\t\t\t\t\t\t\t\"BARANGAY I (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY II (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY III (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY IV (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY V (POB.)\",\n\t\t\t\t\t\t\t\t\"BILOG\",\n\t\t\t\t\t\t\t\t\"BUCK ESTATE\",\n\t\t\t\t\t\t\t\t\"ESPERANZA IBABA\",\n\t\t\t\t\t\t\t\t\"ESPERANZA ILAYA\",\n\t\t\t\t\t\t\t\t\"KAYSUYO\",\n\t\t\t\t\t\t\t\t\"KAYTITINGA I\",\n\t\t\t\t\t\t\t\t\"KAYTITINGA II\",\n\t\t\t\t\t\t\t\t\"KAYTITINGA III\",\n\t\t\t\t\t\t\t\t\"LUKSUHIN\",\n\t\t\t\t\t\t\t\t\"LUKSUHIN ILAYA\",\n\t\t\t\t\t\t\t\t\"MANGAS I\",\n\t\t\t\t\t\t\t\t\"MANGAS II\",\n\t\t\t\t\t\t\t\t\"MARAHAN I\",\n\t\t\t\t\t\t\t\t\"MARAHAN II\",\n\t\t\t\t\t\t\t\t\"MATAGBAK I\",\n\t\t\t\t\t\t\t\t\"MATAGBAK II\",\n\t\t\t\t\t\t\t\t\"PAJO\",\n\t\t\t\t\t\t\t\t\"PALUMLUM\",\n\t\t\t\t\t\t\t\t\"SANTA TERESA\",\n\t\t\t\t\t\t\t\t\"SIKAT\",\n\t\t\t\t\t\t\t\t\"SINALIW MALAKI\",\n\t\t\t\t\t\t\t\t\"SINALIW NA MUNTI\",\n\t\t\t\t\t\t\t\t\"SULSUGIN\",\n\t\t\t\t\t\t\t\t\"TAYWANAK IBABA\",\n\t\t\t\t\t\t\t\t\"TAYWANAK ILAYA\",\n\t\t\t\t\t\t\t\t\"UPLI\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"AMADEO\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BANAYBANAY\",\n\t\t\t\t\t\t\t\t\"BARANGAY I (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY II (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY III (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY IV (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY IX (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY V (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY VI (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY VII (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY VIII (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY X (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY XI (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY XII (POB.)\",\n\t\t\t\t\t\t\t\t\"BUCAL\",\n\t\t\t\t\t\t\t\t\"BUHO\",\n\t\t\t\t\t\t\t\t\"DAGATAN\",\n\t\t\t\t\t\t\t\t\"HALANG\",\n\t\t\t\t\t\t\t\t\"LOMA\",\n\t\t\t\t\t\t\t\t\"MAITIM I\",\n\t\t\t\t\t\t\t\t\"MAYMANGGA\",\n\t\t\t\t\t\t\t\t\"MINANTOK KANLURAN\",\n\t\t\t\t\t\t\t\t\"MINANTOK SILANGAN\",\n\t\t\t\t\t\t\t\t\"PANGIL\",\n\t\t\t\t\t\t\t\t\"SALABAN\",\n\t\t\t\t\t\t\t\t\"TALON\",\n\t\t\t\t\t\t\t\t\"TAMACAN\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"BACOOR\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ALIMA\",\n\t\t\t\t\t\t\t\t\"ANIBAN I\",\n\t\t\t\t\t\t\t\t\"ANIBAN II\",\n\t\t\t\t\t\t\t\t\"ANIBAN III\",\n\t\t\t\t\t\t\t\t\"ANIBAN IV\",\n\t\t\t\t\t\t\t\t\"ANIBAN V\",\n\t\t\t\t\t\t\t\t\"BANALO\",\n\t\t\t\t\t\t\t\t\"BAYANAN\",\n\t\t\t\t\t\t\t\t\"CAMPO SANTO\",\n\t\t\t\t\t\t\t\t\"DAANG BUKID\",\n\t\t\t\t\t\t\t\t\"DIGMAN\",\n\t\t\t\t\t\t\t\t\"DULONG BAYAN\",\n\t\t\t\t\t\t\t\t\"HABAY I\",\n\t\t\t\t\t\t\t\t\"HABAY II\",\n\t\t\t\t\t\t\t\t\"LIGAS I\",\n\t\t\t\t\t\t\t\t\"LIGAS II\",\n\t\t\t\t\t\t\t\t\"LIGAS III\",\n\t\t\t\t\t\t\t\t\"MABOLO I\",\n\t\t\t\t\t\t\t\t\"MABOLO II\",\n\t\t\t\t\t\t\t\t\"MABOLO III\",\n\t\t\t\t\t\t\t\t\"MALIKSI I\",\n\t\t\t\t\t\t\t\t\"MALIKSI II\",\n\t\t\t\t\t\t\t\t\"MALIKSI III\",\n\t\t\t\t\t\t\t\t\"MAMBOG I\",\n\t\t\t\t\t\t\t\t\"MAMBOG II\",\n\t\t\t\t\t\t\t\t\"MAMBOG III\",\n\t\t\t\t\t\t\t\t\"MAMBOG IV\",\n\t\t\t\t\t\t\t\t\"MAMBOG V\",\n\t\t\t\t\t\t\t\t\"MOLINO I\",\n\t\t\t\t\t\t\t\t\"MOLINO II\",\n\t\t\t\t\t\t\t\t\"MOLINO III\",\n\t\t\t\t\t\t\t\t\"MOLINO IV\",\n\t\t\t\t\t\t\t\t\"MOLINO V\",\n\t\t\t\t\t\t\t\t\"MOLINO VI\",\n\t\t\t\t\t\t\t\t\"MOLINO VII\",\n\t\t\t\t\t\t\t\t\"NIOG I\",\n\t\t\t\t\t\t\t\t\"NIOG II\",\n\t\t\t\t\t\t\t\t\"NIOG III\",\n\t\t\t\t\t\t\t\t\"P.F. ESPIRITU I (PANAPAAN)\",\n\t\t\t\t\t\t\t\t\"P.F. ESPIRITU II\",\n\t\t\t\t\t\t\t\t\"P.F. ESPIRITU III\",\n\t\t\t\t\t\t\t\t\"P.F. ESPIRITU IV\",\n\t\t\t\t\t\t\t\t\"P.F. ESPIRITU V\",\n\t\t\t\t\t\t\t\t\"P.F. ESPIRITU VI\",\n\t\t\t\t\t\t\t\t\"P.F. ESPIRITU VII\",\n\t\t\t\t\t\t\t\t\"P.F. ESPIRITU VIII\",\n\t\t\t\t\t\t\t\t\"QUEENS ROW CENTRAL\",\n\t\t\t\t\t\t\t\t\"QUEENS ROW EAST\",\n\t\t\t\t\t\t\t\t\"QUEENS ROW WEST\",\n\t\t\t\t\t\t\t\t\"REAL I\",\n\t\t\t\t\t\t\t\t\"REAL II\",\n\t\t\t\t\t\t\t\t\"SALINAS I\",\n\t\t\t\t\t\t\t\t\"SALINAS II\",\n\t\t\t\t\t\t\t\t\"SALINAS III\",\n\t\t\t\t\t\t\t\t\"SALINAS IV\",\n\t\t\t\t\t\t\t\t\"SAN NICOLAS I\",\n\t\t\t\t\t\t\t\t\"SAN NICOLAS II\",\n\t\t\t\t\t\t\t\t\"SAN NICOLAS III\",\n\t\t\t\t\t\t\t\t\"SINEGUELASAN\",\n\t\t\t\t\t\t\t\t\"TABING DAGAT\",\n\t\t\t\t\t\t\t\t\"TALABA I\",\n\t\t\t\t\t\t\t\t\"TALABA II\",\n\t\t\t\t\t\t\t\t\"TALABA III\",\n\t\t\t\t\t\t\t\t\"TALABA IV\",\n\t\t\t\t\t\t\t\t\"TALABA V\",\n\t\t\t\t\t\t\t\t\"TALABA VI\",\n\t\t\t\t\t\t\t\t\"TALABA VII\",\n\t\t\t\t\t\t\t\t\"ZAPOTE I\",\n\t\t\t\t\t\t\t\t\"ZAPOTE II\",\n\t\t\t\t\t\t\t\t\"ZAPOTE III\",\n\t\t\t\t\t\t\t\t\"ZAPOTE IV\",\n\t\t\t\t\t\t\t\t\"ZAPOTE V\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"CARMONA\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BANCAL\",\n\t\t\t\t\t\t\t\t\"BARANGAY 1 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 2 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 3 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 4 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 5 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 6 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 7 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 8 (POB.)\",\n\t\t\t\t\t\t\t\t\"CABILANG BAYBAY\",\n\t\t\t\t\t\t\t\t\"LANTIC\",\n\t\t\t\t\t\t\t\t\"MABUHAY\",\n\t\t\t\t\t\t\t\t\"MADUYA\",\n\t\t\t\t\t\t\t\t\"MILAGROSA\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"CAVITE CITY\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BARANGAY 1 (HEN. M. ALVAREZ)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 2 (C. TIRONA)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 3 (HEN. E. AGUINALDO)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 4 (HEN. M. TRIAS)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 5 (HEN. E. EVANGELISTA)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 6 (DIEGO SILANG)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 7 (KAPITAN KONG)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 8 (MANUEL S. ROJAS)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 9 (KANAWAY)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 10 (KINGFISHER)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 10-A (KINGFISHER-A)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 10-B (KINGFISHER-B)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 11 (LAWIN)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 12 (LOVE BIRD)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 13 (AGUILA)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 14 (LORO)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 15 (KILYAWAN)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 16 (MARTINES)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 17 (KALAPATI)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 18 (MAYA)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 19 (GEMINI)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 20 (VIRGO)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 21 (SCORPIO)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 22 (LEO)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 22-A (LEO A)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 23 (AQUARIUS)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 24 (LIBRA)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 25 (CAPRICORN)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 26 (CANCER)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 27 (SAGITARIUS)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 28 (TAURUS)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 29 (LAO-LAO)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 29-A (LAO-LAO A)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 30 (BID-BID)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 31 (MAYA-MAYA)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 32 (SALAY-SALAY)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 33 (BUWAN-BUWAN)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 34 (LAPU-LAPU)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 35 (HASA-HASA)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 36 (SAP-SAP)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 36-A (SAP-SAP A)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 37 (CADENA DE AMOR)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 37-A (CADENA DE AMOR A)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 38 (SAMPAGUITA)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 38-A (SAMPAGUITA A)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 39 (JASMIN)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 40 (GUMAMELA)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 41 (ROSAL)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 42 (PINAGBUKLOD)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 42-A (PINAGBUKLOD A)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 42-B (PINAGBUKLOD B)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 42-C (PINAGBUKLOD C)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 43 (PINAGPALA)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 44 (MALIGAYA)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 45 (KAUNLARAN)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 45-A (KAUNLARAN A)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 46 (SINAGTALA)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 47 (PAGKAKAISA)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 47-A (PAGKAKAISA A)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 47-B (PAGKAKAISA B)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 48 (NARRA)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 48-A (NARRA A)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 49 (AKASYA)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 49-A (AKASYA A)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 50 (KABALYERO)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 51 (KAMAGONG)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 52 (IPIL)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 53 (YAKAL)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 53-A (YAKAL A)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 53-B (YAKAL B)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 54 (PECHAY)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 54-A (PECHAY A)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 55 (AMPALAYA)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 56 (LABANOS)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 57 (REPOLYO)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 58 (PATOLA)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 58-A (PATOLA A)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 59 (SITAW)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 60 (LETSUGAS)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 61 (TALONG)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 61-A (TALONG A)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 62 (KANGKONG)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 62-A (KANGKONG A)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 62-B (KANGKONG B)\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"CITY OF DASMARINAS\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BUROL\",\n\t\t\t\t\t\t\t\t\"BUROL I\",\n\t\t\t\t\t\t\t\t\"BUROL II\",\n\t\t\t\t\t\t\t\t\"BUROL III\",\n\t\t\t\t\t\t\t\t\"DATU ESMAEL (BAGO-A-INGUD)\",\n\t\t\t\t\t\t\t\t\"EMMANUEL BERGADO I\",\n\t\t\t\t\t\t\t\t\"EMMANUEL BERGADO II\",\n\t\t\t\t\t\t\t\t\"FATIMA I\",\n\t\t\t\t\t\t\t\t\"FATIMA II\",\n\t\t\t\t\t\t\t\t\"FATIMA III\",\n\t\t\t\t\t\t\t\t\"H-2\",\n\t\t\t\t\t\t\t\t\"LANGKAAN I\",\n\t\t\t\t\t\t\t\t\"LANGKAAN II\",\n\t\t\t\t\t\t\t\t\"LUZVIMINDA I\",\n\t\t\t\t\t\t\t\t\"LUZVIMINDA II\",\n\t\t\t\t\t\t\t\t\"PALIPARAN I\",\n\t\t\t\t\t\t\t\t\"PALIPARAN II\",\n\t\t\t\t\t\t\t\t\"PALIPARAN III\",\n\t\t\t\t\t\t\t\t\"SABANG\",\n\t\t\t\t\t\t\t\t\"SAINT PETER I\",\n\t\t\t\t\t\t\t\t\"SAINT PETER II\",\n\t\t\t\t\t\t\t\t\"SALAWAG\",\n\t\t\t\t\t\t\t\t\"SALITRAN I\",\n\t\t\t\t\t\t\t\t\"SALITRAN II\",\n\t\t\t\t\t\t\t\t\"SALITRAN III\",\n\t\t\t\t\t\t\t\t\"SALITRAN IV\",\n\t\t\t\t\t\t\t\t\"SAMPALOC I\",\n\t\t\t\t\t\t\t\t\"SAMPALOC II\",\n\t\t\t\t\t\t\t\t\"SAMPALOC III\",\n\t\t\t\t\t\t\t\t\"SAMPALOC IV\",\n\t\t\t\t\t\t\t\t\"SAMPALOC V\",\n\t\t\t\t\t\t\t\t\"SAN AGUSTIN I\",\n\t\t\t\t\t\t\t\t\"SAN AGUSTIN II\",\n\t\t\t\t\t\t\t\t\"SAN AGUSTIN III\",\n\t\t\t\t\t\t\t\t\"SAN ANDRES I\",\n\t\t\t\t\t\t\t\t\"SAN ANDRES II\",\n\t\t\t\t\t\t\t\t\"SAN ANTONIO DE PADUA I\",\n\t\t\t\t\t\t\t\t\"SAN ANTONIO DE PADUA II\",\n\t\t\t\t\t\t\t\t\"SAN DIONISIO (BARANGAY 1)\",\n\t\t\t\t\t\t\t\t\"SAN ESTEBAN (BARANGAY 4)\",\n\t\t\t\t\t\t\t\t\"SAN FRANCISCO I\",\n\t\t\t\t\t\t\t\t\"SAN FRANCISCO II\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO LABRADOR I\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO LABRADOR II\",\n\t\t\t\t\t\t\t\t\"SAN JOSE\",\n\t\t\t\t\t\t\t\t\"SAN JUAN (SAN JUAN I)\",\n\t\t\t\t\t\t\t\t\"SAN LORENZO RUIZ I\",\n\t\t\t\t\t\t\t\t\"SAN LORENZO RUIZ II\",\n\t\t\t\t\t\t\t\t\"SAN LUIS I\",\n\t\t\t\t\t\t\t\t\"SAN LUIS II\",\n\t\t\t\t\t\t\t\t\"SAN MANUEL I\",\n\t\t\t\t\t\t\t\t\"SAN MANUEL II\",\n\t\t\t\t\t\t\t\t\"SAN MATEO\",\n\t\t\t\t\t\t\t\t\"SAN MIGUEL\",\n\t\t\t\t\t\t\t\t\"SAN MIGUEL II\",\n\t\t\t\t\t\t\t\t\"SAN NICOLAS I\",\n\t\t\t\t\t\t\t\t\"SAN NICOLAS II\",\n\t\t\t\t\t\t\t\t\"SAN ROQUE (STA. CRISTINA II)\",\n\t\t\t\t\t\t\t\t\"SAN SIMON (BARANGAY 7)\",\n\t\t\t\t\t\t\t\t\"SANTA CRISTINA I\",\n\t\t\t\t\t\t\t\t\"SANTA CRISTINA II\",\n\t\t\t\t\t\t\t\t\"SANTA CRUZ I\",\n\t\t\t\t\t\t\t\t\"SANTA CRUZ II\",\n\t\t\t\t\t\t\t\t\"SANTA FE\",\n\t\t\t\t\t\t\t\t\"SANTA LUCIA (SAN JUAN II)\",\n\t\t\t\t\t\t\t\t\"SANTA MARIA (BARANGAY 20)\",\n\t\t\t\t\t\t\t\t\"SANTO CRISTO (BARANGAY 3)\",\n\t\t\t\t\t\t\t\t\"SANTO NI\u00F1O I\",\n\t\t\t\t\t\t\t\t\"SANTO NI\u00F1O II\",\n\t\t\t\t\t\t\t\t\"VICTORIA REYES\",\n\t\t\t\t\t\t\t\t\"ZONE I (POB.)\",\n\t\t\t\t\t\t\t\t\"ZONE I-B\",\n\t\t\t\t\t\t\t\t\"ZONE II (POB.)\",\n\t\t\t\t\t\t\t\t\"ZONE III (POB.)\",\n\t\t\t\t\t\t\t\t\"ZONE IV (POB.)\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"GEN. MARIANO ALVAREZ\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ALDIANO OLAES\",\n\t\t\t\t\t\t\t\t\"BARANGAY 1 POBLACION (AREA I)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 2 POBLACION\",\n\t\t\t\t\t\t\t\t\"BARANGAY 3 POBLACION\",\n\t\t\t\t\t\t\t\t\"BARANGAY 4 POBLACION\",\n\t\t\t\t\t\t\t\t\"BARANGAY 5 POBLACION\",\n\t\t\t\t\t\t\t\t\"BENJAMIN TIRONA (AREA D)\",\n\t\t\t\t\t\t\t\t\"BERNARDO PULIDO (AREA H)\",\n\t\t\t\t\t\t\t\t\"EPIFANIO MALIA\",\n\t\t\t\t\t\t\t\t\"FIORELLO CARIMAG (AREA C)\",\n\t\t\t\t\t\t\t\t\"FRANCISCO DE CASTRO (SUNSHINE VILL.)\",\n\t\t\t\t\t\t\t\t\"FRANCISCO REYES\",\n\t\t\t\t\t\t\t\t\"GAVINO MADERAN\",\n\t\t\t\t\t\t\t\t\"GREGORIA DE JESUS\",\n\t\t\t\t\t\t\t\t\"INOCENCIO SALUD\",\n\t\t\t\t\t\t\t\t\"JACINTO LUMBRERAS\",\n\t\t\t\t\t\t\t\t\"KAPITAN KUA (AREA F)\",\n\t\t\t\t\t\t\t\t\"KORONEL JOSE P. ELISES (AREA E)\",\n\t\t\t\t\t\t\t\t\"MACARIO DACON\",\n\t\t\t\t\t\t\t\t\"MARCELINO MEMIJE\",\n\t\t\t\t\t\t\t\t\"NICOLASA VIRATA (SAN JOSE)\",\n\t\t\t\t\t\t\t\t\"PANTALEON GRANADOS (AREA G)\",\n\t\t\t\t\t\t\t\t\"RAMON CRUZ (AREA J)\",\n\t\t\t\t\t\t\t\t\"SAN GABRIEL (AREA K)\",\n\t\t\t\t\t\t\t\t\"SAN JOSE\",\n\t\t\t\t\t\t\t\t\"SEVERINO DE LAS ALAS\",\n\t\t\t\t\t\t\t\t\"TINIENTE TIAGO\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"GEN. EMILIO AGUINALDO\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"A. DALUSAG\",\n\t\t\t\t\t\t\t\t\"BATAS DAO\",\n\t\t\t\t\t\t\t\t\"CASTA\u00F1OS CERCA\",\n\t\t\t\t\t\t\t\t\"CASTA\u00F1OS LEJOS\",\n\t\t\t\t\t\t\t\t\"KABULUSAN\",\n\t\t\t\t\t\t\t\t\"KAYMISAS\",\n\t\t\t\t\t\t\t\t\"KAYPAABA\",\n\t\t\t\t\t\t\t\t\"LUMIPA\",\n\t\t\t\t\t\t\t\t\"NARVAEZ\",\n\t\t\t\t\t\t\t\t\"POBLACION I\",\n\t\t\t\t\t\t\t\t\"POBLACION II\",\n\t\t\t\t\t\t\t\t\"POBLACION III\",\n\t\t\t\t\t\t\t\t\"POBLACION IV\",\n\t\t\t\t\t\t\t\t\"TABORA\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"GENERAL TRIAS\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ALINGARO\",\n\t\t\t\t\t\t\t\t\"ARNALDO POB. (BGY. 7)\",\n\t\t\t\t\t\t\t\t\"BACAO I\",\n\t\t\t\t\t\t\t\t\"BACAO II\",\n\t\t\t\t\t\t\t\t\"BAGUMBAYAN POB. (BGY. 5)\",\n\t\t\t\t\t\t\t\t\"BICLATAN\",\n\t\t\t\t\t\t\t\t\"BUENAVISTA I\",\n\t\t\t\t\t\t\t\t\"BUENAVISTA II\",\n\t\t\t\t\t\t\t\t\"BUENAVISTA III\",\n\t\t\t\t\t\t\t\t\"CORREGIDOR POB. (BGY. 10)\",\n\t\t\t\t\t\t\t\t\"DULONG BAYAN POB. (BGY. 3)\",\n\t\t\t\t\t\t\t\t\"GOV. FERRER POB. (BGY. 1)\",\n\t\t\t\t\t\t\t\t\"JAVALERA\",\n\t\t\t\t\t\t\t\t\"MANGGAHAN\",\n\t\t\t\t\t\t\t\t\"NAVARRO\",\n\t\t\t\t\t\t\t\t\"NINETY SIXTH POB. (BGY. 8)\",\n\t\t\t\t\t\t\t\t\"PANUNGYANAN\",\n\t\t\t\t\t\t\t\t\"PASONG CAMACHILE I\",\n\t\t\t\t\t\t\t\t\"PASONG CAMACHILE II\",\n\t\t\t\t\t\t\t\t\"PASONG KAWAYAN I\",\n\t\t\t\t\t\t\t\t\"PASONG KAWAYAN II\",\n\t\t\t\t\t\t\t\t\"PINAGTIPUNAN\",\n\t\t\t\t\t\t\t\t\"PRINZA POB. (BGY. 9)\",\n\t\t\t\t\t\t\t\t\"SAMPALUCAN POB. (BGY. 2)\",\n\t\t\t\t\t\t\t\t\"SAN FRANCISCO\",\n\t\t\t\t\t\t\t\t\"SAN GABRIEL POB. (BGY. 4)\",\n\t\t\t\t\t\t\t\t\"SAN JUAN I\",\n\t\t\t\t\t\t\t\t\"SAN JUAN II\",\n\t\t\t\t\t\t\t\t\"SANTA CLARA\",\n\t\t\t\t\t\t\t\t\"SANTIAGO\",\n\t\t\t\t\t\t\t\t\"TAPIA\",\n\t\t\t\t\t\t\t\t\"TEJERO\",\n\t\t\t\t\t\t\t\t\"VIBORA POB. (BGY. 6)\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"IMUS\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ALAPAN I-A\",\n\t\t\t\t\t\t\t\t\"ALAPAN I-B\",\n\t\t\t\t\t\t\t\t\"ALAPAN I-C\",\n\t\t\t\t\t\t\t\t\"ALAPAN II-A\",\n\t\t\t\t\t\t\t\t\"ALAPAN II-B\",\n\t\t\t\t\t\t\t\t\"ANABU I-A\",\n\t\t\t\t\t\t\t\t\"ANABU I-B\",\n\t\t\t\t\t\t\t\t\"ANABU I-C\",\n\t\t\t\t\t\t\t\t\"ANABU I-D\",\n\t\t\t\t\t\t\t\t\"ANABU I-E\",\n\t\t\t\t\t\t\t\t\"ANABU I-F\",\n\t\t\t\t\t\t\t\t\"ANABU I-G\",\n\t\t\t\t\t\t\t\t\"ANABU II-A\",\n\t\t\t\t\t\t\t\t\"ANABU II-B\",\n\t\t\t\t\t\t\t\t\"ANABU II-C\",\n\t\t\t\t\t\t\t\t\"ANABU II-D\",\n\t\t\t\t\t\t\t\t\"ANABU II-E\",\n\t\t\t\t\t\t\t\t\"ANABU II-F\",\n\t\t\t\t\t\t\t\t\"BAGONG SILANG (BAHAYANG PAG-ASA)\",\n\t\t\t\t\t\t\t\t\"BAYAN LUMA I\",\n\t\t\t\t\t\t\t\t\"BAYAN LUMA II\",\n\t\t\t\t\t\t\t\t\"BAYAN LUMA III\",\n\t\t\t\t\t\t\t\t\"BAYAN LUMA IV\",\n\t\t\t\t\t\t\t\t\"BAYAN LUMA IX\",\n\t\t\t\t\t\t\t\t\"BAYAN LUMA V\",\n\t\t\t\t\t\t\t\t\"BAYAN LUMA VI\",\n\t\t\t\t\t\t\t\t\"BAYAN LUMA VII\",\n\t\t\t\t\t\t\t\t\"BAYAN LUMA VIII\",\n\t\t\t\t\t\t\t\t\"BUCANDALA I\",\n\t\t\t\t\t\t\t\t\"BUCANDALA II\",\n\t\t\t\t\t\t\t\t\"BUCANDALA III\",\n\t\t\t\t\t\t\t\t\"BUCANDALA IV\",\n\t\t\t\t\t\t\t\t\"BUCANDALA V\",\n\t\t\t\t\t\t\t\t\"BUHAY NA TUBIG\",\n\t\t\t\t\t\t\t\t\"CARSADANG BAGO I\",\n\t\t\t\t\t\t\t\t\"CARSADANG BAGO II\",\n\t\t\t\t\t\t\t\t\"MAGDALO\",\n\t\t\t\t\t\t\t\t\"MAHARLIKA\",\n\t\t\t\t\t\t\t\t\"MALAGASANG I-A\",\n\t\t\t\t\t\t\t\t\"MALAGASANG I-B\",\n\t\t\t\t\t\t\t\t\"MALAGASANG I-C\",\n\t\t\t\t\t\t\t\t\"MALAGASANG I-D\",\n\t\t\t\t\t\t\t\t\"MALAGASANG I-E\",\n\t\t\t\t\t\t\t\t\"MALAGASANG I-F\",\n\t\t\t\t\t\t\t\t\"MALAGASANG I-G\",\n\t\t\t\t\t\t\t\t\"MALAGASANG II-A\",\n\t\t\t\t\t\t\t\t\"MALAGASANG II-B\",\n\t\t\t\t\t\t\t\t\"MALAGASANG II-C\",\n\t\t\t\t\t\t\t\t\"MALAGASANG II-D\",\n\t\t\t\t\t\t\t\t\"MALAGASANG II-E\",\n\t\t\t\t\t\t\t\t\"MALAGASANG II-F\",\n\t\t\t\t\t\t\t\t\"MALAGASANG II-G\",\n\t\t\t\t\t\t\t\t\"MARIANO ESPELETA I\",\n\t\t\t\t\t\t\t\t\"MARIANO ESPELETA II\",\n\t\t\t\t\t\t\t\t\"MARIANO ESPELETA III\",\n\t\t\t\t\t\t\t\t\"MEDICION I-A\",\n\t\t\t\t\t\t\t\t\"MEDICION I-B\",\n\t\t\t\t\t\t\t\t\"MEDICION I-C\",\n\t\t\t\t\t\t\t\t\"MEDICION I-D\",\n\t\t\t\t\t\t\t\t\"MEDICION II-A\",\n\t\t\t\t\t\t\t\t\"MEDICION II-B\",\n\t\t\t\t\t\t\t\t\"MEDICION II-C\",\n\t\t\t\t\t\t\t\t\"MEDICION II-D\",\n\t\t\t\t\t\t\t\t\"MEDICION II-E\",\n\t\t\t\t\t\t\t\t\"MEDICION II-F\",\n\t\t\t\t\t\t\t\t\"PAG-ASA I\",\n\t\t\t\t\t\t\t\t\"PAG-ASA II\",\n\t\t\t\t\t\t\t\t\"PAG-ASA III\",\n\t\t\t\t\t\t\t\t\"PALICO I\",\n\t\t\t\t\t\t\t\t\"PALICO II\",\n\t\t\t\t\t\t\t\t\"PALICO III\",\n\t\t\t\t\t\t\t\t\"PALICO IV\",\n\t\t\t\t\t\t\t\t\"PASONG BUAYA I\",\n\t\t\t\t\t\t\t\t\"PASONG BUAYA II\",\n\t\t\t\t\t\t\t\t\"PINAGBUKLOD\",\n\t\t\t\t\t\t\t\t\"POBLACION I-A (POB.)\",\n\t\t\t\t\t\t\t\t\"POBLACION I-B\",\n\t\t\t\t\t\t\t\t\"POBLACION I-C\",\n\t\t\t\t\t\t\t\t\"POBLACION II-A (POB.)\",\n\t\t\t\t\t\t\t\t\"POBLACION II-B\",\n\t\t\t\t\t\t\t\t\"POBLACION III-A (POB.)\",\n\t\t\t\t\t\t\t\t\"POBLACION III-B\",\n\t\t\t\t\t\t\t\t\"POBLACION IV-A (POB.)\",\n\t\t\t\t\t\t\t\t\"POBLACION IV-B\",\n\t\t\t\t\t\t\t\t\"POBLACION IV-C\",\n\t\t\t\t\t\t\t\t\"POBLACION IV-D\",\n\t\t\t\t\t\t\t\t\"TANZANG LUMA I\",\n\t\t\t\t\t\t\t\t\"TANZANG LUMA II\",\n\t\t\t\t\t\t\t\t\"TANZANG LUMA III\",\n\t\t\t\t\t\t\t\t\"TANZANG LUMA IV (SOUTHERN CITY)\",\n\t\t\t\t\t\t\t\t\"TANZANG LUMA V\",\n\t\t\t\t\t\t\t\t\"TANZANG LUMA VI\",\n\t\t\t\t\t\t\t\t\"TOCLONG I-A\",\n\t\t\t\t\t\t\t\t\"TOCLONG I-B\",\n\t\t\t\t\t\t\t\t\"TOCLONG I-C\",\n\t\t\t\t\t\t\t\t\"TOCLONG II-A\",\n\t\t\t\t\t\t\t\t\"TOCLONG II-B\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"INDANG\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"AGUS-US\",\n\t\t\t\t\t\t\t\t\"ALULOD\",\n\t\t\t\t\t\t\t\t\"BANABA CERCA\",\n\t\t\t\t\t\t\t\t\"BANABA LEJOS\",\n\t\t\t\t\t\t\t\t\"BANCOD\",\n\t\t\t\t\t\t\t\t\"BARANGAY 1 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 2 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 3 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 4 (POB.)\",\n\t\t\t\t\t\t\t\t\"BUNA CERCA\",\n\t\t\t\t\t\t\t\t\"BUNA LEJOS I\",\n\t\t\t\t\t\t\t\t\"BUNA LEJOS II\",\n\t\t\t\t\t\t\t\t\"CALUMPANG CERCA\",\n\t\t\t\t\t\t\t\t\"CALUMPANG LEJOS I\",\n\t\t\t\t\t\t\t\t\"CARASUCHI\",\n\t\t\t\t\t\t\t\t\"DAINE I\",\n\t\t\t\t\t\t\t\t\"DAINE II\",\n\t\t\t\t\t\t\t\t\"GUYAM MALAKI\",\n\t\t\t\t\t\t\t\t\"GUYAM MUNTI\",\n\t\t\t\t\t\t\t\t\"HARASAN\",\n\t\t\t\t\t\t\t\t\"KAYQUIT I\",\n\t\t\t\t\t\t\t\t\"KAYQUIT II\",\n\t\t\t\t\t\t\t\t\"KAYQUIT III\",\n\t\t\t\t\t\t\t\t\"KAYTAMBOG\",\n\t\t\t\t\t\t\t\t\"KAYTAPOS\",\n\t\t\t\t\t\t\t\t\"LIMBON\",\n\t\t\t\t\t\t\t\t\"LUMAMPONG BALAGBAG\",\n\t\t\t\t\t\t\t\t\"LUMAMPONG HALAYHAY\",\n\t\t\t\t\t\t\t\t\"MAHABANGKAHOY CERCA\",\n\t\t\t\t\t\t\t\t\"MAHABANGKAHOY LEJOS\",\n\t\t\t\t\t\t\t\t\"MATAAS NA LUPA (CHECKPOINT)\",\n\t\t\t\t\t\t\t\t\"PULO\",\n\t\t\t\t\t\t\t\t\"TAMBO BALAGBAG\",\n\t\t\t\t\t\t\t\t\"TAMBO ILAYA\",\n\t\t\t\t\t\t\t\t\"TAMBO KULIT\",\n\t\t\t\t\t\t\t\t\"TAMBO MALAKI\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"KAWIT\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BALSAHAN-BISITA\",\n\t\t\t\t\t\t\t\t\"BATONG DALIG\",\n\t\t\t\t\t\t\t\t\"BINAKAYAN-APLAYA\",\n\t\t\t\t\t\t\t\t\"BINAKAYAN-KANLURAN\",\n\t\t\t\t\t\t\t\t\"CONGBALAY-LEGASPI\",\n\t\t\t\t\t\t\t\t\"GAHAK\",\n\t\t\t\t\t\t\t\t\"KAINGEN\",\n\t\t\t\t\t\t\t\t\"MAGDALO (PUTOL)\",\n\t\t\t\t\t\t\t\t\"MANGGAHAN-LAWIN\",\n\t\t\t\t\t\t\t\t\"MARULAS\",\n\t\t\t\t\t\t\t\t\"PANAMITAN\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"PULVORISTA\",\n\t\t\t\t\t\t\t\t\"SAMALA-MARQUEZ\",\n\t\t\t\t\t\t\t\t\"SAN SEBASTIAN\",\n\t\t\t\t\t\t\t\t\"SANTA ISABEL\",\n\t\t\t\t\t\t\t\t\"TABON I\",\n\t\t\t\t\t\t\t\t\"TABON II\",\n\t\t\t\t\t\t\t\t\"TABON III\",\n\t\t\t\t\t\t\t\t\"TOCLONG\",\n\t\t\t\t\t\t\t\t\"TRAMO-BANTAYAN\",\n\t\t\t\t\t\t\t\t\"WAKAS I\",\n\t\t\t\t\t\t\t\t\"WAKAS II\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"MAGALLANES\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BALIWAG\",\n\t\t\t\t\t\t\t\t\"BARANGAY 1 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 2 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 3 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 4 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 5 (POB.)\",\n\t\t\t\t\t\t\t\t\"BENDITA I\",\n\t\t\t\t\t\t\t\t\"BENDITA II\",\n\t\t\t\t\t\t\t\t\"CALUANGAN\",\n\t\t\t\t\t\t\t\t\"KABULUSAN\",\n\t\t\t\t\t\t\t\t\"MEDINA\",\n\t\t\t\t\t\t\t\t\"PACHECO\",\n\t\t\t\t\t\t\t\t\"RAMIREZ\",\n\t\t\t\t\t\t\t\t\"SAN AGUSTIN\",\n\t\t\t\t\t\t\t\t\"TUA\",\n\t\t\t\t\t\t\t\t\"URDANETA\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"MARAGONDON\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BUCAL I\",\n\t\t\t\t\t\t\t\t\"BUCAL II\",\n\t\t\t\t\t\t\t\t\"BUCAL III A\",\n\t\t\t\t\t\t\t\t\"BUCAL III B\",\n\t\t\t\t\t\t\t\t\"BUCAL IV A\",\n\t\t\t\t\t\t\t\t\"BUCAL IV B\",\n\t\t\t\t\t\t\t\t\"CAINGIN POB. (BARANGAY 3)\",\n\t\t\t\t\t\t\t\t\"GARITA I A\",\n\t\t\t\t\t\t\t\t\"GARITA I B\",\n\t\t\t\t\t\t\t\t\"LAYONG MABILOG\",\n\t\t\t\t\t\t\t\t\"MABATO\",\n\t\t\t\t\t\t\t\t\"PANTIHAN I (BALAYUNGAN)\",\n\t\t\t\t\t\t\t\t\"PANTIHAN II (SAGBAT)\",\n\t\t\t\t\t\t\t\t\"PANTIHAN III (POOK NA MUNTI)\",\n\t\t\t\t\t\t\t\t\"PANTIHAN IV (POOK NI SARA)\",\n\t\t\t\t\t\t\t\t\"PATUNGAN\",\n\t\t\t\t\t\t\t\t\"PINAGSANHAN I A\",\n\t\t\t\t\t\t\t\t\"PINAGSANHAN I B\",\n\t\t\t\t\t\t\t\t\"POBLACION I A\",\n\t\t\t\t\t\t\t\t\"POBLACION I B\",\n\t\t\t\t\t\t\t\t\"POBLACION II A\",\n\t\t\t\t\t\t\t\t\"POBLACION II B\",\n\t\t\t\t\t\t\t\t\"SAN MIGUEL I A (CAPUTATAN)\",\n\t\t\t\t\t\t\t\t\"SAN MIGUEL I B\",\n\t\t\t\t\t\t\t\t\"TALIPUSNGO\",\n\t\t\t\t\t\t\t\t\"TULAY KANLURAN\",\n\t\t\t\t\t\t\t\t\"TULAY SILANGAN\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"MENDEZ\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ANULING CERCA I\",\n\t\t\t\t\t\t\t\t\"ANULING CERCA II\",\n\t\t\t\t\t\t\t\t\"ANULING LEJOS I (ANULING)\",\n\t\t\t\t\t\t\t\t\"ANULING LEJOS II\",\n\t\t\t\t\t\t\t\t\"ASIS I\",\n\t\t\t\t\t\t\t\t\"ASIS II\",\n\t\t\t\t\t\t\t\t\"ASIS III\",\n\t\t\t\t\t\t\t\t\"BANAYAD\",\n\t\t\t\t\t\t\t\t\"BUKAL\",\n\t\t\t\t\t\t\t\t\"GALICIA I\",\n\t\t\t\t\t\t\t\t\"GALICIA II\",\n\t\t\t\t\t\t\t\t\"GALICIA III\",\n\t\t\t\t\t\t\t\t\"MIGUEL MOJICA\",\n\t\t\t\t\t\t\t\t\"PALOCPOC I\",\n\t\t\t\t\t\t\t\t\"PALOCPOC II\",\n\t\t\t\t\t\t\t\t\"PANUNGYAN I\",\n\t\t\t\t\t\t\t\t\"PANUNGYAN II\",\n\t\t\t\t\t\t\t\t\"POBLACION I (BARANGAY I)\",\n\t\t\t\t\t\t\t\t\"POBLACION II (BARANGAY II)\",\n\t\t\t\t\t\t\t\t\"POBLACION III (BARANGAY III)\",\n\t\t\t\t\t\t\t\t\"POBLACION IV (BARANGAY IV)\",\n\t\t\t\t\t\t\t\t\"POBLACION V (BARANGAY V)\",\n\t\t\t\t\t\t\t\t\"POBLACION VI (BARANGAY VI)\",\n\t\t\t\t\t\t\t\t\"POBLACION VII (BARANGAY VII)\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"NAIC\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BAGONG KARSADA\",\n\t\t\t\t\t\t\t\t\"BALSAHAN\",\n\t\t\t\t\t\t\t\t\"BANCAAN\",\n\t\t\t\t\t\t\t\t\"BUCANA MALAKI\",\n\t\t\t\t\t\t\t\t\"BUCANA SASAHAN\",\n\t\t\t\t\t\t\t\t\"CALUBCOB\",\n\t\t\t\t\t\t\t\t\"CAPT. C. NAZARENO (POB.)\",\n\t\t\t\t\t\t\t\t\"GOMEZ-ZAMORA (POB.)\",\n\t\t\t\t\t\t\t\t\"HALANG\",\n\t\t\t\t\t\t\t\t\"HUMBAC\",\n\t\t\t\t\t\t\t\t\"IBAYO ESTACION\",\n\t\t\t\t\t\t\t\t\"IBAYO SILANGAN\",\n\t\t\t\t\t\t\t\t\"KANLURAN\",\n\t\t\t\t\t\t\t\t\"LABAC\",\n\t\t\t\t\t\t\t\t\"LATORIA\",\n\t\t\t\t\t\t\t\t\"MABOLO\",\n\t\t\t\t\t\t\t\t\"MAKINA\",\n\t\t\t\t\t\t\t\t\"MALAINEN BAGO\",\n\t\t\t\t\t\t\t\t\"MALAINEN LUMA\",\n\t\t\t\t\t\t\t\t\"MOLINO\",\n\t\t\t\t\t\t\t\t\"MUNTING MAPINO\",\n\t\t\t\t\t\t\t\t\"MUZON\",\n\t\t\t\t\t\t\t\t\"PALANGUE 1\",\n\t\t\t\t\t\t\t\t\"PALANGUE 2 & 3\",\n\t\t\t\t\t\t\t\t\"SABANG\",\n\t\t\t\t\t\t\t\t\"SAN ROQUE\",\n\t\t\t\t\t\t\t\t\"SANTULAN\",\n\t\t\t\t\t\t\t\t\"SAPA\",\n\t\t\t\t\t\t\t\t\"TIMALAN BALSAHAN\",\n\t\t\t\t\t\t\t\t\"TIMALAN CONCEPCION\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"NOVELETA\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"MAGDIWANG\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"SALCEDO I\",\n\t\t\t\t\t\t\t\t\"SALCEDO II\",\n\t\t\t\t\t\t\t\t\"SAN ANTONIO I\",\n\t\t\t\t\t\t\t\t\"SAN ANTONIO II\",\n\t\t\t\t\t\t\t\t\"SAN JOSE I\",\n\t\t\t\t\t\t\t\t\"SAN JOSE II\",\n\t\t\t\t\t\t\t\t\"SAN JUAN I\",\n\t\t\t\t\t\t\t\t\"SAN JUAN II\",\n\t\t\t\t\t\t\t\t\"SAN RAFAEL I\",\n\t\t\t\t\t\t\t\t\"SAN RAFAEL II\",\n\t\t\t\t\t\t\t\t\"SAN RAFAEL III\",\n\t\t\t\t\t\t\t\t\"SAN RAFAEL IV\",\n\t\t\t\t\t\t\t\t\"SANTA ROSA I\",\n\t\t\t\t\t\t\t\t\"SANTA ROSA II\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"ROSARIO\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BAGBAG I\",\n\t\t\t\t\t\t\t\t\"BAGBAG II\",\n\t\t\t\t\t\t\t\t\"KANLURAN\",\n\t\t\t\t\t\t\t\t\"LIGTONG I\",\n\t\t\t\t\t\t\t\t\"LIGTONG II\",\n\t\t\t\t\t\t\t\t\"LIGTONG III\",\n\t\t\t\t\t\t\t\t\"LIGTONG IV\",\n\t\t\t\t\t\t\t\t\"MUZON I\",\n\t\t\t\t\t\t\t\t\"MUZON II\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"SAPA I\",\n\t\t\t\t\t\t\t\t\"SAPA II\",\n\t\t\t\t\t\t\t\t\"SAPA III\",\n\t\t\t\t\t\t\t\t\"SAPA IV\",\n\t\t\t\t\t\t\t\t\"SILANGAN I\",\n\t\t\t\t\t\t\t\t\"SILANGAN II\",\n\t\t\t\t\t\t\t\t\"TEJEROS CONVENTION\",\n\t\t\t\t\t\t\t\t\"WAWA I\",\n\t\t\t\t\t\t\t\t\"WAWA II\",\n\t\t\t\t\t\t\t\t\"WAWA III\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"SILANG\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ACACIA\",\n\t\t\t\t\t\t\t\t\"ADLAS\",\n\t\t\t\t\t\t\t\t\"ANAHAW I\",\n\t\t\t\t\t\t\t\t\"ANAHAW II\",\n\t\t\t\t\t\t\t\t\"BALITE I\",\n\t\t\t\t\t\t\t\t\"BALITE II\",\n\t\t\t\t\t\t\t\t\"BALUBAD\",\n\t\t\t\t\t\t\t\t\"BANABA\",\n\t\t\t\t\t\t\t\t\"BARANGAY I (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY II (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY III (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY IV (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY V (POB.)\",\n\t\t\t\t\t\t\t\t\"BATAS\",\n\t\t\t\t\t\t\t\t\"BIGA I\",\n\t\t\t\t\t\t\t\t\"BIGA II\",\n\t\t\t\t\t\t\t\t\"BILUSO\",\n\t\t\t\t\t\t\t\t\"BUCAL\",\n\t\t\t\t\t\t\t\t\"BUHO\",\n\t\t\t\t\t\t\t\t\"BULIHAN\",\n\t\t\t\t\t\t\t\t\"CABANGAAN\",\n\t\t\t\t\t\t\t\t\"CARMEN\",\n\t\t\t\t\t\t\t\t\"HOYO\",\n\t\t\t\t\t\t\t\t\"HUKAY\",\n\t\t\t\t\t\t\t\t\"IBA\",\n\t\t\t\t\t\t\t\t\"INCHICAN\",\n\t\t\t\t\t\t\t\t\"IPIL I\",\n\t\t\t\t\t\t\t\t\"IPIL II\",\n\t\t\t\t\t\t\t\t\"KALUBKOB\",\n\t\t\t\t\t\t\t\t\"KAONG\",\n\t\t\t\t\t\t\t\t\"LALAAN I\",\n\t\t\t\t\t\t\t\t\"LALAAN II\",\n\t\t\t\t\t\t\t\t\"LITLIT\",\n\t\t\t\t\t\t\t\t\"LUCSUHIN\",\n\t\t\t\t\t\t\t\t\"LUMIL\",\n\t\t\t\t\t\t\t\t\"MAGUYAM\",\n\t\t\t\t\t\t\t\t\"MALABAG\",\n\t\t\t\t\t\t\t\t\"MALAKING TATYAO\",\n\t\t\t\t\t\t\t\t\"MATAAS NA BUROL\",\n\t\t\t\t\t\t\t\t\"MUNTING ILOG\",\n\t\t\t\t\t\t\t\t\"NARRA I\",\n\t\t\t\t\t\t\t\t\"NARRA II\",\n\t\t\t\t\t\t\t\t\"NARRA III\",\n\t\t\t\t\t\t\t\t\"PALIGAWAN\",\n\t\t\t\t\t\t\t\t\"PASONG LANGKA\",\n\t\t\t\t\t\t\t\t\"POOC I\",\n\t\t\t\t\t\t\t\t\"POOC II\",\n\t\t\t\t\t\t\t\t\"PULONG BUNGA\",\n\t\t\t\t\t\t\t\t\"PULONG SAGING\",\n\t\t\t\t\t\t\t\t\"PUTING KAHOY\",\n\t\t\t\t\t\t\t\t\"SABUTAN\",\n\t\t\t\t\t\t\t\t\"SAN MIGUEL I\",\n\t\t\t\t\t\t\t\t\"SAN MIGUEL II\",\n\t\t\t\t\t\t\t\t\"SAN VICENTE I\",\n\t\t\t\t\t\t\t\t\"SAN VICENTE II\",\n\t\t\t\t\t\t\t\t\"SANTOL\",\n\t\t\t\t\t\t\t\t\"TARTARIA\",\n\t\t\t\t\t\t\t\t\"TIBIG\",\n\t\t\t\t\t\t\t\t\"TOLEDO\",\n\t\t\t\t\t\t\t\t\"TUBUAN I\",\n\t\t\t\t\t\t\t\t\"TUBUAN II\",\n\t\t\t\t\t\t\t\t\"TUBUAN III\",\n\t\t\t\t\t\t\t\t\"ULAT\",\n\t\t\t\t\t\t\t\t\"YAKAL\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"TAGAYTAY CITY\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ASISAN\",\n\t\t\t\t\t\t\t\t\"BAGONG TUBIG\",\n\t\t\t\t\t\t\t\t\"CALABUSO (CALABUSO SOUTH & NORTH)\",\n\t\t\t\t\t\t\t\t\"DAPDAP EAST\",\n\t\t\t\t\t\t\t\t\"DAPDAP WEST\",\n\t\t\t\t\t\t\t\t\"FRANCISCO (SAN FRANCISCO)\",\n\t\t\t\t\t\t\t\t\"GUINHAWA NORTH\",\n\t\t\t\t\t\t\t\t\"GUINHAWA SOUTH\",\n\t\t\t\t\t\t\t\t\"IRUHIN EAST\",\n\t\t\t\t\t\t\t\t\"IRUHIN SOUTH\",\n\t\t\t\t\t\t\t\t\"IRUHIN WEST\",\n\t\t\t\t\t\t\t\t\"KAYBAGAL EAST\",\n\t\t\t\t\t\t\t\t\"KAYBAGAL NORTH\",\n\t\t\t\t\t\t\t\t\"KAYBAGAL SOUTH (POB.)\",\n\t\t\t\t\t\t\t\t\"MAG-ASAWANG ILAT\",\n\t\t\t\t\t\t\t\t\"MAHARLIKA EAST\",\n\t\t\t\t\t\t\t\t\"MAHARLIKA WEST\",\n\t\t\t\t\t\t\t\t\"MAITIM 2ND CENTRAL\",\n\t\t\t\t\t\t\t\t\"MAITIM 2ND EAST\",\n\t\t\t\t\t\t\t\t\"MAITIM 2ND WEST\",\n\t\t\t\t\t\t\t\t\"MENDEZ CROSSING EAST\",\n\t\t\t\t\t\t\t\t\"MENDEZ CROSSING WEST\",\n\t\t\t\t\t\t\t\t\"NEOGAN\",\n\t\t\t\t\t\t\t\t\"PATUTONG MALAKI NORTH\",\n\t\t\t\t\t\t\t\t\"PATUTONG MALAKI SOUTH\",\n\t\t\t\t\t\t\t\t\"SAMBONG\",\n\t\t\t\t\t\t\t\t\"SAN JOSE\",\n\t\t\t\t\t\t\t\t\"SILANG JUNCTION NORTH\",\n\t\t\t\t\t\t\t\t\"SILANG JUNCTION SOUTH\",\n\t\t\t\t\t\t\t\t\"SUNGAY NORTH\",\n\t\t\t\t\t\t\t\t\"SUNGAY SOUTH\",\n\t\t\t\t\t\t\t\t\"TOLENTINO EAST\",\n\t\t\t\t\t\t\t\t\"TOLENTINO WEST\",\n\t\t\t\t\t\t\t\t\"ZAMBAL\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"TANZA\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"AMAYA I\",\n\t\t\t\t\t\t\t\t\"AMAYA II\",\n\t\t\t\t\t\t\t\t\"AMAYA III\",\n\t\t\t\t\t\t\t\t\"AMAYA IV\",\n\t\t\t\t\t\t\t\t\"AMAYA V\",\n\t\t\t\t\t\t\t\t\"AMAYA VI\",\n\t\t\t\t\t\t\t\t\"AMAYA VII\",\n\t\t\t\t\t\t\t\t\"BAGTAS\",\n\t\t\t\t\t\t\t\t\"BARANGAY I (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY II (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY III (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY IV (POB.)\",\n\t\t\t\t\t\t\t\t\"BIGA\",\n\t\t\t\t\t\t\t\t\"BIWAS\",\n\t\t\t\t\t\t\t\t\"BUCAL\",\n\t\t\t\t\t\t\t\t\"BUNGA\",\n\t\t\t\t\t\t\t\t\"CALIBUYO\",\n\t\t\t\t\t\t\t\t\"CAPIPISA\",\n\t\t\t\t\t\t\t\t\"DAANG AMAYA I\",\n\t\t\t\t\t\t\t\t\"DAANG AMAYA II\",\n\t\t\t\t\t\t\t\t\"DAANG AMAYA III\",\n\t\t\t\t\t\t\t\t\"HALAYHAY\",\n\t\t\t\t\t\t\t\t\"JULUGAN I\",\n\t\t\t\t\t\t\t\t\"JULUGAN II\",\n\t\t\t\t\t\t\t\t\"JULUGAN III\",\n\t\t\t\t\t\t\t\t\"JULUGAN IV\",\n\t\t\t\t\t\t\t\t\"JULUGAN V\",\n\t\t\t\t\t\t\t\t\"JULUGAN VI\",\n\t\t\t\t\t\t\t\t\"JULUGAN VII\",\n\t\t\t\t\t\t\t\t\"JULUGAN VIII\",\n\t\t\t\t\t\t\t\t\"LAMBINGAN\",\n\t\t\t\t\t\t\t\t\"MULAWIN\",\n\t\t\t\t\t\t\t\t\"PARADAHAN I\",\n\t\t\t\t\t\t\t\t\"PARADAHAN II\",\n\t\t\t\t\t\t\t\t\"PUNTA I\",\n\t\t\t\t\t\t\t\t\"PUNTA II\",\n\t\t\t\t\t\t\t\t\"SAHUD ULAN\",\n\t\t\t\t\t\t\t\t\"SANJA MAYOR\",\n\t\t\t\t\t\t\t\t\"SANTOL\",\n\t\t\t\t\t\t\t\t\"TANAUAN\",\n\t\t\t\t\t\t\t\t\"TRES CRUSES\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"TERNATE\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BUCANA\",\n\t\t\t\t\t\t\t\t\"POBLACION I (BARANGAY I)\",\n\t\t\t\t\t\t\t\t\"POBLACION I A\",\n\t\t\t\t\t\t\t\t\"POBLACION II (BARANGAY II)\",\n\t\t\t\t\t\t\t\t\"POBLACION III (BARANGAY III)\",\n\t\t\t\t\t\t\t\t\"SAN JOSE\",\n\t\t\t\t\t\t\t\t\"SAN JUAN I\",\n\t\t\t\t\t\t\t\t\"SAN JUAN II\",\n\t\t\t\t\t\t\t\t\"SAPANG I\",\n\t\t\t\t\t\t\t\t\"SAPANG II\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"TRECE MARTIRES CITY\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"AGUADO (PISCAL MUNDO)\",\n\t\t\t\t\t\t\t\t\"CABEZAS\",\n\t\t\t\t\t\t\t\t\"CABUCO\",\n\t\t\t\t\t\t\t\t\"CONCHU (LAGUNDIAN)\",\n\t\t\t\t\t\t\t\t\"DE OCAMPO\",\n\t\t\t\t\t\t\t\t\"GREGORIO (ALIANG)\",\n\t\t\t\t\t\t\t\t\"INOCENCIO (B. POOK)\",\n\t\t\t\t\t\t\t\t\"LALLANA\",\n\t\t\t\t\t\t\t\t\"LAPIDARIO (BAYOG)\",\n\t\t\t\t\t\t\t\t\"LUCIANO (BITANGAN)\",\n\t\t\t\t\t\t\t\t\"OSORIO\",\n\t\t\t\t\t\t\t\t\"PEREZ (LUCBANAN)\",\n\t\t\t\t\t\t\t\t\"SAN AGUSTIN (POB.)\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"LAGUNA\",\n\t\t\t\t\t\"cities\": [{\n\t\t\t\t\t\t\t\"name\": \"ALAMINOS\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BARANGAY I (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY II (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY III (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY IV (POB.)\",\n\t\t\t\t\t\t\t\t\"DEL CARMEN\",\n\t\t\t\t\t\t\t\t\"PALMA\",\n\t\t\t\t\t\t\t\t\"SAN AGUSTIN\",\n\t\t\t\t\t\t\t\t\"SAN ANDRES\",\n\t\t\t\t\t\t\t\t\"SAN BENITO\",\n\t\t\t\t\t\t\t\t\"SAN GREGORIO\",\n\t\t\t\t\t\t\t\t\"SAN ILDEFONSO\",\n\t\t\t\t\t\t\t\t\"SAN JUAN\",\n\t\t\t\t\t\t\t\t\"SAN MIGUEL\",\n\t\t\t\t\t\t\t\t\"SAN ROQUE\",\n\t\t\t\t\t\t\t\t\"SANTA ROSA\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"BAY\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BITIN\",\n\t\t\t\t\t\t\t\t\"CALO\",\n\t\t\t\t\t\t\t\t\"DILA\",\n\t\t\t\t\t\t\t\t\"MAITIM\",\n\t\t\t\t\t\t\t\t\"MASAYA\",\n\t\t\t\t\t\t\t\t\"PACIANO RIZAL\",\n\t\t\t\t\t\t\t\t\"PUYPUY\",\n\t\t\t\t\t\t\t\t\"SAN AGUSTIN (POB.)\",\n\t\t\t\t\t\t\t\t\"SAN ANTONIO\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO\",\n\t\t\t\t\t\t\t\t\"SAN NICOLAS (POB.)\",\n\t\t\t\t\t\t\t\t\"SANTA CRUZ\",\n\t\t\t\t\t\t\t\t\"SANTO DOMINGO\",\n\t\t\t\t\t\t\t\t\"TAGUMPAY\",\n\t\t\t\t\t\t\t\t\"TRANCA\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"CABUYAO\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BACLARAN\",\n\t\t\t\t\t\t\t\t\"BANAYBANAY\",\n\t\t\t\t\t\t\t\t\"BANLIC\",\n\t\t\t\t\t\t\t\t\"BARANGAY DOS (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY TRES (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY UNO (POB.)\",\n\t\t\t\t\t\t\t\t\"BIGAA\",\n\t\t\t\t\t\t\t\t\"BUTONG\",\n\t\t\t\t\t\t\t\t\"CASILE\",\n\t\t\t\t\t\t\t\t\"DIEZMO\",\n\t\t\t\t\t\t\t\t\"GULOD\",\n\t\t\t\t\t\t\t\t\"MAMATID\",\n\t\t\t\t\t\t\t\t\"MARINIG\",\n\t\t\t\t\t\t\t\t\"NIUGAN\",\n\t\t\t\t\t\t\t\t\"PITTLAND\",\n\t\t\t\t\t\t\t\t\"PULO\",\n\t\t\t\t\t\t\t\t\"SALA\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"CALAUAN\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BALAYHANGIN\",\n\t\t\t\t\t\t\t\t\"BANGYAS\",\n\t\t\t\t\t\t\t\t\"DAYAP\",\n\t\t\t\t\t\t\t\t\"HANGGAN\",\n\t\t\t\t\t\t\t\t\"IMOK\",\n\t\t\t\t\t\t\t\t\"KANLURAN (POB.)\",\n\t\t\t\t\t\t\t\t\"LAMOT 1\",\n\t\t\t\t\t\t\t\t\"LAMOT 2\",\n\t\t\t\t\t\t\t\t\"LIMAO\",\n\t\t\t\t\t\t\t\t\"MABACAN\",\n\t\t\t\t\t\t\t\t\"MASIIT\",\n\t\t\t\t\t\t\t\t\"PALIPARAN\",\n\t\t\t\t\t\t\t\t\"PEREZ\",\n\t\t\t\t\t\t\t\t\"PRINZA\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO\",\n\t\t\t\t\t\t\t\t\"SANTO TOMAS\",\n\t\t\t\t\t\t\t\t\"SILANGAN (POB.)\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"CAVINTI\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ANGLAS\",\n\t\t\t\t\t\t\t\t\"BANGCO\",\n\t\t\t\t\t\t\t\t\"BUKAL\",\n\t\t\t\t\t\t\t\t\"BULAJO\",\n\t\t\t\t\t\t\t\t\"CANSUSO\",\n\t\t\t\t\t\t\t\t\"DUHAT\",\n\t\t\t\t\t\t\t\t\"INAO-AWAN\",\n\t\t\t\t\t\t\t\t\"KANLURAN TALAONGAN\",\n\t\t\t\t\t\t\t\t\"LABAYO\",\n\t\t\t\t\t\t\t\t\"LAYASIN\",\n\t\t\t\t\t\t\t\t\"LAYUG\",\n\t\t\t\t\t\t\t\t\"MAHIPON\",\n\t\t\t\t\t\t\t\t\"PAOWIN\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"SILANGAN TALAONGAN\",\n\t\t\t\t\t\t\t\t\"SISILMIN\",\n\t\t\t\t\t\t\t\t\"SUMUCAB\",\n\t\t\t\t\t\t\t\t\"TIBATIB\",\n\t\t\t\t\t\t\t\t\"UDIA\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"CITY OF BINAN\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BI\u00F1AN (POBLACION)\",\n\t\t\t\t\t\t\t\t\"BUNGAHAN\",\n\t\t\t\t\t\t\t\t\"CANLALAY\",\n\t\t\t\t\t\t\t\t\"CASILE\",\n\t\t\t\t\t\t\t\t\"DE LA PAZ\",\n\t\t\t\t\t\t\t\t\"GANADO\",\n\t\t\t\t\t\t\t\t\"LANGKIWA\",\n\t\t\t\t\t\t\t\t\"LOMA\",\n\t\t\t\t\t\t\t\t\"MALABAN\",\n\t\t\t\t\t\t\t\t\"MALAMIG\",\n\t\t\t\t\t\t\t\t\"MAMPALASAN\",\n\t\t\t\t\t\t\t\t\"PLATERO\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"SAN ANTONIO\",\n\t\t\t\t\t\t\t\t\"SAN FRANCISCO (HALANG)\",\n\t\t\t\t\t\t\t\t\"SAN JOSE\",\n\t\t\t\t\t\t\t\t\"SAN VICENTE\",\n\t\t\t\t\t\t\t\t\"SANTO DOMINGO\",\n\t\t\t\t\t\t\t\t\"SANTO NI\u00F1O\",\n\t\t\t\t\t\t\t\t\"SANTO TOMAS (CALABUSO)\",\n\t\t\t\t\t\t\t\t\"SORO-SORO\",\n\t\t\t\t\t\t\t\t\"TIMBAO\",\n\t\t\t\t\t\t\t\t\"TUBIGAN\",\n\t\t\t\t\t\t\t\t\"ZAPOTE\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"CITY OF CALAMBA\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BAGONG KALSADA\",\n\t\t\t\t\t\t\t\t\"BANADERO\",\n\t\t\t\t\t\t\t\t\"BANLIC\",\n\t\t\t\t\t\t\t\t\"BARANDAL\",\n\t\t\t\t\t\t\t\t\"BARANGAY 1 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 2 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 3 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 4 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 5 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 6 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 7 (POB.)\",\n\t\t\t\t\t\t\t\t\"BATINO\",\n\t\t\t\t\t\t\t\t\"BUBUYAN\",\n\t\t\t\t\t\t\t\t\"BUCAL\",\n\t\t\t\t\t\t\t\t\"BUNGGO\",\n\t\t\t\t\t\t\t\t\"BUROL\",\n\t\t\t\t\t\t\t\t\"CAMALIGAN\",\n\t\t\t\t\t\t\t\t\"CANLUBANG\",\n\t\t\t\t\t\t\t\t\"HALANG\",\n\t\t\t\t\t\t\t\t\"HORNALAN\",\n\t\t\t\t\t\t\t\t\"KAY-ANLOG\",\n\t\t\t\t\t\t\t\t\"LA MESA\",\n\t\t\t\t\t\t\t\t\"LAGUERTA\",\n\t\t\t\t\t\t\t\t\"LAWA\",\n\t\t\t\t\t\t\t\t\"LECHERIA\",\n\t\t\t\t\t\t\t\t\"LINGGA\",\n\t\t\t\t\t\t\t\t\"LOOC\",\n\t\t\t\t\t\t\t\t\"MABATO\",\n\t\t\t\t\t\t\t\t\"MAJADA LABAS\",\n\t\t\t\t\t\t\t\t\"MAKILING\",\n\t\t\t\t\t\t\t\t\"MAPAGONG\",\n\t\t\t\t\t\t\t\t\"MASILI\",\n\t\t\t\t\t\t\t\t\"MAUNONG\",\n\t\t\t\t\t\t\t\t\"MAYAPA\",\n\t\t\t\t\t\t\t\t\"MILAGROSA (TULO)\",\n\t\t\t\t\t\t\t\t\"PACIANO RIZAL\",\n\t\t\t\t\t\t\t\t\"PALINGON\",\n\t\t\t\t\t\t\t\t\"PALO-ALTO\",\n\t\t\t\t\t\t\t\t\"PANSOL\",\n\t\t\t\t\t\t\t\t\"PARIAN\",\n\t\t\t\t\t\t\t\t\"PRINZA\",\n\t\t\t\t\t\t\t\t\"PUNTA\",\n\t\t\t\t\t\t\t\t\"PUTING LUPA\",\n\t\t\t\t\t\t\t\t\"REAL\",\n\t\t\t\t\t\t\t\t\"SAIMSIM\",\n\t\t\t\t\t\t\t\t\"SAMPIRUHAN\",\n\t\t\t\t\t\t\t\t\"SAN CRISTOBAL\",\n\t\t\t\t\t\t\t\t\"SAN JOSE\",\n\t\t\t\t\t\t\t\t\"SAN JUAN\",\n\t\t\t\t\t\t\t\t\"SIRANG LUPA\",\n\t\t\t\t\t\t\t\t\"SUCOL\",\n\t\t\t\t\t\t\t\t\"TURBINA\",\n\t\t\t\t\t\t\t\t\"ULANGO\",\n\t\t\t\t\t\t\t\t\"UWISAN\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"CITY OF SANTA ROSA\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"APLAYA\",\n\t\t\t\t\t\t\t\t\"BALIBAGO\",\n\t\t\t\t\t\t\t\t\"CAINGIN\",\n\t\t\t\t\t\t\t\t\"DILA\",\n\t\t\t\t\t\t\t\t\"DITA\",\n\t\t\t\t\t\t\t\t\"DON JOSE\",\n\t\t\t\t\t\t\t\t\"IBABA\",\n\t\t\t\t\t\t\t\t\"KANLURAN (POB.)\",\n\t\t\t\t\t\t\t\t\"LABAS\",\n\t\t\t\t\t\t\t\t\"MACABLING\",\n\t\t\t\t\t\t\t\t\"MALITLIT\",\n\t\t\t\t\t\t\t\t\"MALUSAK (POB.)\",\n\t\t\t\t\t\t\t\t\"MARKET AREA (POB.)\",\n\t\t\t\t\t\t\t\t\"POOK\",\n\t\t\t\t\t\t\t\t\"PULONG SANTA CRUZ\",\n\t\t\t\t\t\t\t\t\"SANTO DOMINGO\",\n\t\t\t\t\t\t\t\t\"SINALHAN\",\n\t\t\t\t\t\t\t\t\"TAGAPO\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"FAMY\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ASANA (POB.)\",\n\t\t\t\t\t\t\t\t\"BACONG-SIGSIGAN\",\n\t\t\t\t\t\t\t\t\"BAGONG PAG-ASA (POB.)\",\n\t\t\t\t\t\t\t\t\"BALITOC\",\n\t\t\t\t\t\t\t\t\"BANABA (POB.)\",\n\t\t\t\t\t\t\t\t\"BATUHAN\",\n\t\t\t\t\t\t\t\t\"BULIHAN\",\n\t\t\t\t\t\t\t\t\"CABALLERO (POB.)\",\n\t\t\t\t\t\t\t\t\"CALUMPANG (POB.)\",\n\t\t\t\t\t\t\t\t\"CUEBANG BATO\",\n\t\t\t\t\t\t\t\t\"DAMAYAN (POB.)\",\n\t\t\t\t\t\t\t\t\"KAPATALAN\",\n\t\t\t\t\t\t\t\t\"KATAYPUANAN\",\n\t\t\t\t\t\t\t\t\"LIYANG\",\n\t\t\t\t\t\t\t\t\"MAATE\",\n\t\t\t\t\t\t\t\t\"MAGDALO (POB.)\",\n\t\t\t\t\t\t\t\t\"MAYATBA\",\n\t\t\t\t\t\t\t\t\"MINAYUTAN\",\n\t\t\t\t\t\t\t\t\"SALANGBATO\",\n\t\t\t\t\t\t\t\t\"TUNHAC\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"KALAYAAN\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"LONGOS\",\n\t\t\t\t\t\t\t\t\"SAN ANTONIO\",\n\t\t\t\t\t\t\t\t\"SAN JUAN (POB.)\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"LILIW\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BAGONG ANYO (POB.)\",\n\t\t\t\t\t\t\t\t\"BAYATE\",\n\t\t\t\t\t\t\t\t\"BONGKOL\",\n\t\t\t\t\t\t\t\t\"BUBUKAL\",\n\t\t\t\t\t\t\t\t\"CABUYAO\",\n\t\t\t\t\t\t\t\t\"CALUMPANG\",\n\t\t\t\t\t\t\t\t\"CULOY\",\n\t\t\t\t\t\t\t\t\"DAGATAN\",\n\t\t\t\t\t\t\t\t\"DANIW (DANLIW)\",\n\t\t\t\t\t\t\t\t\"DITA\",\n\t\t\t\t\t\t\t\t\"IBABANG PALINA\",\n\t\t\t\t\t\t\t\t\"IBABANG SAN ROQUE\",\n\t\t\t\t\t\t\t\t\"IBABANG SUNGI\",\n\t\t\t\t\t\t\t\t\"IBABANG TAYKIN\",\n\t\t\t\t\t\t\t\t\"ILAYANG PALINA\",\n\t\t\t\t\t\t\t\t\"ILAYANG SAN ROQUE\",\n\t\t\t\t\t\t\t\t\"ILAYANG SUNGI\",\n\t\t\t\t\t\t\t\t\"ILAYANG TAYKIN\",\n\t\t\t\t\t\t\t\t\"KANLURANG BUKAL\",\n\t\t\t\t\t\t\t\t\"LAGUAN\",\n\t\t\t\t\t\t\t\t\"LUQUIN\",\n\t\t\t\t\t\t\t\t\"MALABO-KALANTUKAN\",\n\t\t\t\t\t\t\t\t\"MASIKAP (POB.)\",\n\t\t\t\t\t\t\t\t\"MASLUN (POB.)\",\n\t\t\t\t\t\t\t\t\"MOJON\",\n\t\t\t\t\t\t\t\t\"NOVALICHES\",\n\t\t\t\t\t\t\t\t\"OPLES\",\n\t\t\t\t\t\t\t\t\"PAG-ASA (POB.)\",\n\t\t\t\t\t\t\t\t\"PALAYAN\",\n\t\t\t\t\t\t\t\t\"RIZAL (POB.)\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO\",\n\t\t\t\t\t\t\t\t\"SILANGANG BUKAL\",\n\t\t\t\t\t\t\t\t\"TUY-BAANAN\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"LOS BANOS\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ANOS\",\n\t\t\t\t\t\t\t\t\"BAGONG SILANG\",\n\t\t\t\t\t\t\t\t\"BAMBANG\",\n\t\t\t\t\t\t\t\t\"BATONG MALAKE\",\n\t\t\t\t\t\t\t\t\"BAYBAYIN (POB.)\",\n\t\t\t\t\t\t\t\t\"BAYOG\",\n\t\t\t\t\t\t\t\t\"LALAKAY\",\n\t\t\t\t\t\t\t\t\"MAAHAS\",\n\t\t\t\t\t\t\t\t\"MALINTA\",\n\t\t\t\t\t\t\t\t\"MAYONDON\",\n\t\t\t\t\t\t\t\t\"PUTHO TUNTUNGIN\",\n\t\t\t\t\t\t\t\t\"SAN ANTONIO\",\n\t\t\t\t\t\t\t\t\"TADLAK\",\n\t\t\t\t\t\t\t\t\"TIMUGAN (POB.)\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"LUISIANA\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BARANGAY ZONE I (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY ZONE II (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY ZONE III (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY ZONE IV (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY ZONE V (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY ZONE VI (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY ZONE VII (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY ZONE VIII (POB.)\",\n\t\t\t\t\t\t\t\t\"DE LA PAZ\",\n\t\t\t\t\t\t\t\t\"SAN ANTONIO\",\n\t\t\t\t\t\t\t\t\"SAN BUENAVENTURA\",\n\t\t\t\t\t\t\t\t\"SAN DIEGO\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO\",\n\t\t\t\t\t\t\t\t\"SAN JOSE\",\n\t\t\t\t\t\t\t\t\"SAN JUAN\",\n\t\t\t\t\t\t\t\t\"SAN LUIS\",\n\t\t\t\t\t\t\t\t\"SAN PABLO\",\n\t\t\t\t\t\t\t\t\"SAN PEDRO\",\n\t\t\t\t\t\t\t\t\"SAN RAFAEL\",\n\t\t\t\t\t\t\t\t\"SAN ROQUE\",\n\t\t\t\t\t\t\t\t\"SAN SALVADOR\",\n\t\t\t\t\t\t\t\t\"SANTO DOMINGO\",\n\t\t\t\t\t\t\t\t\"SANTO TOMAS\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"LUMBAN\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BAGONG SILANG\",\n\t\t\t\t\t\t\t\t\"BALIMBINGAN (POB.)\",\n\t\t\t\t\t\t\t\t\"BALUBAD\",\n\t\t\t\t\t\t\t\t\"CALIRAYA\",\n\t\t\t\t\t\t\t\t\"CONCEPCION\",\n\t\t\t\t\t\t\t\t\"LEWIN\",\n\t\t\t\t\t\t\t\t\"MARACTA (POB.)\",\n\t\t\t\t\t\t\t\t\"MAYTALANG I\",\n\t\t\t\t\t\t\t\t\"MAYTALANG II\",\n\t\t\t\t\t\t\t\t\"PRIMERA PARANG (POB.)\",\n\t\t\t\t\t\t\t\t\"PRIMERA PULO (POB.)\",\n\t\t\t\t\t\t\t\t\"SALAC (POB.)\",\n\t\t\t\t\t\t\t\t\"SANTO NI\u00F1O (POB.)\",\n\t\t\t\t\t\t\t\t\"SEGUNDA PARANG (POB.)\",\n\t\t\t\t\t\t\t\t\"SEGUNDA PULO (POB.)\",\n\t\t\t\t\t\t\t\t\"WAWA\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"MABITAC\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"AMUYONG\",\n\t\t\t\t\t\t\t\t\"BAYANIHAN (POB.)\",\n\t\t\t\t\t\t\t\t\"LAMBAC (POB.)\",\n\t\t\t\t\t\t\t\t\"LIBIS NG NAYON (POB.)\",\n\t\t\t\t\t\t\t\t\"LUCONG\",\n\t\t\t\t\t\t\t\t\"MALIGAYA (POB.)\",\n\t\t\t\t\t\t\t\t\"MASIKAP (POB.)\",\n\t\t\t\t\t\t\t\t\"MATALATALA\",\n\t\t\t\t\t\t\t\t\"NANGUMA\",\n\t\t\t\t\t\t\t\t\"NUMERO\",\n\t\t\t\t\t\t\t\t\"PAAGAHAN\",\n\t\t\t\t\t\t\t\t\"PAG-ASA (POB.)\",\n\t\t\t\t\t\t\t\t\"SAN ANTONIO\",\n\t\t\t\t\t\t\t\t\"SAN MIGUEL\",\n\t\t\t\t\t\t\t\t\"SINAGTALA (POB.)\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"MAGDALENA\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ALIPIT\",\n\t\t\t\t\t\t\t\t\"BAANAN\",\n\t\t\t\t\t\t\t\t\"BALANAC\",\n\t\t\t\t\t\t\t\t\"BUCAL\",\n\t\t\t\t\t\t\t\t\"BUENAVISTA\",\n\t\t\t\t\t\t\t\t\"BUNGKOL\",\n\t\t\t\t\t\t\t\t\"BUO\",\n\t\t\t\t\t\t\t\t\"BURLUNGAN\",\n\t\t\t\t\t\t\t\t\"CIGARAS\",\n\t\t\t\t\t\t\t\t\"HALAYHAYIN\",\n\t\t\t\t\t\t\t\t\"IBABANG ATINGAY\",\n\t\t\t\t\t\t\t\t\"IBABANG BUTNONG\",\n\t\t\t\t\t\t\t\t\"ILAYANG ATINGAY\",\n\t\t\t\t\t\t\t\t\"ILAYANG BUTNONG\",\n\t\t\t\t\t\t\t\t\"ILOG\",\n\t\t\t\t\t\t\t\t\"MALAKING AMBLING\",\n\t\t\t\t\t\t\t\t\"MALINAO\",\n\t\t\t\t\t\t\t\t\"MARAVILLA\",\n\t\t\t\t\t\t\t\t\"MUNTING AMBLING\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"SABANG\",\n\t\t\t\t\t\t\t\t\"SALASAD\",\n\t\t\t\t\t\t\t\t\"TANAWAN\",\n\t\t\t\t\t\t\t\t\"TIPUNAN\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"MAJAYJAY\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"AMONOY\",\n\t\t\t\t\t\t\t\t\"BAKIA\",\n\t\t\t\t\t\t\t\t\"BALANAC\",\n\t\t\t\t\t\t\t\t\"BALAYONG\",\n\t\t\t\t\t\t\t\t\"BANILAD\",\n\t\t\t\t\t\t\t\t\"BANTI\",\n\t\t\t\t\t\t\t\t\"BITAOY\",\n\t\t\t\t\t\t\t\t\"BOTOCAN\",\n\t\t\t\t\t\t\t\t\"BUKAL\",\n\t\t\t\t\t\t\t\t\"BURGOS\",\n\t\t\t\t\t\t\t\t\"BUROL\",\n\t\t\t\t\t\t\t\t\"CORALAO\",\n\t\t\t\t\t\t\t\t\"GAGALOT\",\n\t\t\t\t\t\t\t\t\"IBABANG BANGA\",\n\t\t\t\t\t\t\t\t\"IBABANG BAYUCAIN\",\n\t\t\t\t\t\t\t\t\"ILAYANG BANGA\",\n\t\t\t\t\t\t\t\t\"ILAYANG BAYUCAIN\",\n\t\t\t\t\t\t\t\t\"ISABANG\",\n\t\t\t\t\t\t\t\t\"MALINAO\",\n\t\t\t\t\t\t\t\t\"MAY-IT\",\n\t\t\t\t\t\t\t\t\"MUNTING KAWAYAN\",\n\t\t\t\t\t\t\t\t\"OLLA\",\n\t\t\t\t\t\t\t\t\"OOBI\",\n\t\t\t\t\t\t\t\t\"ORIGUEL (POB.)\",\n\t\t\t\t\t\t\t\t\"PANALABAN\",\n\t\t\t\t\t\t\t\t\"PANGIL\",\n\t\t\t\t\t\t\t\t\"PANGLAN\",\n\t\t\t\t\t\t\t\t\"PIIT\",\n\t\t\t\t\t\t\t\t\"POOK\",\n\t\t\t\t\t\t\t\t\"RIZAL\",\n\t\t\t\t\t\t\t\t\"SAN FRANCISCO (POB.)\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO\",\n\t\t\t\t\t\t\t\t\"SAN MIGUEL (POB.)\",\n\t\t\t\t\t\t\t\t\"SAN ROQUE\",\n\t\t\t\t\t\t\t\t\"SANTA CATALINA (POB.)\",\n\t\t\t\t\t\t\t\t\"SUBA\",\n\t\t\t\t\t\t\t\t\"TALORTOR\",\n\t\t\t\t\t\t\t\t\"TANAWAN\",\n\t\t\t\t\t\t\t\t\"TAYTAY\",\n\t\t\t\t\t\t\t\t\"VILLA NOGALES\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"NAGCARLAN\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ABO\",\n\t\t\t\t\t\t\t\t\"ALIBUNGBUNGAN\",\n\t\t\t\t\t\t\t\t\"ALUMBRADO\",\n\t\t\t\t\t\t\t\t\"BALAYONG\",\n\t\t\t\t\t\t\t\t\"BALIMBING\",\n\t\t\t\t\t\t\t\t\"BALINACON\",\n\t\t\t\t\t\t\t\t\"BAMBANG\",\n\t\t\t\t\t\t\t\t\"BANAGO\",\n\t\t\t\t\t\t\t\t\"BANCA-BANCA\",\n\t\t\t\t\t\t\t\t\"BANGCURO\",\n\t\t\t\t\t\t\t\t\"BANILAD\",\n\t\t\t\t\t\t\t\t\"BAYAQUITOS\",\n\t\t\t\t\t\t\t\t\"BUBOY\",\n\t\t\t\t\t\t\t\t\"BUENAVISTA\",\n\t\t\t\t\t\t\t\t\"BUHANGINAN\",\n\t\t\t\t\t\t\t\t\"BUKAL\",\n\t\t\t\t\t\t\t\t\"BUNGA\",\n\t\t\t\t\t\t\t\t\"CABUYEW\",\n\t\t\t\t\t\t\t\t\"CALUMPANG\",\n\t\t\t\t\t\t\t\t\"KANLURAN KABUBUHAYAN\",\n\t\t\t\t\t\t\t\t\"KANLURAN LAZAAN\",\n\t\t\t\t\t\t\t\t\"LABANGAN\",\n\t\t\t\t\t\t\t\t\"LAGULO\",\n\t\t\t\t\t\t\t\t\"LAWAGUIN\",\n\t\t\t\t\t\t\t\t\"MAIIT\",\n\t\t\t\t\t\t\t\t\"MALAYA\",\n\t\t\t\t\t\t\t\t\"MALINAO\",\n\t\t\t\t\t\t\t\t\"MANAOL\",\n\t\t\t\t\t\t\t\t\"MARAVILLA\",\n\t\t\t\t\t\t\t\t\"NAGCALBANG\",\n\t\t\t\t\t\t\t\t\"OPLES\",\n\t\t\t\t\t\t\t\t\"PALAYAN\",\n\t\t\t\t\t\t\t\t\"PALINA\",\n\t\t\t\t\t\t\t\t\"POBLACION I (POB.)\",\n\t\t\t\t\t\t\t\t\"POBLACION II (POB.)\",\n\t\t\t\t\t\t\t\t\"POBLACION III (POB.)\",\n\t\t\t\t\t\t\t\t\"SABANG\",\n\t\t\t\t\t\t\t\t\"SAN FRANCISCO\",\n\t\t\t\t\t\t\t\t\"SANTA LUCIA\",\n\t\t\t\t\t\t\t\t\"SIBULAN\",\n\t\t\t\t\t\t\t\t\"SILANGAN ILAYA\",\n\t\t\t\t\t\t\t\t\"SILANGAN KABUBUHAYAN\",\n\t\t\t\t\t\t\t\t\"SILANGAN LAZAAN\",\n\t\t\t\t\t\t\t\t\"SILANGAN NAPAPATID\",\n\t\t\t\t\t\t\t\t\"SINIPIAN\",\n\t\t\t\t\t\t\t\t\"SULSUGUIN\",\n\t\t\t\t\t\t\t\t\"TALAHIB\",\n\t\t\t\t\t\t\t\t\"TALANGAN\",\n\t\t\t\t\t\t\t\t\"TAYTAY\",\n\t\t\t\t\t\t\t\t\"TIPACAN\",\n\t\t\t\t\t\t\t\t\"WAKAT\",\n\t\t\t\t\t\t\t\t\"YUKOS\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"PAETE\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BAGUMBAYAN (POB.)\",\n\t\t\t\t\t\t\t\t\"BANGKUSAY (POB.)\",\n\t\t\t\t\t\t\t\t\"ERMITA (POB.)\",\n\t\t\t\t\t\t\t\t\"IBABA DEL NORTE (POB.)\",\n\t\t\t\t\t\t\t\t\"IBABA DEL SUR (POB.)\",\n\t\t\t\t\t\t\t\t\"ILAYA DEL NORTE (POB.)\",\n\t\t\t\t\t\t\t\t\"ILAYA DEL SUR (POB.)\",\n\t\t\t\t\t\t\t\t\"MAYTOONG (POB.)\",\n\t\t\t\t\t\t\t\t\"QUINALE (POB.)\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"PAGSANJAN\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ANIBONG\",\n\t\t\t\t\t\t\t\t\"BARANGAY I (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY II (POB.)\",\n\t\t\t\t\t\t\t\t\"BI\u00F1AN\",\n\t\t\t\t\t\t\t\t\"BUBOY\",\n\t\t\t\t\t\t\t\t\"CABANBANAN\",\n\t\t\t\t\t\t\t\t\"CALUSICHE\",\n\t\t\t\t\t\t\t\t\"DINGIN\",\n\t\t\t\t\t\t\t\t\"LAMBAC\",\n\t\t\t\t\t\t\t\t\"LAYUGAN\",\n\t\t\t\t\t\t\t\t\"MAGDAPIO\",\n\t\t\t\t\t\t\t\t\"MAULAWIN\",\n\t\t\t\t\t\t\t\t\"PINAGSANJAN\",\n\t\t\t\t\t\t\t\t\"SABANG\",\n\t\t\t\t\t\t\t\t\"SAMPALOC\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"PAKIL\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BA\u00F1O (POB.)\",\n\t\t\t\t\t\t\t\t\"BANILAN\",\n\t\t\t\t\t\t\t\t\"BURGOS (POB.)\",\n\t\t\t\t\t\t\t\t\"CASA REAL\",\n\t\t\t\t\t\t\t\t\"CASINSIN\",\n\t\t\t\t\t\t\t\t\"DORADO\",\n\t\t\t\t\t\t\t\t\"GONZALES (POB.)\",\n\t\t\t\t\t\t\t\t\"KABULUSAN\",\n\t\t\t\t\t\t\t\t\"MATIKIW\",\n\t\t\t\t\t\t\t\t\"RIZAL (POB.)\",\n\t\t\t\t\t\t\t\t\"SARAY\",\n\t\t\t\t\t\t\t\t\"TAFT (POB.)\",\n\t\t\t\t\t\t\t\t\"TAVERA (POB.)\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"PANGIL\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BALIAN\",\n\t\t\t\t\t\t\t\t\"DAMBO\",\n\t\t\t\t\t\t\t\t\"GALALAN\",\n\t\t\t\t\t\t\t\t\"ISLA (POB.)\",\n\t\t\t\t\t\t\t\t\"MABATO-AZUFRE\",\n\t\t\t\t\t\t\t\t\"NATIVIDAD (POB.)\",\n\t\t\t\t\t\t\t\t\"SAN JOSE (POB.)\",\n\t\t\t\t\t\t\t\t\"SULIB\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"PILA\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BAGONG POOK\",\n\t\t\t\t\t\t\t\t\"BUKAL\",\n\t\t\t\t\t\t\t\t\"BULILAN NORTE (POB.)\",\n\t\t\t\t\t\t\t\t\"BULILAN SUR (POB.)\",\n\t\t\t\t\t\t\t\t\"CONCEPCION\",\n\t\t\t\t\t\t\t\t\"LABUIN\",\n\t\t\t\t\t\t\t\t\"LINGA\",\n\t\t\t\t\t\t\t\t\"MASICO\",\n\t\t\t\t\t\t\t\t\"MOJON\",\n\t\t\t\t\t\t\t\t\"PANSOL\",\n\t\t\t\t\t\t\t\t\"PINAGBAYANAN\",\n\t\t\t\t\t\t\t\t\"SAN ANTONIO\",\n\t\t\t\t\t\t\t\t\"SAN MIGUEL\",\n\t\t\t\t\t\t\t\t\"SANTA CLARA NORTE (POB.)\",\n\t\t\t\t\t\t\t\t\"SANTA CLARA SUR (POB.)\",\n\t\t\t\t\t\t\t\t\"TUBUAN\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"RIZAL\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ANTIPOLO\",\n\t\t\t\t\t\t\t\t\"EAST POBLACION\",\n\t\t\t\t\t\t\t\t\"ENTABLADO\",\n\t\t\t\t\t\t\t\t\"LAGUAN\",\n\t\t\t\t\t\t\t\t\"PAULE 1\",\n\t\t\t\t\t\t\t\t\"PAULE 2\",\n\t\t\t\t\t\t\t\t\"POOK\",\n\t\t\t\t\t\t\t\t\"TALA\",\n\t\t\t\t\t\t\t\t\"TALAGA\",\n\t\t\t\t\t\t\t\t\"TUY\",\n\t\t\t\t\t\t\t\t\"WEST POBLACION\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"SAN PABLO CITY\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ATISAN\",\n\t\t\t\t\t\t\t\t\"BAGONG BAYAN II-A (POB.)\",\n\t\t\t\t\t\t\t\t\"BAGONG POOK VI-C (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY I-A (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY I-B (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY II-A (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY II-B (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY II-C (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY II-D (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY II-E (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY II-F (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY III-A (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY III-B (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY III-C (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY III-D (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY III-E (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY III-F (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY IV-A (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY IV-B (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY IV-C (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY V-A (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY V-B (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY V-C (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY V-D (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY VI-A (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY VI-B (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY VI-D (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY VI-E (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY VII-A (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY VII-B (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY VII-C (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY VII-D (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY VII-E (POB.)\",\n\t\t\t\t\t\t\t\t\"BAUTISTA\",\n\t\t\t\t\t\t\t\t\"CONCEPCION\",\n\t\t\t\t\t\t\t\t\"DEL REMEDIO\",\n\t\t\t\t\t\t\t\t\"DOLORES\",\n\t\t\t\t\t\t\t\t\"SAN ANTONIO 1\",\n\t\t\t\t\t\t\t\t\"SAN ANTONIO 2\",\n\t\t\t\t\t\t\t\t\"SAN BARTOLOME\",\n\t\t\t\t\t\t\t\t\"SAN BUENAVENTURA\",\n\t\t\t\t\t\t\t\t\"SAN CRISPIN\",\n\t\t\t\t\t\t\t\t\"SAN CRISTOBAL\",\n\t\t\t\t\t\t\t\t\"SAN DIEGO\",\n\t\t\t\t\t\t\t\t\"SAN FRANCISCO\",\n\t\t\t\t\t\t\t\t\"SAN GABRIEL\",\n\t\t\t\t\t\t\t\t\"SAN GREGORIO\",\n\t\t\t\t\t\t\t\t\"SAN IGNACIO\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO\",\n\t\t\t\t\t\t\t\t\"SAN JOAQUIN\",\n\t\t\t\t\t\t\t\t\"SAN JOSE\",\n\t\t\t\t\t\t\t\t\"SAN JUAN\",\n\t\t\t\t\t\t\t\t\"SAN LORENZO\",\n\t\t\t\t\t\t\t\t\"SAN LUCAS 1\",\n\t\t\t\t\t\t\t\t\"SAN LUCAS 2\",\n\t\t\t\t\t\t\t\t\"SAN MARCOS\",\n\t\t\t\t\t\t\t\t\"SAN MATEO\",\n\t\t\t\t\t\t\t\t\"SAN MIGUEL\",\n\t\t\t\t\t\t\t\t\"SAN NICOLAS\",\n\t\t\t\t\t\t\t\t\"SAN PEDRO\",\n\t\t\t\t\t\t\t\t\"SAN RAFAEL\",\n\t\t\t\t\t\t\t\t\"SAN ROQUE\",\n\t\t\t\t\t\t\t\t\"SAN VICENTE\",\n\t\t\t\t\t\t\t\t\"SANTA ANA\",\n\t\t\t\t\t\t\t\t\"SANTA CATALINA\",\n\t\t\t\t\t\t\t\t\"SANTA CRUZ\",\n\t\t\t\t\t\t\t\t\"SANTA ELENA\",\n\t\t\t\t\t\t\t\t\"SANTA FELOMINA\",\n\t\t\t\t\t\t\t\t\"SANTA ISABEL\",\n\t\t\t\t\t\t\t\t\"SANTA MARIA\",\n\t\t\t\t\t\t\t\t\"SANTA MARIA MAGDALENA\",\n\t\t\t\t\t\t\t\t\"SANTA MONICA\",\n\t\t\t\t\t\t\t\t\"SANTA VERONICA\",\n\t\t\t\t\t\t\t\t\"SANTIAGO I\",\n\t\t\t\t\t\t\t\t\"SANTIAGO II\",\n\t\t\t\t\t\t\t\t\"SANTISIMO ROSARIO\",\n\t\t\t\t\t\t\t\t\"SANTO ANGEL\",\n\t\t\t\t\t\t\t\t\"SANTO CRISTO\",\n\t\t\t\t\t\t\t\t\"SANTO NI\u00F1O\",\n\t\t\t\t\t\t\t\t\"SOLEDAD\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"SAN PEDRO\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BAGONG SILANG\",\n\t\t\t\t\t\t\t\t\"CALENDOLA\",\n\t\t\t\t\t\t\t\t\"CUYAB\",\n\t\t\t\t\t\t\t\t\"ESTRELLA\",\n\t\t\t\t\t\t\t\t\"G.S.I.S.\",\n\t\t\t\t\t\t\t\t\"LANDAYAN\",\n\t\t\t\t\t\t\t\t\"LANGGAM\",\n\t\t\t\t\t\t\t\t\"LARAM\",\n\t\t\t\t\t\t\t\t\"MAGSAYSAY\",\n\t\t\t\t\t\t\t\t\"NARRA\",\n\t\t\t\t\t\t\t\t\"NUEVA\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"RIVERSIDE\",\n\t\t\t\t\t\t\t\t\"SAMPAGUITA VILLAGE\",\n\t\t\t\t\t\t\t\t\"SAN ANTONIO\",\n\t\t\t\t\t\t\t\t\"SAN ROQUE\",\n\t\t\t\t\t\t\t\t\"SAN VICENTE\",\n\t\t\t\t\t\t\t\t\"SANTO NI\u00F1O\",\n\t\t\t\t\t\t\t\t\"UNITED BAYANIHAN\",\n\t\t\t\t\t\t\t\t\"UNITED BETTER LIVING\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"SANTA CRUZ\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ALIPIT\",\n\t\t\t\t\t\t\t\t\"BAGUMBAYAN\",\n\t\t\t\t\t\t\t\t\"BARANGAY I (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY II (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY III (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY IV (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY V (POB.)\",\n\t\t\t\t\t\t\t\t\"BUBUKAL\",\n\t\t\t\t\t\t\t\t\"CALIOS\",\n\t\t\t\t\t\t\t\t\"DUHAT\",\n\t\t\t\t\t\t\t\t\"GATID\",\n\t\t\t\t\t\t\t\t\"JASAAN\",\n\t\t\t\t\t\t\t\t\"LABUIN\",\n\t\t\t\t\t\t\t\t\"MALINAO\",\n\t\t\t\t\t\t\t\t\"OOGONG\",\n\t\t\t\t\t\t\t\t\"PAGSAWITAN\",\n\t\t\t\t\t\t\t\t\"PALASAN\",\n\t\t\t\t\t\t\t\t\"PATIMBAO\",\n\t\t\t\t\t\t\t\t\"SAN JOSE\",\n\t\t\t\t\t\t\t\t\"SAN JUAN\",\n\t\t\t\t\t\t\t\t\"SAN PABLO NORTE\",\n\t\t\t\t\t\t\t\t\"SAN PABLO SUR\",\n\t\t\t\t\t\t\t\t\"SANTISIMA CRUZ\",\n\t\t\t\t\t\t\t\t\"SANTO ANGEL CENTRAL\",\n\t\t\t\t\t\t\t\t\"SANTO ANGEL NORTE\",\n\t\t\t\t\t\t\t\t\"SANTO ANGEL SUR\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"SANTA MARIA\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ADIA\",\n\t\t\t\t\t\t\t\t\"BAGONG POOK\",\n\t\t\t\t\t\t\t\t\"BAGUMBAYAN\",\n\t\t\t\t\t\t\t\t\"BARANGAY I (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY II (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY III (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY IV (POB.)\",\n\t\t\t\t\t\t\t\t\"BUBUKAL\",\n\t\t\t\t\t\t\t\t\"CABOOAN\",\n\t\t\t\t\t\t\t\t\"CALANGAY\",\n\t\t\t\t\t\t\t\t\"CAMBUJA\",\n\t\t\t\t\t\t\t\t\"CORALAN\",\n\t\t\t\t\t\t\t\t\"CUEVA\",\n\t\t\t\t\t\t\t\t\"INAYAPAN\",\n\t\t\t\t\t\t\t\t\"JOSE LAUREL, SR.\",\n\t\t\t\t\t\t\t\t\"JOSE RIZAL\",\n\t\t\t\t\t\t\t\t\"KAYHAKAT\",\n\t\t\t\t\t\t\t\t\"MACASIPAC\",\n\t\t\t\t\t\t\t\t\"MASINAO\",\n\t\t\t\t\t\t\t\t\"MATALING-TING\",\n\t\t\t\t\t\t\t\t\"PAO-O\",\n\t\t\t\t\t\t\t\t\"PARANG NG BUHO\",\n\t\t\t\t\t\t\t\t\"SANTIAGO\",\n\t\t\t\t\t\t\t\t\"TALANGKA\",\n\t\t\t\t\t\t\t\t\"TUNGKOD\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"SINILOAN\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ACEVIDA\",\n\t\t\t\t\t\t\t\t\"BAGONG PAG-ASA (POB.)\",\n\t\t\t\t\t\t\t\t\"BAGUMBARANGAY (POB.)\",\n\t\t\t\t\t\t\t\t\"BUHAY\",\n\t\t\t\t\t\t\t\t\"G. REDOR (POB.)\",\n\t\t\t\t\t\t\t\t\"GEN. LUNA\",\n\t\t\t\t\t\t\t\t\"HALAYHAYIN\",\n\t\t\t\t\t\t\t\t\"J. RIZAL (POB.)\",\n\t\t\t\t\t\t\t\t\"KAPATALAN\",\n\t\t\t\t\t\t\t\t\"LAGUIO\",\n\t\t\t\t\t\t\t\t\"LIYANG\",\n\t\t\t\t\t\t\t\t\"LLAVAC\",\n\t\t\t\t\t\t\t\t\"MACATAD\",\n\t\t\t\t\t\t\t\t\"MAGSAYSAY\",\n\t\t\t\t\t\t\t\t\"MAYATBA\",\n\t\t\t\t\t\t\t\t\"MENDIOLA\",\n\t\t\t\t\t\t\t\t\"P. BURGOS\",\n\t\t\t\t\t\t\t\t\"PANDENO\",\n\t\t\t\t\t\t\t\t\"SALUBUNGAN\",\n\t\t\t\t\t\t\t\t\"WAWA\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"VICTORIA\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BANCA-BANCA\",\n\t\t\t\t\t\t\t\t\"DANIW\",\n\t\t\t\t\t\t\t\t\"MASAPANG\",\n\t\t\t\t\t\t\t\t\"NANHAYA (POB.)\",\n\t\t\t\t\t\t\t\t\"PAGALANGAN\",\n\t\t\t\t\t\t\t\t\"SAN BENITO\",\n\t\t\t\t\t\t\t\t\"SAN FELIX\",\n\t\t\t\t\t\t\t\t\"SAN FRANCISCO\",\n\t\t\t\t\t\t\t\t\"SAN ROQUE (POB.)\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"QUEZON\",\n\t\t\t\t\t\"cities\": [{\n\t\t\t\t\t\t\t\"name\": \"AGDANGANAN\",\n\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BINAGBAG\",\n\t\t\t\t\t\t\t\t\"DAYAP\",\n\t\t\t\t\t\t\t\t\"IBABANG KINAGUNAN\",\n\t\t\t\t\t\t\t\t\"ILAYANG KINAGUNAN\",\n\t\t\t\t\t\t\t\t\"KANLURANG CALUTAN\",\n\t\t\t\t\t\t\t\t\"KANLURANG MALIGAYA\",\n\t\t\t\t\t\t\t\t\"POBLACION I\",\n\t\t\t\t\t\t\t\t\"POBLACION II\",\n\t\t\t\t\t\t\t\t\"SALVACION\",\n\t\t\t\t\t\t\t\t\"SILANGANG CALUTAN\",\n\t\t\t\t\t\t\t\t\"SILANGANG MALIGAYA\",\n\t\t\t\t\t\t\t\t\"SILDORA\"\n\t\t\t\t\t\t  \t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t  \"name\": \"ALABAT\",\n\t\t\t\t\t\t\t  \"districts\": [\n\t\t\t\t\t\t\t\t\"ANGELES\",\n\t\t\t\t\t\t\t\t\"BACONG\",\n\t\t\t\t\t\t\t\t\"BALUNGAY\",\n\t\t\t\t\t\t\t\t\"BARANGAY 1 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 2 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 3 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 4 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 5 (POB.)\",\n\t\t\t\t\t\t\t\t\"BUENAVISTA\",\n\t\t\t\t\t\t\t\t\"CAGLATE\",\n\t\t\t\t\t\t\t\t\"CAMAGONG\",\n\t\t\t\t\t\t\t\t\"GORDON\",\n\t\t\t\t\t\t\t\t\"PAMBILAN NORTE\",\n\t\t\t\t\t\t\t\t\"PAMBILAN SUR\",\n\t\t\t\t\t\t\t\t\"VILLA ESPERANZA\",\n\t\t\t\t\t\t\t\t\"VILLA JESUS ESTE\",\n\t\t\t\t\t\t\t\t\"VILLA JESUS WESTE\",\n\t\t\t\t\t\t\t\t\"VILLA NORTE\",\n\t\t\t\t\t\t\t\t\"VILLA VICTORIA\"\n\t\t\t\t\t\t  \t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t  \"name\": \"ATIMONAN\",\n\t\t\t\t\t\t\t  \"districts\": [\n\t\t\t\t\t\t\t\t\"ANGELES\",\n\t\t\t\t\t\t\t\t\"BALUBAD\",\n\t\t\t\t\t\t\t\t\"BALUGOHIN\",\n\t\t\t\t\t\t\t\t\"BARANGAY ZONE 1 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY ZONE 2 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY ZONE 3 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY ZONE 4 (POB.)\",\n\t\t\t\t\t\t\t\t\"BUHANGIN\",\n\t\t\t\t\t\t\t\t\"CARIDAD IBABA\",\n\t\t\t\t\t\t\t\t\"CARIDAD ILAYA\",\n\t\t\t\t\t\t\t\t\"HABINGAN\",\n\t\t\t\t\t\t\t\t\"INACLAGAN\",\n\t\t\t\t\t\t\t\t\"INALIG\",\n\t\t\t\t\t\t\t\t\"KILAIT\",\n\t\t\t\t\t\t\t\t\"KULAWIT\",\n\t\t\t\t\t\t\t\t\"LAKIP\",\n\t\t\t\t\t\t\t\t\"LUBI\",\n\t\t\t\t\t\t\t\t\"LUMUTAN\",\n\t\t\t\t\t\t\t\t\"MAGSAYSAY\",\n\t\t\t\t\t\t\t\t\"MALINAO IBABA\",\n\t\t\t\t\t\t\t\t\"MALINAO ILAYA\",\n\t\t\t\t\t\t\t\t\"MALUSAK\",\n\t\t\t\t\t\t\t\t\"MANGGALAYAN BUNDOK\",\n\t\t\t\t\t\t\t\t\"MANGGALAYAN LABAK\",\n\t\t\t\t\t\t\t\t\"MATANAG\",\n\t\t\t\t\t\t\t\t\"MONTES BALAON\",\n\t\t\t\t\t\t\t\t\"MONTES KALLAGAN\",\n\t\t\t\t\t\t\t\t\"PONON\",\n\t\t\t\t\t\t\t\t\"RIZAL\",\n\t\t\t\t\t\t\t\t\"SAN ANDRES BUNDOK\",\n\t\t\t\t\t\t\t\t\"SAN ANDRES LABAK\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO\",\n\t\t\t\t\t\t\t\t\"SAN JOSE BALATOK\",\n\t\t\t\t\t\t\t\t\"SAN RAFAEL\",\n\t\t\t\t\t\t\t\t\"SANTA CATALINA\",\n\t\t\t\t\t\t\t\t\"SAPAAN\",\n\t\t\t\t\t\t\t\t\"SOKOL\",\n\t\t\t\t\t\t\t\t\"TAGBAKIN\",\n\t\t\t\t\t\t\t\t\"TALABA\",\n\t\t\t\t\t\t\t\t\"TINANDOG\",\n\t\t\t\t\t\t\t\t\"VILLA IBABA\",\n\t\t\t\t\t\t\t\t\"VILLA ILAYA\"\n\t\t\t\t\t\t  \t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t  \"name\": \"BUENAVISTA\",\n\t\t\t\t\t\t\t  \"districts\": [\n\t\t\t\t\t\t\t\t\"BAGONG SILANG\",\n\t\t\t\t\t\t\t\t\"BATABAT NORTE\",\n\t\t\t\t\t\t\t\t\"BATABAT SUR\",\n\t\t\t\t\t\t\t\t\"BUENAVISTA\",\n\t\t\t\t\t\t\t\t\"BUKAL\",\n\t\t\t\t\t\t\t\t\"BULO\",\n\t\t\t\t\t\t\t\t\"CABONG\",\n\t\t\t\t\t\t\t\t\"CADLIT\",\n\t\t\t\t\t\t\t\t\"CATULIN\",\n\t\t\t\t\t\t\t\t\"CAWA\",\n\t\t\t\t\t\t\t\t\"DE LA PAZ\",\n\t\t\t\t\t\t\t\t\"DEL ROSARIO\",\n\t\t\t\t\t\t\t\t\"HAGONGHONG\",\n\t\t\t\t\t\t\t\t\"IBABANG WASAY\",\n\t\t\t\t\t\t\t\t\"ILAYANG WASAY\",\n\t\t\t\t\t\t\t\t\"LILUKIN\",\n\t\t\t\t\t\t\t\t\"MABINI\",\n\t\t\t\t\t\t\t\t\"MABUTAG\",\n\t\t\t\t\t\t\t\t\"MAGALLANES\",\n\t\t\t\t\t\t\t\t\"MALIGAYA (ESPERANZA)\",\n\t\t\t\t\t\t\t\t\"MANLANA\",\n\t\t\t\t\t\t\t\t\"MASAYA\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"RIZAL\",\n\t\t\t\t\t\t\t\t\"SABANG PINAMASAGAN\",\n\t\t\t\t\t\t\t\t\"SABANG PIRIS\",\n\t\t\t\t\t\t\t\t\"SAN DIEGO\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO IBABA\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO ILAYA\",\n\t\t\t\t\t\t\t\t\"SAN PABLO\",\n\t\t\t\t\t\t\t\t\"SAN PEDRO (VILLA RODRIGO)\",\n\t\t\t\t\t\t\t\t\"SAN VICENTE\",\n\t\t\t\t\t\t\t\t\"SIAIN\",\n\t\t\t\t\t\t\t\t\"VILLA AURORA\",\n\t\t\t\t\t\t\t\t\"VILLA BATABAT\",\n\t\t\t\t\t\t\t\t\"VILLA MAGSAYSAY\",\n\t\t\t\t\t\t\t\t\"VILLA VERONICA\"\n\t\t\t\t\t\t  \t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t  \"name\": \"BURDEOS\",\n\t\t\t\t\t\t\t  \"districts\": [\n\t\t\t\t\t\t\t\t\"ALUYON\",\n\t\t\t\t\t\t\t\t\"AMOT\",\n\t\t\t\t\t\t\t\t\"ANIBAWAN\",\n\t\t\t\t\t\t\t\t\"BONIFACIO\",\n\t\t\t\t\t\t\t\t\"CABUGAO\",\n\t\t\t\t\t\t\t\t\"CABUNGALUNAN\",\n\t\t\t\t\t\t\t\t\"CALUTCOT\",\n\t\t\t\t\t\t\t\t\"CANIWAN\",\n\t\t\t\t\t\t\t\t\"CARLAGAN\",\n\t\t\t\t\t\t\t\t\"MABINI\",\n\t\t\t\t\t\t\t\t\"PALASAN\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"RIZAL\",\n\t\t\t\t\t\t\t\t\"SAN RAFAEL\"\n\t\t\t\t\t\t  \t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t  \"name\": \"CALAUAG\",\n\t\t\t\t\t\t\t  \"districts\": [\n\t\t\t\t\t\t\t\t\"AGOHO\",\n\t\t\t\t\t\t\t\t\"ANAHAWAN\",\n\t\t\t\t\t\t\t\t\"ANAS\",\n\t\t\t\t\t\t\t\t\"APAD LUTAO\",\n\t\t\t\t\t\t\t\t\"APAD QUEZON\",\n\t\t\t\t\t\t\t\t\"APAD TAISAN\",\n\t\t\t\t\t\t\t\t\"ATULAYAN\",\n\t\t\t\t\t\t\t\t\"BACLARAN\",\n\t\t\t\t\t\t\t\t\"BAGONG SILANG\",\n\t\t\t\t\t\t\t\t\"BALIBAGO\",\n\t\t\t\t\t\t\t\t\"BANGKURUHAN\",\n\t\t\t\t\t\t\t\t\"BANTOLINAO\",\n\t\t\t\t\t\t\t\t\"BARANGAY I (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY II (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY III (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY IV (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY V (POB.)\",\n\t\t\t\t\t\t\t\t\"BIGAAN\",\n\t\t\t\t\t\t\t\t\"BINUTAS\",\n\t\t\t\t\t\t\t\t\"BIYAN\",\n\t\t\t\t\t\t\t\t\"BUKAL\",\n\t\t\t\t\t\t\t\t\"BULI\",\n\t\t\t\t\t\t\t\t\"DAPDAP\",\n\t\t\t\t\t\t\t\t\"DO\u00F1A AURORA\",\n\t\t\t\t\t\t\t\t\"DOMINLOG\",\n\t\t\t\t\t\t\t\t\"GUINOSAYAN\",\n\t\t\t\t\t\t\t\t\"IPIL\",\n\t\t\t\t\t\t\t\t\"KALIBO (SANTA CRUZ)\",\n\t\t\t\t\t\t\t\t\"KAPALUHAN\",\n\t\t\t\t\t\t\t\t\"KATANGTANG\",\n\t\t\t\t\t\t\t\t\"KIGTAN\",\n\t\t\t\t\t\t\t\t\"KINALIN IBABA\",\n\t\t\t\t\t\t\t\t\"KINALIN ILAYA\",\n\t\t\t\t\t\t\t\t\"KINAMALIGAN\",\n\t\t\t\t\t\t\t\t\"KUMALUDKUD\",\n\t\t\t\t\t\t\t\t\"KUNALUM\",\n\t\t\t\t\t\t\t\t\"KUYAOYAO\",\n\t\t\t\t\t\t\t\t\"LAGAY\",\n\t\t\t\t\t\t\t\t\"LAINGLAINGAN\",\n\t\t\t\t\t\t\t\t\"LUNGIB\",\n\t\t\t\t\t\t\t\t\"MABINI\",\n\t\t\t\t\t\t\t\t\"MADLANGDUNGAN\",\n\t\t\t\t\t\t\t\t\"MAGLIPAD (ROSARIO)\",\n\t\t\t\t\t\t\t\t\"MALIGAYA\",\n\t\t\t\t\t\t\t\t\"MAMBALING\",\n\t\t\t\t\t\t\t\t\"MANHULUGIN\",\n\t\t\t\t\t\t\t\t\"MARILAG (PUNAYA)\",\n\t\t\t\t\t\t\t\t\"MULAY\",\n\t\t\t\t\t\t\t\t\"PANDANAN\",\n\t\t\t\t\t\t\t\t\"PANSOL\",\n\t\t\t\t\t\t\t\t\"PATIHAN\",\n\t\t\t\t\t\t\t\t\"PINAGBAYANAN\",\n\t\t\t\t\t\t\t\t\"PINAGKAMALIGAN\",\n\t\t\t\t\t\t\t\t\"PINAGSAKAHAN\",\n\t\t\t\t\t\t\t\t\"PINAGTALLERAN\",\n\t\t\t\t\t\t\t\t\"RIZAL IBABA\",\n\t\t\t\t\t\t\t\t\"RIZAL ILAYA\",\n\t\t\t\t\t\t\t\t\"SABANG I\",\n\t\t\t\t\t\t\t\t\"SABANG II\",\n\t\t\t\t\t\t\t\t\"SALVACION\",\n\t\t\t\t\t\t\t\t\"SAN QUINTIN\",\n\t\t\t\t\t\t\t\t\"SAN ROQUE IBABA\",\n\t\t\t\t\t\t\t\t\"SAN ROQUE ILAYA\",\n\t\t\t\t\t\t\t\t\"SANTA CECILIA\",\n\t\t\t\t\t\t\t\t\"SANTA MARIA\",\n\t\t\t\t\t\t\t\t\"SANTA MILAGROSA\",\n\t\t\t\t\t\t\t\t\"SANTA ROSA\",\n\t\t\t\t\t\t\t\t\"SANTO ANGEL (PANGAHOY)\",\n\t\t\t\t\t\t\t\t\"SANTO DOMINGO\",\n\t\t\t\t\t\t\t\t\"SINAG\",\n\t\t\t\t\t\t\t\t\"SUMILANG\",\n\t\t\t\t\t\t\t\t\"SUMULONG\",\n\t\t\t\t\t\t\t\t\"TABANSAK\",\n\t\t\t\t\t\t\t\t\"TALINGTING\",\n\t\t\t\t\t\t\t\t\"TAMIS\",\n\t\t\t\t\t\t\t\t\"TIKIWAN\",\n\t\t\t\t\t\t\t\t\"TINIGUIBAN\",\n\t\t\t\t\t\t\t\t\"VI\u00F1AS\",\n\t\t\t\t\t\t\t\t\"VILLA MAGSINO\",\n\t\t\t\t\t\t\t\t\"VILLA SAN ISIDRO\",\n\t\t\t\t\t\t\t\t\"YAGANAK\"\n\t\t\t\t\t\t  \t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t  \"name\": \"CANDELARIA\",\n\t\t\t\t\t\t\t  \"districts\": [\n\t\t\t\t\t\t\t\t\"BUENAVISTA EAST\",\n\t\t\t\t\t\t\t\t\"BUENAVISTA WEST\",\n\t\t\t\t\t\t\t\t\"BUKAL NORTE\",\n\t\t\t\t\t\t\t\t\"BUKAL SUR\",\n\t\t\t\t\t\t\t\t\"KINATIHAN I\",\n\t\t\t\t\t\t\t\t\"KINATIHAN II\",\n\t\t\t\t\t\t\t\t\"MALABANBAN NORTE\",\n\t\t\t\t\t\t\t\t\"MALABANBAN SUR\",\n\t\t\t\t\t\t\t\t\"MANGILAG NORTE\",\n\t\t\t\t\t\t\t\t\"MANGILAG SUR\",\n\t\t\t\t\t\t\t\t\"MASALUKOT I\",\n\t\t\t\t\t\t\t\t\"MASALUKOT II\",\n\t\t\t\t\t\t\t\t\"MASALUKOT III\",\n\t\t\t\t\t\t\t\t\"MASALUKOT IV\",\n\t\t\t\t\t\t\t\t\"MASALUKOT V\",\n\t\t\t\t\t\t\t\t\"MASIN NORTE\",\n\t\t\t\t\t\t\t\t\"MASIN SUR\",\n\t\t\t\t\t\t\t\t\"MAYABOBO\",\n\t\t\t\t\t\t\t\t\"PAHINGA NORTE\",\n\t\t\t\t\t\t\t\t\"PAHINGA SUR\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"SAN ANDRES\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO\",\n\t\t\t\t\t\t\t\t\"SANTA CATALINA NORTE\",\n\t\t\t\t\t\t\t\t\"SANTA CATALINA SUR\"\n\t\t\t\t\t\t  \t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t  \"name\": \"CATANAUAN\",\n\t\t\t\t\t\t\t  \"districts\": [\n\t\t\t\t\t\t\t\t\"BUENAVISTA EAST\",\n\t\t\t\t\t\t\t\t\"BUENAVISTA WEST\",\n\t\t\t\t\t\t\t\t\"BUKAL NORTE\",\n\t\t\t\t\t\t\t\t\"BUKAL SUR\",\n\t\t\t\t\t\t\t\t\"KINATIHAN I\",\n\t\t\t\t\t\t\t\t\"KINATIHAN II\",\n\t\t\t\t\t\t\t\t\"MALABANBAN NORTE\",\n\t\t\t\t\t\t\t\t\"MALABANBAN SUR\",\n\t\t\t\t\t\t\t\t\"MANGILAG NORTE\",\n\t\t\t\t\t\t\t\t\"MANGILAG SUR\",\n\t\t\t\t\t\t\t\t\"MASALUKOT I\",\n\t\t\t\t\t\t\t\t\"MASALUKOT II\",\n\t\t\t\t\t\t\t\t\"MASALUKOT III\",\n\t\t\t\t\t\t\t\t\"MASALUKOT IV\",\n\t\t\t\t\t\t\t\t\"MASALUKOT V\",\n\t\t\t\t\t\t\t\t\"MASIN NORTE\",\n\t\t\t\t\t\t\t\t\"MASIN SUR\",\n\t\t\t\t\t\t\t\t\"MAYABOBO\",\n\t\t\t\t\t\t\t\t\"PAHINGA NORTE\",\n\t\t\t\t\t\t\t\t\"PAHINGA SUR\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"SAN ANDRES\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO\",\n\t\t\t\t\t\t\t\t\"SANTA CATALINA NORTE\",\n\t\t\t\t\t\t\t\t\"SANTA CATALINA SUR\",\n\t\t\t\t\t\t\t\t\"MADULAO\",\n\t\t\t\t\t\t\t\t\"MATANDANG SABANG KANLURAN\",\n\t\t\t\t\t\t\t\t\"MATANDANG SABANG SILANGAN\",\n\t\t\t\t\t\t\t\t\"MILAGROSA\",\n\t\t\t\t\t\t\t\t\"NAVITAS\",\n\t\t\t\t\t\t\t\t\"PACABIT\",\n\t\t\t\t\t\t\t\t\"SAN ANTONIO MAGKUPA\",\n\t\t\t\t\t\t\t\t\"SAN ANTONIO PALA\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO\",\n\t\t\t\t\t\t\t\t\"SAN JOSE (ANYAO)\",\n\t\t\t\t\t\t\t\t\"SAN PABLO (SUHA)\",\n\t\t\t\t\t\t\t\t\"SAN ROQUE (DOYON)\",\n\t\t\t\t\t\t\t\t\"SAN VICENTE KANLURAN\",\n\t\t\t\t\t\t\t\t\"SAN VICENTE SILANGAN\",\n\t\t\t\t\t\t\t\t\"SANTA MARIA (DAO)\",\n\t\t\t\t\t\t\t\t\"TAGABAS IBABA\",\n\t\t\t\t\t\t\t\t\"TAGABAS ILAYA\",\n\t\t\t\t\t\t\t\t\"TAGBACAN IBABA\",\n\t\t\t\t\t\t\t\t\"TAGBACAN ILAYA\",\n\t\t\t\t\t\t\t\t\"TAGBACAN SILANGAN\",\n\t\t\t\t\t\t\t\t\"TUHIAN\"\n\t\t\t\t\t\t  \t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t  \"name\": \"CITY OF TAYABAS\",\n\t\t\t\t\t\t\t  \"districts\": [\n\t\t\t\t\t\t\t\t\"ALITAO\",\n\t\t\t\t\t\t\t\t\"ALSAM IBABA\",\n\t\t\t\t\t\t\t\t\"ALSAM ILAYA\",\n\t\t\t\t\t\t\t\t\"ALUPAY\",\n\t\t\t\t\t\t\t\t\"ANGELES ZONE I (POB.)\",\n\t\t\t\t\t\t\t\t\"ANGELES ZONE II\",\n\t\t\t\t\t\t\t\t\"ANGELES ZONE III\",\n\t\t\t\t\t\t\t\t\"ANGELES ZONE IV\",\n\t\t\t\t\t\t\t\t\"ANGUSTIAS ZONE I (POB.)\",\n\t\t\t\t\t\t\t\t\"ANGUSTIAS ZONE II\",\n\t\t\t\t\t\t\t\t\"ANGUSTIAS ZONE III\",\n\t\t\t\t\t\t\t\t\"ANGUSTIAS ZONE IV\",\n\t\t\t\t\t\t\t\t\"ANOS\",\n\t\t\t\t\t\t\t\t\"AYAAS\",\n\t\t\t\t\t\t\t\t\"BAGUIO\",\n\t\t\t\t\t\t\t\t\"BANILAD\",\n\t\t\t\t\t\t\t\t\"BUKAL IBABA\",\n\t\t\t\t\t\t\t\t\"BUKAL ILAYA\",\n\t\t\t\t\t\t\t\t\"CALANTAS\",\n\t\t\t\t\t\t\t\t\"CALUMPANG\",\n\t\t\t\t\t\t\t\t\"CAMAYSA\",\n\t\t\t\t\t\t\t\t\"DAPDAP\",\n\t\t\t\t\t\t\t\t\"DOMOIT KANLURAN\",\n\t\t\t\t\t\t\t\t\"DOMOIT SILANGAN\",\n\t\t\t\t\t\t\t\t\"GIBANGA\",\n\t\t\t\t\t\t\t\t\"IBAS\",\n\t\t\t\t\t\t\t\t\"ILASAN IBABA\",\n\t\t\t\t\t\t\t\t\"ILASAN ILAYA\",\n\t\t\t\t\t\t\t\t\"IPILAN\",\n\t\t\t\t\t\t\t\t\"ISABANG\",\n\t\t\t\t\t\t\t\t\"KATIGAN KANLURAN\",\n\t\t\t\t\t\t\t\t\"KATIGAN SILANGAN\",\n\t\t\t\t\t\t\t\t\"LAKAWAN\",\n\t\t\t\t\t\t\t\t\"LALO\",\n\t\t\t\t\t\t\t\t\"LAWIGUE\",\n\t\t\t\t\t\t\t\t\"LITA (POB.)\",\n\t\t\t\t\t\t\t\t\"MALAOA\",\n\t\t\t\t\t\t\t\t\"MASIN\",\n\t\t\t\t\t\t\t\t\"MATE\",\n\t\t\t\t\t\t\t\t\"MATEUNA\",\n\t\t\t\t\t\t\t\t\"MAYOWE\",\n\t\t\t\t\t\t\t\t\"NANGKA IBABA\",\n\t\t\t\t\t\t\t\t\"NANGKA ILAYA\",\n\t\t\t\t\t\t\t\t\"OPIAS\",\n\t\t\t\t\t\t\t\t\"PALALE IBABA\",\n\t\t\t\t\t\t\t\t\"PALALE ILAYA\",\n\t\t\t\t\t\t\t\t\"PALALE KANLURAN\",\n\t\t\t\t\t\t\t\t\"PALALE SILANGAN\",\n\t\t\t\t\t\t\t\t\"PANDAKAKI\",\n\t\t\t\t\t\t\t\t\"POOK\",\n\t\t\t\t\t\t\t\t\"POTOL\",\n\t\t\t\t\t\t\t\t\"SAN DIEGO ZONE I (POB.)\",\n\t\t\t\t\t\t\t\t\"SAN DIEGO ZONE II\",\n\t\t\t\t\t\t\t\t\"SAN DIEGO ZONE III\",\n\t\t\t\t\t\t\t\t\"SAN DIEGO ZONE IV\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO ZONE I (POB.)\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO ZONE II\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO ZONE III\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO ZONE IV\",\n\t\t\t\t\t\t\t\t\"SAN ROQUE ZONE I (POB.)\",\n\t\t\t\t\t\t\t\t\"SAN ROQUE ZONE II\",\n\t\t\t\t\t\t\t\t\"TALOLONG\",\n\t\t\t\t\t\t\t\t\"TAMLONG\",\n\t\t\t\t\t\t\t\t\"TONGKO\",\n\t\t\t\t\t\t\t\t\"VALENCIA\",\n\t\t\t\t\t\t\t\t\"WAKAS\"\n\t\t\t\t\t\t  \t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t  \"name\": \"DOLORES\",\n\t\t\t\t\t\t\t  \"districts\": [\n\t\t\t\t\t\t\t\t\"ANTONINO (AYUSAN)\",\n\t\t\t\t\t\t\t\t\"BAGONG ANYO (POB.)\",\n\t\t\t\t\t\t\t\t\"BAYANIHAN (POB.)\",\n\t\t\t\t\t\t\t\t\"BULAKIN I\",\n\t\t\t\t\t\t\t\t\"BULAKIN II\",\n\t\t\t\t\t\t\t\t\"BUNGOY\",\n\t\t\t\t\t\t\t\t\"CABATANG\",\n\t\t\t\t\t\t\t\t\"DAGATAN\",\n\t\t\t\t\t\t\t\t\"KINABUHAYAN\",\n\t\t\t\t\t\t\t\t\"MALIGAYA (POB.)\",\n\t\t\t\t\t\t\t\t\"MANGGAHAN\",\n\t\t\t\t\t\t\t\t\"PINAGDANLAYAN\",\n\t\t\t\t\t\t\t\t\"PUTOL\",\n\t\t\t\t\t\t\t\t\"SAN MATEO\",\n\t\t\t\t\t\t\t\t\"SANTA LUCIA\",\n\t\t\t\t\t\t\t\t\"SILANGANAN (POB.)\"\n\t\t\t\t\t\t  \t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t  \"name\": \"GENERAL LUNA\",\n\t\t\t\t\t\t\t  \"districts\": [\n\t\t\t\t\t\t\t\t\"BACONG IBABA\",\n\t\t\t\t\t\t\t\t\"BACONG ILAYA\",\n\t\t\t\t\t\t\t\t\"BARANGAY 1 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 2 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 3 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 4 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 5 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 6 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 7 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 8 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 9 (POB.)\",\n\t\t\t\t\t\t\t\t\"LAVIDES\",\n\t\t\t\t\t\t\t\t\"MAGSAYSAY\",\n\t\t\t\t\t\t\t\t\"MALAYA\",\n\t\t\t\t\t\t\t\t\"NIEVA\",\n\t\t\t\t\t\t\t\t\"RECTO\",\n\t\t\t\t\t\t\t\t\"SAN IGNACIO IBABA\",\n\t\t\t\t\t\t\t\t\"SAN IGNACIO ILAYA\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO IBABA\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO ILAYA\",\n\t\t\t\t\t\t\t\t\"SAN JOSE\",\n\t\t\t\t\t\t\t\t\"SAN NICOLAS\",\n\t\t\t\t\t\t\t\t\"SAN VICENTE\",\n\t\t\t\t\t\t\t\t\"SANTA MARIA IBABA\",\n\t\t\t\t\t\t\t\t\"SANTA MARIA ILAYA\",\n\t\t\t\t\t\t\t\t\"SUMILANG\",\n\t\t\t\t\t\t\t\t\"VILLARICA\"\t\t\n\t\t\t\t\t\t  \t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t  \"name\": \"GENERAL NAKAR\",\n\t\t\t\t\t\t\t  \"districts\": [\n\t\t\t\t\t\t\t\t\"ANOLING\",\n\t\t\t\t\t\t\t\t\"BANGLOS\",\n\t\t\t\t\t\t\t\t\"BATANGAN\",\n\t\t\t\t\t\t\t\t\"CANAWAY\",\n\t\t\t\t\t\t\t\t\"CATABLINGAN\",\n\t\t\t\t\t\t\t\t\"LUMUTAN\",\n\t\t\t\t\t\t\t\t\"MAGSIKAP\",\n\t\t\t\t\t\t\t\t\"MAHABANG LALIM\",\n\t\t\t\t\t\t\t\t\"MAIGANG\",\n\t\t\t\t\t\t\t\t\"MALIGAYA\",\n\t\t\t\t\t\t\t\t\"MINAHAN NORTE\",\n\t\t\t\t\t\t\t\t\"MINAHAN SUR\",\n\t\t\t\t\t\t\t\t\"PAGSANGAHAN\",\n\t\t\t\t\t\t\t\t\"PAMPLONA\",\n\t\t\t\t\t\t\t\t\"PISA\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"SABLANG\",\n\t\t\t\t\t\t\t\t\"SAN MARCELINO\",\n\t\t\t\t\t\t\t\t\"UMIRAY\"\n\t\t\t\t\t\t  \t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t  \"name\": \"GUINAYANGAN\",\n\t\t\t\t\t\t\t  \"districts\": [\n\t\t\t\t\t\t\t\t\"A. MABINI\",\n\t\t\t\t\t\t\t\t\"ALONEROS\",\n\t\t\t\t\t\t\t\t\"ARBISMEN\",\n\t\t\t\t\t\t\t\t\"BAGONG SILANG\",\n\t\t\t\t\t\t\t\t\"BALINARIN\",\n\t\t\t\t\t\t\t\t\"BUKAL MALIGAYA\",\n\t\t\t\t\t\t\t\t\"CABIBIHAN\",\n\t\t\t\t\t\t\t\t\"CABONG NORTE\",\n\t\t\t\t\t\t\t\t\"CABONG SUR\",\n\t\t\t\t\t\t\t\t\"CALIMPAK\",\n\t\t\t\t\t\t\t\t\"CAPULUAN CENTRAL\",\n\t\t\t\t\t\t\t\t\"CAPULUAN TULON\",\n\t\t\t\t\t\t\t\t\"DANCALAN CAIMAWAN\",\n\t\t\t\t\t\t\t\t\"DANCALAN CENTRAL\",\n\t\t\t\t\t\t\t\t\"DANLAGAN BATIS\",\n\t\t\t\t\t\t\t\t\"DANLAGAN CABAYAO\",\n\t\t\t\t\t\t\t\t\"DANLAGAN CENTRAL\",\n\t\t\t\t\t\t\t\t\"DANLAGAN RESERVA\",\n\t\t\t\t\t\t\t\t\"DEL ROSARIO\",\n\t\t\t\t\t\t\t\t\"DUNGAWAN CENTRAL\",\n\t\t\t\t\t\t\t\t\"DUNGAWAN PAALYUNAN\",\n\t\t\t\t\t\t\t\t\"DUNGAWAN PANTAY\",\n\t\t\t\t\t\t\t\t\"ERMITA\",\n\t\t\t\t\t\t\t\t\"GAPAS\",\n\t\t\t\t\t\t\t\t\"HIMBUBULO ESTE\",\n\t\t\t\t\t\t\t\t\"HIMBUBULO WESTE\",\n\t\t\t\t\t\t\t\t\"HINABAAN\",\n\t\t\t\t\t\t\t\t\"LIGPIT BANTAYAN\",\n\t\t\t\t\t\t\t\t\"LUBIGAN\",\n\t\t\t\t\t\t\t\t\"MAGALLANES\",\n\t\t\t\t\t\t\t\t\"MAGSAYSAY\",\n\t\t\t\t\t\t\t\t\"MANGGAGAWA\",\n\t\t\t\t\t\t\t\t\"MANGGALANG\",\n\t\t\t\t\t\t\t\t\"MANLAYO\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"SALAKAN\",\n\t\t\t\t\t\t\t\t\"SAN ANTONIO\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO\",\n\t\t\t\t\t\t\t\t\"SAN JOSE\",\n\t\t\t\t\t\t\t\t\"SAN LORENZO\",\n\t\t\t\t\t\t\t\t\"SAN LUIS I\",\n\t\t\t\t\t\t\t\t\"SAN LUIS II\",\n\t\t\t\t\t\t\t\t\"SAN MIGUEL\",\n\t\t\t\t\t\t\t\t\"SAN PEDRO I\",\n\t\t\t\t\t\t\t\t\"SAN PEDRO II\",\n\t\t\t\t\t\t\t\t\"SAN ROQUE\",\n\t\t\t\t\t\t\t\t\"SANTA CRUZ\",\n\t\t\t\t\t\t\t\t\"SANTA MARIA\",\n\t\t\t\t\t\t\t\t\"SANTA TERESITA\",\n\t\t\t\t\t\t\t\t\"SINTONES\",\n\t\t\t\t\t\t\t\t\"SISI\",\n\t\t\t\t\t\t\t\t\"TIKAY\",\n\t\t\t\t\t\t\t\t\"TRIUMPO\",\n\t\t\t\t\t\t\t\t\"VILLA HIWASAYAN\"\t\n\t\t\t\t\t\t  \t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t  \"name\": \"GUMACA\",\n\t\t\t\t\t\t\t  \"districts\": [\n\t\t\t\t\t\t\t\t\"ADIA BITAOG\",\n\t\t\t\t\t\t\t\t\"ANONANGIN\",\n\t\t\t\t\t\t\t\t\"BAGONG BUHAY (POB.)\",\n\t\t\t\t\t\t\t\t\"BAMBAN\",\n\t\t\t\t\t\t\t\t\"BANTAD\",\n\t\t\t\t\t\t\t\t\"BATONG DALIG\",\n\t\t\t\t\t\t\t\t\"BIGA\",\n\t\t\t\t\t\t\t\t\"BINAMBANG\",\n\t\t\t\t\t\t\t\t\"BUENSUCESO\",\n\t\t\t\t\t\t\t\t\"BUNGAHAN\",\n\t\t\t\t\t\t\t\t\"BUTAGUIN\",\n\t\t\t\t\t\t\t\t\"CALUMANGIN\",\n\t\t\t\t\t\t\t\t\"CAMOHAGUIN\",\n\t\t\t\t\t\t\t\t\"CASASAHAN IBABA\",\n\t\t\t\t\t\t\t\t\"CASASAHAN ILAYA\",\n\t\t\t\t\t\t\t\t\"CAWAYAN\",\n\t\t\t\t\t\t\t\t\"GAYAGAYAAN\",\n\t\t\t\t\t\t\t\t\"GITNANG BARRIO\",\n\t\t\t\t\t\t\t\t\"HAGAKHAKIN\",\n\t\t\t\t\t\t\t\t\"HARDINAN\",\n\t\t\t\t\t\t\t\t\"INACLAGAN\",\n\t\t\t\t\t\t\t\t\"INAGBUHAN ILAYA\",\n\t\t\t\t\t\t\t\t\"LABNIG\",\n\t\t\t\t\t\t\t\t\"LAGUNA\",\n\t\t\t\t\t\t\t\t\"LAGYO\",\n\t\t\t\t\t\t\t\t\"MABINI (POB.)\",\n\t\t\t\t\t\t\t\t\"MABUNGA\",\n\t\t\t\t\t\t\t\t\"MALABTOG\",\n\t\t\t\t\t\t\t\t\"MANLAYAAN\",\n\t\t\t\t\t\t\t\t\"MARCELO H. DEL PILAR\",\n\t\t\t\t\t\t\t\t\"MATAAS NA BUNDOK\",\n\t\t\t\t\t\t\t\t\"MAUNLAD (POB.)\",\n\t\t\t\t\t\t\t\t\"PAGSABANGAN\",\n\t\t\t\t\t\t\t\t\"PANIKIHAN\",\n\t\t\t\t\t\t\t\t\"PE\u00F1AFRANCIA (POB.)\",\n\t\t\t\t\t\t\t\t\"PIPISIK (POB.)\",\n\t\t\t\t\t\t\t\t\"PROGRESO\",\n\t\t\t\t\t\t\t\t\"RIZAL (POB.)\",\n\t\t\t\t\t\t\t\t\"ROSARIO\",\n\t\t\t\t\t\t\t\t\"SAN AGUSTIN\",\n\t\t\t\t\t\t\t\t\"SAN DIEGO\",\n\t\t\t\t\t\t\t\t\"SAN DIEGO POBLACION\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO KANLURAN\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO SILANGAN\",\n\t\t\t\t\t\t\t\t\"SAN JUAN DE JESUS\",\n\t\t\t\t\t\t\t\t\"SAN VICENTE\",\n\t\t\t\t\t\t\t\t\"SASTRE\",\n\t\t\t\t\t\t\t\t\"TABING DAGAT (POB.)\",\n\t\t\t\t\t\t\t\t\"TUMAYAN\",\n\t\t\t\t\t\t\t\t\"VILLA ARCAYA\",\n\t\t\t\t\t\t\t\t\"VILLA BOTA\",\n\t\t\t\t\t\t\t\t\"VILLA FUERTE\",\n\t\t\t\t\t\t\t\t\"VILLA M. PRINCIPE\",\n\t\t\t\t\t\t\t\t\"VILLA MENDOZA\",\n\t\t\t\t\t\t\t\t\"VILLA NAVA\",\n\t\t\t\t\t\t\t\t\"VILLA PADUA\",\n\t\t\t\t\t\t\t\t\"VILLA PEREZ\",\n\t\t\t\t\t\t\t\t\"VILLA TA\u00F1ADA\",\n\t\t\t\t\t\t\t\t\"VILLA VICTORIA\",\n\t\t\t\t\t\t\t\t\"SAN ROQUE ZONE I (POB.)\",\n\t\t\t\t\t\t\t\t\"SAN ROQUE ZONE II\",\n\t\t\t\t\t\t\t\t\"TALOLONG\",\n\t\t\t\t\t\t\t\t\"TAMLONG\",\n\t\t\t\t\t\t\t\t\"TONGKO\",\n\t\t\t\t\t\t\t\t\"VALENCIA\",\n\t\t\t\t\t\t\t\t\"WAKAS\"\t\n\t\t\t\t\t\t  \t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t  \"name\": \"INFANTA\",\n\t\t\t\t\t\t\t  \"districts\": [\n\t\t\t\t\t\t\t\t\"ABIAWIN\",\n\t\t\t\t\t\t\t\t\"AGOS-AGOS\",\n\t\t\t\t\t\t\t\t\"ALITAS\",\n\t\t\t\t\t\t\t\t\"AMOLONGIN\",\n\t\t\t\t\t\t\t\t\"ANIBONG\",\n\t\t\t\t\t\t\t\t\"ANTIKIN\",\n\t\t\t\t\t\t\t\t\"BACONG\",\n\t\t\t\t\t\t\t\t\"BALOBO\",\n\t\t\t\t\t\t\t\t\"BANTILAN\",\n\t\t\t\t\t\t\t\t\"BANUGAO\",\n\t\t\t\t\t\t\t\t\"BATICAN\",\n\t\t\t\t\t\t\t\t\"BINONOAN\",\n\t\t\t\t\t\t\t\t\"BINULASAN\",\n\t\t\t\t\t\t\t\t\"BOBOIN\",\n\t\t\t\t\t\t\t\t\"CATAMBUNGAN\",\n\t\t\t\t\t\t\t\t\"CAWAYNIN\",\n\t\t\t\t\t\t\t\t\"COMON\",\n\t\t\t\t\t\t\t\t\"DINAHICAN\",\n\t\t\t\t\t\t\t\t\"GUMIAN\",\n\t\t\t\t\t\t\t\t\"ILOG\",\n\t\t\t\t\t\t\t\t\"INGAS\",\n\t\t\t\t\t\t\t\t\"LANGGAS\",\n\t\t\t\t\t\t\t\t\"LIBJO\",\n\t\t\t\t\t\t\t\t\"LUAL\",\n\t\t\t\t\t\t\t\t\"MAGSAYSAY\",\n\t\t\t\t\t\t\t\t\"MAYPULOT\",\n\t\t\t\t\t\t\t\t\"MISWA\",\n\t\t\t\t\t\t\t\t\"PILAWAY\",\n\t\t\t\t\t\t\t\t\"PINAGLAPATAN\",\n\t\t\t\t\t\t\t\t\"POBLACION 1 (BARANGAY 1)\",\n\t\t\t\t\t\t\t\t\"POBLACION 38 (POBLACION BARANGAY 2)\",\n\t\t\t\t\t\t\t\t\"POBLACION 39 (POBLACION BARANGAY 3)\",\n\t\t\t\t\t\t\t\t\"PULO\",\n\t\t\t\t\t\t\t\t\"SILANGAN\",\n\t\t\t\t\t\t\t\t\"TONGOHIN\",\n\t\t\t\t\t\t\t\t\"TUDTURAN\"\t\n\t\t\t\t\t\t  \t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t  \"name\": \"JOMALIG\",\n\t\t\t\t\t\t\t  \"districts\": [\n\t\t\t\t\t\t\t\t\"APAD\",\n\t\t\t\t\t\t\t\t\"BUKAL\",\n\t\t\t\t\t\t\t\t\"CASUGURAN\",\n\t\t\t\t\t\t\t\t\"GANGO\",\n\t\t\t\t\t\t\t\t\"TALISOY (POB.)\"\n\t\t\t\t\t\t  \t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t  \"name\": \"LOPEZ\",\n\t\t\t\t\t\t\t  \"districts\": [\n\t\t\t\t\t\t\t\t\"BACUNGAN\",\n\t\t\t\t\t\t\t\t\"BAGACAY\",\n\t\t\t\t\t\t\t\t\"BANABAHIN IBABA\",\n\t\t\t\t\t\t\t\t\"BANABAHIN ILAYA\",\n\t\t\t\t\t\t\t\t\"BAYABAS\",\n\t\t\t\t\t\t\t\t\"BEBITO\",\n\t\t\t\t\t\t\t\t\"BIGAJO\",\n\t\t\t\t\t\t\t\t\"BINAHIAN A\",\n\t\t\t\t\t\t\t\t\"BINAHIAN B\",\n\t\t\t\t\t\t\t\t\"BINAHIAN C\",\n\t\t\t\t\t\t\t\t\"BOCBOC\",\n\t\t\t\t\t\t\t\t\"BUENAVISTA\",\n\t\t\t\t\t\t\t\t\"BURGOS (POB.)\",\n\t\t\t\t\t\t\t\t\"BUYACANIN\",\n\t\t\t\t\t\t\t\t\"CAGACAG\",\n\t\t\t\t\t\t\t\t\"CALANTIPAYAN\",\n\t\t\t\t\t\t\t\t\"CANDA IBABA\",\n\t\t\t\t\t\t\t\t\"CANDA ILAYA\",\n\t\t\t\t\t\t\t\t\"CAWAYAN\",\n\t\t\t\t\t\t\t\t\"CAWAYANIN\",\n\t\t\t\t\t\t\t\t\"COGORIN IBABA\",\n\t\t\t\t\t\t\t\t\"COGORIN ILAYA\",\n\t\t\t\t\t\t\t\t\"CONCEPCION\",\n\t\t\t\t\t\t\t\t\"DANLAGAN\",\n\t\t\t\t\t\t\t\t\"DE LA PAZ\",\n\t\t\t\t\t\t\t\t\"DEL PILAR\",\n\t\t\t\t\t\t\t\t\"DEL ROSARIO\",\n\t\t\t\t\t\t\t\t\"ESPERANZA IBABA\",\n\t\t\t\t\t\t\t\t\"ESPERANZA ILAYA\",\n\t\t\t\t\t\t\t\t\"GOMEZ (POB.)\",\n\t\t\t\t\t\t\t\t\"GUIHAY\",\n\t\t\t\t\t\t\t\t\"GUINUANGAN\",\n\t\t\t\t\t\t\t\t\"GUITES\",\n\t\t\t\t\t\t\t\t\"HONDAGUA\",\n\t\t\t\t\t\t\t\t\"ILAYANG ILOG A\",\n\t\t\t\t\t\t\t\t\"ILAYANG ILOG B\",\n\t\t\t\t\t\t\t\t\"INALUSAN\",\n\t\t\t\t\t\t\t\t\"JONGO\",\n\t\t\t\t\t\t\t\t\"LALAGUNA\",\n\t\t\t\t\t\t\t\t\"LOURDES\",\n\t\t\t\t\t\t\t\t\"MABANBAN\",\n\t\t\t\t\t\t\t\t\"MABINI\",\n\t\t\t\t\t\t\t\t\"MAGALLANES\",\n\t\t\t\t\t\t\t\t\"MAGSAYSAY (POB.)\",\n\t\t\t\t\t\t\t\t\"MAGUILAYAN\",\n\t\t\t\t\t\t\t\t\"MAHAYOD-HAYOD\",\n\t\t\t\t\t\t\t\t\"MAL-AY\",\n\t\t\t\t\t\t\t\t\"MANDOOG\",\n\t\t\t\t\t\t\t\t\"MANGUISIAN\",\n\t\t\t\t\t\t\t\t\"MATINIK\",\n\t\t\t\t\t\t\t\t\"MONTECLARO\",\n\t\t\t\t\t\t\t\t\"PAMAMPANGIN\",\n\t\t\t\t\t\t\t\t\"PANSOL\",\n\t\t\t\t\t\t\t\t\"PE\u00F1AFRANCIA\",\n\t\t\t\t\t\t\t\t\"PISIPIS\",\n\t\t\t\t\t\t\t\t\"RIZAL (POBLACION)\",\n\t\t\t\t\t\t\t\t\"RIZAL (RURAL)\",\n\t\t\t\t\t\t\t\t\"ROMA\",\n\t\t\t\t\t\t\t\t\"ROSARIO\",\n\t\t\t\t\t\t\t\t\"SAMAT\",\n\t\t\t\t\t\t\t\t\"SAN ANDRES\",\n\t\t\t\t\t\t\t\t\"SAN ANTONIO\",\n\t\t\t\t\t\t\t\t\"SAN FRANCISCO A\",\n\t\t\t\t\t\t\t\t\"SAN FRANCISCO B\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO\",\n\t\t\t\t\t\t\t\t\"SAN JOSE\",\n\t\t\t\t\t\t\t\t\"SAN MIGUEL (DAO)\",\n\t\t\t\t\t\t\t\t\"SAN PEDRO\",\n\t\t\t\t\t\t\t\t\"SAN RAFAEL\",\n\t\t\t\t\t\t\t\t\"SAN ROQUE\",\n\t\t\t\t\t\t\t\t\"SANTA CATALINA\",\n\t\t\t\t\t\t\t\t\"SANTA ELENA\",\n\t\t\t\t\t\t\t\t\"SANTA JACOBE\",\n\t\t\t\t\t\t\t\t\"SANTA LUCIA\",\n\t\t\t\t\t\t\t\t\"SANTA MARIA\",\n\t\t\t\t\t\t\t\t\"SANTA ROSA\",\n\t\t\t\t\t\t\t\t\"SANTA TERESA (MAYUPAG)\",\n\t\t\t\t\t\t\t\t\"SANTO NI\u00F1O IBABA\",\n\t\t\t\t\t\t\t\t\"SANTO NI\u00F1O ILAYA\",\n\t\t\t\t\t\t\t\t\"SILANG\",\n\t\t\t\t\t\t\t\t\"SUGOD\",\n\t\t\t\t\t\t\t\t\"SUMALANG\",\n\t\t\t\t\t\t\t\t\"TALOLONG (POB.)\",\n\t\t\t\t\t\t\t\t\"TAN-AG IBABA\",\n\t\t\t\t\t\t\t\t\"TAN-AG ILAYA\",\n\t\t\t\t\t\t\t\t\"TOCALIN\",\n\t\t\t\t\t\t\t\t\"VEGAFLOR\",\n\t\t\t\t\t\t\t\t\"VERGA\u00F1A\",\n\t\t\t\t\t\t\t\t\"VERONICA\",\n\t\t\t\t\t\t\t\t\"VILLA AURORA\",\n\t\t\t\t\t\t\t\t\"VILLA ESPINA\",\n\t\t\t\t\t\t\t\t\"VILLA GEDA\",\n\t\t\t\t\t\t\t\t\"VILLA HERMOSA\",\n\t\t\t\t\t\t\t\t\"VILLAMONTE\",\n\t\t\t\t\t\t\t\t\"VILLANACAOB\"\n\t\t\t\t\t\t  \t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t  \"name\": \"LUCBAN\",\n\t\t\t\t\t\t\t  \"districts\": [\n\t\t\t\t\t\t\t\t\"ABANG\",\n\t\t\t\t\t\t\t\t\"ALILIW\",\n\t\t\t\t\t\t\t\t\"ATULINAO\",\n\t\t\t\t\t\t\t\t\"AYUTI\",\n\t\t\t\t\t\t\t\t\"BARANGAY 1 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 10 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 2 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 3 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 4 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 5 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 6 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 7 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 8 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 9 (POB.)\",\n\t\t\t\t\t\t\t\t\"IGANG\",\n\t\t\t\t\t\t\t\t\"KABATETE\",\n\t\t\t\t\t\t\t\t\"KAKAWIT\",\n\t\t\t\t\t\t\t\t\"KALANGAY\",\n\t\t\t\t\t\t\t\t\"KALYAAT\",\n\t\t\t\t\t\t\t\t\"KILIB\",\n\t\t\t\t\t\t\t\t\"KULAPI\",\n\t\t\t\t\t\t\t\t\"MAHABANG PARANG\",\n\t\t\t\t\t\t\t\t\"MALUPAK\",\n\t\t\t\t\t\t\t\t\"MANASA\",\n\t\t\t\t\t\t\t\t\"MAY-IT\",\n\t\t\t\t\t\t\t\t\"NAGSINAMO\",\n\t\t\t\t\t\t\t\t\"NALUNAO\",\n\t\t\t\t\t\t\t\t\"PALOLA\",\n\t\t\t\t\t\t\t\t\"PIIS\",\n\t\t\t\t\t\t\t\t\"SAMIL\",\n\t\t\t\t\t\t\t\t\"TIAWE\",\n\t\t\t\t\t\t\t\t\"TINAMNAN\"\t\n\t\t\t\t\t\t  \t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t  \"name\": \"LUCENA CITY\",\n\t\t\t\t\t\t\t  \"districts\": [\n\t\t\t\t\t\t\t\t\"BARANGAY 1 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 10 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 11 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 2 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 3 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 4 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 5 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 6 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 7 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 8 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 9 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARRA\",\n\t\t\t\t\t\t\t\t\"BOCOHAN\",\n\t\t\t\t\t\t\t\t\"COTTA\",\n\t\t\t\t\t\t\t\t\"DALAHICAN\",\n\t\t\t\t\t\t\t\t\"DOMOIT\",\n\t\t\t\t\t\t\t\t\"GULANG-GULANG\",\n\t\t\t\t\t\t\t\t\"IBABANG DUPAY\",\n\t\t\t\t\t\t\t\t\"IBABANG IYAM\",\n\t\t\t\t\t\t\t\t\"IBABANG TALIM\",\n\t\t\t\t\t\t\t\t\"ILAYANG DUPAY\",\n\t\t\t\t\t\t\t\t\"ILAYANG IYAM\",\n\t\t\t\t\t\t\t\t\"ILAYANG TALIM\",\n\t\t\t\t\t\t\t\t\"ISABANG\",\n\t\t\t\t\t\t\t\t\"MARKET VIEW\",\n\t\t\t\t\t\t\t\t\"MAYAO CASTILLO\",\n\t\t\t\t\t\t\t\t\"MAYAO CROSSING\",\n\t\t\t\t\t\t\t\t\"MAYAO KANLURAN\",\n\t\t\t\t\t\t\t\t\"MAYAO PARADA\",\n\t\t\t\t\t\t\t\t\"MAYAO SILANGAN\",\n\t\t\t\t\t\t\t\t\"RANSOHAN\",\n\t\t\t\t\t\t\t\t\"SALINAS\",\n\t\t\t\t\t\t\t\t\"TALAO-TALAO\"\n\t\t\t\t\t\t  \t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t  \"name\": \"MACALELON\",\n\t\t\t\t\t\t\t  \"districts\": [\n\t\t\t\t\t\t\t\t\"AMONTAY\",\n\t\t\t\t\t\t\t\t\"ANOS\",\n\t\t\t\t\t\t\t\t\"BUYAO\",\n\t\t\t\t\t\t\t\t\"CALANTAS\",\n\t\t\t\t\t\t\t\t\"CANDANGAL\",\n\t\t\t\t\t\t\t\t\"CASTILLO (POB.)\",\n\t\t\t\t\t\t\t\t\"DAMAYAN (POB.)\",\n\t\t\t\t\t\t\t\t\"LAHING\",\n\t\t\t\t\t\t\t\t\"LUCTOB\",\n\t\t\t\t\t\t\t\t\"MABINI IBABA\",\n\t\t\t\t\t\t\t\t\"MABINI ILAYA\",\n\t\t\t\t\t\t\t\t\"MALABAHAY\",\n\t\t\t\t\t\t\t\t\"MAMBOG\",\n\t\t\t\t\t\t\t\t\"MASIPAG (POB.)\",\n\t\t\t\t\t\t\t\t\"OLONGTAO IBABA\",\n\t\t\t\t\t\t\t\t\"OLONGTAO ILAYA\",\n\t\t\t\t\t\t\t\t\"PADRE HERRERA\",\n\t\t\t\t\t\t\t\t\"PAG-ASA (POB.)\",\n\t\t\t\t\t\t\t\t\"PAJARILLO\",\n\t\t\t\t\t\t\t\t\"PINAGBAYANAN\",\n\t\t\t\t\t\t\t\t\"RIZAL (POB.)\",\n\t\t\t\t\t\t\t\t\"RODRIQUEZ (POB.)\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO\",\n\t\t\t\t\t\t\t\t\"SAN JOSE\",\n\t\t\t\t\t\t\t\t\"SAN NICOLAS\",\n\t\t\t\t\t\t\t\t\"SAN VICENTE\",\n\t\t\t\t\t\t\t\t\"TAGUIN\",\n\t\t\t\t\t\t\t\t\"TUBIGAN IBABA\",\n\t\t\t\t\t\t\t\t\"TUBIGAN ILAYA\",\n\t\t\t\t\t\t\t\t\"VISTA HERMOSA\"\n\t\t\t\t\t\t  \t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t  \"name\": \"MAUBAN\",\n\t\t\t\t\t\t\t  \"districts\": [\n\t\t\t\t\t\t\t\t\"ABO-ABO\",\n\t\t\t\t\t\t\t\t\"ALITAP\",\n\t\t\t\t\t\t\t\t\"BAAO\",\n\t\t\t\t\t\t\t\t\"BAGONG BAYAN (POB.)\",\n\t\t\t\t\t\t\t\t\"BALAYBALAY\",\n\t\t\t\t\t\t\t\t\"BATO\",\n\t\t\t\t\t\t\t\t\"CAGBALETE I\",\n\t\t\t\t\t\t\t\t\"CAGBALETE II\",\n\t\t\t\t\t\t\t\t\"CAGSIAY I\",\n\t\t\t\t\t\t\t\t\"CAGSIAY II\",\n\t\t\t\t\t\t\t\t\"CAGSIAY III\",\n\t\t\t\t\t\t\t\t\"CONCEPCION\",\n\t\t\t\t\t\t\t\t\"DAUNGAN (POB.)\",\n\t\t\t\t\t\t\t\t\"LIWAYWAY\",\n\t\t\t\t\t\t\t\t\"LUAL (POB.)\",\n\t\t\t\t\t\t\t\t\"LUAL RURAL\",\n\t\t\t\t\t\t\t\t\"LUCUTAN\",\n\t\t\t\t\t\t\t\t\"LUYA-LUYA\",\n\t\t\t\t\t\t\t\t\"MABATO (POB.)\",\n\t\t\t\t\t\t\t\t\"MACASIN\",\n\t\t\t\t\t\t\t\t\"POLO\",\n\t\t\t\t\t\t\t\t\"REMEDIOS I\",\n\t\t\t\t\t\t\t\t\"REMEDIOS II\",\n\t\t\t\t\t\t\t\t\"RIZALIANA (POB.)\",\n\t\t\t\t\t\t\t\t\"ROSARIO\",\n\t\t\t\t\t\t\t\t\"SADSARAN (POB.)\",\n\t\t\t\t\t\t\t\t\"SAN GABRIEL\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO\",\n\t\t\t\t\t\t\t\t\"SAN JOSE\",\n\t\t\t\t\t\t\t\t\"SAN LORENZO\",\n\t\t\t\t\t\t\t\t\"SAN MIGUEL\",\n\t\t\t\t\t\t\t\t\"SAN RAFAEL\",\n\t\t\t\t\t\t\t\t\"SAN ROQUE\",\n\t\t\t\t\t\t\t\t\"SAN VICENTE\",\n\t\t\t\t\t\t\t\t\"SANTA LUCIA\",\n\t\t\t\t\t\t\t\t\"SANTO ANGEL\",\n\t\t\t\t\t\t\t\t\"SANTO NI\u00F1O\",\n\t\t\t\t\t\t\t\t\"SANTOL\",\n\t\t\t\t\t\t\t\t\"SOLEDAD\",\n\t\t\t\t\t\t\t\t\"TAPUCAN\"\n\t\t\t\t\t \t \t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t  \"name\": \"MULANAY\",\n\t\t\t\t\t\t\t  \"districts\": [\n\t\t\t\t\t\t\t\t\"AJOS\",\n\t\t\t\t\t\t\t\t\"AMUGUIS\",\n\t\t\t\t\t\t\t\t\"ANONANG\",\n\t\t\t\t\t\t\t\t\"BAGONG SILANG\",\n\t\t\t\t\t\t\t\t\"BAGUPAYE\",\n\t\t\t\t\t\t\t\t\"BARANGAY 1 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 2 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 3 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 4 (POB.)\",\n\t\t\t\t\t\t\t\t\"BOLO\",\n\t\t\t\t\t\t\t\t\"BUENAVISTA\",\n\t\t\t\t\t\t\t\t\"BURGOS\",\n\t\t\t\t\t\t\t\t\"BUTANYOG\",\n\t\t\t\t\t\t\t\t\"CANUYEP\",\n\t\t\t\t\t\t\t\t\"F. NANADIEGO\",\n\t\t\t\t\t\t\t\t\"IBABANG CAMBUGA\",\n\t\t\t\t\t\t\t\t\"IBABANG YUNI\",\n\t\t\t\t\t\t\t\t\"ILAYANG CAMBUGA (MABINI)\",\n\t\t\t\t\t\t\t\t\"ILAYANG YUNI\",\n\t\t\t\t\t\t\t\t\"LATANGAN\",\n\t\t\t\t\t\t\t\t\"MAGSAYSAY\",\n\t\t\t\t\t\t\t\t\"MATATAJA\",\n\t\t\t\t\t\t\t\t\"PAKIING\",\n\t\t\t\t\t\t\t\t\"PATABOG\",\n\t\t\t\t\t\t\t\t\"SAGONGON\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO\",\n\t\t\t\t\t\t\t\t\"SAN PEDRO\",\n\t\t\t\t\t\t\t\t\"SANTA ROSA\"\n\t\t\t\t\t\t  \t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t  \"name\": \"PADRE BURGOS\",\n\t\t\t\t\t\t\t  \"districts\": [\n\t\t\t\t\t\t\t\t\"BASIAO (POB.)\",\n\t\t\t\t\t\t\t\t\"BURGOS (POB.)\",\n\t\t\t\t\t\t\t\t\"CABUYAO NORTE\",\n\t\t\t\t\t\t\t\t\"CABUYAO SUR\",\n\t\t\t\t\t\t\t\t\"CAMPO (POB.)\",\n\t\t\t\t\t\t\t\t\"DANLAGAN\",\n\t\t\t\t\t\t\t\t\"DUHAT\",\n\t\t\t\t\t\t\t\t\"HINGUIWIN\",\n\t\t\t\t\t\t\t\t\"KINAGUNAN IBABA\",\n\t\t\t\t\t\t\t\t\"KINAGUNAN ILAYA\",\n\t\t\t\t\t\t\t\t\"LIPATA\",\n\t\t\t\t\t\t\t\t\"MARAO\",\n\t\t\t\t\t\t\t\t\"MARQUEZ\",\n\t\t\t\t\t\t\t\t\"PUNTA (POB.)\",\n\t\t\t\t\t\t\t\t\"RIZAL\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO\",\n\t\t\t\t\t\t\t\t\"SAN VICENTE\",\n\t\t\t\t\t\t\t\t\"SIPA\",\n\t\t\t\t\t\t\t\t\"TULAY BUHANGIN\",\n\t\t\t\t\t\t\t\t\"VILLAPAZ\",\n\t\t\t\t\t\t\t\t\"WALAY\",\n\t\t\t\t\t\t\t\t\"YAWE\"\n\t\t\t\t\t\t  \t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t  \"name\": \"PAGBILAO\",\n\t\t\t\t\t\t\t  \"districts\": [\n\t\t\t\t\t\t\t\t\"A\u00F1ATO\",\n\t\t\t\t\t\t\t\t\"ALUPAYE\",\n\t\t\t\t\t\t\t\t\"ANTIPOLO\",\n\t\t\t\t\t\t\t\t\"BANTIGUE\",\n\t\t\t\t\t\t\t\t\"BARANGAY 1 CASTILLO (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 2 DAUNGAN (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 3 DEL CARMEN (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 4 PARANG (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 5 SANTA CATALINA (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 6 TAMBAK (POB.)\",\n\t\t\t\t\t\t\t\t\"BIGO\",\n\t\t\t\t\t\t\t\t\"BINAHAAN\",\n\t\t\t\t\t\t\t\t\"BUKAL\",\n\t\t\t\t\t\t\t\t\"IBABANG BAGUMBUNGAN\",\n\t\t\t\t\t\t\t\t\"IBABANG PALSABANGON\",\n\t\t\t\t\t\t\t\t\"IBABANG POLO\",\n\t\t\t\t\t\t\t\t\"IKIRIN\",\n\t\t\t\t\t\t\t\t\"ILAYANG BAGUMBUNGAN\",\n\t\t\t\t\t\t\t\t\"ILAYANG PALSABANGON\",\n\t\t\t\t\t\t\t\t\"ILAYANG POLO\",\n\t\t\t\t\t\t\t\t\"KANLURAN MALICBOY\",\n\t\t\t\t\t\t\t\t\"MAPAGONG\",\n\t\t\t\t\t\t\t\t\"MAYHAY\",\n\t\t\t\t\t\t\t\t\"PINAGBAYANAN\",\n\t\t\t\t\t\t\t\t\"SILANGAN MALICBOY\",\n\t\t\t\t\t\t\t\t\"TALIPAN\",\n\t\t\t\t\t\t\t\t\"TUKALAN\"\n\t\t\t\t\t\t  \t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t  \"name\": \"PANUKULAN\",\n\t\t\t\t\t\t\t  \"districts\": [\n\t\t\t\t\t\t\t\t\"BALUNGAY\",\n\t\t\t\t\t\t\t\t\"BATO\",\n\t\t\t\t\t\t\t\t\"BONBON\",\n\t\t\t\t\t\t\t\t\"CALASUMANGA\",\n\t\t\t\t\t\t\t\t\"KINALAGTI\",\n\t\t\t\t\t\t\t\t\"LIBO\",\n\t\t\t\t\t\t\t\t\"LIPATA\",\n\t\t\t\t\t\t\t\t\"MATANGKAP\",\n\t\t\t\t\t\t\t\t\"MILAWID\",\n\t\t\t\t\t\t\t\t\"PAGITAN\",\n\t\t\t\t\t\t\t\t\"PANDAN\",\n\t\t\t\t\t\t\t\t\"SAN JUAN (POB.)\"\n\t\t\t\t\t\t  \t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t  \"name\": \"PATNANUNGAN\",\n\t\t\t\t\t\t\t  \"districts\": [\n\t\t\t\t\t\t\t\t\"AMAGA\",\n\t\t\t\t\t\t\t\t\"BUSDAK\",\n\t\t\t\t\t\t\t\t\"KILOGAN\",\n\t\t\t\t\t\t\t\t\"LUOD\",\n\t\t\t\t\t\t\t\t\"PATNANUNGAN NORTE\",\n\t\t\t\t\t\t\t\t\"PATNANUNGAN SUR (POB.)\"\n\t\t\t\t\t\t  \t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t  \"name\": \"PEREZ\",\n\t\t\t\t\t\t\t  \"districts\": [\n\t\t\t\t\t\t\t\t\"BAGONG PAG-ASA POB. (BARANGAY 3)\",\n\t\t\t\t\t\t\t\t\"BAGONG SILANG POB. (BARANGAY 4)\",\n\t\t\t\t\t\t\t\t\"MAABOT\",\n\t\t\t\t\t\t\t\t\"MAINIT NORTE\",\n\t\t\t\t\t\t\t\t\"MAINIT SUR\",\n\t\t\t\t\t\t\t\t\"MAPAGMAHAL POB. (BARANGAY 2)\",\n\t\t\t\t\t\t\t\t\"PAGKAKAISA POB. (BARANGAY 1)\",\n\t\t\t\t\t\t\t\t\"PAMBUHAN\",\n\t\t\t\t\t\t\t\t\"PINAGTUBIGAN ESTE\",\n\t\t\t\t\t\t\t\t\"PINAGTUBIGAN WESTE\",\n\t\t\t\t\t\t\t\t\"RIZAL\",\n\t\t\t\t\t\t\t\t\"SANGIRIN\",\n\t\t\t\t\t\t\t\t\"VILLAMANZANO NORTE\",\n\t\t\t\t\t\t\t\t\"VILLAMANZANO SUR\"\n\t\t\t\t\t\t  \t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t  \"name\": \"PITOGO\",\n\t\t\t\t\t\t\t  \"districts\": [\n\t\t\t\t\t\t\t\t\"AMONTAY\",\n\t\t\t\t\t\t\t\t\"BIGA\",\n\t\t\t\t\t\t\t\t\"BILUCAO\",\n\t\t\t\t\t\t\t\t\"CABULIHAN\",\n\t\t\t\t\t\t\t\t\"CASTILLO (POB.)\",\n\t\t\t\t\t\t\t\t\"CAWAYANIN\",\n\t\t\t\t\t\t\t\t\"COMETA\",\n\t\t\t\t\t\t\t\t\"DALAMPASIGAN (POB.)\",\n\t\t\t\t\t\t\t\t\"DULONG BAYAN (POB.)\",\n\t\t\t\t\t\t\t\t\"GANGAHIN\",\n\t\t\t\t\t\t\t\t\"IBABANG BURGOS\",\n\t\t\t\t\t\t\t\t\"IBABANG PACATIN\",\n\t\t\t\t\t\t\t\t\"IBABANG PI\u00F1A\",\n\t\t\t\t\t\t\t\t\"IBABANG SOLIYAO\",\n\t\t\t\t\t\t\t\t\"ILAYANG BURGOS\",\n\t\t\t\t\t\t\t\t\"ILAYANG PACATIN\",\n\t\t\t\t\t\t\t\t\"ILAYANG PI\u00F1A\",\n\t\t\t\t\t\t\t\t\"ILAYANG SOLIYAO\",\n\t\t\t\t\t\t\t\t\"MAALIW (POB.)\",\n\t\t\t\t\t\t\t\t\"MANGGAHAN (POB.)\",\n\t\t\t\t\t\t\t\t\"MASAYA (POB.)\",\n\t\t\t\t\t\t\t\t\"MAYUBOK (POB.)\",\n\t\t\t\t\t\t\t\t\"NAG-CRUZ\",\n\t\t\t\t\t\t\t\t\"OSME\u00F1A\",\n\t\t\t\t\t\t\t\t\"PAG-ASA (POB.)\",\n\t\t\t\t\t\t\t\t\"PAMILIHAN (POB.)\",\n\t\t\t\t\t\t\t\t\"PAYTE\",\n\t\t\t\t\t\t\t\t\"PINAGBAYANAN\",\n\t\t\t\t\t\t\t\t\"POCTOL\",\n\t\t\t\t\t\t\t\t\"QUEZON\",\n\t\t\t\t\t\t\t\t\"QUINAGASAN\",\n\t\t\t\t\t\t\t\t\"RIZALINO\",\n\t\t\t\t\t\t\t\t\"SAGUINSINAN\",\n\t\t\t\t\t\t\t\t\"SAMPALOC\",\n\t\t\t\t\t\t\t\t\"SAN ROQUE\",\n\t\t\t\t\t\t\t\t\"SISIRIN\",\n\t\t\t\t\t\t\t\t\"SUMAG ESTE\",\n\t\t\t\t\t\t\t\t\"SUMAG NORTE\",\n\t\t\t\t\t\t\t\t\"SUMAG WESTE\"\n\t\t\t\t\t\t  \t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t  \"name\": \"PLARIDEL\",\n\t\t\t\t\t\t\t  \"districts\": [\n\t\t\t\t\t\t\t\t\"CENTRAL (POB.)\",\n\t\t\t\t\t\t\t\t\"CONCEPCION\",\n\t\t\t\t\t\t\t\t\"DUHAT\",\n\t\t\t\t\t\t\t\t\"ILAYA\",\n\t\t\t\t\t\t\t\t\"ILOSONG\",\n\t\t\t\t\t\t\t\t\"M. L. TUMAGAY POB. (REMAS MABUTON)\",\n\t\t\t\t\t\t\t\t\"PAANG BUNDOK (POB.)\",\n\t\t\t\t\t\t\t\t\"PAMPAARALAN (POB.)\",\n\t\t\t\t\t\t\t\t\"TANAUAN\"\n\t\t\t\t\t\t  \t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t  \"name\": \"POLILLIO\",\n\t\t\t\t\t\t\t  \"districts\": [\n\t\t\t\t\t\t\t\t\"ANAWAN\",\n\t\t\t\t\t\t\t\t\"ATULAYAN\",\n\t\t\t\t\t\t\t\t\"BA\u00F1ADERO\",\n\t\t\t\t\t\t\t\t\"BALESIN\",\n\t\t\t\t\t\t\t\t\"BINIBITINAN\",\n\t\t\t\t\t\t\t\t\"BISLIAN\",\n\t\t\t\t\t\t\t\t\"BUCAO\",\n\t\t\t\t\t\t\t\t\"CANICANIAN\",\n\t\t\t\t\t\t\t\t\"KALUBAKIS\",\n\t\t\t\t\t\t\t\t\"LANGUYIN\",\n\t\t\t\t\t\t\t\t\"LIBJO\",\n\t\t\t\t\t\t\t\t\"PAMATDAN\",\n\t\t\t\t\t\t\t\t\"PILION\",\n\t\t\t\t\t\t\t\t\"PINAGLUBAYAN\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"SABANG\",\n\t\t\t\t\t\t\t\t\"SALIPSIP\",\n\t\t\t\t\t\t\t\t\"SIBULAN\",\n\t\t\t\t\t\t\t\t\"TALUONG\",\n\t\t\t\t\t\t\t\t\"TAMULAYA-ANITONG\"\n\t\t\t\t\t\t  \t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t  \"name\": \"QUEZON\",\n\t\t\t\t\t\t\t  \"districts\": [\n\t\t\t\t\t\t\t\t\"APAD\",\n\t\t\t\t\t\t\t\t\"ARGOSINO\",\n\t\t\t\t\t\t\t\t\"BARANGAY I (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY II (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY III (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY IV (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY V (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY VI (POB.)\",\n\t\t\t\t\t\t\t\t\"CAGBALOGO\",\n\t\t\t\t\t\t\t\t\"CARIDAD\",\n\t\t\t\t\t\t\t\t\"COMETA\",\n\t\t\t\t\t\t\t\t\"DEL PILAR\",\n\t\t\t\t\t\t\t\t\"GUINHAWA\",\n\t\t\t\t\t\t\t\t\"GUMUBAT\",\n\t\t\t\t\t\t\t\t\"MAGSINO\",\n\t\t\t\t\t\t\t\t\"MASCARI\u00F1A\",\n\t\t\t\t\t\t\t\t\"MONTA\u00F1A\",\n\t\t\t\t\t\t\t\t\"SABANG\",\n\t\t\t\t\t\t\t\t\"SILANGAN\",\n\t\t\t\t\t\t\t\t\"TAGKAWA\",\n\t\t\t\t\t\t\t\t\"VILLA BELEN\",\n\t\t\t\t\t\t\t\t\"VILLA FRANCIA\",\n\t\t\t\t\t\t\t\t\"VILLA GOMEZ\",\n\t\t\t\t\t\t\t\t\"VILLA MERCEDES\"\n\t\t\t\t\t\t  \t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t  \"name\": \"REAL\",\n\t\t\t\t\t\t\t  \"districts\": [\n\t\t\t\t\t\t\t\t\"BAGONG SILANG\",\n\t\t\t\t\t\t\t\t\"CAPALONG\",\n\t\t\t\t\t\t\t\t\"CAWAYAN\",\n\t\t\t\t\t\t\t\t\"KILOLORAN\",\n\t\t\t\t\t\t\t\t\"LLAVAC\",\n\t\t\t\t\t\t\t\t\"LUBAYAT\",\n\t\t\t\t\t\t\t\t\"MALAPAD\",\n\t\t\t\t\t\t\t\t\"MARAGONDON\",\n\t\t\t\t\t\t\t\t\"MASIKAP\",\n\t\t\t\t\t\t\t\t\"MAUNLAD\",\n\t\t\t\t\t\t\t\t\"PANDAN\",\n\t\t\t\t\t\t\t\t\"POBLACION 61 (BARANGAY 2)\",\n\t\t\t\t\t\t\t\t\"POBLACION I (BARANGAY 1)\",\n\t\t\t\t\t\t\t\t\"TAGUMPAY\",\n\t\t\t\t\t\t\t\t\"TANAUAN\",\n\t\t\t\t\t\t\t\t\"TIGNOAN\",\n\t\t\t\t\t\t\t\t\"UNGOS\"\n\t\t\t\t\t\t  \t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t  \"name\": \"SAMPALOC\",\n\t\t\t\t\t\t\t  \"districts\": [\n\t\t\t\t\t\t\t\t\"ALUPAY\",\n\t\t\t\t\t\t\t\t\"APASAN\",\n\t\t\t\t\t\t\t\t\"BANOT\",\n\t\t\t\t\t\t\t\t\"BATAAN\",\n\t\t\t\t\t\t\t\t\"BAYONGON\",\n\t\t\t\t\t\t\t\t\"BILUCAO\",\n\t\t\t\t\t\t\t\t\"CALDONG\",\n\t\t\t\t\t\t\t\t\"IBABANG OWAIN\",\n\t\t\t\t\t\t\t\t\"ILAYANG OWAIN\",\n\t\t\t\t\t\t\t\t\"MAMALA\",\n\t\t\t\t\t\t\t\t\"SAN BUENO\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO (POB.)\",\n\t\t\t\t\t\t\t\t\"SAN ROQUE (POB.)\",\n\t\t\t\t\t\t\t\t\"TAQUICO\"\n\t\t\t\t\t\t  \t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t  \"name\": \"SAN ANDRES\",\n\t\t\t\t\t\t\t  \"districts\": [\n\t\t\t\t\t\t\t\t\"ALIBIHABAN\",\n\t\t\t\t\t\t\t\t\"CAMFLORA\",\n\t\t\t\t\t\t\t\t\"MANGERO\",\n\t\t\t\t\t\t\t\t\"PANSOY\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"TALA\",\n\t\t\t\t\t\t\t\t\"TALISAY\"\n\t\t\t\t\t\t  \t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t  \"name\": \"SAN ANTONIO\",\n\t\t\t\t\t\t\t  \"districts\": [\n\t\t\t\t\t\t\t\t\"ARAWAN\",\n\t\t\t\t\t\t\t\t\"BAGONG NIING\",\n\t\t\t\t\t\t\t\t\"BALAT ATIS\",\n\t\t\t\t\t\t\t\t\"BRIONES\",\n\t\t\t\t\t\t\t\t\"BULIHAN\",\n\t\t\t\t\t\t\t\t\"BULIRAN\",\n\t\t\t\t\t\t\t\t\"CALLEJON\",\n\t\t\t\t\t\t\t\t\"CORAZON\",\n\t\t\t\t\t\t\t\t\"LOOB\",\n\t\t\t\t\t\t\t\t\"MAGSAYSAY\",\n\t\t\t\t\t\t\t\t\"MANUEL DEL VALLE, SR.\",\n\t\t\t\t\t\t\t\t\"MATIPUNSO\",\n\t\t\t\t\t\t\t\t\"NIING\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"PULO\",\n\t\t\t\t\t\t\t\t\"PURY\",\n\t\t\t\t\t\t\t\t\"SAMPAGA\",\n\t\t\t\t\t\t\t\t\"SAMPAGUITA\",\n\t\t\t\t\t\t\t\t\"SAN JOSE\",\n\t\t\t\t\t\t\t\t\"SINTURISAN\"\n\t\t\t\t\t\t  \t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t  \"name\": \"SAN FRANCISCO (AURORA)\",\n\t\t\t\t\t\t\t  \"districts\": [\n\t\t\t\t\t\t\t\t\"BUTANGUIAD\",\n\t\t\t\t\t\t\t\t\"CASAY\",\n\t\t\t\t\t\t\t\t\"CAWAYAN I\",\n\t\t\t\t\t\t\t\t\"CAWAYAN II\",\n\t\t\t\t\t\t\t\t\"DON JUAN VERCELOS\",\n\t\t\t\t\t\t\t\t\"HUYON-UYON\",\n\t\t\t\t\t\t\t\t\"IBABANG TAYUMAN\",\n\t\t\t\t\t\t\t\t\"ILAYANG TAYUMAN\",\n\t\t\t\t\t\t\t\t\"INABUAN\",\n\t\t\t\t\t\t\t\t\"MABU\u00F1GA\",\n\t\t\t\t\t\t\t\t\"NASALAAN\",\n\t\t\t\t\t\t\t\t\"PAGSANGAHAN\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"PUGON\",\n\t\t\t\t\t\t\t\t\"SANTO NI\u00F1O\",\n\t\t\t\t\t\t\t\t\"SILONGIN\"\n\t\t\t\t\t\t \t ]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t  \"name\": \"SAN NARCISO\",\n\t\t\t\t\t\t\t  \"districts\": [\n\t\t\t\t\t\t\t\t\"ABUYON\",\n\t\t\t\t\t\t\t\t\"ANDRES BONIFACIO\",\n\t\t\t\t\t\t\t\t\"BANI\",\n\t\t\t\t\t\t\t\t\"BAYANIHAN (POB.)\",\n\t\t\t\t\t\t\t\t\"BINAY\",\n\t\t\t\t\t\t\t\t\"BUENAVISTA\",\n\t\t\t\t\t\t\t\t\"BUSOKBUSOKAN\",\n\t\t\t\t\t\t\t\t\"CALWIT\",\n\t\t\t\t\t\t\t\t\"GUINHALINAN\",\n\t\t\t\t\t\t\t\t\"LACDAYAN\",\n\t\t\t\t\t\t\t\t\"MAGUITING\",\n\t\t\t\t\t\t\t\t\"MALIGAYA (POB.)\",\n\t\t\t\t\t\t\t\t\"MANLAMPONG\",\n\t\t\t\t\t\t\t\t\"PAGDADAMAYAN (POB.)\",\n\t\t\t\t\t\t\t\t\"PAGKAKAISA (POB.)\",\n\t\t\t\t\t\t\t\t\"PUNTA\",\n\t\t\t\t\t\t\t\t\"RIZAL\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO\",\n\t\t\t\t\t\t\t\t\"SAN JUAN\",\n\t\t\t\t\t\t\t\t\"SAN VICENTE\",\n\t\t\t\t\t\t\t\t\"VIGO CENTRAL\",\n\t\t\t\t\t\t\t\t\"VILLA AURIN (PINAGSAMA)\",\n\t\t\t\t\t\t\t\t\"VILLA REYES\",\n\t\t\t\t\t\t\t\t\"WHITE CLIFF\"\n\t\t\t\t\t\t  \t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t  \"name\": \"SARIAYA\",\n\t\t\t\t\t\t\t  \"districts\": [\n\t\t\t\t\t\t\t\t\"ANTIPOLO\",\n\t\t\t\t\t\t\t\t\"BALUBAL\",\n\t\t\t\t\t\t\t\t\"BARANGAY 1 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 2 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 3 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 4 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 5 (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY 6 (POB.)\",\n\t\t\t\t\t\t\t\t\"BIGNAY 1\",\n\t\t\t\t\t\t\t\t\"BIGNAY 2\",\n\t\t\t\t\t\t\t\t\"BUCAL\",\n\t\t\t\t\t\t\t\t\"CANDA\",\n\t\t\t\t\t\t\t\t\"CASTA\u00F1AS\",\n\t\t\t\t\t\t\t\t\"CONCEPCION BANAHAW\",\n\t\t\t\t\t\t\t\t\"CONCEPCION NO. 1\",\n\t\t\t\t\t\t\t\t\"CONCEPCION PALASAN\",\n\t\t\t\t\t\t\t\t\"CONCEPCION PINAGBAKURAN\",\n\t\t\t\t\t\t\t\t\"GIBANGA\",\n\t\t\t\t\t\t\t\t\"GUISGUIS-SAN ROQUE\",\n\t\t\t\t\t\t\t\t\"GUISGUIS-TALON\",\n\t\t\t\t\t\t\t\t\"JANAGDONG 1\",\n\t\t\t\t\t\t\t\t\"JANAGDONG 2\",\n\t\t\t\t\t\t\t\t\"LIMBON\",\n\t\t\t\t\t\t\t\t\"LUTUCAN 1\",\n\t\t\t\t\t\t\t\t\"LUTUCAN BATA\",\n\t\t\t\t\t\t\t\t\"LUTUCAN MALABAG\",\n\t\t\t\t\t\t\t\t\"MAMALA I\",\n\t\t\t\t\t\t\t\t\"MAMALA II\",\n\t\t\t\t\t\t\t\t\"MANGGALANG 1\",\n\t\t\t\t\t\t\t\t\"MANGGALANG TULO-TULO\",\n\t\t\t\t\t\t\t\t\"MANGGALANG-BANTILAN\",\n\t\t\t\t\t\t\t\t\"MANGGALANG-KILING\",\n\t\t\t\t\t\t\t\t\"MONTECILLO\",\n\t\t\t\t\t\t\t\t\"MORONG\",\n\t\t\t\t\t\t\t\t\"PILI\",\n\t\t\t\t\t\t\t\t\"SAMPALOC 1\",\n\t\t\t\t\t\t\t\t\"SAMPALOC 2\",\n\t\t\t\t\t\t\t\t\"SAMPALOC BOGON\",\n\t\t\t\t\t\t\t\t\"SAMPALOC SANTO CRISTO\",\n\t\t\t\t\t\t\t\t\"TALAAN APLAYA\",\n\t\t\t\t\t\t\t\t\"TALAANPANTOC\",\n\t\t\t\t\t\t\t\t\"TUMBAGA 1\",\n\t\t\t\t\t\t\t\t\"TUMBAGA 2\"\n\t\t\t\t\t\t  \t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t  \"name\": \"TAGKAWAYAN\",\n\t\t\t\t\t\t\t  \"districts\": [\n\t\t\t\t\t\t\t\t\"ALDAVOC\",\n\t\t\t\t\t\t\t\t\"ALIJI\",\n\t\t\t\t\t\t\t\t\"BAGONG SILANG\",\n\t\t\t\t\t\t\t\t\"BAMBAN\",\n\t\t\t\t\t\t\t\t\"BOSIGON\",\n\t\t\t\t\t\t\t\t\"BUKAL\",\n\t\t\t\t\t\t\t\t\"CABIBIHAN\",\n\t\t\t\t\t\t\t\t\"CABUGWANG\",\n\t\t\t\t\t\t\t\t\"CAGASCAS\",\n\t\t\t\t\t\t\t\t\"CANDALAPDAP\",\n\t\t\t\t\t\t\t\t\"CASISPALAN\",\n\t\t\t\t\t\t\t\t\"COLONG-COLONG\",\n\t\t\t\t\t\t\t\t\"DEL ROSARIO\",\n\t\t\t\t\t\t\t\t\"KATIMO\",\n\t\t\t\t\t\t\t\t\"KINATAKUTAN\",\n\t\t\t\t\t\t\t\t\"LANDING\",\n\t\t\t\t\t\t\t\t\"LAUREL\",\n\t\t\t\t\t\t\t\t\"MAGSAYSAY\",\n\t\t\t\t\t\t\t\t\"MAGUIBUAY\",\n\t\t\t\t\t\t\t\t\"MAHINTA\",\n\t\t\t\t\t\t\t\t\"MALBOG\",\n\t\t\t\t\t\t\t\t\"MANATO CENTRAL\",\n\t\t\t\t\t\t\t\t\"MANATO STATION\",\n\t\t\t\t\t\t\t\t\"MANGAYAO\",\n\t\t\t\t\t\t\t\t\"MANSILAY\",\n\t\t\t\t\t\t\t\t\"MAPULOT\",\n\t\t\t\t\t\t\t\t\"MUNTING PARANG\",\n\t\t\t\t\t\t\t\t\"PAYAPA\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"RIZAL\",\n\t\t\t\t\t\t\t\t\"SABANG\",\n\t\t\t\t\t\t\t\t\"SAN DIEGO\",\n\t\t\t\t\t\t\t\t\"SAN FRANCISCO\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO\",\n\t\t\t\t\t\t\t\t\"SAN ROQUE\",\n\t\t\t\t\t\t\t\t\"SAN VICENTE\",\n\t\t\t\t\t\t\t\t\"SANTA CECILIA\",\n\t\t\t\t\t\t\t\t\"SANTA MONICA\",\n\t\t\t\t\t\t\t\t\"SANTO NI\u00F1O I\",\n\t\t\t\t\t\t\t\t\"SANTO NI\u00F1O II\",\n\t\t\t\t\t\t\t\t\"SANTO TOMAS\",\n\t\t\t\t\t\t\t\t\"SEGUIWAN\",\n\t\t\t\t\t\t\t\t\"TABASON\",\n\t\t\t\t\t\t\t\t\"TUNTON\",\n\t\t\t\t\t\t\t\t\"VICTORIA\"\t\n\t\t\t\t\t\t  \t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t  \"name\": \"TIAONG\",\n\t\t\t\t\t\t\t  \"districts\": [\n\t\t\t\t\t\t\t\t\"ANASTACIA (TAGBAK)\",\n\t\t\t\t\t\t\t\t\"AQUINO\",\n\t\t\t\t\t\t\t\t\"AYUSAN I\",\n\t\t\t\t\t\t\t\t\"AYUSAN II\",\n\t\t\t\t\t\t\t\t\"BARANGAY I (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY II (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY III (POB.)\",\n\t\t\t\t\t\t\t\t\"BARANGAY IV (POB.)\",\n\t\t\t\t\t\t\t\t\"BEHIA\",\n\t\t\t\t\t\t\t\t\"BUKAL\",\n\t\t\t\t\t\t\t\t\"BULA\",\n\t\t\t\t\t\t\t\t\"BULAKIN\",\n\t\t\t\t\t\t\t\t\"CABATANG\",\n\t\t\t\t\t\t\t\t\"CABAY\",\n\t\t\t\t\t\t\t\t\"DEL ROSARIO\",\n\t\t\t\t\t\t\t\t\"LAGALAG\",\n\t\t\t\t\t\t\t\t\"LALIG\",\n\t\t\t\t\t\t\t\t\"LUMINGON\",\n\t\t\t\t\t\t\t\t\"LUSACAN\",\n\t\t\t\t\t\t\t\t\"PAIISA\",\n\t\t\t\t\t\t\t\t\"PALAGARAN\",\n\t\t\t\t\t\t\t\t\"QUIPOT\",\n\t\t\t\t\t\t\t\t\"SAN AGUSTIN\",\n\t\t\t\t\t\t\t\t\"SAN FRANCISCO\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO\",\n\t\t\t\t\t\t\t\t\"SAN JOSE\",\n\t\t\t\t\t\t\t\t\"SAN JUAN\",\n\t\t\t\t\t\t\t\t\"SAN PEDRO\",\n\t\t\t\t\t\t\t\t\"TAGBAKIN\",\n\t\t\t\t\t\t\t\t\"TALISAY\",\n\t\t\t\t\t\t\t\t\"TAMISIAN\"\t\n\t\t\t\t\t\t  \t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t  \"name\": \"UNISAN\",\n\t\t\t\t\t\t\t  \"districts\": [\n\t\t\t\t\t\t\t\t\"ALMACEN\",\n\t\t\t\t\t\t\t\t\"BALAGTAS\",\n\t\t\t\t\t\t\t\t\"BALANACAN\",\n\t\t\t\t\t\t\t\t\"BONIFACIO\",\n\t\t\t\t\t\t\t\t\"BULO IBABA\",\n\t\t\t\t\t\t\t\t\"BULO ILAYA\",\n\t\t\t\t\t\t\t\t\"BURGOS\",\n\t\t\t\t\t\t\t\t\"CABULIHAN IBABA\",\n\t\t\t\t\t\t\t\t\"CABULIHAN ILAYA\",\n\t\t\t\t\t\t\t\t\"CAIGDAL\",\n\t\t\t\t\t\t\t\t\"F. DE JESUS (POB.)\",\n\t\t\t\t\t\t\t\t\"GENERAL LUNA\",\n\t\t\t\t\t\t\t\t\"KALILAYAN IBABA\",\n\t\t\t\t\t\t\t\t\"KALILAYAN ILAYA\",\n\t\t\t\t\t\t\t\t\"MABINI\",\n\t\t\t\t\t\t\t\t\"MAIROK IBABA\",\n\t\t\t\t\t\t\t\t\"MAIROK ILAYA\",\n\t\t\t\t\t\t\t\t\"MALVAR\",\n\t\t\t\t\t\t\t\t\"MAPUTAT\",\n\t\t\t\t\t\t\t\t\"MULIGUIN\",\n\t\t\t\t\t\t\t\t\"PAGAGUASAN\",\n\t\t\t\t\t\t\t\t\"PANAON IBABA\",\n\t\t\t\t\t\t\t\t\"PANAON ILAYA\",\n\t\t\t\t\t\t\t\t\"PLARIDEL\",\n\t\t\t\t\t\t\t\t\"POCTOL\",\n\t\t\t\t\t\t\t\t\"PUNTA\",\n\t\t\t\t\t\t\t\t\"R. LAPU-LAPU (POB.)\",\n\t\t\t\t\t\t\t\t\"R. MAGSAYSAY (POB.)\",\n\t\t\t\t\t\t\t\t\"RAJA SOLIMAN (POB.)\",\n\t\t\t\t\t\t\t\t\"RIZAL IBABA\",\n\t\t\t\t\t\t\t\t\"RIZAL ILAYA\",\n\t\t\t\t\t\t\t\t\"SAN ROQUE\",\n\t\t\t\t\t\t\t\t\"SOCORRO\",\n\t\t\t\t\t\t\t\t\"TAGUMPAY\",\n\t\t\t\t\t\t\t\t\"TUBAS\",\n\t\t\t\t\t\t\t\t\"TUBIGAN\"\n\t\t\t\t\t\t  \t]\n\t\t\t\t\t\t}\n\t\t\t\t      ]\n\t\t\t    },\n\t\t\t    {\n\t\t\t\t\t\t      \"name\": \"RIZAL\",\n\t\t\t\t\t\t      \"cities\": [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t  \"name\": \"ANGONO\",\n\t\t\t\t\t\t\t  \"districts\": [\n\t\t\t\t\t\t\t\t\"BAGUMBAYAN\",\n\t\t\t\t\t\t\t\t\"KALAYAAN\",\n\t\t\t\t\t\t\t\t\"MAHABANG PARANG\",\n\t\t\t\t\t\t\t\t\"POBLACION IBABA\",\n\t\t\t\t\t\t\t\t\"POBLACION ITAAS\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO\",\n\t\t\t\t\t\t\t\t\"SAN PEDRO\",\n\t\t\t\t\t\t\t\t\"SAN ROQUE\",\n\t\t\t\t\t\t\t\t\"SAN VICENTE\",\n\t\t\t\t\t\t\t\t\"SANTO NI\u00D1O\"\n\t\t\t\t\t\t  \t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t  \"name\": \"BARAS\",\n\t\t\t\t\t\t\t  \"districts\": [\n\t\t\t\t\t\t\t\t\"CONCEPCION\",\n\t\t\t\t\t\t\t\t\"EVANGELISTA\",\n\t\t\t\t\t\t\t\t\"MABINI\",\n\t\t\t\t\t\t\t\t\"PINUGAY\",\n\t\t\t\t\t\t\t\t\"RIZAL (POB.)\",\n\t\t\t\t\t\t\t\t\"SAN JOSE\",\n\t\t\t\t\t\t\t\t\"SAN JUAN\",\n\t\t\t\t\t\t\t\t\"SAN MIGUEL\",\n\t\t\t\t\t\t\t\t\"SAN SALVADOR\",\n\t\t\t\t\t\t\t\t\"SANTIAGO\"\t\n\t\t\t\t\t\t  \t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t  \"name\": \"BINANGONAN\",\n\t\t\t\t\t\t\t  \"districts\": [\n\t\t\t\t\t\t\t\t\"BANGAD\",\n\t\t\t\t\t\t\t\t\"BATINGAN\",\n\t\t\t\t\t\t\t\t\"BILIBIRAN\",\n\t\t\t\t\t\t\t\t\"BINITAGAN\",\n\t\t\t\t\t\t\t\t\"BOMBONG\",\n\t\t\t\t\t\t\t\t\"BUHANGIN\",\n\t\t\t\t\t\t\t\t\"CALUMPANG\",\n\t\t\t\t\t\t\t\t\"GINOONG SANAY\",\n\t\t\t\t\t\t\t\t\"GULOD\",\n\t\t\t\t\t\t\t\t\"HABAGATAN\",\n\t\t\t\t\t\t\t\t\"ITHAN\",\n\t\t\t\t\t\t\t\t\"JANOSA\",\n\t\t\t\t\t\t\t\t\"KALAWAAN\",\n\t\t\t\t\t\t\t\t\"KALINAWAN\",\n\t\t\t\t\t\t\t\t\"KASILE\",\n\t\t\t\t\t\t\t\t\"KAYTOME\",\n\t\t\t\t\t\t\t\t\"KINABOOGAN\",\n\t\t\t\t\t\t\t\t\"KINAGATAN\",\n\t\t\t\t\t\t\t\t\"LAYUNAN (POB.)\",\n\t\t\t\t\t\t\t\t\"LIBID (POB.)\",\n\t\t\t\t\t\t\t\t\"LIBIS (POB.)\",\n\t\t\t\t\t\t\t\t\"LIMBON-LIMBON\",\n\t\t\t\t\t\t\t\t\"LUNSAD\",\n\t\t\t\t\t\t\t\t\"MACAMOT\",\n\t\t\t\t\t\t\t\t\"MAHABANG PARANG\",\n\t\t\t\t\t\t\t\t\"MALAKABAN\",\n\t\t\t\t\t\t\t\t\"MAMBOG\",\n\t\t\t\t\t\t\t\t\"PAG-ASA\",\n\t\t\t\t\t\t\t\t\"PALANGOY\",\n\t\t\t\t\t\t\t\t\"PANTOK\",\n\t\t\t\t\t\t\t\t\"PILA PILA\",\n\t\t\t\t\t\t\t\t\"PINAGDILAWAN\",\n\t\t\t\t\t\t\t\t\"PIPINDAN\",\n\t\t\t\t\t\t\t\t\"RAYAP\",\n\t\t\t\t\t\t\t\t\"SAN CARLOS\",\n\t\t\t\t\t\t\t\t\"SAPANG\",\n\t\t\t\t\t\t\t\t\"TABON\",\n\t\t\t\t\t\t\t\t\"TAGPOS\",\n\t\t\t\t\t\t\t\t\"TATALA\",\n\t\t\t\t\t\t\t\t\"TAYUMAN\"\n\t\t\t\t\t\t  \t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t  \"name\": \"CAINTA\",\n\t\t\t\t\t\t\t  \"districts\": [\n\t\t\t\t\t\t\t\t\"SAN ANDRES (POB.)\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO\",\n\t\t\t\t\t\t\t\t\"SAN JUAN\",\n\t\t\t\t\t\t\t\t\"SAN ROQUE\",\n\t\t\t\t\t\t\t\t\"SANTA ROSA\",\n\t\t\t\t\t\t\t\t\"SANTO DOMINGO\",\n\t\t\t\t\t\t\t\t\"SANTO NI\u00F1O\"\n\t\t\t\t\t\t  \t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t  \"name\": \"CARDONA\",\n\t\t\t\t\t\t\t  \"districts\": [\n\t\t\t\t\t\t\t\t\"BALIBAGO\",\n\t\t\t\t\t\t\t\t\"BOOR\",\n\t\t\t\t\t\t\t\t\"CALAHAN\",\n\t\t\t\t\t\t\t\t\"DALIG\",\n\t\t\t\t\t\t\t\t\"DEL REMEDIO (POB.)\",\n\t\t\t\t\t\t\t\t\"IGLESIA (POB.)\",\n\t\t\t\t\t\t\t\t\"LAMBAC\",\n\t\t\t\t\t\t\t\t\"LOOC\",\n\t\t\t\t\t\t\t\t\"MALANGGAM-CALUBACAN\",\n\t\t\t\t\t\t\t\t\"NAGSULO\",\n\t\t\t\t\t\t\t\t\"NAVOTAS\",\n\t\t\t\t\t\t\t\t\"PATUNHAY\",\n\t\t\t\t\t\t\t\t\"REAL (POB.)\",\n\t\t\t\t\t\t\t\t\"SAMPAD\",\n\t\t\t\t\t\t\t\t\"SAN ROQUE (POB.)\",\n\t\t\t\t\t\t\t\t\"SUBAY\",\n\t\t\t\t\t\t\t\t\"TICULIO\",\n\t\t\t\t\t\t\t\t\"TUNA\"\n\t\t\t\t\t\t  \t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t  \"name\": \"CITY OF ANTIPOLO\",\n\t\t\t\t\t\t\t  \"districts\": [\n\t\t\t\t\t\t\t\t\"BAGONG NAYON\",\n\t\t\t\t\t\t\t\t\"BEVERLY HILLS\",\n\t\t\t\t\t\t\t\t\"CALAWIS\",\n\t\t\t\t\t\t\t\t\"CUPANG\",\n\t\t\t\t\t\t\t\t\"DALIG\",\n\t\t\t\t\t\t\t\t\"DELA PAZ (POB.)\",\n\t\t\t\t\t\t\t\t\"INARAWAN\",\n\t\t\t\t\t\t\t\t\"MAMBUGAN\",\n\t\t\t\t\t\t\t\t\"MAYAMOT\",\n\t\t\t\t\t\t\t\t\"MUNTINGDILAW\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO (POB.)\",\n\t\t\t\t\t\t\t\t\"SAN JOSE (POB.)\",\n\t\t\t\t\t\t\t\t\"SAN JUAN\",\n\t\t\t\t\t\t\t\t\"SAN LUIS\",\n\t\t\t\t\t\t\t\t\"SAN ROQUE (POB.)\",\n\t\t\t\t\t\t\t\t\"SANTA CRUZ\"\n\t\t\t\t\t\t  \t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t  \"name\": \"JALA-JALA\",\n\t\t\t\t\t\t\t  \"districts\": [\n\t\t\t\t\t\t\t\t\"BAGUMBONG\",\n\t\t\t\t\t\t\t\t\"BAYUGO\",\n\t\t\t\t\t\t\t\t\"LUBO\",\n\t\t\t\t\t\t\t\t\"PAALAMAN\",\n\t\t\t\t\t\t\t\t\"PAGKALINAWAN\",\n\t\t\t\t\t\t\t\t\"PALAYPALAY\",\n\t\t\t\t\t\t\t\t\"PUNTA\",\n\t\t\t\t\t\t\t\t\"SECOND DISTRICT (POB.)\",\n\t\t\t\t\t\t\t\t\"SIPSIPIN\",\n\t\t\t\t\t\t\t\t\"SPECIAL DISTRICT (POB.)\",\n\t\t\t\t\t\t\t\t\"THIRD DISTRICT (POB.)\"\n\t\t\t\t\t\t  \t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t  \"name\": \"MORONG\",\n\t\t\t\t\t\t\t  \"districts\": [\n\t\t\t\t\t\t\t\t\"BOMBONGAN\",\n\t\t\t\t\t\t\t\t\"CAN-CAL-LAN (CANIOGAN-CALERO-LANANG)\",\n\t\t\t\t\t\t\t\t\"LAGUNDI\",\n\t\t\t\t\t\t\t\t\"MAYBANCAL\",\n\t\t\t\t\t\t\t\t\"SAN GUILLERMO\",\n\t\t\t\t\t\t\t\t\"SAN JOSE (POB.)\",\n\t\t\t\t\t\t\t\t\"SAN JUAN (POB.)\",\n\t\t\t\t\t\t\t\t\"SAN PEDRO (POB.)\"\n\t\t\t\t\t\t  \t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t  \"name\": \"PILILIA\",\n\t\t\t\t\t\t\t  \"districts\": [\n\t\t\t\t\t\t\t\t\"BAGUMBAYAN (POB.)\",\n\t\t\t\t\t\t\t\t\"HALAYHAYIN\",\n\t\t\t\t\t\t\t\t\"HULO (POB.)\",\n\t\t\t\t\t\t\t\t\"IMATONG (POB.)\",\n\t\t\t\t\t\t\t\t\"MALAYA\",\n\t\t\t\t\t\t\t\t\"NIOGAN\",\n\t\t\t\t\t\t\t\t\"QUISAO\",\n\t\t\t\t\t\t\t\t\"TAKUNGAN (POB.)\",\n\t\t\t\t\t\t\t\t\"WAWA (POB.)\"\n\t\t\t\t\t\t  \t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t  \"name\": \"RODRIGUEZ (MONTALBAN)\",\n\t\t\t\t\t\t\t  \"districts\": [\n\t\t\t\t\t\t\t\t\"BALITE (POB.)\",\n\t\t\t\t\t\t\t\t\"BURGOS\",\n\t\t\t\t\t\t\t\t\"GERONIMO\",\n\t\t\t\t\t\t\t\t\"MACABUD\",\n\t\t\t\t\t\t\t\t\"MANGGAHAN\",\n\t\t\t\t\t\t\t\t\"MASCAP\",\n\t\t\t\t\t\t\t\t\"PURAY\",\n\t\t\t\t\t\t\t\t\"ROSARIO\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO\",\n\t\t\t\t\t\t\t\t\"SAN JOSE\",\n\t\t\t\t\t\t\t\t\"SAN RAFAEL\"\n\t\t\t\t\t\t  \t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t  \"name\": \"SAN MATEO\",\n\t\t\t\t\t\t\t  \"districts\": [\n\t\t\t\t\t\t\t\t\"AMPID I\",\n\t\t\t\t\t\t\t\t\"AMPID II\",\n\t\t\t\t\t\t\t\t\"BANABA\",\n\t\t\t\t\t\t\t\t\"DULONG BAYAN 1\",\n\t\t\t\t\t\t\t\t\"DULONG BAYAN 2\",\n\t\t\t\t\t\t\t\t\"GUINAYANG\",\n\t\t\t\t\t\t\t\t\"GUITNANG BAYAN I (POB.)\",\n\t\t\t\t\t\t\t\t\"GUITNANG BAYAN II (POB.)\",\n\t\t\t\t\t\t\t\t\"GULOD MALAYA\",\n\t\t\t\t\t\t\t\t\"MALANDAY\",\n\t\t\t\t\t\t\t\t\"MALY\",\n\t\t\t\t\t\t\t\t\"PINTONG BOCAWE\",\n\t\t\t\t\t\t\t\t\"SANTA ANA\",\n\t\t\t\t\t\t\t\t\"SANTO NI\u00F1O\",\n\t\t\t\t\t\t\t\t\"SILANGAN\"\n\t\t\t\t\t\t  \t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t  \"name\": \"TANAY\",\n\t\t\t\t\t\t\t  \"districts\": [\n\t\t\t\t\t\t\t\t\"CAYABU\",\n\t\t\t\t\t\t\t\t\"CUYAMBAY\",\n\t\t\t\t\t\t\t\t\"DARAITAN\",\n\t\t\t\t\t\t\t\t\"KATIPUNAN-BAYAN (POB.)\",\n\t\t\t\t\t\t\t\t\"KAYBUTO (POB.)\",\n\t\t\t\t\t\t\t\t\"LAIBAN\",\n\t\t\t\t\t\t\t\t\"MAG-AMPON (POB.)\",\n\t\t\t\t\t\t\t\t\"MAMUYAO\",\n\t\t\t\t\t\t\t\t\"PINAGKAMALIGAN (POB.)\",\n\t\t\t\t\t\t\t\t\"PLAZA ALDEA (POB.)\",\n\t\t\t\t\t\t\t\t\"SAMPALOC\",\n\t\t\t\t\t\t\t\t\"SAN ANDRES\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO (POB.)\",\n\t\t\t\t\t\t\t\t\"SANTA INEZ\",\n\t\t\t\t\t\t\t\t\"SANTO NI\u00F1O\",\n\t\t\t\t\t\t\t\t\"TABING ILOG (POB.)\",\n\t\t\t\t\t\t\t\t\"TANDANG KUTYO (POB.)\",\n\t\t\t\t\t\t\t\t\"TINUCAN\",\n\t\t\t\t\t\t\t\t\"WAWA (POB.)\"\n\t\t\t\t\t\t  \t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t  \"name\": \"TAYTAY\",\n\t\t\t\t\t\t\t  \"districts\": [\n\t\t\t\t\t\t\t\t\"DOLORES (POB.)\",\n\t\t\t\t\t\t\t\t\"MUZON\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO\",\n\t\t\t\t\t\t\t\t\"SAN JUAN\",\n\t\t\t\t\t\t\t\t\"SANTA ANA\"\n\t\t\t\t\t\t  \t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t  \"name\": \"TERESA\",\n\t\t\t\t\t\t\t  \"districts\": [\n\t\t\t\t\t\t\t\t\"BAGUMBAYAN\",\n\t\t\t\t\t\t\t\t\"CALUMPANG SANTO CRISTO\",\n\t\t\t\t\t\t\t\t\"DALIG\",\n\t\t\t\t\t\t\t\t\"DULUMBAYAN\",\n\t\t\t\t\t\t\t\t\"MAY-IBA\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"PRINZA\",\n\t\t\t\t\t\t\t\t\"SAN GABRIEL\",\n\t\t\t\t\t\t\t\t\"SAN ROQUE\"\n\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\"name\": \"REGION VII\",\n\t\t\t\"provinces\": [{\n\t\t\t\t\t\"name\": \"CEBU\",\n\t\t\t\t\t\"cities\": [{\n\t\t\t\t\t\t\t\t\"name\": \"ALCANTARA\",\n\t\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"CABADIANGAN\",\n\t\t\t\t\t\t\t\t\"CABIL-ISAN\",\n\t\t\t\t\t\t\t\t\"CANDABONG\",\n\t\t\t\t\t\t\t\t\"LAWAAN\",\n\t\t\t\t\t\t\t\t\"MANGA\",\n\t\t\t\t\t\t\t\t\"PALANAS\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"POLO\",\n\t\t\t\t\t\t\t\t\"SALAGMAYA\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\t\t\n\t\t\t\t\t\t\t\t\"name\": \"ALCOY\",\n\t\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ATABAY\",\n\t\t\t\t\t\t\t\t\"DAAN-LUNGSOD\",\n\t\t\t\t\t\t\t\t\"GUIWANG\",\n\t\t\t\t\t\t\t\t\"NUG-AS\",\n\t\t\t\t\t\t\t\t\"PASOL\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"PUGALO\",\n\t\t\t\t\t\t\t\t\"SAN AGUSTIN\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\t\t\n\t\t\t\t\t\t\t\t\"name\": \"ALEGRIA\",\n\t\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"COMPOSTELA\",\n\t\t\t\t\t\t\t\t\"GUADALUPE\",\n\t\t\t\t\t\t\t\t\"LEGASPI\",\n\t\t\t\t\t\t\t\t\"LEPANTO\",\n\t\t\t\t\t\t\t\t\"MADRIDEJOS\",\n\t\t\t\t\t\t\t\t\"MONTPELLER\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"SANTA FILOMENA\",\n\t\t\t\t\t\t\t\t\"VALENCIA\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\t\t\n\t\t\t\t\t\t\t\t\"name\": \"ALOGUISAN\",\n\t\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ANGILAN\",\n\t\t\t\t\t\t\t\t\"BOJO\",\n\t\t\t\t\t\t\t\t\"BONBON\",\n\t\t\t\t\t\t\t\t\"EZPERANZA\",\n\t\t\t\t\t\t\t\t\"KANDINGAN\",\n\t\t\t\t\t\t\t\t\"KANTABOGON\",\n\t\t\t\t\t\t\t\t\"KAWASAN\",\n\t\t\t\t\t\t\t\t\"OLANGO\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"PUNAY\",\n\t\t\t\t\t\t\t\t\"ROSARION\",\n\t\t\t\t\t\t\t\t\"SAKSAK\",\n\t\t\t\t\t\t\t\t\"TAMPAAN\",\n\t\t\t\t\t\t\t\t\"TOYOKAN\",\n\t\t\t\t\t\t\t\t\"ZARAGOZA\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\t\t\n\t\t\t\t\t\t\t\t\"name\": \"ARGAO\",\n\t\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ALAMBIJUD\",\n\t\t\t\t\t\t\t\t\"ANAJAO\",\n\t\t\t\t\t\t\t\t\"APO\",\n\t\t\t\t\t\t\t\t\"BALAAS\",\n\t\t\t\t\t\t\t\t\"BALISONG\",\n\t\t\t\t\t\t\t\t\"BINLOD\",\n\t\t\t\t\t\t\t\t\"BOGO\",\n\t\t\t\t\t\t\t\t\"BUG-OT\",\n\t\t\t\t\t\t\t\t\"BULASA\",\n\t\t\t\t\t\t\t\t\"BUTONG\",\n\t\t\t\t\t\t\t\t\"CALAGASAN\",\n\t\t\t\t\t\t\t\t\"CANBANTUG\",\n\t\t\t\t\t\t\t\t\"CANSUJE\",\n\t\t\t\t\t\t\t\t\"CAPIO-AN\",\n\t\t\t\t\t\t\t\t\"CASAY\",\n\t\t\t\t\t\t\t\t\"CATANG\",\n\t\t\t\t\t\t\t\t\"CONALUM\",\n\t\t\t\t\t\t\t\t\"GUIWANON\",\n\t\t\t\t\t\t\t\t\"GUTLANG\",\n\t\t\t\t\t\t\t\t\"JAMPANG\",\n\t\t\t\t\t\t\t\t\"JOMGAO\",\n\t\t\t\t\t\t\t\t\"LAMAKAN\",\n\t\t\t\t\t\t\t\t\"LANGTAD\",\n\t\t\t\t\t\t\t\t\"LANGUB\",\n\t\t\t\t\t\t\t\t\"LAPAY\",\n\t\t\t\t\t\t\t\t\"LENGIGON\",\n\t\t\t\t\t\t\t\t\"LINUT-OD\",\n\t\t\t\t\t\t\t\t\"MABASA\",\n\t\t\t\t\t\t\t\t\"MANDILIKIT\",\n\t\t\t\t\t\t\t\t\"MOMPELLER\",\n\t\t\t\t\t\t\t\t\"PANADTARAN\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"SUA\",\n\t\t\t\t\t\t\t\t\"SUMAGUAN\",\n\t\t\t\t\t\t\t\t\"TABAYAG\",\n\t\t\t\t\t\t\t\t\"TALAGA\",\n\t\t\t\t\t\t\t\t\"TALAYTAY\",\n\t\t\t\t\t\t\t\t\"TALO-OT\",\n\t\t\t\t\t\t\t\t\"TAGUIB\",\n\t\t\t\t\t\t\t\t\"TULANG\",\n\t\t\t\t\t\t\t\t\"TULIC\",\n\t\t\t\t\t\t\t\t\"UBAUB\",\n\t\t\t\t\t\t\t\t\"USMAD\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\t\t\n\t\t\t\t\t\t\t\t\"name\": \"ASTURIAS\",\n\t\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"AGBANGA\",\n\t\t\t\t\t\t\t\t\"AGTUGOP\",\n\t\t\t\t\t\t\t\t\"BAGO\",\n\t\t\t\t\t\t\t\t\"BAIRAN\",\n\t\t\t\t\t\t\t\t\"BANBAN\",\n\t\t\t\t\t\t\t\t\"BAYE\",\n\t\t\t\t\t\t\t\t\"BOG-O\",\n\t\t\t\t\t\t\t\t\"KALUANGAN\",\n\t\t\t\t\t\t\t\t\"LANAO\",\n\t\t\t\t\t\t\t\t\"LANGUB\",\n\t\t\t\t\t\t\t\t\"LOOC NORTE\",\n\t\t\t\t\t\t\t\t\"LUNAS\",\n\t\t\t\t\t\t\t\t\"MAGKALAPE\",\n\t\t\t\t\t\t\t\t\"MANGUIAO\",\n\t\t\t\t\t\t\t\t\"NEW BAGO\",\n\t\t\t\t\t\t\t\t\"OWAK\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"SAKSAK\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO\",\n\t\t\t\t\t\t\t\t\"SAN ROQUE\",\n\t\t\t\t\t\t\t\t\"SANTA LUCIA\",\n\t\t\t\t\t\t\t\t\"SANTA RITA\",\n\t\t\t\t\t\t\t\t\"TAG-AMAKAN\",\n\t\t\t\t\t\t\t\t\"TAGBUBONGA\",\n\t\t\t\t\t\t\t\t\"TUBIGAGMANOK\",\n\t\t\t\t\t\t\t\t\"TUBOD\",\n\t\t\t\t\t\t\t\t\"UBOGON\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\t\t\n\t\t\t\t\t\t\t\t\"name\": \"BADIAN\",\n\t\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ALAWIJAO\",\n\t\t\t\t\t\t\t\t\"BALJAAN\",\n\t\t\t\t\t\t\t\t\"BANHIGAN\",\n\t\t\t\t\t\t\t\t\"BASAK\",\n\t\t\t\t\t\t\t\t\"BASIAO\",\n\t\t\t\t\t\t\t\t\"BATO\",\n\t\t\t\t\t\t\t\t\"BUGAS\",\n\t\t\t\t\t\t\t\t\"CALANGCANG\",\n\t\t\t\t\t\t\t\t\"CANDIIS\",\n\t\t\t\t\t\t\t\t\"DAGATAN\",\n\t\t\t\t\t\t\t\t\"DOBDOB\",\n\t\t\t\t\t\t\t\t\"GINABLAN\",\n\t\t\t\t\t\t\t\t\"LAMBUG\",\n\t\t\t\t\t\t\t\t\"MALABAGO\",\n\t\t\t\t\t\t\t\t\"MALHIAO\",\n\t\t\t\t\t\t\t\t\"MANDUYONG\",\n\t\t\t\t\t\t\t\t\"MATUTINAO\",\n\t\t\t\t\t\t\t\t\"PATONG\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"SANLAGAN\",\n\t\t\t\t\t\t\t\t\"SANTICON\",\n\t\t\t\t\t\t\t\t\"SULSUGAN\",\n\t\t\t\t\t\t\t\t\"TALAYONG\",\n\t\t\t\t\t\t\t\t\"TAYTAY\",\n\t\t\t\t\t\t\t\t\"TIGBAO\",\n\t\t\t\t\t\t\t\t\"TIGUIB\",\n\t\t\t\t\t\t\t\t\"TUBOD\",\n\t\t\t\t\t\t\t\t\"ZARAGOSA\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\t\t\n\t\t\t\t\t\t\t\t\"name\": \"BALAMBAN\",\n\t\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ABUCAYAN\",\n\t\t\t\t\t\t\t\t\"ALIWANAY\",\n\t\t\t\t\t\t\t\t\"ARPILI\",\n\t\t\t\t\t\t\t\t\"BALIWAGAN (POBLACION)\",\n\t\t\t\t\t\t\t\t\"BAYONG\",\n\t\t\t\t\t\t\t\t\"BIASONG\",\n\t\t\t\t\t\t\t\t\"BUANOY\",\n\t\t\t\t\t\t\t\t\"CABAGDALAN\",\n\t\t\t\t\t\t\t\t\"CABASIANGAN\",\n\t\t\t\t\t\t\t\t\"CAMBUHAWE\",\n\t\t\t\t\t\t\t\t\"CANSOMOROY\",\n\t\t\t\t\t\t\t\t\"CANTIBAS\",\n\t\t\t\t\t\t\t\t\"CANTUOD\",\n\t\t\t\t\t\t\t\t\"DUANGAN\",\n\t\t\t\t\t\t\t\t\"GAAS\",\n\t\t\t\t\t\t\t\t\"GINATILAN\",\n\t\t\t\t\t\t\t\t\"HINGATMONAN\",\n\t\t\t\t\t\t\t\t\"LAMESA\",\n\t\t\t\t\t\t\t\t\"LIKI\",\n\t\t\t\t\t\t\t\t\"LUCA\",\n\t\t\t\t\t\t\t\t\"MATUN-OG\",\n\t\t\t\t\t\t\t\t\"NANGKA\",\n\t\t\t\t\t\t\t\t\"PONDOL\",\n\t\t\t\t\t\t\t\t\"PRENZA\",\n\t\t\t\t\t\t\t\t\"SANTA CRUZ-STO NI\u00D1O (POBLACION)\",\n\t\t\t\t\t\t\t\t\"SINGSING\",\n\t\t\t\t\t\t\t\t\"SUNOG (MAGSAYSAY)\",\n\t\t\t\t\t\t\t\t\"VITO\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\t\t\n\t\t\t\t\t\t\t\t\"name\": \"BANTAYAN\",\n\t\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ATOP-ATOP\",\n\t\t\t\t\t\t\t\t\"BAIGAD\",\n\t\t\t\t\t\t\t\t\"BANTIGUE (POBLACION)\",\n\t\t\t\t\t\t\t\t\"BAOD\",\n\t\t\t\t\t\t\t\t\"BINAOBAO (POBLACION)\",\n\t\t\t\t\t\t\t\t\"BOTIGUES\",\n\t\t\t\t\t\t\t\t\"DOONG\",\n\t\t\t\t\t\t\t\t\"GUIWANON\",\n\t\t\t\t\t\t\t\t\"HILOTONGAN\",\n\t\t\t\t\t\t\t\t\"KABAC\",\n\t\t\t\t\t\t\t\t\"KABANGBANG\",\n\t\t\t\t\t\t\t\t\"KAMPINGGANON\",\n\t\t\t\t\t\t\t\t\"KANGKAIBE\",\n\t\t\t\t\t\t\t\t\"LIPAYRAN\",\n\t\t\t\t\t\t\t\t\"LUYONGBAYBAY\",\n\t\t\t\t\t\t\t\t\"MOJON\",\n\t\t\t\t\t\t\t\t\"OBO-OB\",\n\t\t\t\t\t\t\t\t\"PATAO\",\n\t\t\t\t\t\t\t\t\"PUTIAN\",\n\t\t\t\t\t\t\t\t\"SILLON\",\n\t\t\t\t\t\t\t\t\"SUBA (POBLACION)\",\n\t\t\t\t\t\t\t\t\"SULANGAN\",\n\t\t\t\t\t\t\t\t\"SUNGKO\",\n\t\t\t\t\t\t\t\t\"TAMIAO\",\n\t\t\t\t\t\t\t\t\"TICAD (POBLACION)\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\t\t\n\t\t\t\t\t\t\t\t\"name\": \"BARILI\",\n\t\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"AZUCENA\",\n\t\t\t\t\t\t\t\t\"BAGAKAY\",\n\t\t\t\t\t\t\t\t\"BALAO\",\n\t\t\t\t\t\t\t\t\"BOLOCBOLOC\",\n\t\t\t\t\t\t\t\t\"BUDBUD\",\n\t\t\t\t\t\t\t\t\"BUGTONG KAWAYAN\",\n\t\t\t\t\t\t\t\t\"CABCABAN\",\n\t\t\t\t\t\t\t\t\"CAGAY\",\n\t\t\t\t\t\t\t\t\"CAMPANGGA\",\n\t\t\t\t\t\t\t\t\"CANDUGAY\",\n\t\t\t\t\t\t\t\t\"DAKIT\",\n\t\t\t\t\t\t\t\t\"GILOCTOG\",\n\t\t\t\t\t\t\t\t\"GIWANON\",\n\t\t\t\t\t\t\t\t\"GUIBUANGAN\",\n\t\t\t\t\t\t\t\t\"GUNTING\",\n\t\t\t\t\t\t\t\t\"HILASGASAN\",\n\t\t\t\t\t\t\t\t\"JAPITAN\",\n\t\t\t\t\t\t\t\t\"KALUBIHAN\",\n\t\t\t\t\t\t\t\t\"KANGDAMPAS\",\n\t\t\t\t\t\t\t\t\"LUHOD\",\n\t\t\t\t\t\t\t\t\"LUPO\",\n\t\t\t\t\t\t\t\t\"LUYO\",\n\t\t\t\t\t\t\t\t\"MAGHANOY\",\n\t\t\t\t\t\t\t\t\"MAIGANG\",\n\t\t\t\t\t\t\t\t\"MALOLOS\",\n\t\t\t\t\t\t\t\t\"MANTALONGON\",\n\t\t\t\t\t\t\t\t\"MANTAYUPAN\",\n\t\t\t\t\t\t\t\t\"MAYANA\",\n\t\t\t\t\t\t\t\t\"MINOLOS\",\n\t\t\t\t\t\t\t\t\"NABUNTURAN\",\n\t\t\t\t\t\t\t\t\"NASIPIT\",\n\t\t\t\t\t\t\t\t\"PANCIL\",\n\t\t\t\t\t\t\t\t\"PANGPANG\",\n\t\t\t\t\t\t\t\t\"PARIL\",\n\t\t\t\t\t\t\t\t\"PATUPAT\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"SAN RAFAEL\",\n\t\t\t\t\t\t\t\t\"SANTA ANA\",\n\t\t\t\t\t\t\t\t\"SAYAW\",\n\t\t\t\t\t\t\t\t\"TAL-OT\",\n\t\t\t\t\t\t\t\t\"TUBOD\",\n\t\t\t\t\t\t\t\t\"VITO\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\t\t\n\t\t\t\t\t\t\t\t\"name\": \"BOGO CITY\",\n\t\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ANONANG NORTE\",\n\t\t\t\t\t\t\t\t\"ANONANG SUR\",\n\t\t\t\t\t\t\t\t\"BANBAN\",\n\t\t\t\t\t\t\t\t\"BINABAG\",\n\t\t\t\t\t\t\t\t\"BUNGTOD (POBLACION)\",\n\t\t\t\t\t\t\t\t\"CARBON (POBLACION)\",\n\t\t\t\t\t\t\t\t\"CAYANG\",\n\t\t\t\t\t\t\t\t\"COGON (POBLACION)\",\n\t\t\t\t\t\t\t\t\"DAKIT\",\n\t\t\t\t\t\t\t\t\"DON PEDRO RODRIGUEZ\",\n\t\t\t\t\t\t\t\t\"GAIRAN\",\n\t\t\t\t\t\t\t\t\"GUADALUPE\",\n\t\t\t\t\t\t\t\t\"LAPAZ\",\n\t\t\t\t\t\t\t\t\"LA PURISIMA CONCEPCION (POBLACION)\",\n\t\t\t\t\t\t\t\t\"LIBERTAD\",\n\t\t\t\t\t\t\t\t\"LOURDES (POBLACION)\",\n\t\t\t\t\t\t\t\t\"MALINGIN\",\n\t\t\t\t\t\t\t\t\"MARANGOG\",\n\t\t\t\t\t\t\t\t\"NAILON\",\n\t\t\t\t\t\t\t\t\"ODLOT\",\n\t\t\t\t\t\t\t\t\"PANDAN (PANDAN HEIGHTS)\",\n\t\t\t\t\t\t\t\t\"POLAMBATO\",\n\t\t\t\t\t\t\t\t\"SAMBAG (POBLACION)\",\n\t\t\t\t\t\t\t\t\"SAN VICENTE (POBLACION)\",\n\t\t\t\t\t\t\t\t\"SANTO NI\u00D1O\",\n\t\t\t\t\t\t\t\t\"SANTO ROSARIO (POBLACION)\",\n\t\t\t\t\t\t\t\t\"SIOCON\",\n\t\t\t\t\t\t\t\t\"SUDLONON\",\n\t\t\t\t\t\t\t\t\"TAYTAYAN\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\t\t\n\t\t\t\t\t\t\t\t\"name\": \"BOLJOON\",\n\t\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ARBOR\",\n\t\t\t\t\t\t\t\t\"BACLAYAN\",\n\t\t\t\t\t\t\t\t\"EL PARDO\",\n\t\t\t\t\t\t\t\t\"GRANADA\",\n\t\t\t\t\t\t\t\t\"LOWER BECERRIL\",\n\t\t\t\t\t\t\t\t\"LUNOP\",\n\t\t\t\t\t\t\t\t\"NANGKA\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"SAN ANTONIO\",\n\t\t\t\t\t\t\t\t\"SOUTH GRANADA\",\n\t\t\t\t\t\t\t\t\"UPPER BECERRIL\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\t\t\n\t\t\t\t\t\t\t\t\"name\": \"BORBON\",\n\t\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BAGACAY\",\n\t\t\t\t\t\t\t\t\"BILI\",\n\t\t\t\t\t\t\t\t\"BINGAY\",\n\t\t\t\t\t\t\t\t\"BONGDO\",\n\t\t\t\t\t\t\t\t\"BONGDO GUA\",\n\t\t\t\t\t\t\t\t\"BONGOYAN\",\n\t\t\t\t\t\t\t\t\"CADARUHAN\",\n\t\t\t\t\t\t\t\t\"CAJEL\",\n\t\t\t\t\t\t\t\t\"CAMPUSONG\",\n\t\t\t\t\t\t\t\t\"CLAVERA\",\n\t\t\t\t\t\t\t\t\"DON GREGORIO ANTIGUA (TAYTAYAN)\",\n\t\t\t\t\t\t\t\t\"LAAW\",\n\t\t\t\t\t\t\t\t\"LUGO\",\n\t\t\t\t\t\t\t\t\"MANAGASE\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"SAGAY\",\n\t\t\t\t\t\t\t\t\"SAN JOSE\",\n\t\t\t\t\t\t\t\t\"TABUNAN\",\n\t\t\t\t\t\t\t\t\"TAGNUCAN\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\t\t\n\t\t\t\t\t\t\t\t\"name\": \"CARCAR CITY\",\n\t\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BOLINAWAN\",\n\t\t\t\t\t\t\t\t\"BUENAVISTA\",\n\t\t\t\t\t\t\t\t\"CALIDNGAN\",\n\t\t\t\t\t\t\t\t\"CAN\u2011ASUJAN\",\n\t\t\t\t\t\t\t\t\"GUADALUPE\",\n\t\t\t\t\t\t\t\t\"LIBURON\",\n\t\t\t\t\t\t\t\t\"NAPO\",\n\t\t\t\t\t\t\t\t\"OCA\u00D1A\",\n\t\t\t\t\t\t\t\t\"PERRELOS\",\n\t\t\t\t\t\t\t\t\"POBLACION I\",\n\t\t\t\t\t\t\t\t\"POBLACION II\",\n\t\t\t\t\t\t\t\t\"POBLACION III\",\n\t\t\t\t\t\t\t\t\"TUYOM\",\n\t\t\t\t\t\t\t\t\"VALENCIA\",\n\t\t\t\t\t\t\t\t\"VALLADOLID\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\t\t\n\t\t\t\t\t\t\t\t\"name\": \"CARMEN\",\n\t\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BARING\",\n\t\t\t\t\t\t\t\t\"CANTIPAY\",\n\t\t\t\t\t\t\t\t\"CANTUKONG\",\n\t\t\t\t\t\t\t\t\"CANTUMOG\",\n\t\t\t\t\t\t\t\t\"CAURASAN\",\n\t\t\t\t\t\t\t\t\"COGON EAST\",\n\t\t\t\t\t\t\t\t\"COGON WEST\",\n\t\t\t\t\t\t\t\t\"CORTE\",\n\t\t\t\t\t\t\t\t\"DAWIS NORTE\",\n\t\t\t\t\t\t\t\t\"DAWIS SUR\",\n\t\t\t\t\t\t\t\t\"HAGNAYA\",\n\t\t\t\t\t\t\t\t\"IPIL\",\n\t\t\t\t\t\t\t\t\"LANIPGA\",\n\t\t\t\t\t\t\t\t\"LIBORON\",\n\t\t\t\t\t\t\t\t\"LOWER NATIMAO-AN\",\n\t\t\t\t\t\t\t\t\"LUYANG\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"PUENTE\",\n\t\t\t\t\t\t\t\t\"SAC-ON\",\n\t\t\t\t\t\t\t\t\"TRIUMFO\",\n\t\t\t\t\t\t\t\t\"UPPER NATIMAO-AN\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\t\t\n\t\t\t\t\t\t\t\t\"name\": \"CATMON\",\n\t\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"AGSUWAO\",\n\t\t\t\t\t\t\t\t\"AMANCION\",\n\t\t\t\t\t\t\t\t\"ANAPOG\",\n\t\t\t\t\t\t\t\t\"BACTAS\",\n\t\t\t\t\t\t\t\t\"BASAK\",\n\t\t\t\t\t\t\t\t\"BINONGKALAN\",\n\t\t\t\t\t\t\t\t\"BONGYAS\",\n\t\t\t\t\t\t\t\t\"CABUNGAAN\",\n\t\t\t\t\t\t\t\t\"CAMBANGKAYA\",\n\t\t\t\t\t\t\t\t\"CAN-IBUANG\",\n\t\t\t\t\t\t\t\t\"CATMONDAAN\",\n\t\t\t\t\t\t\t\t\"CORAZON (POBLACION)\",\n\t\t\t\t\t\t\t\t\"DUYAN\",\n\t\t\t\t\t\t\t\t\"FLORES (POBLACION))\",\n\t\t\t\t\t\t\t\t\"GINABUCAN\",\n\t\t\t\t\t\t\t\t\"MACAAS\",\n\t\t\t\t\t\t\t\t\"PANALIPAN\",\n\t\t\t\t\t\t\t\t\"SAN JOSE POB. (CATADMAN)\",\n\t\t\t\t\t\t\t\t\"TABILI\",\n\t\t\t\t\t\t\t\t\"TINABYONAN\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\t\t\n\t\t\t\t\t\t\t\t\"name\": \"CEBU CITY\",\n\t\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ADLAON\",\n\t\t\t\t\t\t\t\t\"AGSUNGOT\",\n\t\t\t\t\t\t\t\t\"APAS\",\n\t\t\t\t\t\t\t\t\"BABAG\",\n\t\t\t\t\t\t\t\t\"BACAYAN\",\n\t\t\t\t\t\t\t\t\"BANILAD\",\n\t\t\t\t\t\t\t\t\"BASAK PARDO\",\n\t\t\t\t\t\t\t\t\"BASAK SAN NICOLAS\",\n\t\t\t\t\t\t\t\t\"BINALIW\",\n\t\t\t\t\t\t\t\t\"BONBON\",\n\t\t\t\t\t\t\t\t\"BUDLAAN\",\n\t\t\t\t\t\t\t\t\"BUHISAN\",\n\t\t\t\t\t\t\t\t\"BULACAO (BULACAO PARDO)\",\n\t\t\t\t\t\t\t\t\"BUOT-TAOP (BUOT\u2011TAUP PARDO)\",\n\t\t\t\t\t\t\t\t\"BUSAY\",\n\t\t\t\t\t\t\t\t\"CALAMBA\",\n\t\t\t\t\t\t\t\t\"CAMBINOCOT\",\n\t\t\t\t\t\t\t\t\"CAPITOL SITE\",\n\t\t\t\t\t\t\t\t\"CARRETA\",\n\t\t\t\t\t\t\t\t\"COGON PARDO\",\n\t\t\t\t\t\t\t\t\"COGON\u2011RAMOS\",\n\t\t\t\t\t\t\t\t\"DAY\u2011AS\",\n\t\t\t\t\t\t\t\t\"DULJO FATIMA\",\n\t\t\t\t\t\t\t\t\"ERMITA\",\n\t\t\t\t\t\t\t\t\"GUADALUPE\",\n\t\t\t\t\t\t\t\t\"GUBA\",\n\t\t\t\t\t\t\t\t\"HIPODROMO\",\n\t\t\t\t\t\t\t\t\"INAYAWAN (INAYAWAN PARDO)\",\n\t\t\t\t\t\t\t\t\"KALUBIHAN\",\n\t\t\t\t\t\t\t\t\"KALUNASAN\",\n\t\t\t\t\t\t\t\t\"KAMAGAYAN\",\n\t\t\t\t\t\t\t\t\"KAMPUTHAW (CAMPUTHAW)\",\n\t\t\t\t\t\t\t\t\"KASAMBAGAN\",\n\t\t\t\t\t\t\t\t\"KINASANG\u2011AN (KINASANG\u2011AN PARDO)\",\n\t\t\t\t\t\t\t\t\"LABANGON\",\n\t\t\t\t\t\t\t\t\"LAHUG\",\n\t\t\t\t\t\t\t\t\"LOREGA\u2011SAN MIGUEL\",\n\t\t\t\t\t\t\t\t\"LUSARAN\",\n\t\t\t\t\t\t\t\t\"LUZ\",\n\t\t\t\t\t\t\t\t\"MABINI\",\n\t\t\t\t\t\t\t\t\"MABOLO\",\n\t\t\t\t\t\t\t\t\"MALUBOG\",\n\t\t\t\t\t\t\t\t\"MAMBALING\",\n\t\t\t\t\t\t\t\t\"PAHINA CENTRAL\",\n\t\t\t\t\t\t\t\t\"PAHINA SAN NICOLAS\",\n\t\t\t\t\t\t\t\t\"PAMUTAN\",\n\t\t\t\t\t\t\t\t\"PARIAN\",\n\t\t\t\t\t\t\t\t\"PARIL\",\n\t\t\t\t\t\t\t\t\"PASIL\",\n\t\t\t\t\t\t\t\t\"PIT\u2011OS\",\n\t\t\t\t\t\t\t\t\"POBLACION PARDO\",\n\t\t\t\t\t\t\t\t\"PULANGBATO\",\n\t\t\t\t\t\t\t\t\"PUNG\u2011OL SIBUGAY\",\n\t\t\t\t\t\t\t\t\"PUNTA PRINCESA\",\n\t\t\t\t\t\t\t\t\"QUIOT (QUIOT PARDO)\",\n\t\t\t\t\t\t\t\t\"SAMBAG I\",\n\t\t\t\t\t\t\t\t\"SAMBAG II\",\n\t\t\t\t\t\t\t\t\"SAN ANTONIO\",\n\t\t\t\t\t\t\t\t\"SAN JOSE\",\n\t\t\t\t\t\t\t\t\"SAN NICOLAS PROPER\",\n\t\t\t\t\t\t\t\t\"SAN ROQUE\",\n\t\t\t\t\t\t\t\t\"SANTA CRUZ\",\n\t\t\t\t\t\t\t\t\"SANTO NI\u00D1O\",\n\t\t\t\t\t\t\t\t\"SAPANGDAKU\",\n\t\t\t\t\t\t\t\t\"SAWANG CALERO\",\n\t\t\t\t\t\t\t\t\"SINSIN\",\n\t\t\t\t\t\t\t\t\"SIRAO\",\n\t\t\t\t\t\t\t\t\"SUBA (SUBA SAN NICOLAS)\",\n\t\t\t\t\t\t\t\t\"SUDLON I\",\n\t\t\t\t\t\t\t\t\"SUDLON II\",\n\t\t\t\t\t\t\t\t\"T. PADILLA\",\n\t\t\t\t\t\t\t\t\"TABUNAN\",\n\t\t\t\t\t\t\t\t\"TAG\u2011BAO\",\n\t\t\t\t\t\t\t\t\"TALAMBAN\",\n\t\t\t\t\t\t\t\t\"TAPTAP\",\n\t\t\t\t\t\t\t\t\"TEJERO (VILLA GONZALO)\",\n\t\t\t\t\t\t\t\t\"TINAGO\",\n\t\t\t\t\t\t\t\t\"TISA\",\n\t\t\t\t\t\t\t\t\"TOONG (TO\u2011ONG PARDO)\",\n\t\t\t\t\t\t\t\t\"ZAPATERA\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\t\t\n\t\t\t\t\t\t\t\t\"name\": \"COMPOSTELA\",\n\t\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BAGALNGA\",\n\t\t\t\t\t\t\t\t\"BASAK\",\n\t\t\t\t\t\t\t\t\"BULUANG\",\n\t\t\t\t\t\t\t\t\"CABADIANGAN\",\n\t\t\t\t\t\t\t\t\"CAMBAYOG\",\n\t\t\t\t\t\t\t\t\"CANAMUCAN\",\n\t\t\t\t\t\t\t\t\"COGON\",\n\t\t\t\t\t\t\t\t\"DAPDAP\",\n\t\t\t\t\t\t\t\t\"ESTACA\",\n\t\t\t\t\t\t\t\t\"LUPA\",\n\t\t\t\t\t\t\t\t\"MAGAY\",\n\t\t\t\t\t\t\t\t\"MULAO\",\n\t\t\t\t\t\t\t\t\"PANANGBAN\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"TAG-UBE\",\n\t\t\t\t\t\t\t\t\"TAMIAO\",\n\t\t\t\t\t\t\t\t\"TUBIGAN\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\t\t\n\t\t\t\t\t\t\t\t\"name\": \"CONSOLACION\",\n\t\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"CABANGAHAN\",\n\t\t\t\t\t\t\t\t\"CANSAGA\",\n\t\t\t\t\t\t\t\t\"CASILI\",\n\t\t\t\t\t\t\t\t\"DANGLAG\",\n\t\t\t\t\t\t\t\t\"GARING\",\n\t\t\t\t\t\t\t\t\"JUGAN\",\n\t\t\t\t\t\t\t\t\"LAMAC\",\n\t\t\t\t\t\t\t\t\"LANIPGA\",\n\t\t\t\t\t\t\t\t\"NANGKA\",\n\t\t\t\t\t\t\t\t\"PANAS\",\n\t\t\t\t\t\t\t\t\"PONOYPOY\",\n\t\t\t\t\t\t\t\t\"PITOGO\",\n\t\t\t\t\t\t\t\t\"POBLACION OCCIDENTAL\",\n\t\t\t\t\t\t\t\t\"POBLACION ORIENTAL\",\n\t\t\t\t\t\t\t\t\"POLOG\",\n\t\t\t\t\t\t\t\t\"PULPOGAN\",\n\t\t\t\t\t\t\t\t\"SAC-SAC\",\n\t\t\t\t\t\t\t\t\"TAYUD\",\n\t\t\t\t\t\t\t\t\"TILHAONG\",\n\t\t\t\t\t\t\t\t\"TOLOTOLO\",\n\t\t\t\t\t\t\t\t\"TUGBONGAN\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\t\t\n\t\t\t\t\t\t\t\t\"name\": \"CORDOVA\",\n\t\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ALEGRIA\",\n\t\t\t\t\t\t\t\t\"BANGBANG\",\n\t\t\t\t\t\t\t\t\"BUAGSONG\",\n\t\t\t\t\t\t\t\t\"CATARMAN\",\n\t\t\t\t\t\t\t\t\"COGON\",\n\t\t\t\t\t\t\t\t\"DAPITAN\",\n\t\t\t\t\t\t\t\t\"DAY-AS\",\n\t\t\t\t\t\t\t\t\"GABI\",\n\t\t\t\t\t\t\t\t\"GILUTONGAN\",\n\t\t\t\t\t\t\t\t\"IBABAO\",\n\t\t\t\t\t\t\t\t\"PILIPOG\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"SAN MIGUEL\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\t\t\n\t\t\t\t\t\t\t\t\"name\": \"DAANBANTAYAN\",\n\t\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"AGUHO\",\n\t\t\t\t\t\t\t\t\"BAGAY\",\n\t\t\t\t\t\t\t\t\"BAKHAWAN\",\n\t\t\t\t\t\t\t\t\"BATERIA\",\n\t\t\t\t\t\t\t\t\"BITOON\",\n\t\t\t\t\t\t\t\t\"CALAPE\",\n\t\t\t\t\t\t\t\t\"CARNAZA\",\n\t\t\t\t\t\t\t\t\"DALINGDING\",\n\t\t\t\t\t\t\t\t\"LANAO\",\n\t\t\t\t\t\t\t\t\"LOGON\",\n\t\t\t\t\t\t\t\t\"MALBAGO\",\n\t\t\t\t\t\t\t\t\"MALINGIN\",\n\t\t\t\t\t\t\t\t\"MAYA\",\n\t\t\t\t\t\t\t\t\"PAJO\",\n\t\t\t\t\t\t\t\t\"PAYPAY\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"TALISAY\",\n\t\t\t\t\t\t\t\t\"TAPILON\",\n\t\t\t\t\t\t\t\t\"TINUBDAN\",\n\t\t\t\t\t\t\t\t\"TOMINJAO\"\n\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\t\t\n\t\t\t\t\t\t\t\t\"name\": \"DALAGUETE\",\n\t\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ABLAYAN\",\n\t\t\t\t\t\t\t\t\"BABAYONGAN\",\n\t\t\t\t\t\t\t\t\"BALUD\",\n\t\t\t\t\t\t\t\t\"BANHIGAN\",\n\t\t\t\t\t\t\t\t\"BULAK\",\n\t\t\t\t\t\t\t\t\"CALERIOHAN\",\n\t\t\t\t\t\t\t\t\"CALIONGAN\",\n\t\t\t\t\t\t\t\t\"CASAY\",\n\t\t\t\t\t\t\t\t\"CATOLOHAN\",\n\t\t\t\t\t\t\t\t\"CAWAYAN\",\n\t\t\t\t\t\t\t\t\"CONSOLACION\",\n\t\t\t\t\t\t\t\t\"CORO\",\n\t\t\t\t\t\t\t\t\"DUGYAN\",\n\t\t\t\t\t\t\t\t\"DUMALAN\",\n\t\t\t\t\t\t\t\t\"JOLOMAYNON\",\n\t\t\t\t\t\t\t\t\"LANAO\",\n\t\t\t\t\t\t\t\t\"LANGKAS\",\n\t\t\t\t\t\t\t\t\"LUMBANG\",\n\t\t\t\t\t\t\t\t\"MALONES\",\n\t\t\t\t\t\t\t\t\"MALORAY\",\n\t\t\t\t\t\t\t\t\"MANANGGAL\",\n\t\t\t\t\t\t\t\t\"MANLAPAY\",\n\t\t\t\t\t\t\t\t\"MANTALONGON\",\n\t\t\t\t\t\t\t\t\"NALHUB\",\n\t\t\t\t\t\t\t\t\"OBO\",\n\t\t\t\t\t\t\t\t\"OBONG\",\n\t\t\t\t\t\t\t\t\"PANAS\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"SACSAC\",\n\t\t\t\t\t\t\t\t\"SALUG\",\n\t\t\t\t\t\t\t\t\"TABON\",\n\t\t\t\t\t\t\t\t\"TAPUN\",\n\t\t\t\t\t\t\t\t\"TUBA\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\t\t\n\t\t\t\t\t\t\t\t\"name\": \"DUMANJUG\",\n\t\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BALAYGTIKI\",\n\t\t\t\t\t\t\t\t\"BITOON\",\n\t\t\t\t\t\t\t\t\"BULAK\",\n\t\t\t\t\t\t\t\t\"BULLOGAN\",\n\t\t\t\t\t\t\t\t\"CALABOON\",\n\t\t\t\t\t\t\t\t\"CAMBOANG\",\n\t\t\t\t\t\t\t\t\"CANDABONG\",\n\t\t\t\t\t\t\t\t\"COGON\",\n\t\t\t\t\t\t\t\t\"COTCOTON\",\n\t\t\t\t\t\t\t\t\"DOLDOL\",\n\t\t\t\t\t\t\t\t\"ILAYA (POBLACION)\",\n\t\t\t\t\t\t\t\t\"KABALAASNAN\",\n\t\t\t\t\t\t\t\t\"KABATBATAN\",\n\t\t\t\t\t\t\t\t\"KAMBANOG\",\n\t\t\t\t\t\t\t\t\"KANG-ACTOL\",\n\t\t\t\t\t\t\t\t\"KANGHALO\",\n\t\t\t\t\t\t\t\t\"KANGHUMAOD\",\n\t\t\t\t\t\t\t\t\"KANGUHA\",\n\t\t\t\t\t\t\t\t\"KANTANGKAS\",\n\t\t\t\t\t\t\t\t\"KOLABTINGON\",\n\t\t\t\t\t\t\t\t\"LAMAK\",\n\t\t\t\t\t\t\t\t\"LAWAAN\",\n\t\t\t\t\t\t\t\t\"LIONG\",\n\t\t\t\t\t\t\t\t\"MANLAPAY\",\n\t\t\t\t\t\t\t\t\"MASA\",\n\t\t\t\t\t\t\t\t\"MATALAO\",\n\t\t\t\t\t\t\t\t\"PACULOB\",\n\t\t\t\t\t\t\t\t\"PANLAAN\",\n\t\t\t\t\t\t\t\t\"PAWA\",\n\t\t\t\t\t\t\t\t\"POBLACION CENTRAL\",\n\t\t\t\t\t\t\t\t\"POBLACION LOOC\",\n\t\t\t\t\t\t\t\t\"POBLACION SIMA\",\n\t\t\t\t\t\t\t\t\"TANGIL\",\n\t\t\t\t\t\t\t\t\"TAPON\",\n\t\t\t\t\t\t\t\t\"TUBOD-BITOON\",\n\t\t\t\t\t\t\t\t\"TUBOD-DUGOAN\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\t\t\n\t\t\t\t\t\t\t\t\"name\": \"DANAO CITY\",\n\t\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BALIANG\",\n\t\t\t\t\t\t\t\t\"BAYABAS\",\n\t\t\t\t\t\t\t\t\"BINALIW\",\n\t\t\t\t\t\t\t\t\"CABUNGAHAN\",\n\t\t\t\t\t\t\t\t\"CAGAT-LAMAC\",\n\t\t\t\t\t\t\t\t\"CAHUMAYAN\",\n\t\t\t\t\t\t\t\t\"CAMBANAY\",\n\t\t\t\t\t\t\t\t\"CAMBUBHO\",\n\t\t\t\t\t\t\t\t\"COGON-CRUZ\",\n\t\t\t\t\t\t\t\t\"DANASAN\",\n\t\t\t\t\t\t\t\t\"DUNGGA\",\n\t\t\t\t\t\t\t\t\"DUNGGOAN\",\n\t\t\t\t\t\t\t\t\"GUINACOT\",\n\t\t\t\t\t\t\t\t\"GUINSAY\",\n\t\t\t\t\t\t\t\t\"IBO\",\n\t\t\t\t\t\t\t\t\"LANGOSIG\",\n\t\t\t\t\t\t\t\t\"LAWAAN\",\n\t\t\t\t\t\t\t\t\"LICOS\",\n\t\t\t\t\t\t\t\t\"LOOC\",\n\t\t\t\t\t\t\t\t\"MAGTAGOBTOB\",\n\t\t\t\t\t\t\t\t\"MALAPOC\",\n\t\t\t\t\t\t\t\t\"MANLAYAG\",\n\t\t\t\t\t\t\t\t\"MANTIJA\",\n\t\t\t\t\t\t\t\t\"MASABA\",\n\t\t\t\t\t\t\t\t\"MASLOG\",\n\t\t\t\t\t\t\t\t\"NANGKA\",\n\t\t\t\t\t\t\t\t\"OGUIS\",\n\t\t\t\t\t\t\t\t\"PILI\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"QUISOL\",\n\t\t\t\t\t\t\t\t\"SABANG\",\n\t\t\t\t\t\t\t\t\"SACSAC\",\n\t\t\t\t\t\t\t\t\"SANDAYONG NORTE\",\n\t\t\t\t\t\t\t\t\"SANDAYONG SUR\",\n\t\t\t\t\t\t\t\t\"SANTA ROSA\",\n\t\t\t\t\t\t\t\t\"SANTICAN\",\n\t\t\t\t\t\t\t\t\"SIBACAN\",\n\t\t\t\t\t\t\t\t\"SUBA\",\n\t\t\t\t\t\t\t\t\"TABOC\",\n\t\t\t\t\t\t\t\t\"TAYTAY\",\n\t\t\t\t\t\t\t\t\"TOGONON\",\n\t\t\t\t\t\t\t\t\"TUBURAN SUR\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\t\t\n\t\t\t\t\t\t\t\t\"name\": \"GINATILAN\",\n\t\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ANAO\",\n\t\t\t\t\t\t\t\t\"CAGSING\",\n\t\t\t\t\t\t\t\t\"CALABAWAN\",\n\t\t\t\t\t\t\t\t\"CAMBAGTE\",\n\t\t\t\t\t\t\t\t\"CAMPISONG\",\n\t\t\t\t\t\t\t\t\"CANORONG\",\n\t\t\t\t\t\t\t\t\"GUIWANON\",\n\t\t\t\t\t\t\t\t\"LOOC\",\n\t\t\t\t\t\t\t\t\"MALATBO\",\n\t\t\t\t\t\t\t\t\"MANGACO\",\n\t\t\t\t\t\t\t\t\"PALANAS\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"SALAMANCA\",\n\t\t\t\t\t\t\t\t\"SAN ROQUE\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\t\t\n\t\t\t\t\t\t\t\t\"name\": \"LAPU-LAPU CITY\",\n\t\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"AGUS\",\n\t\t\t\t\t\t\t\t\"BABAG\",\n\t\t\t\t\t\t\t\t\"BANKAL\",\n\t\t\t\t\t\t\t\t\"BARING\",\n\t\t\t\t\t\t\t\t\"BASAK\",\n\t\t\t\t\t\t\t\t\"BUAYA\",\n\t\t\t\t\t\t\t\t\"CALAWISAN\",\n\t\t\t\t\t\t\t\t\"CANJULAO\",\n\t\t\t\t\t\t\t\t\"CAUBIAN\",\n\t\t\t\t\t\t\t\t\"CAW\u2011OY\",\n\t\t\t\t\t\t\t\t\"CAWHAGAN\",\n\t\t\t\t\t\t\t\t\"GUN\u2011OB\",\n\t\t\t\t\t\t\t\t\"IBO\",\n\t\t\t\t\t\t\t\t\"LOOC\",\n\t\t\t\t\t\t\t\t\"MACTAN\",\n\t\t\t\t\t\t\t\t\"MARIBAGO\",\n\t\t\t\t\t\t\t\t\"MARIGONDON\",\n\t\t\t\t\t\t\t\t\"PAJAC\",\n\t\t\t\t\t\t\t\t\"PAJO\",\n\t\t\t\t\t\t\t\t\"PANGAN\u2011AN\",\n\t\t\t\t\t\t\t\t\"POBLACION[A]\",\n\t\t\t\t\t\t\t\t\"PUNTA ENGA\u00D1O\",\n\t\t\t\t\t\t\t\t\"PUSOK\",\n\t\t\t\t\t\t\t\t\"SABANG\",\n\t\t\t\t\t\t\t\t\"SAN VICENTE\",\n\t\t\t\t\t\t\t\t\"SANTA ROSA\",\n\t\t\t\t\t\t\t\t\"SUBABASBAS\",\n\t\t\t\t\t\t\t\t\"TALIMA\",\n\t\t\t\t\t\t\t\t\"TINGO\",\n\t\t\t\t\t\t\t\t\"TUNGASAN\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\t\t\n\t\t\t\t\t\t\t\t\"name\": \"LILOAN\",\n\t\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"CABADIANGAN\",\n\t\t\t\t\t\t\t\t\"CALERO\",\n\t\t\t\t\t\t\t\t\"CATARMAN\",\n\t\t\t\t\t\t\t\t\"COTCOT\",\n\t\t\t\t\t\t\t\t\"JUBAY\",\n\t\t\t\t\t\t\t\t\"LATABAN\",\n\t\t\t\t\t\t\t\t\"MULAO\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"SAN ROQUE\",\n\t\t\t\t\t\t\t\t\"SAN VICENTE\",\n\t\t\t\t\t\t\t\t\"SANTA CRUZ\",\n\t\t\t\t\t\t\t\t\"TABLA\",\n\t\t\t\t\t\t\t\t\"TAYUD\",\n\t\t\t\t\t\t\t\t\"YATI\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\t\t\n\t\t\t\t\t\t\t\t\"name\": \"MADRIDEJOS\",\n\t\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BUNAKAN\",\n\t\t\t\t\t\t\t\t\"KANGWAYAN\",\n\t\t\t\t\t\t\t\t\"KAONGKOD\",\n\t\t\t\t\t\t\t\t\"KODIA\",\n\t\t\t\t\t\t\t\t\"MAALAT\",\n\t\t\t\t\t\t\t\t\"MALBAGO\",\n\t\t\t\t\t\t\t\t\"MANCILANG\",\n\t\t\t\t\t\t\t\t\"PILI\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"SAN AGUSTIN\",\n\t\t\t\t\t\t\t\t\"TABAGAK\",\n\t\t\t\t\t\t\t\t\"TALANGNAN\",\n\t\t\t\t\t\t\t\t\"TARONG\",\n\t\t\t\t\t\t\t\t\"TUGAS\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\t\t\n\t\t\t\t\t\t\t\t\"name\": \"MADELLIN\",\n\t\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ANTIPOLO\",\n\t\t\t\t\t\t\t\t\"CANHABAGAT\",\n\t\t\t\t\t\t\t\t\"CAPUTATAN NORTE\",\n\t\t\t\t\t\t\t\t\"CAPUTATAN SUR\",\n\t\t\t\t\t\t\t\t\"CURVA\",\n\t\t\t\t\t\t\t\t\"DAANGLUNGSOD\",\n\t\t\t\t\t\t\t\t\"DALINGDING SUR\",\n\t\t\t\t\t\t\t\t\"DAYHAGON\",\n\t\t\t\t\t\t\t\t\"DON VIRGILIO GONZALES\",\n\t\t\t\t\t\t\t\t\"GIBITNGIL\",\n\t\t\t\t\t\t\t\t\"KAWIT\",\n\t\t\t\t\t\t\t\t\"LAMINTAK NORTE\",\n\t\t\t\t\t\t\t\t\"LAMINTAK SUR\",\n\t\t\t\t\t\t\t\t\"LUY-A\",\n\t\t\t\t\t\t\t\t\"MAHARUHAY\",\n\t\t\t\t\t\t\t\t\"MAHAWAK\",\n\t\t\t\t\t\t\t\t\"PANUGNAWAN\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"TINDOG\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\t\t\n\t\t\t\t\t\t\t\t\"name\": \"MALABUYOC\",\n\t\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ARME\u00D1A (CANSILONGAN)\",\n\t\t\t\t\t\t\t\t\"BARANGAY I (POBLACION)\",\n\t\t\t\t\t\t\t\t\"BARANGAY II (POBLACION)\",\n\t\t\t\t\t\t\t\t\"CERDE\u00D1A (ANSAN)\",\n\t\t\t\t\t\t\t\t\"LABRADOR (BULOD)\",\n\t\t\t\t\t\t\t\t\"LOMBO\",\n\t\t\t\t\t\t\t\t\"LOOC\",\n\t\t\t\t\t\t\t\t\"MAHANLUD\",\n\t\t\t\t\t\t\t\t\"MINDANAO (PAJO)\",\n\t\t\t\t\t\t\t\t\"MONTA\u00D1EZA (INAMLANG)\",\n\t\t\t\t\t\t\t\t\"SALMERON (BULOK)\",\n\t\t\t\t\t\t\t\t\"SANTO NI\u00D1O (SALERING)\",\n\t\t\t\t\t\t\t\t\"SORSOGON (BALIKMAYA)\",\n\t\t\t\t\t\t\t\t\"TOLOSA (CALATAGAN)\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\t\t\n\t\t\t\t\t\t\t\t\"name\": \"MANDAUE CITY\",\n\t\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ALANG-ALANG\",\n\t\t\t\t\t\t\t\t\"BAKILID\",\n\t\t\t\t\t\t\t\t\"BANILAD\",\n\t\t\t\t\t\t\t\t\"BASAK\",\n\t\t\t\t\t\t\t\t\"CABANCALAN\",\n\t\t\t\t\t\t\t\t\"CAMBARO\",\n\t\t\t\t\t\t\t\t\"CANDUMAN\",\n\t\t\t\t\t\t\t\t\"CASILI\",\n\t\t\t\t\t\t\t\t\"CASUNTINGAN\",\n\t\t\t\t\t\t\t\t\"CENTRO (POBLACION)\",\n\t\t\t\t\t\t\t\t\"CUBACUB\",\n\t\t\t\t\t\t\t\t\"GUIZO\",\n\t\t\t\t\t\t\t\t\"IBABAO-ESTANCIA\",\n\t\t\t\t\t\t\t\t\"JAGOBIAO\",\n\t\t\t\t\t\t\t\t\"LABOGON\",\n\t\t\t\t\t\t\t\t\"LOOC\",\n\t\t\t\t\t\t\t\t\"MAGUIKAY\",\n\t\t\t\t\t\t\t\t\"MANTUYONG\",\n\t\t\t\t\t\t\t\t\"OPAO\",\n\t\t\t\t\t\t\t\t\"PAKNAAN\",\n\t\t\t\t\t\t\t\t\"PAGSABUNGAN\",\n\t\t\t\t\t\t\t\t\"SUBANGDAKU\",\n\t\t\t\t\t\t\t\t\"TABOK\",\n\t\t\t\t\t\t\t\t\"TAWASON\",\n\t\t\t\t\t\t\t\t\"TINGUB\",\n\t\t\t\t\t\t\t\t\"TIPOLO\",\n\t\t\t\t\t\t\t\t\"UMAPAD\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\t\t\n\t\t\t\t\t\t\t\t\"name\": \"MINGLANILLA\",\n\t\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"CADULAWAN\",\n\t\t\t\t\t\t\t\t\"CALAJO-AN\",\n\t\t\t\t\t\t\t\t\"CAMP 7\",\n\t\t\t\t\t\t\t\t\"CAMP 8\",\n\t\t\t\t\t\t\t\t\"CUANOS\",\n\t\t\t\t\t\t\t\t\"GUINDARUHAN\",\n\t\t\t\t\t\t\t\t\"LINAO (LINAO-LIPATA)\",\n\t\t\t\t\t\t\t\t\"MANDUANG\",\n\t\t\t\t\t\t\t\t\"PAKIGNE\",\n\t\t\t\t\t\t\t\t\"POBLACION WARD 1\",\n\t\t\t\t\t\t\t\t\"POBLACION WARD 2\",\n\t\t\t\t\t\t\t\t\"POBLACION WARD 3\",\n\t\t\t\t\t\t\t\t\"POBLACION WARD 4\",\n\t\t\t\t\t\t\t\t\"TUBOD\",\n\t\t\t\t\t\t\t\t\"TULAY\",\n\t\t\t\t\t\t\t\t\"TUNGHAAN\",\n\t\t\t\t\t\t\t\t\"TUNGKIL\",\n\t\t\t\t\t\t\t\t\"TUNGKOP\",\n\t\t\t\t\t\t\t\t\"VITO\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\t\t\n\t\t\t\t\t\t\t\t\"name\": \"MOALBOAL\",\n\t\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"AGBALANGA\",\n\t\t\t\t\t\t\t\t\"BALA\",\n\t\t\t\t\t\t\t\t\"BALABAGON\",\n\t\t\t\t\t\t\t\t\"BASDIOT\",\n\t\t\t\t\t\t\t\t\"BATADBATAD\",\n\t\t\t\t\t\t\t\t\"BUGHO\",\n\t\t\t\t\t\t\t\t\"BUGUIL\",\n\t\t\t\t\t\t\t\t\"BUSAY\",\n\t\t\t\t\t\t\t\t\"LANAO\",\n\t\t\t\t\t\t\t\t\"POBLACION EAST\",\n\t\t\t\t\t\t\t\t\"POBLACION WEST\",\n\t\t\t\t\t\t\t\t\"SAAVEDRA\",\n\t\t\t\t\t\t\t\t\"TOMONOY\",\n\t\t\t\t\t\t\t\t\"TUBLE\",\n\t\t\t\t\t\t\t\t\"TUNGA\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\t\t\n\t\t\t\t\t\t\t\t\"name\": \"NAGA CITY\",\n\t\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ALPACO\",\n\t\t\t\t\t\t\t\t\"BAIRAN\",\n\t\t\t\t\t\t\t\t\"BALIRONG\",\n\t\t\t\t\t\t\t\t\"CABUNGAHAN\",\n\t\t\t\t\t\t\t\t\"CANTAO\u2011AN\",\n\t\t\t\t\t\t\t\t\"CENTRAL POBLACION\",\n\t\t\t\t\t\t\t\t\"COGON\",\n\t\t\t\t\t\t\t\t\"COLON\",\n\t\t\t\t\t\t\t\t\"EAST POBLACION\",\n\t\t\t\t\t\t\t\t\"INAYAGAN\",\n\t\t\t\t\t\t\t\t\"INOBURAN\",\n\t\t\t\t\t\t\t\t\"JAGUIMIT\",\n\t\t\t\t\t\t\t\t\"LANAS\",\n\t\t\t\t\t\t\t\t\"LANGTAD\",\n\t\t\t\t\t\t\t\t\"LUTAC\",\n\t\t\t\t\t\t\t\t\"MAINIT\",\n\t\t\t\t\t\t\t\t\"MAYANA\",\n\t\t\t\t\t\t\t\t\"NAALAD\",\n\t\t\t\t\t\t\t\t\"NORTH POBLACION\",\n\t\t\t\t\t\t\t\t\"PANGDAN\",\n\t\t\t\t\t\t\t\t\"PATAG\",\n\t\t\t\t\t\t\t\t\"SOUTH POBLACION\",\n\t\t\t\t\t\t\t\t\"TAGJAGUIMIT\",\n\t\t\t\t\t\t\t\t\"TANGKE\",\n\t\t\t\t\t\t\t\t\"TINAAN\",\n\t\t\t\t\t\t\t\t\"TUYAN\",\n\t\t\t\t\t\t\t\t\"ULING\",\n\t\t\t\t\t\t\t\t\"WEST POBLACION\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\t\t\n\t\t\t\t\t\t\t\t\"name\": \"OSLOB\",\n\t\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ALO\",\n\t\t\t\t\t\t\t\t\"BANGCOGON\",\n\t\t\t\t\t\t\t\t\"BONBON\",\n\t\t\t\t\t\t\t\t\"CALUMPANG\",\n\t\t\t\t\t\t\t\t\"CAN-UKBAN\",\n\t\t\t\t\t\t\t\t\"CANANGCA-AN\",\n\t\t\t\t\t\t\t\t\"CANSALO-AY\",\n\t\t\t\t\t\t\t\t\"CA\u00D1ANG\",\n\t\t\t\t\t\t\t\t\"DAANLUNGSOD\",\n\t\t\t\t\t\t\t\t\"GAWI\",\n\t\t\t\t\t\t\t\t\"HAGDAN\",\n\t\t\t\t\t\t\t\t\"LAGUNDE\",\n\t\t\t\t\t\t\t\t\"LOOC\",\n\t\t\t\t\t\t\t\t\"LUKA\",\n\t\t\t\t\t\t\t\t\"MAINIT\",\n\t\t\t\t\t\t\t\t\"MANLUM\",\n\t\t\t\t\t\t\t\t\"NUEVA CACERES\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"PUNGTOD\",\n\t\t\t\t\t\t\t\t\"TAN-AWAN\",\n\t\t\t\t\t\t\t\t\"TUMALOG\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\t\t\n\t\t\t\t\t\t\t\t\"name\": \"PILAR\",\n\t\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BIASONG\",\n\t\t\t\t\t\t\t\t\"CAWIT\",\n\t\t\t\t\t\t\t\t\"DAPDAP\",\n\t\t\t\t\t\t\t\t\"ESPERANZA\",\n\t\t\t\t\t\t\t\t\"IMELDA\",\n\t\t\t\t\t\t\t\t\"LANAO\",\n\t\t\t\t\t\t\t\t\"LOWER POBLACION\",\n\t\t\t\t\t\t\t\t\"MOABOG\",\n\t\t\t\t\t\t\t\t\"MONTSERRAT\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO\",\n\t\t\t\t\t\t\t\t\"SAN JUAN\",\n\t\t\t\t\t\t\t\t\"UPPER POBLACION\",\n\t\t\t\t\t\t\t\t\"VILLAHERMOSA\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\t\t\n\t\t\t\t\t\t\t\t\"name\": \"PINAMUNGAJAN\",\n\t\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ANISLAG\",\n\t\t\t\t\t\t\t\t\"ANOPOG\",\n\t\t\t\t\t\t\t\t\"BINABAG\",\n\t\t\t\t\t\t\t\t\"BUHINGTUBIG\",\n\t\t\t\t\t\t\t\t\"BUSAY\",\n\t\t\t\t\t\t\t\t\"BUTONG\",\n\t\t\t\t\t\t\t\t\"CABIANGON\",\n\t\t\t\t\t\t\t\t\"CAMUGAO\",\n\t\t\t\t\t\t\t\t\"DUANGAN\",\n\t\t\t\t\t\t\t\t\"GUIMBAWIAN\",\n\t\t\t\t\t\t\t\t\"LAMAC\",\n\t\t\t\t\t\t\t\t\"LUT-OD\",\n\t\t\t\t\t\t\t\t\"MANGOTO\",\n\t\t\t\t\t\t\t\t\"OPAO\",\n\t\t\t\t\t\t\t\t\"PANDACAN\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"PUNOD\",\n\t\t\t\t\t\t\t\t\"RIZAL\",\n\t\t\t\t\t\t\t\t\"SACSAC\",\n\t\t\t\t\t\t\t\t\"SAMBAGON\",\n\t\t\t\t\t\t\t\t\"SIBAGO\",\n\t\t\t\t\t\t\t\t\"TAJAO\",\n\t\t\t\t\t\t\t\t\"TANGUB\",\n\t\t\t\t\t\t\t\t\"TANIBAG\",\n\t\t\t\t\t\t\t\t\"TUPAS\",\n\t\t\t\t\t\t\t\t\"TUTAY\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\t\t\n\t\t\t\t\t\t\t\t\"name\": \"PORO\",\n\t\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ADELA\",\n\t\t\t\t\t\t\t\t\"ALTAVISTA\",\n\t\t\t\t\t\t\t\t\"CAGCAGAN\",\n\t\t\t\t\t\t\t\t\"CANSABUSAB\",\n\t\t\t\t\t\t\t\t\"DAAN PAZ\",\n\t\t\t\t\t\t\t\t\"BUTONG\",\n\t\t\t\t\t\t\t\t\"EASTERN POBLACION\",\n\t\t\t\t\t\t\t\t\"ESPERANZA\",\n\t\t\t\t\t\t\t\t\"LIBERTAD\",\n\t\t\t\t\t\t\t\t\"MABINI\",\n\t\t\t\t\t\t\t\t\"MERCEDES\",\n\t\t\t\t\t\t\t\t\"PAGSA\",\n\t\t\t\t\t\t\t\t\"PAZ\",\n\t\t\t\t\t\t\t\t\"RIZAL\",\n\t\t\t\t\t\t\t\t\"SAN JOSE\",\n\t\t\t\t\t\t\t\t\"SANTA RITA\",\n\t\t\t\t\t\t\t\t\"TEGUIS\",\n\t\t\t\t\t\t\t\t\"WESTERN POBLACION\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\t\t\n\t\t\t\t\t\t\t\t\"name\": \"RONDA\",\n\t\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BUTONG\",\n\t\t\t\t\t\t\t\t\"CAN-ABUHON\",\n\t\t\t\t\t\t\t\t\"CANDULING\",\n\t\t\t\t\t\t\t\t\"CANSALONOY\",\n\t\t\t\t\t\t\t\t\"CANSAYAHON\",\n\t\t\t\t\t\t\t\t\"ILAYA\",\n\t\t\t\t\t\t\t\t\"LANGIN\",\n\t\t\t\t\t\t\t\t\"LIB-O\",\n\t\t\t\t\t\t\t\t\"MALALAY\",\n\t\t\t\t\t\t\t\t\"PALANAS\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"SANTA CRUZ\",\n\t\t\t\t\t\t\t\t\"TUPAS\",\n\t\t\t\t\t\t\t\t\"VIVE\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\t\t\n\t\t\t\t\t\t\t\t\"name\": \"SAMBOAN\",\n\t\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BASAK\",\n\t\t\t\t\t\t\t\t\"BONBON\",\n\t\t\t\t\t\t\t\t\"BULANGSURAN\",\n\t\t\t\t\t\t\t\t\"CALATAGAN\",\n\t\t\t\t\t\t\t\t\"CAMBIGONG\",\n\t\t\t\t\t\t\t\t\"CAMBUROY\",\n\t\t\t\t\t\t\t\t\"CANORONG\",\n\t\t\t\t\t\t\t\t\"COLASE\",\n\t\t\t\t\t\t\t\t\"DALAHIKAN\",\n\t\t\t\t\t\t\t\t\"JUMANGPAS\",\n\t\t\t\t\t\t\t\t\"MOTEVERDE\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"SAN SEBASTIAN (BATO)\",\n\t\t\t\t\t\t\t\t\"SUBA\",\n\t\t\t\t\t\t\t\t\"TANGBO\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\t\t\n\t\t\t\t\t\t\t\t\"name\": \"SAN FERNANDO\",\n\t\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BALUD\",\n\t\t\t\t\t\t\t\t\"BALUNGAG\",\n\t\t\t\t\t\t\t\t\"BASAK\",\n\t\t\t\t\t\t\t\t\"BUGHO\",\n\t\t\t\t\t\t\t\t\"CABATBATAN\",\n\t\t\t\t\t\t\t\t\"GREEN HILLS\",\n\t\t\t\t\t\t\t\t\"ILAYA\",\n\t\t\t\t\t\t\t\t\"LANTAWAN\",\n\t\t\t\t\t\t\t\t\"LIBURON\",\n\t\t\t\t\t\t\t\t\"MAGSICO\",\n\t\t\t\t\t\t\t\t\"PANADTARAN\",\n\t\t\t\t\t\t\t\t\"PITALO\",\n\t\t\t\t\t\t\t\t\"POBLACION NORTH\",\n\t\t\t\t\t\t\t\t\"POBLACION SOUTH\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO\",\n\t\t\t\t\t\t\t\t\"SANGAT\",\n\t\t\t\t\t\t\t\t\"TABIONAN\",\n\t\t\t\t\t\t\t\t\"TANANAS\",\n\t\t\t\t\t\t\t\t\"TINUBDAN\",\n\t\t\t\t\t\t\t\t\"TONGGO\",\n\t\t\t\t\t\t\t\t\"TUBOD\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\t\t\n\t\t\t\t\t\t\t\t\"name\": \"SAN FRANCISCO\",\n\t\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"CABUNGA-AN\",\n\t\t\t\t\t\t\t\t\"CAMPO\",\n\t\t\t\t\t\t\t\t\"CONSUELO\",\n\t\t\t\t\t\t\t\t\"ESPERANZA\",\n\t\t\t\t\t\t\t\t\"HIMENSULAN\",\n\t\t\t\t\t\t\t\t\"MONTEALEGRE\",\n\t\t\t\t\t\t\t\t\"NOTHERN POBLACION\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO\",\n\t\t\t\t\t\t\t\t\"SANTA CRUZ\",\n\t\t\t\t\t\t\t\t\"SANTIAGO\",\n\t\t\t\t\t\t\t\t\"SONOG\",\n\t\t\t\t\t\t\t\t\"SOUTHERN POBLACION\",\n\t\t\t\t\t\t\t\t\"UNIDOS\",\n\t\t\t\t\t\t\t\t\"UNION\",\n\t\t\t\t\t\t\t\t\"WESTERN POBLACION\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\t\t\n\t\t\t\t\t\t\t\t\"name\": \"SAN REMIGIO\",\n\t\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ANAPOG\",\n\t\t\t\t\t\t\t\t\"ARGAWANON\",\n\t\t\t\t\t\t\t\t\"BAGTIC\",\n\t\t\t\t\t\t\t\t\"BANCASAN\",\n\t\t\t\t\t\t\t\t\"BATAD\",\n\t\t\t\t\t\t\t\t\"BUSOGON\",\n\t\t\t\t\t\t\t\t\"CALAMBUA\",\n\t\t\t\t\t\t\t\t\"CANAGAHAN\",\n\t\t\t\t\t\t\t\t\"DAPDAP\",\n\t\t\t\t\t\t\t\t\"GAWAYGAWAY\",\n\t\t\t\t\t\t\t\t\"HAGNAYA\",\n\t\t\t\t\t\t\t\t\"KAYAM\",\n\t\t\t\t\t\t\t\t\"KINAWAHAN\",\n\t\t\t\t\t\t\t\t\"LAMBUSAN\",\n\t\t\t\t\t\t\t\t\"LAWIS\",\n\t\t\t\t\t\t\t\t\"LIBAONG\",\n\t\t\t\t\t\t\t\t\"LOOC\",\n\t\t\t\t\t\t\t\t\"LUYANG\",\n\t\t\t\t\t\t\t\t\"MANO\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"PUNTA\",\n\t\t\t\t\t\t\t\t\"SAB-A\",\n\t\t\t\t\t\t\t\t\"SAN MIGUEL\",\n\t\t\t\t\t\t\t\t\"TACUP\",\n\t\t\t\t\t\t\t\t\"TAMBONGON\",\n\t\t\t\t\t\t\t\t\"TO-ONG\",\n\t\t\t\t\t\t\t\t\"VICTORIA\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\t\t\n\t\t\t\t\t\t\t\t\"name\": \"SANTA FE\",\n\t\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BALIDBIB\",\n\t\t\t\t\t\t\t\t\"HAGDAN\",\n\t\t\t\t\t\t\t\t\"HILANTAGAAN\",\n\t\t\t\t\t\t\t\t\"KINATARKAN\",\n\t\t\t\t\t\t\t\t\"LANGUB\",\n\t\t\t\t\t\t\t\t\"MARICABAN\",\n\t\t\t\t\t\t\t\t\"OKOY\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"POOC\",\n\t\t\t\t\t\t\t\t\"TALISAY\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\t\t\n\t\t\t\t\t\t\t\t\"name\": \"SANTANDER\",\n\t\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BUNLAN\",\n\t\t\t\t\t\t\t\t\"CABUTONGAN\",\n\t\t\t\t\t\t\t\t\"CANDAMIANG\",\n\t\t\t\t\t\t\t\t\"CANLUMACAD\",\n\t\t\t\t\t\t\t\t\"LILOAN\",\n\t\t\t\t\t\t\t\t\"LIP-TONG\",\n\t\t\t\t\t\t\t\t\"LOOC\",\n\t\t\t\t\t\t\t\t\"PASIL\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"TALISAY\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\t\t\n\t\t\t\t\t\t\t\t\"name\": \"SIBONGA\",\n\t\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ABUGON\",\n\t\t\t\t\t\t\t\t\"BAE\",\n\t\t\t\t\t\t\t\t\"BAGACAY\",\n\t\t\t\t\t\t\t\t\"BAHAY\",\n\t\t\t\t\t\t\t\t\"BANLOT\",\n\t\t\t\t\t\t\t\t\"BASAK\",\n\t\t\t\t\t\t\t\t\"BATO\",\n\t\t\t\t\t\t\t\t\"CAGAY\",\n\t\t\t\t\t\t\t\t\"CAN-AGA\",\n\t\t\t\t\t\t\t\t\"CANDAGUIT\",\n\t\t\t\t\t\t\t\t\"CANTOLAROY\",\n\t\t\t\t\t\t\t\t\"DUGOAN\",\n\t\t\t\t\t\t\t\t\"GUIMBANGCO-AN\",\n\t\t\t\t\t\t\t\t\"LAMACAN\",\n\t\t\t\t\t\t\t\t\"LIBO\",\n\t\t\t\t\t\t\t\t\"LINDOGON\",\n\t\t\t\t\t\t\t\t\"MAGCAGONG\",\n\t\t\t\t\t\t\t\t\"MANATAD\",\n\t\t\t\t\t\t\t\t\"MANGYAN\",\n\t\t\t\t\t\t\t\t\"PAPAN\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"SABANG\",\n\t\t\t\t\t\t\t\t\"SAYAO\",\n\t\t\t\t\t\t\t\t\"SIMALA\",\n\t\t\t\t\t\t\t\t\"TUBOD\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\t\t\n\t\t\t\t\t\t\t\t\"name\": \"SOGOD\",\n\t\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"AMPONGOL\",\n\t\t\t\t\t\t\t\t\"BAGAKAY\",\n\t\t\t\t\t\t\t\t\"BAGATAYAM\",\n\t\t\t\t\t\t\t\t\"BAWO\",\n\t\t\t\t\t\t\t\t\"CABALAWAN\",\n\t\t\t\t\t\t\t\t\"CABANGAHAN\",\n\t\t\t\t\t\t\t\t\"CALUMBOYAN\",\n\t\t\t\t\t\t\t\t\"DAKIT\",\n\t\t\t\t\t\t\t\t\"DAMOLOG\",\n\t\t\t\t\t\t\t\t\"IBABAO\",\n\t\t\t\t\t\t\t\t\"LIKI\",\n\t\t\t\t\t\t\t\t\"LUBO\",\n\t\t\t\t\t\t\t\t\"MOHON\",\n\t\t\t\t\t\t\t\t\"NAHUS-AN\",\n\t\t\t\t\t\t\t\t\"PANSOY\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"TABUNOK\",\n\t\t\t\t\t\t\t\t\"TAKAY\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\t\t\n\t\t\t\t\t\t\t\t\"name\": \"TABOGON\",\n\t\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ALANG-ALANG\",\n\t\t\t\t\t\t\t\t\"CADUAWAN\",\n\t\t\t\t\t\t\t\t\"CAMOBOAN\",\n\t\t\t\t\t\t\t\t\"CANAOCANAO\",\n\t\t\t\t\t\t\t\t\"COMBADO\",\n\t\t\t\t\t\t\t\t\"DAANTABOGON\",\n\t\t\t\t\t\t\t\t\"ILIHAN\",\n\t\t\t\t\t\t\t\t\"KAL-ANAN\",\n\t\t\t\t\t\t\t\t\"LABANGON\",\n\t\t\t\t\t\t\t\t\"LIBJO\",\n\t\t\t\t\t\t\t\t\"LOONG\",\n\t\t\t\t\t\t\t\t\"MABULI\",\n\t\t\t\t\t\t\t\t\"MANAGASE\",\n\t\t\t\t\t\t\t\t\"MANLAGTANG\",\n\t\t\t\t\t\t\t\t\"MASLOG\",\n\t\t\t\t\t\t\t\t\"MUABOG\",\n\t\t\t\t\t\t\t\t\"PIO\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"SALAG\",\n\t\t\t\t\t\t\t\t\"SAMBAG\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO\",\n\t\t\t\t\t\t\t\t\"SAN VICENTE\",\n\t\t\t\t\t\t\t\t\"SOMOSA\",\n\t\t\t\t\t\t\t\t\"TABA-AO\",\n\t\t\t\t\t\t\t\t\"TAPUL\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\t\t\n\t\t\t\t\t\t\t\t\"name\": \"TABUELAN\",\n\t\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BONGON\",\n\t\t\t\t\t\t\t\t\"DALID\",\n\t\t\t\t\t\t\t\t\"KANLIM-AO\",\n\t\t\t\t\t\t\t\t\"KANLUHAGON\",\n\t\t\t\t\t\t\t\t\"KANTUBAON\",\n\t\t\t\t\t\t\t\t\"MABUNAO\",\n\t\t\t\t\t\t\t\t\"MARAVILLA\",\n\t\t\t\t\t\t\t\t\"OLIVO\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"TABUNOK\",\n\t\t\t\t\t\t\t\t\"TIGBAWAN\",\n\t\t\t\t\t\t\t\t\"VILLAHERMOSA\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\t\t\n\t\t\t\t\t\t\t\t\"name\": \"TALISAY CITY\",\n\t\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BIASONG\",\n\t\t\t\t\t\t\t\t\"BULACAO\",\n\t\t\t\t\t\t\t\t\"CADULAWAN\",\n\t\t\t\t\t\t\t\t\"CAMP IV\",\n\t\t\t\t\t\t\t\t\"CANSOJONG\",\n\t\t\t\t\t\t\t\t\"DUMLOG\",\n\t\t\t\t\t\t\t\t\"JACLUPAN\",\n\t\t\t\t\t\t\t\t\"LAGTANG\",\n\t\t\t\t\t\t\t\t\"LAWAAN I\",\n\t\t\t\t\t\t\t\t\"LAWAAN II\",\n\t\t\t\t\t\t\t\t\"LAWAAN III\",\n\t\t\t\t\t\t\t\t\"LINAO\",\n\t\t\t\t\t\t\t\t\"MAGHAWAY\",\n\t\t\t\t\t\t\t\t\"MANIPIS\",\n\t\t\t\t\t\t\t\t\"MOHON\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"POOC\",\n\t\t\t\t\t\t\t\t\"SAN ISIDRO\",\n\t\t\t\t\t\t\t\t\"SAN ROQUE\",\n\t\t\t\t\t\t\t\t\"TABUNOK\",\n\t\t\t\t\t\t\t\t\"TANGKE\",\n\t\t\t\t\t\t\t\t\"TAPUL\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\t\t\n\t\t\t\t\t\t\t\t\"name\": \"TOLEDO CITY\",\n\t\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"AWIHAO\",\n\t\t\t\t\t\t\t\t\"BAGAKAY\",\n\t\t\t\t\t\t\t\t\"BATO\",\n\t\t\t\t\t\t\t\t\"BIGA\",\n\t\t\t\t\t\t\t\t\"BULONGAN\",\n\t\t\t\t\t\t\t\t\"BUNGA\",\n\t\t\t\t\t\t\t\t\"CABITOONAN\",\n\t\t\t\t\t\t\t\t\"CALONGCALONG\",\n\t\t\t\t\t\t\t\t\"CAMBANG\u2011UG\",\n\t\t\t\t\t\t\t\t\"CAMP 8\",\n\t\t\t\t\t\t\t\t\"CANLUMAMPAO\",\n\t\t\t\t\t\t\t\t\"CANTABACO\",\n\t\t\t\t\t\t\t\t\"CAPITAN CLAUDIO\",\n\t\t\t\t\t\t\t\t\"CARMEN\",\n\t\t\t\t\t\t\t\t\"DAANGLUNGSOD\",\n\t\t\t\t\t\t\t\t\"DON ANDRES SORIANO (LUTOPAN)\",\n\t\t\t\t\t\t\t\t\"DUMLOG\",\n\t\t\t\t\t\t\t\t\"GEN. CLIMACO (MALUBOG)\",\n\t\t\t\t\t\t\t\t\"IBO\",\n\t\t\t\t\t\t\t\t\"ILIHAN\",\n\t\t\t\t\t\t\t\t\"JUAN CLIMACO, SR. (MAGDUGO)\",\n\t\t\t\t\t\t\t\t\"LANDAHAN\",\n\t\t\t\t\t\t\t\t\"LOAY\",\n\t\t\t\t\t\t\t\t\"LURAY II\",\n\t\t\t\t\t\t\t\t\"MATAB\u2011ANG\",\n\t\t\t\t\t\t\t\t\"MEDIA ONCE\",\n\t\t\t\t\t\t\t\t\"PANGAMIHAN\",\n\t\t\t\t\t\t\t\t\"POBLACION\",\n\t\t\t\t\t\t\t\t\"POOG\",\n\t\t\t\t\t\t\t\t\"PUTINGBATO\",\n\t\t\t\t\t\t\t\t\"SAGAY\",\n\t\t\t\t\t\t\t\t\"SAM\u2011ANG\",\n\t\t\t\t\t\t\t\t\"SANGI\",\n\t\t\t\t\t\t\t\t\"SANTO NI\u00D1O (MAINGGIT)\",\n\t\t\t\t\t\t\t\t\"SUBAYON\",\n\t\t\t\t\t\t\t\t\"TALAVERA\",\n\t\t\t\t\t\t\t\t\"TUBOD\",\n\t\t\t\t\t\t\t\t\"TUNGKAY\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\t\t\n\t\t\t\t\t\t\t\t\"name\": \"TUBURAN\",\n\t\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"ALEGRIA\",\n\t\t\t\t\t\t\t\t\"AMATUGAN\",\n\t\t\t\t\t\t\t\t\"ANTIPOLO\",\n\t\t\t\t\t\t\t\t\"APALAN\",\n\t\t\t\t\t\t\t\t\"BAGASAWE\",\n\t\t\t\t\t\t\t\t\"BAKYAWAN\",\n\t\t\t\t\t\t\t\t\"BANGKITO\",\n\t\t\t\t\t\t\t\t\"BARANGAY I (POBLACION)\",\n\t\t\t\t\t\t\t\t\"BARANGAY II (POBLACION)\",\n\t\t\t\t\t\t\t\t\"BARANGAY III (POBLACION)\",\n\t\t\t\t\t\t\t\t\"BARANGAY IV (POBLACION)\",\n\t\t\t\t\t\t\t\t\"BARANGAY V (POBLACION)\",\n\t\t\t\t\t\t\t\t\"BARANGAY VI (POBLACION)\",\n\t\t\t\t\t\t\t\t\"BARANGAY VII (POBLACION)\",\n\t\t\t\t\t\t\t\t\"BARANGAY VIII (POBLACION)\",\n\t\t\t\t\t\t\t\t\"BULWANG\",\n\t\t\t\t\t\t\t\t\"CARIDAD\",\n\t\t\t\t\t\t\t\t\"CARMELO\",\n\t\t\t\t\t\t\t\t\"COGON\",\n\t\t\t\t\t\t\t\t\"COLONIA\",\n\t\t\t\t\t\t\t\t\"DAAN LUNGSOD\",\n\t\t\t\t\t\t\t\t\"FORTALIZA\",\n\t\t\t\t\t\t\t\t\"GA-ANG\",\n\t\t\t\t\t\t\t\t\"GIMAMA-A\",\n\t\t\t\t\t\t\t\t\"JAGBUAYA\",\n\t\t\t\t\t\t\t\t\"KABANGKALAN\",\n\t\t\t\t\t\t\t\t\"KABKABAN\",\n\t\t\t\t\t\t\t\t\"KAGBA-O\",\n\t\t\t\t\t\t\t\t\"KALANGAHAN\",\n\t\t\t\t\t\t\t\t\"KAMANSI\",\n\t\t\t\t\t\t\t\t\"KAMPOOT\",\n\t\t\t\t\t\t\t\t\"KAN-AN\",\n\t\t\t\t\t\t\t\t\"KANLUNSING\",\n\t\t\t\t\t\t\t\t\"KANSI\",\n\t\t\t\t\t\t\t\t\"KAORASAN\",\n\t\t\t\t\t\t\t\t\"LINO\",\n\t\t\t\t\t\t\t\t\"LUSONG\",\n\t\t\t\t\t\t\t\t\"MACUPA\",\n\t\t\t\t\t\t\t\t\"MAF-ALWA\",\n\t\t\t\t\t\t\t\t\"MAG-ANTOY\",\n\t\t\t\t\t\t\t\t\"MAG-ATUBANG\",\n\t\t\t\t\t\t\t\t\"MAGHAN-AY\",\n\t\t\t\t\t\t\t\t\"MANGGA\",\n\t\t\t\t\t\t\t\t\"MARMOL\",\n\t\t\t\t\t\t\t\t\"MOLOBOLO\",\n\t\t\t\t\t\t\t\t\"MONTEALEGRE\",\n\t\t\t\t\t\t\t\t\"PUTAT\",\n\t\t\t\t\t\t\t\t\"SAN JUAN\",\n\t\t\t\t\t\t\t\t\"SANDAYONG\",\n\t\t\t\t\t\t\t\t\"SANTO NI\u00D1O\",\n\t\t\t\t\t\t\t\t\"SIOTES\",\n\t\t\t\t\t\t\t\t\"SUMON\",\n\t\t\t\t\t\t\t\t\"TOMINJAO\",\n\t\t\t\t\t\t\t\t\"TOMUGPA\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\t\t\n\t\t\t\t\t\t\t\t\"name\": \"TUDELA\",\n\t\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"BUENAVISTA\",\n\t\t\t\t\t\t\t\t\"CALMANTE\",\n\t\t\t\t\t\t\t\t\"DAAN SACANTE\",\n\t\t\t\t\t\t\t\t\"GENERAL\",\n\t\t\t\t\t\t\t\t\"MCARTHUR\",\n\t\t\t\t\t\t\t\t\"NOTHERN POBLACION\",\n\t\t\t\t\t\t\t\t\"PUERTOBELLO\",\n\t\t\t\t\t\t\t\t\"SANTANDER\",\n\t\t\t\t\t\t\t\t\"SECANTE\",\n\t\t\t\t\t\t\t\t\"TABUNOK\",\n\t\t\t\t\t\t\t\t\"TIGBAWAN\",\n\t\t\t\t\t\t\t\t\"VILLAHERMOSA\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t]\n\t\t},\t\t\t\n\t\t{\n\t\t\"name\": \"N/A\",\n\t\t\t\"provinces\": [{\n\t\t\t\t\t\"name\": \"N/A\",\n\t\t\t\t\t\"cities\": [{\n\t\t\t\t\t\t\t\t\"name\": \"N/A\",\n\t\t\t\t\t\t\t\t\"districts\": [\n\t\t\t\t\t\t\t\t\"N/A\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t]\n\t\t}\n\t]\n}\n", "import data from './brgy.json';\nimport $ from \"jquery\";\n\nconst settings = { \n  activate_microinsurance: false,\n  activate_microloans: true\n}; \n\n\nexport default class AddressService {\n  constructor() {\n  }\n\n  static activateMicroinsurance() {\n    return settings.activate_microinsurance;\n  }\n\n  static activateMicroloans() {\n   return settings.activate_microloans;\n  }\n\n  \n  // ===================== OLD\n  // static getRegions() {\n  //   var regions = [];\n\n  //   regions = data.regions.map(function(o) {\n  //               return o.name;\n  //             });\n\n  //   return regions;\n  // }\n\n  static getRegions() {\n    if (this.activateMicroinsurance()) {\n      console.log(`Microinsurance is ${settings.activate_microinsurance}. Using local data (brgy.json) for KMBA Address`, );\n      var regions = data.regions.map(function(o) {\n        return o.name;\n      });\n      return Promise.resolve(regions);\n    } else if (this.activateMicroloans()) {\n      console.log(`Microloans is ${settings.activate_microloans} Using Falling back to API for KCOOP Address`);\n      return new Promise((resolve, reject) => {\n      $.ajax({\n        url:\"/api/v1/administration/admin_address/fetch\",\n        method:'GET',\n        // async: false,\n        success:function(response){\n            var regions = response.map(o =>  ({\n              id: o.id,\n              name: o.region_name\n            }));\n            resolve(regions);\n          },\n          error: function(err) {\n            console.error(\"Error fetching regions from API:\", err);\n            reject(err);\n          }\n      });\n    });\n  } else {\n    console.warn(\"Neither microinsurance nor microloans is active.\");\n      return Promise.reject(\"No active configuration for fetching regions.\");\n  }\n}\n\n  // static getProvincesByRegion(region) {\n  //   var provinces = [];\n\n  //   data.regions.forEach(function(o) {\n  //     if(o.name == region) {\n  //       provinces = o.provinces.map(function(o) { return o.name });\n  //     }\n  //   });\n\n  //   return provinces;\n  // }\n\n  static getProvince(regionId) {\n    if (this.activateMicroinsurance()) {\n      const region = data.regions.find(r => r.name === regionId);\n      const provinces = region ? region.provinces.map(p => p.name) : [];\n      return Promise.resolve(provinces);\n    } else if (this.activateMicroloans()){\n      return new Promise((resolve, reject) => {\n        $.ajax({\n          url: \"/api/v1/administration/admin_province/fetch\",\n          method: 'GET',\n          success: function(response) {\n            var provinces = response\n              .filter(o => o.region_id === regionId)\n              .map(o => ({\n                id: o.id,\n                name: o.province_name\n            }));\n            resolve(provinces);\n          },\n          error: function(err) {\n            reject(err);\n          }\n        });\n      });\n    }\n  }\n\n    \n\n  // static getCitiesByRegionAndProvince(region, province) {\n  //   var cities  = [];\n\n  //   data.regions.forEach(function(r) {\n  //     if(r.name == region) {\n  //       r.provinces.forEach(function(p) {\n  //         if(p.name == province) {\n  //           cities = p.cities.map(function(c) { return c.name });\n  //         }\n  //       });\n  //     }\n  //   });\n\n  //   return cities;\n  // }\n\n  static getMunicipality(provinceId) {\n    if (this.activateMicroinsurance()) {\n\n      let cities = [];\n      data.regions.forEach(region => {\n        region.provinces.forEach(province => {\n          if (province.name === provinceId) {\n            if (Array.isArray(province.cities)) {\n              cities = province.cities.map(m => m.name);\n            } else {\n              console.warn(`No municipalities found for province: ${provinceId}`);\n            }\n          }\n        });\n      });\n      return Promise.resolve(cities);\n    } else if (this.activateMicroloans()) {\n      return new Promise((resolve, reject) => {\n        $.ajax({\n          url: \"/api/v1/administration/admin_municipality/fetch\",\n          method: 'GET',\n          success: function(response) {\n            var municipalities = response\n              .filter(o => o.province_id === provinceId)\n              .map(o => ({\n                id: o.id,\n                name: o.municipality_name\n            }))\n            resolve(municipalities);\n          },\n          error: function(err) {\n            reject(err);\n          }\n        });\n      });\n    }\n  }\n\n  // static getDistrictsByRegionAndProvinceAndCity(region, province, city) {\n  //   var districts = [];\n\n  //   data.regions.forEach(function(r) {\n  //     if(r.name == region) {\n  //       r.provinces.forEach(function(p) {\n  //         if(p.name == province) {\n  //           p.cities.forEach(function(c) {\n  //             if(c.name == city) {\n  //               districts = c.districts.map(function(d) { return d });\n  //             }\n  //           });\n  //         }\n  //       });\n  //     }\n  //   })\n\n  //   return districts;\n  // }\n\n  static getDistricts(municipalityId) {\n    if (this.activateMicroinsurance()) {\n      let districts = [];\n    data.regions.forEach(region => {\n      region.provinces.forEach(province => {\n        province.cities.forEach(city => {\n          if (city.name === municipalityId) {\n            if (Array.isArray(city.districts)) {\n              districts = city.districts.map(district => ({\n                name: district\n              }));\n            } else {\n              console.warn(`No districts found for city: ${city.name}`);\n            }\n          }\n        });\n      });\n    });\n    return Promise.resolve(districts);\n    } else if (this.activateMicroloans()){\n      return new Promise((resolve, reject) => {\n        $.ajax({\n          url: \"/api/v1/administration/admin_barangay/fetch\",\n          method: 'GET',\n          success: function(response) {\n            var barangay = response\n              .filter(o => o.municipality_id === municipalityId)\n              .map(o => ({\n                id: o.id,\n                name: o.barangay_name\n            }))\n            resolve(barangay);\n          },\n          error: function(err) {\n            reject(err);\n          }\n        });\n      });\n    }\n  }\n\n}\n", "import React, { useState, useEffect } from \"react\";\nimport Button from 'react-bootstrap/Button';\nimport Modal from 'react-bootstrap/Modal';\nimport axios from 'axios';\nimport Select from 'react-select';\nimport ErrorList from '../ErrorList';\nimport { data } from \"jquery\";\nimport DataTable from \"datatables.net-dt\";\n\nexport default function MembersProfileLoans(props) {\n  console.log(props.accruedInterest);\n  const [memberId]                                          = useState(props.memberId);\n  const [isLoading, setIsLoading]                           = useState(false);\n  const [isModalRestructureOpen, setIsModalRestructureOpen] = useState(false);\n  const [errors, setErrors]                                 = useState([]);\n  const [loanProductId, setLoanProductId]                   = useState(\"\");\n  const [rActiveLoans, setRActiveLoans]                     = useState([]);\n  const [activeLoans]                                       = useState(props.activeLoans || []);\n  const [loanProduct]                                       = useState(props.loanProduct);\n  const [coMaker, setCoMaker]                               = useState(\"\");\n  const [coMakerMemberId, setCoMakerMemberId]               = useState(\"\");\n  const [pnNumber, setPnNumber]                             = useState(\"\");\n  const [clipNumber, setClipNumber]                         = useState(\"\");\n  const [coMakers]                                          = useState(props.coMakers || []);\n  const [datePrepared, setDatePrepared]                     = useState(\"\");\n  const [term, setTerm]                                     = useState(\"weekly\");\n  const [numInstallments, setNumInstallments]               = useState(25);\n  const [clipFirstName, setClipFirstName]                   = useState(\"\");\n  const [clipMiddleName, setClipMiddleName]                 = useState(\"\");\n  const [clipLastName, setClipLastName]                     = useState(\"\");\n  const [clipDateOfBirth, setClipDateOfBirth]               = useState(\"\");\n  const [clipRelationship, setClipRelationship]             = useState(\"\");\n  const [token]                                             = useState(props.token);\n  const [accruedInterest]                                   = useState(props.accruedInterest || []);\n\n\n\n  const handleConfirmClicked = () => {\n    setIsLoading(true);\n    setErrors([]);\n\n    const payload = {\n      co_maker:                   coMaker,\n      co_maker_id:                coMakerMemberId,\n      loan_product_id:            loanProductId,\n      member_id:                  memberId,\n      active_loan_ids:            rActiveLoans.map((o) => { return o.value }),\n      pn_number:                  pnNumber,\n      clip_number:                clipNumber,\n      date_prepared:              datePrepared,\n      num_installments:           numInstallments,\n      term:                       term,\n      beneficiary_first_name:     clipFirstName,\n      beneficiary_middle_name:    clipMiddleName,\n      beneficiary_last_name:      clipLastName,\n      beneficiary_relationship:   clipRelationship,\n      beneficiary_date_of_birth:  clipDateOfBirth,\n\n    }\n\n\n    const headers = {\n      'X-KOINS-HQ-TOKEN': token\n    }\n\n    const options = {\n      headers: headers\n    }\n\n    axios.post(\n      '/api/loans/restructure',\n      payload,\n      options\n    ).then((res) => {\n      console.log(res);\n  \n      window.location.href = `/loans/${res.data.id}`;\n    }).catch((error) => {\n      console.log(error.response.data);\n      setErrors(error.response.data.errors);\n      setIsLoading(false);\n    })\n  }\n\n  const termsMappings = {\n    \"weekly\":       { label: \"Weekly\", options: [15, 25, 35, 50, 75] },\n    \"monthly\":      { label: \"Monthly\", options: [3, 6, 9, 12] },\n    \"semiMonthly\": { label: \"Semi-monthly\", options: [6, 12, 18, 24] }\n  }\n\n  const handleTermChanged = (val) => {\n    if(val == \"weekly\") {\n      setNumInstallments(termsMappings.weekly.options[0]);\n    } else if(val == \"monthly\") {\n      setNumInstallments(termsMappings.monthly.options[0]);\n    } else if(val == \"semi-monthly\") {\n      setNumInstallments(termsMappings.semiMonthly.options[0]);\n    }\n\n    setTerm(val);\n  }\n\n  useEffect(() => {\n    if(props.loanProductsForRestructuring.length > 0) {\n      setLoanProductId(props.loanProductsForRestructuring[0].id);\n    }\n\n    if(coMakers.length > 0) {\n      setCoMakerMemberId(coMakers[0].id);\n    }\n\n    if(!datePrepared) {\n      d = formatDate(new Date());\n      setDatePrepared(d);\n    }\n  }, []);\n\n  const formatDate = (d) => {\n    let month = d.getMonth() + 1;\n\n    if(month < 10) {\n      month = `0${month}`;\n    }\n\n    let date  = d.getDate();\n\n    if(date < 10) {\n      date = `0${date}`;\n    }\n\n    let year  = d.getFullYear();\n\n    return `${year}-${month}-${date}`;\n  }\n\n  const activeLoanOptions = activeLoans.map((o) => {\n    return {\n      value: o.id,\n      label: o.loan_product\n    }\n  });\n\n  return (\n    <>\n      <Modal\n        show={isModalRestructureOpen}\n        size={\"lg\"}\n      >\n        <Modal.Header>\n          <Modal.Title>\n            Restructure Loans\n          </Modal.Title>\n        </Modal.Header>\n\n        <Modal.Body>\n          <div className=\"row\">\n            <div className=\"col\">\n              <div className=\"form-group\">\n                <label>\n                  Loan Product\n                </label>\n                <select \n                  value={loanProductId}\n                  onChange={(event) => { setLoanProductId(event.target.value) }}\n                  className=\"form-control\"\n                  disabled={isLoading}\n                >\n                  {props.loanProductsForRestructuring.map((o) => {\n                    return (\n                      <option key={`r-loan-product-${o.id}`} value={o.id}>\n                        {o.name}\n                      </option>\n                    )\n                  })}\n                </select>\n              </div>\n              <div className=\"form-group\">\n                <label>\n                  Active Loans\n                </label>\n                <Select\n                  options={activeLoanOptions}\n                  isMulti={true}\n                  value={rActiveLoans}\n                  disabled={isLoading}\n                  onChange={(val) => { setRActiveLoans(val) }}\n                />\n              </div>\n            </div>\n          </div>\n          <div className=\"mt-4\"/>\n          <h5>\n            Co-maker Information\n          </h5>\n          <div className=\"row\">\n            <div className=\"col-md-6\">\n              <div className=\"form-group\">\n                <label>\n                  Pangalan ng Co-maker (Kamag-anak)\n                </label>\n                <input\n                  value={coMaker}\n                  onChange={(event) => { setCoMaker(event.target.value) }}\n                  className=\"form-control\"\n                  disabled={isLoading}\n                />\n              </div>\n            </div>\n            <div className=\"col-md-6\">\n              <div className=\"form-group\">\n                <label>\n                  Pangalan ng Co-maker (Kasama sa sentro)\n                </label>\n                <select\n                  value={coMakerMemberId}\n                  onChange={(event) => { setCoMakerMemberId(event.target.value) }}\n                  disabled={isLoading}\n                  className=\"form-control\"\n                >\n                  {coMakers.map((o) => {\n                    return (\n                      <option value={o.id} key={`co-maker-${o.id}`}>\n                        {o.name}\n                      </option>\n                    )\n                  })}\n                </select>\n              </div>\n            </div>\n          </div>\n          <div className=\"row\">\n            <div className=\"col-md-6\">\n              <div className=\"form-group\">\n                <label>\n                  PN Number\n                </label>\n                <input\n                  className=\"form-control\"\n                  value={pnNumber}\n                  disabled={isLoading}\n                  onChange={(event) => { setPnNumber(event.target.value) }}\n                />\n              </div>\n            </div>\n            <div className=\"col-md-6\">\n              <div className=\"form-group\">\n                <label>\n                  CLIP Number\n                </label>\n                <input\n                  className=\"form-control\"\n                  value={clipNumber}\n                  disabled={isLoading}\n                  onChange={(event) => { setClipNumber(event.target.value) }}\n                />\n              </div>\n            </div>\n          </div>\n          <div className=\"row\">\n            <div className=\"col-md-4\">\n              <div className=\"form-group\">\n                <label>\n                  Date Prepared\n                </label>\n                <input\n                  className=\"form-control\"\n                  value={datePrepared}\n                  disabled={isLoading}\n                  type=\"date\"\n                  onChange={(event) => { setDatePrepared(event.target.value) } }\n                />\n              </div>\n            </div>\n            <div className=\"col-md-4\">\n              <div className=\"form-group\">\n                <label>\n                  Term\n                </label>\n                <select\n                  className=\"form-control\"\n                  value={numInstallments}\n                  disabled={isLoading}\n                  onChange={(event) => { setNumInstallments(event.target.value) } }\n                >\n                  {(() => {\n                    if(term == \"weekly\") {\n                      return (\n                        termsMappings.weekly.options.map((o, i) => {\n                          return (\n                            <option key={`term-${i}`} value={o}>\n                              {o}\n                            </option>\n                          )\n                        })\n                      )\n                    } else if(term == \"monthly\") {\n                      return (\n                        termsMappings.monthly.options.map((o, i) => {\n                          return (\n                            <option key={`term-${i}`} value={o}>\n                              {o}\n                            </option>\n                          )\n                        })\n                      )\n                    } else if(term == \"semi-monthly\") {\n                      return (\n                        termsMappings.semiMonthly.options.map((o, i) => {\n                          return (\n                            <option key={`term-${i}`} value={o}>\n                              {o}\n                            </option>\n                          )\n                        })\n                      )\n                    }\n                  })()}\n                </select>\n              </div>\n            </div>\n            <div className=\"col-md-4\">\n              <div className=\"form-group\">\n                <label>\n                  Mode of Payment\n                </label>\n                <select\n                  className=\"form-control\"\n                  value={term}\n                  disabled={isLoading}\n                  onChange={(event) => { handleTermChanged(event.target.value) } }\n                >\n                  <option value=\"weekly\">\n                    Weekly\n                  </option>\n                  <option value=\"monthly\">\n                    Monthly\n                  </option>\n                  <option value=\"semi-monthly\">\n                    Semi-monthly\n                  </option>\n                </select>\n              </div>\n            </div>\n          </div>\n          <h4 className=\"mt-4\">\n            CLIP Beneficiary\n          </h4>\n          <div className=\"card\">\n            <div className=\"card-body\">\n              <div className=\"row\">\n                <div className=\"col-md-4\">\n                  <div className=\"form-group\">\n                    <label>\n                      First Name\n                    </label>\n                    <input\n                      className=\"form-control\"\n                      value={clipFirstName}\n                      disabled={isLoading}\n                      onChange={(event) => { setClipFirstName(event.target.value) }}\n                    />\n                  </div>\n                </div>\n                <div className=\"col-md-4\">\n                  <div className=\"form-group\">\n                    <label>\n                      Middle Name\n                    </label>\n                    <input\n                      className=\"form-control\"\n                      value={clipMiddleName}\n                      disabled={isLoading}\n                      onChange={(event) => { setClipMiddleName(event.target.value) }}\n                    />\n                  </div>\n                </div>\n                <div className=\"col-md-4\">\n                  <div className=\"form-group\">\n                    <label>\n                      Last Name\n                    </label>\n                    <input\n                      className=\"form-control\"\n                      value={clipLastName}\n                      disabled={isLoading}\n                      onChange={(event) => { setClipLastName(event.target.value) }}\n                    />\n                  </div>\n                </div>\n              </div>\n              <div className=\"row\">\n                <div className=\"col-md-6\">\n                  <div className=\"form-group\">\n                    <label>\n                      Date of Birth\n                    </label>\n                    <input\n                      className=\"form-control\"\n                      value={clipDateOfBirth}\n                      disabled={isLoading}\n                      type=\"date\"\n                      onChange={(event) => { setClipDateOfBirth(event.target.value) }}\n                    />\n                  </div>\n                </div>\n                <div className=\"col-md-6\">\n                  <div className=\"form-group\">\n                    <label>\n                      Relationship\n                    </label>\n                    <input\n                      className=\"form-control\"\n                      value={clipRelationship}\n                      disabled={isLoading}\n                      onChange={(event) => { setClipRelationship(event.target.value) }}\n                    />\n                  </div>\n                </div>\n              </div>\n            </div>\n          </div>\n          {(() => {\n            if(errors.length > 0) {\n              return (\n                <ErrorList errors={errors} />\n              )\n            }\n          })()}\n        </Modal.Body>\n\n        <Modal.Footer>\n          <Button \n            variant=\"primary\"\n            onClick={() => { handleConfirmClicked() }}\n            disabled={isLoading}\n          >\n            Confirm\n          </Button>\n          <Button \n            variant=\"secondary\"\n            onClick={() => { setIsModalRestructureOpen(false) }}\n            disabled={isLoading}\n          >\n            Close\n          </Button>\n        </Modal.Footer>\n      </Modal>\n\n\n\n      <h6>Active Loans \n  <small className=\"text-muted\">\n    Entry Point Loan Cycle Count: {props.entryPointLoanCycleCount}\n  </small>\n</h6>\n{(() => {\n  if (props.activeLoans.length > 0) {\n    let totalLoanAmount = 0;\n    let totalLoanPayment = 0;\n    let totalDue = 0;\n    let totalPaid = 0;\n    let totalBalance = 0;\n\n    return (\n      <>\n        <table className=\"table table-bordered table-hover table-sm\">\n          <thead>\n            <tr>\n              <th>PN Number</th>\n              <th>Loan Product</th>\n              <th className=\"text-center\">Cycle</th>\n              <th className=\"text-center\">Loan Amount</th>\n              <th className=\"text-center\">Loan Payment</th>\n              <th className=\"text-end\">Total Due</th>\n              <th className=\"text-end\">Total Paid</th>\n              <th className=\"text-end\">Total Balance</th>\n            </tr>\n          </thead>\n          <tbody>\n            {props.activeLoans.map((o) => {\n              // Ensure that the fields exist and parse them correctly\n              const principal = parseFloat(o.principal) || 0;  // Loan amount\n              const amount_due = parseFloat(o.amount_due) || 0;  // Loan payment\n              const total_dues = parseFloat(o.total_dues) || 0;\n              const total_paid = parseFloat(o.total_paid) || 0;\n              const total_balance = parseFloat(o.total_balance) || 0;\n\n              totalLoanAmount += principal;\n              totalLoanPayment += amount_due;\n              totalDue += total_dues;\n              totalPaid += total_paid;\n              totalBalance += total_balance;\n\n              return (\n                <tr key={\"active-loan-\" + o.id}>\n                  <td>\n                    <a href={`/loans/${o.id}`}>\n                      <strong>{o.pn_number}</strong>\n                    </a>\n                    </td>\n        <td className=\"text-muted\">{o.loan_product}</td>\n        <td className=\"text-center\">{o.cycle}</td>\n        <td className=\"text-center\">{principal.toLocaleString(undefined, { minimumFractionDigits: 2 })}</td>\n        <td className=\"text-center\">{amount_due.toLocaleString(undefined, { minimumFractionDigits: 2 })}</td>\n        <td className=\"text-end\">\n          <strong>{total_dues.toLocaleString(undefined, { minimumFractionDigits: 2 })}</strong>\n        </td>\n        <td className=\"text-end\">\n          <strong>{total_paid.toLocaleString(undefined, { minimumFractionDigits: 2 })}</strong>\n        </td>\n        <td className=\"text-end\">\n          <strong>{total_balance.toLocaleString(undefined, { minimumFractionDigits: 2 })}</strong>\n        </td>\n                </tr>\n              );\n            })}\n          </tbody>\n          <tfoot>\n  <tr>\n    <td colSpan={3} className=\"text-end\"><strong>Total:</strong></td>\n    <td className=\"text-center\">\n      <strong>{totalLoanAmount.toLocaleString(undefined, { minimumFractionDigits: 2 })}</strong>\n    </td>\n    <td className=\"text-center\">\n      <strong>{totalLoanPayment.toLocaleString(undefined, { minimumFractionDigits: 2 })}</strong>\n    </td>\n    <td className=\"text-end\">\n      <strong>{totalDue.toLocaleString(undefined, { minimumFractionDigits: 2 })}</strong>\n    </td>\n    <td className=\"text-end\">\n      <strong>{totalPaid.toLocaleString(undefined, { minimumFractionDigits: 2 })}</strong>\n    </td>\n    <td className=\"text-end\">\n      <strong>{totalBalance.toLocaleString(undefined, { minimumFractionDigits: 2 })}</strong>\n    </td>\n  </tr>\n</tfoot>\n        </table>\n      </>\n    );\n  } else {\n    return (\n      <p>No loans found.</p>\n    );\n  }\n      })()}\n      <button\n        className=\"btn btn-primary\"\n        disabled={isLoading}\n        onClick={() => { setIsModalRestructureOpen(true) }}\n      >\n        Restructure\n      </button>\n      <hr/>\n      <h6>\n        Accrued Interest\n      </h6>\n       {(() => {\n        if(props.accruedInterest && props.accruedInterest.length > 0) {\n          return (\n            <table className=\"table table-bordered table-hover table-sm\">\n              <thead>\n                <tr>\n                  <th>\n                    PN Number\n                  </th>\n                  <th>\n                    Loan Product\n                  </th>\n                  <th className=\"text-center\">\n                    Accrued Interest\n                  </th>\n                  <th className=\"text-end\">\n                    Total Paid\n                  </th>\n                  <th className=\"text-end\">\n                    Total Balance\n                  </th>\n                  <th className=\"text-end\">\n                    Status\n                  </th>\n                </tr>\n              </thead>\n              <tbody>\n                {props.accruedInterest.map((o) => {\n                  return (\n                    <tr key={\"accrued-interest-data-\" + o.id}>\n                      <td>\n                        <a href={`/loans/${o.id}`}>\n                          <strong>\n                            {o.pn_number}\n                          </strong>\n                        </a>\n                      </td>\n                      <td className=\"text-muted\">\n                        {o.loan_product}\n                      </td>\n                      <td className=\"text-center\">\n                        {o.total_accrued_interest}\n                      </td>\n                      <td className=\"text-end\">\n                        <strong>\n                          {o.total_accrued_interest_balance}\n                        </strong>\n                      </td>\n                      <td className=\"text-end\">\n                        <strong>\n                          {o.total_balance_accrued_interest}\n                        </strong>\n                      </td>\n                      <td className=\"text-end\">\n                        <strong>\n                          {o.status}\n                        </strong>\n                      </td>\n                    </tr>\n                  )\n                })}\n              </tbody>\n            </table>\n          )\n        } else {\n          return (\n            <p>\n              No Accrued Interest found.\n            </p>\n          )\n        }\n      })()}\n          \n      <hr/>\n      <h6>\n        For Verification &nbsp;\n        <small className=\"text-muted\">\n          Online\n        </small>\n      </h6>\n      {(() => {\n        if(props.forVerificationLoans.length > 0) {\n          return (\n            <table className=\"table table-bordered table-hover table-sm\">\n              <thead>\n                <tr>\n                  <th>\n                    PN Number\n                  </th>\n                  <th>\n                    Loan Product\n                  </th>\n                  <th className=\"text-center\">\n                    Cycle\n                  </th>\n                  <th className=\"text-end\">\n                    Total Due\n                  </th>\n                  <th className=\"text-end\">\n                    Total Paid\n                  </th>\n                  <th className=\"text-end\">\n                    Total Balance\n                  </th>\n                </tr>\n              </thead>\n              <tbody>\n                {props.forVerificationLoans.map((o) => {\n                  return (\n                    <tr key={\"forVerification-loan-\" + o.id}>\n                      <td>\n                        <a href={`/loans/${o.id}`}>\n                          <strong>\n                            {o.pn_number}\n                          </strong>\n                        </a>\n                      </td>\n                      <td className=\"text-muted\">\n                        {o.loan_product}\n                      </td>\n                      <td className=\"text-center\">\n                        {o.cycle}\n                      </td>\n                      <td className=\"text-end\">\n                        <strong>\n                          {o.total_dues}\n                        </strong>\n                      </td>\n                      <td className=\"text-end\">\n                        <strong>\n                          {o.total_paid}\n                        </strong>\n                      </td>\n                      <td className=\"text-end\">\n                        <strong>\n                          {o.total_balance}\n                        </strong>\n                      </td>\n                    </tr>\n                  )\n                })}\n              </tbody>\n            </table>\n          )\n        } else {\n          return (\n            <p>\n              No loans found.\n            </p>\n          )\n        }\n      })()}\n\n      <hr/>\n      <h6>\n        Verified &nbsp;\n        <small className=\"text-muted\">\n          Online\n        </small>\n      </h6>\n      {(() => {\n        if(props.verifiedLoans.length > 0) {\n          return (\n            <table className=\"table table-bordered table-hover table-sm\">\n              <thead>\n                <tr>\n                  <th>\n                    PN Number\n                  </th>\n                  <th>\n                    Loan Product\n                  </th>\n                  <th className=\"text-center\">\n                    Cycle\n                  </th>\n                  <th className=\"text-end\">\n                    Total Due\n                  </th>\n                  <th className=\"text-end\">\n                    Total Paid\n                  </th>\n                  <th className=\"text-end\">\n                    Total Balance\n                  </th>\n                </tr>\n              </thead>\n              <tbody>\n                {props.verifiedLoans.map((o) => {\n                  return (\n                    <tr key={\"verified-loan-\" + o.id}>\n                      <td>\n                        <a href={`/loans/${o.id}`}>\n                          <strong>\n                            {o.pn_number}\n                          </strong>\n                        </a>\n                      </td>\n                      <td className=\"text-muted\">\n                        {o.loan_product}\n                      </td>\n                      <td className=\"text-center\">\n                        {o.cycle}\n                      </td>\n                      <td className=\"text-end\">\n                        <strong>\n                          {o.total_dues}\n                        </strong>\n                      </td>\n                      <td className=\"text-end\">\n                        <strong>\n                          {o.total_paid}\n                        </strong>\n                      </td>\n                      <td className=\"text-end\">\n                        <strong>\n                          {o.total_balance}\n                        </strong>\n                      </td>\n                    </tr>\n                  )\n                })}\n              </tbody>\n            </table>\n          )\n        } else {\n          return (\n            <p>\n              No loans found.\n            </p>\n          )\n        }\n      })()}\n\n      <hr/>\n      <h6>\n        In Process &nbsp;\n        <small className=\"text-muted\">\n          Online\n        </small>\n      </h6>\n      {(() => {\n        if(props.inProcessLoans.length > 0) {\n          return (\n            <table className=\"table table-bordered table-hover table-sm\">\n              <thead>\n                <tr>\n                  <th>\n                    PN Number\n                  </th>\n                  <th>\n                    Loan Product\n                  </th>\n                  <th className=\"text-center\">\n                    Cycle\n                  </th>\n                  <th className=\"text-end\">\n                    Total Due\n                  </th>\n                  <th className=\"text-end\">\n                    Total Paid\n                  </th>\n                  <th className=\"text-end\">\n                    Total Balance\n                  </th>\n                </tr>\n              </thead>\n              <tbody>\n                {props.inProcessLoans.map((o) => {\n                  return (\n                    <tr key={\"inProcess-loan-\" + o.id}>\n                      <td>\n                        <a href={`/loans/${o.id}`}>\n                          <strong>\n                            {o.pn_number}\n                          </strong>\n                        </a>\n                      </td>\n                      <td className=\"text-muted\">\n                        {o.loan_product}\n                      </td>\n                      <td className=\"text-center\">\n                        {o.cycle}\n                      </td>\n                      <td className=\"text-end\">\n                        <strong>\n                          {o.total_dues}\n                        </strong>\n                      </td>\n                      <td className=\"text-end\">\n                        <strong>\n                          {o.total_paid}\n                        </strong>\n                      </td>\n                      <td className=\"text-end\">\n                        <strong>\n                          {o.total_balance}\n                        </strong>\n                      </td>\n                    </tr>\n                  )\n                })}\n              </tbody>\n            </table>\n          )\n        } else {\n          return (\n            <p>\n              No loans found.\n            </p>\n          )\n        }\n      })()}\n\n      <hr/>\n      <h6>\n        Pending\n      </h6>\n      {(() => {\n        if(props.pendingLoans.length > 0) {\n          return (\n            <table className=\"table table-bordered table-hover table-sm\">\n              <thead>\n                <tr>\n                  <th>\n                    PN Number\n                  </th>\n                  <th>\n                    Loan Product\n                  </th>\n                  <th className=\"text-center\">\n                    Cycle\n                  </th>\n                  <th className=\"text-end\">\n                    Total Due\n                  </th>\n                  <th className=\"text-end\">\n                    Total Paid\n                  </th>\n                  <th className=\"text-end\">\n                    Total Balance\n                  </th>\n                </tr>\n              </thead>\n              <tbody>\n                {props.pendingLoans.map((o) => {\n                  return (\n                    <tr key={\"pending-loan-\" + o.id}>\n                      <td>\n                        <a href={`/loans/${o.id}`}>\n                          <strong>\n                            {o.pn_number}\n                          </strong>\n                        </a>\n                      </td>\n                      <td className=\"text-muted\">\n                        {o.loan_product}\n                      </td>\n                      <td className=\"text-center\">\n                        {o.cycle}\n                      </td>\n                      <td className=\"text-end\">\n                        <strong>\n                          {o.total_dues}\n                        </strong>\n                      </td>\n                      <td className=\"text-end\">\n                        <strong>\n                          {o.total_paid}\n                        </strong>\n                      </td>\n                      <td className=\"text-end\">\n                        <strong>\n                          {o.total_balance}\n                        </strong>\n                      </td>\n                    </tr>\n                  )\n                })}\n              </tbody>\n            </table>\n          )\n        } else {\n          return (\n            <p>\n              No loans found.\n            </p>\n          )\n        }\n      })()}\n\n      <hr/>\n      <h6>\n        Written-off Loans\n      </h6>\n      {(() => {\n        if(props.writeoffLoans.length > 0) {\n          return (\n            <table className=\"table table-bordered table-hover table-sm\">\n              <thead>\n                <tr>\n                  <th>\n                    PN Number\n                  </th>\n                  <th>\n                    Loan Product\n                  </th>\n                  <th className=\"text-center\">\n                    Cycle\n                  </th>\n                  <th className=\"text-end\">\n                    Total Paid\n                  </th>\n                </tr>\n              </thead>\n              <tbody>\n                {props.writeoffLoans.map((o) => {\n                  return (\n                    <tr key={\"writeoff-loan-\" + o.id}>\n                      <td>\n                        <a href={`/loans/${o.id}`}>\n                          <strong>\n                            {o.pn_number}\n                          </strong>\n                        </a>\n                      </td>\n                      <td className=\"text-muted\">\n                        {o.loan_product}\n                      </td>\n                      <td className=\"text-center\">\n                        {o.cycle}\n                      </td>\n                      <td className=\"text-end\">\n                        <strong>\n                          {o.total_paid}\n                        </strong>\n                      </td>\n                    </tr>\n                  )\n                })}\n              </tbody>\n            </table>\n          )\n        } else {\n          return (\n            <p>\n              No loans found.\n            </p>\n          )\n        }\n      })()}\n\n\n      <hr/>\n      <h6>\n        Loans for Write-off\n      </h6>\n      {(() => {\n        if(props.forwriteoffLoans.length > 0) {\n          return (\n            <table className=\"table table-bordered table-hover table-sm\">\n              <thead>\n                <tr>\n                  <th>\n                    PN Number\n                  </th>\n                  <th>\n                    Loan Product\n                  </th>\n                  <th className=\"text-center\">\n                    Cycle\n                  </th>\n                  <th className=\"text-end\">\n                    Total Paid\n                  </th>\n                </tr>\n              </thead>\n              <tbody>\n                {props.forwriteoffLoans.map((o) => {\n                  return (\n                    <tr key={\"for-writeoff-loan-\" + o.id}>\n                      <td>\n                        <a href={`/loans/${o.id}`}>\n                          <strong>\n                            {o.pn_number}\n                          </strong>\n                        </a>\n                      </td>\n                      <td className=\"text-muted\">\n                        {o.loan_product}\n                      </td>\n                      <td className=\"text-center\">\n                        {o.cycle}\n                      </td>\n                      <td className=\"text-end\">\n                        <strong>\n                          {o.total_paid}\n                        </strong>\n                      </td>\n                    </tr>\n                  )\n                })}\n              </tbody>\n            </table>\n          )\n        } else {\n          return (\n            <p>\n              No loans found.\n            </p>\n          )\n        }\n      })()}\n      <h6>\n        Paid Loans\n      </h6>\n      {(() => {\n        if(props.paidLoans.length > 0) {\n          return (\n            <table className=\"table table-bordered table-hover table-sm\">\n              <thead>\n                <tr>\n                  <th>\n                    PN Number\n                  </th>\n                  <th>\n                    Loan Product\n                  </th>\n                  <th className=\"text-center\">\n                    Cycle\n                  </th>\n                  <th className=\"text-end\">\n                    Total Paid\n                  </th>\n                </tr>\n              </thead>\n              <tbody>\n                {props.paidLoans.map((o) => {\n                  return (\n                    <tr key={\"paid-loan-\" + o.id}>\n                      <td>\n                        <a href={`/loans/${o.id}`}>\n                          <strong>\n                            {o.pn_number}\n                          </strong>\n                        </a>\n                      </td>\n                      <td className=\"text-muted\">\n                        {o.loan_product}\n                      </td>\n                      <td className=\"text-center\">\n                        {o.cycle}\n                      </td>\n                      <td className=\"text-end\">\n                        <strong>\n                          {o.total_paid}\n                        </strong>\n                      </td>\n                    </tr>\n                  )\n                })}\n              </tbody>\n            </table>\n          )\n        } else {\n          return (\n            <p>\n              No loans found.\n            </p>\n          )\n        }\n      })()}\n    </>\n  )\n}\n", "/*! DataTables styling integration\n * \u00A92018 SpryMedia Ltd - datatables.net/license\n */\n\nimport jQuery from 'jquery';\nimport DataTable from 'datatables.net';\n\n// Allow reassignment of the $ variable\nlet $ = jQuery;\n\n\n\n\nexport default DataTable;\n", "/*! DataTables 1.13.5\n * \u00A92008-2023 SpryMedia Ltd - datatables.net/license\n */\n\nimport jQuery from 'jquery';\n\n// DataTables code uses $ internally, but we want to be able to\n// reassign $ with the `use` method, so it is a regular var.\nvar $ = jQuery;\n\n\nvar DataTable = function ( selector, options )\n{\n\t// Check if called with a window or jQuery object for DOM less applications\n\t// This is for backwards compatibility\n\tif (DataTable.factory(selector, options)) {\n\t\treturn DataTable;\n\t}\n\n\t// When creating with `new`, create a new DataTable, returning the API instance\n\tif (this instanceof DataTable) {\n\t\treturn $(selector).DataTable(options);\n\t}\n\telse {\n\t\t// Argument switching\n\t\toptions = selector;\n\t}\n\n\t/**\n\t * Perform a jQuery selector action on the table's TR elements (from the tbody) and\n\t * return the resulting jQuery object.\n\t *  @param {string|node|jQuery} sSelector jQuery selector or node collection to act on\n\t *  @param {object} [oOpts] Optional parameters for modifying the rows to be included\n\t *  @param {string} [oOpts.filter=none] Select TR elements that meet the current filter\n\t *    criterion (\"applied\") or all TR elements (i.e. no filter).\n\t *  @param {string} [oOpts.order=current] Order of the TR elements in the processed array.\n\t *    Can be either 'current', whereby the current sorting of the table is used, or\n\t *    'original' whereby the original order the data was read into the table is used.\n\t *  @param {string} [oOpts.page=all] Limit the selection to the currently displayed page\n\t *    (\"current\") or not (\"all\"). If 'current' is given, then order is assumed to be\n\t *    'current' and filter is 'applied', regardless of what they might be given as.\n\t *  @returns {object} jQuery object, filtered by the given selector.\n\t *  @dtopt API\n\t *  @deprecated Since v1.10\n\t *\n\t *  @example\n\t *    $(document).ready(function() {\n\t *      var oTable = $('#example').dataTable();\n\t *\n\t *      // Highlight every second row\n\t *      oTable.$('tr:odd').css('backgroundColor', 'blue');\n\t *    } );\n\t *\n\t *  @example\n\t *    $(document).ready(function() {\n\t *      var oTable = $('#example').dataTable();\n\t *\n\t *      // Filter to rows with 'Webkit' in them, add a background colour and then\n\t *      // remove the filter, thus highlighting the 'Webkit' rows only.\n\t *      oTable.fnFilter('Webkit');\n\t *      oTable.$('tr', {\"search\": \"applied\"}).css('backgroundColor', 'blue');\n\t *      oTable.fnFilter('');\n\t *    } );\n\t */\n\tthis.$ = function ( sSelector, oOpts )\n\t{\n\t\treturn this.api(true).$( sSelector, oOpts );\n\t};\n\t\n\t\n\t/**\n\t * Almost identical to $ in operation, but in this case returns the data for the matched\n\t * rows - as such, the jQuery selector used should match TR row nodes or TD/TH cell nodes\n\t * rather than any descendants, so the data can be obtained for the row/cell. If matching\n\t * rows are found, the data returned is the original data array/object that was used to\n\t * create the row (or a generated array if from a DOM source).\n\t *\n\t * This method is often useful in-combination with $ where both functions are given the\n\t * same parameters and the array indexes will match identically.\n\t *  @param {string|node|jQuery} sSelector jQuery selector or node collection to act on\n\t *  @param {object} [oOpts] Optional parameters for modifying the rows to be included\n\t *  @param {string} [oOpts.filter=none] Select elements that meet the current filter\n\t *    criterion (\"applied\") or all elements (i.e. no filter).\n\t *  @param {string} [oOpts.order=current] Order of the data in the processed array.\n\t *    Can be either 'current', whereby the current sorting of the table is used, or\n\t *    'original' whereby the original order the data was read into the table is used.\n\t *  @param {string} [oOpts.page=all] Limit the selection to the currently displayed page\n\t *    (\"current\") or not (\"all\"). If 'current' is given, then order is assumed to be\n\t *    'current' and filter is 'applied', regardless of what they might be given as.\n\t *  @returns {array} Data for the matched elements. If any elements, as a result of the\n\t *    selector, were not TR, TD or TH elements in the DataTable, they will have a null\n\t *    entry in the array.\n\t *  @dtopt API\n\t *  @deprecated Since v1.10\n\t *\n\t *  @example\n\t *    $(document).ready(function() {\n\t *      var oTable = $('#example').dataTable();\n\t *\n\t *      // Get the data from the first row in the table\n\t *      var data = oTable._('tr:first');\n\t *\n\t *      // Do something useful with the data\n\t *      alert( \"First cell is: \"+data[0] );\n\t *    } );\n\t *\n\t *  @example\n\t *    $(document).ready(function() {\n\t *      var oTable = $('#example').dataTable();\n\t *\n\t *      // Filter to 'Webkit' and get all data for\n\t *      oTable.fnFilter('Webkit');\n\t *      var data = oTable._('tr', {\"search\": \"applied\"});\n\t *\n\t *      // Do something with the data\n\t *      alert( data.length+\" rows matched the search\" );\n\t *    } );\n\t */\n\tthis._ = function ( sSelector, oOpts )\n\t{\n\t\treturn this.api(true).rows( sSelector, oOpts ).data();\n\t};\n\t\n\t\n\t/**\n\t * Create a DataTables Api instance, with the currently selected tables for\n\t * the Api's context.\n\t * @param {boolean} [traditional=false] Set the API instance's context to be\n\t *   only the table referred to by the `DataTable.ext.iApiIndex` option, as was\n\t *   used in the API presented by DataTables 1.9- (i.e. the traditional mode),\n\t *   or if all tables captured in the jQuery object should be used.\n\t * @return {DataTables.Api}\n\t */\n\tthis.api = function ( traditional )\n\t{\n\t\treturn traditional ?\n\t\t\tnew _Api(\n\t\t\t\t_fnSettingsFromNode( this[ _ext.iApiIndex ] )\n\t\t\t) :\n\t\t\tnew _Api( this );\n\t};\n\t\n\t\n\t/**\n\t * Add a single new row or multiple rows of data to the table. Please note\n\t * that this is suitable for client-side processing only - if you are using\n\t * server-side processing (i.e. \"bServerSide\": true), then to add data, you\n\t * must add it to the data source, i.e. the server-side, through an Ajax call.\n\t *  @param {array|object} data The data to be added to the table. This can be:\n\t *    <ul>\n\t *      <li>1D array of data - add a single row with the data provided</li>\n\t *      <li>2D array of arrays - add multiple rows in a single call</li>\n\t *      <li>object - data object when using <i>mData</i></li>\n\t *      <li>array of objects - multiple data objects when using <i>mData</i></li>\n\t *    </ul>\n\t *  @param {bool} [redraw=true] redraw the table or not\n\t *  @returns {array} An array of integers, representing the list of indexes in\n\t *    <i>aoData</i> ({@link DataTable.models.oSettings}) that have been added to\n\t *    the table.\n\t *  @dtopt API\n\t *  @deprecated Since v1.10\n\t *\n\t *  @example\n\t *    // Global var for counter\n\t *    var giCount = 2;\n\t *\n\t *    $(document).ready(function() {\n\t *      $('#example').dataTable();\n\t *    } );\n\t *\n\t *    function fnClickAddRow() {\n\t *      $('#example').dataTable().fnAddData( [\n\t *        giCount+\".1\",\n\t *        giCount+\".2\",\n\t *        giCount+\".3\",\n\t *        giCount+\".4\" ]\n\t *      );\n\t *\n\t *      giCount++;\n\t *    }\n\t */\n\tthis.fnAddData = function( data, redraw )\n\t{\n\t\tvar api = this.api( true );\n\t\n\t\t/* Check if we want to add multiple rows or not */\n\t\tvar rows = Array.isArray(data) && ( Array.isArray(data[0]) || $.isPlainObject(data[0]) ) ?\n\t\t\tapi.rows.add( data ) :\n\t\t\tapi.row.add( data );\n\t\n\t\tif ( redraw === undefined || redraw ) {\n\t\t\tapi.draw();\n\t\t}\n\t\n\t\treturn rows.flatten().toArray();\n\t};\n\t\n\t\n\t/**\n\t * This function will make DataTables recalculate the column sizes, based on the data\n\t * contained in the table and the sizes applied to the columns (in the DOM, CSS or\n\t * through the sWidth parameter). This can be useful when the width of the table's\n\t * parent element changes (for example a window resize).\n\t *  @param {boolean} [bRedraw=true] Redraw the table or not, you will typically want to\n\t *  @dtopt API\n\t *  @deprecated Since v1.10\n\t *\n\t *  @example\n\t *    $(document).ready(function() {\n\t *      var oTable = $('#example').dataTable( {\n\t *        \"sScrollY\": \"200px\",\n\t *        \"bPaginate\": false\n\t *      } );\n\t *\n\t *      $(window).on('resize', function () {\n\t *        oTable.fnAdjustColumnSizing();\n\t *      } );\n\t *    } );\n\t */\n\tthis.fnAdjustColumnSizing = function ( bRedraw )\n\t{\n\t\tvar api = this.api( true ).columns.adjust();\n\t\tvar settings = api.settings()[0];\n\t\tvar scroll = settings.oScroll;\n\t\n\t\tif ( bRedraw === undefined || bRedraw ) {\n\t\t\tapi.draw( false );\n\t\t}\n\t\telse if ( scroll.sX !== \"\" || scroll.sY !== \"\" ) {\n\t\t\t/* If not redrawing, but scrolling, we want to apply the new column sizes anyway */\n\t\t\t_fnScrollDraw( settings );\n\t\t}\n\t};\n\t\n\t\n\t/**\n\t * Quickly and simply clear a table\n\t *  @param {bool} [bRedraw=true] redraw the table or not\n\t *  @dtopt API\n\t *  @deprecated Since v1.10\n\t *\n\t *  @example\n\t *    $(document).ready(function() {\n\t *      var oTable = $('#example').dataTable();\n\t *\n\t *      // Immediately 'nuke' the current rows (perhaps waiting for an Ajax callback...)\n\t *      oTable.fnClearTable();\n\t *    } );\n\t */\n\tthis.fnClearTable = function( bRedraw )\n\t{\n\t\tvar api = this.api( true ).clear();\n\t\n\t\tif ( bRedraw === undefined || bRedraw ) {\n\t\t\tapi.draw();\n\t\t}\n\t};\n\t\n\t\n\t/**\n\t * The exact opposite of 'opening' a row, this function will close any rows which\n\t * are currently 'open'.\n\t *  @param {node} nTr the table row to 'close'\n\t *  @returns {int} 0 on success, or 1 if failed (can't find the row)\n\t *  @dtopt API\n\t *  @deprecated Since v1.10\n\t *\n\t *  @example\n\t *    $(document).ready(function() {\n\t *      var oTable;\n\t *\n\t *      // 'open' an information row when a row is clicked on\n\t *      $('#example tbody tr').click( function () {\n\t *        if ( oTable.fnIsOpen(this) ) {\n\t *          oTable.fnClose( this );\n\t *        } else {\n\t *          oTable.fnOpen( this, \"Temporary row opened\", \"info_row\" );\n\t *        }\n\t *      } );\n\t *\n\t *      oTable = $('#example').dataTable();\n\t *    } );\n\t */\n\tthis.fnClose = function( nTr )\n\t{\n\t\tthis.api( true ).row( nTr ).child.hide();\n\t};\n\t\n\t\n\t/**\n\t * Remove a row for the table\n\t *  @param {mixed} target The index of the row from aoData to be deleted, or\n\t *    the TR element you want to delete\n\t *  @param {function|null} [callBack] Callback function\n\t *  @param {bool} [redraw=true] Redraw the table or not\n\t *  @returns {array} The row that was deleted\n\t *  @dtopt API\n\t *  @deprecated Since v1.10\n\t *\n\t *  @example\n\t *    $(document).ready(function() {\n\t *      var oTable = $('#example').dataTable();\n\t *\n\t *      // Immediately remove the first row\n\t *      oTable.fnDeleteRow( 0 );\n\t *    } );\n\t */\n\tthis.fnDeleteRow = function( target, callback, redraw )\n\t{\n\t\tvar api = this.api( true );\n\t\tvar rows = api.rows( target );\n\t\tvar settings = rows.settings()[0];\n\t\tvar data = settings.aoData[ rows[0][0] ];\n\t\n\t\trows.remove();\n\t\n\t\tif ( callback ) {\n\t\t\tcallback.call( this, settings, data );\n\t\t}\n\t\n\t\tif ( redraw === undefined || redraw ) {\n\t\t\tapi.draw();\n\t\t}\n\t\n\t\treturn data;\n\t};\n\t\n\t\n\t/**\n\t * Restore the table to it's original state in the DOM by removing all of DataTables\n\t * enhancements, alterations to the DOM structure of the table and event listeners.\n\t *  @param {boolean} [remove=false] Completely remove the table from the DOM\n\t *  @dtopt API\n\t *  @deprecated Since v1.10\n\t *\n\t *  @example\n\t *    $(document).ready(function() {\n\t *      // This example is fairly pointless in reality, but shows how fnDestroy can be used\n\t *      var oTable = $('#example').dataTable();\n\t *      oTable.fnDestroy();\n\t *    } );\n\t */\n\tthis.fnDestroy = function ( remove )\n\t{\n\t\tthis.api( true ).destroy( remove );\n\t};\n\t\n\t\n\t/**\n\t * Redraw the table\n\t *  @param {bool} [complete=true] Re-filter and resort (if enabled) the table before the draw.\n\t *  @dtopt API\n\t *  @deprecated Since v1.10\n\t *\n\t *  @example\n\t *    $(document).ready(function() {\n\t *      var oTable = $('#example').dataTable();\n\t *\n\t *      // Re-draw the table - you wouldn't want to do it here, but it's an example :-)\n\t *      oTable.fnDraw();\n\t *    } );\n\t */\n\tthis.fnDraw = function( complete )\n\t{\n\t\t// Note that this isn't an exact match to the old call to _fnDraw - it takes\n\t\t// into account the new data, but can hold position.\n\t\tthis.api( true ).draw( complete );\n\t};\n\t\n\t\n\t/**\n\t * Filter the input based on data\n\t *  @param {string} sInput String to filter the table on\n\t *  @param {int|null} [iColumn] Column to limit filtering to\n\t *  @param {bool} [bRegex=false] Treat as regular expression or not\n\t *  @param {bool} [bSmart=true] Perform smart filtering or not\n\t *  @param {bool} [bShowGlobal=true] Show the input global filter in it's input box(es)\n\t *  @param {bool} [bCaseInsensitive=true] Do case-insensitive matching (true) or not (false)\n\t *  @dtopt API\n\t *  @deprecated Since v1.10\n\t *\n\t *  @example\n\t *    $(document).ready(function() {\n\t *      var oTable = $('#example').dataTable();\n\t *\n\t *      // Sometime later - filter...\n\t *      oTable.fnFilter( 'test string' );\n\t *    } );\n\t */\n\tthis.fnFilter = function( sInput, iColumn, bRegex, bSmart, bShowGlobal, bCaseInsensitive )\n\t{\n\t\tvar api = this.api( true );\n\t\n\t\tif ( iColumn === null || iColumn === undefined ) {\n\t\t\tapi.search( sInput, bRegex, bSmart, bCaseInsensitive );\n\t\t}\n\t\telse {\n\t\t\tapi.column( iColumn ).search( sInput, bRegex, bSmart, bCaseInsensitive );\n\t\t}\n\t\n\t\tapi.draw();\n\t};\n\t\n\t\n\t/**\n\t * Get the data for the whole table, an individual row or an individual cell based on the\n\t * provided parameters.\n\t *  @param {int|node} [src] A TR row node, TD/TH cell node or an integer. If given as\n\t *    a TR node then the data source for the whole row will be returned. If given as a\n\t *    TD/TH cell node then iCol will be automatically calculated and the data for the\n\t *    cell returned. If given as an integer, then this is treated as the aoData internal\n\t *    data index for the row (see fnGetPosition) and the data for that row used.\n\t *  @param {int} [col] Optional column index that you want the data of.\n\t *  @returns {array|object|string} If mRow is undefined, then the data for all rows is\n\t *    returned. If mRow is defined, just data for that row, and is iCol is\n\t *    defined, only data for the designated cell is returned.\n\t *  @dtopt API\n\t *  @deprecated Since v1.10\n\t *\n\t *  @example\n\t *    // Row data\n\t *    $(document).ready(function() {\n\t *      oTable = $('#example').dataTable();\n\t *\n\t *      oTable.$('tr').click( function () {\n\t *        var data = oTable.fnGetData( this );\n\t *        // ... do something with the array / object of data for the row\n\t *      } );\n\t *    } );\n\t *\n\t *  @example\n\t *    // Individual cell data\n\t *    $(document).ready(function() {\n\t *      oTable = $('#example').dataTable();\n\t *\n\t *      oTable.$('td').click( function () {\n\t *        var sData = oTable.fnGetData( this );\n\t *        alert( 'The cell clicked on had the value of '+sData );\n\t *      } );\n\t *    } );\n\t */\n\tthis.fnGetData = function( src, col )\n\t{\n\t\tvar api = this.api( true );\n\t\n\t\tif ( src !== undefined ) {\n\t\t\tvar type = src.nodeName ? src.nodeName.toLowerCase() : '';\n\t\n\t\t\treturn col !== undefined || type == 'td' || type == 'th' ?\n\t\t\t\tapi.cell( src, col ).data() :\n\t\t\t\tapi.row( src ).data() || null;\n\t\t}\n\t\n\t\treturn api.data().toArray();\n\t};\n\t\n\t\n\t/**\n\t * Get an array of the TR nodes that are used in the table's body. Note that you will\n\t * typically want to use the '$' API method in preference to this as it is more\n\t * flexible.\n\t *  @param {int} [iRow] Optional row index for the TR element you want\n\t *  @returns {array|node} If iRow is undefined, returns an array of all TR elements\n\t *    in the table's body, or iRow is defined, just the TR element requested.\n\t *  @dtopt API\n\t *  @deprecated Since v1.10\n\t *\n\t *  @example\n\t *    $(document).ready(function() {\n\t *      var oTable = $('#example').dataTable();\n\t *\n\t *      // Get the nodes from the table\n\t *      var nNodes = oTable.fnGetNodes( );\n\t *    } );\n\t */\n\tthis.fnGetNodes = function( iRow )\n\t{\n\t\tvar api = this.api( true );\n\t\n\t\treturn iRow !== undefined ?\n\t\t\tapi.row( iRow ).node() :\n\t\t\tapi.rows().nodes().flatten().toArray();\n\t};\n\t\n\t\n\t/**\n\t * Get the array indexes of a particular cell from it's DOM element\n\t * and column index including hidden columns\n\t *  @param {node} node this can either be a TR, TD or TH in the table's body\n\t *  @returns {int} If nNode is given as a TR, then a single index is returned, or\n\t *    if given as a cell, an array of [row index, column index (visible),\n\t *    column index (all)] is given.\n\t *  @dtopt API\n\t *  @deprecated Since v1.10\n\t *\n\t *  @example\n\t *    $(document).ready(function() {\n\t *      $('#example tbody td').click( function () {\n\t *        // Get the position of the current data from the node\n\t *        var aPos = oTable.fnGetPosition( this );\n\t *\n\t *        // Get the data array for this row\n\t *        var aData = oTable.fnGetData( aPos[0] );\n\t *\n\t *        // Update the data array and return the value\n\t *        aData[ aPos[1] ] = 'clicked';\n\t *        this.innerHTML = 'clicked';\n\t *      } );\n\t *\n\t *      // Init DataTables\n\t *      oTable = $('#example').dataTable();\n\t *    } );\n\t */\n\tthis.fnGetPosition = function( node )\n\t{\n\t\tvar api = this.api( true );\n\t\tvar nodeName = node.nodeName.toUpperCase();\n\t\n\t\tif ( nodeName == 'TR' ) {\n\t\t\treturn api.row( node ).index();\n\t\t}\n\t\telse if ( nodeName == 'TD' || nodeName == 'TH' ) {\n\t\t\tvar cell = api.cell( node ).index();\n\t\n\t\t\treturn [\n\t\t\t\tcell.row,\n\t\t\t\tcell.columnVisible,\n\t\t\t\tcell.column\n\t\t\t];\n\t\t}\n\t\treturn null;\n\t};\n\t\n\t\n\t/**\n\t * Check to see if a row is 'open' or not.\n\t *  @param {node} nTr the table row to check\n\t *  @returns {boolean} true if the row is currently open, false otherwise\n\t *  @dtopt API\n\t *  @deprecated Since v1.10\n\t *\n\t *  @example\n\t *    $(document).ready(function() {\n\t *      var oTable;\n\t *\n\t *      // 'open' an information row when a row is clicked on\n\t *      $('#example tbody tr').click( function () {\n\t *        if ( oTable.fnIsOpen(this) ) {\n\t *          oTable.fnClose( this );\n\t *        } else {\n\t *          oTable.fnOpen( this, \"Temporary row opened\", \"info_row\" );\n\t *        }\n\t *      } );\n\t *\n\t *      oTable = $('#example').dataTable();\n\t *    } );\n\t */\n\tthis.fnIsOpen = function( nTr )\n\t{\n\t\treturn this.api( true ).row( nTr ).child.isShown();\n\t};\n\t\n\t\n\t/**\n\t * This function will place a new row directly after a row which is currently\n\t * on display on the page, with the HTML contents that is passed into the\n\t * function. This can be used, for example, to ask for confirmation that a\n\t * particular record should be deleted.\n\t *  @param {node} nTr The table row to 'open'\n\t *  @param {string|node|jQuery} mHtml The HTML to put into the row\n\t *  @param {string} sClass Class to give the new TD cell\n\t *  @returns {node} The row opened. Note that if the table row passed in as the\n\t *    first parameter, is not found in the table, this method will silently\n\t *    return.\n\t *  @dtopt API\n\t *  @deprecated Since v1.10\n\t *\n\t *  @example\n\t *    $(document).ready(function() {\n\t *      var oTable;\n\t *\n\t *      // 'open' an information row when a row is clicked on\n\t *      $('#example tbody tr').click( function () {\n\t *        if ( oTable.fnIsOpen(this) ) {\n\t *          oTable.fnClose( this );\n\t *        } else {\n\t *          oTable.fnOpen( this, \"Temporary row opened\", \"info_row\" );\n\t *        }\n\t *      } );\n\t *\n\t *      oTable = $('#example').dataTable();\n\t *    } );\n\t */\n\tthis.fnOpen = function( nTr, mHtml, sClass )\n\t{\n\t\treturn this.api( true )\n\t\t\t.row( nTr )\n\t\t\t.child( mHtml, sClass )\n\t\t\t.show()\n\t\t\t.child()[0];\n\t};\n\t\n\t\n\t/**\n\t * Change the pagination - provides the internal logic for pagination in a simple API\n\t * function. With this function you can have a DataTables table go to the next,\n\t * previous, first or last pages.\n\t *  @param {string|int} mAction Paging action to take: \"first\", \"previous\", \"next\" or \"last\"\n\t *    or page number to jump to (integer), note that page 0 is the first page.\n\t *  @param {bool} [bRedraw=true] Redraw the table or not\n\t *  @dtopt API\n\t *  @deprecated Since v1.10\n\t *\n\t *  @example\n\t *    $(document).ready(function() {\n\t *      var oTable = $('#example').dataTable();\n\t *      oTable.fnPageChange( 'next' );\n\t *    } );\n\t */\n\tthis.fnPageChange = function ( mAction, bRedraw )\n\t{\n\t\tvar api = this.api( true ).page( mAction );\n\t\n\t\tif ( bRedraw === undefined || bRedraw ) {\n\t\t\tapi.draw(false);\n\t\t}\n\t};\n\t\n\t\n\t/**\n\t * Show a particular column\n\t *  @param {int} iCol The column whose display should be changed\n\t *  @param {bool} bShow Show (true) or hide (false) the column\n\t *  @param {bool} [bRedraw=true] Redraw the table or not\n\t *  @dtopt API\n\t *  @deprecated Since v1.10\n\t *\n\t *  @example\n\t *    $(document).ready(function() {\n\t *      var oTable = $('#example').dataTable();\n\t *\n\t *      // Hide the second column after initialisation\n\t *      oTable.fnSetColumnVis( 1, false );\n\t *    } );\n\t */\n\tthis.fnSetColumnVis = function ( iCol, bShow, bRedraw )\n\t{\n\t\tvar api = this.api( true ).column( iCol ).visible( bShow );\n\t\n\t\tif ( bRedraw === undefined || bRedraw ) {\n\t\t\tapi.columns.adjust().draw();\n\t\t}\n\t};\n\t\n\t\n\t/**\n\t * Get the settings for a particular table for external manipulation\n\t *  @returns {object} DataTables settings object. See\n\t *    {@link DataTable.models.oSettings}\n\t *  @dtopt API\n\t *  @deprecated Since v1.10\n\t *\n\t *  @example\n\t *    $(document).ready(function() {\n\t *      var oTable = $('#example').dataTable();\n\t *      var oSettings = oTable.fnSettings();\n\t *\n\t *      // Show an example parameter from the settings\n\t *      alert( oSettings._iDisplayStart );\n\t *    } );\n\t */\n\tthis.fnSettings = function()\n\t{\n\t\treturn _fnSettingsFromNode( this[_ext.iApiIndex] );\n\t};\n\t\n\t\n\t/**\n\t * Sort the table by a particular column\n\t *  @param {int} iCol the data index to sort on. Note that this will not match the\n\t *    'display index' if you have hidden data entries\n\t *  @dtopt API\n\t *  @deprecated Since v1.10\n\t *\n\t *  @example\n\t *    $(document).ready(function() {\n\t *      var oTable = $('#example').dataTable();\n\t *\n\t *      // Sort immediately with columns 0 and 1\n\t *      oTable.fnSort( [ [0,'asc'], [1,'asc'] ] );\n\t *    } );\n\t */\n\tthis.fnSort = function( aaSort )\n\t{\n\t\tthis.api( true ).order( aaSort ).draw();\n\t};\n\t\n\t\n\t/**\n\t * Attach a sort listener to an element for a given column\n\t *  @param {node} nNode the element to attach the sort listener to\n\t *  @param {int} iColumn the column that a click on this node will sort on\n\t *  @param {function} [fnCallback] callback function when sort is run\n\t *  @dtopt API\n\t *  @deprecated Since v1.10\n\t *\n\t *  @example\n\t *    $(document).ready(function() {\n\t *      var oTable = $('#example').dataTable();\n\t *\n\t *      // Sort on column 1, when 'sorter' is clicked on\n\t *      oTable.fnSortListener( document.getElementById('sorter'), 1 );\n\t *    } );\n\t */\n\tthis.fnSortListener = function( nNode, iColumn, fnCallback )\n\t{\n\t\tthis.api( true ).order.listener( nNode, iColumn, fnCallback );\n\t};\n\t\n\t\n\t/**\n\t * Update a table cell or row - this method will accept either a single value to\n\t * update the cell with, an array of values with one element for each column or\n\t * an object in the same format as the original data source. The function is\n\t * self-referencing in order to make the multi column updates easier.\n\t *  @param {object|array|string} mData Data to update the cell/row with\n\t *  @param {node|int} mRow TR element you want to update or the aoData index\n\t *  @param {int} [iColumn] The column to update, give as null or undefined to\n\t *    update a whole row.\n\t *  @param {bool} [bRedraw=true] Redraw the table or not\n\t *  @param {bool} [bAction=true] Perform pre-draw actions or not\n\t *  @returns {int} 0 on success, 1 on error\n\t *  @dtopt API\n\t *  @deprecated Since v1.10\n\t *\n\t *  @example\n\t *    $(document).ready(function() {\n\t *      var oTable = $('#example').dataTable();\n\t *      oTable.fnUpdate( 'Example update', 0, 0 ); // Single cell\n\t *      oTable.fnUpdate( ['a', 'b', 'c', 'd', 'e'], $('tbody tr')[0] ); // Row\n\t *    } );\n\t */\n\tthis.fnUpdate = function( mData, mRow, iColumn, bRedraw, bAction )\n\t{\n\t\tvar api = this.api( true );\n\t\n\t\tif ( iColumn === undefined || iColumn === null ) {\n\t\t\tapi.row( mRow ).data( mData );\n\t\t}\n\t\telse {\n\t\t\tapi.cell( mRow, iColumn ).data( mData );\n\t\t}\n\t\n\t\tif ( bAction === undefined || bAction ) {\n\t\t\tapi.columns.adjust();\n\t\t}\n\t\n\t\tif ( bRedraw === undefined || bRedraw ) {\n\t\t\tapi.draw();\n\t\t}\n\t\treturn 0;\n\t};\n\t\n\t\n\t/**\n\t * Provide a common method for plug-ins to check the version of DataTables being used, in order\n\t * to ensure compatibility.\n\t *  @param {string} sVersion Version string to check for, in the format \"X.Y.Z\". Note that the\n\t *    formats \"X\" and \"X.Y\" are also acceptable.\n\t *  @returns {boolean} true if this version of DataTables is greater or equal to the required\n\t *    version, or false if this version of DataTales is not suitable\n\t *  @method\n\t *  @dtopt API\n\t *  @deprecated Since v1.10\n\t *\n\t *  @example\n\t *    $(document).ready(function() {\n\t *      var oTable = $('#example').dataTable();\n\t *      alert( oTable.fnVersionCheck( '1.9.0' ) );\n\t *    } );\n\t */\n\tthis.fnVersionCheck = _ext.fnVersionCheck;\n\t\n\n\tvar _that = this;\n\tvar emptyInit = options === undefined;\n\tvar len = this.length;\n\n\tif ( emptyInit ) {\n\t\toptions = {};\n\t}\n\n\tthis.oApi = this.internal = _ext.internal;\n\n\t// Extend with old style plug-in API methods\n\tfor ( var fn in DataTable.ext.internal ) {\n\t\tif ( fn ) {\n\t\t\tthis[fn] = _fnExternApiFunc(fn);\n\t\t}\n\t}\n\n\tthis.each(function() {\n\t\t// For each initialisation we want to give it a clean initialisation\n\t\t// object that can be bashed around\n\t\tvar o = {};\n\t\tvar oInit = len > 1 ? // optimisation for single table case\n\t\t\t_fnExtend( o, options, true ) :\n\t\t\toptions;\n\n\t\t/*global oInit,_that,emptyInit*/\n\t\tvar i=0, iLen, j, jLen, k, kLen;\n\t\tvar sId = this.getAttribute( 'id' );\n\t\tvar bInitHandedOff = false;\n\t\tvar defaults = DataTable.defaults;\n\t\tvar $this = $(this);\n\t\t\n\t\t\n\t\t/* Sanity check */\n\t\tif ( this.nodeName.toLowerCase() != 'table' )\n\t\t{\n\t\t\t_fnLog( null, 0, 'Non-table node initialisation ('+this.nodeName+')', 2 );\n\t\t\treturn;\n\t\t}\n\t\t\n\t\t/* Backwards compatibility for the defaults */\n\t\t_fnCompatOpts( defaults );\n\t\t_fnCompatCols( defaults.column );\n\t\t\n\t\t/* Convert the camel-case defaults to Hungarian */\n\t\t_fnCamelToHungarian( defaults, defaults, true );\n\t\t_fnCamelToHungarian( defaults.column, defaults.column, true );\n\t\t\n\t\t/* Setting up the initialisation object */\n\t\t_fnCamelToHungarian( defaults, $.extend( oInit, $this.data() ), true );\n\t\t\n\t\t\n\t\t\n\t\t/* Check to see if we are re-initialising a table */\n\t\tvar allSettings = DataTable.settings;\n\t\tfor ( i=0, iLen=allSettings.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tvar s = allSettings[i];\n\t\t\n\t\t\t/* Base check on table node */\n\t\t\tif (\n\t\t\t\ts.nTable == this ||\n\t\t\t\t(s.nTHead && s.nTHead.parentNode == this) ||\n\t\t\t\t(s.nTFoot && s.nTFoot.parentNode == this)\n\t\t\t) {\n\t\t\t\tvar bRetrieve = oInit.bRetrieve !== undefined ? oInit.bRetrieve : defaults.bRetrieve;\n\t\t\t\tvar bDestroy = oInit.bDestroy !== undefined ? oInit.bDestroy : defaults.bDestroy;\n\t\t\n\t\t\t\tif ( emptyInit || bRetrieve )\n\t\t\t\t{\n\t\t\t\t\treturn s.oInstance;\n\t\t\t\t}\n\t\t\t\telse if ( bDestroy )\n\t\t\t\t{\n\t\t\t\t\ts.oInstance.fnDestroy();\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t_fnLog( s, 0, 'Cannot reinitialise DataTable', 3 );\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\n\t\t\t/* If the element we are initialising has the same ID as a table which was previously\n\t\t\t * initialised, but the table nodes don't match (from before) then we destroy the old\n\t\t\t * instance by simply deleting it. This is under the assumption that the table has been\n\t\t\t * destroyed by other methods. Anyone using non-id selectors will need to do this manually\n\t\t\t */\n\t\t\tif ( s.sTableId == this.id )\n\t\t\t{\n\t\t\t\tallSettings.splice( i, 1 );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\t\n\t\t/* Ensure the table has an ID - required for accessibility */\n\t\tif ( sId === null || sId === \"\" )\n\t\t{\n\t\t\tsId = \"DataTables_Table_\"+(DataTable.ext._unique++);\n\t\t\tthis.id = sId;\n\t\t}\n\t\t\n\t\t/* Create the settings object for this table and set some of the default parameters */\n\t\tvar oSettings = $.extend( true, {}, DataTable.models.oSettings, {\n\t\t\t\"sDestroyWidth\": $this[0].style.width,\n\t\t\t\"sInstance\":     sId,\n\t\t\t\"sTableId\":      sId\n\t\t} );\n\t\toSettings.nTable = this;\n\t\toSettings.oApi   = _that.internal;\n\t\toSettings.oInit  = oInit;\n\t\t\n\t\tallSettings.push( oSettings );\n\t\t\n\t\t// Need to add the instance after the instance after the settings object has been added\n\t\t// to the settings array, so we can self reference the table instance if more than one\n\t\toSettings.oInstance = (_that.length===1) ? _that : $this.dataTable();\n\t\t\n\t\t// Backwards compatibility, before we apply all the defaults\n\t\t_fnCompatOpts( oInit );\n\t\t_fnLanguageCompat( oInit.oLanguage );\n\t\t\n\t\t// If the length menu is given, but the init display length is not, use the length menu\n\t\tif ( oInit.aLengthMenu && ! oInit.iDisplayLength )\n\t\t{\n\t\t\toInit.iDisplayLength = Array.isArray( oInit.aLengthMenu[0] ) ?\n\t\t\t\toInit.aLengthMenu[0][0] : oInit.aLengthMenu[0];\n\t\t}\n\t\t\n\t\t// Apply the defaults and init options to make a single init object will all\n\t\t// options defined from defaults and instance options.\n\t\toInit = _fnExtend( $.extend( true, {}, defaults ), oInit );\n\t\t\n\t\t\n\t\t// Map the initialisation options onto the settings object\n\t\t_fnMap( oSettings.oFeatures, oInit, [\n\t\t\t\"bPaginate\",\n\t\t\t\"bLengthChange\",\n\t\t\t\"bFilter\",\n\t\t\t\"bSort\",\n\t\t\t\"bSortMulti\",\n\t\t\t\"bInfo\",\n\t\t\t\"bProcessing\",\n\t\t\t\"bAutoWidth\",\n\t\t\t\"bSortClasses\",\n\t\t\t\"bServerSide\",\n\t\t\t\"bDeferRender\"\n\t\t] );\n\t\t_fnMap( oSettings, oInit, [\n\t\t\t\"asStripeClasses\",\n\t\t\t\"ajax\",\n\t\t\t\"fnServerData\",\n\t\t\t\"fnFormatNumber\",\n\t\t\t\"sServerMethod\",\n\t\t\t\"aaSorting\",\n\t\t\t\"aaSortingFixed\",\n\t\t\t\"aLengthMenu\",\n\t\t\t\"sPaginationType\",\n\t\t\t\"sAjaxSource\",\n\t\t\t\"sAjaxDataProp\",\n\t\t\t\"iStateDuration\",\n\t\t\t\"sDom\",\n\t\t\t\"bSortCellsTop\",\n\t\t\t\"iTabIndex\",\n\t\t\t\"fnStateLoadCallback\",\n\t\t\t\"fnStateSaveCallback\",\n\t\t\t\"renderer\",\n\t\t\t\"searchDelay\",\n\t\t\t\"rowId\",\n\t\t\t[ \"iCookieDuration\", \"iStateDuration\" ], // backwards compat\n\t\t\t[ \"oSearch\", \"oPreviousSearch\" ],\n\t\t\t[ \"aoSearchCols\", \"aoPreSearchCols\" ],\n\t\t\t[ \"iDisplayLength\", \"_iDisplayLength\" ]\n\t\t] );\n\t\t_fnMap( oSettings.oScroll, oInit, [\n\t\t\t[ \"sScrollX\", \"sX\" ],\n\t\t\t[ \"sScrollXInner\", \"sXInner\" ],\n\t\t\t[ \"sScrollY\", \"sY\" ],\n\t\t\t[ \"bScrollCollapse\", \"bCollapse\" ]\n\t\t] );\n\t\t_fnMap( oSettings.oLanguage, oInit, \"fnInfoCallback\" );\n\t\t\n\t\t/* Callback functions which are array driven */\n\t\t_fnCallbackReg( oSettings, 'aoDrawCallback',       oInit.fnDrawCallback,      'user' );\n\t\t_fnCallbackReg( oSettings, 'aoServerParams',       oInit.fnServerParams,      'user' );\n\t\t_fnCallbackReg( oSettings, 'aoStateSaveParams',    oInit.fnStateSaveParams,   'user' );\n\t\t_fnCallbackReg( oSettings, 'aoStateLoadParams',    oInit.fnStateLoadParams,   'user' );\n\t\t_fnCallbackReg( oSettings, 'aoStateLoaded',        oInit.fnStateLoaded,       'user' );\n\t\t_fnCallbackReg( oSettings, 'aoRowCallback',        oInit.fnRowCallback,       'user' );\n\t\t_fnCallbackReg( oSettings, 'aoRowCreatedCallback', oInit.fnCreatedRow,        'user' );\n\t\t_fnCallbackReg( oSettings, 'aoHeaderCallback',     oInit.fnHeaderCallback,    'user' );\n\t\t_fnCallbackReg( oSettings, 'aoFooterCallback',     oInit.fnFooterCallback,    'user' );\n\t\t_fnCallbackReg( oSettings, 'aoInitComplete',       oInit.fnInitComplete,      'user' );\n\t\t_fnCallbackReg( oSettings, 'aoPreDrawCallback',    oInit.fnPreDrawCallback,   'user' );\n\t\t\n\t\toSettings.rowIdFn = _fnGetObjectDataFn( oInit.rowId );\n\t\t\n\t\t/* Browser support detection */\n\t\t_fnBrowserDetect( oSettings );\n\t\t\n\t\tvar oClasses = oSettings.oClasses;\n\t\t\n\t\t$.extend( oClasses, DataTable.ext.classes, oInit.oClasses );\n\t\t$this.addClass( oClasses.sTable );\n\t\t\n\t\t\n\t\tif ( oSettings.iInitDisplayStart === undefined )\n\t\t{\n\t\t\t/* Display start point, taking into account the save saving */\n\t\t\toSettings.iInitDisplayStart = oInit.iDisplayStart;\n\t\t\toSettings._iDisplayStart = oInit.iDisplayStart;\n\t\t}\n\t\t\n\t\tif ( oInit.iDeferLoading !== null )\n\t\t{\n\t\t\toSettings.bDeferLoading = true;\n\t\t\tvar tmp = Array.isArray( oInit.iDeferLoading );\n\t\t\toSettings._iRecordsDisplay = tmp ? oInit.iDeferLoading[0] : oInit.iDeferLoading;\n\t\t\toSettings._iRecordsTotal = tmp ? oInit.iDeferLoading[1] : oInit.iDeferLoading;\n\t\t}\n\t\t\n\t\t/* Language definitions */\n\t\tvar oLanguage = oSettings.oLanguage;\n\t\t$.extend( true, oLanguage, oInit.oLanguage );\n\t\t\n\t\tif ( oLanguage.sUrl )\n\t\t{\n\t\t\t/* Get the language definitions from a file - because this Ajax call makes the language\n\t\t\t * get async to the remainder of this function we use bInitHandedOff to indicate that\n\t\t\t * _fnInitialise will be fired by the returned Ajax handler, rather than the constructor\n\t\t\t */\n\t\t\t$.ajax( {\n\t\t\t\tdataType: 'json',\n\t\t\t\turl: oLanguage.sUrl,\n\t\t\t\tsuccess: function ( json ) {\n\t\t\t\t\t_fnCamelToHungarian( defaults.oLanguage, json );\n\t\t\t\t\t_fnLanguageCompat( json );\n\t\t\t\t\t$.extend( true, oLanguage, json, oSettings.oInit.oLanguage );\n\t\t\n\t\t\t\t\t_fnCallbackFire( oSettings, null, 'i18n', [oSettings]);\n\t\t\t\t\t_fnInitialise( oSettings );\n\t\t\t\t},\n\t\t\t\terror: function () {\n\t\t\t\t\t// Error occurred loading language file, continue on as best we can\n\t\t\t\t\t_fnInitialise( oSettings );\n\t\t\t\t}\n\t\t\t} );\n\t\t\tbInitHandedOff = true;\n\t\t}\n\t\telse {\n\t\t\t_fnCallbackFire( oSettings, null, 'i18n', [oSettings]);\n\t\t}\n\t\t\n\t\t/*\n\t\t * Stripes\n\t\t */\n\t\tif ( oInit.asStripeClasses === null )\n\t\t{\n\t\t\toSettings.asStripeClasses =[\n\t\t\t\toClasses.sStripeOdd,\n\t\t\t\toClasses.sStripeEven\n\t\t\t];\n\t\t}\n\t\t\n\t\t/* Remove row stripe classes if they are already on the table row */\n\t\tvar stripeClasses = oSettings.asStripeClasses;\n\t\tvar rowOne = $this.children('tbody').find('tr').eq(0);\n\t\tif ( $.inArray( true, $.map( stripeClasses, function(el, i) {\n\t\t\treturn rowOne.hasClass(el);\n\t\t} ) ) !== -1 ) {\n\t\t\t$('tbody tr', this).removeClass( stripeClasses.join(' ') );\n\t\t\toSettings.asDestroyStripes = stripeClasses.slice();\n\t\t}\n\t\t\n\t\t/*\n\t\t * Columns\n\t\t * See if we should load columns automatically or use defined ones\n\t\t */\n\t\tvar anThs = [];\n\t\tvar aoColumnsInit;\n\t\tvar nThead = this.getElementsByTagName('thead');\n\t\tif ( nThead.length !== 0 )\n\t\t{\n\t\t\t_fnDetectHeader( oSettings.aoHeader, nThead[0] );\n\t\t\tanThs = _fnGetUniqueThs( oSettings );\n\t\t}\n\t\t\n\t\t/* If not given a column array, generate one with nulls */\n\t\tif ( oInit.aoColumns === null )\n\t\t{\n\t\t\taoColumnsInit = [];\n\t\t\tfor ( i=0, iLen=anThs.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\taoColumnsInit.push( null );\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\taoColumnsInit = oInit.aoColumns;\n\t\t}\n\t\t\n\t\t/* Add the columns */\n\t\tfor ( i=0, iLen=aoColumnsInit.length ; i<iLen ; i++ )\n\t\t{\n\t\t\t_fnAddColumn( oSettings, anThs ? anThs[i] : null );\n\t\t}\n\t\t\n\t\t/* Apply the column definitions */\n\t\t_fnApplyColumnDefs( oSettings, oInit.aoColumnDefs, aoColumnsInit, function (iCol, oDef) {\n\t\t\t_fnColumnOptions( oSettings, iCol, oDef );\n\t\t} );\n\t\t\n\t\t/* HTML5 attribute detection - build an mData object automatically if the\n\t\t * attributes are found\n\t\t */\n\t\tif ( rowOne.length ) {\n\t\t\tvar a = function ( cell, name ) {\n\t\t\t\treturn cell.getAttribute( 'data-'+name ) !== null ? name : null;\n\t\t\t};\n\t\t\n\t\t\t$( rowOne[0] ).children('th, td').each( function (i, cell) {\n\t\t\t\tvar col = oSettings.aoColumns[i];\n\t\t\n\t\t\t\tif (! col) {\n\t\t\t\t\t_fnLog( oSettings, 0, 'Incorrect column count', 18 );\n\t\t\t\t}\n\t\t\n\t\t\t\tif ( col.mData === i ) {\n\t\t\t\t\tvar sort = a( cell, 'sort' ) || a( cell, 'order' );\n\t\t\t\t\tvar filter = a( cell, 'filter' ) || a( cell, 'search' );\n\t\t\n\t\t\t\t\tif ( sort !== null || filter !== null ) {\n\t\t\t\t\t\tcol.mData = {\n\t\t\t\t\t\t\t_:      i+'.display',\n\t\t\t\t\t\t\tsort:   sort !== null   ? i+'.@data-'+sort   : undefined,\n\t\t\t\t\t\t\ttype:   sort !== null   ? i+'.@data-'+sort   : undefined,\n\t\t\t\t\t\t\tfilter: filter !== null ? i+'.@data-'+filter : undefined\n\t\t\t\t\t\t};\n\t\t\t\t\t\tcol._isArrayHost = true;\n\t\t\n\t\t\t\t\t\t_fnColumnOptions( oSettings, i );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t\t\n\t\tvar features = oSettings.oFeatures;\n\t\tvar loadedInit = function () {\n\t\t\t/*\n\t\t\t * Sorting\n\t\t\t * @todo For modularisation (1.11) this needs to do into a sort start up handler\n\t\t\t */\n\t\t\n\t\t\t// If aaSorting is not defined, then we use the first indicator in asSorting\n\t\t\t// in case that has been altered, so the default sort reflects that option\n\t\t\tif ( oInit.aaSorting === undefined ) {\n\t\t\t\tvar sorting = oSettings.aaSorting;\n\t\t\t\tfor ( i=0, iLen=sorting.length ; i<iLen ; i++ ) {\n\t\t\t\t\tsorting[i][1] = oSettings.aoColumns[ i ].asSorting[0];\n\t\t\t\t}\n\t\t\t}\n\t\t\n\t\t\t/* Do a first pass on the sorting classes (allows any size changes to be taken into\n\t\t\t * account, and also will apply sorting disabled classes if disabled\n\t\t\t */\n\t\t\t_fnSortingClasses( oSettings );\n\t\t\n\t\t\tif ( features.bSort ) {\n\t\t\t\t_fnCallbackReg( oSettings, 'aoDrawCallback', function () {\n\t\t\t\t\tif ( oSettings.bSorted ) {\n\t\t\t\t\t\tvar aSort = _fnSortFlatten( oSettings );\n\t\t\t\t\t\tvar sortedColumns = {};\n\t\t\n\t\t\t\t\t\t$.each( aSort, function (i, val) {\n\t\t\t\t\t\t\tsortedColumns[ val.src ] = val.dir;\n\t\t\t\t\t\t} );\n\t\t\n\t\t\t\t\t\t_fnCallbackFire( oSettings, null, 'order', [oSettings, aSort, sortedColumns] );\n\t\t\t\t\t\t_fnSortAria( oSettings );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t}\n\t\t\n\t\t\t_fnCallbackReg( oSettings, 'aoDrawCallback', function () {\n\t\t\t\tif ( oSettings.bSorted || _fnDataSource( oSettings ) === 'ssp' || features.bDeferRender ) {\n\t\t\t\t\t_fnSortingClasses( oSettings );\n\t\t\t\t}\n\t\t\t}, 'sc' );\n\t\t\n\t\t\n\t\t\t/*\n\t\t\t * Final init\n\t\t\t * Cache the header, body and footer as required, creating them if needed\n\t\t\t */\n\t\t\n\t\t\t// Work around for Webkit bug 83867 - store the caption-side before removing from doc\n\t\t\tvar captions = $this.children('caption').each( function () {\n\t\t\t\tthis._captionSide = $(this).css('caption-side');\n\t\t\t} );\n\t\t\n\t\t\tvar thead = $this.children('thead');\n\t\t\tif ( thead.length === 0 ) {\n\t\t\t\tthead = $('<thead/>').appendTo($this);\n\t\t\t}\n\t\t\toSettings.nTHead = thead[0];\n\t\t\n\t\t\tvar tbody = $this.children('tbody');\n\t\t\tif ( tbody.length === 0 ) {\n\t\t\t\ttbody = $('<tbody/>').insertAfter(thead);\n\t\t\t}\n\t\t\toSettings.nTBody = tbody[0];\n\t\t\n\t\t\tvar tfoot = $this.children('tfoot');\n\t\t\tif ( tfoot.length === 0 && captions.length > 0 && (oSettings.oScroll.sX !== \"\" || oSettings.oScroll.sY !== \"\") ) {\n\t\t\t\t// If we are a scrolling table, and no footer has been given, then we need to create\n\t\t\t\t// a tfoot element for the caption element to be appended to\n\t\t\t\ttfoot = $('<tfoot/>').appendTo($this);\n\t\t\t}\n\t\t\n\t\t\tif ( tfoot.length === 0 || tfoot.children().length === 0 ) {\n\t\t\t\t$this.addClass( oClasses.sNoFooter );\n\t\t\t}\n\t\t\telse if ( tfoot.length > 0 ) {\n\t\t\t\toSettings.nTFoot = tfoot[0];\n\t\t\t\t_fnDetectHeader( oSettings.aoFooter, oSettings.nTFoot );\n\t\t\t}\n\t\t\n\t\t\t/* Check if there is data passing into the constructor */\n\t\t\tif ( oInit.aaData ) {\n\t\t\t\tfor ( i=0 ; i<oInit.aaData.length ; i++ ) {\n\t\t\t\t\t_fnAddData( oSettings, oInit.aaData[ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if ( oSettings.bDeferLoading || _fnDataSource( oSettings ) == 'dom' ) {\n\t\t\t\t/* Grab the data from the page - only do this when deferred loading or no Ajax\n\t\t\t\t * source since there is no point in reading the DOM data if we are then going\n\t\t\t\t * to replace it with Ajax data\n\t\t\t\t */\n\t\t\t\t_fnAddTr( oSettings, $(oSettings.nTBody).children('tr') );\n\t\t\t}\n\t\t\n\t\t\t/* Copy the data index array */\n\t\t\toSettings.aiDisplay = oSettings.aiDisplayMaster.slice();\n\t\t\n\t\t\t/* Initialisation complete - table can be drawn */\n\t\t\toSettings.bInitialised = true;\n\t\t\n\t\t\t/* Check if we need to initialise the table (it might not have been handed off to the\n\t\t\t * language processor)\n\t\t\t */\n\t\t\tif ( bInitHandedOff === false ) {\n\t\t\t\t_fnInitialise( oSettings );\n\t\t\t}\n\t\t};\n\t\t\n\t\t/* Must be done after everything which can be overridden by the state saving! */\n\t\t_fnCallbackReg( oSettings, 'aoDrawCallback', _fnSaveState, 'state_save' );\n\t\t\n\t\tif ( oInit.bStateSave )\n\t\t{\n\t\t\tfeatures.bStateSave = true;\n\t\t\t_fnLoadState( oSettings, oInit, loadedInit );\n\t\t}\n\t\telse {\n\t\t\tloadedInit();\n\t\t}\n\t\t\n\t} );\n\t_that = null;\n\treturn this;\n};\n\n\n/*\n * It is useful to have variables which are scoped locally so only the\n * DataTables functions can access them and they don't leak into global space.\n * At the same time these functions are often useful over multiple files in the\n * core and API, so we list, or at least document, all variables which are used\n * by DataTables as private variables here. This also ensures that there is no\n * clashing of variable names and that they can easily referenced for reuse.\n */\n\n\n// Defined else where\n//  _selector_run\n//  _selector_opts\n//  _selector_first\n//  _selector_row_indexes\n\nvar _ext; // DataTable.ext\nvar _Api; // DataTable.Api\nvar _api_register; // DataTable.Api.register\nvar _api_registerPlural; // DataTable.Api.registerPlural\n\nvar _re_dic = {};\nvar _re_new_lines = /[\\r\\n\\u2028]/g;\nvar _re_html = /<.*?>/g;\n\n// This is not strict ISO8601 - Date.parse() is quite lax, although\n// implementations differ between browsers.\nvar _re_date = /^\\d{2,4}[\\.\\/\\-]\\d{1,2}[\\.\\/\\-]\\d{1,2}([T ]{1}\\d{1,2}[:\\.]\\d{2}([\\.:]\\d{2})?)?$/;\n\n// Escape regular expression special characters\nvar _re_escape_regex = new RegExp( '(\\\\' + [ '/', '.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\\\', '$', '^', '-' ].join('|\\\\') + ')', 'g' );\n\n// http://en.wikipedia.org/wiki/Foreign_exchange_market\n// - \\u20BD - Russian ruble.\n// - \\u20a9 - South Korean Won\n// - \\u20BA - Turkish Lira\n// - \\u20B9 - Indian Rupee\n// - R - Brazil (R$) and South Africa\n// - fr - Swiss Franc\n// - kr - Swedish krona, Norwegian krone and Danish krone\n// - \\u2009 is thin space and \\u202F is narrow no-break space, both used in many\n// - \u0243 - Bitcoin\n// - \u039E - Ethereum\n//   standards as thousands separators.\nvar _re_formatted_numeric = /['\\u00A0,$\u00A3\u20AC\u00A5%\\u2009\\u202F\\u20BD\\u20a9\\u20BArfk\u0243\u039E]/gi;\n\n\nvar _empty = function ( d ) {\n\treturn !d || d === true || d === '-' ? true : false;\n};\n\n\nvar _intVal = function ( s ) {\n\tvar integer = parseInt( s, 10 );\n\treturn !isNaN(integer) && isFinite(s) ? integer : null;\n};\n\n// Convert from a formatted number with characters other than `.` as the\n// decimal place, to a Javascript number\nvar _numToDecimal = function ( num, decimalPoint ) {\n\t// Cache created regular expressions for speed as this function is called often\n\tif ( ! _re_dic[ decimalPoint ] ) {\n\t\t_re_dic[ decimalPoint ] = new RegExp( _fnEscapeRegex( decimalPoint ), 'g' );\n\t}\n\treturn typeof num === 'string' && decimalPoint !== '.' ?\n\t\tnum.replace( /\\./g, '' ).replace( _re_dic[ decimalPoint ], '.' ) :\n\t\tnum;\n};\n\n\nvar _isNumber = function ( d, decimalPoint, formatted ) {\n\tvar type = typeof d;\n\tvar strType = type === 'string';\n\n\tif ( type === 'number' || type === 'bigint') {\n\t\treturn true;\n\t}\n\n\t// If empty return immediately so there must be a number if it is a\n\t// formatted string (this stops the string \"k\", or \"kr\", etc being detected\n\t// as a formatted number for currency\n\tif ( _empty( d ) ) {\n\t\treturn true;\n\t}\n\n\tif ( decimalPoint && strType ) {\n\t\td = _numToDecimal( d, decimalPoint );\n\t}\n\n\tif ( formatted && strType ) {\n\t\td = d.replace( _re_formatted_numeric, '' );\n\t}\n\n\treturn !isNaN( parseFloat(d) ) && isFinite( d );\n};\n\n\n// A string without HTML in it can be considered to be HTML still\nvar _isHtml = function ( d ) {\n\treturn _empty( d ) || typeof d === 'string';\n};\n\n\nvar _htmlNumeric = function ( d, decimalPoint, formatted ) {\n\tif ( _empty( d ) ) {\n\t\treturn true;\n\t}\n\n\tvar html = _isHtml( d );\n\treturn ! html ?\n\t\tnull :\n\t\t_isNumber( _stripHtml( d ), decimalPoint, formatted ) ?\n\t\t\ttrue :\n\t\t\tnull;\n};\n\n\nvar _pluck = function ( a, prop, prop2 ) {\n\tvar out = [];\n\tvar i=0, ien=a.length;\n\n\t// Could have the test in the loop for slightly smaller code, but speed\n\t// is essential here\n\tif ( prop2 !== undefined ) {\n\t\tfor ( ; i<ien ; i++ ) {\n\t\t\tif ( a[i] && a[i][ prop ] ) {\n\t\t\t\tout.push( a[i][ prop ][ prop2 ] );\n\t\t\t}\n\t\t}\n\t}\n\telse {\n\t\tfor ( ; i<ien ; i++ ) {\n\t\t\tif ( a[i] ) {\n\t\t\t\tout.push( a[i][ prop ] );\n\t\t\t}\n\t\t}\n\t}\n\n\treturn out;\n};\n\n\n// Basically the same as _pluck, but rather than looping over `a` we use `order`\n// as the indexes to pick from `a`\nvar _pluck_order = function ( a, order, prop, prop2 )\n{\n\tvar out = [];\n\tvar i=0, ien=order.length;\n\n\t// Could have the test in the loop for slightly smaller code, but speed\n\t// is essential here\n\tif ( prop2 !== undefined ) {\n\t\tfor ( ; i<ien ; i++ ) {\n\t\t\tif ( a[ order[i] ][ prop ] ) {\n\t\t\t\tout.push( a[ order[i] ][ prop ][ prop2 ] );\n\t\t\t}\n\t\t}\n\t}\n\telse {\n\t\tfor ( ; i<ien ; i++ ) {\n\t\t\tout.push( a[ order[i] ][ prop ] );\n\t\t}\n\t}\n\n\treturn out;\n};\n\n\nvar _range = function ( len, start )\n{\n\tvar out = [];\n\tvar end;\n\n\tif ( start === undefined ) {\n\t\tstart = 0;\n\t\tend = len;\n\t}\n\telse {\n\t\tend = start;\n\t\tstart = len;\n\t}\n\n\tfor ( var i=start ; i<end ; i++ ) {\n\t\tout.push( i );\n\t}\n\n\treturn out;\n};\n\n\nvar _removeEmpty = function ( a )\n{\n\tvar out = [];\n\n\tfor ( var i=0, ien=a.length ; i<ien ; i++ ) {\n\t\tif ( a[i] ) { // careful - will remove all falsy values!\n\t\t\tout.push( a[i] );\n\t\t}\n\t}\n\n\treturn out;\n};\n\n\nvar _stripHtml = function ( d ) {\n\treturn d\n\t\t.replace( _re_html, '' ) // Complete tags\n\t\t.replace(/<script/i, ''); // Safety for incomplete script tag\n};\n\n\n/**\n * Determine if all values in the array are unique. This means we can short\n * cut the _unique method at the cost of a single loop. A sorted array is used\n * to easily check the values.\n *\n * @param  {array} src Source array\n * @return {boolean} true if all unique, false otherwise\n * @ignore\n */\nvar _areAllUnique = function ( src ) {\n\tif ( src.length < 2 ) {\n\t\treturn true;\n\t}\n\n\tvar sorted = src.slice().sort();\n\tvar last = sorted[0];\n\n\tfor ( var i=1, ien=sorted.length ; i<ien ; i++ ) {\n\t\tif ( sorted[i] === last ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tlast = sorted[i];\n\t}\n\n\treturn true;\n};\n\n\n/**\n * Find the unique elements in a source array.\n *\n * @param  {array} src Source array\n * @return {array} Array of unique items\n * @ignore\n */\nvar _unique = function ( src )\n{\n\tif ( _areAllUnique( src ) ) {\n\t\treturn src.slice();\n\t}\n\n\t// A faster unique method is to use object keys to identify used values,\n\t// but this doesn't work with arrays or objects, which we must also\n\t// consider. See jsperf.com/compare-array-unique-versions/4 for more\n\t// information.\n\tvar\n\t\tout = [],\n\t\tval,\n\t\ti, ien=src.length,\n\t\tj, k=0;\n\n\tagain: for ( i=0 ; i<ien ; i++ ) {\n\t\tval = src[i];\n\n\t\tfor ( j=0 ; j<k ; j++ ) {\n\t\t\tif ( out[j] === val ) {\n\t\t\t\tcontinue again;\n\t\t\t}\n\t\t}\n\n\t\tout.push( val );\n\t\tk++;\n\t}\n\n\treturn out;\n};\n\n// Surprisingly this is faster than [].concat.apply\n// https://jsperf.com/flatten-an-array-loop-vs-reduce/2\nvar _flatten = function (out, val) {\n\tif (Array.isArray(val)) {\n\t\tfor (var i=0 ; i<val.length ; i++) {\n\t\t\t_flatten(out, val[i]);\n\t\t}\n\t}\n\telse {\n\t\tout.push(val);\n\t}\n  \n\treturn out;\n}\n\nvar _includes = function (search, start) {\n\tif (start === undefined) {\n\t\tstart = 0;\n\t}\n\n\treturn this.indexOf(search, start) !== -1;\t\n};\n\n// Array.isArray polyfill.\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray\nif (! Array.isArray) {\n    Array.isArray = function(arg) {\n        return Object.prototype.toString.call(arg) === '[object Array]';\n    };\n}\n\nif (! Array.prototype.includes) {\n\tArray.prototype.includes = _includes;\n}\n\n// .trim() polyfill\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/trim\nif (!String.prototype.trim) {\n  String.prototype.trim = function () {\n    return this.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n  };\n}\n\nif (! String.prototype.includes) {\n\tString.prototype.includes = _includes;\n}\n\n/**\n * DataTables utility methods\n * \n * This namespace provides helper methods that DataTables uses internally to\n * create a DataTable, but which are not exclusively used only for DataTables.\n * These methods can be used by extension authors to save the duplication of\n * code.\n *\n *  @namespace\n */\nDataTable.util = {\n\t/**\n\t * Throttle the calls to a function. Arguments and context are maintained\n\t * for the throttled function.\n\t *\n\t * @param {function} fn Function to be called\n\t * @param {integer} freq Call frequency in mS\n\t * @return {function} Wrapped function\n\t */\n\tthrottle: function ( fn, freq ) {\n\t\tvar\n\t\t\tfrequency = freq !== undefined ? freq : 200,\n\t\t\tlast,\n\t\t\ttimer;\n\n\t\treturn function () {\n\t\t\tvar\n\t\t\t\tthat = this,\n\t\t\t\tnow  = +new Date(),\n\t\t\t\targs = arguments;\n\n\t\t\tif ( last && now < last + frequency ) {\n\t\t\t\tclearTimeout( timer );\n\n\t\t\t\ttimer = setTimeout( function () {\n\t\t\t\t\tlast = undefined;\n\t\t\t\t\tfn.apply( that, args );\n\t\t\t\t}, frequency );\n\t\t\t}\n\t\t\telse {\n\t\t\t\tlast = now;\n\t\t\t\tfn.apply( that, args );\n\t\t\t}\n\t\t};\n\t},\n\n\n\t/**\n\t * Escape a string such that it can be used in a regular expression\n\t *\n\t *  @param {string} val string to escape\n\t *  @returns {string} escaped string\n\t */\n\tescapeRegex: function ( val ) {\n\t\treturn val.replace( _re_escape_regex, '\\\\$1' );\n\t},\n\n\t/**\n\t * Create a function that will write to a nested object or array\n\t * @param {*} source JSON notation string\n\t * @returns Write function\n\t */\n\tset: function ( source ) {\n\t\tif ( $.isPlainObject( source ) ) {\n\t\t\t/* Unlike get, only the underscore (global) option is used for for\n\t\t\t * setting data since we don't know the type here. This is why an object\n\t\t\t * option is not documented for `mData` (which is read/write), but it is\n\t\t\t * for `mRender` which is read only.\n\t\t\t */\n\t\t\treturn DataTable.util.set( source._ );\n\t\t}\n\t\telse if ( source === null ) {\n\t\t\t// Nothing to do when the data source is null\n\t\t\treturn function () {};\n\t\t}\n\t\telse if ( typeof source === 'function' ) {\n\t\t\treturn function (data, val, meta) {\n\t\t\t\tsource( data, 'set', val, meta );\n\t\t\t};\n\t\t}\n\t\telse if ( typeof source === 'string' && (source.indexOf('.') !== -1 ||\n\t\t\t\t  source.indexOf('[') !== -1 || source.indexOf('(') !== -1) )\n\t\t{\n\t\t\t// Like the get, we need to get data from a nested object\n\t\t\tvar setData = function (data, val, src) {\n\t\t\t\tvar a = _fnSplitObjNotation( src ), b;\n\t\t\t\tvar aLast = a[a.length-1];\n\t\t\t\tvar arrayNotation, funcNotation, o, innerSrc;\n\t\n\t\t\t\tfor ( var i=0, iLen=a.length-1 ; i<iLen ; i++ ) {\n\t\t\t\t\t// Protect against prototype pollution\n\t\t\t\t\tif (a[i] === '__proto__' || a[i] === 'constructor') {\n\t\t\t\t\t\tthrow new Error('Cannot set prototype values');\n\t\t\t\t\t}\n\t\n\t\t\t\t\t// Check if we are dealing with an array notation request\n\t\t\t\t\tarrayNotation = a[i].match(__reArray);\n\t\t\t\t\tfuncNotation = a[i].match(__reFn);\n\t\n\t\t\t\t\tif ( arrayNotation ) {\n\t\t\t\t\t\ta[i] = a[i].replace(__reArray, '');\n\t\t\t\t\t\tdata[ a[i] ] = [];\n\t\n\t\t\t\t\t\t// Get the remainder of the nested object to set so we can recurse\n\t\t\t\t\t\tb = a.slice();\n\t\t\t\t\t\tb.splice( 0, i+1 );\n\t\t\t\t\t\tinnerSrc = b.join('.');\n\t\n\t\t\t\t\t\t// Traverse each entry in the array setting the properties requested\n\t\t\t\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\t\t\t\tfor ( var j=0, jLen=val.length ; j<jLen ; j++ ) {\n\t\t\t\t\t\t\t\to = {};\n\t\t\t\t\t\t\t\tsetData( o, val[j], innerSrc );\n\t\t\t\t\t\t\t\tdata[ a[i] ].push( o );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t// We've been asked to save data to an array, but it\n\t\t\t\t\t\t\t// isn't array data to be saved. Best that can be done\n\t\t\t\t\t\t\t// is to just save the value.\n\t\t\t\t\t\t\tdata[ a[i] ] = val;\n\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\t// The inner call to setData has already traversed through the remainder\n\t\t\t\t\t\t// of the source and has set the data, thus we can exit here\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\telse if ( funcNotation ) {\n\t\t\t\t\t\t// Function call\n\t\t\t\t\t\ta[i] = a[i].replace(__reFn, '');\n\t\t\t\t\t\tdata = data[ a[i] ]( val );\n\t\t\t\t\t}\n\t\n\t\t\t\t\t// If the nested object doesn't currently exist - since we are\n\t\t\t\t\t// trying to set the value - create it\n\t\t\t\t\tif ( data[ a[i] ] === null || data[ a[i] ] === undefined ) {\n\t\t\t\t\t\tdata[ a[i] ] = {};\n\t\t\t\t\t}\n\t\t\t\t\tdata = data[ a[i] ];\n\t\t\t\t}\n\t\n\t\t\t\t// Last item in the input - i.e, the actual set\n\t\t\t\tif ( aLast.match(__reFn ) ) {\n\t\t\t\t\t// Function call\n\t\t\t\t\tdata = data[ aLast.replace(__reFn, '') ]( val );\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\t// If array notation is used, we just want to strip it and use the property name\n\t\t\t\t\t// and assign the value. If it isn't used, then we get the result we want anyway\n\t\t\t\t\tdata[ aLast.replace(__reArray, '') ] = val;\n\t\t\t\t}\n\t\t\t};\n\t\n\t\t\treturn function (data, val) { // meta is also passed in, but not used\n\t\t\t\treturn setData( data, val, source );\n\t\t\t};\n\t\t}\n\t\telse {\n\t\t\t// Array or flat object mapping\n\t\t\treturn function (data, val) { // meta is also passed in, but not used\n\t\t\t\tdata[source] = val;\n\t\t\t};\n\t\t}\n\t},\n\n\t/**\n\t * Create a function that will read nested objects from arrays, based on JSON notation\n\t * @param {*} source JSON notation string\n\t * @returns Value read\n\t */\n\tget: function ( source ) {\n\t\tif ( $.isPlainObject( source ) ) {\n\t\t\t// Build an object of get functions, and wrap them in a single call\n\t\t\tvar o = {};\n\t\t\t$.each( source, function (key, val) {\n\t\t\t\tif ( val ) {\n\t\t\t\t\to[key] = DataTable.util.get( val );\n\t\t\t\t}\n\t\t\t} );\n\t\n\t\t\treturn function (data, type, row, meta) {\n\t\t\t\tvar t = o[type] || o._;\n\t\t\t\treturn t !== undefined ?\n\t\t\t\t\tt(data, type, row, meta) :\n\t\t\t\t\tdata;\n\t\t\t};\n\t\t}\n\t\telse if ( source === null ) {\n\t\t\t// Give an empty string for rendering / sorting etc\n\t\t\treturn function (data) { // type, row and meta also passed, but not used\n\t\t\t\treturn data;\n\t\t\t};\n\t\t}\n\t\telse if ( typeof source === 'function' ) {\n\t\t\treturn function (data, type, row, meta) {\n\t\t\t\treturn source( data, type, row, meta );\n\t\t\t};\n\t\t}\n\t\telse if ( typeof source === 'string' && (source.indexOf('.') !== -1 ||\n\t\t\t\t  source.indexOf('[') !== -1 || source.indexOf('(') !== -1) )\n\t\t{\n\t\t\t/* If there is a . in the source string then the data source is in a\n\t\t\t * nested object so we loop over the data for each level to get the next\n\t\t\t * level down. On each loop we test for undefined, and if found immediately\n\t\t\t * return. This allows entire objects to be missing and sDefaultContent to\n\t\t\t * be used if defined, rather than throwing an error\n\t\t\t */\n\t\t\tvar fetchData = function (data, type, src) {\n\t\t\t\tvar arrayNotation, funcNotation, out, innerSrc;\n\t\n\t\t\t\tif ( src !== \"\" ) {\n\t\t\t\t\tvar a = _fnSplitObjNotation( src );\n\t\n\t\t\t\t\tfor ( var i=0, iLen=a.length ; i<iLen ; i++ ) {\n\t\t\t\t\t\t// Check if we are dealing with special notation\n\t\t\t\t\t\tarrayNotation = a[i].match(__reArray);\n\t\t\t\t\t\tfuncNotation = a[i].match(__reFn);\n\t\n\t\t\t\t\t\tif ( arrayNotation ) {\n\t\t\t\t\t\t\t// Array notation\n\t\t\t\t\t\t\ta[i] = a[i].replace(__reArray, '');\n\t\n\t\t\t\t\t\t\t// Condition allows simply [] to be passed in\n\t\t\t\t\t\t\tif ( a[i] !== \"\" ) {\n\t\t\t\t\t\t\t\tdata = data[ a[i] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tout = [];\n\t\n\t\t\t\t\t\t\t// Get the remainder of the nested object to get\n\t\t\t\t\t\t\ta.splice( 0, i+1 );\n\t\t\t\t\t\t\tinnerSrc = a.join('.');\n\t\n\t\t\t\t\t\t\t// Traverse each entry in the array getting the properties requested\n\t\t\t\t\t\t\tif ( Array.isArray( data ) ) {\n\t\t\t\t\t\t\t\tfor ( var j=0, jLen=data.length ; j<jLen ; j++ ) {\n\t\t\t\t\t\t\t\t\tout.push( fetchData( data[j], type, innerSrc ) );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\t\t// If a string is given in between the array notation indicators, that\n\t\t\t\t\t\t\t// is used to join the strings together, otherwise an array is returned\n\t\t\t\t\t\t\tvar join = arrayNotation[0].substring(1, arrayNotation[0].length-1);\n\t\t\t\t\t\t\tdata = (join===\"\") ? out : out.join(join);\n\t\n\t\t\t\t\t\t\t// The inner call to fetchData has already traversed through the remainder\n\t\t\t\t\t\t\t// of the source requested, so we exit from the loop\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if ( funcNotation ) {\n\t\t\t\t\t\t\t// Function call\n\t\t\t\t\t\t\ta[i] = a[i].replace(__reFn, '');\n\t\t\t\t\t\t\tdata = data[ a[i] ]();\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\tif (data === null || data[ a[i] ] === null) {\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if ( data === undefined || data[ a[i] ] === undefined ) {\n\t\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tdata = data[ a[i] ];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\n\t\t\t\treturn data;\n\t\t\t};\n\t\n\t\t\treturn function (data, type) { // row and meta also passed, but not used\n\t\t\t\treturn fetchData( data, type, source );\n\t\t\t};\n\t\t}\n\t\telse {\n\t\t\t// Array or flat object mapping\n\t\t\treturn function (data, type) { // row and meta also passed, but not used\n\t\t\t\treturn data[source];\n\t\t\t};\n\t\t}\n\t}\n};\n\n\n\n/**\n * Create a mapping object that allows camel case parameters to be looked up\n * for their Hungarian counterparts. The mapping is stored in a private\n * parameter called `_hungarianMap` which can be accessed on the source object.\n *  @param {object} o\n *  @memberof DataTable#oApi\n */\nfunction _fnHungarianMap ( o )\n{\n\tvar\n\t\thungarian = 'a aa ai ao as b fn i m o s ',\n\t\tmatch,\n\t\tnewKey,\n\t\tmap = {};\n\n\t$.each( o, function (key, val) {\n\t\tmatch = key.match(/^([^A-Z]+?)([A-Z])/);\n\n\t\tif ( match && hungarian.indexOf(match[1]+' ') !== -1 )\n\t\t{\n\t\t\tnewKey = key.replace( match[0], match[2].toLowerCase() );\n\t\t\tmap[ newKey ] = key;\n\n\t\t\tif ( match[1] === 'o' )\n\t\t\t{\n\t\t\t\t_fnHungarianMap( o[key] );\n\t\t\t}\n\t\t}\n\t} );\n\n\to._hungarianMap = map;\n}\n\n\n/**\n * Convert from camel case parameters to Hungarian, based on a Hungarian map\n * created by _fnHungarianMap.\n *  @param {object} src The model object which holds all parameters that can be\n *    mapped.\n *  @param {object} user The object to convert from camel case to Hungarian.\n *  @param {boolean} force When set to `true`, properties which already have a\n *    Hungarian value in the `user` object will be overwritten. Otherwise they\n *    won't be.\n *  @memberof DataTable#oApi\n */\nfunction _fnCamelToHungarian ( src, user, force )\n{\n\tif ( ! src._hungarianMap ) {\n\t\t_fnHungarianMap( src );\n\t}\n\n\tvar hungarianKey;\n\n\t$.each( user, function (key, val) {\n\t\thungarianKey = src._hungarianMap[ key ];\n\n\t\tif ( hungarianKey !== undefined && (force || user[hungarianKey] === undefined) )\n\t\t{\n\t\t\t// For objects, we need to buzz down into the object to copy parameters\n\t\t\tif ( hungarianKey.charAt(0) === 'o' )\n\t\t\t{\n\t\t\t\t// Copy the camelCase options over to the hungarian\n\t\t\t\tif ( ! user[ hungarianKey ] ) {\n\t\t\t\t\tuser[ hungarianKey ] = {};\n\t\t\t\t}\n\t\t\t\t$.extend( true, user[hungarianKey], user[key] );\n\n\t\t\t\t_fnCamelToHungarian( src[hungarianKey], user[hungarianKey], force );\n\t\t\t}\n\t\t\telse {\n\t\t\t\tuser[hungarianKey] = user[ key ];\n\t\t\t}\n\t\t}\n\t} );\n}\n\n\n/**\n * Language compatibility - when certain options are given, and others aren't, we\n * need to duplicate the values over, in order to provide backwards compatibility\n * with older language files.\n *  @param {object} oSettings dataTables settings object\n *  @memberof DataTable#oApi\n */\nfunction _fnLanguageCompat( lang )\n{\n\t// Note the use of the Hungarian notation for the parameters in this method as\n\t// this is called after the mapping of camelCase to Hungarian\n\tvar defaults = DataTable.defaults.oLanguage;\n\n\t// Default mapping\n\tvar defaultDecimal = defaults.sDecimal;\n\tif ( defaultDecimal ) {\n\t\t_addNumericSort( defaultDecimal );\n\t}\n\n\tif ( lang ) {\n\t\tvar zeroRecords = lang.sZeroRecords;\n\n\t\t// Backwards compatibility - if there is no sEmptyTable given, then use the same as\n\t\t// sZeroRecords - assuming that is given.\n\t\tif ( ! lang.sEmptyTable && zeroRecords &&\n\t\t\tdefaults.sEmptyTable === \"No data available in table\" )\n\t\t{\n\t\t\t_fnMap( lang, lang, 'sZeroRecords', 'sEmptyTable' );\n\t\t}\n\n\t\t// Likewise with loading records\n\t\tif ( ! lang.sLoadingRecords && zeroRecords &&\n\t\t\tdefaults.sLoadingRecords === \"Loading...\" )\n\t\t{\n\t\t\t_fnMap( lang, lang, 'sZeroRecords', 'sLoadingRecords' );\n\t\t}\n\n\t\t// Old parameter name of the thousands separator mapped onto the new\n\t\tif ( lang.sInfoThousands ) {\n\t\t\tlang.sThousands = lang.sInfoThousands;\n\t\t}\n\n\t\tvar decimal = lang.sDecimal;\n\t\tif ( decimal && defaultDecimal !== decimal ) {\n\t\t\t_addNumericSort( decimal );\n\t\t}\n\t}\n}\n\n\n/**\n * Map one parameter onto another\n *  @param {object} o Object to map\n *  @param {*} knew The new parameter name\n *  @param {*} old The old parameter name\n */\nvar _fnCompatMap = function ( o, knew, old ) {\n\tif ( o[ knew ] !== undefined ) {\n\t\to[ old ] = o[ knew ];\n\t}\n};\n\n\n/**\n * Provide backwards compatibility for the main DT options. Note that the new\n * options are mapped onto the old parameters, so this is an external interface\n * change only.\n *  @param {object} init Object to map\n */\nfunction _fnCompatOpts ( init )\n{\n\t_fnCompatMap( init, 'ordering',      'bSort' );\n\t_fnCompatMap( init, 'orderMulti',    'bSortMulti' );\n\t_fnCompatMap( init, 'orderClasses',  'bSortClasses' );\n\t_fnCompatMap( init, 'orderCellsTop', 'bSortCellsTop' );\n\t_fnCompatMap( init, 'order',         'aaSorting' );\n\t_fnCompatMap( init, 'orderFixed',    'aaSortingFixed' );\n\t_fnCompatMap( init, 'paging',        'bPaginate' );\n\t_fnCompatMap( init, 'pagingType',    'sPaginationType' );\n\t_fnCompatMap( init, 'pageLength',    'iDisplayLength' );\n\t_fnCompatMap( init, 'searching',     'bFilter' );\n\n\t// Boolean initialisation of x-scrolling\n\tif ( typeof init.sScrollX === 'boolean' ) {\n\t\tinit.sScrollX = init.sScrollX ? '100%' : '';\n\t}\n\tif ( typeof init.scrollX === 'boolean' ) {\n\t\tinit.scrollX = init.scrollX ? '100%' : '';\n\t}\n\n\t// Column search objects are in an array, so it needs to be converted\n\t// element by element\n\tvar searchCols = init.aoSearchCols;\n\n\tif ( searchCols ) {\n\t\tfor ( var i=0, ien=searchCols.length ; i<ien ; i++ ) {\n\t\t\tif ( searchCols[i] ) {\n\t\t\t\t_fnCamelToHungarian( DataTable.models.oSearch, searchCols[i] );\n\t\t\t}\n\t\t}\n\t}\n}\n\n\n/**\n * Provide backwards compatibility for column options. Note that the new options\n * are mapped onto the old parameters, so this is an external interface change\n * only.\n *  @param {object} init Object to map\n */\nfunction _fnCompatCols ( init )\n{\n\t_fnCompatMap( init, 'orderable',     'bSortable' );\n\t_fnCompatMap( init, 'orderData',     'aDataSort' );\n\t_fnCompatMap( init, 'orderSequence', 'asSorting' );\n\t_fnCompatMap( init, 'orderDataType', 'sortDataType' );\n\n\t// orderData can be given as an integer\n\tvar dataSort = init.aDataSort;\n\tif ( typeof dataSort === 'number' && ! Array.isArray( dataSort ) ) {\n\t\tinit.aDataSort = [ dataSort ];\n\t}\n}\n\n\n/**\n * Browser feature detection for capabilities, quirks\n *  @param {object} settings dataTables settings object\n *  @memberof DataTable#oApi\n */\nfunction _fnBrowserDetect( settings )\n{\n\t// We don't need to do this every time DataTables is constructed, the values\n\t// calculated are specific to the browser and OS configuration which we\n\t// don't expect to change between initialisations\n\tif ( ! DataTable.__browser ) {\n\t\tvar browser = {};\n\t\tDataTable.__browser = browser;\n\n\t\t// Scrolling feature / quirks detection\n\t\tvar n = $('<div/>')\n\t\t\t.css( {\n\t\t\t\tposition: 'fixed',\n\t\t\t\ttop: 0,\n\t\t\t\tleft: $(window).scrollLeft()*-1, // allow for scrolling\n\t\t\t\theight: 1,\n\t\t\t\twidth: 1,\n\t\t\t\toverflow: 'hidden'\n\t\t\t} )\n\t\t\t.append(\n\t\t\t\t$('<div/>')\n\t\t\t\t\t.css( {\n\t\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\t\ttop: 1,\n\t\t\t\t\t\tleft: 1,\n\t\t\t\t\t\twidth: 100,\n\t\t\t\t\t\toverflow: 'scroll'\n\t\t\t\t\t} )\n\t\t\t\t\t.append(\n\t\t\t\t\t\t$('<div/>')\n\t\t\t\t\t\t\t.css( {\n\t\t\t\t\t\t\t\twidth: '100%',\n\t\t\t\t\t\t\t\theight: 10\n\t\t\t\t\t\t\t} )\n\t\t\t\t\t)\n\t\t\t)\n\t\t\t.appendTo( 'body' );\n\n\t\tvar outer = n.children();\n\t\tvar inner = outer.children();\n\n\t\t// Numbers below, in order, are:\n\t\t// inner.offsetWidth, inner.clientWidth, outer.offsetWidth, outer.clientWidth\n\t\t//\n\t\t// IE6 XP:                           100 100 100  83\n\t\t// IE7 Vista:                        100 100 100  83\n\t\t// IE 8+ Windows:                     83  83 100  83\n\t\t// Evergreen Windows:                 83  83 100  83\n\t\t// Evergreen Mac with scrollbars:     85  85 100  85\n\t\t// Evergreen Mac without scrollbars: 100 100 100 100\n\n\t\t// Get scrollbar width\n\t\tbrowser.barWidth = outer[0].offsetWidth - outer[0].clientWidth;\n\n\t\t// IE6/7 will oversize a width 100% element inside a scrolling element, to\n\t\t// include the width of the scrollbar, while other browsers ensure the inner\n\t\t// element is contained without forcing scrolling\n\t\tbrowser.bScrollOversize = inner[0].offsetWidth === 100 && outer[0].clientWidth !== 100;\n\n\t\t// In rtl text layout, some browsers (most, but not all) will place the\n\t\t// scrollbar on the left, rather than the right.\n\t\tbrowser.bScrollbarLeft = Math.round( inner.offset().left ) !== 1;\n\n\t\t// IE8- don't provide height and width for getBoundingClientRect\n\t\tbrowser.bBounding = n[0].getBoundingClientRect().width ? true : false;\n\n\t\tn.remove();\n\t}\n\n\t$.extend( settings.oBrowser, DataTable.__browser );\n\tsettings.oScroll.iBarWidth = DataTable.__browser.barWidth;\n}\n\n\n/**\n * Array.prototype reduce[Right] method, used for browsers which don't support\n * JS 1.6. Done this way to reduce code size, since we iterate either way\n *  @param {object} settings dataTables settings object\n *  @memberof DataTable#oApi\n */\nfunction _fnReduce ( that, fn, init, start, end, inc )\n{\n\tvar\n\t\ti = start,\n\t\tvalue,\n\t\tisSet = false;\n\n\tif ( init !== undefined ) {\n\t\tvalue = init;\n\t\tisSet = true;\n\t}\n\n\twhile ( i !== end ) {\n\t\tif ( ! that.hasOwnProperty(i) ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tvalue = isSet ?\n\t\t\tfn( value, that[i], i, that ) :\n\t\t\tthat[i];\n\n\t\tisSet = true;\n\t\ti += inc;\n\t}\n\n\treturn value;\n}\n\n/**\n * Add a column to the list used for the table with default values\n *  @param {object} oSettings dataTables settings object\n *  @param {node} nTh The th element for this column\n *  @memberof DataTable#oApi\n */\nfunction _fnAddColumn( oSettings, nTh )\n{\n\t// Add column to aoColumns array\n\tvar oDefaults = DataTable.defaults.column;\n\tvar iCol = oSettings.aoColumns.length;\n\tvar oCol = $.extend( {}, DataTable.models.oColumn, oDefaults, {\n\t\t\"nTh\": nTh ? nTh : document.createElement('th'),\n\t\t\"sTitle\":    oDefaults.sTitle    ? oDefaults.sTitle    : nTh ? nTh.innerHTML : '',\n\t\t\"aDataSort\": oDefaults.aDataSort ? oDefaults.aDataSort : [iCol],\n\t\t\"mData\": oDefaults.mData ? oDefaults.mData : iCol,\n\t\tidx: iCol\n\t} );\n\toSettings.aoColumns.push( oCol );\n\n\t// Add search object for column specific search. Note that the `searchCols[ iCol ]`\n\t// passed into extend can be undefined. This allows the user to give a default\n\t// with only some of the parameters defined, and also not give a default\n\tvar searchCols = oSettings.aoPreSearchCols;\n\tsearchCols[ iCol ] = $.extend( {}, DataTable.models.oSearch, searchCols[ iCol ] );\n\n\t// Use the default column options function to initialise classes etc\n\t_fnColumnOptions( oSettings, iCol, $(nTh).data() );\n}\n\n\n/**\n * Apply options for a column\n *  @param {object} oSettings dataTables settings object\n *  @param {int} iCol column index to consider\n *  @param {object} oOptions object with sType, bVisible and bSearchable etc\n *  @memberof DataTable#oApi\n */\nfunction _fnColumnOptions( oSettings, iCol, oOptions )\n{\n\tvar oCol = oSettings.aoColumns[ iCol ];\n\tvar oClasses = oSettings.oClasses;\n\tvar th = $(oCol.nTh);\n\n\t// Try to get width information from the DOM. We can't get it from CSS\n\t// as we'd need to parse the CSS stylesheet. `width` option can override\n\tif ( ! oCol.sWidthOrig ) {\n\t\t// Width attribute\n\t\toCol.sWidthOrig = th.attr('width') || null;\n\n\t\t// Style attribute\n\t\tvar t = (th.attr('style') || '').match(/width:\\s*(\\d+[pxem%]+)/);\n\t\tif ( t ) {\n\t\t\toCol.sWidthOrig = t[1];\n\t\t}\n\t}\n\n\t/* User specified column options */\n\tif ( oOptions !== undefined && oOptions !== null )\n\t{\n\t\t// Backwards compatibility\n\t\t_fnCompatCols( oOptions );\n\n\t\t// Map camel case parameters to their Hungarian counterparts\n\t\t_fnCamelToHungarian( DataTable.defaults.column, oOptions, true );\n\n\t\t/* Backwards compatibility for mDataProp */\n\t\tif ( oOptions.mDataProp !== undefined && !oOptions.mData )\n\t\t{\n\t\t\toOptions.mData = oOptions.mDataProp;\n\t\t}\n\n\t\tif ( oOptions.sType )\n\t\t{\n\t\t\toCol._sManualType = oOptions.sType;\n\t\t}\n\n\t\t// `class` is a reserved word in Javascript, so we need to provide\n\t\t// the ability to use a valid name for the camel case input\n\t\tif ( oOptions.className && ! oOptions.sClass )\n\t\t{\n\t\t\toOptions.sClass = oOptions.className;\n\t\t}\n\t\tif ( oOptions.sClass ) {\n\t\t\tth.addClass( oOptions.sClass );\n\t\t}\n\n\t\tvar origClass = oCol.sClass;\n\n\t\t$.extend( oCol, oOptions );\n\t\t_fnMap( oCol, oOptions, \"sWidth\", \"sWidthOrig\" );\n\n\t\t// Merge class from previously defined classes with this one, rather than just\n\t\t// overwriting it in the extend above\n\t\tif (origClass !== oCol.sClass) {\n\t\t\toCol.sClass = origClass + ' ' + oCol.sClass;\n\t\t}\n\n\t\t/* iDataSort to be applied (backwards compatibility), but aDataSort will take\n\t\t * priority if defined\n\t\t */\n\t\tif ( oOptions.iDataSort !== undefined )\n\t\t{\n\t\t\toCol.aDataSort = [ oOptions.iDataSort ];\n\t\t}\n\t\t_fnMap( oCol, oOptions, \"aDataSort\" );\n\t}\n\n\t/* Cache the data get and set functions for speed */\n\tvar mDataSrc = oCol.mData;\n\tvar mData = _fnGetObjectDataFn( mDataSrc );\n\tvar mRender = oCol.mRender ? _fnGetObjectDataFn( oCol.mRender ) : null;\n\n\tvar attrTest = function( src ) {\n\t\treturn typeof src === 'string' && src.indexOf('@') !== -1;\n\t};\n\toCol._bAttrSrc = $.isPlainObject( mDataSrc ) && (\n\t\tattrTest(mDataSrc.sort) || attrTest(mDataSrc.type) || attrTest(mDataSrc.filter)\n\t);\n\toCol._setter = null;\n\n\toCol.fnGetData = function (rowData, type, meta) {\n\t\tvar innerData = mData( rowData, type, undefined, meta );\n\n\t\treturn mRender && type ?\n\t\t\tmRender( innerData, type, rowData, meta ) :\n\t\t\tinnerData;\n\t};\n\toCol.fnSetData = function ( rowData, val, meta ) {\n\t\treturn _fnSetObjectDataFn( mDataSrc )( rowData, val, meta );\n\t};\n\n\t// Indicate if DataTables should read DOM data as an object or array\n\t// Used in _fnGetRowElements\n\tif ( typeof mDataSrc !== 'number' && ! oCol._isArrayHost ) {\n\t\toSettings._rowReadObject = true;\n\t}\n\n\t/* Feature sorting overrides column specific when off */\n\tif ( !oSettings.oFeatures.bSort )\n\t{\n\t\toCol.bSortable = false;\n\t\tth.addClass( oClasses.sSortableNone ); // Have to add class here as order event isn't called\n\t}\n\n\t/* Check that the class assignment is correct for sorting */\n\tvar bAsc = $.inArray('asc', oCol.asSorting) !== -1;\n\tvar bDesc = $.inArray('desc', oCol.asSorting) !== -1;\n\tif ( !oCol.bSortable || (!bAsc && !bDesc) )\n\t{\n\t\toCol.sSortingClass = oClasses.sSortableNone;\n\t\toCol.sSortingClassJUI = \"\";\n\t}\n\telse if ( bAsc && !bDesc )\n\t{\n\t\toCol.sSortingClass = oClasses.sSortableAsc;\n\t\toCol.sSortingClassJUI = oClasses.sSortJUIAscAllowed;\n\t}\n\telse if ( !bAsc && bDesc )\n\t{\n\t\toCol.sSortingClass = oClasses.sSortableDesc;\n\t\toCol.sSortingClassJUI = oClasses.sSortJUIDescAllowed;\n\t}\n\telse\n\t{\n\t\toCol.sSortingClass = oClasses.sSortable;\n\t\toCol.sSortingClassJUI = oClasses.sSortJUI;\n\t}\n}\n\n\n/**\n * Adjust the table column widths for new data. Note: you would probably want to\n * do a redraw after calling this function!\n *  @param {object} settings dataTables settings object\n *  @memberof DataTable#oApi\n */\nfunction _fnAdjustColumnSizing ( settings )\n{\n\t/* Not interested in doing column width calculation if auto-width is disabled */\n\tif ( settings.oFeatures.bAutoWidth !== false )\n\t{\n\t\tvar columns = settings.aoColumns;\n\n\t\t_fnCalculateColumnWidths( settings );\n\t\tfor ( var i=0 , iLen=columns.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tcolumns[i].nTh.style.width = columns[i].sWidth;\n\t\t}\n\t}\n\n\tvar scroll = settings.oScroll;\n\tif ( scroll.sY !== '' || scroll.sX !== '')\n\t{\n\t\t_fnScrollDraw( settings );\n\t}\n\n\t_fnCallbackFire( settings, null, 'column-sizing', [settings] );\n}\n\n\n/**\n * Convert the index of a visible column to the index in the data array (take account\n * of hidden columns)\n *  @param {object} oSettings dataTables settings object\n *  @param {int} iMatch Visible column index to lookup\n *  @returns {int} i the data index\n *  @memberof DataTable#oApi\n */\nfunction _fnVisibleToColumnIndex( oSettings, iMatch )\n{\n\tvar aiVis = _fnGetColumns( oSettings, 'bVisible' );\n\n\treturn typeof aiVis[iMatch] === 'number' ?\n\t\taiVis[iMatch] :\n\t\tnull;\n}\n\n\n/**\n * Convert the index of an index in the data array and convert it to the visible\n *   column index (take account of hidden columns)\n *  @param {int} iMatch Column index to lookup\n *  @param {object} oSettings dataTables settings object\n *  @returns {int} i the data index\n *  @memberof DataTable#oApi\n */\nfunction _fnColumnIndexToVisible( oSettings, iMatch )\n{\n\tvar aiVis = _fnGetColumns( oSettings, 'bVisible' );\n\tvar iPos = $.inArray( iMatch, aiVis );\n\n\treturn iPos !== -1 ? iPos : null;\n}\n\n\n/**\n * Get the number of visible columns\n *  @param {object} oSettings dataTables settings object\n *  @returns {int} i the number of visible columns\n *  @memberof DataTable#oApi\n */\nfunction _fnVisbleColumns( oSettings )\n{\n\tvar vis = 0;\n\n\t// No reduce in IE8, use a loop for now\n\t$.each( oSettings.aoColumns, function ( i, col ) {\n\t\tif ( col.bVisible && $(col.nTh).css('display') !== 'none' ) {\n\t\t\tvis++;\n\t\t}\n\t} );\n\n\treturn vis;\n}\n\n\n/**\n * Get an array of column indexes that match a given property\n *  @param {object} oSettings dataTables settings object\n *  @param {string} sParam Parameter in aoColumns to look for - typically\n *    bVisible or bSearchable\n *  @returns {array} Array of indexes with matched properties\n *  @memberof DataTable#oApi\n */\nfunction _fnGetColumns( oSettings, sParam )\n{\n\tvar a = [];\n\n\t$.map( oSettings.aoColumns, function(val, i) {\n\t\tif ( val[sParam] ) {\n\t\t\ta.push( i );\n\t\t}\n\t} );\n\n\treturn a;\n}\n\n\n/**\n * Calculate the 'type' of a column\n *  @param {object} settings dataTables settings object\n *  @memberof DataTable#oApi\n */\nfunction _fnColumnTypes ( settings )\n{\n\tvar columns = settings.aoColumns;\n\tvar data = settings.aoData;\n\tvar types = DataTable.ext.type.detect;\n\tvar i, ien, j, jen, k, ken;\n\tvar col, cell, detectedType, cache;\n\n\t// For each column, spin over the \n\tfor ( i=0, ien=columns.length ; i<ien ; i++ ) {\n\t\tcol = columns[i];\n\t\tcache = [];\n\n\t\tif ( ! col.sType && col._sManualType ) {\n\t\t\tcol.sType = col._sManualType;\n\t\t}\n\t\telse if ( ! col.sType ) {\n\t\t\tfor ( j=0, jen=types.length ; j<jen ; j++ ) {\n\t\t\t\tfor ( k=0, ken=data.length ; k<ken ; k++ ) {\n\t\t\t\t\t// Use a cache array so we only need to get the type data\n\t\t\t\t\t// from the formatter once (when using multiple detectors)\n\t\t\t\t\tif ( cache[k] === undefined ) {\n\t\t\t\t\t\tcache[k] = _fnGetCellData( settings, k, i, 'type' );\n\t\t\t\t\t}\n\n\t\t\t\t\tdetectedType = types[j]( cache[k], settings );\n\n\t\t\t\t\t// If null, then this type can't apply to this column, so\n\t\t\t\t\t// rather than testing all cells, break out. There is an\n\t\t\t\t\t// exception for the last type which is `html`. We need to\n\t\t\t\t\t// scan all rows since it is possible to mix string and HTML\n\t\t\t\t\t// types\n\t\t\t\t\tif ( ! detectedType && j !== types.length-1 ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only a single match is needed for html type since it is\n\t\t\t\t\t// bottom of the pile and very similar to string - but it\n\t\t\t\t\t// must not be empty\n\t\t\t\t\tif ( detectedType === 'html' && ! _empty(cache[k]) ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Type is valid for all data points in the column - use this\n\t\t\t\t// type\n\t\t\t\tif ( detectedType ) {\n\t\t\t\t\tcol.sType = detectedType;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Fall back - if no type was detected, always use string\n\t\t\tif ( ! col.sType ) {\n\t\t\t\tcol.sType = 'string';\n\t\t\t}\n\t\t}\n\t}\n}\n\n\n/**\n * Take the column definitions and static columns arrays and calculate how\n * they relate to column indexes. The callback function will then apply the\n * definition found for a column to a suitable configuration object.\n *  @param {object} oSettings dataTables settings object\n *  @param {array} aoColDefs The aoColumnDefs array that is to be applied\n *  @param {array} aoCols The aoColumns array that defines columns individually\n *  @param {function} fn Callback function - takes two parameters, the calculated\n *    column index and the definition for that column.\n *  @memberof DataTable#oApi\n */\nfunction _fnApplyColumnDefs( oSettings, aoColDefs, aoCols, fn )\n{\n\tvar i, iLen, j, jLen, k, kLen, def;\n\tvar columns = oSettings.aoColumns;\n\n\t// Column definitions with aTargets\n\tif ( aoColDefs )\n\t{\n\t\t/* Loop over the definitions array - loop in reverse so first instance has priority */\n\t\tfor ( i=aoColDefs.length-1 ; i>=0 ; i-- )\n\t\t{\n\t\t\tdef = aoColDefs[i];\n\n\t\t\t/* Each definition can target multiple columns, as it is an array */\n\t\t\tvar aTargets = def.target !== undefined\n\t\t\t\t? def.target\n\t\t\t\t: def.targets !== undefined\n\t\t\t\t\t? def.targets\n\t\t\t\t\t: def.aTargets;\n\n\t\t\tif ( ! Array.isArray( aTargets ) )\n\t\t\t{\n\t\t\t\taTargets = [ aTargets ];\n\t\t\t}\n\n\t\t\tfor ( j=0, jLen=aTargets.length ; j<jLen ; j++ )\n\t\t\t{\n\t\t\t\tif ( typeof aTargets[j] === 'number' && aTargets[j] >= 0 )\n\t\t\t\t{\n\t\t\t\t\t/* Add columns that we don't yet know about */\n\t\t\t\t\twhile( columns.length <= aTargets[j] )\n\t\t\t\t\t{\n\t\t\t\t\t\t_fnAddColumn( oSettings );\n\t\t\t\t\t}\n\n\t\t\t\t\t/* Integer, basic index */\n\t\t\t\t\tfn( aTargets[j], def );\n\t\t\t\t}\n\t\t\t\telse if ( typeof aTargets[j] === 'number' && aTargets[j] < 0 )\n\t\t\t\t{\n\t\t\t\t\t/* Negative integer, right to left column counting */\n\t\t\t\t\tfn( columns.length+aTargets[j], def );\n\t\t\t\t}\n\t\t\t\telse if ( typeof aTargets[j] === 'string' )\n\t\t\t\t{\n\t\t\t\t\t/* Class name matching on TH element */\n\t\t\t\t\tfor ( k=0, kLen=columns.length ; k<kLen ; k++ )\n\t\t\t\t\t{\n\t\t\t\t\t\tif ( aTargets[j] == \"_all\" ||\n\t\t\t\t\t\t     $(columns[k].nTh).hasClass( aTargets[j] ) )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfn( k, def );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Statically defined columns array\n\tif ( aoCols )\n\t{\n\t\tfor ( i=0, iLen=aoCols.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tfn( i, aoCols[i] );\n\t\t}\n\t}\n}\n\n/**\n * Add a data array to the table, creating DOM node etc. This is the parallel to\n * _fnGatherData, but for adding rows from a Javascript source, rather than a\n * DOM source.\n *  @param {object} oSettings dataTables settings object\n *  @param {array} aData data array to be added\n *  @param {node} [nTr] TR element to add to the table - optional. If not given,\n *    DataTables will create a row automatically\n *  @param {array} [anTds] Array of TD|TH elements for the row - must be given\n *    if nTr is.\n *  @returns {int} >=0 if successful (index of new aoData entry), -1 if failed\n *  @memberof DataTable#oApi\n */\nfunction _fnAddData ( oSettings, aDataIn, nTr, anTds )\n{\n\t/* Create the object for storing information about this new row */\n\tvar iRow = oSettings.aoData.length;\n\tvar oData = $.extend( true, {}, DataTable.models.oRow, {\n\t\tsrc: nTr ? 'dom' : 'data',\n\t\tidx: iRow\n\t} );\n\n\toData._aData = aDataIn;\n\toSettings.aoData.push( oData );\n\n\t/* Create the cells */\n\tvar nTd, sThisType;\n\tvar columns = oSettings.aoColumns;\n\n\t// Invalidate the column types as the new data needs to be revalidated\n\tfor ( var i=0, iLen=columns.length ; i<iLen ; i++ )\n\t{\n\t\tcolumns[i].sType = null;\n\t}\n\n\t/* Add to the display array */\n\toSettings.aiDisplayMaster.push( iRow );\n\n\tvar id = oSettings.rowIdFn( aDataIn );\n\tif ( id !== undefined ) {\n\t\toSettings.aIds[ id ] = oData;\n\t}\n\n\t/* Create the DOM information, or register it if already present */\n\tif ( nTr || ! oSettings.oFeatures.bDeferRender )\n\t{\n\t\t_fnCreateTr( oSettings, iRow, nTr, anTds );\n\t}\n\n\treturn iRow;\n}\n\n\n/**\n * Add one or more TR elements to the table. Generally we'd expect to\n * use this for reading data from a DOM sourced table, but it could be\n * used for an TR element. Note that if a TR is given, it is used (i.e.\n * it is not cloned).\n *  @param {object} settings dataTables settings object\n *  @param {array|node|jQuery} trs The TR element(s) to add to the table\n *  @returns {array} Array of indexes for the added rows\n *  @memberof DataTable#oApi\n */\nfunction _fnAddTr( settings, trs )\n{\n\tvar row;\n\n\t// Allow an individual node to be passed in\n\tif ( ! (trs instanceof $) ) {\n\t\ttrs = $(trs);\n\t}\n\n\treturn trs.map( function (i, el) {\n\t\trow = _fnGetRowElements( settings, el );\n\t\treturn _fnAddData( settings, row.data, el, row.cells );\n\t} );\n}\n\n\n/**\n * Take a TR element and convert it to an index in aoData\n *  @param {object} oSettings dataTables settings object\n *  @param {node} n the TR element to find\n *  @returns {int} index if the node is found, null if not\n *  @memberof DataTable#oApi\n */\nfunction _fnNodeToDataIndex( oSettings, n )\n{\n\treturn (n._DT_RowIndex!==undefined) ? n._DT_RowIndex : null;\n}\n\n\n/**\n * Take a TD element and convert it into a column data index (not the visible index)\n *  @param {object} oSettings dataTables settings object\n *  @param {int} iRow The row number the TD/TH can be found in\n *  @param {node} n The TD/TH element to find\n *  @returns {int} index if the node is found, -1 if not\n *  @memberof DataTable#oApi\n */\nfunction _fnNodeToColumnIndex( oSettings, iRow, n )\n{\n\treturn $.inArray( n, oSettings.aoData[ iRow ].anCells );\n}\n\n\n/**\n * Get the data for a given cell from the internal cache, taking into account data mapping\n *  @param {object} settings dataTables settings object\n *  @param {int} rowIdx aoData row id\n *  @param {int} colIdx Column index\n *  @param {string} type data get type ('display', 'type' 'filter|search' 'sort|order')\n *  @returns {*} Cell data\n *  @memberof DataTable#oApi\n */\nfunction _fnGetCellData( settings, rowIdx, colIdx, type )\n{\n\tif (type === 'search') {\n\t\ttype = 'filter';\n\t}\n\telse if (type === 'order') {\n\t\ttype = 'sort';\n\t}\n\n\tvar draw           = settings.iDraw;\n\tvar col            = settings.aoColumns[colIdx];\n\tvar rowData        = settings.aoData[rowIdx]._aData;\n\tvar defaultContent = col.sDefaultContent;\n\tvar cellData       = col.fnGetData( rowData, type, {\n\t\tsettings: settings,\n\t\trow:      rowIdx,\n\t\tcol:      colIdx\n\t} );\n\n\tif ( cellData === undefined ) {\n\t\tif ( settings.iDrawError != draw && defaultContent === null ) {\n\t\t\t_fnLog( settings, 0, \"Requested unknown parameter \"+\n\t\t\t\t(typeof col.mData=='function' ? '{function}' : \"'\"+col.mData+\"'\")+\n\t\t\t\t\" for row \"+rowIdx+\", column \"+colIdx, 4 );\n\t\t\tsettings.iDrawError = draw;\n\t\t}\n\t\treturn defaultContent;\n\t}\n\n\t// When the data source is null and a specific data type is requested (i.e.\n\t// not the original data), we can use default column data\n\tif ( (cellData === rowData || cellData === null) && defaultContent !== null && type !== undefined ) {\n\t\tcellData = defaultContent;\n\t}\n\telse if ( typeof cellData === 'function' ) {\n\t\t// If the data source is a function, then we run it and use the return,\n\t\t// executing in the scope of the data object (for instances)\n\t\treturn cellData.call( rowData );\n\t}\n\n\tif ( cellData === null && type === 'display' ) {\n\t\treturn '';\n\t}\n\n\tif ( type === 'filter' ) {\n\t\tvar fomatters = DataTable.ext.type.search;\n\n\t\tif ( fomatters[ col.sType ] ) {\n\t\t\tcellData = fomatters[ col.sType ]( cellData );\n\t\t}\n\t}\n\n\treturn cellData;\n}\n\n\n/**\n * Set the value for a specific cell, into the internal data cache\n *  @param {object} settings dataTables settings object\n *  @param {int} rowIdx aoData row id\n *  @param {int} colIdx Column index\n *  @param {*} val Value to set\n *  @memberof DataTable#oApi\n */\nfunction _fnSetCellData( settings, rowIdx, colIdx, val )\n{\n\tvar col     = settings.aoColumns[colIdx];\n\tvar rowData = settings.aoData[rowIdx]._aData;\n\n\tcol.fnSetData( rowData, val, {\n\t\tsettings: settings,\n\t\trow:      rowIdx,\n\t\tcol:      colIdx\n\t}  );\n}\n\n\n// Private variable that is used to match action syntax in the data property object\nvar __reArray = /\\[.*?\\]$/;\nvar __reFn = /\\(\\)$/;\n\n/**\n * Split string on periods, taking into account escaped periods\n * @param  {string} str String to split\n * @return {array} Split string\n */\nfunction _fnSplitObjNotation( str )\n{\n\treturn $.map( str.match(/(\\\\.|[^\\.])+/g) || [''], function ( s ) {\n\t\treturn s.replace(/\\\\\\./g, '.');\n\t} );\n}\n\n\n/**\n * Return a function that can be used to get data from a source object, taking\n * into account the ability to use nested objects as a source\n *  @param {string|int|function} mSource The data source for the object\n *  @returns {function} Data get function\n *  @memberof DataTable#oApi\n */\nvar _fnGetObjectDataFn = DataTable.util.get;\n\n\n/**\n * Return a function that can be used to set data from a source object, taking\n * into account the ability to use nested objects as a source\n *  @param {string|int|function} mSource The data source for the object\n *  @returns {function} Data set function\n *  @memberof DataTable#oApi\n */\nvar _fnSetObjectDataFn = DataTable.util.set;\n\n\n/**\n * Return an array with the full table data\n *  @param {object} oSettings dataTables settings object\n *  @returns array {array} aData Master data array\n *  @memberof DataTable#oApi\n */\nfunction _fnGetDataMaster ( settings )\n{\n\treturn _pluck( settings.aoData, '_aData' );\n}\n\n\n/**\n * Nuke the table\n *  @param {object} oSettings dataTables settings object\n *  @memberof DataTable#oApi\n */\nfunction _fnClearTable( settings )\n{\n\tsettings.aoData.length = 0;\n\tsettings.aiDisplayMaster.length = 0;\n\tsettings.aiDisplay.length = 0;\n\tsettings.aIds = {};\n}\n\n\n /**\n * Take an array of integers (index array) and remove a target integer (value - not\n * the key!)\n *  @param {array} a Index array to target\n *  @param {int} iTarget value to find\n *  @memberof DataTable#oApi\n */\nfunction _fnDeleteIndex( a, iTarget, splice )\n{\n\tvar iTargetIndex = -1;\n\n\tfor ( var i=0, iLen=a.length ; i<iLen ; i++ )\n\t{\n\t\tif ( a[i] == iTarget )\n\t\t{\n\t\t\tiTargetIndex = i;\n\t\t}\n\t\telse if ( a[i] > iTarget )\n\t\t{\n\t\t\ta[i]--;\n\t\t}\n\t}\n\n\tif ( iTargetIndex != -1 && splice === undefined )\n\t{\n\t\ta.splice( iTargetIndex, 1 );\n\t}\n}\n\n\n/**\n * Mark cached data as invalid such that a re-read of the data will occur when\n * the cached data is next requested. Also update from the data source object.\n *\n * @param {object} settings DataTables settings object\n * @param {int}    rowIdx   Row index to invalidate\n * @param {string} [src]    Source to invalidate from: undefined, 'auto', 'dom'\n *     or 'data'\n * @param {int}    [colIdx] Column index to invalidate. If undefined the whole\n *     row will be invalidated\n * @memberof DataTable#oApi\n *\n * @todo For the modularisation of v1.11 this will need to become a callback, so\n *   the sort and filter methods can subscribe to it. That will required\n *   initialisation options for sorting, which is why it is not already baked in\n */\nfunction _fnInvalidate( settings, rowIdx, src, colIdx )\n{\n\tvar row = settings.aoData[ rowIdx ];\n\tvar i, ien;\n\tvar cellWrite = function ( cell, col ) {\n\t\t// This is very frustrating, but in IE if you just write directly\n\t\t// to innerHTML, and elements that are overwritten are GC'ed,\n\t\t// even if there is a reference to them elsewhere\n\t\twhile ( cell.childNodes.length ) {\n\t\t\tcell.removeChild( cell.firstChild );\n\t\t}\n\n\t\tcell.innerHTML = _fnGetCellData( settings, rowIdx, col, 'display' );\n\t};\n\n\t// Are we reading last data from DOM or the data object?\n\tif ( src === 'dom' || ((! src || src === 'auto') && row.src === 'dom') ) {\n\t\t// Read the data from the DOM\n\t\trow._aData = _fnGetRowElements(\n\t\t\t\tsettings, row, colIdx, colIdx === undefined ? undefined : row._aData\n\t\t\t)\n\t\t\t.data;\n\t}\n\telse {\n\t\t// Reading from data object, update the DOM\n\t\tvar cells = row.anCells;\n\n\t\tif ( cells ) {\n\t\t\tif ( colIdx !== undefined ) {\n\t\t\t\tcellWrite( cells[colIdx], colIdx );\n\t\t\t}\n\t\t\telse {\n\t\t\t\tfor ( i=0, ien=cells.length ; i<ien ; i++ ) {\n\t\t\t\t\tcellWrite( cells[i], i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// For both row and cell invalidation, the cached data for sorting and\n\t// filtering is nulled out\n\trow._aSortData = null;\n\trow._aFilterData = null;\n\n\t// Invalidate the type for a specific column (if given) or all columns since\n\t// the data might have changed\n\tvar cols = settings.aoColumns;\n\tif ( colIdx !== undefined ) {\n\t\tcols[ colIdx ].sType = null;\n\t}\n\telse {\n\t\tfor ( i=0, ien=cols.length ; i<ien ; i++ ) {\n\t\t\tcols[i].sType = null;\n\t\t}\n\n\t\t// Update DataTables special `DT_*` attributes for the row\n\t\t_fnRowAttributes( settings, row );\n\t}\n}\n\n\n/**\n * Build a data source object from an HTML row, reading the contents of the\n * cells that are in the row.\n *\n * @param {object} settings DataTables settings object\n * @param {node|object} TR element from which to read data or existing row\n *   object from which to re-read the data from the cells\n * @param {int} [colIdx] Optional column index\n * @param {array|object} [d] Data source object. If `colIdx` is given then this\n *   parameter should also be given and will be used to write the data into.\n *   Only the column in question will be written\n * @returns {object} Object with two parameters: `data` the data read, in\n *   document order, and `cells` and array of nodes (they can be useful to the\n *   caller, so rather than needing a second traversal to get them, just return\n *   them from here).\n * @memberof DataTable#oApi\n */\nfunction _fnGetRowElements( settings, row, colIdx, d )\n{\n\tvar\n\t\ttds = [],\n\t\ttd = row.firstChild,\n\t\tname, col, o, i=0, contents,\n\t\tcolumns = settings.aoColumns,\n\t\tobjectRead = settings._rowReadObject;\n\n\t// Allow the data object to be passed in, or construct\n\td = d !== undefined ?\n\t\td :\n\t\tobjectRead ?\n\t\t\t{} :\n\t\t\t[];\n\n\tvar attr = function ( str, td  ) {\n\t\tif ( typeof str === 'string' ) {\n\t\t\tvar idx = str.indexOf('@');\n\n\t\t\tif ( idx !== -1 ) {\n\t\t\t\tvar attr = str.substring( idx+1 );\n\t\t\t\tvar setter = _fnSetObjectDataFn( str );\n\t\t\t\tsetter( d, td.getAttribute( attr ) );\n\t\t\t}\n\t\t}\n\t};\n\n\t// Read data from a cell and store into the data object\n\tvar cellProcess = function ( cell ) {\n\t\tif ( colIdx === undefined || colIdx === i ) {\n\t\t\tcol = columns[i];\n\t\t\tcontents = (cell.innerHTML).trim();\n\n\t\t\tif ( col && col._bAttrSrc ) {\n\t\t\t\tvar setter = _fnSetObjectDataFn( col.mData._ );\n\t\t\t\tsetter( d, contents );\n\n\t\t\t\tattr( col.mData.sort, cell );\n\t\t\t\tattr( col.mData.type, cell );\n\t\t\t\tattr( col.mData.filter, cell );\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// Depending on the `data` option for the columns the data can\n\t\t\t\t// be read to either an object or an array.\n\t\t\t\tif ( objectRead ) {\n\t\t\t\t\tif ( ! col._setter ) {\n\t\t\t\t\t\t// Cache the setter function\n\t\t\t\t\t\tcol._setter = _fnSetObjectDataFn( col.mData );\n\t\t\t\t\t}\n\t\t\t\t\tcol._setter( d, contents );\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\td[i] = contents;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\ti++;\n\t};\n\n\tif ( td ) {\n\t\t// `tr` element was passed in\n\t\twhile ( td ) {\n\t\t\tname = td.nodeName.toUpperCase();\n\n\t\t\tif ( name == \"TD\" || name == \"TH\" ) {\n\t\t\t\tcellProcess( td );\n\t\t\t\ttds.push( td );\n\t\t\t}\n\n\t\t\ttd = td.nextSibling;\n\t\t}\n\t}\n\telse {\n\t\t// Existing row object passed in\n\t\ttds = row.anCells;\n\n\t\tfor ( var j=0, jen=tds.length ; j<jen ; j++ ) {\n\t\t\tcellProcess( tds[j] );\n\t\t}\n\t}\n\n\t// Read the ID from the DOM if present\n\tvar rowNode = row.firstChild ? row : row.nTr;\n\n\tif ( rowNode ) {\n\t\tvar id = rowNode.getAttribute( 'id' );\n\n\t\tif ( id ) {\n\t\t\t_fnSetObjectDataFn( settings.rowId )( d, id );\n\t\t}\n\t}\n\n\treturn {\n\t\tdata: d,\n\t\tcells: tds\n\t};\n}\n/**\n * Create a new TR element (and it's TD children) for a row\n *  @param {object} oSettings dataTables settings object\n *  @param {int} iRow Row to consider\n *  @param {node} [nTrIn] TR element to add to the table - optional. If not given,\n *    DataTables will create a row automatically\n *  @param {array} [anTds] Array of TD|TH elements for the row - must be given\n *    if nTr is.\n *  @memberof DataTable#oApi\n */\nfunction _fnCreateTr ( oSettings, iRow, nTrIn, anTds )\n{\n\tvar\n\t\trow = oSettings.aoData[iRow],\n\t\trowData = row._aData,\n\t\tcells = [],\n\t\tnTr, nTd, oCol,\n\t\ti, iLen, create;\n\n\tif ( row.nTr === null )\n\t{\n\t\tnTr = nTrIn || document.createElement('tr');\n\n\t\trow.nTr = nTr;\n\t\trow.anCells = cells;\n\n\t\t/* Use a private property on the node to allow reserve mapping from the node\n\t\t * to the aoData array for fast look up\n\t\t */\n\t\tnTr._DT_RowIndex = iRow;\n\n\t\t/* Special parameters can be given by the data source to be used on the row */\n\t\t_fnRowAttributes( oSettings, row );\n\n\t\t/* Process each column */\n\t\tfor ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t\t{\n\t\t\toCol = oSettings.aoColumns[i];\n\t\t\tcreate = nTrIn ? false : true;\n\n\t\t\tnTd = create ? document.createElement( oCol.sCellType ) : anTds[i];\n\n\t\t\tif (! nTd) {\n\t\t\t\t_fnLog( oSettings, 0, 'Incorrect column count', 18 );\n\t\t\t}\n\n\t\t\tnTd._DT_CellIndex = {\n\t\t\t\trow: iRow,\n\t\t\t\tcolumn: i\n\t\t\t};\n\t\t\t\n\t\t\tcells.push( nTd );\n\n\t\t\t// Need to create the HTML if new, or if a rendering function is defined\n\t\t\tif ( create || ((oCol.mRender || oCol.mData !== i) &&\n\t\t\t\t (!$.isPlainObject(oCol.mData) || oCol.mData._ !== i+'.display')\n\t\t\t)) {\n\t\t\t\tnTd.innerHTML = _fnGetCellData( oSettings, iRow, i, 'display' );\n\t\t\t}\n\n\t\t\t/* Add user defined class */\n\t\t\tif ( oCol.sClass )\n\t\t\t{\n\t\t\t\tnTd.className += ' '+oCol.sClass;\n\t\t\t}\n\n\t\t\t// Visibility - add or remove as required\n\t\t\tif ( oCol.bVisible && ! nTrIn )\n\t\t\t{\n\t\t\t\tnTr.appendChild( nTd );\n\t\t\t}\n\t\t\telse if ( ! oCol.bVisible && nTrIn )\n\t\t\t{\n\t\t\t\tnTd.parentNode.removeChild( nTd );\n\t\t\t}\n\n\t\t\tif ( oCol.fnCreatedCell )\n\t\t\t{\n\t\t\t\toCol.fnCreatedCell.call( oSettings.oInstance,\n\t\t\t\t\tnTd, _fnGetCellData( oSettings, iRow, i ), rowData, iRow, i\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\t_fnCallbackFire( oSettings, 'aoRowCreatedCallback', null, [nTr, rowData, iRow, cells] );\n\t}\n}\n\n\n/**\n * Add attributes to a row based on the special `DT_*` parameters in a data\n * source object.\n *  @param {object} settings DataTables settings object\n *  @param {object} DataTables row object for the row to be modified\n *  @memberof DataTable#oApi\n */\nfunction _fnRowAttributes( settings, row )\n{\n\tvar tr = row.nTr;\n\tvar data = row._aData;\n\n\tif ( tr ) {\n\t\tvar id = settings.rowIdFn( data );\n\n\t\tif ( id ) {\n\t\t\ttr.id = id;\n\t\t}\n\n\t\tif ( data.DT_RowClass ) {\n\t\t\t// Remove any classes added by DT_RowClass before\n\t\t\tvar a = data.DT_RowClass.split(' ');\n\t\t\trow.__rowc = row.__rowc ?\n\t\t\t\t_unique( row.__rowc.concat( a ) ) :\n\t\t\t\ta;\n\n\t\t\t$(tr)\n\t\t\t\t.removeClass( row.__rowc.join(' ') )\n\t\t\t\t.addClass( data.DT_RowClass );\n\t\t}\n\n\t\tif ( data.DT_RowAttr ) {\n\t\t\t$(tr).attr( data.DT_RowAttr );\n\t\t}\n\n\t\tif ( data.DT_RowData ) {\n\t\t\t$(tr).data( data.DT_RowData );\n\t\t}\n\t}\n}\n\n\n/**\n * Create the HTML header for the table\n *  @param {object} oSettings dataTables settings object\n *  @memberof DataTable#oApi\n */\nfunction _fnBuildHead( oSettings )\n{\n\tvar i, ien, cell, row, column;\n\tvar thead = oSettings.nTHead;\n\tvar tfoot = oSettings.nTFoot;\n\tvar createHeader = $('th, td', thead).length === 0;\n\tvar classes = oSettings.oClasses;\n\tvar columns = oSettings.aoColumns;\n\n\tif ( createHeader ) {\n\t\trow = $('<tr/>').appendTo( thead );\n\t}\n\n\tfor ( i=0, ien=columns.length ; i<ien ; i++ ) {\n\t\tcolumn = columns[i];\n\t\tcell = $( column.nTh ).addClass( column.sClass );\n\n\t\tif ( createHeader ) {\n\t\t\tcell.appendTo( row );\n\t\t}\n\n\t\t// 1.11 move into sorting\n\t\tif ( oSettings.oFeatures.bSort ) {\n\t\t\tcell.addClass( column.sSortingClass );\n\n\t\t\tif ( column.bSortable !== false ) {\n\t\t\t\tcell\n\t\t\t\t\t.attr( 'tabindex', oSettings.iTabIndex )\n\t\t\t\t\t.attr( 'aria-controls', oSettings.sTableId );\n\n\t\t\t\t_fnSortAttachListener( oSettings, column.nTh, i );\n\t\t\t}\n\t\t}\n\n\t\tif ( column.sTitle != cell[0].innerHTML ) {\n\t\t\tcell.html( column.sTitle );\n\t\t}\n\n\t\t_fnRenderer( oSettings, 'header' )(\n\t\t\toSettings, cell, column, classes\n\t\t);\n\t}\n\n\tif ( createHeader ) {\n\t\t_fnDetectHeader( oSettings.aoHeader, thead );\n\t}\n\n\t/* Deal with the footer - add classes if required */\n\t$(thead).children('tr').children('th, td').addClass( classes.sHeaderTH );\n\t$(tfoot).children('tr').children('th, td').addClass( classes.sFooterTH );\n\n\t// Cache the footer cells. Note that we only take the cells from the first\n\t// row in the footer. If there is more than one row the user wants to\n\t// interact with, they need to use the table().foot() method. Note also this\n\t// allows cells to be used for multiple columns using colspan\n\tif ( tfoot !== null ) {\n\t\tvar cells = oSettings.aoFooter[0];\n\n\t\tfor ( i=0, ien=cells.length ; i<ien ; i++ ) {\n\t\t\tcolumn = columns[i];\n\n\t\t\tif (column) {\n\t\t\t\tcolumn.nTf = cells[i].cell;\n\t\n\t\t\t\tif ( column.sClass ) {\n\t\t\t\t\t$(column.nTf).addClass( column.sClass );\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\t_fnLog( oSettings, 0, 'Incorrect column count', 18 );\n\t\t\t}\n\t\t}\n\t}\n}\n\n\n/**\n * Draw the header (or footer) element based on the column visibility states. The\n * methodology here is to use the layout array from _fnDetectHeader, modified for\n * the instantaneous column visibility, to construct the new layout. The grid is\n * traversed over cell at a time in a rows x columns grid fashion, although each\n * cell insert can cover multiple elements in the grid - which is tracks using the\n * aApplied array. Cell inserts in the grid will only occur where there isn't\n * already a cell in that position.\n *  @param {object} oSettings dataTables settings object\n *  @param array {objects} aoSource Layout array from _fnDetectHeader\n *  @param {boolean} [bIncludeHidden=false] If true then include the hidden columns in the calc,\n *  @memberof DataTable#oApi\n */\nfunction _fnDrawHead( oSettings, aoSource, bIncludeHidden )\n{\n\tvar i, iLen, j, jLen, k, kLen, n, nLocalTr;\n\tvar aoLocal = [];\n\tvar aApplied = [];\n\tvar iColumns = oSettings.aoColumns.length;\n\tvar iRowspan, iColspan;\n\n\tif ( ! aoSource )\n\t{\n\t\treturn;\n\t}\n\n\tif (  bIncludeHidden === undefined )\n\t{\n\t\tbIncludeHidden = false;\n\t}\n\n\t/* Make a copy of the master layout array, but without the visible columns in it */\n\tfor ( i=0, iLen=aoSource.length ; i<iLen ; i++ )\n\t{\n\t\taoLocal[i] = aoSource[i].slice();\n\t\taoLocal[i].nTr = aoSource[i].nTr;\n\n\t\t/* Remove any columns which are currently hidden */\n\t\tfor ( j=iColumns-1 ; j>=0 ; j-- )\n\t\t{\n\t\t\tif ( !oSettings.aoColumns[j].bVisible && !bIncludeHidden )\n\t\t\t{\n\t\t\t\taoLocal[i].splice( j, 1 );\n\t\t\t}\n\t\t}\n\n\t\t/* Prep the applied array - it needs an element for each row */\n\t\taApplied.push( [] );\n\t}\n\n\tfor ( i=0, iLen=aoLocal.length ; i<iLen ; i++ )\n\t{\n\t\tnLocalTr = aoLocal[i].nTr;\n\n\t\t/* All cells are going to be replaced, so empty out the row */\n\t\tif ( nLocalTr )\n\t\t{\n\t\t\twhile( (n = nLocalTr.firstChild) )\n\t\t\t{\n\t\t\t\tnLocalTr.removeChild( n );\n\t\t\t}\n\t\t}\n\n\t\tfor ( j=0, jLen=aoLocal[i].length ; j<jLen ; j++ )\n\t\t{\n\t\t\tiRowspan = 1;\n\t\t\tiColspan = 1;\n\n\t\t\t/* Check to see if there is already a cell (row/colspan) covering our target\n\t\t\t * insert point. If there is, then there is nothing to do.\n\t\t\t */\n\t\t\tif ( aApplied[i][j] === undefined )\n\t\t\t{\n\t\t\t\tnLocalTr.appendChild( aoLocal[i][j].cell );\n\t\t\t\taApplied[i][j] = 1;\n\n\t\t\t\t/* Expand the cell to cover as many rows as needed */\n\t\t\t\twhile ( aoLocal[i+iRowspan] !== undefined &&\n\t\t\t\t        aoLocal[i][j].cell == aoLocal[i+iRowspan][j].cell )\n\t\t\t\t{\n\t\t\t\t\taApplied[i+iRowspan][j] = 1;\n\t\t\t\t\tiRowspan++;\n\t\t\t\t}\n\n\t\t\t\t/* Expand the cell to cover as many columns as needed */\n\t\t\t\twhile ( aoLocal[i][j+iColspan] !== undefined &&\n\t\t\t\t        aoLocal[i][j].cell == aoLocal[i][j+iColspan].cell )\n\t\t\t\t{\n\t\t\t\t\t/* Must update the applied array over the rows for the columns */\n\t\t\t\t\tfor ( k=0 ; k<iRowspan ; k++ )\n\t\t\t\t\t{\n\t\t\t\t\t\taApplied[i+k][j+iColspan] = 1;\n\t\t\t\t\t}\n\t\t\t\t\tiColspan++;\n\t\t\t\t}\n\n\t\t\t\t/* Do the actual expansion in the DOM */\n\t\t\t\t$(aoLocal[i][j].cell)\n\t\t\t\t\t.attr('rowspan', iRowspan)\n\t\t\t\t\t.attr('colspan', iColspan);\n\t\t\t}\n\t\t}\n\t}\n}\n\n\n/**\n * Insert the required TR nodes into the table for display\n *  @param {object} oSettings dataTables settings object\n *  @param ajaxComplete true after ajax call to complete rendering\n *  @memberof DataTable#oApi\n */\nfunction _fnDraw( oSettings, ajaxComplete )\n{\n\t// Allow for state saving and a custom start position\n\t_fnStart( oSettings );\n\n\t/* Provide a pre-callback function which can be used to cancel the draw is false is returned */\n\tvar aPreDraw = _fnCallbackFire( oSettings, 'aoPreDrawCallback', 'preDraw', [oSettings] );\n\tif ( $.inArray( false, aPreDraw ) !== -1 )\n\t{\n\t\t_fnProcessingDisplay( oSettings, false );\n\t\treturn;\n\t}\n\n\tvar anRows = [];\n\tvar iRowCount = 0;\n\tvar asStripeClasses = oSettings.asStripeClasses;\n\tvar iStripes = asStripeClasses.length;\n\tvar oLang = oSettings.oLanguage;\n\tvar bServerSide = _fnDataSource( oSettings ) == 'ssp';\n\tvar aiDisplay = oSettings.aiDisplay;\n\tvar iDisplayStart = oSettings._iDisplayStart;\n\tvar iDisplayEnd = oSettings.fnDisplayEnd();\n\n\toSettings.bDrawing = true;\n\n\t/* Server-side processing draw intercept */\n\tif ( oSettings.bDeferLoading )\n\t{\n\t\toSettings.bDeferLoading = false;\n\t\toSettings.iDraw++;\n\t\t_fnProcessingDisplay( oSettings, false );\n\t}\n\telse if ( !bServerSide )\n\t{\n\t\toSettings.iDraw++;\n\t}\n\telse if ( !oSettings.bDestroying && !ajaxComplete)\n\t{\n\t\t_fnAjaxUpdate( oSettings );\n\t\treturn;\n\t}\n\n\tif ( aiDisplay.length !== 0 )\n\t{\n\t\tvar iStart = bServerSide ? 0 : iDisplayStart;\n\t\tvar iEnd = bServerSide ? oSettings.aoData.length : iDisplayEnd;\n\n\t\tfor ( var j=iStart ; j<iEnd ; j++ )\n\t\t{\n\t\t\tvar iDataIndex = aiDisplay[j];\n\t\t\tvar aoData = oSettings.aoData[ iDataIndex ];\n\t\t\tif ( aoData.nTr === null )\n\t\t\t{\n\t\t\t\t_fnCreateTr( oSettings, iDataIndex );\n\t\t\t}\n\n\t\t\tvar nRow = aoData.nTr;\n\n\t\t\t/* Remove the old striping classes and then add the new one */\n\t\t\tif ( iStripes !== 0 )\n\t\t\t{\n\t\t\t\tvar sStripe = asStripeClasses[ iRowCount % iStripes ];\n\t\t\t\tif ( aoData._sRowStripe != sStripe )\n\t\t\t\t{\n\t\t\t\t\t$(nRow).removeClass( aoData._sRowStripe ).addClass( sStripe );\n\t\t\t\t\taoData._sRowStripe = sStripe;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Row callback functions - might want to manipulate the row\n\t\t\t// iRowCount and j are not currently documented. Are they at all\n\t\t\t// useful?\n\t\t\t_fnCallbackFire( oSettings, 'aoRowCallback', null,\n\t\t\t\t[nRow, aoData._aData, iRowCount, j, iDataIndex] );\n\n\t\t\tanRows.push( nRow );\n\t\t\tiRowCount++;\n\t\t}\n\t}\n\telse\n\t{\n\t\t/* Table is empty - create a row with an empty message in it */\n\t\tvar sZero = oLang.sZeroRecords;\n\t\tif ( oSettings.iDraw == 1 &&  _fnDataSource( oSettings ) == 'ajax' )\n\t\t{\n\t\t\tsZero = oLang.sLoadingRecords;\n\t\t}\n\t\telse if ( oLang.sEmptyTable && oSettings.fnRecordsTotal() === 0 )\n\t\t{\n\t\t\tsZero = oLang.sEmptyTable;\n\t\t}\n\n\t\tanRows[ 0 ] = $( '<tr/>', { 'class': iStripes ? asStripeClasses[0] : '' } )\n\t\t\t.append( $('<td />', {\n\t\t\t\t'valign':  'top',\n\t\t\t\t'colSpan': _fnVisbleColumns( oSettings ),\n\t\t\t\t'class':   oSettings.oClasses.sRowEmpty\n\t\t\t} ).html( sZero ) )[0];\n\t}\n\n\t/* Header and footer callbacks */\n\t_fnCallbackFire( oSettings, 'aoHeaderCallback', 'header', [ $(oSettings.nTHead).children('tr')[0],\n\t\t_fnGetDataMaster( oSettings ), iDisplayStart, iDisplayEnd, aiDisplay ] );\n\n\t_fnCallbackFire( oSettings, 'aoFooterCallback', 'footer', [ $(oSettings.nTFoot).children('tr')[0],\n\t\t_fnGetDataMaster( oSettings ), iDisplayStart, iDisplayEnd, aiDisplay ] );\n\n\tvar body = $(oSettings.nTBody);\n\n\tbody.children().detach();\n\tbody.append( $(anRows) );\n\n\t/* Call all required callback functions for the end of a draw */\n\t_fnCallbackFire( oSettings, 'aoDrawCallback', 'draw', [oSettings] );\n\n\t/* Draw is complete, sorting and filtering must be as well */\n\toSettings.bSorted = false;\n\toSettings.bFiltered = false;\n\toSettings.bDrawing = false;\n}\n\n\n/**\n * Redraw the table - taking account of the various features which are enabled\n *  @param {object} oSettings dataTables settings object\n *  @param {boolean} [holdPosition] Keep the current paging position. By default\n *    the paging is reset to the first page\n *  @memberof DataTable#oApi\n */\nfunction _fnReDraw( settings, holdPosition )\n{\n\tvar\n\t\tfeatures = settings.oFeatures,\n\t\tsort     = features.bSort,\n\t\tfilter   = features.bFilter;\n\n\tif ( sort ) {\n\t\t_fnSort( settings );\n\t}\n\n\tif ( filter ) {\n\t\t_fnFilterComplete( settings, settings.oPreviousSearch );\n\t}\n\telse {\n\t\t// No filtering, so we want to just use the display master\n\t\tsettings.aiDisplay = settings.aiDisplayMaster.slice();\n\t}\n\n\tif ( holdPosition !== true ) {\n\t\tsettings._iDisplayStart = 0;\n\t}\n\n\t// Let any modules know about the draw hold position state (used by\n\t// scrolling internally)\n\tsettings._drawHold = holdPosition;\n\n\t_fnDraw( settings );\n\n\tsettings._drawHold = false;\n}\n\n\n/**\n * Add the options to the page HTML for the table\n *  @param {object} oSettings dataTables settings object\n *  @memberof DataTable#oApi\n */\nfunction _fnAddOptionsHtml ( oSettings )\n{\n\tvar classes = oSettings.oClasses;\n\tvar table = $(oSettings.nTable);\n\tvar holding = $('<div/>').insertBefore( table ); // Holding element for speed\n\tvar features = oSettings.oFeatures;\n\n\t// All DataTables are wrapped in a div\n\tvar insert = $('<div/>', {\n\t\tid:      oSettings.sTableId+'_wrapper',\n\t\t'class': classes.sWrapper + (oSettings.nTFoot ? '' : ' '+classes.sNoFooter)\n\t} );\n\n\toSettings.nHolding = holding[0];\n\toSettings.nTableWrapper = insert[0];\n\toSettings.nTableReinsertBefore = oSettings.nTable.nextSibling;\n\n\t/* Loop over the user set positioning and place the elements as needed */\n\tvar aDom = oSettings.sDom.split('');\n\tvar featureNode, cOption, nNewNode, cNext, sAttr, j;\n\tfor ( var i=0 ; i<aDom.length ; i++ )\n\t{\n\t\tfeatureNode = null;\n\t\tcOption = aDom[i];\n\n\t\tif ( cOption == '<' )\n\t\t{\n\t\t\t/* New container div */\n\t\t\tnNewNode = $('<div/>')[0];\n\n\t\t\t/* Check to see if we should append an id and/or a class name to the container */\n\t\t\tcNext = aDom[i+1];\n\t\t\tif ( cNext == \"'\" || cNext == '\"' )\n\t\t\t{\n\t\t\t\tsAttr = \"\";\n\t\t\t\tj = 2;\n\t\t\t\twhile ( aDom[i+j] != cNext )\n\t\t\t\t{\n\t\t\t\t\tsAttr += aDom[i+j];\n\t\t\t\t\tj++;\n\t\t\t\t}\n\n\t\t\t\t/* Replace jQuery UI constants @todo depreciated */\n\t\t\t\tif ( sAttr == \"H\" )\n\t\t\t\t{\n\t\t\t\t\tsAttr = classes.sJUIHeader;\n\t\t\t\t}\n\t\t\t\telse if ( sAttr == \"F\" )\n\t\t\t\t{\n\t\t\t\t\tsAttr = classes.sJUIFooter;\n\t\t\t\t}\n\n\t\t\t\t/* The attribute can be in the format of \"#id.class\", \"#id\" or \"class\" This logic\n\t\t\t\t * breaks the string into parts and applies them as needed\n\t\t\t\t */\n\t\t\t\tif ( sAttr.indexOf('.') != -1 )\n\t\t\t\t{\n\t\t\t\t\tvar aSplit = sAttr.split('.');\n\t\t\t\t\tnNewNode.id = aSplit[0].substr(1, aSplit[0].length-1);\n\t\t\t\t\tnNewNode.className = aSplit[1];\n\t\t\t\t}\n\t\t\t\telse if ( sAttr.charAt(0) == \"#\" )\n\t\t\t\t{\n\t\t\t\t\tnNewNode.id = sAttr.substr(1, sAttr.length-1);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tnNewNode.className = sAttr;\n\t\t\t\t}\n\n\t\t\t\ti += j; /* Move along the position array */\n\t\t\t}\n\n\t\t\tinsert.append( nNewNode );\n\t\t\tinsert = $(nNewNode);\n\t\t}\n\t\telse if ( cOption == '>' )\n\t\t{\n\t\t\t/* End container div */\n\t\t\tinsert = insert.parent();\n\t\t}\n\t\t// @todo Move options into their own plugins?\n\t\telse if ( cOption == 'l' && features.bPaginate && features.bLengthChange )\n\t\t{\n\t\t\t/* Length */\n\t\t\tfeatureNode = _fnFeatureHtmlLength( oSettings );\n\t\t}\n\t\telse if ( cOption == 'f' && features.bFilter )\n\t\t{\n\t\t\t/* Filter */\n\t\t\tfeatureNode = _fnFeatureHtmlFilter( oSettings );\n\t\t}\n\t\telse if ( cOption == 'r' && features.bProcessing )\n\t\t{\n\t\t\t/* pRocessing */\n\t\t\tfeatureNode = _fnFeatureHtmlProcessing( oSettings );\n\t\t}\n\t\telse if ( cOption == 't' )\n\t\t{\n\t\t\t/* Table */\n\t\t\tfeatureNode = _fnFeatureHtmlTable( oSettings );\n\t\t}\n\t\telse if ( cOption ==  'i' && features.bInfo )\n\t\t{\n\t\t\t/* Info */\n\t\t\tfeatureNode = _fnFeatureHtmlInfo( oSettings );\n\t\t}\n\t\telse if ( cOption == 'p' && features.bPaginate )\n\t\t{\n\t\t\t/* Pagination */\n\t\t\tfeatureNode = _fnFeatureHtmlPaginate( oSettings );\n\t\t}\n\t\telse if ( DataTable.ext.feature.length !== 0 )\n\t\t{\n\t\t\t/* Plug-in features */\n\t\t\tvar aoFeatures = DataTable.ext.feature;\n\t\t\tfor ( var k=0, kLen=aoFeatures.length ; k<kLen ; k++ )\n\t\t\t{\n\t\t\t\tif ( cOption == aoFeatures[k].cFeature )\n\t\t\t\t{\n\t\t\t\t\tfeatureNode = aoFeatures[k].fnInit( oSettings );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/* Add to the 2D features array */\n\t\tif ( featureNode )\n\t\t{\n\t\t\tvar aanFeatures = oSettings.aanFeatures;\n\n\t\t\tif ( ! aanFeatures[cOption] )\n\t\t\t{\n\t\t\t\taanFeatures[cOption] = [];\n\t\t\t}\n\n\t\t\taanFeatures[cOption].push( featureNode );\n\t\t\tinsert.append( featureNode );\n\t\t}\n\t}\n\n\t/* Built our DOM structure - replace the holding div with what we want */\n\tholding.replaceWith( insert );\n\toSettings.nHolding = null;\n}\n\n\n/**\n * Use the DOM source to create up an array of header cells. The idea here is to\n * create a layout grid (array) of rows x columns, which contains a reference\n * to the cell that that point in the grid (regardless of col/rowspan), such that\n * any column / row could be removed and the new grid constructed\n *  @param array {object} aLayout Array to store the calculated layout in\n *  @param {node} nThead The header/footer element for the table\n *  @memberof DataTable#oApi\n */\nfunction _fnDetectHeader ( aLayout, nThead )\n{\n\tvar nTrs = $(nThead).children('tr');\n\tvar nTr, nCell;\n\tvar i, k, l, iLen, jLen, iColShifted, iColumn, iColspan, iRowspan;\n\tvar bUnique;\n\tvar fnShiftCol = function ( a, i, j ) {\n\t\tvar k = a[i];\n                while ( k[j] ) {\n\t\t\tj++;\n\t\t}\n\t\treturn j;\n\t};\n\n\taLayout.splice( 0, aLayout.length );\n\n\t/* We know how many rows there are in the layout - so prep it */\n\tfor ( i=0, iLen=nTrs.length ; i<iLen ; i++ )\n\t{\n\t\taLayout.push( [] );\n\t}\n\n\t/* Calculate a layout array */\n\tfor ( i=0, iLen=nTrs.length ; i<iLen ; i++ )\n\t{\n\t\tnTr = nTrs[i];\n\t\tiColumn = 0;\n\n\t\t/* For every cell in the row... */\n\t\tnCell = nTr.firstChild;\n\t\twhile ( nCell ) {\n\t\t\tif ( nCell.nodeName.toUpperCase() == \"TD\" ||\n\t\t\t     nCell.nodeName.toUpperCase() == \"TH\" )\n\t\t\t{\n\t\t\t\t/* Get the col and rowspan attributes from the DOM and sanitise them */\n\t\t\t\tiColspan = nCell.getAttribute('colspan') * 1;\n\t\t\t\tiRowspan = nCell.getAttribute('rowspan') * 1;\n\t\t\t\tiColspan = (!iColspan || iColspan===0 || iColspan===1) ? 1 : iColspan;\n\t\t\t\tiRowspan = (!iRowspan || iRowspan===0 || iRowspan===1) ? 1 : iRowspan;\n\n\t\t\t\t/* There might be colspan cells already in this row, so shift our target\n\t\t\t\t * accordingly\n\t\t\t\t */\n\t\t\t\tiColShifted = fnShiftCol( aLayout, i, iColumn );\n\n\t\t\t\t/* Cache calculation for unique columns */\n\t\t\t\tbUnique = iColspan === 1 ? true : false;\n\n\t\t\t\t/* If there is col / rowspan, copy the information into the layout grid */\n\t\t\t\tfor ( l=0 ; l<iColspan ; l++ )\n\t\t\t\t{\n\t\t\t\t\tfor ( k=0 ; k<iRowspan ; k++ )\n\t\t\t\t\t{\n\t\t\t\t\t\taLayout[i+k][iColShifted+l] = {\n\t\t\t\t\t\t\t\"cell\": nCell,\n\t\t\t\t\t\t\t\"unique\": bUnique\n\t\t\t\t\t\t};\n\t\t\t\t\t\taLayout[i+k].nTr = nTr;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tnCell = nCell.nextSibling;\n\t\t}\n\t}\n}\n\n\n/**\n * Get an array of unique th elements, one for each column\n *  @param {object} oSettings dataTables settings object\n *  @param {node} nHeader automatically detect the layout from this node - optional\n *  @param {array} aLayout thead/tfoot layout from _fnDetectHeader - optional\n *  @returns array {node} aReturn list of unique th's\n *  @memberof DataTable#oApi\n */\nfunction _fnGetUniqueThs ( oSettings, nHeader, aLayout )\n{\n\tvar aReturn = [];\n\tif ( !aLayout )\n\t{\n\t\taLayout = oSettings.aoHeader;\n\t\tif ( nHeader )\n\t\t{\n\t\t\taLayout = [];\n\t\t\t_fnDetectHeader( aLayout, nHeader );\n\t\t}\n\t}\n\n\tfor ( var i=0, iLen=aLayout.length ; i<iLen ; i++ )\n\t{\n\t\tfor ( var j=0, jLen=aLayout[i].length ; j<jLen ; j++ )\n\t\t{\n\t\t\tif ( aLayout[i][j].unique &&\n\t\t\t\t (!aReturn[j] || !oSettings.bSortCellsTop) )\n\t\t\t{\n\t\t\t\taReturn[j] = aLayout[i][j].cell;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn aReturn;\n}\n\n/**\n * Set the start position for draw\n *  @param {object} oSettings dataTables settings object\n */\nfunction _fnStart( oSettings )\n{\n\tvar bServerSide = _fnDataSource( oSettings ) == 'ssp';\n\tvar iInitDisplayStart = oSettings.iInitDisplayStart;\n\n\t// Check and see if we have an initial draw position from state saving\n\tif ( iInitDisplayStart !== undefined && iInitDisplayStart !== -1 )\n\t{\n\t\toSettings._iDisplayStart = bServerSide ?\n\t\t\tiInitDisplayStart :\n\t\t\tiInitDisplayStart >= oSettings.fnRecordsDisplay() ?\n\t\t\t\t0 :\n\t\t\t\tiInitDisplayStart;\n\n\t\toSettings.iInitDisplayStart = -1;\n\t}\n}\n\n/**\n * Create an Ajax call based on the table's settings, taking into account that\n * parameters can have multiple forms, and backwards compatibility.\n *\n * @param {object} oSettings dataTables settings object\n * @param {array} data Data to send to the server, required by\n *     DataTables - may be augmented by developer callbacks\n * @param {function} fn Callback function to run when data is obtained\n */\nfunction _fnBuildAjax( oSettings, data, fn )\n{\n\t// Compatibility with 1.9-, allow fnServerData and event to manipulate\n\t_fnCallbackFire( oSettings, 'aoServerParams', 'serverParams', [data] );\n\n\t// Convert to object based for 1.10+ if using the old array scheme which can\n\t// come from server-side processing or serverParams\n\tif ( data && Array.isArray(data) ) {\n\t\tvar tmp = {};\n\t\tvar rbracket = /(.*?)\\[\\]$/;\n\n\t\t$.each( data, function (key, val) {\n\t\t\tvar match = val.name.match(rbracket);\n\n\t\t\tif ( match ) {\n\t\t\t\t// Support for arrays\n\t\t\t\tvar name = match[0];\n\n\t\t\t\tif ( ! tmp[ name ] ) {\n\t\t\t\t\ttmp[ name ] = [];\n\t\t\t\t}\n\t\t\t\ttmp[ name ].push( val.value );\n\t\t\t}\n\t\t\telse {\n\t\t\t\ttmp[val.name] = val.value;\n\t\t\t}\n\t\t} );\n\t\tdata = tmp;\n\t}\n\n\tvar ajaxData;\n\tvar ajax = oSettings.ajax;\n\tvar instance = oSettings.oInstance;\n\tvar callback = function ( json ) {\n\t\tvar status = oSettings.jqXHR\n\t\t\t? oSettings.jqXHR.status\n\t\t\t: null;\n\n\t\tif ( json === null || (typeof status === 'number' && status == 204 ) ) {\n\t\t\tjson = {};\n\t\t\t_fnAjaxDataSrc( oSettings, json, [] );\n\t\t}\n\n\t\tvar error = json.error || json.sError;\n\t\tif ( error ) {\n\t\t\t_fnLog( oSettings, 0, error );\n\t\t}\n\n\t\toSettings.json = json;\n\n\t\t_fnCallbackFire( oSettings, null, 'xhr', [oSettings, json, oSettings.jqXHR] );\n\t\tfn( json );\n\t};\n\n\tif ( $.isPlainObject( ajax ) && ajax.data )\n\t{\n\t\tajaxData = ajax.data;\n\n\t\tvar newData = typeof ajaxData === 'function' ?\n\t\t\tajaxData( data, oSettings ) :  // fn can manipulate data or return\n\t\t\tajaxData;                      // an object object or array to merge\n\n\t\t// If the function returned something, use that alone\n\t\tdata = typeof ajaxData === 'function' && newData ?\n\t\t\tnewData :\n\t\t\t$.extend( true, data, newData );\n\n\t\t// Remove the data property as we've resolved it already and don't want\n\t\t// jQuery to do it again (it is restored at the end of the function)\n\t\tdelete ajax.data;\n\t}\n\n\tvar baseAjax = {\n\t\t\"data\": data,\n\t\t\"success\": callback,\n\t\t\"dataType\": \"json\",\n\t\t\"cache\": false,\n\t\t\"type\": oSettings.sServerMethod,\n\t\t\"error\": function (xhr, error, thrown) {\n\t\t\tvar ret = _fnCallbackFire( oSettings, null, 'xhr', [oSettings, null, oSettings.jqXHR] );\n\n\t\t\tif ( $.inArray( true, ret ) === -1 ) {\n\t\t\t\tif ( error == \"parsererror\" ) {\n\t\t\t\t\t_fnLog( oSettings, 0, 'Invalid JSON response', 1 );\n\t\t\t\t}\n\t\t\t\telse if ( xhr.readyState === 4 ) {\n\t\t\t\t\t_fnLog( oSettings, 0, 'Ajax error', 7 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t_fnProcessingDisplay( oSettings, false );\n\t\t}\n\t};\n\n\t// Store the data submitted for the API\n\toSettings.oAjaxData = data;\n\n\t// Allow plug-ins and external processes to modify the data\n\t_fnCallbackFire( oSettings, null, 'preXhr', [oSettings, data] );\n\n\tif ( oSettings.fnServerData )\n\t{\n\t\t// DataTables 1.9- compatibility\n\t\toSettings.fnServerData.call( instance,\n\t\t\toSettings.sAjaxSource,\n\t\t\t$.map( data, function (val, key) { // Need to convert back to 1.9 trad format\n\t\t\t\treturn { name: key, value: val };\n\t\t\t} ),\n\t\t\tcallback,\n\t\t\toSettings\n\t\t);\n\t}\n\telse if ( oSettings.sAjaxSource || typeof ajax === 'string' )\n\t{\n\t\t// DataTables 1.9- compatibility\n\t\toSettings.jqXHR = $.ajax( $.extend( baseAjax, {\n\t\t\turl: ajax || oSettings.sAjaxSource\n\t\t} ) );\n\t}\n\telse if ( typeof ajax === 'function' )\n\t{\n\t\t// Is a function - let the caller define what needs to be done\n\t\toSettings.jqXHR = ajax.call( instance, data, callback, oSettings );\n\t}\n\telse\n\t{\n\t\t// Object to extend the base settings\n\t\toSettings.jqXHR = $.ajax( $.extend( baseAjax, ajax ) );\n\n\t\t// Restore for next time around\n\t\tajax.data = ajaxData;\n\t}\n}\n\n\n/**\n * Update the table using an Ajax call\n *  @param {object} settings dataTables settings object\n *  @returns {boolean} Block the table drawing or not\n *  @memberof DataTable#oApi\n */\nfunction _fnAjaxUpdate( settings )\n{\n\tsettings.iDraw++;\n\t_fnProcessingDisplay( settings, true );\n\n\t// Keep track of drawHold state to handle scrolling after the Ajax call\n\tvar drawHold = settings._drawHold;\n\n\t_fnBuildAjax(\n\t\tsettings,\n\t\t_fnAjaxParameters( settings ),\n\t\tfunction(json) {\n\t\t\tsettings._drawHold = drawHold;\n\t\t\t_fnAjaxUpdateDraw( settings, json );\n\t\t\tsettings._drawHold = false;\n\t\t}\n\t);\n}\n\n\n/**\n * Build up the parameters in an object needed for a server-side processing\n * request. Note that this is basically done twice, is different ways - a modern\n * method which is used by default in DataTables 1.10 which uses objects and\n * arrays, or the 1.9- method with is name / value pairs. 1.9 method is used if\n * the sAjaxSource option is used in the initialisation, or the legacyAjax\n * option is set.\n *  @param {object} oSettings dataTables settings object\n *  @returns {bool} block the table drawing or not\n *  @memberof DataTable#oApi\n */\nfunction _fnAjaxParameters( settings )\n{\n\tvar\n\t\tcolumns = settings.aoColumns,\n\t\tcolumnCount = columns.length,\n\t\tfeatures = settings.oFeatures,\n\t\tpreSearch = settings.oPreviousSearch,\n\t\tpreColSearch = settings.aoPreSearchCols,\n\t\ti, data = [], dataProp, column, columnSearch,\n\t\tsort = _fnSortFlatten( settings ),\n\t\tdisplayStart = settings._iDisplayStart,\n\t\tdisplayLength = features.bPaginate !== false ?\n\t\t\tsettings._iDisplayLength :\n\t\t\t-1;\n\n\tvar param = function ( name, value ) {\n\t\tdata.push( { 'name': name, 'value': value } );\n\t};\n\n\t// DataTables 1.9- compatible method\n\tparam( 'sEcho',          settings.iDraw );\n\tparam( 'iColumns',       columnCount );\n\tparam( 'sColumns',       _pluck( columns, 'sName' ).join(',') );\n\tparam( 'iDisplayStart',  displayStart );\n\tparam( 'iDisplayLength', displayLength );\n\n\t// DataTables 1.10+ method\n\tvar d = {\n\t\tdraw:    settings.iDraw,\n\t\tcolumns: [],\n\t\torder:   [],\n\t\tstart:   displayStart,\n\t\tlength:  displayLength,\n\t\tsearch:  {\n\t\t\tvalue: preSearch.sSearch,\n\t\t\tregex: preSearch.bRegex\n\t\t}\n\t};\n\n\tfor ( i=0 ; i<columnCount ; i++ ) {\n\t\tcolumn = columns[i];\n\t\tcolumnSearch = preColSearch[i];\n\t\tdataProp = typeof column.mData==\"function\" ? 'function' : column.mData ;\n\n\t\td.columns.push( {\n\t\t\tdata:       dataProp,\n\t\t\tname:       column.sName,\n\t\t\tsearchable: column.bSearchable,\n\t\t\torderable:  column.bSortable,\n\t\t\tsearch:     {\n\t\t\t\tvalue: columnSearch.sSearch,\n\t\t\t\tregex: columnSearch.bRegex\n\t\t\t}\n\t\t} );\n\n\t\tparam( \"mDataProp_\"+i, dataProp );\n\n\t\tif ( features.bFilter ) {\n\t\t\tparam( 'sSearch_'+i,     columnSearch.sSearch );\n\t\t\tparam( 'bRegex_'+i,      columnSearch.bRegex );\n\t\t\tparam( 'bSearchable_'+i, column.bSearchable );\n\t\t}\n\n\t\tif ( features.bSort ) {\n\t\t\tparam( 'bSortable_'+i, column.bSortable );\n\t\t}\n\t}\n\n\tif ( features.bFilter ) {\n\t\tparam( 'sSearch', preSearch.sSearch );\n\t\tparam( 'bRegex', preSearch.bRegex );\n\t}\n\n\tif ( features.bSort ) {\n\t\t$.each( sort, function ( i, val ) {\n\t\t\td.order.push( { column: val.col, dir: val.dir } );\n\n\t\t\tparam( 'iSortCol_'+i, val.col );\n\t\t\tparam( 'sSortDir_'+i, val.dir );\n\t\t} );\n\n\t\tparam( 'iSortingCols', sort.length );\n\t}\n\n\t// If the legacy.ajax parameter is null, then we automatically decide which\n\t// form to use, based on sAjaxSource\n\tvar legacy = DataTable.ext.legacy.ajax;\n\tif ( legacy === null ) {\n\t\treturn settings.sAjaxSource ? data : d;\n\t}\n\n\t// Otherwise, if legacy has been specified then we use that to decide on the\n\t// form\n\treturn legacy ? data : d;\n}\n\n\n/**\n * Data the data from the server (nuking the old) and redraw the table\n *  @param {object} oSettings dataTables settings object\n *  @param {object} json json data return from the server.\n *  @param {string} json.sEcho Tracking flag for DataTables to match requests\n *  @param {int} json.iTotalRecords Number of records in the data set, not accounting for filtering\n *  @param {int} json.iTotalDisplayRecords Number of records in the data set, accounting for filtering\n *  @param {array} json.aaData The data to display on this page\n *  @param {string} [json.sColumns] Column ordering (sName, comma separated)\n *  @memberof DataTable#oApi\n */\nfunction _fnAjaxUpdateDraw ( settings, json )\n{\n\t// v1.10 uses camelCase variables, while 1.9 uses Hungarian notation.\n\t// Support both\n\tvar compat = function ( old, modern ) {\n\t\treturn json[old] !== undefined ? json[old] : json[modern];\n\t};\n\n\tvar data = _fnAjaxDataSrc( settings, json );\n\tvar draw            = compat( 'sEcho',                'draw' );\n\tvar recordsTotal    = compat( 'iTotalRecords',        'recordsTotal' );\n\tvar recordsFiltered = compat( 'iTotalDisplayRecords', 'recordsFiltered' );\n\n\tif ( draw !== undefined ) {\n\t\t// Protect against out of sequence returns\n\t\tif ( draw*1 < settings.iDraw ) {\n\t\t\treturn;\n\t\t}\n\t\tsettings.iDraw = draw * 1;\n\t}\n\n\t// No data in returned object, so rather than an array, we show an empty table\n\tif ( ! data ) {\n\t\tdata = [];\n\t}\n\n\t_fnClearTable( settings );\n\tsettings._iRecordsTotal   = parseInt(recordsTotal, 10);\n\tsettings._iRecordsDisplay = parseInt(recordsFiltered, 10);\n\n\tfor ( var i=0, ien=data.length ; i<ien ; i++ ) {\n\t\t_fnAddData( settings, data[i] );\n\t}\n\tsettings.aiDisplay = settings.aiDisplayMaster.slice();\n\n\t_fnDraw( settings, true );\n\n\tif ( ! settings._bInitComplete ) {\n\t\t_fnInitComplete( settings, json );\n\t}\n\n\t_fnProcessingDisplay( settings, false );\n}\n\n\n/**\n * Get the data from the JSON data source to use for drawing a table. Using\n * `_fnGetObjectDataFn` allows the data to be sourced from a property of the\n * source object, or from a processing function.\n *  @param {object} oSettings dataTables settings object\n *  @param  {object} json Data source object / array from the server\n *  @return {array} Array of data to use\n */\n function _fnAjaxDataSrc ( oSettings, json, write )\n {\n\tvar dataSrc = $.isPlainObject( oSettings.ajax ) && oSettings.ajax.dataSrc !== undefined ?\n\t\toSettings.ajax.dataSrc :\n\t\toSettings.sAjaxDataProp; // Compatibility with 1.9-.\n\n\tif ( ! write ) {\n\t\tif ( dataSrc === 'data' ) {\n\t\t\t// If the default, then we still want to support the old style, and safely ignore\n\t\t\t// it if possible\n\t\t\treturn json.aaData || json[dataSrc];\n\t\t}\n\n\t\treturn dataSrc !== \"\" ?\n\t\t\t_fnGetObjectDataFn( dataSrc )( json ) :\n\t\t\tjson;\n\t}\n\n\t// set\n\t_fnSetObjectDataFn( dataSrc )( json, write );\n}\n\n/**\n * Generate the node required for filtering text\n *  @returns {node} Filter control element\n *  @param {object} oSettings dataTables settings object\n *  @memberof DataTable#oApi\n */\nfunction _fnFeatureHtmlFilter ( settings )\n{\n\tvar classes = settings.oClasses;\n\tvar tableId = settings.sTableId;\n\tvar language = settings.oLanguage;\n\tvar previousSearch = settings.oPreviousSearch;\n\tvar features = settings.aanFeatures;\n\tvar input = '<input type=\"search\" class=\"'+classes.sFilterInput+'\"/>';\n\n\tvar str = language.sSearch;\n\tstr = str.match(/_INPUT_/) ?\n\t\tstr.replace('_INPUT_', input) :\n\t\tstr+input;\n\n\tvar filter = $('<div/>', {\n\t\t\t'id': ! features.f ? tableId+'_filter' : null,\n\t\t\t'class': classes.sFilter\n\t\t} )\n\t\t.append( $('<label/>' ).append( str ) );\n\n\tvar searchFn = function(event) {\n\t\t/* Update all other filter input elements for the new display */\n\t\tvar n = features.f;\n\t\tvar val = !this.value ? \"\" : this.value; // mental IE8 fix :-(\n\t\tif(previousSearch.return && event.key !== \"Enter\") {\n\t\t\treturn;\n\t\t}\n\t\t/* Now do the filter */\n\t\tif ( val != previousSearch.sSearch ) {\n\t\t\t_fnFilterComplete( settings, {\n\t\t\t\t\"sSearch\": val,\n\t\t\t\t\"bRegex\": previousSearch.bRegex,\n\t\t\t\t\"bSmart\": previousSearch.bSmart ,\n\t\t\t\t\"bCaseInsensitive\": previousSearch.bCaseInsensitive,\n\t\t\t\t\"return\": previousSearch.return\n\t\t\t} );\n\n\t\t\t// Need to redraw, without resorting\n\t\t\tsettings._iDisplayStart = 0;\n\t\t\t_fnDraw( settings );\n\t\t}\n\t};\n\n\tvar searchDelay = settings.searchDelay !== null ?\n\t\tsettings.searchDelay :\n\t\t_fnDataSource( settings ) === 'ssp' ?\n\t\t\t400 :\n\t\t\t0;\n\n\tvar jqFilter = $('input', filter)\n\t\t.val( previousSearch.sSearch )\n\t\t.attr( 'placeholder', language.sSearchPlaceholder )\n\t\t.on(\n\t\t\t'keyup.DT search.DT input.DT paste.DT cut.DT',\n\t\t\tsearchDelay ?\n\t\t\t\t_fnThrottle( searchFn, searchDelay ) :\n\t\t\t\tsearchFn\n\t\t)\n\t\t.on( 'mouseup.DT', function(e) {\n\t\t\t// Edge fix! Edge 17 does not trigger anything other than mouse events when clicking\n\t\t\t// on the clear icon (Edge bug 17584515). This is safe in other browsers as `searchFn`\n\t\t\t// checks the value to see if it has changed. In other browsers it won't have.\n\t\t\tsetTimeout( function () {\n\t\t\t\tsearchFn.call(jqFilter[0], e);\n\t\t\t}, 10);\n\t\t} )\n\t\t.on( 'keypress.DT', function(e) {\n\t\t\t/* Prevent form submission */\n\t\t\tif ( e.keyCode == 13 ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} )\n\t\t.attr('aria-controls', tableId);\n\n\t// Update the input elements whenever the table is filtered\n\t$(settings.nTable).on( 'search.dt.DT', function ( ev, s ) {\n\t\tif ( settings === s ) {\n\t\t\t// IE9 throws an 'unknown error' if document.activeElement is used\n\t\t\t// inside an iframe or frame...\n\t\t\ttry {\n\t\t\t\tif ( jqFilter[0] !== document.activeElement ) {\n\t\t\t\t\tjqFilter.val( previousSearch.sSearch );\n\t\t\t\t}\n\t\t\t}\n\t\t\tcatch ( e ) {}\n\t\t}\n\t} );\n\n\treturn filter[0];\n}\n\n\n/**\n * Filter the table using both the global filter and column based filtering\n *  @param {object} oSettings dataTables settings object\n *  @param {object} oSearch search information\n *  @param {int} [iForce] force a research of the master array (1) or not (undefined or 0)\n *  @memberof DataTable#oApi\n */\nfunction _fnFilterComplete ( oSettings, oInput, iForce )\n{\n\tvar oPrevSearch = oSettings.oPreviousSearch;\n\tvar aoPrevSearch = oSettings.aoPreSearchCols;\n\tvar fnSaveFilter = function ( oFilter ) {\n\t\t/* Save the filtering values */\n\t\toPrevSearch.sSearch = oFilter.sSearch;\n\t\toPrevSearch.bRegex = oFilter.bRegex;\n\t\toPrevSearch.bSmart = oFilter.bSmart;\n\t\toPrevSearch.bCaseInsensitive = oFilter.bCaseInsensitive;\n\t\toPrevSearch.return = oFilter.return;\n\t};\n\tvar fnRegex = function ( o ) {\n\t\t// Backwards compatibility with the bEscapeRegex option\n\t\treturn o.bEscapeRegex !== undefined ? !o.bEscapeRegex : o.bRegex;\n\t};\n\n\t// Resolve any column types that are unknown due to addition or invalidation\n\t// @todo As per sort - can this be moved into an event handler?\n\t_fnColumnTypes( oSettings );\n\n\t/* In server-side processing all filtering is done by the server, so no point hanging around here */\n\tif ( _fnDataSource( oSettings ) != 'ssp' )\n\t{\n\t\t/* Global filter */\n\t\t_fnFilter( oSettings, oInput.sSearch, iForce, fnRegex(oInput), oInput.bSmart, oInput.bCaseInsensitive );\n\t\tfnSaveFilter( oInput );\n\n\t\t/* Now do the individual column filter */\n\t\tfor ( var i=0 ; i<aoPrevSearch.length ; i++ )\n\t\t{\n\t\t\t_fnFilterColumn( oSettings, aoPrevSearch[i].sSearch, i, fnRegex(aoPrevSearch[i]),\n\t\t\t\taoPrevSearch[i].bSmart, aoPrevSearch[i].bCaseInsensitive );\n\t\t}\n\n\t\t/* Custom filtering */\n\t\t_fnFilterCustom( oSettings );\n\t}\n\telse\n\t{\n\t\tfnSaveFilter( oInput );\n\t}\n\n\t/* Tell the draw function we have been filtering */\n\toSettings.bFiltered = true;\n\t_fnCallbackFire( oSettings, null, 'search', [oSettings] );\n}\n\n\n/**\n * Apply custom filtering functions\n *  @param {object} oSettings dataTables settings object\n *  @memberof DataTable#oApi\n */\nfunction _fnFilterCustom( settings )\n{\n\tvar filters = DataTable.ext.search;\n\tvar displayRows = settings.aiDisplay;\n\tvar row, rowIdx;\n\n\tfor ( var i=0, ien=filters.length ; i<ien ; i++ ) {\n\t\tvar rows = [];\n\n\t\t// Loop over each row and see if it should be included\n\t\tfor ( var j=0, jen=displayRows.length ; j<jen ; j++ ) {\n\t\t\trowIdx = displayRows[ j ];\n\t\t\trow = settings.aoData[ rowIdx ];\n\n\t\t\tif ( filters[i]( settings, row._aFilterData, rowIdx, row._aData, j ) ) {\n\t\t\t\trows.push( rowIdx );\n\t\t\t}\n\t\t}\n\n\t\t// So the array reference doesn't break set the results into the\n\t\t// existing array\n\t\tdisplayRows.length = 0;\n\t\t$.merge( displayRows, rows );\n\t}\n}\n\n\n/**\n * Filter the table on a per-column basis\n *  @param {object} oSettings dataTables settings object\n *  @param {string} sInput string to filter on\n *  @param {int} iColumn column to filter\n *  @param {bool} bRegex treat search string as a regular expression or not\n *  @param {bool} bSmart use smart filtering or not\n *  @param {bool} bCaseInsensitive Do case insensitive matching or not\n *  @memberof DataTable#oApi\n */\nfunction _fnFilterColumn ( settings, searchStr, colIdx, regex, smart, caseInsensitive )\n{\n\tif ( searchStr === '' ) {\n\t\treturn;\n\t}\n\n\tvar data;\n\tvar out = [];\n\tvar display = settings.aiDisplay;\n\tvar rpSearch = _fnFilterCreateSearch( searchStr, regex, smart, caseInsensitive );\n\n\tfor ( var i=0 ; i<display.length ; i++ ) {\n\t\tdata = settings.aoData[ display[i] ]._aFilterData[ colIdx ];\n\n\t\tif ( rpSearch.test( data ) ) {\n\t\t\tout.push( display[i] );\n\t\t}\n\t}\n\n\tsettings.aiDisplay = out;\n}\n\n\n/**\n * Filter the data table based on user input and draw the table\n *  @param {object} settings dataTables settings object\n *  @param {string} input string to filter on\n *  @param {int} force optional - force a research of the master array (1) or not (undefined or 0)\n *  @param {bool} regex treat as a regular expression or not\n *  @param {bool} smart perform smart filtering or not\n *  @param {bool} caseInsensitive Do case insensitive matching or not\n *  @memberof DataTable#oApi\n */\nfunction _fnFilter( settings, input, force, regex, smart, caseInsensitive )\n{\n\tvar rpSearch = _fnFilterCreateSearch( input, regex, smart, caseInsensitive );\n\tvar prevSearch = settings.oPreviousSearch.sSearch;\n\tvar displayMaster = settings.aiDisplayMaster;\n\tvar display, invalidated, i;\n\tvar filtered = [];\n\n\t// Need to take account of custom filtering functions - always filter\n\tif ( DataTable.ext.search.length !== 0 ) {\n\t\tforce = true;\n\t}\n\n\t// Check if any of the rows were invalidated\n\tinvalidated = _fnFilterData( settings );\n\n\t// If the input is blank - we just want the full data set\n\tif ( input.length <= 0 ) {\n\t\tsettings.aiDisplay = displayMaster.slice();\n\t}\n\telse {\n\t\t// New search - start from the master array\n\t\tif ( invalidated ||\n\t\t\t force ||\n\t\t\t regex ||\n\t\t\t prevSearch.length > input.length ||\n\t\t\t input.indexOf(prevSearch) !== 0 ||\n\t\t\t settings.bSorted // On resort, the display master needs to be\n\t\t\t                  // re-filtered since indexes will have changed\n\t\t) {\n\t\t\tsettings.aiDisplay = displayMaster.slice();\n\t\t}\n\n\t\t// Search the display array\n\t\tdisplay = settings.aiDisplay;\n\n\t\tfor ( i=0 ; i<display.length ; i++ ) {\n\t\t\tif ( rpSearch.test( settings.aoData[ display[i] ]._sFilterRow ) ) {\n\t\t\t\tfiltered.push( display[i] );\n\t\t\t}\n\t\t}\n\n\t\tsettings.aiDisplay = filtered;\n\t}\n}\n\n\n/**\n * Build a regular expression object suitable for searching a table\n *  @param {string} sSearch string to search for\n *  @param {bool} bRegex treat as a regular expression or not\n *  @param {bool} bSmart perform smart filtering or not\n *  @param {bool} bCaseInsensitive Do case insensitive matching or not\n *  @returns {RegExp} constructed object\n *  @memberof DataTable#oApi\n */\nfunction _fnFilterCreateSearch( search, regex, smart, caseInsensitive )\n{\n\tsearch = regex ?\n\t\tsearch :\n\t\t_fnEscapeRegex( search );\n\t\n\tif ( smart ) {\n\t\t/* For smart filtering we want to allow the search to work regardless of\n\t\t * word order. We also want double quoted text to be preserved, so word\n\t\t * order is important - a la google. So this is what we want to\n\t\t * generate:\n\t\t * \n\t\t * ^(?=.*?\\bone\\b)(?=.*?\\btwo three\\b)(?=.*?\\bfour\\b).*$\n\t\t */\n\t\tvar a = $.map( search.match( /[\"\\u201C][^\"\\u201D]+[\"\\u201D]|[^ ]+/g ) || [''], function ( word ) {\n\t\t\tif ( word.charAt(0) === '\"' ) {\n\t\t\t\tvar m = word.match( /^\"(.*)\"$/ );\n\t\t\t\tword = m ? m[1] : word;\n\t\t\t}\n\t\t\telse if ( word.charAt(0) === '\\u201C' ) {\n\t\t\t\tvar m = word.match( /^\\u201C(.*)\\u201D$/ );\n\t\t\t\tword = m ? m[1] : word;\n\t\t\t}\n\n\t\t\treturn word.replace('\"', '');\n\t\t} );\n\n\t\tsearch = '^(?=.*?'+a.join( ')(?=.*?' )+').*$';\n\t}\n\n\treturn new RegExp( search, caseInsensitive ? 'i' : '' );\n}\n\n\n/**\n * Escape a string such that it can be used in a regular expression\n *  @param {string} sVal string to escape\n *  @returns {string} escaped string\n *  @memberof DataTable#oApi\n */\nvar _fnEscapeRegex = DataTable.util.escapeRegex;\n\nvar __filter_div = $('<div>')[0];\nvar __filter_div_textContent = __filter_div.textContent !== undefined;\n\n// Update the filtering data for each row if needed (by invalidation or first run)\nfunction _fnFilterData ( settings )\n{\n\tvar columns = settings.aoColumns;\n\tvar column;\n\tvar i, j, ien, jen, filterData, cellData, row;\n\tvar wasInvalidated = false;\n\n\tfor ( i=0, ien=settings.aoData.length ; i<ien ; i++ ) {\n\t\trow = settings.aoData[i];\n\n\t\tif ( ! row._aFilterData ) {\n\t\t\tfilterData = [];\n\n\t\t\tfor ( j=0, jen=columns.length ; j<jen ; j++ ) {\n\t\t\t\tcolumn = columns[j];\n\n\t\t\t\tif ( column.bSearchable ) {\n\t\t\t\t\tcellData = _fnGetCellData( settings, i, j, 'filter' );\n\n\t\t\t\t\t// Search in DataTables 1.10 is string based. In 1.11 this\n\t\t\t\t\t// should be altered to also allow strict type checking.\n\t\t\t\t\tif ( cellData === null ) {\n\t\t\t\t\t\tcellData = '';\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( typeof cellData !== 'string' && cellData.toString ) {\n\t\t\t\t\t\tcellData = cellData.toString();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tcellData = '';\n\t\t\t\t}\n\n\t\t\t\t// If it looks like there is an HTML entity in the string,\n\t\t\t\t// attempt to decode it so sorting works as expected. Note that\n\t\t\t\t// we could use a single line of jQuery to do this, but the DOM\n\t\t\t\t// method used here is much faster http://jsperf.com/html-decode\n\t\t\t\tif ( cellData.indexOf && cellData.indexOf('&') !== -1 ) {\n\t\t\t\t\t__filter_div.innerHTML = cellData;\n\t\t\t\t\tcellData = __filter_div_textContent ?\n\t\t\t\t\t\t__filter_div.textContent :\n\t\t\t\t\t\t__filter_div.innerText;\n\t\t\t\t}\n\n\t\t\t\tif ( cellData.replace ) {\n\t\t\t\t\tcellData = cellData.replace(/[\\r\\n\\u2028]/g, '');\n\t\t\t\t}\n\n\t\t\t\tfilterData.push( cellData );\n\t\t\t}\n\n\t\t\trow._aFilterData = filterData;\n\t\t\trow._sFilterRow = filterData.join('  ');\n\t\t\twasInvalidated = true;\n\t\t}\n\t}\n\n\treturn wasInvalidated;\n}\n\n\n/**\n * Convert from the internal Hungarian notation to camelCase for external\n * interaction\n *  @param {object} obj Object to convert\n *  @returns {object} Inverted object\n *  @memberof DataTable#oApi\n */\nfunction _fnSearchToCamel ( obj )\n{\n\treturn {\n\t\tsearch:          obj.sSearch,\n\t\tsmart:           obj.bSmart,\n\t\tregex:           obj.bRegex,\n\t\tcaseInsensitive: obj.bCaseInsensitive\n\t};\n}\n\n\n\n/**\n * Convert from camelCase notation to the internal Hungarian. We could use the\n * Hungarian convert function here, but this is cleaner\n *  @param {object} obj Object to convert\n *  @returns {object} Inverted object\n *  @memberof DataTable#oApi\n */\nfunction _fnSearchToHung ( obj )\n{\n\treturn {\n\t\tsSearch:          obj.search,\n\t\tbSmart:           obj.smart,\n\t\tbRegex:           obj.regex,\n\t\tbCaseInsensitive: obj.caseInsensitive\n\t};\n}\n\n/**\n * Generate the node required for the info display\n *  @param {object} oSettings dataTables settings object\n *  @returns {node} Information element\n *  @memberof DataTable#oApi\n */\nfunction _fnFeatureHtmlInfo ( settings )\n{\n\tvar\n\t\ttid = settings.sTableId,\n\t\tnodes = settings.aanFeatures.i,\n\t\tn = $('<div/>', {\n\t\t\t'class': settings.oClasses.sInfo,\n\t\t\t'id': ! nodes ? tid+'_info' : null\n\t\t} );\n\n\tif ( ! nodes ) {\n\t\t// Update display on each draw\n\t\tsettings.aoDrawCallback.push( {\n\t\t\t\"fn\": _fnUpdateInfo,\n\t\t\t\"sName\": \"information\"\n\t\t} );\n\n\t\tn\n\t\t\t.attr( 'role', 'status' )\n\t\t\t.attr( 'aria-live', 'polite' );\n\n\t\t// Table is described by our info div\n\t\t$(settings.nTable).attr( 'aria-describedby', tid+'_info' );\n\t}\n\n\treturn n[0];\n}\n\n\n/**\n * Update the information elements in the display\n *  @param {object} settings dataTables settings object\n *  @memberof DataTable#oApi\n */\nfunction _fnUpdateInfo ( settings )\n{\n\t/* Show information about the table */\n\tvar nodes = settings.aanFeatures.i;\n\tif ( nodes.length === 0 ) {\n\t\treturn;\n\t}\n\n\tvar\n\t\tlang  = settings.oLanguage,\n\t\tstart = settings._iDisplayStart+1,\n\t\tend   = settings.fnDisplayEnd(),\n\t\tmax   = settings.fnRecordsTotal(),\n\t\ttotal = settings.fnRecordsDisplay(),\n\t\tout   = total ?\n\t\t\tlang.sInfo :\n\t\t\tlang.sInfoEmpty;\n\n\tif ( total !== max ) {\n\t\t/* Record set after filtering */\n\t\tout += ' ' + lang.sInfoFiltered;\n\t}\n\n\t// Convert the macros\n\tout += lang.sInfoPostFix;\n\tout = _fnInfoMacros( settings, out );\n\n\tvar callback = lang.fnInfoCallback;\n\tif ( callback !== null ) {\n\t\tout = callback.call( settings.oInstance,\n\t\t\tsettings, start, end, max, total, out\n\t\t);\n\t}\n\n\t$(nodes).html( out );\n}\n\n\nfunction _fnInfoMacros ( settings, str )\n{\n\t// When infinite scrolling, we are always starting at 1. _iDisplayStart is used only\n\t// internally\n\tvar\n\t\tformatter  = settings.fnFormatNumber,\n\t\tstart      = settings._iDisplayStart+1,\n\t\tlen        = settings._iDisplayLength,\n\t\tvis        = settings.fnRecordsDisplay(),\n\t\tall        = len === -1;\n\n\treturn str.\n\t\treplace(/_START_/g, formatter.call( settings, start ) ).\n\t\treplace(/_END_/g,   formatter.call( settings, settings.fnDisplayEnd() ) ).\n\t\treplace(/_MAX_/g,   formatter.call( settings, settings.fnRecordsTotal() ) ).\n\t\treplace(/_TOTAL_/g, formatter.call( settings, vis ) ).\n\t\treplace(/_PAGE_/g,  formatter.call( settings, all ? 1 : Math.ceil( start / len ) ) ).\n\t\treplace(/_PAGES_/g, formatter.call( settings, all ? 1 : Math.ceil( vis / len ) ) );\n}\n\n\n\n/**\n * Draw the table for the first time, adding all required features\n *  @param {object} settings dataTables settings object\n *  @memberof DataTable#oApi\n */\nfunction _fnInitialise ( settings )\n{\n\tvar i, iLen, iAjaxStart=settings.iInitDisplayStart;\n\tvar columns = settings.aoColumns, column;\n\tvar features = settings.oFeatures;\n\tvar deferLoading = settings.bDeferLoading; // value modified by the draw\n\n\t/* Ensure that the table data is fully initialised */\n\tif ( ! settings.bInitialised ) {\n\t\tsetTimeout( function(){ _fnInitialise( settings ); }, 200 );\n\t\treturn;\n\t}\n\n\t/* Show the display HTML options */\n\t_fnAddOptionsHtml( settings );\n\n\t/* Build and draw the header / footer for the table */\n\t_fnBuildHead( settings );\n\t_fnDrawHead( settings, settings.aoHeader );\n\t_fnDrawHead( settings, settings.aoFooter );\n\n\t/* Okay to show that something is going on now */\n\t_fnProcessingDisplay( settings, true );\n\n\t/* Calculate sizes for columns */\n\tif ( features.bAutoWidth ) {\n\t\t_fnCalculateColumnWidths( settings );\n\t}\n\n\tfor ( i=0, iLen=columns.length ; i<iLen ; i++ ) {\n\t\tcolumn = columns[i];\n\n\t\tif ( column.sWidth ) {\n\t\t\tcolumn.nTh.style.width = _fnStringToCss( column.sWidth );\n\t\t}\n\t}\n\n\t_fnCallbackFire( settings, null, 'preInit', [settings] );\n\n\t// If there is default sorting required - let's do it. The sort function\n\t// will do the drawing for us. Otherwise we draw the table regardless of the\n\t// Ajax source - this allows the table to look initialised for Ajax sourcing\n\t// data (show 'loading' message possibly)\n\t_fnReDraw( settings );\n\n\t// Server-side processing init complete is done by _fnAjaxUpdateDraw\n\tvar dataSrc = _fnDataSource( settings );\n\tif ( dataSrc != 'ssp' || deferLoading ) {\n\t\t// if there is an ajax source load the data\n\t\tif ( dataSrc == 'ajax' ) {\n\t\t\t_fnBuildAjax( settings, [], function(json) {\n\t\t\t\tvar aData = _fnAjaxDataSrc( settings, json );\n\n\t\t\t\t// Got the data - add it to the table\n\t\t\t\tfor ( i=0 ; i<aData.length ; i++ ) {\n\t\t\t\t\t_fnAddData( settings, aData[i] );\n\t\t\t\t}\n\n\t\t\t\t// Reset the init display for cookie saving. We've already done\n\t\t\t\t// a filter, and therefore cleared it before. So we need to make\n\t\t\t\t// it appear 'fresh'\n\t\t\t\tsettings.iInitDisplayStart = iAjaxStart;\n\n\t\t\t\t_fnReDraw( settings );\n\n\t\t\t\t_fnProcessingDisplay( settings, false );\n\t\t\t\t_fnInitComplete( settings, json );\n\t\t\t}, settings );\n\t\t}\n\t\telse {\n\t\t\t_fnProcessingDisplay( settings, false );\n\t\t\t_fnInitComplete( settings );\n\t\t}\n\t}\n}\n\n\n/**\n * Draw the table for the first time, adding all required features\n *  @param {object} oSettings dataTables settings object\n *  @param {object} [json] JSON from the server that completed the table, if using Ajax source\n *    with client-side processing (optional)\n *  @memberof DataTable#oApi\n */\nfunction _fnInitComplete ( settings, json )\n{\n\tsettings._bInitComplete = true;\n\n\t// When data was added after the initialisation (data or Ajax) we need to\n\t// calculate the column sizing\n\tif ( json || settings.oInit.aaData ) {\n\t\t_fnAdjustColumnSizing( settings );\n\t}\n\n\t_fnCallbackFire( settings, null, 'plugin-init', [settings, json] );\n\t_fnCallbackFire( settings, 'aoInitComplete', 'init', [settings, json] );\n}\n\n\nfunction _fnLengthChange ( settings, val )\n{\n\tvar len = parseInt( val, 10 );\n\tsettings._iDisplayLength = len;\n\n\t_fnLengthOverflow( settings );\n\n\t// Fire length change event\n\t_fnCallbackFire( settings, null, 'length', [settings, len] );\n}\n\n\n/**\n * Generate the node required for user display length changing\n *  @param {object} settings dataTables settings object\n *  @returns {node} Display length feature node\n *  @memberof DataTable#oApi\n */\nfunction _fnFeatureHtmlLength ( settings )\n{\n\tvar\n\t\tclasses  = settings.oClasses,\n\t\ttableId  = settings.sTableId,\n\t\tmenu     = settings.aLengthMenu,\n\t\td2       = Array.isArray( menu[0] ),\n\t\tlengths  = d2 ? menu[0] : menu,\n\t\tlanguage = d2 ? menu[1] : menu;\n\n\tvar select = $('<select/>', {\n\t\t'name':          tableId+'_length',\n\t\t'aria-controls': tableId,\n\t\t'class':         classes.sLengthSelect\n\t} );\n\n\tfor ( var i=0, ien=lengths.length ; i<ien ; i++ ) {\n\t\tselect[0][ i ] = new Option(\n\t\t\ttypeof language[i] === 'number' ?\n\t\t\t\tsettings.fnFormatNumber( language[i] ) :\n\t\t\t\tlanguage[i],\n\t\t\tlengths[i]\n\t\t);\n\t}\n\n\tvar div = $('<div><label/></div>').addClass( classes.sLength );\n\tif ( ! settings.aanFeatures.l ) {\n\t\tdiv[0].id = tableId+'_length';\n\t}\n\n\tdiv.children().append(\n\t\tsettings.oLanguage.sLengthMenu.replace( '_MENU_', select[0].outerHTML )\n\t);\n\n\t// Can't use `select` variable as user might provide their own and the\n\t// reference is broken by the use of outerHTML\n\t$('select', div)\n\t\t.val( settings._iDisplayLength )\n\t\t.on( 'change.DT', function(e) {\n\t\t\t_fnLengthChange( settings, $(this).val() );\n\t\t\t_fnDraw( settings );\n\t\t} );\n\n\t// Update node value whenever anything changes the table's length\n\t$(settings.nTable).on( 'length.dt.DT', function (e, s, len) {\n\t\tif ( settings === s ) {\n\t\t\t$('select', div).val( len );\n\t\t}\n\t} );\n\n\treturn div[0];\n}\n\n\n\n/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n * Note that most of the paging logic is done in\n * DataTable.ext.pager\n */\n\n/**\n * Generate the node required for default pagination\n *  @param {object} oSettings dataTables settings object\n *  @returns {node} Pagination feature node\n *  @memberof DataTable#oApi\n */\nfunction _fnFeatureHtmlPaginate ( settings )\n{\n\tvar\n\t\ttype   = settings.sPaginationType,\n\t\tplugin = DataTable.ext.pager[ type ],\n\t\tmodern = typeof plugin === 'function',\n\t\tredraw = function( settings ) {\n\t\t\t_fnDraw( settings );\n\t\t},\n\t\tnode = $('<div/>').addClass( settings.oClasses.sPaging + type )[0],\n\t\tfeatures = settings.aanFeatures;\n\n\tif ( ! modern ) {\n\t\tplugin.fnInit( settings, node, redraw );\n\t}\n\n\t/* Add a draw callback for the pagination on first instance, to update the paging display */\n\tif ( ! features.p )\n\t{\n\t\tnode.id = settings.sTableId+'_paginate';\n\n\t\tsettings.aoDrawCallback.push( {\n\t\t\t\"fn\": function( settings ) {\n\t\t\t\tif ( modern ) {\n\t\t\t\t\tvar\n\t\t\t\t\t\tstart      = settings._iDisplayStart,\n\t\t\t\t\t\tlen        = settings._iDisplayLength,\n\t\t\t\t\t\tvisRecords = settings.fnRecordsDisplay(),\n\t\t\t\t\t\tall        = len === -1,\n\t\t\t\t\t\tpage = all ? 0 : Math.ceil( start / len ),\n\t\t\t\t\t\tpages = all ? 1 : Math.ceil( visRecords / len ),\n\t\t\t\t\t\tbuttons = plugin(page, pages),\n\t\t\t\t\t\ti, ien;\n\n\t\t\t\t\tfor ( i=0, ien=features.p.length ; i<ien ; i++ ) {\n\t\t\t\t\t\t_fnRenderer( settings, 'pageButton' )(\n\t\t\t\t\t\t\tsettings, features.p[i], i, buttons, page, pages\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tplugin.fnUpdate( settings, redraw );\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"sName\": \"pagination\"\n\t\t} );\n\t}\n\n\treturn node;\n}\n\n\n/**\n * Alter the display settings to change the page\n *  @param {object} settings DataTables settings object\n *  @param {string|int} action Paging action to take: \"first\", \"previous\",\n *    \"next\" or \"last\" or page number to jump to (integer)\n *  @param [bool] redraw Automatically draw the update or not\n *  @returns {bool} true page has changed, false - no change\n *  @memberof DataTable#oApi\n */\nfunction _fnPageChange ( settings, action, redraw )\n{\n\tvar\n\t\tstart     = settings._iDisplayStart,\n\t\tlen       = settings._iDisplayLength,\n\t\trecords   = settings.fnRecordsDisplay();\n\n\tif ( records === 0 || len === -1 )\n\t{\n\t\tstart = 0;\n\t}\n\telse if ( typeof action === \"number\" )\n\t{\n\t\tstart = action * len;\n\n\t\tif ( start > records )\n\t\t{\n\t\t\tstart = 0;\n\t\t}\n\t}\n\telse if ( action == \"first\" )\n\t{\n\t\tstart = 0;\n\t}\n\telse if ( action == \"previous\" )\n\t{\n\t\tstart = len >= 0 ?\n\t\t\tstart - len :\n\t\t\t0;\n\n\t\tif ( start < 0 )\n\t\t{\n\t\t  start = 0;\n\t\t}\n\t}\n\telse if ( action == \"next\" )\n\t{\n\t\tif ( start + len < records )\n\t\t{\n\t\t\tstart += len;\n\t\t}\n\t}\n\telse if ( action == \"last\" )\n\t{\n\t\tstart = Math.floor( (records-1) / len) * len;\n\t}\n\telse\n\t{\n\t\t_fnLog( settings, 0, \"Unknown paging action: \"+action, 5 );\n\t}\n\n\tvar changed = settings._iDisplayStart !== start;\n\tsettings._iDisplayStart = start;\n\n\tif ( changed ) {\n\t\t_fnCallbackFire( settings, null, 'page', [settings] );\n\n\t\tif ( redraw ) {\n\t\t\t_fnDraw( settings );\n\t\t}\n\t}\n\telse {\n\t\t// No change event - paging was called, but no change\n\t\t_fnCallbackFire( settings, null, 'page-nc', [settings] );\n\t}\n\n\treturn changed;\n}\n\n\n\n/**\n * Generate the node required for the processing node\n *  @param {object} settings dataTables settings object\n *  @returns {node} Processing element\n *  @memberof DataTable#oApi\n */\nfunction _fnFeatureHtmlProcessing ( settings )\n{\n\treturn $('<div/>', {\n\t\t\t'id': ! settings.aanFeatures.r ? settings.sTableId+'_processing' : null,\n\t\t\t'class': settings.oClasses.sProcessing,\n\t\t\t'role': 'status'\n\t\t} )\n\t\t.html( settings.oLanguage.sProcessing )\n\t\t.append('<div><div></div><div></div><div></div><div></div></div>')\n\t\t.insertBefore( settings.nTable )[0];\n}\n\n\n/**\n * Display or hide the processing indicator\n *  @param {object} settings dataTables settings object\n *  @param {bool} show Show the processing indicator (true) or not (false)\n *  @memberof DataTable#oApi\n */\nfunction _fnProcessingDisplay ( settings, show )\n{\n\tif ( settings.oFeatures.bProcessing ) {\n\t\t$(settings.aanFeatures.r).css( 'display', show ? 'block' : 'none' );\n\t}\n\n\t_fnCallbackFire( settings, null, 'processing', [settings, show] );\n}\n\n/**\n * Add any control elements for the table - specifically scrolling\n *  @param {object} settings dataTables settings object\n *  @returns {node} Node to add to the DOM\n *  @memberof DataTable#oApi\n */\nfunction _fnFeatureHtmlTable ( settings )\n{\n\tvar table = $(settings.nTable);\n\n\t// Scrolling from here on in\n\tvar scroll = settings.oScroll;\n\n\tif ( scroll.sX === '' && scroll.sY === '' ) {\n\t\treturn settings.nTable;\n\t}\n\n\tvar scrollX = scroll.sX;\n\tvar scrollY = scroll.sY;\n\tvar classes = settings.oClasses;\n\tvar caption = table.children('caption');\n\tvar captionSide = caption.length ? caption[0]._captionSide : null;\n\tvar headerClone = $( table[0].cloneNode(false) );\n\tvar footerClone = $( table[0].cloneNode(false) );\n\tvar footer = table.children('tfoot');\n\tvar _div = '<div/>';\n\tvar size = function ( s ) {\n\t\treturn !s ? null : _fnStringToCss( s );\n\t};\n\n\tif ( ! footer.length ) {\n\t\tfooter = null;\n\t}\n\n\t/*\n\t * The HTML structure that we want to generate in this function is:\n\t *  div - scroller\n\t *    div - scroll head\n\t *      div - scroll head inner\n\t *        table - scroll head table\n\t *          thead - thead\n\t *    div - scroll body\n\t *      table - table (master table)\n\t *        thead - thead clone for sizing\n\t *        tbody - tbody\n\t *    div - scroll foot\n\t *      div - scroll foot inner\n\t *        table - scroll foot table\n\t *          tfoot - tfoot\n\t */\n\tvar scroller = $( _div, { 'class': classes.sScrollWrapper } )\n\t\t.append(\n\t\t\t$(_div, { 'class': classes.sScrollHead } )\n\t\t\t\t.css( {\n\t\t\t\t\toverflow: 'hidden',\n\t\t\t\t\tposition: 'relative',\n\t\t\t\t\tborder: 0,\n\t\t\t\t\twidth: scrollX ? size(scrollX) : '100%'\n\t\t\t\t} )\n\t\t\t\t.append(\n\t\t\t\t\t$(_div, { 'class': classes.sScrollHeadInner } )\n\t\t\t\t\t\t.css( {\n\t\t\t\t\t\t\t'box-sizing': 'content-box',\n\t\t\t\t\t\t\twidth: scroll.sXInner || '100%'\n\t\t\t\t\t\t} )\n\t\t\t\t\t\t.append(\n\t\t\t\t\t\t\theaderClone\n\t\t\t\t\t\t\t\t.removeAttr('id')\n\t\t\t\t\t\t\t\t.css( 'margin-left', 0 )\n\t\t\t\t\t\t\t\t.append( captionSide === 'top' ? caption : null )\n\t\t\t\t\t\t\t\t.append(\n\t\t\t\t\t\t\t\t\ttable.children('thead')\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t)\n\t\t)\n\t\t.append(\n\t\t\t$(_div, { 'class': classes.sScrollBody } )\n\t\t\t\t.css( {\n\t\t\t\t\tposition: 'relative',\n\t\t\t\t\toverflow: 'auto',\n\t\t\t\t\twidth: size( scrollX )\n\t\t\t\t} )\n\t\t\t\t.append( table )\n\t\t);\n\n\tif ( footer ) {\n\t\tscroller.append(\n\t\t\t$(_div, { 'class': classes.sScrollFoot } )\n\t\t\t\t.css( {\n\t\t\t\t\toverflow: 'hidden',\n\t\t\t\t\tborder: 0,\n\t\t\t\t\twidth: scrollX ? size(scrollX) : '100%'\n\t\t\t\t} )\n\t\t\t\t.append(\n\t\t\t\t\t$(_div, { 'class': classes.sScrollFootInner } )\n\t\t\t\t\t\t.append(\n\t\t\t\t\t\t\tfooterClone\n\t\t\t\t\t\t\t\t.removeAttr('id')\n\t\t\t\t\t\t\t\t.css( 'margin-left', 0 )\n\t\t\t\t\t\t\t\t.append( captionSide === 'bottom' ? caption : null )\n\t\t\t\t\t\t\t\t.append(\n\t\t\t\t\t\t\t\t\ttable.children('tfoot')\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t)\n\t\t);\n\t}\n\n\tvar children = scroller.children();\n\tvar scrollHead = children[0];\n\tvar scrollBody = children[1];\n\tvar scrollFoot = footer ? children[2] : null;\n\n\t// When the body is scrolled, then we also want to scroll the headers\n\tif ( scrollX ) {\n\t\t$(scrollBody).on( 'scroll.DT', function (e) {\n\t\t\tvar scrollLeft = this.scrollLeft;\n\n\t\t\tscrollHead.scrollLeft = scrollLeft;\n\n\t\t\tif ( footer ) {\n\t\t\t\tscrollFoot.scrollLeft = scrollLeft;\n\t\t\t}\n\t\t} );\n\t}\n\n\t$(scrollBody).css('max-height', scrollY);\n\tif (! scroll.bCollapse) {\n\t\t$(scrollBody).css('height', scrollY);\n\t}\n\n\tsettings.nScrollHead = scrollHead;\n\tsettings.nScrollBody = scrollBody;\n\tsettings.nScrollFoot = scrollFoot;\n\n\t// On redraw - align columns\n\tsettings.aoDrawCallback.push( {\n\t\t\"fn\": _fnScrollDraw,\n\t\t\"sName\": \"scrolling\"\n\t} );\n\n\treturn scroller[0];\n}\n\n\n\n/**\n * Update the header, footer and body tables for resizing - i.e. column\n * alignment.\n *\n * Welcome to the most horrible function DataTables. The process that this\n * function follows is basically:\n *   1. Re-create the table inside the scrolling div\n *   2. Take live measurements from the DOM\n *   3. Apply the measurements to align the columns\n *   4. Clean up\n *\n *  @param {object} settings dataTables settings object\n *  @memberof DataTable#oApi\n */\nfunction _fnScrollDraw ( settings )\n{\n\t// Given that this is such a monster function, a lot of variables are use\n\t// to try and keep the minimised size as small as possible\n\tvar\n\t\tscroll         = settings.oScroll,\n\t\tscrollX        = scroll.sX,\n\t\tscrollXInner   = scroll.sXInner,\n\t\tscrollY        = scroll.sY,\n\t\tbarWidth       = scroll.iBarWidth,\n\t\tdivHeader      = $(settings.nScrollHead),\n\t\tdivHeaderStyle = divHeader[0].style,\n\t\tdivHeaderInner = divHeader.children('div'),\n\t\tdivHeaderInnerStyle = divHeaderInner[0].style,\n\t\tdivHeaderTable = divHeaderInner.children('table'),\n\t\tdivBodyEl      = settings.nScrollBody,\n\t\tdivBody        = $(divBodyEl),\n\t\tdivBodyStyle   = divBodyEl.style,\n\t\tdivFooter      = $(settings.nScrollFoot),\n\t\tdivFooterInner = divFooter.children('div'),\n\t\tdivFooterTable = divFooterInner.children('table'),\n\t\theader         = $(settings.nTHead),\n\t\ttable          = $(settings.nTable),\n\t\ttableEl        = table[0],\n\t\ttableStyle     = tableEl.style,\n\t\tfooter         = settings.nTFoot ? $(settings.nTFoot) : null,\n\t\tbrowser        = settings.oBrowser,\n\t\tie67           = browser.bScrollOversize,\n\t\tdtHeaderCells  = _pluck( settings.aoColumns, 'nTh' ),\n\t\theaderTrgEls, footerTrgEls,\n\t\theaderSrcEls, footerSrcEls,\n\t\theaderCopy, footerCopy,\n\t\theaderWidths=[], footerWidths=[],\n\t\theaderContent=[], footerContent=[],\n\t\tidx, correction, sanityWidth,\n\t\tzeroOut = function(nSizer) {\n\t\t\tvar style = nSizer.style;\n\t\t\tstyle.paddingTop = \"0\";\n\t\t\tstyle.paddingBottom = \"0\";\n\t\t\tstyle.borderTopWidth = \"0\";\n\t\t\tstyle.borderBottomWidth = \"0\";\n\t\t\tstyle.height = 0;\n\t\t};\n\n\t// If the scrollbar visibility has changed from the last draw, we need to\n\t// adjust the column sizes as the table width will have changed to account\n\t// for the scrollbar\n\tvar scrollBarVis = divBodyEl.scrollHeight > divBodyEl.clientHeight;\n\t\n\tif ( settings.scrollBarVis !== scrollBarVis && settings.scrollBarVis !== undefined ) {\n\t\tsettings.scrollBarVis = scrollBarVis;\n\t\t_fnAdjustColumnSizing( settings );\n\t\treturn; // adjust column sizing will call this function again\n\t}\n\telse {\n\t\tsettings.scrollBarVis = scrollBarVis;\n\t}\n\n\t/*\n\t * 1. Re-create the table inside the scrolling div\n\t */\n\n\t// Remove the old minimised thead and tfoot elements in the inner table\n\ttable.children('thead, tfoot').remove();\n\n\tif ( footer ) {\n\t\tfooterCopy = footer.clone().prependTo( table );\n\t\tfooterTrgEls = footer.find('tr'); // the original tfoot is in its own table and must be sized\n\t\tfooterSrcEls = footerCopy.find('tr');\n\t\tfooterCopy.find('[id]').removeAttr('id');\n\t}\n\n\t// Clone the current header and footer elements and then place it into the inner table\n\theaderCopy = header.clone().prependTo( table );\n\theaderTrgEls = header.find('tr'); // original header is in its own table\n\theaderSrcEls = headerCopy.find('tr');\n\theaderCopy.find('th, td').removeAttr('tabindex');\n\theaderCopy.find('[id]').removeAttr('id');\n\n\n\t/*\n\t * 2. Take live measurements from the DOM - do not alter the DOM itself!\n\t */\n\n\t// Remove old sizing and apply the calculated column widths\n\t// Get the unique column headers in the newly created (cloned) header. We want to apply the\n\t// calculated sizes to this header\n\tif ( ! scrollX )\n\t{\n\t\tdivBodyStyle.width = '100%';\n\t\tdivHeader[0].style.width = '100%';\n\t}\n\n\t$.each( _fnGetUniqueThs( settings, headerCopy ), function ( i, el ) {\n\t\tidx = _fnVisibleToColumnIndex( settings, i );\n\t\tel.style.width = settings.aoColumns[idx].sWidth;\n\t} );\n\n\tif ( footer ) {\n\t\t_fnApplyToChildren( function(n) {\n\t\t\tn.style.width = \"\";\n\t\t}, footerSrcEls );\n\t}\n\n\t// Size the table as a whole\n\tsanityWidth = table.outerWidth();\n\tif ( scrollX === \"\" ) {\n\t\t// No x scrolling\n\t\ttableStyle.width = \"100%\";\n\n\t\t// IE7 will make the width of the table when 100% include the scrollbar\n\t\t// - which is shouldn't. When there is a scrollbar we need to take this\n\t\t// into account.\n\t\tif ( ie67 && (table.find('tbody').height() > divBodyEl.offsetHeight ||\n\t\t\tdivBody.css('overflow-y') == \"scroll\")\n\t\t) {\n\t\t\ttableStyle.width = _fnStringToCss( table.outerWidth() - barWidth);\n\t\t}\n\n\t\t// Recalculate the sanity width\n\t\tsanityWidth = table.outerWidth();\n\t}\n\telse if ( scrollXInner !== \"\" ) {\n\t\t// legacy x scroll inner has been given - use it\n\t\ttableStyle.width = _fnStringToCss(scrollXInner);\n\n\t\t// Recalculate the sanity width\n\t\tsanityWidth = table.outerWidth();\n\t}\n\n\t// Hidden header should have zero height, so remove padding and borders. Then\n\t// set the width based on the real headers\n\n\t// Apply all styles in one pass\n\t_fnApplyToChildren( zeroOut, headerSrcEls );\n\n\t// Read all widths in next pass\n\t_fnApplyToChildren( function(nSizer) {\n\t\tvar style = window.getComputedStyle ?\n\t\t\twindow.getComputedStyle(nSizer).width :\n\t\t\t_fnStringToCss( $(nSizer).width() );\n\n\t\theaderContent.push( nSizer.innerHTML );\n\t\theaderWidths.push( style );\n\t}, headerSrcEls );\n\n\t// Apply all widths in final pass\n\t_fnApplyToChildren( function(nToSize, i) {\n\t\tnToSize.style.width = headerWidths[i];\n\t}, headerTrgEls );\n\n\t$(headerSrcEls).css('height', 0);\n\n\t/* Same again with the footer if we have one */\n\tif ( footer )\n\t{\n\t\t_fnApplyToChildren( zeroOut, footerSrcEls );\n\n\t\t_fnApplyToChildren( function(nSizer) {\n\t\t\tfooterContent.push( nSizer.innerHTML );\n\t\t\tfooterWidths.push( _fnStringToCss( $(nSizer).css('width') ) );\n\t\t}, footerSrcEls );\n\n\t\t_fnApplyToChildren( function(nToSize, i) {\n\t\t\tnToSize.style.width = footerWidths[i];\n\t\t}, footerTrgEls );\n\n\t\t$(footerSrcEls).height(0);\n\t}\n\n\n\t/*\n\t * 3. Apply the measurements\n\t */\n\n\t// \"Hide\" the header and footer that we used for the sizing. We need to keep\n\t// the content of the cell so that the width applied to the header and body\n\t// both match, but we want to hide it completely. We want to also fix their\n\t// width to what they currently are\n\t_fnApplyToChildren( function(nSizer, i) {\n\t\tnSizer.innerHTML = '<div class=\"dataTables_sizing\">'+headerContent[i]+'</div>';\n\t\tnSizer.childNodes[0].style.height = \"0\";\n\t\tnSizer.childNodes[0].style.overflow = \"hidden\";\n\t\tnSizer.style.width = headerWidths[i];\n\t}, headerSrcEls );\n\n\tif ( footer )\n\t{\n\t\t_fnApplyToChildren( function(nSizer, i) {\n\t\t\tnSizer.innerHTML = '<div class=\"dataTables_sizing\">'+footerContent[i]+'</div>';\n\t\t\tnSizer.childNodes[0].style.height = \"0\";\n\t\t\tnSizer.childNodes[0].style.overflow = \"hidden\";\n\t\t\tnSizer.style.width = footerWidths[i];\n\t\t}, footerSrcEls );\n\t}\n\n\t// Sanity check that the table is of a sensible width. If not then we are going to get\n\t// misalignment - try to prevent this by not allowing the table to shrink below its min width\n\tif ( Math.round(table.outerWidth()) < Math.round(sanityWidth) )\n\t{\n\t\t// The min width depends upon if we have a vertical scrollbar visible or not */\n\t\tcorrection = ((divBodyEl.scrollHeight > divBodyEl.offsetHeight ||\n\t\t\tdivBody.css('overflow-y') == \"scroll\")) ?\n\t\t\t\tsanityWidth+barWidth :\n\t\t\t\tsanityWidth;\n\n\t\t// IE6/7 are a law unto themselves...\n\t\tif ( ie67 && (divBodyEl.scrollHeight >\n\t\t\tdivBodyEl.offsetHeight || divBody.css('overflow-y') == \"scroll\")\n\t\t) {\n\t\t\ttableStyle.width = _fnStringToCss( correction-barWidth );\n\t\t}\n\n\t\t// And give the user a warning that we've stopped the table getting too small\n\t\tif ( scrollX === \"\" || scrollXInner !== \"\" ) {\n\t\t\t_fnLog( settings, 1, 'Possible column misalignment', 6 );\n\t\t}\n\t}\n\telse\n\t{\n\t\tcorrection = '100%';\n\t}\n\n\t// Apply to the container elements\n\tdivBodyStyle.width = _fnStringToCss( correction );\n\tdivHeaderStyle.width = _fnStringToCss( correction );\n\n\tif ( footer ) {\n\t\tsettings.nScrollFoot.style.width = _fnStringToCss( correction );\n\t}\n\n\n\t/*\n\t * 4. Clean up\n\t */\n\tif ( ! scrollY ) {\n\t\t/* IE7< puts a vertical scrollbar in place (when it shouldn't be) due to subtracting\n\t\t * the scrollbar height from the visible display, rather than adding it on. We need to\n\t\t * set the height in order to sort this. Don't want to do it in any other browsers.\n\t\t */\n\t\tif ( ie67 ) {\n\t\t\tdivBodyStyle.height = _fnStringToCss( tableEl.offsetHeight+barWidth );\n\t\t}\n\t}\n\n\t/* Finally set the width's of the header and footer tables */\n\tvar iOuterWidth = table.outerWidth();\n\tdivHeaderTable[0].style.width = _fnStringToCss( iOuterWidth );\n\tdivHeaderInnerStyle.width = _fnStringToCss( iOuterWidth );\n\n\t// Figure out if there are scrollbar present - if so then we need a the header and footer to\n\t// provide a bit more space to allow \"overflow\" scrolling (i.e. past the scrollbar)\n\tvar bScrolling = table.height() > divBodyEl.clientHeight || divBody.css('overflow-y') == \"scroll\";\n\tvar padding = 'padding' + (browser.bScrollbarLeft ? 'Left' : 'Right' );\n\tdivHeaderInnerStyle[ padding ] = bScrolling ? barWidth+\"px\" : \"0px\";\n\n\tif ( footer ) {\n\t\tdivFooterTable[0].style.width = _fnStringToCss( iOuterWidth );\n\t\tdivFooterInner[0].style.width = _fnStringToCss( iOuterWidth );\n\t\tdivFooterInner[0].style[padding] = bScrolling ? barWidth+\"px\" : \"0px\";\n\t}\n\n\t// Correct DOM ordering for colgroup - comes before the thead\n\ttable.children('colgroup').insertBefore( table.children('thead') );\n\n\t/* Adjust the position of the header in case we loose the y-scrollbar */\n\tdivBody.trigger('scroll');\n\n\t// If sorting or filtering has occurred, jump the scrolling back to the top\n\t// only if we aren't holding the position\n\tif ( (settings.bSorted || settings.bFiltered) && ! settings._drawHold ) {\n\t\tdivBodyEl.scrollTop = 0;\n\t}\n}\n\n\n\n/**\n * Apply a given function to the display child nodes of an element array (typically\n * TD children of TR rows\n *  @param {function} fn Method to apply to the objects\n *  @param array {nodes} an1 List of elements to look through for display children\n *  @param array {nodes} an2 Another list (identical structure to the first) - optional\n *  @memberof DataTable#oApi\n */\nfunction _fnApplyToChildren( fn, an1, an2 )\n{\n\tvar index=0, i=0, iLen=an1.length;\n\tvar nNode1, nNode2;\n\n\twhile ( i < iLen ) {\n\t\tnNode1 = an1[i].firstChild;\n\t\tnNode2 = an2 ? an2[i].firstChild : null;\n\n\t\twhile ( nNode1 ) {\n\t\t\tif ( nNode1.nodeType === 1 ) {\n\t\t\t\tif ( an2 ) {\n\t\t\t\t\tfn( nNode1, nNode2, index );\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tfn( nNode1, index );\n\t\t\t\t}\n\n\t\t\t\tindex++;\n\t\t\t}\n\n\t\t\tnNode1 = nNode1.nextSibling;\n\t\t\tnNode2 = an2 ? nNode2.nextSibling : null;\n\t\t}\n\n\t\ti++;\n\t}\n}\n\n\n\nvar __re_html_remove = /<.*?>/g;\n\n\n/**\n * Calculate the width of columns for the table\n *  @param {object} oSettings dataTables settings object\n *  @memberof DataTable#oApi\n */\nfunction _fnCalculateColumnWidths ( oSettings )\n{\n\tvar\n\t\ttable = oSettings.nTable,\n\t\tcolumns = oSettings.aoColumns,\n\t\tscroll = oSettings.oScroll,\n\t\tscrollY = scroll.sY,\n\t\tscrollX = scroll.sX,\n\t\tscrollXInner = scroll.sXInner,\n\t\tcolumnCount = columns.length,\n\t\tvisibleColumns = _fnGetColumns( oSettings, 'bVisible' ),\n\t\theaderCells = $('th', oSettings.nTHead),\n\t\ttableWidthAttr = table.getAttribute('width'), // from DOM element\n\t\ttableContainer = table.parentNode,\n\t\tuserInputs = false,\n\t\ti, column, columnIdx, width, outerWidth,\n\t\tbrowser = oSettings.oBrowser,\n\t\tie67 = browser.bScrollOversize;\n\n\tvar styleWidth = table.style.width;\n\tif ( styleWidth && styleWidth.indexOf('%') !== -1 ) {\n\t\ttableWidthAttr = styleWidth;\n\t}\n\n\t/* Convert any user input sizes into pixel sizes */\n\tfor ( i=0 ; i<visibleColumns.length ; i++ ) {\n\t\tcolumn = columns[ visibleColumns[i] ];\n\n\t\tif ( column.sWidth !== null ) {\n\t\t\tcolumn.sWidth = _fnConvertToWidth( column.sWidthOrig, tableContainer );\n\n\t\t\tuserInputs = true;\n\t\t}\n\t}\n\n\t/* If the number of columns in the DOM equals the number that we have to\n\t * process in DataTables, then we can use the offsets that are created by\n\t * the web- browser. No custom sizes can be set in order for this to happen,\n\t * nor scrolling used\n\t */\n\tif ( ie67 || ! userInputs && ! scrollX && ! scrollY &&\n\t     columnCount == _fnVisbleColumns( oSettings ) &&\n\t     columnCount == headerCells.length\n\t) {\n\t\tfor ( i=0 ; i<columnCount ; i++ ) {\n\t\t\tvar colIdx = _fnVisibleToColumnIndex( oSettings, i );\n\n\t\t\tif ( colIdx !== null ) {\n\t\t\t\tcolumns[ colIdx ].sWidth = _fnStringToCss( headerCells.eq(i).width() );\n\t\t\t}\n\t\t}\n\t}\n\telse\n\t{\n\t\t// Otherwise construct a single row, worst case, table with the widest\n\t\t// node in the data, assign any user defined widths, then insert it into\n\t\t// the DOM and allow the browser to do all the hard work of calculating\n\t\t// table widths\n\t\tvar tmpTable = $(table).clone() // don't use cloneNode - IE8 will remove events on the main table\n\t\t\t.css( 'visibility', 'hidden' )\n\t\t\t.removeAttr( 'id' );\n\n\t\t// Clean up the table body\n\t\ttmpTable.find('tbody tr').remove();\n\t\tvar tr = $('<tr/>').appendTo( tmpTable.find('tbody') );\n\n\t\t// Clone the table header and footer - we can't use the header / footer\n\t\t// from the cloned table, since if scrolling is active, the table's\n\t\t// real header and footer are contained in different table tags\n\t\ttmpTable.find('thead, tfoot').remove();\n\t\ttmpTable\n\t\t\t.append( $(oSettings.nTHead).clone() )\n\t\t\t.append( $(oSettings.nTFoot).clone() );\n\n\t\t// Remove any assigned widths from the footer (from scrolling)\n\t\ttmpTable.find('tfoot th, tfoot td').css('width', '');\n\n\t\t// Apply custom sizing to the cloned header\n\t\theaderCells = _fnGetUniqueThs( oSettings, tmpTable.find('thead')[0] );\n\n\t\tfor ( i=0 ; i<visibleColumns.length ; i++ ) {\n\t\t\tcolumn = columns[ visibleColumns[i] ];\n\n\t\t\theaderCells[i].style.width = column.sWidthOrig !== null && column.sWidthOrig !== '' ?\n\t\t\t\t_fnStringToCss( column.sWidthOrig ) :\n\t\t\t\t'';\n\n\t\t\t// For scrollX we need to force the column width otherwise the\n\t\t\t// browser will collapse it. If this width is smaller than the\n\t\t\t// width the column requires, then it will have no effect\n\t\t\tif ( column.sWidthOrig && scrollX ) {\n\t\t\t\t$( headerCells[i] ).append( $('<div/>').css( {\n\t\t\t\t\twidth: column.sWidthOrig,\n\t\t\t\t\tmargin: 0,\n\t\t\t\t\tpadding: 0,\n\t\t\t\t\tborder: 0,\n\t\t\t\t\theight: 1\n\t\t\t\t} ) );\n\t\t\t}\n\t\t}\n\n\t\t// Find the widest cell for each column and put it into the table\n\t\tif ( oSettings.aoData.length ) {\n\t\t\tfor ( i=0 ; i<visibleColumns.length ; i++ ) {\n\t\t\t\tcolumnIdx = visibleColumns[i];\n\t\t\t\tcolumn = columns[ columnIdx ];\n\n\t\t\t\t$( _fnGetWidestNode( oSettings, columnIdx ) )\n\t\t\t\t\t.clone( false )\n\t\t\t\t\t.append( column.sContentPadding )\n\t\t\t\t\t.appendTo( tr );\n\t\t\t}\n\t\t}\n\n\t\t// Tidy the temporary table - remove name attributes so there aren't\n\t\t// duplicated in the dom (radio elements for example)\n\t\t$('[name]', tmpTable).removeAttr('name');\n\n\t\t// Table has been built, attach to the document so we can work with it.\n\t\t// A holding element is used, positioned at the top of the container\n\t\t// with minimal height, so it has no effect on if the container scrolls\n\t\t// or not. Otherwise it might trigger scrolling when it actually isn't\n\t\t// needed\n\t\tvar holder = $('<div/>').css( scrollX || scrollY ?\n\t\t\t\t{\n\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\ttop: 0,\n\t\t\t\t\tleft: 0,\n\t\t\t\t\theight: 1,\n\t\t\t\t\tright: 0,\n\t\t\t\t\toverflow: 'hidden'\n\t\t\t\t} :\n\t\t\t\t{}\n\t\t\t)\n\t\t\t.append( tmpTable )\n\t\t\t.appendTo( tableContainer );\n\n\t\t// When scrolling (X or Y) we want to set the width of the table as \n\t\t// appropriate. However, when not scrolling leave the table width as it\n\t\t// is. This results in slightly different, but I think correct behaviour\n\t\tif ( scrollX && scrollXInner ) {\n\t\t\ttmpTable.width( scrollXInner );\n\t\t}\n\t\telse if ( scrollX ) {\n\t\t\ttmpTable.css( 'width', 'auto' );\n\t\t\ttmpTable.removeAttr('width');\n\n\t\t\t// If there is no width attribute or style, then allow the table to\n\t\t\t// collapse\n\t\t\tif ( tmpTable.width() < tableContainer.clientWidth && tableWidthAttr ) {\n\t\t\t\ttmpTable.width( tableContainer.clientWidth );\n\t\t\t}\n\t\t}\n\t\telse if ( scrollY ) {\n\t\t\ttmpTable.width( tableContainer.clientWidth );\n\t\t}\n\t\telse if ( tableWidthAttr ) {\n\t\t\ttmpTable.width( tableWidthAttr );\n\t\t}\n\n\t\t// Get the width of each column in the constructed table - we need to\n\t\t// know the inner width (so it can be assigned to the other table's\n\t\t// cells) and the outer width so we can calculate the full width of the\n\t\t// table. This is safe since DataTables requires a unique cell for each\n\t\t// column, but if ever a header can span multiple columns, this will\n\t\t// need to be modified.\n\t\tvar total = 0;\n\t\tfor ( i=0 ; i<visibleColumns.length ; i++ ) {\n\t\t\tvar cell = $(headerCells[i]);\n\t\t\tvar border = cell.outerWidth() - cell.width();\n\n\t\t\t// Use getBounding... where possible (not IE8-) because it can give\n\t\t\t// sub-pixel accuracy, which we then want to round up!\n\t\t\tvar bounding = browser.bBounding ?\n\t\t\t\tMath.ceil( headerCells[i].getBoundingClientRect().width ) :\n\t\t\t\tcell.outerWidth();\n\n\t\t\t// Total is tracked to remove any sub-pixel errors as the outerWidth\n\t\t\t// of the table might not equal the total given here (IE!).\n\t\t\ttotal += bounding;\n\n\t\t\t// Width for each column to use\n\t\t\tcolumns[ visibleColumns[i] ].sWidth = _fnStringToCss( bounding - border );\n\t\t}\n\n\t\ttable.style.width = _fnStringToCss( total );\n\n\t\t// Finished with the table - ditch it\n\t\tholder.remove();\n\t}\n\n\t// If there is a width attr, we want to attach an event listener which\n\t// allows the table sizing to automatically adjust when the window is\n\t// resized. Use the width attr rather than CSS, since we can't know if the\n\t// CSS is a relative value or absolute - DOM read is always px.\n\tif ( tableWidthAttr ) {\n\t\ttable.style.width = _fnStringToCss( tableWidthAttr );\n\t}\n\n\tif ( (tableWidthAttr || scrollX) && ! oSettings._reszEvt ) {\n\t\tvar bindResize = function () {\n\t\t\t$(window).on('resize.DT-'+oSettings.sInstance, _fnThrottle( function () {\n\t\t\t\t_fnAdjustColumnSizing( oSettings );\n\t\t\t} ) );\n\t\t};\n\n\t\t// IE6/7 will crash if we bind a resize event handler on page load.\n\t\t// To be removed in 1.11 which drops IE6/7 support\n\t\tif ( ie67 ) {\n\t\t\tsetTimeout( bindResize, 1000 );\n\t\t}\n\t\telse {\n\t\t\tbindResize();\n\t\t}\n\n\t\toSettings._reszEvt = true;\n\t}\n}\n\n\n/**\n * Throttle the calls to a function. Arguments and context are maintained for\n * the throttled function\n *  @param {function} fn Function to be called\n *  @param {int} [freq=200] call frequency in mS\n *  @returns {function} wrapped function\n *  @memberof DataTable#oApi\n */\nvar _fnThrottle = DataTable.util.throttle;\n\n\n/**\n * Convert a CSS unit width to pixels (e.g. 2em)\n *  @param {string} width width to be converted\n *  @param {node} parent parent to get the with for (required for relative widths) - optional\n *  @returns {int} width in pixels\n *  @memberof DataTable#oApi\n */\nfunction _fnConvertToWidth ( width, parent )\n{\n\tif ( ! width ) {\n\t\treturn 0;\n\t}\n\n\tvar n = $('<div/>')\n\t\t.css( 'width', _fnStringToCss( width ) )\n\t\t.appendTo( parent || document.body );\n\n\tvar val = n[0].offsetWidth;\n\tn.remove();\n\n\treturn val;\n}\n\n\n/**\n * Get the widest node\n *  @param {object} settings dataTables settings object\n *  @param {int} colIdx column of interest\n *  @returns {node} widest table node\n *  @memberof DataTable#oApi\n */\nfunction _fnGetWidestNode( settings, colIdx )\n{\n\tvar idx = _fnGetMaxLenString( settings, colIdx );\n\tif ( idx < 0 ) {\n\t\treturn null;\n\t}\n\n\tvar data = settings.aoData[ idx ];\n\treturn ! data.nTr ? // Might not have been created when deferred rendering\n\t\t$('<td/>').html( _fnGetCellData( settings, idx, colIdx, 'display' ) )[0] :\n\t\tdata.anCells[ colIdx ];\n}\n\n\n/**\n * Get the maximum strlen for each data column\n *  @param {object} settings dataTables settings object\n *  @param {int} colIdx column of interest\n *  @returns {string} max string length for each column\n *  @memberof DataTable#oApi\n */\nfunction _fnGetMaxLenString( settings, colIdx )\n{\n\tvar s, max=-1, maxIdx = -1;\n\n\tfor ( var i=0, ien=settings.aoData.length ; i<ien ; i++ ) {\n\t\ts = _fnGetCellData( settings, i, colIdx, 'display' )+'';\n\t\ts = s.replace( __re_html_remove, '' );\n\t\ts = s.replace( /&nbsp;/g, ' ' );\n\n\t\tif ( s.length > max ) {\n\t\t\tmax = s.length;\n\t\t\tmaxIdx = i;\n\t\t}\n\t}\n\n\treturn maxIdx;\n}\n\n\n/**\n * Append a CSS unit (only if required) to a string\n *  @param {string} value to css-ify\n *  @returns {string} value with css unit\n *  @memberof DataTable#oApi\n */\nfunction _fnStringToCss( s )\n{\n\tif ( s === null ) {\n\t\treturn '0px';\n\t}\n\n\tif ( typeof s == 'number' ) {\n\t\treturn s < 0 ?\n\t\t\t'0px' :\n\t\t\ts+'px';\n\t}\n\n\t// Check it has a unit character already\n\treturn s.match(/\\d$/) ?\n\t\ts+'px' :\n\t\ts;\n}\n\n\n\nfunction _fnSortFlatten ( settings )\n{\n\tvar\n\t\ti, iLen, k, kLen,\n\t\taSort = [],\n\t\taiOrig = [],\n\t\taoColumns = settings.aoColumns,\n\t\taDataSort, iCol, sType, srcCol,\n\t\tfixed = settings.aaSortingFixed,\n\t\tfixedObj = $.isPlainObject( fixed ),\n\t\tnestedSort = [],\n\t\tadd = function ( a ) {\n\t\t\tif ( a.length && ! Array.isArray( a[0] ) ) {\n\t\t\t\t// 1D array\n\t\t\t\tnestedSort.push( a );\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// 2D array\n\t\t\t\t$.merge( nestedSort, a );\n\t\t\t}\n\t\t};\n\n\t// Build the sort array, with pre-fix and post-fix options if they have been\n\t// specified\n\tif ( Array.isArray( fixed ) ) {\n\t\tadd( fixed );\n\t}\n\n\tif ( fixedObj && fixed.pre ) {\n\t\tadd( fixed.pre );\n\t}\n\n\tadd( settings.aaSorting );\n\n\tif (fixedObj && fixed.post ) {\n\t\tadd( fixed.post );\n\t}\n\n\tfor ( i=0 ; i<nestedSort.length ; i++ )\n\t{\n\t\tsrcCol = nestedSort[i][0];\n\t\taDataSort = aoColumns[ srcCol ].aDataSort;\n\n\t\tfor ( k=0, kLen=aDataSort.length ; k<kLen ; k++ )\n\t\t{\n\t\t\tiCol = aDataSort[k];\n\t\t\tsType = aoColumns[ iCol ].sType || 'string';\n\n\t\t\tif ( nestedSort[i]._idx === undefined ) {\n\t\t\t\tnestedSort[i]._idx = $.inArray( nestedSort[i][1], aoColumns[iCol].asSorting );\n\t\t\t}\n\n\t\t\taSort.push( {\n\t\t\t\tsrc:       srcCol,\n\t\t\t\tcol:       iCol,\n\t\t\t\tdir:       nestedSort[i][1],\n\t\t\t\tindex:     nestedSort[i]._idx,\n\t\t\t\ttype:      sType,\n\t\t\t\tformatter: DataTable.ext.type.order[ sType+\"-pre\" ]\n\t\t\t} );\n\t\t}\n\t}\n\n\treturn aSort;\n}\n\n/**\n * Change the order of the table\n *  @param {object} oSettings dataTables settings object\n *  @memberof DataTable#oApi\n *  @todo This really needs split up!\n */\nfunction _fnSort ( oSettings )\n{\n\tvar\n\t\ti, ien, iLen, j, jLen, k, kLen,\n\t\tsDataType, nTh,\n\t\taiOrig = [],\n\t\toExtSort = DataTable.ext.type.order,\n\t\taoData = oSettings.aoData,\n\t\taoColumns = oSettings.aoColumns,\n\t\taDataSort, data, iCol, sType, oSort,\n\t\tformatters = 0,\n\t\tsortCol,\n\t\tdisplayMaster = oSettings.aiDisplayMaster,\n\t\taSort;\n\n\t// Resolve any column types that are unknown due to addition or invalidation\n\t// @todo Can this be moved into a 'data-ready' handler which is called when\n\t//   data is going to be used in the table?\n\t_fnColumnTypes( oSettings );\n\n\taSort = _fnSortFlatten( oSettings );\n\n\tfor ( i=0, ien=aSort.length ; i<ien ; i++ ) {\n\t\tsortCol = aSort[i];\n\n\t\t// Track if we can use the fast sort algorithm\n\t\tif ( sortCol.formatter ) {\n\t\t\tformatters++;\n\t\t}\n\n\t\t// Load the data needed for the sort, for each cell\n\t\t_fnSortData( oSettings, sortCol.col );\n\t}\n\n\t/* No sorting required if server-side or no sorting array */\n\tif ( _fnDataSource( oSettings ) != 'ssp' && aSort.length !== 0 )\n\t{\n\t\t// Create a value - key array of the current row positions such that we can use their\n\t\t// current position during the sort, if values match, in order to perform stable sorting\n\t\tfor ( i=0, iLen=displayMaster.length ; i<iLen ; i++ ) {\n\t\t\taiOrig[ displayMaster[i] ] = i;\n\t\t}\n\n\t\t/* Do the sort - here we want multi-column sorting based on a given data source (column)\n\t\t * and sorting function (from oSort) in a certain direction. It's reasonably complex to\n\t\t * follow on it's own, but this is what we want (example two column sorting):\n\t\t *  fnLocalSorting = function(a,b){\n\t\t *    var iTest;\n\t\t *    iTest = oSort['string-asc']('data11', 'data12');\n\t\t *      if (iTest !== 0)\n\t\t *        return iTest;\n\t\t *    iTest = oSort['numeric-desc']('data21', 'data22');\n\t\t *    if (iTest !== 0)\n\t\t *      return iTest;\n\t\t *    return oSort['numeric-asc']( aiOrig[a], aiOrig[b] );\n\t\t *  }\n\t\t * Basically we have a test for each sorting column, if the data in that column is equal,\n\t\t * test the next column. If all columns match, then we use a numeric sort on the row\n\t\t * positions in the original data array to provide a stable sort.\n\t\t *\n\t\t * Note - I know it seems excessive to have two sorting methods, but the first is around\n\t\t * 15% faster, so the second is only maintained for backwards compatibility with sorting\n\t\t * methods which do not have a pre-sort formatting function.\n\t\t */\n\t\tif ( formatters === aSort.length ) {\n\t\t\t// All sort types have formatting functions\n\t\t\tdisplayMaster.sort( function ( a, b ) {\n\t\t\t\tvar\n\t\t\t\t\tx, y, k, test, sort,\n\t\t\t\t\tlen=aSort.length,\n\t\t\t\t\tdataA = aoData[a]._aSortData,\n\t\t\t\t\tdataB = aoData[b]._aSortData;\n\n\t\t\t\tfor ( k=0 ; k<len ; k++ ) {\n\t\t\t\t\tsort = aSort[k];\n\n\t\t\t\t\tx = dataA[ sort.col ];\n\t\t\t\t\ty = dataB[ sort.col ];\n\n\t\t\t\t\ttest = x<y ? -1 : x>y ? 1 : 0;\n\t\t\t\t\tif ( test !== 0 ) {\n\t\t\t\t\t\treturn sort.dir === 'asc' ? test : -test;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tx = aiOrig[a];\n\t\t\t\ty = aiOrig[b];\n\t\t\t\treturn x<y ? -1 : x>y ? 1 : 0;\n\t\t\t} );\n\t\t}\n\t\telse {\n\t\t\t// Depreciated - remove in 1.11 (providing a plug-in option)\n\t\t\t// Not all sort types have formatting methods, so we have to call their sorting\n\t\t\t// methods.\n\t\t\tdisplayMaster.sort( function ( a, b ) {\n\t\t\t\tvar\n\t\t\t\t\tx, y, k, l, test, sort, fn,\n\t\t\t\t\tlen=aSort.length,\n\t\t\t\t\tdataA = aoData[a]._aSortData,\n\t\t\t\t\tdataB = aoData[b]._aSortData;\n\n\t\t\t\tfor ( k=0 ; k<len ; k++ ) {\n\t\t\t\t\tsort = aSort[k];\n\n\t\t\t\t\tx = dataA[ sort.col ];\n\t\t\t\t\ty = dataB[ sort.col ];\n\n\t\t\t\t\tfn = oExtSort[ sort.type+\"-\"+sort.dir ] || oExtSort[ \"string-\"+sort.dir ];\n\t\t\t\t\ttest = fn( x, y );\n\t\t\t\t\tif ( test !== 0 ) {\n\t\t\t\t\t\treturn test;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tx = aiOrig[a];\n\t\t\t\ty = aiOrig[b];\n\t\t\t\treturn x<y ? -1 : x>y ? 1 : 0;\n\t\t\t} );\n\t\t}\n\t}\n\n\t/* Tell the draw function that we have sorted the data */\n\toSettings.bSorted = true;\n}\n\n\nfunction _fnSortAria ( settings )\n{\n\tvar label;\n\tvar nextSort;\n\tvar columns = settings.aoColumns;\n\tvar aSort = _fnSortFlatten( settings );\n\tvar oAria = settings.oLanguage.oAria;\n\n\t// ARIA attributes - need to loop all columns, to update all (removing old\n\t// attributes as needed)\n\tfor ( var i=0, iLen=columns.length ; i<iLen ; i++ )\n\t{\n\t\tvar col = columns[i];\n\t\tvar asSorting = col.asSorting;\n\t\tvar sTitle = col.ariaTitle || col.sTitle.replace( /<.*?>/g, \"\" );\n\t\tvar th = col.nTh;\n\n\t\t// IE7 is throwing an error when setting these properties with jQuery's\n\t\t// attr() and removeAttr() methods...\n\t\tth.removeAttribute('aria-sort');\n\n\t\t/* In ARIA only the first sorting column can be marked as sorting - no multi-sort option */\n\t\tif ( col.bSortable ) {\n\t\t\tif ( aSort.length > 0 && aSort[0].col == i ) {\n\t\t\t\tth.setAttribute('aria-sort', aSort[0].dir==\"asc\" ? \"ascending\" : \"descending\" );\n\t\t\t\tnextSort = asSorting[ aSort[0].index+1 ] || asSorting[0];\n\t\t\t}\n\t\t\telse {\n\t\t\t\tnextSort = asSorting[0];\n\t\t\t}\n\n\t\t\tlabel = sTitle + ( nextSort === \"asc\" ?\n\t\t\t\toAria.sSortAscending :\n\t\t\t\toAria.sSortDescending\n\t\t\t);\n\t\t}\n\t\telse {\n\t\t\tlabel = sTitle;\n\t\t}\n\n\t\tth.setAttribute('aria-label', label);\n\t}\n}\n\n\n/**\n * Function to run on user sort request\n *  @param {object} settings dataTables settings object\n *  @param {node} attachTo node to attach the handler to\n *  @param {int} colIdx column sorting index\n *  @param {boolean} [append=false] Append the requested sort to the existing\n *    sort if true (i.e. multi-column sort)\n *  @param {function} [callback] callback function\n *  @memberof DataTable#oApi\n */\nfunction _fnSortListener ( settings, colIdx, append, callback )\n{\n\tvar col = settings.aoColumns[ colIdx ];\n\tvar sorting = settings.aaSorting;\n\tvar asSorting = col.asSorting;\n\tvar nextSortIdx;\n\tvar next = function ( a, overflow ) {\n\t\tvar idx = a._idx;\n\t\tif ( idx === undefined ) {\n\t\t\tidx = $.inArray( a[1], asSorting );\n\t\t}\n\n\t\treturn idx+1 < asSorting.length ?\n\t\t\tidx+1 :\n\t\t\toverflow ?\n\t\t\t\tnull :\n\t\t\t\t0;\n\t};\n\n\t// Convert to 2D array if needed\n\tif ( typeof sorting[0] === 'number' ) {\n\t\tsorting = settings.aaSorting = [ sorting ];\n\t}\n\n\t// If appending the sort then we are multi-column sorting\n\tif ( append && settings.oFeatures.bSortMulti ) {\n\t\t// Are we already doing some kind of sort on this column?\n\t\tvar sortIdx = $.inArray( colIdx, _pluck(sorting, '0') );\n\n\t\tif ( sortIdx !== -1 ) {\n\t\t\t// Yes, modify the sort\n\t\t\tnextSortIdx = next( sorting[sortIdx], true );\n\n\t\t\tif ( nextSortIdx === null && sorting.length === 1 ) {\n\t\t\t\tnextSortIdx = 0; // can't remove sorting completely\n\t\t\t}\n\n\t\t\tif ( nextSortIdx === null ) {\n\t\t\t\tsorting.splice( sortIdx, 1 );\n\t\t\t}\n\t\t\telse {\n\t\t\t\tsorting[sortIdx][1] = asSorting[ nextSortIdx ];\n\t\t\t\tsorting[sortIdx]._idx = nextSortIdx;\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\t// No sort on this column yet\n\t\t\tsorting.push( [ colIdx, asSorting[0], 0 ] );\n\t\t\tsorting[sorting.length-1]._idx = 0;\n\t\t}\n\t}\n\telse if ( sorting.length && sorting[0][0] == colIdx ) {\n\t\t// Single column - already sorting on this column, modify the sort\n\t\tnextSortIdx = next( sorting[0] );\n\n\t\tsorting.length = 1;\n\t\tsorting[0][1] = asSorting[ nextSortIdx ];\n\t\tsorting[0]._idx = nextSortIdx;\n\t}\n\telse {\n\t\t// Single column - sort only on this column\n\t\tsorting.length = 0;\n\t\tsorting.push( [ colIdx, asSorting[0] ] );\n\t\tsorting[0]._idx = 0;\n\t}\n\n\t// Run the sort by calling a full redraw\n\t_fnReDraw( settings );\n\n\t// callback used for async user interaction\n\tif ( typeof callback == 'function' ) {\n\t\tcallback( settings );\n\t}\n}\n\n\n/**\n * Attach a sort handler (click) to a node\n *  @param {object} settings dataTables settings object\n *  @param {node} attachTo node to attach the handler to\n *  @param {int} colIdx column sorting index\n *  @param {function} [callback] callback function\n *  @memberof DataTable#oApi\n */\nfunction _fnSortAttachListener ( settings, attachTo, colIdx, callback )\n{\n\tvar col = settings.aoColumns[ colIdx ];\n\n\t_fnBindAction( attachTo, {}, function (e) {\n\t\t/* If the column is not sortable - don't to anything */\n\t\tif ( col.bSortable === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If processing is enabled use a timeout to allow the processing\n\t\t// display to be shown - otherwise to it synchronously\n\t\tif ( settings.oFeatures.bProcessing ) {\n\t\t\t_fnProcessingDisplay( settings, true );\n\n\t\t\tsetTimeout( function() {\n\t\t\t\t_fnSortListener( settings, colIdx, e.shiftKey, callback );\n\n\t\t\t\t// In server-side processing, the draw callback will remove the\n\t\t\t\t// processing display\n\t\t\t\tif ( _fnDataSource( settings ) !== 'ssp' ) {\n\t\t\t\t\t_fnProcessingDisplay( settings, false );\n\t\t\t\t}\n\t\t\t}, 0 );\n\t\t}\n\t\telse {\n\t\t\t_fnSortListener( settings, colIdx, e.shiftKey, callback );\n\t\t}\n\t} );\n}\n\n\n/**\n * Set the sorting classes on table's body, Note: it is safe to call this function\n * when bSort and bSortClasses are false\n *  @param {object} oSettings dataTables settings object\n *  @memberof DataTable#oApi\n */\nfunction _fnSortingClasses( settings )\n{\n\tvar oldSort = settings.aLastSort;\n\tvar sortClass = settings.oClasses.sSortColumn;\n\tvar sort = _fnSortFlatten( settings );\n\tvar features = settings.oFeatures;\n\tvar i, ien, colIdx;\n\n\tif ( features.bSort && features.bSortClasses ) {\n\t\t// Remove old sorting classes\n\t\tfor ( i=0, ien=oldSort.length ; i<ien ; i++ ) {\n\t\t\tcolIdx = oldSort[i].src;\n\n\t\t\t// Remove column sorting\n\t\t\t$( _pluck( settings.aoData, 'anCells', colIdx ) )\n\t\t\t\t.removeClass( sortClass + (i<2 ? i+1 : 3) );\n\t\t}\n\n\t\t// Add new column sorting\n\t\tfor ( i=0, ien=sort.length ; i<ien ; i++ ) {\n\t\t\tcolIdx = sort[i].src;\n\n\t\t\t$( _pluck( settings.aoData, 'anCells', colIdx ) )\n\t\t\t\t.addClass( sortClass + (i<2 ? i+1 : 3) );\n\t\t}\n\t}\n\n\tsettings.aLastSort = sort;\n}\n\n\n// Get the data to sort a column, be it from cache, fresh (populating the\n// cache), or from a sort formatter\nfunction _fnSortData( settings, idx )\n{\n\t// Custom sorting function - provided by the sort data type\n\tvar column = settings.aoColumns[ idx ];\n\tvar customSort = DataTable.ext.order[ column.sSortDataType ];\n\tvar customData;\n\n\tif ( customSort ) {\n\t\tcustomData = customSort.call( settings.oInstance, settings, idx,\n\t\t\t_fnColumnIndexToVisible( settings, idx )\n\t\t);\n\t}\n\n\t// Use / populate cache\n\tvar row, cellData;\n\tvar formatter = DataTable.ext.type.order[ column.sType+\"-pre\" ];\n\n\tfor ( var i=0, ien=settings.aoData.length ; i<ien ; i++ ) {\n\t\trow = settings.aoData[i];\n\n\t\tif ( ! row._aSortData ) {\n\t\t\trow._aSortData = [];\n\t\t}\n\n\t\tif ( ! row._aSortData[idx] || customSort ) {\n\t\t\tcellData = customSort ?\n\t\t\t\tcustomData[i] : // If there was a custom sort function, use data from there\n\t\t\t\t_fnGetCellData( settings, i, idx, 'sort' );\n\n\t\t\trow._aSortData[ idx ] = formatter ?\n\t\t\t\tformatter( cellData ) :\n\t\t\t\tcellData;\n\t\t}\n\t}\n}\n\n\n\n/**\n * Save the state of a table\n *  @param {object} oSettings dataTables settings object\n *  @memberof DataTable#oApi\n */\nfunction _fnSaveState ( settings )\n{\n\tif (settings._bLoadingState) {\n\t\treturn;\n\t}\n\n\t/* Store the interesting variables */\n\tvar state = {\n\t\ttime:    +new Date(),\n\t\tstart:   settings._iDisplayStart,\n\t\tlength:  settings._iDisplayLength,\n\t\torder:   $.extend( true, [], settings.aaSorting ),\n\t\tsearch:  _fnSearchToCamel( settings.oPreviousSearch ),\n\t\tcolumns: $.map( settings.aoColumns, function ( col, i ) {\n\t\t\treturn {\n\t\t\t\tvisible: col.bVisible,\n\t\t\t\tsearch: _fnSearchToCamel( settings.aoPreSearchCols[i] )\n\t\t\t};\n\t\t} )\n\t};\n\n\tsettings.oSavedState = state;\n\t_fnCallbackFire( settings, \"aoStateSaveParams\", 'stateSaveParams', [settings, state] );\n\t\n\tif ( settings.oFeatures.bStateSave && !settings.bDestroying )\n\t{\n\t\tsettings.fnStateSaveCallback.call( settings.oInstance, settings, state );\n\t}\t\n}\n\n\n/**\n * Attempt to load a saved table state\n *  @param {object} oSettings dataTables settings object\n *  @param {object} oInit DataTables init object so we can override settings\n *  @param {function} callback Callback to execute when the state has been loaded\n *  @memberof DataTable#oApi\n */\nfunction _fnLoadState ( settings, oInit, callback )\n{\n\tif ( ! settings.oFeatures.bStateSave ) {\n\t\tcallback();\n\t\treturn;\n\t}\n\n\tvar loaded = function(state) {\n\t\t_fnImplementState(settings, state, callback);\n\t}\n\n\tvar state = settings.fnStateLoadCallback.call( settings.oInstance, settings, loaded );\n\n\tif ( state !== undefined ) {\n\t\t_fnImplementState( settings, state, callback );\n\t}\n\t// otherwise, wait for the loaded callback to be executed\n\n\treturn true;\n}\n\nfunction _fnImplementState ( settings, s, callback) {\n\tvar i, ien;\n\tvar columns = settings.aoColumns;\n\tsettings._bLoadingState = true;\n\n\t// When StateRestore was introduced the state could now be implemented at any time\n\t// Not just initialisation. To do this an api instance is required in some places\n\tvar api = settings._bInitComplete ? new DataTable.Api(settings) : null;\n\n\tif ( ! s || ! s.time ) {\n\t\tsettings._bLoadingState = false;\n\t\tcallback();\n\t\treturn;\n\t}\n\n\t// Allow custom and plug-in manipulation functions to alter the saved data set and\n\t// cancelling of loading by returning false\n\tvar abStateLoad = _fnCallbackFire( settings, 'aoStateLoadParams', 'stateLoadParams', [settings, s] );\n\tif ( $.inArray( false, abStateLoad ) !== -1 ) {\n\t\tsettings._bLoadingState = false;\n\t\tcallback();\n\t\treturn;\n\t}\n\n\t// Reject old data\n\tvar duration = settings.iStateDuration;\n\tif ( duration > 0 && s.time < +new Date() - (duration*1000) ) {\n\t\tsettings._bLoadingState = false;\n\t\tcallback();\n\t\treturn;\n\t}\n\n\t// Number of columns have changed - all bets are off, no restore of settings\n\tif ( s.columns && columns.length !== s.columns.length ) {\n\t\tsettings._bLoadingState = false;\n\t\tcallback();\n\t\treturn;\n\t}\n\n\t// Store the saved state so it might be accessed at any time\n\tsettings.oLoadedState = $.extend( true, {}, s );\n\n\t// Page Length\n\tif ( s.length !== undefined ) {\n\t\t// If already initialised just set the value directly so that the select element is also updated\n\t\tif (api) {\n\t\t\tapi.page.len(s.length)\n\t\t}\n\t\telse {\n\t\t\tsettings._iDisplayLength   = s.length;\n\t\t}\n\t}\n\n\t// Restore key features - todo - for 1.11 this needs to be done by\n\t// subscribed events\n\tif ( s.start !== undefined ) {\n\t\tif(api === null) {\n\t\t\tsettings._iDisplayStart    = s.start;\n\t\t\tsettings.iInitDisplayStart = s.start;\n\t\t}\n\t\telse {\n\t\t\t_fnPageChange(settings, s.start/settings._iDisplayLength);\n\t\t}\n\t}\n\n\t// Order\n\tif ( s.order !== undefined ) {\n\t\tsettings.aaSorting = [];\n\t\t$.each( s.order, function ( i, col ) {\n\t\t\tsettings.aaSorting.push( col[0] >= columns.length ?\n\t\t\t\t[ 0, col[1] ] :\n\t\t\t\tcol\n\t\t\t);\n\t\t} );\n\t}\n\n\t// Search\n\tif ( s.search !== undefined ) {\n\t\t$.extend( settings.oPreviousSearch, _fnSearchToHung( s.search ) );\n\t}\n\n\t// Columns\n\tif ( s.columns ) {\n\t\tfor ( i=0, ien=s.columns.length ; i<ien ; i++ ) {\n\t\t\tvar col = s.columns[i];\n\n\t\t\t// Visibility\n\t\t\tif ( col.visible !== undefined ) {\n\t\t\t\t// If the api is defined, the table has been initialised so we need to use it rather than internal settings\n\t\t\t\tif (api) {\n\t\t\t\t\t// Don't redraw the columns on every iteration of this loop, we will do this at the end instead\n\t\t\t\t\tapi.column(i).visible(col.visible, false);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tcolumns[i].bVisible = col.visible;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Search\n\t\t\tif ( col.search !== undefined ) {\n\t\t\t\t$.extend( settings.aoPreSearchCols[i], _fnSearchToHung( col.search ) );\n\t\t\t}\n\t\t}\n\t\t\n\t\t// If the api is defined then we need to adjust the columns once the visibility has been changed\n\t\tif (api) {\n\t\t\tapi.columns.adjust();\n\t\t}\n\t}\n\n\tsettings._bLoadingState = false;\n\t_fnCallbackFire( settings, 'aoStateLoaded', 'stateLoaded', [settings, s] );\n\tcallback();\n};\n\n\n/**\n * Return the settings object for a particular table\n *  @param {node} table table we are using as a dataTable\n *  @returns {object} Settings object - or null if not found\n *  @memberof DataTable#oApi\n */\nfunction _fnSettingsFromNode ( table )\n{\n\tvar settings = DataTable.settings;\n\tvar idx = $.inArray( table, _pluck( settings, 'nTable' ) );\n\n\treturn idx !== -1 ?\n\t\tsettings[ idx ] :\n\t\tnull;\n}\n\n\n/**\n * Log an error message\n *  @param {object} settings dataTables settings object\n *  @param {int} level log error messages, or display them to the user\n *  @param {string} msg error message\n *  @param {int} tn Technical note id to get more information about the error.\n *  @memberof DataTable#oApi\n */\nfunction _fnLog( settings, level, msg, tn )\n{\n\tmsg = 'DataTables warning: '+\n\t\t(settings ? 'table id='+settings.sTableId+' - ' : '')+msg;\n\n\tif ( tn ) {\n\t\tmsg += '. For more information about this error, please see '+\n\t\t'http://datatables.net/tn/'+tn;\n\t}\n\n\tif ( ! level  ) {\n\t\t// Backwards compatibility pre 1.10\n\t\tvar ext = DataTable.ext;\n\t\tvar type = ext.sErrMode || ext.errMode;\n\n\t\tif ( settings ) {\n\t\t\t_fnCallbackFire( settings, null, 'error', [ settings, tn, msg ] );\n\t\t}\n\n\t\tif ( type == 'alert' ) {\n\t\t\talert( msg );\n\t\t}\n\t\telse if ( type == 'throw' ) {\n\t\t\tthrow new Error(msg);\n\t\t}\n\t\telse if ( typeof type == 'function' ) {\n\t\t\ttype( settings, tn, msg );\n\t\t}\n\t}\n\telse if ( window.console && console.log ) {\n\t\tconsole.log( msg );\n\t}\n}\n\n\n/**\n * See if a property is defined on one object, if so assign it to the other object\n *  @param {object} ret target object\n *  @param {object} src source object\n *  @param {string} name property\n *  @param {string} [mappedName] name to map too - optional, name used if not given\n *  @memberof DataTable#oApi\n */\nfunction _fnMap( ret, src, name, mappedName )\n{\n\tif ( Array.isArray( name ) ) {\n\t\t$.each( name, function (i, val) {\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\t_fnMap( ret, src, val[0], val[1] );\n\t\t\t}\n\t\t\telse {\n\t\t\t\t_fnMap( ret, src, val );\n\t\t\t}\n\t\t} );\n\n\t\treturn;\n\t}\n\n\tif ( mappedName === undefined ) {\n\t\tmappedName = name;\n\t}\n\n\tif ( src[name] !== undefined ) {\n\t\tret[mappedName] = src[name];\n\t}\n}\n\n\n/**\n * Extend objects - very similar to jQuery.extend, but deep copy objects, and\n * shallow copy arrays. The reason we need to do this, is that we don't want to\n * deep copy array init values (such as aaSorting) since the dev wouldn't be\n * able to override them, but we do want to deep copy arrays.\n *  @param {object} out Object to extend\n *  @param {object} extender Object from which the properties will be applied to\n *      out\n *  @param {boolean} breakRefs If true, then arrays will be sliced to take an\n *      independent copy with the exception of the `data` or `aaData` parameters\n *      if they are present. This is so you can pass in a collection to\n *      DataTables and have that used as your data source without breaking the\n *      references\n *  @returns {object} out Reference, just for convenience - out === the return.\n *  @memberof DataTable#oApi\n *  @todo This doesn't take account of arrays inside the deep copied objects.\n */\nfunction _fnExtend( out, extender, breakRefs )\n{\n\tvar val;\n\n\tfor ( var prop in extender ) {\n\t\tif ( extender.hasOwnProperty(prop) ) {\n\t\t\tval = extender[prop];\n\n\t\t\tif ( $.isPlainObject( val ) ) {\n\t\t\t\tif ( ! $.isPlainObject( out[prop] ) ) {\n\t\t\t\t\tout[prop] = {};\n\t\t\t\t}\n\t\t\t\t$.extend( true, out[prop], val );\n\t\t\t}\n\t\t\telse if ( breakRefs && prop !== 'data' && prop !== 'aaData' && Array.isArray(val) ) {\n\t\t\t\tout[prop] = val.slice();\n\t\t\t}\n\t\t\telse {\n\t\t\t\tout[prop] = val;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn out;\n}\n\n\n/**\n * Bind an event handers to allow a click or return key to activate the callback.\n * This is good for accessibility since a return on the keyboard will have the\n * same effect as a click, if the element has focus.\n *  @param {element} n Element to bind the action to\n *  @param {object} oData Data object to pass to the triggered function\n *  @param {function} fn Callback function for when the event is triggered\n *  @memberof DataTable#oApi\n */\nfunction _fnBindAction( n, oData, fn )\n{\n\t$(n)\n\t\t.on( 'click.DT', oData, function (e) {\n\t\t\t\t$(n).trigger('blur'); // Remove focus outline for mouse users\n\t\t\t\tfn(e);\n\t\t\t} )\n\t\t.on( 'keypress.DT', oData, function (e){\n\t\t\t\tif ( e.which === 13 ) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tfn(e);\n\t\t\t\t}\n\t\t\t} )\n\t\t.on( 'selectstart.DT', function () {\n\t\t\t\t/* Take the brutal approach to cancelling text selection */\n\t\t\t\treturn false;\n\t\t\t} );\n}\n\n\n/**\n * Register a callback function. Easily allows a callback function to be added to\n * an array store of callback functions that can then all be called together.\n *  @param {object} oSettings dataTables settings object\n *  @param {string} sStore Name of the array storage for the callbacks in oSettings\n *  @param {function} fn Function to be called back\n *  @param {string} sName Identifying name for the callback (i.e. a label)\n *  @memberof DataTable#oApi\n */\nfunction _fnCallbackReg( oSettings, sStore, fn, sName )\n{\n\tif ( fn )\n\t{\n\t\toSettings[sStore].push( {\n\t\t\t\"fn\": fn,\n\t\t\t\"sName\": sName\n\t\t} );\n\t}\n}\n\n\n/**\n * Fire callback functions and trigger events. Note that the loop over the\n * callback array store is done backwards! Further note that you do not want to\n * fire off triggers in time sensitive applications (for example cell creation)\n * as its slow.\n *  @param {object} settings dataTables settings object\n *  @param {string} callbackArr Name of the array storage for the callbacks in\n *      oSettings\n *  @param {string} eventName Name of the jQuery custom event to trigger. If\n *      null no trigger is fired\n *  @param {array} args Array of arguments to pass to the callback function /\n *      trigger\n *  @memberof DataTable#oApi\n */\nfunction _fnCallbackFire( settings, callbackArr, eventName, args )\n{\n\tvar ret = [];\n\n\tif ( callbackArr ) {\n\t\tret = $.map( settings[callbackArr].slice().reverse(), function (val, i) {\n\t\t\treturn val.fn.apply( settings.oInstance, args );\n\t\t} );\n\t}\n\n\tif ( eventName !== null ) {\n\t\tvar e = $.Event( eventName+'.dt' );\n\t\tvar table = $(settings.nTable);\n\n\t\ttable.trigger( e, args );\n\n\t\t// If not yet attached to the document, trigger the event\n\t\t// on the body directly to sort of simulate the bubble\n\t\tif (table.parents('body').length === 0) {\n\t\t\t$('body').trigger( e, args );\n\t\t}\n\n\t\tret.push( e.result );\n\t}\n\n\treturn ret;\n}\n\n\nfunction _fnLengthOverflow ( settings )\n{\n\tvar\n\t\tstart = settings._iDisplayStart,\n\t\tend = settings.fnDisplayEnd(),\n\t\tlen = settings._iDisplayLength;\n\n\t/* If we have space to show extra rows (backing up from the end point - then do so */\n\tif ( start >= end )\n\t{\n\t\tstart = end - len;\n\t}\n\n\t// Keep the start record on the current page\n\tstart -= (start % len);\n\n\tif ( len === -1 || start < 0 )\n\t{\n\t\tstart = 0;\n\t}\n\n\tsettings._iDisplayStart = start;\n}\n\n\nfunction _fnRenderer( settings, type )\n{\n\tvar renderer = settings.renderer;\n\tvar host = DataTable.ext.renderer[type];\n\n\tif ( $.isPlainObject( renderer ) && renderer[type] ) {\n\t\t// Specific renderer for this type. If available use it, otherwise use\n\t\t// the default.\n\t\treturn host[renderer[type]] || host._;\n\t}\n\telse if ( typeof renderer === 'string' ) {\n\t\t// Common renderer - if there is one available for this type use it,\n\t\t// otherwise use the default\n\t\treturn host[renderer] || host._;\n\t}\n\n\t// Use the default\n\treturn host._;\n}\n\n\n/**\n * Detect the data source being used for the table. Used to simplify the code\n * a little (ajax) and to make it compress a little smaller.\n *\n *  @param {object} settings dataTables settings object\n *  @returns {string} Data source\n *  @memberof DataTable#oApi\n */\nfunction _fnDataSource ( settings )\n{\n\tif ( settings.oFeatures.bServerSide ) {\n\t\treturn 'ssp';\n\t}\n\telse if ( settings.ajax || settings.sAjaxSource ) {\n\t\treturn 'ajax';\n\t}\n\treturn 'dom';\n}\n\n\n\n\n/**\n * Computed structure of the DataTables API, defined by the options passed to\n * `DataTable.Api.register()` when building the API.\n *\n * The structure is built in order to speed creation and extension of the Api\n * objects since the extensions are effectively pre-parsed.\n *\n * The array is an array of objects with the following structure, where this\n * base array represents the Api prototype base:\n *\n *     [\n *       {\n *         name:      'data'                -- string   - Property name\n *         val:       function () {},       -- function - Api method (or undefined if just an object\n *         methodExt: [ ... ],              -- array    - Array of Api object definitions to extend the method result\n *         propExt:   [ ... ]               -- array    - Array of Api object definitions to extend the property\n *       },\n *       {\n *         name:     'row'\n *         val:       {},\n *         methodExt: [ ... ],\n *         propExt:   [\n *           {\n *             name:      'data'\n *             val:       function () {},\n *             methodExt: [ ... ],\n *             propExt:   [ ... ]\n *           },\n *           ...\n *         ]\n *       }\n *     ]\n *\n * @type {Array}\n * @ignore\n */\nvar __apiStruct = [];\n\n\n/**\n * `Array.prototype` reference.\n *\n * @type object\n * @ignore\n */\nvar __arrayProto = Array.prototype;\n\n\n/**\n * Abstraction for `context` parameter of the `Api` constructor to allow it to\n * take several different forms for ease of use.\n *\n * Each of the input parameter types will be converted to a DataTables settings\n * object where possible.\n *\n * @param  {string|node|jQuery|object} mixed DataTable identifier. Can be one\n *   of:\n *\n *   * `string` - jQuery selector. Any DataTables' matching the given selector\n *     with be found and used.\n *   * `node` - `TABLE` node which has already been formed into a DataTable.\n *   * `jQuery` - A jQuery object of `TABLE` nodes.\n *   * `object` - DataTables settings object\n *   * `DataTables.Api` - API instance\n * @return {array|null} Matching DataTables settings objects. `null` or\n *   `undefined` is returned if no matching DataTable is found.\n * @ignore\n */\nvar _toSettings = function ( mixed )\n{\n\tvar idx, jq;\n\tvar settings = DataTable.settings;\n\tvar tables = $.map( settings, function (el, i) {\n\t\treturn el.nTable;\n\t} );\n\n\tif ( ! mixed ) {\n\t\treturn [];\n\t}\n\telse if ( mixed.nTable && mixed.oApi ) {\n\t\t// DataTables settings object\n\t\treturn [ mixed ];\n\t}\n\telse if ( mixed.nodeName && mixed.nodeName.toLowerCase() === 'table' ) {\n\t\t// Table node\n\t\tidx = $.inArray( mixed, tables );\n\t\treturn idx !== -1 ? [ settings[idx] ] : null;\n\t}\n\telse if ( mixed && typeof mixed.settings === 'function' ) {\n\t\treturn mixed.settings().toArray();\n\t}\n\telse if ( typeof mixed === 'string' ) {\n\t\t// jQuery selector\n\t\tjq = $(mixed);\n\t}\n\telse if ( mixed instanceof $ ) {\n\t\t// jQuery object (also DataTables instance)\n\t\tjq = mixed;\n\t}\n\n\tif ( jq ) {\n\t\treturn jq.map( function(i) {\n\t\t\tidx = $.inArray( this, tables );\n\t\t\treturn idx !== -1 ? settings[idx] : null;\n\t\t} ).toArray();\n\t}\n};\n\n\n/**\n * DataTables API class - used to control and interface with  one or more\n * DataTables enhanced tables.\n *\n * The API class is heavily based on jQuery, presenting a chainable interface\n * that you can use to interact with tables. Each instance of the API class has\n * a \"context\" - i.e. the tables that it will operate on. This could be a single\n * table, all tables on a page or a sub-set thereof.\n *\n * Additionally the API is designed to allow you to easily work with the data in\n * the tables, retrieving and manipulating it as required. This is done by\n * presenting the API class as an array like interface. The contents of the\n * array depend upon the actions requested by each method (for example\n * `rows().nodes()` will return an array of nodes, while `rows().data()` will\n * return an array of objects or arrays depending upon your table's\n * configuration). The API object has a number of array like methods (`push`,\n * `pop`, `reverse` etc) as well as additional helper methods (`each`, `pluck`,\n * `unique` etc) to assist your working with the data held in a table.\n *\n * Most methods (those which return an Api instance) are chainable, which means\n * the return from a method call also has all of the methods available that the\n * top level object had. For example, these two calls are equivalent:\n *\n *     // Not chained\n *     api.row.add( {...} );\n *     api.draw();\n *\n *     // Chained\n *     api.row.add( {...} ).draw();\n *\n * @class DataTable.Api\n * @param {array|object|string|jQuery} context DataTable identifier. This is\n *   used to define which DataTables enhanced tables this API will operate on.\n *   Can be one of:\n *\n *   * `string` - jQuery selector. Any DataTables' matching the given selector\n *     with be found and used.\n *   * `node` - `TABLE` node which has already been formed into a DataTable.\n *   * `jQuery` - A jQuery object of `TABLE` nodes.\n *   * `object` - DataTables settings object\n * @param {array} [data] Data to initialise the Api instance with.\n *\n * @example\n *   // Direct initialisation during DataTables construction\n *   var api = $('#example').DataTable();\n *\n * @example\n *   // Initialisation using a DataTables jQuery object\n *   var api = $('#example').dataTable().api();\n *\n * @example\n *   // Initialisation as a constructor\n *   var api = new $.fn.DataTable.Api( 'table.dataTable' );\n */\n_Api = function ( context, data )\n{\n\tif ( ! (this instanceof _Api) ) {\n\t\treturn new _Api( context, data );\n\t}\n\n\tvar settings = [];\n\tvar ctxSettings = function ( o ) {\n\t\tvar a = _toSettings( o );\n\t\tif ( a ) {\n\t\t\tsettings.push.apply( settings, a );\n\t\t}\n\t};\n\n\tif ( Array.isArray( context ) ) {\n\t\tfor ( var i=0, ien=context.length ; i<ien ; i++ ) {\n\t\t\tctxSettings( context[i] );\n\t\t}\n\t}\n\telse {\n\t\tctxSettings( context );\n\t}\n\n\t// Remove duplicates\n\tthis.context = _unique( settings );\n\n\t// Initial data\n\tif ( data ) {\n\t\t$.merge( this, data );\n\t}\n\n\t// selector\n\tthis.selector = {\n\t\trows: null,\n\t\tcols: null,\n\t\topts: null\n\t};\n\n\t_Api.extend( this, this, __apiStruct );\n};\n\nDataTable.Api = _Api;\n\n// Don't destroy the existing prototype, just extend it. Required for jQuery 2's\n// isPlainObject.\n$.extend( _Api.prototype, {\n\tany: function ()\n\t{\n\t\treturn this.count() !== 0;\n\t},\n\n\n\tconcat:  __arrayProto.concat,\n\n\n\tcontext: [], // array of table settings objects\n\n\n\tcount: function ()\n\t{\n\t\treturn this.flatten().length;\n\t},\n\n\n\teach: function ( fn )\n\t{\n\t\tfor ( var i=0, ien=this.length ; i<ien; i++ ) {\n\t\t\tfn.call( this, this[i], i, this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\n\teq: function ( idx )\n\t{\n\t\tvar ctx = this.context;\n\n\t\treturn ctx.length > idx ?\n\t\t\tnew _Api( ctx[idx], this[idx] ) :\n\t\t\tnull;\n\t},\n\n\n\tfilter: function ( fn )\n\t{\n\t\tvar a = [];\n\n\t\tif ( __arrayProto.filter ) {\n\t\t\ta = __arrayProto.filter.call( this, fn, this );\n\t\t}\n\t\telse {\n\t\t\t// Compatibility for browsers without EMCA-252-5 (JS 1.6)\n\t\t\tfor ( var i=0, ien=this.length ; i<ien ; i++ ) {\n\t\t\t\tif ( fn.call( this, this[i], i, this ) ) {\n\t\t\t\t\ta.push( this[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn new _Api( this.context, a );\n\t},\n\n\n\tflatten: function ()\n\t{\n\t\tvar a = [];\n\t\treturn new _Api( this.context, a.concat.apply( a, this.toArray() ) );\n\t},\n\n\n\tjoin:    __arrayProto.join,\n\n\n\tindexOf: __arrayProto.indexOf || function (obj, start)\n\t{\n\t\tfor ( var i=(start || 0), ien=this.length ; i<ien ; i++ ) {\n\t\t\tif ( this[i] === obj ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\titerator: function ( flatten, type, fn, alwaysNew ) {\n\t\tvar\n\t\t\ta = [], ret,\n\t\t\ti, ien, j, jen,\n\t\t\tcontext = this.context,\n\t\t\trows, items, item,\n\t\t\tselector = this.selector;\n\n\t\t// Argument shifting\n\t\tif ( typeof flatten === 'string' ) {\n\t\t\talwaysNew = fn;\n\t\t\tfn = type;\n\t\t\ttype = flatten;\n\t\t\tflatten = false;\n\t\t}\n\n\t\tfor ( i=0, ien=context.length ; i<ien ; i++ ) {\n\t\t\tvar apiInst = new _Api( context[i] );\n\n\t\t\tif ( type === 'table' ) {\n\t\t\t\tret = fn.call( apiInst, context[i], i );\n\n\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\ta.push( ret );\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if ( type === 'columns' || type === 'rows' ) {\n\t\t\t\t// this has same length as context - one entry for each table\n\t\t\t\tret = fn.call( apiInst, context[i], this[i], i );\n\n\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\ta.push( ret );\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if ( type === 'column' || type === 'column-rows' || type === 'row' || type === 'cell' ) {\n\t\t\t\t// columns and rows share the same structure.\n\t\t\t\t// 'this' is an array of column indexes for each context\n\t\t\t\titems = this[i];\n\n\t\t\t\tif ( type === 'column-rows' ) {\n\t\t\t\t\trows = _selector_row_indexes( context[i], selector.opts );\n\t\t\t\t}\n\n\t\t\t\tfor ( j=0, jen=items.length ; j<jen ; j++ ) {\n\t\t\t\t\titem = items[j];\n\n\t\t\t\t\tif ( type === 'cell' ) {\n\t\t\t\t\t\tret = fn.call( apiInst, context[i], item.row, item.column, i, j );\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tret = fn.call( apiInst, context[i], item, i, j, rows );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\ta.push( ret );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( a.length || alwaysNew ) {\n\t\t\tvar api = new _Api( context, flatten ? a.concat.apply( [], a ) : a );\n\t\t\tvar apiSelector = api.selector;\n\t\t\tapiSelector.rows = selector.rows;\n\t\t\tapiSelector.cols = selector.cols;\n\t\t\tapiSelector.opts = selector.opts;\n\t\t\treturn api;\n\t\t}\n\t\treturn this;\n\t},\n\n\n\tlastIndexOf: __arrayProto.lastIndexOf || function (obj, start)\n\t{\n\t\t// Bit cheeky...\n\t\treturn this.indexOf.apply( this.toArray.reverse(), arguments );\n\t},\n\n\n\tlength:  0,\n\n\n\tmap: function ( fn )\n\t{\n\t\tvar a = [];\n\n\t\tif ( __arrayProto.map ) {\n\t\t\ta = __arrayProto.map.call( this, fn, this );\n\t\t}\n\t\telse {\n\t\t\t// Compatibility for browsers without EMCA-252-5 (JS 1.6)\n\t\t\tfor ( var i=0, ien=this.length ; i<ien ; i++ ) {\n\t\t\t\ta.push( fn.call( this, this[i], i ) );\n\t\t\t}\n\t\t}\n\n\t\treturn new _Api( this.context, a );\n\t},\n\n\n\tpluck: function ( prop )\n\t{\n\t\tvar fn = DataTable.util.get(prop);\n\n\t\treturn this.map( function ( el ) {\n\t\t\treturn fn(el);\n\t\t} );\n\t},\n\n\tpop:     __arrayProto.pop,\n\n\n\tpush:    __arrayProto.push,\n\n\n\t// Does not return an API instance\n\treduce: __arrayProto.reduce || function ( fn, init )\n\t{\n\t\treturn _fnReduce( this, fn, init, 0, this.length, 1 );\n\t},\n\n\n\treduceRight: __arrayProto.reduceRight || function ( fn, init )\n\t{\n\t\treturn _fnReduce( this, fn, init, this.length-1, -1, -1 );\n\t},\n\n\n\treverse: __arrayProto.reverse,\n\n\n\t// Object with rows, columns and opts\n\tselector: null,\n\n\n\tshift:   __arrayProto.shift,\n\n\n\tslice: function () {\n\t\treturn new _Api( this.context, this );\n\t},\n\n\n\tsort:    __arrayProto.sort, // ? name - order?\n\n\n\tsplice:  __arrayProto.splice,\n\n\n\ttoArray: function ()\n\t{\n\t\treturn __arrayProto.slice.call( this );\n\t},\n\n\n\tto$: function ()\n\t{\n\t\treturn $( this );\n\t},\n\n\n\ttoJQuery: function ()\n\t{\n\t\treturn $( this );\n\t},\n\n\n\tunique: function ()\n\t{\n\t\treturn new _Api( this.context, _unique(this) );\n\t},\n\n\n\tunshift: __arrayProto.unshift\n} );\n\n\n_Api.extend = function ( scope, obj, ext )\n{\n\t// Only extend API instances and static properties of the API\n\tif ( ! ext.length || ! obj || ( ! (obj instanceof _Api) && ! obj.__dt_wrapper ) ) {\n\t\treturn;\n\t}\n\n\tvar\n\t\ti, ien,\n\t\tstruct,\n\t\tmethodScoping = function ( scope, fn, struc ) {\n\t\t\treturn function () {\n\t\t\t\tvar ret = fn.apply( scope, arguments );\n\n\t\t\t\t// Method extension\n\t\t\t\t_Api.extend( ret, ret, struc.methodExt );\n\t\t\t\treturn ret;\n\t\t\t};\n\t\t};\n\n\tfor ( i=0, ien=ext.length ; i<ien ; i++ ) {\n\t\tstruct = ext[i];\n\n\t\t// Value\n\t\tobj[ struct.name ] = struct.type === 'function' ?\n\t\t\tmethodScoping( scope, struct.val, struct ) :\n\t\t\tstruct.type === 'object' ?\n\t\t\t\t{} :\n\t\t\t\tstruct.val;\n\n\t\tobj[ struct.name ].__dt_wrapper = true;\n\n\t\t// Property extension\n\t\t_Api.extend( scope, obj[ struct.name ], struct.propExt );\n\t}\n};\n\n\n// @todo - Is there need for an augment function?\n// _Api.augment = function ( inst, name )\n// {\n// \t// Find src object in the structure from the name\n// \tvar parts = name.split('.');\n\n// \t_Api.extend( inst, obj );\n// };\n\n\n//     [\n//       {\n//         name:      'data'                -- string   - Property name\n//         val:       function () {},       -- function - Api method (or undefined if just an object\n//         methodExt: [ ... ],              -- array    - Array of Api object definitions to extend the method result\n//         propExt:   [ ... ]               -- array    - Array of Api object definitions to extend the property\n//       },\n//       {\n//         name:     'row'\n//         val:       {},\n//         methodExt: [ ... ],\n//         propExt:   [\n//           {\n//             name:      'data'\n//             val:       function () {},\n//             methodExt: [ ... ],\n//             propExt:   [ ... ]\n//           },\n//           ...\n//         ]\n//       }\n//     ]\n\n_Api.register = _api_register = function ( name, val )\n{\n\tif ( Array.isArray( name ) ) {\n\t\tfor ( var j=0, jen=name.length ; j<jen ; j++ ) {\n\t\t\t_Api.register( name[j], val );\n\t\t}\n\t\treturn;\n\t}\n\n\tvar\n\t\ti, ien,\n\t\their = name.split('.'),\n\t\tstruct = __apiStruct,\n\t\tkey, method;\n\n\tvar find = function ( src, name ) {\n\t\tfor ( var i=0, ien=src.length ; i<ien ; i++ ) {\n\t\t\tif ( src[i].name === name ) {\n\t\t\t\treturn src[i];\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t};\n\n\tfor ( i=0, ien=heir.length ; i<ien ; i++ ) {\n\t\tmethod = heir[i].indexOf('()') !== -1;\n\t\tkey = method ?\n\t\t\their[i].replace('()', '') :\n\t\t\their[i];\n\n\t\tvar src = find( struct, key );\n\t\tif ( ! src ) {\n\t\t\tsrc = {\n\t\t\t\tname:      key,\n\t\t\t\tval:       {},\n\t\t\t\tmethodExt: [],\n\t\t\t\tpropExt:   [],\n\t\t\t\ttype:      'object'\n\t\t\t};\n\t\t\tstruct.push( src );\n\t\t}\n\n\t\tif ( i === ien-1 ) {\n\t\t\tsrc.val = val;\n\t\t\tsrc.type = typeof val === 'function' ?\n\t\t\t\t'function' :\n\t\t\t\t$.isPlainObject( val ) ?\n\t\t\t\t\t'object' :\n\t\t\t\t\t'other';\n\t\t}\n\t\telse {\n\t\t\tstruct = method ?\n\t\t\t\tsrc.methodExt :\n\t\t\t\tsrc.propExt;\n\t\t}\n\t}\n};\n\n_Api.registerPlural = _api_registerPlural = function ( pluralName, singularName, val ) {\n\t_Api.register( pluralName, val );\n\n\t_Api.register( singularName, function () {\n\t\tvar ret = val.apply( this, arguments );\n\n\t\tif ( ret === this ) {\n\t\t\t// Returned item is the API instance that was passed in, return it\n\t\t\treturn this;\n\t\t}\n\t\telse if ( ret instanceof _Api ) {\n\t\t\t// New API instance returned, want the value from the first item\n\t\t\t// in the returned array for the singular result.\n\t\t\treturn ret.length ?\n\t\t\t\tArray.isArray( ret[0] ) ?\n\t\t\t\t\tnew _Api( ret.context, ret[0] ) : // Array results are 'enhanced'\n\t\t\t\t\tret[0] :\n\t\t\t\tundefined;\n\t\t}\n\n\t\t// Non-API return - just fire it back\n\t\treturn ret;\n\t} );\n};\n\n\n/**\n * Selector for HTML tables. Apply the given selector to the give array of\n * DataTables settings objects.\n *\n * @param {string|integer} [selector] jQuery selector string or integer\n * @param  {array} Array of DataTables settings objects to be filtered\n * @return {array}\n * @ignore\n */\nvar __table_selector = function ( selector, a )\n{\n\tif ( Array.isArray(selector) ) {\n\t\treturn $.map( selector, function (item) {\n\t\t\treturn __table_selector(item, a);\n\t\t} );\n\t}\n\n\t// Integer is used to pick out a table by index\n\tif ( typeof selector === 'number' ) {\n\t\treturn [ a[ selector ] ];\n\t}\n\n\t// Perform a jQuery selector on the table nodes\n\tvar nodes = $.map( a, function (el, i) {\n\t\treturn el.nTable;\n\t} );\n\n\treturn $(nodes)\n\t\t.filter( selector )\n\t\t.map( function (i) {\n\t\t\t// Need to translate back from the table node to the settings\n\t\t\tvar idx = $.inArray( this, nodes );\n\t\t\treturn a[ idx ];\n\t\t} )\n\t\t.toArray();\n};\n\n\n\n/**\n * Context selector for the API's context (i.e. the tables the API instance\n * refers to.\n *\n * @name    DataTable.Api#tables\n * @param {string|integer} [selector] Selector to pick which tables the iterator\n *   should operate on. If not given, all tables in the current context are\n *   used. This can be given as a jQuery selector (for example `':gt(0)'`) to\n *   select multiple tables or as an integer to select a single table.\n * @returns {DataTable.Api} Returns a new API instance if a selector is given.\n */\n_api_register( 'tables()', function ( selector ) {\n\t// A new instance is created if there was a selector specified\n\treturn selector !== undefined && selector !== null ?\n\t\tnew _Api( __table_selector( selector, this.context ) ) :\n\t\tthis;\n} );\n\n\n_api_register( 'table()', function ( selector ) {\n\tvar tables = this.tables( selector );\n\tvar ctx = tables.context;\n\n\t// Truncate to the first matched table\n\treturn ctx.length ?\n\t\tnew _Api( ctx[0] ) :\n\t\ttables;\n} );\n\n\n_api_registerPlural( 'tables().nodes()', 'table().node()' , function () {\n\treturn this.iterator( 'table', function ( ctx ) {\n\t\treturn ctx.nTable;\n\t}, 1 );\n} );\n\n\n_api_registerPlural( 'tables().body()', 'table().body()' , function () {\n\treturn this.iterator( 'table', function ( ctx ) {\n\t\treturn ctx.nTBody;\n\t}, 1 );\n} );\n\n\n_api_registerPlural( 'tables().header()', 'table().header()' , function () {\n\treturn this.iterator( 'table', function ( ctx ) {\n\t\treturn ctx.nTHead;\n\t}, 1 );\n} );\n\n\n_api_registerPlural( 'tables().footer()', 'table().footer()' , function () {\n\treturn this.iterator( 'table', function ( ctx ) {\n\t\treturn ctx.nTFoot;\n\t}, 1 );\n} );\n\n\n_api_registerPlural( 'tables().containers()', 'table().container()' , function () {\n\treturn this.iterator( 'table', function ( ctx ) {\n\t\treturn ctx.nTableWrapper;\n\t}, 1 );\n} );\n\n\n\n/**\n * Redraw the tables in the current context.\n */\n_api_register( 'draw()', function ( paging ) {\n\treturn this.iterator( 'table', function ( settings ) {\n\t\tif ( paging === 'page' ) {\n\t\t\t_fnDraw( settings );\n\t\t}\n\t\telse {\n\t\t\tif ( typeof paging === 'string' ) {\n\t\t\t\tpaging = paging === 'full-hold' ?\n\t\t\t\t\tfalse :\n\t\t\t\t\ttrue;\n\t\t\t}\n\n\t\t\t_fnReDraw( settings, paging===false );\n\t\t}\n\t} );\n} );\n\n\n\n/**\n * Get the current page index.\n *\n * @return {integer} Current page index (zero based)\n *//**\n * Set the current page.\n *\n * Note that if you attempt to show a page which does not exist, DataTables will\n * not throw an error, but rather reset the paging.\n *\n * @param {integer|string} action The paging action to take. This can be one of:\n *  * `integer` - The page index to jump to\n *  * `string` - An action to take:\n *    * `first` - Jump to first page.\n *    * `next` - Jump to the next page\n *    * `previous` - Jump to previous page\n *    * `last` - Jump to the last page.\n * @returns {DataTables.Api} this\n */\n_api_register( 'page()', function ( action ) {\n\tif ( action === undefined ) {\n\t\treturn this.page.info().page; // not an expensive call\n\t}\n\n\t// else, have an action to take on all tables\n\treturn this.iterator( 'table', function ( settings ) {\n\t\t_fnPageChange( settings, action );\n\t} );\n} );\n\n\n/**\n * Paging information for the first table in the current context.\n *\n * If you require paging information for another table, use the `table()` method\n * with a suitable selector.\n *\n * @return {object} Object with the following properties set:\n *  * `page` - Current page index (zero based - i.e. the first page is `0`)\n *  * `pages` - Total number of pages\n *  * `start` - Display index for the first record shown on the current page\n *  * `end` - Display index for the last record shown on the current page\n *  * `length` - Display length (number of records). Note that generally `start\n *    + length = end`, but this is not always true, for example if there are\n *    only 2 records to show on the final page, with a length of 10.\n *  * `recordsTotal` - Full data set length\n *  * `recordsDisplay` - Data set length once the current filtering criterion\n *    are applied.\n */\n_api_register( 'page.info()', function ( action ) {\n\tif ( this.context.length === 0 ) {\n\t\treturn undefined;\n\t}\n\n\tvar\n\t\tsettings   = this.context[0],\n\t\tstart      = settings._iDisplayStart,\n\t\tlen        = settings.oFeatures.bPaginate ? settings._iDisplayLength : -1,\n\t\tvisRecords = settings.fnRecordsDisplay(),\n\t\tall        = len === -1;\n\n\treturn {\n\t\t\"page\":           all ? 0 : Math.floor( start / len ),\n\t\t\"pages\":          all ? 1 : Math.ceil( visRecords / len ),\n\t\t\"start\":          start,\n\t\t\"end\":            settings.fnDisplayEnd(),\n\t\t\"length\":         len,\n\t\t\"recordsTotal\":   settings.fnRecordsTotal(),\n\t\t\"recordsDisplay\": visRecords,\n\t\t\"serverSide\":     _fnDataSource( settings ) === 'ssp'\n\t};\n} );\n\n\n/**\n * Get the current page length.\n *\n * @return {integer} Current page length. Note `-1` indicates that all records\n *   are to be shown.\n *//**\n * Set the current page length.\n *\n * @param {integer} Page length to set. Use `-1` to show all records.\n * @returns {DataTables.Api} this\n */\n_api_register( 'page.len()', function ( len ) {\n\t// Note that we can't call this function 'length()' because `length`\n\t// is a Javascript property of functions which defines how many arguments\n\t// the function expects.\n\tif ( len === undefined ) {\n\t\treturn this.context.length !== 0 ?\n\t\t\tthis.context[0]._iDisplayLength :\n\t\t\tundefined;\n\t}\n\n\t// else, set the page length\n\treturn this.iterator( 'table', function ( settings ) {\n\t\t_fnLengthChange( settings, len );\n\t} );\n} );\n\n\n\nvar __reload = function ( settings, holdPosition, callback ) {\n\t// Use the draw event to trigger a callback\n\tif ( callback ) {\n\t\tvar api = new _Api( settings );\n\n\t\tapi.one( 'draw', function () {\n\t\t\tcallback( api.ajax.json() );\n\t\t} );\n\t}\n\n\tif ( _fnDataSource( settings ) == 'ssp' ) {\n\t\t_fnReDraw( settings, holdPosition );\n\t}\n\telse {\n\t\t_fnProcessingDisplay( settings, true );\n\n\t\t// Cancel an existing request\n\t\tvar xhr = settings.jqXHR;\n\t\tif ( xhr && xhr.readyState !== 4 ) {\n\t\t\txhr.abort();\n\t\t}\n\n\t\t// Trigger xhr\n\t\t_fnBuildAjax( settings, [], function( json ) {\n\t\t\t_fnClearTable( settings );\n\n\t\t\tvar data = _fnAjaxDataSrc( settings, json );\n\t\t\tfor ( var i=0, ien=data.length ; i<ien ; i++ ) {\n\t\t\t\t_fnAddData( settings, data[i] );\n\t\t\t}\n\n\t\t\t_fnReDraw( settings, holdPosition );\n\t\t\t_fnProcessingDisplay( settings, false );\n\t\t} );\n\t}\n};\n\n\n/**\n * Get the JSON response from the last Ajax request that DataTables made to the\n * server. Note that this returns the JSON from the first table in the current\n * context.\n *\n * @return {object} JSON received from the server.\n */\n_api_register( 'ajax.json()', function () {\n\tvar ctx = this.context;\n\n\tif ( ctx.length > 0 ) {\n\t\treturn ctx[0].json;\n\t}\n\n\t// else return undefined;\n} );\n\n\n/**\n * Get the data submitted in the last Ajax request\n */\n_api_register( 'ajax.params()', function () {\n\tvar ctx = this.context;\n\n\tif ( ctx.length > 0 ) {\n\t\treturn ctx[0].oAjaxData;\n\t}\n\n\t// else return undefined;\n} );\n\n\n/**\n * Reload tables from the Ajax data source. Note that this function will\n * automatically re-draw the table when the remote data has been loaded.\n *\n * @param {boolean} [reset=true] Reset (default) or hold the current paging\n *   position. A full re-sort and re-filter is performed when this method is\n *   called, which is why the pagination reset is the default action.\n * @returns {DataTables.Api} this\n */\n_api_register( 'ajax.reload()', function ( callback, resetPaging ) {\n\treturn this.iterator( 'table', function (settings) {\n\t\t__reload( settings, resetPaging===false, callback );\n\t} );\n} );\n\n\n/**\n * Get the current Ajax URL. Note that this returns the URL from the first\n * table in the current context.\n *\n * @return {string} Current Ajax source URL\n *//**\n * Set the Ajax URL. Note that this will set the URL for all tables in the\n * current context.\n *\n * @param {string} url URL to set.\n * @returns {DataTables.Api} this\n */\n_api_register( 'ajax.url()', function ( url ) {\n\tvar ctx = this.context;\n\n\tif ( url === undefined ) {\n\t\t// get\n\t\tif ( ctx.length === 0 ) {\n\t\t\treturn undefined;\n\t\t}\n\t\tctx = ctx[0];\n\n\t\treturn ctx.ajax ?\n\t\t\t$.isPlainObject( ctx.ajax ) ?\n\t\t\t\tctx.ajax.url :\n\t\t\t\tctx.ajax :\n\t\t\tctx.sAjaxSource;\n\t}\n\n\t// set\n\treturn this.iterator( 'table', function ( settings ) {\n\t\tif ( $.isPlainObject( settings.ajax ) ) {\n\t\t\tsettings.ajax.url = url;\n\t\t}\n\t\telse {\n\t\t\tsettings.ajax = url;\n\t\t}\n\t\t// No need to consider sAjaxSource here since DataTables gives priority\n\t\t// to `ajax` over `sAjaxSource`. So setting `ajax` here, renders any\n\t\t// value of `sAjaxSource` redundant.\n\t} );\n} );\n\n\n/**\n * Load data from the newly set Ajax URL. Note that this method is only\n * available when `ajax.url()` is used to set a URL. Additionally, this method\n * has the same effect as calling `ajax.reload()` but is provided for\n * convenience when setting a new URL. Like `ajax.reload()` it will\n * automatically redraw the table once the remote data has been loaded.\n *\n * @returns {DataTables.Api} this\n */\n_api_register( 'ajax.url().load()', function ( callback, resetPaging ) {\n\t// Same as a reload, but makes sense to present it for easy access after a\n\t// url change\n\treturn this.iterator( 'table', function ( ctx ) {\n\t\t__reload( ctx, resetPaging===false, callback );\n\t} );\n} );\n\n\n\n\nvar _selector_run = function ( type, selector, selectFn, settings, opts )\n{\n\tvar\n\t\tout = [], res,\n\t\ta, i, ien, j, jen,\n\t\tselectorType = typeof selector;\n\n\t// Can't just check for isArray here, as an API or jQuery instance might be\n\t// given with their array like look\n\tif ( ! selector || selectorType === 'string' || selectorType === 'function' || selector.length === undefined ) {\n\t\tselector = [ selector ];\n\t}\n\n\tfor ( i=0, ien=selector.length ; i<ien ; i++ ) {\n\t\t// Only split on simple strings - complex expressions will be jQuery selectors\n\t\ta = selector[i] && selector[i].split && ! selector[i].match(/[\\[\\(:]/) ?\n\t\t\tselector[i].split(',') :\n\t\t\t[ selector[i] ];\n\n\t\tfor ( j=0, jen=a.length ; j<jen ; j++ ) {\n\t\t\tres = selectFn( typeof a[j] === 'string' ? (a[j]).trim() : a[j] );\n\n\t\t\tif ( res && res.length ) {\n\t\t\t\tout = out.concat( res );\n\t\t\t}\n\t\t}\n\t}\n\n\t// selector extensions\n\tvar ext = _ext.selector[ type ];\n\tif ( ext.length ) {\n\t\tfor ( i=0, ien=ext.length ; i<ien ; i++ ) {\n\t\t\tout = ext[i]( settings, opts, out );\n\t\t}\n\t}\n\n\treturn _unique( out );\n};\n\n\nvar _selector_opts = function ( opts )\n{\n\tif ( ! opts ) {\n\t\topts = {};\n\t}\n\n\t// Backwards compatibility for 1.9- which used the terminology filter rather\n\t// than search\n\tif ( opts.filter && opts.search === undefined ) {\n\t\topts.search = opts.filter;\n\t}\n\n\treturn $.extend( {\n\t\tsearch: 'none',\n\t\torder: 'current',\n\t\tpage: 'all'\n\t}, opts );\n};\n\n\nvar _selector_first = function ( inst )\n{\n\t// Reduce the API instance to the first item found\n\tfor ( var i=0, ien=inst.length ; i<ien ; i++ ) {\n\t\tif ( inst[i].length > 0 ) {\n\t\t\t// Assign the first element to the first item in the instance\n\t\t\t// and truncate the instance and context\n\t\t\tinst[0] = inst[i];\n\t\t\tinst[0].length = 1;\n\t\t\tinst.length = 1;\n\t\t\tinst.context = [ inst.context[i] ];\n\n\t\t\treturn inst;\n\t\t}\n\t}\n\n\t// Not found - return an empty instance\n\tinst.length = 0;\n\treturn inst;\n};\n\n\nvar _selector_row_indexes = function ( settings, opts )\n{\n\tvar\n\t\ti, ien, tmp, a=[],\n\t\tdisplayFiltered = settings.aiDisplay,\n\t\tdisplayMaster = settings.aiDisplayMaster;\n\n\tvar\n\t\tsearch = opts.search,  // none, applied, removed\n\t\torder  = opts.order,   // applied, current, index (original - compatibility with 1.9)\n\t\tpage   = opts.page;    // all, current\n\n\tif ( _fnDataSource( settings ) == 'ssp' ) {\n\t\t// In server-side processing mode, most options are irrelevant since\n\t\t// rows not shown don't exist and the index order is the applied order\n\t\t// Removed is a special case - for consistency just return an empty\n\t\t// array\n\t\treturn search === 'removed' ?\n\t\t\t[] :\n\t\t\t_range( 0, displayMaster.length );\n\t}\n\telse if ( page == 'current' ) {\n\t\t// Current page implies that order=current and filter=applied, since it is\n\t\t// fairly senseless otherwise, regardless of what order and search actually\n\t\t// are\n\t\tfor ( i=settings._iDisplayStart, ien=settings.fnDisplayEnd() ; i<ien ; i++ ) {\n\t\t\ta.push( displayFiltered[i] );\n\t\t}\n\t}\n\telse if ( order == 'current' || order == 'applied' ) {\n\t\tif ( search == 'none') {\n\t\t\ta = displayMaster.slice();\n\t\t}\n\t\telse if ( search == 'applied' ) {\n\t\t\ta = displayFiltered.slice();\n\t\t}\n\t\telse if ( search == 'removed' ) {\n\t\t\t// O(n+m) solution by creating a hash map\n\t\t\tvar displayFilteredMap = {};\n\n\t\t\tfor ( var i=0, ien=displayFiltered.length ; i<ien ; i++ ) {\n\t\t\t\tdisplayFilteredMap[displayFiltered[i]] = null;\n\t\t\t}\n\n\t\t\ta = $.map( displayMaster, function (el) {\n\t\t\t\treturn ! displayFilteredMap.hasOwnProperty(el) ?\n\t\t\t\t\tel :\n\t\t\t\t\tnull;\n\t\t\t} );\n\t\t}\n\t}\n\telse if ( order == 'index' || order == 'original' ) {\n\t\tfor ( i=0, ien=settings.aoData.length ; i<ien ; i++ ) {\n\t\t\tif ( search == 'none' ) {\n\t\t\t\ta.push( i );\n\t\t\t}\n\t\t\telse { // applied | removed\n\t\t\t\ttmp = $.inArray( i, displayFiltered );\n\n\t\t\t\tif ((tmp === -1 && search == 'removed') ||\n\t\t\t\t\t(tmp >= 0   && search == 'applied') )\n\t\t\t\t{\n\t\t\t\t\ta.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a;\n};\n\n\n/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n * Rows\n *\n * {}          - no selector - use all available rows\n * {integer}   - row aoData index\n * {node}      - TR node\n * {string}    - jQuery selector to apply to the TR elements\n * {array}     - jQuery array of nodes, or simply an array of TR nodes\n *\n */\nvar __row_selector = function ( settings, selector, opts )\n{\n\tvar rows;\n\tvar run = function ( sel ) {\n\t\tvar selInt = _intVal( sel );\n\t\tvar i, ien;\n\t\tvar aoData = settings.aoData;\n\n\t\t// Short cut - selector is a number and no options provided (default is\n\t\t// all records, so no need to check if the index is in there, since it\n\t\t// must be - dev error if the index doesn't exist).\n\t\tif ( selInt !== null && ! opts ) {\n\t\t\treturn [ selInt ];\n\t\t}\n\n\t\tif ( ! rows ) {\n\t\t\trows = _selector_row_indexes( settings, opts );\n\t\t}\n\n\t\tif ( selInt !== null && $.inArray( selInt, rows ) !== -1 ) {\n\t\t\t// Selector - integer\n\t\t\treturn [ selInt ];\n\t\t}\n\t\telse if ( sel === null || sel === undefined || sel === '' ) {\n\t\t\t// Selector - none\n\t\t\treturn rows;\n\t\t}\n\n\t\t// Selector - function\n\t\tif ( typeof sel === 'function' ) {\n\t\t\treturn $.map( rows, function (idx) {\n\t\t\t\tvar row = aoData[ idx ];\n\t\t\t\treturn sel( idx, row._aData, row.nTr ) ? idx : null;\n\t\t\t} );\n\t\t}\n\n\t\t// Selector - node\n\t\tif ( sel.nodeName ) {\n\t\t\tvar rowIdx = sel._DT_RowIndex;  // Property added by DT for fast lookup\n\t\t\tvar cellIdx = sel._DT_CellIndex;\n\n\t\t\tif ( rowIdx !== undefined ) {\n\t\t\t\t// Make sure that the row is actually still present in the table\n\t\t\t\treturn aoData[ rowIdx ] && aoData[ rowIdx ].nTr === sel ?\n\t\t\t\t\t[ rowIdx ] :\n\t\t\t\t\t[];\n\t\t\t}\n\t\t\telse if ( cellIdx ) {\n\t\t\t\treturn aoData[ cellIdx.row ] && aoData[ cellIdx.row ].nTr === sel.parentNode ?\n\t\t\t\t\t[ cellIdx.row ] :\n\t\t\t\t\t[];\n\t\t\t}\n\t\t\telse {\n\t\t\t\tvar host = $(sel).closest('*[data-dt-row]');\n\t\t\t\treturn host.length ?\n\t\t\t\t\t[ host.data('dt-row') ] :\n\t\t\t\t\t[];\n\t\t\t}\n\t\t}\n\n\t\t// ID selector. Want to always be able to select rows by id, regardless\n\t\t// of if the tr element has been created or not, so can't rely upon\n\t\t// jQuery here - hence a custom implementation. This does not match\n\t\t// Sizzle's fast selector or HTML4 - in HTML5 the ID can be anything,\n\t\t// but to select it using a CSS selector engine (like Sizzle or\n\t\t// querySelect) it would need to need to be escaped for some characters.\n\t\t// DataTables simplifies this for row selectors since you can select\n\t\t// only a row. A # indicates an id any anything that follows is the id -\n\t\t// unescaped.\n\t\tif ( typeof sel === 'string' && sel.charAt(0) === '#' ) {\n\t\t\t// get row index from id\n\t\t\tvar rowObj = settings.aIds[ sel.replace( /^#/, '' ) ];\n\t\t\tif ( rowObj !== undefined ) {\n\t\t\t\treturn [ rowObj.idx ];\n\t\t\t}\n\n\t\t\t// need to fall through to jQuery in case there is DOM id that\n\t\t\t// matches\n\t\t}\n\t\t\n\t\t// Get nodes in the order from the `rows` array with null values removed\n\t\tvar nodes = _removeEmpty(\n\t\t\t_pluck_order( settings.aoData, rows, 'nTr' )\n\t\t);\n\n\t\t// Selector - jQuery selector string, array of nodes or jQuery object/\n\t\t// As jQuery's .filter() allows jQuery objects to be passed in filter,\n\t\t// it also allows arrays, so this will cope with all three options\n\t\treturn $(nodes)\n\t\t\t.filter( sel )\n\t\t\t.map( function () {\n\t\t\t\treturn this._DT_RowIndex;\n\t\t\t} )\n\t\t\t.toArray();\n\t};\n\n\treturn _selector_run( 'row', selector, run, settings, opts );\n};\n\n\n_api_register( 'rows()', function ( selector, opts ) {\n\t// argument shifting\n\tif ( selector === undefined ) {\n\t\tselector = '';\n\t}\n\telse if ( $.isPlainObject( selector ) ) {\n\t\topts = selector;\n\t\tselector = '';\n\t}\n\n\topts = _selector_opts( opts );\n\n\tvar inst = this.iterator( 'table', function ( settings ) {\n\t\treturn __row_selector( settings, selector, opts );\n\t}, 1 );\n\n\t// Want argument shifting here and in __row_selector?\n\tinst.selector.rows = selector;\n\tinst.selector.opts = opts;\n\n\treturn inst;\n} );\n\n_api_register( 'rows().nodes()', function () {\n\treturn this.iterator( 'row', function ( settings, row ) {\n\t\treturn settings.aoData[ row ].nTr || undefined;\n\t}, 1 );\n} );\n\n_api_register( 'rows().data()', function () {\n\treturn this.iterator( true, 'rows', function ( settings, rows ) {\n\t\treturn _pluck_order( settings.aoData, rows, '_aData' );\n\t}, 1 );\n} );\n\n_api_registerPlural( 'rows().cache()', 'row().cache()', function ( type ) {\n\treturn this.iterator( 'row', function ( settings, row ) {\n\t\tvar r = settings.aoData[ row ];\n\t\treturn type === 'search' ? r._aFilterData : r._aSortData;\n\t}, 1 );\n} );\n\n_api_registerPlural( 'rows().invalidate()', 'row().invalidate()', function ( src ) {\n\treturn this.iterator( 'row', function ( settings, row ) {\n\t\t_fnInvalidate( settings, row, src );\n\t} );\n} );\n\n_api_registerPlural( 'rows().indexes()', 'row().index()', function () {\n\treturn this.iterator( 'row', function ( settings, row ) {\n\t\treturn row;\n\t}, 1 );\n} );\n\n_api_registerPlural( 'rows().ids()', 'row().id()', function ( hash ) {\n\tvar a = [];\n\tvar context = this.context;\n\n\t// `iterator` will drop undefined values, but in this case we want them\n\tfor ( var i=0, ien=context.length ; i<ien ; i++ ) {\n\t\tfor ( var j=0, jen=this[i].length ; j<jen ; j++ ) {\n\t\t\tvar id = context[i].rowIdFn( context[i].aoData[ this[i][j] ]._aData );\n\t\t\ta.push( (hash === true ? '#' : '' )+ id );\n\t\t}\n\t}\n\n\treturn new _Api( context, a );\n} );\n\n_api_registerPlural( 'rows().remove()', 'row().remove()', function () {\n\tvar that = this;\n\n\tthis.iterator( 'row', function ( settings, row, thatIdx ) {\n\t\tvar data = settings.aoData;\n\t\tvar rowData = data[ row ];\n\t\tvar i, ien, j, jen;\n\t\tvar loopRow, loopCells;\n\n\t\tdata.splice( row, 1 );\n\n\t\t// Update the cached indexes\n\t\tfor ( i=0, ien=data.length ; i<ien ; i++ ) {\n\t\t\tloopRow = data[i];\n\t\t\tloopCells = loopRow.anCells;\n\n\t\t\t// Rows\n\t\t\tif ( loopRow.nTr !== null ) {\n\t\t\t\tloopRow.nTr._DT_RowIndex = i;\n\t\t\t}\n\n\t\t\t// Cells\n\t\t\tif ( loopCells !== null ) {\n\t\t\t\tfor ( j=0, jen=loopCells.length ; j<jen ; j++ ) {\n\t\t\t\t\tloopCells[j]._DT_CellIndex.row = i;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Delete from the display arrays\n\t\t_fnDeleteIndex( settings.aiDisplayMaster, row );\n\t\t_fnDeleteIndex( settings.aiDisplay, row );\n\t\t_fnDeleteIndex( that[ thatIdx ], row, false ); // maintain local indexes\n\n\t\t// For server-side processing tables - subtract the deleted row from the count\n\t\tif ( settings._iRecordsDisplay > 0 ) {\n\t\t\tsettings._iRecordsDisplay--;\n\t\t}\n\n\t\t// Check for an 'overflow' they case for displaying the table\n\t\t_fnLengthOverflow( settings );\n\n\t\t// Remove the row's ID reference if there is one\n\t\tvar id = settings.rowIdFn( rowData._aData );\n\t\tif ( id !== undefined ) {\n\t\t\tdelete settings.aIds[ id ];\n\t\t}\n\t} );\n\n\tthis.iterator( 'table', function ( settings ) {\n\t\tfor ( var i=0, ien=settings.aoData.length ; i<ien ; i++ ) {\n\t\t\tsettings.aoData[i].idx = i;\n\t\t}\n\t} );\n\n\treturn this;\n} );\n\n\n_api_register( 'rows.add()', function ( rows ) {\n\tvar newRows = this.iterator( 'table', function ( settings ) {\n\t\t\tvar row, i, ien;\n\t\t\tvar out = [];\n\n\t\t\tfor ( i=0, ien=rows.length ; i<ien ; i++ ) {\n\t\t\t\trow = rows[i];\n\n\t\t\t\tif ( row.nodeName && row.nodeName.toUpperCase() === 'TR' ) {\n\t\t\t\t\tout.push( _fnAddTr( settings, row )[0] );\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tout.push( _fnAddData( settings, row ) );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn out;\n\t\t}, 1 );\n\n\t// Return an Api.rows() extended instance, so rows().nodes() etc can be used\n\tvar modRows = this.rows( -1 );\n\tmodRows.pop();\n\t$.merge( modRows, newRows );\n\n\treturn modRows;\n} );\n\n\n\n\n\n/**\n *\n */\n_api_register( 'row()', function ( selector, opts ) {\n\treturn _selector_first( this.rows( selector, opts ) );\n} );\n\n\n_api_register( 'row().data()', function ( data ) {\n\tvar ctx = this.context;\n\n\tif ( data === undefined ) {\n\t\t// Get\n\t\treturn ctx.length && this.length ?\n\t\t\tctx[0].aoData[ this[0] ]._aData :\n\t\t\tundefined;\n\t}\n\n\t// Set\n\tvar row = ctx[0].aoData[ this[0] ];\n\trow._aData = data;\n\n\t// If the DOM has an id, and the data source is an array\n\tif ( Array.isArray( data ) && row.nTr && row.nTr.id ) {\n\t\t_fnSetObjectDataFn( ctx[0].rowId )( data, row.nTr.id );\n\t}\n\n\t// Automatically invalidate\n\t_fnInvalidate( ctx[0], this[0], 'data' );\n\n\treturn this;\n} );\n\n\n_api_register( 'row().node()', function () {\n\tvar ctx = this.context;\n\n\treturn ctx.length && this.length ?\n\t\tctx[0].aoData[ this[0] ].nTr || null :\n\t\tnull;\n} );\n\n\n_api_register( 'row.add()', function ( row ) {\n\t// Allow a jQuery object to be passed in - only a single row is added from\n\t// it though - the first element in the set\n\tif ( row instanceof $ && row.length ) {\n\t\trow = row[0];\n\t}\n\n\tvar rows = this.iterator( 'table', function ( settings ) {\n\t\tif ( row.nodeName && row.nodeName.toUpperCase() === 'TR' ) {\n\t\t\treturn _fnAddTr( settings, row )[0];\n\t\t}\n\t\treturn _fnAddData( settings, row );\n\t} );\n\n\t// Return an Api.rows() extended instance, with the newly added row selected\n\treturn this.row( rows[0] );\n} );\n\n\n$(document).on('plugin-init.dt', function (e, context) {\n\tvar api = new _Api( context );\n\tvar namespace = 'on-plugin-init';\n\tvar stateSaveParamsEvent = 'stateSaveParams.' + namespace;\n\tvar destroyEvent = 'destroy. ' + namespace;\n\n\tapi.on( stateSaveParamsEvent, function ( e, settings, d ) {\n\t\t// This could be more compact with the API, but it is a lot faster as a simple\n\t\t// internal loop\n\t\tvar idFn = settings.rowIdFn;\n\t\tvar data = settings.aoData;\n\t\tvar ids = [];\n\n\t\tfor (var i=0 ; i<data.length ; i++) {\n\t\t\tif (data[i]._detailsShow) {\n\t\t\t\tids.push( '#' + idFn(data[i]._aData) );\n\t\t\t}\n\t\t}\n\n\t\td.childRows = ids;\n\t});\n\n\tapi.on( destroyEvent, function () {\n\t\tapi.off(stateSaveParamsEvent + ' ' + destroyEvent);\n\t});\n\n\tvar loaded = api.state.loaded();\n\n\tif ( loaded && loaded.childRows ) {\n\t\tapi\n\t\t\t.rows( $.map(loaded.childRows, function (id){\n\t\t\t\treturn id.replace(/:/g, '\\\\:')\n\t\t\t}) )\n\t\t\t.every( function () {\n\t\t\t\t_fnCallbackFire( context, null, 'requestChild', [ this ] )\n\t\t\t});\n\t}\n});\n\nvar __details_add = function ( ctx, row, data, klass )\n{\n\t// Convert to array of TR elements\n\tvar rows = [];\n\tvar addRow = function ( r, k ) {\n\t\t// Recursion to allow for arrays of jQuery objects\n\t\tif ( Array.isArray( r ) || r instanceof $ ) {\n\t\t\tfor ( var i=0, ien=r.length ; i<ien ; i++ ) {\n\t\t\t\taddRow( r[i], k );\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// If we get a TR element, then just add it directly - up to the dev\n\t\t// to add the correct number of columns etc\n\t\tif ( r.nodeName && r.nodeName.toLowerCase() === 'tr' ) {\n\t\t\trows.push( r );\n\t\t}\n\t\telse {\n\t\t\t// Otherwise create a row with a wrapper\n\t\t\tvar created = $('<tr><td></td></tr>').addClass( k );\n\t\t\t$('td', created)\n\t\t\t\t.addClass( k )\n\t\t\t\t.html( r )\n\t\t\t\t[0].colSpan = _fnVisbleColumns( ctx );\n\n\t\t\trows.push( created[0] );\n\t\t}\n\t};\n\n\taddRow( data, klass );\n\n\tif ( row._details ) {\n\t\trow._details.detach();\n\t}\n\n\trow._details = $(rows);\n\n\t// If the children were already shown, that state should be retained\n\tif ( row._detailsShow ) {\n\t\trow._details.insertAfter( row.nTr );\n\t}\n};\n\n\n// Make state saving of child row details async to allow them to be batch processed\nvar __details_state = DataTable.util.throttle(\n\tfunction (ctx) {\n\t\t_fnSaveState( ctx[0] )\n\t},\n\t500\n);\n\n\nvar __details_remove = function ( api, idx )\n{\n\tvar ctx = api.context;\n\n\tif ( ctx.length ) {\n\t\tvar row = ctx[0].aoData[ idx !== undefined ? idx : api[0] ];\n\n\t\tif ( row && row._details ) {\n\t\t\trow._details.remove();\n\n\t\t\trow._detailsShow = undefined;\n\t\t\trow._details = undefined;\n\t\t\t$( row.nTr ).removeClass( 'dt-hasChild' );\n\t\t\t__details_state( ctx );\n\t\t}\n\t}\n};\n\n\nvar __details_display = function ( api, show ) {\n\tvar ctx = api.context;\n\n\tif ( ctx.length && api.length ) {\n\t\tvar row = ctx[0].aoData[ api[0] ];\n\n\t\tif ( row._details ) {\n\t\t\trow._detailsShow = show;\n\n\t\t\tif ( show ) {\n\t\t\t\trow._details.insertAfter( row.nTr );\n\t\t\t\t$( row.nTr ).addClass( 'dt-hasChild' );\n\t\t\t}\n\t\t\telse {\n\t\t\t\trow._details.detach();\n\t\t\t\t$( row.nTr ).removeClass( 'dt-hasChild' );\n\t\t\t}\n\n\t\t\t_fnCallbackFire( ctx[0], null, 'childRow', [ show, api.row( api[0] ) ] )\n\n\t\t\t__details_events( ctx[0] );\n\t\t\t__details_state( ctx );\n\t\t}\n\t}\n};\n\n\nvar __details_events = function ( settings )\n{\n\tvar api = new _Api( settings );\n\tvar namespace = '.dt.DT_details';\n\tvar drawEvent = 'draw'+namespace;\n\tvar colvisEvent = 'column-sizing'+namespace;\n\tvar destroyEvent = 'destroy'+namespace;\n\tvar data = settings.aoData;\n\n\tapi.off( drawEvent +' '+ colvisEvent +' '+ destroyEvent );\n\n\tif ( _pluck( data, '_details' ).length > 0 ) {\n\t\t// On each draw, insert the required elements into the document\n\t\tapi.on( drawEvent, function ( e, ctx ) {\n\t\t\tif ( settings !== ctx ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tapi.rows( {page:'current'} ).eq(0).each( function (idx) {\n\t\t\t\t// Internal data grab\n\t\t\t\tvar row = data[ idx ];\n\n\t\t\t\tif ( row._detailsShow ) {\n\t\t\t\t\trow._details.insertAfter( row.nTr );\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\n\t\t// Column visibility change - update the colspan\n\t\tapi.on( colvisEvent, function ( e, ctx, idx, vis ) {\n\t\t\tif ( settings !== ctx ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Update the colspan for the details rows (note, only if it already has\n\t\t\t// a colspan)\n\t\t\tvar row, visible = _fnVisbleColumns( ctx );\n\n\t\t\tfor ( var i=0, ien=data.length ; i<ien ; i++ ) {\n\t\t\t\trow = data[i];\n\n\t\t\t\tif ( row._details ) {\n\t\t\t\t\trow._details.children('td[colspan]').attr('colspan', visible );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\n\t\t// Table destroyed - nuke any child rows\n\t\tapi.on( destroyEvent, function ( e, ctx ) {\n\t\t\tif ( settings !== ctx ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor ( var i=0, ien=data.length ; i<ien ; i++ ) {\n\t\t\t\tif ( data[i]._details ) {\n\t\t\t\t\t__details_remove( api, i );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t}\n};\n\n// Strings for the method names to help minification\nvar _emp = '';\nvar _child_obj = _emp+'row().child';\nvar _child_mth = _child_obj+'()';\n\n// data can be:\n//  tr\n//  string\n//  jQuery or array of any of the above\n_api_register( _child_mth, function ( data, klass ) {\n\tvar ctx = this.context;\n\n\tif ( data === undefined ) {\n\t\t// get\n\t\treturn ctx.length && this.length ?\n\t\t\tctx[0].aoData[ this[0] ]._details :\n\t\t\tundefined;\n\t}\n\telse if ( data === true ) {\n\t\t// show\n\t\tthis.child.show();\n\t}\n\telse if ( data === false ) {\n\t\t// remove\n\t\t__details_remove( this );\n\t}\n\telse if ( ctx.length && this.length ) {\n\t\t// set\n\t\t__details_add( ctx[0], ctx[0].aoData[ this[0] ], data, klass );\n\t}\n\n\treturn this;\n} );\n\n\n_api_register( [\n\t_child_obj+'.show()',\n\t_child_mth+'.show()' // only when `child()` was called with parameters (without\n], function ( show ) {   // it returns an object and this method is not executed)\n\t__details_display( this, true );\n\treturn this;\n} );\n\n\n_api_register( [\n\t_child_obj+'.hide()',\n\t_child_mth+'.hide()' // only when `child()` was called with parameters (without\n], function () {         // it returns an object and this method is not executed)\n\t__details_display( this, false );\n\treturn this;\n} );\n\n\n_api_register( [\n\t_child_obj+'.remove()',\n\t_child_mth+'.remove()' // only when `child()` was called with parameters (without\n], function () {           // it returns an object and this method is not executed)\n\t__details_remove( this );\n\treturn this;\n} );\n\n\n_api_register( _child_obj+'.isShown()', function () {\n\tvar ctx = this.context;\n\n\tif ( ctx.length && this.length ) {\n\t\t// _detailsShown as false or undefined will fall through to return false\n\t\treturn ctx[0].aoData[ this[0] ]._detailsShow || false;\n\t}\n\treturn false;\n} );\n\n\n\n/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n * Columns\n *\n * {integer}           - column index (>=0 count from left, <0 count from right)\n * \"{integer}:visIdx\"  - visible column index (i.e. translate to column index)  (>=0 count from left, <0 count from right)\n * \"{integer}:visible\" - alias for {integer}:visIdx  (>=0 count from left, <0 count from right)\n * \"{string}:name\"     - column name\n * \"{string}\"          - jQuery selector on column header nodes\n *\n */\n\n// can be an array of these items, comma separated list, or an array of comma\n// separated lists\n\nvar __re_column_selector = /^([^:]+):(name|visIdx|visible)$/;\n\n\n// r1 and r2 are redundant - but it means that the parameters match for the\n// iterator callback in columns().data()\nvar __columnData = function ( settings, column, r1, r2, rows ) {\n\tvar a = [];\n\tfor ( var row=0, ien=rows.length ; row<ien ; row++ ) {\n\t\ta.push( _fnGetCellData( settings, rows[row], column ) );\n\t}\n\treturn a;\n};\n\n\nvar __column_selector = function ( settings, selector, opts )\n{\n\tvar\n\t\tcolumns = settings.aoColumns,\n\t\tnames = _pluck( columns, 'sName' ),\n\t\tnodes = _pluck( columns, 'nTh' );\n\n\tvar run = function ( s ) {\n\t\tvar selInt = _intVal( s );\n\n\t\t// Selector - all\n\t\tif ( s === '' ) {\n\t\t\treturn _range( columns.length );\n\t\t}\n\n\t\t// Selector - index\n\t\tif ( selInt !== null ) {\n\t\t\treturn [ selInt >= 0 ?\n\t\t\t\tselInt : // Count from left\n\t\t\t\tcolumns.length + selInt // Count from right (+ because its a negative value)\n\t\t\t];\n\t\t}\n\n\t\t// Selector = function\n\t\tif ( typeof s === 'function' ) {\n\t\t\tvar rows = _selector_row_indexes( settings, opts );\n\n\t\t\treturn $.map( columns, function (col, idx) {\n\t\t\t\treturn s(\n\t\t\t\t\t\tidx,\n\t\t\t\t\t\t__columnData( settings, idx, 0, 0, rows ),\n\t\t\t\t\t\tnodes[ idx ]\n\t\t\t\t\t) ? idx : null;\n\t\t\t} );\n\t\t}\n\n\t\t// jQuery or string selector\n\t\tvar match = typeof s === 'string' ?\n\t\t\ts.match( __re_column_selector ) :\n\t\t\t'';\n\n\t\tif ( match ) {\n\t\t\tswitch( match[2] ) {\n\t\t\t\tcase 'visIdx':\n\t\t\t\tcase 'visible':\n\t\t\t\t\tvar idx = parseInt( match[1], 10 );\n\t\t\t\t\t// Visible index given, convert to column index\n\t\t\t\t\tif ( idx < 0 ) {\n\t\t\t\t\t\t// Counting from the right\n\t\t\t\t\t\tvar visColumns = $.map( columns, function (col,i) {\n\t\t\t\t\t\t\treturn col.bVisible ? i : null;\n\t\t\t\t\t\t} );\n\t\t\t\t\t\treturn [ visColumns[ visColumns.length + idx ] ];\n\t\t\t\t\t}\n\t\t\t\t\t// Counting from the left\n\t\t\t\t\treturn [ _fnVisibleToColumnIndex( settings, idx ) ];\n\n\t\t\t\tcase 'name':\n\t\t\t\t\t// match by name. `names` is column index complete and in order\n\t\t\t\t\treturn $.map( names, function (name, i) {\n\t\t\t\t\t\treturn name === match[1] ? i : null;\n\t\t\t\t\t} );\n\n\t\t\t\tdefault:\n\t\t\t\t\treturn [];\n\t\t\t}\n\t\t}\n\n\t\t// Cell in the table body\n\t\tif ( s.nodeName && s._DT_CellIndex ) {\n\t\t\treturn [ s._DT_CellIndex.column ];\n\t\t}\n\n\t\t// jQuery selector on the TH elements for the columns\n\t\tvar jqResult = $( nodes )\n\t\t\t.filter( s )\n\t\t\t.map( function () {\n\t\t\t\treturn $.inArray( this, nodes ); // `nodes` is column index complete and in order\n\t\t\t} )\n\t\t\t.toArray();\n\n\t\tif ( jqResult.length || ! s.nodeName ) {\n\t\t\treturn jqResult;\n\t\t}\n\n\t\t// Otherwise a node which might have a `dt-column` data attribute, or be\n\t\t// a child or such an element\n\t\tvar host = $(s).closest('*[data-dt-column]');\n\t\treturn host.length ?\n\t\t\t[ host.data('dt-column') ] :\n\t\t\t[];\n\t};\n\n\treturn _selector_run( 'column', selector, run, settings, opts );\n};\n\n\nvar __setColumnVis = function ( settings, column, vis ) {\n\tvar\n\t\tcols = settings.aoColumns,\n\t\tcol  = cols[ column ],\n\t\tdata = settings.aoData,\n\t\trow, cells, i, ien, tr;\n\n\t// Get\n\tif ( vis === undefined ) {\n\t\treturn col.bVisible;\n\t}\n\n\t// Set\n\t// No change\n\tif ( col.bVisible === vis ) {\n\t\treturn;\n\t}\n\n\tif ( vis ) {\n\t\t// Insert column\n\t\t// Need to decide if we should use appendChild or insertBefore\n\t\tvar insertBefore = $.inArray( true, _pluck(cols, 'bVisible'), column+1 );\n\n\t\tfor ( i=0, ien=data.length ; i<ien ; i++ ) {\n\t\t\ttr = data[i].nTr;\n\t\t\tcells = data[i].anCells;\n\n\t\t\tif ( tr ) {\n\t\t\t\t// insertBefore can act like appendChild if 2nd arg is null\n\t\t\t\ttr.insertBefore( cells[ column ], cells[ insertBefore ] || null );\n\t\t\t}\n\t\t}\n\t}\n\telse {\n\t\t// Remove column\n\t\t$( _pluck( settings.aoData, 'anCells', column ) ).detach();\n\t}\n\n\t// Common actions\n\tcol.bVisible = vis;\n};\n\n\n_api_register( 'columns()', function ( selector, opts ) {\n\t// argument shifting\n\tif ( selector === undefined ) {\n\t\tselector = '';\n\t}\n\telse if ( $.isPlainObject( selector ) ) {\n\t\topts = selector;\n\t\tselector = '';\n\t}\n\n\topts = _selector_opts( opts );\n\n\tvar inst = this.iterator( 'table', function ( settings ) {\n\t\treturn __column_selector( settings, selector, opts );\n\t}, 1 );\n\n\t// Want argument shifting here and in _row_selector?\n\tinst.selector.cols = selector;\n\tinst.selector.opts = opts;\n\n\treturn inst;\n} );\n\n_api_registerPlural( 'columns().header()', 'column().header()', function ( selector, opts ) {\n\treturn this.iterator( 'column', function ( settings, column ) {\n\t\treturn settings.aoColumns[column].nTh;\n\t}, 1 );\n} );\n\n_api_registerPlural( 'columns().footer()', 'column().footer()', function ( selector, opts ) {\n\treturn this.iterator( 'column', function ( settings, column ) {\n\t\treturn settings.aoColumns[column].nTf;\n\t}, 1 );\n} );\n\n_api_registerPlural( 'columns().data()', 'column().data()', function () {\n\treturn this.iterator( 'column-rows', __columnData, 1 );\n} );\n\n_api_registerPlural( 'columns().dataSrc()', 'column().dataSrc()', function () {\n\treturn this.iterator( 'column', function ( settings, column ) {\n\t\treturn settings.aoColumns[column].mData;\n\t}, 1 );\n} );\n\n_api_registerPlural( 'columns().cache()', 'column().cache()', function ( type ) {\n\treturn this.iterator( 'column-rows', function ( settings, column, i, j, rows ) {\n\t\treturn _pluck_order( settings.aoData, rows,\n\t\t\ttype === 'search' ? '_aFilterData' : '_aSortData', column\n\t\t);\n\t}, 1 );\n} );\n\n_api_registerPlural( 'columns().nodes()', 'column().nodes()', function () {\n\treturn this.iterator( 'column-rows', function ( settings, column, i, j, rows ) {\n\t\treturn _pluck_order( settings.aoData, rows, 'anCells', column ) ;\n\t}, 1 );\n} );\n\n_api_registerPlural( 'columns().visible()', 'column().visible()', function ( vis, calc ) {\n\tvar that = this;\n\tvar ret = this.iterator( 'column', function ( settings, column ) {\n\t\tif ( vis === undefined ) {\n\t\t\treturn settings.aoColumns[ column ].bVisible;\n\t\t} // else\n\t\t__setColumnVis( settings, column, vis );\n\t} );\n\n\t// Group the column visibility changes\n\tif ( vis !== undefined ) {\n\t\tthis.iterator( 'table', function ( settings ) {\n\t\t\t// Redraw the header after changes\n\t\t\t_fnDrawHead( settings, settings.aoHeader );\n\t\t\t_fnDrawHead( settings, settings.aoFooter );\n\t\n\t\t\t// Update colspan for no records display. Child rows and extensions will use their own\n\t\t\t// listeners to do this - only need to update the empty table item here\n\t\t\tif ( ! settings.aiDisplay.length ) {\n\t\t\t\t$(settings.nTBody).find('td[colspan]').attr('colspan', _fnVisbleColumns(settings));\n\t\t\t}\n\t\n\t\t\t_fnSaveState( settings );\n\n\t\t\t// Second loop once the first is done for events\n\t\t\tthat.iterator( 'column', function ( settings, column ) {\n\t\t\t\t_fnCallbackFire( settings, null, 'column-visibility', [settings, column, vis, calc] );\n\t\t\t} );\n\n\t\t\tif ( calc === undefined || calc ) {\n\t\t\t\tthat.columns.adjust();\n\t\t\t}\n\t\t});\n\t}\n\n\treturn ret;\n} );\n\n_api_registerPlural( 'columns().indexes()', 'column().index()', function ( type ) {\n\treturn this.iterator( 'column', function ( settings, column ) {\n\t\treturn type === 'visible' ?\n\t\t\t_fnColumnIndexToVisible( settings, column ) :\n\t\t\tcolumn;\n\t}, 1 );\n} );\n\n_api_register( 'columns.adjust()', function () {\n\treturn this.iterator( 'table', function ( settings ) {\n\t\t_fnAdjustColumnSizing( settings );\n\t}, 1 );\n} );\n\n_api_register( 'column.index()', function ( type, idx ) {\n\tif ( this.context.length !== 0 ) {\n\t\tvar ctx = this.context[0];\n\n\t\tif ( type === 'fromVisible' || type === 'toData' ) {\n\t\t\treturn _fnVisibleToColumnIndex( ctx, idx );\n\t\t}\n\t\telse if ( type === 'fromData' || type === 'toVisible' ) {\n\t\t\treturn _fnColumnIndexToVisible( ctx, idx );\n\t\t}\n\t}\n} );\n\n_api_register( 'column()', function ( selector, opts ) {\n\treturn _selector_first( this.columns( selector, opts ) );\n} );\n\nvar __cell_selector = function ( settings, selector, opts )\n{\n\tvar data = settings.aoData;\n\tvar rows = _selector_row_indexes( settings, opts );\n\tvar cells = _removeEmpty( _pluck_order( data, rows, 'anCells' ) );\n\tvar allCells = $(_flatten( [], cells ));\n\tvar row;\n\tvar columns = settings.aoColumns.length;\n\tvar a, i, ien, j, o, host;\n\n\tvar run = function ( s ) {\n\t\tvar fnSelector = typeof s === 'function';\n\n\t\tif ( s === null || s === undefined || fnSelector ) {\n\t\t\t// All cells and function selectors\n\t\t\ta = [];\n\n\t\t\tfor ( i=0, ien=rows.length ; i<ien ; i++ ) {\n\t\t\t\trow = rows[i];\n\n\t\t\t\tfor ( j=0 ; j<columns ; j++ ) {\n\t\t\t\t\to = {\n\t\t\t\t\t\trow: row,\n\t\t\t\t\t\tcolumn: j\n\t\t\t\t\t};\n\n\t\t\t\t\tif ( fnSelector ) {\n\t\t\t\t\t\t// Selector - function\n\t\t\t\t\t\thost = data[ row ];\n\n\t\t\t\t\t\tif ( s( o, _fnGetCellData(settings, row, j), host.anCells ? host.anCells[j] : null ) ) {\n\t\t\t\t\t\t\ta.push( o );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\t// Selector - all\n\t\t\t\t\t\ta.push( o );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn a;\n\t\t}\n\t\t\n\t\t// Selector - index\n\t\tif ( $.isPlainObject( s ) ) {\n\t\t\t// Valid cell index and its in the array of selectable rows\n\t\t\treturn s.column !== undefined && s.row !== undefined && $.inArray( s.row, rows ) !== -1 ?\n\t\t\t\t[s] :\n\t\t\t\t[];\n\t\t}\n\n\t\t// Selector - jQuery filtered cells\n\t\tvar jqResult = allCells\n\t\t\t.filter( s )\n\t\t\t.map( function (i, el) {\n\t\t\t\treturn { // use a new object, in case someone changes the values\n\t\t\t\t\trow:    el._DT_CellIndex.row,\n\t\t\t\t\tcolumn: el._DT_CellIndex.column\n \t\t\t\t};\n\t\t\t} )\n\t\t\t.toArray();\n\n\t\tif ( jqResult.length || ! s.nodeName ) {\n\t\t\treturn jqResult;\n\t\t}\n\n\t\t// Otherwise the selector is a node, and there is one last option - the\n\t\t// element might be a child of an element which has dt-row and dt-column\n\t\t// data attributes\n\t\thost = $(s).closest('*[data-dt-row]');\n\t\treturn host.length ?\n\t\t\t[ {\n\t\t\t\trow: host.data('dt-row'),\n\t\t\t\tcolumn: host.data('dt-column')\n\t\t\t} ] :\n\t\t\t[];\n\t};\n\n\treturn _selector_run( 'cell', selector, run, settings, opts );\n};\n\n\n\n\n_api_register( 'cells()', function ( rowSelector, columnSelector, opts ) {\n\t// Argument shifting\n\tif ( $.isPlainObject( rowSelector ) ) {\n\t\t// Indexes\n\t\tif ( rowSelector.row === undefined ) {\n\t\t\t// Selector options in first parameter\n\t\t\topts = rowSelector;\n\t\t\trowSelector = null;\n\t\t}\n\t\telse {\n\t\t\t// Cell index objects in first parameter\n\t\t\topts = columnSelector;\n\t\t\tcolumnSelector = null;\n\t\t}\n\t}\n\tif ( $.isPlainObject( columnSelector ) ) {\n\t\topts = columnSelector;\n\t\tcolumnSelector = null;\n\t}\n\n\t// Cell selector\n\tif ( columnSelector === null || columnSelector === undefined ) {\n\t\treturn this.iterator( 'table', function ( settings ) {\n\t\t\treturn __cell_selector( settings, rowSelector, _selector_opts( opts ) );\n\t\t} );\n\t}\n\n\t// The default built in options need to apply to row and columns\n\tvar internalOpts = opts ? {\n\t\tpage: opts.page,\n\t\torder: opts.order,\n\t\tsearch: opts.search\n\t} : {};\n\n\t// Row + column selector\n\tvar columns = this.columns( columnSelector, internalOpts );\n\tvar rows = this.rows( rowSelector, internalOpts );\n\tvar i, ien, j, jen;\n\n\tvar cellsNoOpts = this.iterator( 'table', function ( settings, idx ) {\n\t\tvar a = [];\n\n\t\tfor ( i=0, ien=rows[idx].length ; i<ien ; i++ ) {\n\t\t\tfor ( j=0, jen=columns[idx].length ; j<jen ; j++ ) {\n\t\t\t\ta.push( {\n\t\t\t\t\trow:    rows[idx][i],\n\t\t\t\t\tcolumn: columns[idx][j]\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\n\t\treturn a;\n\t}, 1 );\n\n\t// There is currently only one extension which uses a cell selector extension\n\t// It is a _major_ performance drag to run this if it isn't needed, so this is\n\t// an extension specific check at the moment\n\tvar cells = opts && opts.selected ?\n\t\tthis.cells( cellsNoOpts, opts ) :\n\t\tcellsNoOpts;\n\n\t$.extend( cells.selector, {\n\t\tcols: columnSelector,\n\t\trows: rowSelector,\n\t\topts: opts\n\t} );\n\n\treturn cells;\n} );\n\n\n_api_registerPlural( 'cells().nodes()', 'cell().node()', function () {\n\treturn this.iterator( 'cell', function ( settings, row, column ) {\n\t\tvar data = settings.aoData[ row ];\n\n\t\treturn data && data.anCells ?\n\t\t\tdata.anCells[ column ] :\n\t\t\tundefined;\n\t}, 1 );\n} );\n\n\n_api_register( 'cells().data()', function () {\n\treturn this.iterator( 'cell', function ( settings, row, column ) {\n\t\treturn _fnGetCellData( settings, row, column );\n\t}, 1 );\n} );\n\n\n_api_registerPlural( 'cells().cache()', 'cell().cache()', function ( type ) {\n\ttype = type === 'search' ? '_aFilterData' : '_aSortData';\n\n\treturn this.iterator( 'cell', function ( settings, row, column ) {\n\t\treturn settings.aoData[ row ][ type ][ column ];\n\t}, 1 );\n} );\n\n\n_api_registerPlural( 'cells().render()', 'cell().render()', function ( type ) {\n\treturn this.iterator( 'cell', function ( settings, row, column ) {\n\t\treturn _fnGetCellData( settings, row, column, type );\n\t}, 1 );\n} );\n\n\n_api_registerPlural( 'cells().indexes()', 'cell().index()', function () {\n\treturn this.iterator( 'cell', function ( settings, row, column ) {\n\t\treturn {\n\t\t\trow: row,\n\t\t\tcolumn: column,\n\t\t\tcolumnVisible: _fnColumnIndexToVisible( settings, column )\n\t\t};\n\t}, 1 );\n} );\n\n\n_api_registerPlural( 'cells().invalidate()', 'cell().invalidate()', function ( src ) {\n\treturn this.iterator( 'cell', function ( settings, row, column ) {\n\t\t_fnInvalidate( settings, row, src, column );\n\t} );\n} );\n\n\n\n_api_register( 'cell()', function ( rowSelector, columnSelector, opts ) {\n\treturn _selector_first( this.cells( rowSelector, columnSelector, opts ) );\n} );\n\n\n_api_register( 'cell().data()', function ( data ) {\n\tvar ctx = this.context;\n\tvar cell = this[0];\n\n\tif ( data === undefined ) {\n\t\t// Get\n\t\treturn ctx.length && cell.length ?\n\t\t\t_fnGetCellData( ctx[0], cell[0].row, cell[0].column ) :\n\t\t\tundefined;\n\t}\n\n\t// Set\n\t_fnSetCellData( ctx[0], cell[0].row, cell[0].column, data );\n\t_fnInvalidate( ctx[0], cell[0].row, 'data', cell[0].column );\n\n\treturn this;\n} );\n\n\n\n/**\n * Get current ordering (sorting) that has been applied to the table.\n *\n * @returns {array} 2D array containing the sorting information for the first\n *   table in the current context. Each element in the parent array represents\n *   a column being sorted upon (i.e. multi-sorting with two columns would have\n *   2 inner arrays). The inner arrays may have 2 or 3 elements. The first is\n *   the column index that the sorting condition applies to, the second is the\n *   direction of the sort (`desc` or `asc`) and, optionally, the third is the\n *   index of the sorting order from the `column.sorting` initialisation array.\n *//**\n * Set the ordering for the table.\n *\n * @param {integer} order Column index to sort upon.\n * @param {string} direction Direction of the sort to be applied (`asc` or `desc`)\n * @returns {DataTables.Api} this\n *//**\n * Set the ordering for the table.\n *\n * @param {array} order 1D array of sorting information to be applied.\n * @param {array} [...] Optional additional sorting conditions\n * @returns {DataTables.Api} this\n *//**\n * Set the ordering for the table.\n *\n * @param {array} order 2D array of sorting information to be applied.\n * @returns {DataTables.Api} this\n */\n_api_register( 'order()', function ( order, dir ) {\n\tvar ctx = this.context;\n\n\tif ( order === undefined ) {\n\t\t// get\n\t\treturn ctx.length !== 0 ?\n\t\t\tctx[0].aaSorting :\n\t\t\tundefined;\n\t}\n\n\t// set\n\tif ( typeof order === 'number' ) {\n\t\t// Simple column / direction passed in\n\t\torder = [ [ order, dir ] ];\n\t}\n\telse if ( order.length && ! Array.isArray( order[0] ) ) {\n\t\t// Arguments passed in (list of 1D arrays)\n\t\torder = Array.prototype.slice.call( arguments );\n\t}\n\t// otherwise a 2D array was passed in\n\n\treturn this.iterator( 'table', function ( settings ) {\n\t\tsettings.aaSorting = order.slice();\n\t} );\n} );\n\n\n/**\n * Attach a sort listener to an element for a given column\n *\n * @param {node|jQuery|string} node Identifier for the element(s) to attach the\n *   listener to. This can take the form of a single DOM node, a jQuery\n *   collection of nodes or a jQuery selector which will identify the node(s).\n * @param {integer} column the column that a click on this node will sort on\n * @param {function} [callback] callback function when sort is run\n * @returns {DataTables.Api} this\n */\n_api_register( 'order.listener()', function ( node, column, callback ) {\n\treturn this.iterator( 'table', function ( settings ) {\n\t\t_fnSortAttachListener( settings, node, column, callback );\n\t} );\n} );\n\n\n_api_register( 'order.fixed()', function ( set ) {\n\tif ( ! set ) {\n\t\tvar ctx = this.context;\n\t\tvar fixed = ctx.length ?\n\t\t\tctx[0].aaSortingFixed :\n\t\t\tundefined;\n\n\t\treturn Array.isArray( fixed ) ?\n\t\t\t{ pre: fixed } :\n\t\t\tfixed;\n\t}\n\n\treturn this.iterator( 'table', function ( settings ) {\n\t\tsettings.aaSortingFixed = $.extend( true, {}, set );\n\t} );\n} );\n\n\n// Order by the selected column(s)\n_api_register( [\n\t'columns().order()',\n\t'column().order()'\n], function ( dir ) {\n\tvar that = this;\n\n\treturn this.iterator( 'table', function ( settings, i ) {\n\t\tvar sort = [];\n\n\t\t$.each( that[i], function (j, col) {\n\t\t\tsort.push( [ col, dir ] );\n\t\t} );\n\n\t\tsettings.aaSorting = sort;\n\t} );\n} );\n\n\n\n_api_register( 'search()', function ( input, regex, smart, caseInsen ) {\n\tvar ctx = this.context;\n\n\tif ( input === undefined ) {\n\t\t// get\n\t\treturn ctx.length !== 0 ?\n\t\t\tctx[0].oPreviousSearch.sSearch :\n\t\t\tundefined;\n\t}\n\n\t// set\n\treturn this.iterator( 'table', function ( settings ) {\n\t\tif ( ! settings.oFeatures.bFilter ) {\n\t\t\treturn;\n\t\t}\n\n\t\t_fnFilterComplete( settings, $.extend( {}, settings.oPreviousSearch, {\n\t\t\t\"sSearch\": input+\"\",\n\t\t\t\"bRegex\":  regex === null ? false : regex,\n\t\t\t\"bSmart\":  smart === null ? true  : smart,\n\t\t\t\"bCaseInsensitive\": caseInsen === null ? true : caseInsen\n\t\t} ), 1 );\n\t} );\n} );\n\n\n_api_registerPlural(\n\t'columns().search()',\n\t'column().search()',\n\tfunction ( input, regex, smart, caseInsen ) {\n\t\treturn this.iterator( 'column', function ( settings, column ) {\n\t\t\tvar preSearch = settings.aoPreSearchCols;\n\n\t\t\tif ( input === undefined ) {\n\t\t\t\t// get\n\t\t\t\treturn preSearch[ column ].sSearch;\n\t\t\t}\n\n\t\t\t// set\n\t\t\tif ( ! settings.oFeatures.bFilter ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t$.extend( preSearch[ column ], {\n\t\t\t\t\"sSearch\": input+\"\",\n\t\t\t\t\"bRegex\":  regex === null ? false : regex,\n\t\t\t\t\"bSmart\":  smart === null ? true  : smart,\n\t\t\t\t\"bCaseInsensitive\": caseInsen === null ? true : caseInsen\n\t\t\t} );\n\n\t\t\t_fnFilterComplete( settings, settings.oPreviousSearch, 1 );\n\t\t} );\n\t}\n);\n\n/*\n * State API methods\n */\n\n_api_register( 'state()', function () {\n\treturn this.context.length ?\n\t\tthis.context[0].oSavedState :\n\t\tnull;\n} );\n\n\n_api_register( 'state.clear()', function () {\n\treturn this.iterator( 'table', function ( settings ) {\n\t\t// Save an empty object\n\t\tsettings.fnStateSaveCallback.call( settings.oInstance, settings, {} );\n\t} );\n} );\n\n\n_api_register( 'state.loaded()', function () {\n\treturn this.context.length ?\n\t\tthis.context[0].oLoadedState :\n\t\tnull;\n} );\n\n\n_api_register( 'state.save()', function () {\n\treturn this.iterator( 'table', function ( settings ) {\n\t\t_fnSaveState( settings );\n\t} );\n} );\n\n\n\n/**\n * Set the jQuery or window object to be used by DataTables\n *\n * @param {*} module Library / container object\n * @param {string} [type] Library or container type `lib`, `win` or `datetime`.\n *   If not provided, automatic detection is attempted.\n */\nDataTable.use = function (module, type) {\n\tif (type === 'lib' || module.fn) {\n\t\t$ = module;\n\t}\n\telse if (type == 'win' || module.document) {\n\t\twindow = module;\n\t\tdocument = module.document;\n\t}\n\telse if (type === 'datetime' || module.type === 'DateTime') {\n\t\tDataTable.DateTime = module;\n\t}\n}\n\n/**\n * CommonJS factory function pass through. This will check if the arguments\n * given are a window object or a jQuery object. If so they are set\n * accordingly.\n * @param {*} root Window\n * @param {*} jq jQUery\n * @returns {boolean} Indicator\n */\nDataTable.factory = function (root, jq) {\n\tvar is = false;\n\n\t// Test if the first parameter is a window object\n\tif (root && root.document) {\n\t\twindow = root;\n\t\tdocument = root.document;\n\t}\n\n\t// Test if the second parameter is a jQuery object\n\tif (jq && jq.fn && jq.fn.jquery) {\n\t\t$ = jq;\n\t\tis = true;\n\t}\n\n\treturn is;\n}\n\n/**\n * Provide a common method for plug-ins to check the version of DataTables being\n * used, in order to ensure compatibility.\n *\n *  @param {string} version Version string to check for, in the format \"X.Y.Z\".\n *    Note that the formats \"X\" and \"X.Y\" are also acceptable.\n *  @returns {boolean} true if this version of DataTables is greater or equal to\n *    the required version, or false if this version of DataTales is not\n *    suitable\n *  @static\n *  @dtopt API-Static\n *\n *  @example\n *    alert( $.fn.dataTable.versionCheck( '1.9.0' ) );\n */\nDataTable.versionCheck = DataTable.fnVersionCheck = function( version )\n{\n\tvar aThis = DataTable.version.split('.');\n\tvar aThat = version.split('.');\n\tvar iThis, iThat;\n\n\tfor ( var i=0, iLen=aThat.length ; i<iLen ; i++ ) {\n\t\tiThis = parseInt( aThis[i], 10 ) || 0;\n\t\tiThat = parseInt( aThat[i], 10 ) || 0;\n\n\t\t// Parts are the same, keep comparing\n\t\tif (iThis === iThat) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Parts are different, return immediately\n\t\treturn iThis > iThat;\n\t}\n\n\treturn true;\n};\n\n\n/**\n * Check if a `<table>` node is a DataTable table already or not.\n *\n *  @param {node|jquery|string} table Table node, jQuery object or jQuery\n *      selector for the table to test. Note that if more than more than one\n *      table is passed on, only the first will be checked\n *  @returns {boolean} true the table given is a DataTable, or false otherwise\n *  @static\n *  @dtopt API-Static\n *\n *  @example\n *    if ( ! $.fn.DataTable.isDataTable( '#example' ) ) {\n *      $('#example').dataTable();\n *    }\n */\nDataTable.isDataTable = DataTable.fnIsDataTable = function ( table )\n{\n\tvar t = $(table).get(0);\n\tvar is = false;\n\n\tif ( table instanceof DataTable.Api ) {\n\t\treturn true;\n\t}\n\n\t$.each( DataTable.settings, function (i, o) {\n\t\tvar head = o.nScrollHead ? $('table', o.nScrollHead)[0] : null;\n\t\tvar foot = o.nScrollFoot ? $('table', o.nScrollFoot)[0] : null;\n\n\t\tif ( o.nTable === t || head === t || foot === t ) {\n\t\t\tis = true;\n\t\t}\n\t} );\n\n\treturn is;\n};\n\n\n/**\n * Get all DataTable tables that have been initialised - optionally you can\n * select to get only currently visible tables.\n *\n *  @param {boolean} [visible=false] Flag to indicate if you want all (default)\n *    or visible tables only.\n *  @returns {array} Array of `table` nodes (not DataTable instances) which are\n *    DataTables\n *  @static\n *  @dtopt API-Static\n *\n *  @example\n *    $.each( $.fn.dataTable.tables(true), function () {\n *      $(table).DataTable().columns.adjust();\n *    } );\n */\nDataTable.tables = DataTable.fnTables = function ( visible )\n{\n\tvar api = false;\n\n\tif ( $.isPlainObject( visible ) ) {\n\t\tapi = visible.api;\n\t\tvisible = visible.visible;\n\t}\n\n\tvar a = $.map( DataTable.settings, function (o) {\n\t\tif ( !visible || (visible && $(o.nTable).is(':visible')) ) {\n\t\t\treturn o.nTable;\n\t\t}\n\t} );\n\n\treturn api ?\n\t\tnew _Api( a ) :\n\t\ta;\n};\n\n\n/**\n * Convert from camel case parameters to Hungarian notation. This is made public\n * for the extensions to provide the same ability as DataTables core to accept\n * either the 1.9 style Hungarian notation, or the 1.10+ style camelCase\n * parameters.\n *\n *  @param {object} src The model object which holds all parameters that can be\n *    mapped.\n *  @param {object} user The object to convert from camel case to Hungarian.\n *  @param {boolean} force When set to `true`, properties which already have a\n *    Hungarian value in the `user` object will be overwritten. Otherwise they\n *    won't be.\n */\nDataTable.camelToHungarian = _fnCamelToHungarian;\n\n\n\n/**\n *\n */\n_api_register( '$()', function ( selector, opts ) {\n\tvar\n\t\trows   = this.rows( opts ).nodes(), // Get all rows\n\t\tjqRows = $(rows);\n\n\treturn $( [].concat(\n\t\tjqRows.filter( selector ).toArray(),\n\t\tjqRows.find( selector ).toArray()\n\t) );\n} );\n\n\n// jQuery functions to operate on the tables\n$.each( [ 'on', 'one', 'off' ], function (i, key) {\n\t_api_register( key+'()', function ( /* event, handler */ ) {\n\t\tvar args = Array.prototype.slice.call(arguments);\n\n\t\t// Add the `dt` namespace automatically if it isn't already present\n\t\targs[0] = $.map( args[0].split( /\\s/ ), function ( e ) {\n\t\t\treturn ! e.match(/\\.dt\\b/) ?\n\t\t\t\te+'.dt' :\n\t\t\t\te;\n\t\t\t} ).join( ' ' );\n\n\t\tvar inst = $( this.tables().nodes() );\n\t\tinst[key].apply( inst, args );\n\t\treturn this;\n\t} );\n} );\n\n\n_api_register( 'clear()', function () {\n\treturn this.iterator( 'table', function ( settings ) {\n\t\t_fnClearTable( settings );\n\t} );\n} );\n\n\n_api_register( 'settings()', function () {\n\treturn new _Api( this.context, this.context );\n} );\n\n\n_api_register( 'init()', function () {\n\tvar ctx = this.context;\n\treturn ctx.length ? ctx[0].oInit : null;\n} );\n\n\n_api_register( 'data()', function () {\n\treturn this.iterator( 'table', function ( settings ) {\n\t\treturn _pluck( settings.aoData, '_aData' );\n\t} ).flatten();\n} );\n\n\n_api_register( 'destroy()', function ( remove ) {\n\tremove = remove || false;\n\n\treturn this.iterator( 'table', function ( settings ) {\n\t\tvar classes   = settings.oClasses;\n\t\tvar table     = settings.nTable;\n\t\tvar tbody     = settings.nTBody;\n\t\tvar thead     = settings.nTHead;\n\t\tvar tfoot     = settings.nTFoot;\n\t\tvar jqTable   = $(table);\n\t\tvar jqTbody   = $(tbody);\n\t\tvar jqWrapper = $(settings.nTableWrapper);\n\t\tvar rows      = $.map( settings.aoData, function (r) { return r.nTr; } );\n\t\tvar i, ien;\n\n\t\t// Flag to note that the table is currently being destroyed - no action\n\t\t// should be taken\n\t\tsettings.bDestroying = true;\n\n\t\t// Fire off the destroy callbacks for plug-ins etc\n\t\t_fnCallbackFire( settings, \"aoDestroyCallback\", \"destroy\", [settings] );\n\n\t\t// If not being removed from the document, make all columns visible\n\t\tif ( ! remove ) {\n\t\t\tnew _Api( settings ).columns().visible( true );\n\t\t}\n\n\t\t// Blitz all `DT` namespaced events (these are internal events, the\n\t\t// lowercase, `dt` events are user subscribed and they are responsible\n\t\t// for removing them\n\t\tjqWrapper.off('.DT').find(':not(tbody *)').off('.DT');\n\t\t$(window).off('.DT-'+settings.sInstance);\n\n\t\t// When scrolling we had to break the table up - restore it\n\t\tif ( table != thead.parentNode ) {\n\t\t\tjqTable.children('thead').detach();\n\t\t\tjqTable.append( thead );\n\t\t}\n\n\t\tif ( tfoot && table != tfoot.parentNode ) {\n\t\t\tjqTable.children('tfoot').detach();\n\t\t\tjqTable.append( tfoot );\n\t\t}\n\n\t\tsettings.aaSorting = [];\n\t\tsettings.aaSortingFixed = [];\n\t\t_fnSortingClasses( settings );\n\n\t\t$( rows ).removeClass( settings.asStripeClasses.join(' ') );\n\n\t\t$('th, td', thead).removeClass( classes.sSortable+' '+\n\t\t\tclasses.sSortableAsc+' '+classes.sSortableDesc+' '+classes.sSortableNone\n\t\t);\n\n\t\t// Add the TR elements back into the table in their original order\n\t\tjqTbody.children().detach();\n\t\tjqTbody.append( rows );\n\n\t\tvar orig = settings.nTableWrapper.parentNode;\n\n\t\t// Remove the DataTables generated nodes, events and classes\n\t\tvar removedMethod = remove ? 'remove' : 'detach';\n\t\tjqTable[ removedMethod ]();\n\t\tjqWrapper[ removedMethod ]();\n\n\t\t// If we need to reattach the table to the document\n\t\tif ( ! remove && orig ) {\n\t\t\t// insertBefore acts like appendChild if !arg[1]\n\t\t\torig.insertBefore( table, settings.nTableReinsertBefore );\n\n\t\t\t// Restore the width of the original table - was read from the style property,\n\t\t\t// so we can restore directly to that\n\t\t\tjqTable\n\t\t\t\t.css( 'width', settings.sDestroyWidth )\n\t\t\t\t.removeClass( classes.sTable );\n\n\t\t\t// If the were originally stripe classes - then we add them back here.\n\t\t\t// Note this is not fool proof (for example if not all rows had stripe\n\t\t\t// classes - but it's a good effort without getting carried away\n\t\t\tien = settings.asDestroyStripes.length;\n\n\t\t\tif ( ien ) {\n\t\t\t\tjqTbody.children().each( function (i) {\n\t\t\t\t\t$(this).addClass( settings.asDestroyStripes[i % ien] );\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\n\t\t/* Remove the settings object from the settings array */\n\t\tvar idx = $.inArray( settings, DataTable.settings );\n\t\tif ( idx !== -1 ) {\n\t\t\tDataTable.settings.splice( idx, 1 );\n\t\t}\n\t} );\n} );\n\n\n// Add the `every()` method for rows, columns and cells in a compact form\n$.each( [ 'column', 'row', 'cell' ], function ( i, type ) {\n\t_api_register( type+'s().every()', function ( fn ) {\n\t\tvar opts = this.selector.opts;\n\t\tvar api = this;\n\n\t\treturn this.iterator( type, function ( settings, arg1, arg2, arg3, arg4 ) {\n\t\t\t// Rows and columns:\n\t\t\t//  arg1 - index\n\t\t\t//  arg2 - table counter\n\t\t\t//  arg3 - loop counter\n\t\t\t//  arg4 - undefined\n\t\t\t// Cells:\n\t\t\t//  arg1 - row index\n\t\t\t//  arg2 - column index\n\t\t\t//  arg3 - table counter\n\t\t\t//  arg4 - loop counter\n\t\t\tfn.call(\n\t\t\t\tapi[ type ](\n\t\t\t\t\targ1,\n\t\t\t\t\ttype==='cell' ? arg2 : opts,\n\t\t\t\t\ttype==='cell' ? opts : undefined\n\t\t\t\t),\n\t\t\t\targ1, arg2, arg3, arg4\n\t\t\t);\n\t\t} );\n\t} );\n} );\n\n\n// i18n method for extensions to be able to use the language object from the\n// DataTable\n_api_register( 'i18n()', function ( token, def, plural ) {\n\tvar ctx = this.context[0];\n\tvar resolved = _fnGetObjectDataFn( token )( ctx.oLanguage );\n\n\tif ( resolved === undefined ) {\n\t\tresolved = def;\n\t}\n\n\tif ( plural !== undefined && $.isPlainObject( resolved ) ) {\n\t\tresolved = resolved[ plural ] !== undefined ?\n\t\t\tresolved[ plural ] :\n\t\t\tresolved._;\n\t}\n\n\treturn typeof resolved === 'string'\n\t\t? resolved.replace( '%d', plural ) // nb: plural might be undefined,\n\t\t: resolved;\n} );\n/**\n * Version string for plug-ins to check compatibility. Allowed format is\n * `a.b.c-d` where: a:int, b:int, c:int, d:string(dev|beta|alpha). `d` is used\n * only for non-release builds. See http://semver.org/ for more information.\n *  @member\n *  @type string\n *  @default Version number\n */\nDataTable.version = \"1.13.5\";\n\n/**\n * Private data store, containing all of the settings objects that are\n * created for the tables on a given page.\n *\n * Note that the `DataTable.settings` object is aliased to\n * `jQuery.fn.dataTableExt` through which it may be accessed and\n * manipulated, or `jQuery.fn.dataTable.settings`.\n *  @member\n *  @type array\n *  @default []\n *  @private\n */\nDataTable.settings = [];\n\n/**\n * Object models container, for the various models that DataTables has\n * available to it. These models define the objects that are used to hold\n * the active state and configuration of the table.\n *  @namespace\n */\nDataTable.models = {};\n\n\n\n/**\n * Template object for the way in which DataTables holds information about\n * search information for the global filter and individual column filters.\n *  @namespace\n */\nDataTable.models.oSearch = {\n\t/**\n\t * Flag to indicate if the filtering should be case insensitive or not\n\t *  @type boolean\n\t *  @default true\n\t */\n\t\"bCaseInsensitive\": true,\n\n\t/**\n\t * Applied search term\n\t *  @type string\n\t *  @default <i>Empty string</i>\n\t */\n\t\"sSearch\": \"\",\n\n\t/**\n\t * Flag to indicate if the search term should be interpreted as a\n\t * regular expression (true) or not (false) and therefore and special\n\t * regex characters escaped.\n\t *  @type boolean\n\t *  @default false\n\t */\n\t\"bRegex\": false,\n\n\t/**\n\t * Flag to indicate if DataTables is to use its smart filtering or not.\n\t *  @type boolean\n\t *  @default true\n\t */\n\t\"bSmart\": true,\n\n\t/**\n\t * Flag to indicate if DataTables should only trigger a search when\n\t * the return key is pressed.\n\t *  @type boolean\n\t *  @default false\n\t */\n\t\"return\": false\n};\n\n\n\n\n/**\n * Template object for the way in which DataTables holds information about\n * each individual row. This is the object format used for the settings\n * aoData array.\n *  @namespace\n */\nDataTable.models.oRow = {\n\t/**\n\t * TR element for the row\n\t *  @type node\n\t *  @default null\n\t */\n\t\"nTr\": null,\n\n\t/**\n\t * Array of TD elements for each row. This is null until the row has been\n\t * created.\n\t *  @type array nodes\n\t *  @default []\n\t */\n\t\"anCells\": null,\n\n\t/**\n\t * Data object from the original data source for the row. This is either\n\t * an array if using the traditional form of DataTables, or an object if\n\t * using mData options. The exact type will depend on the passed in\n\t * data from the data source, or will be an array if using DOM a data\n\t * source.\n\t *  @type array|object\n\t *  @default []\n\t */\n\t\"_aData\": [],\n\n\t/**\n\t * Sorting data cache - this array is ostensibly the same length as the\n\t * number of columns (although each index is generated only as it is\n\t * needed), and holds the data that is used for sorting each column in the\n\t * row. We do this cache generation at the start of the sort in order that\n\t * the formatting of the sort data need be done only once for each cell\n\t * per sort. This array should not be read from or written to by anything\n\t * other than the master sorting methods.\n\t *  @type array\n\t *  @default null\n\t *  @private\n\t */\n\t\"_aSortData\": null,\n\n\t/**\n\t * Per cell filtering data cache. As per the sort data cache, used to\n\t * increase the performance of the filtering in DataTables\n\t *  @type array\n\t *  @default null\n\t *  @private\n\t */\n\t\"_aFilterData\": null,\n\n\t/**\n\t * Filtering data cache. This is the same as the cell filtering cache, but\n\t * in this case a string rather than an array. This is easily computed with\n\t * a join on `_aFilterData`, but is provided as a cache so the join isn't\n\t * needed on every search (memory traded for performance)\n\t *  @type array\n\t *  @default null\n\t *  @private\n\t */\n\t\"_sFilterRow\": null,\n\n\t/**\n\t * Cache of the class name that DataTables has applied to the row, so we\n\t * can quickly look at this variable rather than needing to do a DOM check\n\t * on className for the nTr property.\n\t *  @type string\n\t *  @default <i>Empty string</i>\n\t *  @private\n\t */\n\t\"_sRowStripe\": \"\",\n\n\t/**\n\t * Denote if the original data source was from the DOM, or the data source\n\t * object. This is used for invalidating data, so DataTables can\n\t * automatically read data from the original source, unless uninstructed\n\t * otherwise.\n\t *  @type string\n\t *  @default null\n\t *  @private\n\t */\n\t\"src\": null,\n\n\t/**\n\t * Index in the aoData array. This saves an indexOf lookup when we have the\n\t * object, but want to know the index\n\t *  @type integer\n\t *  @default -1\n\t *  @private\n\t */\n\t\"idx\": -1\n};\n\n\n/**\n * Template object for the column information object in DataTables. This object\n * is held in the settings aoColumns array and contains all the information that\n * DataTables needs about each individual column.\n *\n * Note that this object is related to {@link DataTable.defaults.column}\n * but this one is the internal data store for DataTables's cache of columns.\n * It should NOT be manipulated outside of DataTables. Any configuration should\n * be done through the initialisation options.\n *  @namespace\n */\nDataTable.models.oColumn = {\n\t/**\n\t * Column index. This could be worked out on-the-fly with $.inArray, but it\n\t * is faster to just hold it as a variable\n\t *  @type integer\n\t *  @default null\n\t */\n\t\"idx\": null,\n\n\t/**\n\t * A list of the columns that sorting should occur on when this column\n\t * is sorted. That this property is an array allows multi-column sorting\n\t * to be defined for a column (for example first name / last name columns\n\t * would benefit from this). The values are integers pointing to the\n\t * columns to be sorted on (typically it will be a single integer pointing\n\t * at itself, but that doesn't need to be the case).\n\t *  @type array\n\t */\n\t\"aDataSort\": null,\n\n\t/**\n\t * Define the sorting directions that are applied to the column, in sequence\n\t * as the column is repeatedly sorted upon - i.e. the first value is used\n\t * as the sorting direction when the column if first sorted (clicked on).\n\t * Sort it again (click again) and it will move on to the next index.\n\t * Repeat until loop.\n\t *  @type array\n\t */\n\t\"asSorting\": null,\n\n\t/**\n\t * Flag to indicate if the column is searchable, and thus should be included\n\t * in the filtering or not.\n\t *  @type boolean\n\t */\n\t\"bSearchable\": null,\n\n\t/**\n\t * Flag to indicate if the column is sortable or not.\n\t *  @type boolean\n\t */\n\t\"bSortable\": null,\n\n\t/**\n\t * Flag to indicate if the column is currently visible in the table or not\n\t *  @type boolean\n\t */\n\t\"bVisible\": null,\n\n\t/**\n\t * Store for manual type assignment using the `column.type` option. This\n\t * is held in store so we can manipulate the column's `sType` property.\n\t *  @type string\n\t *  @default null\n\t *  @private\n\t */\n\t\"_sManualType\": null,\n\n\t/**\n\t * Flag to indicate if HTML5 data attributes should be used as the data\n\t * source for filtering or sorting. True is either are.\n\t *  @type boolean\n\t *  @default false\n\t *  @private\n\t */\n\t\"_bAttrSrc\": false,\n\n\t/**\n\t * Developer definable function that is called whenever a cell is created (Ajax source,\n\t * etc) or processed for input (DOM source). This can be used as a compliment to mRender\n\t * allowing you to modify the DOM element (add background colour for example) when the\n\t * element is available.\n\t *  @type function\n\t *  @param {element} nTd The TD node that has been created\n\t *  @param {*} sData The Data for the cell\n\t *  @param {array|object} oData The data for the whole row\n\t *  @param {int} iRow The row index for the aoData data store\n\t *  @default null\n\t */\n\t\"fnCreatedCell\": null,\n\n\t/**\n\t * Function to get data from a cell in a column. You should <b>never</b>\n\t * access data directly through _aData internally in DataTables - always use\n\t * the method attached to this property. It allows mData to function as\n\t * required. This function is automatically assigned by the column\n\t * initialisation method\n\t *  @type function\n\t *  @param {array|object} oData The data array/object for the array\n\t *    (i.e. aoData[]._aData)\n\t *  @param {string} sSpecific The specific data type you want to get -\n\t *    'display', 'type' 'filter' 'sort'\n\t *  @returns {*} The data for the cell from the given row's data\n\t *  @default null\n\t */\n\t\"fnGetData\": null,\n\n\t/**\n\t * Function to set data for a cell in the column. You should <b>never</b>\n\t * set the data directly to _aData internally in DataTables - always use\n\t * this method. It allows mData to function as required. This function\n\t * is automatically assigned by the column initialisation method\n\t *  @type function\n\t *  @param {array|object} oData The data array/object for the array\n\t *    (i.e. aoData[]._aData)\n\t *  @param {*} sValue Value to set\n\t *  @default null\n\t */\n\t\"fnSetData\": null,\n\n\t/**\n\t * Property to read the value for the cells in the column from the data\n\t * source array / object. If null, then the default content is used, if a\n\t * function is given then the return from the function is used.\n\t *  @type function|int|string|null\n\t *  @default null\n\t */\n\t\"mData\": null,\n\n\t/**\n\t * Partner property to mData which is used (only when defined) to get\n\t * the data - i.e. it is basically the same as mData, but without the\n\t * 'set' option, and also the data fed to it is the result from mData.\n\t * This is the rendering method to match the data method of mData.\n\t *  @type function|int|string|null\n\t *  @default null\n\t */\n\t\"mRender\": null,\n\n\t/**\n\t * Unique header TH/TD element for this column - this is what the sorting\n\t * listener is attached to (if sorting is enabled.)\n\t *  @type node\n\t *  @default null\n\t */\n\t\"nTh\": null,\n\n\t/**\n\t * Unique footer TH/TD element for this column (if there is one). Not used\n\t * in DataTables as such, but can be used for plug-ins to reference the\n\t * footer for each column.\n\t *  @type node\n\t *  @default null\n\t */\n\t\"nTf\": null,\n\n\t/**\n\t * The class to apply to all TD elements in the table's TBODY for the column\n\t *  @type string\n\t *  @default null\n\t */\n\t\"sClass\": null,\n\n\t/**\n\t * When DataTables calculates the column widths to assign to each column,\n\t * it finds the longest string in each column and then constructs a\n\t * temporary table and reads the widths from that. The problem with this\n\t * is that \"mmm\" is much wider then \"iiii\", but the latter is a longer\n\t * string - thus the calculation can go wrong (doing it properly and putting\n\t * it into an DOM object and measuring that is horribly(!) slow). Thus as\n\t * a \"work around\" we provide this option. It will append its value to the\n\t * text that is found to be the longest string for the column - i.e. padding.\n\t *  @type string\n\t */\n\t\"sContentPadding\": null,\n\n\t/**\n\t * Allows a default value to be given for a column's data, and will be used\n\t * whenever a null data source is encountered (this can be because mData\n\t * is set to null, or because the data source itself is null).\n\t *  @type string\n\t *  @default null\n\t */\n\t\"sDefaultContent\": null,\n\n\t/**\n\t * Name for the column, allowing reference to the column by name as well as\n\t * by index (needs a lookup to work by name).\n\t *  @type string\n\t */\n\t\"sName\": null,\n\n\t/**\n\t * Custom sorting data type - defines which of the available plug-ins in\n\t * afnSortData the custom sorting will use - if any is defined.\n\t *  @type string\n\t *  @default std\n\t */\n\t\"sSortDataType\": 'std',\n\n\t/**\n\t * Class to be applied to the header element when sorting on this column\n\t *  @type string\n\t *  @default null\n\t */\n\t\"sSortingClass\": null,\n\n\t/**\n\t * Class to be applied to the header element when sorting on this column -\n\t * when jQuery UI theming is used.\n\t *  @type string\n\t *  @default null\n\t */\n\t\"sSortingClassJUI\": null,\n\n\t/**\n\t * Title of the column - what is seen in the TH element (nTh).\n\t *  @type string\n\t */\n\t\"sTitle\": null,\n\n\t/**\n\t * Column sorting and filtering type\n\t *  @type string\n\t *  @default null\n\t */\n\t\"sType\": null,\n\n\t/**\n\t * Width of the column\n\t *  @type string\n\t *  @default null\n\t */\n\t\"sWidth\": null,\n\n\t/**\n\t * Width of the column when it was first \"encountered\"\n\t *  @type string\n\t *  @default null\n\t */\n\t\"sWidthOrig\": null\n};\n\n\n/*\n * Developer note: The properties of the object below are given in Hungarian\n * notation, that was used as the interface for DataTables prior to v1.10, however\n * from v1.10 onwards the primary interface is camel case. In order to avoid\n * breaking backwards compatibility utterly with this change, the Hungarian\n * version is still, internally the primary interface, but is is not documented\n * - hence the @name tags in each doc comment. This allows a Javascript function\n * to create a map from Hungarian notation to camel case (going the other direction\n * would require each property to be listed, which would add around 3K to the size\n * of DataTables, while this method is about a 0.5K hit).\n *\n * Ultimately this does pave the way for Hungarian notation to be dropped\n * completely, but that is a massive amount of work and will break current\n * installs (therefore is on-hold until v2).\n */\n\n/**\n * Initialisation options that can be given to DataTables at initialisation\n * time.\n *  @namespace\n */\nDataTable.defaults = {\n\t/**\n\t * An array of data to use for the table, passed in at initialisation which\n\t * will be used in preference to any data which is already in the DOM. This is\n\t * particularly useful for constructing tables purely in Javascript, for\n\t * example with a custom Ajax call.\n\t *  @type array\n\t *  @default null\n\t *\n\t *  @dtopt Option\n\t *  @name DataTable.defaults.data\n\t *\n\t *  @example\n\t *    // Using a 2D array data source\n\t *    $(document).ready( function () {\n\t *      $('#example').dataTable( {\n\t *        \"data\": [\n\t *          ['Trident', 'Internet Explorer 4.0', 'Win 95+', 4, 'X'],\n\t *          ['Trident', 'Internet Explorer 5.0', 'Win 95+', 5, 'C'],\n\t *        ],\n\t *        \"columns\": [\n\t *          { \"title\": \"Engine\" },\n\t *          { \"title\": \"Browser\" },\n\t *          { \"title\": \"Platform\" },\n\t *          { \"title\": \"Version\" },\n\t *          { \"title\": \"Grade\" }\n\t *        ]\n\t *      } );\n\t *    } );\n\t *\n\t *  @example\n\t *    // Using an array of objects as a data source (`data`)\n\t *    $(document).ready( function () {\n\t *      $('#example').dataTable( {\n\t *        \"data\": [\n\t *          {\n\t *            \"engine\":   \"Trident\",\n\t *            \"browser\":  \"Internet Explorer 4.0\",\n\t *            \"platform\": \"Win 95+\",\n\t *            \"version\":  4,\n\t *            \"grade\":    \"X\"\n\t *          },\n\t *          {\n\t *            \"engine\":   \"Trident\",\n\t *            \"browser\":  \"Internet Explorer 5.0\",\n\t *            \"platform\": \"Win 95+\",\n\t *            \"version\":  5,\n\t *            \"grade\":    \"C\"\n\t *          }\n\t *        ],\n\t *        \"columns\": [\n\t *          { \"title\": \"Engine\",   \"data\": \"engine\" },\n\t *          { \"title\": \"Browser\",  \"data\": \"browser\" },\n\t *          { \"title\": \"Platform\", \"data\": \"platform\" },\n\t *          { \"title\": \"Version\",  \"data\": \"version\" },\n\t *          { \"title\": \"Grade\",    \"data\": \"grade\" }\n\t *        ]\n\t *      } );\n\t *    } );\n\t */\n\t\"aaData\": null,\n\n\n\t/**\n\t * If ordering is enabled, then DataTables will perform a first pass sort on\n\t * initialisation. You can define which column(s) the sort is performed\n\t * upon, and the sorting direction, with this variable. The `sorting` array\n\t * should contain an array for each column to be sorted initially containing\n\t * the column's index and a direction string ('asc' or 'desc').\n\t *  @type array\n\t *  @default [[0,'asc']]\n\t *\n\t *  @dtopt Option\n\t *  @name DataTable.defaults.order\n\t *\n\t *  @example\n\t *    // Sort by 3rd column first, and then 4th column\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"order\": [[2,'asc'], [3,'desc']]\n\t *      } );\n\t *    } );\n\t *\n\t *    // No initial sorting\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"order\": []\n\t *      } );\n\t *    } );\n\t */\n\t\"aaSorting\": [[0,'asc']],\n\n\n\t/**\n\t * This parameter is basically identical to the `sorting` parameter, but\n\t * cannot be overridden by user interaction with the table. What this means\n\t * is that you could have a column (visible or hidden) which the sorting\n\t * will always be forced on first - any sorting after that (from the user)\n\t * will then be performed as required. This can be useful for grouping rows\n\t * together.\n\t *  @type array\n\t *  @default null\n\t *\n\t *  @dtopt Option\n\t *  @name DataTable.defaults.orderFixed\n\t *\n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"orderFixed\": [[0,'asc']]\n\t *      } );\n\t *    } )\n\t */\n\t\"aaSortingFixed\": [],\n\n\n\t/**\n\t * DataTables can be instructed to load data to display in the table from a\n\t * Ajax source. This option defines how that Ajax call is made and where to.\n\t *\n\t * The `ajax` property has three different modes of operation, depending on\n\t * how it is defined. These are:\n\t *\n\t * * `string` - Set the URL from where the data should be loaded from.\n\t * * `object` - Define properties for `jQuery.ajax`.\n\t * * `function` - Custom data get function\n\t *\n\t * `string`\n\t * --------\n\t *\n\t * As a string, the `ajax` property simply defines the URL from which\n\t * DataTables will load data.\n\t *\n\t * `object`\n\t * --------\n\t *\n\t * As an object, the parameters in the object are passed to\n\t * [jQuery.ajax](http://api.jquery.com/jQuery.ajax/) allowing fine control\n\t * of the Ajax request. DataTables has a number of default parameters which\n\t * you can override using this option. Please refer to the jQuery\n\t * documentation for a full description of the options available, although\n\t * the following parameters provide additional options in DataTables or\n\t * require special consideration:\n\t *\n\t * * `data` - As with jQuery, `data` can be provided as an object, but it\n\t *   can also be used as a function to manipulate the data DataTables sends\n\t *   to the server. The function takes a single parameter, an object of\n\t *   parameters with the values that DataTables has readied for sending. An\n\t *   object may be returned which will be merged into the DataTables\n\t *   defaults, or you can add the items to the object that was passed in and\n\t *   not return anything from the function. This supersedes `fnServerParams`\n\t *   from DataTables 1.9-.\n\t *\n\t * * `dataSrc` - By default DataTables will look for the property `data` (or\n\t *   `aaData` for compatibility with DataTables 1.9-) when obtaining data\n\t *   from an Ajax source or for server-side processing - this parameter\n\t *   allows that property to be changed. You can use Javascript dotted\n\t *   object notation to get a data source for multiple levels of nesting, or\n\t *   it my be used as a function. As a function it takes a single parameter,\n\t *   the JSON returned from the server, which can be manipulated as\n\t *   required, with the returned value being that used by DataTables as the\n\t *   data source for the table. This supersedes `sAjaxDataProp` from\n\t *   DataTables 1.9-.\n\t *\n\t * * `success` - Should not be overridden it is used internally in\n\t *   DataTables. To manipulate / transform the data returned by the server\n\t *   use `ajax.dataSrc`, or use `ajax` as a function (see below).\n\t *\n\t * `function`\n\t * ----------\n\t *\n\t * As a function, making the Ajax call is left up to yourself allowing\n\t * complete control of the Ajax request. Indeed, if desired, a method other\n\t * than Ajax could be used to obtain the required data, such as Web storage\n\t * or an AIR database.\n\t *\n\t * The function is given four parameters and no return is required. The\n\t * parameters are:\n\t *\n\t * 1. _object_ - Data to send to the server\n\t * 2. _function_ - Callback function that must be executed when the required\n\t *    data has been obtained. That data should be passed into the callback\n\t *    as the only parameter\n\t * 3. _object_ - DataTables settings object for the table\n\t *\n\t * Note that this supersedes `fnServerData` from DataTables 1.9-.\n\t *\n\t *  @type string|object|function\n\t *  @default null\n\t *\n\t *  @dtopt Option\n\t *  @name DataTable.defaults.ajax\n\t *  @since 1.10.0\n\t *\n\t * @example\n\t *   // Get JSON data from a file via Ajax.\n\t *   // Note DataTables expects data in the form `{ data: [ ...data... ] }` by default).\n\t *   $('#example').dataTable( {\n\t *     \"ajax\": \"data.json\"\n\t *   } );\n\t *\n\t * @example\n\t *   // Get JSON data from a file via Ajax, using `dataSrc` to change\n\t *   // `data` to `tableData` (i.e. `{ tableData: [ ...data... ] }`)\n\t *   $('#example').dataTable( {\n\t *     \"ajax\": {\n\t *       \"url\": \"data.json\",\n\t *       \"dataSrc\": \"tableData\"\n\t *     }\n\t *   } );\n\t *\n\t * @example\n\t *   // Get JSON data from a file via Ajax, using `dataSrc` to read data\n\t *   // from a plain array rather than an array in an object\n\t *   $('#example').dataTable( {\n\t *     \"ajax\": {\n\t *       \"url\": \"data.json\",\n\t *       \"dataSrc\": \"\"\n\t *     }\n\t *   } );\n\t *\n\t * @example\n\t *   // Manipulate the data returned from the server - add a link to data\n\t *   // (note this can, should, be done using `render` for the column - this\n\t *   // is just a simple example of how the data can be manipulated).\n\t *   $('#example').dataTable( {\n\t *     \"ajax\": {\n\t *       \"url\": \"data.json\",\n\t *       \"dataSrc\": function ( json ) {\n\t *         for ( var i=0, ien=json.length ; i<ien ; i++ ) {\n\t *           json[i][0] = '<a href=\"/message/'+json[i][0]+'>View message</a>';\n\t *         }\n\t *         return json;\n\t *       }\n\t *     }\n\t *   } );\n\t *\n\t * @example\n\t *   // Add data to the request\n\t *   $('#example').dataTable( {\n\t *     \"ajax\": {\n\t *       \"url\": \"data.json\",\n\t *       \"data\": function ( d ) {\n\t *         return {\n\t *           \"extra_search\": $('#extra').val()\n\t *         };\n\t *       }\n\t *     }\n\t *   } );\n\t *\n\t * @example\n\t *   // Send request as POST\n\t *   $('#example').dataTable( {\n\t *     \"ajax\": {\n\t *       \"url\": \"data.json\",\n\t *       \"type\": \"POST\"\n\t *     }\n\t *   } );\n\t *\n\t * @example\n\t *   // Get the data from localStorage (could interface with a form for\n\t *   // adding, editing and removing rows).\n\t *   $('#example').dataTable( {\n\t *     \"ajax\": function (data, callback, settings) {\n\t *       callback(\n\t *         JSON.parse( localStorage.getItem('dataTablesData') )\n\t *       );\n\t *     }\n\t *   } );\n\t */\n\t\"ajax\": null,\n\n\n\t/**\n\t * This parameter allows you to readily specify the entries in the length drop\n\t * down menu that DataTables shows when pagination is enabled. It can be\n\t * either a 1D array of options which will be used for both the displayed\n\t * option and the value, or a 2D array which will use the array in the first\n\t * position as the value, and the array in the second position as the\n\t * displayed options (useful for language strings such as 'All').\n\t *\n\t * Note that the `pageLength` property will be automatically set to the\n\t * first value given in this array, unless `pageLength` is also provided.\n\t *  @type array\n\t *  @default [ 10, 25, 50, 100 ]\n\t *\n\t *  @dtopt Option\n\t *  @name DataTable.defaults.lengthMenu\n\t *\n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"lengthMenu\": [[10, 25, 50, -1], [10, 25, 50, \"All\"]]\n\t *      } );\n\t *    } );\n\t */\n\t\"aLengthMenu\": [ 10, 25, 50, 100 ],\n\n\n\t/**\n\t * The `columns` option in the initialisation parameter allows you to define\n\t * details about the way individual columns behave. For a full list of\n\t * column options that can be set, please see\n\t * {@link DataTable.defaults.column}. Note that if you use `columns` to\n\t * define your columns, you must have an entry in the array for every single\n\t * column that you have in your table (these can be null if you don't which\n\t * to specify any options).\n\t *  @member\n\t *\n\t *  @name DataTable.defaults.column\n\t */\n\t\"aoColumns\": null,\n\n\t/**\n\t * Very similar to `columns`, `columnDefs` allows you to target a specific\n\t * column, multiple columns, or all columns, using the `targets` property of\n\t * each object in the array. This allows great flexibility when creating\n\t * tables, as the `columnDefs` arrays can be of any length, targeting the\n\t * columns you specifically want. `columnDefs` may use any of the column\n\t * options available: {@link DataTable.defaults.column}, but it _must_\n\t * have `targets` defined in each object in the array. Values in the `targets`\n\t * array may be:\n\t *   <ul>\n\t *     <li>a string - class name will be matched on the TH for the column</li>\n\t *     <li>0 or a positive integer - column index counting from the left</li>\n\t *     <li>a negative integer - column index counting from the right</li>\n\t *     <li>the string \"_all\" - all columns (i.e. assign a default)</li>\n\t *   </ul>\n\t *  @member\n\t *\n\t *  @name DataTable.defaults.columnDefs\n\t */\n\t\"aoColumnDefs\": null,\n\n\n\t/**\n\t * Basically the same as `search`, this parameter defines the individual column\n\t * filtering state at initialisation time. The array must be of the same size\n\t * as the number of columns, and each element be an object with the parameters\n\t * `search` and `escapeRegex` (the latter is optional). 'null' is also\n\t * accepted and the default will be used.\n\t *  @type array\n\t *  @default []\n\t *\n\t *  @dtopt Option\n\t *  @name DataTable.defaults.searchCols\n\t *\n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"searchCols\": [\n\t *          null,\n\t *          { \"search\": \"My filter\" },\n\t *          null,\n\t *          { \"search\": \"^[0-9]\", \"escapeRegex\": false }\n\t *        ]\n\t *      } );\n\t *    } )\n\t */\n\t\"aoSearchCols\": [],\n\n\n\t/**\n\t * An array of CSS classes that should be applied to displayed rows. This\n\t * array may be of any length, and DataTables will apply each class\n\t * sequentially, looping when required.\n\t *  @type array\n\t *  @default null <i>Will take the values determined by the `oClasses.stripe*`\n\t *    options</i>\n\t *\n\t *  @dtopt Option\n\t *  @name DataTable.defaults.stripeClasses\n\t *\n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"stripeClasses\": [ 'strip1', 'strip2', 'strip3' ]\n\t *      } );\n\t *    } )\n\t */\n\t\"asStripeClasses\": null,\n\n\n\t/**\n\t * Enable or disable automatic column width calculation. This can be disabled\n\t * as an optimisation (it takes some time to calculate the widths) if the\n\t * tables widths are passed in using `columns`.\n\t *  @type boolean\n\t *  @default true\n\t *\n\t *  @dtopt Features\n\t *  @name DataTable.defaults.autoWidth\n\t *\n\t *  @example\n\t *    $(document).ready( function () {\n\t *      $('#example').dataTable( {\n\t *        \"autoWidth\": false\n\t *      } );\n\t *    } );\n\t */\n\t\"bAutoWidth\": true,\n\n\n\t/**\n\t * Deferred rendering can provide DataTables with a huge speed boost when you\n\t * are using an Ajax or JS data source for the table. This option, when set to\n\t * true, will cause DataTables to defer the creation of the table elements for\n\t * each row until they are needed for a draw - saving a significant amount of\n\t * time.\n\t *  @type boolean\n\t *  @default false\n\t *\n\t *  @dtopt Features\n\t *  @name DataTable.defaults.deferRender\n\t *\n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"ajax\": \"sources/arrays.txt\",\n\t *        \"deferRender\": true\n\t *      } );\n\t *    } );\n\t */\n\t\"bDeferRender\": false,\n\n\n\t/**\n\t * Replace a DataTable which matches the given selector and replace it with\n\t * one which has the properties of the new initialisation object passed. If no\n\t * table matches the selector, then the new DataTable will be constructed as\n\t * per normal.\n\t *  @type boolean\n\t *  @default false\n\t *\n\t *  @dtopt Options\n\t *  @name DataTable.defaults.destroy\n\t *\n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"srollY\": \"200px\",\n\t *        \"paginate\": false\n\t *      } );\n\t *\n\t *      // Some time later....\n\t *      $('#example').dataTable( {\n\t *        \"filter\": false,\n\t *        \"destroy\": true\n\t *      } );\n\t *    } );\n\t */\n\t\"bDestroy\": false,\n\n\n\t/**\n\t * Enable or disable filtering of data. Filtering in DataTables is \"smart\" in\n\t * that it allows the end user to input multiple words (space separated) and\n\t * will match a row containing those words, even if not in the order that was\n\t * specified (this allow matching across multiple columns). Note that if you\n\t * wish to use filtering in DataTables this must remain 'true' - to remove the\n\t * default filtering input box and retain filtering abilities, please use\n\t * {@link DataTable.defaults.dom}.\n\t *  @type boolean\n\t *  @default true\n\t *\n\t *  @dtopt Features\n\t *  @name DataTable.defaults.searching\n\t *\n\t *  @example\n\t *    $(document).ready( function () {\n\t *      $('#example').dataTable( {\n\t *        \"searching\": false\n\t *      } );\n\t *    } );\n\t */\n\t\"bFilter\": true,\n\n\n\t/**\n\t * Enable or disable the table information display. This shows information\n\t * about the data that is currently visible on the page, including information\n\t * about filtered data if that action is being performed.\n\t *  @type boolean\n\t *  @default true\n\t *\n\t *  @dtopt Features\n\t *  @name DataTable.defaults.info\n\t *\n\t *  @example\n\t *    $(document).ready( function () {\n\t *      $('#example').dataTable( {\n\t *        \"info\": false\n\t *      } );\n\t *    } );\n\t */\n\t\"bInfo\": true,\n\n\n\t/**\n\t * Allows the end user to select the size of a formatted page from a select\n\t * menu (sizes are 10, 25, 50 and 100). Requires pagination (`paginate`).\n\t *  @type boolean\n\t *  @default true\n\t *\n\t *  @dtopt Features\n\t *  @name DataTable.defaults.lengthChange\n\t *\n\t *  @example\n\t *    $(document).ready( function () {\n\t *      $('#example').dataTable( {\n\t *        \"lengthChange\": false\n\t *      } );\n\t *    } );\n\t */\n\t\"bLengthChange\": true,\n\n\n\t/**\n\t * Enable or disable pagination.\n\t *  @type boolean\n\t *  @default true\n\t *\n\t *  @dtopt Features\n\t *  @name DataTable.defaults.paging\n\t *\n\t *  @example\n\t *    $(document).ready( function () {\n\t *      $('#example').dataTable( {\n\t *        \"paging\": false\n\t *      } );\n\t *    } );\n\t */\n\t\"bPaginate\": true,\n\n\n\t/**\n\t * Enable or disable the display of a 'processing' indicator when the table is\n\t * being processed (e.g. a sort). This is particularly useful for tables with\n\t * large amounts of data where it can take a noticeable amount of time to sort\n\t * the entries.\n\t *  @type boolean\n\t *  @default false\n\t *\n\t *  @dtopt Features\n\t *  @name DataTable.defaults.processing\n\t *\n\t *  @example\n\t *    $(document).ready( function () {\n\t *      $('#example').dataTable( {\n\t *        \"processing\": true\n\t *      } );\n\t *    } );\n\t */\n\t\"bProcessing\": false,\n\n\n\t/**\n\t * Retrieve the DataTables object for the given selector. Note that if the\n\t * table has already been initialised, this parameter will cause DataTables\n\t * to simply return the object that has already been set up - it will not take\n\t * account of any changes you might have made to the initialisation object\n\t * passed to DataTables (setting this parameter to true is an acknowledgement\n\t * that you understand this). `destroy` can be used to reinitialise a table if\n\t * you need.\n\t *  @type boolean\n\t *  @default false\n\t *\n\t *  @dtopt Options\n\t *  @name DataTable.defaults.retrieve\n\t *\n\t *  @example\n\t *    $(document).ready( function() {\n\t *      initTable();\n\t *      tableActions();\n\t *    } );\n\t *\n\t *    function initTable ()\n\t *    {\n\t *      return $('#example').dataTable( {\n\t *        \"scrollY\": \"200px\",\n\t *        \"paginate\": false,\n\t *        \"retrieve\": true\n\t *      } );\n\t *    }\n\t *\n\t *    function tableActions ()\n\t *    {\n\t *      var table = initTable();\n\t *      // perform API operations with oTable\n\t *    }\n\t */\n\t\"bRetrieve\": false,\n\n\n\t/**\n\t * When vertical (y) scrolling is enabled, DataTables will force the height of\n\t * the table's viewport to the given height at all times (useful for layout).\n\t * However, this can look odd when filtering data down to a small data set,\n\t * and the footer is left \"floating\" further down. This parameter (when\n\t * enabled) will cause DataTables to collapse the table's viewport down when\n\t * the result set will fit within the given Y height.\n\t *  @type boolean\n\t *  @default false\n\t *\n\t *  @dtopt Options\n\t *  @name DataTable.defaults.scrollCollapse\n\t *\n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"scrollY\": \"200\",\n\t *        \"scrollCollapse\": true\n\t *      } );\n\t *    } );\n\t */\n\t\"bScrollCollapse\": false,\n\n\n\t/**\n\t * Configure DataTables to use server-side processing. Note that the\n\t * `ajax` parameter must also be given in order to give DataTables a\n\t * source to obtain the required data for each draw.\n\t *  @type boolean\n\t *  @default false\n\t *\n\t *  @dtopt Features\n\t *  @dtopt Server-side\n\t *  @name DataTable.defaults.serverSide\n\t *\n\t *  @example\n\t *    $(document).ready( function () {\n\t *      $('#example').dataTable( {\n\t *        \"serverSide\": true,\n\t *        \"ajax\": \"xhr.php\"\n\t *      } );\n\t *    } );\n\t */\n\t\"bServerSide\": false,\n\n\n\t/**\n\t * Enable or disable sorting of columns. Sorting of individual columns can be\n\t * disabled by the `sortable` option for each column.\n\t *  @type boolean\n\t *  @default true\n\t *\n\t *  @dtopt Features\n\t *  @name DataTable.defaults.ordering\n\t *\n\t *  @example\n\t *    $(document).ready( function () {\n\t *      $('#example').dataTable( {\n\t *        \"ordering\": false\n\t *      } );\n\t *    } );\n\t */\n\t\"bSort\": true,\n\n\n\t/**\n\t * Enable or display DataTables' ability to sort multiple columns at the\n\t * same time (activated by shift-click by the user).\n\t *  @type boolean\n\t *  @default true\n\t *\n\t *  @dtopt Options\n\t *  @name DataTable.defaults.orderMulti\n\t *\n\t *  @example\n\t *    // Disable multiple column sorting ability\n\t *    $(document).ready( function () {\n\t *      $('#example').dataTable( {\n\t *        \"orderMulti\": false\n\t *      } );\n\t *    } );\n\t */\n\t\"bSortMulti\": true,\n\n\n\t/**\n\t * Allows control over whether DataTables should use the top (true) unique\n\t * cell that is found for a single column, or the bottom (false - default).\n\t * This is useful when using complex headers.\n\t *  @type boolean\n\t *  @default false\n\t *\n\t *  @dtopt Options\n\t *  @name DataTable.defaults.orderCellsTop\n\t *\n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"orderCellsTop\": true\n\t *      } );\n\t *    } );\n\t */\n\t\"bSortCellsTop\": false,\n\n\n\t/**\n\t * Enable or disable the addition of the classes `sorting\\_1`, `sorting\\_2` and\n\t * `sorting\\_3` to the columns which are currently being sorted on. This is\n\t * presented as a feature switch as it can increase processing time (while\n\t * classes are removed and added) so for large data sets you might want to\n\t * turn this off.\n\t *  @type boolean\n\t *  @default true\n\t *\n\t *  @dtopt Features\n\t *  @name DataTable.defaults.orderClasses\n\t *\n\t *  @example\n\t *    $(document).ready( function () {\n\t *      $('#example').dataTable( {\n\t *        \"orderClasses\": false\n\t *      } );\n\t *    } );\n\t */\n\t\"bSortClasses\": true,\n\n\n\t/**\n\t * Enable or disable state saving. When enabled HTML5 `localStorage` will be\n\t * used to save table display information such as pagination information,\n\t * display length, filtering and sorting. As such when the end user reloads\n\t * the page the display display will match what thy had previously set up.\n\t *\n\t * Due to the use of `localStorage` the default state saving is not supported\n\t * in IE6 or 7. If state saving is required in those browsers, use\n\t * `stateSaveCallback` to provide a storage solution such as cookies.\n\t *  @type boolean\n\t *  @default false\n\t *\n\t *  @dtopt Features\n\t *  @name DataTable.defaults.stateSave\n\t *\n\t *  @example\n\t *    $(document).ready( function () {\n\t *      $('#example').dataTable( {\n\t *        \"stateSave\": true\n\t *      } );\n\t *    } );\n\t */\n\t\"bStateSave\": false,\n\n\n\t/**\n\t * This function is called when a TR element is created (and all TD child\n\t * elements have been inserted), or registered if using a DOM source, allowing\n\t * manipulation of the TR element (adding classes etc).\n\t *  @type function\n\t *  @param {node} row \"TR\" element for the current row\n\t *  @param {array} data Raw data array for this row\n\t *  @param {int} dataIndex The index of this row in the internal aoData array\n\t *\n\t *  @dtopt Callbacks\n\t *  @name DataTable.defaults.createdRow\n\t *\n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"createdRow\": function( row, data, dataIndex ) {\n\t *          // Bold the grade for all 'A' grade browsers\n\t *          if ( data[4] == \"A\" )\n\t *          {\n\t *            $('td:eq(4)', row).html( '<b>A</b>' );\n\t *          }\n\t *        }\n\t *      } );\n\t *    } );\n\t */\n\t\"fnCreatedRow\": null,\n\n\n\t/**\n\t * This function is called on every 'draw' event, and allows you to\n\t * dynamically modify any aspect you want about the created DOM.\n\t *  @type function\n\t *  @param {object} settings DataTables settings object\n\t *\n\t *  @dtopt Callbacks\n\t *  @name DataTable.defaults.drawCallback\n\t *\n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"drawCallback\": function( settings ) {\n\t *          alert( 'DataTables has redrawn the table' );\n\t *        }\n\t *      } );\n\t *    } );\n\t */\n\t\"fnDrawCallback\": null,\n\n\n\t/**\n\t * Identical to fnHeaderCallback() but for the table footer this function\n\t * allows you to modify the table footer on every 'draw' event.\n\t *  @type function\n\t *  @param {node} foot \"TR\" element for the footer\n\t *  @param {array} data Full table data (as derived from the original HTML)\n\t *  @param {int} start Index for the current display starting point in the\n\t *    display array\n\t *  @param {int} end Index for the current display ending point in the\n\t *    display array\n\t *  @param {array int} display Index array to translate the visual position\n\t *    to the full data array\n\t *\n\t *  @dtopt Callbacks\n\t *  @name DataTable.defaults.footerCallback\n\t *\n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"footerCallback\": function( tfoot, data, start, end, display ) {\n\t *          tfoot.getElementsByTagName('th')[0].innerHTML = \"Starting index is \"+start;\n\t *        }\n\t *      } );\n\t *    } )\n\t */\n\t\"fnFooterCallback\": null,\n\n\n\t/**\n\t * When rendering large numbers in the information element for the table\n\t * (i.e. \"Showing 1 to 10 of 57 entries\") DataTables will render large numbers\n\t * to have a comma separator for the 'thousands' units (e.g. 1 million is\n\t * rendered as \"1,000,000\") to help readability for the end user. This\n\t * function will override the default method DataTables uses.\n\t *  @type function\n\t *  @member\n\t *  @param {int} toFormat number to be formatted\n\t *  @returns {string} formatted string for DataTables to show the number\n\t *\n\t *  @dtopt Callbacks\n\t *  @name DataTable.defaults.formatNumber\n\t *\n\t *  @example\n\t *    // Format a number using a single quote for the separator (note that\n\t *    // this can also be done with the language.thousands option)\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"formatNumber\": function ( toFormat ) {\n\t *          return toFormat.toString().replace(\n\t *            /\\B(?=(\\d{3})+(?!\\d))/g, \"'\"\n\t *          );\n\t *        };\n\t *      } );\n\t *    } );\n\t */\n\t\"fnFormatNumber\": function ( toFormat ) {\n\t\treturn toFormat.toString().replace(\n\t\t\t/\\B(?=(\\d{3})+(?!\\d))/g,\n\t\t\tthis.oLanguage.sThousands\n\t\t);\n\t},\n\n\n\t/**\n\t * This function is called on every 'draw' event, and allows you to\n\t * dynamically modify the header row. This can be used to calculate and\n\t * display useful information about the table.\n\t *  @type function\n\t *  @param {node} head \"TR\" element for the header\n\t *  @param {array} data Full table data (as derived from the original HTML)\n\t *  @param {int} start Index for the current display starting point in the\n\t *    display array\n\t *  @param {int} end Index for the current display ending point in the\n\t *    display array\n\t *  @param {array int} display Index array to translate the visual position\n\t *    to the full data array\n\t *\n\t *  @dtopt Callbacks\n\t *  @name DataTable.defaults.headerCallback\n\t *\n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"fheaderCallback\": function( head, data, start, end, display ) {\n\t *          head.getElementsByTagName('th')[0].innerHTML = \"Displaying \"+(end-start)+\" records\";\n\t *        }\n\t *      } );\n\t *    } )\n\t */\n\t\"fnHeaderCallback\": null,\n\n\n\t/**\n\t * The information element can be used to convey information about the current\n\t * state of the table. Although the internationalisation options presented by\n\t * DataTables are quite capable of dealing with most customisations, there may\n\t * be times where you wish to customise the string further. This callback\n\t * allows you to do exactly that.\n\t *  @type function\n\t *  @param {object} oSettings DataTables settings object\n\t *  @param {int} start Starting position in data for the draw\n\t *  @param {int} end End position in data for the draw\n\t *  @param {int} max Total number of rows in the table (regardless of\n\t *    filtering)\n\t *  @param {int} total Total number of rows in the data set, after filtering\n\t *  @param {string} pre The string that DataTables has formatted using it's\n\t *    own rules\n\t *  @returns {string} The string to be displayed in the information element.\n\t *\n\t *  @dtopt Callbacks\n\t *  @name DataTable.defaults.infoCallback\n\t *\n\t *  @example\n\t *    $('#example').dataTable( {\n\t *      \"infoCallback\": function( settings, start, end, max, total, pre ) {\n\t *        return start +\" to \"+ end;\n\t *      }\n\t *    } );\n\t */\n\t\"fnInfoCallback\": null,\n\n\n\t/**\n\t * Called when the table has been initialised. Normally DataTables will\n\t * initialise sequentially and there will be no need for this function,\n\t * however, this does not hold true when using external language information\n\t * since that is obtained using an async XHR call.\n\t *  @type function\n\t *  @param {object} settings DataTables settings object\n\t *  @param {object} json The JSON object request from the server - only\n\t *    present if client-side Ajax sourced data is used\n\t *\n\t *  @dtopt Callbacks\n\t *  @name DataTable.defaults.initComplete\n\t *\n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"initComplete\": function(settings, json) {\n\t *          alert( 'DataTables has finished its initialisation.' );\n\t *        }\n\t *      } );\n\t *    } )\n\t */\n\t\"fnInitComplete\": null,\n\n\n\t/**\n\t * Called at the very start of each table draw and can be used to cancel the\n\t * draw by returning false, any other return (including undefined) results in\n\t * the full draw occurring).\n\t *  @type function\n\t *  @param {object} settings DataTables settings object\n\t *  @returns {boolean} False will cancel the draw, anything else (including no\n\t *    return) will allow it to complete.\n\t *\n\t *  @dtopt Callbacks\n\t *  @name DataTable.defaults.preDrawCallback\n\t *\n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"preDrawCallback\": function( settings ) {\n\t *          if ( $('#test').val() == 1 ) {\n\t *            return false;\n\t *          }\n\t *        }\n\t *      } );\n\t *    } );\n\t */\n\t\"fnPreDrawCallback\": null,\n\n\n\t/**\n\t * This function allows you to 'post process' each row after it have been\n\t * generated for each table draw, but before it is rendered on screen. This\n\t * function might be used for setting the row class name etc.\n\t *  @type function\n\t *  @param {node} row \"TR\" element for the current row\n\t *  @param {array} data Raw data array for this row\n\t *  @param {int} displayIndex The display index for the current table draw\n\t *  @param {int} displayIndexFull The index of the data in the full list of\n\t *    rows (after filtering)\n\t *\n\t *  @dtopt Callbacks\n\t *  @name DataTable.defaults.rowCallback\n\t *\n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"rowCallback\": function( row, data, displayIndex, displayIndexFull ) {\n\t *          // Bold the grade for all 'A' grade browsers\n\t *          if ( data[4] == \"A\" ) {\n\t *            $('td:eq(4)', row).html( '<b>A</b>' );\n\t *          }\n\t *        }\n\t *      } );\n\t *    } );\n\t */\n\t\"fnRowCallback\": null,\n\n\n\t/**\n\t * __Deprecated__ The functionality provided by this parameter has now been\n\t * superseded by that provided through `ajax`, which should be used instead.\n\t *\n\t * This parameter allows you to override the default function which obtains\n\t * the data from the server so something more suitable for your application.\n\t * For example you could use POST data, or pull information from a Gears or\n\t * AIR database.\n\t *  @type function\n\t *  @member\n\t *  @param {string} source HTTP source to obtain the data from (`ajax`)\n\t *  @param {array} data A key/value pair object containing the data to send\n\t *    to the server\n\t *  @param {function} callback to be called on completion of the data get\n\t *    process that will draw the data on the page.\n\t *  @param {object} settings DataTables settings object\n\t *\n\t *  @dtopt Callbacks\n\t *  @dtopt Server-side\n\t *  @name DataTable.defaults.serverData\n\t *\n\t *  @deprecated 1.10. Please use `ajax` for this functionality now.\n\t */\n\t\"fnServerData\": null,\n\n\n\t/**\n\t * __Deprecated__ The functionality provided by this parameter has now been\n\t * superseded by that provided through `ajax`, which should be used instead.\n\t *\n\t *  It is often useful to send extra data to the server when making an Ajax\n\t * request - for example custom filtering information, and this callback\n\t * function makes it trivial to send extra information to the server. The\n\t * passed in parameter is the data set that has been constructed by\n\t * DataTables, and you can add to this or modify it as you require.\n\t *  @type function\n\t *  @param {array} data Data array (array of objects which are name/value\n\t *    pairs) that has been constructed by DataTables and will be sent to the\n\t *    server. In the case of Ajax sourced data with server-side processing\n\t *    this will be an empty array, for server-side processing there will be a\n\t *    significant number of parameters!\n\t *  @returns {undefined} Ensure that you modify the data array passed in,\n\t *    as this is passed by reference.\n\t *\n\t *  @dtopt Callbacks\n\t *  @dtopt Server-side\n\t *  @name DataTable.defaults.serverParams\n\t *\n\t *  @deprecated 1.10. Please use `ajax` for this functionality now.\n\t */\n\t\"fnServerParams\": null,\n\n\n\t/**\n\t * Load the table state. With this function you can define from where, and how, the\n\t * state of a table is loaded. By default DataTables will load from `localStorage`\n\t * but you might wish to use a server-side database or cookies.\n\t *  @type function\n\t *  @member\n\t *  @param {object} settings DataTables settings object\n\t *  @param {object} callback Callback that can be executed when done. It\n\t *    should be passed the loaded state object.\n\t *  @return {object} The DataTables state object to be loaded\n\t *\n\t *  @dtopt Callbacks\n\t *  @name DataTable.defaults.stateLoadCallback\n\t *\n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"stateSave\": true,\n\t *        \"stateLoadCallback\": function (settings, callback) {\n\t *          $.ajax( {\n\t *            \"url\": \"/state_load\",\n\t *            \"dataType\": \"json\",\n\t *            \"success\": function (json) {\n\t *              callback( json );\n\t *            }\n\t *          } );\n\t *        }\n\t *      } );\n\t *    } );\n\t */\n\t\"fnStateLoadCallback\": function ( settings ) {\n\t\ttry {\n\t\t\treturn JSON.parse(\n\t\t\t\t(settings.iStateDuration === -1 ? sessionStorage : localStorage).getItem(\n\t\t\t\t\t'DataTables_'+settings.sInstance+'_'+location.pathname\n\t\t\t\t)\n\t\t\t);\n\t\t} catch (e) {\n\t\t\treturn {};\n\t\t}\n\t},\n\n\n\t/**\n\t * Callback which allows modification of the saved state prior to loading that state.\n\t * This callback is called when the table is loading state from the stored data, but\n\t * prior to the settings object being modified by the saved state. Note that for\n\t * plug-in authors, you should use the `stateLoadParams` event to load parameters for\n\t * a plug-in.\n\t *  @type function\n\t *  @param {object} settings DataTables settings object\n\t *  @param {object} data The state object that is to be loaded\n\t *\n\t *  @dtopt Callbacks\n\t *  @name DataTable.defaults.stateLoadParams\n\t *\n\t *  @example\n\t *    // Remove a saved filter, so filtering is never loaded\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"stateSave\": true,\n\t *        \"stateLoadParams\": function (settings, data) {\n\t *          data.oSearch.sSearch = \"\";\n\t *        }\n\t *      } );\n\t *    } );\n\t *\n\t *  @example\n\t *    // Disallow state loading by returning false\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"stateSave\": true,\n\t *        \"stateLoadParams\": function (settings, data) {\n\t *          return false;\n\t *        }\n\t *      } );\n\t *    } );\n\t */\n\t\"fnStateLoadParams\": null,\n\n\n\t/**\n\t * Callback that is called when the state has been loaded from the state saving method\n\t * and the DataTables settings object has been modified as a result of the loaded state.\n\t *  @type function\n\t *  @param {object} settings DataTables settings object\n\t *  @param {object} data The state object that was loaded\n\t *\n\t *  @dtopt Callbacks\n\t *  @name DataTable.defaults.stateLoaded\n\t *\n\t *  @example\n\t *    // Show an alert with the filtering value that was saved\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"stateSave\": true,\n\t *        \"stateLoaded\": function (settings, data) {\n\t *          alert( 'Saved filter was: '+data.oSearch.sSearch );\n\t *        }\n\t *      } );\n\t *    } );\n\t */\n\t\"fnStateLoaded\": null,\n\n\n\t/**\n\t * Save the table state. This function allows you to define where and how the state\n\t * information for the table is stored By default DataTables will use `localStorage`\n\t * but you might wish to use a server-side database or cookies.\n\t *  @type function\n\t *  @member\n\t *  @param {object} settings DataTables settings object\n\t *  @param {object} data The state object to be saved\n\t *\n\t *  @dtopt Callbacks\n\t *  @name DataTable.defaults.stateSaveCallback\n\t *\n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"stateSave\": true,\n\t *        \"stateSaveCallback\": function (settings, data) {\n\t *          // Send an Ajax request to the server with the state object\n\t *          $.ajax( {\n\t *            \"url\": \"/state_save\",\n\t *            \"data\": data,\n\t *            \"dataType\": \"json\",\n\t *            \"method\": \"POST\"\n\t *            \"success\": function () {}\n\t *          } );\n\t *        }\n\t *      } );\n\t *    } );\n\t */\n\t\"fnStateSaveCallback\": function ( settings, data ) {\n\t\ttry {\n\t\t\t(settings.iStateDuration === -1 ? sessionStorage : localStorage).setItem(\n\t\t\t\t'DataTables_'+settings.sInstance+'_'+location.pathname,\n\t\t\t\tJSON.stringify( data )\n\t\t\t);\n\t\t} catch (e) {}\n\t},\n\n\n\t/**\n\t * Callback which allows modification of the state to be saved. Called when the table\n\t * has changed state a new state save is required. This method allows modification of\n\t * the state saving object prior to actually doing the save, including addition or\n\t * other state properties or modification. Note that for plug-in authors, you should\n\t * use the `stateSaveParams` event to save parameters for a plug-in.\n\t *  @type function\n\t *  @param {object} settings DataTables settings object\n\t *  @param {object} data The state object to be saved\n\t *\n\t *  @dtopt Callbacks\n\t *  @name DataTable.defaults.stateSaveParams\n\t *\n\t *  @example\n\t *    // Remove a saved filter, so filtering is never saved\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"stateSave\": true,\n\t *        \"stateSaveParams\": function (settings, data) {\n\t *          data.oSearch.sSearch = \"\";\n\t *        }\n\t *      } );\n\t *    } );\n\t */\n\t\"fnStateSaveParams\": null,\n\n\n\t/**\n\t * Duration for which the saved state information is considered valid. After this period\n\t * has elapsed the state will be returned to the default.\n\t * Value is given in seconds.\n\t *  @type int\n\t *  @default 7200 <i>(2 hours)</i>\n\t *\n\t *  @dtopt Options\n\t *  @name DataTable.defaults.stateDuration\n\t *\n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"stateDuration\": 60*60*24; // 1 day\n\t *      } );\n\t *    } )\n\t */\n\t\"iStateDuration\": 7200,\n\n\n\t/**\n\t * When enabled DataTables will not make a request to the server for the first\n\t * page draw - rather it will use the data already on the page (no sorting etc\n\t * will be applied to it), thus saving on an XHR at load time. `deferLoading`\n\t * is used to indicate that deferred loading is required, but it is also used\n\t * to tell DataTables how many records there are in the full table (allowing\n\t * the information element and pagination to be displayed correctly). In the case\n\t * where a filtering is applied to the table on initial load, this can be\n\t * indicated by giving the parameter as an array, where the first element is\n\t * the number of records available after filtering and the second element is the\n\t * number of records without filtering (allowing the table information element\n\t * to be shown correctly).\n\t *  @type int | array\n\t *  @default null\n\t *\n\t *  @dtopt Options\n\t *  @name DataTable.defaults.deferLoading\n\t *\n\t *  @example\n\t *    // 57 records available in the table, no filtering applied\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"serverSide\": true,\n\t *        \"ajax\": \"scripts/server_processing.php\",\n\t *        \"deferLoading\": 57\n\t *      } );\n\t *    } );\n\t *\n\t *  @example\n\t *    // 57 records after filtering, 100 without filtering (an initial filter applied)\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"serverSide\": true,\n\t *        \"ajax\": \"scripts/server_processing.php\",\n\t *        \"deferLoading\": [ 57, 100 ],\n\t *        \"search\": {\n\t *          \"search\": \"my_filter\"\n\t *        }\n\t *      } );\n\t *    } );\n\t */\n\t\"iDeferLoading\": null,\n\n\n\t/**\n\t * Number of rows to display on a single page when using pagination. If\n\t * feature enabled (`lengthChange`) then the end user will be able to override\n\t * this to a custom setting using a pop-up menu.\n\t *  @type int\n\t *  @default 10\n\t *\n\t *  @dtopt Options\n\t *  @name DataTable.defaults.pageLength\n\t *\n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"pageLength\": 50\n\t *      } );\n\t *    } )\n\t */\n\t\"iDisplayLength\": 10,\n\n\n\t/**\n\t * Define the starting point for data display when using DataTables with\n\t * pagination. Note that this parameter is the number of records, rather than\n\t * the page number, so if you have 10 records per page and want to start on\n\t * the third page, it should be \"20\".\n\t *  @type int\n\t *  @default 0\n\t *\n\t *  @dtopt Options\n\t *  @name DataTable.defaults.displayStart\n\t *\n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"displayStart\": 20\n\t *      } );\n\t *    } )\n\t */\n\t\"iDisplayStart\": 0,\n\n\n\t/**\n\t * By default DataTables allows keyboard navigation of the table (sorting, paging,\n\t * and filtering) by adding a `tabindex` attribute to the required elements. This\n\t * allows you to tab through the controls and press the enter key to activate them.\n\t * The tabindex is default 0, meaning that the tab follows the flow of the document.\n\t * You can overrule this using this parameter if you wish. Use a value of -1 to\n\t * disable built-in keyboard navigation.\n\t *  @type int\n\t *  @default 0\n\t *\n\t *  @dtopt Options\n\t *  @name DataTable.defaults.tabIndex\n\t *\n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"tabIndex\": 1\n\t *      } );\n\t *    } );\n\t */\n\t\"iTabIndex\": 0,\n\n\n\t/**\n\t * Classes that DataTables assigns to the various components and features\n\t * that it adds to the HTML table. This allows classes to be configured\n\t * during initialisation in addition to through the static\n\t * {@link DataTable.ext.oStdClasses} object).\n\t *  @namespace\n\t *  @name DataTable.defaults.classes\n\t */\n\t\"oClasses\": {},\n\n\n\t/**\n\t * All strings that DataTables uses in the user interface that it creates\n\t * are defined in this object, allowing you to modified them individually or\n\t * completely replace them all as required.\n\t *  @namespace\n\t *  @name DataTable.defaults.language\n\t */\n\t\"oLanguage\": {\n\t\t/**\n\t\t * Strings that are used for WAI-ARIA labels and controls only (these are not\n\t\t * actually visible on the page, but will be read by screenreaders, and thus\n\t\t * must be internationalised as well).\n\t\t *  @namespace\n\t\t *  @name DataTable.defaults.language.aria\n\t\t */\n\t\t\"oAria\": {\n\t\t\t/**\n\t\t\t * ARIA label that is added to the table headers when the column may be\n\t\t\t * sorted ascending by activing the column (click or return when focused).\n\t\t\t * Note that the column header is prefixed to this string.\n\t\t\t *  @type string\n\t\t\t *  @default : activate to sort column ascending\n\t\t\t *\n\t\t\t *  @dtopt Language\n\t\t\t *  @name DataTable.defaults.language.aria.sortAscending\n\t\t\t *\n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"language\": {\n\t\t\t *          \"aria\": {\n\t\t\t *            \"sortAscending\": \" - click/return to sort ascending\"\n\t\t\t *          }\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sSortAscending\": \": activate to sort column ascending\",\n\n\t\t\t/**\n\t\t\t * ARIA label that is added to the table headers when the column may be\n\t\t\t * sorted descending by activing the column (click or return when focused).\n\t\t\t * Note that the column header is prefixed to this string.\n\t\t\t *  @type string\n\t\t\t *  @default : activate to sort column ascending\n\t\t\t *\n\t\t\t *  @dtopt Language\n\t\t\t *  @name DataTable.defaults.language.aria.sortDescending\n\t\t\t *\n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"language\": {\n\t\t\t *          \"aria\": {\n\t\t\t *            \"sortDescending\": \" - click/return to sort descending\"\n\t\t\t *          }\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sSortDescending\": \": activate to sort column descending\"\n\t\t},\n\n\t\t/**\n\t\t * Pagination string used by DataTables for the built-in pagination\n\t\t * control types.\n\t\t *  @namespace\n\t\t *  @name DataTable.defaults.language.paginate\n\t\t */\n\t\t\"oPaginate\": {\n\t\t\t/**\n\t\t\t * Text to use when using the 'full_numbers' type of pagination for the\n\t\t\t * button to take the user to the first page.\n\t\t\t *  @type string\n\t\t\t *  @default First\n\t\t\t *\n\t\t\t *  @dtopt Language\n\t\t\t *  @name DataTable.defaults.language.paginate.first\n\t\t\t *\n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"language\": {\n\t\t\t *          \"paginate\": {\n\t\t\t *            \"first\": \"First page\"\n\t\t\t *          }\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sFirst\": \"First\",\n\n\n\t\t\t/**\n\t\t\t * Text to use when using the 'full_numbers' type of pagination for the\n\t\t\t * button to take the user to the last page.\n\t\t\t *  @type string\n\t\t\t *  @default Last\n\t\t\t *\n\t\t\t *  @dtopt Language\n\t\t\t *  @name DataTable.defaults.language.paginate.last\n\t\t\t *\n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"language\": {\n\t\t\t *          \"paginate\": {\n\t\t\t *            \"last\": \"Last page\"\n\t\t\t *          }\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sLast\": \"Last\",\n\n\n\t\t\t/**\n\t\t\t * Text to use for the 'next' pagination button (to take the user to the\n\t\t\t * next page).\n\t\t\t *  @type string\n\t\t\t *  @default Next\n\t\t\t *\n\t\t\t *  @dtopt Language\n\t\t\t *  @name DataTable.defaults.language.paginate.next\n\t\t\t *\n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"language\": {\n\t\t\t *          \"paginate\": {\n\t\t\t *            \"next\": \"Next page\"\n\t\t\t *          }\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sNext\": \"Next\",\n\n\n\t\t\t/**\n\t\t\t * Text to use for the 'previous' pagination button (to take the user to\n\t\t\t * the previous page).\n\t\t\t *  @type string\n\t\t\t *  @default Previous\n\t\t\t *\n\t\t\t *  @dtopt Language\n\t\t\t *  @name DataTable.defaults.language.paginate.previous\n\t\t\t *\n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"language\": {\n\t\t\t *          \"paginate\": {\n\t\t\t *            \"previous\": \"Previous page\"\n\t\t\t *          }\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sPrevious\": \"Previous\"\n\t\t},\n\n\t\t/**\n\t\t * This string is shown in preference to `zeroRecords` when the table is\n\t\t * empty of data (regardless of filtering). Note that this is an optional\n\t\t * parameter - if it is not given, the value of `zeroRecords` will be used\n\t\t * instead (either the default or given value).\n\t\t *  @type string\n\t\t *  @default No data available in table\n\t\t *\n\t\t *  @dtopt Language\n\t\t *  @name DataTable.defaults.language.emptyTable\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"language\": {\n\t\t *          \"emptyTable\": \"No data available in table\"\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sEmptyTable\": \"No data available in table\",\n\n\n\t\t/**\n\t\t * This string gives information to the end user about the information\n\t\t * that is current on display on the page. The following tokens can be\n\t\t * used in the string and will be dynamically replaced as the table\n\t\t * display updates. This tokens can be placed anywhere in the string, or\n\t\t * removed as needed by the language requires:\n\t\t *\n\t\t * * `\\_START\\_` - Display index of the first record on the current page\n\t\t * * `\\_END\\_` - Display index of the last record on the current page\n\t\t * * `\\_TOTAL\\_` - Number of records in the table after filtering\n\t\t * * `\\_MAX\\_` - Number of records in the table without filtering\n\t\t * * `\\_PAGE\\_` - Current page number\n\t\t * * `\\_PAGES\\_` - Total number of pages of data in the table\n\t\t *\n\t\t *  @type string\n\t\t *  @default Showing _START_ to _END_ of _TOTAL_ entries\n\t\t *\n\t\t *  @dtopt Language\n\t\t *  @name DataTable.defaults.language.info\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"language\": {\n\t\t *          \"info\": \"Showing page _PAGE_ of _PAGES_\"\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sInfo\": \"Showing _START_ to _END_ of _TOTAL_ entries\",\n\n\n\t\t/**\n\t\t * Display information string for when the table is empty. Typically the\n\t\t * format of this string should match `info`.\n\t\t *  @type string\n\t\t *  @default Showing 0 to 0 of 0 entries\n\t\t *\n\t\t *  @dtopt Language\n\t\t *  @name DataTable.defaults.language.infoEmpty\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"language\": {\n\t\t *          \"infoEmpty\": \"No entries to show\"\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sInfoEmpty\": \"Showing 0 to 0 of 0 entries\",\n\n\n\t\t/**\n\t\t * When a user filters the information in a table, this string is appended\n\t\t * to the information (`info`) to give an idea of how strong the filtering\n\t\t * is. The variable _MAX_ is dynamically updated.\n\t\t *  @type string\n\t\t *  @default (filtered from _MAX_ total entries)\n\t\t *\n\t\t *  @dtopt Language\n\t\t *  @name DataTable.defaults.language.infoFiltered\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"language\": {\n\t\t *          \"infoFiltered\": \" - filtering from _MAX_ records\"\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sInfoFiltered\": \"(filtered from _MAX_ total entries)\",\n\n\n\t\t/**\n\t\t * If can be useful to append extra information to the info string at times,\n\t\t * and this variable does exactly that. This information will be appended to\n\t\t * the `info` (`infoEmpty` and `infoFiltered` in whatever combination they are\n\t\t * being used) at all times.\n\t\t *  @type string\n\t\t *  @default <i>Empty string</i>\n\t\t *\n\t\t *  @dtopt Language\n\t\t *  @name DataTable.defaults.language.infoPostFix\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"language\": {\n\t\t *          \"infoPostFix\": \"All records shown are derived from real information.\"\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sInfoPostFix\": \"\",\n\n\n\t\t/**\n\t\t * This decimal place operator is a little different from the other\n\t\t * language options since DataTables doesn't output floating point\n\t\t * numbers, so it won't ever use this for display of a number. Rather,\n\t\t * what this parameter does is modify the sort methods of the table so\n\t\t * that numbers which are in a format which has a character other than\n\t\t * a period (`.`) as a decimal place will be sorted numerically.\n\t\t *\n\t\t * Note that numbers with different decimal places cannot be shown in\n\t\t * the same table and still be sortable, the table must be consistent.\n\t\t * However, multiple different tables on the page can use different\n\t\t * decimal place characters.\n\t\t *  @type string\n\t\t *  @default \n\t\t *\n\t\t *  @dtopt Language\n\t\t *  @name DataTable.defaults.language.decimal\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"language\": {\n\t\t *          \"decimal\": \",\"\n\t\t *          \"thousands\": \".\"\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sDecimal\": \"\",\n\n\n\t\t/**\n\t\t * DataTables has a build in number formatter (`formatNumber`) which is\n\t\t * used to format large numbers that are used in the table information.\n\t\t * By default a comma is used, but this can be trivially changed to any\n\t\t * character you wish with this parameter.\n\t\t *  @type string\n\t\t *  @default ,\n\t\t *\n\t\t *  @dtopt Language\n\t\t *  @name DataTable.defaults.language.thousands\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"language\": {\n\t\t *          \"thousands\": \"'\"\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sThousands\": \",\",\n\n\n\t\t/**\n\t\t * Detail the action that will be taken when the drop down menu for the\n\t\t * pagination length option is changed. The '_MENU_' variable is replaced\n\t\t * with a default select list of 10, 25, 50 and 100, and can be replaced\n\t\t * with a custom select box if required.\n\t\t *  @type string\n\t\t *  @default Show _MENU_ entries\n\t\t *\n\t\t *  @dtopt Language\n\t\t *  @name DataTable.defaults.language.lengthMenu\n\t\t *\n\t\t *  @example\n\t\t *    // Language change only\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"language\": {\n\t\t *          \"lengthMenu\": \"Display _MENU_ records\"\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    // Language and options change\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"language\": {\n\t\t *          \"lengthMenu\": 'Display <select>'+\n\t\t *            '<option value=\"10\">10</option>'+\n\t\t *            '<option value=\"20\">20</option>'+\n\t\t *            '<option value=\"30\">30</option>'+\n\t\t *            '<option value=\"40\">40</option>'+\n\t\t *            '<option value=\"50\">50</option>'+\n\t\t *            '<option value=\"-1\">All</option>'+\n\t\t *            '</select> records'\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sLengthMenu\": \"Show _MENU_ entries\",\n\n\n\t\t/**\n\t\t * When using Ajax sourced data and during the first draw when DataTables is\n\t\t * gathering the data, this message is shown in an empty row in the table to\n\t\t * indicate to the end user the the data is being loaded. Note that this\n\t\t * parameter is not used when loading data by server-side processing, just\n\t\t * Ajax sourced data with client-side processing.\n\t\t *  @type string\n\t\t *  @default Loading...\n\t\t *\n\t\t *  @dtopt Language\n\t\t *  @name DataTable.defaults.language.loadingRecords\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"language\": {\n\t\t *          \"loadingRecords\": \"Please wait - loading...\"\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sLoadingRecords\": \"Loading...\",\n\n\n\t\t/**\n\t\t * Text which is displayed when the table is processing a user action\n\t\t * (usually a sort command or similar).\n\t\t *  @type string\n\t\t *\n\t\t *  @dtopt Language\n\t\t *  @name DataTable.defaults.language.processing\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"language\": {\n\t\t *          \"processing\": \"DataTables is currently busy\"\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sProcessing\": \"\",\n\n\n\t\t/**\n\t\t * Details the actions that will be taken when the user types into the\n\t\t * filtering input text box. The variable \"_INPUT_\", if used in the string,\n\t\t * is replaced with the HTML text box for the filtering input allowing\n\t\t * control over where it appears in the string. If \"_INPUT_\" is not given\n\t\t * then the input box is appended to the string automatically.\n\t\t *  @type string\n\t\t *  @default Search:\n\t\t *\n\t\t *  @dtopt Language\n\t\t *  @name DataTable.defaults.language.search\n\t\t *\n\t\t *  @example\n\t\t *    // Input text box will be appended at the end automatically\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"language\": {\n\t\t *          \"search\": \"Filter records:\"\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    // Specify where the filter should appear\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"language\": {\n\t\t *          \"search\": \"Apply filter _INPUT_ to table\"\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sSearch\": \"Search:\",\n\n\n\t\t/**\n\t\t * Assign a `placeholder` attribute to the search `input` element\n\t\t *  @type string\n\t\t *  @default \n\t\t *\n\t\t *  @dtopt Language\n\t\t *  @name DataTable.defaults.language.searchPlaceholder\n\t\t */\n\t\t\"sSearchPlaceholder\": \"\",\n\n\n\t\t/**\n\t\t * All of the language information can be stored in a file on the\n\t\t * server-side, which DataTables will look up if this parameter is passed.\n\t\t * It must store the URL of the language file, which is in a JSON format,\n\t\t * and the object has the same properties as the oLanguage object in the\n\t\t * initialiser object (i.e. the above parameters). Please refer to one of\n\t\t * the example language files to see how this works in action.\n\t\t *  @type string\n\t\t *  @default <i>Empty string - i.e. disabled</i>\n\t\t *\n\t\t *  @dtopt Language\n\t\t *  @name DataTable.defaults.language.url\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"language\": {\n\t\t *          \"url\": \"http://www.sprymedia.co.uk/dataTables/lang.txt\"\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sUrl\": \"\",\n\n\n\t\t/**\n\t\t * Text shown inside the table records when the is no information to be\n\t\t * displayed after filtering. `emptyTable` is shown when there is simply no\n\t\t * information in the table at all (regardless of filtering).\n\t\t *  @type string\n\t\t *  @default No matching records found\n\t\t *\n\t\t *  @dtopt Language\n\t\t *  @name DataTable.defaults.language.zeroRecords\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"language\": {\n\t\t *          \"zeroRecords\": \"No records to display\"\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sZeroRecords\": \"No matching records found\"\n\t},\n\n\n\t/**\n\t * This parameter allows you to have define the global filtering state at\n\t * initialisation time. As an object the `search` parameter must be\n\t * defined, but all other parameters are optional. When `regex` is true,\n\t * the search string will be treated as a regular expression, when false\n\t * (default) it will be treated as a straight string. When `smart`\n\t * DataTables will use it's smart filtering methods (to word match at\n\t * any point in the data), when false this will not be done.\n\t *  @namespace\n\t *  @extends DataTable.models.oSearch\n\t *\n\t *  @dtopt Options\n\t *  @name DataTable.defaults.search\n\t *\n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"search\": {\"search\": \"Initial search\"}\n\t *      } );\n\t *    } )\n\t */\n\t\"oSearch\": $.extend( {}, DataTable.models.oSearch ),\n\n\n\t/**\n\t * __Deprecated__ The functionality provided by this parameter has now been\n\t * superseded by that provided through `ajax`, which should be used instead.\n\t *\n\t * By default DataTables will look for the property `data` (or `aaData` for\n\t * compatibility with DataTables 1.9-) when obtaining data from an Ajax\n\t * source or for server-side processing - this parameter allows that\n\t * property to be changed. You can use Javascript dotted object notation to\n\t * get a data source for multiple levels of nesting.\n\t *  @type string\n\t *  @default data\n\t *\n\t *  @dtopt Options\n\t *  @dtopt Server-side\n\t *  @name DataTable.defaults.ajaxDataProp\n\t *\n\t *  @deprecated 1.10. Please use `ajax` for this functionality now.\n\t */\n\t\"sAjaxDataProp\": \"data\",\n\n\n\t/**\n\t * __Deprecated__ The functionality provided by this parameter has now been\n\t * superseded by that provided through `ajax`, which should be used instead.\n\t *\n\t * You can instruct DataTables to load data from an external\n\t * source using this parameter (use aData if you want to pass data in you\n\t * already have). Simply provide a url a JSON object can be obtained from.\n\t *  @type string\n\t *  @default null\n\t *\n\t *  @dtopt Options\n\t *  @dtopt Server-side\n\t *  @name DataTable.defaults.ajaxSource\n\t *\n\t *  @deprecated 1.10. Please use `ajax` for this functionality now.\n\t */\n\t\"sAjaxSource\": null,\n\n\n\t/**\n\t * This initialisation variable allows you to specify exactly where in the\n\t * DOM you want DataTables to inject the various controls it adds to the page\n\t * (for example you might want the pagination controls at the top of the\n\t * table). DIV elements (with or without a custom class) can also be added to\n\t * aid styling. The follow syntax is used:\n\t *   <ul>\n\t *     <li>The following options are allowed:\n\t *       <ul>\n\t *         <li>'l' - Length changing</li>\n\t *         <li>'f' - Filtering input</li>\n\t *         <li>'t' - The table!</li>\n\t *         <li>'i' - Information</li>\n\t *         <li>'p' - Pagination</li>\n\t *         <li>'r' - pRocessing</li>\n\t *       </ul>\n\t *     </li>\n\t *     <li>The following constants are allowed:\n\t *       <ul>\n\t *         <li>'H' - jQueryUI theme \"header\" classes ('fg-toolbar ui-widget-header ui-corner-tl ui-corner-tr ui-helper-clearfix')</li>\n\t *         <li>'F' - jQueryUI theme \"footer\" classes ('fg-toolbar ui-widget-header ui-corner-bl ui-corner-br ui-helper-clearfix')</li>\n\t *       </ul>\n\t *     </li>\n\t *     <li>The following syntax is expected:\n\t *       <ul>\n\t *         <li>'&lt;' and '&gt;' - div elements</li>\n\t *         <li>'&lt;\"class\" and '&gt;' - div with a class</li>\n\t *         <li>'&lt;\"#id\" and '&gt;' - div with an ID</li>\n\t *       </ul>\n\t *     </li>\n\t *     <li>Examples:\n\t *       <ul>\n\t *         <li>'&lt;\"wrapper\"flipt&gt;'</li>\n\t *         <li>'&lt;lf&lt;t&gt;ip&gt;'</li>\n\t *       </ul>\n\t *     </li>\n\t *   </ul>\n\t *  @type string\n\t *  @default lfrtip <i>(when `jQueryUI` is false)</i> <b>or</b>\n\t *    <\"H\"lfr>t<\"F\"ip> <i>(when `jQueryUI` is true)</i>\n\t *\n\t *  @dtopt Options\n\t *  @name DataTable.defaults.dom\n\t *\n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"dom\": '&lt;\"top\"i&gt;rt&lt;\"bottom\"flp&gt;&lt;\"clear\"&gt;'\n\t *      } );\n\t *    } );\n\t */\n\t\"sDom\": \"lfrtip\",\n\n\n\t/**\n\t * Search delay option. This will throttle full table searches that use the\n\t * DataTables provided search input element (it does not effect calls to\n\t * `dt-api search()`, providing a delay before the search is made.\n\t *  @type integer\n\t *  @default 0\n\t *\n\t *  @dtopt Options\n\t *  @name DataTable.defaults.searchDelay\n\t *\n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"searchDelay\": 200\n\t *      } );\n\t *    } )\n\t */\n\t\"searchDelay\": null,\n\n\n\t/**\n\t * DataTables features six different built-in options for the buttons to\n\t * display for pagination control:\n\t *\n\t * * `numbers` - Page number buttons only\n\t * * `simple` - 'Previous' and 'Next' buttons only\n\t * * 'simple_numbers` - 'Previous' and 'Next' buttons, plus page numbers\n\t * * `full` - 'First', 'Previous', 'Next' and 'Last' buttons\n\t * * `full_numbers` - 'First', 'Previous', 'Next' and 'Last' buttons, plus page numbers\n\t * * `first_last_numbers` - 'First' and 'Last' buttons, plus page numbers\n\t *  \n\t * Further methods can be added using {@link DataTable.ext.oPagination}.\n\t *  @type string\n\t *  @default simple_numbers\n\t *\n\t *  @dtopt Options\n\t *  @name DataTable.defaults.pagingType\n\t *\n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"pagingType\": \"full_numbers\"\n\t *      } );\n\t *    } )\n\t */\n\t\"sPaginationType\": \"simple_numbers\",\n\n\n\t/**\n\t * Enable horizontal scrolling. When a table is too wide to fit into a\n\t * certain layout, or you have a large number of columns in the table, you\n\t * can enable x-scrolling to show the table in a viewport, which can be\n\t * scrolled. This property can be `true` which will allow the table to\n\t * scroll horizontally when needed, or any CSS unit, or a number (in which\n\t * case it will be treated as a pixel measurement). Setting as simply `true`\n\t * is recommended.\n\t *  @type boolean|string\n\t *  @default <i>blank string - i.e. disabled</i>\n\t *\n\t *  @dtopt Features\n\t *  @name DataTable.defaults.scrollX\n\t *\n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"scrollX\": true,\n\t *        \"scrollCollapse\": true\n\t *      } );\n\t *    } );\n\t */\n\t\"sScrollX\": \"\",\n\n\n\t/**\n\t * This property can be used to force a DataTable to use more width than it\n\t * might otherwise do when x-scrolling is enabled. For example if you have a\n\t * table which requires to be well spaced, this parameter is useful for\n\t * \"over-sizing\" the table, and thus forcing scrolling. This property can by\n\t * any CSS unit, or a number (in which case it will be treated as a pixel\n\t * measurement).\n\t *  @type string\n\t *  @default <i>blank string - i.e. disabled</i>\n\t *\n\t *  @dtopt Options\n\t *  @name DataTable.defaults.scrollXInner\n\t *\n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"scrollX\": \"100%\",\n\t *        \"scrollXInner\": \"110%\"\n\t *      } );\n\t *    } );\n\t */\n\t\"sScrollXInner\": \"\",\n\n\n\t/**\n\t * Enable vertical scrolling. Vertical scrolling will constrain the DataTable\n\t * to the given height, and enable scrolling for any data which overflows the\n\t * current viewport. This can be used as an alternative to paging to display\n\t * a lot of data in a small area (although paging and scrolling can both be\n\t * enabled at the same time). This property can be any CSS unit, or a number\n\t * (in which case it will be treated as a pixel measurement).\n\t *  @type string\n\t *  @default <i>blank string - i.e. disabled</i>\n\t *\n\t *  @dtopt Features\n\t *  @name DataTable.defaults.scrollY\n\t *\n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"scrollY\": \"200px\",\n\t *        \"paginate\": false\n\t *      } );\n\t *    } );\n\t */\n\t\"sScrollY\": \"\",\n\n\n\t/**\n\t * __Deprecated__ The functionality provided by this parameter has now been\n\t * superseded by that provided through `ajax`, which should be used instead.\n\t *\n\t * Set the HTTP method that is used to make the Ajax call for server-side\n\t * processing or Ajax sourced data.\n\t *  @type string\n\t *  @default GET\n\t *\n\t *  @dtopt Options\n\t *  @dtopt Server-side\n\t *  @name DataTable.defaults.serverMethod\n\t *\n\t *  @deprecated 1.10. Please use `ajax` for this functionality now.\n\t */\n\t\"sServerMethod\": \"GET\",\n\n\n\t/**\n\t * DataTables makes use of renderers when displaying HTML elements for\n\t * a table. These renderers can be added or modified by plug-ins to\n\t * generate suitable mark-up for a site. For example the Bootstrap\n\t * integration plug-in for DataTables uses a paging button renderer to\n\t * display pagination buttons in the mark-up required by Bootstrap.\n\t *\n\t * For further information about the renderers available see\n\t * DataTable.ext.renderer\n\t *  @type string|object\n\t *  @default null\n\t *\n\t *  @name DataTable.defaults.renderer\n\t *\n\t */\n\t\"renderer\": null,\n\n\n\t/**\n\t * Set the data property name that DataTables should use to get a row's id\n\t * to set as the `id` property in the node.\n\t *  @type string\n\t *  @default DT_RowId\n\t *\n\t *  @name DataTable.defaults.rowId\n\t */\n\t\"rowId\": \"DT_RowId\"\n};\n\n_fnHungarianMap( DataTable.defaults );\n\n\n\n/*\n * Developer note - See note in model.defaults.js about the use of Hungarian\n * notation and camel case.\n */\n\n/**\n * Column options that can be given to DataTables at initialisation time.\n *  @namespace\n */\nDataTable.defaults.column = {\n\t/**\n\t * Define which column(s) an order will occur on for this column. This\n\t * allows a column's ordering to take multiple columns into account when\n\t * doing a sort or use the data from a different column. For example first\n\t * name / last name columns make sense to do a multi-column sort over the\n\t * two columns.\n\t *  @type array|int\n\t *  @default null <i>Takes the value of the column index automatically</i>\n\t *\n\t *  @name DataTable.defaults.column.orderData\n\t *  @dtopt Columns\n\t *\n\t *  @example\n\t *    // Using `columnDefs`\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"columnDefs\": [\n\t *          { \"orderData\": [ 0, 1 ], \"targets\": [ 0 ] },\n\t *          { \"orderData\": [ 1, 0 ], \"targets\": [ 1 ] },\n\t *          { \"orderData\": 2, \"targets\": [ 2 ] }\n\t *        ]\n\t *      } );\n\t *    } );\n\t *\n\t *  @example\n\t *    // Using `columns`\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"columns\": [\n\t *          { \"orderData\": [ 0, 1 ] },\n\t *          { \"orderData\": [ 1, 0 ] },\n\t *          { \"orderData\": 2 },\n\t *          null,\n\t *          null\n\t *        ]\n\t *      } );\n\t *    } );\n\t */\n\t\"aDataSort\": null,\n\t\"iDataSort\": -1,\n\n\n\t/**\n\t * You can control the default ordering direction, and even alter the\n\t * behaviour of the sort handler (i.e. only allow ascending ordering etc)\n\t * using this parameter.\n\t *  @type array\n\t *  @default [ 'asc', 'desc' ]\n\t *\n\t *  @name DataTable.defaults.column.orderSequence\n\t *  @dtopt Columns\n\t *\n\t *  @example\n\t *    // Using `columnDefs`\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"columnDefs\": [\n\t *          { \"orderSequence\": [ \"asc\" ], \"targets\": [ 1 ] },\n\t *          { \"orderSequence\": [ \"desc\", \"asc\", \"asc\" ], \"targets\": [ 2 ] },\n\t *          { \"orderSequence\": [ \"desc\" ], \"targets\": [ 3 ] }\n\t *        ]\n\t *      } );\n\t *    } );\n\t *\n\t *  @example\n\t *    // Using `columns`\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"columns\": [\n\t *          null,\n\t *          { \"orderSequence\": [ \"asc\" ] },\n\t *          { \"orderSequence\": [ \"desc\", \"asc\", \"asc\" ] },\n\t *          { \"orderSequence\": [ \"desc\" ] },\n\t *          null\n\t *        ]\n\t *      } );\n\t *    } );\n\t */\n\t\"asSorting\": [ 'asc', 'desc' ],\n\n\n\t/**\n\t * Enable or disable filtering on the data in this column.\n\t *  @type boolean\n\t *  @default true\n\t *\n\t *  @name DataTable.defaults.column.searchable\n\t *  @dtopt Columns\n\t *\n\t *  @example\n\t *    // Using `columnDefs`\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"columnDefs\": [\n\t *          { \"searchable\": false, \"targets\": [ 0 ] }\n\t *        ] } );\n\t *    } );\n\t *\n\t *  @example\n\t *    // Using `columns`\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"columns\": [\n\t *          { \"searchable\": false },\n\t *          null,\n\t *          null,\n\t *          null,\n\t *          null\n\t *        ] } );\n\t *    } );\n\t */\n\t\"bSearchable\": true,\n\n\n\t/**\n\t * Enable or disable ordering on this column.\n\t *  @type boolean\n\t *  @default true\n\t *\n\t *  @name DataTable.defaults.column.orderable\n\t *  @dtopt Columns\n\t *\n\t *  @example\n\t *    // Using `columnDefs`\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"columnDefs\": [\n\t *          { \"orderable\": false, \"targets\": [ 0 ] }\n\t *        ] } );\n\t *    } );\n\t *\n\t *  @example\n\t *    // Using `columns`\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"columns\": [\n\t *          { \"orderable\": false },\n\t *          null,\n\t *          null,\n\t *          null,\n\t *          null\n\t *        ] } );\n\t *    } );\n\t */\n\t\"bSortable\": true,\n\n\n\t/**\n\t * Enable or disable the display of this column.\n\t *  @type boolean\n\t *  @default true\n\t *\n\t *  @name DataTable.defaults.column.visible\n\t *  @dtopt Columns\n\t *\n\t *  @example\n\t *    // Using `columnDefs`\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"columnDefs\": [\n\t *          { \"visible\": false, \"targets\": [ 0 ] }\n\t *        ] } );\n\t *    } );\n\t *\n\t *  @example\n\t *    // Using `columns`\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"columns\": [\n\t *          { \"visible\": false },\n\t *          null,\n\t *          null,\n\t *          null,\n\t *          null\n\t *        ] } );\n\t *    } );\n\t */\n\t\"bVisible\": true,\n\n\n\t/**\n\t * Developer definable function that is called whenever a cell is created (Ajax source,\n\t * etc) or processed for input (DOM source). This can be used as a compliment to mRender\n\t * allowing you to modify the DOM element (add background colour for example) when the\n\t * element is available.\n\t *  @type function\n\t *  @param {element} td The TD node that has been created\n\t *  @param {*} cellData The Data for the cell\n\t *  @param {array|object} rowData The data for the whole row\n\t *  @param {int} row The row index for the aoData data store\n\t *  @param {int} col The column index for aoColumns\n\t *\n\t *  @name DataTable.defaults.column.createdCell\n\t *  @dtopt Columns\n\t *\n\t *  @example\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"columnDefs\": [ {\n\t *          \"targets\": [3],\n\t *          \"createdCell\": function (td, cellData, rowData, row, col) {\n\t *            if ( cellData == \"1.7\" ) {\n\t *              $(td).css('color', 'blue')\n\t *            }\n\t *          }\n\t *        } ]\n\t *      });\n\t *    } );\n\t */\n\t\"fnCreatedCell\": null,\n\n\n\t/**\n\t * This parameter has been replaced by `data` in DataTables to ensure naming\n\t * consistency. `dataProp` can still be used, as there is backwards\n\t * compatibility in DataTables for this option, but it is strongly\n\t * recommended that you use `data` in preference to `dataProp`.\n\t *  @name DataTable.defaults.column.dataProp\n\t */\n\n\n\t/**\n\t * This property can be used to read data from any data source property,\n\t * including deeply nested objects / properties. `data` can be given in a\n\t * number of different ways which effect its behaviour:\n\t *\n\t * * `integer` - treated as an array index for the data source. This is the\n\t *   default that DataTables uses (incrementally increased for each column).\n\t * * `string` - read an object property from the data source. There are\n\t *   three 'special' options that can be used in the string to alter how\n\t *   DataTables reads the data from the source object:\n\t *    * `.` - Dotted Javascript notation. Just as you use a `.` in\n\t *      Javascript to read from nested objects, so to can the options\n\t *      specified in `data`. For example: `browser.version` or\n\t *      `browser.name`. If your object parameter name contains a period, use\n\t *      `\\\\` to escape it - i.e. `first\\\\.name`.\n\t *    * `[]` - Array notation. DataTables can automatically combine data\n\t *      from and array source, joining the data with the characters provided\n\t *      between the two brackets. For example: `name[, ]` would provide a\n\t *      comma-space separated list from the source array. If no characters\n\t *      are provided between the brackets, the original array source is\n\t *      returned.\n\t *    * `()` - Function notation. Adding `()` to the end of a parameter will\n\t *      execute a function of the name given. For example: `browser()` for a\n\t *      simple function on the data source, `browser.version()` for a\n\t *      function in a nested property or even `browser().version` to get an\n\t *      object property if the function called returns an object. Note that\n\t *      function notation is recommended for use in `render` rather than\n\t *      `data` as it is much simpler to use as a renderer.\n\t * * `null` - use the original data source for the row rather than plucking\n\t *   data directly from it. This action has effects on two other\n\t *   initialisation options:\n\t *    * `defaultContent` - When null is given as the `data` option and\n\t *      `defaultContent` is specified for the column, the value defined by\n\t *      `defaultContent` will be used for the cell.\n\t *    * `render` - When null is used for the `data` option and the `render`\n\t *      option is specified for the column, the whole data source for the\n\t *      row is used for the renderer.\n\t * * `function` - the function given will be executed whenever DataTables\n\t *   needs to set or get the data for a cell in the column. The function\n\t *   takes three parameters:\n\t *    * Parameters:\n\t *      * `{array|object}` The data source for the row\n\t *      * `{string}` The type call data requested - this will be 'set' when\n\t *        setting data or 'filter', 'display', 'type', 'sort' or undefined\n\t *        when gathering data. Note that when `undefined` is given for the\n\t *        type DataTables expects to get the raw data for the object back<\n\t *      * `{*}` Data to set when the second parameter is 'set'.\n\t *    * Return:\n\t *      * The return value from the function is not required when 'set' is\n\t *        the type of call, but otherwise the return is what will be used\n\t *        for the data requested.\n\t *\n\t * Note that `data` is a getter and setter option. If you just require\n\t * formatting of data for output, you will likely want to use `render` which\n\t * is simply a getter and thus simpler to use.\n\t *\n\t * Note that prior to DataTables 1.9.2 `data` was called `mDataProp`. The\n\t * name change reflects the flexibility of this property and is consistent\n\t * with the naming of mRender. If 'mDataProp' is given, then it will still\n\t * be used by DataTables, as it automatically maps the old name to the new\n\t * if required.\n\t *\n\t *  @type string|int|function|null\n\t *  @default null <i>Use automatically calculated column index</i>\n\t *\n\t *  @name DataTable.defaults.column.data\n\t *  @dtopt Columns\n\t *\n\t *  @example\n\t *    // Read table data from objects\n\t *    // JSON structure for each row:\n\t *    //   {\n\t *    //      \"engine\": {value},\n\t *    //      \"browser\": {value},\n\t *    //      \"platform\": {value},\n\t *    //      \"version\": {value},\n\t *    //      \"grade\": {value}\n\t *    //   }\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"ajaxSource\": \"sources/objects.txt\",\n\t *        \"columns\": [\n\t *          { \"data\": \"engine\" },\n\t *          { \"data\": \"browser\" },\n\t *          { \"data\": \"platform\" },\n\t *          { \"data\": \"version\" },\n\t *          { \"data\": \"grade\" }\n\t *        ]\n\t *      } );\n\t *    } );\n\t *\n\t *  @example\n\t *    // Read information from deeply nested objects\n\t *    // JSON structure for each row:\n\t *    //   {\n\t *    //      \"engine\": {value},\n\t *    //      \"browser\": {value},\n\t *    //      \"platform\": {\n\t *    //         \"inner\": {value}\n\t *    //      },\n\t *    //      \"details\": [\n\t *    //         {value}, {value}\n\t *    //      ]\n\t *    //   }\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"ajaxSource\": \"sources/deep.txt\",\n\t *        \"columns\": [\n\t *          { \"data\": \"engine\" },\n\t *          { \"data\": \"browser\" },\n\t *          { \"data\": \"platform.inner\" },\n\t *          { \"data\": \"details.0\" },\n\t *          { \"data\": \"details.1\" }\n\t *        ]\n\t *      } );\n\t *    } );\n\t *\n\t *  @example\n\t *    // Using `data` as a function to provide different information for\n\t *    // sorting, filtering and display. In this case, currency (price)\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"columnDefs\": [ {\n\t *          \"targets\": [ 0 ],\n\t *          \"data\": function ( source, type, val ) {\n\t *            if (type === 'set') {\n\t *              source.price = val;\n\t *              // Store the computed display and filter values for efficiency\n\t *              source.price_display = val==\"\" ? \"\" : \"$\"+numberFormat(val);\n\t *              source.price_filter  = val==\"\" ? \"\" : \"$\"+numberFormat(val)+\" \"+val;\n\t *              return;\n\t *            }\n\t *            else if (type === 'display') {\n\t *              return source.price_display;\n\t *            }\n\t *            else if (type === 'filter') {\n\t *              return source.price_filter;\n\t *            }\n\t *            // 'sort', 'type' and undefined all just use the integer\n\t *            return source.price;\n\t *          }\n\t *        } ]\n\t *      } );\n\t *    } );\n\t *\n\t *  @example\n\t *    // Using default content\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"columnDefs\": [ {\n\t *          \"targets\": [ 0 ],\n\t *          \"data\": null,\n\t *          \"defaultContent\": \"Click to edit\"\n\t *        } ]\n\t *      } );\n\t *    } );\n\t *\n\t *  @example\n\t *    // Using array notation - outputting a list from an array\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"columnDefs\": [ {\n\t *          \"targets\": [ 0 ],\n\t *          \"data\": \"name[, ]\"\n\t *        } ]\n\t *      } );\n\t *    } );\n\t *\n\t */\n\t\"mData\": null,\n\n\n\t/**\n\t * This property is the rendering partner to `data` and it is suggested that\n\t * when you want to manipulate data for display (including filtering,\n\t * sorting etc) without altering the underlying data for the table, use this\n\t * property. `render` can be considered to be the the read only companion to\n\t * `data` which is read / write (then as such more complex). Like `data`\n\t * this option can be given in a number of different ways to effect its\n\t * behaviour:\n\t *\n\t * * `integer` - treated as an array index for the data source. This is the\n\t *   default that DataTables uses (incrementally increased for each column).\n\t * * `string` - read an object property from the data source. There are\n\t *   three 'special' options that can be used in the string to alter how\n\t *   DataTables reads the data from the source object:\n\t *    * `.` - Dotted Javascript notation. Just as you use a `.` in\n\t *      Javascript to read from nested objects, so to can the options\n\t *      specified in `data`. For example: `browser.version` or\n\t *      `browser.name`. If your object parameter name contains a period, use\n\t *      `\\\\` to escape it - i.e. `first\\\\.name`.\n\t *    * `[]` - Array notation. DataTables can automatically combine data\n\t *      from and array source, joining the data with the characters provided\n\t *      between the two brackets. For example: `name[, ]` would provide a\n\t *      comma-space separated list from the source array. If no characters\n\t *      are provided between the brackets, the original array source is\n\t *      returned.\n\t *    * `()` - Function notation. Adding `()` to the end of a parameter will\n\t *      execute a function of the name given. For example: `browser()` for a\n\t *      simple function on the data source, `browser.version()` for a\n\t *      function in a nested property or even `browser().version` to get an\n\t *      object property if the function called returns an object.\n\t * * `object` - use different data for the different data types requested by\n\t *   DataTables ('filter', 'display', 'type' or 'sort'). The property names\n\t *   of the object is the data type the property refers to and the value can\n\t *   defined using an integer, string or function using the same rules as\n\t *   `render` normally does. Note that an `_` option _must_ be specified.\n\t *   This is the default value to use if you haven't specified a value for\n\t *   the data type requested by DataTables.\n\t * * `function` - the function given will be executed whenever DataTables\n\t *   needs to set or get the data for a cell in the column. The function\n\t *   takes three parameters:\n\t *    * Parameters:\n\t *      * {array|object} The data source for the row (based on `data`)\n\t *      * {string} The type call data requested - this will be 'filter',\n\t *        'display', 'type' or 'sort'.\n\t *      * {array|object} The full data source for the row (not based on\n\t *        `data`)\n\t *    * Return:\n\t *      * The return value from the function is what will be used for the\n\t *        data requested.\n\t *\n\t *  @type string|int|function|object|null\n\t *  @default null Use the data source value.\n\t *\n\t *  @name DataTable.defaults.column.render\n\t *  @dtopt Columns\n\t *\n\t *  @example\n\t *    // Create a comma separated list from an array of objects\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"ajaxSource\": \"sources/deep.txt\",\n\t *        \"columns\": [\n\t *          { \"data\": \"engine\" },\n\t *          { \"data\": \"browser\" },\n\t *          {\n\t *            \"data\": \"platform\",\n\t *            \"render\": \"[, ].name\"\n\t *          }\n\t *        ]\n\t *      } );\n\t *    } );\n\t *\n\t *  @example\n\t *    // Execute a function to obtain data\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"columnDefs\": [ {\n\t *          \"targets\": [ 0 ],\n\t *          \"data\": null, // Use the full data source object for the renderer's source\n\t *          \"render\": \"browserName()\"\n\t *        } ]\n\t *      } );\n\t *    } );\n\t *\n\t *  @example\n\t *    // As an object, extracting different data for the different types\n\t *    // This would be used with a data source such as:\n\t *    //   { \"phone\": 5552368, \"phone_filter\": \"5552368 555-2368\", \"phone_display\": \"555-2368\" }\n\t *    // Here the `phone` integer is used for sorting and type detection, while `phone_filter`\n\t *    // (which has both forms) is used for filtering for if a user inputs either format, while\n\t *    // the formatted phone number is the one that is shown in the table.\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"columnDefs\": [ {\n\t *          \"targets\": [ 0 ],\n\t *          \"data\": null, // Use the full data source object for the renderer's source\n\t *          \"render\": {\n\t *            \"_\": \"phone\",\n\t *            \"filter\": \"phone_filter\",\n\t *            \"display\": \"phone_display\"\n\t *          }\n\t *        } ]\n\t *      } );\n\t *    } );\n\t *\n\t *  @example\n\t *    // Use as a function to create a link from the data source\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"columnDefs\": [ {\n\t *          \"targets\": [ 0 ],\n\t *          \"data\": \"download_link\",\n\t *          \"render\": function ( data, type, full ) {\n\t *            return '<a href=\"'+data+'\">Download</a>';\n\t *          }\n\t *        } ]\n\t *      } );\n\t *    } );\n\t */\n\t\"mRender\": null,\n\n\n\t/**\n\t * Change the cell type created for the column - either TD cells or TH cells. This\n\t * can be useful as TH cells have semantic meaning in the table body, allowing them\n\t * to act as a header for a row (you may wish to add scope='row' to the TH elements).\n\t *  @type string\n\t *  @default td\n\t *\n\t *  @name DataTable.defaults.column.cellType\n\t *  @dtopt Columns\n\t *\n\t *  @example\n\t *    // Make the first column use TH cells\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"columnDefs\": [ {\n\t *          \"targets\": [ 0 ],\n\t *          \"cellType\": \"th\"\n\t *        } ]\n\t *      } );\n\t *    } );\n\t */\n\t\"sCellType\": \"td\",\n\n\n\t/**\n\t * Class to give to each cell in this column.\n\t *  @type string\n\t *  @default <i>Empty string</i>\n\t *\n\t *  @name DataTable.defaults.column.class\n\t *  @dtopt Columns\n\t *\n\t *  @example\n\t *    // Using `columnDefs`\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"columnDefs\": [\n\t *          { \"class\": \"my_class\", \"targets\": [ 0 ] }\n\t *        ]\n\t *      } );\n\t *    } );\n\t *\n\t *  @example\n\t *    // Using `columns`\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"columns\": [\n\t *          { \"class\": \"my_class\" },\n\t *          null,\n\t *          null,\n\t *          null,\n\t *          null\n\t *        ]\n\t *      } );\n\t *    } );\n\t */\n\t\"sClass\": \"\",\n\n\t/**\n\t * When DataTables calculates the column widths to assign to each column,\n\t * it finds the longest string in each column and then constructs a\n\t * temporary table and reads the widths from that. The problem with this\n\t * is that \"mmm\" is much wider then \"iiii\", but the latter is a longer\n\t * string - thus the calculation can go wrong (doing it properly and putting\n\t * it into an DOM object and measuring that is horribly(!) slow). Thus as\n\t * a \"work around\" we provide this option. It will append its value to the\n\t * text that is found to be the longest string for the column - i.e. padding.\n\t * Generally you shouldn't need this!\n\t *  @type string\n\t *  @default <i>Empty string<i>\n\t *\n\t *  @name DataTable.defaults.column.contentPadding\n\t *  @dtopt Columns\n\t *\n\t *  @example\n\t *    // Using `columns`\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"columns\": [\n\t *          null,\n\t *          null,\n\t *          null,\n\t *          {\n\t *            \"contentPadding\": \"mmm\"\n\t *          }\n\t *        ]\n\t *      } );\n\t *    } );\n\t */\n\t\"sContentPadding\": \"\",\n\n\n\t/**\n\t * Allows a default value to be given for a column's data, and will be used\n\t * whenever a null data source is encountered (this can be because `data`\n\t * is set to null, or because the data source itself is null).\n\t *  @type string\n\t *  @default null\n\t *\n\t *  @name DataTable.defaults.column.defaultContent\n\t *  @dtopt Columns\n\t *\n\t *  @example\n\t *    // Using `columnDefs`\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"columnDefs\": [\n\t *          {\n\t *            \"data\": null,\n\t *            \"defaultContent\": \"Edit\",\n\t *            \"targets\": [ -1 ]\n\t *          }\n\t *        ]\n\t *      } );\n\t *    } );\n\t *\n\t *  @example\n\t *    // Using `columns`\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"columns\": [\n\t *          null,\n\t *          null,\n\t *          null,\n\t *          {\n\t *            \"data\": null,\n\t *            \"defaultContent\": \"Edit\"\n\t *          }\n\t *        ]\n\t *      } );\n\t *    } );\n\t */\n\t\"sDefaultContent\": null,\n\n\n\t/**\n\t * This parameter is only used in DataTables' server-side processing. It can\n\t * be exceptionally useful to know what columns are being displayed on the\n\t * client side, and to map these to database fields. When defined, the names\n\t * also allow DataTables to reorder information from the server if it comes\n\t * back in an unexpected order (i.e. if you switch your columns around on the\n\t * client-side, your server-side code does not also need updating).\n\t *  @type string\n\t *  @default <i>Empty string</i>\n\t *\n\t *  @name DataTable.defaults.column.name\n\t *  @dtopt Columns\n\t *\n\t *  @example\n\t *    // Using `columnDefs`\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"columnDefs\": [\n\t *          { \"name\": \"engine\", \"targets\": [ 0 ] },\n\t *          { \"name\": \"browser\", \"targets\": [ 1 ] },\n\t *          { \"name\": \"platform\", \"targets\": [ 2 ] },\n\t *          { \"name\": \"version\", \"targets\": [ 3 ] },\n\t *          { \"name\": \"grade\", \"targets\": [ 4 ] }\n\t *        ]\n\t *      } );\n\t *    } );\n\t *\n\t *  @example\n\t *    // Using `columns`\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"columns\": [\n\t *          { \"name\": \"engine\" },\n\t *          { \"name\": \"browser\" },\n\t *          { \"name\": \"platform\" },\n\t *          { \"name\": \"version\" },\n\t *          { \"name\": \"grade\" }\n\t *        ]\n\t *      } );\n\t *    } );\n\t */\n\t\"sName\": \"\",\n\n\n\t/**\n\t * Defines a data source type for the ordering which can be used to read\n\t * real-time information from the table (updating the internally cached\n\t * version) prior to ordering. This allows ordering to occur on user\n\t * editable elements such as form inputs.\n\t *  @type string\n\t *  @default std\n\t *\n\t *  @name DataTable.defaults.column.orderDataType\n\t *  @dtopt Columns\n\t *\n\t *  @example\n\t *    // Using `columnDefs`\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"columnDefs\": [\n\t *          { \"orderDataType\": \"dom-text\", \"targets\": [ 2, 3 ] },\n\t *          { \"type\": \"numeric\", \"targets\": [ 3 ] },\n\t *          { \"orderDataType\": \"dom-select\", \"targets\": [ 4 ] },\n\t *          { \"orderDataType\": \"dom-checkbox\", \"targets\": [ 5 ] }\n\t *        ]\n\t *      } );\n\t *    } );\n\t *\n\t *  @example\n\t *    // Using `columns`\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"columns\": [\n\t *          null,\n\t *          null,\n\t *          { \"orderDataType\": \"dom-text\" },\n\t *          { \"orderDataType\": \"dom-text\", \"type\": \"numeric\" },\n\t *          { \"orderDataType\": \"dom-select\" },\n\t *          { \"orderDataType\": \"dom-checkbox\" }\n\t *        ]\n\t *      } );\n\t *    } );\n\t */\n\t\"sSortDataType\": \"std\",\n\n\n\t/**\n\t * The title of this column.\n\t *  @type string\n\t *  @default null <i>Derived from the 'TH' value for this column in the\n\t *    original HTML table.</i>\n\t *\n\t *  @name DataTable.defaults.column.title\n\t *  @dtopt Columns\n\t *\n\t *  @example\n\t *    // Using `columnDefs`\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"columnDefs\": [\n\t *          { \"title\": \"My column title\", \"targets\": [ 0 ] }\n\t *        ]\n\t *      } );\n\t *    } );\n\t *\n\t *  @example\n\t *    // Using `columns`\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"columns\": [\n\t *          { \"title\": \"My column title\" },\n\t *          null,\n\t *          null,\n\t *          null,\n\t *          null\n\t *        ]\n\t *      } );\n\t *    } );\n\t */\n\t\"sTitle\": null,\n\n\n\t/**\n\t * The type allows you to specify how the data for this column will be\n\t * ordered. Four types (string, numeric, date and html (which will strip\n\t * HTML tags before ordering)) are currently available. Note that only date\n\t * formats understood by Javascript's Date() object will be accepted as type\n\t * date. For example: \"Mar 26, 2008 5:03 PM\". May take the values: 'string',\n\t * 'numeric', 'date' or 'html' (by default). Further types can be adding\n\t * through plug-ins.\n\t *  @type string\n\t *  @default null <i>Auto-detected from raw data</i>\n\t *\n\t *  @name DataTable.defaults.column.type\n\t *  @dtopt Columns\n\t *\n\t *  @example\n\t *    // Using `columnDefs`\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"columnDefs\": [\n\t *          { \"type\": \"html\", \"targets\": [ 0 ] }\n\t *        ]\n\t *      } );\n\t *    } );\n\t *\n\t *  @example\n\t *    // Using `columns`\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"columns\": [\n\t *          { \"type\": \"html\" },\n\t *          null,\n\t *          null,\n\t *          null,\n\t *          null\n\t *        ]\n\t *      } );\n\t *    } );\n\t */\n\t\"sType\": null,\n\n\n\t/**\n\t * Defining the width of the column, this parameter may take any CSS value\n\t * (3em, 20px etc). DataTables applies 'smart' widths to columns which have not\n\t * been given a specific width through this interface ensuring that the table\n\t * remains readable.\n\t *  @type string\n\t *  @default null <i>Automatic</i>\n\t *\n\t *  @name DataTable.defaults.column.width\n\t *  @dtopt Columns\n\t *\n\t *  @example\n\t *    // Using `columnDefs`\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"columnDefs\": [\n\t *          { \"width\": \"20%\", \"targets\": [ 0 ] }\n\t *        ]\n\t *      } );\n\t *    } );\n\t *\n\t *  @example\n\t *    // Using `columns`\n\t *    $(document).ready( function() {\n\t *      $('#example').dataTable( {\n\t *        \"columns\": [\n\t *          { \"width\": \"20%\" },\n\t *          null,\n\t *          null,\n\t *          null,\n\t *          null\n\t *        ]\n\t *      } );\n\t *    } );\n\t */\n\t\"sWidth\": null\n};\n\n_fnHungarianMap( DataTable.defaults.column );\n\n\n\n/**\n * DataTables settings object - this holds all the information needed for a\n * given table, including configuration, data and current application of the\n * table options. DataTables does not have a single instance for each DataTable\n * with the settings attached to that instance, but rather instances of the\n * DataTable \"class\" are created on-the-fly as needed (typically by a\n * $().dataTable() call) and the settings object is then applied to that\n * instance.\n *\n * Note that this object is related to {@link DataTable.defaults} but this\n * one is the internal data store for DataTables's cache of columns. It should\n * NOT be manipulated outside of DataTables. Any configuration should be done\n * through the initialisation options.\n *  @namespace\n *  @todo Really should attach the settings object to individual instances so we\n *    don't need to create new instances on each $().dataTable() call (if the\n *    table already exists). It would also save passing oSettings around and\n *    into every single function. However, this is a very significant\n *    architecture change for DataTables and will almost certainly break\n *    backwards compatibility with older installations. This is something that\n *    will be done in 2.0.\n */\nDataTable.models.oSettings = {\n\t/**\n\t * Primary features of DataTables and their enablement state.\n\t *  @namespace\n\t */\n\t\"oFeatures\": {\n\n\t\t/**\n\t\t * Flag to say if DataTables should automatically try to calculate the\n\t\t * optimum table and columns widths (true) or not (false).\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type boolean\n\t\t */\n\t\t\"bAutoWidth\": null,\n\n\t\t/**\n\t\t * Delay the creation of TR and TD elements until they are actually\n\t\t * needed by a driven page draw. This can give a significant speed\n\t\t * increase for Ajax source and Javascript source data, but makes no\n\t\t * difference at all for DOM and server-side processing tables.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type boolean\n\t\t */\n\t\t\"bDeferRender\": null,\n\n\t\t/**\n\t\t * Enable filtering on the table or not. Note that if this is disabled\n\t\t * then there is no filtering at all on the table, including fnFilter.\n\t\t * To just remove the filtering input use sDom and remove the 'f' option.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type boolean\n\t\t */\n\t\t\"bFilter\": null,\n\n\t\t/**\n\t\t * Table information element (the 'Showing x of y records' div) enable\n\t\t * flag.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type boolean\n\t\t */\n\t\t\"bInfo\": null,\n\n\t\t/**\n\t\t * Present a user control allowing the end user to change the page size\n\t\t * when pagination is enabled.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type boolean\n\t\t */\n\t\t\"bLengthChange\": null,\n\n\t\t/**\n\t\t * Pagination enabled or not. Note that if this is disabled then length\n\t\t * changing must also be disabled.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type boolean\n\t\t */\n\t\t\"bPaginate\": null,\n\n\t\t/**\n\t\t * Processing indicator enable flag whenever DataTables is enacting a\n\t\t * user request - typically an Ajax request for server-side processing.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type boolean\n\t\t */\n\t\t\"bProcessing\": null,\n\n\t\t/**\n\t\t * Server-side processing enabled flag - when enabled DataTables will\n\t\t * get all data from the server for every draw - there is no filtering,\n\t\t * sorting or paging done on the client-side.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type boolean\n\t\t */\n\t\t\"bServerSide\": null,\n\n\t\t/**\n\t\t * Sorting enablement flag.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type boolean\n\t\t */\n\t\t\"bSort\": null,\n\n\t\t/**\n\t\t * Multi-column sorting\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type boolean\n\t\t */\n\t\t\"bSortMulti\": null,\n\n\t\t/**\n\t\t * Apply a class to the columns which are being sorted to provide a\n\t\t * visual highlight or not. This can slow things down when enabled since\n\t\t * there is a lot of DOM interaction.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type boolean\n\t\t */\n\t\t\"bSortClasses\": null,\n\n\t\t/**\n\t\t * State saving enablement flag.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type boolean\n\t\t */\n\t\t\"bStateSave\": null\n\t},\n\n\n\t/**\n\t * Scrolling settings for a table.\n\t *  @namespace\n\t */\n\t\"oScroll\": {\n\t\t/**\n\t\t * When the table is shorter in height than sScrollY, collapse the\n\t\t * table container down to the height of the table (when true).\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type boolean\n\t\t */\n\t\t\"bCollapse\": null,\n\n\t\t/**\n\t\t * Width of the scrollbar for the web-browser's platform. Calculated\n\t\t * during table initialisation.\n\t\t *  @type int\n\t\t *  @default 0\n\t\t */\n\t\t\"iBarWidth\": 0,\n\n\t\t/**\n\t\t * Viewport width for horizontal scrolling. Horizontal scrolling is\n\t\t * disabled if an empty string.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type string\n\t\t */\n\t\t\"sX\": null,\n\n\t\t/**\n\t\t * Width to expand the table to when using x-scrolling. Typically you\n\t\t * should not need to use this.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type string\n\t\t *  @deprecated\n\t\t */\n\t\t\"sXInner\": null,\n\n\t\t/**\n\t\t * Viewport height for vertical scrolling. Vertical scrolling is disabled\n\t\t * if an empty string.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type string\n\t\t */\n\t\t\"sY\": null\n\t},\n\n\t/**\n\t * Language information for the table.\n\t *  @namespace\n\t *  @extends DataTable.defaults.oLanguage\n\t */\n\t\"oLanguage\": {\n\t\t/**\n\t\t * Information callback function. See\n\t\t * {@link DataTable.defaults.fnInfoCallback}\n\t\t *  @type function\n\t\t *  @default null\n\t\t */\n\t\t\"fnInfoCallback\": null\n\t},\n\n\t/**\n\t * Browser support parameters\n\t *  @namespace\n\t */\n\t\"oBrowser\": {\n\t\t/**\n\t\t * Indicate if the browser incorrectly calculates width:100% inside a\n\t\t * scrolling element (IE6/7)\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t */\n\t\t\"bScrollOversize\": false,\n\n\t\t/**\n\t\t * Determine if the vertical scrollbar is on the right or left of the\n\t\t * scrolling container - needed for rtl language layout, although not\n\t\t * all browsers move the scrollbar (Safari).\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t */\n\t\t\"bScrollbarLeft\": false,\n\n\t\t/**\n\t\t * Flag for if `getBoundingClientRect` is fully supported or not\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t */\n\t\t\"bBounding\": false,\n\n\t\t/**\n\t\t * Browser scrollbar width\n\t\t *  @type integer\n\t\t *  @default 0\n\t\t */\n\t\t\"barWidth\": 0\n\t},\n\n\n\t\"ajax\": null,\n\n\n\t/**\n\t * Array referencing the nodes which are used for the features. The\n\t * parameters of this object match what is allowed by sDom - i.e.\n\t *   <ul>\n\t *     <li>'l' - Length changing</li>\n\t *     <li>'f' - Filtering input</li>\n\t *     <li>'t' - The table!</li>\n\t *     <li>'i' - Information</li>\n\t *     <li>'p' - Pagination</li>\n\t *     <li>'r' - pRocessing</li>\n\t *   </ul>\n\t *  @type array\n\t *  @default []\n\t */\n\t\"aanFeatures\": [],\n\n\t/**\n\t * Store data information - see {@link DataTable.models.oRow} for detailed\n\t * information.\n\t *  @type array\n\t *  @default []\n\t */\n\t\"aoData\": [],\n\n\t/**\n\t * Array of indexes which are in the current display (after filtering etc)\n\t *  @type array\n\t *  @default []\n\t */\n\t\"aiDisplay\": [],\n\n\t/**\n\t * Array of indexes for display - no filtering\n\t *  @type array\n\t *  @default []\n\t */\n\t\"aiDisplayMaster\": [],\n\n\t/**\n\t * Map of row ids to data indexes\n\t *  @type object\n\t *  @default {}\n\t */\n\t\"aIds\": {},\n\n\t/**\n\t * Store information about each column that is in use\n\t *  @type array\n\t *  @default []\n\t */\n\t\"aoColumns\": [],\n\n\t/**\n\t * Store information about the table's header\n\t *  @type array\n\t *  @default []\n\t */\n\t\"aoHeader\": [],\n\n\t/**\n\t * Store information about the table's footer\n\t *  @type array\n\t *  @default []\n\t */\n\t\"aoFooter\": [],\n\n\t/**\n\t * Store the applied global search information in case we want to force a\n\t * research or compare the old search to a new one.\n\t * Note that this parameter will be set by the initialisation routine. To\n\t * set a default use {@link DataTable.defaults}.\n\t *  @namespace\n\t *  @extends DataTable.models.oSearch\n\t */\n\t\"oPreviousSearch\": {},\n\n\t/**\n\t * Store the applied search for each column - see\n\t * {@link DataTable.models.oSearch} for the format that is used for the\n\t * filtering information for each column.\n\t *  @type array\n\t *  @default []\n\t */\n\t\"aoPreSearchCols\": [],\n\n\t/**\n\t * Sorting that is applied to the table. Note that the inner arrays are\n\t * used in the following manner:\n\t * <ul>\n\t *   <li>Index 0 - column number</li>\n\t *   <li>Index 1 - current sorting direction</li>\n\t * </ul>\n\t * Note that this parameter will be set by the initialisation routine. To\n\t * set a default use {@link DataTable.defaults}.\n\t *  @type array\n\t *  @todo These inner arrays should really be objects\n\t */\n\t\"aaSorting\": null,\n\n\t/**\n\t * Sorting that is always applied to the table (i.e. prefixed in front of\n\t * aaSorting).\n\t * Note that this parameter will be set by the initialisation routine. To\n\t * set a default use {@link DataTable.defaults}.\n\t *  @type array\n\t *  @default []\n\t */\n\t\"aaSortingFixed\": [],\n\n\t/**\n\t * Classes to use for the striping of a table.\n\t * Note that this parameter will be set by the initialisation routine. To\n\t * set a default use {@link DataTable.defaults}.\n\t *  @type array\n\t *  @default []\n\t */\n\t\"asStripeClasses\": null,\n\n\t/**\n\t * If restoring a table - we should restore its striping classes as well\n\t *  @type array\n\t *  @default []\n\t */\n\t\"asDestroyStripes\": [],\n\n\t/**\n\t * If restoring a table - we should restore its width\n\t *  @type int\n\t *  @default 0\n\t */\n\t\"sDestroyWidth\": 0,\n\n\t/**\n\t * Callback functions array for every time a row is inserted (i.e. on a draw).\n\t *  @type array\n\t *  @default []\n\t */\n\t\"aoRowCallback\": [],\n\n\t/**\n\t * Callback functions for the header on each draw.\n\t *  @type array\n\t *  @default []\n\t */\n\t\"aoHeaderCallback\": [],\n\n\t/**\n\t * Callback function for the footer on each draw.\n\t *  @type array\n\t *  @default []\n\t */\n\t\"aoFooterCallback\": [],\n\n\t/**\n\t * Array of callback functions for draw callback functions\n\t *  @type array\n\t *  @default []\n\t */\n\t\"aoDrawCallback\": [],\n\n\t/**\n\t * Array of callback functions for row created function\n\t *  @type array\n\t *  @default []\n\t */\n\t\"aoRowCreatedCallback\": [],\n\n\t/**\n\t * Callback functions for just before the table is redrawn. A return of\n\t * false will be used to cancel the draw.\n\t *  @type array\n\t *  @default []\n\t */\n\t\"aoPreDrawCallback\": [],\n\n\t/**\n\t * Callback functions for when the table has been initialised.\n\t *  @type array\n\t *  @default []\n\t */\n\t\"aoInitComplete\": [],\n\n\n\t/**\n\t * Callbacks for modifying the settings to be stored for state saving, prior to\n\t * saving state.\n\t *  @type array\n\t *  @default []\n\t */\n\t\"aoStateSaveParams\": [],\n\n\t/**\n\t * Callbacks for modifying the settings that have been stored for state saving\n\t * prior to using the stored values to restore the state.\n\t *  @type array\n\t *  @default []\n\t */\n\t\"aoStateLoadParams\": [],\n\n\t/**\n\t * Callbacks for operating on the settings object once the saved state has been\n\t * loaded\n\t *  @type array\n\t *  @default []\n\t */\n\t\"aoStateLoaded\": [],\n\n\t/**\n\t * Cache the table ID for quick access\n\t *  @type string\n\t *  @default <i>Empty string</i>\n\t */\n\t\"sTableId\": \"\",\n\n\t/**\n\t * The TABLE node for the main table\n\t *  @type node\n\t *  @default null\n\t */\n\t\"nTable\": null,\n\n\t/**\n\t * Permanent ref to the thead element\n\t *  @type node\n\t *  @default null\n\t */\n\t\"nTHead\": null,\n\n\t/**\n\t * Permanent ref to the tfoot element - if it exists\n\t *  @type node\n\t *  @default null\n\t */\n\t\"nTFoot\": null,\n\n\t/**\n\t * Permanent ref to the tbody element\n\t *  @type node\n\t *  @default null\n\t */\n\t\"nTBody\": null,\n\n\t/**\n\t * Cache the wrapper node (contains all DataTables controlled elements)\n\t *  @type node\n\t *  @default null\n\t */\n\t\"nTableWrapper\": null,\n\n\t/**\n\t * Indicate if when using server-side processing the loading of data\n\t * should be deferred until the second draw.\n\t * Note that this parameter will be set by the initialisation routine. To\n\t * set a default use {@link DataTable.defaults}.\n\t *  @type boolean\n\t *  @default false\n\t */\n\t\"bDeferLoading\": false,\n\n\t/**\n\t * Indicate if all required information has been read in\n\t *  @type boolean\n\t *  @default false\n\t */\n\t\"bInitialised\": false,\n\n\t/**\n\t * Information about open rows. Each object in the array has the parameters\n\t * 'nTr' and 'nParent'\n\t *  @type array\n\t *  @default []\n\t */\n\t\"aoOpenRows\": [],\n\n\t/**\n\t * Dictate the positioning of DataTables' control elements - see\n\t * {@link DataTable.model.oInit.sDom}.\n\t * Note that this parameter will be set by the initialisation routine. To\n\t * set a default use {@link DataTable.defaults}.\n\t *  @type string\n\t *  @default null\n\t */\n\t\"sDom\": null,\n\n\t/**\n\t * Search delay (in mS)\n\t *  @type integer\n\t *  @default null\n\t */\n\t\"searchDelay\": null,\n\n\t/**\n\t * Which type of pagination should be used.\n\t * Note that this parameter will be set by the initialisation routine. To\n\t * set a default use {@link DataTable.defaults}.\n\t *  @type string\n\t *  @default two_button\n\t */\n\t\"sPaginationType\": \"two_button\",\n\n\t/**\n\t * The state duration (for `stateSave`) in seconds.\n\t * Note that this parameter will be set by the initialisation routine. To\n\t * set a default use {@link DataTable.defaults}.\n\t *  @type int\n\t *  @default 0\n\t */\n\t\"iStateDuration\": 0,\n\n\t/**\n\t * Array of callback functions for state saving. Each array element is an\n\t * object with the following parameters:\n\t *   <ul>\n\t *     <li>function:fn - function to call. Takes two parameters, oSettings\n\t *       and the JSON string to save that has been thus far created. Returns\n\t *       a JSON string to be inserted into a json object\n\t *       (i.e. '\"param\": [ 0, 1, 2]')</li>\n\t *     <li>string:sName - name of callback</li>\n\t *   </ul>\n\t *  @type array\n\t *  @default []\n\t */\n\t\"aoStateSave\": [],\n\n\t/**\n\t * Array of callback functions for state loading. Each array element is an\n\t * object with the following parameters:\n\t *   <ul>\n\t *     <li>function:fn - function to call. Takes two parameters, oSettings\n\t *       and the object stored. May return false to cancel state loading</li>\n\t *     <li>string:sName - name of callback</li>\n\t *   </ul>\n\t *  @type array\n\t *  @default []\n\t */\n\t\"aoStateLoad\": [],\n\n\t/**\n\t * State that was saved. Useful for back reference\n\t *  @type object\n\t *  @default null\n\t */\n\t\"oSavedState\": null,\n\n\t/**\n\t * State that was loaded. Useful for back reference\n\t *  @type object\n\t *  @default null\n\t */\n\t\"oLoadedState\": null,\n\n\t/**\n\t * Source url for AJAX data for the table.\n\t * Note that this parameter will be set by the initialisation routine. To\n\t * set a default use {@link DataTable.defaults}.\n\t *  @type string\n\t *  @default null\n\t */\n\t\"sAjaxSource\": null,\n\n\t/**\n\t * Property from a given object from which to read the table data from. This\n\t * can be an empty string (when not server-side processing), in which case\n\t * it is  assumed an an array is given directly.\n\t * Note that this parameter will be set by the initialisation routine. To\n\t * set a default use {@link DataTable.defaults}.\n\t *  @type string\n\t */\n\t\"sAjaxDataProp\": null,\n\n\t/**\n\t * The last jQuery XHR object that was used for server-side data gathering.\n\t * This can be used for working with the XHR information in one of the\n\t * callbacks\n\t *  @type object\n\t *  @default null\n\t */\n\t\"jqXHR\": null,\n\n\t/**\n\t * JSON returned from the server in the last Ajax request\n\t *  @type object\n\t *  @default undefined\n\t */\n\t\"json\": undefined,\n\n\t/**\n\t * Data submitted as part of the last Ajax request\n\t *  @type object\n\t *  @default undefined\n\t */\n\t\"oAjaxData\": undefined,\n\n\t/**\n\t * Function to get the server-side data.\n\t * Note that this parameter will be set by the initialisation routine. To\n\t * set a default use {@link DataTable.defaults}.\n\t *  @type function\n\t */\n\t\"fnServerData\": null,\n\n\t/**\n\t * Functions which are called prior to sending an Ajax request so extra\n\t * parameters can easily be sent to the server\n\t *  @type array\n\t *  @default []\n\t */\n\t\"aoServerParams\": [],\n\n\t/**\n\t * Send the XHR HTTP method - GET or POST (could be PUT or DELETE if\n\t * required).\n\t * Note that this parameter will be set by the initialisation routine. To\n\t * set a default use {@link DataTable.defaults}.\n\t *  @type string\n\t */\n\t\"sServerMethod\": null,\n\n\t/**\n\t * Format numbers for display.\n\t * Note that this parameter will be set by the initialisation routine. To\n\t * set a default use {@link DataTable.defaults}.\n\t *  @type function\n\t */\n\t\"fnFormatNumber\": null,\n\n\t/**\n\t * List of options that can be used for the user selectable length menu.\n\t * Note that this parameter will be set by the initialisation routine. To\n\t * set a default use {@link DataTable.defaults}.\n\t *  @type array\n\t *  @default []\n\t */\n\t\"aLengthMenu\": null,\n\n\t/**\n\t * Counter for the draws that the table does. Also used as a tracker for\n\t * server-side processing\n\t *  @type int\n\t *  @default 0\n\t */\n\t\"iDraw\": 0,\n\n\t/**\n\t * Indicate if a redraw is being done - useful for Ajax\n\t *  @type boolean\n\t *  @default false\n\t */\n\t\"bDrawing\": false,\n\n\t/**\n\t * Draw index (iDraw) of the last error when parsing the returned data\n\t *  @type int\n\t *  @default -1\n\t */\n\t\"iDrawError\": -1,\n\n\t/**\n\t * Paging display length\n\t *  @type int\n\t *  @default 10\n\t */\n\t\"_iDisplayLength\": 10,\n\n\t/**\n\t * Paging start point - aiDisplay index\n\t *  @type int\n\t *  @default 0\n\t */\n\t\"_iDisplayStart\": 0,\n\n\t/**\n\t * Server-side processing - number of records in the result set\n\t * (i.e. before filtering), Use fnRecordsTotal rather than\n\t * this property to get the value of the number of records, regardless of\n\t * the server-side processing setting.\n\t *  @type int\n\t *  @default 0\n\t *  @private\n\t */\n\t\"_iRecordsTotal\": 0,\n\n\t/**\n\t * Server-side processing - number of records in the current display set\n\t * (i.e. after filtering). Use fnRecordsDisplay rather than\n\t * this property to get the value of the number of records, regardless of\n\t * the server-side processing setting.\n\t *  @type boolean\n\t *  @default 0\n\t *  @private\n\t */\n\t\"_iRecordsDisplay\": 0,\n\n\t/**\n\t * The classes to use for the table\n\t *  @type object\n\t *  @default {}\n\t */\n\t\"oClasses\": {},\n\n\t/**\n\t * Flag attached to the settings object so you can check in the draw\n\t * callback if filtering has been done in the draw. Deprecated in favour of\n\t * events.\n\t *  @type boolean\n\t *  @default false\n\t *  @deprecated\n\t */\n\t\"bFiltered\": false,\n\n\t/**\n\t * Flag attached to the settings object so you can check in the draw\n\t * callback if sorting has been done in the draw. Deprecated in favour of\n\t * events.\n\t *  @type boolean\n\t *  @default false\n\t *  @deprecated\n\t */\n\t\"bSorted\": false,\n\n\t/**\n\t * Indicate that if multiple rows are in the header and there is more than\n\t * one unique cell per column, if the top one (true) or bottom one (false)\n\t * should be used for sorting / title by DataTables.\n\t * Note that this parameter will be set by the initialisation routine. To\n\t * set a default use {@link DataTable.defaults}.\n\t *  @type boolean\n\t */\n\t\"bSortCellsTop\": null,\n\n\t/**\n\t * Initialisation object that is used for the table\n\t *  @type object\n\t *  @default null\n\t */\n\t\"oInit\": null,\n\n\t/**\n\t * Destroy callback functions - for plug-ins to attach themselves to the\n\t * destroy so they can clean up markup and events.\n\t *  @type array\n\t *  @default []\n\t */\n\t\"aoDestroyCallback\": [],\n\n\n\t/**\n\t * Get the number of records in the current record set, before filtering\n\t *  @type function\n\t */\n\t\"fnRecordsTotal\": function ()\n\t{\n\t\treturn _fnDataSource( this ) == 'ssp' ?\n\t\t\tthis._iRecordsTotal * 1 :\n\t\t\tthis.aiDisplayMaster.length;\n\t},\n\n\t/**\n\t * Get the number of records in the current record set, after filtering\n\t *  @type function\n\t */\n\t\"fnRecordsDisplay\": function ()\n\t{\n\t\treturn _fnDataSource( this ) == 'ssp' ?\n\t\t\tthis._iRecordsDisplay * 1 :\n\t\t\tthis.aiDisplay.length;\n\t},\n\n\t/**\n\t * Get the display end point - aiDisplay index\n\t *  @type function\n\t */\n\t\"fnDisplayEnd\": function ()\n\t{\n\t\tvar\n\t\t\tlen      = this._iDisplayLength,\n\t\t\tstart    = this._iDisplayStart,\n\t\t\tcalc     = start + len,\n\t\t\trecords  = this.aiDisplay.length,\n\t\t\tfeatures = this.oFeatures,\n\t\t\tpaginate = features.bPaginate;\n\n\t\tif ( features.bServerSide ) {\n\t\t\treturn paginate === false || len === -1 ?\n\t\t\t\tstart + records :\n\t\t\t\tMath.min( start+len, this._iRecordsDisplay );\n\t\t}\n\t\telse {\n\t\t\treturn ! paginate || calc>records || len===-1 ?\n\t\t\t\trecords :\n\t\t\t\tcalc;\n\t\t}\n\t},\n\n\t/**\n\t * The DataTables object for this table\n\t *  @type object\n\t *  @default null\n\t */\n\t\"oInstance\": null,\n\n\t/**\n\t * Unique identifier for each instance of the DataTables object. If there\n\t * is an ID on the table node, then it takes that value, otherwise an\n\t * incrementing internal counter is used.\n\t *  @type string\n\t *  @default null\n\t */\n\t\"sInstance\": null,\n\n\t/**\n\t * tabindex attribute value that is added to DataTables control elements, allowing\n\t * keyboard navigation of the table and its controls.\n\t */\n\t\"iTabIndex\": 0,\n\n\t/**\n\t * DIV container for the footer scrolling table if scrolling\n\t */\n\t\"nScrollHead\": null,\n\n\t/**\n\t * DIV container for the footer scrolling table if scrolling\n\t */\n\t\"nScrollFoot\": null,\n\n\t/**\n\t * Last applied sort\n\t *  @type array\n\t *  @default []\n\t */\n\t\"aLastSort\": [],\n\n\t/**\n\t * Stored plug-in instances\n\t *  @type object\n\t *  @default {}\n\t */\n\t\"oPlugins\": {},\n\n\t/**\n\t * Function used to get a row's id from the row's data\n\t *  @type function\n\t *  @default null\n\t */\n\t\"rowIdFn\": null,\n\n\t/**\n\t * Data location where to store a row's id\n\t *  @type string\n\t *  @default null\n\t */\n\t\"rowId\": null\n};\n\n/**\n * Extension object for DataTables that is used to provide all extension\n * options.\n *\n * Note that the `DataTable.ext` object is available through\n * `jQuery.fn.dataTable.ext` where it may be accessed and manipulated. It is\n * also aliased to `jQuery.fn.dataTableExt` for historic reasons.\n *  @namespace\n *  @extends DataTable.models.ext\n */\n\n\n/**\n * DataTables extensions\n * \n * This namespace acts as a collection area for plug-ins that can be used to\n * extend DataTables capabilities. Indeed many of the build in methods\n * use this method to provide their own capabilities (sorting methods for\n * example).\n *\n * Note that this namespace is aliased to `jQuery.fn.dataTableExt` for legacy\n * reasons\n *\n *  @namespace\n */\nDataTable.ext = _ext = {\n\t/**\n\t * Buttons. For use with the Buttons extension for DataTables. This is\n\t * defined here so other extensions can define buttons regardless of load\n\t * order. It is _not_ used by DataTables core.\n\t *\n\t *  @type object\n\t *  @default {}\n\t */\n\tbuttons: {},\n\n\n\t/**\n\t * Element class names\n\t *\n\t *  @type object\n\t *  @default {}\n\t */\n\tclasses: {},\n\n\n\t/**\n\t * DataTables build type (expanded by the download builder)\n\t *\n\t *  @type string\n\t */\n\tbuilder: \"-source-\",\n\n\n\t/**\n\t * Error reporting.\n\t * \n\t * How should DataTables report an error. Can take the value 'alert',\n\t * 'throw', 'none' or a function.\n\t *\n\t *  @type string|function\n\t *  @default alert\n\t */\n\terrMode: \"alert\",\n\n\n\t/**\n\t * Feature plug-ins.\n\t * \n\t * This is an array of objects which describe the feature plug-ins that are\n\t * available to DataTables. These feature plug-ins are then available for\n\t * use through the `dom` initialisation option.\n\t * \n\t * Each feature plug-in is described by an object which must have the\n\t * following properties:\n\t * \n\t * * `fnInit` - function that is used to initialise the plug-in,\n\t * * `cFeature` - a character so the feature can be enabled by the `dom`\n\t *   instillation option. This is case sensitive.\n\t *\n\t * The `fnInit` function has the following input parameters:\n\t *\n\t * 1. `{object}` DataTables settings object: see\n\t *    {@link DataTable.models.oSettings}\n\t *\n\t * And the following return is expected:\n\t * \n\t * * {node|null} The element which contains your feature. Note that the\n\t *   return may also be void if your plug-in does not require to inject any\n\t *   DOM elements into DataTables control (`dom`) - for example this might\n\t *   be useful when developing a plug-in which allows table control via\n\t *   keyboard entry\n\t *\n\t *  @type array\n\t *\n\t *  @example\n\t *    $.fn.dataTable.ext.features.push( {\n\t *      \"fnInit\": function( oSettings ) {\n\t *        return new TableTools( { \"oDTSettings\": oSettings } );\n\t *      },\n\t *      \"cFeature\": \"T\"\n\t *    } );\n\t */\n\tfeature: [],\n\n\n\t/**\n\t * Row searching.\n\t * \n\t * This method of searching is complimentary to the default type based\n\t * searching, and a lot more comprehensive as it allows you complete control\n\t * over the searching logic. Each element in this array is a function\n\t * (parameters described below) that is called for every row in the table,\n\t * and your logic decides if it should be included in the searching data set\n\t * or not.\n\t *\n\t * Searching functions have the following input parameters:\n\t *\n\t * 1. `{object}` DataTables settings object: see\n\t *    {@link DataTable.models.oSettings}\n\t * 2. `{array|object}` Data for the row to be processed (same as the\n\t *    original format that was passed in as the data source, or an array\n\t *    from a DOM data source\n\t * 3. `{int}` Row index ({@link DataTable.models.oSettings.aoData}), which\n\t *    can be useful to retrieve the `TR` element if you need DOM interaction.\n\t *\n\t * And the following return is expected:\n\t *\n\t * * {boolean} Include the row in the searched result set (true) or not\n\t *   (false)\n\t *\n\t * Note that as with the main search ability in DataTables, technically this\n\t * is \"filtering\", since it is subtractive. However, for consistency in\n\t * naming we call it searching here.\n\t *\n\t *  @type array\n\t *  @default []\n\t *\n\t *  @example\n\t *    // The following example shows custom search being applied to the\n\t *    // fourth column (i.e. the data[3] index) based on two input values\n\t *    // from the end-user, matching the data in a certain range.\n\t *    $.fn.dataTable.ext.search.push(\n\t *      function( settings, data, dataIndex ) {\n\t *        var min = document.getElementById('min').value * 1;\n\t *        var max = document.getElementById('max').value * 1;\n\t *        var version = data[3] == \"-\" ? 0 : data[3]*1;\n\t *\n\t *        if ( min == \"\" && max == \"\" ) {\n\t *          return true;\n\t *        }\n\t *        else if ( min == \"\" && version < max ) {\n\t *          return true;\n\t *        }\n\t *        else if ( min < version && \"\" == max ) {\n\t *          return true;\n\t *        }\n\t *        else if ( min < version && version < max ) {\n\t *          return true;\n\t *        }\n\t *        return false;\n\t *      }\n\t *    );\n\t */\n\tsearch: [],\n\n\n\t/**\n\t * Selector extensions\n\t *\n\t * The `selector` option can be used to extend the options available for the\n\t * selector modifier options (`selector-modifier` object data type) that\n\t * each of the three built in selector types offer (row, column and cell +\n\t * their plural counterparts). For example the Select extension uses this\n\t * mechanism to provide an option to select only rows, columns and cells\n\t * that have been marked as selected by the end user (`{selected: true}`),\n\t * which can be used in conjunction with the existing built in selector\n\t * options.\n\t *\n\t * Each property is an array to which functions can be pushed. The functions\n\t * take three attributes:\n\t *\n\t * * Settings object for the host table\n\t * * Options object (`selector-modifier` object type)\n\t * * Array of selected item indexes\n\t *\n\t * The return is an array of the resulting item indexes after the custom\n\t * selector has been applied.\n\t *\n\t *  @type object\n\t */\n\tselector: {\n\t\tcell: [],\n\t\tcolumn: [],\n\t\trow: []\n\t},\n\n\n\t/**\n\t * Internal functions, exposed for used in plug-ins.\n\t * \n\t * Please note that you should not need to use the internal methods for\n\t * anything other than a plug-in (and even then, try to avoid if possible).\n\t * The internal function may change between releases.\n\t *\n\t *  @type object\n\t *  @default {}\n\t */\n\tinternal: {},\n\n\n\t/**\n\t * Legacy configuration options. Enable and disable legacy options that\n\t * are available in DataTables.\n\t *\n\t *  @type object\n\t */\n\tlegacy: {\n\t\t/**\n\t\t * Enable / disable DataTables 1.9 compatible server-side processing\n\t\t * requests\n\t\t *\n\t\t *  @type boolean\n\t\t *  @default null\n\t\t */\n\t\tajax: null\n\t},\n\n\n\t/**\n\t * Pagination plug-in methods.\n\t * \n\t * Each entry in this object is a function and defines which buttons should\n\t * be shown by the pagination rendering method that is used for the table:\n\t * {@link DataTable.ext.renderer.pageButton}. The renderer addresses how the\n\t * buttons are displayed in the document, while the functions here tell it\n\t * what buttons to display. This is done by returning an array of button\n\t * descriptions (what each button will do).\n\t *\n\t * Pagination types (the four built in options and any additional plug-in\n\t * options defined here) can be used through the `paginationType`\n\t * initialisation parameter.\n\t *\n\t * The functions defined take two parameters:\n\t *\n\t * 1. `{int} page` The current page index\n\t * 2. `{int} pages` The number of pages in the table\n\t *\n\t * Each function is expected to return an array where each element of the\n\t * array can be one of:\n\t *\n\t * * `first` - Jump to first page when activated\n\t * * `last` - Jump to last page when activated\n\t * * `previous` - Show previous page when activated\n\t * * `next` - Show next page when activated\n\t * * `{int}` - Show page of the index given\n\t * * `{array}` - A nested array containing the above elements to add a\n\t *   containing 'DIV' element (might be useful for styling).\n\t *\n\t * Note that DataTables v1.9- used this object slightly differently whereby\n\t * an object with two functions would be defined for each plug-in. That\n\t * ability is still supported by DataTables 1.10+ to provide backwards\n\t * compatibility, but this option of use is now decremented and no longer\n\t * documented in DataTables 1.10+.\n\t *\n\t *  @type object\n\t *  @default {}\n\t *\n\t *  @example\n\t *    // Show previous, next and current page buttons only\n\t *    $.fn.dataTableExt.oPagination.current = function ( page, pages ) {\n\t *      return [ 'previous', page, 'next' ];\n\t *    };\n\t */\n\tpager: {},\n\n\n\trenderer: {\n\t\tpageButton: {},\n\t\theader: {}\n\t},\n\n\n\t/**\n\t * Ordering plug-ins - custom data source\n\t * \n\t * The extension options for ordering of data available here is complimentary\n\t * to the default type based ordering that DataTables typically uses. It\n\t * allows much greater control over the the data that is being used to\n\t * order a column, but is necessarily therefore more complex.\n\t * \n\t * This type of ordering is useful if you want to do ordering based on data\n\t * live from the DOM (for example the contents of an 'input' element) rather\n\t * than just the static string that DataTables knows of.\n\t * \n\t * The way these plug-ins work is that you create an array of the values you\n\t * wish to be ordering for the column in question and then return that\n\t * array. The data in the array much be in the index order of the rows in\n\t * the table (not the currently ordering order!). Which order data gathering\n\t * function is run here depends on the `dt-init columns.orderDataType`\n\t * parameter that is used for the column (if any).\n\t *\n\t * The functions defined take two parameters:\n\t *\n\t * 1. `{object}` DataTables settings object: see\n\t *    {@link DataTable.models.oSettings}\n\t * 2. `{int}` Target column index\n\t *\n\t * Each function is expected to return an array:\n\t *\n\t * * `{array}` Data for the column to be ordering upon\n\t *\n\t *  @type array\n\t *\n\t *  @example\n\t *    // Ordering using `input` node values\n\t *    $.fn.dataTable.ext.order['dom-text'] = function  ( settings, col )\n\t *    {\n\t *      return this.api().column( col, {order:'index'} ).nodes().map( function ( td, i ) {\n\t *        return $('input', td).val();\n\t *      } );\n\t *    }\n\t */\n\torder: {},\n\n\n\t/**\n\t * Type based plug-ins.\n\t *\n\t * Each column in DataTables has a type assigned to it, either by automatic\n\t * detection or by direct assignment using the `type` option for the column.\n\t * The type of a column will effect how it is ordering and search (plug-ins\n\t * can also make use of the column type if required).\n\t *\n\t * @namespace\n\t */\n\ttype: {\n\t\t/**\n\t\t * Type detection functions.\n\t\t *\n\t\t * The functions defined in this object are used to automatically detect\n\t\t * a column's type, making initialisation of DataTables super easy, even\n\t\t * when complex data is in the table.\n\t\t *\n\t\t * The functions defined take two parameters:\n\t\t *\n\t     *  1. `{*}` Data from the column cell to be analysed\n\t     *  2. `{settings}` DataTables settings object. This can be used to\n\t     *     perform context specific type detection - for example detection\n\t     *     based on language settings such as using a comma for a decimal\n\t     *     place. Generally speaking the options from the settings will not\n\t     *     be required\n\t\t *\n\t\t * Each function is expected to return:\n\t\t *\n\t\t * * `{string|null}` Data type detected, or null if unknown (and thus\n\t\t *   pass it on to the other type detection functions.\n\t\t *\n\t\t *  @type array\n\t\t *\n\t\t *  @example\n\t\t *    // Currency type detection plug-in:\n\t\t *    $.fn.dataTable.ext.type.detect.push(\n\t\t *      function ( data, settings ) {\n\t\t *        // Check the numeric part\n\t\t *        if ( ! data.substring(1).match(/[0-9]/) ) {\n\t\t *          return null;\n\t\t *        }\n\t\t *\n\t\t *        // Check prefixed by currency\n\t\t *        if ( data.charAt(0) == '$' || data.charAt(0) == '&pound;' ) {\n\t\t *          return 'currency';\n\t\t *        }\n\t\t *        return null;\n\t\t *      }\n\t\t *    );\n\t\t */\n\t\tdetect: [],\n\n\n\t\t/**\n\t\t * Type based search formatting.\n\t\t *\n\t\t * The type based searching functions can be used to pre-format the\n\t\t * data to be search on. For example, it can be used to strip HTML\n\t\t * tags or to de-format telephone numbers for numeric only searching.\n\t\t *\n\t\t * Note that is a search is not defined for a column of a given type,\n\t\t * no search formatting will be performed.\n\t\t * \n\t\t * Pre-processing of searching data plug-ins - When you assign the sType\n\t\t * for a column (or have it automatically detected for you by DataTables\n\t\t * or a type detection plug-in), you will typically be using this for\n\t\t * custom sorting, but it can also be used to provide custom searching\n\t\t * by allowing you to pre-processing the data and returning the data in\n\t\t * the format that should be searched upon. This is done by adding\n\t\t * functions this object with a parameter name which matches the sType\n\t\t * for that target column. This is the corollary of <i>afnSortData</i>\n\t\t * for searching data.\n\t\t *\n\t\t * The functions defined take a single parameter:\n\t\t *\n\t     *  1. `{*}` Data from the column cell to be prepared for searching\n\t\t *\n\t\t * Each function is expected to return:\n\t\t *\n\t\t * * `{string|null}` Formatted string that will be used for the searching.\n\t\t *\n\t\t *  @type object\n\t\t *  @default {}\n\t\t *\n\t\t *  @example\n\t\t *    $.fn.dataTable.ext.type.search['title-numeric'] = function ( d ) {\n\t\t *      return d.replace(/\\n/g,\" \").replace( /<.*?>/g, \"\" );\n\t\t *    }\n\t\t */\n\t\tsearch: {},\n\n\n\t\t/**\n\t\t * Type based ordering.\n\t\t *\n\t\t * The column type tells DataTables what ordering to apply to the table\n\t\t * when a column is sorted upon. The order for each type that is defined,\n\t\t * is defined by the functions available in this object.\n\t\t *\n\t\t * Each ordering option can be described by three properties added to\n\t\t * this object:\n\t\t *\n\t\t * * `{type}-pre` - Pre-formatting function\n\t\t * * `{type}-asc` - Ascending order function\n\t\t * * `{type}-desc` - Descending order function\n\t\t *\n\t\t * All three can be used together, only `{type}-pre` or only\n\t\t * `{type}-asc` and `{type}-desc` together. It is generally recommended\n\t\t * that only `{type}-pre` is used, as this provides the optimal\n\t\t * implementation in terms of speed, although the others are provided\n\t\t * for compatibility with existing Javascript sort functions.\n\t\t *\n\t\t * `{type}-pre`: Functions defined take a single parameter:\n\t\t *\n\t     *  1. `{*}` Data from the column cell to be prepared for ordering\n\t\t *\n\t\t * And return:\n\t\t *\n\t\t * * `{*}` Data to be sorted upon\n\t\t *\n\t\t * `{type}-asc` and `{type}-desc`: Functions are typical Javascript sort\n\t\t * functions, taking two parameters:\n\t\t *\n\t     *  1. `{*}` Data to compare to the second parameter\n\t     *  2. `{*}` Data to compare to the first parameter\n\t\t *\n\t\t * And returning:\n\t\t *\n\t\t * * `{*}` Ordering match: <0 if first parameter should be sorted lower\n\t\t *   than the second parameter, ===0 if the two parameters are equal and\n\t\t *   >0 if the first parameter should be sorted height than the second\n\t\t *   parameter.\n\t\t * \n\t\t *  @type object\n\t\t *  @default {}\n\t\t *\n\t\t *  @example\n\t\t *    // Numeric ordering of formatted numbers with a pre-formatter\n\t\t *    $.extend( $.fn.dataTable.ext.type.order, {\n\t\t *      \"string-pre\": function(x) {\n\t\t *        a = (a === \"-\" || a === \"\") ? 0 : a.replace( /[^\\d\\-\\.]/g, \"\" );\n\t\t *        return parseFloat( a );\n\t\t *      }\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    // Case-sensitive string ordering, with no pre-formatting method\n\t\t *    $.extend( $.fn.dataTable.ext.order, {\n\t\t *      \"string-case-asc\": function(x,y) {\n\t\t *        return ((x < y) ? -1 : ((x > y) ? 1 : 0));\n\t\t *      },\n\t\t *      \"string-case-desc\": function(x,y) {\n\t\t *        return ((x < y) ? 1 : ((x > y) ? -1 : 0));\n\t\t *      }\n\t\t *    } );\n\t\t */\n\t\torder: {}\n\t},\n\n\t/**\n\t * Unique DataTables instance counter\n\t *\n\t * @type int\n\t * @private\n\t */\n\t_unique: 0,\n\n\n\t//\n\t// Depreciated\n\t// The following properties are retained for backwards compatibility only.\n\t// The should not be used in new projects and will be removed in a future\n\t// version\n\t//\n\n\t/**\n\t * Version check function.\n\t *  @type function\n\t *  @depreciated Since 1.10\n\t */\n\tfnVersionCheck: DataTable.fnVersionCheck,\n\n\n\t/**\n\t * Index for what 'this' index API functions should use\n\t *  @type int\n\t *  @deprecated Since v1.10\n\t */\n\tiApiIndex: 0,\n\n\n\t/**\n\t * jQuery UI class container\n\t *  @type object\n\t *  @deprecated Since v1.10\n\t */\n\toJUIClasses: {},\n\n\n\t/**\n\t * Software version\n\t *  @type string\n\t *  @deprecated Since v1.10\n\t */\n\tsVersion: DataTable.version\n};\n\n\n//\n// Backwards compatibility. Alias to pre 1.10 Hungarian notation counter parts\n//\n$.extend( _ext, {\n\tafnFiltering: _ext.search,\n\taTypes:       _ext.type.detect,\n\tofnSearch:    _ext.type.search,\n\toSort:        _ext.type.order,\n\tafnSortData:  _ext.order,\n\taoFeatures:   _ext.feature,\n\toApi:         _ext.internal,\n\toStdClasses:  _ext.classes,\n\toPagination:  _ext.pager\n} );\n\n\n$.extend( DataTable.ext.classes, {\n\t\"sTable\": \"dataTable\",\n\t\"sNoFooter\": \"no-footer\",\n\n\t/* Paging buttons */\n\t\"sPageButton\": \"paginate_button\",\n\t\"sPageButtonActive\": \"current\",\n\t\"sPageButtonDisabled\": \"disabled\",\n\n\t/* Striping classes */\n\t\"sStripeOdd\": \"odd\",\n\t\"sStripeEven\": \"even\",\n\n\t/* Empty row */\n\t\"sRowEmpty\": \"dataTables_empty\",\n\n\t/* Features */\n\t\"sWrapper\": \"dataTables_wrapper\",\n\t\"sFilter\": \"dataTables_filter\",\n\t\"sInfo\": \"dataTables_info\",\n\t\"sPaging\": \"dataTables_paginate paging_\", /* Note that the type is postfixed */\n\t\"sLength\": \"dataTables_length\",\n\t\"sProcessing\": \"dataTables_processing\",\n\n\t/* Sorting */\n\t\"sSortAsc\": \"sorting_asc\",\n\t\"sSortDesc\": \"sorting_desc\",\n\t\"sSortable\": \"sorting\", /* Sortable in both directions */\n\t\"sSortableAsc\": \"sorting_desc_disabled\",\n\t\"sSortableDesc\": \"sorting_asc_disabled\",\n\t\"sSortableNone\": \"sorting_disabled\",\n\t\"sSortColumn\": \"sorting_\", /* Note that an int is postfixed for the sorting order */\n\n\t/* Filtering */\n\t\"sFilterInput\": \"\",\n\n\t/* Page length */\n\t\"sLengthSelect\": \"\",\n\n\t/* Scrolling */\n\t\"sScrollWrapper\": \"dataTables_scroll\",\n\t\"sScrollHead\": \"dataTables_scrollHead\",\n\t\"sScrollHeadInner\": \"dataTables_scrollHeadInner\",\n\t\"sScrollBody\": \"dataTables_scrollBody\",\n\t\"sScrollFoot\": \"dataTables_scrollFoot\",\n\t\"sScrollFootInner\": \"dataTables_scrollFootInner\",\n\n\t/* Misc */\n\t\"sHeaderTH\": \"\",\n\t\"sFooterTH\": \"\",\n\n\t// Deprecated\n\t\"sSortJUIAsc\": \"\",\n\t\"sSortJUIDesc\": \"\",\n\t\"sSortJUI\": \"\",\n\t\"sSortJUIAscAllowed\": \"\",\n\t\"sSortJUIDescAllowed\": \"\",\n\t\"sSortJUIWrapper\": \"\",\n\t\"sSortIcon\": \"\",\n\t\"sJUIHeader\": \"\",\n\t\"sJUIFooter\": \"\"\n} );\n\n\nvar extPagination = DataTable.ext.pager;\n\nfunction _numbers ( page, pages ) {\n\tvar\n\t\tnumbers = [],\n\t\tbuttons = extPagination.numbers_length,\n\t\thalf = Math.floor( buttons / 2 ),\n\t\ti = 1;\n\n\tif ( pages <= buttons ) {\n\t\tnumbers = _range( 0, pages );\n\t}\n\telse if ( page <= half ) {\n\t\tnumbers = _range( 0, buttons-2 );\n\t\tnumbers.push( 'ellipsis' );\n\t\tnumbers.push( pages-1 );\n\t}\n\telse if ( page >= pages - 1 - half ) {\n\t\tnumbers = _range( pages-(buttons-2), pages );\n\t\tnumbers.splice( 0, 0, 'ellipsis' ); // no unshift in ie6\n\t\tnumbers.splice( 0, 0, 0 );\n\t}\n\telse {\n\t\tnumbers = _range( page-half+2, page+half-1 );\n\t\tnumbers.push( 'ellipsis' );\n\t\tnumbers.push( pages-1 );\n\t\tnumbers.splice( 0, 0, 'ellipsis' );\n\t\tnumbers.splice( 0, 0, 0 );\n\t}\n\n\tnumbers.DT_el = 'span';\n\treturn numbers;\n}\n\n\n$.extend( extPagination, {\n\tsimple: function ( page, pages ) {\n\t\treturn [ 'previous', 'next' ];\n\t},\n\n\tfull: function ( page, pages ) {\n\t\treturn [  'first', 'previous', 'next', 'last' ];\n\t},\n\n\tnumbers: function ( page, pages ) {\n\t\treturn [ _numbers(page, pages) ];\n\t},\n\n\tsimple_numbers: function ( page, pages ) {\n\t\treturn [ 'previous', _numbers(page, pages), 'next' ];\n\t},\n\n\tfull_numbers: function ( page, pages ) {\n\t\treturn [ 'first', 'previous', _numbers(page, pages), 'next', 'last' ];\n\t},\n\t\n\tfirst_last_numbers: function (page, pages) {\n \t\treturn ['first', _numbers(page, pages), 'last'];\n \t},\n\n\t// For testing and plug-ins to use\n\t_numbers: _numbers,\n\n\t// Number of number buttons (including ellipsis) to show. _Must be odd!_\n\tnumbers_length: 7\n} );\n\n\n$.extend( true, DataTable.ext.renderer, {\n\tpageButton: {\n\t\t_: function ( settings, host, idx, buttons, page, pages ) {\n\t\t\tvar classes = settings.oClasses;\n\t\t\tvar lang = settings.oLanguage.oPaginate;\n\t\t\tvar aria = settings.oLanguage.oAria.paginate || {};\n\t\t\tvar btnDisplay, btnClass;\n\n\t\t\tvar attach = function( container, buttons ) {\n\t\t\t\tvar i, ien, node, button, tabIndex;\n\t\t\t\tvar disabledClass = classes.sPageButtonDisabled;\n\t\t\t\tvar clickHandler = function ( e ) {\n\t\t\t\t\t_fnPageChange( settings, e.data.action, true );\n\t\t\t\t};\n\n\t\t\t\tfor ( i=0, ien=buttons.length ; i<ien ; i++ ) {\n\t\t\t\t\tbutton = buttons[i];\n\n\t\t\t\t\tif ( Array.isArray( button ) ) {\n\t\t\t\t\t\tvar inner = $( '<'+(button.DT_el || 'div')+'/>' )\n\t\t\t\t\t\t\t.appendTo( container );\n\t\t\t\t\t\tattach( inner, button );\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tbtnDisplay = null;\n\t\t\t\t\t\tbtnClass = button;\n\t\t\t\t\t\ttabIndex = settings.iTabIndex;\n\n\t\t\t\t\t\tswitch ( button ) {\n\t\t\t\t\t\t\tcase 'ellipsis':\n\t\t\t\t\t\t\t\tcontainer.append('<span class=\"ellipsis\">&#x2026;</span>');\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 'first':\n\t\t\t\t\t\t\t\tbtnDisplay = lang.sFirst;\n\n\t\t\t\t\t\t\t\tif ( page === 0 ) {\n\t\t\t\t\t\t\t\t\ttabIndex = -1;\n\t\t\t\t\t\t\t\t\tbtnClass += ' ' + disabledClass;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 'previous':\n\t\t\t\t\t\t\t\tbtnDisplay = lang.sPrevious;\n\n\t\t\t\t\t\t\t\tif ( page === 0 ) {\n\t\t\t\t\t\t\t\t\ttabIndex = -1;\n\t\t\t\t\t\t\t\t\tbtnClass += ' ' + disabledClass;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 'next':\n\t\t\t\t\t\t\t\tbtnDisplay = lang.sNext;\n\n\t\t\t\t\t\t\t\tif ( pages === 0 || page === pages-1 ) {\n\t\t\t\t\t\t\t\t\ttabIndex = -1;\n\t\t\t\t\t\t\t\t\tbtnClass += ' ' + disabledClass;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 'last':\n\t\t\t\t\t\t\t\tbtnDisplay = lang.sLast;\n\n\t\t\t\t\t\t\t\tif ( pages === 0 || page === pages-1 ) {\n\t\t\t\t\t\t\t\t\ttabIndex = -1;\n\t\t\t\t\t\t\t\t\tbtnClass += ' ' + disabledClass;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tbtnDisplay = settings.fnFormatNumber( button + 1 );\n\t\t\t\t\t\t\t\tbtnClass = page === button ?\n\t\t\t\t\t\t\t\t\tclasses.sPageButtonActive : '';\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( btnDisplay !== null ) {\n\t\t\t\t\t\t\tvar tag = settings.oInit.pagingTag || 'a';\n\t\t\t\t\t\t\tvar disabled = btnClass.indexOf(disabledClass) !== -1;\n\t\t\n\n\t\t\t\t\t\t\tnode = $('<'+tag+'>', {\n\t\t\t\t\t\t\t\t\t'class': classes.sPageButton+' '+btnClass,\n\t\t\t\t\t\t\t\t\t'aria-controls': settings.sTableId,\n\t\t\t\t\t\t\t\t\t'aria-disabled': disabled ? 'true' : null,\n\t\t\t\t\t\t\t\t\t'aria-label': aria[ button ],\n\t\t\t\t\t\t\t\t\t'role': 'link',\n\t\t\t\t\t\t\t\t\t'aria-current': btnClass === classes.sPageButtonActive ? 'page' : null,\n\t\t\t\t\t\t\t\t\t'data-dt-idx': button,\n\t\t\t\t\t\t\t\t\t'tabindex': tabIndex,\n\t\t\t\t\t\t\t\t\t'id': idx === 0 && typeof button === 'string' ?\n\t\t\t\t\t\t\t\t\t\tsettings.sTableId +'_'+ button :\n\t\t\t\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t\t.html( btnDisplay )\n\t\t\t\t\t\t\t\t.appendTo( container );\n\n\t\t\t\t\t\t\t_fnBindAction(\n\t\t\t\t\t\t\t\tnode, {action: button}, clickHandler\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t// IE9 throws an 'unknown error' if document.activeElement is used\n\t\t\t// inside an iframe or frame. Try / catch the error. Not good for\n\t\t\t// accessibility, but neither are frames.\n\t\t\tvar activeEl;\n\n\t\t\ttry {\n\t\t\t\t// Because this approach is destroying and recreating the paging\n\t\t\t\t// elements, focus is lost on the select button which is bad for\n\t\t\t\t// accessibility. So we want to restore focus once the draw has\n\t\t\t\t// completed\n\t\t\t\tactiveEl = $(host).find(document.activeElement).data('dt-idx');\n\t\t\t}\n\t\t\tcatch (e) {}\n\n\t\t\tattach( $(host).empty(), buttons );\n\n\t\t\tif ( activeEl !== undefined ) {\n\t\t\t\t$(host).find( '[data-dt-idx='+activeEl+']' ).trigger('focus');\n\t\t\t}\n\t\t}\n\t}\n} );\n\n\n\n// Built in type detection. See model.ext.aTypes for information about\n// what is required from this methods.\n$.extend( DataTable.ext.type.detect, [\n\t// Plain numbers - first since V8 detects some plain numbers as dates\n\t// e.g. Date.parse('55') (but not all, e.g. Date.parse('22')...).\n\tfunction ( d, settings )\n\t{\n\t\tvar decimal = settings.oLanguage.sDecimal;\n\t\treturn _isNumber( d, decimal ) ? 'num'+decimal : null;\n\t},\n\n\t// Dates (only those recognised by the browser's Date.parse)\n\tfunction ( d, settings )\n\t{\n\t\t// V8 tries _very_ hard to make a string passed into `Date.parse()`\n\t\t// valid, so we need to use a regex to restrict date formats. Use a\n\t\t// plug-in for anything other than ISO8601 style strings\n\t\tif ( d && !(d instanceof Date) && ! _re_date.test(d) ) {\n\t\t\treturn null;\n\t\t}\n\t\tvar parsed = Date.parse(d);\n\t\treturn (parsed !== null && !isNaN(parsed)) || _empty(d) ? 'date' : null;\n\t},\n\n\t// Formatted numbers\n\tfunction ( d, settings )\n\t{\n\t\tvar decimal = settings.oLanguage.sDecimal;\n\t\treturn _isNumber( d, decimal, true ) ? 'num-fmt'+decimal : null;\n\t},\n\n\t// HTML numeric\n\tfunction ( d, settings )\n\t{\n\t\tvar decimal = settings.oLanguage.sDecimal;\n\t\treturn _htmlNumeric( d, decimal ) ? 'html-num'+decimal : null;\n\t},\n\n\t// HTML numeric, formatted\n\tfunction ( d, settings )\n\t{\n\t\tvar decimal = settings.oLanguage.sDecimal;\n\t\treturn _htmlNumeric( d, decimal, true ) ? 'html-num-fmt'+decimal : null;\n\t},\n\n\t// HTML (this is strict checking - there must be html)\n\tfunction ( d, settings )\n\t{\n\t\treturn _empty( d ) || (typeof d === 'string' && d.indexOf('<') !== -1) ?\n\t\t\t'html' : null;\n\t}\n] );\n\n\n\n// Filter formatting functions. See model.ext.ofnSearch for information about\n// what is required from these methods.\n// \n// Note that additional search methods are added for the html numbers and\n// html formatted numbers by `_addNumericSort()` when we know what the decimal\n// place is\n\n\n$.extend( DataTable.ext.type.search, {\n\thtml: function ( data ) {\n\t\treturn _empty(data) ?\n\t\t\tdata :\n\t\t\ttypeof data === 'string' ?\n\t\t\t\tdata\n\t\t\t\t\t.replace( _re_new_lines, \" \" )\n\t\t\t\t\t.replace( _re_html, \"\" ) :\n\t\t\t\t'';\n\t},\n\n\tstring: function ( data ) {\n\t\treturn _empty(data) ?\n\t\t\tdata :\n\t\t\ttypeof data === 'string' ?\n\t\t\t\tdata.replace( _re_new_lines, \" \" ) :\n\t\t\t\tdata;\n\t}\n} );\n\n\n\nvar __numericReplace = function ( d, decimalPlace, re1, re2 ) {\n\tif ( d !== 0 && (!d || d === '-') ) {\n\t\treturn -Infinity;\n\t}\n\t\n\tvar type = typeof d;\n\n\tif (type === 'number' || type === 'bigint') {\n\t\treturn d;\n\t}\n\n\t// If a decimal place other than `.` is used, it needs to be given to the\n\t// function so we can detect it and replace with a `.` which is the only\n\t// decimal place Javascript recognises - it is not locale aware.\n\tif ( decimalPlace ) {\n\t\td = _numToDecimal( d, decimalPlace );\n\t}\n\n\tif ( d.replace ) {\n\t\tif ( re1 ) {\n\t\t\td = d.replace( re1, '' );\n\t\t}\n\n\t\tif ( re2 ) {\n\t\t\td = d.replace( re2, '' );\n\t\t}\n\t}\n\n\treturn d * 1;\n};\n\n\n// Add the numeric 'deformatting' functions for sorting and search. This is done\n// in a function to provide an easy ability for the language options to add\n// additional methods if a non-period decimal place is used.\nfunction _addNumericSort ( decimalPlace ) {\n\t$.each(\n\t\t{\n\t\t\t// Plain numbers\n\t\t\t\"num\": function ( d ) {\n\t\t\t\treturn __numericReplace( d, decimalPlace );\n\t\t\t},\n\n\t\t\t// Formatted numbers\n\t\t\t\"num-fmt\": function ( d ) {\n\t\t\t\treturn __numericReplace( d, decimalPlace, _re_formatted_numeric );\n\t\t\t},\n\n\t\t\t// HTML numeric\n\t\t\t\"html-num\": function ( d ) {\n\t\t\t\treturn __numericReplace( d, decimalPlace, _re_html );\n\t\t\t},\n\n\t\t\t// HTML numeric, formatted\n\t\t\t\"html-num-fmt\": function ( d ) {\n\t\t\t\treturn __numericReplace( d, decimalPlace, _re_html, _re_formatted_numeric );\n\t\t\t}\n\t\t},\n\t\tfunction ( key, fn ) {\n\t\t\t// Add the ordering method\n\t\t\t_ext.type.order[ key+decimalPlace+'-pre' ] = fn;\n\n\t\t\t// For HTML types add a search formatter that will strip the HTML\n\t\t\tif ( key.match(/^html\\-/) ) {\n\t\t\t\t_ext.type.search[ key+decimalPlace ] = _ext.type.search.html;\n\t\t\t}\n\t\t}\n\t);\n}\n\n\n// Default sort methods\n$.extend( _ext.type.order, {\n\t// Dates\n\t\"date-pre\": function ( d ) {\n\t\tvar ts = Date.parse( d );\n\t\treturn isNaN(ts) ? -Infinity : ts;\n\t},\n\n\t// html\n\t\"html-pre\": function ( a ) {\n\t\treturn _empty(a) ?\n\t\t\t'' :\n\t\t\ta.replace ?\n\t\t\t\ta.replace( /<.*?>/g, \"\" ).toLowerCase() :\n\t\t\t\ta+'';\n\t},\n\n\t// string\n\t\"string-pre\": function ( a ) {\n\t\t// This is a little complex, but faster than always calling toString,\n\t\t// http://jsperf.com/tostring-v-check\n\t\treturn _empty(a) ?\n\t\t\t'' :\n\t\t\ttypeof a === 'string' ?\n\t\t\t\ta.toLowerCase() :\n\t\t\t\t! a.toString ?\n\t\t\t\t\t'' :\n\t\t\t\t\ta.toString();\n\t},\n\n\t// string-asc and -desc are retained only for compatibility with the old\n\t// sort methods\n\t\"string-asc\": function ( x, y ) {\n\t\treturn ((x < y) ? -1 : ((x > y) ? 1 : 0));\n\t},\n\n\t\"string-desc\": function ( x, y ) {\n\t\treturn ((x < y) ? 1 : ((x > y) ? -1 : 0));\n\t}\n} );\n\n\n// Numeric sorting types - order doesn't matter here\n_addNumericSort( '' );\n\n\n$.extend( true, DataTable.ext.renderer, {\n\theader: {\n\t\t_: function ( settings, cell, column, classes ) {\n\t\t\t// No additional mark-up required\n\t\t\t// Attach a sort listener to update on sort - note that using the\n\t\t\t// `DT` namespace will allow the event to be removed automatically\n\t\t\t// on destroy, while the `dt` namespaced event is the one we are\n\t\t\t// listening for\n\t\t\t$(settings.nTable).on( 'order.dt.DT', function ( e, ctx, sorting, columns ) {\n\t\t\t\tif ( settings !== ctx ) { // need to check this this is the host\n\t\t\t\t\treturn;               // table, not a nested one\n\t\t\t\t}\n\n\t\t\t\tvar colIdx = column.idx;\n\n\t\t\t\tcell\n\t\t\t\t\t.removeClass(\n\t\t\t\t\t\tclasses.sSortAsc +' '+\n\t\t\t\t\t\tclasses.sSortDesc\n\t\t\t\t\t)\n\t\t\t\t\t.addClass( columns[ colIdx ] == 'asc' ?\n\t\t\t\t\t\tclasses.sSortAsc : columns[ colIdx ] == 'desc' ?\n\t\t\t\t\t\t\tclasses.sSortDesc :\n\t\t\t\t\t\t\tcolumn.sSortingClass\n\t\t\t\t\t);\n\t\t\t} );\n\t\t},\n\n\t\tjqueryui: function ( settings, cell, column, classes ) {\n\t\t\t$('<div/>')\n\t\t\t\t.addClass( classes.sSortJUIWrapper )\n\t\t\t\t.append( cell.contents() )\n\t\t\t\t.append( $('<span/>')\n\t\t\t\t\t.addClass( classes.sSortIcon+' '+column.sSortingClassJUI )\n\t\t\t\t)\n\t\t\t\t.appendTo( cell );\n\n\t\t\t// Attach a sort listener to update on sort\n\t\t\t$(settings.nTable).on( 'order.dt.DT', function ( e, ctx, sorting, columns ) {\n\t\t\t\tif ( settings !== ctx ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar colIdx = column.idx;\n\n\t\t\t\tcell\n\t\t\t\t\t.removeClass( classes.sSortAsc +\" \"+classes.sSortDesc )\n\t\t\t\t\t.addClass( columns[ colIdx ] == 'asc' ?\n\t\t\t\t\t\tclasses.sSortAsc : columns[ colIdx ] == 'desc' ?\n\t\t\t\t\t\t\tclasses.sSortDesc :\n\t\t\t\t\t\t\tcolumn.sSortingClass\n\t\t\t\t\t);\n\n\t\t\t\tcell\n\t\t\t\t\t.find( 'span.'+classes.sSortIcon )\n\t\t\t\t\t.removeClass(\n\t\t\t\t\t\tclasses.sSortJUIAsc +\" \"+\n\t\t\t\t\t\tclasses.sSortJUIDesc +\" \"+\n\t\t\t\t\t\tclasses.sSortJUI +\" \"+\n\t\t\t\t\t\tclasses.sSortJUIAscAllowed +\" \"+\n\t\t\t\t\t\tclasses.sSortJUIDescAllowed\n\t\t\t\t\t)\n\t\t\t\t\t.addClass( columns[ colIdx ] == 'asc' ?\n\t\t\t\t\t\tclasses.sSortJUIAsc : columns[ colIdx ] == 'desc' ?\n\t\t\t\t\t\t\tclasses.sSortJUIDesc :\n\t\t\t\t\t\t\tcolumn.sSortingClassJUI\n\t\t\t\t\t);\n\t\t\t} );\n\t\t}\n\t}\n} );\n\n/*\n * Public helper functions. These aren't used internally by DataTables, or\n * called by any of the options passed into DataTables, but they can be used\n * externally by developers working with DataTables. They are helper functions\n * to make working with DataTables a little bit easier.\n */\n\nvar __htmlEscapeEntities = function ( d ) {\n\tif (Array.isArray(d)) {\n\t\td = d.join(',');\n\t}\n\n\treturn typeof d === 'string' ?\n\t\td\n\t\t\t.replace(/&/g, '&amp;')\n\t\t\t.replace(/</g, '&lt;')\n\t\t\t.replace(/>/g, '&gt;')\n\t\t\t.replace(/\"/g, '&quot;') :\n\t\td;\n};\n\n// Common logic for moment, luxon or a date action\nfunction __mld( dt, momentFn, luxonFn, dateFn, arg1 ) {\n\tif (window.moment) {\n\t\treturn dt[momentFn]( arg1 );\n\t}\n\telse if (window.luxon) {\n\t\treturn dt[luxonFn]( arg1 );\n\t}\n\t\n\treturn dateFn ? dt[dateFn]( arg1 ) : dt;\n}\n\n\nvar __mlWarning = false;\nfunction __mldObj (d, format, locale) {\n\tvar dt;\n\n\tif (window.moment) {\n\t\tdt = window.moment.utc( d, format, locale, true );\n\n\t\tif (! dt.isValid()) {\n\t\t\treturn null;\n\t\t}\n\t}\n\telse if (window.luxon) {\n\t\tdt = format && typeof d === 'string'\n\t\t\t? window.luxon.DateTime.fromFormat( d, format )\n\t\t\t: window.luxon.DateTime.fromISO( d );\n\n\t\tif (! dt.isValid) {\n\t\t\treturn null;\n\t\t}\n\n\t\tdt.setLocale(locale);\n\t}\n\telse if (! format) {\n\t\t// No format given, must be ISO\n\t\tdt = new Date(d);\n\t}\n\telse {\n\t\tif (! __mlWarning) {\n\t\t\talert('DataTables warning: Formatted date without Moment.js or Luxon - https://datatables.net/tn/17');\n\t\t}\n\n\t\t__mlWarning = true;\n\t}\n\n\treturn dt;\n}\n\n// Wrapper for date, datetime and time which all operate the same way with the exception of\n// the output string for auto locale support\nfunction __mlHelper (localeString) {\n\treturn function ( from, to, locale, def ) {\n\t\t// Luxon and Moment support\n\t\t// Argument shifting\n\t\tif ( arguments.length === 0 ) {\n\t\t\tlocale = 'en';\n\t\t\tto = null; // means toLocaleString\n\t\t\tfrom = null; // means iso8601\n\t\t}\n\t\telse if ( arguments.length === 1 ) {\n\t\t\tlocale = 'en';\n\t\t\tto = from;\n\t\t\tfrom = null;\n\t\t}\n\t\telse if ( arguments.length === 2 ) {\n\t\t\tlocale = to;\n\t\t\tto = from;\n\t\t\tfrom = null;\n\t\t}\n\n\t\tvar typeName = 'datetime-' + to;\n\n\t\t// Add type detection and sorting specific to this date format - we need to be able to identify\n\t\t// date type columns as such, rather than as numbers in extensions. Hence the need for this.\n\t\tif (! DataTable.ext.type.order[typeName]) {\n\t\t\t// The renderer will give the value to type detect as the type!\n\t\t\tDataTable.ext.type.detect.unshift(function (d) {\n\t\t\t\treturn d === typeName ? typeName : false;\n\t\t\t});\n\n\t\t\t// The renderer gives us Moment, Luxon or Date obects for the sorting, all of which have a\n\t\t\t// `valueOf` which gives milliseconds epoch\n\t\t\tDataTable.ext.type.order[typeName + '-asc'] = function (a, b) {\n\t\t\t\tvar x = a.valueOf();\n\t\t\t\tvar y = b.valueOf();\n\n\t\t\t\treturn x === y\n\t\t\t\t\t? 0\n\t\t\t\t\t: x < y\n\t\t\t\t\t\t? -1\n\t\t\t\t\t\t: 1;\n\t\t\t}\n\n\t\t\tDataTable.ext.type.order[typeName + '-desc'] = function (a, b) {\n\t\t\t\tvar x = a.valueOf();\n\t\t\t\tvar y = b.valueOf();\n\n\t\t\t\treturn x === y\n\t\t\t\t\t? 0\n\t\t\t\t\t: x > y\n\t\t\t\t\t\t? -1\n\t\t\t\t\t\t: 1;\n\t\t\t}\n\t\t}\n\t\n\t\treturn function ( d, type ) {\n\t\t\t// Allow for a default value\n\t\t\tif (d === null || d === undefined) {\n\t\t\t\tif (def === '--now') {\n\t\t\t\t\t// We treat everything as UTC further down, so no changes are\n\t\t\t\t\t// made, as such need to get the local date / time as if it were\n\t\t\t\t\t// UTC\n\t\t\t\t\tvar local = new Date();\n\t\t\t\t\td = new Date( Date.UTC(\n\t\t\t\t\t\tlocal.getFullYear(), local.getMonth(), local.getDate(),\n\t\t\t\t\t\tlocal.getHours(), local.getMinutes(), local.getSeconds()\n\t\t\t\t\t) );\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\td = '';\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (type === 'type') {\n\t\t\t\t// Typing uses the type name for fast matching\n\t\t\t\treturn typeName;\n\t\t\t}\n\n\t\t\tif (d === '') {\n\t\t\t\treturn type !== 'sort'\n\t\t\t\t\t? ''\n\t\t\t\t\t: __mldObj('0000-01-01 00:00:00', null, locale);\n\t\t\t}\n\n\t\t\t// Shortcut. If `from` and `to` are the same, we are using the renderer to\n\t\t\t// format for ordering, not display - its already in the display format.\n\t\t\tif ( to !== null && from === to && type !== 'sort' && type !== 'type' && ! (d instanceof Date) ) {\n\t\t\t\treturn d;\n\t\t\t}\n\n\t\t\tvar dt = __mldObj(d, from, locale);\n\n\t\t\tif (dt === null) {\n\t\t\t\treturn d;\n\t\t\t}\n\n\t\t\tif (type === 'sort') {\n\t\t\t\treturn dt;\n\t\t\t}\n\t\t\t\n\t\t\tvar formatted = to === null\n\t\t\t\t? __mld(dt, 'toDate', 'toJSDate', '')[localeString]()\n\t\t\t\t: __mld(dt, 'format', 'toFormat', 'toISOString', to);\n\n\t\t\t// XSS protection\n\t\t\treturn type === 'display' ?\n\t\t\t\t__htmlEscapeEntities( formatted ) :\n\t\t\t\tformatted;\n\t\t};\n\t}\n}\n\n// Based on locale, determine standard number formatting\n// Fallback for legacy browsers is US English\nvar __thousands = ',';\nvar __decimal = '.';\n\nif (window.Intl !== undefined) {\n\ttry {\n\t\tvar num = new Intl.NumberFormat().formatToParts(100000.1);\n\t\n\t\tfor (var i=0 ; i<num.length ; i++) {\n\t\t\tif (num[i].type === 'group') {\n\t\t\t\t__thousands = num[i].value;\n\t\t\t}\n\t\t\telse if (num[i].type === 'decimal') {\n\t\t\t\t__decimal = num[i].value;\n\t\t\t}\n\t\t}\n\t}\n\tcatch (e) {\n\t\t// noop\n\t}\n}\n\n// Formatted date time detection - use by declaring the formats you are going to use\nDataTable.datetime = function ( format, locale ) {\n\tvar typeName = 'datetime-detect-' + format;\n\n\tif (! locale) {\n\t\tlocale = 'en';\n\t}\n\n\tif (! DataTable.ext.type.order[typeName]) {\n\t\tDataTable.ext.type.detect.unshift(function (d) {\n\t\t\tvar dt = __mldObj(d, format, locale);\n\t\t\treturn d === '' || dt ? typeName : false;\n\t\t});\n\n\t\tDataTable.ext.type.order[typeName + '-pre'] = function (d) {\n\t\t\treturn __mldObj(d, format, locale) || 0;\n\t\t}\n\t}\n}\n\n/**\n * Helpers for `columns.render`.\n *\n * The options defined here can be used with the `columns.render` initialisation\n * option to provide a display renderer. The following functions are defined:\n *\n * * `number` - Will format numeric data (defined by `columns.data`) for\n *   display, retaining the original unformatted data for sorting and filtering.\n *   It takes 5 parameters:\n *   * `string` - Thousands grouping separator\n *   * `string` - Decimal point indicator\n *   * `integer` - Number of decimal points to show\n *   * `string` (optional) - Prefix.\n *   * `string` (optional) - Postfix (/suffix).\n * * `text` - Escape HTML to help prevent XSS attacks. It has no optional\n *   parameters.\n *\n * @example\n *   // Column definition using the number renderer\n *   {\n *     data: \"salary\",\n *     render: $.fn.dataTable.render.number( '\\'', '.', 0, '$' )\n *   }\n *\n * @namespace\n */\nDataTable.render = {\n\tdate: __mlHelper('toLocaleDateString'),\n\tdatetime: __mlHelper('toLocaleString'),\n\ttime: __mlHelper('toLocaleTimeString'),\n\tnumber: function ( thousands, decimal, precision, prefix, postfix ) {\n\t\t// Auto locale detection\n\t\tif (thousands === null || thousands === undefined) {\n\t\t\tthousands = __thousands;\n\t\t}\n\n\t\tif (decimal === null || decimal === undefined) {\n\t\t\tdecimal = __decimal;\n\t\t}\n\n\t\treturn {\n\t\t\tdisplay: function ( d ) {\n\t\t\t\tif ( typeof d !== 'number' && typeof d !== 'string' ) {\n\t\t\t\t\treturn d;\n\t\t\t\t}\n\n\t\t\t\tif (d === '' || d === null) {\n\t\t\t\t\treturn d;\n\t\t\t\t}\n\n\t\t\t\tvar negative = d < 0 ? '-' : '';\n\t\t\t\tvar flo = parseFloat( d );\n\n\t\t\t\t// If NaN then there isn't much formatting that we can do - just\n\t\t\t\t// return immediately, escaping any HTML (this was supposed to\n\t\t\t\t// be a number after all)\n\t\t\t\tif ( isNaN( flo ) ) {\n\t\t\t\t\treturn __htmlEscapeEntities( d );\n\t\t\t\t}\n\n\t\t\t\tflo = flo.toFixed( precision );\n\t\t\t\td = Math.abs( flo );\n\n\t\t\t\tvar intPart = parseInt( d, 10 );\n\t\t\t\tvar floatPart = precision ?\n\t\t\t\t\tdecimal+(d - intPart).toFixed( precision ).substring( 2 ):\n\t\t\t\t\t'';\n\n\t\t\t\t// If zero, then can't have a negative prefix\n\t\t\t\tif (intPart === 0 && parseFloat(floatPart) === 0) {\n\t\t\t\t\tnegative = '';\n\t\t\t\t}\n\n\t\t\t\treturn negative + (prefix||'') +\n\t\t\t\t\tintPart.toString().replace(\n\t\t\t\t\t\t/\\B(?=(\\d{3})+(?!\\d))/g, thousands\n\t\t\t\t\t) +\n\t\t\t\t\tfloatPart +\n\t\t\t\t\t(postfix||'');\n\t\t\t}\n\t\t};\n\t},\n\n\ttext: function () {\n\t\treturn {\n\t\t\tdisplay: __htmlEscapeEntities,\n\t\t\tfilter: __htmlEscapeEntities\n\t\t};\n\t}\n};\n\n\n/*\n * This is really a good bit rubbish this method of exposing the internal methods\n * publicly... - To be fixed in 2.0 using methods on the prototype\n */\n\n\n/**\n * Create a wrapper function for exporting an internal functions to an external API.\n *  @param {string} fn API function name\n *  @returns {function} wrapped function\n *  @memberof DataTable#internal\n */\nfunction _fnExternApiFunc (fn)\n{\n\treturn function() {\n\t\tvar args = [_fnSettingsFromNode( this[DataTable.ext.iApiIndex] )].concat(\n\t\t\tArray.prototype.slice.call(arguments)\n\t\t);\n\t\treturn DataTable.ext.internal[fn].apply( this, args );\n\t};\n}\n\n\n/**\n * Reference to internal functions for use by plug-in developers. Note that\n * these methods are references to internal functions and are considered to be\n * private. If you use these methods, be aware that they are liable to change\n * between versions.\n *  @namespace\n */\n$.extend( DataTable.ext.internal, {\n\t_fnExternApiFunc: _fnExternApiFunc,\n\t_fnBuildAjax: _fnBuildAjax,\n\t_fnAjaxUpdate: _fnAjaxUpdate,\n\t_fnAjaxParameters: _fnAjaxParameters,\n\t_fnAjaxUpdateDraw: _fnAjaxUpdateDraw,\n\t_fnAjaxDataSrc: _fnAjaxDataSrc,\n\t_fnAddColumn: _fnAddColumn,\n\t_fnColumnOptions: _fnColumnOptions,\n\t_fnAdjustColumnSizing: _fnAdjustColumnSizing,\n\t_fnVisibleToColumnIndex: _fnVisibleToColumnIndex,\n\t_fnColumnIndexToVisible: _fnColumnIndexToVisible,\n\t_fnVisbleColumns: _fnVisbleColumns,\n\t_fnGetColumns: _fnGetColumns,\n\t_fnColumnTypes: _fnColumnTypes,\n\t_fnApplyColumnDefs: _fnApplyColumnDefs,\n\t_fnHungarianMap: _fnHungarianMap,\n\t_fnCamelToHungarian: _fnCamelToHungarian,\n\t_fnLanguageCompat: _fnLanguageCompat,\n\t_fnBrowserDetect: _fnBrowserDetect,\n\t_fnAddData: _fnAddData,\n\t_fnAddTr: _fnAddTr,\n\t_fnNodeToDataIndex: _fnNodeToDataIndex,\n\t_fnNodeToColumnIndex: _fnNodeToColumnIndex,\n\t_fnGetCellData: _fnGetCellData,\n\t_fnSetCellData: _fnSetCellData,\n\t_fnSplitObjNotation: _fnSplitObjNotation,\n\t_fnGetObjectDataFn: _fnGetObjectDataFn,\n\t_fnSetObjectDataFn: _fnSetObjectDataFn,\n\t_fnGetDataMaster: _fnGetDataMaster,\n\t_fnClearTable: _fnClearTable,\n\t_fnDeleteIndex: _fnDeleteIndex,\n\t_fnInvalidate: _fnInvalidate,\n\t_fnGetRowElements: _fnGetRowElements,\n\t_fnCreateTr: _fnCreateTr,\n\t_fnBuildHead: _fnBuildHead,\n\t_fnDrawHead: _fnDrawHead,\n\t_fnDraw: _fnDraw,\n\t_fnReDraw: _fnReDraw,\n\t_fnAddOptionsHtml: _fnAddOptionsHtml,\n\t_fnDetectHeader: _fnDetectHeader,\n\t_fnGetUniqueThs: _fnGetUniqueThs,\n\t_fnFeatureHtmlFilter: _fnFeatureHtmlFilter,\n\t_fnFilterComplete: _fnFilterComplete,\n\t_fnFilterCustom: _fnFilterCustom,\n\t_fnFilterColumn: _fnFilterColumn,\n\t_fnFilter: _fnFilter,\n\t_fnFilterCreateSearch: _fnFilterCreateSearch,\n\t_fnEscapeRegex: _fnEscapeRegex,\n\t_fnFilterData: _fnFilterData,\n\t_fnFeatureHtmlInfo: _fnFeatureHtmlInfo,\n\t_fnUpdateInfo: _fnUpdateInfo,\n\t_fnInfoMacros: _fnInfoMacros,\n\t_fnInitialise: _fnInitialise,\n\t_fnInitComplete: _fnInitComplete,\n\t_fnLengthChange: _fnLengthChange,\n\t_fnFeatureHtmlLength: _fnFeatureHtmlLength,\n\t_fnFeatureHtmlPaginate: _fnFeatureHtmlPaginate,\n\t_fnPageChange: _fnPageChange,\n\t_fnFeatureHtmlProcessing: _fnFeatureHtmlProcessing,\n\t_fnProcessingDisplay: _fnProcessingDisplay,\n\t_fnFeatureHtmlTable: _fnFeatureHtmlTable,\n\t_fnScrollDraw: _fnScrollDraw,\n\t_fnApplyToChildren: _fnApplyToChildren,\n\t_fnCalculateColumnWidths: _fnCalculateColumnWidths,\n\t_fnThrottle: _fnThrottle,\n\t_fnConvertToWidth: _fnConvertToWidth,\n\t_fnGetWidestNode: _fnGetWidestNode,\n\t_fnGetMaxLenString: _fnGetMaxLenString,\n\t_fnStringToCss: _fnStringToCss,\n\t_fnSortFlatten: _fnSortFlatten,\n\t_fnSort: _fnSort,\n\t_fnSortAria: _fnSortAria,\n\t_fnSortListener: _fnSortListener,\n\t_fnSortAttachListener: _fnSortAttachListener,\n\t_fnSortingClasses: _fnSortingClasses,\n\t_fnSortData: _fnSortData,\n\t_fnSaveState: _fnSaveState,\n\t_fnLoadState: _fnLoadState,\n\t_fnImplementState: _fnImplementState,\n\t_fnSettingsFromNode: _fnSettingsFromNode,\n\t_fnLog: _fnLog,\n\t_fnMap: _fnMap,\n\t_fnBindAction: _fnBindAction,\n\t_fnCallbackReg: _fnCallbackReg,\n\t_fnCallbackFire: _fnCallbackFire,\n\t_fnLengthOverflow: _fnLengthOverflow,\n\t_fnRenderer: _fnRenderer,\n\t_fnDataSource: _fnDataSource,\n\t_fnRowAttributes: _fnRowAttributes,\n\t_fnExtend: _fnExtend,\n\t_fnCalculateEnd: function () {} // Used by a lot of plug-ins, but redundant\n\t                                // in 1.10, so this dead-end function is\n\t                                // added to prevent errors\n} );\n\n\n// jQuery access\n$.fn.dataTable = DataTable;\n\n// Provide access to the host jQuery object (circular reference)\nDataTable.$ = $;\n\n// Legacy aliases\n$.fn.dataTableSettings = DataTable.settings;\n$.fn.dataTableExt = DataTable.ext;\n\n// With a capital `D` we return a DataTables API instance rather than a\n// jQuery object\n$.fn.DataTable = function ( opts ) {\n\treturn $(this).dataTable( opts ).api();\n};\n\n// All properties that are available to $.fn.dataTable should also be\n// available on $.fn.DataTable\n$.each( DataTable, function ( prop, val ) {\n\t$.fn.DataTable[ prop ] = val;\n} );\n\nexport default DataTable;\n", "import React, { useState, useEffect } from \"react\";\n\nexport default function MembersProfileSavings(props) {\n  return (\n    <table className=\"table table-bordered table-hover table-sm\">\n      <thead>\n        <tr>\n          <th>\n            Type\n          </th>\n          <th className=\"text-end\">\n            Maintaining Balance \n          </th>\n          <th className=\"text-end\">\n            Current Balance\n          </th>\n        </tr>\n      </thead>\n      <tbody>\n        {props.records.map((o) => {\n          return (\n            <tr key={`savings-${o.id}`}>\n              <td>\n                <a href={`/savings_accounts/${o.id}`}>\n                  <strong>\n                    {o.type}\n                  </strong>\n                </a>\n              </td>\n              <td className=\"text-end\">\n                {o.maintaining_balance}\n              </td>\n              <td className=\"text-end\">\n                {o.current_balance}\n              </td>\n            </tr>\n          )\n        })}\n        <tr>\n          <td colSpan=\"2\">\n            <strong>\n              Total\n            </strong>\n          </td>\n          <td className=\"text-end\">\n            <strong>\n              {props.total}\n            </strong>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  )\n}\n", "import React, { useState, useEffect } from \"react\";\nimport axios from 'axios';\n\nexport default function MembersProfileInsurance(props) {\n  const [configData, setConfigData] = useState();\n\n  useEffect(() => {\n    axios.get('/api/yml_values/production_values')\n      .then(response => {\n        setConfigData(response.data);\n        setCustomVariable(response.data); // Assign response.data to your custom variable\n        console.log(response.data); // Log the value to the console\n      })\n      .catch(error => console.error(error));\n  }, []);\n\n   useEffect(() => {\n    console.log(\"Roles from props:\", props.roles);\n  }, [props.roles]);\n\n  const isMisUser = props.roles?.includes(\"MIS\");\n\n   // Calculate total for visible rows only\n  const visibleTotal = props.records\n    .filter(o => isMisUser || o.type === \"Credit Life Insurance Plan\")\n    .reduce((sum, o) => sum + Number(o.balance || 0), 0);\n\n\n  return (\n    <table className=\"table table-bordered table-hover table-sm\">\n      <thead>\n        <tr>\n          <th>\n            Type\n          </th>\n          {(() => {\n              if(JSON.stringify(configData, null, 2) == 'true') {\n                return (\n                  <th className=\"text-end\">\n                    Total Payment\n                  </th>\n                )\n              }\n              else {\n                <th className=\"text-end\">\n                  Balance\n                </th>\n              }   \n          })()}\n        </tr>\n      </thead>\n      <tbody>\n        {props.records\n          .filter(o => isMisUser || o.type === \"Credit Life Insurance Plan\")\n          .map((o) => {\n          return (\n            <tr key={`insurance-${o.id}`}>\n              <td>\n                <a href={`/insurance_accounts/${o.id}`}>\n                  <strong>\n                    {o.type}\n                  </strong>\n                </a>\n              </td>\n              <td className=\"text-end\">\n                {o.balance}\n              </td>\n            </tr>\n          )\n        })}\n        <tr>\n          <td>\n            <strong>\n              Total\n            </strong>\n          </td>\n          <td className=\"text-end\">\n            <strong>\n              {/* {props.total} */}\n              {visibleTotal}\n            </strong>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  )\n}\n", "import React, { useState, useEffect } from \"react\";\n\nexport default function MembersProfileEquities(props) {\n  return (\n    <table className=\"table table-bordered table-hover table-sm\">\n      <thead>\n        <tr>\n          <th>\n            Type\n          </th>\n          <th className=\"text-end\">\n            Balance\n          </th>\n        </tr>\n      </thead>\n      <tbody>\n        {props.records.map((o) => {\n          return (\n            <tr key={`equity-${o.id}`}>\n              <td>\n                <a href={`/equity_accounts/${o.id}`}>\n                  <strong>\n                    {o.type}\n                  </strong>\n                </a>\n              </td>\n              <td className=\"text-end\">\n                {o.balance}\n              </td>\n            </tr>\n          )\n        })}\n        <tr>\n          <td>\n            <strong>\n              Total\n            </strong>\n          </td>\n          <td className=\"text-end\">\n            <strong>\n              {props.total}\n            </strong>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  )\n}\n", "import React, { useState, useEffect } from \"react\";\n\nexport default function MembersProfileSurveyAnswers(props) {\n  if(props.records.length > 0) {\n    return (\n      <table className=\"table table-bordered table-hover table-sm\">\n        <thead>\n          <tr>\n            <th>\n              Survey\n            </th>\n            <th className=\"text-center\">\n              Last Updated\n            </th>\n          </tr>\n        </thead>\n        <tbody>\n          {props.records.map((o) => {\n            return (\n              <tr key={`survey-answer-${o.id}`}>\n                <td>\n                  <a href={`/members/${props.memberId}/survey_answers/${o.id}`}>\n                    {o.survey_name}\n                  </a>\n                </td>\n                <td className=\"text-center\">\n                  {o.updated_at}\n                </td>\n              </tr>\n            )\n          })}\n        </tbody>\n      </table>\n    )\n  } else {\n    return (\n      <p>\n        No survey answers found.\n      </p>\n    )\n  }\n}\n", "import React, { useState, useEffect } from \"react\";\n\nexport default function MembersProfileShares(props) {\n  if(props.records.length >= 0) {\n    return (\n      <>\n        <a\n          href={`/members/${props.memberId}/member_shares/new`}\n          className=\"btn btn-primary btn-sm\"\n        >\n          New Certificate\n        </a>\n        <hr/>\n        <table className=\"table table-bordered table-hover table-sm\">\n          <thead>\n            <tr>\n              <th>\n                Certificate Number\n              </th>\n              <th>\n                Date of Issue\n              </th>\n              <th className=\"text-center\">\n                Number of Shares\n              </th>\n              <th className=\"text-center\">\n                Shares For\n              </th>\n              <th className=\"text-center\">\n                Is Void\n              </th>\n              {(() => {\n                if(props.roles.includes(\"BK\") || props.roles.includes(\"SBK\") || props.roles.includes(\"MIS\")) {\n                  return (\n                    <th className=\"text-center\">\n                      Actions\n                    </th>\n                  )\n                }\n              })()}\n            </tr>\n          </thead>\n          <tbody>\n            {props.records.map((o) => {\n              return (\n                <tr key={`share-${o.id}`}>\n                  <td>\n                    <a href={`/members/${props.memberId}/member_shares/${o.id}`}>\n                      <strong>\n                        {o.certificate_number}\n                      </strong>\n                    </a>\n                  </td>\n                  <td>\n                    {o.date_of_issue}\n                  </td>\n                  <td className=\"text-center\">\n                    {o.number_of_shares}\n                  </td>\n                  <td className=\"text-center\">\n                    {o.certificate_for}\n                  </td>\n                  <td>\n                    {(() => {\n                      if(o.is_void) {\n                        return (\n                          <div className=\"badge badge-danger\">\n                            <span className=\"bi bi-check\"/>\n                          </div>\n                        )\n                      }\n                    })()}\n                  </td>\n                  {(() => {\n                    if(props.roles.includes(\"BK\") || props.roles.includes(\"SBK\") || props.roles.includes(\"MIS\")) {\n                      return (\n                        <td className=\"text-center\">\n                          <a \n                            data-confirm=\"Are you sure?\"\n                            className=\"btn btn-sm btn-danger\"\n                            data-method=\"delete\"\n                            href={`/members/${props.memberId}/member_shares/${o.id}`}\n                          >\n                            Void Share\n                          </a>\n                        </td>\n                      )\n                    }\n                  })()}\n                </tr>\n              )\n            })}\n          </tbody>\n        </table>\n      </>\n    )\n  } else {\n    return (\n      <p>\n        No shares found.\n      </p>\n    )\n  }\n}\n", "import React, { useState, useEffect } from \"react\";\n\nexport default function MembersProfileAttachmentFiles(props) {\n  return (\n    <>\n      <a \n        href={`/members/${props.memberId}/attachment_files/new`}\n        className=\"btn btn-primary btn-sm\"\n      >\n        New Attachment\n      </a>\n      <hr/>\n      {(() => {\n        if(props.records.length > 0) {\n          return (\n            <>\n              {props.records.map((o) => {\n                return (\n                  <div key={`attachment-${o.id}`}>\n                    <table className=\"table table-bordered table-sm table-hover\">\n                      <thead>\n                        <tr>\n                          <th>\n                            {o.file_name}\n                          </th>\n                        </tr>\n                      </thead>\n                      <tbody>\n                        <tr>\n                          <td className=\"text-center\">\n                            {(() => {\n                              if(o.is_image) {\n                                return (\n                                  <img src={`${o.link}`} width=\"1100\" height=\"1000\"/>\n                                )\n                              } else {\n                                <p>\n                                  No image found.\n                                </p>\n                              }\n                            })()}\n                          </td>\n                        </tr>\n                      </tbody>\n                    </table>\n                    <hr/>\n                      <a href={`${o.link}`} className='btn btn-success btn-sm'>\n                        Download File\n                      </a>\n                      <a href={`/members/${props.memberId}/attachment_files/${o.id}/edit`} className=\"btn btn-warning btn-sm\">\n                        Edit\n                      </a>\n                      <a href={`/members/${props.memberId}/attachment_files/${o.id}`} className=\"btn btn-danger btn-sm\" data-confirm=\"Are you sure?\" data-method=\"delete\">\n                        Delete\n                      </a>\n                    <hr/>\n                  </div>\n                )\n              })}\n            </>\n          )\n        } else {\n          return (\n            <p>\n              No attachments found.\n            </p>\n          )\n        }\n      })()}\n    </>\n  )\n}\n", "import React, { useState, useEffect } from \"react\";\n\nexport default function MembersProfileMembershipPayments(props) {\n  if(props.records.length > 0) {\n    return (\n      <table className=\"table table-bordered table-sm table-hober\">\n        <thead>\n          <tr>\n            {(() => {\n              if(props.roles.includes(\"MIS\")) {\n                return (\n                  <th>\n                    ID\n                  </th>\n                )\n              }\n            })()}\n            <th>\n              Date Approved\n            </th>\n            <th>\n              Name\n            </th>\n            <th>\n              Type\n            </th>\n            <th className=\"text-end\">\n              Amount\n            </th>\n            <th className=\"text-center\">\n              Status\n            </th>\n          </tr>\n        </thead>\n        <tbody>\n          {props.records.map((o) => {\n            return (\n              <tr key={`membership-payment-${o.id}`}>\n                {(() => {\n                  if(props.roles.includes(\"MIS\")) {\n                    return (\n                      <td>\n                        {o.id}\n                      </td>\n                    )\n                  }\n                })()}\n                <td>\n                  {o.date_paid}\n                </td>\n                <td>\n                  {o.membership_name}\n                </td>\n                <td>\n                  {o.membership_type}\n                </td>\n                <td className=\"text-end\">\n                  {o.amount}\n                </td>\n                <td className=\"text-center\">\n                  {o.status}\n                </td>\n              </tr>\n            )\n          })}\n        </tbody>\n      </table>\n    )\n  } else {\n    return (\n      <p>\n        No records found.\n      </p>\n    )\n  }\n}\n", "import React, { useState, useEffect } from \"react\";\nimport ErrorList from '../ErrorList';\nimport axios from 'axios';\n\nexport default function MembersProfileMyKoins(props) {\n  const [password, setPassword]               = useState(\"\");\n  const [passwordConfirm, setPasswordConfirm] = useState(\"\");\n  const [isLoading, setIsLoading]             = useState(false);\n  const [errors, setErrors]                   = useState([]);\n\n  const handleSavePassword = () => {\n    setIsLoading(true);\n    setErrors([]);\n\n    const payload = {\n      id:                     props.memberId,\n      password:               password,\n      password_confirmation:  passwordConfirm\n    }\n\n    const headers = {\n      'X-KOINS-HQ-TOKEN': props.token\n    }\n\n    const options = {\n      headers: headers\n    }\n\n    axios.post(\n      '/api/members/update_password',\n      payload,\n      options\n    ).then((res) => {\n      alert(\"Successfully updated password!\");\n      setIsLoading(false);\n      setPassword(\"\");\n      setPasswordConfirm(\"\");\n    }).catch((error) => {\n      console.log(error.response.data);\n      setErrors(error.response.data.errors);\n      setIsLoading(false);\n    })\n  }\n\n  return (\n    <>\n      <h3>\n        Change Password\n      </h3>\n      <div className=\"row\">\n        <div className=\"col\">\n          <div className=\"form-group\">\n            <label>\n              Password\n            </label>\n            <input\n              className=\"form-control\"\n              type=\"password\"\n              value={password}\n              onChange={(event) => { setPassword(event.target.value) }}\n              disabled={isLoading}\n            />\n          </div>\n          <div className=\"form-group\">\n            <label>\n              Password Confirmation\n            </label>\n            <input\n              className=\"form-control\"\n              type=\"password\"\n              value={passwordConfirm}\n              onChange={(event) => { setPasswordConfirm(event.target.value) }}\n              disabled={isLoading}\n            />\n          </div>\n          <hr/>\n          {(() => {\n            if(errors.length > 0) {\n              return (\n                <div className=\"\">\n                  <h5>\n                    Errors\n                  </h5>\n                  <ul>\n                    {errors.map((o, i) => {\n                      return (\n                        <li key={`err-${i}`}>\n                          {o}\n                        </li>\n                      )\n                    })}\n                  </ul>\n                </div>\n              )\n            } else {\n              return (\n                <></>\n              )\n            }\n          })()}\n          <button \n            className=\"btn btn-success btn-block\"\n            onClick={handleSavePassword}\n          >\n            Save Password\n          </button>\n        </div>\n      </div>\n    </>\n  )\n}\n", "import React, { useState, useEffect } from \"react\";\nimport Button from 'react-bootstrap/Button';\nimport Modal from 'react-bootstrap/Modal';\nimport axios from 'axios';\nimport ToggleSwitch from '../utils/ToggleSwitch';\nimport jwtDecode from \"jwt-decode\";\n\nexport default function MembersProfileActions(props) {\n  const [isLoading, setIsLoading]                                               = useState(false);\n  const [isModalUnlockOpen, setIsModalUnlockOpen]                               = useState(false);\n  const [isModalSurveyOpen, setIsModalSurveyOpen]                               = useState(false);\n  const [surveyId, setSurveyId]                                                 = useState(props.surveys.length > 0 ? props.surveys[0].id : \"\");\n  const [errors, setErrors]                                                     = useState([]);\n  const [modifiable, setModifiable]                                             = useState(props.member.modifiable);\n  const [isModalBalikKasapiOpen, setModalBalikKasapiOpen]                       = useState(false);\n  const [isModalDelete, setIsModalDelete]                                       = useState(false);\n  const [isModalReinstateOpen, setModalReinstateOpen]                           = useState(false);\n  const [isModalRecognitonDateOpen, setModalRecognitonDateOpen]                 = useState(false);\n  const [isModalUpdateRecognitonDateOpen, setModalUpdateRecognitonDateOpen]     = useState(false);\n  const [isModalReclassifiedOpen ,setModalReclassifiedOpen]                     = useState(false);\n  const [isModalClaimsCopyPDFOpen ,setModalClaimsCopyPDFOpen]                   = useState(false);\n  const [isModalResignFromInsuranceOpen, setModalResignFromInsuranceOpen]       = useState(false);\n  const [dateReinstated, setDateReinstated]                                     = useState('');\n  const [numWeeksPastDue, setNumWeeksPastDue]                                   = useState('');\n  const [amountToPaid, setAmountToPaid]                                         = useState('');\n  const [dateStopped, setDateStopped]                                           = useState('');\n  const [dateResignedInsurance, setDateResignedInsurance]                       = useState('');\n  const [reason, setReason]                                                     = useState('');\n  const [dateRecognition, setDateRecognition]                                   = useState(\"\");\n  const [dateUpdateRecognition, setUpdateDateRecognition]                       = useState(\"\");\n  const [dateOfDeath, setDateOfDeath]                                           = useState(\"\");\n  const [reClassified, setreClassified]                                         = useState('');\n  const [isModalMakePaymentOpen, setModalMakePaymentOpen]                       = useState(false);\n  const [makePayment, setMakePayment]                                           = useState('');\n  const [isModalProfilePictureOpen, setModalProfilePictureOpen]                 = useState(false);\n  const [profilePicture, setProfilePicture]                                     = useState('');\n  const [configData, setConfigData] = useState();\n  const [customVariable, setCustomVariable] = useState(); // Create a new state variable\n\n  const [selectedOptionType, setSelectedOptionType]                             = useState('CLIP');\n\n  const [isMemberSubscribed, setIsMemberSubscribed]                             = useState(false);\n  const user_MIS_BK_Role                                                        = jwtDecode(props.token).roles.includes(\"MIS\") || jwtDecode(props.token).roles.includes(\"BK\") || jwtDecode(props.token).roles.includes(\"SBK\");\n\n  const [isModalMobileNumberOpen, setModalMobileNumberOpen]                     = useState(false);\n  const [mobileNumber, setMobileNumber]                                         = useState(\"9\");\n  const user_MIS_FM_Role                                                        = jwtDecode(props.token).roles.includes(\"MIS\") || jwtDecode(props.token).roles.includes(\"FM\") || jwtDecode(props.token).roles.includes(\"OAS\");\n  const [isMobileNumberExist, setIsMobileNumberExist]                           = useState(false);\n  const [isMobileNumberValid, setIsMobileNumberValid]                           = useState(false);\n  const [currentMobileNumber, setCurrentMobileNumber]                           = useState(\"9\");\n  const [success, setSuccess]                                                   = useState(false);\n\n  const user_MIS_AO_Role                                                        = jwtDecode(props.token).roles.includes(\"MIS\") || jwtDecode(props.token).roles.includes(\"AO\");\n\n\n  useEffect(() => {\n    axios.get('/api/yml_values/production_values')\n      .then(response => {\n        setConfigData(response.data);\n        setCustomVariable(response.data); // Assign response.data to your custom variable\n        console.log(response.data); // Log the value to the console\n      })\n      .catch(error => console.error(error));\n\n    if(user_MIS_BK_Role){\n      axios.post(\n        '/api/members/is_member_subscribed',\n        {\n          id: props.memberId,\n        },\n        {\n          headers: {\n            'X-KOINS-HQ-TOKEN': props.token\n          }\n        }\n      ).then((res) => {\n        // console.log(res);\n        setIsMemberSubscribed(res.data.is_subscribed);\n      }).catch((error) => {\n        console.log(error);\n      });\n    }\n\n    // Fetch member_mobile_number\n    if(user_MIS_FM_Role){\n      axios.get(\n        \"/api/v1/members/member_mobile_number\",\n        {\n          params: {\n            id: props.memberId\n          }\n        }\n      ).then((response) => {\n        let mobile_number = response.data.mobile_number\n        mobile_number = mobile_number.replace(/[&\\/\\\\#,\\-\\_()$~%.'\":*?<>{}]/g, ''); // Removes the numbers\n  \n        var regex_mobile_number = /((\\+63)|0|63|)[.\\- ]?9[0-9]{2}[.\\- ]?[0-9]{3}[.\\- ]?[0-9]{4}/\n        if(regex_mobile_number.test(mobile_number)){\n          // let mobileNumberExist = getMobileNumberExist(mobile_number); // check if mobile number is exist\n\n          // if(!mobileNumberExist){\n          //   setIsMobileNumberValid(true);\n          // }\n\n          setMobileNumber(mobile_number.slice(-10)); // GET ONLY THE LAST 10 VALUE example 9xxxxxxxx\n          setCurrentMobileNumber(mobile_number.slice(-10)); // SAVE THE CURRENT MOBILE NUMBER\n\n          setIsMobileNumberValid(true);\n        }\n        else{\n          setIsMobileNumberValid(false);\n        }\n\n      }).catch((error) => {\n        console.log(error);\n      });\n    }\n\n  }, []);\n\n\n  const options = [\n  {\n    label: \"CLIP\",\n    value: \"CLIP\",\n  },\n  {\n    label: \"GPF\",\n    value: \"GPF\",\n  },\n  {\n    label: \"Members Benefit\",\n    value: \"Members Benefit\",\n  }\n  ];\n\n  const handleReclassfiedClicked = () => {\n    setIsLoading(true);\n    const payload = {\n      id: props.memberId,\n      is_reclassified: reClassified\n    }\n    const headers = {\n      'X-KOINS-HQ-TOKEN': props.token\n    }\n    const options = {\n      headers: headers\n    }\n    axios.post(\n      '/api/members/is_reclassified',\n      payload,\n      options\n    ).then((res) => {\n      console.log(res);\n      alert(\"Successfully ReClassified Member\");\n      window.location.href=\"/members/\" + props.memberId + \"/display/\";\n    }).catch((error) => {\n      console.log(error.response);\n      setErrors(error.response.data.errors);\n      setIsLoading(false);\n    })\n  }\n\n  const handleDateRecognitionClicked = () => {\n    setIsLoading(true);\n    const payload = {\n      id: props.memberId,\n      recognition_date: dateRecognition\n    }\n    const headers = {\n      'X-KOINS-HQ-TOKEN': props.token\n    }\n    const options = {\n      headers: headers\n    }\n    axios.post(\n      '/api/members/add_recognition_date',\n      payload,\n      options\n    ).then((res) => {\n      console.log(res);\n      alert(\"Successfully Update Recognition Date\");\n      window.location.href=\"/members/\" + props.memberId + \"/display/\";\n    }).catch((error) => {\n      console.log(error.response);\n      setErrors(error.response.data.errors);\n      setIsLoading(false);\n      \n    })\n  }\n\n  const handleUpdateDateRecognitionClicked = () => {\n    setIsLoading(true);\n    const payload = {\n      id: props.memberId,\n      previous_recognition_date: props.member.data[\"recognition_date\"],\n      update_recognition_date: dateUpdateRecognition\n    }\n    const headers = {\n      'X-KOINS-HQ-TOKEN': props.token\n    }\n    const options = {\n      headers: headers\n    }\n    axios.post(\n      '/api/members/update_recognition_date',\n      payload,\n      options\n    ).then((res) => {\n      console.log(res);\n      alert(\"Successfully Update Recognition Date\");\n      window.location.href=\"/members/\" + props.memberId + \"/display/\";\n    }).catch((error) => {\n      console.log(error.response);\n      setErrors(error.response.data.errors);\n      setIsLoading(false);\n    })\n  }\n\n  const handleDateofDeath = () => {\n    setIsLoading(true);\n    const payload = {\n      id: props.memberId,\n      date_of_death: dateOfDeath\n    }\n    const headers = {\n      'X-KOINS-HQ-TOKEN': props.token\n    }\n    const options = {\n      headers: headers\n    }\n\n    axios.post(\n      '/api/members/claims_copy_pdf',\n      payload,\n      options\n    ).then((res) => {\n      console.log(res);\n      alert(\"Generating Claims\");\n      headers;\n      window.location.href=\"/members/\" + props.memberId + \"/claims_copy_pdf/\";\n    }).catch((error) => {\n      console.log(error.response);\n      setErrors(error.response.data.errors);\n      setIsLoading(false);\n    })\n  }\n\n  const handleProfilePictureClicked = () => {\n    setIsLoading(true);\n\n    const payload = {\n      id: props.memberId,\n      profile_picture: profilePicture\n    }\n\n    const headers = {\n      'X-KOINS-HQ-TOKEN': props.token\n    }\n\n    const options = {\n      headers: headers\n    }\n\n    axios.post(\n      '/api/members/reinstate',\n      payload,\n      options\n    ).then((res) => {\n      console.log(res);\n      alert(\"Successfully Reinstated\");\n      window.location.href=\"/members/\" + props.memberId + \"/display/\";\n      setIsLoading(false);\n    }).catch((error) => {\n      console.log(error.response);\n      setErrors(error.response.data.errors);\n      setIsLoading(false);\n    })\n  }\n \n   const handleReinstateClicked = () => {\n   setErrors([]);\n   setIsLoading(true);\n\n   const payload = {\n     id: props.memberId,\n     reinstatement_date: dateReinstated,\n     date_stop: dateStopped,\n     num_weeks_past_due: numWeeksPastDue,\n     amount_to_paid: amountToPaid\n   };\n\n   const headers = {\n     'X-KOINS-HQ-TOKEN': props.token\n   };\n\n   const options = {\n     headers: headers\n   };\n     \n   if(user_MIS_AO_Role){\n    axios.post('/api/members/reinstate', payload, options)\n      .then((res) => {\n        console.log(res);\n        alert(\"Successfully Reinstated\");\n        window.location.href = `/members/${props.memberId}/display/`;\n        setIsLoading(false);\n      })\n      .catch((error) => {\n        console.log(error.response);\n        setErrors(error.response?.data?.errors || [\"An error occurred while reinstating the member.\"]);\n        setIsLoading(false);\n      });\n   }\n\n  }\n  \n\n  const handleResignedInsuranceClicked = () => {\n    setIsLoading(true);\n\n    const payload = {\n      id: props.memberId,\n      date_resigned: dateResignedInsurance,\n      reason: reason\n    }\n\n    const headers = {\n      'X-KOINS-HQ-TOKEN': props.token\n    }\n\n    const options = {\n      headers: headers\n    }\n\n    axios.post(\n      '/api/members/resign',\n      payload,\n      options\n    ).then((res) => {\n      console.log(res);\n      alert(\"Successfully Resigned\");\n      window.location.href=\"/members/\" + props.memberId + \"/display/\";\n      setIsLoading(false);\n    }).catch((error) => {\n      console.log(error.response);\n      setErrors(error.response.data.errors);\n      setIsLoading(false);\n    })\n  }\n\n  const handleMakePaymentClicked = () => {\n    setIsLoading(true);\n\n    const payload = {\n      id: props.memberId,\n      type: selectedOptionType,\n    }\n\n    const headers = {\n      'X-KOINS-HQ-TOKEN': props.token\n    }\n\n    const options = {\n      headers: headers\n    }\n\n    axios.post(\n      '/api/members/form_make_payments',\n      payload,\n      options\n    ).then((res) => {\n      console.log(res);\n      // alert(\"Payment\");\n      setModalMakePaymentOpen(false);\n      window.location.href=\"/members/\" + props.memberId + \"/form_make_payments/\" + selectedOptionType;\n      setIsLoading(false);\n    }).catch((error) => {\n      console.log(error.response);\n      setErrors(error.response.data.errors);\n      setIsLoading(false);\n    })\n  }\n\n  const handleCreateSurveyClicked = () => {\n    setIsLoading(true);\n\n    const payload = {\n      id: props.memberId,\n      survey_id: surveyId\n    }\n\n    const headers = {\n      'X-KOINS-HQ-TOKEN': props.token\n    }\n\n    const options = {\n      headers: headers\n    }\n\n    axios.post(\n      '/api/members/create_survey',\n      payload,\n      options\n    ).then((res) => {\n      console.log(res);\n      alert(\"Successfully created survey!\");\n      window.location.href=\"/members/\" + props.memberId + \"/survey_answers/\" + res.data.id + \"/form\";\n    }).catch((error) => {\n      console.log(error.response);\n      setErrors(error.response.data.errors);\n      setIsLoading(false);\n    })\n  }\n\n  const handleConfirmClicked = () => {\n    setIsLoading(true);\n\n    const payload = {\n      id: props.memberId\n    }\n\n    const headers = {\n      'X-KOINS-HQ-TOKEN': props.token\n    }\n\n    const options = {\n      headers: headers\n    }\n\n    axios.post(\n      '/api/members/unlock',\n      payload,\n      options\n    ).then((res) => {\n      window.location.href=\"/members/\" + props.memberId + \"/display/\";\n      setModifiable(!modifiable);\n      setIsModalUnlockOpen(false);\n      setIsLoading(false);\n    }).catch((error) => {\n      setErrors(error.response.data.errors);\n      setIsLoading(false);\n    })\n  }\n\n  const handleConfirmBalikKasapi = () => {\n    setIsLoading(true);\n\n    const payload = {\n      id: props.memberId\n    }\n\n    const headers = {\n      'X-KOINS-HQ-TOKEN': props.token\n    }\n\n    const options = {\n      headers: headers\n    }\n\n    axios.post(\n      '/api/members/balik_kasapi',\n      payload,\n      options\n    ).then((res) => {\n      alert(\"Successfully change member status!\");\n      window.location.href=\"/members/\" + props.memberId + \"/display/\";\n      setModifiable(!modifiable);\n      setIsModalUnlockOpen(false);\n      setIsLoading(false);\n    }).catch((error) => {\n      setErrors(error.response.data.errors);\n      setIsLoading(false);\n    })\n  }\n\n  const handleConfirmDelete = () => {\n    setIsLoading(true);\n\n    const payload = {\n    id: props.memberId\n    }\n\n    const headers = {\n      'X-KOINS-HQ-TOKEN': props.token\n    }\n\n\n    const options = {\n    headers: headers\n    }\n\n    axios.post(\n      '/api/members/delete',\n      payload,\n      options\n    ).then((res) => { \n      alert(\"Successfully Delete\");\n      window.location.href=\"/members/\";\n      setIsModalDelete(false);\n      setIsLoading(false);\n      setIsLoading(false);\n    }).catch((error) => {\n      setErrors(error.response.data.errors);\n      setIsLoading(false);\n    })\n\n  }\n\n  const handleMemberSubscription = () =>{\n    const payload = {\n      id: props.memberId\n      }\n\n      const headers = {\n        'X-KOINS-HQ-TOKEN': props.token\n      }\n\n      const options = {\n      headers: headers\n      }\n\n      axios.post(\n        '/api/members/update_member_subscription',\n        payload,\n        options\n      ).then((res) => { \n        setIsMemberSubscribed(res.data.is_subscribed)\n      }).catch((error) => {\n        setErrors(error.response.data.errors);\n        setIsLoading(false);\n      })\n  }\n\n  const getMobileNumberExist = (mobile_number) =>{\n    setIsLoading(true);\n    let mnumber_exist = false;\n    // Fetch member_mobile_number_exist\n    axios.get(\"/api/v1/members/mobile_number_exist\",\n    {\n      params: {\n        mobile_number: mobile_number,\n        id: props.memberId\n      }\n    }).then((response) => { \n        var is_mobile_number_exist = response.data.mobile_number_exist;\n\n        setIsMobileNumberExist(is_mobile_number_exist);\n        \n        mnumber_exist = is_mobile_number_exist;\n\n    }).catch((error) => {\n      console.log(error);\n    })\n\n    setIsLoading(false);\n    return mnumber_exist;\n  }\n\n  const handleMobileNumberChange = (event) => { \n    let regex_numbers = /^[0-9]*$/\n    let value = event.target.value\n    if(regex_numbers.test(value)){\n      if(value[0] == \"9\"){\n        setMobileNumber(value);\n        setIsMobileNumberExist(false);\n\n        if(value.length == 10){\n\n          let mobile_number = value;\n          mobile_number = mobile_number.replace(/[&\\/\\\\#,\\-\\_()$~%.'\":*?<>{}]/g, ''); // Removes the numbers\n    \n          var regex_mobile_number = /((\\+63)|0|63|)[.\\- ]?9[0-9]{2}[.\\- ]?[0-9]{3}[.\\- ]?[0-9]{4}/\n          if(regex_mobile_number.test(mobile_number)){\n            // let mobileNumberExist = getMobileNumberExist(mobile_number); // check if mobile number is exist\n\n            setIsMobileNumberValid(true);\n\n            // setMobileNumber(mobile_number.slice(-10)); // GET ONLY THE LAST 10 VALUE example 9xxxxxxxx\n          }\n          else{\n            setIsMobileNumberValid(false);\n          }\n\n        }\n        else{\n          setIsMobileNumberValid(false);\n        }\n      }\n      else{\n        setIsMobileNumberValid(false);\n      }\n    }\n  }\n\n  const handleMobileNumberClicked = () =>{\n    setIsLoading(true);\n    \n    axios.post(\"/api/v1/members/update_mobile_number\",\n    { \n      mobile_number: mobileNumber,\n      id: props.memberId\n    }).then((response) => { \n        if(response.status == 200){\n          if(!response.data.mobile_number_exist){\n            setIsLoading(false);\n            setSuccess(true);\n\n            // alert(\"Successfully changed member mobile number!\");\n            window.location.href=\"/members/\" + props.memberId + \"/display/\";\n          }\n          else{\n            setIsMobileNumberExist(true);\n            setIsLoading(false);\n          }\n          \n        }\n\n        \n    }).catch((error) => {\n      console.log(error);\n      alert(error.message);\n      setIsLoading(false);\n    })\n  }\n\n  return (\n    <>\n\n      <Modal \n        show={isModalReinstateOpen}\n      >\n        <Modal.Header>\n          <Modal.Title>Reinstate Member</Modal.Title>\n        </Modal.Header>\n        <Modal.Body>\n          <div className=\"row\">\n            <div className=\"form-group\">\n              <label>Reinstatement Date</label>\n              <input\n                className=\"form-control\"\n                value={dateReinstated}\n                disabled={isLoading}\n                type=\"date\"\n                onChange={(event) => setDateReinstated(event.target.value)}\n              />\n            </div>\n          </div>\n          {errors.length > 0 && (\n            <div className=\"alert alert-danger mt-3\">\n              <ul>\n                {errors.map((error, index) => (\n                  <li key={index}>{error}</li>\n                ))}\n              </ul>\n            </div>\n          )}\n        </Modal.Body>\n        <Modal.Footer>\n          <Button \n            variant=\"primary\"\n            onClick={handleReinstateClicked}\n            disabled={isLoading}\n          >\n            Confirm\n          </Button>\n          <Button \n            variant=\"secondary\"\n            onClick={() => setModalReinstateOpen(false)}\n            disabled={isLoading}\n          >\n            Close\n          </Button>\n        </Modal.Footer>\n      </Modal>\n\n      <Modal\n        show={isModalReclassifiedOpen}\n      >\n        <Modal.Header>\n          <Modal.Title>\n            Reclassified Member\n          </Modal.Title>\n        </Modal.Header>\n\n        <Modal.Body>\n          <div className=\"row\">\n            <div className=\"form-group\">\n              <label>\n               Please select \"YES\" to ReClassified this Member\n              </label>\n              <select\n                id=\"dropdown\"\n                className=\"form-control\"\n                value={reClassified}\n                disabled={isLoading}\n                onChange={(event) => { setreClassified(event.target.value) } }\n              >\n                <option value=\"\">-- Select --</option>\n                <option value=\"YES\">YES</option>\n              </select>\n            </div>\n          </div>\n        </Modal.Body>\n\n        <Modal.Footer>\n          <Button \n            variant=\"primary\"\n            onClick={() => {\n              handleReclassfiedClicked();\n            }}\n            disabled={isLoading}\n          >\n            Confirm\n          </Button>\n          <Button \n            variant=\"secondary\"\n            onClick={() => { \n              setModalReclassifiedOpen(false) \n            }}\n            disabled={isLoading}\n          >\n            Close\n          </Button>\n        </Modal.Footer>\n\n      </Modal>\n\n\n      <Modal\n        show={isModalRecognitonDateOpen}\n      >\n        <Modal.Header>\n          <Modal.Title>\n            Members Recognition Date\n          </Modal.Title>\n        </Modal.Header>\n        <Modal.Body>\n          <div className=\"row\">\n            <div className=\"form-group\">\n              <label>\n               Change Recognition Date\n              </label>\n              <input\n                className=\"form-control\"\n                value={dateRecognition}\n                disabled={isLoading}\n                type=\"date\"\n                onChange={(event) => { setDateRecognition(event.target.value) } }\n              />\n            </div>\n          </div>\n          {errors.length > 0 && (\n            <div className=\"alert alert-danger mt-3\">\n              <ul>\n                {errors.map((error, index) => (\n                  <li key={index}>{error}</li>\n                ))}\n              </ul>\n            </div>\n          )}\n        </Modal.Body>\n        <Modal.Footer>\n          <Button \n            variant=\"primary\"\n            onClick={() => {\n              handleDateRecognitionClicked();\n            }}\n            disabled={isLoading}\n          >\n            Confirm\n          </Button>\n          <Button \n            variant=\"secondary\"\n            onClick={() => { \n              setModalRecognitonDateOpen(false) \n            }}\n            disabled={isLoading}\n          >\n            Close\n          </Button>\n        </Modal.Footer>\n      </Modal>\n\n      <Modal\n        show={isModalUpdateRecognitonDateOpen}\n      >\n        <Modal.Header>\n          <Modal.Title>\n            Members Recognition Date\n          </Modal.Title>\n        </Modal.Header>\n        <Modal.Body>\n          <div className=\"row\">\n            <div className=\"form-group\">\n              <label>\n               Last Recognition Date\n              </label>\n              <input\n                className=\"form-control\"\n                value={props.member.data[\"recognition_date\"]}\n                disabled={true}\n                type=\"date\"\n              />\n              <br />\n              <label>\n               Updated Recognition Date\n              </label>\n              <input\n                className=\"form-control\"\n                value={dateUpdateRecognition}\n                disabled={isLoading}\n                type=\"date\"\n                onChange={(event) => { setUpdateDateRecognition(event.target.value) } }\n              />\n            </div>\n          </div>\n          {errors.length > 0 && (\n            <div className=\"alert alert-danger mt-3\">\n              <ul>\n                {errors.map((error, index) => (\n                  <li key={index}>{error}</li>\n                ))}\n              </ul>\n            </div>\n          )}\n        </Modal.Body>\n        <Modal.Footer>\n          <Button \n            variant=\"primary\"\n            onClick={() => {\n              handleUpdateDateRecognitionClicked();\n            }}\n            disabled={isLoading}\n          >\n            Confirm\n          </Button>\n          <Button \n            variant=\"secondary\"\n            onClick={() => { \n              setModalUpdateRecognitonDateOpen(false) \n            }}\n            disabled={isLoading}\n          >\n            Close\n          </Button>\n        </Modal.Footer>\n      </Modal>\n\n      <Modal\n        show={isModalClaimsCopyPDFOpen}\n      >\n        <Modal.Header>\n          <Modal.Title>\n            Claim Copy PDF\n          </Modal.Title>\n        </Modal.Header>\n        <Modal.Body>\n          <div className=\"row\">\n            <div className=\"form-group\">\n              <label>\n                Date of Death\n              </label>\n              <input\n                className=\"form-control\"\n                value={dateOfDeath}\n                disabled={isLoading}\n                type=\"date\"\n                onChange={(event) => { setDateOfDeath(event.target.value) } }\n              />\n            </div>\n          </div>\n        </Modal.Body>\n        <Modal.Footer>\n          <Button \n            variant=\"primary\"\n            onClick={() => {\n              handleDateofDeath();\n            }}\n            disabled={isLoading}\n          >\n            Confirm\n          </Button>\n          <Button \n            variant=\"secondary\"\n            onClick={() => { \n              setModalClaimsCopyPDFOpen(false) \n            }}\n            disabled={isLoading}\n          >\n            Close\n          </Button>\n        </Modal.Footer>\n      </Modal>\n\n      <Modal\n        show={isModalProfilePictureOpen}\n      >\n        <Modal.Header>\n          <Modal.Title>\n            Profile Picture\n          </Modal.Title>\n        </Modal.Header>\n\n        <Modal.Body>\n          <div className=\"row\">\n            <div className=\"form-group\">\n              <label>\n               Profile Picture\n              </label>\n              <input\n                className=\"form-control\"\n                value={profilePicture}\n                disabled={isLoading}\n                type=\"fileInput\"\n              \n                onChange={(event) => { setProfilePicture(event.target.value) } }\n\n              />\n            </div>\n          </div>\n        </Modal.Body>\n\n        <Modal.Footer>\n          <Button \n            variant=\"primary\"\n            onClick={() => {\n              handleProfilePictureClicked();\n            }}\n            disabled={isLoading}\n          >\n            Confirm\n          </Button>\n          <Button \n            variant=\"secondary\"\n            onClick={() => { \n              setModalProfilePictureOpen(false) \n            }}\n            disabled={isLoading}\n          >\n            Close\n          </Button>\n        </Modal.Footer>\n\n      </Modal>\n\n      <Modal show={isModalMobileNumberOpen} style={{top: \"20%\"}}>\n        <Modal.Header>\n          <Modal.Title>\n            Change Mobile Number\n          </Modal.Title>\n        </Modal.Header>\n\n        <Modal.Body>\n          <div className=\"row\">\n            <div className=\"form-group\">\n              <div style={{display: \"flex\", flexDirection: \"row\", gap: 10, alignItems: \"center\", fontSize: 20}}>\n                <label>\n                +63\n                </label>\n                <input\n                  className=\"form-control\"\n                  value={mobileNumber}\n                  disabled={isLoading}\n                  type=\"text\"\n                  maxLength={10}\n                  onChange={(event) => handleMobileNumberChange(event)}\n                />\n              </div>\n              <div style={{display: \"flex\", flexDirection: \"row\", gap: 10, alignItems: \"center\", marginTop: 10}}>\n                <label>\n                  Status: \n                </label>\n                {isLoading ? (<label style={{color: \"#333333\"}}>Loading...</label>):(\n                  <>\n                    {success ? (<label style={{color: \"green\"}}>Success</label>):(\n                      <label style={{ color: isMobileNumberValid ? ( !isMobileNumberExist ? \"green\" : \"red\") : \"red\", fontWeight: \"bold\" }}>\n                        {isMobileNumberValid ? (!isMobileNumberExist ? \"Valid mobile number\" : \"This mobile number is already exist\") : \"Invalid mobile number\"}\n                      </label>\n                    )}\n                  </>                  \n                )}\n                \n              </div>\n            </div>\n          </div>\n        </Modal.Body>\n\n        <Modal.Footer>\n          <Button \n            variant=\"primary\"\n            onClick={() => {\n              handleMobileNumberClicked();\n            }}\n            onKeyDown={(event)=>{\n              if (event.key === 'Enter') {\n                handleMobileNumberClicked();\n              }\n            }}\n            disabled={isLoading || (currentMobileNumber == mobileNumber) || !isMobileNumberValid || isMobileNumberExist || mobileNumber.length != 10}\n          >\n            Confirm\n          </Button>\n          <Button \n            variant=\"secondary\"\n            onClick={() => { \n              setModalMobileNumberOpen(false) \n            }}\n            disabled={isLoading}\n          >\n            Close\n          </Button>\n        </Modal.Footer>\n\n      </Modal>\n\n      <Modal\n        show={isModalMakePaymentOpen}\n      >\n        <Modal.Header>\n          <Modal.Title>\n            Make Payment\n          </Modal.Title>\n        </Modal.Header>\n\n        <Modal.Body>\n          <div className=\"row\">\n            <div className=\"form-group\">\n              <select className=\"form-control\" \n                onChange={e => {setSelectedOptionType(e.target.value)\n                  console.log(\"value: \", e.target.value);\n                } }>\n                {options.map((option) => (\n                  <option key={option.value} value={option.value}>{option.label}</option>\n                ))}\n              </select>              \n            </div>\n          </div>\n        </Modal.Body>\n\n        <Modal.Footer>\n          <Button \n            variant=\"primary\"\n            onClick={() => {\n              handleMakePaymentClicked();\n            }}\n            disabled={isLoading}\n          >\n            Confirm\n          </Button>\n          <Button \n            variant=\"secondary\"\n            onClick={() => { \n              setModalMakePaymentOpen(false) \n            }}\n            disabled={isLoading}\n          >\n            Close\n          </Button>\n        </Modal.Footer>\n      </Modal>\n\n      <Modal\n        show={isModalSurveyOpen}\n      >\n        <Modal.Header>\n          <Modal.Title>\n            New Member Survey\n          </Modal.Title>\n        </Modal.Header>\n\n        <Modal.Body>\n          <p>\n            Select a Survey Type\n          </p>\n          <select\n            value={surveyId}\n            onChange={(event) => {\n              setSurveyId(event.target.value);\n            }}\n            className=\"form-control\"\n          >\n            {props.surveys.map((o) => {\n                return (\n                  <option value={o.id} key={`survey-${o.id}`}>\n                    {o.name}\n                  </option>\n                )\n              })\n            }\n          </select>\n        </Modal.Body>\n\n        <Modal.Footer>\n          <Button \n            variant=\"primary\"\n            onClick={() => {\n              handleCreateSurveyClicked();\n            }}\n            disabled={isLoading}\n          >\n            Confirm\n          </Button>\n          <Button \n            variant=\"secondary\"\n            onClick={() => { \n              setIsModalSurveyOpen(false) \n            }}\n            disabled={isLoading}\n          >\n            Close\n          </Button>\n        </Modal.Footer>\n      </Modal>\n\n      <Modal\n        show={isModalResignFromInsuranceOpen}\n      >\n        <Modal.Header>\n          <Modal.Title>\n            Resigned From Insurance\n          </Modal.Title>\n        </Modal.Header>\n        <Modal.Body>\n          <div className=\"row\">\n            <div className=\"form-group\">\n              <label>\n               Date Resigned\n              </label>\n              <input\n                className=\"form-control\"\n                value={dateResignedInsurance}\n                disabled={isLoading}\n                type=\"date\"\n                onChange={(event) => { setDateResignedInsurance(event.target.value) } }\n              />\n              <label>\n               Reason of resignation\n              </label>\n              <input\n                className=\"form-control\"\n                value={reason}\n                disabled={isLoading}\n                type=\"text\"\n                onChange={(event) => { setReason(event.target.value) } }\n              />\n            </div>\n          </div>\n        </Modal.Body>\n        <Modal.Footer>\n          <Button \n            variant=\"primary\"\n            onClick={() => {\n              handleResignedInsuranceClicked();\n            }}\n            disabled={isLoading}\n          >\n            Confirm\n          </Button>\n          <Button \n            variant=\"secondary\"\n            onClick={() => { \n              setModalResignFromInsuranceOpen(false) \n            }}\n            disabled={isLoading}\n          >\n            Close\n          </Button>\n        </Modal.Footer>\n      </Modal>\n\n      <Modal\n        show={isModalUnlockOpen}\n      >\n        <Modal.Header>\n          <Modal.Title>\n            Unlock to Modify\n          </Modal.Title>\n        </Modal.Header>\n\n        <Modal.Body>\n          <p>\n            Are you sure you want to unlock this member?\n          </p>\n        </Modal.Body>\n\n        <Modal.Footer>\n          <Button \n            variant=\"primary\"\n            onClick={() => { handleConfirmClicked() }}\n            disabled={isLoading}\n          >\n            Confirm\n          </Button>\n          <Button \n            variant=\"secondary\"\n            onClick={() => { setIsModalUnlockOpen(false) }}\n            disabled={isLoading}\n          >\n            Close\n          </Button>\n        </Modal.Footer>\n      </Modal>\n      \n      <Modal\n        show={isModalBalikKasapiOpen}\n      >\n        <Modal.Header>\n          <Modal.Title>\n            Unlock to Modify\n          </Modal.Title>\n        </Modal.Header>\n\n        <Modal.Body>\n          <p>\n            Ibalik kasapi ang miyembro?\n          </p>\n        </Modal.Body>\n\n        <Modal.Footer>\n          <Button \n            variant=\"primary\"\n            onClick={() => { handleConfirmBalikKasapi() }}\n            disabled={isLoading}\n          >\n            Confirm\n          </Button>\n          <Button \n            variant=\"secondary\"\n            onClick={() => { setModalBalikKasapiOpen(false) }}\n            disabled={isLoading}\n          >\n            Close\n          </Button>\n        </Modal.Footer>\n      </Modal>\n\n      <div className=\"row\">\n        <div className=\"col\">\n          <div className=\"note note-info\">\n            <strong>\n              Profile Picture\n            </strong>\n            <p>\n              Mag Upload ng Porfile Picture\n            </p>\n            <button\n              className=\"btn btn-primary\"\n              onClick={() => {\n                setModalProfilePictureOpen(true)\n              }}\n            >\n              Upload Profile Picture\n            </button>     \n          </div>\n        </div>\n      </div>\n      <hr/>\n\n      <div className=\"row\">\n        <div className=\"col\">\n          <div className=\"note note-info\">\n            <strong>\n              Member Survey\n            </strong>\n            <p>\n              Gumawa ng bagong survey.\n            </p>\n            <button\n              className=\"btn btn-primary\"\n              onClick={() => {\n                setIsModalSurveyOpen(true)\n              }}\n            >\n              New Survey\n            </button>\n          </div>\n        </div>\n      </div>\n\n      <hr/>\n\n      {user_MIS_BK_Role && (\n        <>\n        <div className=\"row\">\n          <div className=\"col\">\n            <div className=\"note note-info\">\n              <strong>\n                Member Subscriptions\n              </strong>\n              <p>\n                Subscription status ng member.\n              </p>\n              <ToggleSwitch\n                name={`member-subscription-id`}\n                checked={isMemberSubscribed}\n                onChange={handleMemberSubscription}\n              />\n            </div>\n          </div>\n        </div>\n        <hr/>\n        </>\n      )}\n\n      {user_MIS_FM_Role && (\n        <>\n        <div className=\"row\">\n          <div className=\"col\">\n            <div className=\"note note-info\">\n              <strong>\n                Change Mobile Number\n              </strong>\n              <p>\n                Palitan ang mobile number ni member.\n              </p>\n              <button\n                className=\"btn btn-primary\"\n                onClick={() => {\n                  setModalMobileNumberOpen(true)\n                }}\n              >\n                Change Mobile Number\n              </button>     \n            </div>\n          </div>\n        </div>\n        <hr/>\n        </>\n      )}\n      \n\n      <div className=\"row\">\n        <div className=\"col-md-6\">\n          <div className=\"note note-info\">\n            <strong>\n              Modify\n            </strong>\n            <p>\n              Palitan ang impormasyon ukol sa myembrong ito.\n            </p>\n            {(() => {\n              if(props.member.modifiable) {\n                return (\n                  <button\n                    className=\"btn btn-secondary\"\n                    onClick={() => { window.location.href=`/members/form?id=${props.memberId}` }}\n                  >\n                    Edit Record\n                  </button>\n                )\n              } else {\n                return (\n                  <button\n                    className=\"btn btn-warning\"\n                    onClick={() => { setIsModalUnlockOpen(true) }}\n                  >\n                    <span className=\"bi bi-padlock\"/>\n                    Unlock to Modify\n                  </button>\n                )\n              }\n            })()}\n          </div>\n        </div>\n      </div>\n\n      {(() => {\n        if(props.member.modifiable){\n          return (\n            <>\n              {user_MIS_AO_Role && (\n                <>\n                <br />\n                <div className=\"row\">\n                  <div className=\"col\">\n                    <div className=\"note note-info\">\n                      <strong>\n                        Member Recognition Date\n                      </strong>\n                      <p>\n                        Palitan ang impormasyon ukol sa myembrong ito.\n                      </p>\n                      {(() => {\n                        if(props.member.data[\"recognition_date\"] == null ) {\n                          return (\n                            <button\n                              className=\"btn btn-primary\"\n                              onClick={() => {\n                                setModalRecognitonDateOpen(true)\n                              }}\n                            >\n                              Add Recognition Date\n                            </button>\n                          )\n                        } else {\n                          return (\n                            <button\n                              className=\"btn btn-primary\"\n                              onClick={() => {\n                                setModalUpdateRecognitonDateOpen(true)\n                              }}\n                            >\n                              Update Recognition Date\n                            </button>\n                          )\n                        }            \n                      })()}\n                    </div>\n                  </div>\n                </div>\n               </>\n              )}\n            </>\n          )\n        }\n      })()}\n      \n      <hr/>\n      <div className=\"row\">\n        <div className=\"col\">\n          <div className=\"note note-info\">\n            <strong>\n              Modify\n            </strong>\n            <p>\n              Palitan ang status ng miyember Resing/Balik kasapi.\n            </p>\n            {(() => {\n              if(props.member.status == \"active\") {\n                return (\n                  <button\n                    className=\"btn btn-secondary\"\n                    onClick={() => { window.location.href=`/members/${props.memberId}/form_resignation` }}\n                  >\n                    Resign Member\n                  </button>\n                )\n              } else if(props.member.status == \"resigned\") {\n                return (\n                  <button\n                    className=\"btn btn-warning\"\n                    onClick={() => { setModalBalikKasapiOpen(true) }}\n                  >\n                    <span className=\"bi bi-padlock\"/>\n                    Balik Kasapi\n                  </button>\n                )\n              }\n            })()}\n          </div>\n        </div>\n      </div>\n\n      <hr/>\n\n      <div className=\"row\">\n        <div className=\"col\">\n          <div className=\"note note-info\">\n            <strong>\n              Generate Blip Form\n            </strong>\n            <p>\n              Generate BLIP FORM PDF\n            </p>\n            <button\n              className=\"btn btn-primary\"\n              onClick={() => { window.location.href=`/members/${props.memberId}/blip_form_pdf` }}\n            >\n              Generate BLIP Form\n            </button>     \n          </div>\n        </div>\n      </div>\n      <hr/>\n\n      <div className=\"row\">\n        <div className=\"col\">\n          <div className=\"note note-info\">\n            <strong>\n              Generate Certificate Form\n            </strong>\n            <p>\n            Generate Certificate Form PDF\n            </p>\n            <button\n              className=\"btn btn-primary\"\n              onClick={() => { window.location.href=`/members/${props.memberId}/certificate_form_pdf` }}\n            >\n              Generate Certificate Form\n            </button>     \n          </div>\n        </div>\n      </div>\n      <hr/>\n\n      {user_MIS_AO_Role && (\n        <>\n        <div className=\"row\">\n          <div className=\"col\">\n            <div className=\"note note-info\">\n              <strong>\n                Reinstatement\n              </strong>\n              <p>\n                Reinstate member\n              </p>\n              {(() => {\n                if(props.member.data[\"reinstatement\"] == null ) {\n                  return (\n                    <button\n                      className=\"btn btn-primary\"\n                      onClick={() => {\n                        setModalReinstateOpen(true)\n                      }}\n                    >\n                      Reinstate\n                    </button>\n                  )\n                } else if(props.member.data[\"reinstatement\"][\"is_reinstated\"] == true || props.member.status == \"pending\"){\n                  return (\n                    <button\n                      className=\"btn btn-secondary\"\n                      onClick={() => { setModalReinstateOpen(false) }}\n                    >\n                      <span className=\"bi bi-padlock\"/>\n                      Already Reinstated OR Pending Status\n                    </button>\n                  )\n                }            \n              })()}\n            </div>\n          </div>\n        </div>\n        </>\n      )}\n \n\n      {(() => {\n        if (customVariable == true) {\n          <hr/>\n          return(\n            <div className=\"row\">\n              <div className=\"col\">\n                <div className=\"note note-info\">\n                  <strong>\n                    Reclassified\n                  </strong>\n                  <p>\n                    Reclassified Member\n                  </p>\n                    <button\n                      className=\"btn btn-primary\"\n                        onClick={() => {\n                          setModalReclassifiedOpen(true)\n                        }}\n                        >\n                      Reclassified\n                    </button>\n                </div>\n              </div>\n            </div>\n          )   \n        }\n      })()}\n\n      <hr/>\n      <div className=\"row\">\n        <div className=\"col\">\n          <div className=\"note note-info\">\n            <strong>\n              Claims Copy PDF\n            </strong>\n            <p>\n              Claims Copy PDF\n            </p>\n              <button\n                className=\"btn btn-primary\"\n                  onClick={() => {\n                    setModalClaimsCopyPDFOpen(true)\n                  }}\n                  >\n                Claims Copy PDF\n              </button>\n          </div>\n        </div>\n      </div>\n      <hr/>\n\n      <div className=\"row\">\n        <div className=\"col\">\n          <div className=\"note note-info\">\n            <strong>\n              Resigned From Insurance\n            </strong>\n            <p>\n              Resigned From Insurance\n            </p>\n            <button\n              className=\"btn btn-primary\"\n              onClick={() => {\n                setModalResignFromInsuranceOpen(true)\n              }}\n            >\n              Resigned From Insurance\n            </button>     \n          </div>\n        </div>\n      </div>\n      <hr/>\n\n      <div className=\"row\">\n        <div className=\"col\">\n          <div className=\"note note-info\">\n            <strong>\n              Clip Make Payment\n            </strong>\n            {/* <p>\n              Clip Make Payment\n            </p> */}\n            <br/>\n            <br/>\n            <button\n              className=\"btn btn-primary\"\n              onClick={() => {\n                setModalMakePaymentOpen(true)\n              }}\n            >\n              Clip Make Payment\n            </button>     \n          </div>\n        </div>\n      </div>\n      <hr/>\n\n      <div className=\"row\">\n        <div className=\"col\">\n          <div className=\"note note-info\">\n            {(() => {\n              if(props.member.status == \"pending\" && props.member.identification_number == null) {\n                return (\n                  <button\n                    className=\"btn btn-danger\"\n                    onClick={() => {\n                setIsModalDelete(true)\n              }}\n                  >\n                    Delete member\n                  </button>\n                )\n              } else if(props.member.status == \"active\") {\n                return (\n                  <button\n                    className=\"btn btn-secondary\"\n                    onClick={() => { setIsModalDelete(false) }}\n                  >\n                    <span className=\"bi bi-padlock\"/>\n                    Delete Member\n                  </button>\n                )\n              }\n            })()}\n          </div>\n        </div>\n      </div>\n      <Modal\n        show={isModalDelete}\n      >\n        <Modal.Header>\n          <Modal.Title>\n            Delete Member\n          </Modal.Title>\n        </Modal.Header>\n\n        <Modal.Body>\n          <p>\n            Are you sure you want to delete this member?\n          </p>\n        </Modal.Body>\n\n        <Modal.Footer>\n          <Button \n            variant=\"primary\"\n            onClick={() => { handleConfirmDelete() }}\n            disabled={isLoading}\n          >\n            Confirm\n          </Button>\n          <Button \n            variant=\"secondary\"\n            onClick={() => { setIsModalDelete(false) }}\n            disabled={isLoading}\n          >\n            Close\n          </Button>\n        </Modal.Footer>\n      </Modal>\n    </>\n  )\n}\n", "import React from \"react\";\n\nexport default ToggleSwitch = (props) => {\n  console.log(props);\n  return (\n    <div className=\"toggle-switch\">\n      <input\n        type=\"checkbox\"\n        className=\"toggle-switch-checkbox\"\n        name={props.name}\n        id={props.name}\n        checked={props.checked}\n        onChange={props.onChange}\n      />\n      <label\n        className=\"toggle-switch-label\"\n        htmlFor={props.name}\n      >\n        <span className=\"toggle-switch-inner\"/>\n        <span className=\"toggle-switch-switch\"/>\n      </label>\n    </div>\n  )\n}\n", "/**\n * The code was extracted from:\n * https://github.com/davidchambers/Base64.js\n */\n\nvar chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n\nfunction InvalidCharacterError(message) {\n    this.message = message;\n}\n\nInvalidCharacterError.prototype = new Error();\nInvalidCharacterError.prototype.name = \"InvalidCharacterError\";\n\nfunction polyfill(input) {\n    var str = String(input).replace(/=+$/, \"\");\n    if (str.length % 4 == 1) {\n        throw new InvalidCharacterError(\n            \"'atob' failed: The string to be decoded is not correctly encoded.\"\n        );\n    }\n    for (\n        // initialize result and counters\n        var bc = 0, bs, buffer, idx = 0, output = \"\";\n        // get next character\n        (buffer = str.charAt(idx++));\n        // character found in table? initialize bit storage and add its ascii value;\n        ~buffer &&\n        ((bs = bc % 4 ? bs * 64 + buffer : buffer),\n            // and if not first of each 4 characters,\n            // convert the first 8 bits to one ascii character\n            bc++ % 4) ?\n        (output += String.fromCharCode(255 & (bs >> ((-2 * bc) & 6)))) :\n        0\n    ) {\n        // try to find character in table (0-63, not found => -1)\n        buffer = chars.indexOf(buffer);\n    }\n    return output;\n}\n\nexport default (typeof window !== \"undefined\" &&\n    window.atob &&\n    window.atob.bind(window)) ||\npolyfill;", "import atob from \"./atob\";\n\nfunction b64DecodeUnicode(str) {\n    return decodeURIComponent(\n        atob(str).replace(/(.)/g, function(m, p) {\n            var code = p.charCodeAt(0).toString(16).toUpperCase();\n            if (code.length < 2) {\n                code = \"0\" + code;\n            }\n            return \"%\" + code;\n        })\n    );\n}\n\nexport default function(str) {\n    var output = str.replace(/-/g, \"+\").replace(/_/g, \"/\");\n    switch (output.length % 4) {\n        case 0:\n            break;\n        case 2:\n            output += \"==\";\n            break;\n        case 3:\n            output += \"=\";\n            break;\n        default:\n            throw \"Illegal base64url string!\";\n    }\n\n    try {\n        return b64DecodeUnicode(output);\n    } catch (err) {\n        return atob(output);\n    }\n}", "\"use strict\";\n\nimport base64_url_decode from \"./base64_url_decode\";\n\nexport function InvalidTokenError(message) {\n    this.message = message;\n}\n\nInvalidTokenError.prototype = new Error();\nInvalidTokenError.prototype.name = \"InvalidTokenError\";\n\nexport default function(token, options) {\n    if (typeof token !== \"string\") {\n        throw new InvalidTokenError(\"Invalid token specified\");\n    }\n\n    options = options || {};\n    var pos = options.header === true ? 0 : 1;\n    try {\n        return JSON.parse(base64_url_decode(token.split(\".\")[pos]));\n    } catch (e) {\n        throw new InvalidTokenError(\"Invalid token specified: \" + e.message);\n    }\n}", "import React from 'react';\nimport $ from 'jquery';\n\nimport SkCubeLoading from '../SkCubeLoading';\nimport ErrorDisplay from '../ErrorDisplay';\n\nimport FormApplicationHeader from './FormApplicationHeader';\nimport FormPersonalInfo from './FormPersonalInfo';\nimport FormNumChildren from './FormNumChildren';\nimport FormContactNumbers from './FormContactNumbers';\nimport FormGovernmentIdentificationNumbers from './FormGovernmentIdentificationNumbers';\nimport FormSpouse from './FormSpouse';\nimport FormExperience from './FormExperience';\nimport FormRecruit from './FormRecruit';\nimport FormBankAccounts from './FormBankAccounts';\nimport FormLegalDependents from './FormLegalDependents';\nimport FormBeneficiaries from './FormBeneficiaries';\nimport FormReferrals from './FormReferrals';\n\nexport default class FormDisplay extends React.Component {\n  constructor(props) {\n    super(props);\n\n    this.state  = {\n      isLoading: true,\n      formDisabled: false,\n      data: false,\n      memberId: props.id,\n      authenticityToken: props.authenticityToken,\n      branches: [],\n      centers: [],\n      membershipArrangements: props.membershipArrangements || [],\n      membershipTypes: props.membershipTypes || [],\n      referrers: props.referrers || [],\n      coordinators: props.coordinators || [],\n      authError: false,\n      currentMembershipType: {\n        value: \"\",\n        label: \"\"\n      },\n      currentBranch: {\n        value: \"\",\n        label: \"\"\n      },\n      currentCenter: {\n        value: \"\",\n        label: \"\"\n      },\n      currentMembershipArrangement: {\n        value: \"\",\n        label: \"\"\n      },\n      currentReferrer: {\n        value: \"\",\n        label: \"\"\n      },\n       currentCoordinator: {\n        value: \"\",\n        label: \"\"\n      },\n      currentMemberType: \"Regular\",\n      errors: false\n    };\n  }\n\n  componentDidMount() {\n    this.fetch();\n  }\n\n  updateCurrentMemberType(o) {\n    var data          = this.state.data;\n    data.member_type  = o;\n\n    this.setState({\n      currentMemberType: data.member_type,\n      data: data\n    });\n  }\n\n  updateCurrentCenter(o) {\n    var data          = false;\n    var currentCenter = o;\n\n    if(this.state.data) {\n      data  = this.state.data;\n      data.center_id    = o.value;\n      data.center_name  = o.label;\n\n      currentCenter = {\n        value: data.center_id,\n        label: data.center_name\n      }\n    }\n\n    this.setState({\n      currentCenter: currentCenter,\n      data: data\n    });\n  }\n\n  updateCurrentMembershipArrangement(o) {\n    var data  = this.state.data;\n    data.membership_arrangement_id    = o.value;\n    data.membership_arrangement_name  = o.label;\n\n    this.setState({\n      data: data,\n      currentMembershipArrangement: o\n    });\n  }\n\n  updateCurrentMembershipType(o) {\n    var data  = this.state.data;\n    data.membership_type_id   = o.value;\n    data.membership_type_name = o.label;\n\n    this.setState({\n      data: data,\n      currentMembershipType: o\n    });\n  }\n\n  updateCurrentReferrer(o) {\n    var data  = this.state.data;\n    data.referrer_id   = o.value;\n    data.referrer_name = o.label;\n\n    this.setState({\n      data: data,\n      currentReferrer: o\n    });\n  }\n\n  updateCurrentCoordinator(o) {\n    var data  = this.state.data;\n    data.coordinator_id   = o.value;\n    data.coordinator_name = o.label;\n\n    this.setState({\n      data: data,\n      currentCoordinator: o\n    });\n  }\n\n  updateCurrentBranch(o) {\n    var centers = [];\n    for(var i = 0; i < this.state.branches.length; i++) {\n      if(this.state.branches[i].id == o.value) {\n        for(var j = 0; j < this.state.branches[i].centers.length; j++) {\n          centers = this.state.branches[i].centers;\n        }\n      }\n    }\n\n    var data  = false;\n    if(this.state.data) {\n      data              = this.state.data;\n      data.branch_id    = o.value;\n      data.branch_name  = o.label;\n    }\n\n    var currentCenter = {\n      value: \"\",\n      label: \"\"\n    }\n\n    if(centers.length > 0) {\n      currentCenter.value = centers[0].id;\n      currentCenter.label = centers[0].name;\n    }\n\n    this.setState({\n      data: data,\n      currentBranch: o,\n      centers: centers,\n      currentCenter: currentCenter\n    });\n\n  }\n\n  fetchBranches() {\n    var context = this;\n\n    $.ajax({\n      url: \"/api/v1/branches\",\n      method: \"GET\",\n      data: {\n        \n      },\n      dataType: 'json',\n      success: function(response) {\n        var tempCurrentBranch = {\n          value: response.branches[0].id,\n          label: response.branches[0].name\n        };\n\n        var tempCurrentCenter = {\n          value: response.branches[0].centers[0].id,\n          label: response.branches[0].centers[0].name\n        }\n\n        context.updateCurrentBranch(tempCurrentBranch);\n        context.updateCurrentCenter(tempCurrentCenter);\n\n        context.setState({\n          branches: response.branches,\n          centers: response.branches[0].centers,\n          currentBranch: tempCurrentBranch,\n          currentCenter: tempCurrentCenter\n        });\n      },\n      error: function(response) {\n        console.log(response);\n        alert(\"Error in fetching branches\");\n\n        context.setState({\n          branches: []\n        });\n      }\n    });\n  }\n\n  save() {\n    var context = this;\n    var state   = context.state;\n\n    //console.log(data);\n\n    $.ajax({\n      url: \"/api/v1/members/save\",\n      method: \"POST\",\n      dataType: 'json',\n      data: {\n        id: state.memberId,\n        member_data: JSON.stringify(state.data),\n        authenticity_token: state.authenticityToken\n      },\n      success: function(response) {\n        window.location.href=\"/members/\" + response.id + \"/display\"\n      },\n      error: function(response) {\n        try {\n          context.setState({\n            errors: JSON.parse(response.responseText),\n            formDisabled: false\n          });\n        } catch(err) {\n          alert(\"Something went wrong\");\n          context.setState({\n            errors: false,\n            formDisabled: false\n          });\n        }\n      }\n    });\n  }\n\n  fetch() {\n    var context = this;\n\n    $.ajax({\n      url: \"/api/v1/members/fetch\",\n      method: \"GET\",\n      data: {\n        id: context.state.memberId\n      },\n      dataType: 'json',\n      success: function(response) {\n        console.log(response);\n\n        var centers = [];\n\n        if(response.branches.length > 0) {\n          centers = response.branches[0].centers;\n        }\n\n        context.setState({\n          isLoading: false,\n          data: response,\n          branches: response.branches,\n          centers: centers,\n          currentMemberType: response.member_type,\n          currentBranch: {\n            value: response.branch_id,\n            label: response.branch_name\n          },\n          currentCenter: {\n            value: response.center_id,\n            label: response.center_name\n          },\n          currentMembershipArrangement: {\n            value: response.membership_arrangement_id,\n            label: response.membership_arrangement_name\n          },\n          currentMembershipType: {\n            value: response.membership_type_id,\n            label: response.membership_type_name\n          },\n          currentReferrer: {\n            value: response.referrer_id,\n            label: response.referrer_name\n          },\n          currentCoordinator: {\n            value: response.coordinator_id,\n            label: response.coordinator_name\n          }\n        });\n      },\n      error: function(response) {\n        console.log(response);\n\n        context.setState({\n          authError: JSON.parse(response.responseText),\n          errors: JSON.parse(response.responseText),\n          isLoading: false,\n          data: false\n        });\n      }\n    });\n  }\n\n  handleSave() {\n    var context = this;\n    var state   = context.state;\n\n    context.setState({\n      formDisabled: true,\n      errors: false\n    });\n\n    context.save();\n  }\n\n  handleCancel() {\n    var context = this;\n    var state   = context.state;\n\n    if(state.id) {\n      window.location.href=\"/members/\" + state.id;\n    } else {\n      window.location.href=\"/members\";\n    }\n  }\n\n  updateData(data) {\n    this.setState({\n      data: data\n    });\n  }\n\n  renderErrorDisplay() {\n    if(this.state.errors) {\n      return  (\n        <ErrorDisplay\n          errors={this.state.errors}\n        />\n      );\n    }\n  }\n\n  render() {\n    var context = this;\n    var state   = context.state;\n\n    var currentCenter                 = state.currentCenter;\n    var currentBranch                 = state.currentBranch;\n    var currentMemberType             = state.currentMemberType;\n    var currentMembershipArrangement  = state.currentMembershipArrangement;\n    var currentMembershipType         = state.currentMembershipType;\n\n    var currentReferrer               = state.currentReferrer;\n    var currentCoordinator            = state.currentCoordinator;\n\n    var memberTypes             = this.props.memberTypes;\n    var membershipArrangements  = this.props.membershipArrangements;\n    var membershipTypes         = this.props.membershipTypes;\n    var referrers               = this.props.referrers;\n    var coordinators            = this.props.coordinators;\n\n    if(state.isLoading) {\n      return  (\n        <SkCubeLoading/>\n      );\n    } else if(state.authError != false) {\n      return  (\n        <div>\n          {this.renderErrorDisplay()}\n        </div>\n      );\n    } else if(state.data != false) {\n      return (\n        <div id=\"member-form\">\n          <h2>Member Form</h2>\n          <hr/>\n          {this.renderErrorDisplay()}\n          <div className=\"row\">\n            <div className=\"col\">\n              <FormApplicationHeader\n                data={state.data}\n                currentBranch={currentBranch}\n                currentCenter={currentCenter}\n                currentMemberType={currentMemberType}\n                currentMembershipArrangement={currentMembershipArrangement}\n                currentMembershipType={currentMembershipType}\n                branches={state.branches}\n                centers={state.centers}\n                memberTypes={memberTypes}\n                membershipArrangements={membershipArrangements}\n                membershipTypes={membershipTypes}\n                updateData={this.updateData.bind(this)}\n                formDisabled={state.formDisabled}\n                updateCurrentBranch={this.updateCurrentBranch.bind(this)}\n                updateCurrentCenter={this.updateCurrentCenter.bind(this)}\n                updateCurrentMemberType={this.updateCurrentMemberType.bind(this)}\n                updateCurrentMembershipArrangement={this.updateCurrentMembershipArrangement.bind(this)}\n                updateCurrentMembershipType={this.updateCurrentMembershipType.bind(this)}\n              />    \n\n              <div className=\"card\">\n                <div className=\"card-header\">\n                  Personal na Impormasyon\n                </div>\n                <div className=\"card-body\">\n                  <FormPersonalInfo\n                    data={state.data}\n                    updateData={this.updateData.bind(this)}\n                    formDisabled={state.formDisabled}\n                  />\n\n                  <FormNumChildren\n                    data={state.data}\n                    updateData={this.updateData.bind(this)}\n                    formDisabled={state.formDisabled}\n                  />\n\n                  <FormContactNumbers\n                    data={state.data}\n                    updateData={this.updateData.bind(this)}\n                    formDisabled={state.formDisabled}\n                  />\n\n                  <FormGovernmentIdentificationNumbers\n                    data={state.data}\n                    updateData={this.updateData.bind(this)}\n                    formDisabled={state.formDisabled}\n                  />\n                </div>\n              </div>\n\n              <div className=\"card\">\n                <div className=\"card-header\">\n                  Kasalukuyang Bangko\n                </div>\n                <div className=\"card-body\">\n                  <FormBankAccounts\n                    data={state.data}\n                    updateData={this.updateData.bind(this)}\n                    formDisabled={state.formDisabled}\n                  />\n                </div>\n              </div>\n\n              <div className=\"card\">\n                <div className=\"card-header\">\n                  Personal na Impormasyon ng Asawa o Kinakasama (Common-law Spouse)\n                </div>\n                <div className=\"card-body\">\n                  <FormSpouse\n                    data={state.data}\n                    updateData={this.updateData.bind(this)}\n                    formDisabled={state.formDisabled}\n                  />\n                </div>\n              </div>\n\n              <div className=\"card\">\n                <div className=\"card-header\">\n                  Personal na Impormasyon ng mga Legal na Dependents\n                </div>\n                <div className=\"card-body\">\n                  <FormLegalDependents\n                    data={state.data}\n                    updateData={this.updateData.bind(this)}\n                    formDisabled={state.formDisabled}\n                  />\n                </div>\n              </div>\n\n              <div className=\"card\">\n                <div className=\"card-header\">\n                  Personal na Impormasyon sa mga Beneficiaries\n                </div>\n                <div className=\"card-body\">\n                  <FormBeneficiaries\n                    data={state.data}\n                    updateData={this.updateData.bind(this)}\n                    formDisabled={state.formDisabled}\n                  />\n                </div>\n              </div>\n\n              <div className=\"card\">\n                <div className=\"card-header\">\n                  Background sa Pahiraman\n                </div>\n                <div className=\"card-body\">\n                  <FormExperience\n                    data={state.data}\n                    updateData={this.updateData.bind(this)}\n                    formDisabled={state.formDisabled}\n                  />\n                </div>\n              </div>\n\n              <div className=\"card\">\n                <div className=\"card-header\">\n                  Referrals\n                </div>\n                <div className=\"card-body\">\n                  <FormReferrals\n                    data={state.data}\n                    currentReferrer={currentReferrer}\n                    currentCoordinator={currentCoordinator}\n                    referrers={referrers}\n                    coordinators={coordinators}\n                    updateData={this.updateData.bind(this)}\n                    formDisabled={state.formDisabled}\n                    updateCurrentReferrer={this.updateCurrentReferrer.bind(this)}\n                    updateCurrentCoordinator={this.updateCurrentCoordinator.bind(this)}\n                  />\n                </div>\n              </div>\n\n              <div className=\"card\">\n                <div className=\"card-header\">\n                  Recruit\n                </div>\n                <div className=\"card-body\">\n                  <FormRecruit\n                    data={state.data}\n                    updateData={this.updateData.bind(this)}\n                    formDisabled={state.formDisabled}\n                  />\n                </div>\n              </div>\n\n            </div>\n          </div>\n          <div className=\"row\">\n            <div className=\"col\">\n              {this.renderErrorDisplay()}\n              <div className=\"btn-group\">\n                <button \n                  className=\"btn btn-primary\" \n                  onClick={this.handleSave.bind(this)}\n                  disabled={this.state.formDisabled}\n                >\n                  <span className=\"bi bi-check\"/>\n                  Save Record\n                </button>\n                <button \n                  className=\"btn btn-danger\" \n                  onClick={this.handleCancel.bind(this)}\n                  disabled={this.state.formDisabled}\n                >\n                  <span className=\"bi bi-x\"/>\n                  Cancel\n                </button>\n              </div>\n            </div>\n          </div>\n        </div>\n      );\n    } else {\n      <div>\n        No data\n      </div>\n    }\n  }\n}\n", "import React from \"react\";\n\nexport default class ErrorDisplay extends React.Component {\n  constructor(props) {\n    super(props);\n  }\n\n  renderFullMessages() {\n    var context       = this;\n    var fullMessages  = this.props.errors.full_messages;\n\n    var listItemMessages  = [];\n\n    console.log(this.props);\n\n    for(var i = 0; i < fullMessages.length; i++) {\n      listItemMessages.push(\n        <li key={\"error-message-\" + i}>\n          {fullMessages[i]}\n        </li>\n      );\n    }\n\n    return listItemMessages;\n  };\n\n  render() {\n    return  (\n      <div className=\"error-display\">\n        <div className=\"alert alert-danger\">\n          <div className=\"row\">\n            <div className=\"col\">\n              <br/>\n              <p>\n                <strong>\n                  The following errors occurred:\n                </strong>\n              </p>\n              <ul>\n                {this.renderFullMessages()}\n              </ul>\n            </div>\n          </div>\n        </div>\n      </div>\n    );\n  }\n}\n", "import React from \"react\";\nimport Select from 'react-select';\n\nexport default class FormApplicationHeader extends React.Component {\n  constructor(props) {\n    super(props);\n  }\n\n  handleMembershipTypeChanged(o) {\n    if(o) {\n      this.props.updateCurrentMembershipType(o);\n    }\n  }\n\n  handleMembershipArrangementChanged(o) {\n    if(o) {\n      this.props.updateCurrentMembershipArrangement(o);\n    }\n  }\n\n  handleBranchChanged(o) {\n    if(o) {\n      this.props.updateCurrentBranch(o);\n    }\n  }\n\n  handleCenterChanged(o) {\n    if(o) {\n      this.props.updateCurrentCenter(o);\n    }\n  }\n\n  handleMemberTypeChanged(event) {\n    this.props.updateCurrentMemberType(event.target.value);\n  }\n\n  render() {\n    var branchOptions                 = [];\n    var centerOptions                 = [];\n    var memberTypeOptions             = [];\n    var membershipArrangementOptions  = [];\n    var membershipTypeOptions         = [];\n\n    for(var i = 0; i < this.props.memberTypes.length; i++) {\n      memberTypeOptions.push(\n        <option key={\"member-type-\" + i} value={this.props.memberTypes[i]}>\n          {this.props.memberTypes[i]}\n        </option>\n      );\n    }\n\n    for(var i = 0; i < this.props.membershipArrangements.length; i++) {\n      membershipArrangementOptions.push({\n        value: this.props.membershipArrangements[i].id,\n        label: this.props.membershipArrangements[i].name\n      });\n    }\n\n    for(var i = 0; i < this.props.membershipTypes.length; i++) {\n      membershipTypeOptions.push({\n        value: this.props.membershipTypes[i].id,\n        label: this.props.membershipTypes[i].name\n      });\n    }\n\n    for(var i = 0; i < this.props.branches.length; i++) {\n      if(this.props.branches[i].id == this.props.currentBranch.value) {\n        for(var j = 0; j < this.props.branches[i].centers.length; j++) {\n          centerOptions.push({\n            value: this.props.branches[i].centers[j].id,\n            label: this.props.branches[i].centers[j].name\n          });\n        }\n      }\n\n      branchOptions.push({\n        value: this.props.branches[i].id,\n        label: this.props.branches[i].name\n      });\n    }\n\n    return  (\n      <div className=\"card\">\n        <div className=\"card-header\">\n          Application for Membership\n        </div>\n        <div className=\"card-body\">\n          <div className=\"row\">\n            <div className=\"col-md-3 col-xs-12\">\n              <div className=\"form-group\">\n                <label>Branch</label>\n                <Select\n                  value={this.props.currentBranch}\n                  options={branchOptions}\n                  onChange={this.handleBranchChanged.bind(this)}\n                  disabled={this.props.formDisabled}\n                />\n                <br/>\n              </div>\n            </div>\n            <div className=\"col-md-3 col-xs-12\">\n              <div className=\"form-group\">\n                <label>Center</label>\n                <Select\n                  value={this.props.currentCenter}\n                  options={centerOptions}\n                  onChange={this.handleCenterChanged.bind(this)}\n                  disabled={this.props.formDisabled}\n                />\n                <br/>\n              </div>\n            </div>\n            <div className=\"col-md-3 col-xs-12\">\n              <div className=\"form-group\">\n                <label>Member Type</label>\n                <Select\n                  value={this.props.currentMembershipType}\n                  options={membershipTypeOptions}\n                  onChange={this.handleMembershipTypeChanged.bind(this)}\n                  disabled={this.props.formDisabled}\n                />\n                <br/>\n              </div>\n            </div>\n            <div className=\"col-md-3 col-xs-12\">\n              <div className=\"form-group\">\n                <label>\n                  Arrangement\n                </label>\n                <Select\n                  value={this.props.currentMembershipArrangement}\n                  options={membershipArrangementOptions}\n                  onChange={this.handleMembershipArrangementChanged.bind(this)}\n                  disabled={this.props.formDisabled}\n                />\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n    );\n  }\n}\n", "import React from \"react\";\nimport Select from 'react-select';\n\nimport {getReligionOptions} from '../utils/helpers';\nimport AddressService from '../utils/AddressService';\n\nexport default class FormPersonalInfo extends React.Component {\n  constructor(props) {\n    super(props);\n    this.state = {\n      regions: [],\n      provinces: [],\n      municipalities: [],\n      barangays: [],\n    }\n  }\n\n  // async componentDidMount() {\n  //   const dataFetchers = [\n  //     { key: 'regions', method: AddressService.getRegions },\n  //     { key: 'provinces', method: AddressService.getProvince },\n  //     { key: 'municipalities', method: AddressService.getMunicipality },\n  //     { key: 'barangay', method: AddressService.getDistricts }\n  //   ];\n\n  //   for (const { key, method } of dataFetchers) {\n  //     try {\n  //       const data = await method();\n  //       this.setState({ [key]: data });\n  //     } catch (error) {\n  //       console.error(`Error fetching ${key}: `, error);\n  //     }\n  //   }\n  // }\n\n  async componentDidMount() {\n    try {\n      const regions = await AddressService.getRegions();\n      this.setState({ regions })\n      const provinces = await AddressService.getProvince();\n      const municipalities = await AddressService.getMunicipality();\n      const barangays = await AddressService.getDistricts();\n      this.setState({ regions, provinces, municipalities, barangays });\n\n      const selectedRegion = this.props.data.data.address.region;\n      if (selectedRegion) {\n        const provinces = await AddressService.getProvince(selectedRegion);\n        this.setState({ provinces });\n\n      const selectedProvince = this.props.data.data.address.province;\n        if (selectedProvince) {\n          const municipalities = await AddressService.getMunicipality(selectedProvince);\n          this.setState({ municipalities });\n\n          const selectedCity = this.props.data.data.address.city;\n          if (selectedCity) {\n            const barangays = await AddressService.getDistricts(selectedCity);\n            this.setState({ barangays });\n          }\n        }\n      }\n    } catch (error) {\n      console.error(\"Error fetching data: \", error);\n    }\n  }\n\n  handleIdentificationNumberChanged(event) {\n    var data = this.props.data;\n    data.identification_number = event.target.value ? event.target.value.toUpperCase() : \"\";\n\n    this.props.updateData(data);\n  }\n\n  handleFirstNameChanged(event) {\n    var data        = this.props.data;\n    data.first_name = event.target.value ? event.target.value.toUpperCase() : \"\";\n\n    this.props.updateData(data);\n  }\n\n  handleMiddleNameChanged(event) {\n    var data          = this.props.data;\n    data.middle_name  = event.target.value ? event.target.value.toUpperCase() : \"\";\n\n    this.props.updateData(data);\n  }\n\n  handleLastNameChanged(event) {\n    var data        = this.props.data;\n    data.last_name  = event.target.value ? event.target.value.toUpperCase() : \"\";\n\n    this.props.updateData(data);\n  }\n  \n  handleMothersLastNameChanged(event) {\n    var data        = this.props.data;\n    data.data.mothers_last_name  = event.target.value ? event.target.value.toUpperCase() : \"\";\n\n    this.props.updateData(data);\n  }\n  handleMothersFirstNameChanged(event) {\n    var data        = this.props.data;\n    data.data.mothers_first_name  = event.target.value ? event.target.value.toUpperCase() : \"\";\n\n    this.props.updateData(data);\n  }\n  handleMothersMiddleNameChanged(event) {\n    var data        = this.props.data;\n    data.data.mothers_middle_name  = event.target.value ? event.target.value.toUpperCase() : \"\";\n\n    this.props.updateData(data);\n  }\n\n  handleAddressRegionChanged(event) {\n    // var data                    = this.props.data;\n    // data.data.address.region    = event.target.value ? event.target.value : \"\";\n    // data.data.address.province  = \"\";\n    // data.data.address.city      = \"\";\n    // data.data.address.district  = \"\";\n\n    // this.props.updateData(data);\n    const region = event.target.value;\n    this.props.updateData({\n      ...this.props.data,\n      data: {\n        ...this.props.data.data,\n        address: {\n          ...this.props.data.data.address,\n          region,\n          province: \"\",\n          city: \"\",\n          district: \"\"\n        }\n      }\n    });\n    // Fetch provinces based on selected region\n    AddressService.getProvince(region).then(provinces => this.setState({ provinces }));\n  }\n\n  handleAddressProvinceChanged(event) {\n    // var data                    = this.props.data;\n    // data.data.address.province  = event.target.value ? event.target.value : \"\";\n    // data.data.address.city      = \"\";\n    // data.data.address.district  = \"\";\n\n    // this.props.updateData(data);\n    const province = event.target.value;\n    this.props.updateData({\n      ...this.props.data,\n      data: {\n        ...this.props.data.data,\n        address: {\n          ...this.props.data.data.address,\n          province,\n          city: \"\",\n          district: \"\"\n        }\n      }\n    });\n    // Fetch municipalities based on selected province\n    AddressService.getMunicipality(province).then(municipalities => this.setState({ municipalities }));\n  }\n\n  handleAddressCityChanged(event) {\n    // var data                    = this.props.data;\n    // data.data.address.city      = event.target.value ? event.target.value.toUpperCase() : \"\";\n    // data.data.address.district  = \"\";\n\n    // this.props.updateData(data);\n    const city = event.target.value;\n    this.props.updateData({\n      ...this.props.data,\n      data: {\n        ...this.props.data.data,\n        address: {\n          ...this.props.data.data.address,\n          city,\n          district: \"\"\n        }\n      }\n    });\n    // Fetch barangays based on selected city\n    AddressService.getDistricts(city).then(barangays => this.setState({ barangays }));\n  }\n\n  handleAddressDistrictChanged(event) {\n    // var data                    = this.props.data;\n    // data.data.address.district  = event.target.value ? event.target.value.toUpperCase() : \"\";\n\n    // this.props.updateData(data);\n    const district = event.target.value;\n    this.props.updateData({\n      ...this.props.data,\n      data: {\n        ...this.props.data.data,\n        address: {\n          ...this.props.data.data.address,\n          district\n        }\n      }\n    });\n  }\n\n  handleAddressStreetChanged(event) {\n    var data                  = this.props.data;\n    data.data.address.street  = event.target.value ? event.target.value.toUpperCase() : \"\";\n\n    this.props.updateData(data);\n  }\n\n  handleAddressOldDistrictChanged(event) {\n    var data                        = this.props.data;\n    data.data.address.old_district  = event.target.value ? event.target.value.toUpperCase() : \"\";\n\n    this.props.updateData(data);\n  }\n\n  handleAddressOldCityChanged(event) {\n    var data                    = this.props.data;\n    data.data.address.old_city  = event.target.value ? event.target.value.toUpperCase() : \"\";\n\n    this.props.updateData(data);\n  }\n\n\n//=======================2nd address\n\n  handleNewAddressStreetChanged(event) {\n    var data                  = this.props.data;\n    data.data.new_address.street  = event.target.value ? event.target.value.toUpperCase() : \"\";\n\n    this.props.updateData(data);\n  }\n\n  handleNewAddressDistrictChanged(event) {\n    var data                    = this.props.data;\n    data.data.new_address.district  = event.target.value ? event.target.value.toUpperCase() : \"\";\n\n    this.props.updateData(data);\n  }\n\n  handleNewAddressCityChanged(event) {\n    var data                = this.props.data;\n    data.data.new_address.city  = event.target.value ? event.target.value.toUpperCase() : \"\";\n\n    this.props.updateData(data);\n  }\n  \n  handleNewAddressProvinceChanged(event) {\n    var data                = this.props.data;\n    data.data.new_address.province  = event.target.value ? event.target.value.toUpperCase() : \"\";\n\n    this.props.updateData(data);\n  }\n  \n  handleNewAddressZipCodeChanged(event) {\n    var data                = this.props.data;\n    data.data.new_address.zip_code  = event.target.value ? event.target.value.toUpperCase() : \"\";\n\n    this.props.updateData(data);\n  }\n\n\n//======================= end of 2nd address\n\n  handleGenderChanged(event) {\n    var data  = this.props.data;\n\n    if(event.target.value) {\n      data.gender = event.target.value;\n      this.props.updateData(data);\n    }\n  }\n\n  handleCivilStatusChanged(event) {\n    var data  = this.props.data;\n    \n    if(event.target.value) {\n      data.civil_status = event.target.value;\n      this.props.updateData(data);\n    }\n  }\n\n  handleHousingTypeChanged(event) {\n    var data  = this.props.data;\n\n    if(event.target.value) {\n      data.data.housing.type  = event.target.value;\n      this.props.updateData(data);\n    }\n  }\n\n  handleHousingNumYearsChanged(event) {\n    var data                    = this.props.data;\n    data.data.housing.num_years = event.target.value;\n    this.props.updateData(data);\n  }\n\n  handleHousingNumMonthsChanged(event) {\n    var data                      = this.props.data;\n    data.data.housing.num_months  = event.target.value;\n    this.props.updateData(data);\n  }\n\n  handleHousingProofChanged(event) {\n    var data                    = this.props.data;\n    data.data.housing.proof     = event.target.value.toUpperCase();\n    this.props.updateData(data);\n  }\n\n  handleDateOfBirthChanged(event) {\n    var data            = this.props.data;\n    data.date_of_birth  = event.target.value;\n    this.props.updateData(data);\n  }\n\n  handlePlaceOfBirthChanged(event) {\n    var data            = this.props.data;\n    data.place_of_birth = event.target.value.toUpperCase();\n    this.props.updateData(data);\n  }\n\n  handleReligionChanged(o) {\n    var data      = this.props.data;\n    data.religion = o.value;\n    this.props.updateData(data);\n  }\n\n  renderRegions() {\n    const { regions } = this.state;\n    const selectedRegion = this.props.data.data.address.region;\n\n    var elements = [\n      <option value=\"\" key=\"region-x\">\n        -- SELECT --\n      </option>\n    ];\n\n    regions.forEach((o, i) => {\n      elements.push(\n        <option value={o.id || o} key={\"region-\" + i} selected={selectedRegion === o.id || selectedRegion === o}>\n          {o.name || o} \n        </option>\n      );\n    });\n    return elements;\n    \n  }\n\n\n  // =================== OLD PROVINCE ADDRESS\n  // renderProvinces() {\n  //   var elements = [\n  //     <option value=\"\" key=\"province-x\">\n  //       -- SELECT --\n  //     </option>\n  //   ]\n\n  //   var region = this.props.data.data.address.region;\n\n  //   AddressService.getProvincesByRegion(region).forEach(function(o, i) {\n  //     elements.push(\n  //       <option value={o} key={\"province-\" + i}>\n  //         {o}\n  //       </option>\n  //     )\n  //   });\n\n  //   return elements;\n  // }\n\n  renderProvinces() {\n    const { provinces } = this.state;\n    const selectedProvince = this.props.data.data.address.province;\n    var elements = [\n      <option value=\"\" key=\"province-x\">\n      -- SELECT --\n      </option>\n    ];\n\n    provinces.forEach((o, i) => {\n      elements.push(\n        <option value={o.id || o} key={\"province-\" + i} selected={selectedProvince === o.id || selectedProvince === o}>\n          {o.name || o} \n        </option>\n      );\n    });\n    return elements;\n  };\n\n  // renderCities() {\n  //   var elements = [\n  //     <option value=\"\" key=\"city-x\">\n  //       -- SELECT --\n  //     </option>\n  //   ]\n\n  //   var region    = this.props.data.data.address.region;\n  //   var province  = this.props.data.data.address.province;\n\n  //   AddressService.getCitiesByRegionAndProvince(region, province).forEach(function(o, i) {\n  //     elements.push(\n  //       <option value={o} key={\"city-\" + i}>\n  //         {o}\n  //       </option>\n  //     )\n  //   });\n\n  //   return elements;\n  // }\n\n  renderCities() {\n    const { municipalities } = this.state;\n    const selectedCity = this.props.data.data.address.city;\n\n    var elements = [\n      <option value=\"\" key=\"municipality-x\">\n      -- SELECT --\n      </option>\n    ];\n\n    municipalities.forEach((o, i) => {\n      elements.push(\n        <option value={o.id || o} key={\"municipality-\" + i} selected={selectedCity === o.id || selectedCity === o}>\n          {o.name || o} \n        </option>\n      );\n    });\n    return elements;\n  };\n\n  // renderDistricts() {\n  //   var elements = [\n  //     <option value=\"\" key=\"district-x\">\n  //       -- SELECT --\n  //     </option>\n  //   ]\n\n  //   var region    = this.props.data.data.address.region;\n  //   var province  = this.props.data.data.address.province;\n  //   var city      = this.props.data.data.address.city;\n\n  //   AddressService.getDistrictsByRegionAndProvinceAndCity(region, province, city).forEach(function(o, i) {\n  //     elements.push(\n  //       <option value={o} key={\"district-\" + i}>\n  //         {o}\n  //       </option>\n  //     )\n  //   });\n \n  //   return elements;\n  // }\n\n  renderBarangay() {\n    const { barangays } = this.state;\n    var selectedBarangay = this.props.data.data.address.district;\n    var elements = [\n      <option value=\"\" key=\"district-x\">\n      -- SELECT --\n      </option>\n    ];\n\n    barangays.forEach((o, i) => {\n      elements.push(\n        <option value={o.id} key={\"district-\" + i} selected={selectedBarangay === o.id || selectedBarangay === o}>\n          {o.name || o}\n        </option>\n      );\n    });\n    return elements;\n  };\n\n  render() {\n    var housingType       = this.props.data.data.housing.type;\n    var housingNumYears   = this.props.data.data.housing.num_years;\n    var housingNumMonths  = this.props.data.data.housing.num_months;\n    var housingProof      = this.props.data.data.housing.proof;\n\n    var currentReligion = {\n      label: this.props.data.religion,\n      value: this.props.data.religion\n    };\n\n    return  (\n      <div>\n        <div className=\"row\">\n          <div className=\"col\">\n            <div className=\"form-group\">\n              <label>Identification Number</label>\n              <input\n                value={this.props.data.identification_number}\n                className=\"form-control\"\n                onChange={this.handleIdentificationNumberChanged.bind(this)}\n                disabled={this.props.formDisabled}\n              />\n            </div>\n            <div className=\"form-group\">\n              <label>Pangalan</label>\n              <input\n                value={this.props.data.first_name}\n                className=\"form-control\"\n                onChange={this.handleFirstNameChanged.bind(this)}\n                disabled={this.props.formDisabled}\n              />\n            </div>\n            <div className=\"form-group\">\n              <label>Gitnang Pangalan</label>\n              <input\n                value={this.props.data.middle_name}\n                className=\"form-control\"\n                onChange={this.handleMiddleNameChanged.bind(this)}\n                disabled={this.props.formDisabled}\n              />\n            </div>\n            <div className=\"form-group\">\n              <label>Apelyido</label>\n              <input\n                value={this.props.data.last_name}\n                className=\"form-control\"\n                onChange={this.handleLastNameChanged.bind(this)}\n                disabled={this.props.formDisabled}\n              />\n            </div>\n          </div>\n        </div>\n        <h5>Mothers Maiden Name</h5> \n        <div className=\"row\">\n          <div className=\"col-md-4\">\n            <div className=\"form-group\">\n              <label>Apelyido</label>\n                <input\n                  value={this.props.data.data.mothers_last_name}\n                  className=\"form-control\"\n                  onChange={this.handleMothersLastNameChanged.bind(this)}\n                  disabled={this.props.formDisabled}\n                />\n            </div>\n            </div>\n        \n            <div className=\"col-md-4\">\n            <div className=\"form-group\">\n              <label>Pangalan</label>\n                <input\n                  value={this.props.data.data.mothers_first_name}\n                  className=\"form-control\"\n                  onChange={this.handleMothersFirstNameChanged.bind(this)}\n                  disabled={this.props.formDisabled}\n                />\n            </div>\n            </div>\n            <div className=\"col-md-4\">\n            <div className=\"form-group\">\n              <label>Gitnang Pangalan</label>\n              <input\n                value={this.props.data.data.mothers_middle_name}\n                className=\"form-control\"\n                onChange={this.handleMothersMiddleNameChanged.bind(this)}\n                disabled={this.props.formDisabled}\n              \n              />\n            </div>\n\n          </div>\n        </div>\n        <h5>\n          Tirahan / Address\n        </h5>\n        <div className=\"row\">\n          <div className=\"col-md-4\">\n            <div className=\"form-group\">\n              <label>* Kalye / Street</label>\n              <input\n                value={this.props.data.data.address.street}\n                className=\"form-control\"\n                onChange={this.handleAddressStreetChanged.bind(this)}\n                disabled={this.props.formDisabled}\n              />\n            </div>\n          </div>\n          <div className=\"col-md-4\">\n            <div className=\"form-group\">\n            {/*  <label>* Barangay (OLD)</label>\n              <input\n                value={this.props.data.data.address.old_district}\n                className=\"form-control\"\n                onChange={this.handleAddressOldDistrictChanged.bind(this)}\n                disabled={this.props.formDisabled}\n            /> */}\n            </div>\n          </div>\n          <div className=\"col-md-4\">\n            <div className=\"form-group\">\n              {/* <label>* Syudad / City (OLD)</label>\n              <input\n                value={this.props.data.data.address.old_city}\n                className=\"form-control\"\n                onChange={this.handleAddressOldCityChanged.bind(this)}\n                disabled={this.props.formDisabled}\n              /> */}\n            </div>\n          </div>\n        </div>\n\n        <div className=\"row\">\n          <div className=\"col-md-3\">\n            <div className=\"form-group\">\n              <label>\n                * Region\n              </label>\n              <select\n                className=\"form-control\"\n                disabled={this.props.formDisabled}\n                value={this.props.data.data.address.region}\n                onChange={this.handleAddressRegionChanged.bind(this)}\n              >\n                {this.renderRegions()}\n              </select>\n            </div>\n          </div>\n          <div className=\"col-md-3\">\n            <div className=\"form-group\">\n              <label>\n                * Province\n              </label>\n              <select\n                className=\"form-control\"\n                disabled={this.props.formDisabled}\n                value={this.props.data.data.address.province}\n                onChange={this.handleAddressProvinceChanged.bind(this)}\n              >\n                {this.renderProvinces()}\n              </select>\n            </div>\n          </div>\n          <div className=\"col-md-3\">\n            <div className=\"form-group\">\n              <label>\n                * Syudad / City\n              </label>\n              <select\n                className=\"form-control\"\n                disabled={this.props.formDisabled}\n                value={this.props.data.data.address.city}\n                onChange={this.handleAddressCityChanged.bind(this)}\n              >\n                {this.renderCities()}\n              </select>\n            </div>\n          </div>\n          <div className=\"col-md-3\">\n            <div className=\"form-group\">\n              <label>\n                * Barangay\n              </label>\n              <select\n                className=\"form-control\"\n                disabled={this.props.formDisabled}\n                value={this.props.data.data.address.district}\n                onChange={this.handleAddressDistrictChanged.bind(this)}\n              >\n                {this.renderBarangay()}\n              </select>\n            </div>\n          </div>\n        </div>\n\n        <div className=\"row\">\n          <div className=\"col-md-4\">\n            <div className=\"form-group\">\n              <label>\n                Uri ng Paninirahan\n              </label>\n              <br/>\n              <input\n                type=\"radio\"\n                value={\"Pag-aari ang lupa\"}\n                checked={housingType == \"Pag-aari ang lupa\"}\n                onChange={this.handleHousingTypeChanged.bind(this)}\n              />\n              Pag-aari ang lupa at bahay (may titulo)\n              <br/>\n              <input\n                type=\"radio\"\n                value={\"Umuupa\"}\n                checked={housingType == \"Umuupa\"}\n                onChange={this.handleHousingTypeChanged.bind(this)}\n              />\n              Umuupa (sharer or renter)\n              <br/>\n              <input\n                type=\"radio\"\n                value={\"Nakikituloy\"}\n                checked={housingType == \"Nakikituloy\"}\n                onChange={this.handleHousingTypeChanged.bind(this)}\n              />\n              Nakikituloy (libre; mga magulang o extended family)\n              <br/>\n              <input\n                type=\"radio\"\n                value={\"Namana\"}\n                checked={housingType == \"Namana\"}\n                onChange={this.handleHousingTypeChanged.bind(this)}\n              />\n              Namana o na-award pero wala pang titulo\n              <br/>\n              <input\n                type=\"radio\"\n                value={\"Nagbabayad ng Rights\"}\n                checked={housingType == \"Nagbabayad ng Rights\"}\n                onChange={this.handleHousingTypeChanged.bind(this)}\n              />\n              Nagbabayad ng Rights sa lupa, pag-aari ng bahay\n            </div>\n          </div>\n          <div className=\"col-md-4\">\n            <div className=\"form-group\">\n              <label>\n                Tagal sa Tirahan (taon)\n              </label>\n              <input\n                type=\"number\"\n                value={housingNumYears}\n                onChange={this.handleHousingNumYearsChanged.bind(this)}\n                className=\"form-control\"\n                disabled={this.props.formDisabled}\n              />\n            </div>\n          </div>\n          <div className=\"col-md-4\">\n            <div className=\"form-group\">\n              <label>\n                Tagal sa Tirahan (buwan)\n              </label>\n              <input\n                type=\"number\"\n                value={housingNumMonths}\n                onChange={this.handleHousingNumMonthsChanged.bind(this)}\n                className=\"form-control\"\n                disabled={this.props.formDisabled}\n              />\n            </div>\n          </div>\n        </div>\n        <div className=\"row\">\n          <div className=\"col\">\n            <div className=\"form-group\">\n              <label>\n                Ipinakitang Katibayan\n              </label>\n              <input\n                value={housingProof}\n                onChange={this.handleHousingProofChanged.bind(this)}\n                className=\"form-control\"\n                disabled={this.props.formDisabled}\n              />\n            </div>\n          </div>\n        </div>\n        <div className=\"row\">\n          <div className=\"col-md-4\">\n            <div className=\"form-group\">\n              <label>\n                * Kapanganakan\n              </label>\n              <input\n                value={this.props.data.date_of_birth}\n                className=\"form-control\"\n                type=\"date\"\n                onChange={this.handleDateOfBirthChanged.bind(this)}\n                disabled={this.props.formDisabled}\n              />\n            </div>\n          </div>\n          <div className=\"col-md-4\">\n            <div className=\"form-group\">\n              <label>\n                Lugar ng Kapanganakan\n              </label>\n              <input\n                value={this.props.data.place_of_birth}\n                className=\"form-control\"\n                onChange={this.handlePlaceOfBirthChanged.bind(this)}\n                disabled={this.props.formDisabled}\n              />\n            </div>\n          </div>\n          <div className=\"col-md-4\">\n            <div className=\"form-group\">\n              <label>\n                * Kasarian\n              </label>\n              <br/>\n              <div className=\"row\">\n                <div className=\"col-md-4\">\n                  <input\n                    type=\"radio\"\n                    value={\"Female\"}\n                    checked={this.props.data.gender == \"Female\"}\n                    onChange={this.handleGenderChanged.bind(this)}\n                  />\n                  Babae\n                </div>\n                <div className=\"col-md-4\">\n                  <input\n                    type=\"radio\"\n                    value={\"Male\"}\n                    checked={this.props.data.gender == \"Male\"}\n                    onChange={this.handleGenderChanged.bind(this)}\n                  />\n                  Lalake\n                </div>\n                <div className=\"col-md-4\">\n                  <input\n                    type=\"radio\"\n                    value={\"Others\"}\n                    checked={this.props.data.gender == \"Others\"}\n                    onChange={this.handleGenderChanged.bind(this)}\n                  />\n                  Iba Pa\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n        <div className=\"row\">\n          <div className=\"col-md-6\">\n            <div className=\"form-group\">\n              <label>\n                * Katayuang Sibil\n              </label>\n              <div className=\"row\">\n                <div className=\"col\">\n                  <input\n                    type=\"radio\"\n                    value=\"Single\"\n                    checked={this.props.data.civil_status == \"Single\"}\n                    onChange={this.handleCivilStatusChanged.bind(this)}\n                  />\n                  Single\n                </div>\n                <div className=\"col\">\n                  <input\n                    type=\"radio\"\n                    value=\"May Kinakasama\"\n                    checked={this.props.data.civil_status == \"May Kinakasama\"}\n                    onChange={this.handleCivilStatusChanged.bind(this)}\n                  />\n                  May Kinakasama\n                </div>\n                <div className=\"col\">\n                  <input\n                    type=\"radio\"\n                    value=\"Kasal\"\n                    checked={this.props.data.civil_status == \"Kasal\"}\n                    onChange={this.handleCivilStatusChanged.bind(this)}\n                  />\n                  Kasal\n                </div>\n                <div className=\"col\">\n                  <input\n                    type=\"radio\"\n                    value=\"Hiwalay\"\n                    checked={this.props.data.civil_status == \"Hiwalay\"}\n                    onChange={this.handleCivilStatusChanged.bind(this)}\n                  />\n                  Hiwalay\n                </div>\n                <div className=\"col\">\n                  <input\n                    type=\"radio\"\n                    value=\"Biyudo/a\"\n                    checked={this.props.data.civil_status == \"Biyudo/a\"}\n                    onChange={this.handleCivilStatusChanged.bind(this)}\n                  />\n                  Biyudo/a\n                </div>\n              </div>\n            </div>\n          </div>\n          <div className=\"col-md-6\">\n            <div className=\"form-group\">\n              <label>\n                Religion\n              </label>\n              <Select\n                value={currentReligion}\n                options={getReligionOptions()}\n                onChange={this.handleReligionChanged.bind(this)}\n                disabled={this.props.formDisabled}\n              />\n            </div>\n          </div>\n        </div>\n      </div>\n    );\n  }\n}\n", "import React from \"react\";\n\nexport default class FormNumChildren extends React.Component {\n  constructor(props) {\n    super(props);\n  }\n\n  handleNumChildrenChanged(event) {\n    var data                = this.props.data;\n    data.data.num_children  = event.target.value;\n\n    this.props.updateData(data);\n  }\n\n  handleNumChildrenElementaryChanged(event) {\n    var data                          = this.props.data;\n    data.data.num_children_elementary = event.target.value;\n\n    this.props.updateData(data);\n  }\n\n  handleNumChildrenHighSchoolChanged(event) {\n    var data                            = this.props.data;\n    data.data.num_children_high_school  = event.target.value;\n\n    this.props.updateData(data);\n  }\n\n  handleNumChildrenCollegeChanged(event) {\n    var data                        = this.props.data;\n    data.data.num_children_college  = event.target.value;\n\n    this.props.updateData(data);\n  }\n\n  render() {\n    return (\n      <div>\n        <div className=\"row\">\n          <div className=\"col-md-3\">\n            <div className=\"form-group\">\n              <label>\n                Bilang ng Anak\n              </label>\n              <input\n                value={this.props.data.data.num_children}\n                className=\"form-control\"\n                type=\"number\"\n                onChange={this.handleNumChildrenChanged.bind(this)}\n                disabled={this.props.formDisabled}\n              />\n            </div>\n          </div>\n          <div className=\"col-md-3\">\n            <div className=\"form-group\">\n              <label>\n                Ilan ang Nag-aaral (Elementary)\n              </label>\n              <input\n                value={this.props.data.data.num_children_elementary}\n                className=\"form-control\"\n                type=\"number\"\n                onChange={this.handleNumChildrenElementaryChanged.bind(this)}\n                disabled={this.props.formDisabled}\n              />\n            </div>\n          </div>\n          <div className=\"col-md-3\">\n            <div className=\"form-group\">\n              <label>\n                (High School)\n              </label>\n              <input\n                value={this.props.data.data.num_children_high_school}\n                className=\"form-control\"\n                type=\"number\"\n                onChange={this.handleNumChildrenHighSchoolChanged.bind(this)}\n                disabled={this.props.formDisabled}\n              />\n            </div>\n          </div>\n          <div className=\"col-md-3\">\n            <div className=\"form-group\">\n              <label>\n                (College Vocational)\n              </label>\n              <input\n                value={this.props.data.data.num_children_college}\n                className=\"form-control\"\n                type=\"number\"\n                onChange={this.handleNumChildrenCollegeChanged.bind(this)}\n                disabled={this.props.formDisabled}\n              />\n            </div>\n          </div>\n        </div>\n      </div>\n    );\n  }\n}\n", "import React from \"react\";\n\nexport default class FormContactNumbers extends React.Component {\n  constructor(props) {\n    super(props);\n  }\n\n  handleHomeNumberChanged(event) {\n    var data          = this.props.data;\n    data.home_number  = event.target.value;\n\n    this.props.updateData(data);\n  }\n\n  handleMobileNumberChanged(event) {\n    var data            = this.props.data;\n    data.mobile_number  = event.target.value;\n\n    this.props.updateData(data);\n  }\n\n  render() {\n    return (\n      <div>\n        <div className=\"row\">\n          <div className=\"col-md-6\">\n            <div className=\"form-group\">\n              <label>\n                Cellphone Number\n              </label>\n              <input\n                value={this.props.data.mobile_number}\n                className=\"form-control\"\n                onChange={this.handleMobileNumberChanged.bind(this)}\n                disabled={this.props.formDisabled}\n              />\n            </div>\n          </div>\n          <div className=\"col-md-6\">\n            <div className=\"form-group\">\n              <label>\n                Landline Number\n              </label>\n              <input\n                value={this.props.data.home_number}\n                className=\"form-control\"\n                onChange={this.handleHomeNumberChanged.bind(this)}\n                disabled={this.props.formDisabled}\n              />\n            </div>\n          </div>\n        </div>\n      </div>\n    );\n  }\n}\n", "import React from \"react\";\n\nexport default class FormGovernmentIdentificationNumbers extends React.Component {\n  constructor(props) {\n    super(props);\n\n    console.log(\"In FormGovernmentIdentificationNumbers\");\n    console.log(props);\n  }\n\n  handleSssNumberChanged(event) {\n    var data                                                = this.props.data;\n    data.data.government_identification_numbers.sss_number  = event.target.value;\n\n    this.props.updateData(data);\n  }\n\n  handlePagIbigNumberChanged(event) {\n    var data                                                    = this.props.data;\n    data.data.government_identification_numbers.pag_ibig_number = event.target.value;\n    \n    this.props.updateData(data);\n  }\n\n  handlePhilHealthNumberChanged(event) {\n    var data                                                        = this.props.data;\n    data.data.government_identification_numbers.phil_health_number  = event.target.value;\n\n    this.props.updateData(data);\n  }\n\n  handleTinNumberChanged(event) {\n    var data                                                = this.props.data;\n    data.data.government_identification_numbers.tin_number  = event.target.value;\n\n    this.props.updateData(data);\n  }\n\n  render() {\n    return (\n      <div>\n        <div className=\"row\">\n          <div className=\"col-md-3\">\n            <div className=\"form-group\">\n              <label>\n                SSS / GSIS #\n              </label>\n              <input\n                value={this.props.data.data.government_identification_numbers.sss_number}\n                className=\"form-control\"\n                onChange={this.handleSssNumberChanged.bind(this)}\n                disabled={this.props.formDisabled}\n              />\n            </div>\n          </div>\n          <div className=\"col-md-3\">\n            <div className=\"form-group\">\n              <label>\n                Pag-ibig #\n              </label>\n              <input\n                value={this.props.data.data.government_identification_numbers.pag_ibig_number}\n                className=\"form-control\"\n                onChange={this.handlePagIbigNumberChanged.bind(this)}\n                disabled={this.props.formDisabled}\n              />\n            </div>\n          </div>\n          <div className=\"col-md-3\">\n            <div className=\"form-group\">\n              <label>\n                Philhealth #\n              </label>\n              <input\n                value={this.props.data.data.government_identification_numbers.phil_health_number}\n                className=\"form-control\"\n                onChange={this.handlePhilHealthNumberChanged.bind(this)}\n                disabled={this.props.formDisabled}\n              />\n            </div>\n          </div>\n          <div className=\"col-md-3\">\n            <div className=\"form-group\">\n              <label>\n                Tin #\n              </label>\n              <input\n                value={this.props.data.data.government_identification_numbers.tin_number}\n                className=\"form-control\"\n                onChange={this.handleTinNumberChanged.bind(this)}\n                disabled={this.props.formDisabled}\n              />\n            </div>\n          </div>\n        </div>\n      </div>\n    );\n  }\n}\n", "import React from \"react\";\n\nexport default class FormSpouse extends React.Component {\n  constructor(props) {\n    super(props);\n  }\n\n  handleFirstNameChanged(event) {\n    var data                    = this.props.data;\n    data.data.spouse.first_name = event.target.value.toUpperCase();\n\n    this.props.updateData(data);\n  }\n\n  handleMiddleNameChanged(event) {\n    var data                      = this.props.data;\n    data.data.spouse.middle_name  = event.target.value.toUpperCase();\n\n    this.props.updateData(data);\n  }\n\n  handleLastNameChanged(event) {\n    var data                    = this.props.data;\n    data.data.spouse.last_name  = event.target.value.toUpperCase();\n\n    this.props.updateData(data);\n  }\n\n  handleDateOfBirthChanged(event) {\n    var data                        = this.props.data;\n    data.data.spouse.date_of_birth  = event.target.value;\n\n    this.props.updateData(data);\n  }\n\n  handleOccupationChanged(event) {\n    var data                    = this.props.data;\n    data.data.spouse.occupation = event.target.value.toUpperCase();\n\n    this.props.updateData(data);\n  }\n\n  render() {\n    return (\n      <div>\n        <div className=\"row\">\n          <div className=\"col-md-6\">\n            <div className=\"form-group\">\n              <label>\n                Pangalan\n              </label>\n              <input\n                value={this.props.data.data.spouse.first_name}\n                className=\"form-control\"\n                onChange={this.handleFirstNameChanged.bind(this)}\n                disabled={this.props.formDisabled}\n              />\n            </div>\n            <div className=\"form-group\">\n              <label>\n                Gitnang Pangalan\n              </label>\n              <input\n                value={this.props.data.data.spouse.middle_name}\n                className=\"form-control\"\n                onChange={this.handleMiddleNameChanged.bind(this)}\n                disabled={this.props.formDisabled}\n              />\n            </div>\n            <div className=\"form-group\">\n              <label>\n                Apelyido\n              </label>\n              <input\n                value={this.props.data.data.spouse.last_name}\n                className=\"form-control\"\n                onChange={this.handleLastNameChanged.bind(this)}\n                disabled={this.props.formDisabled}\n              />\n            </div>\n          </div>\n          <div className=\"col-md-6\">\n            <div className=\"form-group\">\n              <label>\n                Kapanganakan\n              </label>\n              <input\n                value={this.props.data.data.spouse.date_of_birth}\n                className=\"form-control\"\n                onChange={this.handleDateOfBirthChanged.bind(this)}\n                disabled={this.props.formDisabled}\n                type=\"date\"\n              />\n            </div>\n            <div className=\"form-group\">\n              <label>\n                Trabaho\n              </label>\n              <input\n                value={this.props.data.data.spouse.occupation}\n                className=\"form-control\"\n                onChange={this.handleOccupationChanged.bind(this)}\n                disabled={this.props.formDisabled}\n              />\n            </div>\n          </div>\n        </div>\n      </div>\n    );\n  }\n}\n", "import React from \"react\";\n\nexport default class FormExperience extends React.Component {\n  constructor(props) {\n    super(props);\n  }\n\n  handleReasonChanged(event) {\n    var data                      = this.props.data;\n    data.data.reason_for_joining  = event.target.value;\n\n    this.props.updateData(data);\n  }\n\n  handleIsExperiencedChanged(event) {\n    var data  = this.props.data;\n\n    if(event.target.value == \"yes\") {\n      data.data.is_experienced_with_microfinance  = true;\n    } else {\n      data.data.is_experienced_with_microfinance  = false;\n    }\n    this.props.updateData(data);\n  }\n\n  handlePreviousMfiExperience(event) {\n    var data  = this.props.data;\n\n    data.data.previous_mfi_experience = event.target.value.toUpperCase();\n\n    this.props.updateData(data);\n  }\n\n  render() {\n    var data  = this.props.data;\n\n    return (\n      <div>\n        <div className=\"row\">\n          <div className=\"col\">\n            <div className=\"form-group\">\n              <label>\n                Dahilan ng pagsali sa K-Coop\n              </label>\n              <input\n                value={this.props.data.data.reason_for_joining}\n                className=\"form-control\"\n                onChange={this.handleReasonChanged.bind(this)}\n                disabled={this.props.formDisabled}\n              />\n            </div>\n          </div>\n        </div>\n        <div className=\"row\">\n          <div className=\"col\">\n            <div className=\"form-group\">\n              <label>\n                Karanasan sa Kooperatiba / MFI\n              </label>\n              <br/>\n              <input \n                type=\"radio\"\n                value={\"no\"}\n                checked={!data.data.is_experienced_with_microfinance}\n                onChange={this.handleIsExperiencedChanged.bind(this)}\n              /> \n              Wala\n              <input \n                type=\"radio\"\n                value={\"yes\"}\n                checked={data.data.is_experienced_with_microfinance}\n                onChange={this.handleIsExperiencedChanged.bind(this)}\n              /> \n              Meron, ano ito?\n              <input\n                type=\"text\"\n                className=\"form-control\"\n                value={data.data.previous_mfi_experience}\n                onChange={this.handlePreviousMfiExperience.bind(this)}\n                disabled={!data.data.is_experienced_with_microfinance}\n              />\n            </div>\n          </div>\n        </div>\n      </div>\n    );\n  }\n}\n", "import React from \"react\";\n\nexport default class FormRecruit extends React.Component {\n  constructor(props) {\n    super(props);\n  }\n\n  handleRecruitChanged(event) {\n    var data               = this.props.data;\n    data.data.recruited_by  = event.target.value ? event.target.value.toUpperCase() : \"\";\n\n    this.props.updateData(data);\n  }\n\n\n  render() {\n    var data  = this.props.data;\n\n    return (\n      <div>\n        <div className=\"row\">\n          <div className=\"col\">\n            <div className=\"form-group\">\n              <label>\n                Pangalan ng nag recruit\n              </label>\n              <input\n                value={this.props.data.data.recruited_by}\n                className=\"form-control\"\n                onChange={this.handleRecruitChanged.bind(this)}\n                disabled={this.props.formDisabled}\n              />\n            </div>\n          </div>\n        </div>\n      </div>\n    );\n  }\n}\n", "import React from \"react\";\n\nexport default class FormBankAccounts extends React.Component {\n  constructor(props) {\n    super(props);\n    \n    this.state  = {\n      currentBank: {\n        bank: \"\",\n        type: \"SAVINGS\"\n      }\n    }\n  }\n\n  renderBanks() {\n    var banks = this.props.data.data.banks;\n\n    if(banks.length > 0) {\n      var banksDisplay  = [];\n\n      for(var i = 0; i < banks.length; i++) {\n        banksDisplay.push(\n          <tr key={\"bank-\" + i}>\n            <td>\n              {banks[i].bank}\n            </td>\n            <td>\n              {banks[i].type}\n            </td>\n            <td>\n              <button \n                className=\"btn btn-danger btn-sm\"\n                onClick={this.handleDeleteClicked.bind(this, i)}\n              >\n                <span className=\"bi bi-x\"/>\n                Del\n              </button>\n            </td>\n          </tr>\n        );\n      }\n\n      return (\n        <table className=\"table table-hover table-sm\">\n          <thead>\n            <tr>\n              <th>\n                Bank\n              </th>\n              <th>\n                Type\n              </th>\n              <th width={\"10%\"}>\n                Actions\n              </th>\n            </tr>\n          </thead>\n          <tbody>\n            {banksDisplay}\n          </tbody>\n        </table>\n      );\n    } else {\n      return  (\n        <p>\n          No banks found.\n        </p>\n      );\n    }\n  }\n\n  handleDeleteClicked(index) {\n    var data  = this.props.data;\n\n    data.data.banks.splice(index);\n\n    this.props.updateData(data);\n  };\n\n  handleAddClicked() {\n    var data  = this.props.data;\n\n    data.data.banks.push(this.state.currentBank);\n\n    this.props.updateData(data);\n\n    this.setState({\n      currentBank: {\n        bank: \"\",\n        type: \"SAVINGS\"\n      }\n    });\n  };\n\n  handleBankChanged(event) {\n    var currentBank = this.state.currentBank;\n    var bank        = event.target.value;\n\n    currentBank.bank  = bank.toUpperCase();\n\n    this.setState({\n      currentBank: currentBank\n    });\n  };\n\n  handleTypeChanged(event) {\n    var currentBank = this.state.currentBank;\n    var type        = event.target.value;\n\n    currentBank.type  = type.toUpperCase();\n\n    this.setState({\n      currentBank: currentBank\n    });\n  };\n\n  render() {\n    return (\n      <div>\n        <div className=\"row\">\n          <div className=\"col\">\n            <div className=\"form-group\">\n              <label>\n                Bank\n              </label>\n              <input\n                type=\"text\"\n                className=\"form-control\"\n                value={this.state.currentBank.bank}\n                disabled={this.props.formDisabled}\n                onChange={this.handleBankChanged.bind(this)}\n              />\n            </div>\n          </div>\n          <div className=\"col\">\n            <div className=\"form-group\">\n              <label>\n                Type\n              </label>\n              <select\n                className=\"form-control\"\n                value={this.state.currentBank.type}\n                disabled={this.props.formDisabled}\n                onChange={this.handleTypeChanged.bind(this)}\n              >\n                <option value=\"SAVINGS\">SAVINGS</option>\n                <option value=\"CURRENT\">CURRENT</option>\n                <option value=\"CHECKING\">CHECKING</option>\n                <option value=\"OTHERS\">OTHERS</option>\n              </select>\n            </div>\n          </div>\n          <div className=\"col\">\n            <div className=\"form-group\">\n              <label>\n                Actions\n              </label>\n              <div className=\"form-group\">\n                <div className=\"btn-group\">\n                  <button\n                    className=\"btn btn-primary btn-block\"\n                    disabled={this.props.formDisabled}\n                    onClick={this.handleAddClicked.bind(this)}\n                  >\n                    <span className=\"fa fa-plus\" />\n                    Add\n                  </button>\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n        <hr/>\n        {this.renderBanks()}\n      </div>\n    );\n  }\n}\n", "import React from \"react\";\n\nimport Modal from 'react-modal';\n\nconst customStyles  = {\n  content : {\n    top: '50%',\n    left: '50%',\n    right: 'auto',\n    bottom: 'auto',\n    marginRight: '-50%',\n    transform: 'translate(-50%, -50%)'\n  }\n}\n\nexport default class FormLegalDependents extends React.Component {\n  constructor(props) {\n    super(props);\n    \n    this.state  = {\n      modalIsOpen: false,\n      errors: [],\n      currentLegalDependent: {\n        id: \"\",\n        first_name: \"\",\n        middle_name: \"\",\n        last_name: \"\",\n        date_of_birth: \"\",\n        relationship: \"\",\n        age: \"\",\n        data: {\n          educational_attainment: \"\",\n          course: \"\"\n        },\n        gender: \"\"\n      }\n    }\n  }\n\n  validateCurrentLegalDependent() {\n    var o       = this.state.currentLegalDependent;\n    var errors  = [];\n\n    if(!o.first_name) {\n      errors.push(\"first name required\");\n    }\n\n    if(!o.last_name) {\n      errors.push(\"last name required\");\n    }\n\n    if(!o.date_of_birth) {\n      errors.push(\"date of birth required\");\n    }\n\n    if(!o.relationship) {\n      errors.push(\"relationship required\");\n    }\n\n    if(!o.gender) {\n      errors.push(\"gender required\");\n    }\n\n    this.setState({\n      errors: errors\n    });\n\n    return errors;\n  }\n\n  handleCancelClicked() {\n    this.setState({\n      modalIsOpen: false,\n      currentLegalDependent: {\n        id: \"\",\n        first_name: \"\",\n        middle_name: \"\",\n        last_name: \"\",\n        date_of_birth: \"\",\n        relationship: \"\",\n        data: {\n          educational_attainment: \"\",\n          course: \"\"\n        },\n        gender: \"\"\n      }\n    });\n  }\n\n  handleDeleteClicked(index) {\n    var data  = this.props.data;\n\n    data.legal_dependents.splice(index, 1);\n\n    this.props.updateData(data);\n  };\n\n  handleAddClicked() {\n    this.setState({\n      modalIsOpen: true,\n      errors: [],\n      currentLegalDependent: {\n        id: \"\",\n        first_name: \"\",\n        middle_name: \"\",\n        last_name: \"\",\n        date_of_birth: \"\",\n        relationship: \"\",\n        age: \"\",\n        data: {\n          educational_attainment: \"\",\n          course: \"\"\n        },\n        gender: \"\"\n      }\n    });\n  }\n\n  handleConfirmSaveClicked() {\n    var data    = this.props.data;\n    var errors  = this.validateCurrentLegalDependent();\n\n    console.log(\"Adding current legal dependent:\");\n    console.log(this.state.currentLegalDependent);\n\n    if(errors.length == 0) {\n      data.legal_dependents.push(this.state.currentLegalDependent);\n      this.props.updateData(data);\n\n      this.setState({\n        modalIsOpen: false,\n        currentLegalDependent: {\n          id: \"\",\n          first_name: \"\",\n          middle_name: \"\",\n          last_name: \"\",\n          date_of_birth: \"\",\n          relationship: \"\",\n          data: {\n            educational_attainment: \"\",\n            course: \"\"\n          },\n          gender: \"\"\n        }\n      });\n    }\n  };\n\n  handleFirstNameChanged(event) {\n    var currentLegalDependent = this.state.currentLegalDependent;\n\n    currentLegalDependent.first_name  = event.target.value.toUpperCase();\n\n    this.setState({\n      currentLegalDependent: currentLegalDependent\n    });\n  }\n\n  handleMiddleNameChanged(event) {\n    var currentLegalDependent = this.state.currentLegalDependent;\n\n    currentLegalDependent.middle_name  = event.target.value.toUpperCase();\n\n    this.setState({\n      currentLegalDependent: currentLegalDependent\n    });\n  }\n\n  handleLastNameChanged(event) {\n    var currentLegalDependent = this.state.currentLegalDependent;\n\n    currentLegalDependent.last_name  = event.target.value.toUpperCase();\n\n    this.setState({\n      currentLegalDependent: currentLegalDependent\n    });\n  }\n\n  handleDateOfBirthChanged(event) {\n    var currentLegalDependent = this.state.currentLegalDependent;\n\n    currentLegalDependent.date_of_birth = event.target.value;\n    currentLegalDependent.age           = this.getAge(currentLegalDependent.date_of_birth);\n\n    this.setState({\n      currentLegalDependent: currentLegalDependent\n    });\n  }\n\n  handleGenderChanged(event) {\n    var currentLegalDependent = this.state.currentLegalDependent;\n\n    currentLegalDependent.gender = event.target.value;\n\n    this.setState({\n      currentLegalDependent: currentLegalDependent\n    });\n  }\n\n  getAge(dateString) \n  {\n    var today = new Date();\n    var birthDate = new Date(dateString);\n    var age = today.getFullYear() - birthDate.getFullYear();\n    var m = today.getMonth() - birthDate.getMonth();\n    if (m < 0 || (m === 0 && today.getDate() < birthDate.getDate())) {\n      age--;\n    }\n    return age;\n  }\n\n  handleRelationshipChanged(event) {\n    var currentLegalDependent = this.state.currentLegalDependent;\n\n    currentLegalDependent.relationship  = event.target.value;\n\n    this.setState({\n      currentLegalDependent: currentLegalDependent\n    });\n  }\n\n  handleEducationalAttainmentChanged(event) {\n    var currentLegalDependent = this.state.currentLegalDependent;\n\n    currentLegalDependent.data.educational_attainment = event.target.value;\n\n    this.setState({\n      currentLegalDependent: currentLegalDependent\n    });\n  }\n\n  handleCourseChanged(event) {\n    var currentLegalDependent = this.state.currentLegalDependent;\n\n    currentLegalDependent.data.course  = event.target.value.toUpperCase();\n\n    this.setState({\n      currentLegalDependent: currentLegalDependent\n    });\n  }\n\n  renderErrors() {\n    var errors  = this.state.errors;\n\n    if(errors.length > 0) {\n      var errorItems  = [];\n\n      for(var i = 0; i < errors.length; i++) {\n        errorItems.push(\n          <li key={\"e-\" + i}>\n            {errors[i]}\n          </li>\n        );\n      }\n\n      return  (\n        <div className=\"callout callout-danger\">\n          <ul>\n            {errorItems}\n          </ul>\n        </div>\n      );\n    }\n  }\n\n  renderRecords() {\n    var legalDependents = this.props.data.legal_dependents;\n\n    if(legalDependents.length > 0) {\n      var records = [];\n\n      for(var i = 0; i < legalDependents.length; i++) {\n        var name                    = legalDependents[i].last_name + \", \" + legalDependents[i].first_name;\n        var relationship            = legalDependents[i].relationship;\n        var date_of_birth           = legalDependents[i].date_of_birth;\n        var educational_attainment  = legalDependents[i].data.educational_attainment;\n        var course                  = legalDependents[i].data.course;\n        var age                     = legalDependents[i].age;\n        var gender                  = legalDependents[i].gender;\n\n        records.push(\n          <tr key={\"ld-record-\" + i}>\n            <td>\n              {name}\n            </td>\n            <td>\n              {date_of_birth}\n            </td>\n            <td>\n              {age}\n            </td>\n            <td>\n              {relationship}\n            </td>\n            <td>\n              {educational_attainment}\n            </td>\n            <td>\n              {course}\n            </td>\n            <td>\n              {gender}\n            </td>\n            <td>\n              <center>\n                <button\n                  className=\"btn btn-sm btn-danger\"\n                  onClick={this.handleDeleteClicked.bind(this, i)}\n                >\n                  <span className=\"fa fa-minus\"/>\n                  Del\n                </button>\n              </center>\n            </td>\n          </tr>\n        );\n      }\n\n      return  (\n        <table className=\"table table-sm\">\n          <thead>\n            <tr>\n              <th>Name</th>\n              <th>Date of Birth</th>\n              <th>Age</th>\n              <th>Gender</th>\n              <th>Relationship</th>\n              <th>Educational Attainment</th>\n              <th>Course</th>\n              <th>\n                <center>\n                  Actions\n                </center>\n              </th>\n            </tr>\n          </thead>\n          <tbody>\n            {records}\n          </tbody>\n        </table>\n      );\n    } else {\n      return  (\n        <p>\n          No legal dependents\n        </p>\n      );\n    }\n  }\n\n  render() {\n    var currentLegalDependent = this.state.currentLegalDependent;\n\n    return (\n      <div>\n        <Modal\n          isOpen={this.state.modalIsOpen}\n          style={customStyles}\n        >\n          \n          <div class=\"modal-header\">\n            <h5>\n              Impormasyon ng legal na dependent\n            </h5>\n          </div>\n\n          <div className=\"row\">\n            <div className=\"col\">\n              <div className=\"form-group\">\n                <label>* Pangalan</label>\n                <input\n                  className=\"form-control\"\n                  value={currentLegalDependent.first_name}\n                  onChange={this.handleFirstNameChanged.bind(this)}\n                />\n              </div>\n            </div>\n            <div className=\"col\">\n              <div className=\"form-group\">\n                <label>Gitnang Pangalan</label>\n                <input\n                  className=\"form-control\"\n                  value={currentLegalDependent.middle_name}\n                  onChange={this.handleMiddleNameChanged.bind(this)}\n                />\n              </div>\n            </div>\n            <div className=\"col\">\n              <div className=\"form-group\">\n                <label>* Apelyido</label>\n                <input\n                  className=\"form-control\"\n                  value={currentLegalDependent.last_name}\n                  onChange={this.handleLastNameChanged.bind(this)}\n                />\n              </div>\n            </div>\n          </div>\n          <div className=\"row\">\n            <div className=\"col\">\n              <div className=\"form-group\">\n                <label>* Kapanganakan</label>\n                <input\n                  className=\"form-control\"\n                  type=\"date\"\n                  value={currentLegalDependent.date_of_birth}\n                  onChange={this.handleDateOfBirthChanged.bind(this)}\n                />\n              </div>\n            </div>\n            <div className=\"col\">\n              <div className=\"form-group\">\n                <label>* Kasarian</label>\n                <select\n                  className=\"form-control\"\n                  value={currentLegalDependent.gender}\n                  onChange={this.handleGenderChanged.bind(this)}\n                >\n                  <option value=\"\">-- SELECT --</option>\n                  <option value=\"Male\">MALE</option>\n                  <option value=\"Female\">FEMALE</option>\n                </select>\n              </div>\n            </div>\n            <div className=\"col\">\n              <div className=\"form-group\">\n                <label>Relasyon</label>\n                <select\n                  className=\"form-control\"\n                  value={currentLegalDependent.relationship}\n                  onChange={this.handleRelationshipChanged.bind(this)}\n                >\n                  <option value=\"\">-- SELECT --</option>\n                  <option value=\"Child\">ANAK</option>\n                  <option value=\"Spouse\">ASAWA</option>\n                  <option value=\"Parent\">MAGULANG</option>\n                  <option value=\"Sibling\">KAPATID</option>\n                </select>\n              </div>\n            </div>\n            <div className=\"col\">\n              <div className=\"form-group\">\n                <label>Antas ng Pag-aaral</label>\n                <select\n                  className=\"form-control\"\n                  value={currentLegalDependent.educational_attainment}\n                  onChange={this.handleEducationalAttainmentChanged.bind(this)}\n                >\n                  <option value=\"\">-- SELECT --</option>\n                  <option value=\"elementary\">Elementary</option>\n                  <option value=\"high school\">High School</option>\n                  <option value=\"college\">College</option>\n                </select>\n              </div>\n            </div>\n            <div className=\"col\">\n              <div className=\"form-group\">\n                <label>Kurso</label>\n                <input\n                  className=\"form-control\"\n                  value={currentLegalDependent.course}\n                  onChange={this.handleCourseChanged.bind(this)}\n                />\n              </div>\n            </div>\n          </div>\n          {this.renderErrors()}\n          <hr/>\n          <center>\n            <div className=\"btn-group\">\n              <button\n                className=\"btn btn-primary\"\n                onClick={this.handleConfirmSaveClicked.bind(this)}\n              >\n                <span className=\"bi bi-check\"/>\n                Confirm\n              </button>\n              <button\n                className=\"btn btn-danger\"\n                onClick={this.handleCancelClicked.bind(this)}\n              >\n                <span className=\"bi bi-x\"/>\n                Cancel\n              </button>\n            </div>\n          </center>\n        </Modal>\n\n        {this.renderRecords()}\n\n        <button\n          className=\"btn btn-info btn-sm\"\n          onClick={this.handleAddClicked.bind(this)}\n        >\n          <span className=\"fa fa-plus\"/>\n          Add\n        </button>\n      </div>\n    );\n  }\n}\n", "import React from \"react\";\nimport Modal from 'react-modal';\n\nconst customStyles  = {\n  content : {\n    top: '50%',\n    left: '50%',\n    right: 'auto',\n    bottom: 'auto',\n    marginRight: '-50%',\n    transform: 'translate(-50%, -50%)'\n  }\n}\n\nexport default class FormBeneficiaries extends React.Component {\n  constructor(props) {\n    super(props);\n    \n    this.state  = {\n      modalIsOpen: false,\n      values: null,\n      errors: [],\n      currentBeneficiary: {\n        id: \"\",\n        first_name: \"\",\n        middle_name: \"\",\n        last_name: \"\",\n        date_of_birth: \"\",\n        relationship: \"\",\n        is_primary: false\n      }\n    }\n  }\n\n  componentDidMount() {\n    fetch('/api/yml_values/production_values')\n      .then(response => response.json())\n      .then(data => {\n        this.setState({ values: data }); \n        // console.log('Fetched values:', data); \n      })\n      .catch(error => {\n        console.error('Error fetching YML values:', error);\n      });\n  }\n\n  validateCurrentBeneficiary() {\n    const values  = this.state.values;\n    var o       = this.state.currentBeneficiary; \n    var errors  = [];\n\n    if(!o.first_name) {\n      errors.push(\"first name required\");\n    }\n\n    if(!o.last_name) {\n      errors.push(\"last name required\");\n    }\n\n    if(!o.date_of_birth) {\n      errors.push(\"date of birth required\");\n    }\n\n    //get yml_values and validate the age\n    if(values === true){\n        // console.log(values)\n          const birthDate = new Date(o.date_of_birth);\n          const currentDate = new Date();\n          // console.log(birthDate);\n          let age = currentDate.getFullYear() - birthDate.getFullYear();\n\n          if (\n            currentDate.getMonth() < birthDate.getMonth() ||\n            (currentDate.getMonth() === birthDate.getMonth() && currentDate.getDate() < birthDate.getDate())\n          ) {\n            age--; //if date_of_birth has not occurred this year\n          }\n          // console.log(age)\n          // Check if age is less than 18\n          if (age < 18) {\n            errors.push(\"Age must be 18 years or older.\");\n          }\n      }\n    //   else{\n    //     console.log('activate_microinsurance:', values)\n    // } for checking\n\n    if(!o.relationship) {\n      errors.push(\"relationship required\");\n    }\n\n    this.setState({\n      errors: errors\n    });\n\n    return errors;\n  }\n\n  handleCancelClicked() {\n    this.setState({\n      modalIsOpen: false,\n      currentBeneficiary: {\n        id: \"\",\n        first_name: \"\",\n        middle_name: \"\",\n        last_name: \"\",\n        date_of_birth: \"\",\n        relationship: \"\",\n        is_primary: false\n      }\n    });\n  }\n\n  renderErrors() {\n    var errors  = this.state.errors;\n\n    if(errors.length > 0) {\n      var errorItems  = [];\n\n      for(var i = 0; i < errors.length; i++) {\n        errorItems.push(\n          <li key={\"e-\" + i}>\n            {errors[i]}\n          </li>\n        );\n      }\n\n      return  (\n        <div className=\"callout callout-danger\">\n          <ul>\n            {errorItems}\n          </ul>\n        </div>\n      );\n    }\n  }\n\n  handleDeleteClicked(index) {\n    var data  = this.props.data;\n\n    //data.beneficiaries.splice(index);\n\n    var tempBeneficiaries = [];\n\n    for(var i = 0; i < data.beneficiaries.length; i++) {\n      if(i != index) {\n        tempBeneficiaries.push(data.beneficiaries[i]);\n      }\n    }\n\n    data.beneficiaries = tempBeneficiaries;\n\n    this.props.updateData(data);\n  };\n\n  handleAddClicked = () => {\n    this.setState({\n      modalIsOpen: true,\n      errors: [],\n      currentBeneficiary: {\n        id: \"\",\n        first_name: \"\",\n        middle_name: \"\",\n        last_name: \"\",\n        date_of_birth: \"\",\n        relationship: \"\",\n        data: {\n          educational_attainment: \"\",\n          course: \"\"\n        }\n      }\n    });\n  }\n\n  handleConfirmSaveClicked() {\n    var data  = this.props.data;\n\n    var errors  = this.validateCurrentBeneficiary();\n\n    if(errors.length == 0) {\n      data.beneficiaries.push(this.state.currentBeneficiary);\n      this.props.updateData(data);\n\n      this.setState({\n        modalIsOpen: false,\n        currentBeneficiary: {\n          id: \"\",\n          first_name: \"\",\n          middle_name: \"\",\n          last_name: \"\",\n          date_of_birth: \"\",\n          relationship: \"\",\n          is_primary: false\n        }\n      });\n    }\n  };\n\n  handleFirstNameChanged(event) {\n    var currentBeneficiary = this.state.currentBeneficiary;\n\n    currentBeneficiary.first_name  = event.target.value.toUpperCase();\n\n    this.setState({\n      currentBeneficiary: currentBeneficiary\n    });\n  }\n\n  handleMiddleNameChanged(event) {\n    var currentBeneficiary = this.state.currentBeneficiary;\n\n    currentBeneficiary.middle_name  = event.target.value.toUpperCase();\n\n    this.setState({\n      currentBeneficiary: currentBeneficiary\n    });\n  }\n\n  handleLastNameChanged(event) {\n    var currentBeneficiary = this.state.currentBeneficiary;\n\n    currentBeneficiary.last_name  = event.target.value.toUpperCase();\n\n    this.setState({\n      currentBeneficiary: currentBeneficiary\n    });\n  }\n\n  handleDateOfBirthChanged(event) {\n    var currentBeneficiary = this.state.currentBeneficiary;\n\n    currentBeneficiary.date_of_birth  = event.target.value;\n\n    this.setState({\n      currentBeneficiary: currentBeneficiary\n    });\n  }\n\n  handleRelationshipChanged(event) {\n    var currentBeneficiary = this.state.currentBeneficiary;\n\n    currentBeneficiary.relationship  = event.target.value.toUpperCase();\n\n    this.setState({\n      currentBeneficiary: currentBeneficiary\n    });\n  }\n  \n  handlePrimaryChanged(event) {\n    var currentBeneficiary  = this.state.currentBeneficiary;\n    \n    currentBeneficiary.is_primary = event.target.checked;\n\n    this.setState({\n      currentBeneficiary: currentBeneficiary\n    });\n  }\n\n  renderRecords() {\n    var beneficiaries = this.props.data.beneficiaries;\n\n    if(beneficiaries.length > 0) {\n      var records = [];\n\n      for(var i = 0; i < beneficiaries.length; i++) {\n        var name          = beneficiaries[i].last_name + \", \" + beneficiaries[i].first_name;\n        var date_of_birth = beneficiaries[i].date_of_birth;\n        var relationship  = beneficiaries[i].relationship;\n\n        records.push(\n          <tr key={\"ld-record-\" + i}>\n            <td>\n              {name}\n            </td>\n            <td>\n              {date_of_birth}\n            </td>\n            <td>\n              {relationship}\n            </td>\n            <td>\n              <center>\n                <button\n                  className=\"btn btn-sm btn-danger\"\n                  onClick={this.handleDeleteClicked.bind(this, i)}\n                >\n                  <span className=\"fa fa-minus\"/>\n                  Del\n                </button>\n              </center>\n            </td>\n          </tr>\n        );\n      }\n\n      return  (\n        <table className=\"table table-sm\">\n          <thead>\n            <tr>\n              <th>Name</th>\n              <th>Date of Birth</th>\n              <th>Relationship</th>\n              <th>\n                <center>\n                  Actions\n                </center>\n              </th>\n            </tr>\n          </thead>\n          <tbody>\n            {records}\n          </tbody>\n        </table>\n      );\n    } else {\n      return  (\n        <p>\n          No beneficiaries\n        </p>\n      );\n    }\n  }\n\n  render() {\n    return (\n      <div>\n        <Modal\n          isOpen={this.state.modalIsOpen}\n          style={customStyles}\n        >\n          <div class=\"modal-header\">\n            <h3 class=\"modal-title\">Beneficiary Form</h3>\n          </div>\n\n          <div className=\"row\">\n            <div className=\"col\">\n              <div className=\"form-group\">\n                <label>* Pangalan</label>\n                <input\n                  className=\"form-control\"\n                  value={this.state.currentBeneficiary.first_name}\n                  onChange={this.handleFirstNameChanged.bind(this)}\n                />\n              </div>\n            </div>\n            <div className=\"col\">\n              <div className=\"form-group\">\n                <label>Gitnang Pangalan</label>\n                <input\n                  className=\"form-control\"\n                  value={this.state.currentBeneficiary.middle_name}\n                  onChange={this.handleMiddleNameChanged.bind(this)}\n                />\n              </div>\n            </div>\n            <div className=\"col\">\n              <div className=\"form-group\">\n                <label>* Apelyido</label>\n                <input\n                  className=\"form-control\"\n                  value={this.state.currentBeneficiary.last_name}\n                  onChange={this.handleLastNameChanged.bind(this)}\n                />\n              </div>\n            </div>\n          </div>\n          <div className=\"row\">\n            <div className=\"col\">\n              <div className=\"form-group\">\n                <label>* Kapanganakan</label>\n                <input\n                  className=\"form-control\"\n                  type=\"date\"\n                  value={this.state.currentBeneficiary.date_of_birth}\n                  onChange={this.handleDateOfBirthChanged.bind(this)}\n                />\n              </div>\n            </div>\n            <div className=\"col\">\n              <div className=\"form-group\">\n                <label>Relasyon</label>\n                <input\n                  className=\"form-control\"\n                  value={this.state.currentBeneficiary.relationship}\n                  onChange={this.handleRelationshipChanged.bind(this)}\n                />\n              </div>\n            </div>\n            <div className=\"col\">\n              <div className=\"form-group\">\n                <label>Is Primary?</label>\n                <input\n                  type=\"checkbox\"\n                  onChange={this.handlePrimaryChanged.bind(this)}\n                />\n              </div>\n            </div>\n          </div>\n\n          {this.renderErrors()}\n\n          <hr/>\n\n          <center>\n            <div className=\"btn-group\">\n              <button\n                className=\"btn btn-primary\"\n                onClick={this.handleConfirmSaveClicked.bind(this)}\n              >\n                <span className=\"bi bi-check\"/>\n                Confirm\n              </button>\n              <button\n                className=\"btn btn-danger\"\n                onClick={this.handleCancelClicked.bind(this)}\n              >\n                <span className=\"bi bi-x\"/>\n                Cancel\n              </button>\n            </div>\n          </center>\n        </Modal>\n\n        {this.renderRecords()}\n\n        <button\n          className=\"btn btn-info btn-sm\"\n          onClick={this.handleAddClicked.bind(this)}\n        >\n          <span className=\"fa fa-plus\"/>\n          Add\n        </button>\n      </div>\n    );\n  }\n}\n", "import React from \"react\";\nimport Select from 'react-select';\n\nexport default class FormReferrals extends React.Component {\n  constructor(props) {\n    super(props);\n  }\n\n  handleReferrerChanged(o) {\n    if(o) {\n      this.props.updateCurrentReferrer(o);\n    }\n  }\n\n  handleCoordinatorChanged(o) {\n    if(o) {\n      this.props.updateCurrentCoordinator(o);\n    }\n  }\n\n  render() {\n    var referrerOptions  = [];\n    var coordinatorOptions  = [];\n\n    for(var i = 0; i < this.props.referrers.length; i++) {\n      referrerOptions.push({\n        value: this.props.referrers[i].id,\n        label: this.props.referrers[i].name\n      });\n    }\n\n    for(var i = 0; i < this.props.coordinators.length; i++) {\n      coordinatorOptions.push({\n        value: this.props.coordinators[i].id,\n        label: this.props.coordinators[i].name\n      });\n    }    \n\n    return  (\n      <div className=\"card\">\n        <div className=\"card-body\">\n          <div className=\"row\">\n            <div className=\"col-md-6 col-xs-12\">\n              <div className=\"form-group\">\n                <label>\n                  Refer by:\n                </label>\n                <Select\n                  value={this.props.currentReferrer}\n                  options={referrerOptions}\n                  onChange={this.handleReferrerChanged.bind(this)}\n                  disabled={this.props.formDisabled}\n                />\n              </div>\n            </div>\n            <div className=\"col-md-6 col-xs-12\">\n              <div className=\"form-group\">\n                <label>\n                  Insurance Coordinator:\n                </label>\n                <Select\n                  value={this.props.currentCoordinator}\n                  options={coordinatorOptions}\n                  onChange={this.handleCoordinatorChanged.bind(this)}\n                  disabled={this.props.formDisabled}\n                />\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n    );\n  }\n}\n", "import React from 'react';\nimport $ from 'jquery';\nimport moment from 'moment';\n\nimport SkCubeLoading from '../SkCubeLoading';\nimport ErrorDisplay from '../ErrorDisplay';\n\nexport default class SurveyAnswerUIDisplay extends React.Component {\n  constructor(props) {\n    super(props);\n\n    this.state  = {\n      isLoading: true,\n      isSaving: false,\n      id: this.props.id,\n      data: false,\n      errors: false\n    };\n  }\n\n  componentDidMount() {\n    this.fetchSurveyAnswerData();\n  }\n\n  fetchSurveyAnswerData() {\n    var context = this;\n    var state   = context.state;\n\n    console.log(state);\n\n    $.ajax({\n      url: \"/api/v1/members/fetch_survey_answer\",\n      method: 'GET',\n      data: {\n        survey_answer_id: state.id\n      },\n      success: function(response) {\n        console.log(response);\n        context.setState({\n          isLoading: false,\n          data: response\n        });\n      },\n      error: function(response) {\n        console.log(response);\n        alert(\"Error in fetching survey answer\");\n      }\n    });\n  }\n\n  save() {\n    var context = this;\n    var state   = context.state;\n    var data    = context.state.data;\n\n    this.setState({\n      isSaving: true,\n      errors: false\n    });\n\n    $.ajax({\n      url: \"/api/v1/members/save_survey_answer\",\n      method: 'POST',\n      data: {\n        authenticity_token: context.props.authenticityToken,\n        data: JSON.stringify(data),\n        id: context.props.id\n      },\n      success: function(response) {\n        window.location.href=\"/members/\" + context.props.memberId + \"/survey_answers/\" + state.id;\n      },\n      error: function(response) {\n        try {\n          context.setState({\n            errors: JSON.parse(response.responseText),\n            isSaving: false\n          });\n        } catch(err) {\n          alert(\"Something went wrong\");\n          context.setState({\n            errors: false,\n            isSaving: false\n          });\n        }\n      }\n    });\n  }\n\n  updateData(data) {\n    this.setState({\n      data: data\n    });\n  }\n\n  handleSave() {\n    this.save();\n  }\n\n  handleCancel() {\n    window.location.href=\"/members/\" + this.props.memberId + \"/survey_answers/\" + this.state.id;\n  }\n\n  renderErrorDisplay() {\n    if(this.state.errors) {\n      return  (\n        <ErrorDisplay\n          errors={this.state.errors}\n        />\n      );\n    }\n  }\n\n  handleOptionSelected(question, option) {\n    console.log(question);\n    console.log(option);\n\n    var data    = this.state.data;\n\n    for(var i = 0; i < data.data.answers.length; i++) {\n      if(data.data.answers[i].survey_question.id == question.id) {\n        data.data.answers[i].answer = option.content;\n        data.data.answers[i].score  = option.score;\n      }\n    }\n\n    this.updateData(data);\n  }\n\n  renderQuestions() {\n    var data  = this.state.data;\n\n    var questionDisplay = [];\n\n    for(var i = 0; i < data.data.answers.length; i++) {\n      var o               = data.data.answers[i];\n      var question        = o.survey_question;\n      var options         = o.survey_question.data.options;\n      var optionsDisplay  = [];\n      console.log(o);\n\n      for(var j = 0; j < options.length; j++) {\n        optionsDisplay.push(\n          <div key={\"answer-\" + i + \"-\" + j}>\n            <input\n              type=\"radio\"\n              name={\"question-\" + question.id + \"-options\"}\n              value={options[j].content}\n              onChange={this.handleOptionSelected.bind(this, question, options[j])}\n              checked={o.answer == options[j].content}\n            />\n            {options[j].content}\n          </div>\n        );\n      }\n\n      questionDisplay.push(\n        <div key={\"answer-\" + i}>\n          <h4>\n            {o.survey_question.content}\n          </h4>\n          {optionsDisplay}\n        </div>\n      );\n    }\n\n    return  (\n      <div>\n        {questionDisplay}\n      </div>\n    );\n  }\n\n  render() {\n    var data  = this.state.data;\n    console.log(data);\n\n    if(this.state.isLoading) {\n      return (\n        <div>\n          <SkCubeLoading/>\n        </div>\n      );\n    } else {\n      var data  = this.state.data;\n      return (\n        <div>\n          {this.renderErrorDisplay()}\n          <div className=\"row\">\n            <div className=\"col\">\n              <h3>\n                {data.meta.survey.name}\n              </h3>\n              <hr/>\n              {this.renderQuestions()}\n              <hr/>\n              <div className=\"btn-group\">\n                <button\n                  className=\"btn btn-success\"\n                  disabled={this.state.isSaving}\n                  onClick={this.handleSave.bind(this)}\n                >\n                  <span className=\"bi bi-check\"/>\n                  Save\n                </button>\n                <button\n                  className=\"btn btn-danger\"\n                  disabled={this.state.isSaving}\n                  onClick={this.handleCancel.bind(this)}\n                >\n                  <span className=\"bi bi-x\"/>\n                  Cancel\n                </button>\n              </div>\n            </div>\n          </div>\n        </div>\n      );\n    }\n  }\n}\n", "import React from 'react';\nimport $ from 'jquery';\nimport moment from 'moment';\nimport Select from 'react-select';\nimport Resizer from 'react-image-file-resizer';\nimport Modal from 'react-modal';\n\nimport SkCubeLoading from '../SkCubeLoading';\nimport ErrorDisplay from '../ErrorDisplay';\nimport ApplicationFormFinancialInformation from './ApplicationFormFinancialInformation';\nimport ApplicationFormCLIPBeneficiary from './ApplicationFormCLIPBeneficiary';\nimport ApplicationFormProjectType from './ApplicationFormProjectType';\nimport ApplicationTransferOption from './ApplicationTransferOption';\nimport ApplicationFormActiveLoans from './ApplicationFormActiveLoans';\n\n\nexport default class ApplicationFormComponent extends React.Component {\n  constructor(props) {\n    super(props);\n\n    this.state  = {\n      isLoading: true,\n      isSaving: false,\n      isActive: false,\n      coMakers: [],\n      loanProducts: [],\n      loanProductTypes: [],\n      loanProductTagging: [],\n      currentLoanProductId: \"\",\n      currentLoanProductTypeId: \"\",\n      projectTypeCategories: [],\n      projectTypes: [],\n      optionTransfer: [],\n      TransferOptions: [],\n      currentProjectTypeCategoryId: \"\",\n      currentBankTransferId: \"\",\n      data: false,\n      coMakerProfilePicture: false,\n      coMakerThreeProfilePicture: false,\n      memberMobileNumber: \"\",\n      isMobileNumberValid: false,\n      mobileNumberMaxLength: false,\n      isMobileNumberExist: false,\n      paymentType: \"\",\n      subType: \"\",\n//<<<<<<< active_loans_accounting_etry\n     paidLoansFromChild: [],\n//      errors: false\n//=======\n      errors: false,\n      firstCoMaker: null,\n      secondCoMaker: null,\n      thirdCoMaker: null,\n      coMakersError: null,\n      pbErrorOn: null,\n//>>>>>>> master\n    };\n  }\n\n  componentDidMount() {\n    var context = this;\n\n  // Kunin ang paid_loans data mula sa #react-root\nvar paidLoansFetch = document.getElementById(\"react-root\")?.dataset?.paidLoansData;\n\n// Siguraduhin na may laman bago i-parse\nif (paidLoansFetch) {\n  try {\n    paidLoansFetch = JSON.parse(paidLoansFetch);\n  } catch (e) {\n    console.error(\"Error parsing paid_loans_data:\", e);\n    paidLoansFetch = [];\n  }\n} else {\n  paidLoansFetch = [];\n}\n\n// I-console log\nconsole.log(\"RAW paid_loans_data:\", paidLoansFetch);\n\n\nthis.setState({ paidLoansFromChild: paidLoansFetch || [] });\n\n    var data  = {\n      id: this.props.id,\n      member_id: this.props.memberId\n    }\n\n//<<<<<<< active_loans_accounting_etry\n\n    // Fetch active loans for member\n$.ajax({\n  url: \"/loans/active_loans\",\n  data: { member_id: this.props.memberId },\n  method: 'GET',\n  success: (response) => {\n    if (response.message === \"ok\") {\n      this.setState({ activeLoans: response.loans });\n    } else {\n      console.warn(\"Failed to fetch active loans:\", response.message);\n    }\n  },\n  error: (err) => console.error(err)\n});\n//=======\n    this.loadAllMembers();\n//>>>>>>> master\n\n\n    // Fetch co_makers\n    // $.ajax({\n    //   url: \"/api/v1/members/member_co_makers\",\n    //   data: {\n    //     id: context.props.memberId\n    //   },\n    //   method: 'GET',\n    //   success: function(response) {\n    //     console.log(response);\n    //     context.setState({\n    //       coMakers: response.co_makers\n    //     });\n    //   },\n    //   error: function(response) {\n    //     console.log(response);\n    //   }\n    // });\n\n    // Fetch loan_products\n    $.ajax({\n      url: \"/api/v1/members/member_loan_products\",\n      data: {\n        id: context.props.memberId\n      },\n      method: 'GET',\n      success: function(response) {\n        console.log(\"Got Loan Products\",response);\n        // console.log(response);\n        console.log(context.state.data);\n        // Set currentLoanProductId\n        var data  = context.state.data;\n\n        context.setState({\n          loanProducts: response.loan_products,\n          data: data\n        });\n      },\n      error: function(response) {\n        console.log(response);\n      }\n    });\n\n    // Fetch loan_product_types\n    $.ajax({\n      url: \"/api/loan_product_types\",\n      data: {\n        loan_product_id: context.state.currentLoanProductId\n      },\n      method: 'GET',\n      success: function(response) {\n        console.log(\"Got Loan Product Types\",response);\n        // console.log(response);\n        \n        var data = context.state.data;\n\n        context.setState({\n          loanProductTypes: response.loan_product_types\n        });\n      }\n    });\n\n    // Fetch loan_product_tagging\n    $.ajax({\n      url: \"/api/loan_product_taggings\",\n      data: {\n        loan_product_id: context.state.currentLoanProductId\n      },\n      method: 'GET',\n      success: function(response) {\n        console.log(\"Got Loan Product Types\",response);\n        // console.log(response);\n        \n        var data = context.state.data;\n\n        context.setState({\n          loanProductTagging: response.loan_product_taggingg\n        });\n      }\n    });\n\n    // Fetch member_mobile_number\n    $.ajax({\n      url: \"/api/v1/members/member_mobile_number\",\n      data: {\n        id: context.props.memberId\n      },\n      method: 'GET',\n      success: function(response) {\n        // console.log(\"Got Member Mobile Number\");\n        // console.log(response.mobile_number);\n        var mobile_number = response.mobile_number\n        mobile_number = mobile_number.replace(/[&\\/\\\\#,\\-\\_()$~%.'\":*?<>{}]/g, '');\n\n\n        if(mobile_number.substring(0,3) == \"639\"){\n          context.setState({\n            mobileNumberMaxLength: 12\n          });\n        }\n        else if(mobile_number.substring(0,4) == \"+639\"){\n          context.setState({\n            mobileNumberMaxLength: 13\n          });\n        }\n        else if(mobile_number.substring(0,2) == \"09\"){\n          context.setState({\n            mobileNumberMaxLength: 11\n          });\n        }\n        else if(mobile_number.substring(0,1) == \"9\"){\n          context.setState({\n            mobileNumberMaxLength: 10\n          });\n        }\n\n        var regex = /((\\+63)|0|63|)[.\\- ]?9[0-9]{2}[.\\- ]?[0-9]{3}[.\\- ]?[0-9]{4}/\n        if(regex.test(mobile_number)){\n          let mobileNumberExist = context.getMobileNumberExist(mobile_number); // check if mobile number is exist\n          // console.log(\"isMobileNumberExist: \", context.state.isMobileNumberExist);\n          if(!mobileNumberExist){\n            context.setState({\n              isMobileNumberValid: true\n            });\n          }\n          // context.setState({\n          //   isMobileNumberValid: true\n          // });\n        }\n        else{\n          context.setState({\n            isMobileNumberValid: false\n          });\n        }\n\n        context.setState({\n          memberMobileNumber: mobile_number,\n        });\n      },\n      error: function(response) {\n        console.log(response);\n      }\n    });\n\n    $.ajax({\n      url: \"/api/v1/loans/fetch\",\n      data: data,\n      method: 'GET',\n      success: function(response) {\n        console.log(response);\n        var currentProjectTypeCategoryId  = context.state.currentProjectTypeCategoryId;\n        var currentBankTransferId         = context.state.currentBankTransferId;\n        var projectTypes                  = [];\n        var TransferOptions               = [];\n\n        if(response.loan.project_type_id) {\n          for(var i = 0; i < response.project_type_categories.length; i++) {\n            for(var j = 0; j < response.project_type_categories[i].project_types.length; j++) {\n              if(response.loan.project_type_id == response.project_type_categories[i].project_types[j].id) {\n                currentProjectTypeCategoryId  = response.project_type_categories[i].id;\n                projectTypes                  = response.project_type_categories[i].project_types; \n                console.log(\"projectTypes to be loaded:\");\n                console.log(projectTypes);\n              }\n            }\n          }\n        }\n        if(response.loan.bank_id) {\n          for(var i = 0; i < response.transfer_option.length; i++) {\n            for(var j = 0; j < response.transfer_option[i].bank_transfers.length; j++) {\n              if(response.loan.bank_id == response.transfer_option[i].bank_transfers[j].id) {\n                currentBankTransferId = response.transfer_option[i].id;\n                TransferOptions       = response.transfer_option[i].bank_transfers;\n                console.log(\"Bank Transfer to be loaded:\");\n                console.log(TransferOptions);\n              }\n            }\n          }\n        }\n\n        context.setState({\n          isLoading: false,\n          data: response.loan,\n          projectTypeCategories: response.project_type_categories,\n          optionTransfer: response.transfer_option,\n          projectTypes: projectTypes,\n          TransferOptions: TransferOptions,\n          currentProjectTypeCategoryId: currentProjectTypeCategoryId,\n          currentBankTransferId: currentBankTransferId,\n          coMakerProfilePicture: response.loan.co_maker_relative_profile_picture_url,\n          coMakerThreeProfilePicture: response.loan.co_maker_non_relative_profile_picture_url,\n          }, () => {\n          context.syncSelectedCoMakers();\n          context.enforceCoMakerLimit();\n         });\n      },\n      error: function(response) {\n        console.log(response);\n        alert(\"Something went wrong when fetching loan\");\n      }\n    });\n  }\n\n  // ===== Co-maker Limit Helpers =====\n\n  // Selected Loan Product from list\n  getSelectedLoanProduct = () => {\n    const { loanProducts, data } = this.state;\n    if (!data || !data.loan_product_id) return null;\n    return loanProducts.find(p => String(p.id) === String(data.loan_product_id)) || null;\n  };\n\n  hasName = (prod, text) => !!prod?.name && new RegExp(text, \"i\").test(prod.name);\n\n  // Rules:\n  // - Real Estate / Vehicle => 0 co-makers\n  // - Unified Mega Loan     => 3 co-makers\n  // - others                => 2 co-makers\n  computeMaxCoMakersAllowed = () => {\n    const prod = this.getSelectedLoanProduct();\n    if (!prod) return 2;\n    if (this.hasName(prod, \"real\\\\s*estate\") || this.hasName(prod, \"vehicle\")) return 0;\n    if (this.hasName(prod, \"^\\\\s*unified\\\\s+mega\\\\s+loan\\\\s*$\")) return 3;\n    return 2;\n  };\n\n  // Principal Borrower (PB) rules by loan product\n  computeMaxPrincipalBorrowersAllowed = () => {\n    const prod = this.getSelectedLoanProduct();\n    // Default when nothing selected\n    if (!prod) return 2;\n\n    // No PB needed for these\n    if (this.hasName(prod, \"real\\\\s*estate\") || this.hasName(prod, \"vehicle\")) return 0;\n\n    // Unified Mega Loan \u2192 3 PB max\n    if (this.hasName(prod, \"^\\\\s*unified\\\\s+mega\\\\s+loan\\\\s*$\")) return 3;\n\n    // Others \u2192 2 PB max\n    return 2;\n  };\n\n\n  // Is a loan product selected?\n  hasSelectedLoanProduct = () => {\n    const d = this.state.data || {};\n    const id = d.loan_product_id;\n    return !!id && id !== \"\" && id !== \"-1\";\n  };\n\n  // Human-readable requirement banner\n  getCoMakerRequirementMessage = () => {\n    if (!this.hasSelectedLoanProduct()) return null;\n\n    const max = this.computeMaxCoMakersAllowed();\n    if (max === 0) return \"No co-maker is required for this loan.\";\n    if (max === 1) return \"This loan requires 1 co-maker.\";\n    if (max === 2) return \"This loan requires up to 2 co-makers.\";\n    if (max === 3) return \"This loan requires up to 3 co-makers.\";\n    return \"\";\n  };\n\n  enforceCoMakerLimit = () => {\n  this.setState({ coMakersError: this.computeCoMakersError() });\n  };\n\n\n  // helper to read active loan product Principal Borrower count for a member \n  // fetchPBActiveCountForProduct(memberId, loanProductId) {\n  // return new Promise((resolve) => {\n  //   if (!memberId || !loanProductId) {\n  //     console.warn(\"fetchPBActiveCountForProduct called with missing params:\", { memberId, loanProductId });\n  //     return resolve(0);\n  //   }\n\n  //   $.ajax({\n  //     url: `/api/v1/members/${memberId}/principal_borrowers_active_count`,\n  //     method: 'GET',\n  //     data: { loan_product_id: loanProductId },\n  //     success: (resp) => {\n  //       resolve(resp?.active_count ?? 0);\n  //     },\n  //     error: (err) => {\n  //       resolve(0);\n  //       }\n  //       });\n  //     });\n  //   }\n\n  fetchPBActiveCountForProduct(memberId, loanProductId) {\n  return new Promise((resolve) => {\n    if (!memberId || !loanProductId) {\n      console.warn(\"fetchPBActiveCountForProduct called with missing params:\", { memberId, loanProductId });\n      return resolve(0);\n    }\n\n    console.log(\"fetchPBActiveCountForProduct Request:\", {\n      memberId,\n      loanProductId,\n      url: `/api/v1/members/${memberId}/principal_borrowers_active_count?loan_product_id=${loanProductId}`,\n    });\n\n    $.ajax({\n      url: `/api/v1/members/${memberId}/principal_borrowers_active_count`,\n      method: \"GET\",\n      data: { loan_product_id: loanProductId },\n      success: (resp) => {\n        const value = resp?.active_count ?? 0;\n        console.log(\"fetchPBActiveCountForProduct Success:\", {\n          memberId,\n          loanProductId,\n          response: resp,\n          activeCount: value,\n        });\n        resolve(value);\n      },\n      error: (err) => {\n        console.error(\"fetchPBActiveCountForProduct Error:\", err);\n        resolve(0);\n      },\n    });\n  });\n}\n\n\n\n\n\n  // clear warning if >= 3\n    // ===== PB validation & warning (product-aware) =====\n    async checkPBAndWarn(memberId, source) {\n    if (!memberId) return;\n\n    const pbMax = this.computeMaxPrincipalBorrowersAllowed();\n    const loanProductId = this.state.data?.loan_product_id;\n\n    if (pbMax === 0) {\n      if (this.state.pbErrorOn === source && this.state.coMakersError?.includes(\"Principal Borrower\")) {\n        this.setState({ coMakersError: null, pbErrorOn: null });\n      }\n      return;\n    }\n\n    const count = await this.fetchPBActiveCountForProduct(memberId, loanProductId);\n\n    if (count >= pbMax) {\n      const prod = this.getSelectedLoanProduct();\n      const prodName = prod?.name || \"this loan product\";\n      const msg = `This member already has ${count} Principal Borrower (active). Maximum for ${prodName} is ${pbMax}.`;\n      this.setState({ coMakersError: msg, pbErrorOn: source });\n    } else {\n      if (this.state.coMakersError?.includes(\"Principal Borrower\") && this.state.pbErrorOn === source) {\n        this.setState({ coMakersError: null, pbErrorOn: null });\n      }\n    }\n  }\n\n\n\n  // Helpers\n  syncSelectedCoMakers = () => {\n    const { data, coMakers } = this.state;\n    if (!data || !data.data) return;\n\n    // Prefer array\n    let raw = Array.isArray(data.data.co_makers) ? data.data.co_makers.slice(0,3) : [];\n    if (raw.length === 0) {\n      const legacy = [];\n      if (data.data.co_maker_one && (data.data.co_maker_one.id || data.data.co_maker_one.value)) legacy.push(data.data.co_maker_one);\n      if (data.data.co_maker_two) legacy.push(data.data.co_maker_two);\n      if (data.data.co_maker_three) legacy.push(data.data.co_maker_three);\n      raw = legacy.slice(0,3);\n    }\n\n    const toOption = (cm) => {\n      if (!cm) return null;\n      const id = typeof cm === 'object' ? (cm.id ?? cm.value) : cm;\n      if (id === undefined || id === null) return null;\n      const fromList = coMakers.find(o => String(o.value) === String(id));\n      const label = fromList?.label || cm.name || cm.label || String(id);\n      return { value: id, label };\n    };\n\n    this.setState({\n      firstCoMaker:  toOption(raw[0]),\n      secondCoMaker: toOption(raw[1]),\n      thirdCoMaker:  toOption(raw[2]),\n    }, () => {\n      this.setState({ coMakersError: this.computeCoMakersError() });\n    });\n  };\n\n  renderErrorDisplay() {\n    if(this.state.errors) {\n      return  (\n        <ErrorDisplay\n          errors={this.state.errors}\n        />\n      );\n    }\n  }\n\n  getMobileNumberExist(mobile_number){\n    let context = this;\n  \n    // Fetch member_mobile_number_exist\n    $.ajax({\n      url: \"/api/v1/members/mobile_number_exist\",\n      data: {\n        mobile_number: mobile_number,\n        id: context.props.memberId\n      },\n      method: 'GET',\n      success: function(response) {\n        // console.log(\"Got Member Mobile Number\");\n        // console.log(response);\n        \n        var is_mobile_number_exist = response.mobile_number_exist;\n\n        // console.log(\"UYKAP: \", is_mobile_number_exist);\n        context.setState({\n          isMobileNumberExist: is_mobile_number_exist,\n        });\n        \n        return is_mobile_number_exist;\n      },\n      error: function(response) {\n        console.log(response);\n      }\n    });\n  }\n\n  updateData(data) {\n    this.setState({\n      data: data,\n      paymentType: data.paymentType || this.state.paymentType,\n      subType: data.subType || this.state.subType,\n    }, () => {\n      this.enforceCoMakerLimit();\n    });\n  }\n\n  handleDatePrepared(event) {\n    var data  = this.state.data;\n\n    data.date_prepared  = event.target.value;\n\n    this.updateData(data);\n  }\n\n  handleDateReleased(event) {\n    var data  = this.state.data;\n\n    data.date_released  = event.target.value;\n\n    this.updateData(data);\n  }\n\n  handlePnNumber(event) {\n    var data  = this.state.data;\n\n    data.pn_number  = event.target.value;\n\n    this.updateData(data);\n  }\n\n  handleClipNumber(event) {\n    var data  = this.state.data;\n\n    data.data.clip_number = event.target.value;\n\n    this.updateData(data);\n  }\n\n  handlePrincipal(event) {\n    var data  = this.state.data;\n\n    data.principal  = event.target.value;\n\n    this.updateData(data);\n  }\n\n  // Old function for Co-makers\n  // handleCoMakerThree(event) {\n  //   var data  = this.state.data;\n\n  //   data.data.co_maker_three = event.target.value.toUpperCase();\n\n  //   this.updateData(data);\n  // }\n\n  // handleCoMakerTwo(event) {\n  //   var data = this.state.data;\n\n  //   data.data.co_maker_two = event.target.value.toUpperCase();\n\n  //   this.updateData(data);\n  // }\n\n  // handleCoMakerOne(o) {\n  //   var data  = this.state.data;\n\n  //   for(var i = 0; i < this.state.coMakers.length; i++) {\n  //     if(this.state.coMakers[i].id == o.value) {\n  //       data.data.co_maker_one  = this.state.coMakers[i];\n  //     }\n  //   }\n\n  //   this.updateData(data);\n  // }\n\n  \n  loadAllMembers() {\n    const context = this;\n    $.ajax({\n      url: \"/api/v1/members/get_members\",\n      method: \"GET\",\n      success(response) {\n        const coMakers = (response || []).map(m => ({\n          value: m.id,\n          label: m.branch_name ? `${m.name} \u2014 (${m.branch_name})` : m.name,\n        }));\n\n        context.setState({ coMakers }, () => {\n          context.syncSelectedCoMakers();\n        });\n      },\n      error(err) {\n        console.error(\"Error fetching members:\", err);\n        context.setState({ coMakers: [] });\n      }\n    });\n  }\n\n  // ===== Co-maker validation =====\n  computeCoMakersError = () => {\n    if (!this.hasSelectedLoanProduct()) return null;\n\n    const { firstCoMaker, secondCoMaker, thirdCoMaker } = this.state;\n    const max = this.computeMaxCoMakersAllowed();\n\n    const selected = [firstCoMaker?.value, secondCoMaker?.value, thirdCoMaker?.value]\n      .filter(v => v !== undefined && v !== null)\n      .map(v => String(v));\n\n    // Borrower cannot be a co-maker\n    const borrowerId = String(this.props.memberId);\n    if (selected.some(v => v === borrowerId)) {\n      return \"Borrower cannot be selected as a co-maker.\";\n    }\n\n    // Must be unique\n    if (new Set(selected).size !== selected.length) {\n      return \"Co-makers must be unique.\";\n    }\n\n    if (selected.length > max) {\n      return max === 0\n        ? \"This loan does not require co-makers.\"\n        : `This loan allows a maximum of ${max} co-maker(s).`;\n    }\n\n    return null;\n  };\n\n  validateCoMakers() {\n    const err = this.computeCoMakersError();\n    this.setState({ coMakersError: err });\n    return !err;\n  }\n\n\n\n  // ===== Co-maker selectors =====\n  // First Co-maker\n  handleFirstCoMaker(selectedOption) {\n    this.setState({ firstCoMaker: selectedOption }, () => {\n      this.enforceCoMakerLimit();\n      this.setState({ coMakersError: this.computeCoMakersError() });\n      this.checkPBAndWarn(selectedOption?.value, \"first\");\n    });\n  }\n\n  // Second Co-maker\n  handleSecondCoMaker(selectedOption) {\n    this.setState({ secondCoMaker: selectedOption }, () => {\n      this.enforceCoMakerLimit();\n      this.setState({ coMakersError: this.computeCoMakersError() });\n      this.checkPBAndWarn(selectedOption?.value, \"second\");\n    });\n  }\n\n  // Third Co-maker\n  handleThirdCoMaker(selectedOption) {\n    this.setState({ thirdCoMaker: selectedOption }, () => {\n      this.enforceCoMakerLimit();\n      this.setState({ coMakersError: this.computeCoMakersError() });\n      this.checkPBAndWarn(selectedOption?.value, \"third\");\n    });\n  }\n\n\n\n  handleNumInstallments(event) {\n    var data  = this.state.data;\n\n    data.num_installments = event.target.value;\n\n    this.updateData(data);\n  }\n\n  handleTerm(event) {\n    var data  = this.state.data;\n\n    data.term = event.target.value;\n\n    this.updateData(data);\n  }\n\n  handleVoucherParticular(event) {\n    var data  = this.state.data;\n\n    data.data.voucher.particular  = event.target.value;\n\n    this.updateData(data);\n  }\n\nhandlePaidLoans = (paidLoans) => {\n  this.setState(prev => ({\n    paidLoansFromChild: paidLoans,\n    data: { ...prev.data, paid_loans: paidLoans }\n  }), () => {\n    // Compute loanBalancesById including total_paid\n    const loanBalancesById = this.state.paidLoansFromChild.reduce((acc, loan) => {\n      acc[loan.id] = {\n        principal_balance: Number(loan.principal_balance || 0),\n        interest_balance:  Number(loan.interest_balance  || 0),\n        total_balance:     Number(loan.total_balance || 0),\n        total_paid:        Number(loan.total_paid || 0)\n      };\n      return acc;\n    }, {});\n    console.log(\"loanBalancesById:\", loanBalancesById);\n    this.setState({ loanBalancesById });\n  });\n}\n\n\n  handleSave() {\n    const context = this;\n    const state   = context.state;\n    // need changes \n  //   if (!state.data.paid_loans || state.data.paid_loans.length === 0) {\n  //   alert(\"Active loans are required.\");\n  //   return;\n  // }\n\n\n     if (!this.validateCoMakers()) {\n      return;\n    }\n\n    this.setState({\n      isSaving: true\n    });\n    const formData = new FormData();\n\n    if(state.coMakerProfilePicture) {\n      formData.append('co_maker_profile_picture', state.coMakerProfilePicture);\n    }\n\n    if(state.coMakerThreeProfilePicture) {\n      formData.append('co_maker_three_profile_picture', state.coMakerThreeProfilePicture);\n    }\n\n    formData.append(\"payment_type\", state.paymentType);\n    formData.append(\"sub_type\", state.subType);\n\n    // FOR MOBILE NUMBER\n    formData.append('mobile_number', state.memberMobileNumber);\n\n    const maxAllowed = this.computeMaxCoMakersAllowed();\n    const chosen = [state.firstCoMaker, state.secondCoMaker, state.thirdCoMaker].filter(Boolean);\n\n    if ((maxAllowed === 0 && chosen.length > 0) || chosen.length > maxAllowed) {\n      this.setState({\n        isSaving: false,\n        coMakersError: maxAllowed === 0\n          ? \"This loan does not require co-makers.\"\n          : `This loan allows a maximum of ${maxAllowed} co-maker(s).`\n      });\n      return;\n    }\n\n    const trimmed = chosen.slice(0, maxAllowed);\n    const unique = [];\n    const seen = new Set();\n    trimmed.forEach(cm => {\n      const key = String(cm.value);\n      if (!seen.has(key)) { seen.add(key); unique.push(cm); }\n    });\n    const coMakersPayload = unique.map(cm => ({ id: cm.value, name: cm.label }));\n    const payload = {\n      ...(state.data || {}),\n      data: {\n        ...((state.data && state.data.data) || {}),\n        co_makers: coMakersPayload,\n      },\n    };\n\n    // formData.append('payload', JSON.stringify(state.data));\n    formData.append(\"payload\", JSON.stringify(payload));\n    formData.append('authenticity_token', context.props.authenticityToken);\n\n    $.ajax({\n      url: \"/api/v1/loans/save\",\n      method: \"POST\",\n      data: formData,\n      contentType: false,\n      processData: false,\n      cache: false,\n      success: function(response) {\n        window.location.href=\"/loans/\" + response.id;\n      },\n      error: function(response) {\n        try {\n          context.setState({\n            errors: JSON.parse(response.responseText),\n            isSaving: false\n          });\n        } catch(err) {\n          alert(\"Something went wrong\");\n          context.setState({\n            errors: false,\n            isSaving: false\n          });\n        }\n      }\n    });\n  }\n\n  handleCancel() {\n    window.location.href=\"/members/\" + this.props.memberId + \"/display\";\n  }\n\n  handleLoanProductType(event) {\n    var data  = this.state.data;\n\n    data.loan_product_type_id = event.target.value;\n\n    this.updateData(data);\n  }\n  \n  handleLoanProductTag(event) {\n    var data  = this.state.data;\n\n    data.loan_product_tagging_id = event.target.value;\n\n    this.updateData(data);\n  }\n  \n  renderLoanProductTagging() {\n    var data                = this.state.data;\n    var loanProductTagging  = this.state.loanProductTagging || [];\n    var display             = [];\n    console.log(loanProductTagging)\n    display.push(\n      <option value=\"\" key=\"empty-loan-product-type\">\n        -- SELECT --\n      </option>\n    )\n\n    for(var i = 0; i < loanProductTagging.length; i++) {\n      display.push(\n        <option value={loanProductTagging[i].id} key={\"loan-product-tag-\" + loanProductTagging[i].id}>\n          {loanProductTagging[i].name}\n        </option>\n      )\n    }\n\n    return display;\n  }\n\n  handleLoanProduct(event) {\n    var data    = this.state.data;\n    var context = this;\n\n    data.loan_product_id  = event.target.value;\n\n    this.setState({\n      firstCoMaker: null,\n      secondCoMaker: null,\n      thirdCoMaker: null,\n      coMakersError: null,\n      pbErrorOn: null,\n    });\n\n    // Fetch loan_product_types\n    $.ajax({\n      url: \"/api/loan_product_taggings\",\n      data: {\n        loan_product_id: data.loan_product_id\n      },\n      method: 'GET',\n      success: function(response) {\n        console.log(\"Got Loan Product Types\");\n        console.log(response);\n        \n        var data = context.state.data;\n\n        if(response.loan_product_tagging.length > 0) {\n          data.loan_product_tagging_id = response.loan_product_tagging[0].id;\n        }\n\n        context.setState({\n          loanProductTagging: response.loan_product_tagging,\n          data: data,\n\n          // CLEAR CO-MAKER FIELDS WHEN LOAN PRODUCT CHANGES\n          firstCoMaker: null,\n          secondCoMaker: null,\n          thirdCoMaker: null,\n          coMakersError: null,\n          pbErrorOn: null,\n\n        }, () => {\n          context.enforceCoMakerLimit();\n        });\n      }\n    })\n\n    this.updateData(data);\n  }\n\n  renderLoanProducts() {\n    var data                = this.state.data;\n    var loanProducts        = this.state.loanProducts;\n    var loanProductsDisplay = [];\n\n    loanProductsDisplay.push(\n      <option value=\"\" key={\"empty-loan-product\"}>\n        -- SELECT --\n      </option>\n    );\n\n    for(var i = 0; i < loanProducts.length; i++) {\n      loanProductsDisplay.push(\n        <option value={loanProducts[i].id} key={\"loan-product-\" + loanProducts[i].id}>\n          {loanProducts[i].name}\n        </option>\n      );\n    }\n\n    return loanProductsDisplay;\n  }\n\n  renderLoanProductTypes() {\n    var data              = this.state.data;\n    var loanProductTypes  = this.state.loanProductTypes || [];\n    var display           = [];\n\n    display.push(\n      <option value=\"\" key=\"empty-loan-product-type\">\n        -- SELECT --\n      </option>\n    )\n\n    for(var i = 0; i < loanProductTypes.length; i++) {\n      display.push(\n        <option value={loanProductTypes[i].id} key={\"loan-product-type-\" + loanProductTypes[i].id}>\n          {loanProductTypes[i].name}\n        </option>\n      )\n    }\n\n    return display;\n  }\n  \n\n  renderNumInstallmentOptions() {\n    var term  = this.state.data.term;\n    var termItems = [];\n\n    if(term == \"weekly\") {\n      termItems.push(\n        <option value={15} key={\"weekly-\" + 15}>\n          15\n        </option>\n      );\n\n      termItems.push(\n        <option value={25} key={\"weekly-\" + 25}>\n          25\n        </option>\n      );\n\n      termItems.push(\n        <option value={35} key={\"weekly-\" + 35}>\n          35\n        </option>\n      );\n\n      termItems.push(\n        <option value={50} key={\"weekly-\" + 50}>\n          50\n        </option>\n      );\n\n      termItems.push(\n        <option value={75} key={\"weekly-\" + 75}>\n          75\n        </option>\n      );\n      \n      termItems.push(\n        <option value={100} key={\"weekly-\" + 100}>\n          100\n        </option>\n      );\n\n    } else if(term == \"monthly\") {\n      termItems.push(\n        <option value={3} key={\"monthly-\" + 3}>\n          3\n        </option>\n      );\n\n      termItems.push(\n        <option value={6} key={\"monthly-\" + 6}>\n          6\n        </option>\n      );\n\n      termItems.push(\n        <option value={9} key={\"monthly-\" + 9}>\n          9\n        </option>\n      );\n\n      termItems.push(\n        <option value={12} key={\"monthly-\" + 12}>\n          12\n        </option>\n      );\n    } else if(term == \"semi-monthly\") {\n      termItems.push(\n        <option value={6} key={\"semi-monthly-\" + 6}>\n          6\n        </option>\n      );\n\n      termItems.push(\n        <option value={12} key={\"semi-monthly-\" + 12}>\n          12\n        </option>\n      );\n\n      termItems.push(\n        <option value={18} key={\"semi-monthly-\" + 18}>\n          18\n        </option>\n      );\n      \n      termItems.push(\n        <option value={20} key={\"semi-monthly-\" + 20}>\n          20\n        </option>\n      );\n\n      termItems.push(\n        <option value={24} key={\"semi-monthly-\" + 24}>\n          24\n        </option>\n      );\n      termItems.push(\n        <option value={36} key={\"semi-monthly-\" + 36}>\n          36\n        </option>\n      );\n      termItems.push(\n        <option value={40} key={\"semi-monthly-\" + 40}>\n          40\n        </option>\n      );\n      termItems.push(\n        <option value={72} key={\"semi-monthly-\" + 72}>\n          72\n        </option>\n      );\n      termItems.push(\n        <option value={80} key={\"semi-monthly-\" + 80}>\n          80\n        </option>\n      );\n      termItems.push(\n        <option value={48} key={\"semi-monthly-\" + 48}>\n          48\n        </option>\n      );\n      termItems.push(\n        <option value={96} key={\"semi-monthly-\" + 96}>\n          96\n        </option>\n      );\n      termItems.push(\n        <option value={50} key={\"semi-monthly-\" + 50}>\n          50\n        </option>\n      );\n    }\n\n    return termItems;\n  }\n\n  handleProjectTypeCategoryChanged(event) {\n    this.setState({\n      currentProjectTypeCategoryId: event.target.value\n    });\n  }\n  handleTransferOptionChanged(event) {\n    this.setState({\n      currentBankTransferId: event.target.value\n    });\n  }\n\n  handleBusinessPermitAvailableChanged(event) {\n    const target  = event.target;\n    const value   = target.type === 'checkbox' ? target.checked : target.value;\n\n    var data  = this.state.data;\n    data.data.business_permit_available  = value || false;\n\n    this.setState({ data: data });\n  }\n\n  handleAdvanceInsuranceChanged(event) {\n    const target  = event.target;\n    const value   = target.type === 'checkbox' ? target.checked : target.value;\n\n    var data  = this.state.data;\n    data.data.advance_insurance_available  = value || false;\n\n    this.setState({ data: data });\n  }\n  handleShareCapitalChanged(event) {\n    const target  = event.target;\n    const value   = target.type === 'checkbox' ? target.checked : target.value;\n\n    var data  = this.state.data;\n    data.data.share_capital_available  = value || false;\n\n    this.setState({ data: data });\n  }\n  handleServiceFeeChanged(event) {\n    const target  = event.target;\n    const value   = target.type === 'checkbox' ? target.checked : target.value;\n\n    var data  = this.state.data;\n    data.data.service_fee_available  = value || false;\n\n    this.setState({ data: data });\n  }\n  \n  handleSMSFeeChanged(event) {\n    const target  = event.target;\n    const value   = target.type === 'checkbox' ? target.checked : target.value;\n\n    var data  = this.state.data;\n    data.data.sms_fee_available  = value || false;\n\n    this.setState({ data: data });\n  }\n\n  handleCoMakerThreeProfilePictureSelected(event) {\n    const context         = this;\n    const fileInput       = event.target.files[0];\n    const fileType        = fileInput['type'];\n    const validFileTypes  = ['image/gif', 'image/jpeg', 'image/png'];\n\n    if(fileType && validFileTypes.includes(fileType)) {\n      try {\n        Resizer.imageFileResizer(\n          fileInput,\n          300,\n          300,\n          \"JPEG\",\n          100,\n          0,\n          (uri) => {\n            console.log(uri);\n            context.setState({\n              coMakerThreeProfilePicture: uri\n            })\n          },\n          \"base64\",\n          200,\n          200\n        )\n      } catch(err) {\n        console.log(err);\n        alert(\"Error resizing image file for co-maker\");\n      }\n    } else {\n      alert(\"Invalid image file!\");\n    }\n  }\n\n  handleCoMakerProfilePictureSelected(event) {\n    const context         = this;\n    const fileInput       = event.target.files[0];\n    const fileType        = fileInput['type'];\n    const validFileTypes  = ['image/gif', 'image/jpeg', 'image/png'];\n\n    if(fileType && validFileTypes.includes(fileType)) {\n      try {\n        Resizer.imageFileResizer(\n          fileInput,\n          300,\n          300,\n          \"JPEG\",\n          100,\n          0,\n          (uri) => {\n            console.log(uri);\n            context.setState({\n              coMakerProfilePicture: uri\n            })\n          },\n          \"base64\",\n          200,\n          200\n        )\n      } catch(err) {\n        console.log(err);\n        alert(\"Error resizing image file for co-maker\");\n      }\n    } else {\n      alert(\"Invalid image file!\");\n    }\n  }\n\n  handleInputMobileNumberValidator(e){\n    if(/^[0-9 +]*$/.test(e.target.value)){\n      // console.log(\"type:\", e.target.value)\n      this.setState({\n        memberMobileNumber: e.target.value\n      });\n\n      // VALIDATE THE MOBILE NUMBER\n      var regex = /((\\+63)|0|63|)[.\\- ]?9[0-9]{2}[.\\- ]?[0-9]{3}[.\\- ]?[0-9]{4}/\n      if(regex.test(e.target.value) && \n                      !(e.target.value.substring(0,5) == \"+6309\") && \n                      !(e.target.value.substring(0,4) == \"6309\") &&\n                      ((e.target.value.substring(0,3) == \"639\") || \n                        (e.target.value.substring(0,4) == \"+639\") || \n                        (e.target.value.substring(0,2) == \"09\") || \n                        (e.target.value.substring(0,1) == \"9\") )\n      ){\n        let mobileNumberExist = this.getMobileNumberExist(e.target.value); //Check if member mobile number is exist\n        if(!mobileNumberExist){\n          this.setState({\n            isMobileNumberValid: true\n          });\n        }\n        // this.setState({\n        //   isMobileNumberValid: true\n        // });\n      }\n      else{\n        this.setState({\n          isMobileNumberValid: false\n        });\n      }\n\n      // RESTRICT THE MAX LENGTH OF MOBILE NUMBER \n      if(e.target.value.substring(0,3) == \"639\"){\n        this.setState({\n          mobileNumberMaxLength: 12\n        });\n        // if the mobile number length exceed to limit\n        if(e.target.value.length > 12){\n          this.setState({\n            isMobileNumberValid: false\n          });\n        }\n      }\n      else if(e.target.value.substring(0,4) == \"+639\"){\n        this.setState({\n          mobileNumberMaxLength: 13\n        });\n\n        // if the mobile number length exceed to limit\n        if(e.target.value.length > 13){\n          this.setState({\n            isMobileNumberValid: false\n          });\n        }\n      }\n      else if(e.target.value.substring(0,2) == \"09\"){\n        this.setState({\n          mobileNumberMaxLength: 11\n        });\n\n        // if the mobile number length exceed to limit\n        if(e.target.value.length > 11){\n          this.setState({\n            isMobileNumberValid: false\n          });\n        }\n      }\n      else if(e.target.value.substring(0,1) == \"9\"){\n        this.setState({\n          mobileNumberMaxLength: 11\n        });\n\n        // if the mobile number length exceed to limit\n        if(e.target.value.length == 11 || e.target.value.length > 10){\n          this.setState({\n            isMobileNumberValid: false\n          });\n        }\n\n        // IF THE MOBILE NUMBER IS START WITH 9\n        // this.setState({\n        //   isMobileNumberValid: false\n        // });\n      }\n      else{\n        this.setState({\n          mobileNumberMaxLength: false\n        });\n      }\n    }\n  }\n\n  renderCoMakerProfilePicture() {\n    if(this.state.coMakerProfilePicture) {\n      return (\n        <img\n          src={this.state.coMakerProfilePicture}\n        />\n      );\n    } else {\n      return (\n        <div>\n          No profile picture selected\n        </div>\n      );\n    }\n  }\n\n  renderCoMakerThreeProfilePicture() {\n    if(this.state.coMakerThreeProfilePicture) {\n      return (\n        <img\n          src={this.state.coMakerThreeProfilePicture}\n        />\n      );\n    } else {\n      return (\n        <div>\n          No profile picture selected\n        </div>\n      );\n    }\n  }\n\n  render() {\n    if(this.state.isLoading) {\n      return  (\n        <SkCubeLoading/>\n      );\n    } else {\n      var data  = this.state.data;\n      var coMakerOne  = { \n        value: data.data.co_maker_one.id,\n        label: data.data.co_maker_one.last_name + \", \" + data.data.co_maker_one.first_name\n      };\n\n      var businessPermitAvailable = this.state.data.data.business_permit_available || false;\n      var advanceInsuranceAvailable = this.state.data.data.advance_insurance_available || false;\n      var shareCapitalAvailable = this.state.data.data.share_capital_available || false;\n      var serviceFeeAvailable = this.state.data.data.service_fee_available || false;\n      var smsFeeAvailable = this.state.data.data.sms_fee_available || false;\n\n      // Keep your PB disable behavior\n    const isBusy = this.state.isSaving || this.state.isActive;\n    const pbLimitHit = this.state.coMakersError?.includes(\"Principal Borrower\");\n    const disableSecondDueToPB = pbLimitHit && this.state.pbErrorOn === 'first';\n    const disableThirdDueToPB  = pbLimitHit && (this.state.pbErrorOn === 'first' || this.state.pbErrorOn === 'second');\n\n      return  (\n        <div>\n          {this.renderErrorDisplay()}\n          {/* <div className=\"card\">\n            <div className=\"card-body\">\n              <div className=\"row\">\n                <div className=\"col-md-4 col-xs-12\">\n                  <div className=\"form-group\">\n                    <label>\n                      Pangalan ng Co-maker (Kamag-anak)\n                    </label>\n                    <input\n                      className=\"form-control\"\n                      value={data.data.co_maker_two}\n                      onChange={this.handleCoMakerTwo.bind(this)}\n                      disabled={this.state.isSaving || this.state.isActive || !this.props.settings.use_co_maker_two }\n                    />\n                    <hr/>\n                    <label>\n                      Profile Picture (Kamag-anak)\n                    </label>\n                    <br/>\n                    <input\n                      type=\"file\"\n                      className=\"form-control\"\n                      accepts=\"image/*\"\n                      disabled={this.state.isSaving || this.state.isActive || !this.props.settings.use_co_maker_two }\n                      capture=\"user\"\n                      onChange={this.handleCoMakerProfilePictureSelected.bind(this)}\n                    />\n                    <br/>\n                    {this.renderCoMakerProfilePicture()}\n                  </div>\n                </div>\n                <div className=\"col-md-4 col-xs-12\">\n                  <div className=\"form-group\">\n                    <label>\n                      Pangalan ng Co-maker (Hindi kamag-anak / kapitbahay)\n                    </label>\n                    <input\n                      className=\"form-control\"\n                      value={data.data.co_maker_three}\n                      onChange={this.handleCoMakerThree.bind(this)}\n                      disabled={this.state.isSaving || this.state.isActive || !this.props.settings.use_co_maker_three }\n                    />\n                    <hr/>\n                    <label>\n                      Profile Picture (Hindi Kamag-anak / kapitbahay)\n                    </label>\n                    <br/>\n                    <input\n                      type=\"file\"\n                      className=\"form-control\"\n                      accepts=\"image/*\"\n                      disabled={this.state.isSaving || this.state.isActive || !this.props.settings.use_co_maker_three }\n                      capture=\"user\"\n                      onChange={this.handleCoMakerThreeProfilePictureSelected.bind(this)}\n                    />\n                    <br/>\n                    {this.renderCoMakerThreeProfilePicture()}\n                  </div>\n                </div>\n                <div className=\"col-md-4 col-xs-12\">\n                  <div className=\"form-group\">\n                    <label>\n                      Pangalan ng Co-maker (Kasama sa sentro)\n                    </label>\n                    <Select\n                      value={coMakerOne}\n                      options={this.state.coMakers}\n                      onChange={this.handleCoMakerOne.bind(this)}\n                      isDisabled={this.state.isSaving || this.state.isActive || !this.props.settings.use_co_maker_one }\n                    />\n                  </div>\n                </div>\n              </div>\n            </div>\n          </div> */}\n          <div className=\"row\">\n            <div className=\"col\">\n              <div className=\"form-group\">\n                <label style={{ fontWeight: \"bold\" }}>\n                  <span style={{ color: \"red\" }}>\n                    {\"*\"}\n                  </span>\n                  <span>\n                    {\" PN Number\"}\n                  </span>\n                </label>\n                <input\n                  className=\"form-control\"\n                  value={data.pn_number}\n                  onChange={this.handlePnNumber.bind(this)}\n                  disabled={this.state.isSaving || this.state.isActive}\n                />\n              </div>\n            </div>\n            <div className=\"col\">\n              <div className=\"form-group\">\n                <label>\n                  CLIP Number\n                </label>\n                <input\n                  className=\"form-control\"\n                  value={data.data.clip_number}\n                  onChange={this.handleClipNumber.bind(this)}\n                  disabled={this.state.isSaving || this.state.isActive}\n                />\n              </div>\n            </div>\n            <div className=\"col\">\n              <div className=\"form-group\">\n                <label style={{ fontWeight: \"bold\" }}>\n                  <span style={{ color: \"red\" }}>\n                    {\"*\"}\n                  </span>\n                  <span>\n                    {\" Date Prepared\"}\n                  </span>\n                </label>\n                <input\n                  className=\"form-control\"\n                  type=\"date\"\n                  value={data.date_prepared}\n                  onChange={this.handleDatePrepared.bind(this)}\n                  disabled={this.state.isSaving || this.state.isActive}\n                />\n              </div>\n            </div>\n            <div className=\"col\">\n              <div className=\"form-group\">\n                <label>\n                  Date Released\n                </label>\n                <input\n                  className=\"form-control\"\n                  type=\"date\"\n                  value={data.date_released}\n                  onChange={this.handleDateReleased.bind(this)}\n                  disabled={this.state.isSaving || this.state.isActive}\n                />\n              </div>\n            </div>\n          </div>\n          <h5>\n            Loan Information\n          </h5>\n          <div className=\"card\">\n            <div className=\"card-body\">\n              <div className=\"row\">\n                <div className=\"col\">\n                  <div className=\"form-group\">\n                    <label style={{ fontWeight: \"bold\" }}>\n                      <span style={{ color: \"red\" }}>\n                        {\"*\"}\n                      </span>\n                      <span>\n                        {\" Halaga ng Hinihiram\"}\n                      </span>\n                    </label>\n                    <input\n                      className=\"form-control\"\n                      type=\"number\"\n                      value={data.principal}\n                      onChange={this.handlePrincipal.bind(this)}\n                      disabled={this.state.isSaving || this.state.isActive}\n                    />\n                  </div>\n                </div>\n                <div className=\"col\">\n                  <div className=\"form-group\">\n                    <label>\n                      Loan Product\n                    </label>\n                    <select\n                      className=\"form-control\"\n                      value={data.loan_product_id || \"-1\"}\n                      onChange={this.handleLoanProduct.bind(this)}\n                      disabled={this.state.isSaving || this.state.isActive}\n                    >\n                      {this.renderLoanProducts()}\n                    </select>\n                  </div>\n                </div>\n                <div className=\"col\">\n                  <div className=\"form-group\">\n                    <label>\n                      Loan Product Tag\n                    </label>\n                    <select\n                      className=\"form-control\"\n                      value={data.loan_product_tagging_id || \"-1\"}\n                      onChange={this.handleLoanProductTag.bind(this)}\n                      disabled={this.state.isSaving || this.state.isActive}\n                    >\n                      {this.renderLoanProductTagging()}\n                    </select>\n                  </div>\n                </div>\n                <div className=\"col\">\n                  <div className=\"form-group\">\n                    <label>\n                      Term\n                    </label>\n                    <select\n                      className=\"form-control\"\n                      value={data.num_installments}\n                      onChange={this.handleNumInstallments.bind(this)}\n                    >\n                      {this.renderNumInstallmentOptions()}\n                    </select>\n                  </div>\n                </div>\n                <div className=\"col\">\n                  <div className=\"form-group\">\n                    <label>\n                      Mode of Payment\n                    </label>\n                    <select\n                      className=\"form-control\"\n                      value={data.term}\n                      onChange={this.handleTerm.bind(this)}\n                    >\n                      <option value=\"weekly\">Weekly</option>\n                      <option value=\"monthly\">Monthly</option>\n                      <option value=\"semi-monthly\">Semi-monthly</option>\n                    </select>\n                  </div>\n                </div>\n              </div>\n              <br />\n              <div className='row'>\n                <div className='col'>\n                  <div className=\"form-group\">\n                    <label style={{ fontWeight: \"bold\" }}>\n                      <span style={{ color: \"red\" }}>\n                        {\"*\"}\n                      </span>\n                      <span>\n                        {\" Mobile Number\"}\n                      </span>\n                    </label>\n                    \n                    <br />\n                    <label style={{ color: \"grey\", fontWeight: \"bold\" }}>\n                      Example: +639xxxxxxxxx | 639xxxxxxxxx | 09xxxxxxxxx | 9xxxxxxxxx\n                    </label>\n                    <div style={{ display: \"flex\", flexDirection: \"row\", alignItems: 'center', gap: \"10px\" }}>\n                      <input\n                        style={{ width: \"150px\" }}\n                        className=\"form-control\"\n                        value={this.state.memberMobileNumber}\n                        maxLength={this.state.mobileNumberMaxLength}\n                        onChange={e=>{this.handleInputMobileNumberValidator(e)}}\n                      />\n                      <label style={{ color: this.state.isMobileNumberValid ? ( !this.state.isMobileNumberExist ? \"green\" : \"red\") : \"red\", fontWeight: \"bold\" }}>\n                        {this.state.isMobileNumberValid ? (!this.state.isMobileNumberExist ? \"Valid Mobile Number\" : \"This Mobile Number Is Already Exist\") : \"Invalid Mobile Number\"}\n                      </label>\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n          </div>\n          <hr/>\n          <h5>\n            Co-maker Information\n          </h5>\n          <div className=\"card\">\n            <div className=\"card-body\">\n              <div className=\"row\">\n              {/* First Co-maker */}\n              <div className=\"col-md-4 col-xs-12\">\n                <div className=\"form-group\">\n                  <label>First Co-maker</label>\n                  <Select\n                    value={this.state.firstCoMaker}\n                    options={[{ value: \"\", label: \"-- SELECT --\"}, ...this.state.coMakers]}\n                    onChange={(opt) => this.handleFirstCoMaker(opt?.value ? opt : null)}\n                    placeholder=\"-- SELECT --\"\n                    isDisabled={isBusy}\n                  />\n                </div>\n              </div>\n\n              {/* Second Co-maker */}\n              <div className=\"col-md-4 col-xs-12\">\n                <div className=\"form-group\">\n                  <label>Second Co-maker</label>\n                  <Select\n                    value={this.state.secondCoMaker}\n                    options={[{ value: \"\", label: \"-- SELECT --\"}, ...this.state.coMakers]}\n                    onChange={(opt) => this.handleSecondCoMaker(opt?.value ? opt : null)}\n                    placeholder=\"-- SELECT --\"\n                    isDisabled={isBusy || disableSecondDueToPB}\n                  />\n                </div>\n              </div>\n\n              {/* Third Co-maker */}\n              <div className=\"col-md-4 col-xs-12\">\n                <div className=\"form-group\">\n                  <label>Third Co-maker</label>\n                  <Select\n                    value={this.state.thirdCoMaker}\n                    options={[{ value: \"\", label: \"-- SELECT --\"}, ...this.state.coMakers]}\n                    onChange={(opt) => this.handleThirdCoMaker(opt?.value ? opt : null)}\n                    placeholder=\"-- SELECT --\"\n                    isDisabled={isBusy || disableThirdDueToPB}\n                  />\n                </div>\n              </div>\n              </div>\n              {this.state.coMakersError && (\n                <div className=\"alert alert-danger py-2 my-2\" role=\"alert\">\n                  {this.state.coMakersError}\n                </div>\n              )}\n            </div>\n          </div>\n          <br></br>\n          <h5>\n            Financial Information\n          </h5>\n          <div className=\"card\">\n            <div className=\"card-body\">\n              <ApplicationFormFinancialInformation\n                data={this.state.data}\n                updateData={this.updateData.bind(this)}\n                disabled={this.state.isSaving || this.state.isActive}\n                banks={this.props.banks}\n              />\n            </div>\n          </div>\n          <hr/>\n          <h5>\n            CLIP Beneficiary\n          </h5>\n          <div className=\"card\">\n            <div className=\"card-body\">\n              <ApplicationFormCLIPBeneficiary\n                data={this.state.data}\n                updateData={this.updateData.bind(this)}\n                disabled={this.state.isSaving || this.state.isActive}\n              />\n            </div>\n          </div>\n          {/* <h5>\n            Project Type\n          </h5>\n          <div className=\"card\">\n            <div className=\"card-body\">\n              <ApplicationFormProjectType\n                projectTypeCategories={this.state.projectTypeCategories}\n                updateData={this.updateData.bind(this)}\n                currentProjectTypeCategoryId={this.state.currentProjectTypeCategoryId}\n                handleProjectTypeCategoryChanged={this.handleProjectTypeCategoryChanged.bind(this)}\n                disabled={this.state.isSaving || this.state.isActive}\n                data={this.state.data}\n              />\n            </div>\n//<<<<<<< active_loans_accounting_etry\n          </div>\n          {/* Active Loan */}\n          <h5>\n            Active Loan\n          </h5>\n          <div className=\"card\">\n            <div className=\"card-body\">\n            <ApplicationFormActiveLoans\n                memberId={this.props.memberId}\n                activeLoans={this.state.activeLoans}\n                 loanProducts={this.state.loanProducts} \n                  onPaidLoansExtracted={this.handlePaidLoans}\n                  paidLoans={this.state.paidLoansFromChild}\n                  principal={this.state.data.principal}\n              />\n            </div>\n          </div>\n          <hr/>\n          <h5>\n            Bank Transfer\n          </h5>\n          <div className=\"card\">\n            <div className=\"card-body\">\n              <ApplicationTransferOption\n                optionTransfer={this.state.optionTransfer}\n                updateData={this.updateData.bind(this)}\n                currentBankTransferId={this.state.currentBankTransferId}\n                handleTransferOptionChanged={this.handleTransferOptionChanged.bind(this)}\n                disabled={this.state.isSaving || this.state.isActive}\n                data={this.state.data}\n              />\n            </div>\n          </div>\n          <h5>\n            Other Parameters\n          </h5>\n          <div className=\"card\">\n            <div className=\"card-body\">\n              <input \n                type=\"checkbox\" \n                checked={businessPermitAvailable}\n                onChange={this.handleBusinessPermitAvailableChanged.bind(this)}\n              />\n              <label>\n                Business Permit Available\n              </label>\n            </div>\n          </div>\n          <div className=\"card\">\n            <div className=\"card-body\">\n              <input \n                type=\"checkbox\" \n                checked={advanceInsuranceAvailable}\n                onChange={this.handleAdvanceInsuranceChanged.bind(this)}\n              />\n              <label>\n                Off Insurance\n              </label>\n            </div>\n          </div>\n          <div className=\"card\">\n            <div className=\"card-body\">\n              <input \n                type=\"checkbox\" \n                checked={shareCapitalAvailable}\n                onChange={this.handleShareCapitalChanged.bind(this)}\n              />\n              <label>\n                Off Sharecapital\n              </label>\n            </div>\n          </div>\n          \n          <div className=\"card\">\n            <div className=\"card-body\">\n              <input \n                type=\"checkbox\" \n                checked={serviceFeeAvailable}\n                onChange={this.handleServiceFeeChanged.bind(this)}\n              />\n              <label>\n                Off Service Fee\n              </label>\n            </div>\n          </div>\n          \n          <div className=\"card\">\n            <div className=\"card-body\">\n              <input \n                type=\"checkbox\" \n                checked={smsFeeAvailable}\n                onChange={this.handleSMSFeeChanged.bind(this)}\n              />\n              <label>\n                Off SMS Fee\n              </label>\n            </div>\n          </div>\n\n\n\n\n          <hr/>\n          {this.renderErrorDisplay()}\n          <div className=\"row\">\n            <div className=\"col\">\n              <div className=\"btn-group\">\n                <button\n                  className=\"btn btn-primary\"\n                  onClick={this.handleSave.bind(this)}\n                  disabled={(this.state.isSaving || this.state.isActive) || !this.state.isMobileNumberValid || this.state.isMobileNumberExist || !!this.state.coMakersError}\n                >\n                  <span className=\"bi bi-check\"/>\n                  Save\n                </button>\n                <button\n                  className=\"btn btn-danger\"\n                  onClick={this.handleCancel.bind(this)}\n                  disabled={this.state.isSaving || this.state.isActive}\n                >\n                  <span className=\"bi bi-x\"/>\n                  Cancel\n                </button>\n              </div>\n            </div>\n          </div>\n        </div>\n      );\n    }\n  }\n}\n", "import React from \"react\";\n\nexport default class ApplicationFormFinancialInformation extends React.Component {\n  constructor(props) {\n    super(props);\n    \n    this.state  = {\n    }\n  }\n\n  handleBankCheckNumber(event) {\n    var data  = this.props.data;\n\n    data.data.voucher.bank_check_number = event.target.value;\n\n    this.props.updateData(data);\n  }\n\n  handleBank(event) {\n    var data  = this.props.data\n\n    data.data.voucher.bank = event.target.value;\n\n    this.props.updateData(data);\n  }\n\n  // Voucher check number\n  handleCheckNumber(event) {\n    var data  = this.props.data;\n\n    data.data.voucher.check_number  = event.target.value;\n\n    this.props.updateData(data);\n  }\n\n  handleDateOfCheck(event) {\n    var data  = this.props.data;\n\n    data.data.voucher.date_of_check = event.target.value;\n\n    this.props.updateData(data);\n  }\n\n  handleDateRequested(event) {\n    var data  = this.props.data;\n\n    data.data.voucher.date_requested = event.target.value;\n\n    this.props.updateData(data);\n  }\n\n  handleBankTransactionReferenceNumber(event) {\n    var data  = this.props.data;\n\n    data.data.voucher.bank_transaction_reference_number = event.target.value;\n\n    this.props.updateData(data);\n  }\n\n  renderBanks() {\n    var banks       = this.props.banks;\n    var bankOptions = [];\n\n    for(var i = 0; i < banks.length; i++) {\n      bankOptions.push(\n        <option key={\"bank-\" + i} value={banks[i]}>\n          {banks[i]}\n        </option>\n      );\n    }\n\n    return  (\n      bankOptions\n    );\n  }\n\n  render() {\n    return  (\n      <div>\n        <div className=\"row\">\n          <div className=\"col\">\n            <div className=\"form-group\">\n              <label>\n                Check Voucher Number\n              </label>\n              <input\n                className=\"form-control\"\n                value={this.props.data.data.voucher.check_number}\n                onChange={this.handleCheckNumber.bind(this)}\n                disabled={this.props.disabled}\n              />\n            </div>\n          </div>\n          <div className=\"col\">\n            <div className=\"form-group\">\n              <label>\n                Date Requested\n              </label>\n              <input\n                className=\"form-control\"\n                type=\"date\"\n                value={this.props.data.data.voucher.date_requested}\n                onChange={this.handleDateRequested.bind(this)}\n                disabled={this.props.disabled}\n              />\n            </div>\n          </div>\n          <div className=\"col\">\n            <div className=\"form-group\">\n              <label>\n                Bank Check Number\n              </label>\n              <input\n                className=\"form-control\"\n                value={this.props.data.data.voucher.bank_check_number}\n                onChange={this.handleBankCheckNumber.bind(this)}\n                disabled={this.props.disabled}\n              />\n            </div>\n          </div>\n          <div className=\"col\">\n            <div className=\"form-group\">\n              <label>\n                Date of Check\n              </label>\n              <input\n                className=\"form-control\"\n                type=\"date\"\n                value={this.props.data.data.voucher.date_of_check}\n                onChange={this.handleDateOfCheck.bind(this)}\n                disabled={this.props.disabled}\n              />\n            </div>\n          </div>\n          \n        </div>\n      </div>\n    );\n  }\n}\n", "import React from \"react\";\n\nexport default class ApplicationFormCLIPBeneficiary extends React.Component {\n  constructor(props) {\n    super(props);\n    \n    this.state  = {\n    }\n  }\n\n  handleFirstName(event) {\n    var data  = this.props.data;\n\n    data.data.clip_beneficiary.first_name = event.target.value;\n\n    this.props.updateData(data);\n  }\n\n  handleMiddleName(event) {\n    var data  = this.props.data;\n\n    data.data.clip_beneficiary.middle_name = event.target.value;\n\n    this.props.updateData(data);\n  }\n\n  handleLastName(event) {\n    var data  = this.props.data;\n\n    data.data.clip_beneficiary.last_name = event.target.value;\n\n    this.props.updateData(data);\n  }\n\n  handleDateOfBirth(event) {\n    var data  = this.props.data;\n\n    data.data.clip_beneficiary.date_of_birth = event.target.value;\n\n    this.props.updateData(data);\n  }\n\n  handleRelationship(event) {\n    var data  = this.props.data;\n\n    data.data.clip_beneficiary.relationship = event.target.value;\n\n    this.props.updateData(data);\n  }\n\n  render() {\n    var clip_beneficiary  = this.props.data.data.clip_beneficiary;\n\n    return  (\n      <div>\n        <div className=\"row\">\n          <div className=\"col\">\n            <div className=\"form-group\">\n              <label>\n                First Name\n              </label>\n              <input\n                className=\"form-control\"\n                value={clip_beneficiary.first_name}\n                onChange={this.handleFirstName.bind(this)}\n                disabled={this.props.disabled}\n              />\n            </div>\n          </div>\n          <div className=\"col\">\n            <div className=\"form-group\">\n              <label>\n                Middle Name\n              </label>\n              <input\n                className=\"form-control\"\n                value={clip_beneficiary.middle_name}\n                onChange={this.handleMiddleName.bind(this)}\n                disabled={this.props.disabled}\n              />\n            </div>\n          </div>\n          <div className=\"col\">\n            <div className=\"form-group\">\n              <label>\n                Last Name\n              </label>\n              <input\n                className=\"form-control\"\n                value={clip_beneficiary.last_name}\n                onChange={this.handleLastName.bind(this)}\n                disabled={this.props.disabled}\n              />\n            </div>\n          </div>\n        </div>\n        <div className=\"row\">\n          <div className=\"col\">\n            <div className=\"form-group\">\n              <label>\n                Date of Birth\n              </label>\n              <input\n                className=\"form-control\"\n                type=\"date\"\n                value={clip_beneficiary.date_of_birth}\n                onChange={this.handleDateOfBirth.bind(this)}\n                disabled={this.props.disabled}\n              />\n            </div>\n          </div>\n          <div className=\"col\">\n            <div className=\"form-group\">\n              <label>\n                Relationship\n              </label>\n              <select\n                className=\"form-control\"\n                value={clip_beneficiary.relationship}\n                onChange={this.handleRelationship.bind(this)}\n                disabled={this.props.disabled}\n              >\n                <option value=\"\">\n                  -- SELECT --\n                </option>\n                <option value=\"ANAK\">\n                  ANAK\n                </option>\n                <option value=\"ASAWA\">\n                  ASAWA\n                </option>\n                <option value=\"MAGULANG\">\n                  MAGULANG\n                </option>\n                <option value=\"KAPATID\">\n                  KAPATID\n                </option>\n                <option value=\"LIVE IN / KINAKASAMA\">\n                  LIVE IN / KINAKASAMA\n                </option>\n                <option value=\"APO\">\n                  APO\n                </option>\n                <option value=\"TIYUHIN\">\n                  TIYUHIN\n                </option>\n                <option value=\"PAMANGKIN\">\n                  PAMANGKIN\n                </option>\n              </select>\n            </div>\n          </div>\n        </div>\n      </div>\n    );\n  }\n}\n", "import React from \"react\";\n\nexport default class ApplicationFormProjectType extends React.Component {\n  constructor(props) {\n    super(props);\n    \n    this.state  = {\n    }\n  }\n\n  handleProjectTypeChanged(event) {\n    var data  = this.props.data;\n\n    data.project_type_id  = event.target.value;\n\n    this.props.updateData(data);\n  }\n\n  handleProjectTypeCategoryChange(event) {\n\n\n  }\n\n  render() {\n    var projectTypeCategoryOptions  = [];\n\n    projectTypeCategoryOptions.push(\n      <option key={\"project-type-category-select\"}>\n        -- SELECT --\n      </option>\n    );\n\n    var projectTypeOptions  = [];\n    projectTypeOptions.push(\n      <option key={\"project-type-select\"}>\n        -- SELECT --\n      </option>\n    );\n\n    for(var i = 0; i < this.props.projectTypeCategories.length; i++) {\n      if(this.props.projectTypeCategories[i].id == this.props.currentProjectTypeCategoryId) {\n        for(var j = 0; j < this.props.projectTypeCategories[i].project_types.length; j++) {\n          projectTypeOptions.push(\n            <option key={\"project-type-option-\" + this.props.projectTypeCategories[i].project_types[j].id} value={this.props.projectTypeCategories[i].project_types[j].id}>\n              {this.props.projectTypeCategories[i].project_types[j].name}\n            </option>\n          );\n        }\n      }\n      projectTypeCategoryOptions.push(\n        <option\n          key={\"project-type-category-option-\" + i}\n          value={this.props.projectTypeCategories[i].id}\n        >\n          {this.props.projectTypeCategories[i].name}\n        </option>\n      );\n    }\n\n    return  (\n      <div>\n        <div className=\"row\">\n          <div className=\"col\">\n            <div className=\"form-group\">\n              <label>\n                Project Type Category\n              </label>\n              <select\n                onChange={this.props.handleProjectTypeCategoryChanged.bind(this)}\n                className=\"form-control\"\n                value={this.props.currentProjectTypeCategoryId}\n                disabled={this.props.disabled}\n              >\n                {projectTypeCategoryOptions}\n              </select>\n            </div>\n          </div>\n          <div className=\"col\">\n            <div className=\"form-group\">\n              <label>\n                Project Type\n              </label>\n              <select\n                className=\"form-control\"\n                disabled={this.props.disabled}\n                value={this.props.data.project_type_id}\n                onChange={this.handleProjectTypeChanged.bind(this)}\n              >\n                {projectTypeOptions}\n              </select>\n            </div>\n          </div>\n        </div>\n      </div>\n    );\n  }\n}\n", "import React from \"react\";\n\nexport default class ApplicationTransferOption extends React.Component{\n\tconstructor(props){\n\t\tsuper(props);\n\n\t\tthis.state = {\n\t\t\tpaymentType: this.props.data.paymentType || \"\",\n      \t\tsubType: this.props.data.subType|| \"\",\n\t\t}\n\t}\n\n\tstatic getDerivedStateFromProps(nextProps, prevState) {\n\t\tif (\n\t\t  nextProps.data.paymentType !== prevState.paymentType ||\n\t\t  nextProps.data.subType !== prevState.subType\n\t\t) {\n\t\t  return {\n\t\t\tpaymentType: nextProps.data.paymentType || \"\",\n\t\t\tsubType: nextProps.data.subType || \"\",\n\t\t  };\n\t\t}\n\t\treturn null;\n\t  }\n\t\n\thandleBankTransferOptionChanged(event) {\n\t\tvar data = this.props.data;\n\n\t\tdata.bank_id = event.target.value;\n\n\t\tthis.props.updateData(data);\n\t}\n\n\t // Handle Payment Type change\n\t handlePaymentTypeChanged(event) {\n\t\tconst selectedPaymentType = event.target.value;\n\t\tconsole.log(\"Payment Type selected:\", selectedPaymentType);\n\t\t\n\t\tthis.setState({ paymentType: selectedPaymentType });\n\t\tthis.props.updateData({\n\t\t\t...this.props.data,\n\t\t\tpaymentType: selectedPaymentType, \n\t\t});\n\t}\n\t\n\t  // Handle Sub Type change\n\t  handleSubTypeChanged(event) {\n\t\tconst selectedSubType = event.target.value;\n\t\tconsole.log(\"Sub Type selected:\", selectedSubType);\n\t\t\n\t\tthis.setState({ subType: selectedSubType });\n\t\tthis.props.updateData({\n\t\t\t...this.props.data,\n\t\t\tsubType: selectedSubType,\n\t\t});\n\t  }\n\n\trender() {\n\t\tvar bankTransferOptions = [];\n\t\tvar { paymentType, subType } = this.state;\n\n\n\t\tbankTransferOptions.push(\n\t\t\t<option key={\"transfer-select\"}>\n\t\t\t\t-- SELECT --\n\t\t\t</option>\n\t\t);\n\n\t\tvar TransferOptions = [];\n\t\tTransferOptions.push(\n\t\t\t<option key={\"bank-select\"}>\n\t\t\t\t-- SELECT --\n\t\t\t</option>\n\t\t);\n\n\t\tvar PaymentType = [\n\t\t\t<option key={\"payment-select\"}>-- SELECT --</option>,\n\t\t\t<option key={\"USSC\"} value=\"USSC\">\n\t\t\t  USSC\n\t\t\t</option>,\n\t\t];\n\t  \n\t\tvar SubType = [\n\t\t\t<option key={\"sub-select\"}>-- SELECT --</option>,\n\t\t\t<option key={\"E-WALLET\"} value=\"E-WALLET\">\n\t\t\t  E-Wallet\n\t\t\t</option>,\n\t\t];\n\n\t\tfor(var i = 0; i < this.props.optionTransfer.length; i++) {\n\t\t\tif(this.props.optionTransfer[i].id == this.props.currentBankTransferId) {\n\t\t\t\tfor(var j = 0; j < this.props.optionTransfer[i].bank_transfers.length; j++) {\n\t\t\t\t\tTransferOptions.push(\n\t\t\t\t\t\t<option key={\"bank-option-\" + this.props.optionTransfer[i].bank_transfers[j].id} value={this.props.optionTransfer[i].bank_transfers[j].id}>\n\t\t\t\t\t\t{this.props.optionTransfer[i].bank_transfers[j].name}\n\t\t\t\t\t</option>\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t\tbankTransferOptions.push(\n\t\t\t\t<option\n\t\t\t\t\tkey={\"transfer-option-\" + i}\n\t\t\t\t\tvalue={this.props.optionTransfer[i].id}\n\t\t\t\t>\n\t\t\t\t\t{this.props.optionTransfer[i].name}\n\t\t\t\t</option>\n\t\t\t);\n\t\t}\n\t\treturn (\n\t\t\t<div>\n\t\t\t\t<div className=\"row\">\n\t\t\t\t\t<div className=\"col\">\n\t\t\t\t\t\t<div className=\"form-group\">\n\t\t\t\t\t\t\t<label>\n\t\t\t\t\t\t\t\tTransfer Option\n\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t<select\n\t\t\t\t\t\t\t\tonChange={this.props.handleTransferOptionChanged.bind(this)}\n\t\t\t\t\t\t\t\tclassName=\"form-control\"\n\t\t\t\t\t\t\t\tvalue={this.props.currentBankTransferId}\n\t\t\t\t\t\t\t\tdisabled={this.props.disabled}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{bankTransferOptions}\n\t\t\t\t\t\t\t</select>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className=\"col\">\n\t\t\t\t\t\t<div className=\"form-group\">\n\t\t\t\t\t\t<label>\n\t\t\t\t\t\t\tBank & Ewallet\n\t\t\t\t\t\t</label>\n\t\t\t\t\t\t<select\n\t\t\t\t\t\t\tclassName=\"form-control\"\n\t\t\t\t\t\t\tdisabled={this.props.disabled}\n\t\t\t\t\t\t\tvalue={this.props.data.bank_id}\n\t\t\t\t\t\t\tonChange={this.handleBankTransferOptionChanged.bind(this)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{TransferOptions}\n\t\t\t\t\t\t</select>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\t\n\t\t\t\t<div className=\"row\">\n\t\t\t\t\t<div className=\"col\">\n\t\t\t\t\t\t<div className=\"form-group\">\n\t\t\t\t\t\t\t<label>Payment Type</label>\n\t\t\t\t\t\t\t<select\n\t\t\t\t\t\t\t\tclassName=\"form-control\"\n\t\t\t\t\t\t\t\tvalue={paymentType}\n\t\t\t\t\t\t\t\tonChange={this.handlePaymentTypeChanged.bind(this)} \n\t\t\t\t\t\t\t\tdisabled={this.props.disabled}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{PaymentType}\n\t\t\t\t\t\t\t</select>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className=\"col\">\n\t\t\t\t\t\t<div className=\"form-group\">\n\t\t\t\t\t\t\t<label>Sub Type</label>\n\t\t\t\t\t\t\t<select\n\t\t\t\t\t\t\t\tclassName=\"form-control\"\n\t\t\t\t\t\t\t\tvalue={subType}\n\t\t\t\t\t\t\t\tonChange={this.handleSubTypeChanged.bind(this)} \n\t\t\t\t\t\t\t\tdisabled={this.props.disabled}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{SubType}\n\t\t\t\t\t\t\t</select>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n}", "\nimport React from \"react\";\nimport $ from 'jquery';\nimport Modal from 'react-modal';\nimport { customEntryStyle } from \"../utils/consts\";\n\nexport default class ApplicationFormActiveLoans extends React.Component {\n  constructor(props) {\n    super(props);\n    this.state = {\n      selectedLoanId: \"\",\n      addedLoans: [],\n      showTable: false,\n      activeLoansCount: 0,\n      activeLoans: [],\n      showEditModal: false,\n      loanEditAmount: 0,\n      loanEditIndex: null,\n      loanEditId: null,\n    };\n\n    this.handleActiveLoanChanged = this.handleActiveLoanChanged.bind(this);\n    this.handleAddClick = this.handleAddClick.bind(this);\n    this.fetchActiveLoans = this.fetchActiveLoans.bind(this);\n  }\n\n  // componentDidMount() {\n  //   if (this.props.paidLoans && this.props.paidLoans.length > 0) {\n  //     this.setState(\n  //       {\n  //         addedLoans: this.props.paidLoans,\n  //         showTable: true\n  //       },\n  //       () => {\n  //         this.handleActivePaidLoan();\n  //         console.log(\"Paid Loans on Mount (Child):\", this.state.addedLoans);\n  //       }\n  //     );\n  //   }\n  //   this.fetchActiveLoans();\n  // }\ncomponentDidMount() {\n  if (this.props.paidLoans && this.props.paidLoans.length > 0) {\n    // Map the paidLoans to ensure amountPaid defaults to principal if not set\n    const mappedLoans = this.props.paidLoans.map(loan => {\n      const principal = Number(loan.principal_balance || 0);\n      return {\n        ...loan,\n        amountPaid: loan.amountPaid != null ? Number(loan.amountPaid) : principal\n      };\n    });\n\n    this.setState({\n      addedLoans: mappedLoans,\n      showTable: true\n    }, () => {\n      this.handleActivePaidLoan();\n      console.log(\"Paid Loans on Mount (Child):\", this.state.addedLoans);\n    });\n  }\n\n  this.fetchActiveLoans();\n}\n\n  componentDidUpdate(prevProps, prevState) {\n    if (prevState.addedLoans !== this.state.addedLoans) {\n      if (this.props.onPaidLoansExtracted) {\n        this.props.onPaidLoansExtracted(this.handleActivePaidLoan());\n      }\n    }\n  }\n\n  fetchActiveLoans() {\n    const context = this;\n    $.ajax({\n      url: \"/loans/active_loans\",\n      data: { member_id: this.props.memberId },\n      method: \"GET\",\n      success: function (response) {\n        if (response.message === \"ok\") {\n          context.setState({\n            activeLoansCount: response.count,\n            activeLoans: response.loans\n          });\n        } else {\n          console.warn(response.message);\n        }\n      }\n    });\n  }\n\n  handleAddClick() {\n    const { selectedLoanId, addedLoans, activeLoans } = this.state;\n\n    const selectedLoan = activeLoans.find(loan => loan.loan_product_id === selectedLoanId);\n    if (!selectedLoan) {\n      alert(\"Loan not found.\");\n      return;\n    }\n\n    if (addedLoans.some(loan => loan.loan_product_id === selectedLoan.loan_product_id)) {\n      alert(\"This loan has already been added.\");\n      return;\n    }\n\n    const updatedLoans = [...addedLoans, selectedLoan];\n\n    this.setState({\n      addedLoans: updatedLoans,\n      selectedLoanId: \"\",\n      showTable: true,\n    }, () => {\n      this.handleActivePaidLoan();\n    });\n  }\n\n  handleActiveLoanChanged(event) {\n    this.setState({ selectedLoanId: event.target.value });\n  }\n\n  // handleActivePaidLoan() {\n  //   const { addedLoans } = this.state;\n\n  //   const paidLoans = addedLoans.map((loan) => {\n  //     const principal = Number(loan.principal_balance || 0);\n  //     const interest = Number(loan.interest_balance || 0);\n  //     const totalBalance = principal + interest;\n\n  //     // Default totalPaid is principal if amountPaid not set\n  //     const totalPaid = loan.amountPaid != null ? Number(loan.amountPaid) : principal;\n\n  //     return {\n  //       ...loan,\n  //       total_balance: totalBalance,\n  //       total_paid: totalPaid,\n  //       amountPaid: totalPaid\n  //     };\n  //   });\n\n  //   if (this.props.onPaidLoansExtracted) {\n  //     this.props.onPaidLoansExtracted(paidLoans);\n  //   }\n\n  //   return paidLoans;\n  // }\nhandleActivePaidLoan() {\n  const { addedLoans } = this.state;\n\n  const paidLoans = addedLoans.map((loan) => {\n    const principal = Number(loan.principal_balance || 0);\n    const interest = Number(loan.interest_balance || 0);\n    const totalBalance = principal + interest;\n\n    const totalPaid = loan.amountPaid != null ? Number(loan.amountPaid) : principal;\n\n    return {\n      ...loan,\n      total_balance: totalBalance,\n      total_paid: totalPaid,\n      amountPaid: totalPaid\n    };\n  });\n\n  if (this.props.onPaidLoansExtracted) {\n    this.props.onPaidLoansExtracted(paidLoans);\n  }\n\n  return paidLoans;\n}\n\n  TotalPaid() {\n    const { addedLoans } = this.state;\n\n    const totalPrincipal = addedLoans.reduce((sum, loan) => sum + Number(loan.principal_balance || 0), 0);\n    const totalInterest = addedLoans.reduce((sum, loan) => sum + Number(loan.interest_balance || 0), 0);\n    const totalBalance = totalPrincipal + totalInterest;\n\n    const totalAmountPaid = addedLoans.reduce((sum, loan) => {\n      return sum + (loan.amountPaid != null ? Number(loan.amountPaid) : Number(loan.principal_balance || 0));\n    }, 0);\n\n    return {\n      totalPrincipal,\n      totalInterest,\n      totalBalance,\n      totalAmountPaid\n    };\n  }\n\n  handleEditClick(loan, index) {\n    this.setState({\n      showEditModal: true,\n      loanEditIndex: index,\n      loanEditId: loan.loan_product_id,\n      loanEditAmount: loan.amountPaid != null ? loan.amountPaid : Number(loan.principal_balance || 0),\n    });\n  }\n\n  handleCancelEdit() {\n    if (window.confirm(\"Are you sure you want to cancel?\")) {\n      this.setState({\n        showEditModal: false,\n      });\n    }\n  }\n\n  handleSaveEdit() {\n    const { addedLoans, loanEditIndex, loanEditAmount } = this.state;\n    const updatedLoans = [...addedLoans];\n    updatedLoans[loanEditIndex].amountPaid = Number(loanEditAmount);\n\n    this.setState({\n      addedLoans: updatedLoans,\n      showEditModal: false,\n      loanEditIndex: null,\n      loanEditId: null,\n      loanEditAmount: 0,\n    }, () => {\n      alert(\"Edit saved successfully!\");\n      this.handleActivePaidLoan();\n    });\n  }\n\n  renderEditBalance() {\n    return (\n      <div className=\"container-fluid\">\n        <h3>Edit total paid</h3>\n        <hr />\n        <div className=\"form-group\">\n          <label>Amount</label>\n          <input\n            type=\"number\"\n            className=\"form-control\"\n            value={this.state.loanEditAmount}\n            onChange={(e) => this.setState({ loanEditAmount: e.target.value })}\n          />\n          <div className=\"d-flex justify-content-end gap-3 mt-3\">\n            <button\n              className=\"btn btn-success\"\n              onClick={() => this.handleSaveEdit()}\n            >\n              <span className=\"bi bi-check me-2\" />\n              Save\n            </button>\n            <button\n              className=\"btn btn-danger\"\n              onClick={() => this.handleCancelEdit()}\n            >\n              <span className=\"bi bi-x me-2\" />\n              Cancel\n            </button>\n          </div>\n        </div>\n      </div>\n    );\n  }\n\n  render() {\n    const { addedLoans, showTable, activeLoans, selectedLoanId } = this.state;\n    const { totalPrincipal, totalInterest, totalBalance, totalAmountPaid } = this.TotalPaid();\n\n    const formatNumber = (value) =>\n      Number(value)\n        .toFixed(2)\n        .replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\n\n    const ActiveLoansCategoryOptions = [\n      <option key=\"default\" value=\"\">\n        -- SELECT --\n      </option>,\n      ...activeLoans\n        .map(loan => (\n          <option key={loan.loan_product_id} value={loan.loan_product_id}>\n            {loan.loan_product?.name || loan.loan_product_name || loan.loan_product_id}\n          </option>\n        )),\n    ];\n\n    return (\n      <div>\n        <Modal\n          isOpen={this.state.showEditModal}\n          style={customEntryStyle}\n        >\n          {this.renderEditBalance()}\n        </Modal>\n\n        <div className=\"row\">\n          <div className=\"col\">\n            <div className=\"form-group\">\n              <label>Loan</label>\n              <div className=\"d-flex\">\n                <select\n                  onChange={this.handleActiveLoanChanged}\n                  className=\"form-control me-3\"\n                  disabled={this.props.disabled}\n                  value={selectedLoanId}\n                >\n                  {ActiveLoansCategoryOptions}\n                </select>\n                <button\n                  type=\"button\"\n                  onClick={this.handleAddClick}\n                  className=\"btn btn-success\"\n                >\n                  Add\n                </button>\n              </div>\n            </div>\n          </div>\n        </div>\n\n        {showTable && addedLoans.length > 0 && (\n          <table className=\"table table-bordered mt-3\">\n            <thead className=\"text-center\">\n              <tr>\n                <th>Loan Name</th>\n                <th>Principal Balance</th>\n                <th>Interest Balance</th>\n                <th>Total Balance</th>\n                <th>Total Paid</th>\n                <th>Action</th>\n              </tr>\n            </thead>\n            <tbody>\n              {addedLoans.map((loan, index) => {\n                const principal = Number(loan.principal_balance || 0);\n                const interest = Number(loan.interest_balance || 0);\n                const totalBalance = principal + interest;\n                const totalPaid = loan.amountPaid != null ? loan.amountPaid : principal;\n\n                return (\n                  <tr key={loan.loan_product_id}>\n                    <td>{loan.loan_product?.name || loan.loan_product_name || loan.loan_product_id}</td>\n                    <td className=\"text-end\">{formatNumber(principal)}</td>\n                    <td className=\"text-end\">{formatNumber(interest)}</td>\n                    <td className=\"text-end\">{formatNumber(totalBalance)}</td>\n                    <td className=\"text-end\">{formatNumber(totalPaid)}</td>\n                    <td className=\"text-center\">\n                      <button\n                        className=\"btn btn-sm btn-primary\"\n                        onClick={() => this.handleEditClick(loan, index)}\n                      >\n                        <span className=\"bi bi-pencil-fill me-2\" />\n                        Edit\n                      </button>\n                    </td>\n                  </tr>\n                );\n              })}\n            </tbody>\n            <tfoot>\n              <tr className=\"fw-bold\">\n                <td>Total</td>\n                <td className=\"text-end\">{formatNumber(totalPrincipal)}</td>\n                <td className=\"text-end\">{formatNumber(totalInterest)}</td>\n                <td className=\"text-end\">{formatNumber(totalBalance)}</td>\n                <td className=\"text-end\">{formatNumber(totalAmountPaid)}</td>\n                <td></td>\n              </tr>\n            </tfoot>\n          </table>\n        )}\n      </div>\n    );\n  }\n}\n", "export const customStyles = {\n  content : {\n    top                   : '50%',\n    left                  : '50%',\n    right                 : 'auto',\n    bottom                : 'auto',\n    marginRight           : '-50%',\n    transform             : 'translate(-50%, -50%)'\n  }\n};\n\nexport const customEntryStyle = {\n  content: {\n    top: '50%',\n    left: '50%',\n    transform: 'translate(-50%, -50%)',\n    padding: '20px',\n    width: '350px',\n    marginBottom :'180px'\n  }\n};\n\n\n\n\nexport const months = [\n  { value: 1, label: \"January\" },\n  { value: 2, label: \"February\" },\n  { value: 3, label: \"March\" },\n  { value: 4, label: \"April\" },\n  { value: 5, label: \"May\" },\n  { value: 6, label: \"June\" },\n  { value: 7, label: \"July\" },\n  { value: 8, label: \"August\" },\n  { value: 9, label: \"September\" },\n  { value: 10, label: \"October\" },\n  { value: 11, label: \"November\" },\n  { value: 12, label: \"December\" },\n]\n\nexport const getYears = (n = 3) => {\n  const years = [];\n  const currentYear = new Date().getFullYear();\n\n  for(var i = currentYear - n; i <= currentYear; i++) {\n    years.push(i);\n  }\n\n  return years;\n}\n", "import React from 'react';\nimport $ from 'jquery';\nimport moment from 'moment';\nimport Select from 'react-select';\n\nimport SkCubeLoading from '../SkCubeLoading';\nimport ErrorDisplay from '../ErrorDisplay';\n\nimport AccountingEntryPreview from '../accounting/AccountingEntryPreview';\nimport AccountingEntryPreviewForFullPayment from'../accounting/AccountingEntryPreviewForFullPayment';\n\nexport default class AccountingEntryComponent extends React.Component {\n  constructor(props) {\n    super(props);\n\n    this.state  = {\n      isLoading: true,\n      data: false,\n      errors: false\n    };\n  }\n\n  componentDidMount() {\n    var context = this;\n\n    var data  = {\n      id: this.props.id,\n      member_id: this.props.memberId\n    }\n\n    $.ajax({\n      url: \"/api/v1/loans/fetch\",\n      data: data,\n      method: 'GET',\n      success: function(response) {\n        console.log(response);\n        context.setState({\n          isLoading: false,\n          data: response.loan,\n          accountingCodes: response.accounting_codes\n        });\n      },\n      error: function(response) {\n        console.log(response);\n        alert(\"Something went wrong when fetching loan\");\n      }\n    });\n  }\n\n  handleAccountingCodeClick(entry) {\n    console.log(\"Clicked Entry:\", entry);\n    alert(`You clicked on ${entry.accounting_code_name} with amount ${entry.amount}`);\n  }  \n\n  renderErrorDisplay() {\n    if(this.state.errors) {\n      return  (\n        <ErrorDisplay\n          errors={this.state.errors}\n        />\n      );\n    }\n  }\n\n  handleRemoveClicked() {\n  }\n\n  render() {\n    if (this.state.isLoading) {\n      return (\n        <SkCubeLoading />\n      );\n    } else {\n      console.log(\"this.state.data:\");\n      console.log(this.state.data);\n      var accounting_entry_data = this.state.data?.data?.accounting_entry || null;\n      var for_full_payment_entries = this.state.data?.data?.for_full_payment_entries || null;\n      var for_full_payment = this.state.data?.data?.for_full_payment?.reference_number || null;\n      var for_full_paymentapproved = this.state.data?.data?.accounting_entry?.approved_by || null;\n      var approved_by_fullpayment = this.state.data?.data?.for_full_payment?.approved_by || null;\n\n      console.log(approved_by_fullpayment);\n\n\n\n          // Extract voucher data from state\n      var voucherData = this.state.data.data.voucher || {};\n\n      var member = this.state.data.data.member || {};\n      var first_name = member.first_name || \"\";\n      var middle_name = member.middle_name || \"\";\n      var last_name = member.last_name || \"\";\n\n    \n\n      // Get the check numbers\n      var bankCheckNumber = voucherData.bank_check_number || \"\";\n      var checkNumber = voucherData.check_number || \"\";\n\n\n      \n    \n\n      \n      // var debitAmount = for_full_payment_entries.debit_journal_entries[0].amount;\n      // var accounting_amount = accounting_entry_data.journal_entries[3].amount;\n\n      // var net_amount = accounting_amount - debitAmount;\n      \n      // console.log(debitAmount);\n      // console.log(accounting_amount);\n      // console.log(net_amount);\n\n      console.log(this.state.data);\n      \n    \n\n      // Check if for_full_payment_entries has valid data\n      const hasFullPaymentEntries = for_full_payment_entries && Object.keys(for_full_payment_entries).length > 0;\n  \n      return (\n        <div>\n          {/* Accounting Entry Preview for the regular accounting entry */}\n          <AccountingEntryPreview\n            id={this.state.data.id}\n            loanstatus={this.state.data.status}\n            book={accounting_entry_data.book}\n            particular={accounting_entry_data.particular}\n            datePrepared={accounting_entry_data.date_prepared}\n            referenceNumber={accounting_entry_data.reference_number}\n            approved_by={accounting_entry_data.approved_by}\n            branch={accounting_entry_data.branch_name}\n            balanced={true}\n            status={accounting_entry_data.status}\n            journalEntries={accounting_entry_data.journal_entries}\n            isLoading={this.state.isLoading}\n            handleRemoveClicked={this.handleRemoveClicked.bind(this)}\n            data={accounting_entry_data.data}\n            handleEntryClick={this.handleAccountingCodeClick.bind(this)}\n            accountingCodes={this.state.accountingCodes}\n          />\n          \n          {/* Only render AccountingEntryPreviewForFullPayment if there are full payment entries */}\n          {hasFullPaymentEntries && (\n            <AccountingEntryPreviewForFullPayment\n              book_for_fullpayment={for_full_payment_entries.book}\n              particular_for_fullpayment={for_full_payment_entries.particular}\n              approved_by_for_full_payment={for_full_payment_entries.prepared_by}\n              journalEntryRecordsforfullpayment={for_full_payment_entries.journal_entries} \n              branch_for_full_payment={for_full_payment_entries.branch_name}\n              check_number_ck = {bankCheckNumber}\n              check_number_cv = {checkNumber}\n              first_name = {first_name}\n              middle_name = {middle_name}\n              last_name = {last_name}\n              ref_number_forfullpayment = {for_full_payment}\n              approved_by_full = {approved_by_fullpayment}\n\n            />\n          )}\n        </div>\n      );\n    }\n  }\n}\n", "import React from 'react';\nimport axios from 'axios';\nimport {numberWithCommas} from '../utils/helpers';\nimport { Modal, Button, Form } from 'react-bootstrap';\nimport Select from 'react-select';\n\nexport default class AccountingEntryPreview extends React.Component {\n\n  // DepositCollectionUIComponent.js: hide the OR AND AR in accounting entry\n  static defaultProps = {\n    hideOrAr: false, \n  };\n  \n  constructor(props) {\n    super(props);\n    this.state = {\n      showCodeModal: false, // Controls visibility of accounting code modal\n      showAmountModal: false, // Controls visibility of amount modal\n      selectedEntry: null, // Stores the selected journal entry\n      selectedAccountingCode: '', // Stores selected accounting code value\n      newSelectedAccountingCode: '', // Stores the NEW selection from dropdown\n      selectedAmount: '', // Stores selected amount value\n      loanId: this.props.id,\n      recordId: this.props.id,\n      isSubmitting: false,\n    };\n  }\n\n  endpoints() {\n    const type = this.props.contextType || 'loan';\n    if (type === 'deposit_collection') {\n      return {\n        editNameUrl:   `/api/v1/deposit_collections/edit_accounting_name`, \n        editAmountUrl: `/api/v1/deposit_collections/edit_entry_amount`, \n        idKey:         'id', \n      };\n    }\n    if (type === 'withdrawal_collection') {\n      return {\n        editNameUrl:   `/api/v1/withdrawal_collections/edit_accounting_name`,\n        editAmountUrl: `/api/v1/withdrawal_collections/edit_entry_amount`,\n        idKey:         'id',\n      };\n    }\n    return {\n      editNameUrl:   `/api/v1/loans/edit_accounting_name`,\n      editAmountUrl: `/api/v1/loans/edit_entry_amount`,\n      idKey:         'loan_id',\n    };\n  }\n\n\n  // Opens the modal for editing accounting code\n  handleCodeClick = (entry) => {\n    console.log(\"Selected Entry:\", entry);\n    this.setState({\n      showCodeModal: true,\n      selectedEntry: entry,\n      selectedAccountingCode: entry.accounting_code_name,\n      newSelectedAccountingCode: ''\n\n    });\n  };\n\n  handleAmountClick = (entry) => {\n    const amountWithDecimals = parseFloat(entry.amount).toFixed(2);\n  \n    this.setState({\n      showAmountModal: true,\n      selectedEntry: entry,\n      selectedAmount: amountWithDecimals,\n    });\n  };\n  \n\n  // Closes both modals\n  handleCloseModals = () => {\n    this.setState({\n      showCodeModal: false,\n      showAmountModal: false,\n      selectedEntry: null\n    });\n  };\n\n  // Updates the selected accounting code value\n  handleAccountingCodeChange = (event) => {\n    this.setState({ newSelectedAccountingCode: event.target.value });\n  };\n\n  handleSaveAccountingCode = () => {\n    // const { selectedEntry, newSelectedAccountingCode, loanId, isSubmitting } = this.state;\n    const { selectedEntry, newSelectedAccountingCode, recordId, isSubmitting } = this.state;\n\n    if (isSubmitting) return;\n  \n    if (!selectedEntry || !newSelectedAccountingCode) {\n      alert(\"Please select a new accounting code.\");\n      return;\n    }\n  \n    if (newSelectedAccountingCode === String(selectedEntry.accounting_code_id)) {\n      alert(\"No changes detected.\");\n      return;\n    }\n  \n    const selectedCodeObj = this.props.accountingCodes.find(\n      (code) => String(code.id) === newSelectedAccountingCode\n    );\n    \n    if (!selectedCodeObj) {\n      console.error(\"Invalid accounting code selected.\");\n      return;\n    }\n\n    this.setState({ isSubmitting: true });\n  \n    // const requestData = {\n    //   loan_id: loanId,\n    //   accounting_code_id: selectedEntry.accounting_code_id,\n    //   accounting_code_new: selectedCodeObj.id,\n    // };\n\n    const { editNameUrl, idKey } = this.endpoints(); \n    const requestData = {\n      accounting_code_id: selectedEntry.accounting_code_id,\n      accounting_code_new: selectedCodeObj.id,\n    };\n   if (idKey) requestData[idKey] = recordId;\n  \n    const authenticityToken = document.querySelector('meta[name=\"csrf-token\"]')?.getAttribute('content');\n  \n    // axios.post(\"/api/v1/loans/edit_accounting_name\",\n    axios.post(editNameUrl,\n      requestData,\n      {\n        headers: {\n          \"Accept\": \"application/json\",\n          \"X-CSRF-Token\": authenticityToken\n        }\n      }\n    )\n    .then(response => {\n      console.log(\"Accounting code updated:\", response.data);\n      alert(\"Accounting code updated successfully.\");\n      // this.setState({ showCodeModal: false, isSubmitting: false });\n      // window.location.reload();\n      this.setState({ showCodeModal: false, isSubmitting: false });\n      if (typeof this.props.onUpdated === 'function') { this.props.onUpdated(); }\n      else { window.location.reload(); }\n    })\n    .catch(error => {\n      console.error(\"Failed to update accounting code:\", error);\n      alert(\"Error saving accounting code. Please try again.\");\n      this.setState({ isSubmitting: false });\n    });\n  };\n  \n\n  // Updates the selected amount value\n  handleAmountChange = (event) => {\n    this.setState({ selectedAmount: event.target.value });\n  };\n\n  handleSaveAmount = () => {\n    // const { selectedAmount, selectedEntry, loanId, isSubmitting} = this.state;\n    const { selectedAmount, selectedEntry, recordId, isSubmitting} = this.state;\n\n    if (isSubmitting) return;\n    \n    if (!selectedEntry) {\n      alert(\"No entry selected.\");\n      return;\n    }\n  \n    let amount = parseFloat(selectedAmount);\n\n    if (isNaN(amount) || amount <= 0) {\n      alert(\"Amount must be a valid number greater than 0.\");\n    return;\n    }\n\n    const originalAmount = parseFloat(selectedEntry.amount);\n    if (amount === originalAmount) {\n      alert(\"No changes detected.\");\n      return;\n    }\n\n    this.setState({ isSubmitting: true });\n\n    // const requestData = {\n    //   loan_id: loanId,\n    //   accounting_code_id: selectedEntry.accounting_code_id,\n    //   amount: parseFloat(amount.toFixed(2))\n    // }\n    const { editAmountUrl, idKey } = this.endpoints();\n    const requestData = {\n      accounting_code_id: selectedEntry.accounting_code_id,\n      amount: parseFloat(amount.toFixed(2))\n    };\n    if (idKey) requestData[idKey] = recordId;\n\n    const authenticityToken = document.querySelector('meta[name=\"csrf-token\"]')?.getAttribute('content');\n  \n    axios.post(editAmountUrl,\n      requestData,\n      {\n        headers: {\n          \"Accept\": \"application/json\",\n          \"X-CSRF-Token\": authenticityToken\n        },\n      }\n    )\n    .then(response => {\n      console.log(\"Amount updated:\", response.data);\n      alert(\"Amount updated successfully.\");\n      // this.setState({ showAmountModal: false });\n      // window.location.reload();\n      this.setState({ showAmountModal: false, isSubmitting: false });\n      if (typeof this.props.onUpdated === 'function') { this.props.onUpdated(); }\n      else { window.location.reload(); }\n    })\n    .catch(error => {\n      console.error(\"Failed to update amount:\", error);\n      alert(\"Error saving amount. Please try again.\");\n      this.setState({ isSubmitting: false });\n    });\n  };\n\n  accountingEntryContextColor() {\n    if(this.props.book == \"CRB\") {\n      return \"bg-success\";\n    } else if(this.props.book == \"CDB\") {\n      return \"bg-warning\";\n    } else if(this.props.book == \"JVB\") {\n      return \"bg-info\";\n    } else {\n      return \"bg-info\";\n    }\n  }\n\n  renderCrbParameters() {\n\n    const { hideOrAr, data } = this.props;\n\n        if(this.props.book == \"CRB\") {\n          return (\n            <div>\n              <hr/>\n\n          {/* OR Number \u2014 hidden when hideOrAr is true */}\n          {!hideOrAr && (\n            <>\n              <strong>OR Number:</strong>\n              <br/>\n              <span className=\"text-muted\">{data?.or_number}</span>\n              <br/>\n            </>\n          )}\n\n          {/* Always show Service Invoice */}\n          <strong>Service Invoice:</strong>\n          <br/>\n          <span className=\"text-muted\">{data?.si_number}</span>\n          <br/>\n\n          {/* AR Number \u2014 hidden when hideOrAr is true */}\n          {!hideOrAr && (\n            <>\n              <strong>AR Number:</strong>\n              <br/>\n              <span className=\"text-muted\">{data?.ar_number}</span>\n            </>\n          )}\n        </div>\n      );\n    }\n  };\n\n  renderCdbParameters() {\n    console.log(\"CDB Parameters: \");\n    console.log(this.props);\n    if(this.props.book == \"CDB\") {\n      return (\n        <div className=\"row\">\n          <div className=\"col\">\n            <strong>\n              Check Number:\n            </strong>\n            <div className=\"text-muted\">\n              {this.props.data.check_number}\n            </div>\n          </div>\n          <div className=\"col\">\n            <strong>\n              Check Voucher Number:\n            </strong>\n            <div className=\"text-muted\">\n              {this.props.data.check_voucher_number}\n            </div>\n          </div>\n          <div className=\"col\">\n            <strong>\n              Date of Check\n            </strong>\n            <div className=\"text-muted\">\n              {this.props.data.date_of_check}\n            </div>\n          </div>\n        </div>\n      );\n    }\n  };\n\n  renderBalancedWarning() {\n    var debitAmount   = 0.00;\n    var creditAmount  = 0.00;\n\n    for(var i = 0; i < this.props.journalEntries.length; i++) {\n      if(this.props.journalEntries[i].post_type == \"DR\") {\n        debitAmount += parseFloat(this.props.journalEntries[i].amount);\n      } else if(this.props.journalEntries[i].post_type == \"CR\") {\n        creditAmount += parseFloat(this.props.journalEntries[i].amount);\n      }\n    }\n\n    if(!this.props.balanced) {\n      return (\n        <div className=\"callout callout-danger\">\n          <strong>\n            Entries are not balanced.. Debit: {numberWithCommas(debitAmount)} Credit: {numberWithCommas(creditAmount)}\n          </strong>\n        </div>\n      );\n    }\n  }\n\n  render() {\n    var context = this;\n    var journalEntryRecords = [];\n\n    // const isPending = this.props.loanstatus === \"pending\";\n    const isPending = (this.props.loanstatus || this.props.status) === \"pending\";\n\n    console.log(\"Is Pending:\", isPending, \"Loan Status:\", this.props.loanstatus);\n\n    const showNameOnly = ['deposit_collection', 'withdrawal_collection'].includes(this.props.contextType);\n    const codeOptions = (this.props.accountingCodes || []).map(c => ({\n      value: String(c.id),\n      label: showNameOnly ? c.name : (c.code ? `${c.code} - ${c.name}` : c.name),\n    }));\n\n    const currentCodeOption =\n      codeOptions.find(o => o.value === String(this.state.newSelectedAccountingCode)) || null;\n\n    // Debit entries\n    for(var i = 0; i < this.props.journalEntries.length; i++) {\n      const entry = this.props.journalEntries[i];\n\n      if (entry.post_type == \"DR\" && entry.amount > 0) {\n        var btnRemove = \"\";\n        var btnEdit   = \"\";\n\n        // if(this.props.status == \"pending\") {\n        //   btnRemove = <button \n        //                 className=\"btn btn-sm btn-danger\"\n        //                 onClick={context.props.handleRemoveClicked.bind(this, i)}\n        //               >\n        //                 <span className=\"bi bi-x\"/>\n        //               </button>;\n\n        //   btnEdit = <button\n        //               className=\"btn btn-sm btn-info\"\n        //               onClick={context.props.handleJournalEntryEdit.bind(this, i)}\n        //             >\n        //               <span className=\"bi bi-pencil\"/>\n        //             </button>\n        // }\n        if (this.props.status === \"pending\") {\n          if (typeof context.props.handleRemoveClicked === \"function\") {\n            btnRemove = (\n              <button\n                className=\"btn btn-sm btn-danger\"\n                onClick={() => context.props.handleRemoveClicked(i)}     // add here\n              >\n                <span className=\"bi bi-x\"/>\n              </button>\n            );\n          }\n          if (typeof context.props.handleJournalEntryEdit === \"function\") {\n            btnEdit = (\n              <button\n                className=\"btn btn-sm btn-info\"\n                onClick={() => context.props.handleJournalEntryEdit(i)}   // add here\n              >\n                <span className=\"bi bi-pencil\"/>\n              </button>\n            );\n          }\n        }\n\n        journalEntryRecords.push(\n          <tr key={\"je-dr-\" + i}>\n            <td>\n              {btnEdit}\n              {btnRemove}\n              {isPending ? (\n                <button className=\"btn btn-link p-0 text-primary text-decoration-none\" \n                  onClick={() => this.handleCodeClick(entry)}\n                >\n                  {entry.accounting_code_name}\n                </button>\n              ) : (\n                <span>{entry.accounting_code_name}</span>\n              )}\n            </td>\n            <td className=\"text-end\">\n              {isPending ? (\n                <button className=\"btn btn-link p-0 text-primary text-decoration-none\" \n                  onClick={() => this.handleAmountClick(entry)}\n                >\n                  {numberWithCommas(entry.amount)}\n                </button>\n              ) : (\n                <span>{numberWithCommas(entry.amount)}</span>\n              )}\n            </td>\n            <td className=\"text-end\">\n            </td>\n          </tr>\n        );\n      }\n    }\n\n    // Credit entries\n    for(var i = 0; i < this.props.journalEntries.length; i++) {\n      const entry = this.props.journalEntries[i];\n      \n      if (entry.post_type == \"CR\" && entry.amount > 0) {\n        var btnRemove = \"\";\n        var btnEdit   = \"\";\n\n        // if(this.props.status == \"pending\") {\n        //   btnRemove = <button \n        //                 className=\"btn btn-sm btn-danger\"\n        //                 onClick={context.props.handleRemoveClicked.bind(this, i)}\n        //               >\n        //                 <span className=\"bi bi-x\"/>\n        //               </button>;\n\n        //   btnEdit = <button\n        //               className=\"btn btn-sm btn-info\"\n        //               onClick={context.props.handleJournalEntryEdit.bind(this, i)}\n        //             >\n        //               <span className=\"bi bi-pencil\"/>\n        //             </button>\n        // }\n\n        if (this.props.status === \"pending\") {\n          if (typeof context.props.handleRemoveClicked === \"function\") {\n            btnRemove = (\n              <button\n                className=\"btn btn-sm btn-danger\"\n                onClick={() => context.props.handleRemoveClicked(i)}     \n              >\n                <span className=\"bi bi-x\"/>\n              </button>\n            );\n          }\n          if (typeof context.props.handleJournalEntryEdit === \"function\") {\n            btnEdit = (\n              <button\n                className=\"btn btn-sm btn-info\"\n                onClick={() => context.props.handleJournalEntryEdit(i)}   \n              >\n                <span className=\"bi bi-pencil\"/>\n              </button>\n            );\n          }\n        }\n\n        journalEntryRecords.push(\n          <tr key={\"je-cr-\" + i}>\n            <td>\n              {btnEdit}\n              {btnRemove}\n              {isPending ? (\n              <button className=\"btn btn-link p-0 text-primary text-decoration-none\" \n                onClick={() => this.handleCodeClick(entry)}\n              >\n                {entry.accounting_code_name}\n              </button>\n            ) : (\n              <span>{entry.accounting_code_name}</span>\n            )}\n            </td>\n            <td className=\"text-end\">\n            </td>\n            <td className=\"text-end\">\n            {isPending ? (\n              <button className=\"btn btn-link p-0 text-primary text-decoration-none\" \n                      onClick={() => this.handleAmountClick(entry)} \n              >\n                {numberWithCommas(entry.amount)}\n              </button>\n            ) : (\n              <span>{numberWithCommas(entry.amount)}</span> // Non-clickable\n            )}\n            </td>\n          </tr>\n        );\n      }\n    }\n\n    return  (\n      <div className=\"card border-danger\">\n        <div className={\"card-header \" + this.accountingEntryContextColor()}>\n          <div className=\"row\">\n            <div className=\"col-md-6\">\n              <strong>\n                {this.props.book} {this.props.referenceNumber} - {this.props.datePosted}\n              </strong>\n            </div>\n            <div className=\"col-md-6\">\n              <div className=\"text-end\">\n                <div className=\"text-muted\">\n                  <span className=\"fa fa-store\"/>\n                  {this.props.branch}\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n        <div className=\"card-body\">\n          {this.renderBalancedWarning()}\n          <table className=\"table table-sm\">\n            <thead>\n              <tr>\n                <th width=\"50%\">\n                  Accounting Code\n                </th>\n                <th className=\"text-end\" width=\"25%\">\n                  Debit\n                </th>\n                <th className=\"text-end\" width=\"25%\">\n                  Credit\n                </th>\n              </tr>\n            </thead>\n            <tbody>\n              {journalEntryRecords}\n            </tbody>\n          </table>\n          <hr/>\n          <div className=\"row\">\n            <div className=\"col\">\n              <label>\n                Particular:\n              </label>\n              <p>\n                {this.props.particular}\n              </p>\n            </div>\n            <div className=\"col\">\n              <p className=\"text-end\">\n                <label>\n                  <strong>\n                    Approved By:\n                  </strong>\n                </label>\n                <br/>\n                {this.props.approved_by}\n              </p>\n            </div>\n          </div>\n          {this.renderCrbParameters()}\n          {this.renderCdbParameters()}\n        </div>\n        <Modal show={this.state.showCodeModal} onHide={this.handleCloseModals}>\n        <Modal.Header closeButton>\n          <Modal.Title>Edit Accounting Code</Modal.Title>\n        </Modal.Header>\n        <Modal.Body>\n          <Form>\n            <Form.Group>\n              <Form.Label>Accounting Code Name</Form.Label>\n              {/* Textbox for manual input */}\n              <Form.Control\n                type=\"text\"\n                value={this.state.selectedAccountingCode}\n                //  onChange={this.handleAccountingCodeChange}\n                readOnly\n              />\n            </Form.Group>\n            <Form.Group>\n              <Form.Label>Select New Accounting Code</Form.Label>\n              {/* Dropdown for selecting accounting code */}\n              <Select\n                inputId=\"select-accounting-code\"\n                options={codeOptions}\n                value={currentCodeOption}\n                onChange={(opt) =>\n                  this.setState({ newSelectedAccountingCode: opt ? opt.value : '' })\n                }\n                isClearable\n                placeholder=\"Search code or name\u2026\"\n                // keep menu visible above Bootstrap modal\n                menuPortalTarget={typeof document !== 'undefined' ? document.body : null}\n                styles={{ menuPortal: (base) => ({ ...base, zIndex: 9999 }) }}\n                // optional: case-insensitive match (react-select already searches label)\n                filterOption={(option, input) =>\n                  option.label.toLowerCase().includes(input.toLowerCase())\n                }\n              />\n            </Form.Group>\n          </Form>\n        </Modal.Body>\n        <Modal.Footer>\n          <Button variant=\"secondary\" onClick={this.handleCloseModals}>Close</Button>\n          <Button variant=\"primary\" onClick={this.handleSaveAccountingCode} disabled={\n            this.state.isSubmitting || \n            !this.state.newSelectedAccountingCode || \n            this.state.newSelectedAccountingCode === String(this.state.selectedEntry?.accounting_code_id)\n            }\n          >\n            Save\n          </Button>\n        </Modal.Footer>\n      </Modal>\n\n      <Modal show={this.state.showAmountModal} onHide={this.handleCloseModals}>\n        <Modal.Header closeButton>\n          <Modal.Title>Edit Amount</Modal.Title>\n        </Modal.Header>\n        <Modal.Body>\n          <Form>\n            <Form.Group>\n              <Form.Label>Amount</Form.Label>\n              {/* Textbox for numeric input */}\n              <Form.Control\n                id=\"input-accounting-amount\"\n                type=\"number\"\n                min=\"0.01\"\n                step=\"0.01\"\n                value={this.state.selectedAmount}\n                onChange={this.handleAmountChange}\n              />\n            </Form.Group>\n          </Form>\n        </Modal.Body>\n        <Modal.Footer>\n          <Button variant=\"secondary\" onClick={this.handleCloseModals}>Close</Button>\n          <Button variant=\"primary\" onClick={this.handleSaveAmount} disabled={\n            this.state.isSubmitting || \n            parseFloat(this.state.selectedAmount) === parseFloat(this.state.selectedEntry?.amount)\n            }\n          >\n            Save\n          </Button>\n        </Modal.Footer>\n      </Modal>\n      </div>\n    );\n  }\n}", "const _excluded = [\"onKeyDown\"];\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n/* eslint-disable jsx-a11y/no-static-element-interactions */\n/* eslint-disable jsx-a11y/anchor-has-content */\n\nimport * as React from 'react';\nimport { useEventCallback } from '@restart/hooks';\nimport { useButtonProps } from './Button';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function isTrivialHref(href) {\n  return !href || href.trim() === '#';\n}\n/**\n * An generic `<a>` component that covers a few A11y cases, ensuring that\n * cases where the `href` is missing or trivial like \"#\" are treated like buttons.\n */\nconst Anchor = /*#__PURE__*/React.forwardRef((_ref, ref) => {\n  let {\n      onKeyDown\n    } = _ref,\n    props = _objectWithoutPropertiesLoose(_ref, _excluded);\n  const [buttonProps] = useButtonProps(Object.assign({\n    tagName: 'a'\n  }, props));\n  const handleKeyDown = useEventCallback(e => {\n    buttonProps.onKeyDown(e);\n    onKeyDown == null ? void 0 : onKeyDown(e);\n  });\n  if (isTrivialHref(props.href) || props.role === 'button') {\n    return /*#__PURE__*/_jsx(\"a\", Object.assign({\n      ref: ref\n    }, props, buttonProps, {\n      onKeyDown: handleKeyDown\n    }));\n  }\n  return /*#__PURE__*/_jsx(\"a\", Object.assign({\n    ref: ref\n  }, props, {\n    onKeyDown: onKeyDown\n  }));\n});\nAnchor.displayName = 'Anchor';\nexport default Anchor;", "import { useEffect } from 'react';\nimport useEventCallback from './useEventCallback';\n/**\n * Attaches an event handler outside directly to specified DOM element\n * bypassing the react synthetic event system.\n *\n * @param element The target to listen for events on\n * @param event The DOM event name\n * @param handler An event handler\n * @param capture Whether or not to listen during the capture event phase\n */\nexport default function useEventListener(eventTarget, event, listener, capture = false) {\n  const handler = useEventCallback(listener);\n  useEffect(() => {\n    const target = typeof eventTarget === 'function' ? eventTarget() : eventTarget;\n    target.addEventListener(event, handler, capture);\n    return () => target.removeEventListener(event, handler, capture);\n  }, [eventTarget]);\n}", "import useEventListener from './useEventListener';\nimport { useCallback } from 'react';\n/**\n * Attaches an event handler outside directly to the `document`,\n * bypassing the react synthetic event system.\n *\n * ```ts\n * useGlobalListener('keydown', (event) => {\n *  console.log(event.key)\n * })\n * ```\n *\n * @param event The DOM event name\n * @param handler An event handler\n * @param capture Whether or not to listen during the capture event phase\n */\nexport default function useGlobalListener(event, handler, capture = false) {\n  const documentTarget = useCallback(() => document, []);\n  return useEventListener(documentTarget, event, handler, capture);\n}", "import { useEffect } from 'react';\nimport useCommittedRef from './useCommittedRef';\n\n/**\n * Creates a `setInterval` that is properly cleaned up when a component unmounted\n *\n * ```tsx\n *  function Timer() {\n *    const [timer, setTimer] = useState(0)\n *    useInterval(() => setTimer(i => i + 1), 1000)\n *\n *    return <span>{timer} seconds past</span>\n *  }\n * ```\n *\n * @param fn an function run on each interval\n * @param ms The milliseconds duration of the interval\n */\n\n/**\n * Creates a pausable `setInterval` that is properly cleaned up when a component unmounted\n *\n * ```tsx\n *  const [paused, setPaused] = useState(false)\n *  const [timer, setTimer] = useState(0)\n *\n *  useInterval(() => setTimer(i => i + 1), 1000, paused)\n *\n *  return (\n *    <span>\n *      {timer} seconds past\n *\n *      <button onClick={() => setPaused(p => !p)}>{paused ? 'Play' : 'Pause' }</button>\n *    </span>\n * )\n * ```\n *\n * @param fn an function run on each interval\n * @param ms The milliseconds duration of the interval\n * @param paused Whether or not the interval is currently running\n */\n\n/**\n * Creates a pausable `setInterval` that _fires_ immediately and is\n * properly cleaned up when a component unmounted\n *\n * ```tsx\n *  const [timer, setTimer] = useState(-1)\n *  useInterval(() => setTimer(i => i + 1), 1000, false, true)\n *\n *  // will update to 0 on the first effect\n *  return <span>{timer} seconds past</span>\n * ```\n *\n * @param fn an function run on each interval\n * @param ms The milliseconds duration of the interval\n * @param paused Whether or not the interval is currently running\n * @param runImmediately Whether to run the function immediately on mount or unpause\n * rather than waiting for the first interval to elapse\n *\n\n */\n\nfunction useInterval(fn, ms, paused = false, runImmediately = false) {\n  let handle;\n  const fnRef = useCommittedRef(fn);\n  // this ref is necessary b/c useEffect will sometimes miss a paused toggle\n  // orphaning a setTimeout chain in the aether, so relying on it's refresh logic is not reliable.\n  const pausedRef = useCommittedRef(paused);\n  const tick = () => {\n    if (pausedRef.current) return;\n    fnRef.current();\n    schedule(); // eslint-disable-line no-use-before-define\n  };\n\n  const schedule = () => {\n    clearTimeout(handle);\n    handle = setTimeout(tick, ms);\n  };\n  useEffect(() => {\n    if (runImmediately) {\n      tick();\n    } else {\n      schedule();\n    }\n    return () => clearTimeout(handle);\n  }, [paused, runImmediately]);\n}\nexport default useInterval;", "import { useEffect } from 'react';\nimport useCommittedRef from './useCommittedRef';\nfunction useRafInterval(fn, ms, paused = false) {\n  let handle;\n  let start = new Date().getTime();\n  const fnRef = useCommittedRef(fn);\n  // this ref is necessary b/c useEffect will sometimes miss a paused toggle\n  // orphaning a setTimeout chain in the aether, so relying on it's refresh logic is not reliable.\n  const pausedRef = useCommittedRef(paused);\n  function loop() {\n    const current = new Date().getTime();\n    const delta = current - start;\n    if (pausedRef.current) return;\n    if (delta >= ms && fnRef.current) {\n      fnRef.current();\n      start = new Date().getTime();\n    }\n    cancelAnimationFrame(handle);\n    handle = requestAnimationFrame(loop);\n  }\n  useEffect(() => {\n    handle = requestAnimationFrame(loop);\n    return () => cancelAnimationFrame(handle);\n  }, []);\n}\nexport default useRafInterval;", "import { useCallback, useState } from 'react';\n\n/**\n * Updates state, partial updates are merged into existing state values\n */\n\n/**\n * Mimics a React class component's state model, of having a single unified\n * `state` object and an updater that merges updates into the existing state, as\n * opposed to replacing it.\n *\n * ```js\n * const [state, setState] = useMergeState({ name: 'Betsy', age: 24 })\n *\n * setState({ name: 'Johan' }) // { name: 'Johan', age: 24 }\n *\n * setState(state => ({ age: state.age + 10 })) // { name: 'Johan', age: 34 }\n * ```\n *\n * @param initialState The initial state object\n */\nexport default function useMergeState(initialState) {\n  const [state, setState] = useState(initialState);\n  const updater = useCallback(update => {\n    if (update === null) return;\n    if (typeof update === 'function') {\n      setState(state => {\n        const nextState = update(state);\n        return nextState == null ? state : Object.assign({}, state, nextState);\n      });\n    } else {\n      setState(state => Object.assign({}, state, update));\n    }\n  }, [setState]);\n  return [state, updater];\n}", "import { useState, useEffect } from 'react';\n/**\n * Fetch and load an image for programatic use such as in a `<canvas>` element.\n *\n * @param imageOrUrl The `HtmlImageElement` or image url to load\n * @param crossOrigin The `crossorigin` attribute to set\n *\n * ```ts\n * const { image, error } = useImage('/static/kittens.png')\n * const ref = useRef<HTMLCanvasElement>()\n *\n * useEffect(() => {\n *   const ctx = ref.current.getContext('2d')\n *\n *   if (image) {\n *     ctx.drawImage(image, 0, 0)\n *   }\n * }, [ref, image])\n *\n * return (\n *   <>\n *     {error && \"there was a problem loading the image\"}\n *     <canvas ref={ref} />\n *   </>\n * ```\n */\nexport default function useImage(imageOrUrl, crossOrigin) {\n  const [state, setState] = useState({\n    image: null,\n    error: null\n  });\n  useEffect(() => {\n    if (!imageOrUrl) return undefined;\n    let image;\n    if (typeof imageOrUrl === 'string') {\n      image = new Image();\n      if (crossOrigin) image.crossOrigin = crossOrigin;\n      image.src = imageOrUrl;\n    } else {\n      image = imageOrUrl;\n      if (image.complete && image.naturalHeight > 0) {\n        setState({\n          image,\n          error: null\n        });\n        return;\n      }\n    }\n    function onLoad() {\n      setState({\n        image,\n        error: null\n      });\n    }\n    function onError(error) {\n      setState({\n        image,\n        error\n      });\n    }\n    image.addEventListener('load', onLoad);\n    image.addEventListener('error', onError);\n    return () => {\n      image.removeEventListener('load', onLoad);\n      image.removeEventListener('error', onError);\n    };\n  }, [imageOrUrl, crossOrigin]);\n  return state;\n}", "import { useState } from 'react';\nimport useEffect from './useIsomorphicEffect';\nconst targetMap = new WeakMap();\nlet resizeObserver;\nfunction getResizeObserver() {\n  // eslint-disable-next-line no-return-assign\n  return resizeObserver = resizeObserver || new window.ResizeObserver(entries => {\n    entries.forEach(entry => {\n      const handler = targetMap.get(entry.target);\n      if (handler) handler(entry.contentRect);\n    });\n  });\n}\n\n/**\n * Efficiently observe size changes on an element. Depends on the `ResizeObserver` api,\n * and polyfills are needed in older browsers.\n *\n * ```ts\n * const [ref, attachRef] = useCallbackRef(null);\n *\n * const rect = useResizeObserver(ref);\n *\n * return (\n *  <div ref={attachRef}>\n *    {JSON.stringify(rect)}\n *  </div>\n * )\n * ```\n *\n * @param element The DOM element to observe\n */\nexport default function useResizeObserver(element) {\n  const [rect, setRect] = useState(null);\n  useEffect(() => {\n    if (!element) return;\n    getResizeObserver().observe(element);\n    setRect(element.getBoundingClientRect());\n    targetMap.set(element, rect => {\n      setRect(rect);\n    });\n    return () => {\n      targetMap.delete(element);\n    };\n  }, [element]);\n  return rect;\n}", "import classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport BreadcrumbItem from './BreadcrumbItem';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst Breadcrumb = /*#__PURE__*/React.forwardRef(({\n  bsPrefix,\n  className,\n  listProps = {},\n  children,\n  label = 'breadcrumb',\n  // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n  as: Component = 'nav',\n  ...props\n}, ref) => {\n  const prefix = useBootstrapPrefix(bsPrefix, 'breadcrumb');\n  return /*#__PURE__*/_jsx(Component, {\n    \"aria-label\": label,\n    className: className,\n    ref: ref,\n    ...props,\n    children: /*#__PURE__*/_jsx(\"ol\", {\n      ...listProps,\n      className: classNames(prefix, listProps == null ? void 0 : listProps.className),\n      children: children\n    })\n  });\n});\nBreadcrumb.displayName = 'Breadcrumb';\nexport default Object.assign(Breadcrumb, {\n  Item: BreadcrumbItem\n});", "import classNames from 'classnames';\nimport * as React from 'react';\nimport Anchor from '@restart/ui/Anchor';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst BreadcrumbItem = /*#__PURE__*/React.forwardRef(({\n  bsPrefix,\n  active = false,\n  children,\n  className,\n  // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n  as: Component = 'li',\n  linkAs: LinkComponent = Anchor,\n  linkProps = {},\n  href,\n  title,\n  target,\n  ...props\n}, ref) => {\n  const prefix = useBootstrapPrefix(bsPrefix, 'breadcrumb-item');\n  return /*#__PURE__*/_jsx(Component, {\n    ref: ref,\n    ...props,\n    className: classNames(prefix, className, {\n      active\n    }),\n    \"aria-current\": active ? 'page' : undefined,\n    children: active ? children : /*#__PURE__*/_jsx(LinkComponent, {\n      ...linkProps,\n      href: href,\n      title: title,\n      target: target,\n      children: children\n    })\n  });\n});\nBreadcrumbItem.displayName = 'BreadcrumbItem';\nexport default BreadcrumbItem;", "import * as React from 'react';\n\n/**\n * Iterates through children that are typically specified as `props.children`,\n * but only maps over children that are \"valid elements\".\n *\n * The mapFunction provided index will be normalised to the components mapped,\n * so an invalid component would not increase the index.\n *\n */\nfunction map(children, func) {\n  let index = 0;\n  return React.Children.map(children, child => /*#__PURE__*/React.isValidElement(child) ? func(child, index++) : child);\n}\n\n/**\n * Iterates through children that are \"valid elements\".\n *\n * The provided forEachFunc(child, index) will be called for each\n * leaf child with the index reflecting the position relative to \"valid components\".\n */\nfunction forEach(children, func) {\n  let index = 0;\n  React.Children.forEach(children, child => {\n    if ( /*#__PURE__*/React.isValidElement(child)) func(child, index++);\n  });\n}\n\n/**\n * Finds whether a component's `children` prop includes a React element of the\n * specified type.\n */\nfunction hasChildOfType(children, type) {\n  return React.Children.toArray(children).some(child => /*#__PURE__*/React.isValidElement(child) && child.type === type);\n}\nexport { map, forEach, hasChildOfType };", "import classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix, useBootstrapBreakpoints, useBootstrapMinBreakpoint } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function useCol({\n  as,\n  bsPrefix,\n  className,\n  ...props\n}) {\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'col');\n  const breakpoints = useBootstrapBreakpoints();\n  const minBreakpoint = useBootstrapMinBreakpoint();\n  const spans = [];\n  const classes = [];\n  breakpoints.forEach(brkPoint => {\n    const propValue = props[brkPoint];\n    delete props[brkPoint];\n    let span;\n    let offset;\n    let order;\n    if (typeof propValue === 'object' && propValue != null) {\n      ({\n        span,\n        offset,\n        order\n      } = propValue);\n    } else {\n      span = propValue;\n    }\n    const infix = brkPoint !== minBreakpoint ? `-${brkPoint}` : '';\n    if (span) spans.push(span === true ? `${bsPrefix}${infix}` : `${bsPrefix}${infix}-${span}`);\n    if (order != null) classes.push(`order${infix}-${order}`);\n    if (offset != null) classes.push(`offset${infix}-${offset}`);\n  });\n  return [{\n    ...props,\n    className: classNames(className, ...spans, ...classes)\n  }, {\n    as,\n    bsPrefix,\n    spans\n  }];\n}\nconst Col = /*#__PURE__*/React.forwardRef(\n// Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n(props, ref) => {\n  const [{\n    className,\n    ...colProps\n  }, {\n    as: Component = 'div',\n    bsPrefix,\n    spans\n  }] = useCol(props);\n  return /*#__PURE__*/_jsx(Component, {\n    ...colProps,\n    ref: ref,\n    className: classNames(className, !spans.length && bsPrefix)\n  });\n});\nCol.displayName = 'Col';\nexport default Col;", "import classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\nimport FormCheck from './FormCheck';\nimport FormControl from './FormControl';\nimport FormFloating from './FormFloating';\nimport FormGroup from './FormGroup';\nimport FormLabel from './FormLabel';\nimport FormRange from './FormRange';\nimport FormSelect from './FormSelect';\nimport FormText from './FormText';\nimport Switch from './Switch';\nimport FloatingLabel from './FloatingLabel';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst propTypes = {\n  /**\n   * The Form `ref` will be forwarded to the underlying element,\n   * which means, unless it's rendered `as` a composite component,\n   * it will be a DOM node, when resolved.\n   *\n   * @type {ReactRef}\n   * @alias ref\n   */\n  _ref: PropTypes.any,\n  /**\n   * Mark a form as having been validated. Setting it to `true` will\n   * toggle any validation styles on the forms elements.\n   */\n  validated: PropTypes.bool,\n  as: PropTypes.elementType\n};\nconst Form = /*#__PURE__*/React.forwardRef(({\n  className,\n  validated,\n  // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n  as: Component = 'form',\n  ...props\n}, ref) => /*#__PURE__*/_jsx(Component, {\n  ...props,\n  ref: ref,\n  className: classNames(className, validated && 'was-validated')\n}));\nForm.displayName = 'Form';\nForm.propTypes = propTypes;\nexport default Object.assign(Form, {\n  Group: FormGroup,\n  Control: FormControl,\n  Floating: FormFloating,\n  Check: FormCheck,\n  Switch,\n  Label: FormLabel,\n  Text: FormText,\n  Range: FormRange,\n  Select: FormSelect,\n  FloatingLabel\n});", "import classNames from 'classnames';\nimport * as React from 'react';\nimport { useContext, useMemo } from 'react';\nimport Feedback from './Feedback';\nimport FormCheckInput from './FormCheckInput';\nimport FormCheckLabel from './FormCheckLabel';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { hasChildOfType } from './ElementChildren';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { Fragment as _Fragment } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst FormCheck = /*#__PURE__*/React.forwardRef(({\n  id,\n  bsPrefix,\n  bsSwitchPrefix,\n  inline = false,\n  reverse = false,\n  disabled = false,\n  isValid = false,\n  isInvalid = false,\n  feedbackTooltip = false,\n  feedback,\n  feedbackType,\n  className,\n  style,\n  title = '',\n  type = 'checkbox',\n  label,\n  children,\n  // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n  as = 'input',\n  ...props\n}, ref) => {\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'form-check');\n  bsSwitchPrefix = useBootstrapPrefix(bsSwitchPrefix, 'form-switch');\n  const {\n    controlId\n  } = useContext(FormContext);\n  const innerFormContext = useMemo(() => ({\n    controlId: id || controlId\n  }), [controlId, id]);\n  const hasLabel = !children && label != null && label !== false || hasChildOfType(children, FormCheckLabel);\n  const input = /*#__PURE__*/_jsx(FormCheckInput, {\n    ...props,\n    type: type === 'switch' ? 'checkbox' : type,\n    ref: ref,\n    isValid: isValid,\n    isInvalid: isInvalid,\n    disabled: disabled,\n    as: as\n  });\n  return /*#__PURE__*/_jsx(FormContext.Provider, {\n    value: innerFormContext,\n    children: /*#__PURE__*/_jsx(\"div\", {\n      style: style,\n      className: classNames(className, hasLabel && bsPrefix, inline && `${bsPrefix}-inline`, reverse && `${bsPrefix}-reverse`, type === 'switch' && bsSwitchPrefix),\n      children: children || /*#__PURE__*/_jsxs(_Fragment, {\n        children: [input, hasLabel && /*#__PURE__*/_jsx(FormCheckLabel, {\n          title: title,\n          children: label\n        }), feedback && /*#__PURE__*/_jsx(Feedback, {\n          type: feedbackType,\n          tooltip: feedbackTooltip,\n          children: feedback\n        })]\n      })\n    })\n  });\n});\nFormCheck.displayName = 'FormCheck';\nexport default Object.assign(FormCheck, {\n  Input: FormCheckInput,\n  Label: FormCheckLabel\n});", "import classNames from 'classnames';\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst propTypes = {\n  /**\n   * Specify whether the feedback is for valid or invalid fields\n   *\n   * @type {('valid'|'invalid')}\n   */\n  type: PropTypes.string,\n  /** Display feedback as a tooltip. */\n  tooltip: PropTypes.bool,\n  as: PropTypes.elementType\n};\nconst Feedback = /*#__PURE__*/React.forwardRef(\n// Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n({\n  as: Component = 'div',\n  className,\n  type = 'valid',\n  tooltip = false,\n  ...props\n}, ref) => /*#__PURE__*/_jsx(Component, {\n  ...props,\n  ref: ref,\n  className: classNames(className, `${type}-${tooltip ? 'tooltip' : 'feedback'}`)\n}));\nFeedback.displayName = 'Feedback';\nFeedback.propTypes = propTypes;\nexport default Feedback;", "import classNames from 'classnames';\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst FormCheckInput = /*#__PURE__*/React.forwardRef(({\n  id,\n  bsPrefix,\n  className,\n  type = 'checkbox',\n  isValid = false,\n  isInvalid = false,\n  // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n  as: Component = 'input',\n  ...props\n}, ref) => {\n  const {\n    controlId\n  } = useContext(FormContext);\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'form-check-input');\n  return /*#__PURE__*/_jsx(Component, {\n    ...props,\n    ref: ref,\n    type: type,\n    id: id || controlId,\n    className: classNames(className, bsPrefix, isValid && 'is-valid', isInvalid && 'is-invalid')\n  });\n});\nFormCheckInput.displayName = 'FormCheckInput';\nexport default FormCheckInput;", "import * as React from 'react';\n\n// TODO\n\nconst FormContext = /*#__PURE__*/React.createContext({});\nexport default FormContext;", "import classNames from 'classnames';\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst FormCheckLabel = /*#__PURE__*/React.forwardRef(({\n  bsPrefix,\n  className,\n  htmlFor,\n  ...props\n}, ref) => {\n  const {\n    controlId\n  } = useContext(FormContext);\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'form-check-label');\n  return /*#__PURE__*/_jsx(\"label\", {\n    ...props,\n    ref: ref,\n    htmlFor: htmlFor || controlId,\n    className: classNames(className, bsPrefix)\n  });\n});\nFormCheckLabel.displayName = 'FormCheckLabel';\nexport default FormCheckLabel;", "import classNames from 'classnames';\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport warning from 'warning';\nimport Feedback from './Feedback';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst FormControl = /*#__PURE__*/React.forwardRef(({\n  bsPrefix,\n  type,\n  size,\n  htmlSize,\n  id,\n  className,\n  isValid = false,\n  isInvalid = false,\n  plaintext,\n  readOnly,\n  // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n  as: Component = 'input',\n  ...props\n}, ref) => {\n  const {\n    controlId\n  } = useContext(FormContext);\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'form-control');\n  let classes;\n  if (plaintext) {\n    classes = {\n      [`${bsPrefix}-plaintext`]: true\n    };\n  } else {\n    classes = {\n      [bsPrefix]: true,\n      [`${bsPrefix}-${size}`]: size\n    };\n  }\n  process.env.NODE_ENV !== \"production\" ? warning(controlId == null || !id, '`controlId` is ignored on `<FormControl>` when `id` is specified.') : void 0;\n  return /*#__PURE__*/_jsx(Component, {\n    ...props,\n    type: type,\n    size: htmlSize,\n    ref: ref,\n    readOnly: readOnly,\n    id: id || controlId,\n    className: classNames(className, classes, isValid && `is-valid`, isInvalid && `is-invalid`, type === 'color' && `${bsPrefix}-color`)\n  });\n});\nFormControl.displayName = 'FormControl';\nexport default Object.assign(FormControl, {\n  Feedback\n});", "import createWithBsPrefix from './createWithBsPrefix';\nexport default createWithBsPrefix('form-floating');", "import * as React from 'react';\nimport { useMemo } from 'react';\nimport FormContext from './FormContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst FormGroup = /*#__PURE__*/React.forwardRef(({\n  controlId,\n  // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n  as: Component = 'div',\n  ...props\n}, ref) => {\n  const context = useMemo(() => ({\n    controlId\n  }), [controlId]);\n  return /*#__PURE__*/_jsx(FormContext.Provider, {\n    value: context,\n    children: /*#__PURE__*/_jsx(Component, {\n      ...props,\n      ref: ref\n    })\n  });\n});\nFormGroup.displayName = 'FormGroup';\nexport default FormGroup;", "import classNames from 'classnames';\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport warning from 'warning';\nimport Col from './Col';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst FormLabel = /*#__PURE__*/React.forwardRef(({\n  // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n  as: Component = 'label',\n  bsPrefix,\n  column = false,\n  visuallyHidden = false,\n  className,\n  htmlFor,\n  ...props\n}, ref) => {\n  const {\n    controlId\n  } = useContext(FormContext);\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'form-label');\n  let columnClass = 'col-form-label';\n  if (typeof column === 'string') columnClass = `${columnClass} ${columnClass}-${column}`;\n  const classes = classNames(className, bsPrefix, visuallyHidden && 'visually-hidden', column && columnClass);\n  process.env.NODE_ENV !== \"production\" ? warning(controlId == null || !htmlFor, '`controlId` is ignored on `<FormLabel>` when `htmlFor` is specified.') : void 0;\n  htmlFor = htmlFor || controlId;\n  if (column) return /*#__PURE__*/_jsx(Col, {\n    ref: ref,\n    as: \"label\",\n    className: classes,\n    htmlFor: htmlFor,\n    ...props\n  });\n  return (\n    /*#__PURE__*/\n    // eslint-disable-next-line jsx-a11y/label-has-for, jsx-a11y/label-has-associated-control\n    _jsx(Component, {\n      ref: ref,\n      className: classes,\n      htmlFor: htmlFor,\n      ...props\n    })\n  );\n});\nFormLabel.displayName = 'FormLabel';\nexport default FormLabel;", "import classNames from 'classnames';\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport FormContext from './FormContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst FormRange = /*#__PURE__*/React.forwardRef(({\n  bsPrefix,\n  className,\n  id,\n  ...props\n}, ref) => {\n  const {\n    controlId\n  } = useContext(FormContext);\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'form-range');\n  return /*#__PURE__*/_jsx(\"input\", {\n    ...props,\n    type: \"range\",\n    ref: ref,\n    className: classNames(className, bsPrefix),\n    id: id || controlId\n  });\n});\nFormRange.displayName = 'FormRange';\nexport default FormRange;", "import classNames from 'classnames';\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport FormContext from './FormContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst FormSelect = /*#__PURE__*/React.forwardRef(({\n  bsPrefix,\n  size,\n  htmlSize,\n  className,\n  isValid = false,\n  isInvalid = false,\n  id,\n  ...props\n}, ref) => {\n  const {\n    controlId\n  } = useContext(FormContext);\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'form-select');\n  return /*#__PURE__*/_jsx(\"select\", {\n    ...props,\n    size: htmlSize,\n    ref: ref,\n    className: classNames(className, bsPrefix, size && `${bsPrefix}-${size}`, isValid && `is-valid`, isInvalid && `is-invalid`),\n    id: id || controlId\n  });\n});\nFormSelect.displayName = 'FormSelect';\nexport default FormSelect;", "import classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst FormText = /*#__PURE__*/React.forwardRef(\n// Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n({\n  bsPrefix,\n  className,\n  as: Component = 'small',\n  muted,\n  ...props\n}, ref) => {\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'form-text');\n  return /*#__PURE__*/_jsx(Component, {\n    ...props,\n    ref: ref,\n    className: classNames(className, bsPrefix, muted && 'text-muted')\n  });\n});\nFormText.displayName = 'FormText';\nexport default FormText;", "import * as React from 'react';\nimport FormCheck from './FormCheck';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst Switch = /*#__PURE__*/React.forwardRef((props, ref) => /*#__PURE__*/_jsx(FormCheck, {\n  ...props,\n  ref: ref,\n  type: \"switch\"\n}));\nSwitch.displayName = 'Switch';\nexport default Object.assign(Switch, {\n  Input: FormCheck.Input,\n  Label: FormCheck.Label\n});", "import classNames from 'classnames';\nimport * as React from 'react';\nimport FormGroup from './FormGroup';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst FloatingLabel = /*#__PURE__*/React.forwardRef(({\n  bsPrefix,\n  className,\n  children,\n  controlId,\n  label,\n  ...props\n}, ref) => {\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'form-floating');\n  return /*#__PURE__*/_jsxs(FormGroup, {\n    ref: ref,\n    className: classNames(className, bsPrefix),\n    controlId: controlId,\n    ...props,\n    children: [children, /*#__PURE__*/_jsx(\"label\", {\n      htmlFor: controlId,\n      children: label\n    })]\n  });\n});\nFloatingLabel.displayName = 'FloatingLabel';\nexport default FloatingLabel;", "import React from 'react';\nimport {numberWithCommas} from '../utils/helpers';\n\nexport default class AccountingEntryPreviewForFullPayment extends React.Component {\n  constructor(props) {\n    super(props);\n  }\n\n  accountingEntryContextColor() {\n    if(this.props.book == \"CRB\") {\n      return \"bg-success\";\n    } else if(this.props.book == \"CDB\") {\n      return \"bg-warning\";\n    } else if(this.props.book == \"JVB\") {\n      return \"bg-info\";\n    } else {\n      return \"bg-info\";\n    }\n  }\n\n  renderCrbParameters() {\n    if(this.props.book == \"CRB\") {\n      return (\n        <div>\n          <hr/>\n          <strong>\n            OR Number: \n          </strong>\n          <br/>\n          <span className=\"text-muted\">\n            {this.props.data.or_number}\n          </span>\n          <br/>\n          <strong>\n            Service Invoice: \n          </strong>\n          <br/>\n          <span className=\"text-muted\">\n            {this.props.data.si_number}\n          </span>\n          <br/>\n          <strong>\n            AR Number: \n          </strong>\n          <br/>\n          <span className=\"text-muted\">\n            {this.props.data.ar_number}\n          </span>\n        </div>\n      );\n    }\n  };\n\n  renderCdbParameters() {\n    console.log(\"CDB Parameters: \");\n    console.log(this.props);\n    if(this.props.book == \"CDB\") {\n      return (\n        <div className=\"row\">\n          <div className=\"col\">\n            <strong>\n              Check Number:\n            </strong>\n            <div className=\"text-muted\">\n              {this.props.data.check_number}\n            </div>\n          </div>\n          <div className=\"col\">\n            <strong>\n              Check Voucher Number:\n            </strong>\n            <div className=\"text-muted\">\n              {this.props.data.check_voucher_number}\n            </div>\n          </div>\n          <div className=\"col\">\n            <strong>\n              Date of Check\n            </strong>\n            <div className=\"text-muted\">\n              {this.props.data.date_of_check}\n            </div>\n          </div>\n        </div>\n      );\n    }\n  };\n\n  // renderBalancedWarning() {\n  //   var debitAmount   = 0.00;\n  //   var creditAmount  = 0.00;\n\n  //   for(var i = 0; i < this.props.journalEntries.length; i++) {\n  //     if(this.props.journalEntries[i].post_type == \"DR\") {\n  //       debitAmount += parseFloat(this.props.journalEntries[i].amount);\n  //     } else if(this.props.journalEntries[i].post_type == \"CR\") {\n  //       creditAmount += parseFloat(this.props.journalEntries[i].amount);\n  //     }\n  //   }\n\n  //   if(!this.props.balanced) {\n  //     return (\n  //       <div className=\"callout callout-danger\">\n  //         <strong>\n  //           Entries are not balanced.. Debit: {numberWithCommas(debitAmount)} Credit: {numberWithCommas(creditAmount)}\n  //         </strong>\n  //       </div>\n  //     );\n  //   }\n  // }\n\n  render() {\n    var context = this;\n    var journalEntryRecordsforfullpayment = [];\n\n\n    // Debit entries for journalEntries_for_full_payment\nfor (var i = 0; i < this.props.journalEntryRecordsforfullpayment.length; i++) {\n  if (this.props.journalEntryRecordsforfullpayment[i].post_type == \"DR\" && this.props.journalEntryRecordsforfullpayment[i].amount > 0) {\n    var btnRemove = \"\";\n    var btnEdit = \"\";\n\n    if (this.props.status == \"pending\") {\n      btnRemove = <button\n        className=\"btn btn-sm btn-danger\"\n        onClick={context.props.handleRemoveClicked.bind(this, i)}\n      >\n        <span className=\"bi bi-x\" />\n      </button>;\n\n      btnEdit = <button\n        className=\"btn btn-sm btn-info\"\n        onClick={context.props.handleJournalEntryEdit.bind(this, i)}\n      >\n        <span className=\"bi bi-pencil\" />\n      </button>;\n    }\n\n    journalEntryRecordsforfullpayment.push(\n      <tr key={\"je-dr-full-\" + i}>\n        <td>\n          {btnEdit}\n          {btnRemove}\n          {this.props.journalEntryRecordsforfullpayment[i].accounting_code_name}\n        </td>\n        <td className=\"text-end\">\n          {numberWithCommas(this.props.journalEntryRecordsforfullpayment[i].amount)}\n        </td>\n        <td className=\"text-end\"></td>\n      </tr>\n    );\n  }\n}\n\n// Credit entries for journalEntries_for_full_payment\nfor (var i = 0; i < this.props.journalEntryRecordsforfullpayment.length; i++) {\n  if (this.props.journalEntryRecordsforfullpayment[i].post_type == \"CR\" && this.props.journalEntryRecordsforfullpayment[i].amount > 0) {\n    var btnRemove = \"\";\n    var btnEdit = \"\";\n\n    if (this.props.status == \"pending\") {\n      btnRemove = <button\n        className=\"btn btn-sm btn-danger\"\n        onClick={context.props.handleRemoveClicked.bind(this, i)}\n      >\n        <span className=\"bi bi-x\" />\n      </button>;\n\n      btnEdit = <button\n        className=\"btn btn-sm btn-info\"\n        onClick={context.props.handleJournalEntryEdit.bind(this, i)}\n      >\n        <span className=\"bi bi-pencil\" />\n      </button>;\n    }\n\n    journalEntryRecordsforfullpayment.push(\n      <tr key={\"je-cr-full-\" + i}>\n        <td>\n          {btnEdit}\n          {btnRemove}\n          {this.props.journalEntryRecordsforfullpayment[i].accounting_code_name}\n        </td>\n        <td className=\"text-end\"></td>\n        <td className=\"text-end\">\n          {numberWithCommas(this.props.journalEntryRecordsforfullpayment[i].amount)}\n        </td>\n      </tr>\n    );\n  }\n}\n\n\n    return  (\n      <div className=\"card border-danger\">\n        <div className={\"card-header bg-info\"}>\n          <div className=\"row\">\n            <div className=\"col-md-6\">\n              <strong>\n                {this.props.book_for_fullpayment} {this.props.ref_number_forfullpayment} -\n              </strong>\n            </div>\n            <div className=\"col-md-6\">\n              <div className=\"text-end\">\n                <div className=\"text-muted\">\n                  <span className=\"fa fa-store\"/>\n                  {this.props.branch_for_full_payment}\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n        <div className=\"card-body\">\n          <table className=\"table table-sm\">\n            <thead>\n              <tr>\n                <th width=\"50%\">\n                  Accounting Code\n                </th>\n                <th className=\"text-end\" width=\"25%\">\n                  Debit\n                </th>\n                <th className=\"text-end\" width=\"25%\">\n                  Credit\n                </th>\n              </tr>\n            </thead>\n            <tbody>\n              {journalEntryRecordsforfullpayment}\n            </tbody>\n          </table>\n          <hr/>\n          <div className=\"row\">\n            <div className=\"col\">\n              <label>\n                Particular:\n              </label>\n              <p>\n              {`${\"Payment of Loan / Deposit of Funds\"} - ${this.props.first_name},${this.props.middle_name},${this.props.last_name},cv#${this.props.check_number_cv} ck#${this.props.check_number_ck}`}\n\n              </p>\n            </div>\n            <div className=\"col\">\n              <p className=\"text-end\">\n                <label>\n                  <strong>\n                    Approved By:\n                  </strong>\n                </label>\n                <br/>\n                {this.props.approved_by_full}\n              </p>\n            </div>\n          </div>\n          {this.renderCrbParameters()}\n        </div>\n      </div>\n    );\n  }\n} ", "import React from 'react';\nimport $ from 'jquery';\n\nimport SkCubeLoading from '../SkCubeLoading';\nimport BillingUITable from './BillingUITable';\nimport BillingUITableTablet from './BillingUITableTablet';\nimport AccountingEntryPreview from '../accounting/AccountingEntryPreview';\nimport {numberWithCommas} from '../utils/helpers';\n\nexport default class BillingUIComponent extends React.Component {\n  constructor(props) {\n    super(props);\n\n    this.state  = {\n      isLoading: true,\n      isSaving: false,\n      data: false,\n      changes: []\n    };\n  }\n\n  componentDidMount() {\n    this.fetchBillingData();\n  }\n\n  handleChangeTransaction(m, t, pAmount) {\n    console.log(\"handleChageTransaction\");\n    console.log(t);\n    console.log(this.state.data);\n\n    var changes = this.state.changes;\n\n    var currentData = this.state.data;\n\n    changes.push({\n      previousAmount: pAmount,\n      member: m,\n      transaction: t\n    });\n\n    for(var totalsIndex = 0; totalsIndex < currentData.data.totals.length; totalsIndex++) {\n      currentData.data.totals[totalsIndex].amount = 0.00;\n    }\n\n    for(var totalsIndex = 0; totalsIndex < currentData.data.totals.length; totalsIndex++) {\n      var totalObject = currentData.data.totals[totalsIndex];\n\n      for(var i = 0; i < currentData.data.records.length; i++) {\n        for(var j = 0; j < currentData.data.records[i].records.length; j++) {\n          var rr = currentData.data.records[i].records[j];\n\n          if([\"SAVINGS\", \"INSURANCE\", \"EQUITY\"].includes(rr.record_type) && totalObject.key == rr.account_subtype) {\n            currentData.data.totals[totalsIndex].amount += parseFloat(rr.amount);\n          } else if(rr.record_type == \"LOAN_PAYMENT\" && totalObject.key == rr.loan_product.name) {\n            currentData.data.totals[totalsIndex].amount += parseFloat(rr.amount);\n          } else if(rr.record_type == \"WP\" && totalObject.key == \"WP\") {\n            currentData.data.totals[totalsIndex].amount += parseFloat(rr.amount);\n          }\n        }\n      }\n    }\n\n    this.updateData(currentData);\n\n    this.setState({ changes: changes });\n  }\n\n  fetchBillingData() {\n    var context = this;\n\n    $.ajax({\n      url: \"/api/v1/billings/fetch\",\n      method: 'GET',\n      data: {\n        id: this.props.id,\n        authenticity_token: context.props.authenticityToken\n      },\n      success: function(response) {\n        context.setState({\n          isLoading: false,\n          data: response\n        });\n      },\n      error: function(response) {\n        console.log(response);\n        alert(\"Error in fetching billing test\");\n      }\n    });\n  }\n\n  updateData(data) {\n    this.setState({\n      data: data\n    });\n  }\n\n  handleRemoveClicked(index) {\n    alert(\"Not implemented for this module\");\n  }\n\n  handleSaveChangesClicked() {\n    var context = this.state;\n\n    this.setState({\n      isLoading: true\n    });\n\n    $.ajax({\n      url: \"/api/v1/billings/update\",\n      method: \"POST\",\n      data: {\n        data: context.data,\n        changes: context.changes,\n        authenticity_token: context.authenticityToken,\n        billing_id: context.data.id\n      },\n      success: function(response) {\n        console.log(response);\n        alert(\"Successfully updated billing! Reloading...\");\n\n        window.location.reload();\n      },\n      error: function(response) {\n        console.log(response);\n        alert(\"Error in updating billing\");\n      }\n    });\n  }\n\n  saveParticular() {\n    var context       = this;\n    var data          = context.state.data;\n    var newParticular = data.data.accounting_entry.particular;\n\n    context.setState({\n      isSaving: true\n    });\n\n    $.ajax({\n      url: \"/api/v1/billings/update_particular\",\n      method: 'POST',\n      data: {\n        id: context.state.data.id,\n        authenticity_token: context.props.authenticityToken,\n        particular: newParticular\n      },\n      success: function(response) {\n        context.setState({\n          isSaving: false\n        });\n      },\n      error: function(response) {\n        alert(\"Error in updating particular\");\n      }\n    });\n  }\n\n  handleBookChanged(event) {\n    var context = this;\n    var data    = context.state.data;\n    var book    = event.target.value;\n\n    context.setState({\n      isSaving: true\n    });\n\n    $.ajax({\n      url: \"/api/v1/billings/update_book\",\n      method: 'POST',\n      data: {\n        id: context.state.data.id,\n        authenticity_token: context.props.authenticityToken,\n        book: book\n      },\n      success: function(response) {\n        data.data.accounting_entry.book = book;\n\n        context.setState({\n          isSaving: false\n        });\n\n        context.updateData(data);\n      },\n      error: function(response) {\n        alert(\"Error in updating particular\");\n      }\n    });\n  }\n  saveSiNumber() {\n    var context     = this;\n    var data        = context.state.data;\n    var newSiNumber = data.data.accounting_entry.data.si_number;\n\n    context.setState({\n      isSaving: true\n    });\n\n    $.ajax({\n      url: \"/api/v1/billings/update_si_number\",\n      method: 'POST',\n      data: {\n        id: context.state.data.id,\n        authenticity_token: context.props.authenticityToken,\n        si_number: newSiNumber\n      },\n      success: function(response) {\n        context.setState({\n          isSaving: false\n        });\n      },\n      error: function(response) {\n        alert(\"Error in updating Si number\");\n      }\n    });\n  }\n\n  saveOrNumber() {\n    var context     = this;\n    var data        = context.state.data;\n    var newOrNumber = data.data.accounting_entry.data.or_number;\n\n    context.setState({\n      isSaving: true\n    });\n\n    $.ajax({\n      url: \"/api/v1/billings/update_or_number\",\n      method: 'POST',\n      data: {\n        id: context.state.data.id,\n        authenticity_token: context.props.authenticityToken,\n        or_number: newOrNumber\n      },\n      success: function(response) {\n        context.setState({\n          isSaving: false\n        });\n      },\n      error: function(response) {\n        alert(\"Error in updating or number\");\n      }\n    });\n  }\n\n  modifyOrNumber(event) {\n    var context     = this;\n    var newOrNumber = event.target.value;\n    var data        = context.state.data;\n\n    data.data.or_number                       = newOrNumber;\n    data.data.accounting_entry.data.or_number = newOrNumber;\n\n    context.setState({\n      data: data\n    });\n  }\n  modifySiNumber(event) {\n    var context     = this;\n    var newSiNumber = event.target.value;\n    var data        = context.state.data;\n\n    data.data.si_number                       = newSiNumber;\n    data.data.accounting_entry.data.si_number = newSiNumber;\n\n    context.setState({\n      data: data\n    });\n  }\n  modifyParticular(event) {\n    var context       = this;\n    var newParticular = event.target.value;\n    var data          = context.state.data;\n\n    data.data.accounting_entry.particular = newParticular;\n\n    context.setState({\n      data: data\n    });\n  }\n\n  saveArNumber() {\n    var context     = this;\n    var data        = context.state.data;\n    var newArNumber = data.data.accounting_entry.data.ar_number;\n\n    context.setState({\n      isSaving: true\n    });\n\n    $.ajax({\n      url: \"/api/v1/billings/update_ar_number\",\n      method: 'POST',\n      data: {\n        id: context.state.data.id,\n        authenticity_token: context.props.authenticityToken,\n        ar_number: newArNumber\n      },\n      success: function(response) {\n        context.setState({\n          isSaving: false\n        });\n      },\n      error: function(response) {\n        alert(\"Error in updating or number\");\n      }\n    });\n  }\n\n  modifyArNumber(event) {\n    var context     = this;\n    var newArNumber = event.target.value;\n    var data        = context.state.data;\n\n    data.data.ar_number                       = newArNumber;\n    data.data.accounting_entry.data.ar_number = newArNumber;\n\n    context.setState({\n      data: data\n    });\n  }\n\n  renderParticular() {\n    var particular  = this.state.data.data.accounting_entry.particular;\n\n    if(this.state.data.status == \"pending\" || \"save\") {\n      return  (\n        <div className=\"row\">\n          <div className=\"col-md-10\">\n            <input \n              value={particular} \n              onChange={this.modifyParticular.bind(this)} \n              disabled={this.state.isSaving}\n              className=\"form-control\"\n            />\n          </div>\n          <div className=\"col-md-2\">\n            <button\n              className=\"btn btn-info btn-block\"\n              disabled={this.state.isSaving}\n              onClick={this.saveParticular.bind(this)}\n            >\n              <span className=\"bi bi-check\"/>\n              Save\n            </button>\n          </div>\n        </div>\n      );\n    } else {\n      return particular;\n    }\n  }\n\n  renderOrNumber() {\n    var orNumber  = this.state.data.data.or_number;\n   \n    if(this.state.data.status == \"save\") {\n      return  (\n        <div className=\"row\">\n          <div className=\"col-md-10\">\n            <input \n              value={orNumber} \n              onChange={this.modifyOrNumber.bind(this)} \n              disabled={this.state.isSaving}\n              className=\"form-control\"\n            />\n          </div>\n          <div className=\"col-md-2\">\n            <button\n              className=\"btn btn-info btn-block\"\n              disabled={this.state.isSaving}\n              onClick={this.saveOrNumber.bind(this)}\n            >\n              <span className=\"bi bi-check\"/>\n              Save\n            </button>\n          </div>\n        </div>\n      );\n    } else {\n      return this.state.data.data.or_number;\n    }\n    \n     /*return this.state.data.data.or_number;*/\n  }\n  renderSiNumber() {\n    var siNumber  = this.state.data.data.si_number;\n   \n    if(this.state.data.status == \"save\") {\n      return  (\n        <div className=\"row\">\n          <div className=\"col-md-10\">\n            <input \n              value={siNumber} \n              onChange={this.modifySiNumber.bind(this)} \n              disabled={this.state.isSaving}\n              className=\"form-control\"\n            />\n          </div>\n          <div className=\"col-md-2\">\n            <button\n              className=\"btn btn-info btn-block\"\n              disabled={this.state.isSaving}\n              onClick={this.saveSiNumber.bind(this)}\n            >\n              <span className=\"bi bi-check\"/>\n              Save\n            </button>\n          </div>\n        </div>\n      );\n    } else {\n      return this.state.data.data.si_number;\n    }\n    \n     /*return this.state.data.data.si_number;*/\n  }\n  renderBook() {\n    var book  = this.state.data.data.accounting_entry.book;\n\n    if(this.state.data.status == \"save\") {\n      return (\n        <div className=\"row\">\n          <div className=\"col\">\n            <select\n              value={book}\n              disabled={this.state.isLoading}\n              onChange={this.handleBookChanged.bind(this)}\n              className=\"form-control\"\n            >\n              <option value=\"CRB\">CRB</option>\n              <option value=\"JVB\">JVB</option>\n            </select>\n          </div>\n        </div>\n      );\n    } else {\n      return book;\n    }\n  }\n\n  renderArNumber() {\n    var arNumber  = this.state.data.data.ar_number;\n    if(this.state.data.status == \"save\") {\n      return  (\n        <div className=\"row\">\n          <div className=\"col-md-10\">\n            <input \n              value={arNumber} \n              onChange={this.modifyArNumber.bind(this)} \n              disabled={this.state.isSaving}\n              className=\"form-control\"\n            />\n          </div>\n          <div className=\"col-md-2\">\n            <button\n              className=\"btn btn-info btn-block\"\n              disabled={this.state.isSaving}\n              onClick={this.saveArNumber.bind(this)}\n            >\n              <span className=\"bi bi-check\"/>\n              Save\n            </button>\n          </div>\n        </div>\n      );\n    } else {\n      return this.state.data.data.ar_number;\n    }\n   \n   /* return this.state.data.data.ar_number; */\n  }\n\n  renderChanges() {\n    if(this.state.changes.length > 0) {\n      return (\n        <div className=\"alert alert-danger\">\n          <small className=\"text-muted\">\n            Some changes occurred. Please save changes.\n          </small>\n          <ul>\n            {\n              this.state.changes.map(function(o, i) {\n                return (\n                  <li key={\"change-\" + i}>\n                    Updated {o.transaction.record_type} of {o.member.last_name}, {o.member.first_name} from {o.previousAmount} to {o.transaction.amount}\n                  </li>\n                );\n              })\n            }\n          </ul>\n          <hr/>\n          <button className=\"btn btn-info\" onClick={this.handleSaveChangesClicked.bind(this)}>\n            <span className=\"bi bi-check\"></span>\n            Save Changes\n          </button>\n        </div>\n      );\n    } else {\n      return  (\n        <div>\n        </div>\n      );\n    }\n  }\n\n  render() {\n    if(this.state.isLoading) {\n      return (\n        <div>\n          <SkCubeLoading/>\n        </div>\n      );\n    } else {\n      var accounting_entry_data = this.state.data.data.accounting_entry;\n      console.log(accounting_entry_data);\n\n      return (\n        <div>\n          {this.renderChanges()}\n          <table className=\"table table-sm table-bordered\">\n            <tbody>\n              <tr>\n                <th>\n                  Expected Collections:\n                </th>\n                <td className=\"text-end\">\n                  <div className=\"text-muted\">\n                    {numberWithCommas(this.state.data.data.total_expected_collections)}\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <th>\n                  Total Collected:\n                </th>\n                <td className=\"text-end\">\n                  <strong>\n                    {numberWithCommas(this.state.data.data.total_collected)}\n                  </strong>\n                </td>\n              </tr>\n              <tr>\n                <th>\n                  Book:\n                </th>\n                <td className=\"text-end\">\n                  {this.renderBook()}\n                </td>\n              </tr>\n              <tr>\n                <th>\n                  OR Number:\n                </th>\n                <td className=\"text-end\">\n                  {this.renderOrNumber()}\n                </td>\n              </tr>\n              <tr>\n                <th>\n                  SI number:\n                </th>\n                <td className=\"text-end\">\n                  {this.renderSiNumber()}\n                </td>\n                </tr>\n              <tr>\n                <th>\n                  AR Number:\n                </th>\n                <td className=\"text-end\">\n                  {this.renderArNumber()}\n                </td>\n              </tr>\n              <tr>\n                <th>\n                  Particular:\n                </th>\n                <td className=\"text-end\">\n                  {this.renderParticular()}\n                </td>\n              </tr>\n            </tbody>\n          </table>\n          <hr/>\n          <BillingUITable\n            id={this.props.id}\n            data={this.state.data}\n            updateData={this.updateData.bind(this)}\n            handleChangeTransaction={this.handleChangeTransaction.bind(this)}\n            authenticityToken={this.props.authenticityToken}\n          />\n          <hr/>\n          <h6>\n            Accounting Entry\n          </h6>\n          <AccountingEntryPreview\n            book={accounting_entry_data.book}\n            particular={accounting_entry_data.particular}\n            datePrepared={accounting_entry_data.date_prepared}\n            referenceNumber={accounting_entry_data.reference_number}\n            approved_by={accounting_entry_data.approved_by}\n            branch={accounting_entry_data.branch_name}\n            balanced={true}\n            status={accounting_entry_data.status}\n            journalEntries={accounting_entry_data.journal_entries}\n            isLoading={this.state.isLoading}\n            handleRemoveClicked={this.handleRemoveClicked.bind(this)}\n            data={accounting_entry_data.data}\n          />\n          <hr/>\n          <h6>\n            AR Number\n          </h6>\n          <table className=\"table table-responsive table-sm\">\n            <thead>\n              <tr>\n                <th>\n                  Member\n                </th>\n                <th>\n                  AR Number\n                </th>\n                <th>\n                  Amount\n                </th>\n              </tr>\n            </thead>\n            <tbody>\n              {this.state.data.data.records.map((o) => {\n                if(o.member.ar_number) {\n                  return (\n                    <tr key={\"ar-row-\" + o.member.id}>\n                      <td>\n                        {o.member.full_name}\n                      </td>\n                      <td>\n                        {o.member.ar_number}\n                      </td>\n                      <td>\n                      </td>\n                    </tr>\n                  )\n                }\n              })}\n            </tbody>\n          </table>\n        </div>\n      );\n    }\n  }\n}\n", "import React from 'react';\nimport { useState } from 'react';\nimport $ from 'jquery';\nimport ReactTable from 'react-table';\nimport Toggle from 'react-toggle';\nimport ToggleSwitch from '../utils/ToggleSwitch';\n\nimport { numberWithCommas } from '../utils/helpers';\nimport { customStyles } from '../utils/consts';\n\nimport ErrorDisplay from '../ErrorDisplay';\nimport Modal from 'react-bootstrap/Modal';\nimport Button from 'react-bootstrap/Button';\n\nexport default class BillingUITable extends React.Component {\n  constructor(props) {\n    super(props);\n  \n\n    this.state = {\n      currentTransaction: false,\n      currentAmountValue: false,\n      currentMember: false,\n      memberRecords: false,\n      modalIsOpen: false,\n      modalArIsOpen: false,\n      modalTotal: 0.00,\n      isLoading: false,\n      errors: false,\n      grandTotal: 0.00,\n    };\n\n    \n  }\n\n\n  buildHeaders() {\n    var headers = [];\n\n    headers.push(\n      <th key={\"h-member-attendance\"} style={{ minWidth: \"100px\" }} >\n        <center>\n          <small>\n            Attend.\n          </small>\n          <br />\n          <div className=\"btn-group\">\n            <div\n              className=\"btn btn-success btn-sm\"\n              onClick={this.handleToggleAllOn.bind(this)}\n            >\n              <span className=\"bi bi-check\" />\n            </div>\n            <div\n              className=\"btn btn-danger btn-sm\"\n              onClick={this.handleToggleAllOff.bind(this)}\n            >\n              <span className=\"bi bi-x\" />\n            </div>\n          </div>\n        </center>\n      </th>\n    );\n\n    headers.push(\n      <th key={\"h-member\"} style={{ minWidth: \"300px\" }} >\n        Member\n      </th>\n    );\n\n    for (var i = 0; i < this.props.data.data.headers.length; i++) {\n      headers.push(\n        <th key={\"h-\" + i} style={{ minWidth: \"100px\" }}>\n          <center>\n            <small>\n              {this.props.data.data.headers[i]}\n            </small>\n          </center>\n        </th>\n      );\n    }\n\n    headers.push(\n      <th key={\"h-total-cp\"} style={{ minWidth: \"40px\" }} >\n        <center>\n          CP\n        </center>\n      </th>\n    );\n\n\n    headers.push(\n      <th key={\"h-grand-total\"} style={{ minWidth: \"40px\" }} >\n        <center>\n          LP\n        </center>\n      </th>\n    );\n\n    headers.push(\n      <th key={\"h-total\"} style={{ minWidth: \"40px\" }} >\n        <center>\n          TOTAL\n        </center>\n      </th>\n    );\n\n    return headers;\n  }\n\n  handleToggleAllOn() {\n    var context = this;\n\n    var data = {\n      id: this.props.id,\n      authenticity_token: this.props.authenticityToken\n    };\n\n    $.ajax({\n      url: \"/api/v1/billings/toggle_attendance_on\",\n      method: 'POST',\n      data: data,\n      success: function (response) {\n        context.props.updateData(response);\n        window.location.reload();\n      },\n      error: function (response) {\n        alert(\"Error in toggling attendance (all on)\");\n      }\n    });\n  }\n\n  handleToggleAllOff() {\n    var context = this;\n\n    var data = {\n      id: this.props.id,\n      authenticity_token: this.props.authenticityToken\n    };\n\n    $.ajax({\n      url: \"/api/v1/billings/toggle_attendance_off\",\n      method: 'POST',\n      data: data,\n      success: function (response) {\n        context.props.updateData(response);\n        window.location.reload();\n      },\n      error: function (response) {\n        alert(\"Error in toggling attendance (all off)\");\n      }\n    });\n  }\n\n  handleToggled(memberId) {\n    var context = this;\n\n    var data = {\n      member_id: memberId,\n      id: this.props.id,\n      authenticity_token: this.props.authenticityToken\n    };\n\n    $.ajax({\n      url: \"/api/v1/billings/toggle_attendance\",\n      method: 'POST',\n      data: data,\n      success: function (response) {\n        context.props.updateData(response);\n      },\n      error: function (response) {\n        alert(\"Error in toggling attendance\");\n      }\n    });\n  }\n\n  fetchGrandTotal() {\n    var t = 0.00\n    for (var i = 0; i < this.props.data.data.records.length; i++) {\n      for (var j = 0; j < this.props.data.data.records[i].records.length; j++) {\n        var paymentRecord = this.props.data.data.records[i].records[j];\n        t += parseFloat(paymentRecord.amount);\n      }\n    }\n\n    return t;\n  }\n\n  renderARNumber(member) {\n    if (member.ar_number) {\n      return (\n        <>\n          <br />\n          <small className=\"badge bg-secondary\">\n            AR: {member.ar_number}\n          </small>\n          <small className=\"badge bg-warning\">\n            OR: {member.or_number}\n          </small>\n        </>\n      )\n    } else {\n      return (\n        <></>\n      )\n    }\n  }\n\n\n  buildRecords() {\n    var records = [];\n\n    for (var i = 0; i < this.props.data.data.records.length; i++) {\n      var components = [];\n      var memberRecords = this.props.data.data.records[i].records;\n      var record = this.props.data.data.records[i];\n      var member = record.member;\n      var grandTotal = 0.00;\n\n      if (this.props.data.status == \"pending\") {\n        components.push(\n          <td key={\"c-member-attnd-\" + member.id}>\n            <center>\n              <ToggleSwitch\n                key={\"c-member-attnd-toggle-switch-\" + member.id}\n                name={\"c-member-attnd-toggle-switch-\" + member.id}\n                checked={record.attendance}\n                onChange={this.handleToggled.bind(this, member.id)} \n              />\n            </center>\n          </td>\n        );\n      } else if (record.attendance) {\n        components.push(\n          <td key={\"c-member-attnd-\" + member.id}>\n            <center>\n              <div className=\"badge bg-success\">\n                <span className=\"bi bi-check\" />\n              </div>\n            </center>\n          </td>\n        );\n      } else {\n        components.push(\n          <td key={\"c-member-attnd-\" + member.id} >\n            <center>\n              <div className=\"badge bg-danger\">\n                <span className=\"fa fa-minus\" />\n              </div>\n            </center>\n          </td>\n        );\n      }\n\n      components.push(\n        <td key={\"c-member-\" + member.id} >\n          <strong>\n            <a onClick={this.handleMemberClicked.bind(this, this.props.data.data.records[i].member, this.props.data.data.records[i].records)}>\n              {this.props.data.data.records[i].member.full_name}\n            </a>\n            {this.renderARNumber(this.props.data.data.records[i].member)}\n          </strong>\n          <br />\n          <small className=\"badge bg-info\">\n            {this.props.data.data.records[i].member.member_type} |\n            {this.props.data.data.records[i].member.data.hide_status}\n          </small>\n          <small className=\"badge bg-info\">\n            {this.props.data.data.records[i].member.insurance_status} |\n          </small>\n          {\n  this.props.data.data.records[i].member.data &&\n  \"sms_record\" in this.props.data.data.records[i].member.data &&\n  this.props.data.data.records[i].member.data.sms_record &&\n  this.props.data.data.records[i].member.data.sms_record.sms_rec === true ? (\n    <>\n      {/* Add validation for sms_validation */}\n      {this.props.data.data.records[i].member.data.sms_record.sms_rec === true ? (\n        <>\n          {/* Check if loan_maturity date is greater than the current date */}\n          {this.props.data.data.records[i].member.data.sms_record.loan_maturity ? (\n            new Date(this.props.data.data.records[i].member.data.sms_record.loan_maturity) > new Date() ? (\n              <small className='badge bg-success'>\n                Sms is Active\n              </small>\n            ) : (\n              <small className='badge bg-danger'>\n                Sms is not Active\n              </small>\n            )\n          ) : (\n            <>\n              <small className='badge bg-danger'>\n                Sms is not Active\n              </small>\n            </>\n          )}\n        </>\n      ) : (\n        <>\n          <small className='badge bg-danger'>\n            Sms is not Active\n          </small>\n        </>\n      )}\n    </>\n  ) : (\n    <>\n      <small className='badge bg-danger'>\n        Sms is Inactive\n      </small>\n    </>\n  )\n}\n\n          </td>\n        );\n\n      for (var j = 0; j < this.props.data.data.records[i].records.length; j++) {\n\n        var paymentRecord = this.props.data.data.records[i].records[j];\n\n        if (paymentRecord.record_type == \"LOAN_PAYMENT\" && paymentRecord.enabled == true) {\n          if (this.props.data.status == \"pending\" && this.props.data.data.is_checked == null || this.props.data.data.is_checked == false) {\n            components.push(\n              <td key={\"loan-payment-\" + paymentRecord.loan_id} className=\"text-end\">\n                <strong>\n                  <a\n                    href=\"#\"\n                    onClick={this.handleTransactionClicked.bind(this, paymentRecord, member)}\n                  >\n                    {numberWithCommas(paymentRecord.amount)}\n                  </a>\n                </strong>\n              </td>\n            );\n          } else {\n            components.push(\n              <td key={\"loan-payment-\" + paymentRecord.loan_id} className=\"text-end\">\n                {numberWithCommas(paymentRecord.amount)}\n              </td>\n            );\n          }\n\n          // Add grand total\n          grandTotal += parseFloat(paymentRecord.amount);\n        } else if (paymentRecord.record_type == \"SAVINGS\" && paymentRecord.enabled == true) {\n          if (this.props.data.status == \"pending\" && this.props.data.data.is_checked == null || this.props.data.data.is_checked == false) {\n            components.push(\n              <td key={\"savings-\" + paymentRecord.member_account_id} className=\"text-end\">\n                <strong>\n                  <a\n                    href=\"#\"\n                    onClick={this.handleTransactionClicked.bind(this, paymentRecord, member)}\n                  >\n                    {numberWithCommas(paymentRecord.amount)}\n                  </a>\n                </strong>\n              </td>\n            );\n          } else {\n            components.push(\n              <td key={\"savings-\" + paymentRecord.member_account_id} className=\"text-end\">\n                {numberWithCommas(paymentRecord.amount)}\n              </td>\n            );\n          }\n\n          // Add grand total\n          grandTotal += parseFloat(paymentRecord.amount);\n\n        } else if (paymentRecord.record_type == \"EQUITY\" && paymentRecord.enabled == true) {\n          if (this.props.data.status == \"pending\" && this.props.data.data.is_checked == null || this.props.data.data.is_checked == false) {\n            components.push(\n              <td key={\"equity-\" + paymentRecord.member_account_id} className=\"text-end\">\n                <strong>\n                  <a\n                    href=\"#\"\n                    onClick={this.handleTransactionClicked.bind(this, paymentRecord, member)}\n                  >\n                    {numberWithCommas(paymentRecord.amount)}\n                  </a>\n                </strong>\n              </td>\n            );\n          } else {\n            components.push(\n              <td key={\"equity-\" + paymentRecord.member_account_id} className=\"text-end\">\n                {numberWithCommas(paymentRecord.amount)}\n              </td>\n            );\n          }\n\n          // Add grand total\n          grandTotal += parseFloat(paymentRecord.amount);\n\n\n        } else if (paymentRecord.record_type == \"INSURANCE\" && paymentRecord.enabled == true) {\n          if (this.props.data.status == \"pending\" && this.props.data.data.is_checked == null || this.props.data.data.is_checked == false) {\n            components.push(\n              <td key={\"insurance-\" + paymentRecord.member_account_id} className=\"text-end\">\n                <strong>\n                  <a\n                    href=\"#\"\n                    onClick={this.handleTransactionClicked.bind(this, paymentRecord, member)}\n                  >\n                    {numberWithCommas(paymentRecord.amount)}\n                  </a>\n                </strong>\n              </td>\n            );\n          } else {\n            components.push(\n              <td key={\"insurance-\" + paymentRecord.member_account_id} className=\"text-end\">\n                {numberWithCommas(paymentRecord.amount)}\n              </td>\n            );\n          }\n\n          // Add grand total\n          grandTotal += parseFloat(paymentRecord.amount);\n\n\n\n\n        } else if (paymentRecord.record_type == \"WP\" && paymentRecord.enabled == true) {\n          if (this.props.data.status == \"pending\" && this.props.data.data.is_checked == null || this.props.data.data.is_checked == false) {\n            components.push(\n              <td key={\"WP-\" + paymentRecord.member_account_id} className=\"text-end\">\n                <strong>\n                  <a\n                    href=\"#\"\n                    onClick={this.handleTransactionClicked.bind(this, paymentRecord, member)}\n                  >\n                    {numberWithCommas(paymentRecord.amount)}\n                  </a>\n                </strong>\n              </td>\n            );\n          } else {\n            components.push(\n              <td key={\"WP-\" + paymentRecord.member_account_id} className=\"text-end\">\n                {numberWithCommas(paymentRecord.amount)}\n              </td>\n            );\n          }\n        } else {\n          components.push(\n            <td key={\"na-\" + member.id + \"-\" + j}>\n            </td>\n          )\n        }\n      }\n\n      components.push(\n        <td key={\"c-member-total-\" + member.id} className=\"text-end\">\n          <strong>\n            {numberWithCommas(this.props.data.data.records[i].total_collected)}\n          </strong>\n        </td>\n      );\n\n      components.push(\n        <td key={\"c-member-grand-total-lp\" + member.id} className=\"text-end\">\n          <strong>\n            {numberWithCommas(this.props.data.data.records[i].total_loan_payment)}\n          </strong>\n        </td>\n      );\n\n      components.push(\n        <td key={\"c-member-grand-total-\" + member.id} className=\"text-end\">\n          <strong>\n            {numberWithCommas(grandTotal)}\n          </strong>\n        </td>\n      );\n\n      records.push(\n        <tr key={\"member-row-\" + i} style={{ backgroundColor: (record.attendance ? '' : '') }}>\n          {components}\n        </tr>\n      );\n    }\n\n    return records;\n  }\n\n  buildTotals() {\n    var records = [];\n    var grandTotal = 0.00;\n\n    records.push(\n      <td key=\"total-empty-td-0\">\n      </td>\n    );\n\n    records.push(\n      <td key=\"total-label\">\n        <strong>\n          TOTAL\n        </strong>\n      </td>\n    );\n\n    var totals = this.props.data.data.totals;\n    for (var i = 0; i < totals.length; i++) {\n      if (totals[i].record_type == \"LOAN_PAYMENT\") {\n        grandTotal += parseFloat(totals[i].amount);\n\n        records.push(\n          <td key={\"total-loan-payment-\" + totals[i].key} className=\"text-end\">\n            <strong>\n              {numberWithCommas(totals[i].amount)}\n            </strong>\n          </td>\n        );\n      } else if (totals[i].record_type == \"SAVINGS\") {\n        grandTotal += parseFloat(totals[i].amount);\n\n        records.push(\n          <td key={\"total-savings-\" + totals[i].key} className=\"text-end\">\n            <strong>\n              {numberWithCommas(totals[i].amount)}\n            </strong>\n          </td>\n        );\n      } else if (totals[i].record_type == \"EQUITY\") {\n        grandTotal += parseFloat(totals[i].amount);\n\n        records.push(\n          <td key={\"total-equity-\" + totals[i].key} className=\"text-end\">\n            <strong>\n              {numberWithCommas(totals[i].amount)}\n            </strong>\n          </td>\n        );\n      } else if (totals[i].record_type == \"INSURANCE\") {\n        grandTotal += parseFloat(totals[i].amount);\n\n        records.push(\n          <td key={\"total-insurance-\" + totals[i].key} className=\"text-end\">\n            <strong>\n              {numberWithCommas(totals[i].amount)}\n            </strong>\n          </td>\n        );\n      } else if (totals[i].record_type == \"WP\") {\n        records.push(\n          <td key={\"wp-\" + totals[i].key} className=\"text-end\">\n            <strong>\n              {numberWithCommas(totals[i].amount)}\n            </strong>\n          </td>\n        );\n      }\n    }\n\n    records.push(\n      <td key=\"grand-total\" className=\"text-end\">\n        <div className=\"badge bg-success\">\n          <strong>\n            {numberWithCommas(this.props.data.data.total_collected)}\n          </strong>\n        </div>\n      </td>\n    )\n    records.push(\n      <td key=\"grand-total-loan-paymet-total\" className=\"text-end\">\n        <div className=\"badge bg-success\">\n          <strong>\n            {numberWithCommas(this.props.data.data.grand_total_loan_paymet)}\n          </strong>\n        </div>\n      </td>\n    )\n    // Grand Total\n    records.push(\n      <td key=\"grand-total-final\" className=\"text-end\">\n        <div className=\"badge bg-primary\">\n          <strong>\n            {numberWithCommas(grandTotal)}\n          </strong>\n        </div>\n      </td>\n    )\n\n    return (\n      <tr key={\"totals-row\"}>\n        {records}\n      </tr>\n    );\n  }\n\n  handleMemberClicked(member, memberRecords) {\n    var status = this.props.data.status;\n    if (status == \"pending\"){\n      this.setState({\n        modalArIsOpen: true,\n        currentMember: member,\n        memberRecords: memberRecords\n      });\n    }\n\n  }\n\n  handleTransactionClicked(paymentRecord, member) {\n    this.setState({\n      modalIsOpen: true,\n      currentTransaction: paymentRecord,\n      currentMember: member,\n      currentAmountValue: paymentRecord.amount\n    });\n  }\n\n  handleModalClose() {\n    var currentTransaction = this.state.currentTransaction;\n    currentTransaction.amount = this.state.currentAmountValue;\n\n    this.setState({\n      modalIsOpen: false,\n      currentTransaction: false,\n      currentMember: false,\n      currentAmountValue: false,\n      errors: false\n    });\n  }\n\n  handleInputAmountChanged(event) {\n    var currentTransaction = this.state.currentTransaction;\n    if (currentTransaction) {\n      currentTransaction.amount = event.target.value;\n      console.log(currentTransaction.amount);\n      this.setState({\n        currentTransaction: currentTransaction\n      });\n    }\n  }\n\n  handleModalInputChanged(event,index) {\n    console.log(index);\n  }\n  renderEquityTransaction() {\n    var memberRecords = this.state.memberRecords;\n    const renderRecords = [];\n\n    Array.from(this.state.memberRecords).forEach((record, index)=>{\n      (record.record_type == \"EQUITY\" && record.enabled == true) ? (\n        renderRecords.push(<div key={index} className='mb-3'>\n            <label className='form-label'>{record.account_subtype}</label>\n            <input\n              type=\"number\"\n              id = {record.account_subtype}\n              className=\"form-control\"\n              value={this.state.memberRecords[index].amount}\n              disabled={this.state.isLoading}\n              onChange={text=>{\n              this.setState(state =>({\n                ...state, \n                memberRecords: state.memberRecords.map((val, i)=>{\n                  if(i !== index) {return val}\n                  else return {...val, amount: text.target.value}\n                })\n              }))\n              \n            }}\n            \n            />\n          </div>)\n      ) : (<></>)\n    })\n    return (\n      <ul>\n        {renderRecords}\n      </ul>\n    )\n  }\n  renderTotalModal(){\n    var memberRecords = this.state.memberRecords\n    var modalTotal = this.state.modalTotal;\n    const renderRecords = [];\n\n    Array.from(memberRecords).forEach((record, index)=>{\n      if (record.record_type == \"LOAN_PAYMENT\" && record.enabled == true) {\n        modalTotal = modalTotal + parseFloat(this.state.memberRecords[index].amount)\n          \n      }\n      else if ((record.record_type == \"SAVINGS\" && record.enabled == true)){\n        modalTotal = modalTotal + parseFloat(this.state.memberRecords[index].amount)\n        \n      }\n      else if ((record.record_type == \"LOAN_PAYMENT\" && record.enabled == true)) {\n        modalTotal = modalTotal + parseFloat(this.state.memberRecords[index].amount)\n        \n      }\n      else if ((record.record_type == \"EQUITY\" && record.enabled == true)) {\n        modalTotal = modalTotal + parseFloat(this.state.memberRecords[index].amount)\n        \n      }\n      else if ((record.record_type == \"WP\" && record.enabled == true)) {\n        modalTotal = modalTotal - parseFloat(this.state.memberRecords[index].amount)\n      }\n      else if ((record.record_type == \"INSURANCE\" && record.enabled == true)) {\n        modalTotal = modalTotal + parseFloat(this.state.memberRecords[index].amount)\n      }\n    })\n\n    renderRecords.push(\n      <div>\n        <label className='form-label'> TOTAL CASH PAYMENT </label>\n        <input \n        type=\"number\"\n        className='form-control'\n        disabled='true'\n        value={modalTotal}\n        />\n      </div>\n\n    )\n\n    return (\n      <ul>\n        {renderRecords}\n      </ul>\n    )\n\n  }\n  renderWithdrawTransaction() {\n    var memberRecords = this.state.memberRecords;\n    const renderRecords = [];\n\n    Array.from(this.state.memberRecords).forEach((record, index)=>{\n      (record.record_type == \"WP\" && record.enabled == true) ? (\n        renderRecords.push(<div key={index} className='mb-3'>\n            <label className='form-label'>{record.account_subtype}</label>\n            <input\n              type=\"number\"\n              id = {record.account_subtype}\n              className=\"form-control\"\n              value={this.state.memberRecords[index].amount}\n              disabled={this.state.isLoading}\n              onChange={text=>{\n              this.setState(state =>({\n                ...state, \n                memberRecords: state.memberRecords.map((val, i)=>{\n                  if(i !== index) {return val}\n                  else return {...val, amount: text.target.value}\n                })\n              }))\n              \n            }}\n            \n            />\n          </div>)\n      ) : (<></>)\n    })\n\n    return (\n      <ul>\n        {renderRecords}\n      </ul>\n    )\n  }\n  renderInsuranceTransaction() {\n    var memberRecords = this.state.memberRecords;\n    const renderRecords = [];\n\n    Array.from(this.state.memberRecords).forEach((record, index)=>{\n      (record.record_type == \"INSURANCE\" && record.enabled == true) ? (\n        renderRecords.push(<div key={index} className='mb-3'>\n            <label className='form-label'>{record.account_subtype}</label>\n            <input\n              type=\"number\"\n              id = {record.account_subtype}\n              className=\"form-control\"\n              value={this.state.memberRecords[index].amount}\n              disabled={this.state.isLoading}\n              onChange={text=>{\n              this.setState(state =>({\n                ...state, \n                memberRecords: state.memberRecords.map((val, i)=>{\n                  if(i !== index) {return val}\n                  else return {...val, amount: text.target.value}\n                })\n              }))\n              \n            }}\n            \n            />\n          </div>)\n      ) : (<></>)\n    })\n    return (\n      <ul>\n        {renderRecords}\n      </ul>\n    )\n  }\n  renderSavingsTransaction() {\n    var memberRecords = this.state.memberRecords;\n    const renderRecords = [];\n\n    Array.from(this.state.memberRecords).forEach((record, index)=>{\n      (record.record_type == \"SAVINGS\" && record.enabled == true) ? (\n        renderRecords.push(<div key={index} className='mb-3'>\n            <label className='form-label'>{record.account_subtype}</label>\n            <input\n              type=\"number\"\n              id = {record.account_subtype}\n              className=\"form-control\"\n              value={this.state.memberRecords[index].amount}\n              disabled={this.state.isLoading}\n              onChange={text=>{\n              this.setState(state =>({\n                ...state, \n                memberRecords: state.memberRecords.map((val, i)=>{\n                  if(i !== index) {return val}\n                  else return {...val, amount: text.target.value}\n                })\n              }))\n              \n            }}\n            \n            />\n          </div>)\n      ) : (<></>)\n    })\n    return (\n      <ul>\n        {renderRecords}\n      </ul>\n    )\n  }\n  renderLoansTransaction() {\n\n    var memberRecords = this.state.memberRecords;\n    const renderRecords = [];\n\n    Array.from(this.state.memberRecords).forEach((record, index)=>{\n        (record.record_type == \"LOAN_PAYMENT\" && record.enabled == true) ? (\n          renderRecords.push(<div key={index} className='mb-3'>\n              <label className='form-label'>{record.loan_product.name}</label>\n              <input\n                type=\"number\"\n                id = {record.loan_product.name}\n                className=\"form-control\"\n                value={this.state.memberRecords[index].amount}\n                disabled={this.state.isLoading}\n                onChange={text=>{\n                this.setState(state =>({\n                  ...state, \n                  memberRecords: state.memberRecords.map((val, i)=>{\n                    if(i !== index) {return val}\n                    else return {...val, amount: text.target.value}\n                  })\n                }))\n              }}\n              \n              />\n            </div>)\n        ) : (<></>)\n      })\n      \n\n    return (\n      <ul>\n        {renderRecords}\n      </ul>\n    )\n  }\n\n  renderTransactionParticular() {\n    var currentTransaction = this.state.currentTransaction;\n    var currentMember = this.state.currentMember;\n    \n    if (currentTransaction.record_type == \"LOAN_PAYMENT\") {\n      return (\n        <h5>\n          Loan Product: &nbsp;\n          <span className=\"text-muted\">\n            {currentTransaction.loan_product.name}\n\n          </span>\n        </h5>\n      );\n    } else if (currentTransaction.record_type == \"SAVINGS\") {\n      return (\n        <h5>\n          Savings Deposit\n        </h5>\n      );\n    } else if (currentTransaction.record_type == \"INSURANCE\") {\n      return (\n        <h5>\n          Insurance: &nbsp;\n          <span className=\"text-muted\">\n            {currentTransaction.account_subtype}\n          </span>\n        </h5>\n      );\n    } else if (currentTransaction.record_type == \"WP\") {\n      return (\n        <h5>\n          Withdraw Payment\n        </h5>\n      );\n    } else {\n      return (\n        <div>\n        </div>\n      );\n    }\n  }\n\n  handleARModalConfirm() {\n\n    // FOR AR NUMBER\n    var currentMember = this.state.currentMember;\n    var memberRecords = this.state.memberRecords;\n    var context = this;\n\n    console.log(\"data\", this.state.memberRecords);\n\n    var data = {\n      current_member: currentMember,\n      id: this.props.id,\n      member_records: memberRecords,\n      authenticity_token: this.props.authenticityToken\n    }\n    \n\n    this.setState({\n      isLoading: true\n    });\n\n    $.ajax({\n      url: \"/api/v1/billings/modify_member_record\",\n      method: \"POST\",\n      data: data,\n      success: function (response) {\n        context.setState({\n          currentMember: false,\n          memberRecords: false,\n          modalArIsOpen: false,\n          errors: false,\n          isLoading: false\n        });\n\n        context.props.updateData(response);\n      },\n      error: function (response) {\n        var errors = JSON.parse(response.responseText).errors;\n        try {\n          context.setState({\n            isLoading: false,\n            errors: errors\n          });\n        } catch (err) {\n          console.log(response);\n          alert(\"Something went wrong!\");\n          context.setState({\n            isLoading: false\n          });\n        }\n      }\n    });\n\n  }\n\n  handleModalConfirm() {\n    var currentTransaction = this.state.currentTransaction;\n    var currentMember = this.state.currentMember;\n    var context = this;\n\n    var data = {\n      current_transaction: currentTransaction,\n      current_member: currentMember,\n      id: this.props.id,\n      authenticity_token: this.props.authenticityToken\n    };\n\n    console.log(\"data\", data);\n\n    this.setState({\n      isLoading: true\n    });\n\n    $.ajax({\n      url: \"/api/v1/billings/modify_transaction_record\",\n      method: \"POST\",\n      data: data,\n      success: function (response) {\n        context.setState({\n          currentTransaction: false,\n          currentAmountValue: false,\n          currentMember: false,\n          modalIsOpen: false,\n          isLoading: false,\n          errors: false\n        });\n\n        context.props.updateData(response);\n      },\n      error: function (response) {\n        try {\n          var errors = JSON.parse(response.responseText).errors;\n\n          context.setState({\n            isLoading: false,\n            errors: errors\n          });\n        } catch (err) {\n          console.log(response);\n          alert(\"Something went wrong!\");\n          context.setState({\n            isLoading: false\n          });\n        }\n      }\n    });\n  }\n\n  renderLoadingStatus() {\n    if (this.state.isLoading) {\n      return (\n        <div className=\"callout callout-info\">\n          Loading...\n        </div>\n      );\n    } else if (this.state.errors) {\n      return (\n        <ErrorDisplay\n          errors={this.state.errors}\n        />\n      );\n    }\n  }\n\n  render() {\n    var currentTransaction = this.state.currentTransaction;\n    var currentMember = this.state.currentMember;\n    const memberRecords = this.state.memberRecords;\n\n\n\n    return (\n      <>\n        <Modal\n          show={this.state.modalIsOpen}\n          onHide={this.handleModalClose.bind(this)}\n        >\n          <Modal.Header closeButton>\n            <Modal.Title>\n              {currentMember.fullName}\n            </Modal.Title>\n          </Modal.Header>\n\n          <Modal.Body>\n            <h5>\n              Member: &nbsp;\n              <span className=\"text-muted\">\n                {currentMember.full_name}\n              </span>\n            </h5>\n            <h5>\n              Transaction Type:  &nbsp;\n              <span className=\"text-muted\">\n                {currentTransaction.record_type}\n              </span>\n            </h5>\n            {this.renderTransactionParticular()}\n\n            <hr />\n\n            <input\n              type=\"number\"\n              className=\"form-control\"\n              value={currentTransaction.amount}\n              disabled={this.state.isLoading}\n              onChange={this.handleInputAmountChanged.bind(this)}\n            />\n\n            {this.renderLoadingStatus()}\n          </Modal.Body>\n\n          <Modal.Footer>\n            <Button\n              variant=\"primary\"\n              onClick={this.handleModalConfirm.bind(this)}\n              disabled={this.state.isLoading}\n            >\n              Confirm Change\n            </Button>\n            <Button\n              variant=\"secondary\"\n              onClick={this.handleModalClose.bind(this)}\n              disabled={this.state.isLoading}\n            >\n              Close\n            </Button>\n          </Modal.Footer>\n        </Modal>\n\n        <Modal\n          show={this.state.modalArIsOpen}\n          onHide={() => { this.setState({ modalArIsOpen: false }) }}\n        >\n          <Modal.Header closeButton>\n            <Modal.Title>\n              <a href={\"/members/\" + currentMember.id + \"/display\"} target='_blank'>\n                {currentMember.full_name}\n              </a>\n            </Modal.Title>\n          </Modal.Header>\n          <Modal.Body>\n            <h5>\n              AR Number:\n            </h5>\n            <input\n              type=\"number\"\n              className=\"form-control\"\n              value={currentMember.ar_number}\n              disabled={this.state.isLoading}\n              onChange={(event) => { currentMember.ar_number = event.target.value; this.setState({ currentMember: currentMember }); }}\n            />\n            <hr></hr>\n            {this.renderLoadingStatus()}\n            <div className='mb-3'>\n              <h6>Loan Transaction</h6>\n              {this.renderLoansTransaction()}\n            </div>\n            <hr></hr>\n            <div className='mb-3'>\n              <h6> Savings </h6>\n              {this.renderSavingsTransaction()}\n            </div>\n            <hr></hr>\n            <div className='mb-3'>\n              <h6>Equity Accounts</h6>\n              {this.renderEquityTransaction()}\n            </div>\n            <hr></hr>\n            <div className='mb-3'>\n              <h6>Insurance Accounts</h6>\n              {this.renderInsuranceTransaction()}\n            </div>\n            <div className='mb-3'>\n              <h6>Withdraw</h6>\n              {this.renderWithdrawTransaction()}\n            </div>\n            <div className='mb-3'>\n              <h6>TOTAL</h6>\n              {this.renderTotalModal()}\n            </div>\n          </Modal.Body>\n          <Modal.Footer>\n            <Button\n              variant=\"primary\"\n              disabled={this.state.isLoading}\n              onClick={this.handleARModalConfirm.bind(this)}\n            >\n              Save changes\n            </Button>\n            <Button\n              variant=\"secondary\"\n              onClick={() => { this.setState({ modalArIsOpen: false }) }}\n            >\n              Close\n            </Button>\n          </Modal.Footer>\n        </Modal>\n        <div className=\"tableFixHead\">\n          <table className=\"table table-bordered table-hover table-sm\">\n            <thead>\n              <tr>\n                {this.buildHeaders()}\n              </tr>\n            </thead>\n            <tbody>\n              {this.buildRecords()}\n            </tbody>\n            <tfoot>\n              {this.buildTotals()}\n            </tfoot>\n          </table>\n        </div>\n      </>\n    );\n  }\n}\n", "import React from 'react';\nimport $ from 'jquery';\nimport ReactTable from 'react-table';\nimport Toggle from 'react-toggle';\n\nimport {numberWithCommas} from '../utils/helpers';\nimport {customStyles} from '../utils/consts';\n\nimport ErrorDisplay from '../ErrorDisplay';\nimport Modal from 'react-bootstrap/Modal';\nimport Button from 'react-bootstrap/Button';\n\nexport default class BillingUITableTablet extends React.Component {\n  constructor(props) {\n    super(props);\n\n    this.state  = {\n      currentTransaction: false,\n      currentAmountValue: false,\n      currentMember: false,\n      modalIsOpen: false,\n      modalArIsOpen: false,\n      isLoading: false,\n      errors: false,\n      grandTotal: 0.00\n    };\n  }\n\n  buildHeaders() {\n    var headers = [];\n\n    headers.push(\n      <th key={\"h-member-attendance\"} style={{minWidth: \"100px\"}}>\n        <center>\n          <small>\n            Attend.\n          </small>\n          <br/>\n          <div className=\"btn-group\">\n            <div \n              className=\"btn btn-success btn-sm\"\n              onClick={this.handleToggleAllOn.bind(this)}\n            >\n              <span className=\"bi bi-check\"/>\n            </div>\n            <div \n              className=\"btn btn-danger btn-sm\"\n              onClick={this.handleToggleAllOff.bind(this)}\n            >\n              <span className=\"bi bi-x\"/>\n            </div>\n          </div>\n        </center>\n      </th>\n    );\n\n    headers.push(\n      <th key={\"h-member\"} style={{minWidth: \"300px\"}}>\n        Member\n      </th>\n    );\n\n    for(var i = 0; i < this.props.data.data.headers.length; i++) {\n      headers.push(\n        <th key={\"h-\" + i} style={{minWidth: \"100px\"}}>\n          <center>\n            <small>\n              {this.props.data.data.headers[i]}\n            </small>\n          </center>\n        </th>\n      );\n    }\n\n    headers.push(\n      <th  key={\"h-total\"} style={{minWidth: \"40px\"}}>\n        <center>\n          CP\n        </center>\n      </th>\n    );\n\n    headers.push(\n      <th  key={\"h-grand-total\"} style={{minWidth: \"40px\"}}>\n        <center>\n          TOTAL\n        </center>\n      </th>\n    );\n\n    return headers;\n  }\n\n  handleToggleAllOn() {\n    var context = this;\n\n    var data  = {\n      id: this.props.id,\n      authenticity_token: this.props.authenticityToken\n    };\n\n    $.ajax({\n      url: \"/api/v1/billings/toggle_attendance_on\",\n      method: 'POST',\n      data: data,\n      success: function(response) {\n        context.props.updateData(response);\n        window.location.reload();\n      },\n      error: function(response) {\n        alert(\"Error in toggling attendance (all on)\");\n      }\n    });\n  }\n\n  handleToggleAllOff() {\n    var context = this;\n\n    var data  = {\n      id: this.props.id,\n      authenticity_token: this.props.authenticityToken\n    };\n\n    $.ajax({\n      url: \"/api/v1/billings/toggle_attendance_off\",\n      method: 'POST',\n      data: data,\n      success: function(response) {\n        context.props.updateData(response);\n        window.location.reload();\n      },\n      error: function(response) {\n        alert(\"Error in toggling attendance (all off)\");\n      }\n    });\n  }\n\n  handleToggled(memberId) {\n    var context = this;\n\n    var data  = {\n      member_id: memberId,\n      id: this.props.id,\n      authenticity_token: this.props.authenticityToken\n    };\n\n    $.ajax({\n      url: \"/api/v1/billings/toggle_attendance\",\n      method: 'POST',\n      data: data,\n      success: function(response) {\n        context.props.updateData(response);\n      },\n      error: function(response) {\n        alert(\"Error in toggling attendance\");\n      }\n    });\n  }\n\n  fetchGrandTotal() {\n    var t = 0.00\n    for(var i = 0; i < this.props.data.data.records.length; i++) {\n      for(var j = 0; j < this.props.data.data.records[i].records.length; j++) {\n        var paymentRecord = this.props.data.data.records[i].records[j];\n        t += parseFloat(paymentRecord.amount);\n      }\n    }\n\n    return t;\n  }\n\n  renderARNumber(member) {\n    if(member.ar_number) {\n      return (\n        <>\n          <br/>\n          <small className=\"badge bg-secondary\">\n            AR: {member.ar_number}\n          </small>\n          <small className=\"badge bg-warning\">\n            OR: {member.or_number}\n          </small>\n        </>\n      )\n    } else {\n      return (\n        <></>\n      )\n    }\n  }\n\n\n  buildRecords() {\n    var records = [];\n\n    for(var i = 0; i < this.props.data.data.records.length; i++) {\n      var components  = [];\n      var record      = this.props.data.data.records[i];\n      var member      = record.member;\n      var grandTotal  = 0.00;\n      \n      if(this.props.data.status == \"pending\") {\n        components.push(\n          <td key={\"c-member-attnd-\" + member.id}>\n            <center>\n              <Toggle\n                defaultChecked={record.attendance}\n                onChange={this.handleToggled.bind(this, member.id)}\n              />\n            </center>\n          </td>\n        );\n      } else if(record.attendance) {\n        components.push(\n          <td key={\"c-member-attnd-\" + member.id}>\n            <center>\n              <div className=\"badge bg-success\">\n                <span className=\"bi bi-check\"/>\n              </div>\n            </center>\n          </td>\n        );\n      } else {\n        components.push(\n          <td key={\"c-member-attnd-\" + member.id}>\n            <center>\n              <div className=\"badge bg-danger\">\n                <span className=\"fa fa-minus\"/>\n              </div>\n            </center>\n          </td>\n        );\n      }\n\n      components.push(\n        <td key={\"c-member-\" + member.id}>\n          <strong>\n            <a onClick={this.handleMemberClicked.bind(this, this.props.data.data.records[i].records[i])}>\n              {this.props.data.data.records[i].member.full_name}\n            </a>\n            {this.renderARNumber(this.props.data.data.records[i].member)}\n          </strong>\n          <br/>\n          <small className=\"badge bg-info\">\n            {this.props.data.data.records[i].member.member_type}\n        \n          </small>\n        </td>\n      );\n\n      for(var j = 0; j < this.props.data.data.records[i].records.length; j++) {\n\n        var paymentRecord = this.props.data.data.records[i].records[j];\n\n        if(paymentRecord.record_type == \"LOAN_PAYMENT\" && paymentRecord.enabled == true) {\n          if(this.props.data.status == \"pending\"  && this.props.data.data.is_checked == null || this.props.data.data.is_checked == false) {\n            components.push(\n              <td key={\"loan-payment-\" + paymentRecord.loan_id} className=\"text-end\">\n                <strong>\n                  <a \n                    href=\"#\"\n                    onClick={this.handleTransactionClicked.bind(this, paymentRecord, member)}\n                  >\n                    {numberWithCommas(paymentRecord.amount)}\n                  </a>\n                </strong>\n              </td>\n            );\n          } else {\n            components.push(\n              <td key={\"loan-payment-\" + paymentRecord.loan_id} className=\"text-end\">\n                {numberWithCommas(paymentRecord.amount)}\n              </td>\n            );\n          }\n\n          // Add grand total\n          grandTotal += parseFloat(paymentRecord.amount);\n        } else if(paymentRecord.record_type == \"SAVINGS\" && paymentRecord.enabled == true) {\n          if(this.props.data.status == \"pending\" && this.props.data.data.is_checked == null || this.props.data.data.is_checked == false )  {\n            components.push(\n              <td key={\"savings-\" + paymentRecord.member_account_id} className=\"text-end\">\n                <strong>\n                  <a \n                    href=\"#\"\n                    onClick={this.handleTransactionClicked.bind(this, paymentRecord, member)}\n                  >\n                    {numberWithCommas(paymentRecord.amount)}\n                  </a>\n                </strong>\n              </td>\n            );\n          } else {\n            components.push(\n              <td key={\"savings-\" + paymentRecord.member_account_id} className=\"text-end\">\n                {numberWithCommas(paymentRecord.amount)}\n              </td>\n            );\n          }\n\n          // Add grand total\n          grandTotal += parseFloat(paymentRecord.amount);\n        \n        } else if(paymentRecord.record_type == \"EQUITY\" && paymentRecord.enabled == true) {\n          if(this.props.data.status == \"pending\" && this.props.data.data.is_checked == null || this.props.data.data.is_checked == false) {\n            components.push(\n              <td key={\"equity-\" + paymentRecord.member_account_id} className=\"text-end\">\n                <strong>\n                  <a \n                    href=\"#\"\n                    onClick={this.handleTransactionClicked.bind(this, paymentRecord, member)}\n                  >\n                    {numberWithCommas(paymentRecord.amount)}\n                  </a>\n                </strong>\n              </td>\n            );\n          } else {\n            components.push(\n              <td key={\"equity-\" + paymentRecord.member_account_id} className=\"text-end\">\n                {numberWithCommas(paymentRecord.amount)}\n              </td>\n            );\n          }\n\n          // Add grand total\n          grandTotal += parseFloat(paymentRecord.amount);\n\n\n        } else if(paymentRecord.record_type == \"INSURANCE\" && paymentRecord.enabled == true) {\n          if(this.props.data.status == \"pending\" && this.props.data.data.is_checked == null || this.props.data.data.is_checked == false) {\n            components.push(\n              <td key={\"insurance-\" + paymentRecord.member_account_id} className=\"text-end\">\n                <strong>\n                  <a \n                    href=\"#\"\n                    onClick={this.handleTransactionClicked.bind(this, paymentRecord, member)}\n                  >\n                    {numberWithCommas(paymentRecord.amount)}\n                  </a>\n                </strong>\n              </td>\n            );\n          } else {\n            components.push(\n              <td key={\"insurance-\" + paymentRecord.member_account_id} className=\"text-end\">\n                {numberWithCommas(paymentRecord.amount)}\n              </td>\n            );\n          }\n\n          // Add grand total\n          grandTotal += parseFloat(paymentRecord.amount);\n\n\n\n\n        } else if(paymentRecord.record_type == \"WP\" && paymentRecord.enabled == true) {\n          if(this.props.data.status == \"pending\"  && this.props.data.data.is_checked == null || this.props.data.data.is_checked == false) {\n            components.push(\n              <td key={\"WP-\" + paymentRecord.member_account_id} className=\"text-end\">\n                <strong>\n                  <a \n                    href=\"#\"\n                    onClick={this.handleTransactionClicked.bind(this, paymentRecord, member)}\n                  >\n                    {numberWithCommas(paymentRecord.amount)}\n                  </a>\n                </strong>\n              </td>\n            );\n          } else {\n            components.push(\n              <td key={\"WP-\" + paymentRecord.member_account_id} className=\"text-end\">\n                {numberWithCommas(paymentRecord.amount)}\n              </td>\n            );\n          }\n        } else {\n          components.push(\n            <td key={\"na-\" + member.id + \"-\" + j}>\n            </td>\n          )\n        }\n      }\n\n      components.push(\n        <td key={\"c-member-total-\" + member.id} className=\"text-end\">\n          <strong>\n            {numberWithCommas(this.props.data.data.records[i].total_collected)}\n          </strong>\n        </td>\n      );\n\n      components.push(\n        <td key={\"c-member-grand-total-\" + member.id} className=\"text-end\">\n          <strong>\n            {numberWithCommas(grandTotal)}\n          </strong>\n        </td>\n      );\n\n      records.push(\n        <tr key={\"member-row-\" + i} style={{ backgroundColor: (record.attendance ? '' : '') }}>\n          {components}\n        </tr>\n      );\n    }\n\n    return records;\n  }\n\n  buildTotals() {\n    var records     = [];\n    var grandTotal  = 0.00;\n\n    records.push(\n      <td key=\"total-empty-td-0\">\n      </td>\n    );\n\n    records.push(\n      <td key=\"total-label\">\n        <strong>\n          TOTAL\n        </strong>\n      </td>\n    );\n\n    var totals  = this.props.data.data.totals;\n    for(var i = 0; i < totals.length; i++) {\n      if(totals[i].record_type == \"LOAN_PAYMENT\") {\n        grandTotal += parseFloat(totals[i].amount);\n\n        records.push(\n          <td key={\"total-loan-payment-\" + totals[i].key} className=\"text-end\">\n            <strong>\n              {numberWithCommas(totals[i].amount)}\n            </strong>\n          </td>\n        );\n      } else if(totals[i].record_type == \"SAVINGS\") {\n        grandTotal += parseFloat(totals[i].amount);\n\n        records.push(\n          <td key={\"total-savings-\" + totals[i].key} className=\"text-end\">\n            <strong>\n              {numberWithCommas(totals[i].amount)}\n            </strong>\n          </td>\n        );\n      } else if(totals[i].record_type == \"EQUITY\") {\n        grandTotal += parseFloat(totals[i].amount);\n\n        records.push(\n          <td key={\"total-equity-\" + totals[i].key} className=\"text-end\">\n            <strong>\n              {numberWithCommas(totals[i].amount)}\n            </strong>\n          </td>\n        );\n      } else if(totals[i].record_type == \"INSURANCE\") {\n        grandTotal += parseFloat(totals[i].amount);\n\n        records.push(\n          <td key={\"total-insurance-\" + totals[i].key} className=\"text-end\">\n            <strong>\n              {numberWithCommas(totals[i].amount)}\n            </strong>\n          </td>\n        );\n      } else if(totals[i].record_type == \"WP\") {\n        records.push(\n          <td key={\"wp-\" + totals[i].key} className=\"text-end\">\n            <strong>\n              {numberWithCommas(totals[i].amount)}\n            </strong>\n          </td>\n        );\n      }\n    }\n\n    records.push(\n      <td key=\"grand-total\" className=\"text-end\">\n        <div className=\"badge bg-success\">\n          <strong>\n            {numberWithCommas(this.props.data.data.total_collected)}\n          </strong>\n        </div>\n      </td>\n    )\n\n    // Grand Total\n    records.push(\n      <td key=\"grand-total-final\" className=\"text-end\">\n        <div className=\"badge bg-primary\">\n          <strong>\n            {numberWithCommas(grandTotal)}\n          </strong>\n        </div>\n      </td>\n    )\n\n    return (\n      <tr key={\"totals-row\"}>\n        {records}\n      </tr>\n    );\n  }\n\n  handleMemberClicked(currentTransaction) {\n    console.log(currentTransaction);\n    this.setState({\n      modalArIsOpen: true,\n      currentTransaction: currentTransaction\n    })\n  }\n\n  handleTransactionClicked(paymentRecord, member) {\n    this.setState({\n      modalIsOpen: true,\n      currentTransaction: paymentRecord,\n      currentMember: member,\n      currentAmountValue: paymentRecord.amount\n    });\n  }\n\n  handleModalClose() {\n    var currentTransaction    = this.state.currentTransaction;\n    currentTransaction.amount = this.state.currentAmountValue;\n\n    this.setState({\n      modalIsOpen: false,\n      currentTransaction: false,\n      currentMember: false,\n      currentAmountValue: false,\n      errors: false\n    });\n  }\n\n  handleInputAmountChanged(event) {\n    var currentTransaction  = this.state.currentTransaction;\n\n    if(currentTransaction) {\n      currentTransaction.amount = event.target.value;\n\n      this.setState({\n        currentTransaction: currentTransaction\n      });\n    }\n  }\n\n  renderTransactionParticular() {\n    var currentTransaction  = this.state.currentTransaction;\n    var currentMember       = this.state.currentMember;\n\n    if(currentTransaction.record_type == \"LOAN_PAYMENT\") {\n      return (\n        <h5>\n          Loan Product: &nbsp;\n          <span className=\"text-muted\">\n            {currentTransaction.loan_product.name}\n          </span>\n        </h5>\n      );\n    } else if(currentTransaction.record_type == \"SAVINGS\") {\n      return (\n        <h5>\n          Savings Deposit\n        </h5>\n      );\n    } else if(currentTransaction.record_type == \"INSURANCE\") {\n      return (\n        <h5>\n          Insurance: &nbsp;\n          <span className=\"text-muted\">\n            {currentTransaction.account_subtype} \n          </span>\n        </h5>\n      );\n    } else if(currentTransaction.record_type == \"WP\") {\n      return (\n        <h5>\n          Withdraw Payment\n        </h5>\n      );\n    } else {\n      return (\n        <div>\n        </div>\n      );\n    }\n  }\n\n  handleARModalConfirm() {\n    var currentMember       = this.state.currentMember;\n    var context             = this;\n\n    var data = {\n      current_member: currentMember,\n      id: this.props.id,\n      authenticity_token: this.props.authenticityToken\n    }\n\n    this.setState({\n      isLoading: true\n    });\n    \n    $.ajax({\n      url: \"/api/v1/billings/modify_member_record\",\n      method: \"POST\",\n      data: data,\n      success: function(response) {\n        context.setState({\n          currentMember: false,\n          modalArIsOpen: false,\n          isLoading: false\n        });\n\n        context.props.updateData(response);\n      },\n      error: function(response) {\n        try {\n          context.setState({\n            isLoading: false,\n            errors: [\"Something went wrong\"]\n          });\n        } catch(err) {\n          console.log(response);\n          alert(\"Something went wrong!\");\n        }\n      }\n    });\n  }\n\n  handleModalConfirm() {\n    var currentTransaction  = this.state.currentTransaction;\n    var currentMember       = this.state.currentMember;\n    var context             = this;\n\n    var data  = {\n      current_transaction: currentTransaction,\n      current_member: currentMember,\n      id: this.props.id,\n      authenticity_token: this.props.authenticityToken\n    };\n\n    this.setState({\n      isLoading: true\n    });\n    \n    $.ajax({\n      url: \"/api/v1/billings/modify_transaction_record\",\n      method: \"POST\",\n      data: data,\n      success: function(response) {\n        //window.location.reload();\n        context.setState({\n          currentTransaction: false,\n          currentAmountValue: false,\n          currentMember: false,\n          modalIsOpen: false,\n          isLoading: false,\n          errors: false\n        });\n\n        context.props.updateData(response);\n      },\n      error: function(response) {\n        try {\n          var errors  = JSON.parse(response.responseText).errors;\n\n          context.setState({\n            isLoading: false,\n            errors: errors\n          });\n        } catch(err) {\n          console.log(response);\n          alert(\"Something went wrong!\");\n          context.setState({\n            isLoading: false\n          });\n        }\n      }\n    });\n  }\n\n  renderLoadingStatus() {\n    if(this.state.isLoading) {\n      return  (\n        <div className=\"callout callout-info\">\n          Loading...\n        </div>\n      );\n    } else if(this.state.errors) {\n      return (\n        <ErrorDisplay\n          errors={this.state.errors}\n        />\n      );\n    }\n  }\n\n  render() {\n    var currentTransaction  = this.state.currentTransaction;\n    var currentMember       = this.state.currentMember;\n\n    return (\n      <>\n        <Modal\n          show={this.state.modalIsOpen}\n          onHide={this.handleModalClose.bind(this)}\n        >\n          <Modal.Header closeButton>\n            <Modal.Title>\n              {currentMember.fullName}\n            </Modal.Title>\n          </Modal.Header>\n\n          <Modal.Body>\n            <h5>\n              Member: &nbsp;\n              <span className=\"text-muted\">\n                {currentMember.full_name}\n              </span>\n            </h5>\n            <h5>\n              Transaction Type:  &nbsp;\n              <span className=\"text-muted\">\n                {currentTransaction.record_type}\n              </span>\n            </h5>\n            {this.renderTransactionParticular()}\n\n            <hr/>\n\n            <input\n              type=\"number\"\n              className=\"form-control\"\n              value={currentTransaction.amount}\n              disabled={this.state.isLoading}\n              onChange={this.handleInputAmountChanged.bind(this)}\n            />\n\n            {this.renderLoadingStatus()}\n          </Modal.Body>\n\n          <Modal.Footer>\n            <Button \n              variant=\"primary\"\n              onClick={this.handleModalConfirm.bind(this)}\n              disabled={this.state.isLoading}\n            >\n              Confirm Change\n            </Button>\n            <Button\n              variant=\"secondary\"\n              onClick={this.handleModalClose.bind(this)}\n              disabled={this.state.isLoading}\n            >\n              Close\n            </Button>\n          </Modal.Footer>\n        </Modal>\n\n        <Modal\n          show={this.state.modalArIsOpen}\n          onHide={() => { this.setState({ modalArIsOpen: false }) }}\n        >\n          <Modal.Header closeButton>\n            <Modal.Title>\n              {currentMember.full_name}\n            </Modal.Title>\n          </Modal.Header>\n\n          <Modal.Body>\n            <h5>\n              AR Number: \n              jef\n            </h5>\n            <input\n              type=\"number\"\n              className=\"form-control\"\n              value={currentMember.ar_number}\n              disabled={this.state.isLoading}\n              onChange={(event) => { currentMember.ar_number = event.target.value; this.setState({ currentMember: currentMember }); }}\n            />\n          </Modal.Body>\n\n          <Modal.Footer>\n            <Button \n              variant=\"primary\"\n              disabled={this.state.isLoading}\n              onClick={this.handleARModalConfirm.bind(this)}\n            >\n              Save changes\n            </Button>\n            <Button \n              variant=\"secondary\"\n              onClick={() => { this.setState({ modalArIsOpen: false }) }}\n            >\n              Close\n            </Button>\n          </Modal.Footer>\n        </Modal>\n        <div className=\"table-responsive\">\n          <table className=\"table table-bordered table-hover table-sm tableFixHead\">\n            <thead>\n              <tr>\n                {this.buildHeaders()}\n              </tr>\n            </thead>\n            <tbody>\n              {this.buildRecords()}\n            </tbody>\n            <tfoot>\n              {this.buildTotals()}\n            </tfoot>\n          </table>\n        </div>\n      </>\n    );\n  }\n}\n", "import React from 'react';\nimport $ from 'jquery';\nimport moment from 'moment';\n\nimport SkCubeLoading from '../SkCubeLoading';\nimport MembershipPaymentCollectionUITable from './MembershipPaymentCollectionUITable';\nimport AccountingEntryPreview from '../accounting/AccountingEntryPreview';\nimport AddRecord from './AddRecord';\nimport {numberWithCommas} from '../utils/helpers';\n\nexport default class MembershipPaymentCollectionUIComponent extends React.Component {\n  constructor(props) {\n    super(props);\n\n    this.state  = {\n      isLoading: true,\n      isSaving: false,\n      data: false\n    };\n  }\n\n  componentDidMount() {\n    this.fetchMembershipPaymentCollectionData();\n  }\n\n  fetchMembershipPaymentCollectionData() {\n    var context = this;\n\n    $.ajax({\n      url: \"/api/v1/membership_payment_collections/fetch\",\n      method: 'GET',\n      data: {\n        id: this.props.id\n      },\n      success: function(response) {\n        context.setState({\n          isLoading: false,\n          data: response\n        });\n      },\n      error: function(response) {\n        console.log(response);\n        alert(\"Error in fetching membership_payment_collection\");\n      }\n    });\n  }\n\n  updateData(data) {\n    this.setState({\n      data: data\n    });\n  }\n\n  handleRemoveClicked(index) {\n    alert(\"Not implemented for this module\");\n  }\n\n  saveParticular() {\n    var context       = this;\n    var data          = context.state.data;\n    var newParticular = data.data.accounting_entry.particular;\n\n    context.setState({\n      isSaving: true\n    });\n\n    $.ajax({\n      url: \"/api/v1/membership_payment_collections/update_particular\",\n      method: 'POST',\n      data: {\n        id: context.state.data.id,\n        authenticity_token: context.props.authenticityToken,\n        particular: newParticular\n      },\n      success: function(response) {\n        context.setState({\n          isSaving: false\n        });\n      },\n      error: function(response) {\n        alert(\"Error in updating particular\");\n      }\n    });\n  }\n\n  saveOrNumber() {\n    var context     = this;\n    var data        = context.state.data;\n    var newOrNumber = data.data.accounting_entry.data.or_number;\n\n    context.setState({\n      isSaving: true\n    });\n\n    $.ajax({\n      url: \"/api/v1/membership_payment_collections/update_or_number\",\n      method: 'POST',\n      data: {\n        id: context.state.data.id,\n        authenticity_token: context.props.authenticityToken,\n        or_number: newOrNumber\n      },\n      success: function(response) {\n        context.setState({\n          isSaving: false\n        });\n      },\n      error: function(response) {\n        alert(\"Error in updating or number\");\n      }\n    });\n  }\n  saveSiNumber() {\n    var context     = this;\n    var data        = context.state.data;\n    var newSiNumber = data.data.accounting_entry.data.si_number;\n\n    context.setState({\n      isSaving: true\n    });\n\n    $.ajax({\n      url: \"/api/v1/membership_payment_collections/update_si_number\",\n      method: 'POST',\n      si_number: newSiNumber,\n      data: {\n        id: context.state.data.id,\n        authenticity_token: context.props.authenticityToken,\n        si_number: newSiNumber\n      },\n      success: function(response) {\n        context.setState({\n          isSaving: false\n        });\n      },\n      error: function(response) {\n        alert(\"Error in updating or number\");\n      }\n    });\n  }\n  modifyOrNumber(event) {\n    var context     = this;\n    var newOrNumber = event.target.value;\n    var data        = context.state.data;\n\n    data.data.or_number                       = newOrNumber;\n    data.data.accounting_entry.data.or_number = newOrNumber;\n\n    context.setState({\n      data: data\n    });\n  }\n  modifySiNumber(event) {\n    var context     = this;\n    var newSiNumber = event.target.value;\n    var data        = context.state.data;\n\n    data.data.si_number                        = newSiNumber;\n    data.data.accounting_entry.data.si_number   = newSiNumber;\n\n    context.setState({\n      data: data\n    });\n  }\n  modifyParticular(event) {\n    var context       = this;\n    var newParticular = event.target.value;\n    var data          = context.state.data;\n\n    data.data.accounting_entry.particular = newParticular;\n\n    context.setState({\n      data: data\n    });\n  }\n\n  saveArNumber() {\n    var context     = this;\n    var data        = context.state.data;\n    var newArNumber = data.data.accounting_entry.data.ar_number;\n\n    context.setState({\n      isSaving: true\n    });\n\n    $.ajax({\n      url: \"/api/v1/membership_payment_collections/update_ar_number\",\n      method: 'POST',\n      data: {\n        id: context.state.data.id,\n        authenticity_token: context.props.authenticityToken,\n        ar_number: newArNumber\n      },\n      success: function(response) {\n        context.setState({\n          isSaving: false\n        });\n      },\n      error: function(response) {\n        alert(\"Error in updating or number\");\n      }\n    });\n  }\n\n  modifyArNumber(event) {\n    var context     = this;\n    var newArNumber = event.target.value;\n    var data        = context.state.data;\n\n    data.data.ar_number                       = newArNumber;\n    data.data.accounting_entry.data.ar_number = newArNumber;\n\n    context.setState({\n      data: data\n    });\n  }\n\n  renderParticular() {\n    var particular  = this.state.data.data.accounting_entry.particular;\n\n    if(this.state.data.status == \"pending\") {\n      return  (\n        <div className=\"row\">\n          <div className=\"col-md-10\">\n            <input \n              value={particular} \n              onChange={this.modifyParticular.bind(this)} \n              disabled={this.state.isSaving}\n              className=\"form-control\"\n            />\n          </div>\n          <div className=\"col-md-2\">\n            <button\n              className=\"btn btn-info btn-block\"\n              disabled={this.state.isSaving}\n              onClick={this.saveParticular.bind(this)}\n            >\n              <span className=\"bi bi-check\"/>\n              Save\n            </button>\n          </div>\n        </div>\n      );\n    } else {\n      return particular;\n    }\n  }\n\n  renderOrNumber() {\n    var orNumber  = this.state.data.data.or_number;\n\n    if(this.state.data.status == \"pending\") {\n      return  (\n        <div className=\"row\">\n          <div className=\"col-md-10\">\n            <input \n              value={orNumber} \n              onChange={this.modifyOrNumber.bind(this)} \n              disabled={this.state.isSaving}\n              className=\"form-control\"\n            />\n          </div>\n          <div className=\"col-md-2\">\n            <button\n              className=\"btn btn-info btn-block\"\n              disabled={this.state.isSaving}\n              onClick={this.saveOrNumber.bind(this)}\n            >\n              <span className=\"bi bi-check\"/>\n              Save\n            </button>\n          </div>\n        </div>\n      );\n    } else {\n      return this.state.data.data.or_number;\n    }\n  }\n  renderSiNumber() {\n    var siNumber  = this.state.data.data.si_number;\n\n    if(this.state.data.status == \"pending\") {\n      return  (\n        <div className=\"row\">\n          <div className=\"col-md-10\">\n            <input \n              value={siNumber} \n              onChange={this.modifySiNumber.bind(this)} \n              disabled={this.state.isSaving}\n              className=\"form-control\"\n            />\n          </div>\n          <div className=\"col-md-2\">\n            <button\n              className=\"btn btn-info btn-block\"\n              disabled={this.state.isSaving}\n              onClick={this.saveSiNumber.bind(this)}\n            >\n              <span className=\"bi bi-check\"/>\n              Save\n            </button>\n          </div>\n        </div>\n      );\n    } else {\n      return this.state.data.data.si_number;\n    }\n    /*return this.state.data.data.si_number;*/\n  }\n  renderArNumber() {\n    var arNumber  = this.state.data.data.ar_number;\n    if(this.state.data.status == \"pending\") {\n      return  (\n        <div className=\"row\">\n          <div className=\"col-md-10\">\n            <input \n              value={arNumber} \n              onChange={this.modifyArNumber.bind(this)} \n              disabled={this.state.isSaving}\n              className=\"form-control\"\n            />\n          </div>\n          <div className=\"col-md-2\">\n            <button\n              className=\"btn btn-info btn-block\"\n              disabled={this.state.isSaving}\n              onClick={this.saveArNumber.bind(this)}\n            >\n              <span className=\"bi bi-check\"/>\n              Save\n            </button>\n          </div>\n        </div>\n      );\n    } else {\n      return this.state.data.data.ar_number;\n    }\n  }\n\n  render() {\n    if(this.state.isLoading) {\n      return (\n        <div>\n          <SkCubeLoading/>\n        </div>\n      );\n    } else {\n      var accounting_entry_data = this.state.data.data.accounting_entry;\n      console.log(accounting_entry_data);\n\n      return (\n        <div>\n          <table className=\"table table-sm table-bordered\">\n            <tbody>\n              <tr>\n                <th>\n                  Total Collected:\n                </th>\n                <td className=\"text-end\">\n                  <strong>\n                    {numberWithCommas(this.state.data.data.total_collected)}\n                  </strong>\n                </td>\n              </tr>\n              <tr>\n                <th>\n                  OR Number:\n                </th>\n                <td className=\"text-end\">\n                  {this.renderOrNumber()}\n                </td>\n              </tr>\n              <tr>\n                <th>\n                  Service Invoice:\n                </th>\n                <td className=\"text-end\">\n                  {this.renderSiNumber()}\n                </td>\n              </tr>\n              <tr>\n                <th>\n                  AR Number:\n                </th>\n                <td className=\"text-end\">\n                  {this.renderArNumber()}\n                </td>\n              </tr>\n              <tr>\n                <th>\n                  Particular:\n                </th>\n                <td className=\"text-end\">\n                  {this.renderParticular()}\n                </td>\n              </tr>\n            </tbody>\n          </table>\n          <AddRecord\n            data={this.state.data}\n            authenticityToken={this.props.authenticityToken}\n          />\n          <hr/>\n          <MembershipPaymentCollectionUITable\n            id={this.props.id}\n            data={this.state.data}\n            updateData={this.updateData.bind(this)}\n            authenticityToken={this.props.authenticityToken}\n          />\n          <hr/>\n          <h6>\n            Accounting Entry\n          </h6>\n          <AccountingEntryPreview\n            book={accounting_entry_data.book}\n            particular={accounting_entry_data.particular}\n            datePrepared={accounting_entry_data.date_prepared}\n            referenceNumber={accounting_entry_data.reference_number}\n            approved_by={accounting_entry_data.approved_by}\n            branch={accounting_entry_data.branch_name}\n            balanced={true}\n            status={accounting_entry_data.status}\n            journalEntries={accounting_entry_data.journal_entries}\n            isLoading={this.state.isLoading}\n            handleRemoveClicked={this.handleRemoveClicked.bind(this)}\n            data={accounting_entry_data.data}\n          />\n        </div>\n      );\n    }\n  }\n}\n", "import React from 'react';\nimport ReactTable from 'react-table';\nimport Modal from 'react-modal';\nimport Toggle from 'react-toggle';\nimport $ from 'jquery';\n\nimport {numberWithCommas} from '../utils/helpers';\nimport {customStyles} from '../utils/consts';\n\nimport ErrorDisplay from '../ErrorDisplay';\n\nexport default class MembershipPaymentCollectionUITable extends React.Component {\n  constructor(props) {\n    super(props);\n\n    this.state  = {\n      currentTransaction: false,\n      currentAmountValue: false,\n      currentMember: false,\n      modalIsOpen: false,\n      isLoading: false,\n      errors: false\n    };\n  }\n\n  buildHeaders() {\n    var headers = [];\n\n    headers.push(\n      <th key={\"h-member\"} style={{minWidth: \"300px\"}}>\n        Member\n      </th>\n    );\n\n    for(var i = 0; i < this.props.data.data.headers.length; i++) {\n      headers.push(\n        <th key={\"h-\" + i} style={{minWidth: \"100px\"}}>\n          <center>\n            <small>\n              {this.props.data.data.headers[i]}\n            </small>\n          </center>\n        </th>\n      );\n    }\n\n    headers.push(\n      <th  key={\"h-total\"} style={{minWidth: \"40px\"}}>\n        <center>\n          TOTAL\n        </center>\n      </th>\n    );\n\n    return headers;\n  }\n\n  handleRemoveRecord(id) {\n    var context = this;\n\n    this.setState({\n      isLoading: true\n    });\n\n    $.ajax({\n      url: \"/api/v1/membership_payment_collections/remove_member\",\n      method: 'POST',\n      data: {\n        authenticity_token: context.props.authenticityToken,\n        member_id: id,\n        id: context.props.data.id\n      },\n      success: function(response) {\n        context.setState({\n          errors: false,\n          message: \"Success! Redirecting...\"\n        });\n\n        window.location.reload();\n      },\n      error: function(response) {\n        try {\n          console.log(response);\n          context.setState({\n            errors: JSON.parse(response.responseText),\n            isLoading: false,\n            message: \"Error\"\n          });\n        } catch(err) {\n          context.setState({\n            errors: false,\n            message: \"Error!\",\n            isLoading: false\n          });\n        }\n      }\n    });\n  }\n\n  buildRecords() {\n    var records = [];\n\n    for(var i = 0; i < this.props.data.data.records.length; i++) {\n      var components  = [];\n      var record      = this.props.data.data.records[i];\n      var member      = record.member;\n\n      var btnDelete = \"\";\n      if(this.props.data.status == \"pending\") {\n        btnDelete = (\n          <button\n            className=\"btn btn-danger btn-sm\"\n            onClick={this.handleRemoveRecord.bind(this, member.id)}\n            disabled={this.state.isLoading}\n          >\n            <span className=\"bi bi-x\"/>\n          </button>\n        );\n      }\n\n      components.push(\n        <td key={\"c-member-\" + member.id}>\n          {btnDelete}\n          <strong>\n            <a href={\"/members/\" + member.id + \"/display\"} target=\"_blank\">\n              {this.props.data.data.records[i].member.full_name}\n            </a>\n          </strong>\n        </td>\n      );\n\n      for(var j = 0; j < this.props.data.data.records[i].records.length; j++) {\n        var paymentRecord = this.props.data.data.records[i].records[j];\n        if(paymentRecord.record_type == \"ID\" && paymentRecord.enabled == true) {\n          if(this.props.data.status == \"pending\") {\n            components.push(\n              <td key={\"id-payment\"} className=\"text-end\">\n                <strong>\n                  <a \n                    href=\"#\"\n                    onClick={this.handleTransactionClicked.bind(this, paymentRecord, member)}\n                  >\n                    {numberWithCommas(paymentRecord.amount)}\n                  </a>\n                </strong>\n              </td>\n            );\n          } else {\n            components.push(\n              <td key={\"id-payment\"} className=\"text-end\">\n                {numberWithCommas(paymentRecord.amount)}\n              </td>\n            );\n          }\n        } else if(paymentRecord.record_type == \"MEMBERSHIP_PAYMENT\" && paymentRecord.enabled == true) {\n          if(this.props.data.status == \"pending\") {\n            components.push(\n              <td key={\"membership-payment-\" + paymentRecord.account_subtype} className=\"text-end\">\n                <strong>\n                  <a \n                    href=\"#\"\n                    onClick={this.handleTransactionClicked.bind(this, paymentRecord, member)}\n                  >\n                    {numberWithCommas(paymentRecord.amount)}\n                  </a>\n                </strong>\n              </td>\n            );\n          } else {\n            components.push(\n              <td key={\"membership-payment-\" + paymentRecord.account_subtype} className=\"text-end\">\n                {numberWithCommas(paymentRecord.amount)}\n              </td>\n            );\n          }\n        } else if(paymentRecord.record_type == \"EQUITY\" && paymentRecord.enabled == true) {\n          if(this.props.data.status == \"pending\") {\n            components.push(\n              <td key={\"equity-\" + paymentRecord.member_account_id} className=\"text-end\">\n                <strong>\n                  <a \n                    href=\"#\"\n                    onClick={this.handleTransactionClicked.bind(this, paymentRecord, member)}\n                  >\n                    {numberWithCommas(paymentRecord.amount)}\n                  </a>\n                </strong>\n              </td>\n            );\n          } else {\n            components.push(\n              <td key={\"equity-\" + paymentRecord.member_account_id} className=\"text-end\">\n                {numberWithCommas(paymentRecord.amount)}\n              </td>\n            );\n          }\n        } else if(paymentRecord.record_type == \"INSURANCE\" && paymentRecord.enabled == true) {\n          if(this.props.data.status == \"pending\") {\n            components.push(\n              <td key={\"insurance-\" + paymentRecord.member_account_id} className=\"text-end\">\n                <strong>\n                  <a\n                    href=\"#\"\n                    onClick={this.handleTransactionClicked.bind(this, paymentRecord, member)}\n                  >\n                    {numberWithCommas(paymentRecord.amount)}\n                  </a>\n                </strong>\n              </td>\n            );\n          } else {\n            components.push(\n              <td key={\"insurance-\" + paymentRecord.member_account_id} className=\"text-end\">\n                {numberWithCommas(paymentRecord.amount)}\n              </td>\n            );\n          }\n        } else if(paymentRecord.record_type == \"SAVINGS\" && paymentRecord.enabled == true) {\n          if(this.props.data.status == \"pending\") {\n            components.push(\n              <td key={\"savings-\" + paymentRecord.member_account_id} className=\"text-end\">\n                <strong>\n                  <a \n                    href=\"#\"\n                    onClick={this.handleTransactionClicked.bind(this, paymentRecord, member)}\n                  >\n                    {numberWithCommas(paymentRecord.amount)}\n                  </a>\n                </strong>\n              </td>\n            );\n          } else {\n            components.push(\n              <td key={\"savings-\" + paymentRecord.member_account_id} className=\"text-end\">\n                {numberWithCommas(paymentRecord.amount)}\n              </td>\n            );\n          }\n        } else {\n          components.push(\n            <td key={\"na-\" + member.id + \"-\" + j}>\n            </td>\n          )\n        }\n      }\n\n      components.push(\n        <td key={\"c-member-total-\" + member.id} className=\"text-end\">\n          <strong>\n            {numberWithCommas(this.props.data.data.records[i].total_collected)}\n          </strong>\n        </td>\n      );\n\n      records.push(\n        <tr key={\"member-row-\" + i}>\n          {components}\n        </tr>\n      );\n    }\n\n    return records;\n  }\n\n  buildTotals() {\n    var records = [];\n\n    records.push(\n      <td key=\"total-label\">\n        <strong>\n          TOTAL\n        </strong>\n      </td>\n    );\n\n    var totals  = this.props.data.data.totals;\n    for(var i = 0; i < totals.length; i++) {\n      if(totals[i].record_type == \"ID\") {\n        records.push(\n          <td key={\"total-id-payment\"} className=\"text-end\">\n            <strong>\n              {numberWithCommas(totals[i].amount)}\n            </strong>\n          </td>\n        );\n      } else if(totals[i].record_type == \"MEMBERSHIP_PAYMENT\") {\n        records.push(\n          <td key={\"total-membership-payment-\" + totals[i].key} className=\"text-end\">\n            <strong>\n              {numberWithCommas(totals[i].amount)}\n            </strong>\n          </td>\n        );\n      } else if(totals[i].record_type == \"EQUITY\") {\n        records.push(\n          <td key={\"total-equity-\" + totals[i].key} className=\"text-end\">\n            <strong>\n              {numberWithCommas(totals[i].amount)}\n            </strong>\n          </td>\n        );\n      } else if(totals[i].record_type == \"INSURANCE\") {\n        records.push(\n          <td key={\"total-insurance-\" + totals[i].key} className=\"text-end\">\n            <strong>\n              {numberWithCommas(totals[i].amount)}\n            </strong>\n          </td>\n        );\n      } else if(totals[i].record_type == \"SAVINGS\") {\n        records.push(\n          <td key={\"total-savings-\" + i} className=\"text-end\">\n            <strong>\n              {numberWithCommas(totals[i].amount)}\n            </strong>\n          </td>\n        );\n      }\n    }\n\n    records.push(\n      <td key=\"grand-total\" className=\"text-end\">\n        <div className=\"badge bg-success\">\n          <strong>\n            {numberWithCommas(this.props.data.data.total_collected)}\n          </strong>\n        </div>\n      </td>\n    )\n\n    return (\n      <tr key={\"totals-row\"}>\n        {records}\n      </tr>\n    );\n  }\n\n  handleTransactionClicked(paymentRecord, member) {\n    this.setState({\n      modalIsOpen: true,\n      currentTransaction: paymentRecord,\n      currentMember: member,\n      currentAmountValue: paymentRecord.amount\n    });\n  }\n\n  handleModalClose() {\n    var currentTransaction    = this.state.currentTransaction;\n    currentTransaction.amount = this.state.currentAmountValue;\n\n    this.setState({\n      modalIsOpen: false,\n      currentTransaction: false,\n      currentMember: false,\n      currentAmountValue: false,\n      errors: false\n    });\n  }\n\n  handleInputAmountChanged(event) {\n    var currentTransaction  = this.state.currentTransaction;\n\n    if(currentTransaction) {\n      currentTransaction.amount = event.target.value;\n\n      this.setState({\n        currentTransaction: currentTransaction\n      });\n    }\n  }\n\n  renderTransactionParticular() {\n    var currentTransaction  = this.state.currentTransaction;\n    var currentMember       = this.state.currentMember;\n\n    if(currentTransaction.record_type == \"ID\") {\n      return (\n        <h5>\n          ID PAYMENT\n        </h5>\n      );\n    } else if(currentTransaction.record_type == \"MEMBERSHIP_PAYMENT\") {\n      return (\n        <h5>\n          Membership Payment: &nbsp;\n          <span className=\"text-muted\">\n            {currentTransaction.account_subtype}\n          </span>\n        </h5>\n      );\n    } else if(currentTransaction.record_type == \"EQUITY\") {\n      return (\n        <h5>\n          Equity: &nbsp;\n          <span className=\"text-muted\">\n            {currentTransaction.account_subtype} \n          </span>\n        </h5>\n      );\n    } else {\n      return (\n        <div>\n        </div>\n      );\n    }\n  }\n\n  handleModalConfirm() {\n    var currentTransaction  = this.state.currentTransaction;\n    var currentMember       = this.state.currentMember;\n    var context             = this;\n\n    var data  = {\n      current_transaction: currentTransaction,\n      current_member: currentMember,\n      id: this.props.id,\n      authenticity_token: this.props.authenticityToken\n    };\n\n    this.setState({\n      isLoading: true\n    });\n\n    $.ajax({\n      url: \"/api/v1/membership_payment_collections/modify_transaction_record\",\n      method: \"POST\",\n      data: data,\n      success: function(response) {\n        //window.location.reload();\n        context.setState({\n          currentTransaction: false,\n          currentAmountValue: false,\n          currentMember: false,\n          modalIsOpen: false,\n          isLoading: false,\n          errors: false\n        });\n\n        context.props.updateData(response);\n      },\n      error: function(response) {\n        try {\n          var errors  = JSON.parse(response.responseText).errors;\n\n          context.setState({\n            isLoading: false,\n            errors: errors\n          });\n        } catch(err) {\n          console.log(response);\n          alert(\"Something went wrong!\");\n          context.setState({\n            isLoading: false\n          });\n        }\n      }\n    });\n  }\n\n  renderLoadingStatus() {\n    if(this.state.isLoading) {\n      return  (\n        <div className=\"callout callout-info\">\n          Loading...\n        </div>\n      );\n    } else if(this.state.errors) {\n      return (\n        <ErrorDisplay\n          errors={this.state.errors}\n        />\n      );\n    }\n  }\n\n  renderModalContent() {\n    var currentTransaction  = this.state.currentTransaction;\n    var currentMember       = this.state.currentMember;\n\n    if(currentTransaction) {\n      return (\n        <div className=\"container\">\n          <div className=\"row\">\n            <div className=\"col\">\n              <h5>\n                Member: &nbsp;\n                <span className=\"text-muted\">\n                  {currentMember.full_name}\n                </span>\n              </h5>\n              <h5>\n                Transaction Type:  &nbsp;\n                <span className=\"text-muted\">\n                  {currentTransaction.record_type}\n                </span>\n              </h5>\n              {this.renderTransactionParticular()}\n\n              <hr/>\n\n              <input\n                type=\"number\"\n                className=\"form-control\"\n                value={currentTransaction.amount}\n                disabled={this.state.isLoading}\n                onChange={this.handleInputAmountChanged.bind(this)}\n              />\n              {this.renderLoadingStatus()}\n            </div>\n          </div>\n          <hr/>\n          <div className=\"row\">\n            <div className=\"col\">\n              <center>\n                <div className=\"btn-group\">\n                  <button \n                    className=\"btn btn-success\" \n                    onClick={this.handleModalConfirm.bind(this)}\n                    disabled={this.state.isLoading}\n                  >\n                    <span className=\"bi bi-check\" />\n                    Confirm Change\n                  </button>\n\n                  <button \n                    className=\"btn btn-danger\" \n                    onClick={this.handleModalClose.bind(this)}\n                    disabled={this.state.isLoading}\n                  >\n                    <span className=\"bi bi-x\" />\n                    Cancel Change\n                  </button>\n                </div>\n              </center>\n            </div>\n          </div>\n        </div>\n      );\n    } else {\n      return (\n        <div>\n          Internal Error\n        </div>\n      );\n    }\n  }\n\n  render() {\n    return (\n      <div className=\"table-responsive\">\n        <Modal\n          isOpen={this.state.modalIsOpen}\n          style={customStyles}\n        >\n          {this.renderModalContent()}\n        </Modal>\n        {this.renderLoadingStatus()}\n        <table className=\"table table-bordered table-hover table-sm\">\n          <thead>\n            <tr>\n              {this.buildHeaders()}\n            </tr>\n          </thead>\n          <tbody>\n            {this.buildRecords()}\n          </tbody>\n          <tfoot>\n            {this.buildTotals()}\n          </tfoot>\n        </table>\n      </div>\n    );\n  }\n}\n", "import React from 'react';\nimport ErrorDisplay from '../ErrorDisplay';\nimport $ from 'jquery';\n\nexport default class AddRecord extends React.Component {\n  constructor(props) {\n    super(props);\n\n    this.state  = {\n      members: [],\n      memberId: \"\",\n      message: \"Loading...\",\n      isLoading: true,\n      errors: false\n    }\n  }\n\n  componentDidMount() {\n    var context = this;\n\n    $.ajax({\n      url: \"/api/v1/membership_payment_collections/fetch_members\",\n      method: 'GET',\n      data: {\n        id: context.props.data.id\n      },\n      success: function(response) {\n        context.setState({\n          members: response.members,\n          isLoading: false,\n          message: \"\"\n        });\n      },\n      error: function(response) {\n        console.log(response);\n        context.setState({\n          isLoading: false,\n          message: \"Error!\"\n        });\n      }\n    });\n  }\n\n  handleMemberChanged(event) {\n    this.setState({\n      memberId: event.target.value\n    });\n  }\n\n  handleClick() {\n    var context = this;\n\n    this.setState({\n      errors: false,\n      isLoading: true,\n      message: \"Loading...\"\n    });\n\n    if(this.state.memberId) {\n      $.ajax({\n        url: \"/api/v1/membership_payment_collections/add_member\",\n        method: 'POST',\n        data: {\n          authenticity_token: context.props.authenticityToken,\n          member_id: context.state.memberId,\n          id: context.props.data.id\n        },\n        success: function(response) {\n          context.setState({\n            errors: false,\n            message: \"Success! Redirecting...\"\n          });\n\n          window.location.reload();\n        },\n        error: function(response) { \n          try {\n            context.setState({\n              errors: JSON.parse(response.responseText),\n              isLoading: false,\n              message: \"\"\n            });\n          } catch(err) {\n            alert(\"Something went wrong\");\n            context.setState({\n              errors: false,\n              message: \"Error!\",\n              isLoading: false\n            });\n          }\n        }\n      });\n    } else {\n      this.setState({\n        isLoading: false,\n        message: \"Member not selected\"\n      });\n    }\n  }\n\n  renderOptions() {\n    var records = [];\n    var members = this.state.members;\n\n    records.push(\n      <option key=\"null\">\n        -- SELECT --\n      </option>\n    );\n\n    for(var i = 0; i < members.length; i++) {\n      records.push(\n        <option key={\"member-\" + i} value={members[i].id}>\n          {members[i].name} ({members[i].center.name})\n        </option>\n      );\n    }\n\n    return  records;\n  }\n\n  renderErrorDisplay() {\n    if(this.state.errors) {\n      return  (\n        <ErrorDisplay\n          errors={this.state.errors}\n        />\n      );\n    } else {\n      return  (\n        <div>\n        </div>\n      );\n    }\n  }\n\n  render() {\n    if(this.props.data.status == \"pending\") {\n      return  (\n        <div>\n          <h5>\n            Add Transaction\n          </h5>\n          <div className=\"card\">\n            <div className=\"card-body\">\n              {this.renderErrorDisplay()}\n              <div className=\"row\">\n                <div className=\"col-md-10\">\n                  <select\n                    className=\"form-control\"\n                    onChange={this.handleMemberChanged.bind(this)}\n                    value={this.state.memberId}\n                    disabled={this.state.isLoading}\n                  >\n                    {this.renderOptions()}\n                  </select>\n                  <div>\n                    {this.state.message}\n                  </div>\n                </div>\n                <div className=\"col-md-2\">\n                  <button\n                    className=\"btn btn-primary btn-block\"\n                    disabled={this.state.isLoading}\n                    onClick={this.handleClick.bind(this)}\n                  >\n                    <span className=\"fa fa-plus\" />\n                    Add Transaction\n                  </button>\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n      );\n    } else {\n      return  (\n        <div>\n        </div>\n      );\n    }\n  }\n}\n", "import React from 'react';\nimport $ from 'jquery';\nimport moment from 'moment';\n\nimport SkCubeLoading from '../SkCubeLoading';\nimport DepositCollectionUITable from './DepositCollectionUITable';\nimport AccountingEntryPreview from '../accounting/AccountingEntryPreview';\nimport AddRecord from './AddRecord';\nimport LoadCenter from './LoadCenter';\nimport AddAccountingFund from './AddAccountingFund';\nimport {numberWithCommas} from '../utils/helpers';\n\nexport default class DepositCollectionUIComponent extends React.Component {\n  constructor(props) {\n    super(props);\n\n    this.state  = {\n      isLoading: true,\n      isSaving: false,\n      data: false,\n      accountingCodes: []\n    };\n  }\n\n  componentDidMount() {\n    this.fetchDepositCollectionData();\n  }\n\n  fetchDepositCollectionData() {\n    var context = this;\n\n    $.ajax({\n      url: \"/api/v1/deposit_collections/fetch\",\n      method: 'GET',\n      data: {\n        id: this.props.id\n      },\n      success: function(response) {\n        context.setState({\n          isLoading: false,\n          data: response\n        });\n\n      $.ajax({\n        url: \"/api/v1/deposit_collections/fetch_accounting_codes\",\n        method: \"GET\",\n        success: function(res) {\n          const codes = (res.accounting_codes || []).map(c => ({ id: c.id, name: c.name }));\n          context.setState({ accountingCodes: codes });\n        },\n        error: function() {\n          console.log(\"Failed to load accounting codes\");\n        }\n      });\n      },\n      error: function(response) {\n        console.log(response);\n        alert(\"Error in fetching deposit_collection\");\n      }\n    });\n  }\n\n  updateData(data) {\n    this.setState({\n      data: data\n    });\n  }\n\n  handleRemoveClicked(index) {\n    alert(\"Not implemented for this module\");\n  }\n\n  saveParticular() {\n    var context       = this;\n    var data          = context.state.data;\n    var newParticular = data.data.accounting_entry.particular;\n\n    context.setState({\n      isSaving: true\n    });\n\n    $.ajax({\n      url: \"/api/v1/deposit_collections/update_particular\",\n      method: 'POST',\n      data: {\n        id: context.state.data.id,\n        authenticity_token: context.props.authenticityToken,\n        particular: newParticular\n      },\n      success: function(response) {\n        context.setState({\n          isSaving: false\n        });\n      },\n      error: function(response) {\n        alert(\"Error in updating particular\");\n      }\n    });\n  }\n\n  saveOrNumber() {\n    var context     = this;\n    var data        = context.state.data;\n    var newOrNumber = data.data.accounting_entry.data.or_number;\n\n    context.setState({\n      isSaving: true\n    });\n\n    $.ajax({\n      url: \"/api/v1/deposit_collections/update_or_number\",\n      method: 'POST',\n      data: {\n        id: context.state.data.id,\n        authenticity_token: context.props.authenticityToken,\n        or_number: newOrNumber\n      },\n      success: function(response) {\n        context.setState({\n          isSaving: false\n        });\n      },\n      error: function(response) {\n        alert(\"Error in updating or number\");\n      }\n    });\n  }\n  saveSiNumber() {\n    var context     = this;\n    var data        = context.state.data;\n    var newSiNumber = data.data.accounting_entry.data.si_number;\n\n    context.setState({\n      isSaving: true\n    });\n\n    $.ajax({\n      url: \"/api/v1/deposit_collections/update_si_number\",\n      method: 'POST',\n      data: {\n        id: context.state.data.id,\n        authenticity_token: context.props.authenticityToken,\n        si_number: newSiNumber\n      },\n      success: function(response) {\n        context.setState({\n          isSaving: false\n        });\n      },\n      error: function(response) {\n        alert(\"Error in updating or number\");\n      }\n    });\n  }\n\n  modifyOrNumber(event) {\n    var context     = this;\n    var newOrNumber = event.target.value;\n    var data        = context.state.data;\n\n    data.data.or_number                       = newOrNumber;\n    data.data.accounting_entry.data.or_number = newOrNumber;\n\n    context.setState({\n      data: data\n    });\n  }\n  modifySiNumber(event) {\n    var context     = this;\n    var newSiNumber = event.target.value;\n    var data        = context.state.data;\n\n    data.data.si_number                       = newSiNumber;\n    data.data.accounting_entry.data.si_number = newSiNumber;\n\n    context.setState({\n      data: data\n    });\n  }\n\n  modifyParticular(event) {\n    var context       = this;\n    var newParticular = event.target.value;\n    var data          = context.state.data;\n\n    data.data.accounting_entry.particular = newParticular;\n\n    context.setState({\n      data: data\n    });\n  }\n\n  saveArNumber() {\n    var context     = this;\n    var data        = context.state.data;\n    var newArNumber = data.data.accounting_entry.data.ar_number;\n\n    context.setState({\n      isSaving: true\n    });\n\n    $.ajax({\n      url: \"/api/v1/deposit_collections/update_ar_number\",\n      method: 'POST',\n      data: {\n        id: context.state.data.id,\n        authenticity_token: context.props.authenticityToken,\n        ar_number: newArNumber\n      },\n      success: function(response) {\n        context.setState({\n          isSaving: false\n        });\n      },\n      error: function(response) {\n        alert(\"Error in updating or number\");\n      }\n    });\n  }\n\n  modifyArNumber(event) {\n    var context     = this;\n    var newArNumber = event.target.value;\n    var data        = context.state.data;\n\n    data.data.ar_number                       = newArNumber;\n    data.data.accounting_entry.data.ar_number = newArNumber;\n\n    context.setState({\n      data: data\n    });\n  }\n\n  renderParticular() {\n    var particular  = this.state.data.data.accounting_entry.particular;\n\n    if(this.state.data.status == \"pending\") {\n      return  (\n        <div className=\"row\">\n          <div className=\"col-md-10\">\n            <input \n              value={particular} \n              onChange={this.modifyParticular.bind(this)} \n              disabled={this.state.isSaving}\n              className=\"form-control\"\n            />\n          </div>\n          <div className=\"col-md-2\">\n            <button\n              className=\"btn btn-info btn-block\"\n              disabled={this.state.isSaving}\n              onClick={this.saveParticular.bind(this)}\n            >\n              <span className=\"bi bi-check\"/>\n              Save\n            </button>\n          </div>\n        </div>\n      );\n    } else {\n      return particular;\n    }\n  }\n\n  renderOrNumber() {\n    var orNumber  = this.state.data.data.or_number;\n\n    if(this.state.data.status == \"pending\") {\n      return  (\n        <div className=\"row\">\n          <div className=\"col-md-10\">\n            <input \n              value={orNumber} \n              onChange={this.modifyOrNumber.bind(this)} \n              disabled={this.state.isSaving}\n              className=\"form-control\"\n            />\n          </div>\n          <div className=\"col-md-2\">\n            <button\n              className=\"btn btn-info btn-block\"\n              disabled={this.state.isSaving}\n              onClick={this.saveOrNumber.bind(this)}\n            >\n              <span className=\"bi bi-check\"/>\n              Save\n            </button>\n          </div>\n        </div>\n      );\n    } else {\n      return this.state.data.data.or_number;\n    }\n  }\n  renderSiNumber() {\n    var siNumber  = this.state.data.data.si_number;\n\n    if(this.state.data.status == \"pending\") {\n      return  (\n        <div className=\"row\">\n          <div className=\"col-md-10\">\n            <input \n              value={siNumber} \n              onChange={this.modifySiNumber.bind(this)} \n              disabled={this.state.isSaving}\n              className=\"form-control\"\n            />\n          </div>\n          <div className=\"col-md-2\">\n            <button\n              className=\"btn btn-info btn-block\"\n              disabled={this.state.isSaving}\n              onClick={this.saveSiNumber.bind(this)}\n            >\n              <span className=\"bi bi-check\"/>\n              Save\n            </button>\n          </div>\n        </div>\n      );\n    } else {\n      // return this.state.data.data.or_number;\n      return siNumber || \"\u2014\";\n    }\n  }\n  renderArNumber() {\n    var arNumber  = this.state.data.data.ar_number;\n    if(this.state.data.status == \"pending\") {\n      return  (\n        <div className=\"row\">\n          <div className=\"col-md-10\">\n            <input \n              value={arNumber} \n              onChange={this.modifyArNumber.bind(this)} \n              disabled={this.state.isSaving}\n              className=\"form-control\"\n            />\n          </div>\n          <div className=\"col-md-2\">\n            <button\n              className=\"btn btn-info btn-block\"\n              disabled={this.state.isSaving}\n              onClick={this.saveArNumber.bind(this)}\n            >\n              <span className=\"bi bi-check\"/>\n              Save\n            </button>\n          </div>\n        </div>\n      );\n    } else {\n      return this.state.data.data.ar_number;\n    }\n  }\n\n  render() {\n    if(this.state.isLoading) {\n      return (\n        <div>\n          <SkCubeLoading/>\n        </div>\n      );\n    } else {\n      var accounting_entry_data = this.state.data.data.accounting_entry;\n      console.log(accounting_entry_data);\n\n      return (\n        <div>\n          <table className=\"table table-sm table-bordered\">\n            <tbody>\n              <tr>\n                <th>\n                  Total Collected:\n                </th>\n                <td className=\"text-end\">\n                  <strong>\n                    {numberWithCommas(this.state.data.data.total_collected)}\n                  </strong>\n                </td>\n              </tr>\n              {/* <tr>\n                <th>\n                  OR Number:\n                </th>\n                <td className=\"text-end\">\n                  {this.renderOrNumber()}\n                </td>\n              </tr> */}\n              <tr>\n                <th>\n                  Service Invoice:\n                </th>\n                <td className=\"text-end\">\n                  {this.renderSiNumber()}\n                </td>\n              </tr>\n              {/* <tr>\n                <th>\n                  AR Number:\n                </th>\n                <td className=\"text-end\">\n                  {this.renderArNumber()}\n                </td>\n              </tr> */}\n              <tr>\n                <th>\n                  Particular:\n                </th>\n                <td className=\"text-end\">\n                  {this.renderParticular()}\n                </td>\n              </tr>\n              {/* <tr>\n                <th>\n                  Accounting Fund:\n                </th>\n                <td className=\"text-end\">\n                  <AddAccountingFund\n                    data={this.state.data}\n                    authenticityToken={this.props.authenticityToken}\n                  />\n                </td>\n              </tr> */}\n            </tbody>\n          </table>\n          <AddRecord\n            data={this.state.data}\n            authenticityToken={this.props.authenticityToken}\n          />\n          <LoadCenter\n            authenticityToken={this.props.authenticityToken}\n            centers={this.props.centers}\n            data={this.state.data}\n          />\n          <hr/>\n          <DepositCollectionUITable\n            id={this.props.id}\n            data={this.state.data}\n            updateData={this.updateData.bind(this)}\n            authenticityToken={this.props.authenticityToken}\n          />\n          <hr/>\n          <h6>\n            Accounting Entry\n          </h6>\n          <AccountingEntryPreview\n            contextType=\"deposit_collection\"\n            id={this.props.id}\n            book={accounting_entry_data.book}\n            particular={accounting_entry_data.particular}\n            datePrepared={accounting_entry_data.date_prepared}\n            referenceNumber={accounting_entry_data.reference_number}\n            approved_by={accounting_entry_data.approved_by}\n            branch={accounting_entry_data.branch_name}\n            balanced={true}\n            // status={accounting_entry_data.status}\n            status={this.state.data.status}\n            journalEntries={accounting_entry_data.journal_entries}\n            isLoading={this.state.isLoading}\n            // handleRemoveClicked={this.handleRemoveClicked.bind(this)}\n            // handleJournalEntryEdit={() => {}} \n            data={accounting_entry_data.data}\n            hideOrAr={true}\n            accountingFundId={accounting_entry_data.accounting_fund_id}\n            accountingCodes={this.state.accountingCodes || []} \n            onUpdated={() => this.fetchDepositCollectionData()} \n          />\n        </div>\n      );\n    }\n  }\n}\n", "import React from 'react';\nimport ReactTable from 'react-table';\nimport Modal from 'react-modal';\nimport Toggle from 'react-toggle';\nimport \"react-toggle/style.css\";\nimport $ from \"jquery\";\n\nimport {numberWithCommas} from '../utils/helpers';\nimport {customStyles} from '../utils/consts';\n\nimport ErrorDisplay from '../ErrorDisplay';\n\nexport default class DepositCollectionUITable extends React.Component {\n  constructor(props) {\n    super(props);\n\n    this.state  = {\n      currentTransaction: false,\n      currentAmountValue: false,\n      currentMember: false,\n      modalIsOpen: false,\n      modalRemoveIsOpen: false,\n      isLoading: false,\n      errors: false\n    };\n  }\n\n  buildHeaders() {\n    var headers = [];\n\n    headers.push(\n      <th key={\"h-member\"} style={{minWidth: \"300px\"}}>\n        Member\n      </th>\n    );\n\n    for(var i = 0; i < this.props.data.data.headers.length; i++) {\n      headers.push(\n        <th key={\"h-\" + i} style={{minWidth: \"100px\"}}>\n          <center>\n            <small>\n              {this.props.data.data.headers[i]}\n            </small>\n          </center>\n        </th>\n      );\n    }\n\n    headers.push(\n      <th  key={\"h-total\"} style={{minWidth: \"40px\"}}>\n        <center>\n          TOTAL\n        </center>\n      </th>\n    );\n\n    return headers;\n  }\n\n  handleRemoveRecord(id) {\n    var context = this;\n\n    this.setState({\n      isLoading: true\n    });\n\n    $.ajax({\n      url: \"/api/v1/deposit_collections/remove_member\",\n      method: 'POST',\n      data: {\n        authenticity_token: context.props.authenticityToken,\n        member_id: id,\n        id: context.props.data.id\n      },\n      success: function(response) {\n        context.setState({\n          errors: false,\n          message: \"Success! Redirecting...\"\n        });\n\n        window.location.reload();\n      },\n      error: function(response) {\n        try {\n          console.log(response);\n          context.setState({\n            errors: JSON.parse(response.responseText),\n            isLoading: false,\n            message: \"Error\"\n          });\n        } catch(err) {\n          context.setState({\n            errors: false,\n            message: \"Error!\",\n            isLoading: false\n          });\n        }\n      }\n    });\n  }\n\n  buildRecords() {\n    var records = [];\n\n    for(var i = 0; i < this.props.data.data.records.length; i++) {\n      var components  = [];\n      var record      = this.props.data.data.records[i];\n      var member      = record.member;\n\n      var btnDelete = \"\";\n      if(this.props.data.status == \"pending\") {\n        btnDelete = (\n          <button\n            className=\"btn btn-danger btn-sm\"\n            onClick={this.handleRemovedClicked.bind(this, member)}\n            disabled={this.state.isLoading}\n          >\n            <span className=\"bi bi-x\"/>\n          </button>\n        );\n      }\n\n      var center      = this.props.data.data.records[i].member.center;\n      var centerName  = \"\";\n\n      if(center) {\n        centerName = center.name;\n      }\n\n      components.push(\n        <td key={\"c-member-\" + member.id}>\n          {btnDelete}\n          <strong>\n            <a href={\"/members/\" + member.id + \"/display\"} target=\"_blank\">\n              {this.props.data.data.records[i].member.full_name} ({centerName})\n            </a>\n          </strong>\n        </td>\n      );\n\n      for(var j = 0; j < this.props.data.data.records[i].records.length; j++) {\n        var paymentRecord = this.props.data.data.records[i].records[j];\n        if(this.props.data.status == \"pending\") {\n          components.push(\n            <td key={\"deposit-payment-\" + j} className=\"text-end\">\n              <strong>\n                <a \n                  href=\"#\"\n                  onClick={this.handleTransactionClicked.bind(this, paymentRecord, member)}\n                >\n                  {numberWithCommas(paymentRecord.amount)}\n                </a>\n              </strong>\n            </td>\n          );\n        } else {\n          components.push(\n            <td key={\"na-\" + member.id + \"-\" + j} className=\"text-end\">\n              {numberWithCommas(paymentRecord.amount)}\n            </td>\n          )\n        }\n      }\n\n      components.push(\n        <td key={\"c-member-total-\" + member.id} className=\"text-end\">\n          <strong>\n            {numberWithCommas(this.props.data.data.records[i].total_collected)}\n          </strong>\n        </td>\n      );\n\n      records.push(\n        <tr key={\"member-row-\" + i}>\n          {components}\n        </tr>\n      );\n    }\n\n    return records;\n  }\n\n  buildTotals() {\n    var records = [];\n\n    records.push(\n      <td key=\"total-label\">\n        <strong>\n          TOTAL\n        </strong>\n      </td>\n    );\n\n    var totals  = this.props.data.data.totals;\n    for(var i = 0; i < totals.length; i++) {\n      records.push(\n        <td key={\"total-deposit-payment-\" + i} className=\"text-end\">\n          <strong>\n            {numberWithCommas(totals[i].amount)}\n          </strong>\n        </td>\n      );\n    }\n\n    records.push(\n      <td key=\"grand-total\" className=\"text-end\">\n        <div className=\"badge bg-success\">\n          <strong>\n            {numberWithCommas(this.props.data.data.total_collected)}\n          </strong>\n        </div>\n      </td>\n    )\n\n    return (\n      <tr key={\"totals-row\"}>\n        {records}\n      </tr>\n    );\n  }\n\n  handleTransactionClicked(paymentRecord, member) {\n    this.setState({\n      modalIsOpen: true,\n      currentTransaction: paymentRecord,\n      currentMember: member,\n      currentAmountValue: paymentRecord.amount\n    });\n  }\n\n  handleModalClose() {\n    var currentTransaction    = this.state.currentTransaction;\n    currentTransaction.amount = this.state.currentAmountValue;\n\n    this.setState({\n      modalIsOpen: false,\n      currentTransaction: false,\n      currentMember: false,\n      currentAmountValue: false,\n      errors: false\n    });\n  }\n\n  handleRemovedClicked(member) {\n    this.setState({\n      modalRemoveIsOpen: true,\n      currentMember: member\n    });\n  }\n\n  handleRemoveModalClose() {\n    this.setState({\n      modalRemoveIsOpen: false,\n      currentMember: false,\n      errors: false\n    });\n  }\n\n\n  handleInputAmountChanged(event) {\n    var currentTransaction  = this.state.currentTransaction;\n\n    if(currentTransaction) {\n      currentTransaction.amount = event.target.value;\n\n      this.setState({\n        currentTransaction: currentTransaction\n      });\n    }\n  }\n\n    renderTransactionParticular() {\n    var currentTransaction  = this.state.currentTransaction;\n\n    return (\n      <h5>\n        {currentTransaction.record_type}\n        {currentTransaction.account_subtype ? (\n          <span className=\"text-muted\"> \u2014 {currentTransaction.account_subtype}</span>\n        ) : null}\n      </h5>\n    );\n  }\n\n\n  handleModalConfirm() {\n    var currentTransaction  = this.state.currentTransaction;\n    var currentMember       = this.state.currentMember;\n    var context             = this;\n\n    var data  = {\n      current_transaction: currentTransaction,\n      current_member: currentMember,\n      id: this.props.id,\n      authenticity_token: this.props.authenticityToken\n    };\n\n    data.current_transaction.record_type =\n      data.current_transaction.record_type || currentTransaction.record_type;\n\n    data.current_transaction.account_subtype =\n      data.current_transaction.account_subtype || currentTransaction.account_subtype;\n\n    this.setState({\n      isLoading: true\n    });\n\n    $.ajax({\n      url: \"/api/v1/deposit_collections/modify_transaction_record\",\n      method: \"POST\",\n      data: data,\n      success: function(response) {\n        //window.location.reload();\n        context.setState({\n          currentTransaction: false,\n          currentAmountValue: false,\n          currentMember: false,\n          modalIsOpen: false,\n          isLoading: false,\n          errors: false\n        });\n\n        context.props.updateData(response);\n      },\n      error: function(response) {\n        try {\n          var errors  = JSON.parse(response.responseText).errors;\n\n          context.setState({\n            isLoading: false,\n            errors: errors\n          });\n        } catch(err) {\n          console.log(response);\n          alert(\"Something went wrong!\");\n          context.setState({\n            isLoading: false\n          });\n        }\n      }\n    });\n  }\n\n  renderLoadingStatus() {\n    if(this.state.isLoading) {\n      return  (\n        <div className=\"callout callout-info\">\n          Loading...\n        </div>\n      );\n    } else if(this.state.errors) {\n      return (\n        <ErrorDisplay\n          errors={this.state.errors}\n        />\n      );\n    }\n  }\n\n  renderModalContent() {\n    var currentTransaction  = this.state.currentTransaction;\n    var currentMember       = this.state.currentMember;\n\n    if(currentTransaction) {\n      return (\n        <div className=\"container\">\n          <div className=\"row\">\n            <div className=\"col\">\n              <h5>\n                Member: &nbsp;\n                <span className=\"text-muted\">\n                  {currentMember.full_name}\n                </span>\n              </h5>\n              <h5>\n                Transaction Type:  &nbsp;\n                <span className=\"text-muted\">\n                  {currentTransaction.record_type}\n                </span>\n              </h5>\n              {this.renderTransactionParticular()}\n\n              <hr/>\n\n              <input\n                type=\"number\"\n                className=\"form-control\"\n                value={currentTransaction.amount}\n                disabled={this.state.isLoading}\n                onChange={this.handleInputAmountChanged.bind(this)}\n              />\n              {this.renderLoadingStatus()}\n            </div>\n          </div>\n          <hr/>\n          <div className=\"row\">\n            <div className=\"col\">\n              <center>\n                <div className=\"btn-group\">\n                  <button \n                    className=\"btn btn-success\" \n                    onClick={this.handleModalConfirm.bind(this)}\n                    disabled={this.state.isLoading}\n                  >\n                    <span className=\"bi bi-check\" />\n                    Confirm Change\n                  </button>\n\n                  <button \n                    className=\"btn btn-danger\" \n                    onClick={this.handleModalClose.bind(this)}\n                    disabled={this.state.isLoading}\n                  >\n                    <span className=\"bi bi-x\" />\n                    Cancel Change\n                  </button>\n                </div>\n              </center>\n            </div>\n          </div>\n        </div>\n      );\n    } else {\n      return (\n        <div>\n          Internal Error\n        </div>\n      );\n    }\n  }\n\n  renderRemoveModalContent() {\n    var currentMember       = this.state.currentMember;\n\n    return (\n      <div className=\"container\">\n        <div className=\"row\">\n          <div className=\"col\">\n            <h5>\n              Member: &nbsp;\n              <span className=\"text-muted\">\n                {currentMember.full_name}\n              </span>\n            </h5>\n            <h5>\n              <span className=\"text-muted\" />\n              Are you sure you want to remove?\n            </h5>\n            {this.renderLoadingStatus()}\n          </div>\n        </div>\n        <hr/>\n        <div className=\"row\">\n          <div className=\"col\">\n            <center>\n              <div className=\"btn-group\">\n                <button \n                  className=\"btn btn-success\" \n                  onClick={this.handleRemoveRecord.bind(this, currentMember.id)}\n                  disabled={this.state.isLoading}\n                >\n                  <span className=\"bi bi-check\" />\n                  Confirm\n                </button>\n                &emsp;\n                <button \n                  className=\"btn btn-danger\" \n                  onClick={this.handleRemoveModalClose.bind(this)}\n                  disabled={this.state.isLoading}\n                >\n                  <span className=\"bi bi-x\" />\n                  Cancel\n                </button>\n              </div>\n            </center>\n          </div>\n        </div>\n      </div>\n    );\n  }\n\n  render() {\n    return (\n      <div className=\"table-responsive\">\n        <Modal\n          isOpen={this.state.modalIsOpen}\n          style={customStyles}\n        >\n          {this.renderModalContent()}\n        </Modal>\n        <Modal\n          isOpen={this.state.modalRemoveIsOpen}\n          style={customStyles}\n        >\n          {this.renderRemoveModalContent()}\n        </Modal>\n        {this.renderLoadingStatus()}\n        <table className=\"table table-bordered table-hover table-sm\">\n          <thead>\n            <tr>\n              {this.buildHeaders()}\n            </tr>\n          </thead>\n          <tbody>\n            {this.buildRecords()}\n          </tbody>\n          <tfoot>\n            {this.buildTotals()}\n          </tfoot>\n        </table>\n      </div>\n    );\n  }\n}\n", "import React from 'react';\nimport ErrorDisplay from '../ErrorDisplay';\nimport Select from 'react-select';\nimport $ from \"jquery\";\n\nexport default class AddRecord extends React.Component {\n  constructor(props) {\n    super(props);\n\n    this.state  = {\n      members: [],\n      memberId: \"\",\n      message: \"Loading...\",\n      isLoading: true,\n      errors: false\n    }\n  }\n\n  componentDidMount() {\n    var context = this;\n\n    $.ajax({\n      url: \"/api/v1/deposit_collections/fetch_members\",\n      method: 'GET',\n      data: {\n        id: context.props.data.id\n      },\n      success: function(response) {\n        context.setState({\n          members: response.members,\n          isLoading: false,\n          message: \"\"\n        });\n      },\n      error: function(response) {\n        console.log(response);\n        context.setState({\n          isLoading: false,\n          message: \"Error!\"\n        });\n      }\n    });\n  }\n\n  handleMemberChanged(o) {\n    this.setState({\n      memberId: o.value,\n      currentMember: o\n    });\n  }\n\n  handleClick() {\n    var context = this;\n\n    this.setState({\n      errors: false,\n      isLoading: true,\n      message: \"Loading...\"\n    });\n\n    if(this.state.memberId) {\n      $.ajax({\n        url: \"/api/v1/deposit_collections/add_member\",\n        method: 'POST',\n        data: {\n          authenticity_token: context.props.authenticityToken,\n          member_id: context.state.memberId,\n          id: context.props.data.id\n        },\n        success: function(response) {\n          context.setState({\n            errors: false,\n            message: \"Success! Redirecting...\"\n          });\n\n          window.location.reload();\n        },\n        error: function(response) { \n          try {\n            context.setState({\n              errors: JSON.parse(response.responseText),\n              isLoading: false,\n              message: \"\"\n            });\n          } catch(err) {\n            alert(\"Something went wrong\");\n            context.setState({\n              errors: false,\n              message: \"Error!\",\n              isLoading: false\n            });\n          }\n        }\n      });\n    } else {\n      this.setState({\n        isLoading: false,\n        message: \"Member not selected\"\n      });\n    }\n  }\n\n  renderOptions() {\n    var records = [];\n    var members = this.state.members;\n\n    records.push(\n      <option key=\"null\">\n        -- SELECT --\n      </option>\n    );\n\n    for(var i = 0; i < members.length; i++) {\n      records.push(\n        <option key={\"member-\" + i} value={members[i].id}>\n          {members[i].name} ({members[i].center.name})\n        </option>\n      );\n    }\n\n    return  records;\n  }\n\n  renderErrorDisplay() {\n    if(this.state.errors) {\n      return  (\n        <ErrorDisplay\n          errors={this.state.errors}\n        />\n      );\n    } else {\n      return  (\n        <div>\n        </div>\n      );\n    }\n  }\n\n  render() {\n    if(this.props.data.status == \"pending\") {\n      var members       = this.state.members;\n      var memberOptions = [];\n\n      for(var i = 0; i < members.length; i++) {\n        memberOptions.push(\n          { value: members[i].id, label: members[i].name + \" \" + members[i].center.name }\n        );\n      }\n\n      return  (\n        <div>\n          <h5>\n            Add Transaction\n          </h5>\n          <div className=\"card\">\n            <div className=\"card-body\">\n              {this.renderErrorDisplay()}\n              <div className=\"row\">\n                <div className=\"col-md-10\">\n                  <Select\n                    value={this.state.currentMember}\n                    onChange={this.handleMemberChanged.bind(this)}\n                    options={memberOptions}\n                  />\n                  <div>\n                    {this.state.message}\n                  </div>\n                </div>\n                <div className=\"col-md-2\">\n                  <button\n                    className=\"btn btn-primary btn-block\"\n                    disabled={this.state.isLoading}\n                    onClick={this.handleClick.bind(this)}\n                  >\n                    <span className=\"fa fa-plus\" />\n                    Add Transaction\n                  </button>\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n      );\n    } else {\n      return  (\n        <div>\n        </div>\n      );\n    }\n  }\n}\n", "import React from 'react';\nimport ErrorDisplay from '../ErrorDisplay';\nimport Select from 'react-select';\n\nexport default class LoadCenter extends React.Component {\n  constructor(props) {\n    super(props);\n\n    this.state  = {\n      centers: props.centers,\n      message: \"\",\n      isLoading: false,\n      errors: false,\n      currentCenterId: props.centers[0].id\n    }\n  }\n\n  componentDidMount() {\n    var context = this;\n  }\n\n  handleCenterChanged(event) {\n    this.setState({\n      currentCenterId: event.target.value\n    });\n  }\n\n  handleClick() {\n    var context = this;\n\n    this.setState({\n      errors: false,\n      isLoading: true,\n      message: \"Loading...\"\n    });\n\n    $.ajax({\n      url: \"/api/v1/deposit_collections/load_center\",\n      method: 'POST',\n      data: {\n        authenticity_token: context.props.authenticityToken,\n        center_id: context.state.currentCenterId,\n        id: context.props.data.id\n      },\n      success: function(response) {\n        context.setState({\n          errors: false,\n          message: \"Success! Redirecting...\"\n        });\n\n        window.location.reload();\n      },\n      error: function(response) { \n        try {\n          context.setState({\n            errors: JSON.parse(response.responseText),\n            isLoading: false,\n            message: \"\"\n          });\n        } catch(err) {\n          alert(\"Something went wrong\");\n          context.setState({\n            errors: false,\n            message: \"Error!\",\n            isLoading: false\n          });\n        }\n      }\n    });\n  }\n\n  renderCenterOptions() {\n    var records = [];\n    var centers = this.state.centers;\n\n    for(var i = 0; i < centers.length; i++) {\n      records.push(\n        <option key={\"center-\" + centers[i].id} value={centers[i].id}>\n          {centers[i].name}\n        </option>\n      );\n    }\n\n    return records;\n  }\n\n  renderErrorDisplay() {\n    if(this.state.errors) {\n      return  (\n        <ErrorDisplay\n          errors={this.state.errors}\n        />\n      );\n    } else {\n      return  (\n        <div>\n        </div>\n      );\n    }\n  }\n\n  render() {\n    if(this.props.data.status == \"pending\") {\n      return  (\n        <div>\n          <h5>\n            Load Center\n          </h5>\n          <div className=\"card\">\n            <div className=\"card-body\">\n              {this.renderErrorDisplay()}\n              <div className=\"row\">\n                <div className=\"col-md-10\">\n                  <select \n                    value={this.state.currentCenterId}\n                    className=\"form-control\"\n                    onChange={this.handleCenterChanged.bind(this)}\n                    disabled={this.state.isLoading}\n                  >\n                    {this.renderCenterOptions()}\n                  </select>\n                  <div>\n                    {this.state.message}\n                  </div>\n                </div>\n                <div className=\"col-md-2\">\n                  <button\n                    className=\"btn btn-primary btn-block\"\n                    disabled={this.state.isLoading}\n                    onClick={this.handleClick.bind(this)}\n                  >\n                    <span className=\"fa fa-upload\" />\n                    Load Center\n                  </button>\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n      );\n    } else {\n      return  (\n        <div>\n        </div>\n      );\n    }\n  }\n}\n", "import React from 'react';\nimport $ from \"jquery\";\nimport ErrorDisplay from '../ErrorDisplay';\n\nexport default class AddAccountingFund extends React.Component {\n  constructor(props) {\n    super(props);\n    console.log(props.data);\n    var accountingFundId = props.data.data.accounting_entry.accounting_fund_id;\n    //alert(accountingFundId);\n\n    this.state  = {\n      accountingFunds: [],\n      accountingFundId: accountingFundId,\n      message: \"Loading...\",\n      isLoading: true,\n      errors: false\n    }\n  }\n\n  componentDidMount() {\n    var context = this;\n\n    $.ajax({\n      url: \"/api/v1/deposit_collections/fetch_accounting_funds\",\n      method: 'GET',\n      data: {\n        id: context.props.data.id\n      },\n      success: function(response) {\n        context.setState({\n          accountingFunds: response.accounting_funds,\n          isLoading: false,\n          message: \"\"\n        });\n      },\n      error: function(response) {\n        console.log(response);\n        context.setState({\n          isLoading: false,\n          message: \"Error! eee\"\n        });\n      }\n    });\n  }\n\n  handleAccountingFundChanged(event) {\n    this.setState({\n      accountingFundId: event.target.value\n    });\n  }\n\n  saveAccountingFund() {\n    var context           = this;\n\n    this.setState({\n      errors: false,\n      isLoading: true\n    });\n\n    //alert(context.props.data.id);\n    if(this.state.accountingFundId){\n      $.ajax({\n        url: \"/api/v1/deposit_collections/update_accounting_fund\",\n        method: 'POST',\n        data: {\n          id: context.props.data.id,\n          authenticity_token: this.props.authenticityToken,\n          accounting_fund_id: this.state.accountingFundId\n        },\n        success: function(response) {\n          context.setState({\n            isLoading: false\n          });\n        },\n        error: function(response) {\n          alert(\"Error in updating accounting fund\");\n        }\n      });\n    } else {\n      this.setState({\n        isLoading: false,\n        message: \"Accounting fund not selected\"\n      });\n    }  \n  }\n\n  renderOptions() {\n    var records = [];\n    var accountingFunds = this.state.accountingFunds;\n\n    records.push(\n      <option key=\"null\">\n        -- SELECT --\n      </option>\n    );\n\n    for(var i = 0; i < accountingFunds.length; i++) {\n      records.push(\n        <option key={\"accounting-fund-\" + i} value={accountingFunds[i].id}>\n          {accountingFunds[i].name}\n        </option>\n      );\n    }\n\n    return  records;\n  }\n\n  renderErrorDisplay() {\n    if(this.state.errors) {\n      return  (\n        <ErrorDisplay\n          errors={this.state.errors}\n        />\n      );\n    } else {\n      return  (\n        <div>\n        </div>\n      );\n    }\n  }\n\n  render() {\n    var accountingFundId  = this.state.accountingFunds;\n\n    if(this.props.data.status == \"pending\") {\n      return  (\n        <div className=\"row\">\n          <div className=\"col-md-10\">\n            <select\n              className=\"form-control\"\n              onChange={this.handleAccountingFundChanged.bind(this)}\n              value={this.state.accountingFundId}\n              disabled={this.state.isLoading}\n            >\n              {this.renderOptions()}\n            </select>\n            <div>\n              {this.state.message}\n            </div>\n          </div>\n          <div className=\"col-md-2\">\n            <button\n              className=\"btn btn-info btn-block\"\n              disabled={this.state.isLoading}\n              onClick={this.saveAccountingFund.bind(this)}\n            >\n              <span className=\"bi bi-check\" />\n              Save\n            </button>\n          </div>\n        </div>\n      );\n    } else {\n      return \"\" + this.props.data.data.accounting_fund_name;\n    }\n  }\n}\n", "import React from 'react';\nimport $ from 'jquery';\nimport moment from 'moment';\n\nimport SkCubeLoading from '../SkCubeLoading';\nimport TimeDepositCollectionUITable from './TimeDepositCollectionUITable';\nimport AccountingEntryPreview from '../accounting/AccountingEntryPreview';\nimport AddRecord from './AddRecord';\nimport {numberWithCommas} from '../utils/helpers';\n\nexport default class TimeDepositCollectionUIComponent extends React.Component {\n  constructor(props) {\n    super(props);\n\n    this.state  = {\n      isLoading: true,\n      isSaving: false,\n      data: false\n    };\n  }\n\n  componentDidMount() {\n    this.fetchTimeDepositCollectionData();\n  }\n\n  fetchTimeDepositCollectionData() {\n    var context = this;\n\n    $.ajax({\n      url: \"/api/v1/time_deposit_collections/fetch\",\n      method: 'GET',\n      data: {\n        id: this.props.id\n      },\n      success: function(response) {\n        context.setState({\n          isLoading: false,\n          data: response\n        });\n      },\n      error: function(response) {\n        console.log(response);\n        alert(\"Error in fetching time_deposit_collection\");\n      }\n    });\n  }\n\n  updateData(data) {\n    this.setState({\n      data: data\n    });\n  }\n\n  handleRemoveClicked(index) {\n    alert(\"Not implemented for this module\");\n  }\n\n  saveParticular() {\n    var context       = this;\n    var data          = context.state.data;\n    var newParticular = data.data.accounting_entry.particular;\n\n    context.setState({\n      isSaving: true\n    });\n\n    $.ajax({\n      url: \"/api/v1/time_deposit_collections/update_particular\",\n      method: 'POST',\n      data: {\n        id: context.state.data.id,\n        authenticity_token: context.props.authenticityToken,\n        particular: newParticular\n      },\n      success: function(response) {\n        context.setState({\n          isSaving: false\n        });\n      },\n      error: function(response) {\n        alert(\"Error in updating particular\");\n      }\n    });\n  }\n\n  saveOrNumber() {\n    var context     = this;\n    var data        = context.state.data;\n    var newOrNumber = data.data.accounting_entry.data.or_number;\n\n    context.setState({\n      isSaving: true\n    });\n\n    $.ajax({\n      url: \"/api/v1/time_deposit_collections/update_or_number\",\n      method: 'POST',\n      data: {\n        id: context.state.data.id,\n        authenticity_token: context.props.authenticityToken,\n        or_number: newOrNumber\n      },\n      success: function(response) {\n        context.setState({\n          isSaving: false\n        });\n      },\n      error: function(response) {\n        alert(\"Error in updating or number\");\n      }\n    });\n  }\n  saveSiNumber() {\n    var context     = this;\n    var data        = context.state.data;\n    var newSiNumber = data.data.accounting_entry.data.si_number;\n\n    context.setState({\n      isSaving: true\n    });\n\n    $.ajax({\n      url: \"/api/v1/time_deposit_collections/update_si_number\",\n      method: 'POST',\n      data: {\n        id: context.state.data.id,\n        authenticity_token: context.props.authenticityToken,\n        si_number: newSiNumber\n      },\n      success: function(response) {\n        context.setState({\n          isSaving: false\n        });\n      },\n      error: function(response) {\n        alert(\"Error in updating or number\");\n      }\n    });\n  }\n\n  modifyOrNumber(event) {\n    var context     = this;\n    var newOrNumber = event.target.value;\n    var data        = context.state.data;\n\n    data.data.or_number                       = newOrNumber;\n    data.data.accounting_entry.data.or_number = newOrNumber;\n\n    context.setState({\n      data: data\n    });\n  }\n  modifySiNumber(event) {\n    var context     = this;\n    var newSiNumber = event.target.value;\n    var data        = context.state.data;\n\n    data.data.si_number                       = newSiNumber;\n    data.data.accounting_entry.data.si_number = newSiNumber;\n\n    context.setState({\n      data: data\n    });\n  }\n\n  modifyParticular(event) {\n    var context       = this;\n    var newParticular = event.target.value;\n    var data          = context.state.data;\n\n    data.data.accounting_entry.particular = newParticular;\n\n    context.setState({\n      data: data\n    });\n  }\n\n  saveArNumber() {\n    var context     = this;\n    var data        = context.state.data;\n    var newArNumber = data.data.accounting_entry.data.ar_number;\n\n    context.setState({\n      isSaving: true\n    });\n\n    $.ajax({\n      url: \"/api/v1/time_deposit_collections/update_ar_number\",\n      method: 'POST',\n      data: {\n        id: context.state.data.id,\n        authenticity_token: context.props.authenticityToken,\n        ar_number: newArNumber\n      },\n      success: function(response) {\n        context.setState({\n          isSaving: false\n        });\n      },\n      error: function(response) {\n        alert(\"Error in updating or number\");\n      }\n    });\n  }\n\n  modifyArNumber(event) {\n    var context     = this;\n    var newArNumber = event.target.value;\n    var data        = context.state.data;\n\n    data.data.ar_number                       = newArNumber;\n    data.data.accounting_entry.data.ar_number = newArNumber;\n\n    context.setState({\n      data: data\n    });\n  }\n\n  renderParticular() {\n    var particular  = this.state.data.data.accounting_entry.particular;\n\n    if(this.state.data.status == \"pending\") {\n      return  (\n        <div className=\"row\">\n          <div className=\"col-md-10\">\n            <input \n              value={particular} \n              onChange={this.modifyParticular.bind(this)} \n              disabled={this.state.isSaving}\n              className=\"form-control\"\n            />\n          </div>\n          <div className=\"col-md-2\">\n            <button\n              className=\"btn btn-info btn-block\"\n              disabled={this.state.isSaving}\n              onClick={this.saveParticular.bind(this)}\n            >\n              <span className=\"bi bi-check\"/>\n              Save\n            </button>\n          </div>\n        </div>\n      );\n    } else {\n      return particular;\n    }\n  }\n\n  renderOrNumber() {\n    var orNumber  = this.state.data.data.or_number;\n\n    if(this.state.data.status == \"pending\") {\n      return  (\n        <div className=\"row\">\n          <div className=\"col-md-10\">\n            <input \n              value={orNumber} \n              onChange={this.modifyOrNumber.bind(this)} \n              disabled={this.state.isSaving}\n              className=\"form-control\"\n            />\n          </div>\n          <div className=\"col-md-2\">\n            <button\n              className=\"btn btn-info btn-block\"\n              disabled={this.state.isSaving}\n              onClick={this.saveOrNumber.bind(this)}\n            >\n              <span className=\"bi bi-check\"/>\n              Save\n            </button>\n          </div>\n        </div>\n      );\n    } else {\n      return this.state.data.data.or_number;\n    }\n  }\n  renderSiNumber() {\n    var siNumber  = this.state.data.data.si_number;\n\n    if(this.state.data.status == \"pending\") {\n      return  (\n        <div className=\"row\">\n          <div className=\"col-md-10\">\n            <input \n              value={siNumber} \n              onChange={this.modifySiNumber.bind(this)} \n              disabled={this.state.isSaving}\n              className=\"form-control\"\n            />\n          </div>\n          <div className=\"col-md-2\">\n            <button\n              className=\"btn btn-info btn-block\"\n              disabled={this.state.isSaving}\n              onClick={this.saveSiNumber.bind(this)}\n            >\n              <span className=\"bi bi-check\"/>\n              Save\n            </button>\n          </div>\n        </div>\n      );\n    } else {\n      return this.state.data.data.si_number;\n    }\n  }\n\n  renderArNumber() {\n    var arNumber  = this.state.data.data.ar_number;\n    if(this.state.data.status == \"pending\") {\n      return  (\n        <div className=\"row\">\n          <div className=\"col-md-10\">\n            <input \n              value={arNumber} \n              onChange={this.modifyArNumber.bind(this)} \n              disabled={this.state.isSaving}\n              className=\"form-control\"\n            />\n          </div>\n          <div className=\"col-md-2\">\n            <button\n              className=\"btn btn-info btn-block\"\n              disabled={this.state.isSaving}\n              onClick={this.saveArNumber.bind(this)}\n            >\n              <span className=\"bi bi-check\"/>\n              Save\n            </button>\n          </div>\n        </div>\n      );\n    } else {\n      return this.state.data.data.ar_number;\n    }\n  }\n\n  render() {\n    if(this.state.isLoading) {\n      return (\n        <div>\n          <SkCubeLoading/>\n        </div>\n      );\n    } else {\n      var accounting_entry_data = this.state.data.data.accounting_entry;\n      console.log(accounting_entry_data);\n\n      return (\n        <div>\n          <table className=\"table table-sm table-bordered\">\n            <tbody>\n              <tr>\n                <th>\n                  Total Collected:\n                </th>\n                <td className=\"text-end\">\n                  <strong>\n                    {numberWithCommas(this.state.data.data.total_collected)}\n                  </strong>\n                </td>\n              </tr>\n              <tr>\n                <th>\n                  OR Number:\n                </th>\n                <td className=\"text-end\">\n                  {this.renderOrNumber()}\n                </td>\n              </tr>\n              <tr>\n                <th>\n                    Service Invoice:\n                </th>\n                  <td className=\"text-end\">\n                    {this.renderSiNumber()}\n                  </td>\n              </tr>\n              <tr>\n                <th>\n                  AR Number:\n                </th>\n                <td className=\"text-end\">\n                  {this.renderArNumber()}\n                </td>\n              </tr>\n              <tr>\n                <th>\n                  Particular:\n                </th>\n                <td className=\"text-end\">\n                  {this.renderParticular()}\n                </td>\n              </tr>\n            </tbody>\n          </table>\n          <AddRecord\n            data={this.state.data}\n            authenticityToken={this.props.authenticityToken}\n          />\n          <hr/>\n          <TimeDepositCollectionUITable\n            id={this.props.id}\n            data={this.state.data}\n            updateData={this.updateData.bind(this)}\n            authenticityToken={this.props.authenticityToken}\n          />\n          <hr/>\n          <h6>\n            Accounting Entry\n          </h6>\n          <AccountingEntryPreview\n            book={accounting_entry_data.book}\n            particular={accounting_entry_data.particular}\n            datePrepared={accounting_entry_data.date_prepared}\n            referenceNumber={accounting_entry_data.reference_number}\n            approved_by={accounting_entry_data.approved_by}\n            branch={accounting_entry_data.branch_name}\n            balanced={true}\n            status={accounting_entry_data.status}\n            journalEntries={accounting_entry_data.journal_entries}\n            isLoading={this.state.isLoading}\n            handleRemoveClicked={this.handleRemoveClicked.bind(this)}\n            data={accounting_entry_data.data}\n            accountingFundId={accounting_entry_data.accounting_fund_id}\n          />\n        </div>\n      );\n    }\n  }\n}\n", "import React from 'react';\nimport ReactTable from 'react-table';\nimport Modal from 'react-modal';\nimport Toggle from 'react-toggle';\nimport \"react-toggle/style.css\";\n\nimport {numberWithCommas} from '../utils/helpers';\nimport {customStyles} from '../utils/consts';\n\nimport ErrorDisplay from '../ErrorDisplay';\n\nexport default class TimeDepositCollectionUITable extends React.Component {\n  constructor(props) {\n    super(props);\n\n    this.state  = {\n      currentTransaction: false,\n      currentAmountValue: false,\n      currentMember: false,\n      modalIsOpen: false,\n      isLoading: false,\n      errors: false\n    };\n  }\n\n  buildHeaders() {\n    var headers = [];\n\n    headers.push(\n      <th key={\"h-member\"} style={{minWidth: \"300px\"}}>\n        Member\n      </th>\n    );\n\n    for(var i = 0; i < this.props.data.data.headers.length; i++) {\n      headers.push(\n        <th key={\"h-\" + i} style={{minWidth: \"100px\"}}>\n          <center>\n            <small>\n              {this.props.data.data.headers[i]}\n            </small>\n          </center>\n        </th>\n      );\n    }\n\n    headers.push(\n      <th  key={\"h-total\"} style={{minWidth: \"40px\"}}>\n        <center>\n          TOTAL\n        </center>\n      </th>\n    );\n\n    return headers;\n  }\n\n  handleRemoveRecord(id) {\n    var context = this;\n\n    this.setState({\n      isLoading: true\n    });\n\n    $.ajax({\n      url: \"/api/v1/time_deposit_collections/remove_member\",\n      method: 'POST',\n      data: {\n        authenticity_token: context.props.authenticityToken,\n        member_id: id,\n        id: context.props.data.id\n      },\n      success: function(response) {\n        context.setState({\n          errors: false,\n          message: \"Success! Redirecting...\"\n        });\n\n        window.location.reload();\n      },\n      error: function(response) {\n        try {\n          console.log(response);\n          context.setState({\n            errors: JSON.parse(response.responseText),\n            isLoading: false,\n            message: \"Error\"\n          });\n        } catch(err) {\n          context.setState({\n            errors: false,\n            message: \"Error!\",\n            isLoading: false\n          });\n        }\n      }\n    });\n  }\n\n  buildRecords() {\n    var records = [];\n\n    for(var i = 0; i < this.props.data.data.records.length; i++) {\n      var components  = [];\n      var record      = this.props.data.data.records[i];\n      var member      = record.member;\n\n      var btnDelete = \"\";\n      if(this.props.data.status == \"pending\") {\n        btnDelete = (\n          <button\n            className=\"btn btn-danger btn-sm\"\n            onClick={this.handleRemoveRecord.bind(this, member.id)}\n            disabled={this.state.isLoading}\n          >\n            <span className=\"bi bi-x\"/>\n          </button>\n        );\n      }\n\n      components.push(\n        <td key={\"c-member-\" + member.id}>\n          {btnDelete}\n          <strong>\n            <a href={\"/members/\" + member.id + \"/display\"} target=\"_blank\">\n              {this.props.data.data.records[i].member.full_name}\n            </a>\n          </strong>\n        </td>\n      );\n\n      for(var j = 0; j < this.props.data.data.records[i].records.length; j++) {\n        var paymentRecord = this.props.data.data.records[i].records[j];\n        components.push(\n          <td key={\"na-\" + member.id + \"-\" + j} className=\"text-end\">\n            {numberWithCommas(paymentRecord.amount)}\n            <div className=\"text-muted\">\n              <small>\n                {paymentRecord.lock_in_period.num_days} Days / {paymentRecord.lock_in_period.num_months} Months / Interest Rate: {paymentRecord.lock_in_period.interest_rate * 100}% / Expected Interest: {paymentRecord.lock_in_period.expected_interest}\n              </small>\n            </div>\n          </td>\n        )\n      }\n\n      components.push(\n        <td key={\"c-member-total-\" + member.id} className=\"text-end\">\n          <strong>\n            {numberWithCommas(this.props.data.data.records[i].total_collected)}\n          </strong>\n        </td>\n      );\n\n      records.push(\n        <tr key={\"member-row-\" + i}>\n          {components}\n        </tr>\n      );\n    }\n\n    return records;\n  }\n\n  buildTotals() {\n    var records = [];\n\n    records.push(\n      <td key=\"total-label\">\n        <strong>\n          TOTAL\n        </strong>\n      </td>\n    );\n\n    var totals  = this.props.data.data.totals;\n    for(var i = 0; i < totals.length; i++) {\n      records.push(\n        <td key={\"total-time-deposit-payment-\" + i} className=\"text-end\">\n          <strong>\n            {numberWithCommas(totals[i].amount)}\n          </strong>\n        </td>\n      );\n    }\n\n    records.push(\n      <td key=\"grand-total\" className=\"text-end\">\n        <div className=\"badge bg-success\">\n          <strong>\n            {numberWithCommas(this.props.data.data.total_collected)}\n          </strong>\n        </div>\n      </td>\n    )\n\n    return (\n      <tr key={\"totals-row\"}>\n        {records}\n      </tr>\n    );\n  }\n\n  handleTransactionClicked(paymentRecord, member) {\n    this.setState({\n      modalIsOpen: true,\n      currentTransaction: paymentRecord,\n      currentMember: member,\n      currentAmountValue: paymentRecord.amount\n    });\n  }\n\n  handleModalClose() {\n    var currentTransaction    = this.state.currentTransaction;\n    currentTransaction.amount = this.state.currentAmountValue;\n\n    this.setState({\n      modalIsOpen: false,\n      currentTransaction: false,\n      currentMember: false,\n      currentAmountValue: false,\n      errors: false\n    });\n  }\n\n  handleInputAmountChanged(event) {\n    var currentTransaction  = this.state.currentTransaction;\n\n    if(currentTransaction) {\n      currentTransaction.amount = event.target.value;\n\n      this.setState({\n        currentTransaction: currentTransaction\n      });\n    }\n  }\n\n  renderTransactionParticular() {\n    var currentTransaction  = this.state.currentTransaction;\n    var currentMember       = this.state.currentMember;\n\n    return (\n      <h5>\n        SAVINGS\n      </h5>\n    );\n  }\n\n  handleModalConfirm() {\n    var currentTransaction  = this.state.currentTransaction;\n    var currentMember       = this.state.currentMember;\n    var context             = this;\n\n    var data  = {\n      current_transaction: currentTransaction,\n      current_member: currentMember,\n      id: this.props.id,\n      authenticity_token: this.props.authenticityToken\n    };\n\n    this.setState({\n      isLoading: true\n    });\n\n    $.ajax({\n      url: \"/api/v1/time_deposit_collections/modify_transaction_record\",\n      method: \"POST\",\n      data: data,\n      success: function(response) {\n        //window.location.reload();\n        context.setState({\n          currentTransaction: false,\n          currentAmountValue: false,\n          currentMember: false,\n          modalIsOpen: false,\n          isLoading: false,\n          errors: false\n        });\n\n        context.props.updateData(response);\n      },\n      error: function(response) {\n        try {\n          var errors  = JSON.parse(response.responseText).errors;\n\n          context.setState({\n            isLoading: false,\n            errors: errors\n          });\n        } catch(err) {\n          console.log(response);\n          alert(\"Something went wrong!\");\n          context.setState({\n            isLoading: false\n          });\n        }\n      }\n    });\n  }\n\n  renderLoadingStatus() {\n    if(this.state.isLoading) {\n      return  (\n        <div className=\"callout callout-info\">\n          Loading...\n        </div>\n      );\n    } else if(this.state.errors) {\n      return (\n        <ErrorDisplay\n          errors={this.state.errors}\n        />\n      );\n    }\n  }\n\n  renderModalContent() {\n    var currentTransaction  = this.state.currentTransaction;\n    var currentMember       = this.state.currentMember;\n\n    if(currentTransaction) {\n      return (\n        <div className=\"container\">\n          <div className=\"row\">\n            <div className=\"col\">\n              <h5>\n                Member: &nbsp;\n                <span className=\"text-muted\">\n                  {currentMember.full_name}\n                </span>\n              </h5>\n              <h5>\n                Transaction Type:  &nbsp;\n                <span className=\"text-muted\">\n                  {currentTransaction.record_type}\n                </span>\n              </h5>\n              {this.renderTransactionParticular()}\n\n              <hr/>\n\n              <input\n                type=\"number\"\n                className=\"form-control\"\n                value={currentTransaction.amount}\n                disabled={this.state.isLoading}\n                onChange={this.handleInputAmountChanged.bind(this)}\n              />\n              {this.renderLoadingStatus()}\n            </div>\n          </div>\n          <hr/>\n          <div className=\"row\">\n            <div className=\"col\">\n              <center>\n                <div className=\"btn-group\">\n                  <button \n                    className=\"btn btn-success\" \n                    onClick={this.handleModalConfirm.bind(this)}\n                    disabled={this.state.isLoading}\n                  >\n                    <span className=\"bi bi-check\" />\n                    Confirm Change\n                  </button>\n\n                  <button \n                    className=\"btn btn-danger\" \n                    onClick={this.handleModalClose.bind(this)}\n                    disabled={this.state.isLoading}\n                  >\n                    <span className=\"bi bi-x\" />\n                    Cancel Change\n                  </button>\n                </div>\n              </center>\n            </div>\n          </div>\n        </div>\n      );\n    } else {\n      return (\n        <div>\n          Internal Error\n        </div>\n      );\n    }\n  }\n\n  render() {\n    return (\n      <div className=\"table-responsive\">\n        <Modal\n          isOpen={this.state.modalIsOpen}\n          style={customStyles}\n        >\n          {this.renderModalContent()}\n        </Modal>\n        {this.renderLoadingStatus()}\n        <table className=\"table table-bordered table-hover table-sm\">\n          <thead>\n            <tr>\n              {this.buildHeaders()}\n            </tr>\n          </thead>\n          <tbody>\n            {this.buildRecords()}\n          </tbody>\n          <tfoot>\n            {this.buildTotals()}\n          </tfoot>\n        </table>\n      </div>\n    );\n  }\n}\n", "import React from 'react';\nimport ErrorDisplay from '../ErrorDisplay';\nimport $ from \"jquery\";\n\nexport default class AddRecord extends React.Component {\n  constructor(props) {\n    super(props);\n\n    this.state  = {\n      members: [],\n      memberId: \"\",\n      lockInPeriod: 90,\n      amount: 0.00,\n      message: \"Loading...\",\n      isLoading: true,\n      errors: false\n    }\n  }\n\n  componentDidMount() {\n    var context = this;\n\n    $.ajax({\n      url: \"/api/v1/time_deposit_collections/fetch_members\",\n      method: 'GET',\n      data: {\n        id: context.props.data.id\n      },\n      success: function(response) {\n        context.setState({\n          members: response.members,\n          isLoading: false,\n          message: \"\"\n        });\n      },\n      error: function(response) {\n        console.log(response);\n        context.setState({\n          isLoading: false,\n          message: \"Error!\"\n        });\n      }\n    });\n  }\n\n  handleMemberChanged(event) {\n    this.setState({\n      memberId: event.target.value\n    });\n  }\n\n  handleAmountChanged(event) {\n    this.setState({\n      amount: event.target.value\n    });\n  }\n\n  handleLockInPeriodChanged(event) {\n    this.setState({\n      lockInPeriod: event.target.value\n    });\n  }\n\n  handleClick() {\n    var context = this;\n\n    this.setState({\n      errors: false,\n      isLoading: true,\n      message: \"Loading...\"\n    });\n\n    if(this.state.memberId) {\n      $.ajax({\n        url: \"/api/v1/time_deposit_collections/add_member\",\n        method: 'POST',\n        data: {\n          authenticity_token: context.props.authenticityToken,\n          member_id: context.state.memberId,\n          amount: context.state.amount,\n          lock_in_period: context.state.lockInPeriod,\n          id: context.props.data.id\n        },\n        success: function(response) {\n          context.setState({\n            errors: false,\n            message: \"Success! Redirecting...\"\n          });\n\n          window.location.reload();\n        },\n        error: function(response) { \n          try {\n            context.setState({\n              errors: JSON.parse(response.responseText),\n              isLoading: false,\n              message: \"\"\n            });\n          } catch(err) {\n            alert(\"Something went wrong\");\n            context.setState({\n              errors: false,\n              message: \"Error!\",\n              isLoading: false\n            });\n          }\n        }\n      });\n    } else {\n      this.setState({\n        isLoading: false,\n        message: \"Member not selected\"\n      });\n    }\n  }\n\n  renderLockInPeriodOptions() {\n    var records = [];\n\n    records.push(\n      <option key={\"lock-in-90\"} value={90}>\n        90 Days / 3 Months\n      </option>\n    );\n\n    records.push(\n      <option key={\"lock-in-180\"} value={180}>\n        180 Days / 6 Months\n      </option>\n    );\n\n    records.push(\n      <option key={\"lock-in-270\"} value={270}>\n        270 Days / 9 Months\n      </option>\n    );\n\n    records.push(\n      <option key={\"lock-in-360\"} value={360}>\n        360 Days / 12 Months\n      </option>\n    );\n\n    return records;\n  }\n\n  renderOptions() {\n    var records = [];\n    var members = this.state.members;\n\n    records.push(\n      <option key=\"null\">\n        -- SELECT --\n      </option>\n    );\n\n    for(var i = 0; i < members.length; i++) {\n      records.push(\n        <option key={\"member-\" + i} value={members[i].id}>\n          {members[i].name} ({members[i].center.name})\n        </option>\n      );\n    }\n\n    return  records;\n  }\n\n  renderErrorDisplay() {\n    if(this.state.errors) {\n      return  (\n        <ErrorDisplay\n          errors={this.state.errors}\n        />\n      );\n    } else {\n      return  (\n        <div>\n        </div>\n      );\n    }\n  }\n\n  render() {\n    if(this.props.data.status == \"pending\") {\n      return  (\n        <div>\n          <h5>\n            Add Transaction\n          </h5>\n          <div className=\"card\">\n            <div className=\"card-body\">\n              {this.renderErrorDisplay()}\n              <div className=\"row\">\n                <div className=\"col-md-6\">\n                  <div className=\"form-group\">\n                    <label>\n                      Member\n                    </label>\n                    <select\n                      className=\"form-control\"\n                      onChange={this.handleMemberChanged.bind(this)}\n                      value={this.state.memberId}\n                      disabled={this.state.isLoading}\n                    >\n                      {this.renderOptions()}\n                    </select>\n                    <div>\n                      {this.state.message}\n                    </div>\n                  </div>\n                </div>\n                <div className=\"col-md-2\">\n                  <div className=\"form-group\">\n                    <label>\n                      Amount\n                    </label>\n                    <input\n                      type=\"number\"\n                      className=\"form-control\"\n                      value={this.state.amount}\n                      onChange={this.handleAmountChanged.bind(this)}\n                      disabled={this.state.isLoading}\n                    />\n                  </div>\n                </div>\n                <div className=\"col-md-2\">\n                  <div className=\"form-group\">\n                    <label>\n                      Lock-in Period\n                    </label>\n                    <select\n                      className=\"form-control\"\n                      onChange={this.handleLockInPeriodChanged.bind(this)}\n                      value={this.state.lockInPeriod}\n                      disabled={this.state.isLoading}\n                    >\n                      {this.renderLockInPeriodOptions()}\n                    </select>\n                  </div>\n                </div>\n                <div className=\"col-md-2\">\n                  <div className=\"form-group\">\n                    <label>\n                      Actions\n                    </label>\n                    <div className=\"form-group\">\n                      <div className=\"btn-group\">\n                        <button\n                          className=\"btn btn-primary btn-block\"\n                          disabled={this.state.isLoading}\n                          onClick={this.handleClick.bind(this)}\n                        >\n                          <span className=\"fa fa-plus\" />\n                          Add Transaction\n                        </button>\n                      </div>\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n      );\n    } else {\n      return  (\n        <div>\n        </div>\n      );\n    }\n  }\n}\n", "import React from 'react';\nimport $ from 'jquery';\nimport moment from 'moment';\n\nimport SkCubeLoading from '../SkCubeLoading';\nimport WithdrawalCollectionUITable from './WithdrawalCollectionUITable';\nimport AccountingEntryPreview from '../accounting/AccountingEntryPreview';\nimport AddRecord from './AddRecord';\nimport {numberWithCommas} from '../utils/helpers';\n\nexport default class WithdrawalCollectionUIComponent extends React.Component {\n  constructor(props) {\n    super(props);\n\n    this.state  = {\n      isLoading: true,\n      isSaving: false,\n      data: false,\n      accountingCodes: []\n    };\n  }\n\n  componentDidMount() {\n    this.fetchWithdrawalCollectionData();\n    this.fetchAccountingCodes();\n  }\n\n    fetchAccountingCodes() {\n      $.ajax({\n        url: \"/api/v1/withdrawal_collections/fetch_accounting_codes\",\n        method: \"GET\",\n        success: (res) => this.setState({ accountingCodes: res.accounting_codes || [] }),\n        error: () => console.log(\"Failed to load accounting codes\")\n      });\n    }\n\n  fetchWithdrawalCollectionData() {\n    var context = this;\n\n    $.ajax({\n      url: \"/api/v1/withdrawal_collections/fetch\",\n      method: 'GET',\n      data: {\n        id: this.props.id\n      },\n      success: function(response) {\n        context.setState({\n          isLoading: false,\n          data: response\n        });\n      },\n      error: function(response) {\n        console.log(response);\n        alert(\"Error in fetching withdrawal_collection\");\n      }\n    });\n  }\n\n  updateData(data) {\n    this.setState({\n      data: data\n    });\n  }\n\n  handleRemoveClicked(index) {\n    alert(\"Not implemented for this module\");\n  }\n\n  saveParticular() {\n    var context       = this;\n    var data          = context.state.data;\n    var newParticular = data.data.accounting_entry.particular;\n\n    context.setState({\n      isSaving: true\n    });\n\n    $.ajax({\n      url: \"/api/v1/withdrawal_collections/update_particular\",\n      method: 'POST',\n      data: {\n        id: context.state.data.id,\n        authenticity_token: context.props.authenticityToken,\n        particular: newParticular\n      },\n      success: function(response) {\n        context.setState({\n          isSaving: false\n        });\n      },\n      error: function(response) {\n        alert(\"Error in updating particular\");\n      }\n    });\n  }\n\n  modifyParticular(event) {\n    var context       = this;\n    var newParticular = event.target.value;\n    var data          = context.state.data;\n\n    data.data.accounting_entry.particular = newParticular;\n\n    context.setState({\n      data: data\n    });\n  }\n\n  renderParticular() {\n    var particular  = this.state.data.data.accounting_entry.particular;\n\n    if(this.state.data.status == \"pending\") {\n      return  (\n        <div className=\"row\">\n          <div className=\"col-md-10\">\n            <input \n              value={particular} \n              onChange={this.modifyParticular.bind(this)} \n              disabled={this.state.isSaving}\n              className=\"form-control\"\n            />\n          </div>\n          <div className=\"col-md-2\">\n            <button\n              className=\"btn btn-info btn-block\"\n              disabled={this.state.isSaving}\n              onClick={this.saveParticular.bind(this)}\n            >\n              <span className=\"bi bi-check\"/>\n              Save\n            </button>\n          </div>\n        </div>\n      );\n    } else {\n      return particular;\n    }\n  }\n\n  render() {\n    if(this.state.isLoading) {\n      return (\n        <div>\n          <SkCubeLoading/>\n        </div>\n      );\n    } else {\n      var accounting_entry_data = this.state.data.data.accounting_entry;\n      console.log(accounting_entry_data);\n\n      return (\n        <div>\n          <table className=\"table table-sm table-bordered\">\n            <tbody>\n              <tr>\n                <th>\n                  Total Collected:\n                </th>\n                <td className=\"text-end\">\n                  <strong>\n                    {numberWithCommas(this.state.data.data.total_collected)}\n                  </strong>\n                </td>\n              </tr>\n              <tr>\n                <th>\n                  Particular:\n                </th>\n                <td className=\"text-end\">\n                  {this.renderParticular()}\n                </td>\n              </tr>\n            </tbody>\n          </table>\n          <AddRecord\n            data={this.state.data}\n            authenticityToken={this.props.authenticityToken}\n          />\n          <hr/>\n          <WithdrawalCollectionUITable\n            id={this.props.id}\n            data={this.state.data}\n            updateData={this.updateData.bind(this)}\n            authenticityToken={this.props.authenticityToken}\n          />\n          <hr/>\n          <h6>\n            Accounting Entry\n          </h6>\n          <AccountingEntryPreview\n            contextType=\"withdrawal_collection\"\n            id={this.props.id}\n            book={accounting_entry_data.book}\n            particular={accounting_entry_data.particular}\n            datePrepared={accounting_entry_data.date_prepared}\n            referenceNumber={accounting_entry_data.reference_number}\n            approved_by={accounting_entry_data.approved_by}\n            branch={accounting_entry_data.branch_name}\n            balanced={true}\n            // status={accounting_entry_data.status}\n            status={this.state.data.status}\n            journalEntries={accounting_entry_data.journal_entries}\n            isLoading={this.state.isLoading}\n            // handleRemoveClicked={this.handleRemoveClicked.bind(this)}\n            data={accounting_entry_data.data}\n            accountingCodes={this.state.accountingCodes}\n            onUpdated={() => this.fetchWithdrawalCollectionData()}\n          />\n        </div>\n      );\n    }\n  }\n}\n", "import React from 'react';\nimport ReactTable from 'react-table';\nimport Modal from 'react-modal';\nimport $ from \"jquery\";\n\nimport {numberWithCommas} from '../utils/helpers';\nimport {customStyles} from '../utils/consts';\n\nimport ErrorDisplay from '../ErrorDisplay';\n\nexport default class WithdrawalCollectionUITable extends React.Component {\n  constructor(props) {\n    super(props);\n\n    this.state  = {\n      currentTransaction: false,\n      currentAmountValue: false,\n      currentMember: false,\n      modalIsOpen: false,\n      isLoading: false,\n      errors: false\n    };\n  }\n\n  buildHeaders() {\n    var headers = [];\n\n    headers.push(\n      <th key={\"h-member\"} style={{minWidth: \"300px\"}}>\n        Member\n      </th>\n    );\n\n    for(var i = 0; i < this.props.data.data.headers.length; i++) {\n      headers.push(\n        <th key={\"h-\" + i} style={{minWidth: \"100px\"}}>\n          <center>\n            <small>\n              {this.props.data.data.headers[i]}\n            </small>\n          </center>\n        </th>\n      );\n    }\n\n    headers.push(\n      <th  key={\"h-total\"} style={{minWidth: \"40px\"}}>\n        <center>\n          TOTAL\n        </center>\n      </th>\n    );\n\n    return headers;\n  }\n\n  handleRemoveRecord(id) {\n    var context = this;\n\n    this.setState({\n      isLoading: true\n    });\n\n    $.ajax({\n      url: \"/api/v1/withdrawal_collections/remove_member\",\n      method: 'POST',\n      data: {\n        authenticity_token: context.props.authenticityToken,\n        member_id: id,\n        id: context.props.data.id\n      },\n      success: function(response) {\n        context.setState({\n          errors: false,\n          message: \"Success! Redirecting...\"\n        });\n\n        window.location.reload();\n      },\n      error: function(response) {\n        try {\n          console.log(response);\n          context.setState({\n            errors: JSON.parse(response.responseText),\n            isLoading: false,\n            message: \"Error\"\n          });\n        } catch(err) {\n          context.setState({\n            errors: false,\n            message: \"Error!\",\n            isLoading: false\n          });\n        }\n      }\n    });\n  }\n\n  buildRecords() {\n    var records = [];\n\n    for(var i = 0; i < this.props.data.data.records.length; i++) {\n      var components  = [];\n      var record      = this.props.data.data.records[i];\n      var member      = record.member;\n\n      var btnDelete = \"\";\n      if(this.props.data.status == \"pending\") {\n        btnDelete = (\n          <button\n            className=\"btn btn-danger btn-sm\"\n            onClick={this.handleRemoveRecord.bind(this, member.id)}\n            disabled={this.state.isLoading}\n          >\n            <span className=\"bi bi-x\"/>\n          </button>\n        );\n      }\n\n      components.push(\n        <td key={\"c-member-\" + member.id}>\n          {btnDelete}\n          <strong>\n            <a href={\"/members/\" + member.id + \"/display\"} target=\"_blank\">\n              {this.props.data.data.records[i].member.full_name}\n            </a>\n          </strong>\n        </td>\n      );\n\n      for(var j = 0; j < this.props.data.data.records[i].records.length; j++) {\n        var paymentRecord = this.props.data.data.records[i].records[j];\n        if(this.props.data.status == \"pending\") {\n          components.push(\n            <td key={\"withdrawal-payment-\" + j} className=\"text-end\">\n              <strong>\n                <a \n                  href=\"#\"\n                  onClick={this.handleTransactionClicked.bind(this, paymentRecord, member)}\n                >\n                  {numberWithCommas(paymentRecord.amount)}\n                </a>\n              </strong>\n            </td>\n          );\n        } else {\n          components.push(\n            <td key={\"na-\" + member.id + \"-\" + j} className=\"text-end\">\n              {numberWithCommas(paymentRecord.amount)}\n            </td>\n          )\n        }\n      }\n\n      components.push(\n        <td key={\"c-member-total-\" + member.id} className=\"text-end\">\n          <strong>\n            {numberWithCommas(this.props.data.data.records[i].total_collected)}\n          </strong>\n        </td>\n      );\n\n      records.push(\n        <tr key={\"member-row-\" + i}>\n          {components}\n        </tr>\n      );\n    }\n\n    return records;\n  }\n\n  buildTotals() {\n    var records = [];\n\n    records.push(\n      <td key=\"total-label\">\n        <strong>\n          TOTAL\n        </strong>\n      </td>\n    );\n\n    var totals  = this.props.data.data.totals;\n    for(var i = 0; i < totals.length; i++) {\n      records.push(\n        <td key={\"total-withdrawal-payment-\" + i} className=\"text-end\">\n          <strong>\n            {numberWithCommas(totals[i].amount)}\n          </strong>\n        </td>\n      );\n    }\n\n    records.push(\n      <td key=\"grand-total\" className=\"text-end\">\n        <div className=\"badge bg-success\">\n          <strong>\n            {numberWithCommas(this.props.data.data.total_collected)}\n          </strong>\n        </div>\n      </td>\n    )\n\n    return (\n      <tr key={\"totals-row\"}>\n        {records}\n      </tr>\n    );\n  }\n\n  handleTransactionClicked(paymentRecord, member) {\n    this.setState({\n      modalIsOpen: true,\n      currentTransaction: paymentRecord,\n      currentMember: member,\n      currentAmountValue: paymentRecord.amount\n    });\n  }\n\n  handleModalClose() {\n    var currentTransaction    = this.state.currentTransaction;\n    currentTransaction.amount = this.state.currentAmountValue;\n\n    this.setState({\n      modalIsOpen: false,\n      currentTransaction: false,\n      currentMember: false,\n      currentAmountValue: false,\n      errors: false\n    });\n  }\n\n  handleInputAmountChanged(event) {\n    var currentTransaction  = this.state.currentTransaction;\n\n    if(currentTransaction) {\n      currentTransaction.amount = event.target.value;\n\n      this.setState({\n        currentTransaction: currentTransaction\n      });\n    }\n  }\n\n  renderTransactionParticular() {\n    var currentTransaction  = this.state.currentTransaction;\n    var currentMember       = this.state.currentMember;\n\n    return (\n      <h5>\n        SAVINGS\n      </h5>\n    );\n  }\n\n  handleModalConfirm() {\n    var currentTransaction  = this.state.currentTransaction;\n    var currentMember       = this.state.currentMember;\n    var context             = this;\n\n    var data  = {\n      current_transaction: currentTransaction,\n      current_member: currentMember,\n      id: this.props.id,\n      authenticity_token: this.props.authenticityToken\n    };\n\n    this.setState({\n      isLoading: true\n    });\n\n    $.ajax({\n      url: \"/api/v1/withdrawal_collections/modify_transaction_record\",\n      method: \"POST\",\n      data: data,\n      success: function(response) {\n        //window.location.reload();\n        context.setState({\n          currentTransaction: false,\n          currentAmountValue: false,\n          currentMember: false,\n          modalIsOpen: false,\n          isLoading: false,\n          errors: false\n        });\n\n        context.props.updateData(response);\n      },\n      error: function(response) {\n        try {\n          var errors  = JSON.parse(response.responseText).errors;\n\n          context.setState({\n            isLoading: false,\n            errors: errors\n          });\n        } catch(err) {\n          console.log(response);\n          alert(\"Something went wrong!\");\n          context.setState({\n            isLoading: false\n          });\n        }\n      }\n    });\n  }\n\n  renderLoadingStatus() {\n    if(this.state.isLoading) {\n      return  (\n        <div className=\"callout callout-info\">\n          Loading...\n        </div>\n      );\n    } else if(this.state.errors) {\n      return (\n        <ErrorDisplay\n          errors={this.state.errors}\n        />\n      );\n    }\n  }\n\n  renderModalContent() {\n    var currentTransaction  = this.state.currentTransaction;\n    var currentMember       = this.state.currentMember;\n\n    if(currentTransaction) {\n      return (\n        <div className=\"container\">\n          <div className=\"row\">\n            <div className=\"col\">\n              <h5>\n                Member: &nbsp;\n                <span className=\"text-muted\">\n                  {currentMember.full_name}\n                </span>\n              </h5>\n              <h5>\n                Transaction Type:  &nbsp;\n                <span className=\"text-muted\">\n                  {currentTransaction.record_type}\n                </span>\n              </h5>\n              {this.renderTransactionParticular()}\n\n              <hr/>\n\n              <input\n                type=\"number\"\n                className=\"form-control\"\n                value={currentTransaction.amount}\n                disabled={this.state.isLoading}\n                onChange={this.handleInputAmountChanged.bind(this)}\n              />\n              {this.renderLoadingStatus()}\n            </div>\n          </div>\n          <hr/>\n          <div className=\"row\">\n            <div className=\"col\">\n              <center>\n                <div className=\"btn-group\">\n                  <button \n                    className=\"btn btn-success\" \n                    onClick={this.handleModalConfirm.bind(this)}\n                    disabled={this.state.isLoading}\n                  >\n                    <span className=\"bi bi-check\" />\n                    Confirm Change\n                  </button>\n\n                  <button \n                    className=\"btn btn-danger\" \n                    onClick={this.handleModalClose.bind(this)}\n                    disabled={this.state.isLoading}\n                  >\n                    <span className=\"bi bi-x\" />\n                    Cancel Change\n                  </button>\n                </div>\n              </center>\n            </div>\n          </div>\n        </div>\n      );\n    } else {\n      return (\n        <div>\n          Internal Error\n        </div>\n      );\n    }\n  }\n\n  render() {\n    return (\n      <div className=\"table-responsive\">\n        <Modal\n          isOpen={this.state.modalIsOpen}\n          style={customStyles}\n        >\n          {this.renderModalContent()}\n        </Modal>\n        {this.renderLoadingStatus()}\n        <table className=\"table table-bordered table-hover table-sm\">\n          <thead>\n            <tr>\n              {this.buildHeaders()}\n            </tr>\n          </thead>\n          <tbody>\n            {this.buildRecords()}\n          </tbody>\n          <tfoot>\n            {this.buildTotals()}\n          </tfoot>\n        </table>\n      </div>\n    );\n  }\n}\n", "import React from 'react';\nimport ErrorDisplay from '../ErrorDisplay';\nimport $ from \"jquery\";\n\nexport default class AddRecord extends React.Component {\n  constructor(props) {\n    super(props);\n\n    this.state  = {\n      members: [],\n      memberId: \"\",\n      message: \"Loading...\",\n      isLoading: true,\n      errors: false\n    }\n  }\n\n  componentDidMount() {\n    var context = this;\n\n    $.ajax({\n      url: \"/api/v1/withdrawal_collections/fetch_members\",\n      method: 'GET',\n      data: {\n        id: context.props.data.id\n      },\n      success: function(response) {\n        context.setState({\n          members: response.members,\n          isLoading: false,\n          message: \"\"\n        });\n      },\n      error: function(response) {\n        console.log(response);\n        context.setState({\n          isLoading: false,\n          message: \"Error!\"\n        });\n      }\n    });\n  }\n\n  handleMemberChanged(event) {\n    this.setState({\n      memberId: event.target.value\n    });\n  }\n\n  handleClick() {\n    var context = this;\n\n    this.setState({\n      errors: false,\n      isLoading: true,\n      message: \"Loading...\"\n    });\n\n    if(this.state.memberId) {\n      $.ajax({\n        url: \"/api/v1/withdrawal_collections/add_member\",\n        method: 'POST',\n        data: {\n          authenticity_token: context.props.authenticityToken,\n          member_id: context.state.memberId,\n          id: context.props.data.id\n        },\n        success: function(response) {\n          context.setState({\n            errors: false,\n            message: \"Success! Redirecting...\"\n          });\n\n          window.location.reload();\n        },\n        error: function(response) { \n          try {\n            context.setState({\n              errors: JSON.parse(response.responseText),\n              isLoading: false,\n              message: \"\"\n            });\n          } catch(err) {\n            alert(\"Something went wrong\");\n            context.setState({\n              errors: false,\n              message: \"Error!\",\n              isLoading: false\n            });\n          }\n        }\n      });\n    } else {\n      this.setState({\n        isLoading: false,\n        message: \"Member not selected\"\n      });\n    }\n  }\n\n  renderOptions() {\n    var records = [];\n    var members = this.state.members;\n\n    records.push(\n      <option key=\"null\">\n        -- SELECT --\n      </option>\n    );\n\n    for(var i = 0; i < members.length; i++) {\n      records.push(\n        <option key={\"member-\" + i} value={members[i].id}>\n          {members[i].name} ({members[i].center.name})\n        </option>\n      );\n    }\n\n    return  records;\n  }\n\n  renderErrorDisplay() {\n    if(this.state.errors) {\n      return  (\n        <ErrorDisplay\n          errors={this.state.errors}\n        />\n      );\n    } else {\n      return  (\n        <div>\n        </div>\n      );\n    }\n  }\n\n  render() {\n    if(this.props.data.status == \"pending\") {\n      return  (\n        <div>\n          <h5>\n            Add Transaction\n          </h5>\n          <div className=\"card\">\n            <div className=\"card-body\">\n              {this.renderErrorDisplay()}\n              <div className=\"row\">\n                <div className=\"col-md-10\">\n                  <select\n                    className=\"form-control\"\n                    onChange={this.handleMemberChanged.bind(this)}\n                    value={this.state.memberId}\n                    disabled={this.state.isLoading}\n                  >\n                    {this.renderOptions()}\n                  </select>\n                  <div>\n                    {this.state.message}\n                  </div>\n                </div>\n                <div className=\"col-md-2\">\n                  <button\n                    className=\"btn btn-primary btn-block\"\n                    disabled={this.state.isLoading}\n                    onClick={this.handleClick.bind(this)}\n                  >\n                    <span className=\"fa fa-plus\" />\n                    Add Transaction\n                  </button>\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n      );\n    } else {\n      return  (\n        <div>\n        </div>\n      );\n    }\n  }\n}\n", "import React from 'react';\nimport $ from 'jquery';\nimport moment from 'moment';\n\nimport SkCubeLoading from '../SkCubeLoading';\nimport InsuranceFundTransferCollectionUITable from './InsuranceFundTransferCollectionUITable';\nimport AccountingEntryPreview from '../accounting/AccountingEntryPreview';\nimport AddRecord from './AddRecord';\nimport LoadCenter from './LoadCenter';\nimport {numberWithCommas} from '../utils/helpers';\n\nexport default class InsuranceFundTransferCollectionUIComponent extends React.Component {\n  constructor(props) {\n    super(props);\n\n    this.state  = {\n      isLoading: true,\n      isSaving: false,\n      data: false\n    };\n  }\n\n  componentDidMount() {\n    this.fetchInsuranceFundTransferCollectionData();\n  }\n\n  fetchInsuranceFundTransferCollectionData() {\n    var context = this;\n\n    $.ajax({\n      url: \"/api/v1/insurance_fund_transfer_collections/fetch\",\n      method: 'GET',\n      data: {\n        id: this.props.id\n      },\n      success: function(response) {\n        context.setState({\n          isLoading: false,\n          data: response\n        });\n      },\n      error: function(response) {\n        console.log(response);\n        alert(\"Error in fetching insurance fund_transfer_collection\");\n      }\n    });\n  }\n\n  updateData(data) {\n    this.setState({\n      data: data\n    });\n  }\n\n  handleRemoveClicked(index) {\n    alert(\"Not implemented for this module\");\n  }\n\n  saveOrNumber() {\n    var context     = this;\n    var data        = context.state.data;\n    var newOrNumber = data.data.or_number;\n\n    context.setState({\n      isSaving: true\n    });\n\n    $.ajax({\n      url: \"/api/v1/insurance_fund_transfer_collections/update_or_number\",\n      method: 'POST',\n      data: {\n        id: context.state.data.id,\n        authenticity_token: context.props.authenticityToken,\n        or_number: newOrNumber\n      },\n      success: function(response) {\n        context.setState({\n          isSaving: false\n        });\n      },\n      error: function(response) {\n        alert(\"Error in updating or number\");\n      }\n    });\n  }\n\n  modifyOrNumber(event) {\n    var context     = this;\n    var newOrNumber = event.target.value;\n    var data        = context.state.data;\n\n    data.data.or_number  = newOrNumber;\n\n    context.setState({\n      data: data\n    });\n  }\n\n  saveParticular() {\n    var context       = this;\n    var data          = context.state.data;\n    var newParticular = data.data.particular;\n\n    context.setState({\n      isSaving: true\n    });\n\n    $.ajax({\n      url: \"/api/v1/insurance_fund_transfer_collections/update_particular\",\n      method: 'POST',\n      data: {\n        id: context.state.data.id,\n        authenticity_token: context.props.authenticityToken,\n        particular: newParticular\n      },\n      success: function(response) {\n        context.setState({\n          isSaving: false\n        });\n      },\n      error: function(response) {\n        alert(\"Error in updating particular\");\n      }\n    });\n  }\n\n  modifyParticular(event) {\n    var context       = this;\n    var newParticular = event.target.value;\n    var data          = context.state.data;\n\n    data.data.particular = newParticular;\n\n    context.setState({\n      data: data\n    });\n  }\n\n  saveReferenceNumber() {\n    var context            = this;\n    var data               = context.state.data;\n    var newReferenceNumber = data.data.reference_number;\n\n    context.setState({\n      isSaving: true\n    });\n\n    $.ajax({\n      url: \"/api/v1/insurance_fund_transfer_collections/update_reference_number\",\n      method: 'POST',\n      data: {\n        id: context.state.data.id,\n        authenticity_token: context.props.authenticityToken,\n        reference_number: newReferenceNumber\n      },\n      success: function(response) {\n        context.setState({\n          isSaving: false\n        });\n      },\n      error: function(response) {\n        alert(\"Error in updating reference number\");\n      }\n    });\n  }\n\n  modifyReferenceNumber(event) {\n    var context                 = this;\n    var newReferenceNumber      = event.target.value;\n    var data                    = context.state.data;\n\n    data.data.reference_number  = newReferenceNumber;\n\n    context.setState({\n      data: data\n    });\n  }\n\n  renderOrNumber() {\n    var orNumber  = this.state.data.data.or_number;\n\n    if(this.state.data.status == \"pending\") {\n      return  (\n        <div className=\"row\">\n          <div className=\"col-md-10\">\n            <input \n              value={orNumber} \n              onChange={this.modifyOrNumber.bind(this)} \n              disabled={this.state.isSaving}\n              className=\"form-control\"\n            />\n          </div>\n          <div className=\"col-md-2\">\n            <button\n              className=\"btn btn-info btn-block\"\n              disabled={this.state.isSaving}\n              onClick={this.saveOrNumber.bind(this)}\n            >\n              <span className=\"bi bi-check\"/>\n              Save\n            </button>\n          </div>\n        </div>\n      );\n    } else {\n      return this.state.data.data.or_number;\n    }\n  }\n\n  renderParticular() {\n    var particular  = this.state.data.data.particular;\n\n    if(this.state.data.status == \"pending\") {\n      return  (\n        <div className=\"row\">\n          <div className=\"col-md-10\">\n            <input \n              value={particular} \n              onChange={this.modifyParticular.bind(this)} \n              disabled={this.state.isSaving}\n              className=\"form-control\"\n            />\n          </div>\n          <div className=\"col-md-2\">\n            <button\n              className=\"btn btn-info btn-block\"\n              disabled={this.state.isSaving}\n              onClick={this.saveParticular.bind(this)}\n            >\n              <span className=\"bi bi-check\"/>\n              Save\n            </button>\n          </div>\n        </div>\n      );\n    } else {\n      return particular;\n    }\n  }\n\n  renderReferenceNumber() {\n    var referenceNumber  = this.state.data.data.reference_number;\n\n    if(this.state.data.status == \"pending\") {\n      return  (\n        <div className=\"row\">\n          <div className=\"col-md-10\">\n            <input \n              value={referenceNumber} \n              onChange={this.modifyReferenceNumber.bind(this)} \n              disabled={this.state.isSaving}\n              className=\"form-control\"\n            />\n          </div>\n          <div className=\"col-md-2\">\n            <button\n              className=\"btn btn-info btn-block\"\n              disabled={this.state.isSaving}\n              onClick={this.saveReferenceNumber.bind(this)}\n            >\n              <span className=\"bi bi-check\"/>\n              Save\n            </button>\n          </div>\n        </div>\n      );\n    } else {\n      return this.state.data.data.reference_number;\n    }\n  }\n\n  render() {\n    if(this.state.isLoading) {\n      return (\n        <div>\n          <SkCubeLoading/>\n        </div>\n      );\n    } else {\n\n      return (\n        <div>\n          <table className=\"table table-sm table-bordered\">\n            <tbody>\n              <tr>\n                <th>\n                  Total Collected:\n                </th>\n                <td className=\"text-end\">\n                  <strong>\n                    {numberWithCommas(this.state.data.data.total_collected)}\n                  </strong>\n                </td>\n              </tr>\n              <tr>\n                <th>\n                  OR Number:\n                </th>\n                <td className=\"text-end\">\n                  {this.renderOrNumber()}\n                </td>\n              </tr>\n              <tr>\n                <th>\n                  Particular:\n                </th>\n                <td className=\"text-end\">\n                  {this.renderParticular()}\n                </td>\n              </tr>\n              <tr>\n                <th>\n                  Reference Number:\n                </th>\n                <td className=\"text-end\">\n                  {this.renderReferenceNumber()}\n                </td>\n              </tr>\n            </tbody>\n          </table>\n          <AddRecord\n            data={this.state.data}\n            authenticityToken={this.props.authenticityToken}\n          />\n          <LoadCenter\n            authenticityToken={this.props.authenticityToken}\n            centers={this.props.centers}\n            data={this.state.data}\n          />\n          <hr/>\n          <InsuranceFundTransferCollectionUITable\n            id={this.props.id}\n            data={this.state.data}\n            updateData={this.updateData.bind(this)}\n            authenticityToken={this.props.authenticityToken}\n          />\n          <hr/>\n        </div>\n      );\n    }\n  }\n}\n", "import React from 'react';\nimport $ from 'jquery';\nimport SkCubeLoading from '../SkCubeLoading';\nimport ReactTable from 'react-table';\nimport Modal from 'react-modal';\nimport Toggle from 'react-toggle';\nimport \"react-toggle/style.css\";\n\nimport {numberWithCommas} from '../utils/helpers';\nimport {customStyles} from '../utils/consts';\n\nimport ErrorDisplay from '../ErrorDisplay';\n\nexport default class InsuranceFundTransferCollectionUITable extends React.Component {\n  constructor(props) {\n    super(props);\n\n    this.state  = {\n      currentTransaction: false,\n      currentAmountValue: false,\n      currentMember: false,\n      modalIsOpen: false,\n      isLoading: false,\n      errors: false\n    };\n  }\n\n  buildHeaders() {\n    var headers = [];\n\n    headers.push(\n      <th key={\"h-member\"} style={{minWidth: \"300px\"}}>\n        Member\n      </th>\n    );\n\n    for(var i = 0; i < this.props.data.data.headers.length; i++) {\n      headers.push(\n        <th key={\"h-\" + i} style={{minWidth: \"100px\"}}>\n          <center>\n            <small>\n              {this.props.data.data.headers[i]}\n            </small>\n          </center>\n        </th>\n      );\n    }\n\n    headers.push(\n      <th  key={\"h-total\"} style={{minWidth: \"40px\"}}>\n        <center>\n          TOTAL\n        </center>\n      </th>\n    );\n\n    return headers;\n  }\n\n  ApiBuildHeaders(){\n    var headers = [];\n\n    headers.push(\n      <th key={\"h-member\"} style={{minWidth: \"300px\"}}>\n        Member\n      </th>\n    );\n\n    headers.push(\n      <th style={{minWidth: \"40px\"}}>\n        <center>\n          Referrence Number\n        </center>\n      </th>\n    );\n\n\n    headers.push(\n      <th style={{minWidth: \"40px\"}}>\n        <center>\n          Life Insurance Fund\n        </center>\n      </th>\n    );\n\n    headers.push(\n      <th style={{minWidth: \"40px\"}}>\n        <center>\n          Retirement Fund\n        </center>\n      </th>\n    );\n    \n    headers.push(\n      <th  key={\"h-total\"} style={{minWidth: \"40px\"}}>\n        <center>\n          TOTAL\n        </center>\n      </th>\n    );\n\n    return headers;\n  }\n\n  buildRecords() {\n    var records = [];\n\n    for(var i = 0; i < this.props.data.data.records.length; i++) {\n      var components  = [];\n      var record      = this.props.data.data.records[i];\n      var member      = record.member;\n\n      var btnDelete = \"\";\n      if(this.props.data.status == \"pending\") {\n        btnDelete = (\n          <button\n            className=\"btn btn-danger btn-sm\"\n            onClick={this.handleRemoveRecord.bind(this, member.id)}\n            disabled={this.state.isLoading}\n          >\n            <span className=\"bi bi-x\"/>\n          </button>\n        );\n      }\n\n      var center      = this.props.data.data.records[i].member.center;\n      var centerName  = \"\";\n\n      if(center) {\n        centerName = center.name;\n      }\n\n      var identificationNumber = this.props.data.data.records[i].member.identification_number;\n\n      components.push(\n        <td key={\"c-member-\" + member.id}>\n          {btnDelete}\n          <strong>\n            <a href={\"/members/\" + member.id + \"/display\"} target=\"_blank\">\n              {this.props.data.data.records[i].member.full_name} ({centerName} || {identificationNumber})\n            </a>\n          </strong>\n        </td>\n      );\n\n      for(var j = 0; j < this.props.data.data.records[i].records.length; j++) {\n        var paymentRecord = this.props.data.data.records[i].records[j];\n        if(this.props.data.status == \"pending\") {\n          components.push(\n            <td key={\"insurance-fund-transfer-payment-\" + j} className=\"text-end\">\n              <strong>\n                <a \n                  href=\"#\"\n                  onClick={this.handleTransactionClicked.bind(this, paymentRecord, member)}\n                >\n                  {numberWithCommas(paymentRecord.amount)}\n                </a>\n              </strong>\n            </td>\n          );\n        } else {\n          components.push(\n            <td key={\"na-\" + member.id + \"-\" + j} className=\"text-end\">\n              {numberWithCommas(paymentRecord.amount)}\n            </td>\n          )\n        }\n      }\n\n      components.push(\n        <td key={\"c-member-total-\" + member.id} className=\"text-end\">\n          <strong>\n            {numberWithCommas(this.props.data.data.records[i].total_collected)}\n          </strong>\n        </td>\n      );\n\n      records.push(\n        <tr key={\"member-row-\" + i}>\n          {components}\n        </tr>\n      );\n    }\n\n    return records;\n  }\n\n  ApibuildRecords() {\n    var records = [];\n\n    for(var i = 0; i < this.props.data.data.records.length; i++) {\n      var components  = [];\n      var record      = this.props.data.data.records[i];\n      var member      = record.member;\n\n      var btnDelete = \"\";\n      if(this.props.data.status == \"pending\") {\n        btnDelete = (\n          <button\n            className=\"btn btn-danger btn-sm\"\n            onClick={this.handleRemoveRecord.bind(this, member.id)}\n            disabled={this.state.isLoading}\n          >\n            <span className=\"bi bi-x\"/>\n          </button>\n        );\n      }\n\n      var center      = this.props.data.data.records[i].member.center;\n      var centerName  = \"\";\n\n      if(center) {\n        centerName = center.name;\n      }\n\n      var identificationNumber = this.props.data.data.records[i].member.identification_number;\n\n      components.push(\n        <td key={\"c-member-\" + member.id}>\n          {btnDelete}\n          <strong>\n            <a href={\"/members/\" + member.id + \"/display\"} target=\"_blank\">\n              {this.props.data.data.records[i].member.full_name} ({centerName} || {identificationNumber})\n            </a>\n          </strong>\n        </td>\n      );\n\n      for(var j = 0; j < this.props.data.data.records[i].records.length; j++) {\n        var paymentRecord = this.props.data.data.records[i].records[j];\n        console.log(paymentRecord.account_subtype)\n        if(this.props.data.status == \"pending\") {\n          if(paymentRecord.account_subtype == \"Life Insurance Fund\") {\n            components.push(\n              <td>\n                <center>{paymentRecord.reference_num}</center>\n              </td>,\n              <td key={\"insurance-fund-transfer-payment-\" + j} className=\"text-end\">\n                <strong>\n                  <a \n                    href=\"#\"\n                    onClick={this.handleTransactionClicked.bind(this, paymentRecord, member)}\n                  >\n                    {numberWithCommas(paymentRecord.amount)}\n                  </a>\n                </strong>\n              </td>\n            );\n          } else {\n            components.push(\n              <td key={\"insurance-fund-transfer-payment-\" + j} className=\"text-end\">\n                <strong>\n                  <a \n                    href=\"#\"\n                    onClick={this.handleTransactionClicked.bind(this, paymentRecord, member)}\n                  >\n                    {numberWithCommas(paymentRecord.amount)}\n                  </a>\n                </strong>\n              </td>\n            );\n          }\n        }else if(this.props.data.status == \"approved\") {\n          if(paymentRecord.account_subtype == \"Life Insurance Fund\") {\n            components.push(\n              <td>\n                <center>{paymentRecord.reference_num}</center>\n              </td>,\n              <td key={\"insurance-fund-transfer-payment-\" + j} className=\"text-end\">\n                <strong>\n                  <a \n                    href=\"#\"\n                    onClick={this.handleTransactionClicked.bind(this, paymentRecord, member)}\n                  >\n                    {numberWithCommas(paymentRecord.amount)}\n                  </a>\n                </strong>\n              </td>\n            );\n          } else {\n            components.push(\n              <td key={\"insurance-fund-transfer-payment-\" + j} className=\"text-end\">\n                <strong>\n                  <a \n                    href=\"#\"\n                    onClick={this.handleTransactionClicked.bind(this, paymentRecord, member)}\n                  >\n                    {numberWithCommas(paymentRecord.amount)}\n                  </a>\n                </strong>\n              </td>\n            );\n          }\n        }\n      }\n\n      components.push(\n        <td key={\"c-member-total-\" + member.id} className=\"text-end\">\n          <strong>\n            {numberWithCommas(this.props.data.data.records[i].total_collected)}\n          </strong>\n        </td>\n      );\n\n      records.push(\n        <tr key={\"member-row-\" + i}>\n          {components}\n        </tr>\n      );\n    }\n\n    return records;\n  }\n\n  buildTotals() {\n    var records = [];\n\n    records.push(\n      <td key=\"total-label\">\n        <strong>\n          TOTAL\n        </strong>\n      </td>\n    );\n\n    var totals  = this.props.data.data.totals;\n    for(var i = 0; i < totals.length; i++) {\n      records.push(\n        <td key={\"total-insurance-fund-transfer-payment-\" + i} className=\"text-end\">\n          <strong>\n            {numberWithCommas(totals[i].amount)}\n          </strong>\n        </td>,\n      );\n    }\n\n    records.push(\n      <td key=\"grand-total\" className=\"text-end\">\n        <div className=\"badge bg-success\">\n          <strong>\n            {numberWithCommas(this.props.data.data.total_collected)}\n          </strong>\n        </div>\n      </td>\n    )\n\n    return (\n      <tr key={\"totals-row\"}>\n        {records}\n      </tr>\n    );\n  }\n\n  ApibuildTotals() {\n    var records = [];\n\n    records.push(\n      <td key=\"total-label\">\n        <strong>\n          TOTAL\n        </strong>\n      </td>,\n      <td></td>\n    );\n\n    var totals  = this.props.data.data.totals;\n    for(var i = 0; i < totals.length; i++) {\n      records.push(\n        <td key={\"total-insurance-fund-transfer-payment-\" + i} className=\"text-end\">\n          <strong>\n            {numberWithCommas(totals[i].amount)}\n          </strong>\n        </td>\n      );\n    }\n\n    records.push(\n      <td key=\"grand-total\" className=\"text-end\">\n        <div className=\"badge bg-success\">\n          <strong>\n            {numberWithCommas(this.props.data.data.total_collected)}\n          </strong>\n        </div>\n      </td>\n    )\n\n    return (\n      <tr key={\"totals-row\"}>\n        {records}\n      </tr>\n    );\n  }\n\n  handleRemoveRecord(id) {\n    var context = this;\n\n    this.setState({\n      isLoading: true\n    });\n\n    $.ajax({\n      url: \"/api/v1/insurance_fund_transfer_collections/remove_member\",\n      method: 'POST',\n      data: {\n        authenticity_token: context.props.authenticityToken,\n        member_id: id,\n        id: context.props.data.id\n      },\n      success: function(response) {\n        context.setState({\n          errors: false,\n          message: \"Success! Redirecting...\"\n        });\n\n        window.location.reload();\n      },\n      error: function(response) {\n        try {\n          console.log(response);\n          context.setState({\n            errors: JSON.parse(response.responseText),\n            isLoading: false,\n            message: \"Error\"\n          });\n        } catch(err) {\n          context.setState({\n            errors: false,\n            message: \"Error!\",\n            isLoading: false\n          });\n        }\n      }\n    });\n  }\n\n  handleTransactionClicked(paymentRecord, member) {\n    this.setState({\n      modalIsOpen: true,\n      currentTransaction: paymentRecord,\n      currentMember: member,\n      currentAmountValue: paymentRecord.amount\n    });\n  }\n\n  handleModalClose() {\n    var currentTransaction    = this.state.currentTransaction;\n    currentTransaction.amount = this.state.currentAmountValue;\n\n    this.setState({\n      modalIsOpen: false,\n      currentTransaction: false,\n      currentMember: false,\n      currentAmountValue: false,\n      errors: false\n    });\n  }\n\n  handleInputAmountChanged(event) {\n    var currentTransaction  = this.state.currentTransaction;\n\n    if(currentTransaction) {\n      currentTransaction.amount = event.target.value;\n\n      this.setState({\n        currentTransaction: currentTransaction\n      });\n    }\n  }\n\n  renderTransactionParticular() {\n    var currentTransaction  = this.state.currentTransaction;\n    var currentMember       = this.state.currentMember;\n\n    return (\n      <h5>\n        SAVINGS\n      </h5>\n    );\n  }\n\n  handleModalConfirm() {\n    var currentTransaction  = this.state.currentTransaction;\n    var currentMember       = this.state.currentMember;\n    var context             = this;\n\n    var data  = {\n      current_transaction: currentTransaction,\n      current_member: currentMember,\n      id: this.props.id,\n      authenticity_token: this.props.authenticityToken\n    };\n\n    this.setState({\n      isLoading: true\n    });\n\n    $.ajax({\n      url: \"/api/v1/insurance_fund_transfer_collections/modify_transaction_record\",\n      method: \"POST\",\n      data: data,\n      success: function(response) {\n        //window.location.reload();\n        context.setState({\n          currentTransaction: false,\n          currentAmountValue: false,\n          currentMember: false,\n          modalIsOpen: false,\n          isLoading: false,\n          errors: false\n        });\n\n        context.props.updateData(response);\n      },\n      error: function(response) {\n        try {\n          var errors  = JSON.parse(response.responseText).errors;\n\n          context.setState({\n            isLoading: false,\n            errors: errors\n          });\n        } catch(err) {\n          console.log(response);\n          alert(\"Something went wrong!\");\n          context.setState({\n            isLoading: false\n          });\n        }\n      }\n    });\n  }\n\n  renderLoadingStatus() {\n    if(this.state.isLoading) {\n      return  (\n        <div className=\"callout callout-info\">\n          Loading...\n        </div>\n      );\n    } else if(this.state.errors) {\n      return (\n        <ErrorDisplay\n          errors={this.state.errors}\n        />\n      );\n    }\n  }\n\n  renderModalContent() {\n    var currentTransaction  = this.state.currentTransaction;\n    var currentMember       = this.state.currentMember;\n\n    if(currentTransaction) {\n      return (\n        <div className=\"container\">\n          <div className=\"row\">\n            <div className=\"col\">\n              <h5>\n                Member: &nbsp;\n                <span className=\"text-muted\">\n                  {currentMember.full_name}\n                </span>\n              </h5>\n              <h5>\n                Transaction Type:  &nbsp;\n                <span className=\"text-muted\">\n                  {currentTransaction.record_type}\n                </span>\n              </h5>\n              {this.renderTransactionParticular()}\n\n              <hr/>\n\n              <input\n                type=\"number\"\n                className=\"form-control\"\n                value={currentTransaction.amount}\n                disabled={this.state.isLoading}\n                onChange={this.handleInputAmountChanged.bind(this)}\n              />\n              {this.renderLoadingStatus()}\n            </div>\n          </div>\n          <hr/>\n          <div className=\"row\">\n            <div className=\"col\">\n              <center>\n                <div className=\"btn-group\">\n                  <button \n                    className=\"btn btn-success\" \n                    onClick={this.handleModalConfirm.bind(this)}\n                    disabled={this.state.isLoading}\n                  >\n                    <span className=\"bi bi-check\" />\n                    Confirm Change\n                  </button>\n\n                  <button \n                    className=\"btn btn-danger\" \n                    onClick={this.handleModalClose.bind(this)}\n                    disabled={this.state.isLoading}\n                  >\n                    <span className=\"bi bi-x\" />\n                    Cancel Change\n                  </button>\n                </div>\n              </center>\n            </div>\n          </div>\n        </div>\n      );\n    } else {\n      return (\n        <div>\n          Internal Error\n        </div>\n      );\n    }\n  }\n\n  CheckApi(){\n    var hasReferenceNum = false;\n    for(var i = 0; i < this.props.data.data.records.length; i++) {\n      for(var j = 0; j < this.props.data.data.records[i].records.length; j++) {\n        var referrenceRecord = this.props.data.data.records[i].records[j];\n\n        if (referrenceRecord.reference_num){\n          hasReferenceNum = true;\n          break; \n        }\n      }\n\n      if(hasReferenceNum){\n        break;\n      }\n    }\n\n    return hasReferenceNum;\n  }\n\n  render() {\n    const shouldRenderApiHeaders = this.CheckApi();\n\n    return (\n      <>\n        <div className=\"table-responsive\">\n          <Modal\n            isOpen={this.state.modalIsOpen}\n            style={customStyles}\n          >\n            {this.renderModalContent()}\n          </Modal>\n          {this.renderLoadingStatus()}\n          <table className=\"table table-bordered table-hover table-sm\">\n            <thead>\n              <tr>\n                  {shouldRenderApiHeaders\n                  ? this.ApiBuildHeaders() \n                  : this.buildHeaders()}    \n              </tr>\n            </thead>\n            <tbody>\n               {shouldRenderApiHeaders\n                  ? this.ApibuildRecords() \n                  : this.buildRecords()}    \n            </tbody>\n            <tfoot>\n              {shouldRenderApiHeaders\n                  ? this.ApibuildTotals() \n                  : this.buildTotals()} \n            </tfoot>\n          </table>\n        </div>\n      </>\n    );\n  }\n}\n", "import React from 'react';\nimport ErrorDisplay from '../ErrorDisplay';\nimport $ from 'jquery';\n\nexport default class AddRecord extends React.Component {\n  constructor(props) {\n    super(props);\n\n    this.state  = {\n      members: [],\n      memberId: \"\",\n      message: \"Loading...\",\n      isLoading: true,\n      errors: false\n    }\n  }\n\n  componentDidMount() {\n    var context = this;\n\n    $.ajax({\n      url: \"/api/v1/insurance_fund_transfer_collections/fetch_members\",\n      method: 'GET',\n      data: {\n        id: context.props.data.id\n      },\n      success: function(response) {\n        context.setState({\n          members: response.members,\n          isLoading: false,\n          message: \"\"\n        });\n      },\n      error: function(response) {\n        console.log(response);\n        context.setState({\n          isLoading: false,\n          message: \"Error!\"\n        });\n      }\n    });\n  }\n\n  handleMemberChanged(event) {\n    this.setState({\n      memberId: event.target.value\n    });\n  }\n\n  handleClick() {\n    var context = this;\n\n    this.setState({\n      errors: false,\n      isLoading: true,\n      message: \"Loading...\"\n    });\n\n    if(this.state.memberId) {\n      $.ajax({\n        url: \"/api/v1/insurance_fund_transfer_collections/add_member\",\n        method: 'POST',\n        data: {\n          authenticity_token: context.props.authenticityToken,\n          member_id: context.state.memberId,\n          id: context.props.data.id\n        },\n        success: function(response) {\n          context.setState({\n            errors: false,\n            message: \"Success! Redirecting...\"\n          });\n\n          window.location.reload();\n        },\n        error: function(response) { \n          try {\n            context.setState({\n              errors: JSON.parse(response.responseText),\n              isLoading: false,\n              message: \"\"\n            });\n          } catch(err) {\n            alert(\"Something went wrong\");\n            context.setState({\n              errors: false,\n              message: \"Error!\",\n              isLoading: false\n            });\n          }\n        }\n      });\n    } else {\n      this.setState({\n        isLoading: false,\n        message: \"Member not selected\"\n      });\n    }\n  }\n\n  renderOptions() {\n    var records = [];\n    var members = this.state.members;\n\n    records.push(\n      <option key=\"null\">\n        -- SELECT --\n      </option>\n    );\n\n    for(var i = 0; i < members.length; i++) {\n      records.push(\n        <option key={\"member-\" + i} value={members[i].id}>\n          {members[i].name} ({members[i].center.name} || {members[i].identification_number})\n        </option>\n      );\n    }\n\n    return  records;\n  }\n\n  renderErrorDisplay() {\n    if(this.state.errors) {\n      return  (\n        <ErrorDisplay\n          errors={this.state.errors}\n        />\n      );\n    } else {\n      return  (\n        <div>\n        </div>\n      );\n    }\n  }\n\n  render() {\n    if(this.props.data.status == \"pending\") {\n      return  (\n        <div>\n          <h5>\n            Add Transaction\n          </h5>\n          <div className=\"card\">\n            <div className=\"card-body\">\n              {this.renderErrorDisplay()}\n              <div className=\"row\">\n                <div className=\"col-md-10\">\n                  <select\n                    className=\"form-control\"\n                    onChange={this.handleMemberChanged.bind(this)}\n                    value={this.state.memberId}\n                    disabled={this.state.isLoading}\n                  >\n                    {this.renderOptions()}\n                  </select>\n                  <div>\n                    {this.state.message}\n                  </div>\n                </div>\n                <div className=\"col-md-2\">\n                  <button\n                    className=\"btn btn-primary btn-block\"\n                    disabled={this.state.isLoading}\n                    onClick={this.handleClick.bind(this)}\n                  >\n                    <span className=\"fa fa-plus\" />\n                    Add Transaction\n                  </button>\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n      );\n    } else {\n      return  (\n        <div>\n        </div>\n      );\n    }\n  }\n}\n", "import React from 'react';\nimport ErrorDisplay from '../ErrorDisplay';\nimport Select from 'react-select';\nimport $ from 'jquery';\n\nexport default class LoadCenter extends React.Component {\n  constructor(props) {\n    super(props);\n\n    this.state  = {\n      centers: props.centers,\n      message: \"\",\n      isLoading: false,\n      errors: false,\n      currentCenterId: props.centers[0].id\n    }\n  }\n\n  componentDidMount() {\n    var context = this;\n  }\n\n  handleCenterChanged(event) {\n    this.setState({\n      currentCenterId: event.target.value\n    });\n  }\n\n  handleClick() {\n    var context = this;\n\n    this.setState({\n      errors: false,\n      isLoading: true,\n      message: \"Loading...\"\n    });\n\n    $.ajax({\n      url: \"/api/v1/insurance_fund_transfer_collections/load_center\",\n      method: 'POST',\n      data: {\n        authenticity_token: context.props.authenticityToken,\n        center_id: context.state.currentCenterId,\n        id: context.props.data.id\n      },\n      success: function(response) {\n        context.setState({\n          errors: false,\n          message: \"Success! Redirecting...\"\n        });\n\n        window.location.reload();\n      },\n      error: function(response) { \n        try {\n          context.setState({\n            errors: JSON.parse(response.responseText),\n            isLoading: false,\n            message: \"\"\n          });\n        } catch(err) {\n          alert(\"Something went wrong\");\n          context.setState({\n            errors: false,\n            message: \"Error!\",\n            isLoading: false\n          });\n        }\n      }\n    });\n  }\n\n  renderCenterOptions() {\n    var records = [];\n    var centers = this.state.centers;\n\n    for(var i = 0; i < centers.length; i++) {\n      records.push(\n        <option key={\"center-\" + centers[i].id} value={centers[i].id}>\n          {centers[i].name}\n        </option>\n      );\n    }\n\n    return records;\n  }\n\n  renderErrorDisplay() {\n    if(this.state.errors) {\n      return  (\n        <ErrorDisplay\n          errors={this.state.errors}\n        />\n      );\n    } else {\n      return  (\n        <div>\n        </div>\n      );\n    }\n  }\n\n  render() {\n    if(this.props.data.status == \"pending\") {\n      return  (\n        <div>\n          <h5>\n            Load Center\n          </h5>\n          <div className=\"card\">\n            <div className=\"card-body\">\n              {this.renderErrorDisplay()}\n              <div className=\"row\">\n                <div className=\"col-md-10\">\n                  <select \n                    value={this.state.currentCenterId}\n                    className=\"form-control\"\n                    onChange={this.handleCenterChanged.bind(this)}\n                    disabled={this.state.isLoading}\n                  >\n                    {this.renderCenterOptions()}\n                  </select>\n                  <div>\n                    {this.state.message}\n                  </div>\n                </div>\n                <div className=\"col-md-2\">\n                  <button\n                    className=\"btn btn-primary btn-block\"\n                    disabled={this.state.isLoading}\n                    onClick={this.handleClick.bind(this)}\n                  >\n                    <span className=\"fa fa-upload\" />\n                    Load Center\n                  </button>\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n      );\n    } else {\n      return  (\n        <div>\n        </div>\n      );\n    }\n  }\n}\n", "import React from 'react';\nimport $ from 'jquery';\nimport moment from 'moment';\n\nimport SkCubeLoading from '../SkCubeLoading';\nimport InsuranceWithdrawalCollectionUITable from './InsuranceWithdrawalCollectionUITable';\nimport AccountingEntryPreview from '../accounting/AccountingEntryPreview';\nimport AddRecord from './AddRecord';\nimport {numberWithCommas} from '../utils/helpers';\n\nexport default class InsuranceWithdrawalCollectionUIComponent extends React.Component {\n  constructor(props) {\n    super(props);\n\n    this.state  = {\n      isLoading: true,\n      isSaving: false,\n      data: false\n    };\n  }\n\n  componentDidMount() {\n    this.fetchInsuranceWithdrawalCollectionData();\n  }\n\n  fetchInsuranceWithdrawalCollectionData() {\n    var context = this;\n\n    $.ajax({\n      url: \"/api/v1/insurance_withdrawal_collections/fetch\",\n      method: 'GET',\n      data: {\n        id: this.props.id\n      },\n      success: function(response) {\n        context.setState({\n          isLoading: false,\n          data: response\n        });\n      },\n      error: function(response) {\n        console.log(response);\n        alert(\"Error in fetching insurance withdrawal_collection\");\n      }\n    });\n  }\n\n  updateData(data) {\n    this.setState({\n      data: data\n    });\n  }\n\n  handleRemoveClicked(index) {\n    alert(\"Not implemented for this module\");\n  }\n\n  saveParticular() {\n    var context       = this;\n    var data          = context.state.data;\n    var newParticular = data.data.particular;\n\n    context.setState({\n      isSaving: true\n    });\n\n    $.ajax({\n      url: \"/api/v1/insurance_withdrawal_collections/update_particular\",\n      method: 'POST',\n      data: {\n        id: context.state.data.id,\n        authenticity_token: context.props.authenticityToken,\n        particular: newParticular\n      },\n      success: function(response) {\n        context.setState({\n          isSaving: false\n        });\n      },\n      error: function(response) {\n        alert(\"Error in updating particular\");\n      }\n    });\n  }\n\n  modifyParticular(event) {\n    var context       = this;\n    var newParticular = event.target.value;\n    var data          = context.state.data;\n\n    data.data.particular = newParticular;\n\n    context.setState({\n      data: data\n    });\n  }\n\n  renderParticular() {\n    var particular  = this.state.data.data.particular;\n\n    if(this.state.data.status == \"pending\") {\n      return  (\n        <div className=\"row\">\n          <div className=\"col-md-10\">\n            <input \n              value={particular} \n              onChange={this.modifyParticular.bind(this)} \n              disabled={this.state.isSaving}\n              className=\"form-control\"\n            />\n          </div>\n          <div className=\"col-md-2\">\n            <button\n              className=\"btn btn-info btn-block\"\n              disabled={this.state.isSaving}\n              onClick={this.saveParticular.bind(this)}\n            >\n              <span className=\"bi bi-check\"/>\n              Save\n            </button>\n          </div>\n        </div>\n      );\n    } else {\n      return particular;\n    }\n  }\n\n  render() {\n    if(this.state.isLoading) {\n      return (\n        <div>\n          <SkCubeLoading/>\n        </div>\n      );\n    } else {\n\n      return (\n        <div>\n          <table className=\"table table-sm table-bordered\">\n            <tbody>\n              <tr>\n                <th>\n                  Total Collected:\n                </th>\n                <td className=\"text-end\">\n                  <strong>\n                    {numberWithCommas(this.state.data.data.total_collected)}\n                  </strong>\n                </td>\n              </tr>\n              <tr>\n                <th>\n                  Particular:\n                </th>\n                <td className=\"text-end\">\n                  {this.renderParticular()}\n                </td>\n              </tr>\n            </tbody>\n          </table>\n          <AddRecord\n            data={this.state.data}\n            authenticityToken={this.props.authenticityToken}\n          />\n          <hr/>\n          <InsuranceWithdrawalCollectionUITable\n            id={this.props.id}\n            data={this.state.data}\n            updateData={this.updateData.bind(this)}\n            authenticityToken={this.props.authenticityToken}\n          />\n          <hr/>\n        </div>\n      );\n    }\n  }\n}\n", "import React from 'react';\nimport ReactTable from 'react-table';\nimport Modal from 'react-modal';\nimport Toggle from 'react-toggle';\nimport \"react-toggle/style.css\";\n\nimport {numberWithCommas} from '../utils/helpers';\nimport {customStyles} from '../utils/consts';\n\nimport ErrorDisplay from '../ErrorDisplay';\n\nexport default class InsuranceWithdrawalCollectionUITable extends React.Component {\n  constructor(props) {\n    super(props);\n\n    this.state  = {\n      currentTransaction: false,\n      currentAmountValue: false,\n      currentMember: false,\n      modalIsOpen: false,\n      isLoading: false,\n      errors: false\n    };\n  }\n\n  buildHeaders() {\n    var headers = [];\n\n    headers.push(\n      <th key={\"h-member\"} style={{minWidth: \"300px\"}}>\n        Member\n      </th>\n    );\n\n    for(var i = 0; i < this.props.data.data.headers.length; i++) {\n      headers.push(\n        <th key={\"h-\" + i} style={{minWidth: \"100px\"}}>\n          <center>\n            <small>\n              {this.props.data.data.headers[i]}\n            </small>\n          </center>\n        </th>\n      );\n    }\n\n    headers.push(\n      <th  key={\"h-total\"} style={{minWidth: \"40px\"}}>\n        <center>\n          TOTAL\n        </center>\n      </th>\n    );\n\n    return headers;\n  }\n\n  handleRemoveRecord(id) {\n    var context = this;\n\n    this.setState({\n      isLoading: true\n    });\n\n    $.ajax({\n      url: \"/api/v1/insurance_withdrawal_collections/remove_member\",\n      method: 'POST',\n      data: {\n        authenticity_token: context.props.authenticityToken,\n        member_id: id,\n        id: context.props.data.id\n      },\n      success: function(response) {\n        context.setState({\n          errors: false,\n          message: \"Success! Redirecting...\"\n        });\n\n        window.location.reload();\n      },\n      error: function(response) {\n        try {\n          console.log(response);\n          context.setState({\n            errors: JSON.parse(response.responseText),\n            isLoading: false,\n            message: \"Error\"\n          });\n        } catch(err) {\n          context.setState({\n            errors: false,\n            message: \"Error!\",\n            isLoading: false\n          });\n        }\n      }\n    });\n  }\n\n  buildRecords() {\n    var records = [];\n\n    for(var i = 0; i < this.props.data.data.records.length; i++) {\n      var components  = [];\n      var record      = this.props.data.data.records[i];\n      var member      = record.member;\n\n      var btnDelete = \"\";\n      if(this.props.data.status == \"pending\") {\n        btnDelete = (\n          <button\n            className=\"btn btn-danger btn-sm\"\n            onClick={this.handleRemoveRecord.bind(this, member.id)}\n            disabled={this.state.isLoading}\n          >\n            <span className=\"bi bi-x\"/>\n          </button>\n        );\n      }\n\n      components.push(\n        <td key={\"c-member-\" + member.id}>\n          {btnDelete}\n          <strong>\n            <a href={\"/members/\" + member.id + \"/display\"} target=\"_blank\">\n              {this.props.data.data.records[i].member.full_name}\n            </a>\n          </strong>\n        </td>\n      );\n\n      for(var j = 0; j < this.props.data.data.records[i].records.length; j++) {\n        var paymentRecord = this.props.data.data.records[i].records[j];\n        if(this.props.data.status == \"pending\") {\n          components.push(\n            <td key={\"insurance-withdrawal-payment-\" + j} className=\"text-end\">\n              <strong>\n                <a \n                  href=\"#\"\n                  onClick={this.handleTransactionClicked.bind(this, paymentRecord, member)}\n                >\n                  {numberWithCommas(paymentRecord.amount)}\n                </a>\n              </strong>\n            </td>\n          );\n        } else {\n          components.push(\n            <td key={\"na-\" + member.id + \"-\" + j} className=\"text-end\">\n              {numberWithCommas(paymentRecord.amount)}\n            </td>\n          )\n        }\n      }\n\n      components.push(\n        <td key={\"c-member-total-\" + member.id} className=\"text-end\">\n          <strong>\n            {numberWithCommas(this.props.data.data.records[i].total_collected)}\n          </strong>\n        </td>\n      );\n\n      records.push(\n        <tr key={\"member-row-\" + i}>\n          {components}\n        </tr>\n      );\n    }\n\n    return records;\n  }\n\n  buildTotals() {\n    var records = [];\n\n    records.push(\n      <td key=\"total-label\">\n        <strong>\n          TOTAL\n        </strong>\n      </td>\n    );\n\n    var totals  = this.props.data.data.totals;\n    for(var i = 0; i < totals.length; i++) {\n      records.push(\n        <td key={\"total-insurance-withdrawal-payment-\" + i} className=\"text-end\">\n          <strong>\n            {numberWithCommas(totals[i].amount)}\n          </strong>\n        </td>\n      );\n    }\n\n    records.push(\n      <td key=\"grand-total\" className=\"text-end\">\n        <div className=\"badge bg-success\">\n          <strong>\n            {numberWithCommas(this.props.data.data.total_collected)}\n          </strong>\n        </div>\n      </td>\n    )\n\n    return (\n      <tr key={\"totals-row\"}>\n        {records}\n      </tr>\n    );\n  }\n\n  handleTransactionClicked(paymentRecord, member) {\n    this.setState({\n      modalIsOpen: true,\n      currentTransaction: paymentRecord,\n      currentMember: member,\n      currentAmountValue: paymentRecord.amount\n    });\n  }\n\n  handleModalClose() {\n    var currentTransaction    = this.state.currentTransaction;\n    currentTransaction.amount = this.state.currentAmountValue;\n\n    this.setState({\n      modalIsOpen: false,\n      currentTransaction: false,\n      currentMember: false,\n      currentAmountValue: false,\n      errors: false\n    });\n  }\n\n  handleInputAmountChanged(event) {\n    var currentTransaction  = this.state.currentTransaction;\n\n    if(currentTransaction) {\n      currentTransaction.amount = event.target.value;\n\n      this.setState({\n        currentTransaction: currentTransaction\n      });\n    }\n  }\n\n  renderTransactionParticular() {\n    var currentTransaction  = this.state.currentTransaction;\n    var currentMember       = this.state.currentMember;\n\n    return (\n      <h5>\n        SAVINGS\n      </h5>\n    );\n  }\n\n  handleModalConfirm() {\n    var currentTransaction  = this.state.currentTransaction;\n    var currentMember       = this.state.currentMember;\n    var context             = this;\n\n    var data  = {\n      current_transaction: currentTransaction,\n      current_member: currentMember,\n      id: this.props.id,\n      authenticity_token: this.props.authenticityToken\n    };\n\n    this.setState({\n      isLoading: true\n    });\n\n    $.ajax({\n      url: \"/api/v1/insurance_withdrawal_collections/modify_transaction_record\",\n      method: \"POST\",\n      data: data,\n      success: function(response) {\n        //window.location.reload();\n        context.setState({\n          currentTransaction: false,\n          currentAmountValue: false,\n          currentMember: false,\n          modalIsOpen: false,\n          isLoading: false,\n          errors: false\n        });\n\n        context.props.updateData(response);\n      },\n      error: function(response) {\n        try {\n          var errors  = JSON.parse(response.responseText).errors;\n\n          context.setState({\n            isLoading: false,\n            errors: errors\n          });\n        } catch(err) {\n          console.log(response);\n          alert(\"Something went wrong!\");\n          context.setState({\n            isLoading: false\n          });\n        }\n      }\n    });\n  }\n\n  renderLoadingStatus() {\n    if(this.state.isLoading) {\n      return  (\n        <div className=\"callout callout-info\">\n          Loading...\n        </div>\n      );\n    } else if(this.state.errors) {\n      return (\n        <ErrorDisplay\n          errors={this.state.errors}\n        />\n      );\n    }\n  }\n\n  renderModalContent() {\n    var currentTransaction  = this.state.currentTransaction;\n    var currentMember       = this.state.currentMember;\n\n    if(currentTransaction) {\n      return (\n        <div className=\"container\">\n          <div className=\"row\">\n            <div className=\"col\">\n              <h5>\n                Member: &nbsp;\n                <span className=\"text-muted\">\n                  {currentMember.full_name}\n                </span>\n              </h5>\n              <h5>\n                Transaction Type:  &nbsp;\n                <span className=\"text-muted\">\n                  {currentTransaction.record_type}\n                </span>\n              </h5>\n              {this.renderTransactionParticular()}\n\n              <hr/>\n\n              <input\n                type=\"number\"\n                className=\"form-control\"\n                value={currentTransaction.amount}\n                disabled={this.state.isLoading}\n                onChange={this.handleInputAmountChanged.bind(this)}\n              />\n              {this.renderLoadingStatus()}\n            </div>\n          </div>\n          <hr/>\n          <div className=\"row\">\n            <div className=\"col\">\n              <center>\n                <div className=\"btn-group\">\n                  <button \n                    className=\"btn btn-success\" \n                    onClick={this.handleModalConfirm.bind(this)}\n                    disabled={this.state.isLoading}\n                  >\n                    <span className=\"bi bi-check\" />\n                    Confirm Change\n                  </button>\n\n                  <button \n                    className=\"btn btn-danger\" \n                    onClick={this.handleModalClose.bind(this)}\n                    disabled={this.state.isLoading}\n                  >\n                    <span className=\"bi bi-x\" />\n                    Cancel Change\n                  </button>\n                </div>\n              </center>\n            </div>\n          </div>\n        </div>\n      );\n    } else {\n      return (\n        <div>\n          Internal Error\n        </div>\n      );\n    }\n  }\n\n  render() {\n    return (\n      <div className=\"table-responsive\">\n        <Modal\n          isOpen={this.state.modalIsOpen}\n          style={customStyles}\n        >\n          {this.renderModalContent()}\n        </Modal>\n        {this.renderLoadingStatus()}\n        <table className=\"table table-bordered table-hover table-sm\">\n          <thead>\n            <tr>\n              {this.buildHeaders()}\n            </tr>\n          </thead>\n          <tbody>\n            {this.buildRecords()}\n          </tbody>\n          <tfoot>\n            {this.buildTotals()}\n          </tfoot>\n        </table>\n      </div>\n    );\n  }\n}\n", "import React from 'react';\nimport ErrorDisplay from '../ErrorDisplay';\n\nexport default class AddRecord extends React.Component {\n  constructor(props) {\n    super(props);\n\n    this.state  = {\n      members: [],\n      memberId: \"\",\n      message: \"Loading...\",\n      isLoading: true,\n      errors: false\n    }\n  }\n\n  componentDidMount() {\n    var context = this;\n\n    $.ajax({\n      url: \"/api/v1/insurance_withdrawal_collections/fetch_members\",\n      method: 'GET',\n      data: {\n        id: context.props.data.id\n      },\n      success: function(response) {\n        context.setState({\n          members: response.members,\n          isLoading: false,\n          message: \"\"\n        });\n      },\n      error: function(response) {\n        console.log(response);\n        context.setState({\n          isLoading: false,\n          message: \"Error!\"\n        });\n      }\n    });\n  }\n\n  handleMemberChanged(event) {\n    this.setState({\n      memberId: event.target.value\n    });\n  }\n\n  handleClick() {\n    var context = this;\n\n    this.setState({\n      errors: false,\n      isLoading: true,\n      message: \"Loading...\"\n    });\n\n    if(this.state.memberId) {\n      $.ajax({\n        url: \"/api/v1/insurance_withdrawal_collections/add_member\",\n        method: 'POST',\n        data: {\n          authenticity_token: context.props.authenticityToken,\n          member_id: context.state.memberId,\n          id: context.props.data.id\n        },\n        success: function(response) {\n          context.setState({\n            errors: false,\n            message: \"Success! Redirecting...\"\n          });\n\n          window.location.reload();\n        },\n        error: function(response) { \n          try {\n            context.setState({\n              errors: JSON.parse(response.responseText),\n              isLoading: false,\n              message: \"\"\n            });\n          } catch(err) {\n            alert(\"Something went wrong\");\n            context.setState({\n              errors: false,\n              message: \"Error!\",\n              isLoading: false\n            });\n          }\n        }\n      });\n    } else {\n      this.setState({\n        isLoading: false,\n        message: \"Member not selected\"\n      });\n    }\n  }\n\n  renderOptions() {\n    var records = [];\n    var members = this.state.members;\n\n    records.push(\n      <option key=\"null\">\n        -- SELECT --\n      </option>\n    );\n\n    for(var i = 0; i < members.length; i++) {\n      records.push(\n        <option key={\"member-\" + i} value={members[i].id}>\n          {members[i].name} ({members[i].center.name})\n        </option>\n      );\n    }\n\n    return  records;\n  }\n\n  renderErrorDisplay() {\n    if(this.state.errors) {\n      return  (\n        <ErrorDisplay\n          errors={this.state.errors}\n        />\n      );\n    } else {\n      return  (\n        <div>\n        </div>\n      );\n    }\n  }\n\n  render() {\n    if(this.props.data.status == \"pending\") {\n      return  (\n        <div>\n          <h5>\n            Add Transaction\n          </h5>\n          <div className=\"card\">\n            <div className=\"card-body\">\n              {this.renderErrorDisplay()}\n              <div className=\"row\">\n                <div className=\"col-md-10\">\n                  <select\n                    className=\"form-control\"\n                    onChange={this.handleMemberChanged.bind(this)}\n                    value={this.state.memberId}\n                    disabled={this.state.isLoading}\n                  >\n                    {this.renderOptions()}\n                  </select>\n                  <div>\n                    {this.state.message}\n                  </div>\n                </div>\n                <div className=\"col-md-2\">\n                  <button\n                    className=\"btn btn-primary btn-block\"\n                    disabled={this.state.isLoading}\n                    onClick={this.handleClick.bind(this)}\n                  >\n                    <span className=\"fa fa-plus\" />\n                    Add Transaction\n                  </button>\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n      );\n    } else {\n      return  (\n        <div>\n        </div>\n      );\n    }\n  }\n}\n", "import React from 'react';\nimport $ from 'jquery';\n\nimport SkCubeLoading from '../SkCubeLoading';\nimport {numberWithCommas} from '../utils/helpers';\nimport MemberRecord from './MemberRecord';\nimport AccountingEntryPreview from '../accounting/AccountingEntryPreview';\n\nexport default class ShowUI extends React.Component {\n  constructor(props) {\n    super(props);\n\n    this.state  = {\n      isLoading: true,\n      data: false\n    };\n  }\n\n  componentDidMount() {\n    var id                = this.props.id;\n    var authenticityToken = this.props.authenticityToken;\n    var context           = this;\n\n    $.ajax({\n      url: \"/api/v1/monthly_closing_collections/fetch\",\n      method: 'GET',\n      data: {\n        id: id\n      },\n      success: function(response) {\n        context.setState({\n          isLoading: false,\n          data: response\n        });\n      },\n      error: function(response) {\n        alert(\"Error in fetching data\");\n      }\n    });\n  }\n\n  handleRemoveClicked() {\n  }\n\n  renderAccountingEntry() {\n    var context = this;\n\n    if(context.state.data.data.accounting_entry) {\n      var accounting_entry_data = context.state.data.data.accounting_entry;\n      console.log(accounting_entry_data);\n\n      return  (\n        <AccountingEntryPreview\n          book={accounting_entry_data.book}\n          particular={accounting_entry_data.particular}\n          datePrepared={accounting_entry_data.date_prepared}\n          referenceNumber={accounting_entry_data.reference_number}\n          approved_by={accounting_entry_data.approved_by}\n          branch={accounting_entry_data.branch_name}\n          balanced={true}\n          status={accounting_entry_data.status}\n          journalEntries={accounting_entry_data.journal_entries}\n          isLoading={this.state.isLoading}\n          handleRemoveClicked={this.handleRemoveClicked.bind(this)}\n          data={accounting_entry_data.data}\n        />\n      )\n    } else {\n      return  (\n        <h3>\n          No accounting entry data found\n        </h3>\n      );\n    }\n  }\n\n  render() {\n    var context = this;\n\n    if(context.state.isLoading) {\n      return  (\n        <SkCubeLoading/>\n      );\n    } else {\n      console.log(context.state.data);\n\n      var data          = context.state.data.data;\n      var memberRecords = [];\n\n      var totalInterest = 0.00;\n\n      for(var i = 0; i < data.records.length; i++) {\n        totalInterest += parseFloat(data.records[i].interest);\n\n        memberRecords.push(\n          <MemberRecord\n            key={\"member-record-\" + i}\n            data={data.records[i]}\n          />\n        );\n      }\n\n      // Other parameters\n      var closingDate = context.state.data.closing_date;\n      var closedAt    = context.state.data.closed_at;\n      var status      = context.state.data.status;\n\n      return  (\n        <div>\n          <table className=\"table table-bordered table-hover table-sm\">\n            <tbody>\n              <tr>\n                <th>\n                  Closing Date\n                </th>\n                <td>\n                  {closingDate}\n                </td>\n              </tr>\n              <tr>\n                <th>\n                  Closed At\n                </th>\n                <td>\n                  {closedAt}\n                </td>\n              </tr>\n              <tr>\n                <th>\n                  Total Interest\n                </th>\n                <td>\n                  {numberWithCommas(totalInterest)}\n                </td>\n              </tr>\n              <tr>\n                <th>\n                  Number of Members\n                </th>\n                <td>\n                  {data.records.length}\n                </td>\n              </tr>\n            </tbody>\n          </table>\n\n          {memberRecords}\n\n          <table className=\"table table-bordered table-hover\">\n            <tbody>\n              <tr>\n                <th>\n                  Total Interest:\n                </th>\n                <th className=\"text-end\">\n                  {numberWithCommas(totalInterest)}\n                </th>\n              </tr>\n            </tbody>\n          </table>\n\n          {this.renderAccountingEntry()}\n        </div>\n      );\n    }\n  }\n}\n", "import React from 'react';\nimport {numberWithCommas} from '../utils/helpers';\n\nexport default class MemberRecord extends React.Component {\n  constructor(props) {\n    super(props);\n\n    this.state  = {\n      data: props.data\n    }\n  }\n\n  renderMemberName() {\n    var member  = this.state.data.member;\n\n    return member.last_name + \", \" + member.first_name;\n  }\n\n  renderRecords() {\n    var member              = this.state.data.member;\n    var memberAccount       = this.state.data.member_account;\n    var records             = this.state.data.records;\n    var accountTransactions = this.state.data.account_transactions;\n    var dataRows            = [];\n\n    for(var i = 0; i < records.length; i++) {\n      dataRows.push(\n        <tr key={\"member-\" + member.id + \"-\" + i + \"-\" + memberAccount.id}>\n          <td className=\"\">\n            {records[i].date}\n          </td>\n          <td className=\"text-end\">\n            {numberWithCommas(records[i].beginning_balance)}\n          </td>\n          <td className=\"text-end\">\n            {numberWithCommas(records[i].deposits)}\n          </td>\n          <td className=\"text-end\">\n            {numberWithCommas(records[i].withdrawals)}\n          </td>\n          <td className=\"text-end\">\n            {numberWithCommas(records[i].ending_balance)}\n          </td>\n        </tr>\n      );\n    }\n\n    // Interest\n    dataRows.push(\n      <tr key={\"interest-row-\" + memberAccount.id}>\n        <td colSpan=\"2\">\n          <strong>\n            Interest Earned\n          </strong>\n        </td>\n        <td className=\"text-end\">\n          <strong>\n            {numberWithCommas(this.state.data.interest)}\n          </strong>\n        </td>\n        <td>\n          <strong>\n            Annual Interest Rate:\n          </strong>\n        </td>\n        <td className=\"text-muted\">\n          {this.state.data.annual_interest_rate * 100}%\n        </td>\n      </tr>\n    );\n\n    return dataRows;\n  }\n\n  render() {\n    return  (\n      <div>\n        <div className=\"row\">\n          <div className=\"col\">\n            <h4>\n              {this.renderMemberName()}\n            </h4>\n          </div>\n          <div className=\"col\">\n            <div className=\"text-end\">\n              <a href={\"/savings_accounts/\" + this.state.data.member_account.id} target='_blank'>\n                Go to Account\n              </a>\n            </div>\n          </div>\n        </div>\n\n        <table className=\"table table-sm table-bordered\">\n          <thead>\n            <tr>\n              <th>\n                Date\n              </th>\n              <th className=\"text-end\">\n                Beginning Balance\n              </th>\n              <th className=\"text-end\">\n                Deposit\n              </th>\n              <th className=\"text-end\">\n                Withdrawals\n              </th>\n              <th className=\"text-end\">\n                Ending Balance\n              </th>\n            </tr>\n          </thead>\n          <tbody>\n            {this.renderRecords()}\n          </tbody>\n        </table>\n      </div>\n    );\n  }\n}\n", "import React from 'react';\nimport $ from 'jquery';\n\nimport SkCubeLoading from '../SkCubeLoading';\nimport {numberWithCommas} from '../utils/helpers';\nimport MemberRecord from './MemberRecord';\nimport AccountingEntryPreview from '../accounting/AccountingEntryPreview';\n\nexport default class ShowUI extends React.Component {\n  constructor(props) {\n    super(props);\n\n    this.state  = {\n      isLoading: true,\n      data: false\n    };\n  }\n\n  componentDidMount() {\n    var id                = this.props.id;\n    var authenticityToken = this.props.authenticityToken;\n    var context           = this;\n\n    $.ajax({\n      url: \"/api/v1/insurance_monthly_closing_collections/fetch\",\n      method: 'GET',\n      data: {\n        id: id\n      },\n      success: function(response) {\n        context.setState({\n          isLoading: false,\n          data: response\n        });\n      },\n      error: function(response) {\n        alert(\"Error in fetching data\");\n      }\n    });\n  }\n\n  handleRemoveClicked() {\n  }\n\n  renderAccountingEntry() {\n    var context = this;\n\n    if(context.state.data.data.accounting_entry) {\n      var accounting_entry_data = context.state.data.data.accounting_entry;\n      console.log(accounting_entry_data);\n\n      return  (\n        <AccountingEntryPreview\n          book={accounting_entry_data.book}\n          particular={accounting_entry_data.particular}\n          datePrepared={accounting_entry_data.date_prepared}\n          referenceNumber={accounting_entry_data.reference_number}\n          approved_by={accounting_entry_data.approved_by}\n          branch={accounting_entry_data.branch_name}\n          balanced={true}\n          status={accounting_entry_data.status}\n          journalEntries={accounting_entry_data.journal_entries}\n          isLoading={this.state.isLoading}\n          handleRemoveClicked={this.handleRemoveClicked.bind(this)}\n          data={accounting_entry_data.data}\n        />\n      )\n    } else {\n      return  (\n        <h3>\n          No accounting entry data found\n        </h3>\n      );\n    }\n  }\n\n  render() {\n    var context = this;\n\n    if(context.state.isLoading) {\n      return  (\n        <SkCubeLoading/>\n      );\n    } else {\n      console.log(context.state.data);\n\n      var data          = context.state.data.data;\n      var memberRecords = [];\n\n      var totalInterest = 0.00;\n\n      for(var i = 0; i < data.records.length; i++) {\n        totalInterest += parseFloat(data.records[i].interest);\n\n        memberRecords.push(\n          <MemberRecord\n            key={\"member-record-\" + i}\n            data={data.records[i]}\n          />\n        );\n      }\n\n      // Other parameters\n      var closingDate = context.state.data.closing_date;\n      var closedAt    = context.state.data.closed_at;\n      var status      = context.state.data.status;\n\n      return  (\n        <div>\n          <table className=\"table table-bordered table-hover table-sm\">\n            <tbody>\n              <tr>\n                <th>\n                  Closing Date\n                </th>\n                <td>\n                  {closingDate}\n                </td>\n              </tr>\n              <tr>\n                <th>\n                  Closed At\n                </th>\n                <td>\n                  {closedAt}\n                </td>\n              </tr>\n              <tr>\n                <th>\n                  Total Increase Earned\n                </th>\n                <td>\n                  {numberWithCommas(totalInterest)}\n                </td>\n              </tr>\n              <tr>\n                <th>\n                  Number of Members\n                </th>\n                <td>\n                  {data.records.length}\n                </td>\n              </tr>\n            </tbody>\n          </table>\n\n          {memberRecords}\n\n          <table className=\"table table-bordered table-hover\">\n            <tbody>\n              <tr>\n                <th>\n                  Total Interest:\n                </th>\n                <th className=\"text-end\">\n                  {numberWithCommas(totalInterest)}\n                </th>\n              </tr>\n            </tbody>\n          </table>\n\n          {this.renderAccountingEntry()}\n        </div>\n      );\n    }\n  }\n}\n", "import React from 'react';\nimport {numberWithCommas} from '../utils/helpers';\n\nexport default class MemberRecord extends React.Component {\n  constructor(props) {\n    super(props);\n\n    this.state  = {\n      data: props.data\n    }\n  }\n\n  renderMemberName() {\n    var member  = this.state.data.member;\n\n    return member.last_name + \", \" + member.first_name;\n  }\n\n  renderRecords() {\n    var member              = this.state.data.member;\n    var memberAccount       = this.state.data.member_account;\n    var records             = this.state.data.records;\n    var accountTransactions = this.state.data.account_transactions;\n    var dataRows            = [];\n\n    for(var i = 0; i < records.length; i++) {\n      dataRows.push(\n        <tr key={\"member-\" + member.id + \"-\" + i + \"-\" + memberAccount.id}>\n          <td className=\"\">\n            {records[i].date}\n          </td>\n          <td className=\"text-end\">\n            {numberWithCommas(records[i].beginning_balance)}\n          </td>\n          <td className=\"text-end\">\n            {numberWithCommas(records[i].deposits)}\n          </td>\n          <td className=\"text-end\">\n            {numberWithCommas(records[i].withdrawals)}\n          </td>\n          <td className=\"text-end\">\n            {numberWithCommas(records[i].ending_balance)}\n          </td>\n        </tr>\n      );\n    }\n\n    // Interest\n    dataRows.push(\n      <tr key={\"interest-row-\" + memberAccount.id}>\n        <td colSpan=\"2\">\n          <strong>\n            Increase Earned\n          </strong>\n        </td>\n        <td className=\"text-end\">\n          <strong>\n            {numberWithCommas(this.state.data.interest)}\n          </strong>\n        </td>\n        <td>\n          <strong>\n            Annual Increase Rate:\n          </strong>\n        </td>\n        <td className=\"text-muted\">\n          {this.state.data.annual_interest_rate * 100}%\n        </td>\n      </tr>\n    );\n\n    return dataRows;\n  }\n\n  render() {\n    return  (\n      <div>\n        <div className=\"row\">\n          <div className=\"col\">\n            <h4>\n              {this.renderMemberName()}\n            </h4>\n          </div>\n          <div className=\"col\">\n            <div className=\"text-end\">\n              <a href={\"/insurance_accounts/\" + this.state.data.member_account.id} target='_blank'>\n                Go to Account\n              </a>\n            </div>\n          </div>\n        </div>\n\n        <table className=\"table table-sm table-bordered\">\n          <thead>\n            <tr>\n              <th>\n                Date\n              </th>\n              <th className=\"text-end\">\n                Beginning Balance\n              </th>\n              <th className=\"text-end\">\n                Deposit\n              </th>\n              <th className=\"text-end\">\n                Withdrawals\n              </th>\n              <th className=\"text-end\">\n                Ending Balance\n              </th>\n            </tr>\n          </thead>\n          <tbody>\n            {this.renderRecords()}\n          </tbody>\n        </table>\n      </div>\n    );\n  }\n}\n", "import React from \"react\"\nimport $ from \"jquery\";\n\nimport SkCubeLoading from '../SkCubeLoading';\n\nexport default class InsuranceStatusComponent extends React.Component {\n\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.state = {\n\t\t\tmessage: \"Hello\",\n\t\t\tisLoading: true,\n\t\t\tmemberAccountId: props.id,\n\t\t\tdata: false\n\t\t};\n\t}\n\n\tcomponentDidMount() {\n\t\tvar memberAccountId = this.state.memberAccountId;\n\t\tvar context         = this;\n\n\t\t$.ajax({\n\t\t\turl: \"/api/v1/insurance_accounts/fetch_insurance_status\",\n\t\t\tmethod: \"GET\",\n\t\t\tdata: {\n\t\t\t\tmember_account_id: memberAccountId\n\t\t\t},\n\t\t\tsuccess: function(response){\n\t\t\t\tconsole.log(response);\n\t\t\t\tcontext.setState({\n\t\t\t\t\tisLoading: false,\n\t\t\t\t\tdata: response\n\t\t\t\t});\n\t\t\t},\n\t\t\terror: function(response) {\n\t\t\t\talert(\"Error fething data\");\n\t\t\t}\n\t\t});\n\t}\n\n\thandleInputChange(event) {\n\t\tvar newMessage = event.target.value;\n\t\tthis.setState({\n\t\t\tmessage: newMessage\n\t\t});\n\t}\n\n\thandleSaveClick() {\n\t\tvar message = this.state.message;\n\t\talert(message);\n\t}\n\n\trender() {\n\t\tvar context = this;\n\t\tvar message = this.state.message;\n\t\t\n\t\tif (context.state.isLoading) {\n\t\t\treturn (\n\t\t\t\t<SkCubeLoading />\n\t\t\t\t)\n\t\t} else {\n\n\t\t\tvar recognitionDate\t\t\t= context.state.data.recognition_date;\n\t\t\tvar lengthOfMembership\t\t= context.state.data.length_of_membership;\n\t\t\tvar currentDate      \t\t= context.state.data.current_date;\n\t\t\tvar coverageDate\t\t\t= context.state.data.coverage_date;\n\t\t\tvar latestTransactionDate\t= context.state.data.latest_transaction_date;\n\t\t\tvar defaultPeriodicPayment \t= context.state.data.default_periodic_payment;\n\t\t\tvar numWeeks\t\t\t\t= context.state.data.num_weeks;\n\t\t\tvar insuredAmount           = context.state.data.insured_amount;\n\t\t\tvar currentBalance\t\t\t= context.state.data.current_balance;\n\t\t\tvar status \t\t\t\t\t= context.state.data.status;\n\t\t\tvar amtPastDue\t\t\t\t= context.state.data.amt_past_due;\n\t\t\tvar numWeeksPastDue\t\t\t= context.state.data.num_weeks_past_due;\n\n\t\t\tvar name\t\t\t\t\t= context.state.data.name;\n\n\t\t\tvar badgeClassName\t\t\t= \"badge-light\";\n\t\t\tif(status == \"lapsed\"){\n\t\t\t\tbadgeClassName = \"bg-danger\";\n\t\t\t} else if(status == \"advanced\"){\n\t\t\t\tbadgeClassName = \"badge-primary\";\n\t\t\t} else if(status == \"past due\"){\n\t\t\t\tbadgeClassName = \"bg-danger\";\n\t\t\t}\n\n\t\treturn (\n\t\t\t<div>\n\t\t\t\t<table className=\"table table-bordered table-sm\">\n\t\t\t\t\t<tbody>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<th>\n\t\t\t\t\t\t\t\tRecognition Date\n\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t{recognitionDate}\n\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<th>\n\t\t\t\t\t\t\t\tLength of Membership\n\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t{lengthOfMembership}\n\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<th>\n\t\t\t\t\t\t\t\tCurrent Date\n\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t{currentDate}\n\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<th>\n\t\t\t\t\t\t\t\tCoverage Date\n\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t{coverageDate}\n\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<th>\n\t\t\t\t\t\t\t\tLatest Transaction Date\n\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t{latestTransactionDate}\n\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<th>\n\t\t\t\t\t\t\t\tNumber of Weeks\n\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t{numWeeks} weeks\n\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<th>\n\t\t\t\t\t\t\t\tInsured Amount\n\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t{insuredAmount}\n\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<th>\n\t\t\t\t\t\t\t\tCurrent Balance\n\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t{currentBalance}\n\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<th>\n\t\t\t\t\t\t\t\tStatus\n\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t<div className={\"badge \" + badgeClassName}>\n\t\t\t\t\t\t\t\t\t{status}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<th>\n\t\t\t\t\t\t\t\tAmount Past Due\n\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t{amtPastDue}\n\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<th>\n\t\t\t\t\t\t\t\tNumber of Weeks Past Due\n\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t{numWeeksPastDue}\n\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t</tbody>\n\t\t\t\t</table>\n\t\t\t</div>\n\t\t);\n\t}\n\t}\n}\n", "import React from 'react';\nimport $ from 'jquery';\n\nimport ReactTable from 'react-table';\nimport DatePicker from 'react-datepicker';\nimport Select from 'react-select';\n\nimport SkCubeLoading from '../SkCubeLoading';\n\nimport moment from 'moment';\n\nimport 'react-datepicker/dist/react-datepicker.css';\n\nimport {numberWithCommas} from '../utils/helpers';\n\nexport default class TrialBalanceComponent extends React.Component {\n  constructor(props) {\n    super(props);\n    \n    var date      = new Date();\n    var y         = date.getFullYear();\n    var m         = date.getMonth();\n    var firstDay  = new Date(y, m, 1);\n    var lastDay   = new Date(y, m + 1, 0);\n\n    this.state  = {\n      isLoading: false,\n      start_date: moment(firstDay),\n      end_date: moment(lastDay),\n      currentBranchId: \"\",\n      currentAccountingFundId: \"\",\n      branches: [],\n      accountingFunds: JSON.parse(props.accountingFunds),\n      data: false\n    };\n  }\n\n  componentDidMount() {\n    this.fetchBranches();\n\n    if(this.state.accountingFunds.length > 0) {\n      this.setState({\n        currentAccountingFundId: this.state.accountingFunds[0].id\n      });\n    }\n  }\n\n  fetchBranches() {\n    var context = this;\n\n    $.ajax({\n      url: \"/api/v1/branches\",\n      method: \"GET\",\n      data: {\n        b: true        \n      },\n      dataType: 'json',\n      success: function(response) {\n        context.setState({\n          branches: response.branches,\n          currentBranchId: response.branches[0].id\n        });\n      },\n      error: function(response) {\n        console.log(response);\n        alert(\"Error in fetching branches\");\n\n        context.setState({\n          branches: []\n        });\n      }\n    });\n  }\n\n  fetch() {\n    var context     = this;\n    var start_date  = moment(context.state.start_date).format('YYYY-MM-DD');\n    var end_date    = moment(context.state.end_date).format('YYYY-MM-DD');\n\n    $.ajax({\n      url: \"/api/v1/accounting/fetch_trial_balance\",\n      method: \"GET\",\n      data: {\n        start_date: start_date,\n        end_date: end_date,\n        branch_id: context.state.currentBranchId,\n        accounting_fund_id: context.state.currentAccountingFundId\n      },\n      dataType: 'json',\n      success: function(response) {\n        console.log(response);\n        var data  = response.data;\n\n        context.setState({\n          isLoading: false,\n          data: data\n        });\n      },\n      error: function(response) {\n        console.log(response);\n        alert(\"Error in fetching trial balance data\");\n\n        var errors  = JSON.parse(response.responseText).errors;\n\n        for(var i = 0; i < errors.length; i++) {\n          alert(errors[i]);\n        }\n\n        context.setState({\n          isLoading: false,\n          data: false\n        });\n      }\n    });\n  }\n\n  handleStartDateChanged(o) {\n    this.setState({\n      start_date: o\n    });\n  }\n\n  handleEndDateChanged(o) {\n    this.setState({\n      end_date: o\n    });\n  }\n\n  handleGenerateClicked() {\n    var context = this;\n    \n    context.setState({\n      isLoading: true\n    });\n\n    context.fetch();\n  }\n\n  handlePrintClicked() {\n    var context = this;\n    \n    context.setState({\n      isLoading: true\n    });\n\n    var type        = \"trial_balance\";\n    var start_date  = moment(context.state.start_date).format('YYYY-MM-DD');\n    var end_date    = moment(context.state.end_date).format('YYYY-MM-DD');\n    var branch_id   = context.state.currentBranchId;\n\n    context.setState({\n      isLoading: false\n    });\n\n    window.open(\"/print?start_date=\" + start_date + \"&end_date=\" + end_date + \"&type=\" + type + \"&branch_id=\" + branch_id);\n  }\n\n  handleExcelClicked() {\n    var context = this;\n    \n    context.setState({\n      isLoading: true\n    });\n\n    var start_date  = moment(context.state.start_date).format('YYYY-MM-DD');\n    var end_date    = moment(context.state.end_date).format('YYYY-MM-DD');\n\n    $.ajax({\n      url: \"/api/v1/accounting/trial_balance_excel\",\n      method: 'GET',\n      data: { \n        start_date: start_date,\n        end_date: end_date,\n        branch_id: context.state.currentBranchId,\n        accounting_fund_id: context.state.currentAccountingFundId,\n        authenticity_token: context.props.authenticityToken\n      },\n      dataType: 'json',\n      success: function(response) {\n        console.log(response);\n        var data  = response.data;\n        var filename = response.filename;\n\n        context.setState({\n          isLoading: false,\n          data: data\n        });\n\n        window.location.href = \"/download_file?filename=\" + filename;\n      },\n      error: function(response) {\n        console.log(response);\n        alert(\"Error generating excel!\");\n\n        var errors  = JSON.parse(response.responseText).errors;\n\n        for(var i = 0; i < errors.length; i++) {\n          alert(errors[i]);\n        }\n\n        context.setState({\n          isLoading: false,\n          data: false\n        });\n      }\n    });\n  }\n\n  renderTable() {\n    var context = this;\n    var state   = context.state;\n\n    var entries = [];\n\n    for(var i = 0; i < state.data.entries.length; i++) {\n      var entry = state.data.entries[i];\n      entries.push(\n        <tr key={\"gl-entry-\" + i}>\n          <td>\n            <strong>\n              {entry.code}\n            </strong>\n          </td>\n          <td>\n            <strong>\n              {entry.name} \n            </strong>\n          </td>\n          <td className=\"text-end\">\n            {numberWithCommas(entry.beginning_debit)}\n          </td>\n          <td className=\"text-end\">\n            {numberWithCommas(entry.beginning_credit)}\n          </td>\n          <td className=\"text-end\">\n            {numberWithCommas(entry.current_debit)}\n          </td>\n          <td className=\"text-end\">\n            {numberWithCommas(entry.current_credit)}\n          </td>\n          <td className=\"text-end\">\n            {numberWithCommas(entry.ending_debit)}\n          </td>\n          <td className=\"text-end\">\n            {numberWithCommas(entry.ending_credit)}\n          </td>\n        </tr>\n      );\n    }\n\n    if(!state.isLoading && state.data != false) {\n      return  (\n        <table className=\"table table-sm table-bordered table-hover\">\n          <thead>\n            <tr>\n              <th>\n                Accounting Code\n              </th>\n              <th>\n                Accounting Name\n              </th>\n              <th className=\"text-end\">\n                Beginning DR\n              </th>\n              <th className=\"text-end\">\n                Beginning CR\n              </th>\n              <th className=\"text-end\">\n                Current DR\n              </th>\n              <th className=\"text-end\">\n                Current CR\n              </th>\n              <th className=\"text-end\">\n                Ending DR\n              </th>\n              <th className=\"text-end\">\n                Ending CR\n              </th>\n            </tr>\n          </thead>\n          <tbody>\n            {entries}\n          </tbody>\n        </table>\n      );\n    }\n  }\n\n  handleBranchChanged(event) {\n    this.setState({\n      currentBranchId: event.target.value\n    });\n  }\n\n  handleAccountingFundChanged(event) {\n    this.setState({\n      currentAccountingFundId: event.target.value\n    });\n  }\n\n  renderContent() {\n    var context = this;\n    var state   = context.state;\n\n    if(state.isLoading) {\n      return  (\n        <SkCubeLoading/>\n      );\n    } else if(state.data != false) {\n      return (\n        <div>\n          {context.renderTable()}\n        </div>\n      );\n    } else {\n      return  (\n        <div>\n          No data\n        </div>\n      );\n    }\n  }\n\n  render() {\n    var context = this;\n    var state   = context.state;\n\n    var branchOptions = [];\n    \n    for(var i = 0; i < state.branches.length; i++) {\n      branchOptions.push(\n        <option value={state.branches[i].id} key={\"branch-\" + i}>\n          {state.branches[i].name}\n        </option>\n      );\n    }\n\n    var accountingFundOptions = [];\n\n    accountingFundOptions.push(\n      <option value={\"\"} key={\"acc-fund-all\"}>\n        -- SELECT ALL --\n      </option>\n    );\n\n    console.log(state.accountingFunds);\n\n    for(var i = 0; i < state.accountingFunds.length; i++) {\n      accountingFundOptions.push(\n        <option value={state.accountingFunds[i].id} key={\"acc-fund-\" + i}>\n          {state.accountingFunds[i].name}\n        </option>\n      );\n    }\n\n    var currentBranchId         = state.currentBranchId;\n    var currentAccountingFundId = state.currentAccountingFundId;\n\n    return  (\n      <div>\n        <div className=\"row\">\n          <div className=\"col\">\n            <div className=\"form-group\">\n              <label>Start Date</label>\n              <br/>\n              <DatePicker\n                className=\"form-control\"\n                selected={state.start_date}\n                onChange={context.handleStartDateChanged.bind(this)}\n                disabled={state.isLoading}\n              />\n            </div>\n          </div>\n          <div className=\"col\">\n            <div className=\"form-group\">\n              <label>End Date</label>\n              <br/>\n              <DatePicker\n                className=\"form-control\"\n                selected={state.end_date}\n                onChange={context.handleEndDateChanged.bind(this)}\n                disabled={state.isLoading}\n              />\n            </div>\n          </div>\n          <div className=\"col\">\n            <div className=\"form-group\">\n              <label>Branch</label>\n              <select \n                className=\"form-control\" \n                value={currentBranchId}\n                onChange={this.handleBranchChanged.bind(this)}\n              >\n                {branchOptions}\n              </select>\n              <br/>\n            </div>\n          </div>\n          <div className=\"col\">\n            <div className=\"form-group\">\n              <label>Accounting Fund</label>\n              <select \n                className=\"form-control\" \n                value={currentAccountingFundId}\n                onChange={this.handleAccountingFundChanged.bind(this)}\n              >\n                {accountingFundOptions}\n              </select>\n              <br/>\n            </div>\n          </div>\n          <div className=\"col\">\n            <div className=\"form-group\">\n              <label>Actions</label>\n              <br/>\n              <div className=\"btn-group\">\n                <button\n                  className=\"btn btn-primary\"\n                  onClick={context.handleGenerateClicked.bind(this)}\n                  disabled={state.isLoading}\n                >\n                  <span className=\"fa fa-sync\"/>\n                  Generate\n                </button>\n                <button\n                  className=\"btn btn-info\"\n                  onClick={context.handlePrintClicked.bind(this)}\n                  disabled={state.isLoading}\n                >\n                  <span className=\"fa fa-print\"/>\n                  Print\n                </button>\n                <button\n                  className=\"btn btn-secondary\"\n                  onClick={context.handleExcelClicked.bind(this)}\n                  disabled={state.isLoading}\n                >\n                  <span className=\"fa fa-print\"/>\n                  Excel\n                </button>\n              </div>\n            </div>\n          </div>\n        </div>\n        <hr/> \n        {context.renderContent()}\n      </div>\n    );\n  }\n}\n", "import React from 'react';\nimport $ from 'jquery';\n\nimport ReactTable from 'react-table';\nimport Select from 'react-select';\n\nimport SkCubeLoading from '../SkCubeLoading';\nimport GeneralLedgerEntry from './GeneralLedgerEntry';\n\nimport ErrorDisplay from '../ErrorDisplay';\n\nimport AccountingCodeMultiSelect from './AccountingCodeMultiSelect';\n\nexport default class GeneralLedgerComponent extends React.Component {\n  constructor(props) {\n    super(props);\n\n    var date      = new Date();\n    var y         = date.getFullYear();\n    var m         = date.getMonth();\n    var firstDay  = new Date(y, m, 1);\n    var lastDay   = new Date(y, m + 1, 0);\n\n    this.state  = {\n      isLoading: false,\n      start_date: (new Date(firstDay)),\n      end_date: (new Date(lastDay)),\n      currentBranchId: \"\",\n      branches: [],\n      accountingCodeIds: [],\n      errors: false,\n      data: false\n    };\n  }\n\n  componentDidMount() {\n    this.fetchBranches();\n  }\n\n  fetchBranches() {\n    var context = this;\n\n    $.ajax({\n      url: \"/api/v1/branches\",\n      method: \"GET\",\n      data: {\n        \n      },\n      dataType: 'json',\n      success: function(response) {\n        console.log(\"response from /api/v1/branches\");\n        console.log(response);\n        var branchId  = context.state.currentBranchId;\n\n        if(!branchId) {\n          branchId = response.branches[0].id;\n        }\n\n        console.log(\"branchId: \" + branchId);\n\n        context.setState({\n          branches: response.branches,\n          currentBranchId: branchId,\n          errors: false\n        });\n      },\n      error: function(response) {\n        console.log(response);\n        //alert(\"Error in fetching branches\");\n\n        context.setState({\n          branches: []\n        });\n      }\n    });\n  }\n\n  fetch() {\n    var context           = this;\n    var start_date        = context.state.start_date;\n    var end_date          = context.state.end_date;\n    var branchId          = context.state.currentBranchId;\n    var accountingCodeIds = context.state.accountingCodeIds;\n\n    $.ajax({\n      url: \"/api/v1/accounting/fetch_general_ledger\",\n      method: \"GET\",\n      data: {\n        start_date: start_date,\n        end_date: end_date,\n        branch_id: branchId,\n        accounting_code_ids: accountingCodeIds\n      },\n      dataType: 'json',\n      success: function(response) {\n        console.log(response);\n        var data  = response.data;\n        \n        context.setState({\n          isLoading: false,\n          data: data\n        });\n      },\n      error: function(response) {\n        console.log(response);\n        //alert(\"Error in fetching general ledger data\");\n\n        var errors  = JSON.parse(response.responseText);\n        console.log(errors);\n\n        context.setState({\n          isLoading: false,\n          data: false,\n          errors: errors\n        });\n      }\n    });\n  }\n   DownloadExcel() {\n    var context           = this;\n    var start_date        = context.state.start_date;\n    var end_date          = context.state.end_date;\n    var branchId          = context.state.currentBranchId;\n    var accountingCodeIds = context.state.accountingCodeIds;\n\n    $.ajax({\n      url: \"/accounting/general_ledger_excel_url\",\n      method: \"GET\",\n      data: {\n        start_date: start_date,\n        end_date: end_date,\n        branch_id: branchId,\n        accounting_code_ids: accountingCodeIds\n      },\n      dataType: 'json',\n      success: function(response) {\n        window.open(response.download_url,\"_blank\")\n        console.log(response);\n        var data  = response.data;\n        context.setState({\n          isLoading: false,\n        });\n      },\n      error: function(response) {\n        console.log(response);\n        //alert(\"Error in fetching general ledger data\");\n\n        var errors  = JSON.parse(response.responseText);\n        console.log(errors);\n\n        context.setState({\n          isLoading: false,\n          data: false,\n          errors: errors\n        });\n      }\n    });\n  }\n\n\n  \n\n  handleStartDateChanged(o) {\n    this.setState({\n      start_date: o.target.value\n    });\n  }\n\n  handleEndDateChanged(o) {\n    this.setState({\n      end_date: o.target.value\n    });\n  }\n\n  handleGenerateClicked() {\n    var context = this;\n    \n    context.setState({\n      isLoading: true\n    });\n\n    context.fetch();\n  }\n\nhandleDownloadClicked() {\n    var context = this;\n    \n    context.setState({\n      isLoading: true\n    });\n\n    context.DownloadExcel();\n  }\n\n\n  handlePrintClicked() {\n    var context = this;\n\n    var start_date        = context.state.start_date;\n    var end_date          = context.state.end_date;\n    var branchId          = context.state.currentBranchId;\n    var accountingCodeIds = context.state.accountingCodeIds;\n\n    var type = \"general_ledger\";\n    window.open(\"/print?start_date=\" + start_date + \"&end_date=\" + end_date + \"&branch_id=\" + branchId + \"&accounting_code_ids=\" + accountingCodeIds + \"&type=\" + type);\n  }\n\n  renderTable() {\n    var context = this;\n    var state   = context.state;\n\n\n    if(!state.isLoading && state.data != false) {\n      var generalLedgerEntries  = state.data.entries;\n      console.log(\"generalLedgerEntries:\");\n      console.log(generalLedgerEntries);\n\n      var generalLedgerComponents = [];\n\n      for(var i = 0; i < generalLedgerEntries.length; i++) {\n\n        generalLedgerComponents.push(\n          <div>\n            <GeneralLedgerEntry\n              data={generalLedgerEntries[i]}\n              key={\"glc-\" + i}\n            />\n          </div>\n        );\n      }\n\n      return  (\n        <div>\n          {generalLedgerComponents}\n        </div>\n      );\n    }\n  }\n\n  renderErrors() {\n    if(this.state.errors) {\n      return (\n        <ErrorDisplay\n          errors={this.state.errors}\n        />\n      );\n    }\n  }\n\n  renderContent() {\n    var context = this;\n    var state   = context.state;\n\n    var startDate = state.start_date;\n    var endDate   = state.end_date;\n\n    if(state.isLoading) {\n      return  (\n        <SkCubeLoading/>\n      );\n    } else if(state.data != false) {\n      return (\n        <div>\n          <div className=\"row\">\n            <div className=\"col\">\n              <h6>\n                General Ledger {startDate} to {endDate}\n              </h6>\n            </div>\n          </div>\n          {context.renderTable()}\n        </div>\n      );\n    } else {\n      return  (\n        <div>\n          No data\n        </div>\n      );\n    }\n  }\n\n  handleBranchChanged(event) {\n    this.setState({\n      currentBranchId: event.target.value\n    });\n  }\n\n  handleAccountingCodeSelectChanged(o) {\n    console.log(\"AccountingCodeMultiSelect.handleAccountingCodeSelectChanged:\");\n    console.log(o);\n\n    var accountingCodeIds = [];\n\n    for(var i = 0; i < o.length; i++) {\n      accountingCodeIds.push(o[i].value);\n    }\n\n    this.setState({\n      accountingCodeIds: accountingCodeIds\n    });\n  }\n\n  render() {\n    var context = this;\n    var state   = context.state;\n\n    var branchOptions = [];\n\n    branchOptions.push(\n      <option value=\"\" key={\"b-blank\"}>\n        -- SELECT ALL --\n      </option>\n    );\n    \n    for(var i = 0; i < state.branches.length; i++) {\n      branchOptions.push(\n        <option value={state.branches[i].id} key={\"b-\" + i}>\n          {state.branches[i].name}\n        </option>\n      );\n    }\n\n    var currentBranchId = state.currentBranchId;\n\n    console.log(branchOptions);\n    console.log(\"currentBranchId: \" + this.state.currentBranchId);\n\n    return  (\n      <div>\n        <div className=\"row\">\n          <div className=\"col-md-2\">\n            <div className=\"form-group\">\n              <label>Start Date</label>\n              <input\n                className=\"form-control\"\n                value={state.start_date}\n                type=\"date\"\n                onChange={context.handleStartDateChanged.bind(this)}\n                disabled={state.isLoading}\n              />\n            </div>\n          </div>\n          <div className=\"col-md-2\">\n            <div className=\"form-group\">\n              <label>End Date</label>\n              <input\n                className=\"form-control\"\n                value={state.end_date}\n                type=\"date\"\n                onChange={context.handleEndDateChanged.bind(this)}\n                disabled={state.isLoading}\n              />\n            </div>\n          </div>\n          <div className=\"col-md-2\">\n            <div className=\"form-group\">\n              <label>Branch</label>\n              <select \n                className=\"form-control\" \n                value={currentBranchId}\n                onChange={this.handleBranchChanged.bind(this)}\n              >\n                {branchOptions}\n              </select>\n              <br/>\n            </div>\n          </div>\n          <div className=\"col\">\n            <div className=\"form-group\">\n              <label>Acc. Codes</label>\n              <AccountingCodeMultiSelect\n                handleAccountingCodeSelectChanged={this.handleAccountingCodeSelectChanged.bind(this)}\n              />\n            </div>\n          </div>\n          <div className=\"col-md-2\">\n            <div className=\"form-group\">\n              <label>Actions</label>\n              <br/>\n              <div className=\"btn-group\">\n                <button\n                  className=\"btn btn-primary\"\n                  onClick={context.handleGenerateClicked.bind(this)}\n                  disabled={this.state.isLoading}\n                >\n                  <span className=\"fa fa-sync\"/>\n                  \n                </button>\n                <button\n                  className=\"btn btn-info\"\n                  onClick={context.handlePrintClicked.bind(this)}\n                  disabled={this.state.isLoading}\n                >\n                  <span className=\"fa fa-print\"/>\n                  \n                </button>\n                  <button\n                  className=\"btn btn-success\"\n                  onClick={context.handleDownloadClicked.bind(this)}\n                  disabled={this.state.isLoading}\n                >\n                  <span className=\"fa fa-download\"/>\n                  \n                </button>\n\n              </div>\n            </div>\n          </div>\n        </div>\n        {this.renderErrors()} \n        <hr/> \n        {context.renderContent()}\n      </div>\n    );\n  }\n}\n", "import React from 'react';\n\nexport default class GeneralLedgerComponent extends React.Component {\n  constructor(props) {\n    super(props);\n  }\n\n  numberWithCommas(x) {\n    x = (Math.round(x * 100) / 100).toFixed(2);\n\n    if(x < 0) {\n      x = x * -1; \n      x = \"(\" + x.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\") + \")\";\n    } else {\n      x = x.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\n    }   \n\n    return x;\n\n  }\n\n  renderEntries() {\n    var entries = this.props.data.entries;\n    var items   = [];\n\n    for(var i = 0; i < entries.length; i++) {\n      items.push(\n        <tr key={\"item-\" + entries[i].accounting_code_id + i}>\n          <td width={\"8%\"}>\n            <center>\n              <small>\n                {entries[i].date_posted}\n              </small>\n            </center>\n          </td>\n          <td width={\"14%\"}>\n            <a href={\"/accounting/accounting_entries/\" + entries[i].accounting_entry_id} target={\"_blank\"}>\n              {entries[i].reference_number}\n            </a>\n          </td>\n          <td width={\"10%\"}>\n            {entries[i].sub_reference_number}\n          </td>\n          <td width={\"2%\"}>\n            {entries[i].book}\n          </td>\n          <td width={\"50%\"}>\n            <small>\n              {entries[i].particular}\n            </small>\n          </td>\n          <td className=\"text-end\" width={\"8%\"}>\n            <small>\n              {this.numberWithCommas(entries[i].dr_amount)}\n            </small>\n          </td>\n          <td className=\"text-end\" width={\"8%\"}>\n            <small>\n              {this.numberWithCommas(entries[i].cr_amount)}\n            </small>\n          </td>\n          <td className=\"text-end text-muted\" width={\"10%\"}>\n            {this.numberWithCommas(entries[i].running_balance)}\n          </td>\n        </tr>\n      );\n    }\n\n    return items;\n  }\n\n  render() {\n    var currentDrSum  = 0.00;\n    var currentCrSum  = 0.00;\n    var entries = this.props.data.entries;\n    var items   = [];\n\n    for(var i = 0; i < entries.length; i++) {\n      currentDrSum += parseFloat(entries[i].dr_amount);\n      currentCrSum += parseFloat(entries[i].cr_amount);\n    }\n\n    return (\n      <div>\n        <table className=\"table table-bordered table-sm\">\n          <thead>\n            <tr className=\"bg-info\">\n              <th colspan={3} width=\"22%\">\n                {this.props.data.accounting_code_name}\n              </th>\n              <th className=\"\" width=\"8%\">\n                Book\n              </th>\n              <th width=\"50%\">\n              </th>\n              <th className=\"text-end\" width=\"8%\">\n                Debit\n              </th>\n              <th className=\"text-end\" width=\"8%\">\n                Credit\n              </th>\n              <th className=\"text-end\" width=\"10%\">\n                {this.numberWithCommas(this.props.data.beginning_balance)}\n              </th>\n            </tr>\n          </thead>\n          <tbody>\n            {this.renderEntries()}\n          </tbody>\n          <tfoot>\n            <tr className=\"bg-success\">\n              <th colspan={5}>\n                Ending for {this.props.data.accounting_code_name}\n              </th>\n              <th className=\"text-end\">\n                {this.numberWithCommas(currentDrSum)}\n              </th>\n              <th className=\"text-end\">\n                {this.numberWithCommas(currentCrSum)}\n              </th>\n              <th className=\"text-end\">\n                {this.numberWithCommas(this.props.data.ending_balance)}\n              </th>\n            </tr>\n          </tfoot>\n        </table>\n      </div>\n    );\n  }\n}\n", "import React from 'react';\nimport $ from 'jquery';\nimport Select from 'react-select';\n\nexport default class AccountingCodeMultiSelect extends React.Component {\n  constructor(props) {\n    super(props);\n\n    this.state  = {\n      accountingCodes: []\n    }\n  }\n\n  componentDidMount() {\n    var context = this;\n\n    $.ajax({\n      url: \"/api/v1/accounting_codes\",\n      method: 'GET',\n      success: function(response) {\n        context.setState({\n          accountingCodes: response.accounting_codes\n        });\n      },\n      error: function(response) {\n        console.log(\"Error in AccountingCodeMultiSelect:\");\n        console.log(response);\n      }\n    });\n  }\n\n  render() {\n    var accountingCodeOptions = [];\n\n    for(var i = 0; i < this.state.accountingCodes.length; i++) {\n      accountingCodeOptions.push({\n        value: this.state.accountingCodes[i].id,\n        label: this.state.accountingCodes[i].name\n      });\n    }\n\n    return  (\n      <div>\n        <Select\n          options={accountingCodeOptions}\n          onChange={this.props.handleAccountingCodeSelectChanged.bind(this)}\n          isMulti\n        />\n      </div>\n    );\n  }\n}\n", "import React from 'react';\nimport $ from 'jquery';\n\nimport ReactTable from 'react-table';\nimport Select from 'react-select';\n\nimport SkCubeLoading from '../SkCubeLoading';\nimport ErrorDisplay from '../ErrorDisplay';\n\nimport AccountingEntryPreview from './AccountingEntryPreview';\nimport Modal from 'react-modal';\nimport {numberWithCommas} from '../utils/helpers'; \nimport {customStyles} from '../utils/consts';\n\nexport default class AccountingEntryFormComponent extends React.Component {\n  constructor(props) {\n    super(props);\n\n    this.state  = {\n      isLoading: false,\n      id: props.id,\n      book: props.book,\n      referenceNumber: props.referenceNumber,\n      branchId: props.branchId,\n      branches: [],\n      accountingCodes: [],\n      accountingFunds: [],\n      accountingCodeId: \"\",\n      accountingFundId: props.accountingFundId,\n      accountingCodeObject: {},\n      accountingCodeName: \"\",\n      postType: \"DR\",\n      amount: 0.00,\n      balanced: false,\n      message: \"\",\n      errors: null,\n      modalEditIsOpen: false,\n      currentBranch: {\n        value: \"\",\n        label: \"\"\n      },\n      journalEntry: {\n        index: \"\",\n        accounting_code_name: \"\",\n        accounting_code_id: \"\",\n        post_type: \"\",\n        amount: 0.00\n      },\n      data: {\n        book: \"JVB\",\n        particular: \"\",\n        branch_id: \"\",\n        branch_name: \"\",\n        reference_number: \"\",\n        date_prepared: (new Date()),\n        status: \"pending\",\n        accounting_fund_id: props.accountingFundId,\n        data: {\n          or_number: \"\",\n          check_number: \"\",\n          check_voucher_number: \"\",\n          date_of_check: \"\",\n          sub_reference_number: \"\",\n          payee: \"\"\n        },\n        journal_entries: []\n      }\n    };\n  }\n\n  componentDidMount() {\n    this.fetchAccountingEntry();\n    this.fetchBranches();\n    this.fetchAccountingCodes();\n    this.fetchAccountingFunds();\n  }\n\n  fetchAccountingFunds() {\n    var context = this;\n\n    $.ajax({\n      url: \"/api/v1/accounting_funds\",\n      method: \"GET\",\n      data: {\n        \n      },\n      dataType: 'json',\n      success: function(response) {\n        // Set currentAccountingFundId\n        var data  = context.state.data;\n        \n        if(response.accounting_funds.length > 0) {\n          data.accounting_fund_id = response.accounting_funds[0].id;  \n        }\n\n        context.setState({\n          accountingFunds: response.accounting_funds,\n          data: data\n        });\n      },\n      error: function(response) {\n        console.log(response);\n        alert(\"Error in fetching accounting_funds\");\n\n        context.setState({\n          accountingFunds: []\n        });\n      }\n    });\n  }\n\n  fetchAccountingEntry() {\n    var context = this;\n\n    $.ajax({\n      url: \"/api/v1/accounting_entries/fetch\",\n      method: \"GET\",\n      data: {\n        id: context.state.id,\n        book: context.state.book\n      },\n      success: function(response) {\n        console.log(\"Fetched accounting entry:\");\n        console.log(response);\n\n        context.setState({\n          data: response,\n          currentBranch: {\n            value: response.branch_id,\n            label: response.branch_name\n          }\n        });\n\n        context.updateBalanced();\n      },\n      error: function(response) {\n        console.log(response);\n        alert(\"Error in fetching accounting entry\");\n      }\n    });\n  };\n\n  fetchAccountingCodes() {\n    var context = this;\n\n    $.ajax({\n      url: \"/api/v1/accounting_codes\",\n      method: \"GET\",\n      data: {\n        \n      },\n      dataType: 'json',\n      success: function(response) {\n        context.setState({\n          accountingCodes: response.accounting_codes\n        });\n      },\n      error: function(response) {\n        console.log(response);\n        alert(\"Error in fetching accounting_codes\");\n\n        context.setState({\n          accounting_codes: []\n        });\n      }\n    });\n  }\n\n  fetchBranches() {\n    var context = this;\n\n    $.ajax({\n      url: \"/api/v1/branches\",\n      method: \"GET\",\n      data: {\n        \n      },\n      dataType: 'json',\n      success: function(response) {\n        var tempCurrentBranch = {\n          value: \"\",\n          label: \"\"\n        }\n\n        if(response.branches.length > 0) {\n          console.log(\"DEFAULT BRANCH:\");\n          console.log(context.props.defaultBranch);\n          if(context.props.defaultBranch) {\n            tempCurrentBranch = context.props.defaultBranch;\n          } else {\n            tempCurrentBranch = {\n              value: response.branches[0].id,\n              label: response.branches[0].name\n            };\n          }\n\n          console.log(\"TEMP CURRENT BRANCH\");\n          console.log(tempCurrentBranch);\n\n          context.setState({\n            branches: response.branches,\n            currentBranch: tempCurrentBranch\n          });\n        } else {\n          context.setState({\n            branches: response.branches\n          });\n        }\n      },\n      error: function(response) {\n        console.log(response);\n        alert(\"Error in fetching branches\");\n\n        context.setState({\n          branches: []\n        });\n      }\n    });\n  }\n\n  handleDateOfCheckChanged(o) {\n    var data  = this.state.data;\n\n    if(o) {\n      data.data.date_of_check = o.target.value;\n\n      this.setState({\n        data: data\n      });\n    }\n  }\n\n  save() {\n    var context = this;\n    var state   = context.state;\n\n    var accounting_entry_data = state.data;\n\n    this.setState({\n      isLoading: true,\n      message: \"Loading...\"\n    });\n\n    if(accounting_entry_data.journal_entries.length < 2) {\n      alert(\"No journal entries\");\n      this.setState({\n        isLoading: false,\n        message: \"\"\n      });\n    } else {\n      var temp_data = JSON.stringify({\n        authenticity_token: context.props.authenticityToken,\n        id: state.id,\n        accounting_entry_data: {\n          book: accounting_entry_data.book,\n          branch_id: accounting_entry_data.branch_id,\n          branch_name: accounting_entry_data.branch_name,\n          date_prepared: accounting_entry_data.date_prepared,\n          data: accounting_entry_data.data,\n          journal_entries: accounting_entry_data.journal_entries,\n          particular: accounting_entry_data.particular,\n          reference_number: accounting_entry_data.reference_number,\n          accounting_fund_id: accounting_entry_data.accounting_fund_id\n        }\n      });\n\n      console.log(\"temp_data:\");\n      console.log(temp_data);\n\n      $.ajax({\n        url: \"/api/v1/accounting_entries/save\",\n        method: \"POST\",\n        dataType: 'json',\n        contentType: 'application/json',\n        data: temp_data,\n        success: function(response) {\n          window.location.href = \"/accounting/accounting_entries/\" + response.id;\n        },\n        error: function(response) {\n          alert(\"Error in saving accounting entry\");\n          console.log(response);\n\n          var errors  = JSON.parse(response.responseText).errors;\n          context.setState({\n            isLoading: false,\n            message: \"Error\",\n            errors: errors\n          });\n        }\n      });\n    }\n  }\n\n  handleJournalEntryEdit(index) {\n    var journalEntries  = this.state.data.journal_entries;\n\n    var accounting_code_id  = journalEntries[index].accounting_code_id;\n    var post_type           = journalEntries[index].post_type;\n    var amount              = journalEntries[index].amount;\n    var name                = journalEntries[index].name;\n\n    var journalEntry  = this.state.journalEntry;\n\n    journalEntry.index              = index;\n    journalEntry.accounting_code_id = accounting_code_id;\n    journalEntry.post_type          = post_type;\n    journalEntry.amount             = amount;\n    journalEntry.name               = name;\n\n    this.setState({\n      modalEditIsOpen: true,\n      journalEntry: journalEntry\n    });\n  }\n\n  handleJournalEntryPostTypeChanged(event) {\n    var journalEntry        = this.state.journalEntry;\n    journalEntry.post_type  = event.target.value;\n\n    this.setState({\n      journalEntry: journalEntry\n    });\n  }\n\n  updateBalanced() {\n    var debitAmount   = 0.00;\n    var creditAmount  = 0.00;\n\n    for(var i = 0; i < this.state.data.journal_entries.length; i++) {\n      if(this.state.data.journal_entries[i].post_type == \"DR\") {\n        debitAmount += parseFloat(this.state.data.journal_entries[i].amount);\n      } else if(this.state.data.journal_entries[i].post_type == \"CR\") {\n        creditAmount += parseFloat(this.state.data.journal_entries[i].amount);\n      }\n    }\n\n    debitAmount   = parseFloat(numberWithCommas(debitAmount));\n    creditAmount  = parseFloat(numberWithCommas(creditAmount));\n\n    console.log(\"debitAmount: \" + debitAmount);\n    console.log(\"creditAmount: \" + creditAmount);\n\n    if(this.state.data.journal_entries.size == 0) {\n      this.setState({\n        balanced: false\n      });\n\n      return false;\n    } else if(debitAmount != creditAmount) {\n      this.setState({\n        balanced: false\n      });\n\n      return false;\n    } else {\n      this.setState({\n        balanced: true\n      });\n\n      return false;\n    }\n  }\n\n  handleSaveBtnClicked() {\n    var context = this;\n    \n    context.setState({\n      isLoading: true\n    });\n  }\n\n  handleDatePreparedChanged(o) {\n    var data  = this.state.data;\n\n    data.date_prepared = o.target.value;\n\n    this.setState({\n      data: data\n    });\n  }\n\n  handleBranchChanged(o) {\n    console.log(\"handleBranchChanged:\");\n    console.log(o);\n    var temp  = \"\";\n\n    if(o) {\n      temp = o.value;\n    }\n\n    var data  = this.state.data;\n\n    data.branch_id    = temp;\n    data.branch_name  = o.label;\n\n    this.setState({\n      data: data,\n      currentBranch: o\n    });\n  }\n\n  handleAccountingCodeChanged(o) {\n    var temp  = \"\";\n\n    if(o) {\n      temp = o.value;\n    }\n\n    this.setState({\n      accountingCodeId: temp,\n      accountingCodeName: o.label,\n      accountingCodeObject: o\n    });\n  }\n\n  handleBookChanged(event) {\n    var data  = this.state.data;\n    data.book = event.target.value;\n\n    this.setState({\n      data: data\n    });\n  }\n\n  handleParticularChanged(event) {\n    var data        = this.state.data;\n    data.particular = event.target.value;\n\n    this.setState({\n      data: data\n    });\n  }\n\n  handleAccountingFundChanged(event) {\n    var data                = this.state.data;\n    data.accounting_fund_id = event.target.value;\n\n    this.setState({\n      data: data\n    });\n  }\n\n  handlePostTypeChanged(event) {\n    this.setState({\n      postType: event.target.value\n    });\n  }\n\n  handleAmountChanged(event) {\n    this.setState({\n      amount: event.target.value\n    });\n  }\n\n  handleAddJournalEntryClicked() {\n    var journal_entry = {\n      id: \"\",\n      accounting_code_id: this.state.accountingCodeId,\n      accounting_code_name: this.state.accountingCodeName,\n      post_type: this.state.postType,\n      amount: this.state.amount\n    }\n\n    var foundAccountingCode = false;\n\n    var errors  = [];\n\n    for(var i = 0; i < this.state.data.journal_entries.length; i++) {\n      if(this.state.data.journal_entries[i].accounting_code_id == journal_entry.accounting_code_id && this.state.data.journal_entries[i].post_type == journal_entry.post_type) { \n        errors.push(\"Duplicate accounting code\");\n      }\n    }\n\n    // Check if accounting code is selected\n    if(journal_entry.accounting_code_id == \"\") {\n      errors.push(\"No accounting code specified\");\n    }\n\n    // Check if amount is > 0\n    if(journal_entry.amount <= 0) {\n      errors.push(\"Invalid amount\");\n    }\n\n    if(errors.length > 0) {\n      alert(\"The following errors occurred:\");\n      for(var i = 0; i < errors.length; i++) {\n        alert(errors[i]);\n      }\n    } else {\n      // Add to journal entries\n      var data  = this.state.data;\n\n      data.journal_entries.push(journal_entry);\n\n      this.setState({\n        accountingCodeId: \"\",\n        accountingCodeName: \"\",\n        accountingCodeObject: {},\n        postType: \"DR\",\n        amount: 0.00,\n        data: data\n      });\n\n    }\n\n    this.updateBalanced();\n  }\n\n  handleRemoveClicked(index) {\n    var data            = this.state.data;\n    var journalEntries  = data.journal_entries;\n\n    var newJournalEntries = [];\n\n    for(var i = 0; i < journalEntries.length; i++) {\n      if(i != index) {\n        newJournalEntries.push(\n          journalEntries[i]\n        );\n      }\n    }\n\n    data.journal_entries = newJournalEntries;\n\n    this.setState({\n      data: data\n    });\n\n    this.updateBalanced();\n  }\n\n  renderErrorDisplay() {\n    var context = this;\n    var state   = context.state;\n    if(state.errors) {\n      return  (\n        <div className=\"row\">\n          <div className=\"col\">\n            <ErrorDisplay\n              errors={state.errors}\n            />\n          </div>\n        </div>\n      );\n    } else {\n      return  (\n        <div></div>\n      );\n    }\n  };\n\n  handleOrNumberChanged(event) {\n    var data            = this.state.data;\n    data.data.or_number = event.target.value;\n\n    this.setState({\n      data: data\n    });\n  };\n\n  handleArNumberChanged(event) {\n    var data            = this.state.data;\n    data.data.ar_number = event.target.value;\n\n    this.setState({\n      data: data\n    });\n  };\n  handleSiNumberChanged(event) {\n    var data            = this.state.data;\n    data.data.si_number = event.target.value;\n\n    this.setState({\n      data: data\n    });\n  };\n  handlePayeeChanged(event) {\n    var data        = this.state.data;\n    data.data.payee = event.target.value.toUpperCase();\n\n    this.setState({\n      data: data\n    });\n  };\n\n  handleCheckNumberChanged(event) {\n    var data                = this.state.data;\n    data.data.check_number  = event.target.value;\n\n    this.setState({\n      data: data\n    });\n  };\n\n  handleCheckVoucherNumberChanged(event) {\n    var data                        = this.state.data;\n    data.data.check_voucher_number  = event.target.value;\n\n    this.setState({\n      data: data\n    });\n  };\n\n  renderDataParameters() {\n    var accountingEntryData = this.state.data;\n    var state               = this.state;\n\n    if(accountingEntryData.book == \"CRB\") {\n      return  (\n        <div>\n          <hr/>\n          <h6>\n            Cash Receipt Parameters\n          </h6>\n          <div className=\"row\">\n            <div className=\"col\">\n              <div className=\"form-group\">\n                <label>\n                  OR Number\n                </label>\n                <input \n                  type=\"text\" \n                  value={accountingEntryData.data.or_number}\n                  onChange={this.handleOrNumberChanged.bind(this)} \n                  className=\"form-control\" \n                  disabled={this.state.isLoading}\n                />\n              </div>\n            </div>\n            <div className=\"col\">\n              <div className=\"form-group\">\n                <label>\n                  AR Number\n                </label>\n                <input \n                  type=\"text\" \n                  value={accountingEntryData.data.ar_number}\n                  onChange={this.handleArNumberChanged.bind(this)} \n                  className=\"form-control\" \n                  disabled={this.state.isLoading}\n                />\n              </div>\n            </div>\n            <div className=\"col\">\n              <div className=\"form-group\">\n                <label>\n                  Service Invoice\n                </label>\n                <input \n                  type=\"text\" \n                  value={accountingEntryData.data.si_number}\n                  onChange={this.handleSiNumberChanged.bind(this)} \n                  className=\"form-control\" \n                  disabled={this.state.isLoading}\n                />\n              </div>\n            </div>\n          </div>\n        </div>\n      );\n    } else if(accountingEntryData.book == \"CDB\") {\n      var dateOfCheck = new Date();\n\n      if(accountingEntryData && accountingEntryData.data.date_of_check) {\n        dateOfCheck = accountingEntryData.data.date_of_check;\n      }\n\n      return  (\n        <div>\n          <hr/>\n          <h6>\n            Cash Disbursement Parameters\n          </h6>\n          <div className=\"row\">\n            <div className=\"col-md-4\">\n              <div className=\"form-group\">\n                <label>\n                  Check Number\n                </label>\n                <input \n                  type=\"text\" \n                  value={accountingEntryData.data.check_number}\n                  onChange={this.handleCheckNumberChanged.bind(this)} \n                  className=\"form-control\" \n                  disabled={state.isLoading}\n                />\n              </div>\n            </div>\n            <div className=\"col-md-4\">\n              <div className=\"form-group\">\n                <label>\n                  Check Voucher Number\n                </label>\n                <input \n                  type=\"text\" \n                  value={accountingEntryData.data.check_voucher_number}\n                  onChange={this.handleCheckVoucherNumberChanged.bind(this)} \n                  className=\"form-control\" \n                  disabled={this.state.isLoading}\n                />\n              </div>\n            </div>\n            <div className=\"col-md-4\">\n              <div className=\"form-group\">\n                <label>Date of Check</label>\n                <input\n                  className=\"form-control\"\n                  value={dateOfCheck}\n                  onChange={this.handleDateOfCheckChanged.bind(this)}\n                  type=\"date\"\n                  disabled={state.isLoading}\n                />\n              </div>\n            </div>\n          </div>\n        </div>\n      );\n    }\n  };\n\n  handleJournalEntryAccountingCodeChanged(o) {\n    var journalEntry                  = this.state.journalEntry;\n    journalEntry.accounting_code_id   = o.value;\n    journalEntry.accounting_code_name = o.label;\n\n    this.setState({\n      journalEntry: journalEntry\n    });\n  }\n\n  handleJournalEntryAmountChanged(event) {\n    var journalEntry    = this.state.journalEntry;\n    journalEntry.amount = event.target.value;\n\n    this.setState({\n      journalEntry: journalEntry\n    });\n  }\n  \n  handleCancelJournalEntryClicked() {\n    this.setState({\n      modalEditIsOpen: false\n    })\n  }\n\n  handleSaveJournalEntryClicked() {\n    var journalEntry    = this.state.journalEntry;\n    var index           = journalEntry.index;\n    var data            = this.state.data;\n\n    console.log(journalEntry);\n\n    data.journal_entries[index].accounting_code_id    = journalEntry.accounting_code_id;\n    data.journal_entries[index].accounting_code_name  = journalEntry.accounting_code_name;\n    data.journal_entries[index].post_type             = journalEntry.post_type;\n    data.journal_entries[index].amount                = journalEntry.amount;\n\n    console.log(\"handleSaveJournalEntryClicked:\");\n    console.log(data.journal_entries[index]);\n    console.log(\"---handleSaveJournalEntryClicked\");\n\n    this.setState({\n      modalEditIsOpen: false,\n      data: data\n    })\n\n    this.updateBalanced();\n  }\n\n  renderModalEditContent() {\n    var state                 = this.state;\n    var journalEntry          = state.journalEntry;\n    var accountingCodeOptions = [];\n\n    var currentAccountingCode = {\n      value: \"\",\n      label: \"\"\n    }\n\n    for(var i = 0; i < state.accountingCodes.length; i++) {\n      if(journalEntry.accounting_code_id == state.accountingCodes[i].id) {\n        currentAccountingCode = {\n          value: state.accountingCodes[i].id,\n          label: state.accountingCodes[i].name\n        }\n      }\n\n      accountingCodeOptions.push({\n        value: state.accountingCodes[i].id,\n        label: state.accountingCodes[i].name\n      });\n    }\n\n    return  (\n      <div className=\"container-fluid\">\n        <h3>\n          Edit Journal Entry\n        </h3>\n        <hr/>\n        <div className=\"row\">\n          <div className=\"col-md-6\">\n            <div className=\"form-group\">\n              <label>\n                Accounting Code\n              </label>\n              <Select\n                value={currentAccountingCode}\n                options={accountingCodeOptions}\n                onChange={this.handleJournalEntryAccountingCodeChanged.bind(this)}\n                disabled={this.state.isLoading}\n              />\n            </div>\n          </div>\n          <div className=\"col-3\">\n            <div className=\"form-group\">\n              <label>\n                Post Type\n              </label>\n              <select\n                className=\"form-control\"\n                value={journalEntry.post_type}\n                onChange={this.handleJournalEntryPostTypeChanged.bind(this)}\n              >\n                <option value=\"DR\">\n                  Debit\n                </option>\n                <option value=\"CR\">\n                  Credit\n                </option>\n              </select>\n            </div>\n          </div>\n          <div className=\"col-3\">\n            <div className=\"form-group\">\n              <label>\n                Amount\n              </label>\n              <input\n                type=\"number\"\n                value={journalEntry.amount}\n                className=\"form-control\"\n                onChange={this.handleJournalEntryAmountChanged.bind(this)}\n              />\n            </div>\n          </div>\n        </div>\n        <hr/>\n        <center>\n          <div className=\"btn-group\">\n            <button\n              className=\"btn btn-primary\"\n              onClick={this.handleSaveJournalEntryClicked.bind(this)}\n            >\n              <span className=\"bi bi-check\"/>\n              Update\n            </button>\n            <button \n              className=\"btn btn-danger\"\n              onClick={this.handleCancelJournalEntryClicked.bind(this)}\n            >\n              <span className=\"bi bi-x\"/>\n              Cancel\n            </button>\n          </div>\n        </center>\n        <hr/>\n      </div>\n    );\n  }\n\n  render() {\n    var context               = this;\n    var state                 = context.state;\n    var data                  = state.data;\n    var branchOptions         = [];\n    var accountingCodeOptions = [];\n    var accountingFundOptions = [];\n\n    console.log(\"DATA:\");\n    console.log(data);\n\n    console.log(state.branches);\n\n    for(var i = 0; i < state.branches.length; i++) {\n      branchOptions.push({\n        value: state.branches[i].id,\n        label: state.branches[i].name\n      });\n    }\n\n    console.log(\"branchOptions:\");\n    console.log(branchOptions);\n\n    for(var i = 0; i < state.accountingCodes.length; i++) {\n      accountingCodeOptions.push({\n        value: state.accountingCodes[i].id,\n        label: state.accountingCodes[i].name\n      });\n    }\n\n    // Build accountingFundOptions as <option> tags\n    for(var i = 0; i < state.accountingFunds.length; i++) {\n      accountingFundOptions.push(\n        <option value={state.accountingFunds[i].id} key={\"accounting-fund-\" + state.accountingFunds[i].id}>\n          {state.accountingFunds[i].name}\n        </option>\n      );\n    }\n\n    var bookOptions = [\n      <option value={\"JVB\"}>\n        Journal Voucher\n      </option>,\n      <option value={\"CRB\"}>\n        Cash Receipts\n      </option>,\n      <option value={\"CDB\"}>\n        Cash Disbursement\n      </option>,\n      <option value={\"MISC\"}>\n        Miscellaneous\n      </option>\n    ];\n\n    var currentAccountingCodeId = this.state.accountingCodeId;\n\n    console.log(\"CURRENT BRANCH IN RENDER\");\n    console.log(this.state.currentBranch);\n    var tempCurrentBranch = {\n      value: this.state.currentBranch.value,\n      label: this.state.currentBranch.label\n    };\n\n    return (\n      <div>\n        <Modal\n          isOpen={this.state.modalEditIsOpen}\n          style={customStyles}\n        >\n          {this.renderModalEditContent()}\n        </Modal>\n        <div className=\"row\">\n          <div className=\"col\">\n            <h6>\n              Accounting Entry Form\n            </h6>\n          </div>\n        </div>\n        {this.renderErrorDisplay()}\n        <div className=\"row\">\n          <div className=\"col\">\n            <div className=\"form-group\">\n              <label>Date Prepared</label>\n              <br/>\n              <input\n                className=\"form-control\"\n                value={data.date_prepared}\n                type=\"date\"\n                onChange={context.handleDatePreparedChanged.bind(this)}\n              />\n            </div>\n          </div>\n          <div className=\"col\">\n            <div className=\"form-group\">\n              <label>Book</label>\n              <select \n                className=\"form-control\" \n                value={data.book} \n                onChange={this.handleBookChanged.bind(this)}\n                disabled={this.state.isLoading}\n              >\n                {bookOptions}\n              </select>\n            </div>\n          </div>\n          <div className=\"col\">\n            <div className=\"form-group\">\n              <label>Branch</label>\n              <Select\n                value={tempCurrentBranch}\n                options={branchOptions}\n                onChange={this.handleBranchChanged.bind(this)}\n                disabled={state.isLoading}\n              />\n              <br/>\n            </div>\n          </div>\n          <div className=\"col\">\n            <div className=\"form-group\">\n              <label>Payee</label>\n              <input\n                value={this.state.data.data.payee}\n                onChange={this.handlePayeeChanged.bind(this)}\n                disabled={state.isLoading}\n                className=\"form-control\"\n              />\n              <br/>\n            </div>\n          </div>\n        </div>\n        <div className=\"row\">\n          <div className=\"col\">\n            <div className=\"form-group\">\n              <label>Accounting Fund</label>\n              <select\n                value={data.accounting_fund_id}\n                className=\"form-control\"\n                onChange={this.handleAccountingFundChanged.bind(this)}\n              >\n                {accountingFundOptions}\n              </select>\n            </div>\n          </div>\n        </div>\n        <div className=\"row\">\n          <div className=\"col\">\n            <label>Particular</label>\n            <textarea \n              className=\"form-control\" \n              value={this.state.data.particular}\n              onChange={this.handleParticularChanged.bind(this)} \n              disabled={this.state.isLoading}\n            >\n            </textarea>\n          </div>\n        </div>\n        {this.renderDataParameters()}\n        <hr/>\n        <h6>Add Journal Entry</h6>\n        <div className=\"row\">\n          <div className=\"col-md-6\"> \n            <div className=\"form-group\">\n              <label>Accounting Code</label>\n              <Select\n                value={this.state.accountingCodeObject}\n                options={accountingCodeOptions}\n                onChange={this.handleAccountingCodeChanged.bind(this)}\n                disabled={this.state.isLoading}\n              />\n            </div>\n          </div>\n          <div className=\"col-md-2\"> \n            <div className=\"form-group\">\n              <label>Post Type</label>\n              <select \n                className=\"form-control\" \n                value={state.postType} \n                onChange={this.handlePostTypeChanged.bind(this)}\n                disabled={this.state.isLoading}\n              >\n                <option value={\"DR\"}>\n                  Debit\n                </option>\n                <option value={\"CR\"}>\n                  Credit\n                </option>\n              </select>\n            </div>\n          </div>\n          <div className=\"col-md-2\"> \n            <div className=\"form-group\">\n              <label>Amount</label>\n              <input\n                type=\"number\"\n                className=\"form-control\"\n                value={this.state.amount}\n                onChange={this.handleAmountChanged.bind(this)}\n                disabled={this.state.isLoading}\n              />\n            </div>\n          </div>\n          <div className=\"col-md-2\"> \n            <div className=\"form-group\">\n              <label>Actions</label>\n              <div className=\"form-group\">\n                <div className=\"btn-group\">\n                  <button\n                    className=\"btn btn-info btn-block\"\n                    onClick={this.handleAddJournalEntryClicked.bind(this)}\n                  >\n                    <span className=\"fa fa-plus\"/>\n                    Add\n                  </button>\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n        <hr/>\n        <h6>\n          Accounting Entry Preview\n        </h6>\n        <AccountingEntryPreview\n          book={data.book}\n          particular={data.particular}\n          datePrepared={data.date_prepared}\n          branch={data.branch_name}\n          balanced={this.state.balanced}\n          status={this.state.data.status}\n          journalEntries={this.state.data.journal_entries}\n          isLoading={this.state.isLoading}\n          handleRemoveClicked={this.handleRemoveClicked.bind(this)}\n          handleJournalEntryEdit={this.handleJournalEntryEdit.bind(this)}\n          data={this.state.data.data}\n        />\n\n        <hr/>\n        <div>\n          {this.state.message}\n        </div>\n        <div className=\"btn-group\">\n          <button\n            className=\"btn btn-primary\"\n            onClick={this.save.bind(this)}\n          >\n            <span className=\"bi bi-check\"/>\n            Save\n          </button>\n          <a href={\"/accounting/books/\" + data.book.toLowerCase()} className=\"btn btn-danger\">\n            <span className=\"bi bi-x\" />\n            Cancel\n          </a>\n        </div>\n      </div>\n    );\n  }\n}\n", "import React from 'react';\nimport $ from 'jquery';\nimport moment from 'moment';\nimport Select from 'react-select';\nimport Toggle from 'react-toggle';\nimport \"react-toggle/style.css\";\n\nimport SkCubeLoading from '../../SkCubeLoading';\nimport ErrorDisplay from '../../ErrorDisplay';\nimport {numberWithCommas} from '../../utils/helpers';\n\nexport default class ShowComponent extends React.Component {\n  constructor(props) {\n    super(props);\n\n    this.state  = {\n      isLoading: true,\n      data: false,\n      errors: false,\n      centers: [],\n      currentOfficerId: \"\",\n      currentCenterId: \"\"\n    };\n  }\n\n  componentDidMount() {\n    var context = this;\n\n    $.ajax({\n      url: \"/api/v1/data_stores/icpr/fetch\",\n      method: 'GET',\n      data: {\n        id: this.props.id\n      },\n      success: function(response) {\n        context.setState({\n          isLoading: false,\n          data: response.data\n        });\n      },\n      error: function(response) {\n        console.log(response);\n        alert(\"Error in fetching icpr\");\n      }\n    });\n  }\n\n  renderMonths(o) {\n    return  o.months.map(function(x) {\n              return  <td key={o.id + '-month-' + x.month_index} className=\"text-end\">\n                        {numberWithCommas(x.amount)}\n                      </td>\n            });\n  }\n\n  renderRows() {\n    var context = this;\n\n    console.log(context.state.data);\n\n    return  context.state.data.records.map(function(o, i) {\n              return  <tr key={o.id}>\n                        <td className=\"text-center\">{i + 1}</td>\n                        <td>\n                          <a href={\"/equity_accounts/\" + o.member_account_id} target=\"_blank\">\n                            <strong>\n                              {o.last_name}, {o.first_name} {o.middle_name}\n                            </strong>\n                          </a>\n                        </td>\n                        <td>\n                          {o.identification_number}\n                        </td>\n                        <td>\n                          {o.center.name}\n                        </td>\n                        {context.renderMonths(o)}\n                        <td className=\"text-end\">\n                          {numberWithCommas(o.total_equity)} \n                        </td>\n                        <td className=\"text-end\">\n                          {numberWithCommas(o.ave_equity)} \n                        </td>\n                        <td className=\"text-end\">\n                          {numberWithCommas(o.equity_interest_amount)} \n                        </td>\n                        <td className=\"text-end\">\n                          {numberWithCommas(o.savings_distribute)} \n                        </td>\n                        <td className=\"text-end\">\n                          {numberWithCommas(o.cbu_distribute)}\n                        </td>\n                      </tr>\n            });\n  }\n\n  render() {\n    if(this.state.isLoading) {\n      return <SkCubeLoading />;\n    } else {\n      return  (\n        <div>\n          <table className=\"table table-sm table-bordered table-responsive\">\n            <thead>\n              <tr>\n                <th>\n                </th>\n                <th>\n                  Member\n                </th>\n                <th>\n                  Identification Number\n                </th>\n                <th>\n                  Center\n                </th>\n                <th className=\"text-end\">\n                  Jan\n                </th>\n                <th className=\"text-end\">\n                  Feb\n                </th>\n                <th className=\"text-end\">\n                  Mar\n                </th>\n                <th className=\"text-end\">\n                  Apr\n                </th>\n                <th className=\"text-end\">\n                  May\n                </th>\n                <th className=\"text-end\">\n                  Jun\n                </th>\n                <th className=\"text-end\">\n                  Jul\n                </th>\n                <th className=\"text-end\">\n                  Aug\n                </th>\n                <th className=\"text-end\">\n                  Sep\n                </th>\n                <th className=\"text-end\">\n                  Oct\n                </th>\n                <th className=\"text-end\">\n                  Nov\n                </th>\n                <th className=\"text-end\">\n                  Dec\n                </th>\n                <th className=\"text-end\">\n                  Total\n                </th>\n                <th className=\"text-end\">\n                  Average\n                </th>\n                <th className=\"text-end\">\n                  Equity Interest Amount\n                </th>\n                <th className=\"text-end\">\n                  Savings Distribute\n                </th>\n                <th className=\"text-end\">\n                  CBU Distribute\n                </th>\n              </tr>\n            </thead>\n            <tbody>\n              {this.renderRows()}\n              <tr>\n                <th colSpan=\"18\">\n                  Total\n                </th>\n                <th className=\"text-end\">\n                  {numberWithCommas(this.state.data.total_equity_interest_amount)}\n                </th>\n                <th className=\"text-end\">\n                  {numberWithCommas(this.state.data.total_savings_distribute)}\n                </th>\n                <th className=\"text-end\">\n                  {numberWithCommas(this.state.data.total_cbu_distribute)}\n                </th>\n              </tr>\n            </tbody>\n          </table>\n        </div>\n      );\n    }\n  }\n}\n", "import React from 'react';\r\nimport $ from 'jquery';\r\nimport moment from 'moment';\r\nimport Select from 'react-select';\r\nimport Toggle from 'react-toggle';\r\nimport \"react-toggle/style.css\";\r\n\r\nimport SkCubeLoading from '../../SkCubeLoading';\r\nimport ErrorDisplay from '../../ErrorDisplay';\r\nimport {numberWithCommas} from '../../utils/helpers';\r\n\r\nexport default class ShowComponent extends React.Component {\r\n  constructor(props) {\r\n    super(props);\r\n\r\n    this.state  = {\r\n      isLoading: true,\r\n      data: false,\r\n      errors: false,\r\n      centers: [],\r\n      currentOfficerId: \"\",\r\n      currentCenterId: \"\"\r\n    };\r\n  }\r\n\r\n  componentDidMount() {\r\n    var context = this;\r\n\r\n    $.ajax({\r\n      url: \"/api/v1/data_stores/patronage_refund/fetch\",\r\n      method: 'GET',\r\n      data: {\r\n        id: this.props.id\r\n      },\r\n      success: function(response) {\r\n        context.setState({\r\n          isLoading: false,\r\n          data: response.data\r\n        });\r\n      },\r\n      error: function(response) {\r\n        console.log(response);\r\n        alert(\"Error in fetching patronage_refund\");\r\n      }\r\n    });\r\n  }\r\n\r\n  renderMonths(o) {\r\n    return  o.months.map(function(x) {\r\n              return  <td key={o.id + '-month-' + x.month_index} className=\"text-end\">\r\n                        {numberWithCommas(x.amount)}\r\n                      </td>\r\n            });\r\n  }\r\n\r\n  renderRows() {\r\n    var context = this;\r\n\r\n    console.log(context.state.data);\r\n\r\n    return  context.state.data.records.map(function(o, i) {\r\n              return  <tr key={o.id}>\r\n                        <td className=\"text-center\">{i + 1}</td>\r\n                        <td>\r\n                          <a href={\"/members/\" + o.id + \"/display\"} target=\"_blank\">\r\n                            <strong>\r\n                              {o.last_name}, {o.first_name} {o.middle_name}\r\n                            </strong>\r\n                          </a>\r\n                        </td>\r\n                        <td>\r\n                          {o.identification_number}\r\n                        </td>\r\n                        <td>\r\n                          {o.center.name}\r\n                        </td>\r\n                        {context.renderMonths(o)}\r\n                        <td className=\"text-end\">\r\n                          {numberWithCommas(o.total_interest_paid_amount)} \r\n                        </td>\r\n                        <td className=\"text-end\">\r\n                          {numberWithCommas(o.ave_interest)} \r\n                        </td>\r\n                        <td className=\"text-end\">\r\n                          {numberWithCommas(o.patronage_interest_amount)} \r\n                        </td>\r\n                        <td className=\"text-end\">\r\n                          {numberWithCommas(o.savings_distribute)} \r\n                        </td>\r\n                        <td className=\"text-end\">\r\n                          {numberWithCommas(o.cbu_distribute)}\r\n                        </td>\r\n                      </tr>\r\n            });\r\n  }\r\n\r\n  render() {\r\n    if(this.state.isLoading) {\r\n      return <SkCubeLoading />;\r\n    } else {\r\n      return  (\r\n        <div>\r\n          <table className=\"table table-sm table-bordered table-responsive\">\r\n            <thead>\r\n              <tr>\r\n                <th>\r\n                </th>\r\n                <th>\r\n                  Member\r\n                </th>\r\n                <th>\r\n                  Identification Number\r\n                </th>\r\n                <th>\r\n                  Center\r\n                </th>\r\n                <th className=\"text-end\">\r\n                  Jan\r\n                </th>\r\n                <th className=\"text-end\">\r\n                  Feb\r\n                </th>\r\n                <th className=\"text-end\">\r\n                  Mar\r\n                </th>\r\n                <th className=\"text-end\">\r\n                  Apr\r\n                </th>\r\n                <th className=\"text-end\">\r\n                  May\r\n                </th>\r\n                <th className=\"text-end\">\r\n                  Jun\r\n                </th>\r\n                <th className=\"text-end\">\r\n                  Jul\r\n                </th>\r\n                <th className=\"text-end\">\r\n                  Aug\r\n                </th>\r\n                <th className=\"text-end\">\r\n                  Sep\r\n                </th>\r\n                <th className=\"text-end\">\r\n                  Oct\r\n                </th>\r\n                <th className=\"text-end\">\r\n                  Nov\r\n                </th>\r\n                <th className=\"text-end\">\r\n                  Dec\r\n                </th>\r\n                <th className=\"text-end\">\r\n                  Total Interest\r\n                </th>\r\n                <th className=\"text-end\">\r\n                  Average Interest\r\n                </th>\r\n                <th className=\"text-end\">\r\n                  Patronage Refund Interest\r\n                </th>\r\n                <th className=\"text-end\">\r\n                  Savings Distribute\r\n                </th>\r\n                <th className=\"text-end\">\r\n                  CBU Distribute\r\n                </th>\r\n              </tr>\r\n            </thead>\r\n            <tbody>\r\n              {this.renderRows()}\r\n              <tr>\r\n                <th colSpan=\"18\">\r\n                  Total\r\n                </th>\r\n                <th className=\"text-end\">\r\n                  {numberWithCommas(this.state.data.patronage_interest_amount)}\r\n                </th>\r\n                <th className=\"text-end\">\r\n                  {numberWithCommas(this.state.data.total_savings_distribute)}\r\n                </th>\r\n                <th className=\"text-end\">\r\n                  {numberWithCommas(this.state.data.total_cbu_distribute)}\r\n                </th>\r\n              </tr>\r\n            </tbody>\r\n          </table>\r\n        </div>\r\n      );\r\n    }\r\n  }\r\n}\r\n", "import React from 'react';\nimport $ from 'jquery';\nimport moment from 'moment';\n\nimport SkCubeLoading from '../../../SkCubeLoading';\nimport ErrorDisplay from '../../../ErrorDisplay';\nimport {numberWithCommas} from '../../../utils/helpers';\n\nimport OptionEditor from './OptionEditor';\n\nexport default class SurveyUIComponent extends React.Component {\n  constructor(props) {\n    super(props);\n\n    this.state  = {\n      isLoading: true,\n      isSaving: false,\n      surveyId: this.props.surveyId,\n      data: false,\n      errors: false\n    };\n  }\n\n  componentDidMount() {\n    this.fetchSurveyQuestionData();\n  }\n\n  fetchSurveyQuestionData() {\n    var context = this;\n    var state   = context.state;\n\n    console.log(state);\n\n    $.ajax({\n      url: \"/api/v1/administration/survey_questions/fetch\",\n      method: 'GET',\n      data: {\n        survey_id: this.props.surveyId,\n        id: this.props.id\n      },\n      success: function(response) {\n        console.log(response);\n        context.setState({\n          isLoading: false,\n          data: response\n        });\n      },\n      error: function(response) {\n        console.log(response);\n        alert(\"Error in fetching survey question\");\n      }\n    });\n  }\n\n  save() {\n    var context = this;\n    var data    = context.state.data;\n\n    this.setState({\n      isSaving: true,\n      errors: false\n    });\n\n    $.ajax({\n      url: \"/api/v1/administration/survey_questions/save\",\n      method: 'POST',\n      data: {\n        authenticity_token: context.props.authenticityToken,\n        data: JSON.stringify(data),\n        survey_id: context.props.surveyId,\n        id: context.props.id\n      },\n      success: function(response) {\n        window.location.href=\"/administration/surveys/\" + context.props.surveyId;\n      },\n      error: function(response) {\n        try {\n          context.setState({\n            errors: JSON.parse(response.responseText),\n            isSaving: false\n          });\n        } catch(err) {\n          alert(\"Something went wrong\");\n          context.setState({\n            errors: false,\n            isSaving: false\n          });\n        }\n      }\n    });\n  }\n\n  handleContentChanged(event) {\n    var data      = this.state.data;\n    data.content  = event.target.value;\n\n    this.updateData(data);\n  }\n\n  handleQuestionTypeChanged(event) {\n    var data            = this.state.data;\n    data.question_type  = event.target.value;\n\n    this.updateData(data);\n  }\n\n  handlePriorityChanged(event) {\n    var data      = this.state.data;\n    data.priority = event.target.value;\n\n    this.updateData(data);\n  }\n\n  updateData(data) {\n    this.setState({\n      data: data\n    });\n  }\n\n  handleAddOption() {\n    var data  = this.state.data;\n\n    data.data.options.push(\n      {\n        content: \"\",\n        score: 0\n      }\n    )\n\n    this.updateData(data);\n  }\n\n  removeOption(index) {\n    var data  = this.state.data;\n\n    data.data.options.splice(index, 1);\n\n    this.updateData(data);\n  }\n\n  renderOptions() {\n    var questionType  = this.state.data.question_type;\n\n    if(questionType == \"options\") {\n      var options         = this.state.data.data.options;\n      var optionsDisplay  = [];\n\n      for(var i = 0; i < options.length; i++) {\n        optionsDisplay.push(\n          <OptionEditor\n            key={\"option-\" + i}\n            index={i}\n            option={options[i]}\n            removeOption={this.removeOption.bind(this)}\n            isSaving={this.state.isSaving}\n          />\n        );\n      }\n\n      return  (\n        <div>\n          <div className=\"row\">\n            <div className=\"col\">\n              <h4>\n                Options ({options.length})\n              </h4>\n            </div>\n            <div className=\"col\">\n              <div className=\"text-end\">\n                <div className=\"btn-group\">\n                  <a \n                    href=\"#\" \n                    className=\"btn\"\n                    onClick={this.handleAddOption.bind(this)}\n                  >\n                    <span className=\"fa fa-plus\"/>\n                    Add Option\n                  </a>\n                </div>\n              </div>\n            </div>\n          </div>\n          <div className=\"row\">\n            <div className=\"col\">\n              {optionsDisplay}\n            </div>\n          </div>\n        </div>\n      );\n    } else if(questionType == \"free_text\") {\n      return  (\n        <p>\n          Free text for answers\n        </p>\n      );\n    }\n  }\n\n  renderErrorDisplay() {\n    if(this.state.errors) {\n      return  (\n        <ErrorDisplay\n          errors={this.state.errors}\n        />\n      );\n    }\n  }\n\n  render() {\n    var data  = this.state.data;\n\n    if(this.state.isLoading) {\n      return (\n        <div>\n          <SkCubeLoading/>\n        </div>\n      );\n    } else {\n      var data  = this.state.data;\n      return (\n        <div>\n          {this.renderErrorDisplay()}\n          <div className=\"row\">\n            <div className=\"col-md-8\">\n              <div className=\"form-group\">\n                <label>\n                  Content\n                </label>\n                <input\n                  className=\"form-control\"\n                  value={data.content}\n                  onChange={this.handleContentChanged.bind(this)}\n                  disabled={this.state.isSaving}\n                />\n              </div>\n            </div>\n            <div className=\"col-md-2\">\n              <div className=\"form-group\">\n                <label>\n                  Type\n                </label>\n                <select\n                  className=\"form-control\"\n                  value={data.question_type}\n                  onChange={this.handleQuestionTypeChanged.bind(this)}\n                  disabled={this.state.isSaving}\n                >\n                  <option value=\"options\">Options</option>\n                  <option value=\"free_text\">Free Text</option>\n                </select>\n              </div>\n            </div>\n            <div className=\"col-md-2\">\n              <div className=\"form-group\">\n                <label>\n                  Priority\n                </label>\n                <input\n                  type=\"number\"\n                  className=\"form-control\"\n                  value={data.priority}\n                  onChange={this.handlePriorityChanged.bind(this)}\n                  disabled={this.state.isSaving}\n                />\n              </div>\n            </div>\n          </div>\n          <hr/>\n          {this.renderOptions()}\n          <hr/>\n          <div className=\"row\">\n            <div className=\"col\">\n              <center>\n                <div className=\"btn-group\">\n                  <button\n                    className=\"btn btn-success\"\n                    disabled={this.props.isSaving}\n                    onClick={this.save.bind(this)}\n                  >\n                    <span className=\"bi bi-check\"/>\n                    Save Question\n                  </button>\n                  <button\n                    className=\"btn btn-danger\"\n                    disabled={this.props.isSaving}\n                  >\n                    <span className=\"bi bi-x\"/>\n                    Cancel\n                  </button>\n                </div>\n              </center>\n            </div>\n          </div>\n        </div>\n      );\n    }\n  }\n}\n", "import React from 'react';\n\nexport default class OptionEditor extends React.Component {\n  constructor(props) {\n    super(props);\n\n    this.state = {\n      index: this.props.index,\n      option: this.props.option\n    }\n  }\n\n  removeOption() {\n    this.props.removeOption(this.state.index);\n  }\n\n  handleContentChanged(event) {\n    var option      = this.state.option;\n    var index       = this.state.index;\n\n    option.content  = event.target.value;\n\n    this.setState({\n      option: option\n    });\n\n    this.props.updateOption(option, index);\n  }\n\n  handleScoreChanged(event) {\n    var option      = this.state.option;\n    option.score    = event.target.value;\n\n    this.setState({\n      option: option\n    });\n  }\n\n  render() {\n    var style = {\n      marginBottom: \"10px\"\n    };\n\n    return  (\n      <div style={style}>\n        <div className=\"row\">\n          <div className=\"col-md-10\">\n            <div className=\"form-group\">\n              <label>\n                Option {this.props.index + 1}\n              </label>\n              <input\n                className=\"form-control\"\n                value={this.props.option.content}\n                onChange={this.handleContentChanged.bind(this)}\n                disabled={this.props.isSaving}\n              />\n            </div>\n          </div>\n          <div className=\"col-md-2\">\n            <div className=\"form-group\">\n              <label>\n                Score\n              </label>\n              <input\n                className=\"form-control\"\n                type=\"number\"\n                value={this.props.option.score}\n                onChange={this.handleScoreChanged.bind(this)}\n                disabled={this.props.isSaving}\n              />\n            </div>\n          </div>\n        </div>\n        <div className=\"row\">\n          <div className=\"col\">\n            <button\n              className=\"btn btn-danger btn-sm\"\n              onClick={this.removeOption.bind(this)}\n            >\n              <span className=\"bi bi-x\"/>\n              Remove\n            </button>\n          </div>\n        </div>\n      </div>\n    );\n  }\n}\n", "import React, { useState, useEffect } from 'react';\nimport SkCubeLoading from '../../SkCubeLoading';\nimport Filter from './Filter';\nimport MasterListView from './MasterListView';\nimport RepaymentRatesView from './RepaymentRatesView';\nimport AgingOfReceivablesView from './AgingOfReceivablesView';\nimport AgingOfReceivablesMFIView from './AgingOfReceivablesMFIView';\nimport { fetchRepaymentRate } from '../../../services/RepaymentRatesService';\n\nexport default ShowComponent = (props) => {\n  const [isLoading, setIsLoading]                       = useState(true);\n  const [data, setData]                                 = useState(false);\n  const [centers, setCenters]                           = useState([]);\n  const [officers, setOfficers]                         = useState([]);\n  const [loanProducts, setLoanProducts]                 = useState([]);\n  const [currentOfficerId, setCurrentOfficerId]         = useState(\"\");\n  const [currentCenterId, setCurrentCenterId]           = useState(\"\");\n  const [currentLoanProductId, setCurrentLoanProductId] = useState(\"\");\n  const [currentLoanProductTaggingId, setCurrentLoanProductTaggingId] = useState(\"\");\n  const [currentView, setCurrentView]                   = useState(\"RR\");\n  const [currentStatus, setCurrentStatus]               = useState(\"\");\n  const [currentGender, setCurrentGender]               = useState(\"\");\n\n  const statusOptions = [\"ACTIVE\", \"RESIGNED\", \"PENDING\", \"DELINQUENT\"];\n  const genderOptions = [\"MALE\", \"FEMALE\", \"OTHERS\"];\n\n  let { id } = props;\n\n  // Filter logic, now including loan product tagging\n  const filterData = () => {\n    let fData = {...data};\n\n    if (currentCenterId) {\n      fData.records = fData.records.filter((o) => o.center.id == currentCenterId);\n    }\n\n    if (currentOfficerId) {\n      fData.records = fData.records.filter((o) => o.officer.id == currentOfficerId);\n    }\n\n    if (currentLoanProductId) {\n      fData.records = fData.records.filter((o) => o.loan_product.id == currentLoanProductId);\n    }\n\n    if (currentStatus) {\n      fData.records = fData.records.filter((o) => o.member.status.toLowerCase() == currentStatus.toLowerCase());\n    }\n\n    if (currentGender) {\n      fData.records = fData.records.filter((o) => o.member.gender.toLowerCase() == currentGender.toLowerCase());\n    }\n\n    // Loan Product Tagging filter\n    if (currentLoanProductTaggingId) {\n      fData.records = fData.records.filter((o) => o.loan_product.loan_product_tagging_id == currentLoanProductTaggingId);\n    }\n\n    return fData;\n  };\n\n  // Fetch data logic\n  const fetch = () => {\n    const fetchData = {\n      center_id: currentCenterId,\n      loan_product_id: currentLoanProductId,\n      officer_id: currentOfficerId,\n    };\n\n    fetchRepaymentRate(id, fetchData)\n      .then((payload) => {\n        const _data = payload.data.data;\n        setIsLoading(false);\n        setData(_data);\n        setCenters(_data.centers);\n        setLoanProducts(_data.loan_products);\n        setOfficers(_data.officers);\n      })\n      .catch((payload) => {\n        console.log(payload);\n        alert(\"Something went wrong when fetching data store\");\n      });\n  };\n\n  useEffect(() => {\n    fetch();\n  }, []);\n\n  // Handlers for updating filter state\n  const handleCenterChanged = (event) => setCurrentCenterId(event.target.value);\n  const handleOfficerChanged = (event) => setCurrentOfficerId(event.target.value);\n  const handleLoanProductChanged = (event) => setCurrentLoanProductId(event.target.value);\n  const handleLoanProductTaggingChanged = (event) => setCurrentLoanProductTaggingId(event.target.value); // Handle loan product tagging change\n  const handleViewToggled = (viewName) => setCurrentView(viewName);\n  const handleStatusChanged = (e) => setCurrentStatus(e.target.value);\n  const handleGenderChanged = (e) => setCurrentGender(e.target.value);\n\n  // Conditional rendering based on view\n  if (isLoading) {\n    return <SkCubeLoading />;\n  } else if (currentView == \"RR\") {\n    return (\n      <div>\n        <Filter\n          currentView={currentView}\n          handleViewToggled={handleViewToggled}\n          centers={centers}\n          officers={officers}\n          status={statusOptions}\n          gender={genderOptions}\n          loanProducts={loanProducts}\n          currentCenterId={currentCenterId}\n          currentLoanProductId={currentLoanProductId}\n          currentLoanProductTaggingId={currentLoanProductTaggingId}\n          currentStatus={currentStatus}\n          currentGender={currentGender}\n          handleCenterChanged={handleCenterChanged}\n          handleLoanProductChanged={handleLoanProductChanged}\n          handleLoanProductTaggingChanged={handleLoanProductTaggingChanged} // Pass handler to Filter\n          handleOfficerChanged={handleOfficerChanged}\n          handleStatusChanged={handleStatusChanged}\n          handleGenderChanged={handleGenderChanged}\n        />\n        <hr />\n        <RepaymentRatesView data={filterData()} />\n      </div>\n    );\n  } else if (currentView == \"AOR\") {\n    return (\n      <div>\n        <Filter\n          currentView={currentView}\n          handleViewToggled={handleViewToggled}\n          centers={centers}\n          officers={officers}\n          status={statusOptions}\n          gender={genderOptions}\n          loanProducts={loanProducts}\n          currentCenterId={currentCenterId}\n          currentLoanProductId={currentLoanProductId}\n          currentLoanProductTaggingId={currentLoanProductTaggingId}\n          currentStatus={currentStatus}\n          currentGender={currentGender}\n          handleCenterChanged={handleCenterChanged}\n          handleLoanProductChanged={handleLoanProductChanged}\n          handleLoanProductTaggingChanged={handleLoanProductTaggingChanged}\n          handleOfficerChanged={handleOfficerChanged}\n          handleStatusChanged={handleStatusChanged}\n          handleGenderChanged={handleGenderChanged}\n        />\n        <hr />\n        <AgingOfReceivablesView data={filterData()} />\n      </div>\n    );\n  } else if (currentView == \"AORMFI\") {\n    return (\n      <div>\n        <Filter\n          currentView={currentView}\n          handleViewToggled={handleViewToggled}\n          centers={centers}\n          officers={officers}\n          status={statusOptions}\n          gender={genderOptions}\n          loanProducts={loanProducts}\n          currentCenterId={currentCenterId}\n          currentLoanProductId={currentLoanProductId}\n          currentLoanProductTaggingId={currentLoanProductTaggingId}\n          currentStatus={currentStatus}\n          currentGender={currentGender}\n          handleCenterChanged={handleCenterChanged}\n          handleLoanProductChanged={handleLoanProductChanged}\n          handleLoanProductTaggingChanged={handleLoanProductTaggingChanged}\n          handleOfficerChanged={handleOfficerChanged}\n          handleStatusChanged={handleStatusChanged}\n          handleGenderChanged={handleGenderChanged}\n        />\n        <hr />\n        <AgingOfReceivablesMFIView data={filterData()} />\n      </div>\n    );\n  } else if (currentView == \"ML\") {\n    return (\n      <div>\n        <Filter\n          currentView={currentView}\n          handleViewToggled={handleViewToggled}\n          centers={centers}\n          officers={officers}\n          status={statusOptions}\n          gender={genderOptions}\n          loanProducts={loanProducts}\n          currentCenterId={currentCenterId}\n          currentLoanProductId={currentLoanProductId}\n          currentLoanProductTaggingId={currentLoanProductTaggingId}\n          currentStatus={currentStatus}\n          currentGender={currentGender}\n          handleCenterChanged={handleCenterChanged}\n          handleLoanProductChanged={handleLoanProductChanged}\n          handleLoanProductTaggingChanged={handleLoanProductTaggingChanged}\n          handleOfficerChanged={handleOfficerChanged}\n          handleStatusChanged={handleStatusChanged}\n          handleGenderChanged={handleGenderChanged}\n        />\n        <hr />\n        <MasterListView data={filterData()} />\n      </div>\n    );\n  } else {\n    return <div><p>Invalid view name: {currentView}</p></div>;\n  }\n};\n", "import React, { useState, useEffect } from 'react';\nimport \"react-toggle/style.css\";\nimport ToggleSwitch from '../../utils/ToggleSwitch';\nimport $ from 'jquery';\n\n\nexport default Filter = (props) => {\n  let {\n    loanProducts,\n    centers,\n    officers,\n    status,\n    gender,\n    currentView,\n    currentCenterId,\n    currentOfficerId,\n    currentLoanProductId,\n    currentStatus,\n    currentGender,\n    handleViewToggled,\n    handleCenterChanged,\n    handleOfficerChanged,\n    handleLoanProductChanged,\n    handleStatusChanged,\n    handleGenderChanged,\n    handleLoanProductTaggingChanged,\n  } = props;\n\n  const [loanProductTagging, setLoanProductTagging] = useState([]);\n  const [currentLoanProductTaggingId, setCurrentLoanProductTaggingId] = useState(\"\");\n\n  useEffect(() => {\n    if (currentLoanProductId) {\n      $.ajax({\n        url: \"/api/loan_product_taggings\",\n        data: {\n          loan_product_id: currentLoanProductId,\n        },\n        method: \"GET\",\n        success: function (response) {\n          setLoanProductTagging(response.loan_product_tagging);\n          setCurrentLoanProductTaggingId(response.loan_product_tagging[0]?.id || \"\");\n        },\n        error: function (response) {\n          console.log(response);\n        },\n      });\n    }\n  }, [currentLoanProductId]);\n\n  const renderGenderOptions = () => {\n    let options = [];\n\n    options.push(\n      <option key=\"\" value=\"\">\n        -- SELECT --\n      </option>\n    );\n    \n    gender.forEach((item) => {\n      options.push(\n        <option key={item} value={item}>\n          {item}\n        </option>\n      );\n    });\n\n    return options;\n  };\n\n  const renderStatusOptions = () => {\n    let options = [];\n\n    options.push(\n      <option key=\"\" value=\"\">\n        -- SELECT --\n      </option>\n    );\n    \n    status.forEach((item) => {\n      options.push(\n        <option key={item} value={item}>\n          {item}\n        </option>\n      );\n    });\n\n    return options;\n  };\n\n  const renderLoanProductOptions = () => {\n    let options = [];\n  \n    options.push(\n      <option value=\"\" key={\"loan-product-select\"}>\n        -- SELECT --\n      </option>\n    );\n  \n    loanProducts.forEach((o, index) => {\n      options.push(\n        <option key={`loan-product-${o.id}-${index}`} value={o.id}>\n          {o.name}\n        </option>\n      );\n    });\n  \n    return options;\n  };\n  \n\n  const renderCenterOptions = () => {\n    let options = [];\n\n    options.push(\n      <option value=\"\" key={\"center-select\"}>\n        -- SELECT --\n      </option>\n    );\n\n    centers.forEach((o) => {\n      options.push(\n        <option value={o.id} key={`center-${o.id}`}>\n          {o.name}\n        </option>\n      );\n    })\n\n    return options;\n  }\n\n  const renderOfficerOptions = () => {\n    var options = [];\n\n    options.push(\n      <option value=\"\" key={\"officer-select\"}>\n        -- SELECT --\n      </option>\n    );\n\n    officers.forEach((o) => {\n      options.push(\n        <option value={o.id} key={`officer-${o.id}`}>\n          {o.last_name}, {o.first_name}\n        </option>\n      );\n    })\n\n    return options;\n  }\n\n  const renderLoanProductTaggingOptions = () => {\n    let options = [];\n  \n    options.push(\n      <option value=\"\" key={\"loan-product-tagging-select\"}>\n        -- SELECT --\n      </option>\n    );\n  \n    loanProductTagging.forEach((tag) => {\n      options.push(\n        <option value={tag.id} key={`loan-product-tagging-${tag.id}`}>\n          {tag.name}\n        </option>\n      );\n    });\n  \n    return options;\n  };\n\n  return  (\n    <div className=\"row\">\n      <div className=\"col-md-3 col-xs-12\">\n        <div className=\"form-group\">\n          <div className=\"row\">\n            <div className=\"col\">\n              <ToggleSwitch\n                name={`current-view-rr`}\n                key={`current-view-rr`}\n                checked={currentView == \"RR\"}\n                defaultChecked={currentView == \"RR\"}\n                onChange={() => {\n                  handleViewToggled(\"RR\")\n                }}\n              />\n              <br/>\n              <label>\n                RR\n              </label>\n            </div>\n            <div className=\"col\">\n              <ToggleSwitch\n                name={`current-view-aor`}\n                key={`current-view-aor`}\n                checked={currentView == \"AOR\"}\n                defaultChecked={currentView == \"AOR\"}\n                onChange={() => {\n                  handleViewToggled(\"AOR\")\n                }}\n              />\n              <br/>\n              <label>\n                AoR\n              </label>\n            </div>\n            <div className=\"col\">\n              <ToggleSwitch\n                name={`current-view-aor-mfi`}\n                key={`current-view-aor-mfi`}\n                checked={currentView == \"AORMFI\"}\n                defaultChecked={currentView == \"AORMFI\"}\n                onChange={() => {\n                  handleViewToggled(\"AORMFI\")\n                }}\n              />\n              <br/>\n              <label>\n                AoR of MFI\n              </label>\n            </div>\n            <div className=\"col\">\n              <ToggleSwitch\n                name={`current-view-ml`}\n                key={`current-view-ml`}\n                checked={currentView == \"ML\"}\n                defaultChecked={currentView == \"ML\"}\n                onChange={() => {\n                  handleViewToggled(\"ML\")\n                }}\n              />\n              <br/>\n              <label>\n                ML\n              </label>\n            </div>\n          </div>\n        </div>\n      </div>\n      <div className=\"col-md-3 col-xs-12\">\n        <div className=\"form-group\">\n          <label>\n            Center\n          </label>\n          <select\n            className=\"form-control\"\n            value={currentCenterId}\n            onChange={handleCenterChanged}\n          >\n            {renderCenterOptions()}\n          </select>\n        </div>\n      </div>\n      {/* Loan Product Selection */}\n      <div className=\"col-md-3 col-xs-12\">\n        <div className=\"form-group\">\n          <label>Loan Products</label>\n          <select\n            className=\"form-control\"\n            value={currentLoanProductId}\n            onChange={(e) => {\n              handleLoanProductChanged(e);\n              setCurrentLoanProductTaggingId(\"\");\n            }}\n          >\n            {renderLoanProductOptions()}\n          </select>\n        </div>\n      </div>\n\n      {/* Loan Product Tagging */}\n      <div className=\"col-md-3 col-xs-12\">\n        <div className=\"form-group\">\n          <label>Loan Product Tag</label>\n          <select\n          className=\"form-control\"\n          value={currentLoanProductTaggingId}\n          onChange={(e) => {\n            const selectedTagId = e.target.value;\n            setCurrentLoanProductTaggingId(selectedTagId);\n            handleLoanProductTaggingChanged(e);\n            \n\n            // Add console.log to see selected value\n            console.log(\"Selected Loan Product Tag ID:\", selectedTagId);\n          }}\n        >\n            {renderLoanProductTaggingOptions()}\n          </select>\n        </div>\n      </div>\n      <div className=\"col-md-3 col-xs-12\">\n        <div className=\"form-group\">\n          <label>\n            Officers\n          </label>\n          <select\n            className=\"form-control\"\n            value={currentOfficerId}\n            onChange={handleOfficerChanged}\n          >\n            {renderOfficerOptions()}\n          </select>\n        </div>\n      </div>\n      <div className=\"col-md-3 col-xs-12\">\n      <div className=\"form-group\">\n        <label>\n          Member Status\n        </label>\n        <select\n          className=\"form-control\"\n          value={currentStatus}\n          onChange={handleStatusChanged}\n        >\n          {renderStatusOptions()}\n        </select>\n      </div>\n      </div>\n      <div className=\"col-md-3 col-xs-12\">\n      <div className=\"form-group\">\n        <label>Gender</label>\n        <select\n         className=\"form-control\"\n         value={currentGender} \n         onChange={handleGenderChanged}\n         >\n          {renderGenderOptions()}\n        </select>\n      </div>\n      </div>\n\n    </div>\n  );\n}\n", "import React from 'react';\nimport {numberWithCommas} from '../../utils/helpers';\n\nexport default MasterListView = (props) => {\n  let {\n    data\n  } = props;\n\n  const renderDataRows = () => {\n    var loans = data.records;\n    var rows  = [];\n\n    var totalLoanAmount       = 0.00;\n    var totalPrincipalBalance = 0.00;\n    var totalInterestBalance  = 0.00;\n    var totalTotalBalance     = 0.00;\n\n    for(var i = 0; i < loans.length; i++) {\n      var member      = loans[i].member;\n      var center      = loans[i].center;\n      var loanProduct = loans[i].loan_product;\n\n      rows.push(\n        <tr key={\"ml-\" + loans[i].id}>\n          <td className=\"text-center\">\n            {i + 1} \n          </td>\n          <td>\n            <a href={\"/loans/\" + loans[i].id} target=\"_blank\">\n              <strong>\n                {member.last_name}, {member.first_name} {member.middle_name}\n              </strong>\n            </a>\n          </td>\n          <td className=\"text-muted\">\n            <small>\n              {center.name}\n            </small>\n          </td>\n          <td>\n            {loanProduct.name}\n          </td>\n          <td>\n            {loans[i].date_released} \n          </td>\n          <td>\n            {loans[i].maturity_date} \n          </td>\n          <td className=\"text-end\">\n            {numberWithCommas(loans[i].principal)}\n          </td>\n          <td className=\"text-end\">\n            {numberWithCommas(loans[i].overall_principal_balance)}\n          </td>\n          <td className=\"text-end\">\n            {numberWithCommas(loans[i].overall_interest_balance)}\n          </td>\n          <td className=\"text-end\">\n            {numberWithCommas(loans[i].overall_balance)}\n          </td>\n        </tr>\n      );\n\n      totalLoanAmount       += parseFloat(loans[i].principal);\n      totalPrincipalBalance += parseFloat(loans[i].overall_principal_balance);\n      totalInterestBalance  += parseFloat(loans[i].overall_interest_balance);\n      totalTotalBalance     += parseFloat(loans[i].overall_balance);\n    }\n\n    rows.push(\n      <tr key={\"ml-grand-total\"}>\n        <th></th>\n        <th colSpan=\"5\">\n          Total ({loans.length})\n        </th>\n        <th className=\"text-end\">\n          {numberWithCommas(totalLoanAmount)}\n        </th>\n        <th className=\"text-end\">\n          {numberWithCommas(totalPrincipalBalance)}\n        </th>\n        <th className=\"text-end\">\n          {numberWithCommas(totalInterestBalance)}\n        </th>\n        <th className=\"text-end\">\n          {numberWithCommas(totalTotalBalance)}\n        </th>\n      </tr>\n    );\n\n    return rows;\n  }\n\n  return  (\n    <div>\n      <h5>\n        Master List of Loans\n      </h5>\n\n      <table className=\"table table-bordered table-hover table-sm\" style={{fontSize: \"0.8em\"}}>\n        <thead>\n          <tr>\n            <th>\n            </th>\n            <th style={{width: \"20%\"}}>\n              Name\n            </th>\n            <th>\n              Center\n            </th>\n            <th>\n              Loan Product\n            </th>\n            <th>\n              Date Released\n            </th>\n            <th>\n              Maturity Date\n            </th>\n            <th className=\"text-end\">\n              Loan Amount\n            </th>\n            <th className=\"text-end\">\n              Principal Balance\n            </th>\n            <th className=\"text-end\">\n              Interest Balance\n            </th>\n            <th className=\"text-end\">\n              Total Balance\n            </th>\n          </tr>\n        </thead>\n        <tbody>\n          {renderDataRows()}\n        </tbody>\n      </table>\n    </div>\n  );\n}\n", "import React from 'react';\nimport {numberWithCommas, numberAsPercent} from '../../utils/helpers';\n<script src=\"https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.16.9/xlsx.full.min.js\"></script>\n\nexport default RepaymentRatesView = (props) => {\n  const renderDataRows = () => {\n    var loans = props.data.records;\n    var rows  = [];\n\n    var totalPrincipal                = 0.00;\n    var totalPrincipalPaid            = 0.00;\n    var totalOverallPrincipalBalance  = 0.00;\n    var totalInterest                 = 0.00;\n    var totalInterestPaid             = 0.00;\n    var totalOverallInterestBalance   = 0.00;\n    var totalTotalPaid                = 0.00;\n    var totalPrincipalDue             = 0.00;\n    var totalTotalDue                 = 0.00;\n    var totalTotalBalance             = 0.00;\n    var totalPrincipalBalance         = 0.00;\n    var totalOverallBalance           = 0.00;\n    var totalRR                       = 0;\n    var totalPrincipalRR              = 0;\n\n    var totalPrincipalPaidDue = 0.00;\n    var totalInterestPaidDue  = 0.00;\n    var totalPaidDue          = 0.00;\n\n    for(var i = 0; i < loans.length; i++) {\n      var member      = loans[i].member;\n      var center      = loans[i].center;\n      var loanProduct = loans[i].loan_product;\n\n      var backgroundColor = \"#fff\";\n      \n      if(loans[i].total_paid > loans[i].total_paid_due) {\n        backgroundColor = \"#e9ecfd\";\n      } else if(loans[i].principal_balance > 0) {\n        backgroundColor = \"#ffe1e1\";\n      }\n\n      rows.push(\n        <tr key={\"rr-\" + loans[i].id} style={{ backgroundColor: backgroundColor }}>\n          <td className=\"text-center\">\n            {i + 1}\n          </td>\n          <td>\n            <a href={\"/loans/\" + loans[i].id} target=\"_blank\">\n              <strong>\n                {member.last_name}, {member.first_name} {member.middle_name}\n                <br/>\n                <small className=\"text-muted\">\n                  | {center.name} | {member.status} | {member.gender}\n                </small>\n              </strong>\n            </a>\n          </td>\n          <td>\n            {loanProduct.name}\n            <br/>\n            <small className=\"text-muted\">\n              {loanProduct.loan_product_tagging_name}\n            </small>\n          </td>\n          <td className=\"text-end\">\n            {numberWithCommas(loans[i].principal)}\n          </td>\n          <td className=\"text-end\">\n            {numberWithCommas(loans[i].principal_paid)}\n          </td>\n          <td className=\"text-end\">\n            {numberWithCommas(loans[i].overall_principal_balance)}\n          </td>\n          <td className=\"text-end\">\n            {numberWithCommas(loans[i].interest)}\n          </td>\n          <td className=\"text-end\">\n            {numberWithCommas(loans[i].interest_paid)}\n          </td>\n          <td className=\"text-end\">\n            {numberWithCommas(loans[i].overall_interest_balance)}\n          </td>\n          <td className=\"text-end\">\n            {numberWithCommas(loans[i].total_paid)}\n          </td>\n          <td className=\"text-end\">\n            {numberWithCommas(loans[i].overall_balance)}\n          </td>\n          <td className=\"text-end\">\n            {numberWithCommas(loans[i].principal_paid_due)}\n          </td>\n          <td className=\"text-end\">\n            {numberWithCommas(loans[i].principal_balance)}\n          </td>\n          <td className=\"text-end\">\n            {numberWithCommas(loans[i].principal_due)}\n          </td>\n          <td className=\"text-center\">\n            {numberAsPercent(loans[i].principal_rr)}\n          </td>\n        </tr>\n      );\n\n      totalPrincipal                += parseFloat(loans[i].principal);\n      totalPrincipalPaid            += parseFloat(loans[i].principal_paid);\n      totalPrincipalPaidDue         += parseFloat(loans[i].principal_paid_due);\n      totalOverallPrincipalBalance  += parseFloat(loans[i].overall_principal_balance);\n      totalInterest                 += parseFloat(loans[i].interest);\n      totalInterestPaid             += parseFloat(loans[i].interest_paid);\n      totalOverallInterestBalance   += parseFloat(loans[i].overall_interest_balance);\n      totalTotalPaid                += parseFloat(loans[i].total_paid);\n      totalPrincipalDue             += parseFloat(loans[i].principal_due);\n      totalTotalDue                 += parseFloat(loans[i].total_due);\n      totalTotalBalance             += parseFloat(loans[i].total_balance);\n      totalPrincipalBalance         += parseFloat(loans[i].principal_balance);\n      totalPaidDue                  += parseFloat(loans[i].total_paid_due);\n    }\n\n    totalOverallBalance = totalOverallPrincipalBalance + totalOverallInterestBalance;\n    //totalRR = (totalTotalPaid / totalTotalDue);\n    totalRR = (totalPaidDue / totalTotalDue);\n\n    //totalRR = (totalPaidDue - totalTotalBalance) / totalPaidDue;\n    //totalPrincipalRR  = (totalPrincipalPaidDue - totalPrincipalBalance) / totalPrincipalPaidDue;\n    totalPrincipalRR  = (totalPrincipalPaidDue / totalPrincipalDue);\n\n    if(totalPrincipalRR > 1)  {\n      totalPrincipalRR = 1;\n    }\n\n    console.log(\"totalTotalPaid: \" + totalTotalPaid);\n    console.log(\"totalTotalDue: \" + totalTotalDue);\n    console.log(\"totalPaidDue: \" + totalPaidDue);\n    console.log(\"totalPrincipalPaidDue: \" + totalPrincipalPaidDue);\n    console.log(\"totalPrincipalBalance: \" + totalPrincipalBalance);\n    console.log(\"totalRR: \" + totalRR);\n\n    var backgroundColor = \"#fff\";\n\n    rows.push(\n      <tr key=\"rr-grand-total\">\n        <th className=\"text-center\">\n        </th>\n        <th colSpan=\"2\">\n          <strong>\n            Total ({loans.length})\n          </strong>\n        </th>\n        <th className=\"text-end\">\n          {numberWithCommas(totalPrincipal)}\n        </th>\n        <th className=\"text-end\">\n          {numberWithCommas(totalPrincipalPaid)}\n        </th>\n        <th className=\"text-end\">\n          {numberWithCommas(totalOverallPrincipalBalance)}\n        </th>\n        <th className=\"text-end\">\n          {numberWithCommas(totalInterest)}\n        </th>\n        <th className=\"text-end\">\n          {numberWithCommas(totalInterestPaid)}\n        </th>\n        <th className=\"text-end\">\n          {numberWithCommas(totalOverallInterestBalance)}\n        </th>\n        <th className=\"text-end\">\n          {numberWithCommas(totalTotalPaid)}\n        </th>\n        <th className=\"text-end\">\n          {numberWithCommas(totalOverallBalance)}\n        </th>\n        <th className=\"text-end\">\n          {numberWithCommas(totalPrincipalPaidDue)}\n        </th>\n        <th className=\"text-end\">\n          {numberWithCommas(totalPrincipalBalance)}\n        </th>\n        <th className=\"text-end\">\n          {numberWithCommas(totalPrincipalDue)}\n        </th>\n        <th className=\"text-center\">\n          {numberAsPercent(totalPrincipalRR)}\n        </th>\n        \n      </tr>\n    );\n\n    return rows;\n  }\n  \n  var numRecords  = 0;\n  var numPastDue  = 0;\n  var numAdvanced = 0;\n\n  var loans = props.data.records;\n\n  numRecords  = loans.length;\n\n  for(var i = 0; i < loans.length; i++) {\n    if(loans[i].total_paid > loans[i].total_paid_due) {\n      numAdvanced++;\n    } else if(loans[i].principal_balance > 0) {\n      numPastDue++;\n    }\n  }\n\n  return (\n    <div>\n      <div className=\"row\">\n        <div className=\"col-md-6\">\n          <h5>\n            Repayment Rates\n          </h5>\n        </div>\n        <div className=\"col-md-6\">\n          <div className=\"text-end\">\n            <label style={{marginRight: \"12px\"}}>\n              Total Records: \n              <span className=\"badge bg-secondary\">\n                {numRecords}\n              </span>\n            </label>\n            <label style={{marginRight: \"12px\"}}>\n              Number of Past Due:\n              <span className=\"badge bg-danger\">\n                {numPastDue}\n              </span>\n            </label>\n            <label>\n              Number of Advanced:\n              <span className=\"badge bg-info\">\n                {numAdvanced}\n              </span>\n            </label>\n          </div>\n        </div>\n      </div>\n\n      <table className=\"table table-bordered table-hover table-sm\" style={{fontSize: \"0.75em\"}}>\n        <thead>\n          <tr>\n            <th>\n            </th>\n            <th style={{width: \"20%\"}}>\n              Name\n            </th>\n            <th>\n              Product\n            </th>\n            <th className=\"text-end\">\n              Principal\n            </th>\n            <th className=\"text-end\">\n              P. Paid\n            </th>\n            <th className=\"text-end\">\n              P. Bal\n            </th>\n            <th className=\"text-end\">\n              Interest\n            </th>\n            <th className=\"text-end\">\n              I. Paid\n            </th>\n            <th className=\"text-end\">\n              I. Bal.\n            </th>\n            <th className=\"text-end\">\n              Total Paid\n            </th>\n            <th className=\"text-end\">\n              Total Bal.\n            </th>\n            <th className=\"text-end\">\n              Paid Due\n            </th>\n            <th className=\"text-end\">\n              Past Due\n            </th>\n            <th className=\"text-end\">\n              Cum. Due\n            </th>\n            <th className=\"text-center\">\n              RR\n            </th>\n          </tr>\n        </thead>\n        <tbody>\n          {renderDataRows()}\n        </tbody>\n      </table>\n    </div>\n  )\n}\n\ndocument.addEventListener('DOMContentLoaded', function() {\n  var printButton = document.getElementById('btn-print-rp');\n  var downloadButton = document.getElementById('btn-print-excel');\n\n  if (printButton) {\n    printButton.addEventListener('click', function() {\n      var printWindow = window.open('', '', 'height=600,width=800');\n      var tableHtml = document.querySelector('table').outerHTML; \n      tableHtml = tableHtml.replace(/<a[^>]*>(.*?)<\\/a>/g, '$1');\n      var repaymentTitle = document.getElementById('hidden-title').innerHTML;\n\n      var headerHtml = `\n        <style>\n          .arial-font {\n            font-family: Arial, sans-serif;\n            color: black; \n            margin: 10px 5px;\n          }\n          h3 {\n            font-size: 25px; \n            font-weight: bold; \n          }\n          h4 {\n            font-size: 15px; \n            font-weight: normal;\n            font-weight: bold;\n          }\n        </style>\n        <h3 class=\"arial-font\">KASAGANA-KA CREDIT AND SAVINGS COOPERATIVE</h3>\n        <h4 class=\"arial-font\">4th Floor KMBA Members' Center Building #5 Matimpiin St. Brgy. Pinyahan Quezon City 1100</h4>\n        <h4 class=\"arial-font\">${repaymentTitle}</h4>\n      `;\n\n      printWindow.document.write('<style>body{font-family: Arial, sans-serif;} table{width: 100%; border-collapse: collapse;} th, td{border: 1px solid #000; padding: 5px; text-align: left;} th{background-color: #f2f2f2;} </style>'); \n      printWindow.document.write('</head><body>');\n      printWindow.document.write(headerHtml);\n      printWindow.document.write(tableHtml);\n      printWindow.document.write('</body></html>');\n\n      printWindow.document.close();\n      printWindow.print();\n    });\n  }\n\n\n\n  if (downloadButton) {\n    downloadButton.addEventListener('click', function() {\n      const table = document.querySelector('table');\n      const rows = Array.from(table.querySelectorAll('tr'));\n      \n      const data = rows.map(row => \n        Array.from(row.querySelectorAll('td, th'))\n          .map(cell => `\"${cell.innerText.trim().replace(/\"/g, '\"\"')}\"`)\n          .join(\",\")\n      ).join(\"\\n\");\n    \n\n      const blob = new Blob([data], { type: 'text/csv;charset=utf-8;' });\n\n      const url = URL.createObjectURL(blob);\n\n      const link = document.createElement(\"a\");\n      link.setAttribute(\"href\", url);\n      link.setAttribute(\"download\", \"Repayment_Rate_Reports.csv\"); \n      document.body.appendChild(link);    \n      link.click();\n      document.body.removeChild(link);\n    });\n}\n});\n\n", "import React from 'react';\nimport {numberWithCommas} from '../../utils/helpers';\n\nexport default AgingOfReceivablesView = (props) => {\n  let {\n    data\n  } = props;\n\n  const renderDataRows = () => {\n    var loans   = data.records;\n    var rows    = [];\n    var counter = 0;\n\n    var totalCategoryAPastDueAmount = 0.00;\n    var totalCategoryAParAmount     = 0.00;\n\n    var totalCategoryBPastDueAmount = 0.00;\n    var totalCategoryBParAmount     = 0.00;\n\n    var totalCategoryCPastDueAmount = 0.00;\n    var totalCategoryCParAmount     = 0.00;\n\n    var categoryACounter  = 0;\n    var categoryBCounter  = 0;\n    var categoryCCounter  = 0;\n\n    for(var i = 0; i < loans.length; i++) {\n      var member      = loans[i].member;\n      var center      = loans[i].center;\n      var loanProduct = loans[i].loan_product;\n\n      var dateReleased  = loans[i].date_released;\n\n      var categoryAPastDueAmount  = 0.00;\n      var categoryAParAmount      = 0.00;\n\n      var categoryBPastDueAmount  = 0.00;\n      var categoryBParAmount      = 0.00;\n\n      var categoryCPastDueAmount  = 0.00;\n      var categoryCParAmount      = 0.00;\n\n      var numDaysPar  = parseInt(loans[i].num_days_par);\n      var par         = loans[i].par;\n\n      //if(numDaysPar > 0) {\n      if(par > 0) {\n        counter++;\n\n        if(numDaysPar >= 1 && numDaysPar <= 30) {\n          categoryAPastDueAmount  = parseFloat(loans[i].principal_balance);\n          categoryAParAmount      = parseFloat(loans[i].overall_principal_balance);\n\n          totalCategoryAPastDueAmount += categoryAPastDueAmount;\n          totalCategoryAParAmount     += categoryAParAmount;\n\n          categoryACounter++;\n        } else if(numDaysPar >= 31 && numDaysPar <= 365) {\n          categoryBPastDueAmount  = parseFloat(loans[i].principal_balance);\n          categoryBParAmount      = parseFloat(loans[i].overall_principal_balance);\n\n          totalCategoryBPastDueAmount += categoryBPastDueAmount;\n          totalCategoryBParAmount     += categoryBParAmount;\n\n          categoryBCounter++;\n        } else if(numDaysPar >= 365) {\n          categoryCPastDueAmount  = parseFloat(loans[i].principal_balance);\n          categoryCParAmount      = parseFloat(loans[i].overall_principal_balance);\n\n          totalCategoryCPastDueAmount += categoryCPastDueAmount;\n          totalCategoryCParAmount     += categoryCParAmount;\n\n          categoryCCounter++;\n        }\n\n        rows.push(\n          <tr key={\"aor-\" + loans[i].id}>\n            <td className=\"text-center\">\n              {counter}\n            </td>\n            <td>\n              <a href={\"/loans/\" + loans[i].id} target=\"_blank\">\n                <strong>\n                  {member.last_name}, {member.first_name} {member.middle_name}\n                  <br/>\n                  <small className=\"text-muted\">\n                    PN: {loans[i].pn_number} Center: {center.name}\n                  </small>\n                </strong>\n              </a>\n            </td>\n            <td>\n              {loanProduct.name}\n            </td>\n            <td className=\"\">\n              {dateReleased}\n            </td>\n            <td className=\"text-end\">\n              {numberWithCommas(categoryAPastDueAmount)}\n              <br/>\n              {numberWithCommas(categoryAParAmount)}\n            </td>\n            <td className=\"text-end\">\n              {numberWithCommas(categoryBPastDueAmount)}\n              <br/>\n              {numberWithCommas(categoryBParAmount)}\n            </td>\n            <td className=\"text-end\">\n              {numberWithCommas(categoryCPastDueAmount)}\n              <br/>\n              {numberWithCommas(categoryCParAmount)}\n            </td>\n          </tr>\n        );\n      }\n    }\n\n    // TOTAL\n    var totalPastDueAmount  = totalCategoryAPastDueAmount + totalCategoryBPastDueAmount + totalCategoryCPastDueAmount;\n    var totalParAmount      = totalCategoryAParAmount + totalCategoryBParAmount + totalCategoryCParAmount;\n\n    rows.push(\n      <tr key={\"aor-total\"}>\n        <td className=\"text-center\">\n        </td>\n        <td colSpan=\"2\">\n          <strong>\n            Grand Total\n          </strong>\n        </td>\n        <td className=\"text-end\">\n          <strong>\n            {numberWithCommas(totalPastDueAmount)}\n            <br/>\n            {numberWithCommas(totalParAmount)}\n            <br/>\n            {counter}\n          </strong>\n        </td>\n        <td className=\"text-end\">\n          <strong>\n            {numberWithCommas(totalCategoryAPastDueAmount)}\n            <br/>\n            {numberWithCommas(totalCategoryAParAmount)}\n            <br/>\n            {categoryACounter}\n          </strong>\n        </td>\n        <td className=\"text-end\">\n          <strong>\n            {numberWithCommas(totalCategoryBPastDueAmount)}\n            <br/>\n            {numberWithCommas(totalCategoryBParAmount)}\n            <br/>\n            {categoryBCounter}\n          </strong>\n        </td>\n        <td className=\"text-end\">\n          <strong>\n            {numberWithCommas(totalCategoryCPastDueAmount)}\n            <br/>\n            {numberWithCommas(totalCategoryCParAmount)}\n            <br/>\n            {categoryCCounter}\n          </strong>\n        </td>\n      </tr>\n    );\n    return rows;\n  }\n\n  return  (\n    <div>\n       <h5>\n        Aging Of Receivables\n      </h5>\n      <table className=\"table table-sm table-hover table-bordered\" style={{fontSize: \"0.8em\"}}>\n        <thead>\n          <tr>\n            <th className=\"text-center\">\n            </th>\n            <th>\n              Name\n            </th>\n            <th>\n              Product\n            </th>\n            <th>\n              Total\n            </th>\n            <th className=\"text-end\">\n              1-30\n            </th>\n            <th className=\"text-end\">\n              31-365\n            </th>\n            <th className=\"text-end\">\n              365 onwards\n            </th>\n          </tr>\n        </thead>\n        <tbody>\n          {renderDataRows()}\n        </tbody>\n      </table>\n    </div>\n  );\n}\n", "import React from 'react';\nimport {numberWithCommas} from '../../utils/helpers';\n\nexport default AgingOfReceivablesMFIView = (props) => {\n  let {\n    data\n  } = props;\n\n  const renderDataRows = () => {\n    var loans   = data.records;\n    var rows    = [];\n    var counter = 0;\n\n    var totalCategoryAPastDueAmount = 0.00;\n    var totalCategoryAParAmount     = 0.00;\n\n    var totalCategoryBPastDueAmount = 0.00;\n    var totalCategoryBParAmount     = 0.00;\n\n    var totalCategoryCPastDueAmount = 0.00;\n    var totalCategoryCParAmount     = 0.00;\n\n    var totalCategoryDPastDueAmount = 0.00;\n    var totalCategoryDParAmount     = 0.00;\n    \n    var totalCategoryEPastDueAmount = 0.00; //91-120\n    var totalCategoryEParAmount     = 0.00;\n    \n    var totalCategoryFPastDueAmount = 0.00; //121-150\n    var totalCategoryFParAmount     = 0.00;\n    \n    var totalCategoryGPastDueAmount = 0.00; //151-180\n    var totalCategoryGParAmount     = 0.00;\n    \n    var categoryACounter  = 0;\n    var categoryBCounter  = 0;\n    var categoryCCounter  = 0;\n    var categoryDCounter  = 0;\n    var categoryECounter  = 0;\n    var categoryFCounter  = 0;\n    var categoryGCounter  = 0;\n\n    for(var i = 0; i < loans.length; i++) {\n      var member      = loans[i].member;\n      var center      = loans[i].center;\n      var loanProduct = loans[i].loan_product;\n\n      var dateReleased  = loans[i].date_released;\n\n      var categoryAPastDueAmount  = 0.00;\n      var categoryAParAmount      = 0.00;\n\n      var categoryBPastDueAmount  = 0.00;\n      var categoryBParAmount      = 0.00;\n\n      var categoryCPastDueAmount  = 0.00;\n      var categoryCParAmount      = 0.00;\n      \n      var categoryCPastDueAmount  = 0.00;\n      var categoryCParAmount      = 0.00;\n      \n      var categoryDPastDueAmount  = 0.00;\n      var categoryDParAmount      = 0.00;\n      \n      var categoryEPastDueAmount  = 0.00;\n      var categoryEParAmount      = 0.00;\n      \n      var categoryFPastDueAmount  = 0.00;\n      var categoryFParAmount      = 0.00;\n      \n      var categoryGPastDueAmount  = 0.00;\n      var categoryGParAmount      = 0.00;\n\n      var numDaysPar  = parseInt(loans[i].num_days_par);\n      var par         = loans[i].par;\n\n      //if(numDaysPar > 0) {\n      if(par > 0) {\n        counter++;\n\n        if(numDaysPar >= 1 && numDaysPar <= 30) {\n          categoryAPastDueAmount  = parseFloat(loans[i].principal_balance);\n          categoryAParAmount      = parseFloat(loans[i].overall_principal_balance);\n\n          totalCategoryAPastDueAmount += categoryAPastDueAmount;\n          totalCategoryAParAmount     += categoryAParAmount;\n\n          categoryACounter++;\n        } else if(numDaysPar >= 31 && numDaysPar <= 60) {\n          categoryBPastDueAmount  = parseFloat(loans[i].principal_balance);\n          categoryBParAmount      = parseFloat(loans[i].overall_principal_balance);\n\n          totalCategoryBPastDueAmount += categoryBPastDueAmount;\n          totalCategoryBParAmount     += categoryBParAmount;\n\n          categoryBCounter++;\n      \n      \n\n        } else if(numDaysPar >= 61 && numDaysPar <= 90) {\n          categoryCPastDueAmount  = parseFloat(loans[i].principal_balance);\n          categoryCParAmount      = parseFloat(loans[i].overall_principal_balance);\n\n          totalCategoryCPastDueAmount += categoryCPastDueAmount;\n          totalCategoryCParAmount     += categoryCParAmount;\n\n          categoryCCounter++;\n        \n        } else if(numDaysPar >= 91 && numDaysPar <= 120) {\n          categoryEPastDueAmount  = parseFloat(loans[i].principal_balance);\n          categoryEParAmount      = parseFloat(loans[i].overall_principal_balance);\n\n          totalCategoryEPastDueAmount += categoryEPastDueAmount;\n          totalCategoryEParAmount     += categoryEParAmount;\n\n          categoryECounter++;\n        \n        } else if(numDaysPar >= 121 && numDaysPar <= 150) {\n          categoryFPastDueAmount  = parseFloat(loans[i].principal_balance);\n          categoryFParAmount      = parseFloat(loans[i].overall_principal_balance);\n\n          totalCategoryFPastDueAmount += categoryFPastDueAmount;\n          totalCategoryFParAmount     += categoryFParAmount;\n\n          categoryFCounter++;\n        \n        } else if(numDaysPar >= 121 && numDaysPar <= 150) {\n          categoryGPastDueAmount  = parseFloat(loans[i].principal_balance);\n          categoryGParAmount      = parseFloat(loans[i].overall_principal_balance);\n\n          totalCategoryGPastDueAmount += categoryGPastDueAmount;\n          totalCategoryGParAmount     += categoryGParAmount;\n\n          categoryGCounter++;\n\n\n        }  else {\n          categoryDPastDueAmount  = parseFloat(loans[i].principal_balance);\n          categoryDParAmount      = parseFloat(loans[i].overall_principal_balance);\n\n          totalCategoryDPastDueAmount += categoryDPastDueAmount;\n          totalCategoryDParAmount     += categoryDParAmount;\n\n          categoryDCounter++;\n\n\n        //} else (numDaysPar >= 91  ) {\n        //} else if(numDaysPar >= 91) {\n        //  categoryDPastDueAmount  = parseFloat(loans[i].principal_balance);\n        //  categoryDParAmount      = parseFloat(loans[i].overall_principal_balance);\n\n        //  totalCategoryDPastDueAmount += categoryDPastDueAmount;\n        //  totalCategoryDParAmount     += categoryDParAmount;\n\n        //  categoryDCounter++;\n        }\n\n        rows.push(\n          <tr key={\"aormfi-\" + loans[i].id}>\n            <td className=\"text-center\">\n              {counter}\n            </td>\n            <td>\n              <a href={\"/loans/\" + loans[i].id} target=\"_blank\">\n                <strong>\n                  {member.last_name}, {member.first_name} {member.middle_name}\n                  <br/>\n                  <small className=\"text-muted\">\n                    PN: {loans[i].pn_number} Center: {center.name}\n                  </small>\n                </strong>\n              </a>\n            </td>\n            <td>\n              {loanProduct.name}\n            </td>\n            <td className=\"\">\n              {dateReleased}\n            </td>\n            <td className=\"text-end\">\n              {numberWithCommas(categoryAPastDueAmount)}\n              <br/>\n              {numberWithCommas(categoryAParAmount)}\n            </td>\n            <td className=\"text-end\">\n              {numberWithCommas(categoryBPastDueAmount)}\n              <br/>\n              {numberWithCommas(categoryBParAmount)}\n            </td>\n            <td className=\"text-end\">\n              {numberWithCommas(categoryCPastDueAmount)}\n              <br/>\n              {numberWithCommas(categoryCParAmount)}\n            </td>\n            <td className=\"text-end\">\n              {numberWithCommas(categoryEPastDueAmount)}\n              <br/>\n              {numberWithCommas(categoryEParAmount)}\n            </td>\n            <td className=\"text-end\">\n              {numberWithCommas(categoryFPastDueAmount)}\n              <br/>\n              {numberWithCommas(categoryFParAmount)}\n            </td>\n            <td className=\"text-end\">\n              {numberWithCommas(categoryGPastDueAmount)}\n              <br/>\n              {numberWithCommas(categoryGParAmount)}\n            </td>\n            <td className=\"text-end\">\n              {numberWithCommas(categoryDPastDueAmount)}\n              <br/>\n              {numberWithCommas(categoryDParAmount)}\n            </td>\n          </tr>\n        );\n      }\n    }\n\n    // TOTAL\n    var totalPastDueAmount  = totalCategoryAPastDueAmount + totalCategoryBPastDueAmount + totalCategoryCPastDueAmount + totalCategoryDPastDueAmount + totalCategoryEPastDueAmount + totalCategoryFPastDueAmount +  totalCategoryGPastDueAmount;\n    var totalParAmount      = totalCategoryAParAmount + totalCategoryBParAmount + totalCategoryCParAmount + totalCategoryDParAmount + totalCategoryEParAmount + totalCategoryFParAmount + totalCategoryGParAmount;\n\n    rows.push(\n      <tr key={\"aor-total\"}>\n        <td className=\"text-center\">\n        </td>\n        <td colSpan=\"2\">\n          <strong>\n            Grand Total\n          </strong>\n        </td>\n        <td className=\"text-end\">\n          <strong>\n            {numberWithCommas(totalPastDueAmount)}\n            <br/>\n            {numberWithCommas(totalParAmount)}\n            <br/>\n            {counter}\n          </strong>\n        </td>\n        <td className=\"text-end\">\n          <strong>\n            {numberWithCommas(totalCategoryAPastDueAmount)}\n            <br/>\n            {numberWithCommas(totalCategoryAParAmount)}\n            <br/>\n            {categoryACounter}\n          </strong>\n        </td>\n        <td className=\"text-end\">\n          <strong>\n            {numberWithCommas(totalCategoryBPastDueAmount)}\n            <br/>\n            {numberWithCommas(totalCategoryBParAmount)}\n            <br/>\n            {categoryBCounter}\n          </strong>\n        </td>\n        <td className=\"text-end\">\n          <strong>\n            {numberWithCommas(totalCategoryCPastDueAmount)}\n            <br/>\n            {numberWithCommas(totalCategoryCParAmount)}\n            <br/>\n            {categoryCCounter}\n          </strong>\n        </td>\n        <td className=\"text-end\">\n          <strong>\n            {numberWithCommas(totalCategoryEPastDueAmount)}\n            <br/>\n            {numberWithCommas(totalCategoryEParAmount)}\n            <br/>\n            {categoryECounter}\n          </strong>\n        </td>\n        <td className=\"text-end\">\n          <strong>\n            {numberWithCommas(totalCategoryFPastDueAmount)}\n            <br/>\n            {numberWithCommas(totalCategoryFParAmount)}\n            <br/>\n            {categoryFCounter}\n          </strong>\n        </td>\n        <td className=\"text-end\">\n          <strong>\n            {numberWithCommas(totalCategoryGPastDueAmount)}\n            <br/>\n            {numberWithCommas(totalCategoryGParAmount)}\n            <br/>\n            {categoryGCounter}\n          </strong>\n        </td>\n        <td className=\"text-end\">\n          <strong>\n            {numberWithCommas(totalCategoryDPastDueAmount)}\n            <br/>\n            {numberWithCommas(totalCategoryDParAmount)}\n            <br/>\n            {categoryDCounter}\n          </strong>\n        </td>\n      </tr>\n    );\n    return rows;\n  }\n\n  return  (\n    <div>\n       <h5>\n        Aging Of Receivables MFI\n      </h5>\n      <table className=\"table table-sm table-hover table-bordered\" style={{fontSize: \"0.8em\"}}>\n        <thead>\n          <tr>\n            <th className=\"text-center\">\n            </th>\n            <th>\n              Name\n            </th>\n            <th>\n              Product\n            </th>\n            <th>\n              Total\n            </th>\n            <th className=\"text-end\">\n              1-30\n            </th>\n            <th className=\"text-end\">\n              31-60\n            </th>\n            <th className=\"text-end\">\n              61-90\n            </th>\n            <th className=\"text-end\">\n              91-120\n            </th>\n            <th className=\"text-end\">\n              121-150\n            </th>\n            <th className=\"text-end\">\n              151-180\n            </th>\n            <th className=\"text-end\">\n              181 onwards\n            </th>\n          </tr>\n        </thead>\n        <tbody>\n          {renderDataRows()}\n        </tbody>\n      </table>\n    </div>\n  );\n}\n", "import axios from 'axios';\nimport { \n  BASE_URL\n} from 'env';\nimport { buildHeaders, buildFileUploadHeaders } from '../helpers/AppHelper';\n\nexport const fetchRepaymentRate = (id, args) => {\n  return axios.get(\n    `${BASE_URL}/api/repayment_rates/${id}`,\n    {\n      headers: buildHeaders()\n    }\n  )\n}\n", "{\"LESSOPEN\":\"| /usr/bin/lesspipe %s\",\"rvm_pretty_print_flag\":\"auto\",\"USER\":\"ubuntu\",\"SSH_CLIENT\":\"112.199.37.99 37680 22\",\"npm_package_dependencies_datatables_net_dt\":\"^1.12.1\",\"npm_package_dependencies_autoprefixer\":\"^10.4.14\",\"npm_config_version_commit_hooks\":\"true\",\"npm_config_user_agent\":\"yarn/1.22.19 npm/? node/v16.13.1 linux x64\",\"npm_package_dependencies_datatables_net\":\"^1.12.1\",\"npm_config_bin_links\":\"true\",\"XDG_SESSION_TYPE\":\"tty\",\"npm_node_execpath\":\"/home/ubuntu/.nvm/versions/node/v16.13.1/bin/node\",\"npm_package_dependencies__babel_core\":\"^7.17.9\",\"npm_config_init_version\":\"1.0.0\",\"SHLVL\":\"1\",\"npm_package_dependencies_pdfmake\":\"^0.2.4\",\"npm_package_dependencies_bootstrap_icons\":\"^1.8.1\",\"MOTD_SHOWN\":\"pam\",\"HOME\":\"/home/ubuntu\",\"OLDPWD\":\"/home/ubuntu\",\"npm_package_dependencies_select2\":\"^4.1.0-rc.0\",\"npm_package_dependencies_chart_js\":\"^3.7.0\",\"npm_package_dependencies__hotwired_turbo_rails\":\"^7.1.1\",\"NVM_BIN\":\"/home/ubuntu/.nvm/versions/node/v16.13.1/bin\",\"SSH_TTY\":\"/dev/pts/3\",\"NVM_INC\":\"/home/ubuntu/.nvm/versions/node/v16.13.1/include/node\",\"npm_package_dependencies_react_leaflet\":\"^4.0.2\",\"npm_package_dependencies_react_collapsible\":\"^2.8.4\",\"npm_config_init_license\":\"MIT\",\"YARN_WRAP_OUTPUT\":\"false\",\"npm_package_scripts_build_production\":\"node build.js\",\"npm_config_version_tag_prefix\":\"v\",\"npm_package_dependencies_leaflet\":\"^1.8.0\",\"DBUS_SESSION_BUS_ADDRESS\":\"unix:path=/run/user/1000/bus\",\"npm_package_dependencies_moment\":\"^2.29.1\",\"npm_package_description\":\"Microfinance and Microinsurance management system.\",\"npm_package_dependencies_mdb_ui_kit\":\"^5.0.0\",\"npm_package_dependencies_esbuild_envfile_plugin\":\"^1.0.5\",\"NVM_DIR\":\"/home/ubuntu/.nvm\",\"npm_package_readmeFilename\":\"README.md\",\"npm_package_dependencies_jwt_decode\":\"^3.1.2\",\"LOGNAME\":\"ubuntu\",\"npm_package_dependencies_react_datepicker\":\"^4.5.0\",\"npm_package_type\":\"module\",\"rvm_bin_path\":\"/home/ubuntu/.rvm/bin\",\"_\":\"/usr/local/bin/yarn\",\"npm_package_dependencies__rails_actioncable\":\"^7.0.4\",\"npm_package_private\":\"true\",\"RUBY_VERSION\":\"ruby-3.2.2\",\"XDG_SESSION_CLASS\":\"user\",\"IRBRC\":\"/home/ubuntu/.rvm/rubies/ruby-3.2.2/.irbrc\",\"npm_config_registry\":\"https://registry.yarnpkg.com\",\"TERM\":\"xterm-256color\",\"XDG_SESSION_ID\":\"35942\",\"npm_package_dependencies_mustache\":\"^4.2.0\",\"npm_package_dependencies__rails_webpacker\":\"^6.0.0-rc.6\",\"npm_package_scripts_start\":\"node build.js --watch --dev\",\"npm_config_ignore_scripts\":\"\",\"npm_package_dependencies_axios\":\"^0.27.2\",\"PATH\":\"/tmp/yarn--1790125607985-0.70245183053149:/home/ubuntu/koins_ceu/node_modules/.bin:/home/ubuntu/.config/yarn/link/node_modules/.bin:/home/ubuntu/.yarn/bin:/home/ubuntu/.nvm/versions/node/v16.13.1/libexec/lib/node_modules/npm/bin/node-gyp-bin:/home/ubuntu/.nvm/versions/node/v16.13.1/lib/node_modules/npm/bin/node-gyp-bin:/home/ubuntu/.nvm/versions/node/v16.13.1/bin/node_modules/npm/bin/node-gyp-bin:/home/ubuntu/.rvm/gems/ruby-3.2.2/bin:/home/ubuntu/.rvm/gems/ruby-3.2.2@global/bin:/home/ubuntu/.rvm/rubies/ruby-3.2.2/bin:/home/ubuntu/.rvm/bin:/home/ubuntu/.nvm/versions/node/v16.13.1/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin\",\"NODE\":\"/home/ubuntu/.nvm/versions/node/v16.13.1/bin/node\",\"npm_package_dependencies_postcss\":\"^8.4.27\",\"npm_package_dependencies_esbuild_sass_plugin\":\"^2.10.0\",\"npm_package_dependencies_esbuild\":\"^0.18.17\",\"npm_package_name\":\"app\",\"XDG_RUNTIME_DIR\":\"/run/user/1000\",\"npm_package_dependencies_victory\":\"^36.6.8\",\"MY_RUBY_HOME\":\"/home/ubuntu/.rvm/rubies/ruby-3.2.2\",\"npm_package_scripts_build_css\":\"./node_modules/.bin/sass ./app/assets/stylesheets/application.scss ./app/assets/builds/main.css --no-source-map --load-path=node_modules\",\"LANG\":\"en_US.UTF-8\",\"npm_package_dependencies_react_dom\":\"^18.2.0\",\"npm_package_dependencies_performance_now\":\"^2.1.0\",\"LS_COLORS\":\"rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.webp=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:\",\"npm_lifecycle_script\":\"node build.js --watch --dev\",\"npm_package_browserslist_0\":\"defaults\",\"npm_package_scripts_build_metafile\":\"./node_modules/.bin/esbuild app/javascript/packs/*.* --bundle --loader:.js=jsx --minify --metafile=./tmp/metafile.json --outdir=app/assets/builds\",\"npm_config_version_git_message\":\"v%s\",\"SHELL\":\"/bin/bash\",\"npm_lifecycle_event\":\"start\",\"npm_package_version\":\"0.1.0\",\"npm_package_dependencies_jquery\":\"^3.6.0\",\"rvm_prefix\":\"/home/ubuntu\",\"npm_config_argv\":\"{\\\"remain\\\":[],\\\"cooked\\\":[\\\"run\\\",\\\"start\\\"],\\\"original\\\":[\\\"run\\\",\\\"start\\\"]}\",\"npm_package_scripts_build\":\"cp config/settings/production.yml.dist config/settings/production.yml\",\"npm_package_dependencies_react_accessible_accordion\":\"^5.0.0\",\"GEM_HOME\":\"/home/ubuntu/.rvm/gems/ruby-3.2.2\",\"LESSCLOSE\":\"/usr/bin/lesspipe %s %s\",\"npm_package_dependencies_react_table\":\"^7.7.0\",\"npm_package_dependencies__hotwired_stimulus\":\"^3.0.1\",\"npm_config_version_git_tag\":\"true\",\"npm_config_version_git_sign\":\"\",\"rvm_version\":\"1.29.12-next (master)\",\"npm_package_dependencies_sass\":\"^1.53.0\",\"npm_package_dependencies_react_bootstrap\":\"^2.4.0\",\"npm_config_strict_ssl\":\"true\",\"npm_package_scripts_build_js\":\"./node_modules/.bin/esbuild app/javascript/packs/*.* --bundle --loader:.js=jsx --sourcemap --outdir=app/assets/builds\",\"npm_package_dependencies_select2_bootstrap_5_theme\":\"^1.2.0\",\"npm_package_dependencies_react_select\":\"^5.2.1\",\"npm_package_dependencies__rails_ujs\":\"^7.0.0\",\"PWD\":\"/home/ubuntu/koins_ceu\",\"GEM_PATH\":\"/home/ubuntu/.rvm/gems/ruby-3.2.2:/home/ubuntu/.rvm/gems/ruby-3.2.2@global\",\"npm_execpath\":\"/usr/local/lib/node_modules/yarn/bin/yarn.js\",\"npm_package_dependencies_bootstrap\":\"^5.2.3\",\"SSH_CONNECTION\":\"112.199.37.99 37680 10.0.12.194 22\",\"NVM_CD_FLAGS\":\"\",\"XDG_DATA_DIRS\":\"/usr/local/share:/usr/share:/var/lib/snapd/desktop\",\"npm_package_dependencies_react_toggle\":\"^4.1.2\",\"npm_package_dependencies_react_modal\":\"^3.14.4\",\"npm_package_dependencies__popperjs_core\":\"^2.11.2\",\"npm_package_dependencies_prop_types\":\"^15.8.1\",\"npm_config_save_prefix\":\"^\",\"npm_config_ignore_optional\":\"\",\"rvm_ruby_string\":\"ruby-3.2.2\",\"rvm_path\":\"/home/ubuntu/.rvm\",\"npm_package_dependencies_react_image_file_resizer\":\"^0.4.7\",\"INIT_CWD\":\"/home/ubuntu/koins_ceu\",\"rvm_delete_flag\":\"0\",\"npm_package_dependencies_react\":\"^18.2.0\",\"KOINS_DATABASE_USERNAME\":\"kasaganaka\",\"KOINS_DATABASE_PASSWORD\":\"brandx2016\",\"KOINS_DATABASE_HOST\":\"localhost\",\"KOINS_DATABASE_NAME\":\"koins_2_ceu\",\"APP_HOST\":\"kcoop-support.com\",\"APP_PIPELINE\":\"production\",\"ROLLBAR_ACCESS_TOKEN\":\"eb8c2347f5374d1fa13d5e2ee5c0d9e6\",\"RACK_TIMEOUT_SERVICE_TIMEOUT\":\"1000000\",\"REDIS_URL\":\"redis://localhost:6379\",\"SECRET_KEY_BASE\":\"623a75da82bf94082936613d483f18d29a8be9965a14f74676690dccf03397a410734c4e72f932bcdcab9cc97a36588c44abbea223b5b9d62569983928ebf368\",\"AWS_ACCESS_KEY_ID\":\"AKIAZQHOQR2VCAVHUIVI\",\"AWS_SECRET_ACCESS_KEY_ID\":\"srp5pB05n7xeDXQ9d+kHXQhAyuk7yaX6UST6+mDK\",\"AWS_REGION\":\"ap-southeast-1\",\"AWS_BUCKET\":\"diams-bucket\",\"TZ\":\"Asia/Manila\",\"WEB_CONCURRENCY\":\"1\",\"BASE_URL\":\"https://kcoop-support.com\",\"BACKEND_API_URL\":\"https://kcoop-support.com\",\"INSURANCE_KOINS_URL\":\"http://139.162.47.128:8081\",\"MY_KOINS_URL\":\"http://103.3.61.162\",\"TOKEN_BEARER\":\"x-koins-token\",\"APP_USER\":\"x-koins-user\",\"KOINS_APP_AUTH_SECRET\":\"sercret\"}", "import axios from 'axios';\nimport { \n  BASE_URL,\n  TOKEN_BEARER,\n  APP_USER\n} from 'env';\nimport {buildHeaders} from '../helpers/AppHelper';\n\nexport const login = (args) => {\n  return axios.post(\n    `${BASE_URL}/api/login`,\n    {\n      username: args.username,\n      password: args.password\n    }\n  )\n}\n\nexport const createSession = (args) => {\n  // Store the token\n  localStorage.setItem(TOKEN_BEARER, args.token);\n  localStorage.setItem(APP_USER, JSON.stringify(args.user));\n}\n\nexport const destroySession = () => {\n  localStorage.removeItem(TOKEN_BEARER);\n  localStorage.removeItem(APP_USER);\n}\n\nexport const isLoggedIn = () => {\n  return getCurrentUser() != false;\n}\n\nexport const getToken = () => {\n  return localStorage.getItem(TOKEN_BEARER);\n}\n\nexport const getCurrentUser = () => {\n  const token = getToken();\n\n  if (token) {\n    const currentUser = JSON.stringify(localStorage.getItem(APP_USER));\n\n    return currentUser;\n  } else {\n    return false;\n  }\n}\n", "import { getToken, getCurrentUser } from '../services/AuthService';\n\nexport const initPages = (page, offset=5, numPages) => {\n  let _pages = [];\n\n  let startPage = page;\n\n  if (page - offset <= 0) {\n    startPage = 1;\n  } else {\n    startPage = page - offset;\n  }\n\n  let endPage = page + offset;\n\n  if (endPage > numPages) {\n    endPage = numPages;\n  }\n\n  for (var i = startPage; i <= endPage; i++) {\n    _pages.push(i);\n  }\n\n  return _pages;\n}\n\nexport const buildHeaders = (args) => {\n  return {\n    'Content-Type': 'application/json',\n    'Authorization': `Bearer ${getToken()}`\n  }\n}\n\nexport const buildFileUploadHeaders = (args) => {\n  return {\n    'Content-Type': 'multipart/form-data',\n    'Authorization': `Bearer ${getToken()}`\n  }\n}\n\nexport const hasFormError = (errors, key) => {\n  return errors[key] && errors[key].length > 0\n}\n", "import React, { useState, useEffect } from 'react';\nimport \"react-toggle/style.css\";\n\nimport SkCubeLoading from '../../SkCubeLoading';\nimport Filter from './Filter';\nimport MasterListView from './MasterListView';\nimport ManualAgingView from './ManualAgingView';\nimport AgingOfReceivablesView from './AgingOfReceivablesView';\nimport { fetchManualAging } from '../../../services/ManualAgingService';\n\nexport default ShowComponent = (props) => {\n  const [isLoading, setIsLoading]                       = useState(true);\n  const [data, setData]                                 = useState(false);\n  const [centers, setCenters]                           = useState([]);\n  const [officers, setOfficers]                         = useState([]);\n  const [loanProducts, setLoanProducts]                 = useState([]);\n  const [currentOfficerId, setCurrentOfficerId]         = useState(\"\");\n  const [currentCenterId, setCurrentCenterId]           = useState(\"\");\n  const [currentLoanProductId, setCurrentLoanProductId] = useState(\"\");\n  const [currentView, setCurrentView]                   = useState(\"RR\");\n\n  let {\n    id\n  } = props;\n\n  const filterData = () => {\n    let fData = {...data};\n\n    if (currentCenterId) {\n      fData.records = fData.records.filter((o) => {\n        return o.center.id == currentCenterId;\n      });\n    }\n\n    if (currentOfficerId) {\n      fData.records = fData.records.filter((o) => {\n        return o.officer.id == currentOfficerId;\n      });\n    }\n\n    if (currentLoanProductId) {\n      fData.records = fData.records.filter((o) => {\n        return o.loan_product.id == currentLoanProductId;\n      });\n    }\n\n    return fData;\n  }\n\n  const fetch = (options) => {\n    var data  = {\n      center_id: currentCenterId,\n      loan_product_id: currentLoanProductId,\n      officer_id: currentOfficerId\n    }\n\n    console.log(\"fetch (data):\");\n    console.log(data);\n\n    fetchManualAging(id, {...data})\n      .then((payload) => {\n        console.log(payload);\n        let _data = payload.data.data;\n        setIsLoading(false);\n        setData(_data);\n        setCenters(_data.centers);\n        setLoanProducts(_data.loan_products);\n        setOfficers(_data.officers);\n      }).catch((payload) => {\n        console.log(payload);\n        alert(\"Something went wrong when fetching data store\");\n      })\n  }\n\n  useEffect(() => {\n    fetch();\n  }, []);\n\n  const handleCenterChanged = (event) => {\n    setCurrentCenterId(event.target.value);\n  }\n\n  const handleOfficerChanged = (event) => {\n    setCurrentOfficerId(event.target.value);\n  }\n\n  const handleLoanProductChanged = (event) => {\n    setCurrentLoanProductId(event.target.value);\n  }\n\n  const handleViewToggled = (viewName) => {\n    setCurrentView(viewName);\n  }\n\n  if (isLoading) {\n    return (\n      <SkCubeLoading/>\n    );\n  } else if (currentView == \"RR\") {\n    return  (\n      <div>\n        <Filter\n          currentView={currentView} \n          handleViewToggled={handleViewToggled}\n          centers={centers}\n          officers={officers}\n          loanProducts={loanProducts}\n          currentCenterId={currentCenterId}\n          currentLoanProductId={currentLoanProductId}\n          handleCenterChanged={handleCenterChanged}\n          handleLoanProductChanged={handleLoanProductChanged}\n          handleOfficerChanged={handleOfficerChanged}\n        />\n        <hr/>\n        <ManualAgingView\n          data={filterData()}\n        />\n      </div>\n    );\n  } else if (currentView == \"AOR\") {\n    return  (\n      <div>\n        <Filter\n          currentView={currentView} \n          handleViewToggled={handleViewToggled}\n          centers={centers}\n          officers={officers}\n          loanProducts={loanProducts}\n          currentCenterId={currentCenterId}\n          currentLoanProductId={currentLoanProductId}\n          handleCenterChanged={handleCenterChanged}\n          handleLoanProductChanged={handleLoanProductChanged}\n          handleOfficerChanged={handleOfficerChanged}\n        />\n        <hr/>\n        <AgingOfReceivablesView\n          data={filterData()}\n        />\n      </div>\n    );\n  } else if (currentView == \"ML\") {\n    return  (\n      <div>\n        <Filter\n          currentView={currentView} \n          handleViewToggled={handleViewToggled}\n          centers={centers}\n          officers={officers}\n          loanProducts={loanProducts}\n          currentCenterId={currentCenterId}\n          currentLoanProductId={currentLoanProductId}\n          handleCenterChanged={handleCenterChanged}\n          handleLoanProductChanged={handleLoanProductChanged}\n          handleOfficerChanged={handleOfficerChanged}\n        />\n        <hr/>\n        <MasterListView\n          data={filterData()}\n        />\n      </div>\n    );\n  } else {\n    return  (\n      <div>\n        <p>\n          Invalid view name: {currentView}\n        </p>\n      </div>\n    );\n  }\n}\n", "import React from 'react';\nimport \"react-toggle/style.css\";\nimport ToggleSwitch from '../../utils/ToggleSwitch';\n\nexport default Filter = (props) => {\n  let {\n    loanProducts,\n    centers,\n    officers,\n    currentView,\n    currentCenterId,\n    currentOfficerId,\n    currentLoanProductId,\n    handleViewToggled,\n    handleCenterChanged,\n    handleOfficerChanged,\n    handleLoanProductChanged\n  } = props;\n\n  const renderLoanProductOptions = () => {\n    let options = [];\n\n    options.push(\n      <option value=\"\" key={\"loan-product-select\"}>\n        -- SELECT --\n      </option>\n    );\n\n    loanProducts.forEach((o) => {\n      options.push(\n        <option key={`loan-product-${o.id}`} value={o.id}>\n          {o.name}\n        </option>\n      );\n    })\n\n    return options;\n  }\n\n  const renderCenterOptions = () => {\n    let options = [];\n\n    options.push(\n      <option value=\"\" key={\"center-select\"}>\n        -- SELECT --\n      </option>\n    );\n\n    centers.forEach((o) => {\n      options.push(\n        <option value={o.id} key={`center-${o.id}`}>\n          {o.name}\n        </option>\n      );\n    })\n\n    return options;\n  }\n\n  const renderOfficerOptions = () => {\n    var options = [];\n\n    options.push(\n      <option value=\"\" key={\"officer-select\"}>\n        -- SELECT --\n      </option>\n    );\n\n    officers.forEach((o) => {\n      options.push(\n        <option value={o.id} key={`officer-${o.id}`}>\n          {o.last_name}, {o.first_name}\n        </option>\n      );\n    })\n\n    return options;\n  }\n\n  return  (\n    <div className=\"row\">\n      <div className=\"col-md-3 col-xs-12\">\n        <div className=\"form-group\">\n          <div className=\"row\">\n            <div className=\"col\">\n              <ToggleSwitch\n                name={`current-view-rr`}\n                key={`current-view-rr`}\n                checked={currentView == \"RR\"}\n                defaultChecked={currentView == \"RR\"}\n                onChange={() => {\n                  handleViewToggled(\"RR\")\n                }}\n              />\n              <br/>\n              <label>\n                RR\n              </label>\n            </div>\n            <div className=\"col\">\n              <ToggleSwitch\n                name={`current-view-aor`}\n                key={`current-view-aor`}\n                checked={currentView == \"AOR\"}\n                defaultChecked={currentView == \"AOR\"}\n                onChange={() => {\n                  handleViewToggled(\"AOR\")\n                }}\n              />\n              <br/>\n              <label>\n                AoR\n              </label>\n            </div>\n            <div className=\"col\">\n              <ToggleSwitch\n                name={`current-view-ml`}\n                key={`current-view-ml`}\n                checked={currentView == \"ML\"}\n                defaultChecked={currentView == \"ML\"}\n                onChange={() => {\n                  handleViewToggled(\"ML\")\n                }}\n              />\n              <br/>\n              <label>\n                ML\n              </label>\n            </div>\n          </div>\n        </div>\n      </div>\n      <div className=\"col-md-3 col-xs-12\">\n        <div className=\"form-group\">\n          <label>\n            Center\n          </label>\n          <select\n            className=\"form-control\"\n            value={currentCenterId}\n            onChange={handleCenterChanged}\n          >\n            {renderCenterOptions()}\n          </select>\n        </div>\n      </div>\n      <div className=\"col-md-3 col-xs-12\">\n        <div className=\"form-group\">\n          <label>\n            Loan Products\n          </label>\n          <select\n            className=\"form-control\"\n            value={currentLoanProductId}\n            onChange={handleLoanProductChanged}\n          >\n            {renderLoanProductOptions()}\n          </select>\n        </div>\n      </div>\n      <div className=\"col-md-3 col-xs-12\">\n        <div className=\"form-group\">\n          <label>\n            Officers\n          </label>\n          <select\n            className=\"form-control\"\n            value={currentOfficerId}\n            onChange={handleOfficerChanged}\n          >\n            {renderOfficerOptions()}\n          </select>\n        </div>\n      </div>\n    </div>\n  );\n}\n", "import React from 'react';\nimport {numberWithCommas} from '../../utils/helpers';\n\nexport default MasterListView = (props) => {\n  let {\n    data\n  } = props;\n\n  const renderDataRows = () => {\n    var loans = data.records;\n    var rows  = [];\n\n    var totalLoanAmount       = 0.00;\n    var totalPrincipalBalance = 0.00;\n    var totalInterestBalance  = 0.00;\n    var totalTotalBalance     = 0.00;\n\n    for(var i = 0; i < loans.length; i++) {\n      var member      = loans[i].member;\n      var center      = loans[i].center;\n      var loanProduct = loans[i].loan_product;\n\n      rows.push(\n        <tr key={\"ml-\" + loans[i].id}>\n          <td className=\"text-center\">\n            {i + 1} \n          </td>\n          <td>\n            <a href={\"/loans/\" + loans[i].id} target=\"_blank\">\n              <strong>\n                {member.last_name}, {member.first_name} {member.middle_name}\n              </strong>\n            </a>\n          </td>\n          <td className=\"text-muted\">\n            <small>\n              {center.name}\n            </small>\n          </td>\n          <td>\n            {loanProduct.name}\n          </td>\n          <td>\n            {loans[i].date_released} \n          </td>\n          <td>\n            {loans[i].maturity_date} \n          </td>\n          <td className=\"text-end\">\n            {numberWithCommas(loans[i].principal)}\n          </td>\n          <td className=\"text-end\">\n            {numberWithCommas(loans[i].overall_principal_balance)}\n          </td>\n          <td className=\"text-end\">\n            {numberWithCommas(loans[i].overall_interest_balance)}\n          </td>\n          <td className=\"text-end\">\n            {numberWithCommas(loans[i].overall_balance)}\n          </td>\n        </tr>\n      );\n\n      totalLoanAmount       += parseFloat(loans[i].principal);\n      totalPrincipalBalance += parseFloat(loans[i].overall_principal_balance);\n      totalInterestBalance  += parseFloat(loans[i].overall_interest_balance);\n      totalTotalBalance     += parseFloat(loans[i].overall_balance);\n    }\n\n    rows.push(\n      <tr key={\"ml-grand-total\"}>\n        <th></th>\n        <th colSpan=\"5\">\n          Total ({loans.length})\n        </th>\n        <th className=\"text-end\">\n          {numberWithCommas(totalLoanAmount)}\n        </th>\n        <th className=\"text-end\">\n          {numberWithCommas(totalPrincipalBalance)}\n        </th>\n        <th className=\"text-end\">\n          {numberWithCommas(totalInterestBalance)}\n        </th>\n        <th className=\"text-end\">\n          {numberWithCommas(totalTotalBalance)}\n        </th>\n      </tr>\n    );\n\n    return rows;\n  }\n\n  return  (\n    <div>\n      <h5>\n        Master List of Loans\n      </h5>\n\n      <table className=\"table table-bordered table-hover table-sm\" style={{fontSize: \"0.8em\"}}>\n        <thead>\n          <tr>\n            <th>\n            </th>\n            <th style={{width: \"20%\"}}>\n              Name\n            </th>\n            <th>\n              Center\n            </th>\n            <th>\n              Loan Product\n            </th>\n            <th>\n              Date Released\n            </th>\n            <th>\n              Maturity Date\n            </th>\n            <th className=\"text-end\">\n              Loan Amount\n            </th>\n            <th className=\"text-end\">\n              Principal Balance\n            </th>\n            <th className=\"text-end\">\n              Interest Balance\n            </th>\n            <th className=\"text-end\">\n              Total Balance\n            </th>\n          </tr>\n        </thead>\n        <tbody>\n          {renderDataRows()}\n        </tbody>\n      </table>\n    </div>\n  );\n}\n", "import React from 'react';\nimport {numberWithCommas, numberAsPercent} from '../../utils/helpers';\n\nexport default ManualAgingView = (props) => {\n  let {\n    data\n  } = props;\n\n  let loans       = data.records;\n  let numRecords  = loans.length;\n  let numPastDue  = 0;\n  let numAdvanced = 0;\n\n  for(var i = 0; i < loans.length; i++) {\n    if(loans[i].total_paid > loans[i].total_paid_due) {\n      numAdvanced++;\n    } else if(loans[i].principal_balance > 0) {\n      numPastDue++;\n    }\n  }\n\n  const renderDataRows = () => {\n    var rows  = [];\n\n    var totalPrincipal                = 0.00;\n    var totalPrincipalPaid            = 0.00;\n    var totalOverallPrincipalBalance  = 0.00;\n    var totalInterest                 = 0.00;\n    var totalInterestPaid             = 0.00;\n    var totalOverallInterestBalance   = 0.00;\n    var totalTotalPaid                = 0.00;\n    var totalPrincipalDue             = 0.00;\n    var totalTotalDue                 = 0.00;\n    var totalTotalBalance             = 0.00;\n    var totalPrincipalBalance         = 0.00;\n    var totalOverallBalance           = 0.00;\n    var totalRR                       = 0;\n    var totalPrincipalRR              = 0;\n\n    var totalPrincipalPaidDue = 0.00;\n    var totalInterestPaidDue  = 0.00;\n    var totalPaidDue          = 0.00;\n\n    for(var i = 0; i < loans.length; i++) {\n      var member      = loans[i].member;\n      var center      = loans[i].center;\n      var loanProduct = loans[i].loan_product;\n\n      var backgroundColor = \"#fff\";\n      \n      if(loans[i].total_paid > loans[i].total_paid_due) {\n        backgroundColor = \"#e9ecfd\";\n      } else if(loans[i].principal_balance > 0) {\n        backgroundColor = \"#ffe1e1\";\n      }\n\n      rows.push(\n        <tr key={\"rr-\" + loans[i].id} style={{ backgroundColor: backgroundColor }}>\n          <td className=\"text-center\">\n            {i + 1}\n          </td>\n          <td>\n            <a href={\"/loans/\" + loans[i].id} target=\"_blank\">\n              <strong>\n                {member.last_name}, {member.first_name} {member.middle_name}\n                <br/>\n                <small className=\"text-muted\">\n                  {center.name}\n                </small>\n              </strong>\n            </a>\n          </td>\n          <td>\n            {loanProduct.name}\n          </td>\n          <td className=\"text-end\">\n            {numberWithCommas(loans[i].principal)}\n          </td>\n          <td className=\"text-end\">\n            {numberWithCommas(loans[i].principal_paid)}\n          </td>\n          <td className=\"text-end\">\n            {numberWithCommas(loans[i].overall_principal_balance)}\n          </td>\n          <td className=\"text-end\">\n            {numberWithCommas(loans[i].interest)}\n          </td>\n          <td className=\"text-end\">\n            {numberWithCommas(loans[i].interest_paid)}\n          </td>\n          <td className=\"text-end\">\n            {numberWithCommas(loans[i].overall_interest_balance)}\n          </td>\n          <td className=\"text-end\">\n            {numberWithCommas(loans[i].total_paid)}\n          </td>\n          <td className=\"text-end\">\n            {numberWithCommas(loans[i].overall_balance)}\n          </td>\n          <td className=\"text-end\">\n            {numberWithCommas(loans[i].principal_paid_due)}\n          </td>\n          <td className=\"text-end\">\n            {numberWithCommas(loans[i].principal_balance)}\n          </td>\n          <td className=\"text-end\">\n            {numberWithCommas(loans[i].principal_due)}\n          </td>\n          <td className=\"text-center\">\n            {numberAsPercent(loans[i].principal_rr)}\n          </td>\n        </tr>\n      );\n\n      totalPrincipal                += parseFloat(loans[i].principal);\n      totalPrincipalPaid            += parseFloat(loans[i].principal_paid);\n      totalPrincipalPaidDue         += parseFloat(loans[i].principal_paid_due);\n      totalOverallPrincipalBalance  += parseFloat(loans[i].overall_principal_balance);\n      totalInterest                 += parseFloat(loans[i].interest);\n      totalInterestPaid             += parseFloat(loans[i].interest_paid);\n      totalOverallInterestBalance   += parseFloat(loans[i].overall_interest_balance);\n      totalTotalPaid                += parseFloat(loans[i].total_paid);\n      totalPrincipalDue             += parseFloat(loans[i].principal_due);\n      totalTotalDue                 += parseFloat(loans[i].total_due);\n      totalTotalBalance             += parseFloat(loans[i].total_balance);\n      totalPrincipalBalance         += parseFloat(loans[i].principal_balance);\n      totalPaidDue                  += parseFloat(loans[i].total_paid_due);\n    }\n\n    totalOverallBalance = totalOverallPrincipalBalance + totalOverallInterestBalance;\n    //totalRR = (totalTotalPaid / totalTotalDue);\n    totalRR = (totalPaidDue / totalTotalDue);\n\n    //totalRR = (totalPaidDue - totalTotalBalance) / totalPaidDue;\n    //totalPrincipalRR  = (totalPrincipalPaidDue - totalPrincipalBalance) / totalPrincipalPaidDue;\n    totalPrincipalRR  = (totalPrincipalPaidDue / totalPrincipalDue);\n\n    if(totalPrincipalRR > 1)  {\n      totalPrincipalRR = 1;\n    }\n\n    console.log(\"totalTotalPaid: \" + totalTotalPaid);\n    console.log(\"totalTotalDue: \" + totalTotalDue);\n    console.log(\"totalPaidDue: \" + totalPaidDue);\n    console.log(\"totalPrincipalPaidDue: \" + totalPrincipalPaidDue);\n    console.log(\"totalPrincipalBalance: \" + totalPrincipalBalance);\n    console.log(\"totalRR: \" + totalRR);\n\n    var backgroundColor = \"#fff\";\n\n    rows.push(\n      <tr key=\"rr-grand-total\">\n        <th className=\"text-center\">\n        </th>\n        <th colSpan=\"2\">\n          <strong>\n            Total ({loans.length})\n          </strong>\n        </th>\n        <th className=\"text-end\">\n          {numberWithCommas(totalPrincipal)}\n        </th>\n        <th className=\"text-end\">\n          {numberWithCommas(totalPrincipalPaid)}\n        </th>\n        <th className=\"text-end\">\n          {numberWithCommas(totalOverallPrincipalBalance)}\n        </th>\n        <th className=\"text-end\">\n          {numberWithCommas(totalInterest)}\n        </th>\n        <th className=\"text-end\">\n          {numberWithCommas(totalInterestPaid)}\n        </th>\n        <th className=\"text-end\">\n          {numberWithCommas(totalOverallInterestBalance)}\n        </th>\n        <th className=\"text-end\">\n          {numberWithCommas(totalTotalPaid)}\n        </th>\n        <th className=\"text-end\">\n          {numberWithCommas(totalOverallBalance)}\n        </th>\n        <th className=\"text-end\">\n          {numberWithCommas(totalPrincipalPaidDue)}\n        </th>\n        <th className=\"text-end\">\n          {numberWithCommas(totalPrincipalBalance)}\n        </th>\n        <th className=\"text-end\">\n          {numberWithCommas(totalPrincipalDue)}\n        </th>\n        <th className=\"text-center\">\n          {numberAsPercent(totalPrincipalRR)}\n        </th>\n        \n      </tr>\n    );\n\n    return rows;\n  }\n\n  return  (\n    <div>\n      <div className=\"row\">\n        <div className=\"col-md-6\">\n          <h5>\n            Repayment Rates\n          </h5>\n        </div>\n        <div className=\"col-md-6\">\n          <div className=\"text-end\">\n            <label style={{marginRight: \"12px\"}}>\n              Total Records: \n              <span className=\"badge bg-secondary\">\n                {numRecords}\n              </span>\n            </label>\n            <label style={{marginRight: \"12px\"}}>\n              Number of Past Due:\n              <span className=\"badge bg-danger\">\n                {numPastDue}\n              </span>\n            </label>\n            <label>\n              Number of Advanced:\n              <span className=\"badge bg-info\">\n                {numAdvanced}\n              </span>\n            </label>\n          </div>\n        </div>\n      </div>\n\n      <table className=\"table table-bordered table-hover table-sm\" style={{fontSize: \"0.75em\"}}>\n        <thead>\n          <tr>\n            <th>\n            </th>\n            <th style={{width: \"20%\"}}>\n              Name\n            </th>\n            <th>\n              Product\n            </th>\n            <th className=\"text-end\">\n              Principal\n            </th>\n            <th className=\"text-end\">\n              P. Paid\n            </th>\n            <th className=\"text-end\">\n              P. Bal\n            </th>\n            <th className=\"text-end\">\n              Interest\n            </th>\n            <th className=\"text-end\">\n              I. Paid\n            </th>\n            <th className=\"text-end\">\n              I. Bal.\n            </th>\n            <th className=\"text-end\">\n              Total Paid\n            </th>\n            <th className=\"text-end\">\n              Total Bal.\n            </th>\n            <th className=\"text-end\">\n              Paid Due\n            </th>\n            <th className=\"text-end\">\n              Past Due\n            </th>\n            <th className=\"text-end\">\n              Cum. Due\n            </th>\n            <th className=\"text-center\">\n              RR\n            </th>\n          </tr>\n        </thead>\n        <tbody>\n          {renderDataRows()}\n        </tbody>\n      </table>\n    </div>\n  );\n}\n", "import React from 'react';\nimport {numberWithCommas} from '../../utils/helpers';\n\nexport default AgingOfReceivablesView = (props) => {\n  let {\n    data\n  } = props;\n\n  const renderDataRows = () => {\n    var loans   = props.data.records;\n    var rows    = [];\n    var counter = 0;\n\n    var totalCategoryAPastDueAmount = 0.00;\n    var totalCategoryAParAmount     = 0.00;\n\n    var totalCategoryBPastDueAmount = 0.00;\n    var totalCategoryBParAmount     = 0.00;\n\n    var totalCategoryCPastDueAmount = 0.00;\n    var totalCategoryCParAmount     = 0.00;\n\n    var categoryACounter  = 0;\n    var categoryBCounter  = 0;\n    var categoryCCounter  = 0;\n\n    for(var i = 0; i < loans.length; i++) {\n      var member      = loans[i].member;\n      var center      = loans[i].center;\n      var loanProduct = loans[i].loan_product;\n\n      var dateReleased  = loans[i].date_released;\n\n      var categoryAPastDueAmount  = 0.00;\n      var categoryAParAmount      = 0.00;\n\n      var categoryBPastDueAmount  = 0.00;\n      var categoryBParAmount      = 0.00;\n\n      var categoryCPastDueAmount  = 0.00;\n      var categoryCParAmount      = 0.00;\n\n      var numDaysPar  = parseInt(loans[i].num_days_par);\n      var par         = loans[i].par;\n\n      //if(numDaysPar > 0) {\n      if(par > 0) {\n        counter++;\n\n        if(numDaysPar >= 1 && numDaysPar <= 30) {\n          categoryAPastDueAmount  = parseFloat(loans[i].principal_balance);\n          categoryAParAmount      = parseFloat(loans[i].overall_principal_balance);\n\n          totalCategoryAPastDueAmount += categoryAPastDueAmount;\n          totalCategoryAParAmount     += categoryAParAmount;\n\n          categoryACounter++;\n        } else if(numDaysPar >= 31 && numDaysPar <= 365) {\n          categoryBPastDueAmount  = parseFloat(loans[i].principal_balance);\n          categoryBParAmount      = parseFloat(loans[i].overall_principal_balance);\n\n          totalCategoryBPastDueAmount += categoryBPastDueAmount;\n          totalCategoryBParAmount     += categoryBParAmount;\n\n          categoryBCounter++;\n        } else if(numDaysPar >= 365) {\n          categoryCPastDueAmount  = parseFloat(loans[i].principal_balance);\n          categoryCParAmount      = parseFloat(loans[i].overall_principal_balance);\n\n          totalCategoryCPastDueAmount += categoryCPastDueAmount;\n          totalCategoryCParAmount     += categoryCParAmount;\n\n          categoryCCounter++;\n        }\n\n        rows.push(\n          <tr key={\"aor-\" + loans[i].id}>\n            <td className=\"text-center\">\n              {counter}\n            </td>\n            <td>\n              <a href={\"/loans/\" + loans[i].id} target=\"_blank\">\n                <strong>\n                  {member.last_name}, {member.first_name} {member.middle_name}\n                  <br/>\n                  <small className=\"text-muted\">\n                    PN: {loans[i].pn_number} Center: {center.name}\n                  </small>\n                </strong>\n              </a>\n            </td>\n            <td>\n              {loanProduct.name}\n            </td>\n            <td className=\"\">\n              {dateReleased}\n            </td>\n            <td className=\"text-end\">\n              {numberWithCommas(categoryAPastDueAmount)}\n              <br/>\n              {numberWithCommas(categoryAParAmount)}\n            </td>\n            <td className=\"text-end\">\n              {numberWithCommas(categoryBPastDueAmount)}\n              <br/>\n              {numberWithCommas(categoryBParAmount)}\n            </td>\n            <td className=\"text-end\">\n              {numberWithCommas(categoryCPastDueAmount)}\n              <br/>\n              {numberWithCommas(categoryCParAmount)}\n            </td>\n          </tr>\n        );\n      }\n    }\n\n    // TOTAL\n    var totalPastDueAmount  = totalCategoryAPastDueAmount + totalCategoryBPastDueAmount + totalCategoryCPastDueAmount;\n    var totalParAmount      = totalCategoryAParAmount + totalCategoryBParAmount + totalCategoryCParAmount;\n\n    rows.push(\n      <tr key={\"aor-total\"}>\n        <td className=\"text-center\">\n        </td>\n        <td colSpan=\"2\">\n          <strong>\n            Grand Total\n          </strong>\n        </td>\n        <td className=\"text-end\">\n          <strong>\n            {numberWithCommas(totalPastDueAmount)}\n            <br/>\n            {numberWithCommas(totalParAmount)}\n            <br/>\n            {counter}\n          </strong>\n        </td>\n        <td className=\"text-end\">\n          <strong>\n            {numberWithCommas(totalCategoryAPastDueAmount)}\n            <br/>\n            {numberWithCommas(totalCategoryAParAmount)}\n            <br/>\n            {categoryACounter}\n          </strong>\n        </td>\n        <td className=\"text-end\">\n          <strong>\n            {numberWithCommas(totalCategoryBPastDueAmount)}\n            <br/>\n            {numberWithCommas(totalCategoryBParAmount)}\n            <br/>\n            {categoryBCounter}\n          </strong>\n        </td>\n        <td className=\"text-end\">\n          <strong>\n            {numberWithCommas(totalCategoryCPastDueAmount)}\n            <br/>\n            {numberWithCommas(totalCategoryCParAmount)}\n            <br/>\n            {categoryCCounter}\n          </strong>\n        </td>\n      </tr>\n    );\n    return rows;\n  }\n\n  console.log(\"AoR Data:\");\n  console.log(data);\n\n  return  (\n    <div>\n      <table className=\"table table-sm table-hover table-bordered\" style={{fontSize: \"0.8em\"}}>\n        <thead>\n          <tr>\n            <th className=\"text-center\">\n            </th>\n            <th>\n              Name\n            </th>\n            <th>\n              Product\n            </th>\n            <th>\n              Total\n            </th>\n            <th className=\"text-end\">\n              1-30\n            </th>\n            <th className=\"text-end\">\n              31-365\n            </th>\n            <th className=\"text-end\">\n              365 onwards\n            </th>\n          </tr>\n        </thead>\n        <tbody>\n          {renderDataRows()}\n        </tbody>\n      </table>\n    </div>\n  );\n}\n", "import axios from 'axios';\nimport { \n  BASE_URL\n} from 'env';\nimport { buildHeaders, buildFileUploadHeaders } from '../helpers/AppHelper';\n\nexport const fetchManualAging = (id, args) => {\n  return axios.get(\n    `${BASE_URL}/api/manual_aging/${id}`,\n    {\n      headers: buildHeaders()\n    }\n  )\n}\n", "import React from 'react';\nimport $ from 'jquery';\nimport moment from 'moment';\nimport Select from 'react-select';\nimport Toggle from 'react-toggle';\nimport \"react-toggle/style.css\";\n\nimport SkCubeLoading from '../../SkCubeLoading';\nimport ErrorDisplay from '../../ErrorDisplay';\nimport {numberWithCommas} from '../../utils/helpers';\n\nexport default class ShowComponent extends React.Component {\n  constructor(props) {\n    super(props);\n\n    this.state  = {\n      isLoading: true,\n      data: false,\n      errors: false,\n      accountHeaders: [],\n      officers: [],\n      centers: [],\n      currentOfficerId: \"\",\n      currentCenterId: \"\",\n      xKoinsAppAuthSecret: props.xKoinsAppAuthSecret,\n      userId: props.userId\n    };\n  }\n\n  fetch(options) {\n    var context   = this;\n    var officerId = options.officerId || \"\";\n    var centerId  = options.centerId || \"\";\n\n    var data  = {\n      id: this.props.id,\n      officer_id: officerId,\n      center_id: centerId\n    }\n\n    console.log(\"fetch (data):\");\n    console.log(data);\n\n    this.setState({\n      currentOfficerId: officerId,\n      currentCenterId: centerId,\n      isLoading: true\n    });\n\n    $.ajax({\n      url: \"/api/v1/data_stores/personal_funds/fetch\",\n      data: data,\n      method: 'GET',\n      headers: {\n        'X-KOINS-APP-AUTH-SECRET': context.state.xKoinsAppAuthSecret,\n        'Access-Control-Allow-Methods': '*',\n        'Access-Control-Allow-Headers': '*',\n        'Access-Control-Allow-Origin': '*',\n        'Access-Control-Allow-Credentials': 'true'\n      },\n      success: function(response) {\n        console.log(response);\n\n        context.setState({\n          isLoading: false,\n          data: response\n        });\n      },\n      error: function(response) {\n        console.log(response);\n        alert(\"Something went wrong when fetching data store\");\n      }\n    });\n  }\n\n\n  componentDidMount() {\n    var context = this;\n\n    $.ajax({\n      url: \"/api/v1/data_stores/personal_funds/fetch\",\n      data: {\n        id: context.props.id\n      },\n      method: 'GET',\n      headers: {\n        'X-KOINS-APP-AUTH-SECRET': context.state.xKoinsAppAuthSecret,\n        'Access-Control-Allow-Methods': '*',\n        'Access-Control-Allow-Headers': '*',\n        'Access-Control-Allow-Origin': '*',\n        'Access-Control-Allow-Credentials': 'true'\n      },\n      success: function(response) {\n        console.log(response);\n\n        // Setup account headers, officers and centers\n        var accountHeaders    = [];\n        var officers          = [];\n        var centers           = [];\n\n        if(response.data.records.length > 0) {\n          for(var i = 0; i < response.data.records[0].accounts.length; i++) {\n            accountHeaders.push(\n              response.data.records[0].accounts[i].account_subtype\n            );\n          }\n          \n          for(var i = 0; i < response.data.officers.length; i++) {\n            officers.push(\n              response.data.officers[i]\n            );\n          }\n\n          for(var i = 0; i < response.data.centers.length; i++) {\n            centers.push(\n              response.data.centers[i]\n            );\n          }\n        }\n\n        context.setState({\n          isLoading: false,\n          accountHeaders: accountHeaders,\n          data: response,\n          officers: officers,\n          centers: centers\n        });\n      },\n      error: function(response) {\n        console.log(response);\n        alert(\"Something went wrong when fetching data store\");\n      }\n    });\n  }\n\n  handleDownloadExcel() {\n    var context   = this;\n    var officerId = context.state.currentOfficerId || \"\";\n    var centerId  = context.state.currentCenterId || \"\";\n\n    var data  = {\n      id: this.props.id,\n      officer_id: officerId,\n      center_id: centerId,\n      user_id: context.state.userId\n    }\n\n    $.ajax({\n      url: \"/api/v1/data_stores/personal_funds/download_excel\",\n      data: data,\n      headers: {\n        'X-KOINS-APP-AUTH-SECRET': context.state.xKoinsAppAuthSecret,\n        'Access-Control-Allow-Methods': '*',\n        'Access-Control-Allow-Headers': '*',\n        'Access-Control-Allow-Origin': '*',\n        'Access-Control-Allow-Credentials': 'true'\n      },\n      method: 'GET',\n      success: function(response) {\n        console.log(response);\n\n        var filename = response.filename;\n\n        window.location.href = \"/download_file?filename=\" + filename;\n      },\n      error: function(response) {\n        console.log(response);\n        alert(\"Something went wrong when fetching data store\");\n      }\n    });\n  }\n\n  renderErrorDisplay() {\n    if(this.state.errors) {\n      return  (\n        <ErrorDisplay\n          errors={this.state.errors}\n        />\n      );\n    }\n  }\n\n  renderAccountHeaders() {\n    var headers = [];\n\n    // Member name\n    headers.push(\n      <th key=\"member-header\">\n        Member\n      </th>\n    );\n\n    // Officer\n    headers.push(\n      <th key=\"officer-header\">\n        Officer\n      </th>\n    );\n\n    // Center\n    headers.push(\n      <th key=\"center-header\">\n        Center\n      </th>\n    );\n\n    console.log(this.state.accountHeaders);\n    for(var i = 0; i < this.state.accountHeaders.length; i++) {\n      headers.push(\n        <th className=\"text-end\" key={\"account-header-\" + i}>\n          {this.state.accountHeaders[i]}\n        </th>\n      );\n    }\n\n    return headers;\n  }\n\n  renderAccountValues(index, accounts) {\n    var columns = [];\n\n    for(var i = 0; i < accounts.length; i++) {\n      if(accounts[i].account_type == \"SAVINGS\" && accounts[i].id) {\n        columns.push(\n          <td className=\"text-end\">\n            <a href={\"/savings_accounts/\" + accounts[i].id} target=\"_blank\">\n              {numberWithCommas(accounts[i].balance)}\n            </a>\n          </td>\n        );\n      } else {\n        columns.push(\n          <td className=\"text-end\">\n            {numberWithCommas(accounts[i].balance)}\n          </td>\n        );\n      }\n    }\n\n    return columns;\n  }\n\n  renderDataRows() {\n    var rows  = [];\n    var records = this.state.data.data.records;\n\n    for(var i = 0; i < records.length; i++) {\n      rows.push(\n        <tr key={\"record-item-\" + i}>\n          <td>\n            {records[i].member.last_name + \", \" + records[i].member.first_name + \" \" + records[i].member.middle_name}\n          </td>\n          <td>\n            {records[i].officer.last_name + \", \" + records[i].officer.first_name}\n          </td>\n          <td className=\"text-muted\">\n            {records[i].center.name}\n          </td>\n          {this.renderAccountValues(i, records[i].accounts)}\n        </tr>\n      );\n    }\n\n    return rows;\n  }\n\n  renderDataTotals() {\n    var columns = [];\n    var records = this.state.data.data.records;\n\n    columns.push(\n      <th colSpan=\"3\">\n        TOTAL: ({records.length})\n      </th>\n    );\n\n    var totals  = [];\n\n    for(var i = 0; i < this.state.accountHeaders.length; i++) {\n      totals.push(0.00);\n    }\n\n    for(var i = 0; i < records.length; i++) {\n      for(var j = 0; j < records[i].accounts.length; j++) {\n        totals[j] += parseFloat(records[i].accounts[j].balance);\n      }\n    }\n\n    for(var i = 0; i < totals.length; i++) {\n      columns.push(\n        <th className=\"text-end\">\n          {numberWithCommas(totals[i])}\n        </th>\n      );\n    }\n\n    return columns;\n  }\n\n  handleOfficerChanged(event) {\n    this.fetch({\n      officerId: event.target.value\n    });\n  }\n\n  handleCenterChanged(event) {\n    this.fetch({\n      centerId: event.target.value\n    });\n  }\n\n  renderFilter() {\n    var officerOptions  = [\n      <option key={\"officer-select\"} value=\"\">\n        -- SELECT --\n      </option>\n    ];\n    var centerOptions   = [\n      <option key={\"center-select\"} value=\"\">\n        -- SELECT --\n      </option>\n    ];\n\n    for(var i = 0; i < this.state.officers.length; i++) {\n      officerOptions.push(\n        <option key={\"officer-\" + i} value={this.state.officers[i].id}>\n          {this.state.officers[i].last_name + \", \" + this.state.officers[i].first_name}\n        </option>\n      );\n    }\n\n    for(var i = 0; i < this.state.centers.length; i++) {\n      centerOptions.push(\n        <option key={\"center-\" + i} value={this.state.centers[i].id}>\n          {this.state.centers[i].name}\n        </option>\n      );\n    }\n\n    return  (\n      <div className=\"row\">\n        <div className=\"col\">\n          <div className=\"form-group\">\n            <label>\n              Officer:\n            </label>\n            <select value={this.state.currentOfficerId} onChange={this.handleOfficerChanged.bind(this)} className=\"form-control\">\n              {officerOptions}\n            </select>\n          </div>\n        </div>\n        <div className=\"col\">\n          <div className=\"form-group\">\n            <label>\n              Center:\n            </label>\n            <select value={this.state.currentCenterId} onChange={this.handleCenterChanged.bind(this)} className=\"form-control\">\n              {centerOptions}\n            </select>\n          </div>\n        </div>\n        <div className=\"col\">\n          <div className=\"form-group\">\n          <label> \n            Action:\n          </label>\n          <br></br>\n            <button className='btn btn-primary btn-block' href='#' onClick={this.handleDownloadExcel.bind(this)}>Download Excel</button>\n          </div>\n        </div>\n      </div>\n    );\n    \n      \n    \n  }\n\n  renderDisplay() {\n    return  (\n      <div>\n        <table className=\"table table-sm table-bordered table-hover\" style={{fontSize: \"0.9em\"}}>\n          <thead>\n            <tr>\n              {this.renderAccountHeaders()}\n            </tr>\n          </thead>\n          <tbody>\n            {this.renderDataRows()}\n          </tbody>\n          <tfoot>\n            <tr>\n              {this.renderDataTotals()}\n            </tr>\n          </tfoot>\n        </table>\n      </div>\n    );\n  }\n\n  render() {\n    if(this.state.isLoading) {\n      return  (\n        <SkCubeLoading/>\n      );\n    } else {\n      return  (\n        <div>\n          {this.renderFilter()}\n          {this.renderDisplay()}\n        </div>\n      );\n    }\n  }\n}\n", "import React from 'react';\nimport $ from 'jquery';\nimport Select from 'react-select';\nimport Toggle from 'react-toggle';\nimport \"react-toggle/style.css\";\n\nimport SkCubeLoading from '../../SkCubeLoading';\nimport ErrorDisplay from '../../ErrorDisplay';\nimport {numberWithCommas} from '../../utils/helpers';\n\nexport default class ShowComponent extends React.Component {\n  constructor(props) {\n    super(props);\n\n    this.state  = {\n      isLoading: true,\n      data: false,\n      errors: false,\n      accountHeaders: [],\n      officers: [],\n      centers: [],\n      currentOfficerId: \"\",\n      currentCenterId: \"\",\n      xKoinsAppAuthSecret: props.xKoinsAppAuthSecret,\n      userId: props.userId\n    };\n  }\n\n  fetch(options) {\n    var context   = this;\n    var officerId = options.officerId || \"\";\n    var centerId  = options.centerId || \"\";\n\n    var data  = {\n      id: this.props.id,\n      officer_id: officerId,\n      center_id: centerId\n    }\n\n    console.log(\"fetch (data):\");\n    console.log(data);\n\n    this.setState({\n      currentOfficerId: officerId,\n      currentCenterId: centerId,\n      isLoading: true\n    });\n\n    $.ajax({\n      url: \"/api/v1/data_stores/insurance_personal_funds/fetch\",\n      data: data,\n      method: 'GET',\n      headers: {\n        'X-KOINS-APP-AUTH-SECRET': context.state.xKoinsAppAuthSecret,\n        'Access-Control-Allow-Methods': '*',\n        'Access-Control-Allow-Headers': '*',\n        'Access-Control-Allow-Origin': '*',\n        'Access-Control-Allow-Credentials': 'true'\n      },\n      success: function(response) {\n        console.log(response);\n\n        context.setState({\n          isLoading: false,\n          data: response\n        });\n      },\n      error: function(response) {\n        console.log(response);\n        alert(\"Something went wrong when fetching data store\");\n      }\n    });\n  }\n\n\n  componentDidMount() {\n    var context = this;\n\n    $.ajax({\n      url: \"/api/v1/data_stores/insurance_personal_funds/fetch\",\n      data: {\n        id: context.props.id\n      },\n      method: 'GET',\n      headers: {\n        'X-KOINS-APP-AUTH-SECRET': context.state.xKoinsAppAuthSecret,\n        'Access-Control-Allow-Methods': '*',\n        'Access-Control-Allow-Headers': '*',\n        'Access-Control-Allow-Origin': '*',\n        'Access-Control-Allow-Credentials': 'true'\n      },\n      success: function(response) {\n        console.log(response);\n\n        // Setup account headers, officers and centers\n        var accountHeaders    = [];\n        var officers          = [];\n        var centers           = [];\n\n        if(response.data.records.length > 0) {\n          for(var i = 0; i < response.data.records[0].accounts.length; i++) {\n            accountHeaders.push(\n              response.data.records[0].accounts[i].account_subtype\n            );\n          }\n          \n          for(var i = 0; i < response.data.officers.length; i++) {\n            officers.push(\n              response.data.officers[i]\n            );\n          }\n\n          for(var i = 0; i < response.data.centers.length; i++) {\n            centers.push(\n              response.data.centers[i]\n            );\n          }\n        }\n\n        context.setState({\n          isLoading: false,\n          accountHeaders: accountHeaders,\n          data: response,\n          officers: officers,\n          centers: centers\n        });\n      },\n      error: function(response) {\n        console.log(response);\n        alert(\"Something went wrong when fetching data store\");\n      }\n    });\n  }\n\n  handleDownloadExcel() {\n    var context   = this;\n    var officerId = context.state.currentOfficerId || \"\";\n    var centerId  = context.state.currentCenterId || \"\";\n\n    var data  = {\n      id: this.props.id,\n      officer_id: officerId,\n      center_id: centerId,\n      user_id: context.state.userId\n    }\n\n    $.ajax({\n      url: \"/api/v1/data_stores/insurance_personal_funds/download_excel\",\n      data: data,\n      headers: {\n        'X-KOINS-APP-AUTH-SECRET': context.state.xKoinsAppAuthSecret,\n        'Access-Control-Allow-Methods': '*',\n        'Access-Control-Allow-Headers': '*',\n        'Access-Control-Allow-Origin': '*',\n        'Access-Control-Allow-Credentials': 'true'\n      },\n      method: 'GET',\n      success: function(response) {\n        console.log(response);\n\n        var filename = response.filename;\n\n        window.location.href = \"/download_file?filename=\" + filename;\n      },\n      error: function(response) {\n        console.log(response);\n        alert(\"Something went wrong when fetching data store\");\n      }\n    });\n  }\n\n  renderErrorDisplay() {\n    if(this.state.errors) {\n      return  (\n        <ErrorDisplay\n          errors={this.state.errors}\n        />\n      );\n    }\n  }\n\n  renderAccountHeaders() {\n    var headers = [];\n\n    // Member name\n    headers.push(\n      <th key=\"member-header\">\n        Member\n      </th>\n    );\n\n    // Officer\n    headers.push(\n      <th key=\"officer-header\">\n        Officer\n      </th>\n    );\n\n    // Center\n    headers.push(\n      <th key=\"center-header\">\n        Center\n      </th>\n    );\n\n    console.log(this.state.accountHeaders);\n    for(var i = 0; i < this.state.accountHeaders.length; i++) {\n      headers.push(\n        <th className=\"text-end\" key={\"account-header-\" + i}>\n          {this.state.accountHeaders[i]}\n        </th>\n      );\n    }\n\n    return headers;\n  }\n\n  renderAccountValues(index, accounts) {\n    var columns = [];\n\n    for(var i = 0; i < accounts.length; i++) {\n      if(accounts[i].account_type == \"SAVINGS\" && accounts[i].id) {\n        columns.push(\n          <td className=\"text-end\">\n            <a href={\"/savings_accounts/\" + accounts[i].id} target=\"_blank\">\n              {numberWithCommas(accounts[i].balance)}\n            </a>\n          </td>\n        );\n      } else {\n        columns.push(\n          <td className=\"text-end\">\n            {numberWithCommas(accounts[i].balance)}\n          </td>\n        );\n      }\n    }\n\n    return columns;\n  }\n\n  renderDataRows() {\n    var rows  = [];\n    var records = this.state.data.data.records;\n\n    for(var i = 0; i < records.length; i++) {\n      rows.push(\n        <tr key={\"record-item-\" + i}>\n          <td>\n            {records[i].member.last_name + \", \" + records[i].member.first_name + \" \" + records[i].member.middle_name}\n          </td>\n          <td>\n            {records[i].officer.last_name + \", \" + records[i].officer.first_name}\n          </td>\n          <td className=\"text-muted\">\n            {records[i].center.name}\n          </td>\n          {this.renderAccountValues(i, records[i].accounts)}\n        </tr>\n      );\n    }\n\n    return rows;\n  }\n\n  renderDataTotals() {\n    var columns = [];\n    var records = this.state.data.data.records;\n\n    columns.push(\n      <th colSpan=\"3\">\n        TOTAL: ({records.length})\n      </th>\n    );\n\n    var totals  = [];\n\n    for(var i = 0; i < this.state.accountHeaders.length; i++) {\n      totals.push(0.00);\n    }\n\n    for(var i = 0; i < records.length; i++) {\n      for(var j = 0; j < records[i].accounts.length; j++) {\n        totals[j] += parseFloat(records[i].accounts[j].balance);\n      }\n    }\n\n    for(var i = 0; i < totals.length; i++) {\n      columns.push(\n        <th className=\"text-end\">\n          {numberWithCommas(totals[i])}\n        </th>\n      );\n    }\n\n    return columns;\n  }\n\n  handleOfficerChanged(event) {\n    this.fetch({\n      officerId: event.target.value\n    });\n  }\n\n  handleCenterChanged(event) {\n    this.fetch({\n      centerId: event.target.value\n    });\n  }\n\n  renderFilter() {\n    var officerOptions  = [\n      <option key={\"officer-select\"} value=\"\">\n        -- SELECT --\n      </option>\n    ];\n    var centerOptions   = [\n      <option key={\"center-select\"} value=\"\">\n        -- SELECT --\n      </option>\n    ];\n\n    for(var i = 0; i < this.state.officers.length; i++) {\n      officerOptions.push(\n        <option key={\"officer-\" + i} value={this.state.officers[i].id}>\n          {this.state.officers[i].last_name + \", \" + this.state.officers[i].first_name}\n        </option>\n      );\n    }\n\n    for(var i = 0; i < this.state.centers.length; i++) {\n      centerOptions.push(\n        <option key={\"center-\" + i} value={this.state.centers[i].id}>\n          {this.state.centers[i].name}\n        </option>\n      );\n    }\n\n    return  (\n      <div className=\"row\">\n        <div className=\"col\">\n          <div className=\"form-group\">\n            <label>\n              Officer:\n            </label>\n            <select value={this.state.currentOfficerId} onChange={this.handleOfficerChanged.bind(this)} className=\"form-control\">\n              {officerOptions}\n            </select>\n          </div>\n        </div>\n        <div className=\"col\">\n          <div className=\"form-group\">\n            <label>\n              Center:\n            </label>\n            <select value={this.state.currentCenterId} onChange={this.handleCenterChanged.bind(this)} className=\"form-control\">\n              {centerOptions}\n            </select>\n          </div>\n        </div>\n        <div className=\"col\">\n          <div className=\"form-group\">\n          <label> \n            Action:\n          </label>\n          <br></br>\n            <button className='btn btn-primary btn-block' href='#' onClick={this.handleDownloadExcel.bind(this)}>Download Excel</button>\n          </div>\n        </div>\n      </div>\n    ); \n  }\n\n  renderDisplay() {\n    return  (\n      <div>\n        <table className=\"table table-sm table-bordered table-hover\" style={{fontSize: \"0.9em\"}}>\n          <thead>\n            <tr>\n              {this.renderAccountHeaders()}\n            </tr>\n          </thead>\n          <tbody>\n            {this.renderDataRows()}\n          </tbody>\n          <tfoot>\n            <tr>\n              {this.renderDataTotals()}\n            </tr>\n          </tfoot>\n        </table>\n      </div>\n    );\n  }\n\n  render() {\n    if(this.state.isLoading) {\n      return  (\n        <SkCubeLoading/>\n      );\n    } else {\n      return  (\n        <div>\n          {this.renderFilter()}\n          {this.renderDisplay()}\n        </div>\n      );\n    }\n  }\n}\n", "import React from 'react';\nimport $ from 'jquery';\nimport moment from 'moment';\nimport Select from 'react-select';\nimport Toggle from 'react-toggle';\nimport \"react-toggle/style.css\";\n\nimport SkCubeLoading from '../../SkCubeLoading';\nimport ErrorDisplay from '../../ErrorDisplay';\nimport {numberWithCommas} from '../../utils/helpers';\n\n<script src=\"https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.16.9/xlsx.full.min.js\"></script>\n\nexport default class ShowComponent extends React.Component {\n  constructor(props) {\n    super(props);\n\n    this.state  = {\n      isLoading: true,\n      data: false,\n      errors: false,\n      centers: [],\n      officers: [],\n      currentCenterId: \"\",\n      loanProducts: [],\n      currentLoanProductId: \"\",\n      currentOfficerId: \"\"\n    };\n  }\n\n  fetch(options) {\n    var context       = this;\n    var loanProductId = options.loanProductId;\n    var centerId      = options.centerId;\n    var officerId     = options.officerId;\n\n    var data  = {\n      id: this.props.id,\n      loan_product_id: loanProductId,\n      center_id: centerId,\n      officer_id: officerId\n    }\n\n    this.setState({\n      currentLoanProductId: loanProductId,\n      currentCenterId: centerId,\n      currentOfficerId: officerId\n    });\n\n    $.ajax({\n      url: \"/api/v1/data_stores/soa_expenses/fetch\",\n      data: data,\n      method: 'GET',\n      success: function(response) {\n        console.log(\"response: \", response)\n        context.setState({\n          isLoading: false,\n          data: response\n        });\n      },\n      error: function(response) {\n        console.log(response);\n        alert(\"Something went wrong when fetching data store\");\n      }\n    });\n  }\n\n  componentDidMount() {\n    var context = this;\n\n    $.ajax({\n      url: \"/api/v1/data_stores/soa_expenses/fetch\",\n      data: {\n        id: context.props.id\n      },\n      method: 'GET',\n      success: function(response) {\n        var loanProducts  = response.data.loan_products;\n        var centers       = response.data.centers;\n        var officers      = response.data.officers;\n\n        context.setState({\n          isLoading: false,\n          data: response,\n          loanProducts: loanProducts,\n          centers: centers,\n          officers: officers\n        });\n      },\n      error: function(response) {\n        console.log(response);\n        alert(\"Something went wrong when fetching data store\");\n      }\n    });\n  }\n\n  renderErrorDisplay() {\n    if(this.state.errors) {\n      return  (\n        <ErrorDisplay\n          errors={this.state.errors}\n        />\n      );\n    }\n  }\n\n  renderDataRows() {\n    var rows  = [];\n    var records = this.state.data.data.records;\n\n    for(var i = 0; i < records.length; i++) {\n      rows.push(\n        <tr key={\"record-item-\" + i}>\n          <td className=\"text-center\">\n            {i + 1}\n          </td>\n          <td>\n            {records[i].member.full_name}\n          </td>\n          <td>\n            {records[i].center.name}\n          </td>\n          <td>\n            {records[i].loan_product.name}\n          </td>\n          <td className=\"text-end\">\n            {numberWithCommas(records[i].principal)}\n          </td>\n          <td>\n            {records[i].date_released}\n          </td>\n          <td>\n            {records[i].bank_check_number}\n          </td>\n        </tr>\n      );\n    }\n\n    return rows;\n  }\n\n  handleCenterChanged(event) {\n    this.fetch({\n      centerId: event.target.value,\n      loanProductId: this.state.currentLoanProductId,\n      officerId: this.state.currentOfficerId\n    });\n  }\n\n  handleLoanProductChanged(event) {\n    this.fetch({\n      loanProductId: event.target.value,\n      centerId: this.state.currentCenterId,\n      officerId: this.state.currentOfficerId\n    });\n  }\n\n  handleOfficerChanged(event) {\n    this.fetch({\n      loanProductId: this.state.currentLoanProductId,\n      centerId: this.state.currentCenterId,\n      officerId: event.target.value\n    });\n  }\n\n  renderFilter() {\n    var loanProductOptions  = [\n      <option key={\"select-loan-product\"} value=\"\">\n        -- SELECT --\n      </option>\n    ];\n\n    var centerOptions   = [\n      <option key={\"center-select\"} value=\"\">\n        -- SELECT --\n      </option>\n    ];\n\n    var officerOptions  = [\n      <option key={\"officer-select\"} value=\"\">\n        -- SELECT --\n      </option>\n    ];\n\n    for(var i = 0; i < this.state.loanProducts.length; i++) {\n      loanProductOptions.push(\n        <option key={\"loanProduct-\" + i} value={this.state.loanProducts[i].id}>\n          {this.state.loanProducts[i].name}\n        </option>\n      );\n    }\n\n    for(var i = 0; i < this.state.centers.length; i++) {\n      centerOptions.push(\n        <option key={\"center-\" + i} value={this.state.centers[i].id}>\n          {this.state.centers[i].name}\n        </option>\n      );\n    }\n\n    for(var i = 0; i < this.state.officers.length; i++) {\n      officerOptions.push(\n        <option key={\"officer-\" + i} value={this.state.officers[i].id}>\n          {this.state.officers[i].last_name}, {this.state.officers[i].first_name}\n        </option>\n      );\n    }\n\n    return  (\n      <div className=\"row\">\n        <div className=\"col\">\n          <div className=\"form-group\">\n            <label>\n              Loan Product:\n            </label>\n            <select value={this.state.currentLoanProductId} onChange={this.handleLoanProductChanged.bind(this)} className=\"form-control\">\n              {loanProductOptions}\n            </select>\n          </div>\n        </div>\n        <div className=\"col\">\n          <div className=\"form-group\">\n            <label>\n              Center:\n            </label>\n            <select value={this.state.currentCenterId} onChange={this.handleCenterChanged.bind(this)} className=\"form-control\">\n              {centerOptions}\n            </select>\n          </div>\n        </div>\n        <div className=\"col\">\n          <div className=\"form-group\">\n            <label>\n              Officer:\n            </label>\n            <select value={this.state.currentOfficerId} onChange={this.handleOfficerChanged.bind(this)} className=\"form-control\">\n              {officerOptions}\n            </select>\n          </div>\n        </div>\n      </div>\n    );\n  }\n\n  renderTotal() {\n    var total = 0.00;\n\n    for(var i = 0; i < this.state.data.data.records.length; i++) {\n      total += parseFloat(this.state.data.data.records[i].principal);\n    }\n\n    return  (\n      <tr>\n        <th colSpan=\"4\">\n          TOTAL\n        </th>\n        <td className=\"text-end\">\n          <strong>\n            {numberWithCommas(total)}\n          </strong>\n        </td>\n        <td>\n        </td>\n        <td>\n        </td>\n      </tr>\n    );\n  }\n\n  renderDisplay() {\n    return  (\n      <div>\n        <table className=\"table table-sm table-bordered table-hover\" style={{fontSize: \"0.9em\"}}>\n          <thead>\n            <tr>\n              <th>\n              </th>\n              <th>\n                Member\n              </th>\n              <th>\n                Center\n              </th>\n              <th>\n                Loan Product\n              </th>\n              <th className=\"text-end\">\n                Amount\n              </th>\n              <th>\n                Date Released\n              </th>\n              <th>\n                Check No.\n              </th>\n            </tr>\n          </thead>\n          <tbody>\n            {this.renderDataRows()}\n          </tbody>\n          <tfoot>\n            {this.renderTotal()}\n          </tfoot>\n        </table>\n      </div>\n    );\n  }\n\n  render() {\n    if(this.state.isLoading) {\n      return  (\n        <SkCubeLoading/>\n      );\n    } else {\n      return  (\n        <div>\n          {this.renderFilter()}\n          {this.renderDisplay()}\n        </div>\n      );\n    }\n  }\n}\n\n\ndocument.addEventListener('DOMContentLoaded', function() {\n  var printButton = document.getElementById('btn-print-soax');\n  var downloadButton = document.getElementById('btn-print-excelsoax');\n\n  if (printButton) {\n    printButton.addEventListener('click', function() {\n      var printWindow = window.open('', '', 'height=600,width=800');\n      var tableHtml = document.querySelector('table').outerHTML; \n      tableHtml = tableHtml.replace(/<a[^>]*>(.*?)<\\/a>/g, '$1');\n      var Title = document.getElementById('hidden-title').innerHTML;\n\n      var headerHtml = `\n        <style>\n          .arial-font {\n            font-family: Arial, sans-serif;\n            color: black; \n            margin: 10px 5px;\n          }\n          h3 {\n            font-size: 25px; \n            font-weight: bold; \n          }\n          h4 {\n            font-size: 15px; \n            font-weight: normal;\n            font-weight: bold;\n          }\n        </style>\n        <h3 class=\"arial-font\">KASAGANA-KA CREDIT AND SAVINGS COOPERATIVE</h3>\n        <h4 class=\"arial-font\">4th Floor KMBA Members' Center Building #5 Matimpiin St. Brgy. Pinyahan Quezon City 1100</h4>\n        <h4 class=\"arial-font\">${Title}</h4>\n      `;\n\n      printWindow.document.write('<style>body{font-family: Arial, sans-serif;} table{width: 100%; border-collapse: collapse;} th, td{border: 1px solid #000; padding: 5px; text-align: left;} th{background-color: #f2f2f2;} </style>'); \n      printWindow.document.write('</head><body>');\n      printWindow.document.write(headerHtml);\n      printWindow.document.write(tableHtml);\n      printWindow.document.write('</body></html>');\n\n      printWindow.document.close();\n      printWindow.print();\n    });\n  }\n\n\n\n  if (downloadButton) {\n    downloadButton.addEventListener('click', function() {\n      const table = document.querySelector('table');\n      const rows = Array.from(table.querySelectorAll('tr'));\n      \n      const data = rows.map(row => \n        Array.from(row.querySelectorAll('td, th'))\n          .map(cell => `\"${cell.innerText.trim().replace(/\"/g, '\"\"')}\"`)\n          .join(\",\")\n      ).join(\"\\n\");\n    \n\n      const blob = new Blob([data], { type: 'text/csv;charset=utf-8;' });\n\n      const url = URL.createObjectURL(blob);\n\n      const link = document.createElement(\"a\");\n      link.setAttribute(\"href\", url);\n      link.setAttribute(\"download\", \"SOA_Expenses\"); \n      document.body.appendChild(link);    \n      link.click();\n      document.body.removeChild(link);\n    });\n}\n});\n\n", "import React from 'react';\nimport $ from 'jquery';\nimport moment from 'moment';\nimport Select from 'react-select';\nimport Toggle from 'react-toggle';\nimport \"react-toggle/style.css\";\n\nimport SkCubeLoading from '../../SkCubeLoading';\nimport ErrorDisplay from '../../ErrorDisplay';\nimport {numberWithCommas} from '../../utils/helpers';\n\nexport default class ShowComponent extends React.Component {\n  constructor(props) {\n    super(props);\n\n    this.state  = {\n      isLoading: true,\n      data: false,\n      errors: false,\n      centers: [],\n      officers: [],\n      currentCenterId: \"\",\n      loanProducts: [],\n      currentLoanProductId: \"\",\n      currentOfficerId: \"\"\n    };\n  }\n\n  fetch(options) {\n    var context       = this;\n    var loanProductId = options.loanProductId;\n    var centerId      = options.centerId;\n    var officerId     = options.officerId;\n\n    var data  = {\n      id: this.props.id,\n      loan_product_id: loanProductId,\n      center_id: centerId,\n      officer_id: officerId\n    }\n\n    this.setState({\n      currentLoanProductId: loanProductId,\n      currentCenterId: centerId,\n      currentOfficerId: officerId\n    });\n\n    $.ajax({\n      url: \"/api/v1/data_stores/soa_loans/fetch\",\n      data: data,\n      method: 'GET',\n      success: function(response) {\n        context.setState({\n          isLoading: false,\n          data: response\n        });\n      },\n      error: function(response) {\n        alert(\"Something went wrong when fetching data store\");\n      }\n    });\n  }\n\n  componentDidMount() {\n    var context = this;\n\n    $.ajax({\n      url: \"/api/v1/data_stores/soa_loans/fetch\",\n      data: {\n        id: context.props.id\n      },\n      method: 'GET',\n      success: function(response) {\n        console.log(response);\n\n        var loanProducts  = response.data.loan_products;\n        var centers       = response.data.centers;\n        var officers      = response.data.officers;\n\n        context.setState({\n          isLoading: false,\n          data: response,\n          loanProducts: loanProducts,\n          centers: centers,\n          officers: officers\n        });\n      },\n      error: function(response) {\n        console.log(response);\n        alert(\"Something went wrong when fetching data store\");\n      }\n    });\n  }\n\n  renderErrorDisplay() {\n    if(this.state.errors) {\n      return  (\n        <ErrorDisplay\n          errors={this.state.errors}\n        />\n      );\n    }\n  }\n\n  renderPayments(record) {\n    var rows  = [];\n\n    for(var i = 0; i < record.records.length; i++) {\n      var payment = record.records[i];\n\n      rows.push(\n        <tr key={\"payment-\" + payment.id}>\n          <td>\n            {payment.date}\n          </td>\n          <td className=\"text-end\">\n            {numberWithCommas(payment.principal_paid)}\n          </td>\n          <td className=\"text-end\">\n            {numberWithCommas(payment.interest_paid)}\n          </td>\n          <td className=\"text-end\">\n            {numberWithCommas(parseFloat(payment.principal_paid) + parseFloat(payment.interest_paid))}\n          </td>\n        </tr>\n      );\n    }\n\n    return rows;\n  }\n\n  renderTotals() {\n    var total_principal_paid  = 0.00;\n    var total_interest_paid   = 0.00;\n\n    var records = this.state.data.data.records;\n\n    for(var i = 0; i < records.length; i++) {\n      total_principal_paid += parseFloat(records[i].total_principal_paid);\n      total_interest_paid += parseFloat(records[i].total_interest_paid);\n    }\n\n    var total_paid  = total_principal_paid + total_interest_paid;\n\n    return  (\n      <tr key=\"grand-total\" style={{backgroundColor: \"yellow\"}}>\n        <th className=\"\">\n          GRAND TOTAL\n        </th>\n        <th className=\"text-end\">\n          {numberWithCommas(total_principal_paid)}\n        </th>\n        <th className=\"text-end\">\n          {numberWithCommas(total_interest_paid)}\n        </th>\n        <th className=\"text-end\">\n          {numberWithCommas(total_paid)}\n        </th>\n      </tr>\n    );\n\n  }\n\n  renderDataRows() {\n    var rows  = [];\n    var records = this.state.data.data.records;\n\n    for(var i = 0; i < records.length; i++) {\n      var r = records[i];\n\n      rows.push(\n        <tr key={\"member-\" + i} style={{backgroundColor: \"#d0ccff\"}}>\n          <td colSpan=\"4\">\n            <strong>\n              {r.member.last_name}, {r.member.first_name} &nbsp;\n            </strong>\n            <small className=\"text-muted\">\n              {r.loan_product.name}\n            </small>\n          </td>\n        </tr>\n      );\n\n      rows.push(\n        <tr key={\"member-\" + i + \"-labels\"}>\n          <th>\n            Date\n          </th>\n          <th className=\"text-end\">\n            Principal\n          </th>\n          <th className=\"text-end\">\n            Interest\n          </th>\n          <th className=\"text-end\">\n            Total\n          </th>\n        </tr>\n      );\n\n      var memberDataRows  = this.renderPayments(r);\n\n      for(var j = 0; j < memberDataRows.length; j++) {\n        rows.push(memberDataRows[j]);\n      }\n\n      rows.push(\n        <tr key={\"member-\" + i + \"-grand-total\"}>\n          <th>\n            <strong>\n              Total for {r.member.last_name}, {r.member.first_name} &nbsp;\n            </strong>\n            <small className=\"text-muted\">\n              {r.loan_product.name}\n            </small>\n          </th>\n          <th className=\"text-end\">\n            {numberWithCommas(r.total_principal_paid)}\n          </th>\n          <th className=\"text-end\">\n            {numberWithCommas(r.total_interest_paid)}\n          </th>\n          <th className=\"text-end\">\n            {numberWithCommas(parseFloat(r.total_principal_paid) + parseFloat(r.total_interest_paid))}\n          </th>\n        </tr>\n      );\n    }\n\n    return rows;\n  }\n\n  handleCenterChanged(event) {\n    this.fetch({\n      centerId: event.target.value,\n      loanProductId: this.state.currentLoanProductId,\n      officerId: this.state.currentOfficerId\n    });\n  }\n\n  handleLoanProductChanged(event) {\n    this.fetch({\n      loanProductId: event.target.value,\n      centerId: this.state.currentCenterId,\n      officerId: this.state.currentOfficerId\n    });\n  }\n\n  handleOfficerChanged(event) {\n    this.fetch({\n      loanProductId: this.state.currentLoanProductId,\n      centerId: this.state.currentCenterId,\n      officerId: event.target.value\n    });\n  }\n\n  renderFilter() {\n    var loanProductOptions  = [\n      <option key={\"select-loan-product\"} value=\"\">\n        -- SELECT --\n      </option>\n    ];\n\n    var centerOptions   = [\n      <option key={\"center-select\"} value=\"\">\n        -- SELECT --\n      </option>\n    ];\n\n    var officerOptions  = [\n      <option key={\"officer-select\"} value=\"\">\n        -- SELECT --\n      </option>\n    ];\n\n    for(var i = 0; i < this.state.loanProducts.length; i++) {\n      loanProductOptions.push(\n        <option key={\"loanProduct-\" + i} value={this.state.loanProducts[i].id}>\n          {this.state.loanProducts[i].name}\n        </option>\n      );\n    }\n\n    for(var i = 0; i < this.state.centers.length; i++) {\n      centerOptions.push(\n        <option key={\"center-\" + i} value={this.state.centers[i].id}>\n          {this.state.centers[i].name}\n        </option>\n      );\n    }\n\n    for(var i = 0; i < this.state.officers.length; i++) {\n      officerOptions.push(\n        <option key={\"officer-\" + i} value={this.state.officers[i].id}>\n          {this.state.officers[i].last_name}, {this.state.officers[i].first_name}\n        </option>\n      );\n    }\n\n    return  (\n      <div className=\"row\">\n        <div className=\"col\">\n          <div className=\"form-group\">\n            <label>\n              Loan Product:\n            </label>\n            <select value={this.state.currentLoanProductId} onChange={this.handleLoanProductChanged.bind(this)} className=\"form-control\">\n              {loanProductOptions}\n            </select>\n          </div>\n        </div>\n        <div className=\"col\">\n          <div className=\"form-group\">\n            <label>\n              Center:\n            </label>\n            <select value={this.state.currentCenterId} onChange={this.handleCenterChanged.bind(this)} className=\"form-control\">\n              {centerOptions}\n            </select>\n          </div>\n        </div>\n        <div className=\"col\">\n          <div className=\"form-group\">\n            <label>\n              Officer:\n            </label>\n            <select value={this.state.currentOfficerId} onChange={this.handleOfficerChanged.bind(this)} className=\"form-control\">\n              {officerOptions}\n            </select>\n          </div>\n        </div>\n      </div>\n    );\n  }\n\n  renderTotal() {\n    var total = 0.00;\n\n    for(var i = 0; i < this.state.data.data.records.length; i++) {\n      total += parseFloat(this.state.data.data.records[i].principal);\n    }\n\n    return  (\n      <tr>\n        <th colSpan=\"3\">\n          TOTAL\n        </th>\n        <td className=\"text-end\">\n          <strong>\n            {numberWithCommas(total)}\n          </strong>\n        </td>\n        <td>\n        </td>\n        <td>\n        </td>\n      </tr>\n    );\n  }\n\n  renderDisplay() {\n    return  (\n      <div>\n        <hr/>\n        {this.renderTotals()}\n        <hr/>\n        {this.renderDataRows()}\n      </div>\n    );\n  }\n\n  render() {\n    if(this.state.isLoading) {\n      return  (\n        <SkCubeLoading/>\n      );\n    } else {\n      return  (\n        <div>\n          {this.renderFilter()}\n          <table className=\"table table-sm table-bordered table-hover\">\n            <thead>\n            </thead>\n            <tbody>\n              {this.renderDataRows()}\n            </tbody>\n            <tfoot>\n              {this.renderTotals()}\n            </tfoot>\n          </table>\n        </div>\n      );\n    }\n  }\n}\n\ndocument.addEventListener('DOMContentLoaded', function() {\n  var printButton = document.getElementById('print_soal');\n  var downloadButton = document.getElementById('excel_soal');\n\n  if (printButton) {\n    printButton.addEventListener('click', function() {\n      var printWindow = window.open('', '', 'height=600,width=800');\n      var tableHtml = document.querySelector('table').outerHTML; \n      tableHtml = tableHtml.replace(/<a[^>]*>(.*?)<\\/a>/g, '$1');\n      var Title = document.getElementById('hidden-title').innerHTML;\n\n      var headerHtml = `\n        <style>\n          .arial-font {\n            font-family: Arial, sans-serif;\n            color: black; \n            margin: 10px 5px;\n          }\n          h3 {\n            font-size: 25px; \n            font-weight: bold; \n          }\n          h4 {\n            font-size: 15px; \n            font-weight: normal;\n            font-weight: bold;\n          }\n        </style>\n        <h3 class=\"arial-font\">KASAGANA-KA CREDIT AND SAVINGS COOPERATIVE</h3>\n        <h4 class=\"arial-font\">4th Floor KMBA Members' Center Building #5 Matimpiin St. Brgy. Pinyahan Quezon City 1100</h4>\n        <h4 class=\"arial-font\">${Title}</h4>\n      `;\n\n      printWindow.document.write('<style>body{font-family: Arial, sans-serif;} table{width: 100%; border-collapse: collapse;} th, td{border: 1px solid #000; padding: 5px; text-align: left;} th{background-color: #f2f2f2;} </style>'); \n      printWindow.document.write('</head><body>');\n      printWindow.document.write(headerHtml);\n      printWindow.document.write(tableHtml);\n      printWindow.document.write('</body></html>');\n\n      printWindow.document.close();\n      printWindow.print();\n    });\n  }\n\n\n\n  if (downloadButton) {\n    downloadButton.addEventListener('click', function() {\n      const table = document.querySelector('table');\n      const rows = Array.from(table.querySelectorAll('tr'));\n      \n      const data = rows.map(row => \n        Array.from(row.querySelectorAll('td, th'))\n          .map(cell => `\"${cell.innerText.trim().replace(/\"/g, '\"\"')}\"`)\n          .join(\",\")\n      ).join(\"\\n\");\n    \n\n      const blob = new Blob([data], { type: 'text/csv;charset=utf-8;' });\n\n      const url = URL.createObjectURL(blob);\n\n      const link = document.createElement(\"a\");\n      link.setAttribute(\"href\", url);\n      link.setAttribute(\"download\", \"SOA_Loans\"); \n      document.body.appendChild(link);    \n      link.click();\n      document.body.removeChild(link);\n    });\n}\n});\n\n", "import React from 'react';\nimport $ from 'jquery';\nimport moment from 'moment';\nimport Select from 'react-select';\nimport Toggle from 'react-toggle';\nimport \"react-toggle/style.css\";\n\nimport SkCubeLoading from '../../SkCubeLoading';\nimport ErrorDisplay from '../../ErrorDisplay';\nimport {numberWithCommas} from '../../utils/helpers';\n\nexport default class ShowComponent extends React.Component {\n  constructor(props) {\n    super(props);\n\n    this.state  = {\n      isLoading: true,\n      data: false,\n      errors: false,\n      centers: [],\n      officers: [],\n      currentCenterId: \"\",\n      currentLoanProductId: \"\",\n      currentOfficerId: \"\"\n    };\n  }\n\n  fetch(options) {\n    var context   = this;\n    var centerId  = options.centerId;\n    var officerId = options.officerId;\n\n    var data  = {\n      id: this.props.id,\n      center_id: centerId,\n      officer_id: officerId\n    }\n\n    this.setState({\n      currentCenterId: centerId,\n      currentOfficerId: officerId\n    });\n\n    $.ajax({\n      url: \"/api/v1/data_stores/soa_funds/fetch\",\n      data: data,\n      method: 'GET',\n      success: function(response) {\n        console.log(response);\n\n        context.setState({\n          isLoading: false,\n          data: response\n        });\n      },\n      error: function(response) {\n        console.log(response);\n        alert(\"Something went wrong when fetching data store\");\n      }\n    });\n  }\n\n  componentDidMount() {\n    var context = this;\n\n    $.ajax({\n      url: \"/api/v1/data_stores/soa_funds/fetch\",\n      data: {\n        id: context.props.id\n      },\n      method: 'GET',\n      success: function(response) {\n        console.log(response);\n\n        var centers   = response.data.centers;\n        var officers  = response.data.officers;\n\n        context.setState({\n          isLoading: false,\n          data: response,\n          centers: centers,\n          officers: officers\n        });\n      },\n      error: function(response) {\n        console.log(response);\n        alert(\"Something went wrong when fetching data store\");\n      }\n    });\n  }\n\n  renderErrorDisplay() {\n    if(this.state.errors) {\n      return  (\n        <ErrorDisplay\n          errors={this.state.errors}\n        />\n      );\n    }\n  }\n\n  renderPaymentRecords(paymentRecords, id) {\n    var rows  = [];\n\n    for(var j = 0; j < paymentRecords.length; j++) {\n      rows.push(\n        <td className=\"text-end\" key={\"payment-\" + id + \"-\" + j + \"debit\"}>\n          {paymentRecords[j].debit > 0 ? numberWithCommas(paymentRecords[j].debit) : ''}\n        </td>\n      );\n      rows.push(\n        <td className=\"text-end\" key={\"payment-\" + id + \"-\" + j + \"-credit\"}>\n          {paymentRecords[j].credit > 0 ? numberWithCommas(paymentRecords[j].credit) : ''}\n        </td>\n      );\n    }\n\n    return rows;\n  }\n\n  renderPayments(record) {\n    var rows  = [];\n\n    for(var i = 0; i < record.records.length; i++) {\n      var payment         = record.records[i];\n      var paymentRecords  = payment.records;\n\n      rows.push(\n        <tr key={\"payment-record-\" + record.member.id + \"-\" + i}>\n          <td>\n            {payment.date}\n          </td>\n          {this.renderPaymentRecords(paymentRecords, payment.id)}\n        </tr>\n      );\n    }\n\n    return rows;\n  }\n\n  renderSubtableHeaders(id) {\n    var cols      = [];\n    var settings  = this.state.data.data.settings;\n\n    for(var i = 0; i < settings.length; i++) {\n      cols.push(\n        <td className=\"text-center\" key={\"header-\" + id + \"-\" + settings[i].account_subtype} colSpan=\"2\">\n          <strong>\n            {settings[i].account_subtype}\n          </strong>\n        </td>\n      );\n    }\n\n    return cols;\n  }\n  renderDebitCreditHeaders(id) {\n    var cols      = [];\n    var settings  = this.state.data.data.settings;\n\n    for(var i = 0; i < settings.length; i++) {\n      cols.push(\n        <td className=\"text-center\">\n          <strong>\n            Debit\n          </strong>\n        </td>\n      );\n      cols.push(\n        <td className=\"text-center\">\n          <strong>\n            Credit\n          </strong>\n        </td>\n      );\n    }\n\n    return cols;\n  }\n\n  renderSubtableTotals(totals, id) {\n    var cols      = [];\n\n    for(var i = 0; i < totals.length; i++) {\n      cols.push(\n        <td className=\"text-end\" key={\"total-\" + id + \"-\" + i + \"-debit\"}>\n          <strong>\n            {totals[i].debit > 0 ? numberWithCommas(totals[i].debit) : ''}\n          </strong>\n        </td>\n      );\n      cols.push(\n        <td className=\"text-end\" key={\"total-\" + id + \"-\" + i + \"-credit\"}>\n          <strong>\n            {totals[i].credit > 0 ? numberWithCommas(totals[i].credit) : ''}\n          </strong>\n        </td>\n      );\n    }\n\n    return cols;\n  }\n\n  renderDataRows() {\n    var rows      = [];\n    var records   = this.state.data.data.records;\n    var settings  = this.state.data.data.settings;\n\n    for(var i = 0; i < records.length; i++) {\n      var r = records[i];\n\n      rows.push(\n        <tr key={\"member-\" + r.member.id} style={{backgroundColor: \"#d0ccff\"}}>\n          <td colSpan={2 * (settings.length) + 1}>\n            <strong>\n              <a href={\"/members/\" + r.member.id + \"/display\"} target='_blank'>\n                {r.member.last_name}, {r.member.first_name} &nbsp;\n              </a>\n            </strong>\n            - &nbsp; \n            {r.center.name}\n          </td>\n        </tr>\n      );\n\n      rows.push(\n        <tr key={\"member-\" + r.member.id + \"-subtable-labels\"}>\n          <th key={\"member-empty-date-\" + r.member.id}>\n            Date\n          </th>\n          {this.renderSubtableHeaders(r.member.id)}\n        </tr>\n      );\n\n      rows.push(\n        <tr key={\"member-\" + r.member.id + \"-debit-credit-labels\"}>\n          <th key={\"member-empty-dc-\" + r.member.id}>\n          </th>\n          {this.renderDebitCreditHeaders(r.member.id)}\n        </tr>\n      );\n\n      var memberDataRows  = this.renderPayments(r);\n\n      for(var j = 0; j < memberDataRows.length; j++) {\n        rows.push(memberDataRows[j]);\n      }\n\n      // TOTALS\n      var totals  = records[i].totals;\n      rows.push(\n        <tr key={\"member-\" + r.member.id + \"-totals\"}>\n          <td key={\"totals-\" + r.member.id}>\n            <strong>\n              Total\n            </strong>\n          </td>\n          {this.renderSubtableTotals(totals, r.member.id)}\n        </tr>\n      );\n    }\n\n    return rows;\n  }\n\n  handleCenterChanged(event) {\n    this.fetch({\n      centerId: event.target.value,\n      loanProductId: this.state.currentLoanProductId,\n      officerId: this.state.currentOfficerId\n    });\n  }\n\n  handleOfficerChanged(event) {\n    this.fetch({\n      centerId: this.state.currentCenterId,\n      loanProductId: this.state.currentLoanProductId,\n      officerId: event.target.value\n    });\n  }\n\n  renderFilter() {\n    var centerOptions   = [\n      <option key={\"center-select\"} value=\"\">\n        -- SELECT --\n      </option>\n    ];\n\n    for(var i = 0; i < this.state.centers.length; i++) {\n      centerOptions.push(\n        <option key={\"center-\" + i} value={this.state.centers[i].id}>\n          {this.state.centers[i].name}\n        </option>\n      );\n    }\n\n    var officerOptions  = [\n      <option key={\"officer-select\"} value=\"\">\n        -- SELECT --\n      </option>\n    ];\n\n    for(var i = 0; i < this.state.officers.length; i++) {\n      officerOptions.push(\n        <option key={\"officer-\" + i} value={this.state.officers[i].id}>\n          {this.state.officers[i].last_name}, {this.state.officers[i].first_name}\n        </option>\n      );\n    }\n\n    return  (\n      <div className=\"row\">\n        <div className=\"col\">\n          <div className=\"form-group\">\n            <label>\n              Center:\n            </label>\n            <select \n              value={this.state.currentCenterId} \n              onChange={this.handleCenterChanged.bind(this)} \n              className=\"form-control\"\n            >\n              {centerOptions}\n            </select>\n          </div>\n        </div>\n        <div className=\"col\">\n          <div className=\"form-group\">\n            <label>\n              Officer:\n            </label>\n            <select \n              value={this.state.currentOfficerId} \n              onChange={this.handleOfficerChanged.bind(this)} \n              className=\"form-control\"\n            >\n              {officerOptions}\n            </select>\n          </div>\n        </div>\n      </div>\n    );\n  }\n\n  renderTotalsRow() {\n    var settings  = this.state.data.data.settings;\n    var totals    = [];\n    var totalVals = [];\n    var records   = this.state.data.data.records;\n\n    console.log(records);\n    for(var i = 0; i < settings.length; i++) {\n      totalVals.push({\n        debit: 0.00,\n        credit: 0.00\n      });\n    }\n\n    for(var i = 0; i < records.length; i++) {\n      for(var j = 0; j < records[i].records.length; j++) {\n        for(var k = 0; k < records[i].records[j].records.length; k++) {\n\n          // Increment credit\n          totalVals[k].credit += parseFloat(records[i].records[j].records[k].credit);\n          // Increment debit\n          totalVals[k].debit += parseFloat(records[i].records[j].records[k].debit);\n        }\n      }\n    }\n\n    for(var i = 0; i < settings.length; i++) {\n\n      totals.push(\n        <td key={\"grand-total-\" + i + \"-debit\"} className=\"text-end\">\n          {numberWithCommas(totalVals[i].debit)}\n        </td>\n      );\n      totals.push(\n        <td key={\"grand-total-\" + i + \"-credit\"} className=\"text-end\">\n          {numberWithCommas(totalVals[i].credit)}\n        </td>\n      );\n    }\n\n    return  (\n      <tr style={{backgroundColor: \"yellow\"}}>\n        <td>\n          <strong>\n            Grand Total\n          </strong>\n        </td>\n        {totals}\n      </tr>\n    );\n  }\n\n  render() {\n    if(this.state.isLoading) {\n      return  (\n        <SkCubeLoading/>\n      );\n    } else {\n      return  (\n        <div>\n          {this.renderFilter()}\n          <hr/>\n          <table className=\"table table-sm table-bordered table-hover\">\n            <thead>\n            </thead>\n            <tbody>\n              {this.renderDataRows()}\n              {this.renderTotalsRow()}\n            </tbody>\n          </table>\n        </div>\n      );\n    }\n  }\n}\n\ndocument.addEventListener('DOMContentLoaded', function() {\n  var printButton = document.getElementById('print_soaf');\n  var downloadButton = document.getElementById('excel_soaf');\n\n  if (printButton) {\n    printButton.addEventListener('click', function() {\n      var printWindow = window.open('', '', 'height=600,width=800');\n      var tableHtml = document.querySelector('table').outerHTML; \n      tableHtml = tableHtml.replace(/<a[^>]*>(.*?)<\\/a>/g, '$1');\n      var Title = document.getElementById('hidden-title').innerHTML;\n\n      var headerHtml = `\n        <style>\n          .arial-font {\n            font-family: Arial, sans-serif;\n            color: black; \n            margin: 10px 5px;\n          }\n          h3 {\n            font-size: 25px; \n            font-weight: bold; \n          }\n          h4 {\n            font-size: 15px; \n            font-weight: normal;\n            font-weight: bold;\n          }\n        </style>\n        <h3 class=\"arial-font\">KASAGANA-KA CREDIT AND SAVINGS COOPERATIVE</h3>\n        <h4 class=\"arial-font\">4th Floor KMBA Members' Center Building #5 Matimpiin St. Brgy. Pinyahan Quezon City 1100</h4>\n        <h4 class=\"arial-font\">${Title}</h4>\n      `;\n\n      printWindow.document.write('<style>body{font-family: Arial, sans-serif;} table{width: 100%; border-collapse: collapse;} th, td{border: 1px solid #000; padding: 5px; text-align: left;} th{background-color: #f2f2f2;} </style>'); \n      printWindow.document.write('</head><body>');\n      printWindow.document.write(headerHtml);\n      printWindow.document.write(tableHtml);\n      printWindow.document.write('</body></html>');\n\n      printWindow.document.close();\n      printWindow.print();\n    });\n  }\n\n\n\n  if (downloadButton) {\n    downloadButton.addEventListener('click', function() {\n      const table = document.querySelector('table');\n      const rows = Array.from(table.querySelectorAll('tr'));\n      \n      const data = rows.map(row => \n        Array.from(row.querySelectorAll('td, th'))\n          .map(cell => `\"${cell.innerText.trim().replace(/\"/g, '\"\"')}\"`)\n          .join(\",\")\n      ).join(\"\\n\");\n    \n\n      const blob = new Blob([data], { type: 'text/csv;charset=utf-8;' });\n\n      const url = URL.createObjectURL(blob);\n\n      const link = document.createElement(\"a\");\n      link.setAttribute(\"href\", url);\n      link.setAttribute(\"download\", \"SOA_Funds\"); \n      document.body.appendChild(link);    \n      link.click();\n      document.body.removeChild(link);\n    });\n}\n});\n", "import React from 'react';\nimport $ from 'jquery';\nimport moment from 'moment';\nimport Select from 'react-select';\nimport Toggle from 'react-toggle';\nimport \"react-toggle/style.css\";\n\nimport SkCubeLoading from '../../SkCubeLoading';\nimport ErrorDisplay from '../../ErrorDisplay';\nimport {numberWithCommas} from '../../utils/helpers';\n\nexport default class ShowComponent extends React.Component {\n  constructor(props) {\n    super(props);\n\n    this.state  = {\n      isLoading: true,\n      data: false,\n      errors: false,\n      centers: [],\n      officers: [],\n      loanProducts: [],\n      currentOfficerId: \"\",\n      currentCenterId: \"\",\n      currentLoanProductId: \"\"\n    };\n  }\n\n  fetch(options) {\n    var context       = this;\n    var centerId      = options.centerId;\n    var loanProductId = options.loanProductId;\n    var officerId     = options.officerId;\n\n    var data  = {\n      id: this.props.id,\n      center_id: centerId,\n      loan_product_id: loanProductId,\n      officer_id: officerId\n    }\n\n    console.log(\"fetch (data):\");\n    console.log(data);\n\n    this.setState({\n      currentCenterId: centerId,\n      currentLoanProductId: loanProductId,\n      currentOfficerId: officerId\n    });\n\n    $.ajax({\n      url: \"/api/v1/data_stores/watchlists/fetch\",\n      data: data,\n      method: 'GET',\n      success: function(response) {\n        console.log(response);\n\n        context.setState({\n          isLoading: false,\n          data: response\n        });\n      },\n      error: function(response) {\n        console.log(response);\n        alert(\"Something went wrong when fetching data store\");\n      }\n    });\n  }\n\n  componentDidMount() {\n    var context = this;\n\n    $.ajax({\n      url: \"/api/v1/data_stores/watchlists/fetch\",\n      data: {\n        id: context.props.id\n      },\n      method: 'GET',\n      success: function(response) {\n        console.log(response);\n\n        var centers       = response.data.centers;\n        var loanProducts  = response.data.loan_products;\n        var officers      = response.data.officers;\n\n        context.setState({\n          isLoading: false,\n          data: response,\n          centers: centers,\n          loan_products: loanProducts,\n          officers: officers\n        });\n      },\n      error: function(response) {\n        console.log(response);\n        alert(\"Something went wrong when fetching data store\");\n      }\n    });\n  }\n\n  renderErrorDisplay() {\n    if(this.state.errors) {\n      return  (\n        <ErrorDisplay\n          errors={this.state.errors}\n        />\n      );\n    }\n  }\n\n  renderDataRows() {\n    var rows      = [];\n    var records   = this.state.data.data.records;\n\n    var totalPastDue  = 0.00;\n    var totalPrincipalBalance = 0.00;\n    var totalInterestBalance = 0.00;\n    var x = 0;\n   \n    var totalCategoryAParAmount     = 0.00;\n    var totalCategoryBParAmount     = 0.00;\n    var totalCategoryCParAmount     = 0.00;\n\n    for(var i = 0; i < records.length; i++) {\n      if(records[i].total_balance > 0) {\n\tvar categoryAParAmount     = 0.00;\n\tvar categoryBParAmount     = 0.00;\n\tvar categoryCParAmount     = 0.00;\n\n\tvar numDaysPar  = parseInt(records[i].num_days_par);\n      \tvar par         = records[i].par;\n\t      \n\tif(par > 0) { \n\t   if(numDaysPar >= 1 && numDaysPar <= 30) {\n\t     categoryAParAmount     \t= parseFloat(records[i].overall_principal_balance);\n             totalCategoryAParAmount    += categoryAParAmount;\n\n\t   } else if(numDaysPar >= 31 && numDaysPar <= 365) {\n\t     categoryBParAmount     \t= parseFloat(records[i].overall_principal_balance);\n             totalCategoryBParAmount    += categoryBParAmount;\n\n\t   } else if(numDaysPar >= 365){\n\t     categoryCParAmount     \t= parseFloat(records[i].overall_principal_balance);\n             totalCategoryCParAmount    += categoryCParAmount;\n\n\t   }\n\t}\n\ttotalPastDue += parseFloat(records[i].total_balance);\n\ttotalPrincipalBalance += parseFloat(records[i].principal_balance);\n\ttotalInterestBalance += parseFloat(records[i].interest_balance);\n\tx = x+1\n        rows.push(\n          <tr key={\"member-row-\" + records[i].member.id + \"-\" + i}>\n            <td className=\"text-center\">\n\t     {x}\n            </td>\n            <td>\n              <strong>\n                <a href={\"/loans/\" + records[i].id} target='_blank'>\n                  {records[i].member.last_name}, {records[i].member.first_name} {records[i].member.middle_name}\n                </a>\n              </strong>\n            </td>\n            <td>\n              {records[i].center.name}\n            </td>\n            <td>\n              {records[i].officer.last_name}, {records[i].officer.first_name}\n            </td>\n            <td>\n              {records[i].loan_product.name}\n            </td>\n\t    <td className=\"text-end\">\n              {numberWithCommas(records[i].principal_balance)}\n            </td>\n\t    <td className=\"text-end\">\n              {numberWithCommas(records[i].interest_balance)}\n            </td>\n\t    <td className=\"text-end\">\n              {numberWithCommas(records[i].total_balance)}\n\t    </td>\n\t    <td className=\"text-end\">\n              {numberWithCommas(categoryAParAmount)}\n\t    </td>\n\t    <td className=\"text-end\">\n              {numberWithCommas(categoryBParAmount)}\n\t    </td>\n\t    <td className=\"text-end\">\n              {numberWithCommas(categoryCParAmount)}\n\t    </td>\n          </tr>\n        );\n      }\n    }\n\n    rows.push(\n      <tr key={\"grand-total\"}>\n        <th>\n        </th>\n        <th colSpan=\"4\">\n          GRAND TOTAL ({x}) \n        </th>\n        <th className=\"text-end\">{numberWithCommas(totalPrincipalBalance)}</th>\n\t<th className=\"text-end\">{numberWithCommas(totalInterestBalance)}</th>\n\t<th className=\"text-end\">\n          {numberWithCommas(totalPastDue)}\n        </th>\n\t<th className=\"text-end\">\n\t  <strong>\n           {numberWithCommas(totalCategoryAParAmount)}\n           <br/>\n \t  </strong>\n\t</th>\t\n\t<th className=\"text-end\">\n\t  <strong>\n           {numberWithCommas(totalCategoryBParAmount)}\n           <br/>\n \t  </strong>\n\t</th>\t\n\t<th className=\"text-end\">\n\t  <strong>\n           {numberWithCommas(totalCategoryCParAmount)}\n           <br/>\n \t  </strong>\n\t</th>\t\t\t\n       </tr>\n    );\n\n    return rows;\n  }\n\n  handleCenterChanged(event) {\n    this.fetch({\n      centerId: event.target.value,\n      loanProductId: this.state.currentLoanProductId,\n      officerId: this.state.currentOfficerId\n    });\n  }\n\n  handleLoanProductChanged(event) {\n    this.fetch({\n      centerId: this.state.currentCenterId,\n      loanProductId: event.target.value,\n      officerId: this.state.currentOfficerId\n    });\n  }\n\n  handleOfficerChanged(event) {\n    this.fetch({\n      centerId: this.state.currentCenterId,\n      loanProductId: this.state.currentLoanProductId,\n      officerId: event.target.value\n    });\n  }\n\n  renderFilter() {\n    var centerOptions   = [\n       <option key={\"center-select\"} value=\"\">\n        -- SELECT --\n      </option>\n    ];\n\n    for(var i = 0; i < this.state.centers.length; i++) {\n      centerOptions.push(\n        <option key={\"center-\" + i} value={this.state.centers[i].id}>\n          {this.state.centers[i].name}\n        </option>\n      );\n    }\n\n    var loanProductOptions  = [\n      <option key={\"loan-product-select\"} value=\"\">\n        -- SELECT --\n      </option>\n    ]\n\n    for(var i = 0; i < this.state.loan_products.length; i++) {  \n      loanProductOptions.push(\n        <option key={\"loan-product-\" + i} value={this.state.loan_products[i].id}>\n          {this.state.loan_products[i].name}\n        </option>\n      );\n    }\n\n    var officerOptions  = [\n      <option key={\"loan-product-select\"} value=\"\">\n        -- SELECT --\n      </option>\n    ]\n\n    for(var i = 0; i < this.state.officers.length; i++) {\n      officerOptions.push(\n        <option key={\"loan-product-\" + i} value={this.state.officers[i].id}>\n          {this.state.officers[i].last_name}, {this.state.officers[i].first_name}\n        </option>\n      );\n    }\n\n    return  (\n      <div className=\"row\">\n        <div className=\"col-md-4 col-xs-12\">\n          <div className=\"form-group\">\n            <label>\n              Center:\n            </label>\n            <select \n              value={this.state.currentCenterId} \n              onChange={this.handleCenterChanged.bind(this)} \n              className=\"form-control\"\n            >\n              {centerOptions}\n            </select>\n          </div>\n        </div>\n        <div className=\"col-md-4 col-xs-12\">\n          <div className=\"form-group\">\n            <label>\n              Loan Product:\n            </label>\n            <select \n              value={this.state.currentLoanProductId} \n              onChange={this.handleLoanProductChanged.bind(this)} \n              className=\"form-control\"\n            >\n              {loanProductOptions}\n            </select>\n          </div>\n        </div>\n        <div className=\"col-md-4 col-xs-12\">\n          <div className=\"form-group\">\n            <label>\n              Officers\n            </label>\n            <select \n              value={this.state.currentOfficerId} \n              onChange={this.handleOfficerChanged.bind(this)} \n              className=\"form-control\"\n            >\n              {officerOptions}\n            </select>\n          </div>\n        </div>\n      </div>\n    );\n  }\n\n  render() {\n    if(this.state.isLoading) {\n      return  (\n        <SkCubeLoading/>\n      );\n    } else {\n      return  (\n        <div>\n          {this.renderFilter()}\n          <table className=\"table table-sm table-bordered table-hover\">\n            <thead>\n              <tr>\n                <th>\n                </th>\n                <th>\n                  Member\n                </th>\n                <th>\n                  Center\n                </th>\n                <th>\n                  Officer\n                </th>\n                <th>\n                  Loan Product\n                </th>\n\t\t<th className=\"text-end\">\n                  Past Due Amount - Principal\n                </th>\n \t\t<th className=\"text-end\">\n                  Past Due Amount - Interest\n                </th>\n \n\t\t<th className=\"text-end\">\n                  Past Due Amount - Total\n\t\t</th>\n\t\t<th className=\"text-end\">\n                  PAR 1 - 30 days\n                </th>\n \t\t<th className=\"text-end\">\n                  PAR 31 - 365 days\n\t\t</th>\n\t\t<th className=\"text-end\">\n                  PAR 365 days onwards\n                </th>\n \n \n              </tr>\n            </thead>\n            <tbody>\n              {this.renderDataRows()}\n            </tbody>\n          </table>\n        </div>\n      );\n    }\n  }\n}\n", "import React from 'react';\nimport $ from 'jquery';\nimport moment from 'moment';\nimport Select from 'react-select';\nimport Toggle from 'react-toggle';\nimport \"react-toggle/style.css\";\n\nimport SkCubeLoading from '../../SkCubeLoading';\nimport ErrorDisplay from '../../ErrorDisplay';\nimport {numberWithCommas} from '../../utils/helpers';\n\nexport default class ShowComponent extends React.Component {\n  constructor(props) {\n    super(props);\n\n    this.state  = {\n      isLoading: true,\n      data: false,\n      errors: false,\n      officers: [],\n      centers: [],\n      loanProducts: [],\n      currentOfficerId: \"\",\n      currentCenterId: \"\",\n      currentLoanProductId: \"\"\n    };\n  }\n\n  fetch(options) {\n    var context       = this;\n    var officerId     = options.officerId || \"\";\n    var centerId      = options.centerId || \"\";\n    var loanProductId = options.loanProductId || \"\";\n\n    var data  = {\n      id: this.props.id,\n      officer_id: officerId,\n      center_id: centerId,\n      loan_product_id: loanProductId\n    }\n\n    this.setState({\n      currentOfficerId: officerId,\n      currentCenterId: centerId,\n      currentLoanProductId: loanProductId,\n      isLoading: true\n    });\n\n    $.ajax({\n      url: \"/api/v1/data_stores/x_weeks_to_pay/fetch\",\n      data: data,\n      method: 'GET',\n      success: function(response) {\n        console.log(response);\n\n        context.setState({\n          isLoading: false,\n          data: response\n        });\n      },\n      error: function(response) {\n        console.log(response);\n        alert(\"Something went wrong when fetching data store\");\n      }\n    });\n  }\n\n  componentDidMount() {\n    var context = this;\n\n    $.ajax({\n      url: \"/api/v1/data_stores/x_weeks_to_pay/fetch\",\n      data: {\n        id: context.props.id\n      },\n      method: 'GET',\n      success: function(response) {\n        console.log(response);\n\n        // Setup officers, centers and loan_products\n        var officers          = [];\n        var centers           = [];\n        var loanProducts      = [];\n\n        if(response.data.records.length > 0) {\n          for(var i = 0; i < response.data.officers.length; i++) {\n            officers.push(\n              response.data.officers[i]\n            );\n          }\n\n          for(var i = 0; i < response.data.centers.length; i++) {\n            centers.push(\n              response.data.centers[i]\n            );\n          }\n\n          for(var i = 0; i < response.data.loan_products.length; i++) {\n            loanProducts.push(\n              response.data.loan_products[i]\n            );\n          }\n        }\n\n        context.setState({\n          isLoading: false,\n          data: response,\n          officers: officers,\n          centers: centers,\n          loanProducts: loanProducts\n        });\n      },\n      error: function(response) {\n        console.log(response);\n        alert(\"Something went wrong when fetching data store\");\n      }\n    });\n  }\n\n  renderErrorDisplay() {\n    if(this.state.errors) {\n      return  (\n        <ErrorDisplay\n          errors={this.state.errors}\n        />\n      );\n    }\n  }\n\n  handleOfficerChanged(event) {\n    this.fetch({\n      officerId: event.target.value\n    });\n  }\n\n  handleCenterChanged(event) {\n    this.fetch({\n      centerId: event.target.value,\n      loanProductId: this.state.currentLoanProductId\n    });\n  }\n\n  handleLoanProductChanged(event) {\n    this.fetch({\n      loanProductId: event.target.value,\n      centerId: this.state.currentCenterId\n    });\n  }\n\n  renderFilter() {\n    var officerOptions  = [\n      <option key={\"officer-select\"} value=\"\">\n        -- SELECT --\n      </option>\n    ];\n\n    var centerOptions   = [\n      <option key={\"center-select\"} value=\"\">\n        -- SELECT --\n      </option>\n    ];\n\n    var loanProductOptions  = [\n      <option key={\"loan-product-select\"} value=\"\">\n        -- SELECT --\n      </option>\n    ];\n\n    for(var i = 0; i < this.state.officers.length; i++) {\n      officerOptions.push(\n        <option key={\"officer-\" + i} value={this.state.officers[i].id}>\n          {this.state.officers[i].last_name + \", \" + this.state.officers[i].first_name}\n        </option>\n      );\n    }\n\n    for(var i = 0; i < this.state.centers.length; i++) {\n      centerOptions.push(\n        <option key={\"center-\" + i} value={this.state.centers[i].id}>\n          {this.state.centers[i].name}\n        </option>\n      );\n    }\n\n    for(var i = 0; i < this.state.loanProducts.length; i++) {\n      loanProductOptions.push(\n        <option key={\"loan-product-\" + i} value={this.state.loanProducts[i].id}>\n          {this.state.loanProducts[i].name}\n        </option>\n      );\n    }\n\n    return  (\n      <div className=\"row\">\n        <div className=\"col-md-4 col-xs-12\">\n          <div className=\"form-group\">\n            <label>\n              Center:\n            </label>\n            <select value={this.state.currentCenterId} onChange={this.handleCenterChanged.bind(this)} className=\"form-control\">\n              {centerOptions}\n            </select>\n          </div>\n        </div>\n        <div className=\"col-md-4 col-xs-12\">\n          <div className=\"form-group\">\n            <label>\n              Loan Product:\n            </label>\n            <select value={this.state.currentLoanProductId} onChange={this.handleLoanProductChanged.bind(this)} className=\"form-control\">\n              {loanProductOptions}\n            </select>\n          </div>\n        </div>\n        <div className=\"col-md-4 col-xs-12\">\n          <div className=\"form-group\">\n            <label>\n              Officers:\n            </label>\n            <select value={this.state.currentOfficerId} onChange={this.handleOfficerChanged.bind(this)} className=\"form-control\">\n              {officerOptions}\n            </select>\n          </div>\n        </div>\n      </div>\n    );\n  }\n\n  renderDataRows() {\n    var rows    = [];\n    var records = this.state.data.data.records;\n    var counter = 0;\n\n    var totalLoanAmount       = 0.00;\n    var totalPrincipalBalance = 0.00;\n    var totalInterestBalance  = 0.00;\n    var totalBalance          = 0.00;\n\n    for(var i = 0; i < records.length; i++) {\n      if(parseFloat(records[i].overall_balance) > 0) {\n        counter++;\n\n        totalLoanAmount       += parseFloat(records[i].principal);\n        totalPrincipalBalance += parseFloat(records[i].overall_principal_balance);\n        totalInterestBalance  += parseFloat(records[i].overall_interest_balance);\n        totalBalance          += parseFloat(records[i].overall_balance);\n\n        rows.push(\n          <tr key={\"loan-record-\" + records[i].id}>\n            <td className=\"text-center\">\n              {counter}\n            </td>\n            <td>\n              <strong>\n                <a href={\"/loans/\" + records[i].id} target=\"_blank\">\n                  {records[i].member.last_name}, {records[i].member.first_name} {records[i].member.middle_name}\n                </a>\n              </strong>\n            </td>\n            <td className=\"text-muted\">\n              {records[i].center.name}\n            </td>\n            <td className=\"\">\n              <strong>\n                {records[i].loan_product.name}\n              </strong>\n            </td>\n            <td className=\"text-end\">\n              {numberWithCommas(records[i].principal)}\n            </td>\n            <td className=\"text-end\">\n              {numberWithCommas(records[i].overall_principal_balance)}\n            </td>\n            <td className=\"text-end\">\n              {numberWithCommas(records[i].overall_interest_balance)}\n            </td>\n            <td className=\"text-end\">\n              {numberWithCommas(records[i].overall_balance)}\n            </td>\n            <td>\n              {records[i].maturity_date}\n            </td>\n          </tr>\n        );\n      }\n    }\n\n    rows.push(\n      <tr key={\"grand-total\"}>\n        <td colSpan=\"4\"/>\n        <td className=\"text-end\">\n          <strong>\n            {numberWithCommas(totalLoanAmount)}\n          </strong>\n        </td>\n        <td className=\"text-end\">\n          <strong>\n            {numberWithCommas(totalPrincipalBalance)}\n          </strong>\n        </td>\n        <td className=\"text-end\">\n          <strong>\n            {numberWithCommas(totalInterestBalance)}\n          </strong>\n        </td>\n        <td className=\"text-end\">\n          <strong>\n            {numberWithCommas(totalBalance)}\n          </strong>\n        </td>\n        <td/>\n      </tr>\n    );\n\n    return rows;\n  }\n\n  renderDisplay() {\n    return  (\n      <div>\n        <table className=\"table table-sm table-bordered table-hover\" style={{fontSize: \"0.8em\"}}>\n          <thead>\n            <tr>\n              <th className=\"text-center\">\n              </th>\n              <th>\n                Member\n              </th>\n              <th>\n                Center\n              </th>\n              <th>\n                Product\n              </th>\n              <th className=\"text-end\">\n                Loan Amount\n              </th>\n              <th className=\"text-end\">\n                Principal Balance\n              </th>\n              <th className=\"text-end\">\n                Interest Balance\n              </th>\n              <th className=\"text-end\">\n                Total Balance\n              </th>\n              <th className=\"\">\n                Maturity Date\n              </th>\n            </tr>\n          </thead>\n          <tbody>\n            {this.renderDataRows()}\n          </tbody>\n        </table>\n      </div>\n    );\n  }\n\n  render() {\n    if(this.state.isLoading) {\n      return  (\n        <SkCubeLoading/>\n      );\n    } else {\n      return  (\n        <div>\n          {this.renderFilter()}\n          {this.renderDisplay()}\n        </div>\n      );\n    }\n  }\n}\n", "import React from 'react';\nimport $ from 'jquery';\n\nimport SkCubeLoading from '../../SkCubeLoading';\nimport ErrorDisplay from '../../ErrorDisplay';\n\nimport Modal from 'react-modal';\n\nimport ResignationDisplay from './ResignationDisplay';\n\nconst customStyles  = {\n  content : {\n    top: '50%',\n    left: '50%',\n    right: 'auto',\n    bottom: 'auto',\n    marginRight: '-50%',\n    transform: 'translate(-50%, -50%)'\n  }\n}\n\nexport default class ShowComponent extends React.Component {\n  constructor(props) {\n    super(props);\n\n    this.state  = {\n      modalIsOpen: false,\n      members: [],\n      isLoading: true,\n      data: false,\n      meta: false,\n      errors: false\n    };\n  }\n\n  componentDidMount() {\n    var context = this;\n\n    var data  = {\n      id: this.props.id\n    }\n\n    $.ajax({\n      url: \"/api/v1/data_stores/branch_resignations/fetch\",\n      data: data,\n      method: 'GET',\n      success: function(response) {\n        context.setState({\n          isLoading: false,\n          data: response.data,\n          meta: response.meta\n        });\n      },\n      error: function(response) {\n        alert(\"Something went wrong when fetching data store\");\n      }\n    });\n  }\n\n  handleCloseClicked() {\n    this.setState({\n      modalIsOpen: false,\n      members: []\n    });\n  }\n\n  handleDetailsClicked(members) {\n    console.log(members);\n    this.setState({\n      modalIsOpen: true,\n      members: members\n    });\n  }\n\n  renderErrorDisplay() {\n    if(this.state.errors) {\n      return  (\n        <ErrorDisplay\n          errors={this.state.errors}\n        />\n      );\n    }\n  }\n\n  renderMembers() {\n    var members = this.state.members;\n    var rows    = [];\n\n    for(var i = 0; i < members.length; i++) {\n      rows.push(\n        <tr key={\"member-\" + members[i].id}>\n          <td>\n            {i + 1}\n          </td>\n          <td>\n            <a href={\"/members/\" + members[i].id + \"/display\"}>\n              {members[i].identification_number}\n            </a>\n          </td>\n          <td>\n            <a href={\"/members/\" + members[i].id + \"/display\"}>\n              {members[i].last_name}, {members[i].first_name}\n            </a>\n          </td>\n        </tr>\n      );\n    }\n\n    if(members.length > 0) {\n      return (\n        <div style={{ overflowY: \"scroll\", maxHeight: \"500px\" }}>\n          <table className=\"table table-sm table-bordered\">\n            <thead>\n              <tr>\n                <th>\n                </th>\n                <th>\n                  Identification Number\n                </th>\n                <th>\n                  Member\n                </th>\n              </tr>\n            </thead>\n            <tbody>\n              {rows}\n            </tbody>\n          </table>\n        </div>\n      );\n    } else {\n      return (\n        <p>\n          No members found.\n        </p>\n      );\n    }\n  }\n\n  renderRecords() {\n    var data    = this.state.data;\n    var records = [];\n\n    for(var i = 0; i < data.records.length; i++) {\n      records.push(\n        <ResignationDisplay \n          index={i}\n          key={\"category-\" + i}\n          data={data.records[i]}\n          handleDetailsClicked={this.handleDetailsClicked.bind(this)}\n        />\n      );\n    }\n\n    return records;\n  };\n\n  render() {\n    if(this.state.isLoading) {\n      return  (\n        <SkCubeLoading/>\n      );\n    } else {\n      return  (\n        <div>\n          <Modal \n            isOpen={this.state.modalIsOpen}\n            style={customStyles}\n          >\n            <div className=\"container-fluid\">\n              <div className=\"row\">\n                <div className=\"col\">\n                  <h5>\n                    Members\n                  </h5>\n                  {this.renderMembers()}\n                  <hr/>\n                  <button\n                    onClick={this.handleCloseClicked.bind(this)}\n                    className=\"btn btn-danger\"\n                  >\n                    Close\n                  </button>\n                </div>\n              </div>\n            </div>\n          </Modal>\n          <h2>\n            {this.state.meta.branch_name} Resignations \n          </h2>\n          <small className=\"text-muted\">\n            {this.state.meta.start_date} to {this.state.meta.end_date}\n          </small>\n          {this.renderRecords()}\n        </div>\n      );\n    }\n  }\n}\n", "import React from 'react';\n\nexport default class ResignationDisplay extends React.Component {\n  constructor(props) {\n    super(props);\n\n    this.state = {\n    };\n  }\n\n  handleDetailsClicked(members) {\n    this.props.handleDetailsClicked(members);\n  }\n\n  render() {\n    var data  = this.props.data;\n\n    var rowCounts = [];\n    var total     = 0;\n\n    for(var i = 0; i < data.particulars.length; i++) {\n      total += data.particulars[i].records.length;\n\n      rowCounts.push(\n        <tr key={this.props.index + \"-particular-\" + i}>\n          <td>\n            {data.particulars[i].code}: {data.particulars[i].name}\n          </td>\n          <td className=\"text-center\">\n            {data.particulars[i].records.length}\n          </td>\n          <td className=\"text-center\">\n            <button\n              className=\"btn btn-sm btn-info\"\n              onClick={this.handleDetailsClicked.bind(this, data.particulars[i].records)}\n            >\n              Details\n            </button>\n          </td>\n        </tr>\n      );\n    }\n\n    return (\n      <div>\n        <h4>\n          {data.name} ({total})\n        </h4>\n        <table className=\"table table-sm table-bordered\">\n          <thead>\n            <tr>\n              <th width=\"50%\">\n                Particular\n              </th>\n              <th className=\"text-center\" width=\"25%\">\n                Count\n              </th>\n              <th className=\"text-center\" width=\"25%\">\n                Actions\n              </th>\n            </tr>\n          </thead>\n          <tbody>\n            {rowCounts}\n          </tbody>\n        </table>\n      </div>\n    );\n  }\n}\n", "import React from 'react';\nimport $ from 'jquery';\nimport moment from 'moment';\n\nimport SkCubeLoading from '../SkCubeLoading';\nimport {numberWithCommas} from '../utils/helpers';\n\nexport default class AccountingEntrySubsidiaryBalancingComponent extends React.Component {\n  constructor(props) {\n    super(props);\n\n    this.state  = {\n      isLoading: false,\n      data: false,\n      branches: props.branches,\n      currentBranchId: \"\",\n      asOf: props.asOf\n    };\n  }\n\n  componentDidMount() {\n    if(this.state.branches.length > 0) {\n      this.setState({\n        currentBranchId: this.state.branches[0].id\n      });\n    }\n  }\n\n  handleBranchChanged(event) {\n    this.setState({\n      currentBranchId: event.target.value\n    });\n  }\n\n  handleAsOfChanged(event) {\n    this.setState({\n      asOf: event.target.value\n    });\n  }\n\n  handleGenerateClicked() {\n    var context = this;\n\n    var params  = {\n      branch_id: this.state.currentBranchId,\n      as_of: this.state.asOf\n    }\n\n    this.setState({\n      isLoading: true,\n      data: false\n    });\n\n    $.ajax({\n      url: \"/api/v1/monitoring/accounting_entry_subsidiary_balancing\",\n      data: params,\n      method: 'GET',\n      success: function(response) {\n        context.setState({\n          isLoading: false,\n          data: response\n        });\n      },\n      error: function(response) {\n        alert(\"Error in fetching monitoring report...\");\n        context.setState({\n          isLoading: false,\n          data: false\n        });\n      }\n    });\n  }\n\n  renderLoansReceivables() {\n    var records = this.state.data.loans_receivables;\n    var rows    = [];\n\n    for(var i = 0; i < records.length; i++) {\n      rows.push(\n        <tr key={\"receivable-row-\" + i}>\n          <td>\n            <strong>\n              {records[i].accounting_code.name}\n            </strong>\n          </td>\n          <td className=\"text-end\">\n            {numberWithCommas(records[i].accounting_entry_balance)}\n          </td>\n          <td className=\"text-end\">\n            {numberWithCommas(records[i].subsidiary_balance)}\n          </td>\n          <td className=\"text-end\">\n            {numberWithCommas(records[i].diff)}\n          </td>\n        </tr>\n      );\n    }\n\n    return rows;\n  }\n\n  renderPersonalFunds() {\n    var records = this.state.data.personal_funds;\n    var rows    = [];\n\n    for(var i = 0; i < records.length; i++) {\n      rows.push(\n        <tr key={\"presonal-funds-row-\" + i}>\n          <td>\n            <strong>\n              {records[i].accounting_code.name}\n            </strong>\n          </td>\n          <td className=\"text-end\">\n            {numberWithCommas(records[i].accounting_entry_balance)}\n          </td>\n          <td className=\"text-end\">\n            {numberWithCommas(records[i].subsidiary_balance)}\n          </td>\n          <td className=\"text-end\">\n            {numberWithCommas(records[i].diff)}\n          </td>\n        </tr>\n      );\n    }\n\n    return rows;\n  }\n\n  renderResult() {\n    if(this.state.isLoading) {\n      return  (\n        <SkCubeLoading/>\n      );\n    } else if(this.state.data) {\n      return  (\n        <div>\n          <h5>\n            Loans Receivable\n          </h5>\n          <table className=\"table table-bordered table-hover table-sm\">\n            <thead>\n              <tr>\n                <th>\n                  Loan Product\n                </th>\n                <th className=\"text-end\">\n                  Trial Balance\n                </th>\n                <th className=\"text-end\">\n                  Subsidiary Ledger\n                </th>\n                <th className=\"text-end\">\n                  DIFF\n                </th>\n              </tr>\n            </thead>\n            <tbody>\n              {this.renderLoansReceivables()}\n            </tbody>\n          </table>\n          <h5>\n            Personal Funds\n          </h5>\n          <table className=\"table table-bordered table-hover table-sm\">\n            <thead>\n              <tr>\n                <th>\n                  Account\n                </th>\n                <th className=\"text-end\">\n                  General Ledger\n                </th>\n                <th className=\"text-end\">\n                  Personal Funds\n                </th>\n                <th className=\"text-end\">\n                  DIFF\n                </th>\n              </tr>\n            </thead>\n            <tbody>\n              {this.renderPersonalFunds()}\n            </tbody>\n          </table>\n        </div>\n      );\n    } else {\n      return  (\n        <p>\n          No data found.\n        </p>\n      );\n    }\n  }\n\n  renderBranchOptions() {\n    var options   = [];\n    var branches  = this.state.branches;\n\n    for(var i = 0; i < branches.length; i++) {\n      options.push(\n        <option value={branches[i].id} key={\"branch-\" + i}>\n          {branches[i].name}\n        </option>\n      );\n    }\n\n    return options;\n  }\n\n  renderFilter() {\n    return  (\n      <div className=\"row\">\n        <div className=\"col-md-8\">\n          <div className=\"form-group\">\n            <label>\n              <strong>\n                Branch:\n              </strong>\n            </label>\n            <select\n              value={this.state.currentBranchId}\n              className=\"form-control\"\n              onChange={this.handleBranchChanged.bind(this)}\n              disabled={this.state.isLoading}\n            >\n              {this.renderBranchOptions()}\n            </select>\n          </div>\n        </div>\n        <div className=\"col-md-2\">\n          <div className=\"form-group\">\n            <label>\n              <strong>\n                As Of:\n              </strong>\n            </label>\n            <input\n              type=\"date\"\n              className=\"form-control\"\n              onChange={this.handleAsOfChanged.bind(this)}\n              value={this.state.asOf}\n              disabled={this.state.isLoading}\n            />\n          </div>\n        </div>\n        <div className=\"col-md-2\">\n          <div className=\"form-group\">\n            <label>\n              <strong>\n                Actions:\n              </strong>\n            </label>\n            <button\n              className=\"btn btn-info btn-block\"\n              onClick={this.handleGenerateClicked.bind(this)}\n              disabled={this.state.isLoading}\n            >\n              <span className=\"fa fa-sync\"/>\n              Generate\n            </button>\n          </div>\n        </div>\n      </div>\n    );\n  }\n\n  render() {\n    return  (\n      <div>\n        {this.renderFilter()}\n        <hr/>\n        {this.renderResult()}\n      </div>\n    );\n  }\n}\n", "import React from 'react';\nimport $ from 'jquery';\nimport moment from 'moment';\n\nimport SkCubeLoading from '../SkCubeLoading';\nimport {numberWithCommas} from '../utils/helpers';\n\nexport default class AccountingEntryPrecisionComponent extends React.Component {\n  constructor(props) {\n    super(props);\n\n    this.state  = {\n      isLoading: false,\n      data: false,\n      branches: props.branches,\n      currentBranchId: \"\",\n      startDate: \"\",\n      endDate: \"\"\n    };\n  }\n\n  componentDidMount() {\n    if(this.state.branches.length > 0) {\n      this.setState({\n        currentBranchId: this.state.branches[0].id\n      });\n    }\n  }\n\n  handleBranchChanged(event) {\n    this.setState({\n      currentBranchId: event.target.value\n    });\n  }\n\n  handleStartDateChanged(event) {\n    this.setState({\n      startDate: event.target.value\n    });\n  }\n\n  handleEndDateChanged(event) {\n    this.setState({\n      endDate: event.target.value\n    });\n  }\n\n  handleGenerateClicked() {\n    var context = this;\n\n    var params  = {\n      branch_id: this.state.currentBranchId,\n      start_date: this.state.startDate,\n      end_date: this.state.endDate\n    }\n\n    this.setState({\n      isLoading: true,\n      data: false\n    });\n\n    $.ajax({\n      url: \"/api/v1/monitoring/accounting_entry_precision\",\n      data: params,\n      method: 'GET',\n      success: function(response) {\n        context.setState({\n          isLoading: false,\n          data: response\n        });\n      },\n      error: function(response) {\n        alert(\"Error in fetching monitoring report...\");\n        context.setState({\n          isLoading: false,\n          data: false\n        });\n      }\n    });\n  }\n\n  renderRows() {\n    var rows            = [];\n    var journalEntries  = this.state.data.journal_entries;\n\n    for(var i = 0; i < journalEntries.length; i++) {\n      rows.push(\n        <tr key={\"je-\" + i}>\n          <td>\n            <strong>\n              <a href={\"/accounting/accounting_entries/\" + journalEntries[i].accounting_entry.id}>\n                {journalEntries[i].accounting_code.code} - {journalEntries[i].accounting_code.name}\n              </a>\n            </strong>\n          </td>\n          <td>\n            {journalEntries[i].accounting_entry.particular}\n          </td>\n          <td>\n            {journalEntries[i].accounting_entry.date_posted}\n          </td>\n          <td className=\"text-end\">\n            {journalEntries[i].amount}\n          </td>\n        </tr>\n      );\n    }\n\n    return rows;\n  }\n\n  renderResult() {\n    if(this.state.isLoading) {\n      return  (\n        <SkCubeLoading/>\n      );\n    } else if(this.state.data) {\n      if(this.state.data.journal_entries.length > 0) {\n        return  (\n          <div>\n            <h5>\n              Journal Entries (this.state.data.journal_entries.length)\n            </h5>\n            <table className=\"table table-bordered table-hover table-sm\">\n              <thead>\n                <tr>\n                  <th>\n                    Accounting Entry\n                  </th>\n                  <th>\n                    Particular\n                  </th>\n                  <th>\n                    Date Posted\n                  </th>\n                  <th className=\"text-end\">\n                    Amount\n                  </th>\n                </tr>\n              </thead>\n              <tbody>\n                {this.renderRows()}\n              </tbody>\n            </table>\n          </div>\n        );\n      } else {\n        return  (\n          <p>\n            No records found. All ok.\n          </p>\n        );\n      }\n    } else {\n      return  (\n        <p>\n          No data found.\n        </p>\n      );\n    }\n  }\n\n  renderBranchOptions() {\n    var options   = [];\n    var branches  = this.state.branches;\n\n    for(var i = 0; i < branches.length; i++) {\n      options.push(\n        <option value={branches[i].id} key={\"branch-\" + i}>\n          {branches[i].name}\n        </option>\n      );\n    }\n\n    return options;\n  }\n\n  renderFilter() {\n    return  (\n      <div className=\"row\">\n        <div className=\"col-md-6\">\n          <div className=\"form-group\">\n            <label>\n              <strong>\n                Branch:\n              </strong>\n            </label>\n            <select\n              value={this.state.currentBranchId}\n              className=\"form-control\"\n              onChange={this.handleBranchChanged.bind(this)}\n              disabled={this.state.isLoading}\n            >\n              {this.renderBranchOptions()}\n            </select>\n          </div>\n        </div>\n        <div className=\"col-md-2\">\n          <div className=\"form-group\">\n            <label>\n              Start Date\n            </label>\n            <input\n              type=\"date\"\n              value={this.state.start_date}\n              onChange={this.handleStartDateChanged.bind(this)}\n              className=\"form-control\"\n              disabled={this.state.isLoading}\n            />\n          </div>\n        </div>\n        <div className=\"col-md-2\">\n          <div className=\"form-group\">\n            <label>\n              End Date\n            </label>\n            <input\n              type=\"date\"\n              value={this.state.end_date}\n              onChange={this.handleEndDateChanged.bind(this)}\n              className=\"form-control\"\n              disabled={this.state.isLoading}\n            />\n          </div>\n        </div>\n        <div className=\"col-md-2\">\n          <div className=\"form-group\">\n            <label>\n              <strong>\n                Actions:\n              </strong>\n            </label>\n            <button\n              className=\"btn btn-info btn-block\"\n              onClick={this.handleGenerateClicked.bind(this)}\n              disabled={this.state.isLoading}\n            >\n              <span className=\"fa fa-sync\"/>\n              Generate\n            </button>\n          </div>\n        </div>\n      </div>\n    );\n  }\n\n  render() {\n    return  (\n      <div>\n        {this.renderFilter()}\n        <hr/>\n        {this.renderResult()}\n      </div>\n    );\n  }\n}\n", "import React from \"react\";\nimport $ from 'jquery';\n\nimport AccountingEntryPreview from '../accounting/AccountingEntryPreview';\nimport moment from 'moment';\n\nimport SkCubeLoading from '../SkCubeLoading';\nimport ErrorDisplay from '../ErrorDisplay';\nimport {numberWithCommas} from '../utils/helpers';\nimport {customStyles} from '../utils/consts';\nimport Modal from 'react-modal';\n\nexport default class FormResignationComponent extends React.Component {\n  constructor(props) {\n    super(props);\n\n    this.state  = {\n      data: false,\n      isLoading: true,\n      isProcessing: false,\n      isModalOpen: false,\n      errors: false,\n      errorsProcessing: false\n    };\n  }\n\n  componentDidMount() {\n    var id      = this.props.id;\n    var context = this;\n\n    $.ajax({\n      url: \"/api/v1/members/fetch_resignation_details\",\n      data: {\n        id: id\n      },\n      success: function(response) {\n        context.setState({\n          isLoading: false,\n          data: response\n        });\n      },\n      error: function(response) {\n        console.log(response);\n        try {\n          context.setState({\n            errors: JSON.parse(response.responseText),\n            errorsProcessing: true,\n            isLoading: false\n          });\n        } catch(err) {\n          alert(\"Something went wrong\");\n          context.setState({\n            errors: false,\n            data: false,\n            isLoading: true\n          });\n        }\n      }\n    });\n  }\n\n  handleDateResignedChanged(event) {\n    var data            = this.state.data;\n    data.date_resigned  = event.target.value;\n\n    this.setState({\n      data: data\n    });\n  }\n\n  handleParticularChanged(event) {\n    var data        = this.state.data;\n    data.particular = event.target.value;\n\n    data.accounting_entry.particular  = event.target.value;\n\n    this.setState({\n      data: data\n    });\n  }\n\n  renderErrorDisplay() {\n    if(this.state.errors) {\n      return  (\n        <ErrorDisplay\n          errors={this.state.errors}\n        />\n      );\n    }\n  }\n\n  renderErrorProcessingDisplay() {\n    if(this.state.errorsProcessing) {\n      return  (\n        <ErrorDisplay\n          errors={this.state.errorsProcessing}\n        />\n      );\n    }\n  }\n\n  renderEquityAccounts() {\n    var equityAccounts  = this.state.data.equity_accounts;\n    var display = [];\n\n    for(var i = 0; i < equityAccounts.length; i++) {\n      display.push(\n        <tr key={\"equity-account-\" + equityAccounts[i].id}>\n          <th>\n            {equityAccounts[i].account_subtype}\n          </th>\n          <td>\n            {numberWithCommas(equityAccounts[i].balance)}\n          </td>\n        </tr>\n      );\n    }\n\n    return display;\n  }\n\n  handleResignationTypeChanged(event) {\n    var data                          = this.state.data;\n    data.member_resignation_type.name = event.target.value;\n\n    var memberResignationTypes  = this.props.memberResignationTypes;\n\n    var code  = data.member_resignation_type.particular.code;\n    var name  = data.member_resignation_type.particular.name;\n\n    for(var i = 0; i < memberResignationTypes.length; i++) {\n      if(data.member_resignation_type.name == memberResignationTypes[i].name) {\n        code  = memberResignationTypes[i].particulars[0].code;\n        name  = memberResignationTypes[i].particulars[0].name;\n      }\n    }\n\n    data.member_resignation_type.particular.code  = code;\n    data.member_resignation_type.particular.name  = name;\n\n    this.setState({\n      data: data \n    });\n  }\n\n  handleResignationCodeChanged(event) {\n    var data  = this.state.data;\n    var code  = event.target.value;\n    var name  = \"\";\n\n    var memberResignationTypes  = this.props.memberResignationTypes;\n\n    for(var i = 0; i < memberResignationTypes.length; i++) {\n      if(data.member_resignation_type.name == memberResignationTypes[i].name) {\n        for(var j = 0; j < memberResignationTypes[i].particulars.length; j++) {\n          if(code == memberResignationTypes[i].particulars[j].code) {\n            name  = memberResignationTypes[i].particulars[j].name;\n          }\n        }\n      }\n    }\n\n    data.member_resignation_type.particular.code  = code;\n    data.member_resignation_type.particular.name  = name;\n\n    this.setState({\n      data: data\n    });\n  }\n\n  handleRemoveClicked() {\n  }\n\n  handleJournalEntryEdit() {\n  }\n\n  renderAccountingEntry() {\n    var accountingEntry = this.state.data.accounting_entry;\n    var datePrepared    = moment(accountingEntry.date_prepared).format(\"YYYY-MM-DD\");\n\n    return  (\n      <AccountingEntryPreview\n        book={accountingEntry.book}\n        particular={accountingEntry.particular}\n        datePrepared={datePrepared}\n        branch={accountingEntry.branch_name}\n        balanced={true}\n        status={accountingEntry.status}\n        journalEntries={accountingEntry.journal_entries}\n        isLoading={this.state.isLoading}\n        handleRemoveClicked={this.handleRemoveClicked.bind(this)}\n        handleJournalEntryEdit={this.handleJournalEntryEdit.bind(this)}\n        data={accountingEntry.data}\n      />\n    );\n  }\n\n  renderResignationTypes() {\n    var memberResignationTypes  = this.props.memberResignationTypes;\n    var display                 = [];\n\n    for(var i = 0; i < memberResignationTypes.length; i++) {\n      display.push(\n        <option key={\"resignation-type-\" + i} value={memberResignationTypes[i].name}>\n          {memberResignationTypes[i].name}\n        </option>\n      );\n    }\n\n    return display;\n  }\n\n  renderResignationCodes() {\n    var resignationType         = this.state.data.member_resignation_type.name;\n    var memberResignationTypes  = this.props.memberResignationTypes;\n    var display                 = [];\n\n    for(var i = 0; i < memberResignationTypes.length; i++) {\n      if(resignationType == memberResignationTypes[i].name) {\n        for(var j = 0; j < memberResignationTypes[i].particulars.length; j++) {\n          display.push(\n            <option key={\"resignation-code-\" + i + \"-\" + j} value={memberResignationTypes[i].particulars[j].code}>\n              {memberResignationTypes[i].particulars[j].code} - {memberResignationTypes[i].particulars[j].name}\n            </option>\n          );\n        }\n      }\n    }\n\n    return display;\n  }\n\n  handleResignBtnClicked() {\n    this.setState({\n      isModalOpen: true\n    });\n  }\n\n  handleCancelClicked() {\n    this.setState({\n      isModalOpen: false\n    });\n  }\n\n  handleConfirmationClicked() {\n    var authenticityToken = this.props.authenticityToken;\n    var data              = this.state.data;\n    var context           = this;\n\n    this.setState({\n      isProcessing: true\n    });\n\n    console.log(data);\n\n    $.ajax({\n      url: \"/api/v1/members/process_resignation\",\n      method: 'POST',\n      data: {\n        data: JSON.stringify(data),\n        authenticity_token: authenticityToken\n      },\n      success: function(response) {\n        window.location.href = \"/members/\" + context.props.id + \"/display\";\n      },\n      error: function(response) {\n        console.log(response);\n        try {\n          context.setState({\n            errorsProcessing: JSON.parse(response.responseText),\n            isProcessing: false,\n            errors: true\n          });\n        } catch(err) {\n          alert(\"Something went wrong\");\n          context.setState({\n            errors: false,\n            errorsProcessing: false,\n            isModalOpen: false,\n            data: false,\n            isLoading: true\n          });\n        }\n      }\n    });\n  }\n\n  renderProcessing() {\n    if(this.state.isProcessing) {\n      return  (\n        <div>\n          <SkCubeLoading/>\n          <center>\n            <p>\n              Resigning member. Please wait...\n            </p>\n          </center>\n        </div>\n      );\n    } else {\n      return  (\n        <div></div>\n      );\n    }\n  }\n\n  renderConfirmationModal() {\n    return (\n      <Modal\n        isOpen={this.state.isModalOpen}\n        style={customStyles}\n      >\n        <div className=\"container\">\n          <div className=\"row\">\n            <div className=\"col\">\n              <p>\n                Are you sure you want to resign this member?\n              </p>\n              <hr/>\n              {this.renderProcessing()}\n              {this.renderErrorProcessingDisplay()}\n              <center>\n                <div className=\"btn-group\">\n                  <button\n                    className=\"btn btn-info\"\n                    onClick={this.handleConfirmationClicked.bind(this)}\n                    disabled={this.state.isProcessing}\n                  >\n                    <span className=\"bi bi-check\"/>\n                    Confirm Resignation\n                  </button>\n                  <button\n                    className=\"btn btn-danger\"\n                    onClick={this.handleCancelClicked.bind(this)}\n                    disabled={this.state.isProcessing}\n                  >\n                    <span className=\"bi bi-x\"/>\n                    Cancel\n                  </button>\n                </div>\n              </center>\n            </div>\n          </div>\n        </div>\n      </Modal>\n    );\n  }\n\n  render() {\n    console.log(this.state);\n    if(this.state.isLoading) {\n      return  (\n        <div>\n          <SkCubeLoading/>\n        </div>\n      );\n    } else if(!this.state.isLoading && !this.state.errorsProcessing) {\n      console.log(this.state.data);\n      var member  = this.state.data.member;\n      var branch  = this.state.data.branch;\n      var center  = this.state.data.center;\n      \n      var memberResignationType = this.state.data.member_resignation_type;\n\n      return  (\n        <div>\n          <h5>\n            Member Details\n          </h5>\n          <table className=\"table table-bordered table-sm table-hover\">\n            <tbody>\n              <tr>\n                <th width=\"25%\">\n                  Member:\n                </th>\n                <td>\n                  {member.last_name}, {member.first_name} {member.middle_name}\n                </td>\n              </tr>\n              <tr>\n                <th>\n                  Branch / Center:\n                </th>\n                <td>\n                  {branch.name} / {center.name}\n                </td>\n              </tr>\n              {this.renderEquityAccounts()}\n              <tr>\n                <th>\n                  Date Resigned:\n                </th>\n                <td>\n                  <input \n                    type=\"date\" \n                    className=\"form-control\" \n                    value={this.state.data.date_resigned}\n                    onChange={this.handleDateResignedChanged.bind(this)}\n                  />\n                </td>\n              </tr>\n              <tr>\n                <th>\n                  Particular:\n                </th>\n                <td>\n                  <input\n                    className=\"form-control\"\n                    value={this.state.data.particular}\n                    onChange={this.handleParticularChanged.bind(this)}\n                  />\n                </td>\n              </tr>\n              <tr>\n                <th>\n                  Resignation Type:\n                </th>\n                <td>\n                  <div className=\"row\">\n                    <div className=\"col\">\n                      <select \n                        onChange={this.handleResignationTypeChanged.bind(this)} \n                        className=\"form-control\"\n                        value={memberResignationType.name}\n                      >\n                        {this.renderResignationTypes()}\n                      </select>\n                    </div>\n                    <div className=\"col\">\n                      <select \n                        onChange={this.handleResignationCodeChanged.bind(this)} \n                        className=\"form-control\"\n                        value={memberResignationType.particular.code}\n                      >\n                        {this.renderResignationCodes()}\n                      </select>\n                    </div>\n                  </div>\n                </td>\n              </tr>\n              <tr>\n                <th>\n                  Reason:\n                </th>\n                <td>\n                  {memberResignationType.particular.name}\n                </td>\n              </tr>\n            </tbody>\n          </table>\n          <hr/>\n          <h5>\n            Accounting Entry\n          </h5>\n          {this.renderAccountingEntry()}\n          {this.renderConfirmationModal()}\n          <hr/>\n          <div className=\"callout callout-danger\">\n            <h6>\n              Make sure to review all details before resigning member.\n            </h6>\n            <button\n              className=\"btn btn-danger btn-lg\"\n              onClick={this.handleResignBtnClicked.bind(this)}\n            >\n              <span className=\"bi bi-x\"/>\n              Resign Member\n            </button>\n          </div>\n        </div>\n      );\n    } else {\n      return  (\n        <div>\n          {this.renderErrorDisplay()} \n        </div>\n      );\n    }\n  }\n}\n", "import React from 'react';\nimport $ from 'jquery';\nimport moment from 'moment';\n\nimport SkCubeLoading from '../SkCubeLoading';\nimport EquityWithdrawalCollectionUITable from './EquityWithdrawalCollectionUITable';\nimport AccountingEntryPreview from '../accounting/AccountingEntryPreview';\nimport AddRecord from './AddRecord';\nimport {numberWithCommas} from '../utils/helpers';\n\nexport default class EquityWithdrawalCollectionUIComponent extends React.Component {\n  constructor(props) {\n    super(props);\n\n    this.state  = {\n      isLoading: true,\n      isSaving: false,\n      data: false\n    };\n  }\n\n  componentDidMount() {\n    this.fetchEquityWithdrawalCollectionData();\n  }\n\n  fetchEquityWithdrawalCollectionData() {\n    var context = this;\n\n    $.ajax({\n      url: \"/api/v1/equity_withdrawal_collections/fetch\",\n      method: 'GET',\n      data: {\n        id: this.props.id\n      },\n      success: function(response) {\n        context.setState({\n          isLoading: false,\n          data: response\n        });\n      },\n      error: function(response) {\n        console.log(response);\n        alert(\"Error in fetching equity withdrawal_collection\");\n      }\n    });\n  }\n\n  updateData(data) {\n    this.setState({\n      data: data\n    });\n  }\n\n  handleRemoveClicked(index) {\n    alert(\"Not implemented for this module\");\n  }\n\n  saveParticular() {\n    var context       = this;\n    var data          = context.state.data;\n    var newParticular = data.data.particular;\n\n    context.setState({\n      isSaving: true\n    });\n\n    $.ajax({\n      url: \"/api/v1/equity_withdrawal_collections/update_particular\",\n      method: 'POST',\n      data: {\n        id: context.state.data.id,\n        authenticity_token: context.props.authenticityToken,\n        particular: newParticular\n      },\n      success: function(response) {\n        context.setState({\n          isSaving: false\n        });\n      },\n      error: function(response) {\n        alert(\"Error in updating particular\");\n      }\n    });\n  }\n\n  modifyParticular(event) {\n    var context       = this;\n    var newParticular = event.target.value;\n    var data          = context.state.data;\n\n    data.data.particular = newParticular;\n\n    context.setState({\n      data: data\n    });\n  }\n\n  renderParticular() {\n    var particular  = this.state.data.data.particular;\n\n    if(this.state.data.status == \"pending\") {\n      return  (\n        <div className=\"row\">\n          <div className=\"col-md-10\">\n            <input \n              value={particular} \n              onChange={this.modifyParticular.bind(this)} \n              disabled={this.state.isSaving}\n              className=\"form-control\"\n            />\n          </div>\n          <div className=\"col-md-2\">\n            <button\n              className=\"btn btn-info btn-block\"\n              disabled={this.state.isSaving}\n              onClick={this.saveParticular.bind(this)}\n            >\n              <span className=\"bi bi-check\"/>\n              Save\n            </button>\n          </div>\n        </div>\n      );\n    } else {\n      return particular;\n    }\n  }\n\n  render() {\n    if(this.state.isLoading) {\n      return (\n        <div>\n          <SkCubeLoading/>\n        </div>\n      );\n    } else {\n\n      return (\n        <div>\n          <table className=\"table table-sm table-bordered\">\n            <tbody>\n              <tr>\n                <th>\n                  Total Collected:\n                </th>\n                <td className=\"text-end\">\n                  <strong>\n                    {numberWithCommas(this.state.data.data.total_collected)}\n                  </strong>\n                </td>\n              </tr>\n              <tr>\n                <th>\n                  Particular:\n                </th>\n                <td className=\"text-end\">\n                  {this.renderParticular()}\n                </td>\n              </tr>\n            </tbody>\n          </table>\n          <AddRecord\n            data={this.state.data}\n            authenticityToken={this.props.authenticityToken}\n          />\n          <hr/>\n          <EquityWithdrawalCollectionUITable\n            id={this.props.id}\n            data={this.state.data}\n            updateData={this.updateData.bind(this)}\n            authenticityToken={this.props.authenticityToken}\n          />\n          <hr/>\n        </div>\n      );\n    }\n  }\n}\n", "import React from 'react';\nimport ReactTable from 'react-table';\nimport Modal from 'react-modal';\nimport Toggle from 'react-toggle';\nimport \"react-toggle/style.css\";\n\nimport {numberWithCommas} from '../utils/helpers';\nimport {customStyles} from '../utils/consts';\n\nimport ErrorDisplay from '../ErrorDisplay';\n\nexport default class EquityWithdrawalCollectionUITable extends React.Component {\n  constructor(props) {\n    super(props);\n\n    this.state  = {\n      currentTransaction: false,\n      currentAmountValue: false,\n      currentMember: false,\n      modalIsOpen: false,\n      isLoading: false,\n      errors: false\n    };\n  }\n\n  buildHeaders() {\n    var headers = [];\n\n    headers.push(\n      <th key={\"h-member\"} style={{minWidth: \"300px\"}}>\n        Member\n      </th>\n    );\n\n    for(var i = 0; i < this.props.data.data.headers.length; i++) {\n      headers.push(\n        <th key={\"h-\" + i} style={{minWidth: \"100px\"}}>\n          <center>\n            <small>\n              {this.props.data.data.headers[i]}\n            </small>\n          </center>\n        </th>\n      );\n    }\n\n    headers.push(\n      <th  key={\"h-total\"} style={{minWidth: \"40px\"}}>\n        <center>\n          TOTAL\n        </center>\n      </th>\n    );\n\n    return headers;\n  }\n\n  handleRemoveRecord(id) {\n    var context = this;\n\n    this.setState({\n      isLoading: true\n    });\n\n    $.ajax({\n      url: \"/api/v1/equity_withdrawal_collections/remove_member\",\n      method: 'POST',\n      data: {\n        authenticity_token: context.props.authenticityToken,\n        member_id: id,\n        id: context.props.data.id\n      },\n      success: function(response) {\n        context.setState({\n          errors: false,\n          message: \"Success! Redirecting...\"\n        });\n\n        window.location.reload();\n      },\n      error: function(response) {\n        try {\n          console.log(response);\n          context.setState({\n            errors: JSON.parse(response.responseText),\n            isLoading: false,\n            message: \"Error\"\n          });\n        } catch(err) {\n          context.setState({\n            errors: false,\n            message: \"Error!\",\n            isLoading: false\n          });\n        }\n      }\n    });\n  }\n\n  buildRecords() {\n    var records = [];\n\n    for(var i = 0; i < this.props.data.data.records.length; i++) {\n      var components  = [];\n      var record      = this.props.data.data.records[i];\n      var member      = record.member;\n\n      var btnDelete = \"\";\n      if(this.props.data.status == \"pending\") {\n        btnDelete = (\n          <button\n            className=\"btn btn-danger btn-sm\"\n            onClick={this.handleRemoveRecord.bind(this, member.id)}\n            disabled={this.state.isLoading}\n          >\n            <span className=\"bi bi-x\"/>\n          </button>\n        );\n      }\n\n      components.push(\n        <td key={\"c-member-\" + member.id}>\n          {btnDelete}\n          <strong>\n            <a href={\"/members/\" + member.id + \"/display\"} target=\"_blank\">\n              {this.props.data.data.records[i].member.full_name}\n            </a>\n          </strong>\n        </td>\n      );\n\n      for(var j = 0; j < this.props.data.data.records[i].records.length; j++) {\n        var paymentRecord = this.props.data.data.records[i].records[j];\n        if(this.props.data.status == \"pending\") {\n          components.push(\n            <td key={\"equity-withdrawal-payment-\" + j} className=\"text-end\">\n              <strong>\n                <a \n                  href=\"#\"\n                  onClick={this.handleTransactionClicked.bind(this, paymentRecord, member)}\n                >\n                  {numberWithCommas(paymentRecord.amount)}\n                </a>\n              </strong>\n            </td>\n          );\n        } else {\n          components.push(\n            <td key={\"na-\" + member.id + \"-\" + j} className=\"text-end\">\n              {numberWithCommas(paymentRecord.amount)}\n            </td>\n          )\n        }\n      }\n\n      components.push(\n        <td key={\"c-member-total-\" + member.id} className=\"text-end\">\n          <strong>\n            {numberWithCommas(this.props.data.data.records[i].total_collected)}\n          </strong>\n        </td>\n      );\n\n      records.push(\n        <tr key={\"member-row-\" + i}>\n          {components}\n        </tr>\n      );\n    }\n\n    return records;\n  }\n\n  buildTotals() {\n    var records = [];\n\n    records.push(\n      <td key=\"total-label\">\n        <strong>\n          TOTAL\n        </strong>\n      </td>\n    );\n\n    var totals  = this.props.data.data.totals;\n    for(var i = 0; i < totals.length; i++) {\n      records.push(\n        <td key={\"total-equity-withdrawal-payment-\" + i} className=\"text-end\">\n          <strong>\n            {numberWithCommas(totals[i].amount)}\n          </strong>\n        </td>\n      );\n    }\n\n    records.push(\n      <td key=\"grand-total\" className=\"text-end\">\n        <div className=\"badge bg-success\">\n          <strong>\n            {numberWithCommas(this.props.data.data.total_collected)}\n          </strong>\n        </div>\n      </td>\n    )\n\n    return (\n      <tr key={\"totals-row\"}>\n        {records}\n      </tr>\n    );\n  }\n\n  handleTransactionClicked(paymentRecord, member) {\n    this.setState({\n      modalIsOpen: true,\n      currentTransaction: paymentRecord,\n      currentMember: member,\n      currentAmountValue: paymentRecord.amount\n    });\n  }\n\n  handleModalClose() {\n    var currentTransaction    = this.state.currentTransaction;\n    currentTransaction.amount = this.state.currentAmountValue;\n\n    this.setState({\n      modalIsOpen: false,\n      currentTransaction: false,\n      currentMember: false,\n      currentAmountValue: false,\n      errors: false\n    });\n  }\n\n  handleInputAmountChanged(event) {\n    var currentTransaction  = this.state.currentTransaction;\n\n    if(currentTransaction) {\n      currentTransaction.amount = event.target.value;\n\n      this.setState({\n        currentTransaction: currentTransaction\n      });\n    }\n  }\n\n  renderTransactionParticular() {\n    var currentTransaction  = this.state.currentTransaction;\n    var currentMember       = this.state.currentMember;\n\n    return (\n      <h5>\n        SAVINGS\n      </h5>\n    );\n  }\n\n  handleModalConfirm() {\n    var currentTransaction  = this.state.currentTransaction;\n    var currentMember       = this.state.currentMember;\n    var context             = this;\n\n    var data  = {\n      current_transaction: currentTransaction,\n      current_member: currentMember,\n      id: this.props.id,\n      authenticity_token: this.props.authenticityToken\n    };\n\n    this.setState({\n      isLoading: true\n    });\n\n    $.ajax({\n      url: \"/api/v1/equity_withdrawal_collections/modify_transaction_record\",\n      method: \"POST\",\n      data: data,\n      success: function(response) {\n        //window.location.reload();\n        context.setState({\n          currentTransaction: false,\n          currentAmountValue: false,\n          currentMember: false,\n          modalIsOpen: false,\n          isLoading: false,\n          errors: false\n        });\n\n        context.props.updateData(response);\n      },\n      error: function(response) {\n        try {\n          var errors  = JSON.parse(response.responseText).errors;\n\n          context.setState({\n            isLoading: false,\n            errors: errors\n          });\n        } catch(err) {\n          console.log(response);\n          alert(\"Something went wrong!\");\n          context.setState({\n            isLoading: false\n          });\n        }\n      }\n    });\n  }\n\n  renderLoadingStatus() {\n    if(this.state.isLoading) {\n      return  (\n        <div className=\"callout callout-info\">\n          Loading...\n        </div>\n      );\n    } else if(this.state.errors) {\n      return (\n        <ErrorDisplay\n          errors={this.state.errors}\n        />\n      );\n    }\n  }\n\n  renderModalContent() {\n    var currentTransaction  = this.state.currentTransaction;\n    var currentMember       = this.state.currentMember;\n\n    if(currentTransaction) {\n      return (\n        <div className=\"container\">\n          <div className=\"row\">\n            <div className=\"col\">\n              <h5>\n                Member: &nbsp;\n                <span className=\"text-muted\">\n                  {currentMember.full_name}\n                </span>\n              </h5>\n              <h5>\n                Transaction Type:  &nbsp;\n                <span className=\"text-muted\">\n                  {currentTransaction.record_type}\n                </span>\n              </h5>\n              {this.renderTransactionParticular()}\n\n              <hr/>\n\n              <input\n                type=\"number\"\n                className=\"form-control\"\n                value={currentTransaction.amount}\n                disabled={this.state.isLoading}\n                onChange={this.handleInputAmountChanged.bind(this)}\n              />\n              {this.renderLoadingStatus()}\n            </div>\n          </div>\n          <hr/>\n          <div className=\"row\">\n            <div className=\"col\">\n              <center>\n                <div className=\"btn-group\">\n                  <button \n                    className=\"btn btn-success\" \n                    onClick={this.handleModalConfirm.bind(this)}\n                    disabled={this.state.isLoading}\n                  >\n                    <span className=\"bi bi-check\" />\n                    Confirm Change\n                  </button>\n\n                  <button \n                    className=\"btn btn-danger\" \n                    onClick={this.handleModalClose.bind(this)}\n                    disabled={this.state.isLoading}\n                  >\n                    <span className=\"bi bi-x\" />\n                    Cancel Change\n                  </button>\n                </div>\n              </center>\n            </div>\n          </div>\n        </div>\n      );\n    } else {\n      return (\n        <div>\n          Internal Error\n        </div>\n      );\n    }\n  }\n\n  render() {\n    return (\n      <div className=\"table-responsive\">\n        <Modal\n          isOpen={this.state.modalIsOpen}\n          style={customStyles}\n        >\n          {this.renderModalContent()}\n        </Modal>\n        {this.renderLoadingStatus()}\n        <table className=\"table table-bordered table-hover table-sm\">\n          <thead>\n            <tr>\n              {this.buildHeaders()}\n            </tr>\n          </thead>\n          <tbody>\n            {this.buildRecords()}\n          </tbody>\n          <tfoot>\n            {this.buildTotals()}\n          </tfoot>\n        </table>\n      </div>\n    );\n  }\n}\n", "import React from 'react';\nimport ErrorDisplay from '../ErrorDisplay';\n\nexport default class AddRecord extends React.Component {\n  constructor(props) {\n    super(props);\n\n    this.state  = {\n      members: [],\n      memberId: \"\",\n      message: \"Loading...\",\n      isLoading: true,\n      errors: false\n    }\n  }\n\n  componentDidMount() {\n    var context = this;\n\n    $.ajax({\n      url: \"/api/v1/equity_withdrawal_collections/fetch_members\",\n      method: 'GET',\n      data: {\n        id: context.props.data.id\n      },\n      success: function(response) {\n        context.setState({\n          members: response.members,\n          isLoading: false,\n          message: \"\"\n        });\n      },\n      error: function(response) {\n        console.log(response);\n        context.setState({\n          isLoading: false,\n          message: \"Error!\"\n        });\n      }\n    });\n  }\n\n  handleMemberChanged(event) {\n    this.setState({\n      memberId: event.target.value\n    });\n  }\n\n  handleClick() {\n    var context = this;\n\n    this.setState({\n      errors: false,\n      isLoading: true,\n      message: \"Loading...\"\n    });\n\n    if(this.state.memberId) {\n      $.ajax({\n        url: \"/api/v1/equity_withdrawal_collections/add_member\",\n        method: 'POST',\n        data: {\n          authenticity_token: context.props.authenticityToken,\n          member_id: context.state.memberId,\n          id: context.props.data.id\n        },\n        success: function(response) {\n          context.setState({\n            errors: false,\n            message: \"Success! Redirecting...\"\n          });\n\n          window.location.reload();\n        },\n        error: function(response) { \n          try {\n            context.setState({\n              errors: JSON.parse(response.responseText),\n              isLoading: false,\n              message: \"\"\n            });\n          } catch(err) {\n            alert(\"Something went wrong\");\n            context.setState({\n              errors: false,\n              message: \"Error!\",\n              isLoading: false\n            });\n          }\n        }\n      });\n    } else {\n      this.setState({\n        isLoading: false,\n        message: \"Member not selected\"\n      });\n    }\n  }\n\n  renderOptions() {\n    var records = [];\n    var members = this.state.members;\n\n    records.push(\n      <option key=\"null\">\n        -- SELECT --\n      </option>\n    );\n\n    for(var i = 0; i < members.length; i++) {\n      records.push(\n        <option key={\"member-\" + i} value={members[i].id}>\n          {members[i].name} ({members[i].center.name})\n        </option>\n      );\n    }\n\n    return  records;\n  }\n\n  renderErrorDisplay() {\n    if(this.state.errors) {\n      return  (\n        <ErrorDisplay\n          errors={this.state.errors}\n        />\n      );\n    } else {\n      return  (\n        <div>\n        </div>\n      );\n    }\n  }\n\n  render() {\n    if(this.props.data.status == \"pending\") {\n      return  (\n        <div>\n          <h5>\n            Add Transaction\n          </h5>\n          <div className=\"card\">\n            <div className=\"card-body\">\n              {this.renderErrorDisplay()}\n              <div className=\"row\">\n                <div className=\"col-md-10\">\n                  <select\n                    className=\"form-control\"\n                    onChange={this.handleMemberChanged.bind(this)}\n                    value={this.state.memberId}\n                    disabled={this.state.isLoading}\n                  >\n                    {this.renderOptions()}\n                  </select>\n                  <div>\n                    {this.state.message}\n                  </div>\n                </div>\n                <div className=\"col-md-2\">\n                  <button\n                    className=\"btn btn-primary btn-block\"\n                    disabled={this.state.isLoading}\n                    onClick={this.handleClick.bind(this)}\n                  >\n                    <span className=\"fa fa-plus\" />\n                    Add Transaction\n                  </button>\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n      );\n    } else {\n      return  (\n        <div>\n        </div>\n      );\n    }\n  }\n}\n", "import React from 'react';\nimport $ from 'jquery';\n\nimport ReactTable from 'react-table';\nimport DatePicker from 'react-datepicker';\nimport Select from 'react-select';\n\nimport SkCubeLoading from '../SkCubeLoading';\nimport GeneralLedgerEntry from './GeneralLedgerEntry';\nimport ErrorDisplay from '../ErrorDisplay';\nimport AccountingCodeMultiSelect from './AccountingCodeMultiSelect';\n\nexport default class GeneralLedgerDisplayComponent extends React.Component {\n  constructor(props) {\n    super(props);\n\n    this.state = {\n      isLoading: true,\n      accountingCodeIds: [],\n      data: false,\n      id: props.id,\n      xKoinsAppAuthSecret: props.xKoinsAppAuthSecret,\n      userId: props.userId\n    }\n  }\n\n  componentDidMount() {\n    var context = this;\n\n    $.ajax({\n      url: \"/api/v1/general_ledgers/fetch\",\n      method: 'GET',\n      headers: {\n        'X-KOINS-APP-AUTH-SECRET': context.state.xKoinsAppAuthSecret,\n        'Access-Control-Allow-Methods': '*',\n        'Access-Control-Allow-Headers': '*',\n        'Access-Control-Allow-Origin': '*',\n        'Access-Control-Allow-Credentials': 'true'\n      },\n      data: {\n        id: context.state.id,\n        user_id: context.state.userId\n      },\n      success: function(response) {\n        context.setState({\n          data: response.data,\n          isLoading: false\n        });\n      },\n      error: function(response) {\n        console.log(response);\n        alert(\"Something went wrong!\");\n      }\n    });\n  }\n\n  handleAccountingCodeSelectChanged(o) {\n    var accountingCodeIds = [];\n\n    for(var i = 0; i < o.length; i++) {\n      accountingCodeIds.push(o[i].value);\n    }\n\n    this.setState({\n      accountingCodeIds: accountingCodeIds\n    });\n  }\n\n  renderTable() {\n    var context = this;\n    var state   = context.state;\n\n\n    if(!state.isLoading && state.data != false) {\n      var generalLedgerEntries  = state.data.entries;\n\n      if(state.accountingCodeIds.length > 0) {\n        generalLedgerEntries  = generalLedgerEntries.filter(function(o) {\n                                  return state.accountingCodeIds.includes(o.accounting_code_id);\n                                });   \n      }\n\n      var generalLedgerComponents = [];\n\n      generalLedgerEntries.forEach(function(o) {\n        generalLedgerComponents.push(\n          <GeneralLedgerEntry\n            data={o}\n            key={\"glc-\" + o.accounting_code_id}\n          />\n        );\n      });\n\n      return  (\n        <div>\n          {generalLedgerComponents}\n        </div>\n      );\n    }\n  }\n\n  render() {\n    var context = this;\n    var state   = context.state;\n\n    if(state.isLoading) {\n      return (\n        <SkCubeLoading/>\n      );\n    } else {\n      var accountingCodeOptions = state.data.entries.map(function(o) {\n                                    return {\n                                      value: o.accounting_code_id,\n                                      label: o.accounting_code_name\n                                    }\n                                  });\n      return (\n        <div>\n          <Select\n            options={accountingCodeOptions}\n            onChange={this.handleAccountingCodeSelectChanged.bind(this)}\n            isMulti\n          />\n          <hr/>\n          {context.renderTable()}\n        </div>\n      );\n    }\n  }\n}\n", "import React, { useState } from 'react';\nimport Toggle from 'react-toggle';\n\nimport MembershipArrangementLoanProductConfig from \"./MembershipArrangementLoanProductConfig\";\n\nimport { buildLoanProductConfigObject } from \"./utils/helpers\";\n\nfunction MembershipArrangementShow(props) {\n  const [id]                      = useState(props.id);\n  const [data, setData]           = useState(props.data);\n  const [accounting_codes]        = useState(props.accounting_codes);\n  const [loan_products]           = useState(props.loan_products);\n  const [isLoading, setIsLoading] = useState(false);\n  const [membership_types]        = useState(props.membership_types);\n\n  function handleSave() {\n    setIsLoading(true);\n\n    const payload = {\n      id: id,\n      data: JSON.stringify(data),\n      authenticity_token: props.authenticityToken\n    }\n\n    $.ajax({\n      url: \"/api/v1/administration/membership_arrangements/update_data\",\n      method: 'POST',\n      data: payload,\n      success: function(response) {\n        console.log(\"Successfully updated data\");\n        alert(\"Successfully updated data!\");\n\n        setData(data);\n        setIsLoading(false);\n      },\n      error: function(response) {\n        console.log(response);\n        alert(\"Error in updating data\");\n        setIsLoading(false);\n      }\n    })\n  }\n\n  function removeLoanProductConfig(index) {\n    data.loan_products.splice(index, 1);\n\n    setData({...data});\n  }\n\n  function removeMaintainingBalance(index, mbIndex) {\n    data.loan_products[index].maintaining_balances.splice(mbIndex, 1);\n\n    setData({...data});\n  }\n\n  function removeDeduction(index, dIndex) {\n    data.loan_products[index].deductions.splice(dIndex, 1);\n\n    setData({...data});\n  }\n\n  function updateDeductionAccountingCodeId(index, dIndex, val) {\n    data.loan_products[index].deductions[dIndex].accounting_code_id = val;\n\n    setData({...data});\n  }\n\n  function updateDeductionAmount(index, dIndex, val) {\n    data.loan_products[index].deductions[dIndex].amount = val;\n\n    setData({...data});\n  }\n\n  function updateDeductionType(index, dIndex, val) {\n    data.loan_products[index].deductions[dIndex].deduction_type = val;\n\n    setData({...data});\n  }\n\n  function updateDeductionSkipForSpecialLoanFund(index, dIndex, val) {\n    data.loan_products[index].deductions[dIndex].skip_for_special_loan_fund = val;\n\n    setData({...data});\n  }\n\n  function updateDeductionUseForSpecialLoanFund(index, dIndex, val) {\n    data.loan_products[index].deductions[dIndex].use_for_special_loan_fund = val;\n\n    setData({...data});\n  }\n\n  function updateDeductionAdvanceInsuranceValue(index, dIndex, val) {\n    data.loan_products[index].deductions[dIndex].advance_insurance_value = val;\n\n    setData({...data});\n  }\n\n  function updateMidasContractType(index, val) {\n    data.loan_products[index].midas.contract_type = val;\n\n    setData({...data});\n  }\n\n  function updateMidasContractPhase(index, val) {\n    data.loan_products[index].midas.contract_phase = val;\n\n    setData({...data});\n  }\n\n  function updateMidasTransactionType(index, val) {\n    data.loan_products[index].midas.transaction_type = val;\n\n    setData({...data});\n  }\n\n  function updateMidasLoanPurpose(index, val) {\n    data.loan_products[index].midas.loan_purpose = val;\n\n    setData({...data});\n  }\n\n  function updateDefaultAmount(index, amount) {\n    data.loan_products[index].default_amount = amount;\n\n    setData({...data});\n  }\n\n  function updateLoanProductId(index, obj) {\n    console.log(obj);\n    data.loan_products[index].loan_product_id = obj.value;\n    setData({...data});\n  }\n\n  function updateReceivableAccountingCode(index, obj) {\n    data.loan_products[index].receivable_accounting_code_id = obj.value;\n\n    setData({...data});\n  }\n\n  function updateInterestReceivableAccountingCode(index, obj) {\n    data.loan_products[index].interest_receivable_accounting_code_id = obj.value;\n\n    setData({...data});\n  }\n\n  function updateMaintainingBalanceAccountType(index, mbIndex, val) {\n    data.loan_products[index].maintaining_balances[mbIndex].account_type = val;\n\n    setData({...data});\n  }\n\n  function updateMaintainingBalanceAccountSubtype(index, mbIndex, val) {\n    data.loan_products[index].maintaining_balances[mbIndex].account_subtype = val;\n\n    setData({...data});\n  }\n\n  function updateMaintainingBalancePercentage(index, mbIndex, val) {\n    data.loan_products[index].maintaining_balances[mbIndex].percentage = val;\n\n    setData({...data});\n  }\n\n  function updateMaintainingBalanceThreshold(index, mbIndex, val) {\n    data.loan_products[index].maintaining_balances[mbIndex].threshold = val;\n\n    setData({...data});\n  }\n\n  function updateDeductionName(index, dIndex, val) {\n    data.loan_products[index].deductions[dIndex].name = val;\n\n    setData({...data});\n  }\n\n  function updateDeductionBusinessPermitAvailable(index, dIndex, val) {\n    data.loan_products[index].deductions[dIndex].business_permit_available = val;\n\n    setData({...data});\n  }\n\n  function updateDeductionBusinessPermitAmount(index, dIndex, val) {\n    data.loan_products[index].deductions[dIndex].business_permit_amount = val;\n\n    setData({...data});\n  }\n\n  function updateDeductionMetaMemberType(index, dIndex, val) {\n    data.loan_products[index].deductions[dIndex].meta.member_type = val;\n\n    setData({...data});\n  }\n\n  function updateDeductionMetaAccountType(index, dIndex, val) {\n    data.loan_products[index].deductions[dIndex].meta.account_type = val;\n\n    setData({...data});\n  }\n\n  function updateDeductionMetaAccountSubtype(index, dIndex, val) {\n    data.loan_products[index].deductions[dIndex].meta.account_subtype = val;\n\n    setData({...data});\n  }\n\n  function updateDeductionMetaValue(index, dIndex, val) {\n    data.loan_products[index].deductions[dIndex].meta.value = val;\n\n    setData({...data});\n  }\n\n  function updateDeductionMetaAlgo(index, dIndex, val) {\n    data.loan_products[index].deductions[dIndex].meta.algo = val;\n\n    setData({...data});\n  }\n\n  function updateDeductionMetaOffset(index, dIndex, val) {\n    data.loan_products[index].deductions[dIndex].meta.offset = val;\n\n    setData({...data});\n  }\n\n  function updateDeductionMetaMembershipName(index, dIndex, val) {\n    data.loan_products[index].deductions[dIndex].meta.membership_name = val;\n\n    setData({...data});\n  }\n\n  function updateDeductionMetaTermMapWeeklyRatio(index, dIndex, tmIndex, val) {\n    data.loan_products[index].deductions[dIndex].meta.term_map.weekly[tmIndex].ratio = val;\n\n    setData({...data});\n  }\n\n  function updateDeductionMetaTermMapMonthlyRatio(index, dIndex, tmIndex, val) {\n    data.loan_products[index].deductions[dIndex].meta.term_map.monthly[tmIndex].ratio = val;\n\n    setData({...data});\n  }\n\n  function updateDeductionMetaTermMapSemiMonthlyRatio(index, dIndex, tmIndex, val) {\n    data.loan_products[index].deductions[dIndex].meta.term_map.semi_monthly[tmIndex].ratio = val;\n\n    setData({...data});\n  }\n\n  function addMaintainingBalance(index) {\n    data.loan_products[index].maintaining_balances.push({\n      account_type: \"SAVINGS\",\n      account_subtype: \"K-IMPOK\",\n      percentage: 0.0,\n      threshold: 0.00\n    })\n\n    setData({...data});\n  }\n\n  function addDeduction(index) {\n    data.loan_products[index].deductions.push({\n      name: \"\",\n      accounting_code_id: \"\",\n      amount: 0.00,\n      deduction_type: \"\",\n      business_permit_available: false,\n      business_permit_amount: 0.00,\n      skip_for_special_loan_fund: false,\n      use_for_special_loan_fund: false,\n      advance_insurance_value: false,\n      meta: {\n        meta_type: \"\",\n        term_map: {\n          weekly: [\n            {\n              num_installments: 15,\n              ratio: 0.0035\n            },\n            {\n              num_installments: 25,\n              ratio: 0.007\n            },\n            {\n              num_installments: 35,\n              ratio: 0.0105\n            },\n            {\n              num_installments: 50,\n              ratio: 0.0140\n            }\n          ],\n          monthly: [\n            {\n              num_installments: 3,\n              ratio: 0.0035\n            },\n            {\n              num_installments: 6,\n              ratio: 0.007\n            },\n            {\n              num_installments: 9,\n              ratio: 0.0105\n            },\n            {\n              num_installments: 12,\n              ratio: 0.0140\n            }\n          ],\n          semi_monthly: [\n            {\n              num_installments: 6,\n              ratio: 0.0035\n            },\n            {\n              num_installments: 12,\n              ratio: 0.007\n            },\n            {\n              num_installments: 18,\n              ratio: 0.0105\n            },\n            {\n              num_installments: 24,\n              ratio: 0.0140\n            }\n          ]\n        },\n        account_type: \"\",\n        account_subtype: \"\",\n        value: 0.00,\n        algo: \"\",\n        offset: 0,\n        membership_name: \"\"\n      }\n    })\n\n    console.log(data);\n\n    setData({...data});\n  }\n\n  function handleAddLoanProductConfigClicked() {\n    const configObject = buildLoanProductConfigObject();\n\n    if(!data.loan_products) {\n      data.loan_products = [];\n    }\n    \n    data.loan_products.push(configObject);\n\n    setData({...data});\n  }\n\n  function handleUseCoMakerOneChanged(event) {\n    data.use_co_maker_one = event.target.checked;\n\n    setData({...data});\n  }\n\n  function handleUseCoMakerTwoChanged(event) {\n    data.use_co_maker_two = event.target.checked;\n\n    setData({...data});\n  }\n\n  function handleUseCoMakerThreeChanged(event) {\n    data.use_co_maker_three = event.target.checked;\n\n    setData({...data});\n  }\n\n  return (\n    <div className=\"\">\n      <h4>\n        Co-maker Settings for Loan Application\n      </h4>\n      <div className=\"row\">\n        <div className=\"col\">\n          <table className=\"table table-sm table-bordered\">\n            <thead>\n              <tr>\n                <th>\n                  Co-maker 1 (Kasama sa sentro)\n                </th>\n                <th>\n                  Co-maker 2 (Kamag-anak)\n                </th>\n                <th>\n                  Co-maker 3 (Hindi kamag-anak / Kapit-bahay)\n                </th>\n              </tr>\n            </thead>\n            <tbody>\n              <tr>\n                <td>\n                  <Toggle\n                    defaultChecked={data.use_co_maker_one === 'true'}\n                    onChange={handleUseCoMakerOneChanged}\n                    className=\"btn\"\n                  />\n                </td>\n                <td>\n                  <Toggle\n                    defaultChecked={data.use_co_maker_two === 'true'}\n                    onChange={handleUseCoMakerTwoChanged}\n                    className=\"btn\"\n                  />\n                </td>\n                <td>\n                  <Toggle\n                    defaultChecked={data.use_co_maker_three === 'true'}\n                    onChange={handleUseCoMakerThreeChanged}\n                    className=\"btn\"\n                  />\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </div>\n      </div>\n      <h4>\n        Loan Product Configuration\n      </h4>\n      <hr/>\n      <button\n        onClick={() => handleAddLoanProductConfigClicked()}\n        className=\"btn btn-primary\"\n      >\n        Add Loan Product Config\n      </button>\n      <hr/>\n      <MembershipArrangementLoanProductConfig\n        loan_products={data.loan_products}\n        memberTypeOptions={membership_types}\n        loanProductOptions={loan_products}\n        accountingCodeOptions={accounting_codes}\n        removeLoanProductConfig={removeLoanProductConfig}\n        removeMaintainingBalance={removeMaintainingBalance}\n        removeDeduction={removeDeduction}\n        updateLoanProductId={updateLoanProductId}\n        updateReceivableAccountingCode={updateReceivableAccountingCode}\n        updateInterestReceivableAccountingCode={updateInterestReceivableAccountingCode}\n        updateDefaultAmount={updateDefaultAmount}\n        updateMaintainingBalanceAccountType={updateMaintainingBalanceAccountType}\n        updateMaintainingBalanceAccountSubtype={updateMaintainingBalanceAccountSubtype}\n        updateMaintainingBalancePercentage={updateMaintainingBalancePercentage}\n        updateMaintainingBalanceThreshold={updateMaintainingBalanceThreshold}\n        updateMidasContractType={updateMidasContractType}\n        updateMidasContractPhase={updateMidasContractPhase}\n        updateMidasTransactionType={updateMidasTransactionType}\n        updateMidasLoanPurpose={updateMidasLoanPurpose}\n        updateDeductionName={updateDeductionName}\n        updateDeductionAccountingCodeId={updateDeductionAccountingCodeId}\n        updateDeductionType={updateDeductionType}\n        updateDeductionAmount={updateDeductionAmount}\n        updateDeductionBusinessPermitAvailable={updateDeductionBusinessPermitAvailable}\n        updateDeductionBusinessPermitAmount={updateDeductionBusinessPermitAmount}\n        updateDeductionSkipForSpecialLoanFund={updateDeductionSkipForSpecialLoanFund}\n        updateDeductionUseForSpecialLoanFund={updateDeductionUseForSpecialLoanFund}\n        updateDeductionAdvanceInsuranceValue={updateDeductionAdvanceInsuranceValue}\n        updateDeductionMetaMemberType={updateDeductionMetaMemberType}\n        updateDeductionMetaAccountType={updateDeductionMetaAccountType}\n        updateDeductionMetaAccountSubtype={updateDeductionMetaAccountSubtype}\n        updateDeductionMetaValue={updateDeductionMetaValue}\n        updateDeductionMetaAlgo={updateDeductionMetaAlgo}\n        updateDeductionMetaOffset={updateDeductionMetaOffset}\n        updateDeductionMetaMembershipName={updateDeductionMetaMembershipName}\n        updateDeductionMetaTermMapWeeklyRatio={updateDeductionMetaTermMapWeeklyRatio}\n        updateDeductionMetaTermMapMonthlyRatio={updateDeductionMetaTermMapMonthlyRatio}\n        updateDeductionMetaTermMapSemiMonthlyRatio={updateDeductionMetaTermMapSemiMonthlyRatio}\n        addMaintainingBalance={addMaintainingBalance}\n        addDeduction={addDeduction}\n        isLoading={isLoading}\n      />\n      <hr/>\n      <button\n        className=\"btn btn-success btn-block\"\n        onClick={() => handleSave()}\n      >\n        <span\n          className=\"bi bi-check\"\n        >\n        </span>\n        Save\n      </button>\n    </div>\n  )\n}\n\nexport default MembershipArrangementShow;\n", "import React, { useState } from 'react';\nimport Select from 'react-select';\n\nfunction MembershipArrangementLoanProductConfig(props) { \n  let optionsMemberTypes = props.memberTypeOptions.map((o) => {\n    return {\n      value: o.id,\n      label: o.name\n    }\n  });\n\n  let optionsLoanProducts = props.loanProductOptions.map((o) => {\n    return {\n      value: o.id,\n      label: o.name\n    }\n  });\n\n  let optionsAccountingCodes = props.accountingCodeOptions.map((o) => {\n    return {\n      value: o.id,\n      label: o.name\n    }\n  });\n\n  let optionsDeductionTypes = [\n    {\n      value: \"straight_one_time\",\n      label: \"Straight One Time\"\n    },\n    {\n      value: \"member_type_deduction_ratio\",\n      label: \"Member Type Deduction Ratio\"\n    },\n    {\n      value: \"deposit\",\n      label: \"Deposit\"\n    },\n    {\n      value: \"membership_fee\",\n      label: \"Membership Fee\"\n    }\n  ]\n\n  if(props.loan_products) { \n    return (\n      <div>\n        {\n          props.loan_products.map((obj, index) => {\n            return (\n              <div \n                key={'loan-product-' + index}\n                className=\"card\"\n              >\n                <div className=\"card-body\">\n                  <div className=\"form-group\">\n                    <label>\n                      Loan Product\n                    </label>\n                    <Select\n                      options={optionsLoanProducts}\n                      value={optionsLoanProducts.filter((o) => { return o.value == obj.loan_product_id })}\n                      onChange={(obj) => props.updateLoanProductId(index, obj)}\n                      isDisabled={props.isLoading}\n                    />\n                  </div>\n                  <div className=\"form-group\">\n                    <label>\n                      Receivable Accounting Code\n                    </label>\n                    <Select\n                      options={optionsAccountingCodes}\n                      value={optionsAccountingCodes.filter((o) => { return o.value == obj.receivable_accounting_code_id})}\n                      onChange={(obj) => props.updateReceivableAccountingCode(index, obj)}\n                      isDisabled={props.isLoading}\n                    />\n                  </div>\n                  <div className=\"form-group\">\n                    <label>\n                      Interest Receivable Accounting Code\n                    </label>\n                    <Select\n                      options={optionsAccountingCodes}\n                      value={optionsAccountingCodes.filter((o) => { return o.value == obj.interest_receivable_accounting_code_id})}\n                      onChange={(obj) => props.updateInterestReceivableAccountingCode(index, obj)}\n                      isDisabled={props.isLoading}\n                    />\n                  </div>\n                  <div className=\"form-group\">\n                    <label>\n                      Default Amount\n                    </label>\n                    <input\n                      value={obj.default_amount}\n                      onChange={(event) => props.updateDefaultAmount(index, event.target.value)}\n                      disabled={props.isLoading}\n                      className=\"form-control\"\n                    />\n                  </div>\n                  \n                  <h5>\n                    Maintaining Balances\n                  </h5>\n                  {\n                    obj.maintaining_balances.map((mbObj, mbIndex) => {\n                      return (\n                        <div className=\"card\" key={\"loan-product-\" + index + \"-mb-\" + mbIndex}> \n                          <div className=\"card-body\">\n                            <div className=\"form-group\">\n                              <label>\n                                Account Type\n                              </label>\n                              <select \n                                className=\"form-control\"\n                                value={mbObj.account_type}\n                                onChange={(event) =>  props.updateMaintainingBalanceAccountType(index, mbIndex, event.target.value)}\n                              >\n                                <option value=\"SAVINGS\">SAVINGS</option>\n                                <option value=\"INSURANCE\">INSURANCE</option>\n                              </select>\n                            </div>\n                            <div className=\"form-group\">\n                              <label>\n                                Account Subtype\n                              </label>\n                              <input\n                                className=\"form-control\"\n                                value={mbObj.account_subtype}\n                                onChange={(event) => props.updateMaintainingBalanceAccountSubtype(index, mbIndex, event.target.value)}\n                                disabled={props.isLoading}\n                              />\n                            </div>\n                            <div className=\"form-group\">\n                              <label>\n                                Percentage\n                              </label>\n                              <input\n                                className=\"form-control\"\n                                value={mbObj.percentage}\n                                onChange={(event) => props.updateMaintainingBalancePercentage(index, mbIndex, event.target.value)}\n                                disabled={props.isLoading}\n                              />\n                            </div>\n                            <div className=\"form-group\">\n                              <label>\n                                Threshold\n                              </label>\n                              <input\n                                className=\"form-control\"\n                                value={mbObj.threshold}\n                                onChange={(event) => props.updateMaintainingBalanceThreshold(index, mbIndex, event.target.value)}\n                                disabled={props.isLoading}\n                              />\n                            </div>\n                            <button\n                              className=\"btn btn-danger btn-block\"\n                              onClick={() => props.removeMaintainingBalance(index, mbIndex)}\n                              disabled={props.isLoading}\n                            >\n                              Remove\n                            </button>\n                          </div>\n                        </div>\n                      )\n                    })\n                  }\n                  <button\n                    className=\"btn btn-primary btn-sm\"\n                    onClick={() => props.addMaintainingBalance(index)}\n                    disabled={props.isLoading}\n                  >\n                    Add Maintaining Balance Config\n                  </button>\n\n                  <hr/>\n\n                  <h5>\n                    Midas Configuration\n                  </h5>\n\n                  <div\n                    className=\"card\"\n                  >\n                    <div className=\"card-body\">\n                      <div className=\"form-group\">\n                        <label>\n                          Contract Type\n                        </label>\n                        <input\n                          className=\"form-control\"\n                          value={obj.midas.contract_type}\n                          onChange={(event) => props.updateMidasContractType(index, event.target.value)}\n                          disabled={props.isLoading}\n                        />\n                      </div>\n                      <div className=\"form-group\">\n                        <label>\n                          Contract Phase\n                        </label>\n                        <input\n                          className=\"form-control\"\n                          value={obj.midas.contract_phase}\n                          onChange={(event) => props.updateMidasContractPhase(index, event.target.value)}\n                          disabled={props.isLoading}\n                        />\n                      </div>\n                      <div className=\"form-group\">\n                        <label>\n                          Transaction Type\n                        </label>\n                        <input\n                          className=\"form-control\"\n                          value={obj.midas.transaction_type}\n                          onChange={(event) => props.updateMidasTransactionType(index, event.target.value)}\n                          disabled={props.isLoading}\n                        />\n                      </div>\n                      <div className=\"form-group\">\n                        <label>\n                          Loan Purpose\n                        </label>\n                        <input\n                          className=\"form-control\"\n                          value={obj.midas.loan_purpose}\n                          onChange={(event) => props.updateMidasLoanPurpose(index, event.target.value)}\n                          disabled={props.isLoading}\n                        />\n                      </div>\n                    </div>\n                  </div>\n\n                  <hr/>\n\n                  <h5>\n                    Deductions\n                  </h5>\n\n                  {\n                    obj.deductions.map((dObj, dIndex) => {\n                      return (\n                        <div className=\"card\" key={\"loan-product-\" + index + \"-d-obj-\" + dIndex}>\n                          <div className=\"card-body\">\n                            <div className=\"form-group\">\n                              <label>\n                                Name\n                              </label>\n                              <input\n                                className=\"form-control\"\n                                value={dObj.name}\n                                onChange={(event) => props.updateDeductionName(index, dIndex, event.target.value)}\n                                disabled={props.isLoading}\n                              />\n                            </div>\n                            <div className=\"form-group\">\n                              <label>\n                                Accounting Code\n                              </label>\n                              <Select\n                                options={optionsAccountingCodes}\n                                value={optionsAccountingCodes.filter((o) => { return o.value == dObj.accounting_code_id })}\n                                onChange={(o) => props.updateDeductionAccountingCodeId(index, dIndex, o.value)}\n                                isDisabled={props.isLoading}\n                              />\n                            </div>\n                            <div className=\"form-group\">\n                              <label>\n                                Deduction Type\n                              </label>\n                              <Select\n                                options={optionsDeductionTypes}\n                                value={optionsDeductionTypes.filter((o) => { return o.value == dObj.deduction_type })}\n                                onChange={(o) => props.updateDeductionType(index, dIndex, o.value)}\n                                isDisabled={props.isLoading}\n                              />\n                            </div>\n                            <div className=\"form-group\">\n                              <label>\n                                Amount\n                              </label>\n                              <input\n                                className=\"form-control\"\n                                value={dObj.amount}\n                                onChange={(event) => props.updateDeductionAmount(index, dIndex, event.target.value)}\n                                disabled={props.isLoading}\n                              />\n                            </div>\n                            <div className=\"form-group\">\n                              <label>\n                                Business Permit Available\n                              </label>\n                              <input\n                                className=\"form-control\"\n                                value={dObj.business_permit_available}\n                                onChange={(event) => props.updateDeductionBusinessPermitAvailable(index, dIndex, event.target.value)}\n                                disabled={props.isLoading}\n                              />\n                            </div>\n                            <div className=\"form-group\">\n                              <label>\n                                Business Permit Amount\n                              </label>\n                              <input\n                                className=\"form-control\"\n                                value={dObj.business_permit_amount}\n                                onChange={(event) => props.updateDeductionBusinessPermitAmount(index, dIndex, event.target.value)}\n                                disabled={props.isLoading}\n                              />\n                            </div>\n                            <div className=\"form-group\">\n                              <label>\n                                Skip For Special Loan Fund\n                              </label>\n                              <input\n                                className=\"form-control\"\n                                value={dObj.skip_for_special_loan_fund}\n                                onChange={(event) => props.updateDeductionSkipForSpecialLoanFund(index, dIndex, event.target.value)}\n                                disabled={props.isLoading}\n                              />\n                            </div>\n                            <div className=\"form-group\">\n                              <label>\n                                Use for Special Loan Fund\n                              </label>\n                              <input\n                                className=\"form-control\"\n                                value={dObj.use_for_special_loan_fund}\n                                onChange={(event) => props.updateDeductionUseForSpecialLoanFund(index, dIndex, event.target.value)}\n                                disabled={props.isLoading}\n                              />\n                            </div>\n                            <div className=\"form-group\">\n                              <label>\n                                Advance Insurance Value\n                              </label>\n                              <input\n                                className=\"form-control\"\n                                value={dObj.advance_insurance_value}\n                                onChange={(event) => props.updateDeductionAdvanceInsuranceValue(index, dIndex, event.target.value)}\n                                disabled={props.isLoading}\n                              />\n                            </div>\n                            <hr/>\n\n                            <h6>\n                              Meta Configuration\n                            </h6>\n                            <div className=\"form-group\">\n                              <label>\n                                Member Type \n                              </label>\n                              <Select\n                                options={optionsMemberTypes}\n                                value={optionsMemberTypes.filter((o) => { return o.value == dObj.meta.member_type })}\n                                onChange={(o) => props.updateDeductionMetaMemberType(index, dIndex, o.value)}\n                                isDisabled={props.isLoading}\n                              />\n                            </div>\n                            <div className=\"form-group\">\n                              <label>\n                                Account Type\n                              </label>\n                              <select\n                                className=\"form-control\"\n                                value={dObj.meta.account_type}\n                                onChange={(event) => props.updateDeductionMetaAccountType(index, dIndex, event.target.value)}\n                                disabled={props.isLoading}\n                              >\n                                <option value=\"SAVINGS\">SAVINGS</option>\n                                <option value=\"INSURANCE\">INSURANCE</option>\n                              </select>\n                            </div>\n                            <div className=\"form-group\">\n                              <label>\n                                Account Subtype\n                              </label>\n                              <input\n                                className=\"form-control\"\n                                value={dObj.meta.account_subtype}\n                                onChange={(event) => props.updateDeductionMetaAccountSubtype(index, dIndex, event.target.value)}\n                                disabled={props.isLoading}\n                              />\n                            </div>\n                            <div className=\"form-group\">\n                              <label>\n                                Value\n                              </label>\n                              <input\n                                className=\"form-control\"\n                                value={dObj.meta.value}\n                                onChange={(event) => props.updateDeductionMetaValue(index, dIndex, event.target.value)}\n                                disabled={props.isLoading}\n                              />\n                            </div>\n                            <div className=\"form-group\">\n                              <label>\n                                Algo\n                              </label>\n                              <input\n                                className=\"form-control\"\n                                value={dObj.meta.algo}\n                                onChange={(event) => props.updateDeductionMetaAlgo(index, dIndex, event.target.value)}\n                                disabled={props.isLoading}\n                              />\n                            </div>\n                            <div className=\"form-group\">\n                              <label>\n                                Offset\n                              </label>\n                              <input\n                                className=\"form-control\"\n                                value={dObj.meta.offset}\n                                onChange={(event) => props.updateDeductionMetaOffset(index, dIndex, event.target.value)}\n                                disabled={props.isLoading}\n                              />\n                            </div>\n                            <div className=\"form-group\">\n                              <label>\n                                Membership Name\n                              </label>\n                              <input\n                                className=\"form-control\"\n                                value={dObj.meta.membership_name}\n                                onChange={(event) => props.updateDeductionMetaMembershipName(index, dIndex, event.target.value)}\n                                disabled={props.isLoading}\n                              />\n                            </div>\n\n                            <h5>\n                              Term Map\n                            </h5>\n\n                            <h6>\n                              Weekly\n                            </h6>\n\n                            {\n                              dObj.meta.term_map.weekly.map((tmWeeklyObj, tmIndex) => {\n                                return (\n                                  <div className=\"card\" key={\"tm-weekly-\" + tmIndex}>\n                                    <div className=\"card-body\">\n                                      <div className=\"row\">\n                                        <div className=\"col-md-6 col-xs-12\">\n                                          <div className=\"form-group\">\n                                            <label>\n                                              Num Installments\n                                            </label>\n                                            <input\n                                              className=\"form-control\"\n                                              value={tmWeeklyObj.num_installments}\n                                              disabled={true}\n                                            />\n                                          </div>\n                                        </div>\n                                        <div className=\"col-md-6 col-xs-12\">\n                                          <div className=\"form-group\">\n                                            <label>\n                                              Ratio\n                                            </label>\n                                            <input\n                                              className=\"form-control\"\n                                              value={tmWeeklyObj.ratio}\n                                              disabled={props.isLoading}\n                                              onChange={(event) => props.updateDeductionMetaTermMapWeeklyRatio(index, dIndex, tmIndex, event.target.value)}\n                                            />\n                                          </div>\n                                        </div>\n                                      </div>\n                                    </div>\n                                  </div>\n                                )\n                              })\n                            }\n\n                            <h6>\n                              Monthly\n                            </h6>\n\n                            {\n                              dObj.meta.term_map.monthly.map((tmMonthlyObj, tmIndex) => {\n                                return (\n                                  <div className=\"card\" key={\"tm-weekly-\" + tmIndex}>\n                                    <div className=\"card-body\">\n                                      <div className=\"row\">\n                                        <div className=\"col-md-6 col-xs-12\">\n                                          <div className=\"form-group\">\n                                            <label>\n                                              Num Installments\n                                            </label>\n                                            <input\n                                              className=\"form-control\"\n                                              value={tmMonthlyObj.num_installments}\n                                              disabled={true}\n                                            />\n                                          </div>\n                                        </div>\n                                        <div className=\"col-md-6 col-xs-12\">\n                                          <div className=\"form-group\">\n                                            <label>\n                                              Ratio\n                                            </label>\n                                            <input\n                                              className=\"form-control\"\n                                              value={tmMonthlyObj.ratio}\n                                              disabled={props.isLoading}\n                                              onChange={(event) => props.updateDeductionMetaTermMapMonthlyRatio(index, dIndex, tmIndex, event.target.value)}\n                                            />\n                                          </div>\n                                        </div>\n                                      </div>\n                                    </div>\n                                  </div>\n                                )\n                              })\n                            }\n\n                            <h6>\n                              Semi-monthly\n                            </h6>\n\n                            {\n                              dObj.meta.term_map.semi_monthly.map((tmSemiMonthlyObj, tmIndex) => {\n                                return (\n                                  <div className=\"card\" key={\"tm-weekly-\" + tmIndex}>\n                                    <div className=\"card-body\">\n                                      <div className=\"row\">\n                                        <div className=\"col-md-6 col-xs-12\">\n                                          <div className=\"form-group\">\n                                            <label>\n                                              Num Installments\n                                            </label>\n                                            <input\n                                              className=\"form-control\"\n                                              value={tmSemiMonthlyObj.num_installments}\n                                              disabled={true}\n                                            />\n                                          </div>\n                                        </div>\n                                        <div className=\"col-md-6 col-xs-12\">\n                                          <div className=\"form-group\">\n                                            <label>\n                                              Ratio\n                                            </label>\n                                            <input\n                                              className=\"form-control\"\n                                              value={tmSemiMonthlyObj.ratio}\n                                              disabled={props.isLoading}\n                                              onChange={(event) => props.updateDeductionMetaTermMapSemiMonthlyRatio(index, dIndex, tmIndex, event.target.value)}\n                                            />\n                                          </div>\n                                        </div>\n                                      </div>\n                                    </div>\n                                  </div>\n                                )\n                              })\n                            }\n\n                            <hr/>\n                            <button\n                              className=\"btn btn-danger btn-block\"\n                              onClick={() => props.removeDeduction(index, dIndex)}\n                            >\n                              Remove\n                            </button>\n                          </div>\n                        </div>\n                      )\n                    })\n                  }\n\n                  <button\n                    className=\"btn btn-primary btn-sm\"\n                    onClick={() => props.addDeduction(index)}\n                  >\n                    Add Deduction\n                  </button>\n\n                  <hr/>\n\n                  <button\n                    className=\"btn btn-danger\"\n                    onClick={() => props.removeLoanProductConfig(index)}\n                  >\n                    Remove\n                  </button>\n                </div>\n              </div>\n            )\n          })\n        }\n      </div>\n    )\n  } else {\n    return (\n      <p>\n        No loan product configurations\n      </p>\n    )\n  }\n}\n\nexport default MembershipArrangementLoanProductConfig;\n", "import React, { useState, useEffect } from \"react\";\r\nimport $ from 'jquery';\r\nimport moment from 'moment';\r\nimport Select from 'react-select';\r\nimport Toggle from 'react-toggle';\r\nimport \"react-toggle/style.css\";\r\nimport Button from 'react-bootstrap/Button';\r\n\r\n\r\nimport SkCubeLoading from '../../SkCubeLoading';\r\nimport ErrorDisplay from '../../ErrorDisplay';\r\nimport {numberWithCommas} from '../../utils/helpers';\r\nimport Modal from 'react-bootstrap/Modal';\r\nimport jwtDecode from \"jwt-decode\";\r\nimport axios from 'axios';\r\n\r\nexport default class ShowComponent extends React.Component {\r\n  constructor(props) {\r\n    super(props);\r\n\r\n    this.state  = {\r\n      isLoading: true,\r\n      data: false,\r\n      errors: false,\r\n      centers: [],\r\n      officers: [],\r\n      currentCenterId: \"\",\r\n      currentOfficerId: \"\",\r\n      isModalResolutionOpen: false,\r\n      resolutionValue: ''\r\n      \r\n    \r\n  }\r\n  this.handleAddResolution = this.handleAddResolution.bind(this);\r\n  this.handleConfirmResolution = this.handleConfirmResolution.bind(this);\r\n  \r\n}\r\nhandleConfirmResolution(){\r\n  var context = this;\r\n  var reso = this.state.resolutionValue;\r\n  \r\n  if (!reso.trim()) {\r\n    alert(\"Resolution number cannot be empty!\");\r\n    return;\r\n  }\r\n  $.ajax({\r\n    url: \"/api/v1/data_stores/monthly_new_and_resigned/resolution_update\",\r\n    data: {\r\n      id: context.props.id,\r\n      authenticity_token: context.props.authenticityToken,\r\n      reso: reso\r\n    },\r\n    method: 'POST',\r\n\r\n    success: function(response) {\r\n      if (response) {\r\n        console.log(response);\r\n        alert(\"Resolution number successfully added!\");\r\n        window.location.reload();\r\n      }\r\n    },\r\n    \r\n    error: function(response) {\r\n      console.log(response);\r\n      alert(\"Something went wrong when fetching data store\");\r\n    }\r\n    \r\n  });\r\n  this.setState({ isModalResolutionOpen: false });\r\n}\r\n\r\n\r\n  handleAddResolution() {\r\n    this.setState({ isModalResolutionOpen: true });\r\n  }\r\n  fetch(options) {\r\n\r\n    var context       = this;\r\n    var centerId      = options.centerId;\r\n    var officerId     = options.officerId;\r\n\r\n    var data  = {\r\n      id: this.props.id,\r\n      center_id: centerId,\r\n      officer_id: officerId\r\n    }\r\n    \r\n    this.setState({\r\n      currentCenterId: centerId,\r\n      currentOfficerId: officerId\r\n    });\r\n\r\n    $.ajax({\r\n\r\n      url: \"/api/v1/data_stores/monthly_new_and_resigned/fetch\",\r\n      data: data,\r\n      method: 'GET',\r\n\r\n      success: function(response) {\r\n        context.setState({\r\n          isLoading: false,\r\n          data: response\r\n          \r\n        });\r\n      },\r\n      error: function(response) {\r\n        alert(\"Something went wrong when fetching data store\");\r\n      }\r\n    });\r\n  }\r\n\r\n  componentDidMount() {\r\n    var context = this;\r\n\r\n    $.ajax({\r\n      url: \"/api/v1/data_stores/monthly_new_and_resigned/fetch\",\r\n      data: {\r\n        id: context.props.id\r\n      },\r\n\r\n      method: 'GET',\r\n\r\n      success: function(response) {\r\n        console.log(response);\r\n        var centers       = response.data.centers;\r\n        var officers      = response.data.officers;\r\n\r\n        context.setState({\r\n          isLoading: false,\r\n          data: response,\r\n          centers: centers,\r\n          officers: officers\r\n        });\r\n      },\r\n      error: function(response) {\r\n        console.log(response);\r\n        alert(\"Something went wrong when fetching data store\");\r\n      }\r\n    });\r\n  }\r\n\r\n  renderErrorDisplay() {\r\n    if(this.state.errors) {\r\n      return  (\r\n        <ErrorDisplay\r\n          errors={this.state.errors}\r\n        />\r\n      );\r\n    }\r\n  }\r\n\r\n  handleCenterChanged(event) {\r\n    this.fetch({\r\n      centerId: event.target.value,\r\n      officerId: this.state.currentOfficerId\r\n    });\r\n  }\r\n\r\n  \r\n\r\n  handleOfficerChanged(event) {\r\n    this.fetch({\r\n      centerId: this.state.currentCenterId,\r\n      officerId: event.target.value\r\n    });\r\n  }\r\n\r\n  renderFilter() {\r\n    \r\n     var centerOptions   = [\r\n      <option key={\"center-select\"} value=\"\">\r\n        -- SELECT --\r\n      </option>\r\n    ];\r\n\r\n    var officerOptions  = [\r\n      <option key={\"officer-select\"} value=\"\">\r\n        -- SELECT --\r\n      </option>\r\n    ];\r\n\r\n    for(var i = 0; i < this.state.officers.length; i++) {\r\n      officerOptions.push(\r\n        <option key={\"officer-\" + i} value={this.state.officers[i].id}>\r\n          {this.state.officers[i].last_name}, {this.state.officers[i].first_name}\r\n        </option>\r\n      );\r\n    }\r\n   for(var i = 0; i < this.state.centers.length; i++) {\r\n        centerOptions.push(\r\n          <option key={\"center-\" + i} value={this.state.centers[i].id}>\r\n            {this.state.centers[i].name}\r\n          </option>\r\n        );\r\n      }\r\n\r\n  \r\n\r\n    return  (\r\n      <>\r\n        <Modal show={this.state.isModalResolutionOpen} onHide={() => this.setState({ isModalResolutionOpen: false })}>\r\n          <Modal.Header closeButton>\r\n            <Modal.Title>Add Resolution</Modal.Title>\r\n          </Modal.Header>\r\n          <Modal.Body>\r\n            <div className=\"row\">\r\n              <div className=\"form-group\">\r\n                <label>Add Resolution:</label>\r\n                <input type=\"text\" className=\"form-control\" placeholder=\"Enter resolution here\" value={this.state.resolutionValue} onChange={(e) => this.setState({ resolutionValue: e.target.value })}/>\r\n              </div>\r\n            </div>\r\n          </Modal.Body>\r\n          <Modal.Footer>\r\n            <Button variant=\"secondary\" onClick={() => this.setState({ isModalResolutionOpen: false })}>\r\n              Cancel\r\n            </Button>\r\n            <Button variant=\"primary\" onClick={this.handleConfirmResolution}>\r\n              Confirm\r\n            </Button>\r\n          </Modal.Footer>\r\n        </Modal>\r\n      <div className=\"row\">\r\n        <div className=\"col\">\r\n          <div className=\"form-group\">\r\n            <label>\r\n              Center:\r\n            </label>\r\n            <select value={this.state.currentCenterId} onChange={this.handleCenterChanged.bind(this)} className=\"form-control\">\r\n              {centerOptions}\r\n            </select>\r\n          </div>\r\n        </div>\r\n        <div className=\"col\">\r\n          <div className=\"form-group\">\r\n            <label>\r\n              Officer:\r\n            </label>\r\n            <select value={this.state.currentOfficerId} onChange={this.handleOfficerChanged.bind(this)} className=\"form-control\">\r\n              {officerOptions}\r\n            </select>\r\n          </div>\r\n        </div>\r\n        <div className=\"row\">\r\n          <div className=\"col\">\r\n            <div className=\"form-group\">\r\n              <button onClick={this.handleAddResolution} className=\"btn btn-primary\">Add Resolution</button>\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </div>\r\n      </>\r\n    );\r\n  }\r\n\r\n  renderNewMembers() {\r\n    var rows  = [];\r\n    var new_members = this.state.data.data.records.new_members;\r\n\r\n    for(var i = 0; i < new_members.length; i++) {\r\n      rows.push(\r\n        <tr key={\"new_members-item-\" + i}>\r\n          <td>\r\n            <a href={\"/members/\" + new_members[i].id+\"/display\"} target='_blank'>\r\n            {new_members[i].last_name + \", \" + new_members[i].first_name + \" \" + new_members[i].middle_name} </a>\r\n          </td>\r\n          <td>\r\n            {new_members[i].membership_date}\r\n          </td>\r\n          <td className=\"text-muted\">\r\n            {new_members[i].center.name}\r\n          </td>\r\n           <td className=\"text-muted\">\r\n            {new_members[i].officer.last_name + \", \"+new_members[i].officer.first_name}\r\n          </td>\r\n        </tr>\r\n      );\r\n    }\r\n    return rows;\r\n  }\r\n\r\n  renderResignedMembers() {\r\n    var rows  = [];\r\n    var resigned_members = this.state.data.data.records.resigned_members;\r\n\r\n    for(var x = 0; x < resigned_members.length; x++) {\r\n      rows.push(\r\n        <tr key={\"resigned_members-item-\" + x}>\r\n          <td>\r\n            <a href={\"/members/\" + resigned_members[x].id+\"/display\"} target='_blank'>\r\n            {resigned_members[x].last_name + \", \" + resigned_members[x].first_name + \" \" + resigned_members[x].middle_name}</a>\r\n          </td>\r\n          <td>\r\n            {resigned_members[x].date_resigned}\r\n          </td>\r\n          <td className=\"text-muted\">\r\n            {resigned_members[x].center.name}\r\n          </td>\r\n           <td className=\"text-muted\">\r\n            {resigned_members[x].officer.last_name + \", \"+resigned_members[x].officer.first_name}\r\n          </td>\r\n        </tr>\r\n      );\r\n    }\r\n\r\n    return rows;\r\n  }\r\n\r\n\r\n  renderNewMemberHeaders() {\r\n    var headers = [];\r\n    headers.push(\r\n      <th key=\"member-header\">\r\n        Member\r\n      </th>\r\n    );\r\n    headers.push(\r\n      <th key=\"membership-header\">\r\n        Membership Date\r\n      </th>\r\n    );\r\n    headers.push(\r\n      <th key=\"center-header\">\r\n       Center\r\n      </th>\r\n    );\r\n    headers.push(\r\n      <th key=\"officer-header\">\r\n        Officer\r\n      </th>\r\n    );\r\n    return headers;\r\n  }\r\n\r\nrenderResingedMemberHeaders() {\r\n    var headers = [];\r\n    headers.push(\r\n      <th key=\"member-header\">\r\n        Member\r\n      </th>\r\n    );\r\n    headers.push(\r\n      <th key=\"membership-header\">\r\n       Date Resigned\r\n      </th>\r\n    );\r\n    headers.push(\r\n      <th key=\"center-header\">\r\n       Center\r\n      </th>\r\n    );\r\n    headers.push(\r\n      <th key=\"officer-header\">\r\n        Officer\r\n      </th>\r\n    );\r\n\r\n    return headers;\r\n  }\r\n\r\n  render() {\r\n    if(this.state.isLoading) {\r\n      return  (\r\n        <SkCubeLoading/>\r\n      );\r\n    } else {\r\n       var total_new_members = this.state.data.data.num_new;\r\n       var total_resigned_members = this.state.data.data.num_resigned;\r\n       var reso_number = this.state.data.data.resolution_number;\r\n      return  (\r\n        <div>\r\n          {this.renderFilter()}\r\n          <h4> New Members <small className=\"text-muted\"> Total {total_new_members} </small> </h4> <h4 className=\"text-muted\"> Resolution number {reso_number} </h4> \r\n          <table className=\"table table-sm table-bordered table-hover\">\r\n            <thead>\r\n            <tr>\r\n             {this.renderNewMemberHeaders()}\r\n            </tr>\r\n            </thead>\r\n            <tbody>\r\n               {this.renderNewMembers()}\r\n            </tbody>\r\n            <tfoot>\r\n            </tfoot>\r\n          </table>\r\n          <h4> Resigned Members <small className=\"text-muted\"> Total {total_resigned_members} </small> </h4>\r\n          <table className=\"table table-sm table-bordered table-hover\">\r\n            <thead>\r\n            <tr>\r\n             {this.renderResingedMemberHeaders()}\r\n            </tr>\r\n            </thead>\r\n            <tbody>\r\n                {this.renderResignedMembers()}\r\n            </tbody>\r\n            <tfoot>\r\n            </tfoot>\r\n          </table>\r\n        </div>\r\n      );\r\n    }\r\n  }\r\n}\r\n", "import React from 'react';\r\nimport $ from 'jquery';\r\nimport moment from 'moment';\r\nimport Select from 'react-select';\r\nimport Toggle from 'react-toggle';\r\nimport \"react-toggle/style.css\";\r\n\r\nimport SkCubeLoading from '../../SkCubeLoading';\r\nimport ErrorDisplay from '../../ErrorDisplay';\r\nimport {numberWithCommas} from '../../utils/helpers';\r\n\r\nexport default class ShowComponent extends React.Component {\r\n  constructor(props) {\r\n    super(props);\r\n\r\n    this.state  = {\r\n      isLoading: true,\r\n      data: false,\r\n      errors: false,\r\n      centers: [],\r\n      officers: [],\r\n      currentCenterId: \"\",\r\n      currentOfficerId: \"\"\r\n    };\r\n  }\r\n\r\n  fetch(options) {\r\n\r\n    var context       = this;\r\n    var centerId      = options.centerId;\r\n    var officerId     = options.officerId;\r\n\r\n    var data  = {\r\n      id: this.props.id,\r\n      center_id: centerId,\r\n      officer_id: officerId\r\n    }\r\n    \r\n    this.setState({\r\n      currentCenterId: centerId,\r\n      currentOfficerId: officerId\r\n    });\r\n\r\n    $.ajax({\r\n\r\n      url: \"/api/v1/data_stores/members_in_good_standing/fetch\",\r\n      data: data,\r\n      method: 'GET',\r\n\r\n      success: function(response) {\r\n        context.setState({\r\n          isLoading: false,\r\n          data: response\r\n          \r\n        });\r\n      },\r\n      error: function(response) {\r\n        alert(\"Something went wrong when fetching data store\");\r\n      }\r\n    });\r\n  }\r\n\r\n  componentDidMount() {\r\n    var context = this;\r\n\r\n    $.ajax({\r\n      url: \"/api/v1/data_stores/members_in_good_standing/fetch\",\r\n      data: {\r\n        id: context.props.id\r\n      },\r\n\r\n      method: 'GET',\r\n\r\n      success: function(response) {\r\n        console.log(response);\r\n        var centers       = response.data.centers;\r\n        var officers      = response.data.officers;\r\n\r\n        context.setState({\r\n          isLoading: false,\r\n          data: response,\r\n          centers: centers,\r\n          officers: officers\r\n        });\r\n      },\r\n      error: function(response) {\r\n        console.log(response);\r\n        alert(\"Something went wrong when fetching data store\");\r\n      }\r\n    });\r\n  }\r\n\r\n  renderErrorDisplay() {\r\n    if(this.state.errors) {\r\n      return  (\r\n        <ErrorDisplay\r\n          errors={this.state.errors}\r\n        />\r\n      );\r\n    }\r\n  }\r\n\r\n  handleCenterChanged(event) {\r\n    this.fetch({\r\n      centerId: event.target.value,\r\n      officerId: this.state.currentOfficerId\r\n    });\r\n  }\r\n\r\n  \r\n\r\n  handleOfficerChanged(event) {\r\n    this.fetch({\r\n      centerId: this.state.currentCenterId,\r\n      officerId: event.target.value\r\n    });\r\n  }\r\n\r\n  renderFilter() {\r\n    \r\n     var centerOptions   = [\r\n      <option key={\"center-select\"} value=\"\">\r\n        -- SELECT --\r\n      </option>\r\n    ];\r\n\r\n    var officerOptions  = [\r\n      <option key={\"officer-select\"} value=\"\">\r\n        -- SELECT --\r\n      </option>\r\n    ];\r\n\r\n    for(var i = 0; i < this.state.officers.length; i++) {\r\n      officerOptions.push(\r\n        <option key={\"officer-\" + i} value={this.state.officers[i].id}>\r\n          {this.state.officers[i].last_name}, {this.state.officers[i].first_name}\r\n        </option>\r\n      );\r\n    }\r\n   for(var i = 0; i < this.state.centers.length; i++) {\r\n        centerOptions.push(\r\n          <option key={\"center-\" + i} value={this.state.centers[i].id}>\r\n            {this.state.centers[i].name}\r\n          </option>\r\n        );\r\n      }\r\n\r\n  \r\n\r\n    return  (\r\n      <div className=\"row\">\r\n        <div className=\"col\">\r\n          <div className=\"form-group\">\r\n            <label>\r\n              Center:\r\n            </label>\r\n            <select value={this.state.currentCenterId} onChange={this.handleCenterChanged.bind(this)} className=\"form-control\">\r\n              {centerOptions}\r\n            </select>\r\n          </div>\r\n        </div>\r\n        <div className=\"col\">\r\n          <div className=\"form-group\">\r\n            <label>\r\n              Officer:\r\n            </label>\r\n            <select value={this.state.currentOfficerId} onChange={this.handleOfficerChanged.bind(this)} className=\"form-control\">\r\n              {officerOptions}\r\n            </select>\r\n          </div>\r\n        </div>\r\n      </div>\r\n    );\r\n  }\r\nrenderMembersData(){\r\n    var rows  = [];\r\n    var member_data = this.state.data.data.records;\r\n\r\n    for(var i = 0; i < member_data.length; i++) {\r\n      rows.push(\r\n        <tr key={\"member_data-item-\" + i}>\r\n        <td>\r\n            {[i+1]}\r\n          </td>\r\n          <td>\r\n            <a href={\"/members/\" + member_data[i].id+\"/display\"} target='_blank'>\r\n            {member_data[i].last_name + \", \" + member_data[i].first_name + \" \" + member_data[i].middle_name} </a>\r\n          </td>\r\n          <td>\r\n            {member_data[i].identification_number}\r\n          </td>\r\n          <td className=\"text-muted\">\r\n            {member_data[i].center.name}\r\n          </td>\r\n           <td className=\"text-muted\">\r\n            {member_data[i].officer.last_name + \", \"+member_data[i].officer.first_name}\r\n          </td>\r\n        </tr>\r\n      );\r\n    }\r\n    return rows;\r\n}\r\n renderHeader() {\r\n    var headers = [];\r\n    headers.push(\r\n      <th key=\"index\">\r\n        \r\n      </th>\r\n    );\r\n    headers.push(\r\n      <th key=\"member-header\">\r\n        Member\r\n      </th>\r\n    );\r\n    headers.push(\r\n      <th key=\"membership-header\">\r\n        Identification Number\r\n      </th>\r\n    );\r\n    headers.push(\r\n      <th key=\"center-header\">\r\n       Center\r\n      </th>\r\n    );\r\n    headers.push(\r\n      <th key=\"officer-header\">\r\n        Officer\r\n      </th>\r\n    );\r\n    return headers;\r\n  }\r\n  \r\n\r\n  render() {\r\n    if(this.state.isLoading) {\r\n      return  (\r\n        <SkCubeLoading/>\r\n      );\r\n    } else {\r\n       var total_new_members = this.state.data.data.num_new;\r\n       var total_resigned_members = this.state.data.data.num_resigned;\r\n      return  (\r\n        <div>\r\n          {this.renderFilter()}\r\n          <table className=\"table table-sm table-bordered table-hover\">\r\n            <thead>\r\n            <tr>\r\n              {this.renderHeader()}\r\n            </tr>\r\n            </thead>\r\n            <tbody>\r\n             {this.renderMembersData()}\r\n            </tbody>\r\n            <tfoot>\r\n            </tfoot>\r\n          </table>\r\n        </div>\r\n      );\r\n    }\r\n  }\r\n}\r\n", "import React from 'react';\r\nimport $ from 'jquery';\r\nimport moment from 'moment';\r\nimport Select from 'react-select';\r\nimport Toggle from 'react-toggle';\r\nimport \"react-toggle/style.css\";\r\n\r\n\r\nimport SkCubeLoading from '../../SkCubeLoading';\r\nimport ErrorDisplay from '../../ErrorDisplay';\r\nimport {numberWithCommas} from '../../utils/helpers';\r\n\r\nexport default class ShowComponent extends React.Component {\r\n  constructor(props) {\r\n    super(props);\r\n\r\n    this.state  = {\r\n      isLoading: true,\r\n      data: false,\r\n      errors: false,\r\n      centers: [],\r\n      currentCenterId: \"\",\r\n      maturity_year: []\r\n    };\r\n  }\r\n\r\n  fetch(options) {\r\n\r\n    var context       = this;\r\n    var centerId = options.centerId;\r\n    var year = options.year;\r\n   \r\n\r\n    var data  = {\r\n      id: this.props.id,\r\n      center_id: centerId,\r\n      year: year\r\n      \r\n    }\r\n    this.setState({\r\n      currentCenterId: centerId,\r\n      maturity_year: year\r\n    });\r\n    $.ajax({\r\n\r\n      url: \"/api/v1/data_stores/for_writeoff/fetch\",\r\n      data: data,\r\n      method: 'GET',\r\n\r\n      success: function(response) {\r\n        context.setState({\r\n          isLoading: false,\r\n          data: response\r\n          \r\n        });\r\n      },\r\n      error: function(response) {\r\n        alert(\"Something went wrong when fetching data store\");\r\n      }\r\n    });\r\n  }\r\n\r\n  componentDidMount() {\r\n    var context = this;\r\n\r\n    $.ajax({\r\n      url: \"/api/v1/data_stores/for_writeoff/fetch\",\r\n      data: {\r\n        id: context.props.id\r\n      },\r\n\r\n      method: 'GET',\r\n\r\n      success: function(response) {\r\n        console.log(response);\r\n        var centers       = response.data.centers;\r\n        var year     = response.data.maturity_year;\r\n        context.setState({\r\n          isLoading: false,\r\n          data: response,\r\n          centers:centers,\r\n          years: year\r\n        });\r\n      },\r\n      error: function(response) {\r\n        console.log(response);\r\n        alert(\"Something went wrong when fetching data store\");\r\n      }\r\n    });\r\n  }\r\n\r\n  renderErrorDisplay() {\r\n    if(this.state.errors) {\r\n      return  (\r\n        <ErrorDisplay\r\n          errors={this.state.errors}\r\n        />\r\n      );\r\n    }\r\n  }\r\n  handleCenterChanged(event) {\r\n      this.fetch({\r\n        centerId: event.target.value,\r\n        years: this.state.currentOfficerId\r\n      });\r\n    }\r\n\r\n  \r\n\r\n  handleYearChanged(event) {\r\n    this.fetch({\r\n      centerId: this.state.currentCenterId,\r\n      year: event.target.value\r\n    });\r\n  }\r\n  \r\n  renderFilter(){\r\n    var centerOptions   = [\r\n      <option key={\"center-select\"} value=\"\">\r\n        -- SELECT --\r\n      </option>\r\n    ];\r\n\r\n    var yearOptions  = [\r\n      <option key={\"yaer-select\"} value=\"\">\r\n        -- SELECT --\r\n      </option>\r\n    ];\r\n\r\n    for(var i = 0; i < this.state.years.length; i++) {\r\n      yearOptions.push(\r\n        <option key={\"year-\" + i} value={this.state.years[i].id}>\r\n          {this.state.years[i]}\r\n        </option>\r\n      );\r\n    }\r\n\r\n   for(var i = 0; i < this.state.centers.length; i++) {\r\n        centerOptions.push(\r\n          <option key={\"center-\" + i} value={this.state.centers[i].id}>\r\n            {this.state.centers[i].name}\r\n          </option>\r\n        );\r\n      }\r\n\r\n  \r\n\r\n    return  (\r\n      <div className=\"row\">\r\n        <div className=\"col\">\r\n          <div className=\"form-group\">\r\n            <label>\r\n              Center:\r\n            </label>\r\n            <select value={this.state.currentCenterId} onChange={this.handleCenterChanged.bind(this)} className=\"form-control\">\r\n              {centerOptions}\r\n            </select>\r\n          </div>\r\n        </div>\r\n\r\n        <div className=\"col\">\r\n          <div className=\"form-group\">\r\n            <label>\r\n              Maturity Year\r\n            </label>\r\n            <select value={this.state.year} onChange={this.handleYearChanged.bind(this)} className=\"form-control\">\r\n              {yearOptions}\r\n            </select>\r\n          </div>\r\n        </div>\r\n      </div>\r\n    );\r\n\r\n  }\r\n\r\n\r\n  renderMembersData(){\r\n      var rows  = [];\r\n      var member_data = this.state.data.data.records;\r\n\r\n      for(var i = 0; i < member_data.length; i++) {\r\n        rows.push(\r\n          <tr key={\"member_data-item-\" + i} style={{width: \"20px\" }}>\r\n            <td>\r\n            {i+1}\r\n            </td>\r\n            <td className=\"text-left\" style={{width: \"250px\" }}>\r\n              <a href={\"/members/\" + member_data[i].id+\"/display\"} target='_blank' >\r\n              {member_data[i].last_name + \", \" + member_data[i].first_name + \" \" + member_data[i].middle_name} </a>\r\n            </td>\r\n            <td className=\"text-center\">\r\n              {member_data[i].member_id}\r\n            </td>\r\n            <td className=\"text-center\">\r\n              {member_data[i].member_status}\r\n            </td>\r\n            <td className=\"text-center\">\r\n              <a href={\"/loans/\" + member_data[i].loan_id} target='_blank'>\r\n              {member_data[i].loan_product}</a>\r\n            </td>\r\n            <td className=\"text-center\">\r\n              {member_data[i].maturity_date}\r\n            </td>\r\n            <td className=\"text-center\">\r\n              {member_data[i].loan_status}\r\n            </td>\r\n            <td className=\"text-end\">\r\n              {numberWithCommas(member_data[i].principal_balance)}\r\n            </td>\r\n            <td className=\"text-end\">\r\n              {numberWithCommas(member_data[i].interest_balance)}\r\n            </td>\r\n            <td className=\"text-end\">\r\n              <a href={\"/savings_accounts/\" + member_data[i].psa_id} target='_blank'>\r\n              {numberWithCommas(member_data[i].psa_balance)}</a>\r\n            </td>\r\n            <td className=\"text-end\">\r\n              <a href={\"/savings_accounts/\" + member_data[i].rsa_id} target='_blank'>\r\n              {numberWithCommas(member_data[i].rsa_balance)}</a>\r\n            </td>\r\n            <td className=\"text-end\">\r\n              <a href={\"/savings_accounts/\" + member_data[i].mbs_id} target='_blank'>\r\n              {numberWithCommas(member_data[i].mbs_balance)}</a>\r\n            </td>\r\n            <td className=\"text-end\">\r\n              <a href={\"/savings_accounts/\" + member_data[i].gk_id} target='_blank'>\r\n              {numberWithCommas(member_data[i].gk_balance)}</a>\r\n            </td>\r\n            <td className=\"text-end\">\r\n              <a href={\"/insurance_accounts/\" + member_data[i].rf_id} target='_blank'>\r\n              {numberWithCommas(member_data[i].rf_balance)}</a>\r\n            </td>\r\n            <td className=\"text-end\">\r\n              <a href={\"/insurance_accounts/\" + member_data[i].eq_id} target='_blank'>\r\n              {numberWithCommas(member_data[i].eq_balance)}</a>\r\n            </td>\r\n            <td className=\"text-end\">\r\n              <a href={\"/equity_accounts/\" + member_data[i].cbu_id} target='_blank'>\r\n              {numberWithCommas(member_data[i].cbu_balance)}</a>\r\n            </td>\r\n            <td className=\"text-end\">\r\n              <a href={\"/equity_accounts/\" + member_data[i].sharecap_id} target='_blank'>\r\n              {numberWithCommas(member_data[i].sharecap_balance)}</a>\r\n            </td>\r\n            <td className=\"text-center\">\r\n              {member_data[i].center['name']}\r\n            </td>\r\n\r\n\r\n            \r\n          </tr>\r\n        );\r\n      }\r\n      return rows;\r\n  }\r\n renderHeader() {\r\n    var headers = [];\r\n    headers.push(\r\n      <th key=\"num\" className=\"text-center\" >\r\n        \r\n      </th>\r\n    );\r\n    headers.push(\r\n      <th key=\"member-header\" className=\"text-center\">\r\n        Member\r\n      </th>\r\n    );\r\n    headers.push(\r\n      <th key=\"identification-number\" className=\"text-center\">\r\n        Identification Number\r\n      </th>\r\n    );\r\n     headers.push(\r\n      <th key=\"member-status\" className=\"text-center\">\r\n        Member Status\r\n      </th>\r\n    );\r\n     headers.push(\r\n      <th key=\"loan-product\" className=\"text-center\">\r\n        Loan Product\r\n      </th>\r\n    );\r\n     headers.push(\r\n      <th key=\"maturity-date\" className=\"text-center\">\r\n        Maturity Date\r\n      </th>\r\n    );\r\n    headers.push(\r\n      <th key=\"loan-status\" className=\"text-center\">\r\n        Loan Status\r\n      </th>\r\n    );\r\n    headers.push(\r\n      <th key=\"princ-balance\" className=\"text-center\">\r\n        Principal Bal\r\n      </th>\r\n    );\r\n    headers.push(\r\n      <th key=\"interest-balance\" className=\"text-center\">\r\n        Interest Bal\r\n      </th>\r\n    );\r\n    headers.push(\r\n      <th key=\"psa-balance\" className=\"text-center\">\r\n        PSA Bal\r\n      </th>\r\n    );\r\n\r\n    headers.push(\r\n      <th key=\"rsa-balance\" className=\"text-center\">\r\n       RSA Balance\r\n      </th>\r\n    );\r\n    headers.push(\r\n      <th key=\"rsa-balance\" className=\"text-center\">\r\n       MBS Balance\r\n      </th>\r\n    );\r\n    headers.push(\r\n      <th key=\"gk-balance\" className=\"text-center\">\r\n       GK Bal\r\n      </th>\r\n    );\r\n    headers.push(\r\n      <th key=\"rf-balance\" className=\"text-center\">\r\n       RF Bal\r\n      </th>\r\n    );\r\n    headers.push(\r\n      <th key=\"lf-balance\" className=\"text-center\">\r\n       Equity Account Balance\r\n      </th>\r\n    );\r\n    headers.push(\r\n      <th key=\"cbu-balance\" className=\"text-center\">\r\n       CBU Bal\r\n      </th>\r\n    );\r\n\r\n    headers.push(\r\n      <th key=\"share-cap-balance\" className=\"text-center\">\r\n       Share Capital Bal\r\n      </th>\r\n    );\r\n    headers.push(\r\n      <th key=\"center-header\" className=\"text-center\">\r\n       Center\r\n      </th>\r\n    );\r\n    return headers;\r\n  }\r\n  \r\n\r\n  render() {\r\n    if(this.state.isLoading) {\r\n      return  (\r\n        <SkCubeLoading/>\r\n      );\r\n    } else {\r\n      return  (\r\n        <div>\r\n        {this.renderFilter()}\r\n        <div className=\"tableWritoff\">\r\n          <table className=\"table table-lg table-bordered table-responsive\">\r\n            <thead>\r\n            <tr>\r\n              {this.renderHeader()}\r\n            </tr>\r\n            </thead>\r\n            <tbody>\r\n             {this.renderMembersData()}\r\n            </tbody>\r\n          </table>\r\n          </div>\r\n        </div>\r\n      );\r\n    }\r\n  }\r\n}\r\n", "import React from 'react';\nimport $ from 'jquery';\n\n\nexport default class MembershpTypesShow extends React.Component {\n\n  render() {\n   return (\n    <div>\n          \n    </div>\n   ) \n  }\n\n}\n", "import React, { useState, useEffect } from \"react\";\n\nexport default function AdministrationDashboard() {\n  return (\n    <>\n      <h2>\n        Administration\n      </h2>\n    </>\n  )\n}\n", "import React, { useState, useEffect } from \"react\";\nimport Modal from 'react-bootstrap/Modal';\nimport Button from 'react-bootstrap/Button';\nimport axios from 'axios';\nimport ErrorList from '../ErrorList';\nimport ClosingRecordsList from './ClosingRecordsList';\nimport ClosingRecordsControls from './ClosingRecordsControls';\n\nexport default function ClosingRecordsManager(props) {\n  const [recordTypes] = useState([\n    \"TRIAL_BALANCE\",\n    \"REPAYMENT_RATES\",\n    \"GENERAL_LEDGER\",\n    \"BALANCE_SHEET\",\n    \"INCOME_STATEMENT\",\n    \"SOA_FUNDS\",\n    \"SOA_EXPENSES\",\n    \"SOA_LOANS\",\n    \"MANUAL_AGING\",\n    \"PERSONAL_FUNDS\",\n    \"MEMBER_COUNTS\",\n    \"MONTHLY_NEW_AND_RESIGNED\"\t  \n  ]);\n\n  const [modalNewIsOpen, setModalNewIsOpen] = useState(false);\n  const [isLoading, setIsLoading]           = useState(false);\n  const [recordType, setRecordType]         = useState(recordTypes[0]);\n  const [currentDate, setCurrentDate]       = useState(\"\");\n  const [errors, setErrors]                 = useState([]);\n  const [branches]                          = useState(props.branches);\n  const [branchId, setBranchId]             = useState(props.branches[0].id);\n  const [token]                             = useState(props.token);\n  const [records, setRecords]               = useState([]);\n  const [closingRecords, setClosingRecords] = useState([]);\n  const [dataStoreId, setDataStoreId]       = useState(\"\");\n  const [removeModalIsOpen, setRemoveModalIsOpen] = useState(false);\n  const [recordToRemove, setRecordToRemove] = useState(null);\n\n\n  const handleRemoveRecord = (o) => {\n    setRecordToRemove(o);\n    setRemoveModalIsOpen(true);\n  };\n\n  const confirmRemoveRecord = () => {\n    setIsLoading(true);\n\n    const payload = {\n\tdata_store_id: recordToRemove.data_store_id,\n      \ttype: recordToRemove.type\n    }\n\n    const headers = {\n      'X-KOINS-HQ-TOKEN': token\n    }\n\n    const options = {\n      headers: headers\n    }\n\n    axios.post(\n      '/api/closing_records/remove',\n      payload,\n      options\n    ).then((res) => {\n\t    //\n      console.log(res);\n      setIsLoading(false);\n      setRemoveModalIsOpen(false);\n      loadRecords(branchId, currentDate, recordType);\n      loadClosingRecords(branchId, currentDate, recordType);\n      setRecordToRemove(null);\n    }).catch((error) => {\n      console.log(error.response.data);\n      setErrors(error.response.data.errors);\n      setIsLoading(false);\n    });\n  };\n\n  const handleCurrentDateChanged = (newCurrentDate) => {\n    setIsLoading(true);\n    setErrors([]);\n    setCurrentDate(newCurrentDate);\n\n    loadRecords(branchId, newCurrentDate, recordType);\n    loadClosingRecords(branchId, newCurrentDate, recordType);\n  }\n\n  const branchName = () => {\n    name = \"\";\n\n    branches.forEach((o) => {\n      if(o.id == branchId) {\n        name = o.name;\n      }\n    });\n\n    return name;\n  }\n\n  const loadClosingRecords = (_branchId, _currentDate, _recordType) => {\n    const payload = {\n      branch_id:    _branchId,\n      closing_date: _currentDate,\n      record_type:  _recordType\n    }\n\n    const headers = {\n      'X-KOINS-HQ-TOKEN': token\n    }\n\n    const options = {\n      headers: headers,\n      params: payload\n    }\n\n    axios.get(\n      '/api/closing_records/',\n      options\n    ).then((res) => {\n      console.log(res.data.records);\n      setClosingRecords(res.data.records);\n      setIsLoading(false);\n\n      if(res.data.records.length > 0) {\n        setDataStoreId(res.data.records[0].id)\n      } else {\n        setDataStoreId(\"\")\n      }\n    }).catch((error) => {\n      console.log(error.response.data);\n      setErrors(error.response.data.errors);\n      setIsLoading(false);\n    })\n  }\n\n  const loadRecords = (_branchId, _currentDate, _recordType) => {\n    const payload = {\n      branch_id:    _branchId,\n      closing_date: _currentDate,\n      record_type:  _recordType\n    }\n\n    const headers = {\n      'X-KOINS-HQ-TOKEN': token\n    }\n\n    const options = {\n      headers: headers,\n      params: payload\n    }\n\n    axios.get(\n      '/api/closing_records/records',\n      options\n    ).then((res) => {\n      console.log(res.data.records);\n      setRecords(res.data.records);\n      setIsLoading(false);\n\n      if(res.data.records.length > 0) {\n        console.log(res.data.records[0].id);\n        setDataStoreId(res.data.records[0].id)\n      } else {\n        setDataStoreId(\"\")\n      }\n    }).catch((error) => {\n      console.log(error.response.data);\n      setErrors(error.response.data.errors);\n      setIsLoading(false);\n    })\n  }\n\n  const handleRegisterConfirm = () => {\n    setIsLoading(true);\n    setErrors([]);\n\n    const payload = {\n      branch_id:      branchId,\n      closing_date:   currentDate,\n      record_type:    recordType,\n      data_store_id:  dataStoreId\n    }\n\n    const headers = {\n      'X-KOINS-HQ-TOKEN': token\n    }\n\n    const options = {\n      headers: headers\n    }\n\n    axios.post(\n      '/api/closing_records',\n      payload,\n      options\n    ).then((res) => {\n      console.log(res);\n      setIsLoading(false);\n      setModalNewIsOpen(false);\n      loadRecords(branchId, currentDate, recordType);\n      loadClosingRecords(branchId, currentDate, recordType);\n    }).catch((error) => {\n      console.log(error.response.data);\n      setErrors(error.response.data.errors);\n      setIsLoading(false);\n    })\n  }\n\n  const handleBranchChanged = (val) => {\n    setBranchId(val);\n    loadRecords(val, currentDate, recordType);\n    loadClosingRecords(val, currentDate, recordType);\n  }\n\n  useEffect(() => {\n    loadRecords(branchId, currentDate, recordType);\n  }, [])\n  \n  return (\n\t  <>\n <Modal\n        show={removeModalIsOpen}\n        onHide={() => { setRemoveModalIsOpen(false) }}\n      >\n        <Modal.Header closeButton>\n          <Modal.Title>\n            Confirm Removal\n          </Modal.Title>\n        </Modal.Header>\n        <Modal.Body>\n          <p>\n\t\t  Are you sure you want to remove this record ?<br/>\n\t\t  type: {recordToRemove?.type}?<br/>\n\t\t  ID: {recordToRemove?.data_store_id}    \n\t  </p>\n        </Modal.Body>\n        <Modal.Footer>\n          <Button \n            variant=\"danger\"\n            onClick={confirmRemoveRecord}\n            disabled={props.isLoading}\n          >\n            Remove Record\n          </Button>\n          <Button\n            variant=\"secondary\"\n            onClick={() => { setRemoveModalIsOpen(false) }}\n            disabled={props.isLoading}\n          >\n            Cancel\n          </Button>\n        </Modal.Footer>\n      </Modal>\n      <Modal\n        show={modalNewIsOpen}\n        onHide={() => { setModalNewIsOpen(false) }}\n      >\n        <Modal.Header closeButton>\n          <Modal.Title>\n            Register Closing Record\n          </Modal.Title>\n        </Modal.Header>\n        <Modal.Body>\n          <div className=\"row\">\n            <div className=\"col\">\n              <div className=\"form-group\">\n                <label>\n                  Branch\n                </label>\n                <select \n                  className=\"form-control\" \n                  value={branchId} \n                  onChange={(event) => { handleBranchChanged(event.target.value) } }\n                  disabled={isLoading}\n                >\n                  {branches.map((o, i) => {\n                    return (\n                      <option key={\"branch-\" + o.id} value={o.id}>\n                        {o.name + \" (\" + o.current_date + \")\"}\n                      </option>\n                    )\n                  })}\n                </select>\n              </div>\n            </div>\n          </div>\n          <div className=\"row\">\n            <div className=\"col\">\n              <div className=\"form-group\">\n                <label>\n                  Record Type\n                </label>\n                <select \n                  className=\"form-control\" \n                  value={recordType} \n                  onChange={(event) => { setRecordType(event.target.value); loadRecords(branchId, currentDate, event.target.value); } }\n                  disabled={isLoading}\n                >\n                  {recordTypes.map((o, i) => {\n                    return (\n                      <option key={\"record-\" + i} value={o}>\n                        {o}\n                      </option>\n                    )\n                  })}\n                </select>\n              </div>\n            </div>\n          </div>\n          <div className=\"row\">\n            <div className=\"col\">\n              <div className=\"form-group\">\n                <label>\n                  Closing Date\n                </label>\n                <input\n                  className=\"form-control\"\n                  value={currentDate}\n                  onChange={(event) => { handleCurrentDateChanged(event.target.value) }}\n                  type=\"date\"\n                  disabled={isLoading}\n                />\n              </div>\n            </div>\n          </div>\n          <div className=\"row\">\n            <div className=\"col\">\n              <div className=\"form-group\">\n                <label>\n                  Record\n                </label>\n                <select \n                  className=\"form-control\" \n                  value={dataStoreId} \n                  onChange={(event) => { setDataStoreId(event.target.value) } }\n                  disabled={isLoading}\n                >\n                  {records.map((o, i) => {\n                    return (\n                      <option key={\"record-\" + i} value={o.id}>\n                        {o.label}\n                      </option>\n                    )\n                  })}\n                </select>\n              </div>\n            </div>\n          </div>\n          <ErrorList errors={errors}/>\n        </Modal.Body>\n        <Modal.Footer>\n          <Button \n            variant=\"primary\"\n            onClick={() => handleRegisterConfirm()}\n            disabled={isLoading}\n          >\n            Register\n          </Button>\n          <Button\n            variant=\"secondary\"\n            onClick={() => { setModalNewIsOpen(false) }}\n            disabled={isLoading}\n          >\n            Close\n          </Button>\n        </Modal.Footer>\n      </Modal>\n      <h2>\n        Closing Records\n      </h2>\n      <Button \n        className=\"btn btn-primary\"\n        onClick={() => { setModalNewIsOpen(!modalNewIsOpen) }}\n      >\n        Register Closing Record\n      </Button>\n      <hr/>\n      <h2>\n        Records\n      </h2>\n      <ClosingRecordsList \n        closingRecords={closingRecords} \n\thandleRemoveRecord={handleRemoveRecord}\n        branches={branches}\n        isLoading={isLoading}\n        handleBranchChanged={handleBranchChanged}\n        handleCurrentDateChanged={handleCurrentDateChanged}\n        branchId={branchId}\n      />\n      <ClosingRecordsControls\n        closingRecords={closingRecords}\n        token={token}\n        isLoading={isLoading}\n        setIsLoading={setIsLoading}\n        branchId={branchId}\n        closingDate={currentDate}\n        branchName={branchName()}\n      />\n    </>\n  )\n}\n", "import React from \"react\";\n\nexport default function ClosingRecordsList(props) {\n  const renderRecords = () => {\n    if(props.closingRecords.length > 0) {\n      return (\n        <table className=\"table table-bordered\">\n          <thead>\n            <tr>\n              <th>\n                Record Type\n              </th>\n              <th>\n                Closing Date\n              </th>\n              <th>\n                Status\n\t      </th>\n\t      <th>\n\t\tAction\n\t      </th>\n            </tr>\n          </thead>\n          <tbody>\n            {props.closingRecords.map((o, i) => {\t    \n\t       return (\n                <tr key={`cr-${i}`}>\n                  <td>\n                    <a href={o.path} target=\"_blank\">\n                      {o.type}\n                    </a>\n                  </td>\n                  <td>\n                    {o.closing_date}\n                  </td>\n\t\t  <td>\n                   {o.status == \"done\" ? ( \n\t\t         <span className=\"badge bg-success\">Done</span>\n\t\t    ) : o.status == \"invalid\" ? (\n\t\t         <span className=\"badge bg-danger\">Invalid</span>\n\t\t    ) : (<span className=\"badge bg-secondary\">Pending</span>\n\t\t    )}\n\t\t  </td>\n\t\t  <td>\n\t\t    {(o.status === \"done\" || o.status === \"invalid\")&& (\n                      <span\n                        className=\"badge bg-danger\"\n                        onClick={() => props.handleRemoveRecord(o)}\n                      >\n                        Remove\n\t      \t      </span>\n\t\t    )}\n\t\t    {o.branch_id}  \n                  </td>\n                </tr>\n              )\n            })}\n          </tbody>\n        </table>\n      )\n    } else {\n      return (\n        <p>\n          No closing records found.\n        </p>\n      )\n    }\n  }\n\n  return (\n    <>\n      <div className=\"row\">\n        <div className=\"col\">\n          <div className=\"form-group\">\n            <label>\n              Branch\n            </label>\n            <select\n              className=\"form-control\"\n              disabled={props.isLoading}\n              onChange={(event) => { props.handleBranchChanged(event.target.value) }}\n              value={props.branchId}\n            >\n              {props.branches.map((o) => {\n                return (\n                  <option\n                    value={o.id}\n                    key={\"branch-selection-\" + o.id}\n                  >\n                    {o.name + \" (\" + o.current_date + \")\"}\n                  </option>\n                )\n              })}\n            </select>\n          </div>\n        </div>\n        <div className=\"col\">\n          <div className=\"form-group\">\n            <label>\n              Closing Date\n            </label>\n            <input\n              className=\"form-control\"\n              value={props.currentDate}\n              onChange={(event) => { props.handleCurrentDateChanged(event.target.value) }}\n              type=\"date\"\n              disabled={props.isLoading}\n            />\n          </div>\n        </div>\n      </div>\n      <div className=\"mt-2\"/>\n      {renderRecords()}\n    </>\n  )\n}\n", "import React, { useState, useEffect } from \"react\";\nimport Modal from 'react-bootstrap/Modal';\nimport Button from 'react-bootstrap/Button';\nimport ErrorList from '../ErrorList';\nimport axios from 'axios';\n\nexport default function ClosingRecordsControls(props) {\n\n  const [modalIsOpen, setModalIsOpen] = useState(false);\n  const [errors, setErrors]           = useState([]);\n  const [token]                       = useState(props.token);\n      \n  const isComplete = () => {\n    numComplete = 0;\n\n    if(props.closingRecords.length > 0) {\n      props.closingRecords.forEach((o) => {\n        if(o.status == \"done\") {\n          numComplete += 1;\n        }\n      });\n\n      return numComplete == props.closingRecords.length;\n    } else {\n      return false;\n    }\n  }\n\n  const handleConfirmation = () => {\n    props.setIsLoading(true);\n\n    setErrors([]);\n\n    const payload = {\n      branch_id:      props.branchId,\n      closing_date:   props.closingDate\n    }\n\n    const headers = {\n      'X-KOINS-HQ-TOKEN': token\n    }\n\n    const options = {\n      headers: headers\n    }\n\n    axios.post(\n      '/api/branches/close',\n      payload,\n      options\n    ).then((res) => {\n      console.log(res);\n      alert(\"Successfully closed branch!\");\n      props.setIsLoading(false);\n      setModalIsOpen(false);\n    }).catch((error) => {\n      console.log(error.response.data);\n      setErrors(error.response.data.errors);\n      props.setIsLoading(false);\n    })\n  }\n\n  return (\n    <>\n      <Modal\n        show={modalIsOpen}\n        onHide={() => { setModalIsOpen(false) }}\n      >\n        <Modal.Header closeButton>\n          <Modal.Title>\n            Confirm Closing\n          </Modal.Title>\n        </Modal.Header>\n        <Modal.Body>\n          <p>\n            Are you sure you want to close {props.branchName}?\n          </p>\n          <ErrorList errors={errors}/>\n        </Modal.Body>\n        <Modal.Footer>\n          <Button \n            variant=\"primary\"\n            onClick={() => handleConfirmation()}\n            disabled={props.isLoading}\n          >\n            Confirm\n          </Button>\n          <Button\n            variant=\"secondary\"\n            onClick={() => { setModalIsOpen(false) }}\n            disabled={props.isLoading}\n          >\n            Close\n          </Button>\n        </Modal.Footer>\n      </Modal>\n      {(() => {\n        if(isComplete()) {\n          return (\n            <div className=\"card\">\n              <div className=\"card-body\">\n                <h4>\n                  Close Branch\n                </h4>\n                <button \n                  className=\"btn btn-primary\"\n                  onClick={() => { setModalIsOpen(true) }}\n                >\n                  Close {props.branchName}\n                </button>\n              </div>\n            </div>\n          )\n        }\n      })()}\n    </>\n  )\n}\n", "import \n  React, { \n  useState, \n  useEffect, \n  useMemo, \n  useRef\n} from \"react\";\nimport Modal from 'react-bootstrap/Modal';\nimport {\n  MapContainer,\n  Marker,\n  Popup,\n  TileLayer,\n  useMap\n} from 'react-leaflet';\nimport axios from \"axios\";\n\nexport default function AdministrationBranchesShow(props) {\n  const [token]                             = useState(props.token);\n  const [data, setData]                     = useState(props.data);\n  const [isMapModalOpen, setIsMapModalOpen] = useState(false);\n  const [isLoading, setIsLoading]           = useState(false);\n  const [draggable, setIsDraggable]         = useState(true);\n\n  const markerRef = useRef(null);\n\n  const mapEventHandlers = useMemo(\n    () => ({\n      dragend() {\n        const marker = markerRef.current\n        if (marker != null) {\n          let temp  = {...data};\n          let pos   = marker.getLatLng();\n\n          console.log(pos);\n\n          temp.lat  = pos.lat;\n          temp.lon  = pos.lng;\n\n          console.log(`lat: ${temp.lat} lon: ${temp.lon}`);\n          setData(temp);\n        }\n      },\n    }),\n    [],\n  )\n\n  return (\n    <>\n      <Modal \n        show={isMapModalOpen}\n        size=\"xl\"\n      >\n        <Modal.Header>\n          <Modal.Title>\n            Setup Branch Coordinates\n          </Modal.Title>\n        </Modal.Header>\n        <Modal.Body>\n          <MapContainer\n            center={[data.lat, data.lon]}\n            zoom={13}\n            scrollWheelZoom={true}\n            style={{\n              height: \"500px\"\n            }}\n            eventHandlers={mapEventHandlers}\n          >\n            <TileLayer\n              attribution='&copy; <a href=\"https://www.openstreetmap.org/copyright\">OpenStreetMap</a> contributors'\n              url=\"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png\"\n            />\n            <Marker \n              position={{ lat: data.lat,  lon: data.lon }}\n              draggable={draggable}\n              ref={markerRef}\n              eventHandlers={mapEventHandlers}\n            >\n            </Marker>\n          </MapContainer>\n          <hr/>\n          <div className=\"row\">\n            <div className=\"col-md-6 col-xs-12\">\n              <div className=\"form-group\">\n                <label>\n                  Lat\n                </label>\n                <input\n                  disabled={isLoading}\n                  className=\"form-control\"\n                  type=\"number\"\n                  value={data.lat}\n                  onChange={(event) => {\n                    let temp = {...data};\n                    temp.lat = event.target.value;\n                    setData(temp);\n                  }}\n                />\n              </div>\n            </div>\n            <div className=\"col-md-6 col-xs-12\">\n              <div className=\"form-group\">\n                <label>\n                  Lon\n                </label>\n                <input\n                  disabled={isLoading}\n                  className=\"form-control\"\n                  type=\"number\"\n                  value={data.lon}\n                  onChange={(event) => {\n                    let temp = {...data};\n                    temp.lon = event.target.value;\n                    setData(temp);\n                  }}\n                />\n              </div>\n            </div>\n          </div>\n          <hr/>\n        </Modal.Body>\n        <Modal.Footer>\n          <button\n            disabled={isLoading}\n            className=\"btn btn-primary\"\n            onClick={() => {\n              setIsLoading(true);\n              setIsDraggable(false);\n\n              axios.post(\n                \"/api/branches/update_coordinates\",\n                {\n                  id: data.id,\n                  lat: data.lat,\n                  lon: data.lon\n                },\n                {\n                  headers: {\n                    \"X-KOINS-HQ-TOKEN\": token\n                  }\n                }\n              ).then((res) => {\n                setIsLoading(false);\n                setIsDraggable(true);\n              }).catch((error) => {\n                console.log(error);\n                alert(\"Error in updating coordinates!\");\n                setIsLoading(false);\n                setIsDraggable(true);\n              });\n            }}\n          >\n            <i className=\"bi bi-check me-2\"/>\n            Save\n          </button>\n          <button\n            disabled={isLoading}\n            className=\"btn btn-secondary\"\n            onClick={() => {\n              setIsMapModalOpen(false);\n            }}\n          >\n            <i className=\"bi bi-x me-2\"/>\n            Close\n          </button>\n        </Modal.Footer>\n      </Modal>\n      <div className=\"row\">\n        <div className=\"col-md-6 col-xs-12\">\n          <h2>\n            {data.name}\n          </h2>\n        </div>\n        <div className=\"col-md-6 col-xs-12 text-end\">\n          <button\n            className=\"btn btn-success\"\n            onClick={() => {\n              window.location.href=`/administration/branches/${data.id}/edit`;\n            }}\n          >\n            <i className=\"bi bi-pencil me-2\"/>\n            Edit\n          </button>\n          <button\n            className=\"btn btn-secondary ms-4\"\n            onClick={() => {\n              setIsMapModalOpen(true);\n            }}\n          >\n            <i className=\"bi bi-map me-2\"/>\n            Map\n          </button>\n        </div>\n      </div>\n      <hr/>\n      <table className=\"table table-bordered table-sm\">\n        <tbody>\n          <tr>\n            <th>\n              Color\n            </th>\n            <th style={{ backgroundColor: `${data.color}`}}>\n            </th>\n          </tr>\n          <tr>\n            <th>\n              OR Prefix\n            </th>\n            <td>\n              {data.or_prefix}\n            </td>\n          </tr>\n          <tr>\n            <th>\n              OR Current Max\n            </th>\n            <td>\n              {data.or_current_max}\n            </td>\n          </tr>\n          <tr>\n            <th>\n              OR Counter\n            </th>\n            <td>\n              {data.or_counter}\n            </td>\n          </tr>\n          <tr>\n            <th>\n              AR Prefix\n            </th>\n            <td>\n              {data.ar_prefix}\n            </td>\n          </tr>\n          <tr>\n            <th>\n              AR Current Max\n            </th>\n            <td>\n              {data.ar_current_max}\n            </td>\n          </tr>\n          <tr>\n            <th>\n              AR Counter\n            </th>\n            <td>\n              {data.ar_counter}\n            </td>\n          </tr>\n        </tbody>\n      </table>\n      <hr/>\n      <h5>\n        Centers\n      </h5>\n      <hr/>\n      <table className=\"table table-bordered table-sm\">\n        <thead>\n          <tr>\n            <th>\n              Name\n            </th>\n            <th>\n              SO\n            </th>\n            <th>\n              Meeting Day\n            </th>\n            <th className=\"text-center\">\n              # Members\n            </th>\n          </tr>\n        </thead>\n        <tbody>\n          {data.centers.map((center) => {\n            return (\n              <tr key={`center-${center.id}`}>\n                <td>\n                  <a href={`/administration/centers/${center.id}`}>\n                    {center.name}\n                  </a>\n                </td>\n                <td>\n                  {center.user}\n                </td>\n                <td>\n                  {center.meeting_day_display}\n                </td>\n                <td>\n                  {center.member_count}\n                </td>\n              </tr>\n            )\n          })}\n        </tbody>\n      </table>\n    </>\n  )\n}\n", "import \n  React, { \n  useState, \n  useEffect, \n  useMemo, \n  useRef\n} from \"react\";\nimport Modal from 'react-bootstrap/Modal';\nimport {\n  MapContainer,\n  Marker,\n  Popup,\n  TileLayer,\n  useMap\n} from 'react-leaflet';\nimport axios from \"axios\";\n\nexport default function AdministrationCentersShow(props) {\n  const [token]                             = useState(props.token);\n  const [data, setData]                     = useState(props.data);\n  const [isMapModalOpen, setIsMapModalOpen] = useState(false);\n  const [isLoading, setIsLoading]           = useState(false);\n  const [draggable, setIsDraggable]         = useState(true);\n\n  const markerRef = useRef(null);\n\n  const mapEventHandlers = useMemo(\n    () => ({\n      dragend() {\n        const marker = markerRef.current\n        if (marker != null) {\n          let temp  = {...data};\n          let pos   = marker.getLatLng();\n\n          console.log(pos);\n\n          temp.lat  = pos.lat;\n          temp.lon  = pos.lng;\n\n          console.log(`lat: ${temp.lat} lon: ${temp.lon}`);\n          setData(temp);\n        }\n      },\n    }),\n    [],\n  )\n\n  return (\n    <>\n      <Modal \n        show={isMapModalOpen}\n        size=\"xl\"\n      >\n        <Modal.Header>\n          <Modal.Title>\n            Setup Center Coordinates\n          </Modal.Title>\n        </Modal.Header>\n        <Modal.Body>\n          <MapContainer\n            center={[data.lat, data.lon]}\n            zoom={13}\n            scrollWheelZoom={true}\n            style={{\n              height: \"500px\"\n            }}\n            eventHandlers={mapEventHandlers}\n          >\n            <TileLayer\n              attribution='&copy; <a href=\"https://www.openstreetmap.org/copyright\">OpenStreetMap</a> contributors'\n              url=\"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png\"\n            />\n            <Marker \n              position={{ lat: data.lat,  lon: data.lon }}\n              draggable={draggable}\n              ref={markerRef}\n              eventHandlers={mapEventHandlers}\n            >\n            </Marker>\n          </MapContainer>\n          <hr/>\n          <div className=\"row\">\n            <div className=\"col-md-6 col-xs-12\">\n              <div className=\"form-group\">\n                <label>\n                  Lat\n                </label>\n                <input\n                  disabled={isLoading}\n                  className=\"form-control\"\n                  type=\"number\"\n                  value={data.lat}\n                  onChange={(event) => {\n                    let temp = {...data};\n                    temp.lat = event.target.value;\n                    setData(temp);\n                  }}\n                />\n              </div>\n            </div>\n            <div className=\"col-md-6 col-xs-12\">\n              <div className=\"form-group\">\n                <label>\n                  Lon\n                </label>\n                <input\n                  disabled={isLoading}\n                  className=\"form-control\"\n                  type=\"number\"\n                  value={data.lon}\n                  onChange={(event) => {\n                    let temp = {...data};\n                    temp.lon = event.target.value;\n                    setData(temp);\n                  }}\n                />\n              </div>\n            </div>\n          </div>\n          <hr/>\n        </Modal.Body>\n        <Modal.Footer>\n          <button\n            disabled={isLoading}\n            className=\"btn btn-primary\"\n            onClick={() => {\n              setIsLoading(true);\n              setIsDraggable(false);\n\n              axios.post(\n                \"/api/centers/update_coordinates\",\n                {\n                  id: data.id,\n                  lat: data.lat,\n                  lon: data.lon\n                },\n                {\n                  headers: {\n                    \"X-KOINS-HQ-TOKEN\": token\n                  }\n                }\n              ).then((res) => {\n                setIsLoading(false);\n                setIsDraggable(true);\n              }).catch((error) => {\n                console.log(error);\n                alert(\"Error in updating coordinates!\");\n                setIsLoading(false);\n                setIsDraggable(true);\n              });\n            }}\n          >\n            <i className=\"bi bi-check me-2\"/>\n            Save\n          </button>\n          <button\n            disabled={isLoading}\n            className=\"btn btn-secondary\"\n            onClick={() => {\n              setIsMapModalOpen(false);\n            }}\n          >\n            <i className=\"bi bi-x me-2\"/>\n            Close\n          </button>\n        </Modal.Footer>\n      </Modal>\n      <div className=\"row\">\n        <div className=\"col-md-6 col-xs-12\">\n          <h2>\n            {data.name}\n          </h2>\n        </div>\n        <div className=\"col-md-6 col-xs-12 text-end\">\n          <button\n            className=\"btn btn-success\"\n            onClick={() => {\n              window.location.href=`/administration/centers/${data.id}/edit`;\n            }}\n          >\n            <i className=\"bi bi-pencil me-2\"/>\n            Edit\n          </button>\n          <button\n            className=\"btn btn-secondary ms-4\"\n            onClick={() => {\n              setIsMapModalOpen(true);\n            }}\n          >\n            <i className=\"bi bi-map me-2\"/>\n            Map\n          </button>\n        </div>\n      </div>\n      <hr/>\n      <table className=\"table table-bordered table-sm\">\n        <tbody>\n          <tr>\n            <th>\n              Branch\n            </th>\n            <th>\n              <a href={`/administration/branches/${data.branch_id}`}>\n                {data.branch}\n              </a>\n            </th>\n          </tr>\n          <tr>\n            <th>\n              Meeting Day\n            </th>\n            <td>\n              {data.meeting_day_display}\n            </td>\n          </tr>\n          <tr>\n            <th>\n              Socio-economic Officer \n            </th>\n            <td>\n              {data.user}\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </>\n  )\n}\n", "import React, { useState, useEffect } from \"react\";\nimport ErrorList from '../ErrorList';\nimport { numberAsPercent, numberWithCommas } from \"../utils/helpers\";\n\nexport default function BranchPsrRecordsShow(props) {\n  const [data]  = useState(props.data);\n  const [token] = useState(props.token);\n  const miniSpace = '\\u00A0'.repeat(8);\n  const tabSpace = '\\u00A0'.repeat(14);\n  const sortedLoans = data.data.loans.sort((a, b) => a.loan_product.priority - b.loan_product.priority);\n\n  return (\n    <>\n      <div className=\"card\">\n        <div className=\"card-body\">\n          <h4>\n            {data.branch}\n            <small className=\"text-muted ms-2\">\n              {data.closing_date}\n            </small>\n          </h4>\n          <table className=\"table table-sm table-bordered\">\n            <tbody>\n\t      <tr>\n\t\t<th>A . OUTREACH</th>\n\t   \t<td></td>\n\t      </tr>\t    \n\t      <tr>\n                <td><strong>a1. Total Number of Active Members</strong></td>\n                <th className=\"text-center\"> {data.data.active_total} </th>\n              </tr>\n              <tr>\n\t\t<td>{tabSpace}Female</td>\n                <td className=\"text-center\">\n                  {data.data.active_female}\n                </td>\n              </tr>\n              <tr>\n                <td>{tabSpace}Male</td>\n                <td className=\"text-center\">\n                  {data.data.active_male}\n                </td>\n              </tr>\n              <tr>\n                <th>{miniSpace}Pure Savers</th>\n                <td className=\"text-center\">\n                  {data.data.pure_savers}\n                </td>\n\t      </tr>\n\n              <tr>\n\t\t<td>{tabSpace}Primary</td>\n\t\t<td className=\"text-center\">\n\t\t  {data.data.pure_savers_regular}\n                </td>\n              </tr>\n              <tr>\n                <td>{tabSpace}Kaagapay</td>\n\t\t<td className=\"text-center\">\n\t\t  {data.data.pure_savers_kaagapay}\n                </td>\n              </tr>\n              <tr>\n                <td>{tabSpace}GK</td>\n\t\t<td className=\"text-center\">\n\t\t {data.data.pure_savers_gk}\n                </td>\n              </tr>\n\n              <tr>\n                <th>{miniSpace}Active Borrowers</th>\n                <td className=\"text-center\">\n                  {data.data.active_borrowers}\n                </td>\n\t      </tr>\n\n              <tr>\n\t\t<td>{tabSpace}Primary</td>\n                <td className=\"text-center\">\n\t\t  {data.data.active_borrowers_regular}\n\t\t</td>\n              </tr>\n              <tr>\n                <td>{tabSpace}Kaagapay</td>\n\t\t<td className=\"text-center\">\n\t\t  {data.data.active_borrowers_kaagapay}\n                </td>\n              </tr>\n              <tr>\n                <td>{tabSpace}GK</td>\n\t\t<td className=\"text-center\">\n\t\t  {data.data.active_borrowers_gk}\n                </td>\n              </tr>\n\n              <tr>\n                <th>{miniSpace}Admitted Members</th>\n                <td className=\"text-center\">\n                  {data.data.admitted}\n                </td>\n\t      </tr>\n              <tr>\n                <th>{miniSpace}Inactive Members</th>\n\t\t<td className=\"text-center\">\n\t\t  {data.data.non_patronizing}\n                </td>\n              </tr>\n              <tr>\n                <th>{miniSpace}Delinquent Member</th>\n                <td className=\"text-center\">\n                </td>\n              </tr>\n\t      {/*\n\t      <tr>\n                <th>\n                  Resigned\n                </th>\n                <td className=\"text-center\">\n                  {data.data.resigned}\n                </td>\n              </tr>\n              <tr>\n                <th>\n                  Percentage of Savers\n                </th>\n                <td className=\"text-center\">\n                  {numberAsPercent(data.data.pure_savers / data.data.active_total)}\n                </td>\n              </tr>\n              <tr>\n                <th>\n                  Percentage of Borrowers\n                </th>\n                <td className=\"text-center\">\n                  {numberAsPercent(data.data.active_borrowers / data.data.active_total)}\n                </td>\n\t\t</tr>\n\t       */}\n              <tr>\n                <th>a2. Total Number of Active Loans </th>\n                <th className=\"text-center\">\n                  {data.data.total_active_loans}\n                </th>\n\t      </tr>\n\t       {sortedLoans.map((o) => {\n                return (\n                  <tr key={`loan-count-${o.loan_product.id}`}>\n                    <td>{miniSpace}{o.loan_product.name.toUpperCase()}</td>\n                    <td className=\"text-center\">\n                      {o.count}\n                    </td>\n                  </tr>\n                )\n\t      })}\n\t      <tr>\n\t        <th>a3. DROP OUT for the month </th>\n\t\t<th className=\"text-center\">\n\t\t  {data.data.resigned_members}\n                </th>\n\t      </tr>\n              <tr>\n                <td>{miniSpace}Drop out Rate</td>\n                <td className=\"text-center\">\n                </td>\n\t      </tr>\n\t      <tr>\n\t        <th>a4. Total NEW CLIENTS (as of)</th>\n                <th className=\"text-center\">\n\t\t  {data.data.new_members}\n\t\t</th>\n\t      </tr>\n              <tr>\n                <td>{miniSpace}NEW CLIENTS for the month</td>\n                <td className=\"text-center\">\n                </td>\n\t      </tr>\n              <tr>\n                <th>B. LOAN PORTFOLIO</th>\n                <th className=\"text-end\">\n                  {numberWithCommas(data.data.total_overall_principal_balance)} \n                </th>\n              </tr>\n              <tr>\n                <th>\n                  b1. Outstanding Loans\n                </th>\n                <th className=\"text-end\"></th>\n              </tr>\n              {data.data.loans.map((o) => {\n                return (\n                  <tr key={`loan-portfolio-${o.loan_product.id}`}>\n                    <td>{miniSpace}{o.loan_product.name.toUpperCase()}</td>\n                    <td className=\"text-end\">\n                      {numberWithCommas(o.overall_principal_balance)}\n                    </td>\n                  </tr>\n                )\n\t      })}\n              <tr>\n                <th>\n                  Average Loan amount (portfolio) for the month\n                </th>\n\t\t<th className=\"text-end\">\n\t\t {numberWithCommas(data.data.average_loan_amount)}\n\t\t</th>\n              </tr>\n              <tr>\n                <th>b2. PAST DUE AMOUNT:</th>\n                <th className=\"text-end\"></th>\n              </tr>\n               <tr>\n                <td>{miniSpace}Past due (1-30 days)</td>\n\t\t<td className=\"text-end\">\n\t\t  {numberWithCommas(data.data.past_due_month)}\n                </td>\n\t      </tr>\n              <tr>\n                <td>{miniSpace}Past due (31-365 days)</td>\n                <td className=\"text-end\">\n\t\t  {numberWithCommas(data.data.past_due_year)}\n\t\t</td>\n\t      </tr>\n              <tr>\n                <td>{miniSpace}Past due (365 days above)</td>\n\t\t<td className=\"text-end\">\n\t\t  {numberWithCommas(data.data.past_due_greater_year)}\n                </td>\n\t      </tr>\n              <tr>\n                <th>Total PAST DUE</th>\n                <th className=\"text-end\">\n\t\t  {numberWithCommas(data.data.total_principal_balance)}\n\t\t</th>\n\t      </tr>\n              <tr>\n                <th>Past Due Rate</th>\n                <td className=\"text-center\">\n\t\t  {numberAsPercent(data.data.past_due_rate)}\n\t\t</td>\n\t      </tr>\n              <tr>\n                <th>b3. PAR AMOUNT:</th>\n                <th className=\"text-end\"></th>\n              </tr>\n               <tr>\n                <td>{miniSpace}Portfolio at Risk (1-30 days)</td>\n                <td className=\"text-end\">\n\t\t {numberWithCommas(data.data.par_month)}\n\t\t</td>\n\t      </tr>\n              <tr>\n                <td>{miniSpace}Portfolio at Risk (31-365 days)</td>\n\t\t<td className=\"text-end\">\n\t\t  {numberWithCommas(data.data.par_year)}\n                </td>\n\t      </tr>\n              <tr>\n                <td>{miniSpace}Portfolio at Risk (365 days above)</td>\n\t\t<td className=\"text-end\">\n\t\t  {numberWithCommas(data.data.par_greater_year)}\n                </td>\n\t      </tr>\n              <tr>\n                <th>Total PAR AMOUNT</th>\n\t\t<th className=\"text-end\">\n\t\t  {numberWithCommas(data.data.total_par)}\n                </th>\n\t      </tr>\n              <tr>\n                <th>PAR Rate (1day)</th>\n\t\t<td className=\"text-center\"> \n                 {numberAsPercent(data.data.par_rate_one_day)}\n\t\t</td>\n\t      </tr>\n              <tr>\n                <th>b4. Allow. For Impairment losses</th>\n                <th className=\"text-end\"></th>\n              </tr>\n               <tr>\n                <td>{miniSpace}Current (1%)</td>\n\t\t<td className=\"text-end\">\n\t\t {numberWithCommas(data.data.afil_current)}\n\t\t</td>\n\t      </tr>\n              <tr>\n                <td>{miniSpace}1-365 days (35%)</td>\n\t\t<td className=\"text-end\">\n\t\t  {numberWithCommas(data.data.afil_year)}\n                </td>\n\t      </tr>\n              <tr>\n                <td>{miniSpace}over 1 yr (100%)</td>\n\t\t<td className=\"text-end\">\n\t\t  {numberWithCommas(data.data.afil_greater_year)}\n                </td>\n\t      </tr>\n              <tr>\n                <th>Total </th>\n\t\t<th className=\"text-end\">\n\t\t  {numberWithCommas(data.data.afil)}\n                </th>\n\t      </tr>\n\n              <tr>\n                <th>C. DISBURSEMENTS:</th>\n                <td className=\"text-center\">\n                </td>\n\t      </tr>\n              <tr>\n                <th>C1. Total no. of LOAN DISBURSED  (As of)</th>\n                <td className=\"text-center\">\n                </td>\n\t      </tr>\n\t      <tr>\n                <th>C2. No. of LOAN DISBURSED for the month</th>\n                <th className=\"text-center\">\n                  {data.data.total_num_disbursed}\n                </th>\n              </tr>\n              {data.data.loans.map((o) => {\n                return (\n                  <tr key={`loan-num-disbursed-${o.loan_product.id}`}>\n                    <td>{miniSpace}{o.loan_product.name.toUpperCase()}</td>\n                    <td className=\"text-center\">\n                      {o.num_disbursed}\n                    </td>\n                  </tr>\n                )\n\t      })}\n\t      <tr>\n                <th>C3. AMOUNT DISBURSED as of</th>\n                <td className=\"text-center\">\n                </td>\n\t      </tr>\n\n\n              <tr>\n                <th> C4. DISBURSEMENT for the month</th>\n                <th className=\"text-end\">\n                  {numberWithCommas(data.data.total_amount_disbursed)} \n                </th>\n              </tr>\n              {data.data.loans.map((o) => {\n                return (\n                  <tr key={`loan-amount-disbursed-${o.loan_product.id}`}>\n                    <td>{miniSpace}{o.loan_product.name}</td>\n                    <td className=\"text-end\">\n                      {numberWithCommas(o.amount_disbursed)}\n                    </td>\n                  </tr>\n                )\n\t      })}\n\n              <tr>\n                <th> Average Loan amount (disbursed) for the month</th>\n                <th className=\"text-end\">\n                  {numberWithCommas(data.data.average_disbursed_amount)}\n                </th>\n              </tr>\n \n              <tr>\n                <th> d4. Amount collected (as of)</th>\n                <th className=\"text-end\">\n                  {numberWithCommas(data.data.total_principal_paid)}\n                </th>\n              </tr>\n              {data.data.loans.map((o) => {\n                return (\n                  <tr key={`loan-amount-disbursed-${o.loan_product.id}`}>\n                    <td>{miniSpace}{o.loan_product.name}</td>\n                    <td className=\"text-end\">\n                      {numberWithCommas(o.total_principal_paid)}\n                    </td>\n                  </tr>\n                )\n              })}\n\n              <tr>\n                <th> Interest income (as of)</th>\n                <th className=\"text-end\">\n                  \n                </th>\n              </tr>\n              {data.data.loans.map((o) => {\n                return (\n                  <tr key={`loan-amount-disbursed-${o.loan_product.id}`}>\n                    <td>{miniSpace}{o.loan_product.name}</td>\n                    <td className=\"text-end\">\n                      {numberWithCommas(o.total_interest_paid)}\n                    </td>\n                  </tr>\n                )\n              })} \n\n              <tr>\n                <th>\n                  Gross Income\n                </th>\n                <th className=\"text-end\">\n                  {numberWithCommas(data.data.gross_income)}\n                </th>\n              </tr>\n              <tr>\n                <th>\n                  Operating Expense\n                </th>\n                <th className=\"text-end\">\n                  {numberWithCommas(data.data.operating_expense)}\n                </th>\n              </tr>\n              <tr>\n                <th>\n                  Net Income Before Admin Expense\n                </th>\n                <th className=\"text-end\">\n                  {numberWithCommas(data.data.net_income_before_admin_expense)}\n                </th>\n              </tr>\n            </tbody>\n          </table>\n        </div>\n      </div>\n    </>\n  )\n}\n", "import React, { useState, useMemo } from \"react\";\nimport SkCubeLoading from \"../SkCubeLoading\";\nimport axios from 'axios';\nimport MonthlyPsrFinancialStatus from \"./MonthlyPsrFinancialStatus\";\nimport MonthlyPsrPortfolio from \"./MonthlyPsrPortfolio\";\nimport MonthlyPsrPrincipalPaid from \"./MonthlyPsrPrincipalPaid\";\nimport MonthlyPsrPastDue from \"./MonthlyPsrPastDue\";\nimport MonthlyPsrMemberCount from  \"./MonthlyPsrMemberCount\";\n\nexport default function MonthlyPsr(props) {\n  const [data, setData]           = useState(null);\n  const [branches]                = useState(props.branches);\n  const [token]                   = useState(props.token);\n  const [branchId, setBranchId]   = useState(props.branches[0].id);\n  const [currentYear]             = useState(props.current_year);\n  const [year, setYear]           = useState(props.current_year);\n  const [isLoading, setIsLoading] = useState(false);\n\n  const years = [];\n\n  for(var y = currentYear; y >= currentYear - 3; y--) {\n    years.push(y);\n  }\n\n  const fetchData = () => {\n    setIsLoading(true);\n\n    const payload = {\n      branch_id:  branchId,\n      year:       year\n    }\n\n    const headers = {\n      'X-KOINS-HQ-TOKEN': token\n    }\n\n    const options = {\n      headers: headers\n    }\n\n    axios.post( \n      '/api/branch_psr_records/fetch',\n      payload,\n      options\n    ).then((res) => {\n      console.log(res.data.records);\n      setData(res.data.records);\n      setIsLoading(false);\n    }).catch((error) => {\n      setData(null); \n      setIsLoading(false);\n    })\n  }\n\n  return (\n    <>\n      <div className=\"card\">\n        <div className=\"card-body\">\n          <div className=\"row\">\n            <div className=\"col-md-8 col-xs-12\">\n              <div className=\"form-group\">\n                <label>\n                  Branch\n                </label>\n                <select\n                  className=\"form-control\"\n                  value={branchId}\n                  disabled={isLoading}\n                  onChange={(event) => {\n                    setBranchId(event.target.value); \n                  }}\n                >\n                  {branches.map((o) => {\n                    return (\n                      <option key={`branch-select-${o.id}`} value={o.id}>\n                        {o.name}\n                      </option>\n                    )\n                  })}\n                </select>\n              </div>\n            </div>\n            <div className=\"col-md-2 col-xs-12\">\n              <div className=\"form-group\">\n                <label>\n                  Year\n                </label>\n                <select\n                  value={year}\n                  className=\"form-control\"\n                  disabled={isLoading}\n                  onChange={(event) => {\n                    setYear(event.target.value);\n                  }}\n                >\n                  {years.map((o) => {\n                    return (\n                      <option key={`year-${o}`} value={o}>\n                        {o}\n                      </option>\n                    )\n                  })}\n                </select>\n              </div>\n            </div>\n            <div className=\"col-md-2 col-xs-12\">\n              <div className=\"form-group\">\n                <label>\n                  Actions\n                </label>\n                <br/>\n                <button \n                  className=\"btn btn-primary\"\n                  disabled={isLoading}\n                  onClick={() => {\n                    fetchData();\n                  }}\n                >\n                  Generate\n                </button>\n              </div>\n            </div>\n          </div>\n          <hr/>\n          <div className=\"row\">\n            <div className=\"col\">\n              {(() => {\n                if(isLoading) {\n                  return (\n                    <SkCubeLoading/>\n                  )\n                } else if(data) {\n                  return (\n                    <>\n                      <MonthlyPsrFinancialStatus\n                        data={data}\n                      />\n                      <hr/>\n                      <MonthlyPsrPortfolio\n                        data={data}\n                      />\n                      <MonthlyPsrPrincipalPaid\n                        data={data}\n                      />\n                      <MonthlyPsrPastDue\n                        data={data}\n                      />\n                      <MonthlyPsrMemberCount\n                        data={data}\n                      />\n                    </>\n                  )\n                } else {\n                  return (\n                    <p>\n                      Data not set\n                    </p>\n                  )\n                }\n              })()} \n            </div>\n          </div>\n        </div>\n      </div>\n    </>\n  )\n}\n", "import React, { useState, useMemo, useRef, useEffect } from \"react\";\nimport { numberWithCommas } from \"../utils/helpers\";\nimport {\n  VictoryLine,\n  VictoryChart,\n  VictoryAxis,\n  VictoryVoronoiContainer,\n  VictoryTooltip,\n  VictoryScatter,\n  VictoryLegend\n} from 'victory';\n\nexport default function MonthlyPsrFinancialStatus(props) {\n  const strokeWidth = 2;\n  const ref = useRef(null);\n\n  const [containerWidth, setContainerWidth] = useState(800);\n\n  const colorGrossIncome      = \"blue\";\n  const colorOperatingExpense = \"red\";\n  const colorNet              = \"green\";\n\n  useEffect(() =>{\n    console.log('width', ref.current ? ref.current.offsetWidth : 0);\n    setContainerWidth(ref.current ? ref.current.offsetWidth : 800);\n  }, [ref.current])\n\n  const buildData = (records) => {\n    const _data = records.map((o) => {\n      return {\n        date: o.closing_date,\n        gross_income: o.data.gross_income,\n        operating_expense: o.data.operating_expense,\n        net_income_before_admin_expense: o.data.net_income_before_admin_expense\n      }\n    });\n\n    return _data;\n  }\n\n  const data = buildData(props.data);\n\n\n  return (\n    <>\n      <h4>\n        Financial Status\n      </h4>\n      <hr/>\n      <div\n        ref={ref}\n        style={{\n          width: \"100%\",\n          height: \"450px\"\n        }}\n      >\n        <VictoryChart\n          domainPadding={20}\n          containerComponent={<VictoryVoronoiContainer/>}\n          width={containerWidth - 600}\n        >\n          <VictoryLegend\n            x={70} y={50}\n            title=\"Legend\"\n            centerTitle\n            orientation=\"horizontal\"\n            gutter={20}\n            style={{ border: { stroke: \"black\" }, title: {fontSize: 14 } }}\n            data={[\n              { name: \"Gross Income\", symbol: { fill: colorGrossIncome } },\n              { name: \"Operating Expense\", symbol: { fill: colorOperatingExpense } },\n              { name: \"Net\", symbol: { fill: colorNet } }\n            ]}\n          />\n\n          <VictoryScatter\n            data={data}\n            x=\"date\"\n            y=\"gross_income\"\n            labels={({ datum }) => numberWithCommas(datum.gross_income)}\n            style={{\n              data: {\n                fill: colorGrossIncome\n              }\n            }}\n            labelComponent={\n              <VictoryTooltip\n                cornerRadius={0}\n              />\n            }\n          />\n          <VictoryLine\n            data={data}\n            style={{\n              data: {\n                stroke: colorGrossIncome,\n                strokeWidth: strokeWidth\n              }\n            }}\n            x=\"date\"\n            y=\"gross_income\"\n          />\n\n          <VictoryScatter\n            data={data}\n            x=\"date\"\n            y=\"operating_expense\"\n            labels={({ datum }) => numberWithCommas(datum.operating_expense)}\n            style={{\n              data: {\n                fill: colorOperatingExpense\n              }\n            }}\n            labelComponent={\n              <VictoryTooltip\n                cornerRadius={0}\n              />\n            }\n          />\n          <VictoryLine\n            data={data}\n            style={{\n              data: {\n                stroke: colorOperatingExpense,\n                strokeWidth: strokeWidth\n              }\n            }}\n            x=\"date\"\n            y=\"operating_expense\"\n          />\n\n          <VictoryScatter\n            data={data}\n            x=\"date\"\n            y=\"net_income_before_admin_expense\"\n            labels={({ datum }) => numberWithCommas(datum.net_income_before_admin_expense)}\n            style={{\n              data: {\n                fill: colorNet,\n                labels: {\n                  fill: colorNet\n                }\n              }\n            }}\n            labelComponent={\n              <VictoryTooltip\n                cornerRadius={0}\n              />\n            }\n          />\n          <VictoryLine\n            data={data}\n            style={{\n              data: {\n                stroke: colorNet,\n                strokeWidth: strokeWidth\n              }\n            }}\n            x=\"date\"\n            y=\"net_income_before_admin_expense\"\n          />\n        </VictoryChart>\n      </div>\n      <hr/>\n    </>\n  )\n}\n", "function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (typeof call === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n/* global setTimeout:false */\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport * as d3Ease from \"victory-vendor/d3-ease\";\nimport { victoryInterpolator } from \"./util\";\nimport TimerContext from \"../victory-util/timer-context\";\nimport isEqual from \"react-fast-compare\";\nexport var VictoryAnimation = /*#__PURE__*/function (_React$Component) {\n  _inherits(VictoryAnimation, _React$Component);\n\n  var _super = _createSuper(VictoryAnimation);\n\n  function VictoryAnimation(props, context) {\n    var _this;\n\n    _classCallCheck(this, VictoryAnimation);\n\n    _this = _super.call(this, props, context);\n    /* defaults */\n\n    _this.interpolator = void 0;\n    _this.queue = void 0;\n    _this.ease = void 0;\n    _this.timer = void 0;\n    _this.loopID = void 0;\n\n    _this.functionToBeRunEachFrame = function (elapsed, duration) {\n      /*\n        step can generate imprecise values, sometimes greater than 1\n        if this happens set the state to 1 and return, cancelling the timer\n      */\n      duration = duration !== undefined ? duration : _this.props.duration;\n      var step = duration ? elapsed / duration : 1;\n\n      if (step >= 1) {\n        _this.setState({\n          data: _this.interpolator(1),\n          animationInfo: {\n            progress: 1,\n            animating: false,\n            terminating: true\n          }\n        });\n\n        if (_this.loopID) {\n          _this.timer.unsubscribe(_this.loopID);\n        }\n\n        _this.queue.shift();\n\n        _this.traverseQueue();\n\n        return;\n      }\n      /*\n        if we're not at the end of the timer, set the state by passing\n        current step value that's transformed by the ease function to the\n        interpolator, which is cached for performance whenever props are received\n      */\n\n\n      _this.setState({\n        data: _this.interpolator(_this.ease(step)),\n        animationInfo: {\n          progress: step,\n          animating: step < 1\n        }\n      });\n    };\n\n    _this.state = {\n      data: Array.isArray(_this.props.data) ? _this.props.data[0] : _this.props.data,\n      animationInfo: {\n        progress: 0,\n        animating: false\n      }\n    };\n    _this.interpolator = null;\n    _this.queue = Array.isArray(_this.props.data) ? _this.props.data.slice(1) : [];\n    /* build easing function */\n\n    _this.ease = d3Ease[_this.toNewName(_this.props.easing)];\n    _this.timer = _this.context.animationTimer;\n    return _this;\n  }\n\n  _createClass(VictoryAnimation, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      // Length check prevents us from triggering `onEnd` in `traverseQueue`.\n      if (this.queue.length) {\n        this.traverseQueue();\n      }\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate(prevProps) {\n      var equalProps = isEqual(this.props, prevProps);\n\n      if (!equalProps) {\n        /* If the previous animation didn't finish, force it to complete before starting a new one */\n        if (this.interpolator && this.state.animationInfo && this.state.animationInfo.progress < 1) {\n          // eslint-disable-next-line react/no-did-update-set-state\n          this.setState({\n            data: this.interpolator(1),\n            animationInfo: {\n              progress: 1,\n              animating: false,\n              terminating: true\n            }\n          });\n        } else {\n          /* cancel existing loop if it exists */\n          this.timer.unsubscribe(this.loopID);\n          /* If an object was supplied */\n\n          if (!Array.isArray(this.props.data)) {\n            // Replace the tween queue. Could set `this.queue = [nextProps.data]`,\n            // but let's reuse the same array.\n            this.queue.length = 0;\n            this.queue.push(this.props.data);\n            /* If an array was supplied */\n          } else {\n            var _this$queue;\n\n            /* Extend the tween queue */\n            (_this$queue = this.queue).push.apply(_this$queue, _toConsumableArray(this.props.data));\n          }\n          /* Start traversing the tween queue */\n\n\n          this.traverseQueue();\n        }\n      }\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      if (this.loopID) {\n        this.timer.unsubscribe(this.loopID);\n      } else {\n        this.timer.stop();\n      }\n    }\n  }, {\n    key: \"toNewName\",\n    value: function toNewName(ease) {\n      // d3-ease changed the naming scheme for ease from \"linear\" -> \"easeLinear\" etc.\n      var capitalize = function (s) {\n        return s && s[0].toUpperCase() + s.slice(1);\n      };\n\n      return \"ease\".concat(capitalize(ease));\n    }\n    /* Traverse the tween queue */\n\n  }, {\n    key: \"traverseQueue\",\n    value: function traverseQueue() {\n      var _this2 = this;\n\n      if (this.queue.length) {\n        /* Get the next index */\n        var data = this.queue[0];\n        /* compare cached version to next props */\n\n        this.interpolator = victoryInterpolator(this.state.data, data);\n        /* reset step to zero */\n\n        if (this.props.delay) {\n          setTimeout(function () {\n            _this2.loopID = _this2.timer.subscribe(_this2.functionToBeRunEachFrame, _this2.props.duration);\n          }, this.props.delay);\n        } else {\n          this.loopID = this.timer.subscribe(this.functionToBeRunEachFrame, this.props.duration);\n        }\n      } else if (this.props.onEnd) {\n        this.props.onEnd();\n      }\n    }\n    /* every frame we... */\n\n  }, {\n    key: \"render\",\n    value: function render() {\n      return this.props.children(this.state.data, this.state.animationInfo);\n    }\n  }]);\n\n  return VictoryAnimation;\n}(React.Component);\nVictoryAnimation.displayName = \"VictoryAnimation\";\nVictoryAnimation.propTypes = {\n  children: PropTypes.func,\n  data: PropTypes.oneOfType([PropTypes.object, PropTypes.array]),\n  delay: PropTypes.number,\n  duration: PropTypes.number,\n  easing: PropTypes.oneOf([\"back\", \"backIn\", \"backOut\", \"backInOut\", \"bounce\", \"bounceIn\", \"bounceOut\", \"bounceInOut\", \"circle\", \"circleIn\", \"circleOut\", \"circleInOut\", \"linear\", \"linearIn\", \"linearOut\", \"linearInOut\", \"cubic\", \"cubicIn\", \"cubicOut\", \"cubicInOut\", \"elastic\", \"elasticIn\", \"elasticOut\", \"elasticInOut\", \"exp\", \"expIn\", \"expOut\", \"expInOut\", \"poly\", \"polyIn\", \"polyOut\", \"polyInOut\", \"quad\", \"quadIn\", \"quadOut\", \"quadInOut\", \"sin\", \"sinIn\", \"sinOut\", \"sinInOut\"]),\n  onEnd: PropTypes.func\n};\nVictoryAnimation.defaultProps = {\n  data: {},\n  delay: 0,\n  duration: 1000,\n  easing: \"quadInOut\"\n};\nVictoryAnimation.contextType = TimerContext;", "\n// `victory-vendor/d3-ease` (ESM)\n// See upstream license: https://github.com/d3/d3-ease/blob/main/LICENSE\n//\n// Our ESM package uses the underlying installed dependencies of `node_modules/d3-ease`\nexport * from \"d3-ease\";\n", "export const linear = t => +t;\n", "export function quadIn(t) {\n  return t * t;\n}\n\nexport function quadOut(t) {\n  return t * (2 - t);\n}\n\nexport function quadInOut(t) {\n  return ((t *= 2) <= 1 ? t * t : --t * (2 - t) + 1) / 2;\n}\n", "export function cubicIn(t) {\n  return t * t * t;\n}\n\nexport function cubicOut(t) {\n  return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n  return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n", "var exponent = 3;\n\nexport var polyIn = (function custom(e) {\n  e = +e;\n\n  function polyIn(t) {\n    return Math.pow(t, e);\n  }\n\n  polyIn.exponent = custom;\n\n  return polyIn;\n})(exponent);\n\nexport var polyOut = (function custom(e) {\n  e = +e;\n\n  function polyOut(t) {\n    return 1 - Math.pow(1 - t, e);\n  }\n\n  polyOut.exponent = custom;\n\n  return polyOut;\n})(exponent);\n\nexport var polyInOut = (function custom(e) {\n  e = +e;\n\n  function polyInOut(t) {\n    return ((t *= 2) <= 1 ? Math.pow(t, e) : 2 - Math.pow(2 - t, e)) / 2;\n  }\n\n  polyInOut.exponent = custom;\n\n  return polyInOut;\n})(exponent);\n", "var pi = Math.PI,\n    halfPi = pi / 2;\n\nexport function sinIn(t) {\n  return (+t === 1) ? 1 : 1 - Math.cos(t * halfPi);\n}\n\nexport function sinOut(t) {\n  return Math.sin(t * halfPi);\n}\n\nexport function sinInOut(t) {\n  return (1 - Math.cos(pi * t)) / 2;\n}\n", "// tpmt is two power minus ten times t scaled to [0,1]\nexport function tpmt(x) {\n  return (Math.pow(2, -10 * x) - 0.0009765625) * 1.0009775171065494;\n}\n", "import {tpmt} from \"./math.js\";\n\nexport function expIn(t) {\n  return tpmt(1 - +t);\n}\n\nexport function expOut(t) {\n  return 1 - tpmt(t);\n}\n\nexport function expInOut(t) {\n  return ((t *= 2) <= 1 ? tpmt(1 - t) : 2 - tpmt(t - 1)) / 2;\n}\n", "export function circleIn(t) {\n  return 1 - Math.sqrt(1 - t * t);\n}\n\nexport function circleOut(t) {\n  return Math.sqrt(1 - --t * t);\n}\n\nexport function circleInOut(t) {\n  return ((t *= 2) <= 1 ? 1 - Math.sqrt(1 - t * t) : Math.sqrt(1 - (t -= 2) * t) + 1) / 2;\n}\n", "var b1 = 4 / 11,\n    b2 = 6 / 11,\n    b3 = 8 / 11,\n    b4 = 3 / 4,\n    b5 = 9 / 11,\n    b6 = 10 / 11,\n    b7 = 15 / 16,\n    b8 = 21 / 22,\n    b9 = 63 / 64,\n    b0 = 1 / b1 / b1;\n\nexport function bounceIn(t) {\n  return 1 - bounceOut(1 - t);\n}\n\nexport function bounceOut(t) {\n  return (t = +t) < b1 ? b0 * t * t : t < b3 ? b0 * (t -= b2) * t + b4 : t < b6 ? b0 * (t -= b5) * t + b7 : b0 * (t -= b8) * t + b9;\n}\n\nexport function bounceInOut(t) {\n  return ((t *= 2) <= 1 ? 1 - bounceOut(1 - t) : bounceOut(t - 1) + 1) / 2;\n}\n", "var overshoot = 1.70158;\n\nexport var backIn = (function custom(s) {\n  s = +s;\n\n  function backIn(t) {\n    return (t = +t) * t * (s * (t - 1) + t);\n  }\n\n  backIn.overshoot = custom;\n\n  return backIn;\n})(overshoot);\n\nexport var backOut = (function custom(s) {\n  s = +s;\n\n  function backOut(t) {\n    return --t * t * ((t + 1) * s + t) + 1;\n  }\n\n  backOut.overshoot = custom;\n\n  return backOut;\n})(overshoot);\n\nexport var backInOut = (function custom(s) {\n  s = +s;\n\n  function backInOut(t) {\n    return ((t *= 2) < 1 ? t * t * ((s + 1) * t - s) : (t -= 2) * t * ((s + 1) * t + s) + 2) / 2;\n  }\n\n  backInOut.overshoot = custom;\n\n  return backInOut;\n})(overshoot);\n", "import {tpmt} from \"./math.js\";\n\nvar tau = 2 * Math.PI,\n    amplitude = 1,\n    period = 0.3;\n\nexport var elasticIn = (function custom(a, p) {\n  var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n  function elasticIn(t) {\n    return a * tpmt(-(--t)) * Math.sin((s - t) / p);\n  }\n\n  elasticIn.amplitude = function(a) { return custom(a, p * tau); };\n  elasticIn.period = function(p) { return custom(a, p); };\n\n  return elasticIn;\n})(amplitude, period);\n\nexport var elasticOut = (function custom(a, p) {\n  var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n  function elasticOut(t) {\n    return 1 - a * tpmt(t = +t) * Math.sin((t + s) / p);\n  }\n\n  elasticOut.amplitude = function(a) { return custom(a, p * tau); };\n  elasticOut.period = function(p) { return custom(a, p); };\n\n  return elasticOut;\n})(amplitude, period);\n\nexport var elasticInOut = (function custom(a, p) {\n  var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n  function elasticInOut(t) {\n    return ((t = t * 2 - 1) < 0\n        ? a * tpmt(-t) * Math.sin((s - t) / p)\n        : 2 - a * tpmt(t) * Math.sin((s + t) / p)) / 2;\n  }\n\n  elasticInOut.amplitude = function(a) { return custom(a, p * tau); };\n  elasticInOut.period = function(p) { return custom(a, p); };\n\n  return elasticInOut;\n})(amplitude, period);\n", "import _orderBy from \"lodash/orderBy\";\nimport _isPlainObject from \"lodash/isPlainObject\";\nimport { interpolate } from \"victory-vendor/d3-interpolate\";\nexport var isInterpolatable = function (obj) {\n  // d3 turns null into 0 and undefined into NaN, which we don't want.\n  if (obj !== null) {\n    switch (typeof obj) {\n      case \"undefined\":\n        return false;\n\n      case \"number\":\n        // The standard `isNaN` is fine in this case since we already know the\n        // type is number.\n        return !isNaN(obj) && obj !== Number.POSITIVE_INFINITY && obj !== Number.NEGATIVE_INFINITY;\n\n      case \"string\":\n        // d3 might not *actually* be able to interpolate the string, but it\n        // won't cause any issues to let it try.\n        return true;\n\n      case \"boolean\":\n        // d3 turns Booleans into integers, which we don't want. Sure, we could\n        // interpolate from 0 -> 1, but we'd be sending a non-Boolean to\n        // something expecting a Boolean.\n        return false;\n\n      case \"object\":\n        // Don't try to interpolate class instances (except Date or Array).\n        return obj instanceof Date || Array.isArray(obj) || _isPlainObject(obj);\n\n      case \"function\":\n        // Careful! There may be extra properties on function objects that the\n        // component expects to access - for instance, it may be a `d3.scale()`\n        // function, which has its own methods attached. We don't know if the\n        // component is only going to call the function (in which case it's\n        // safely interpolatable) or if it's going to access special properties\n        // (in which case our function generated from `interpolateFunction` will\n        // most likely cause an error). We could check for enumerable properties\n        // on the function object here to see if it's a \"plain\" function, but\n        // let's just require that components prevent such function props from\n        // being animated in the first place.\n        return true;\n    }\n  }\n\n  return false;\n};\n/**\n * Interpolate immediately to the end value at the given step `when`.\n * Some nicer default behavior might be to jump at the halfway point or return\n * `a` if `t` is 0 (instead of always returning `b`). But d3's default\n * interpolator does not do these things:\n *\n *   d3.interpolate('aaa', 'bbb')(0) === 'bbb'\n *\n * ...and things might get wonky if we don't replicate that behavior.\n *\n * @param {any} a - Start value.\n * @param {any} b - End value.\n * @param {Number} when - Step value (0 to 1) at which to jump to `b`.\n * @returns {Function} An interpolation function.\n */\n\nexport var interpolateImmediate = function (a, b) {\n  var when = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n  return function (t) {\n    return t < when ? a : b;\n  };\n};\n/**\n * Interpolate to or from a function. The interpolated value will be a function\n * that calls `a` (if it's a function) and `b` (if it's a function) and calls\n * `d3.interpolate` on the resulting values. Note that our function won't\n * necessarily be called (that's up to the component this eventually gets\n * passed to) - but if it does get called, it will return an appropriately\n * interpolated value.\n *\n * @param {any} a - Start value.\n * @param {any} b - End value.\n * @returns {Function} An interpolation function.\n */\n\nexport var interpolateFunction = function (a, b) {\n  return function (t) {\n    if (t >= 1) {\n      return b;\n    }\n\n    return function () {\n      /* eslint-disable no-invalid-this, prefer-rest-params */\n      var aval = typeof a === \"function\" ? a.apply(this, arguments) : a;\n      var bval = typeof b === \"function\" ? b.apply(this, arguments) : b;\n      return interpolate(aval, bval)(t);\n    };\n  };\n};\n/**\n * Interpolate to or from an object. This method is a modification of the object interpolator in\n * d3-interpolate https://github.com/d3/d3-interpolate/blob/master/src/object.js. This interpolator\n * differs in that it uses our custom interpolators when interpolating the value of each property in\n * an object. This allows the correct interpolation of nested objects, including styles\n *\n * @param {any} a - Start value.\n * @param {any} b - End value.\n * @returns {Function} An interpolation function.\n */\n\nexport var interpolateObject = function (a, b) {\n  var interpolateTypes = function (x, y) {\n    if (x === y || !isInterpolatable(x) || !isInterpolatable(y)) {\n      return interpolateImmediate(x, y);\n    }\n\n    if (typeof x === \"function\" || typeof y === \"function\") {\n      return interpolateFunction(x, y);\n    }\n\n    if (typeof x === \"object\" && _isPlainObject(x) || typeof y === \"object\" && _isPlainObject(y)) {\n      return interpolateObject(x, y);\n    }\n\n    return interpolate(x, y);\n  }; // When the value is an array, attempt to sort by \"key\" so that animating nodes may be identified\n  // based on \"key\" instead of index\n\n\n  var keyData = function (val) {\n    return Array.isArray(val) ? _orderBy(val, \"key\") : val;\n  };\n\n  var i = {};\n  var c = {};\n  var k;\n\n  if (a === null || typeof a !== \"object\") {\n    a = {};\n  }\n\n  if (b === null || typeof b !== \"object\") {\n    b = {};\n  }\n\n  for (k in b) {\n    if (k in a) {\n      i[k] = interpolateTypes(keyData(a[k]), keyData(b[k]));\n    } else {\n      c[k] = b[k];\n    }\n  }\n\n  return function (t) {\n    for (k in i) {\n      c[k] = i[k](t);\n    }\n\n    return c;\n  };\n};\nexport var interpolateString = function (a, b) {\n  var format = function (val) {\n    return typeof val === \"string\" ? val.replace(/,/g, \"\") : val;\n  };\n\n  return interpolate(format(a), format(b));\n};\n/**\n * By default, the list of interpolators used by `d3.interpolate` has a few\n * downsides:\n *\n * - `null` values get turned into 0.\n * - `undefined`, `function`, and some other value types get turned into NaN.\n * - Boolean types get turned into numbers, which probably will be meaningless\n *   to whatever is consuming them.\n * - It tries to interpolate between identical start and end values, doing\n *   unnecessary calculations that sometimes result in floating point rounding\n *   errors.\n *\n * If only the default interpolators are used, `VictoryAnimation` will happily\n * pass down NaN (and other bad) values as props to the wrapped component.\n * The component will then either use the incorrect values or complain that it\n * was passed props of the incorrect type. This custom interpolator is added\n * using the `d3.interpolators` API, and prevents such cases from happening\n * for most values.\n *\n * @param {any} a - Start value.\n * @param {any} b - End value.\n * @returns {Function|undefined} An interpolation function, if necessary.\n */\n\nexport var victoryInterpolator = function (a, b) {\n  // If the values are strictly equal, or either value is not interpolatable,\n  // just use either the start value `a` or end value `b` at every step, as\n  // there is no reasonable in-between value.\n  if (a === b || !isInterpolatable(a) || !isInterpolatable(b)) {\n    return interpolateImmediate(a, b);\n  }\n\n  if (typeof a === \"function\" || typeof b === \"function\") {\n    return interpolateFunction(a, b);\n  }\n\n  if (_isPlainObject(a) || _isPlainObject(b)) {\n    // @ts-expect-error These generics are tough, but they work :)\n    return interpolateObject(a, b);\n  }\n\n  if (typeof a === \"string\" || typeof b === \"string\") {\n    return interpolateString(a, b);\n  } // @ts-expect-error These generics are tough, but they work :)\n\n\n  return interpolate(a, b);\n};", "export default function(constructor, factory, prototype) {\n  constructor.prototype = factory.prototype = prototype;\n  prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n  var prototype = Object.create(parent.prototype);\n  for (var key in definition) prototype[key] = definition[key];\n  return prototype;\n}\n", "import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n    reN = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n    reP = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n    reHex = /^#([0-9a-f]{3,8})$/,\n    reRgbInteger = new RegExp(`^rgb\\\\(${reI},${reI},${reI}\\\\)$`),\n    reRgbPercent = new RegExp(`^rgb\\\\(${reP},${reP},${reP}\\\\)$`),\n    reRgbaInteger = new RegExp(`^rgba\\\\(${reI},${reI},${reI},${reN}\\\\)$`),\n    reRgbaPercent = new RegExp(`^rgba\\\\(${reP},${reP},${reP},${reN}\\\\)$`),\n    reHslPercent = new RegExp(`^hsl\\\\(${reN},${reP},${reP}\\\\)$`),\n    reHslaPercent = new RegExp(`^hsla\\\\(${reN},${reP},${reP},${reN}\\\\)$`);\n\nvar named = {\n  aliceblue: 0xf0f8ff,\n  antiquewhite: 0xfaebd7,\n  aqua: 0x00ffff,\n  aquamarine: 0x7fffd4,\n  azure: 0xf0ffff,\n  beige: 0xf5f5dc,\n  bisque: 0xffe4c4,\n  black: 0x000000,\n  blanchedalmond: 0xffebcd,\n  blue: 0x0000ff,\n  blueviolet: 0x8a2be2,\n  brown: 0xa52a2a,\n  burlywood: 0xdeb887,\n  cadetblue: 0x5f9ea0,\n  chartreuse: 0x7fff00,\n  chocolate: 0xd2691e,\n  coral: 0xff7f50,\n  cornflowerblue: 0x6495ed,\n  cornsilk: 0xfff8dc,\n  crimson: 0xdc143c,\n  cyan: 0x00ffff,\n  darkblue: 0x00008b,\n  darkcyan: 0x008b8b,\n  darkgoldenrod: 0xb8860b,\n  darkgray: 0xa9a9a9,\n  darkgreen: 0x006400,\n  darkgrey: 0xa9a9a9,\n  darkkhaki: 0xbdb76b,\n  darkmagenta: 0x8b008b,\n  darkolivegreen: 0x556b2f,\n  darkorange: 0xff8c00,\n  darkorchid: 0x9932cc,\n  darkred: 0x8b0000,\n  darksalmon: 0xe9967a,\n  darkseagreen: 0x8fbc8f,\n  darkslateblue: 0x483d8b,\n  darkslategray: 0x2f4f4f,\n  darkslategrey: 0x2f4f4f,\n  darkturquoise: 0x00ced1,\n  darkviolet: 0x9400d3,\n  deeppink: 0xff1493,\n  deepskyblue: 0x00bfff,\n  dimgray: 0x696969,\n  dimgrey: 0x696969,\n  dodgerblue: 0x1e90ff,\n  firebrick: 0xb22222,\n  floralwhite: 0xfffaf0,\n  forestgreen: 0x228b22,\n  fuchsia: 0xff00ff,\n  gainsboro: 0xdcdcdc,\n  ghostwhite: 0xf8f8ff,\n  gold: 0xffd700,\n  goldenrod: 0xdaa520,\n  gray: 0x808080,\n  green: 0x008000,\n  greenyellow: 0xadff2f,\n  grey: 0x808080,\n  honeydew: 0xf0fff0,\n  hotpink: 0xff69b4,\n  indianred: 0xcd5c5c,\n  indigo: 0x4b0082,\n  ivory: 0xfffff0,\n  khaki: 0xf0e68c,\n  lavender: 0xe6e6fa,\n  lavenderblush: 0xfff0f5,\n  lawngreen: 0x7cfc00,\n  lemonchiffon: 0xfffacd,\n  lightblue: 0xadd8e6,\n  lightcoral: 0xf08080,\n  lightcyan: 0xe0ffff,\n  lightgoldenrodyellow: 0xfafad2,\n  lightgray: 0xd3d3d3,\n  lightgreen: 0x90ee90,\n  lightgrey: 0xd3d3d3,\n  lightpink: 0xffb6c1,\n  lightsalmon: 0xffa07a,\n  lightseagreen: 0x20b2aa,\n  lightskyblue: 0x87cefa,\n  lightslategray: 0x778899,\n  lightslategrey: 0x778899,\n  lightsteelblue: 0xb0c4de,\n  lightyellow: 0xffffe0,\n  lime: 0x00ff00,\n  limegreen: 0x32cd32,\n  linen: 0xfaf0e6,\n  magenta: 0xff00ff,\n  maroon: 0x800000,\n  mediumaquamarine: 0x66cdaa,\n  mediumblue: 0x0000cd,\n  mediumorchid: 0xba55d3,\n  mediumpurple: 0x9370db,\n  mediumseagreen: 0x3cb371,\n  mediumslateblue: 0x7b68ee,\n  mediumspringgreen: 0x00fa9a,\n  mediumturquoise: 0x48d1cc,\n  mediumvioletred: 0xc71585,\n  midnightblue: 0x191970,\n  mintcream: 0xf5fffa,\n  mistyrose: 0xffe4e1,\n  moccasin: 0xffe4b5,\n  navajowhite: 0xffdead,\n  navy: 0x000080,\n  oldlace: 0xfdf5e6,\n  olive: 0x808000,\n  olivedrab: 0x6b8e23,\n  orange: 0xffa500,\n  orangered: 0xff4500,\n  orchid: 0xda70d6,\n  palegoldenrod: 0xeee8aa,\n  palegreen: 0x98fb98,\n  paleturquoise: 0xafeeee,\n  palevioletred: 0xdb7093,\n  papayawhip: 0xffefd5,\n  peachpuff: 0xffdab9,\n  peru: 0xcd853f,\n  pink: 0xffc0cb,\n  plum: 0xdda0dd,\n  powderblue: 0xb0e0e6,\n  purple: 0x800080,\n  rebeccapurple: 0x663399,\n  red: 0xff0000,\n  rosybrown: 0xbc8f8f,\n  royalblue: 0x4169e1,\n  saddlebrown: 0x8b4513,\n  salmon: 0xfa8072,\n  sandybrown: 0xf4a460,\n  seagreen: 0x2e8b57,\n  seashell: 0xfff5ee,\n  sienna: 0xa0522d,\n  silver: 0xc0c0c0,\n  skyblue: 0x87ceeb,\n  slateblue: 0x6a5acd,\n  slategray: 0x708090,\n  slategrey: 0x708090,\n  snow: 0xfffafa,\n  springgreen: 0x00ff7f,\n  steelblue: 0x4682b4,\n  tan: 0xd2b48c,\n  teal: 0x008080,\n  thistle: 0xd8bfd8,\n  tomato: 0xff6347,\n  turquoise: 0x40e0d0,\n  violet: 0xee82ee,\n  wheat: 0xf5deb3,\n  white: 0xffffff,\n  whitesmoke: 0xf5f5f5,\n  yellow: 0xffff00,\n  yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n  copy(channels) {\n    return Object.assign(new this.constructor, this, channels);\n  },\n  displayable() {\n    return this.rgb().displayable();\n  },\n  hex: color_formatHex, // Deprecated! Use color.formatHex.\n  formatHex: color_formatHex,\n  formatHex8: color_formatHex8,\n  formatHsl: color_formatHsl,\n  formatRgb: color_formatRgb,\n  toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n  return this.rgb().formatHex();\n}\n\nfunction color_formatHex8() {\n  return this.rgb().formatHex8();\n}\n\nfunction color_formatHsl() {\n  return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n  return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n  var m, l;\n  format = (format + \"\").trim().toLowerCase();\n  return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n      : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n      : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n      : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n      : null) // invalid hex\n      : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n      : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n      : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n      : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n      : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n      : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n      : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n      : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n      : null;\n}\n\nfunction rgbn(n) {\n  return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n  if (a <= 0) r = g = b = NaN;\n  return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n  if (!(o instanceof Color)) o = color(o);\n  if (!o) return new Rgb;\n  o = o.rgb();\n  return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n  return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n  this.r = +r;\n  this.g = +g;\n  this.b = +b;\n  this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n  brighter(k) {\n    k = k == null ? brighter : Math.pow(brighter, k);\n    return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n  },\n  darker(k) {\n    k = k == null ? darker : Math.pow(darker, k);\n    return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n  },\n  rgb() {\n    return this;\n  },\n  clamp() {\n    return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n  },\n  displayable() {\n    return (-0.5 <= this.r && this.r < 255.5)\n        && (-0.5 <= this.g && this.g < 255.5)\n        && (-0.5 <= this.b && this.b < 255.5)\n        && (0 <= this.opacity && this.opacity <= 1);\n  },\n  hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n  formatHex: rgb_formatHex,\n  formatHex8: rgb_formatHex8,\n  formatRgb: rgb_formatRgb,\n  toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n  return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`;\n}\n\nfunction rgb_formatHex8() {\n  return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`;\n}\n\nfunction rgb_formatRgb() {\n  const a = clampa(this.opacity);\n  return `${a === 1 ? \"rgb(\" : \"rgba(\"}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? \")\" : `, ${a})`}`;\n}\n\nfunction clampa(opacity) {\n  return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\n\nfunction clampi(value) {\n  return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\n\nfunction hex(value) {\n  value = clampi(value);\n  return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n  if (a <= 0) h = s = l = NaN;\n  else if (l <= 0 || l >= 1) h = s = NaN;\n  else if (s <= 0) h = NaN;\n  return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n  if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n  if (!(o instanceof Color)) o = color(o);\n  if (!o) return new Hsl;\n  if (o instanceof Hsl) return o;\n  o = o.rgb();\n  var r = o.r / 255,\n      g = o.g / 255,\n      b = o.b / 255,\n      min = Math.min(r, g, b),\n      max = Math.max(r, g, b),\n      h = NaN,\n      s = max - min,\n      l = (max + min) / 2;\n  if (s) {\n    if (r === max) h = (g - b) / s + (g < b) * 6;\n    else if (g === max) h = (b - r) / s + 2;\n    else h = (r - g) / s + 4;\n    s /= l < 0.5 ? max + min : 2 - max - min;\n    h *= 60;\n  } else {\n    s = l > 0 && l < 1 ? 0 : h;\n  }\n  return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n  return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n  this.h = +h;\n  this.s = +s;\n  this.l = +l;\n  this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n  brighter(k) {\n    k = k == null ? brighter : Math.pow(brighter, k);\n    return new Hsl(this.h, this.s, this.l * k, this.opacity);\n  },\n  darker(k) {\n    k = k == null ? darker : Math.pow(darker, k);\n    return new Hsl(this.h, this.s, this.l * k, this.opacity);\n  },\n  rgb() {\n    var h = this.h % 360 + (this.h < 0) * 360,\n        s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n        l = this.l,\n        m2 = l + (l < 0.5 ? l : 1 - l) * s,\n        m1 = 2 * l - m2;\n    return new Rgb(\n      hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n      hsl2rgb(h, m1, m2),\n      hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n      this.opacity\n    );\n  },\n  clamp() {\n    return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n  },\n  displayable() {\n    return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n        && (0 <= this.l && this.l <= 1)\n        && (0 <= this.opacity && this.opacity <= 1);\n  },\n  formatHsl() {\n    const a = clampa(this.opacity);\n    return `${a === 1 ? \"hsl(\" : \"hsla(\"}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? \")\" : `, ${a})`}`;\n  }\n}));\n\nfunction clamph(value) {\n  value = (value || 0) % 360;\n  return value < 0 ? value + 360 : value;\n}\n\nfunction clampt(value) {\n  return Math.max(0, Math.min(1, value || 0));\n}\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n  return (h < 60 ? m1 + (m2 - m1) * h / 60\n      : h < 180 ? m2\n      : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n      : m1) * 255;\n}\n", "export function basis(t1, v0, v1, v2, v3) {\n  var t2 = t1 * t1, t3 = t2 * t1;\n  return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n      + (4 - 6 * t2 + 3 * t3) * v1\n      + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n      + t3 * v3) / 6;\n}\n\nexport default function(values) {\n  var n = values.length - 1;\n  return function(t) {\n    var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n        v1 = values[i],\n        v2 = values[i + 1],\n        v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n        v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n    return basis((t - i / n) * n, v0, v1, v2, v3);\n  };\n}\n", "import {basis} from \"./basis.js\";\n\nexport default function(values) {\n  var n = values.length;\n  return function(t) {\n    var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n        v0 = values[(i + n - 1) % n],\n        v1 = values[i % n],\n        v2 = values[(i + 1) % n],\n        v3 = values[(i + 2) % n];\n    return basis((t - i / n) * n, v0, v1, v2, v3);\n  };\n}\n", "export default x => () => x;\n", "import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n  return function(t) {\n    return a + t * d;\n  };\n}\n\nfunction exponential(a, b, y) {\n  return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n    return Math.pow(a + t * b, y);\n  };\n}\n\nexport function hue(a, b) {\n  var d = b - a;\n  return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n  return (y = +y) === 1 ? nogamma : function(a, b) {\n    return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n  };\n}\n\nexport default function nogamma(a, b) {\n  var d = b - a;\n  return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n", "import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n  var color = gamma(y);\n\n  function rgb(start, end) {\n    var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n        g = color(start.g, end.g),\n        b = color(start.b, end.b),\n        opacity = nogamma(start.opacity, end.opacity);\n    return function(t) {\n      start.r = r(t);\n      start.g = g(t);\n      start.b = b(t);\n      start.opacity = opacity(t);\n      return start + \"\";\n    };\n  }\n\n  rgb.gamma = rgbGamma;\n\n  return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n  return function(colors) {\n    var n = colors.length,\n        r = new Array(n),\n        g = new Array(n),\n        b = new Array(n),\n        i, color;\n    for (i = 0; i < n; ++i) {\n      color = colorRgb(colors[i]);\n      r[i] = color.r || 0;\n      g[i] = color.g || 0;\n      b[i] = color.b || 0;\n    }\n    r = spline(r);\n    g = spline(g);\n    b = spline(b);\n    color.opacity = 1;\n    return function(t) {\n      color.r = r(t);\n      color.g = g(t);\n      color.b = b(t);\n      return color + \"\";\n    };\n  };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n", "export default function(a, b) {\n  if (!b) b = [];\n  var n = a ? Math.min(b.length, a.length) : 0,\n      c = b.slice(),\n      i;\n  return function(t) {\n    for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n    return c;\n  };\n}\n\nexport function isNumberArray(x) {\n  return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n", "import value from \"./value.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n  return (isNumberArray(b) ? numberArray : genericArray)(a, b);\n}\n\nexport function genericArray(a, b) {\n  var nb = b ? b.length : 0,\n      na = a ? Math.min(nb, a.length) : 0,\n      x = new Array(na),\n      c = new Array(nb),\n      i;\n\n  for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n  for (; i < nb; ++i) c[i] = b[i];\n\n  return function(t) {\n    for (i = 0; i < na; ++i) c[i] = x[i](t);\n    return c;\n  };\n}\n", "export default function(a, b) {\n  var d = new Date;\n  return a = +a, b = +b, function(t) {\n    return d.setTime(a * (1 - t) + b * t), d;\n  };\n}\n", "export default function(a, b) {\n  return a = +a, b = +b, function(t) {\n    return a * (1 - t) + b * t;\n  };\n}\n", "import value from \"./value.js\";\n\nexport default function(a, b) {\n  var i = {},\n      c = {},\n      k;\n\n  if (a === null || typeof a !== \"object\") a = {};\n  if (b === null || typeof b !== \"object\") b = {};\n\n  for (k in b) {\n    if (k in a) {\n      i[k] = value(a[k], b[k]);\n    } else {\n      c[k] = b[k];\n    }\n  }\n\n  return function(t) {\n    for (k in i) c[k] = i[k](t);\n    return c;\n  };\n}\n", "import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n    reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n  return function() {\n    return b;\n  };\n}\n\nfunction one(b) {\n  return function(t) {\n    return b(t) + \"\";\n  };\n}\n\nexport default function(a, b) {\n  var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n      am, // current match in a\n      bm, // current match in b\n      bs, // string preceding current number in b, if any\n      i = -1, // index in s\n      s = [], // string constants and placeholders\n      q = []; // number interpolators\n\n  // Coerce inputs to strings.\n  a = a + \"\", b = b + \"\";\n\n  // Interpolate pairs of numbers in a & b.\n  while ((am = reA.exec(a))\n      && (bm = reB.exec(b))) {\n    if ((bs = bm.index) > bi) { // a string precedes the next number in b\n      bs = b.slice(bi, bs);\n      if (s[i]) s[i] += bs; // coalesce with previous string\n      else s[++i] = bs;\n    }\n    if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n      if (s[i]) s[i] += bm; // coalesce with previous string\n      else s[++i] = bm;\n    } else { // interpolate non-matching numbers\n      s[++i] = null;\n      q.push({i: i, x: number(am, bm)});\n    }\n    bi = reB.lastIndex;\n  }\n\n  // Add remains of b.\n  if (bi < b.length) {\n    bs = b.slice(bi);\n    if (s[i]) s[i] += bs; // coalesce with previous string\n    else s[++i] = bs;\n  }\n\n  // Special optimization for only a single match.\n  // Otherwise, interpolate each of the numbers and rejoin the string.\n  return s.length < 2 ? (q[0]\n      ? one(q[0].x)\n      : zero(b))\n      : (b = q.length, function(t) {\n          for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n          return s.join(\"\");\n        });\n}\n", "import {color} from \"d3-color\";\nimport rgb from \"./rgb.js\";\nimport {genericArray} from \"./array.js\";\nimport date from \"./date.js\";\nimport number from \"./number.js\";\nimport object from \"./object.js\";\nimport string from \"./string.js\";\nimport constant from \"./constant.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n  var t = typeof b, c;\n  return b == null || t === \"boolean\" ? constant(b)\n      : (t === \"number\" ? number\n      : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n      : b instanceof color ? rgb\n      : b instanceof Date ? date\n      : isNumberArray(b) ? numberArray\n      : Array.isArray(b) ? genericArray\n      : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n      : number)(a, b);\n}\n", "export default function(a, b) {\n  return a = +a, b = +b, function(t) {\n    return Math.round(a * (1 - t) + b * t);\n  };\n}\n", "import {default as value} from \"./value.js\";\n\nexport default function piecewise(interpolate, values) {\n  if (values === undefined) values = interpolate, interpolate = value;\n  var i = 0, n = values.length - 1, v = values[0], I = new Array(n < 0 ? 0 : n);\n  while (i < n) I[i] = interpolate(v, v = values[++i]);\n  return function(t) {\n    var i = Math.max(0, Math.min(n - 1, Math.floor(t *= n)));\n    return I[i](t - i);\n  };\n}\n", "import React from \"react\";\nimport Timer from \"./timer\";\n/**\n * The React context object consumers may use to access or override the global\n * timer.\n */\n\nvar TimerContext = /*#__PURE__*/React.createContext({\n  transitionTimer: new Timer(),\n  animationTimer: new Timer()\n});\nTimerContext.displayName = \"TimerContext\";\nexport default TimerContext;", "var frame = 0, // is an animation frame pending?\n    timeout = 0, // is a timeout pending?\n    interval = 0, // are any timers active?\n    pokeDelay = 1000, // how frequently we check for clock skew\n    taskHead,\n    taskTail,\n    clockLast = 0,\n    clockNow = 0,\n    clockSkew = 0,\n    clock = typeof performance === \"object\" && performance.now ? performance : Date,\n    setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n  return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n  clockNow = 0;\n}\n\nexport function Timer() {\n  this._call =\n  this._time =\n  this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n  constructor: Timer,\n  restart: function(callback, delay, time) {\n    if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n    time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n    if (!this._next && taskTail !== this) {\n      if (taskTail) taskTail._next = this;\n      else taskHead = this;\n      taskTail = this;\n    }\n    this._call = callback;\n    this._time = time;\n    sleep();\n  },\n  stop: function() {\n    if (this._call) {\n      this._call = null;\n      this._time = Infinity;\n      sleep();\n    }\n  }\n};\n\nexport function timer(callback, delay, time) {\n  var t = new Timer;\n  t.restart(callback, delay, time);\n  return t;\n}\n\nexport function timerFlush() {\n  now(); // Get the current time, if not already set.\n  ++frame; // Pretend we\u2019ve set an alarm, if we haven\u2019t already.\n  var t = taskHead, e;\n  while (t) {\n    if ((e = clockNow - t._time) >= 0) t._call.call(undefined, e);\n    t = t._next;\n  }\n  --frame;\n}\n\nfunction wake() {\n  clockNow = (clockLast = clock.now()) + clockSkew;\n  frame = timeout = 0;\n  try {\n    timerFlush();\n  } finally {\n    frame = 0;\n    nap();\n    clockNow = 0;\n  }\n}\n\nfunction poke() {\n  var now = clock.now(), delay = now - clockLast;\n  if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n  var t0, t1 = taskHead, t2, time = Infinity;\n  while (t1) {\n    if (t1._call) {\n      if (time > t1._time) time = t1._time;\n      t0 = t1, t1 = t1._next;\n    } else {\n      t2 = t1._next, t1._next = null;\n      t1 = t0 ? t0._next = t2 : taskHead = t2;\n    }\n  }\n  taskTail = t0;\n  sleep(time);\n}\n\nfunction sleep(time) {\n  if (frame) return; // Soonest alarm already set, or will be.\n  if (timeout) timeout = clearTimeout(timeout);\n  var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n  if (delay > 24) {\n    if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n    if (interval) interval = clearInterval(interval);\n  } else {\n    if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n    frame = 1, setFrame(wake);\n  }\n}\n", "function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nimport { timer, now } from \"victory-vendor/d3-timer\";\n\nvar Timer = /*#__PURE__*/function () {\n  function Timer() {\n    var _this = this;\n\n    _classCallCheck(this, Timer);\n\n    this.shouldAnimate = void 0;\n    this.subscribers = void 0;\n    this.activeSubscriptions = void 0;\n    this.timer = void 0;\n\n    this.loop = function () {\n      _this.subscribers.forEach(function (s) {\n        s.callback(now() - s.startTime, s.duration);\n      });\n    };\n\n    this.shouldAnimate = true;\n    this.subscribers = [];\n    this.timer = null;\n    this.activeSubscriptions = 0;\n  }\n\n  _createClass(Timer, [{\n    key: \"bypassAnimation\",\n    value: function bypassAnimation() {\n      this.shouldAnimate = false;\n    }\n  }, {\n    key: \"resumeAnimation\",\n    value: function resumeAnimation() {\n      this.shouldAnimate = true;\n    }\n  }, {\n    key: \"start\",\n    value: function start() {\n      if (!this.timer) {\n        this.timer = timer(this.loop);\n      }\n    }\n  }, {\n    key: \"stop\",\n    value: function stop() {\n      if (this.timer) {\n        this.timer.stop();\n        this.timer = null;\n      }\n    }\n  }, {\n    key: \"subscribe\",\n    value: function subscribe(callback, duration) {\n      duration = this.shouldAnimate ? duration : 0;\n      var subscriptionID = this.subscribers.push({\n        startTime: now(),\n        callback: callback,\n        duration: duration\n      });\n      this.activeSubscriptions++;\n      this.start();\n      return subscriptionID;\n    }\n  }, {\n    key: \"unsubscribe\",\n    value: function unsubscribe(id) {\n      if (id !== null && this.subscribers[id - 1]) {\n        delete this.subscribers[id - 1];\n        this.activeSubscriptions--;\n      }\n\n      if (this.activeSubscriptions === 0) {\n        this.stop();\n      }\n    }\n  }]);\n\n  return Timer;\n}();\n\nexport { Timer as default };", "import _isFunction from \"lodash/isFunction\";\nimport _isObject from \"lodash/isObject\";\nimport _uniqueId from \"lodash/uniqueId\";\nimport _defaults from \"lodash/defaults\";\nimport _assign from \"lodash/assign\";\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (typeof call === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport * as CustomPropTypes from \"../victory-util/prop-types\";\nimport { Portal } from \"../victory-portal/portal\";\nimport { PortalContext } from \"../victory-portal/portal-context\";\nimport TimerContext from \"../victory-util/timer-context\";\nimport * as Helpers from \"../victory-util/helpers\";\nimport * as UserProps from \"../victory-util/user-props\";\nexport var VictoryContainer = /*#__PURE__*/function (_React$Component) {\n  _inherits(VictoryContainer, _React$Component);\n\n  var _super = _createSuper(VictoryContainer);\n\n  // @ts-expect-error Ref will be initialized on mount\n  // @ts-expect-error Ref will be initialized on mount\n  function VictoryContainer(props) {\n    var _this;\n\n    _classCallCheck(this, VictoryContainer);\n\n    _this = _super.call(this, props);\n    _this.containerId = void 0;\n    _this.portalRef = void 0;\n    _this.containerRef = void 0;\n    _this.shouldHandleWheel = void 0;\n\n    _this.savePortalRef = function (portal) {\n      _this.portalRef = portal;\n      return portal;\n    };\n\n    _this.portalUpdate = function (key, el) {\n      return _this.portalRef.portalUpdate(key, el);\n    };\n\n    _this.portalRegister = function () {\n      return _this.portalRef.portalRegister();\n    };\n\n    _this.portalDeregister = function (key) {\n      return _this.portalRef.portalDeregister(key);\n    };\n\n    _this.saveContainerRef = function (container) {\n      if (_isFunction(_this.props.containerRef)) {\n        _this.props.containerRef(container);\n      }\n\n      _this.containerRef = container;\n      return container;\n    };\n\n    _this.handleWheel = function (e) {\n      return e.preventDefault();\n    };\n\n    _this.containerId = !_isObject(props) || props.containerId === undefined ? _uniqueId(\"victory-container-\") : props.containerId;\n    _this.shouldHandleWheel = !!(props && props.events && props.events.onWheel);\n    return _this;\n  }\n\n  _createClass(VictoryContainer, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      if (this.shouldHandleWheel && this.containerRef) {\n        this.containerRef.addEventListener(\"wheel\", this.handleWheel);\n      }\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      if (this.shouldHandleWheel && this.containerRef) {\n        this.containerRef.removeEventListener(\"wheel\", this.handleWheel);\n      }\n    }\n  }, {\n    key: \"getIdForElement\",\n    value: function getIdForElement(elementName) {\n      return \"\".concat(this.containerId, \"-\").concat(elementName);\n    } // overridden in custom containers\n\n  }, {\n    key: \"getChildren\",\n    value: function getChildren(props) {\n      return props.children;\n    } // Get props defined by the Open UI Automation (OUIA) 1.0-RC spec\n    // See https://ouia.readthedocs.io/en/latest/README.html#ouia-component\n\n  }, {\n    key: \"getOUIAProps\",\n    value: function getOUIAProps(props) {\n      var ouiaId = props.ouiaId,\n          ouiaSafe = props.ouiaSafe,\n          ouiaType = props.ouiaType;\n      return _objectSpread(_objectSpread(_objectSpread({}, ouiaId && {\n        \"data-ouia-component-id\": ouiaId\n      }), ouiaType && {\n        \"data-ouia-component-type\": ouiaType\n      }), ouiaSafe !== undefined && {\n        \"data-ouia-safe\": ouiaSafe\n      });\n    }\n  }, {\n    key: \"renderContainer\",\n    value: function renderContainer(props, svgProps, style) {\n      var title = props.title,\n          desc = props.desc,\n          portalComponent = props.portalComponent,\n          className = props.className,\n          width = props.width,\n          height = props.height,\n          portalZIndex = props.portalZIndex,\n          responsive = props.responsive;\n      var children = this.getChildren(props);\n      var dimensions = responsive ? {\n        width: \"100%\",\n        height: \"100%\"\n      } : {\n        width: width,\n        height: height\n      };\n\n      var divStyle = _assign({\n        pointerEvents: \"none\",\n        touchAction: \"none\",\n        position: \"relative\"\n      }, dimensions);\n\n      var portalDivStyle = _assign({\n        zIndex: portalZIndex,\n        position: \"absolute\",\n        top: 0,\n        left: 0\n      }, dimensions);\n\n      var svgStyle = _assign({\n        pointerEvents: \"all\"\n      }, dimensions);\n\n      var portalSvgStyle = _assign({\n        overflow: \"visible\"\n      }, dimensions);\n\n      var portalProps = {\n        width: width,\n        height: height,\n        viewBox: svgProps.viewBox,\n        preserveAspectRatio: svgProps.preserveAspectRatio,\n        style: portalSvgStyle\n      };\n      return /*#__PURE__*/React.createElement(PortalContext.Provider, {\n        value: {\n          portalUpdate: this.portalUpdate,\n          portalRegister: this.portalRegister,\n          portalDeregister: this.portalDeregister\n        }\n      }, /*#__PURE__*/React.createElement(\"div\", _extends({\n        style: _defaults({}, style, divStyle),\n        className: className,\n        ref: this.saveContainerRef\n      }, this.getOUIAProps(props)), /*#__PURE__*/React.createElement(\"svg\", _extends({}, svgProps, {\n        style: svgStyle\n      }), title ? /*#__PURE__*/React.createElement(\"title\", {\n        id: this.getIdForElement(\"title\")\n      }, title) : null, desc ? /*#__PURE__*/React.createElement(\"desc\", {\n        id: this.getIdForElement(\"desc\")\n      }, desc) : null, children), /*#__PURE__*/React.createElement(\"div\", {\n        style: portalDivStyle\n      }, /*#__PURE__*/React.cloneElement(portalComponent, _objectSpread(_objectSpread({}, portalProps), {}, {\n        ref: this.savePortalRef\n      })))));\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this$props = this.props,\n          width = _this$props.width,\n          height = _this$props.height,\n          responsive = _this$props.responsive,\n          events = _this$props.events,\n          title = _this$props.title,\n          desc = _this$props.desc,\n          tabIndex = _this$props.tabIndex,\n          preserveAspectRatio = _this$props.preserveAspectRatio,\n          role = _this$props.role;\n      var style = responsive ? this.props.style : Helpers.omit(this.props.style, [\"height\", \"width\"]);\n      var userProps = UserProps.getSafeUserProps(this.props);\n\n      var svgProps = _assign(_objectSpread({\n        width: width,\n        height: height,\n        tabIndex: tabIndex,\n        role: role,\n        \"aria-labelledby\": [title && this.getIdForElement(\"title\"), this.props[\"aria-labelledby\"]].filter(Boolean).join(\" \") || undefined,\n        \"aria-describedby\": [desc && this.getIdForElement(\"desc\"), this.props[\"aria-describedby\"]].filter(Boolean).join(\" \") || undefined,\n        viewBox: responsive ? \"0 0 \".concat(width, \" \").concat(height) : undefined,\n        preserveAspectRatio: responsive ? preserveAspectRatio : undefined\n      }, userProps), events);\n\n      return this.renderContainer(this.props, svgProps, style);\n    }\n  }]);\n\n  return VictoryContainer;\n}(React.Component);\nVictoryContainer.displayName = \"VictoryContainer\";\nVictoryContainer.role = \"container\";\nVictoryContainer.propTypes = {\n  \"aria-describedby\": PropTypes.string,\n  \"aria-labelledby\": PropTypes.string,\n  children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n  className: PropTypes.string,\n  containerId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  containerRef: PropTypes.func,\n  desc: PropTypes.string,\n  events: PropTypes.object,\n  height: CustomPropTypes.nonNegative,\n  name: PropTypes.string,\n  origin: PropTypes.shape({\n    x: CustomPropTypes.nonNegative,\n    y: CustomPropTypes.nonNegative\n  }),\n  ouiaId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  ouiaSafe: PropTypes.bool,\n  ouiaType: PropTypes.string,\n  polar: PropTypes.bool,\n  portalComponent: PropTypes.element,\n  portalZIndex: CustomPropTypes.integer,\n  preserveAspectRatio: PropTypes.string,\n  responsive: PropTypes.bool,\n  role: PropTypes.string,\n  style: PropTypes.object,\n  tabIndex: PropTypes.number,\n  theme: PropTypes.object,\n  title: PropTypes.string,\n  width: CustomPropTypes.nonNegative\n};\nVictoryContainer.defaultProps = {\n  className: \"VictoryContainer\",\n  portalComponent: /*#__PURE__*/React.createElement(Portal, null),\n  portalZIndex: 99,\n  responsive: true,\n  role: \"img\"\n};\nVictoryContainer.contextType = TimerContext;", "import _isRegExp from \"lodash/isRegExp\";\nimport _find from \"lodash/find\";\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport * as Log from \"./log\";\nimport PropTypes from \"prop-types\";\nimport * as Scale from \"./scale\";\n\n/**\n * Return a new validator based on `validator` but with the option to chain\n * `isRequired` onto the validation. This is nearly identical to how React\n * does it internally, but they don't expose their helper for us to use.\n * @param {Function} validator Validation function.\n * @returns {Function} Validator with `isRequired` option.\n */\nvar makeChainable = function (validator) {\n  var createChainable = function (isRequired) {\n    return function (props, propName, componentName) {\n      var value = props[propName];\n\n      if (value === undefined || value === null) {\n        if (isRequired) {\n          return new Error(\"Required `\".concat(propName, \"` was not specified in `\").concat(componentName, \"`.\"));\n        }\n\n        return null;\n      }\n\n      for (var _len = arguments.length, rest = new Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) {\n        rest[_key - 3] = arguments[_key];\n      }\n\n      return validator.apply(void 0, [props, propName, componentName].concat(rest));\n    };\n  };\n\n  var chainable = Object.assign(createChainable(false), {\n    isRequired: createChainable(true)\n  });\n  return chainable;\n};\n\nvar nullConstructor = function () {\n  return null;\n};\n\nvar undefinedConstructor = function () {\n  return undefined;\n};\n/**\n * Get the constructor of `value`. If `value` is null or undefined, return the\n * special singletons `nullConstructor` or `undefinedConstructor`, respectively.\n * @param {*} value Instance to return the constructor of.\n * @returns {Function} Constructor of `value`.\n */\n\n\nvar getConstructor = function (value) {\n  if (value === undefined) {\n    return undefinedConstructor;\n  } else if (value === null) {\n    return nullConstructor;\n  }\n\n  return value.constructor;\n};\n/**\n * Get the name of the constructor used to create `value`, using\n * `Object.prototype.toString`. If the value is null or undefined, return\n * \"null\" or \"undefined\", respectively.\n * @param {*} value Instance to return the constructor name of.\n * @returns {String} Name of the constructor.\n */\n\n\nvar getConstructorName = function (value) {\n  if (value === undefined) {\n    return \"undefined\";\n  } else if (value === null) {\n    return \"null\";\n  }\n\n  return Object.prototype.toString.call(value).slice(8, -1); // eslint-disable-line no-magic-numbers\n};\n/**\n * Return a new validator based on `propType` but which logs a `console.error`\n * with `explanation` if used.\n * @param {Function} propType The old, deprecated propType.\n * @param {String} explanation The message to provide the user of the deprecated propType.\n * @returns {Function} Validator which logs usage of this propType\n */\n\n\nexport function deprecated(propType, explanation) {\n  return function (props, propName, componentName) {\n    var value = props[propName];\n\n    if (value !== null && value !== undefined) {\n      Log.warn(\"\\\"\".concat(propName, \"\\\" property of \\\"\").concat(componentName, \"\\\" has been deprecated \").concat(explanation));\n    }\n\n    PropTypes.checkPropTypes(_defineProperty({}, propName, propType), props, propName, componentName);\n    return null;\n  };\n}\n/**\n * Return a new validator which returns true\n * if and only if all validators passed as arguments return true.\n * Like React.propTypes.oneOfType, except \"all\" instead of \"any\"\n * @param {Array} validators Validation functions.\n * @returns {Function} Combined validator function\n */\n\nexport function allOfType(validators) {\n  return makeChainable(function (props, propName, componentName) {\n    for (var _len2 = arguments.length, rest = new Array(_len2 > 3 ? _len2 - 3 : 0), _key2 = 3; _key2 < _len2; _key2++) {\n      rest[_key2 - 3] = arguments[_key2];\n    }\n\n    return validators.reduce(function (result, validator) {\n      return result || validator.apply(void 0, [props, propName, componentName].concat(rest));\n    }, null);\n  });\n}\n/**\n * Check that the value is a non-negative number.\n */\n\nexport var nonNegative = makeChainable(function (props, propName, componentName) {\n  var value = props[propName];\n\n  if (typeof value !== \"number\" || value < 0) {\n    return new Error(\"`\".concat(propName, \"` in `\").concat(componentName, \"` must be a non-negative number.\"));\n  }\n\n  return null;\n});\n/**\n * Check that the value is an integer.\n */\n\nexport var integer = makeChainable(function (props, propName, componentName) {\n  var value = props[propName];\n\n  if (typeof value !== \"number\" || value % 1 !== 0) {\n    return new Error(\"`\".concat(propName, \"` in `\").concat(componentName, \"` must be an integer.\"));\n  }\n\n  return null;\n});\n/**\n * Check that the value is greater than zero.\n */\n\nexport var greaterThanZero = makeChainable(function (props, propName, componentName) {\n  var value = props[propName];\n\n  if (typeof value !== \"number\" || value <= 0) {\n    return new Error(\"`\".concat(propName, \"` in `\").concat(componentName, \"` must be a number greater than zero.\"));\n  }\n\n  return null;\n});\n/**\n * Check that the value is an Array of two unique values.\n */\n\nexport var domain = makeChainable(function (props, propName, componentName) {\n  var value = props[propName];\n\n  if (!Array.isArray(value) || value.length !== 2 || value[1] === value[0]) {\n    return new Error(\"`\".concat(propName, \"` in `\").concat(componentName, \"` must be an array of two unique numeric values.\"));\n  }\n\n  return null;\n});\n/**\n * Check that the value looks like a d3 `scale` function.\n */\n\nexport var scale = makeChainable(function (props, propName, componentName) {\n  var value = props[propName];\n\n  if (!Scale.validScale(value)) {\n    return new Error(\"`\".concat(propName, \"` in `\").concat(componentName, \"` must be a d3 scale.\"));\n  }\n\n  return null;\n});\n/**\n * Check that an array contains items of the same type.\n */\n\nexport var homogeneousArray = makeChainable(function (props, propName, componentName) {\n  var values = props[propName];\n\n  if (!Array.isArray(values)) {\n    return new Error(\"`\".concat(propName, \"` in `\").concat(componentName, \"` must be an array.\"));\n  }\n\n  if (values.length < 2) {\n    return null;\n  }\n\n  var comparisonConstructor = getConstructor(values[0]);\n\n  var typeMismatchedValue = _find(values, function (value) {\n    return comparisonConstructor !== getConstructor(value);\n  });\n\n  if (typeMismatchedValue) {\n    var constructorName = getConstructorName(values[0]);\n    var otherConstructorName = getConstructorName(typeMismatchedValue);\n    return new Error(\"Expected `\".concat(propName, \"` in `\").concat(componentName, \"` to be a \") + \"homogeneous array, but found types `\".concat(constructorName, \"` and \") + \"`\".concat(otherConstructorName, \"`.\"));\n  }\n\n  return null;\n});\n/**\n * Check that array prop length matches props.data.length\n */\n\nexport var matchDataLength = makeChainable(function (props, propName) {\n  if (props[propName] && Array.isArray(props[propName]) && props[propName].length !== props.data.length) {\n    return new Error(\"Length of data and \".concat(propName, \" arrays must match.\"));\n  }\n\n  return null;\n});\n/**\n * Check that the value is a regular expression\n */\n\nexport var regExp = makeChainable(function (props, propName, componentName) {\n  if (props[propName] && !_isRegExp(props[propName])) {\n    return new Error(\"`\".concat(propName, \"` in `\").concat(componentName, \"` must be a regular expression.\"));\n  }\n\n  return null;\n});", "/* global console */\n\n/* eslint-disable no-console */\n// TODO: Use \"warning\" npm module like React is switching to.\nexport function warn(message) {\n  if (process.env.NODE_ENV !== \"production\") {\n    if (console && console.warn) {\n      console.warn(message);\n    }\n  }\n}", "import _isPlainObject from \"lodash/isPlainObject\";\nimport _isFunction from \"lodash/isFunction\";\nimport _includes from \"lodash/includes\";\nimport * as Helpers from \"./helpers\";\nimport * as Collection from \"./collection\";\nimport * as d3Scale from \"victory-vendor/d3-scale\";\nvar supportedScaleStrings = [\"linear\", \"time\", \"log\", \"sqrt\"];\n\n// Private Functions\nfunction toNewName(scale) {\n  // d3 scale changed the naming scheme for scale from \"linear\" -> \"scaleLinear\" etc.\n  var capitalize = function (s) {\n    return s && s[0].toUpperCase() + s.slice(1);\n  };\n\n  return \"scale\".concat(capitalize(scale));\n}\n\nexport function validScale(scale) {\n  if (typeof scale === \"function\") {\n    return _isFunction(scale.copy) && _isFunction(scale.domain) && _isFunction(scale.range);\n  } else if (typeof scale === \"string\") {\n    return _includes(supportedScaleStrings, scale);\n  }\n\n  return false;\n}\n\nfunction isScaleDefined(props, axis) {\n  if (!props.scale) {\n    return false;\n  } else if (props.scale.x || props.scale.y) {\n    return !!props.scale[axis];\n  }\n\n  return true;\n}\n\nfunction getScaleTypeFromProps(props, axis) {\n  if (!isScaleDefined(props, axis)) {\n    return undefined;\n  }\n\n  var scale = props.scale[axis] || props.scale;\n  return typeof scale === \"string\" ? scale : getType(scale);\n}\n\nfunction getScaleFromDomain(props, axis) {\n  var domain;\n\n  if (props.domain && props.domain[axis]) {\n    domain = props.domain[axis];\n  } else if (props.domain && Array.isArray(props.domain)) {\n    domain = props.domain;\n  }\n\n  if (!domain) {\n    return undefined;\n  }\n\n  return Collection.containsDates(domain) ? \"time\" : \"linear\";\n}\n\nfunction getScaleTypeFromData(props, axis) {\n  if (!props.data) {\n    return \"linear\";\n  }\n\n  var accessor = Helpers.createAccessor(props[axis]);\n  var axisData = props.data.map(function (datum) {\n    var processedData = _isPlainObject(accessor(datum)) ? accessor(datum)[axis] : accessor(datum);\n    return processedData !== undefined ? processedData : datum[axis];\n  });\n  return Collection.containsDates(axisData) ? \"time\" : \"linear\";\n} // Exported Functions\n\n\nexport function getScaleFromName(name) {\n  if (validScale(name)) {\n    var methodName = toNewName(name); // @ts-expect-error scaleTime is not directly compatible with our D3Scale definition\n\n    return d3Scale[methodName]();\n  }\n\n  return d3Scale.scaleLinear();\n}\nexport function getBaseScale(props, axis) {\n  var scale = getScaleFromProps(props, axis);\n\n  if (scale) {\n    return typeof scale === \"string\" ? getScaleFromName(scale) : scale;\n  }\n\n  var defaultScale = getScaleFromDomain(props, axis) || getScaleTypeFromData(props, axis);\n  return getScaleFromName(defaultScale);\n}\nexport function getDefaultScale() {\n  return d3Scale.scaleLinear();\n}\nexport function getScaleFromProps(props, axis) {\n  if (!isScaleDefined(props, axis)) {\n    return undefined;\n  }\n\n  var scale = props.scale[axis] || props.scale;\n\n  if (validScale(scale)) {\n    return _isFunction(scale) ? scale : getScaleFromName(scale);\n  }\n\n  return undefined;\n}\nexport function getScaleType(props, axis) {\n  // if the scale was not given in props, it will be set to linear or time depending on data\n  return getScaleTypeFromProps(props, axis) || getScaleTypeFromData(props, axis);\n} // Ordered type inference off of function fields.\n// **Note**: Brittle because reliant on d3 internals.\n\nvar DUCK_TYPES = [{\n  name: \"quantile\",\n  method: \"quantiles\"\n}, {\n  name: \"log\",\n  method: \"base\"\n} // TODO(2214): Re-evaluate (1) duck typing approach, and (2) if duck typing,\n//   do we need a different approach? (Multiple keys? Stringifying functions?)\n// https://github.com/FormidableLabs/victory/issues/2214\n// Below are matches that don't seem to otherwise occur in Victory code base.\n// { name: \"ordinal\", method: \"unknown\" },\n// { name: \"pow-sqrt\", method: \"exponent\" },\n// { name: \"quantize-threshold\", method: \"invertExtent\" }\n];\nexport function getType(scale) {\n  if (typeof scale === \"string\") {\n    return scale;\n  }\n\n  var scaleType = DUCK_TYPES.filter(function (type) {\n    return scale[type.method] !== undefined;\n  })[0];\n  return scaleType ? scaleType.name : undefined;\n}", "import _keys from \"lodash/keys\";\nimport _assign from \"lodash/assign\";\nimport _pick from \"lodash/pick\";\nimport _property from \"lodash/property\";\nimport _isFunction from \"lodash/isFunction\";\nimport _defaults from \"lodash/defaults\";\n\n/* eslint-disable no-use-before-define */\nimport React from \"react\";\n\n// Private Functions\nfunction getCartesianRange(props, axis) {\n  // determine how to lay the axis and what direction positive and negative are\n  var vertical = axis !== \"x\";\n  var padding = getPadding(props);\n\n  if (vertical) {\n    return [props.height - padding.bottom, padding.top];\n  }\n\n  return [padding.left, props.width - padding.right];\n}\n\nfunction getPolarRange(props, axis) {\n  if (axis === \"x\") {\n    var startAngle = degreesToRadians(props.startAngle || 0);\n    var endAngle = degreesToRadians(props.endAngle || 360);\n    return [startAngle, endAngle];\n  }\n\n  return [props.innerRadius || 0, getRadius(props)];\n} // Exported Functions\n\n/**\n * creates an object with some keys excluded\n * replacement for lodash.omit for performance. does not mimic the entire lodash.omit api\n * @param {Object} originalObject: created object will be based on this object\n * @param {Array<String>} ks: an array of keys to omit from the new object\n * @returns {Object} new object with same properties as originalObject\n */\n\n\nexport function omit(originalObject) {\n  var ks = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n  // code based on babel's _objectWithoutProperties\n  var newObject = {};\n\n  for (var key in originalObject) {\n    // @ts-expect-error String is not assignable to Key\n    if (ks.indexOf(key) >= 0) {\n      continue;\n    }\n\n    if (!Object.prototype.hasOwnProperty.call(originalObject, key)) {\n      continue;\n    }\n\n    newObject[key] = originalObject[key];\n  }\n\n  return newObject;\n}\nexport function getPoint(datum) {\n  var exists = function (val) {\n    return val !== undefined;\n  };\n\n  var _x = datum._x,\n      _x1 = datum._x1,\n      _x0 = datum._x0,\n      _voronoiX = datum._voronoiX,\n      _y = datum._y,\n      _y1 = datum._y1,\n      _y0 = datum._y0,\n      _voronoiY = datum._voronoiY;\n  var defaultX = exists(_x1) ? _x1 : _x;\n  var defaultY = exists(_y1) ? _y1 : _y;\n  var point = {\n    x: exists(_voronoiX) ? _voronoiX : defaultX,\n    x0: exists(_x0) ? _x0 : _x,\n    y: exists(_voronoiY) ? _voronoiY : defaultY,\n    y0: exists(_y0) ? _y0 : _y\n  };\n  return _defaults({}, point, datum);\n}\nexport function scalePoint(props, datum) {\n  var scale = props.scale,\n      polar = props.polar,\n      horizontal = props.horizontal;\n  var d = getPoint(datum);\n  var origin = props.origin || {\n    x: 0,\n    y: 0\n  };\n  var x = horizontal ? scale.y(d.y) : scale.x(d.x);\n  var x0 = horizontal ? scale.y(d.y0) : scale.x(d.x0);\n  var y = horizontal ? scale.x(d.x) : scale.y(d.y);\n  var y0 = horizontal ? scale.x(d.x0) : scale.y(d.y0);\n  return {\n    x: polar ? y * Math.cos(x) + origin.x : x,\n    x0: polar ? y0 * Math.cos(x0) + origin.x : x0,\n    y: polar ? -y * Math.sin(x) + origin.y : y,\n    y0: polar ? -y0 * Math.sin(x0) + origin.x : y0\n  };\n}\nexport function getPadding(props) {\n  var name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : \"padding\";\n  var padding = props[name];\n  var paddingVal = typeof padding === \"number\" ? padding : 0;\n  var paddingObj = typeof padding === \"object\" ? padding : {};\n  return {\n    top: paddingObj.top || paddingVal,\n    bottom: paddingObj.bottom || paddingVal,\n    left: paddingObj.left || paddingVal,\n    right: paddingObj.right || paddingVal\n  };\n}\nexport function isTooltip(component) {\n  var labelRole = component && component.type && component.type.role;\n  return labelRole === \"tooltip\";\n}\nexport function getDefaultStyles(props, role) {\n  var _props$theme = props.theme,\n      theme = _props$theme === void 0 ? {} : _props$theme,\n      labelComponent = props.labelComponent;\n  var defaultStyles = theme[role] && theme[role].style || {};\n\n  if (!isTooltip(labelComponent)) {\n    return defaultStyles;\n  }\n\n  var tooltipStyle = theme.tooltip && theme.tooltip.style || {};\n\n  var labelStyle = _defaults({}, tooltipStyle, defaultStyles.labels);\n\n  return _defaults({}, {\n    labels: labelStyle\n  }, defaultStyles);\n}\nexport function getStyles(style, defaultStyles) {\n  var width = \"100%\";\n  var height = \"100%\";\n\n  if (!style) {\n    return _defaults({\n      parent: {\n        height: height,\n        width: width\n      }\n    }, defaultStyles);\n  }\n\n  var data = style.data,\n      labels = style.labels,\n      parent = style.parent;\n  var defaultParent = defaultStyles && defaultStyles.parent || {};\n  var defaultLabels = defaultStyles && defaultStyles.labels || {};\n  var defaultData = defaultStyles && defaultStyles.data || {};\n  return {\n    parent: _defaults({}, parent, defaultParent, {\n      width: width,\n      height: height\n    }),\n    labels: _defaults({}, labels, defaultLabels),\n    data: _defaults({}, data, defaultData)\n  };\n}\nexport function evaluateProp(prop, props) {\n  return _isFunction(prop) ? prop(props) : prop;\n}\nexport function evaluateStyle(style, props) {\n  if (props.disableInlineStyles) {\n    return {};\n  }\n\n  if (!style || !_keys(style).some(function (value) {\n    return _isFunction(style[value]);\n  })) {\n    return style;\n  }\n\n  return _keys(style).reduce(function (prev, curr) {\n    prev[curr] = evaluateProp(style[curr], props);\n    return prev;\n  }, {});\n}\nexport function degreesToRadians(degrees) {\n  return typeof degrees === \"number\" ? degrees * (Math.PI / 180) : degrees;\n}\nexport function radiansToDegrees(radians) {\n  return typeof radians === \"number\" ? radians / (Math.PI / 180) : radians;\n}\nexport function getRadius(props) {\n  var _getPadding = getPadding(props),\n      left = _getPadding.left,\n      right = _getPadding.right,\n      top = _getPadding.top,\n      bottom = _getPadding.bottom;\n\n  var width = props.width,\n      height = props.height;\n  return Math.min(width - left - right, height - top - bottom) / 2;\n}\nexport function getPolarOrigin(props) {\n  var width = props.width,\n      height = props.height;\n\n  var _getPadding2 = getPadding(props),\n      top = _getPadding2.top,\n      bottom = _getPadding2.bottom,\n      left = _getPadding2.left,\n      right = _getPadding2.right;\n\n  var radius = Math.min(width - left - right, height - top - bottom) / 2;\n  var offsetWidth = width / 2 + left - right;\n  var offsetHeight = height / 2 + top - bottom;\n  return {\n    x: offsetWidth + radius > width ? radius + left - right : offsetWidth,\n    y: offsetHeight + radius > height ? radius + top - bottom : offsetHeight\n  };\n}\nexport function getRange(props, axis) {\n  if (props.range && props.range[axis]) {\n    return props.range[axis];\n  } else if (props.range && Array.isArray(props.range)) {\n    return props.range;\n  }\n\n  return props.polar ? getPolarRange(props, axis) : getCartesianRange(props, axis);\n}\nexport function createAccessor(key) {\n  // creates a data accessor function\n  // given a property key, path, array index, or null for identity.\n  if (_isFunction(key)) {\n    return key;\n  } else if (key === null || key === undefined) {\n    // null/undefined means \"return the data item itself\"\n    return function (x) {\n      return x;\n    };\n  } // otherwise, assume it is an array index, property key or path (_.property handles all three)\n\n\n  return _property(key);\n}\nexport function modifyProps(props, fallbackProps, role) {\n  var theme = props.theme && props.theme[role] ? props.theme[role] : {};\n  var themeProps = omit(theme, [\"style\"]);\n  var horizontal = isHorizontal(props);\n  var defaultObject = horizontal === undefined ? {} : {\n    horizontal: horizontal\n  };\n  return _defaults(defaultObject, props, themeProps, fallbackProps);\n}\n/**\n * Returns the given axis or the opposite axis when horizontal\n * @param {string} axis: the given axis, either \"x\" pr \"y\"\n * @param {Boolean} horizontal: true when the chart is flipped to the horizontal orientation\n * @returns {String} the dimension appropriate for the axis given its props \"x\" or \"y\"\n */\n\nexport function getCurrentAxis(axis, horizontal) {\n  var otherAxis = axis === \"x\" ? \"y\" : \"x\";\n  return horizontal ? otherAxis : axis;\n}\n/**\n * @param {Array} children: an array of child components\n * @param {Function} iteratee: a function with arguments \"child\", \"childName\", and \"parent\"\n * @param {Object} parentProps: props from the parent that are applied to children\n * @param {any}  initialMemo: The object in which the iteration results are combined.\n * @param {Function} combine: Combines the result of the iteratee with the current memo\n *   to the memo for the next iteration step\n * @returns {Array} returns an array of results from calling the iteratee on all nested children\n */\n\n/* eslint-disable max-params */\n\nexport function reduceChildren(children, iteratee) {\n  var parentProps = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n  var initialMemo = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [];\n  var combine = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : function (memo, item) {\n    return (// @ts-expect-error These defaults are hard to type\n      memo.concat(item)\n    );\n  };\n  var sharedProps = [\"data\", \"domain\", \"categories\", \"polar\", \"startAngle\", \"endAngle\", \"minDomain\", \"maxDomain\", \"horizontal\"];\n\n  var traverseChildren = function (childArray, names, parent) {\n    return childArray.reduce(function (memo, child, index) {\n      var childRole = child.type && child.type.role;\n      var childName = child.props.name || \"\".concat(childRole, \"-\").concat(names[index]);\n\n      if (child.props && child.props.children) {\n        var childProps = _assign({}, child.props, _pick(parentProps, sharedProps));\n\n        var nestedChildren = child.type && child.type.role === \"stack\" && _isFunction(child.type.getChildren) ? child.type.getChildren(childProps) : React.Children.toArray(child.props.children).map(function (c) {\n          var nestedChildProps = _assign({}, c.props, _pick(childProps, sharedProps));\n\n          return /*#__PURE__*/React.cloneElement(c, nestedChildProps);\n        });\n\n        var _childNames = nestedChildren.map(function (c, i) {\n          return \"\".concat(childName, \"-\").concat(i);\n        });\n\n        var nestedResults = traverseChildren(nestedChildren, _childNames, child);\n        memo = combine(memo, nestedResults);\n      } else {\n        var result = iteratee(child, childName, parent);\n\n        if (result) {\n          memo = combine(memo, result);\n        }\n      }\n\n      return memo;\n    }, initialMemo);\n  };\n\n  var childNames = children.map(function (c, i) {\n    return i;\n  });\n  return traverseChildren(children, childNames);\n}\n/**\n * @param {Object} props: the props object\n * @returns {Boolean} returns true if the props object contains `horizontal: true` of if any\n * children or nested children are horizontal\n */\n\nexport function isHorizontal(props) {\n  if (props.horizontal !== undefined || !props.children) {\n    return props.horizontal;\n  }\n\n  var traverseChildren = function (childArray) {\n    return childArray.reduce(function (memo, child) {\n      var childProps = child.props || {};\n\n      if (memo || childProps.horizontal || !childProps.children) {\n        memo = memo || childProps.horizontal;\n        return memo;\n      }\n\n      return traverseChildren(React.Children.toArray(childProps.children));\n    }, false);\n  };\n\n  return traverseChildren(React.Children.toArray(props.children));\n}", "function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction isNonEmptyArray(collection) {\n  return Array.isArray(collection) && collection.length > 0;\n}\n\nexport function containsStrings(collection) {\n  return Array.isArray(collection) && collection.some(function (value) {\n    return typeof value === \"string\";\n  });\n}\nexport function containsDates(collection) {\n  return Array.isArray(collection) && collection.some(function (value) {\n    return value instanceof Date;\n  });\n}\nexport function containsNumbers(collection) {\n  return Array.isArray(collection) && collection.some(function (value) {\n    return typeof value === \"number\";\n  });\n}\nexport function containsOnlyStrings(collection) {\n  return isNonEmptyArray(collection) && collection.every(function (value) {\n    return typeof value === \"string\";\n  });\n}\nexport function isArrayOfArrays(collection) {\n  return isNonEmptyArray(collection) && collection.every(Array.isArray);\n}\nexport function removeUndefined(arr) {\n  return arr.filter(function (el) {\n    return el !== undefined;\n  });\n}\nexport function getMaxValue(arr) {\n  for (var _len = arguments.length, values = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n    values[_key - 1] = arguments[_key];\n  }\n\n  var array = arr.concat(values);\n  return containsDates(array) ? new Date(Math.max.apply(Math, _toConsumableArray(array))) // Dates will be coerced to numbers\n  : Math.max.apply(Math, _toConsumableArray(array));\n}\nexport function getMinValue(arr) {\n  for (var _len2 = arguments.length, values = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n    values[_key2 - 1] = arguments[_key2];\n  }\n\n  var array = arr.concat(values);\n  return containsDates(array) ? new Date(Math.min.apply(Math, _toConsumableArray(array))) // Dates will be coerced to numbers\n  : Math.min.apply(Math, _toConsumableArray(array));\n}", "\n// `victory-vendor/d3-scale` (ESM)\n// See upstream license: https://github.com/d3/d3-scale/blob/main/LICENSE\n//\n// Our ESM package uses the underlying installed dependencies of `node_modules/d3-scale`\nexport * from \"d3-scale\";\n", "export default function ascending(a, b) {\n  return a == null || b == null ? NaN : a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n", "export default function descending(a, b) {\n  return a == null || b == null ? NaN\n    : b < a ? -1\n    : b > a ? 1\n    : b >= a ? 0\n    : NaN;\n}\n", "import ascending from \"./ascending.js\";\nimport descending from \"./descending.js\";\n\nexport default function bisector(f) {\n  let compare1, compare2, delta;\n\n  // If an accessor is specified, promote it to a comparator. In this case we\n  // can test whether the search value is (self-) comparable. We can\u2019t do this\n  // for a comparator (except for specific, known comparators) because we can\u2019t\n  // tell if the comparator is symmetric, and an asymmetric comparator can\u2019t be\n  // used to test whether a single value is comparable.\n  if (f.length !== 2) {\n    compare1 = ascending;\n    compare2 = (d, x) => ascending(f(d), x);\n    delta = (d, x) => f(d) - x;\n  } else {\n    compare1 = f === ascending || f === descending ? f : zero;\n    compare2 = f;\n    delta = f;\n  }\n\n  function left(a, x, lo = 0, hi = a.length) {\n    if (lo < hi) {\n      if (compare1(x, x) !== 0) return hi;\n      do {\n        const mid = (lo + hi) >>> 1;\n        if (compare2(a[mid], x) < 0) lo = mid + 1;\n        else hi = mid;\n      } while (lo < hi);\n    }\n    return lo;\n  }\n\n  function right(a, x, lo = 0, hi = a.length) {\n    if (lo < hi) {\n      if (compare1(x, x) !== 0) return hi;\n      do {\n        const mid = (lo + hi) >>> 1;\n        if (compare2(a[mid], x) <= 0) lo = mid + 1;\n        else hi = mid;\n      } while (lo < hi);\n    }\n    return lo;\n  }\n\n  function center(a, x, lo = 0, hi = a.length) {\n    const i = left(a, x, lo, hi - 1);\n    return i > lo && delta(a[i - 1], x) > -delta(a[i], x) ? i - 1 : i;\n  }\n\n  return {left, center, right};\n}\n\nfunction zero() {\n  return 0;\n}\n", "export default function number(x) {\n  return x === null ? NaN : +x;\n}\n\nexport function* numbers(values, valueof) {\n  if (valueof === undefined) {\n    for (let value of values) {\n      if (value != null && (value = +value) >= value) {\n        yield value;\n      }\n    }\n  } else {\n    let index = -1;\n    for (let value of values) {\n      if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n        yield value;\n      }\n    }\n  }\n}\n", "import ascending from \"./ascending.js\";\nimport bisector from \"./bisector.js\";\nimport number from \"./number.js\";\n\nconst ascendingBisect = bisector(ascending);\nexport const bisectRight = ascendingBisect.right;\nexport const bisectLeft = ascendingBisect.left;\nexport const bisectCenter = bisector(number).center;\nexport default bisectRight;\n", "export class InternMap extends Map {\n  constructor(entries, key = keyof) {\n    super();\n    Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n    if (entries != null) for (const [key, value] of entries) this.set(key, value);\n  }\n  get(key) {\n    return super.get(intern_get(this, key));\n  }\n  has(key) {\n    return super.has(intern_get(this, key));\n  }\n  set(key, value) {\n    return super.set(intern_set(this, key), value);\n  }\n  delete(key) {\n    return super.delete(intern_delete(this, key));\n  }\n}\n\nexport class InternSet extends Set {\n  constructor(values, key = keyof) {\n    super();\n    Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n    if (values != null) for (const value of values) this.add(value);\n  }\n  has(value) {\n    return super.has(intern_get(this, value));\n  }\n  add(value) {\n    return super.add(intern_set(this, value));\n  }\n  delete(value) {\n    return super.delete(intern_delete(this, value));\n  }\n}\n\nfunction intern_get({_intern, _key}, value) {\n  const key = _key(value);\n  return _intern.has(key) ? _intern.get(key) : value;\n}\n\nfunction intern_set({_intern, _key}, value) {\n  const key = _key(value);\n  if (_intern.has(key)) return _intern.get(key);\n  _intern.set(key, value);\n  return value;\n}\n\nfunction intern_delete({_intern, _key}, value) {\n  const key = _key(value);\n  if (_intern.has(key)) {\n    value = _intern.get(key);\n    _intern.delete(key);\n  }\n  return value;\n}\n\nfunction keyof(value) {\n  return value !== null && typeof value === \"object\" ? value.valueOf() : value;\n}\n", "import ascending from \"./ascending.js\";\nimport permute from \"./permute.js\";\n\nexport default function sort(values, ...F) {\n  if (typeof values[Symbol.iterator] !== \"function\") throw new TypeError(\"values is not iterable\");\n  values = Array.from(values);\n  let [f] = F;\n  if ((f && f.length !== 2) || F.length > 1) {\n    const index = Uint32Array.from(values, (d, i) => i);\n    if (F.length > 1) {\n      F = F.map(f => values.map(f));\n      index.sort((i, j) => {\n        for (const f of F) {\n          const c = ascendingDefined(f[i], f[j]);\n          if (c) return c;\n        }\n      });\n    } else {\n      f = values.map(f);\n      index.sort((i, j) => ascendingDefined(f[i], f[j]));\n    }\n    return permute(values, index);\n  }\n  return values.sort(compareDefined(f));\n}\n\nexport function compareDefined(compare = ascending) {\n  if (compare === ascending) return ascendingDefined;\n  if (typeof compare !== \"function\") throw new TypeError(\"compare is not a function\");\n  return (a, b) => {\n    const x = compare(a, b);\n    if (x || x === 0) return x;\n    return (compare(b, b) === 0) - (compare(a, a) === 0);\n  };\n}\n\nexport function ascendingDefined(a, b) {\n  return (a == null || !(a >= a)) - (b == null || !(b >= b)) || (a < b ? -1 : a > b ? 1 : 0);\n}\n", "const e10 = Math.sqrt(50),\n    e5 = Math.sqrt(10),\n    e2 = Math.sqrt(2);\n\nfunction tickSpec(start, stop, count) {\n  const step = (stop - start) / Math.max(0, count),\n      power = Math.floor(Math.log10(step)),\n      error = step / Math.pow(10, power),\n      factor = error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1;\n  let i1, i2, inc;\n  if (power < 0) {\n    inc = Math.pow(10, -power) / factor;\n    i1 = Math.round(start * inc);\n    i2 = Math.round(stop * inc);\n    if (i1 / inc < start) ++i1;\n    if (i2 / inc > stop) --i2;\n    inc = -inc;\n  } else {\n    inc = Math.pow(10, power) * factor;\n    i1 = Math.round(start / inc);\n    i2 = Math.round(stop / inc);\n    if (i1 * inc < start) ++i1;\n    if (i2 * inc > stop) --i2;\n  }\n  if (i2 < i1 && 0.5 <= count && count < 2) return tickSpec(start, stop, count * 2);\n  return [i1, i2, inc];\n}\n\nexport default function ticks(start, stop, count) {\n  stop = +stop, start = +start, count = +count;\n  if (!(count > 0)) return [];\n  if (start === stop) return [start];\n  const reverse = stop < start, [i1, i2, inc] = reverse ? tickSpec(stop, start, count) : tickSpec(start, stop, count);\n  if (!(i2 >= i1)) return [];\n  const n = i2 - i1 + 1, ticks = new Array(n);\n  if (reverse) {\n    if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) / -inc;\n    else for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) * inc;\n  } else {\n    if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) / -inc;\n    else for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) * inc;\n  }\n  return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n  stop = +stop, start = +start, count = +count;\n  return tickSpec(start, stop, count)[2];\n}\n\nexport function tickStep(start, stop, count) {\n  stop = +stop, start = +start, count = +count;\n  const reverse = stop < start, inc = reverse ? tickIncrement(stop, start, count) : tickIncrement(start, stop, count);\n  return (reverse ? -1 : 1) * (inc < 0 ? 1 / -inc : inc);\n}\n", "export default function max(values, valueof) {\n  let max;\n  if (valueof === undefined) {\n    for (const value of values) {\n      if (value != null\n          && (max < value || (max === undefined && value >= value))) {\n        max = value;\n      }\n    }\n  } else {\n    let index = -1;\n    for (let value of values) {\n      if ((value = valueof(value, ++index, values)) != null\n          && (max < value || (max === undefined && value >= value))) {\n        max = value;\n      }\n    }\n  }\n  return max;\n}\n", "export default function min(values, valueof) {\n  let min;\n  if (valueof === undefined) {\n    for (const value of values) {\n      if (value != null\n          && (min > value || (min === undefined && value >= value))) {\n        min = value;\n      }\n    }\n  } else {\n    let index = -1;\n    for (let value of values) {\n      if ((value = valueof(value, ++index, values)) != null\n          && (min > value || (min === undefined && value >= value))) {\n        min = value;\n      }\n    }\n  }\n  return min;\n}\n", "import {ascendingDefined, compareDefined} from \"./sort.js\";\n\n// Based on https://github.com/mourner/quickselect\n// ISC license, Copyright 2018 Vladimir Agafonkin.\nexport default function quickselect(array, k, left = 0, right = Infinity, compare) {\n  k = Math.floor(k);\n  left = Math.floor(Math.max(0, left));\n  right = Math.floor(Math.min(array.length - 1, right));\n\n  if (!(left <= k && k <= right)) return array;\n\n  compare = compare === undefined ? ascendingDefined : compareDefined(compare);\n\n  while (right > left) {\n    if (right - left > 600) {\n      const n = right - left + 1;\n      const m = k - left + 1;\n      const z = Math.log(n);\n      const s = 0.5 * Math.exp(2 * z / 3);\n      const sd = 0.5 * Math.sqrt(z * s * (n - s) / n) * (m - n / 2 < 0 ? -1 : 1);\n      const newLeft = Math.max(left, Math.floor(k - m * s / n + sd));\n      const newRight = Math.min(right, Math.floor(k + (n - m) * s / n + sd));\n      quickselect(array, k, newLeft, newRight, compare);\n    }\n\n    const t = array[k];\n    let i = left;\n    let j = right;\n\n    swap(array, left, k);\n    if (compare(array[right], t) > 0) swap(array, left, right);\n\n    while (i < j) {\n      swap(array, i, j), ++i, --j;\n      while (compare(array[i], t) < 0) ++i;\n      while (compare(array[j], t) > 0) --j;\n    }\n\n    if (compare(array[left], t) === 0) swap(array, left, j);\n    else ++j, swap(array, j, right);\n\n    if (j <= k) left = j + 1;\n    if (k <= j) right = j - 1;\n  }\n\n  return array;\n}\n\nfunction swap(array, i, j) {\n  const t = array[i];\n  array[i] = array[j];\n  array[j] = t;\n}\n", "import max from \"./max.js\";\nimport maxIndex from \"./maxIndex.js\";\nimport min from \"./min.js\";\nimport minIndex from \"./minIndex.js\";\nimport quickselect from \"./quickselect.js\";\nimport number, {numbers} from \"./number.js\";\nimport {ascendingDefined} from \"./sort.js\";\nimport greatest from \"./greatest.js\";\n\nexport default function quantile(values, p, valueof) {\n  values = Float64Array.from(numbers(values, valueof));\n  if (!(n = values.length) || isNaN(p = +p)) return;\n  if (p <= 0 || n < 2) return min(values);\n  if (p >= 1) return max(values);\n  var n,\n      i = (n - 1) * p,\n      i0 = Math.floor(i),\n      value0 = max(quickselect(values, i0).subarray(0, i0 + 1)),\n      value1 = min(values.subarray(i0 + 1));\n  return value0 + (value1 - value0) * (i - i0);\n}\n\nexport function quantileSorted(values, p, valueof = number) {\n  if (!(n = values.length) || isNaN(p = +p)) return;\n  if (p <= 0 || n < 2) return +valueof(values[0], 0, values);\n  if (p >= 1) return +valueof(values[n - 1], n - 1, values);\n  var n,\n      i = (n - 1) * p,\n      i0 = Math.floor(i),\n      value0 = +valueof(values[i0], i0, values),\n      value1 = +valueof(values[i0 + 1], i0 + 1, values);\n  return value0 + (value1 - value0) * (i - i0);\n}\n\nexport function quantileIndex(values, p, valueof = number) {\n  if (isNaN(p = +p)) return;\n  numbers = Float64Array.from(values, (_, i) => number(valueof(values[i], i, values)));\n  if (p <= 0) return minIndex(numbers);\n  if (p >= 1) return maxIndex(numbers);\n  var numbers,\n      index = Uint32Array.from(values, (_, i) => i),\n      j = numbers.length - 1,\n      i = Math.floor(j * p);\n  quickselect(index, i, 0, j, (i, j) => ascendingDefined(numbers[i], numbers[j]));\n  i = greatest(index.subarray(0, i + 1), (i) => numbers[i]);\n  return i >= 0 ? i : -1;\n}\n", "export default function range(start, stop, step) {\n  start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n  var i = -1,\n      n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n      range = new Array(n);\n\n  while (++i < n) {\n    range[i] = start + i * step;\n  }\n\n  return range;\n}\n", "export function initRange(domain, range) {\n  switch (arguments.length) {\n    case 0: break;\n    case 1: this.range(domain); break;\n    default: this.range(range).domain(domain); break;\n  }\n  return this;\n}\n\nexport function initInterpolator(domain, interpolator) {\n  switch (arguments.length) {\n    case 0: break;\n    case 1: {\n      if (typeof domain === \"function\") this.interpolator(domain);\n      else this.range(domain);\n      break;\n    }\n    default: {\n      this.domain(domain);\n      if (typeof interpolator === \"function\") this.interpolator(interpolator);\n      else this.range(interpolator);\n      break;\n    }\n  }\n  return this;\n}\n", "import {InternMap} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport const implicit = Symbol(\"implicit\");\n\nexport default function ordinal() {\n  var index = new InternMap(),\n      domain = [],\n      range = [],\n      unknown = implicit;\n\n  function scale(d) {\n    let i = index.get(d);\n    if (i === undefined) {\n      if (unknown !== implicit) return unknown;\n      index.set(d, i = domain.push(d) - 1);\n    }\n    return range[i % range.length];\n  }\n\n  scale.domain = function(_) {\n    if (!arguments.length) return domain.slice();\n    domain = [], index = new InternMap();\n    for (const value of _) {\n      if (index.has(value)) continue;\n      index.set(value, domain.push(value) - 1);\n    }\n    return scale;\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (range = Array.from(_), scale) : range.slice();\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  scale.copy = function() {\n    return ordinal(domain, range).unknown(unknown);\n  };\n\n  initRange.apply(scale, arguments);\n\n  return scale;\n}\n", "import {range as sequence} from \"d3-array\";\nimport {initRange} from \"./init.js\";\nimport ordinal from \"./ordinal.js\";\n\nexport default function band() {\n  var scale = ordinal().unknown(undefined),\n      domain = scale.domain,\n      ordinalRange = scale.range,\n      r0 = 0,\n      r1 = 1,\n      step,\n      bandwidth,\n      round = false,\n      paddingInner = 0,\n      paddingOuter = 0,\n      align = 0.5;\n\n  delete scale.unknown;\n\n  function rescale() {\n    var n = domain().length,\n        reverse = r1 < r0,\n        start = reverse ? r1 : r0,\n        stop = reverse ? r0 : r1;\n    step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2);\n    if (round) step = Math.floor(step);\n    start += (stop - start - step * (n - paddingInner)) * align;\n    bandwidth = step * (1 - paddingInner);\n    if (round) start = Math.round(start), bandwidth = Math.round(bandwidth);\n    var values = sequence(n).map(function(i) { return start + step * i; });\n    return ordinalRange(reverse ? values.reverse() : values);\n  }\n\n  scale.domain = function(_) {\n    return arguments.length ? (domain(_), rescale()) : domain();\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? ([r0, r1] = _, r0 = +r0, r1 = +r1, rescale()) : [r0, r1];\n  };\n\n  scale.rangeRound = function(_) {\n    return [r0, r1] = _, r0 = +r0, r1 = +r1, round = true, rescale();\n  };\n\n  scale.bandwidth = function() {\n    return bandwidth;\n  };\n\n  scale.step = function() {\n    return step;\n  };\n\n  scale.round = function(_) {\n    return arguments.length ? (round = !!_, rescale()) : round;\n  };\n\n  scale.padding = function(_) {\n    return arguments.length ? (paddingInner = Math.min(1, paddingOuter = +_), rescale()) : paddingInner;\n  };\n\n  scale.paddingInner = function(_) {\n    return arguments.length ? (paddingInner = Math.min(1, _), rescale()) : paddingInner;\n  };\n\n  scale.paddingOuter = function(_) {\n    return arguments.length ? (paddingOuter = +_, rescale()) : paddingOuter;\n  };\n\n  scale.align = function(_) {\n    return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align;\n  };\n\n  scale.copy = function() {\n    return band(domain(), [r0, r1])\n        .round(round)\n        .paddingInner(paddingInner)\n        .paddingOuter(paddingOuter)\n        .align(align);\n  };\n\n  return initRange.apply(rescale(), arguments);\n}\n\nfunction pointish(scale) {\n  var copy = scale.copy;\n\n  scale.padding = scale.paddingOuter;\n  delete scale.paddingInner;\n  delete scale.paddingOuter;\n\n  scale.copy = function() {\n    return pointish(copy());\n  };\n\n  return scale;\n}\n\nexport function point() {\n  return pointish(band.apply(null, arguments).paddingInner(1));\n}\n", "export default function constants(x) {\n  return function() {\n    return x;\n  };\n}\n", "export default function number(x) {\n  return +x;\n}\n", "import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport constant from \"./constant.js\";\nimport number from \"./number.js\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n  return x;\n}\n\nfunction normalize(a, b) {\n  return (b -= (a = +a))\n      ? function(x) { return (x - a) / b; }\n      : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(a, b) {\n  var t;\n  if (a > b) t = a, a = b, b = t;\n  return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n  var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n  if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n  else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n  return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n  var j = Math.min(domain.length, range.length) - 1,\n      d = new Array(j),\n      r = new Array(j),\n      i = -1;\n\n  // Reverse descending domains.\n  if (domain[j] < domain[0]) {\n    domain = domain.slice().reverse();\n    range = range.slice().reverse();\n  }\n\n  while (++i < j) {\n    d[i] = normalize(domain[i], domain[i + 1]);\n    r[i] = interpolate(range[i], range[i + 1]);\n  }\n\n  return function(x) {\n    var i = bisect(domain, x, 1, j) - 1;\n    return r[i](d[i](x));\n  };\n}\n\nexport function copy(source, target) {\n  return target\n      .domain(source.domain())\n      .range(source.range())\n      .interpolate(source.interpolate())\n      .clamp(source.clamp())\n      .unknown(source.unknown());\n}\n\nexport function transformer() {\n  var domain = unit,\n      range = unit,\n      interpolate = interpolateValue,\n      transform,\n      untransform,\n      unknown,\n      clamp = identity,\n      piecewise,\n      output,\n      input;\n\n  function rescale() {\n    var n = Math.min(domain.length, range.length);\n    if (clamp !== identity) clamp = clamper(domain[0], domain[n - 1]);\n    piecewise = n > 2 ? polymap : bimap;\n    output = input = null;\n    return scale;\n  }\n\n  function scale(x) {\n    return x == null || isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n  }\n\n  scale.invert = function(y) {\n    return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n  };\n\n  scale.domain = function(_) {\n    return arguments.length ? (domain = Array.from(_, number), rescale()) : domain.slice();\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n  };\n\n  scale.rangeRound = function(_) {\n    return range = Array.from(_), interpolate = interpolateRound, rescale();\n  };\n\n  scale.clamp = function(_) {\n    return arguments.length ? (clamp = _ ? true : identity, rescale()) : clamp !== identity;\n  };\n\n  scale.interpolate = function(_) {\n    return arguments.length ? (interpolate = _, rescale()) : interpolate;\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  return function(t, u) {\n    transform = t, untransform = u;\n    return rescale();\n  };\n}\n\nexport default function continuous() {\n  return transformer()(identity, identity);\n}\n", "export default function(x) {\n  return Math.abs(x = Math.round(x)) >= 1e21\n      ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n      : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nexport function formatDecimalParts(x, p) {\n  if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, \u00B1Infinity\n  var i, coefficient = x.slice(0, i);\n\n  // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n  // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n  return [\n    coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n    +x.slice(i + 1)\n  ];\n}\n", "import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x) {\n  return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}\n", "export default function(grouping, thousands) {\n  return function(value, width) {\n    var i = value.length,\n        t = [],\n        j = 0,\n        g = grouping[0],\n        length = 0;\n\n    while (i > 0 && g > 0) {\n      if (length + g + 1 > width) g = Math.max(1, width - length);\n      t.push(value.substring(i -= g, i + g));\n      if ((length += g + 1) > width) break;\n      g = grouping[j = (j + 1) % grouping.length];\n    }\n\n    return t.reverse().join(thousands);\n  };\n}\n", "export default function(numerals) {\n  return function(value) {\n    return value.replace(/[0-9]/g, function(i) {\n      return numerals[+i];\n    });\n  };\n}\n", "// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n  if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n  var match;\n  return new FormatSpecifier({\n    fill: match[1],\n    align: match[2],\n    sign: match[3],\n    symbol: match[4],\n    zero: match[5],\n    width: match[6],\n    comma: match[7],\n    precision: match[8] && match[8].slice(1),\n    trim: match[9],\n    type: match[10]\n  });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n  this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n  this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n  this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n  this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n  this.zero = !!specifier.zero;\n  this.width = specifier.width === undefined ? undefined : +specifier.width;\n  this.comma = !!specifier.comma;\n  this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n  this.trim = !!specifier.trim;\n  this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n  return this.fill\n      + this.align\n      + this.sign\n      + this.symbol\n      + (this.zero ? \"0\" : \"\")\n      + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n      + (this.comma ? \",\" : \"\")\n      + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n      + (this.trim ? \"~\" : \"\")\n      + this.type;\n};\n", "// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n  out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n    switch (s[i]) {\n      case \".\": i0 = i1 = i; break;\n      case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n      default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n    }\n  }\n  return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n", "import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n  var d = formatDecimalParts(x, p);\n  if (!d) return x + \"\";\n  var coefficient = d[0],\n      exponent = d[1],\n      i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n      n = coefficient.length;\n  return i === n ? coefficient\n      : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n      : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n      : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n", "import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n  var d = formatDecimalParts(x, p);\n  if (!d) return x + \"\";\n  var coefficient = d[0],\n      exponent = d[1];\n  return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n      : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n      : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n", "import formatDecimal from \"./formatDecimal.js\";\nimport formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n  \"%\": (x, p) => (x * 100).toFixed(p),\n  \"b\": (x) => Math.round(x).toString(2),\n  \"c\": (x) => x + \"\",\n  \"d\": formatDecimal,\n  \"e\": (x, p) => x.toExponential(p),\n  \"f\": (x, p) => x.toFixed(p),\n  \"g\": (x, p) => x.toPrecision(p),\n  \"o\": (x) => Math.round(x).toString(8),\n  \"p\": (x, p) => formatRounded(x * 100, p),\n  \"r\": formatRounded,\n  \"s\": formatPrefixAuto,\n  \"X\": (x) => Math.round(x).toString(16).toUpperCase(),\n  \"x\": (x) => Math.round(x).toString(16)\n};\n", "export default function(x) {\n  return x;\n}\n", "import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n    prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"\u00B5\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n  var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n      currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n      currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n      decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n      numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n      percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n      minus = locale.minus === undefined ? \"\u2212\" : locale.minus + \"\",\n      nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n  function newFormat(specifier) {\n    specifier = formatSpecifier(specifier);\n\n    var fill = specifier.fill,\n        align = specifier.align,\n        sign = specifier.sign,\n        symbol = specifier.symbol,\n        zero = specifier.zero,\n        width = specifier.width,\n        comma = specifier.comma,\n        precision = specifier.precision,\n        trim = specifier.trim,\n        type = specifier.type;\n\n    // The \"n\" type is an alias for \",g\".\n    if (type === \"n\") comma = true, type = \"g\";\n\n    // The \"\" type, and any invalid type, is an alias for \".12~g\".\n    else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n    // If zero fill is specified, padding goes after sign and before digits.\n    if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n    // Compute the prefix and suffix.\n    // For SI-prefix, the suffix is lazily computed.\n    var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n        suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n    // What format function should we use?\n    // Is this an integer type?\n    // Can this type generate exponential notation?\n    var formatType = formatTypes[type],\n        maybeSuffix = /[defgprs%]/.test(type);\n\n    // Set the default precision if not specified,\n    // or clamp the specified precision to the supported range.\n    // For significant precision, it must be in [1, 21].\n    // For fixed precision, it must be in [0, 20].\n    precision = precision === undefined ? 6\n        : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n        : Math.max(0, Math.min(20, precision));\n\n    function format(value) {\n      var valuePrefix = prefix,\n          valueSuffix = suffix,\n          i, n, c;\n\n      if (type === \"c\") {\n        valueSuffix = formatType(value) + valueSuffix;\n        value = \"\";\n      } else {\n        value = +value;\n\n        // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n        var valueNegative = value < 0 || 1 / value < 0;\n\n        // Perform the initial formatting.\n        value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n        // Trim insignificant zeros.\n        if (trim) value = formatTrim(value);\n\n        // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n        if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n        // Compute the prefix and suffix.\n        valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n        valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n        // Break the formatted value into the integer \u201Cvalue\u201D part that can be\n        // grouped, and fractional or exponential \u201Csuffix\u201D part that is not.\n        if (maybeSuffix) {\n          i = -1, n = value.length;\n          while (++i < n) {\n            if (c = value.charCodeAt(i), 48 > c || c > 57) {\n              valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n              value = value.slice(0, i);\n              break;\n            }\n          }\n        }\n      }\n\n      // If the fill character is not \"0\", grouping is applied before padding.\n      if (comma && !zero) value = group(value, Infinity);\n\n      // Compute the padding.\n      var length = valuePrefix.length + value.length + valueSuffix.length,\n          padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n      // If the fill character is \"0\", grouping is applied after padding.\n      if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n      // Reconstruct the final output based on the desired alignment.\n      switch (align) {\n        case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n        case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n        case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n        default: value = padding + valuePrefix + value + valueSuffix; break;\n      }\n\n      return numerals(value);\n    }\n\n    format.toString = function() {\n      return specifier + \"\";\n    };\n\n    return format;\n  }\n\n  function formatPrefix(specifier, value) {\n    var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n        e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n        k = Math.pow(10, -e),\n        prefix = prefixes[8 + e / 3];\n    return function(value) {\n      return f(k * value) + prefix;\n    };\n  }\n\n  return {\n    format: newFormat,\n    formatPrefix: formatPrefix\n  };\n}\n", "import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n  thousands: \",\",\n  grouping: [3],\n  currency: [\"$\", \"\"]\n});\n\nexport default function defaultLocale(definition) {\n  locale = formatLocale(definition);\n  format = locale.format;\n  formatPrefix = locale.formatPrefix;\n  return locale;\n}\n", "import exponent from \"./exponent.js\";\n\nexport default function(step) {\n  return Math.max(0, -exponent(Math.abs(step)));\n}\n", "import exponent from \"./exponent.js\";\n\nexport default function(step, value) {\n  return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n", "import exponent from \"./exponent.js\";\n\nexport default function(step, max) {\n  step = Math.abs(step), max = Math.abs(max) - step;\n  return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n", "import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function tickFormat(start, stop, count, specifier) {\n  var step = tickStep(start, stop, count),\n      precision;\n  specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n  switch (specifier.type) {\n    case \"s\": {\n      var value = Math.max(Math.abs(start), Math.abs(stop));\n      if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n      return formatPrefix(specifier, value);\n    }\n    case \"\":\n    case \"e\":\n    case \"g\":\n    case \"p\":\n    case \"r\": {\n      if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n      break;\n    }\n    case \"f\":\n    case \"%\": {\n      if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n      break;\n    }\n  }\n  return format(specifier);\n}\n", "import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport tickFormat from \"./tickFormat.js\";\n\nexport function linearish(scale) {\n  var domain = scale.domain;\n\n  scale.ticks = function(count) {\n    var d = domain();\n    return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n  };\n\n  scale.tickFormat = function(count, specifier) {\n    var d = domain();\n    return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n  };\n\n  scale.nice = function(count) {\n    if (count == null) count = 10;\n\n    var d = domain();\n    var i0 = 0;\n    var i1 = d.length - 1;\n    var start = d[i0];\n    var stop = d[i1];\n    var prestep;\n    var step;\n    var maxIter = 10;\n\n    if (stop < start) {\n      step = start, start = stop, stop = step;\n      step = i0, i0 = i1, i1 = step;\n    }\n    \n    while (maxIter-- > 0) {\n      step = tickIncrement(start, stop, count);\n      if (step === prestep) {\n        d[i0] = start\n        d[i1] = stop\n        return domain(d);\n      } else if (step > 0) {\n        start = Math.floor(start / step) * step;\n        stop = Math.ceil(stop / step) * step;\n      } else if (step < 0) {\n        start = Math.ceil(start * step) / step;\n        stop = Math.floor(stop * step) / step;\n      } else {\n        break;\n      }\n      prestep = step;\n    }\n\n    return scale;\n  };\n\n  return scale;\n}\n\nexport default function linear() {\n  var scale = continuous();\n\n  scale.copy = function() {\n    return copy(scale, linear());\n  };\n\n  initRange.apply(scale, arguments);\n\n  return linearish(scale);\n}\n", "import {linearish} from \"./linear.js\";\nimport number from \"./number.js\";\n\nexport default function identity(domain) {\n  var unknown;\n\n  function scale(x) {\n    return x == null || isNaN(x = +x) ? unknown : x;\n  }\n\n  scale.invert = scale;\n\n  scale.domain = scale.range = function(_) {\n    return arguments.length ? (domain = Array.from(_, number), scale) : domain.slice();\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  scale.copy = function() {\n    return identity(domain).unknown(unknown);\n  };\n\n  domain = arguments.length ? Array.from(domain, number) : [0, 1];\n\n  return linearish(scale);\n}\n", "export default function nice(domain, interval) {\n  domain = domain.slice();\n\n  var i0 = 0,\n      i1 = domain.length - 1,\n      x0 = domain[i0],\n      x1 = domain[i1],\n      t;\n\n  if (x1 < x0) {\n    t = i0, i0 = i1, i1 = t;\n    t = x0, x0 = x1, x1 = t;\n  }\n\n  domain[i0] = interval.floor(x0);\n  domain[i1] = interval.ceil(x1);\n  return domain;\n}\n", "import {ticks} from \"d3-array\";\nimport {format, formatSpecifier} from \"d3-format\";\nimport nice from \"./nice.js\";\nimport {copy, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformLog(x) {\n  return Math.log(x);\n}\n\nfunction transformExp(x) {\n  return Math.exp(x);\n}\n\nfunction transformLogn(x) {\n  return -Math.log(-x);\n}\n\nfunction transformExpn(x) {\n  return -Math.exp(-x);\n}\n\nfunction pow10(x) {\n  return isFinite(x) ? +(\"1e\" + x) : x < 0 ? 0 : x;\n}\n\nfunction powp(base) {\n  return base === 10 ? pow10\n      : base === Math.E ? Math.exp\n      : x => Math.pow(base, x);\n}\n\nfunction logp(base) {\n  return base === Math.E ? Math.log\n      : base === 10 && Math.log10\n      || base === 2 && Math.log2\n      || (base = Math.log(base), x => Math.log(x) / base);\n}\n\nfunction reflect(f) {\n  return (x, k) => -f(-x, k);\n}\n\nexport function loggish(transform) {\n  const scale = transform(transformLog, transformExp);\n  const domain = scale.domain;\n  let base = 10;\n  let logs;\n  let pows;\n\n  function rescale() {\n    logs = logp(base), pows = powp(base);\n    if (domain()[0] < 0) {\n      logs = reflect(logs), pows = reflect(pows);\n      transform(transformLogn, transformExpn);\n    } else {\n      transform(transformLog, transformExp);\n    }\n    return scale;\n  }\n\n  scale.base = function(_) {\n    return arguments.length ? (base = +_, rescale()) : base;\n  };\n\n  scale.domain = function(_) {\n    return arguments.length ? (domain(_), rescale()) : domain();\n  };\n\n  scale.ticks = count => {\n    const d = domain();\n    let u = d[0];\n    let v = d[d.length - 1];\n    const r = v < u;\n\n    if (r) ([u, v] = [v, u]);\n\n    let i = logs(u);\n    let j = logs(v);\n    let k;\n    let t;\n    const n = count == null ? 10 : +count;\n    let z = [];\n\n    if (!(base % 1) && j - i < n) {\n      i = Math.floor(i), j = Math.ceil(j);\n      if (u > 0) for (; i <= j; ++i) {\n        for (k = 1; k < base; ++k) {\n          t = i < 0 ? k / pows(-i) : k * pows(i);\n          if (t < u) continue;\n          if (t > v) break;\n          z.push(t);\n        }\n      } else for (; i <= j; ++i) {\n        for (k = base - 1; k >= 1; --k) {\n          t = i > 0 ? k / pows(-i) : k * pows(i);\n          if (t < u) continue;\n          if (t > v) break;\n          z.push(t);\n        }\n      }\n      if (z.length * 2 < n) z = ticks(u, v, n);\n    } else {\n      z = ticks(i, j, Math.min(j - i, n)).map(pows);\n    }\n    return r ? z.reverse() : z;\n  };\n\n  scale.tickFormat = (count, specifier) => {\n    if (count == null) count = 10;\n    if (specifier == null) specifier = base === 10 ? \"s\" : \",\";\n    if (typeof specifier !== \"function\") {\n      if (!(base % 1) && (specifier = formatSpecifier(specifier)).precision == null) specifier.trim = true;\n      specifier = format(specifier);\n    }\n    if (count === Infinity) return specifier;\n    const k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate?\n    return d => {\n      let i = d / pows(Math.round(logs(d)));\n      if (i * base < base - 0.5) i *= base;\n      return i <= k ? specifier(d) : \"\";\n    };\n  };\n\n  scale.nice = () => {\n    return domain(nice(domain(), {\n      floor: x => pows(Math.floor(logs(x))),\n      ceil: x => pows(Math.ceil(logs(x)))\n    }));\n  };\n\n  return scale;\n}\n\nexport default function log() {\n  const scale = loggish(transformer()).domain([1, 10]);\n  scale.copy = () => copy(scale, log()).base(scale.base());\n  initRange.apply(scale, arguments);\n  return scale;\n}\n", "import {linearish} from \"./linear.js\";\nimport {copy, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformSymlog(c) {\n  return function(x) {\n    return Math.sign(x) * Math.log1p(Math.abs(x / c));\n  };\n}\n\nfunction transformSymexp(c) {\n  return function(x) {\n    return Math.sign(x) * Math.expm1(Math.abs(x)) * c;\n  };\n}\n\nexport function symlogish(transform) {\n  var c = 1, scale = transform(transformSymlog(c), transformSymexp(c));\n\n  scale.constant = function(_) {\n    return arguments.length ? transform(transformSymlog(c = +_), transformSymexp(c)) : c;\n  };\n\n  return linearish(scale);\n}\n\nexport default function symlog() {\n  var scale = symlogish(transformer());\n\n  scale.copy = function() {\n    return copy(scale, symlog()).constant(scale.constant());\n  };\n\n  return initRange.apply(scale, arguments);\n}\n", "import {linearish} from \"./linear.js\";\nimport {copy, identity, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformPow(exponent) {\n  return function(x) {\n    return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n  };\n}\n\nfunction transformSqrt(x) {\n  return x < 0 ? -Math.sqrt(-x) : Math.sqrt(x);\n}\n\nfunction transformSquare(x) {\n  return x < 0 ? -x * x : x * x;\n}\n\nexport function powish(transform) {\n  var scale = transform(identity, identity),\n      exponent = 1;\n\n  function rescale() {\n    return exponent === 1 ? transform(identity, identity)\n        : exponent === 0.5 ? transform(transformSqrt, transformSquare)\n        : transform(transformPow(exponent), transformPow(1 / exponent));\n  }\n\n  scale.exponent = function(_) {\n    return arguments.length ? (exponent = +_, rescale()) : exponent;\n  };\n\n  return linearish(scale);\n}\n\nexport default function pow() {\n  var scale = powish(transformer());\n\n  scale.copy = function() {\n    return copy(scale, pow()).exponent(scale.exponent());\n  };\n\n  initRange.apply(scale, arguments);\n\n  return scale;\n}\n\nexport function sqrt() {\n  return pow.apply(null, arguments).exponent(0.5);\n}\n", "import continuous from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport {linearish} from \"./linear.js\";\nimport number from \"./number.js\";\n\nfunction square(x) {\n  return Math.sign(x) * x * x;\n}\n\nfunction unsquare(x) {\n  return Math.sign(x) * Math.sqrt(Math.abs(x));\n}\n\nexport default function radial() {\n  var squared = continuous(),\n      range = [0, 1],\n      round = false,\n      unknown;\n\n  function scale(x) {\n    var y = unsquare(squared(x));\n    return isNaN(y) ? unknown : round ? Math.round(y) : y;\n  }\n\n  scale.invert = function(y) {\n    return squared.invert(square(y));\n  };\n\n  scale.domain = function(_) {\n    return arguments.length ? (squared.domain(_), scale) : squared.domain();\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (squared.range((range = Array.from(_, number)).map(square)), scale) : range.slice();\n  };\n\n  scale.rangeRound = function(_) {\n    return scale.range(_).round(true);\n  };\n\n  scale.round = function(_) {\n    return arguments.length ? (round = !!_, scale) : round;\n  };\n\n  scale.clamp = function(_) {\n    return arguments.length ? (squared.clamp(_), scale) : squared.clamp();\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  scale.copy = function() {\n    return radial(squared.domain(), range)\n        .round(round)\n        .clamp(squared.clamp())\n        .unknown(unknown);\n  };\n\n  initRange.apply(scale, arguments);\n\n  return linearish(scale);\n}\n", "import {ascending, bisect, quantileSorted as threshold} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport default function quantile() {\n  var domain = [],\n      range = [],\n      thresholds = [],\n      unknown;\n\n  function rescale() {\n    var i = 0, n = Math.max(1, range.length);\n    thresholds = new Array(n - 1);\n    while (++i < n) thresholds[i - 1] = threshold(domain, i / n);\n    return scale;\n  }\n\n  function scale(x) {\n    return x == null || isNaN(x = +x) ? unknown : range[bisect(thresholds, x)];\n  }\n\n  scale.invertExtent = function(y) {\n    var i = range.indexOf(y);\n    return i < 0 ? [NaN, NaN] : [\n      i > 0 ? thresholds[i - 1] : domain[0],\n      i < thresholds.length ? thresholds[i] : domain[domain.length - 1]\n    ];\n  };\n\n  scale.domain = function(_) {\n    if (!arguments.length) return domain.slice();\n    domain = [];\n    for (let d of _) if (d != null && !isNaN(d = +d)) domain.push(d);\n    domain.sort(ascending);\n    return rescale();\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  scale.quantiles = function() {\n    return thresholds.slice();\n  };\n\n  scale.copy = function() {\n    return quantile()\n        .domain(domain)\n        .range(range)\n        .unknown(unknown);\n  };\n\n  return initRange.apply(scale, arguments);\n}\n", "import {bisect} from \"d3-array\";\nimport {linearish} from \"./linear.js\";\nimport {initRange} from \"./init.js\";\n\nexport default function quantize() {\n  var x0 = 0,\n      x1 = 1,\n      n = 1,\n      domain = [0.5],\n      range = [0, 1],\n      unknown;\n\n  function scale(x) {\n    return x != null && x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n  }\n\n  function rescale() {\n    var i = -1;\n    domain = new Array(n);\n    while (++i < n) domain[i] = ((i + 1) * x1 - (i - n) * x0) / (n + 1);\n    return scale;\n  }\n\n  scale.domain = function(_) {\n    return arguments.length ? ([x0, x1] = _, x0 = +x0, x1 = +x1, rescale()) : [x0, x1];\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (n = (range = Array.from(_)).length - 1, rescale()) : range.slice();\n  };\n\n  scale.invertExtent = function(y) {\n    var i = range.indexOf(y);\n    return i < 0 ? [NaN, NaN]\n        : i < 1 ? [x0, domain[0]]\n        : i >= n ? [domain[n - 1], x1]\n        : [domain[i - 1], domain[i]];\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : scale;\n  };\n\n  scale.thresholds = function() {\n    return domain.slice();\n  };\n\n  scale.copy = function() {\n    return quantize()\n        .domain([x0, x1])\n        .range(range)\n        .unknown(unknown);\n  };\n\n  return initRange.apply(linearish(scale), arguments);\n}\n", "import {bisect} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport default function threshold() {\n  var domain = [0.5],\n      range = [0, 1],\n      unknown,\n      n = 1;\n\n  function scale(x) {\n    return x != null && x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n  }\n\n  scale.domain = function(_) {\n    return arguments.length ? (domain = Array.from(_), n = Math.min(domain.length, range.length - 1), scale) : domain.slice();\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (range = Array.from(_), n = Math.min(domain.length, range.length - 1), scale) : range.slice();\n  };\n\n  scale.invertExtent = function(y) {\n    var i = range.indexOf(y);\n    return [domain[i - 1], domain[i]];\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  scale.copy = function() {\n    return threshold()\n        .domain(domain)\n        .range(range)\n        .unknown(unknown);\n  };\n\n  return initRange.apply(scale, arguments);\n}\n", "const t0 = new Date, t1 = new Date;\n\nexport function timeInterval(floori, offseti, count, field) {\n\n  function interval(date) {\n    return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n  }\n\n  interval.floor = (date) => {\n    return floori(date = new Date(+date)), date;\n  };\n\n  interval.ceil = (date) => {\n    return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n  };\n\n  interval.round = (date) => {\n    const d0 = interval(date), d1 = interval.ceil(date);\n    return date - d0 < d1 - date ? d0 : d1;\n  };\n\n  interval.offset = (date, step) => {\n    return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n  };\n\n  interval.range = (start, stop, step) => {\n    const range = [];\n    start = interval.ceil(start);\n    step = step == null ? 1 : Math.floor(step);\n    if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n    let previous;\n    do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n    while (previous < start && start < stop);\n    return range;\n  };\n\n  interval.filter = (test) => {\n    return timeInterval((date) => {\n      if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n    }, (date, step) => {\n      if (date >= date) {\n        if (step < 0) while (++step <= 0) {\n          while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n        } else while (--step >= 0) {\n          while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n        }\n      }\n    });\n  };\n\n  if (count) {\n    interval.count = (start, end) => {\n      t0.setTime(+start), t1.setTime(+end);\n      floori(t0), floori(t1);\n      return Math.floor(count(t0, t1));\n    };\n\n    interval.every = (step) => {\n      step = Math.floor(step);\n      return !isFinite(step) || !(step > 0) ? null\n          : !(step > 1) ? interval\n          : interval.filter(field\n              ? (d) => field(d) % step === 0\n              : (d) => interval.count(0, d) % step === 0);\n    };\n  }\n\n  return interval;\n}\n", "import {timeInterval} from \"./interval.js\";\n\nexport const millisecond = timeInterval(() => {\n  // noop\n}, (date, step) => {\n  date.setTime(+date + step);\n}, (start, end) => {\n  return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = (k) => {\n  k = Math.floor(k);\n  if (!isFinite(k) || !(k > 0)) return null;\n  if (!(k > 1)) return millisecond;\n  return timeInterval((date) => {\n    date.setTime(Math.floor(date / k) * k);\n  }, (date, step) => {\n    date.setTime(+date + step * k);\n  }, (start, end) => {\n    return (end - start) / k;\n  });\n};\n\nexport const milliseconds = millisecond.range;\n", "export const durationSecond = 1000;\nexport const durationMinute = durationSecond * 60;\nexport const durationHour = durationMinute * 60;\nexport const durationDay = durationHour * 24;\nexport const durationWeek = durationDay * 7;\nexport const durationMonth = durationDay * 30;\nexport const durationYear = durationDay * 365;\n", "import {timeInterval} from \"./interval.js\";\nimport {durationSecond} from \"./duration.js\";\n\nexport const second = timeInterval((date) => {\n  date.setTime(date - date.getMilliseconds());\n}, (date, step) => {\n  date.setTime(+date + step * durationSecond);\n}, (start, end) => {\n  return (end - start) / durationSecond;\n}, (date) => {\n  return date.getUTCSeconds();\n});\n\nexport const seconds = second.range;\n", "import {timeInterval} from \"./interval.js\";\nimport {durationMinute, durationSecond} from \"./duration.js\";\n\nexport const timeMinute = timeInterval((date) => {\n  date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, (date, step) => {\n  date.setTime(+date + step * durationMinute);\n}, (start, end) => {\n  return (end - start) / durationMinute;\n}, (date) => {\n  return date.getMinutes();\n});\n\nexport const timeMinutes = timeMinute.range;\n\nexport const utcMinute = timeInterval((date) => {\n  date.setUTCSeconds(0, 0);\n}, (date, step) => {\n  date.setTime(+date + step * durationMinute);\n}, (start, end) => {\n  return (end - start) / durationMinute;\n}, (date) => {\n  return date.getUTCMinutes();\n});\n\nexport const utcMinutes = utcMinute.range;\n", "import {timeInterval} from \"./interval.js\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration.js\";\n\nexport const timeHour = timeInterval((date) => {\n  date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, (date, step) => {\n  date.setTime(+date + step * durationHour);\n}, (start, end) => {\n  return (end - start) / durationHour;\n}, (date) => {\n  return date.getHours();\n});\n\nexport const timeHours = timeHour.range;\n\nexport const utcHour = timeInterval((date) => {\n  date.setUTCMinutes(0, 0, 0);\n}, (date, step) => {\n  date.setTime(+date + step * durationHour);\n}, (start, end) => {\n  return (end - start) / durationHour;\n}, (date) => {\n  return date.getUTCHours();\n});\n\nexport const utcHours = utcHour.range;\n", "import {timeInterval} from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nexport const timeDay = timeInterval(\n  date => date.setHours(0, 0, 0, 0),\n  (date, step) => date.setDate(date.getDate() + step),\n  (start, end) => (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay,\n  date => date.getDate() - 1\n);\n\nexport const timeDays = timeDay.range;\n\nexport const utcDay = timeInterval((date) => {\n  date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n  date.setUTCDate(date.getUTCDate() + step);\n}, (start, end) => {\n  return (end - start) / durationDay;\n}, (date) => {\n  return date.getUTCDate() - 1;\n});\n\nexport const utcDays = utcDay.range;\n\nexport const unixDay = timeInterval((date) => {\n  date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n  date.setUTCDate(date.getUTCDate() + step);\n}, (start, end) => {\n  return (end - start) / durationDay;\n}, (date) => {\n  return Math.floor(date / durationDay);\n});\n\nexport const unixDays = unixDay.range;\n", "import {timeInterval} from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction timeWeekday(i) {\n  return timeInterval((date) => {\n    date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n    date.setHours(0, 0, 0, 0);\n  }, (date, step) => {\n    date.setDate(date.getDate() + step * 7);\n  }, (start, end) => {\n    return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n  });\n}\n\nexport const timeSunday = timeWeekday(0);\nexport const timeMonday = timeWeekday(1);\nexport const timeTuesday = timeWeekday(2);\nexport const timeWednesday = timeWeekday(3);\nexport const timeThursday = timeWeekday(4);\nexport const timeFriday = timeWeekday(5);\nexport const timeSaturday = timeWeekday(6);\n\nexport const timeSundays = timeSunday.range;\nexport const timeMondays = timeMonday.range;\nexport const timeTuesdays = timeTuesday.range;\nexport const timeWednesdays = timeWednesday.range;\nexport const timeThursdays = timeThursday.range;\nexport const timeFridays = timeFriday.range;\nexport const timeSaturdays = timeSaturday.range;\n\nfunction utcWeekday(i) {\n  return timeInterval((date) => {\n    date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n    date.setUTCHours(0, 0, 0, 0);\n  }, (date, step) => {\n    date.setUTCDate(date.getUTCDate() + step * 7);\n  }, (start, end) => {\n    return (end - start) / durationWeek;\n  });\n}\n\nexport const utcSunday = utcWeekday(0);\nexport const utcMonday = utcWeekday(1);\nexport const utcTuesday = utcWeekday(2);\nexport const utcWednesday = utcWeekday(3);\nexport const utcThursday = utcWeekday(4);\nexport const utcFriday = utcWeekday(5);\nexport const utcSaturday = utcWeekday(6);\n\nexport const utcSundays = utcSunday.range;\nexport const utcMondays = utcMonday.range;\nexport const utcTuesdays = utcTuesday.range;\nexport const utcWednesdays = utcWednesday.range;\nexport const utcThursdays = utcThursday.range;\nexport const utcFridays = utcFriday.range;\nexport const utcSaturdays = utcSaturday.range;\n", "import {timeInterval} from \"./interval.js\";\n\nexport const timeMonth = timeInterval((date) => {\n  date.setDate(1);\n  date.setHours(0, 0, 0, 0);\n}, (date, step) => {\n  date.setMonth(date.getMonth() + step);\n}, (start, end) => {\n  return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, (date) => {\n  return date.getMonth();\n});\n\nexport const timeMonths = timeMonth.range;\n\nexport const utcMonth = timeInterval((date) => {\n  date.setUTCDate(1);\n  date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n  date.setUTCMonth(date.getUTCMonth() + step);\n}, (start, end) => {\n  return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, (date) => {\n  return date.getUTCMonth();\n});\n\nexport const utcMonths = utcMonth.range;\n", "import {timeInterval} from \"./interval.js\";\n\nexport const timeYear = timeInterval((date) => {\n  date.setMonth(0, 1);\n  date.setHours(0, 0, 0, 0);\n}, (date, step) => {\n  date.setFullYear(date.getFullYear() + step);\n}, (start, end) => {\n  return end.getFullYear() - start.getFullYear();\n}, (date) => {\n  return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\ntimeYear.every = (k) => {\n  return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval((date) => {\n    date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n    date.setMonth(0, 1);\n    date.setHours(0, 0, 0, 0);\n  }, (date, step) => {\n    date.setFullYear(date.getFullYear() + step * k);\n  });\n};\n\nexport const timeYears = timeYear.range;\n\nexport const utcYear = timeInterval((date) => {\n  date.setUTCMonth(0, 1);\n  date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n  date.setUTCFullYear(date.getUTCFullYear() + step);\n}, (start, end) => {\n  return end.getUTCFullYear() - start.getUTCFullYear();\n}, (date) => {\n  return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = (k) => {\n  return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval((date) => {\n    date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n    date.setUTCMonth(0, 1);\n    date.setUTCHours(0, 0, 0, 0);\n  }, (date, step) => {\n    date.setUTCFullYear(date.getUTCFullYear() + step * k);\n  });\n};\n\nexport const utcYears = utcYear.range;\n", "import {bisector, tickStep} from \"d3-array\";\nimport {durationDay, durationHour, durationMinute, durationMonth, durationSecond, durationWeek, durationYear} from \"./duration.js\";\nimport {millisecond} from \"./millisecond.js\";\nimport {second} from \"./second.js\";\nimport {timeMinute, utcMinute} from \"./minute.js\";\nimport {timeHour, utcHour} from \"./hour.js\";\nimport {timeDay, unixDay} from \"./day.js\";\nimport {timeSunday, utcSunday} from \"./week.js\";\nimport {timeMonth, utcMonth} from \"./month.js\";\nimport {timeYear, utcYear} from \"./year.js\";\n\nfunction ticker(year, month, week, day, hour, minute) {\n\n  const tickIntervals = [\n    [second,  1,      durationSecond],\n    [second,  5,  5 * durationSecond],\n    [second, 15, 15 * durationSecond],\n    [second, 30, 30 * durationSecond],\n    [minute,  1,      durationMinute],\n    [minute,  5,  5 * durationMinute],\n    [minute, 15, 15 * durationMinute],\n    [minute, 30, 30 * durationMinute],\n    [  hour,  1,      durationHour  ],\n    [  hour,  3,  3 * durationHour  ],\n    [  hour,  6,  6 * durationHour  ],\n    [  hour, 12, 12 * durationHour  ],\n    [   day,  1,      durationDay   ],\n    [   day,  2,  2 * durationDay   ],\n    [  week,  1,      durationWeek  ],\n    [ month,  1,      durationMonth ],\n    [ month,  3,  3 * durationMonth ],\n    [  year,  1,      durationYear  ]\n  ];\n\n  function ticks(start, stop, count) {\n    const reverse = stop < start;\n    if (reverse) [start, stop] = [stop, start];\n    const interval = count && typeof count.range === \"function\" ? count : tickInterval(start, stop, count);\n    const ticks = interval ? interval.range(start, +stop + 1) : []; // inclusive stop\n    return reverse ? ticks.reverse() : ticks;\n  }\n\n  function tickInterval(start, stop, count) {\n    const target = Math.abs(stop - start) / count;\n    const i = bisector(([,, step]) => step).right(tickIntervals, target);\n    if (i === tickIntervals.length) return year.every(tickStep(start / durationYear, stop / durationYear, count));\n    if (i === 0) return millisecond.every(Math.max(tickStep(start, stop, count), 1));\n    const [t, step] = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n    return t.every(step);\n  }\n\n  return [ticks, tickInterval];\n}\n\nconst [utcTicks, utcTickInterval] = ticker(utcYear, utcMonth, utcSunday, unixDay, utcHour, utcMinute);\nconst [timeTicks, timeTickInterval] = ticker(timeYear, timeMonth, timeSunday, timeDay, timeHour, timeMinute);\n\nexport {utcTicks, utcTickInterval, timeTicks, timeTickInterval};\n", "import {\n  timeDay,\n  timeSunday,\n  timeMonday,\n  timeThursday,\n  timeYear,\n  utcDay,\n  utcSunday,\n  utcMonday,\n  utcThursday,\n  utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n  if (0 <= d.y && d.y < 100) {\n    var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n    date.setFullYear(d.y);\n    return date;\n  }\n  return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n  if (0 <= d.y && d.y < 100) {\n    var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n    date.setUTCFullYear(d.y);\n    return date;\n  }\n  return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n  return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n  var locale_dateTime = locale.dateTime,\n      locale_date = locale.date,\n      locale_time = locale.time,\n      locale_periods = locale.periods,\n      locale_weekdays = locale.days,\n      locale_shortWeekdays = locale.shortDays,\n      locale_months = locale.months,\n      locale_shortMonths = locale.shortMonths;\n\n  var periodRe = formatRe(locale_periods),\n      periodLookup = formatLookup(locale_periods),\n      weekdayRe = formatRe(locale_weekdays),\n      weekdayLookup = formatLookup(locale_weekdays),\n      shortWeekdayRe = formatRe(locale_shortWeekdays),\n      shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n      monthRe = formatRe(locale_months),\n      monthLookup = formatLookup(locale_months),\n      shortMonthRe = formatRe(locale_shortMonths),\n      shortMonthLookup = formatLookup(locale_shortMonths);\n\n  var formats = {\n    \"a\": formatShortWeekday,\n    \"A\": formatWeekday,\n    \"b\": formatShortMonth,\n    \"B\": formatMonth,\n    \"c\": null,\n    \"d\": formatDayOfMonth,\n    \"e\": formatDayOfMonth,\n    \"f\": formatMicroseconds,\n    \"g\": formatYearISO,\n    \"G\": formatFullYearISO,\n    \"H\": formatHour24,\n    \"I\": formatHour12,\n    \"j\": formatDayOfYear,\n    \"L\": formatMilliseconds,\n    \"m\": formatMonthNumber,\n    \"M\": formatMinutes,\n    \"p\": formatPeriod,\n    \"q\": formatQuarter,\n    \"Q\": formatUnixTimestamp,\n    \"s\": formatUnixTimestampSeconds,\n    \"S\": formatSeconds,\n    \"u\": formatWeekdayNumberMonday,\n    \"U\": formatWeekNumberSunday,\n    \"V\": formatWeekNumberISO,\n    \"w\": formatWeekdayNumberSunday,\n    \"W\": formatWeekNumberMonday,\n    \"x\": null,\n    \"X\": null,\n    \"y\": formatYear,\n    \"Y\": formatFullYear,\n    \"Z\": formatZone,\n    \"%\": formatLiteralPercent\n  };\n\n  var utcFormats = {\n    \"a\": formatUTCShortWeekday,\n    \"A\": formatUTCWeekday,\n    \"b\": formatUTCShortMonth,\n    \"B\": formatUTCMonth,\n    \"c\": null,\n    \"d\": formatUTCDayOfMonth,\n    \"e\": formatUTCDayOfMonth,\n    \"f\": formatUTCMicroseconds,\n    \"g\": formatUTCYearISO,\n    \"G\": formatUTCFullYearISO,\n    \"H\": formatUTCHour24,\n    \"I\": formatUTCHour12,\n    \"j\": formatUTCDayOfYear,\n    \"L\": formatUTCMilliseconds,\n    \"m\": formatUTCMonthNumber,\n    \"M\": formatUTCMinutes,\n    \"p\": formatUTCPeriod,\n    \"q\": formatUTCQuarter,\n    \"Q\": formatUnixTimestamp,\n    \"s\": formatUnixTimestampSeconds,\n    \"S\": formatUTCSeconds,\n    \"u\": formatUTCWeekdayNumberMonday,\n    \"U\": formatUTCWeekNumberSunday,\n    \"V\": formatUTCWeekNumberISO,\n    \"w\": formatUTCWeekdayNumberSunday,\n    \"W\": formatUTCWeekNumberMonday,\n    \"x\": null,\n    \"X\": null,\n    \"y\": formatUTCYear,\n    \"Y\": formatUTCFullYear,\n    \"Z\": formatUTCZone,\n    \"%\": formatLiteralPercent\n  };\n\n  var parses = {\n    \"a\": parseShortWeekday,\n    \"A\": parseWeekday,\n    \"b\": parseShortMonth,\n    \"B\": parseMonth,\n    \"c\": parseLocaleDateTime,\n    \"d\": parseDayOfMonth,\n    \"e\": parseDayOfMonth,\n    \"f\": parseMicroseconds,\n    \"g\": parseYear,\n    \"G\": parseFullYear,\n    \"H\": parseHour24,\n    \"I\": parseHour24,\n    \"j\": parseDayOfYear,\n    \"L\": parseMilliseconds,\n    \"m\": parseMonthNumber,\n    \"M\": parseMinutes,\n    \"p\": parsePeriod,\n    \"q\": parseQuarter,\n    \"Q\": parseUnixTimestamp,\n    \"s\": parseUnixTimestampSeconds,\n    \"S\": parseSeconds,\n    \"u\": parseWeekdayNumberMonday,\n    \"U\": parseWeekNumberSunday,\n    \"V\": parseWeekNumberISO,\n    \"w\": parseWeekdayNumberSunday,\n    \"W\": parseWeekNumberMonday,\n    \"x\": parseLocaleDate,\n    \"X\": parseLocaleTime,\n    \"y\": parseYear,\n    \"Y\": parseFullYear,\n    \"Z\": parseZone,\n    \"%\": parseLiteralPercent\n  };\n\n  // These recursive directive definitions must be deferred.\n  formats.x = newFormat(locale_date, formats);\n  formats.X = newFormat(locale_time, formats);\n  formats.c = newFormat(locale_dateTime, formats);\n  utcFormats.x = newFormat(locale_date, utcFormats);\n  utcFormats.X = newFormat(locale_time, utcFormats);\n  utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n  function newFormat(specifier, formats) {\n    return function(date) {\n      var string = [],\n          i = -1,\n          j = 0,\n          n = specifier.length,\n          c,\n          pad,\n          format;\n\n      if (!(date instanceof Date)) date = new Date(+date);\n\n      while (++i < n) {\n        if (specifier.charCodeAt(i) === 37) {\n          string.push(specifier.slice(j, i));\n          if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n          else pad = c === \"e\" ? \" \" : \"0\";\n          if (format = formats[c]) c = format(date, pad);\n          string.push(c);\n          j = i + 1;\n        }\n      }\n\n      string.push(specifier.slice(j, i));\n      return string.join(\"\");\n    };\n  }\n\n  function newParse(specifier, Z) {\n    return function(string) {\n      var d = newDate(1900, undefined, 1),\n          i = parseSpecifier(d, specifier, string += \"\", 0),\n          week, day;\n      if (i != string.length) return null;\n\n      // If a UNIX timestamp is specified, return it.\n      if (\"Q\" in d) return new Date(d.Q);\n      if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n      // If this is utcParse, never use the local timezone.\n      if (Z && !(\"Z\" in d)) d.Z = 0;\n\n      // The am-pm flag is 0 for AM, and 1 for PM.\n      if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n      // If the month was not specified, inherit from the quarter.\n      if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n      // Convert day-of-week and week-of-year to day-of-year.\n      if (\"V\" in d) {\n        if (d.V < 1 || d.V > 53) return null;\n        if (!(\"w\" in d)) d.w = 1;\n        if (\"Z\" in d) {\n          week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n          week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n          week = utcDay.offset(week, (d.V - 1) * 7);\n          d.y = week.getUTCFullYear();\n          d.m = week.getUTCMonth();\n          d.d = week.getUTCDate() + (d.w + 6) % 7;\n        } else {\n          week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n          week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n          week = timeDay.offset(week, (d.V - 1) * 7);\n          d.y = week.getFullYear();\n          d.m = week.getMonth();\n          d.d = week.getDate() + (d.w + 6) % 7;\n        }\n      } else if (\"W\" in d || \"U\" in d) {\n        if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n        day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n        d.m = 0;\n        d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n      }\n\n      // If a time zone is specified, all fields are interpreted as UTC and then\n      // offset according to the specified time zone.\n      if (\"Z\" in d) {\n        d.H += d.Z / 100 | 0;\n        d.M += d.Z % 100;\n        return utcDate(d);\n      }\n\n      // Otherwise, all fields are in local time.\n      return localDate(d);\n    };\n  }\n\n  function parseSpecifier(d, specifier, string, j) {\n    var i = 0,\n        n = specifier.length,\n        m = string.length,\n        c,\n        parse;\n\n    while (i < n) {\n      if (j >= m) return -1;\n      c = specifier.charCodeAt(i++);\n      if (c === 37) {\n        c = specifier.charAt(i++);\n        parse = parses[c in pads ? specifier.charAt(i++) : c];\n        if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n      } else if (c != string.charCodeAt(j++)) {\n        return -1;\n      }\n    }\n\n    return j;\n  }\n\n  function parsePeriod(d, string, i) {\n    var n = periodRe.exec(string.slice(i));\n    return n ? (d.p = periodLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n  }\n\n  function parseShortWeekday(d, string, i) {\n    var n = shortWeekdayRe.exec(string.slice(i));\n    return n ? (d.w = shortWeekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n  }\n\n  function parseWeekday(d, string, i) {\n    var n = weekdayRe.exec(string.slice(i));\n    return n ? (d.w = weekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n  }\n\n  function parseShortMonth(d, string, i) {\n    var n = shortMonthRe.exec(string.slice(i));\n    return n ? (d.m = shortMonthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n  }\n\n  function parseMonth(d, string, i) {\n    var n = monthRe.exec(string.slice(i));\n    return n ? (d.m = monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n  }\n\n  function parseLocaleDateTime(d, string, i) {\n    return parseSpecifier(d, locale_dateTime, string, i);\n  }\n\n  function parseLocaleDate(d, string, i) {\n    return parseSpecifier(d, locale_date, string, i);\n  }\n\n  function parseLocaleTime(d, string, i) {\n    return parseSpecifier(d, locale_time, string, i);\n  }\n\n  function formatShortWeekday(d) {\n    return locale_shortWeekdays[d.getDay()];\n  }\n\n  function formatWeekday(d) {\n    return locale_weekdays[d.getDay()];\n  }\n\n  function formatShortMonth(d) {\n    return locale_shortMonths[d.getMonth()];\n  }\n\n  function formatMonth(d) {\n    return locale_months[d.getMonth()];\n  }\n\n  function formatPeriod(d) {\n    return locale_periods[+(d.getHours() >= 12)];\n  }\n\n  function formatQuarter(d) {\n    return 1 + ~~(d.getMonth() / 3);\n  }\n\n  function formatUTCShortWeekday(d) {\n    return locale_shortWeekdays[d.getUTCDay()];\n  }\n\n  function formatUTCWeekday(d) {\n    return locale_weekdays[d.getUTCDay()];\n  }\n\n  function formatUTCShortMonth(d) {\n    return locale_shortMonths[d.getUTCMonth()];\n  }\n\n  function formatUTCMonth(d) {\n    return locale_months[d.getUTCMonth()];\n  }\n\n  function formatUTCPeriod(d) {\n    return locale_periods[+(d.getUTCHours() >= 12)];\n  }\n\n  function formatUTCQuarter(d) {\n    return 1 + ~~(d.getUTCMonth() / 3);\n  }\n\n  return {\n    format: function(specifier) {\n      var f = newFormat(specifier += \"\", formats);\n      f.toString = function() { return specifier; };\n      return f;\n    },\n    parse: function(specifier) {\n      var p = newParse(specifier += \"\", false);\n      p.toString = function() { return specifier; };\n      return p;\n    },\n    utcFormat: function(specifier) {\n      var f = newFormat(specifier += \"\", utcFormats);\n      f.toString = function() { return specifier; };\n      return f;\n    },\n    utcParse: function(specifier) {\n      var p = newParse(specifier += \"\", true);\n      p.toString = function() { return specifier; };\n      return p;\n    }\n  };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n    numberRe = /^\\s*\\d+/, // note: ignores next directive\n    percentRe = /^%/,\n    requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n  var sign = value < 0 ? \"-\" : \"\",\n      string = (sign ? -value : value) + \"\",\n      length = string.length;\n  return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n  return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n  return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n  return new Map(names.map((name, i) => [name.toLowerCase(), i]));\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 1));\n  return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 1));\n  return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 4));\n  return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n  var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n  return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseQuarter(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 1));\n  return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 3));\n  return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 3));\n  return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 6));\n  return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n  var n = percentRe.exec(string.slice(i, i + 1));\n  return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n  var n = numberRe.exec(string.slice(i));\n  return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i));\n  return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n  return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n  return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n  return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n  return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n  return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n  return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n  return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n  return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n  return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n  var day = d.getDay();\n  return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n  return pad(timeSunday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction dISO(d) {\n  var day = d.getDay();\n  return (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n}\n\nfunction formatWeekNumberISO(d, p) {\n  d = dISO(d);\n  return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n  return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n  return pad(timeMonday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n  return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatYearISO(d, p) {\n  d = dISO(d);\n  return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n  return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatFullYearISO(d, p) {\n  var day = d.getDay();\n  d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n  return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n  var z = d.getTimezoneOffset();\n  return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n      + pad(z / 60 | 0, \"0\", 2)\n      + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n  return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n  return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n  return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n  return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n  return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n  return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n  return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n  return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n  return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n  var dow = d.getUTCDay();\n  return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n  return pad(utcSunday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction UTCdISO(d) {\n  var day = d.getUTCDay();\n  return (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n  d = UTCdISO(d);\n  return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n  return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n  return pad(utcMonday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n  return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCYearISO(d, p) {\n  d = UTCdISO(d);\n  return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n  return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCFullYearISO(d, p) {\n  var day = d.getUTCDay();\n  d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n  return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n  return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n  return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n  return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n  return Math.floor(+d / 1000);\n}\n", "import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n  dateTime: \"%x, %X\",\n  date: \"%-m/%-d/%Y\",\n  time: \"%-I:%M:%S %p\",\n  periods: [\"AM\", \"PM\"],\n  days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n  shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n  months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n  shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n  locale = formatLocale(definition);\n  timeFormat = locale.format;\n  timeParse = locale.parse;\n  utcFormat = locale.utcFormat;\n  utcParse = locale.utcParse;\n  return locale;\n}\n", "import {timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeTicks, timeTickInterval} from \"d3-time\";\nimport {timeFormat} from \"d3-time-format\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport nice from \"./nice.js\";\n\nfunction date(t) {\n  return new Date(t);\n}\n\nfunction number(t) {\n  return t instanceof Date ? +t : +new Date(+t);\n}\n\nexport function calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format) {\n  var scale = continuous(),\n      invert = scale.invert,\n      domain = scale.domain;\n\n  var formatMillisecond = format(\".%L\"),\n      formatSecond = format(\":%S\"),\n      formatMinute = format(\"%I:%M\"),\n      formatHour = format(\"%I %p\"),\n      formatDay = format(\"%a %d\"),\n      formatWeek = format(\"%b %d\"),\n      formatMonth = format(\"%B\"),\n      formatYear = format(\"%Y\");\n\n  function tickFormat(date) {\n    return (second(date) < date ? formatMillisecond\n        : minute(date) < date ? formatSecond\n        : hour(date) < date ? formatMinute\n        : day(date) < date ? formatHour\n        : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n        : year(date) < date ? formatMonth\n        : formatYear)(date);\n  }\n\n  scale.invert = function(y) {\n    return new Date(invert(y));\n  };\n\n  scale.domain = function(_) {\n    return arguments.length ? domain(Array.from(_, number)) : domain().map(date);\n  };\n\n  scale.ticks = function(interval) {\n    var d = domain();\n    return ticks(d[0], d[d.length - 1], interval == null ? 10 : interval);\n  };\n\n  scale.tickFormat = function(count, specifier) {\n    return specifier == null ? tickFormat : format(specifier);\n  };\n\n  scale.nice = function(interval) {\n    var d = domain();\n    if (!interval || typeof interval.range !== \"function\") interval = tickInterval(d[0], d[d.length - 1], interval == null ? 10 : interval);\n    return interval ? domain(nice(d, interval)) : scale;\n  };\n\n  scale.copy = function() {\n    return copy(scale, calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format));\n  };\n\n  return scale;\n}\n\nexport default function time() {\n  return initRange.apply(calendar(timeTicks, timeTickInterval, timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}\n", "import {utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcTicks, utcTickInterval} from \"d3-time\";\nimport {utcFormat} from \"d3-time-format\";\nimport {calendar} from \"./time.js\";\nimport {initRange} from \"./init.js\";\n\nexport default function utcTime() {\n  return initRange.apply(calendar(utcTicks, utcTickInterval, utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcFormat).domain([Date.UTC(2000, 0, 1), Date.UTC(2000, 0, 2)]), arguments);\n}\n", "import {interpolate, interpolateRound} from \"d3-interpolate\";\nimport {identity} from \"./continuous.js\";\nimport {initInterpolator} from \"./init.js\";\nimport {linearish} from \"./linear.js\";\nimport {loggish} from \"./log.js\";\nimport {symlogish} from \"./symlog.js\";\nimport {powish} from \"./pow.js\";\n\nfunction transformer() {\n  var x0 = 0,\n      x1 = 1,\n      t0,\n      t1,\n      k10,\n      transform,\n      interpolator = identity,\n      clamp = false,\n      unknown;\n\n  function scale(x) {\n    return x == null || isNaN(x = +x) ? unknown : interpolator(k10 === 0 ? 0.5 : (x = (transform(x) - t0) * k10, clamp ? Math.max(0, Math.min(1, x)) : x));\n  }\n\n  scale.domain = function(_) {\n    return arguments.length ? ([x0, x1] = _, t0 = transform(x0 = +x0), t1 = transform(x1 = +x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0), scale) : [x0, x1];\n  };\n\n  scale.clamp = function(_) {\n    return arguments.length ? (clamp = !!_, scale) : clamp;\n  };\n\n  scale.interpolator = function(_) {\n    return arguments.length ? (interpolator = _, scale) : interpolator;\n  };\n\n  function range(interpolate) {\n    return function(_) {\n      var r0, r1;\n      return arguments.length ? ([r0, r1] = _, interpolator = interpolate(r0, r1), scale) : [interpolator(0), interpolator(1)];\n    };\n  }\n\n  scale.range = range(interpolate);\n\n  scale.rangeRound = range(interpolateRound);\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  return function(t) {\n    transform = t, t0 = t(x0), t1 = t(x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0);\n    return scale;\n  };\n}\n\nexport function copy(source, target) {\n  return target\n      .domain(source.domain())\n      .interpolator(source.interpolator())\n      .clamp(source.clamp())\n      .unknown(source.unknown());\n}\n\nexport default function sequential() {\n  var scale = linearish(transformer()(identity));\n\n  scale.copy = function() {\n    return copy(scale, sequential());\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialLog() {\n  var scale = loggish(transformer()).domain([1, 10]);\n\n  scale.copy = function() {\n    return copy(scale, sequentialLog()).base(scale.base());\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSymlog() {\n  var scale = symlogish(transformer());\n\n  scale.copy = function() {\n    return copy(scale, sequentialSymlog()).constant(scale.constant());\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialPow() {\n  var scale = powish(transformer());\n\n  scale.copy = function() {\n    return copy(scale, sequentialPow()).exponent(scale.exponent());\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSqrt() {\n  return sequentialPow.apply(null, arguments).exponent(0.5);\n}\n", "import {ascending, bisect, quantile} from \"d3-array\";\nimport {identity} from \"./continuous.js\";\nimport {initInterpolator} from \"./init.js\";\n\nexport default function sequentialQuantile() {\n  var domain = [],\n      interpolator = identity;\n\n  function scale(x) {\n    if (x != null && !isNaN(x = +x)) return interpolator((bisect(domain, x, 1) - 1) / (domain.length - 1));\n  }\n\n  scale.domain = function(_) {\n    if (!arguments.length) return domain.slice();\n    domain = [];\n    for (let d of _) if (d != null && !isNaN(d = +d)) domain.push(d);\n    domain.sort(ascending);\n    return scale;\n  };\n\n  scale.interpolator = function(_) {\n    return arguments.length ? (interpolator = _, scale) : interpolator;\n  };\n\n  scale.range = function() {\n    return domain.map((d, i) => interpolator(i / (domain.length - 1)));\n  };\n\n  scale.quantiles = function(n) {\n    return Array.from({length: n + 1}, (_, i) => quantile(domain, i / n));\n  };\n\n  scale.copy = function() {\n    return sequentialQuantile(interpolator).domain(domain);\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n", "import {interpolate, interpolateRound, piecewise} from \"d3-interpolate\";\nimport {identity} from \"./continuous.js\";\nimport {initInterpolator} from \"./init.js\";\nimport {linearish} from \"./linear.js\";\nimport {loggish} from \"./log.js\";\nimport {copy} from \"./sequential.js\";\nimport {symlogish} from \"./symlog.js\";\nimport {powish} from \"./pow.js\";\n\nfunction transformer() {\n  var x0 = 0,\n      x1 = 0.5,\n      x2 = 1,\n      s = 1,\n      t0,\n      t1,\n      t2,\n      k10,\n      k21,\n      interpolator = identity,\n      transform,\n      clamp = false,\n      unknown;\n\n  function scale(x) {\n    return isNaN(x = +x) ? unknown : (x = 0.5 + ((x = +transform(x)) - t1) * (s * x < s * t1 ? k10 : k21), interpolator(clamp ? Math.max(0, Math.min(1, x)) : x));\n  }\n\n  scale.domain = function(_) {\n    return arguments.length ? ([x0, x1, x2] = _, t0 = transform(x0 = +x0), t1 = transform(x1 = +x1), t2 = transform(x2 = +x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), s = t1 < t0 ? -1 : 1, scale) : [x0, x1, x2];\n  };\n\n  scale.clamp = function(_) {\n    return arguments.length ? (clamp = !!_, scale) : clamp;\n  };\n\n  scale.interpolator = function(_) {\n    return arguments.length ? (interpolator = _, scale) : interpolator;\n  };\n\n  function range(interpolate) {\n    return function(_) {\n      var r0, r1, r2;\n      return arguments.length ? ([r0, r1, r2] = _, interpolator = piecewise(interpolate, [r0, r1, r2]), scale) : [interpolator(0), interpolator(0.5), interpolator(1)];\n    };\n  }\n\n  scale.range = range(interpolate);\n\n  scale.rangeRound = range(interpolateRound);\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  return function(t) {\n    transform = t, t0 = t(x0), t1 = t(x1), t2 = t(x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), s = t1 < t0 ? -1 : 1;\n    return scale;\n  };\n}\n\nexport default function diverging() {\n  var scale = linearish(transformer()(identity));\n\n  scale.copy = function() {\n    return copy(scale, diverging());\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingLog() {\n  var scale = loggish(transformer()).domain([0.1, 1, 10]);\n\n  scale.copy = function() {\n    return copy(scale, divergingLog()).base(scale.base());\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingSymlog() {\n  var scale = symlogish(transformer());\n\n  scale.copy = function() {\n    return copy(scale, divergingSymlog()).constant(scale.constant());\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingPow() {\n  var scale = powish(transformer());\n\n  scale.copy = function() {\n    return copy(scale, divergingPow()).exponent(scale.exponent());\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingSqrt() {\n  return divergingPow.apply(null, arguments).exponent(0.5);\n}\n", "import _keys from \"lodash/keys\";\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (typeof call === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport * as CustomPropTypes from \"../victory-util/prop-types\";\nexport var Portal = /*#__PURE__*/function (_ref) {\n  _inherits(Portal, _ref);\n\n  var _super = _createSuper(Portal);\n\n  function Portal(props) {\n    var _this;\n\n    _classCallCheck(this, Portal);\n\n    _this = _super.call(this, props);\n    _this.map = void 0;\n    _this.index = void 0;\n\n    _this.portalRegister = function () {\n      return ++_this.index;\n    };\n\n    _this.portalUpdate = function (key, element) {\n      _this.map[key] = element;\n\n      _this.forceUpdate();\n    };\n\n    _this.portalDeregister = function (key) {\n      delete _this.map[key];\n\n      _this.forceUpdate();\n    };\n\n    _this.map = {};\n    _this.index = 1;\n    return _this;\n  }\n\n  _createClass(Portal, [{\n    key: \"getChildren\",\n    value: function getChildren() {\n      var _this2 = this;\n\n      return _keys(this.map).map(function (key) {\n        var el = _this2.map[key];\n        return el ? /*#__PURE__*/React.cloneElement(el, {\n          key: key\n        }) : el;\n      });\n    } // Overridden in victory-core-native\n\n  }, {\n    key: \"render\",\n    value: function render() {\n      return /*#__PURE__*/React.createElement(\"svg\", this.props, this.getChildren());\n    }\n  }]);\n\n  return Portal;\n}(React.Component);\nPortal.displayName = \"Portal\";\nPortal.propTypes = {\n  className: PropTypes.string,\n  height: CustomPropTypes.nonNegative,\n  style: PropTypes.object,\n  viewBox: PropTypes.string,\n  width: CustomPropTypes.nonNegative\n};", "import React from \"react\";\n\n/**\n * The React context object consumers may use to access the context of the\n * portal.\n */\nexport var PortalContext = /*#__PURE__*/React.createContext({});\nPortalContext.displayName = \"PortalContext\";", "function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport * as React from \"react\";\n/*\n  USER_PROPS_SAFELIST is to contain any string deemed safe for user props.\n  The startsWidth array will contain the start of any accepted user-prop that\n  starts with these characters.\n  The exactMatch will contain a list of exact prop names that are accepted.\n*/\n\nvar USER_PROPS_SAFELIST = {\n  startsWith: [\"data-\", \"aria-\"],\n  exactMatch: []\n}; // Normally we'd use Template Literal Types, but we're avoiding it to maximize TS compatibility with TS < 4.1\n\n// `data-${string}` | `aria-${string}`;\n\n/**\n * doesPropStartWith: Function that takes a prop's key and runs it against all\n * options in the USER_PROPS_SAFELIST and checks to see if it starts with any\n * of those options.\n * @param {string} key: prop key to be tested against whitelist\n * @returns {Boolean}: returns true if the key starts with an option or false if\n * otherwise\n */\nvar doesPropStartWith = function (key) {\n  var startsWith = false;\n  USER_PROPS_SAFELIST.startsWith.forEach(function (starterString) {\n    var regex = new RegExp(\"\\\\b(\".concat(starterString, \")(\\\\w|-)+\"), \"g\");\n    if (regex.test(key)) startsWith = true;\n  });\n  return startsWith;\n};\n/**\n * isExactMatch: checks to see if the given key matches any of the 'exactMatch'\n * items in the whitelist\n * @param {String} key: prop key to be tested against the whitelist-exact match\n * array.\n * @returns {Boolean}: return true if whitelist contains that key, otherwise\n * returns false.\n */\n\n\nvar isExactMatch = function (key) {\n  return USER_PROPS_SAFELIST.exactMatch.includes(key);\n};\n/**\n * testIfSafeProp: tests prop's key against both startsWith and exactMatch values\n * @param {String} key: prop key to be tested against the whitelist\n * @returns {Boolean}: returns true if found in whitelist, otherwise returns false\n */\n\n\nvar testIfSafeProp = function (key) {\n  if (doesPropStartWith(key) || isExactMatch(key)) return true;\n  return false;\n};\n/**\n * Gets the value from props if a function value is provided\n * @param {any} value: maybe function value\n * @param {Object} props: props object\n * @returns {any} newValue\n */\n\n\nvar getValue = function (value, props) {\n  if (typeof value === \"function\") {\n    return value(props);\n  }\n\n  return value;\n};\n/**\n * getSafeUserProps - function that takes in a props object and removes any\n * key-value entries that do not match filter strings in the USER_PROPS_SAFELIST\n * object.\n *\n * @param {Object} props: props to be filtered against USER_PROPS_SAFELIST\n * @returns {Object}: object containing remaining acceptable props\n */\n\n\nexport var getSafeUserProps = function (props) {\n  var propsToFilter = _objectSpread({}, props);\n\n  return Object.fromEntries(Object.entries(propsToFilter).filter(function (_ref) {\n    var _ref2 = _slicedToArray(_ref, 1),\n        key = _ref2[0];\n\n    return testIfSafeProp(key);\n  }).map(function (_ref3) {\n    var _ref4 = _slicedToArray(_ref3, 2),\n        key = _ref4[0],\n        value = _ref4[1];\n\n    return [key, getValue(value, props)];\n  }));\n};\n/**\n * Wraps a component and adds safe user props\n *\n * @param {ReactElement} component: parent component\n * @param {Object} props: props to be filtered\n * @returns {ReactElement} modified component\n */\n\nexport var withSafeUserProps = function (component, props) {\n  return /*#__PURE__*/React.cloneElement(component, getSafeUserProps(props));\n};", "import _isEmpty from \"lodash/isEmpty\";\nimport _defaults from \"lodash/defaults\";\nimport _assign from \"lodash/assign\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nimport PropTypes from \"prop-types\";\nimport React from \"react\";\nimport { VictoryPortal } from \"../victory-portal/victory-portal\";\nimport { Rect } from \"../victory-primitives/rect\";\nimport { Text } from \"../victory-primitives/text\";\nimport { TSpan } from \"../victory-primitives/tspan\";\nimport * as Helpers from \"../victory-util/helpers\";\nimport * as LabelHelpers from \"../victory-util/label-helpers\";\nimport * as Log from \"../victory-util/log\";\nimport * as CustomPropTypes from \"../victory-util/prop-types\";\nimport * as Style from \"../victory-util/style\";\nimport * as TextSize from \"../victory-util/textsize\";\nimport * as UserProps from \"../victory-util/user-props\";\nvar defaultStyles = {\n  fill: \"#252525\",\n  fontSize: 14,\n  fontFamily: \"'Gill Sans', 'Gill Sans MT', 'Ser\u00ADavek', 'Trebuchet MS', sans-serif\",\n  stroke: \"transparent\"\n};\n\nvar getPosition = function (props, dimension) {\n  if (!props.datum) {\n    return 0;\n  }\n\n  var scaledPoint = Helpers.scalePoint(props, props.datum);\n  return scaledPoint[dimension];\n};\n\nvar getFontSize = function (style) {\n  var baseSize = style && style.fontSize;\n\n  if (typeof baseSize === \"number\") {\n    return baseSize;\n  } else if (baseSize === undefined || baseSize === null) {\n    return defaultStyles.fontSize;\n  } else if (typeof baseSize === \"string\") {\n    var fontSize = Number(baseSize.replace(\"px\", \"\"));\n\n    if (!isNaN(fontSize)) {\n      return fontSize;\n    }\n\n    Log.warn(\"fontSize should be expressed as a number of pixels\");\n    return defaultStyles.fontSize;\n  }\n\n  return defaultStyles.fontSize;\n};\n\nvar getSingleValue = function (prop) {\n  var index = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n  return Array.isArray(prop) ? prop[index] || prop[0] : prop;\n};\n\nvar shouldUseMultilineBackgrounds = function (props) {\n  var backgroundStyle = props.backgroundStyle,\n      backgroundPadding = props.backgroundPadding;\n  return Array.isArray(backgroundStyle) && !_isEmpty(backgroundStyle) || Array.isArray(backgroundPadding) && !_isEmpty(backgroundPadding);\n};\n\nvar getStyles = function (style, props) {\n  if (props.disableInlineStyles) {\n    var baseStyles = Helpers.evaluateStyle(style, props);\n    return {\n      // Font size is necessary to calculate the y position of the label\n      fontSize: getFontSize(baseStyles)\n    };\n  }\n\n  var getSingleStyle = function (s) {\n    s = s ? _defaults({}, s, defaultStyles) : defaultStyles;\n    var baseStyles = Helpers.evaluateStyle(s, props);\n    return _assign({}, baseStyles, {\n      fontSize: getFontSize(baseStyles)\n    });\n  };\n\n  return Array.isArray(style) && !_isEmpty(style) ? style.map(function (s) {\n    return getSingleStyle(s);\n  }) : getSingleStyle(style);\n};\n\nvar getBackgroundStyles = function (style, props) {\n  if (!style) {\n    return undefined;\n  }\n\n  return Array.isArray(style) && !_isEmpty(style) ? style.map(function (s) {\n    return Helpers.evaluateStyle(s, props);\n  }) : Helpers.evaluateStyle(style, props);\n};\n\nvar getBackgroundPadding = function (props) {\n  if (props.backgroundPadding && Array.isArray(props.backgroundPadding)) {\n    return props.backgroundPadding.map(function (backgroundPadding) {\n      var padding = Helpers.evaluateProp(backgroundPadding, props);\n      return Helpers.getPadding({\n        padding: padding\n      });\n    });\n  }\n\n  var padding = Helpers.evaluateProp(props.backgroundPadding, props);\n  return Helpers.getPadding({\n    padding: padding\n  });\n};\n\nvar getLineHeight = function (props) {\n  var lineHeight = Helpers.evaluateProp(props.lineHeight, props);\n\n  if (Array.isArray(lineHeight)) {\n    return _isEmpty(lineHeight) ? [1] : lineHeight;\n  }\n\n  return lineHeight;\n};\n\nvar getContent = function (text, props) {\n  if (text === undefined || text === null) {\n    return undefined;\n  }\n\n  if (Array.isArray(text)) {\n    return text.map(function (line) {\n      return Helpers.evaluateProp(line, props);\n    });\n  }\n\n  var child = Helpers.evaluateProp(text, props);\n\n  if (child === undefined || child === null) {\n    return undefined;\n  }\n\n  return Array.isArray(child) ? child : \"\".concat(child).split(\"\\n\");\n};\n\nvar getDy = function (props, verticalAnchor, lineHeight) {\n  var dy = props.dy ? Helpers.evaluateProp(props.dy, props) : 0;\n  var length = props.inline ? 1 : props.text.length;\n  var capHeight = Helpers.evaluateProp(props.capHeight, props);\n  var anchor = verticalAnchor ? Helpers.evaluateProp(verticalAnchor, props) : \"middle\";\n\n  var fontSizes = _toConsumableArray(Array(length).keys()).map(function (i) {\n    return getSingleValue(props.style, i).fontSize;\n  });\n\n  var lineHeights = _toConsumableArray(Array(length).keys()).map(function (i) {\n    return getSingleValue(lineHeight, i);\n  });\n\n  if (anchor === \"start\") {\n    return dy + (capHeight / 2 + lineHeights[0] / 2) * fontSizes[0];\n  } else if (props.inline) {\n    return anchor === \"end\" ? dy + (capHeight / 2 - lineHeights[0] / 2) * fontSizes[0] : dy + capHeight / 2 * fontSizes[0];\n  } else if (length === 1) {\n    return anchor === \"end\" ? dy + (capHeight / 2 + (0.5 - length) * lineHeights[0]) * fontSizes[0] : dy + (capHeight / 2 + (0.5 - length / 2) * lineHeights[0]) * fontSizes[0];\n  }\n\n  var allHeights = _toConsumableArray(Array(length).keys()).reduce(function (memo, i) {\n    return memo + (capHeight / 2 + (0.5 - length) * lineHeights[i]) * fontSizes[i] / length;\n  }, 0);\n\n  return anchor === \"end\" ? dy + allHeights : dy + allHeights / 2 + capHeight / 2 * lineHeights[length - 1] * fontSizes[length - 1];\n};\n\nvar getTransform = function (props, x, y) {\n  var polar = props.polar;\n  var style = getSingleValue(props.style);\n  var defaultAngle = polar ? LabelHelpers.getPolarAngle(props) : 0;\n  var baseAngle = style.angle === undefined ? Helpers.evaluateProp(props.angle, props) : style.angle;\n  var angle = baseAngle === undefined ? defaultAngle : baseAngle;\n  var transform = props.transform || style.transform;\n  var transformPart = transform && Helpers.evaluateProp(transform, props);\n  var rotatePart = angle && {\n    rotate: [angle, x, y]\n  };\n  return transformPart || angle ? Style.toTransformString(transformPart, rotatePart) : undefined;\n};\n\nvar getXCoordinate = function (calculatedProps, labelSizeWidth) {\n  var direction = calculatedProps.direction,\n      textAnchor = calculatedProps.textAnchor,\n      x = calculatedProps.x,\n      dx = calculatedProps.dx;\n\n  if (direction === \"rtl\") {\n    return x - labelSizeWidth;\n  }\n\n  switch (textAnchor) {\n    case \"middle\":\n      return Math.round(x - labelSizeWidth / 2);\n\n    case \"end\":\n      return Math.round(x - labelSizeWidth);\n\n    default:\n      // start\n      return x + (dx || 0);\n  }\n};\n\nvar getYCoordinate = function (calculatedProps, textHeight) {\n  var verticalAnchor = calculatedProps.verticalAnchor,\n      y = calculatedProps.y,\n      _calculatedProps$orig = calculatedProps.originalDy,\n      originalDy = _calculatedProps$orig === void 0 ? 0 : _calculatedProps$orig;\n  var offset = y + originalDy;\n\n  switch (verticalAnchor) {\n    case \"start\":\n      return Math.floor(offset);\n\n    case \"end\":\n      return Math.ceil(offset - textHeight);\n\n    default:\n      // middle\n      return Math.floor(offset - textHeight / 2);\n  }\n};\n\nvar getFullBackground = function (calculatedProps, tspanValues) {\n  var _calculatedProps$dx = calculatedProps.dx,\n      dx = _calculatedProps$dx === void 0 ? 0 : _calculatedProps$dx,\n      transform = calculatedProps.transform,\n      backgroundComponent = calculatedProps.backgroundComponent,\n      backgroundStyle = calculatedProps.backgroundStyle,\n      inline = calculatedProps.inline,\n      backgroundPadding = calculatedProps.backgroundPadding,\n      capHeight = calculatedProps.capHeight;\n  var textSizes = tspanValues.map(function (tspan) {\n    return tspan.textSize;\n  });\n  var height = inline ? Math.max.apply(Math, _toConsumableArray(textSizes.map(function (size) {\n    return size.height;\n  }))) : textSizes.reduce(function (memo, size, i) {\n    var capHeightAdjustment = i ? 0 : capHeight / 2;\n    return memo + size.height * (tspanValues[i].lineHeight - capHeightAdjustment);\n  }, 0);\n  var width = inline ? textSizes.reduce(function (memo, size, index) {\n    var offset = index ? dx : 0;\n    return memo + size.width + offset;\n  }, 0) : Math.max.apply(Math, _toConsumableArray(textSizes.map(function (size) {\n    return size.width;\n  })));\n  var xCoordinate = getXCoordinate(calculatedProps, width);\n  var yCoordinate = getYCoordinate(calculatedProps, height);\n  var backgroundProps = {\n    key: \"background\",\n    height: height + backgroundPadding.top + backgroundPadding.bottom,\n    style: backgroundStyle,\n    transform: transform,\n    width: width + backgroundPadding.left + backgroundPadding.right,\n    x: inline ? xCoordinate - backgroundPadding.left : xCoordinate + dx - backgroundPadding.left,\n    y: yCoordinate\n  };\n  return /*#__PURE__*/React.cloneElement(backgroundComponent, _defaults({}, backgroundComponent.props, backgroundProps));\n};\n\nvar getInlineXOffset = function (calculatedProps, textElements, index) {\n  var textAnchor = calculatedProps.textAnchor;\n  var widths = textElements.map(function (t) {\n    return t.widthWithPadding;\n  });\n  var totalWidth = widths.reduce(function (memo, width) {\n    return memo + width;\n  }, 0);\n  var centerOffset = -totalWidth / 2;\n\n  switch (textAnchor) {\n    case \"start\":\n      return widths.reduce(function (memo, width, i) {\n        memo = i < index ? memo + width : memo;\n        return memo;\n      }, 0);\n\n    case \"end\":\n      return widths.reduce(function (memo, width, i) {\n        memo = i > index ? memo - width : memo;\n        return memo;\n      }, 0);\n\n    default:\n      // middle\n      return widths.reduce(function (memo, width, i) {\n        var offsetWidth = i < index ? width : 0;\n        memo = i === index ? memo + width / 2 : memo + offsetWidth;\n        return memo;\n      }, centerOffset);\n  }\n};\n\nvar getChildBackgrounds = function (calculatedProps, tspanValues) {\n  var dy = calculatedProps.dy,\n      dx = calculatedProps.dx,\n      transform = calculatedProps.transform,\n      backgroundStyle = calculatedProps.backgroundStyle,\n      backgroundPadding = calculatedProps.backgroundPadding,\n      backgroundComponent = calculatedProps.backgroundComponent,\n      inline = calculatedProps.inline,\n      y = calculatedProps.y;\n  var textElements = tspanValues.map(function (current, i) {\n    var previous = getSingleValue(tspanValues, i - 1);\n    var labelSize = current.textSize;\n    var totalLineHeight = current.fontSize * current.lineHeight;\n    var textHeight = Math.ceil(totalLineHeight);\n    var padding = getSingleValue(backgroundPadding, i);\n    var prevPadding = getSingleValue(backgroundPadding, i - 1);\n    var xOffset = inline ? dx || 0 : 0;\n    var childDy = i && !inline ? previous.fontSize * previous.lineHeight + prevPadding.top + prevPadding.bottom : dy - totalLineHeight * 0.5 - (current.fontSize - current.capHeight);\n    return {\n      textHeight: textHeight,\n      labelSize: labelSize,\n      heightWithPadding: textHeight + padding.top + padding.bottom,\n      widthWithPadding: labelSize.width + padding.left + padding.right + xOffset,\n      y: y,\n      fontSize: current.fontSize,\n      dy: childDy\n    };\n  });\n  return textElements.map(function (textElement, i) {\n    var xCoordinate = getXCoordinate(calculatedProps, textElement.labelSize.width);\n    var yCoordinate = textElements.slice(0, i + 1).reduce(function (prev, curr) {\n      return prev + curr.dy;\n    }, y);\n    var padding = getSingleValue(backgroundPadding, i);\n    var height = textElement.heightWithPadding;\n    var xCoord = inline ? getInlineXOffset(calculatedProps, textElements, i) + xCoordinate - padding.left : xCoordinate;\n    var yCoord = inline ? getYCoordinate(calculatedProps, height) - padding.top : yCoordinate;\n    var backgroundProps = {\n      key: \"tspan-background-\".concat(i),\n      height: height,\n      style: getSingleValue(backgroundStyle, i),\n      width: textElement.widthWithPadding,\n      transform: transform,\n      x: xCoord - padding.left,\n      y: yCoord\n    };\n    return /*#__PURE__*/React.cloneElement(backgroundComponent, _defaults({}, backgroundComponent.props, backgroundProps));\n  });\n};\n\nvar getBackgroundElement = function (calculatedProps, tspanValues) {\n  return shouldUseMultilineBackgrounds(calculatedProps) ? getChildBackgrounds(calculatedProps, tspanValues) : getFullBackground(calculatedProps, tspanValues);\n};\n\nvar calculateSpanDy = function (tspanValues, i, calculatedProps) {\n  var current = getSingleValue(tspanValues, i);\n  var previous = getSingleValue(tspanValues, i - 1);\n  var previousHeight = previous.fontSize * previous.lineHeight;\n  var currentHeight = current.fontSize * current.lineHeight;\n  var previousCaps = previous.fontSize - previous.capHeight;\n  var currentCaps = current.fontSize - current.capHeight;\n  var textHeight = previousHeight - previous.fontSize / 2 + current.fontSize / 2 - previousHeight / 2 + currentHeight / 2 - currentCaps / 2 + previousCaps / 2;\n  return shouldUseMultilineBackgrounds(calculatedProps) ? textHeight + current.backgroundPadding.top + previous.backgroundPadding.bottom : textHeight;\n};\n\nvar getTSpanDy = function (tspanValues, calculatedProps, i) {\n  var inline = calculatedProps.inline;\n  var current = getSingleValue(tspanValues, i);\n\n  if (i && !inline) {\n    return calculateSpanDy(tspanValues, i, calculatedProps);\n  } else if (inline) {\n    return i === 0 ? current.backgroundPadding.top : undefined;\n  }\n\n  return current.backgroundPadding.top;\n};\n\nvar evaluateProps = function (props) {\n  /* Potential evaluated props are\n    1) text\n    2) style\n    3) everything else\n  */\n  var text = getContent(props.text, props);\n  var style = getStyles(props.style, _assign({}, props, {\n    text: text\n  }));\n  var backgroundStyle = getBackgroundStyles(props.backgroundStyle, _assign({}, props, {\n    text: text,\n    style: style\n  }));\n  var backgroundPadding = getBackgroundPadding(_assign({}, props, {\n    text: text,\n    style: style,\n    backgroundStyle: backgroundStyle\n  }));\n  var id = Helpers.evaluateProp(props.id, props);\n  return _assign({}, props, {\n    backgroundStyle: backgroundStyle,\n    backgroundPadding: backgroundPadding,\n    style: style,\n    text: text,\n    id: id\n  });\n};\n\nvar getCalculatedProps = function (props) {\n  var ariaLabel = Helpers.evaluateProp(props.ariaLabel, props);\n  var style = getSingleValue(props.style);\n  var lineHeight = getLineHeight(props);\n  var direction = props.direction ? Helpers.evaluateProp(props.direction, props) : \"inherit\";\n  var textAnchor = props.textAnchor ? Helpers.evaluateProp(props.textAnchor, props) : style.textAnchor || \"start\";\n  var verticalAnchor = props.verticalAnchor ? Helpers.evaluateProp(props.verticalAnchor, props) : style.verticalAnchor || \"middle\";\n  var dx = props.dx ? Helpers.evaluateProp(props.dx, props) : 0;\n  var dy = getDy(props, verticalAnchor, lineHeight);\n  var x = props.x !== undefined ? props.x : getPosition(props, \"x\");\n  var y = props.y !== undefined ? props.y : getPosition(props, \"y\");\n  var transform = getTransform(props, x, y);\n  return _assign({}, props, {\n    ariaLabel: ariaLabel,\n    lineHeight: lineHeight,\n    direction: direction,\n    textAnchor: textAnchor,\n    verticalAnchor: verticalAnchor,\n    dx: dx,\n    dy: dy,\n    originalDy: props.dy,\n    transform: transform,\n    x: x,\n    y: y\n  });\n};\n\nvar renderLabel = function (calculatedProps, tspanValues) {\n  var ariaLabel = calculatedProps.ariaLabel,\n      inline = calculatedProps.inline,\n      className = calculatedProps.className,\n      title = calculatedProps.title,\n      events = calculatedProps.events,\n      direction = calculatedProps.direction,\n      text = calculatedProps.text,\n      textAnchor = calculatedProps.textAnchor,\n      dx = calculatedProps.dx,\n      dy = calculatedProps.dy,\n      transform = calculatedProps.transform,\n      x = calculatedProps.x,\n      y = calculatedProps.y,\n      desc = calculatedProps.desc,\n      id = calculatedProps.id,\n      tabIndex = calculatedProps.tabIndex,\n      tspanComponent = calculatedProps.tspanComponent,\n      textComponent = calculatedProps.textComponent;\n  var userProps = UserProps.getSafeUserProps(calculatedProps);\n\n  var textProps = _objectSpread(_objectSpread({\n    \"aria-label\": ariaLabel,\n    key: \"text\"\n  }, events), {}, {\n    direction: direction,\n    dx: dx,\n    x: x,\n    y: y + dy,\n    transform: transform,\n    className: className,\n    title: title,\n    desc: Helpers.evaluateProp(desc, calculatedProps),\n    tabIndex: Helpers.evaluateProp(tabIndex, calculatedProps),\n    id: id\n  }, userProps);\n\n  var tspans = text.map(function (line, i) {\n    var currentStyle = tspanValues[i].style;\n    var tspanProps = {\n      key: \"\".concat(id, \"-key-\").concat(i),\n      x: !inline ? x : undefined,\n      dx: inline ? dx + tspanValues[i].backgroundPadding.left : dx,\n      dy: getTSpanDy(tspanValues, calculatedProps, i),\n      textAnchor: currentStyle.textAnchor || textAnchor,\n      style: currentStyle,\n      children: line\n    };\n    return /*#__PURE__*/React.cloneElement(tspanComponent, tspanProps);\n  });\n  return /*#__PURE__*/React.cloneElement(textComponent, textProps, tspans);\n};\n\nexport var VictoryLabel = function (props) {\n  props = evaluateProps(props);\n\n  if (props.text === null || props.text === undefined) {\n    return null;\n  }\n\n  var calculatedProps = getCalculatedProps(props);\n  var text = calculatedProps.text,\n      style = calculatedProps.style,\n      capHeight = calculatedProps.capHeight,\n      backgroundPadding = calculatedProps.backgroundPadding,\n      lineHeight = calculatedProps.lineHeight;\n  var tspanValues = text.map(function (line, i) {\n    var currentStyle = getSingleValue(style, i);\n    var capHeightPx = TextSize.convertLengthToPixels(\"\".concat(capHeight, \"em\"), currentStyle.fontSize);\n    var currentLineHeight = getSingleValue(lineHeight, i);\n    return {\n      style: currentStyle,\n      fontSize: currentStyle.fontSize || defaultStyles.fontSize,\n      capHeight: capHeightPx,\n      text: line,\n      // @ts-expect-error TODO: This looks like a bug:\n      textSize: TextSize.approximateTextSize(line, currentStyle),\n      lineHeight: currentLineHeight,\n      backgroundPadding: getSingleValue(backgroundPadding, i)\n    };\n  });\n  var label = renderLabel(calculatedProps, tspanValues);\n\n  if (props.backgroundStyle) {\n    var backgroundElement = getBackgroundElement(calculatedProps, tspanValues);\n    var children = [backgroundElement, label];\n    var backgroundWithLabel = /*#__PURE__*/React.cloneElement(props.groupComponent, {}, children);\n    return props.renderInPortal ? /*#__PURE__*/React.createElement(VictoryPortal, null, backgroundWithLabel) : backgroundWithLabel;\n  }\n\n  return props.renderInPortal ? /*#__PURE__*/React.createElement(VictoryPortal, null, label) : label;\n};\nVictoryLabel.displayName = \"VictoryLabel\";\nVictoryLabel.role = \"label\";\nVictoryLabel.defaultStyles = defaultStyles;\nVictoryLabel.propTypes = {\n  active: PropTypes.bool,\n  angle: PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.func]),\n  ariaLabel: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n  backgroundComponent: PropTypes.element,\n  backgroundPadding: PropTypes.oneOfType([PropTypes.number, PropTypes.object, PropTypes.array]),\n  backgroundStyle: PropTypes.oneOfType([PropTypes.object, PropTypes.array]),\n  capHeight: PropTypes.oneOfType([PropTypes.string, CustomPropTypes.nonNegative, PropTypes.func]),\n  className: PropTypes.string,\n  data: PropTypes.array,\n  datum: PropTypes.any,\n  // @ts-expect-error \"Function is not assignable to string\"\n  desc: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n  direction: PropTypes.oneOf([\"rtl\", \"ltr\", \"inherit\"]),\n  dx: PropTypes.oneOfType([PropTypes.number, PropTypes.string, PropTypes.func]),\n  dy: PropTypes.oneOfType([PropTypes.number, PropTypes.string, PropTypes.func]),\n  events: PropTypes.object,\n  groupComponent: PropTypes.element,\n  id: PropTypes.oneOfType([PropTypes.number, PropTypes.string, PropTypes.func]),\n  index: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  inline: PropTypes.bool,\n  labelPlacement: PropTypes.oneOf([\"parallel\", \"perpendicular\", \"vertical\"]),\n  lineHeight: PropTypes.oneOfType([PropTypes.string, CustomPropTypes.nonNegative, PropTypes.func, PropTypes.array]),\n  origin: PropTypes.shape({\n    x: CustomPropTypes.nonNegative.isRequired,\n    y: CustomPropTypes.nonNegative.isRequired\n  }),\n  polar: PropTypes.bool,\n  renderInPortal: PropTypes.bool,\n  scale: PropTypes.shape({\n    x: CustomPropTypes.scale,\n    y: CustomPropTypes.scale\n  }),\n  style: PropTypes.oneOfType([PropTypes.object, PropTypes.array]),\n  tabIndex: PropTypes.oneOfType([PropTypes.number, PropTypes.func]),\n  text: PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.func, PropTypes.array]),\n  // @ts-expect-error Function is not assignable to string\"\n  textAnchor: PropTypes.oneOfType([PropTypes.oneOf([\"start\", \"middle\", \"end\", \"inherit\"]), PropTypes.func]),\n  textComponent: PropTypes.element,\n  title: PropTypes.string,\n  transform: PropTypes.oneOfType([PropTypes.string, PropTypes.object, PropTypes.func]),\n  tspanComponent: PropTypes.element,\n  // @ts-expect-error Function is not assignable to string\"\n  verticalAnchor: PropTypes.oneOfType([PropTypes.oneOf([\"start\", \"middle\", \"end\"]), PropTypes.func]),\n  // @ts-expect-error Number is not assignable to string\n  x: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  // @ts-expect-error Number is not assignable to string\n  y: PropTypes.oneOfType([PropTypes.number, PropTypes.string])\n};\nVictoryLabel.defaultProps = {\n  backgroundComponent: /*#__PURE__*/React.createElement(Rect, null),\n  groupComponent: /*#__PURE__*/React.createElement(\"g\", null),\n  direction: \"inherit\",\n  textComponent: /*#__PURE__*/React.createElement(Text, null),\n  tspanComponent: /*#__PURE__*/React.createElement(TSpan, null),\n  capHeight: 0.71,\n  // Magic number from d3.\n  lineHeight: 1\n};", "import _defaults from \"lodash/defaults\";\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (typeof call === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport * as Log from \"../victory-util/log\";\nimport * as Helpers from \"../victory-util/helpers\";\nimport { PortalContext } from \"./portal-context\";\nexport var VictoryPortal = /*#__PURE__*/function (_React$Component) {\n  _inherits(VictoryPortal, _React$Component);\n\n  var _super = _createSuper(VictoryPortal);\n\n  function VictoryPortal() {\n    var _this;\n\n    _classCallCheck(this, VictoryPortal);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _super.call.apply(_super, [this].concat(args));\n    _this.checkedContext = void 0;\n    _this.renderInPlace = void 0;\n    _this.element = void 0;\n    _this.portalKey = void 0;\n    return _this;\n  }\n\n  _createClass(VictoryPortal, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      if (!this.checkedContext) {\n        if (typeof this.context.portalUpdate !== \"function\") {\n          var msg = \"`renderInPortal` is not supported outside of `VictoryContainer`. \" + \"Component will be rendered in place\";\n          Log.warn(msg);\n          this.renderInPlace = true;\n        }\n\n        this.checkedContext = true;\n      }\n\n      this.forceUpdate();\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate() {\n      if (!this.renderInPlace) {\n        this.portalKey = this.portalKey || this.context.portalRegister();\n        this.context.portalUpdate(this.portalKey, this.element);\n      }\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      if (this.context && this.context.portalDeregister) {\n        this.context.portalDeregister(this.portalKey);\n      }\n    } // Overridden in victory-core-native\n\n  }, {\n    key: \"renderPortal\",\n    value: function renderPortal(child) {\n      if (this.renderInPlace) {\n        return child;\n      }\n\n      this.element = child;\n      return null;\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var children = Array.isArray(this.props.children) ? this.props.children[0] : this.props.children;\n      var groupComponent = this.props.groupComponent;\n      var childProps = children && children.props || {};\n      var standardProps = childProps.groupComponent ? {\n        groupComponent: groupComponent,\n        standalone: false\n      } : {};\n\n      var newProps = _defaults(standardProps, childProps, Helpers.omit(this.props, [\"children\", \"groupComponent\"]));\n\n      var child = children && /*#__PURE__*/React.cloneElement(children, newProps);\n      return this.renderPortal(child);\n    }\n  }]);\n\n  return VictoryPortal;\n}(React.Component);\nVictoryPortal.displayName = \"VictoryPortal\";\nVictoryPortal.role = \"portal\";\nVictoryPortal.propTypes = {\n  children: PropTypes.node,\n  groupComponent: PropTypes.element\n};\nVictoryPortal.defaultProps = {\n  groupComponent: /*#__PURE__*/React.createElement(\"g\", null)\n};\nVictoryPortal.contextType = PortalContext;", "var _excluded = [\"desc\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\nexport var Rect = function (props) {\n  // eslint-disable-next-line react/prop-types\n  var desc = props.desc,\n      rest = _objectWithoutProperties(props, _excluded);\n\n  return desc ?\n  /*#__PURE__*/\n  // @ts-expect-error FIXME: \"id cannot be a number\"\n  React.createElement(\"rect\", _extends({\n    vectorEffect: \"non-scaling-stroke\"\n  }, rest), /*#__PURE__*/React.createElement(\"desc\", null, desc)) :\n  /*#__PURE__*/\n  // @ts-expect-error FIXME: \"id cannot be a number\"\n  React.createElement(\"rect\", _extends({\n    vectorEffect: \"non-scaling-stroke\"\n  }, rest));\n};", "var _excluded = [\"children\", \"title\", \"desc\"];\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nexport var Text = function (props) {\n  var children = props.children,\n      title = props.title,\n      desc = props.desc,\n      rest = _objectWithoutProperties(props, _excluded);\n\n  return (\n    /*#__PURE__*/\n    // @ts-expect-error FIXME: \"id cannot be a number\"\n    React.createElement(\"text\", rest, title && /*#__PURE__*/React.createElement(\"title\", null, title), desc && /*#__PURE__*/React.createElement(\"desc\", null, desc), children)\n  );\n};\nText.propTypes = {\n  children: PropTypes.node,\n  desc: PropTypes.string,\n  title: PropTypes.string\n};", "import React from \"react\";\nexport var TSpan = function (props) {\n  return (\n    /*#__PURE__*/\n    // @ts-expect-error FIXME: \"id cannot be a number\"\n    React.createElement(\"tspan\", props)\n  );\n};", "import _defaults from \"lodash/defaults\";\n\n/* eslint-disable no-use-before-define */\nimport * as Helpers from \"./helpers\";\n\n// Private Functions\nfunction getVerticalAnchor(props, datum) {\n  datum = datum || {};\n  var sign = datum._y >= 0 ? 1 : -1;\n  var labelStyle = props.style && props.style.labels || {};\n\n  if (datum.verticalAnchor || labelStyle.verticalAnchor) {\n    return datum.verticalAnchor || labelStyle.verticalAnchor;\n  } else if (!props.horizontal) {\n    return sign >= 0 ? \"end\" : \"start\";\n  }\n\n  return \"middle\";\n}\n\nfunction getTextAnchor(props, datum) {\n  datum = datum || {};\n  var style = props.style,\n      horizontal = props.horizontal;\n  var sign = datum._y >= 0 ? 1 : -1;\n  var labelStyle = style && style.labels || {};\n\n  if (datum.verticalAnchor || labelStyle.verticalAnchor) {\n    return datum.verticalAnchor || labelStyle.verticalAnchor;\n  } else if (!horizontal) {\n    return \"middle\";\n  }\n\n  return sign >= 0 ? \"start\" : \"end\";\n}\n\nfunction getAngle(props, datum) {\n  datum = datum || {};\n  var labelStyle = props.style && props.style.labels || {};\n  return datum.angle === undefined ? labelStyle.angle : datum.angle;\n}\n\nfunction getPadding(props, datum) {\n  datum = datum || {};\n  var horizontal = props.horizontal,\n      style = props.style;\n  var labelStyle = style.labels || {};\n  var defaultPadding = Helpers.evaluateProp(labelStyle.padding, props) || 0;\n  var sign = datum._y < 0 ? -1 : 1;\n  return {\n    x: horizontal ? sign * defaultPadding : 0,\n    y: horizontal ? 0 : -1 * sign * defaultPadding\n  };\n}\n\nfunction getOffset(props, datum) {\n  if (props.polar) {\n    return {};\n  }\n\n  var padding = getPadding(props, datum);\n  return {\n    dx: padding.x,\n    dy: padding.y\n  };\n}\n\nfunction getPosition(props, datum) {\n  var polar = props.polar;\n\n  var _Helpers$scalePoint = Helpers.scalePoint(props, datum),\n      x = _Helpers$scalePoint.x,\n      y = _Helpers$scalePoint.y;\n\n  if (!polar) {\n    return {\n      x: x,\n      y: y\n    };\n  }\n\n  var polarPadding = getPolarPadding(props, datum);\n  return {\n    x: x + polarPadding.x,\n    y: y + polarPadding.y\n  };\n}\n\nfunction getPolarPadding(props, datum) {\n  var style = props.style;\n  var degrees = getDegrees(props, datum);\n  var labelStyle = style.labels || {};\n  var padding = Helpers.evaluateProp(labelStyle.padding, props) || 0;\n  var angle = Helpers.degreesToRadians(degrees);\n  return {\n    x: padding * Math.cos(angle),\n    y: -padding * Math.sin(angle)\n  };\n}\n\nfunction getLabelPlacement(props) {\n  var labelComponent = props.labelComponent,\n      labelPlacement = props.labelPlacement,\n      polar = props.polar;\n  var defaultLabelPlacement = polar ? \"perpendicular\" : \"vertical\";\n  return labelPlacement ? labelPlacement : labelComponent.props && labelComponent.props.labelPlacement || defaultLabelPlacement;\n}\n\nfunction getPolarOrientation(degrees) {\n  // eslint-disable-next-line no-magic-numbers\n  if (degrees < 45 || degrees > 315) {\n    return \"right\"; // eslint-disable-next-line no-magic-numbers\n  } else if (degrees >= 45 && degrees <= 135) {\n    return \"top\"; // eslint-disable-next-line no-magic-numbers\n  } else if (degrees > 135 && degrees < 225) {\n    return \"left\";\n  }\n\n  return \"bottom\";\n} // Exported Functions\n\n\nexport function getText(props, datum, index) {\n  datum = datum || {};\n\n  if (datum.label !== undefined) {\n    return datum.label;\n  }\n\n  return Array.isArray(props.labels) ? props.labels[index] : props.labels;\n}\nexport function getPolarTextAnchor(props, degrees) {\n  var labelPlacement = getLabelPlacement(props);\n\n  if (labelPlacement === \"perpendicular\" || labelPlacement === \"vertical\" && (degrees === 90 || degrees === 270)) {\n    return \"middle\";\n  }\n\n  return degrees <= 90 || degrees > 270 ? \"start\" : \"end\";\n}\nexport function getPolarVerticalAnchor(props, degrees) {\n  var labelPlacement = getLabelPlacement(props);\n  var orientation = getPolarOrientation(degrees);\n\n  if (labelPlacement === \"parallel\" || orientation === \"left\" || orientation === \"right\") {\n    return \"middle\";\n  }\n\n  return orientation === \"top\" ? \"end\" : \"start\";\n}\nexport function getPolarAngle(props, baseAngle) {\n  var labelPlacement = props.labelPlacement,\n      datum = props.datum;\n\n  if (!labelPlacement || labelPlacement === \"vertical\") {\n    return 0;\n  }\n\n  var degrees = baseAngle !== undefined ? baseAngle % 360 : getDegrees(props, datum);\n  var sign = degrees > 90 && degrees < 180 || degrees > 270 ? 1 : -1;\n  var angle = 0;\n\n  if (degrees === 0 || degrees === 180) {\n    angle = 90;\n  } else if (degrees > 0 && degrees < 180) {\n    angle = 90 - degrees;\n  } else if (degrees > 180 && degrees < 360) {\n    angle = 270 - degrees;\n  }\n\n  var labelRotation = labelPlacement === \"perpendicular\" ? 0 : 90;\n  return angle + sign * labelRotation;\n}\nexport function getDegrees(props, datum) {\n  var _Helpers$getPoint = Helpers.getPoint(datum),\n      x = _Helpers$getPoint.x;\n\n  return Helpers.radiansToDegrees(props.scale.x(x)) % 360;\n}\nexport function getProps(props, index) {\n  var scale = props.scale,\n      data = props.data,\n      style = props.style,\n      horizontal = props.horizontal,\n      polar = props.polar,\n      width = props.width,\n      height = props.height,\n      theme = props.theme,\n      labelComponent = props.labelComponent,\n      disableInlineStyles = props.disableInlineStyles;\n  var datum = data[index];\n  var degrees = getDegrees(props, datum);\n  var textAnchor = polar ? getPolarTextAnchor(props, degrees) : getTextAnchor(props, datum);\n  var verticalAnchor = polar ? getPolarVerticalAnchor(props, degrees) : getVerticalAnchor(props, datum);\n  var angle = getAngle(props, datum);\n  var text = getText(props, datum, index);\n  var labelPlacement = getLabelPlacement(props);\n\n  var _getPosition = getPosition(props, datum),\n      x = _getPosition.x,\n      y = _getPosition.y;\n\n  var _getOffset = getOffset(props, datum),\n      dx = _getOffset.dx,\n      dy = _getOffset.dy;\n\n  var labelProps = {\n    angle: angle,\n    data: data,\n    datum: datum,\n    disableInlineStyles: disableInlineStyles,\n    horizontal: horizontal,\n    index: index,\n    polar: polar,\n    scale: scale,\n    labelPlacement: labelPlacement,\n    text: text,\n    textAnchor: textAnchor,\n    verticalAnchor: verticalAnchor,\n    x: x,\n    y: y,\n    dx: dx,\n    dy: dy,\n    width: width,\n    height: height,\n    style: style.labels\n  };\n\n  if (!Helpers.isTooltip(labelComponent)) {\n    return labelProps;\n  }\n\n  var tooltipTheme = theme && theme.tooltip || {};\n  return _defaults({}, labelProps, Helpers.omit(tooltipTheme, [\"style\"]));\n}", "/**\n * Given an object with CSS/SVG transform definitions, return the string value\n * for use with the `transform` CSS property or SVG attribute. Note that we\n * can't always guarantee the order will match the author's intended order, so\n * authors should only use the object notation if they know that their transform\n * is commutative or that there is only one.\n * @param {Object} obj An object of transform definitions.\n * @returns {String} The generated transform string.\n */\nexport var toTransformString = function (obj) {\n  for (var _len = arguments.length, more = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n    more[_key - 1] = arguments[_key];\n  }\n\n  if (more.length > 0) {\n    return more.reduce(function (memo, currentObj) {\n      return [memo, toTransformString(currentObj)].join(\" \");\n    }, toTransformString(obj)).trim();\n  }\n\n  if (obj === undefined || obj === null || typeof obj === \"string\") {\n    return obj;\n  }\n\n  var transforms = [];\n\n  for (var key in obj) {\n    if (obj.hasOwnProperty(key)) {\n      var value = obj[key];\n      transforms.push(\"\".concat(key, \"(\").concat(value, \")\"));\n    }\n  }\n\n  return transforms.join(\" \").trim();\n};\n/**\n * Given the name of a color scale, getColorScale will return an array\n * of 5 hex string values in that color scale. If no 'name' parameter\n * is given, it will return the Victory default grayscale.\n * @param {String} name The name of the color scale to return (optional).\n * @returns {Array} An array of 5 hex string values composing a color scale.\n */\n\nexport function getColorScale(name) {\n  var scales = {\n    grayscale: [\"#cccccc\", \"#969696\", \"#636363\", \"#252525\"],\n    qualitative: [\"#334D5C\", \"#45B29D\", \"#EFC94C\", \"#E27A3F\", \"#DF5A49\", \"#4F7DA1\", \"#55DBC1\", \"#EFDA97\", \"#E2A37F\", \"#DF948A\"],\n    heatmap: [\"#428517\", \"#77D200\", \"#D6D305\", \"#EC8E19\", \"#C92B05\"],\n    warm: [\"#940031\", \"#C43343\", \"#DC5429\", \"#FF821D\", \"#FFAF55\"],\n    cool: [\"#2746B9\", \"#0B69D4\", \"#2794DB\", \"#31BB76\", \"#60E83B\"],\n    red: [\"#FCAE91\", \"#FB6A4A\", \"#DE2D26\", \"#A50F15\", \"#750B0E\"],\n    blue: [\"#002C61\", \"#004B8F\", \"#006BC9\", \"#3795E5\", \"#65B4F4\"],\n    green: [\"#354722\", \"#466631\", \"#649146\", \"#8AB25C\", \"#A9C97E\"]\n  };\n  return name ? scales[name] : scales.grayscale;\n}", "import _memoize from \"lodash/memoize\";\nimport _defaults from \"lodash/defaults\";\nimport _assign from \"lodash/assign\";\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n// Based on measuring specific character widths\n// as in the following example https://bl.ocks.org/tophtucker/62f93a4658387bb61e4510c37e2e97cf\n// prettier-ignore\nvar fonts = {\n  \"American Typewriter\": {\n    widths: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.25, 0.4203125, 0.3296875, 0.6, 0.6375, 0.8015625, 0.8203125, 0.1875, 0.45625, 0.45625, 0.6375, 0.5, 0.2734375, 0.309375, 0.2734375, 0.4390625, 0.6375, 0.6375, 0.6375, 0.6375, 0.6375, 0.6375, 0.6375, 0.6375, 0.6375, 0.6375, 0.2734375, 0.2734375, 0.5, 0.5, 0.5, 0.6, 0.6921875, 0.7640625, 0.6921875, 0.6375, 0.728125, 0.6734375, 0.6203125, 0.7109375, 0.784375, 0.3828125, 0.6421875, 0.7859375, 0.6375, 0.9484375, 0.7640625, 0.65625, 0.6375, 0.65625, 0.7296875, 0.6203125, 0.6375, 0.7109375, 0.740625, 0.940625, 0.784375, 0.7578125, 0.6203125, 0.4375, 0.5, 0.4375, 0.5, 0.5, 0.4921875, 0.5734375, 0.5890625, 0.5109375, 0.6, 0.528125, 0.43125, 0.5578125, 0.6375, 0.3109375, 0.40625, 0.6234375, 0.309375, 0.928125, 0.6375, 0.546875, 0.6, 0.58125, 0.4921875, 0.4921875, 0.4, 0.6203125, 0.625, 0.825, 0.6375, 0.640625, 0.528125, 0.5, 0.5, 0.5, 0.6671875],\n    avg: 0.5793421052631578\n  },\n  Arial: {\n    widths: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.278125, 0.278125, 0.35625, 0.55625, 0.55625, 0.890625, 0.6671875, 0.1921875, 0.334375, 0.334375, 0.390625, 0.584375, 0.278125, 0.334375, 0.278125, 0.278125, 0.55625, 0.55625, 0.55625, 0.55625, 0.55625, 0.55625, 0.55625, 0.55625, 0.55625, 0.55625, 0.278125, 0.278125, 0.584375, 0.584375, 0.584375, 0.55625, 1.015625, 0.6703125, 0.6671875, 0.7234375, 0.7234375, 0.6671875, 0.6109375, 0.778125, 0.7234375, 0.278125, 0.5, 0.6671875, 0.55625, 0.834375, 0.7234375, 0.778125, 0.6671875, 0.778125, 0.7234375, 0.6671875, 0.6109375, 0.7234375, 0.6671875, 0.9453125, 0.6671875, 0.6671875, 0.6109375, 0.278125, 0.278125, 0.278125, 0.4703125, 0.584375, 0.334375, 0.55625, 0.55625, 0.5, 0.55625, 0.55625, 0.3125, 0.55625, 0.55625, 0.2234375, 0.2703125, 0.5, 0.2234375, 0.834375, 0.55625, 0.55625, 0.55625, 0.55625, 0.346875, 0.5, 0.278125, 0.55625, 0.5, 0.7234375, 0.5, 0.5, 0.5, 0.334375, 0.2609375, 0.334375, 0.584375],\n    avg: 0.528733552631579\n  },\n  \"Arial Black\": {\n    widths: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.33125, 0.334375, 0.5, 0.6609375, 0.6671875, 1, 0.890625, 0.278125, 0.390625, 0.390625, 0.55625, 0.6609375, 0.334375, 0.334375, 0.334375, 0.28125, 0.6671875, 0.6671875, 0.6671875, 0.6671875, 0.6671875, 0.6671875, 0.6671875, 0.6671875, 0.6671875, 0.6671875, 0.334375, 0.334375, 0.6609375, 0.6609375, 0.6609375, 0.6109375, 0.7453125, 0.78125, 0.778125, 0.778125, 0.778125, 0.7234375, 0.6671875, 0.834375, 0.834375, 0.390625, 0.6671875, 0.834375, 0.6671875, 0.9453125, 0.834375, 0.834375, 0.7234375, 0.834375, 0.78125, 0.7234375, 0.7234375, 0.834375, 0.7796875, 1.003125, 0.78125, 0.78125, 0.7234375, 0.390625, 0.28125, 0.390625, 0.6609375, 0.5125, 0.334375, 0.6671875, 0.6671875, 0.6671875, 0.6671875, 0.6671875, 0.41875, 0.6671875, 0.6671875, 0.334375, 0.384375, 0.6671875, 0.334375, 1, 0.6671875, 0.6671875, 0.6671875, 0.6671875, 0.4703125, 0.6109375, 0.4453125, 0.6671875, 0.6140625, 0.946875, 0.6671875, 0.615625, 0.55625, 0.390625, 0.278125, 0.390625, 0.6609375],\n    avg: 0.6213157894736842\n  },\n  Baskerville: {\n    widths: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.25, 0.25, 0.40625, 0.6671875, 0.490625, 0.875, 0.7015625, 0.178125, 0.2453125, 0.246875, 0.4171875, 0.6671875, 0.25, 0.3125, 0.25, 0.521875, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.25, 0.25, 0.6671875, 0.6671875, 0.6671875, 0.396875, 0.9171875, 0.684375, 0.615625, 0.71875, 0.7609375, 0.625, 0.553125, 0.771875, 0.803125, 0.3546875, 0.515625, 0.78125, 0.6046875, 0.928125, 0.75, 0.8234375, 0.5625, 0.96875, 0.7296875, 0.5421875, 0.6984375, 0.771875, 0.7296875, 0.9484375, 0.771875, 0.678125, 0.6359375, 0.3640625, 0.521875, 0.3640625, 0.46875, 0.5125, 0.334375, 0.46875, 0.521875, 0.428125, 0.521875, 0.4375, 0.3890625, 0.4765625, 0.53125, 0.25, 0.359375, 0.4640625, 0.240625, 0.803125, 0.53125, 0.5, 0.521875, 0.521875, 0.365625, 0.334375, 0.2921875, 0.521875, 0.4640625, 0.678125, 0.4796875, 0.465625, 0.428125, 0.4796875, 0.5109375, 0.4796875, 0.6671875],\n    avg: 0.5323519736842108\n  },\n  Courier: {\n    widths: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5984375, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6078125, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.61875, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.615625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6140625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625],\n    avg: 0.6020559210526316\n  },\n  \"Courier New\": {\n    widths: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5984375, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625],\n    avg: 0.6015296052631579\n  },\n  cursive: {\n    widths: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.1921875, 0.24375, 0.40625, 0.5671875, 0.3984375, 0.721875, 0.909375, 0.2328125, 0.434375, 0.365625, 0.4734375, 0.5578125, 0.19375, 0.3484375, 0.19375, 0.7734375, 0.503125, 0.4171875, 0.5453125, 0.45, 0.6046875, 0.4703125, 0.5984375, 0.55625, 0.503125, 0.5546875, 0.20625, 0.2, 0.5625, 0.5546875, 0.546875, 0.403125, 0.70625, 0.734375, 0.7078125, 0.64375, 0.85, 0.753125, 0.75, 0.6484375, 1.0765625, 0.44375, 0.5359375, 0.8359375, 0.653125, 1.0109375, 1.1515625, 0.6796875, 0.6984375, 1.0625, 0.8234375, 0.5125, 0.9234375, 0.8546875, 0.70625, 0.9109375, 0.7421875, 0.715625, 0.6015625, 0.4640625, 0.3359375, 0.4109375, 0.5421875, 0.5421875, 0.4328125, 0.5125, 0.5, 0.3859375, 0.7375, 0.359375, 0.75625, 0.540625, 0.5328125, 0.3203125, 0.5296875, 0.5015625, 0.484375, 0.7890625, 0.5640625, 0.4203125, 0.703125, 0.471875, 0.4734375, 0.35, 0.4125, 0.5640625, 0.471875, 0.6484375, 0.5296875, 0.575, 0.4140625, 0.415625, 0.20625, 0.3796875, 0.5421875],\n    avg: 0.5604440789473684\n  },\n  fantasy: {\n    widths: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.215625, 0.2625, 0.3265625, 0.6109375, 0.534375, 0.7625, 0.7828125, 0.2, 0.4359375, 0.4359375, 0.3765625, 0.5109375, 0.2796875, 0.4609375, 0.2796875, 0.5296875, 0.6640625, 0.253125, 0.521875, 0.4765625, 0.6640625, 0.490625, 0.528125, 0.5546875, 0.496875, 0.5421875, 0.2796875, 0.2796875, 0.5625, 0.4609375, 0.5625, 0.4828125, 0.609375, 0.740625, 0.7234375, 0.740625, 0.8265625, 0.7234375, 0.6171875, 0.7359375, 0.765625, 0.240625, 0.5453125, 0.715625, 0.6078125, 0.8640625, 0.653125, 0.9125, 0.6484375, 0.946875, 0.6921875, 0.653125, 0.6953125, 0.8015625, 0.58125, 0.784375, 0.671875, 0.6265625, 0.690625, 0.4359375, 0.5296875, 0.4359375, 0.53125, 0.5, 0.2875, 0.5375, 0.603125, 0.4984375, 0.60625, 0.53125, 0.434375, 0.6421875, 0.56875, 0.209375, 0.4671875, 0.5484375, 0.2203125, 0.709375, 0.55, 0.5984375, 0.6140625, 0.5765625, 0.40625, 0.4734375, 0.3734375, 0.559375, 0.4421875, 0.6421875, 0.4890625, 0.578125, 0.4484375, 0.2546875, 0.2203125, 0.2546875, 0.55],\n    avg: 0.536496710526316\n  },\n  Geneva: {\n    widths: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.3328125, 0.3046875, 0.5, 0.6671875, 0.6671875, 0.90625, 0.728125, 0.3046875, 0.446875, 0.446875, 0.5078125, 0.6671875, 0.3046875, 0.3796875, 0.3046875, 0.5390625, 0.6671875, 0.6671875, 0.6671875, 0.6671875, 0.6671875, 0.6671875, 0.6671875, 0.6671875, 0.6671875, 0.6671875, 0.3046875, 0.3046875, 0.6671875, 0.6671875, 0.6671875, 0.56875, 0.871875, 0.728125, 0.6375, 0.6515625, 0.7015625, 0.5765625, 0.5546875, 0.675, 0.690625, 0.2421875, 0.4921875, 0.6640625, 0.584375, 0.7890625, 0.709375, 0.7359375, 0.584375, 0.78125, 0.60625, 0.60625, 0.640625, 0.6671875, 0.728125, 0.946875, 0.6109375, 0.6109375, 0.5765625, 0.446875, 0.5390625, 0.446875, 0.6671875, 0.6671875, 0.5921875, 0.5546875, 0.6109375, 0.546875, 0.603125, 0.5765625, 0.390625, 0.6109375, 0.584375, 0.2359375, 0.334375, 0.5390625, 0.2359375, 0.8953125, 0.584375, 0.60625, 0.603125, 0.603125, 0.3875, 0.509375, 0.44375, 0.584375, 0.565625, 0.78125, 0.53125, 0.571875, 0.5546875, 0.4515625, 0.246875, 0.4515625, 0.6671875],\n    avg: 0.5762664473684211\n  },\n  Georgia: {\n    widths: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.2421875, 0.33125, 0.4125, 0.64375, 0.6109375, 0.81875, 0.7109375, 0.215625, 0.375, 0.375, 0.4734375, 0.64375, 0.2703125, 0.375, 0.2703125, 0.46875, 0.6140625, 0.4296875, 0.559375, 0.553125, 0.565625, 0.5296875, 0.5671875, 0.503125, 0.596875, 0.5671875, 0.3125, 0.3125, 0.64375, 0.64375, 0.64375, 0.4796875, 0.9296875, 0.715625, 0.6546875, 0.6421875, 0.75, 0.6546875, 0.6, 0.7265625, 0.815625, 0.390625, 0.51875, 0.7203125, 0.6046875, 0.928125, 0.7671875, 0.7453125, 0.6109375, 0.7453125, 0.7234375, 0.5625, 0.61875, 0.7578125, 0.70625, 0.99375, 0.7125, 0.6640625, 0.6015625, 0.375, 0.46875, 0.375, 0.64375, 0.65, 0.5, 0.5046875, 0.56875, 0.4546875, 0.575, 0.484375, 0.39375, 0.509375, 0.5828125, 0.29375, 0.3671875, 0.546875, 0.2875, 0.88125, 0.5921875, 0.5390625, 0.571875, 0.5640625, 0.4109375, 0.4328125, 0.3453125, 0.5765625, 0.5203125, 0.75625, 0.50625, 0.5171875, 0.4453125, 0.43125, 0.375, 0.43125, 0.64375],\n    avg: 0.5551809210526316\n  },\n  \"Gill Sans\": {\n    widths: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.2765625, 0.271875, 0.3546875, 0.584375, 0.5421875, 0.6765625, 0.625, 0.1890625, 0.3234375, 0.3234375, 0.4171875, 0.584375, 0.2203125, 0.3234375, 0.2203125, 0.28125, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.2203125, 0.2296875, 0.584375, 0.584375, 0.584375, 0.334375, 1.0109375, 0.6671875, 0.5640625, 0.709375, 0.75, 0.5, 0.4703125, 0.740625, 0.7296875, 0.25, 0.3125, 0.65625, 0.490625, 0.78125, 0.78125, 0.8234375, 0.5109375, 0.8234375, 0.6046875, 0.459375, 0.6046875, 0.709375, 0.6046875, 1.0421875, 0.709375, 0.6046875, 0.646875, 0.334375, 0.28125, 0.334375, 0.4703125, 0.5828125, 0.334375, 0.428125, 0.5, 0.4390625, 0.5109375, 0.4796875, 0.296875, 0.428125, 0.5, 0.2203125, 0.2265625, 0.5, 0.2203125, 0.771875, 0.5, 0.553125, 0.5, 0.5, 0.3984375, 0.3859375, 0.334375, 0.5, 0.4390625, 0.7203125, 0.5, 0.4390625, 0.4171875, 0.334375, 0.2609375, 0.334375, 0.584375],\n    avg: 0.4933717105263159\n  },\n  Helvetica: {\n    widths: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.2796875, 0.2765625, 0.3546875, 0.5546875, 0.5546875, 0.8890625, 0.665625, 0.190625, 0.3328125, 0.3328125, 0.3890625, 0.5828125, 0.2765625, 0.3328125, 0.2765625, 0.3015625, 0.5546875, 0.5546875, 0.5546875, 0.5546875, 0.5546875, 0.5546875, 0.5546875, 0.5546875, 0.5546875, 0.5546875, 0.2765625, 0.2765625, 0.584375, 0.5828125, 0.584375, 0.5546875, 1.0140625, 0.665625, 0.665625, 0.721875, 0.721875, 0.665625, 0.609375, 0.7765625, 0.721875, 0.2765625, 0.5, 0.665625, 0.5546875, 0.8328125, 0.721875, 0.7765625, 0.665625, 0.7765625, 0.721875, 0.665625, 0.609375, 0.721875, 0.665625, 0.94375, 0.665625, 0.665625, 0.609375, 0.2765625, 0.3546875, 0.2765625, 0.4765625, 0.5546875, 0.3328125, 0.5546875, 0.5546875, 0.5, 0.5546875, 0.5546875, 0.2765625, 0.5546875, 0.5546875, 0.221875, 0.240625, 0.5, 0.221875, 0.8328125, 0.5546875, 0.5546875, 0.5546875, 0.5546875, 0.3328125, 0.5, 0.2765625, 0.5546875, 0.5, 0.721875, 0.5, 0.5, 0.5, 0.3546875, 0.259375, 0.353125, 0.5890625],\n    avg: 0.5279276315789471\n  },\n  \"Helvetica Neue\": {\n    widths: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.278125, 0.259375, 0.4265625, 0.55625, 0.55625, 1, 0.6453125, 0.278125, 0.2703125, 0.26875, 0.353125, 0.6, 0.278125, 0.3890625, 0.278125, 0.36875, 0.55625, 0.55625, 0.55625, 0.55625, 0.55625, 0.55625, 0.55625, 0.55625, 0.55625, 0.55625, 0.278125, 0.278125, 0.6, 0.6, 0.6, 0.55625, 0.8, 0.6625, 0.6859375, 0.7234375, 0.7046875, 0.6125, 0.575, 0.759375, 0.7234375, 0.259375, 0.5203125, 0.6703125, 0.55625, 0.871875, 0.7234375, 0.7609375, 0.6484375, 0.7609375, 0.6859375, 0.6484375, 0.575, 0.7234375, 0.6140625, 0.9265625, 0.6125, 0.6484375, 0.6125, 0.259375, 0.36875, 0.259375, 0.6, 0.5, 0.25625, 0.5375, 0.59375, 0.5375, 0.59375, 0.5375, 0.2984375, 0.575, 0.55625, 0.2234375, 0.2375, 0.5203125, 0.2234375, 0.853125, 0.55625, 0.575, 0.59375, 0.59375, 0.334375, 0.5, 0.315625, 0.55625, 0.5, 0.759375, 0.51875, 0.5, 0.48125, 0.334375, 0.2234375, 0.334375, 0.6],\n    avg: 0.5279440789473684\n  },\n  \"Hoefler Text\": {\n    widths: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.2359375, 0.2234375, 0.3921875, 0.7125, 0.49375, 0.8859375, 0.771875, 0.2125, 0.3078125, 0.309375, 0.375, 0.4234375, 0.234375, 0.3125, 0.234375, 0.3, 0.5828125, 0.365625, 0.434375, 0.3921875, 0.5234375, 0.3984375, 0.5125, 0.4328125, 0.46875, 0.5125, 0.234375, 0.234375, 0.515625, 0.4234375, 0.515625, 0.340625, 0.7609375, 0.7359375, 0.6359375, 0.721875, 0.8125, 0.6375, 0.5875, 0.8078125, 0.853125, 0.4296875, 0.503125, 0.78125, 0.609375, 0.9609375, 0.8515625, 0.8140625, 0.6125, 0.8140625, 0.71875, 0.49375, 0.7125, 0.76875, 0.771875, 1.125, 0.7765625, 0.7734375, 0.65625, 0.321875, 0.3078125, 0.321875, 0.3546875, 0.5, 0.3375, 0.446875, 0.5359375, 0.45, 0.5296875, 0.4546875, 0.425, 0.4921875, 0.54375, 0.2671875, 0.240625, 0.5390625, 0.25, 0.815625, 0.5375, 0.5234375, 0.5390625, 0.5421875, 0.365625, 0.36875, 0.35625, 0.5171875, 0.5015625, 0.75, 0.5, 0.509375, 0.44375, 0.2421875, 0.14375, 0.2421875, 0.35],\n    avg: 0.5116447368421051\n  },\n  \"Montserrat\": {\n    widths: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.2625, 0.2609375, 0.3734375, 0.696875, 0.615625, 0.8296875, 0.6703125, 0.203125, 0.3296875, 0.3296875, 0.3875, 0.575, 0.2125, 0.3828125, 0.2125, 0.3953125, 0.6625, 0.3625, 0.56875, 0.5640625, 0.6625, 0.5671875, 0.609375, 0.5890625, 0.6390625, 0.609375, 0.2125, 0.2125, 0.575, 0.575, 0.575, 0.5671875, 1.034375, 0.7171875, 0.7546875, 0.7203125, 0.8265625, 0.6703125, 0.634375, 0.7734375, 0.8140625, 0.303125, 0.5078125, 0.7125, 0.5890625, 0.95625, 0.8140625, 0.8390625, 0.71875, 0.8390625, 0.7234375, 0.615625, 0.575, 0.7921875, 0.6984375, 1.1125, 0.65625, 0.6359375, 0.6515625, 0.31875, 0.396875, 0.31875, 0.5765625, 0.5, 0.6, 0.590625, 0.678125, 0.5640625, 0.678125, 0.6046875, 0.375, 0.6875, 0.678125, 0.2703125, 0.365625, 0.6015625, 0.2703125, 1.0625, 0.678125, 0.628125, 0.678125, 0.678125, 0.4015625, 0.4890625, 0.40625, 0.6734375, 0.5421875, 0.8796875, 0.534375, 0.5671875, 0.5125, 0.334375, 0.2953125, 0.334375, 0.575],\n    avg: 0.571792763157895\n  },\n  monospace: {\n    widths: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5984375, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6078125, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.61875, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.615625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6140625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625, 0.6015625],\n    avg: 0.6020559210526316\n  },\n  Overpass: {\n    widths: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.2296875, 0.2765625, 0.4203125, 0.68125, 0.584375, 0.8515625, 0.7015625, 0.2203125, 0.3453125, 0.3453125, 0.53125, 0.63125, 0.2234375, 0.3953125, 0.2234375, 0.509375, 0.65, 0.4046875, 0.6171875, 0.60625, 0.6484375, 0.60625, 0.6015625, 0.5375, 0.615625, 0.6015625, 0.2234375, 0.2234375, 0.63125, 0.63125, 0.63125, 0.5015625, 0.8203125, 0.696875, 0.6671875, 0.65, 0.6859375, 0.6015625, 0.559375, 0.690625, 0.7078125, 0.2953125, 0.565625, 0.678125, 0.58125, 0.8046875, 0.7109375, 0.740625, 0.6421875, 0.740625, 0.6765625, 0.6046875, 0.590625, 0.696875, 0.6640625, 0.853125, 0.65, 0.6671875, 0.6625, 0.3734375, 0.509375, 0.3734375, 0.63125, 0.5125, 0.4, 0.5328125, 0.5625, 0.51875, 0.5625, 0.546875, 0.3359375, 0.5625, 0.565625, 0.25625, 0.3203125, 0.55, 0.265625, 0.85, 0.565625, 0.5671875, 0.5625, 0.5625, 0.4046875, 0.4765625, 0.3796875, 0.565625, 0.521875, 0.7265625, 0.53125, 0.5390625, 0.5125, 0.3671875, 0.275, 0.3671875, 0.63125],\n    avg: 0.5430756578947369\n  },\n  Palatino: {\n    widths: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.25, 0.278125, 0.371875, 0.60625, 0.5, 0.840625, 0.778125, 0.209375, 0.334375, 0.334375, 0.390625, 0.60625, 0.2578125, 0.334375, 0.25, 0.60625, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.25, 0.25, 0.60625, 0.60625, 0.60625, 0.4453125, 0.7484375, 0.778125, 0.6109375, 0.709375, 0.775, 0.6109375, 0.55625, 0.7640625, 0.8328125, 0.3375, 0.346875, 0.7265625, 0.6109375, 0.946875, 0.83125, 0.7875, 0.6046875, 0.7875, 0.66875, 0.525, 0.6140625, 0.778125, 0.7234375, 1, 0.6671875, 0.6671875, 0.6671875, 0.334375, 0.60625, 0.334375, 0.60625, 0.5, 0.334375, 0.5, 0.565625, 0.4453125, 0.6109375, 0.4796875, 0.340625, 0.55625, 0.5828125, 0.2921875, 0.2671875, 0.5640625, 0.2921875, 0.8828125, 0.5828125, 0.546875, 0.6015625, 0.5609375, 0.3953125, 0.425, 0.3265625, 0.603125, 0.565625, 0.834375, 0.5171875, 0.55625, 0.5, 0.334375, 0.60625, 0.334375, 0.60625],\n    avg: 0.5408552631578947\n  },\n  \"RedHatText\": {\n    widths: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.2328125, 0.2203125, 0.35625, 0.6890625, 0.55, 0.7390625, 0.6703125, 0.2140625, 0.4015625, 0.4015625, 0.4546875, 0.53125, 0.2203125, 0.45625, 0.2203125, 0.515625, 0.6609375, 0.3078125, 0.5484375, 0.5875, 0.61875, 0.5703125, 0.6203125, 0.559375, 0.6140625, 0.6203125, 0.2203125, 0.2234375, 0.465625, 0.534375, 0.465625, 0.5125, 0.7671875, 0.6609375, 0.6703125, 0.7265625, 0.728125, 0.6203125, 0.6109375, 0.8, 0.73125, 0.253125, 0.6, 0.6125, 0.6078125, 0.8625, 0.7390625, 0.8109375, 0.6546875, 0.809375, 0.6484375, 0.6234375, 0.6171875, 0.7125, 0.6609375, 0.8984375, 0.6546875, 0.646875, 0.60625, 0.3625, 0.5203125, 0.3625, 0.540625, 0.4609375, 0.5234375, 0.5265625, 0.584375, 0.509375, 0.5828125, 0.5578125, 0.3703125, 0.5828125, 0.553125, 0.2234375, 0.24375, 0.4890625, 0.2234375, 0.8453125, 0.553125, 0.58125, 0.584375, 0.5828125, 0.353125, 0.453125, 0.378125, 0.553125, 0.5015625, 0.6984375, 0.4875, 0.4984375, 0.459375, 0.3953125, 0.2921875, 0.3953125, 0.58125],\n    avg: 0.5341940789473685\n  },\n  \"sans-serif\": {\n    widths: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.278125, 0.278125, 0.35625, 0.55625, 0.55625, 0.890625, 0.6671875, 0.1921875, 0.334375, 0.334375, 0.390625, 0.584375, 0.278125, 0.334375, 0.278125, 0.303125, 0.55625, 0.55625, 0.55625, 0.55625, 0.55625, 0.55625, 0.55625, 0.55625, 0.55625, 0.55625, 0.278125, 0.278125, 0.5859375, 0.584375, 0.5859375, 0.55625, 1.015625, 0.6671875, 0.6671875, 0.7234375, 0.7234375, 0.6671875, 0.6109375, 0.778125, 0.7234375, 0.278125, 0.5, 0.6671875, 0.55625, 0.834375, 0.7234375, 0.778125, 0.6671875, 0.778125, 0.7234375, 0.6671875, 0.6109375, 0.7234375, 0.6671875, 0.9453125, 0.6671875, 0.6671875, 0.6109375, 0.278125, 0.35625, 0.278125, 0.478125, 0.55625, 0.334375, 0.55625, 0.55625, 0.5, 0.55625, 0.55625, 0.278125, 0.55625, 0.55625, 0.2234375, 0.2421875, 0.5, 0.2234375, 0.834375, 0.55625, 0.55625, 0.55625, 0.55625, 0.334375, 0.5, 0.278125, 0.55625, 0.5, 0.7234375, 0.5, 0.5, 0.5, 0.35625, 0.2609375, 0.3546875, 0.590625],\n    avg: 0.5293256578947368\n  },\n  Seravek: {\n    widths: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.215625, 0.296875, 0.4171875, 0.6734375, 0.4953125, 0.9125, 0.740625, 0.2421875, 0.3375, 0.3375, 0.409375, 0.60625, 0.2609375, 0.35625, 0.25625, 0.41875, 0.5921875, 0.3515625, 0.475, 0.4875, 0.5375, 0.509375, 0.5484375, 0.4546875, 0.5421875, 0.5484375, 0.25625, 0.2546875, 0.5875, 0.6171875, 0.5875, 0.4578125, 0.8140625, 0.6765625, 0.5703125, 0.6109375, 0.684375, 0.5109375, 0.4953125, 0.678125, 0.6859375, 0.2625, 0.2625, 0.5859375, 0.4734375, 0.846875, 0.709375, 0.740625, 0.509375, 0.740625, 0.584375, 0.5015625, 0.528125, 0.675, 0.5953125, 0.9453125, 0.596875, 0.540625, 0.540625, 0.359375, 0.4203125, 0.359375, 0.5109375, 0.421875, 0.4046875, 0.5015625, 0.5421875, 0.446875, 0.5453125, 0.484375, 0.38125, 0.5140625, 0.5546875, 0.240625, 0.2640625, 0.490625, 0.2765625, 0.8625, 0.5546875, 0.546875, 0.5453125, 0.5453125, 0.3625, 0.41875, 0.3890625, 0.5453125, 0.4703125, 0.7546875, 0.4921875, 0.4609375, 0.453125, 0.4015625, 0.2640625, 0.4015625, 0.58125],\n    avg: 0.5044078947368421\n  },\n  serif: {\n    widths: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.2484375, 0.334375, 0.409375, 0.5, 0.5, 0.834375, 0.778125, 0.18125, 0.334375, 0.334375, 0.5, 0.5640625, 0.25, 0.334375, 0.25, 0.278125, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.278125, 0.278125, 0.5640625, 0.5640625, 0.5640625, 0.4453125, 0.921875, 0.7234375, 0.6671875, 0.6671875, 0.7234375, 0.6109375, 0.55625, 0.7234375, 0.7234375, 0.334375, 0.390625, 0.7234375, 0.6109375, 0.890625, 0.7234375, 0.7234375, 0.55625, 0.7234375, 0.6671875, 0.55625, 0.6109375, 0.7234375, 0.7234375, 0.9453125, 0.7234375, 0.7234375, 0.6109375, 0.334375, 0.340625, 0.334375, 0.4703125, 0.5, 0.3453125, 0.4453125, 0.5, 0.4453125, 0.5, 0.4453125, 0.3828125, 0.5, 0.5, 0.278125, 0.3359375, 0.5, 0.278125, 0.778125, 0.5, 0.5, 0.5, 0.5, 0.3375, 0.390625, 0.2796875, 0.5, 0.5, 0.7234375, 0.5, 0.5, 0.4453125, 0.48125, 0.2015625, 0.48125, 0.5421875],\n    avg: 0.5126315789473684\n  },\n  Tahoma: {\n    widths: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.3109375, 0.3328125, 0.4015625, 0.728125, 0.546875, 0.9765625, 0.70625, 0.2109375, 0.3828125, 0.3828125, 0.546875, 0.728125, 0.303125, 0.3640625, 0.303125, 0.3953125, 0.546875, 0.546875, 0.546875, 0.546875, 0.546875, 0.546875, 0.546875, 0.546875, 0.546875, 0.546875, 0.3546875, 0.3546875, 0.728125, 0.728125, 0.728125, 0.475, 0.909375, 0.6109375, 0.590625, 0.6015625, 0.6796875, 0.5625, 0.521875, 0.66875, 0.6765625, 0.3734375, 0.4171875, 0.6046875, 0.4984375, 0.771875, 0.66875, 0.7078125, 0.5515625, 0.7078125, 0.6375, 0.5578125, 0.5875, 0.65625, 0.60625, 0.903125, 0.58125, 0.5890625, 0.559375, 0.3828125, 0.39375, 0.3828125, 0.728125, 0.5625, 0.546875, 0.525, 0.553125, 0.4625, 0.553125, 0.5265625, 0.3546875, 0.553125, 0.5578125, 0.2296875, 0.328125, 0.51875, 0.2296875, 0.840625, 0.5578125, 0.54375, 0.553125, 0.553125, 0.3609375, 0.446875, 0.3359375, 0.5578125, 0.4984375, 0.7421875, 0.4953125, 0.4984375, 0.4453125, 0.48125, 0.3828125, 0.48125, 0.728125],\n    avg: 0.5384374999999998\n  },\n  \"Times New Roman\": {\n    widths: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.2484375, 0.334375, 0.409375, 0.5, 0.5, 0.834375, 0.778125, 0.18125, 0.334375, 0.334375, 0.5, 0.5640625, 0.25, 0.334375, 0.25, 0.28125, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.278125, 0.278125, 0.5640625, 0.5640625, 0.5640625, 0.4453125, 0.921875, 0.7234375, 0.6671875, 0.6671875, 0.7234375, 0.6109375, 0.55625, 0.7234375, 0.7234375, 0.334375, 0.390625, 0.73125, 0.6109375, 0.890625, 0.7375, 0.7234375, 0.55625, 0.7234375, 0.6765625, 0.55625, 0.6109375, 0.7234375, 0.7234375, 0.9453125, 0.7234375, 0.7234375, 0.6109375, 0.334375, 0.28125, 0.334375, 0.4703125, 0.51875, 0.334375, 0.4453125, 0.503125, 0.4453125, 0.503125, 0.4453125, 0.4359375, 0.5, 0.5, 0.278125, 0.35625, 0.50625, 0.278125, 0.778125, 0.5, 0.5, 0.5046875, 0.5, 0.340625, 0.390625, 0.2796875, 0.5, 0.5, 0.7234375, 0.5, 0.5, 0.4453125, 0.48125, 0.2015625, 0.48125, 0.5421875],\n    avg: 0.5134375\n  },\n  \"Trebuchet MS\": {\n    widths: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.3015625, 0.3671875, 0.325, 0.53125, 0.525, 0.6015625, 0.70625, 0.1609375, 0.3671875, 0.3671875, 0.3671875, 0.525, 0.3671875, 0.3671875, 0.3671875, 0.525, 0.525, 0.525, 0.525, 0.525, 0.525, 0.525, 0.525, 0.525, 0.525, 0.525, 0.3671875, 0.3671875, 0.525, 0.525, 0.525, 0.3671875, 0.771875, 0.590625, 0.5671875, 0.5984375, 0.6140625, 0.5359375, 0.525, 0.6765625, 0.6546875, 0.2796875, 0.4765625, 0.5765625, 0.5078125, 0.7109375, 0.6390625, 0.675, 0.5578125, 0.7421875, 0.5828125, 0.48125, 0.58125, 0.6484375, 0.5875, 0.853125, 0.5578125, 0.5703125, 0.5515625, 0.3671875, 0.3578125, 0.3671875, 0.525, 0.53125, 0.525, 0.5265625, 0.5578125, 0.4953125, 0.5578125, 0.546875, 0.375, 0.503125, 0.546875, 0.2859375, 0.3671875, 0.5046875, 0.2953125, 0.83125, 0.546875, 0.5375, 0.5578125, 0.5578125, 0.3890625, 0.40625, 0.396875, 0.546875, 0.490625, 0.7453125, 0.5015625, 0.49375, 0.475, 0.3671875, 0.525, 0.3671875, 0.525],\n    avg: 0.5085197368421052\n  },\n  Verdana: {\n    widths: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.35, 0.39375, 0.459375, 0.81875, 0.6359375, 1.0765625, 0.759375, 0.26875, 0.4546875, 0.4546875, 0.6359375, 0.81875, 0.3640625, 0.4546875, 0.3640625, 0.4703125, 0.6359375, 0.6359375, 0.6359375, 0.6359375, 0.6359375, 0.6359375, 0.6359375, 0.6359375, 0.6359375, 0.6359375, 0.4546875, 0.4546875, 0.81875, 0.81875, 0.81875, 0.546875, 1, 0.684375, 0.6859375, 0.6984375, 0.771875, 0.6328125, 0.575, 0.7765625, 0.7515625, 0.421875, 0.4546875, 0.69375, 0.5578125, 0.84375, 0.7484375, 0.7875, 0.603125, 0.7875, 0.7, 0.684375, 0.6171875, 0.7328125, 0.684375, 0.9890625, 0.6859375, 0.615625, 0.6859375, 0.4546875, 0.46875, 0.4546875, 0.81875, 0.6421875, 0.6359375, 0.6015625, 0.6234375, 0.521875, 0.6234375, 0.596875, 0.384375, 0.6234375, 0.6328125, 0.275, 0.3765625, 0.5921875, 0.275, 0.9734375, 0.6328125, 0.6078125, 0.6234375, 0.6234375, 0.43125, 0.521875, 0.3953125, 0.6328125, 0.5921875, 0.81875, 0.5921875, 0.5921875, 0.5265625, 0.6359375, 0.4546875, 0.6359375, 0.81875],\n    avg: 0.6171875000000003\n  }\n}; // https://developer.mozilla.org/en/docs/Web/CSS/length\n// Absolute sizes in pixels for obsolete measurement units.\n\nvar absoluteMeasurementUnitsToPixels = {\n  mm: 3.8,\n  sm: 38,\n  pt: 1.33,\n  pc: 16,\n  in: 96,\n  px: 1\n};\nvar relativeMeasurementUnitsCoef = {\n  em: 1,\n  ex: 0.5\n};\nvar coefficients = {\n  heightOverlapCoef: 1.05,\n  // Coefficient for height value to prevent overlap.\n  lineCapitalCoef: 1.15 // Coefficient for height value. Reserve space for capital chars.\n\n};\nvar defaultStyle = {\n  lineHeight: 1,\n  letterSpacing: \"0px\",\n  fontSize: 0,\n  angle: 0,\n  fontFamily: \"\"\n};\n\nvar _degreeToRadian = function (angle) {\n  return angle * Math.PI / 180;\n};\n\nvar _getFontData = function (fontFamily) {\n  var possibleFonts = fontFamily.split(\",\").map(function (f) {\n    return f.replace(/'|\"/g, \"\");\n  });\n  var fontMatch = possibleFonts.find(function (f) {\n    return fonts[f];\n  }) || \"Helvetica\";\n  return fonts[fontMatch];\n};\n\nvar _splitToLines = function (text) {\n  return Array.isArray(text) ? text : text.toString().split(/\\r\\n|\\r|\\n/g);\n};\n\nvar _getSizeWithRotate = function (axisSize, dependentSize, angle) {\n  var angleInRadian = _degreeToRadian(angle);\n\n  return Math.abs(Math.cos(angleInRadian) * axisSize) + Math.abs(Math.sin(angleInRadian) * dependentSize);\n};\n/**\n * Convert length-type parameters from specific measurement units to pixels\n * @param  {string} length Css length string value.\n * @param  {number} fontSize Current text font-size.\n * @returns {number} Approximate Css length in pixels.\n */\n\n\nexport var convertLengthToPixels = function (length, fontSize) {\n  var _length$match;\n\n  var attribute = (_length$match = length.match(/[a-zA-Z%]+/)) === null || _length$match === void 0 ? void 0 : _length$match[0];\n  var value = Number(length.match(/[0-9.,]+/));\n  var result;\n\n  if (!attribute) {\n    result = value || 0;\n  } else if (absoluteMeasurementUnitsToPixels.hasOwnProperty(attribute)) {\n    result = value * absoluteMeasurementUnitsToPixels[attribute];\n  } else if (relativeMeasurementUnitsCoef.hasOwnProperty(attribute)) {\n    result = (fontSize ? value * fontSize : value * defaultStyle.fontSize) * relativeMeasurementUnitsCoef[attribute];\n  } else {\n    result = value;\n  }\n\n  return result;\n};\n\nvar _prepareParams = function (inputStyle, index) {\n  var lineStyle = Array.isArray(inputStyle) ? inputStyle[index] : inputStyle;\n\n  var style = _defaults({}, lineStyle, defaultStyle);\n\n  return _assign({}, style, {\n    fontFamily: style.fontFamily,\n    letterSpacing: typeof style.letterSpacing === \"number\" ? style.letterSpacing : convertLengthToPixels(String(style.letterSpacing), style.fontSize),\n    fontSize: typeof style.fontSize === \"number\" ? style.fontSize : convertLengthToPixels(String(style.fontSize))\n  });\n};\n\nvar _approximateTextWidthInternal = function (text, style) {\n  if (text === undefined || text === \"\" || text === null) {\n    return 0;\n  }\n\n  var widths = _splitToLines(text).map(function (line, index) {\n    var len = line.toString().length;\n\n    var _prepareParams2 = _prepareParams(style, index),\n        fontSize = _prepareParams2.fontSize,\n        letterSpacing = _prepareParams2.letterSpacing,\n        fontFamily = _prepareParams2.fontFamily;\n\n    var fontData = _getFontData(fontFamily);\n\n    var width = line.toString().split(\"\").map(function (c) {\n      return c.charCodeAt(0) < fontData.widths.length ? fontData.widths[c.charCodeAt(0)] : fontData.avg;\n    }).reduce(function (cur, acc) {\n      return acc + cur;\n    }, 0) * fontSize;\n    return width + letterSpacing * Math.max(len - 1, 0);\n  });\n\n  return Math.max.apply(Math, _toConsumableArray(widths));\n};\n\nvar _approximateTextHeightInternal = function (text, style) {\n  if (text === undefined || text === \"\" || text === null) {\n    return 0;\n  }\n\n  return _splitToLines(text).reduce(function (total, line, index) {\n    var lineStyle = _prepareParams(style, index);\n\n    var containsCaps = line.toString().match(/[(A-Z)(0-9)]/);\n    var height = containsCaps ? lineStyle.fontSize * coefficients.lineCapitalCoef : lineStyle.fontSize;\n    return total + lineStyle.lineHeight * height;\n  }, 0);\n};\n\nvar _approximateDimensionsInternal = function (text, style) {\n  var angle = Array.isArray(style) ? style[0] && style[0].angle : style && style.angle;\n\n  var height = _approximateTextHeightInternal(text, style);\n\n  var width = _approximateTextWidthInternal(text, style);\n\n  var widthWithRotate = angle ? _getSizeWithRotate(width, height, angle) : width;\n  var heightWithRotate = angle ? _getSizeWithRotate(height, width, angle) : height;\n  return {\n    width: widthWithRotate,\n    height: heightWithRotate * coefficients.heightOverlapCoef\n  };\n};\n\nvar _getMeasurementContainer = _memoize(function () {\n  var element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\n  element.setAttribute(\"xlink\", \"http://www.w3.org/1999/xlink\");\n  element.setAttribute(\"width\", \"300\");\n  element.setAttribute(\"height\", \"300\");\n  element.setAttribute(\"viewBox\", \"0 0 300 300\");\n  var containerElement = document.createElementNS(\"http://www.w3.org/2000/svg\", \"text\");\n  element.appendChild(containerElement);\n  element.style.position = \"fixed\";\n  element.style.top = \"-9999px\";\n  element.style.left = \"-9999px\";\n  document.body.appendChild(element);\n  return containerElement;\n});\n\nvar styleToKeyComponent = function (style) {\n  if (!style) {\n    return \"null\";\n  }\n\n  return \"\".concat(style.angle, \":\").concat(style.fontFamily, \":\").concat(style.fontSize, \":\").concat(style.letterSpacing, \":\").concat(style.lineHeight);\n};\n\nvar _measureDimensionsInternal = _memoize(function (text, style) {\n  var containerElement = _getMeasurementContainer();\n\n  var lines = _splitToLines(text);\n\n  var heightAcc = 0;\n\n  for (var _ref of lines.entries()) {\n    var _ref2 = _slicedToArray(_ref, 2);\n\n    var i = _ref2[0];\n    var line = _ref2[1];\n    var textElement = document.createElementNS(\"http://www.w3.org/2000/svg\", \"tspan\");\n\n    var params = _prepareParams(style, i);\n\n    textElement.style.fontFamily = params.fontFamily;\n    textElement.style.fontSize = \"\".concat(params.fontSize, \"px\");\n    textElement.style.lineHeight = params.lineHeight;\n    textElement.style.fontFamily = params.fontFamily;\n    textElement.style.letterSpacing = params.letterSpacing;\n    textElement.textContent = line;\n    textElement.setAttribute(\"x\", \"0\");\n    textElement.setAttribute(\"y\", \"\".concat(heightAcc));\n    containerElement.appendChild(textElement);\n    heightAcc += params.lineHeight * textElement.getBoundingClientRect().height;\n  }\n\n  var _containerElement$get = containerElement.getBoundingClientRect(),\n      width = _containerElement$get.width;\n\n  containerElement.innerHTML = \"\";\n  return {\n    width: style !== null && style !== void 0 && style.angle ? _getSizeWithRotate(width, heightAcc, style === null || style === void 0 ? void 0 : style.angle) : width,\n    height: style !== null && style !== void 0 && style.angle ? _getSizeWithRotate(heightAcc, width, style === null || style === void 0 ? void 0 : style.angle) : heightAcc\n  };\n}, function (text, style) {\n  var totalText = Array.isArray(text) ? text.join() : text;\n  var totalStyle = Array.isArray(style) ? style.map(styleToKeyComponent).join() : styleToKeyComponent(style);\n  return \"\".concat(totalText, \"::\").concat(totalStyle);\n});\n\n// Stubbable implementation.\nexport var _approximateTextSizeInternal = {\n  impl: function (text, style) {\n    var __debugForceApproximate = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n    // Attempt to first measure the element in DOM. If there is no DOM, fallback\n    // to the less accurate approximation algorithm.\n    var isClient = typeof window !== \"undefined\" && typeof window.document !== \"undefined\" && typeof window.document.createElement !== \"undefined\";\n\n    if (!isClient || __debugForceApproximate) {\n      return _approximateDimensionsInternal(text, style);\n    }\n\n    return _measureDimensionsInternal(text, style);\n  }\n};\n/**\n * Predict text size by font params.\n * @param {string|string[]} text Content for width calculation.\n * @param {Object} style Text styles, ,fontFamily, fontSize, etc.\n * @param {string} style.fontFamily Text fontFamily.\n * @param {(number|string)} style.fontSize Text fontSize.\n * @param {number} style.angle Text rotate angle.\n * @param {string} style.letterSpacing Text letterSpacing(space between letters).\n * @param {number} style.lineHeight Line height coefficient.\n * @returns {number} Approximate text label height.\n */\n\nexport var approximateTextSize = function (text, style) {\n  return _approximateTextSizeInternal.impl(text, style);\n};", "import _pick from \"lodash/pick\";\nimport _isFunction from \"lodash/isFunction\";\nimport _defaults from \"lodash/defaults\";\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (typeof call === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { VictoryAnimation } from \"../victory-animation/victory-animation\";\nimport * as Collection from \"../victory-util/collection\";\nimport * as Helpers from \"../victory-util/helpers\";\nimport TimerContext from \"../victory-util/timer-context\";\nimport * as Transitions from \"../victory-util/transitions\";\nimport isEqual from \"react-fast-compare\";\nexport var VictoryTransition = /*#__PURE__*/function (_React$Component) {\n  _inherits(VictoryTransition, _React$Component);\n\n  var _super = _createSuper(VictoryTransition);\n\n  function VictoryTransition(props, context) {\n    var _this;\n\n    _classCallCheck(this, VictoryTransition);\n\n    _this = _super.call(this, props, context);\n    _this.continuous = void 0;\n    _this.timer = void 0;\n    _this.transitionProps = void 0;\n    _this.state = {\n      nodesShouldLoad: false,\n      nodesDoneLoad: false\n    };\n    var child = _this.props.children;\n    var polar = child.props.polar;\n    _this.continuous = !polar && child.type && child.type.continuous === true;\n    _this.timer = _this.context.transitionTimer;\n    return _this;\n  }\n\n  _createClass(VictoryTransition, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      this.setState({\n        nodesShouldLoad: true\n      }); // eslint-disable-line react/no-did-mount-set-state\n    }\n  }, {\n    key: \"shouldComponentUpdate\",\n    value: function shouldComponentUpdate(nextProps) {\n      var _this2 = this;\n\n      if (!isEqual(this.props, nextProps)) {\n        this.timer.bypassAnimation();\n        this.setState(this.getTransitionState(this.props, nextProps), function () {\n          return _this2.timer.resumeAnimation();\n        });\n      }\n\n      return true;\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      this.timer.stop();\n    }\n  }, {\n    key: \"getTransitionState\",\n    value: function getTransitionState(props, nextProps) {\n      var animate = props.animate;\n\n      if (!animate) {\n        return {};\n      } else if (animate.parentState) {\n        var state = animate.parentState;\n        var oldProps = state.nodesWillExit ? props : null;\n        return {\n          oldProps: oldProps,\n          nextProps: nextProps\n        };\n      }\n\n      var oldChildren = React.Children.toArray(props.children);\n      var nextChildren = React.Children.toArray(nextProps.children);\n\n      var _Transitions$getIniti = Transitions.getInitialTransitionState(oldChildren, nextChildren),\n          nodesWillExit = _Transitions$getIniti.nodesWillExit,\n          nodesWillEnter = _Transitions$getIniti.nodesWillEnter,\n          childrenTransitions = _Transitions$getIniti.childrenTransitions,\n          nodesShouldEnter = _Transitions$getIniti.nodesShouldEnter;\n\n      return {\n        nodesWillExit: nodesWillExit,\n        nodesWillEnter: nodesWillEnter,\n        childrenTransitions: childrenTransitions,\n        nodesShouldEnter: nodesShouldEnter,\n        oldProps: nodesWillExit ? props : null,\n        nextProps: nextProps\n      };\n    }\n  }, {\n    key: \"getDomainFromChildren\",\n    value: function getDomainFromChildren(props, axis) {\n      var getChildDomains = function (children) {\n        return children.reduce(function (memo, child) {\n          if (child.type && _isFunction(child.type.getDomain)) {\n            var childDomain = child.props && child.type.getDomain(child.props, axis);\n            return childDomain ? memo.concat(childDomain) : memo;\n          } else if (child.props && child.props.children) {\n            return memo.concat(getChildDomains(React.Children.toArray(child.props.children)));\n          }\n\n          return memo;\n        }, []);\n      };\n\n      var child = React.Children.toArray(props.children)[0];\n      var childProps = child.props || {};\n      var domain = Array.isArray(childProps.domain) ? childProps.domain : childProps.domain && childProps.domain[axis];\n\n      if (!childProps.children && domain) {\n        return domain;\n      }\n\n      var childDomains = getChildDomains([child]);\n      return childDomains.length === 0 ? [0, 1] : [Collection.getMinValue(childDomains), Collection.getMaxValue(childDomains)];\n    }\n  }, {\n    key: \"pickProps\",\n    value: function pickProps() {\n      if (!this.state) {\n        return this.props;\n      }\n\n      return this.state.nodesWillExit ? this.state.oldProps || this.props : this.props;\n    }\n  }, {\n    key: \"pickDomainProps\",\n    value: function pickDomainProps(props) {\n      var _props$animate;\n\n      var parentState = (_props$animate = props.animate) === null || _props$animate === void 0 ? void 0 : _props$animate.parentState;\n\n      if (parentState && parentState.nodesWillExit) {\n        return this.continuous || parentState.continuous ? parentState.nextProps || this.state.nextProps || props : props;\n      }\n\n      return this.continuous && this.state.nodesWillExit ? this.state.nextProps || props : props;\n    }\n  }, {\n    key: \"getClipWidth\",\n    value: function getClipWidth(props, child) {\n      var getDefaultClipWidth = function () {\n        var range = Helpers.getRange(child.props, \"x\");\n        return range ? Math.abs(range[1] - range[0]) : props.width;\n      };\n\n      var clipWidth = this.transitionProps ? this.transitionProps.clipWidth : undefined;\n      return clipWidth !== undefined ? clipWidth : getDefaultClipWidth();\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this$props$animate,\n          _this3 = this;\n\n      var props = this.pickProps();\n      var getTransitionProps = (_this$props$animate = this.props.animate) !== null && _this$props$animate !== void 0 && _this$props$animate.getTransitions ? this.props.animate.getTransitions : Transitions.getTransitionPropsFactory(props, this.state, function (newState) {\n        return _this3.setState(newState);\n      });\n      var child = React.Children.toArray(props.children)[0];\n      var transitionProps = getTransitionProps(child);\n      this.transitionProps = transitionProps;\n      var domain = {\n        x: this.getDomainFromChildren(this.pickDomainProps(props), \"x\"),\n        y: this.getDomainFromChildren(props, \"y\")\n      };\n      var clipWidth = this.getClipWidth(props, child);\n\n      var combinedProps = _defaults({\n        domain: domain,\n        clipWidth: clipWidth\n      }, transitionProps, child.props);\n\n      var animationWhitelist = props.animationWhitelist || [];\n      var whitelist = animationWhitelist.concat([\"clipWidth\"]);\n      var propsToAnimate = whitelist.length ? _pick(combinedProps, whitelist) : combinedProps;\n      return /*#__PURE__*/React.createElement(VictoryAnimation, _extends({}, combinedProps.animate, {\n        data: propsToAnimate\n      }), function (newProps) {\n        if (child.props.groupComponent) {\n          var groupComponent = _this3.continuous ? /*#__PURE__*/React.cloneElement(child.props.groupComponent, {\n            clipWidth: newProps.clipWidth || 0\n          }) : child.props.groupComponent;\n          return /*#__PURE__*/React.cloneElement(child, _defaults({\n            animate: null,\n            animating: true,\n            groupComponent: groupComponent\n          }, newProps, combinedProps));\n        }\n\n        return /*#__PURE__*/React.cloneElement(child, _defaults({\n          animate: null,\n          animating: true\n        }, newProps, combinedProps));\n      });\n    }\n  }]);\n\n  return VictoryTransition;\n}(React.Component);\nVictoryTransition.displayName = \"VictoryTransition\";\nVictoryTransition.propTypes = {\n  animate: PropTypes.oneOfType([PropTypes.bool, PropTypes.object]),\n  animationWhitelist: PropTypes.array,\n  children: PropTypes.node\n};\nVictoryTransition.contextType = TimerContext;", "import _keys from \"lodash/keys\";\nimport _identity from \"lodash/identity\";\nimport _defaults from \"lodash/defaults\";\nimport _assign from \"lodash/assign\";\nimport React from \"react\";\n\nfunction getDatumKey(datum, idx) {\n  return (datum.key || idx).toString();\n}\n\nfunction getKeyedData(data) {\n  return data.reduce(function (keyedData, datum, idx) {\n    var key = getDatumKey(datum, idx);\n    keyedData[key] = datum;\n    return keyedData;\n  }, {});\n}\n\nfunction getKeyedDataDifference(a, b) {\n  var hasDifference = false;\n\n  var difference = _keys(a).reduce(function (_difference, key) {\n    if (!(key in b)) {\n      hasDifference = true;\n      _difference[key] = true;\n    }\n\n    return _difference;\n  }, {});\n\n  return hasDifference && difference;\n}\n/**\n * Calculate which data-points exist in oldData and not nextData -\n * these are the `exiting` data-points.  Also calculate which\n * data-points exist in nextData and not oldData - these are the\n * `entering` data-points.\n *\n * @param  {Array} oldData   this.props.data Array\n * @param  {Array} nextData  this.props.data Array\n *\n * @return {Object}          Object with `entering` and `exiting` properties.\n *                           entering[datum.key] will be true if the data is\n *                           entering, and similarly for `exiting`.\n */\n\n\nfunction getNodeTransitions(oldData, nextData) {\n  var oldDataKeyed = oldData && getKeyedData(oldData);\n  var nextDataKeyed = nextData && getKeyedData(nextData);\n  return {\n    entering: oldDataKeyed && getKeyedDataDifference(nextDataKeyed, oldDataKeyed),\n    exiting: nextDataKeyed && getKeyedDataDifference(oldDataKeyed, nextDataKeyed)\n  };\n}\n\nfunction getChildData(child) {\n  if (child.type && child.type.getData) {\n    return child.type.getData(child.props);\n  }\n\n  return child.props && child.props.data || false;\n}\n/**\n * If a parent component has animation enabled, calculate the transitions\n * for any data of any child component that supports data transitions.\n * Data transitions are defined as any two datasets where data nodes exist\n * in the first set and not the second, in the second and not the first,\n * or both.\n *\n * @param  {Children}  oldChildren   this.props.children from old props\n * @param  {Children}  nextChildren  this.props.children from next props\n *\n * @return {Object}                  Object with the following properties:\n *                                    - nodesWillExit\n *                                    - nodesWillEnter\n *                                    - childrenTransitions\n *                                    - nodesShouldEnter\n */\n\n\nexport function getInitialTransitionState(oldChildren, nextChildren) {\n  var nodesWillExit = false;\n  var nodesWillEnter = false;\n\n  var getTransition = function (oldChild, newChild) {\n    if (!newChild || oldChild.type !== newChild.type) {\n      return {};\n    }\n\n    var _ref = getNodeTransitions(getChildData(oldChild), getChildData(newChild)) || {},\n        entering = _ref.entering,\n        exiting = _ref.exiting;\n\n    nodesWillExit = nodesWillExit || !!exiting;\n    nodesWillEnter = nodesWillEnter || !!entering;\n    return {\n      entering: entering || false,\n      exiting: exiting || false\n    };\n  };\n\n  var getTransitionsFromChildren = function (old, next) {\n    return old.map(function (child, idx) {\n      if (child && child.props && child.props.children && next[idx]) {\n        return getTransitionsFromChildren(React.Children.toArray(old[idx].props.children), React.Children.toArray(next[idx].props.children));\n      } // get Transition entering and exiting nodes\n\n\n      return getTransition(child, next[idx]);\n    });\n  };\n\n  var childrenTransitions = getTransitionsFromChildren(React.Children.toArray(oldChildren), React.Children.toArray(nextChildren));\n  return {\n    nodesWillExit: nodesWillExit,\n    nodesWillEnter: nodesWillEnter,\n    childrenTransitions: childrenTransitions,\n    // TODO: This may need to be refactored for the following situation.\n    //       The component receives new props, and the data provided\n    //       is a perfect match for the previous data and domain except\n    //       for new nodes. In this case, we wouldn't want a delay before\n    //       the new nodes appear.\n    nodesShouldEnter: false\n  };\n}\n\nfunction getInitialChildProps(animate, data) {\n  var after = animate.onEnter && animate.onEnter.after ? animate.onEnter.after : _identity;\n  return {\n    data: data.map(function (datum, idx) {\n      return _assign({}, datum, after(datum, idx, data));\n    })\n  };\n} // eslint-disable-next-line max-params\n\n\nfunction getChildBeforeLoad(animate, child, data, cb) {\n  animate = _assign({}, animate, {\n    onEnd: cb\n  });\n\n  if (animate && animate.onLoad && !animate.onLoad.duration) {\n    return {\n      animate: animate,\n      data: data\n    };\n  }\n\n  var before = animate.onLoad && animate.onLoad.before ? animate.onLoad.before : _identity; // If nodes need to exit, transform them with the provided onLoad.before function.\n\n  data = data.map(function (datum, idx) {\n    return _assign({}, datum, before(datum, idx, data));\n  });\n  return {\n    animate: animate,\n    data: data,\n    clipWidth: 0\n  };\n} // eslint-disable-next-line max-params\n\n\nfunction getChildOnLoad(animate, data, cb) {\n  animate = _assign({}, animate, {\n    onEnd: cb\n  });\n\n  if (animate && animate.onLoad && !animate.onLoad.duration) {\n    return {\n      animate: animate,\n      data: data\n    };\n  }\n\n  var after = animate.onLoad && animate.onLoad.after ? animate.onLoad.after : _identity; // If nodes need to exit, transform them with the provided onLoad.after function.\n\n  data = data.map(function (datum, idx) {\n    return _assign({}, datum, after(datum, idx, data));\n  });\n  return {\n    animate: animate,\n    data: data\n  };\n} // eslint-disable-next-line max-params, max-len\n\n\nfunction getChildPropsOnExit(animate, child, data, exitingNodes, cb) {\n  // Whether or not _this_ child has exiting nodes, we want the exit-\n  // transition for all children to have the same duration, delay, etc.\n  var onExit = animate && animate.onExit;\n  animate = _assign({}, animate, onExit);\n\n  if (exitingNodes) {\n    // After the exit transition occurs, trigger the animations for\n    // nodes that are neither exiting nor entering.\n    animate.onEnd = cb;\n    var before = animate.onExit && animate.onExit.before ? animate.onExit.before : _identity; // If nodes need to exit, transform them with the provided onExit.before function.\n\n    data = data.map(function (datum, idx) {\n      var key = (datum.key || idx).toString();\n      return exitingNodes[key] ? _assign({}, datum, before(datum, idx, data)) : datum;\n    });\n  }\n\n  return {\n    animate: animate,\n    data: data\n  };\n} // eslint-disable-next-line max-params,max-len\n\n\nfunction getChildPropsBeforeEnter(animate, child, data, enteringNodes, cb) {\n  if (enteringNodes) {\n    // Perform a normal animation here, except - when it finishes - trigger\n    // the transition for entering nodes.\n    animate = _assign({}, animate, {\n      onEnd: cb\n    });\n    var before = animate.onEnter && animate.onEnter.before ? animate.onEnter.before : _identity; // We want the entering nodes to be included in the transition target\n    // domain.  However, we may not want these nodes to be displayed initially,\n    // so perform the `onEnter.before` transformation on each node.\n\n    data = data.map(function (datum, idx) {\n      var key = (datum.key || idx).toString();\n      return enteringNodes[key] ? _assign({}, datum, before(datum, idx, data)) : datum;\n    });\n  }\n\n  return {\n    animate: animate,\n    data: data\n  };\n} // eslint-disable-next-line max-params, max-len\n\n\nfunction getChildPropsOnEnter(animate, data, enteringNodes, cb) {\n  // Whether or not _this_ child has entering nodes, we want the entering-\n  // transition for all children to have the same duration, delay, etc.\n  var onEnter = animate && animate.onEnter;\n  animate = _assign({}, animate, onEnter);\n\n  if (enteringNodes) {\n    // Old nodes have been transitioned to their new values, and the\n    // domain should encompass the nodes that will now enter. So perform\n    // the `onEnter.after` transformation on each node.\n    animate.onEnd = cb;\n    var after = animate.onEnter && animate.onEnter.after ? animate.onEnter.after : _identity;\n    data = data.map(function (datum, idx) {\n      var key = getDatumKey(datum, idx);\n      return enteringNodes[key] ? _assign({}, datum, after(datum, idx, data)) : datum;\n    });\n  }\n\n  return {\n    animate: animate,\n    data: data\n  };\n}\n/**\n * getTransitionPropsFactory - putting the Java in JavaScript.  This will return a\n * function that returns prop transformations for a child, given that child's props\n * and its index in the parent's children array.\n *\n * In particular, this will include an `animate` object that is set appropriately\n * so that each child will be synchronized for each stage of a transition\n * animation.  It will also include a transformed `data` object, where each datum\n * is transformed by `animate.onExit` and `animate.onEnter` `before` and `after`\n * functions.\n *\n * @param  {Object}  props       `this.props` for the parent component.\n * @param  {Object} state        `this.state` for the parent component.\n * @param  {Function} setState    Function that, when called, will `this.setState` on\n *                                 the parent component with the provided object.\n *\n * @return {Function}              Child-prop transformation function.\n */\n\n\nexport function getTransitionPropsFactory(props, state, setState) {\n  var nodesWillExit = state && state.nodesWillExit;\n  var nodesWillEnter = state && state.nodesWillEnter;\n  var nodesShouldEnter = state && state.nodesShouldEnter;\n  var nodesShouldLoad = state && state.nodesShouldLoad;\n  var nodesDoneLoad = state && state.nodesDoneLoad;\n  var childrenTransitions = state && state.childrenTransitions || [];\n  var transitionDurations = {\n    enter: props.animate && props.animate.onEnter && props.animate.onEnter.duration,\n    exit: props.animate && props.animate.onExit && props.animate.onExit.duration,\n    load: props.animate && props.animate.onLoad && props.animate.onLoad.duration,\n    move: props.animate && props.animate.duration\n  };\n\n  var onLoad = function (child, data, animate) {\n    if (nodesShouldLoad) {\n      return getChildOnLoad(animate, data, function () {\n        setState({\n          nodesShouldLoad: false,\n          nodesDoneLoad: true\n        });\n      });\n    }\n\n    return getChildBeforeLoad(animate, child, data, function () {\n      setState({\n        nodesDoneLoad: true\n      });\n    });\n  }; // eslint-disable-next-line max-params\n\n\n  var onExit = function (nodes, child, data, animate) {\n    return getChildPropsOnExit(animate, child, data, nodes, function () {\n      setState({\n        nodesWillExit: false\n      });\n    });\n  }; // eslint-disable-next-line max-params\n\n\n  var onEnter = function (nodes, child, data, animate) {\n    if (nodesShouldEnter) {\n      return getChildPropsOnEnter(animate, data, nodes, function () {\n        setState({\n          nodesWillEnter: false\n        });\n      });\n    }\n\n    return getChildPropsBeforeEnter(animate, child, data, nodes, function () {\n      setState({\n        nodesShouldEnter: true\n      });\n    });\n  };\n\n  var getChildTransitionDuration = function (child, type) {\n    var animate = child.props.animate;\n\n    if (!child.type) {\n      return {};\n    }\n\n    var defaultTransitions = child.props && child.props.polar ? child.type.defaultPolarTransitions || child.type.defaultTransitions : child.type.defaultTransitions;\n\n    if (defaultTransitions) {\n      var animationDuration = animate[type] && animate[type].duration;\n      return animationDuration !== undefined ? animationDuration : defaultTransitions[type] && defaultTransitions[type].duration;\n    }\n\n    return {};\n  }; // eslint-disable-next-line max-statements, complexity, max-len\n\n\n  return function getTransitionProps(child, index) {\n    var data = getChildData(child) || [];\n\n    var animate = _defaults({}, props.animate, child.props.animate);\n\n    var defaultTransitions = child.props.polar ? child.type.defaultPolarTransitions || child.type.defaultTransitions : child.type.defaultTransitions;\n    animate.onExit = _defaults({}, animate.onExit, defaultTransitions && defaultTransitions.onExit);\n    animate.onEnter = _defaults({}, animate.onEnter, defaultTransitions && defaultTransitions.onEnter);\n    animate.onLoad = _defaults({}, animate.onLoad, defaultTransitions && defaultTransitions.onLoad);\n    var childTransitions = childrenTransitions[index] || childrenTransitions[0];\n\n    if (!nodesDoneLoad) {\n      // should do onLoad animation\n      var load = transitionDurations.load !== undefined ? transitionDurations.load : getChildTransitionDuration(child, \"onLoad\");\n      var animation = {\n        duration: load\n      };\n      return onLoad(child, data, _assign({}, animate, animation));\n    } else if (nodesWillExit) {\n      var exitingNodes = childTransitions && childTransitions.exiting;\n      var exit = transitionDurations.exit !== undefined ? transitionDurations.exit : getChildTransitionDuration(child, \"onExit\"); // if nodesWillExit, but this child has no exiting nodes, set a delay instead of a duration\n\n      var _animation = exitingNodes ? {\n        duration: exit\n      } : {\n        delay: exit\n      };\n\n      return onExit(exitingNodes, child, data, _assign({}, animate, _animation));\n    } else if (nodesWillEnter) {\n      var enteringNodes = childTransitions && childTransitions.entering;\n      var enter = transitionDurations.enter !== undefined ? transitionDurations.enter : getChildTransitionDuration(child, \"onEnter\");\n      var move = transitionDurations.move !== undefined ? transitionDurations.move : child.props.animate && child.props.animate.duration;\n      var _animation2 = {\n        duration: nodesShouldEnter && enteringNodes ? enter : move\n      };\n      return onEnter(enteringNodes, child, data, _assign({}, animate, _animation2));\n    } else if (!state && animate && animate.onExit) {\n      // This is the initial render, and nodes may enter when props change. Because\n      // animation interpolation is determined by old- and next- props, data may need\n      // to be augmented with certain properties.\n      //\n      // For example, it may be desired that exiting nodes go from `opacity: 1` to\n      // `opacity: 0`. Without setting this on a per-datum basis, the interpolation\n      // might go from `opacity: undefined` to `opacity: 0`, which would result in\n      // interpolated `opacity: NaN` values.\n      //\n      return getInitialChildProps(animate, data);\n    }\n\n    return {\n      animate: animate,\n      data: data\n    };\n  };\n}", "import _uniqueId from \"lodash/uniqueId\";\nimport _isObject from \"lodash/isObject\";\nimport _defaults from \"lodash/defaults\";\nimport _assign from \"lodash/assign\";\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (typeof call === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport * as CustomPropTypes from \"../victory-util/prop-types\";\nimport * as Helpers from \"../victory-util/helpers\";\nimport * as UserProps from \"../victory-util/user-props\";\nimport { ClipPath } from \"../victory-primitives/clip-path\";\nimport { Circle } from \"../victory-primitives/circle\";\nimport { Rect } from \"../victory-primitives/rect\";\nexport var VictoryClipContainer = /*#__PURE__*/function (_React$Component) {\n  _inherits(VictoryClipContainer, _React$Component);\n\n  var _super = _createSuper(VictoryClipContainer);\n\n  function VictoryClipContainer(props) {\n    var _this;\n\n    _classCallCheck(this, VictoryClipContainer);\n\n    _this = _super.call(this, props);\n    _this.clipId = void 0;\n    _this.clipId = !_isObject(props) || props.clipId === undefined ? _uniqueId(\"victory-clip-\") : props.clipId;\n    return _this;\n  }\n\n  _createClass(VictoryClipContainer, [{\n    key: \"calculateAttributes\",\n    value: function calculateAttributes(props) {\n      var polar = props.polar,\n          origin = props.origin,\n          _props$clipWidth = props.clipWidth,\n          clipWidth = _props$clipWidth === void 0 ? 0 : _props$clipWidth,\n          _props$clipHeight = props.clipHeight,\n          clipHeight = _props$clipHeight === void 0 ? 0 : _props$clipHeight,\n          _props$translateX = props.translateX,\n          translateX = _props$translateX === void 0 ? 0 : _props$translateX,\n          _props$translateY = props.translateY,\n          translateY = _props$translateY === void 0 ? 0 : _props$translateY;\n      var clipPadding = Helpers.getPadding({\n        padding: props.clipPadding\n      });\n      var radius = props.radius || Helpers.getRadius(props);\n      return {\n        x: (polar ? origin.x : translateX) - clipPadding.left,\n        y: (polar ? origin.y : translateY) - clipPadding.top,\n        width: Math.max((polar ? radius : clipWidth) + clipPadding.left + clipPadding.right, 0),\n        height: Math.max((polar ? radius : clipHeight) + clipPadding.top + clipPadding.bottom, 0)\n      };\n    }\n  }, {\n    key: \"renderClippedGroup\",\n    value: function renderClippedGroup(props, clipId) {\n      var userProps = UserProps.getSafeUserProps(props);\n      var style = props.style,\n          events = props.events,\n          transform = props.transform,\n          children = props.children,\n          className = props.className,\n          groupComponent = props.groupComponent,\n          tabIndex = props.tabIndex;\n      var clipComponent = this.renderClipComponent(props, clipId);\n\n      var groupProps = _assign({\n        className: className,\n        style: style,\n        transform: transform,\n        key: \"clipped-group-\".concat(clipId),\n        clipPath: \"url(#\".concat(clipId, \")\")\n      }, events);\n\n      return /*#__PURE__*/React.cloneElement(groupComponent, _objectSpread(_objectSpread({}, groupProps), {}, {\n        tabIndex: tabIndex\n      }, userProps), [clipComponent].concat(_toConsumableArray(React.Children.toArray(children))));\n    }\n  }, {\n    key: \"renderGroup\",\n    value: function renderGroup(props) {\n      var style = props.style,\n          events = props.events,\n          transform = props.transform,\n          children = props.children,\n          className = props.className,\n          groupComponent = props.groupComponent,\n          tabIndex = props.tabIndex;\n      return /*#__PURE__*/React.cloneElement(groupComponent, _assign({\n        className: className,\n        style: style,\n        transform: transform,\n        \"aria-label\": props[\"aria-label\"],\n        tabIndex: tabIndex\n      }, events), children);\n    }\n  }, {\n    key: \"renderClipComponent\",\n    value: function renderClipComponent(props, clipId) {\n      var polar = props.polar,\n          origin = props.origin,\n          _props$clipWidth2 = props.clipWidth,\n          clipWidth = _props$clipWidth2 === void 0 ? 0 : _props$clipWidth2,\n          _props$clipHeight2 = props.clipHeight,\n          clipHeight = _props$clipHeight2 === void 0 ? 0 : _props$clipHeight2,\n          _props$translateX2 = props.translateX,\n          translateX = _props$translateX2 === void 0 ? 0 : _props$translateX2,\n          _props$translateY2 = props.translateY,\n          translateY = _props$translateY2 === void 0 ? 0 : _props$translateY2,\n          circleComponent = props.circleComponent,\n          rectComponent = props.rectComponent,\n          clipPathComponent = props.clipPathComponent;\n\n      var _Helpers$getPadding = Helpers.getPadding({\n        padding: props.clipPadding\n      }),\n          top = _Helpers$getPadding.top,\n          bottom = _Helpers$getPadding.bottom,\n          left = _Helpers$getPadding.left,\n          right = _Helpers$getPadding.right;\n\n      var child;\n\n      if (polar) {\n        var radius = props.radius || Helpers.getRadius(props);\n        var circleProps = {\n          r: Math.max(radius + left + right, radius + top + bottom, 0),\n          cx: origin.x - left,\n          cy: origin.y - top\n        };\n        child = /*#__PURE__*/React.cloneElement(circleComponent, circleProps);\n      } else {\n        var rectProps = {\n          x: translateX - left,\n          y: translateY - top,\n          width: Math.max(clipWidth + left + right, 0),\n          height: Math.max(clipHeight + top + bottom, 0)\n        };\n        child = /*#__PURE__*/React.cloneElement(rectComponent, rectProps);\n      }\n\n      return /*#__PURE__*/React.cloneElement(clipPathComponent, _assign({\n        key: \"clip-path-\".concat(clipId)\n      }, props, {\n        clipId: clipId\n      }), child);\n    }\n  }, {\n    key: \"getClipValue\",\n    value: function getClipValue(props, axis) {\n      var clipValues = {\n        x: props.clipWidth,\n        y: props.clipHeight\n      };\n\n      if (clipValues[axis] !== undefined) {\n        return clipValues[axis];\n      }\n\n      var range = Helpers.getRange(props, axis);\n      return range ? Math.abs(range[0] - range[1]) || undefined : undefined;\n    }\n  }, {\n    key: \"getTranslateValue\",\n    value: function getTranslateValue(props, axis) {\n      var translateValues = {\n        x: props.translateX,\n        y: props.translateY\n      };\n\n      if (translateValues[axis] !== undefined) {\n        return translateValues[axis];\n      }\n\n      var range = Helpers.getRange(props, axis);\n      return range ? Math.min.apply(Math, _toConsumableArray(range)) : undefined;\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var clipHeight = this.getClipValue(this.props, \"y\");\n      var clipWidth = this.getClipValue(this.props, \"x\");\n\n      if (clipWidth === undefined || clipHeight === undefined) {\n        return this.renderGroup(this.props);\n      }\n\n      var translateX = this.getTranslateValue(this.props, \"x\");\n      var translateY = this.getTranslateValue(this.props, \"y\");\n\n      var clipProps = _defaults({}, this.props, {\n        clipHeight: clipHeight,\n        clipWidth: clipWidth,\n        translateX: translateX,\n        translateY: translateY\n      });\n\n      return this.renderClippedGroup(clipProps, this.clipId);\n    }\n  }]);\n\n  return VictoryClipContainer;\n}(React.Component);\nVictoryClipContainer.displayName = \"VictoryClipContainer\";\nVictoryClipContainer.role = \"container\";\nVictoryClipContainer.propTypes = {\n  \"aria-label\": PropTypes.string,\n  children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n  circleComponent: PropTypes.element,\n  className: PropTypes.string,\n  clipHeight: CustomPropTypes.nonNegative,\n  clipId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  clipPadding: PropTypes.shape({\n    top: PropTypes.number,\n    bottom: PropTypes.number,\n    left: PropTypes.number,\n    right: PropTypes.number\n  }),\n  clipPathComponent: PropTypes.element,\n  clipWidth: CustomPropTypes.nonNegative,\n  events: PropTypes.object,\n  groupComponent: PropTypes.element,\n  origin: PropTypes.shape({\n    x: CustomPropTypes.nonNegative,\n    y: CustomPropTypes.nonNegative\n  }),\n  polar: PropTypes.bool,\n  radius: CustomPropTypes.nonNegative,\n  style: PropTypes.object,\n  tabIndex: PropTypes.number,\n  transform: PropTypes.string,\n  translateX: PropTypes.number,\n  translateY: PropTypes.number\n};\nVictoryClipContainer.defaultProps = {\n  circleComponent: /*#__PURE__*/React.createElement(Circle, null),\n  rectComponent: /*#__PURE__*/React.createElement(Rect, null),\n  clipPathComponent: /*#__PURE__*/React.createElement(ClipPath, null),\n  groupComponent: /*#__PURE__*/React.createElement(\"g\", null)\n};", "import React from \"react\";\nimport PropTypes from \"prop-types\";\nexport var ClipPath = function (props) {\n  return /*#__PURE__*/React.createElement(\"defs\", null,\n  /*#__PURE__*/\n  // @ts-expect-error FIXME: \"id cannot be a number\"\n  React.createElement(\"clipPath\", {\n    id: props.clipId\n  }, props.children));\n};\nClipPath.propTypes = {\n  children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n  clipId: PropTypes.oneOfType([PropTypes.number, PropTypes.string])\n};", "var _excluded = [\"desc\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\nexport var Circle = function (props) {\n  // eslint-disable-next-line react/prop-types\n  var desc = props.desc,\n      rest = _objectWithoutProperties(props, _excluded);\n\n  return desc ?\n  /*#__PURE__*/\n  // @ts-expect-error FIXME: \"id cannot be a number\"\n  React.createElement(\"circle\", _extends({\n    vectorEffect: \"non-scaling-stroke\"\n  }, rest), /*#__PURE__*/React.createElement(\"desc\", null, desc)) :\n  /*#__PURE__*/\n  // @ts-expect-error FIXME: \"id cannot be a number\"\n  React.createElement(\"circle\", _extends({\n    vectorEffect: \"non-scaling-stroke\"\n  }, rest));\n};", "import _assign from \"lodash/assign\";\n// *\n// * Colors\n// *\nvar colors = [\"#252525\", \"#525252\", \"#737373\", \"#969696\", \"#bdbdbd\", \"#d9d9d9\", \"#f0f0f0\"];\nvar charcoal = \"#252525\";\nvar grey = \"#969696\"; // *\n// * Typography\n// *\n\nvar sansSerif = \"'Gill Sans', 'Seravek', 'Trebuchet MS', sans-serif\";\nvar letterSpacing = \"normal\";\nvar fontSize = 14; // *\n// * Layout\n// *\n\nvar baseProps = {\n  width: 450,\n  height: 300,\n  padding: 50,\n  colorScale: colors\n}; // *\n// * Labels\n// *\n\nvar baseLabelStyles = {\n  fontFamily: sansSerif,\n  fontSize: fontSize,\n  letterSpacing: letterSpacing,\n  padding: 10,\n  fill: charcoal,\n  stroke: \"transparent\"\n};\n\nvar centeredLabelStyles = _assign({\n  textAnchor: \"middle\"\n}, baseLabelStyles); // *\n// * Strokes\n// *\n\n\nvar strokeLinecap = \"round\";\nvar strokeLinejoin = \"round\";\nexport var grayscale = {\n  area: _assign({\n    style: {\n      data: {\n        fill: charcoal\n      },\n      labels: baseLabelStyles\n    }\n  }, baseProps),\n  axis: _assign({\n    style: {\n      axis: {\n        fill: \"transparent\",\n        stroke: charcoal,\n        strokeWidth: 1,\n        strokeLinecap: strokeLinecap,\n        strokeLinejoin: strokeLinejoin\n      },\n      axisLabel: _assign({}, centeredLabelStyles, {\n        padding: 25\n      }),\n      grid: {\n        fill: \"none\",\n        stroke: \"none\",\n        pointerEvents: \"painted\"\n      },\n      ticks: {\n        fill: \"transparent\",\n        size: 1,\n        stroke: \"transparent\"\n      },\n      tickLabels: baseLabelStyles\n    }\n  }, baseProps),\n  bar: _assign({\n    style: {\n      data: {\n        fill: charcoal,\n        padding: 8,\n        strokeWidth: 0\n      },\n      labels: baseLabelStyles\n    }\n  }, baseProps),\n  boxplot: _assign({\n    style: {\n      max: {\n        padding: 8,\n        stroke: charcoal,\n        strokeWidth: 1\n      },\n      maxLabels: _assign({}, baseLabelStyles, {\n        padding: 3\n      }),\n      median: {\n        padding: 8,\n        stroke: charcoal,\n        strokeWidth: 1\n      },\n      medianLabels: _assign({}, baseLabelStyles, {\n        padding: 3\n      }),\n      min: {\n        padding: 8,\n        stroke: charcoal,\n        strokeWidth: 1\n      },\n      minLabels: _assign({}, baseLabelStyles, {\n        padding: 3\n      }),\n      q1: {\n        padding: 8,\n        fill: grey\n      },\n      q1Labels: _assign({}, baseLabelStyles, {\n        padding: 3\n      }),\n      q3: {\n        padding: 8,\n        fill: grey\n      },\n      q3Labels: _assign({}, baseLabelStyles, {\n        padding: 3\n      })\n    },\n    boxWidth: 20\n  }, baseProps),\n  candlestick: _assign({\n    style: {\n      data: {\n        stroke: charcoal,\n        strokeWidth: 1\n      },\n      labels: _assign({}, baseLabelStyles, {\n        padding: 5\n      })\n    },\n    candleColors: {\n      positive: \"#ffffff\",\n      negative: charcoal\n    }\n  }, baseProps),\n  chart: baseProps,\n  errorbar: _assign({\n    borderWidth: 8,\n    style: {\n      data: {\n        fill: \"transparent\",\n        stroke: charcoal,\n        strokeWidth: 2\n      },\n      labels: baseLabelStyles\n    }\n  }, baseProps),\n  group: _assign({\n    colorScale: colors\n  }, baseProps),\n  histogram: _assign({\n    style: {\n      data: {\n        fill: grey,\n        stroke: charcoal,\n        strokeWidth: 2\n      },\n      labels: baseLabelStyles\n    }\n  }, baseProps),\n  legend: {\n    colorScale: colors,\n    gutter: 10,\n    orientation: \"vertical\",\n    titleOrientation: \"top\",\n    style: {\n      data: {\n        type: \"circle\"\n      },\n      labels: baseLabelStyles,\n      title: _assign({}, baseLabelStyles, {\n        padding: 5\n      })\n    }\n  },\n  line: _assign({\n    style: {\n      data: {\n        fill: \"transparent\",\n        stroke: charcoal,\n        strokeWidth: 2\n      },\n      labels: baseLabelStyles\n    }\n  }, baseProps),\n  pie: {\n    style: {\n      data: {\n        padding: 10,\n        stroke: \"transparent\",\n        strokeWidth: 1\n      },\n      labels: _assign({}, baseLabelStyles, {\n        padding: 20\n      })\n    },\n    colorScale: colors,\n    width: 400,\n    height: 400,\n    padding: 50\n  },\n  scatter: _assign({\n    style: {\n      data: {\n        fill: charcoal,\n        stroke: \"transparent\",\n        strokeWidth: 0\n      },\n      labels: baseLabelStyles\n    }\n  }, baseProps),\n  stack: _assign({\n    colorScale: colors\n  }, baseProps),\n  tooltip: {\n    style: _assign({}, baseLabelStyles, {\n      padding: 0,\n      pointerEvents: \"none\"\n    }),\n    flyoutStyle: {\n      stroke: charcoal,\n      strokeWidth: 1,\n      fill: \"#f0f0f0\",\n      pointerEvents: \"none\"\n    },\n    flyoutPadding: 5,\n    cornerRadius: 5,\n    pointerLength: 10\n  },\n  voronoi: _assign({\n    style: {\n      data: {\n        fill: \"transparent\",\n        stroke: \"transparent\",\n        strokeWidth: 0\n      },\n      labels: _assign({}, baseLabelStyles, {\n        padding: 5,\n        pointerEvents: \"none\"\n      }),\n      flyout: {\n        stroke: charcoal,\n        strokeWidth: 1,\n        fill: \"#f0f0f0\",\n        pointerEvents: \"none\"\n      }\n    }\n  }, baseProps)\n};", "import _assign from \"lodash/assign\";\n// *\n// * Colors\n// *\nvar yellow200 = \"#FFF59D\";\nvar deepOrange600 = \"#F4511E\";\nvar lime300 = \"#DCE775\";\nvar lightGreen500 = \"#8BC34A\";\nvar teal700 = \"#00796B\";\nvar cyan900 = \"#006064\";\nvar colors = [deepOrange600, yellow200, lime300, lightGreen500, teal700, cyan900];\nvar blueGrey50 = \"#ECEFF1\";\nvar blueGrey300 = \"#90A4AE\";\nvar blueGrey700 = \"#455A64\";\nvar grey900 = \"#212121\"; // *\n// * Typography\n// *\n\nvar sansSerif = \"'Helvetica Neue', 'Helvetica', sans-serif\";\nvar letterSpacing = \"normal\";\nvar fontSize = 12; // *\n// * Layout\n// *\n\nvar padding = 8;\nvar baseProps = {\n  width: 350,\n  height: 350,\n  padding: 50\n}; // *\n// * Labels\n// *\n\nvar baseLabelStyles = {\n  fontFamily: sansSerif,\n  fontSize: fontSize,\n  letterSpacing: letterSpacing,\n  padding: padding,\n  fill: blueGrey700,\n  stroke: \"transparent\",\n  strokeWidth: 0\n};\n\nvar centeredLabelStyles = _assign({\n  textAnchor: \"middle\"\n}, baseLabelStyles); // *\n// * Strokes\n// *\n\n\nvar strokeDasharray = \"10, 5\";\nvar strokeLinecap = \"round\";\nvar strokeLinejoin = \"round\";\nexport var material = {\n  area: _assign({\n    style: {\n      data: {\n        fill: grey900\n      },\n      labels: baseLabelStyles\n    }\n  }, baseProps),\n  axis: _assign({\n    style: {\n      axis: {\n        fill: \"transparent\",\n        stroke: blueGrey300,\n        strokeWidth: 2,\n        strokeLinecap: strokeLinecap,\n        strokeLinejoin: strokeLinejoin\n      },\n      axisLabel: _assign({}, centeredLabelStyles, {\n        padding: padding,\n        stroke: \"transparent\"\n      }),\n      grid: {\n        fill: \"none\",\n        stroke: blueGrey50,\n        strokeDasharray: strokeDasharray,\n        strokeLinecap: strokeLinecap,\n        strokeLinejoin: strokeLinejoin,\n        pointerEvents: \"painted\"\n      },\n      ticks: {\n        fill: \"transparent\",\n        size: 5,\n        stroke: blueGrey300,\n        strokeWidth: 1,\n        strokeLinecap: strokeLinecap,\n        strokeLinejoin: strokeLinejoin\n      },\n      tickLabels: _assign({}, baseLabelStyles, {\n        fill: blueGrey700\n      })\n    }\n  }, baseProps),\n  polarDependentAxis: _assign({\n    style: {\n      ticks: {\n        fill: \"transparent\",\n        size: 1,\n        stroke: \"transparent\"\n      }\n    }\n  }),\n  bar: _assign({\n    style: {\n      data: {\n        fill: blueGrey700,\n        padding: padding,\n        strokeWidth: 0\n      },\n      labels: baseLabelStyles\n    }\n  }, baseProps),\n  boxplot: _assign({\n    style: {\n      max: {\n        padding: padding,\n        stroke: blueGrey700,\n        strokeWidth: 1\n      },\n      maxLabels: _assign({}, baseLabelStyles, {\n        padding: 3\n      }),\n      median: {\n        padding: padding,\n        stroke: blueGrey700,\n        strokeWidth: 1\n      },\n      medianLabels: _assign({}, baseLabelStyles, {\n        padding: 3\n      }),\n      min: {\n        padding: padding,\n        stroke: blueGrey700,\n        strokeWidth: 1\n      },\n      minLabels: _assign({}, baseLabelStyles, {\n        padding: 3\n      }),\n      q1: {\n        padding: padding,\n        fill: blueGrey700\n      },\n      q1Labels: _assign({}, baseLabelStyles, {\n        padding: 3\n      }),\n      q3: {\n        padding: padding,\n        fill: blueGrey700\n      },\n      q3Labels: _assign({}, baseLabelStyles, {\n        padding: 3\n      })\n    },\n    boxWidth: 20\n  }, baseProps),\n  candlestick: _assign({\n    style: {\n      data: {\n        stroke: blueGrey700\n      },\n      labels: _assign({}, baseLabelStyles, {\n        padding: 5\n      })\n    },\n    candleColors: {\n      positive: \"#ffffff\",\n      negative: blueGrey700\n    }\n  }, baseProps),\n  chart: baseProps,\n  errorbar: _assign({\n    borderWidth: 8,\n    style: {\n      data: {\n        fill: \"transparent\",\n        opacity: 1,\n        stroke: blueGrey700,\n        strokeWidth: 2\n      },\n      labels: baseLabelStyles\n    }\n  }, baseProps),\n  group: _assign({\n    colorScale: colors\n  }, baseProps),\n  histogram: _assign({\n    style: {\n      data: {\n        fill: blueGrey700,\n        stroke: grey900,\n        strokeWidth: 2\n      },\n      labels: baseLabelStyles\n    }\n  }, baseProps),\n  legend: {\n    colorScale: colors,\n    gutter: 10,\n    orientation: \"vertical\",\n    titleOrientation: \"top\",\n    style: {\n      data: {\n        type: \"circle\"\n      },\n      labels: baseLabelStyles,\n      title: _assign({}, baseLabelStyles, {\n        padding: 5\n      })\n    }\n  },\n  line: _assign({\n    style: {\n      data: {\n        fill: \"transparent\",\n        opacity: 1,\n        stroke: blueGrey700,\n        strokeWidth: 2\n      },\n      labels: baseLabelStyles\n    }\n  }, baseProps),\n  pie: _assign({\n    colorScale: colors,\n    style: {\n      data: {\n        padding: padding,\n        stroke: blueGrey50,\n        strokeWidth: 1\n      },\n      labels: _assign({}, baseLabelStyles, {\n        padding: 20\n      })\n    }\n  }, baseProps),\n  scatter: _assign({\n    style: {\n      data: {\n        fill: blueGrey700,\n        opacity: 1,\n        stroke: \"transparent\",\n        strokeWidth: 0\n      },\n      labels: baseLabelStyles\n    }\n  }, baseProps),\n  stack: _assign({\n    colorScale: colors\n  }, baseProps),\n  tooltip: {\n    style: _assign({}, baseLabelStyles, {\n      padding: 0,\n      pointerEvents: \"none\"\n    }),\n    flyoutStyle: {\n      stroke: grey900,\n      strokeWidth: 1,\n      fill: \"#f0f0f0\",\n      pointerEvents: \"none\"\n    },\n    flyoutPadding: 5,\n    cornerRadius: 5,\n    pointerLength: 10\n  },\n  voronoi: _assign({\n    style: {\n      data: {\n        fill: \"transparent\",\n        stroke: \"transparent\",\n        strokeWidth: 0\n      },\n      labels: _assign({}, baseLabelStyles, {\n        padding: 5,\n        pointerEvents: \"none\"\n      }),\n      flyout: {\n        stroke: grey900,\n        strokeWidth: 1,\n        fill: \"#f0f0f0\",\n        pointerEvents: \"none\"\n      }\n    }\n  }, baseProps)\n};", "import { grayscale } from \"./grayscale\";\nimport { material } from \"./material\";\nexport * from \"./types\";\nexport var VictoryTheme = {\n  grayscale: grayscale,\n  material: material\n};", "import _assign from \"lodash/assign\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n/* eslint no-magic-numbers: [\"error\", { \"ignore\": [0, 1, 2, 180] }]*/\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport * as Helpers from \"../victory-util/helpers\";\nimport { CommonProps } from \"../victory-util/common-props\";\nimport { Path } from \"./path\";\n\nvar getArcPath = function (props) {\n  var cx = props.cx,\n      cy = props.cy,\n      r = props.r,\n      startAngle = props.startAngle,\n      endAngle = props.endAngle,\n      closedPath = props.closedPath; // Always draw the path as two arcs so that complete circles may be rendered.\n\n  var halfAngle = Math.abs(endAngle - startAngle) / 2 + startAngle;\n  var x1 = cx + r * Math.cos(Helpers.degreesToRadians(startAngle));\n  var y1 = cy - r * Math.sin(Helpers.degreesToRadians(startAngle));\n  var x2 = cx + r * Math.cos(Helpers.degreesToRadians(halfAngle));\n  var y2 = cy - r * Math.sin(Helpers.degreesToRadians(halfAngle));\n  var x3 = cx + r * Math.cos(Helpers.degreesToRadians(endAngle));\n  var y3 = cy - r * Math.sin(Helpers.degreesToRadians(endAngle));\n  var largerArcFlag1 = halfAngle - startAngle <= 180 ? 0 : 1;\n  var largerArcFlag2 = endAngle - halfAngle <= 180 ? 0 : 1;\n  var arcStart = closedPath ? \" M \".concat(cx, \", \").concat(cy, \" L \").concat(x1, \", \").concat(y1) : \"M \".concat(x1, \", \").concat(y1);\n  var arc1 = \"A \".concat(r, \", \").concat(r, \", 0, \").concat(largerArcFlag1, \", 0, \").concat(x2, \", \").concat(y2);\n  var arc2 = \"A \".concat(r, \", \").concat(r, \", 0, \").concat(largerArcFlag2, \", 0, \").concat(x3, \", \").concat(y3);\n  var arcEnd = closedPath ? \"Z\" : \"\";\n  return \"\".concat(arcStart, \" \").concat(arc1, \" \").concat(arc2, \" \").concat(arcEnd);\n};\n\nvar evaluateProps = function (props) {\n  /**\n   * Potential evaluated props are:\n   * `ariaLabel`\n   * `desc`\n   * `id`\n   * `style`\n   * `tabIndex`\n   */\n  var ariaLabel = Helpers.evaluateProp(props.ariaLabel, props);\n  var desc = Helpers.evaluateProp(props.desc, props);\n  var id = Helpers.evaluateProp(props.id, props);\n  var style = Helpers.evaluateStyle(_assign({\n    stroke: \"black\",\n    fill: \"none\"\n  }, props.style), props);\n  var tabIndex = Helpers.evaluateProp(props.tabIndex, props);\n  return _assign({}, props, {\n    ariaLabel: ariaLabel,\n    desc: desc,\n    id: id,\n    style: style,\n    tabIndex: tabIndex\n  });\n};\n\nexport var Arc = function (props) {\n  props = evaluateProps(props);\n  return /*#__PURE__*/React.cloneElement(props.pathComponent, _objectSpread(_objectSpread({}, props.events), {}, {\n    \"aria-label\": props.ariaLabel,\n    d: getArcPath(props),\n    style: props.style,\n    desc: props.desc,\n    tabIndex: props.tabIndex,\n    className: props.className,\n    role: props.role,\n    shapeRendering: props.shapeRendering,\n    transform: props.transform,\n    clipPath: props.clipPath\n  }));\n};\nArc.propTypes = _objectSpread(_objectSpread({}, CommonProps.primitiveProps), {}, {\n  closedPath: PropTypes.bool,\n  cx: PropTypes.number,\n  cy: PropTypes.number,\n  datum: PropTypes.any,\n  endAngle: PropTypes.number,\n  pathComponent: PropTypes.element,\n  r: PropTypes.number,\n  startAngle: PropTypes.number\n});\nArc.defaultProps = {\n  pathComponent: /*#__PURE__*/React.createElement(Path, null),\n  role: \"presentation\",\n  shapeRendering: \"auto\"\n};", "import PropTypes from \"prop-types\";\nimport * as CustomPropTypes from \"./prop-types\";\nvar dataProps = {\n  // @ts-expect-error TODO: synchronize the type with this PropTypes\n  categories: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.string), PropTypes.shape({\n    x: PropTypes.arrayOf(PropTypes.string),\n    y: PropTypes.arrayOf(PropTypes.string)\n  })]),\n  // @ts-expect-error TODO: synchronize the type with this PropTypes\n  data: PropTypes.oneOfType([PropTypes.array, PropTypes.object]),\n  dataComponent: PropTypes.element,\n  disableInlineStyles: PropTypes.bool,\n  labelComponent: PropTypes.element,\n  labels: PropTypes.oneOfType([PropTypes.func, PropTypes.array]),\n  samples: CustomPropTypes.nonNegative,\n  sortKey: PropTypes.oneOfType([PropTypes.func, CustomPropTypes.allOfType([CustomPropTypes.integer, CustomPropTypes.nonNegative]), PropTypes.string, PropTypes.arrayOf(PropTypes.string.isRequired)]),\n  sortOrder: PropTypes.oneOf([\"ascending\", \"descending\"]),\n  style: PropTypes.shape({\n    parent: PropTypes.object,\n    data: PropTypes.object,\n    labels: PropTypes.object\n  }),\n  x: PropTypes.oneOfType([PropTypes.func, CustomPropTypes.allOfType([CustomPropTypes.integer, CustomPropTypes.nonNegative]), PropTypes.string, PropTypes.arrayOf(PropTypes.string.isRequired)]),\n  y: PropTypes.oneOfType([PropTypes.func, CustomPropTypes.allOfType([CustomPropTypes.integer, CustomPropTypes.nonNegative]), PropTypes.string, PropTypes.arrayOf(PropTypes.string.isRequired)]),\n  y0: PropTypes.oneOfType([PropTypes.func, CustomPropTypes.allOfType([CustomPropTypes.integer, CustomPropTypes.nonNegative]), PropTypes.string, PropTypes.arrayOf(PropTypes.string.isRequired)])\n};\nvar baseProps = {\n  animate: PropTypes.oneOfType([PropTypes.bool, PropTypes.object]),\n  containerComponent: PropTypes.element,\n  domain: PropTypes.oneOfType([CustomPropTypes.domain, PropTypes.shape({\n    x: CustomPropTypes.domain,\n    y: CustomPropTypes.domain\n  })]),\n  // @ts-expect-error TODO: synchronize the type with this PropTypes\n  maxDomain: PropTypes.oneOfType([PropTypes.number, PropTypes.instanceOf(Date), PropTypes.shape({\n    x: PropTypes.oneOfType([PropTypes.number, PropTypes.instanceOf(Date)]),\n    y: PropTypes.oneOfType([PropTypes.number, PropTypes.instanceOf(Date)])\n  })]),\n  // @ts-expect-error TODO: synchronize the type with this PropTypes\n  minDomain: PropTypes.oneOfType([PropTypes.number, PropTypes.instanceOf(Date), PropTypes.shape({\n    x: PropTypes.oneOfType([PropTypes.number, PropTypes.instanceOf(Date)]),\n    y: PropTypes.oneOfType([PropTypes.number, PropTypes.instanceOf(Date)])\n  })]),\n  // @ts-expect-error TODO: synchronize the type with this PropTypes\n  domainPadding: PropTypes.oneOfType([PropTypes.shape({\n    x: PropTypes.oneOfType([PropTypes.number, PropTypes.arrayOf(PropTypes.number)]),\n    y: PropTypes.oneOfType([PropTypes.number, PropTypes.arrayOf(PropTypes.number)])\n  }), PropTypes.number, PropTypes.arrayOf(PropTypes.number)]),\n  eventKey: PropTypes.oneOfType([PropTypes.func, CustomPropTypes.allOfType([CustomPropTypes.integer, CustomPropTypes.nonNegative]), PropTypes.string]),\n  events: PropTypes.arrayOf(PropTypes.shape({\n    target: PropTypes.oneOf([\"data\", \"labels\", \"parent\"]),\n    eventKey: PropTypes.oneOfType([PropTypes.array, CustomPropTypes.allOfType([CustomPropTypes.integer, CustomPropTypes.nonNegative]), PropTypes.string]),\n    eventHandlers: PropTypes.object\n  })),\n  // @ts-expect-error TODO: synchronize the type with this PropTypes\n  externalEventMutations: PropTypes.arrayOf(PropTypes.shape({\n    callback: PropTypes.func,\n    childName: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),\n    eventKey: PropTypes.oneOfType([PropTypes.array, CustomPropTypes.allOfType([CustomPropTypes.integer, CustomPropTypes.nonNegative]), PropTypes.string]),\n    mutation: PropTypes.func,\n    target: PropTypes.oneOfType([PropTypes.string, PropTypes.array])\n  })),\n  groupComponent: PropTypes.element,\n  height: CustomPropTypes.nonNegative,\n  name: PropTypes.string,\n  // @ts-expect-error TODO: synchronize the type with this PropTypes\n  origin: PropTypes.shape({\n    x: PropTypes.number,\n    y: PropTypes.number\n  }),\n  // @ts-expect-error TODO: synchronize the type with this PropTypes\n  padding: PropTypes.oneOfType([PropTypes.number, PropTypes.shape({\n    top: PropTypes.number,\n    bottom: PropTypes.number,\n    left: PropTypes.number,\n    right: PropTypes.number\n  })]),\n  polar: PropTypes.bool,\n  range: PropTypes.oneOfType([CustomPropTypes.domain, PropTypes.shape({\n    x: CustomPropTypes.domain.isRequired,\n    y: CustomPropTypes.domain.isRequired\n  })]),\n  scale: PropTypes.oneOfType([CustomPropTypes.scale, PropTypes.shape({\n    x: CustomPropTypes.scale.isRequired,\n    y: CustomPropTypes.scale.isRequired\n  })]),\n  // @ts-expect-error TODO: synchronize the type with this PropTypes\n  sharedEvents: PropTypes.shape({\n    events: PropTypes.array,\n    getEventState: PropTypes.func\n  }),\n  // @ts-expect-error TODO: synchronize the type with this PropTypes\n  singleQuadrantDomainPadding: PropTypes.oneOfType([PropTypes.bool, PropTypes.shape({\n    x: PropTypes.oneOfType([PropTypes.bool]),\n    y: PropTypes.oneOfType([PropTypes.bool])\n  })]),\n  standalone: PropTypes.bool,\n  theme: PropTypes.object,\n  width: CustomPropTypes.nonNegative\n};\nvar primitiveProps = {\n  active: PropTypes.bool,\n  ariaLabel: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n  className: PropTypes.string,\n  clipPath: PropTypes.string,\n  data: PropTypes.oneOfType([PropTypes.array, PropTypes.object]),\n  desc: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n  disableInlineStyles: PropTypes.bool,\n  events: PropTypes.object,\n  id: PropTypes.oneOfType([PropTypes.number, PropTypes.string, PropTypes.func]),\n  index: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  // @ts-expect-error TODO: synchronize the type with this PropTypes\n  origin: PropTypes.shape({\n    x: PropTypes.number,\n    y: PropTypes.number\n  }),\n  polar: PropTypes.bool,\n  role: PropTypes.string,\n  scale: PropTypes.oneOfType([CustomPropTypes.scale, PropTypes.shape({\n    x: CustomPropTypes.scale,\n    y: CustomPropTypes.scale\n  })]),\n  shapeRendering: PropTypes.string,\n  style: PropTypes.object,\n  tabIndex: PropTypes.oneOfType([PropTypes.number, PropTypes.func]),\n  transform: PropTypes.string\n};\nexport var CommonProps = {\n  dataProps: dataProps,\n  baseProps: baseProps,\n  primitiveProps: primitiveProps\n};", "var _excluded = [\"desc\"];\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\nexport var Path = function (props) {\n  // eslint-disable-next-line react/prop-types\n  var desc = props.desc,\n      rest = _objectWithoutProperties(props, _excluded);\n\n  return desc ?\n  /*#__PURE__*/\n  // @ts-expect-error FIXME: \"id cannot be a number\"\n  React.createElement(\"path\", rest, /*#__PURE__*/React.createElement(\"desc\", null, desc)) :\n  /*#__PURE__*/\n  // @ts-expect-error FIXME: \"id cannot be a number\"\n  React.createElement(\"path\", rest);\n};", "import _assign from \"lodash/assign\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport * as Helpers from \"../victory-util/helpers\";\nimport { CommonProps } from \"../victory-util/common-props\";\nimport { Rect } from \"./rect\";\nimport { Circle } from \"./circle\";\n\nvar evaluateProps = function (props) {\n  /**\n   * Potential evaluated prop is:\n   * `id`\n   */\n  var id = Helpers.evaluateProp(props.id, props);\n  return _assign({}, props, {\n    id: id\n  });\n};\n\nexport var Background = function (props) {\n  props = evaluateProps(props);\n  return props.polar ? /*#__PURE__*/React.cloneElement(props.circleComponent, _objectSpread(_objectSpread({}, props.events), {}, {\n    style: props.style,\n    role: props.role,\n    shapeRendering: props.shapeRendering,\n    cx: props.x,\n    cy: props.y,\n    r: props.height,\n    className: props.className\n  })) : /*#__PURE__*/React.cloneElement(props.rectComponent, _objectSpread(_objectSpread({}, props.events), {}, {\n    style: props.style,\n    role: props.role,\n    shapeRendering: props.shapeRendering,\n    x: props.x,\n    y: props.y,\n    rx: props.rx,\n    ry: props.ry,\n    width: props.width,\n    height: props.height,\n    className: props.className\n  }));\n};\nBackground.propTypes = _objectSpread(_objectSpread({}, CommonProps.primitiveProps), {}, {\n  circleComponent: PropTypes.element,\n  height: PropTypes.number,\n  rectComponent: PropTypes.element,\n  rx: PropTypes.number,\n  ry: PropTypes.number,\n  width: PropTypes.number,\n  x: PropTypes.number,\n  y: PropTypes.number\n});\nBackground.defaultProps = {\n  circleComponent: /*#__PURE__*/React.createElement(Circle, null),\n  rectComponent: /*#__PURE__*/React.createElement(Rect, null),\n  role: \"presentation\",\n  shapeRendering: \"auto\"\n};", "import _assign from \"lodash/assign\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport * as Helpers from \"../victory-util/helpers\";\nimport { CommonProps } from \"../victory-util/common-props\";\nimport { Rect } from \"./rect\";\n\nvar evaluateProps = function (props) {\n  /**\n   * Potential evaluated props are:\n   * `ariaLabel`\n   * `desc`\n   * `id`\n   * `style`\n   * `tabIndex`\n   */\n  var ariaLabel = Helpers.evaluateProp(props.ariaLabel, props);\n  var desc = Helpers.evaluateProp(props.desc, props);\n  var id = Helpers.evaluateProp(props.id, props);\n  var style = Helpers.evaluateStyle(_assign({\n    fill: \"none\"\n  }, props.style), props);\n  var tabIndex = Helpers.evaluateProp(props.tabIndex, props);\n  return _assign({}, props, {\n    ariaLabel: ariaLabel,\n    desc: desc,\n    id: id,\n    style: style,\n    tabIndex: tabIndex\n  });\n};\n\nexport var Border = function (props) {\n  props = evaluateProps(props);\n  return /*#__PURE__*/React.cloneElement(props.rectComponent, _objectSpread(_objectSpread({}, props.events), {}, {\n    \"aria-label\": props.ariaLabel,\n    style: props.style,\n    desc: props.desc,\n    tabIndex: props.tabIndex,\n    transform: props.transform,\n    className: props.className,\n    role: props.role,\n    shapeRendering: props.shapeRendering,\n    x: props.x,\n    y: props.y,\n    width: props.width,\n    height: props.height,\n    clipPath: props.clipPath\n  }));\n};\nBorder.propTypes = _objectSpread(_objectSpread({}, CommonProps.primitiveProps), {}, {\n  height: PropTypes.number,\n  rectComponent: PropTypes.element,\n  width: PropTypes.number,\n  x: PropTypes.number,\n  y: PropTypes.number\n});\nBorder.defaultProps = {\n  rectComponent: /*#__PURE__*/React.createElement(Rect, null),\n  role: \"presentation\",\n  shapeRendering: \"auto\"\n};", "var _excluded = [\"desc\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\nexport var Line = function (props) {\n  // eslint-disable-next-line react/prop-types\n  var desc = props.desc,\n      rest = _objectWithoutProperties(props, _excluded);\n\n  return desc ?\n  /*#__PURE__*/\n  // @ts-expect-error FIXME: \"id cannot be a number\"\n  React.createElement(\"line\", _extends({\n    vectorEffect: \"non-scaling-stroke\"\n  }, rest), /*#__PURE__*/React.createElement(\"desc\", null, desc)) :\n  /*#__PURE__*/\n  // @ts-expect-error FIXME: \"id cannot be a number\"\n  React.createElement(\"line\", _extends({\n    vectorEffect: \"non-scaling-stroke\"\n  }, rest));\n};", "import _assign from \"lodash/assign\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport * as Helpers from \"../victory-util/helpers\";\nimport { CommonProps } from \"../victory-util/common-props\";\nimport { Line } from \"./line\";\n\nvar evaluateProps = function (props) {\n  /**\n   * Potential evaluated props are:\n   * `ariaLabel`\n   * `desc`\n   * `id`\n   * `style`\n   * `tabIndex`\n   */\n  var ariaLabel = Helpers.evaluateProp(props.ariaLabel, props);\n  var desc = Helpers.evaluateProp(props.desc, props);\n  var id = Helpers.evaluateProp(props.id, props);\n  var style = Helpers.evaluateStyle(_assign({\n    stroke: \"black\"\n  }, props.style), props);\n  var tabIndex = Helpers.evaluateProp(props.tabIndex, props);\n  return _assign({}, props, {\n    ariaLabel: ariaLabel,\n    desc: desc,\n    id: id,\n    style: style,\n    tabIndex: tabIndex\n  });\n};\n\nexport var LineSegment = function (props) {\n  props = evaluateProps(props);\n  return /*#__PURE__*/React.cloneElement(props.lineComponent, _objectSpread(_objectSpread({}, props.events), {}, {\n    \"aria-label\": props.ariaLabel,\n    style: props.style,\n    desc: props.desc,\n    tabIndex: props.tabIndex,\n    className: props.className,\n    role: props.role,\n    shapeRendering: props.shapeRendering,\n    x1: props.x1,\n    x2: props.x2,\n    y1: props.y1,\n    y2: props.y2,\n    transform: props.transform,\n    clipPath: props.clipPath\n  }));\n};\nLineSegment.propTypes = _objectSpread(_objectSpread({}, CommonProps.primitiveProps), {}, {\n  datum: PropTypes.any,\n  lineComponent: PropTypes.element,\n  x1: PropTypes.number,\n  x2: PropTypes.number,\n  y1: PropTypes.number,\n  y2: PropTypes.number\n});\nLineSegment.defaultProps = {\n  lineComponent: /*#__PURE__*/React.createElement(Line, null),\n  role: \"presentation\",\n  shapeRendering: \"auto\"\n};", "import _assign from \"lodash/assign\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport PropTypes from \"prop-types\";\nimport React from \"react\";\nimport * as Helpers from \"../victory-util/helpers\";\nimport * as pathHelpers from \"../victory-util/point-path-helpers\";\nimport { CommonProps } from \"../victory-util/common-props\";\nimport * as UserProps from \"../victory-util/user-props\";\nimport { Path } from \"./path\";\n\nvar getPath = function (props) {\n  var x = props.x,\n      y = props.y,\n      size = props.size,\n      symbol = props.symbol;\n\n  if (props.getPath) {\n    return props.getPath(x, y, size);\n  }\n\n  var pathFunctions = pathHelpers;\n  var symbolFunction = typeof pathFunctions[symbol] === \"function\" ? pathFunctions[symbol] : pathFunctions.circle;\n  return symbolFunction(x, y, size);\n};\n\nvar evaluateProps = function (props) {\n  /**\n   * Potential evaluated props are:\n   * `ariaLabel`\n   * `desc`\n   * `id`\n   * `size`\n   * `style`\n   * `symbol`\n   * `tabIndex`\n   */\n  var ariaLabel = Helpers.evaluateProp(props.ariaLabel, props);\n  var desc = Helpers.evaluateProp(props.desc, props);\n  var id = Helpers.evaluateProp(props.id, props);\n  var size = Helpers.evaluateProp(props.size, props);\n  var style = Helpers.evaluateStyle(props.style, props);\n  var symbol = Helpers.evaluateProp(props.symbol, props);\n  var tabIndex = Helpers.evaluateProp(props.tabIndex, props);\n  return _assign({}, props, {\n    ariaLabel: ariaLabel,\n    desc: desc,\n    id: id,\n    size: size,\n    style: style,\n    symbol: symbol,\n    tabIndex: tabIndex\n  });\n};\n\nexport var Point = function (props) {\n  props = evaluateProps(props);\n  var userProps = UserProps.getSafeUserProps(props);\n  return /*#__PURE__*/React.cloneElement(props.pathComponent, _objectSpread(_objectSpread({}, props.events), {}, {\n    \"aria-label\": props.ariaLabel,\n    d: getPath(props),\n    style: props.style,\n    desc: props.desc,\n    tabIndex: props.tabIndex,\n    role: props.role,\n    shapeRendering: props.shapeRendering,\n    className: props.className,\n    transform: props.transform,\n    clipPath: props.clipPath\n  }, userProps));\n};\nPoint.propTypes = _objectSpread(_objectSpread({}, CommonProps.primitiveProps), {}, {\n  datum: PropTypes.object,\n  getPath: PropTypes.func,\n  pathComponent: PropTypes.element,\n  size: PropTypes.oneOfType([PropTypes.number, PropTypes.func]),\n  symbol: PropTypes.oneOfType([PropTypes.oneOf([\"circle\", \"cross\", \"diamond\", \"plus\", \"minus\", \"square\", \"star\", \"triangleDown\", \"triangleUp\"]), PropTypes.func]),\n  x: PropTypes.number,\n  y: PropTypes.number\n});\nPoint.defaultProps = {\n  pathComponent: /*#__PURE__*/React.createElement(Path, null),\n  role: \"presentation\",\n  shapeRendering: \"auto\"\n};", "import _range from \"lodash/range\";\nexport function circle(x, y, size) {\n  return \"M \".concat(x, \", \").concat(y, \"\\n      m \").concat(-size, \", 0\\n      a \").concat(size, \", \").concat(size, \" 0 1,0 \").concat(size * 2, \",0\\n      a \").concat(size, \", \").concat(size, \" 0 1,0 \").concat(-size * 2, \",0\");\n}\nexport function square(x, y, size) {\n  var baseSize = 0.87 * size; // eslint-disable-line no-magic-numbers\n\n  var x0 = x - baseSize;\n  var y1 = y + baseSize;\n  var distance = x + baseSize - x0;\n  return \"M \".concat(x0, \", \").concat(y1, \"\\n      h\").concat(distance, \"\\n      v-\").concat(distance, \"\\n      h-\").concat(distance, \"\\n      z\");\n}\nexport function diamond(x, y, size) {\n  var baseSize = 0.87 * size; // eslint-disable-line no-magic-numbers\n\n  var length = Math.sqrt(2 * (baseSize * baseSize));\n  return \"M \".concat(x, \", \").concat(y + length, \"\\n      l \").concat(length, \", -\").concat(length, \"\\n      l -\").concat(length, \", -\").concat(length, \"\\n      l -\").concat(length, \", \").concat(length, \"\\n      l \").concat(length, \", \").concat(length, \"\\n      z\");\n}\nexport function triangleDown(x, y, size) {\n  var height = size / 2 * Math.sqrt(3);\n  var x0 = x - size;\n  var x1 = x + size;\n  var y0 = y - size;\n  var y1 = y + height;\n  return \"M \".concat(x0, \", \").concat(y0, \"\\n      L \").concat(x1, \", \").concat(y0, \"\\n      L \").concat(x, \", \").concat(y1, \"\\n      z\");\n}\nexport function triangleUp(x, y, size) {\n  var height = size / 2 * Math.sqrt(3);\n  var x0 = x - size;\n  var x1 = x + size;\n  var y0 = y - height;\n  var y1 = y + size;\n  return \"M \".concat(x0, \", \").concat(y1, \"\\n      L \").concat(x1, \", \").concat(y1, \"\\n      L \").concat(x, \", \").concat(y0, \"\\n      z\");\n}\nexport function plus(x, y, size) {\n  var baseSize = 1.1 * size; // eslint-disable-line no-magic-numbers\n\n  var distance = baseSize / 1.5; // eslint-disable-line no-magic-numbers\n\n  return \"\\n      M \".concat(x - distance / 2, \", \").concat(y + baseSize, \"\\n      v-\").concat(distance, \"\\n      h-\").concat(distance, \"\\n      v-\").concat(distance, \"\\n      h\").concat(distance, \"\\n      v-\").concat(distance, \"\\n      h\").concat(distance, \"\\n      v\").concat(distance, \"\\n      h\").concat(distance, \"\\n      v\").concat(distance, \"\\n      h-\").concat(distance, \"\\n      v\").concat(distance, \"\\n      z\");\n}\nexport function cross(x, y, size) {\n  var baseSize = 0.8 * size; // eslint-disable-line no-magic-numbers\n\n  var distance = baseSize / 1.5; // eslint-disable-line no-magic-numbers\n\n  return \"\\n      M \".concat(x - distance / 2, \", \").concat(y + baseSize + distance, \"\\n      v-\").concat(distance * 2, \"\\n      h-\").concat(distance, \"\\n      v-\").concat(distance, \"\\n      h\").concat(distance, \"\\n      v-\").concat(distance, \"\\n      h\").concat(distance, \"\\n      v\").concat(distance, \"\\n      h\").concat(distance, \"\\n      v\").concat(distance, \"\\n      h-\").concat(distance, \"\\n      v\").concat(distance * 2, \"\\n      z\");\n}\nexport function minus(x, y, size) {\n  var baseSize = 1.1 * size; // eslint-disable-line no-magic-numbers\n\n  var lineHeight = baseSize - baseSize * 0.3; // eslint-disable-line no-magic-numbers\n\n  var x0 = x - baseSize;\n  var y1 = y + lineHeight / 2;\n  var distance = x + baseSize - x0;\n  return \"M \".concat(x0, \", \").concat(y1, \"\\n      h\").concat(distance, \"\\n      v-\").concat(lineHeight, \"\\n      h-\").concat(distance, \"\\n      z\");\n}\nexport function star(x, y, size) {\n  var baseSize = 1.35 * size; // eslint-disable-line no-magic-numbers\n\n  var angle = Math.PI / 5; // eslint-disable-line no-magic-numbers\n  // eslint-disable-next-line no-magic-numbers\n\n  var starCoords = _range(10).map(function (index) {\n    var length = index % 2 === 0 ? baseSize : baseSize / 2;\n    return \"\".concat(length * Math.sin(angle * (index + 1)) + x, \",\\n        \").concat(length * Math.cos(angle * (index + 1)) + y);\n  });\n\n  return \"M \".concat(starCoords.join(\"L\"), \" z\");\n}", "import _without from \"lodash/without\";\nimport _pick from \"lodash/pick\";\nimport _keys from \"lodash/keys\";\nimport _isNil from \"lodash/isNil\";\nimport _isFunction from \"lodash/isFunction\";\nimport _isEmpty from \"lodash/isEmpty\";\nimport _difference from \"lodash/difference\";\nimport _defaults from \"lodash/defaults\";\nimport _assign from \"lodash/assign\";\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (typeof call === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport React from \"react\";\nimport * as Events from \"./events\";\nimport isEqual from \"react-fast-compare\";\nimport { VictoryTransition } from \"../victory-transition/victory-transition\";\n\n// DISCLAIMER:\n// This file is not currently tested, and it is first on the list of files\n// to refactor in our current refactoring effort. Please do not make changes\n// to this file without manual testing and/or refactoring and adding tests.\nvar datumHasXandY = function (datum) {\n  return !_isNil(datum._x) && !_isNil(datum._y);\n}; //  used for checking state changes. Expected components can be passed in via options\n\n\nvar defaultComponents = [{\n  name: \"parent\",\n  index: \"parent\"\n}, {\n  name: \"data\"\n}, {\n  name: \"labels\"\n}];\nexport function addEvents(WrappedComponent) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  // @ts-expect-error \"TS2545: A mixin class must have a constructor with a single rest parameter of type 'any[]'.\"\n  var AddEventsMixin = /*#__PURE__*/function (_WrappedComponent) {\n    _inherits(AddEventsMixin, _WrappedComponent);\n\n    var _super = _createSuper(AddEventsMixin);\n\n    function AddEventsMixin(props) {\n      var _this;\n\n      _classCallCheck(this, AddEventsMixin);\n\n      _this = _super.call(this, props);\n      _this.state = {};\n      _this.getEventState = Events.getEventState.bind(_assertThisInitialized(_this));\n      _this.getScopedEvents = Events.getScopedEvents.bind(_assertThisInitialized(_this));\n\n      _this.getEvents = function (p, target, eventKey) {\n        return Events.getEvents.call(_assertThisInitialized(_this), p, target, eventKey, _this.getScopedEvents);\n      };\n\n      _this.externalMutations = _this.getExternalMutations(_this.props);\n      _this.calculatedState = _this.getStateChanges(_this.props);\n      _this.globalEvents = {};\n      _this.prevGlobalEventKeys = [];\n      _this.boundGlobalEvents = {};\n\n      _this.cacheValues(_this.getCalculatedValues(props));\n\n      return _this;\n    }\n\n    _createClass(AddEventsMixin, [{\n      key: \"shouldComponentUpdate\",\n      value: function shouldComponentUpdate(nextProps) {\n        var externalMutations = this.getExternalMutations(nextProps); // @ts-expect-error \"Property 'animating' does not exist on type EventMixinCommonProps\"\n\n        var animating = this.props.animating || this.props.animate;\n        var newMutation = !isEqual(externalMutations, this.externalMutations);\n\n        if (animating || newMutation) {\n          this.cacheValues(this.getCalculatedValues(nextProps));\n          this.externalMutations = externalMutations;\n          this.applyExternalMutations(nextProps, externalMutations);\n          return true;\n        }\n\n        var calculatedState = this.getStateChanges(nextProps);\n\n        if (!isEqual(this.calculatedState, calculatedState)) {\n          this.cacheValues(this.getCalculatedValues(nextProps));\n          return true;\n        }\n\n        if (!isEqual(this.props, nextProps)) {\n          this.cacheValues(this.getCalculatedValues(nextProps));\n          return true;\n        }\n\n        return false;\n      }\n    }, {\n      key: \"componentDidMount\",\n      value: function componentDidMount() {\n        var _this2 = this;\n\n        var globalEventKeys = _keys(this.globalEvents);\n\n        globalEventKeys.forEach(function (key) {\n          return _this2.addGlobalListener(key);\n        });\n        this.prevGlobalEventKeys = globalEventKeys;\n      }\n    }, {\n      key: \"componentDidUpdate\",\n      value: function componentDidUpdate(prevProps) {\n        var _this3 = this;\n\n        var calculatedState = this.getStateChanges(prevProps);\n        this.calculatedState = calculatedState;\n\n        var globalEventKeys = _keys(this.globalEvents);\n\n        var removedGlobalEventKeys = _difference(this.prevGlobalEventKeys, globalEventKeys);\n\n        removedGlobalEventKeys.forEach(function (key) {\n          return _this3.removeGlobalListener(key);\n        });\n\n        var addedGlobalEventKeys = _difference(globalEventKeys, this.prevGlobalEventKeys);\n\n        addedGlobalEventKeys.forEach(function (key) {\n          return _this3.addGlobalListener(key);\n        });\n        this.prevGlobalEventKeys = globalEventKeys;\n      }\n    }, {\n      key: \"componentWillUnmount\",\n      value: function componentWillUnmount() {\n        var _this4 = this;\n\n        this.prevGlobalEventKeys.forEach(function (key) {\n          return _this4.removeGlobalListener(key);\n        });\n      }\n    }, {\n      key: \"addGlobalListener\",\n      value: function addGlobalListener(key) {\n        var _this5 = this;\n\n        var boundListener = function (event) {\n          var listener = _this5.globalEvents[key];\n          return listener && listener(Events.emulateReactEvent(event));\n        };\n\n        this.boundGlobalEvents[key] = boundListener;\n        window.addEventListener(Events.getGlobalEventNameFromKey(key), boundListener);\n      }\n    }, {\n      key: \"removeGlobalListener\",\n      value: function removeGlobalListener(key) {\n        window.removeEventListener(Events.getGlobalEventNameFromKey(key), this.boundGlobalEvents[key]);\n      } // compile all state changes from own and parent state. Order doesn't matter, as any state\n      // state change should trigger a re-render\n\n    }, {\n      key: \"getStateChanges\",\n      value: function getStateChanges(props) {\n        var _this6 = this;\n\n        if (!this.hasEvents) {\n          return {};\n        }\n\n        var getState = function (key, type) {\n          var result = _defaults({}, _this6.getEventState(key, type), _this6.getSharedEventState(key, type));\n\n          return _isEmpty(result) ? undefined : result;\n        };\n\n        var components = options.components || defaultComponents;\n        var stateChanges = components.map(function (component) {\n          if (!props.standalone && component.name === \"parent\") {\n            // don't check for changes on parent props for non-standalone components\n            return undefined;\n          }\n\n          return component.index !== undefined ? getState(component.index, component.name) : _this6.dataKeys.map(function (key) {\n            return getState(key, component.name);\n          }).filter(Boolean);\n        }).filter(Boolean);\n        return stateChanges;\n      }\n    }, {\n      key: \"applyExternalMutations\",\n      value: function applyExternalMutations(props, externalMutations) {\n        if (!_isEmpty(externalMutations)) {\n          var callbacks = props.externalEventMutations.reduce(function (memo, mutation) {\n            memo = _isFunction(mutation.callback) ? memo.concat(mutation.callback) : memo;\n            return memo;\n          }, []);\n          var compiledCallbacks = callbacks.length ? function () {\n            callbacks.forEach(function (c) {\n              return c();\n            });\n          } : undefined;\n          this.setState(externalMutations, compiledCallbacks);\n        }\n      }\n    }, {\n      key: \"getCalculatedValues\",\n      value: function getCalculatedValues(props) {\n        var sharedEvents = props.sharedEvents;\n        var components = WrappedComponent.expectedComponents;\n        var componentEvents = Events.getComponentEvents(props, components);\n        var getSharedEventState = sharedEvents && _isFunction(sharedEvents.getEventState) ? sharedEvents.getEventState : function () {\n          return undefined;\n        };\n        var baseProps = this.getBaseProps(props, getSharedEventState);\n\n        var dataKeys = _keys(baseProps).filter(function (key) {\n          return key !== \"parent\";\n        });\n\n        var hasEvents = props.events || props.sharedEvents || componentEvents;\n        var events = this.getAllEvents(props);\n        return {\n          componentEvents: componentEvents,\n          getSharedEventState: getSharedEventState,\n          baseProps: baseProps,\n          dataKeys: dataKeys,\n          hasEvents: hasEvents,\n          events: events\n        };\n      }\n    }, {\n      key: \"getExternalMutations\",\n      value: function getExternalMutations(props) {\n        var sharedEvents = props.sharedEvents,\n            externalEventMutations = props.externalEventMutations;\n        return _isEmpty(externalEventMutations) || sharedEvents ? undefined : Events.getExternalMutations(externalEventMutations, this.baseProps, this.state);\n      }\n    }, {\n      key: \"cacheValues\",\n      value: function cacheValues(obj) {\n        var _this7 = this;\n\n        _keys(obj).forEach(function (key) {\n          _this7[key] = obj[key];\n        });\n      }\n    }, {\n      key: \"getBaseProps\",\n      value: function getBaseProps(props, getSharedEventState) {\n        getSharedEventState = getSharedEventState || this.getSharedEventState.bind(this);\n        var sharedParentState = getSharedEventState(\"parent\", \"parent\");\n        var parentState = this.getEventState(\"parent\", \"parent\");\n\n        var baseParentProps = _defaults({}, parentState, sharedParentState);\n\n        var parentPropsList = baseParentProps.parentControlledProps;\n        var parentProps = parentPropsList ? _pick(baseParentProps, parentPropsList) : {};\n\n        var modifiedProps = _defaults({}, parentProps, props);\n\n        return typeof WrappedComponent.getBaseProps === \"function\" ? WrappedComponent.getBaseProps(modifiedProps) : {};\n      }\n    }, {\n      key: \"getAllEvents\",\n      value: function getAllEvents(props) {\n        if (Array.isArray(this.componentEvents)) {\n          var _this$componentEvents;\n\n          return Array.isArray(props.events) ? (_this$componentEvents = this.componentEvents).concat.apply(_this$componentEvents, _toConsumableArray(props.events)) : this.componentEvents;\n        }\n\n        return props.events;\n      }\n    }, {\n      key: \"getComponentProps\",\n      value: function getComponentProps(component, type, index) {\n        var name = this.props.name || WrappedComponent.role;\n        var key = this.dataKeys && this.dataKeys[index] || index;\n        var id = \"\".concat(name, \"-\").concat(type, \"-\").concat(key);\n        var baseProps = this.baseProps[key] && this.baseProps[key][type] || this.baseProps[key];\n\n        if (!baseProps && !this.hasEvents) {\n          return undefined;\n        }\n\n        if (this.hasEvents) {\n          var baseEvents = this.getEvents(this.props, type, key);\n\n          var componentProps = _defaults({\n            index: index,\n            key: id\n          }, this.getEventState(key, type), this.getSharedEventState(key, type), component.props, baseProps, {\n            id: id\n          });\n\n          var events = _defaults({}, Events.getPartialEvents(baseEvents, key, componentProps), componentProps.events);\n\n          return _assign({}, componentProps, {\n            events: events\n          });\n        }\n\n        return _defaults({\n          index: index,\n          key: id\n        }, component.props, baseProps, {\n          id: id\n        });\n      }\n    }, {\n      key: \"renderContainer\",\n      value: function renderContainer(component, children) {\n        var isContainer = component.type && component.type.role === \"container\";\n        var parentProps = isContainer ? this.getComponentProps(component, \"parent\", \"parent\") : {};\n\n        if (parentProps.events) {\n          this.globalEvents = Events.getGlobalEvents(parentProps.events);\n          parentProps.events = Events.omitGlobalEvents(parentProps.events);\n        }\n\n        return /*#__PURE__*/React.cloneElement(component, parentProps, children);\n      }\n    }, {\n      key: \"animateComponent\",\n      value: function animateComponent(props, defaultAnimationWhitelist) {\n        var _props$animate;\n\n        var animationWhitelist = typeof props.animate === \"object\" && ((_props$animate = props.animate) === null || _props$animate === void 0 ? void 0 : _props$animate.animationWhitelist) || defaultAnimationWhitelist;\n        var Comp = this.constructor;\n        return /*#__PURE__*/React.createElement(VictoryTransition, {\n          animate: props.animate,\n          animationWhitelist: animationWhitelist\n        }, /*#__PURE__*/React.createElement(Comp, props));\n      } // Used by `VictoryLine` and `VictoryArea`\n\n    }, {\n      key: \"renderContinuousData\",\n      value: function renderContinuousData(props) {\n        var _this8 = this;\n\n        var dataComponent = props.dataComponent,\n            labelComponent = props.labelComponent,\n            groupComponent = props.groupComponent;\n\n        var dataKeys = _without(this.dataKeys, \"all\");\n\n        var labelComponents = dataKeys.reduce(function (memo, key) {\n          var labelProps = _this8.getComponentProps(labelComponent, \"labels\", key);\n\n          if (labelProps && labelProps.text !== undefined && labelProps.text !== null) {\n            memo = memo.concat( /*#__PURE__*/React.cloneElement(labelComponent, labelProps));\n          }\n\n          return memo;\n        }, []);\n        var dataProps = this.getComponentProps(dataComponent, \"data\", \"all\");\n        var children = [/*#__PURE__*/React.cloneElement(dataComponent, dataProps)].concat(_toConsumableArray(labelComponents));\n        return this.renderContainer(groupComponent, children);\n      }\n    }, {\n      key: \"renderData\",\n      value: function renderData(props) {\n        var _this9 = this;\n\n        var shouldRenderDatum = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : datumHasXandY;\n        var dataComponent = props.dataComponent,\n            labelComponent = props.labelComponent,\n            groupComponent = props.groupComponent;\n        var dataComponents = this.dataKeys.reduce(function (validDataComponents, _dataKey, index) {\n          var dataProps = _this9.getComponentProps(dataComponent, \"data\", index);\n\n          if (shouldRenderDatum(dataProps.datum)) {\n            validDataComponents.push( /*#__PURE__*/React.cloneElement(dataComponent, dataProps));\n          }\n\n          return validDataComponents;\n        }, []);\n        var labelComponents = this.dataKeys.map(function (_dataKey, index) {\n          var labelProps = _this9.getComponentProps(labelComponent, \"labels\", index);\n\n          if (labelProps.text !== undefined && labelProps.text !== null) {\n            return /*#__PURE__*/React.cloneElement(labelComponent, labelProps);\n          }\n\n          return undefined;\n        }).filter(Boolean);\n        var children = [].concat(_toConsumableArray(dataComponents), _toConsumableArray(labelComponents));\n        return this.renderContainer(groupComponent, children);\n      }\n    }]);\n\n    return AddEventsMixin;\n  }(WrappedComponent);\n\n  return AddEventsMixin;\n}", "import _keys from \"lodash/keys\";\nimport _includes from \"lodash/includes\";\nimport _uniq from \"lodash/uniq\";\nimport _omitBy from \"lodash/omitBy\";\nimport _pickBy from \"lodash/pickBy\";\nimport _without from \"lodash/without\";\nimport _isFunction from \"lodash/isFunction\";\nimport _isEmpty from \"lodash/isEmpty\";\nimport _assign from \"lodash/assign\";\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nvar GLOBAL_EVENT_REGEX = /^onGlobal(.*)$/;\n\n/* Returns all own and shared events that should be attached to a single target element,\n * i.e. an individual bar specified by target: \"data\", eventKey: [index].\n * Returned events are scoped to the appropriate state. Either that of the component itself\n * (i.e. VictoryBar) in the case of own events, or that of the parent component\n * (i.e. VictoryChart) in the case of shared events\n */\n// eslint-disable-next-line max-params\nexport function getEvents(props, target, eventKey, // eslint-disable-next-line no-shadow\ngetScopedEvents) {\n  var _this = this;\n\n  // Returns all events that apply to a particular target element\n  var getEventsByTarget = function (events) {\n    var getSelectedEvents = function () {\n      var targetEvents = events.reduce(function (memo, event) {\n        if (event.target !== undefined) {\n          var matchesTarget = Array.isArray(event.target) ? _includes(event.target, target) : \"\".concat(event.target) === \"\".concat(target);\n          return matchesTarget ? memo.concat(event) : memo;\n        }\n\n        return memo.concat(event);\n      }, []);\n\n      if (eventKey !== undefined && target !== \"parent\") {\n        return targetEvents.filter(function (obj) {\n          var targetKeys = obj.eventKey;\n\n          var useKey = function (key) {\n            return key ? \"\".concat(key) === \"\".concat(eventKey) : true;\n          };\n\n          return Array.isArray(targetKeys) ? targetKeys.some(function (k) {\n            return useKey(k);\n          }) : useKey(targetKeys);\n        });\n      }\n\n      return targetEvents;\n    };\n\n    var selectedEvents = getSelectedEvents();\n    return Array.isArray(selectedEvents) && selectedEvents.reduce(function (memo, event) {\n      return event ? _assign(memo, event.eventHandlers) : memo;\n    }, {});\n  };\n  /* Returns all events from props and defaultEvents from components. Events handlers\n   * specified in props will override handlers for the same event if they are also\n   * specified in defaultEvents of a sub-component\n   */\n\n\n  var getAllEvents = function () {\n    // Mandatory usage: `getEvents.bind(this)`\n\n    /* eslint-disable no-invalid-this */\n    if (Array.isArray(_this.componentEvents)) {\n      var _this$componentEvents;\n\n      return Array.isArray(props.events) ? (_this$componentEvents = _this.componentEvents).concat.apply(_this$componentEvents, _toConsumableArray(props.events)) : _this.componentEvents;\n    }\n    /* eslint-enable no-invalid-this */\n\n\n    return props.events;\n  };\n\n  var allEvents = getAllEvents();\n  var ownEvents = allEvents && _isFunction(getScopedEvents) ? getScopedEvents(getEventsByTarget(allEvents), target) : undefined;\n\n  if (!props.sharedEvents) {\n    return ownEvents;\n  }\n\n  var getSharedEvents = props.sharedEvents.getEvents;\n  var sharedEvents = props.sharedEvents.events && getSharedEvents(getEventsByTarget(props.sharedEvents.events), target);\n  return _assign({}, sharedEvents, ownEvents);\n}\n/* Returns a modified events object where each event handler is replaced by a new\n * function that calls the original handler and then calls setState with the return\n * of the original event handler assigned to state property that maps to the target\n * element.\n */\n// eslint-disable-next-line max-params\n\nexport function getScopedEvents(events, namespace, childType, baseProps) {\n  var _this2 = this;\n\n  if (_isEmpty(events)) {\n    return {};\n  } // Mandatory usage: `getScopedEvents.bind(this)`\n  // eslint-disable-next-line no-invalid-this\n\n\n  baseProps = baseProps || this.baseProps; // returns the original base props or base state of a given target element\n\n  var getTargetProps = function (identifier, type) {\n    var childName = identifier.childName,\n        target = identifier.target,\n        key = identifier.key; // eslint-disable-next-line no-invalid-this\n\n    var baseType = type === \"props\" ? baseProps : _this2.state || {};\n    var base = childName === undefined || childName === null || !baseType[childName] ? baseType : baseType[childName];\n    return key === \"parent\" ? base.parent : base[key] && base[key][target];\n  }; // Returns the state object with the mutation caused by a given eventReturn\n  // applied to the appropriate property on the state object\n\n\n  var parseEvent = function (eventReturn, eventKey) {\n    var childNames = namespace === \"parent\" ? eventReturn.childName : eventReturn.childName || childType;\n    var target = eventReturn.target || namespace; // returns all eventKeys to modify for a targeted childName\n\n    var getKeys = function (childName) {\n      if (target === \"parent\") {\n        return \"parent\";\n      }\n\n      if (eventReturn.eventKey === \"all\") {\n        return baseProps[childName] ? _without(_keys(baseProps[childName]), \"parent\") : _without(_keys(baseProps), \"parent\");\n      } else if (eventReturn.eventKey === undefined && eventKey === \"parent\") {\n        return baseProps[childName] ? _keys(baseProps[childName]) : _keys(baseProps);\n      }\n\n      return eventReturn.eventKey !== undefined ? eventReturn.eventKey : eventKey;\n    }; // returns the state object with mutated props applied for a single key\n\n\n    var getMutationObject = function (key, childName) {\n      // eslint-disable-next-line no-invalid-this\n      var baseState = _this2.state || {};\n\n      if (!_isFunction(eventReturn.mutation)) {\n        return baseState;\n      }\n\n      var mutationTargetProps = getTargetProps({\n        childName: childName,\n        key: key,\n        target: target\n      }, \"props\");\n      var mutationTargetState = getTargetProps({\n        childName: childName,\n        key: key,\n        target: target\n      }, \"state\");\n      var mutatedProps = eventReturn.mutation(_assign({}, mutationTargetProps, mutationTargetState), baseProps);\n      var childState = baseState[childName] || {};\n\n      var filterState = function (state) {\n        if (state[key] && state[key][target]) {\n          delete state[key][target];\n        }\n\n        if (state[key] && !_keys(state[key]).length) {\n          delete state[key];\n        }\n\n        return state;\n      };\n\n      var extendState = function (state) {\n        return target === \"parent\" ? _assign(state, _defineProperty({}, key, _assign(state[key], mutatedProps))) : _assign(state, _defineProperty({}, key, _assign(state[key], _defineProperty({}, target, mutatedProps))));\n      };\n\n      var updateState = function (state) {\n        return mutatedProps ? extendState(state) : filterState(state);\n      };\n\n      return childName !== undefined && childName !== null ? _assign(baseState, _defineProperty({}, childName, updateState(childState))) : updateState(baseState);\n    }; // returns entire mutated state for a given childName\n\n\n    var getReturnByChild = function (childName) {\n      var mutationKeys = getKeys(childName);\n      return Array.isArray(mutationKeys) ? mutationKeys.reduce(function (memo, key) {\n        return _assign(memo, getMutationObject(key, childName));\n      }, {}) : getMutationObject(mutationKeys, childName);\n    }; // returns an entire mutated state for all children\n\n\n    var allChildNames = childNames === \"all\" ? _without(_keys(baseProps), \"parent\") : childNames;\n    return Array.isArray(allChildNames) ? allChildNames.reduce(function (memo, childName) {\n      return _assign(memo, getReturnByChild(childName));\n    }, {}) : getReturnByChild(allChildNames);\n  }; // Parses an array of event returns into a single state mutation\n\n\n  var parseEventReturn = function (eventReturn, eventKey) {\n    return Array.isArray(eventReturn) ? eventReturn.reduce(function (memo, props) {\n      memo = _assign({}, memo, parseEvent(props, eventKey));\n      return memo;\n    }, {}) : parseEvent(eventReturn, eventKey);\n  };\n\n  var compileCallbacks = function (eventReturn) {\n    var getCallback = function (obj) {\n      return _isFunction(obj.callback) && obj.callback;\n    };\n\n    var callbacks = Array.isArray(eventReturn) ? eventReturn.map(function (evtObj) {\n      return getCallback(evtObj);\n    }) : [getCallback(eventReturn)];\n    var callbackArray = callbacks.filter(function (callback) {\n      return callback !== false;\n    });\n    return callbackArray.length ? function () {\n      return callbackArray.forEach(function (callback) {\n        return callback();\n      });\n    } : undefined;\n  }; // A function that calls a particular event handler, parses its return\n  // into a state mutation, and calls setState\n  // eslint-disable-next-line max-params\n\n\n  var onEvent = function (evt, childProps, eventKey, eventName) {\n    // eslint-disable-next-line no-invalid-this\n    var eventReturn = events[eventName](evt, childProps, eventKey, _this2);\n\n    if (!_isEmpty(eventReturn)) {\n      var callbacks = compileCallbacks(eventReturn); // eslint-disable-next-line no-invalid-this\n\n      _this2.setState(parseEventReturn(eventReturn, eventKey), callbacks);\n    }\n  }; // returns a new events object with enhanced event handlers\n\n\n  return _keys(events).reduce(function (memo, event) {\n    memo[event] = onEvent;\n    return memo;\n  }, {});\n}\n/*\n * Returns a partially applied event handler for a specific target element\n * This allows event handlers to have access to props controlling each element\n */\n\nexport function getPartialEvents(events, eventKey, childProps) {\n  if (!events) return {};\n  return _keys(events).reduce(function (memo, eventName) {\n    var appliedEvent = function (evt) {\n      return events[eventName](evt, childProps, eventKey, eventName);\n    };\n\n    memo[eventName] = appliedEvent;\n    return memo;\n  }, {});\n}\n\n/* Returns the property of the state object corresponding to event changes for\n * a particular element\n */\n// eslint-disable-next-line max-params\nexport function getEventState(eventKey, namespace, childType) {\n  // Mandatory usage: `getEventState.bind(this)`\n  // eslint-disable-next-line no-invalid-this\n  var state = this.state || {};\n\n  if (!childType) {\n    return eventKey === \"parent\" ? state[eventKey] && state[eventKey][namespace] || state[eventKey] : state[eventKey] && state[eventKey][namespace];\n  }\n\n  return state[childType] && state[childType][eventKey] && state[childType][eventKey][namespace];\n}\n/**\n * Returns a set of all mutations for shared events\n *\n * @param  {Array} mutations an array of mutations objects\n * @param  {Object} baseProps an object that describes all props for children of VictorySharedEvents\n * @param  {Object} baseState an object that describes state for children of VictorySharedEvents\n * @param  {Array} childNames an array of childNames\n *\n * @return {Object} a object describing all mutations for VictorySharedEvents\n */\n// eslint-disable-next-line max-params\n\nexport function getExternalMutationsWithChildren(mutations, baseProps, baseState, childNames) {\n  baseProps = baseProps || {};\n  baseState = baseState || {};\n  return childNames.reduce(function (memo, childName) {\n    var childState = baseState[childName];\n    var mutation = getExternalMutations(mutations, baseProps[childName], baseState[childName], childName);\n    memo[childName] = mutation ? mutation : childState;\n    return _pickBy(memo, function (v) {\n      return !_isEmpty(v);\n    });\n  }, {});\n}\n/**\n * Returns a set of all mutations for a component\n *\n * @param  {Array} mutations an array of mutations objects\n * @param  {Object} baseProps a props object (scoped to a childName when used by shared events)\n * @param  {Object} baseState a state object (scoped to a childName when used by shared events)\n * @param  {String} childName an optional childName\n *\n * @return {Object} a object describing mutations for a given component\n */\n// eslint-disable-next-line max-params\n\nexport function getExternalMutations(mutations, baseProps, baseState, childName) {\n  baseProps = baseProps || {};\n  baseState = baseState || {};\n\n  var eventKeys = _keys(baseProps);\n\n  return eventKeys.reduce(function (memo, eventKey) {\n    var keyState = baseState[eventKey] || {};\n    var keyProps = baseProps[eventKey] || {};\n\n    if (eventKey === \"parent\") {\n      var identifier = {\n        eventKey: eventKey,\n        target: \"parent\"\n      };\n      var mutation = getExternalMutation(mutations, keyProps, keyState, identifier);\n      memo[eventKey] = mutation !== undefined ? _assign({}, keyState, mutation) : keyState;\n    } else {\n      // use keys from both state and props so that elements not intially included in baseProps\n      // will be used. (i.e. labels)\n      var targets = _uniq(_keys(keyProps).concat(_keys(keyState)));\n\n      memo[eventKey] = targets.reduce(function (m, target) {\n        var identifier = {\n          eventKey: eventKey,\n          target: target,\n          childName: childName\n        };\n        var mutation = getExternalMutation(mutations, keyProps[target], keyState[target], identifier);\n        m[target] = mutation !== undefined ? _assign({}, keyState[target], mutation) : keyState[target];\n        return _pickBy(m, function (v) {\n          return !_isEmpty(v);\n        });\n      }, {});\n    }\n\n    return _pickBy(memo, function (v) {\n      return !_isEmpty(v);\n    });\n  }, {});\n}\n/**\n * Returns a set of mutations for a particular element given scoped baseProps and baseState\n *\n * @param  {Array} mutations an array of mutations objects\n * @param  {Object} baseProps a props object (scoped the element specified by the identifier)\n * @param  {Object} baseState a state object (scoped the element specified by the identifier)\n * @param  {Object} identifier { eventKey, target, childName }\n *\n * @return {Object | undefined} a object describing mutations for a given element, or undefined\n */\n// eslint-disable-next-line max-params\n\nexport function getExternalMutation(mutations, baseProps, baseState, identifier) {\n  var filterMutations = function (mutation, type) {\n    if (typeof mutation[type] === \"string\") {\n      return mutation[type] === \"all\" || mutation[type] === identifier[type];\n    } else if (Array.isArray(mutation[type])) {\n      // coerce arrays to strings before matching\n      var stringArray = mutation[type].map(function (m) {\n        return \"\".concat(m);\n      });\n      return _includes(stringArray, identifier[type]);\n    }\n\n    return false;\n  };\n\n  mutations = Array.isArray(mutations) ? mutations : [mutations];\n  var scopedMutations = mutations;\n\n  if (identifier.childName) {\n    scopedMutations = mutations.filter(function (m) {\n      return filterMutations(m, \"childName\");\n    });\n  } // find any mutation objects that match the target\n\n\n  var targetMutations = scopedMutations.filter(function (m) {\n    return filterMutations(m, \"target\");\n  });\n\n  if (_isEmpty(targetMutations)) {\n    return undefined;\n  }\n\n  var keyMutations = targetMutations.filter(function (m) {\n    return filterMutations(m, \"eventKey\");\n  });\n\n  if (_isEmpty(keyMutations)) {\n    return undefined;\n  }\n\n  return keyMutations.reduce(function (memo, curr) {\n    var mutationFunction = curr && _isFunction(curr.mutation) ? curr.mutation : function () {\n      return undefined;\n    };\n    var currentMutation = mutationFunction(_assign({}, baseProps, baseState));\n    return _assign({}, memo, currentMutation);\n  }, {});\n}\n/* Returns an array of defaultEvents from sub-components of a given component.\n * i.e. any static `defaultEvents` on `labelComponent` will be returned\n */\n\nexport function getComponentEvents(props, components) {\n  var events = Array.isArray(components) && components.reduce(function (memo, componentName) {\n    var _memo;\n\n    var component = props[componentName];\n    var defaultEvents = component && component.type && component.type.defaultEvents;\n    var componentEvents = _isFunction(defaultEvents) ? defaultEvents(component.props) : defaultEvents;\n    memo = Array.isArray(componentEvents) ? (_memo = memo).concat.apply(_memo, _toConsumableArray(componentEvents)) : memo;\n    return memo;\n  }, []);\n  return events && events.length ? events : undefined;\n}\nexport function getGlobalEventNameFromKey(key) {\n  var match = key.match(GLOBAL_EVENT_REGEX);\n  return match && match[1] && match[1].toLowerCase();\n}\nexport var getGlobalEvents = function (events) {\n  return _pickBy(events, function (_, key) {\n    return GLOBAL_EVENT_REGEX.test(key);\n  });\n};\nexport var omitGlobalEvents = function (events) {\n  return _omitBy(events, function (_, key) {\n    return GLOBAL_EVENT_REGEX.test(key);\n  });\n};\nexport var emulateReactEvent = function (event) {\n  return _assign(event, {\n    nativeEvent: event\n  });\n};", "import _without from \"lodash/without\";\nimport _includes from \"lodash/includes\";\nimport _values from \"lodash/values\";\nimport _orderBy from \"lodash/orderBy\";\nimport _range from \"lodash/range\";\nimport _uniq from \"lodash/uniq\";\nimport _invert from \"lodash/invert\";\nimport _isObject from \"lodash/isObject\";\nimport _isFunction from \"lodash/isFunction\";\nimport _identity from \"lodash/identity\";\nimport _defaults from \"lodash/defaults\";\nimport _assign from \"lodash/assign\";\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nimport React from \"react\";\nimport * as Collection from \"./collection\";\nimport * as Domain from \"./domain\";\nimport * as Helpers from \"./helpers\";\n\n/**\n * Returns the axis (x or y) of a particular axis component\n * @param {Object} props: the props object.\n * @param {Boolean} horizontal: true for horizontal charts\n * @returns {String} the dimension appropriate for the axis given its props\n */\nexport function getAxis(props) {\n  var dependentAxis = props.dependentAxis;\n  return dependentAxis ? \"y\" : \"x\";\n}\n/**\n * Returns all axis components that pass a given predicate\n * @param {Array} childComponents: an array of children\n * @param {Function} predicate: a predicate function that will be called with each\n * @returns {Array} all axis components that pass the given predicate or []\n */\n\nexport function findAxisComponents(childComponents, predicate) {\n  predicate = predicate || _identity;\n\n  var findAxes = function (children) {\n    return children.reduce(function (memo, child) {\n      if (child.type && child.type.role === \"axis\" && predicate(child)) {\n        return memo.concat(child);\n      } else if (child.props && child.props.children) {\n        return memo.concat(findAxes(React.Children.toArray(child.props.children)));\n      }\n\n      return memo;\n    }, []);\n  };\n\n  return findAxes(childComponents);\n}\n/**\n * Returns a single axis component of the desired axis type (x or y)\n * @param {Array} childComponents: an array of children\n * @param {String} axis: desired axis either \"x\" or \"y\".\n * @returns {ReactComponent} an axis component of the desired axis or undefined\n */\n\nexport function getAxisComponent(childComponents, axis) {\n  var matchesAxis = function (component) {\n    var type = component.type.getAxis(component.props);\n    return type === axis;\n  };\n\n  return findAxisComponents(childComponents, matchesAxis)[0];\n}\n/**\n * Returns all axis components of the desired axis type (x or y) along with any\n * parent components excluding VictoryChart\n * @param {Array} childComponents: an optional array of children.\n * @param {String} type: desired axis either \"dependent\" or \"independent\".\n * @returns {ReactComponent} an axis component of the desired type or undefined\n */\n\nexport function getAxisComponentsWithParent(childComponents, type) {\n  var matchesType = function (child) {\n    return type === \"dependent\" ? child.props.dependentAxis : !child.props.dependentAxis;\n  };\n\n  var findComponents = function (children) {\n    return children.reduce(function (memo, child) {\n      if (child.type && child.type.role === \"axis\" && matchesType(child)) {\n        return memo.concat(child);\n      } else if (child.props && child.props.children) {\n        var childAxis = findComponents(React.Children.toArray(child.props.children));\n        return childAxis.length > 0 ? memo.concat(child) : memo;\n      }\n\n      return memo;\n    }, []);\n  };\n\n  return findComponents(childComponents);\n}\nexport function getOrigin(domain) {\n  var getSingleOrigin = function (d) {\n    var domainMin = Math.min.apply(Math, _toConsumableArray(d));\n    var domainMax = Math.max.apply(Math, _toConsumableArray(d));\n    return domainMax < 0 ? domainMax : Math.max(0, domainMin);\n  };\n\n  return {\n    x: Collection.containsDates(domain.x) ? new Date(Math.min.apply(Math, _toConsumableArray(domain.x))) : getSingleOrigin(domain.x),\n    y: Collection.containsDates(domain.y) ? new Date(Math.min.apply(Math, _toConsumableArray(domain.y))) : getSingleOrigin(domain.y)\n  };\n}\nexport function getOriginSign(origin, domain) {\n  var getSign = function () {\n    return origin <= 0 && Math.max.apply(Math, _toConsumableArray(domain)) <= 0 ? \"negative\" : \"positive\";\n  };\n\n  return Collection.containsDates(domain) ? \"positive\" : getSign();\n}\n/**\n * @param {Object} props: axis component props\n * @returns {Boolean} true when the axis is vertical\n */\n\nexport function isVertical(props) {\n  var orientation = props.orientation || (props.dependentAxis ? \"left\" : \"bottom\");\n  var vertical = {\n    top: false,\n    bottom: false,\n    left: true,\n    right: true\n  };\n  return vertical[orientation];\n}\n/**\n * @param {Object} props: axis component props\n * @returns {Boolean} true when tickValues contain strings\n */\n\nexport function stringTicks(props) {\n  return props.tickValues !== undefined && Collection.containsStrings(props.tickValues);\n}\n\nfunction getDefaultTickFormat(props) {\n  var tickValues = props.tickValues;\n  var axis = getAxis(props);\n  var stringMap = props.stringMap && props.stringMap[axis];\n  var fallbackFormat = tickValues && !Collection.containsDates(tickValues) ? function (x) {\n    return x;\n  } : undefined;\n\n  if (!stringMap) {\n    return stringTicks(props) ? function (x, index) {\n      return tickValues[index];\n    } : fallbackFormat;\n  }\n\n  var invertedStringMap = stringMap && _invert(stringMap);\n\n  var tickValueArray = _orderBy(_values(stringMap), function (n) {\n    return n;\n  });\n\n  var dataNames = tickValueArray.map(function (tick) {\n    return invertedStringMap[tick];\n  }); // string ticks should have one tick of padding at the beginning\n\n  var dataTicks = [\"\"].concat(_toConsumableArray(dataNames), [\"\"]);\n  return function (x) {\n    return dataTicks[x];\n  };\n}\n\nfunction getStringTicks(props) {\n  var axis = getAxis(props);\n  var stringMap = props.stringMap && props.stringMap[axis];\n  var categories = Array.isArray(props.categories) ? props.categories : props.categories && props.categories[axis];\n  var ticksFromCategories = categories && Collection.containsOnlyStrings(categories) ? categories.map(function (tick) {\n    return stringMap[tick];\n  }) : undefined;\n\n  var ticksFromStringMap = stringMap && _values(stringMap);\n\n  return ticksFromCategories && ticksFromCategories.length !== 0 ? ticksFromCategories : ticksFromStringMap;\n}\n\nfunction getTickArray(props) {\n  var tickValues = props.tickValues,\n      tickFormat = props.tickFormat;\n  var axis = getAxis(props);\n  var stringMap = props.stringMap && props.stringMap[axis];\n\n  var getTicksFromFormat = function () {\n    if (!tickFormat || !Array.isArray(tickFormat)) {\n      return undefined;\n    }\n\n    return Collection.containsStrings(tickFormat) ? tickFormat.map(function (t, i) {\n      return i;\n    }) : tickFormat;\n  };\n\n  var ticks = tickValues;\n\n  if (stringMap) {\n    ticks = getStringTicks(props);\n  }\n\n  if (tickValues && Collection.containsStrings(tickValues)) {\n    ticks = stringMap ? tickValues.map(function (tick) {\n      return stringMap[tick];\n    }) : _range(1, tickValues.length + 1);\n  }\n\n  var tickArray = ticks ? _uniq(ticks) : getTicksFromFormat();\n\n  var buildTickArray = function (arr) {\n    var newTickArray = [];\n    var domain = props.domain && props.domain[axis] || props.domain;\n\n    if (arr) {\n      arr.forEach(function (t, index) {\n        if (Array.isArray(domain)) {\n          if (t >= Collection.getMinValue(domain) && t <= Collection.getMaxValue(domain)) {\n            newTickArray.push({\n              value: t,\n              index: index\n            });\n          }\n        } else {\n          newTickArray.push({\n            value: t,\n            index: index\n          });\n        }\n      });\n      return newTickArray;\n    }\n\n    return undefined;\n  };\n\n  return Array.isArray(tickArray) && tickArray.length ? buildTickArray(tickArray) : undefined;\n}\n\nexport function getTickFormat(props, scale) {\n  var tickFormat = props.tickFormat;\n  var axis = getAxis(props);\n  var stringMap = props.stringMap && props.stringMap[axis];\n\n  if (!tickFormat) {\n    var defaultTickFormat = getDefaultTickFormat(props); // If there is no user-provided tick format, we use d3's tickFormat function\n    // by default. This changed the default formatting for some scale types when\n    // we upgraded to d3-scale@4..\n\n    var scaleTickFormat = scale.tickFormat && _isFunction(scale.tickFormat) ? scale.tickFormat() : function (x) {\n      return x;\n    };\n    return defaultTickFormat || scaleTickFormat;\n  } else if (tickFormat && Array.isArray(tickFormat)) {\n    var tickArray = getTickArray(props);\n    var tickArrayIndices = tickArray === null || tickArray === void 0 ? void 0 : tickArray.map(function (v) {\n      return v.index;\n    });\n    var filteredTickFormat = tickFormat.filter(function (t, index) {\n      return tickArrayIndices === null || tickArrayIndices === void 0 ? void 0 : tickArrayIndices.includes(index);\n    });\n    return function (x, index) {\n      return filteredTickFormat[index];\n    };\n  } else if (tickFormat && _isFunction(tickFormat)) {\n    var applyStringTicks = function (tick, index, ticks) {\n      var invertedStringMap = _invert(stringMap);\n\n      var stringTickArray = ticks.map(function (t) {\n        return invertedStringMap[t];\n      });\n      return props.tickFormat(invertedStringMap[tick], index, stringTickArray);\n    };\n\n    return stringMap ? applyStringTicks : tickFormat;\n  }\n\n  return function (x) {\n    return x;\n  };\n}\n\nfunction downsampleTicks(ticks, tickCount) {\n  if (!tickCount || !Array.isArray(ticks) || ticks.length <= tickCount) {\n    return ticks;\n  }\n\n  var k = Math.floor(ticks.length / tickCount);\n  return ticks.filter(function (d, i) {\n    return i % k === 0;\n  });\n}\n\nexport function getTicks(props, scale) {\n  var filterZero = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n  var tickCount = props.tickCount;\n  var tickArray = getTickArray(props);\n  var tickValues = tickArray ? tickArray.map(function (v) {\n    return v.value;\n  }) : undefined;\n\n  if (tickValues) {\n    return downsampleTicks(tickValues, tickCount);\n  } else if (scale.ticks && _isFunction(scale.ticks)) {\n    // eslint-disable-next-line no-magic-numbers\n    var defaultTickCount = tickCount || 5;\n    var scaleTicks = scale.ticks(defaultTickCount);\n    var scaledTickArray = Array.isArray(scaleTicks) && scaleTicks.length ? scaleTicks : scale.domain();\n    var ticks = downsampleTicks(scaledTickArray, tickCount);\n\n    if (filterZero) {\n      var filteredTicks = _includes(ticks, 0) ? _without(ticks, 0) : ticks;\n      return filteredTicks.length ? filteredTicks : ticks;\n    }\n\n    return ticks;\n  }\n\n  return scale.domain();\n}\n/**\n * Returns a domain based tickValues\n * @param {Object} props: the props object\n * @param {String} axis: either x or y\n * @returns {Array} returns a domain from tickValues\n */\n// eslint-disable-next-line max-statements\n\nfunction getDomainFromData(props, axis) {\n  var polar = props.polar,\n      _props$startAngle = props.startAngle,\n      startAngle = _props$startAngle === void 0 ? 0 : _props$startAngle,\n      _props$endAngle = props.endAngle,\n      endAngle = _props$endAngle === void 0 ? 360 : _props$endAngle;\n  var tickArray = getTickArray(props);\n  var tickValues = tickArray ? tickArray.map(function (v) {\n    return v.value;\n  }) : undefined;\n\n  if (!Array.isArray(tickValues)) {\n    return undefined;\n  }\n\n  var minDomain = Domain.getMinFromProps(props, axis);\n  var maxDomain = Domain.getMaxFromProps(props, axis);\n  var tickStrings = stringTicks(props);\n  var ticks = tickValues.map(function (value) {\n    return Number(value);\n  });\n  var defaultMin = tickStrings ? 1 : Collection.getMinValue(ticks);\n  var defaultMax = tickStrings ? tickValues.length : Collection.getMaxValue(ticks);\n  var min = minDomain !== undefined ? minDomain : defaultMin;\n  var max = maxDomain !== undefined ? maxDomain : defaultMax;\n  var initialDomain = Domain.getDomainFromMinMax(min, max);\n  var domain = polar && axis === \"x\" && Math.abs(startAngle - endAngle) === 360 ? Domain.getSymmetricDomain(initialDomain, ticks) : initialDomain;\n\n  if (isVertical(props) && !polar) {\n    domain.reverse();\n  }\n\n  return domain;\n} // exposed for use by VictoryChart\n\n\nexport function getDomain(props, axis) {\n  var inherentAxis = getAxis(props);\n\n  if (axis && axis !== inherentAxis) {\n    return undefined;\n  }\n\n  return Domain.createDomainFunction(getDomainFromData)(props, inherentAxis);\n}\nexport function getAxisValue(props, axis) {\n  if (!props.axisValue) {\n    return undefined;\n  }\n\n  var scaleAxis = axis === \"x\" ? \"y\" : \"x\";\n  var scale = _isObject(props.scale) && _isFunction(props.scale[scaleAxis]) ? props.scale[scaleAxis] : undefined;\n\n  if (!scale) {\n    return undefined;\n  }\n\n  var stringMapAxis = axis === \"x\" ? \"y\" : \"x\";\n  var stringMap = _isObject(props.stringMap) && props.stringMap[stringMapAxis];\n  var axisValue = stringMap && typeof props.axisValue === \"string\" ? stringMap[props.axisValue] : props.axisValue;\n  return scale(axisValue);\n}\nexport function modifyProps(props, fallbackProps) {\n  if (!_isObject(props.theme)) {\n    return Helpers.modifyProps(props, fallbackProps, \"axis\");\n  }\n\n  var role = \"axis\";\n\n  if (props.dependentAxis && props.theme.dependentAxis) {\n    role = \"dependentAxis\";\n  } else if (!props.dependentAxis && props.theme.independentAxis) {\n    role = \"independentAxis\";\n  }\n\n  if (role === \"axis\") {\n    return Helpers.modifyProps(props, fallbackProps, \"axis\");\n  }\n\n  var axisTheme = _defaults({}, props.theme[role], props.theme.axis);\n\n  var theme = _assign({}, props.theme, {\n    axis: axisTheme\n  });\n\n  return Helpers.modifyProps(_assign({}, props, {\n    theme: theme\n  }), fallbackProps, \"axis\");\n}", "import _isDate from \"lodash/isDate\";\nimport _includes from \"lodash/includes\";\nimport _isFunction from \"lodash/isFunction\";\nimport _sortedUniq from \"lodash/sortedUniq\";\nimport _isPlainObject from \"lodash/isPlainObject\";\nimport _flatten from \"lodash/flatten\";\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n/* eslint-disable no-use-before-define */\nimport React from \"react\";\nimport * as Data from \"./data\";\nimport * as Scale from \"./scale\";\nimport * as Helpers from \"./helpers\";\nimport * as Collection from \"./collection\"; // Private Methods\n\nfunction cleanDomain(domain, props, axis) {\n  var scaleType = Scale.getScaleType(props, axis);\n\n  if (scaleType !== \"log\") {\n    return domain;\n  }\n\n  var rules = function (dom) {\n    var almostZero = dom[0] < 0 || dom[1] < 0 ? -1 / Number.MAX_SAFE_INTEGER : 1 / Number.MAX_SAFE_INTEGER;\n    var domainOne = dom[0] === 0 ? almostZero : dom[0];\n    var domainTwo = dom[1] === 0 ? almostZero : dom[1];\n    return [domainOne, domainTwo];\n  };\n\n  return rules(domain);\n}\n\nfunction getDomainPadding(props, axis) {\n  var formatPadding = function (padding) {\n    return Array.isArray(padding) ? {\n      left: padding[0],\n      right: padding[1]\n    } : {\n      left: padding,\n      right: padding\n    };\n  };\n\n  return _isPlainObject(props.domainPadding) ? formatPadding(props.domainPadding[axis]) : formatPadding(props.domainPadding);\n}\n\nfunction getFlatData(dataset, axis) {\n  var axisKey = \"_\".concat(axis);\n  return _flatten(dataset).map(function (datum) {\n    return datum[axisKey] && datum[axisKey][1] !== undefined ? datum[axisKey][1] : datum[axisKey];\n  });\n}\n\nfunction getExtremeFromData(dataset, axis) {\n  var type = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : \"min\";\n\n  var getExtreme = function (arr) {\n    return type === \"max\" ? Math.max.apply(Math, _toConsumableArray(arr)) : Math.min.apply(Math, _toConsumableArray(arr));\n  };\n\n  var initialValue = type === \"max\" ? -Infinity : Infinity;\n  var containsDate = false;\n\n  var result = _flatten(dataset).reduce(function (memo, datum) {\n    var current0 = datum[\"_\".concat(axis, \"0\")] !== undefined ? datum[\"_\".concat(axis, \"0\")] : datum[\"_\".concat(axis)];\n    var current1 = datum[\"_\".concat(axis, \"1\")] !== undefined ? datum[\"_\".concat(axis, \"1\")] : datum[\"_\".concat(axis)];\n    var current = getExtreme([current0, current1]);\n    containsDate = containsDate || current0 instanceof Date || current1 instanceof Date;\n    return getExtreme([memo, current]);\n  }, initialValue);\n\n  return containsDate ? new Date(result) : result;\n} // eslint-disable-next-line max-statements\n\n\nfunction padDomain(domain, props, axis) {\n  if (!props.domainPadding) {\n    return domain;\n  }\n\n  var minDomain = getMinFromProps(props, axis);\n  var maxDomain = getMaxFromProps(props, axis);\n  var padding = getDomainPadding(props, axis);\n\n  if (!padding.left && !padding.right) {\n    return domain;\n  }\n\n  var min = Collection.getMinValue(domain);\n  var max = Collection.getMaxValue(domain);\n  var currentAxis = Helpers.getCurrentAxis(axis, props.horizontal);\n  var range = Helpers.getRange(props, currentAxis);\n  var rangeExtent = Math.abs(range[0] - range[1]);\n  var paddedRangeExtent = Math.max(rangeExtent - padding.left - padding.right, 1);\n  var paddedDomainExtent = Math.abs(max.valueOf() - min.valueOf()) / paddedRangeExtent * rangeExtent;\n  var simplePadding = {\n    left: paddedDomainExtent * padding.left / rangeExtent,\n    right: paddedDomainExtent * padding.right / rangeExtent\n  };\n  var paddedDomain = {\n    min: min.valueOf() - simplePadding.left,\n    max: max.valueOf() + simplePadding.right\n  };\n  var singleQuadrantDomainPadding = _isPlainObject(props.singleQuadrantDomainPadding) ? props.singleQuadrantDomainPadding[axis] : props.singleQuadrantDomainPadding;\n  var addsQuadrants = min >= 0 && paddedDomain.min <= 0 || max <= 0 && paddedDomain.max >= 0;\n\n  var adjust = function (val, type) {\n    var coerce = type === \"min\" && min >= 0 && val <= 0 || type === \"max\" && max <= 0 && val >= 0;\n    return coerce ? 0 : val;\n  };\n\n  if (addsQuadrants && singleQuadrantDomainPadding !== false) {\n    // Naive initial padding calculation\n    var initialPadding = {\n      // @ts-expect-error `max/min` might be dates\n      left: Math.abs(max - min) * padding.left / rangeExtent,\n      // @ts-expect-error `max/min` might be dates\n      right: Math.abs(max - min) * padding.right / rangeExtent\n    }; // Adjust the domain by the initial padding\n\n    var adjustedDomain = {\n      min: adjust(min.valueOf() - initialPadding.left, \"min\"),\n      max: adjust(max.valueOf() + initialPadding.right, \"max\")\n    }; // re-calculate padding, taking the adjusted domain into account\n\n    var finalPadding = {\n      left: Math.abs(adjustedDomain.max - adjustedDomain.min) * padding.left / rangeExtent,\n      right: Math.abs(adjustedDomain.max - adjustedDomain.min) * padding.right / rangeExtent\n    }; // Adjust the domain by the final padding\n\n    paddedDomain = {\n      min: adjust(min.valueOf() - finalPadding.left, \"min\"),\n      max: adjust(max.valueOf() + finalPadding.right, \"max\")\n    };\n  } // default to minDomain / maxDomain if they exist\n\n\n  var finalDomain = {\n    min: minDomain !== undefined ? minDomain : paddedDomain.min,\n    max: maxDomain !== undefined ? maxDomain : paddedDomain.max\n  };\n  return min instanceof Date || max instanceof Date ? getDomainFromMinMax(new Date(finalDomain.min), new Date(finalDomain.max)) : getDomainFromMinMax(finalDomain.min, finalDomain.max);\n} // Public Methods\n\n/**\n * Returns a getDomain function\n * @param {Function} getDomainFromDataFunction: a function that takes props and axis and\n * returns a domain based on data\n * @param {Function} formatDomainFunction: a function that takes domain, props, and axis and\n * returns a formatted domain\n * @returns {Function} a function that takes props and axis and returns a formatted domain\n */\n\n\nexport function createDomainFunction(getDomainFromDataFunction, formatDomainFunction) {\n  getDomainFromDataFunction = _isFunction(getDomainFromDataFunction) ? getDomainFromDataFunction : getDomainFromData;\n  formatDomainFunction = _isFunction(formatDomainFunction) ? formatDomainFunction : formatDomain;\n  return function (props, axis) {\n    var propsDomain = getDomainFromProps(props, axis);\n\n    if (propsDomain) {\n      return formatDomainFunction(propsDomain, props, axis);\n    }\n\n    var categories = Data.getCategories(props, axis);\n    var domain = categories ? getDomainFromCategories(props, axis, categories) : getDomainFromDataFunction(props, axis);\n    return domain ? formatDomainFunction(domain, props, axis) : undefined;\n  };\n}\n/**\n * Returns a formatted domain.\n * @param {Array} domain: a domain in the form of a two element array\n * @param {Object} props: the props object\n * @param {String} axis: the current axis\n * @returns {Array} a domain in the form of a two element array\n */\n\nexport function formatDomain(domain, props, axis) {\n  return cleanDomain(padDomain(domain, props, axis), props, axis);\n}\n/**\n * Returns a domain for a given axis based on props, category, or data\n * @param {Object} props: the props object\n * @param {String} axis: the current axis\n * @returns {Array} the domain for the given axis\n */\n\nexport function getDomain(props, axis) {\n  return createDomainFunction()(props, axis);\n}\n/**\n * Returns a domain based on categories if they exist\n * @param {Object} props: the props object\n * @param {String} axis: the current axis\n * @param {Array} categories: an array of categories corresponding to a given axis\n * @returns {Array|undefined} returns a domain from categories or undefined\n */\n\nexport function getDomainFromCategories(props, axis, categories) {\n  categories = categories || Data.getCategories(props, axis);\n  var polar = props.polar,\n      _props$startAngle = props.startAngle,\n      startAngle = _props$startAngle === void 0 ? 0 : _props$startAngle,\n      _props$endAngle = props.endAngle,\n      endAngle = _props$endAngle === void 0 ? 360 : _props$endAngle;\n\n  if (!categories) {\n    return undefined;\n  }\n\n  var minDomain = getMinFromProps(props, axis);\n  var maxDomain = getMaxFromProps(props, axis);\n  var stringArray = Collection.containsStrings(categories) ? Data.getStringsFromCategories(props, axis) : [];\n  var stringMap = stringArray.length === 0 ? null : stringArray.reduce(function (memo, string, index) {\n    memo[string] = index + 1;\n    return memo;\n  }, {});\n  var categoryValues = stringMap ? categories.map(function (value) {\n    return stringMap[value];\n  }) : categories;\n  var min = minDomain !== undefined ? minDomain : Collection.getMinValue(categoryValues);\n  var max = maxDomain !== undefined ? maxDomain : Collection.getMaxValue(categoryValues);\n  var categoryDomain = getDomainFromMinMax(min, max);\n  return polar && axis === \"x\" && Math.abs(startAngle - endAngle) === 360 ? getSymmetricDomain(categoryDomain, categoryValues) : categoryDomain;\n}\n/**\n * Returns a domain from a dataset for a given axis\n * @param {Object} props: the props object\n * @param {String} axis: the current axis\n * @param {Array} dataset: an array of data\n * @returns {Array} the domain based on data\n */\n\nexport function getDomainFromData(props, axis, dataset) {\n  dataset = dataset || Data.getData(props);\n  var polar = props.polar,\n      _props$startAngle2 = props.startAngle,\n      startAngle = _props$startAngle2 === void 0 ? 0 : _props$startAngle2,\n      _props$endAngle2 = props.endAngle,\n      endAngle = _props$endAngle2 === void 0 ? 360 : _props$endAngle2;\n  var minDomain = getMinFromProps(props, axis);\n  var maxDomain = getMaxFromProps(props, axis);\n\n  if (dataset.length < 1) {\n    return minDomain !== undefined && maxDomain !== undefined ? getDomainFromMinMax(minDomain, maxDomain) : undefined;\n  }\n\n  var min = minDomain !== undefined ? minDomain : getExtremeFromData(dataset, axis, \"min\");\n  var max = maxDomain !== undefined ? maxDomain : getExtremeFromData(dataset, axis, \"max\");\n  var domain = getDomainFromMinMax(min, max);\n  return polar && axis === \"x\" && Math.abs(startAngle - endAngle) === 360 ? getSymmetricDomain(domain, getFlatData(dataset, axis)) : domain;\n}\n/**\n * Returns a domain in the form of a two element array given a min and max value.\n * @param {Number|Date} min: the props object\n * @param {Number|Date} max: the current axis\n * @returns {Array} the minDomain based on props\n */\n\nexport function getDomainFromMinMax(min, max) {\n  var getSinglePointDomain = function (val) {\n    // d3-scale does not properly resolve very small differences.\n    var verySmallNumber = // eslint-disable-next-line no-magic-numbers\n    val === 0 ? 2 * Math.pow(10, -10) : Math.pow(10, -10);\n    var verySmallDate = 1;\n    var minVal = val instanceof Date ? new Date(Number(val) - verySmallDate) : Number(val) - verySmallNumber;\n    var maxVal = val instanceof Date ? new Date(Number(val) + verySmallDate) : Number(val) + verySmallNumber;\n    return val === 0 ? [0, maxVal] : [minVal, maxVal];\n  };\n\n  return Number(min) === Number(max) ? getSinglePointDomain(max) : [min, max];\n}\n/**\n * Returns a the domain for a given axis if domain is given in props\n * @param {Object} props: the props object\n * @param {String} axis: the current axis\n * @returns {Array|undefined} the domain based on props\n */\n\nexport function getDomainFromProps(props, axis) {\n  var minDomain = getMinFromProps(props, axis);\n  var maxDomain = getMaxFromProps(props, axis);\n\n  if (_isPlainObject(props.domain) && props.domain[axis]) {\n    return props.domain[axis];\n  } else if (Array.isArray(props.domain)) {\n    return props.domain;\n  } else if (minDomain !== undefined && maxDomain !== undefined) {\n    return getDomainFromMinMax(minDomain, maxDomain);\n  }\n\n  return undefined;\n}\n/**\n * Returns a domain for a given axis. This method forces the domain to include\n * zero unless the domain is explicitly specified in props.\n * @param {Object} props: the props object\n * @param {String} axis: the current axis\n * @returns {Array} the domain for the given axis\n */\n\nexport function getDomainWithZero(props, axis) {\n  var propsDomain = getDomainFromProps(props, axis);\n\n  if (propsDomain) {\n    return propsDomain;\n  }\n\n  var dataset = Data.getData(props);\n  var y0Min = dataset.reduce(function (min, datum) {\n    return datum._y0 < min ? datum._y0 : min;\n  }, Infinity);\n\n  var ensureZero = function (domain) {\n    if (axis === \"x\") {\n      return domain;\n    }\n\n    var defaultMin = y0Min !== Infinity ? y0Min : 0;\n    var maxDomainProp = getMaxFromProps(props, axis);\n    var minDomainProp = getMinFromProps(props, axis);\n    var max = maxDomainProp !== undefined ? maxDomainProp : Collection.getMaxValue(domain, defaultMin);\n    var min = minDomainProp !== undefined ? minDomainProp : Collection.getMinValue(domain, defaultMin);\n    return getDomainFromMinMax(min, max);\n  };\n\n  var getDomainFunction = function () {\n    return getDomainFromData(props, axis, dataset);\n  };\n\n  var formatDomainFunction = function (domain) {\n    return formatDomain(ensureZero(domain), props, axis);\n  };\n\n  return createDomainFunction(getDomainFunction, formatDomainFunction)(props, axis);\n}\n/**\n * Returns the maxDomain from props if it exists\n * @param {Object} props: the props object\n * @param {String} axis: the current axis\n * @returns {Number|Date|undefined} the maxDomain based on props\n */\n\nexport function getMaxFromProps(props, axis) {\n  if (_isPlainObject(props.maxDomain) && props.maxDomain[axis] !== undefined) {\n    return props.maxDomain[axis];\n  }\n\n  return typeof props.maxDomain === \"number\" || _isDate(props.maxDomain) ? props.maxDomain : undefined;\n}\n/**\n * Returns the minDomain from props if it exists\n * @param {Object} props: the props object\n * @param {String} axis: the current axis\n * @returns {Number|Date|undefined} the minDomain based on props\n */\n\nexport function getMinFromProps(props, axis) {\n  if (_isPlainObject(props.minDomain) && props.minDomain[axis] !== undefined) {\n    return props.minDomain[axis];\n  }\n\n  return typeof props.minDomain === \"number\" || _isDate(props.minDomain) ? props.minDomain : undefined;\n}\n/**\n * Returns a symmetrically padded domain for polar charts\n * @param {Array} domain: the original domain\n * @param {Array} values: a flat array of values corresponding to either tickValues, or data values\n * for a given dimension i.e. only x values.\n * @returns {Array} the symmetric domain\n */\n\nexport function getSymmetricDomain(domain, values) {\n  var processedData = _sortedUniq(values.sort(function (a, b) {\n    return a - b;\n  }));\n\n  var step = processedData[1] - processedData[0];\n  return [domain[0], domain[1] + step];\n}\n/**\n * Checks whether a given component can be used to calculate domain\n * @param {Component} component: a React component instance\n * @returns {Boolean} Returns true if the given component has a role included in the whitelist\n */\n\nexport function isDomainComponent(component) {\n  var getRole = function (child) {\n    return child && child.type ? child.type.role : \"\";\n  };\n\n  var role = getRole(component);\n\n  if (role === \"portal\") {\n    var children = React.Children.toArray(component.props.children);\n    role = children.length ? getRole(children[0]) : \"\";\n  }\n\n  var whitelist = [\"area\", \"axis\", \"bar\", \"boxplot\", \"candlestick\", \"errorbar\", \"group\", \"histogram\", \"line\", \"pie\", \"scatter\", \"stack\", \"voronoi\"];\n  return _includes(whitelist, role);\n}", "import _omitBy from \"lodash/omitBy\";\nimport _isUndefined from \"lodash/isUndefined\";\nimport _includes from \"lodash/includes\";\nimport _isEqual from \"lodash/isEqual\";\nimport _isEmpty from \"lodash/isEmpty\";\nimport _orderBy from \"lodash/orderBy\";\nimport _property from \"lodash/property\";\nimport _isPlainObject from \"lodash/isPlainObject\";\nimport _isFunction from \"lodash/isFunction\";\nimport _last from \"lodash/last\";\nimport _range from \"lodash/range\";\nimport _uniq from \"lodash/uniq\";\nimport _assign from \"lodash/assign\";\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n/* eslint-disable no-use-before-define */\nimport React from \"react\";\nimport * as Helpers from \"./helpers\";\nimport * as Collection from \"./collection\";\nimport * as Scale from \"./scale\";\nimport * as Immutable from \"./immutable\"; // Private Functions\n\nfunction parseDatum(datum) {\n  var immutableDatumWhitelist = {\n    errorX: true,\n    errorY: true\n  };\n  return Immutable.isImmutable(datum) ? Immutable.shallowToJS(datum, immutableDatumWhitelist) : datum;\n}\n\nfunction getLength(data) {\n  return Immutable.isIterable(data) ? data.size : data.length;\n} // Returns generated data for a given axis based on domain and sample from props\n\n\nfunction generateDataArray(props, axis) {\n  var propsDomain = _isPlainObject(props.domain) ? props.domain[axis] : props.domain;\n  var domain = propsDomain || Scale.getBaseScale(props, axis).domain();\n  var samples = props.samples || 1;\n  var domainMax = Math.max.apply(Math, _toConsumableArray(domain));\n  var domainMin = Math.min.apply(Math, _toConsumableArray(domain));\n  var step = (domainMax - domainMin) / samples;\n\n  var values = _range(domainMin, domainMax, step);\n\n  return _last(values) === domainMax ? values : values.concat(domainMax);\n} // Returns sorted data. If no sort keys are provided, data is returned unaltered.\n\n\nfunction sortData(dataset, sortKey) {\n  var sortOrder = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : \"ascending\";\n\n  if (!sortKey) {\n    return dataset;\n  } // Ensures previous VictoryLine api for sortKey prop stays consistent\n\n\n  if (sortKey === \"x\" || sortKey === \"y\") {\n    sortKey = \"_\".concat(sortKey);\n  }\n\n  var order = sortOrder === \"ascending\" ? \"asc\" : \"desc\";\n  return _orderBy(dataset, sortKey, order);\n} // This method will remove data points that break certain scales. (log scale only)\n\n\nfunction cleanData(dataset, props) {\n  var smallNumber = 1 / Number.MAX_SAFE_INTEGER;\n  var scaleType = {\n    x: Scale.getScaleType(props, \"x\"),\n    y: Scale.getScaleType(props, \"y\")\n  };\n\n  if (scaleType.x !== \"log\" && scaleType.y !== \"log\") {\n    return dataset;\n  }\n\n  var rules = function (datum, axis) {\n    return scaleType[axis] === \"log\" ? datum[\"_\".concat(axis)] !== 0 : true;\n  };\n\n  var sanitize = function (datum) {\n    var _x = rules(datum, \"x\") ? datum._x : smallNumber;\n\n    var _y = rules(datum, \"y\") ? datum._y : smallNumber;\n\n    var _y0 = rules(datum, \"y0\") ? datum._y0 : smallNumber;\n\n    return _assign({}, datum, {\n      _x: _x,\n      _y: _y,\n      _y0: _y0\n    });\n  };\n\n  return dataset.map(function (datum) {\n    if (rules(datum, \"x\") && rules(datum, \"y\") && rules(datum, \"y0\")) {\n      return datum;\n    }\n\n    return sanitize(datum);\n  });\n} // Returns a data accessor given an eventKey prop\n\n\nfunction getEventKey(key) {\n  // creates a data accessor function\n  // given a property key, path, array index, or null for identity.\n  if (_isFunction(key)) {\n    return key;\n  } else if (key === null || key === undefined) {\n    return function () {\n      return undefined;\n    };\n  } // otherwise, assume it is an array index, property key or path (_.property handles all three)\n\n\n  return _property(key);\n} // Returns data with an eventKey prop added to each datum\n\n\nfunction addEventKeys(props, data) {\n  var hasEventKeyAccessor = !!props.eventKey;\n  var eventKeyAccessor = getEventKey(props.eventKey);\n  return data.map(function (datum, index) {\n    if (datum.eventKey !== undefined) {\n      return datum;\n    } else if (hasEventKeyAccessor) {\n      var eventKey = eventKeyAccessor(datum, index);\n      return eventKey !== undefined ? _assign({\n        eventKey: eventKey\n      }, datum) : datum;\n    }\n\n    return datum;\n  });\n} // Exported Functions\n// This method will remove data points that fall outside of the desired domain (non-continuous charts only)\n\n\nexport function formatDataFromDomain(dataset, domain, defaultBaseline) {\n  var exists = function (val) {\n    return val !== undefined;\n  };\n\n  var minDomainX = Collection.getMinValue(domain.x);\n  var maxDomainX = Collection.getMaxValue(domain.x);\n  var minDomainY = Collection.getMinValue(domain.y);\n  var maxDomainY = Collection.getMaxValue(domain.y);\n\n  var underMin = function (min) {\n    return function (val) {\n      return exists(val) && val < min;\n    };\n  };\n\n  var overMax = function (max) {\n    return function (val) {\n      return exists(val) && val > max;\n    };\n  };\n\n  var isUnderMinX = underMin(minDomainX);\n  var isUnderMinY = underMin(minDomainY);\n  var isOverMaxX = overMax(maxDomainX);\n  var isOverMaxY = overMax(maxDomainY); // eslint-disable-next-line complexity\n\n  return dataset.map(function (datum) {\n    var _x = datum._x,\n        _y = datum._y,\n        _y0 = datum._y0,\n        _y1 = datum._y1; // single x point less than min domain\n\n    if (isUnderMinX(_x) || isOverMaxX(_x)) _x = null;\n    var baseline = exists(_y0) ? _y0 : defaultBaseline;\n    var value = exists(_y1) ? _y1 : _y;\n    if (!exists(value)) return datum; // value only and less than min domain or greater than max domain\n\n    if (!exists(baseline) && (isUnderMinY(value) || isOverMaxY(value))) _y = null; // baseline and value are both less than min domain or both greater than max domain\n\n    if (isUnderMinY(baseline) && isUnderMinY(value) || isOverMaxY(baseline) && isOverMaxY(value)) _y = _y0 = _y1 = null; // baseline and value with only baseline below min, set baseline to minDomainY\n\n    if (isUnderMinY(baseline) && !isUnderMinY(value)) _y0 = minDomainY; // baseline and value with only baseline above max, set baseline to maxDomainY\n\n    if (isOverMaxY(baseline) && !isOverMaxY(value)) _y0 = maxDomainY;\n    return _assign({}, datum, _omitBy({\n      _x: _x,\n      _y: _y,\n      _y0: _y0,\n      _y1: _y1\n    }, _isUndefined));\n  });\n}\n/**\n * Returns an object mapping string data to numeric data\n * @param {Object} props: the props object\n * @param {String} axis: the current axis\n * @returns {Object} an object mapping string data to numeric data\n */\n\nexport function createStringMap(props, axis) {\n  var stringsFromAxes = getStringsFromAxes(props, axis);\n  var stringsFromCategories = getStringsFromCategories(props, axis);\n  var stringsFromData = getStringsFromData(props, axis);\n\n  var allStrings = _uniq([].concat(_toConsumableArray(stringsFromAxes), _toConsumableArray(stringsFromCategories), _toConsumableArray(stringsFromData)));\n\n  return allStrings.length === 0 ? null : allStrings.reduce(function (memo, string, index) {\n    memo[string] = index + 1;\n    return memo;\n  }, {});\n}\n/**\n * Reduces the size of a data array, such that it is <= maxPoints.\n * @param {Array} data: an array of data; must be sorted\n * @param {Number} maxPoints: maximum number of data points to return\n * @param {Number} startingIndex: the index of the data[0] *in the entire dataset*; this function\n                   assumes `data` param is a subset of larger dataset that has been zoommed\n  * @returns {Array} an array of data, a subset of data param\n  */\n\nexport function downsample(data, maxPoints) {\n  var startingIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n  // ensures that the downampling of data while zooming looks good.\n  var dataLength = getLength(data);\n\n  if (dataLength > maxPoints) {\n    // limit k to powers of 2, e.g. 64, 128, 256\n    // so that the same points will be chosen reliably, reducing flicker on zoom\n    var k = Math.pow(2, Math.ceil(Math.log2(dataLength / maxPoints)));\n    return data.filter( // ensure modulo is always calculated from same reference: i + startingIndex\n    function (d, i) {\n      return (i + startingIndex) % k === 0;\n    });\n  }\n\n  return data;\n}\n/**\n * Returns formatted data. Data accessors are applied, and string values are replaced.\n * @param {Array} dataset: the original domain\n * @param {Object} props: the props object\n * @param {Array} expectedKeys: an array of expected data keys\n * @returns {Array} the formatted data\n */\n\nexport function formatData(dataset, props, expectedKeys) {\n  var isArrayOrIterable = Array.isArray(dataset) || Immutable.isIterable(dataset);\n\n  if (!isArrayOrIterable || getLength(dataset) < 1) {\n    return [];\n  }\n\n  var defaultKeys = [\"x\", \"y\", \"y0\"];\n  expectedKeys = Array.isArray(expectedKeys) ? expectedKeys : defaultKeys;\n\n  var createAccessor = function (name) {\n    return Helpers.createAccessor(props[name] !== undefined ? props[name] : name);\n  };\n\n  var accessor = expectedKeys.reduce(function (memo, type) {\n    memo[type] = createAccessor(type);\n    return memo;\n  }, {});\n  var preformattedData = _isEqual(expectedKeys, defaultKeys) && props.x === \"_x\" && props.y === \"_y\" && props.y0 === \"_y0\";\n  var stringMap;\n\n  if (preformattedData === false) {\n    // stringMap is not required if the data is preformatted\n    stringMap = {\n      x: expectedKeys.indexOf(\"x\") !== -1 ? createStringMap(props, \"x\") : undefined,\n      y: expectedKeys.indexOf(\"y\") !== -1 ? createStringMap(props, \"y\") : undefined,\n      y0: expectedKeys.indexOf(\"y0\") !== -1 ? createStringMap(props, \"y\") : undefined\n    };\n  }\n\n  var data = preformattedData ? dataset : dataset.reduce(function (dataArr, datum, index) {\n    // eslint-disable-line complexity\n    datum = parseDatum(datum);\n    var fallbackValues = {\n      x: index,\n      y: datum\n    };\n    var processedValues = expectedKeys.reduce(function (memo, type) {\n      var processedValue = accessor[type](datum);\n      var value = processedValue !== undefined ? processedValue : fallbackValues[type];\n\n      if (value !== undefined) {\n        if (typeof value === \"string\" && stringMap[type]) {\n          memo[\"\".concat(type, \"Name\")] = value;\n          memo[\"_\".concat(type)] = stringMap[type][value];\n        } else {\n          memo[\"_\".concat(type)] = value;\n        }\n      }\n\n      return memo;\n    }, {});\n\n    var formattedDatum = _assign({}, processedValues, datum);\n\n    if (!_isEmpty(formattedDatum)) {\n      dataArr.push(formattedDatum);\n    }\n\n    return dataArr;\n  }, []);\n  var sortedData = sortData(data, props.sortKey, props.sortOrder);\n  var cleanedData = cleanData(sortedData, props);\n  return addEventKeys(props, cleanedData);\n}\n/**\n * Returns generated x and y data based on domain and sample from props\n * @param {Object} props: the props object\n * @returns {Array} an array of data\n */\n\nexport function generateData(props) {\n  var xValues = generateDataArray(props, \"x\");\n  var yValues = generateDataArray(props, \"y\");\n  var values = xValues.map(function (x, i) {\n    return {\n      x: x,\n      y: yValues[i]\n    };\n  });\n  return values;\n}\n/**\n * Returns an array of categories for a given axis\n * @param {Object} props: the props object\n * @param {String} axis: the current axis\n * @returns {Array} an array of categories\n */\n\nexport function getCategories(props, axis) {\n  return props.categories && !Array.isArray(props.categories) ? props.categories[axis] : props.categories;\n}\n/**\n * Returns an array of formatted data\n * @param {Object} props: the props object\n * @returns {Array} an array of data\n */\n\nexport function getData(props) {\n  return props.data ? formatData(props.data, props) : formatData(generateData(props), props);\n}\n/**\n * Returns an array of strings from axis tickValues for a given axis\n * @param {Object} props: the props object\n * @param {String} axis: the current axis\n * @returns {Array} an array of strings\n */\n\nexport function getStringsFromAxes(props, axis) {\n  var tickValues = props.tickValues,\n      tickFormat = props.tickFormat;\n  var tickValueArray;\n\n  if (!tickValues || !Array.isArray(tickValues) && !tickValues[axis]) {\n    tickValueArray = tickFormat && Array.isArray(tickFormat) ? tickFormat : [];\n  } else {\n    tickValueArray = tickValues[axis] || tickValues;\n  }\n\n  return tickValueArray.filter(function (val) {\n    return typeof val === \"string\";\n  });\n}\n/**\n * Returns an array of strings from categories for a given axis\n * @param {Object} props: the props object\n * @param {String} axis: the current axis\n * @returns {Array} an array of strings\n */\n\nexport function getStringsFromCategories(props, axis) {\n  if (!props.categories) {\n    return [];\n  }\n\n  var categories = getCategories(props, axis);\n  var categoryStrings = categories && categories.filter(function (val) {\n    return typeof val === \"string\";\n  });\n  return categoryStrings ? Collection.removeUndefined(categoryStrings) : [];\n}\n/**\n * Returns an array of strings from data\n * @param {Object} props: the props object\n * @param {String} axis: the current axis\n * @returns {Array} an array of strings\n */\n\nexport function getStringsFromData(props, axis) {\n  var isArrayOrIterable = Array.isArray(props.data) || Immutable.isIterable(props.data);\n\n  if (!isArrayOrIterable) {\n    return [];\n  }\n\n  var key = props[axis] === undefined ? axis : props[axis];\n  var accessor = Helpers.createAccessor(key); // support immutable data\n\n  var data = props.data.reduce(function (memo, d) {\n    memo.push(parseDatum(d));\n    return memo;\n  }, []);\n  var sortedData = sortData(data, props.sortKey, props.sortOrder);\n  var dataStrings = sortedData.reduce(function (dataArr, datum) {\n    datum = parseDatum(datum);\n    dataArr.push(accessor(datum));\n    return dataArr;\n  }, []).filter(function (datum) {\n    return typeof datum === \"string\";\n  }); // return a unique set of strings\n\n  return dataStrings.reduce(function (prev, curr) {\n    if (curr !== undefined && curr !== null && prev.indexOf(curr) === -1) {\n      prev.push(curr);\n    }\n\n    return prev;\n  }, []);\n}\n/**\n * Checks whether a given component can be used to calculate data\n * @param {Component} component: a React component instance\n * @returns {Boolean} Returns true if the given component has a role included in the whitelist\n */\n\nexport function isDataComponent(component) {\n  var getRole = function (child) {\n    return child && child.type ? child.type.role : \"\";\n  };\n\n  var role = getRole(component);\n\n  if (role === \"portal\") {\n    var children = React.Children.toArray(component.props.children);\n    role = children.length ? getRole(children[0]) : \"\";\n  }\n\n  var whitelist = [\"area\", \"bar\", \"boxplot\", \"candlestick\", \"errorbar\", \"group\", \"histogram\", \"line\", \"pie\", \"scatter\", \"stack\", \"voronoi\"];\n  return _includes(whitelist, role);\n}", "export var IMMUTABLE_ITERABLE = \"@@__IMMUTABLE_ITERABLE__@@\";\nexport var IMMUTABLE_RECORD = \"@@__IMMUTABLE_RECORD__@@\";\nexport var IMMUTABLE_LIST = \"@@__IMMUTABLE_LIST__@@\";\nexport var IMMUTABLE_MAP = \"@@__IMMUTABLE_MAP__@@\";\nexport function isIterable(x) {\n  return !!(x && x[IMMUTABLE_ITERABLE]);\n}\nexport function isRecord(x) {\n  return !!(x && x[IMMUTABLE_RECORD]);\n}\nexport function isImmutable(x) {\n  return isIterable(x) || isRecord(x);\n}\nexport function isList(x) {\n  return !!(x && x[IMMUTABLE_LIST]);\n}\nexport function isMap(x) {\n  return !!(x && x[IMMUTABLE_MAP]);\n}\nexport function shallowToJS(x, whitelist) {\n  return isIterable(x) ? x.reduce(function (result, curr, key) {\n    if (whitelist && whitelist[key]) {\n      curr = shallowToJS(curr);\n    }\n\n    result[key] = curr;\n    return result;\n  }, isList(x) ? [] : {}) : x;\n}", "export function continuousTransitions() {\n  return {\n    onLoad: {\n      duration: 2000\n    },\n    onExit: {\n      duration: 500\n    },\n    onEnter: {\n      duration: 500\n    }\n  };\n}\nexport function continuousPolarTransitions() {\n  return {\n    onLoad: {\n      duration: 2000,\n      before: function () {\n        return {\n          _y: 0,\n          _y1: 0,\n          _y0: 0\n        };\n      },\n      after: function (datum) {\n        return {\n          _y: datum._y,\n          _y1: datum._y1,\n          _y0: datum._y0\n        };\n      }\n    },\n    onExit: {\n      duration: 500,\n      before: function (datum, index, data) {\n        var adjacent = function (attr) {\n          var adj = index === 0 ? data[index + 1] : data[index - 1];\n          return adj[attr];\n        };\n\n        return {\n          _x: adjacent(\"_x\"),\n          _y: adjacent(\"_y\"),\n          _y0: adjacent(\"_y0\")\n        };\n      }\n    },\n    onEnter: {\n      duration: 500,\n      before: function (datum, index, data) {\n        var adjacent = function (attr) {\n          var adj = index === 0 ? data[index + 1] : data[index - 1];\n          return adj[attr];\n        };\n\n        return {\n          _x: adjacent(\"_x\"),\n          _y: adjacent(\"_y\"),\n          _y0: adjacent(\"_y0\")\n        };\n      },\n      after: function (datum) {\n        return {\n          _x: datum._x,\n          _y: datum._y,\n          _y1: datum._y1,\n          _y0: datum._y0\n        };\n      }\n    }\n  };\n}\nexport function discreteTransitions() {\n  return {\n    onLoad: {\n      duration: 2000,\n      before: function () {\n        return {\n          opacity: 0\n        };\n      },\n      after: function (datum) {\n        return datum;\n      }\n    },\n    onExit: {\n      duration: 600,\n      before: function () {\n        return {\n          opacity: 0\n        };\n      }\n    },\n    onEnter: {\n      duration: 600,\n      before: function () {\n        return {\n          opacity: 0\n        };\n      },\n      after: function (datum) {\n        return datum;\n      }\n    }\n  };\n}", "export { usePreviousProps } from \"./use-previous-props\";\nexport { useAnimationState } from \"./use-animation-state\";", "import React from \"react\";\nexport function usePreviousProps(props) {\n  var ref = React.useRef();\n  React.useEffect(function () {\n    ref.current = props;\n  });\n  return ref.current;\n}", "import _some from \"lodash/some\";\nimport _defaults from \"lodash/defaults\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nimport React from \"react\";\nimport * as Collection from \"../collection\";\nimport * as Transitions from \"../transitions\";\nvar INITIAL_STATE = {\n  nodesShouldLoad: false,\n  nodesDoneLoad: false,\n  animating: true\n};\nexport var useAnimationState = function () {\n  var initialState = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : INITIAL_STATE;\n\n  var _React$useState = React.useState(initialState),\n      _React$useState2 = _slicedToArray(_React$useState, 2),\n      state = _React$useState2[0],\n      _setState = _React$useState2[1]; // This allows us to use a state object and maintain the same API as this.setState\n\n\n  var setState = React.useCallback(function (newState) {\n    _setState(function (oldState) {\n      return _objectSpread(_objectSpread({}, oldState), newState);\n    });\n  }, [_setState]); // This is a copy of Wrapper.getAnimationProps\n\n  var getAnimationProps = React.useCallback(function (props, child, index) {\n    if (!(props !== null && props !== void 0 && props.animate)) {\n      return child.props.animate;\n    }\n\n    var getFilteredState = function () {\n      var childrenTransitions = state && state.childrenTransitions;\n      childrenTransitions = Collection.isArrayOfArrays(childrenTransitions) ? childrenTransitions[index] : childrenTransitions;\n      return _defaults({\n        childrenTransitions: childrenTransitions\n      }, state);\n    };\n\n    var getTransitions = props.animate && props.animate.getTransitions;\n    var filteredState = getFilteredState();\n    var parentState = props.animate && props.animate.parentState || filteredState;\n\n    if (!getTransitions) {\n      var getTransitionProps = Transitions.getTransitionPropsFactory(props, filteredState, function (newState) {\n        return setState(newState);\n      });\n\n      getTransitions = function (childComponent) {\n        return getTransitionProps(childComponent, index);\n      };\n    }\n\n    return _defaults({\n      getTransitions: getTransitions,\n      parentState: parentState\n    }, props.animate, child.props.animate);\n  }, [state, setState]); // This is a copy of Wrapper.setAnimationState\n\n  var setAnimationState = React.useCallback(function (props, nextProps) {\n    if (!(props !== null && props !== void 0 && props.animate)) {\n      return;\n    }\n\n    if (props.animate.parentState) {\n      var nodesWillExit = props.animate.parentState.nodesWillExit;\n      var oldProps = nodesWillExit ? props : null;\n\n      var newState = _defaults({\n        oldProps: oldProps,\n        nextProps: nextProps\n      }, props.animate.parentState);\n\n      setState(newState);\n    } else {\n      var oldChildren = React.Children.toArray(props.children);\n      var nextChildren = React.Children.toArray(nextProps.children);\n\n      var isContinuous = function (child) {\n        var check = function (c) {\n          return c.type && c.type.continuous;\n        };\n\n        return Array.isArray(child) ? _some(child, check) : check(child);\n      };\n\n      var continuous = !props.polar && _some(oldChildren, function (child) {\n        return isContinuous(child) || child.props.children && isContinuous(child.props.children);\n      });\n\n      var _Transitions$getIniti = Transitions.getInitialTransitionState(oldChildren, nextChildren),\n          _nodesWillExit = _Transitions$getIniti.nodesWillExit,\n          nodesWillEnter = _Transitions$getIniti.nodesWillEnter,\n          childrenTransitions = _Transitions$getIniti.childrenTransitions,\n          nodesShouldEnter = _Transitions$getIniti.nodesShouldEnter;\n\n      setState({\n        nodesWillExit: _nodesWillExit,\n        nodesWillEnter: nodesWillEnter,\n        nodesShouldEnter: nodesShouldEnter,\n        childrenTransitions: Collection.isArrayOfArrays(childrenTransitions) ? childrenTransitions[0] : childrenTransitions,\n        oldProps: _nodesWillExit ? props : undefined,\n        nextProps: nextProps,\n        continuous: continuous\n      });\n    }\n  }, [setState]);\n  var getProps = React.useCallback(function (initialProps) {\n    return state && state.nodesWillExit ? state.oldProps || initialProps : initialProps;\n  }, [state]);\n  return {\n    state: state,\n    setState: setState,\n    getAnimationProps: getAnimationProps,\n    setAnimationState: setAnimationState,\n    getProps: getProps\n  };\n};", "import * as d3Shape from \"victory-vendor/d3-shape\";\n\nvar defined = function (d) {\n  var y = d._y1 !== undefined ? d._y1 : d._y;\n  return y !== null && y !== undefined && d._y0 !== null;\n};\n\nvar getXAccessor = function (scale) {\n  return function (d) {\n    return scale.x(d._x1 !== undefined ? d._x1 : d._x);\n  };\n};\n\nvar getYAccessor = function (scale) {\n  return function (d) {\n    return scale.y(d._y1 !== undefined ? d._y1 : d._y);\n  };\n};\n\nvar getAngleAccessor = function (scale) {\n  return function (d) {\n    var x = scale.x(d._x1 !== undefined ? d._x1 : d._x);\n    return -1 * x + Math.PI / 2;\n  };\n};\n\nvar toNewName = function (interpolation) {\n  // d3 shape changed the naming scheme for interpolators from \"basis\" -> \"curveBasis\" etc.\n  var capitalize = function (s) {\n    return s && s[0].toUpperCase() + s.slice(1);\n  };\n\n  return \"curve\".concat(capitalize(interpolation));\n};\n\nvar toNewNameClosed = function (interpolation) {\n  return \"\".concat(toNewName(interpolation), \"Closed\");\n};\n\nexport var getInterpolationFunction = function (props) {\n  var interpolation = props.interpolation;\n\n  if (typeof interpolation === \"function\") {\n    return interpolation;\n  }\n\n  if (typeof interpolation === \"string\") {\n    var polar = props.polar,\n        _props$openCurve = props.openCurve,\n        openCurve = _props$openCurve === void 0 ? !polar : _props$openCurve;\n    var interpolationName = !openCurve ? toNewNameClosed(interpolation) : toNewName(interpolation);\n    return d3Shape[interpolationName];\n  }\n\n  return d3Shape.curveLinear;\n};\nexport var getLineFunction = function (props) {\n  var polar = props.polar,\n      scale = props.scale,\n      horizontal = props.horizontal;\n  return polar ? d3Shape.lineRadial().defined(defined).curve(getInterpolationFunction(props)).angle(getAngleAccessor(scale)).radius(getYAccessor(scale)) : d3Shape.line().defined(defined).curve(getInterpolationFunction(props)).x(horizontal ? getYAccessor(scale) : getXAccessor(scale)).y(horizontal ? getXAccessor(scale) : getYAccessor(scale));\n};", "\n// `victory-vendor/d3-shape` (ESM)\n// See upstream license: https://github.com/d3/d3-shape/blob/main/LICENSE\n//\n// Our ESM package uses the underlying installed dependencies of `node_modules/d3-shape`\nexport * from \"d3-shape\";\n", "export default function(x) {\n  return function constant() {\n    return x;\n  };\n}\n", "export const abs = Math.abs;\nexport const atan2 = Math.atan2;\nexport const cos = Math.cos;\nexport const max = Math.max;\nexport const min = Math.min;\nexport const sin = Math.sin;\nexport const sqrt = Math.sqrt;\n\nexport const epsilon = 1e-12;\nexport const pi = Math.PI;\nexport const halfPi = pi / 2;\nexport const tau = 2 * pi;\n\nexport function acos(x) {\n  return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n  return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n", "const pi = Math.PI,\n    tau = 2 * pi,\n    epsilon = 1e-6,\n    tauEpsilon = tau - epsilon;\n\nfunction append(strings) {\n  this._ += strings[0];\n  for (let i = 1, n = strings.length; i < n; ++i) {\n    this._ += arguments[i] + strings[i];\n  }\n}\n\nfunction appendRound(digits) {\n  let d = Math.floor(digits);\n  if (!(d >= 0)) throw new Error(`invalid digits: ${digits}`);\n  if (d > 15) return append;\n  const k = 10 ** d;\n  return function(strings) {\n    this._ += strings[0];\n    for (let i = 1, n = strings.length; i < n; ++i) {\n      this._ += Math.round(arguments[i] * k) / k + strings[i];\n    }\n  };\n}\n\nexport class Path {\n  constructor(digits) {\n    this._x0 = this._y0 = // start of current subpath\n    this._x1 = this._y1 = null; // end of current subpath\n    this._ = \"\";\n    this._append = digits == null ? append : appendRound(digits);\n  }\n  moveTo(x, y) {\n    this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}`;\n  }\n  closePath() {\n    if (this._x1 !== null) {\n      this._x1 = this._x0, this._y1 = this._y0;\n      this._append`Z`;\n    }\n  }\n  lineTo(x, y) {\n    this._append`L${this._x1 = +x},${this._y1 = +y}`;\n  }\n  quadraticCurveTo(x1, y1, x, y) {\n    this._append`Q${+x1},${+y1},${this._x1 = +x},${this._y1 = +y}`;\n  }\n  bezierCurveTo(x1, y1, x2, y2, x, y) {\n    this._append`C${+x1},${+y1},${+x2},${+y2},${this._x1 = +x},${this._y1 = +y}`;\n  }\n  arcTo(x1, y1, x2, y2, r) {\n    x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n\n    // Is the radius negative? Error.\n    if (r < 0) throw new Error(`negative radius: ${r}`);\n\n    let x0 = this._x1,\n        y0 = this._y1,\n        x21 = x2 - x1,\n        y21 = y2 - y1,\n        x01 = x0 - x1,\n        y01 = y0 - y1,\n        l01_2 = x01 * x01 + y01 * y01;\n\n    // Is this path empty? Move to (x1,y1).\n    if (this._x1 === null) {\n      this._append`M${this._x1 = x1},${this._y1 = y1}`;\n    }\n\n    // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n    else if (!(l01_2 > epsilon));\n\n    // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n    // Equivalently, is (x1,y1) coincident with (x2,y2)?\n    // Or, is the radius zero? Line to (x1,y1).\n    else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n      this._append`L${this._x1 = x1},${this._y1 = y1}`;\n    }\n\n    // Otherwise, draw an arc!\n    else {\n      let x20 = x2 - x0,\n          y20 = y2 - y0,\n          l21_2 = x21 * x21 + y21 * y21,\n          l20_2 = x20 * x20 + y20 * y20,\n          l21 = Math.sqrt(l21_2),\n          l01 = Math.sqrt(l01_2),\n          l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n          t01 = l / l01,\n          t21 = l / l21;\n\n      // If the start tangent is not coincident with (x0,y0), line to.\n      if (Math.abs(t01 - 1) > epsilon) {\n        this._append`L${x1 + t01 * x01},${y1 + t01 * y01}`;\n      }\n\n      this._append`A${r},${r},0,0,${+(y01 * x20 > x01 * y20)},${this._x1 = x1 + t21 * x21},${this._y1 = y1 + t21 * y21}`;\n    }\n  }\n  arc(x, y, r, a0, a1, ccw) {\n    x = +x, y = +y, r = +r, ccw = !!ccw;\n\n    // Is the radius negative? Error.\n    if (r < 0) throw new Error(`negative radius: ${r}`);\n\n    let dx = r * Math.cos(a0),\n        dy = r * Math.sin(a0),\n        x0 = x + dx,\n        y0 = y + dy,\n        cw = 1 ^ ccw,\n        da = ccw ? a0 - a1 : a1 - a0;\n\n    // Is this path empty? Move to (x0,y0).\n    if (this._x1 === null) {\n      this._append`M${x0},${y0}`;\n    }\n\n    // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n    else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n      this._append`L${x0},${y0}`;\n    }\n\n    // Is this arc empty? We\u2019re done.\n    if (!r) return;\n\n    // Does the angle go the wrong way? Flip the direction.\n    if (da < 0) da = da % tau + tau;\n\n    // Is this a complete circle? Draw two arcs to complete the circle.\n    if (da > tauEpsilon) {\n      this._append`A${r},${r},0,1,${cw},${x - dx},${y - dy}A${r},${r},0,1,${cw},${this._x1 = x0},${this._y1 = y0}`;\n    }\n\n    // Is this arc non-empty? Draw an arc!\n    else if (da > epsilon) {\n      this._append`A${r},${r},0,${+(da >= pi)},${cw},${this._x1 = x + r * Math.cos(a1)},${this._y1 = y + r * Math.sin(a1)}`;\n    }\n  }\n  rect(x, y, w, h) {\n    this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}h${w = +w}v${+h}h${-w}Z`;\n  }\n  toString() {\n    return this._;\n  }\n}\n\nexport function path() {\n  return new Path;\n}\n\n// Allow instanceof d3.path\npath.prototype = Path.prototype;\n\nexport function pathRound(digits = 3) {\n  return new Path(+digits);\n}\n", "import {Path} from \"d3-path\";\n\nexport function withPath(shape) {\n  let digits = 3;\n\n  shape.digits = function(_) {\n    if (!arguments.length) return digits;\n    if (_ == null) {\n      digits = null;\n    } else {\n      const d = Math.floor(_);\n      if (!(d >= 0)) throw new RangeError(`invalid digits: ${_}`);\n      digits = d;\n    }\n    return shape;\n  };\n\n  return () => new Path(digits);\n}\n", "import constant from \"./constant.js\";\nimport {abs, acos, asin, atan2, cos, epsilon, halfPi, max, min, pi, sin, sqrt, tau} from \"./math.js\";\nimport {withPath} from \"./path.js\";\n\nfunction arcInnerRadius(d) {\n  return d.innerRadius;\n}\n\nfunction arcOuterRadius(d) {\n  return d.outerRadius;\n}\n\nfunction arcStartAngle(d) {\n  return d.startAngle;\n}\n\nfunction arcEndAngle(d) {\n  return d.endAngle;\n}\n\nfunction arcPadAngle(d) {\n  return d && d.padAngle; // Note: optional!\n}\n\nfunction intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\n  var x10 = x1 - x0, y10 = y1 - y0,\n      x32 = x3 - x2, y32 = y3 - y2,\n      t = y32 * x10 - x32 * y10;\n  if (t * t < epsilon) return;\n  t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t;\n  return [x0 + t * x10, y0 + t * y10];\n}\n\n// Compute perpendicular offset line of length rc.\n// http://mathworld.wolfram.com/Circle-LineIntersection.html\nfunction cornerTangents(x0, y0, x1, y1, r1, rc, cw) {\n  var x01 = x0 - x1,\n      y01 = y0 - y1,\n      lo = (cw ? rc : -rc) / sqrt(x01 * x01 + y01 * y01),\n      ox = lo * y01,\n      oy = -lo * x01,\n      x11 = x0 + ox,\n      y11 = y0 + oy,\n      x10 = x1 + ox,\n      y10 = y1 + oy,\n      x00 = (x11 + x10) / 2,\n      y00 = (y11 + y10) / 2,\n      dx = x10 - x11,\n      dy = y10 - y11,\n      d2 = dx * dx + dy * dy,\n      r = r1 - rc,\n      D = x11 * y10 - x10 * y11,\n      d = (dy < 0 ? -1 : 1) * sqrt(max(0, r * r * d2 - D * D)),\n      cx0 = (D * dy - dx * d) / d2,\n      cy0 = (-D * dx - dy * d) / d2,\n      cx1 = (D * dy + dx * d) / d2,\n      cy1 = (-D * dx + dy * d) / d2,\n      dx0 = cx0 - x00,\n      dy0 = cy0 - y00,\n      dx1 = cx1 - x00,\n      dy1 = cy1 - y00;\n\n  // Pick the closer of the two intersection points.\n  // TODO Is there a faster way to determine which intersection to use?\n  if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n\n  return {\n    cx: cx0,\n    cy: cy0,\n    x01: -ox,\n    y01: -oy,\n    x11: cx0 * (r1 / r - 1),\n    y11: cy0 * (r1 / r - 1)\n  };\n}\n\nexport default function() {\n  var innerRadius = arcInnerRadius,\n      outerRadius = arcOuterRadius,\n      cornerRadius = constant(0),\n      padRadius = null,\n      startAngle = arcStartAngle,\n      endAngle = arcEndAngle,\n      padAngle = arcPadAngle,\n      context = null,\n      path = withPath(arc);\n\n  function arc() {\n    var buffer,\n        r,\n        r0 = +innerRadius.apply(this, arguments),\n        r1 = +outerRadius.apply(this, arguments),\n        a0 = startAngle.apply(this, arguments) - halfPi,\n        a1 = endAngle.apply(this, arguments) - halfPi,\n        da = abs(a1 - a0),\n        cw = a1 > a0;\n\n    if (!context) context = buffer = path();\n\n    // Ensure that the outer radius is always larger than the inner radius.\n    if (r1 < r0) r = r1, r1 = r0, r0 = r;\n\n    // Is it a point?\n    if (!(r1 > epsilon)) context.moveTo(0, 0);\n\n    // Or is it a circle or annulus?\n    else if (da > tau - epsilon) {\n      context.moveTo(r1 * cos(a0), r1 * sin(a0));\n      context.arc(0, 0, r1, a0, a1, !cw);\n      if (r0 > epsilon) {\n        context.moveTo(r0 * cos(a1), r0 * sin(a1));\n        context.arc(0, 0, r0, a1, a0, cw);\n      }\n    }\n\n    // Or is it a circular or annular sector?\n    else {\n      var a01 = a0,\n          a11 = a1,\n          a00 = a0,\n          a10 = a1,\n          da0 = da,\n          da1 = da,\n          ap = padAngle.apply(this, arguments) / 2,\n          rp = (ap > epsilon) && (padRadius ? +padRadius.apply(this, arguments) : sqrt(r0 * r0 + r1 * r1)),\n          rc = min(abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments)),\n          rc0 = rc,\n          rc1 = rc,\n          t0,\n          t1;\n\n      // Apply padding? Note that since r1 \u2265 r0, da1 \u2265 da0.\n      if (rp > epsilon) {\n        var p0 = asin(rp / r0 * sin(ap)),\n            p1 = asin(rp / r1 * sin(ap));\n        if ((da0 -= p0 * 2) > epsilon) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0;\n        else da0 = 0, a00 = a10 = (a0 + a1) / 2;\n        if ((da1 -= p1 * 2) > epsilon) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1;\n        else da1 = 0, a01 = a11 = (a0 + a1) / 2;\n      }\n\n      var x01 = r1 * cos(a01),\n          y01 = r1 * sin(a01),\n          x10 = r0 * cos(a10),\n          y10 = r0 * sin(a10);\n\n      // Apply rounded corners?\n      if (rc > epsilon) {\n        var x11 = r1 * cos(a11),\n            y11 = r1 * sin(a11),\n            x00 = r0 * cos(a00),\n            y00 = r0 * sin(a00),\n            oc;\n\n        // Restrict the corner radius according to the sector angle. If this\n        // intersection fails, it\u2019s probably because the arc is too small, so\n        // disable the corner radius entirely.\n        if (da < pi) {\n          if (oc = intersect(x01, y01, x00, y00, x11, y11, x10, y10)) {\n            var ax = x01 - oc[0],\n                ay = y01 - oc[1],\n                bx = x11 - oc[0],\n                by = y11 - oc[1],\n                kc = 1 / sin(acos((ax * bx + ay * by) / (sqrt(ax * ax + ay * ay) * sqrt(bx * bx + by * by))) / 2),\n                lc = sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n            rc0 = min(rc, (r0 - lc) / (kc - 1));\n            rc1 = min(rc, (r1 - lc) / (kc + 1));\n          } else {\n            rc0 = rc1 = 0;\n          }\n        }\n      }\n\n      // Is the sector collapsed to a line?\n      if (!(da1 > epsilon)) context.moveTo(x01, y01);\n\n      // Does the sector\u2019s outer ring have rounded corners?\n      else if (rc1 > epsilon) {\n        t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw);\n        t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw);\n\n        context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n        // Have the corners merged?\n        if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n        // Otherwise, draw the two corners and the ring.\n        else {\n          context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n          context.arc(0, 0, r1, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), !cw);\n          context.arc(t1.cx, t1.cy, rc1, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n        }\n      }\n\n      // Or is the outer ring just a circular arc?\n      else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw);\n\n      // Is there no inner ring, and it\u2019s a circular sector?\n      // Or perhaps it\u2019s an annular sector collapsed due to padding?\n      if (!(r0 > epsilon) || !(da0 > epsilon)) context.lineTo(x10, y10);\n\n      // Does the sector\u2019s inner ring (or point) have rounded corners?\n      else if (rc0 > epsilon) {\n        t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw);\n        t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw);\n\n        context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n        // Have the corners merged?\n        if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n        // Otherwise, draw the two corners and the ring.\n        else {\n          context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n          context.arc(0, 0, r0, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), cw);\n          context.arc(t1.cx, t1.cy, rc0, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n        }\n      }\n\n      // Or is the inner ring just a circular arc?\n      else context.arc(0, 0, r0, a10, a00, cw);\n    }\n\n    context.closePath();\n\n    if (buffer) return context = null, buffer + \"\" || null;\n  }\n\n  arc.centroid = function() {\n    var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2,\n        a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi / 2;\n    return [cos(a) * r, sin(a) * r];\n  };\n\n  arc.innerRadius = function(_) {\n    return arguments.length ? (innerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : innerRadius;\n  };\n\n  arc.outerRadius = function(_) {\n    return arguments.length ? (outerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : outerRadius;\n  };\n\n  arc.cornerRadius = function(_) {\n    return arguments.length ? (cornerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : cornerRadius;\n  };\n\n  arc.padRadius = function(_) {\n    return arguments.length ? (padRadius = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), arc) : padRadius;\n  };\n\n  arc.startAngle = function(_) {\n    return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : startAngle;\n  };\n\n  arc.endAngle = function(_) {\n    return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : endAngle;\n  };\n\n  arc.padAngle = function(_) {\n    return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : padAngle;\n  };\n\n  arc.context = function(_) {\n    return arguments.length ? ((context = _ == null ? null : _), arc) : context;\n  };\n\n  return arc;\n}\n", "export var slice = Array.prototype.slice;\n\nexport default function(x) {\n  return typeof x === \"object\" && \"length\" in x\n    ? x // Array, TypedArray, NodeList, array-like\n    : Array.from(x); // Map, Set, iterable, string, or anything else\n}\n", "function Linear(context) {\n  this._context = context;\n}\n\nLinear.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n      case 1: this._point = 2; // falls through\n      default: this._context.lineTo(x, y); break;\n    }\n  }\n};\n\nexport default function(context) {\n  return new Linear(context);\n}\n", "export function x(p) {\n  return p[0];\n}\n\nexport function y(p) {\n  return p[1];\n}\n", "import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport {withPath} from \"./path.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function(x, y) {\n  var defined = constant(true),\n      context = null,\n      curve = curveLinear,\n      output = null,\n      path = withPath(line);\n\n  x = typeof x === \"function\" ? x : (x === undefined) ? pointX : constant(x);\n  y = typeof y === \"function\" ? y : (y === undefined) ? pointY : constant(y);\n\n  function line(data) {\n    var i,\n        n = (data = array(data)).length,\n        d,\n        defined0 = false,\n        buffer;\n\n    if (context == null) output = curve(buffer = path());\n\n    for (i = 0; i <= n; ++i) {\n      if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n        if (defined0 = !defined0) output.lineStart();\n        else output.lineEnd();\n      }\n      if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n    }\n\n    if (buffer) return output = null, buffer + \"\" || null;\n  }\n\n  line.x = function(_) {\n    return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n  };\n\n  line.y = function(_) {\n    return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n  };\n\n  line.defined = function(_) {\n    return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n  };\n\n  line.curve = function(_) {\n    return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n  };\n\n  line.context = function(_) {\n    return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n  };\n\n  return line;\n}\n", "import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport line from \"./line.js\";\nimport {withPath} from \"./path.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function(x0, y0, y1) {\n  var x1 = null,\n      defined = constant(true),\n      context = null,\n      curve = curveLinear,\n      output = null,\n      path = withPath(area);\n\n  x0 = typeof x0 === \"function\" ? x0 : (x0 === undefined) ? pointX : constant(+x0);\n  y0 = typeof y0 === \"function\" ? y0 : (y0 === undefined) ? constant(0) : constant(+y0);\n  y1 = typeof y1 === \"function\" ? y1 : (y1 === undefined) ? pointY : constant(+y1);\n\n  function area(data) {\n    var i,\n        j,\n        k,\n        n = (data = array(data)).length,\n        d,\n        defined0 = false,\n        buffer,\n        x0z = new Array(n),\n        y0z = new Array(n);\n\n    if (context == null) output = curve(buffer = path());\n\n    for (i = 0; i <= n; ++i) {\n      if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n        if (defined0 = !defined0) {\n          j = i;\n          output.areaStart();\n          output.lineStart();\n        } else {\n          output.lineEnd();\n          output.lineStart();\n          for (k = i - 1; k >= j; --k) {\n            output.point(x0z[k], y0z[k]);\n          }\n          output.lineEnd();\n          output.areaEnd();\n        }\n      }\n      if (defined0) {\n        x0z[i] = +x0(d, i, data), y0z[i] = +y0(d, i, data);\n        output.point(x1 ? +x1(d, i, data) : x0z[i], y1 ? +y1(d, i, data) : y0z[i]);\n      }\n    }\n\n    if (buffer) return output = null, buffer + \"\" || null;\n  }\n\n  function arealine() {\n    return line().defined(defined).curve(curve).context(context);\n  }\n\n  area.x = function(_) {\n    return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), x1 = null, area) : x0;\n  };\n\n  area.x0 = function(_) {\n    return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), area) : x0;\n  };\n\n  area.x1 = function(_) {\n    return arguments.length ? (x1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : x1;\n  };\n\n  area.y = function(_) {\n    return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), y1 = null, area) : y0;\n  };\n\n  area.y0 = function(_) {\n    return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), area) : y0;\n  };\n\n  area.y1 = function(_) {\n    return arguments.length ? (y1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : y1;\n  };\n\n  area.lineX0 =\n  area.lineY0 = function() {\n    return arealine().x(x0).y(y0);\n  };\n\n  area.lineY1 = function() {\n    return arealine().x(x0).y(y1);\n  };\n\n  area.lineX1 = function() {\n    return arealine().x(x1).y(y0);\n  };\n\n  area.defined = function(_) {\n    return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), area) : defined;\n  };\n\n  area.curve = function(_) {\n    return arguments.length ? (curve = _, context != null && (output = curve(context)), area) : curve;\n  };\n\n  area.context = function(_) {\n    return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), area) : context;\n  };\n\n  return area;\n}\n", "export default function(a, b) {\n  return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n}\n", "export default function(d) {\n  return d;\n}\n", "import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport descending from \"./descending.js\";\nimport identity from \"./identity.js\";\nimport {tau} from \"./math.js\";\n\nexport default function() {\n  var value = identity,\n      sortValues = descending,\n      sort = null,\n      startAngle = constant(0),\n      endAngle = constant(tau),\n      padAngle = constant(0);\n\n  function pie(data) {\n    var i,\n        n = (data = array(data)).length,\n        j,\n        k,\n        sum = 0,\n        index = new Array(n),\n        arcs = new Array(n),\n        a0 = +startAngle.apply(this, arguments),\n        da = Math.min(tau, Math.max(-tau, endAngle.apply(this, arguments) - a0)),\n        a1,\n        p = Math.min(Math.abs(da) / n, padAngle.apply(this, arguments)),\n        pa = p * (da < 0 ? -1 : 1),\n        v;\n\n    for (i = 0; i < n; ++i) {\n      if ((v = arcs[index[i] = i] = +value(data[i], i, data)) > 0) {\n        sum += v;\n      }\n    }\n\n    // Optionally sort the arcs by previously-computed values or by data.\n    if (sortValues != null) index.sort(function(i, j) { return sortValues(arcs[i], arcs[j]); });\n    else if (sort != null) index.sort(function(i, j) { return sort(data[i], data[j]); });\n\n    // Compute the arcs! They are stored in the original data's order.\n    for (i = 0, k = sum ? (da - n * pa) / sum : 0; i < n; ++i, a0 = a1) {\n      j = index[i], v = arcs[j], a1 = a0 + (v > 0 ? v * k : 0) + pa, arcs[j] = {\n        data: data[j],\n        index: i,\n        value: v,\n        startAngle: a0,\n        endAngle: a1,\n        padAngle: p\n      };\n    }\n\n    return arcs;\n  }\n\n  pie.value = function(_) {\n    return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), pie) : value;\n  };\n\n  pie.sortValues = function(_) {\n    return arguments.length ? (sortValues = _, sort = null, pie) : sortValues;\n  };\n\n  pie.sort = function(_) {\n    return arguments.length ? (sort = _, sortValues = null, pie) : sort;\n  };\n\n  pie.startAngle = function(_) {\n    return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : startAngle;\n  };\n\n  pie.endAngle = function(_) {\n    return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : endAngle;\n  };\n\n  pie.padAngle = function(_) {\n    return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : padAngle;\n  };\n\n  return pie;\n}\n", "import curveLinear from \"./linear.js\";\n\nexport var curveRadialLinear = curveRadial(curveLinear);\n\nfunction Radial(curve) {\n  this._curve = curve;\n}\n\nRadial.prototype = {\n  areaStart: function() {\n    this._curve.areaStart();\n  },\n  areaEnd: function() {\n    this._curve.areaEnd();\n  },\n  lineStart: function() {\n    this._curve.lineStart();\n  },\n  lineEnd: function() {\n    this._curve.lineEnd();\n  },\n  point: function(a, r) {\n    this._curve.point(r * Math.sin(a), r * -Math.cos(a));\n  }\n};\n\nexport default function curveRadial(curve) {\n\n  function radial(context) {\n    return new Radial(curve(context));\n  }\n\n  radial._curve = curve;\n\n  return radial;\n}\n", "import curveRadial, {curveRadialLinear} from \"./curve/radial.js\";\nimport line from \"./line.js\";\n\nexport function lineRadial(l) {\n  var c = l.curve;\n\n  l.angle = l.x, delete l.x;\n  l.radius = l.y, delete l.y;\n\n  l.curve = function(_) {\n    return arguments.length ? c(curveRadial(_)) : c()._curve;\n  };\n\n  return l;\n}\n\nexport default function() {\n  return lineRadial(line().curve(curveRadialLinear));\n}\n", "import curveRadial, {curveRadialLinear} from \"./curve/radial.js\";\nimport area from \"./area.js\";\nimport {lineRadial} from \"./lineRadial.js\";\n\nexport default function() {\n  var a = area().curve(curveRadialLinear),\n      c = a.curve,\n      x0 = a.lineX0,\n      x1 = a.lineX1,\n      y0 = a.lineY0,\n      y1 = a.lineY1;\n\n  a.angle = a.x, delete a.x;\n  a.startAngle = a.x0, delete a.x0;\n  a.endAngle = a.x1, delete a.x1;\n  a.radius = a.y, delete a.y;\n  a.innerRadius = a.y0, delete a.y0;\n  a.outerRadius = a.y1, delete a.y1;\n  a.lineStartAngle = function() { return lineRadial(x0()); }, delete a.lineX0;\n  a.lineEndAngle = function() { return lineRadial(x1()); }, delete a.lineX1;\n  a.lineInnerRadius = function() { return lineRadial(y0()); }, delete a.lineY0;\n  a.lineOuterRadius = function() { return lineRadial(y1()); }, delete a.lineY1;\n\n  a.curve = function(_) {\n    return arguments.length ? c(curveRadial(_)) : c()._curve;\n  };\n\n  return a;\n}\n", "export default function(x, y) {\n  return [(y = +y) * Math.cos(x -= Math.PI / 2), y * Math.sin(x)];\n}\n", "import pointRadial from \"../pointRadial.js\";\n\nclass Bump {\n  constructor(context, x) {\n    this._context = context;\n    this._x = x;\n  }\n  areaStart() {\n    this._line = 0;\n  }\n  areaEnd() {\n    this._line = NaN;\n  }\n  lineStart() {\n    this._point = 0;\n  }\n  lineEnd() {\n    if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n    this._line = 1 - this._line;\n  }\n  point(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: {\n        this._point = 1;\n        if (this._line) this._context.lineTo(x, y);\n        else this._context.moveTo(x, y);\n        break;\n      }\n      case 1: this._point = 2; // falls through\n      default: {\n        if (this._x) this._context.bezierCurveTo(this._x0 = (this._x0 + x) / 2, this._y0, this._x0, y, x, y);\n        else this._context.bezierCurveTo(this._x0, this._y0 = (this._y0 + y) / 2, x, this._y0, x, y);\n        break;\n      }\n    }\n    this._x0 = x, this._y0 = y;\n  }\n}\n\nclass BumpRadial {\n  constructor(context) {\n    this._context = context;\n  }\n  lineStart() {\n    this._point = 0;\n  }\n  lineEnd() {}\n  point(x, y) {\n    x = +x, y = +y;\n    if (this._point === 0) {\n      this._point = 1;\n    } else {\n      const p0 = pointRadial(this._x0, this._y0);\n      const p1 = pointRadial(this._x0, this._y0 = (this._y0 + y) / 2);\n      const p2 = pointRadial(x, this._y0);\n      const p3 = pointRadial(x, y);\n      this._context.moveTo(...p0);\n      this._context.bezierCurveTo(...p1, ...p2, ...p3);\n    }\n    this._x0 = x, this._y0 = y;\n  }\n}\n\nexport function bumpX(context) {\n  return new Bump(context, true);\n}\n\nexport function bumpY(context) {\n  return new Bump(context, false);\n}\n\nexport function bumpRadial(context) {\n  return new BumpRadial(context);\n}\n", "import {slice} from \"./array.js\";\nimport constant from \"./constant.js\";\nimport {bumpX, bumpY, bumpRadial} from \"./curve/bump.js\";\nimport {withPath} from \"./path.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nfunction linkSource(d) {\n  return d.source;\n}\n\nfunction linkTarget(d) {\n  return d.target;\n}\n\nexport function link(curve) {\n  let source = linkSource,\n      target = linkTarget,\n      x = pointX,\n      y = pointY,\n      context = null,\n      output = null,\n      path = withPath(link);\n\n  function link() {\n    let buffer;\n    const argv = slice.call(arguments);\n    const s = source.apply(this, argv);\n    const t = target.apply(this, argv);\n    if (context == null) output = curve(buffer = path());\n    output.lineStart();\n    argv[0] = s, output.point(+x.apply(this, argv), +y.apply(this, argv));\n    argv[0] = t, output.point(+x.apply(this, argv), +y.apply(this, argv));\n    output.lineEnd();\n    if (buffer) return output = null, buffer + \"\" || null;\n  }\n\n  link.source = function(_) {\n    return arguments.length ? (source = _, link) : source;\n  };\n\n  link.target = function(_) {\n    return arguments.length ? (target = _, link) : target;\n  };\n\n  link.x = function(_) {\n    return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), link) : x;\n  };\n\n  link.y = function(_) {\n    return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), link) : y;\n  };\n\n  link.context = function(_) {\n    return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), link) : context;\n  };\n\n  return link;\n}\n\nexport function linkHorizontal() {\n  return link(bumpX);\n}\n\nexport function linkVertical() {\n  return link(bumpY);\n}\n\nexport function linkRadial() {\n  const l = link(bumpRadial);\n  l.angle = l.x, delete l.x;\n  l.radius = l.y, delete l.y;\n  return l;\n}\n", "import {min, sqrt} from \"../math.js\";\n\nconst sqrt3 = sqrt(3);\n\nexport default {\n  draw(context, size) {\n    const r = sqrt(size + min(size / 28, 0.75)) * 0.59436;\n    const t = r / 2;\n    const u = t * sqrt3;\n    context.moveTo(0, r);\n    context.lineTo(0, -r);\n    context.moveTo(-u, -t);\n    context.lineTo(u, t);\n    context.moveTo(-u, t);\n    context.lineTo(u, -t);\n  }\n};\n", "import {pi, sqrt, tau} from \"../math.js\";\n\nexport default {\n  draw(context, size) {\n    const r = sqrt(size / pi);\n    context.moveTo(r, 0);\n    context.arc(0, 0, r, 0, tau);\n  }\n};\n", "import {sqrt} from \"../math.js\";\n\nexport default {\n  draw(context, size) {\n    const r = sqrt(size / 5) / 2;\n    context.moveTo(-3 * r, -r);\n    context.lineTo(-r, -r);\n    context.lineTo(-r, -3 * r);\n    context.lineTo(r, -3 * r);\n    context.lineTo(r, -r);\n    context.lineTo(3 * r, -r);\n    context.lineTo(3 * r, r);\n    context.lineTo(r, r);\n    context.lineTo(r, 3 * r);\n    context.lineTo(-r, 3 * r);\n    context.lineTo(-r, r);\n    context.lineTo(-3 * r, r);\n    context.closePath();\n  }\n};\n", "import {sqrt} from \"../math.js\";\n\nconst tan30 = sqrt(1 / 3);\nconst tan30_2 = tan30 * 2;\n\nexport default {\n  draw(context, size) {\n    const y = sqrt(size / tan30_2);\n    const x = y * tan30;\n    context.moveTo(0, -y);\n    context.lineTo(x, 0);\n    context.lineTo(0, y);\n    context.lineTo(-x, 0);\n    context.closePath();\n  }\n};\n", "import {sqrt} from \"../math.js\";\n\nexport default {\n  draw(context, size) {\n    const r = sqrt(size) * 0.62625;\n    context.moveTo(0, -r);\n    context.lineTo(r, 0);\n    context.lineTo(0, r);\n    context.lineTo(-r, 0);\n    context.closePath();\n  }\n};\n", "import {min, sqrt} from \"../math.js\";\n\nexport default {\n  draw(context, size) {\n    const r = sqrt(size - min(size / 7, 2)) * 0.87559;\n    context.moveTo(-r, 0);\n    context.lineTo(r, 0);\n    context.moveTo(0, r);\n    context.lineTo(0, -r);\n  }\n};\n", "import {sqrt} from \"../math.js\";\n\nexport default {\n  draw(context, size) {\n    const w = sqrt(size);\n    const x = -w / 2;\n    context.rect(x, x, w, w);\n  }\n};\n", "import {sqrt} from \"../math.js\";\n\nexport default {\n  draw(context, size) {\n    const r = sqrt(size) * 0.4431;\n    context.moveTo(r, r);\n    context.lineTo(r, -r);\n    context.lineTo(-r, -r);\n    context.lineTo(-r, r);\n    context.closePath();\n  }\n};\n", "import {sin, cos, sqrt, pi, tau} from \"../math.js\";\n\nconst ka = 0.89081309152928522810;\nconst kr = sin(pi / 10) / sin(7 * pi / 10);\nconst kx = sin(tau / 10) * kr;\nconst ky = -cos(tau / 10) * kr;\n\nexport default {\n  draw(context, size) {\n    const r = sqrt(size * ka);\n    const x = kx * r;\n    const y = ky * r;\n    context.moveTo(0, -r);\n    context.lineTo(x, y);\n    for (let i = 1; i < 5; ++i) {\n      const a = tau * i / 5;\n      const c = cos(a);\n      const s = sin(a);\n      context.lineTo(s * r, -c * r);\n      context.lineTo(c * x - s * y, s * x + c * y);\n    }\n    context.closePath();\n  }\n};\n", "import {sqrt} from \"../math.js\";\n\nconst sqrt3 = sqrt(3);\n\nexport default {\n  draw(context, size) {\n    const y = -sqrt(size / (sqrt3 * 3));\n    context.moveTo(0, y * 2);\n    context.lineTo(-sqrt3 * y, -y);\n    context.lineTo(sqrt3 * y, -y);\n    context.closePath();\n  }\n};\n", "import {sqrt} from \"../math.js\";\n\nconst sqrt3 = sqrt(3);\n\nexport default {\n  draw(context, size) {\n    const s = sqrt(size) * 0.6824;\n    const t = s  / 2;\n    const u = (s * sqrt3) / 2; // cos(Math.PI / 6)\n    context.moveTo(0, -s);\n    context.lineTo(u, t);\n    context.lineTo(-u, t);\n    context.closePath();\n  }\n};\n", "import {sqrt} from \"../math.js\";\n\nconst c = -0.5;\nconst s = sqrt(3) / 2;\nconst k = 1 / sqrt(12);\nconst a = (k / 2 + 1) * 3;\n\nexport default {\n  draw(context, size) {\n    const r = sqrt(size / a);\n    const x0 = r / 2, y0 = r * k;\n    const x1 = x0, y1 = r * k + r;\n    const x2 = -x1, y2 = y1;\n    context.moveTo(x0, y0);\n    context.lineTo(x1, y1);\n    context.lineTo(x2, y2);\n    context.lineTo(c * x0 - s * y0, s * x0 + c * y0);\n    context.lineTo(c * x1 - s * y1, s * x1 + c * y1);\n    context.lineTo(c * x2 - s * y2, s * x2 + c * y2);\n    context.lineTo(c * x0 + s * y0, c * y0 - s * x0);\n    context.lineTo(c * x1 + s * y1, c * y1 - s * x1);\n    context.lineTo(c * x2 + s * y2, c * y2 - s * x2);\n    context.closePath();\n  }\n};\n", "import {min, sqrt} from \"../math.js\";\n\nexport default {\n  draw(context, size) {\n    const r = sqrt(size - min(size / 6, 1.7)) * 0.6189;\n    context.moveTo(-r, -r);\n    context.lineTo(r, r);\n    context.moveTo(-r, r);\n    context.lineTo(r, -r);\n  }\n};\n", "import constant from \"./constant.js\";\nimport {withPath} from \"./path.js\";\nimport asterisk from \"./symbol/asterisk.js\";\nimport circle from \"./symbol/circle.js\";\nimport cross from \"./symbol/cross.js\";\nimport diamond from \"./symbol/diamond.js\";\nimport diamond2 from \"./symbol/diamond2.js\";\nimport plus from \"./symbol/plus.js\";\nimport square from \"./symbol/square.js\";\nimport square2 from \"./symbol/square2.js\";\nimport star from \"./symbol/star.js\";\nimport triangle from \"./symbol/triangle.js\";\nimport triangle2 from \"./symbol/triangle2.js\";\nimport wye from \"./symbol/wye.js\";\nimport times from \"./symbol/times.js\";\n\n// These symbols are designed to be filled.\nexport const symbolsFill = [\n  circle,\n  cross,\n  diamond,\n  square,\n  star,\n  triangle,\n  wye\n];\n\n// These symbols are designed to be stroked (with a width of 1.5px and round caps).\nexport const symbolsStroke = [\n  circle,\n  plus,\n  times,\n  triangle2,\n  asterisk,\n  square2,\n  diamond2\n];\n\nexport default function Symbol(type, size) {\n  let context = null,\n      path = withPath(symbol);\n\n  type = typeof type === \"function\" ? type : constant(type || circle);\n  size = typeof size === \"function\" ? size : constant(size === undefined ? 64 : +size);\n\n  function symbol() {\n    let buffer;\n    if (!context) context = buffer = path();\n    type.apply(this, arguments).draw(context, +size.apply(this, arguments));\n    if (buffer) return context = null, buffer + \"\" || null;\n  }\n\n  symbol.type = function(_) {\n    return arguments.length ? (type = typeof _ === \"function\" ? _ : constant(_), symbol) : type;\n  };\n\n  symbol.size = function(_) {\n    return arguments.length ? (size = typeof _ === \"function\" ? _ : constant(+_), symbol) : size;\n  };\n\n  symbol.context = function(_) {\n    return arguments.length ? (context = _ == null ? null : _, symbol) : context;\n  };\n\n  return symbol;\n}\n", "export default function() {}\n", "export function point(that, x, y) {\n  that._context.bezierCurveTo(\n    (2 * that._x0 + that._x1) / 3,\n    (2 * that._y0 + that._y1) / 3,\n    (that._x0 + 2 * that._x1) / 3,\n    (that._y0 + 2 * that._y1) / 3,\n    (that._x0 + 4 * that._x1 + x) / 6,\n    (that._y0 + 4 * that._y1 + y) / 6\n  );\n}\n\nexport function Basis(context) {\n  this._context = context;\n}\n\nBasis.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x0 = this._x1 =\n    this._y0 = this._y1 = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    switch (this._point) {\n      case 3: point(this, this._x1, this._y1); // falls through\n      case 2: this._context.lineTo(this._x1, this._y1); break;\n    }\n    if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n      case 1: this._point = 2; break;\n      case 2: this._point = 3; this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // falls through\n      default: point(this, x, y); break;\n    }\n    this._x0 = this._x1, this._x1 = x;\n    this._y0 = this._y1, this._y1 = y;\n  }\n};\n\nexport default function(context) {\n  return new Basis(context);\n}\n", "import noop from \"../noop.js\";\nimport {point} from \"./basis.js\";\n\nfunction BasisClosed(context) {\n  this._context = context;\n}\n\nBasisClosed.prototype = {\n  areaStart: noop,\n  areaEnd: noop,\n  lineStart: function() {\n    this._x0 = this._x1 = this._x2 = this._x3 = this._x4 =\n    this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    switch (this._point) {\n      case 1: {\n        this._context.moveTo(this._x2, this._y2);\n        this._context.closePath();\n        break;\n      }\n      case 2: {\n        this._context.moveTo((this._x2 + 2 * this._x3) / 3, (this._y2 + 2 * this._y3) / 3);\n        this._context.lineTo((this._x3 + 2 * this._x2) / 3, (this._y3 + 2 * this._y2) / 3);\n        this._context.closePath();\n        break;\n      }\n      case 3: {\n        this.point(this._x2, this._y2);\n        this.point(this._x3, this._y3);\n        this.point(this._x4, this._y4);\n        break;\n      }\n    }\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; this._x2 = x, this._y2 = y; break;\n      case 1: this._point = 2; this._x3 = x, this._y3 = y; break;\n      case 2: this._point = 3; this._x4 = x, this._y4 = y; this._context.moveTo((this._x0 + 4 * this._x1 + x) / 6, (this._y0 + 4 * this._y1 + y) / 6); break;\n      default: point(this, x, y); break;\n    }\n    this._x0 = this._x1, this._x1 = x;\n    this._y0 = this._y1, this._y1 = y;\n  }\n};\n\nexport default function(context) {\n  return new BasisClosed(context);\n}\n", "import {point} from \"./basis.js\";\n\nfunction BasisOpen(context) {\n  this._context = context;\n}\n\nBasisOpen.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x0 = this._x1 =\n    this._y0 = this._y1 = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; break;\n      case 1: this._point = 2; break;\n      case 2: this._point = 3; var x0 = (this._x0 + 4 * this._x1 + x) / 6, y0 = (this._y0 + 4 * this._y1 + y) / 6; this._line ? this._context.lineTo(x0, y0) : this._context.moveTo(x0, y0); break;\n      case 3: this._point = 4; // falls through\n      default: point(this, x, y); break;\n    }\n    this._x0 = this._x1, this._x1 = x;\n    this._y0 = this._y1, this._y1 = y;\n  }\n};\n\nexport default function(context) {\n  return new BasisOpen(context);\n}\n", "import {Basis} from \"./basis.js\";\n\nfunction Bundle(context, beta) {\n  this._basis = new Basis(context);\n  this._beta = beta;\n}\n\nBundle.prototype = {\n  lineStart: function() {\n    this._x = [];\n    this._y = [];\n    this._basis.lineStart();\n  },\n  lineEnd: function() {\n    var x = this._x,\n        y = this._y,\n        j = x.length - 1;\n\n    if (j > 0) {\n      var x0 = x[0],\n          y0 = y[0],\n          dx = x[j] - x0,\n          dy = y[j] - y0,\n          i = -1,\n          t;\n\n      while (++i <= j) {\n        t = i / j;\n        this._basis.point(\n          this._beta * x[i] + (1 - this._beta) * (x0 + t * dx),\n          this._beta * y[i] + (1 - this._beta) * (y0 + t * dy)\n        );\n      }\n    }\n\n    this._x = this._y = null;\n    this._basis.lineEnd();\n  },\n  point: function(x, y) {\n    this._x.push(+x);\n    this._y.push(+y);\n  }\n};\n\nexport default (function custom(beta) {\n\n  function bundle(context) {\n    return beta === 1 ? new Basis(context) : new Bundle(context, beta);\n  }\n\n  bundle.beta = function(beta) {\n    return custom(+beta);\n  };\n\n  return bundle;\n})(0.85);\n", "export function point(that, x, y) {\n  that._context.bezierCurveTo(\n    that._x1 + that._k * (that._x2 - that._x0),\n    that._y1 + that._k * (that._y2 - that._y0),\n    that._x2 + that._k * (that._x1 - x),\n    that._y2 + that._k * (that._y1 - y),\n    that._x2,\n    that._y2\n  );\n}\n\nexport function Cardinal(context, tension) {\n  this._context = context;\n  this._k = (1 - tension) / 6;\n}\n\nCardinal.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x0 = this._x1 = this._x2 =\n    this._y0 = this._y1 = this._y2 = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    switch (this._point) {\n      case 2: this._context.lineTo(this._x2, this._y2); break;\n      case 3: point(this, this._x1, this._y1); break;\n    }\n    if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n      case 1: this._point = 2; this._x1 = x, this._y1 = y; break;\n      case 2: this._point = 3; // falls through\n      default: point(this, x, y); break;\n    }\n    this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n    this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n  }\n};\n\nexport default (function custom(tension) {\n\n  function cardinal(context) {\n    return new Cardinal(context, tension);\n  }\n\n  cardinal.tension = function(tension) {\n    return custom(+tension);\n  };\n\n  return cardinal;\n})(0);\n", "import noop from \"../noop.js\";\nimport {point} from \"./cardinal.js\";\n\nexport function CardinalClosed(context, tension) {\n  this._context = context;\n  this._k = (1 - tension) / 6;\n}\n\nCardinalClosed.prototype = {\n  areaStart: noop,\n  areaEnd: noop,\n  lineStart: function() {\n    this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n    this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    switch (this._point) {\n      case 1: {\n        this._context.moveTo(this._x3, this._y3);\n        this._context.closePath();\n        break;\n      }\n      case 2: {\n        this._context.lineTo(this._x3, this._y3);\n        this._context.closePath();\n        break;\n      }\n      case 3: {\n        this.point(this._x3, this._y3);\n        this.point(this._x4, this._y4);\n        this.point(this._x5, this._y5);\n        break;\n      }\n    }\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n      case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n      case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n      default: point(this, x, y); break;\n    }\n    this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n    this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n  }\n};\n\nexport default (function custom(tension) {\n\n  function cardinal(context) {\n    return new CardinalClosed(context, tension);\n  }\n\n  cardinal.tension = function(tension) {\n    return custom(+tension);\n  };\n\n  return cardinal;\n})(0);\n", "import {point} from \"./cardinal.js\";\n\nexport function CardinalOpen(context, tension) {\n  this._context = context;\n  this._k = (1 - tension) / 6;\n}\n\nCardinalOpen.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x0 = this._x1 = this._x2 =\n    this._y0 = this._y1 = this._y2 = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; break;\n      case 1: this._point = 2; break;\n      case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n      case 3: this._point = 4; // falls through\n      default: point(this, x, y); break;\n    }\n    this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n    this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n  }\n};\n\nexport default (function custom(tension) {\n\n  function cardinal(context) {\n    return new CardinalOpen(context, tension);\n  }\n\n  cardinal.tension = function(tension) {\n    return custom(+tension);\n  };\n\n  return cardinal;\n})(0);\n", "import {epsilon} from \"../math.js\";\nimport {Cardinal} from \"./cardinal.js\";\n\nexport function point(that, x, y) {\n  var x1 = that._x1,\n      y1 = that._y1,\n      x2 = that._x2,\n      y2 = that._y2;\n\n  if (that._l01_a > epsilon) {\n    var a = 2 * that._l01_2a + 3 * that._l01_a * that._l12_a + that._l12_2a,\n        n = 3 * that._l01_a * (that._l01_a + that._l12_a);\n    x1 = (x1 * a - that._x0 * that._l12_2a + that._x2 * that._l01_2a) / n;\n    y1 = (y1 * a - that._y0 * that._l12_2a + that._y2 * that._l01_2a) / n;\n  }\n\n  if (that._l23_a > epsilon) {\n    var b = 2 * that._l23_2a + 3 * that._l23_a * that._l12_a + that._l12_2a,\n        m = 3 * that._l23_a * (that._l23_a + that._l12_a);\n    x2 = (x2 * b + that._x1 * that._l23_2a - x * that._l12_2a) / m;\n    y2 = (y2 * b + that._y1 * that._l23_2a - y * that._l12_2a) / m;\n  }\n\n  that._context.bezierCurveTo(x1, y1, x2, y2, that._x2, that._y2);\n}\n\nfunction CatmullRom(context, alpha) {\n  this._context = context;\n  this._alpha = alpha;\n}\n\nCatmullRom.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x0 = this._x1 = this._x2 =\n    this._y0 = this._y1 = this._y2 = NaN;\n    this._l01_a = this._l12_a = this._l23_a =\n    this._l01_2a = this._l12_2a = this._l23_2a =\n    this._point = 0;\n  },\n  lineEnd: function() {\n    switch (this._point) {\n      case 2: this._context.lineTo(this._x2, this._y2); break;\n      case 3: this.point(this._x2, this._y2); break;\n    }\n    if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n\n    if (this._point) {\n      var x23 = this._x2 - x,\n          y23 = this._y2 - y;\n      this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n    }\n\n    switch (this._point) {\n      case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n      case 1: this._point = 2; break;\n      case 2: this._point = 3; // falls through\n      default: point(this, x, y); break;\n    }\n\n    this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n    this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n    this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n    this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n  }\n};\n\nexport default (function custom(alpha) {\n\n  function catmullRom(context) {\n    return alpha ? new CatmullRom(context, alpha) : new Cardinal(context, 0);\n  }\n\n  catmullRom.alpha = function(alpha) {\n    return custom(+alpha);\n  };\n\n  return catmullRom;\n})(0.5);\n", "import {CardinalClosed} from \"./cardinalClosed.js\";\nimport noop from \"../noop.js\";\nimport {point} from \"./catmullRom.js\";\n\nfunction CatmullRomClosed(context, alpha) {\n  this._context = context;\n  this._alpha = alpha;\n}\n\nCatmullRomClosed.prototype = {\n  areaStart: noop,\n  areaEnd: noop,\n  lineStart: function() {\n    this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n    this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n    this._l01_a = this._l12_a = this._l23_a =\n    this._l01_2a = this._l12_2a = this._l23_2a =\n    this._point = 0;\n  },\n  lineEnd: function() {\n    switch (this._point) {\n      case 1: {\n        this._context.moveTo(this._x3, this._y3);\n        this._context.closePath();\n        break;\n      }\n      case 2: {\n        this._context.lineTo(this._x3, this._y3);\n        this._context.closePath();\n        break;\n      }\n      case 3: {\n        this.point(this._x3, this._y3);\n        this.point(this._x4, this._y4);\n        this.point(this._x5, this._y5);\n        break;\n      }\n    }\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n\n    if (this._point) {\n      var x23 = this._x2 - x,\n          y23 = this._y2 - y;\n      this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n    }\n\n    switch (this._point) {\n      case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n      case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n      case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n      default: point(this, x, y); break;\n    }\n\n    this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n    this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n    this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n    this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n  }\n};\n\nexport default (function custom(alpha) {\n\n  function catmullRom(context) {\n    return alpha ? new CatmullRomClosed(context, alpha) : new CardinalClosed(context, 0);\n  }\n\n  catmullRom.alpha = function(alpha) {\n    return custom(+alpha);\n  };\n\n  return catmullRom;\n})(0.5);\n", "import {CardinalOpen} from \"./cardinalOpen.js\";\nimport {point} from \"./catmullRom.js\";\n\nfunction CatmullRomOpen(context, alpha) {\n  this._context = context;\n  this._alpha = alpha;\n}\n\nCatmullRomOpen.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x0 = this._x1 = this._x2 =\n    this._y0 = this._y1 = this._y2 = NaN;\n    this._l01_a = this._l12_a = this._l23_a =\n    this._l01_2a = this._l12_2a = this._l23_2a =\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n\n    if (this._point) {\n      var x23 = this._x2 - x,\n          y23 = this._y2 - y;\n      this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n    }\n\n    switch (this._point) {\n      case 0: this._point = 1; break;\n      case 1: this._point = 2; break;\n      case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n      case 3: this._point = 4; // falls through\n      default: point(this, x, y); break;\n    }\n\n    this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n    this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n    this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n    this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n  }\n};\n\nexport default (function custom(alpha) {\n\n  function catmullRom(context) {\n    return alpha ? new CatmullRomOpen(context, alpha) : new CardinalOpen(context, 0);\n  }\n\n  catmullRom.alpha = function(alpha) {\n    return custom(+alpha);\n  };\n\n  return catmullRom;\n})(0.5);\n", "import noop from \"../noop.js\";\n\nfunction LinearClosed(context) {\n  this._context = context;\n}\n\nLinearClosed.prototype = {\n  areaStart: noop,\n  areaEnd: noop,\n  lineStart: function() {\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._point) this._context.closePath();\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    if (this._point) this._context.lineTo(x, y);\n    else this._point = 1, this._context.moveTo(x, y);\n  }\n};\n\nexport default function(context) {\n  return new LinearClosed(context);\n}\n", "function sign(x) {\n  return x < 0 ? -1 : 1;\n}\n\n// Calculate the slopes of the tangents (Hermite-type interpolation) based on\n// the following paper: Steffen, M. 1990. A Simple Method for Monotonic\n// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO.\n// NOV(II), P. 443, 1990.\nfunction slope3(that, x2, y2) {\n  var h0 = that._x1 - that._x0,\n      h1 = x2 - that._x1,\n      s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0),\n      s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0),\n      p = (s0 * h1 + s1 * h0) / (h0 + h1);\n  return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;\n}\n\n// Calculate a one-sided slope.\nfunction slope2(that, t) {\n  var h = that._x1 - that._x0;\n  return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t;\n}\n\n// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations\n// \"you can express cubic Hermite interpolation in terms of cubic B\u00E9zier curves\n// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1\".\nfunction point(that, t0, t1) {\n  var x0 = that._x0,\n      y0 = that._y0,\n      x1 = that._x1,\n      y1 = that._y1,\n      dx = (x1 - x0) / 3;\n  that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1);\n}\n\nfunction MonotoneX(context) {\n  this._context = context;\n}\n\nMonotoneX.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x0 = this._x1 =\n    this._y0 = this._y1 =\n    this._t0 = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    switch (this._point) {\n      case 2: this._context.lineTo(this._x1, this._y1); break;\n      case 3: point(this, this._t0, slope2(this, this._t0)); break;\n    }\n    if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    var t1 = NaN;\n\n    x = +x, y = +y;\n    if (x === this._x1 && y === this._y1) return; // Ignore coincident points.\n    switch (this._point) {\n      case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n      case 1: this._point = 2; break;\n      case 2: this._point = 3; point(this, slope2(this, t1 = slope3(this, x, y)), t1); break;\n      default: point(this, this._t0, t1 = slope3(this, x, y)); break;\n    }\n\n    this._x0 = this._x1, this._x1 = x;\n    this._y0 = this._y1, this._y1 = y;\n    this._t0 = t1;\n  }\n}\n\nfunction MonotoneY(context) {\n  this._context = new ReflectContext(context);\n}\n\n(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x, y) {\n  MonotoneX.prototype.point.call(this, y, x);\n};\n\nfunction ReflectContext(context) {\n  this._context = context;\n}\n\nReflectContext.prototype = {\n  moveTo: function(x, y) { this._context.moveTo(y, x); },\n  closePath: function() { this._context.closePath(); },\n  lineTo: function(x, y) { this._context.lineTo(y, x); },\n  bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._context.bezierCurveTo(y1, x1, y2, x2, y, x); }\n};\n\nexport function monotoneX(context) {\n  return new MonotoneX(context);\n}\n\nexport function monotoneY(context) {\n  return new MonotoneY(context);\n}\n", "function Natural(context) {\n  this._context = context;\n}\n\nNatural.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x = [];\n    this._y = [];\n  },\n  lineEnd: function() {\n    var x = this._x,\n        y = this._y,\n        n = x.length;\n\n    if (n) {\n      this._line ? this._context.lineTo(x[0], y[0]) : this._context.moveTo(x[0], y[0]);\n      if (n === 2) {\n        this._context.lineTo(x[1], y[1]);\n      } else {\n        var px = controlPoints(x),\n            py = controlPoints(y);\n        for (var i0 = 0, i1 = 1; i1 < n; ++i0, ++i1) {\n          this._context.bezierCurveTo(px[0][i0], py[0][i0], px[1][i0], py[1][i0], x[i1], y[i1]);\n        }\n      }\n    }\n\n    if (this._line || (this._line !== 0 && n === 1)) this._context.closePath();\n    this._line = 1 - this._line;\n    this._x = this._y = null;\n  },\n  point: function(x, y) {\n    this._x.push(+x);\n    this._y.push(+y);\n  }\n};\n\n// See https://www.particleincell.com/2012/bezier-splines/ for derivation.\nfunction controlPoints(x) {\n  var i,\n      n = x.length - 1,\n      m,\n      a = new Array(n),\n      b = new Array(n),\n      r = new Array(n);\n  a[0] = 0, b[0] = 2, r[0] = x[0] + 2 * x[1];\n  for (i = 1; i < n - 1; ++i) a[i] = 1, b[i] = 4, r[i] = 4 * x[i] + 2 * x[i + 1];\n  a[n - 1] = 2, b[n - 1] = 7, r[n - 1] = 8 * x[n - 1] + x[n];\n  for (i = 1; i < n; ++i) m = a[i] / b[i - 1], b[i] -= m, r[i] -= m * r[i - 1];\n  a[n - 1] = r[n - 1] / b[n - 1];\n  for (i = n - 2; i >= 0; --i) a[i] = (r[i] - a[i + 1]) / b[i];\n  b[n - 1] = (x[n] + a[n - 1]) / 2;\n  for (i = 0; i < n - 1; ++i) b[i] = 2 * x[i + 1] - a[i + 1];\n  return [a, b];\n}\n\nexport default function(context) {\n  return new Natural(context);\n}\n", "function Step(context, t) {\n  this._context = context;\n  this._t = t;\n}\n\nStep.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x = this._y = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y);\n    if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n    if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n      case 1: this._point = 2; // falls through\n      default: {\n        if (this._t <= 0) {\n          this._context.lineTo(this._x, y);\n          this._context.lineTo(x, y);\n        } else {\n          var x1 = this._x * (1 - this._t) + x * this._t;\n          this._context.lineTo(x1, this._y);\n          this._context.lineTo(x1, y);\n        }\n        break;\n      }\n    }\n    this._x = x, this._y = y;\n  }\n};\n\nexport default function(context) {\n  return new Step(context, 0.5);\n}\n\nexport function stepBefore(context) {\n  return new Step(context, 0);\n}\n\nexport function stepAfter(context) {\n  return new Step(context, 1);\n}\n", "export default function(series, order) {\n  if (!((n = series.length) > 1)) return;\n  for (var i = 1, j, s0, s1 = series[order[0]], n, m = s1.length; i < n; ++i) {\n    s0 = s1, s1 = series[order[i]];\n    for (j = 0; j < m; ++j) {\n      s1[j][1] += s1[j][0] = isNaN(s0[j][1]) ? s0[j][0] : s0[j][1];\n    }\n  }\n}\n", "export default function(series) {\n  var n = series.length, o = new Array(n);\n  while (--n >= 0) o[n] = n;\n  return o;\n}\n", "import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport offsetNone from \"./offset/none.js\";\nimport orderNone from \"./order/none.js\";\n\nfunction stackValue(d, key) {\n  return d[key];\n}\n\nfunction stackSeries(key) {\n  const series = [];\n  series.key = key;\n  return series;\n}\n\nexport default function() {\n  var keys = constant([]),\n      order = orderNone,\n      offset = offsetNone,\n      value = stackValue;\n\n  function stack(data) {\n    var sz = Array.from(keys.apply(this, arguments), stackSeries),\n        i, n = sz.length, j = -1,\n        oz;\n\n    for (const d of data) {\n      for (i = 0, ++j; i < n; ++i) {\n        (sz[i][j] = [0, +value(d, sz[i].key, j, data)]).data = d;\n      }\n    }\n\n    for (i = 0, oz = array(order(sz)); i < n; ++i) {\n      sz[oz[i]].index = i;\n    }\n\n    offset(sz, oz);\n    return sz;\n  }\n\n  stack.keys = function(_) {\n    return arguments.length ? (keys = typeof _ === \"function\" ? _ : constant(Array.from(_)), stack) : keys;\n  };\n\n  stack.value = function(_) {\n    return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), stack) : value;\n  };\n\n  stack.order = function(_) {\n    return arguments.length ? (order = _ == null ? orderNone : typeof _ === \"function\" ? _ : constant(Array.from(_)), stack) : order;\n  };\n\n  stack.offset = function(_) {\n    return arguments.length ? (offset = _ == null ? offsetNone : _, stack) : offset;\n  };\n\n  return stack;\n}\n", "import none from \"./none.js\";\n\nexport default function(series, order) {\n  if (!((n = series.length) > 0)) return;\n  for (var i, n, j = 0, m = series[0].length, y; j < m; ++j) {\n    for (y = i = 0; i < n; ++i) y += series[i][j][1] || 0;\n    if (y) for (i = 0; i < n; ++i) series[i][j][1] /= y;\n  }\n  none(series, order);\n}\n", "export default function(series, order) {\n  if (!((n = series.length) > 0)) return;\n  for (var i, j = 0, d, dy, yp, yn, n, m = series[order[0]].length; j < m; ++j) {\n    for (yp = yn = 0, i = 0; i < n; ++i) {\n      if ((dy = (d = series[order[i]][j])[1] - d[0]) > 0) {\n        d[0] = yp, d[1] = yp += dy;\n      } else if (dy < 0) {\n        d[1] = yn, d[0] = yn += dy;\n      } else {\n        d[0] = 0, d[1] = dy;\n      }\n    }\n  }\n}\n", "import none from \"./none.js\";\n\nexport default function(series, order) {\n  if (!((n = series.length) > 0)) return;\n  for (var j = 0, s0 = series[order[0]], n, m = s0.length; j < m; ++j) {\n    for (var i = 0, y = 0; i < n; ++i) y += series[i][j][1] || 0;\n    s0[j][1] += s0[j][0] = -y / 2;\n  }\n  none(series, order);\n}\n", "import none from \"./none.js\";\n\nexport default function(series, order) {\n  if (!((n = series.length) > 0) || !((m = (s0 = series[order[0]]).length) > 0)) return;\n  for (var y = 0, j = 1, s0, m, n; j < m; ++j) {\n    for (var i = 0, s1 = 0, s2 = 0; i < n; ++i) {\n      var si = series[order[i]],\n          sij0 = si[j][1] || 0,\n          sij1 = si[j - 1][1] || 0,\n          s3 = (sij0 - sij1) / 2;\n      for (var k = 0; k < i; ++k) {\n        var sk = series[order[k]],\n            skj0 = sk[j][1] || 0,\n            skj1 = sk[j - 1][1] || 0;\n        s3 += skj0 - skj1;\n      }\n      s1 += sij0, s2 += s3 * sij0;\n    }\n    s0[j - 1][1] += s0[j - 1][0] = y;\n    if (s1) y -= s2 / s1;\n  }\n  s0[j - 1][1] += s0[j - 1][0] = y;\n  none(series, order);\n}\n", "import none from \"./none.js\";\n\nexport default function(series) {\n  var peaks = series.map(peak);\n  return none(series).sort(function(a, b) { return peaks[a] - peaks[b]; });\n}\n\nfunction peak(series) {\n  var i = -1, j = 0, n = series.length, vi, vj = -Infinity;\n  while (++i < n) if ((vi = +series[i][1]) > vj) vj = vi, j = i;\n  return j;\n}\n", "import none from \"./none.js\";\n\nexport default function(series) {\n  var sums = series.map(sum);\n  return none(series).sort(function(a, b) { return sums[a] - sums[b]; });\n}\n\nexport function sum(series) {\n  var s = 0, i = -1, n = series.length, v;\n  while (++i < n) if (v = +series[i][1]) s += v;\n  return s;\n}\n", "import ascending from \"./ascending.js\";\n\nexport default function(series) {\n  return ascending(series).reverse();\n}\n", "import appearance from \"./appearance.js\";\nimport {sum} from \"./ascending.js\";\n\nexport default function(series) {\n  var n = series.length,\n      i,\n      j,\n      sums = series.map(sum),\n      order = appearance(series),\n      top = 0,\n      bottom = 0,\n      tops = [],\n      bottoms = [];\n\n  for (i = 0; i < n; ++i) {\n    j = order[i];\n    if (top < bottom) {\n      top += sums[j];\n      tops.push(j);\n    } else {\n      bottom += sums[j];\n      bottoms.push(j);\n    }\n  }\n\n  return bottoms.reverse().concat(tops);\n}\n", "import none from \"./none.js\";\n\nexport default function(series) {\n  return none(series).reverse();\n}\n", "import * as Collection from \"./collection\";\n\n// Private Functions\nfunction transformTarget(target, matrix, dimension) {\n  var a = matrix.a,\n      d = matrix.d,\n      e = matrix.e,\n      f = matrix.f;\n  return dimension === \"y\" ? d * target + f : a * target + e;\n}\n\nfunction getTransformationMatrix(svg) {\n  return svg.getScreenCTM().inverse();\n}\n\nfunction isNativeTouchEvent(nativeEvent) {\n  return !!(nativeEvent && nativeEvent.identifier !== undefined);\n}\n\nfunction isReactTouchEvent(evt) {\n  return evt.changedTouches && evt.changedTouches.length > 0;\n} // Exported Functions\n\n\nexport function getParentSVG(evt) {\n  if (isNativeTouchEvent(evt.nativeEvent)) {\n    // @ts-expect-error Seems like a superfluous check.\n    return undefined;\n  }\n\n  var getParent = function (target) {\n    if (target.nodeName === \"svg\") {\n      return target;\n    }\n\n    return target.parentNode ? getParent(target.parentNode) : target;\n  };\n\n  return getParent(evt.target);\n}\nexport function getSVGEventCoordinates(evt, svg) {\n  if (isNativeTouchEvent(evt.nativeEvent)) {\n    // react-native override. relies on the RN.View being the _exact_ same size as its child SVG.\n    // this should be fine: the svg is the only child of View and the View shirks to its children\n    return {\n      x: evt.nativeEvent.locationX,\n      y: evt.nativeEvent.locationY\n    };\n  }\n\n  var location = isReactTouchEvent(evt) ? evt.changedTouches[0] : evt;\n  svg = svg || getParentSVG(location);\n  var matrix = getTransformationMatrix(svg);\n  return {\n    x: transformTarget(location.clientX, matrix, \"x\"),\n    y: transformTarget(location.clientY, matrix, \"y\")\n  };\n}\nexport function getDomainCoordinates(props, domain) {\n  var horizontal = props.horizontal;\n  var scale = props.scale; // FIXME: add support for DomainTuple: [number, number]\n\n  var domainObj = domain || {\n    x: scale.x.domain(),\n    y: scale.y.domain()\n  };\n  return {\n    x: horizontal ? [scale.y(domainObj.y[0]), scale.y(domainObj.y[1])] : [scale.x(domainObj.x[0]), scale.x(domainObj.x[1])],\n    y: horizontal ? [scale.x(domainObj.x[0]), scale.x(domainObj.x[1])] : [scale.y(domainObj.y[0]), scale.y(domainObj.y[1])]\n  };\n} // eslint-disable-next-line max-params\n\nexport function getDataCoordinates(props, scale, x, y) {\n  var polar = props.polar,\n      horizontal = props.horizontal;\n\n  if (!polar) {\n    return {\n      x: horizontal ? scale.x.invert(y) : scale.x.invert(x),\n      y: horizontal ? scale.y.invert(x) : scale.y.invert(y)\n    };\n  }\n\n  var origin = props.origin || {\n    x: 0,\n    y: 0\n  };\n  var baseX = x - origin.x;\n  var baseY = y - origin.y;\n  var radius = Math.abs(baseX * Math.sqrt(1 + Math.pow(-baseY / baseX, 2)));\n  var angle = (-Math.atan2(baseY, baseX) + Math.PI * 2) % (Math.PI * 2);\n  return {\n    x: scale.x.invert(angle),\n    y: scale.y.invert(radius)\n  };\n}\nexport function getBounds(props) {\n  var x1 = props.x1,\n      x2 = props.x2,\n      y1 = props.y1,\n      y2 = props.y2,\n      scale = props.scale;\n  var point1 = getDataCoordinates(props, scale, x1, y1);\n  var point2 = getDataCoordinates(props, scale, x2, y2);\n\n  var makeBound = function (a, b) {\n    return [Collection.getMinValue([a, b]), Collection.getMaxValue([a, b])];\n  };\n\n  return {\n    x: makeBound(point1.x, point2.x),\n    y: makeBound(point1.y, point2.y)\n  };\n}", "import _isPlainObject from \"lodash/isPlainObject\";\nimport _values from \"lodash/values\";\nimport _uniqBy from \"lodash/uniqBy\";\nimport _groupBy from \"lodash/groupBy\";\nimport _uniq from \"lodash/uniq\";\nimport _isFunction from \"lodash/isFunction\";\nimport _flatten from \"lodash/flatten\";\nimport _defaults from \"lodash/defaults\";\nimport _assign from \"lodash/assign\";\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport React from \"react\";\nimport * as Axis from \"./axis\";\nimport * as Style from \"./style\";\nimport * as Data from \"./data\";\nimport * as Domain from \"./domain\";\nimport * as Events from \"./events\";\nimport * as Collection from \"./collection\";\nimport * as Helpers from \"./helpers\";\nimport * as Scale from \"./scale\";\nimport * as Log from \"./log\";\nexport function addBinsToParentPropsIfHistogram(_ref) {\n  var children = _ref.children,\n      props = _ref.props,\n      childComponents = _ref.childComponents,\n      parentProps = _ref.parentProps;\n  var someChildrenAreHistograms = children.some(function (child) {\n    return child.type && child.type.role === \"histogram\";\n  });\n  var allChildrenAreHistograms = someChildrenAreHistograms && children.length && children.every(function (child) {\n    return child.type && child.type.role === \"histogram\";\n  });\n\n  if (someChildrenAreHistograms && !allChildrenAreHistograms) {\n    Log.warn(\"VictoryHistogram only supports being stacked with other VictoryHistogram components. Check to make sure that you are only passing VictoryHistogram components to VictoryStack\");\n  } // if we are stacking histograms, we need to generate explicit bins\n  // or else each histogram may end up having different bins\n\n\n  if (!allChildrenAreHistograms) {\n    return parentProps;\n  }\n\n  var childBins = props.bins || childComponents[0].props.bins; // if we have explicit bins then we don't need to calculate them\n\n  if (!Array.isArray(childBins)) {\n    var combinedData = children.reduce(function (memo, child) {\n      var xAccessor = Helpers.createAccessor(child.props.x || \"x\");\n      return memo.concat(child.props.data.map(function (datum) {\n        return {\n          x: xAccessor(datum)\n        };\n      }));\n    }, []); // use the same function to generate bins as VictoryHistogram but with\n    // the combined data from above, then get explicit bins from that\n\n    var getFormattedHistogramData = children[0].type.getFormattedData;\n    childBins = getFormattedHistogramData({\n      data: combinedData,\n      bins: childBins\n    }).reduce(function (memo, _ref2, index) {\n      var x0 = _ref2.x0,\n          x1 = _ref2.x1;\n      return index === 0 ? memo.concat([x0, x1]) : memo.concat(x1);\n    }, []);\n  }\n\n  return _objectSpread(_objectSpread({}, parentProps), {}, {\n    bins: childBins\n  });\n}\nexport function getDataFromChildren(props, childComponents) {\n  var polar = props.polar,\n      startAngle = props.startAngle,\n      endAngle = props.endAngle,\n      categories = props.categories,\n      minDomain = props.minDomain,\n      maxDomain = props.maxDomain;\n  var parentProps = {\n    polar: polar,\n    startAngle: startAngle,\n    endAngle: endAngle,\n    categories: categories,\n    minDomain: minDomain,\n    maxDomain: maxDomain\n  };\n  var stack = 0;\n  var children = childComponents ? childComponents.slice(0) : React.Children.toArray(props.children);\n  parentProps = addBinsToParentPropsIfHistogram({\n    children: children,\n    props: props,\n    childComponents: childComponents,\n    parentProps: parentProps\n  });\n\n  var iteratee = function (child, childName, parent) {\n    var childProps = _assign({}, child.props, parentProps);\n\n    var childData;\n\n    if (!Data.isDataComponent(child)) {\n      return null;\n    } else if (child.type && _isFunction(child.type.getData)) {\n      child = parent ? /*#__PURE__*/React.cloneElement(child, parent.props) : child;\n      childData = child.type.getData(childProps);\n    } else {\n      childData = Data.getData(childProps);\n    }\n\n    stack += 1;\n    return childData.map(function (datum, index) {\n      return _assign({\n        _stack: stack,\n        _group: index\n      }, datum);\n    });\n  };\n\n  var stacked = children.filter(function (c) {\n    return c.type && c.type.role === \"stack\";\n  }).length;\n\n  var combine = function (memo, val) {\n    return memo.concat(_uniqBy(val, \"_group\"));\n  };\n\n  var datasets = Helpers.reduceChildren(children, iteratee, props, [], combine);\n  var group = stacked ? \"_group\" : \"_stack\";\n  return _values(_groupBy(datasets, group));\n}\nexport function getData(props, childComponents) {\n  if (props.data) {\n    return Data.getData(props);\n  }\n\n  childComponents = childComponents || React.Children.toArray(props.children);\n  return getDataFromChildren(props, childComponents);\n}\nexport function getWidth(props, groupLength, seriesLength) {\n  var datasets = props.datasets,\n      horizontal = props.horizontal;\n  var range = horizontal ? Helpers.getRange(props, \"y\") : Helpers.getRange(props, \"x\");\n  var extent = Math.abs(range[1] - range[0]);\n  seriesLength = seriesLength !== undefined ? seriesLength : Array.isArray(datasets[0]) && datasets[0].length || 1;\n  groupLength = groupLength || datasets.length;\n  var bars = groupLength * seriesLength;\n  var barRatio = 0.5;\n  return Math.round(barRatio * extent / bars);\n}\nexport function getDefaultDomainPadding(props, axis, childComponents) {\n  if (props.polar || axis !== \"x\") {\n    return undefined;\n  }\n\n  var groupComponent = childComponents.filter(function (child) {\n    return child.type && child.type.role && child.type.role === \"group\";\n  });\n\n  if (groupComponent.length < 1) {\n    return undefined;\n  }\n\n  var _groupComponent$0$pro = groupComponent[0].props,\n      offset = _groupComponent$0$pro.offset,\n      children = _groupComponent$0$pro.children;\n\n  if (!offset) {\n    return undefined;\n  }\n\n  var firstChild = Array.isArray(children) && children[0];\n\n  if (!firstChild) {\n    return undefined;\n  }\n\n  var barWidth = firstChild.props.barWidth;\n  var dataLength = firstChild.props.data && firstChild.props.data.length || 1;\n\n  if (firstChild && firstChild.type.role === \"stack\") {\n    var nestedChild = firstChild.props.children && firstChild.props.children[0];\n\n    if (!nestedChild) {\n      return undefined;\n    }\n\n    barWidth = nestedChild.props.barWidth;\n    dataLength = firstChild.props.children.length;\n  }\n\n  var width = barWidth || getWidth(props, children.length, dataLength);\n  return {\n    x: width * children.length / 2 + (offset - width * ((children.length - 1) / 2))\n  };\n}\nexport function getDomainFromChildren(props, axis, childComponents) {\n  // eslint-disable-line max-statements, complexity, max-len\n  var children = childComponents ? childComponents.slice(0) : React.Children.toArray(props.children);\n  var parentData = props.data ? Data.getData(props) : undefined;\n  var polar = props.polar,\n      startAngle = props.startAngle,\n      endAngle = props.endAngle,\n      categories = props.categories,\n      minDomain = props.minDomain,\n      maxDomain = props.maxDomain,\n      horizontal = props.horizontal;\n  var baseParentProps = {\n    horizontal: horizontal,\n    polar: polar,\n    startAngle: startAngle,\n    endAngle: endAngle,\n    minDomain: minDomain,\n    maxDomain: maxDomain,\n    categories: categories\n  };\n  var parentProps = parentData ? _assign(baseParentProps, {\n    data: parentData\n  }) : baseParentProps;\n\n  var iteratee = function (child) {\n    var sharedProps = _assign({}, child.props, parentProps);\n\n    if (!Domain.isDomainComponent(child)) {\n      return null;\n    } else if (child.type && _isFunction(child.type.getDomain)) {\n      return child.props && child.type.getDomain(sharedProps, axis);\n    }\n\n    return Domain.getDomain(sharedProps, axis);\n  };\n\n  var childDomains = Helpers.reduceChildren(children, iteratee, props);\n  var min = childDomains.length === 0 ? 0 : Collection.getMinValue(childDomains);\n  var max = childDomains.length === 0 ? 1 : Collection.getMaxValue(childDomains);\n  return [min, max];\n}\nexport function getDomain(props, axis, childComponents) {\n  childComponents = childComponents || React.Children.toArray(props.children);\n  var propsDomain = Domain.getDomainFromProps(props, axis);\n  var domainPadding = getDefaultDomainPadding(props, axis, childComponents);\n  var domain;\n\n  if (propsDomain) {\n    domain = propsDomain;\n  } else {\n    var minDomain = Domain.getMinFromProps(props, axis);\n    var maxDomain = Domain.getMaxFromProps(props, axis);\n    var dataset = (props.data || props.y) && Data.getData(props);\n    var dataDomain = dataset ? Domain.getDomainFromData(props, axis, dataset) : [];\n    var childDomain = getDomainFromChildren(props, axis, childComponents);\n    var min = minDomain || Collection.getMinValue([].concat(_toConsumableArray(dataDomain), _toConsumableArray(childDomain)));\n    var max = maxDomain || Collection.getMaxValue([].concat(_toConsumableArray(dataDomain), _toConsumableArray(childDomain)));\n    domain = Domain.getDomainFromMinMax(min, max);\n  }\n\n  return Domain.formatDomain(domain, _assign({\n    domainPadding: domainPadding\n  }, props), axis);\n}\nexport function getScale(props, axis, childComponents) {\n  if (props.data) {\n    return Scale.getBaseScale(props, axis);\n  }\n\n  var children = childComponents ? childComponents.slice(0) : React.Children.toArray(props.children);\n\n  var iteratee = function (child) {\n    var sharedProps = _assign({}, child.props, {\n      horizontal: props.horizontal\n    });\n\n    return Scale.getScaleType(sharedProps, axis);\n  };\n\n  var childScale = _uniq(Helpers.reduceChildren(children, iteratee, props)); // default to linear scale if more than one uniq scale type is given by children\n\n\n  return childScale.length > 1 ? Scale.getScaleFromName(\"linear\") : Scale.getScaleFromName(childScale[0]);\n}\nexport function getAllEvents(props) {\n  var components = [\"groupComponent\", \"containerComponent\", \"labelComponent\"];\n  var componentEvents = Events.getComponentEvents(props, components);\n  var events = props.events;\n\n  if (Array.isArray(componentEvents)) {\n    events = Array.isArray(props.events) ? componentEvents.concat.apply(componentEvents, _toConsumableArray(props.events)) : componentEvents;\n  }\n\n  return events || [];\n}\nexport function getColor(calculatedProps, child, index) {\n  // check for styles first\n  var style = calculatedProps.style;\n  var colorScale = calculatedProps.colorScale,\n      color = calculatedProps.color;\n\n  if (style && style.data && style.data.fill) {\n    return style.data.fill;\n  }\n\n  colorScale = child.props && child.props.colorScale ? child.props.colorScale : colorScale;\n  color = child.props && child.props.color ? child.props.color : color;\n\n  if (!colorScale && !color) {\n    return undefined;\n  }\n\n  var colors = Array.isArray(colorScale) ? colorScale : Style.getColorScale(colorScale);\n  return color || colors[index % colors.length];\n}\nexport function getStyle(theme, style, role) {\n  var defaultStyle = theme && theme[role] && theme[role].style ? theme[role].style : {};\n  return Helpers.getStyles(style, defaultStyle);\n}\nexport function getChildStyle(child, index, calculatedProps) {\n  var style = calculatedProps.style,\n      role = calculatedProps.role;\n  var childStyle = child.props.style || {};\n\n  if (Array.isArray(childStyle)) {\n    return childStyle;\n  }\n\n  var childRole = child.type && child.type.role;\n  var defaultFill = childRole === \"stack\" ? undefined : getColor(calculatedProps, child, index);\n  var defaultColor = childRole === \"line\" ? {\n    fill: \"none\",\n    stroke: defaultFill\n  } : {\n    fill: defaultFill\n  };\n  var dataWidth = role === \"stack\" ? {} : {\n    width: getWidth(calculatedProps)\n  };\n\n  var dataStyle = _defaults({}, childStyle.data, _assign({}, dataWidth, style.data, defaultColor));\n\n  var labelsStyle = _defaults({}, childStyle.labels, style.labels);\n\n  return {\n    parent: style.parent,\n    data: dataStyle,\n    labels: labelsStyle\n  };\n}\nexport function getStringsFromCategories(childComponents, axis) {\n  var iteratee = function (child) {\n    var childProps = child.props || {};\n\n    if (!Domain.isDomainComponent(child) || !childProps.categories) {\n      return null;\n    }\n\n    var categories = childProps.categories && !Array.isArray(childProps.categories) ? childProps.categories[axis] : childProps.props.categories;\n    var categoryStrings = categories && categories.filter(function (val) {\n      return typeof val === \"string\";\n    });\n    return categoryStrings ? Collection.removeUndefined(categoryStrings) : [];\n  };\n\n  return Helpers.reduceChildren(childComponents.slice(0), iteratee);\n}\nexport function getStringsFromData(childComponents) {\n  var iteratee = function (child) {\n    var childProps = child.props || {};\n    var data;\n\n    if (!Data.isDataComponent(child)) {\n      return null;\n    } else if (child.type && _isFunction(child.type.getData)) {\n      data = child.type.getData(childProps);\n    } else {\n      data = Data.getData(childProps);\n    }\n\n    return data.map(function (d) {\n      return {\n        x: d.xName,\n        y: d.yName\n      };\n    });\n  };\n\n  var initialMemo = {\n    x: [],\n    y: []\n  };\n\n  var combine = function (memo, datum) {\n    var x = Array.isArray(datum) ? datum.map(function (d) {\n      return d.x;\n    }).filter(Boolean) : datum.x;\n    var y = Array.isArray(datum) ? datum.map(function (d) {\n      return d.y;\n    }).filter(Boolean) : datum.y;\n    return {\n      x: x !== undefined ? memo.x.concat(x) : memo.x,\n      y: y !== undefined ? memo.y.concat(y) : memo.y\n    };\n  };\n\n  return Helpers.reduceChildren(childComponents.slice(0), iteratee, {}, initialMemo, combine);\n}\nexport function getCategoryAndAxisStringsFromChildren(props, axis, childComponents) {\n  var categories = _isPlainObject(props.categories) ? props.categories[axis] : props.categories;\n  var axisComponent = Axis.getAxisComponent(childComponents, axis);\n  var axisStrings = axisComponent ? Data.getStringsFromAxes(axisComponent.props, axis) : [];\n  var categoryStrings = categories || getStringsFromCategories(childComponents, axis);\n  return _uniq(_flatten([].concat(_toConsumableArray(categoryStrings), _toConsumableArray(axisStrings))));\n}\nexport function getStringsFromChildren(props, childComponents) {\n  childComponents = childComponents || React.Children.toArray(props.children);\n  var xStrings = getCategoryAndAxisStringsFromChildren(props, \"x\", childComponents);\n  var yStrings = getCategoryAndAxisStringsFromChildren(props, \"y\", childComponents);\n  var dataStrings = getStringsFromData(childComponents);\n  return {\n    x: _uniq(_flatten([].concat(_toConsumableArray(xStrings), _toConsumableArray(dataStrings.x)))),\n    y: _uniq(_flatten([].concat(_toConsumableArray(yStrings), _toConsumableArray(dataStrings.y))))\n  };\n}\nexport function getCategories(props, childComponents, allStrings) {\n  var xPropCategories = props.categories && !Array.isArray(props.categories) ? props.categories.x : props.categories;\n  var yPropCategories = props.categories && !Array.isArray(props.categories) ? props.categories.y : props.categories;\n  var fallbackRequired = !xPropCategories || !yPropCategories;\n  var fallbackProps = fallbackRequired ? allStrings || getStringsFromChildren(props, childComponents) : {};\n  var xCategories = xPropCategories || fallbackProps.x;\n  var yCategories = yPropCategories || fallbackProps.y;\n  return {\n    x: xCategories.length > 0 ? xCategories : undefined,\n    y: yCategories.length > 0 ? yCategories : undefined\n  };\n}", "import _isEmpty from \"lodash/isEmpty\";\nimport _assign from \"lodash/assign\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (typeof call === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport PropTypes from \"prop-types\";\nimport React from \"react\";\nimport { PropTypes as CustomPropTypes, VictoryLabel, CommonProps, VictoryContainer, VictoryTheme, LineSegment, TextSize, addEvents, Axis, UserProps } from \"victory-core\";\nimport { getBaseProps, getStyles } from \"./helper-methods\";\nvar fallbackProps = {\n  width: 450,\n  height: 300,\n  padding: 50\n};\nvar options = {\n  components: [{\n    name: \"axis\",\n    index: 0\n  }, {\n    name: \"axisLabel\",\n    index: 0\n  }, {\n    name: \"grid\"\n  }, {\n    name: \"parent\",\n    index: \"parent\"\n  }, {\n    name: \"ticks\"\n  }, {\n    name: \"tickLabels\"\n  }]\n};\n\nvar VictoryAxisBase = /*#__PURE__*/function (_React$Component) {\n  _inherits(VictoryAxisBase, _React$Component);\n\n  var _super = _createSuper(VictoryAxisBase);\n\n  function VictoryAxisBase() {\n    _classCallCheck(this, VictoryAxisBase);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(VictoryAxisBase, [{\n    key: \"renderLine\",\n    value: function renderLine(props) {\n      var axisComponent = props.axisComponent;\n      var axisProps = this.getComponentProps(axisComponent, \"axis\", 0);\n      return /*#__PURE__*/React.cloneElement(axisComponent, axisProps);\n    }\n  }, {\n    key: \"renderLabel\",\n    value: function renderLabel(props) {\n      var axisLabelComponent = props.axisLabelComponent,\n          label = props.label;\n\n      if (!label) {\n        return null;\n      }\n\n      var axisLabelProps = this.getComponentProps(axisLabelComponent, \"axisLabel\", 0);\n      return /*#__PURE__*/React.cloneElement(axisLabelComponent, axisLabelProps);\n    }\n  }, {\n    key: \"renderGridAndTicks\",\n    value: function renderGridAndTicks(props) {\n      var _this = this;\n\n      var tickComponent = props.tickComponent,\n          tickLabelComponent = props.tickLabelComponent,\n          gridComponent = props.gridComponent,\n          name = props.name;\n\n      var shouldRender = function (componentProps) {\n        var _componentProps$style = componentProps.style,\n            style = _componentProps$style === void 0 ? {} : _componentProps$style,\n            _componentProps$event = componentProps.events,\n            events = _componentProps$event === void 0 ? {} : _componentProps$event;\n        var visible = style.stroke !== \"transparent\" && style.stroke !== \"none\" && style.strokeWidth !== 0;\n        return visible || !_isEmpty(events);\n      };\n\n      return this.dataKeys.map(function (key, index) {\n        var tickProps = _this.getComponentProps(tickComponent, \"ticks\", index);\n\n        var BaseTickComponent = /*#__PURE__*/React.cloneElement(tickComponent, tickProps);\n        var TickComponent = shouldRender(BaseTickComponent.props) ? BaseTickComponent : undefined;\n\n        var gridProps = _this.getComponentProps(gridComponent, \"grid\", index);\n\n        var BaseGridComponent = /*#__PURE__*/React.cloneElement(gridComponent, gridProps);\n        var GridComponent = shouldRender(BaseGridComponent.props) ? BaseGridComponent : undefined;\n\n        var tickLabelProps = _this.getComponentProps(tickLabelComponent, \"tickLabels\", index);\n\n        var TickLabel = /*#__PURE__*/React.cloneElement(tickLabelComponent, tickLabelProps);\n        var children = [GridComponent, TickComponent, TickLabel].filter(Boolean);\n        return /*#__PURE__*/React.cloneElement(props.groupComponent, {\n          key: \"\".concat(name, \"-tick-group-\").concat(key)\n        }, children);\n      });\n    }\n  }, {\n    key: \"fixLabelOverlap\",\n    value: function fixLabelOverlap(gridAndTicks, props) {\n      var isVertical = Axis.isVertical(props);\n      var size = isVertical ? props.height : props.width;\n\n      var isVictoryLabel = function (child) {\n        return child.type && child.type.role === \"label\";\n      };\n\n      var labels = gridAndTicks.map(function (gridAndTick) {\n        return gridAndTick.props.children;\n      }).reduce(function (accumulator, childArr) {\n        return accumulator.concat(childArr);\n      }, []).filter(isVictoryLabel).map(function (child) {\n        return child.props;\n      });\n\n      var paddingToObject = function (padding) {\n        return typeof padding === \"object\" ? _assign({}, {\n          top: 0,\n          right: 0,\n          bottom: 0,\n          left: 0\n        }, padding) : {\n          top: padding,\n          right: padding,\n          bottom: padding,\n          left: padding\n        };\n      };\n\n      var labelsSumSize = labels.reduce(function (sum, label) {\n        var padding = paddingToObject(label.style.padding);\n        var labelSize = TextSize.approximateTextSize(label.text, {\n          angle: label.angle,\n          fontSize: label.style.fontSize,\n          letterSpacing: label.style.letterSpacing,\n          fontFamily: label.style.fontFamily\n        });\n        return sum + (isVertical ? labelSize.height + padding.top + padding.bottom : labelSize.width + padding.right + padding.left);\n      }, 0);\n      var availiableLabelCount = Math.floor(size * gridAndTicks.length / labelsSumSize);\n      var divider = Math.ceil(gridAndTicks.length / availiableLabelCount) || 1;\n\n      var getLabelCoord = function (gridAndTick) {\n        return gridAndTick.props.children.filter(isVictoryLabel).reduce(function (prev, child) {\n          return (isVertical ? child.props.y : child.props.x) || 0;\n        }, 0);\n      };\n\n      var sorted = gridAndTicks.sort(function (a, b) {\n        return isVertical ? getLabelCoord(b) - getLabelCoord(a) // ordinary axis has top-bottom orientation\n        : getLabelCoord(a) - getLabelCoord(b);\n      } // ordinary axis has left-right orientation\n      );\n      return sorted.filter(function (gridAndTick, index) {\n        return index % divider === 0;\n      });\n    } // Overridden in native versions\n\n  }, {\n    key: \"shouldAnimate\",\n    value: function shouldAnimate() {\n      return !!this.props.animate;\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var animationWhitelist = VictoryAxis.animationWhitelist;\n      var props = Axis.modifyProps(this.props, fallbackProps);\n      var userProps = UserProps.getSafeUserProps(this.props);\n\n      if (this.shouldAnimate()) {\n        return this.animateComponent(props, animationWhitelist);\n      }\n\n      var gridAndTicks = this.renderGridAndTicks(props);\n      var modifiedGridAndTicks = props.fixLabelOverlap ? this.fixLabelOverlap(gridAndTicks, props) : gridAndTicks;\n      var children = [this.renderLine(props), this.renderLabel(props)].concat(_toConsumableArray(modifiedGridAndTicks));\n      var container = /*#__PURE__*/React.cloneElement(props.containerComponent, userProps);\n      return props.standalone ? this.renderContainer(container, children) : /*#__PURE__*/React.cloneElement(props.groupComponent, userProps, children);\n    }\n  }]);\n\n  return VictoryAxisBase;\n}(React.Component);\n\nVictoryAxisBase.animationWhitelist = [\"style\", \"domain\", \"range\", \"tickCount\", \"tickValues\", \"offsetX\", \"offsetY\", \"padding\", \"width\", \"height\"];\nVictoryAxisBase.displayName = \"VictoryAxis\";\nVictoryAxisBase.role = \"axis\";\nVictoryAxisBase.defaultTransitions = {\n  onExit: {\n    duration: 500\n  },\n  onEnter: {\n    duration: 500\n  }\n};\nVictoryAxisBase.propTypes = _objectSpread(_objectSpread({}, CommonProps.baseProps), {}, {\n  axisComponent: PropTypes.element,\n  axisLabelComponent: PropTypes.element,\n  axisValue: PropTypes.oneOfType([PropTypes.number, PropTypes.string, PropTypes.object]),\n  categories: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.string), PropTypes.shape({\n    x: PropTypes.arrayOf(PropTypes.string),\n    y: PropTypes.arrayOf(PropTypes.string)\n  })]),\n  crossAxis: PropTypes.bool,\n  dependentAxis: PropTypes.bool,\n  events: PropTypes.arrayOf(PropTypes.shape({\n    target: PropTypes.oneOf([\"axis\", \"axisLabel\", \"grid\", \"ticks\", \"tickLabels\"]),\n    eventKey: PropTypes.oneOfType([PropTypes.array, CustomPropTypes.allOfType([CustomPropTypes.integer, CustomPropTypes.nonNegative]), PropTypes.string]),\n    eventHandlers: PropTypes.object\n  })),\n  fixLabelOverlap: PropTypes.bool,\n  gridComponent: PropTypes.element,\n  groupComponent: PropTypes.element,\n  invertAxis: PropTypes.bool,\n  label: PropTypes.any,\n  offsetX: PropTypes.number,\n  offsetY: PropTypes.number,\n  orientation: PropTypes.oneOf([\"top\", \"bottom\", \"left\", \"right\"]),\n  origin: PropTypes.shape({\n    x: PropTypes.number,\n    y: PropTypes.number\n  }),\n  stringMap: PropTypes.object,\n  style: PropTypes.shape({\n    parent: PropTypes.object,\n    axis: PropTypes.object,\n    axisLabel: PropTypes.object,\n    grid: PropTypes.object,\n    ticks: PropTypes.object,\n    tickLabels: PropTypes.object\n  }),\n  tickComponent: PropTypes.element,\n  tickCount: CustomPropTypes.allOfType([CustomPropTypes.integer, CustomPropTypes.greaterThanZero]),\n  tickFormat: PropTypes.oneOfType([PropTypes.func, CustomPropTypes.homogeneousArray]),\n  tickLabelComponent: PropTypes.element,\n  tickValues: CustomPropTypes.homogeneousArray\n});\nVictoryAxisBase.defaultProps = {\n  axisComponent: /*#__PURE__*/React.createElement(LineSegment, null),\n  axisLabelComponent: /*#__PURE__*/React.createElement(VictoryLabel, null),\n  tickLabelComponent: /*#__PURE__*/React.createElement(VictoryLabel, null),\n  tickComponent: /*#__PURE__*/React.createElement(LineSegment, null),\n  gridComponent: /*#__PURE__*/React.createElement(LineSegment, null),\n  standalone: true,\n  theme: VictoryTheme.grayscale,\n  containerComponent: /*#__PURE__*/React.createElement(VictoryContainer, null),\n  groupComponent: /*#__PURE__*/React.createElement(\"g\", {\n    role: \"presentation\"\n  }),\n  fixLabelOverlap: false\n};\nVictoryAxisBase.getDomain = Axis.getDomain;\nVictoryAxisBase.getAxis = Axis.getAxis;\n\nVictoryAxisBase.getStyles = function (props) {\n  return getStyles(props);\n};\n\nVictoryAxisBase.getBaseProps = function (props) {\n  return getBaseProps(props, fallbackProps);\n};\n\nVictoryAxisBase.expectedComponents = [\"axisComponent\", \"axisLabelComponent\", \"groupComponent\", \"containerComponent\", \"tickComponent\", \"tickLabelComponent\", \"gridComponent\"];\nexport var VictoryAxis = addEvents(VictoryAxisBase, options);", "import _defaults from \"lodash/defaults\";\nimport _assign from \"lodash/assign\";\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Helpers, Scale, Axis } from \"victory-core\";\nvar orientationSign = {\n  top: -1,\n  left: -1,\n  right: 1,\n  bottom: 1\n};\n\nvar exists = function (val) {\n  return val !== null && val !== undefined;\n};\n\nvar getCurrentAxis = function (props, axis) {\n  var orientation = props.orientation,\n      horizontal = props.horizontal;\n\n  if (orientation) {\n    var dimensions = {\n      top: \"x\",\n      bottom: \"x\",\n      left: \"y\",\n      right: \"y\"\n    };\n    return dimensions[orientation];\n  }\n\n  var otherAxis = axis === \"x\" ? \"y\" : \"x\";\n  return horizontal ? otherAxis : axis;\n};\n\nvar getScale = function (props) {\n  var axis = Axis.getAxis(props);\n  var currentAxis = getCurrentAxis(props, axis);\n  var scale = Scale.getBaseScale(props, axis);\n  var propsDomain = props.domain && props.domain[axis];\n  var domain = propsDomain || Axis.getDomain(props) || scale.domain();\n  scale.range(Helpers.getRange(props, currentAxis));\n  scale.domain(domain);\n  return scale;\n};\n\nvar getStyleObject = function (props) {\n  var theme = props.theme,\n      dependentAxis = props.dependentAxis;\n  var generalAxisStyle = theme && theme.axis && theme.axis.style;\n  var axisType = dependentAxis ? \"dependentAxis\" : \"independentAxis\";\n  var specificAxisStyle = theme && theme[axisType] && theme[axisType].style;\n\n  var mergeStyles = function () {\n    var styleNamespaces = [\"axis\", \"axisLabel\", \"grid\", \"parent\", \"tickLabels\", \"ticks\"];\n    return styleNamespaces.reduce(function (memo, curr) {\n      memo[curr] = _defaults({}, specificAxisStyle[curr], generalAxisStyle[curr]);\n      return memo;\n    }, {});\n  };\n\n  return generalAxisStyle && specificAxisStyle ? mergeStyles() : specificAxisStyle || generalAxisStyle;\n};\n\nexport var getStyles = function (props, styleObject) {\n  var style = props.style || {};\n  styleObject = styleObject || {};\n  var parentStyleProps = {\n    height: \"100%\",\n    width: \"100%\"\n  };\n  return {\n    parent: _defaults(style.parent, styleObject.parent, parentStyleProps),\n    axis: _defaults({}, style.axis, styleObject.axis),\n    axisLabel: _defaults({}, style.axisLabel, styleObject.axisLabel),\n    grid: _defaults({}, style.grid, styleObject.grid),\n    ticks: _defaults({}, style.ticks, styleObject.ticks),\n    tickLabels: _defaults({}, style.tickLabels, styleObject.tickLabels)\n  };\n};\n\nvar getTickProps = function (layout, style, datum) {\n  var position = layout.position,\n      transform = layout.transform;\n  return {\n    x1: transform.x,\n    y1: transform.y,\n    x2: transform.x + position.x2,\n    y2: transform.y + position.y2,\n    style: style,\n    datum: datum\n  };\n}; // eslint-disable-next-line max-params\n\n\nvar getTickLabelProps = function (layout, style, anchors, datum, text) {\n  var position = layout.position,\n      transform = layout.transform;\n  return {\n    style: style,\n    x: transform.x + position.x,\n    y: transform.y + position.y,\n    verticalAnchor: anchors.verticalAnchor,\n    textAnchor: anchors.textAnchor,\n    angle: style.angle,\n    text: text,\n    datum: datum\n  };\n};\n\nvar getGridProps = function (layout, style, datum) {\n  var edge = layout.edge,\n      transform = layout.transform;\n  return {\n    x1: transform.x,\n    y1: transform.y,\n    x2: edge.x + transform.x,\n    y2: edge.y + transform.y,\n    style: style,\n    datum: datum\n  };\n};\n\nvar getAxisProps = function (modifiedProps, calculatedValues, globalTransform) {\n  var style = calculatedValues.style,\n      padding = calculatedValues.padding,\n      isVertical = calculatedValues.isVertical;\n  var width = modifiedProps.width,\n      height = modifiedProps.height;\n  return {\n    style: style.axis,\n    x1: isVertical ? globalTransform.x : padding.left + globalTransform.x,\n    x2: isVertical ? globalTransform.x : width - padding.right + globalTransform.x,\n    y1: isVertical ? padding.top + globalTransform.y : globalTransform.y,\n    y2: isVertical ? height - padding.bottom + globalTransform.y : globalTransform.y\n  };\n};\n\nvar getEvaluatedStyles = function (style, props) {\n  return {\n    tickStyle: Helpers.evaluateStyle(style.ticks, props),\n    labelStyle: Helpers.evaluateStyle(style.tickLabels, props),\n    gridStyle: Helpers.evaluateStyle(style.grid, props)\n  };\n};\n\nvar getAxisLabelProps = function (props, calculatedValues, globalTransform) {\n  var style = calculatedValues.style,\n      orientation = calculatedValues.orientation,\n      padding = calculatedValues.padding,\n      labelPadding = calculatedValues.labelPadding,\n      isVertical = calculatedValues.isVertical;\n  var sign = orientationSign[orientation];\n  var hPadding = padding.left + padding.right;\n  var vPadding = padding.top + padding.bottom;\n  var verticalAnchor = sign < 0 ? \"end\" : \"start\";\n  var labelStyle = style.axisLabel;\n  var angle = isVertical ? -90 : 0; // eslint-disable-line no-magic-numbers\n\n  var x = isVertical ? globalTransform.x + sign * labelPadding : (props.width - hPadding) / 2 + padding.left + globalTransform.x;\n  var y = isVertical ? (props.height - vPadding) / 2 + padding.top + globalTransform.y : sign * labelPadding + globalTransform.y;\n  return {\n    x: x,\n    y: y,\n    verticalAnchor: labelStyle.verticalAnchor || verticalAnchor,\n    textAnchor: labelStyle.textAnchor || \"middle\",\n    angle: labelStyle.angle === undefined ? angle : labelStyle.angle,\n    style: labelStyle,\n    text: props.label\n  };\n};\n\nvar getAnchors = function (orientation, isVertical) {\n  var anchorOrientation = {\n    top: \"end\",\n    left: \"end\",\n    right: \"start\",\n    bottom: \"start\"\n  };\n  var anchor = anchorOrientation[orientation];\n  return {\n    textAnchor: isVertical ? anchor : \"middle\",\n    verticalAnchor: isVertical ? \"middle\" : anchor\n  };\n};\n\nvar getLabelPadding = function (props, style) {\n  var labelStyle = style.axisLabel || {};\n\n  if (labelStyle.padding !== undefined && labelStyle.padding !== null) {\n    return labelStyle.padding;\n  }\n\n  var isVertical = Axis.isVertical(props); // TODO: magic numbers\n\n  /* eslint-disable no-magic-numbers*/\n\n  var fontSize = labelStyle.fontSize || 14;\n  return props.label ? fontSize * (isVertical ? 2.3 : 1.6) : 0;\n  /* eslint-enable no-magic-numbers*/\n};\n\nvar getDefaultOrientations = function (axis, originSign, horizontal) {\n  var sign = originSign || \"positive\";\n  var orientations = {\n    positive: {\n      x: \"bottom\",\n      y: \"left\"\n    },\n    negative: {\n      x: \"top\",\n      y: \"right\"\n    }\n  };\n  var horizontalOrientations = {\n    positive: {\n      x: \"left\",\n      y: \"bottom\"\n    },\n    negative: {\n      x: \"right\",\n      y: \"top\"\n    }\n  };\n  return horizontal ? horizontalOrientations[sign][axis] : orientations[sign][axis];\n};\n\nvar getStandaloneOffset = function (props, calculatedValues) {\n  var style = calculatedValues.style,\n      scale = calculatedValues.scale,\n      orientation = calculatedValues.orientation,\n      padding = calculatedValues.padding,\n      axis = calculatedValues.axis,\n      ticks = calculatedValues.ticks,\n      stringTicks = calculatedValues.stringTicks,\n      isVertical = calculatedValues.isVertical,\n      labelPadding = calculatedValues.labelPadding;\n  var polar = props.polar,\n      horizontal = props.horizontal;\n  var sharedProps = {\n    scale: _defineProperty({}, axis, scale),\n    polar: polar,\n    horizontal: horizontal,\n    ticks: ticks,\n    stringTicks: stringTicks\n  };\n  var xPadding = orientation === \"right\" ? padding.right : padding.left;\n  var yPadding = orientation === \"top\" ? padding.top : padding.bottom;\n  var offsetX = props.offsetX !== null && props.offsetX !== undefined ? props.offsetX : xPadding;\n  var offsetY = props.offsetY !== null && props.offsetY !== undefined ? props.offsetY : yPadding;\n  var fontSize = style.axisLabel.fontSize || 14; // eslint-disable-line no-magic-numbers\n\n  var tickSizes = ticks.map(function (data, index) {\n    var tick = stringTicks ? props.tickValues[data - 1] : data;\n    var tickStyle = Helpers.evaluateStyle(style.ticks, _assign({}, sharedProps, {\n      tick: tick,\n      index: index\n    }));\n    return tickStyle.size || 0;\n  });\n  var totalPadding = fontSize + 2 * Math.max.apply(Math, _toConsumableArray(tickSizes)) + labelPadding;\n  var minimumPadding = 1.2 * fontSize; // eslint-disable-line no-magic-numbers\n\n  var x = isVertical ? totalPadding : minimumPadding;\n  var y = isVertical ? minimumPadding : totalPadding;\n  return {\n    x: offsetX !== null && offsetX !== undefined ? offsetX : x,\n    y: offsetY !== null && offsetY !== undefined ? offsetY : y\n  };\n}; // eslint-disable-next-line complexity\n\n\nvar getOffset = function (props, calculatedValues) {\n  var scale = calculatedValues.scale,\n      origin = calculatedValues.origin,\n      orientation = calculatedValues.orientation,\n      orientations = calculatedValues.orientations,\n      domain = calculatedValues.domain,\n      padding = calculatedValues.padding;\n  var top = padding.top,\n      bottom = padding.bottom,\n      left = padding.left,\n      right = padding.right;\n  var calculatedOrientation = {\n    x: orientation === \"bottom\" || orientation === \"top\" ? orientation : orientations.x,\n    y: orientation === \"left\" || orientation === \"right\" ? orientation : orientations.y\n  }; // make the axes line up, and cross when appropriate\n\n  var orientationOffset = {\n    x: calculatedOrientation.y === \"left\" ? left : right,\n    y: calculatedOrientation.x === \"bottom\" ? bottom : top\n  };\n  var originOffset = {\n    x: calculatedOrientation.y === \"left\" ? 0 : props.width,\n    y: calculatedOrientation.x === \"bottom\" ? props.height : 0\n  };\n  var originPosition = {\n    x: origin.x === domain.x[0] || origin.x === domain.x[1] ? 0 : scale.x(origin.x),\n    y: origin.y === domain.y[0] || origin.y === domain.y[1] ? 0 : scale.y(origin.y)\n  };\n  var x = originPosition.x ? Math.abs(originOffset.x - originPosition.x) : orientationOffset.x;\n  var y = originPosition.y ? Math.abs(originOffset.y - originPosition.y) : orientationOffset.y;\n  var offsetX = exists(props.offsetX) ? props.offsetX : x;\n  var offsetY = exists(props.offsetY) ? props.offsetY : y;\n  return {\n    x: offsetX,\n    y: offsetY\n  };\n}; // eslint-disable-next-line complexity\n\n\nvar getHorizontalOffset = function (props, calculatedValues) {\n  var scale = calculatedValues.scale,\n      origin = calculatedValues.origin,\n      orientation = calculatedValues.orientation,\n      orientations = calculatedValues.orientations,\n      domain = calculatedValues.domain,\n      padding = calculatedValues.padding;\n  var top = padding.top,\n      bottom = padding.bottom,\n      left = padding.left,\n      right = padding.right;\n  var calculatedOrientation = {\n    y: orientation === \"bottom\" || orientation === \"top\" ? orientation : orientations.x,\n    x: orientation === \"left\" || orientation === \"right\" ? orientation : orientations.y\n  }; // make the axes line up, and cross when appropriate\n\n  var orientationOffset = {\n    x: calculatedOrientation.y === \"bottom\" ? bottom : top,\n    y: calculatedOrientation.x === \"left\" ? left : right\n  };\n  var originOffset = {\n    y: calculatedOrientation.x === \"left\" ? 0 : props.width,\n    x: calculatedOrientation.y === \"bottom\" ? props.height : 0\n  };\n  var originPosition = {\n    x: origin.x === domain.x[0] || origin.x === domain.x[1] ? 0 : scale.x(origin.x),\n    y: origin.y === domain.y[0] || origin.y === domain.y[1] ? 0 : scale.y(origin.y)\n  };\n  var y = originPosition.x ? Math.abs(originOffset.x - originPosition.x) : orientationOffset.x;\n  var x = originPosition.y ? Math.abs(originOffset.y - originPosition.y) : orientationOffset.y;\n  var offsetX = exists(props.offsetX) ? props.offsetX : x;\n  var offsetY = exists(props.offsetY) ? props.offsetY : y;\n  return {\n    x: offsetX,\n    y: offsetY\n  };\n};\n\nvar getTransform = function (props, calculatedValues, offset) {\n  var orientation = calculatedValues.orientation,\n      axis = calculatedValues.axis;\n  var axisValue = Axis.getAxisValue(props, axis);\n  return {\n    top: {\n      x: 0,\n      y: axisValue !== undefined ? axisValue : offset.y\n    },\n    bottom: {\n      x: 0,\n      y: axisValue !== undefined ? axisValue : props.height - offset.y\n    },\n    left: {\n      x: axisValue !== undefined ? axisValue : offset.x,\n      y: 0\n    },\n    right: {\n      x: axisValue !== undefined ? axisValue : props.width - offset.x,\n      y: 0\n    }\n  }[orientation];\n};\n\nvar getTickPosition = function (style, orientation, isVertical) {\n  var tickStyle = style.tickStyle,\n      labelStyle = style.labelStyle;\n  var size = tickStyle.size || 0;\n  var tickPadding = tickStyle.padding || 0;\n  var labelPadding = labelStyle.padding || 0;\n  var tickSpacing = size + tickPadding + labelPadding;\n  var sign = orientationSign[orientation];\n  return {\n    x: isVertical ? sign * tickSpacing : 0,\n    x2: isVertical ? sign * size : 0,\n    y: isVertical ? 0 : sign * tickSpacing,\n    y2: isVertical ? 0 : sign * size\n  };\n};\n\nvar getTickTransform = function (tick, globalTransform, isVertical) {\n  return {\n    x: isVertical ? globalTransform.x : tick + globalTransform.x,\n    y: isVertical ? tick + globalTransform.y : globalTransform.y\n  };\n};\n\nvar getGridEdge = function (props, calculatedValues) {\n  var orientation = calculatedValues.orientation,\n      padding = calculatedValues.padding,\n      isVertical = calculatedValues.isVertical;\n  var sign = -orientationSign[orientation];\n  var x = isVertical ? sign * (props.width - (padding.left + padding.right)) : 0;\n  var y = isVertical ? 0 : sign * (props.height - (padding.top + padding.bottom));\n  return {\n    x: x,\n    y: y\n  };\n};\n\nvar getGridOffset = function (calculatedValues, offset) {\n  var padding = calculatedValues.padding,\n      orientation = calculatedValues.orientation,\n      crossAxis = calculatedValues.crossAxis;\n  var xPadding = orientation === \"right\" ? padding.right : padding.left;\n  var yPadding = orientation === \"top\" ? padding.top : padding.bottom;\n  return {\n    x: crossAxis ? offset.x - xPadding : 0,\n    y: crossAxis ? offset.y - yPadding : 0\n  };\n};\n\nvar getLayoutProps = function (modifiedProps, calculatedValues) {\n  var offset;\n\n  if (calculatedValues.domain.x && calculatedValues.domain.y) {\n    offset = modifiedProps.horizontal ? getHorizontalOffset(modifiedProps, calculatedValues) : getOffset(modifiedProps, calculatedValues);\n  } else {\n    offset = getStandaloneOffset(modifiedProps, calculatedValues);\n  }\n\n  return {\n    globalTransform: getTransform(modifiedProps, calculatedValues, offset),\n    gridOffset: getGridOffset(calculatedValues, offset),\n    gridEdge: getGridEdge(modifiedProps, calculatedValues)\n  };\n};\n\nvar getOrientation = function (props) {\n  if (props.orientation) {\n    return props.orientation;\n  }\n\n  var defaultOrientations = {\n    dependent: props.horizontal ? \"bottom\" : \"left\",\n    independent: props.horizontal ? \"left\" : \"bottom\"\n  };\n  return props.dependentAxis ? defaultOrientations.dependent : defaultOrientations.independent;\n}; // eslint-disable-next-line complexity\n\n\nvar getCalculatedValues = function (props) {\n  var defaultStyles = getStyleObject(props);\n  var style = getStyles(props, defaultStyles);\n  var padding = Helpers.getPadding(props);\n  var labelPadding = getLabelPadding(props, style);\n  var stringTicks = Axis.stringTicks(props) ? props.tickValues : undefined;\n  var axis = Axis.getAxis(props);\n  var axisDomain = Axis.getDomain(props);\n  var axisScale = getScale(props);\n  var xAxisDomain = axis === \"x\" ? axisDomain : undefined;\n  var yAxisDomain = axis === \"y\" ? axisDomain : undefined;\n  var xAxisScale = axis === \"x\" ? axisScale : undefined;\n  var yAxisScale = axis === \"y\" ? axisScale : undefined;\n  var crossAxis = !(props.crossAxis === false || props.standalone === true);\n  var ticks = Axis.getTicks(props, axisScale, crossAxis);\n  var tickFormat = Axis.getTickFormat(props, axisScale);\n  var range = {\n    x: Helpers.getRange(props, \"x\"),\n    y: Helpers.getRange(props, \"y\")\n  }; // use full domain if passed in from parent,\n  // otherwise use the just the one axis available\n\n  var domain = {\n    x: props.domain && props.domain.x ? props.domain.x : xAxisDomain,\n    y: props.domain && props.domain.y ? props.domain.y : yAxisDomain\n  }; // use full scale if passed in from parent,\n  // otherwise use the just the one axis available\n\n  var scale = {\n    x: props.domain && props.domain.x ? Scale.getBaseScale(props, \"x\").domain(props.domain.x).range(props.horizontal ? range.y : range.x) : xAxisScale,\n    y: props.domain && props.domain.y ? Scale.getBaseScale(props, \"y\").domain(props.domain.y).range(props.horizontal ? range.x : range.y) : yAxisScale\n  };\n  var origin = domain.x && domain.y ? Axis.getOrigin(domain) : undefined;\n  var originSign = origin ? {\n    x: Axis.getOriginSign(origin.x, domain.x),\n    y: Axis.getOriginSign(origin.y, domain.y)\n  } : undefined;\n  var orientations = originSign ? {\n    x: getDefaultOrientations(\"x\", originSign.y, props.horizontal),\n    y: getDefaultOrientations(\"y\", originSign.x, props.horizontal)\n  } : undefined;\n  var orientation = orientations ? props.orientation || orientations[axis] : getOrientation(props);\n  var isVertical = Axis.isVertical(Object.assign({}, props, {\n    orientation: orientation\n  }));\n  var anchors = getAnchors(orientation, isVertical);\n  return {\n    anchors: anchors,\n    axis: axis,\n    crossAxis: crossAxis,\n    domain: domain,\n    isVertical: isVertical,\n    labelPadding: labelPadding,\n    orientation: orientation,\n    orientations: orientations,\n    origin: origin,\n    padding: padding,\n    scale: scale,\n    stringTicks: stringTicks,\n    style: style,\n    tickFormat: tickFormat,\n    ticks: ticks\n  };\n};\n\nexport var getBaseProps = function (props, fallbackProps) {\n  props = Axis.modifyProps(props, fallbackProps);\n  var calculatedValues = getCalculatedValues(props);\n  var axis = calculatedValues.axis,\n      style = calculatedValues.style,\n      orientation = calculatedValues.orientation,\n      isVertical = calculatedValues.isVertical,\n      scale = calculatedValues.scale,\n      ticks = calculatedValues.ticks,\n      tickFormat = calculatedValues.tickFormat,\n      anchors = calculatedValues.anchors,\n      domain = calculatedValues.domain,\n      stringTicks = calculatedValues.stringTicks;\n  var otherAxis = axis === \"x\" ? \"y\" : \"x\";\n  var _props = props,\n      width = _props.width,\n      height = _props.height,\n      standalone = _props.standalone,\n      theme = _props.theme,\n      polar = _props.polar,\n      padding = _props.padding,\n      horizontal = _props.horizontal;\n\n  var _getLayoutProps = getLayoutProps(props, calculatedValues),\n      globalTransform = _getLayoutProps.globalTransform,\n      gridOffset = _getLayoutProps.gridOffset,\n      gridEdge = _getLayoutProps.gridEdge;\n\n  var sharedProps = {\n    scale: _defineProperty({}, axis, scale[axis]),\n    polar: polar,\n    horizontal: horizontal,\n    ticks: ticks,\n    stringTicks: stringTicks\n  };\n  var axisProps = getAxisProps(props, calculatedValues, globalTransform);\n  var axisLabelProps = getAxisLabelProps(props, calculatedValues, globalTransform);\n  var initialChildProps = {\n    parent: _assign({\n      style: style.parent,\n      ticks: ticks,\n      standalone: standalone,\n      theme: theme,\n      width: width,\n      height: height,\n      padding: padding,\n      domain: domain\n    }, sharedProps)\n  };\n  var gridProps = {\n    dimension: otherAxis,\n    range: _defineProperty({}, otherAxis, Helpers.getRange(props, otherAxis)),\n    scale: props.scale && props.scale[otherAxis] ? _defineProperty({}, otherAxis, props.scale[otherAxis]) : undefined\n  };\n  return ticks.reduce(function (childProps, tickValue, index) {\n    var _scale$axis, _scale$axis2, _scale$axis3;\n\n    var tick = stringTicks ? stringTicks[index] : tickValue;\n    var text = tickFormat(tickValue, index, ticks);\n    var styles = getEvaluatedStyles(style, _assign({}, sharedProps, {\n      tick: tick,\n      tickValue: tickValue,\n      index: index,\n      text: text\n    }));\n    var tickLayout = {\n      position: getTickPosition(styles, orientation, isVertical),\n      transform: getTickTransform((_scale$axis = scale[axis]) === null || _scale$axis === void 0 ? void 0 : _scale$axis.call(scale, tickValue), globalTransform, isVertical)\n    };\n    var gridLayout = {\n      edge: gridEdge,\n      transform: {\n        x: isVertical ? -gridOffset.x + globalTransform.x : ((_scale$axis2 = scale[axis]) === null || _scale$axis2 === void 0 ? void 0 : _scale$axis2.call(scale, tickValue)) + globalTransform.x,\n        y: isVertical ? ((_scale$axis3 = scale[axis]) === null || _scale$axis3 === void 0 ? void 0 : _scale$axis3.call(scale, tickValue)) + globalTransform.y : gridOffset.y + globalTransform.y\n      }\n    };\n    childProps[index] = {\n      axis: _assign({\n        dimension: axis\n      }, sharedProps, axisProps),\n      axisLabel: _assign({}, sharedProps, axisLabelProps),\n      ticks: _assign({}, sharedProps, getTickProps(tickLayout, styles.tickStyle, tickValue)),\n      tickLabels: _assign({}, sharedProps, getTickLabelProps(tickLayout, styles.labelStyle, anchors, tickValue, text)),\n      grid: _assign({}, sharedProps, gridProps, getGridProps(gridLayout, styles.gridStyle, tickValue))\n    };\n    return childProps;\n  }, initialChildProps);\n};", "import _isEmpty from \"lodash/isEmpty\";\nimport _assign from \"lodash/assign\";\nimport _defaults from \"lodash/defaults\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport PropTypes from \"prop-types\";\nimport React from \"react\";\nimport { Background, CommonProps, Helpers, Hooks, PropTypes as CustomPropTypes, UserProps, VictoryContainer, VictoryTheme, Wrapper } from \"victory-core\";\nimport { VictorySharedEvents } from \"victory-shared-events\";\nimport { VictoryAxis } from \"victory-axis\";\nimport { VictoryPolarAxis } from \"victory-polar-axis\";\nimport { getBackgroundWithProps, getChildComponents, getCalculatedProps, getChildren } from \"./helper-methods\";\nimport isEqual from \"react-fast-compare\";\nvar fallbackProps = {\n  width: 450,\n  height: 300,\n  padding: 50\n};\n\nvar VictoryChartImpl = function (initialProps) {\n  var role = \"chart\";\n\n  var _Hooks$useAnimationSt = Hooks.useAnimationState(),\n      getAnimationProps = _Hooks$useAnimationSt.getAnimationProps,\n      setAnimationState = _Hooks$useAnimationSt.setAnimationState,\n      getProps = _Hooks$useAnimationSt.getProps;\n\n  var props = getProps(initialProps);\n  var modifiedProps = Helpers.modifyProps(props, fallbackProps, role);\n  var desc = modifiedProps.desc,\n      eventKey = modifiedProps.eventKey,\n      containerComponent = modifiedProps.containerComponent,\n      standalone = modifiedProps.standalone,\n      groupComponent = modifiedProps.groupComponent,\n      externalEventMutations = modifiedProps.externalEventMutations,\n      width = modifiedProps.width,\n      height = modifiedProps.height,\n      theme = modifiedProps.theme,\n      polar = modifiedProps.polar,\n      name = modifiedProps.name,\n      title = modifiedProps.title;\n  var axes = props.polar ? modifiedProps.defaultPolarAxes : modifiedProps.defaultAxes;\n  var childComponents = React.useMemo(function () {\n    return getChildComponents(modifiedProps, axes);\n  }, [modifiedProps, axes]);\n  var calculatedProps = React.useMemo(function () {\n    return getCalculatedProps(modifiedProps, childComponents);\n  }, [modifiedProps, childComponents]);\n  var domain = calculatedProps.domain,\n      scale = calculatedProps.scale,\n      style = calculatedProps.style,\n      origin = calculatedProps.origin,\n      horizontal = calculatedProps.horizontal;\n  var newChildren = React.useMemo(function () {\n    var children = getChildren(props, childComponents, calculatedProps);\n    var mappedChildren = children.map(function (child, index) {\n      var childProps = _assign({\n        animate: getAnimationProps(props, child, index)\n      }, child.props);\n\n      return /*#__PURE__*/React.cloneElement(child, childProps);\n    });\n\n    if (props.style && props.style.background) {\n      var backgroundComponent = getBackgroundWithProps(props, calculatedProps);\n      mappedChildren.unshift(backgroundComponent);\n    }\n\n    return mappedChildren;\n  }, [getAnimationProps, childComponents, props, calculatedProps]);\n  var containerProps = React.useMemo(function () {\n    if (standalone) {\n      return {\n        desc: desc,\n        domain: domain,\n        width: width,\n        height: height,\n        horizontal: horizontal,\n        name: name,\n        origin: polar ? origin : undefined,\n        polar: polar,\n        theme: theme,\n        title: title,\n        scale: scale,\n        standalone: standalone,\n        style: style.parent\n      };\n    }\n\n    return {};\n  }, [desc, domain, height, horizontal, name, origin, polar, scale, standalone, style, title, theme, width]);\n  var container = React.useMemo(function () {\n    if (standalone) {\n      var defaultContainerProps = _defaults({}, containerComponent.props, containerProps, UserProps.getSafeUserProps(initialProps));\n\n      return /*#__PURE__*/React.cloneElement(containerComponent, defaultContainerProps);\n    }\n\n    return groupComponent;\n  }, [groupComponent, standalone, containerComponent, containerProps, initialProps]);\n  var events = React.useMemo(function () {\n    return Wrapper.getAllEvents(props);\n  }, [props]);\n  var previousProps = Hooks.usePreviousProps(initialProps);\n  React.useEffect(function () {\n    // This is called before dismount to keep state in sync\n    return function () {\n      if (initialProps.animate) {\n        setAnimationState(previousProps, initialProps);\n      }\n    };\n  }, [setAnimationState, previousProps, initialProps]);\n\n  if (!_isEmpty(events)) {\n    return /*#__PURE__*/React.createElement(VictorySharedEvents, {\n      container: container,\n      eventKey: eventKey,\n      events: events,\n      externalEventMutations: externalEventMutations\n    }, newChildren);\n  }\n\n  return /*#__PURE__*/React.cloneElement(container, container.props, newChildren);\n};\n\nVictoryChartImpl.propTypes = _objectSpread(_objectSpread({}, CommonProps.baseProps), {}, {\n  backgroundComponent: PropTypes.element,\n  children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n  defaultAxes: PropTypes.shape({\n    independent: PropTypes.element,\n    dependent: PropTypes.element\n  }),\n  defaultPolarAxes: PropTypes.shape({\n    independent: PropTypes.element,\n    dependent: PropTypes.element\n  }),\n  endAngle: PropTypes.number,\n  innerRadius: CustomPropTypes.nonNegative,\n  prependDefaultAxes: PropTypes.bool,\n  startAngle: PropTypes.number\n});\nVictoryChartImpl.defaultProps = {\n  backgroundComponent: /*#__PURE__*/React.createElement(Background, null),\n  containerComponent: /*#__PURE__*/React.createElement(VictoryContainer, null),\n  defaultAxes: {\n    independent: /*#__PURE__*/React.createElement(VictoryAxis, null),\n    dependent: /*#__PURE__*/React.createElement(VictoryAxis, {\n      dependentAxis: true\n    })\n  },\n  defaultPolarAxes: {\n    independent: /*#__PURE__*/React.createElement(VictoryPolarAxis, null),\n    dependent: /*#__PURE__*/React.createElement(VictoryPolarAxis, {\n      dependentAxis: true\n    })\n  },\n  groupComponent: /*#__PURE__*/React.createElement(\"g\", null),\n  standalone: true,\n  theme: VictoryTheme.grayscale\n};\nexport var VictoryChart = /*#__PURE__*/React.memo(VictoryChartImpl, isEqual);\nVictoryChart.displayName = \"VictoryChart\"; // @ts-expect-error FIXME: Does this \"expectedComponents\" do anything?\n\nVictoryChart.expectedComponents = [\"groupComponent\", \"containerComponent\"];", "import _difference from \"lodash/difference\";\nimport _keys from \"lodash/keys\";\nimport _fromPairs from \"lodash/fromPairs\";\nimport _isEmpty from \"lodash/isEmpty\";\nimport _defaults from \"lodash/defaults\";\nimport _isFunction from \"lodash/isFunction\";\nimport _assign from \"lodash/assign\";\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (typeof call === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { PropTypes as CustomPropTypes, Events, Helpers, TimerContext } from \"victory-core\";\nimport isEqual from \"react-fast-compare\";\nimport stringify from \"json-stringify-safe\"; // DISCLAIMER:\n// This file is not currently tested, and it is first on the list of files\n// to refactor in our current refactoring effort. Please do not make changes\n// to this file without manual testing and/or refactoring and adding tests.\n\nvar VictorySharedEvents = /*#__PURE__*/function (_React$Component) {\n  _inherits(VictorySharedEvents, _React$Component);\n\n  var _super = _createSuper(VictorySharedEvents);\n\n  function VictorySharedEvents(props) {\n    var _this;\n\n    _classCallCheck(this, VictorySharedEvents);\n\n    _this = _super.call(this, props);\n    _this.state = _this.state || {};\n    _this.getScopedEvents = Events.getScopedEvents.bind(_assertThisInitialized(_this));\n    _this.getEventState = Events.getEventState.bind(_assertThisInitialized(_this));\n    _this.baseProps = _this.getBaseProps(props);\n    _this.sharedEventsCache = {};\n    _this.globalEvents = {};\n    _this.prevGlobalEventKeys = [];\n    _this.boundGlobalEvents = {};\n    return _this;\n  }\n\n  _createClass(VictorySharedEvents, [{\n    key: \"shouldComponentUpdate\",\n    value: function shouldComponentUpdate(nextProps) {\n      if (!isEqual(this.props, nextProps)) {\n        this.baseProps = this.getBaseProps(nextProps);\n        var externalMutations = this.getExternalMutations(nextProps, this.baseProps);\n        this.applyExternalMutations(nextProps, externalMutations);\n      }\n\n      return true;\n    }\n  }, {\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      var _this2 = this;\n\n      var globalEventKeys = _keys(this.globalEvents);\n\n      globalEventKeys.forEach(function (key) {\n        return _this2.addGlobalListener(key);\n      });\n      this.prevGlobalEventKeys = globalEventKeys;\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate() {\n      var _this3 = this;\n\n      var globalEventKeys = _keys(this.globalEvents);\n\n      var removedGlobalEventKeys = _difference(this.prevGlobalEventKeys, globalEventKeys);\n\n      removedGlobalEventKeys.forEach(function (key) {\n        return _this3.removeGlobalListener(key);\n      });\n\n      var addedGlobalEventKeys = _difference(globalEventKeys, this.prevGlobalEventKeys);\n\n      addedGlobalEventKeys.forEach(function (key) {\n        return _this3.addGlobalListener(key);\n      });\n      this.prevGlobalEventKeys = globalEventKeys;\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      var _this4 = this;\n\n      this.prevGlobalEventKeys.forEach(function (key) {\n        return _this4.removeGlobalListener(key);\n      });\n    }\n  }, {\n    key: \"addGlobalListener\",\n    value: function addGlobalListener(key) {\n      var _this5 = this;\n\n      var boundListener = function (event) {\n        var listener = _this5.globalEvents[key];\n        return listener && listener(Events.emulateReactEvent(event));\n      };\n\n      this.boundGlobalEvents[key] = boundListener;\n      window.addEventListener(Events.getGlobalEventNameFromKey(key), boundListener);\n    }\n  }, {\n    key: \"removeGlobalListener\",\n    value: function removeGlobalListener(key) {\n      window.removeEventListener(Events.getGlobalEventNameFromKey(key), this.boundGlobalEvents[key]);\n    }\n  }, {\n    key: \"getAllEvents\",\n    value: function getAllEvents(props) {\n      var components = [\"container\", \"groupComponent\"];\n      var componentEvents = Events.getComponentEvents(props, components);\n\n      if (Array.isArray(componentEvents)) {\n        return Array.isArray(props.events) ? componentEvents.concat.apply(componentEvents, _toConsumableArray(props.events)) : componentEvents;\n      }\n\n      return props.events;\n    }\n  }, {\n    key: \"applyExternalMutations\",\n    value: function applyExternalMutations(props, externalMutations) {\n      if (!_isEmpty(externalMutations)) {\n        var callbacks = props.externalEventMutations.reduce(function (memo, mutation) {\n          memo = _isFunction(mutation.callback) ? memo.concat(mutation.callback) : memo;\n          return memo;\n        }, []);\n        var compiledCallbacks = callbacks.length ? function () {\n          callbacks.forEach(function (c) {\n            return c();\n          });\n        } : undefined;\n        this.setState(externalMutations, compiledCallbacks);\n      }\n    }\n  }, {\n    key: \"getExternalMutations\",\n    value: function getExternalMutations(props, baseProps) {\n      return !_isEmpty(props.externalEventMutations) ? Events.getExternalMutationsWithChildren(props.externalEventMutations, baseProps, this.state, _keys(baseProps)) : undefined;\n    }\n  }, {\n    key: \"cacheSharedEvents\",\n    value: function cacheSharedEvents(name, sharedEvents, cacheValues) {\n      this.sharedEventsCache[name] = [sharedEvents, cacheValues];\n    }\n  }, {\n    key: \"getCachedSharedEvents\",\n    value: function getCachedSharedEvents(name, cacheValues) {\n      var _ref = this.sharedEventsCache[name] || [],\n          _ref2 = _slicedToArray(_ref, 2),\n          sharedEvents = _ref2[0],\n          prevCacheValues = _ref2[1];\n\n      if (sharedEvents && isEqual(cacheValues, prevCacheValues)) {\n        return sharedEvents;\n      }\n\n      return undefined;\n    }\n  }, {\n    key: \"getBaseProps\",\n    value: function getBaseProps(props) {\n      var container = props.container;\n      var children = React.Children.toArray(this.props.children);\n      var childBaseProps = this.getBasePropsFromChildren(children);\n      var parentBaseProps = container ? container.props : {};\n      return _assign({}, childBaseProps, {\n        parent: parentBaseProps\n      });\n    }\n  }, {\n    key: \"getBasePropsFromChildren\",\n    value: function getBasePropsFromChildren(childComponents) {\n      var iteratee = function (child, childName) {\n        if (child.type && _isFunction(child.type.getBaseProps)) {\n          var _baseProps = child.props && child.type.getBaseProps(child.props);\n\n          return _baseProps ? [[childName, _baseProps]] : null;\n        }\n\n        return null;\n      };\n\n      var baseProps = Helpers.reduceChildren(childComponents, iteratee);\n      return _fromPairs(baseProps);\n    }\n  }, {\n    key: \"getNewChildren\",\n    value: function getNewChildren(props, baseProps) {\n      var _this6 = this;\n\n      var events = props.events,\n          eventKey = props.eventKey;\n\n      var alterChildren = function (children, childNames) {\n        return children.reduce(function (memo, child, index) {\n          if (child.props.children) {\n            var newChildren = React.Children.toArray(child.props.children);\n            var names = childNames.slice(index, index + newChildren.length);\n            var results = /*#__PURE__*/React.cloneElement(child, child.props, alterChildren(newChildren, names));\n            return memo.concat(results);\n          } else if (childNames[index] !== \"parent\" && child.type && _isFunction(child.type.getBaseProps)) {\n            var name = child.props.name || childNames[index];\n            var childEvents = Array.isArray(events) && events.filter(function (event) {\n              if (event.target === \"parent\") {\n                return false;\n              }\n\n              return Array.isArray(event.childName) ? event.childName.indexOf(name) > -1 : event.childName === name || event.childName === \"all\";\n            });\n            var sharedEventsCacheValues = [name, baseProps, childEvents, stringify(_this6.state[name])];\n            var sharedEvents = _this6.getCachedSharedEvents(name, sharedEventsCacheValues) || {\n              events: childEvents,\n              // partially apply child name and baseProps,\n              getEvents: function (evts, target) {\n                return _this6.getScopedEvents(evts, target, name, baseProps);\n              },\n              // partially apply child name\n              getEventState: function (key, target) {\n                return _this6.getEventState(key, target, name);\n              }\n            };\n\n            _this6.cacheSharedEvents(name, sharedEvents, sharedEventsCacheValues);\n\n            return memo.concat( /*#__PURE__*/React.cloneElement(child, _assign({\n              key: \"events-\".concat(name),\n              sharedEvents: sharedEvents,\n              eventKey: eventKey,\n              name: name\n            }, child.props)));\n          }\n\n          return memo.concat(child);\n        }, []);\n      };\n\n      var childNames = _keys(baseProps);\n\n      var childComponents = React.Children.toArray(props.children);\n      return alterChildren(childComponents, childNames);\n    }\n  }, {\n    key: \"getContainer\",\n    value: function getContainer(props, baseProps, events) {\n      var _this7 = this;\n\n      var children = this.getNewChildren(props, baseProps);\n      var parents = Array.isArray(events) && events.filter(function (event) {\n        return event.target === \"parent\";\n      });\n      var sharedEvents = parents.length > 0 ? {\n        events: parents,\n        // partially apply childName (null) and baseProps,\n        getEvents: function (evts, target) {\n          return _this7.getScopedEvents(evts, target, null, baseProps);\n        },\n        getEventState: this.getEventState\n      } : null;\n      var container = props.container || props.groupComponent;\n      var role = container.type && container.type.role;\n      var containerProps = container.props || {};\n      var boundGetEvents = Events.getEvents.bind(this);\n      var parentEvents = sharedEvents && boundGetEvents({\n        sharedEvents: sharedEvents\n      }, \"parent\");\n\n      var parentProps = _defaults({}, this.getEventState(\"parent\", \"parent\"), containerProps, baseProps.parent, {\n        children: children\n      });\n\n      var containerEvents = _defaults({}, Events.getPartialEvents(parentEvents, \"parent\", parentProps), containerProps.events);\n\n      this.globalEvents = Events.getGlobalEvents(containerEvents);\n      var localEvents = Events.omitGlobalEvents(containerEvents);\n      return role === \"container\" ? /*#__PURE__*/React.cloneElement(container, _assign({}, parentProps, {\n        events: localEvents\n      })) : /*#__PURE__*/React.cloneElement(container, localEvents, children);\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var events = this.getAllEvents(this.props);\n\n      if (events) {\n        return this.getContainer(this.props, this.baseProps, events);\n      }\n\n      return /*#__PURE__*/React.cloneElement(this.props.container, {\n        children: this.props.children\n      });\n    }\n  }]);\n\n  return VictorySharedEvents;\n}(React.Component);\n\nVictorySharedEvents.displayName = \"VictorySharedEvents\";\nVictorySharedEvents.role = \"shared-event-wrapper\";\nVictorySharedEvents.propTypes = {\n  children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n  container: PropTypes.node,\n  eventKey: PropTypes.oneOfType([PropTypes.array, PropTypes.func, CustomPropTypes.allOfType([CustomPropTypes.integer, CustomPropTypes.nonNegative]), PropTypes.string]),\n  events: PropTypes.arrayOf(PropTypes.shape({\n    childName: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),\n    eventHandlers: PropTypes.object,\n    eventKey: PropTypes.oneOfType([PropTypes.array, PropTypes.func, CustomPropTypes.allOfType([CustomPropTypes.integer, CustomPropTypes.nonNegative]), PropTypes.string]),\n    target: PropTypes.string\n  })),\n  externalEventMutations: PropTypes.arrayOf(PropTypes.shape({\n    callback: PropTypes.func,\n    childName: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),\n    eventKey: PropTypes.oneOfType([PropTypes.array, CustomPropTypes.allOfType([CustomPropTypes.integer, CustomPropTypes.nonNegative]), PropTypes.string]),\n    mutation: PropTypes.func,\n    target: PropTypes.oneOfType([PropTypes.string, PropTypes.array])\n  })),\n  groupComponent: PropTypes.node\n};\nVictorySharedEvents.defaultProps = {\n  groupComponent: /*#__PURE__*/React.createElement(\"g\", null)\n};\nVictorySharedEvents.contextType = TimerContext;\nexport { VictorySharedEvents as default };", "import _isEmpty from \"lodash/isEmpty\";\nimport _assign from \"lodash/assign\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (typeof call === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { PropTypes as CustomPropTypes, VictoryLabel, CommonProps, VictoryContainer, VictoryTheme, LineSegment, addEvents, Arc, Axis } from \"victory-core\";\nimport { getScale, getStyles, getBaseProps } from \"./helper-methods\";\nvar fallbackProps = {\n  width: 450,\n  height: 300,\n  padding: 50\n};\nvar options = {\n  components: [{\n    name: \"axis\",\n    index: 0\n  }, {\n    name: \"axisLabel\",\n    index: 0\n  }, {\n    name: \"grid\"\n  }, {\n    name: \"parent\",\n    index: \"parent\"\n  }, {\n    name: \"ticks\"\n  }, {\n    name: \"tickLabels\"\n  }]\n};\n\nvar VictoryPolarAxis = /*#__PURE__*/function (_React$Component) {\n  _inherits(VictoryPolarAxis, _React$Component);\n\n  var _super = _createSuper(VictoryPolarAxis);\n\n  function VictoryPolarAxis() {\n    _classCallCheck(this, VictoryPolarAxis);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(VictoryPolarAxis, [{\n    key: \"renderAxisLine\",\n    value: function renderAxisLine(props) {\n      var dependentAxis = props.dependentAxis;\n      var axisComponent = dependentAxis ? props.axisComponent : props.circularAxisComponent;\n      var axisProps = this.getComponentProps(axisComponent, \"axis\", 0);\n      return /*#__PURE__*/React.cloneElement(axisComponent, axisProps);\n    }\n  }, {\n    key: \"renderLabel\",\n    value: function renderLabel(props) {\n      var axisLabelComponent = props.axisLabelComponent,\n          dependentAxis = props.dependentAxis,\n          label = props.label;\n\n      if (!label || !dependentAxis) {\n        return null;\n      }\n\n      var axisLabelProps = this.getComponentProps(axisLabelComponent, \"axisLabel\", 0);\n      return /*#__PURE__*/React.cloneElement(axisLabelComponent, axisLabelProps);\n    }\n  }, {\n    key: \"renderAxis\",\n    value: function renderAxis(props) {\n      var _this = this;\n\n      var tickComponent = props.tickComponent,\n          tickLabelComponent = props.tickLabelComponent,\n          name = props.name;\n\n      var shouldRender = function (componentProps) {\n        var _componentProps$style = componentProps.style,\n            style = _componentProps$style === void 0 ? {} : _componentProps$style,\n            _componentProps$event = componentProps.events,\n            events = _componentProps$event === void 0 ? {} : _componentProps$event;\n        var visible = style.stroke !== \"transparent\" && style.stroke !== \"none\" && style.strokeWidth !== 0;\n        return visible || !_isEmpty(events);\n      };\n\n      var axisType = props.dependentAxis ? \"radial\" : \"angular\";\n      var gridComponent = axisType === \"radial\" ? props.circularGridComponent : props.gridComponent;\n      var tickComponents = this.dataKeys.map(function (key, index) {\n        var tickProps = _assign({\n          key: \"\".concat(name, \"-tick-\").concat(key)\n        }, _this.getComponentProps(tickComponent, \"ticks\", index));\n\n        var TickComponent = /*#__PURE__*/React.cloneElement(tickComponent, tickProps);\n        return shouldRender(TickComponent.props) ? TickComponent : undefined;\n      }).filter(Boolean);\n      var gridComponents = this.dataKeys.map(function (key, index) {\n        var gridProps = _assign({\n          key: \"\".concat(name, \"-grid-\").concat(key)\n        }, _this.getComponentProps(gridComponent, \"grid\", index));\n\n        var GridComponent = /*#__PURE__*/React.cloneElement(gridComponent, gridProps);\n        return shouldRender(GridComponent.props) ? GridComponent : undefined;\n      }).filter(Boolean);\n      var tickLabelComponents = this.dataKeys.map(function (key, index) {\n        var tickLabelProps = _assign({\n          key: \"\".concat(name, \"-tick-\").concat(key)\n        }, _this.getComponentProps(tickLabelComponent, \"tickLabels\", index));\n\n        return /*#__PURE__*/React.cloneElement(tickLabelComponent, tickLabelProps);\n      });\n      var axis = this.renderAxisLine(props);\n      var axisLabel = this.renderLabel(props);\n      var children = [axis, axisLabel].concat(_toConsumableArray(tickComponents), _toConsumableArray(gridComponents), _toConsumableArray(tickLabelComponents));\n      return this.renderGroup(props, children);\n    } // Overridden in victory-native\n\n  }, {\n    key: \"renderGroup\",\n    value: function renderGroup(props, children) {\n      var groupComponent = props.groupComponent;\n      return /*#__PURE__*/React.cloneElement(groupComponent, {}, children);\n    }\n  }, {\n    key: \"shouldAnimate\",\n    value: function shouldAnimate() {\n      return !!this.props.animate;\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var animationWhitelist = VictoryPolarAxis.animationWhitelist;\n      var props = Axis.modifyProps(this.props, fallbackProps);\n\n      if (this.shouldAnimate()) {\n        return this.animateComponent(props, animationWhitelist);\n      }\n\n      var children = this.renderAxis(props);\n      return props.standalone ? this.renderContainer(props.containerComponent, children) : children;\n    }\n  }]);\n\n  return VictoryPolarAxis;\n}(React.Component);\n\nVictoryPolarAxis.animationWhitelist = [\"style\", \"domain\", \"range\", \"tickCount\", \"tickValues\", \"padding\", \"width\", \"height\"];\nVictoryPolarAxis.displayName = \"VictoryAxis\";\nVictoryPolarAxis.role = \"axis\";\nVictoryPolarAxis.defaultTransitions = {\n  onExit: {\n    duration: 500\n  },\n  onEnter: {\n    duration: 500\n  }\n};\nVictoryPolarAxis.propTypes = _objectSpread(_objectSpread({}, CommonProps.baseProps), {}, {\n  axisAngle: PropTypes.number,\n  axisComponent: PropTypes.element,\n  axisLabelComponent: PropTypes.element,\n  axisValue: PropTypes.oneOfType([PropTypes.number, PropTypes.string, PropTypes.object]),\n  categories: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.string), PropTypes.shape({\n    x: PropTypes.arrayOf(PropTypes.string),\n    y: PropTypes.arrayOf(PropTypes.string)\n  })]),\n  circularAxisComponent: PropTypes.element,\n  circularGridComponent: PropTypes.element,\n  containerComponent: PropTypes.element,\n  dependentAxis: PropTypes.bool,\n  disableInlineStyles: PropTypes.bool,\n  endAngle: PropTypes.number,\n  events: PropTypes.arrayOf(PropTypes.shape({\n    target: PropTypes.oneOf([\"axis\", \"axisLabel\", \"grid\", \"ticks\", \"tickLabels\"]),\n    eventKey: PropTypes.oneOfType([PropTypes.array, CustomPropTypes.allOfType([CustomPropTypes.integer, CustomPropTypes.nonNegative]), PropTypes.string]),\n    eventHandlers: PropTypes.object\n  })),\n  gridComponent: PropTypes.element,\n  innerRadius: CustomPropTypes.nonNegative,\n  labelPlacement: PropTypes.oneOf([\"parallel\", \"perpendicular\", \"vertical\"]),\n  startAngle: PropTypes.number,\n  stringMap: PropTypes.object,\n  style: PropTypes.shape({\n    parent: PropTypes.object,\n    axis: PropTypes.object,\n    axisLabel: PropTypes.object,\n    grid: PropTypes.object,\n    ticks: PropTypes.object,\n    tickLabels: PropTypes.object\n  }),\n  tickComponent: PropTypes.element,\n  tickCount: CustomPropTypes.allOfType([CustomPropTypes.integer, CustomPropTypes.greaterThanZero]),\n  tickFormat: PropTypes.oneOfType([PropTypes.func, CustomPropTypes.homogeneousArray]),\n  tickLabelComponent: PropTypes.element,\n  tickValues: CustomPropTypes.homogeneousArray\n});\nVictoryPolarAxis.defaultProps = {\n  axisComponent: /*#__PURE__*/React.createElement(LineSegment, null),\n  axisLabelComponent: /*#__PURE__*/React.createElement(VictoryLabel, null),\n  circularAxisComponent: /*#__PURE__*/React.createElement(Arc, null),\n  circularGridComponent: /*#__PURE__*/React.createElement(Arc, null),\n  containerComponent: /*#__PURE__*/React.createElement(VictoryContainer, null),\n  endAngle: 360,\n  gridComponent: /*#__PURE__*/React.createElement(LineSegment, null),\n  groupComponent: /*#__PURE__*/React.createElement(\"g\", {\n    role: \"presentation\"\n  }),\n  labelPlacement: \"parallel\",\n  startAngle: 0,\n  standalone: true,\n  theme: VictoryTheme.grayscale,\n  tickComponent: /*#__PURE__*/React.createElement(LineSegment, null),\n  tickLabelComponent: /*#__PURE__*/React.createElement(VictoryLabel, null)\n};\nVictoryPolarAxis.getDomain = Axis.getDomain;\nVictoryPolarAxis.getAxis = Axis.getAxis;\nVictoryPolarAxis.getScale = getScale;\n\nVictoryPolarAxis.getStyles = function (props) {\n  return getStyles(props, fallbackProps.style);\n};\n\nVictoryPolarAxis.getBaseProps = function (props) {\n  return getBaseProps(props, fallbackProps);\n};\n\nVictoryPolarAxis.expectedComponents = [\"axisComponent\", \"circularAxisComponent\", \"groupComponent\", \"containerComponent\", \"tickComponent\", \"tickLabelComponent\", \"gridComponent\", \"circularGridComponent\"];\nexport default addEvents(VictoryPolarAxis, options);", "import _defaults from \"lodash/defaults\";\nimport _uniqBy from \"lodash/uniqBy\";\nimport _assign from \"lodash/assign\";\nimport { Helpers, LabelHelpers, Scale, Axis } from \"victory-core\";\n\nvar getPosition = function (r, angle, axis) {\n  return axis === \"x\" ? r * Math.cos(angle) : -r * Math.sin(angle);\n};\n\nvar getAxisType = function (props) {\n  var typicalType = props.dependentAxis ? \"radial\" : \"angular\";\n  var invertedType = typicalType === \"angular\" ? \"radial\" : \"angular\";\n  return props.horizontal ? invertedType : typicalType;\n};\n\nvar filterTicks = function (ticks, scale) {\n  var compareTicks = function (t) {\n    return scale(t) % (2 * Math.PI);\n  };\n\n  return _uniqBy(ticks, compareTicks);\n};\n\nvar getEvaluatedStyles = function (style, props) {\n  return {\n    tickStyle: Helpers.evaluateStyle(style.ticks, props),\n    labelStyle: Helpers.evaluateStyle(style.tickLabels, props),\n    gridStyle: Helpers.evaluateStyle(style.grid, props)\n  };\n};\n\nvar getStyleObject = function (props) {\n  var _props$theme = props.theme,\n      theme = _props$theme === void 0 ? {} : _props$theme,\n      dependentAxis = props.dependentAxis;\n  var generalAxisStyle = theme.polarAxis && theme.polarAxis.style || theme.axis && theme.axis.style;\n  var polarAxisType = dependentAxis ? \"polarDependentAxis\" : \"polarIndependentAxis\";\n  var standardAxisType = dependentAxis ? \"dependentAxis\" : \"independentAxis\";\n  var specificAxisStyle = theme[polarAxisType] && theme[polarAxisType].style || theme[standardAxisType] && theme[standardAxisType].style;\n\n  var mergeStyles = function () {\n    var styleNamespaces = [\"axis\", \"axisLabel\", \"grid\", \"parent\", \"tickLabels\", \"ticks\"];\n    return styleNamespaces.reduce(function (memo, curr) {\n      memo[curr] = _defaults({}, specificAxisStyle[curr], generalAxisStyle[curr]);\n      return memo;\n    }, {});\n  };\n\n  return generalAxisStyle && specificAxisStyle ? mergeStyles() : specificAxisStyle || generalAxisStyle;\n};\n\nvar getRadius = function (props) {\n  var _Helpers$getPadding = Helpers.getPadding(props),\n      left = _Helpers$getPadding.left,\n      right = _Helpers$getPadding.right,\n      top = _Helpers$getPadding.top,\n      bottom = _Helpers$getPadding.bottom;\n\n  var width = props.width,\n      height = props.height;\n  return Math.min(width - left - right, height - top - bottom) / 2;\n};\n\nvar getRange = function (props, axis) {\n  // Return the range from props if one is given.\n  if (props.range && props.range[axis]) {\n    return props.range[axis];\n  } else if (props.range && Array.isArray(props.range)) {\n    return props.range;\n  }\n\n  var axisType = getAxisType(props);\n\n  if (axisType === \"angular\") {\n    var startAngle = Helpers.degreesToRadians(props.startAngle);\n    var endAngle = Helpers.degreesToRadians(props.endAngle);\n    return [startAngle, endAngle];\n  }\n\n  var radius = getRadius(props);\n  return [props.innerRadius || 0, radius];\n}; // exposed for use by VictoryChart (necessary?)\n\n\nexport var getScale = function (props) {\n  var axis = Axis.getAxis(props);\n  var scale = Scale.getBaseScale(props, axis);\n  var domain = Axis.getDomain(props, axis) || scale.domain();\n  var range = getRange(props, axis);\n  scale.range(range);\n  scale.domain(domain);\n  return scale;\n};\nexport var getStyles = function (props, styleObject) {\n  if (props.disableInlineStyles) {\n    return {};\n  }\n\n  var style = props.style || {};\n  styleObject = styleObject || {};\n  var parentStyleProps = {\n    height: \"auto\",\n    width: \"100%\"\n  };\n  return {\n    parent: _defaults(parentStyleProps, style.parent, styleObject.parent),\n    axis: _defaults({}, style.axis, styleObject.axis),\n    axisLabel: _defaults({}, style.axisLabel, styleObject.axisLabel),\n    grid: _defaults({}, style.grid, styleObject.grid),\n    ticks: _defaults({}, style.ticks, styleObject.ticks),\n    tickLabels: _defaults({}, style.tickLabels, styleObject.tickLabels)\n  };\n};\n\nvar getAxisAngle = function (props) {\n  var axisAngle = props.axisAngle,\n      startAngle = props.startAngle,\n      dependentAxis = props.dependentAxis;\n  var axis = Axis.getAxis(props);\n  var axisValue = Axis.getAxisValue(props, axis);\n\n  if (axisValue === undefined || !dependentAxis) {\n    return axisAngle === undefined ? startAngle : axisAngle;\n  }\n\n  return Helpers.radiansToDegrees(axisValue);\n}; // eslint-disable-next-line max-params\n\n\nvar getTickProps = function (props, calculatedValues, tickValue, index) {\n  var axisType = calculatedValues.axisType,\n      radius = calculatedValues.radius,\n      scale = calculatedValues.scale,\n      style = calculatedValues.style,\n      stringTicks = calculatedValues.stringTicks,\n      ticks = calculatedValues.ticks,\n      tickFormat = calculatedValues.tickFormat,\n      origin = calculatedValues.origin;\n  var text = tickFormat(tickValue, index, ticks);\n  var tick = stringTicks ? stringTicks[index] : tickValue;\n\n  var _getEvaluatedStyles = getEvaluatedStyles(style, {\n    tick: tick,\n    tickValue: tickValue,\n    index: index,\n    ticks: ticks,\n    stringTicks: stringTicks,\n    radius: radius,\n    scale: scale,\n    axisType: axisType,\n    text: text\n  }),\n      tickStyle = _getEvaluatedStyles.tickStyle;\n\n  var axisAngle = axisType === \"radial\" ? getAxisAngle(props, scale) : undefined;\n  var tickPadding = tickStyle.padding || tickStyle.size || 0;\n  var padAngle = Helpers.degreesToRadians(90 - axisAngle);\n  var tickAngle = axisType === \"angular\" ? scale(tickValue) : Helpers.degreesToRadians(-1 * axisAngle);\n  var tickRadius = axisType === \"angular\" ? radius : scale(tickValue);\n  return axisType === \"angular\" ? {\n    index: index,\n    datum: tick,\n    style: tickStyle,\n    x1: getPosition(tickRadius, tickAngle, \"x\") + origin.x,\n    y1: getPosition(tickRadius, tickAngle, \"y\") + origin.y,\n    x2: getPosition(tickRadius + tickPadding, tickAngle, \"x\") + origin.x,\n    y2: getPosition(tickRadius + tickPadding, tickAngle, \"y\") + origin.y\n  } : {\n    index: index,\n    datum: tick,\n    style: tickStyle,\n    x1: tickRadius * Math.cos(tickAngle) + Math.cos(padAngle) * tickPadding + origin.x,\n    x2: tickRadius * Math.cos(tickAngle) - Math.cos(padAngle) * tickPadding + origin.x,\n    y1: tickRadius * Math.sin(tickAngle) + Math.sin(padAngle) * tickPadding + origin.y,\n    y2: tickRadius * Math.sin(tickAngle) - Math.sin(padAngle) * tickPadding + origin.y\n  };\n}; // eslint-disable-next-line max-params\n\n\nvar getTickLabelProps = function (props, calculatedValues, tickValue, index) {\n  var axisType = calculatedValues.axisType,\n      radius = calculatedValues.radius,\n      tickFormat = calculatedValues.tickFormat,\n      style = calculatedValues.style,\n      scale = calculatedValues.scale,\n      ticks = calculatedValues.ticks,\n      stringTicks = calculatedValues.stringTicks,\n      origin = calculatedValues.origin;\n  var text = tickFormat(tickValue, index, ticks);\n  var tick = stringTicks ? stringTicks[index] : tickValue;\n\n  var _getEvaluatedStyles2 = getEvaluatedStyles(style, {\n    text: text,\n    tick: tick,\n    tickValue: tickValue,\n    index: index,\n    ticks: ticks,\n    stringTicks: stringTicks,\n    radius: radius,\n    scale: scale,\n    axisType: axisType\n  }),\n      labelStyle = _getEvaluatedStyles2.labelStyle;\n\n  var tickLabelComponent = props.tickLabelComponent;\n  var labelPlacement = tickLabelComponent.props && tickLabelComponent.props.labelPlacement ? tickLabelComponent.props.labelPlacement : props.labelPlacement;\n  var tickPadding = labelStyle.padding || 0;\n  var angularPadding = 0; // TODO: do some geometry\n\n  var axisAngle = axisType === \"radial\" ? getAxisAngle(props, scale) : undefined;\n  var labelAngle = axisType === \"angular\" ? Helpers.radiansToDegrees(scale(tickValue)) : axisAngle + angularPadding;\n  var textAngle = labelStyle.angle === undefined ? LabelHelpers.getPolarAngle(_assign({}, props, {\n    labelPlacement: labelPlacement\n  }), labelAngle) : labelStyle.angle;\n  var labelRadius = axisType === \"angular\" ? radius + tickPadding : scale(tickValue);\n  var textAnchor = labelStyle.textAnchor || LabelHelpers.getPolarTextAnchor(_assign({}, props, {\n    labelPlacement: labelPlacement\n  }), labelAngle);\n  return {\n    index: index,\n    datum: tick,\n    style: labelStyle,\n    angle: textAngle,\n    textAnchor: textAnchor,\n    text: text,\n    x: labelRadius * Math.cos(Helpers.degreesToRadians(labelAngle)) + origin.x,\n    y: -labelRadius * Math.sin(Helpers.degreesToRadians(labelAngle)) + origin.y\n  };\n}; // eslint-disable-next-line max-params\n\n\nvar getGridProps = function (props, calculatedValues, tickValue, index) {\n  var axisType = calculatedValues.axisType,\n      radius = calculatedValues.radius,\n      style = calculatedValues.style,\n      scale = calculatedValues.scale,\n      stringTicks = calculatedValues.stringTicks,\n      ticks = calculatedValues.ticks,\n      tickFormat = calculatedValues.tickFormat,\n      origin = calculatedValues.origin;\n  var text = tickFormat(tickValue, index, ticks);\n  var startAngle = props.startAngle,\n      endAngle = props.endAngle,\n      _props$innerRadius = props.innerRadius,\n      innerRadius = _props$innerRadius === void 0 ? 0 : _props$innerRadius;\n  var tick = stringTicks ? stringTicks[index] : tickValue;\n\n  var _getEvaluatedStyles3 = getEvaluatedStyles(style, {\n    tick: tick,\n    tickValue: tickValue,\n    index: index,\n    ticks: ticks,\n    stringTicks: stringTicks,\n    radius: radius,\n    scale: scale,\n    axisType: axisType,\n    text: text\n  }),\n      gridStyle = _getEvaluatedStyles3.gridStyle;\n\n  var angle = scale(tickValue);\n  return axisType === \"angular\" ? {\n    index: index,\n    datum: tick,\n    style: gridStyle,\n    x1: getPosition(radius, angle, \"x\") + origin.x,\n    y1: getPosition(radius, angle, \"y\") + origin.y,\n    x2: getPosition(innerRadius, angle, \"x\") + origin.x,\n    y2: getPosition(innerRadius, angle, \"y\") + origin.y\n  } : {\n    style: gridStyle,\n    index: index,\n    datum: tick,\n    cx: origin.x,\n    cy: origin.y,\n    r: scale(tickValue),\n    startAngle: startAngle,\n    endAngle: endAngle\n  };\n};\n\nvar getAxisLabelProps = function (props, calculatedValues) {\n  var axisType = calculatedValues.axisType,\n      radius = calculatedValues.radius,\n      style = calculatedValues.style,\n      scale = calculatedValues.scale,\n      origin = calculatedValues.origin;\n  var axisLabelComponent = props.axisLabelComponent;\n\n  if (axisType !== \"radial\") {\n    return {};\n  }\n\n  var labelPlacement = axisLabelComponent.props && axisLabelComponent.props.labelPlacement ? axisLabelComponent.props.labelPlacement : props.labelPlacement;\n  var labelStyle = style && style.axisLabel || {};\n  var axisAngle = axisType === \"radial\" ? getAxisAngle(props, scale) : undefined;\n  var textAngle = labelStyle.angle === undefined ? LabelHelpers.getPolarAngle(_assign({}, props, {\n    labelPlacement: labelPlacement\n  }), axisAngle) : labelStyle.angle;\n  var labelRadius = radius + (labelStyle.padding || 0);\n  var textAnchor = labelStyle.textAnchor || LabelHelpers.getPolarTextAnchor(_assign({}, props, {\n    labelPlacement: labelPlacement\n  }), axisAngle);\n  var verticalAnchor = labelStyle.verticalAnchor || LabelHelpers.getPolarVerticalAnchor(_assign({}, props, {\n    labelPlacement: labelPlacement\n  }), axisAngle);\n  return {\n    style: labelStyle,\n    angle: textAngle,\n    textAnchor: textAnchor,\n    verticalAnchor: verticalAnchor,\n    text: props.label,\n    x: getPosition(labelRadius, Helpers.degreesToRadians(axisAngle), \"x\") + origin.x,\n    y: getPosition(labelRadius, Helpers.degreesToRadians(axisAngle), \"y\") + origin.y\n  };\n};\n\nvar getAxisProps = function (modifiedProps, calculatedValues) {\n  var style = calculatedValues.style,\n      axisType = calculatedValues.axisType,\n      radius = calculatedValues.radius,\n      scale = calculatedValues.scale,\n      origin = calculatedValues.origin;\n  var startAngle = modifiedProps.startAngle,\n      endAngle = modifiedProps.endAngle,\n      _modifiedProps$innerR = modifiedProps.innerRadius,\n      innerRadius = _modifiedProps$innerR === void 0 ? 0 : _modifiedProps$innerR;\n  var axisAngle = axisType === \"radial\" ? Helpers.degreesToRadians(getAxisAngle(modifiedProps, scale)) : undefined;\n  return axisType === \"radial\" ? {\n    style: style.axis,\n    x1: getPosition(innerRadius, axisAngle, \"x\") + origin.x,\n    x2: getPosition(radius, axisAngle, \"x\") + origin.x,\n    y1: getPosition(innerRadius, axisAngle, \"y\") + origin.y,\n    y2: getPosition(radius, axisAngle, \"y\") + origin.y\n  } : {\n    style: style.axis,\n    cx: origin.x,\n    cy: origin.y,\n    r: radius,\n    startAngle: startAngle,\n    endAngle: endAngle\n  };\n};\n\nvar getCalculatedValues = function (props) {\n  props = _assign({\n    polar: true\n  }, props);\n  var defaultStyles = getStyleObject(props);\n  var style = getStyles(props, defaultStyles);\n  var padding = Helpers.getPadding(props);\n  var axis = Axis.getAxis(props);\n  var axisType = getAxisType(props);\n  var stringTicks = Axis.stringTicks(props) ? props.tickValues : undefined;\n  var domain = Axis.getDomain(props, axis);\n  var range = getRange(props, axis);\n  var scale = getScale(props);\n  var initialTicks = Axis.getTicks(props, scale);\n  var ticks = axisType === \"angular\" ? filterTicks(initialTicks, scale) : initialTicks;\n  var tickFormat = Axis.getTickFormat(props, scale);\n  var radius = getRadius(props);\n  var origin = Helpers.getPolarOrigin(props);\n  return {\n    axis: axis,\n    style: style,\n    padding: padding,\n    stringTicks: stringTicks,\n    axisType: axisType,\n    scale: scale,\n    ticks: ticks,\n    tickFormat: tickFormat,\n    domain: domain,\n    range: range,\n    radius: radius,\n    origin: origin\n  };\n};\n\nexport var getBaseProps = function (props, fallbackProps) {\n  props = Axis.modifyProps(props, fallbackProps);\n  var calculatedValues = getCalculatedValues(props);\n  var style = calculatedValues.style,\n      scale = calculatedValues.scale,\n      ticks = calculatedValues.ticks,\n      domain = calculatedValues.domain;\n  var _props = props,\n      width = _props.width,\n      height = _props.height,\n      standalone = _props.standalone,\n      theme = _props.theme,\n      name = _props.name;\n  var axisProps = getAxisProps(props, calculatedValues);\n  var axisLabelProps = getAxisLabelProps(props, calculatedValues);\n  var initialChildProps = {\n    parent: {\n      style: style.parent,\n      ticks: ticks,\n      scale: scale,\n      width: width,\n      height: height,\n      domain: domain,\n      standalone: standalone,\n      theme: theme,\n      name: name\n    }\n  };\n  return ticks.reduce(function (childProps, tick, index) {\n    childProps[index] = {\n      axis: axisProps,\n      axisLabel: axisLabelProps,\n      ticks: getTickProps(props, calculatedValues, tick, index),\n      tickLabels: getTickLabelProps(props, calculatedValues, tick, index),\n      grid: getGridProps(props, calculatedValues, tick, index)\n    };\n    return childProps;\n  }, initialChildProps);\n};", "import _assign from \"lodash/assign\";\nimport _defaults from \"lodash/defaults\";\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n/* eslint-disable no-use-before-define */\nimport React from \"react\";\nimport { Helpers, Scale, Axis, Wrapper } from \"victory-core\";\nvar fallbackProps = {\n  width: 450,\n  height: 300,\n  padding: 50\n};\n\nfunction getAxisProps(child, props, calculatedProps) {\n  var domain = calculatedProps.domain,\n      scale = calculatedProps.scale,\n      stringMap = calculatedProps.stringMap,\n      categories = calculatedProps.categories,\n      horizontal = calculatedProps.horizontal;\n  return {\n    stringMap: stringMap,\n    horizontal: horizontal,\n    categories: categories,\n    startAngle: props.startAngle,\n    endAngle: props.endAngle,\n    innerRadius: props.innerRadius,\n    domain: domain,\n    scale: scale\n  };\n}\n\nexport function getBackgroundWithProps(props, calculatedProps) {\n  var backgroundElement = props.backgroundComponent;\n  var height = props.polar ? calculatedProps.range.y[1] : calculatedProps.range.y[0] - calculatedProps.range.y[1];\n  var width = calculatedProps.range.x[1] - calculatedProps.range.x[0];\n  var xScale = props.horizontal ? calculatedProps.scale.y.range()[0] : calculatedProps.scale.x.range()[0];\n  var yScale = props.horizontal ? calculatedProps.scale.x.range()[1] : calculatedProps.scale.y.range()[1];\n  var xCoordinate = props.polar ? calculatedProps.origin.x : xScale;\n  var yCoordinate = props.polar ? calculatedProps.origin.y : yScale;\n  var parentName = props.name || \"chart\";\n  var backgroundProps = {\n    height: height,\n    polar: props.polar,\n    scale: calculatedProps.scale,\n    style: props.style.background,\n    x: xCoordinate,\n    y: yCoordinate,\n    key: \"\".concat(parentName, \"-background\"),\n    width: width\n  };\n  return /*#__PURE__*/React.cloneElement(backgroundElement, _defaults({}, backgroundElement.props, backgroundProps));\n}\n\nfunction getChildProps(child, props, calculatedProps) {\n  var axisChild = Axis.findAxisComponents([child]);\n\n  if (axisChild.length > 0) {\n    return getAxisProps(axisChild[0], props, calculatedProps);\n  }\n\n  var categories = calculatedProps.categories,\n      domain = calculatedProps.domain,\n      range = calculatedProps.range,\n      scale = calculatedProps.scale,\n      stringMap = calculatedProps.stringMap,\n      horizontal = calculatedProps.horizontal;\n  return {\n    categories: categories,\n    domain: domain,\n    range: range,\n    scale: scale,\n    stringMap: stringMap,\n    horizontal: horizontal\n  };\n}\n\nfunction getStyles(props) {\n  var styleProps = props.style && props.style.parent;\n  return {\n    parent: _defaults({}, styleProps, {\n      height: \"100%\",\n      width: \"100%\",\n      userSelect: \"none\"\n    })\n  };\n}\n\nexport function getCalculatedProps(props, childComponents) {\n  var style = getStyles(props);\n  props = Helpers.modifyProps(props, fallbackProps, \"chart\");\n  var _props = props,\n      horizontal = _props.horizontal,\n      polar = _props.polar;\n  var allStrings = Wrapper.getStringsFromChildren(props, childComponents);\n  var categories = Wrapper.getCategories(props, childComponents, allStrings);\n  var stringMap = createStringMap(props, childComponents, allStrings);\n  var domain = {\n    x: getDomain(_assign({}, props, {\n      categories: categories\n    }), \"x\", childComponents),\n    y: getDomain(_assign({}, props, {\n      categories: categories\n    }), \"y\", childComponents)\n  };\n  var range = {\n    x: Helpers.getRange(props, \"x\"),\n    y: Helpers.getRange(props, \"y\")\n  };\n  var baseScale = {\n    x: Scale.getScaleFromProps(props, \"x\") || Wrapper.getScale(props, \"x\"),\n    y: Scale.getScaleFromProps(props, \"y\") || Wrapper.getScale(props, \"y\")\n  };\n  var scale = {\n    x: baseScale.x.domain(domain.x).range(horizontal ? range.y : range.x),\n    y: baseScale.y.domain(domain.y).range(horizontal ? range.x : range.y)\n  };\n  var origin = polar ? Helpers.getPolarOrigin(props) : Axis.getOrigin(domain);\n  var padding = Helpers.getPadding(props);\n  return {\n    categories: categories,\n    domain: domain,\n    range: range,\n    horizontal: horizontal,\n    scale: scale,\n    stringMap: stringMap,\n    style: style,\n    origin: origin,\n    padding: padding\n  };\n}\nexport function getChildren(props, childComponents, calculatedProps) {\n  childComponents = childComponents || getChildComponents(props);\n  calculatedProps = calculatedProps || getCalculatedProps(props, childComponents);\n  var baseStyle = calculatedProps.style.parent;\n  var height = props.height,\n      polar = props.polar,\n      theme = props.theme,\n      width = props.width;\n  var _calculatedProps = calculatedProps,\n      origin = _calculatedProps.origin,\n      horizontal = _calculatedProps.horizontal;\n  var parentName = props.name || \"chart\";\n  return childComponents.map(function (child, index) {\n    var role = child.type && child.type.role;\n    var style = Array.isArray(child.props.style) ? child.props.style : _defaults({}, child.props.style, {\n      parent: baseStyle\n    });\n    var childProps = getChildProps(child, props, calculatedProps);\n    var name = child.props.name || \"\".concat(parentName, \"-\").concat(role, \"-\").concat(index);\n\n    var newProps = _defaults({\n      horizontal: horizontal,\n      height: height,\n      polar: polar,\n      theme: theme,\n      width: width,\n      style: style,\n      name: name,\n      origin: polar ? origin : undefined,\n      padding: calculatedProps.padding,\n      key: \"\".concat(name, \"-key-\").concat(index),\n      standalone: false\n    }, childProps);\n\n    return /*#__PURE__*/React.cloneElement(child, newProps);\n  });\n}\nexport var getChildComponents = function (props, defaultAxes) {\n  var childComponents = React.Children.toArray(props.children);\n\n  var newChildComponents = _toConsumableArray(childComponents);\n\n  if (childComponents.length === 0) {\n    newChildComponents.push(defaultAxes.independent, defaultAxes.dependent);\n  } else {\n    var axisComponents = {\n      dependent: Axis.getAxisComponentsWithParent(childComponents, \"dependent\"),\n      independent: Axis.getAxisComponentsWithParent(childComponents, \"independent\")\n    };\n\n    if (axisComponents.dependent.length === 0 && axisComponents.independent.length === 0) {\n      newChildComponents = props.prependDefaultAxes ? [defaultAxes.independent, defaultAxes.dependent].concat(newChildComponents) : newChildComponents.concat([defaultAxes.independent, defaultAxes.dependent]);\n    }\n  }\n\n  return newChildComponents;\n};\n\nvar getDomain = function (props, axis, childComponents) {\n  childComponents = childComponents || React.Children.toArray(props.children);\n  var domain = Wrapper.getDomain(props, axis, childComponents);\n  var axisComponent = Axis.getAxisComponent(childComponents, axis);\n  var invertDomain = axisComponent && axisComponent.props && axisComponent.props.invertAxis;\n  return invertDomain ? domain.concat().reverse() : domain;\n};\n\nvar createStringMap = function (props, childComponents, allStrings) {\n  var x = !allStrings.x || allStrings.x.length === 0 ? null : allStrings.x.reduce(function (memo, string, index) {\n    memo[string] = index + 1;\n    return memo;\n  }, {});\n  var y = !allStrings.y || allStrings.y.length === 0 ? null : allStrings.y.reduce(function (memo, string, index) {\n    memo[string] = index + 1;\n    return memo;\n  }, {});\n  return {\n    x: x,\n    y: y\n  };\n};", "import _pick from \"lodash/pick\";\nimport _isFunction from \"lodash/isFunction\";\nimport _defaults from \"lodash/defaults\";\nvar _excluded = [\"childName\", \"eventKey\", \"style\", \"continuous\"];\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (typeof call === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n/* eslint-disable react/no-multi-comp */\nimport PropTypes from \"prop-types\";\nimport React from \"react\";\nimport { VictoryTooltip } from \"victory-tooltip\";\nimport { VictoryContainer, Helpers, PropTypes as CustomPropTypes } from \"victory-core\";\nimport VoronoiHelpers from \"./voronoi-helpers\";\nexport var voronoiContainerMixin = function (base) {\n  var _class;\n\n  return _class = /*#__PURE__*/function (_base) {\n    _inherits(VictoryVoronoiContainer, _base);\n\n    var _super = _createSuper(VictoryVoronoiContainer);\n\n    function VictoryVoronoiContainer() {\n      _classCallCheck(this, VictoryVoronoiContainer);\n\n      return _super.apply(this, arguments);\n    }\n\n    _createClass(VictoryVoronoiContainer, [{\n      key: \"getDimension\",\n      value: function getDimension(props) {\n        var horizontal = props.horizontal,\n            voronoiDimension = props.voronoiDimension;\n\n        if (!horizontal || !voronoiDimension) {\n          return voronoiDimension;\n        }\n\n        return voronoiDimension === \"x\" ? \"y\" : \"x\";\n      }\n    }, {\n      key: \"getPoint\",\n      value: function getPoint(point) {\n        var whitelist = [\"_x\", \"_x1\", \"_x0\", \"_y\", \"_y1\", \"_y0\"];\n        return _pick(point, whitelist);\n      }\n    }, {\n      key: \"getLabelPosition\",\n      value: function getLabelPosition(props, labelProps, points) {\n        var mousePosition = props.mousePosition,\n            mouseFollowTooltips = props.mouseFollowTooltips;\n        var voronoiDimension = this.getDimension(props);\n        var point = this.getPoint(points[0]);\n        var basePosition = Helpers.scalePoint(props, point);\n        var center = mouseFollowTooltips ? mousePosition : undefined;\n\n        if (!voronoiDimension || points.length < 2) {\n          return _objectSpread(_objectSpread({}, basePosition), {}, {\n            center: _defaults({}, labelProps.center, center)\n          });\n        }\n\n        var x = voronoiDimension === \"y\" ? mousePosition.x : basePosition.x;\n        var y = voronoiDimension === \"x\" ? mousePosition.y : basePosition.y;\n        center = mouseFollowTooltips ? mousePosition : {\n          x: x,\n          y: y\n        };\n        return {\n          x: x,\n          y: y,\n          center: _defaults({}, labelProps.center, center)\n        };\n      }\n    }, {\n      key: \"getStyle\",\n      value: function getStyle(props, points, type) {\n        var labels = props.labels,\n            labelComponent = props.labelComponent,\n            theme = props.theme;\n        var componentProps = labelComponent.props || {};\n        var themeStyles = theme && theme.voronoi && theme.voronoi.style ? theme.voronoi.style : {};\n        var componentStyleArray = type === \"flyout\" ? componentProps.flyoutStyle : componentProps.style;\n        return points.reduce(function (memo, datum, index) {\n          var labelProps = _defaults({}, componentProps, {\n            datum: datum,\n            active: true\n          });\n\n          var text = _isFunction(labels) ? labels(labelProps) : undefined;\n          var textArray = text !== undefined ? \"\".concat(text).split(\"\\n\") : [];\n          var baseStyle = datum.style && datum.style[type] || {};\n          var componentStyle = Array.isArray(componentStyleArray) ? componentStyleArray[index] : componentStyleArray;\n          var style = Helpers.evaluateStyle(_defaults({}, componentStyle, baseStyle, themeStyles[type]), labelProps);\n          var styleArray = textArray.length ? textArray.map(function () {\n            return style;\n          }) : [style];\n          memo = memo.concat(styleArray);\n          return memo;\n        }, []);\n      }\n    }, {\n      key: \"getDefaultLabelProps\",\n      value: function getDefaultLabelProps(props, points) {\n        var voronoiDimension = props.voronoiDimension,\n            horizontal = props.horizontal,\n            mouseFollowTooltips = props.mouseFollowTooltips;\n        var point = this.getPoint(points[0]);\n        var multiPoint = voronoiDimension && points.length > 1;\n        var y = point._y1 !== undefined ? point._y1 : point._y;\n        var defaultHorizontalOrientation = y < 0 ? \"left\" : \"right\";\n        var defaultOrientation = y < 0 ? \"bottom\" : \"top\";\n        var labelOrientation = horizontal ? defaultHorizontalOrientation : defaultOrientation;\n        var orientation = mouseFollowTooltips ? undefined : labelOrientation;\n        return {\n          orientation: orientation,\n          pointerLength: multiPoint ? 0 : undefined,\n          constrainToVisibleArea: multiPoint || mouseFollowTooltips ? true : undefined\n        };\n      }\n    }, {\n      key: \"getLabelProps\",\n      value: function getLabelProps(props, points) {\n        var labels = props.labels,\n            scale = props.scale,\n            labelComponent = props.labelComponent,\n            theme = props.theme,\n            width = props.width,\n            height = props.height;\n        var componentProps = labelComponent.props || {};\n        var text = points.reduce(function (memo, datum) {\n          var labelProps = _defaults({}, componentProps, {\n            datum: datum,\n            active: true\n          });\n\n          var t = _isFunction(labels) ? labels(labelProps) : null;\n\n          if (t === null || t === undefined) {\n            return memo;\n          }\n\n          memo = memo.concat(\"\".concat(t).split(\"\\n\"));\n          return memo;\n        }, []); // remove properties from first point to make datum\n        // eslint-disable-next-line no-unused-vars\n\n        var _points$ = points[0],\n            childName = _points$.childName,\n            eventKey = _points$.eventKey,\n            style = _points$.style,\n            continuous = _points$.continuous,\n            datum = _objectWithoutProperties(_points$, _excluded);\n\n        var name = props.name === childName ? childName : \"\".concat(props.name, \"-\").concat(childName);\n\n        var labelProps = _defaults({\n          key: \"\".concat(name, \"-\").concat(eventKey, \"-voronoi-tooltip\"),\n          id: \"\".concat(name, \"-\").concat(eventKey, \"-voronoi-tooltip\"),\n          active: true,\n          renderInPortal: false,\n          activePoints: points,\n          datum: datum,\n          scale: scale,\n          theme: theme\n        }, componentProps, {\n          text: text,\n          width: width,\n          height: height,\n          style: this.getStyle(props, points, \"labels\"),\n          flyoutStyle: this.getStyle(props, points, \"flyout\")[0]\n        }, this.getDefaultLabelProps(props, points));\n\n        var labelPosition = this.getLabelPosition(props, labelProps, points);\n        return _defaults({}, labelPosition, labelProps);\n      }\n    }, {\n      key: \"getTooltip\",\n      value: function getTooltip(props) {\n        var labels = props.labels,\n            activePoints = props.activePoints,\n            labelComponent = props.labelComponent;\n\n        if (!labels) {\n          return null;\n        }\n\n        if (Array.isArray(activePoints) && activePoints.length) {\n          var labelProps = this.getLabelProps(props, activePoints);\n          var text = labelProps.text;\n          var showLabel = Array.isArray(text) ? text.filter(Boolean).length : text;\n          return showLabel ? /*#__PURE__*/React.cloneElement(labelComponent, labelProps) : null;\n        }\n\n        return null;\n      } // Overrides method in VictoryContainer\n\n    }, {\n      key: \"getChildren\",\n      value: function getChildren(props) {\n        return [].concat(_toConsumableArray(React.Children.toArray(props.children)), [this.getTooltip(props)]);\n      }\n    }]);\n\n    return VictoryVoronoiContainer;\n  }(base), _class.displayName = \"VictoryVoronoiContainer\", _class.propTypes = _objectSpread(_objectSpread({}, VictoryContainer.propTypes), {}, {\n    activateData: PropTypes.bool,\n    activateLabels: PropTypes.bool,\n    disable: PropTypes.bool,\n    labelComponent: PropTypes.element,\n    labels: PropTypes.func,\n    mouseFollowTooltips: PropTypes.bool,\n    onActivated: PropTypes.func,\n    onDeactivated: PropTypes.func,\n    radius: PropTypes.number,\n    voronoiBlacklist: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, CustomPropTypes.regExp])),\n    voronoiDimension: PropTypes.oneOf([\"x\", \"y\"]),\n    voronoiPadding: PropTypes.oneOfType([PropTypes.number, PropTypes.shape({\n      top: PropTypes.number,\n      bottom: PropTypes.number,\n      left: PropTypes.number,\n      right: PropTypes.number\n    })])\n  }), _class.defaultProps = _objectSpread(_objectSpread({}, VictoryContainer.defaultProps), {}, {\n    activateData: true,\n    activateLabels: true,\n    labelComponent: /*#__PURE__*/React.createElement(VictoryTooltip, null),\n    voronoiPadding: 5\n  }), _class.defaultEvents = function (props) {\n    return [{\n      target: \"parent\",\n      eventHandlers: {\n        onMouseLeave: function (evt, targetProps) {\n          return props.disable ? {} : VoronoiHelpers.onMouseLeave(evt, targetProps);\n        },\n        onTouchCancel: function (evt, targetProps) {\n          return props.disable ? {} : VoronoiHelpers.onMouseLeave(evt, targetProps);\n        },\n        onMouseMove: function (evt, targetProps) {\n          return props.disable ? {} : VoronoiHelpers.onMouseMove(evt, targetProps);\n        },\n        onTouchMove: function (evt, targetProps) {\n          return props.disable ? {} : VoronoiHelpers.onMouseMove(evt, targetProps);\n        }\n      }\n    }, {\n      target: \"data\",\n      eventHandlers: props.disable ? {} : {\n        onMouseOver: function () {\n          return null;\n        },\n        onMouseOut: function () {\n          return null;\n        },\n        onMouseMove: function () {\n          return null;\n        }\n      }\n    }];\n  }, _class;\n};\nexport default voronoiContainerMixin(VictoryContainer); // @ts-expect-error IMPORTANT: when converting this file to TypeScript, you must export the type as well:\n// export const VictoryVoronoiContainer = voronoiContainerMixin(VictoryContainer);\n// export type VictoryVoronoiContainer = typeof VictoryVoronoiContainer;", "import _orderBy from \"lodash/orderBy\";\nimport _isPlainObject from \"lodash/isPlainObject\";\nimport _uniqueId from \"lodash/uniqueId\";\nimport _defaults from \"lodash/defaults\";\nimport _assign from \"lodash/assign\";\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (typeof call === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { PropTypes as CustomPropTypes, TextSize, Helpers, LabelHelpers, VictoryLabel, VictoryTheme, VictoryPortal } from \"victory-core\";\nimport Flyout from \"./flyout\";\nvar fallbackProps = {\n  cornerRadius: 5,\n  pointerLength: 10,\n  pointerWidth: 10\n};\n\nvar VictoryTooltip = /*#__PURE__*/function (_React$Component) {\n  _inherits(VictoryTooltip, _React$Component);\n\n  var _super = _createSuper(VictoryTooltip);\n\n  function VictoryTooltip(props) {\n    var _this;\n\n    _classCallCheck(this, VictoryTooltip);\n\n    _this = _super.call(this, props);\n    _this.id = props.id === undefined ? _uniqueId(\"tooltip-\") : props.id;\n    return _this;\n  }\n\n  _createClass(VictoryTooltip, [{\n    key: \"getDefaultOrientation\",\n    value: function getDefaultOrientation(props) {\n      var datum = props.datum,\n          horizontal = props.horizontal,\n          polar = props.polar;\n\n      if (!polar) {\n        var positive = horizontal ? \"right\" : \"top\";\n        var negative = horizontal ? \"left\" : \"bottom\";\n        return datum && datum.y < 0 ? negative : positive;\n      }\n\n      return this.getPolarOrientation(props, datum);\n    }\n  }, {\n    key: \"getPolarOrientation\",\n    value: function getPolarOrientation(props, datum) {\n      var degrees = LabelHelpers.getDegrees(props, datum);\n      var placement = props.labelPlacement || \"vertical\";\n\n      if (placement === \" vertical\") {\n        return this.getVerticalOrientations(degrees);\n      } else if (placement === \"parallel\") {\n        return degrees < 90 || degrees > 270 ? \"right\" : \"left\";\n      }\n\n      return degrees > 180 ? \"bottom\" : \"top\";\n    }\n  }, {\n    key: \"getVerticalOrientations\",\n    value: function getVerticalOrientations(degrees) {\n      // eslint-disable-next-line no-magic-numbers\n      if (degrees < 45 || degrees > 315) {\n        return \"right\"; // eslint-disable-next-line no-magic-numbers\n      } else if (degrees >= 45 && degrees <= 135) {\n        return \"top\"; // eslint-disable-next-line no-magic-numbers\n      } else if (degrees > 135 && degrees < 225) {\n        return \"left\";\n      }\n\n      return \"bottom\";\n    }\n  }, {\n    key: \"getStyles\",\n    value: function getStyles(props) {\n      var theme = props.theme || VictoryTheme.grayscale;\n      var defaultLabelStyles = theme && theme.tooltip && theme.tooltip.style ? theme.tooltip.style : {};\n      var baseLabelStyle = Array.isArray(props.style) ? props.style.map(function (s) {\n        return _defaults({}, s, defaultLabelStyles);\n      }) : _defaults({}, props.style, defaultLabelStyles);\n      var defaultFlyoutStyles = theme && theme.tooltip && theme.tooltip.flyoutStyle ? theme.tooltip.flyoutStyle : {};\n      var baseFlyoutStyle = props.flyoutStyle ? _defaults({}, props.flyoutStyle, defaultFlyoutStyles) : defaultFlyoutStyles;\n      var style = Array.isArray(baseLabelStyle) ? baseLabelStyle.map(function (s) {\n        return Helpers.evaluateStyle(s, props);\n      }) : Helpers.evaluateStyle(baseLabelStyle, props);\n      var flyoutStyle = Helpers.evaluateStyle(baseFlyoutStyle, _assign({}, props, {\n        style: style\n      }));\n      return {\n        style: style,\n        flyoutStyle: flyoutStyle\n      };\n    }\n  }, {\n    key: \"getEvaluatedProps\",\n    value: function getEvaluatedProps(props) {\n      var cornerRadius = props.cornerRadius,\n          centerOffset = props.centerOffset,\n          dx = props.dx,\n          dy = props.dy;\n      var active = Helpers.evaluateProp(props.active, props);\n      var text = Helpers.evaluateProp(props.text, _assign({}, props, {\n        active: active\n      }));\n\n      var _this$getStyles = this.getStyles(_assign({}, props, {\n        active: active,\n        text: text\n      })),\n          style = _this$getStyles.style,\n          flyoutStyle = _this$getStyles.flyoutStyle;\n\n      var orientation = Helpers.evaluateProp(props.orientation, _assign({}, props, {\n        active: active,\n        text: text,\n        style: style,\n        flyoutStyle: flyoutStyle\n      })) || this.getDefaultOrientation(props);\n      var padding = Helpers.evaluateProp(props.flyoutPadding, _assign({}, props, {\n        active: active,\n        text: text,\n        style: style,\n        flyoutStyle: flyoutStyle,\n        orientation: orientation\n      })) || this.getLabelPadding(style);\n      var flyoutPadding = Helpers.getPadding({\n        padding: padding\n      });\n      var pointerWidth = Helpers.evaluateProp(props.pointerWidth, _assign({}, props, {\n        active: active,\n        text: text,\n        style: style,\n        flyoutStyle: flyoutStyle,\n        orientation: orientation\n      }));\n      var pointerLength = Helpers.evaluateProp(props.pointerLength, _assign({}, props, {\n        active: active,\n        text: text,\n        style: style,\n        flyoutStyle: flyoutStyle,\n        orientation: orientation\n      }));\n      var labelSize = TextSize.approximateTextSize(text, style);\n\n      var _this$getDimensions = this.getDimensions(_assign({}, props, {\n        style: style,\n        flyoutStyle: flyoutStyle,\n        active: active,\n        text: text,\n        orientation: orientation,\n        flyoutPadding: flyoutPadding,\n        pointerWidth: pointerWidth,\n        pointerLength: pointerLength\n      }), labelSize),\n          flyoutHeight = _this$getDimensions.flyoutHeight,\n          flyoutWidth = _this$getDimensions.flyoutWidth;\n\n      var evaluatedProps = _assign({}, props, {\n        active: active,\n        text: text,\n        style: style,\n        flyoutStyle: flyoutStyle,\n        orientation: orientation,\n        flyoutHeight: flyoutHeight,\n        flyoutWidth: flyoutWidth,\n        flyoutPadding: flyoutPadding,\n        pointerWidth: pointerWidth,\n        pointerLength: pointerLength\n      });\n\n      var offsetX = _isPlainObject(centerOffset) && centerOffset.x !== undefined ? Helpers.evaluateProp(centerOffset.x, evaluatedProps) : 0;\n      var offsetY = _isPlainObject(centerOffset) && centerOffset.y !== undefined ? Helpers.evaluateProp(centerOffset.y, evaluatedProps) : 0;\n      return _assign({}, evaluatedProps, {\n        centerOffset: {\n          x: offsetX,\n          y: offsetY\n        },\n        dx: dx !== undefined ? Helpers.evaluateProp(dx, evaluatedProps) : 0,\n        dy: dy !== undefined ? Helpers.evaluateProp(dy, evaluatedProps) : 0,\n        cornerRadius: Helpers.evaluateProp(cornerRadius, evaluatedProps)\n      });\n    }\n  }, {\n    key: \"getCalculatedValues\",\n    value: function getCalculatedValues(props) {\n      var style = props.style,\n          text = props.text,\n          flyoutStyle = props.flyoutStyle,\n          flyoutHeight = props.flyoutHeight,\n          flyoutWidth = props.flyoutWidth;\n      var labelSize = TextSize.approximateTextSize(text, style);\n      var flyoutDimensions = {\n        height: flyoutHeight,\n        width: flyoutWidth\n      };\n      var flyoutCenter = this.getFlyoutCenter(props, flyoutDimensions);\n      var transform = this.getTransform(props);\n      return {\n        style: style,\n        flyoutStyle: flyoutStyle,\n        labelSize: labelSize,\n        flyoutDimensions: flyoutDimensions,\n        flyoutCenter: flyoutCenter,\n        transform: transform\n      };\n    }\n  }, {\n    key: \"getTransform\",\n    value: function getTransform(props) {\n      var x = props.x,\n          y = props.y,\n          style = props.style;\n      var labelStyle = style || {};\n      var angle = labelStyle.angle || props.angle || this.getDefaultAngle(props);\n      return angle ? \"rotate(\".concat(angle, \" \").concat(x, \" \").concat(y, \")\") : undefined;\n    } // eslint-disable-next-line complexity\n\n  }, {\n    key: \"getDefaultAngle\",\n    value: function getDefaultAngle(props) {\n      var polar = props.polar,\n          labelPlacement = props.labelPlacement,\n          orientation = props.orientation,\n          datum = props.datum;\n\n      if (!polar || !labelPlacement || labelPlacement === \"vertical\") {\n        return 0;\n      }\n\n      var degrees = LabelHelpers.getDegrees(props, datum);\n      var sign = degrees > 90 && degrees < 180 || degrees > 270 ? 1 : -1;\n      var labelRotation = labelPlacement === \"perpendicular\" ? 0 : 90;\n      var angle;\n\n      if (degrees === 0 || degrees === 180) {\n        angle = orientation === \"top\" && degrees === 180 ? 270 : 90;\n      } else if (degrees > 0 && degrees < 180) {\n        angle = 90 - degrees;\n      } else if (degrees > 180 && degrees < 360) {\n        angle = 270 - degrees;\n      }\n\n      return angle + sign * labelRotation;\n    }\n  }, {\n    key: \"constrainTooltip\",\n    value: function constrainTooltip(center, props, dimensions) {\n      var x = center.x,\n          y = center.y;\n      var width = dimensions.width,\n          height = dimensions.height;\n      var extent = {\n        x: [0, props.width],\n        y: [0, props.height]\n      };\n      var flyoutExtent = {\n        x: [x - width / 2, x + width / 2],\n        y: [y - height / 2, y + height / 2]\n      };\n      var adjustments = {\n        x: [flyoutExtent.x[0] < extent.x[0] ? extent.x[0] - flyoutExtent.x[0] : 0, flyoutExtent.x[1] > extent.x[1] ? flyoutExtent.x[1] - extent.x[1] : 0],\n        y: [flyoutExtent.y[0] < extent.y[0] ? extent.y[0] - flyoutExtent.y[0] : 0, flyoutExtent.y[1] > extent.y[1] ? flyoutExtent.y[1] - extent.y[1] : 0]\n      };\n      return {\n        x: Math.round(x + adjustments.x[0] - adjustments.x[1]),\n        y: Math.round(y + adjustments.y[0] - adjustments.y[1])\n      };\n    } // eslint-disable-next-line complexity\n\n  }, {\n    key: \"getFlyoutCenter\",\n    value: function getFlyoutCenter(props, dimensions) {\n      var x = props.x,\n          y = props.y,\n          dx = props.dx,\n          dy = props.dy,\n          pointerLength = props.pointerLength,\n          orientation = props.orientation,\n          constrainToVisibleArea = props.constrainToVisibleArea,\n          centerOffset = props.centerOffset;\n      var height = dimensions.height,\n          width = dimensions.width;\n      var xSign = orientation === \"left\" ? -1 : 1;\n      var ySign = orientation === \"bottom\" ? -1 : 1;\n      var flyoutCenter = {\n        x: orientation === \"left\" || orientation === \"right\" ? x + xSign * (pointerLength + width / 2 + xSign * dx) : x + dx,\n        y: orientation === \"top\" || orientation === \"bottom\" ? y - ySign * (pointerLength + height / 2 - ySign * dy) : y + dy\n      };\n      var center = {\n        x: _isPlainObject(props.center) && props.center.x !== undefined ? props.center.x : flyoutCenter.x,\n        y: _isPlainObject(props.center) && props.center.y !== undefined ? props.center.y : flyoutCenter.y\n      };\n      var centerWithOffset = {\n        x: center.x + centerOffset.x,\n        y: center.y + centerOffset.y\n      };\n      return constrainToVisibleArea ? this.constrainTooltip(centerWithOffset, props, dimensions) : centerWithOffset;\n    }\n  }, {\n    key: \"getLabelPadding\",\n    value: function getLabelPadding(style) {\n      if (!style) {\n        return 0;\n      }\n\n      var paddings = Array.isArray(style) ? style.map(function (s) {\n        return s.padding;\n      }) : [style.padding];\n      return Math.max.apply(Math, _toConsumableArray(paddings).concat([0]));\n    }\n  }, {\n    key: \"getDimensions\",\n    value: function getDimensions(props, labelSize) {\n      var orientation = props.orientation,\n          pointerLength = props.pointerLength,\n          pointerWidth = props.pointerWidth,\n          flyoutHeight = props.flyoutHeight,\n          flyoutWidth = props.flyoutWidth,\n          flyoutPadding = props.flyoutPadding;\n      var cornerRadius = Helpers.evaluateProp(props.cornerRadius, props);\n\n      var getHeight = function () {\n        var calculatedHeight = labelSize.height + flyoutPadding.top + flyoutPadding.bottom;\n        var minHeight = orientation === \"top\" || orientation === \"bottom\" ? 2 * cornerRadius : 2 * cornerRadius + pointerWidth;\n        return Math.max(minHeight, calculatedHeight);\n      };\n\n      var getWidth = function () {\n        var calculatedWidth = labelSize.width + flyoutPadding.left + flyoutPadding.right;\n        var minWidth = orientation === \"left\" || orientation === \"right\" ? 2 * cornerRadius + pointerLength : 2 * cornerRadius;\n        return Math.max(minWidth, calculatedWidth);\n      };\n\n      return {\n        flyoutHeight: flyoutHeight ? Helpers.evaluateProp(flyoutHeight, props) : getHeight(props, labelSize, orientation),\n        flyoutWidth: flyoutWidth ? Helpers.evaluateProp(flyoutWidth, props) : getWidth(props, labelSize, orientation)\n      };\n    }\n  }, {\n    key: \"getLabelProps\",\n    value: function getLabelProps(props, calculatedValues) {\n      var flyoutCenter = calculatedValues.flyoutCenter,\n          style = calculatedValues.style,\n          labelSize = calculatedValues.labelSize,\n          _calculatedValues$dy = calculatedValues.dy,\n          dy = _calculatedValues$dy === void 0 ? 0 : _calculatedValues$dy,\n          _calculatedValues$dx = calculatedValues.dx,\n          dx = _calculatedValues$dx === void 0 ? 0 : _calculatedValues$dx;\n      var text = props.text,\n          datum = props.datum,\n          activePoints = props.activePoints,\n          labelComponent = props.labelComponent,\n          index = props.index,\n          flyoutPadding = props.flyoutPadding;\n      var textAnchor = (Array.isArray(style) && style.length ? style[0].textAnchor : style.textAnchor) || \"middle\";\n\n      var getLabelX = function () {\n        if (!textAnchor || textAnchor === \"middle\") {\n          return flyoutCenter.x;\n        }\n\n        var sign = textAnchor === \"end\" ? -1 : 1;\n        return flyoutCenter.x - sign * (labelSize.width / 2);\n      };\n\n      return _defaults({}, labelComponent.props, {\n        key: \"\".concat(this.id, \"-label-\").concat(index),\n        text: text,\n        datum: datum,\n        activePoints: activePoints,\n        textAnchor: textAnchor,\n        dy: dy,\n        dx: dx,\n        style: style,\n        x: getLabelX() + (flyoutPadding.left - flyoutPadding.right) / 2,\n        y: flyoutCenter.y + (flyoutPadding.top - flyoutPadding.bottom) / 2,\n        verticalAnchor: \"middle\",\n        angle: style.angle\n      });\n    }\n  }, {\n    key: \"getPointerOrientation\",\n    value: function getPointerOrientation(point, center, flyoutDimensions) {\n      var edges = {\n        bottom: center.y + flyoutDimensions.height / 2,\n        top: center.y - flyoutDimensions.height / 2,\n        left: center.x - flyoutDimensions.width / 2,\n        right: center.x + flyoutDimensions.width / 2\n      };\n      var gaps = [{\n        side: \"top\",\n        val: edges.top > point.y ? edges.top - point.y : -1\n      }, {\n        side: \"bottom\",\n        val: edges.bottom < point.y ? point.y - edges.bottom : -1\n      }, {\n        side: \"right\",\n        val: edges.right < point.x ? point.x - edges.right : -1\n      }, {\n        side: \"left\",\n        val: edges.left > point.x ? edges.left - point.x : -1\n      }];\n      return _orderBy(gaps, \"val\", \"desc\")[0].side;\n    }\n  }, {\n    key: \"getFlyoutProps\",\n    value: function getFlyoutProps(props, calculatedValues) {\n      var flyoutDimensions = calculatedValues.flyoutDimensions,\n          flyoutStyle = calculatedValues.flyoutStyle,\n          flyoutCenter = calculatedValues.flyoutCenter;\n      var x = props.x,\n          y = props.y,\n          dx = props.dx,\n          dy = props.dy,\n          datum = props.datum,\n          activePoints = props.activePoints,\n          index = props.index,\n          pointerLength = props.pointerLength,\n          pointerWidth = props.pointerWidth,\n          cornerRadius = props.cornerRadius,\n          events = props.events,\n          flyoutComponent = props.flyoutComponent;\n      var pointerOrientation = Helpers.evaluateProp(props.pointerOrientation, props);\n      return _defaults({}, flyoutComponent.props, {\n        x: x,\n        y: y,\n        dx: dx,\n        dy: dy,\n        datum: datum,\n        activePoints: activePoints,\n        index: index,\n        pointerLength: pointerLength,\n        pointerWidth: pointerWidth,\n        cornerRadius: cornerRadius,\n        events: events,\n        orientation: pointerOrientation || this.getPointerOrientation({\n          x: x,\n          y: y\n        }, flyoutCenter, flyoutDimensions),\n        key: \"\".concat(this.id, \"-tooltip-\").concat(index),\n        width: flyoutDimensions.width,\n        height: flyoutDimensions.height,\n        style: flyoutStyle,\n        center: flyoutCenter\n      });\n    } // Overridden in victory-core-native\n\n  }, {\n    key: \"renderTooltip\",\n    value: function renderTooltip(props) {\n      var active = Helpers.evaluateProp(props.active, props);\n      var renderInPortal = props.renderInPortal;\n\n      if (!active) {\n        return renderInPortal ? /*#__PURE__*/React.createElement(VictoryPortal, null, null) : null;\n      }\n\n      var evaluatedProps = this.getEvaluatedProps(props);\n      var flyoutComponent = evaluatedProps.flyoutComponent,\n          labelComponent = evaluatedProps.labelComponent,\n          groupComponent = evaluatedProps.groupComponent;\n      var calculatedValues = this.getCalculatedValues(evaluatedProps);\n      var children = [/*#__PURE__*/React.cloneElement(flyoutComponent, this.getFlyoutProps(evaluatedProps, calculatedValues)), /*#__PURE__*/React.cloneElement(labelComponent, this.getLabelProps(evaluatedProps, calculatedValues))];\n      var tooltip = /*#__PURE__*/React.cloneElement(groupComponent, {\n        role: \"presentation\",\n        transform: calculatedValues.transform\n      }, children);\n      return renderInPortal ? /*#__PURE__*/React.createElement(VictoryPortal, null, tooltip) : tooltip;\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var props = Helpers.modifyProps(this.props, fallbackProps, \"tooltip\");\n      return this.renderTooltip(props);\n    }\n  }]);\n\n  return VictoryTooltip;\n}(React.Component);\n\nVictoryTooltip.displayName = \"VictoryTooltip\";\nVictoryTooltip.role = \"tooltip\";\nVictoryTooltip.propTypes = {\n  activateData: PropTypes.bool,\n  active: PropTypes.oneOfType([PropTypes.bool, PropTypes.func]),\n  activePoints: PropTypes.array,\n  angle: PropTypes.number,\n  center: PropTypes.shape({\n    x: CustomPropTypes.nonNegative,\n    y: CustomPropTypes.nonNegative\n  }),\n  centerOffset: PropTypes.shape({\n    x: PropTypes.oneOfType([PropTypes.number, PropTypes.func]),\n    y: PropTypes.oneOfType([PropTypes.number, PropTypes.func])\n  }),\n  constrainToVisibleArea: PropTypes.bool,\n  cornerRadius: PropTypes.oneOfType([CustomPropTypes.nonNegative, PropTypes.func]),\n  data: PropTypes.array,\n  datum: PropTypes.object,\n  dx: PropTypes.oneOfType([PropTypes.number, PropTypes.func]),\n  dy: PropTypes.oneOfType([PropTypes.number, PropTypes.func]),\n  events: PropTypes.object,\n  flyoutComponent: PropTypes.element,\n  flyoutHeight: PropTypes.oneOfType([CustomPropTypes.nonNegative, PropTypes.func]),\n  flyoutPadding: PropTypes.oneOfType([PropTypes.func, PropTypes.number, PropTypes.shape({\n    top: PropTypes.number,\n    bottom: PropTypes.number,\n    left: PropTypes.number,\n    right: PropTypes.number\n  })]),\n  flyoutStyle: PropTypes.object,\n  flyoutWidth: PropTypes.oneOfType([CustomPropTypes.nonNegative, PropTypes.func]),\n  groupComponent: PropTypes.element,\n  height: PropTypes.number,\n  horizontal: PropTypes.bool,\n  id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  index: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  labelComponent: PropTypes.element,\n  orientation: PropTypes.oneOfType([PropTypes.oneOf([\"top\", \"bottom\", \"left\", \"right\"]), PropTypes.func]),\n  pointerLength: PropTypes.oneOfType([CustomPropTypes.nonNegative, PropTypes.func]),\n  pointerOrientation: PropTypes.oneOfType([PropTypes.oneOf([\"top\", \"bottom\", \"left\", \"right\"]), PropTypes.func]),\n  pointerWidth: PropTypes.oneOfType([CustomPropTypes.nonNegative, PropTypes.func]),\n  polar: PropTypes.bool,\n  renderInPortal: PropTypes.bool,\n  scale: PropTypes.shape({\n    x: CustomPropTypes.scale,\n    y: CustomPropTypes.scale\n  }),\n  style: PropTypes.oneOfType([PropTypes.object, PropTypes.array]),\n  text: PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.func, PropTypes.array]),\n  theme: PropTypes.object,\n  width: PropTypes.number,\n  x: PropTypes.number,\n  y: PropTypes.number\n};\nVictoryTooltip.defaultProps = {\n  active: false,\n  renderInPortal: true,\n  labelComponent: /*#__PURE__*/React.createElement(VictoryLabel, null),\n  flyoutComponent: /*#__PURE__*/React.createElement(Flyout, null),\n  groupComponent: /*#__PURE__*/React.createElement(\"g\", null)\n};\n\nVictoryTooltip.defaultEvents = function (props) {\n  var activate = props.activateData ? [{\n    target: \"labels\",\n    mutation: function () {\n      return {\n        active: true\n      };\n    }\n  }, {\n    target: \"data\",\n    mutation: function () {\n      return {\n        active: true\n      };\n    }\n  }] : [{\n    target: \"labels\",\n    mutation: function () {\n      return {\n        active: true\n      };\n    }\n  }];\n  var deactivate = props.activateData ? [{\n    target: \"labels\",\n    mutation: function () {\n      return {\n        active: undefined\n      };\n    }\n  }, {\n    target: \"data\",\n    mutation: function () {\n      return {\n        active: undefined\n      };\n    }\n  }] : [{\n    target: \"labels\",\n    mutation: function () {\n      return {\n        active: undefined\n      };\n    }\n  }];\n  return [{\n    target: \"data\",\n    eventHandlers: {\n      onMouseOver: function () {\n        return activate;\n      },\n      onFocus: function () {\n        return activate;\n      },\n      onTouchStart: function () {\n        return activate;\n      },\n      onMouseOut: function () {\n        return deactivate;\n      },\n      onBlur: function () {\n        return deactivate;\n      },\n      onTouchEnd: function () {\n        return deactivate;\n      }\n    }\n  }];\n};\n\nexport { VictoryTooltip as default };", "import _assign from \"lodash/assign\";\nimport _isPlainObject from \"lodash/isPlainObject\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n/* eslint no-magic-numbers: [\"error\", { \"ignore\": [-1, 0, 1, 2] }]*/\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Helpers, CommonProps, Path, UserProps } from \"victory-core\";\n\nvar getVerticalPath = function (props) {\n  var pointerWidth = props.pointerWidth,\n      cornerRadius = props.cornerRadius,\n      orientation = props.orientation,\n      width = props.width,\n      height = props.height,\n      center = props.center;\n  var sign = orientation === \"bottom\" ? 1 : -1;\n  var x = props.x + (props.dx || 0);\n  var y = props.y + (props.dy || 0);\n  var centerX = _isPlainObject(center) && center.x;\n  var centerY = _isPlainObject(center) && center.y;\n  var pointerEdge = centerY + sign * (height / 2);\n  var oppositeEdge = centerY - sign * (height / 2);\n  var rightEdge = centerX + width / 2;\n  var leftEdge = centerX - width / 2;\n  var pointerLength = sign * (y - pointerEdge) < 0 ? 0 : props.pointerLength;\n  var direction = orientation === \"bottom\" ? \"0 0 0\" : \"0 0 1\";\n  var arc = \"\".concat(cornerRadius, \" \").concat(cornerRadius, \" \").concat(direction);\n  return \"M \".concat(centerX - pointerWidth / 2, \", \").concat(pointerEdge, \"\\n    L \").concat(pointerLength ? x : centerX + pointerWidth / 2, \", \").concat(pointerLength ? y : pointerEdge, \"\\n    L \").concat(centerX + pointerWidth / 2, \", \").concat(pointerEdge, \"\\n    L \").concat(rightEdge - cornerRadius, \", \").concat(pointerEdge, \"\\n    A \").concat(arc, \" \").concat(rightEdge, \", \").concat(pointerEdge - sign * cornerRadius, \"\\n    L \").concat(rightEdge, \", \").concat(oppositeEdge + sign * cornerRadius, \"\\n    A \").concat(arc, \" \").concat(rightEdge - cornerRadius, \", \").concat(oppositeEdge, \"\\n    L \").concat(leftEdge + cornerRadius, \", \").concat(oppositeEdge, \"\\n    A \").concat(arc, \" \").concat(leftEdge, \", \").concat(oppositeEdge + sign * cornerRadius, \"\\n    L \").concat(leftEdge, \", \").concat(pointerEdge - sign * cornerRadius, \"\\n    A \").concat(arc, \" \").concat(leftEdge + cornerRadius, \", \").concat(pointerEdge, \"\\n    z\");\n};\n\nvar getHorizontalPath = function (props) {\n  var pointerWidth = props.pointerWidth,\n      cornerRadius = props.cornerRadius,\n      orientation = props.orientation,\n      width = props.width,\n      height = props.height,\n      center = props.center;\n  var sign = orientation === \"left\" ? 1 : -1;\n  var x = props.x + (props.dx || 0);\n  var y = props.y + (props.dy || 0);\n  var centerX = _isPlainObject(center) && center.x;\n  var centerY = _isPlainObject(center) && center.y;\n  var pointerEdge = centerX - sign * (width / 2);\n  var oppositeEdge = centerX + sign * (width / 2);\n  var bottomEdge = centerY + height / 2;\n  var topEdge = centerY - height / 2;\n  var pointerLength = sign * (x - pointerEdge) > 0 ? 0 : props.pointerLength;\n  var direction = orientation === \"left\" ? \"0 0 0\" : \"0 0 1\";\n  var arc = \"\".concat(cornerRadius, \" \").concat(cornerRadius, \" \").concat(direction);\n  return \"M \".concat(pointerEdge, \", \").concat(centerY - pointerWidth / 2, \"\\n    L \").concat(pointerLength ? x : pointerEdge, \", \").concat(pointerLength ? y : centerY + pointerWidth / 2, \"\\n    L \").concat(pointerEdge, \", \").concat(centerY + pointerWidth / 2, \"\\n    L \").concat(pointerEdge, \", \").concat(bottomEdge - cornerRadius, \"\\n    A \").concat(arc, \" \").concat(pointerEdge + sign * cornerRadius, \", \").concat(bottomEdge, \"\\n    L \").concat(oppositeEdge - sign * cornerRadius, \", \").concat(bottomEdge, \"\\n    A \").concat(arc, \" \").concat(oppositeEdge, \", \").concat(bottomEdge - cornerRadius, \"\\n    L \").concat(oppositeEdge, \", \").concat(topEdge + cornerRadius, \"\\n    A \").concat(arc, \" \").concat(oppositeEdge - sign * cornerRadius, \", \").concat(topEdge, \"\\n    L \").concat(pointerEdge + sign * cornerRadius, \", \").concat(topEdge, \"\\n    A \").concat(arc, \" \").concat(pointerEdge, \", \").concat(topEdge + cornerRadius, \"\\n    z\");\n};\n\nvar getFlyoutPath = function (props) {\n  var orientation = props.orientation || \"top\";\n  return orientation === \"left\" || orientation === \"right\" ? getHorizontalPath(props) : getVerticalPath(props);\n};\n\nvar evaluateProps = function (props) {\n  /**\n   * Potential evaluated props are:\n   * `id`\n   * `style`\n   */\n  var id = Helpers.evaluateProp(props.id, props);\n  var style = Helpers.evaluateStyle(props.style, props);\n  return _assign({}, props, {\n    id: id,\n    style: style\n  });\n};\n\nvar Flyout = function (props) {\n  props = evaluateProps(props);\n  var userProps = UserProps.getSafeUserProps(props);\n  return /*#__PURE__*/React.cloneElement(props.pathComponent, _objectSpread(_objectSpread(_objectSpread({}, props.events), userProps), {}, {\n    style: props.style,\n    d: getFlyoutPath(props),\n    className: props.className,\n    shapeRendering: props.shapeRendering,\n    role: props.role,\n    transform: props.transform,\n    clipPath: props.clipPath\n  }));\n};\n\nFlyout.propTypes = _objectSpread(_objectSpread({}, CommonProps.primitiveProps), {}, {\n  center: PropTypes.shape({\n    x: PropTypes.number,\n    y: PropTypes.number\n  }),\n  cornerRadius: PropTypes.number,\n  datum: PropTypes.object,\n  dx: PropTypes.number,\n  dy: PropTypes.number,\n  height: PropTypes.number,\n  orientation: PropTypes.oneOf([\"top\", \"bottom\", \"left\", \"right\"]),\n  pathComponent: PropTypes.element,\n  pointerLength: PropTypes.number,\n  pointerWidth: PropTypes.number,\n  width: PropTypes.number,\n  x: PropTypes.number,\n  y: PropTypes.number\n});\nFlyout.defaultProps = {\n  pathComponent: /*#__PURE__*/React.createElement(Path, null),\n  role: \"presentation\",\n  shapeRendering: \"auto\"\n};\nexport default Flyout;", "import _isRegExp from \"lodash/isRegExp\";\nimport _isString from \"lodash/isString\";\nimport _includes from \"lodash/includes\";\nimport _isEmpty from \"lodash/isEmpty\";\nimport _isFunction from \"lodash/isFunction\";\nimport _throttle from \"lodash/throttle\";\nimport _assign from \"lodash/assign\";\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nimport { Collection, Selection, Data, Helpers } from \"victory-core\";\nimport isEqual from \"react-fast-compare\";\nimport Delaunay from \"delaunay-find/lib/index.js\";\nimport React from \"react\";\nvar VoronoiHelpers = {\n  withinBounds: function (props, point) {\n    var width = props.width,\n        height = props.height,\n        polar = props.polar,\n        origin = props.origin,\n        scale = props.scale;\n    var padding = Helpers.getPadding(props, \"voronoiPadding\");\n    var x = point.x,\n        y = point.y;\n\n    if (polar) {\n      var distanceSquared = Math.pow(x - origin.x, 2) + Math.pow(y - origin.y, 2);\n      var radius = Math.max.apply(Math, _toConsumableArray(scale.y.range()));\n      return distanceSquared < Math.pow(radius, 2);\n    }\n\n    return x >= padding.left && x <= width - padding.right && y >= padding.top && y <= height - padding.bottom;\n  },\n  getDatasets: function (props) {\n    var minDomain = {\n      x: Collection.getMinValue(props.domain.x),\n      y: Collection.getMinValue(props.domain.y)\n    };\n    var children = React.Children.toArray(props.children);\n\n    var addMeta = function (data, name, child) {\n      var continuous = child && child.type && child.type.continuous;\n      var style = child ? child.props && child.props.style : props.style;\n      return data.map(function (datum, index) {\n        var _Helpers$getPoint = Helpers.getPoint(datum),\n            x = _Helpers$getPoint.x,\n            y = _Helpers$getPoint.y,\n            y0 = _Helpers$getPoint.y0,\n            x0 = _Helpers$getPoint.x0;\n\n        var voronoiX = (Number(x) + Number(x0)) / 2;\n        var voronoiY = (Number(y) + Number(y0)) / 2;\n        return _assign({\n          _voronoiX: props.voronoiDimension === \"y\" ? minDomain.x : voronoiX,\n          _voronoiY: props.voronoiDimension === \"x\" ? minDomain.y : voronoiY,\n          eventKey: index,\n          childName: name,\n          continuous: continuous,\n          style: style\n        }, datum);\n      });\n    };\n\n    if (props.data) {\n      return addMeta(props.data);\n    }\n\n    var getData = function (childProps) {\n      var data = Data.getData(childProps);\n      return Array.isArray(data) && data.length > 0 ? data : undefined;\n    };\n\n    var iteratee = function (child, childName) {\n      var childProps = child.props || {};\n      var name = childProps.name || childName;\n      var blacklist = props.voronoiBlacklist || [];\n      var blacklistStr = blacklist.filter(_isString);\n      var blacklistRegExp = blacklist.filter(_isRegExp);\n      var isRegExpMatch = blacklistRegExp.some(function (regExp) {\n        return regExp.test(name);\n      });\n\n      if (!Data.isDataComponent(child) || _includes(blacklistStr, name) || isRegExpMatch) {\n        return null;\n      }\n\n      var getChildData = child.type && _isFunction(child.type.getData) ? child.type.getData : getData;\n      var childData = getChildData(child.props);\n      return childData ? addMeta(childData, name, child) : null;\n    };\n\n    return Helpers.reduceChildren(children, iteratee, props);\n  },\n  findPoints: function (datasets, point) {\n    return datasets.filter(function (d) {\n      return point._voronoiX === d._voronoiX && point._voronoiY === d._voronoiY;\n    });\n  },\n  withinRadius: function (point, mousePosition, radius) {\n    if (!point) {\n      return false;\n    }\n\n    if (!radius) {\n      return true;\n    }\n\n    var x = mousePosition.x,\n        y = mousePosition.y;\n    var distanceSquared = Math.pow(x - point[0], 2) + Math.pow(y - point[1], 2);\n    return distanceSquared < Math.pow(radius, 2);\n  },\n  getVoronoiPoints: function (props, mousePosition) {\n    var datasets = this.getDatasets(props);\n    var scaledData = datasets.map(function (d) {\n      var _Helpers$scalePoint = Helpers.scalePoint(props, d),\n          x = _Helpers$scalePoint.x,\n          y = _Helpers$scalePoint.y;\n\n      return [x, y];\n    });\n    var delaunay = Delaunay.from(scaledData);\n    var index = delaunay.find(mousePosition.x, mousePosition.y);\n    var withinRadius = this.withinRadius(scaledData[index], mousePosition, props.radius);\n    var points = withinRadius ? this.findPoints(datasets, datasets[index]) : [];\n    return {\n      points: points,\n      index: index\n    };\n  },\n  getActiveMutations: function (props, point) {\n    var childName = point.childName,\n        continuous = point.continuous;\n    var activateData = props.activateData,\n        activateLabels = props.activateLabels,\n        labels = props.labels;\n\n    if (!activateData && !activateLabels) {\n      return [];\n    }\n\n    var defaultTarget = activateData ? [\"data\"] : [];\n    var targets = labels && !activateLabels ? defaultTarget : defaultTarget.concat(\"labels\");\n\n    if (_isEmpty(targets)) {\n      return [];\n    }\n\n    return targets.map(function (target) {\n      var eventKey = continuous === true && target === \"data\" ? \"all\" : point.eventKey;\n      return {\n        childName: childName,\n        eventKey: eventKey,\n        target: target,\n        mutation: function () {\n          return {\n            active: true\n          };\n        }\n      };\n    });\n  },\n  getInactiveMutations: function (props, point) {\n    var childName = point.childName,\n        continuous = point.continuous;\n    var activateData = props.activateData,\n        activateLabels = props.activateLabels,\n        labels = props.labels;\n\n    if (!activateData && !activateLabels) {\n      return [];\n    }\n\n    var defaultTarget = activateData ? [\"data\"] : [];\n    var targets = labels && !activateLabels ? defaultTarget : defaultTarget.concat(\"labels\");\n\n    if (_isEmpty(targets)) {\n      return [];\n    }\n\n    return targets.map(function (target) {\n      var eventKey = continuous && target === \"data\" ? \"all\" : point.eventKey;\n      return {\n        childName: childName,\n        eventKey: eventKey,\n        target: target,\n        mutation: function () {\n          return null;\n        }\n      };\n    });\n  },\n  // eslint-disable-next-line max-params\n  getParentMutation: function (activePoints, mousePosition, parentSVG, vIndex) {\n    return [{\n      target: \"parent\",\n      eventKey: \"parent\",\n      mutation: function () {\n        return {\n          activePoints: activePoints,\n          mousePosition: mousePosition,\n          parentSVG: parentSVG,\n          vIndex: vIndex\n        };\n      }\n    }];\n  },\n  onActivated: function (props, points) {\n    if (_isFunction(props.onActivated)) {\n      props.onActivated(points, props);\n    }\n  },\n  onDeactivated: function (props, points) {\n    if (_isFunction(props.onDeactivated)) {\n      props.onDeactivated(points, props);\n    }\n  },\n  onMouseLeave: function (evt, targetProps) {\n    var _this = this,\n        _this$getParentMutati;\n\n    var activePoints = targetProps.activePoints || [];\n    this.onDeactivated(targetProps, activePoints);\n    var inactiveMutations = activePoints.length ? activePoints.map(function (point) {\n      return _this.getInactiveMutations(targetProps, point);\n    }) : [];\n    return (_this$getParentMutati = this.getParentMutation([])).concat.apply(_this$getParentMutati, _toConsumableArray(inactiveMutations));\n  },\n  onMouseMove: function (evt, targetProps) {\n    var _this2 = this;\n\n    // eslint-disable-line max-statements\n    var activePoints = targetProps.activePoints || [];\n    var parentSVG = targetProps.parentSVG || Selection.getParentSVG(evt);\n    var mousePosition = Selection.getSVGEventCoordinates(evt, parentSVG);\n\n    if (!this.withinBounds(targetProps, mousePosition)) {\n      var _this$getParentMutati2;\n\n      this.onDeactivated(targetProps, activePoints);\n\n      var _inactiveMutations = activePoints.length ? activePoints.map(function (point) {\n        return _this2.getInactiveMutations(targetProps, point);\n      }) : [];\n\n      return (_this$getParentMutati2 = this.getParentMutation([], mousePosition, parentSVG)).concat.apply(_this$getParentMutati2, _toConsumableArray(_inactiveMutations));\n    }\n\n    var _this$getVoronoiPoint = this.getVoronoiPoints(targetProps, mousePosition),\n        _this$getVoronoiPoint2 = _this$getVoronoiPoint.points,\n        points = _this$getVoronoiPoint2 === void 0 ? [] : _this$getVoronoiPoint2,\n        index = _this$getVoronoiPoint.index;\n\n    var parentMutations = this.getParentMutation(points, mousePosition, parentSVG, index);\n\n    if (activePoints.length && isEqual(points, activePoints)) {\n      return parentMutations;\n    }\n\n    this.onActivated(targetProps, points);\n    this.onDeactivated(targetProps, activePoints);\n    var activeMutations = points.length ? points.map(function (point) {\n      return _this2.getActiveMutations(targetProps, point);\n    }) : [];\n    var inactiveMutations = activePoints.length ? activePoints.map(function (point) {\n      return _this2.getInactiveMutations(targetProps, point);\n    }) : [];\n    return parentMutations.concat.apply(parentMutations, _toConsumableArray(inactiveMutations).concat(_toConsumableArray(activeMutations)));\n  }\n};\nexport default {\n  onMouseLeave: VoronoiHelpers.onMouseLeave.bind(VoronoiHelpers),\n  onMouseMove: _throttle(VoronoiHelpers.onMouseMove.bind(VoronoiHelpers), 32, // eslint-disable-line no-magic-numbers\n  {\n    leading: true,\n    trailing: false\n  })\n};", "function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (typeof call === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { getBaseProps, getDimensions } from \"./helper-methods\";\nimport { PropTypes as CustomPropTypes, addEvents, Helpers, VictoryLabel, VictoryContainer, VictoryTheme, Point, Border } from \"victory-core\";\nvar fallbackProps = {\n  orientation: \"vertical\",\n  titleOrientation: \"top\",\n  width: 450,\n  height: 300,\n  x: 0,\n  y: 0\n};\nvar defaultLegendData = [{\n  name: \"Series 1\"\n}, {\n  name: \"Series 2\"\n}];\n\nvar VictoryLegend = /*#__PURE__*/function (_React$Component) {\n  _inherits(VictoryLegend, _React$Component);\n\n  var _super = _createSuper(VictoryLegend);\n\n  function VictoryLegend() {\n    _classCallCheck(this, VictoryLegend);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(VictoryLegend, [{\n    key: \"renderChildren\",\n    value: function renderChildren(props) {\n      var _this = this;\n\n      var dataComponent = props.dataComponent,\n          labelComponent = props.labelComponent,\n          title = props.title;\n      var dataComponents = this.dataKeys.map(function (_dataKey, index) {\n        if (_dataKey === \"all\") {\n          return undefined;\n        }\n\n        var dataProps = _this.getComponentProps(dataComponent, \"data\", index);\n\n        return /*#__PURE__*/React.cloneElement(dataComponent, dataProps);\n      }).filter(Boolean);\n      var labelComponents = this.dataKeys.map(function (_dataKey, index) {\n        if (_dataKey === \"all\") {\n          return undefined;\n        }\n\n        var labelProps = _this.getComponentProps(labelComponent, \"labels\", index);\n\n        if (labelProps.text !== undefined && labelProps.text !== null) {\n          return /*#__PURE__*/React.cloneElement(labelComponent, labelProps);\n        }\n\n        return undefined;\n      }).filter(Boolean);\n      var borderProps = this.getComponentProps(props.borderComponent, \"border\", \"all\");\n      var borderComponent = /*#__PURE__*/React.cloneElement(props.borderComponent, borderProps);\n\n      if (title) {\n        var titleProps = this.getComponentProps(props.title, \"title\", \"all\");\n        var titleComponent = /*#__PURE__*/React.cloneElement(props.titleComponent, titleProps);\n        return [borderComponent].concat(_toConsumableArray(dataComponents), [titleComponent], _toConsumableArray(labelComponents));\n      }\n\n      return [borderComponent].concat(_toConsumableArray(dataComponents), _toConsumableArray(labelComponents));\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var role = this.constructor.role;\n      var props = Helpers.modifyProps(this.props, fallbackProps, role);\n      var children = [this.renderChildren(props)];\n      return props.standalone ? this.renderContainer(props.containerComponent, children) : /*#__PURE__*/React.cloneElement(props.groupComponent, {}, children);\n    }\n  }]);\n\n  return VictoryLegend;\n}(React.Component);\n\nVictoryLegend.displayName = \"VictoryLegend\";\nVictoryLegend.role = \"legend\";\nVictoryLegend.propTypes = {\n  borderComponent: PropTypes.element,\n  borderPadding: PropTypes.oneOfType([PropTypes.number, PropTypes.shape({\n    top: PropTypes.number,\n    bottom: PropTypes.number,\n    left: PropTypes.number,\n    right: PropTypes.number\n  })]),\n  centerTitle: PropTypes.bool,\n  colorScale: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.string), PropTypes.oneOf([\"grayscale\", \"qualitative\", \"heatmap\", \"warm\", \"cool\", \"red\", \"green\", \"blue\"])]),\n  containerComponent: PropTypes.element,\n  data: PropTypes.arrayOf(PropTypes.shape({\n    name: PropTypes.string.isRequired,\n    label: PropTypes.object,\n    symbol: PropTypes.object\n  })),\n  dataComponent: PropTypes.element,\n  eventKey: PropTypes.oneOfType([PropTypes.func, CustomPropTypes.allOfType([CustomPropTypes.integer, CustomPropTypes.nonNegative]), PropTypes.string]),\n  events: PropTypes.arrayOf(PropTypes.shape({\n    target: PropTypes.oneOf([\"data\", \"labels\", \"parent\"]),\n    eventKey: PropTypes.oneOfType([PropTypes.array, CustomPropTypes.allOfType([CustomPropTypes.integer, CustomPropTypes.nonNegative]), PropTypes.string]),\n    eventHandlers: PropTypes.object\n  })),\n  externalEventMutations: PropTypes.arrayOf(PropTypes.shape({\n    callback: PropTypes.func,\n    childName: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),\n    eventKey: PropTypes.oneOfType([PropTypes.array, CustomPropTypes.allOfType([CustomPropTypes.integer, CustomPropTypes.nonNegative]), PropTypes.string]),\n    mutation: PropTypes.func,\n    target: PropTypes.oneOfType([PropTypes.string, PropTypes.array])\n  })),\n  groupComponent: PropTypes.element,\n  gutter: PropTypes.oneOfType([PropTypes.number, PropTypes.shape({\n    left: PropTypes.number,\n    right: PropTypes.number\n  })]),\n  height: CustomPropTypes.nonNegative,\n  itemsPerRow: CustomPropTypes.nonNegative,\n  labelComponent: PropTypes.element,\n  name: PropTypes.string,\n  orientation: PropTypes.oneOf([\"horizontal\", \"vertical\"]),\n  padding: PropTypes.oneOfType([PropTypes.number, PropTypes.shape({\n    top: PropTypes.number,\n    bottom: PropTypes.number,\n    left: PropTypes.number,\n    right: PropTypes.number\n  })]),\n  rowGutter: PropTypes.oneOfType([PropTypes.number, PropTypes.shape({\n    top: PropTypes.number,\n    bottom: PropTypes.number\n  })]),\n  sharedEvents: PropTypes.shape({\n    events: PropTypes.array,\n    getEventState: PropTypes.func\n  }),\n  standalone: PropTypes.bool,\n  style: PropTypes.shape({\n    border: PropTypes.object,\n    data: PropTypes.object,\n    labels: PropTypes.object,\n    parent: PropTypes.object,\n    title: PropTypes.object\n  }),\n  symbolSpacer: PropTypes.number,\n  theme: PropTypes.object,\n  title: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),\n  titleComponent: PropTypes.element,\n  titleOrientation: PropTypes.oneOf([\"top\", \"bottom\", \"left\", \"right\"]),\n  width: CustomPropTypes.nonNegative,\n  x: CustomPropTypes.nonNegative,\n  y: CustomPropTypes.nonNegative\n};\nVictoryLegend.defaultProps = {\n  borderComponent: /*#__PURE__*/React.createElement(Border, null),\n  data: defaultLegendData,\n  containerComponent: /*#__PURE__*/React.createElement(VictoryContainer, null),\n  dataComponent: /*#__PURE__*/React.createElement(Point, null),\n  groupComponent: /*#__PURE__*/React.createElement(\"g\", null),\n  labelComponent: /*#__PURE__*/React.createElement(VictoryLabel, null),\n  standalone: true,\n  theme: VictoryTheme.grayscale,\n  titleComponent: /*#__PURE__*/React.createElement(VictoryLabel, null)\n};\n\nVictoryLegend.getBaseProps = function (props) {\n  return getBaseProps(props, fallbackProps);\n};\n\nVictoryLegend.getDimensions = function (props) {\n  return getDimensions(props, fallbackProps);\n};\n\nVictoryLegend.expectedComponents = [\"borderComponent\", \"containerComponent\", \"dataComponent\", \"groupComponent\", \"labelComponent\", \"titleComponent\"];\nexport default addEvents(VictoryLegend);", "import _isNil from \"lodash/isNil\";\nimport _range from \"lodash/range\";\nimport _sum from \"lodash/sum\";\nimport _keys from \"lodash/keys\";\nimport _groupBy from \"lodash/groupBy\";\nimport _assign from \"lodash/assign\";\nimport _defaults from \"lodash/defaults\";\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Helpers, Style, TextSize } from \"victory-core\";\n\nvar getColorScale = function (props) {\n  var colorScale = props.colorScale;\n  return typeof colorScale === \"string\" ? Style.getColorScale(colorScale) : colorScale || [];\n};\n\nvar getLabelStyles = function (props) {\n  var data = props.data,\n      style = props.style;\n  return data.map(function (datum, index) {\n    var baseLabelStyles = _defaults({}, datum.labels, style.labels);\n\n    return Helpers.evaluateStyle(baseLabelStyles, {\n      datum: datum,\n      index: index,\n      data: data\n    });\n  });\n};\n\nvar getStyles = function (props, styleObject) {\n  var style = props.style || {};\n  styleObject = styleObject || {};\n  var parentStyleProps = {\n    height: \"100%\",\n    width: \"100%\"\n  };\n  return {\n    parent: _defaults(style.parent, styleObject.parent, parentStyleProps),\n    data: _defaults({}, style.data, styleObject.data),\n    labels: _defaults({}, style.labels, styleObject.labels),\n    border: _defaults({}, style.border, styleObject.border),\n    title: _defaults({}, style.title, styleObject.title)\n  };\n};\n\nvar getCalculatedValues = function (props) {\n  var orientation = props.orientation,\n      theme = props.theme;\n  var defaultStyles = theme && theme.legend && theme.legend.style ? theme.legend.style : {};\n  var style = getStyles(props, defaultStyles);\n  var colorScale = getColorScale(props);\n  var isHorizontal = orientation === \"horizontal\";\n  var borderPadding = Helpers.getPadding({\n    padding: props.borderPadding\n  });\n  return _assign({}, props, {\n    style: style,\n    isHorizontal: isHorizontal,\n    colorScale: colorScale,\n    borderPadding: borderPadding\n  });\n};\n\nvar getColumn = function (props, index) {\n  var itemsPerRow = props.itemsPerRow,\n      isHorizontal = props.isHorizontal;\n\n  if (!itemsPerRow) {\n    return isHorizontal ? index : 0;\n  }\n\n  return isHorizontal ? index % itemsPerRow : Math.floor(index / itemsPerRow);\n};\n\nvar getRow = function (props, index) {\n  var itemsPerRow = props.itemsPerRow,\n      isHorizontal = props.isHorizontal;\n\n  if (!itemsPerRow) {\n    return isHorizontal ? 0 : index;\n  }\n\n  return isHorizontal ? Math.floor(index / itemsPerRow) : index % itemsPerRow;\n};\n\nvar groupData = function (props) {\n  var data = props.data;\n  var style = props.style && props.style.data || {};\n  var labelStyles = getLabelStyles(props);\n  return data.map(function (datum, index) {\n    var symbol = datum.symbol || {};\n    var fontSize = labelStyles[index].fontSize; // eslint-disable-next-line no-magic-numbers\n\n    var size = symbol.size || style.size || fontSize / 2.5;\n    var symbolSpacer = props.symbolSpacer || Math.max(size, fontSize);\n    return _objectSpread(_objectSpread({}, datum), {}, {\n      size: size,\n      symbolSpacer: symbolSpacer,\n      fontSize: fontSize,\n      textSize: TextSize.approximateTextSize(datum.name, labelStyles[index]),\n      column: getColumn(props, index),\n      row: getRow(props, index)\n    });\n  });\n};\n\nvar getColumnWidths = function (props, data) {\n  var gutter = props.gutter || {};\n  var gutterWidth = typeof gutter === \"object\" ? (gutter.left || 0) + (gutter.right || 0) : gutter || 0;\n\n  var dataByColumn = _groupBy(data, \"column\");\n\n  var columns = _keys(dataByColumn);\n\n  return columns.reduce(function (memo, curr, index) {\n    var lengths = dataByColumn[curr].map(function (d) {\n      return d.textSize.width + d.size + d.symbolSpacer + gutterWidth;\n    });\n    memo[index] = Math.max.apply(Math, _toConsumableArray(lengths));\n    return memo;\n  }, []);\n};\n\nvar getRowHeights = function (props, data) {\n  var gutter = props.rowGutter || {};\n  var gutterHeight = typeof gutter === \"object\" ? (gutter.top || 0) + (gutter.bottom || 0) : gutter || 0;\n\n  var dataByRow = _groupBy(data, \"row\");\n\n  return _keys(dataByRow).reduce(function (memo, curr, index) {\n    var rows = dataByRow[curr];\n    var lengths = rows.map(function (d) {\n      return d.textSize.height + d.symbolSpacer + gutterHeight;\n    });\n    memo[index] = Math.max.apply(Math, _toConsumableArray(lengths));\n    return memo;\n  }, []);\n};\n\nvar getTitleDimensions = function (props) {\n  var style = props.style && props.style.title || {};\n  var textSize = TextSize.approximateTextSize(props.title, style);\n  var padding = style.padding || 0;\n  return {\n    height: textSize.height + 2 * padding || 0,\n    width: textSize.width + 2 * padding || 0\n  };\n};\n\nvar getOffset = function (datum, rowHeights, columnWidths) {\n  var column = datum.column,\n      row = datum.row;\n  return {\n    x: _range(column).reduce(function (memo, curr) {\n      memo += columnWidths[curr];\n      return memo;\n    }, 0),\n    y: _range(row).reduce(function (memo, curr) {\n      memo += rowHeights[curr];\n      return memo;\n    }, 0)\n  };\n};\n\nvar getAnchors = function (titleOrientation, centerTitle) {\n  var standardAnchors = {\n    textAnchor: titleOrientation === \"right\" ? \"end\" : \"start\",\n    verticalAnchor: titleOrientation === \"bottom\" ? \"end\" : \"start\"\n  };\n\n  if (centerTitle) {\n    var horizontal = titleOrientation === \"top\" || titleOrientation === \"bottom\";\n    return {\n      textAnchor: horizontal ? \"middle\" : standardAnchors.textAnchor,\n      verticalAnchor: horizontal ? standardAnchors.verticalAnchor : \"middle\"\n    };\n  }\n\n  return standardAnchors;\n};\n\nvar getTitleStyle = function (props) {\n  var titleOrientation = props.titleOrientation,\n      centerTitle = props.centerTitle,\n      titleComponent = props.titleComponent;\n  var baseStyle = props.style && props.style.title || {};\n  var componentStyle = titleComponent.props && titleComponent.props.style || {};\n  var anchors = getAnchors(titleOrientation, centerTitle);\n  return Array.isArray(componentStyle) ? componentStyle.map(function (obj) {\n    return _defaults({}, obj, baseStyle, anchors);\n  }) : _defaults({}, componentStyle, baseStyle, anchors);\n}; // eslint-disable-next-line complexity\n\n\nvar getTitleProps = function (props, borderProps) {\n  var title = props.title,\n      titleOrientation = props.titleOrientation,\n      centerTitle = props.centerTitle,\n      borderPadding = props.borderPadding;\n  var height = borderProps.height,\n      width = borderProps.width;\n  var style = getTitleStyle(props);\n  var padding = Array.isArray(style) ? style[0].padding : style.padding;\n  var horizontal = titleOrientation === \"top\" || titleOrientation === \"bottom\";\n  var xOrientation = titleOrientation === \"bottom\" ? \"bottom\" : \"top\";\n  var yOrientation = titleOrientation === \"right\" ? \"right\" : \"left\";\n  var standardPadding = {\n    x: centerTitle ? width / 2 : borderPadding[xOrientation] + (padding || 0),\n    y: centerTitle ? height / 2 : borderPadding[yOrientation] + (padding || 0)\n  };\n\n  var getPadding = function () {\n    return borderPadding[titleOrientation] + (padding || 0);\n  };\n\n  var xOffset = horizontal ? standardPadding.x : getPadding();\n  var yOffset = horizontal ? getPadding() : standardPadding.y;\n  return {\n    x: titleOrientation === \"right\" ? props.x + width - xOffset : props.x + xOffset,\n    y: titleOrientation === \"bottom\" ? props.y + height - yOffset : props.y + yOffset,\n    style: style,\n    text: title\n  };\n};\n\nvar getBorderProps = function (props, contentHeight, contentWidth) {\n  var x = props.x,\n      y = props.y,\n      borderPadding = props.borderPadding,\n      style = props.style;\n  var height = (contentHeight || 0) + borderPadding.top + borderPadding.bottom;\n  var width = (contentWidth || 0) + borderPadding.left + borderPadding.right;\n  return {\n    x: x,\n    y: y,\n    height: height,\n    width: width,\n    style: _assign({\n      fill: \"none\"\n    }, style.border)\n  };\n};\n\nexport var getDimensions = function (props, fallbackProps) {\n  var modifiedProps = Helpers.modifyProps(props, fallbackProps, \"legend\");\n  props = _assign({}, modifiedProps, getCalculatedValues(modifiedProps));\n  var _props = props,\n      title = _props.title,\n      titleOrientation = _props.titleOrientation;\n  var groupedData = groupData(props);\n  var columnWidths = getColumnWidths(props, groupedData);\n  var rowHeights = getRowHeights(props, groupedData);\n  var titleDimensions = title ? getTitleDimensions(props) : {\n    height: 0,\n    width: 0\n  };\n  return {\n    height: titleOrientation === \"left\" || titleOrientation === \"right\" ? Math.max(_sum(rowHeights), titleDimensions.height) : _sum(rowHeights) + titleDimensions.height,\n    width: titleOrientation === \"left\" || titleOrientation === \"right\" ? _sum(columnWidths) + titleDimensions.width : Math.max(_sum(columnWidths), titleDimensions.width)\n  };\n};\nexport var getBaseProps = function (props, fallbackProps) {\n  var modifiedProps = Helpers.modifyProps(props, fallbackProps, \"legend\");\n  props = _assign({}, modifiedProps, getCalculatedValues(modifiedProps));\n  var _props2 = props,\n      data = _props2.data,\n      standalone = _props2.standalone,\n      theme = _props2.theme,\n      padding = _props2.padding,\n      style = _props2.style,\n      colorScale = _props2.colorScale,\n      gutter = _props2.gutter,\n      rowGutter = _props2.rowGutter,\n      borderPadding = _props2.borderPadding,\n      title = _props2.title,\n      titleOrientation = _props2.titleOrientation,\n      name = _props2.name,\n      _props2$x = _props2.x,\n      x = _props2$x === void 0 ? 0 : _props2$x,\n      _props2$y = _props2.y,\n      y = _props2$y === void 0 ? 0 : _props2$y;\n  var groupedData = groupData(props);\n  var columnWidths = getColumnWidths(props, groupedData);\n  var rowHeights = getRowHeights(props, groupedData);\n  var labelStyles = getLabelStyles(props);\n  var titleDimensions = title ? getTitleDimensions(props) : {\n    height: 0,\n    width: 0\n  };\n  var titleOffset = {\n    x: titleOrientation === \"left\" ? titleDimensions.width : 0,\n    y: titleOrientation === \"top\" ? titleDimensions.height : 0\n  };\n  var gutterOffset = {\n    x: gutter && typeof gutter === \"object\" ? gutter.left || 0 : 0,\n    y: rowGutter && typeof rowGutter === \"object\" ? rowGutter.top || 0 : 0\n  };\n\n  var _getDimensions = getDimensions(props, fallbackProps),\n      height = _getDimensions.height,\n      width = _getDimensions.width;\n\n  var borderProps = getBorderProps(props, height, width);\n  var titleProps = getTitleProps(props, borderProps);\n  var initialProps = {\n    parent: {\n      data: data,\n      standalone: standalone,\n      theme: theme,\n      padding: padding,\n      name: name,\n      height: props.height,\n      width: props.width,\n      style: style.parent\n    },\n    all: {\n      border: borderProps,\n      title: titleProps\n    }\n  };\n  return groupedData.reduce(function (childProps, datum, i) {\n    var color = colorScale[i % colorScale.length];\n\n    var dataStyle = _defaults({}, datum.symbol, style.data, {\n      fill: color\n    });\n\n    var eventKey = !_isNil(datum.eventKey) ? datum.eventKey : i;\n    var offset = getOffset(datum, rowHeights, columnWidths);\n    var originY = y + borderPadding.top + datum.symbolSpacer;\n    var originX = x + borderPadding.left + datum.symbolSpacer;\n    var dataProps = {\n      index: i,\n      data: data,\n      datum: datum,\n      symbol: dataStyle.type || dataStyle.symbol || \"circle\",\n      size: datum.size,\n      style: dataStyle,\n      y: originY + offset.y + titleOffset.y + gutterOffset.y,\n      x: originX + offset.x + titleOffset.x + gutterOffset.x\n    };\n    var labelProps = {\n      datum: datum,\n      data: data,\n      text: datum.name,\n      style: labelStyles[i],\n      y: dataProps.y,\n      x: dataProps.x + datum.symbolSpacer + datum.size / 2\n    };\n    childProps[eventKey] = {\n      data: dataProps,\n      labels: labelProps\n    };\n    return childProps;\n  }, initialProps);\n};", "function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (typeof call === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport PropTypes from \"prop-types\";\nimport React from \"react\";\nimport { getBaseProps } from \"./helper-methods\";\nimport { Curve } from \"./curve\";\nimport { PropTypes as CustomPropTypes, Helpers, VictoryLabel, addEvents, VictoryContainer, VictoryTheme, DefaultTransitions, VictoryClipContainer, Data, Domain, CommonProps, UserProps } from \"victory-core\";\nvar fallbackProps = {\n  width: 450,\n  height: 300,\n  padding: 50,\n  interpolation: \"linear\"\n};\nvar options = {\n  components: [{\n    name: \"parent\",\n    index: \"parent\"\n  }, {\n    name: \"data\",\n    index: \"all\"\n  }, {\n    name: \"labels\"\n  }]\n}; // eslint-disable-next-line @typescript-eslint/no-empty-interface\n\nvar VictoryLineBase = /*#__PURE__*/function (_React$Component) {\n  _inherits(VictoryLineBase, _React$Component);\n\n  var _super = _createSuper(VictoryLineBase);\n\n  function VictoryLineBase(props) {\n    _classCallCheck(this, VictoryLineBase);\n\n    return _super.call(this, props);\n  }\n\n  _createClass(VictoryLineBase, [{\n    key: \"shouldAnimate\",\n    value: // Overridden in native versions\n    function shouldAnimate() {\n      return !!this.props.animate;\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var animationWhitelist = VictoryLineBase.animationWhitelist,\n          role = VictoryLineBase.role;\n      var props = Helpers.modifyProps(this.props, fallbackProps, role);\n\n      if (this.shouldAnimate()) {\n        return this.animateComponent(props, animationWhitelist);\n      }\n\n      var children = this.renderContinuousData(props);\n      var component = props.standalone ? this.renderContainer(props.containerComponent, children) : children;\n      return UserProps.withSafeUserProps(component, props);\n    }\n  }]);\n\n  return VictoryLineBase;\n}(React.Component);\n\nVictoryLineBase.animationWhitelist = [\"data\", \"domain\", \"height\", \"padding\", \"samples\", \"style\", \"width\"];\nVictoryLineBase.displayName = \"VictoryLine\";\nVictoryLineBase.role = \"line\";\nVictoryLineBase.defaultTransitions = DefaultTransitions.continuousTransitions();\nVictoryLineBase.defaultPolarTransitions = DefaultTransitions.continuousPolarTransitions();\nVictoryLineBase.continuous = true;\nVictoryLineBase.propTypes = _objectSpread(_objectSpread(_objectSpread({}, CommonProps.baseProps), CommonProps.dataProps), {}, {\n  interpolation: PropTypes.oneOfType([PropTypes.oneOf([\"basis\", \"bundle\", \"cardinal\", \"catmullRom\", \"linear\", \"monotoneX\", \"monotoneY\", \"natural\", \"step\", \"stepAfter\", \"stepBefore\"]), PropTypes.func]),\n  label: CustomPropTypes.deprecated(PropTypes.string, \"Use `labels` instead for individual data labels\")\n});\nVictoryLineBase.defaultProps = {\n  containerComponent: /*#__PURE__*/React.createElement(VictoryContainer, null),\n  dataComponent: /*#__PURE__*/React.createElement(Curve, null),\n  labelComponent: /*#__PURE__*/React.createElement(VictoryLabel, {\n    renderInPortal: true\n  }),\n  groupComponent: /*#__PURE__*/React.createElement(VictoryClipContainer, null),\n  samples: 50,\n  sortKey: \"x\",\n  sortOrder: \"ascending\",\n  standalone: true,\n  theme: VictoryTheme.grayscale\n};\nVictoryLineBase.getDomain = Domain.getDomain;\nVictoryLineBase.getData = Data.getData;\n\nVictoryLineBase.getBaseProps = function (props) {\n  return getBaseProps(props, fallbackProps);\n};\n\nVictoryLineBase.expectedComponents = [\"dataComponent\", \"labelComponent\", \"groupComponent\", \"containerComponent\"];\nexport var VictoryLine = addEvents(VictoryLineBase, options);", "import _isNil from \"lodash/isNil\";\nimport _assign from \"lodash/assign\";\nimport { Helpers, LabelHelpers, Data, Domain, Scale } from \"victory-core\";\n\nvar getCalculatedValues = function (props) {\n  var data = Data.getData(props);\n\n  if (data.length < 2) {\n    data = [];\n  }\n\n  var range = {\n    x: Helpers.getRange(props, \"x\"),\n    y: Helpers.getRange(props, \"y\")\n  };\n  var domain = {\n    x: Domain.getDomain(props, \"x\"),\n    y: Domain.getDomain(props, \"y\")\n  };\n  var scale = {\n    x: Scale.getBaseScale(props, \"x\").domain(domain.x).range(props.horizontal ? range.y : range.x),\n    y: Scale.getBaseScale(props, \"y\").domain(domain.y).range(props.horizontal ? range.x : range.y)\n  };\n  var origin = props.polar ? props.origin || Helpers.getPolarOrigin(props) : undefined;\n  var defaultStyles = Helpers.getDefaultStyles(props, \"line\");\n  var style = Helpers.getStyles(props.style, defaultStyles);\n  return {\n    domain: domain,\n    data: data,\n    scale: scale,\n    style: style,\n    origin: origin\n  };\n};\n\nexport var getBaseProps = function (props, fallbackProps) {\n  var modifiedProps = Helpers.modifyProps(props, fallbackProps, \"line\");\n  props = _assign({}, modifiedProps, getCalculatedValues(modifiedProps));\n  var _props = props,\n      data = _props.data,\n      domain = _props.domain,\n      events = _props.events,\n      groupComponent = _props.groupComponent,\n      height = _props.height,\n      horizontal = _props.horizontal,\n      interpolation = _props.interpolation,\n      origin = _props.origin,\n      padding = _props.padding,\n      polar = _props.polar,\n      scale = _props.scale,\n      sharedEvents = _props.sharedEvents,\n      standalone = _props.standalone,\n      style = _props.style,\n      theme = _props.theme,\n      width = _props.width,\n      labels = _props.labels,\n      name = _props.name,\n      disableInlineStyles = _props.disableInlineStyles;\n  var initialChildProps = {\n    parent: {\n      style: style.parent,\n      scale: scale,\n      data: data,\n      height: height,\n      width: width,\n      name: name,\n      domain: domain,\n      standalone: standalone,\n      polar: polar,\n      origin: origin,\n      padding: padding,\n      horizontal: horizontal\n    },\n    all: {\n      data: {\n        horizontal: horizontal,\n        polar: polar,\n        origin: origin,\n        scale: scale,\n        data: data,\n        interpolation: interpolation,\n        groupComponent: groupComponent,\n        style: disableInlineStyles ? {} : style.data,\n        theme: theme,\n        disableInlineStyles: disableInlineStyles\n      }\n    }\n  };\n  return data.reduce(function (childProps, datum, index) {\n    var text = LabelHelpers.getText(props, datum, index);\n\n    if (text !== undefined && text !== null || labels && (events || sharedEvents)) {\n      var eventKey = !_isNil(datum.eventKey) ? datum.eventKey : index;\n      childProps[eventKey] = {\n        labels: LabelHelpers.getProps(props, index)\n      };\n    }\n\n    return childProps;\n  }, initialChildProps);\n};", "import _assign from \"lodash/assign\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n/* eslint no-magic-numbers: [\"error\", { \"ignore\": [-1, 0, 1, 2] }]*/\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Helpers, CommonProps, Path, LineHelpers, UserProps } from \"victory-core\";\n\nvar evaluateProps = function (props) {\n  /**\n   * Potential evaluated props are:\n   * `ariaLabel`\n   * `id`\n   * `style`\n   * `tabIndex`\n   */\n  var ariaLabel = Helpers.evaluateProp(props.ariaLabel, props);\n  var id = Helpers.evaluateProp(props.id, props);\n  var style = Helpers.evaluateStyle(_assign({\n    fill: \"none\",\n    stroke: \"black\",\n    pointerEvents: \"stroke\"\n  }, props.style), props);\n  var tabIndex = Helpers.evaluateProp(props.tabIndex, props);\n  return _assign({}, props, {\n    ariaLabel: ariaLabel,\n    id: id,\n    style: style,\n    tabIndex: tabIndex\n  });\n};\n\nexport var Curve = function (props) {\n  props = evaluateProps(props);\n  var userProps = UserProps.getSafeUserProps(props);\n  var _props = props,\n      polar = _props.polar,\n      origin = _props.origin;\n  var lineFunction = LineHelpers.getLineFunction(props);\n  var defaultTransform = polar && origin ? \"translate(\".concat(origin.x, \", \").concat(origin.y, \")\") : undefined;\n  var d = lineFunction(props.data);\n  return /*#__PURE__*/React.cloneElement(props.pathComponent, _objectSpread(_objectSpread(_objectSpread({}, props.events), userProps), {}, {\n    \"aria-label\": props.ariaLabel,\n    d: d,\n    style: props.style,\n    transform: props.transform || defaultTransform,\n    className: props.className,\n    role: props.role,\n    shapeRendering: props.shapeRendering,\n    clipPath: props.clipPath,\n    tabIndex: props.tabIndex\n  }));\n};\nCurve.propTypes = _objectSpread(_objectSpread({}, CommonProps.primitiveProps), {}, {\n  interpolation: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n  openCurve: PropTypes.bool,\n  origin: PropTypes.shape({\n    x: PropTypes.number.isRequired,\n    y: PropTypes.number.isRequired\n  }),\n  pathComponent: PropTypes.element,\n  polar: PropTypes.bool\n});\nCurve.defaultProps = {\n  pathComponent: /*#__PURE__*/React.createElement(Path, null),\n  role: \"presentation\",\n  shapeRendering: \"auto\"\n};", "function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (typeof call === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport PropTypes from \"prop-types\";\nimport React from \"react\";\nimport { PropTypes as CustomPropTypes, Helpers, VictoryLabel, addEvents, CommonProps, VictoryContainer, VictoryTheme, DefaultTransitions, Data, Domain, Point, UserProps } from \"victory-core\";\nimport { getBaseProps } from \"./helper-methods\";\nvar fallbackProps = {\n  width: 450,\n  height: 300,\n  padding: 50,\n  size: 3,\n  symbol: \"circle\"\n};\n\n/**\n * Draw area charts with React. VictoryArea is a composable component, so it doesn't include axes.\n * Add VictoryArea as a child of VictoryChart for a complete chart.\n */\nvar VictoryScatterBase = /*#__PURE__*/function (_React$Component) {\n  _inherits(VictoryScatterBase, _React$Component);\n\n  var _super = _createSuper(VictoryScatterBase);\n\n  function VictoryScatterBase() {\n    _classCallCheck(this, VictoryScatterBase);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(VictoryScatterBase, [{\n    key: \"shouldAnimate\",\n    value: // Overridden in native versions\n    function shouldAnimate() {\n      return !!this.props.animate;\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var animationWhitelist = VictoryScatter.animationWhitelist,\n          role = VictoryScatter.role;\n      var props = Helpers.modifyProps(this.props, fallbackProps, role);\n\n      if (this.shouldAnimate()) {\n        return this.animateComponent(props, animationWhitelist);\n      }\n\n      var children = this.renderData(props);\n      var component = props.standalone ? this.renderContainer(props.containerComponent, children) : children;\n      return UserProps.withSafeUserProps(component, props);\n    }\n  }]);\n\n  return VictoryScatterBase;\n}(React.Component);\n\nVictoryScatterBase.animationWhitelist = [\"data\", \"domain\", \"height\", \"maxBubbleSize\", \"padding\", \"samples\", \"size\", \"style\", \"width\"];\nVictoryScatterBase.displayName = \"VictoryScatter\";\nVictoryScatterBase.role = \"scatter\";\nVictoryScatterBase.defaultTransitions = DefaultTransitions.discreteTransitions();\nVictoryScatterBase.propTypes = _objectSpread(_objectSpread(_objectSpread({}, CommonProps.baseProps), CommonProps.dataProps), {}, {\n  bubbleProperty: PropTypes.string,\n  maxBubbleSize: CustomPropTypes.nonNegative,\n  minBubbleSize: CustomPropTypes.nonNegative,\n  size: PropTypes.oneOfType([CustomPropTypes.nonNegative, PropTypes.func]),\n  symbol: PropTypes.oneOfType([PropTypes.oneOf([\"circle\", \"cross\", \"diamond\", \"plus\", \"minus\", \"square\", \"star\", \"triangleDown\", \"triangleUp\"]), PropTypes.func])\n});\nVictoryScatterBase.defaultProps = {\n  containerComponent: /*#__PURE__*/React.createElement(VictoryContainer, null),\n  dataComponent: /*#__PURE__*/React.createElement(Point, null),\n  labelComponent: /*#__PURE__*/React.createElement(VictoryLabel, null),\n  groupComponent: /*#__PURE__*/React.createElement(\"g\", null),\n  samples: 50,\n  sortOrder: \"ascending\",\n  standalone: true,\n  theme: VictoryTheme.grayscale\n};\nVictoryScatterBase.getDomain = Domain.getDomain;\nVictoryScatterBase.getData = Data.getData;\n\nVictoryScatterBase.getBaseProps = function (props) {\n  return getBaseProps(props, fallbackProps);\n};\n\nVictoryScatterBase.expectedComponents = [\"dataComponent\", \"labelComponent\", \"groupComponent\", \"containerComponent\"];\nexport var VictoryScatter = addEvents(VictoryScatterBase);", "import _isNil from \"lodash/isNil\";\nimport _values from \"lodash/values\";\nimport _assign from \"lodash/assign\";\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nimport { Helpers, LabelHelpers, Data, Domain, Scale } from \"victory-core\";\nexport var getSymbol = function (data, props) {\n  if (props.bubbleProperty) {\n    return \"circle\";\n  }\n\n  return data.symbol || props.symbol;\n};\nexport var getBubbleSize = function (datum, props) {\n  var data = props.data,\n      z = props.z,\n      maxBubbleSize = props.maxBubbleSize,\n      minBubbleSize = props.minBubbleSize;\n  var zData = data.map(function (point) {\n    return point[z];\n  });\n  var zMin = Math.min.apply(Math, _toConsumableArray(zData));\n  var zMax = Math.max.apply(Math, _toConsumableArray(zData));\n\n  var getMaxRadius = function () {\n    var minPadding = Math.min.apply(Math, _toConsumableArray(_values(Helpers.getPadding(props))));\n    return Math.max(minPadding, 5); // eslint-disable-line no-magic-numbers\n  };\n\n  var maxRadius = maxBubbleSize || getMaxRadius();\n  var minRadius = minBubbleSize || maxRadius * 0.1; // eslint-disable-line no-magic-numbers\n\n  if (zMax === zMin) {\n    return Math.max(minRadius, 1);\n  }\n\n  var maxArea = Math.PI * Math.pow(maxRadius, 2);\n  var minArea = Math.PI * Math.pow(minRadius, 2);\n  var pointArea = (datum[z] - zMin) / (zMax - zMin) * maxArea;\n  var area = Math.max(pointArea, minArea);\n  var radius = Math.sqrt(area / Math.PI);\n  return Math.max(radius, 1);\n};\nexport var getSize = function (datum, props) {\n  var size = props.size,\n      z = props.z;\n\n  if (datum.size) {\n    return typeof datum.size === \"function\" ? datum.size : Math.max(datum.size, 1);\n  } else if (typeof props.size === \"function\") {\n    return size;\n  } else if (datum[z]) {\n    return getBubbleSize(datum, props);\n  }\n\n  return Math.max(size || 0, 1);\n};\n\nvar getCalculatedValues = function (props) {\n  var defaultStyles = Helpers.getDefaultStyles(props, \"scatter\");\n  var style = Helpers.getStyles(props.style, defaultStyles);\n  var range = {\n    x: Helpers.getRange(props, \"x\"),\n    y: Helpers.getRange(props, \"y\")\n  };\n  var domain = {\n    x: Domain.getDomain(props, \"x\"),\n    y: Domain.getDomain(props, \"y\")\n  };\n  var scale = {\n    x: Scale.getBaseScale(props, \"x\").domain(domain.x).range(props.horizontal ? range.y : range.x),\n    y: Scale.getBaseScale(props, \"y\").domain(domain.y).range(props.horizontal ? range.x : range.y)\n  };\n  var origin = props.polar ? props.origin || Helpers.getPolarOrigin(props) : undefined;\n  var z = props.bubbleProperty || \"z\";\n  var data = Data.getData(props);\n  data = Data.formatDataFromDomain(data, domain);\n  return {\n    domain: domain,\n    data: data,\n    scale: scale,\n    style: style,\n    origin: origin,\n    z: z\n  };\n};\n\nexport var getBaseProps = function (props, fallbackProps) {\n  var modifiedProps = Helpers.modifyProps(props, fallbackProps, \"scatter\");\n  props = _assign({}, modifiedProps, getCalculatedValues(modifiedProps));\n  var _props = props,\n      data = _props.data,\n      domain = _props.domain,\n      events = _props.events,\n      height = _props.height,\n      origin = _props.origin,\n      padding = _props.padding,\n      polar = _props.polar,\n      scale = _props.scale,\n      name = _props.name,\n      sharedEvents = _props.sharedEvents,\n      standalone = _props.standalone,\n      style = _props.style,\n      theme = _props.theme,\n      width = _props.width,\n      labels = _props.labels,\n      horizontal = _props.horizontal,\n      disableInlineStyles = _props.disableInlineStyles;\n  var initialChildProps = {\n    parent: {\n      style: style.parent,\n      scale: scale,\n      domain: domain,\n      data: data,\n      height: height,\n      width: width,\n      standalone: standalone,\n      theme: theme,\n      origin: origin,\n      polar: polar,\n      padding: padding,\n      name: name,\n      horizontal: horizontal\n    }\n  };\n  return data.reduce(function (childProps, datum, index) {\n    var eventKey = !_isNil(datum.eventKey) ? datum.eventKey : index;\n\n    var _Helpers$scalePoint = Helpers.scalePoint(props, datum),\n        x = _Helpers$scalePoint.x,\n        y = _Helpers$scalePoint.y;\n\n    var dataProps = {\n      x: x,\n      y: y,\n      datum: datum,\n      data: data,\n      index: index,\n      scale: scale,\n      polar: polar,\n      origin: origin,\n      horizontal: horizontal,\n      size: getSize(datum, props),\n      symbol: getSymbol(datum, props),\n      style: disableInlineStyles ? {} : style.data,\n      disableInlineStyles: disableInlineStyles\n    };\n    childProps[eventKey] = {\n      data: dataProps\n    };\n    var text = LabelHelpers.getText(props, datum, index);\n\n    if (text !== undefined && text !== null || labels && (events || sharedEvents)) {\n      childProps[eventKey].labels = LabelHelpers.getProps(props, index);\n    }\n\n    return childProps;\n  }, initialChildProps);\n};", "import React, { useState, useMemo, useRef, useEffect } from \"react\";\nimport SkCubeLoading from \"../SkCubeLoading\";\nimport axios from 'axios';\nimport { numberWithCommas } from \"../utils/helpers\";\nimport {\n  VictoryLine,\n  VictoryChart,\n  VictoryAxis,\n  VictoryVoronoiContainer,\n  VictoryTooltip,\n  VictoryScatter,\n  VictoryLegend\n} from 'victory';\n\nexport default function MonthlyPsrPortfolio(props) {\n  const strokeWidth = 2;\n  const ref = useRef(null);\n\n  const [containerWidth, setContainerWidth] = useState(800);\n\n  const colorDefault = \"orange\";\n\n  useEffect(() =>{\n    console.log('width', ref.current ? ref.current.offsetWidth : 0);\n    setContainerWidth(ref.current ? ref.current.offsetWidth : 800);\n  }, [ref.current])\n\n  const buildData = (records) => {\n    const _data = records.map((o) => {\n      let total_overall_principal_balance = o.data.total_overall_principal_balance;\n\n      if(!total_overall_principal_balance) {\n        total_overall_principal_balance = 0.00;\n      }\n\n      return {\n        date: o.closing_date,\n        portfolio: total_overall_principal_balance\n      }\n    });\n\n    return _data;\n  }\n\n  const data = buildData(props.data);\n\n  console.log(data);\n\n  return (\n    <>\n      <h4>\n        Portfolio\n      </h4>\n      <hr/>\n      <div\n        ref={ref}\n        style={{\n          width: \"100%\",\n          height: \"450px\"\n        }}\n      >\n        <VictoryChart\n          domainPadding={20}\n          containerComponent={<VictoryVoronoiContainer/>}\n          width={containerWidth - 600}\n        >\n          <VictoryScatter\n            data={data}\n            x=\"date\"\n            y=\"portfolio\"\n            labels={({ datum }) => numberWithCommas(datum.portfolio)}\n            style={{\n              data: {\n                fill: colorDefault\n              }\n            }}\n            labelComponent={\n              <VictoryTooltip\n                cornerRadius={0}\n              />\n            }\n          />\n          <VictoryLine\n            data={data}\n            style={{\n              data: {\n                stroke: colorDefault,\n                strokeWidth: strokeWidth\n              }\n            }}\n            x=\"date\"\n            y=\"portfolio\"\n          />\n        </VictoryChart>\n      </div>\n      <hr/>\n    </>\n  )\n}\n", "import React, { useState, useMemo, useRef, useEffect } from \"react\";\nimport SkCubeLoading from \"../SkCubeLoading\";\nimport axios from 'axios';\nimport { numberWithCommas } from \"../utils/helpers\";\nimport {\n  VictoryLine,\n  VictoryChart,\n  VictoryAxis,\n  VictoryVoronoiContainer,\n  VictoryTooltip,\n  VictoryScatter,\n  VictoryLegend\n} from 'victory';\n\nexport default function MonthlyPsrPrincipalPaid(props) {\n  const strokeWidth = 2;\n  const ref = useRef(null);\n\n  const [containerWidth, setContainerWidth] = useState(800);\n\n  const colorDefault = \"green\";\n\n  useEffect(() =>{\n    console.log('width', ref.current ? ref.current.offsetWidth : 0);\n    setContainerWidth(ref.current ? ref.current.offsetWidth : 800);\n  }, [ref.current])\n\n  const buildData = (records) => {\n    const _data = records.map((o) => {\n      const total_principal_paid = o.data.total_principal_paid ? o.data.total_principal_paid : 0.00;\n\n      return {\n        date: o.closing_date,\n        principal_paid: total_principal_paid\n      }\n    });\n\n    return _data;\n  }\n\n  const data = buildData(props.data);\n\n  console.log(data);\n\n  return (\n    <>\n      <h4>\n        Principal Paid\n      </h4>\n      <hr/>\n      <div\n        ref={ref}\n        style={{\n          width: \"100%\",\n          height: \"450px\"\n        }}\n      >\n        <VictoryChart\n          domainPadding={20}\n          containerComponent={<VictoryVoronoiContainer/>}\n          width={containerWidth - 600}\n        >\n          <VictoryScatter\n            data={data}\n            x=\"date\"\n            y=\"principal_paid\"\n            labels={({ datum }) => numberWithCommas(datum.principal_paid)}\n            style={{\n              data: {\n                fill: colorDefault\n              }\n            }}\n            labelComponent={\n              <VictoryTooltip\n                cornerRadius={0}\n              />\n            }\n          />\n          <VictoryLine\n            data={data}\n            style={{\n              data: {\n                stroke: colorDefault,\n                strokeWidth: strokeWidth\n              }\n            }}\n            x=\"date\"\n            y=\"principal_paid\"\n          />\n        </VictoryChart>\n      </div>\n      <hr/>\n    </>\n  )\n}\n", "import React, { useState, useMemo, useRef, useEffect } from \"react\";\nimport SkCubeLoading from \"../SkCubeLoading\";\nimport axios from 'axios';\nimport { numberWithCommas } from \"../utils/helpers\";\nimport {\n  VictoryLine,\n  VictoryChart,\n  VictoryAxis,\n  VictoryVoronoiContainer,\n  VictoryTooltip,\n  VictoryScatter,\n  VictoryLegend\n} from 'victory';\n\nexport default function MonthlyPsrPastDue(props) {\n  const strokeWidth = 2;\n  const ref = useRef(null);\n\n  const [containerWidth, setContainerWidth] = useState(800);\n\n  const colorDefault = \"red\";\n\n  useEffect(() =>{\n    console.log('width', ref.current ? ref.current.offsetWidth : 0);\n    setContainerWidth(ref.current ? ref.current.offsetWidth : 800);\n  }, [ref.current])\n\n  const buildData = (records) => {\n    const _data = records.map((o) => {\n      let total_principal_due = o.data.total_principal_due;\n\n      if(!total_principal_due) {\n        total_principal_due = 0.00;\n      }\n\n      return {\n        date: o.closing_date,\n        past_due: total_principal_due\n      }\n    });\n\n    return _data;\n  }\n\n  const data = buildData(props.data);\n\n  console.log(data);\n\n  return (\n    <>\n      <h4>\n        Past Due\n      </h4>\n      <hr/>\n      <div\n        ref={ref}\n        style={{\n          width: \"100%\",\n          height: \"450px\"\n        }}\n      >\n        <VictoryChart\n          domainPadding={20}\n          containerComponent={<VictoryVoronoiContainer/>}\n          width={containerWidth - 600}\n        >\n          <VictoryScatter\n            data={data}\n            x=\"date\"\n            y=\"past_due\"\n            labels={({ datum }) => numberWithCommas(datum.past_due)}\n            style={{\n              data: {\n                fill: colorDefault\n              }\n            }}\n            labelComponent={\n              <VictoryTooltip\n                cornerRadius={0}\n              />\n            }\n          />\n          <VictoryLine\n            data={data}\n            style={{\n              data: {\n                stroke: colorDefault,\n                strokeWidth: strokeWidth\n              }\n            }}\n            x=\"date\"\n            y=\"past_due\"\n          />\n        </VictoryChart>\n      </div>\n      <hr/>\n    </>\n  )\n}\n", "import React, { useState, useMemo, useRef, useEffect } from \"react\";\nimport SkCubeLoading from \"../SkCubeLoading\";\nimport axios from 'axios';\nimport {\n  VictoryLine,\n  VictoryChart,\n  VictoryAxis,\n  VictoryVoronoiContainer,\n  VictoryTooltip,\n  VictoryScatter,\n  VictoryLegend\n} from 'victory';\n\nexport default function MonthlyPsrMemberCount(props) {\n  const strokeWidth = 2;\n  const ref = useRef(null);\n\n  const [containerWidth, setContainerWidth] = useState(800);\n\n  const colorResigned = \"red\";\n  const colorActiveBorrowers = \"green\";\n  const colorPureSavers = \"blue\";\n  const colorAdmitted = \"black\";\n\n  useEffect(() =>{\n    console.log('width', ref.current ? ref.current.offsetWidth : 0);\n    setContainerWidth(ref.current ? ref.current.offsetWidth : 800);\n  }, [ref.current])\n\n  const buildData = (records) => {\n    const _data = records.map((o) => {\n      const active_borrowers = o.data.active_borrowers ? o.data.active_borrowers : 0;\n      const pure_savers = o.data.pure_savers ? o.data.pure_savers : 0;\n      const admitted = o.data.admitted ? o.data.admitted : 0;\n      const resigned = o.data.resigned ? o.data.resigned : 0;\n\n      return {\n        date: o.closing_date,\n        active_borrowers: active_borrowers,\n        pure_savers: pure_savers,\n        admitted: admitted,\n        resigned: resigned\n      }\n    });\n\n    return _data;\n  }\n\n  const data = buildData(props.data);\n\n  console.log(data);\n\n  return (\n    <>\n      <h4>\n        Member Count\n      </h4>\n      <hr/>\n      <div\n        ref={ref}\n        style={{\n          width: \"100%\",\n          height: \"450px\"\n        }}\n      >\n        <VictoryChart\n          domainPadding={20}\n          containerComponent={<VictoryVoronoiContainer/>}\n          width={containerWidth - 600}\n        >\n          <VictoryLegend\n            x={70} y={50}\n            title=\"Legend\"\n            centerTitle\n            orientation=\"horizontal\"\n            gutter={20}\n            style={{ border: { stroke: \"black\" }, title: {fontSize: 14 } }}\n            data={[\n              { name: \"Active Borrowers\", symbol: { fill: colorActiveBorrowers } },\n              { name: \"Pure Savers\", symbol: { fill: colorPureSavers } },\n              { name: \"Admitted\", symbol: { fill: colorAdmitted } },\n              { name: \"Resigned\", symbol: { fill: colorResigned } }\n            ]}\n          />\n\n          <VictoryScatter\n            data={data}\n            x=\"date\"\n            y=\"active_borrowers\"\n            labels={({ datum }) => (datum.active_borrowers)}\n            style={{\n              data: {\n                fill: colorActiveBorrowers\n              }\n            }}\n            labelComponent={\n              <VictoryTooltip\n                cornerRadius={0}\n              />\n            }\n          />\n          <VictoryLine\n            data={data}\n            style={{\n              data: {\n                stroke: colorActiveBorrowers,\n                strokeWidth: strokeWidth\n              }\n            }}\n            x=\"date\"\n            y=\"active_borrowers\"\n          />\n\n          <VictoryScatter\n            data={data}\n            x=\"date\"\n            y=\"pure_savers\"\n            labels={({ datum }) => (datum.pure_savers)}\n            style={{\n              data: {\n                fill: colorPureSavers\n              }\n            }}\n            labelComponent={\n              <VictoryTooltip\n                cornerRadius={0}\n              />\n            }\n          />\n          <VictoryLine\n            data={data}\n            style={{\n              data: {\n                stroke: colorPureSavers,\n                strokeWidth: strokeWidth\n              }\n            }}\n            x=\"date\"\n            y=\"pure_savers\"\n          />\n\n          <VictoryScatter\n            data={data}\n            x=\"date\"\n            y=\"admitted\"\n            labels={({ datum }) => (datum.admitted)}\n            style={{\n              data: {\n                fill: colorAdmitted\n              }\n            }}\n            labelComponent={\n              <VictoryTooltip\n                cornerRadius={0}\n              />\n            }\n          />\n          <VictoryLine\n            data={data}\n            style={{\n              data: {\n                stroke: colorAdmitted,\n                strokeWidth: strokeWidth\n              }\n            }}\n            x=\"date\"\n            y=\"admitted\"\n          />\n\n          <VictoryScatter\n            data={data}\n            x=\"date\"\n            y=\"resigned\"\n            labels={({ datum }) => (datum.resigned)}\n            style={{\n              data: {\n                fill: colorResigned\n              }\n            }}\n            labelComponent={\n              <VictoryTooltip\n                cornerRadius={0}\n              />\n            }\n          />\n          <VictoryLine\n            data={data}\n            style={{\n              data: {\n                stroke: colorResigned,\n                strokeWidth: strokeWidth\n              }\n            }}\n            x=\"date\"\n            y=\"resigned\"\n          />\n        </VictoryChart>\n      </div>\n      <hr/>\n    </>\n  )\n}\n", "import React from 'react';\r\nimport $ from 'jquery';\r\nimport moment from 'moment';\r\nimport Select from 'react-select';\r\nimport Toggle from 'react-toggle';\r\nimport \"react-toggle/style.css\";\r\n\r\nimport SkCubeLoading from '../SkCubeLoading';\r\nimport ErrorDisplay from '../ErrorDisplay';\r\nimport {numberWithCommas} from '../utils/helpers';\r\n\r\nexport default class ShowComponent extends React.Component {\r\n  constructor(props) {\r\n    super(props);\r\n\r\n    this.state  = {\r\n      isLoading: true,\r\n      data: false,\r\n      errors: false\r\n    };\r\n  }\r\n\r\n  fetch(options) {\r\n    var context = this;\r\n    var data = {\r\n      id: this.props.id\r\n    }\r\n\r\n    $.ajax({\r\n      url: \"/api/v1/transfer_savings/fetch\",\r\n      data: data,\r\n      method: \"GET\",\r\n\r\n      success: function(response){\r\n        alert(response);\r\n        context.setState({\r\n          isLoading: false,\r\n          data: response\r\n        });\r\n\r\n      },\r\n      error: function(response){\r\n        alert(\"Something went wrong\");\r\n      }\r\n    });\r\n  }\r\n\r\n  componentDidMount() {\r\n    var context = this;\r\n    $.ajax({\r\n      url: \"/api/v1/transfer_savings/fetch\",\r\n      data: {id: context.props.id},\r\n      method: \"GET\",\r\n\r\n      success: function(response){\r\n        console.log(response);\r\n        context.setState({\r\n          isLoading: false,\r\n          data: response\r\n        });\r\n\r\n      },\r\n      error: function(response){\r\n        alert(\"Something went wrong\");\r\n      }\r\n    });\r\n\r\n    \r\n  }\r\n\r\n  renderErrorDisplay() {\r\n    if(this.state.errors) {\r\n      return  (\r\n        <ErrorDisplay\r\n          errors={this.state.errors}\r\n        />\r\n      );\r\n    }\r\n  }\r\n\r\n  renderMembersData(){\r\n      var rows  = [];\r\n      var member_data = this.state.data.data.member_records;\r\n      console.log(member_data);\r\n      for(var i = 0; i < member_data.length; i++) {\r\n        rows.push(\r\n          <tr key={\"member_data-item-\" + i}>\r\n          <td>\r\n              {[i+1]}\r\n            </td>\r\n            <td>\r\n              <a href={\"/members/\" + member_data[i].member_id+\"/display\"} target='_blank'>\r\n              {member_data[i].member_name} </a>\r\n            </td>\r\n            <td>\r\n              {member_data[i].member_status}\r\n            </td>\r\n            <td className=\"text-muted\">\r\n              {member_data[i].center.center_name}\r\n            </td>\r\n             <td className=\"text-muted text-end\">\r\n              {member_data[i].psa_balance}\r\n            </td>\r\n          </tr>\r\n         \r\n        );\r\n      }\r\n      return rows;\r\n  }\r\n renderHeader() {\r\n    var headers = [];\r\n    headers.push(\r\n      <th key=\"index\">\r\n        \r\n      </th>\r\n    );\r\n    headers.push(\r\n      <th key=\"member-header\">\r\n        Member\r\n      </th>\r\n    );\r\n    headers.push(\r\n      <th key=\"membership-header\">\r\n        Member Status\r\n      </th>\r\n    );\r\n    headers.push(\r\n      <th key=\"center-header\">\r\n       Center\r\n      </th>\r\n    );\r\n    headers.push(\r\n      <th key=\"officer-header\">\r\n        Personal Savings Account Balance\r\n      </th>\r\n    );\r\n    return headers;\r\n  }\r\n  \r\n\r\n  render() {\r\n    if(this.state.isLoading) {\r\n      return  (\r\n        <SkCubeLoading/>\r\n      );\r\n    } else {\r\n      return  (\r\n        <div>\r\n         \r\n          <table className=\"table table-sm table-bordered table-hover\">\r\n            <thead>\r\n            <tr>\r\n              {this.renderHeader()}\r\n            </tr>\r\n            </thead>\r\n            <tbody>\r\n              {this.renderMembersData()}\r\n              <tr> \r\n                <th colSpan=\"4\">\r\n                  Total\r\n                </th>\r\n                 <th className=\"text-end\">\r\n                  {numberWithCommas(this.state.data.data.total_psa)}\r\n                </th>\r\n              </tr>\r\n            </tbody>\r\n            <tfoot>\r\n            </tfoot>\r\n          </table>\r\n        </div>\r\n      );\r\n    }\r\n  }\r\n}\r\n", "import React from 'react';\nimport $ from 'jquery';\nimport moment from 'moment';\nimport Select from 'react-select';\nimport Toggle from 'react-toggle';\nimport \"react-toggle/style.css\";\n\nimport SkCubeLoading from '../SkCubeLoading';\nimport ErrorDisplay from '../ErrorDisplay';\nimport {numberWithCommas} from '../utils/helpers';\n\nexport default class ShowComponents extends React.Component {\n  constructor(props) {\n    super(props);\n\n    this.state  = {\n      isLoading: true,\n      data: false,\n      errors: false\n    };\n  }\n\n  fetch(options) {\n    var context = this;\n    var data = {\n      id: this.props.id\n    }\n    $.ajax({\n      url: \"/api/v1/data_stores/share_capital_summary/fetch\",\n      method: 'GET',\n      data: {\n        id: this.props.id\n      },\n\n\n      success: function(response) {\n        context.setState({\n          isLoading: false,\n          data: response.data\n        });\n       \n      },\n      error: function(response) {\n        console.log(response);\n        alert(\"Error in fetching share capital\");\n      }\n    });\n  }\n\n  componentDidMount(){\n    var context = this;\n    $.ajax({\n      url: \"/api/v1/data_stores/share_capital_summary/fetch\",\n      method: 'GET',\n      data: {\n        id: this.props.id\n      },\n      success: function(response) {\n        context.setState({\n          isLoading: false,\n          data: response.data\n        });\n      },\n      error: function(response) {\n        console.log(response);\n        alert(\"Error in fetching share capital\");\n      }\n    });\n  }\n  renderErrorDisplay() {\n    if(this.state.errors) {\n      return  (\n        <ErrorDisplay\n          errors={this.state.errors}\n        />\n      );\n    }\n  }\n  renderMembersData(){\n    var rows = [];\n    var member_data  = this.state.data.records;\n    console.log(member_data);\n    for (var i = 0; i < member_data.length; i++){\n    rows.push(\n      <tr key={\"member_data-item-\" + i}>\n      <td>\n       {[i+1]}\n       </td>\n       <td>\n       <a href={\"/members/\" + member_data[i].id+\"/display\"} target='_blank'>\n        {member_data[i].name}</a>\n       </td>\n      <td className=\"text-muted\">\n        {member_data[i].center}\n      </td>\n      <td className=\"text-muted text-end\">\n        {member_data[i].balance}\n      </td>\n      </tr>\n      );\n\n    }\n    return rows;\n  }\n\n  renderHeader(){\n    var headers = [];\n    headers.push(\n      <th key=\"index\">\n      </th>\n    );\n    headers.push(\n      <th key=\"member-header\">\n      Member\n      </th>\n    );\n    headers.push(\n      <th key=\"center-header\">\n      Center\n      </th>\n    );\n    headers.push(\n      <th key=\"officer-header\">\n      Share Capital Balance\n      </th>\n    );\n    return headers\n  }\n\n  render(){\n    if(this.state.isLoading) {\n      return  (\n        <SkCubeLoading/>\n      );\n    } else {\n      return(\n        <div>\n\n          <table className=\"table table-sm table-bordered table-responsive\">\n            <thead>\n              <tr>\n                {this.renderHeader()}\n              </tr>\n            </thead>\n            <tbody>\n              {this.renderMembersData()}\n            </tbody>\n          </table>\n        </div>\n      );\n    }\n  }\n}", "import React, { useState, useEffect } from \"react\";\nimport ErrorList from '../ErrorList';\nimport Select from 'react-select';\nimport { months, getYears } from '../utils/consts';\nimport { generate } from '../services/PsrScheduleService';\nimport { numberAsPercent, numberWithCommas } from \"../utils/helpers\";\n\nconst Generate = (props) => {\n  const [currentBranches, setCurrentBranches] = useState([]);\n  const [currentYear, setCurrentYear] = useState(new Date().getFullYear());\n  const [currentMonth, setCurrentMonth] = useState(new Date().getMonth() + 1);\n  const [isLoading, setIsLoading] = useState(false);\n  const [errors, setErrors] = useState([]);\n  const [data, setData] = useState([]);\n  \n\n\n  const handleClick = () => {\n    setIsLoading(true);\n    setErrors([]);\n    setData([]);\n\n    const payload = {\n      branch_ids: currentBranches.map((o) => { return o.value }),\n      year: currentYear,\n      month: currentMonth,\n    }\n\n    generate(payload, props.token).then((res) => {\n      console.log(res.data);\n      setData(res.data);\n    }).catch((res) => {\n      setErrors(res.response.data.errors);\n    }).finally(() => {\n      setIsLoading(false);\n    })\n  }\n  \n  return (\n    <React.Fragment>\n      <h1>\n        Generate PSR Schedule\n      </h1>\n      <hr/>\n      <label>\n        SatO\n      </label>\n      <Select\n        value={currentBranches}\n        options={props.branch_options}\n        isMulti\n        isDisabled={isLoading}\n        onChange={(selections) => {\n          const _currentBranches = [];\n\n          selections.forEach((o) => {\n            _currentBranches.push(o);\n          })\n\n          setCurrentBranches(_currentBranches);\n        }}\n      />\n      <div className=\"row mt-2\">\n        <div className=\"col\">\n          <div className=\"form-group\">\n            <label>\n              Month\n            </label>\n            <select\n              className=\"form-control\"\n              value={currentMonth}\n              disabled={isLoading}\n              onChange={(event) => {\n                setCurrentMonth(event.target.value);\n              }}\n            >\n              {months.map((month) => {\n                return (\n                  <option value={month.value} key={`month-${month.value}`}>\n                    {month.label}\n                  </option>\n                )\n              })}\n            </select>\n          </div>\n        </div>\n        <div className=\"col\">\n          <div className=\"form-group\">\n            <label>\n              Year\n            </label>\n            <select\n              className=\"form-control\"\n              value={currentYear}\n              disabled={isLoading}\n              onChange={(event) => {\n                setCurrentYear(event.target.value);\n              }}\n            >\n              {getYears().map((year) => {\n                return (\n                  <option value={year} key={`year-${year}`}>\n                    {year}\n                  </option>\n                )\n              })}\n            </select>\n          </div>\n        </div>\n      </div>\n      <button\n        className=\"btn btn-info w-100 mt-2\"\n        disabled={isLoading}\n        onClick={() => {\n          setIsLoading(true);\n          handleClick();\n        }}\n      >\n        Generate\n      </button>\n      <hr/>\n      <ErrorList errors={errors}/>\n      {(() => {\n        if(data.length > 0) {\n          return (\t  \n\t     <React.Fragment>\n              <table className=\"table table-bordered table-sm\">\n                <tbody>\n                  <tr>\n                    <th>\n                      SatO\n                    </th>\n                    {data.map((obj) => {\n                      return (\n                        <th className=\"text-center\" key={`branch-header-${obj.branch_id}`}>\n                          {obj.branch}\n                        </th>\n                      )\n                    })}\n                  </tr>\n\t\t  <tr>\n\t\t   <th>\n\t\t     A. OUTREACH\n\t\t   </th>\n\t\t   <td></td>\n\t\t  </tr>\n\t\t  <tr>\n                    <th>\n                      a1. Total Number of Active Members\n                    </th>\n                    {data.map((obj) => {\n                      return (\n                        <th className=\"text-center\" key={`active-total-${obj.branch_id}`}>\n                          {obj.data.active_total}\n                        </th>\n                      )\n                    })}\n                  </tr>\n                  <tr>\n                    <th className=\"ps-4\">\n                      Female\n                    </th>\n                    {data.map((obj) => {\n                      return (\n                        <td className=\"text-center\" key={`active-female-${obj.branch_id}`}>\n                          {obj.data.active_female}\n                        </td>\n                      )\n                    })}\n                  </tr>\n                  <tr>\n                    <th className=\"ps-4\">\n                      Male\n                    </th>\n                    {data.map((obj) => {\n                      return (\n                        <td className=\"text-center\" key={`active-male-${obj.branch_id}`}>\n                          {obj.data.active_male}\n                        </td>\n                      )\n                    })}\n                  </tr>\n                  <tr>\n                    <th>\n                      Pure Savers\n                    </th>\n                    {data.map((obj) => {\n                      return (\n                        <td className=\"text-center\" key={`pure-savers-${obj.branch_id}`}>\n                          {obj.data.pure_savers}\n                        </td>\n                      )\n                    })}\n                  </tr>\n\t\t  <tr>\n                    <th className=\"ps-4\">\n                      Primary\n                    </th>\n                    {data.map((obj) => {\n                      return (\n                        <td className=\"text-center\" key={`active-male-${obj.branch_id}`}>\n                          {obj.data.pure_savers_regular}\n                        </td>\n                      )\n                    })}\n\t\t  </tr>\n\t\t  <tr>\n                    <th className=\"ps-4\">\n                      kaagapay\n                    </th>\n                    {data.map((obj) => {\n                      return (\n                        <td className=\"text-center\" key={`active-male-${obj.branch_id}`}>\n                          {obj.data.pure_savers_kaagapay}\n                        </td>\n                      )\n                    })}\n\t\t  </tr>\n\t\t  <tr>\n                    <th className=\"ps-4\">\n                      GK\n                    </th>\n                    {data.map((obj) => {\n                      return (\n                        <td className=\"text-center\" key={`active-male-${obj.branch_id}`}>\n                          {obj.data.pure_savers_gk}\n                        </td>\n                      )\n                    })}\n\t\t  </tr>\n\t\t  <tr>\n                    <th>\n                      Active Borrowers\n                    </th>\n                    {data.map((obj) => {\n                      return (\n                        <td className=\"text-center\" key={`active-borrowers-${obj.branch_id}`}>\n                          {obj.data.active_borrowers}\n                        </td>\n                      )\n                    })}\n                  </tr>\n\t\t   <tr>\n                    <th className=\"ps-4\">\n                      Primary\n                    </th>\n                    {data.map((obj) => {\n                      return (\n                        <td className=\"text-center\" key={`active-male-${obj.branch_id}`}>\n                          {obj.data.active_borrowers_regular}\n                        </td>\n                      )\n                    })}\n\t\t  </tr>\n\t\t  <tr>\n                    <th className=\"ps-4\">\n                      kaagapay\n                    </th>\n                    {data.map((obj) => {\n                      return (\n                        <td className=\"text-center\" key={`active-male-${obj.branch_id}`}>\n                          {obj.data.active_borrowers_kaagapay}\n                        </td>\n                      )\n                    })}\n\t\t  </tr>\n\t\t  <tr>\n                    <th className=\"ps-4\">\n                      GK\n                    </th>\n                    {data.map((obj) => {\n                      return (\n                        <td className=\"text-center\" key={`active-male-${obj.branch_id}`}>\n                          {obj.data.active_borrowers_gk}\n                        </td>\n                      )\n                    })}\n\t\t  </tr>\n\t\t  <tr>\n                    <th>\n                      Admitted Members\n                    </th>\n                    {data.map((obj) => {\n                      return (\n                        <td className=\"text-center\" key={`admitted-members-${obj.branch_id}`}>\n                          {obj.data.admitted}\n                        </td>\n                      )\n                    })}\n\t\t  </tr>\n\t\t  <tr>\n                    <th>\n                      Inactive Members\n                    </th>\n                    {data.map((obj) => {\n                      return (\n                        <td className=\"text-center\" key={`admitted-members-${obj.branch_id}`}>\n                          {obj.data.non_patronizing}\n                        </td>\n                      )\n                    })}\n\t\t  </tr>\n\n\t\t  <tr>\n                    <th>\n                      Deliquent Members\n\t\t    </th>\n\t\t    <td></td>\n\t\t  </tr>\n\t\t{/*\n                  <tr>\n                    <th>\n                      Resigned\n                    </th>\n                    {data.map((obj) => {\n                      return (\n                        <td className=\"text-center\" key={`resigned-${obj.branch_id}`}>\n                          {obj.data.resigned}\n                        </td>\n                      )\n                    })}\n                  </tr>\n                  <tr>\n                    <th>\n                      Percentage of Savers\n                    </th>\n                    {data.map((obj) => {\n                      return (\n                        <td className=\"text-center\" key={`percentage-of-savers-${obj.branch_id}`}>\n                          {numberAsPercent(obj.data.pure_savers / obj.data.active_total)}\n                        </td>\n                      )\n                    })}\n                  </tr>\n                  <tr>\n                    <th>\n                      Percentage of Borrowers\n                    </th>\n                    {data.map((obj) => {\n                      return (\n                        <td className=\"text-center\" key={`percentage-of-borrowers-${obj.branch_id}`}>\n                          {numberAsPercent(obj.data.active_borrowers / obj.data.active_total)}\n                        </td>\n                      )\n                    })}\n\t\t  </tr>\n\t\t  */}\n                  <tr>\n                    <th>\n                      a2. Total Number of Active Loans\n                    </th>\n                    {data.map((obj) => {\n                      return (\n                        <th className=\"text-center\" key={`percentage-of-borrowers-${obj.branch_id}`}>\n                          {obj.data.total_active_loans}\n                        </th>\n                      )\n                    })}\n                  </tr>\n\t\t  {data[0].data.loans\n\t\t    .sort((a, b) => a.loan_product.priority - b.loan_product.priority)\n\t\t    .map((o, i) => {\n                    return (\n                      <tr key={`loan-count-row-${i}`}>\n                        <th className=\"ps-4\">\n                          {o.loan_product.name}\n                        </th>\n                        {data.map((obj) => {\n                          return (\n                            <td className=\"text-center\" key={`loan-count-col-${obj.branch_id}`}>\n                              {obj.data.loans[i].count}\n                            </td>\n                          )\n                        })}\n                      </tr>\n                    )\n\t\t  })}\n                  <tr>\n                    <th>\n                      a3. DROP OUT for the month\n\t\t    </th>\n\t\t    {data.map((obj) => {\n                      return (\n                        <th className=\"text-center\" key={`percentage-of-borrowers-${obj.branch_id}`}>\n                          {obj.data.resigned_members}\n                        </th>\n                      )\n                    })}\n                  </tr>\n                  <tr>\n                    <th className=\"ps-4\">\n                      Drop out rate\n\t\t    </th>\n                        <td></td>\n                  </tr>\n                  <tr>\n                    <th>\n                      a4. Total New Clients (as of)\n\t\t    </th>\n\t\t    <td></td>\n                  </tr>\n                  <tr>\n                    <th className=\"ps-4\">\n                      New clients for the month\n\t\t    </th>\n \t\t    {data.map((obj) => {\n                      return (\n                        <th className=\"text-center\" key={`percentage-of-borrowers-${obj.branch_id}`}>\n                          {obj.data.new_members}\n                        </th>\n                      )\n                   })}                       \n                  </tr>\n\n                  <tr>\n                    <th>\n                      B. LOAN PORTFOLIO\n                    </th>\n                    {data.map((obj) => {\n                      return (\n                        <th className=\"text-end\" key={`outstanding-loans-${obj.branch_id}`}>\n                          {numberWithCommas(obj.data.total_overall_principal_balance)}\n                        </th>\n                      )\n                    })}\n\t\t  </tr>\n\n                  <tr>\n                    <th>\n                      b1. Outstanding Loans\n                    </th>\n                    <td></td>\n\t\t  </tr>\n                  <tr>\n\t\t  </tr>\n                  {data[0].data.loans.map((o, i) => {\n                    return (\n                      <tr key={`loan-portfolio-row-${i}`}>\n                        <th className=\"ps-4\">\n                          {o.loan_product.name}\n                        </th>\n                        {data.map((obj) => {\n                          return (\n                            <td className=\"text-end\" key={`loan-portfolio-col-${obj.branch_id}`}>\n                              {numberWithCommas(obj.data.loans[i].overall_principal_balance)}\n                            </td>\n                          )\n                        })}\n                      </tr>\n                    )\n\t\t  })}\n\t\t  <tr>\n                    <th>\n                      Average Loan amount (portfolio) for the month\n                    </th>\n                    {data.map((obj) => {\n                      return (\n                        <th className=\"text-end\" key={`average-loan-amount${obj.branch_id}`}>\n                          {numberWithCommas(obj.data.average_loan_amount)}\n                        </th>\n                      )\n                    })}\n\t\t  </tr>\n\t\t  <tr>\n                    <th>\n                      b2. PAST DUE AMOUNT:\n                    </th>\n\t\t    <td></td>\n\t\t  </tr>\n\t\t  \n\t\t  <tr>\n                    <th className=\"ps-4\">\n                      Past due (1-30 days)\n                    </th>\n                    {data.map((obj) => {\n                      return (\n                        <td className=\"text-end\" key={`pastdue-month-${obj.branch_id}`}>\n                          {numberWithCommas(obj.data.past_due_month)}\n                        </td>\n                      )\n                    })}\n\t\t  </tr>\n\t\t  <tr>\n                    <th className=\"ps-4\">\n                      Past due (31-365 days)\n                    </th>\n                    {data.map((obj) => {\n                      return (\n                        <td className=\"text-end\" key={`pastdue-year-${obj.branch_id}`}>\n                          {numberWithCommas(obj.data.past_due_year)}\n                        </td>\n                      )\n                    })}\n\t\t  </tr>\n\t\t  <tr>\n                    <th className=\"ps-4\">\n                      Past due (365 days above)\n                    </th>\n                    {data.map((obj) => {\n                      return (\n                        <td className=\"text-end\" key={`pastdue-greateryear-${obj.branch_id}`}>\n                          {numberWithCommas(obj.data.past_due_greater_year)}\n                        </td>\n                      )\n                    })}\n\t\t  </tr>\n\t\t  <tr>\n                    <th className=\"ps-4\">\n                      Total PAST DUE\n                    </th>\n                    {data.map((obj) => {\n                      return (\n                        <th className=\"text-end\" key={`principal-balance-${obj.branch_id}`}>\n                          {numberWithCommas(obj.data.total_principal_balance)}\n                        </th>\n                      )\n                    })}\n\t\t  </tr>\n\t\t  <tr>\n                    <th className=\"ps-4\">\n                      Past Due Rate\n                    </th>\n                    {data.map((obj) => {\n                      return (\n                        <td className=\"text-center\" key={`pastdue-rate-${obj.branch_id}`}>\n                          {numberAsPercent(obj.data.past_due_rate)}\n                        </td>\n                      )\n                    })}\n\t\t  </tr>\n\t\t  <tr>\n                    <th>\n                      b3. PAR AMOUNT:\n                    </th>\n\t\t    <td></td>\n\t\t  </tr>\n\t\t  \n\t\t  <tr>\n                    <th className=\"ps-4\">\n                      Portfolio at Risk (1-30 days)\n                    </th>\n                    {data.map((obj) => {\n                      return (\n                        <td className=\"text-end\" key={`par-month-${obj.branch_id}`}>\n                          {numberWithCommas(obj.data.par_month)}\n                        </td>\n                      )\n                    })}\n\t\t  </tr>\n\t\t  <tr>\n                    <th className=\"ps-4\">\n                      Portfolio at Risk (31-365 days)\n                    </th>\n                    {data.map((obj) => {\n                      return (\n                        <td className=\"text-end\" key={`par-year-${obj.branch_id}`}>\n                          {numberWithCommas(obj.data.par_year)}\n                        </td>\n                      )\n                    })}\n\t\t  </tr>\n\t\t  <tr>\n                    <th className=\"ps-4\">\n                      Portfolio at Risk (365 days above)\n                    </th>\n                    {data.map((obj) => {\n                      return (\n                        <td className=\"text-end\" key={`par-greateryear-${obj.branch_id}`}>\n                          {numberWithCommas(obj.data.par_greater_year)}\n                        </td>\n                      )\n                    })}\n\t\t  </tr>\n\t\t  <tr>\n                    <th className=\"ps-4\">\n                      Total PAR AMOUNT\n                    </th>\n                    {data.map((obj) => {\n                      return (\n                        <th className=\"text-end\" key={`par-balance-${obj.branch_id}`}>\n                          {numberWithCommas(obj.data.total_par)}\n                        </th>\n                      )\n                    })}\n\t\t  </tr>\n\t\t  <tr>\n                    <th className=\"ps-4\">\n                      PAR Rate (1day)\n                    </th>\n                    {data.map((obj) => {\n                      return (\n                        <td className=\"text-center\" key={`pastdue-rate-${obj.branch_id}`}>\n                          {numberAsPercent(obj.data.par_rate_one_day)}\n                        </td>\n                      )\n                    })}\n\t\t  </tr>\n\t\t  <tr>\n                    <th>\n                      b4. Allow. For Impairment losses\n                    </th>\n\t\t    <td></td>\n\t\t  </tr>\n\t\t  \n\t\t  <tr>\n                    <th className=\"ps-4\">\n                      Current (1%)\n                    </th>\n                    {data.map((obj) => {\n                      return (\n                        <td className=\"text-end\" key={`afil-current-${obj.branch_id}`}>\n                          {numberWithCommas(obj.data.afil_current)}\n                        </td>\n                      )\n                    })}\n\t\t  </tr>\n\t\t  <tr>\n                    <th className=\"ps-4\">\n                      1-365 days (35%)\n                    </th>\n                    {data.map((obj) => {\n                      return (\n                        <td className=\"text-end\" key={`afil-year-${obj.branch_id}`}>\n                          {numberWithCommas(obj.data.afil_year)}\n                        </td>\n                      )\n                    })}\n\t\t  </tr>\n\t\t  <tr>\n                    <th className=\"ps-4\">\n                      over 1 yr (100%)\n                    </th>\n                    {data.map((obj) => {\n                      return (\n                        <td className=\"text-end\" key={`afil-greateryear-${obj.branch_id}`}>\n                          {numberWithCommas(obj.data.afil_greater_year)}\n                        </td>\n                      )\n                    })}\n\t\t  </tr>\n\t\t  <tr>\n                    <th className=\"ps-4\">\n                      Total \n                    </th>\n                    {data.map((obj) => {\n                      return (\n                        <th className=\"text-end\" key={`afil-${obj.branch_id}`}>\n                          {numberWithCommas(obj.data.afil)}\n                        </th>\n                      )\n                    })}\n\t\t  </tr>\n\t\t  <tr>\n                    <th>\n                      b4. Allow. For Impairment losses\n                    </th>\n\t\t    <td></td>\n\t\t  </tr>\n\n                  <tr>\n                    <th>\n                      C. DISBURSEMENTS\n\t\t    </th>\n\t\t    <td></td>\n\t\t   </tr>\n\t\t  <tr>\n                    <th>\n                      c1. Total no. of LOAN DISBURSED (As of)\n                    </th>\n\t\t    <td></td>\n\t\t  </tr>\n\t\t  <tr>\n                    <th>\n                      c2. No. of LOAN DISBURSED for the month\n                    </th>\n\t\t    {data.map((obj) => {\n                      return (\n                        <th className=\"text-center\" key={`loans-disbursed-for-the-month-${obj.branch_id}`}>\n                          {obj.data.total_num_disbursed}\n                        </th>\n                      )\n                    })}\n\t\t  </tr>\n\n                  {data[0].data.loans.map((o, i) => {\n                    return (\n                      <tr key={`loans-disbursed-for-the-month-row-${i}`}>\n                        <th className=\"ps-4\">\n                          {o.loan_product.name}\n                        </th>\n                        {data.map((obj) => {\n                          return (\n                            <td className=\"text-center\" key={`loans-disbursed-for-the-month-col-${obj.branch_id}`}>\n                              {obj.data.loans[i].num_disbursed}\n                            </td>\n                          )\n                        })}\n                      </tr>\n                    )\n\t\t  })}\n\t\t  <tr>\n                    <th>\n                      c3. AMOUNT DISBURSED as of\n                    </th>\n\t\t    <td></td>\n\t\t  </tr>\n\n                  <tr>\n                    <th>\n                      c4. DISBURSEMENT for the month\n                    </th>\n                    {data.map((obj) => {\n                      return (\n                        <th className=\"text-end\" key={`loans-total-amount-disbursed-${obj.branch_id}`}>\n                          {numberWithCommas(obj.data.total_amount_disbursed)}\n                        </th>\n                      )\n                    })}\n                  </tr>\n                  {data[0].data.loans.map((o, i) => {\n                    return (\n                      <tr key={`loans-amount-disbursed-row-${i}`}>\n                        <th className=\"ps-4\">\n                          {o.loan_product.name}\n                        </th>\n                        {data.map((obj) => {\n                          return (\n                            <td className=\"text-end\" key={`loans-amount-disbursed-col-${obj.branch_id}`}>\n                              {numberWithCommas(obj.data.loans[i].amount_disbursed)}\n                            </td>\n                          )\n                        })}\n                      </tr>\n                    )\n\t\t  })}\n\t\t  <tr>\n                    <th>\n                      Average Loan amount (disbursed) for the month\n                    </th>\n\t\t    {data.map((obj) => {\n                      return (\n                        <th className=\"text-end\" key={`loans-disbursed-for-the-month-${obj.branch_id}`}>\n                          {numberWithCommas(obj.data.average_disbursed_amount)}\n                        </th>\n                      )\n                    })}\n\t\t  </tr>\n\t\t  <tr>\n                    <th>\n                      d4. Amount collected (as of)\n                    </th>\n\t\t    {data.map((obj) => {\n                      return (\n                        <th className=\"text-end\" key={`loans-disbursed-for-the-month-${obj.branch_id}`}>\n                          {numberWithCommas(obj.data.total_principal_paid)}\n                        </th>\n                      )\n                    })}\n\t\t  </tr>\n                  {data[0].data.loans.map((o, i) => {\n                    return (\n                      <tr key={`loans-amount-collected-row-${i}`}>\n                        <th className=\"ps-4\">\n                          {o.loan_product.name}\n                        </th>\n                        {data.map((obj) => {\n                          return (\n                            <td className=\"text-end\" key={`loans-amount-disbursed-col-${obj.branch_id}`}>\n                              {numberWithCommas(obj.data.loans[i].total_principal_paid)}\n                            </td>\n                          )\n                        })}\n                      </tr>\n                    )\n\t\t  })}\n\t\t  <tr>\n                    <th>\n                      Interest income (as of)\n                    </th>\n\t\t    {data.map((obj) => {\n                      return (\n                        <th className=\"text-end\" key={`loans-disbursed-for-the-month-${obj.branch_id}`}>\n                          {numberWithCommas(obj.data.total_interest_paid)}\n                        </th>\n                      )\n                    })}\n\t\t  </tr>\n                  {data[0].data.loans.map((o, i) => {\n                    return (\n                      <tr key={`loans-amount-collected-row-${i}`}>\n                        <th className=\"ps-4\">\n                          {o.loan_product.name}\n                        </th>\n                        {data.map((obj) => {\n                          return (\n                            <td className=\"text-end\" key={`loans-amount-disbursed-col-${obj.branch_id}`}>\n                              {numberWithCommas(obj.data.loans[i].total_interest_paid)}\n                            </td>\n                          )\n                        })}\n                      </tr>\n                    )\n\t\t  })}\n\n                  <tr>\n                    <th>\n                      Gross Income\n                    </th>\n                    {data.map((obj) => {\n                      return (\n                        <td className=\"text-end\" key={`loans-gross-income-${obj.branch_id}`}>\n                          {numberWithCommas(obj.data.gross_income)}\n                        </td>\n                      )\n                    })}\n                  </tr>\n                  <tr>\n                    <th>\n                      Operating Expense\n                    </th>\n                    {data.map((obj) => {\n                      return (\n                        <td className=\"text-end\" key={`loans-operating-expense-${obj.branch_id}`}>\n                          {numberWithCommas(obj.data.operating_expense)}\n                        </td>\n                      )\n                    })}\n                  </tr>\n                  <tr>\n                    <th>\n                      Net Income Before Admin Expense\n                    </th>\n                    {data.map((obj) => {\n                      return (\n                        <td className=\"text-end\" key={`loans-net-income-before-admin-expense-${obj.branch_id}`}>\n                          {numberWithCommas(obj.data.net_income_before_admin_expense)}\n                        </td>\n                      )\n                    })}\n                  </tr>\n                </tbody>\n              </table>\n            </React.Fragment>\n          )\n        }\n      })()}\n      <hr/>\n    </React.Fragment>\n  )\n}\n\nexport default Generate;\n", "import axios from 'axios';\n\nexport const generate = (args, token) => {\n  return axios.post(\n    '/api/psr_schedules/generate',\n    args,\n    {\n      headers: {\n        'X-KOINS-ACCESS-TOKEN': token\n      }\n    }\n  )\n}\n", "import React, { useEffect, useState } from \"react\";\nimport { hasFormError } from \"../../../helpers/AppHelper\";\nimport { fetchUser, saveUser } from \"../../../services/UsersService\";\nimport { Breadcrumb } from \"react-bootstrap\";\n\nexport default Form = (props) => {\n  const [user, setUser] = useState({\n    username: \"\",\n    email: \"\",\n    identification_number: \"\",\n    first_name: \"\",\n    last_name: \"\",\n    password: \"\",\n    password_confirmation: \"\",\n    incentivized_date: \"\",\n    profile_picture: \"\",\n    roles: []\n  })\n\n  const [isLoading, setIsLoading] = useState(false);\n  const [errors, setErrors]       = useState({});\n\n  useEffect(() => {\n    if (props.id) {\n      fetchUser(props.id)\n        .then((payload) => {\n          setUser(payload.data);\n        }).catch((payload) => {\n          console.log(\"Error\");\n          console.log(payload);\n        })\n    }\n  }, []);\n\n  return (\n    <React.Fragment>\n      <div className=\"container-fluid\">\n        <Breadcrumb>\n          <Breadcrumb.Item active>\n            Administration\n          </Breadcrumb.Item>\n          <Breadcrumb.Item href={`/administration/users`}>\n            Users\n          </Breadcrumb.Item>\n          <Breadcrumb.Item active>\n            {props.id ? 'Edit User' : 'New User'}\n          </Breadcrumb.Item>\n        </Breadcrumb>\n        <div className=\"card\">\n          <div className=\"card-body\">\n            <div className=\"row\">\n              <div className=\"col-md-6 col-xs-12\">\n                <div className=\"form-group\">\n                  <label className=\"form-label\">\n                    First Name\n                  </label>\n                  <input\n                    value={user.first_name}\n                    className={`form-control ${hasFormError(errors, 'first_name') ? 'is-invalid' : ''}`}\n                    disabled={isLoading}\n                    onChange={(event) => {\n                      let _user = {...user}\n                      _user.first_name = event.target.value;\n                      setUser(_user);\n                    }}\n                  />\n                  <div className=\"invalid-feedback\">\n                    {hasFormError(errors, 'first_name') ? errors.first_name.join(', ') : ''}\n                  </div>\n                </div>\n              </div>\n              <div className=\"col-md-6 col-xs-12\">\n                <div className=\"form-group\">\n                  <label className=\"form-label\">\n                    Last Name\n                  </label>\n                  <input\n                    value={user.last_name}\n                    className={`form-control ${hasFormError(errors, 'last_name') ? 'is-invalid' : ''}`}\n                    disabled={isLoading}\n                    onChange={(event) => {\n                      let _user = {...user}\n                      _user.last_name = event.target.value;\n                      setUser(_user);\n                    }}\n                  />\n                  <div className=\"invalid-feedback\">\n                    {hasFormError(errors, 'last_name') ? errors.last_name.join(', ') : ''}\n                  </div>\n                </div>\n              </div>\n            </div>\n            <div className=\"row\">\n              <div className=\"col-md-4 col-xs-12\">\n                <div className=\"form-group\">\n                  <label className=\"form-label\">\n                    Email\n                  </label>\n                  <input\n                    value={user.email}\n                    className={`form-control ${hasFormError(errors, 'email') ? 'is-invalid' : ''}`}\n                    disabled={isLoading}\n                    onChange={(event) => {\n                      let _user = {...user}\n                      _user.email = event.target.value;\n                      setUser(_user);\n                    }}\n                  />\n                  <div className=\"invalid-feedback\">\n                    {hasFormError(errors, 'email') ? errors.email.join(', ') : ''}\n                  </div>\n                </div>\n              </div>\n              <div className=\"col-md-4 col-xs-12\">\n                <div className=\"form-group\">\n                  <label className=\"form-label\">\n                    Username\n                  </label>\n                  <input\n                    value={user.username}\n                    className={`form-control ${hasFormError(errors, 'username') ? 'is-invalid' : ''}`}\n                    disabled={isLoading}\n                    onChange={(event) => {\n                      let _user = {...user}\n                      _user.username = event.target.value;\n                      setUser(_user);\n                    }}\n                  />\n                  <div className=\"invalid-feedback\">\n                    {hasFormError(errors, 'username') ? errors.username.join(', ') : ''}\n                  </div>\n                </div>\n              </div>\n              <div className=\"col-md-4 col-xs-12\">\n                <div className=\"form-group\">\n                  <label className=\"form-label\">\n                    Identification Number\n                  </label>\n                  <input\n                    value={user.identification_number}\n                    className={`form-control ${hasFormError(errors, 'identification_number') ? 'is-invalid' : ''}`}\n                    disabled={isLoading}\n                    onChange={(event) => {\n                      let _user = {...user}\n                      _user.identification_number = event.target.value;\n                      setUser(_user);\n                    }}\n                  />\n                  <div className=\"invalid-feedback\">\n                    {hasFormError(errors, 'identification_number') ? errors.identification_number.join(', ') : ''}\n                  </div>\n                </div>\n              </div>\n            </div>\n            <div className=\"row\">\n              <div className=\"col-md-4 col-xs-12\">\n                <div className=\"form-group\">\n                  <label className=\"form-label\">\n                    Roles\n                  </label>\n                  {props.roles.map((role) => {\n                    return (\n                      <React.Fragment key={`role-${role}`}>\n                        <div>\n                          <input\n                            type=\"checkbox\"\n                            className=\"form-check-input\"\n                            checked={user.roles.includes(role)}\n                            disabled={isLoading}\n                            onChange={(e) => {\n                              let roles = [...user.roles];\n\n                              if (roles.includes(role)) {\n                                const roleIndex = roles.indexOf(role);\n                                roles.splice(roleIndex, 1);\n                              } else {\n                                roles.push(role);\n                              }\n\n                              let _user = {...user};\n                              _user.roles = roles;\n                              setUser(_user);\n                            }}\n                          />\n                          <label className=\"form-label ms-2\">\n                            {role}\n                          </label>\n                        </div>\n                      </React.Fragment>\n                    )\n                  })}\n                  <input type=\"hidden\" className=\"form-control\" />\n                  <div className=\"invalid-feedback\">\n                    {hasFormError(errors, 'roles') ? errors.roles.join(', ') : ''}\n                  </div>\n                </div>\n              </div>\n              <div className=\"col-md-8 col-xs-12\">\n                <div className=\"form-group\">\n                  <label className=\"form-label\">\n                    Profile Picture\n                  </label>\n                  <input\n                    type=\"file\"\n                    className={`form-control ${hasFormError(errors, 'profile_picture') ? 'is-invalid' : ''}`}\n                    disabled={isLoading}\n                    onChange={(event) => {\n                      let _user = {...user}\n\n                      if (event.target.files.length > 0) {\n                        _user.profile_picture = event.target.files[0];\n                        setUser(_user);\n                      }\n                    }}\n                  />\n                  <div className=\"invalid-feedback\">\n                    {hasFormError(errors, 'profile_picture') ? errors.profile_picture.join(', ') : ''}\n                  </div>\n                  <label className=\"form-label mt-2\">\n                    Incentivized Date\n                  </label>\n                  <input\n                    value={user.incentivized_date}\n                    className={`form-control ${hasFormError(errors, 'incentivized_date') ? 'is-invalid' : ''}`}\n                    disabled={isLoading}\n                    type=\"date\"\n                    onChange={(event) => {\n                      let _user = {...user}\n                      _user.incentivized_date = event.target.value;\n                      setUser(_user);\n                    }}\n                  />\n                  <div className=\"invalid-feedback\">\n                    {hasFormError(errors, 'incentivized_date') ? errors.incentivized_date.join(', ') : ''}\n                  </div>\n                  <div className=\"mt-2\"/>\n                  <input\n                    checked={user.is_regular ? true : false}\n                    type=\"checkbox\"\n                    className={`form-check-input ${hasFormError(errors, 'is_regular') ? 'is-invalid' : ''}`}\n                    disabled={isLoading}\n                    onChange={(event) => {\n                      let _user = {...user}\n\n                      _user.is_regular = !user.is_regular;\n                      setUser(_user);\n                    }}\n                  />\n                  <label className=\"form-label ms-2\">\n                    Is Regular\n                  </label>\n                  <div className=\"invalid-feedback\">\n                    {hasFormError(errors, 'is_regular') ? errors.is_regular.join(', ') : ''}\n                  </div>\n                  {(() => {\n                    if (!user.id) {\n                      return (\n                        <div className=\"card mt-2\">\n                          <div className=\"card-header\">\n                            Setup Password\n                          </div>\n                          <div className=\"card-body\">\n                            <div className=\"form-group\">\n                              <label className=\"form-label\">\n                                Password\n                              </label>\n                              <input\n                                value={user.password}\n                                className={`form-control ${hasFormError(errors, 'password') ? 'is-invalid' : ''}`}\n                                disabled={isLoading}\n                                type=\"password\"\n                                onChange={(event) => {\n                                  let _user = {...user}\n                                  _user.password = event.target.value;\n                                  setUser(_user);\n                                }}\n                              />\n                              <div className=\"invalid-feedback\">\n                                {hasFormError(errors, 'password') ? errors.password.join(', ') : ''}\n                              </div>\n                            </div>\n                            <div className=\"form-group mt-2\">\n                              <label className=\"form-label\">\n                                Password Confirmation\n                              </label>\n                              <input\n                                value={user.password_confirmation}\n                                className={`form-control ${hasFormError(errors, 'password_confirmation') ? 'is-invalid' : ''}`}\n                                disabled={isLoading}\n                                type=\"password\"\n                                onChange={(event) => {\n                                  let _user = {...user}\n                                  _user.password_confirmation = event.target.value;\n                                  setUser(_user);\n                                }}\n                              />\n                              <div className=\"invalid-feedback\">\n                                {hasFormError(errors, 'password_confirmation') ? errors.password_confirmation.join(', ') : ''}\n                              </div>\n                            </div>\n                          </div>\n                        </div>\n                      )\n                    }\n                  })()}\n                </div>\n              </div>\n            </div>\n            <hr/>\n            <button\n              className=\"btn btn-primary\"\n              disabled={isLoading}\n              onClick={() => {\n                setIsLoading(true);\n                setErrors({});\n\n                saveUser({...user})\n                  .then((payload) => {\n                    window.location.href=`/administration/users/${payload.data.id}`;\n                  }).catch((payload) => {\n                    console.log(payload);\n                    setErrors(payload.response.data);\n                    setIsLoading(false);\n                  })\n              }}\n            >\n              Save\n            </button>\n            <button\n              className=\"btn btn-secondary ms-2\"\n              disabled={isLoading}\n              onClick={() => {\n                if (user.id) {\n                  window.location.href = `/administration/users/${user.id}`;\n                } else {\n                  window.location.href = '/administration/users';\n                }\n              }}\n            >\n              Cancel\n            </button>\n            <hr/>\n          </div>\n        </div>\n      </div>\n    </React.Fragment>\n  )\n}\n", "import axios from 'axios';\nimport { \n  BASE_URL\n} from 'env';\nimport { buildHeaders, buildFileUploadHeaders } from '../helpers/AppHelper';\n\nexport const fetchUserBranches = (id) => {\n  return axios.get(\n    `${BASE_URL}/api/v3/user_branches/${id}/fetch`,\n    {\n      headers: buildFileUploadHeaders()\n    }\n  )\n}\n\nexport const toggleUserBranch = (id) => {\n  return axios.post(\n    `${BASE_URL}/api/v3/user_branches/toggle`,\n    {\n      id: id\n    },\n    {\n      headers: buildFileUploadHeaders()\n    }\n  )\n}\n\nexport const deleteUser = (id) => {\n  return axios.delete(\n    `${BASE_URL}/api/v3/users/${id}`,\n    {\n      headers: buildFileUploadHeaders()\n    }\n  )\n}\n\nexport const fetchUsers = (args) => {\n  return axios.get(\n    `${BASE_URL}/api/v3/users`,\n    {\n      params: args,\n      headers: buildHeaders()\n    }\n  )\n}\n\nexport const fetchUser = (id) => {\n  return axios.get(\n    `${BASE_URL}/api/v3/users/${id}`,\n    {\n      headers: buildHeaders()\n    }\n  )\n}\n\nexport const saveUser = (args) => {\n  console.log(args);\n  let formData = new FormData();\n\n  formData.append(\"first_name\", args.first_name);\n  formData.append(\"last_name\", args.last_name);\n  formData.append(\"username\", args.username);\n  formData.append(\"identification_number\", args.identification_number);\n  formData.append(\"email\", args.email);\n  formData.append(\"roles\", args.roles);\n  formData.append(\"incentivized_date\", args.incentivized_date);\n  formData.append(\"password\", args.password);\n  formData.append(\"password_confirmation\", args.password_confirmation);\n\n  if (args.is_regular) {\n    formData.append(\"is_regular\", true);\n  }\n\n  if (args.profile_picture) {\n    formData.append(\"profile_picture\", args.profile_picture);\n  }\n\n  if (args.id) {\n    return axios.put(\n      `${BASE_URL}/api/v3/users/${args.id}`,\n      formData,\n      {\n        headers: buildFileUploadHeaders()\n      }\n    )\n  } else {\n    return axios.post(\n      `${BASE_URL}/api/v3/users`,\n      formData,\n      {\n        headers: buildFileUploadHeaders()\n      }\n    )\n  }\n}\n\nexport const forgotPassword = (args) => {\n  return axios.post(\n    `${BASE_URL}/api/forgot_password`,\n    args\n  )\n}\n", "import React, { useState, useEffect } from \"react\";\nimport { fetchUsers } from \"../../../services/UsersService\";\nimport Pagination from \"../../commons/Pagination\";\nimport { initPages } from \"../../../helpers/AppHelper\";\nimport { Breadcrumb } from \"react-bootstrap\";\n\nexport default Index = (props) => {\n  const [numPages, setNumPages]   = useState(0);\n  const [count, setCount]         = useState(0);\n  const [page, setPage]           = useState(1);\n  const [users, setUsers]         = useState([]);\n  const [pages, setPages]         = useState([]);\n  const [isLoading, setIsLoading] = useState(false);\n  const [offset]                  = useState(5);\n\n  const [filter, setFilter] = useState({\n    q: \"\"\n  });\n\n  const getUsers = () => {\n    fetchUsers({ page, q: filter.q })\n      .then((payload) => {\n        setUsers(payload.data.users);\n        setNumPages(payload.data.num_pages);\n        setCount(payload.data.count);\n        setPages(initPages(page, offset, numPages));\n      }).catch((payload) => {\n        console.log(payload);\n        console.log(payload.response);\n      })\n  }\n\n  useEffect(() => {\n    getUsers();\n  }, [page, numPages]);\n\n  return (\n    <div className=\"container-fluid\">\n      <Breadcrumb>\n        <Breadcrumb.Item active>\n          Administration\n        </Breadcrumb.Item>\n        <Breadcrumb.Item active>\n          Users\n        </Breadcrumb.Item>\n      </Breadcrumb>\n      <div className=\"card\">\n        <div className=\"card-body\">\n          <div className=\"row\">\n            <div className=\"col-md-9 col-xs-12\">\n              <div className=\"form-group\">\n                <label className=\"form-label\">\n                  Search\n                </label>\n                <input\n                  className=\"form-control\"\n                  value={filter.q}\n                  onChange={(event) => {\n                    let _filter = {...filter};\n                    _filter.q = event.target.value;\n\n                    setFilter(_filter);\n                  }}\n                />\n              </div>\n            </div>\n            <div className=\"col-md-3 col-xs-12\">\n              <div className=\"form-group\">\n                <label className=\"form-label\">\n                  Actions\n                </label>\n                <button\n                  className=\"btn btn-info w-100\"\n                  onClick={() => {\n                    getUsers();\n                  }}\n                >\n                  <span className=\"bi bi-search\"/>\n                </button>\n              </div>\n            </div>\n          </div>\n          <table className=\"table table-sm table-bordered\">\n            <thead>\n              <tr>\n                <th/>\n                <th>\n                  Name\n                </th>\n                <th>\n                  Username\n                </th>\n                <th>\n                  Email\n                </th>\n                <th>\n                  Identification Number\n                </th>\n                <th>\n                  Roles\n                </th>\n              </tr>\n            </thead>\n            <tbody>\n              {users.map((user) => {\n                return (\n                  <tr key={`user-${user.id}`}>\n                    <td className=\"text-center\">\n                      <a\n                        href={`/administration/users/${user.id}`}\n                      >\n                        <span className=\"bi bi-search\"/>\n                      </a>\n                    </td>\n                    <td>\n                      {user.full_name}\n                    </td>\n                    <td>\n                      {user.username}\n                    </td>\n                    <td>\n                      {user.email}\n                    </td>\n                    <td>\n                      {user.identification_number}\n                    </td>\n                    <td>\n                      <ul>\n                        {user.roles.filter((role) => { return role != \"\" }).map((role) => {\n                          return (\n                            <li key={`user-${user.id}-role-${role}`}>\n                              {role}\n                            </li>\n                          )\n                        })}\n                      </ul>\n                    </td>\n                  </tr>\n                )\n              })}\n            </tbody>\n          </table>\n          <Pagination\n            numPages={numPages}\n            setNumPages={setNumPages}\n            pages={pages}\n            setPages={setPages}\n            setPage={setPage}\n            page={page}\n            offset={offset}\n          />\n        </div>\n      </div>\n    </div>\n  )\n}\n", "import React from \"react\";\n\nexport default Pagination = (props) => {\n  const {\n    numPages,\n    setNumPages,\n    pages, \n    setPages,\n    page,\n    setPage,\n    offset\n  } = props;\n\n  return (\n    <nav className=\"pagination\" role=\"navigation\">\n      {(() => {\n        if (page > 1) {\n          return (\n            <React.Fragment>\n              <span className=\"first\" key={`pagination-first`}>\n                <a\n                  className=\"clickable\"\n                  href=\"#\"\n                  onClick={() => {\n                    setPage(1);\n                  }}\n                >\n                  First\n                </a>\n              </span>\n              {(() => {\n                if (pages.length > 0 && page - offset >= offset) {\n                  return (\n                    <span key=\"prev-gap\" className=\"page gap\">\n                      ...\n                    </span>\n                  )\n                }\n              })()}\n              <span className=\"prev\" key={`pagination-prev`}>\n                <a\n                  className=\"clickable\"\n                  href=\"#\"\n                  onClick={() => {\n                    setPage(page - 1);\n                  }}\n                >\n                  Prev\n                </a>\n              </span>\n            </React.Fragment>\n          )\n        }\n      })()}\n\n      {pages.map((p) => {\n        return (\n          <span key={`page-${p}`} className={`page ${p == page ? 'current' : ''}`}>\n            {(() => {\n              if (p == page) {\n                return p;\n              } else {\n                return (\n                  <a \n                    href=\"#\"\n                    onClick={() => {\n                      setPage(p);\n                    }}\n                  >\n                    {p}\n                  </a>\n                )\n              }\n            })()}\n          </span>\n        )\n      })}\n      \n\n      {(() => {\n        if (page >= 1 && page != numPages) {\n          return (\n            <span className=\"next\">\n              <a\n                className=\"clickable\"\n                href=\"#\"\n                onClick={() => {\n                  setPage(page + 1);\n                }}\n              >\n                Next\n              </a>\n            </span>\n          )\n        }\n      })()}\n\n      {(() => {\n        if (pages.length > 0 && page != pages[pages.length - 1]) {\n          return (\n            <span className=\"page gap\">\n              ...\n            </span>\n          )\n        }\n      })()}\n\n      {(() => {\n        if (page != numPages) {\n          return (\n            <span className=\"last\">\n              <a\n                className=\"clickable\"\n                href=\"#\"\n                onClick={() => {\n                  setPage(numPages);\n                }}\n              >\n                Last\n              </a>\n            </span>\n          )\n        }\n      })()}\n    </nav>\n  )\n}\n", "import React, { useEffect, useState } from \"react\";\nimport SkCubeLoading from \"../../SkCubeLoading\";\nimport { fetchUser } from \"../../../services/UsersService\";\nimport { Breadcrumb } from \"react-bootstrap\";\nimport ModalDelete from \"./ModalDelete\";\nimport BranchManager from \"./BranchManager\";\n\nexport default Show = (props) => {\n\n  const [user, setUser] = useState({\n    username: \"\",\n    email: \"\",\n    identification_number: \"\",\n    first_name: \"\",\n    last_name: \"\",\n    full_name: \"\",\n    password: \"\",\n    password_confirmation: \"\",\n    incentivized_date: \"\",\n    profile_picture_url: \"\",\n    roles: []\n  })\n\n  const [isModalDeleteOpen, setIsModalDeleteOpen] = useState(false);\n  const [isLoading, setIsLoading]                 = useState(true);\n\n  useEffect(() => {\n    fetchUser(props.id)\n      .then((payload) => {\n        setUser(payload.data);\n        setIsLoading(false);\n      }).catch((payload) => {\n        console.log(payload);\n        alert(\"Error!\");\n        setIsLoading(true);\n      });\n  }, []);\n\n  if (isLoading) {\n    return (\n      <SkCubeLoading/>\n    )\n  }\n\n  return (\n    <React.Fragment>\n      <ModalDelete\n        id={props.id}\n        isOpen={isModalDeleteOpen}\n        setIsOpen={setIsModalDeleteOpen}\n        isLoading={isLoading}\n        setIsLoading={setIsLoading}\n      />\n      <div className=\"container-fluid\">\n        <Breadcrumb>\n          <Breadcrumb.Item active>\n            Administration\n          </Breadcrumb.Item>\n          <Breadcrumb.Item href={`/administration/users`}>\n            Users\n          </Breadcrumb.Item>\n          <Breadcrumb.Item active>\n            {user.username}\n          </Breadcrumb.Item>\n        </Breadcrumb>\n        <div className=\"card mt-2 mb-2\">\n          <div className=\"row g-0\">\n            <div className=\"col-md-12 col-xs-12\">\n              <div className=\"card-body\">\n                <center>\n                  <img src={user.profile_picture_url} width=\"150px\" height=\"150px\"/>\n                </center>\n                <hr/>\n                <h3>\n                  {user.full_name}\n                  <small className=\"text-muted ms-2\">\n                    {user.identification_number}\n                  </small>\n                </h3>\n                <table className=\"table table-sm table-bordered\">\n                  <tbody>\n                    <tr>\n                      <th>\n                        First Name\n                      </th>\n                      <td>\n                        {user.first_name}\n                      </td>\n                    </tr>\n                    <tr>\n                      <th>\n                        Last Name\n                      </th>\n                      <td>\n                        {user.last_name}\n                      </td>\n                    </tr>\n                    <tr>\n                      <th>\n                        Username\n                      </th>\n                      <td>\n                        {user.username}\n                      </td>\n                    </tr>\n                    <tr>\n                      <th>\n                        Email\n                      </th>\n                      <td>\n                        {user.email}\n                      </td>\n                    </tr>\n                    <tr>\n                      <th>\n                        Incentivized Date\n                      </th>\n                      <td>\n                        {user.incentivized_date}\n                      </td>\n                    </tr>\n                    <tr>\n                      <th>\n                        Is Regular\n                      </th>\n                      <td>\n                        {(() => {\n                          if (user.is_regular) {\n                            return (\n                              <span className=\"badge text-bg-success\">\n                                Yes\n                              </span>\n                            )\n                          } else {\n                            return (\n                              <span className=\"badge text-bg-danger\">\n                                No\n                              </span>\n                            )\n                          }\n                        })()}\n                      </td>\n                    </tr>\n                    <tr>\n                      <th>\n                        Roles\n                      </th>\n                      <td>\n                        <ul>\n                          {user.roles.filter((role) => { return role != \"\" }).map((role) => {\n                            return (\n                              <li key={`role-${user.id}-${role}`}>\n                                {role}\n                              </li>\n                            )\n                          })}\n                        </ul>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n                <hr/>\n                <BranchManager\n                  id={props.id}\n                />\n                <hr/>\n                <div className=\"callout\">\n                  <h4>\n                    Actions\n                  </h4>\n                  <button\n                    className=\"btn btn-info\"\n                    onClick={() => {\n                      window.location.href=`/administration/users/${user.id}/edit`\n                    }}\n                  >\n                    <span className=\"bi bi-pencil me-2\"/>\n                    Edit\n                  </button>\n                  <button\n                    className=\"btn btn-danger ms-2\"\n                    onClick={() => {\n                      setIsModalDeleteOpen(true);\n                    }}\n                  >\n                    <span className=\"bi bi-trash me-2\"/>\n                    Delete\n                  </button>\n                </div>\n                <hr/>\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n    </React.Fragment>\n  )\n}\n", "import React from 'react';\nimport {\n  Modal\n} from \"react-bootstrap\";\nimport { deleteUser } from '../../../services/UsersService';\n\nexport default ModalDelete = (props) => {\n  const {\n    id,\n    isOpen,\n    isLoading,\n    setIsOpen,\n    setIsLoading\n  } = props;\n\n  return (\n    <Modal\n      show={isOpen}\n    >\n      <Modal.Header>\n        <Modal.Title>\n          Delete Confirmation\n        </Modal.Title>\n      </Modal.Header>\n      <Modal.Body>\n        <p>\n          Are you sure you want to delete this user?\n        </p>\n      </Modal.Body>\n      <Modal.Footer>\n        <button\n          className=\"btn btn-danger\"\n          disabled={isLoading}\n          onClick={() => {\n            setIsLoading(true);\n\n            deleteUser(id).then(() => {\n              window.location.href='/administration/users';\n            }).catch((payload) => {\n              console.log(payload.response);\n              alert(\"Error in deleting user!\");\n            })\n          }}\n        >\n          Confirm\n        </button>\n        <button\n          disabled={isLoading}\n          className=\"btn btn-light\"\n          onClick={() => {\n            setIsOpen(false);\n          }}\n        >\n          Cancel\n        </button>\n      </Modal.Footer>\n    </Modal>\n  )\n}\n", "import React, { useState, useEffect } from 'react';\nimport \"react-toggle/style.css\";\nimport { fetchUserBranches, toggleUserBranch } from '../../../services/UsersService';\n\nimport SkCubeLoading from '../../SkCubeLoading';\nimport ToggleSwitch from '../../utils/ToggleSwitch';\n\nexport default BranchManager = (props) => {\n  const [userBranches, setUserBranches] = useState([]);\n  const [isLoading, setIsLoading]       = useState(true);\n\n  useEffect(() => {\n    fetchUserBranches(props.id)\n      .then((payload) => {\n        setUserBranches(payload.data);\n        setIsLoading(false);\n      }).catch((payload) => {\n        alert(\"Error in fetching user branches\");\n        setIsLoading(true);\n      })\n  }, [])\n\n  return (\n    <React.Fragment>\n      <h4>\n        Branch Manager\n      </h4>\n      {(() => {\n        if (isLoading) {\n          return (\n            <SkCubeLoading/>\n          )\n        } else {\n          return (\n            <table className=\"table table-hover table-sm table-bordered\">\n              <thead>\n                <tr>\n                  <th>Branch</th>\n                  <th>\n                    <center>\n                      Actions\n                    </center>\n                  </th>\n                </tr>\n              </thead>\n              <tbody>\n                {userBranches.map((userBranch) => {\n                  return (\n                    <tr key={\"user-branch-\" + userBranch.id}>\n                      <td>\n                        {userBranch.branch.name}\n                      </td>\n                      <td>\n                        <center>\n                          <ToggleSwitch\n                            name={`branch-${userBranch.branch.name}`}\n                            key={`user-branch-toggle-${userBranch.id}`}\n                            checked={userBranch.active}\n                            onChange={() => {\n                              toggleUserBranch(userBranch.id)\n                                .then((payload) => {\n                                  setUserBranches(payload.data);\n                                }).catch((payload) => {\n                                  console.log(payload);\n                                  alert(\"Error in toggling user branch\");\n                                  setIsLoading(true);\n                                })\n                            }}\n                          />\n                        </center>\n                      </td>\n                    </tr>\n                  )\n                })}\n              </tbody>\n            </table>\n          )\n        }\n      })()}\n    </React.Fragment>\n  );\n}\n", "import React from 'react';\nimport $ from 'jquery';\nimport moment from 'moment';\nimport Select from 'react-select';\nimport Toggle from 'react-toggle';\nimport \"react-toggle/style.css\";\n\nimport SkCubeLoading from '../../SkCubeLoading';\nimport ErrorDisplay from '../../ErrorDisplay';\nimport {numberWithCommas} from '../../utils/helpers';\n\nexport default class ShowComponent extends React.Component {\n  constructor(props) {\n    super(props);\n\n    this.state  = {\n      isLoading: true,\n      data: false,\n      errors: false\n    };\n  }\n\n  componentDidMount() {\n    var context = this;\n   \n    $.ajax({\n      url: \"/api/v1/data_stores/allowance_computation_report/fetch\",\n      data: {\n        id: context.props.id\n      },\n\n      method: 'GET',\n\n      success: function(response) {\n        console.log(response);\n        context.setState({\n\t   isLoading: false,\n           data: response.data\n        });    \n      },\n      error: function(response) {\n        console.log(response);\n        alert(\"Something went wrong when fetching data store\");\n      }\n    });\n  }\n\n\n  renderErrorDisplay() {\n    if(this.state.errors) {\n      return  (\n        <ErrorDisplay\n          errors={this.state.errors}\n        />\n      );\n    }\n  } \n\nrenderSatoData() {\n    const sectorData = this.state.data.records;\n    return sectorData.map((sector, sectorIndex) => {\n        let sectorTotalParMonth = 0;\n        let sectorTotalParYear = 0;\n        let sectorTotalParGreaterYear = 0;\n        let sectorTotalPrincipalBalance = 0;\n     \tlet totalParSector = 0; \n\tlet portfolioLessParSector = 0;\n        let sectorAllowCurrent\t= 0;\n        let sectorAllowMonth = 0;\n\tlet sectorAllowYear = 0;\n\tlet sectorAllowGreaterYear = 0;\n\n        const sortedClusters = sector.cluster.sort((a, b) => a.cluster_name.localeCompare(b.cluster_name));\n        const tdPortStyle = {\n    \t\tbackgroundColor: '#d7ecff'\n\t \t};\n\tconst tdAllowStyle = {\n\t    \tbackgroundColor: '#8bb4ff'\n\t};\n        return (\n            <React.Fragment key={sector.sector_id}>\n                <tr>\n                    <td colSpan='11' className=\"text-center\"><strong>{sector.sector_name}</strong></td>\n                </tr>\n                {sortedClusters.map((cluster, clusterIndex) => {\n                    let clusterTotalParMonth = 0;\n                    let clusterTotalParYear = 0;\n                    let clusterTotalParGreaterYear = 0;\n                    let clusterTotalPrincipalBalance = 0;\n\t\t   \n                    const sortedSato = cluster.sato.sort((a, b) => a.sato_name.localeCompare(b.sato_name));\n\n                    sortedSato.forEach((sato) => {\n                        clusterTotalParMonth += sato.par_month;\n                        clusterTotalParYear += sato.par_year;\n                        clusterTotalParGreaterYear += sato.par_greater_year;\n                        clusterTotalPrincipalBalance += sato.principal_balance;\n                    });\n\t\t\n\t\t    const totalParCluster = clusterTotalParMonth + clusterTotalParYear + clusterTotalParGreaterYear;\n\t\t    const portfolioLessParCluster = clusterTotalPrincipalBalance - totalParCluster;\n\t\t    const clusterAllowCurrent = portfolioLessParCluster * 0.01; \n                    const clusterAllowMonth = clusterTotalParMonth * 0.35;\n\t\t    const clusterAllowYear = clusterTotalParYear * 0.35;\n                    const clusterAllowGreaterYear = clusterTotalParGreaterYear * 1;\n\n                    sectorTotalParMonth += clusterTotalParMonth;\n                    sectorTotalParYear += clusterTotalParYear;\n                    sectorTotalParGreaterYear += clusterTotalParGreaterYear;\n\t\t    sectorTotalPrincipalBalance += clusterTotalPrincipalBalance;\n                    \n                    totalParSector += totalParCluster;\n\t\t    portfolioLessParSector += portfolioLessParCluster;\n\t\t    sectorAllowCurrent = portfolioLessParSector * 0.01;\n\t\t    sectorAllowMonth = sectorTotalParMonth * 0.35;\n                    sectorAllowYear = sectorTotalParYear * 0.35;\n\t\t    sectorAllowGreaterYear = sectorTotalParGreaterYear * 1;\n\n                    return (\n                        <React.Fragment key={cluster.cluster_id}>\n                            <tr>\n                                <td colSpan='11' style={{ paddingLeft: '20px' }} className=\"text-center\"><strong>{cluster.cluster_name}</strong></td>\n\t\t\t    </tr>\n\t\t\t    <tr>\n\t\t\t  \t<td></td>\n\t\t\t\t<td className=\"text-center\" colSpan='6' style={tdPortStyle}><strong>LOAN PORTFOLIO</strong></td>\n\t\t\t\t<td className=\"text-center\" colSpan='4' style={tdAllowStyle}><strong>ALLOWANCE FOR IMPAIREMENT</strong></td>\n\t\t\t    </tr>\n                            <tr>\n                                <td><strong>SatO</strong></td>\n                                <td style={tdPortStyle}><strong>Current</strong></td>\n                                <td style={tdPortStyle}><strong>PAR (1 - 30 days)</strong></td>\n                                <td style={tdPortStyle}><strong>PAR (31 - 365 days)</strong></td>\n                                <td style={tdPortStyle}><strong>PAR (365 days above)</strong></td>\n                                <td style={tdPortStyle}><strong>Total PAR</strong></td>\n\t\t\t\t<td style={tdPortStyle}><strong>Total</strong></td>\n\t\t\t\t<td style={tdAllowStyle}><strong>Current Amount (1%)</strong></td>\n\t\t\t\t<td style={tdAllowStyle}><strong>PAR 1 - 30 days (35%)</strong></td>\n                                <td style={tdAllowStyle}><strong>PAR 31 - 365 days (35%)</strong></td>\n                                <td style={tdAllowStyle}><strong>PAR 365 days above (100%)</strong></td>\n\n                            </tr>\n                            {sortedSato.map((sato, satoIndex) => {\n\t\t\t\tconst totalParSato = sato.par_month + sato.par_year + sato.par_greater_year;\n\t\t\t\tconst portfolioLessParSato = sato.principal_balance - totalParSato;\n\t\t\t\tconst currentAllowAmount = portfolioLessParSato * 0.01;\n\t\t\t\tconst allowParMonth = sato.par_month * 0.35;\n\t\t\t\tconst allowParYear = sato.par_year * 0.35;\n\t\t\t\tconst allowParGreaterYear = sato.par_greater_year * 1;\n                                return (\n                                    <tr key={sato.sato_id}>\n\t\t\t\t\t<td style={{ paddingLeft: '40px' }}><a href={`/data_stores/repayment_rates/${sato.rr_id}`} target='_blank'>{sato.sato_name.toUpperCase()}</a></td> \n\t\t\t\t\t<td className=\"text-end\" style={tdPortStyle}>{numberWithCommas(portfolioLessParSato)}</td>          \n\t                                <td className=\"text-end\" style={tdPortStyle}>{numberWithCommas(sato.par_month)}</td>\n\t\t\t\t\t<td className=\"text-end\" style={tdPortStyle}>{numberWithCommas(sato.par_year)}</td>\n                                        <td className=\"text-end\" style={tdPortStyle}>{numberWithCommas(sato.par_greater_year)}</td>\n\t\t\t\t\t<td className=\"text-end\" style={tdPortStyle}>{numberWithCommas(totalParSato)}</td>\n\t\t\t\t\t<td className=\"text-end\" style={tdPortStyle}>{numberWithCommas(sato.principal_balance)}</td>\n\t\t\t\t\t<td className=\"text-end\" style={tdAllowStyle}>{numberWithCommas(currentAllowAmount)}</td>              \n\t\t\t\t\t<td className=\"text-end\" style={tdAllowStyle}>{numberWithCommas(allowParMonth)}</td>      \n\t\t\t\t\t<td className=\"text-end\" style={tdAllowStyle}>{numberWithCommas(allowParYear)}</td>      \n\t\t\t\t\t<td className=\"text-end\" style={tdAllowStyle}>{numberWithCommas(allowParGreaterYear)}</td>      \n                                    </tr>\n                                );\n                            })}\n                            <tr>\n\t\t\t\t<td colSpan='1'><strong>Total {cluster.cluster_name}</strong></td>\n\t\t\t\t<td className=\"text-end\" style={tdPortStyle}><strong>{numberWithCommas(portfolioLessParCluster)}</strong></td>\n                                <td className=\"text-end\" style={tdPortStyle}><strong>{numberWithCommas(clusterTotalParMonth)}</strong></td>\n                                <td className=\"text-end\" style={tdPortStyle}><strong>{numberWithCommas(clusterTotalParYear)}</strong></td>\n                                <td className=\"text-end\" style={tdPortStyle}><strong>{numberWithCommas(clusterTotalParGreaterYear)}</strong></td>\n\t\t\t\t<td className=\"text-end\" style={tdPortStyle}><strong>{numberWithCommas(totalParCluster)}</strong></td>\n                                <td className=\"text-end\" style={tdPortStyle}><strong>{numberWithCommas(clusterTotalPrincipalBalance)}</strong></td>\n\t\t\t\t<td className=\"text-end\" style={tdAllowStyle}><strong>{numberWithCommas(clusterAllowCurrent)}</strong></td>\n\t\t\t\t<td className=\"text-end\" style={tdAllowStyle}><strong>{numberWithCommas(clusterAllowMonth)}</strong></td>\n\t\t\t\t<td className=\"text-end\" style={tdAllowStyle}><strong>{numberWithCommas(clusterAllowYear)}</strong></td>\n\t\t\t\t<td className=\"text-end\" style={tdAllowStyle}><strong>{numberWithCommas(clusterAllowGreaterYear)}</strong></td>\n\t\t\t    </tr>\n                        </React.Fragment>\n                    );\n                })}\n                <tr>\n                    <td colSpan='1'><strong>Total {sector.sector_name}</strong></td>\n\t\t    <td className=\"text-end\" style={tdPortStyle}><strong>{numberWithCommas(portfolioLessParSector)}</strong></td>\n                    <td className=\"text-end\" style={tdPortStyle}><strong>{numberWithCommas(sectorTotalParMonth)}</strong></td>\n                    <td className=\"text-end\" style={tdPortStyle}><strong>{numberWithCommas(sectorTotalParYear)}</strong></td>\n                    <td className=\"text-end\" style={tdPortStyle}><strong>{numberWithCommas(sectorTotalParGreaterYear)}</strong></td>\n\t\t    <td className=\"text-end\" style={tdPortStyle}><strong>{numberWithCommas(totalParSector)}</strong></td>\n\t\t    <td className=\"text-end\" style={tdPortStyle}><strong>{numberWithCommas(sectorTotalPrincipalBalance)}</strong></td>\n\t\t    <td className=\"text-end\" style={tdAllowStyle}><strong>{numberWithCommas(sectorAllowCurrent)}</strong></td>\n\t\t    <td className=\"text-end\" style={tdAllowStyle}><strong>{numberWithCommas(sectorAllowMonth)}</strong></td>\n\t\t    <td className=\"text-end\" style={tdAllowStyle}><strong>{numberWithCommas(sectorAllowYear)}</strong></td>\n\t\t    <td className=\"text-end\" style={tdAllowStyle}><strong>{numberWithCommas(sectorAllowGreaterYear)}</strong></td>\n\t\t</tr>\n            </React.Fragment>\n\t);\n    });\n}\n\nrenderTotal() {\n    const sectorData = this.state.data.records;\n    let totalPrincipalBalance = 0;\n    let totalParMonth = 0;\n    let totalParYear = 0;\n    let totalParGreaterYear = 0;\n    let totalPar = 0;\n    let totalPortfolioLessPar = 0;\n    let totalAllowCurrentAmount = 0;\n    let totalAllowMonth = 0;\n    let totalAllowYear = 0;\n    let totalAllowGreaterYear = 0;\n        const tdPortStyle = {\n    \t\tbackgroundColor: '#d7ecff'\n\t \t};\n\tconst tdAllowStyle = {\n\t    \tbackgroundColor: '#8bb4ff'\n\t};\n\n    sectorData.forEach((sector) => {\n        sector.cluster.forEach((cluster) => {\n            cluster.sato.forEach((sato) => {\n                totalPrincipalBalance += sato.principal_balance;\n                totalParMonth += sato.par_month;\n                totalParYear += sato.par_year;\n                totalParGreaterYear += sato.par_greater_year;\n                totalPar += sato.par_month + sato.par_year + sato.par_greater_year;\n\t\ttotalPortfolioLessPar += sato.principal_balance - (sato.par_month + sato.par_year + sato.par_greater_year);\n\t\ttotalAllowCurrentAmount = totalPortfolioLessPar * 0.01\n\t   \ttotalAllowMonth = totalParMonth * 0.35;\n\t\ttotalAllowYear = totalParYear * 0.35;\n\t\ttotalAllowGreaterYear = totalParGreaterYear * 1;\n\t    });\n        });\n    });\n\n\treturn (\n        <tr>\n            <td colSpan><strong>Total</strong></td>\n            <td className=\"text-end\" style={tdPortStyle}><strong>{numberWithCommas(totalPortfolioLessPar)}</strong></td>\n            <td className=\"text-end\" style={tdPortStyle}><strong>{numberWithCommas(totalParMonth)}</strong></td>\n            <td className=\"text-end\" style={tdPortStyle}><strong>{numberWithCommas(totalParYear)}</strong></td>\n            <td className=\"text-end\" style={tdPortStyle}><strong>{numberWithCommas(totalParGreaterYear)}</strong></td>\n\t    <td className=\"text-end\" style={tdPortStyle}><strong>{numberWithCommas(totalPar)}</strong></td>\n\t    <td className=\"text-end\" style={tdPortStyle}><strong>{numberWithCommas(totalPrincipalBalance)}</strong></td>\n\t    <td className=\"text-end\" style={tdAllowStyle}><strong>{numberWithCommas(totalAllowCurrentAmount)}</strong></td>\n            <td className=\"text-end\" style={tdAllowStyle}><strong>{numberWithCommas(totalAllowMonth)}</strong></td>\n            <td className=\"text-end\" style={tdAllowStyle}><strong>{numberWithCommas(totalAllowYear)}</strong></td>\n\t    <td className=\"text-end\" style={tdAllowStyle}><strong>{numberWithCommas(totalAllowGreaterYear)}</strong></td>\n\t</tr>\n    );\n}\n\n  render() {\n    if(this.state.isLoading) {\n      return  (\n        <SkCubeLoading/>\n      );\n    } else {\n\treturn  (\n\t<div>\n\t\t\n\n\t<div className=\"tableAllowanceComputation\">\n          <table className=\"table table-lg table-bordered table-responsive\">\n            <thead>\n            </thead>\n            <tbody>\n\t     {this.renderSatoData()}\n\t     {this.renderTotal()}\n            </tbody>\n          </table>\n          </div>\n        </div>\n \n      );\n    }\n  }\n \n\n}\n", "import React, { useState, useEffect } from \"react\";\nimport { hasFormError } from \"../../helpers/AppHelper\";\nimport kmba_logo from '../../../assets/images/kmba_logo.png';\nimport logo from '../../../assets/images/logo.png';\nimport { createSession, login } from \"../../services/AuthService\";\nimport ModalForgotPassword from \"./ModalForgotPassword\";\n\nexport default Login = (props) => {\n  const [username, setUsername]                                   = useState(\"\");\n  const [password, setPassword]                                   = useState(\"\");\n  const [isLoading, setIsLoading]                                 = useState(false);\n  const [errors, setErrors]                                       = useState({});\n  const [isForgotPasswordModalOpen, setIsForgotPasswordModalOpen] = useState(false);\n\n  useEffect(() => {\n  }, []);\n\n  const {\n    is_microloans,\n    is_microinsurance\n  } = props;\n\n  const handleLogin = () => {\n    setIsLoading(true);\n    setErrors({});\n\n    login({ username, password })\n      .then((payload) => {\n        console.log(payload);\n\n        let token = payload.data.token;\n        let user = payload.data.user;\n\n        createSession({ token, user });\n        window.location.href = '/';\n      }).catch((payload) => {\n        console.log(payload.response.data);\n        setIsLoading(false);\n        setErrors(payload.response.data);\n      })\n  }\n\n  return (\n    <div className=\"d-flex align-items-center\" style={{ height: \"100vh\" }}>\n      <ModalForgotPassword\n        isOpen={isForgotPasswordModalOpen}\n        setIsOpen={setIsForgotPasswordModalOpen}\n      />\n      <div className=\"container\">\n        <div className=\"card\">\n          <div className=\"card-body\">\n            <center>\n              {(() => {\n                if (is_microinsurance) {\n                  return (\n                    <img src={kmba_logo} width=\"220px\"/>\n                  )\n                } else if (is_microloans) {\n                  return (\n                    <img src={logo} width=\"220px\"/>\n                  )\n                }\n              })()}\n            </center>\n            <hr/>\n            <div className=\"row\">\n              <div className=\"col mb-4\">\n                <label className=\"form-label\">\n                  Username\n                </label>\n                <input\n                  value={username}\n                  disabled={isLoading}\n                  className={`form-control ${hasFormError(errors, 'username') ? 'is-invalid' : ''}`}\n                  onChange={(e) => {\n                    setUsername(e.target.value);\n                  }}\n                />\n                <div className=\"invalid-feedback\">\n                  {hasFormError(errors, 'username') ? errors.username.join(', ') : ''}\n                </div>\n                <label className=\"form-label mt-4\">\n                  Password\n                </label>\n                <input\n                  value={password}\n                  type=\"password\"\n                  disabled={isLoading}\n                  className={`form-control ${hasFormError(errors, 'password') ? 'is-invalid' : ''}`}\n                  onChange={(e) => {\n                    setPassword(e.target.value);\n                  }}\n                />\n                <div className=\"invalid-feedback\">\n                  {hasFormError(errors, 'password') ? errors.password.join(', ') : ''}\n                </div>\n              </div>\n            </div>\n            <hr/>\n            <div className=\"row\">\n              <div className=\"col mb-4\">\n                <center>\n                  <button\n                    className=\"btn btn-primary\"\n                    disabled={isLoading}\n                    onClick={() => {\n                      handleLogin();\n                    }}\n                  >\n                    <span className=\"bi bi-shield-check me-2\"/>\n                    Login to System\n                  </button>\n                  <hr/>\n                  <div\n                    className=\"clickable\"\n                    onClick={() => {\n                      setIsForgotPasswordModalOpen(true);\n                    }}\n                  >\n                    Forgot Password\n                  </div>\n                </center>\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  )\n}\n", "import React, {\n  useState\n} from 'react';\nimport { hasFormError } from '../../helpers/AppHelper';\nimport { forgotPassword } from '../../services/UsersService';\nimport { Modal } from 'react-bootstrap';\n\nexport default ModalForgotPassword = (props) => {\n  const [email, setEmail]         = useState(\"\");\n  const [isLoading, setIsLoading] = useState(false);\n  const [errors, setErrors]       = useState({});\n  const [isSuccess, setIsSuccess]  = useState(false);\n\n  const {\n    isOpen,\n    setIsOpen\n  } = props;\n\n  return (\n    <Modal\n      show={isOpen}\n    >\n      <Modal.Header closeButton>\n        <Modal.Title>\n          Forgot Password\n        </Modal.Title>\n      </Modal.Header>\n      <Modal.Body>\n        <label className=\"form-label\">\n          Enter Email:\n        </label>\n        <input\n          value={email}\n          disabled={isLoading}\n          className={`form-control ${hasFormError(errors, 'email') ? 'is-invalid' : ''}`}\n          onChange={(e) => {\n            setEmail(e.target.value);\n          }}\n        />\n        <div className=\"invalid-feedback\">\n          {hasFormError(errors, 'email') ? errors.email.join(', ') : ''}\n        </div>\n        {(() => {\n          if (isSuccess) {\n            return (\n              <p>\n                Forgot password instructions sent.\n              </p>\n            )\n          }\n        })()}\n      </Modal.Body>\n      <Modal.Footer>\n        <button\n          className=\"btn btn-primary\"\n          disabled={isLoading}\n          onClick={() => {\n            setIsLoading(true);\n            setErrors({});\n            setIsSuccess(false);\n\n            forgotPassword({ email })\n              .then((payload) => {\n                setEmail(\"\");\n                setIsLoading(false);\n                setIsSuccess(true);\n              }).catch((payload) => {\n                console.log(payload.response);\n                setErrors(payload.response.data);\n                setIsLoading(false);\n              })\n          }}\n        >\n          Submit\n        </button>\n        <button\n          className=\"btn btn-light\"\n          disabled={isLoading}\n          onClick={() => {\n            setIsLoading(false);\n            setIsOpen(false);\n          }}\n        >\n          Cancel\n        </button>\n      </Modal.Footer>\n    </Modal>\n  )\n}\n", "import React, { useState, useEffect } from \"react\";\nimport ErrorList from '../ErrorList';\nimport Select from 'react-select';\nimport { generate } from '../services/AllowanceLossesService';\nimport axios from 'axios';\n\nconst Generate = (props) => {\n  const [dates, setDates] = useState([]);\n  const [isLoading, setIsLoading] = useState(false);\n  const [errors, setErrors] = useState([]);\n  const [dataByDate, setDataByDate] = useState({});\n  const [selectedDates, setSelectedDates] = useState([]);\n\n  useEffect(() => {\n    axios.get('/api/allowance_losses/fetch')\n      .then(response => setDates(response.data.date_as_of))\n      .catch(error => console.error('Error fetching data!', error));\n  }, []);\n\n  const handleGenerateClick = () => {\n    setIsLoading(true);\n    setErrors([]);\n\n    const payloads = selectedDates.map(date => ({ date_select: date.value }));\n\n    Promise.all(payloads.map(payload => generate(payload, props.token)))\n      .then(results => {\n        const newDataByDate = {};\n        results.forEach((res, index) => {\n          newDataByDate[selectedDates[index].value] = res.data[\"data\"][0][\"data\"][\"records\"];\n        });\n        setDataByDate(newDataByDate);\n      })\n      .catch(error => setErrors([error.message]))\n      .finally(() => setIsLoading(false));\n  };\n\n  const handleDateChange = (selectedOptions) => {\n    // Limit selection to 2 dates\n    if (selectedOptions.length <= 2) {\n      setSelectedDates(selectedOptions);\n    }\n  };\n\n  const dateOptions = dates.map(date => ({ value: date, label: date }));\n\n  const formatNumber = (number) => {\n    return number.toLocaleString(undefined, { minimumFractionDigits: 2, maximumFractionDigits: 2 });\n  };\n\n  const calculateClusterTotals = (cname) => {\n    let totalCurrentAmount = 0;\n    let totalParMonth = 0;\n    let totalParYear = 0;\n    let totalParGreaterYear = 0;\n\n    cname['sato'].forEach((sname) => {\n      const totalPar = sname[\"par_month\"] + sname[\"par_year\"] + sname[\"par_greater_year\"];\n      const portfolioLessPar = sname[\"principal_balance\"] - totalPar;\n      totalCurrentAmount += portfolioLessPar * 0.01;\n      totalParMonth += sname[\"par_month\"] * 0.35;\n      totalParYear += sname[\"par_year\"] * 0.35;\n      totalParGreaterYear += sname[\"par_greater_year\"] * 1;\n    });\n\n    return {\n      totalCurrentAmount,\n      totalParMonth,\n      totalParYear,\n      totalParGreaterYear\n    };\n  };\n\n  const calculateSectorTotals = (sector) => {\n    let sectorTotalCurrentAmount = 0;\n    let sectorTotalParMonth = 0;\n    let sectorTotalParYear = 0;\n    let sectorTotalParGreaterYear = 0;\n\n    sector.cluster.forEach((cname) => {\n      const totals = calculateClusterTotals(cname);\n      sectorTotalCurrentAmount += totals.totalCurrentAmount;\n      sectorTotalParMonth += totals.totalParMonth;\n      sectorTotalParYear += totals.totalParYear;\n      sectorTotalParGreaterYear += totals.totalParGreaterYear;\n    });\n\n    return {\n      sectorTotalCurrentAmount,\n      sectorTotalParMonth,\n      sectorTotalParYear,\n      sectorTotalParGreaterYear\n    };\n  };\n\n  const calculateOverallTotals = (sortedClusters) => {\n    let overallTotalCurrentAmount = 0;\n    let overallTotalParMonth = 0;\n    let overallTotalParYear = 0;\n    let overallTotalParGreaterYear = 0;\n\n    sortedClusters.forEach((sector) => {\n      const sectorTotals = calculateSectorTotals(sector);\n      overallTotalCurrentAmount += sectorTotals.sectorTotalCurrentAmount;\n      overallTotalParMonth += sectorTotals.sectorTotalParMonth;\n      overallTotalParYear += sectorTotals.sectorTotalParYear;\n      overallTotalParGreaterYear += sectorTotals.sectorTotalParGreaterYear;\n    });\n\n    return {\n      overallTotalCurrentAmount,\n      overallTotalParMonth,\n      overallTotalParYear,\n      overallTotalParGreaterYear\n    };\n  };\n\n  const calculateClusterDifferences = (clusters1, clusters2) => {\n    const differences = [];\n\n    clusters1.forEach((cluster1) => {\n      const cluster2 = clusters2.find((c) => c.cluster_name === cluster1.cluster_name);\n\n      if (cluster2) {\n        const totals1 = calculateClusterTotals(cluster1);\n        const totals2 = calculateClusterTotals(cluster2);\n\n        differences.push({\n          cluster_name: cluster1.cluster_name,\n          sato: cluster1.sato.map((sato1) => {\n            const sato2 = cluster2.sato.find((s) => s.sato_name === sato1.sato_name) || {};\n\n            const totalPar1 = sato1.par_month + sato1.par_year + sato1.par_greater_year;\n            const portfolioLessPar1 = sato1.principal_balance - totalPar1;\n            const currentAllowAmount1 = portfolioLessPar1 * 0.01;\n            const allowParMonth1 = sato1.par_month * 0.35;\n            const allowParYear1 = sato1.par_year * 0.35;\n            const allowParGreaterYear1 = sato1.par_greater_year;\n\n            const totalPar2 = (sato2.par_month || 0) + (sato2.par_year || 0) + (sato2.par_greater_year || 0);\n            const portfolioLessPar2 = (sato2.principal_balance || 0) - totalPar2;\n            const currentAllowAmount2 = portfolioLessPar2 * 0.01;\n            const allowParMonth2 = (sato2.par_month || 0) * 0.35;\n            const allowParYear2 = (sato2.par_year || 0) * 0.35;\n            const allowParGreaterYear2 = sato2.par_greater_year || 0;\n\n            return {\n              sato_name: sato1.sato_name,\n              currentDifference: currentAllowAmount1 - currentAllowAmount2,\n              parMonthDifference: allowParMonth1 - allowParMonth2,\n              parYearDifference: allowParYear1 - allowParYear2,\n              parGreaterYearDifference: allowParGreaterYear1 - allowParGreaterYear2\n            };\n          }),\n          totals: {\n            totalCurrentAmountDifference: totals1.totalCurrentAmount - totals2.totalCurrentAmount,\n            totalParMonthDifference: totals1.totalParMonth - totals2.totalParMonth,\n            totalParYearDifference: totals1.totalParYear - totals2.totalParYear,\n            totalParGreaterYearDifference: totals1.totalParGreaterYear - totals2.totalParGreaterYear\n          }\n        });\n      }\n    });\n\n    return differences;\n  };\n\n  const calculateDifferences = (sectors1, sectors2) => {\n    const differences = sectors1.map((sector1) => {\n      const sector2 = sectors2.find((s) => s.sector_name === sector1.sector_name);\n\n      if (sector2) {\n        const clusterDifferences = calculateClusterDifferences(sector1.cluster, sector2.cluster);\n\n        return {\n          sector_name: sector1.sector_name,\n          cluster: clusterDifferences,\n          totals: calculateSectorTotalsDifference(sector1, sector2)\n        };\n      }\n\n      return null;\n    }).filter((diff) => diff !== null);\n\n    return differences;\n  };\n\n  const calculateSectorTotalsDifference = (sector1, sector2) => {\n    const totals1 = calculateSectorTotals(sector1);\n    const totals2 = calculateSectorTotals(sector2);\n\n    return {\n      sectorTotalCurrentAmountDifference: totals1.sectorTotalCurrentAmount - totals2.sectorTotalCurrentAmount,\n      sectorTotalParMonthDifference: totals1.sectorTotalParMonth - totals2.sectorTotalParMonth,\n      sectorTotalParYearDifference: totals1.sectorTotalParYear - totals2.sectorTotalParYear,\n      sectorTotalParGreaterYearDifference: totals1.sectorTotalParGreaterYear - totals2.sectorTotalParGreaterYear\n    };\n  };\n\n  const calculateOverallDifferences = (differences) => {\n    let overallCurrentDifference = 0;\n    let overallParMonthDifference = 0;\n    let overallParYearDifference = 0;\n    let overallParGreaterYearDifference = 0;\n\n    differences.forEach((sector) => {\n      overallCurrentDifference += sector.totals.sectorTotalCurrentAmountDifference;\n      overallParMonthDifference += sector.totals.sectorTotalParMonthDifference;\n      overallParYearDifference += sector.totals.sectorTotalParYearDifference;\n      overallParGreaterYearDifference += sector.totals.sectorTotalParGreaterYearDifference;\n    });\n\n    return {\n      overallCurrentDifference,\n      overallParMonthDifference,\n      overallParYearDifference,\n      overallParGreaterYearDifference\n    };\n  };\n\n  const headerStyle = {\n    backgroundColor: '#1f75fe',\n    color: 'white',\n    padding: '8px',\n    minWidth: '150px'\n  };\n\n  const cellStyle = {\n    backgroundColor: '#add8e6',\n    padding: '8px',\n    minWidth: '150px'\n  };\n\n  return (\n    <React.Fragment>\n      <h1>Generate Allowance For Impairment Losses</h1>\n      <hr />\n      <div>\n        <label>Dates</label>\n        <Select\n          value={selectedDates}\n          options={dateOptions}\n          isMulti\n          isDisabled={isLoading}\n          onChange={handleDateChange}\n        />\n      </div>\n      <button\n        className=\"btn btn-info w-100 mt-2\"\n        disabled={isLoading || selectedDates.length !== 2}\n        onClick={handleGenerateClick}\n      >\n        Generate\n      </button>\n      <ErrorList errors={errors} />\n      <hr />\n      <div className=\"tables-container\">\n        {selectedDates.map((date, idx) => {\n          const dataClusterSector = dataByDate[date.value] || [];\n          const sortedClusters = dataClusterSector.map((sector) => {\n            sector.cluster.sort((a, b) => a.cluster_name.localeCompare(b.cluster_name));\n            return sector;\n          });\n          const overallTotals = calculateOverallTotals(sortedClusters);\n\n          return (\n            <div key={date.value} className={`table-wrapper ${idx % 2 === 0 ? 'left-table' : 'right-table'}`}>\n              <h3>{`Date: ${date.label}`}</h3>\n              {sortedClusters.length > 0 && (\n                <div>\n                  <table className=\"table table-bordered\" style={{ width: '100%', tableLayout: 'fixed' }}>\n                    <tbody>\n                      {sortedClusters.map((sector, index) => {\n                        const sectorTotals = calculateSectorTotals(sector);\n                        return (\n                          <React.Fragment key={index}>\n                            <tr>\n                              <th className=\"text-center\" colSpan=\"5\" style={headerStyle}>{sector[\"sector_name\"]}</th>\n                            </tr>\n                            {sector[\"cluster\"].map((cluster, cindex) => {\n                              const totals = calculateClusterTotals(cluster);\n                              return (\n                                <React.Fragment key={`${index}-${cindex}`}>\n                                  <tr>\n                                    <td className=\"text-center\" colSpan=\"5\" style={cellStyle}><strong>{cluster[\"cluster_name\"]}</strong></td>\n                                  </tr>\n                                  <tr style={headerStyle}>\n                                    <th className=\"text-center\">SatO</th>\n                                    <th className=\"text-center\">Current Amount (1%)</th>\n                                    <th className=\"text-center\">PAR 1 - 30 days (35%)</th>\n                                    <th className=\"text-center\">PAR 31 - 365 days (35%)</th>\n                                    <th className=\"text-center\">PAR 365 days above (100%)</th>\n                                  </tr>\n                                  {cluster['sato']\n                                    .sort((a, b) => a.sato_name.localeCompare(b.sato_name))\n                                    .map((sname, sindex) => {\n                                      const totalPar = sname[\"par_month\"] + sname[\"par_year\"] + sname[\"par_greater_year\"];\n                                      const portfolioLessPar = sname[\"principal_balance\"] - totalPar;\n                                      const currentAllowAmount = portfolioLessPar * 0.01;\n                                      const allowParMonth = sname[\"par_month\"] * 0.35;\n                                      const allowParYear = sname[\"par_year\"] * 0.35;\n                                      const allowParGreaterYear = sname[\"par_greater_year\"] * 1;\n\n                                      return (\n                                        <tr key={`${index}-${cindex}-${sindex}`} style={cellStyle}>\n                                          <td className=\"text-center\">{sname[\"sato_name\"]}</td>\n                                          <td className=\"text-end\">{formatNumber(currentAllowAmount)}</td>\n                                          <td className=\"text-end\">{formatNumber(allowParMonth)}</td>\n                                          <td className=\"text-end\">{formatNumber(allowParYear)}</td>\n                                          <td className=\"text-end\">{formatNumber(allowParGreaterYear)}</td>\n                                        </tr>\n                                      );\n                                    })}\n                                  <tr style={cellStyle}>\n                                    <td className=\"text-left\"><strong>Total {cluster[\"cluster_name\"]}</strong></td>\n                                    <td className=\"text-end\"><strong>{formatNumber(totals.totalCurrentAmount)}</strong></td>\n                                    <td className=\"text-end\"><strong>{formatNumber(totals.totalParMonth)}</strong></td>\n                                    <td className=\"text-end\"><strong>{formatNumber(totals.totalParYear)}</strong></td>\n                                    <td className=\"text-end\"><strong>{formatNumber(totals.totalParGreaterYear)}</strong></td>\n                                  </tr>\n                                </React.Fragment>\n                              );\n                            })}\n                            <tr style={cellStyle}>\n                              <td className=\"text-left\"><strong>Total {sector[\"sector_name\"]}</strong></td>\n                              <td className=\"text-end\"><strong>{formatNumber(sectorTotals.sectorTotalCurrentAmount)}</strong></td>\n                              <td className=\"text-end\"><strong>{formatNumber(sectorTotals.sectorTotalParMonth)}</strong></td>\n                              <td className=\"text-end\"><strong>{formatNumber(sectorTotals.sectorTotalParYear)}</strong></td>\n                              <td className=\"text-end\"><strong>{formatNumber(sectorTotals.sectorTotalParGreaterYear)}</strong></td>\n                            </tr>\n                          </React.Fragment>\n                        );\n                      })}\n                      <tr style={headerStyle}>\n                        <td className=\"text-left\"><strong>Overall Total</strong></td>\n                        <td className=\"text-end\"><strong>{formatNumber(overallTotals.overallTotalCurrentAmount)}</strong></td>\n                        <td className=\"text-end\"><strong>{formatNumber(overallTotals.overallTotalParMonth)}</strong></td>\n                        <td className=\"text-end\"><strong>{formatNumber(overallTotals.overallTotalParYear)}</strong></td>\n                        <td className=\"text-end\"><strong>{formatNumber(overallTotals.overallTotalParGreaterYear)}</strong></td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </div>\n              )}\n            </div>\n          );\n        })}\n        {selectedDates.length === 2 && (() => {\n          const [firstDate, secondDate] = selectedDates;\n          const firstDataCluster = dataByDate[firstDate.value] || [];\n          const secondDataCluster = dataByDate[secondDate.value] || [];\n\n          const differences = calculateDifferences(firstDataCluster, secondDataCluster);\n          const overallDifferences = calculateOverallDifferences(differences);\n\n          return (\n            <div className=\"table-wrapper right-table\">\n              <h3>{`Difference: ${firstDate.label} vs ${secondDate.label}`}</h3>\n              {differences.length > 0 && (\n                <div>\n                  <table className=\"table table-bordered\" style={{ width: '100%', tableLayout: 'fixed' }}>\n                    <tbody>\n                      {differences.map((sector, index) => (\n                        <React.Fragment key={index}>\n                          <tr>\n                            <th className=\"text-center\" colSpan=\"5\" style={headerStyle}>{sector.sector_name}</th>\n                          </tr>\n                          {sector.cluster.map((cluster, cindex) => (\n                            <React.Fragment key={`${index}-${cindex}`}>\n                              <tr>\n                                <td className=\"text-center\" colSpan=\"5\" style={cellStyle}><strong>{cluster.cluster_name}</strong></td>\n                              </tr>\n                              <tr style={headerStyle}>\n                                <th className=\"text-center\">SatO</th>\n                                <th className=\"text-center\">Current Amount (1%)</th>\n                                <th className=\"text-center\">PAR 1 - 30 days (35%)</th>\n                                <th className=\"text-center\">PAR 31 - 365 days (35%)</th>\n                                <th className=\"text-center\">PAR 365 days above (100%)</th>\n                              </tr>\n                              {cluster.sato.map((sname, sindex) => (\n                                <tr key={`${index}-${cindex}-${sindex}`} style={cellStyle}>\n                                  <td className=\"text-center\">{sname.sato_name}</td>\n                                  <td className=\"text-end\">{formatNumber(sname.currentDifference)}</td>\n                                  <td className=\"text-end\">{formatNumber(sname.parMonthDifference)}</td>\n                                  <td className=\"text-end\">{formatNumber(sname.parYearDifference)}</td>\n                                  <td className=\"text-end\">{formatNumber(sname.parGreaterYearDifference)}</td>\n                                </tr>\n                              ))}\n                              <tr style={cellStyle}>\n                                <td className=\"text-left\"><strong>Total {cluster.cluster_name}</strong></td>\n                                <td className=\"text-end\"><strong>{formatNumber(cluster.totals.totalCurrentAmountDifference)}</strong></td>\n                                <td className=\"text-end\"><strong>{formatNumber(cluster.totals.totalParMonthDifference)}</strong></td>\n                                <td className=\"text-end\"><strong>{formatNumber(cluster.totals.totalParYearDifference)}</strong></td>\n                                <td className=\"text-end\"><strong>{formatNumber(cluster.totals.totalParGreaterYearDifference)}</strong></td>\n                              </tr>\n                            </React.Fragment>\n                          ))}\n                          <tr style={cellStyle}>\n                            <td className=\"text-left\"><strong>Total {sector.sector_name}</strong></td>\n                            <td className=\"text-end\"><strong>{formatNumber(sector.totals.sectorTotalCurrentAmountDifference)}</strong></td>\n                            <td className=\"text-end\"><strong>{formatNumber(sector.totals.sectorTotalParMonthDifference)}</strong></td>\n                            <td className=\"text-end\"><strong>{formatNumber(sector.totals.sectorTotalParYearDifference)}</strong></td>\n                            <td className=\"text-end\"><strong>{formatNumber(sector.totals.sectorTotalParGreaterYearDifference)}</strong></td>\n                          </tr>\n                        </React.Fragment>\n                      ))}\n                      <tr style={headerStyle}>\n                        <td className=\"text-left\"><strong>Overall Total Difference</strong></td>\n                        <td className=\"text-end\"><strong>{formatNumber(overallDifferences.overallCurrentDifference)}</strong></td>\n                        <td className=\"text-end\"><strong>{formatNumber(overallDifferences.overallParMonthDifference)}</strong></td>\n                        <td className=\"text-end\"><strong>{formatNumber(overallDifferences.overallParYearDifference)}</strong></td>\n                        <td className=\"text-end\"><strong>{formatNumber(overallDifferences.overallParGreaterYearDifference)}</strong></td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </div>\n              )}\n            </div>\n          );\n        })()}\n      </div>\n\n      <style jsx>{`\n        .tables-container {\n          display: flex;\n          justify-content: space-between;\n          gap: 20px;\n        }\n\n        .table-wrapper {\n          flex: 1;\n          margin: 10px;\n          overflow-x: auto;\n          min-width: 600px; /* Ensure each table has a minimum width */\n        }\n\n        .left-table {\n          margin-right: 10px;\n        }\n\n        .right-table {\n          margin-left: 10px;\n        }\n\n        th, td {\n          padding: 12px; /* Increase padding for better readability */\n          min-width: 150px; /* Set a minimum width for table cells */\n          word-break: keep-all; /* Prevent line breaks within words */\n        }\n\n        table {\n          width: 100%; /* Ensure the table takes full width */\n          table-layout: auto; /* Allow table columns to resize automatically */\n        }\n      `}</style>\n    </React.Fragment>\n  );\n};\n\nexport default Generate;\n", "import axios from 'axios';\n\nexport const generate = (payload, token) => {\n  const csrfToken = document.querySelector('meta[name=\"csrf-token\"]').getAttribute('content');\n\n  return axios.post(\n    '/api/allowance_losses/generate',\n    payload,\n    {\n      headers: {\n        'X-CSRF-Token': csrfToken,\n        'X-KOINS-ACCESS-TOKEN': token,\n        'Content-Type': 'application/json'\n      }\n    }\n  );\n};\n", "/*!\n * mustache.js - Logic-less {{mustache}} templates with JavaScript\n * http://github.com/janl/mustache.js\n */\n\nvar objectToString = Object.prototype.toString;\nvar isArray = Array.isArray || function isArrayPolyfill (object) {\n  return objectToString.call(object) === '[object Array]';\n};\n\nfunction isFunction (object) {\n  return typeof object === 'function';\n}\n\n/**\n * More correct typeof string handling array\n * which normally returns typeof 'object'\n */\nfunction typeStr (obj) {\n  return isArray(obj) ? 'array' : typeof obj;\n}\n\nfunction escapeRegExp (string) {\n  return string.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, '\\\\$&');\n}\n\n/**\n * Null safe way of checking whether or not an object,\n * including its prototype, has a given property\n */\nfunction hasProperty (obj, propName) {\n  return obj != null && typeof obj === 'object' && (propName in obj);\n}\n\n/**\n * Safe way of detecting whether or not the given thing is a primitive and\n * whether it has the given property\n */\nfunction primitiveHasOwnProperty (primitive, propName) {\n  return (\n    primitive != null\n    && typeof primitive !== 'object'\n    && primitive.hasOwnProperty\n    && primitive.hasOwnProperty(propName)\n  );\n}\n\n// Workaround for https://issues.apache.org/jira/browse/COUCHDB-577\n// See https://github.com/janl/mustache.js/issues/189\nvar regExpTest = RegExp.prototype.test;\nfunction testRegExp (re, string) {\n  return regExpTest.call(re, string);\n}\n\nvar nonSpaceRe = /\\S/;\nfunction isWhitespace (string) {\n  return !testRegExp(nonSpaceRe, string);\n}\n\nvar entityMap = {\n  '&': '&amp;',\n  '<': '&lt;',\n  '>': '&gt;',\n  '\"': '&quot;',\n  \"'\": '&#39;',\n  '/': '&#x2F;',\n  '`': '&#x60;',\n  '=': '&#x3D;'\n};\n\nfunction escapeHtml (string) {\n  return String(string).replace(/[&<>\"'`=\\/]/g, function fromEntityMap (s) {\n    return entityMap[s];\n  });\n}\n\nvar whiteRe = /\\s*/;\nvar spaceRe = /\\s+/;\nvar equalsRe = /\\s*=/;\nvar curlyRe = /\\s*\\}/;\nvar tagRe = /#|\\^|\\/|>|\\{|&|=|!/;\n\n/**\n * Breaks up the given `template` string into a tree of tokens. If the `tags`\n * argument is given here it must be an array with two string values: the\n * opening and closing tags used in the template (e.g. [ \"<%\", \"%>\" ]). Of\n * course, the default is to use mustaches (i.e. mustache.tags).\n *\n * A token is an array with at least 4 elements. The first element is the\n * mustache symbol that was used inside the tag, e.g. \"#\" or \"&\". If the tag\n * did not contain a symbol (i.e. {{myValue}}) this element is \"name\". For\n * all text that appears outside a symbol this element is \"text\".\n *\n * The second element of a token is its \"value\". For mustache tags this is\n * whatever else was inside the tag besides the opening symbol. For text tokens\n * this is the text itself.\n *\n * The third and fourth elements of the token are the start and end indices,\n * respectively, of the token in the original template.\n *\n * Tokens that are the root node of a subtree contain two more elements: 1) an\n * array of tokens in the subtree and 2) the index in the original template at\n * which the closing tag for that section begins.\n *\n * Tokens for partials also contain two more elements: 1) a string value of\n * indendation prior to that tag and 2) the index of that tag on that line -\n * eg a value of 2 indicates the partial is the third tag on this line.\n */\nfunction parseTemplate (template, tags) {\n  if (!template)\n    return [];\n  var lineHasNonSpace = false;\n  var sections = [];     // Stack to hold section tokens\n  var tokens = [];       // Buffer to hold the tokens\n  var spaces = [];       // Indices of whitespace tokens on the current line\n  var hasTag = false;    // Is there a {{tag}} on the current line?\n  var nonSpace = false;  // Is there a non-space char on the current line?\n  var indentation = '';  // Tracks indentation for tags that use it\n  var tagIndex = 0;      // Stores a count of number of tags encountered on a line\n\n  // Strips all whitespace tokens array for the current line\n  // if there was a {{#tag}} on it and otherwise only space.\n  function stripSpace () {\n    if (hasTag && !nonSpace) {\n      while (spaces.length)\n        delete tokens[spaces.pop()];\n    } else {\n      spaces = [];\n    }\n\n    hasTag = false;\n    nonSpace = false;\n  }\n\n  var openingTagRe, closingTagRe, closingCurlyRe;\n  function compileTags (tagsToCompile) {\n    if (typeof tagsToCompile === 'string')\n      tagsToCompile = tagsToCompile.split(spaceRe, 2);\n\n    if (!isArray(tagsToCompile) || tagsToCompile.length !== 2)\n      throw new Error('Invalid tags: ' + tagsToCompile);\n\n    openingTagRe = new RegExp(escapeRegExp(tagsToCompile[0]) + '\\\\s*');\n    closingTagRe = new RegExp('\\\\s*' + escapeRegExp(tagsToCompile[1]));\n    closingCurlyRe = new RegExp('\\\\s*' + escapeRegExp('}' + tagsToCompile[1]));\n  }\n\n  compileTags(tags || mustache.tags);\n\n  var scanner = new Scanner(template);\n\n  var start, type, value, chr, token, openSection;\n  while (!scanner.eos()) {\n    start = scanner.pos;\n\n    // Match any text between tags.\n    value = scanner.scanUntil(openingTagRe);\n\n    if (value) {\n      for (var i = 0, valueLength = value.length; i < valueLength; ++i) {\n        chr = value.charAt(i);\n\n        if (isWhitespace(chr)) {\n          spaces.push(tokens.length);\n          indentation += chr;\n        } else {\n          nonSpace = true;\n          lineHasNonSpace = true;\n          indentation += ' ';\n        }\n\n        tokens.push([ 'text', chr, start, start + 1 ]);\n        start += 1;\n\n        // Check for whitespace on the current line.\n        if (chr === '\\n') {\n          stripSpace();\n          indentation = '';\n          tagIndex = 0;\n          lineHasNonSpace = false;\n        }\n      }\n    }\n\n    // Match the opening tag.\n    if (!scanner.scan(openingTagRe))\n      break;\n\n    hasTag = true;\n\n    // Get the tag type.\n    type = scanner.scan(tagRe) || 'name';\n    scanner.scan(whiteRe);\n\n    // Get the tag value.\n    if (type === '=') {\n      value = scanner.scanUntil(equalsRe);\n      scanner.scan(equalsRe);\n      scanner.scanUntil(closingTagRe);\n    } else if (type === '{') {\n      value = scanner.scanUntil(closingCurlyRe);\n      scanner.scan(curlyRe);\n      scanner.scanUntil(closingTagRe);\n      type = '&';\n    } else {\n      value = scanner.scanUntil(closingTagRe);\n    }\n\n    // Match the closing tag.\n    if (!scanner.scan(closingTagRe))\n      throw new Error('Unclosed tag at ' + scanner.pos);\n\n    if (type == '>') {\n      token = [ type, value, start, scanner.pos, indentation, tagIndex, lineHasNonSpace ];\n    } else {\n      token = [ type, value, start, scanner.pos ];\n    }\n    tagIndex++;\n    tokens.push(token);\n\n    if (type === '#' || type === '^') {\n      sections.push(token);\n    } else if (type === '/') {\n      // Check section nesting.\n      openSection = sections.pop();\n\n      if (!openSection)\n        throw new Error('Unopened section \"' + value + '\" at ' + start);\n\n      if (openSection[1] !== value)\n        throw new Error('Unclosed section \"' + openSection[1] + '\" at ' + start);\n    } else if (type === 'name' || type === '{' || type === '&') {\n      nonSpace = true;\n    } else if (type === '=') {\n      // Set the tags for the next time around.\n      compileTags(value);\n    }\n  }\n\n  stripSpace();\n\n  // Make sure there are no open sections when we're done.\n  openSection = sections.pop();\n\n  if (openSection)\n    throw new Error('Unclosed section \"' + openSection[1] + '\" at ' + scanner.pos);\n\n  return nestTokens(squashTokens(tokens));\n}\n\n/**\n * Combines the values of consecutive text tokens in the given `tokens` array\n * to a single token.\n */\nfunction squashTokens (tokens) {\n  var squashedTokens = [];\n\n  var token, lastToken;\n  for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n    token = tokens[i];\n\n    if (token) {\n      if (token[0] === 'text' && lastToken && lastToken[0] === 'text') {\n        lastToken[1] += token[1];\n        lastToken[3] = token[3];\n      } else {\n        squashedTokens.push(token);\n        lastToken = token;\n      }\n    }\n  }\n\n  return squashedTokens;\n}\n\n/**\n * Forms the given array of `tokens` into a nested tree structure where\n * tokens that represent a section have two additional items: 1) an array of\n * all tokens that appear in that section and 2) the index in the original\n * template that represents the end of that section.\n */\nfunction nestTokens (tokens) {\n  var nestedTokens = [];\n  var collector = nestedTokens;\n  var sections = [];\n\n  var token, section;\n  for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n    token = tokens[i];\n\n    switch (token[0]) {\n      case '#':\n      case '^':\n        collector.push(token);\n        sections.push(token);\n        collector = token[4] = [];\n        break;\n      case '/':\n        section = sections.pop();\n        section[5] = token[2];\n        collector = sections.length > 0 ? sections[sections.length - 1][4] : nestedTokens;\n        break;\n      default:\n        collector.push(token);\n    }\n  }\n\n  return nestedTokens;\n}\n\n/**\n * A simple string scanner that is used by the template parser to find\n * tokens in template strings.\n */\nfunction Scanner (string) {\n  this.string = string;\n  this.tail = string;\n  this.pos = 0;\n}\n\n/**\n * Returns `true` if the tail is empty (end of string).\n */\nScanner.prototype.eos = function eos () {\n  return this.tail === '';\n};\n\n/**\n * Tries to match the given regular expression at the current position.\n * Returns the matched text if it can match, the empty string otherwise.\n */\nScanner.prototype.scan = function scan (re) {\n  var match = this.tail.match(re);\n\n  if (!match || match.index !== 0)\n    return '';\n\n  var string = match[0];\n\n  this.tail = this.tail.substring(string.length);\n  this.pos += string.length;\n\n  return string;\n};\n\n/**\n * Skips all text until the given regular expression can be matched. Returns\n * the skipped string, which is the entire tail if no match can be made.\n */\nScanner.prototype.scanUntil = function scanUntil (re) {\n  var index = this.tail.search(re), match;\n\n  switch (index) {\n    case -1:\n      match = this.tail;\n      this.tail = '';\n      break;\n    case 0:\n      match = '';\n      break;\n    default:\n      match = this.tail.substring(0, index);\n      this.tail = this.tail.substring(index);\n  }\n\n  this.pos += match.length;\n\n  return match;\n};\n\n/**\n * Represents a rendering context by wrapping a view object and\n * maintaining a reference to the parent context.\n */\nfunction Context (view, parentContext) {\n  this.view = view;\n  this.cache = { '.': this.view };\n  this.parent = parentContext;\n}\n\n/**\n * Creates a new context using the given view with this context\n * as the parent.\n */\nContext.prototype.push = function push (view) {\n  return new Context(view, this);\n};\n\n/**\n * Returns the value of the given name in this context, traversing\n * up the context hierarchy if the value is absent in this context's view.\n */\nContext.prototype.lookup = function lookup (name) {\n  var cache = this.cache;\n\n  var value;\n  if (cache.hasOwnProperty(name)) {\n    value = cache[name];\n  } else {\n    var context = this, intermediateValue, names, index, lookupHit = false;\n\n    while (context) {\n      if (name.indexOf('.') > 0) {\n        intermediateValue = context.view;\n        names = name.split('.');\n        index = 0;\n\n        /**\n         * Using the dot notion path in `name`, we descend through the\n         * nested objects.\n         *\n         * To be certain that the lookup has been successful, we have to\n         * check if the last object in the path actually has the property\n         * we are looking for. We store the result in `lookupHit`.\n         *\n         * This is specially necessary for when the value has been set to\n         * `undefined` and we want to avoid looking up parent contexts.\n         *\n         * In the case where dot notation is used, we consider the lookup\n         * to be successful even if the last \"object\" in the path is\n         * not actually an object but a primitive (e.g., a string, or an\n         * integer), because it is sometimes useful to access a property\n         * of an autoboxed primitive, such as the length of a string.\n         **/\n        while (intermediateValue != null && index < names.length) {\n          if (index === names.length - 1)\n            lookupHit = (\n              hasProperty(intermediateValue, names[index])\n              || primitiveHasOwnProperty(intermediateValue, names[index])\n            );\n\n          intermediateValue = intermediateValue[names[index++]];\n        }\n      } else {\n        intermediateValue = context.view[name];\n\n        /**\n         * Only checking against `hasProperty`, which always returns `false` if\n         * `context.view` is not an object. Deliberately omitting the check\n         * against `primitiveHasOwnProperty` if dot notation is not used.\n         *\n         * Consider this example:\n         * ```\n         * Mustache.render(\"The length of a football field is {{#length}}{{length}}{{/length}}.\", {length: \"100 yards\"})\n         * ```\n         *\n         * If we were to check also against `primitiveHasOwnProperty`, as we do\n         * in the dot notation case, then render call would return:\n         *\n         * \"The length of a football field is 9.\"\n         *\n         * rather than the expected:\n         *\n         * \"The length of a football field is 100 yards.\"\n         **/\n        lookupHit = hasProperty(context.view, name);\n      }\n\n      if (lookupHit) {\n        value = intermediateValue;\n        break;\n      }\n\n      context = context.parent;\n    }\n\n    cache[name] = value;\n  }\n\n  if (isFunction(value))\n    value = value.call(this.view);\n\n  return value;\n};\n\n/**\n * A Writer knows how to take a stream of tokens and render them to a\n * string, given a context. It also maintains a cache of templates to\n * avoid the need to parse the same template twice.\n */\nfunction Writer () {\n  this.templateCache = {\n    _cache: {},\n    set: function set (key, value) {\n      this._cache[key] = value;\n    },\n    get: function get (key) {\n      return this._cache[key];\n    },\n    clear: function clear () {\n      this._cache = {};\n    }\n  };\n}\n\n/**\n * Clears all cached templates in this writer.\n */\nWriter.prototype.clearCache = function clearCache () {\n  if (typeof this.templateCache !== 'undefined') {\n    this.templateCache.clear();\n  }\n};\n\n/**\n * Parses and caches the given `template` according to the given `tags` or\n * `mustache.tags` if `tags` is omitted,  and returns the array of tokens\n * that is generated from the parse.\n */\nWriter.prototype.parse = function parse (template, tags) {\n  var cache = this.templateCache;\n  var cacheKey = template + ':' + (tags || mustache.tags).join(':');\n  var isCacheEnabled = typeof cache !== 'undefined';\n  var tokens = isCacheEnabled ? cache.get(cacheKey) : undefined;\n\n  if (tokens == undefined) {\n    tokens = parseTemplate(template, tags);\n    isCacheEnabled && cache.set(cacheKey, tokens);\n  }\n  return tokens;\n};\n\n/**\n * High-level method that is used to render the given `template` with\n * the given `view`.\n *\n * The optional `partials` argument may be an object that contains the\n * names and templates of partials that are used in the template. It may\n * also be a function that is used to load partial templates on the fly\n * that takes a single argument: the name of the partial.\n *\n * If the optional `config` argument is given here, then it should be an\n * object with a `tags` attribute or an `escape` attribute or both.\n * If an array is passed, then it will be interpreted the same way as\n * a `tags` attribute on a `config` object.\n *\n * The `tags` attribute of a `config` object must be an array with two\n * string values: the opening and closing tags used in the template (e.g.\n * [ \"<%\", \"%>\" ]). The default is to mustache.tags.\n *\n * The `escape` attribute of a `config` object must be a function which\n * accepts a string as input and outputs a safely escaped string.\n * If an `escape` function is not provided, then an HTML-safe string\n * escaping function is used as the default.\n */\nWriter.prototype.render = function render (template, view, partials, config) {\n  var tags = this.getConfigTags(config);\n  var tokens = this.parse(template, tags);\n  var context = (view instanceof Context) ? view : new Context(view, undefined);\n  return this.renderTokens(tokens, context, partials, template, config);\n};\n\n/**\n * Low-level method that renders the given array of `tokens` using\n * the given `context` and `partials`.\n *\n * Note: The `originalTemplate` is only ever used to extract the portion\n * of the original template that was contained in a higher-order section.\n * If the template doesn't use higher-order sections, this argument may\n * be omitted.\n */\nWriter.prototype.renderTokens = function renderTokens (tokens, context, partials, originalTemplate, config) {\n  var buffer = '';\n\n  var token, symbol, value;\n  for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n    value = undefined;\n    token = tokens[i];\n    symbol = token[0];\n\n    if (symbol === '#') value = this.renderSection(token, context, partials, originalTemplate, config);\n    else if (symbol === '^') value = this.renderInverted(token, context, partials, originalTemplate, config);\n    else if (symbol === '>') value = this.renderPartial(token, context, partials, config);\n    else if (symbol === '&') value = this.unescapedValue(token, context);\n    else if (symbol === 'name') value = this.escapedValue(token, context, config);\n    else if (symbol === 'text') value = this.rawValue(token);\n\n    if (value !== undefined)\n      buffer += value;\n  }\n\n  return buffer;\n};\n\nWriter.prototype.renderSection = function renderSection (token, context, partials, originalTemplate, config) {\n  var self = this;\n  var buffer = '';\n  var value = context.lookup(token[1]);\n\n  // This function is used to render an arbitrary template\n  // in the current context by higher-order sections.\n  function subRender (template) {\n    return self.render(template, context, partials, config);\n  }\n\n  if (!value) return;\n\n  if (isArray(value)) {\n    for (var j = 0, valueLength = value.length; j < valueLength; ++j) {\n      buffer += this.renderTokens(token[4], context.push(value[j]), partials, originalTemplate, config);\n    }\n  } else if (typeof value === 'object' || typeof value === 'string' || typeof value === 'number') {\n    buffer += this.renderTokens(token[4], context.push(value), partials, originalTemplate, config);\n  } else if (isFunction(value)) {\n    if (typeof originalTemplate !== 'string')\n      throw new Error('Cannot use higher-order sections without the original template');\n\n    // Extract the portion of the original template that the section contains.\n    value = value.call(context.view, originalTemplate.slice(token[3], token[5]), subRender);\n\n    if (value != null)\n      buffer += value;\n  } else {\n    buffer += this.renderTokens(token[4], context, partials, originalTemplate, config);\n  }\n  return buffer;\n};\n\nWriter.prototype.renderInverted = function renderInverted (token, context, partials, originalTemplate, config) {\n  var value = context.lookup(token[1]);\n\n  // Use JavaScript's definition of falsy. Include empty arrays.\n  // See https://github.com/janl/mustache.js/issues/186\n  if (!value || (isArray(value) && value.length === 0))\n    return this.renderTokens(token[4], context, partials, originalTemplate, config);\n};\n\nWriter.prototype.indentPartial = function indentPartial (partial, indentation, lineHasNonSpace) {\n  var filteredIndentation = indentation.replace(/[^ \\t]/g, '');\n  var partialByNl = partial.split('\\n');\n  for (var i = 0; i < partialByNl.length; i++) {\n    if (partialByNl[i].length && (i > 0 || !lineHasNonSpace)) {\n      partialByNl[i] = filteredIndentation + partialByNl[i];\n    }\n  }\n  return partialByNl.join('\\n');\n};\n\nWriter.prototype.renderPartial = function renderPartial (token, context, partials, config) {\n  if (!partials) return;\n  var tags = this.getConfigTags(config);\n\n  var value = isFunction(partials) ? partials(token[1]) : partials[token[1]];\n  if (value != null) {\n    var lineHasNonSpace = token[6];\n    var tagIndex = token[5];\n    var indentation = token[4];\n    var indentedValue = value;\n    if (tagIndex == 0 && indentation) {\n      indentedValue = this.indentPartial(value, indentation, lineHasNonSpace);\n    }\n    var tokens = this.parse(indentedValue, tags);\n    return this.renderTokens(tokens, context, partials, indentedValue, config);\n  }\n};\n\nWriter.prototype.unescapedValue = function unescapedValue (token, context) {\n  var value = context.lookup(token[1]);\n  if (value != null)\n    return value;\n};\n\nWriter.prototype.escapedValue = function escapedValue (token, context, config) {\n  var escape = this.getConfigEscape(config) || mustache.escape;\n  var value = context.lookup(token[1]);\n  if (value != null)\n    return (typeof value === 'number' && escape === mustache.escape) ? String(value) : escape(value);\n};\n\nWriter.prototype.rawValue = function rawValue (token) {\n  return token[1];\n};\n\nWriter.prototype.getConfigTags = function getConfigTags (config) {\n  if (isArray(config)) {\n    return config;\n  }\n  else if (config && typeof config === 'object') {\n    return config.tags;\n  }\n  else {\n    return undefined;\n  }\n};\n\nWriter.prototype.getConfigEscape = function getConfigEscape (config) {\n  if (config && typeof config === 'object' && !isArray(config)) {\n    return config.escape;\n  }\n  else {\n    return undefined;\n  }\n};\n\nvar mustache = {\n  name: 'mustache.js',\n  version: '4.2.0',\n  tags: [ '{{', '}}' ],\n  clearCache: undefined,\n  escape: undefined,\n  parse: undefined,\n  render: undefined,\n  Scanner: undefined,\n  Context: undefined,\n  Writer: undefined,\n  /**\n   * Allows a user to override the default caching strategy, by providing an\n   * object with set, get and clear methods. This can also be used to disable\n   * the cache by setting it to the literal `undefined`.\n   */\n  set templateCache (cache) {\n    defaultWriter.templateCache = cache;\n  },\n  /**\n   * Gets the default or overridden caching object from the default writer.\n   */\n  get templateCache () {\n    return defaultWriter.templateCache;\n  }\n};\n\n// All high-level mustache.* functions use this writer.\nvar defaultWriter = new Writer();\n\n/**\n * Clears all cached templates in the default writer.\n */\nmustache.clearCache = function clearCache () {\n  return defaultWriter.clearCache();\n};\n\n/**\n * Parses and caches the given template in the default writer and returns the\n * array of tokens it contains. Doing this ahead of time avoids the need to\n * parse templates on the fly as they are rendered.\n */\nmustache.parse = function parse (template, tags) {\n  return defaultWriter.parse(template, tags);\n};\n\n/**\n * Renders the `template` with the given `view`, `partials`, and `config`\n * using the default writer.\n */\nmustache.render = function render (template, view, partials, config) {\n  if (typeof template !== 'string') {\n    throw new TypeError('Invalid template! Template should be a \"string\" ' +\n                        'but \"' + typeStr(template) + '\" was given as the first ' +\n                        'argument for mustache#render(template, view, partials)');\n  }\n\n  return defaultWriter.render(template, view, partials, config);\n};\n\n// Export the escaping function so that the user may override it.\n// See https://github.com/janl/mustache.js/issues/244\nmustache.escape = escapeHtml;\n\n// Export these mainly for testing, but also for advanced usage.\nmustache.Scanner = Scanner;\nmustache.Context = Context;\nmustache.Writer = Writer;\n\nexport default mustache;\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\n\nvar $btnSyncMaintaningBalance;\nvar $btnConfirmSyncMaintainingBalance;\nvar $modalSyncMaintainingBalance;\nvar $inputMaintainingBalance;\n\nvar $btnRequestTimeDepositWithdrawal;\nvar $btnConfirmRequestTimeDepositWithdrawal;\nvar $modalRequestTimeDepositWithdrawal;\n\nvar $btnDeleteWithdrawalRequest;\nvar $btnConfirmDeleteWithdrawalRequest;\nvar $modalDeleteWithdrawalRequest;\n\nvar $btnApproveWithdrawalRequest;\nvar $btnConfirmApproveWithdrawalRequest;\nvar $modalApproveWithdrawalRequest;\n\nvar $btnPrintWithdrawalRequest;\nvar $modalPrint;\nvar $btnPrintLedger;\n\nvar id;\nvar templateErrorList;\nvar authenticityToken;\n\nvar _currentWithdrawalRequestId;\nvar _PrintLedgerRequestId;\nvar SavingsAccountId; \nvar $message;\n\nvar init  = function(options) {\n  console.log(options)\n  id                = options.id;\n  authenticityToken = options.authenticityToken;\n  SavingsAccountId  = options.id;\n  _cacheDom();\n  _bindEvents();\n};\n\nvar _cacheDom = function() {\n  $btnDeleteWithdrawalRequest         = $(\".btn-delete-withdrawal-request\");\n  $btnConfirmDeleteWithdrawalRequest  = $(\"#btn-confirm-delete-withdrawal-request\");\n  $modalDeleteWithdrawalRequest       = $(\"#modal-delete-withdrawal-request\");\n\n  $btnApproveWithdrawalRequest        = $(\".btn-approve-withdrawal-request\");\n  $btnConfirmApproveWithdrawalRequest = $(\"#btn-confirm-approve-withdrawal-request\");\n\n  $modalApproveWithdrawalRequest = new bootstrap.Modal(\n    document.getElementById(\"modal-approve-withdrawal-request\")\n  )\n\n\n\n\n  $btnSyncMaintaningBalance         = $(\"#btn-sync-maintaining-balance\");\n  $btnConfirmSyncMaintainingBalance = $(\"#btn-confirm-sync-maintaining-balance\");\n  \n  $modalSyncMaintainingBalance = new bootstrap.Modal(\n    document.getElementById(\"modal-sync-maintaining-balance\")\n  )\n\n\n  $inputMaintainingBalance          = $(\"#input-maintaining-balance\");\n\n  $btnRequestTimeDepositWithdrawal        = $(\"#btn-request-time-deposit-withdrawal\");\n  $btnConfirmRequestTimeDepositWithdrawal = $(\"#btn-confirm-request-time-deposit-withdrawal\");\n  $modalRequestTimeDepositWithdrawal = new bootstrap.Modal(\n    document.getElementById(\"modal-request-time-deposit-withdrawal\")\n  )\n\n  $btnPrintWithdrawalRequest  = $(\".btn-print-withdrawal-request\");\n  $modalPrint = new bootstrap.Modal(\n    document.getElementById(\"modal-print\")\n  )\n  \n  $btnPrintLedger             = $(\"#btn-print-ledger\");\n\n  $message          = $(\".message\");\n  templateErrorList = $(\"#template-error-list\").html();\n};\n\nvar _bindEvents = function() {\n  $btnPrintLedger.on(\"click\", function() {\n    $modalPrint.show();\n    \n    var type = \"print_ledger\";\n    \n    $modalPrint.hide();\n    window.open(\"/print?type=\" + type + \"&id=\" + id);\n  });\n\n  $btnPrintWithdrawalRequest.on(\"click\", function() {\n    _currentWithdrawalRequestId = $(this).data(\"id\");\n    $message.html(\"\");\n\n    $modalPrint.show();\n\n    $.ajax({\n      url: \"/api/v1/print/generate_file\",\n      method: \"POST\",\n      data: {\n        id: _currentWithdrawalRequestId,\n        type: \"withdrawal_request\",\n        authenticity_token: authenticityToken\n      },\n      success: function(response) {\n        $message.html(\n          \"Success! Redirecting...\"\n        );\n\n        $modalPrint.hide();\n        window.open(\"/print?filename=\" + response.filename, '_blank');\n      },\n      error: function(response) {\n        $message.html(\"Error in printing withdrawal request!\");\n      }\n    });\n  });\n\n  $btnApproveWithdrawalRequest.on(\"click\", function() {\n    _currentWithdrawalRequestId = $(this).data(\"id\");\n    $message.html(\"\");\n\n    $modalApproveWithdrawalRequest.show();\n  });\n\n  $btnConfirmApproveWithdrawalRequest.on(\"click\", function() {\n    $btnConfirmApproveWithdrawalRequest.prop(\"disabled\", true);\n    $message.html(\"Loading...\");\n\n    $.ajax({\n      url: \"/api/v1/savings_accounts/approve_withdrawal_request\",\n      method: 'POST',\n      data: {\n        id: id,\n        data_store_id: _currentWithdrawalRequestId,\n        authenticity_token: authenticityToken\n      },\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.reload();\n      },\n      error: function(response) {\n        console.log(response);\n        var errors  = [];\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmApproveWithdrawalRequest.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  $btnDeleteWithdrawalRequest.on(\"click\", function() {\n    _currentWithdrawalRequestId = $(this).data(\"id\");\n    $message.html(\"\");\n\n    $modalDeleteWithdrawalRequest.show();\n  });\n\n  $btnConfirmDeleteWithdrawalRequest.on(\"click\", function() {\n    $btnConfirmDeleteWithdrawalRequest.prop(\"disabled\", true);\n    $message.html(\"Loading...\");\n\n    $.ajax({\n      url: \"/api/v1/savings_accounts/delete_withdrawal_request\",\n      method: 'POST',\n      data: {\n        id: id,\n        data_store_id: _currentWithdrawalRequestId,\n        authenticity_token: authenticityToken\n      },\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.reload();\n      },\n      error: function(response) {\n        console.log(response);\n        var errors  = [];\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmDeleteWithdrawalRequest.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  $btnRequestTimeDepositWithdrawal.on(\"click\", function() {\n    $message.html(\"\");\n    $modalRequestTimeDepositWithdrawal.show();\n  });\n\n  $btnConfirmRequestTimeDepositWithdrawal.on(\"click\", function() {\n    $btnConfirmRequestTimeDepositWithdrawal.prop(\"disabled\", true);\n    $message.html(\"Loading...\");\n\n    $.ajax({\n      url: \"/api/v1/savings_accounts/request_time_deposit_withdrawal\",\n      method: 'POST',\n      data: {\n        id: id,\n        authenticity_token: authenticityToken\n      },\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.reload();\n      },\n      error: function(response) {\n        console.log(response);\n        var errors  = [];\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmRequestTimeDepositWithdrawal.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  $btnSyncMaintaningBalance.on(\"click\", function() {\n    $message.html(\"\");\n    $modalSyncMaintainingBalance.show();\n  });\n\n  $btnConfirmSyncMaintainingBalance.on(\"click\", function() {\n    var maintainingBalance  = $inputMaintainingBalance.val();\n\n    $btnConfirmSyncMaintainingBalance.prop(\"disabled\", true);\n    $inputMaintainingBalance.prop(\"disabled\", true);\n\n    $.ajax({\n      url: \"/api/v1/savings_accounts/sync_maintaining_balance\",\n      method: 'POST',\n      data: {\n        id: id,\n        authenticity_token: authenticityToken,\n        maintaining_balance: maintainingBalance\n      },\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.reload();\n      },\n      error: function(response) {\n        console.log(response);\n        var errors  = [];\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmSyncMaintainingBalance.prop(\"disabled\", false);\n          $inputMaintainingBalance.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n\n\n};\n\nexport default { init: init }\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\n\nvar $btnPrintWithdrawalRequest;\nvar $modalPrint;\n\nvar id;\nvar templateErrorList;\nvar authenticityToken;\n\nvar $message;\n\nvar init  = function(options) {\n  id                = options.id;\n  authenticityToken = options.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n};\n\nvar _cacheDom = function() {\n  $btnPrintWithdrawalRequest  = $(\"#btn-print-withdrawal-request\");\n  $modalPrint                 = $(\"#modal-print\");\n\n  $message          = $(\".message\");\n  templateErrorList = $(\"#template-error-list\").html();\n};\n\nvar _bindEvents = function() {\n  $btnPrintWithdrawalRequest.on(\"click\", function() {\n    $message.html(\"\");\n\n    $modalPrint.show();\n\n    var type = \"withdrawal_request\";\n\n    $modalPrint.hide();\n    window.open(\"/print?type=\" + type + \"&id=\" + id);\n  });\n};\n\nexport default { init: init }\n", "import $ from \"jquery\";\n//import DataTable from \"datatables.net\";\n//DataTable($);\n\nvar $dataTable;\n\nvar init  = function() {\n  _cacheDom();\n  _bindEvents();\n};\n\nvar _cacheDom = function() {\n  //$dataTable  = $(\"#data-table\");\n};\n\nvar _bindEvents = function() {\n  //$dataTable.DataTable();\n};\n\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\n\nvar $btnPrint;\nvar $inputStartDate;\nvar $inputEndDate;\nvar $selectBranch;\nvar $selectAccountingFund;\nvar $modalPrint;\nvar $message;\nvar $btndownload;\nvar book;\nvar authenticityToken;\n\nvar _urlPrint = \"/api/v1/print/generate_file\";\nvar _urlDownload = \"/books/excel\";\nvar _cacheDom = function() {\n  $btnPrint               = $(\"#btn-print\");\n  $inputStartDate         = $(\"#input-start-date\");\n  $inputEndDate           = $(\"#input-end-date\");\n  $selectBranch           = $(\"#select-branch\");\n  $selectAccountingFund   = $(\"#select-accounting-fund\");\n  $modalPrint             = $(\"#modal-print\");\n  $message                = $(\".message\");\n  $btndownload            = $(\"#btn-download\")\n};\n\nvar _bindEvents = function() {\n    \n\n  $btndownload.on(\"click\", function() {\n    var startDate         = $inputStartDate.val();\n    var endDate           = $inputEndDate.val();\n    var branchId          = $selectBranch.val();\n    var accountingFundId  = $selectAccountingFund.val();\n\n    if(!startDate) {\n      alert(\"Start date required\");\n    }\n\n    if(!endDate) {\n      alert(\"End date required\");\n    }\n\n    $.ajax({\n      url: _urlDownload,\n      method: 'GET',\n      data: {\n        start_date: startDate,\n        end_date: endDate,\n        branch_id: branchId,\n        book: book,\n        accounting_fund_id: accountingFundId,\n        type: \"book\",\n        authenticity_token: authenticityToken\n      },\n      dataType: 'json',\n      success: function(response) {\n        window.open(response.download_url, '_blank');\n      },\n      error: function(response) {\n        $message.html(\"Error!\");\n      }\n    });\n  });\n\n  $btnPrint.on(\"click\", function() {\n    var type              = \"book\";\n    var startDate         = $inputStartDate.val();\n    var endDate           = $inputEndDate.val();\n    var branchId          = $selectBranch.val();\n    var accountingFundId  = $selectAccountingFund.val();\n    \n    if(!startDate) {\n      alert(\"Start date required\");\n    }\n\n    if(!endDate) {\n      alert(\"End date required\");\n    }\n\n    $modalPrint.show();\n    $message.html(\"Printing...\");\n\n    $modalPrint.hide();\n    window.open(\"/print?type=\" + type + \"&start_date=\" + startDate + \"&end_date=\" + endDate + \"&branch_id=\" + branchId + \"&accounting_fund_id=\" + accountingFundId + \"&book=\" + book);\n  });\n\n \n}\n\nvar init  = function(options) {\n  authenticityToken = options.authenticityToken;\n  book              = options.book;\n\n  _cacheDom();\n  _bindEvents();\n};\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport * as bootstrap from \"bootstrap\";\nimport $ from 'jquery';\n\nimport \"pdfmake/build/pdfmake\"\nconst pdfMake = window[\"pdfMake\"];\nimport pdfFonts from \"pdfmake/build/vfs_fonts\";\npdfMake.vfs = pdfFonts.pdfMake.vfs;\n\nimport LoanFormDocumentBuilder from './LoanFormDocumentBuilder.js';\n\nvar _data;\n\nvar $message;\n\nvar $btnNewAdjustment;\nvar $btnConfirmNewAdjustment;\nvar $modalNewAdjustment;\nvar $inputPrincipal;\nvar $inputMonthlyInterestRate;\nvar $inputNumInstallments;\nvar $selectTerm;\n\nvar $btnApprove;\nvar $btnConfirmApprove;\nvar $modalApprove;\n\nvar $btnUploadApplicationForm;\nvar $btnConfirmUploadApplicationForm;\nvar $modalUploadApplicationForm;\nvar $inputFileApplicationForm;\n\nvar $btnDownloadForm;\n\nvar $btnReage;\nvar $btnConfirmReage;\nvar $modalReage;\n\nvar $btnDelete;\nvar $btnConfirmDelete;\nvar $modalDelete;\n\nvar $btnChangeBook;\nvar $btnConfirmChangeBook;\nvar $modalChangeBook;\nvar $selectBook;\n\nvar $btnFirstDateOfPayment;\nvar $btnConfirmFirstDateOfPayment;\nvar $modalFirstDateOfPayment;\nvar $inputFirstDateOfPayment;\n\nvar $btnDateReleased;\nvar $btnConfirmDateReleased;\nvar $modalDateReleased;\nvar $inputDateReleased;\n\nvar templateErrorList;\n\nvar $fraud_tagging;\nvar $modalFraud;\nvar $btnConfirmFraud;\n\nvar $oldDate;\nvar $btnDelayAmort;\nvar $btnConfirmDelayAmort;\nvar $modalDelayAmort;\nvar $inputDelayAmort;\nvar $inputReason;\n\nvar $btnVerify;\nvar $btnConfirmVerify;\nvar $modalVerify;\n\nvar $btnProcess;\nvar $btnConfirmProcess;\nvar $modalProcess;\n\nvar $btnForRelease;\nvar $btnConfirmForRelease;\nvar $modalForRelease;\n\nvar $btnReject;\nvar $btnConfirmReject;\nvar $modalReject;\nvar $inputRejectionReason;\n\n\n\n\nvar reason        = \"\";\nvar newDate       = \"\";\nvar curretAmortId = \"\";\n\n\nvar $btnReverseLoan;\nvar $btnConfirmReverseLoan;\nvar $modalReverseLoan;\n\n\n\nvar $btnApproveReverseLoan;\n//var $btnConfirmReverseLoan;\n//var $modalReverseLoan;\n\nvar _urlReage                 = \"/api/v1/loans/reage\";\nvar _urlDelete                = \"/api/v1/loans/delete\";\nvar _urlFirstDateOfPayment    = \"/api/v1/loans/update_first_date_of_payment\";\nvar _urlDateReleased          = \"/api/v1/loans/update_date_released\";\nvar _urlApprove               = \"/api/v1/loans/approve\";\nvar _urlChangeBook            = \"/api/v1/loans/change_book\";\nvar _urlDelayAmort            = \"/api/v1/loans/delay_amort\";\nvar _urlNewAdjustment         = \"/api/v1/loans/new_adjustment\";\nvar _urlVerify                = \"/api/v1/loans/verify\";\nvar _urlProcess               = \"/api/v1/loans/process\";\nvar _urlForRelease            = \"/api/v1/loans/for_release\";\nvar _urlReject                = \"/api/v1/loans/reject\";\nvar _urlReverse               = \"/api/v1/loans/reverse_loan\";\nvar _urlUploadApplicationForm = \"/api/v1/loans/upload_application_form\";\nvar _urlFraudSave             = \"/api/v1/loans/fraud_save\";\n\nvar _id;\nvar _authenticityToken;\n\nvar _cacheDom = function() {\n  $message = $(\".message\");\n\n  /**\n   * Bootstrap 5 modal initialization\n   */\n  $modalDelayAmort = new bootstrap.Modal(\n    document.getElementById(\"modal-delay-amort\")\n  );\n\n  $modalApprove = new bootstrap.Modal(\n    document.getElementById(\"modal-approve\")\n  );\n\n  $modalDelete = new bootstrap.Modal(\n    document.getElementById(\"modal-delete\")\n  );\n\n  $modalNewAdjustment = new bootstrap.Modal(\n    document.getElementById(\"modal-new-adjustment\")\n  );\n\n  $modalUploadApplicationForm = new bootstrap.Modal(\n    document.getElementById(\"modal-upload-application-form\")\n  );\n\n  $modalFirstDateOfPayment = new bootstrap.Modal(\n    document.getElementById(\"modal-first-date-of-payment\")\n  );\n\n  $modalReage = new bootstrap.Modal(\n    document.getElementById(\"modal-reage\")\n  );\n\n  $modalDateReleased = new bootstrap.Modal(\n    document.getElementById(\"modal-date-released\")\n  );\n\n  $modalChangeBook = new bootstrap.Modal(\n    document.getElementById(\"modal-change-book\")\n  );\n\n  $modalVerify = new bootstrap.Modal(\n    document.getElementById(\"modal-verify\")\n  );\n\n  $modalProcess = new bootstrap.Modal(\n    document.getElementById(\"modal-process\")\n  );\n\n  $modalForRelease = new bootstrap.Modal(\n    document.getElementById(\"modal-for-release\")\n  );\n\n  $modalReject = new bootstrap.Modal(\n    document.getElementById(\"modal-reject\")\n  );\n\n  $modalReverseLoan = new bootstrap.Modal(\n    document.getElementById(\"modal-reverse-loan\")\n  );\n  $modalFraud = new bootstrap.Modal(\n    document.getElementById(\"modal-fruad\")\n  );\n\n  $btnNewAdjustment         = $(\"#btn-new-adjustment\");\n  $btnConfirmNewAdjustment  = $(\"#btn-confirm-new-adjustment\");\n  $inputPrincipal           = $(\"#input-principal\");\n  $inputMonthlyInterestRate = $(\"#input-monthly-interest-rate\");\n  $inputNumInstallments     = $(\"#input-num-installments\");\n  $selectTerm               = $(\"#select-term\");\n\n  $btnApprove         = $(\"#btn-approve\");\n  $btnConfirmApprove  = $(\"#btn-confirm-approve\");\n\n  $btnUploadApplicationForm         = $(\"#btn-upload-application-form\");\n  $btnConfirmUploadApplicationForm  = $(\"#btn-confirm-upload-application-form\");\n  $inputFileApplicationForm         = $(\"#input-file-application-form\");\n\n  $btnDownloadForm  = $(\"#btn-download-form\");\n\n  $btnReage         = $(\"#btn-reage\");\n  $btnConfirmReage  = $(\"#btn-confirm-reage\");\n\n  $btnDelete        = $(\"#btn-delete\");\n  $btnConfirmDelete = $(\"#btn-confirm-delete\");\n\n  $btnFirstDateOfPayment        = $(\"#btn-first-date-of-payment\");\n  $btnConfirmFirstDateOfPayment = $(\"#btn-confirm-first-date-of-payment\");\n  $inputFirstDateOfPayment      = $(\"#input-first-date-of-payment\");\n\n  $btnDateReleased        = $(\"#btn-date-released\");\n  $btnConfirmDateReleased = $(\"#btn-confirm-date-released\");\n  $inputDateReleased      = $(\"#input-date-released\");\n\n  $btnChangeBook        = $(\"#btn-change-book\");\n  $btnConfirmChangeBook = $(\"#btn-confirm-change-book\");\n  $selectBook           = $(\"#select-book\");\n\n  $btnDelayAmort        = $(\".btn-delay-amort\");\n  $oldDate              = $(\".old-date\");\n  $btnConfirmDelayAmort = $(\"#btn-confirm-delay-amort\");\n  $inputDelayAmort      = $(\"#input-delay-amort\");\n  $inputReason          = $(\"#input-reason\");\n\n  $btnVerify        = $(\"#btn-verify\");\n  $btnConfirmVerify = $(\"#btn-confirm-verify\");\n\n  $btnProcess        = $(\"#btn-process\");\n  $btnConfirmProcess = $(\"#btn-confirm-process\");\n\n  $btnForRelease        = $(\"#btn-for-release\");\n  $btnConfirmForRelease = $(\"#btn-confirm-for-release\");\n\n  $btnReject            = $(\"#btn-reject\");\n  $btnConfirmReject     = $(\"#btn-confirm-reject\");\n  $inputRejectionReason = $(\"#input-rejection-reason\");\n\n  $btnReverseLoan         = $(\"#btn-reverse-loan\")\n  $btnConfirmReverseLoan  = $(\"#btn-confirm-reverse-loan\");\n\n  $btnApproveReverseLoan  = $(\"#btn-approve-reverse-loan\");\n  \n  $fraud_tagging = $(\"#btn-fraud\");\n  $btnConfirmFraud = $(\"#btn-confirm\");\n  $bar_type =  $('#select-fraud');\n  $bar_details =  $('#fraud-details');\n\n  templateErrorList = $(\"#template-error-list\").html();\n};\n\nvar _bindEvents = function() {\n  \n  $btnApproveReverseLoan.on(\"click\", function() {\n    alert(\"jef\")\n  });\n\n\n  $btnReverseLoan.on(\"click\", function() {\n    $modalReverseLoan.show();\n  });\n  $btnConfirmReverseLoan.on(\"click\", function() {\n    \n    $.ajax({\n      url: _urlReverse,\n      method: 'POST',\n      data: {\n        id: _id,\n        authenticity_token: _authenticityToken\n      },\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.href = \"/loans/\" + _id +  \"/reverse_form/\";\n      },\n      error: function(response) {\n        console.log(response);\n        var errors  = [];\n        try {\n          errors  = JSON.parse(response.responseText).errors.full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmReject.prop(\"disabled\", false);\n          $inputRejectionReason.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  \n\n  \n  $btnUploadApplicationForm.on(\"click\", function() {\n    $modalUploadApplicationForm.show();\n  });\n\n  $btnConfirmUploadApplicationForm.on(\"click\", function() {\n    $message.html(\"\");\n    $btnConfirmUploadApplicationForm.prop(\"disabled\", true);\n    $inputFileApplicationForm.prop(\"disabled\", true);\n\n    var errors = [];\n\n    if($inputFileApplicationForm[0].files.length == 0) {\n      errors.push(\"File required\");\n\n      $message.html(\"File required\");\n\n      $btnConfirmUploadApplicationForm.prop(\"disabled\", false);\n      $inputFileApplicationForm.prop(\"disabled\", false);\n    }\n\n    if(errors.length == 0) {\n      var formData  = new FormData();\n      var files     = [];\n\n      files.push({\n        name: \"application_form\",\n        file: $inputFileApplicationForm[0].files[0]\n      });\n\n      for(var i = 0; i < files.length; i++) {\n        formData.append(\"files[]\", files[i].file);\n        formData.append(\"file_types[]\", files[i].name);\n        formData.append(\"id\", _id);\n\n        $.ajax({\n          url: _urlUploadApplicationForm,\n          method: 'POST',\n          contentType: false,\n          processData: false,\n          data: formData,\n          success: function(response) {\n            $message.html(\"Success! Reloading...\");\n            window.location.reload();\n          },\n          error: function(response) {\n            console.log(response);\n            var errors  = [];\n            try {\n              errors  = JSON.parse(response.responseText).errors.full_messages;\n            } catch(err) {\n              errors  = [\"Something went wrong\"];\n              console.log(err);\n            } finally {\n              console.log(errors);\n              $message.html(\n                Mustache.render(\n                  templateErrorList,\n                  { errors: errors }\n                )\n              );\n\n              $btnConfirmUploadApplicationForm.prop(\"disabled\", false);\n              $inputFileApplicationForm.prop(\"disabled\", false);\n            }\n          }\n        })\n      }\n    }\n  });\n\n  $btnDownloadForm.on(\"click\", function() {\n    var docDefinition = LoanFormDocumentBuilder.execute(_data);\n\n    pdfMake.createPdf(docDefinition).open();\n  });\n\n  $btnReject.on(\"click\", function() {\n    $modalReject.show();\n  });\n\n  $btnConfirmReject.on(\"click\", function() {\n    var reason  = $inputRejectionReason.val();\n\n    $btnConfirmReject.prop(\"disabled\", true);\n    $inputRejectionReason.prop(\"disabled\", true);\n\n    $message.html(\"Loading...\");\n\n    $.ajax({\n      url: _urlReject,\n      method: 'POST',\n      data: {\n        id: _id,\n        reason: reason,\n        authenticity_token: _authenticityToken\n      },\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.reload();\n      },\n      error: function(response) {\n        console.log(response);\n        var errors  = [];\n        try {\n          errors  = JSON.parse(response.responseText).errors.full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmReject.prop(\"disabled\", false);\n          $inputRejectionReason.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  $btnForRelease.on(\"click\", function() {\n    $modalForRelease.show();\n  });\n\n  $btnConfirmForRelease.on(\"click\", function() {\n    $btnConfirmForRelease.prop(\"disabled\", true);\n    $message.html(\"Loading...\");\n\n    $.ajax({\n      url: _urlForRelease,\n      method: 'POST',\n      data: {\n        id: _id,\n        authenticity_token: _authenticityToken\n      },\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.reload();\n      },\n      error: function(response) {\n        console.log(response);\n        var errors  = [];\n        try {\n          errors  = JSON.parse(response.responseText).errors.full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmForRelease.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  $btnProcess.on(\"click\", function() {\n    $modalProcess.show();\n  });\n\n  $btnConfirmProcess.on(\"click\", function() {\n    $btnConfirmProcess.prop(\"disabled\", true);\n    $message.html(\"Loading...\");\n\n    $.ajax({\n      url: _urlProcess,\n      method: 'POST',\n      data: {\n        id: _id,\n        authenticity_token: _authenticityToken\n      },\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.reload();\n      },\n      error: function(response) {\n        console.log(response);\n        var errors  = [];\n        try {\n          errors  = JSON.parse(response.responseText).errors.full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmProcess.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  $btnVerify.on(\"click\", function() {\n    $modalVerify.show();\n  });\n\n  $btnConfirmVerify.on(\"click\", function() {\n    $btnConfirmVerify.prop(\"disabled\", true);\n    $message.html(\"Loading...\");\n\n    $.ajax({\n      url: _urlVerify,\n      method: 'POST',\n      data: {\n        id: _id,\n        authenticity_token: _authenticityToken\n      },\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.reload();\n      },\n      error: function(response) {\n        console.log(response);\n        var errors  = [];\n        try {\n          errors  = JSON.parse(response.responseText).errors.full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmVerify.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  $btnNewAdjustment.on(\"click\", function() {\n    $modalNewAdjustment.show();\n  });\n\n  $btnConfirmNewAdjustment.on(\"click\", function() {\n    var principal           = $inputPrincipal.val();\n    var monthlyInterestRate = $inputMonthlyInterestRate.val();\n    var numInstallments     = $inputNumInstallments.val();\n    var term                = $selectTerm.val();\n\n    var data = {\n      p_principal: principal,\n      p_monthly_interest_rate: monthlyInterestRate,\n      p_num_installments: numInstallments,\n      p_term: term,\n      id: _id,\n      authenticity_token: _authenticityToken\n    }\n\n    $inputPrincipal.prop(\"disabled\", true);\n    $inputMonthlyInterestRate.prop(\"disabled\", true);\n    $inputNumInstallments.prop(\"disabled\", true);\n    $selectTerm.prop(\"disabled\", true);\n    $btnConfirmNewAdjustment.prop(\"disabled\", true);\n\n    $message.html(\"Loading...\");\n\n    $.ajax({\n      url: _urlNewAdjustment,\n      method: 'POST',\n      dataType: 'json',\n      data: data,\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.href = \"/loans/\" + _id + \"/adjustment/\" + response.id;\n      },\n      error: function(response) {\n        console.log(response);\n        var errors  = [];\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $inputPrincipal.prop(\"disabled\", false);\n          $inputMonthlyInterestRate.prop(\"disabled\", false);\n          $inputNumInstallments.prop(\"disabled\", false);\n          $selectTerm.prop(\"disabled\", false);\n          $btnConfirmNewAdjustment.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  $btnDelayAmort.on(\"click\", function() {\n    var oldDate   = $(this).data(\"old-date\"); \n    curretAmortId = $(this).data(\"id\");\n\n    $oldDate.html(oldDate);\n\n    $modalDelayAmort.show();\n  });\n\n  $btnConfirmDelayAmort.on(\"click\", function() {\n    var newDate = $inputDelayAmort.val();\n    var reason  = $inputReason.val();\n\n    $inputDelayAmort.prop(\"disabled\", true);\n    $inputReason.prop(\"disabled\", true);\n    $btnConfirmDelayAmort.prop(\"disabled\", true);\n    $message.html(\"Loading...\");\n\n    $.ajax({\n      url: _urlDelayAmort,\n      method: 'POST',\n      dataType: 'json',\n      data: {\n        id: curretAmortId,\n        new_date: newDate,\n        reason: reason,\n        authenticity_token: _authenticityToken\n      },\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.reload();\n      },\n      error: function(response) {\n        console.log(response);\n        var errors  = [];\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $inputDelayAmort.prop(\"disabled\", false);\n          $inputReason.prop(\"disabled\", false);\n          $btnConfirmDelayAmort.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  $btnChangeBook.on(\"click\", function() {\n    $modalChangeBook.show();\n  });\n\n  $btnConfirmChangeBook.on(\"click\", function() {\n    var book  = $selectBook.val();\n\n    $btnConfirmChangeBook.prop(\"disabled\", true);\n    $selectBook.prop(\"disabled\", true);\n    $message.html(\"Loading...\");\n\n    $.ajax({\n      url: _urlChangeBook,\n      method: 'POST',\n      dataType: 'json',\n      data: {\n        id: _id,\n        book: book,\n        authenticity_token: _authenticityToken\n      },\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.reload();\n      },\n      error: function(response) {\n        console.log(response);\n        var errors  = [];\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmChangeBook.prop(\"disabled\", false);\n          $selectBook.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  $btnApprove.on(\"click\", function() {\n    $message.html(\"\");\n    $modalApprove.show();\n  });\n\n  $btnConfirmApprove.on(\"click\", function() {\n    $btnConfirmApprove.prop(\"disabled\", true);\n    $message.html(\"Loading...\");\n\n    $.ajax({\n      url: _urlApprove,\n      method: 'POST',\n      dataType: 'json',\n      data: {\n        id: _id,\n        authenticity_token: _authenticityToken\n      },\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.href=\"/loans/\" + response.id;\n      },\n      error: function(response) {\n        console.log(response);\n        var errors  = [];\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmApprove.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  $btnDateReleased.on(\"click\", function() {\n    $message.html(\"\");\n    $modalDateReleased.show();\n  });\n\n  $btnConfirmDateReleased.on(\"click\", function() {\n    var dateReleased  = $inputDateReleased.val();\n\n    $btnConfirmDateReleased.prop(\"disabled\", true);\n    $inputDateReleased.prop(\"disabled\", true);\n\n    $.ajax({\n      url: _urlDateReleased,\n      method: 'POST',\n      dataType: 'json',\n      data: {\n        id: _id,\n        date_released: dateReleased,\n        authenticity_token: _authenticityToken\n      },\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.reload();\n      },\n      error: function(response) {\n        console.log(response);\n        var errors  = [];\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmDateReleased.prop(\"disabled\", false);\n          $inputDateReleased.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  $btnFirstDateOfPayment.on(\"click\", function() {\n    $message.html(\"\");\n    $modalFirstDateOfPayment.show();\n  });\n\n  $btnConfirmFirstDateOfPayment.on(\"click\", function() {\n    var firstDateOfPayment  = $inputFirstDateOfPayment.val();\n\n    $btnConfirmFirstDateOfPayment.prop(\"disabled\", true);\n    $inputFirstDateOfPayment.prop(\"disabled\", true);\n\n    $.ajax({\n      url: _urlFirstDateOfPayment,\n      method: 'POST',\n      dataType: 'json',\n      data: {\n        id: _id,\n        first_date_of_payment: firstDateOfPayment,\n        authenticity_token: _authenticityToken\n      },\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.reload();\n      },\n      error: function(response) {\n        console.log(response);\n        var errors  = [];\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmFirstDateOfPayment.prop(\"disabled\", false);\n          $inputFirstDateOfPayment.prop(\"disabled\", false);\n        }\n      }\n    });\n\n  });\n\n  $btnDelete.on(\"click\", function() {\n    $message.html(\"\");\n    $modalDelete.show();\n  });\n\n  $btnConfirmDelete.on(\"click\", function() {\n    $btnConfirmDelete.prop(\"disabled\", true);\n\n    $.ajax({\n      url: _urlDelete,\n      method: 'POST',\n      dataType: 'json',\n      data: {\n        id: _id,\n        authenticity_token: _authenticityToken\n      },\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.href=\"/members/\" + response.id + \"/display\";\n      },\n      error: function(response) {\n        console.log(response);\n        var errors  = [];\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmDelete.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n  $btnConfirmFraud.on(\"click\", function(){\n  var loan_id = $btnConfirmFraud.val();\n  var bar_type = $bar_type.val();\n  var bar_details = $bar_details.val();\n  \n  $.ajax({\n    url: \"/api/v1/loans/fraud_save\",\n    method: 'POST',\n    dataType: 'json',\n    data: {\n      id: loan_id,\n      bar_types: bar_type,\n      bar_details: bar_details,\n      authenticity_token: _authenticityToken\n    },\n    success: function(response) {\n      $message.html(\"Success! Redirecting...\");\n      window.location.reload();\n    },\n    error: function(response) {\n      console.log(response);\n      var errors  = [];\n      try {\n        errors  = JSON.parse(response.responseText).full_messages;\n      } catch(err) {\n        errors  = [\"Something went wrong\"];\n        console.log(err);\n      } finally {\n        console.log(errors);\n        $message.html(\n          Mustache.render(\n            templateErrorList,\n            { errors: errors }\n          )\n        );\n\n        $btnConfirmReage.prop(\"disabled\", false);\n      }\n    }\n  });   \n  });\n  \n  $fraud_tagging.on(\"click\", function() {\n    $modalFraud.show();\n    \n   \n  });\n  $btnReage.on(\"click\", function() {\n    $modalReage.show();\n  });\n\n  $btnConfirmReage.on(\"click\", function() {\n    $btnConfirmReage.prop(\"disabled\", true);\n\n    $.ajax({\n      url: _urlReage,\n      method: 'POST',\n      dataType: 'json',\n      data: {\n        id: _id,\n        authenticity_token: _authenticityToken\n      },\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.reload();\n      },\n      error: function(response) {\n        console.log(response);\n        var errors  = [];\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmReage.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n};\n\nvar init  = function(config) {\n  _id                 = config.id;\n  _authenticityToken  = config.authenticityToken;\n  _data               = config.data;\n\n  _cacheDom();\n  _bindEvents();\n};\n\nexport default { init: init };\n", "var _data;\n\nvar fontSizeDefault   = 9;\nvar fillColorDefault  = '#fff1c7';\n\nvar styleDefault = {\n  fontSize: 7\n}\n\nvar styleBoldDefault = {\n  fontSize: 9,\n  bold: true\n}\n\nvar styleEmphDefault = {\n  fontSize: 9,\n  bold: true,\n  italics: true\n}\n\nvar styleEmphSecondary = {\n  fontSize: 7,\n  bold: true,\n  italics: true\n}\n\nvar styleSmall = {\n  fontSize: 7\n}\n\nvar styleSectionHeader = {\n  fontSize: 9,\n  bold: true,\n  margin: [0, 0, 0, 10]\n}\n\nvar styleCellLabel = {\n  fontSize: 7\n}\n\nvar styleCellValue = {\n  fontSize: 7,\n  bold: true\n}\n\nvar styleCellCenteredLabel = {\n  fontSize: 7,\n  fillColor: fillColorDefault,\n  alignment: 'center',\n  bold: true\n}\n\nvar buildHeader = function() {\n  var logo                  = 'data:image/png;base64,' + _data.logo;\n  var profilePicture        = 'data:image/png;base64,' + _data.profile_picture;\n\n  var header = {\n    margin: 20,\n    columns: [\n      {\n        width: '100%',\n        columns: [\n          {\n            image: logo,\n            fit: [65, 65],\n            width: '25%',\n            alignment: 'center'\n          },\n          {\n            wdith: '*',\n            text: [\n              { text: 'Kabuhayan sa Ganap na Kasarinlan Credit and Savings Cooperative\\n', style: styleBoldDefault },\n              { text: '4th Floor KMBA Members\u2019 Center Building\\n', style: styleSmall },\n              { text: '5 Matimpiin Street, Barangay Pinyahan, Quezon City 1100\\n', style: styleSmall },\n              { text: 'Telephone Numbers: (632) 5310-2470/8442-9607; Fax Number: (632) 5310-2470 loc. 204\\n', style: styleSmall },\n              { text: 'CDA Reg. No.: 9520-1016000000028521\\n', style: styleEmphDefault },\n              { text: 'CIN: 16201628521\\n', style: styleEmphSecondary }\n            ]\n          },\n          {\n            image: profilePicture,\n            fit: [60, 60],\n            alignment: 'right'\n          }\n        ]\n      }\n    ]\n  }\n\n  return header;\n}\n\nvar buildLoanDetailsBody = function() {\n\n  var body  = [\n                [\n                  { text: \"1. Halaga ng hiniram\", style: styleCellLabel, border: [false, false, false, false] },\n                  { text: \" \", border: [false, false, false, false] },\n                  { text: _data.principal, style: styleCellValue, border: [false, false, false, false], alignment: 'right' },\n                  { text: \"\", border: [false, false, false, false] }\n                ],\n                [\n                  { text: \"2. Mga kaltas\", style: styleCellLabel, border: [false, false, false, false] },\n                  { text: \" \", border: [false, false, false, false] },\n                  { text: \" \", style: styleCellValue, border: [false, false, false, false], alignment: 'right' },\n                  { text: \" \", border: [false, false, false, false] }\n                ]\n              ];\n\n  _data.deductions.forEach(function(o) {\n    console.log(o);\n    body.push([\n      { text: \"\\t\\u200B\\t\\u200B\\t\\u200B\\t\\u200B\\t\\u200B\" + o.name, style: styleCellLabel, border: [false, false, false, false] },\n      { text: \" \", border: [false, false, false, false] },\n      { text: o.amount, style: styleCellValue, border: [false, false, false, false], alignment: 'justify' },\n      { text: \"\", border: [false, false, false, false] }\n    ]);\n  });\n\n  body.push([\n    { text: \"3. Kabuuang halaga na natanggap\", style: styleCellLabel, border: [false, false, false, false] },\n    { text: \" \", border: [false, false, false, false] },\n    { text: _data.amount_released, style: styleCellValue, border: [false, false, false, false], alignment: 'right' },\n    { text: \"\", border: [false, false, false, false] }\n  ]);\n\n  body.push([\n    { text: \"4. Effective Interest Rate\", style: styleCellLabel, border: [false, false, false, false] },\n    { text: \" \", border: [false, false, false, false] },\n    { text: \" \", style: styleCellValue, border: [false, false, false, false], alignment: 'right' },\n    { text: \"\", border: [false, false, false, false] }\n  ]);\n\n  body.push([\n    { text: \"\\t\\u200B\\t\\u200B\\t\\u200B\\t\\u200B\\t\\u200BBuwanang Interest Rate\\n\\t\\u200B\\t\\u200B\\t\\u200B\\t\\u200B\\t\\u200BLoan Term\\n\\t\\u200B\\t\\u200B\\t\\u200B\\t\\u200B\\t\\u200BMode of Payment\\n\\t\\u200B\\t\\u200B\\t\\u200B\\t\\u200B\\t\\u200BWeekly Payments\\n\\t\\u200B\\t\\u200B\\t\\u200B\\t\\u200B\\t\\u200BDate of First Payment\\n\\t\\u200B\\t\\u200B\\t\\u200B\\t\\u200B\\t\\u200BMaturity Date\", style: styleCellLabel, border: [false, false, false, false] },\n    { text: _data.interest_rate + \"%\\n\" + _data.term + \"\\n\" + _data.mode_of_payment + \"\\n\" + _data.weekly_payments + \"\\n\" + \" \" + \"\\n\" + \" \", style: styleCellValue, border: [false, false, false, false], alignment: 'justify' },\n    { text: \" \", border: [false, false, false, false] },\n    { text: \" \", border: [false, false, false, false] }\n  ])\n\n  body.push([\n    { text: \"5. Maintaining Balance\", style: styleCellLabel, border: [false, false, false, false] },\n    { text: _data.maintaining_balance, style: styleCellValue, border: [false, false, false, false], alignment: 'right' },\n    { text: \" \", border: [false, false, false, false] },\n    { text: \"\", border: [ false, false, false, false] }\n  ]);\n\n  return body;\n}\n\nvar build = function() {\n  var coMakerProfilePicture         = 'data:image/png;base64,' + _data.comaker_profile_picture;\n  var coMakerRelativeProfilePicture = 'data:image/png;base64,' + _data.comaker_relative_profile_picture;\n\n  var docDefinition = {\n    pageSize: 'LEGAL',\n    pageMargins: [20, 80, 20, 60],\n    header: (currentPage, pageCount) => {\n      if(currentPage == 1) {\n        return buildHeader()\n      } else {\n        return \"\"\n      }\n    },\n    content: [\n      {\n        text: 'LOAN APPLICATION FORM\\n(' + _data.category + ')', style: { bold: true, alignment: 'center' }\n      },\n      {\n        table: {\n          margin: [0, 0, 0, 0],\n          widths: [\"50%\", \"50%\"],\n          body: [\n            [\n              { text: \"PN Number: \" + _data.pn_number, style: { bold: true, fontSize: 11 }, border: [false, false, false, false] },\n              { text: \"Petsa: ____________\", style: styleCellValue, alignment: 'right', border: [false, false, false, false] }\n            ]\n          ]\n        }\n      },\n      {\n        table: {\n          margin: [0, 0, 0, 0],\n          widths: [\"15%\", \"85%\"],\n          body: [\n            [\n              { text: \"Pangalan\\nID Number / Sentro\\nTirahan\\nKlase ng Loan\\nUri ng Negosyo\", style: styleCellLabel, border: [false, false, false, false] },\n              { text: _data.full_name + '\\n' + _data.id_number + '-' + _data.center + '\\n' + _data.address + '\\n' + _data.loan_product + '\\n' + _data.project_type, style: styleCellValue, border: [false, false, false, false] }\n            ]\n          ]\n        }\n      },\n      {\n        table: {\n          margin: [0, 0, 0, 0],\n          widths: [\"20%\", \"20%\", \"30%\", \"30%\"],\n          body: buildLoanDetailsBody()\n        }\n      },\n      {\n        text: '\\n\\nREKOMENDASYON NG SENTRO\\n\\n\\n',\n        style: styleCellValue\n      },\n      {\n        table: {\n          margin: [0, 0, 0, 0],\n          widths: [\"33%\", \"33%\", \"33%\"],\n          body: [\n            [\n              { text: \"____________________________________\", style: styleCellLabel, border: [false, false, false, false], alignment: 'center' },\n              { text: \"____________________________________\", style: styleCellLabel, border: [false, false, false, false], alignment: 'center' },\n              { text: \"____________________________________\", style: styleCellLabel, border: [false, false, false, false], alignment: 'center' }\n            ],\n            [\n              { text: \"Pangalan at Lagda ng Secretary\", style: styleCellLabel, border: [false, false, false, false], alignment: 'center' },\n              { text: \"Pangalan at Lagda ng Treasurer\", style: styleCellLabel, border: [false, false, false, false], alignment: 'center' },\n              { text: \"Pangalan at Lagda ng Center Chief\", style: styleCellLabel, border: [false, false, false, false], alignment: 'center' }\n            ]\n          ]\n        }\n      },\n      {\n        text: '\\nPAGPROSESO NG UTANG\\n\\n\\n',\n        style: styleCellValue\n      },\n      {\n        table: {\n          margin: [0, 0, 0, 0],\n          widths: [\"33%\", \"33%\", \"33%\"],\n          body: [\n            [\n              { text: \"____________________________________\", style: styleCellLabel, border: [false, false, false, false], alignment: 'center' },\n              { text: \"____________________________________\", style: styleCellLabel, border: [false, false, false, false], alignment: 'center' },\n              { text: \"____________________________________\", style: styleCellLabel, border: [false, false, false, false], alignment: 'center' }\n            ],\n            [\n              { text: \"Pangalan at Lagda ng SO\", style: styleCellLabel, border: [false, false, false, false], alignment: 'center' },\n              { text: \"Pangalan at Lagda ng SOM\", style: styleCellLabel, border: [false, false, false, false], alignment: 'center' },\n              { text: \"Pangalan at Lagda ng SCCO\", style: styleCellLabel, border: [false, false, false, false], alignment: 'center' }\n            ]\n          ]\n        }\n      },\n      {\n        text: '\\nPAGTANGGAP NG LOAN NG MIYEMBRO\\n\\n\\n',\n        style: styleCellValue\n      },\n      {\n        table: {\n          margin: [0, 0, 0, 0],\n          widths: [\"25%\", \"25%\", \"25%\", \"25%\"],\n          body: [\n            [\n              { text: _data.full_name, style: styleCellValue, border: [false, false, false, false], alignment: 'center', decoration: 'underline', decorationStyle: 'solid', decorationColor: 'black' },\n              { text: \"____________________\", style: styleCellLabel, border: [false, false, false, false] },\n              { text: \"____________________\", style: styleCellLabel, border: [false, false, false, false] },\n              { text: \"____________________\", style: styleCellLabel, border: [false, false, false, false] }\n            ],\n            [\n              { text: 'Pangalan at Lagda ng Miyembro\\n\\n', style: styleCellLabel, border: [false, false, false, false], alignment: 'center' },\n              { text: 'Petsa\\n\\n', style: styleCellLabel, border: [false, false, false, false] },\n              { text: 'Date Released\\n\\n', style: styleCellLabel, border: [false, false, false, false] },\n              { text: 'First Payment\\n\\n', style: styleCellLabel, border: [false, false, false, false] }\n            ]\n          ]\n        }\n      },\n      {\n        table: {\n          margin: [0, 0, 0, 0],\n          widths: [\"100%\"],\n          style: { fontSize: fontSizeDefault },\n          body: [\n            [\n              { text: 'KASUNDUAN', style: { bold: true }, alignment: 'justify', border: [true, true, true, false] }\n            ],\n            [\n              { \n                text: [\n                  { text: 'Ako na nakihiram ng ', style: styleCellLabel },\n                  { text: _data.principal, style: styleCellValue },\n                  { text: ' sa Kasagana-ka Coop ay nangangako sa mga sumusunod:', style: styleCellLabel }\n                ],\n                border: [true, false, true, false]\n              }\n            ],\n            [\n              {\n                ol: [\n                  { \n                    text: [\n                      { text: 'Bayaran ko ang nasabing halaga, kasama ang interes na (', style: styleCellLabel },\n                      { text: _data.interest, style: styleCellValue },\n                      { text: '), sa pamamagitan ng paghulog linggo-linggo na di bababa sa (', style: styleCellLabel },\n                      { text: _data.weekly_payments, style: styleCellValue },\n                      { text: '), simula sa (______________) hanggang sa (______________)', style: styleCellLabel }\n                    ],\n                  },\n                  {\n                    text: 'Ako ay laging mag-iimpok na hindi bababa sa (_________) kada linggo', style: styleCellLabel\n                  },\n                  {\n                    text: 'Ako ay magbabayad sa aking guarantor o co-maker kung aabonohan niya ang hulog ko. Naiintindihan ko na maari niya akong ireklamo sa barangay o hukuman kung hindi ko siya mababayaran', style: styleCellLabel\n                  },\n                  {\n                    text: [\n                      { text: 'Kapag ako ay hindi nakabayad sa takdang panahon, pumapayag ako na ipagamit sa ', style: styleCellLabel },\n                      { text: 'Kasagana-ka Coop ', style: styleCellValue },\n                      { text: 'ang anumang pondo na aking naipon bilang pambayad sa utang sa ', style: styleCellLabel },\n                      { text: 'Kasagana-ka Coop.', style: styleCellValue },\n                    ],\n                    style: { fontSize: fontSizeDefault }\n                  },\n                  {\n                    text: [\n                      { text: 'Ako ay pumapayag na mag-iwan at hindi ma-withdraw ang savings ko sa halagang (' + _data.loan_product_maintaining_balance_percentage + '%) ng kasalukuyang utang ko sa ', style: styleCellLabel },\n                      { text: 'Kasagana-ka Coop.', style: styleCellValue }\n                    ],\n                    style: { fontSize: fontSizeDefault }\n                  },\n                  {\n                    text: [\n                      { text: 'Ako ay pumapayag na sumama sa ', style: styleCellLabel },\n                      { text: 'SIT-DOWN', style: styleCellValue },\n                      { text: ' at magpa ', style: styleCellLabel },\n                      { text: 'SIT-DOWN', style: styleCellValue },\n                      { text: ' sa panahon na ako ay hindi makahulog sa takdang oras', style: styleCellLabel }\n                    ],\n                    style: { fontSize: fontSizeDefault }\n                  },\n                  {\n                    text: [\n                      { text: 'Pumapayag ako na maireklamo o maihabla ng ', style: styleCellLabel },\n                      { text: 'Kasagana-ka Coop', style: styleCellValue },\n                      { text: ' sa nararapat na hukuman kung hindi ko masunod ang laman ng kasunduang ito. Kung sakaling mangyari ito at pumayag ako na bayaran lahat ng gastos sa pagsampa at pagdidinig ng kaso.', style: styleCellLabel }\n                    ]\n                  }\n                ],\n                style: styleCellLabel,\n                border: [true, false, true, false]\n              }\n            ],\n            [\n              {\n                text: [\n                  { text: 'Sa aking paglagda sa ibaba, aking naiintindihan at pinahihintulutan na iproseso ng ', style: styleCellLabel },\n                  { text: 'K-Coop', style: styleCellValue },\n                  { text: ' ang mga impormasyon sa form na ito alinsunod sa RA No. 10173 o Data Privacy Act.\\n\\n\\n', border: [true, false, true, false], style: styleCellLabel }\n                ],\n                style: styleCellLabel,\n                border: [true, false, true, false]\n              }\n            ],\n            [\n              {\n                columns: [\n                  { text: _data.full_name, style: styleCellValue, border: [false, false, false, false], alignment: 'center', decoration: 'underline', decorationStyle: 'solid', decorationColor: 'black' },\n                  { text: _data.spouse, style: styleCellValue, border: [false, false, false, false], alignment: 'center', decoration: 'underline', decorationStyle: 'solid', decorationColor: 'black' }\n                ],\n                border: [true, false, true, false]\n              }\n            ],\n            [\n              {\n                columns: [\n                  { text: 'Pangalan at Lagda ng Miyembro', style: styleCellLabel, border: [false, false, false, false], alignment: 'center' },\n                  { text: 'Pangalan at Lagda ng Asawa ng Miyembro', style: styleCellLabel, border: [false, false, false, false], alignment: 'center' }\n                ],\n                border: [true, false, true, true]\n              }\n            ],\n            [\n              {\n                text: [\n                  { text: 'Kami na nasa hustong gulang ay nangangakong susubaybayan ang negosyo ni (', style: styleCellLabel },\n                  { text: _data.full_name, style: styleCellValue },\n                  { text: ') bilang kanyang co-maker o guarantor. Kapag hindi siya nakapaghulog sa takdang oras ay babayaran ko ang kaniyang hulog kasama ang interes sa ', style: styleCellLabel },\n                  { text: 'Kasagana-ka Coop.\\n\\n\\n\\n\\n', style: styleCellValue }\n                ],\n                style: { fontSize: fontSizeDefault },\n                border: [true, false, true, false]\n              }\n            ],\n            [\n              {\n                columns: [\n                  {\n                    text: [\n                      { text: _data.co_maker_two, style: styleCellValue, decoration: 'underline', alignment: 'center' },\n                      { text: '\\nPangalan at Lagda', style: styleCellLabel, alignment: 'center' },\n                      { text: '\\n(Kamag-Anak)', style: styleCellLabel, alignment: 'center' },\n                      { text: '\\n\\n\\n' + _data.co_maker_one, style: styleCellLabel, decoration: 'underline', alignment: 'center' },\n                      { text: '\\nPangalan at Lagda', style: styleCellLabel, alignment: 'center' },\n                      { text: '\\n(Kasamahan sa Sentro)', style: styleCellLabel, alignment: 'center' }\n                    ]\n                  },\n                  {\n                    text: [\n                      { text: ' ', style: styleCellValue, alignment: 'center' },\n                      { text: '\\n', style: styleCellLabel, alignment: 'center' },\n                      { text: '\\n', style: styleCellLabel, alignment: 'center' },\n                      { text: '\\n\\n\\n_______________________', style: styleCellLabel, decoration: 'underline', alignment: 'center' },\n                      { text: '\\nPangalan at Lagda', style: styleCellLabel, alignment: 'center' },\n                      { text: '\\n(Asawa ng Kasamahan sa Sentro)', style: styleCellLabel, alignment: 'center' }\n                    ]\n                  },\n                  {\n                    columns: [\n                      {\n                        stack: [\n                          {\n                            image: coMakerProfilePicture,\n                            fit: [60, 60],\n                            alignment: 'center'\n                          },\n                          {\n                            text: 'Kasamahan sa Sentro', style: styleCellValue, alignment: 'center'\n                          }\n                        ]\n                      },\n                      {\n                        stack: [\n                          {\n                            image: coMakerRelativeProfilePicture,\n                            fit: [60, 60],\n                            alignment: 'center'\n                          },\n                          {\n                            text: 'Kamag-anak', style: styleCellValue, alignment: 'center'\n                          }\n                        ]\n                      }\n                    ]\n                  }\n                ],\n                border: [true, false, true, true]\n              }\n            ]\n          ]\n        }\n      }\n    ]\n  }\n\n  return docDefinition;\n}\n\nvar execute = function(data) {\n  _data = data;\n\n  return build();\n}\n\nexport default { execute: execute }\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\n\nvar $btnNewTransaction;\nvar $btnConfirmNewTransaction;\nvar $modalNewTransaction;\n\nvar $selectBranch;\nvar $selectCenter;\nvar $inputCollectionDate;\n\nvar $message;\n\nvar templateErrorList;\n\nvar branches  = [];\n\nvar urlBranches       = \"/api/v1/branches\";\nvar urlCreateBilling  = \"/api/v1/billings\";\n\nvar _authenticityToken;\n\nvar _cacheDom = function() {\n  $modalNewTransaction = new bootstrap.Modal(\n    document.getElementById(\"modal-new-transaction\")\n  )\n\n  $btnNewTransaction        = $(\"#btn-new-transaction\");\n  $btnConfirmNewTransaction = $(\"#btn-confirm-new-transaction\");\n\n  $selectBranch         = $(\"#select-branch\");\n  $selectCenter         = $(\"#select-center\");\n  $selectBillingType    = $(\"#select-billing-type\");\n  $inputCollectionDate  = $(\"#input-collection-date\");\n\n  $message  = $(\".message\");\n\n  templateErrorList = $(\"#template-error-list\").html();\n};\n\nvar _bindEvents = function() {\n  $btnNewTransaction.on(\"click\", function() {\n    $modalNewTransaction.show();\n  });\n\n  $btnConfirmNewTransaction.on(\"click\", function() {\n    var collectionDate  = $inputCollectionDate.val();\n    var branchId        = $selectBranch.val();\n    var centerId        = $selectCenter.val();\n    var billing_type    = $selectBillingType.val();\n\n    $message.html(\n      \"Loading...\"\n    );\n\n    $btnConfirmNewTransaction.prop(\"disabled\", true);\n    $selectBranch.prop(\"disabled\", true);\n    $selectCenter.prop(\"disabled\", true);\n    $inputCollectionDate.prop(\"disabled\", true);\n\n    $.ajax({\n      url: urlCreateBilling,\n      method: 'POST',\n      data: {\n        authenticity_token: _authenticityToken,\n        collection_date: collectionDate,\n        branch_id: branchId,\n        center_id: centerId,\n        billing_type: billing_type\n      },\n      success: function(response) {\n        $message.html(\n          \"Success! Redirecting...\"\n        );\n\n        window.location.href=\"/billings/\" + response.id;\n      },\n      error: function(response) {\n        var errors  = [];\n\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"]\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmNewTransaction.prop(\"disabled\", false);\n          $selectBranch.prop(\"disabled\", false);\n          $selectCenter.prop(\"disabled\", false);\n          $inputCollectionDate.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  $selectBranch.on(\"change\", function() {\n    var branchId  = $(this).val();\n\n    $selectCenter.html(\"\");\n    \n    for(var i = 0; i < branches.length; i++) {\n      if(branches[i].id == branchId) {\n        for(var j = 0; j < branches[i].centers.length; j++) {\n          $selectCenter.append(\n            \"<option value='\" + branches[i].centers[j].id + \"'>\" + branches[i].centers[j].name + \"</option>\"\n          );\n        }\n      }\n    }\n  });\n};\n\nvar init  = function(config) {\n  _authenticityToken  = config.authenticityToken;\n\n  $.ajax({\n    url: urlBranches,\n    method: 'GET',\n    success: function(response) {\n      branches  = response.branches;\n    },\n    error: function(response) {\n      console.log(response);\n      alert(\"Error in fetching branches\");\n    }\n  });\n\n  _cacheDom();\n  _bindEvents();\n};\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\n\nvar options;\nvar id;\nvar authenticityToken;\n\nvar $btnSave;\nvar $modalSave;\nvar $btnConfirmSave;\n\nvar $btnUnSave;\nvar $modalUnSave;\nvar $btnConfirmUnSave;\n\nvar $btnApprove;\nvar $btnConfirmApprove;\nvar $modalApprove;\n\nvar $btnCheck;\nvar $btnConfirmCheck;\nvar $modalCheck;\n\nvar $btnUncheck;\nvar $btnConfirmUncheck;\nvar $modalUncheck;\n\n\nvar $btnPrint;\nvar $btnPrintWp;\nvar $modalPrint;\nvar $btnPrintThermal;\nvar $btnPdf;\n\nvar $btnZeroOut;\nvar $btnConfirmZeroOut;\nvar $btnExcel;\nvar $modalZeroOut;\n\nvar $checkSpecialReport;\nvar $checksp = \"\";\n\nvar $message;\nvar templateErrorList;\n\nvar _urlApprove   = \"/api/v1/billings/approve\";\nvar _urlCheck     = \"/api/v1/billings/check\";\nvar _urlSave     = \"/api/v1/billings/save\";\nvar _urlUnSave     = \"/api/v1/billings/unsave\";\nvar _urlUncheck   = \"/api/v1/billings/uncheck\";\nvar _urlZeroOut   = \"/api/v1/billings/zero_out\";\nvar _urlPrint     = \"/api/v1/print/generate_file\";\nvar _urlDownload  = \"/billings/excel\";\n\nvar _cacheDom = function() {\n  $modalSave = new bootstrap.Modal(\n    document.getElementById(\"modal-save\")\n  );\n  $modalUnSave = new bootstrap.Modal(\n    document.getElementById(\"modal-unsave\")\n  );\n  $modalApprove = new bootstrap.Modal(\n    document.getElementById(\"modal-approve\")\n  );\n\n  $modalCheck = new bootstrap.Modal(\n    document.getElementById(\"modal-check\")\n  );\n\n  $modalUncheck = new bootstrap.Modal(\n    document.getElementById(\"modal-uncheck\")\n  );\n\n  $modalZeroOut = new bootstrap.Modal(\n    document.getElementById(\"modal-zero-out\")\n  );\n\n  $modalPrint = new bootstrap.Modal(\n    document.getElementById(\"modal-print\")\n  );\n\n  $btnSave         = $(\"#btn-save-billing\");\n  $btnConfirmSave  = $(\"#btn-confirm-save\");\n\n  $btnUnSave         = $(\"#btn-unsave-billing\");\n  $btnConfirmUnSave  = $(\"#btn-confirm-unsave\");\n  \n  $btnApprove         = $(\"#btn-approve\");\n  $btnConfirmApprove  = $(\"#btn-confirm-approve\");\n\n  $btnCheck         = $(\"#btn-check\");\n  $btnConfirmCheck  = $(\"#btn-confirm-check\");\n  \n  $btnUncheck         = $(\"#btn-uncheck\");\n  $btnConfirmUncheck  = $(\"#btn-confirm-uncheck\");\n\n  $btnPdf     = $(\"#btn-print-pdf\");\n  $btnPrint   = $(\"#btn-print\");\n  $btnPrintWp = $(\"#btn-print-wp\");\n  $btnPrintThermal = $(\"#btn-termal\");\n  $btnExcel   = $(\"#btn-excel\");\n  $btnZeroOut         = $(\"#btn-zero-out\");\n  $btnConfirmZeroOut  = $(\"#btn-confirm-zero-out\");\n\n  $checkSpecialReport = $(\"#check-special-report\");\n\n  $message          = $(\".message\");\n  templateErrorList = $(\"#template-error-list\").html();\n};\n\nvar _bindEvents = function() {\n  $btnZeroOut.on(\"click\", function() {\n    $modalZeroOut.show();\n    $message.html(\"\");\n  });\n  $checkSpecialReport.on(\"click\",function(){\n   $checksp = \"true\"\n  });\n\n  $btnConfirmZeroOut.on(\"click\", function() {\n\n     var $special_report_val = $checksp\n\n\n    $message.html(\"Loading...\");\n\n    $btnConfirmZeroOut.prop(\"disabled\", true);\n\n    $.ajax({\n      url: _urlZeroOut,\n      method: 'POST',\n      dataType: 'json',\n      data: {\n        id: id,\n        value_special_report: $checksp,\n        authenticity_token: authenticityToken\n      },\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.reload();\n      },\n      error: function(response) {\n        console.log(response);\n        var errors  = [];\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmZeroOut.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  $btnUncheck.on(\"click\", function() {\n    \n    $modalUncheck.show();\n    $message.html(\"\");\n  });\n  \n\n\n  $btnConfirmUncheck.on(\"click\", function() {\n    $btnConfirmUncheck.prop(\"disabled\", true);\n\n    $.ajax({\n      url: _urlUncheck,\n      method: 'POST',\n      dataType: 'json',\n      data: {\n        id: id,\n        authenticity_token: authenticityToken\n      },\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.reload();\n      },\n      error: function(response) {\n        console.log(response);\n        var errors  = [];\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmCheck.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  $btnSave.on(\"click\", function() {\n    $modalSave.show();\n    $message.html(\"\");\n  });\n  \n  $btnUnSave.on(\"click\", function() {\n    $modalUnSave.show();\n    $message.html(\"\");\n  });\n  \n  $btnConfirmUnSave.on(\"click\", function() {\n    $btnConfirmUnSave.prop(\"disabled\", true);\n\n    $.ajax({\n      url: _urlUnSave,\n      method: 'POST',\n      dataType: 'json',\n      data: {\n        id: id,\n        authenticity_token: authenticityToken\n      },\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.reload();\n      },\n      error: function(response) {\n        console.log(response);\n        var errors  = [];\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmCheck.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  $btnCheck.on(\"click\", function() {\n    $modalCheck.show();\n    $message.html(\"\");\n  });\n  \n  $btnConfirmSave.on(\"click\", function() {\n    $btnConfirmSave.prop(\"disabled\", true);\n\n    $.ajax({\n      url: _urlSave,\n      method: 'POST',\n      dataType: 'json',\n      data: {\n        id: id,\n        authenticity_token: authenticityToken\n      },\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.reload();\n      },\n      error: function(response) {\n        console.log(response);\n        var errors  = [];\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmCheck.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  $btnConfirmCheck.on(\"click\", function() {\n    $btnConfirmCheck.prop(\"disabled\", true);\n\n    $.ajax({\n      url: _urlCheck,\n      method: 'POST',\n      dataType: 'json',\n      data: {\n        id: id,\n        authenticity_token: authenticityToken\n      },\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.reload();\n      },\n      error: function(response) {\n        console.log(response);\n        var errors  = [];\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmCheck.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  $btnPrintWp.on(\"click\", function() {\n    $modalPrint.show();\n    $message.html(\"\");\n\n    var type = \"wp\";\n\n    $modalPrint.hide();\n    window.open(\"/print?type=\" + type + \"&id=\" + id);\n  });\n  $btnPrintThermal.on(\"click\", function() {\n    $modalPrint.show();\n    $message.html(\"\");\n\n    var type = \"print_thermal\";\n\n    $modalPrint.hide();\n    window.open(\"/print?type=\" + type + \"&id=\" + id);\n  });\n  \n  $btnPdf.on(\"click\", function() {\n    $modalPrint.show();\n    $message.html(\"\");\n\n    var type = \"print_thermal\";\n\n    $modalPrint.hide();\n    window.open(\"/print?type=\" + type + \"&id=\" + id);\n  });\n\n  $btnExcel.on(\"click\", function() {\n    $.ajax({\n      url: _urlDownload,\n      method: 'GET',\n      data: {\n        id: id,\n        authenticity_token: authenticityToken\n      },\n      dataType: 'json',\n      success: function(response) {\n        console.log(response);\n        window.open(response.download_url, '_blank');\n      },\n      error: function(response) {\n        $message.html(\"Error!\");\n      }\n    });\n  });\n\n\n  $btnPrint.on(\"click\", function() {\n    $modalPrint.show();\n\n    var type = \"billing\";\n\n    $modalPrint.hide();\n    window.open(\"/print?type=\" + type + \"&id=\" + id);\n  });\n\n  $btnApprove.on(\"click\", function() {\n    $message.html(\"\");\n    $modalApprove.show();\n  });\n\n  $btnConfirmApprove.on(\"click\", function() {\n    $message.html(\"Loading...\");\n\n    $btnConfirmApprove.prop(\"disabled\", true);\n\n    $.ajax({\n      url: _urlApprove,\n      method: 'POST',\n      dataType: 'json',\n      data: {\n        id: id,\n        authenticity_token: authenticityToken\n      },\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.reload();\n      },\n      error: function(response) {\n        console.log(response);\n        var errors  = [];\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmApprove.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n};\n\nvar init  = function(options) {\n  id                = options.id;\n  authenticityToken = options.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n};\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\n\nvar $btnNewTransaction;\nvar $btnConfirmNewTransaction;\nvar $modalNewTransaction;\n\nvar $selectBranch;\nvar $selectCenter;\nvar $inputCollectionDate;\n\nvar $message;\n\nvar templateErrorList;\n\nvar branches  = [];\n\nvar urlBranches                           = \"/api/v1/branches\";\nvar urlCreateMembershipPaymentCollection  = \"/api/v1/membership_payment_collections\";\n\nvar _authenticityToken;\n\nvar _cacheDom = function() {\n  $modalNewTransaction = new bootstrap.Modal(\n    document.getElementById(\"modal-new-transaction\")\n  );\n\n  $btnNewTransaction        = $(\"#btn-new-transaction\");\n  $btnConfirmNewTransaction = $(\"#btn-confirm-new-transaction\");\n\n  $selectBranch         = $(\"#select-branch\");\n  $selectCenter         = $(\"#select-center\");\n  $inputCollectionDate  = $(\"#input-collection-date\");\n\n  $message  = $(\".message\");\n\n  templateErrorList = $(\"#template-error-list\").html();\n};\n\nvar _bindEvents = function() {\n  $btnNewTransaction.on(\"click\", function() {\n    $modalNewTransaction.show();\n  });\n\n  $btnConfirmNewTransaction.on(\"click\", function() {\n    var collectionDate  = $inputCollectionDate.val();\n    var branchId        = $selectBranch.val();\n    var centerId        = $selectCenter.val();\n\n    $btnConfirmNewTransaction.prop(\"disabled\", true);\n    $selectBranch.prop(\"disabled\", true);\n    $selectCenter.prop(\"disabled\", true);\n    $inputCollectionDate.prop(\"disabled\", true);\n\n    $.ajax({\n      url: urlCreateMembershipPaymentCollection,\n      method: 'POST',\n      data: {\n        authenticity_token: _authenticityToken,\n        collection_date: collectionDate,\n        branch_id: branchId,\n        center_id: centerId\n      },\n      success: function(response) {\n        $message.html(\n          \"Success! Redirecting...\"\n        );\n\n        window.location.href=\"/membership_payment_collections/\" + response.id;\n      },\n      error: function(response) {\n        var errors  = [];\n\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"]\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmNewTransaction.prop(\"disabled\", false);\n          $selectBranch.prop(\"disabled\", false);\n          $selectCenter.prop(\"disabled\", false);\n          $inputCollectionDate.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  $selectBranch.on(\"change\", function() {\n    var branchId  = $(this).val();\n\n    $selectCenter.html(\"\");\n    \n    for(var i = 0; i < branches.length; i++) {\n      if(branches[i].id == branchId) {\n        for(var j = 0; j < branches[i].centers.length; j++) {\n          $selectCenter.append(\n            \"<option value='\" + branches[i].centers[j].id + \"'>\" + branches[i].centers[j].name + \"</option>\"\n          );\n        }\n      }\n    }\n  });\n};\n\nvar init  = function(config) {\n  _authenticityToken  = config.authenticityToken;\n\n  $.ajax({\n    url: urlBranches,\n    method: 'GET',\n    success: function(response) {\n      branches  = response.branches;\n    },\n    error: function(response) {\n      console.log(response);\n      alert(\"Error in fetching branches\");\n    }\n  });\n\n  _cacheDom();\n  _bindEvents();\n};\n\nexport default { init: init }\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\n\nvar options;\nvar membershipPaymentCollectionId;\nvar authenticityToken;\n\nvar $btnApprove;\nvar $btnConfirmApprove;\nvar $modalApprove;\n\nvar $btnPrint;\nvar $modalPrint;\nvar $btnPrintThermal;\n\nvar $message;\nvar templateErrorList;\n\nvar _urlApprove = \"/api/v1/membership_payment_collections/approve\";\nvar _urlPrint   = \"/api/v1/print/generate_file\";\n\nvar _cacheDom = function() {\n  $modalApprove = new bootstrap.Modal(\n    document.getElementById(\"modal-approve\")\n  );\n\n  $modalPrint = new bootstrap.Modal(\n    document.getElementById(\"modal-print\")\n  );\n  $btnPrintThermal    = $(\"#btn-thermal\");\n  $btnApprove         = $(\"#btn-approve\");\n  $btnConfirmApprove  = $(\"#btn-confirm-approve\");\n  $btnPrint           = $(\"#btn-print\");\n\n  $message          = $(\".message\");\n  templateErrorList = $(\"#template-error-list\").html();\n};\n\nvar _bindEvents = function() {\n  \n  $btnPrintThermal.on(\"click\", function() {\n    \n    var type = \"membership_payment_collection_thermal\";\n\n    window.open(\"/print?type=\" + type + \"&id=\" + membershipPaymentCollectionId);\n  });\n\n  $btnPrint.on(\"click\", function() {\n    $modalPrint.show();\n    \n    var type = \"membership_payment_collection\";\n\n    $modalPrint.hide();\n    window.open(\"/print?type=\" + type + \"&id=\" + membershipPaymentCollectionId);\n  });\n\n  $btnApprove.on(\"click\", function() {\n    $message.html(\"\");\n    $modalApprove.show();\n  });\n\n  $btnConfirmApprove.on(\"click\", function() {\n    $message.html(\"Loading...\");\n    $btnConfirmApprove.prop(\"disabled\", true);\n\n    $.ajax({\n      url: _urlApprove,\n      method: 'POST',\n      dataType: 'json',\n      data: {\n        id: membershipPaymentCollectionId,\n        authenticity_token: authenticityToken\n      },\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.reload();\n      },\n      error: function(response) {\n        console.log(response);\n        var errors  = [];\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmApprove.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n};\n\nvar init  = function(options) {\n  membershipPaymentCollectionId = options.id;\n  authenticityToken             = options.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n};\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\n\nvar $btnNewTransaction;\nvar $btnConfirmNewTransaction;\nvar $modalNewTransaction;\n\nvar $selectBranch;\nvar $inputCollectionDate;\n\nvar $message;\n\nvar templateErrorList;\n\nvar branches  = [];\n\nvar urlBranches                 = \"/api/v1/branches\";\nvar urlCreateDepositCollection  = \"/api/v1/deposit_collections\";\n\nvar _authenticityToken;\n\nvar _cacheDom = function() {\n  $modalNewTransaction = new bootstrap.Modal(\n    document.getElementById(\"modal-new-transaction\")\n  );\n\n  $btnNewTransaction        = $(\"#btn-new-transaction\");\n  $btnConfirmNewTransaction = $(\"#btn-confirm-new-transaction\");\n\n  $selectBranch         = $(\"#select-branch\");\n  $inputCollectionDate  = $(\"#input-collection-date\");\n\n  $message  = $(\".message\");\n\n  templateErrorList = $(\"#template-error-list\").html();\n};\n\nvar _bindEvents = function() {\n  $btnNewTransaction.on(\"click\", function() {\n    $modalNewTransaction.show();\n  });\n\n  $btnConfirmNewTransaction.on(\"click\", function() {\n    var collectionDate  = $inputCollectionDate.val();\n    var branchId        = $selectBranch.val();\n\n    $btnConfirmNewTransaction.prop(\"disabled\", true);\n    $selectBranch.prop(\"disabled\", true);\n    $inputCollectionDate.prop(\"disabled\", true);\n\n    $.ajax({\n      url: urlCreateDepositCollection,\n      method: 'POST',\n      data: {\n        authenticity_token: _authenticityToken,\n        collection_date: collectionDate,\n        branch_id: branchId\n      },\n      success: function(response) {\n        $message.html(\n          \"Success! Redirecting...\"\n        );\n\n        window.location.href=\"/deposit_collections/\" + response.id;\n      },\n      error: function(response) {\n        var errors  = [];\n\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"]\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmNewTransaction.prop(\"disabled\", false);\n          $selectBranch.prop(\"disabled\", false);\n          $inputCollectionDate.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n}\n\nvar init  = function(config) {\n  _authenticityToken  = config.authenticityToken;\n\n  $.ajax({\n    url: urlBranches,\n    method: 'GET',\n    success: function(response) {\n      branches  = response.branches;\n    },\n    error: function(response) {\n      console.log(response);\n      alert(\"Error in fetching branches\");\n    }\n  });\n\n  _cacheDom();\n  _bindEvents();\n};\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\n\nvar options;\nvar depositCollectionId;\nvar authenticityToken;\n\nvar $btnApprove;\nvar $btnConfirmApprove;\nvar $modalApprove;\n\nvar $btnFinalize;\nvar $btnConfirmFinalize;\nvar $modalFinalize;\n\n\nvar $btnPrint;\nvar $btnPrintAccountingEntry;\nvar $modalPrint;\n\nvar $btnPrintThermal;\n\nvar $selectCashManagementTemplate;\nvar $btnConfirmBook;\n\nvar $selectBook;\nvar $btnConfirmCashManagementTemplate;\n\nvar $btnLoadBranch;\nvar $btnConfirmLoadBranch;\nvar $modalLoadBranch;\n\nvar $btnLoadCenter;\nvar $btnConfirmLoadCenter;\nvar $modalLoadCenter;\nvar $selectCenter;\n\nvar $message;\nvar templateErrorList;\n\nvar _urlApprove                       = \"/api/v1/deposit_collections/approve\";\nvar _urlFinalize                      = \"/api/v1/deposit_collections/finalize\";\nvar _urlPrint                         = \"/api/v1/print/generate_file\";\nvar _urlModifyCashManagementTemplate  = \"/api/v1/deposit_collections/modify_cash_management_template\";\nvar _urlModifyBook                    = \"/api/v1/deposit_collections/modify_book\";\nvar _urlLoadBranch                    = \"/api/v1/deposit_collections/load_branch\";\nvar _urlLoadCenter                    = \"/api/v1/deposit_collections/load_center\";\n\nvar _cacheDom = function() {\n  $modalApprove = new bootstrap.Modal(\n    document.getElementById(\"modal-approve\")\n  );\n\n  $modalFinalize = new bootstrap.Modal(\n    document.getElementById(\"modal-finalize\")\n  );\n\n  $modalPrint = new bootstrap.Modal(\n    document.getElementById(\"modal-print\")\n  );\n\n  $modalLoadBranch = new bootstrap.Modal(\n    document.getElementById(\"modal-load-branch\")\n  );\n\n  $modalLoadCenter = new bootstrap.Modal(\n    document.getElementById(\"modal-load-center\")\n  );\n\n  $btnApprove         = $(\"#btn-approve\");\n  $btnConfirmApprove  = $(\"#btn-confirm-approve\");\n  \n  $btnFinalize        = $(\"#btn-finalize\");\n  $btnConfirmFinalize = $(\"#btn-confirm-finalize\");\n\n  $btnPrint                  = $(\"#btn-print\");\n  $btnPrintAccountingEntry   = $(\"#btn-print-accounting-entry\");\n\n  $btnPrintThermal            = $(\"#btn-thermal\");\n\n  $selectBook     = $(\"#select-book\");\n  $btnConfirmBook = $(\"#btn-confirm-book\");\n\n  $selectCashManagementTemplate     = $(\"#select-cash-management-template\");\n  $btnConfirmCashManagementTemplate = $(\"#btn-confirm-cash-management-template\");\n\n  $btnLoadBranch        = $(\"#btn-load-branch\");\n  $btnConfirmLoadBranch = $(\"#btn-confirm-load-branch\");\n\n  $btnLoadCenter        = $(\"#btn-load-center\");\n  $btnConfirmLoadCenter = $(\"#btn-confirm-load-center\");\n  $selectCenter         = $(\"#select-center\");\n\n  $message          = $(\".message\");\n  templateErrorList = $(\"#template-error-list\").html();\n};\n\nvar _bindEvents = function() {\n\n  $btnPrintThermal.on(\"click\", function(){\n    $modalPrint.show();\n\n    var type = \"deposit_collection_thermal\";\n\n    $modalPrint.hide();\n    window.open(\"/print?type=\" + type + \"&id=\" + depositCollectionId);\n\n  });\n\n  $btnLoadCenter.on(\"click\", function() {\n    $modalLoadCenter.show();\n  });\n\n  $btnConfirmLoadCenter.on(\"click\", function() {\n    var centerId  = $selectCenter.val();\n\n    $message.html(\"Loading....\");\n    $btnConfirmLoadBranch.prop(\"disabled\", true);\n    $selectCenter.prop(\"disabled\", true);\n\n    $.ajax({\n      url: _urlLoadCenter,\n      method: 'POST',\n      data: { \n        id: depositCollectionId,\n        center_id: centerId,\n        authenticity_token: authenticityToken\n      },\n      success: function(response) {\n        $message.html(\n          \"Success! Redirecting...\"\n        );\n\n        window.location.reload();\n      },\n      error: function(response) {\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmLoadCenter.prop(\"disabled\", false);\n          $selectCenter.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  $btnLoadBranch.on(\"click\", function() {\n    $modalLoadBranch.show();\n  });\n  $btnPrintThermal.on(\"click\", function(){\n   \n  });\n  $btnConfirmLoadBranch.on(\"click\", function() {\n    $message.html(\"Loading....\");\n    $btnConfirmLoadBranch.prop(\"disabled\", true);\n\n    $.ajax({\n      url: _urlLoadBranch,\n      method: 'POST',\n      data: { \n        id: depositCollectionId,\n        authenticity_token: authenticityToken\n      },\n      success: function(response) {\n        $message.html(\n          \"Success! Redirecting...\"\n        );\n\n        window.location.reload();\n      },\n      error: function(response) {\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmLoadBranch.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  $btnConfirmBook.on(\"click\", function() {\n    var book  = $selectBook.val();\n\n    $message.html(\"Loading...\");\n\n    $selectBook.prop(\"disabled\", true);\n    $btnConfirmBook.prop(\"disabled\", true);\n\n    $.ajax({\n      url: _urlModifyBook,\n      method: 'POST',\n      data: { \n        id: depositCollectionId,\n        book: book,\n        authenticity_token: authenticityToken\n      },\n      success: function(response) {\n        $message.html(\n          \"Success! Redirecting...\"\n        );\n\n        window.location.reload();\n      },\n      error: function(response) {\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $selectBook.prop(\"disabled\", false);\n          $btnConfirmBook.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  $btnConfirmCashManagementTemplate.on(\"click\", function() {\n    var template  = $selectCashManagementTemplate.val();\n\n    $message.html(\"Loading...\");\n\n    $selectCashManagementTemplate.prop(\"disabled\", true);\n    $btnConfirmCashManagementTemplate.prop(\"disabled\", true);\n\n    $.ajax({\n      url: _urlModifyCashManagementTemplate,\n      method: 'POST',\n      data: { \n        id: depositCollectionId,\n        template: template,\n        authenticity_token: authenticityToken\n      },\n      success: function(response) {\n        $message.html(\n          \"Success! Redirecting...\"\n        );\n\n        window.location.reload();\n      },\n      error: function(response) {\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $selectCashManagementTemplate.prop(\"disabled\", false);\n          $btnConfirmCashManagementTemplate.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  $btnPrint.on(\"click\", function() {\n    $modalPrint.show();\n\n    var type = \"deposit_collection\";\n\n    $modalPrint.hide();\n    window.open(\"/print?type=\" + type + \"&id=\" + depositCollectionId);\n  });\n\n  $btnPrintAccountingEntry.on(\"click\", function() {\n    $modalPrint.show();\n\n    var type = \"deposit_collection_accounting_entry\";\n\n    $modalPrint.hide();\n    window.open(\"/print?type=\" + type + \"&id=\" + depositCollectionId);\n  });\n\n  $btnApprove.on(\"click\", function() {\n    $message.html(\"\");\n    $modalApprove.show();\n  });\n\n  $btnConfirmApprove.on(\"click\", function() {\n    $message.html(\"Loading...\");\n    $btnConfirmApprove.prop(\"disabled\", true);\n\n    $.ajax({\n      url: _urlApprove,\n      method: 'POST',\n      dataType: 'json',\n      data: {\n        id: depositCollectionId,\n        authenticity_token: authenticityToken\n      },\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.reload();\n      },\n      error: function(response) {\n        console.log(response);\n        var errors  = [];\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmApprove.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  $btnFinalize.on(\"click\", function() {\n    $message.html(\"\");\n    $modalFinalize.show();\n  });\n\n  $btnConfirmFinalize.on(\"click\", function() {\n    $message.html(\"Loading...\");\n    $btnConfirmFinalize.prop(\"disabled\", true);\n\n    $.ajax({\n      url: _urlFinalize,\n      method: 'POST',\n      dataType: 'json',\n      data: {\n        id: depositCollectionId,\n        authenticity_token: authenticityToken\n      },\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.reload();\n      },\n      error: function(response) {\n        console.log(response);\n        var errors  = [];\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmFinalize.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n};\n\nvar init  = function(options) {\n  depositCollectionId = options.id;\n  authenticityToken   = options.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n};\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\n\nvar $btnNewTransaction;\nvar $btnConfirmNewTransaction;\nvar $modalNewTransaction;\n\nvar $selectBranch;\nvar $inputCollectionDate;\n\nvar $message;\n\nvar templateErrorList;\n\nvar branches  = [];\n\nvar urlBranches                 = \"/api/v1/branches\";\nvar urlCreateDepositCollection  = \"/api/v1/time_deposit_collections\";\n\nvar _authenticityToken;\n\nvar _cacheDom = function() {\n  $modalNewTransaction = new bootstrap.Modal(\n    document.getElementById(\"modal-new-transaction\")\n  );\n\n  $btnNewTransaction        = $(\"#btn-new-transaction\");\n  $btnConfirmNewTransaction = $(\"#btn-confirm-new-transaction\");\n\n  $selectBranch         = $(\"#select-branch\");\n  $inputCollectionDate  = $(\"#input-collection-date\");\n\n  $message  = $(\".message\");\n\n  templateErrorList = $(\"#template-error-list\").html();\n};\n\nvar _bindEvents = function() {\n  $btnNewTransaction.on(\"click\", function() {\n    $modalNewTransaction.show();\n  });\n\n  $btnConfirmNewTransaction.on(\"click\", function() {\n    var collectionDate  = $inputCollectionDate.val();\n    var branchId        = $selectBranch.val();\n\n    $btnConfirmNewTransaction.prop(\"disabled\", true);\n    $selectBranch.prop(\"disabled\", true);\n    $inputCollectionDate.prop(\"disabled\", true);\n\n    $.ajax({\n      url: urlCreateDepositCollection,\n      method: 'POST',\n      data: {\n        authenticity_token: _authenticityToken,\n        collection_date: collectionDate,\n        branch_id: branchId\n      },\n      success: function(response) {\n        $message.html(\n          \"Success! Redirecting...\"\n        );\n\n        window.location.href=\"/time_deposit_collections/\" + response.id;\n      },\n      error: function(response) {\n        var errors  = [];\n\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"]\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmNewTransaction.prop(\"disabled\", false);\n          $selectBranch.prop(\"disabled\", false);\n          $inputCollectionDate.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n}\n\nvar init  = function(config) {\n  _authenticityToken  = config.authenticityToken;\n\n  $.ajax({\n    url: urlBranches,\n    method: 'GET',\n    success: function(response) {\n      branches  = response.branches;\n    },\n    error: function(response) {\n      console.log(response);\n      alert(\"Error in fetching branches\");\n    }\n  });\n\n  _cacheDom();\n  _bindEvents();\n};\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\n\nvar options;\nvar timeDepositCollectionId;\nvar authenticityToken;\n\nvar $btnApprove;\nvar $btnConfirmApprove;\nvar $modalApprove;\n\nvar $btnPrint;\nvar $modalPrint;\n\nvar $btnPrintThermal;\n\nvar $selectCashManagementTemplate;\nvar $btnConfirmBook;\n\nvar $selectBook;\nvar $btnConfirmCashManagementTemplate;\n\nvar $message;\nvar templateErrorList;\n\nvar _urlApprove                       = \"/api/v1/time_deposit_collections/approve\";\nvar _urlPrint                         = \"/api/v1/print/generate_file\";\nvar _urlModifyCashManagementTemplate  = \"/api/v1/time_deposit_collections/modify_cash_management_template\";\nvar _urlModifyBook                    = \"/api/v1/time_deposit_collections/modify_book\";\n\nvar _cacheDom = function() {\n  $modalApprove = new bootstrap.Modal(\n    document.getElementById(\"modal-approve\")\n  );\n\n  $modalPrint = new bootstrap.Modal(\n    document.getElementById(\"modal-print\")\n  );\n\n  $btnApprove         = $(\"#btn-approve\");\n  $btnConfirmApprove  = $(\"#btn-confirm-approve\");\n\n  $btnPrint   = $(\"#btn-print\");\n\n  $btnPrintThermal = $(\"#btn-thermal\");\n\n  $selectBook     = $(\"#select-book\");\n  $btnConfirmBook = $(\"#btn-confirm-book\");\n\n  $selectCashManagementTemplate     = $(\"#select-cash-management-template\");\n  $btnConfirmCashManagementTemplate = $(\"#btn-confirm-cash-management-template\");\n\n  $message          = $(\".message\");\n  templateErrorList = $(\"#template-error-list\").html();\n};\n\nvar _bindEvents = function() {\n  $btnConfirmBook.on(\"click\", function() {\n    var book  = $selectBook.val();\n\n    $message.html(\"Loading...\");\n\n    $selectBook.prop(\"disabled\", true);\n    $btnConfirmBook.prop(\"disabled\", true);\n\n    $.ajax({\n      url: _urlModifyBook,\n      method: 'POST',\n      data: { \n        id: timeDepositCollectionId,\n        book: book,\n        authenticity_token: authenticityToken\n      },\n      success: function(response) {\n        $message.html(\n          \"Success! Redirecting...\"\n        );\n\n        window.location.reload();\n      },\n      error: function(response) {\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $selectBook.prop(\"disabled\", false);\n          $btnConfirmBook.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  $btnConfirmCashManagementTemplate.on(\"click\", function() {\n    var template  = $selectCashManagementTemplate.val();\n\n    $message.html(\"Loading...\");\n\n    $selectCashManagementTemplate.prop(\"disabled\", true);\n    $btnConfirmCashManagementTemplate.prop(\"disabled\", true);\n\n    $.ajax({\n      url: _urlModifyCashManagementTemplate,\n      method: 'POST',\n      data: { \n        id: timeDepositCollectionId,\n        template: template,\n        authenticity_token: authenticityToken\n      },\n      success: function(response) {\n        $message.html(\n          \"Success! Redirecting...\"\n        );\n\n        window.location.reload();\n      },\n      error: function(response) {\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $selectCashManagementTemplate.prop(\"disabled\", false);\n          $btnConfirmCashManagementTemplate.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n  $btnPrintThermal.on(\"click\", function() {   \n    var type = \"time_deposit_collection_thermal\";\n \n    window.open(\"/print?type=\" + type + \"&id=\" + timeDepositCollectionId);\n \n   });\n  $btnPrint.on(\"click\", function() {\n    $modalPrint.show();\n\n    var type = \"time_deposit_collection\";\n\n    $modalPrint.hide();\n    window.open(\"/print?type=\" + type + \"&id=\" + timeDepositCollectionId);\n  });\n\n  $btnApprove.on(\"click\", function() {\n    $message.html(\"\");\n    $modalApprove.show();\n  });\n\n  $btnConfirmApprove.on(\"click\", function() {\n    $message.html(\"Loading...\");\n    $btnConfirmApprove.prop(\"disabled\", true);\n\n    $.ajax({\n      url: _urlApprove,\n      method: 'POST',\n      dataType: 'json',\n      data: {\n        id: timeDepositCollectionId,\n        authenticity_token: authenticityToken\n      },\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.reload();\n      },\n      error: function(response) {\n        console.log(response);\n        var errors  = [];\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmApprove.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n};\n\nvar init  = function(options) {\n  timeDepositCollectionId = options.id;\n  authenticityToken       = options.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n};\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\n\nvar $btnNewTransaction;\nvar $btnConfirmNewTransaction;\nvar $modalNewTransaction;\n\nvar $selectBranch;\nvar $inputCollectionDate;\n\nvar $message;\n\nvar templateErrorList;\n\nvar branches  = [];\n\nvar urlBranches                   = \"/api/v1/branches\";\nvar urlCreateWithdrawalCollection = \"/api/v1/withdrawal_collections\";\n\nvar _authenticityToken;\n\nvar _cacheDom = function() {\n  $modalNewTransaction = new bootstrap.Modal(\n    document.getElementById(\"modal-new-transaction\")\n  );\n\n  $btnNewTransaction        = $(\"#btn-new-transaction\");\n  $btnConfirmNewTransaction = $(\"#btn-confirm-new-transaction\");\n\n  $selectBranch         = $(\"#select-branch\");\n  $inputCollectionDate  = $(\"#input-collection-date\");\n\n  $message  = $(\".message\");\n\n  templateErrorList = $(\"#template-error-list\").html();\n};\n\nvar _bindEvents = function() {\n  $btnNewTransaction.on(\"click\", function() {\n    $modalNewTransaction.show();\n  });\n\n  $btnConfirmNewTransaction.on(\"click\", function() {\n    var collectionDate  = $inputCollectionDate.val();\n    var branchId        = $selectBranch.val();\n\n    $btnConfirmNewTransaction.prop(\"disabled\", true);\n    $selectBranch.prop(\"disabled\", true);\n    $inputCollectionDate.prop(\"disabled\", true);\n\n    $.ajax({\n      url: urlCreateWithdrawalCollection,\n      method: 'POST',\n      data: {\n        authenticity_token: _authenticityToken,\n        collection_date: collectionDate,\n        branch_id: branchId\n      },\n      success: function(response) {\n        $message.html(\n          \"Success! Redirecting...\"\n        );\n\n        window.location.href=\"/withdrawal_collections/\" + response.id;\n      },\n      error: function(response) {\n        var errors  = [];\n\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"]\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmNewTransaction.prop(\"disabled\", false);\n          $selectBranch.prop(\"disabled\", false);\n          $inputCollectionDate.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n};\n\nvar init  = function(config) {\n  _authenticityToken  = config.authenticityToken;\n\n  $.ajax({\n    url: urlBranches,\n    method: 'GET',\n    success: function(response) {\n      branches  = response.branches;\n    },\n    error: function(response) {\n      console.log(response);\n      alert(\"Error in fetching branches\");\n    }\n  });\n\n  _cacheDom();\n  _bindEvents();\n};\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\n\nvar options;\nvar withdrawalCollectionId;\nvar authenticityToken;\n\nvar $btnApprove;\nvar $btnConfirmApprove;\nvar $modalApprove;\n\nvar $btnPrint;\nvar $modalPrint;\n\nvar $message;\nvar templateErrorList;\n\nvar _urlApprove = \"/api/v1/withdrawal_collections/approve\";\nvar _urlPrint   = \"/api/v1/print/generate_file\";\n\nvar _cacheDom = function() {\n  $modalApprove = new bootstrap.Modal(\n    document.getElementById(\"modal-approve\")\n  );\n\n  $btnApprove         = $(\"#btn-approve\");\n  $btnConfirmApprove  = $(\"#btn-confirm-approve\");\n\n  $btnPrint   = $(\"#btn-print\");\n  $modalPrint = $(\"#modal-print\");\n\n  $message          = $(\".message\");\n  templateErrorList = $(\"#template-error-list\").html();\n};\n\nvar _bindEvents = function() {\n  $btnPrint.on(\"click\", function() {\n    $modalPrint.show();\n\n    var type = \"withdrawal_collection\";\n\n    $modalPrint.hide();\n    window.open(\"/print?type=\" + type + \"&id=\" + withdrawalCollectionId);\n  });\n\n  $btnApprove.on(\"click\", function() {\n    $message.html(\"\");\n    $modalApprove.show();\n  });\n\n  $btnConfirmApprove.on(\"click\", function() {\n    $message.html(\"Loading...\");\n    $btnConfirmApprove.prop(\"disabled\", true);\n\n    $.ajax({\n      url: _urlApprove,\n      method: 'POST',\n      dataType: 'json',\n      data: {\n        id: withdrawalCollectionId,\n        authenticity_token: authenticityToken\n      },\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.reload();\n      },\n      error: function(response) {\n        console.log(response);\n        var errors  = [];\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmApprove.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n};\n\nvar init  = function(options) {\n  withdrawalCollectionId  = options.id;\n  authenticityToken       = options.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n};\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport * as bootstrap from \"bootstrap\";\nimport $ from 'jquery';\n//import DataTable from \"datatables.net\";\n//DataTable($);\n\nvar $branchSelect;\nvar $centerSelect;\n\nvar templateCenterOptions;\n\nvar _cacheDom = function() {\n  $branchSelect = $(\"#branch-select\");\n  $centerSelect = $(\"#center-select\");\n\n  templateCenterOptions = $(\"#template-center-options\").html();\n};\n\nvar _bindEvents = function() {\n  var branchId  = $branchSelect.val();\n  if(branchId) {\n    $.ajax({\n      url: \"/api/v1/branches/fetch_centers\",\n      method: 'GET',\n      data: {\n        id: branchId\n      },\n      success: function(response) {\n        $centerSelect.html(\n          Mustache.render(\n            templateCenterOptions,\n            response\n          )\n        );\n      },\n      error: function(response) {\n        alert(\"Error in fetching centers\");\n      }\n    });\n  }\n\n  $branchSelect.on(\"change\", function() {\n    var branchId  = $(this).val();\n\n    if(branchId) {\n      $.ajax({\n        url: \"/api/v1/branches/fetch_centers\",\n        method: 'GET',\n        data: {\n          id: branchId\n        },\n        success: function(response) {\n          $centerSelect.html(\n            Mustache.render(\n              templateCenterOptions,\n              response\n            )\n          );\n        },\n        error: function(response) {\n          alert(\"Error in fetching centers\");\n        }\n      });\n    }\n  });\n};\n\nvar init  = function(options) {\n  _cacheDom();\n  _bindEvents();\n};\n\nexport default { init: init }\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\n\nvar $modalDeleteSurveyAnswer;\nvar $btnDeleteSurveyAnswer;\nvar $btnConfirmDeleteSurveyAnswer;\nvar $message;\n\nvar templateErrorList;\n\nvar _urlDeleteSurveyAnswer  = \"/api/v1/members/delete_survey_answer\";\nvar _id;\nvar _memberId;\nvar _authenticityToken;\n\nvar _cacheDom = function() {\n  $modalDeleteSurveyAnswer      = $(\"#modal-delete-survey-answer\");\n  $btnDeleteSurveyAnswer        = $(\"#btn-delete-survey-answer\");\n  $btnConfirmDeleteSurveyAnswer = $(\"#btn-confirm-delete-survey-answer\");\n\n  $message          = $(\".message\");\n  templateErrorList = $(\"#template-error-list\").html();\n}\n\nvar _bindEvents = function() {\n  $btnDeleteSurveyAnswer.on(\"click\", function() {\n    $message.html(\"\");\n    $modalDeleteSurveyAnswer.show();\n  });\n\n  $btnConfirmDeleteSurveyAnswer.on(\"click\", function() {\n    $message.html(\"\");\n\n    var data  = {\n      id: _id,\n      authenticity_token: _authenticityToken\n    }\n\n    $btnConfirmDeleteSurveyAnswer.prop(\"disabled\", true);\n\n    $.ajax({\n      url: _urlDeleteSurveyAnswer,\n      method: 'POST',\n      data: data,\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.href=\"/members/\" + _memberId + \"/display\";\n      },\n      error: function(response) {\n        console.log(response);\n        var errors  = [];\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmDeleteSurveyAnswer.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n}\n\nvar init  = function(options) {\n  _id                 = options.id;\n  _memberId           = options.memberId;\n  _authenticityToken  = options.authenticityToken\n  _cacheDom();\n  _bindEvents();\n}\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\n\nvar $btnNewTransaction;\nvar $btnConfirmNewTransaction;\nvar $modalNewTransaction;\nvar $selectBranch;\nvar $selectCenter;\nvar $selectSavingsSubtype;\nvar $selectPaymentSubtype;\nvar $selectInsuranceSubtype;\nvar $inputCollectionDate;\n         \nvar $message;\nvar templateErrorList;\n\nvar _options;\nvar _authenticityToken;\n\nvar _urlFetchCenters  = \"/api/v1/branches/fetch_centers\";\nvar _urlSave          = \"/api/v1/savings_insurance_transfer_collections/save\";\n\nvar _cacheDom = function() {\n  $btnNewTransaction        = $(\"#btn-new-transaction\");\n  $btnConfirmNewTransaction = $(\"#btn-confirm-new-transaction\");\n  $selectBranch             = $(\"#select-branch\");\n  $selectCenter             = $(\"#select-center\");\n  $selectSavingsSubtype     = $(\"#select-savings-subtype\");\n  $selectPaymentSubtype     = $(\"#select-payment-subtype\");\n  $selectInsuranceSubtype   = $(\"#select-insurance-subtype\");\n  $inputCollectionDate      = $(\"#input-collection-date\");\n  $message                  = $(\".message\");\n  templateErrorList         = $(\"#template-error-list\").html();\n\n  //$modalNewTransaction      = $(\"#modal-new-transaction\");\n  $modalNewTransaction = new bootstrap.Modal(\n    document.getElementById(\"modal-new-transaction\")\n  )\n};\n\nvar _bindEvents = function() {\n  $btnConfirmNewTransaction.on(\"click\", function() {\n    var branchId          = $selectBranch.val();\n    var centerId          = $selectCenter.val();\n    var savingsSubtype    = $selectSavingsSubtype.val();\n    var paymentSubtype    = $selectPaymentSubtype.val();\n    var insuranceSubtype  = $selectInsuranceSubtype.val();\n    var collectionDate    = $inputCollectionDate.val();\n\n    $btnConfirmNewTransaction.prop(\"disabled\", true);\n    $selectBranch.prop(\"disabled\", true);\n    $selectCenter.prop(\"disabled\", true);\n    $inputCollectionDate.prop(\"disabled\", true);\n    $selectSavingsSubtype.prop(\"disabled\", true);\n    $selectPaymentSubtype.prop(\"disabled\", true);\n    $selectInsuranceSubtype.prop(\"disabled\", true);\n\n\n    var data  = {\n      branch_id: branchId,\n      center_id: centerId,\n      savings_subtype: savingsSubtype,\n      payment_subtype: paymentSubtype,\n      insurance_subtype: insuranceSubtype,\n      collection_date: collectionDate,\n      authenticity_token: _authenticityToken\n    };\n\n    $.ajax({\n      url: _urlSave,\n      method: 'POST',\n      data: data,\n      success: function(response) {\n        window.location.href = \"/savings_insurance_transfer_collections/\" + response.id;\n      },\n      error: function(response) {\n        var errors  = [];\n\n        try {\n          console.log(response);\n          errors = JSON.parse(response.responseText).errors.full_messages;\n        } catch(err) {\n          console.log(err);\n          errors = [\"Something went wrong\"];\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmNewTransaction.prop(\"disabled\", false);\n          $selectBranch.prop(\"disabled\", false);\n          $selectCenter.prop(\"disabled\", false);\n          $inputCollectionDate.prop(\"disabled\", false);\n          $selectSavingsSubtype.prop(\"disabled\", false);\n          $selectPaymentSubtype.prop(\"disabled\", false);\n          $selectInsuranceSubtype.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  $btnNewTransaction.on(\"click\", function() {\n    $modalNewTransaction.show();\n    $message.html(\"\");\n  });\n\n  $selectBranch.on(\"change\", function() {\n    var branchId  = $(this).val();\n\n    $.ajax({\n      method: 'GET',\n      url: _urlFetchCenters,\n      data: {\n        id: branchId\n      },\n      success: function(response) {\n        var centers = response.centers; \n        \n        $selectCenter.html(\"\");\n        for(var i = 0; i < centers.length; i++) {\n          $selectCenter.append(\"<option value='\" + centers[i].id + \"'>\" + centers[i].name + \"</option>\");\n        }\n      },\n      error: function(response) {\n        console.log(response);\n        alert(\"Error in fetching centers\");\n      }\n    });\n  });\n};\n\nvar init  = function(options) {\n  _options            = options;\n  _authenticityToken  = _options.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n};\n\nexport default { init: init };", "import Mustache from \"mustache\";\nimport $ from 'jquery';\nimport * as bootstrap from \"bootstrap\";\n\nvar $btnAdd;\nvar $btnDelete;\nvar $btnApprove;\nvar $btnConfirmApprove;\nvar $modalApprove;\nvar $selectMember;\nvar $inputAmount;\nvar $inputParticular;\nvar $btnUpdateParticular;\nvar $message;\nvar templateErrorList;\n\nvar $btnUpdateOrArnumber;\nvar $inputOrNumber;          \nvar $inputArNumber; \n\nvar $inputLoanProductId;\nvar $inputPrincipal;\nvar $inputTerm;\nvar $inputNumInstallments;\nvar $inputMaturityDate;\nvar $inputEffectiveDate;\nvar $inputClipNumber;\nvar $inputBeneficiary;\n\n//k-bente\nvar $inputKbenteBeneficiaryName;\nvar $inputDateOfBirth;\nvar $inputGender;\nvar $inputStatus;\nvar $inputaddress;\nvar $inputEffectivityDate;\nvar $inputPremium;\nvar $inputRelationship;\n\n//k-kalinga\nvar $inputKkalingaBeneficiaryName;\nvar $inputKkalingaDateOfBirth;\nvar $inputKkalingaGender;\nvar $inputKkalingaStatus;\nvar $inputKkalingaaddress;\nvar $inputKkalingaEffectivityDate;\nvar $inputKkalingaPremium;\nvar $inputKkalingaRelationship;\nvar $inputKkalingaNameOfInsured;\nvar $inputPOCNumber;\n\n//printing kbente\nvar $modalPrint;\nvar $printMessage;\nvar $btnPrintPdf;\nvar $btnPrint;\n\n//printing kkalinga\nvar $modalPrintK;\nvar $printMessageK;\nvar $btnPrintPdfK;\nvar $btnPrintK;\n\nvar _id;\nvar _options;\nvar _authenticityToken;\n\nvar _urlAdd               = \"/api/v1/savings_insurance_transfer_collections/add_member\";\nvar _urlDelete            = \"/api/v1/savings_insurance_transfer_collections/remove_member\";\nvar _urlApprove           = \"/api/v1/savings_insurance_transfer_collections/approve\";\nvar _urlUpdateParticular  = \"/api/v1/savings_insurance_transfer_collections/update_particular\";\nvar _urlUpdateOrArNumber  = \"/api/v1/savings_insurance_transfer_collections/update_or_ar_number\";\nvar _cacheDom = function() {\n  $btnAdd               = $(\"#btn-add\");\n  $btnUpdateParticular  = $(\"#btn-update-particular\");\n  $btnUpdateOrArnumber  = $(\"#btn-update-or-ar-number\");\n  $btnDelete            = $(\".btn-delete\");\n  $btnApprove           = $(\"#btn-approve\");\n  $btnConfirmApprove    = $(\"#btn-confirm-approve\");\n  $modalApprove = new bootstrap.Modal(\n    document.getElementById(\"modal-approve\")\n  );\n  $selectMember         = $(\"#select-member\");\n  $inputAmount          = $(\"#input-amount\");\n  $inputParticular      = $(\"#input-particular\");\n  $inputOrNumber        = $(\"#input-or-number\");\n  $inputArNumber        = $(\"#input-ar-number\");\n  $message              = $(\".message\");\n  templateErrorList     = $(\"#template-error-list\").html();\n  $inputLoanProductId   = $(\"#input-loan-product-id\");\n  $inputPrincipal       = $(\"#input-principal\");\n  $inputTerm            = $(\"#input-term\");\n  $inputNumInstallments = $(\"#input-num-installments\");\n  $inputMaturityDate    = $(\"#input-maturity-date\");\n  $inputEffectiveDate   = $(\"#input-effective-date\");\n  $inputClipNumber      = $(\"#input-clip-number\");\n  $inputBeneficiary     = $(\"#input-beneficiary\");\n  \n  //k-bente\n  $inputKbenteBeneficiaryName   = $(\"#input-kbente-beneficiary-name\");\n  $inputDateOfBirth             = $(\"#input-date-of-birth\");\n  $inputGender                  = $(\"#input-gender\");\n  $inputStatus                  = $(\"#input-status\");\n  $inputaddress                 = $(\"#input-address\");\n  $inputEffectivityDate         = $(\"#input-effectivity-date\");\n  $inputPremium                 = $(\"#input-premium\");\n  $inputRelationship            = $(\"#input-relationship\");\n\n  //k-kalinga\n  $inputKkalingaBeneficiaryName = $(\"#input-kkalinga-beneficiary-name\");\n  $inputKkalingaDateOfBirth     = $(\"#input-kkalinga-date-of-birth\");\n  $inputKkalingaGender          = $(\"#input-kkalinga-gender\");\n  $inputKkalingaStatus          = $(\"#input-kkalinga-status\");\n  $inputKkalingaaddress         = $(\"#input-kkalinga-address\");\n  $inputKkalingaEffectivityDate = $(\"#input-kkalinga-effectivity-date\");\n  $inputKkalingaPremium         = $(\"#input-kkalinga-premium\");\n  $inputKkalingaRelationship    = $(\"#input-kkalinga-relationship\");\n  $inputKkalingaNameOfInsured   = $(\"#input-kkalinga-name-of-insured\");\n  $inputPOCNumber               = $(\"#input-pocnumber\");\n\n  //printing kbente\n  $btnPrint                     = $(\"#btn-print\");\n  $printMessage                 = $(\".print-message\");\n  $btnPrintPdf                  = $(\"#btn-print-pdf\");\n  $modalPrint                   = $(\"modal-print\");\n\n  //printing kkalinga\n  $btnPrintK                     = $(\"#btn-print-k\");\n  $printMessageK                 = $(\".print-message-k\");\n  $btnPrintPdfK                  = $(\"#btn-print-pdf-k\");\n  $modalPrintK                   = $(\"modal-print-k\");\n};\n\nvar _bindEvents = function() {\n\n  $btnPrint.on(\"click\", function() {\n    $modalPrint.show();\n\n    var type = \"print_kbente_bill\";\n\n    $modalPrint.hide();\n    window.open(\"/print?type=\" + type + \"&id=\" + _id);\n  });\n\n  $btnPrintK.on(\"click\", function() {\n    $modalPrintK.show();\n\n    var type = \"print_kkalinga_bill\";\n\n    $modalPrintK.hide();\n    window.open(\"/print?type=\" + type + \"&id=\" + _id);\n  });\n\n  $btnApprove.on(\"click\", function() {\n    $modalApprove.show();\n    $message.html(\"\");\n  });\n\n  $btnConfirmApprove.on(\"click\", function() {\n    $btnConfirmApprove.prop(\"disabled\", true);\n\n    var data  = {\n      id: _id,\n      authenticity_token: _authenticityToken\n    };\n\n    $message.html(\"Loading...\");\n\n    $.ajax({\n      url: _urlApprove,\n      method: 'POST',\n      data: data,\n      success: function(response) {\n        $message.html(\"Success! Reloading...\");\n        window.location.reload();\n      },\n      error: function(response) {\n        var errors = [];\n\n        try {\n          errors = JSON.parse(response.responseText).errors.full_messages;\n        } catch(err) {\n          errors.push(\"Something went wrong.\");\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmApprove.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  $btnDelete.on(\"click\", function() {\n    var $btn      = $(this);\n    var memberId  = $btn.data(\"member-id\");\n\n    $btn.prop(\"disabled\", true);\n\n    var data  = {\n      id: _id,\n      authenticity_token: _authenticityToken,\n      member_id: memberId\n    };\n\n    $message.html(\"Loading...\");\n\n    $.ajax({\n      url: _urlDelete,\n      method: 'POST',\n      data: data,\n      success: function(response) {\n        $message.html(\"Success! Reloading...\");\n        window.location.reload();\n      },\n      error: function(response) {\n        var errors = [];\n\n        try {\n          errors = JSON.parse(response.responseText).errors.full_messages;\n        } catch(err) {\n          errors.push(\"Something went wrong.\");\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btn.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  $btnAdd.on(\"click\", function() {\n    var amount    = $inputAmount.val();\n    var memberId  = $selectMember.val();\n\n    var loanProductId        = $inputLoanProductId.val();\n    var principal            = $inputPrincipal.val();\n    var term                 = $inputTerm.val();\n    var numInstallments      = $inputNumInstallments.val();\n    var maturityDate         = $inputMaturityDate.val();\n    var effectiveDate        = $inputEffectiveDate.val();\n    var clipNumber           = $inputClipNumber.val();\n    var beneficiary          = $inputBeneficiary.val();\n\n    //k-bente\n    var kbenteBeneficiaryName  = $inputKbenteBeneficiaryName.val();\n    var dateOfBirth            = $inputDateOfBirth.val();\n    var gender                 = $inputGender.val();\n    var status                 = $inputStatus.val();\n    var address                = $inputaddress.val();\n    var effectivityDate        = $inputEffectivityDate.val();\n    var premium                = $inputPremium.val();\n    var relationship           = $inputRelationship.val(); \n\n    //k-kalinga\n    var kkalingaBeneficiaryName        = $inputKkalingaBeneficiaryName.val();\n    var kkalingaDateOfBirth            = $inputKkalingaDateOfBirth.val();\n    var kkalingaGender                 = $inputKkalingaGender.val();\n    var kkalingaStatus                 = $inputKkalingaStatus.val();\n    var kkalingaaddress                = $inputKkalingaaddress.val();\n    var kkalingaEffectivityDate        = $inputKkalingaEffectivityDate.val();\n    var kkalingaPremium                = $inputKkalingaPremium.val();\n    var kkalingaRelationship           = $inputKkalingaRelationship.val(); \n    var kkalingaNameOfInsured          = $inputKkalingaNameOfInsured.val();\n    var pocNumber                      = $inputPOCNumber.val(); \n  \n    $btnAdd.prop(\"disabled\", true);\n    $inputAmount.prop(\"disabled\", true);\n    $selectMember.prop(\"disabled\", true);\n  \n    $inputLoanProductId.prop(\"disabled\", true);\n    $inputPrincipal.prop(\"disabled\", true);\n    $inputTerm.prop(\"disabled\", true);\n    $inputNumInstallments.prop(\"disabled\", true);\n    $inputMaturityDate.prop(\"disabled\", true);\n    $inputEffectiveDate.prop(\"disabled\", true);\n    $inputClipNumber.prop(\"disabled\", true);\n    $inputBeneficiary.prop(\"disabled\", true);\n    \n    //k-bente\n    $inputKbenteBeneficiaryName.prop(\"disabled\", true);\n    $inputDateOfBirth.prop(\"disabled\", true);\n    $inputGender.prop(\"disabled\", true);\n    $inputStatus.prop(\"disabled\", true);\n    $inputaddress.prop(\"disabled\", true);\n    $inputEffectivityDate.prop(\"disabled\", true);\n    $inputPremium.prop(\"disabled\", true);\n    $inputRelationship.prop(\"disabled\", true);\n\n    //k-kalinga\n    $inputKkalingaBeneficiaryName.prop(\"disabled\", true);\n    $inputKkalingaDateOfBirth.prop(\"disabled\", true);\n    $inputKkalingaGender.prop(\"disabled\", true);\n    $inputKkalingaStatus.prop(\"disabled\", true);\n    $inputKkalingaaddress.prop(\"disabled\", true);\n    $inputKkalingaEffectivityDate.prop(\"disabled\", true);\n    $inputKkalingaPremium.prop(\"disabled\", true);\n    $inputKkalingaRelationship.prop(\"disabled\", true);\n    $inputKkalingaNameOfInsured.prop(\"disabled\", true);\n    $inputPOCNumber.prop(\"disabled\", true);\n\n    var data  = {\n      id: _id,\n      authenticity_token: _authenticityToken,\n      amount: amount,\n      member_id: memberId,\n      loan_product_id: loanProductId,\n      principal: principal,\n      term: term,\n      num_installments: numInstallments,\n      maturity_date: maturityDate,\n      effective_date: effectiveDate,\n      clip_number: clipNumber,\n      beneficiary: beneficiary,\n      kbente_beneficiary_name: kbenteBeneficiaryName,\n      date_of_birth: dateOfBirth,\n      gender: gender,\n      status: status,\n      address: address,\n      effectivity_date: effectivityDate,\n      premium: premium,\n      relationship: relationship,\n      kkalinga_name_of_insured: kkalingaNameOfInsured,\n      kkalinga_date_of_birth: kkalingaDateOfBirth,\n      kkalinga_gender: kkalingaGender,\n      kkalinga_status: kkalingaStatus,\n      kkalinga_address: kkalingaaddress,\n      kkalinga_effectivity_date: kkalingaEffectivityDate,\n      kkalinga_premium: kkalingaPremium,\n      kkalinga_relationship: kkalingaRelationship,\n      kkalinga_beneficiary_name: kkalingaBeneficiaryName,\n      \n      poc_number: pocNumber\n    };\n\n    $message.html(\"Loading...\");\n    $.ajax({\n      url: _urlAdd,\n      method: 'POST',\n      data: data,\n      success: function(response) {\n        $message.html(\"Success! Reloading...\");\n        window.location.reload();\n      },\n      error: function(response) {\n        var errors = [];\n\n        try {\n          errors = JSON.parse(response.responseText).errors.full_messages;\n        } catch(err) {\n          errors.push(\"Something went wrong.\");\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnAdd.prop(\"disabled\", false);\n          $inputAmount.prop(\"disabled\", false);\n          $selectMember.prop(\"disabled\", false);\n          \n          $inputLoanProductId.prop(\"disabled\", false);\n          $inputPrincipal.prop(\"disabled\", false);\n          $inputTerm.prop(\"disabled\", false);\n          $inputNumInstallments.prop(\"disabled\", false);\n          $inputMaturityDate.prop(\"disabled\", false);\n          $inputEffectiveDate.prop(\"disabled\", false);\n          $inputClipNumber.prop(\"disabled\", false);\n          $inputBeneficiary.prop(\"disabled\", false);\n          \n          //k-bente\n          $inputKbenteBeneficiaryName.prop(\"disabled\", false);\n          $inputDateOfBirth.prop(\"disabled\", false);\n          $inputGender.prop(\"disabled\", false);\n          $inputStatus.prop(\"disabled\", false);\n          $inputaddress.prop(\"disabled\", false);\n          $inputEffectivityDate.prop(\"disabled\", false);\n          $inputPremium.prop(\"disabled\", false);\n          $inputRelationship.prop(\"disabled\", false);\n\n           //k-kalinga\n          $inputKkalingaBeneficiaryName.prop(\"disabled\", false);\n          $inputKkalingaDateOfBirth.prop(\"disabled\", false);\n          $inputKkalingaGender.prop(\"disabled\", false);\n          $inputKkalingaStatus.prop(\"disabled\", false);\n          $inputKkalingaaddress.prop(\"disabled\", false);\n          $inputKkalingaEffectivityDate.prop(\"disabled\", false);\n          $inputKkalingaPremium.prop(\"disabled\", false);\n          $inputKkalingaRelationship.prop(\"disabled\", false);\n          $inputKkalingaNameOfInsured.prop(\"disabled\", false);\n          $inputPOCNumber.prop(\"disabled\", false);\n\n        }\n      }\n    });\n  });\n\n  $btnUpdateParticular.on(\"click\", function() {\n    var particular = $inputParticular.val();\n\n    $btnUpdateParticular.prop(\"disabled\", true);\n    $inputParticular.prop(\"disabled\", true);\n    \n    var data  = {\n      id: _id,\n      authenticity_token: _authenticityToken,\n      particular: particular\n    };\n\n    $message.html(\"Loading...\");\n\n    $.ajax({\n      url: _urlUpdateParticular,\n      method: 'POST',\n      data: data,\n      success: function(response) {\n        $message.html(\"Success! Reloading...\");\n        window.location.reload();\n      },\n      error: function(response) {\n        var errors = [];\n\n        try {\n          errors = JSON.parse(response.responseText).errors.full_messages;\n        } catch(err) {\n          errors.push(\"Something went wrong.\");\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnUpdateParticular.prop(\"disabled\", false);\n          $inputParticular.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  $btnUpdateOrArnumber.on(\"click\", function() {\n    var arNumber          = $inputArNumber.val();\n    var orNumber          = $inputOrNumber.val();\n\n    $btnUpdateOrArnumber.prop(\"disabled\", true);\n    $inputArNumber.prop(\"disabled\", true);\n    $inputOrNumber.prop(\"disabled\", true);\n    \n    var data  = {\n      id: _id,\n      authenticity_token: _authenticityToken,\n      or_number: orNumber,\n      ar_number: arNumber\n    };\n\n    $message.html(\"Loading...\");\n\n    $.ajax({\n      url: _urlUpdateOrArNumber,\n      method: 'POST',\n      data: data,\n      success: function(response) {\n        $message.html(\"Success! Reloading...\");\n        window.location.reload();\n      },\n      error: function(response) {\n        var errors = [];\n\n        try {\n          errors = JSON.parse(response.responseText).errors.full_messages;\n        } catch(err) {\n          errors.push(\"Something went wrong.\");\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnUpdateOrArnumber.prop(\"disabled\", false);\n          $inputArNumber.prop(\"disabled\", false);\n          $inputOrNumber.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n};\n\nvar init  = function(options) {\n  _options            = options;\n  _id                 = _options.id\n  _authenticityToken  = _options.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n};\n\nexport default { init: init };", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\n\nvar $btnNewTransaction;\nvar $btnConfirmNewTransaction;\nvar $modalNewTransaction;\nvar $selectBranch;\nvar $selectCenter;\nvar $inputCollectionDate;\n         \nvar $message;\nvar templateErrorList;\n\nvar _options;\nvar _authenticityToken;\n\nvar _urlFetchCenters  = \"/api/v1/branches/fetch_centers\";\nvar _urlSave          = \"/api/v1/insurance_loan_bundle_enrollments/save\";\n\nvar _cacheDom = function() {\n  $btnNewTransaction        = $(\"#btn-new-transaction\");\n  $btnConfirmNewTransaction = $(\"#btn-confirm-new-transaction\");\n  $selectBranch             = $(\"#select-branch\");\n  $selectCenter             = $(\"#select-center\");\n  $inputCollectionDate      = $(\"#input-collection-date\");\n  $message                  = $(\".message\");\n  templateErrorList         = $(\"#template-error-list\").html();\n\n  //$modalNewTransaction      = $(\"#modal-new-transaction\");\n  $modalNewTransaction = new bootstrap.Modal(\n    document.getElementById(\"modal-new-transaction\")\n  )\n};\n\nvar _bindEvents = function() {\n  $btnConfirmNewTransaction.on(\"click\", function() {\n    var branchId          = $selectBranch.val();\n    var centerId          = $selectCenter.val();\n    var collectionDate    = $inputCollectionDate.val();\n\n    $btnConfirmNewTransaction.prop(\"disabled\", true);\n    $selectBranch.prop(\"disabled\", true);\n    $selectCenter.prop(\"disabled\", true);\n    $inputCollectionDate.prop(\"disabled\", true);\n    \n\n    var data  = {\n      branch_id: branchId,\n      center_id: centerId,\n      collection_date: collectionDate,\n      authenticity_token: _authenticityToken\n    };\n\n    $.ajax({\n      url: _urlSave,\n      method: 'POST',\n      data: data,\n      success: function(response) {\n        window.location.href = \"/insurance_loan_bundle_enrollments/\" + response.id;\n      },\n      error: function(response) {\n        var errors  = [];\n\n        try {\n          console.log(response);\n          errors = JSON.parse(response.responseText).errors.full_messages;\n        } catch(err) {\n          console.log(err);\n          errors = [\"Something went wrong\"];\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmNewTransaction.prop(\"disabled\", false);\n          $selectBranch.prop(\"disabled\", false);\n          $selectCenter.prop(\"disabled\", false);\n          $inputCollectionDate.prop(\"disabled\", false);\n          }\n      }\n    });\n  });\n\n  $btnNewTransaction.on(\"click\", function() {\n    $modalNewTransaction.show();\n    $message.html(\"\");\n  });\n\n  $selectBranch.on(\"change\", function() {\n    var branchId  = $(this).val();\n\n    $.ajax({\n      method: 'GET',\n      url: _urlFetchCenters,\n      data: {\n        id: branchId\n      },\n      success: function(response) {\n        var centers = response.centers; \n        \n        $selectCenter.html(\"\");\n        for(var i = 0; i < centers.length; i++) {\n          $selectCenter.append(\"<option value='\" + centers[i].id + \"'>\" + centers[i].name + \"</option>\");\n        }\n      },\n      error: function(response) {\n        console.log(response);\n        alert(\"Error in fetching centers\");\n      }\n    });\n  });\n};\n\nvar init  = function(options) {\n  _options            = options;\n  _authenticityToken  = _options.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n};\n\nexport default { init: init };", "import Mustache from \"mustache\";\nimport $ from 'jquery';\nimport * as bootstrap from \"bootstrap\";\n\nvar $btnAdd;\nvar $btnDelete;\nvar $btnApprove;\nvar $btnConfirmApprove;\nvar $modalApprove;\nvar $btnCheck;\nvar $btnConfirmCheck;\nvar $modalCheck;\nvar $btnDeclined;\nvar $btnConfirmDeclined;\nvar $modalDeclined;\n\nvar $btnResigned;\nvar $btnConfirmResigned;\nvar $modalResigned;\n\nvar $btnMatured;\nvar $btnConfirmMatured;\nvar $modalMatured;\n\nvar $btnTransferred;\nvar $btnConfirmTransferred;\nvar $modalTransferred;\n\nvar $btnPending;\nvar $btnConfirmPending;\nvar $modalPending;\nvar $selectMember;\nvar $message;\nvar templateErrorList;\n\n// print pdf \nvar $modalPrint;\nvar $printMessage;\nvar $btnPrintPdf;\nvar $btnPrint;\n\n// kok\nvar $inputPlanType;\nvar $inputPlanCategory;\nvar $inputPartner;\nvar $inputPolicyNo;\nvar $inputEffectivityDate;\nvar $inputMaturityDate;\nvar $inputClientType;\nvar $inputFirstName;\nvar $inputMiddleName;\nvar $inputLastName;\nvar $inputAddress;\nvar $inputGender;\nvar $inputEnrolledStatus;\nvar $inputCivilStatus;\nvar $inputBirthDate;\nvar $inputAge;\nvar $inputPremiumCoverage;\nvar $inputMobileNo;\nvar $inputMembershipDate;\nvar $inputBenif_Fname;\nvar $inputBenif_Mname;\nvar $inputBenif_Lname;\nvar $inputBenif_BirthDate;\nvar $inputBenif_Gender;\nvar $inputBenif_Relationship;\n\nvar _id;\nvar _options;\nvar _authenticityToken;\n\nvar _urlAdd                = \"/api/v1/insurance_loan_bundle_enrollments/add_member/\";\nvar _urlUpdateBeneficiary  = \"/api/v1/insurance_loan_bundle_enrollments/update_beneficiary\"\nvar _urlDelete             = \"/api/v1/insurance_loan_bundle_enrollments/remove_member\";\nvar _urlApprove            = \"/api/v1/insurance_loan_bundle_enrollments/approve\";\nvar _urlCheckTransaction   = \"/api/v1/insurance_loan_bundle_enrollments/check\";\nvar _urlDeclineTransaction = \"/api/v1/insurance_loan_bundle_enrollments/declined\";\nvar _urlResignTransaction  = \"/api/v1/insurance_loan_bundle_enrollments/resigned\";\nvar _urlMatureTransaction  = \"/api/v1/insurance_loan_bundle_enrollments/matured\";\nvar _urlTransferTransaction  = \"/api/v1/insurance_loan_bundle_enrollments/transferred\";\n\nvar _cacheDom = function() {\n\n  $btnAdd               = $(\"#btn-add\");\n  $btnUpdateBeneficiary = $(\"#btn_update_beneficiary\");\n  $btnDelete            = $(\".btn-delete\");\n  $btnApprove           = $(\"#btn-approve\");\n  $btnConfirmApprove    = $(\"#btn-confirm-approve\");\n  $btnCheck             = $(\"#btn-check\");\n    \n  $btnPrint             = $(\"#btn-print\");\n  $printMessage         = $(\".print-message\");\n  $btnPrintPdf          = $(\"#btn-print-pdf\");\n  $modalPrint           = $(\"modal-print\");\n\n  $btnConfirmCheck      = $(\"#btn-confirm-check\");\n  $btnDeclined          = $(\"#btn-declined\");\n  $btnConfirmDeclined   = $(\"#btn-confirm-declined\");\n  $btnPending           = $(\"#btn-pending\");\n  $btnConfirmPending    = $(\"#btn-confirm-pending\");\n  $btnResigned          = $(\"#btn-resigned\");\n  $btnConfirmResigned   = $(\"#btn-confirm-resigned\");\n  $btnMatured           = $(\"#btn-matured\");\n  $btnConfirmMatured    = $(\"#btn-confirm-matured\");\n  $btnTransferred           = $(\"#btn-transferred\");\n  $btnConfirmTransferred    = $(\"#btn-confirm-transferred\");\n\n\n  $modalApprove = new bootstrap.Modal(\n    document.getElementById(\"modal-approve\")\n  );\n\n  $modalCheck = new bootstrap.Modal(\n    document.getElementById(\"modal-check-confirmation\")\n  );\n\n  $modalDeclined = new bootstrap.Modal(\n    document.getElementById(\"modal-declined-confirmation\")\n  );\n\n  $modalResigned = new bootstrap.Modal(\n    document.getElementById(\"modal-resigned-confirmation\")\n  );\n\n  $modalMatured = new bootstrap.Modal(\n    document.getElementById(\"modal-matured-confirmation\")\n  );\n\n  $modalTransferred = new bootstrap.Modal(\n    document.getElementById(\"modal-transferred-confirmation\")\n  );\n  \n  $selectMember             = $(\"#select-member\");\n  $message                  = $(\".message\");\n  templateErrorList         = $(\"#template-error-list\").html();\n  $inputPlanType            = $(\"#input-plan-type\");\n  $inputPlanCategory        = $(\"#input-plan-category\");\n  $inputPartner             = $(\"#input-partner\");\n  $inputPolicyNo            = $(\"#input-policy-no\");\n  $inputEffectivityDate     = $(\"#input-effectivity-date\");\n  $inputMaturityDate        = $(\"#input-maturity-date\");\n  $inputClientType          = $(\"#input-client-type\");\n  $inputFirstName           = $(\"#input-first-name\");\n  $inputMiddleName          = $(\"#input-middle-name\");\n  $inputLastName            = $(\"#input-last-name\");\n  $inputAddress             = $(\"#input-address\");\n  $inputGender              = $(\"#input-gender\");\n  $inputEnrolledStatus      = $(\"#input-enrolled-status\");\n  $inputCivilStatus         = $(\"#input-civil-status\");\n  $inputBirthDate           = $(\"#input-birth-date\");\n  $inputAge                 = $(\"#input-age\");\n  $inputPremiumCoverage     = $(\"#input-premium-coverage\");\n  $inputMobileNo            = $(\"#input-mobile-no\");\n  $inputMembershipDate      = $(\"#input-membership-date\");\n  $inputBenif_Fname         = $(\"#input-benif-fname\");\n  $inputBenif_Mname         = $(\"#input-benif-mname\");\n  $inputBenif_Lname         = $(\"#input-benif-lname\");\n  $inputBenif_BirthDate     = $(\"#input-benif-birth-date\");\n  $inputBenif_Gender        = $(\"#input-benif-gender\");\n  $inputBenif_Relationship  = $(\"#input-benif-relationship\");\n\n};\n\nvar _bindEvents = function() {\n\n  var inputClientTypeValue = ($inputClientType.val());\n    if(inputClientTypeValue == \"DEPENDENT\")\n    {\n      $inputFirstName.show();\n      $inputMiddleName.show();\n      $inputLastName.show();\n      $inputAddress.show();\n      $inputGender.show();\n      $inputBirthDate.show();\n      $inputMobileNo.show();\n      $inputCivilStatus.show();\n    }\n    else\n    {\n      $inputFirstName.hide();\n      $inputMiddleName.hide();\n      $inputLastName.hide();\n      $inputAddress.hide();\n      $inputGender.hide();\n      $inputBirthDate.hide();\n      $inputMobileNo.hide();\n      $inputCivilStatus.hide();\n    }\n\n  //print pdf\n  $btnPrint.on(\"click\", function() {\n    $modalPrint.show();\n\n    var type = \"print_insurance_loan_bundle_enrollment\";\n\n    $modalPrint.hide();\n    window.open(\"/print?type=\" + type + \"&id=\" + _id);\n  });\n\n  // check\n  $btnCheck.on(\"click\", function() {\n    $modalCheck.show();\n    $message.html(\"\");\n  });\n\n  // approved\n  $btnApprove.on(\"click\", function() {\n    $modalApprove.show();\n    $message.html(\"\");\n  });\n\n  // declined\n  $btnDeclined.on(\"click\", function() {\n    $modalDeclined.show();\n    $message.html(\"\");\n  });\n\n  // resigned\n  $btnResigned.on(\"click\", function() {\n    $modalResigned.show();\n    $message.html(\"\");\n  });\n\n  // matured\n  $btnMatured.on(\"click\", function() {\n    $modalMatured.show();\n    $message.html(\"\");\n  });\n\n  // transfer\n  $btnTransferred.on(\"click\", function() {\n    $modalTransferred.show();\n    $message.html(\"\");\n  });\n\n  $btnConfirmApprove.on(\"click\", function() {\n    $btnConfirmApprove.prop(\"disabled\", true);\n\n    var data  = {\n      id: _id,\n      authenticity_token: _authenticityToken\n    };\n\n    $message.html(\"Loading...\");\n\n    $.ajax({\n      url: _urlApprove,\n      method: 'POST',\n      data: data,\n      success: function(response) {\n        $message.html(\"Success! Reloading...\");\n        window.location.reload();\n      },\n      error: function(response) {\n        var errors = [];\n\n        try {\n          errors = JSON.parse(response.responseText).errors.full_messages;\n        } catch(err) {\n          errors.push(\"Something went wrong.\");\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmApprove.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  //delete\n  $btnDelete.on(\"click\", function() {\n    var $btn      = $(this);\n    var memberId  = $btn.data(\"member-id\");\n\n    $btn.prop(\"disabled\", true);\n\n    var data  = {\n      id: _id,\n      authenticity_token: _authenticityToken,\n      member_id: memberId\n    };\n\n    $message.html(\"Loading...\");\n\n    $.ajax({\n      url: _urlDelete,\n      method: 'POST',\n      data: data,\n      success: function(response) {\n        $message.html(\"Success! Reloading...\");\n        window.location.reload();\n      },\n      error: function(response) {\n        var errors = [];\n\n        try {\n          errors = JSON.parse(response.responseText).errors.full_messages;\n        } catch(err) {\n          errors.push(\"Something went wrong.\");\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btn.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  //Check\n  $btnConfirmCheck.on(\"click\", function() {\n    $btnConfirmCheck.prop(\"disabled\", true);\n\n    var data  = {\n      id: _id,\n      authenticity_token: _authenticityToken\n    };\n\n    $message.html(\"Loading...\");\n\n    $.ajax({\n      url: _urlCheckTransaction,\n      method: 'POST',\n      data: data,\n      success: function(response) {\n        $message.html(\"Success! Reloading...\");\n        window.location.reload();\n      },\n      error: function(response) {\n        var errors = [];\n\n        try {\n          errors = JSON.parse(response.responseText).errors.full_messages;\n        } catch(err) {\n          errors.push(\"Something went wrong.\");\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmCheck.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  //Declined\n  $btnConfirmDeclined.on(\"click\", function() {\n    $btnConfirmDeclined.prop(\"disabled\", true);\n\n    var data  = {\n      id: _id,\n      authenticity_token: _authenticityToken\n    };\n\n    $message.html(\"Loading...\");\n\n    $.ajax({\n      url: _urlDeclineTransaction,\n      method: 'POST',\n      data: data,\n      success: function(response) {\n        $message.html(\"Success! Reloading...\");\n        window.location.reload();\n      },\n      error: function(response) {\n        var errors = [];\n\n        try {\n          errors = JSON.parse(response.responseText).errors.full_messages;\n        } catch(err) {\n          errors.push(\"Something went wrong.\");\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmCheck.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  //Resigned\n  $btnConfirmResigned.on(\"click\", function() {\n    $btnConfirmResigned.prop(\"disabled\", true);\n\n    var data  = {\n      id: _id,\n      authenticity_token: _authenticityToken\n    };\n\n    $message.html(\"Loading...\");\n\n    $.ajax({\n      url: _urlResignTransaction,\n      method: 'POST',\n      data: data,\n      success: function(response) {\n        $message.html(\"Success! Reloading...\");\n        window.location.reload();\n      },\n      error: function(response) {\n        var errors = [];\n\n        try {\n          errors = JSON.parse(response.responseText).errors.full_messages;\n        } catch(err) {\n          errors.push(\"Something went wrong.\");\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmResigned.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  //Matured\n  $btnConfirmMatured.on(\"click\", function() {\n    $btnConfirmMatured.prop(\"disabled\", true);\n\n    var data  = {\n      id: _id,\n      authenticity_token: _authenticityToken\n    };\n\n    $message.html(\"Loading...\");\n\n    $.ajax({\n      url: _urlMatureTransaction,\n      method: 'POST',\n      data: data,\n      success: function(response) {\n        $message.html(\"Success! Reloading...\");\n        window.location.reload();\n      },\n      error: function(response) {\n        var errors = [];\n\n        try {\n          errors = JSON.parse(response.responseText).errors.full_messages;\n        } catch(err) {\n          errors.push(\"Something went wrong.\");\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmMatured.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  //Transfer\n  $btnConfirmTransferred.on(\"click\", function() {\n    $btnConfirmTransferred.prop(\"disabled\", true);\n\n    var data  = {\n      id: _id,\n      authenticity_token: _authenticityToken\n    };\n\n    $message.html(\"Loading...\");\n\n    $.ajax({\n      url: _urlTransferTransaction,\n      method: 'POST',\n      data: data,\n      success: function(response) {\n        $message.html(\"Success! Reloading...\");\n        window.location.reload();\n      },\n      error: function(response) {\n        var errors = [];\n\n        try {\n          errors = JSON.parse(response.responseText).errors.full_messages;\n        } catch(err) {\n          errors.push(\"Something went wrong.\");\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmTransferred.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n \n  //Add\n  $btnAdd.on(\"click\", function() {\n    var memberId              = $selectMember.val();\n    var PlanType              = $inputPlanType.val();\n    var PlanCategory          = $inputPlanCategory.val();\n    var Partner               = $inputPartner.val();\n    var PolicyNo              = $inputPolicyNo.val();\n    var EffectivityDate       = $inputEffectivityDate.val();\n    var MaturityDate          = $inputMaturityDate.val();\n    var ClientType            = $inputClientType.val();\n    var FirstName             = $inputFirstName.val();\n    var MiddleName            = $inputMiddleName.val();\n    var LastName              = $inputLastName.val();\n    var Address               = $inputAddress.val();\n    var Gender                = $inputGender.val();\n    var EnrolledStatus        = $inputEnrolledStatus.val();\n    var CivilStatus           = $inputCivilStatus.val();\n    var BirthDate             = $inputBirthDate.val();\n    var Age                   = $inputAge.val();\n    var PremiumCoverage       = $inputPremiumCoverage.val();\n    var MobileNo              = $inputMobileNo.val();\n    var MembershipDate        = $inputMembershipDate.val();\n    var Benif_Fname           = $inputBenif_Fname.val();\n    var Benif_Mname           = $inputBenif_Mname.val();\n    var Benif_Lname           = $inputBenif_Lname.val();\n    var Benif_BirthDate       = $inputBenif_BirthDate.val();\n    var Benif_Gender          = $inputBenif_Gender.val();\n    var Benif_Relationship    = $inputBenif_Relationship.val();\n  \n    $btnAdd.prop(\"disabled\", true);\n    $selectMember.prop(\"disabled\", true);\n    $inputPlanType.prop(\"disabled\", true);\n    $inputPlanCategory.prop(\"disabled\", true);\n    $inputPartner.prop(\"disabled\", true);\n    $inputPolicyNo.prop(\"disabled\", true);\n    $inputEffectivityDate.prop(\"disabled\", true);\n    $inputMaturityDate.prop(\"disabled\", true);\n    $inputClientType.prop(\"disabled\", true);\n    $inputFirstName.prop(\"disabled\", true);\n    $inputMiddleName.prop(\"disabled\", true);\n    $inputLastName.prop(\"disabled\", true);\n    $inputAddress.prop(\"disabled\", true);\n    $inputGender.prop(\"disabled\", true);\n    $inputEnrolledStatus.prop(\"disabled\", true);\n    $inputCivilStatus.prop(\"disabled\", true);\n    $inputBirthDate.prop(\"disabled\", true);\n    $inputAge.prop(\"disabled\", true);\n    $inputPremiumCoverage.prop(\"disabled\", true);\n    $inputMobileNo.prop(\"disabled\", true);\n    $inputMembershipDate.prop(\"disabled\", true);\n    $inputBenif_Fname.prop(\"disabled\", true);\n    $inputBenif_Mname.prop(\"disabled\", true);\n    $inputBenif_Lname.prop(\"disabled\", true);\n    $inputBenif_BirthDate.prop(\"disabled\", true);\n    $inputBenif_Gender.prop(\"disabled\", true);\n    $inputBenif_Relationship.prop(\"disabled\", true);\n\n    var data  = {\n      id: _id,\n      authenticity_token: _authenticityToken,\n      member_id: memberId,\n      plan_type: PlanType,\n      plan_category: PlanCategory, \n      partner: Partner,\n      policy_no: PolicyNo, \n      effectivity_date: EffectivityDate, \n      maturity_date: MaturityDate, \n      client_type: ClientType, \n      first_name: FirstName, \n      middle_name: MiddleName, \n      last_name: LastName, \n      address: Address, \n      gender: Gender, \n      enrolled_status: EnrolledStatus, \n      civil_status: CivilStatus, \n      birth_date: BirthDate,\n      age: Age, \n      premium_coverage: PremiumCoverage, \n      mobile_no: MobileNo, \n      membership_date: MembershipDate, \n      benif_fname: Benif_Fname, \n      benif_mname: Benif_Mname, \n      benif_lname: Benif_Lname, \n      benif_birth_date: Benif_BirthDate, \n      benif_gender: Benif_Gender, \n      benif_relationship: Benif_Relationship \n    };\n\n    $message.html(\"Loading...\");\n    $.ajax({\n      url: _urlAdd,\n      method: 'POST',\n      data: data,\n      success: function(response) {\n        $message.html(\"Success! Reloading...\");\n        window.location.reload();\n      },\n      error: function(response) {\n        var errors = [];\n\n        try {\n          errors = JSON.parse(response.responseText).errors.full_messages;\n        } catch(err) {\n          errors.push(\"Something went wrong.\");\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnAdd.prop(\"disabled\", false);\n          $selectMember.prop(\"disabled\", false);\n          $inputPlanType.prop(\"disabled\", false);\n          $inputPlanCategory.prop(\"disabled\", false);\n          $inputPartner.prop(\"disabled\", false);\n          $inputPolicyNo.prop(\"disabled\", false);\n          $inputEffectivityDate.prop(\"disabled\", false);\n          $inputMaturityDate.prop(\"disabled\", false);\n          $inputClientType.prop(\"disabled\", false);\n          $inputFirstName.prop(\"disabled\", false);\n          $inputMiddleName.prop(\"disabled\", false);\n          $inputLastName.prop(\"disabled\", false);\n          $inputAddress.prop(\"disabled\", false);\n          $inputGender.prop(\"disabled\", false);\n          $inputEnrolledStatus.prop(\"disabled\", false);\n          $inputCivilStatus.prop(\"disabled\", false);\n          $inputBirthDate.prop(\"disabled\", false);\n          $inputAge.prop(\"disabled\", false);\n          $inputPremiumCoverage.prop(\"disabled\", false);\n          $inputMobileNo.prop(\"disabled\", false);\n          $inputMembershipDate.prop(\"disabled\", false);\n          $inputBenif_Fname.prop(\"disabled\", false);\n          $inputBenif_Mname.prop(\"disabled\", false);\n          $inputBenif_Lname.prop(\"disabled\", false);\n          $inputBenif_BirthDate.prop(\"disabled\", false);\n          $inputBenif_Gender.prop(\"disabled\", false);\n          $inputBenif_Relationship.prop(\"disabled\", false);\n\n        }\n      }\n    });\n  });\n\n  //Update Beneficiary\n  $btnUpdateBeneficiary.on(\"click\", function() {\n    var memberId              = $selectMember.val();\n    var Benif_Fname           = $inputBenif_Fname.val();\n    var Benif_Mname           = $inputBenif_Mname.val();\n    var Benif_Lname           = $inputBenif_Lname.val();\n    var Benif_BirthDate       = $inputBenif_BirthDate.val();\n    var Benif_Gender          = $inputBenif_Gender.val();\n    var Benif_Relationship    = $inputBenif_Relationship.val();\n  \n    var data  = {\n      id: _id,\n      authenticity_token: _authenticityToken,\n      member_id: memberId,\n      benif_fname: Benif_Fname, \n      benif_mname: Benif_Mname, \n      benif_lname: Benif_Lname, \n      benif_birth_date: Benif_BirthDate, \n      benif_gender: Benif_Gender, \n      benif_relationship: Benif_Relationship \n    };\n\n    $message.html(\"Loading...\");\n    $.ajax({\n      url: _urlUpdateBeneficiary,\n      method: 'POST',\n      data: data,\n      success: function(response) {\n        $message.html(\"Success! Reloading...\");\n        window.location.reload();\n      },\n      error: function(response) {\n        var errors = [];\n\n        try {\n          errors = JSON.parse(response.responseText).errors.full_messages;\n        } catch(err) {\n          errors.push(\"Something went wrong.\");\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $inputBenif_Fname.prop(\"disabled\", false);\n          $inputBenif_Mname.prop(\"disabled\", false);\n          $inputBenif_Lname.prop(\"disabled\", false);\n          $inputBenif_BirthDate.prop(\"disabled\", false);\n          $inputBenif_Gender.prop(\"disabled\", false);\n          $inputBenif_Relationship.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n\n  $inputClientType.on('change', function() { \n    var inputClientTypeValue = ($inputClientType.val());\n\n    if(inputClientTypeValue == \"PRINCIPAL/MEMBER\")\n     {\n        $inputFirstName.hide();\n        $inputMiddleName.hide();\n        $inputLastName.hide();\n        $inputAddress.hide();\n        $inputGender.hide();\n        $inputBirthDate.hide();\n        $inputMobileNo.hide();\n        $inputCivilStatus.hide();\n      }\n      else\n      {\n        $inputFirstName.show();\n        $inputMiddleName.show();\n        $inputLastName.show();\n        $inputAddress.show();\n        $inputGender.show();\n        $inputBirthDate.show();\n        $inputMobileNo.show();\n        $inputCivilStatus.show();\n      }\n  });\n};\n\nvar init  = function(options) {\n  _options            = options;\n  _id                 = _options.id\n  _authenticityToken  = _options.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n};\n\nexport default { init: init };", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\n\nvar $btnNewTransaction;\nvar $btnConfirmNewTransaction;\nvar $modalNewTransaction;\nvar $selectBranch;\nvar $selectCenter;\nvar $inputCollectionDate;\n         \nvar $message;\nvar templateErrorList;\n\nvar _options;\nvar _authenticityToken;\n\nvar _urlFetchCenters  = \"/api/v1/branches/fetch_centers\";\nvar _urlSave          = \"/api/v1/kpf_loan_clips/save\";\n\nvar _cacheDom = function() {\n  $btnNewTransaction        = $(\"#btn-new-transaction\");\n  $btnConfirmNewTransaction = $(\"#btn-confirm-new-transaction\");\n  $selectBranch             = $(\"#select-branch\");\n  $selectCenter             = $(\"#select-center\");\n  $inputCollectionDate      = $(\"#input-collection-date\");\n  $message                  = $(\".message\");\n  templateErrorList         = $(\"#template-error-list\").html();\n\n  //$modalNewTransaction      = $(\"#modal-new-transaction\");\n  $modalNewTransaction = new bootstrap.Modal(\n    document.getElementById(\"modal-new-transaction\")\n  )\n};\n\nvar _bindEvents = function() {\n  $btnConfirmNewTransaction.on(\"click\", function() {\n    var branchId          = $selectBranch.val();\n    var centerId          = $selectCenter.val();\n    var collectionDate    = $inputCollectionDate.val();\n\n    $btnConfirmNewTransaction.prop(\"disabled\", true);\n    $selectBranch.prop(\"disabled\", true);\n    $selectCenter.prop(\"disabled\", true);\n    $inputCollectionDate.prop(\"disabled\", true);\n    \n\n    var data  = {\n      branch_id: branchId,\n      center_id: centerId,\n      collection_date: collectionDate,\n      authenticity_token: _authenticityToken\n    };\n\n    $.ajax({\n      url: _urlSave,\n      method: 'POST',\n      data: data,\n      success: function(response) {\n        window.location.href = \"/kpf_loan_clips/\" + response.id;\n      },\n      error: function(response) {\n        var errors  = [];\n\n        try {\n          console.log(response);\n          errors = JSON.parse(response.responseText).errors.full_messages;\n        } catch(err) {\n          console.log(err);\n          errors = [\"Something went wrong\"];\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmNewTransaction.prop(\"disabled\", false);\n          $selectBranch.prop(\"disabled\", false);\n          $selectCenter.prop(\"disabled\", false);\n          $inputCollectionDate.prop(\"disabled\", false);\n          }\n      }\n    });\n  });\n\n  $btnNewTransaction.on(\"click\", function() {\n    $modalNewTransaction.show();\n    $message.html(\"\");\n  });\n\n  $selectBranch.on(\"change\", function() {\n    var branchId  = $(this).val();\n\n    $.ajax({\n      method: 'GET',\n      url: _urlFetchCenters,\n      data: {\n        id: branchId\n      },\n      success: function(response) {\n        var centers = response.centers; \n        \n        $selectCenter.html(\"\");\n        for(var i = 0; i < centers.length; i++) {\n          $selectCenter.append(\"<option value='\" + centers[i].id + \"'>\" + centers[i].name + \"</option>\");\n        }\n      },\n      error: function(response) {\n        console.log(response);\n        alert(\"Error in fetching centers\");\n      }\n    });\n  });\n};\n\nvar init  = function(options) {\n  _options            = options;\n  _authenticityToken  = _options.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n};\n\nexport default { init: init };", "import Mustache from \"mustache\";\nimport $ from 'jquery';\nimport * as bootstrap from \"bootstrap\";\n\nvar $btnAdd;\nvar $btnDelete;\nvar $btnApprove;\nvar $btnConfirmApprove;\nvar $modalApprove;\nvar $btnCheck;\nvar $btnConfirmCheck;\nvar $modalCheck;\nvar $btnPending;\nvar $btnConfirmPending;\nvar $modalPending;\nvar $selectMember;\nvar $message;\nvar templateErrorList;\n\nvar $inputLoanProductId;\nvar $inputPrincipal;\nvar $inputTerm;\nvar $inputNumInstallments;\nvar $inputMaturityDate;\nvar $inputEffectiveDate;\nvar $inputClipNumber;\nvar $inputBeneficiary;\n\nvar _id;\nvar _options;\nvar _authenticityToken;\n\nvar _urlAdd                = \"/api/v1/kpf_loan_clips/add_member/\";\nvar _urlDelete             = \"/api/v1/kpf_loan_clips/remove_member\";\nvar _urlApprove            = \"/api/v1/kpf_loan_clips/approve\";\nvar _urlCheckTransaction   = \"/api/v1/kpf_loan_clips/check\";\n\nvar _cacheDom = function() {\n\n  $btnAdd               = $(\"#btn-add\");\n  $btnDelete            = $(\".btn-delete\");\n  $btnApprove           = $(\"#btn-approve\");\n  $btnConfirmApprove    = $(\"#btn-confirm-approve\");\n  $btnCheck             = $(\"#btn-check\");\n  $btnConfirmCheck      = $(\"#btn-confirm-check\");\n  $btnPending           = $(\"#btn-pending\");\n  $btnConfirmPending    = $(\"#btn-confirm-pending\");\n\n  $modalApprove = new bootstrap.Modal(\n    document.getElementById(\"modal-approve\")\n  );\n\n  $modalCheck = new bootstrap.Modal(\n    document.getElementById(\"modal-check-confirmation\")\n  );\n\n  \n  $selectMember         = $(\"#select-member\");\n  $inputAmount          = $(\"#input-amount\");\n  $message              = $(\".message\");\n  templateErrorList     = $(\"#template-error-list\").html();\n  $inputLoanProductId   = $(\"#input-loan-product-id\");\n  $inputPrincipal       = $(\"#input-principal\");\n  $inputTerm            = $(\"#input-term\");\n  $inputNumInstallments = $(\"#input-num-installments\");\n  $inputMaturityDate    = $(\"#input-maturity-date\");\n  $inputEffectiveDate   = $(\"#input-effective-date\");\n  $inputClipNumber      = $(\"#input-clip-number\");\n  $inputBeneficiary     = $(\"#input-beneficiary\");\n\n};\n\nvar _bindEvents = function() {\n\n  // check\n  $btnCheck.on(\"click\", function() {\n    $modalCheck.show();\n    $message.html(\"\");\n  });\n\n  // approved\n  $btnApprove.on(\"click\", function() {\n    $modalApprove.show();\n    $message.html(\"\");\n  });\n\n  $btnConfirmApprove.on(\"click\", function() {\n    $btnConfirmApprove.prop(\"disabled\", true);\n\n    var data  = {\n      id: _id,\n      authenticity_token: _authenticityToken\n    };\n\n    $message.html(\"Loading...\");\n\n    $.ajax({\n      url: _urlApprove,\n      method: 'POST',\n      data: data,\n      success: function(response) {\n        $message.html(\"Success! Reloading...\");\n        window.location.reload();\n      },\n      error: function(response) {\n        var errors = [];\n\n        try {\n          errors = JSON.parse(response.responseText).errors.full_messages;\n        } catch(err) {\n          errors.push(\"Something went wrong.\");\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmApprove.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  //delete\n  $btnDelete.on(\"click\", function() {\n    var $btn      = $(this);\n    var memberId  = $btn.data(\"member-id\");\n\n    $btn.prop(\"disabled\", true);\n\n    var data  = {\n      id: _id,\n      authenticity_token: _authenticityToken,\n      member_id: memberId\n    };\n\n    $message.html(\"Loading...\");\n\n    $.ajax({\n      url: _urlDelete,\n      method: 'POST',\n      data: data,\n      success: function(response) {\n        $message.html(\"Success! Reloading...\");\n        window.location.reload();\n      },\n      error: function(response) {\n        var errors = [];\n\n        try {\n          errors = JSON.parse(response.responseText).errors.full_messages;\n        } catch(err) {\n          errors.push(\"Something went wrong.\");\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btn.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  //Check\n  $btnConfirmCheck.on(\"click\", function() {\n    $btnConfirmCheck.prop(\"disabled\", true);\n\n    var data  = {\n      id: _id,\n      authenticity_token: _authenticityToken\n    };\n\n    $message.html(\"Loading...\");\n\n    $.ajax({\n      url: _urlCheckTransaction,\n      method: 'POST',\n      data: data,\n      success: function(response) {\n        $message.html(\"Success! Reloading...\");\n        window.location.reload();\n      },\n      error: function(response) {\n        var errors = [];\n\n        try {\n          errors = JSON.parse(response.responseText).errors.full_messages;\n        } catch(err) {\n          errors.push(\"Something went wrong.\");\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmCheck.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n \n  //Add\n  $btnAdd.on(\"click\", function() {\n    var amount    = $inputAmount.val();\n    var memberId  = $selectMember.val();\n\n    var loanProductId        = $inputLoanProductId.val();\n    var principal            = $inputPrincipal.val();\n    var term                 = $inputTerm.val();\n    var numInstallments      = $inputNumInstallments.val();\n    var maturityDate         = $inputMaturityDate.val();\n    var effectiveDate        = $inputEffectiveDate.val();\n    var clipNumber           = $inputClipNumber.val();\n    var beneficiary          = $inputBeneficiary.val();\n  \n    $btnAdd.prop(\"disabled\", true);\n    $inputAmount.prop(\"disabled\", true);\n    $selectMember.prop(\"disabled\", true);\n    $inputLoanProductId.prop(\"disabled\", true);\n    $inputPrincipal.prop(\"disabled\", true);\n    $inputTerm.prop(\"disabled\", true);\n    $inputNumInstallments.prop(\"disabled\", true);\n    $inputMaturityDate.prop(\"disabled\", true);\n    $inputEffectiveDate.prop(\"disabled\", true);\n    $inputClipNumber.prop(\"disabled\", true);\n    $inputBeneficiary.prop(\"disabled\", true);\n\n    var data  = {\n      id: _id,\n      authenticity_token: _authenticityToken,\n      amount: amount,\n      member_id: memberId,\n      loan_product_id: loanProductId,\n      principal: principal,\n      term: term,\n      num_installments: numInstallments,\n      maturity_date: maturityDate,\n      effective_date: effectiveDate,\n      clip_number: clipNumber,\n      beneficiary: beneficiary\n    };\n\n    $message.html(\"Loading...\");\n    $.ajax({\n      url: _urlAdd,\n      method: 'POST',\n      data: data,\n      success: function(response) {\n        $message.html(\"Success! Reloading...\");\n        window.location.reload();\n      },\n      error: function(response) {\n        var errors = [];\n\n        try {\n          errors = JSON.parse(response.responseText).errors.full_messages;\n        } catch(err) {\n          errors.push(\"Something went wrong.\");\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnAdd.prop(\"disabled\", false);\n          $inputAmount.prop(\"disabled\", false);\n          $selectMember.prop(\"disabled\", false);\n          $inputLoanProductId.prop(\"disabled\", false);\n          $inputPrincipal.prop(\"disabled\", false);\n          $inputTerm.prop(\"disabled\", false);\n          $inputNumInstallments.prop(\"disabled\", false);\n          $inputMaturityDate.prop(\"disabled\", false);\n          $inputEffectiveDate.prop(\"disabled\", false);\n          $inputClipNumber.prop(\"disabled\", false);\n          $inputBeneficiary.prop(\"disabled\", false);\n\n        }\n      }\n    });\n  });\n};\n\nvar init  = function(options) {\n  _options            = options;\n  _id                 = _options.id\n  _authenticityToken  = _options.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n};\n\nexport default { init: init };", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\n\nvar $btnNewTransaction;\nvar $btnConfirmNewTransaction;\nvar $modalNewTransaction;\n\nvar $selectBranch;\nvar $inputCollectionDate;\n\nvar $message;\n\nvar templateErrorList;\n\nvar branches  = [];\n\nvar urlBranches                               = \"/api/v1/branches\";\nvar urlCreateInsuranceFundTransferCollection  = \"/api/v1/insurance_fund_transfer_collections\";\n\nvar _authenticityToken;\n\nvar _cacheDom = function() {\n  $btnNewTransaction        = $(\"#btn-new-transaction\");\n  $btnConfirmNewTransaction = $(\"#btn-confirm-new-transaction\");\n  $modalNewTransaction = new bootstrap.Modal(\n    document.getElementById(\"modal-new-transaction\")\n  );\n\n  $selectBranch         = $(\"#select-branch\");\n  $inputCollectionDate  = $(\"#input-collection-date\");\n\n  $message  = $(\".message\");\n\n  templateErrorList = $(\"#template-error-list\").html();\n};\n\nvar _bindEvents = function() {\n  $btnNewTransaction.on(\"click\", function() {\n    $modalNewTransaction.show();\n  });\n\n  $btnConfirmNewTransaction.on(\"click\", function() {\n    var collectionDate  = $inputCollectionDate.val();\n    var branchId        = $selectBranch.val();\n\n    $btnConfirmNewTransaction.prop(\"disabled\", true);\n    $selectBranch.prop(\"disabled\", true);\n    $inputCollectionDate.prop(\"disabled\", true);\n\n    $.ajax({\n      url: urlCreateInsuranceFundTransferCollection,\n      method: 'POST',\n      data: {\n        authenticity_token: _authenticityToken,\n        collection_date: collectionDate,\n        branch_id: branchId\n      },\n      success: function(response) {\n        $message.html(\n          \"Success! Redirecting...\"\n        );\n\n        window.location.href=\"/insurance_fund_transfer_collections/\" + response.id;\n      },\n      error: function(response) {\n        var errors  = [];\n\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"]\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmNewTransaction.prop(\"disabled\", false);\n          $selectBranch.prop(\"disabled\", false);\n          $inputCollectionDate.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n};\n\nvar init  = function(config) {\n  _authenticityToken  = config.authenticityToken;\n\n  $.ajax({\n    url: urlBranches,\n    method: 'GET',\n    success: function(response) {\n      branches  = response.branches;\n    },\n    error: function(response) {\n      console.log(response);\n      alert(\"Error in fetching branches\");\n    }\n  });\n\n  _cacheDom();\n  _bindEvents();\n};\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\n\nvar options;\nvar insuranceFundTransferCollectionId;\nvar authenticityToken;\n\nvar $btnApprove;\nvar $btnConfirmApprove;\nvar $modalApprove;\n\nvar $btnFinalize;\nvar $btnConfirmFinalize;\nvar $modalFinalize;\n\nvar $btnRevert;\nvar $btnConfirmRevert;\nvar $modalRevert;\n\nvar $btnPrint;\nvar $modalPrint;\n\nvar $message;\nvar templateErrorList;\n\nvar _urlApprove       = \"/api/v1/insurance_fund_transfer_collections/approve\";\nvar _urlRevert        = \"/api/v1/insurance_fund_transfer_collections/revert\";\nvar _urlPrint         = \"/api/v1/print/generate_file\";\nvar _urlFinalize      = \"/api/v1/insurance_fund_transfer_collections/finalize\";\n\nvar _cacheDom = function() {\n  $btnApprove         = $(\"#btn-approve\");\n  $btnConfirmApprove  = $(\"#btn-confirm-approve\");\n  $modalApprove = new bootstrap.Modal(\n    document.getElementById(\"modal-approve\")\n  );\n\n  $btnFinalize        = $(\"#btn-finalize\");\n  $btnConfirmFinalize = $(\"#btn-confirm-finalize\");\n  $modalFinalize = new bootstrap.Modal(\n    document.getElementById(\"modal-finalize\")\n  );\n\n  $btnRevert          = $(\"#btn-revert\");\n  $btnConfirmRevert   = $(\"#btn-confirm-revert\");\n  $modalRevert = new bootstrap.Modal(\n    document.getElementById(\"modal-revert\")\n  );\n\n  $btnPrint   = $(\"#btn-print\");\n  $modalPrint = new bootstrap.Modal(\n    document.getElementById(\"modal-print\")\n  );\n\n  $message          = $(\".message\");\n  templateErrorList = $(\"#template-error-list\").html();\n};\n\nvar _bindEvents = function() {\n  $btnPrint.on(\"click\", function() {\n    $modalPrint.show();\n\n    var type = \"insurance_fund_transfer_collection\";\n\n    $modalPrint.hide();\n    window.open(\"/print?type=\" + type + \"&id=\" + insuranceFundTransferCollectionId);\n  });\n\n  $btnFinalize.on(\"click\", function() {\n    $message.html(\"\");\n    $modalFinalize.show();\n  });\n\n   $btnRevert.on(\"click\", function() {\n    $message.html(\"\");\n    $modalRevert.show();\n  });\n\n  $btnConfirmFinalize.on(\"click\", function() {\n    $btnConfirmFinalize.prop(\"disabled\", true);\n\n    $.ajax({\n      url: _urlFinalize,\n      method: 'POST',\n      dataType: 'json',\n      data: {\n        id: insuranceFundTransferCollectionId,\n        authenticity_token: authenticityToken\n      },\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.reload();\n      },\n      error: function(response) {\n        console.log(response);\n        var errors  = [];\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmFinalize.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  $btnConfirmRevert.on(\"click\", function() {\n    $message.html(\"Loading...\");\n    $btnConfirmRevert.prop(\"disabled\", true);\n\n    $.ajax({\n      url: _urlRevert,\n      method: 'POST',\n      dataType: 'json',\n      data: {\n        id: insuranceFundTransferCollectionId,\n        authenticity_token: authenticityToken\n      },\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.reload();\n      },\n      error: function(response) {\n        console.log(response);\n        var errors  = [];\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmRevert.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  $btnApprove.on(\"click\", function() {\n    $message.html(\"\");\n    $modalApprove.show();\n  });\n\n  $btnConfirmApprove.on(\"click\", function() {\n    $message.html(\"Loading...\");\n    $btnConfirmApprove.prop(\"disabled\", true);\n\n    $.ajax({\n      url: _urlApprove,\n      method: 'POST',\n      dataType: 'json',\n      data: {\n        id: insuranceFundTransferCollectionId,\n        authenticity_token: authenticityToken\n      },\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.reload();\n      },\n      error: function(response) {\n        console.log(response);\n        var errors  = [];\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmApprove.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n};\n\nvar init  = function(options) {\n  insuranceFundTransferCollectionId = options.id;\n  authenticityToken   = options.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n};\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\n\nvar $btnNewTransaction;\nvar $btnConfirmNewTransaction;\nvar $modalNewTransaction;\n\nvar $selectBranch;\nvar $inputCollectionDate;\n\nvar $message;\n\nvar templateErrorList;\n\nvar branches  = [];\n\nvar urlBranches                             = \"/api/v1/branches\";\nvar urlCreateInsuranceWithdrawalCollection  = \"/api/v1/insurance_withdrawal_collections\";\n\nvar _authenticityToken;\n\nvar _cacheDom = function() {\n  $btnNewTransaction        = $(\"#btn-new-transaction\");\n  $btnConfirmNewTransaction = $(\"#btn-confirm-new-transaction\");\n  $modalNewTransaction      = $(\"#modal-new-transaction\");\n\n  $selectBranch         = $(\"#select-branch\");\n  $inputCollectionDate  = $(\"#input-collection-date\");\n\n  $message  = $(\".message\");\n\n  templateErrorList = $(\"#template-error-list\").html();\n};\n\nvar _bindEvents = function() {\n  $btnNewTransaction.on(\"click\", function() {\n    $modalNewTransaction.show();\n  });\n\n  $btnConfirmNewTransaction.on(\"click\", function() {\n    var collectionDate  = $inputCollectionDate.val();\n    var branchId        = $selectBranch.val();\n\n    $btnConfirmNewTransaction.prop(\"disabled\", true);\n    $selectBranch.prop(\"disabled\", true);\n    $inputCollectionDate.prop(\"disabled\", true);\n\n    $.ajax({\n      url: urlCreateInsuranceWithdrawalCollection,\n      method: 'POST',\n      data: {\n        authenticity_token: _authenticityToken,\n        collection_date: collectionDate,\n        branch_id: branchId\n      },\n      success: function(response) {\n        $message.html(\n          \"Success! Redirecting...\"\n        );\n\n        window.location.href=\"/insurance_withdrawal_collections/\" + response.id;\n      },\n      error: function(response) {\n        var errors  = [];\n\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"]\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmNewTransaction.prop(\"disabled\", false);\n          $selectBranch.prop(\"disabled\", false);\n          $inputCollectionDate.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n};\n\nvar init  = function(config) {\n  _authenticityToken  = config.authenticityToken;\n\n  $.ajax({\n    url: urlBranches,\n    method: 'GET',\n    success: function(response) {\n      branches  = response.branches;\n    },\n    error: function(response) {\n      console.log(response);\n      alert(\"Error in fetching branches\");\n    }\n  });\n\n  _cacheDom();\n  _bindEvents();\n};\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\n\nvar options;\nvar insuranceWithdrawalCollectionId;\nvar authenticityToken;\n\nvar $btnApprove;\nvar $btnConfirmApprove;\nvar $modalApprove;\n\nvar $btnPrint;\nvar $modalPrint;\n\nvar $message;\nvar templateErrorList;\n\nvar _urlApprove = \"/api/v1/insurance_withdrawal_collections/approve\";\nvar _urlPrint   = \"/api/v1/print/generate_file\";\n\nvar _cacheDom = function() {\n  $btnApprove         = $(\"#btn-approve\");\n  $btnConfirmApprove  = $(\"#btn-confirm-approve\");\n  $modalApprove       = $(\"#modal-approve\");\n\n  $btnPrint   = $(\"#btn-print\");\n  $modalPrint = $(\"#modal-print\");\n\n  $message          = $(\".message\");\n  templateErrorList = $(\"#template-error-list\").html();\n};\n\nvar _bindEvents = function() {\n  $btnPrint.on(\"click\", function() {\n    $modalPrint.show();\n\n    $.ajax({\n      url: \"/api/v1/print/generate_file\",\n      method: 'POST',\n      data: { \n        id: insuranceWithdrawalCollectionId,\n        type: \"insurance_withdrawal_collection\",\n        authenticity_token: authenticityToken\n      },\n      success: function(response) {\n        $message.html(\n          \"Success! Redirecting...\"\n        );\n\n        $modalPrint.hide();\n        window.open(\"/print?filename=\" + response.filename, '_blank');\n      },\n      error: function(response) {\n        $message.html(\"Error!\");\n      }\n    });\n  });\n\n  $btnApprove.on(\"click\", function() {\n    $message.html(\"\");\n    $modalApprove.show();\n  });\n\n  $btnConfirmApprove.on(\"click\", function() {\n    $message.html(\"Loading...\");\n    $btnConfirmApprove.prop(\"disabled\", true);\n\n    $.ajax({\n      url: _urlApprove,\n      method: 'POST',\n      dataType: 'json',\n      data: {\n        id: insuranceWithdrawalCollectionId,\n        authenticity_token: authenticityToken\n      },\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.reload();\n      },\n      error: function(response) {\n        console.log(response);\n        var errors  = [];\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmApprove.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n};\n\nvar init  = function(options) {\n  insuranceWithdrawalCollectionId = options.id;\n  authenticityToken   = options.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n};\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\n\nvar $btnNew;\nvar $btnConfirmNew;\nvar $modalNew;\n\nvar $selectBranch;\nvar $selectAccountSubtype;\nvar $inputClosingDate;\n\nvar $message;\nvar templateErrorList;\n\nvar authenticityToken;\n\nvar cable;\nvar event;\n\nvar _cacheDom = function() {\n  $modalNew = new bootstrap.Modal(\n    document.getElementById(\"modal-new\")\n  );\n\n  $btnNew         = $(\"#btn-new\");\n  $btnConfirmNew  = $(\"#btn-confirm-new\");\n\n  $selectBranch         = $(\"#select-branch\");\n  $selectAccountSubtype = $(\"#select-account-subtype\");\n  $inputClosingDate     = $(\"#input-closing-date\");\n\n  $message          = $(\".message\");\n  templateErrorList = $(\"#template-error-list\").html();\n}\n\nvar _bindEvents = function() {\n  $btnNew.on(\"click\", function() {\n    $modalNew.show();\n    $message.html(\"\");\n  });\n\n  $btnConfirmNew.on(\"click\", function() {\n    var branchId        = $selectBranch.val();\n    var accountSubtype  = $selectAccountSubtype.val();\n    var closingDate     = $inputClosingDate.val();\n\n    $selectBranch.prop(\"disabled\", true);\n    $inputClosingDate.prop(\"disabled\", true);\n    $btnConfirmNew.prop(\"disabled\", true);\n\n    $message.html(\"Loading...\");\n\n    $.ajax({\n      url: \"/api/v1/monthly_closing_collections\",\n      method: 'POST',\n      data: {\n        branch_id: branchId,\n        account_subtype: accountSubtype,\n        closing_date: closingDate,\n        authenticity_token: authenticityToken\n      },\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.href = \"/monthly_closing_collections/\" + response.id;\n      },\n      error: function(response) {\n        console.log(response);\n        var errors  = [];\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $selectBranch.prop(\"disabled\", false);\n          $inputClosingDate.prop(\"disabled\", false);\n          $btnConfirmNew.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n}\n\nvar init  = function(options) {\n  authenticityToken = options.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n}\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\n\nvar $btnUpdate;\nvar $btnConfirmUpdate;\nvar $modalUpdate;\n\nvar $btnApprove;\nvar $btnConfirmApprove;\nvar $modalApprove;\n\nvar id;\nvar templateErrorList;\nvar authenticityToken;\n\nvar $message;\n\nvar _cacheDom = function() {\n  $modalUpdate = new bootstrap.Modal(\n    document.getElementById(\"modal-update\")\n  );\n\n  $modalApprove = new bootstrap.Modal(\n    document.getElementById(\"modal-approve\")\n  );\n\n  $btnUpdate        = $(\"#btn-update\");\n  $btnConfirmUpdate = $(\"#btn-confirm-update\");\n  \n  $btnApprove         = $(\"#btn-approve\");\n  $btnConfirmApprove  = $(\"#btn-confirm-approve\");\n\n  $message          = $(\".message\");\n  templateErrorList = $(\"#template-error-list\").html();\n};\n\nvar _bindEvents = function() {\n  $btnApprove.on(\"click\", function() {\n    $message.html(\"\");\n    $modalApprove.show();\n  });\n\n  $btnConfirmApprove.on(\"click\", function() {\n    $btnConfirmApprove.prop(\"disabled\", true);\n    $message.html(\"Loading...\");\n\n    $.ajax({\n      url: \"/api/v1/monthly_closing_collections/approve\",\n      method: 'POST',\n      data: {\n        id: id,\n        authenticity_token: authenticityToken\n      },\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.reload();\n      },\n      error: function(response) {\n        console.log(response);\n        var errors  = [];\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmApprove.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  $btnUpdate.on(\"click\", function() {\n    $message.html(\"\");\n    $modalUpdate.show();\n  });\n\n  $btnConfirmUpdate.on(\"click\", function() {\n    $btnConfirmUpdate.prop(\"disabled\", true);\n\n    $.ajax({\n      url: \"/api/v1/monthly_closing_collections/update\",\n      method: 'POST',\n      data: {\n        id: id,\n        authenticity_token: authenticityToken\n      },\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.reload();\n      },\n      error: function(response) {\n        console.log(response);\n        var errors  = [];\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmUpdate.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n};\n\nvar init  = function(options) {\n  id                = options.id;\n  authenticityToken = options.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n};\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\n\nvar $btnNew;\nvar $btnConfirmNew;\nvar $modalNew;\n\nvar $selectBranch;\nvar $selectAccountSubtype;\nvar $inputClosingDate;\n\nvar $message;\nvar templateErrorList;\n\nvar authenticityToken;\n\nvar cable;\nvar event;\n\nvar _cacheDom = function() {\n  $modalNew = new bootstrap.Modal(\n    document.getElementById(\"modal-new\")\n  );\n\n  $btnNew         = $(\"#btn-new\");\n  $btnConfirmNew  = $(\"#btn-confirm-new\");\n\n  $selectBranch         = $(\"#select-branch\");\n  $selectAccountSubtype = $(\"#select-account-subtype\");\n  $inputClosingDate     = $(\"#input-closing-date\");\n\n  $message          = $(\".message\");\n  templateErrorList = $(\"#template-error-list\").html();\n}\n\nvar _bindEvents = function() {\n  $btnNew.on(\"click\", function() {\n    $modalNew.show();\n    $message.html(\"\");\n  });\n\n  $btnConfirmNew.on(\"click\", function() {\n    var branchId        = $selectBranch.val();\n    var accountSubtype  = $selectAccountSubtype.val();\n    var closingDate     = $inputClosingDate.val();\n\n    $selectBranch.prop(\"disabled\", true);\n    $inputClosingDate.prop(\"disabled\", true);\n    $btnConfirmNew.prop(\"disabled\", true);\n\n    $message.html(\"Loading...\");\n\n    $.ajax({\n      url: \"/api/v1/insurance_monthly_closing_collections\",\n      method: 'POST',\n      data: {\n        branch_id: branchId,\n        account_subtype: accountSubtype,\n        closing_date: closingDate,\n        authenticity_token: authenticityToken\n      },\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.href = \"/insurance_monthly_closing_collections/\" + response.id;\n      },\n      error: function(response) {\n        console.log(response);\n        var errors  = [];\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $selectBranch.prop(\"disabled\", false);\n          $inputClosingDate.prop(\"disabled\", false);\n          $btnConfirmNew.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n}\n\nvar init  = function(options) {\n  authenticityToken = options.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n}\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\n\nvar $btnUpdate;\nvar $btnConfirmUpdate;\nvar $modalUpdate;\n\nvar $btnApprove;\nvar $btnConfirmApprove;\nvar $modalApprove;\n\nvar id;\nvar templateErrorList;\nvar authenticityToken;\n\nvar $message;\n\nvar _cacheDom = function() {\n  $btnUpdate        = $(\"#btn-update\");\n  $btnConfirmUpdate = $(\"#btn-confirm-update\");\n  $modalUpdate      = $(\"#modal-update\");\n  \n  $btnApprove         = $(\"#btn-approve\");\n  $btnConfirmApprove  = $(\"#btn-confirm-approve\");\n  \n  $modalApprove         = new bootstrap.Modal( \n    document.getElementById(\"modal-approve\")\n  );\n  $message          = $(\".message\");\n  templateErrorList = $(\"#template-error-list\").html();\n};\n\nvar _bindEvents = function() {\n  $btnApprove.on(\"click\", function() {\n    $message.html(\"\");\n    $modalApprove.show();\n  });\n\n  $btnConfirmApprove.on(\"click\", function() {\n    $btnConfirmApprove.prop(\"disabled\", true);\n    $message.html(\"Loading...\");\n\n    $.ajax({\n      url: \"/api/v1/insurance_monthly_closing_collections/approve\",\n      method: 'POST',\n      data: {\n        id: id,\n        authenticity_token: authenticityToken\n      },\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.reload();\n      },\n      error: function(response) {\n        console.log(response);\n        var errors  = [];\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmApprove.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  $btnUpdate.on(\"click\", function() {\n    $message.html(\"\");\n    $modalUpdate.show();\n  });\n\n  $btnConfirmUpdate.on(\"click\", function() {\n    $btnConfirmUpdate.prop(\"disabled\", true);\n\n    $.ajax({\n      url: \"/api/v1/insurance_monthly_closing_collections/update\",\n      method: 'POST',\n      data: {\n        id: id,\n        authenticity_token: authenticityToken\n      },\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.reload();\n      },\n      error: function(response) {\n        console.log(response);\n        var errors  = [];\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmUpdate.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n};\n\nvar init  = function(options) {\n  id                = options.id;\n  authenticityToken = options.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n};\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\n\nvar $btnNew;\nvar $btnConfirmNew;\nvar $modalNew;\n\nvar $selectCategory;\nvar $inputStartDate;\nvar $inputEndDate;\n\nvar $message;\nvar templateErrorList;\n\nvar authenticityToken;\n\nvar _cacheDom = function() {\n  $btnNew         = $(\"#btn-new\");\n  $btnConfirmNew  = $(\"#btn-confirm-new\");\n  $modalNew = new bootstrap.Modal(\n    document.getElementById(\"modal-new\")\n  );\n  $inputStartDate     = $(\"#input-start-date\");\n  $inputEndDate       = $(\"#input-end-date\");\n  $selectCategory     = $(\"#select-category\");\n  \n  $message          = $(\".message\");\n  templateErrorList = $(\"#template-error-list\").html();\n}\n\nvar _bindEvents = function() {\n  $btnNew.on(\"click\", function() {\n    $modalNew.show();\n    $message.html(\"\");\n  });\n\n  $btnConfirmNew.on(\"click\", function() {\n    var category  = $selectCategory.val();\n    var startDate = $inputStartDate.val();\n    var endDate   = $inputEndDate.val();\n\n    $selectCategory.prop(\"disabled\", true);\n    $inputStartDate.prop(\"disabled\", true);\n    $inputEndDate.prop(\"disabled\", true);\n\n    $message.html(\"Loading...\");\n\n    $.ajax({\n      url: \"/api/v1/commission_collections\",\n      method: 'POST',\n      data: {\n        category: category,\n        start_date: startDate,\n        end_date: endDate,\n        authenticity_token: authenticityToken\n      },\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.href = \"/commission_collections/\" + response.id;\n      },\n      error: function(response) {\n        console.log(response);\n        var errors  = [];\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $selectCategory.prop(\"disabled\", false);\n          $inputStartDate.prop(\"disabled\", false);\n          $inputEndDate.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n}\n\nvar init  = function(options) {\n  authenticityToken = options.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n}\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\n\nvar $btnUpdate;\nvar $btnConfirmUpdate;\nvar $modalUpdate;\n\nvar $btnApprove;\nvar $btnConfirmApprove;\nvar $modalApprove;\n\nvar id;\nvar templateErrorList;\nvar authenticityToken;\n\nvar urlModifyTemplate         = \"/api/v1/commission_collections/modify_template\";\nvar urlModifyBook             = \"/api/v1/commission_collections/modify_book\";\nvar urlModifyParticular       = \"/api/v1/commission_collections/modify_particular\";\nvar urlSaveCheckNumber        = \"/api/v1/commission_collections/save_check_number\";\nvar urlSaveCheckVoucherNumber = \"/api/v1/commission_collections/save_check_voucher_number\";\nvar urlSavePayee              = \"/api/v1/commission_collections/save_payee\";\nvar urlAddTransactionFee      = \"/api/v1/commission_collections/add_transaction_fee\";\n\nvar $selectTemplate;\nvar $btnConfirmTemplate;\n\nvar $btnConfirmBook;\nvar $btnConfirmParticular;\nvar $btnConfirmPayee;\nvar $btnConfirmCheckNumber;\nvar $btnConfirmCheckVoucherNumber;\n\nvar $selectBook;\nvar $inputTextParticular;\nvar $inputTextPayee;\nvar $inputTextCheckNumber;\nvar $inputTextCheckVoucherNumber;\n\nvar $btnConfirmTransactionFee;\nvar $inputTextTransactionFee;\n\nvar $message;\n\nvar _cacheDom = function() {\n  $btnUpdate                    = $(\"#btn-update\");\n  $btnConfirmUpdate             = $(\"#btn-confirm-update\");\n  $modalUpdate                  = $(\"#modal-update\");\n  \n  $btnApprove                   = $(\"#btn-approve\");\n  $btnConfirmApprove            = $(\"#btn-confirm-approve\");\n  $modalApprove                 = $(\"#modal-approve\");\n\n  $selectTemplate               = $(\"#select-template\");\n  $btnConfirmTemplate           = $(\"#btn-confirm-template\");\n\n  $inputTextParticular          = $(\"#input-text-particular\");\n  $btnConfirmParticular         = $(\"#btn-confirm-particular\");\n\n  $inputTextPayee               = $(\"#input-text-payee\");\n  $btnConfirmPayee              = $(\"#btn-confirm-payee\");\n\n  $inputTextCheckNumber         = $(\"#input-text-check-number\");\n  $btnConfirmCheckNumber        = $(\"#btn-confirm-check-number\");\n\n  $inputTextCheckVoucherNumber  = $(\"#input-text-check-voucher-number\");\n  $btnConfirmCheckVoucherNumber = $(\"#btn-confirm-check-voucher-number\");\n\n  $btnConfirmTransactionFee     = $(\"#btn-confirm-transaction-fee\");\n  $inputTextTransactionFee      = $(\"#input-text-transaction-fee\");\n\n  $selectBook                   = $(\"#select-book\");\n  $btnConfirmBook               = $(\"#btn-confirm-book\");\n\n  $message                      = $(\".message\");\n  templateErrorList             = $(\"#template-error-list\").html();\n};\n\nvar _bindEvents = function() {\n  $btnApprove.on(\"click\", function() {\n    $message.html(\"\");\n    $modalApprove.show();\n  });\n\n  $btnConfirmApprove.on(\"click\", function() {\n    $btnConfirmApprove.prop(\"disabled\", true);\n    $message.html(\"Loading...\");\n\n    $.ajax({\n      url: \"/api/v1/commission_collections/approve\",\n      method: 'POST',\n      data: {\n        id: id,\n        authenticity_token: authenticityToken\n      },\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.reload();\n      },\n      error: function(response) {\n        console.log(response);\n        var errors  = [];\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmApprove.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  $btnUpdate.on(\"click\", function() {\n    $message.html(\"\");\n    $modalUpdate.show();\n  });\n\n  $btnConfirmUpdate.on(\"click\", function() {\n    $btnConfirmUpdate.prop(\"disabled\", true);\n\n    $.ajax({\n      url: \"/api/v1/commission_collections/update\",\n      method: 'POST',\n      data: {\n        id: id,\n        authenticity_token: authenticityToken\n      },\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.reload();\n      },\n      error: function(response) {\n        console.log(response);\n        var errors  = [];\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmUpdate.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  $btnConfirmTransactionFee.on(\"click\", function() {\n    var transaction_fee  = $inputTextTransactionFee.val();\n\n    $message.html(\"Loading...\");\n\n    $inputTextTransactionFee.prop(\"disabled\", true);\n    $btnConfirmTransactionFee.prop(\"disabled\", true);\n\n    $.ajax({\n      url: urlAddTransactionFee,\n      method: 'POST',\n      data: { \n        id: id,\n        transaction_fee: transaction_fee,\n        authenticity_token: authenticityToken\n      },\n      success: function(response) {\n        $message.html(\n          \"Success! Redirecting...\"\n        );\n\n        window.location.reload();\n      },\n      error: function(response) {\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $inputTextTransactionFee.prop(\"disabled\", false);\n          $btnConfirmTransactionFee.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  $btnConfirmTemplate.on(\"click\", function() {\n    var template  = $selectTemplate.val();\n\n    $message.html(\"Loading...\");\n\n    $selectTemplate.prop(\"disabled\", true);\n    $btnConfirmTemplate.prop(\"disabled\", true);\n\n    $.ajax({\n      url: urlModifyTemplate,\n      method: 'POST',\n      data: { \n        id: id,\n        template: template,\n        authenticity_token: authenticityToken\n      },\n      success: function(response) {\n        $message.html(\n          \"Success! Redirecting...\"\n        );\n\n        window.location.reload();\n      },\n      error: function(response) {\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $selectTemplate.prop(\"disabled\", false);\n          $btnConfirmTemplate.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  $btnConfirmParticular.on(\"click\", function() {\n    var particular  = $inputTextParticular.val();\n\n    $message.html(\"Loading...\");\n\n    $inputTextParticular.prop(\"disabled\", true);\n    $btnConfirmParticular.prop(\"disabled\", true);\n\n    $.ajax({\n      url: urlModifyParticular,\n      method: 'POST',\n      data: { \n        id: id,\n        particular: particular,\n        authenticity_token: authenticityToken\n      },\n      success: function(response) {\n        $message.html(\n          \"Success! Redirecting...\"\n        );\n\n        window.location.reload();\n      },\n      error: function(response) {\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $inputTextParticular.prop(\"disabled\", false);\n          $btnConfirmParticular.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  $btnConfirmPayee.on(\"click\", function() {\n    var payee  = $inputTextPayee.val();\n\n    $message.html(\"Loading...\");\n\n    $inputTextPayee.prop(\"disabled\", true);\n    $btnConfirmPayee.prop(\"disabled\", true);\n\n    $.ajax({\n      url: urlSavePayee,\n      method: 'POST',\n      data: { \n        id: id,\n        payee: payee,\n        authenticity_token: authenticityToken\n      },\n      success: function(response) {\n        $message.html(\n          \"Success! Redirecting...\"\n        );\n\n        window.location.reload();\n      },\n      error: function(response) {\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $inputTextPayee.prop(\"disabled\", false);\n          $btnConfirmPayee.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  $btnConfirmCheckNumber.on(\"click\", function() {\n    var check_number  = $inputTextCheckNumber.val();\n\n    $message.html(\"Loading...\");\n\n    $inputTextCheckNumber.prop(\"disabled\", true);\n    $btnConfirmCheckNumber.prop(\"disabled\", true);\n\n    $.ajax({\n      url: urlSaveCheckNumber,\n      method: 'POST',\n      data: { \n        id: id,\n        check_number: check_number,\n        authenticity_token: authenticityToken\n      },\n      success: function(response) {\n        $message.html(\n          \"Success! Redirecting...\"\n        );\n\n        window.location.reload();\n      },\n      error: function(response) {\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $inputTextCheckNumber.prop(\"disabled\", false);\n          $btnConfirmCheckNumber.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  $btnConfirmCheckVoucherNumber.on(\"click\", function() {\n    var check_voucher_number  = $inputTextCheckVoucherNumber.val();\n\n    $message.html(\"Loading...\");\n\n    $inputTextCheckVoucherNumber.prop(\"disabled\", true);\n    $btnConfirmCheckVoucherNumber.prop(\"disabled\", true);\n\n    $.ajax({\n      url: urlSaveCheckVoucherNumber,\n      method: 'POST',\n      data: { \n        id: id,\n        check_voucher_number: check_voucher_number,\n        authenticity_token: authenticityToken\n      },\n      success: function(response) {\n        $message.html(\n          \"Success! Redirecting...\"\n        );\n\n        window.location.reload();\n      },\n      error: function(response) {\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $inputTextCheckVoucherNumber.prop(\"disabled\", false);\n          $btnConfirmCheckVoucherNumber.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  $btnConfirmBook.on(\"click\", function() {\n    var book  = $selectBook.val();\n\n    $message.html(\"Loading...\");\n\n    $selectBook.prop(\"disabled\", true);\n    $btnConfirmBook.prop(\"disabled\", true);\n\n    $.ajax({\n      url: urlModifyBook,\n      method: 'POST',\n      data: { \n        id: id,\n        book: book,\n        authenticity_token: authenticityToken\n      },\n      success: function(response) {\n        $message.html(\n          \"Success! Redirecting...\"\n        );\n\n        window.location.reload();\n      },\n      error: function(response) {\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $selectBook.prop(\"disabled\", false);\n          $btnConfirmBook.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n};\n\nvar init  = function(options) {\n  id                = options.id;\n  authenticityToken = options.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n};\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\n\nvar $btnNew;\nvar $btnConfirmNew;\nvar $modalNew;\n\nvar $selectBranch;\nvar $inputClosingDate;\n\nvar authenticityToken;\n\nvar $message;\n\nvar templateErrorList;\n\nvar _urlCreate  = \"/api/v1/data_stores/year_end_closings/queue\";\n\nvar init  = function(options) {\n  authenticityToken = options.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n};\n\nvar _cacheDom = function() {\n  $modalNew = new bootstrap.Modal(\n    document.getElementById(\"modal-new\")\n  )\n  $btnNew           = $(\"#btn-new\");\n  $btnConfirmNew    = $(\"#btn-confirm-new\");\n  $selectBranch     = $(\"#select-branch\");\n  $inputClosingDate = $(\"#input-closing-date\");\n\n  $message  = $(\".message\");\n\n  templateErrorList = $(\"#template-error-list\").html();\n};\n\nvar _bindEvents = function() {\n  $btnNew.on(\"click\", function() {\n    $modalNew.show();\n  });\n\n  $btnConfirmNew.on(\"click\", function() {\n    var branchId    = $selectBranch.val();\n    var closingDate = $inputClosingDate.val();\n\n    $message.html(\n      \"Loading...\"\n    );\n\n    $selectBranch.prop(\"disabled\", true);\n    $inputClosingDate.prop(\"disabled\", true);\n    $btnConfirmNew.prop(\"disabled\", true);\n\n    $.ajax({\n      url: _urlCreate,\n      method: 'POST',\n      data: {\n        authenticity_token: authenticityToken,\n        branch_id: branchId,\n        closing_date: closingDate\n      },\n      success: function(response) {\n        $message.html(\n          \"Success! Redirecting...\"\n        );\n\n        window.location.reload();\n      },\n      error: function(response) {\n        var errors  = [];\n\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"]\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $selectBranch.prop(\"disabled\", false);\n          $inputClosingDate.prop(\"disabled\", false);\n          $btnConfirmNew.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n};\n\nexport default { init: init }\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\n\nvar $btnApprove;\nvar $btnConfirmApprove;\nvar $modalApprove;\n\nvar authenticityToken;\nvar id;\n\nvar $message;\n\nvar templateErrorList;\n\nvar _urlApprove = \"/api/v1/data_stores/year_end_closings/approve\";\n\nvar init  = function(options) {\n  id                = options.id;\n  authenticityToken = options.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n};\n\nvar _cacheDom = function() {\n  $btnApprove         = $(\"#btn-approve\");\n  $btnConfirmApprove  = $(\"#btn-confirm-approve\");\n  $modalApprove       = new bootstrap.Modal(\n    document.getElementById(\"modal-approve\")\n  );\n\n  $message  = $(\".message\");\n\n  templateErrorList = $(\"#template-error-list\").html();\n};\n\nvar _bindEvents = function() {\n  $btnApprove.on(\"click\", function() {\n    $modalApprove.show();\n  });\n\n  $btnConfirmApprove.on(\"click\", function() {\n    $btnConfirmApprove.prop(\"disabled\", true);\n\n    $message.html(\n      \"Loading...\"\n    );\n\n    $.ajax({\n      url: _urlApprove,\n      method: 'POST',\n      data: {\n        authenticity_token: authenticityToken,\n        id: id\n      },\n      success: function(response) {\n        $message.html(\n          \"Success! Redirecting...\"\n        );\n\n        window.location.reload();\n      },\n      error: function(response) {\n        var errors  = [];\n\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"]\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmApprove.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n};\n\nexport default { init: init };\n", "import $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\nimport Mustache from \"mustache\";\n\nvar authenticityToken;\n\nvar $modalNew;\nvar $btnNew;\nvar $btnConfirmNew;\n\nvar $selectYear;\nvar $selectBranch;\n\nvar $message;\nvar templateErrorList;\n\nvar _cacheDom = function() {\n  $modalNew = new bootstrap.Modal(\n    document.getElementById(\"modal-new\")\n  );\n\n  $btnNew           = $(\"#btn-new\");\n  $btnConfirmNew    = $(\"#btn-confirm-new\");\n  $selectYear       = $(\"#select-year\");\n  $selectBranch     = $(\"#select-branch\");\n\n  $message          = $(\".message\");\n  templateErrorList = $(\"#template-error-list\").html();\n}\n\nvar _bindEvents = function() {\n  $btnNew.on(\"click\", function() {\n    $modalNew.show();\n    $message.html(\"\");\n  });\n\n  $btnConfirmNew.on(\"click\", function() {\n    var year      = $selectYear.val();\n    var branchId  = $selectBranch.val();\n\n    $message.html(\"Loading...\");\n    $btnConfirmNew.prop(\"disabled\", true);\n    $selectYear.prop(\"disabled\", true);\n    $selectBranch.prop(\"disabled\", true);\n\n    var data  = {\n      year: year,\n      branch_id: branchId,\n      authenticity_token: authenticityToken\n    }\n\n    $.ajax({\n      url: \"/api/v1/data_stores/icpr/queue\",\n      method: 'POST',\n      data: data,\n      success: function(response) {\n        window.location.href=\"/data_stores/icpr\";\n      },\n      error: function(response) {\n        errors = [];\n\n        try {\n          errors = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          console.log(response);\n          errors.push(\"Something went wrong\");\n        }\n\n        $message.html(\n          Mustache.render(\n            templateErrorList,\n            { errors: errors }\n          )\n        );\n\n        $btnConfirmNew.prop(\"disabled\", false);\n        $selectYear.prop(\"disabled\", false);\n        $selectBranch.prop(\"disabled\", false);\n      }\n    });\n  });\n}\n\nvar init  = function(config) {\n  authenticityToken = config.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n}\n\nexport default { init: init };\n", "import $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\nimport Mustache from \"mustache\";\n\nvar $modalUpdate;\nvar $modalPrint;\nvar $modalApprove;\nvar $modalSetRate;\n\nvar $btnUpdate;\nvar $btnConfirmUpdate;\nvar $printMessage;\nvar $btnPrintPdf;\n\nvar $btnApprove;\nvar $btnConfirmApprove;\nvar $btnPrint;\nvar loader;\nvar $btnSetRate;\nvar $btnConfirmSetRate;\nvar $inputEquityInterestRate;\nvar $inputSavingsRate;\nvar $inputCbuRate;\n\nvar id;\nvar templateErrorList;\nvar authenticityToken;\n\nvar $message;\n\nvar _cacheDom = function() {\n  $modalApprove = new bootstrap.Modal(\n    document.getElementById(\"modal-approve\")\n  );\n\n  $modalSetRate = new bootstrap.Modal(\n    document.getElementById(\"modal-set-rate\")\n  );\n\n  $btnUpdate        = $(\"#btn-update\");\n  $btnConfirmUpdate = $(\"#btn-confirm-update\");\n  $btnPrint         = $(\"#btn-print\");\n  $printMessage       = $(\".print-message\");\n  $btnPrintPdf      =  $(\"#btn-print-pdf\");\n  $modalPrint       = $(\"#modal-print\")\n  $btnApprove         = $(\"#btn-approve\");\n  $btnConfirmApprove  = $(\"#btn-confirm-approve\");\n\n  $btnSetRate               = $(\"#btn-set-rate\");\n  $btnConfirmSetRate        = $(\"#btn-confirm-set-rate\");\n  $inputEquityInterestRate  = $(\"#input-equity-interest-rate\");\n  $inputSavingsRate         = $(\"#input-savings-rate\");\n  $inputCbuRate             = $(\"#input-cbu-rate\");\n\n  $message          = $(\".message\");\n  templateErrorList = $(\"#template-error-list\").html();\n  loader            = $(\"#template-loader\").html();\n};\n\nvar _bindEvents = function() {\n  $btnSetRate.on(\"click\", function() {\n    $message.html(\"\");\n    $modalSetRate.show();\n  });\n  \n $btnPrintPdf.on(\"click\", function() {\n    //var print_icpr = $btnPrintPdf.data('id');\n    var print_icpr = document.getElementById(\"btn-print-pdf\").getAttribute('data-id');\n    $modalPrint.show();\n    $printMessage.html(\n      Mustache.render(\n        loader,\n        {}\n      )\n    );\n\n    $modalPrint.hide();\n    window.open(\"/print?id=\" + print_icpr + \"&type=print_pr\");\n  });\n\n  \n\n  $btnConfirmSetRate.on(\"click\", function() {\n    var equityInterestRate  = $inputEquityInterestRate.val();\n    var savingsRate         = $inputSavingsRate.val();\n    var cbuRate             = $inputCbuRate.val();\n\n    $message.html(\"Loading...\");\n\n    $inputEquityInterestRate.prop(\"disabled\", true);\n    $inputSavingsRate.prop(\"disabled\", true);\n    $inputCbuRate.prop(\"disabled\", true);\n    $btnConfirmSetRate.prop(\"disabled\", true);\n\n    $.ajax({\n      url: \"/api/v1/data_stores/icpr/set_rate\",\n      method: 'POST',\n      data: {\n        id: id,\n        authenticity_token: authenticityToken,\n        equity_interest_rate: equityInterestRate,\n        savings_rate: savingsRate,\n        cbu_rate: cbuRate\n      },\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.reload();\n      },\n      error: function(response) {\n        console.log(response);\n        var errors  = [];\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmSetRate.prop(\"disabled\", false);\n          $inputEquityInterestRate.prop(\"disabled\", false);\n          $inputSavingsRate.prop(\"disabled\", false);\n          $inputCbuRate.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  $btnApprove.on(\"click\", function() {\n    $message.html(\"\");\n    $modalApprove.show();\n  });\n\n  $btnPrint.on(\"click\", function() {\n    var print_entry = $btnPrint.data('id');\n\n    $modalPrint.show();\n    $printMessage.html(\n      Mustache.render(\n        loader,\n        {}\n      )\n    );\n\n    $modalPrint.hide();\n    window.open(\"/print?id=\" + print_entry + \"&type=print_entry\");\n  });\n\n  $btnConfirmApprove.on(\"click\", function() {\n    $btnConfirmApprove.prop(\"disabled\", true);\n    $message.html(\"Loading...\");\n\n    $.ajax({\n      url: \"/api/v1/data_stores/icpr/approve\",\n      method: 'POST',\n      data: {\n        id: id,\n        authenticity_token: authenticityToken\n      },\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.reload();\n      },\n      error: function(response) {\n        console.log(response);\n        var errors  = [];\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmApprove.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  $btnUpdate.on(\"click\", function() {\n    $message.html(\"\");\n    $modalUpdate.show();\n  });\n\n  $btnConfirmUpdate.on(\"click\", function() {\n    $btnConfirmUpdate.prop(\"disabled\", true);\n\n    $.ajax({\n      url: \"/api/v1/monthly_closing_collections/update\",\n      method: 'POST',\n      data: {\n        id: id,\n        authenticity_token: authenticityToken\n      },\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.reload();\n      },\n      error: function(response) {\n        console.log(response);\n        var errors  = [];\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmUpdate.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n};\n\nvar init  = function(options) {\n  id                = options.id;\n  authenticityToken = options.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n};\n\nexport default { init: init }\n", "import $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\nimport Mustache from \"mustache\";\n\nvar authenticityToken;\n\nvar $modalNew;\nvar $btnNew;\nvar $btnConfirmNew;\n\nvar $selectYear;\nvar $selectBranch;\n\nvar $message;\nvar templateErrorList;\n\nvar _cacheDom = function() {\n  $modalNew = new bootstrap.Modal(\n    document.getElementById(\"modal-new\")\n  );\n\n  $btnNew           = $(\"#btn-new\");\n  $btnConfirmNew    = $(\"#btn-confirm-new\");\n  $selectYear       = $(\"#select-year\");\n  $selectBranch     = $(\"#select-branch\");\n\n  $message          = $(\".message\");\n  templateErrorList = $(\"#template-error-list\").html();\n}\n\nvar _bindEvents = function() {\n  $btnNew.on(\"click\", function() {\n    $modalNew.show();\n    $message.html(\"\");\n  });\n\n  $btnConfirmNew.on(\"click\", function() {\n    var year      = $selectYear.val();\n    var branchId  = $selectBranch.val();\n\n    $message.html(\"Loading...\");\n    $btnConfirmNew.prop(\"disabled\", true);\n    $selectYear.prop(\"disabled\", true);\n    $selectBranch.prop(\"disabled\", true);\n\n    var data  = {\n      year: year,\n      branch_id: branchId,\n      authenticity_token: authenticityToken\n    }\n\n    $.ajax({\n      url: \"/api/v1/data_stores/patronage_refund/queue\",\n      method: 'POST',\n      data: data,\n      success: function(response) {\n        window.location.href=\"/data_stores/patronage_refund\";\n      },\n      error: function(response) {\n        errors = [];\n\n        try {\n          errors = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          console.log(response);\n          errors.push(\"Something went wrong\");\n        }\n\n        $message.html(\n          Mustache.render(\n            templateErrorList,\n            { errors: errors }\n          )\n        );\n\n        $btnConfirmNew.prop(\"disabled\", false);\n        $selectYear.prop(\"disabled\", false);\n        $selectBranch.prop(\"disabled\", false);\n      }\n    });\n  });\n}\n\nvar init  = function(config) {\n  authenticityToken = config.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n}\n\nexport default { init: init };\n", "import $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\nimport Mustache from \"mustache\";\n\nvar $btnUpdate;\nvar $btnConfirmUpdate;\nvar $modalUpdate;\nvar $modalPrint;\nvar $printMessage;\nvar $btnPrint;\nvar loader;\nvar $btnPrintPdf;\n\nvar $btnApprove;\nvar $btnConfirmApprove;\nvar $modalApprove;\n\nvar $btnSetRate;\nvar $btnConfirmSetRate;\nvar $modalSetRate;\nvar $inputPatronageInterestRate;\nvar $inputSavingsRate;\nvar $inputCbuRate;\n\nvar id;\nvar templateErrorList;\nvar authenticityToken;\n\nvar $message;\n\nvar _cacheDom = function() {\n  $btnUpdate        = $(\"#btn-update\");\n  $btnConfirmUpdate = $(\"#btn-confirm-update\");\n  $modalUpdate      = $(\"#modal-update\");\n  $btnPrint         = $(\"#btn-print\");\n  $printMessage       = $(\".print-message\");\n  $modalPrint         = $(\"#modal-print\");\n  $btnPrintPdf      =  $(\"#btn-print-pdf\");\n  \n  $btnApprove         = $(\"#btn-approve\");\n  $btnConfirmApprove  = $(\"#btn-confirm-approve\");\n  $modalApprove       = new bootstrap.Modal(document.getElementById(\"modal-approve\"));\n\n  $btnSetRate               = $(\"#btn-set-rate\");\n  $btnConfirmSetRate        = $(\"#btn-confirm-set-rate\");\n  $modalSetRate             = new bootstrap.Modal(document.getElementById(\"modal-set-rate\"));\n  $inputPatronageInterestRate  = $(\"#input-patronage-interest-rate\");\n  $inputSavingsRate         = $(\"#input-savings-rate\");\n  $inputCbuRate             = $(\"#input-cbu-rate\");\n\n  $message          = $(\".message\");\n  templateErrorList = $(\"#template-error-list\").html();\n  loader            = $(\"#template-loader\").html();\n};\n\nvar _bindEvents = function() {\n  $btnSetRate.on(\"click\", function() {\n    $message.html(\"\");\n    $modalSetRate.show();\n  });\n\n\n  $btnPrintPdf.on(\"click\", function() {\n    var print_icpr = $btnPrintPdf.data('id');\n\n    $modalPrint.show();\n    $printMessage.html(\n      Mustache.render(\n        loader,\n        {}\n      )\n    );\n\n    $modalPrint.hide();\n    window.open(\"/print?id=\" + print_icpr + \"&type=print_pr\");\n  });\n\n  $btnConfirmSetRate.on(\"click\", function() {\n    var PatronageInterestRate  = $inputPatronageInterestRate.val();\n    var savingsRate         = $inputSavingsRate.val();\n    var cbuRate             = $inputCbuRate.val();\n\n    $message.html(\"Loading...\");\n\n    $inputPatronageInterestRate.prop(\"disabled\", true);\n    $inputSavingsRate.prop(\"disabled\", true);\n    $inputCbuRate.prop(\"disabled\", true);\n    $btnConfirmSetRate.prop(\"disabled\", true);\n\n    $.ajax({\n      url: \"/api/v1/data_stores/patronage_refund/set_rate\",\n      method: 'POST',\n      data: {\n        id: id,\n        authenticity_token: authenticityToken,\n        patronage_interest_rate: PatronageInterestRate,\n        savings_rate: savingsRate,\n        cbu_rate: cbuRate\n      },\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.reload();\n      },\n      error: function(response) {\n        console.log(response);\n        var errors  = [];\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmSetRate.prop(\"disabled\", false);\n          $inputPatronageInterestRate.prop(\"disabled\", false);\n          $inputSavingsRate.prop(\"disabled\", false);\n          $inputCbuRate.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  $btnApprove.on(\"click\", function() {\n    $message.html(\"\");\n    $modalApprove.show();\n  });\n\n  $btnPrint.on(\"click\", function() {\n    var print_entry = $btnPrint.data('id');\n\n    $modalPrint.show();\n    $printMessage.html(\n      Mustache.render(\n        loader,\n        {}\n      )\n    );\n\n    $modalPrint.hide();\n    window.open(\"/print?id=\" + print_entry + \"&type=print_entry\");\n  });\n  \n  $btnConfirmApprove.on(\"click\", function() {\n    $btnConfirmApprove.prop(\"disabled\", true);\n    $message.html(\"Loading...\");\n\n    $.ajax({\n      url: \"/api/v1/data_stores/patronage_refund/approve\",\n      method: 'POST',\n      data: {\n        id: id,\n        authenticity_token: authenticityToken\n      },\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.reload();\n      },\n      error: function(response) {\n        console.log(response);\n        var errors  = [];\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmApprove.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  $btnUpdate.on(\"click\", function() {\n    $message.html(\"\");\n    $modalUpdate.show();\n  });\n\n  \n};\n\nvar init  = function(options) {\n  id                = options.id;\n  authenticityToken = options.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n};\n\nexport default { init: init }\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\n\nvar $btnNew;\nvar $btnConfirmNew;\nvar $modalNew;\n\nvar $selectBranch;\nvar $selectMonth;\nvar $selectYear;\n\nvar authenticityToken;\n\nvar $message;\n\nvar templateErrorList;\n\nvar _urlCreate  = \"/api/v1/data_stores/balance_sheets/queue\";\n\nvar init  = function(options) {\n  authenticityToken = options.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n};\n\nvar _cacheDom = function() {\n  \n  $modalNew = new bootstrap.Modal(\n    document.getElementById(\"modal-new\")\n  )\n  \n\n  $btnNew         = $(\"#btn-new\");\n  $btnConfirmNew  = $(\"#btn-confirm-new\");\n  $selectBranch   = $(\"#select-branch\");\n  $selectMonth    = $(\"#select-month\");\n  $selectYear     = $(\"#select-year\");\n\n  $message  = $(\".message\");\n\n  templateErrorList = $(\"#template-error-list\").html();\n};\n\nvar _bindEvents = function() {\n  $btnNew.on(\"click\", function() {\n    $modalNew.show();\n  });\n\n  $btnConfirmNew.on(\"click\", function() {\n    var branchId  = $selectBranch.val();\n    var month     = $selectMonth.val();\n    var year      = $selectYear.val();\n\n    $message.html(\n      \"Loading...\"\n    );\n\n    $selectBranch.prop(\"disabled\", true);\n    $selectMonth.prop(\"disabled\", true);\n    $selectYear.prop(\"disabled\", true);\n    $btnConfirmNew.prop(\"disabled\", true);\n\n    $.ajax({\n      url: _urlCreate,\n      method: 'POST',\n      data: {\n        authenticity_token: authenticityToken,\n        month: month,\n        branch_id: branchId,\n        year: year\n      },\n      success: function(response) {\n        $message.html(\n          \"Success! Redirecting...\"\n        );\n\n        window.location.reload();\n      },\n      error: function(response) {\n        var errors  = [];\n\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"]\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $selectBranch.prop(\"disabled\", false);\n          $selectMonth.prop(\"disabled\", false);\n          $selectYear.prop(\"disabled\", false);\n          $btnConfirmNew.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n};\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\n\nvar $btnNew;\nvar $btnConfirmNew;\nvar $modalNew;\n\nvar $selectBranch;\nvar $selectMonth;\nvar $selectYear;\n\nvar authenticityToken;\n\nvar $message;\n\nvar templateErrorList;\n\nvar _urlCreate  = \"/api/v1/data_stores/income_statements/queue\";\n\nvar init  = function(options) {\n  authenticityToken = options.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n};\n\nvar _cacheDom = function() {\n  $modalNew = new bootstrap.Modal(\n    document.getElementById(\"modal-new\")\n  )\n  $btnNew         = $(\"#btn-new\");\n  $btnConfirmNew  = $(\"#btn-confirm-new\");\n  $selectBranch   = $(\"#select-branch\");\n  $selectMonth    = $(\"#select-month\");\n  $selectYear     = $(\"#select-year\");\n\n  $message  = $(\".message\");\n\n  templateErrorList = $(\"#template-error-list\").html();\n};\n\nvar _bindEvents = function() {\n  $btnNew.on(\"click\", function() {\n    $modalNew.show();\n  });\n\n  $btnConfirmNew.on(\"click\", function() {\n    var branchId  = $selectBranch.val();\n    var month     = $selectMonth.val();\n    var year      = $selectYear.val();\n\n    $message.html(\n      \"Loading...\"\n    );\n\n    $selectBranch.prop(\"disabled\", true);\n    $selectMonth.prop(\"disabled\", true);\n    $selectYear.prop(\"disabled\", true);\n    $btnConfirmNew.prop(\"disabled\", true);\n\n    $.ajax({\n      url: _urlCreate,\n      method: 'POST',\n      data: {\n        authenticity_token: authenticityToken,\n        branch_id: branchId,\n        month: month,\n        year: year\n      },\n      success: function(response) {\n        $message.html(\n          \"Success! Redirecting...\"\n        );\n\n        window.location.reload();\n      },\n      error: function(response) {\n        var errors  = [];\n\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"]\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $selectBranch.prop(\"disabled\", false);\n          $selectMonth.prop(\"disabled\", false);\n          $selectYear.prop(\"disabled\", false);\n          $btnConfirmNew.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n};\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\n\nvar _authenticityToken;\n\nvar $btnNew;\nvar $btnConfirmNew;\nvar $selectBranch;\nvar $modalNew;\n\nvar $message;\n\nvar templateErrorList;\n\nvar _urlNew = \"/api/v1/adjustments/subsidiary_adjustments/create\";\n\nvar _cacheDom = function() {\n  $modalNew = new bootstrap.Modal(\n    document.getElementById(\"modal-new\")\n  );\n\n  $btnNew         = $(\"#btn-new\");\n  $btnConfirmNew  = $(\"#btn-confirm-new\");\n  $selectBranch   = $(\"#select-branch\");\n\n  $message  = $(\".message\");\n\n  templateErrorList = $(\"#template-error-list\").html();\n};\n\nvar _bindEvents = function() {\n  $btnNew.on(\"click\", function() {\n    $modalNew.show();\n    $message.html(\"\");\n  });\n  \n  $btnConfirmNew.on(\"click\", function() {\n    var branchId  = $selectBranch.val();\n\n    $message.html(\"Loading...\");\n\n    $selectBranch.prop(\"disabled\", true);\n    $btnConfirmNew.prop(\"disabled\", true);\n\n    $.ajax({\n      url: _urlNew,\n      method: 'POST',\n      data: {\n        authenticity_token: _authenticityToken,\n        branch_id: branchId\n      },\n      success: function(response) {\n        $message.html(\n          \"Success! Redirecting...\"\n        );\n\n        window.location.href=\"/adjustments/subsidiary_adjustments/\" + response.id;\n      },\n      error: function(response) {\n        var errors  = [];\n\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"]\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $selectBranch.prop(\"disabled\", false);\n          $btnConfirmNew.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n};\n\nvar init  = function(options) {\n  _authenticityToken  = options.authenticityToken; \n\n  _cacheDom();\n  _bindEvents();\n};\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\n\nvar _authenticityToken;\nvar _id;\n\nvar $btnApprove;\nvar $btnConfirmApprove;\nvar $modalApprove;\n\nvar $btnDelete;\nvar $btnConfirmDelete;\nvar $modalDelete;\n\nvar $selectMember;\nvar $selectAccount;\nvar $selectAdjustment;\nvar $inputAmount;\nvar $btnAdd;\n\nvar $btnDeleteMember;\nvar $btnConfirmDeleteMember;\nvar $modalDeleteMember;\n\nvar $selectAccountingCode;\nvar $inputAmount;\nvar $inputAccountingAmount;\nvar $selectPostType;\nvar $btnAddAccountingCode;\n\nvar $btnDeleteAccountingEntry;\nvar $btnConfirmDeleteAccountingEntry;\nvar $modalDeleteAccountingEntry;\n\nvar $inputParticular;\nvar $btnUpdateAccountingEntryParticular;\n\nvar $displayMember;\nvar $displayAccountSubtype;\nvar $displayPostType;\nvar $displayAccountingCode;\n\nvar $btnPrint;\n\nvar $message;\n\nvar templateErrorList;\n\nvar currentMember           = \"\";\nvar currentMemberAccountId  = \"\";\nvar currentAccountSubtype   = \"\";\nvar currentAccountingCodeId = \"\";\nvar currentPostType         = \"\";\nvar $modalPrint;\nvar loader;\nvar $printMessage;\nvar _urlApprove                         = \"/api/v1/adjustments/subsidiary_adjustments/approve\";\nvar _urlDelete                          = \"/api/v1/adjustments/subsidiary_adjustments/destroy\";\nvar _urlAdd                             = \"/api/v1/adjustments/subsidiary_adjustments/add_member\";\nvar _urlDeleteMember                    = \"/api/v1/adjustments/subsidiary_adjustments/delete_member\";\nvar _urlAddAccountingCode               = \"/api/v1/adjustments/subsidiary_adjustments/add_accounting_code\";\nvar _urlDeleteAccountingCode            = \"/api/v1/adjustments/subsidiary_adjustments/delete_accounting_code\";\nvar _urlUpdateAccountingEntryParticular = \"/api/v1/adjustments/subsidiary_adjustments/update_accounting_entry_particular\";\nvar _urlPrint                           = \"/api/v1/adjustments/subsidiary_adjustments/print\"\n\nvar _cacheDom = function() {\n  $modalPrint         = $(\"#modal-print\");\n  $printMessage       = $(\".print-message\");\n  $modalDeleteAccountingEntry = new bootstrap.Modal(  \n    document.getElementById(\"modal-delete-accounting-entry\")\n  );\n\n  $modalApprove = new bootstrap.Modal(\n    document.getElementById(\"modal-approve\")\n  );\n\n  $modalDelete = new bootstrap.Modal(\n    document.getElementById(\"modal-delete\")\n  );\n\n  $modalDeleteMember = new bootstrap.Modal(\n    document.getElementById(\"modal-delete-member\")\n  );\n\n  $modalDeleteAccountingEntry = new bootstrap.Modal(\n    document.getElementById(\"modal-delete-accounting-entry\")\n  );\n\n  $inputParticular                    = $(\"#input-particular\");\n  $btnUpdateAccountingEntryParticular = $(\"#btn-update-accounting-entry-particular\");\n\n  $btnDeleteAccountingEntry   = $(\"#btn-delete-accounting-entry\");\n\n  $selectAccountingCode   = $(\"#select-accounting-code\");\n  $inputAccountingAmount  = $(\"#input-accounting-amount\");\n  $selectPostType         = $(\"#select-post-type\");\n  $btnAddAccountingCode   = $(\"#btn-add-accounting-code\");\n\n  $btnApprove         = $(\"#btn-approve\");\n  $btnConfirmApprove  = $(\"#btn-confirm-approve\");\n\n  $btnDelete         = $(\"#btn-delete\");\n  $btnConfirmDelete  = $(\"#btn-confirm-delete\");\n\n  $selectMember     = $(\"#select-member\");\n  $selectAccount    = $(\"#select-account\");\n  $selectAdjustment = $(\"#select-adjustment\");\n  $inputAmount      = $(\"#input-amount\");\n  $btnAdd           = $(\"#btn-add\");\n  \n  $btnDeleteMember        = $(\".btn-delete-member\");\n  $btnConfirmDeleteMember = $(\"#btn-confirm-delete-member\");\n\n  $btnDeleteAccountingEntry         = $(\".btn-delete-accounting-entry\");\n  $btnConfirmDeleteAccountingEntry  = $(\"#btn-confirm-delete-accounting-entry\");\n\n  $displayMember          = $(\".display-member\");\n  $displayAccountSubtype  = $(\".display-account-subtype\");\n  $displayPostType        = $(\".display-post-type\");\n  $displayAccountingCode  = $(\".display-accounting-code\");\n\n  $btnPrint         = $(\"#btn-print\");\n\n  $message  = $(\".message\");\n  loader            = $(\"#template-loader\").html();\n  templateErrorList = $(\"#template-error-list\").html();\n};\n\nvar _bindEvents = function() {\n  $btnUpdateAccountingEntryParticular.on(\"click\", function() {\n    $message.html(\"Loading...\");\n\n    var particular  = $inputParticular.val();\n\n    var data  = {\n      id: _id,\n      authenticity_token: _authenticityToken,\n      particular: particular\n    };\n\n    $btnUpdateAccountingEntryParticular.prop(\"disabled\", true);\n    $inputParticular.prop(\"disabled\", true);\n\n    $.ajax({\n      url: _urlUpdateAccountingEntryParticular,\n      method: 'POST',\n      data: data,\n      success: function(response) {\n        $message.html(\n          \"Success! Redirecting...\"\n        );\n        \n        window.location.reload();\n      },\n      error: function(response) {\n        var errors  = [];\n\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"]\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnUpdateAccountingEntryParticular.prop(\"disabled\", false);\n          $inputParticular.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  $btnApprove.on(\"click\", function() {\n    $message.html(\"\");\n    $modalApprove.show();\n  });\n\n  $btnConfirmApprove.on(\"click\", function() {\n    $message.html(\"Loading...\");\n\n    var data  = {\n      id: _id,\n      authenticity_token: _authenticityToken\n    };\n\n    $btnConfirmApprove.prop(\"disabled\", true);\n\n    $.ajax({\n      url: _urlApprove,\n      method: 'POST',\n      data: data,\n      success: function(response) {\n        $message.html(\n          \"Success! Redirecting...\"\n        );\n        \n        window.location.reload();\n      },\n      error: function(response) {\n        var errors  = [];\n\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"]\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmApprove.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  $btnDeleteAccountingEntry.on(\"click\", function() {\n    $message.html(\"\");\n    $modalDeleteAccountingEntry.show();\n\n    $displayPostType.html($(this).data(\"post-type\"));\n    $displayAccountingCode.html($(this).data(\"accounting-code-name\"));\n\n    currentAccountingCodeId = $(this).data(\"accounting-code-id\");\n    currentPostType         = $(this).data(\"post-type\");\n  });\n\n  $btnConfirmDeleteAccountingEntry.on(\"click\", function() {\n    var data  = {\n      id: _id,\n      accounting_code_id: currentAccountingCodeId,\n      post_type: currentPostType,\n      authenticity_token: _authenticityToken\n    };\n\n    $btnConfirmDeleteAccountingEntry.prop(\"disabled\", true);\n\n    $.ajax({\n      url: _urlDeleteAccountingCode,\n      method: 'POST',\n      data: data,\n      success: function(response) {\n        $message.html(\n          \"Success! Redirecting...\"\n        );\n        \n        window.location.reload();\n      },\n      error: function(response) {\n        var errors  = [];\n\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"]\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmDeleteAccountingEntry.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  $btnAddAccountingCode.on(\"click\", function() {\n    $message.html(\"Loading...\");\n\n    var accountingCodeId  = $selectAccountingCode.val();\n    var amount            = $inputAccountingAmount.val();\n    var postType          = $selectPostType.val();\n\n    var data  = {\n      id: _id,\n      authenticity_token: _authenticityToken,\n      accounting_code_id: accountingCodeId,\n      amount: amount,\n      post_type: postType\n    };\n\n    $selectAccountingCode.prop(\"disabled\", true);\n    $inputAccountingAmount.prop(\"disabled\", true);\n    $selectPostType.prop(\"disabled\", true);\n    $btnAddAccountingCode.prop(\"disabled\", true);\n\n    $.ajax({\n      url: _urlAddAccountingCode,\n      method: 'POST',\n      data: data,\n      success: function(response) {\n        $message.html(\n          \"Success! Redirecting...\"\n        );\n        \n        window.location.reload();\n      },\n      error: function(response) {\n        var errors  = [];\n\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"]\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $selectAccountingCode.prop(\"disabled\", false);\n          $inputAccountingAmount.prop(\"disabled\", false);\n          $selectPostType.prop(\"disabled\", false);\n          $btnAddAccountingCode.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  $btnDeleteMember.on(\"click\", function() {\n    $message.html(\"\");\n\n    currentMember           = $(this).data(\"member-name\");\n    currentMemberAccountId  = $(this).data(\"member-account-id\");\n    currentAccountSubtype   = $(this).data(\"account-subtype\");\n\n    $displayMember.html(currentMember);\n    $displayAccountSubtype.html(currentAccountSubtype);\n\n    $modalDeleteMember.show();\n  });\n\n  $btnConfirmDeleteMember.on(\"click\", function() {\n    $message.html(\"Loading...\");\n    $btnConfirmDeleteMember.prop(\"disabled\", true);\n\n    var data  = {\n      id: _id,\n      member_account_id: currentMemberAccountId,\n      authenticity_token: _authenticityToken\n    };\n\n    $.ajax({\n      url: _urlDeleteMember,\n      method: 'POST',\n      data: data,\n      success: function(response) {\n        $message.html(\n          \"Success! Redirecting...\"\n        );\n        \n        window.location.reload();\n      },\n      error: function(response) {\n        var errors  = [];\n\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"]\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmDeleteMember.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n\n  $btnPrint.on(\"click\", function() {\n    var adjustment_record = $btnPrint.data('id');\n    $modalPrint.show();\n    $printMessage.html(\n      Mustache.render(\n        loader,\n        {}\n      )\n    );\n\n    $modalPrint.hide();\n    window.open(\"/print?id=\" + adjustment_record + \"&type=print_adjustment_record\");\n  });\n\n  $btnAdd.on(\"click\", function() {\n    var memberId        = $selectMember.val();\n    var accountSubtype  = $selectAccount.val();\n    var adjustment      = $selectAdjustment.val();\n    var amount          = $inputAmount.val();\n\n    var data  = {\n      id: _id,\n      member_id: memberId,\n      account_subtype: accountSubtype,\n      adjustment: adjustment,\n      amount: amount,\n      authenticity_token: _authenticityToken\n    };\n\n    $selectMember.prop(\"disabled\", true);\n    $selectAccount.prop(\"disabled\", true);\n    $selectAdjustment.prop(\"disabled\", true);\n    $inputAmount.prop(\"disabled\", true);\n\n    $.ajax({\n      url: _urlAdd,\n      method: 'POST',\n      data: data,\n      success: function(response) {\n        $message.html(\n          \"Success! Redirecting...\"\n        );\n        \n        window.location.reload();\n      },\n      error: function(response) {\n        var errors  = [];\n\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"]\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $selectMember.prop(\"disabled\", false);\n          $selectAccount.prop(\"disabled\", false);\n          $selectAdjustment.prop(\"disabled\", false);\n          $inputAmount.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  $btnDelete.on(\"click\", function() {\n    $modalDelete.show();\n    $message.html(\"\");\n  });\n  \n  $btnConfirmDelete.on(\"click\", function() {\n    $message.html(\"Loading...\");\n\n    $btnConfirmDelete.prop(\"disabled\", true);\n\n    $.ajax({\n      url: _urlDelete,\n      method: 'POST',\n      data: {\n        authenticity_token: _authenticityToken,\n        id: _id\n      },\n      success: function(response) {\n        $message.html(\n          \"Success! Redirecting...\"\n        );\n\n        window.location.href=\"/adjustments/subsidiary_adjustments/\";\n      },\n      error: function(response) {\n        var errors  = [];\n\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"]\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmDelete.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n};\n\nvar init  = function(options) {\n  _authenticityToken  = options.authenticityToken; \n  _id                 = options.id;\n\n  _cacheDom();\n  _bindEvents();\n};\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\n\nvar _authenticityToken;\n\nvar $btnNew;\nvar $btnConfirmNew;\nvar $selectBranch;\nvar $selectCenter;\nvar $inputNumberOfDays;\nvar $inputReason;\nvar $inputDateInitialized;\nvar $modalNew;\n\nvar $message;\n\nvar templateErrorList;\n\nvar _urlNew = \"/api/v1/adjustments/batch_moratorium_adjustments/create\";\n\nvar _cacheDom = function() {\n  $modalNew = new bootstrap.Modal(\n    document.getElementById(\"modal-new\")\n  )\n\n  $btnNew               = $(\"#btn-new\");\n  $btnConfirmNew        = $(\"#btn-confirm-new\");\n  $inputNumberOfDays    = $(\"#input-number-of-days\");\n  $inputReason          = $(\"#input-reason\");\n  $inputDateInitialized = $(\"#input-date-initialized\");\n  $selectBranch         = $(\"#select-branch\");\n  $selectCenter         = $(\"#select-center\");\n\n  $message  = $(\".message\");\n\n  templateErrorList = $(\"#template-error-list\").html();\n};\n\nvar _bindEvents = function() {\n  $selectBranch.on(\"change\", function() {\n    var id  = $(this).val();\n\n    $.ajax({\n      url: \"/api/v1/branches/fetch_centers\",\n      method: 'GET',\n      data: {\n        id: id\n      },\n      success: function(response) {\n        $selectCenter.html(\"\");\n\n        $selectCenter.append(\n          \"<option value=''>-- SELECT --</option>\"\n        );\n\n        for(var i = 0; i < response.centers.length; i++) {\n          var center  = response.centers[i];\n          $selectCenter.append(\n            \"<option value='\" + center.id + \"'>\" + center.name + \"</option>\"\n          );\n        }\n      },\n      error: function(response) {\n        alert(\"Error in fetching centers\");\n      }\n    });\n  });\n\n  $btnNew.on(\"click\", function() {\n    $modalNew.show();\n    $message.html(\"\");\n  });\n  \n  $btnConfirmNew.on(\"click\", function() {\n    var branchId        = $selectBranch.val();\n    var centerId        = $selectCenter.val();\n    var numberOfDays    = $inputNumberOfDays.val();\n    var dateInitialized = $inputDateInitialized.val();\n    var reason          = $inputReason.val();\n\n    $message.html(\"Loading...\");\n\n    $selectBranch.prop(\"disabled\", true);\n    $selectCenter.prop(\"disabled\", true);\n    $inputNumberOfDays.prop(\"disabled\", true);\n    $inputDateInitialized.prop(\"disabled\", true)\n    $inputReason.prop(\"disabled\", true);\n    $btnConfirmNew.prop(\"disabled\", true);\n\n    $.ajax({\n      url: _urlNew,\n      method: 'POST',\n      data: {\n        authenticity_token: _authenticityToken,\n        branch_id: branchId,\n        center_id: centerId,\n        number_of_days: numberOfDays,\n        date_initialized: dateInitialized,\n        reason: reason\n      },\n      success: function(response) {\n        $message.html(\n          \"Success! Redirecting...\"\n        );\n\n        window.location.href=\"/adjustments/batch_moratorium_adjustments/\" + response.id;\n      },\n      error: function(response) {\n        var errors  = [];\n\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"]\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $selectBranch.prop(\"disabled\", false);\n          $selectCenter.prop(\"disabled\", false);\n          $inputNumberOfDays.prop(\"disabled\", false);\n          $inputDateInitialized.prop(\"disabled\", false)\n          $inputReason.prop(\"disabled\", false);\n          $btnConfirmNew.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n};\n\nvar init  = function(options) {\n  _authenticityToken  = options.authenticityToken; \n\n  _cacheDom();\n  _bindEvents();\n};\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\n\nvar _authenticityToken;\nvar _id;\n\nvar $btnApprove;\nvar $btnConfirmApprove;\nvar $modalApprove;\n\nvar $btnDelete;\nvar $btnConfirmDelete;\nvar $modalDelete;\nvar $message;\n\nvar templateErrorList;\n\nvar currentMember           = \"\";\nvar currentMemberAccountId  = \"\";\nvar currentAccountSubtype   = \"\";\nvar currentAccountingCodeId = \"\";\nvar currentPostType         = \"\";\n\nvar _urlApprove                         = \"/api/v1/adjustments/batch_moratorium_adjustments/approve\";\nvar _urlDelete                          = \"/api/v1/adjustments/batch_moratorium_adjustments/destroy\";\n\nvar _cacheDom = function() {\n  $modalApprove = new bootstrap.Modal(\n    document.getElementById(\"modal-approve\")\n  );\n\n  $modalDelete = new bootstrap.Modal(\n    document.getElementById(\"modal-delete\")\n  );\n\n  $btnApprove         = $(\"#btn-approve\");\n  $btnConfirmApprove  = $(\"#btn-confirm-approve\");\n\n  $btnDelete         = $(\"#btn-delete\");\n  $btnConfirmDelete  = $(\"#btn-confirm-delete\");\n\n  $message  = $(\".message\");\n\n  templateErrorList = $(\"#template-error-list\").html();\n};\n\nvar _bindEvents = function() {\n  $btnApprove.on(\"click\", function() {\n    $message.html(\"\");\n    $modalApprove.show();\n  });\n\n  $btnConfirmApprove.on(\"click\", function() {\n    $message.html(\"Loading...\");\n\n    var data  = {\n      id: _id,\n      authenticity_token: _authenticityToken\n    };\n\n    $btnConfirmApprove.prop(\"disabled\", true);\n\n    $.ajax({\n      url: _urlApprove,\n      method: 'POST',\n      data: data,\n      success: function(response) {\n        $message.html(\n          \"Success! Redirecting...\"\n        );\n        \n        window.location.reload();\n      },\n      error: function(response) {\n        var errors  = [];\n\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"]\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmApprove.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  $btnDelete.on(\"click\", function() {\n    $modalDelete.show();\n    $message.html(\"\");\n  });\n  \n  $btnConfirmDelete.on(\"click\", function() {\n    $message.html(\"Loading...\");\n\n    $btnConfirmDelete.prop(\"disabled\", true);\n\n    $.ajax({\n      url: _urlDelete,\n      method: 'POST',\n      data: {\n        authenticity_token: _authenticityToken,\n        id: _id\n      },\n      success: function(response) {\n        $message.html(\n          \"Success! Redirecting...\"\n        );\n\n        window.location.href=\"/adjustments/batch_moratorium_adjustments/\";\n      },\n      error: function(response) {\n        var errors  = [];\n\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"]\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmDelete.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n};\n\nvar init  = function(options) {\n  _authenticityToken  = options.authenticityToken; \n  _id                 = options.id;\n\n  _cacheDom();\n  _bindEvents();\n};\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\n\nvar $btnNewTransaction;\nvar $btnConfirmNewTransaction;\nvar $modalNewTransaction;\n\nvar $selectBranch;\nvar $selectCenter;\nvar $inputCollectionDate;\n\nvar $message;\n\nvar templateErrorList;\n\nvar branches  = [];\n\nvar urlBranches           = \"/api/v1/branches\";\nvar urlCreateTransaction  = \"/api/v1/member_account_validations/generate_transaction\";\n\nvar _authenticityToken;\n\nvar _cacheDom = function() {\n  $btnNewTransaction        = $(\"#btn-new-transaction\");\n  $btnConfirmNewTransaction = $(\"#btn-generate-insurance-account-validation\");\n  //$modalNewTransaction      = $(\"#modal-new-transaction\");\n  $modalNewTransaction = new bootstrap.Modal(\n    document.getElementById(\"modal-new-transaction\")\n  );\n\n  $selectBranch         = $(\"#select-branch\");\n  $selectCenter         = $(\"#select-center\");\n  $inputCollectionDate  = $(\"#input-collection-date\");\n\n  $message  = $(\".message\");\n\n  templateErrorList = $(\"#template-error-list\").html();\n};\n\nvar _bindEvents = function() {\n  $btnNewTransaction.on(\"click\", function() {\n    $modalNewTransaction.show();\n  });\n\n  $btnConfirmNewTransaction.on(\"click\", function() {\n    var collectionDate  = $inputCollectionDate.val();\n    var branchId        = $selectBranch.val();\n    var centerId        = $selectCenter.val();\n\n    $message.html(\n      \"Loading...\"\n    );\n\n    $btnConfirmNewTransaction.prop(\"disabled\", true);\n    $selectBranch.prop(\"disabled\", true);\n    $selectCenter.prop(\"disabled\", true);\n    $inputCollectionDate.prop(\"disabled\", true);\n\n    $.ajax({\n      url: urlCreateTransaction,\n      method: 'POST',\n      data: {\n        authenticity_token: _authenticityToken,\n        date_prepared: collectionDate,\n        branch_id: branchId,\n        center_id: centerId\n      },\n      success: function(response) {\n        $message.html(\n          \"Success! Redirecting...\"\n        );\n\n        window.location.href=\"/member_account_validations/\" + response.id;\n      },\n      error: function(response) {\n        var errors  = [];\n\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"]\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmNewTransaction.prop(\"disabled\", false);\n          $selectBranch.prop(\"disabled\", false);\n          $selectCenter.prop(\"disabled\", false);\n          $inputCollectionDate.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  $selectBranch.on(\"change\", function() {\n    var branchId  = $(this).val();\n\n    $selectCenter.html(\"\");\n    \n    for(var i = 0; i < branches.length; i++) {\n      if(branches[i].id == branchId) {\n        for(var j = 0; j < branches[i].centers.length; j++) {\n          $selectCenter.append(\n            \"<option value='\" + branches[i].centers[j].id + \"'>\" + branches[i].centers[j].name + \"</option>\"\n          );\n        }\n      }\n    }\n  });\n};\n\nvar init  = function(config) {\n  _authenticityToken  = config.authenticityToken;\n\n  $.ajax({\n    url: urlBranches,\n    method: 'GET',\n    success: function(response) {\n      branches  = response.branches;\n    },\n    error: function(response) {\n      console.log(response);\n      alert(\"Error in fetching branches\");\n    }\n  });\n\n  _cacheDom();\n  _bindEvents();\n};\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\n\nvar $btnApprove;\nvar $btnReverse;\nvar $btnValidate;\nvar $btnCheck;\nvar $btnCancel;\n\nvar $btnApproveConfirmation;\nvar $btnApproveValidate;\nvar $btnCancelApproval;     \nvar $btnCancelValidate;\nvar $btnApproveCheck;\nvar $btnCancelCheck;\nvar $btnApproveCancellation;\nvar $btnCancelCancellation;\n\nvar $btnReverseConfirmation;\nvar $btnCancelReverse;\n\nvar $errors;\nvar $errorsTemplate;\nvar urlApproveTransaction             = \"/api/v1/member_account_validations/approve\";\nvar urlReverseTransaction             = \"/api/v1/member_account_validations/reverse\";\nvar urlValidateTransaction            = \"/api/v1/member_account_validations/validate\";\nvar urlCheckTransaction               = \"/api/v1/member_account_validations/check\";\nvar urlCancelTransaction              = \"/api/v1/member_account_validations/cancel\";\n\nvar $modalApprove;\nvar $modalValidate;\nvar $modalCheck;\nvar $modalCancel;\nvar $modalReverse;\nvar $errors;\nvar $errorsTemplate;\nvar $modalErrorsApproval;\nvar $modalErrorsReverse;\nvar $modalErrorsValidate;\nvar $modalErrorsCheck;\nvar $modalErrorsCancel;\nvar $modalSuccessApproval;\nvar $modalSuccessReverse;\nvar $modalControls;\nvar $successTemplate;\n\nvar $confirmationModal;\n\nvar $message;\nvar templateErrorList;\n\nvar authenticityToken;\nvar memberAccountValidationId;\n\nvar _bindEvents = function() {\n\n  // Validate\n  $btnApproveValidate.on(\"click\", function() {\n    $btnApproveValidate.prop(\"disabled\", true);\n\n    $.ajax({\n      url: urlValidateTransaction,\n      method: 'POST',\n      dataType: 'json',\n      data: {\n        id: memberAccountValidationId,\n        authenticity_token: authenticityToken\n      },\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.reload();\n      },\n      error: function(response) {\n        console.log(response);\n        var errors  = [];\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnApproveValidate.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  // Check\n  $btnApproveCheck.on(\"click\", function() {\n    $btnApproveCheck.prop(\"disabled\", true);\n\n    $.ajax({\n      url: urlCheckTransaction,\n      method: 'POST',\n      dataType: 'json',\n      data: {\n        id: memberAccountValidationId,\n        authenticity_token: authenticityToken\n      },\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.reload();\n      },\n      error: function(response) {\n        console.log(response);\n        var errors  = [];\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnApproveCheck.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  // Cancel\n  $btnApproveCancellation.on(\"click\", function() {\n    $btnApproveCancellation.prop(\"disabled\", true);\n\n    $.ajax({\n      url: urlCancelTransaction,\n      method: 'POST',\n      dataType: 'json',\n      data: {\n        id: memberAccountValidationId,\n        authenticity_token: authenticityToken\n      },\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.reload();\n      },\n      error: function(response) {\n        console.log(response);\n        var errors  = [];\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnApproveCancellation.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  // Approve\n  $btnApproveConfirmation.on(\"click\", function() {\n    $btnApproveConfirmation.prop(\"disabled\", true);\n\n    $.ajax({\n      url: urlApproveTransaction,\n      method: 'POST',\n      dataType: 'json',\n      data: {\n        id: memberAccountValidationId,\n        authenticity_token: authenticityToken\n      },\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.reload();\n      },\n      error: function(response) {\n        console.log(response);\n        var errors  = [];\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnApproveConfirmation.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n\n  // check\n  $btnCheck.on(\"click\", function() {\n    $modalCheck.show();\n    $message.html(\"\");\n  });\n\n  // validate\n  $btnValidate.on(\"click\", function() {\n    $modalValidate.show();\n    $message.html(\"\");\n  });\n\n  // Approve\n  $btnApprove.on(\"click\", function() {\n    $modalApprove.show();\n    $message.html(\"\");\n  });\n\n  // Cancel\n  $btnCancel.on(\"click\", function() {\n    $modalCancel.show();\n    $message.html(\"\");\n  });\n\n  $btnReverseConfirmation.on('click', function() {\n    if(!$btnReverseConfirmation.hasClass('loading')) {\n      _addLoadingToConfirmationBtns();\n      $.ajax({\n        url:  urlReverseTransaction,\n        method: 'POST',\n        dataType: 'json',\n        data: { id: memberAccountValidationId },\n        success: function(responseContent) {\n          $modalSuccessReverse.html(Mustache.render($successTemplate.html(), { messages: [\"Successfully reversed transaction\"] }));\n          $modalControls.hide();\n          window.location.href = \"/member_account_validations/\" + memberAccountValidationId;\n        },\n        error: function(responseContent) {\n          var errorMessages = JSON.parse(responseContent.responseText).errors;\n          console.log(errorMessages);\n          $modalErrorsReverse.html(Mustache.render($errorsTemplate.html(), { errors: errorMessages }));\n          toastr.error(\"Something went wrong when trying to reverse transaction\");\n          _removeLoadingToConfirmationBtns();\n        }\n      });\n    } else {\n      toastr.error(\"Still loading\");\n    }\n  });\n\n  $btnCancelReverse.on('click', function() {\n    if($btnCancelReverse.hasClass('loading')) {\n      toastr.info(\"Still loading\");\n    } else {\n      $modalReverse.close();\n    }\n  });\n\n  $btnReverse.on('click', function() {\n    $modalSuccessApproval.html(\"\");\n    $modalErrorsReverse.html(\"\");\n    $modalReverse.open();\n  });\n}\n\nvar _cacheDom = function() {\n  $confirmationModal           = $(\"#confirmation-modal\"); \n  $btnApprove                  = $(\"#btn-approve\");\n  $btnValidate                 = $(\"#btn-validate\");\n  $btnCheck                    = $(\"#btn-check\");\n  $btnCancel                   = $(\"#btn-cancel\");\n  $btnReverse                  = $(\"#btn-reverse\");\n  $btnCancelApproval           = $(\"#btn-cancel-approval\");\n  $btnCancelValidate           = $(\"#btn-cancel-validate\");\n  $btnCancelCheck              = $(\"#btn-cancel-check\");\n  $btnCancelCancellation       = $(\"#btn-cancel-cancellation\");\n  $btnReverseConfirmation      = $(\"#btn-confirm-reversal\");\n  $btnCancelReverse            = $(\"#btn-cancel-reversal\");\n  $btnApproveConfirmation      = $(\"#btn-confirm-approval\");\n  $btnApproveValidate          = $(\"#btn-confirm-validate\");\n  $btnApproveCheck             = $(\"#btn-confirm-check\");\n  $btnApproveCancellation      = $(\"#btn-confirm-cancellation\");\n  $errors                      = $(\"#errors\");\n  $errorsTemplate              = $(\"#errors-template\");\n  \n  $modalValidate               = new bootstrap.Modal(\n    document.getElementById(\"modal-validate-confirmation\")\n  );\n  \n  // Validate\n  $modalCheck = new bootstrap.Modal(\n    document.getElementById(\"modal-check-confirmation\")\n  )\n\n  $modalCancel = new bootstrap.Modal(\n    document.getElementById(\"modal-cancel-confirmation\")\n  )\n\n  $modalApprove = new bootstrap.Modal(\n    document.getElementById(\"modal-approve-confirmation\")\n  )\n\n\n  $modalErrorsApproval          = $(\".modal-approve\").find(\".errors\");\n  $modalErrorsReverse           = $(\".modal-reverse\").find(\".errors\");\n  $modalErrorsValidate          = $(\".modal-validate\").find(\".errors\");\n  $modalErrorsCheck             = $(\".modal-check\").find(\".errors\");\n  $modalErrorsCancel            = $(\".modal-cancel\").find(\".errors\"); \n  $modalSuccessApproval         = $(\".modal-approve\").find(\".success\");\n  $modalSuccessReverse          = $(\".modal-reverse\").find(\".success\");\n  $modalControls                = $(\".modal-controls\");\n  $successTemplate              = $(\"#success-template\");\n\n  $message          = $(\".message\");\n  templateErrorList = $(\"#template-error-list\").html();\n}\n\nvar init = function(options) {\n  authenticityToken         = options.authenticityToken;\n  memberAccountValidationId = options.id;\n\n  _cacheDom();\n  _bindEvents();\n}\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\n\nvar options;\nvar memberAccountValidationId;\nvar memberAccountValidationStatus;\nvar authenticityToken;\n\nvar deleteMemberId;\n\nvar $totalRf;\nvar $total50PercentLif;\nvar $totalEquityInterest;\nvar $totalAdvanceLif;\nvar $totalAdvanceRf;\nvar $totalInterest;\nvar $grandTotal;\n\nvar $section;\nvar $btnDelete;\nvar $memberSelect;\nvar $resignationDate;\nvar $btnAddMember;\nvar $modalLoading;\nvar $modalMemberCancellation;\nvar $btnConfirmMemberCancellation;\nvar $inputDateCancelled;\nvar $inputReason;\nvar $memberClassification;\n\nvar $message;\nvar templateErrorList;\n\nvar urlDeletememberAccountValidationRecord    = \"/api/v1/member_account_validations/delete_member_account_validation_record\";\nvar urlAddMember                              = \"/api/v1/member_account_validations/add_member\";\nvar urlCancelValidation                       = \"/api/v1/member_account_validations/cancel_member\";\n\nvar _cacheDom = function() {\n  $totalRf                         = $(\".total-rf\");\n  $total50PercentLif               = $(\".total-50-percent-lif\");\n  $totalEquityInterest             = $(\".total-equity-interest\");\n  $totalAdvanceLif                 = $(\".total-advance-lif\");\n  $totalAdvanceRf                  = $(\".total-advance-rf\");\n  $totalInterest                   = $(\".total-interest\");\n  $grandTotal                      = $(\".grand-total\");\n  $section                         = $(\".transaction-table\");\n  $btnDelete                       = $(\".btn-delete\");\n  $memberSelect                    = $(\"#member-select\");\n  $memberSelect.select2({\n    allowClear: true,\n    width: \"auto\",\n    theme: \"bootstrap\"\n  });\n  $resignationDate                 = $(\"#resignation-date\");\n  $btnAddMember                    = $(\"#btn-add-member\");\n  $modalLoading                    = $(\"#modal-loading\");\n  $btnConfirmMemberCancellation    = $(\"#btn-confirm-member-cancellation\");\n  $inputDateCancelled              = $(\"#input-date-cancelled\");\n  $inputReason                     = $(\"#input-reason\");\n  $memberClassification            = $(\"#member-classification\");\n  $message                        = $(\".message\");\n  templateErrorList               = $(\"#template-error-list\").html();  \n\n  $modalMemberCancellation = new bootstrap.Modal(\n    document.getElementById(\"modal-member-cancellation\")\n  );\n};\n\nvar _bindEvents = function() {\n  $btnAddMember.on(\"click\", function() {\n    // $modalLoading.show();\n    $btnAddMember.prop(\"disabled\", true);\n    $message.html(\"Loading...\");\n\n    var memberId = $memberSelect.val();\n    var resignationDate = $resignationDate.val();\n    var memberClassification = $memberClassification.val();\n\n    $.ajax({\n      url: urlAddMember,\n      method: 'POST',\n      dataType: 'json',\n      data: {\n        id: memberAccountValidationId,\n        authenticity_token: authenticityToken,\n        member_id: memberId,\n        resignation_date: resignationDate,\n        member_classification: memberClassification\n      },\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.href = \"/member_account_validations/\" + memberAccountValidationId + \"/edit\";\n      },\n      error: function(response) {\n        console.log(response);\n        var errors  = [];\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n          $btnAddMember.prop(\"disabled\", false);\n\n          // $modalLoading.hide();\n        }\n      }\n    });\n  });\n\n  $btnDelete.on('click', function() {\n    $btnDelete.prop(\"disabled\", true);\n\n    var $btn = $(this);\n    var memberAccountValidationRecordId = $btn.data('member-account-validation-record-id');\n    var deleteMemberId = $btn.data('delete-member-id');\n\n    if (memberAccountValidationStatus == \"cancelled\"){\n      $modalMemberCancellation.show();\n\n      $btnConfirmMemberCancellation.on(\"click\", function() {\n        $btnConfirmMemberCancellation.prop(\"disabled\", true);\n\n      $.ajax({\n        url: urlCancelValidation,\n        method: 'POST',\n        dataType: 'json',\n        data: {\n          authenticity_token: authenticityToken,\n          member_id: deleteMemberId,\n          id: memberAccountValidationId,\n          date_cancelled: $inputDateCancelled.val(),\n          reason: $inputReason.val(),\n          member_account_validation_record_id: memberAccountValidationRecordId,\n        },\n        success: function(response) {\n          $message.html(\"Successfully created member account validation cancellation record\");\n          window.location.reload();\n        },\n        error: function(response) {\n          alert(date_cancelled);\n          console.log(response);\n          var errors  = [];\n          try {\n            errors  = JSON.parse(response.responseText).full_messages;\n          } catch(err) {\n            errors  = [\"Something went wrong\"];\n            console.log(err);\n          } finally {\n            console.log(errors);\n            $message.html(\n              Mustache.render(\n                templateErrorList,\n                { errors: errors }\n              )\n            );\n          }\n        }\n      });\n\n      $.ajax({\n        url: urlDeletememberAccountValidationRecord,\n        method: 'POST',\n        dataType: 'json',\n        data: { \n          authenticity_token: authenticityToken,\n          member_account_validation_record_id: memberAccountValidationRecordId \n        },\n        success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.reload();\n        },\n        error: function(response) {\n          console.log(response);\n          var errors  = [];\n          try {\n            errors  = JSON.parse(response.responseText).full_messages;\n          } catch(err) {\n            errors  = [\"Something went wrong\"];\n            console.log(err);\n          } finally {\n            console.log(errors);\n            $message.html(\n              Mustache.render(\n                templateErrorList,\n                { errors: errors }\n              )\n            );\n\n            $btnConfirmMemberCancellation.prop(\"disabled\", false);\n          }\n        }\n      });\n    });\n    }\n    else{\n      $.ajax({\n        url: urlDeletememberAccountValidationRecord,\n        method: 'POST',\n        dataType: 'json',\n        data: { \n          authenticity_token: authenticityToken,\n          member_account_validation_record_id: memberAccountValidationRecordId \n        },\n        success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.reload();\n        },\n        error: function(response) {\n          console.log(response);\n          var errors  = [];\n          try {\n            errors  = JSON.parse(response.responseText).full_messages;\n          } catch(err) {\n            errors  = [\"Something went wrong\"];\n            console.log(err);\n          } finally {\n            console.log(errors);\n            $message.html(\n              Mustache.render(\n                templateErrorList,\n                { errors: errors }\n              )\n            );\n\n            $btnDelete.prop(\"disabled\", false);\n          }\n        }\n      });\n     // end\n     }\n  });\n\n  _computeTotalRf($section);\n  _computeTotal50PercentLif($section);\n  _computeTotalEquityInterest($section);\n  _computeTotalAdvanceLif($section);\n  _computeTotalAdvanceRf($section);\n  _computeTotalInterest($section);\n  _computeTotalAmt($section);\n}\n\nvar _computeTotalRf = function($section) {\n  var totalRf = 0.00;\n\n  $.each($section.find(\".rf\"), function() {\n    totalRf += parseFloat($(this).val());\n  });\n\n  $section.find(\".total-rf\").val(totalRf);\n}\n\nvar _computeTotal50PercentLif = function($section) {\n  var total50PercentLif = 0.00;\n\n  $.each($section.find(\".lif-50-percent\"), function() {\n    total50PercentLif += parseFloat($(this).val());\n  });\n\n  $section.find(\".total-50-percent-lif\").val(total50PercentLif);\n}\n\nvar _computeTotalEquityInterest = function($section) {\n  var totalEquityInterest = 0.00;\n\n  $.each($section.find(\".equity-interest\"), function() {\n    totalEquityInterest += parseFloat($(this).val());\n  });\n\n  $section.find(\".total-equity-interest\").val(totalEquityInterest);\n}\n\nvar _computeTotalAdvanceLif = function($section) {\n  var totalAdvanceLif = 0.00;\n\n  $.each($section.find(\".advance-lif\"), function() {\n    totalAdvanceLif += parseFloat($(this).val());\n  });\n\n  $section.find(\".total-advance-lif\").val(totalAdvanceLif);\n}\n\nvar _computeTotalAdvanceRf = function($section) {\n  var totalAdvanceRf = 0.00;\n\n  $.each($section.find(\".advance-rf\"), function() {\n    totalAdvanceRf += parseFloat($(this).val());\n  });\n\n  $section.find(\".total-advance-rf\").val(totalAdvanceRf);\n}\n\nvar _computeTotalInterest = function($section) {\n  var totalInterest = 0.00;\n\n  $.each($section.find(\".interest\"), function() {\n    totalInterest += parseFloat($(this).val());\n  });\n\n  $section.find(\".total-interest\").val(totalInterest);\n}\n\nvar _computeTotalAmt = function($section) {\n  var grandTotal = 0.00;\n\n  $.each($section.find(\".total-amount\"), function() {\n    grandTotal += parseFloat($(this).val());\n  });\n\n  $section.find(\".grand-total\").val(grandTotal);\n}\n\nvar init = function(options) {\n  authenticityToken               = options.authenticityToken;\n  memberAccountValidationId       = options.id;\n  memberAccountValidationStatus   = options.memberAccountValidationStatus;\n  deleteMemberId                  = options.deleteMemberId;\n\n  _cacheDom();\n  _bindEvents();\n}\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\n\nvar $btnConfirmApprove;\nvar $btnConfirmPost;\nvar $btnConfirmCheck;\nvar $btnConfirmProceed;\nvar $btnConfirmDeclined;\nvar $btnConfirmPending;\n\nvar $btnSaveNote;\n\nvar $btnApprove;\nvar $btnPost;\nvar $btnCheck;\nvar $btnProceed;\nvar $btnDeclined;\nvar $btnPending;\n\nvar $btnNote;\nvar $inputNote;\nvar $inputDeclinedNote;\n\nvar $btnConfirmBook;\n\nvar $errors;\nvar $errorsTemplate;\nvar urlApproveTransaction     = \"/api/v1/claims/approve\";\nvar urlPostTransaction        = \"/api/v1/claims/post\";\nvar urlCheckTransaction       = \"/api/v1/claims/check\";\nvar urlProceedTransaction     = \"/api/v1/claims/proceed\";\nvar urlDeclinedTransaction    = \"/api/v1/claims/declined\";\nvar urlPendingTransaction     = \"/api/v1/claims/pending\";\nvar urlModifyClaimsTemplate   = \"/api/v1/claims/modify_claims_template\";\nvar urlModifyBook             = \"/api/v1/claims/modify_book\";\nvar urlModifyParticular       = \"/api/v1/claims/modify_particular\";\nvar urlSaveCheckNumber        = \"/api/v1/claims/save_check_number\";\nvar urlSaveCheckVoucherNumber = \"/api/v1/claims/save_check_voucher_number\";\nvar urlSavePayee              = \"/api/v1/claims/save_payee\";\nvar urlSaveNote               = \"/api/v1/claims/save_note\";\nvar urlSaveDatePaid           = \"/api/v1/claims/save_date_paid\";\nvar urlAddTransactionFee      = \"/api/v1/claims/add_transaction_fee\";\n\nvar $modalApprove;\nvar $modalCheck;\nvar $modalProceed;\nvar $modalDeclined;\nvar $modalPost;\nvar $modalPending;\n\nvar $modalNote;\n\nvar $errors;\nvar $errorsTemplate;\nvar $modalErrorsApproval;\nvar $modalErrorsChecking;\nvar $modalErrorsProceeding;\nvar $modalErrorsDeclining;\nvar $modalErrorsPosting;\nvar $modalErrorsPending;\nvar $modalSuccessApproval;\nvar $modalSuccessChecking;\nvar $modalSuccessProceeding;\nvar $modalSuccessDeclining;\nvar $modalSuccessPosting;\nvar $modalSuccessPending;\nvar $modalControls;\nvar $successTemplate;\n\nvar $confirmationModal;\n\nvar $message;\nvar templateErrorList;\n\nvar authenticityToken;\nvar claimId;\n\nvar $selectClaimsTemplate;\nvar $btnConfirmBook;\n\nvar $selectBook;\nvar $btnConfirmClaimsTemplate;\n\nvar $inputTextParticular;\nvar $btnConfirmParticular;\n\nvar $btnConfirmTransactionFee;\nvar $inputTextTransactionFee;\n\nvar $inputTextPayee;\nvar $btnConfirmPayee;\n\nvar $inputTextCheckNumber;\nvar $btnConfirmCheckNumber;\n\nvar $inputTextCheckVoucherNumber;\nvar $btnConfirmCheckVoucherNumber;\n\nvar $inputDatePaid;\nvar $btnConfirmDatePaid;\n\nvar $btnPrint;\nvar $btnDailyReport;\n\nvar $modalPrint;\nvar $printMessage;\n\nvar loader;\n\nvar _bindEvents = function() {\n\n  // Check\n  $btnConfirmCheck.on(\"click\", function() {\n    $btnConfirmCheck.prop(\"disabled\", true);\n\n    $.ajax({\n      url: urlCheckTransaction,\n      method: 'POST',\n      dataType: 'json',\n      data: {\n        id: claimId,\n        authenticity_token: authenticityToken\n      },\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.reload();\n      },\n      error: function(response) {\n        console.log(response);\n        var errors  = [];\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmCheck.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  // Proceed\n  $btnConfirmProceed.on(\"click\", function() {\n    $btnConfirmProceed.prop(\"disabled\", true);\n\n    $.ajax({\n      url: urlProceedTransaction,\n      method: 'POST',\n      dataType: 'json',\n      data: {\n        id: claimId,\n        authenticity_token: authenticityToken\n      },\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.reload();\n      },\n      error: function(response) {\n        console.log(response);\n        var errors  = [];\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmProceed.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  // Declined\n  $btnConfirmDeclined.on(\"click\", function() {\n    var declinedNote  = $inputDeclinedNote.val();\n\n    $message.html(\"Loading...\");\n\n    $btnConfirmDeclined.prop(\"disabled\", true);\n    $inputDeclinedNote.prop(\"disabled\", true);\n    \n    $.ajax({\n      url: urlDeclinedTransaction,\n      method: 'POST',\n      dataType: 'json',\n      data: {\n        id: claimId,\n        declined_note: declinedNote,\n        authenticity_token: authenticityToken\n      },\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.reload();\n      },\n      error: function(response) {\n        console.log(response);\n        var errors  = [];\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $inputDeclinedNote.prop(\"disabled\", false);\n          $btnConfirmDeclined.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  // Pending\n  $btnConfirmPending.on(\"click\", function() {\n    $btnConfirmPending.prop(\"disabled\", true);\n\n    $.ajax({\n      url: urlPendingTransaction,\n      method: 'POST',\n      dataType: 'json',\n      data: {\n        id: claimId,\n        authenticity_token: authenticityToken\n      },\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.reload();\n      },\n      error: function(response) {\n        console.log(response);\n        var errors  = [];\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmPending.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  // Approve\n  $btnConfirmApprove.on(\"click\", function() {\n    $btnConfirmApprove.prop(\"disabled\", true);\n\n    $.ajax({\n      url: urlApproveTransaction,\n      method: 'POST',\n      dataType: 'json',\n      data: {\n        id: claimId,\n        authenticity_token: authenticityToken\n      },\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.reload();\n      },\n      error: function(response) {\n        console.log(response);\n        var errors  = [];\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmApprove.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  // POST\n  $btnConfirmPost.on(\"click\", function() {\n    $btnConfirmPost.prop(\"disabled\", true);\n\n    $.ajax({\n      url: urlPostTransaction,\n      method: 'POST',\n      dataType: 'json',\n      data: {\n        id: claimId,\n        authenticity_token: authenticityToken\n      },\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        // window.location.reload();\n        window.location.href=\"/claims\";\n      },\n      error: function(response) {\n        console.log(response);\n        var errors  = [];\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmPost.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  $btnConfirmClaimsTemplate.on(\"click\", function() {\n    var template  = $selectClaimsTemplate.val();\n\n    $message.html(\"Loading...\");\n\n    $selectClaimsTemplate.prop(\"disabled\", true);\n    $btnConfirmClaimsTemplate.prop(\"disabled\", true);\n\n    $.ajax({\n      url: urlModifyClaimsTemplate,\n      method: 'POST',\n      data: { \n        id: claimId,\n        template: template,\n        authenticity_token: authenticityToken\n      },\n      success: function(response) {\n        $message.html(\n          \"Success! Redirecting...\"\n        );\n\n        window.location.reload();\n      },\n      error: function(response) {\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $selectClaimsTemplate.prop(\"disabled\", false);\n          $btnConfirmClaimsTemplate.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  $btnConfirmParticular.on(\"click\", function() {\n    var particular  = $inputTextParticular.val();\n\n    $message.html(\"Loading...\");\n\n    $inputTextParticular.prop(\"disabled\", true);\n    $btnConfirmParticular.prop(\"disabled\", true);\n\n    $.ajax({\n      url: urlModifyParticular,\n      method: 'POST',\n      data: { \n        id: claimId,\n        particular: particular,\n        authenticity_token: authenticityToken\n      },\n      success: function(response) {\n        $message.html(\n          \"Success! Redirecting...\"\n        );\n\n        window.location.reload();\n      },\n      error: function(response) {\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $inputTextParticular.prop(\"disabled\", false);\n          $btnConfirmParticular.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  $btnConfirmTransactionFee.on(\"click\", function() {\n    var transaction_fee  = $inputTextTransactionFee.val();\n\n    $message.html(\"Loading...\");\n\n    $inputTextTransactionFee.prop(\"disabled\", true);\n    $btnConfirmTransactionFee.prop(\"disabled\", true);\n\n    $.ajax({\n      url: urlAddTransactionFee,\n      method: 'POST',\n      data: { \n        id: claimId,\n        transaction_fee: transaction_fee,\n        authenticity_token: authenticityToken\n      },\n      success: function(response) {\n        $message.html(\n          \"Success! Redirecting...\"\n        );\n\n        window.location.reload();\n      },\n      error: function(response) {\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $inputTextTransactionFee.prop(\"disabled\", false);\n          $btnConfirmTransactionFee.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  $btnConfirmPayee.on(\"click\", function() {\n    var payee  = $inputTextPayee.val();\n\n    $message.html(\"Loading...\");\n\n    $inputTextPayee.prop(\"disabled\", true);\n    $btnConfirmPayee.prop(\"disabled\", true);\n\n    $.ajax({\n      url: urlSavePayee,\n      method: 'POST',\n      data: { \n        id: claimId,\n        payee: payee,\n        authenticity_token: authenticityToken\n      },\n      success: function(response) {\n        $message.html(\n          \"Success! Redirecting...\"\n        );\n\n        window.location.reload();\n      },\n      error: function(response) {\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $inputTextPayee.prop(\"disabled\", false);\n          $btnConfirmPayee.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  $btnConfirmCheckNumber.on(\"click\", function() {\n    var check_number  = $inputTextCheckNumber.val();\n\n    $message.html(\"Loading...\");\n\n    $inputTextCheckNumber.prop(\"disabled\", true);\n    $btnConfirmCheckNumber.prop(\"disabled\", true);\n\n    $.ajax({\n      url: urlSaveCheckNumber,\n      method: 'POST',\n      data: { \n        id: claimId,\n        check_number: check_number,\n        authenticity_token: authenticityToken\n      },\n      success: function(response) {\n        $message.html(\n          \"Success! Redirecting...\"\n        );\n\n        window.location.reload();\n      },\n      error: function(response) {\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $inputTextCheckNumber.prop(\"disabled\", false);\n          $btnConfirmCheckNumber.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  $btnConfirmCheckVoucherNumber.on(\"click\", function() {\n    var check_voucher_number  = $inputTextCheckVoucherNumber.val();\n\n    $message.html(\"Loading...\");\n\n    $inputTextCheckVoucherNumber.prop(\"disabled\", true);\n    $btnConfirmCheckVoucherNumber.prop(\"disabled\", true);\n\n    $.ajax({\n      url: urlSaveCheckVoucherNumber,\n      method: 'POST',\n      data: { \n        id: claimId,\n        check_voucher_number: check_voucher_number,\n        authenticity_token: authenticityToken\n      },\n      success: function(response) {\n        $message.html(\n          \"Success! Redirecting...\"\n        );\n\n        window.location.reload();\n      },\n      error: function(response) {\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $inputTextCheckVoucherNumber.prop(\"disabled\", false);\n          $btnConfirmCheckVoucherNumber.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  $btnConfirmBook.on(\"click\", function() {\n    var book  = $selectBook.val();\n\n    $message.html(\"Loading...\");\n\n    $selectBook.prop(\"disabled\", true);\n    $btnConfirmBook.prop(\"disabled\", true);\n\n    $.ajax({\n      url: urlModifyBook,\n      method: 'POST',\n      data: { \n        id: claimId,\n        book: book,\n        authenticity_token: authenticityToken\n      },\n      success: function(response) {\n        $message.html(\n          \"Success! Redirecting...\"\n        );\n\n        window.location.reload();\n      },\n      error: function(response) {\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $selectBook.prop(\"disabled\", false);\n          $btnConfirmBook.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  $btnConfirmDatePaid.on(\"click\", function() {\n    var date_paid  = $inputDatePaid.val();\n\n    $message.html(\"Loading...\");\n\n    $inputDatePaid.prop(\"disabled\", true);\n    $btnConfirmDatePaid.prop(\"disabled\", true);\n\n    $.ajax({\n      url: urlSaveDatePaid,\n      method: 'POST',\n      data: { \n        id: claimId,\n        date_paid: date_paid,\n        authenticity_token: authenticityToken\n      },\n      success: function(response) {\n        $message.html(\n          \"Success! Redirecting...\"\n        );\n\n        window.location.reload();\n      },\n      error: function(response) {\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $inputDatePaid.prop(\"disabled\", false);\n          $btnConfirmDatePaid.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n\n  $btnSaveNote.on(\"click\", function() {\n    var note  = $inputNote.val();\n\n    $message.html(\"Loading...\");\n\n    $inputNote.prop(\"disabled\", true);\n    $btnSaveNote.prop(\"disabled\", true);\n\n    $.ajax({\n      url: urlSaveNote,\n      method: 'POST',\n      data: { \n        id: claimId,\n        note: note,\n        authenticity_token: authenticityToken\n      },\n      success: function(response) {\n        $message.html(\n          \"Success! Redirecting...\"\n        );\n\n        window.location.reload();\n      },\n      error: function(response) {\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $inputNote.prop(\"disabled\", false);\n          $btnSaveNote.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  // check\n  $btnCheck.on(\"click\", function() {\n    $modalCheck.show();\n    $message.html(\"\");\n  });\n\n  // proceed\n  $btnProceed.on(\"click\", function() {\n    $modalProceed.show();\n    $message.html(\"\");\n  });\n\n  // declined\n  $btnDeclined.on(\"click\", function() {\n    $modalDeclined.show();\n    $message.html(\"\");\n  });\n\n  // Add note\n  $btnNote.on(\"click\", function() {\n    $modalNote.show();\n    $message.html(\"\");\n  });\n\n  // Approve\n  $btnApprove.on(\"click\", function() {\n    $modalApprove.show();\n    $message.html(\"\");\n  });\n\n  // Post\n  $btnPost.on(\"click\", function() {\n    $modalPost.show();\n    $message.html(\"\");\n  });\n\n  // Pending\n  $btnPending.on(\"click\", function() {\n    $modalPending.show();\n    $message.html(\"\");\n  });\n\n  $btnPrint.on(\"click\", function() {\n    var accountingEntryId = $btnPrint.data('id');\n    var cId = $btnPrint.data('cid');\n\n    $modalPrint.show();\n    $printMessage.html(\n      Mustache.render(\n        loader,\n        {}\n      )\n    );\n\n    $modalPrint.hide();\n    window.open(\"/print?id=\" + accountingEntryId + \"&type=claims_voucher\" + \"&cid=\" + cId);\n  });\n\n  $btnDailyReport.on(\"click\", function() {\n    window.open(\"/print?type=claims_daily_report\");\n  });\n}\n\nvar _cacheDom = function() {\n  $confirmationModal            = $(\"#confirmation-modal\"); \n  $btnApprove                   = $(\"#btn-approve\");\n  $btnCheck                     = $(\"#btn-check\");\n  $btnProceed                   = $(\"#btn-proceed\");\n  $btnDeclined                  = $(\"#btn-declined\");\n  $btnPost                      = $(\"#btn-post\");\n  $btnPending                   = $(\"#btn-pending\");\n\n  $btnNote                      = $(\"#btn-note\");\n\n  $btnConfirmApprove            = $(\"#btn-confirm-approval\");\n  $btnConfirmCheck              = $(\"#btn-confirm-check\");\n  $btnConfirmProceed            = $(\"#btn-confirm-proceed\");\n  $btnConfirmDeclined           = $(\"#btn-confirm-declined\");\n  $btnConfirmPost               = $(\"#btn-confirm-posting\");\n  $btnConfirmPending            = $(\"#btn-confirm-pending\");\n\n  $btnSaveNote                  = $(\"#btn-save-note\");\n  $inputNote                    = $(\"#input-note\");\n\n  $inputDeclinedNote            = $(\"#input-declined-note\");\n\n  $errors                       = $(\"#errors\");\n  $errorsTemplate               = $(\"#errors-template\");\n  \n  // Validate\n  $modalNote = new bootstrap.Modal(\n    document.getElementById(\"modal-note\")\n  );\n  $modalPending = new bootstrap.Modal(\n    document.getElementById(\"modal-pending-confirmation\")\n  );\n  $modalPost = new bootstrap.Modal(\n    document.getElementById(\"modal-post-confirmation\")\n  );\n  $modalApprove = new bootstrap.Modal(\n    document.getElementById(\"modal-approve-confirmation\")\n  );\n  $modalDeclined = new bootstrap.Modal(\n    document.getElementById(\"modal-declined-confirmation\")\n  );\n  $modalProceed = new bootstrap.Modal(\n    document.getElementById(\"modal-proceed-confirmation\")\n  );\n  $modalCheck = new bootstrap.Modal(\n    document.getElementById(\"modal-check-confirmation\")\n  );\n\n  \n  $modalErrorsApproval          = $(\".modal-approve\").find(\".errors\");\n  $modalErrorsChecking          = $(\".modal-check\").find(\".errors\");\n  $modalErrorsProceeding        = $(\".modal-proceed\").find(\".errors\");\n  $modalErrorsDeclining         = $(\".modal-declined\").find(\".errors\");\n  $modalErrorsPosting           = $(\".modal-post\").find(\".errors\");\n  $modalErrorsPending           = $(\".modal-pending\").find(\".errors\");\n\n  $modalSuccessApproval         = $(\".modal-approve\").find(\".success\");\n  $modalSuccessChecking         = $(\".modal-check\").find(\".success\");\n  $modalSuccessProceeding       = $(\".modal-proceed\").find(\".success\");\n  $modalSuccessDeclining       = $(\".modal-declined\").find(\".success\");\n  $modalSuccessPosting          = $(\".modal-post\").find(\".success\");\n  $modalSuccessPending          = $(\".modal-pending\").find(\".success\");\n\n  $modalControls                = $(\".modal-controls\");\n  $successTemplate              = $(\"#success-template\");\n\n  $message                      = $(\".message\");\n  templateErrorList             = $(\"#template-error-list\").html();\n\n  $selectClaimsTemplate         = $(\"#select-claims-template\");\n  $btnConfirmClaimsTemplate     = $(\"#btn-confirm-claims-template\");\n\n  $inputTextParticular          = $(\"#input-text-particular\");\n  $btnConfirmParticular         = $(\"#btn-confirm-particular\");\n\n  $inputDatePaid                = $(\"#input-date-date-paid\");\n  $btnConfirmDatePaid           = $(\"#btn-confirm-date-paid\");\n\n  $btnConfirmTransactionFee     = $(\"#btn-confirm-transaction-fee\");\n  $inputTextTransactionFee      = $(\"#input-text-transaction-fee\");\n\n  $inputTextPayee               = $(\"#input-text-payee\");\n  $btnConfirmPayee              = $(\"#btn-confirm-payee\");\n\n  $inputTextCheckNumber         = $(\"#input-text-check-number\");\n  $btnConfirmCheckNumber        = $(\"#btn-confirm-check-number\");\n\n  $inputTextCheckVoucherNumber  = $(\"#input-text-check-voucher-number\");\n  $btnConfirmCheckVoucherNumber = $(\"#btn-confirm-check-voucher-number\");\n\n  $selectBook                   = $(\"#select-book\");\n  $btnConfirmBook               = $(\"#btn-confirm-book\");\n\n  $btnPrint                     = $(\"#btn-print\");\n  $btnDailyReport               = $(\"#btn-daily-report\");\n  $modalPrint                   = $(\"#modal-print\");\n  $printMessage                 = $(\".print-message\");\n\n  loader                        = $(\"#template-loader\").html();\n}\n\nvar init = function(options) {\n  authenticityToken  = options.authenticityToken;\n  claimId            = options.id;\n\n  _cacheDom();\n  _bindEvents();\n}\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\n\nvar $downloadBtn;\nvar $status;\nvar $startDate;\nvar $endDate;\nvar $brachSelect;\nvar authenticityToken;\n\nvar encodeQueryData = function(data) {\n  var ret = []\n  for(var d in data) {\n    ret.push(encodeURIComponent(d) + \"=\" + encodeURIComponent(data[d]));\n  }\n\n  return ret.join(\"&\");\n};\n\n\nvar _bindEvents = function() {\n  $downloadBtn.on('click', function() {\n    var data = {\n      authenticity_token: authenticityToken,\n      status: $status.val(),\n      start_date: $startDate.val(),\n      end_date: $endDate.val(),\n      branch: $brachSelect.val(),\n    };\n\n    var newLocation = \"/pages/validations_report?\" + encodeQueryData(data);\n    window.location = newLocation;\n  });\n};\n\nvar _cacheDom = function() {\n  $downloadBtn       = $(\"#download-btn\");\n  $status            = $(\"#status\");\n  $startDate         = $(\"#start-date\");\n  $endDate           = $(\"#end-date\");\n  $brachSelect       = $(\"#branch-select\");\n};\n\nvar init = function(config) {\n  authenticityToken  = config.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n};\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\n\nvar $btnApprove;\nvar $btnConfirmApprove;\nvar $btnPrint;\nvar $modalApprove;\nvar $modalPrint;\nvar $message;\nvar $printMessage;\n\nvar $btnAdjustDatePosted;\nvar $btnConfirmAdjustDatePosted;\nvar $modalAdjustDatePosted;\nvar $inputAdjustDatePosted;\n\nvar templateErrorList;\nvar loader;\n\nvar _authenticityToken;\n\nvar accountingEntryId;\n\nvar _cacheDom = function() {\n  $modalApprove = new bootstrap.Modal(\n    document.getElementById(\"modal-approve\")\n  )\n  $btnApprove         = $(\"#btn-approve\");\n  $btnConfirmApprove  = $(\"#btn-confirm-approve\");\n  $btnPrint           = $(\"#btn-print\");\n  $modalPrint         = $(\"#modal-print\");\n  $message            = $(\".message\");\n  $printMessage       = $(\".print-message\");\n\n  $btnAdjustDatePosted        = $(\"#btn-adjust-date-posted\");\n  $btnConfirmAdjustDatePosted = $(\"#btn-confirm-adjust-date-posted\");\n  $modalAdjustDatePosted      = new bootstrap.Modal(\n    document.getElementById(\"modal-adjust-date-posted\")\n  )\n  $inputAdjustDatePosted      = $(\"#input-adjust-date-posted\");\n\n  templateErrorList = $(\"#template-error-list\").html();\n  loader            = $(\"#template-loader\").html();\n};\n\nvar _bindEvents = function() {\n  $btnAdjustDatePosted.on(\"click\", function() {\n    accountingEntryId = $(this).data('id');\n    $modalAdjustDatePosted.show();\n  });\n\n  $btnConfirmAdjustDatePosted.on(\"click\", function() {\n    var datePosted  = $inputAdjustDatePosted.val();\n\n    $btnConfirmAdjustDatePosted.prop(\"disabled\", true);\n    $inputAdjustDatePosted.prop(\"disabled\", true);\n\n    $.ajax({\n      url: \"/api/v1/accounting_entries/modify_date_posted\",\n      method: 'POST',\n      data: {\n        id: accountingEntryId,\n        date_posted: datePosted,\n        authenticity_token: _authenticityToken\n      },\n      success: function(response) {\n        $message.html(\"Success! Reloading...\");\n        window.location.reload();\n      },\n      error: function(response) {\n        console.log(response);\n        var errors  = [];\n\n        try {\n          errors  = JSON.parse(response.responseText).errors.full_messages;\n        } catch(e) {\n          errors  = [\"Something went wrong\"];\n        }\n\n        $message.html(\n          Mustache.render(\n            templateErrorList,\n            { errors: errors }\n          )\n        );\n\n        $btnConfirmAdjustDatePosted.prop(\"disabled\", false);\n        $inputAdjustDatePosted.prop(\"disabled\", false);\n      }\n    });\n  });\n\n  $btnPrint.on(\"click\", function() {\n    var accountingEntryId = $btnPrint.data('id');\n\n    $modalPrint.show();\n    $printMessage.html(\n      Mustache.render(\n        loader,\n        {}\n      )\n    );\n\n    $modalPrint.hide();\n    window.open(\"/print?id=\" + accountingEntryId + \"&type=accounting_entry\");\n  });\n\n  $btnApprove.on(\"click\", function() {\n    accountingEntryId  = $(this).data(\"id\");\n    $modalApprove.show();\n  });\n\n  $btnConfirmApprove.on(\"click\", function() {\n    $btnConfirmApprove.prop(\"disabled\", true);\n\n    $message.html(\"Loading...\");\n\n    $.ajax({\n      url: \"/api/v1/accounting_entries/approve\",\n      method: \"POST\",\n      dataType: 'json',\n      data: {\n        id: accountingEntryId,\n        authenticity_token: _authenticityToken\n      },\n      success: function(response) {\n        window.location.reload();\n        $message.html(\n          Mustache.render(\n            templateErrorList,\n            { errors: errors }\n          )\n        );\n      },\n      error: function(response) {\n        console.log(response);\n        var errors  = [];\n\n        try {\n          errors  = JSON.parse(response.responseText).errors.full_messages;\n        } catch(e) {\n          errors  = [\"Something went wrong\"];\n        }\n\n        $message.html(\n          Mustache.render(\n            templateErrorList,\n            { errors: errors }\n          )\n        );\n\n        $btnConfirmApprove.prop(\"disabled\", false);\n      }\n    });\n  });\n};\n\nvar init  = function(config) {\n  _authenticityToken  = config.authenticityToken;\n  \n  _cacheDom();\n  _bindEvents();\n};\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\n\nvar $downloadBtn;\nvar $branchSelect;\nvar $insuranceStatusSelect;\nvar $generateBtn;\n\nvar insuranceAccountStatusReportUrl  = \"/api/v1/pages/insurance_account_status_reports\";\nvar branch;\nvar $insuranceAccountStatusReportTemplate;\nvar $insuranceAccountStatusReportSection;\n\nvar _cacheDom = function() {\n  $generateBtn = $(\"#generate-btn\");\n  $downloadBtn = $(\"#download-btn\");\n  $insuranceAccountStatusReportTemplate = $(\"#insurance-account-status-report-template\").html();\n  $insuranceAccountStatusReportSection   = $(\"#insurance-account-status-report-section\");\n  $branchSelect = $(\"#branch-select\");\n  $insuranceStatusSelect = $(\"#insurance-status-select\");\n}\n\nvar encodeQueryData = function(data) {\n  var ret = []\n  for(var d in data) {\n    ret.push(encodeURIComponent(d) + \"=\" + encodeURIComponent(data[d]));\n  }\n\n  return ret.join(\"&\");\n};\n\nvar _bindEvents = function() {\n  $downloadBtn.on('click', function() {\n    var data = {\n      branch: $branchSelect.val(),\n      insurance_status: $insuranceStatusSelect.val(),\n    };\n\n    window.location = \"/pages/daily_report_insurance_account_status_excel?\" + encodeQueryData(data);\n  });\n\n  $generateBtn.on('click', function() {\n    $generateBtn.addClass('loading');\n    branch = $branchSelect.val();\n\n    var params = {\n      branch: branch,\n      insurance_status: $insuranceStatusSelect.val(),\n    };\n\n    $.ajax({\n      url: insuranceAccountStatusReportUrl,\n      method: 'GET',\n      dataType: 'json',\n      data: params,\n      success: function(data) {\n        console.log(data);\n        $insuranceAccountStatusReportSection.html(Mustache.render($insuranceAccountStatusReportTemplate, data));\n\n        $insuranceAccountStatusReportSection.find(\".curr\").each(function() {\n          $(this).html(numberWithCommas($(this).html()));\n        });\n\n        $generateBtn.removeClass('loading');\n      },\n      error: function(data) {\n        $generateBtn.removeClass('loading');\n      }\n    });\n  });\n};\n\n\nvar init = function(config) {\n  _cacheDom();\n  _bindEvents();\n};\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\n\nvar $downloadBtn;\nvar $asOf;\nvar $brachSelect;\n\nvar authenticityToken;\n\nvar _cacheDom = function() {\n  $downloadBtn       = $(\"#download-btn\");\n  $asOf              = $(\"#as-of\");\n  $brachSelect       = $(\"#branch-select\");\n};\n\nvar encodeQueryData = function(data) {\n  var ret = []\n  for(var d in data) {\n    ret.push(encodeURIComponent(d) + \"=\" + encodeURIComponent(data[d]));\n  }\n\n  return ret.join(\"&\");\n};\n\nvar _bindEvents = function() {\n  $downloadBtn.on('click', function() {\n    var data = {\n      authenticity_token: authenticityToken,\n      as_of: $asOf.val(),\n      branch: $brachSelect.val(),\n    };\n\n    window.location = \"/pages/seriatim_report?\" + encodeQueryData(data);\n  });\n};\n\nvar init = function(config) {\n  authenticityToken  = config.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n};\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\n\nvar $btnDelete;\nvar $btnConfirmDelete;\nvar $modalDelete;\n\nvar $btnPrerequisite;\nvar $btnConfirmPrerequisite;\nvar $modalPrerequisite;\nvar $selectLoanProduct;\n\nvar $btnMaintainingBalance;\nvar $btnConfirmMaintainingBalance;\nvar $modalMaintainingBalance;\nvar $inputMaintainingBalance;\n\nvar $message;\n\nvar id;\nvar authenticityToken;\n\nvar templateErrorList;\n\nvar _urlDelete                    = \"/api/v1/administration/loan_products/delete\";\nvar _urlModifyPrerequisite        = \"/api/v1/administration/loan_products/modify_prerequisite\";\nvar _urlModifyMaintainingBalance  = \"/api/v1/administration/loan_products/modify_maintaining_balance\";\n\nvar _cacheDom = function() {\n  $btnDelete        = $(\"#btn-delete\");\n  $btnConfirmDelete = $(\"#btn-confirm-delete\");\n  $modalDelete      = $(\"#modal-delete\");\n\n  $btnPrerequisite        = $(\"#btn-prerequisite\");\n  $btnConfirmPrerequisite = $(\"#btn-confirm-prerequisite\");\n  $modalPrerequisite      = $(\"#modal-prerequisite\");\n  $selectLoanProduct      = $(\"#select-loan-product\");\n\n  $btnMaintainingBalance        = $(\"#btn-maintaining-balance\");\n  $btnConfirmMaintainingBalance = $(\"#btn-confirm-maintaining-balance\");\n  $modalMaintainingBalance      = $(\"#modal-maintaining-balance\");\n  $inputMaintainingBalance      = $(\"#input-maintaining-balance\");\n\n  templateErrorList = $(\"#template-error-list\").html();\n\n  $message  = $(\".message\");\n};\n\nvar _bindEvents = function() {\n  $btnMaintainingBalance.on(\"click\", function() {\n    $modalMaintainingBalance.show();\n    $message.html(\"\");\n  });\n\n  $btnConfirmMaintainingBalance.on(\"click\", function() {\n    $btnConfirmMaintainingBalance.prop(\"disabled\", true);\n\n    var maintainingBalance  = $inputMaintainingBalance.val();\n\n    $.ajax({\n      url: _urlModifyMaintainingBalance,\n      method: 'POST',\n      dataType: 'json',\n      data: {\n        id: id,\n        maintaining_balance: maintainingBalance,\n        authenticity_token: authenticityToken\n      },\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.reload();\n      },\n      error: function(response) {\n        console.log(response);\n        var errors  = [];\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmMaintainingBalance.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  $btnPrerequisite.on(\"click\", function() {\n    $modalPrerequisite.show();\n    $message.html(\"\");\n  });\n\n  $btnConfirmPrerequisite.on(\"click\", function() {\n    $btnConfirmPrerequisite.prop(\"disabled\", true);\n\n    var loanProductId = $selectLoanProduct.val();\n\n    $.ajax({\n      url: _urlModifyPrerequisite,\n      method: 'POST',\n      dataType: 'json',\n      data: {\n        id: id,\n        loan_product_id: loanProductId,\n        authenticity_token: authenticityToken\n      },\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.reload();\n      },\n      error: function(response) {\n        console.log(response);\n        var errors  = [];\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmPrerequisite.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  $btnDelete.on(\"click\", function() {\n    $modalDelete.show();\n    $message.html(\"\");\n  });\n\n  $btnConfirmDelete.on(\"click\", function() {\n    $btnConfirmDelete.prop(\"disabled\", true);\n\n    $.ajax({\n      url: _urlDelete,\n      method: 'POST',\n      dataType: 'json',\n      data: {\n        id: id,\n        authenticity_token: authenticityToken\n      },\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.reload();\n      },\n      error: function(response) {\n        console.log(response);\n        var errors  = [];\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmDelete.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n};\n\nvar init  = function(options) {\n  id                = options.id;\n  authenticityToken = options.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n};\n\nexport default { init: init };\n", "import $ from \"jquery\";\n\nvar $btnUpload;\nvar $btnConfirmUpload;\nvar $modalUpload;\n\nvar $message;\nvar templateErrorList;\n\nvar authenticityToken;\n\nvar init  = function(config) {\n  authenticityToken = config.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n}\n\nvar _cacheDom = function(config) {\n  $btnUpload        = $(\"#btn-upload\");\n  $btnConfirmUpload = $(\"#btn-confirm-upload\");\n  $modalUpload      = $(\"#modal-upload\");\n}\n\nvar _bindEvents = function(config) {\n  $btnUpload.on(\"click\", function() {\n    $message.html(\"\");\n    $modalUpload.show();\n  });\n}\n\nexport default { init: init };\n", "import $ from \"jquery\";\n//import DataTable from \"datatables.net\";\n//DataTable($);\n\nvar $dataTable;\n\nvar init  = function() {\n  _cacheDom();\n  _bindEvents();\n};\n\nvar _cacheDom = function() {\n  $dataTable  = $(\"#data-table\");\n};\n\nvar _bindEvents = function() {\n  /*\n  $dataTable.DataTable({\n    fixedHeader: true\n  });\n  */\n};\n\nexport default { init: init };\n", "import $ from \"jquery\";\nimport DataTable from \"datatables.net\";\n///DataTable($);\n\nvar $dataTable;\n\nvar init  = function() {\n  _cacheDom();\n  _bindEvents();\n};\n\nvar _cacheDom = function() {\n  $dataTable  = $(\"#data-table\");\n};\n\nvar _bindEvents = function() {\n  /*\n  $dataTable.DataTable({\n    fixedHeader: true\n  });\n  */\n};\n\nexport default { init: init };\n", "import $ from \"jquery\";\nimport DataTable from \"datatables.net\";\n//DataTable($);\n\nvar $dataTable;\n\nvar init  = function() {\n  _cacheDom();\n  _bindEvents();\n};\n\nvar _cacheDom = function() {\n  $dataTable  = $(\"#data-table\");\n};\n\nvar _bindEvents = function() {\n  /*\n  $dataTable.DataTable({\n    fixedHeader: true\n  });\n  */\n};\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\n\nvar $btnNew;\nvar $btnConfirmNew;\nvar $inputName;\nvar $modalNew;\nvar $message;\n\nvar templateErrorList;\n\nvar authenticityToken;\n\nvar urlNew  = \"/api/v1/administration/surveys/save\";\n\nvar _cacheDom = function() {\n  $btnNew         = $(\"#btn-new\");\n  $btnConfirmNew  = $(\"#btn-confirm-new\");\n  $inputName      = $(\"#input-name\");\n  $modalNew       = $(\"#modal-new\");\n\n  $message          = $(\".message\");\n  templateErrorList = $(\"#template-error-list\").html();\n}\n\nvar _bindEvents = function() {\n  $btnNew.on(\"click\", function() {\n    $modalNew.show();\n    $message.html(\"\");\n  });\n\n  $btnConfirmNew.on(\"click\", function() {\n    var name  = $inputName.val();\n\n    $btnConfirmNew.prop(\"disabled\", true);\n    $inputName.prop(\"disabled\", true);\n\n    $.ajax({\n      url: urlNew,\n      method: 'POST',\n      data: {\n        authenticity_token: authenticityToken,\n        name: name\n      },\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.href = \"/administration/surveys/\" + response.id;\n      },\n      error: function(response) {\n        console.log(response);\n        var errors  = [];\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmNew.prop(\"disabled\", false);\n          $inputName.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n}\n\nvar init  = function(options) {\n  authenticityToken = options.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n}\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\n\nvar $btnDelete;\nvar $btnConfirmDelete;\nvar $modalDelete;\nvar $message;\n\nvar $btnDeleteQuestion;\nvar $btnConfirmDeleteQuestion;\nvar $modalDeleteQuestion;\n\nvar id;\nvar authenticityToken;\nvar templateErrorList;\n\nvar surveyQuestionId  = -1;\n\nvar urlDelete = \"/api/v1/administration/surveys/delete\";\n\nvar _cacheDom = function() {\n  $btnDelete        = $(\"#btn-delete\");\n  $btnConfirmDelete = $(\"#btn-confirm-delete\");\n  $modalDelete      = $(\"#modal-delete\");\n\n  $btnDeleteQuestion        = $(\".btn-delete-question\");\n  $btnConfirmDeleteQuestion = $(\"#btn-confirm-delete-question\");\n  $modalDeleteQuestion      = $(\"#modal-delete-question\");\n\n  $message          = $(\".message\");\n  templateErrorList = $(\"#template-error-list\").html();\n};\n\nvar _bindEvents = function() {\n  $btnDeleteQuestion.on(\"click\", function() {\n    surveyQuestionId  = $(this).data(\"id\");\n\n    $modalDeleteQuestion.show();\n    $message.html(\"\");\n  });\n\n  $btnConfirmDeleteQuestion.on(\"click\", function() {\n    $btnConfirmDeleteQuestion.prop(\"disabled\", true);\n    $message.html(\"Loading...\");\n\n    $.ajax({\n      url: \"/api/v1/administration/survey_questions/delete\",\n      method: 'POST',\n      data: {\n        id: surveyQuestionId,\n        authenticity_token: authenticityToken\n      },\n      success: function(response) {\n        $message.html(\"Success!\");\n        window.location.reload();\n      },\n      error: function(response) {\n        console.log(response);\n        var errors  = [];\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmDeleteQuestion.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  $btnDelete.on(\"click\", function() {\n    $modalDelete.show();\n    $message.html(\"\");\n  });\n\n  $btnConfirmDelete.on(\"click\", function() {\n    $btnConfirmDelete.prop(\"disabled\", true);\n\n    $.ajax({\n      url: urlDelete,\n      method: 'POST',\n      data: {\n        authenticity_token: authenticityToken,\n        id: id\n      },\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.href = \"/administration/surveys\";\n      },\n      error: function(response) {\n        console.log(response);\n        var errors  = [];\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmDelete.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n};\n\nvar init  = function(options) {\n  id                  = options.id;\n  authenticityToken = options.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n};\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\n\nvar memberSharesId;\nvar forMba;\nvar forCoop;\n\nvar $btnPrint;\nvar $modalPrint;\nvar $message;\n\nvar authenticityToken;\n\nvar _cacheDom = function() {\n  $btnPrint   = $(\"#btn-print\");\n  $modalPrint = $(\"#modal-print\");\n\n  $message   = $(\".message\");\n};\n\nvar _bindEvents = function() {\n  $btnPrint.on(\"click\", function() {\n    $modalPrint.show();\n\n    var id    = $(this).data(\"id\");\n    \n    if (forCoop == true){\n      var type  = \"member_share\";\n    } else if(forMba == true){\n      var type  = \"member_share_for_mba\"\n    }\n\n    $modalPrint.hide();\n    window.open(\"/print?type=\" + type + \"&id=\" + id);\n  });\n};\n\nvar init  = function(options) {\n  authenticityToken = options.authenticityToken;\n  memberSharesId    = options.id;\n  forMba            = options.forMba\n  forCoop           = options.forCoop\n  _cacheDom();\n  _bindEvents();\n};\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\n\nvar options;\nvar memberSharesId;\nvar recognitionDate;\nvar identificationNumber;\nvar authenticityToken;\n\nvar $certificateFor;\nvar $certificateNumber;\nvar $dateOfIssue;\n\nvar _cacheDom = function() {\n  $certificateFor                  = $(\"#certificate-for\");\n  $certificateNumber               = $(\"#certificate-number\");\n  $dateOfIssue                     = $(\"#date-of-issue\");\n\n};\n\nvar _bindEvents = function() {\n  $certificateFor.on('change', function() { \n    var cFor = $certificateFor.val();\n    if (cFor == \"KMBA\"){\n      $('#certificate-number').val(identificationNumber);\n      $('#date-of-issue').val(recognitionDate);\n    } else{\n      $('#certificate-number').val('');\n      $('#date-of-issue').val('');\n    }\n  }); \n}\n\nvar init = function(options) {\n  authenticityToken    = options.authenticityToken;\n  memberSharesId       = options.id;\n  identificationNumber = options.identificationNumber\n  recognitionDate      = options.recognitionDate\n\n  _cacheDom();\n  _bindEvents();\n}\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\n\nvar $btnPrint;\nvar $modalPrint;\nvar $printMessage;\nvar loader;\n\nvar _cacheDom = function() {\n  $btnPrint           = $('#btn-print-sc');\n  $modalPrint         = $(\"#modal-print\");\n  $printMessage       = $(\".print-message\");\n  loader            = $(\"#template-loader\").html();\n};\n\nvar _bindEvents = function() {\n  $btnPrint.on(\"click\", function() {\n    const urlParams = new URLSearchParams(window.location.search);\n    const branchId = urlParams.get('branch_id');\n    const centerId = urlParams.get('center_id');\n    const startDate = urlParams.get('start_date');\n    const endDate = urlParams.get('end_date');\n\n    window.open(\"/print?type=print_share_certificate&branch_id=\"+branchId+\"&center_id=\"+centerId+\"&start_date=\"+startDate+\"&end_date=\"+endDate);\n\n    // wait to load the page\n    window.onload = function() {\n      // Your code here\n      // var adjustment_record = $btnPrint.data('id');\n      $modalPrint.show();\n      $printMessage.html(\n        Mustache.render(\n          loader,\n          {}\n        )\n      );\n\n      $modalPrint.hide();\n      };\n  });\n};\n\nvar init  = function(options) {\n  _authenticityToken  = options.authenticityToken; \n  _id                 = options.id;\n\n  _cacheDom();\n  _bindEvents();\n};\n\nexport default { init: init };", "import $ from \"jquery\";\nvar $center;\nvar $btnDownload;\n\nvar urlExportBillingPerCenter = \"/exports/billing_per_center\";\n\nvar encodeQueryData = function(data) {\n  var ret = []\n  for(var d in data) {\n    ret.push(encodeURIComponent(d) + \"=\" + encodeURIComponent(data[d]));\n  }\n\n  return ret.join(\"&\");\n};\n\nvar init  = function() {\n  $center       = $(\"#select-center\");\n  $btnDownload  = $(\"#download-btn\");\n\n  $btnDownload.on('click', function() {\n    var params    = {\n      center_id: $center.val()\n    }\n\n    window.location = urlExportBillingPerCenter + \"?\" + encodeQueryData(params);\n  });\n};\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\n\nvar authenticityToken;\n\nvar $modalNew;\nvar $btnNew;\nvar $btnConfirmNew;\n\nvar $selectBranch;\nvar $inputAsOf;\n\nvar $message;\nvar templateErrorList;\n\nvar _cacheDom = function() {\n  $modalNew      = new bootstrap.Modal(\n    document.getElementById(\"modal-new\")\n\n  );\n  $btnNew        = $(\"#btn-new\");\n  $btnConfirmNew = $(\"#btn-confirm-new\");\n\n  $selectBranch = $(\"#select-branch\");\n  $inputAsOf      = $(\"#input-as-of\");\n\n  $message          = $(\".message\");\n  templateErrorList = $(\"#template-error-list\").html();\n}\n\nvar _bindEvents = function() {\n  $btnNew.on(\"click\", function() {\n    $modalNew.show();\n    $message.html(\"\");\n  });\n\n  $btnConfirmNew.on(\"click\", function() {\n    var asOf      = $inputAsOf.val();\n    var branchId  = $selectBranch.val();\n\n    $message.html(\"Loading...\");\n    $btnConfirmNew.prop(\"disabled\", true);\n    $selectBranch.prop(\"disabled\", true);\n    $inputAsOf.prop(\"disabled\", true);\n\n    var data  = {\n      as_of: asOf,\n      branch_id: branchId,\n      authenticity_token: authenticityToken\n    }\n\n    $.ajax({\n      url: \"/api/v1/data_stores/monthly_new_and_resigned/queue\",\n      method: 'POST',\n      data: data,\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.href=\"/data_stores/monthly_new_and_resigned\";\n      },\n      error: function(response) {\n        $message.html(\"Something went wrong...\");\n        $btnConfirmNew.prop(\"disabled\", false);\n        $selectBranch.prop(\"disabled\", false);\n        $inputAsOf.prop(\"disabled\", false);\n      }\n    });\n  });\n}\n\nvar init  = function(config) {\n  authenticityToken = config.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n}\n\nexport default { init: init };\n", "import Mustsache from \"mustache\";\nimport $ from \"jquery\";\n\nvar $branch;\nvar $startDate;\nvar $endDate;\nvar $btnDownloadMember;\nvar $btnDownloadBeneficiary;\nvar $btnDownloadDependent;\nvar $btnDownloadMemberAccount;\nvar $btnDownloadAccountTransaction;\nvar $btnDownloadMemberPerBranch;\nvar $btnDownloadMembersWithBenefeciaries;\n\nvar urlExportMember                   = \"/exports/members\";\nvar urlExportBeneficiary              = \"/exports/beneficiaries\";\nvar urlExportLegalDependent           = \"/exports/legal_dependents\";\nvar urlExportMemberAccount            = \"/exports/member_accounts\";\nvar urlExportAccountTransaction       = \"/exports/account_transactions\";\nvar urlExportMemberPerBranch          = \"/exports/members_per_branch_excel\";\nvar urlExportMembersWithBeneficiaries = \"/exports/members_with_beneficiaries_excel\";\n\nvar encodeQueryData = function(data) {\n  var ret = []\n  for(var d in data) {\n    ret.push(encodeURIComponent(d) + \"=\" + encodeURIComponent(data[d]));\n  }\n\n  return ret.join(\"&\");\n};\n\nvar _cacheDom = function() {\n  $branch = $(\"#select-branch\");\n  $startDate = $(\"#filter-start-date\");\n  $endDate = $(\"#filter-end-date\");\n  $btnDownloadMember  = $(\"#export-member-segment-csv\").find(\".btn-download-members-csv\");\n  $btnDownloadBeneficiary  = $(\"#export-member-segment-csv\").find(\".btn-download-beneficiaries-csv\");\n  $btnDownloadDependent  = $(\"#export-member-segment-csv\").find(\".btn-download-dependents-csv\");\n  $btnDownloadMemberAccount  = $(\"#export-transaction-segment-csv\").find(\".btn-download-member-accounts-csv\");\n  $btnDownloadAccountTransaction  = $(\"#export-transaction-segment-csv\").find(\".btn-download-account-transactions-csv\");\n  $btnDownloadMemberPerBranch = $(\"#export-member-per-branch-segment\").find(\".btn-download-member-per-branch\");\n  $btnDownloadMembersWithBenefeciaries = $(\"#export-members-with-beneficiaries-segment\").find(\".btn-download-members-with-beneficiaries\");\n};\n\nvar init  = function() {\n  _cacheDom();\n\n  $btnDownloadMembersWithBenefeciaries.on('click', function() {\n    var params    = {\n      start_date:  $startDate.val(),\n      end_date:  $endDate.val(),\n      branch: $branch.val()\n    }\n\n    window.location = urlExportMembersWithBeneficiaries + \"?\" + encodeQueryData(params);\n  });\n\n  $btnDownloadMemberPerBranch.on('click', function() {      \n    var params    = {\n      start_date:  $startDate.val(),\n      end_date:  $endDate.val(),\n      branch_id: $branch.val()\n    }\n\n    window.location = urlExportMemberPerBranch + \"?\" + encodeQueryData(params);\n  });\n\n  $btnDownloadBeneficiary.on('click', function() {\n    var params    = {\n      start_date:  $startDate.val(),\n      end_date:  $endDate.val(),\n      branch: $branch.val()\n    }\n\n    window.location = urlExportBeneficiary + \"?\" + encodeQueryData(params);\n  });\n\n  $btnDownloadDependent.on('click', function() {\n    var params    = {\n      start_date:  $startDate.val(),\n      end_date:  $endDate.val(),\n      branch: $branch.val()\n    }\n\n    window.location = urlExportLegalDependent + \"?\" + encodeQueryData(params);\n  });\n\n\n  $btnDownloadMemberAccount.on('click', function() {\n    var params    = {\n      start_date:  $startDate.val(),\n      end_date:  $endDate.val(),\n      branch: $branch.val()\n    }\n\n    window.location = urlExportMemberAccount + \"?\" + encodeQueryData(params);\n  });\n\n\n  $btnDownloadAccountTransaction.on('click', function() {\n    var params    = {\n      start_date:  $startDate.val(),\n      end_date:  $endDate.val(),\n      branch: $branch.val()\n    }\n\n    window.location = urlExportAccountTransaction + \"?\" + encodeQueryData(params);\n  });\n\n  $btnDownloadMember.on('click', function() {\n    var params    = {\n      start_date:  $startDate.val(),\n      end_date:  $endDate.val(),\n      branch: $branch.val()\n    }\n\n    window.location = urlExportMember + \"?\" + encodeQueryData(params);\n  });\n\n};\n\nexport default { init: init };\n", "import $ from \"jquery\";\nimport Mustache from \"mustache\";  \n\nvar authenticityToken;\n\nvar $modalNew;\nvar $btnNew;\nvar $btnConfirmNew;\n\nvar $selectBranch;\nvar $inputAsOf;\n\nvar $message;\nvar templateErrorList;\n\nvar _urlQueue;\nvar _userId;\nvar _xKoinsAppAuthSecret;\n\nvar _cacheDom = function() {\n  $modalNew      = $(\"#modal-new\");\n  $btnNew        = $(\"#btn-new\");\n  $btnConfirmNew = $(\"#btn-confirm-new\");\n\n  $selectBranch   = $(\"#select-branch\");\n  $inputAsOf      = $(\"#input-as-of\");\n\n  $message          = $(\".message\");\n  templateErrorList = $(\"#template-error-list\").html();\n}\n\nvar _bindEvents = function() {\n  $btnNew.on(\"click\", function() {\n    $modalNew.show();\n    $message.html(\"\");\n  });\n\n  $btnConfirmNew.on(\"click\", function() {\n    var asOf      = $inputAsOf.val();\n    var branchId  = $selectBranch.val();\n\n    $message.html(\"Loading...\");\n    $btnConfirmNew.prop(\"disabled\", true);\n    $selectBranch.prop(\"disabled\", true);\n    $inputAsOf.prop(\"disabled\", true);\n\n    var data  = {\n      as_of: asOf,\n      branch_id: branchId,\n      authenticity_token: authenticityToken,\n      user_id: _userId\n    }\n\n    $.ajax({\n      url: _urlQueue,\n      method: 'POST',\n      headers: {\n        'X-KOINS-APP-AUTH-SECRET': _xKoinsAppAuthSecret,\n        'Access-Control-Allow-Methods': '*',\n        'Access-Control-Allow-Headers': '*',\n        'Access-Control-Allow-Origin': '*',\n        'Access-Control-Allow-Credentials': 'true'\n      },\n      data: data,\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.href=\"/data_stores/repayment_rates\";\n      },\n      error: function(response) {\n        console.log(response.responseText);\n        var errors  = [];\n\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          console.log(err);\n          errors  = [\"Something went wrong\"];\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmNew.prop(\"disabled\", false);\n          $selectBranch.prop(\"disabled\", false);\n          $inputAsOf.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n}\n\nvar init  = function(config) {\n  authenticityToken     = config.authenticityToken;\n  _urlQueue             = config.urlQueue;\n  _userId               = config.userId;\n  _xKoinsAppAuthSecret  = config.xKoinsAppAuthSecret;\n\n  _cacheDom();\n  _bindEvents();\n}\n\nexport default { init: init };\n", "import Mustache from \"mustache\";  \nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\n\nvar authenticityToken;\n\nvar $modalNew;\nvar $btnNew;\nvar $btnConfirmNew;\n\nvar $selectBranch;\nvar $inputAsOf;\n\nvar $message;\nvar templateErrorList;\n\nvar _cacheDom = function() {\n  $modalNew      = new bootstrap.Modal(\n    document.getElementById(\"modal-new\")\n\n  );\n  $btnNew        = $(\"#btn-new\");\n  $btnConfirmNew = $(\"#btn-confirm-new\");\n\n  $selectBranch   = $(\"#select-branch\");\n  $inputAsOf      = $(\"#input-as-of\");\n\n  $message          = $(\".message\");\n  templateErrorList = $(\"#template-error-list\").html();\n}\n\nvar _bindEvents = function() {\n  $btnNew.on(\"click\", function() {\n    $modalNew.show();\n    $message.html(\"\");\n  });\n\n  $btnConfirmNew.on(\"click\", function() {\n    var asOf      = $inputAsOf.val();\n    var branchId  = $selectBranch.val();\n\n    $message.html(\"Loading...\");\n    $btnConfirmNew.prop(\"disabled\", true);\n    $selectBranch.prop(\"disabled\", true);\n    $inputAsOf.prop(\"disabled\", true);\n\n    var data  = {\n      as_of: asOf,\n      branch_id: branchId,\n      authenticity_token: authenticityToken\n    }\n\n    $.ajax({\n      url: \"/api/v1/data_stores/manual_aging/queue\",\n      method: 'POST',\n      data: data,\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.href=\"/data_stores/manual_aging\";\n      },\n      error: function(response) {\n        console.log(response.responseText);\n        var errors  = [];\n\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          console.log(err);\n          errors  = [\"Something went wrong\"];\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmNew.prop(\"disabled\", false);\n          $selectBranch.prop(\"disabled\", false);\n          $inputAsOf.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n}\n\nvar init  = function(config) {\n  authenticityToken = config.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n}\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\n\nvar authenticityToken;\n\nvar $modalNew;\nvar $btnNew;\nvar $btnConfirmNew;\n\nvar $selectBranch;\nvar $inputAsOf;\n\nvar $message;\nvar templateErrorList;\n\nvar _urlQueue;\nvar _userId;\nvar _xKoinsAppAuthSecret;\n\nvar _cacheDom = function() {\n  $modalNew      = new bootstrap.Modal(\n    document.getElementById(\"modal-new\")\n\n  );\n  $btnNew        = $(\"#btn-new\");\n  $btnConfirmNew = $(\"#btn-confirm-new\");\n\n  $selectBranch = $(\"#select-branch\");\n  $inputAsOf    = $(\"#input-as-of\");\n\n  $message          = $(\".message\");\n  templateErrorList = $(\"#template-error-list\").html();\n}\n\nvar _bindEvents = function() {\n  $btnNew.on(\"click\", function() {\n    \n    $modalNew.show();\n    //$message.html(\"\");\n  });\n\n  $btnConfirmNew.on(\"click\", function() {\n    var asOf      = $inputAsOf.val();\n    var branchId  = $selectBranch.val();;\n\n    $message.html(\"Loading...\");\n    $btnConfirmNew.prop(\"disabled\", true);\n    $selectBranch.prop(\"disabled\", true);\n    $inputAsOf.prop(\"disabled\", true);\n\n    var data  = {\n      as_of: asOf,\n      branch_id: branchId,\n      authenticity_token: authenticityToken,\n      user_id: _userId\n    }\n\n    $.ajax({\n      url: _urlQueue,\n      method: 'POST',\n      headers: {\n        'X-KOINS-APP-AUTH-SECRET': _xKoinsAppAuthSecret,\n        'Access-Control-Allow-Methods': '*',\n        'Access-Control-Allow-Headers': '*',\n        'Access-Control-Allow-Origin': '*',\n        'Access-Control-Allow-Credentials': 'true'\n      },\n      data: data,\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.href=\"/data_stores/personal_funds\";\n      },\n      error: function(response) {\n        var errors  = [];\n\n        try {\n          console.log(response);\n          errors  = JSON.parse(response.responseText).errors.full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"]\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmNew.prop(\"disabled\", false);\n          $selectBranch.prop(\"disabled\", false);\n          $inputAsOf.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n}\n\nvar init  = function(config) {\n  authenticityToken     = config.authenticityToken;\n  _urlQueue             = config.urlQueue;\n  _userId               = config.userId;\n  _xKoinsAppAuthSecret  = config.xKoinsAppAuthSecret;\n\n  _cacheDom();\n  _bindEvents();\n}\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\n\nvar id;\nvar authenticityToken;\n\nvar $modalUpdate;\nvar $btnUpdate;\nvar $btnConfirmUpdate;\n\nvar $message;\nvar templateErrorList;\n\nvar _cacheDom = function() {\n  $modalUpdate      = $(\"#modal-update\");\n  $btnUpdate        = $(\"#btn-update\");\n  $btnConfirmUpdate = $(\"#btn-confirm-update\");\n\n  $message          = $(\".message\");\n  templateErrorList = $(\"#template-error-list\").html();\n}\n\nvar _bindEvents = function() {\n  $btnUpdate.on(\"click\", function() {\n    $modalUpdate.show();\n    $message.html(\"\");\n  });\n\n  $btnConfirmUpdate.on(\"click\", function() {\n    $message.html(\"Loading...\");\n    $btnConfirmUpdate.prop(\"disabled\", true);\n\n    var data  = {\n      id: id,\n      authenticity_token: authenticityToken\n    }\n\n    $.ajax({\n      url: \"/api/v1/data_stores/personal_funds/queue\",\n      method: 'POST',\n      data: data,\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.href=\"/data_stores/personal_funds\";\n      },\n      error: function(response) {\n        $message.html(\"Something went wrong...\");\n        $btnConfirmUpdate.prop(\"disabled\", false);\n      }\n    });\n  });\n}\n\nvar init  = function(config) {\n  id                = config.id;\n  authenticityToken = config.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n}\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\nimport select2 from 'select2';\n\nvar authenticityToken;\n\nvar $modalNew;\nvar $btnNew;\nvar $btnConfirmNew;\n\nvar $selectBranch;\nvar $inputAsOf;\nvar $selectMemberStatus;\n\nvar $modalGenerateAll;\nvar $btnGenerateAll;\nvar $btnConfirmGenerateAll;\n\nvar $inputAsOfGenerateAll;\n\nvar $message;\nvar templateErrorList;\n\nvar _urlQueue;\nvar _urlQueueBulk;\nvar _userId;\nvar _xKoinsAppAuthSecret;\n\nvar _cacheDom = function() {\n  $modalNew      = new bootstrap.Modal(\n    document.getElementById(\"modal-new\")\n\n  );\n\n  $btnNew        = $(\"#btn-new\");\n  $btnConfirmNew = $(\"#btn-confirm-new\");\n\n  $selectBranch = $(\"#select-branch\");\n  $inputAsOf    = $(\"#input-as-of\");\n  $selectMemberStatus = $(\"#select-member-status\");\n  \n    \n  $modalGenerateAll     = new bootstrap.Modal(\n    document.getElementById(\"modal-generate-all\")\n\n  );\n  $btnGenerateAll        = $(\"#btn-generate-all\");\n  $btnConfirmGenerateAll = $(\"#btn-confirm-generate-all\");\n\n  $inputAsOfGenerateAll    = $(\"#input-as-of-generate-all\");\n\n  $message          = $(\".message\");\n  templateErrorList = $(\"#template-error-list\").html();\n}\n\nvar _bindEvents = function() {\n  $btnNew.on(\"click\", function() {\n    $modalNew.show();\n    $message.html(\"\");\n  });\n\n  $btnConfirmNew.on(\"click\", function() {\n    var asOf      = $inputAsOf.val();\n    var branchId  = $selectBranch.val();\n    var memberStatus = $selectMemberStatus.val();\n\n    $message.html(\"Loading...\");\n    $btnConfirmNew.prop(\"disabled\", true);\n    $selectBranch.prop(\"disabled\", true);\n    $selectMemberStatus.prop(\"disabled\", true);\n    $inputAsOf.prop(\"disabled\", true);\n\n    var data  = {\n      as_of: asOf,\n      branch_id: branchId,\n      member_status: memberStatus,\n      authenticity_token: authenticityToken,\n      user_id: _userId\n    }\n\n    $.ajax({\n      url: _urlQueue,\n      method: 'POST',\n      headers: {\n        'X-KOINS-APP-AUTH-SECRET': _xKoinsAppAuthSecret,\n        'Access-Control-Allow-Methods': '*',\n        'Access-Control-Allow-Headers': '*',\n        'Access-Control-Allow-Origin': '*',\n        'Access-Control-Allow-Credentials': 'true'\n      },\n      data: data,\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.href=\"/data_stores/insurance_personal_funds\";\n      },\n      error: function(response) {\n        var errors  = [];\n\n        try {\n          console.log(response);\n          errors  = JSON.parse(response.responseText).errors.full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"]\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmNew.prop(\"disabled\", false);\n          $selectBranch.prop(\"disabled\", false);\n          $selectMemberStatus.prop(\"disabled\", false);\n          $inputAsOf.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  $btnGenerateAll.on(\"click\", function() {\n    $modalGenerateAll.show();\n    $message.html(\"\");\n  });\n\n  $btnConfirmGenerateAll.on(\"click\", function() {\n    var asOfGenerateAll     = $inputAsOfGenerateAll.val();\n\n    $message.html(\"Loading...\");\n    $btnConfirmGenerateAll.prop(\"disabled\", true);\n    $inputAsOfGenerateAll.prop(\"disabled\", true);\n\n    var data  = {\n      as_of: asOfGenerateAll,\n      user_id: _userId\n    }\n\n    $.ajax({\n      url: _urlQueueBulk,\n      method: 'POST',\n      headers: {\n        'X-KOINS-APP-AUTH-SECRET': _xKoinsAppAuthSecret,\n        'Access-Control-Allow-Methods': '*',\n        'Access-Control-Allow-Headers': '*',\n        'Access-Control-Allow-Origin': '*',\n        'Access-Control-Allow-Credentials': 'true'\n      },\n      data: data,\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.href=\"/data_stores/insurance_personal_funds\";\n      },\n      error: function(response) {\n        var errors  = [];\n\n        try {\n          console.log(response);\n          errors  = JSON.parse(response.responseText).errors.full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"]\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmGenerateAll.prop(\"disabled\", false);\n          $inputAsOfGenerateAll.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n}\n\nvar init  = function(config) {\n  authenticityToken     = config.authenticityToken;\n  _urlQueue             = config.urlQueue;\n  _urlQueueBulk         = config.urlQueueBulk;\n  _userId               = config.userId;\n  _xKoinsAppAuthSecret  = config.xKoinsAppAuthSecret;\n\n  _cacheDom();\n  _bindEvents();\n}\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\n\nvar id;\nvar authenticityToken;\n\nvar $modalUpdate;\nvar $btnUpdate;\nvar $btnConfirmUpdate;\n\nvar $message;\nvar templateErrorList;\n\nvar _cacheDom = function() {\n  $modalUpdate      = $(\"#modal-update\");\n  $btnUpdate        = $(\"#btn-update\");\n  $btnConfirmUpdate = $(\"#btn-confirm-update\");\n\n  $message          = $(\".message\");\n  templateErrorList = $(\"#template-error-list\").html();\n}\n\nvar _bindEvents = function() {\n  $btnUpdate.on(\"click\", function() {\n    $modalUpdate.show();\n    $message.html(\"\");\n  });\n\n  $btnConfirmUpdate.on(\"click\", function() {\n    $message.html(\"Loading...\");\n    $btnConfirmUpdate.prop(\"disabled\", true);\n\n    var data  = {\n      id: id,\n      authenticity_token: authenticityToken\n    }\n\n    $.ajax({\n      url: \"/api/v1/data_stores/insurance_personal_funds/queue\",\n      method: 'POST',\n      data: data,\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.href=\"/data_stores/insurance_personal_funds\";\n      },\n      error: function(response) {\n        $message.html(\"Something went wrong...\");\n        $btnConfirmUpdate.prop(\"disabled\", false);\n      }\n    });\n  });\n}\n\nvar init  = function(config) {\n  id                = config.id;\n  authenticityToken = config.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n}\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\n\nvar authenticityToken;\n\nvar $modalNew;\nvar $btnNew;\nvar $btnConfirmNew;\n\nvar $selectBranch;\nvar $inputAsOf;\n\nvar $message;\nvar templateErrorList;\n\nvar _cacheDom = function() {\n  $modalNew      = $(\"#modal-new\");\n  $btnNew        = $(\"#btn-new\");\n  $btnConfirmNew = $(\"#btn-confirm-new\");\n\n  $selectBranch = $(\"#select-branch\");\n  $inputAsOf    = $(\"#input-as-of\");\n\n  $message          = $(\".message\");\n  templateErrorList = $(\"#template-error-list\").html();\n}\n\nvar _bindEvents = function() {\n  $btnNew.on(\"click\", function() {\n    $modalNew.show();\n    $message.html(\"\");\n  });\n\n  $btnConfirmNew.on(\"click\", function() {\n    var asOf      = $inputAsOf.val();\n    var branchId  = $selectBranch.val();;\n\n    $message.html(\"Loading...\");\n    $btnConfirmNew.prop(\"disabled\", true);\n    $selectBranch.prop(\"disabled\", true);\n    $inputAsOf.prop(\"disabled\", true);\n\n    var data  = {\n      as_of: asOf,\n      branch_id: branchId,\n      authenticity_token: authenticityToken\n    }\n\n    $.ajax({\n      url: \"/api/v1/data_stores/branch_loans_stats/queue\",\n      method: 'POST',\n      data: data,\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.href=\"/data_stores/branch_loans_stats\";\n      },\n      error: function(response) {\n        $message.html(\"Something went wrong...\");\n        $btnConfirmNew.prop(\"disabled\", false);\n        $selectBranch.prop(\"disabled\", false);\n        $inputAsOf.prop(\"disabled\", false);\n      }\n    });\n  });\n}\n\nvar init  = function(config) {\n  authenticityToken = config.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n}\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\n\nvar id;\nvar authenticityToken;\n\nvar $modalUpdate;\nvar $btnUpdate;\nvar $btnConfirmUpdate;\n\nvar $message;\nvar templateErrorList;\n\nvar _cacheDom = function() {\n  $btnPrintPdf      = $(\"#print_loanstats\")\n  $btnDLExcel    = $(\"#excel_loanstats\")\n  $modalUpdate      = $(\"#modal-update\");\n  $btnUpdate        = $(\"#btn-update\");\n  $btnConfirmUpdate = $(\"#btn-confirm-update\");\n\n  $message          = $(\".message\");\n  templateErrorList = $(\"#template-error-list\").html();\n  \n}\n\n\n\nvar _bindEvents = function() {\n  $btnUpdate.on(\"click\", function() {\n    $modalUpdate.show();\n    $message.html(\"\");\n  });\n\n  $btnConfirmUpdate.on(\"click\", function() {\n    $message.html(\"Loading...\");\n    $btnConfirmUpdate.prop(\"disabled\", true);\n\n    var data  = {\n      id: id,\n      authenticity_token: authenticityToken\n    }\n\n    $.ajax({\n      url: \"/api/v1/data_stores/branch_loans_stats/queue\",\n      method: 'POST',\n      data: data,\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.href=\"/data_stores/branch_loans_stats\";\n      },\n      error: function(response) {\n        $message.html(\"Something went wrong...\");\n        $btnConfirmUpdate.prop(\"disabled\", false);\n      }\n    });\n  });\n\n    $btnPrintPdf.on(\"click\", function() {\n      var print_mi = $btnPrintPdf.data('id');\n    console.log(\"test\");\n      window.open(\"/print?id=\" + print_mi + \"&type=print_loan_stats\");\n    });\n\n    $btnDLExcel.on(\"click\", function() {\n      var print_mi = $btnDLExcel.data('id');\n    console.log(print_mi);\n        window.location = \"/reports/loan_stats_excel?id=\" + print_mi;\n      }\n\n      // window.open(\"/print?id=\" + print_mi + \"&type=print_loan_stats\");\n    );\n\n}\n\nvar init  = function(config) {\n  id                = config.id;\n  authenticityToken = config.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n}\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\n\nvar authenticityToken;\n\nvar $modalNew;\nvar $btnNew;\nvar $btnConfirmNew;\n\nvar $selectBranch;\nvar $inputAsOf;\n\nvar $message;\nvar templateErrorList;\n\nvar _urlQueue;\nvar _userId;\nvar _xKoinsAppAuthSecret;\n\nvar _cacheDom = function() {\n  $modalNew      = $(\"#modal-new\");\n  $btnNew        = $(\"#btn-new\");\n  $btnConfirmNew = $(\"#btn-confirm-new\");\n\n  $selectBranch = $(\"#select-branch\");\n  $inputAsOf      = $(\"#input-as-of\");\n\n  $message          = $(\".message\");\n  templateErrorList = $(\"#template-error-list\").html();\n}\n\nvar _bindEvents = function() {\n  $btnNew.on(\"click\", function() {\n    $modalNew.show();\n    $message.html(\"\");\n  });\n\n  $btnConfirmNew.on(\"click\", function() {\n    var asOf      = $inputAsOf.val();\n    var branchId  = $selectBranch.val();\n\n    $message.html(\"Loading...\");\n    $btnConfirmNew.prop(\"disabled\", true);\n    $selectBranch.prop(\"disabled\", true);\n    $inputAsOf.prop(\"disabled\", true);\n\n    var data  = {\n      as_of: asOf,\n      branch_id: branchId,\n      user_id: _userId,\n      authenticity_token: authenticityToken\n    }\n\n    $.ajax({\n      url: _urlQueue,\n      method: 'POST',\n      headers: {\n        'X-KOINS-APP-AUTH-SECRET': _xKoinsAppAuthSecret,\n        'Access-Control-Allow-Methods': '*',\n        'Access-Control-Allow-Headers': '*',\n        'Access-Control-Allow-Origin': '*',\n        'Access-Control-Allow-Credentials': 'true'\n      },\n      data: data,\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.href=\"/data_stores/member_counts\";\n      },\n      error: function(response) {\n        $message.html(\"Something went wrong...\");\n        $btnConfirmNew.prop(\"disabled\", false);\n        $selectBranch.prop(\"disabled\", false);\n        $inputAsOf.prop(\"disabled\", false);\n      }\n    });\n  });\n}\n\nvar init  = function(config) {\n  authenticityToken = config.authenticityToken;\n  _urlQueue             = config.urlQueue;\n  _userId               = config.userId;\n  _xKoinsAppAuthSecret  = config.xKoinsAppAuthSecret;\n\n  _cacheDom();\n  _bindEvents();\n}\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\n\nvar id;\nvar authenticityToken;\n\nvar $dataTable;\n\nvar $message;\nvar templateErrorList;\n\nvar _cacheDom = function() {\n  $dataTable  = $(\".data-table\");\n\n  $message          = $(\".message\");\n  templateErrorList = $(\"#template-error-list\").html();\n}\n\nvar _bindEvents = function() {\n  $dataTable.dataTable({\n    fixedHeader: true\n  });\n}\n\nvar init  = function(config) {\n  id                = config.id;\n  authenticityToken = config.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n}\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\n\nvar authenticityToken;\n\nvar $modalNew;\nvar $btnNew;\nvar $btnConfirmNew;\n\nvar $selectBranch;\nvar $inputAsOf;\n\nvar $message;\nvar templateErrorList;\n\nvar _cacheDom = function() {\n  $modalNew      = $(\"#modal-new\");\n  $btnNew        = $(\"#btn-new\");\n  $btnConfirmNew = $(\"#btn-confirm-new\");\n\n  $selectBranch = $(\"#select-branch\");\n  $inputAsOf      = $(\"#input-as-of\");\n\n  $message          = $(\".message\");\n  templateErrorList = $(\"#template-error-list\").html();\n}\n\nvar _bindEvents = function() {\n  $btnNew.on(\"click\", function() {\n    $modalNew.show();\n    $message.html(\"\");\n  });\n\n  $btnConfirmNew.on(\"click\", function() {\n    var asOf      = $inputAsOf.val();\n    var branchId  = $selectBranch.val();\n\n    $message.html(\"Loading...\");\n    $btnConfirmNew.prop(\"disabled\", true);\n    $selectBranch.prop(\"disabled\", true);\n    $inputAsOf.prop(\"disabled\", true);\n\n    var data  = {\n      as_of: asOf,\n      branch_id: branchId,\n      authenticity_token: authenticityToken\n    }\n\n    $.ajax({\n      url: \"/api/v1/data_stores/insurance_member_counts/queue\",\n      method: 'POST',\n      data: data,\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.href=\"/data_stores/insurance_member_counts\";\n      },\n      error: function(response) {\n        $message.html(\"Something went wrong...\");\n        $btnConfirmNew.prop(\"disabled\", false);\n        $selectBranch.prop(\"disabled\", false);\n        $inputAsOf.prop(\"disabled\", false);\n      }\n    });\n  });\n}\n\nvar init  = function(config) {\n  authenticityToken = config.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n}\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\n\nvar id;\nvar authenticityToken;\n\nvar $dataTable;\n\nvar $message;\nvar templateErrorList;\n\nvar _cacheDom = function() {\n  $dataTable  = $(\".data-table\");\n\n  $message          = $(\".message\");\n  templateErrorList = $(\"#template-error-list\").html();\n}\n\nvar _bindEvents = function() {\n  $dataTable.dataTable({\n    fixedHeader: true\n  });\n}\n\nvar init  = function(config) {\n  id                = config.id;\n  authenticityToken = config.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n}\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\n\nvar authenticityToken;\n\nvar $modalNew;\nvar $btnNew;\nvar $btnConfirmNew;\n\nvar $selectBranch;\nvar $inputAsOf;\n\nvar $message;\nvar templateErrorList;\n\nvar _cacheDom = function() {\n  $modalNew      = $(\"#modal-new\");\n  $btnNew        = $(\"#btn-new\");\n  $btnConfirmNew = $(\"#btn-confirm-new\");\n\n  $selectBranch = $(\"#select-branch\");\n  $inputAsOf      = $(\"#input-as-of\");\n\n  $message          = $(\".message\");\n  templateErrorList = $(\"#template-error-list\").html();\n}\n\nvar _bindEvents = function() {\n  $btnNew.on(\"click\", function() {\n    $modalNew.show();\n    $message.html(\"\");\n  });\n\n  $btnConfirmNew.on(\"click\", function() {\n    var asOf      = $inputAsOf.val();\n    var branchId  = $selectBranch.val();\n\n    $message.html(\"Loading...\");\n    $btnConfirmNew.prop(\"disabled\", true);\n    $selectBranch.prop(\"disabled\", true);\n    $inputAsOf.prop(\"disabled\", true);\n\n    var data  = {\n      as_of: asOf,\n      branch_id: branchId,\n      authenticity_token: authenticityToken\n    }\n\n    $.ajax({\n      url: \"/api/v1/data_stores/claims_counts/queue\",\n      method: 'POST',\n      data: data,\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.href=\"/data_stores/claims_counts\";\n      },\n      error: function(response) {\n        $message.html(\"Something went wrong...\");\n        $btnConfirmNew.prop(\"disabled\", false);\n        $selectBranch.prop(\"disabled\", false);\n        $inputAsOf.prop(\"disabled\", false);\n      }\n    });\n  });\n}\n\nvar init  = function(config) {\n  authenticityToken = config.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n}\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\n\nvar id;\nvar authenticityToken;\n\nvar $dataTable;\n\nvar $message;\nvar templateErrorList;\n\nvar _cacheDom = function() {\n  $dataTable  = $(\".data-table\");\n\n  $message          = $(\".message\");\n  templateErrorList = $(\"#template-error-list\").html();\n}\n\nvar _bindEvents = function() {\n  $dataTable.dataTable({\n    fixedHeader: true\n  });\n}\n\nvar init  = function(config) {\n  id                = config.id;\n  authenticityToken = config.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n}\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\n\nvar authenticityToken;\n\nvar $modalNew;\nvar $btnNew;\nvar $btnConfirmNew;\n\nvar $selectBranch;\nvar $selectBook;\nvar $inputStartDate;\nvar $inputEndDate;\n\nvar $message;\nvar templateErrorList;\n\nvar _cacheDom = function() {\n  $btnNew        = $(\"#btn-new\");\n  $modalNew      = new bootstrap.Modal(\n    document.getElementById(\"modal-new\")\n  );\n  $btnConfirmNew = $(\"#btn-confirm-new\");\n\n  $selectBranch   = $(\"#select-branch\");\n  $selectBook     = $(\"#select-book\");\n  $inputStartDate = $(\"#input-start-date\");\n  $inputEndDate   = $(\"#input-end-date\");\n\n  $message          = $(\".message\");\n  templateErrorList = $(\"#template-error-list\").html();\n}\n\nvar _bindEvents = function() {\n  $btnNew.on(\"click\", function() {\n    $modalNew.show();\n    $message.html(\"\");\n  });\n\n  $btnConfirmNew.on(\"click\", function() {\n    var startDate = $inputStartDate.val();\n    var endDate   = $inputEndDate.val();\n    var branchId  = $selectBranch.val();\n    var book      = $selectBook.val();\n\n    $message.html(\"Loading...\");\n    $btnConfirmNew.prop(\"disabled\", true);\n    $selectBranch.prop(\"disabled\", true);\n    $selectBook.prop(\"disabled\", true);\n    $inputStartDate.prop(\"disabled\", true);\n    $inputEndDate.prop(\"disabled\", true);\n\n    var data  = {\n      start_date: startDate,\n      end_date: endDate,\n      branch_id: branchId,\n      book: book,\n      authenticity_token: authenticityToken\n    }\n\n    $.ajax({\n      url: \"/api/v1/data_stores/accounting_entries_summaries/queue\",\n      method: 'POST',\n      data: data,\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.href=\"/data_stores/accounting_entries_summaries\";\n      },\n      error: function(response) {\n        console.log(response.responseText);\n        var errors  = [];\n\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          console.log(err);\n          errors  = [\"Something went wrong\"];\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmNew.prop(\"disabled\", false);\n          $selectBranch.prop(\"disabled\", false);\n          $selectBook.prop(\"disabled\", false);\n          $inputStartDate.prop(\"disabled\", false);\n          $inputEndDate.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n}\n\nvar init  = function(config) {\n  authenticityToken = config.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n}\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\n\nvar authenticityToken;\n\nvar $modalNew;\nvar $btnNew;\nvar $btnConfirmNew;\n\nvar $selectBranch;\nvar $inputStartDate;\nvar $inputEndDate;\n\nvar $message;\nvar templateErrorList;\n\nvar _cacheDom = function() {\n\n  $modalNew      = new bootstrap.Modal(\n    document.getElementById(\"modal-new\")\n\n  );\n  $btnNew        = $(\"#btn-new\");\n  $btnConfirmNew = $(\"#btn-confirm-new\");\n\n  $selectBranch   = $(\"#select-branch\");\n  $inputStartDate = $(\"#input-start-date\");\n  $inputEndDate   = $(\"#input-end-date\");\n\n  $message          = $(\".message\");\n  templateErrorList = $(\"#template-error-list\").html();\n}\n\nvar _bindEvents = function() {\n  $btnNew.on(\"click\", function() {\n    $modalNew.show();\n    $message.html(\"\");\n  });\n\n  $btnConfirmNew.on(\"click\", function() {\n    var startDate = $inputStartDate.val();\n    var endDate   = $inputEndDate.val();\n    var branchId  = $selectBranch.val();\n\n    $message.html(\"Loading...\");\n    $btnConfirmNew.prop(\"disabled\", true);\n    $selectBranch.prop(\"disabled\", true);\n    $inputStartDate.prop(\"disabled\", true);\n    $inputEndDate.prop(\"disabled\", true);\n\n    var data  = {\n      start_date: startDate,\n      end_date: endDate,\n      branch_id: branchId,\n      authenticity_token: authenticityToken\n    }\n\n    $.ajax({\n      url: \"/api/v1/data_stores/soa_expenses/queue\",\n      method: 'POST',\n      data: data,\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.href=\"/data_stores/soa_expenses\";\n      },\n      error: function(response) {\n        console.log(response.responseText);\n        var errors  = [];\n\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          console.log(err);\n          errors  = [\"Something went wrong\"];\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmNew.prop(\"disabled\", false);\n          $selectBranch.prop(\"disabled\", false);\n          $inputStartDate.prop(\"disabled\", false);\n          $inputEndDate.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n}\n\nvar init  = function(config) {\n  authenticityToken = config.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n}\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\nimport select2 from 'select2';\n\nvar authenticityToken;\n\nvar $modalNew;\nvar $btnNew;\nvar $btnConfirmNew;\n\nvar $selectBranch;\nvar $inputStartDate;\nvar $inputEndDate;\n\nvar $message;\nvar templateErrorList;\n\nvar _cacheDom = function() {\n  $modalNew      = new bootstrap.Modal(\n    document.getElementById(\"modal-new\")\n\n  );\n  $btnNew        = $(\"#btn-new\");\n  $btnConfirmNew = $(\"#btn-confirm-new\");\n\n  $selectBranch   = $(\"#select-branch\");\n  $inputStartDate = $(\"#input-start-date\");\n  $inputEndDate   = $(\"#input-end-date\");\n\n  $message          = $(\".message\");\n  templateErrorList = $(\"#template-error-list\").html();\n}\n\nvar _bindEvents = function() {\n  $btnNew.on(\"click\", function() {\n    $modalNew.show();\n    $message.html(\"\");\n  });\n\n  $btnConfirmNew.on(\"click\", function() {\n    var startDate = $inputStartDate.val();\n    var endDate   = $inputEndDate.val();\n    var branchId  = $selectBranch.val();\n\n    $message.html(\"Loading...\");\n    $btnConfirmNew.prop(\"disabled\", true);\n    $selectBranch.prop(\"disabled\", true);\n    $inputStartDate.prop(\"disabled\", true);\n    $inputEndDate.prop(\"disabled\", true);\n\n    var data  = {\n      start_date: startDate,\n      end_date: endDate,\n      branch_id: branchId,\n      authenticity_token: authenticityToken\n    }\n\n    $.ajax({\n      url: \"/api/v1/data_stores/soa_loans/queue\",\n      method: 'POST',\n      data: data,\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.href=\"/data_stores/soa_loans\";\n      },\n      error: function(response) {\n        console.log(response.responseText);\n        var errors  = [];\n\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          console.log(err);\n          errors  = [\"Something went wrong\"];\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmNew.prop(\"disabled\", false);\n          $selectBranch.prop(\"disabled\", false);\n          $inputStartDate.prop(\"disabled\", false);\n          $inputEndDate.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n}\n\nvar init  = function(config) {\n  authenticityToken = config.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n}\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport * as bootstrap from \"bootstrap\";\nimport $ from \"jquery\";\n\nvar authenticityToken;\n\nvar $modalNew;\nvar $btnNew;\nvar $btnConfirmNew;\n\nvar $selectBranch;\nvar $inputStartDate;\nvar $inputEndDate;\n\nvar id;\n\nvar $message;\nvar templateErrorList;\n\nvar _cacheDom = function() {\n  $modalNew = new bootstrap.Modal(\n    document.getElementById(\"modal-new\")\n  );\n\n  $btnNew        = $(\"#btn-new\");\n  $btnConfirmNew = $(\"#btn-confirm-new\");\n\n  $selectBranch   = $(\"#select-branch\");\n  $inputStartDate = $(\"#input-start-date\");\n  $inputEndDate   = $(\"#input-end-date\");\n\n  $message          = $(\".message\");\n  templateErrorList = $(\"#template-error-list\").html();\n}\n\nvar _bindEvents = function() {\n  $btnNew.on(\"click\", function() {\n    $modalNew.show();\n    $message.html(\"\");\n  });\n\n  $btnConfirmNew.on(\"click\", function() {\n    var startDate = $inputStartDate.val();\n    var endDate   = $inputEndDate.val();\n    var branchId  = $selectBranch.val();\n\n    $message.html(\"Loading...\");\n    $btnConfirmNew.prop(\"disabled\", true);\n    $selectBranch.prop(\"disabled\", true);\n    $inputStartDate.prop(\"disabled\", true);\n    $inputEndDate.prop(\"disabled\", true);\n\n    var data  = {\n      start_date: startDate,\n      end_date: endDate,\n      branch_id: branchId,\n      authenticity_token: authenticityToken\n    }\n\n    $.ajax({\n      url: \"/api/v1/data_stores/soa_funds/queue\",\n      method: 'POST',\n      data: data,\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.href=\"/data_stores/soa_funds\";\n      },\n      error: function(response) {\n        console.log(response.responseText);\n        var errors  = [];\n\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          console.log(err);\n          errors  = [\"Something went wrong\"];\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmNew.prop(\"disabled\", false);\n          $selectBranch.prop(\"disabled\", false);\n          $inputStartDate.prop(\"disabled\", false);\n          $inputEndDate.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n}\n\nvar init  = function(config) {\n  id                = config.id;\n  authenticityToken = config.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n}\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\n\nvar authenticityToken;\n\nvar $modalNew;\nvar $btnNew;\nvar $btnConfirmNew;\n\nvar $selectBranch;\nvar $inputAsOf;\n\nvar $message;\nvar templateErrorList;\n\nvar _cacheDom = function() {\n  $modalNew      = $(\"#modal-new\");\n  $btnNew        = $(\"#btn-new\");\n  $btnConfirmNew = $(\"#btn-confirm-new\");\n\n  $selectBranch   = $(\"#select-branch\");\n  $inputAsOf      = $(\"#input-as-of\");\n\n  $message          = $(\".message\");\n  templateErrorList = $(\"#template-error-list\").html();\n}\n\nvar _bindEvents = function() {\n  $btnNew.on(\"click\", function() {\n    $modalNew.show();\n    $message.html(\"\");\n  });\n\n  $btnConfirmNew.on(\"click\", function() {\n    var asOf      = $inputAsOf.val();\n    var branchId  = $selectBranch.val();\n\n    $message.html(\"Loading...\");\n    $btnConfirmNew.prop(\"disabled\", true);\n    $selectBranch.prop(\"disabled\", true);\n    $inputAsOf.prop(\"disabled\", true);\n\n    var data  = {\n      as_of: asOf,\n      branch_id: branchId,\n      authenticity_token: authenticityToken\n    }\n\n    $.ajax({\n      url: \"/api/v1/data_stores/watchlists/queue\",\n      method: 'POST',\n      data: data,\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.href=\"/data_stores/watchlists\";\n      },\n      error: function(response) {\n        console.log(response.responseText);\n        var errors  = [];\n\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          console.log(err);\n          errors  = [\"Something went wrong\"];\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmNew.prop(\"disabled\", false);\n          $selectBranch.prop(\"disabled\", false);\n          $inputAsOf.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n}\n\nvar init  = function(config) {\n  authenticityToken = config.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n}\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\n\nvar authenticityToken;\n\nvar $modalNew;\nvar $btnNew;\nvar $btnConfirmNew;\n\nvar $selectBranch;\nvar $inputAsOf;\n\nvar $message;\nvar templateErrorList;\n\nvar _cacheDom = function() {\n  $modalNew      = new bootstrap.Modal(\n    document.getElementById(\"modal-new\")\n\n  );\n  $btnNew        = $(\"#btn-new\");\n  $btnConfirmNew = $(\"#btn-confirm-new\");\n\n  $selectBranch = $(\"#select-branch\");\n  $inputAsOf      = $(\"#input-as-of\");\n\n  $message          = $(\".message\");\n  templateErrorList = $(\"#template-error-list\").html();\n}\n\nvar _bindEvents = function() {\n  $btnNew.on(\"click\", function() {\n    $modalNew.show();\n    $message.html(\"\");\n  });\n\n  $btnConfirmNew.on(\"click\", function() {\n    var asOf      = $inputAsOf.val();\n    var branchId  = $selectBranch.val();\n\n    $message.html(\"Loading...\");\n    $btnConfirmNew.prop(\"disabled\", true);\n    $selectBranch.prop(\"disabled\", true);\n    $inputAsOf.prop(\"disabled\", true);\n\n    var data  = {\n      as_of: asOf,\n      branch_id: branchId,\n      authenticity_token: authenticityToken\n    }\n\n    $.ajax({\n      url: \"/api/v1/data_stores/monthly_incentives/queue\",\n      method: 'POST',\n      data: data,\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.href=\"/data_stores/monthly_incentives\";\n      },\n      error: function(response) {\n        var errors = [\"Something went wrong\"];\n        console.log(response);\n\n        try {\n          errors  = JSON.parse(response.responseText).errors.full_messages;\n        } catch(e) {\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmNew.prop(\"disabled\", false);\n          $selectBranch.prop(\"disabled\", false);\n          $inputAsOf.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n}\n\nvar init  = function(config) {\n  authenticityToken = config.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n}\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\n\nvar authenticityToken;\n\nvar $modalNew;\nvar $btnNew;\nvar $btnConfirmNew;\n\nvar $selectBranch;\nvar $selectX;\nvar $inputAsOf;\n\nvar $message;\nvar templateErrorList;\n\nvar _cacheDom = function() {\n  $modalNew      = new bootstrap.Modal(\n    document.getElementById(\"modal-new\")\n\n  );\n  $btnNew        = $(\"#btn-new\");\n  $btnConfirmNew = $(\"#btn-confirm-new\");\n\n  $selectBranch   = $(\"#select-branch\");\n  $inputAsOf      = $(\"#input-as-of\");\n  $selectX        = $(\"#select-x\");\n\n  $message          = $(\".message\");\n  templateErrorList = $(\"#template-error-list\").html();\n}\n\nvar _bindEvents = function() {\n  $btnNew.on(\"click\", function() {\n    $modalNew.show();\n    $message.html(\"\");\n  });\n\n  $btnConfirmNew.on(\"click\", function() {\n    var asOf      = $inputAsOf.val();\n    var branchId  = $selectBranch.val();\n    var x         = $selectX.val();\n\n    $message.html(\"Loading...\");\n    $btnConfirmNew.prop(\"disabled\", true);\n    $selectBranch.prop(\"disabled\", true);\n    $inputAsOf.prop(\"disabled\", true);\n    $selectX.prop(\"disabled\", true);\n\n    var data  = {\n      as_of: asOf,\n      branch_id: branchId,\n      x: x,\n      authenticity_token: authenticityToken\n    }\n\n    $.ajax({\n      url: \"/api/v1/data_stores/x_weeks_to_pay/queue\",\n      method: 'POST',\n      data: data,\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.href=\"/data_stores/x_weeks_to_pay\";\n      },\n      error: function(response) {\n        $message.html(\"Something went wrong...\");\n        $btnConfirmNew.prop(\"disabled\", false);\n        $selectBranch.prop(\"disabled\", false);\n        $inputAsOf.prop(\"disabled\", false);\n        $selectX.prop(\"disabled\", false);\n      }\n    });\n  });\n}\n\nvar init  = function(config) {\n  authenticityToken = config.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n}\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\n\nvar authenticityToken;\n\nvar $modalNew;\nvar $btnNew;\nvar $btnConfirmNew;\n\nvar $selectBranch;\nvar $inputStartDate;\nvar $inputEndDate;\n\nvar $message;\nvar templateErrorList;\n\nvar _cacheDom = function() {\n  \n  $modalNew      = new bootstrap.Modal(\n    document.getElementById(\"modal-new\")\n\n  );\n  $btnNew        = $(\"#btn-new\");\n  $btnConfirmNew = $(\"#btn-confirm-new\");\n\n  $selectBranch   = $(\"#select-branch\");\n  $inputStartDate = $(\"#input-start-date\");\n  $inputEndDate   = $(\"#input-end-date\");\n\n  $message          = $(\".message\");\n  templateErrorList = $(\"#template-error-list\").html();\n}\n\nvar _bindEvents = function() {\n  $btnNew.on(\"click\", function() {\n    $modalNew.show();\n    $message.html(\"\");\n  });\n\n  $btnConfirmNew.on(\"click\", function() {\n    var startDate = $inputStartDate.val();\n    var endDate   = $inputEndDate.val();\n    var branchId  = $selectBranch.val();\n\n    $message.html(\"Loading...\");\n    $btnConfirmNew.prop(\"disabled\", true);\n    $selectBranch.prop(\"disabled\", true);\n    $inputStartDate.prop(\"disabled\", true);\n    $inputEndDate.prop(\"disabled\", true);\n\n    var data  = {\n      start_date: startDate,\n      end_date: endDate,\n      branch_id: branchId,\n      authenticity_token: authenticityToken\n    }\n\n    $.ajax({\n      url: \"/api/v1/data_stores/branch_resignations/queue\",\n      method: 'POST',\n      data: data,\n      success: function(response) {\n        console.log(response);\n        $message.html(\"Success! Redirecting...\");\n        window.location.href=\"/data_stores/branch_resignations\";\n      },\n      error: function(response) {\n        $message.html(\"Something went wrong...\");\n        $btnConfirmNew.prop(\"disabled\", false);\n        $selectBranch.prop(\"disabled\", false);\n        $inputStartDate.prop(\"disabled\", false);\n        $inputEndDate.prop(\"disabled\", false);\n      }\n    });\n  });\n};\n\nvar init  = function(config) {\n  authenticityToken = config.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n};\n\nexport default { init: init };\n", "import $ from \"jquery\";\n\nvar $btnExcel;\nvar $filterStartDate;\nvar $filterEndDate;\nvar $branchSelect      \n\nvar _cacheDom = function() {\n  $btnExcel          = $(\"#btn-excel\");\n  $filterStartDate   = $(\"#filter-start-date\");\n  $filterEndDate     = $(\"#filter-end-date\");\n  $branchSelect      = $(\"#branch-select\");\n}\n\nvar encodeQueryData = function(data) {\n  var ret = []\n  for(var d in data) {\n    ret.push(encodeURIComponent(d) + \"=\" + encodeURIComponent(data[d]));\n  }\n\n  return ret.join(\"&\");\n};\n\nvar _bindEvents = function() {\n  $btnExcel.on('click', function() {\n    var data = {\n      branch_id: $branchSelect.val(),\n      start_date: $filterStartDate.val(),\n      end_date: $filterEndDate.val()\n    };\n\n    window.location = \"/reports/download_excel_monthly_remittance?\" + encodeQueryData(data);\n  });    \n};\n\nvar init = function() {\n  _cacheDom();\n  _bindEvents();\n};\n\nexport default { init: init };\n", "import $ from \"jquery\";\n\nvar $btnExcel;\nvar $filterStartDate;\nvar $filterEndDate;\nvar $branchSelect      \n\nvar _cacheDom = function() {\n  $btnExcel          = $(\"#btn-excel\");\n  $filterStartDate   = $(\"#filter-start-date\");\n  $filterEndDate     = $(\"#filter-end-date\");\n  $branchSelect      = $(\"#branch-select\");\n}\n\nvar encodeQueryData = function(data) {\n  var ret = []\n  for(var d in data) {\n    ret.push(encodeURIComponent(d) + \"=\" + encodeURIComponent(data[d]));\n  }\n\n  return ret.join(\"&\");\n};\n\nvar _bindEvents = function() {\n  $btnExcel.on('click', function() {\n    var data = {\n      branch_id: $branchSelect.val(),\n      start_date: $filterStartDate.val(),\n      end_date: $filterEndDate.val()\n    };\n\n    window.location = \"/reports/download_excel_insurance_interest?\" + encodeQueryData(data);\n  });    \n};\n\nvar init = function() {\n  _cacheDom();\n  _bindEvents();\n};\n\nexport default { init: init };\n", "import $ from \"jquery\";\n\nvar $btnPrint;\nvar $btnDownloadCsv;\nvar $filterStartDate;\nvar $filterEndDate;\nvar $filterLoanStatus;\nvar $branchSelect;\n\nvar _cacheDom = function() {\n  $btnPrint          = $(\"#btn-print\");\n  $btnDownloadCsv    = $(\"#btn-download-csv\") \n  $filterStartDate   = $(\"#filter-start-date\");\n  $filterEndDate     = $(\"#filter-end-date\");\n  $filterLoanStatus  = $(\"#filter-loan-status\");\n  $branchSelect      = $(\"#branch-select\");\n};\n\nvar encodeQueryData = function(data) {\n  var ret = []\n  for(var d in data) {\n    ret.push(encodeURIComponent(d) + \"=\" + encodeURIComponent(data[d]));\n  }\n\n  return ret.join(\"&\");\n};\n\nvar _bindEvents = function() {\n  $btnPrint.on('click', function() {\n    var data = {\n      start_date: $filterStartDate.val(),\n      end_date: $filterEndDate.val(),\n      branch_id: $branchSelect.val(),\n      loan_status: $filterLoanStatus.val(),\n    };\n\n    window.location = \"/reports/print_insured_loans?\" + encodeQueryData(data);\n  });\n};\n\nvar init = function() {\n  _cacheDom();\n  _bindEvents();\n};\n\nexport default { init: init };\n", "import $ from \"jquery\";\n\nvar $downloadBtn; \nvar $startDate;       \nvar $endDate;         \nvar $branchSelect;\n\nvar _cacheDom = function() {\n  $downloadBtn       = $(\"#download-btn\");\n  $startDate         = $(\"#start-date\");\n  $endDate           = $(\"#end-date\");\n  $branchSelect      = $(\"#branch-select\")\n};\n\nvar encodeQueryData = function(data) {\n  var ret = []\n  for(var d in data) {\n    ret.push(encodeURIComponent(d) + \"=\" + encodeURIComponent(data[d]));\n  }\n\n  return ret.join(\"&\");\n};\n\nvar _bindEvents = function() {\n  $downloadBtn.on('click', function() {\n    var data = {\n      end_date: $endDate.val(),\n      start_date: $startDate.val(),\n      branch: $branchSelect.val(),\n    };\n\n    window.location = \"/reports/hiip_report_excel?\" + encodeQueryData(data);\n  });\n};\n\nvar init = function() {\n  _cacheDom();\n  _bindEvents();\n};\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\n\nvar $generateBtn;\nvar $downloadBtn;\nvar $memberReportsSection;\nvar $memberReportsTemplate;\nvar $memberStatus;\nvar $insuranceStatus;\nvar $memberType;\nvar branchId;\nvar $branchSelect;\nvar accountClass;\nvar $data;\nvar $startDate;\nvar $endDate;\nvar $message;\n\nvar memberReportsUrl  = \"/api/v1/reports/member_reports\";\n\nvar _cacheDom = function() {\n  $generateBtn            = $(\"#generate-btn\");\n  $downloadBtn            = $(\"#download-btn\");\n  $memberReportsSection   = $(\"#reports-members-section\");\n  $memberReportsTemplate  = $(\"#reports-members-template\").html();\n  $memberStatus           = $(\"#member-status-select\");\n  $insuranceStatus        = $(\"#insurance-status-select\");\n  $memberType             = $(\"#member-type-select\");\n  $branchSelect           = $(\"#branch-select\");\n  $startDate              = $(\"#start-date\");\n  $endDate                = $(\"#end-date\");\n  $message                = $(\".message\");\n}\n\nvar _loadDefaults = function() {\n}\n\nvar _bindEvents = function() {\n\n  $downloadBtn.on('click', function() {\n    $downloadBtn.addClass('loading');\n    $message.html(\"Loading...\");\n\n    branchId = $branchSelect.val();\n    memberStatus = $memberStatus.val();\n    insuranceStatus = $insuranceStatus.val();\n    memberType = $memberType.val();\n    var startDate  = $startDate.val();\n    var endDate = $endDate.val();\n\n    var params = {\n      branch_id: branchId,\n      status: memberStatus,\n      insurance_status: insuranceStatus,\n      member_type: memberType,\n      start_date: startDate,\n      end_date: endDate\n    };\n\n    $.ajax({\n      url: memberReportsUrl,\n      method: 'GET',\n      dataType: 'json',\n      data: params,\n      success: function(data) {\n        console.log(data);\n        $message.html(\"Success!\");\n        $memberReportsSection.html(Mustache.render($memberReportsTemplate, data));\n        \n        $downloadBtn.removeClass('loading');\n\n        tempUrl = data.download_url;\n        window.open(tempUrl, '_blank');\n\n        // Make sticky\n        // $(\".sticky\").stickyTableHeaders();\n      },\n      error: function(data) {\n        $message.html(\"Error...\");\n        toastr.error(\"Error in generating report for members\");\n        $downloadBtn.removeClass('loading');\n      }\n    });\n  });\n\n  $generateBtn.on('click', function() {\n    $generateBtn.addClass('loading');\n    $message.html(\"Loading...\");\n    \n    var branchId        = $branchSelect.val();\n    var memberStatus    = $memberStatus.val();\n    var insuranceStatus = $insuranceStatus.val();\n    var memberType      = $memberType.val();\n    var startDate       = $startDate.val();\n    var endDate         = $endDate.val();\n\n    var params = {\n      status: memberStatus,\n      branch_id: branchId,\n      insurance_status: insuranceStatus,\n      member_type: memberType,\n      start_date: startDate,\n      end_date: endDate\n    };\n\n    $.ajax({\n      url: memberReportsUrl,\n      method: 'GET',\n      dataType: 'json',\n      data: params,\n      success: function(data) {\n        console.log(data);\n        $message.html(\"Success!\");\n        $memberReportsSection.html(Mustache.render($memberReportsTemplate, data));\n\n        $memberReportsSection.find(\".curr\").each(function() {\n          $(this).html(numberWithCommas($(this).html()));\n        });\n\n        $generateBtn.removeClass('loading');\n\n        // Make sticky\n        // $(\".sticky\").stickyTableHeaders();\n      },\n      error: function(data) {\n        $message.html(\"Error...\");\n        $generateBtn.removeClass('loading');\n      }\n    });\n  });\n}\n\nvar init = function() {\n  _cacheDom();\n  _loadDefaults();\n  _bindEvents();\n}\n\nexport default { init: init };\n", "import $ from \"jquery\";\n\nvar $downloadBtn;       \nvar $startDate;        \nvar $endDate;      \nvar $brachSelect;\n\nvar _cacheDom = function() {\n  $downloadBtn       = $(\"#download-btn\");\n  $startDate         = $(\"#start-date\");\n  $endDate           = $(\"#end-date\");\n  $brachSelect       = $(\"#branch-select\");\n};\n\nvar encodeQueryData = function(data) {\n  var ret = []\n  for(var d in data) {\n    ret.push(encodeURIComponent(d) + \"=\" + encodeURIComponent(data[d]));\n  }\n\n  return ret.join(\"&\");\n};\n\nvar _bindEvents = function() {\n  $downloadBtn.on('click', function() {\n    var data = {\n      start_date: $startDate.val(),\n      end_date: $endDate.val(),\n      branch: $brachSelect.val(),\n    };\n\n    window.location = \"/reports/collections_clip_reports?\" + encodeQueryData(data);\n  });\n};\n\nvar init = function() {\n  _cacheDom();\n  _bindEvents();\n};\n\nexport default { init: init };\n", "import $ from \"jquery\";\n\nvar $downloadBtn; \nvar $startDate;\nvar $endDate;\nvar $brachSelect;\n\nvar _cacheDom = function() {\n  $downloadBtn       = $(\"#download-btn\");\n  $startDate         = $(\"#start-date\");\n  $endDate           = $(\"#end-date\");\n  $brachSelect       = $(\"#branch-select\");\n};\n\nvar _bindEvents = function() {\n  $downloadBtn.on('click', function() {\n    var data = {\n      start_date: $startDate.val(),\n      end_date: $endDate.val(),\n      branch: $brachSelect.val(),\n    };\n\n    window.location = \"/reports/collections_blip_reports?\" + encodeQueryData(data);\n  });\n};\n\nvar encodeQueryData = function(data) {\n  var ret = []\n  for(var d in data) {\n    ret.push(encodeURIComponent(d) + \"=\" + encodeURIComponent(data[d]));\n  }\n\n  return ret.join(\"&\");\n};\n\nvar init = function() {\n  _cacheDom();\n  _bindEvents();\n};\n\nexport default { init: init };\n", "import $ from \"jquery\";\n\nvar $downloadBtn;\nvar $startDate;\nvar $endDate;\nvar $branchSelect;\n\nvar encodeQueryData = function(data) {\n  var ret = []\n  for(var d in data) {\n    ret.push(encodeURIComponent(d) + \"=\" + encodeURIComponent(data[d]));\n  }\n\n  return ret.join(\"&\");\n};\n\nvar _cacheDom = function() {\n  $downloadBtn       = $(\"#download-btn\");\n  $startDate         = $(\"#start-date\");\n  $endDate           = $(\"#end-date\");\n  $branchSelect      = $(\"#branch-select\")\n};\n\nvar _bindEvents = function() {\n  $downloadBtn.on('click', function() {\n    var data = {\n      end_date: $endDate.val(),\n      start_date: $startDate.val(),\n      branch: $branchSelect.val(),\n    };\n\n    window.location = \"/reports/member_dependent_reports?\" + encodeQueryData(data);\n  });\n};\n\nvar init = function() {\n  _cacheDom();\n  _bindEvents();\n};\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\n\nvar $searchBtn;\nvar $downloadBtn;\nvar $memberReportsSection;\nvar $memberReportsTemplate;\nvar accountClass;\nvar $data;\nvar $startDate;\nvar $endDate;\nvar $memberQuarterlyReportsSection;\nvar $memberQuarterlyReportsTemplate;\nvar memberQuarterlyReportsUrl  = \"/api/v1/reports/member_quarterly_reports\";\nvar $message;\n\nvar _cacheDom = function() {\n  $startDate                      = $(\"#start-date\");\n  $endDate                        = $(\"#end-date\");\n  $searchBtn                      = $(\"#search-btn\");\n  $downloadBtn                    = $(\"#download-btn\");\n  $memberQuarterlyReportsSection  = $(\"#member-quarterly-reports-section\");\n  $memberQuarterlyReportsTemplate = $(\"#member-quarterly-reports-template\").html();\n\n  $message                        = $(\".message\");\n}\n\nvar _loadDefaults = function() {\n}\n\nvar _bindEvents = function() {\n  $downloadBtn.on('click', function() {\n    $downloadBtn.addClass('loading');\n    $message.html(\"Loading...\");\n\n    var startDate  = $startDate.val();\n    var endDate = $endDate.val();\n\n    var params = {\n      start_date: startDate,\n      end_date: endDate\n    };\n\n    $.ajax({\n      url: memberQuarterlyReportsUrl,\n      method: 'GET',\n      dataType: 'json',\n      data: params,\n      success: function(data) {\n        console.log(data);\n        $message.html(\"Success!\");\n        $memberQuarterlyReportsSection.html(Mustache.render($memberQuarterlyReportsTemplate, data));\n        \n        $downloadBtn.removeClass('loading');\n\n        tempUrl = data.download_url;\n        window.open(tempUrl, '_blank');\n\n        // Make sticky\n        // $(\".sticky\").stickyTableHeaders();\n      },\n      error: function(data) {\n        $downloadBtn.removeClass('loading');\n        $message.html(\"Error!\");\n      }\n    });\n  });\n\n  $searchBtn.on('click', function() {\n    $searchBtn.addClass('loading');\n    $message.html(\"Loading...\");  \n    \n    var startDate  = $startDate.val();\n    var endDate = $endDate.val();\n\n    var params = {\n      start_date: startDate,\n      end_date: endDate\n    };\n\n    $.ajax({\n      url: memberQuarterlyReportsUrl,\n      method: 'GET',\n      dataType: 'json',\n      data: params,\n      success: function(data) {\n        console.log(data);\n        $message.html(\"Success!\");\n        $memberQuarterlyReportsSection.html(Mustache.render($memberQuarterlyReportsTemplate, data));\n\n        $memberQuarterlyReportsSection.find(\".curr\").each(function() {\n          $(this).html(numberWithCommas($(this).html()));\n        });\n\n        $searchBtn.removeClass('loading');\n\n        // Make sticky\n        // $(\".sticky\").stickyTableHeaders();\n      },\n      error: function(data) {\n        $searchBtn.removeClass('loading');\n        $message.html(\"Error!\");\n      }\n    });\n  });\n}\n\nvar init = function() {\n  _cacheDom();\n  _loadDefaults();\n  _bindEvents();\n}\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\n\nvar $searchBtn;\nvar $downloadBtn;\nvar $insuranceReportsSection;\nvar $insuranceReportsTemplate;\nvar accountClass;\nvar $data;\nvar $startDate;\nvar $endDate;\nvar $insuranceQuarterlyReportsSection;\nvar $insuranceQuarterlyReportsTemplate;\nvar insuranceQuarterlyReportsUrl  = \"/api/v1/reports/insurance_quarterly_reports\";\nvar $message;\n\nvar _cacheDom = function() {\n  $startDate                         = $(\"#start-date\");\n  $endDate                           = $(\"#end-date\");\n  $searchBtn                         = $(\"#search-btn\");\n  $downloadBtn                       = $(\"#download-btn\");\n  $insuranceQuarterlyReportsSection  = $(\"#insurance-quarterly-reports-section\");\n  $insuranceQuarterlyReportsTemplate = $(\"#insurance-quarterly-reports-template\").html();\n\n  $message                           = $(\".message\");\n}\n\nvar _loadDefaults = function() {\n}\n\nvar _bindEvents = function() {\n  $downloadBtn.on('click', function() {\n    $downloadBtn.addClass('loading');\n    $message.html(\"Loading...\");\n\n    var startDate  = $startDate.val();\n    var endDate = $endDate.val();\n\n    var params = {\n      start_date: startDate,\n      end_date: endDate\n    };\n\n    $.ajax({\n      url: insuranceQuarterlyReportsUrl,\n      method: 'GET',\n      dataType: 'json',\n      data: params,\n      success: function(data) {\n        console.log(data);\n        $message.html(\"Success!\");\n        $insuranceQuarterlyReportsSection.html(Mustache.render($insuranceQuarterlyReportsTemplate, data));\n        \n        $downloadBtn.removeClass('loading');\n\n        tempUrl = data.download_url;\n        window.open(tempUrl, '_blank');\n\n        // Make sticky\n        // $(\".sticky\").stickyTableHeaders();\n      },\n      error: function(data) {\n        $downloadBtn.removeClass('loading');\n        $message.html(\"Error!\");\n      }\n    });\n  });\n\n  $searchBtn.on('click', function() {\n    $searchBtn.addClass('loading');\n    $message.html(\"Loading...\");  \n    \n    var startDate  = $startDate.val();\n    var endDate = $endDate.val();\n\n    var params = {\n      start_date: startDate,\n      end_date: endDate\n    };\n\n    $.ajax({\n      url: insuranceQuarterlyReportsUrl,\n      method: 'GET',\n      dataType: 'json',\n      data: params,\n      success: function(data) {\n        console.log(data);\n        $message.html(\"Success!\");\n        $insuranceQuarterlyReportsSection.html(Mustache.render($insuranceQuarterlyReportsTemplate, data));\n\n        $insuranceQuarterlyReportsSection.find(\".curr\").each(function() {\n          $(this).html(numberWithCommas($(this).html()));\n        });\n\n        $searchBtn.removeClass('loading');\n\n        // Make sticky\n        // $(\".sticky\").stickyTableHeaders();\n      },\n      error: function(data) {\n        $searchBtn.removeClass('loading');\n        $message.html(\"Error!\");\n      }\n    });\n  });\n}\n\nvar init = function() {\n  _cacheDom();\n  _loadDefaults();\n  _bindEvents();\n}\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\n\nvar $searchBtn;\nvar $downloadBtn;\nvar $data;\nvar $startDate;\nvar $endDate;\nvar $memberCountsSection;\nvar $memberCountsTemplate;\nvar $message;\nvar memberCountsUrl     = \"/api/v1/reports/member_counts\";\n\nvar _cacheDom = function() {\n  $startDate            = $(\"#start-date\");\n  $endDate              = $(\"#end-date\");\n  $searchBtn            = $(\"#search-btn\");\n  $memberCountsSection  = $(\"#member-counts-section\");\n  $memberCountsTemplate = $(\"#member-counts-template\").html();\n  $message              = $(\".message\");\n  $downloadBtn          = $(\"#download-btn\");\n}\n\nvar _loadDefaults = function() {\n}\n\nvar _bindEvents = function() {\n  $downloadBtn.on('click', function() {\n    $downloadBtn.addClass('loading');\n\n    var startDate  = $startDate.val();\n    var endDate = $endDate.val();\n\n    var params = {\n      start_date: startDate,\n      end_date: endDate\n    };\n\n    $.ajax({\n      url: memberCountsUrl,\n      method: 'GET',\n      dataType: 'json',\n      data: params,\n      success: function(data) {\n        console.log(data);\n        $memberCountsSection.html(Mustache.render($memberCountsTemplate, data));\n        \n        $downloadBtn.removeClass('loading');\n\n        tempUrl = data.download_url;\n        window.open(tempUrl, '_blank');\n\n        // Make sticky\n        $(\".sticky\").stickyTableHeaders();\n      },\n      error: function(data) {\n        $downloadBtn.removeClass('loading');\n      }\n    });\n  });\n\n  $searchBtn.on('click', function() {\n    $searchBtn.addClass('loading'); \n    $message.html(\"Loading...\"); \n    \n    var startDate  = $startDate.val();\n    var endDate = $endDate.val();\n\n    var params = {\n      start_date: startDate,\n      end_date: endDate\n    };\n\n    $.ajax({\n      url: memberCountsUrl,\n      method: 'GET',\n      dataType: 'json',\n      data: params,\n      success: function(data) {\n        console.log(data);\n        $memberCountsSection.html(Mustache.render($memberCountsTemplate, data));\n\n        $memberCountsSection.find(\".curr\").each(function() {\n          $(this).html(numberWithCommas($(this).html()));\n        });\n\n        $searchBtn.removeClass('loading');\n\n        // Make sticky\n        $(\".sticky\").stickyTableHeaders();\n        $message.html(\"\"); \n      },\n      error: function(data) {\n        $searchBtn.removeClass('loading');\n        $message.html(\"Error!\"); \n      }\n    });\n\n    // $message.html(\"\");\n  });\n}\n\nvar init = function() {\n  _cacheDom();\n  _loadDefaults();\n  _bindEvents();\n}\n\nexport default { init: init };\n", "import $ from \"jquery\";\n\nvar $providerCode; \nvar $downloadBtn;     \nvar $startDate;      \nvar $endDate;        \n\nvar _cacheDom = function() {\n  $providerCode      = $(\"#provider-code\");\n  $downloadBtn       = $(\"#download-btn\");\n  $startDate         = $(\"#start-date\");\n  $endDate           = $(\"#end-date\");\n};\n\nvar encodeQueryData = function(data) {\n  var ret = []\n  for(var d in data) {\n    ret.push(encodeURIComponent(d) + \"=\" + encodeURIComponent(data[d]));\n  }\n\n  return ret.join(\"&\");\n};\n\nvar _bindEvents = function() {\n  $downloadBtn.on('click', function() {\n    var data = {\n      start_date: $startDate.val(),\n      end_date: $endDate.val(),\n      provider_code: $providerCode.val(),\n    };\n\n    window.location = \"/reports/cic_reports?\" + encodeQueryData(data);\n  });\n};\n\nvar init = function() {\n  _cacheDom();\n  _bindEvents();\n};\n\nexport default { init: init };\n", "import $ from \"jquery\";\n\nvar $downloadBtn; \nvar $startDate;       \nvar $endDate;         \nvar $brachSelect;\n\nvar _cacheDom = function() {\n  $downloadBtn       = $(\"#download-btn\");\n  $startDate         = $(\"#start-date\");\n  $endDate           = $(\"#end-date\");\n  $brachSelect       = $(\"#branch-select\");\n};\n\nvar encodeQueryData = function(data) {\n  var ret = []\n  for(var d in data) {\n    ret.push(encodeURIComponent(d) + \"=\" + encodeURIComponent(data[d]));\n  }\n\n  return ret.join(\"&\");\n};\n\nvar _bindEvents = function() {\n  $downloadBtn.on('click', function() {\n    var data = {\n      start_date: $startDate.val(),\n      end_date: $endDate.val(),\n      branch: $brachSelect.val()\n    };\n\n    window.location = \"/reports/monthly_collection_reports?\" + encodeQueryData(data);\n  });\n};\n\nvar init = function() {\n  _cacheDom();\n  _bindEvents();\n};\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\n\nvar $searchBtn;\nvar $downloadBtn;\nvar $memberReportsSection;\nvar $memberReportsTemplate;\nvar $planType;\nvar branchId;\nvar $branchSelect;\nvar $data;\nvar $asOf;\nvar $summaryOfCertificatesAndPoliciesSection;\nvar $summaryOfCertificatesAndPoliciesTemplate;\nvar summaryOfCertificatesAndPoliciesUrl  = \"/api/v1/reports/summary_of_certificates_and_policies\";\n\nvar _cacheDom = function() {\n  $searchBtn                                = $(\"#search-btn\");\n  $downloadBtn                              = $(\"#download-btn\");\n  $summaryOfCertificatesAndPoliciesSection  = $(\"#reports-summary-of-certificates-and-policies-section\");\n  $summaryOfCertificatesAndPoliciesTemplate = $(\"#reports-summary-of-certificates-and-policies-template\").html();\n  $planType                                 = $(\"#plan-type-select\");\n  $branchSelect                             = $(\"#branch-select\");\n  $asOf                                     = $(\"#as-of\");\n}\n\nvar _bindEvents = function() {\n  $searchBtn.on('click', function() {\n    $searchBtn.addClass('loading');  \n    \n    var branchId  = $branchSelect.val();\n    var planType  = $planType.val();\n    var asOf      = $asOf.val();\n\n    var params = {\n      branch_id: branchId,\n      plan_type: planType,\n      as_of: asOf\n    };\n\n    $.ajax({\n      url: summaryOfCertificatesAndPoliciesUrl,\n      method: 'GET',\n      dataType: 'json',\n      data: params,\n      success: function(data) {\n        console.log(data);\n        $summaryOfCertificatesAndPoliciesSection.html(Mustache.render($summaryOfCertificatesAndPoliciesTemplate, data));\n\n        $summaryOfCertificatesAndPoliciesSection.find(\".curr\").each(function() {\n          $(this).html(numberWithCommas($(this).html()));\n        });\n\n        toastr.info(\"Generating Summary Of Certificates And Policies\");\n        $searchBtn.removeClass('loading');\n\n        // Make sticky\n        $(\".sticky\").stickyTableHeaders();\n      },\n      error: function(data) {\n        toastr.error(\"Error in generating report for Summary Of Certificates And Policies\");\n        $searchBtn.removeClass('loading');\n      }\n    });\n  });\n}\n\nvar init = function() {\n  _cacheDom();\n  _bindEvents();\n}\n\nexport default { init: init };\n", "import $ from \"jquery\";\n\nvar $btnExcel;\nvar $filterStartDate;\nvar $filterEndDate;\nvar $branchSelect;\nvar $savingsSubtype;\nvar $insuranceSubtype;\nvar $paymentSubtype;      \n\nvar _cacheDom = function() {\n  $btnExcel          = $(\"#btn-excel\");\n  $branchSelect      = $(\"#branch-select\");\n  $savingsSubtype    = $(\"#savings-subtype\");\n  $insuranceSubtype  = $(\"#insurance-subtype\");\n  $paymentSubtype    = $(\"#payment-subtype\");\n  $filterStartDate   = $(\"#filter-start-date\");\n  $filterEndDate     = $(\"#filter-end-date\");\n  $status            = $(\"#status\");\n}\n\nvar encodeQueryData = function(data) {\n  var ret = []\n  for(var d in data) {\n    ret.push(encodeURIComponent(d) + \"=\" + encodeURIComponent(data[d]));\n  }\n\n  return ret.join(\"&\");\n};\n\nvar _bindEvents = function() {\n  $btnExcel.on('click', function() {\n    var data = {\n      branch_id: $branchSelect.val(),\n      start_date: $filterStartDate.val(),\n      end_date: $filterEndDate.val(),\n      savings_subtype: $savingsSubtype.val(),\n      insurance_subtype: $insuranceSubtype.val(),\n      payment_subtype: $paymentSubtype.val(),\n      status: $status.val()\n    };\n\n    window.location = \"/reports/savings_insurance_transfer_reports_excel?\" + encodeQueryData(data);\n  });    \n};\n\nvar init = function() {\n  _cacheDom();\n  _bindEvents();\n};\n\nexport default { init: init };\n", "import $ from \"jquery\";\n\nvar $btnExcel;\nvar $StartDate;\nvar $EndDate;\nvar $ApprovalDateFrom;\nvar $ApprovalDateTo;\nvar status;\nvar $branchSelect;\n\nvar _cacheDom = function() {\n  $btnExcel          = $(\"#btn-excel\");\n  $branchSelect      = $(\"#branch-select\");\n  $StartDate         = $(\"#start-date\");\n  $EndDate           = $(\"#end-date\");\n  $ApprovalDateFrom  = $(\"#approval-date-from\");\n  $ApprovalDateTo    = $(\"#approval-date-to\");\n  $status            = $(\"#status\");\n}\n\nvar encodeQueryData = function(data) {\n  var ret = []\n  for(var d in data) {\n    ret.push(encodeURIComponent(d) + \"=\" + encodeURIComponent(data[d]));\n  }\n\n  return ret.join(\"&\");\n};\n\nvar _bindEvents = function() {\n  $btnExcel.on('click', function() {\n    var data = {\n      branch_id: $branchSelect.val(),\n      start_date: $StartDate.val(),\n      end_date: $EndDate.val(),\n      approval_date_from: $ApprovalDateFrom.val(),\n      approval_date_to: $ApprovalDateTo.val(),\n      status: $status.val()\n    };\n\n    console.log($StartDate)\n\n    window.location = \"/reports/insurance_loan_bundle_reports_excel?\" + encodeQueryData(data);\n  });    \n};\n\nvar init = function() {\n  _cacheDom();\n  _bindEvents();\n};\n\nexport default { init: init };\n", "import $ from \"jquery\";\n\nvar $btnExcel;\nvar $StartDate;\nvar $EndDate;\nvar $ApprovalDateFrom;\nvar $ApprovalDateTo;\nvar status;\nvar $branchSelect;\n\nvar _cacheDom = function() {\n  $btnExcel          = $(\"#btn-excel\");\n  $branchSelect      = $(\"#branch-select\");\n  $StartDate         = $(\"#start-date\");\n  $EndDate           = $(\"#end-date\");\n  $ApprovalDateFrom  = $(\"#approval-date-from\");\n  $ApprovalDateTo    = $(\"#approval-date-to\");\n  $status            = $(\"#status\");\n}\n\nvar encodeQueryData = function(data) {\n  var ret = []\n  for(var d in data) {\n    ret.push(encodeURIComponent(d) + \"=\" + encodeURIComponent(data[d]));\n  }\n\n  return ret.join(\"&\");\n};\n\nvar _bindEvents = function() {\n  $btnExcel.on('click', function() {\n    var data = {\n      branch_id: $branchSelect.val(),\n      start_date: $StartDate.val(),\n      end_date: $EndDate.val(),\n      approval_date_from: $ApprovalDateFrom.val(),\n      approval_date_to: $ApprovalDateTo.val(),\n      status: $status.val()\n    };\n\n    console.log($StartDate)\n\n    window.location = \"/reports/kpf_loan_clip_reports_excel?\" + encodeQueryData(data);\n  });    \n};\n\nvar init = function() {\n  _cacheDom();\n  _bindEvents();\n};\n\nexport default { init: init };\n", "import $ from \"jquery\";\n\nvar $downloadBtn;\nvar $startDate;\nvar $endDate;\nvar $branchSelect;\nvar $typeOfClaim;\n\nvar _cacheDom = function() {\n  $downloadBtn       = $(\"#download-btn\");\n  $startDate         = $(\"#start-date\");\n  $endDate           = $(\"#end-date\");\n  $branchSelect      = $(\"#branch-select\");\n  $typeOfClaim       = $(\"#type-of-claims\");\n};\n\nvar encodeQueryData = function(data) {\n  var ret = []\n  for(var d in data) {\n    ret.push(encodeURIComponent(d) + \"=\" + encodeURIComponent(data[d]));\n  }\n\n  return ret.join(\"&\");\n};\n\nvar _bindEvents = function() {\n  $downloadBtn.on('click', function() {\n    var data = {\n      claim_type: $typeOfClaim.val(),\n      start_date: $startDate.val(),\n      end_date: $endDate.val(),\n      branch: $branchSelect.val(),\n    };\n\n    window.location = \"/reports/claims_processing_time_report_excel?\" + encodeQueryData(data);\n  });\n};\n\nvar init = function() {\n  _cacheDom();\n  _bindEvents();\n};\n\nexport default { init: init };\n", "import $ from \"jquery\";\n\nvar $downloadBtn;\nvar $startDate;\nvar $endDate;\nvar $branchSelect;\nvar $typeOfClaim;\n\nvar _cacheDom = function() {\n  $downloadBtn       = $(\"#download-btn\");\n  $startDate         = $(\"#start-date\");\n  $endDate           = $(\"#end-date\");\n  $branchSelect      = $(\"#branch-select\");\n  $typeOfClaim       = $(\"#type-of-claims\");\n};\n\nvar encodeQueryData = function(data) {\n  var ret = []\n  for(var d in data) {\n    ret.push(encodeURIComponent(d) + \"=\" + encodeURIComponent(data[d]));\n  }\n\n  return ret.join(\"&\");\n};\n\nvar _bindEvents = function() {\n  $downloadBtn.on('click', function() {\n    var data = {\n      claim_type: $typeOfClaim.val(),\n      start_date: $startDate.val(),\n      end_date: $endDate.val(),\n      branch: $branchSelect.val(),\n    };\n\n    window.location = \"/reports/claims_processing_time_report_summary_excel?\" + encodeQueryData(data);\n  });\n};\n\nvar init = function() {\n  _cacheDom();\n  _bindEvents();\n};\n\nexport default { init: init };\n", "import $ from \"jquery\";\n\nvar $downloadBtn;\nvar $branchSelect;\n\nvar _cacheDom = function() {\n  $downloadBtn       = $(\"#download-btn\");\n  $branchSelect      = $(\"#branch-select\");\n};\n\nvar encodeQueryData = function(data) {\n  var ret = []\n  for(var d in data) {\n    ret.push(encodeURIComponent(d) + \"=\" + encodeURIComponent(data[d]));\n  }\n\n  return ret.join(\"&\");\n};\n\nvar _bindEvents = function() {\n  $downloadBtn.on('click', function() {\n    var data = {\n      branch: $branchSelect.val(),\n    };\n\n    window.location = \"/reports/reclassified_report_excel?\" + encodeQueryData(data);\n  });\n};\n\nvar init = function() {\n  _cacheDom();\n  _bindEvents();\n};\n\nexport default { init: init };\n", "import $ from \"jquery\";\n\nvar $downloadBtn; \nvar $startDate;       \nvar $endDate;         \nvar $branchSelect;\nvar $insuranceStatusSelect;\n\nvar _cacheDom = function() {\n  $downloadBtn            = $(\"#download-btn\");\n  $startDate              = $(\"#start-date\");\n  $endDate                = $(\"#end-date\");\n  $branchSelect           = $(\"#branch-select\");\n  $insuranceStatusSelect  = $(\"#insurance-status-select\");\n\n};\n\nvar encodeQueryData = function(data) {\n  var ret = []\n  for(var d in data) {\n    ret.push(encodeURIComponent(d) + \"=\" + encodeURIComponent(data[d]));\n  }\n\n  return ret.join(\"&\");\n};\n\nvar _bindEvents = function() {\n  $downloadBtn.on('click', function() {\n    var data = {\n      end_date: $endDate.val(),\n      start_date: $startDate.val(),\n      branch: $branchSelect.val(),\n      insurance_status: $insuranceStatusSelect.val(),\n    };\n\n    window.location = \"/reports/personal_document_reports?\" + encodeQueryData(data);\n  });\n};\n\nvar init = function() {\n  _cacheDom();\n  _bindEvents();\n};\n\nexport default { init: init };\n", "import $ from \"jquery\";\n\nvar $downloadBtn;\nvar $startDate;\nvar $endDate;\nvar $branchSelect;\nvar $typeOfClaim;\n\nvar _cacheDom = function() {\n  $downloadBtn       = $(\"#download-btn\");\n  $startDate         = $(\"#start-date\");\n  $endDate           = $(\"#end-date\");\n  $branchSelect      = $(\"#branch-select\");\n  $typeOfClaim       = $(\"#type-of-claims\");\n};\n\nvar encodeQueryData = function(data) {\n  var ret = []\n  for(var d in data) {\n    ret.push(encodeURIComponent(d) + \"=\" + encodeURIComponent(data[d]));\n  }\n\n  return ret.join(\"&\");\n};\n\nvar _bindEvents = function() {\n  $downloadBtn.on('click', function() {\n    var data = {\n      claim_type: $typeOfClaim.val(),\n      start_date: $startDate.val(),\n      end_date: $endDate.val(),\n      branch: $branchSelect.val(),\n    };\n\n    window.location = \"/reports/claim_generate_report?\" + encodeQueryData(data);\n  });\n};\n\nvar init = function() {\n  _cacheDom();\n  _bindEvents();\n};\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\n\nvar $btnApprove;\nvar $btnConfirmApprove;\nvar $modalApprove;\n\nvar $message;\nvar templateErrorList;\n\nvar _options;\nvar _id;\nvar _authenticityToken;\n\nvar _urlApprove = \"/api/v1/administration/user_demerits/approve\";\n\nvar _cacheDom = function() {\n  $btnApprove         = $(\"#btn-approve\");\n  $btnConfirmApprove  = $(\"#btn-confirm-approve\");\n  $modalApprove       = $(\"#modal-approve\");\n\n  $message          = $(\".message\");\n  templateErrorList = $(\"#template-error-list\").html();\n};\n\nvar _bindEvents = function() {\n  $btnApprove.on(\"click\", function() {\n    $modalApprove.show();\n  });\n\n  $btnConfirmApprove.on(\"click\", function() {\n    $message.html(\"Loading...\");\n\n    var data  = {\n      id: _id,\n      authenticity_token: _authenticityToken\n    };\n\n    $btnConfirmApprove.prop(\"disabled\", true);\n\n    $.ajax({\n      url: _urlApprove,\n      method: 'POST',\n      data: data,\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n\n        window.location.reload();\n      },\n      error: function(response) {\n        var errors  = [\"Something went wrong\"];\n\n        try {\n          errors  = JSON.parse(response.responseText).errors;\n          console.log(response);\n        } catch(e) {\n          console.log(response);\n        } finally {\n          $btnConfirmApprove.prop(\"disabled\", false);\n\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n        }\n      }\n    });\n  });\n};\n\nvar init  = function(options) {\n  _options            = options; \n  _id                 = options.id\n  _authenticityToken  = options.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n};\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\n\nvar $btnNewTransaction;\nvar $btnConfirmNewTransaction;\nvar $modalNewTransaction;\n\nvar $selectBranch;\nvar $inputCollectionDate;\n\nvar $message;\n\nvar templateErrorList;\n\nvar branches  = [];\n\nvar urlBranches                             = \"/api/v1/branches\";\nvar urlCreateEquityWithdrawalCollection     = \"/api/v1/equity_withdrawal_collections\";\n\nvar _authenticityToken;\n\nvar _cacheDom = function() {\n  $btnNewTransaction        = $(\"#btn-new-transaction\");\n  $btnConfirmNewTransaction = $(\"#btn-confirm-new-transaction\");\n  $modalNewTransaction      = $(\"#modal-new-transaction\");\n\n  $selectBranch         = $(\"#select-branch\");\n  $inputCollectionDate  = $(\"#input-collection-date\");\n\n  $message  = $(\".message\");\n\n  templateErrorList = $(\"#template-error-list\").html();\n};\n\nvar _bindEvents = function() {\n  $btnNewTransaction.on(\"click\", function() {\n    $modalNewTransaction.show();\n  });\n\n  $btnConfirmNewTransaction.on(\"click\", function() {\n    var collectionDate  = $inputCollectionDate.val();\n    var branchId        = $selectBranch.val();\n\n    $btnConfirmNewTransaction.prop(\"disabled\", true);\n    $selectBranch.prop(\"disabled\", true);\n    $inputCollectionDate.prop(\"disabled\", true);\n\n    $.ajax({\n      url: urlCreateEquityWithdrawalCollection,\n      method: 'POST',\n      data: {\n        authenticity_token: _authenticityToken,\n        collection_date: collectionDate,\n        branch_id: branchId\n      },\n      success: function(response) {\n        $message.html(\n          \"Success! Redirecting...\"\n        );\n\n        window.location.href=\"/equity_withdrawal_collections/\" + response.id;\n      },\n      error: function(response) {\n        var errors  = [];\n\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"]\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmNewTransaction.prop(\"disabled\", false);\n          $selectBranch.prop(\"disabled\", false);\n          $inputCollectionDate.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n};\n\nvar init  = function(config) {\n  _authenticityToken  = config.authenticityToken;\n\n  $.ajax({\n    url: urlBranches,\n    method: 'GET',\n    success: function(response) {\n      branches  = response.branches;\n    },\n    error: function(response) {\n      console.log(response);\n      alert(\"Error in fetching branches\");\n    }\n  });\n\n  _cacheDom();\n  _bindEvents();\n};\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\n\nvar options;\nvar id;\nvar authenticityToken;\n\nvar $btnApprove;\nvar $btnConfirmApprove;\nvar $modalApprove;\n\nvar $btnPrint;\nvar $modalPrint;\n\nvar $message;\nvar templateErrorList;\n\nvar _urlApprove = \"/api/v1/equity_withdrawal_collections/approve\";\nvar _urlPrint   = \"/api/v1/print/generate_file\";\n\nvar _cacheDom = function() {\n  $btnApprove         = $(\"#btn-approve\");\n  $btnConfirmApprove  = $(\"#btn-confirm-approve\");\n  $modalApprove       = $(\"#modal-approve\");\n\n  $btnPrint   = $(\"#btn-print\");\n  $modalPrint = $(\"#modal-print\");\n\n  $message          = $(\".message\");\n  templateErrorList = $(\"#template-error-list\").html();\n};\n\nvar _bindEvents = function() {\n  $btnPrint.on(\"click\", function() {\n    $modalPrint.show();\n\n    $.ajax({\n      url: \"/api/v1/print/generate_file\",\n      method: 'POST',\n      data: { \n        id: id,\n        type: \"equity_withdrawal_collection\",\n        authenticity_token: authenticityToken\n      },\n      success: function(response) {\n        $message.html(\n          \"Success! Redirecting...\"\n        );\n\n        $modalPrint.hide();\n        window.open(\"/print?filename=\" + response.filename, '_blank');\n      },\n      error: function(response) {\n        $message.html(\"Error!\");\n      }\n    });\n  });\n\n  $btnApprove.on(\"click\", function() {\n    $message.html(\"\");\n    $modalApprove.show();\n  });\n\n  $btnConfirmApprove.on(\"click\", function() {\n    $message.html(\"Loading...\");\n    $btnConfirmApprove.prop(\"disabled\", true);\n\n    $.ajax({\n      url: _urlApprove,\n      method: 'POST',\n      dataType: 'json',\n      data: {\n        id: id,\n        authenticity_token: authenticityToken\n      },\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.reload();\n      },\n      error: function(response) {\n        console.log(response);\n        var errors  = [];\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmApprove.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n};\n\nvar init  = function(options) {\n  id                = options.id;\n  authenticityToken = options.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n};\n\nexport default { init: init }\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\n\nvar $btnNewTransaction;\nvar $btnConfirm;\nvar $modalNewTransaction;\n\nvar $selectBranch;\nvar $selectCenter;\nvar $selectMember;\nvar $typeOfClaim;\n\nvar $btnDailyReport;\n\nvar $message;\nvar templateErrorList;\n\nvar branches  = [];\nvar centers   = [];\nvar members   = [];\n\nvar urlBranches       = \"/api/v1/branches\";\nvar urlCenters       = \"/api/v1/centers/centers\";\nvar urlCreate       = \"/api/v1/claims/create\";\n\nvar _authenticityToken;\n\nvar _cacheDom = function() {\n  $btnNewTransaction        = $(\"#btn-new-transaction\");\n  $btnConfirm               = $(\"#btn-confirm\");\n  $modalNewTransaction = new bootstrap.Modal(\n    document.getElementById(\"modal-new-transaction\")\n  );\n  $btnDailyReport        = $(\"#btn-daily-report\");\n  $selectBranch          = $(\"#select-branch\");\n  $selectCenter          = $(\"#select-center\");\n  $selectMember          = $(\"#select-member\");\n  $typeOfClaim           = $(\"#type-of-claims\");\n\n  $message          = $(\".message\");\n  templateErrorList = $(\"#template-error-list\").html();\n\n};\n\nvar _bindEvents = function() {\n  $btnConfirm.on(\"click\", function() {\n    var memberId = $selectMember.val();\n    var typeOfClaim = $typeOfClaim.val();\n\n    $.ajax({\n      url: urlCreate,\n      method: 'POST',\n      data: {\n        authenticity_token: _authenticityToken,\n        member_id: memberId,\n        claim_type: typeOfClaim\n      },  \n      success: function(response) {\n        window.location.href = \"/claims/new/\" + response.id;\n      },\n      error: function(response) {\n        console.log(response);\n        alert(\"Something went wrong\")\n      }\n    });\n  });\n  $btnNewTransaction.on(\"click\", function() {\n    $modalNewTransaction.show();\n  });\n\n\n  $selectBranch.on(\"change\", function() {\n    var branchId  = $(this).val();\n\n    $selectCenter.html(\"\");\n    $selectCenter.append(\"<option>--ALL--</option>\")\n    for(var i = 0; i < branches.length; i++) {\n      if(branches[i].id == branchId) {\n        for(var j = 0; j < branches[i].centers.length; j++) {\n          $selectCenter.append(\n            \"<option value='\" + branches[i].centers[j].id + \"'>\" + branches[i].centers[j].name + \"</option>\"\n          );\n        }\n      }\n    }\n  });\n\n  $selectCenter.on(\"change\", function() {\n    var centerId  = $(this).val();\n\n    $selectMember.html(\"\");\n    $selectMember.append(\"<option>--ALL--</option>\");\n    console.log(centers);\n    for(var i = 0; i < centers.length; i++) {\n      if(centers[i].id == centerId) {\n        for(var j = 0; j < centers[i].members.length; j++) { \n          $selectMember.append(\n            \"<option value='\" + centers[i].members[j].id + \"'>\" + centers[i].members[j].name + \", \" + centers[i].members[j].age + \"years old\" + \"</option>\"\n          );\n        }\n      }\n    }\n  });\n\n  $btnDailyReport.on(\"click\", function() {\n    window.open(\"/print?type=claims_daily_report\");\n  });\n};\n\nvar init  = function(config) {\n  _authenticityToken  = config.authenticityToken;\n\n  $.ajax({\n    url: urlBranches,\n    method: 'GET',\n    success: function(response) {\n      branches  = response.branches;\n    },\n    error: function(response) {\n      console.log(response);\n      alert(\"Error in fetching branches\");\n    }\n  });\n\n  $.ajax({\n    url: urlCenters,\n    method: 'GET',\n    success: function(response) {\n      centers  = response.centers;\n    },\n    error: function(response) {\n      console.log(response);\n      alert(\"Error in fetching centers\");\n    }\n  });\n\n\n  _cacheDom();\n  _bindEvents();\n};\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\nimport select2 from 'select2';\nselect2($);\n\nvar $modalNew;\nvar $modalDelete;\nvar $modalProcess;\nvar $modalBatchProcess;\nvar $selectBranch;\nvar $selectCenter;\nvar $selectMember;\nvar $selectProcessCenter;\nvar $selectLoans;\nvar $inputDateInitialized;\nvar $inputNumberOfDays;\nvar $inputReason;\nvar $btnNew;\nvar $btnDelete;\nvar $btnProcess;\nvar $btnBatchProcess;\nvar $btnConfirmNew;\nvar $btnConfirmDelete;\nvar $btnConfirmProcess;\nvar $btnConfirmBatchProcess;\nvar $message;\nvar templateErrorList;\nvar _authenticityToken;\n\nvar _centers  = [];\nvar _members  = [];\nvar _loans    = [];\nvar _loanIds  = [];\n\nvar _branchId;\nvar _centerId;\nvar _memberId;\nvar _moratoriumId;\n\nvar _urlCreate        = \"/api/v1/adjustments/moratoriums/create\";\nvar _urlDelete        = \"/api/v1/adjustments/moratoriums/delete\";\nvar _urlProcess       = \"/api/v1/adjustments/moratoriums/process\";\nvar _urlBatchProcess  = \"/api/v1/adjustments/moratoriums/batch_process\";\nvar _urlCenters       = \"/api/v1/branches/fetch_centers\";\nvar _urlLoans         = \"/api/v1/loans/fetch_by_member\";\n\nvar init  = function(options) {\n  _authenticityToken = options.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n};\n\nvar _cacheDom = function() {\n  $modalNew = new bootstrap.Modal(\n    document.getElementById(\"modal-new\")\n  );\n\n  $modalDelete = new bootstrap.Modal(\n    document.getElementById(\"modal-delete\")\n  );\n\n  $modalProcess = new bootstrap.Modal(\n    document.getElementById(\"modal-process\")\n  );\n\n  $modalBatchProcess = new bootstrap.Modal(\n    document.getElementById(\"modal-batch-process\")\n  );\n\n  $selectBranch           = $(\"#select-branch\");\n  $selectCenter           = $(\"#select-center\");\n  $selectMember           = $(\"#select-member\");\n  $selectProcessCenter    = $(\"#select-process-center\");\n  $selectLoans            = $(\"#select-loans\");\n  $inputDateInitialized   = $(\"#input-date-initialized\");\n  $inputNumberOfDays      = $(\"#input-number-of-days\");\n  $inputReason            = $(\"#input-reason\");\n  $btnNew                 = $(\"#btn-new\");\n  $btnDelete              = $(\".btn-delete\");\n  $btnProcess             = $(\".btn-process\");\n  $btnBatchProcess        = $(\"#btn-batch-process\");\n  $btnConfirmNew          = $(\"#btn-confirm-new\");\n  $btnConfirmDelete       = $(\"#btn-confirm-delete\");\n  $btnConfirmProcess      = $(\"#btn-confirm-process\");\n  $btnConfirmBatchProcess = $(\"#btn-confirm-batch-process\");\n  $message                = $(\".message\");\n\n  templateErrorList = $(\"#template-error-list\").html();\n\n  $selectLoans.select2({\n    allowClear: true,\n    width: \"auto\",\n    theme: \"bootstrap\"\n  });\n};\n\nvar _loadCenterOptions  = function() {\n  $selectCenter.html(\"\");\n  $selectMember.html(\"\");\n\n  if(_centers.length > 0) {\n    _centerId = _centers[0].id;\n\n    for(var i = 0; i < _centers.length; i++) {\n      $selectCenter.append(new Option(_centers[i].name, _centers[i].id));\n    }\n  }\n\n  if(_members.length > 0) {\n    _memberId = _members[0].id;\n\n    for(var i = 0; i < _members.length; i++) {\n      $selectMember.append(new Option(_members[i].full_name, _members[i].id));\n    }\n\n    $selectMember.val(_memberId);\n\n    _fetchLoans();\n  }\n};\n\nvar _fetchLoans = function() {\n  $.ajax({\n    method: 'GET',\n    url: _urlLoans,\n    data: {\n      member_id: _memberId\n    },\n    success: function(response) {\n      _loans  = response.loans;\n      console.log(\"Loans:\");\n      console.log(_loans);\n\n      $selectLoans.val(null).trigger('change');\n      $selectLoans.empty();\n\n      _loans.forEach(function(o, i) {\n        $selectLoans.append(\n          new Option(\n            o.loan_product.name,\n            o.id,\n            false,\n            false\n          )\n        ).trigger('change');\n      });\n    },\n    error: function(response) {\n      console.log(\"Error in fetching loans.\");\n      console.log(response);\n    }\n  });\n};\n\nvar _bindEvents = function() {\n  $selectMember.on(\"change\", function() {\n    _memberId = $(this).val();\n\n    _fetchLoans();\n  });\n\n  $btnBatchProcess.on(\"click\", function() {\n    $modalBatchProcess.show();\n  });\n\n  $btnConfirmBatchProcess.on(\"click\", function() {\n    $message.html(\"Loading...\");\n    $btnConfirmBatchProcess.prop(\"disabled\", true);\n\n    var centerId = $selectProcessCenter.val();\n\n    $.ajax({\n      url: _urlBatchProcess,\n      method: \"POST\",\n      data: {\n        center_id: centerId,\n        authenticity_token: _authenticityToken\n      },\n      success: function(response) {\n        $message.html(\"Success!\");\n        window.location.reload();\n      },\n      error: function(response) {\n        var errors  = [];\n\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors = [\"Something went wrong\"];\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmBatchProcess.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  $btnProcess.on(\"click\", function() {\n    _moratoriumId = $(this).data(\"id\");\n    $modalProcess.show();\n  });\n\n  $btnConfirmProcess.on(\"click\", function() {\n    $message.html(\"Loading...\");\n    $btnConfirmProcess.prop(\"disabled\", true);\n\n    $.ajax({\n      url: _urlProcess,\n      method: \"POST\",\n      data: {\n        id: _moratoriumId,\n        authenticity_token: _authenticityToken\n      },\n      success: function(response) {\n        $message.html(\"Success!\");\n        window.location.reload();\n      },\n      error: function(response) {\n        var errors  = [];\n\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors = [\"Something went wrong\"];\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmProcess.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  $btnDelete.on(\"click\", function() {\n    _moratoriumId = $(this).data(\"id\");\n    $modalDelete.show();\n  });\n\n  $btnConfirmDelete.on(\"click\", function() {\n    $message.html(\"Loading...\");\n    $btnConfirmDelete.prop(\"disabled\", true);\n\n    $.ajax({\n      url: _urlDelete,\n      method: \"POST\",\n      data: {\n        id: _moratoriumId\n      },\n      success: function(response) {\n        $message.html(\"Success!\");\n        window.location.reload();\n      },\n      error: function(response) {\n        console.log(response);\n        alert(\"Error in deleting record!\");\n        $message.html(\"\");\n        $btnConfirmDelete.prop(\"disabled\", false);\n      }\n    });\n  });\n\n  $selectCenter.on(\"change\", function() {\n    _centerId = $selectCenter.val();\n\n    _members  = _centers.find(c => c.id === _centerId).members;\n\n    $selectMember.html(\"\");\n    for(var i = 0; i < _members.length; i++) {\n      $selectMember.append(new Option(_members[i].full_name, _members[i].id));\n    }\n\n    if(_members.length > 0) {\n      _memberId = _members[0].id;\n\n      _fetchLoans();\n    }\n  });\n\n  $selectBranch.on(\"change\", function() {\n    $.ajax({\n      method: 'GET',\n      url: _urlCenters,\n      data: {\n        id: $selectBranch.val(),\n        with_members: true\n      },\n      success: function(response) {\n        _centers  = response.centers;\n\n        if(_centers.length > 0) {\n          _members  = _centers[0].members;\n        }\n\n        _loadCenterOptions();\n      },\n      error: function(response) {\n        console.log(response);\n        alert(\"Error in fetching centers\");\n      }\n    });\n  });\n\n  $btnNew.on(\"click\", function() {\n    $modalNew.show();\n  });\n\n  $btnConfirmNew.on(\"click\", function() {\n    _branchId           = $selectBranch.val();\n    _centerId           = $selectCenter.val();\n    _memberId           = $selectMember.val();\n    _loanIds            = $selectLoans.val();\n\n    var dateInitialized = $inputDateInitialized.val();\n    var numberOfDays    = $inputNumberOfDays.val();\n    var reason          = $inputReason.val();\n\n    $btnConfirmNew.prop(\"disabled\", true);\n    $selectBranch.prop(\"disabled\", true);\n    $selectCenter.prop(\"disabled\", true);\n    $selectMember.prop(\"disabled\", true);\n    $selectLoans.prop(\"disabled\", true);\n    $inputDateInitialized.prop(\"disabled\", true);\n    $inputNumberOfDays.prop(\"disabled\", true);\n    $inputReason.prop(\"disabled\", true);\n\n    console.log(_loanIds);\n\n    $message.html(\"Loading...\");\n\n    $.ajax({\n      url: _urlCreate,\n      method: \"POST\",\n      data: {\n        branch_id: _branchId,\n        center_id: _centerId,\n        member_id: _memberId,\n        loan_ids: _loanIds,\n        date_initialized: dateInitialized,\n        number_of_days: numberOfDays,\n        reason: reason,\n        authenticity_token: _authenticityToken\n      },\n      success: function(resonse) {\n        $message.html(\n          \"Success! Redirecting...\"\n        );\n\n        window.location.reload();\n      },\n      error: function(response) {\n        var errors  = [];\n\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors = [\"Something went wrong\"];\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmNew.prop(\"disabled\", false);\n          $selectBranch.prop(\"disabled\", false);\n          $selectCenter.prop(\"disabled\", false);\n          $selectMember.prop(\"disabled\", false);\n          $selectLoans.prop(\"disabled\", false);\n          $inputDateInitialized.prop(\"disabled\", false);\n          $inputReason.prop(\"disabled\", false);\n          $inputNumberOfDays.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n};\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\n\nvar authenticityToken;\nvar $inputPassword;\nvar $inputPasswordConfirmation;\nvar $btnSave;\n\nvar $message;\nvar templateErrorList;\n\nvar _cacheDom = function() {\n  $btnSave          = $(\"#btn-save\");\n  $message          = $(\".message\");\n  templateErrorList = $(\"#template-error-list\").html();\n \n  $inputPassword              = $(\"#input-password\");\n  $inputPasswordConfirmation  = $(\"#input-password-confirmation\");\n};\n\nvar _bindEvents = function() {\n  $btnSave.on(\"click\", function() {\n    var password              = $inputPassword.val();\n    var passwordConfirmation  = $inputPasswordConfirmation.val();\n\n    $btnSave.prop(\"disabled\", true);\n    $inputPassword.prop(\"disabled\", true);\n    $inputPasswordConfirmation.prop(\"disabled\", true);\n\n    $.ajax({\n      url: \"/api/v1/change_password\",\n      method: \"POST\",\n      data: {\n        authenticity_token: authenticityToken,\n        password: password,\n        password_confirmation: passwordConfirmation\n      },\n      success: function(response) {\n        $message.html(\"Success!\");\n        window.location.href = \"/\";\n      },\n      error: function(response) {\n        console.log(response);\n        var errors  = [];\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnSave.prop(\"disabled\", false);\n          $inputPassword.prop(\"disabled\", false);\n          $inputPasswordConfirmation.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n};\n\nvar init  = function(config) {\n  authenticityToken = config.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n};\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\n\nvar $modalNew;\nvar $inputStartDate;\nvar $inputEndDate;\nvar $selectBranch;\nvar $selectAccountingFund;\nvar $btnNew;\nvar $btnConfirmNew;\nvar $message;\nvar templateErrorList;\nvar _authenticityToken;\nvar _xKoinsAppAuthSecret;\nvar _urlCreate;\nvar _userId;\n\nvar init  = function(options) {\n  _authenticityToken    = options.authenticityToken;\n  _xKoinsAppAuthSecret  = options.xKoinsAppAuthSecret;\n  _urlCreate            = options.urlCreate;\n  _userId               = options.userId;\n\n  _cacheDom();\n  _bindEvents();\n};\n\nvar _cacheDom = function() {\n  $modalNew             = $(\"#modal-new\");\n  $inputStartDate       = $(\"#input-start-date\");\n  $inputEndDate         = $(\"#input-end-date\");\n  $selectBranch         = $(\"#select-branch\");\n  $selectAccountingFund = $(\"#select-accounting-fund\");\n  $btnNew               = $(\"#btn-new\");\n  $btnConfirmNew        = $(\"#btn-confirm-new\");\n  $message              = $(\".message\");\n\n  templateErrorList = $(\"#template-error-list\").html();\n};\n\nvar _bindEvents = function() {\n  $btnNew.on(\"click\", function() {\n    $modalNew.show();\n  });\n\n  $btnConfirmNew.on(\"click\", function() {\n    var startDate         = $inputStartDate.val();\n    var endDate           = $inputEndDate.val();\n    var branchId          = $selectBranch.val();\n    var accountingFundId  = $selectAccountingFund.val();\n\n    $message.html(\"Loading...\");\n\n    $inputStartDate.prop(\"disabled\", true);\n    $inputEndDate.prop(\"disabled\", true);\n    $selectBranch.prop(\"disabled\", true);\n    $selectAccountingFund.prop(\"disabled\", true);\n    $btnConfirmNew.prop(\"disabled\", true);\n\n    $.ajax({\n      url: _urlCreate,\n      method: \"POST\",\n      headers: {\n        'X-KOINS-APP-AUTH-SECRET': _xKoinsAppAuthSecret,\n        'Access-Control-Allow-Methods': '*',\n        'Access-Control-Allow-Headers': '*',\n        'Access-Control-Allow-Origin': '*',\n        'Access-Control-Allow-Credentials': 'true'\n      },\n      data: {\n        start_date: startDate,\n        end_date: endDate,\n        branch_id: branchId,\n        accounting_fund_id: accountingFundId,\n        authenticity_token: _authenticityToken,\n        user_id: _userId\n      },\n      success: function(response) {\n        $message.html(\"Success!\");\n        window.location.reload();\n      },\n      error: function(response) {\n        var errors  = [];\n\n        console.log(\"ERROR\");\n        console.log(response);\n\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors = [\"Something went wrong\"];\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $inputStartDate.prop(\"disabled\", false);\n          $inputEndDate.prop(\"disabled\", false);\n          $selectBranch.prop(\"disabled\", false);\n          $selectAccountingFund.prop(\"disabled\", false);\n          $btnConfirmNew.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n};\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\n\nvar $modalDelete;\nvar $btnDelete;\nvar $btnConfirmDelete;\nvar $message;\nvar templateErrorList;\nvar _authenticityToken;\n\nvar _urlDelete;\nvar _id;\nvar _xKoinsAppAuthSecret;\nvar _userId;\n\nvar init  = function(options) {\n  _id                   = options.id;\n  _authenticityToken    = options.authenticityToken;\n  _urlDelete            = options.urlDelete;\n  _userId               = options.userId;\n  _xKoinsAppAuthSecret  = options.xKoinsAppAuthSecret;\n\n  _cacheDom();\n  _bindEvents();\n}\n\nvar _cacheDom = function() {\n  $modalDelete      = $(\"#modal-delete\");\n  $btnDelete        = $(\"#btn-delete\");\n  $btnConfirmDelete = $(\"#btn-confirm-delete\");\n  $message          = $(\".message\");\n\n  templateErrorList = $(\"#template-error-list\").html();\n};\n\nvar _bindEvents = function() {\n  $btnDelete.on(\"click\", function() {\n    $modalDelete.show();\n  });\n\n  $btnConfirmDelete.on(\"click\", function() {\n    $btnConfirmDelete.prop(\"disabled\", true);\n\n    $.ajax({\n      url: _urlDelete,\n      method: \"POST\",\n      headers: {\n        'X-KOINS-APP-AUTH-SECRET': _xKoinsAppAuthSecret,\n        'Access-Control-Allow-Methods': '*',\n        'Access-Control-Allow-Headers': '*',\n        'Access-Control-Allow-Origin': '*',\n        'Access-Control-Allow-Credentials': 'true'\n      },\n      data: {\n        id: _id,\n        authenticity_token: _authenticityToken,\n        user_id: _userId\n      },\n      success: function(response) {\n        $message.html(\"Success!\");\n        window.location.href = \"/accounting/trial_balances\";\n      },\n      error: function(response) {\n        var errors  = [];\n\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors = [\"Something went wrong\"];\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmDelete.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n};\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\n\nvar $modalNew;\nvar $inputStartDate;\nvar $inputEndDate;\nvar $selectBranch;\nvar $selectAccountingFund;\nvar $btnNew;\nvar $btnConfirmNew;\nvar $message;\nvar templateErrorList;\nvar _authenticityToken;\nvar _xKoinsAppAuthSecret;\nvar _urlCreate;\nvar _userId;\n\nvar init  = function(options) {\n  _authenticityToken    = options.authenticityToken;\n  _xKoinsAppAuthSecret  = options.xKoinsAppAuthSecret;\n  _urlCreate            = options.urlCreate;\n  _userId               = options.userId;\n\n  _cacheDom();\n  _bindEvents();\n};\n\nvar _cacheDom = function() {\n  $modalNew             = $(\"#modal-new\");\n  $inputStartDate       = $(\"#input-start-date\");\n  $inputEndDate         = $(\"#input-end-date\");\n  $selectBranch         = $(\"#select-branch\");\n  $selectAccountingFund = $(\"#select-accounting-fund\");\n  $btnNew               = $(\"#btn-new\");\n  $btnConfirmNew        = $(\"#btn-confirm-new\");\n  $message              = $(\".message\");\n\n  templateErrorList = $(\"#template-error-list\").html();\n};\n\nvar _bindEvents = function() {\n  $btnNew.on(\"click\", function() {\n    $modalNew.show();\n  });\n\n  $btnConfirmNew.on(\"click\", function() {\n    var startDate         = $inputStartDate.val();\n    var endDate           = $inputEndDate.val();\n    var branchId          = $selectBranch.val();\n    var accountingFundId  = $selectAccountingFund.val();\n\n    $message.html(\"Loading...\");\n\n    $inputStartDate.prop(\"disabled\", true);\n    $inputEndDate.prop(\"disabled\", true);\n    $selectBranch.prop(\"disabled\", true);\n    $selectAccountingFund.prop(\"disabled\", true);\n    $btnConfirmNew.prop(\"disabled\", true);\n\n    $.ajax({\n      url: _urlCreate,\n      method: \"POST\",\n      headers: {\n        'X-KOINS-APP-AUTH-SECRET': _xKoinsAppAuthSecret,\n        'Access-Control-Allow-Methods': '*',\n        'Access-Control-Allow-Headers': '*',\n        'Access-Control-Allow-Origin': '*',\n        'Access-Control-Allow-Credentials': 'true'\n      },\n      data: {\n        start_date: startDate,\n        end_date: endDate,\n        branch_id: branchId,\n        accounting_fund_id: accountingFundId,\n        authenticity_token: _authenticityToken,\n        user_id: _userId\n      },\n      success: function(response) {\n        $message.html(\"Success!\");\n        window.location.reload();\n      },\n      error: function(response) {\n        var errors  = [];\n\n        console.log(\"ERROR\");\n        console.log(response);\n\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors = [\"Something went wrong\"];\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $inputStartDate.prop(\"disabled\", false);\n          $inputEndDate.prop(\"disabled\", false);\n          $selectBranch.prop(\"disabled\", false);\n          $selectAccountingFund.prop(\"disabled\", false);\n          $btnConfirmNew.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n};\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\n\nvar $modalDelete;\nvar $btnDelete;\nvar $btnConfirmDelete;\nvar $message;\nvar templateErrorList;\nvar _authenticityToken;\n\nvar _urlDelete;\nvar _id;\nvar _xKoinsAppAuthSecret;\nvar _userId;\n\nvar init  = function(options) {\n  _id                   = options.id;\n  _authenticityToken    = options.authenticityToken;\n  _urlDelete            = options.urlDelete;\n  _userId               = options.userId;\n  _xKoinsAppAuthSecret  = options.xKoinsAppAuthSecret;\n\n  _cacheDom();\n  _bindEvents();\n}\n\nvar _cacheDom = function() {\n  $modalDelete      = $(\"#modal-delete\");\n  $btnDelete        = $(\"#btn-delete\");\n  $btnConfirmDelete = $(\"#btn-confirm-delete\");\n  $message          = $(\".message\");\n\n  templateErrorList = $(\"#template-error-list\").html();\n};\n\nvar _bindEvents = function() {\n  $btnDelete.on(\"click\", function() {\n    $modalDelete.show();\n  });\n\n  $btnConfirmDelete.on(\"click\", function() {\n    $btnConfirmDelete.prop(\"disabled\", true);\n\n    $.ajax({\n      url: _urlDelete,\n      method: \"POST\",\n      headers: {\n        'X-KOINS-APP-AUTH-SECRET': _xKoinsAppAuthSecret,\n        'Access-Control-Allow-Methods': '*',\n        'Access-Control-Allow-Headers': '*',\n        'Access-Control-Allow-Origin': '*',\n        'Access-Control-Allow-Credentials': 'true'\n      },\n      data: {\n        id: _id,\n        authenticity_token: _authenticityToken,\n        user_id: _userId\n      },\n      success: function(response) {\n        $message.html(\"Success!\");\n        window.location.href = \"/accounting/general_ledgers\";\n      },\n      error: function(response) {\n        var errors  = [];\n\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors = [\"Something went wrong\"];\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmDelete.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n};\n\nexport default { init: init };\n", "import Mustache from 'mustache';\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\n\nvar $inputQ;\nvar $results;\n\nvar q       = \"\";\nvar results = [];\nvar templateMemberList;\n\nvar _urlSearch = \"/api/v1/members/search\";\n\nvar _cacheDom = function() {\n  $inputQ   = $(\"#input-q\");\n  $results  = $(\"#results\");\n\n  templateMemberList = $(\"#template-member-list\").html();\n};\n\nvar _bindEvents = function() {\n  $inputQ.on(\"keyup\", function() {\n\n    q = $inputQ.val();\n    console.log(\"Search: \" + q);\n\n    if(q) {\n      $.ajax({\n        method: \"GET\",\n        url: _urlSearch,\n        data: {\n          q: q\n        },\n        success: function(response) {\n          console.log(response);\n          $inputQ.focus();\n\n          if(response.members.length > 0) {\n            $results.html(\n              Mustache.render(\n                templateMemberList,\n                { members: response.members }\n              )\n            );\n          } else {\n            $results.html(\n              \"No results found\"\n            )\n          }\n        },\n        error: function(response) {\n          console.log(\"Error in searching\");\n          $inputQ.focus();\n        }\n      });\n    } else {\n      $results.html(\n        \"No results found\"\n      );\n    }\n  });\n};\n\nvar init = function(options) {\n  _cacheDom();\n  _bindEvents();\n};\n\nexport default { init: init }\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\nimport select2 from 'select2';\nselect2($);\n\nvar $modalNew;\nvar $modalDelete;\nvar $modalProcess;\nvar $modalBatchProcess;\nvar $selectBranch;\nvar $selectCenter;\nvar $selectMember;\nvar $selectProcessCenter;\nvar $selectLoans;\nvar $inputDateInitialized;\nvar $inputNumberOfDays;\nvar $inputStartDate;\nvar $inputEndDate;\nvar $inputNumberOfMoratoriumDays;\nvar $selectAccruedType;\nvar $inputReason;\nvar $btnNew;\nvar $btnDelete;\nvar $btnProcess;\nvar $btnBatchProcess;\nvar $btnConfirmNew;\nvar $btnConfirmDelete;\nvar $btnConfirmProcess;\nvar $btnConfirmBatchProcess;\nvar $message;\nvar templateErrorList;\nvar _authenticityToken;\n\nvar $inputBatchNumberOfDays;\nvar $selectBatchBranch;\nvar $inputDateInitializedCutOff;\nvar $batchStartDate;\nvar $batchEndDate;\nvar $batchAccruedType;\n\nvar _centers  = [];\nvar _members  = [];\nvar _loans    = [];\nvar _loanIds  = [];\n\nvar _branchId;\nvar _centerId;\nvar _memberId;\nvar _moratoriumId;\n\nvar _urlCreate        = \"/api/v1/adjustments/accrued_interests/create\";\nvar _urlDelete        = \"/api/v1/adjustments/accrued_interests/delete\";\nvar _urlProcess       =  \"#\" // \"/api/v1/adjustments/moratoriums/process\";\nvar _urlProcess       = \"/api/v1/adjustments/accrued_interests/process\";\nvar _urlBatchProcess  = \"/api/v1/adjustments/accrued_interests/batch_process\";\nvar _urlCenters       = \"/api/v1/branches/fetch_centers\";\nvar _urlLoans         = \"/api/v1/loans/fetch_by_member\";\n\nvar init  = function(options) {\n  _authenticityToken = options.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n};\n\nvar _cacheDom = function() {\n  $modalNew = new bootstrap.Modal(\n    document.getElementById(\"modal-new\")\n  );\n\n  $modalDelete = new bootstrap.Modal(\n    document.getElementById(\"modal-delete\")\n  );\n\n  $modalProcess = new bootstrap.Modal(\n    document.getElementById(\"modal-process\")\n  );\n\n  $modalBatchProcess            = $(\"#modal-batch-process\");\n  $selectBranch                 = $(\"#select-branch\");\n  $selectCenter                 = $(\"#select-center\");\n  $selectMember                 = $(\"#select-member\");\n  $selectProcessCenter          = $(\"#select-process-center\");\n  $selectLoans                  = $(\"#select-loans\");\n  $inputDateInitialized         = $(\"#input-date-initialized\");\n  $inputNumberOfDays            = $(\"#input-number-of-days\");\n  $inputStartDate               = $(\"#input-start-date\");\n  $inputEndDate                 = $(\"#input-end-date\");\n  $inputNumberOfMoratoriumDays  = $(\"#input-number-of-moratorium-days\");\n  $selectAccruedType            = $(\"#select-accrued-type\");\n  $inputReason                  = $(\"#input-reason\");\n  $btnNew                       = $(\"#btn-new\");\n  $btnDelete                    = $(\".btn-delete\");\n  $btnProcess                   = $(\".btn-process\");\n  $btnBatchProcess              = $(\"#btn-batch-process\");\n  $btnConfirmNew                = $(\"#btn-confirm-new\");\n  $btnConfirmDelete             = $(\"#btn-confirm-delete\");\n  $btnConfirmProcess            = $(\"#btn-confirm-process\");\n  $btnConfirmBatchProcess       = $(\"#btn-confirm-batch-process\");\n  $message                      = $(\".message\");\n\n  $inputBatchNumberOfDays       = $(\"#input-batch-number-of-moratorium-days\");\n  $selectBatchBranch       = $(\"#select-batch-branch\");\n  $inputDateInitializedCutOff = $(\"#input-date-initialized-cut-off\");\n  $batchStartDate             = $(\"#batch-input-start-date\")\n  $batchEndDate             = $(\"#batch-input-end-date\")\n  $batchAccruedType         = $(\"#select-batch-accrued-type\")\n\n  templateErrorList = $(\"#template-error-list\").html();\n\n  $selectLoans.select2({\n    allowClear: true,\n    width: \"auto\",\n    theme: \"bootstrap\"\n  });\n};\n\nvar _loadCenterOptions  = function() {\n  $selectCenter.html(\"\");\n  $selectMember.html(\"\");\n\n  if(_centers.length > 0) {\n    _centerId = _centers[0].id;\n\n    for(var i = 0; i < _centers.length; i++) {\n      $selectCenter.append(new Option(_centers[i].name, _centers[i].id));\n    }\n  }\n\n  if(_members.length > 0) {\n    _memberId = _members[0].id;\n\n    for(var i = 0; i < _members.length; i++) {\n      $selectMember.append(new Option(_members[i].full_name, _members[i].id));\n    }\n\n    $selectMember.val(_memberId);\n\n    _fetchLoans();\n  }\n};\n\nvar _fetchLoans = function() {\n  $.ajax({\n    method: 'GET',\n    url: _urlLoans,\n    data: {\n      member_id: _memberId\n    },\n    success: function(response) {\n      _loans  = response.loans;\n      console.log(\"Loans:\");\n      console.log(_loans);\n\n      $selectLoans.val(null).trigger('change');\n      $selectLoans.empty();\n\n      _loans.forEach(function(o, i) {\n        $selectLoans.append(\n          new Option(\n            o.loan_product.name,\n            o.id,\n            false,\n            false\n          )\n        ).trigger('change');\n      });\n    },\n    error: function(response) {\n      console.log(\"Error in fetching loans.\");\n      console.log(response);\n    }\n  });\n};\n\nvar _bindEvents = function() {\n  $selectMember.on(\"change\", function() {\n    _memberId = $(this).val();\n\n    _fetchLoans();\n  });\n\n  $btnBatchProcess.on(\"click\", function() {\n  \n    $modalBatchProcess.show();\n  });\n\n  $btnConfirmBatchProcess.on(\"click\", function() {\n  \n   var batchnumberOfDays    = $inputBatchNumberOfDays.val();\n   var selectBatchBranch    = $selectBatchBranch.val();\n   var inputDateInitializedCutOff =  $inputDateInitializedCutOff.val()\n    \n  var batchStartDate = $batchStartDate.val()       \n  var batchEndDate = $batchEndDate.val()  \n  var batchAccruedType = $batchAccruedType.val()\n\n  \n    $message.html(\"Loading...\");\n    $btnConfirmBatchProcess.prop(\"disabled\", true);\n\n\n    $.ajax({\n      url: _urlBatchProcess,\n      method: \"POST\",\n      data: {\n        branch_id:  selectBatchBranch,\n        batchnumberOfDays: batchnumberOfDays,\n        inputDateInitializedCutOff: inputDateInitializedCutOff,\n        batchStartDate: batchStartDate,\n        batchEndDate: batchEndDate,  \n        batchAccruedType: batchAccruedType\n    \n      },\n      success: function(response) {\n        $message.html(\"Success!\");\n        window.location.reload();\n      },\n      error: function(response) {\n        var errors  = [];\n\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors = [\"Something went wrong\"];\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmBatchProcess.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  $btnProcess.on(\"click\", function() {\n    _moratoriumId = $(this).data(\"id\");\n    $modalProcess.show();\n  });\n\n  $btnConfirmProcess.on(\"click\", function() {\n    $message.html(\"Loading...\");\n    $btnConfirmProcess.prop(\"disabled\", true);\n\n    $.ajax({\n      url: _urlProcess,\n      method: \"POST\",\n      data: {\n        id: _moratoriumId,\n        authenticity_token: _authenticityToken\n      },\n      success: function(response) {\n        $message.html(\"Success!\");\n        window.location.reload();\n      },\n      error: function(response) {\n        var errors  = [];\n\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors = [\"Something went wrong\"];\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmProcess.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  $btnDelete.on(\"click\", function() {\n    _moratoriumId = $(this).data(\"id\");\n    $modalDelete.show();\n  });\n\n  $btnConfirmDelete.on(\"click\", function() {\n    $message.html(\"Loading...\");\n    $btnConfirmDelete.prop(\"disabled\", true);\n\n    $.ajax({\n      url: _urlDelete,\n      method: \"POST\",\n      data: {\n        id: _moratoriumId\n      },\n      success: function(response) {\n        $message.html(\"Success!\");\n        window.location.reload();\n      },\n      error: function(response) {\n        console.log(response);\n        alert(\"Error in deleting record!\");\n        $message.html(\"\");\n        $btnConfirmDelete.prop(\"disabled\", false);\n      }\n    });\n  });\n\n  $selectCenter.on(\"change\", function() {\n    _centerId = $selectCenter.val();\n\n    _members  = _centers.find(c => c.id === _centerId).members;\n\n    $selectMember.html(\"\");\n    for(var i = 0; i < _members.length; i++) {\n      $selectMember.append(new Option(_members[i].full_name, _members[i].id));\n    }\n\n    if(_members.length > 0) {\n      _memberId = _members[i].id;\n\n      _fetchLoans();\n    }\n  });\n\n  $selectBranch.on(\"change\", function() {\n    $.ajax({\n      method: 'GET',\n      url: _urlCenters,\n      data: {\n        id: $selectBranch.val(),\n        with_members: true\n      },\n      success: function(response) {\n        _centers  = response.centers;\n\n        if(_centers.length > 0) {\n          _members  = _centers[0].members;\n        }\n\n        _loadCenterOptions();\n      },\n      error: function(response) {\n        console.log(response);\n        alert(\"Error in fetching centers\");\n      }\n    });\n  });\n\n  $btnNew.on(\"click\", function() {\n    $modalNew.show();\n  });\n\n  $btnConfirmNew.on(\"click\", function() {\n    _branchId           = $selectBranch.val();\n    _centerId           = $selectCenter.val();\n    _memberId           = $selectMember.val();\n    _loanIds            = $selectLoans.val();\n\n    var dateInitialized = $inputDateInitialized.val();\n    var numberOfDays    = $inputNumberOfDays.val();\n    var reason          = $inputReason.val();\n    var startDate       = $inputStartDate.val();\n    var endDate         = $inputEndDate.val();\n    var inputNumberOfMoratoriumDays =  $inputNumberOfMoratoriumDays.val();\n    var selectAccruedType = $selectAccruedType.val();\n\n    \n\n    $btnConfirmNew.prop(\"disabled\", true);\n    $selectBranch.prop(\"disabled\", true);\n    $selectCenter.prop(\"disabled\", true);\n    $selectMember.prop(\"disabled\", true);\n    $selectLoans.prop(\"disabled\", true);\n    $inputDateInitialized.prop(\"disabled\", true);\n    $inputNumberOfDays.prop(\"disabled\", true);\n    $inputReason.prop(\"disabled\", true);\n    $inputStartDate.prop(\"disabled\", true);\n    $inputEndDate.prop(\"disabled\", true);\n\n    console.log(_loanIds);\n\n    $message.html(\"Loading...\");\n\n    $.ajax({\n      url: _urlCreate,\n      method: \"POST\",\n      data: {\n        branch_id: _branchId,\n        center_id: _centerId,\n        member_id: _memberId,\n        loan_ids: _loanIds,\n        date_initialized: dateInitialized,\n        number_of_days: numberOfDays,\n        start_date: startDate,\n        end_date: endDate,\n        input_number_of_moratorium_days: inputNumberOfMoratoriumDays,\n        select_accrued_type: selectAccruedType, \n        reason: reason,\n        authenticity_token: _authenticityToken\n      },\n      success: function(resonse) {\n        $message.html(\n          \"Success! Redirecting...\"\n        );\n\n        window.location.reload();\n      },\n      error: function(response) {\n        var errors  = [];\n\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors = [\"Something went wrong\"];\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmNew.prop(\"disabled\", false);\n          $selectBranch.prop(\"disabled\", false);\n          $selectCenter.prop(\"disabled\", false);\n          $selectMember.prop(\"disabled\", false);\n          $selectLoans.prop(\"disabled\", false);\n          $inputDateInitialized.prop(\"disabled\", false);\n          $inputReason.prop(\"disabled\", false);\n          $inputNumberOfDays.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n};\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\nimport select2 from 'select2';\nselect2($);\n\nvar $modalNew;\nvar $modalDelete;\nvar $modalProcess;\nvar $modalBatchProcess;\nvar $selectBranch;\nvar $selectCenter;\nvar $selectMember;\nvar $selectProcessCenter;\nvar $selectLoans;\nvar $inputDateInitialized;\nvar $inputNumberOfDays;\nvar $inputStartDate;\nvar $inputEndDate;\nvar $inputNumberOfMoratoriumDays;\nvar $selectAccruedType;\nvar $inputReason;\nvar $btnNew;\nvar $btnDelete;\nvar $btnProcess;\nvar $btnBatchProcess;\nvar $btnConfirmNew;\nvar $btnConfirmDelete;\nvar $btnConfirmProcess;\nvar $btnConfirmBatchProcess;\nvar $message;\nvar templateErrorList;\nvar _authenticityToken;\n\n\nvar $btnRemove;\nvar $modalRemove;\nvar $btnConfirmRemove;\nvar $inputAccruedId;\n\nvar $btnErase;\nvar $modalErase;\nvar $btnConfirmErase;\n\nvar _centers  = [];\nvar _members  = [];\nvar _loans    = [];\nvar _loanIds  = [];\n\nvar _branchId;\nvar _centerId;\nvar _memberId;\nvar _moratoriumId;\nvar _memberDetails;\n\nvar _urlCreate        = \"/api/v1/adjustments/accrued_interests/create\";\nvar _urlDelete        = \"/api/v1/adjustments/accrued_interests/delete\";\nvar _urlProcess       =  \"#\" // \"/api/v1/adjustments/moratoriums/process\";\nvar _urlProcess       = \"/api/v1/adjustments/accrued_interests/process\";\nvar _urlBatchProcess  = \"#\"  //\"/api/v1/adjustments/moratoriums/batch_process\";\nvar _urlCenters       = \"/api/v1/branches/fetch_centers\";\nvar _urlLoans         = \"/api/v1/loans/fetch_by_member\";\nvar _urlRemove        = \"/api/v1/adjustments/accrued_interests/remove\";\nvar _urlEraseRecord        = \"/api/v1/adjustments/accrued_interests/erase_record\";\nvar init  = function(options) {\n  _authenticityToken = options.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n};\n\nvar _cacheDom = function() {\n  $modalNew                     = $(\"#modal-new\");\n  $modalDelete                  = $(\"#modal-delete\");\n  $modalProcess                 = $(\"#modal-process\");\n  $modalBatchProcess            = $(\"#modal-batch-process\");\n  $selectBranch                 = $(\"#select-branch\");\n  $selectCenter                 = $(\"#select-center\");\n  $selectMember                 = $(\"#select-member\");\n  $selectProcessCenter          = $(\"#select-process-center\");\n  $selectLoans                  = $(\"#select-loans\");\n  $inputDateInitialized         = $(\"#input-date-initialized\");\n  $inputNumberOfDays            = $(\"#input-number-of-days\");\n  $inputStartDate               = $(\"#input-start-date\");\n  $inputEndDate                 = $(\"#input-end-date\");\n  $inputNumberOfMoratoriumDays  = $(\"#input-number-of-moratorium-days\");\n  $selectAccruedType            = $(\"#select-accrued-type\");\n  $inputReason                  = $(\"#input-reason\");\n  $btnNew                       = $(\"#btn-new\");\n  $btnDelete                    = $(\".btn-delete\");\n  $btnProcess                   = $(\".btn-process\");\n  $btnBatchProcess              = $(\"#btn-batch-process\");\n  $btnConfirmNew                = $(\"#btn-confirm-new\");\n  $btnConfirmDelete             = $(\"#btn-confirm-delete\");\n  $btnConfirmProcess            = $(\"#btn-confirm-process\");\n  $btnConfirmBatchProcess       = $(\"#btn-confirm-batch-process\");\n  $message                      = $(\".message\");\n\n  $btnRemove                    = $(\".btn-remove\");\n  $modalRemove                  = $(\"#modal-remove\");\n  $btnConfirmRemove             = $(\"#btn-confirm-remove\");\n  $inputAccruedId               = $(\"#accrued_id\");\n  $btnErase                    = $(\".btn-erase\"); \n  $modalErase                  = $(\"#modal-erase\");\n  $btnConfirmErase             = $(\"#btn-confirm-erase\");\n\n  templateErrorList = $(\"#template-error-list\").html();\n\n  $selectLoans.select2({\n    allowClear: true,\n    width: \"auto\",\n    theme: \"bootstrap\"\n  });\n};\n\nvar _loadCenterOptions  = function() {\n  $selectCenter.html(\"\");\n  $selectMember.html(\"\");\n\n  if(_centers.length > 0) {\n    _centerId = _centers[0].id;\n\n    for(var i = 0; i < _centers.length; i++) {\n      $selectCenter.append(new Option(_centers[i].name, _centers[i].id));\n    }\n  }\n\n  if(_members.length > 0) {\n    _memberId = _members[0].id;\n\n    for(var i = 0; i < _members.length; i++) {\n      $selectMember.append(new Option(_members[i].full_name, _members[i].id));\n    }\n\n    $selectMember.val(_memberId);\n\n    _fetchLoans();\n  }\n};\n\nvar _fetchLoans = function() {\n  $.ajax({\n    method: 'GET',\n    url: _urlLoans,\n    data: {\n      member_id: _memberId\n    },\n    success: function(response) {\n      _loans  = response.loans;\n      console.log(\"Loans:\");\n      console.log(_loans);\n\n      $selectLoans.val(null).trigger('change');\n      $selectLoans.empty();\n\n      _loans.forEach(function(o, i) {\n        $selectLoans.append(\n          new Option(\n            o.loan_product.name,\n            o.id,\n            false,\n            false\n          )\n        ).trigger('change');\n      });\n    },\n    error: function(response) {\n      console.log(\"Error in fetching loans.\");\n      console.log(response);\n    }\n  });\n};\n\nvar _bindEvents = function() {\n  $selectMember.on(\"change\", function() {\n    _memberId = $(this).val();\n\n    _fetchLoans();\n  });\n\n  $btnBatchProcess.on(\"click\", function() {\n    $modalBatchProcess.show();\n  });\n\n  $btnConfirmBatchProcess.on(\"click\", function() {\n    $message.html(\"Loading...\");\n    $btnConfirmBatchProcess.prop(\"disabled\", true);\n\n    var centerId = $selectProcessCenter.val();\n\n    $.ajax({\n      url: _urlBatchProcess,\n      method: \"POST\",\n      data: {\n        center_id: centerId,\n        authenticity_token: _authenticityToken\n      },\n      success: function(response) {\n        $message.html(\"Success!\");\n        window.location.reload();\n      },\n      error: function(response) {\n        var errors  = [];\n\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors = [\"Something went wrong\"];\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmBatchProcess.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  $btnProcess.on(\"click\", function() {\n    _moratoriumId = $(this).data(\"id\");\n    $modalProcess.show();\n  });\n\n  $btnConfirmProcess.on(\"click\", function() {\n    $message.html(\"Loading...\");\n    $btnConfirmProcess.prop(\"disabled\", true);\n\n    $.ajax({\n      url: _urlProcess,\n      method: \"POST\",\n      data: {\n        id: _moratoriumId,\n        authenticity_token: _authenticityToken\n      },\n      success: function(response) {\n        $message.html(\"Success!\");\n        window.location.reload();\n      },\n      error: function(response) {\n        var errors  = [];\n\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors = [\"Something went wrong\"];\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmProcess.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  $btnErase.on(\"click\", function(){\n    _memberDetails = $(this).data(\"id\");\n    $modalErase.show();\n  });\n\n  $btnConfirmErase.on(\"click\", function(){\n    $message.html(\"Loading...\");\n    $btnConfirmErase.prop(\"disabled\", true);\n    var inputAccruedId =  $inputAccruedId.val()\n      \n      $.ajax({\n        url: _urlEraseRecord,\n        method: \"POST\",\n        data: {\n          id: _memberDetails,\n          accrued_id: inputAccruedId\n        },\n        success: function(response) {\n          $message.html(\"Success!\");\n          window.location.reload();\n        }\n      });\n    \n  });\n  \n  $btnRemove.on(\"click\", function() {\n    _memberDetails = $(this).data(\"id\");\n    $modalRemove.show();\n  \n  });\n\n\n  $btnDelete.on(\"click\", function() {\n    _moratoriumId = $(this).data(\"id\");\n    $modalDelete.show();\n  });\n\n  $btnConfirmRemove.on(\"click\", function(){\n    $message.html(\"Loading...\");\n    $btnConfirmRemove.prop(\"disabled\", true);\n\n    var inputAccruedId =  $inputAccruedId.val()\n\n      $.ajax({\n        url: _urlRemove,\n        method: \"POST\",\n        data: {\n          id: _memberDetails,\n          accrued_id: inputAccruedId\n        },\n        success: function(response) {\n          $message.html(\"Success!\");\n          window.location.reload();\n        }\n      });\n\n  });\n\n  $btnConfirmDelete.on(\"click\", function() {\n    $message.html(\"Loading...\");\n    $btnConfirmDelete.prop(\"disabled\", true);\n\n    $.ajax({\n      url: _urlDelete,\n      method: \"POST\",\n      data: {\n        id: _moratoriumId\n      },\n      success: function(response) {\n        $message.html(\"Success!\");\n        window.location.href=\"/adjustments/accrued_interests/\";\n      },\n      error: function(response) {\n        console.log(response);\n        alert(\"Error in deleting record!\");\n        $message.html(\"\");\n        $btnConfirmDelete.prop(\"disabled\", false);\n      }\n    });\n  });\n\n  $selectCenter.on(\"change\", function() {\n    _centerId = $selectCenter.val();\n\n    _members  = _centers.find(c => c.id === _centerId).members;\n\n    $selectMember.html(\"\");\n    for(var i = 0; i < _members.length; i++) {\n      $selectMember.append(new Option(_members[i].full_name, _members[i].id));\n    }\n\n    if(_members.length > 0) {\n      _memberId = _members[i].id;\n\n      _fetchLoans();\n    }\n  });\n\n  $selectBranch.on(\"change\", function() {\n    $.ajax({\n      method: 'GET',\n      url: _urlCenters,\n      data: {\n        id: $selectBranch.val(),\n        with_members: true\n      },\n      success: function(response) {\n        _centers  = response.centers;\n\n        if(_centers.length > 0) {\n          _members  = _centers[0].members;\n        }\n\n        _loadCenterOptions();\n      },\n      error: function(response) {\n        console.log(response);\n        alert(\"Error in fetching centers\");\n      }\n    });\n  });\n\n  $btnNew.on(\"click\", function() {\n    $modalNew.show();\n  });\n\n  $btnConfirmNew.on(\"click\", function() {\n    _branchId           = $selectBranch.val();\n    _centerId           = $selectCenter.val();\n    _memberId           = $selectMember.val();\n    _loanIds            = $selectLoans.val();\n\n    var dateInitialized = $inputDateInitialized.val();\n    var numberOfDays    = $inputNumberOfDays.val();\n    var reason          = $inputReason.val();\n    var startDate       = $inputStartDate.val();\n    var endDate         = $inputEndDate.val();\n    var inputNumberOfMoratoriumDays =  $inputNumberOfMoratoriumDays.val();\n    var selectAccruedType = $selectAccruedType.val();\n\n    $btnConfirmNew.prop(\"disabled\", true);\n    $selectBranch.prop(\"disabled\", true);\n    $selectCenter.prop(\"disabled\", true);\n    $selectMember.prop(\"disabled\", true);\n    $selectLoans.prop(\"disabled\", true);\n    $inputDateInitialized.prop(\"disabled\", true);\n    $inputNumberOfDays.prop(\"disabled\", true);\n    $inputReason.prop(\"disabled\", true);\n    $inputStartDate.prop(\"disabled\", true);\n    $inputEndDate.prop(\"disabled\", true);\n\n    console.log(_loanIds);\n\n    $message.html(\"Loading...\");\n\n    $.ajax({\n      url: _urlCreate,\n      method: \"POST\",\n      data: {\n        branch_id: _branchId,\n        center_id: _centerId,\n        member_id: _memberId,\n        loan_ids: _loanIds,\n        date_initialized: dateInitialized,\n        number_of_days: numberOfDays,\n        start_date: startDate,\n        end_date: endDate,\n        input_number_of_moratorium_days: inputNumberOfMoratoriumDays,\n        select_accrued_type: selectAccruedType, \n        reason: reason,\n        authenticity_token: _authenticityToken\n      },\n      success: function(resonse) {\n        $message.html(\n          \"Success! Redirecting...\"\n        );\n\n        window.location.reload();\n      },\n      error: function(response) {\n        var errors  = [];\n\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors = [\"Something went wrong\"];\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmNew.prop(\"disabled\", false);\n          $selectBranch.prop(\"disabled\", false);\n          $selectCenter.prop(\"disabled\", false);\n          $selectMember.prop(\"disabled\", false);\n          $selectLoans.prop(\"disabled\", false);\n          $inputDateInitialized.prop(\"disabled\", false);\n          $inputReason.prop(\"disabled\", false);\n          $inputNumberOfDays.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n};\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\r\nimport $ from \"jquery\";\r\nimport * as bootstrap from \"bootstrap\";\r\n\r\nvar $btnNewTransaction;\r\nvar $btnConfirmNewTransaction;\r\nvar $modalNewTransaction;\r\nvar $modalDelete;\r\nvar $modalProcess;\r\nvar $modalBatchProcess;\r\nvar $selectBranch;\r\nvar $selectCenter;\r\nvar $selectMember;\r\nvar $selectProcessCenter;\r\nvar $selectLoans;\r\nvar $inputDateInitialized;\r\nvar $inputNumberOfDays;\r\nvar $inputReason;\r\nvar $btnDelete;\r\nvar $btnProcess;\r\nvar $btnBatchProcess;\r\nvar $btnConfirmDelete;\r\nvar $btnConfirmProcess;\r\nvar $btnConfirmBatchProcess;\r\nvar $message;\r\nvar templateErrorList;\r\nvar _authenticityToken;\r\n\r\nvar _centers  = [];\r\nvar _members  = [];\r\nvar _loans    = [];\r\nvar _loanIds  = [];\r\n\r\nvar _branchId;\r\nvar _centerId;\r\nvar _memberId;\r\nvar _moratoriumId;\r\n\r\nvar _urlCreate        = \"/api/v1/accrued_payment_collections\";\r\nvar _urlDelete        = \"/api/v1/adjustments/moratoriums/delete\";\r\nvar _urlProcess       = \"/api/v1/adjustments/moratoriums/process\";\r\nvar _urlBatchProcess  = \"/api/v1/adjustments/moratoriums/batch_process\";\r\nvar _urlCenters       = \"/api/v1/branches/fetch_centers\";\r\nvar _urlLoans         = \"/api/v1/loans/fetch_by_member\";\r\n\r\nvar init  = function(options) {\r\n  _authenticityToken = options.authenticityToken;\r\n\r\n  _cacheDom();\r\n  _bindEvents();\r\n};\r\n\r\nvar _cacheDom = function() {\r\n  $modalNewTransaction = new bootstrap.Modal(\r\n    document.getElementById(\"modal-new-transaction\")\r\n  );\r\n\r\n  $selectBranch             = $(\"#select-branch\");\r\n  $selectCenter             = $(\"#select-center\");\r\n  $selectProcessCenter      = $(\"#select-process-center\");\r\n  $inputDateInitialized     = $(\"#input-date-initialized\");\r\n  $inputNumberOfDays        = $(\"#input-number-of-days\");\r\n  $inputReason              = $(\"#input-reason\");\r\n  $btnNewTransaction        = $(\"#btn-new-transaction\");\r\n  $btnConfirmNewTransaction = $(\"#btn-confirm-new-transaction\");\r\n  $btnConfirmDelete         = $(\"#btn-confirm-delete\");\r\n  $btnConfirmProcess        = $(\"#btn-confirm-process\");\r\n  $btnConfirmBatchProcess   = $(\"#btn-confirm-batch-process\");\r\n  $message                  = $(\".message\");\r\n\r\n  templateErrorList = $(\"#template-error-list\").html();\r\n};\r\n\r\nvar _loadCenterOptions  = function() {\r\n  $selectCenter.html(\"\");\r\n\r\n  if(_centers.length > 0) {\r\n    _centerId = _centers[0].id;\r\n\r\n    for(var i = 0; i < _centers.length; i++) {\r\n      $selectCenter.append(new Option(_centers[i].name, _centers[i].id));\r\n    }\r\n  }\r\n};\r\n\r\nvar _fetchLoans = function() {\r\n  $.ajax({\r\n    method: 'GET',\r\n    url: _urlLoans,\r\n    data: {\r\n      member_id: _memberId\r\n    },\r\n    success: function(response) {\r\n      _loans  = response.loans;\r\n      console.log(\"Loans:\");\r\n      console.log(_loans);\r\n\r\n      $selectLoans.val(null).trigger('change');\r\n      $selectLoans.empty();\r\n\r\n      _loans.forEach(function(o, i) {\r\n        $selectLoans.append(\r\n          new Option(\r\n            o.loan_product.name,\r\n            o.id,\r\n            false,\r\n            false\r\n          )\r\n        ).trigger('change');\r\n      });\r\n    },\r\n    error: function(response) {\r\n      console.log(\"Error in fetching loans.\");\r\n      console.log(response);\r\n    }\r\n  });\r\n};\r\n\r\nvar _bindEvents = function() {\r\n  $selectCenter.on(\"change\", function() {\r\n    _centerId = $selectCenter.val();\r\n  });\r\n\r\n  $selectBranch.on(\"change\", function() {\r\n    $.ajax({\r\n      method: 'GET',\r\n      url: _urlCenters,\r\n      data: {\r\n        id: $selectBranch.val(),\r\n        with_members: true\r\n      },\r\n      success: function(response) {\r\n        _centers  = response.centers;\r\n\r\n        if(_centers.length > 0) {\r\n          _members  = _centers[0].members;\r\n        }\r\n\r\n        _loadCenterOptions();\r\n      },\r\n      error: function(response) {\r\n        console.log(response);\r\n        alert(\"Error in fetching centers\");\r\n      }\r\n    });\r\n  });\r\n\r\n  $btnNewTransaction.on(\"click\", function() {\r\n    $modalNewTransaction.show();\r\n  });\r\n\r\n  $btnConfirmNewTransaction.on(\"click\", function() {\r\n    _branchId           = $selectBranch.val();\r\n    _centerId           = $selectCenter.val();\r\n\r\n    $btnConfirmNewTransaction.prop(\"disabled\", true);\r\n    $selectBranch.prop(\"disabled\", true);\r\n    $selectCenter.prop(\"disabled\", true);\r\n   \r\n    $message.html(\"Loading...\");\r\n\r\n    $.ajax({\r\n      url: _urlCreate,\r\n      method: \"POST\",\r\n      data: {\r\n        branch_id: _branchId,\r\n        center_id: _centerId,\r\n        authenticity_token: _authenticityToken\r\n      },\r\n      success: function(resonse) {\r\n        $message.html(\r\n          \"Success! Redirecting...\"\r\n        );\r\n\r\n        window.location.reload();\r\n      },\r\n      error: function(response) {\r\n        var errors  = [];\r\n\r\n        try {\r\n          errors  = JSON.parse(response.responseText).full_messages;\r\n        } catch(err) {\r\n          errors = [\"Something went wrong\"];\r\n        } finally {\r\n          $message.html(\r\n            Mustache.render(\r\n              templateErrorList,\r\n              { errors: errors }\r\n            )\r\n          );\r\n\r\n          $btnConfirmNewTransaction.prop(\"disabled\", false);\r\n          $selectBranch.prop(\"disabled\", false);\r\n          $selectCenter.prop(\"disabled\", false);\r\n        }\r\n      }\r\n    });\r\n  });\r\n};\r\n\r\nexport default { init: init };\r\n", "import Mustache from \"mustache\";\r\nimport $ from \"jquery\";\r\nimport * as bootstrap from \"bootstrap\";\r\nimport select2 from 'select2';\r\nselect2($);\r\n\r\nvar $modalDelete;\r\nvar $modalApproveTransaction;\r\nvar $modalProcess;\r\nvar $modalBatchProcess;\r\nvar $modalZeroOut;\r\nvar $selectBranch;\r\nvar $selectCenter;\r\nvar $selectMember;\r\nvar $selectProcessCenter;\r\nvar $selectLoans;\r\nvar $inputCollectionDate;\r\nvar $inputNumberOfDays;\r\nvar $inputStartDate;\r\nvar $inputEndDate;\r\nvar $inputNumberOfMoratoriumDays;\r\nvar $selectAccruedType;\r\nvar $inputReason;\r\nvar $btnNew;\r\nvar $btnDelete;\r\nvar $btnProcess;\r\nvar $btnBatchProcess;\r\nvar $btnConfirmNew;\r\nvar $btnConfirmDelete;\r\nvar $btnConfirmProcess;\r\nvar $btnConfirmBatchProcess;\r\nvar $message;\r\nvar templateErrorList;\r\nvar _authenticityToken;\r\n\r\nvar $btnApprove;\r\nvar $btnZero;\r\nvar $btnConfirmZero;\r\nvar _id;\r\n\r\nvar $btnAddParticular;\r\nvar $inputParticular;\r\nvar $btnAddOr;\r\nvar $inputOrNumber;\r\nvar $inputSiNumber;\r\nvar $btnAddSi;\r\nvar $btnAddAr;\r\nvar $inputArNumber;\r\nvar $btnAddBook;\r\nvar $inputBookType;\r\n\r\nvar $inputBatchNumberOfDays;\r\nvar $selectBatchBranch;\r\nvar $inputDateInitializedCutOff;\r\nvar $batchStartDate;\r\nvar $batchEndDate;\r\nvar $batchAccruedType;\r\n\r\nvar $labelMemberName;\r\nvar $labeMemberLoanName;\r\n\r\n\r\nvar _centers  = [];\r\nvar _members  = [];\r\nvar _loans    = [];\r\nvar _loanIds  = [];\r\n\r\nvar _branchId;\r\nvar _centerId;\r\nvar _memberId;\r\nvar _moratoriumId;\r\n\r\nvar _memberId;\r\nvar _memberAccountId;\r\nvar _dataStoreId;  \r\nvar _recordType;\r\nvar _loanAmount;\r\n\r\nvar _urlCreate        = \"/api/v1/accrued_payment_collections/update_transaction\";\r\nvar _urlDelete        = \"/api/v1/accrued_payment_collections/delete\";\r\nvar _urlProcess       =  \"#\" // \"/api/v1/adjustments/moratoriums/process\";\r\nvar _urlProcess       = \"/api/v1/accrued_payment_collections/approve_transaction\";\r\nvar _urlProcessZero   = \"/api/v1/accrued_payment_collections/process_zero\";\r\nvar _urlBatchProcess  = \"/api/v1/adjustments/accrued_interests/batch_process\";\r\nvar _urlCenters       = \"/api/v1/branches/fetch_centers\";\r\nvar _urlLoans         = \"/api/v1/loans/fetch_by_member\";\r\nvar _urlAddParticular = \"/api/v1/accrued_payment_collections/add_particular\";\r\nvar _urlAddOr     = \"/api/v1/accrued_payment_collections/add_or\";\r\nvar _urlAddSi     = \"/api/v1/accrued_payment_collections/add_si\";\r\nvar _urlAddAr     = \"/api/v1/accrued_payment_collections/add_ar\";\r\nvar _urlAddBookType     = \"/api/v1/accrued_payment_collections/add_book_type\";\r\n\r\n\r\n\r\nvar init  = function(options) {\r\n  _authenticityToken = options.authenticityToken;\r\n\r\n  _cacheDom();\r\n  _bindEvents();\r\n};\r\n\r\nvar _cacheDom = function() {\r\n  $modalApproveTransaction = new bootstrap.Modal(\r\n    document.getElementById(\"modal-approve-transaction\")\r\n  )\r\n\r\n  $modalDelete = new bootstrap.Modal(\r\n    document.getElementById(\"modal-delete\")\r\n  )\r\n\r\n  $modalProcess = new bootstrap.Modal(\r\n    document.getElementById(\"modal-update-transaction\")\r\n  )\r\n\r\n  $modalZeroOut = new bootstrap.Modal(\r\n    document.getElementById(\"modal-zero-out\")\r\n  )\r\n\r\n  $selectBranch                 = $(\"#select-branch\");\r\n  $selectCenter                 = $(\"#select-center\");\r\n  $selectMember                 = $(\"#select-member\");\r\n  $selectProcessCenter          = $(\"#select-process-center\");\r\n  $selectLoans                  = $(\"#select-loans\");\r\n  $inputNumberOfDays            = $(\".amount_details\");\r\n  $inputStartDate               = $(\"#bookId\");\r\n  $inputEndDate                 = $(\"#input-end-date\");\r\n  $inputNumberOfMoratoriumDays  = $(\"#input-number-of-moratorium-days\");\r\n  $selectAccruedType            = $(\"#select-accrued-type\");\r\n  $inputReason                  = $(\"#input-reason\");\r\n  $btnNew                       = $(\".undo\");\r\n  $btnDelete                    = $(\"#btn-delete\");\r\n  $btnProcess                   = $(\".btn-process\");\r\n  $btnBatchProcess              = $(\"#btn-batch-process\");\r\n  $btnConfirmNew                = $(\"#btn-confirm-approve\");\r\n  $btnConfirmDelete             = $(\"#btn-confirm-delete\");\r\n  $btnConfirmProcess            = $(\"#btn-confirm-process\");\r\n  $btnConfirmBatchProcess       = $(\"#btn-confirm-batch-process\");\r\n  $message                      = $(\".message\");\r\n\r\n  $btnApprove\t\t\t= $(\"#btn-approve\");\r\n  $btnZero\t\t\t= $(\"#btn-zero\");\r\n  $btnConfirmZero\t\t= $(\"#btn-confirm-zero\");\r\n\r\n  $btnAddParticular         = $(\"#btn-add-particular\");\r\n  $inputParticular          = $(\"#particular\");\r\n  $btnAddOr         = $(\"#btn-add-or\");\r\n  $inputOrNumber     = $(\"#or_number\");\r\n  $inputSiNumber     = $(\"#si_number\");\r\n  $btnAddSi         = $(\"#btn-add-si\");\r\n  \r\n  $btnAddAr         = $(\"#btn-add-ar\");\r\n  $inputArNumber          = $(\"#ar_number\");\r\n  $btnAddBook         = $(\"#btn-add-book\");\r\n  $inputBookType          = $(\"#book_type\");\r\n\r\n\r\n  $labelMemberName = $(\"#memberName\");\r\n  $labeMemberLoanName = $(\"#memberLoanName\");\r\n \r\n\r\n  $inputBatchNumberOfDays       = $(\"#input-batch-number-of-moratorium-days\");\r\n  $selectBatchBranch       = $(\"#select-batch-branch\");\r\n  $inputDateInitializedCutOff = $(\"#input-date-initialized-cut-off\");\r\n  $batchStartDate             = $(\"#batch-input-start-date\")\r\n  $batchEndDate             = $(\"#batch-input-end-date\")\r\n  $batchAccruedType         = $(\"#select-batch-accrued-type\")\r\n  $inputCollectionDate      = $(\"#collection-date\")\r\n  templateErrorList = $(\"#template-error-list\").html();\r\n\r\n  $selectLoans.select2({\r\n    allowClear: true,\r\n    width: \"auto\",\r\n    theme: \"bootstrap\"\r\n  });\r\n};\r\n\r\nvar _loadCenterOptions  = function() {\r\n  $selectCenter.html(\"\");\r\n  $selectMember.html(\"\");\r\n\r\n  if(_centers.length > 0) {\r\n    _centerId = _centers[0].id;\r\n\r\n    for(var i = 0; i < _centers.length; i++) {\r\n      $selectCenter.append(new Option(_centers[i].name, _centers[i].id));\r\n    }\r\n  }\r\n\r\n  if(_members.length > 0) {\r\n    _memberId = _members[0].id;\r\n\r\n    for(var i = 0; i < _members.length; i++) {\r\n      $selectMember.append(new Option(_members[i].full_name, _members[i].id));\r\n    }\r\n\r\n    $selectMember.val(_memberId);\r\n\r\n    _fetchLoans();\r\n  }\r\n};\r\n\r\nvar _fetchLoans = function() {\r\n  $.ajax({\r\n    method: 'GET',\r\n    url: _urlLoans,\r\n    data: {\r\n      member_id: _memberId\r\n    },\r\n    success: function(response) {\r\n      _loans  = response.loans;\r\n      console.log(\"Loans:\");\r\n      console.log(_loans);\r\n\r\n      $selectLoans.val(null).trigger('change');\r\n      $selectLoans.empty();\r\n\r\n      _loans.forEach(function(o, i) {\r\n        $selectLoans.append(\r\n          new Option(\r\n            o.loan_product.name,\r\n            o.id,\r\n            false,\r\n            false\r\n          )\r\n        ).trigger('change');\r\n      });\r\n    },\r\n    error: function(response) {\r\n      console.log(\"Error in fetching loans.\");\r\n      console.log(response);\r\n    }\r\n  });\r\n};\r\n\r\nvar _bindEvents = function() {\r\n  $selectMember.on(\"change\", function() {\r\n    _memberId = $(this).val();\r\n\r\n    _fetchLoans();\r\n  });\r\n\r\n  $btnBatchProcess.on(\"click\", function() {\r\n  \r\n    $modalBatchProcess.show();\r\n  });\r\n\r\n  $btnConfirmBatchProcess.on(\"click\", function() {\r\n  \r\n   var batchnumberOfDays    = $inputBatchNumberOfDays.val();\r\n   var selectBatchBranch    = $selectBatchBranch.val();\r\n   var inputDateInitializedCutOff =  $inputDateInitializedCutOff.val()\r\n    \r\n  var batchStartDate = $batchStartDate.val()       \r\n  var batchEndDate = $batchEndDate.val()  \r\n  var batchAccruedType = $batchAccruedType.val()\r\n\r\n  \r\n    $message.html(\"Loading...\");\r\n    $btnConfirmBatchProcess.prop(\"disabled\", true);\r\n\r\n\r\n    $.ajax({\r\n      url: _urlBatchProcess,\r\n      method: \"POST\",\r\n      data: {\r\n        branch_id:  selectBatchBranch,\r\n        batchnumberOfDays: batchnumberOfDays,\r\n        inputDateInitializedCutOff: inputDateInitializedCutOff,\r\n        batchStartDate: batchStartDate,\r\n        batchEndDate: batchEndDate,  \r\n        batchAccruedType: batchAccruedType\r\n    \r\n      },\r\n      success: function(response) {\r\n        $message.html(\"Success!\");\r\n        window.location.reload();\r\n      },\r\n      error: function(response) {\r\n        var errors  = [];\r\n\r\n        try {\r\n          errors  = JSON.parse(response.responseText).full_messages;\r\n        } catch(err) {\r\n          errors = [\"Something went wrong\"];\r\n        } finally {\r\n          $message.html(\r\n            Mustache.render(\r\n              templateErrorList,\r\n              { errors: errors }\r\n            )\r\n          );\r\n\r\n          $btnConfirmBatchProcess.prop(\"disabled\", false);\r\n        }\r\n      }\r\n    });\r\n  });\r\n\r\n  $btnAddParticular.on(\"click\", function() {\r\n    var txtParticular = $inputParticular.val()\r\n    _id = $(this).data(\"id\");\t  \r\n    $.ajax({\t    \r\n      url: _urlAddParticular,\r\n      method: \"POST\",\r\n      data: {\r\n\tid: _id,\r\n\ttxtParticular: txtParticular,\r\n        authenticity_token: _authenticityToken\r\n      },\r\n      success: function(response) {\r\n        $message.html(\"Success!\");\r\n        window.location.reload();\r\n      },\r\n      error: function(response) {\r\n        var errors  = [];\r\n\r\n        try {\r\n          errors  = JSON.parse(response.responseText).full_messages;\r\n        } catch(err) {\r\n          errors = [\"Something went wrong\"];\r\n        } finally {\r\n          $message.html(\r\n            Mustache.render(\r\n              templateErrorList,\r\n              { errors: errors }\r\n            )\r\n          );\r\n\r\n          $btnAddParticular.prop(\"disabled\", false);\r\n        }\r\n      }\r\n    });\r\n  });\r\n\r\n  $btnAddBook.on(\"click\", function() {\r\n   var txtBookType = $inputBookType.val()\t  \r\n   _id = $(this).data(\"id\");\t  \r\n    $.ajax({\t    \r\n      url: _urlAddBookType,\r\n      method: \"POST\",\r\n      data: {\r\n\tid: _id,\r\n\ttxtBookType:  txtBookType,\r\n        authenticity_token: _authenticityToken\r\n      },\r\n      success: function(response) {\r\n        $message.html(\"Success!\");\r\n        window.location.reload();\r\n      },\r\n      error: function(response) {\r\n        var errors  = [];\r\n\r\n        try {\r\n          errors  = JSON.parse(response.responseText).full_messages;\r\n        } catch(err) {\r\n          errors = [\"Something went wrong\"];\r\n        } finally {\r\n          $message.html(\r\n            Mustache.render(\r\n              templateErrorList,\r\n              { errors: errors }\r\n            )\r\n          );\r\n\r\n          $btnAddBook.prop(\"disabled\", false);\r\n        }\r\n      }\r\n    });\r\n \r\n  });\r\n\r\n  $btnProcess.on(\"click\", function() {\r\n    alert(\"jef\")\r\n    _moratoriumId = $(this).data(\"id\");\r\n    $modalProcess.show();\r\n  });\r\n  $btnAddSi.on(\"click\", function(){\r\n    var txtSi = $inputSiNumber.val();\r\n    _id = $(this).data(\"id\");\r\n    $.ajax({\t    \r\n      url: _urlAddSi,\r\n      method: \"POST\",\r\n      data: {\r\n        id: _id,\r\n        txtSi: txtSi,\r\n        authenticity_token: _authenticityToken\r\n      },\r\n      success: function(response) {\r\n        $message.html(\"Success!\");\r\n        window.location.reload();\r\n      },\r\n      error: function(response) {\r\n        var errors  = [];\r\n\r\n        try {\r\n          errors  = JSON.parse(response.responseText).full_messages;\r\n        } catch(err) {\r\n          errors = [\"Something went wrong\"];\r\n        } finally {\r\n          $message.html(\r\n            Mustache.render(\r\n              templateErrorList,\r\n              { errors: errors }\r\n            )\r\n          );\r\n\r\n          $btnAddOr.prop(\"disabled\", false);\r\n        }\r\n      }\r\n    });\r\n  });\r\n  $btnAddOr.on(\"click\", function() {\r\n    var txtOr = $inputOrNumber.val()\r\n    _id = $(this).data(\"id\");\t  \r\n    $.ajax({\t    \r\n      url: _urlAddOr,\r\n      method: \"POST\",\r\n      data: {\r\n\tid: _id,\r\n\ttxtOr: txtOr,\r\n        authenticity_token: _authenticityToken\r\n      },\r\n      success: function(response) {\r\n        $message.html(\"Success!\");\r\n        window.location.reload();\r\n      },\r\n      error: function(response) {\r\n        var errors  = [];\r\n\r\n        try {\r\n          errors  = JSON.parse(response.responseText).full_messages;\r\n        } catch(err) {\r\n          errors = [\"Something went wrong\"];\r\n        } finally {\r\n          $message.html(\r\n            Mustache.render(\r\n              templateErrorList,\r\n              { errors: errors }\r\n            )\r\n          );\r\n\r\n          $btnAddOr.prop(\"disabled\", false);\r\n        }\r\n      }\r\n    });\r\n \r\n  });\r\n  \r\n  $btnAddAr.on(\"click\", function() {\r\n    var txtAr = $inputArNumber.val()\r\n    _id = $(this).data(\"id\");\t  \r\n    $.ajax({\t    \r\n      url: _urlAddAr,\r\n      method: \"POST\",\r\n      data: {\r\n\tid: _id,\r\n\ttxtAr: txtAr,\r\n        authenticity_token: _authenticityToken\r\n      },\r\n      success: function(response) {\r\n        $message.html(\"Success!\");\r\n        window.location.reload();\r\n      },\r\n      error: function(response) {\r\n        var errors  = [];\r\n\r\n        try {\r\n          errors  = JSON.parse(response.responseText).full_messages;\r\n        } catch(err) {\r\n          errors = [\"Something went wrong\"];\r\n        } finally {\r\n          $message.html(\r\n            Mustache.render(\r\n              templateErrorList,\r\n              { errors: errors }\r\n            )\r\n          );\r\n\r\n          $btnAddAr.prop(\"disabled\", false);\r\n        }\r\n      }\r\n    });\r\n \r\n  });\r\n\r\n\r\n\r\n  $btnZero.on(\"click\", function() {\r\n     _id = $(this).data(\"id\");\r\n\t  //alert(_id);\r\n     $modalZeroOut.show();\r\n  });\r\n  $btnConfirmZero.on(\"click\", function() {\r\n    $message.html(\"Loading...\"); \r\n    $btnConfirmZero.prop(\"disabled\", true);\r\n\r\n    $.ajax({\r\n      url: _urlProcessZero,\r\n      method: \"POST\",\r\n      data: {\r\n        id: _id,\r\n        authenticity_token: _authenticityToken\r\n      },\r\n      success: function(response) {\r\n        $message.html(\"Success!\");\r\n        window.location.reload();\r\n      },\r\n      error: function(response) {\r\n        var errors  = [];\r\n\r\n        try {\r\n          errors  = JSON.parse(response.responseText).full_messages;\r\n        } catch(err) {\r\n          errors = [\"Something went wrong\"];\r\n        } finally {\r\n          $message.html(\r\n            Mustache.render(\r\n              templateErrorList,\r\n              { errors: errors }\r\n            )\r\n          );\r\n\r\n          $btnConfirmZero.prop(\"disabled\", false);\r\n        }\r\n      }\r\n    });\r\n\r\n  });\r\n \r\n   \r\n   $btnApprove.on(\"click\", function() {\r\n     _id = $(this).data(\"id\");\r\n\t  //alert(_id);\r\n    $modalApproveTransaction.show();\r\n  });\r\n\r\n\r\n  $btnConfirmProcess.on(\"click\", function() {\t  \t  \r\n    $message.html(\"Loading...\");\r\n    $btnConfirmProcess.prop(\"disabled\", true);\r\n\r\n    $.ajax({\r\n      url: _urlProcess,\r\n      method: \"POST\",\r\n      data: {\r\n        id: _id,\r\n        authenticity_token: _authenticityToken\r\n      },\r\n      success: function(response) {\r\n        $message.html(\"Success!\");\r\n        window.location.reload();\r\n      },\r\n      error: function(response) {\r\n        var errors  = [];\r\n\r\n        try {\r\n          errors  = JSON.parse(response.responseText).full_messages;\r\n        } catch(err) {\r\n          errors = [\"Something went wrong\"];\r\n        } finally {\r\n          $message.html(\r\n            Mustache.render(\r\n              templateErrorList,\r\n              { errors: errors }\r\n            )\r\n          );\r\n\r\n          $btnConfirmProcess.prop(\"disabled\", false);\r\n        }\r\n      }\r\n    });\r\n  });\r\n\r\n  $btnDelete.on(\"click\", function() {\r\n    _id = $(this).data(\"id\");\r\n    $modalDelete.show();\r\n  });\r\n\r\n  $btnConfirmDelete.on(\"click\", function() {\r\n    $message.html(\"Loading...\");\r\n    $btnConfirmDelete.prop(\"disabled\", true);\r\n\r\n    $.ajax({\r\n      url: _urlDelete,\r\n      method: \"POST\",\r\n      data: {\r\n        id: _id\r\n      },\r\n      success: function(response) {\r\n        $message.html(\"Success!\");\r\n\t      //window.location.reload();\r\n\t      window.location.href=\"/accrued_payment_collections\"\r\n\r\n      },\r\n      error: function(response) {\r\n        console.log(response);\r\n        alert(\"Error in deleting record!\");\r\n        $message.html(\"\");\r\n        $btnConfirmDelete.prop(\"disabled\", false);\r\n      }\r\n    });\r\n  });\r\n\r\n  $selectCenter.on(\"change\", function() {\r\n    _centerId = $selectCenter.val();\r\n\r\n\r\n  });\r\n\r\n  $selectBranch.on(\"change\", function() {\r\n    $.ajax({\r\n      method: 'GET',\r\n      url: _urlCenters,\r\n      data: {\r\n        id: $selectBranch.val(),\r\n        with_members: true\r\n      },\r\n      success: function(response) {\r\n        _centers  = response.centers;\r\n\r\n        if(_centers.length > 0) {\r\n          _members  = _centers[0].members;\r\n        }\r\n\r\n        _loadCenterOptions();\r\n      },\r\n      error: function(response) {\r\n        console.log(response);\r\n        alert(\"Error in fetching centers\");\r\n      }\r\n    });\r\n  });\r\n\r\n  $btnNew.on(\"click\", function() {\r\n  \r\n\t  var amount = $(this).data('amount')\r\n\t  var memberId = $(this).data('member-data-id') \r\n\t  var memberName = $(this).data('member-account-name')\r\n\t  var memberAccountId = $(this).data('loan-data-id')\r\n\t  var dataStoreId = $(this).data('collection-id')     \r\n\t  //var recordType = $(this).data('record-type')\r\n\t  $inputStartDate.val(amount)\r\n\t  $labelMemberName.text(memberName)\r\n    \r\n\t  //alert (amount);\r\n    \r\n    \r\n\t  _memberId          = memberId \r\n\t  _memberAccountId   = memberAccountId\r\n\t  _dataStoreId       = dataStoreId\r\n\t  //_recordType        = recordType\r\n\t  //alert(_dataStoreId);\r\n    $modalProcess.show();\r\n  });\r\n\r\n  $btnConfirmNew.on(\"click\", function(e) {\r\n    \r\n     _loanAmount = $inputStartDate.val()\r\n    \r\n  \r\n\r\n    _branchId           = $selectBranch.val();\r\n    _centerId           = $selectCenter.val();\r\n\r\n    var inputCollectionDate  = $inputCollectionDate.val();\r\n    var numberOfDays    = $inputNumberOfDays.val();\r\n    var reason          = $inputReason.val();\r\n    var startDate       = $inputStartDate.val();\r\n    var endDate         = $inputEndDate.val();\r\n    var inputNumberOfMoratoriumDays =  $inputNumberOfMoratoriumDays.val();\r\n    var selectAccruedType = $selectAccruedType.val();\r\n\t\r\n    \r\n\r\n    $btnConfirmNew.prop(\"disabled\", true);\r\n    $selectBranch.prop(\"disabled\", true);\r\n    $selectCenter.prop(\"disabled\", true);\r\n\t  //alert(_memberAccountId);\r\n    console.log(_loanIds);\r\n    $message.html(\"Loading...\");\r\n\r\n    $.ajax({\r\n      url: _urlCreate,\r\n      method: \"POST\",\r\n      data: {\r\n            member_id:          _memberId,\r\n            member_account_id:  _memberAccountId,\r\n            data_store_id:      _dataStoreId,\r\n\t      //record_type:        _recordType,\r\n            loan_amount:        _loanAmount\r\n      },\r\n      success: function(resonse) {\r\n        $message.html(\r\n          \"Success! Redirecting...\"\r\n        );\r\n\r\n        window.location.reload();\r\n      },\r\n      error: function(response) {\r\n        var errors  = [];\r\n\r\n        try {\r\n          errors  = JSON.parse(response.responseText).full_messages;\r\n        } catch(err) {\r\n          errors = [\"Something went wrong\"];\r\n        } finally {\r\n          $message.html(\r\n            Mustache.render(\r\n              templateErrorList,\r\n              { errors: errors }\r\n            )\r\n          );\r\n\r\n          $btnConfirmNew.prop(\"disabled\", false);\r\n          $selectBranch.prop(\"disabled\", false);\r\n          $selectCenter.prop(\"disabled\", false);\r\n          $selectMember.prop(\"disabled\", false);\r\n          $selectLoans.prop(\"disabled\", false);\r\n          $inputReason.prop(\"disabled\", false);\r\n          $inputNumberOfDays.prop(\"disabled\", false);\r\n        }\r\n      }\r\n    });\r\n  });\r\n};\r\n\r\nexport default { init: init };\r\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\nimport select2 from 'select2';\nselect2($);\n\nvar $modalNew;\nvar $modalDelete;\nvar $modalProcess;\nvar $modalBatchProcess;\nvar $selectBranch;\nvar $selectCenter;\nvar $selectMember;\nvar $selectProcessCenter;\nvar $selectLoans;\nvar $inputDateInitialized;\nvar $inputNumberOfDays;\nvar $inputStartDate;\nvar $inputEndDate;\nvar $inputNumberOfMoratoriumDays;\nvar $selectAccruedType;\nvar $inputReason;\nvar $btnNew;\nvar $btnDelete;\nvar $btnProcess;\nvar $btnBatchProcess;\nvar $btnConfirmNew;\nvar $btnConfirmDelete;\nvar $btnConfirmProcess;\nvar $btnConfirmBatchProcess;\nvar $message;\nvar templateErrorList;\nvar _authenticityToken;\n\nvar $inputBatchNumberOfDays;\nvar $selectBatchBranch;\nvar $inputDateInitializedCutOff;\nvar $batchStartDate;\nvar $batchEndDate;\nvar $batchAccruedType;\n\nvar _centers  = [];\nvar _members  = [];\nvar _loans    = [];\nvar _loanIds  = [];\n\nvar _branchId;\nvar _centerId;\nvar _memberId;\nvar _moratoriumId;\n\nvar _urlCreate        = \"/api/v1/adjustments/recompute_restructures/create\";\nvar _urlDelete        = \"/api/v1/adjustments/accrued_interests/delete\";\nvar _urlProcess       =  \"#\" // \"/api/v1/adjustments/moratoriums/process\";\nvar _urlProcess       = \"/api/v1/adjustments/accrued_interests/process\";\nvar _urlBatchProcess  = \"/api/v1/adjustments/accrued_interests/batch_process\";\nvar _urlCenters       = \"/api/v1/branches/fetch_centers_for_restructure\";\nvar _urlLoans         = \"/api/v1/loans/fetch_by_member\";\n\nvar init  = function(options) {\n  _authenticityToken = options.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n};\n\nvar _cacheDom = function() {\n  $modalNew = new bootstrap.Modal(\n    document.getElementById(\"modal-new\")\n  );\n\n  //$modalDelete = new bootstrap.Modal(\n  //  document.getElementById(\"modal-delete\")\n  //);\n\n  //$modalProcess = new bootstrap.Modal(\n  //  document.getElementById(\"modal-process\")\n  //);\n\n  //$modalBatchProcess = new bootstrap.Modal(\n  //  document.getElementById(\"modal-batch-process\")\n  //);\n\n  $selectBranch                 = $(\"#select-branch\");\n  $selectCenter                 = $(\"#select-center\");\n  $selectMember                 = $(\"#select-member\");\n  $selectProcessCenter          = $(\"#select-process-center\");\n  $selectLoans                  = $(\"#select-loans\");\n  $inputDateInitialized         = $(\"#input-date-initialized\");\n  $inputNumberOfDays            = $(\"#input-number-of-days\");\n  $inputStartDate               = $(\"#input-start-date\");\n  $inputEndDate                 = $(\"#input-end-date\");\n  $inputNumberOfMoratoriumDays  = $(\"#input-number-of-moratorium-days\");\n  $selectAccruedType            = $(\"#select-accrued-type\");\n  $inputReason                  = $(\"#input-reason\");\n  $btnNew                       = $(\"#btn-new\");\n  $btnDelete                    = $(\".btn-delete\");\n  $btnProcess                   = $(\".btn-process\");\n  $btnBatchProcess              = $(\"#btn-batch-process\");\n  $btnConfirmNew                = $(\"#btn-confirm-new\");\n  $btnConfirmDelete             = $(\"#btn-confirm-delete\");\n  $btnConfirmProcess            = $(\"#btn-confirm-process\");\n  $btnConfirmBatchProcess       = $(\"#btn-confirm-batch-process\");\n  $message                      = $(\".message\");\n\n  $inputBatchNumberOfDays       = $(\"#input-batch-number-of-moratorium-days\");\n  $selectBatchBranch       = $(\"#select-batch-branch\");\n  $inputDateInitializedCutOff = $(\"#input-date-initialized-cut-off\");\n  $batchStartDate             = $(\"#batch-input-start-date\")\n  $batchEndDate             = $(\"#batch-input-end-date\")\n  $batchAccruedType         = $(\"#select-batch-accrued-type\")\n\n  templateErrorList = $(\"#template-error-list\").html();\n\n  $selectLoans.select2({\n    allowClear: true,\n    width: \"auto\",\n    theme: \"bootstrap\"\n  });\n};\n\nvar _loadCenterOptions  = function() {\n  $selectCenter.html(\"\");\n  $selectMember.html(\"\");\n\n  if(_centers.length > 0) {\n    _centerId = _centers[0].id;\n\n    for(var i = 0; i < _centers.length; i++) {\n      $selectCenter.append(new Option(_centers[i].name, _centers[i].id));\n    }\n  }\n\n  if(_members.length > 0) {\n    _memberId = _members[0].id;\n\n    for(var i = 0; i < _members.length; i++) {\n      $selectMember.append(new Option(_members[i].full_name, _members[i].id));\n    }\n\n    $selectMember.val(_memberId);\n\n    _fetchLoans();\n  }\n};\n\nvar _fetchLoans = function() {\n  $.ajax({\n    method: 'GET',\n    url: _urlLoans,\n    data: {\n      member_id: _memberId\n    },\n    success: function(response) {\n      _loans  = response.loans;\n      console.log(\"Loans:\");\n      console.log(_loans);\n\n      $selectLoans.val(null).trigger('change');\n      $selectLoans.empty();\n\n      _loans.forEach(function(o, i) {\n        $selectLoans.append(\n          new Option(\n            o.loan_product.name,\n            o.id,\n            false,\n            false\n          )\n        ).trigger('change');\n      });\n    },\n    error: function(response) {\n      console.log(\"Error in fetching loans.\");\n      console.log(response);\n    }\n  });\n};\n\nvar _bindEvents = function() {\n  $selectMember.on(\"change\", function() {\n    _memberId = $(this).val();\n\n    _fetchLoans();\n  });\n\n  $btnBatchProcess.on(\"click\", function() {\n  \n    $modalBatchProcess.show();\n  });\n\n  $btnConfirmBatchProcess.on(\"click\", function() {\n  \n   var batchnumberOfDays    = $inputBatchNumberOfDays.val();\n   var selectBatchBranch    = $selectBatchBranch.val();\n   var inputDateInitializedCutOff =  $inputDateInitializedCutOff.val()\n    \n  var batchStartDate = $batchStartDate.val()       \n  var batchEndDate = $batchEndDate.val()  \n  var batchAccruedType = $batchAccruedType.val()\n\n  \n    $message.html(\"Loading...\");\n    $btnConfirmBatchProcess.prop(\"disabled\", true);\n\n\n    $.ajax({\n      url: _urlBatchProcess,\n      method: \"POST\",\n      data: {\n        branch_id:  selectBatchBranch,\n        batchnumberOfDays: batchnumberOfDays,\n        inputDateInitializedCutOff: inputDateInitializedCutOff,\n        batchStartDate: batchStartDate,\n        batchEndDate: batchEndDate,  \n        batchAccruedType: batchAccruedType\n    \n      },\n      success: function(response) {\n        $message.html(\"Success!\");\n        window.location.reload();\n      },\n      error: function(response) {\n        var errors  = [];\n\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors = [\"Something went wrong\"];\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmBatchProcess.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  $btnProcess.on(\"click\", function() {\n    _moratoriumId = $(this).data(\"id\");\n    $modalProcess.show();\n  });\n\n  $btnConfirmProcess.on(\"click\", function() {\n    $message.html(\"Loading...\");\n    $btnConfirmProcess.prop(\"disabled\", true);\n\n    $.ajax({\n      url: _urlProcess,\n      method: \"POST\",\n      data: {\n        id: _moratoriumId,\n        authenticity_token: _authenticityToken\n      },\n      success: function(response) {\n        $message.html(\"Success!\");\n        window.location.reload();\n      },\n      error: function(response) {\n        var errors  = [];\n\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors = [\"Something went wrong\"];\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmProcess.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  $btnDelete.on(\"click\", function() {\n    _moratoriumId = $(this).data(\"id\");\n    $modalDelete.show();\n  });\n\n  $btnConfirmDelete.on(\"click\", function() {\n    $message.html(\"Loading...\");\n    $btnConfirmDelete.prop(\"disabled\", true);\n\n    $.ajax({\n      url: _urlDelete,\n      method: \"POST\",\n      data: {\n        id: _moratoriumId\n      },\n      success: function(response) {\n        $message.html(\"Success!\");\n        window.location.reload();\n      },\n      error: function(response) {\n        console.log(response);\n        alert(\"Error in deleting record!\");\n        $message.html(\"\");\n        $btnConfirmDelete.prop(\"disabled\", false);\n      }\n    });\n  });\n\n  $selectCenter.on(\"change\", function() {\n    _centerId = $selectCenter.val();\n\n    _members  = _centers.find(c => c.id === _centerId).members;\n\n    $selectMember.html(\"\");\n    for(var i = 0; i < _members.length; i++) {\n      $selectMember.append(new Option(_members[i].full_name, _members[i].id));\n    }\n\n    if(_members.length > 0) {\n      _memberId = _members[i].id;\n\n      _fetchLoans();\n    }\n  });\n\n  $selectBranch.on(\"change\", function() {\n    $.ajax({\n      method: 'GET',\n      url: _urlCenters,\n      data: {\n        id: $selectBranch.val(),\n        with_members: true\n      },\n      success: function(response) {\n        _centers  = response.centers;\n\n        if(_centers.length > 0) {\n          _members  = _centers[0].members;\n        }\n\n        _loadCenterOptions();\n      },\n      error: function(response) {\n        console.log(response);\n        alert(\"Error in fetching centers\");\n      }\n    });\n  });\n\n  $btnNew.on(\"click\", function() {\n    $modalNew.show();\n  });\n\n  $btnConfirmNew.on(\"click\", function() {\n    _branchId           = $selectBranch.val();\n    _centerId           = $selectCenter.val();\n    _memberId           = $selectMember.val();\n\n\n    \n\n    $btnConfirmNew.prop(\"disabled\", true);\n    $selectBranch.prop(\"disabled\", true);\n    $selectCenter.prop(\"disabled\", true);\n    $selectMember.prop(\"disabled\", true);\n\n    console.log(_loanIds);\n\n    $message.html(\"Loading...\");\n\n    $.ajax({\n      url: _urlCreate,\n      method: \"POST\",\n      data: {\n        branch_id: _branchId,\n        center_id: _centerId,\n        member_id: _memberId,\n        authenticity_token: _authenticityToken\n      },\n      success: function(response) {\n        $message.html(\n          \"Success! Redirecting...\"\n        );\n\n        window.location.href=\"/adjustments/recompute_restructures/\" + response.id;\n      },\n      error: function(response) {\n        var errors  = [];\n\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors = [\"Something went wrong\"];\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n        }\n      }\n    });\n  });\n};\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\n\nvar options;\nvar recomputeRestructureId;\nvar authenticityToken;\n\nvar $btnApprove;\nvar $btnConfirmApprove;\nvar $modalApprove;\n\nvar $btnDelete;\nvar $modalDelete;\nvar $btnConfirmDelete;\n\nvar $btnPrint;\nvar $modalPrint;\n\nvar $message;\nvar templateErrorList;\n\nvar _urlApprove = \"/api/v1/adjustments/recompute_restructures/approve\";\nvar _urlPrint   = \"#\" //\"/api/v1/print/generate_file\";\nvar _urlDelete = \"/api/v1/adjustments/recompute_restructures/destroy\";\n\nvar _cacheDom = function() {\n  $modalApprove = new bootstrap.Modal(\n    document.getElementById(\"modal-approve\")\n  );\n\n  $modalDelete = new bootstrap.Modal(\n    document.getElementById(\"modal-delete\")\n  );\n\n\n  $btnApprove         = $(\"#btn-approve\");\n  $btnConfirmApprove  = $(\"#btn-confirm-approve\");\n\n  $btnDelete         = $(\"#btn-delete\");\n  $btnConfirmDelete  = $(\"#btn-confirm-delete\");\n  \n  $btnPrint   = $(\"#btn-print\");\n\n  $message          = $(\".message\");\n  templateErrorList = $(\"#template-error-list\").html();\n};\n\nvar _bindEvents = function() {\n  $btnPrint.on(\"click\", function() {\n    $modalPrint.show();\n\n    $.ajax({\n      url: \"/api/v1/print/generate_file\",\n      method: 'POST',\n      data: { \n        id: insuranceWithdrawalCollectionId,\n        type: \"insurance_withdrawal_collection\",\n        authenticity_token: authenticityToken\n      },\n      success: function(response) {\n        $message.html(\n          \"Success! Redirecting...\"\n        );\n\n        $modalPrint.hide();\n        window.open(\"/print?filename=\" + response.filename, '_blank');\n      },\n      error: function(response) {\n        $message.html(\"Error!\");\n      }\n    });\n  });\n\n  $btnDelete.on(\"click\", function(){\n    $message.html(\"\");\n    $modalDelete.show();\n  });\n\n  $btnConfirmDelete.on(\"click\", function() {\n    $message.html(\"Loading...\");\n    $btnConfirmDelete.prop(\"disabled\", true);\n\n    $.ajax({\n      url: _urlDelete,\n      method: \"POST\",\n      data: {\n        id: recomputeRestructureId,\n        authenticity_token: authenticityToken\n      },\n      success: function(response) {\n        $message.html(\"Success!\");\n        window.location.href=\"/adjustments/recompute_restructures/\";\n      },\n      error: function(response) {\n        console.log(response);\n        alert(\"Error in deleting record!\");\n        $message.html(\"\");\n        $btnConfirmDelete.prop(\"disabled\", false);\n      }\n    });\n  });\n\n  $btnApprove.on(\"click\", function() {\n    $message.html(\"\");\n    $modalApprove.show();\n  });\n  \n\n  $btnConfirmApprove.on(\"click\", function() {\n    $message.html(\"Loading...\");\n    $btnConfirmApprove.prop(\"disabled\", true);\n\n    $.ajax({\n      url: _urlApprove,\n      method: 'POST',\n      dataType: 'json',\n      data: {\n        id: recomputeRestructureId,\n        authenticity_token: authenticityToken\n      },\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.reload();\n      },\n      error: function(response) {\n        console.log(response);\n        var errors  = [];\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmApprove.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n};\n\nvar init  = function(options) {\n  recomputeRestructureId = options.id;\n  authenticityToken   = options.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n};\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\n\nvar authenticityToken;\nvar _urlSave;\nvar _userId;\nvar _xKoinsAppAuthSecret;\n\nvar $modalNew;\nvar $btnNew;\nvar $btnConfirmNew;\nvar $inputAsOf;\nvar $selectBranch;\n\nvar $message;\nvar templateErrorList;\n\nvar _cacheDom = function() {\n  $modalNew      = new bootstrap.Modal(\n    document.getElementById(\"modal-new\")\n\n  );\n  $btnNew         = $(\"#btn-new\");\n  $btnConfirmNew  = $(\"#btn-confirm-new\");\n  $inputAsOf      = $(\"#input-as-of\");\n  $selectBranch   = $(\"#select-branch\");\n\n  $message          = $(\".message\");\n  templateErrorList = $(\"#template-error-list\").html();\n};\n\nvar _bindEvents = function() {\n  $btnNew.on(\"click\", function() {\n    $modalNew.show();\n  });\n\n  $btnConfirmNew.on(\"click\", function() {\n    var asOf      = $inputAsOf.val();\n    var branchId  = $selectBranch.val();\n\n    $message.html(\"Loading...\");\n    $btnConfirmNew.prop(\"disabled\", true);\n    $selectBranch.prop(\"disabled\", true);\n    $inputAsOf.prop(\"disabled\", true);\n\n    var data  = {\n      as_of: asOf,\n      branch_id: branchId,\n      authenticity_token: authenticityToken,\n      user_id: _userId\n    }\n\n    $.ajax({\n      url: _urlSave,\n      method: 'POST',\n      headers: {\n        'X-KOINS-APP-AUTH-SECRET': _xKoinsAppAuthSecret,\n        'Access-Control-Allow-Methods': '*',\n        'Access-Control-Allow-Headers': '*',\n        'Access-Control-Allow-Origin': '*',\n        'Access-Control-Allow-Credentials': 'true'\n      },\n      data: data,\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.reload();\n      },\n      error: function(response) {\n        console.log(response.responseText);\n        var errors  = [];\n\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          console.log(err);\n          errors  = [\"Something went wrong\"];\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmNew.prop(\"disabled\", false);\n          $selectBranch.prop(\"disabled\", false);\n          $inputAsOf.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n};\n\nvar init = function(options) {\n  authenticityToken     = options.authenticityToken;\n  _urlSave              = options.urlSave;\n  _userId               = options.userId;\n  _xKoinsAppAuthSecret  = options.xKoinsAppAuthSecret;\n\n  _cacheDom();\n  _bindEvents();\n};\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\n\nvar $btnGenerateAccountingReport;\nvar $btnGenerateDailyReport;\nvar $btnConfirmGenerateDailyReport;\nvar $btnConfirmGenerateAccountingReport;\nvar $modalGenerateDailyReport;\nvar $modalGenerateAccountingReport;\nvar $selectBranch;\nvar $inputAsOf;\nvar $selectAccReportBranch;\nvar $selectAccReportAccountingFund;\nvar $inputAccReportStartDate;\nvar $inputAccReportEndDate;\nvar $xFormControl;\n\nvar $message;\nvar templateErrorList;\nvar templateSuccessMessage;\n\nvar _urlGenerateDailyReport;\nvar _urlGenerateAccountingReport;\nvar _userId;\nvar _xKoinsAppAuthSecret;\n\nvar _cacheDom = function() {\n  $modalGenerateDailyReport = new bootstrap.Modal(\n    document.getElementById(\"modal-generate-daily-report\")\n  );\n\n  $modalGenerateAccountingReport = new bootstrap.Modal(\n    document.getElementById(\"modal-generate-accounting-report\")\n  );\n\n  $btnGenerateDailyReport             = $(\"#btn-generate-daily-report\");\n  $btnGenerateAccountingReport        = $(\"#btn-generate-accounting-report\");\n  $btnConfirmGenerateDailyReport      = $(\"#btn-confirm-generate-daily-report\");\n  $btnConfirmGenerateAccountingReport = $(\"#btn-confirm-generate-accounting-report\");\n\n  $selectBranch                       = $(\"#select-branch\");\n  $inputAsOf                          = $(\"#input-as-of\");\n  $selectAccReportBranch              = $(\"#select-acc-report-branch\");\n  $selectAccReportAccountingFund      = $(\"#select-acc-report-accounting-fund\");\n  $inputAccReportStartDate            = $(\"#input-acc-report-start-date\");\n  $inputAccReportEndDate              = $(\"#input-acc-report-end-date\");\n  $xFormControl                       = $(\".x-form-control\");\n\n  $message                = $(\".message\");\n  templateErrorList       = $(\"#template-error-list\").html();\n  templateSuccessMessage  = $(\"#template-success-message\").html();\n};\n\nvar _bindEvents = function() {\n  $btnGenerateAccountingReport.on(\"click\", function() {\n    $message.html(\"\");\n    $modalGenerateAccountingReport.show();\n  });\n\n  $btnConfirmGenerateAccountingReport.on(\"click\", function() {\n    var accountingFundId  = $selectAccReportAccountingFund.val();\n    var branchId          = $selectAccReportBranch.val();\n    var startDate         = $inputAccReportStartDate.val();\n    var endDate           = $inputAccReportEndDate.val();\n\n    var data = {\n      start_date: startDate,\n      end_date: endDate,\n      branch_id: branchId,\n      accounting_fund_id: accountingFundId,\n      user_id: _userId\n    }\n\n    $xFormControl.prop(\"disabled\", true);\n    $message.html(\"Loading...\");\n\n    $.ajax({\n      url: _urlGenerateAccountingReport,\n      method: 'POST',\n      headers: {\n        'X-KOINS-APP-AUTH-SECRET': _xKoinsAppAuthSecret,\n        'Access-Control-Allow-Methods': '*',\n        'Access-Control-Allow-Headers': '*',\n        'Access-Control-Allow-Origin': '*',\n        'Access-Control-Allow-Credentials': 'true'\n      },\n      data: data,\n      success: function(response) {\n        $message.html(\n          Mustache.render(\n            templateSuccessMessage,\n            { message: \"Success! You may now close this window\" }\n          )\n        );\n\n\n        $xFormControl.prop(\"disabled\", false);\n        $selectAccReportBranch.val(\"\");\n      },\n      error: function(response) {\n        console.log(response.responseText);\n        var errors  = [];\n\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          console.log(err);\n          errors  = [\"Something went wrong\"];\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $xFormControl.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  $btnGenerateDailyReport.on(\"click\", function() {\n    $message.html(\"\");\n    $modalGenerateDailyReport.show();\n  });\n\n  $btnConfirmGenerateDailyReport.on(\"click\", function() {\n    var asOf      = $inputAsOf.val();\n    var branchId  = $selectBranch.val();\n\n    var data = {\n      as_of: asOf,\n      branch_id: branchId,\n      user_id: _userId\n    }\n\n    $xFormControl.prop(\"disabled\", true);\n    $message.html(\"Loading...\");\n\n    $.ajax({\n      url: _urlGenerateDailyReport,\n      method: 'POST',\n      headers: {\n        'X-KOINS-APP-AUTH-SECRET': _xKoinsAppAuthSecret,\n        'Access-Control-Allow-Methods': '*',\n        'Access-Control-Allow-Headers': '*',\n        'Access-Control-Allow-Origin': '*',\n        'Access-Control-Allow-Credentials': 'true'\n      },\n      data: data,\n      success: function(response) {\n        $message.html(\n          Mustache.render(\n            templateSuccessMessage,\n            { message: \"Success! You may now close this window\" }\n          )\n        );\n\n\n        $xFormControl.prop(\"disabled\", false);\n        $selectBranch.val(\"\");\n      },\n      error: function(response) {\n        console.log(response.responseText);\n        var errors  = [];\n\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          console.log(err);\n          errors  = [\"Something went wrong\"];\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $xFormControl.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n};\n\nvar init = function(config) {\n  _urlGenerateDailyReport       = config.urlGenerateDailyReport;\n  _urlGenerateAccountingReport  = config.urlGenerateAccountingReport;\n  _userId                       = config.userId;\n  _xKoinsAppAuthSecret          = config.xKoinsAppAuthSecret;\n\n  _cacheDom();\n  _bindEvents();\n};\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\n\nvar $btnNew;\nvar $btnConfirmNew;\nvar $selectBranch;\nvar $selectMonth;\nvar $selectYear;\nvar $modalNew;\n\nvar $message;\nvar $xFormControl;\nvar templateErrorList;\nvar templateSuccessMessage;\n\nvar _urlCreate;\nvar _userId;\nvar _xKoinsAppAuthSecret;\n\nvar _cacheDom = function() {\n  $btnNew         = $(\"#btn-new\");\n  $btnConfirmNew  = $(\"#btn-confirm-new\");\n  $selectBranch   = $(\"#select-branch\");\n  $selectMonth    = $(\"#select-month\");\n  $selectYear     = $(\"#select-year\");\n  $modalNew = new bootstrap.Modal(\n    document.getElementById(\"modal-new\")\n  )\n\n  $message                = $(\".message\");\n  $xFormControl           = $(\".x-form-control\");\n  templateErrorList       = $(\"#template-error-list\").html();\n  templateSuccessMessage  = $(\"#template-success-message\").html();\n};\n\nvar _bindEvents = function() {\n  $btnNew.on(\"click\", function() {\n    $modalNew.show();\n    $message.html(\"\");\n  });\n\n  $btnConfirmNew.on(\"click\", function() {\n    var branchId  = $selectBranch.val();\n    var month     = $selectMonth.val();\n    var year      = $selectYear.val();\n\n    var data = {\n      branch_id: branchId,\n      month: month,\n      year: year,\n      user_id: _userId\n    };\n\n    $xFormControl.prop(\"disabled\", true);\n\n    $message.html(\"Loading...\");\n\n    $.ajax({\n      url: _urlCreate,\n      method: 'POST',\n      headers: {\n        'X-KOINS-APP-AUTH-SECRET': _xKoinsAppAuthSecret,\n        'Access-Control-Allow-Methods': '*',\n        'Access-Control-Allow-Headers': '*',\n        'Access-Control-Allow-Origin': '*',\n        'Access-Control-Allow-Credentials': 'true'\n      },\n      data: data,\n      success: function(response) {\n        $message.html(\n          Mustache.render(\n            templateSuccessMessage,\n            { message: \"Success! You may now close this window\" }\n          )\n        );\n\n        $xFormControl.prop(\"disabled\", false);\n      },\n      error: function(response) {\n        console.log(response.response);\n        var errors  = [];\n\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          console.log(err);\n          errors  = [\"Something went wrong\"];\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $xFormControl.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n};\n\nvar init = function(options) {\n  _urlCreate            = options.urlCreate;\n  _userId               = options.userId;\n  _xKoinsAppAuthSecret  = options.xKoinsAppAuthSecret;\n\n  _cacheDom();\n  _bindEvents();\n};\n\nexport default { init: init }\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport select2 from 'select2';\nselect2($);\nimport \"chart.js/dist/chart.min.js\";\n\nvar $btnSync;\nvar $selectYear;\nvar $selectBranches;\nvar $selectAccountingCode;\nvar $selectChartType;\nvar $xFormControl;\n\nvar $message;\nvar templateErrorList;\nvar templateSuccessMessage;\n\nvar _chartType = 'line';\n\nvar _urlSync;\nvar _userId;\nvar _xKoinsAppAuthSecret;\n\nvar ctxAccountingBalance;\nvar chartAccountingBalance;\n\nvar ctxPureSavers;\nvar chartPureSavers;\n\nvar ctxActiveLoaners;\nvar chartActiveLoaners;\n\nvar ctxActiveMembers;\nvar chartActiveMembers;\n\nvar ctxTotalMembers;\nvar chartTotalMembers;\n\nvar _cacheDom = function() {\n  $btnSync              = $(\"#btn-sync\");\n  $selectYear           = $(\"#select-year\");\n  $selectBranches       = $(\"#select-branches\");\n  $selectAccountingCode = $(\"#select-accounting-code\");\n  $selectChartType      = $(\"#select-chart-type\");\n  $xFormControl         = $(\".x-form-control\");\n\n  $message                = $(\".message\");\n  templateErrorList       = $(\"#template-error-list\").html();\n  templateSuccessMessage  = $(\"#template-success-message\").html();\n\n  ctxAccountingBalance  = document.getElementById('chart-accounting-balance').getContext('2d');\n  ctxPureSavers         = document.getElementById('chart-pure-savers').getContext('2d');\n  ctxActiveLoaners      = document.getElementById('chart-active-loaners').getContext('2d');\n  ctxActiveMembers      = document.getElementById('chart-active-members').getContext('2d');\n  ctxTotalMembers       = document.getElementById('chart-total-members').getContext('2d');\n};\n\nvar _clearCharts = function() {\n  chartAccountingBalance.data.datasets  = [];\n  chartPureSavers.data.datasets         = [];\n  chartActiveLoaners.data.datasets      = [];\n  chartActiveMembers.data.datasets      = [];\n  chartTotalMembers.data.datasets       = [];\n\n  chartAccountingBalance.update();\n  chartPureSavers.update();\n  chartActiveLoaners.update();\n  chartActiveMembers.update();\n  chartTotalMembers.update();\n};\n\nvar _updateData = function(data) {\n  chartAccountingBalance.data.datasets = [];\n\n  data.accounting_code_balances.forEach(function(d) {\n    d.borderColor     = d.color;\n    d.backgroundColor = d.color;\n    d.lineTension     = 0;\n    d.fill            = false;\n\n    chartAccountingBalance.data.datasets.push(d);\n  });\n\n  chartAccountingBalance.update();\n\n  data.pure_savers.forEach(function(d) {\n    d.borderColor     = d.color;\n    d.backgroundColor = d.color;\n    d.lineTension     = 0;\n    d.fill            = false;\n\n    chartPureSavers.data.datasets.push(d);\n  });\n\n  chartPureSavers.update();\n\n  data.loaners.forEach(function(d) {\n    d.borderColor     = d.color;\n    d.backgroundColor = d.color;\n    d.lineTension     = 0;\n    d.fill            = false;\n\n    chartActiveLoaners.data.datasets.push(d);\n  });\n\n  chartActiveLoaners.update();\n\n  data.active_members.forEach(function(d) {\n    d.borderColor     = d.color;\n    d.backgroundColor = d.color;\n    d.lineTension     = 0;\n    d.fill            = false;\n\n    chartActiveMembers.data.datasets.push(d);\n  });\n\n  chartActiveMembers.update();\n\n  data.total_members.forEach(function(d) {\n    d.borderColor     = d.color;\n    d.backgroundColor = d.color;\n    d.lineTension     = 0;\n    d.fill            = false;\n\n    chartTotalMembers.data.datasets.push(d);\n  });\n\n  chartTotalMembers.update();\n}\n\nvar _reloadCharts = function() {\n  chartTotalMembers = new Chart(ctxTotalMembers, {\n                        type: _chartType,\n                        data: {\n                          labels: [\n                            'January',\n                            'February',\n                            'March',\n                            'April',\n                            'May',\n                            'June',\n                            'July',\n                            'August',\n                            'September',\n                            'October',\n                            'November',\n                            'December'\n                          ],\n                          datasets: []\n                        },\n                        options: {\n                          responsive: true,\n                          maintainAspectRatio: false,\n                          scales: {\n                            yAxes: [{\n                              ticks: {\n                                beginAtZero: true,\n                                userCallback: function(value, index, values) {\n                                  return value.toLocaleString();\n                                }\n                              }\n                            }]\n                          }\n                        }\n                      });\n\n  chartActiveMembers  = new Chart(ctxActiveMembers, {\n                          type: _chartType,\n                          data: {\n                            labels: [\n                              'January',\n                              'February',\n                              'March',\n                              'April',\n                              'May',\n                              'June',\n                              'July',\n                              'August',\n                              'September',\n                              'October',\n                              'November',\n                              'December'\n                            ],\n                            datasets: []\n                          },\n                          options: {\n                            responsive: true,\n                            maintainAspectRatio: false,\n                            scales: {\n                              yAxes: [{\n                                ticks: {\n                                  beginAtZero: true,\n                                  userCallback: function(value, index, values) {\n                                    return value.toLocaleString();\n                                  }\n                                }\n                              }]\n                            }\n                          }\n                        });\n\n  chartActiveLoaners  = new Chart(ctxActiveLoaners, {\n                          type: _chartType,\n                          data: {\n                            labels: [\n                              'January',\n                              'February',\n                              'March',\n                              'April',\n                              'May',\n                              'June',\n                              'July',\n                              'August',\n                              'September',\n                              'October',\n                              'November',\n                              'December'\n                            ],\n                            datasets: []\n                          },\n                          options: {\n                            responsive: true,\n                            maintainAspectRatio: false,\n                            scales: {\n                              yAxes: [{\n                                ticks: {\n                                  beginAtZero: true,\n                                  userCallback: function(value, index, values) {\n                                    return value.toLocaleString();\n                                  }\n                                }\n                              }]\n                            }\n                          }\n                        });\n\n  chartPureSavers = new Chart(ctxPureSavers, {\n                      type: _chartType,\n                      data: {\n                        labels: [\n                          'January',\n                          'February',\n                          'March',\n                          'April',\n                          'May',\n                          'June',\n                          'July',\n                          'August',\n                          'September',\n                          'October',\n                          'November',\n                          'December'\n                        ],\n                        datasets: []\n                      },\n                      options: {\n                        responsive: true,\n                        maintainAspectRatio: false,\n                        scales: {\n                          yAxes: [{\n                            ticks: {\n                              beginAtZero: true,\n                              userCallback: function(value, index, values) {\n                                return value.toLocaleString();\n                              }\n                            }\n                          }]\n                        }\n                      }\n                    });\n\n  chartAccountingBalance  = new Chart(ctxAccountingBalance, {\n                              type: _chartType,\n                              data: {\n                                labels: [\n                                  'January',\n                                  'February',\n                                  'March',\n                                  'April',\n                                  'May',\n                                  'June',\n                                  'July',\n                                  'August',\n                                  'September',\n                                  'October',\n                                  'November',\n                                  'December'\n                                ],\n                                datasets: []\n                              },\n                              options: {\n                                responsive: true,\n                                maintainAspectRatio: false,\n                                scales: {\n                                  yAxes: [{\n                                    ticks: {\n                                      beginAtZero: true,\n                                      userCallback: function(value, index, values) {\n                                        return value.toLocaleString();\n                                      }\n                                    }\n                                  }]\n                                }\n                              }\n                            });\n};\n\nvar _bindEvents = function() {\n  _reloadCharts();\n\n  $selectChartType.on(\"change\", function() {\n    _chartType = $selectChartType.val();\n    _reloadCharts();\n  });\n\n  $selectBranches.select2();\n\n  $btnSync.on(\"click\", function() {\n    var branchIds         = $selectBranches.val();\n    var accountingCodeId  = $selectAccountingCode.val();\n    var year              = $selectYear.val();\n\n    var data = {\n      branch_ids:         branchIds,\n      accounting_code_id: accountingCodeId,\n      year:               year,\n      user_id:            _userId\n    }\n\n    $xFormControl.prop(\"disabled\", true);\n    $message.html(\"Loading...\");\n\n    _clearCharts();\n\n    $.ajax({\n      url: _urlSync,\n      method: 'GET',\n      headers: {\n        'X-KOINS-APP-AUTH-SECRET': _xKoinsAppAuthSecret,\n        'Access-Control-Allow-Methods': '*',\n        'Access-Control-Allow-Headers': '*',\n        'Access-Control-Allow-Origin': '*',\n        'Access-Control-Allow-Credentials': 'true'\n      },\n      data: data,\n      success: function(response) {\n        console.log(response);\n\n        $message.html(\n          Mustache.render(\n            templateSuccessMessage,\n            { message: \"Success! Data generated!\" }\n          )\n        );\n\n        $xFormControl.prop(\"disabled\", false);\n\n        _updateData(response.data);\n      },\n      error: function(response) {\n        console.log(response.responseText);\n        var errors  = [];\n\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          console.log(err);\n          errors  = [\"Something went wrong\"];\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $xFormControl.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n};\n\nvar init = function(options) {\n  _urlSync              = options.urlSync;\n  _userId               = options.userId;\n  _xKoinsAppAuthSecret  = options.xKoinsAppAuthSecret;\n\n  _cacheDom();\n  _bindEvents();\n};\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\nimport \"pdfmake/build/pdfmake\"\nconst pdfMake = window[\"pdfMake\"];\nimport pdfFonts from \"pdfmake/build/vfs_fonts\";\npdfMake.vfs = pdfFonts.pdfMake.vfs;\n\nimport MembershipApplicationFormDocumentBuilder from './MembershipApplicationFormDocumentBuilder.js';\n\nvar _id;\nvar _authenticityToken;\nvar _data;\n\nvar $modalProcess;\nvar $modalReject;\nvar $modalVerify;\nvar $modalAssignBranch;\nvar $btnVerify;\nvar $btnConfirmVerify;\nvar $btnProcess;\nvar $btnConfirmProcess;\nvar $btnReject;\nvar $btnConfirmReject;\nvar $btnDownloadForm;\nvar $btnAssignBranch;\nvar $btnConfirmAssignBranch;\nvar $message;\nvar templateErrorList;\nvar templateCenterOptions;\nvar $selectBranch;\nvar $selectVerifyBranch;\nvar $selectAssignBranch;\nvar $selectAssignCenter;\nvar $selectAssignMembershipArrangement;\nvar $selectAssignMembershipType;\nvar $selectCenter;\nvar $inputReason;\nvar _centers = [];\n\nvar _cacheDom = function() {\n  $modalProcess = new bootstrap.Modal(\n    document.getElementById(\"modal-process\")\n  )\n\n  $modalReject = new bootstrap.Modal(\n    document.getElementById(\"modal-reject\")\n  )\n\n  $modalVerify = new bootstrap.Modal(\n    document.getElementById(\"modal-verify\")\n  )\n\n  $modalAssignBranch = new bootstrap.Modal(\n    document.getElementById(\"modal-assign-branch\")\n  )\n\n  $btnProcess                         = $(\"#btn-process\");\n  $btnConfirmProcess                  = $(\"#btn-confirm-process\");\n  $btnReject                          = $(\"#btn-reject\");\n  $btnConfirmReject                   = $(\"#btn-confirm-reject\");\n  $btnVerify                          = $(\"#btn-verify\");\n  $btnConfirmVerify                   = $(\"#btn-confirm-verify\");\n  $btnDownloadForm                    = $(\"#btn-download-form\");\n  $btnAssignBranch                    = $(\"#btn-assign-branch\");\n  $btnConfirmAssignBranch             = $(\"#btn-confirm-assign-branch\");\n  $inputReason                        = $(\"#input-reason\");\n  $selectBranch                       = $(\"#select-branch\");\n  $selectVerifyBranch                 = $(\"#select-verify-branch\");\n  $selectCenter                       = $(\"#select-center\");\n  $selectAssignBranch                 = $(\"#select-assign-branch\");\n  $selectAssignCenter                 = $(\"#select-assign-center\");\n  $selectAssignMembershipArrangement  = $(\"#select-assign-membership-arrangement\");\n  $selectAssignMembershipType         = $(\"#select-assign-membership-type\");\n  $message                            = $(\".message\");\n  templateErrorList                   = $(\"#template-error-list\").html();\n  templateCenterOptions               = $(\"#template-center-options\").html();\n}\n\nvar _bindEvents = function() {\n  $btnAssignBranch.on(\"click\", function() {\n    $modalAssignBranch.show();\n  });\n\n  $btnConfirmAssignBranch.on(\"click\", function() {\n    var branchId                = $selectAssignBranch.val();\n\n    $btnConfirmAssignBranch.prop(\"disabled\", true);\n    $selectAssignBranch.prop(\"disabled\", true);\n    $message.html(\"Loading...\");\n\n    $.ajax({\n      url: \"/api/v1/online_applications/assign_branch\",\n      method: \"POST\",\n      data: {\n        id: _id,\n        branch_id: branchId,\n        authenticity_token: _authenticityToken\n      },\n      success: function(response) {\n        $message.html(\"Success! Reloading...\");\n        window.location.reload();\n      },\n      error: function(response) {\n        console.log(response);\n        var errors  = [];\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmAssignBranch.prop(\"disabled\", false);\n          $selectAssignBranch.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  $btnDownloadForm.on(\"click\", function() {\n    console.log(_data);\n    var docDefinition = MembershipApplicationFormDocumentBuilder.execute(_data);\n\n    pdfMake.createPdf(docDefinition).open();\n  });\n\n  $btnVerify.on(\"click\", function() {\n    $modalVerify.show();\n  });\n\n  $btnConfirmVerify.on(\"click\", function() {\n    var membershipTypeId        = $selectAssignMembershipType.val();\n    var membershipArrangementId = $selectAssignMembershipArrangement.val();\n    var centerId                = $selectAssignCenter.val();\n\n    $selectAssignMembershipType.prop(\"disabled\", true);\n    $selectAssignMembershipArrangement.prop(\"disabled\", true);\n    $btnConfirmVerify.prop(\"disabled\", true); \n\n    $.ajax({\n      url: \"/api/v1/online_applications/verify\",\n      method: \"POST\",\n      data: {\n        id: _id,\n        membership_type_id: membershipTypeId,\n        membership_arrangement_id: membershipArrangementId,\n        center_id: centerId,\n        authenticity_token: _authenticityToken\n      },\n      success: function(response) {\n        $message.html(\"Success! Reloading...\"); \n        window.location.reload();\n      },\n      error: function(response) {\n        console.log(response);\n        var errors  = [];\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmVerify.prop(\"disabled\", false);\n          $selectAssignMembershipType.prop(\"disabled\", false);\n          $selectAssignMembershipArrangement.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  if($selectBranch.val()) {\n    $.ajax({\n      url: \"/api/v1/branches/fetch_centers\",\n      data: {\n        id: $selectBranch.val()\n      },\n      success: function(response) {\n        $selectCenter.html(\n          Mustache.render(\n            templateCenterOptions,\n            response\n          )\n        )\n      },\n      error: function(response) {\n        alert(\"Cannot fetch centers\");\n      }\n    });\n  }\n\n  $btnReject.on(\"click\", function() {\n    $modalReject.show();\n  });\n\n  $btnConfirmReject.on(\"click\", function() {\n    var reason  = $inputReason.val();\n\n    $btnConfirmReject.prop(\"disabled\", true);\n    $inputReason.prop(\"disabled\", true);\n\n    $message.html(\"\");\n\n    $.ajax({\n      url: \"/api/v1/online_applications/reject\",\n      method: 'POST',\n      data: {\n        id: _id,\n        reason: reason\n      },\n      success: function(response) {\n        $message.html(\"Success! Reloading...\"); \n        window.location.reload();\n      },\n      error: function(response) {\n        console.log(response);\n        var errors  = [];\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $inputReason.prop(\"disabled\", false);\n          $btnConfirmReject.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  $btnConfirmProcess.on(\"click\", function() {\n    var branchId  = $selectBranch.val();\n    var centerId  = $selectCenter.val();\n\n    $message.html(\"\");\n\n    $selectBranch.prop(\"disabled\", true);\n    $selectCenter.prop(\"disabled\", true);\n    $btnConfirmProcess.prop(\"disabled\", true);\n\n    $.ajax({\n      url: \"/api/v1/online_applications/process\",\n      method: 'POST',\n      data: {\n        id: _id,\n        branch_id: branchId,\n        center_id: centerId\n      },\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\"); \n        window.location.href = \"/online_applications\";\n      },\n      error: function(response) {\n        console.log(response);\n        var errors  = [];\n        try {\n          errors  = JSON.parse(response.responseText).errors;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $selectBranch.prop(\"disabled\", false);\n          $selectCenter.prop(\"disabled\", false);\n          $btnConfirmProcess.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  $btnProcess.on(\"click\", function() {\n    $modalProcess.show();\n  });\n\n  $selectBranch.on(\"change\", function() {\n    var branchId = $(this).val();\n\n    if(branchId) {\n      $.ajax({\n        url: \"/api/v1/branches/fetch_centers\",\n        data: {\n          id: branchId\n        },\n        success: function(response) {\n          $selectCenter.html(\n            Mustache.render(\n              templateCenterOptions,\n              response\n            )\n          )\n        },\n        error: function(response) {\n          alert(\"Cannot fetch centers\");\n        }\n      });\n    }\n  });\n}\n\nvar init = function(options) {\n  _id                 = options.id;\n  _authenticityToken  = options.authenticityToken;\n  _data               = options.data;\n\n  _cacheDom();\n  _bindEvents();\n}\n\nexport default { init: init };\n", "var _data;\n\nvar fontSizeDefault   = 9;\nvar fillColorDefault  = '#fff1c7';\n\nvar styleDefault = {\n  fontSize: 9\n}\n\nvar styleBoldDefault = {\n  fontSize: 9,\n  bold: true\n}\n\nvar styleEmphDefault = {\n  fontSize: 9,\n  bold: true,\n  italics: true\n}\n\nvar styleEmphSecondary = {\n  fontSize: 7,\n  bold: true,\n  italics: true\n}\n\nvar styleSmall = {\n  fontSize: 7\n}\n\nvar styleSectionHeader = {\n  fontSize: 9,\n  bold: true,\n  margin: [0, 0, 0, 10]\n}\n\nvar styleCellLabel = {\n  fontSize: 7,\n  fillColor: fillColorDefault\n}\n\nvar styleCellValue = {\n  fontSize: 7\n}\n\nvar styleCellCenteredLabel = {\n  fontSize: 7,\n  fillColor: fillColorDefault,\n  alignment: 'center',\n  bold: true\n}\n\nvar _generateApplicationSignatory = function() {\n  var context = 'Aking pinatotohanan na ang lahat ng impormasyong aking inilagay ay pawang katotohanan sa abot ng aking paniniwala at kaalaman. Anumang maling impormasyon, pagtatago o kasinungalingan ay magiging sapat na dahilan para ako ay matiwalag sa pagiging miyembro ng K-Coop.\\n\\n'\n\n  context += 'Bilang miyembro ay kinikilala at pinapahintulutan ko ang mga sumusunod:\\n';\n\n  var obj = {\n    table: {\n      margin: [0, 20, 0, 0],\n      widths: [\"100%\"],\n      body: [\n        [\n          { text: context, style: styleCellValue, alignment: 'justify', border: [true, true, true, false] }\n        ],\n        [\n          { \n            ol: [ \n              'Kaakibat ng aking aplikasyon sa pagiging miyembro, aking pinahihintulutan ang pag-kolekta at pag-proseso ng aking mga impormasyon alinsunod sa R.A. No. 10173 o Data Privacy Act of 2012.',\n              'Regular na pagpapasa at pagpapahayag ng aking Basic Credit Data alinsunod sa R.A. No. 9510 o \u201CCredit Information System Act\u201D s a Credit Information Corporation (CIC) pati ang mga pagbabago o pagtatama nito;',\n              'Pagbabahagi ng aking Basic Credit Data sa iba pang institusyong nagpapautang at iba pang mga ahensiya na may kinalaman sa pagpapautang na pinahihintulutan ng R.A. No. 10173 at R.A. No. 9510.'\n            ], \n            style: styleCellValue,\n            border: [true, false, true, false]\n          }\n        ],\n        [\n          {\n            text: 'Nauunawaan ko din ang polisiya ng K-Coop at handa akong sumunod sa mga alintuntunin nito gaya ng mga sumusunod:',\n            style: styleCellValue,\n            alignment: 'justify',\n            border: [true, false, true, false]\n          }\n        ],\n        [\n          {\n            ol: [\n              'Pagdalo sa meeting',\n              'Pagsama sa sitdown',\n              'Pagpayag masitdown',\n              'Pagsunod sa 1 day before meeting policy sa paghuhulog',\n              'Pag-iimpok linggu-linggo',\n              'Pagpapamiyembro sa K-MBAA',\n              'Pagtupad sa obligasyon sa co-maker'\n            ],\n            style: styleCellValue,\n            border: [true, false, true, false]\n          }\n        ],\n        [\n          {\n            table: {\n              margin: [0, 0, 0, 0],\n              widths: [\"50%\", \"50%\"],\n              body: [\n                [\n                  { text: '', border: [false, false, false, false] },\n                  {\n                    text: _data.full_name, border: [false, false, false, false], style: styleBoldDefault, alignment: 'center'\n                  }\n                ],\n                [\n                  { text: '', border: [false, false, false, false] },\n                  {\n                    text: 'Pangalan at Lagda ng Aplikante', border: [false, true, false, false], style: styleBoldDefault, alignment: 'center'\n                  }\n                ]\n              ]\n            },\n            style: styleCellValue,\n            border: [true, false, true, true]\n          }\n        ]\n      ]\n    },\n    pageBreak: \"after\"\n  }\n\n  return obj;\n}\n\nvar _generateChildrenTable  = function() {\n  var body = [\n    [\n      {\n        text: 'PERSONAL NA IMPORMASYON NG MGA ANAK',\n        style: styleCellCenteredLabel,\n        colSpan: 6\n      }, {}, {}, {}, {}, {}\n    ]\n  ];\n\n  body.push([\n    {\n      text: '#', style: styleCellCenteredLabel\n    },\n    {\n      text: 'PANGALAN', style: styleCellCenteredLabel\n    },\n    {\n      text: 'KAPANGANAKAN', style: styleCellCenteredLabel\n    },\n    {\n      text: 'EDAD', style: styleCellCenteredLabel\n    },\n    {\n      text: 'ANTAS NG PAG-AARAL', style: styleCellCenteredLabel\n    },\n    {\n      text: 'KURSO', style: styleCellCenteredLabel\n    }\n  ]);\n\n  for(var i = 0; i < 5; i++) {\n    var obj = _data.children[i];\n\n    body.push([\n      { text: '' + (i + 1), style: styleCellCenteredLabel },\n      { text: obj.name, style: styleCellValue },\n      { text: obj.date_of_birth, style: styleCellValue },\n      { text: obj.age, style: styleCellValue },\n      { text: obj.education, style: styleCellValue },\n      { text: obj.course, style: styleCellValue }\n    ])\n  }\n\n  var table = {\n    margin: [0, 0, 0, 0],\n    widths: [\"5%\", \"40%\", \"15%\", \"5%\", \"20%\", \"15%\"],\n    body: body\n  }\n\n  return table;\n}\n\nvar buildHeader = function() {\n  var logo            = 'data:image/png;base64,' + _data.logo;\n  var profilePicture  = 'data:image/png;base64,' + _data.profile_picture;\n\n  var header = {\n    margin: 20,\n    columns: [\n      {\n        width: '100%',\n        columns: [\n          {\n            image: logo,\n            fit: [65, 65],\n            width: '25%',\n            alignment: 'center'\n          },\n          {\n            wdith: '*',\n            text: [\n              { text: 'Kabuhayan sa Ganap na Kasarinlan Credit and Savings Cooperative\\n', style: styleBoldDefault },\n              { text: '4th Floor KMBA Members\u2019 Center Building\\n', style: styleSmall },\n              { text: '5 Matimpiin Street, Barangay Pinyahan, Quezon City 1100\\n', style: styleSmall },\n              { text: 'Telephone Numbers: (632) 5310-2470/8442-9607; Fax Number: (632) 5310-2470 loc. 204\\n', style: styleSmall },\n              { text: 'CDA Reg. No.: 9520-1016000000028521\\n', style: styleEmphDefault },\n              { text: 'CIN: 16201628521\\n', style: styleEmphSecondary }\n            ]\n          },\n          {\n            image: profilePicture,\n            fit: [60, 60],\n            alignment: 'right'\n          }\n        ]\n      }\n    ]\n  }\n\n  return header;\n}\n\nvar build = function() {\n  var docDefinition = {\n    pageSize: 'FOLIO',\n    pageMargins: [20, 80, 20, 60],\n    header: (currentPage, pageCount) => {\n      if(currentPage == 1) {\n        return buildHeader()\n      } else {\n        return \"\"\n      }\n    },\n    content: [\n      {\n        text: 'APPLICATION FOR MEMBERSHIP', style: { bold: true, alignment: 'center' }\n      },\n      {\n        text: [\n          { text: 'Control No.', style: { fontSize: fontSizeDefault, alignment: 'right' } },\n          { text: _data.control_number, decoration: 'underline', style: { fontSize: fontSizeDefault, alignment: 'right' } }\n        ]\n      },\n      {\n        text: 'SASAGUTIN NG K-COOP', style: styleSectionHeader, margin: [0, 0, 0, 8]\n      },\n      {\n        table: {\n          margin: [0, 0, 0, 8],\n          widths: [\"25%\", \"25%\", \"25%\", \"25%\"],\n          body: [\n            [\n              {\n                text: 'MEMBER / ID NUMBER', style: styleCellLabel\n              },\n              {\n                text: _data.identification_number, style: styleCellValue\n              },\n              {\n                text: 'DATE OF MEMBERSHIP', style: styleCellLabel\n              },\n              {\n                text: '', style: styleCellValue\n              }\n            ],\n            [\n              {\n                text: 'INITIAL SHARE CAPITAL', style: styleCellLabel\n              },\n              {\n                text: '', style: styleCellValue\n              },\n              {\n                text: 'MEMBERSHIP FEE', style: styleCellLabel\n              },\n              {\n                text: '', style: styleCellValue\n              }\n            ],\n            [\n              {\n                text: 'SATELLITE OFFICE', style: styleCellLabel\n              },\n              {\n                text: _data.branch,\n                colSpan: 3,\n                style: styleCellValue\n              },\n              {},\n              {}\n            ]\n          ]\n        }\n      },\n      {\n        text: 'SASAGUTIN NG APLIKANTE', style: styleSectionHeader, margin: [0, 8, 0, 8]\n      },\n      {\n        table: {\n          margin: [0, 0, 0, 0],\n          widths: [\"12.5%\", \"12.5%\", \"12.5%\", \"12.5%\", \"12.5%\", \"12.5%\", \"12.5%\", \"12.5%\"],\n          body: [\n            [\n              { text: 'PERSONAL NA IMPORMASYON', style: styleCellCenteredLabel, colSpan: 4 },\n              {},\n              {},\n              {},\n              { text: 'TIRAHAN / ADDRESS', style: styleCellCenteredLabel, colSpan: 4 },\n              {},\n              {},\n              {}\n            ],\n            [\n              { text: 'PANGALAN', style: styleCellLabel, colSpan: 2 },\n              {},\n              { text: _data.first_name, style: styleCellValue, colSpan: 2 },\n              {},\n              { text: 'KALYE', style: styleCellLabel, colSpan: 2 },\n              {},\n              { text: _data.address_street, style: styleCellValue, colSpan: 2 }\n            ],\n            [\n              { text: 'GITNANG PANGALAN', style: styleCellLabel, colSpan: 2 },\n              {},\n              { text: _data.middle_name, style: styleCellValue, colSpan: 2 },\n              {},\n              { text: 'BRGY.', style: styleCellLabel, colSpan: 2 },\n              {},\n              { text: _data.address_district, style: styleCellValue, colSpan: 2 },\n              {}\n            ],\n            [\n              { text: 'APELYIDO', style: styleCellLabel, colSpan: 2 },\n              {},\n              { text: _data.last_name, style: styleCellValue, colSpan: 2 },\n              {},\n              { text: 'LUNGSOD', style: styleCellLabel },\n              { text: _data.address_city, style: styleCellValue },\n              { text: 'PROBINSYA', style: styleCellLabel },\n              { text: _data.address_province, style: styleCellValue }\n            ]\n          ]\n        }\n      },\n      {\n        table: {\n          margin: [0, 0, 0, 0],\n          widths: [\"*\", \"*\", \"*\", \"*\", \"*\", \"*\"],\n          body: [\n            [\n              { text: 'PANGALAN NG NANAY SA PAGKADALAGA', style: styleCellCenteredLabel, colSpan: 6 },\n              {},\n              {},\n              {},\n              {},\n              {}\n            ],\n            [\n              { text: 'PANGALAN', style: styleCellLabel },\n              { text: _data.mothers_first_name, style: styleCellValue },\n              { text: 'GITNANG PANGALAN', style: styleCellLabel },\n              { text: _data.mothers_middle_name, style: styleCellValue },\n              { text: 'APELYIDO', style: styleCellLabel },\n              { text: _data.mothers_last_name, style: styleCellValue }\n            ]\n          ]\n        }\n      },\n      {\n        table: {\n          margin: [0, 0, 0, 0],\n          widths: [\"25%\", \"35%\", \"15%\", \"25%\"],\n          body: [\n            [\n              { text: 'URI NG PANINIRAHAN', style: styleCellLabel },\n              { text: _data.housing_type, style: styleCellValue },\n              { text: 'TAGAL NA SA TIRAHAN (BILANG NG TAON / BUWAN)', style: styleCellLabel },\n              { text: _data.housing_stay, style: styleCellValue }\n            ],\n            [\n              { text: 'IPINAKITANG KATIBAYAN', style: styleCellLabel },\n              { text: '', style: styleCellValue, colSpan: 3 }\n            ]\n          ]\n        }\n      },\n      {\n        table: {\n          margin: [0, 0, 0, 0],\n          widths: [\"25%\", \"25%\", \"25%\", \"25%\"],\n          body: [\n            [\n              { text: 'KAPANGANAKAN', style: styleCellLabel },\n              { text: _data.date_of_birth, style: styleCellValue },\n              { text: 'EDAD', style: styleCellLabel },\n              { text: _data.age, style: styleCellValue }\n            ]\n          ]\n        },\n      },\n      {\n        table: {\n          margin: [0, 0, 0, 0],\n          widths: [\"25%\", \"25%\", \"25%\", \"25%\"],\n          body: [\n            [\n              { text: 'LUGAR NG KAPANGANAKAN', style: styleCellLabel },\n              { text: _data.place_of_birth, style: styleCellValue },\n              { text: 'KASARIAN', style: styleCellLabel },\n              { text: _data.gender, style: styleCellValue }\n            ]\n          ]\n        }\n      },\n      {\n        table: {\n          margin: [0, 0, 0, 0],\n          widths: [\"15%\", \"55%\", \"10%\", \"20%\"],\n          body: [\n            [\n              { text: 'KATAYUANG SIBIL', style: styleCellLabel },\n              { text: _data.civil_status, style: styleCellValue },\n              { text: 'RELIHIYON', style: styleCellLabel },\n              { text: _data.religion, style: styleCellValue }\n            ]\n          ]\n        }\n      },\n      {\n        table: {\n          margin: [0, 0, 0, 0],\n          widths: [\"20%\", \"10%\", \"20%\", \"*\"],\n          body: [\n            [\n              { text: 'BILANG NG ANAK', style: styleCellLabel },\n              { text: _data.num_children, style: styleCellValue },\n              { text: 'ILAN ANG NAG-AARAL', style: styleCellLabel },\n              { text: _data.num_children_studying, style: styleCellValue }\n            ]\n          ]\n        }\n      },\n      {\n        table: {\n          margin: [0, 0, 0, 0],\n          widths: [\"25%\", \"25%\", \"25%\", \"25%\"],\n          body: [\n            [\n              { text: 'CELLPHONE NUMBER', style: styleCellLabel },\n              { text: _data.mobile_number, style: styleCellValue },\n              { text: 'LANDLINE NUMBER', style: styleCellLabel },\n              { text: _data.home_number, style: styleCellValue }\n            ],\n            [\n              { text: 'KASALUKUYANG BANGKO (kung mayroon)', style: styleCellLabel },\n              { text: _data.current_bank_name, style: styleCellValue },\n              { text: 'KLASE NG ACCOUNT', style: styleCellLabel },\n              { text: _data.current_bank_type, style: styleCellValue }\n            ]\n          ]\n        }\n      },\n      {\n        table: {\n          margin: [0, 0, 0, 0],\n          widths: [\"12.5%\", \"12.5%\", \"12.5%\", \"12.5%\", \"12.5%\", \"12.5%\", \"12.5%\", \"12.5%\"],\n          body: [\n            [\n              { text: 'SSS/GSIS #', style: styleCellLabel },\n              { text: _data.sss_number, style: styleCellValue },\n              { text: 'PAG-IBIG #', style: styleCellLabel },\n              { text: _data.pag_ibig_number, style: styleCellValue },\n              { text: 'PHILHEALTH #', style: styleCellLabel },\n              { text: _data.phil_health_number, style: styleCellValue },\n              { text: 'TIN #', style: styleCellLabel },\n              { text: _data.tin_number, style: styleCellValue }\n            ]\n          ]\n        }\n      },\n      {\n        table: {\n          margin: [0, 0, 0, 0],\n          widths: [\"25%\", \"25%\", \"25%\", \"25%\"],\n          body: [\n            [\n              { text: 'PERSONAL NA IMPORMASYON NG ASAWA O KINAKASAMA (COMMON-LAW SPOUSE)', style: styleCellCenteredLabel, colSpan: 4 },\n              {},\n              {},\n              {}\n            ],\n            [\n              { text: 'PANGALAN', style: styleCellLabel },\n              { text: _data.spouse_first_name, style: styleCellValue },\n              { text: 'KAPANGANAKAN', style: styleCellLabel },\n              { text: _data.spouse_date_of_birth, style: styleCellValue }\n            ],\n            [\n              { text: 'GITNANG PANGALAN', style: styleCellLabel },\n              { text: _data.spouse_middle_name, style: styleCellValue },\n              { text: 'EDAD', style: styleCellLabel },\n              { text: _data.spouse_age, style: styleCellValue }\n            ],\n            [\n              { text: 'APELYIDO', style: styleCellLabel },\n              { text: _data.spouse_last_name, style: styleCellValue },\n              { text: 'TRABAHO', style: styleCellLabel },\n              { text: _data.spouse_occupation, style: styleCellValue }\n            ]\n          ]\n        }\n      },\n      {\n        table: _generateChildrenTable()\n      },\n      _generateApplicationSignatory(),\n      {\n        table: {\n          margins: [0, 0, 0, 20],\n          widths: [\"25%\", \"75%\"],\n          body: [\n            [\n              { text: 'BACKGROUND SA PAHIRAMAN', style: styleCellCenteredLabel, colSpan: 2 },\n              {}\n            ],\n            [\n              { text: 'DAHILAN NG PAGSALI SA K-COOP', style: styleCellLabel },\n              { text: _data.reason_for_joining, style: styleCellValue }\n            ],\n            [\n              { text: 'KARANASAN SA KOOPERATIBA / MFI', style: styleCellLabel },\n              { text: _data.previous_mfi_experience, style: styleCellValue }\n            ]\n          ]\n        }\n      },\n      {\n        table: {\n          margins: [0, 0, 0, 20],\n          widths: [\"40%\", \"50%\", \"10%\"],\n          body: [\n            [\n              { text: 'PROGRESS OUT OF POVERTY INDEX (Panuto: bilugan ang inyong sagot)', style: styleCellCenteredLabel, colSpan: 3 },\n              {},\n              {}\n            ],\n            [\n              { text: 'PAHAYAG', style: styleCellCenteredLabel },\n              { text: 'SAGOT: (Bilugan ang isa)', style: styleCellCenteredLabel },\n              { text: 'PUNTOS', style: styleCellCenteredLabel }\n            ],\n            [\n              { text: '1. Ilan ang kasalukuyang nakatira sa bahay? (isama sa bilang ang OFW na hindi pa lumalagpas sa 5 taong nasa abroad)', style: styleCellValue },\n              { text: 'a. 8 o higit pa\\u200B\\t\\u200B\\tb. 7\\u200B\\t\\u200B\\tc. 6\\u200B\\t\\u200B\\td. 5\\u200B\\t\\u200B\\te. 4\\u200B\\t\\u200B\\tf. 3\\u200B\\t\\u200B\\tg. 1 o 2', style: styleCellValue },\n              { text: '', style: styleCellValue }\n            ],\n            [\n              { text: '2. Lahat po ba ng kasama sa bahay na may edad 6-17 ay pumapasok sa eskwelahan?', style: styleCellValue },\n              { text: 'a. Hindi\\u200B\\t\\u200B\\tb. Oo\\u200B\\t\\u200B\\tc. Walang edad 6 - 17', style: styleCellValue },\n              { text: '', style: styleCellValue }\n            ],\n            [\n              { text: '3. Ilan sa kasama sa bahay ang nagtrabaho kahit na isang oras lang sa nakalipas na linggo?\\n(maaaring namasukan o para sa negosyo)', style: styleCellValue },\n              { text: 'a. Wala\\u200B\\t\\u200B\\tb. 1\\u200B\\t\\u200B\\tc. 2\\u200B\\t\\u200B\\td. 3 o higit pa', style: styleCellValue },\n              { text: '', style: styleCellValue }\n            ],\n            [\n              { text: '4. Sa kasalukuyang pinagkakakitaan ng kasama sa bahay, Ilan sa kanila ang helper, vendor, caretaker,messenger, garbage collector, sweeper, padyak, construction worker at iba pang kahalintulad nito.', style: styleCellValue },\n              { text: 'a. 3 o higit pa\\u200B\\t\\u200B\\tb. 2\\u200B\\t\\u200B\\tc. 1\\u200B\\t\\u200B\\td. Wala', style: styleCellValue },\n              { text: '', style: styleCellValue }\n            ],\n            [\n              { text: '5. Ano ang pinakamataas na antas na pag-aaral ang natapos ni nanay o madre de pamilya?', style: styleCellValue },\n              { text: 'a. Hindi nakapag aral o hindi nakatapos ng elementarya\\nb. Walang female head\\nc. Nakatapos ng elementary o hindi nakatapos ng high school\\nd. Nakatapos ng high school\\ne. Nakatungtong, nakatapos ng kolehiyo o higit pa', style: styleCellValue },\n              { text: '', style: styleCellValue }\n            ],\n            [\n              { text: '6. Sa anong materyales gawa ang inyong dingding?', style: styleCellValue },\n              { text: 'a. Mga pinaglumaang materyales o 2nd hand (maaaring lahat o may kaunting kahalong bagong materyales) o mga materyales na tulad ng karton, sako, plastic, styropor, tarpaulin at iba pang kahalintulad nito.\\n\\nb. Magkahalong materyales mula sa (A) at (C) ngunit mas marami ang sa (C)\\n\\nc. Mga materyales tulad ng galvanized iron, aluminium, tile, semento, brick, bato, kahoy, plywood or asbestos at iba pang kahalintulad nito', style: styleCellValue},\n              { text: '', style: styleCellValue }\n            ],\n            [\n              { text: '7. Mayroon bang sala set?', style: styleCellValue },\n              { text: 'a. Wala\\u200B\\t\\u200B\\tb. Meron', style: styleCellValue },\n              { text: '', style: styleCellValue }\n            ],\n            [\n              { text: '8. Mayroon bang gumaganang refrigerator/ freezer o washing machine?', style: styleCellValue },\n              { text: 'a. Wala\\u200B\\t\\u200B\\tb. Mayroong isa sa mga nabanggit\\u200B\\t\\u200B\\tc. Parehong mayroon', style: styleCellValue },\n              { text: '', style: styleCellValue }\n            ],\n            [\n              { text: '9. Mayroon bang gumaganang TV o VHS/VCD/DVD player?', style: styleCellValue },\n              { text: 'a. Wala\\u200B\\t\\u200B\\tb. TV lamang\\u200B\\tc. Mayroong VHS/VCD/DVD player (mayroon o walang TV)', style: styleCellValue },\n              { text: '', style: styleCellValue }\n            ],\n            [\n              { text: '10. Ilang telepono o cellphone ang pag mamay-ari ng pamilya', style: styleCellValue },\n              { text: 'a. Wala\\u200B\\t\\u200B\\tb. 1\\u200B\\t\\u200B\\tc. 2\\u200B\\t\\u200B\\td. 3 o higit pa', style: styleCellValue },\n              { text: '', style: styleCellValue }\n            ],\n            [\n              { text: 'TOTAL', style: { fontSize: 7, bold: true }, alignment: 'right', colSpan: 2 },\n              {},\n              { text: '', style: styleCellValue }\n            ]\n          ]\n        }\n      },\n      {\n        text: '', style: styleSectionHeader, margin: [0, 8, 0, 8]\n      },\n      {\n        table: {\n          widths: [\"33.33%\", \"33.33%\", \"33.33%\"],\n          body: [\n            [\n              { text: 'NAGSAGAWA NG CI:', style: styleCellValue, border: [true, true, false, false] },\n              { text: 'PRINOSESO NI:', style: styleCellValue, border: [false, true, false, false] },\n              { text: 'SINANG-AYUNAN NI:', style: styleCellValue, border: [false, true, true, false] }\n            ],\n            [\n              { text: '_______________________________________', style: styleCellValue, alignment: 'center', border: [true, false, false, false] },\n              { text: '_______________________________________', style: styleCellValue, alignment: 'center', border: [false, false, false, false] },\n              { text: '_______________________________________', style: styleCellValue, alignment: 'center', border: [false, false, true, false] }\n            ],\n            [\n              { text: 'Socio-Economic Officer', style: styleCellValue, alignment: 'center', border: [true, false, false, false] },\n              { text: 'Socio-Economic Officer', style: styleCellValue, alignment: 'center', border: [false, false, false, false] },\n              { text: 'Satellite Officer Manager', style: styleCellValue, alignment: 'center', border: [false, false, true, false] }\n            ],\n            [\n              { text: 'Petsa: ______________', style: styleCellValue, border: [true, false, false, true] },\n              { text: 'Petsa: ______________', style: styleCellValue, border: [false, false, false, true] },\n              { text: 'Petsa: ______________', style: styleCellValue, border: [false, false, true, true] }\n            ]\n          ]\n        }\n      },\n      {\n        text: '', style: styleSectionHeader, margin: [0, 8, 0, 8]\n      },\n      {\n        table: {\n          widths: [\"100%\"],\n          body: [\n            [\n              { text: 'KASUNDUAN', style: { bold: true }, alignment: 'center', border: [true, true, true, false] }\n            ],\n            [\n              { text: 'Ako si ' + _data.full_name + ', na miyembro ng K-Coop, sa Sentro ng ____________________________, at Satellite Area ng ' + _data.branch + ', ay kusa at boluntaryong sumasang-ayon sa mga sumusunod:\\n\\n', style: { fontSize: 9 }, alignment: 'justify', border: [true, false, true, false] }\n            ],\n            [\n              {\n                ol: [\n                  { text: 'Bilang ambag sa kapital ng K-Coop, ako ay bibili upang magmay-ari ng di bababa sa apat (4) na bahagi ng kapital (share capital) nito, na aking babayaran sa sumusunod na paraan:\\n\\n\\u200B\\ta. Ang isang (1) bahagi, na nagkakahalaga ng isandaang piso (Php100.00), ay babayaran ko sa oras na sang-ayunan ng K-Coop ang aking aplikasyon bilang kasapi; at\\n\\n\\u200B\\tb. Ang natitira pang tatlong (3) bahagi ay babayaran mula sa aking capital build-up (CBU) na binubuo ng sampung porsyento (10%) \\u200B\\t\\u200B\\t\\u200B\\tng aking taunang balik-tangkilik (patronage refund) at interes sa aking share capital.\\n\\n', style: { fontSize: 9 }, alignment: 'justify' },\n                  { text: 'Kung ako ay titiwalag o matatanggal bago ang ika-apat (4) na taon ng pagiging miyembro ko sa K-Coop, ang halaga ng isang share capital ko na isandaang piso (Php100.00) ay magsisilbi kong Closing Fee, sang-ayon na rin sa By-Laws ng K-Coop.\\n\\n', style: { fontSize: 9 }, alignment: 'justify' }\n                ],\n                border: [true, false, true, false]\n              }\n            ],\n            [\n              { text: _data.full_name, style: { fontSize: 9 }, alignment: 'right', border: [true, false, true, false], decoration: 'underline' },\n            ],\n            [\n              { text: 'Lagda ng Miyembro/Petsa ng Paglagda', style: { fontSize: 9, bold: true }, alignment: 'right', border: [true, false, true, true] }\n            ]\n          ]\n        }\n      }\n    ]\n  }\n\n  return docDefinition;\n}\n\nvar execute = function(data) {\n  _data = data;\n\n  return build();\n}\n\nexport default { execute: execute }\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\nimport \"pdfmake/build/pdfmake\"\nconst pdfMake = window[\"pdfMake\"];\nimport pdfFonts from \"pdfmake/build/vfs_fonts\";\npdfMake.vfs = pdfFonts.pdfMake.vfs;\n\nimport MembershipApplicationFormDocumentBuilder from './MembershipApplicationFormDocumentBuilder.js';\nimport { func } from \"prop-types\";\n\nvar _id;\nvar _authenticityToken;\nvar _data;\n\nvar $modalProcess;\nvar $modalReject;\nvar $modalVerify;\nvar $modalAssignBranch;\nvar $btnVerify;\nvar $btnConfirmVerify;\nvar $btnProcess;\nvar $btnConfirmProcess;\nvar $btnReject;\nvar $btnConfirmReject;\nvar $btnDownloadForm;\nvar $btnAssignBranch;\nvar $btnConfirmAssignBranch;\nvar $message;\nvar templateErrorList;\nvar templateCenterOptions;\nvar $inputReason;\nvar _centers = [];\n\nvar $btnForReview;\nvar $btnConfirmForReview;\nvar $btnReject;\nvar $modalForReview;\n\nvar $btnForApprove;\nvar $modalForApprove;\nvar $btnConfirmForApprove;\nvar $modalReject;\n\nvar $btnApprove;\n\nvar $btnAmount;\nvar $modalEditAmount;\nvar $txtAmount;\nvar $btnConfirmAmount;\nvar _amount;\nvar _ltag;\nvar $btnConfirmReject;\n\nvar $btnRejectChecking;\nvar $modalRejectChecking;\nvar $txtInputReasonChecking;\nvar $btnConfirmRejectCheckingReason;\n\nvar $btnDecline;\nvar $modalDecline;\nvar $btnConfirmDecline;\nvar $InputReasonDecline;\n\nvar $btnCheck;\nvar $modalCheck;\nvar $btnConfirmCheck;\n\nvar $btnRejectApprove;\nvar $modalRejectApprove;\nvar $btnConfirmRejectApproveReason;\nvar $txtInputReasonApprove;\n\nvar $btnLoanTag;\nvar $modalEditltag;\nvar $btnConfirmLoanTag;\nvar $selectLoanTag;\n\nvar $btnSyncmb;\nvar $ModalMb;\nvar $btnConfirmb;\nvar $mb;\n\nvar _cacheDom = function() {\n\n  $modalVerify = new bootstrap.Modal(\n    document.getElementById(\"modal-verify\")\n  )\n  $modalForReview = new bootstrap.Modal(\n    document.getElementById(\"modal-for-review\")\n  )\n  $modalForApprove = new bootstrap.Modal(\n    document.getElementById(\"modal-for-approve\")\n  )\n  \n  $modalApprove = new bootstrap.Modal(\n    document.getElementById(\"modal-approve\")\n  )\n  $ModalMb = new bootstrap.Modal(\n    document.getElementById(\"modal-maintaining\")\n  )\n  $modalEditAmount = new bootstrap.Modal(\n    document.getElementById(\"modal-edit-amount\")\n  )\n  \n  $modalReject = new bootstrap.Modal(\n    document.getElementById(\"modal-reject\")\n  )\n  \n  $modalRejectChecking = new bootstrap.Modal(\n    document.getElementById(\"modal-reject-for-checking\")\n  )\n  \n  $modalRejectApprove = new bootstrap.Modal(\n    document.getElementById(\"modal-reject-for-approve\")\n  )\n  \n  $modalDecline =  new bootstrap.Modal(\n    document.getElementById(\"modal-decline-for-approve\")\n  )\n  $modalCheck = new bootstrap.Modal(\n    document.getElementById(\"modal-check\")\n  )\n  \n  $modalEditltag = new bootstrap.Modal(\n    document.getElementById(\"modal-loan-tag\")\n  )\n\n  $btnRejectChecking = $(\"#btn-reject-checking\")\n  $txtInputReasonChecking = $(\"#input-reason-checking\")\n  $btnConfirmRejectCheckingReason = $(\"#confirm-reject-checking-reason\") \n\n  $btnRejectApprove = $(\"#btn-reject-approve\")\n  $btnDecline = $(\"#btn-decline\")\n  \n  $btnConfirmRejectApproveReason = $(\"#confirm-reject-approve-reason_test\")\n  $InputReasonDecline = $(\"#input-decline-approve\")\n  $txtInputReasonApprove = $(\"#input-reason-approve\")\n\n  $btnVerify                          = $(\"#btn-verify\");\n  $btnConfirmVerify                   = $(\"#btn-confirm-verify\");\n \n  $btnForReview                       = $(\"#btn-for-review\");\n  $btnConfirmForReview                = $(\"#btn-confirm-for-review\");\n  $btnReject                          = $(\"#btn-reject\");\n  $btnConfirmReject                  = $(\"#btn-confirm-reject\");\n\n  $btnForApprove                      = $(\"#btn-for-approve\");\n  $btnConfirmForApprove               = $(\"#btn-confirm-for-approve\");\n\n  $btnApprove                      = $(\"#btn-approve\");\n  $btnConfirmApprove                = $(\"#btn-confirm-approve\");\n  \n  $btnAmount                       = $(\".undo\");\n  $txtAmount                       = $(\"#bookId\");\n  $btnConfirmAmount               = $(\"#btn-confirm-edit-amount\");\n\n  $btnLoanTag                     = $(\".ltag\");\n  $btnConfirmLoanTag              = $(\"#btn-confirm-loan-tag\");\n  $selectLoanTag                  = $(\"#select-loan-tag\");\n\n  $btnDownloadForm     = $(\"#btn-download-form\");\n\n  $btnConfirmDecline = $(\"#confirm-decline\");\n  $btnCheck = $(\"#btn-check\");\n  $btnConfirmCheck = $(\"#confirm-check\");\n  \n  $btnSyncmb = $(\"#btn-sync-maitaining-balance\");\n  $btnConfirmb = $(\"#btn-confirm-sync-maintaining-balance\");\n  $mb = $(\"#maintaining-balance\");\n\n}\n\nvar _bindEvents = function() {\n  $btnRejectApprove.on(\"click\", function(){\n    \n    _id = $(this).data('id');\n    $modalRejectApprove.show();\n  \n\n  });\n  $btnSyncmb.on(\"click\", function(){\n    _id = $(this).data('id');\n    $ModalMb.show();\n  });\n  $btnConfirmb.on(\"click\", function(){\n    var mb = $mb.val();\n    \n    $.ajax({\n      url: \"/api/v1/online_loan_applications/mb_save\",\n      method: \"POST\",\n      data: {\n        id:_id,\n        maintaining_balance:mb,\n        authenticity_token: _authenticityToken\n\n      },\n      success: function(response) {\n        alert(\"Success!\"); \n        window.location.reload();\n      }\n    });\n  })\n  $btnCheck.on(\"click\", function(){\n    //alert(\"jay\");\n    \n\n    $modalCheck.show();\n  })\n  $btnConfirmCheck.on(\"click\", function(){\n    var id = $btnCheck.val();\n    $.ajax({\n      url: \"/api/v1/online_loan_applications/check\",\n      method: \"POST\",\n      data: {\n        id:id,\n        authenticity_token: _authenticityToken\n\n      },\n      success: function(response) {\n        window.location.reload();\n      }\n    });\n  })\n\n  $btnDecline.on(\"click\", function(){\n    // alert(\"jay\");\n    _id = $(this).data('id');\n  \n\n    $modalDecline.show();\n\n  });\n  $btnConfirmDecline.on(\"click\", function(){\n    var reason = $('#input-decline-approve').val();\n\n    if(reason.trim() == ''){\n      $('.message').text('Please provide a reason.');\n      return false;\n    }\n    $.ajax({\n      url: \"/api/v1/online_loan_applications/decline\",\n      method: \"POST\",\n      data: {\n        id: _id,\n        reason_reject: $InputReasonDecline.val(), \n        authenticity_token: _authenticityToken\n\n      },\n      success: function(response) {\n        alert(\"Success!\"); \n        window.location.href = \"/online_loan_applications\";\n      }\n\n    });\n\n  })\n  \n  $btnConfirmRejectApproveReason.on(\"click\", function(){\n    var reason = $('#input-reason-approve').val();\n\n    if(reason.trim() == ''){\n      $('.message').text('Please provide a reason.');\n      return false;\n    }\n    $.ajax({\n      url: \"/api/v1/online_loan_applications/reject_approve\",\n      method: \"POST\",\n      data: {\n        id: _id,\n        reason_reject: $txtInputReasonApprove.val(), \n        authenticity_token: _authenticityToken\n\n      },\n      success: function(response) {\n        alert(\"Success!\"); \n        window.location.href = \"/online_loan_applications\";\n      }\n    });\n\n  });\n  \n  $btnRejectChecking.on(\"click\", function(){\n    \n    _id = $(this).data('id');\n    $modalRejectChecking.show();\n\n  });\n  \n  $btnConfirmRejectCheckingReason.on(\"click\", function(){\n    var reason = $('#input-reason-checking').val();\n    \n    if(reason.trim() == ''){\n      $('.message').text('Please provide a reason.');\n      return false;\n    }\n    $.ajax({\n      url: \"/api/v1/online_loan_applications/reject_checking\",\n      method: \"POST\",\n      data: {\n        id: _id,\n        reason_reject: $txtInputReasonChecking.val(), \n        authenticity_token: _authenticityToken\n\n      },\n      success: function(response) {\n        alert(\"Success!\"); \n        window.location.href = \"/online_loan_applications\";\n      }\n    });\n\n  });\n  $btnReject.on(\"click\", function() { \n   \n    _id = $(this).data('id');\n    $modalReject .show();\n\n\n  });\n\n  $btnDownloadForm.on(\"click\", function(){\n    var id = $(this).data('id');  \n   \n    var type = \"print_online_loan_application\"\n\n    window.open(\"/print?type=\" + type + \"&id=\" + id);\n    // alert(id);\n  });\n\n  $btnConfirmReject.on(\"click\", function(){\n\n    \n    $.ajax({\n      url: \"/api/v1/online_loan_applications/reject\",\n      method: \"POST\",\n      data: {\n        id: _id,\n        authenticity_token: _authenticityToken\n\n      },\n      success: function(response) {\n        alert(\"Success!\"); \n        window.location.href = \"/online_loan_applications\";\n      }\n    });\n\n  });\n  \n  $btnLoanTag.on(\"click\", function() {\n    _id = $(this).data('id');\n    _ltag = $(this).data('ltag');\n\n    //$txtAmount.val(_amount);\n    $modalEditltag.show();\n  });\n\n  $btnConfirmLoanTag.on(\"click\", function(){\n    var loanTagId = $selectLoanTag.val()\n    \n    $.ajax({\n      url: \"/api/v1/online_loan_applications/change_loan_tag\",\n      method: \"POST\",\n      data: {\n        id: _id,\n        loan_tag: loanTagId,\n        authenticity_token: _authenticityToken\n\n      },\n      success: function(response) {\n        alert(\"Success!\"); \n        window.location.reload();\n      }\n    });\n\n  })\n\n\n  $btnAmount.on(\"click\", function() {\n    _id = $(this).data('id');\n    _amount = $(this).data('amount');\n\n    $txtAmount.val(_amount);\n    $modalEditAmount.show();\n  });\n\n  $btnConfirmAmount.on(\"click\", function(){\n    $.ajax({\n      url: \"/api/v1/online_loan_applications/change_amount\",\n      method: \"POST\",\n      data: {\n        id: _id,\n        amount: $txtAmount.val(),\n        authenticity_token: _authenticityToken\n\n      },\n      success: function(response) {\n        alert(\"Success!\"); \n        window.location.reload();\n      }\n    });\n\n  })\n  \n  $btnApprove.on(\"click\", function() {\n    _id = $(this).data('id');\n    $modalApprove.show();\n  });\n  \n  $btnConfirmApprove.on(\"click\", function() {\n  \n  \n    $btnConfirmForReview.prop(\"disabled\", true); \n    $.ajax({\n      url: \"/api/v1/online_loan_applications/approve_loan\",\n      method: \"POST\",\n      data: {\n        id: _id,\n        authenticity_token: _authenticityToken\n\n      },\n      success: function(response) {\n        alert(\"Success! Reloading...\"); \n        window.location.href = \"/online_loan_applications\";\n      }\n    });\n  });\n\n  $btnForApprove.on(\"click\", function() {\n    _id = $(this).data('id');\n    $modalForApprove.show();\n  });\n\n  $btnConfirmForApprove.on(\"click\", function() {\n    $btnConfirmForReview.prop(\"disabled\", true); \n    $.ajax({\n      url: \"/api/v1/online_loan_applications/for_approve\",\n      method: \"POST\",\n      data: {\n        id: _id,\n        authenticity_token: _authenticityToken\n\n      },\n      success: function(response) {\n        alert(\"Success! Reloading...\"); \n        window.location.href = \"/online_loan_applications\";\n      }\n    });\n  });\n\n  $btnForReview.on(\"click\", function() {\n    _id = $(this).data('id');\n    $modalForReview.show();\n  });\n\n\n\n  $btnVerify.on(\"click\", function() {\n    _id = $(this).data('id');\n    $modalVerify.show();\n  });\n  \n  $btnConfirmForReview.on(\"click\", function() {\n  \n  \n    $btnConfirmForReview.prop(\"disabled\", true); \n    $.ajax({\n      url: \"/api/v1/online_loan_applications/for_review\",\n      method: \"POST\",\n      data: {\n        id: _id,\n        authenticity_token: _authenticityToken\n\n      },\n      success: function(response) {\n        alert(\"Success! Reloading...\"); \n        window.location.reload();\n\n      }\n    });\n  });\n  \n  $btnConfirmVerify.on(\"click\", function() {\n  \n    $btnConfirmVerify.prop(\"disabled\", true); \n    $.ajax({\n      url: \"/api/v1/online_loan_applications/verify\",\n      method: \"POST\",\n      data: {\n        id: _id,\n        authenticity_token: _authenticityToken\n\n      },\n      success: function(response) {\n        alert(\"Success! Reloading...\"); \n        window.location.reload();\n      }\n    });\n  });\n}\n\nvar init = function(options) {\n  //_id                 = options.id;\n  _authenticityToken  = options.authenticityToken;\n  //_data               = options.data;\n\n  _cacheDom();\n  _bindEvents();\n}\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\nimport \"pdfmake/build/pdfmake\"\nconst pdfMake = window[\"pdfMake\"];\nimport pdfFonts from \"pdfmake/build/vfs_fonts\";\npdfMake.vfs = pdfFonts.pdfMake.vfs;\n\nimport MembershipApplicationFormDocumentBuilder from './MembershipApplicationFormDocumentBuilder.js';\n\nvar _id;\nvar _authenticityToken;\nvar _data;\n\nvar $btnSave;\nvar $modalSave;\nvar $btnConfirmSave;\nvar $txtPalyaSaPagiimpok;\nvar $txtBilangNgAbsent;\nvar $txtSitDown;\nvar $txKasalukuyangInsurance;\nvar $txtTungkulinBilangCoMaker;\n\nvar $txtKitaSaNegosyo;\nvar $txtKitaMulaSaAsawa;\nvar $txtGastosSaPagkain;\nvar $txtGastosSaBaon;\nvar $txtGastosSaGamot;\nvar $txtBayarinSaTubig;\nvar $txtIbaPa;\nvar $txtKitaMulaSaKasama;\nvar $txtIbaPangPinagkakakitaan;\nvar $txtHuluganSaCoop;\nvar $txtHuluganBukodSaCoop;\n\nvar _cacheDom = function() {\n  \n  $modalSave = new bootstrap.Modal(\n    document.getElementById(\"modal-edit-save\")\n  )\n\n  $btnSave                         = $(\"#btn-save\");\n  $btnConfirmSave                  = $(\"#btn-confirm-edit-save\");\n  \n  $txtPalyaSaPagiimpok             = $(\"#palya-sa-pagiimpok\");\n  $txtBilangNgAbsent               = $(\"#bilang-ng-absent\");\n  $txtSitDown                      = $(\"#sit-down\");\n  $txKasalukuyangInsurance         = $(\"#kasalukuyang-insurance\");\n  $txtTungkulinBilangCoMaker       = $(\"#tungkulin-bilang-co-maker\");\n  \n  $txtKitaSaNegosyo                = $(\"#kita-sa-negosyo\");\n  $txtKitaMulaSaAsawa              = $(\"#kita-mula-sa-asawa\");\n  $txtKitaMulaSaKasama             = $(\"#kita-mula-sa-kasama\");\n  $txtIbaPangPinagkakakitaan       = $(\"#iba-pang-pinagkakakitaan\");\n\n\n\n  $txtGastosSaPagkain              = $(\"#gastos_sa_pagkain\");\n  $txtGastosSaBaon                 = $(\"#gastos-sa-baon\");\n  $txtGastosSaGamot                = $(\"#gastos-sa-gamot\");\n  $txtBayarinSaTubig               = $(\"#bayarin-sa-tubig\");\n  $txtIbaPa                        = $(\"#iba-pa\");\n  $txtHuluganSaCoop                = $(\"#hulugan_sa_coop\");\n  $txtHuluganBukodSaCoop           = $(\"#hulugan_bukod_sa_coop\");\n}\n\nvar _bindEvents = function() {\n  $btnSave.on(\"click\", function() {\n    _id = $(this).data('id');\n    $modalSave .show();\n  });\n\n\n\n  $btnConfirmSave.on(\"click\", function() {\n    \n    $.ajax({\n\n      url: \"/api/v1/online_loan_applications/update_details\",\n      method: \"POST\",\n      data: {\n        id:                         _id,\n        palya_sa_pagiimpok:         $txtPalyaSaPagiimpok.val(),\n        bilang_ng_absent:           $txtBilangNgAbsent.val(),\n        sit_down:                   $txtSitDown.val(),\n        kasalukuyang_insurance:     $txKasalukuyangInsurance.val(),\n\n        tungkulin_bilang_co_maker:  $txtTungkulinBilangCoMaker.val(),\n        \n        kita_sa_negosyo:            $txtKitaSaNegosyo.val(),\n        kita_mula_sa_asawa:         $txtKitaMulaSaAsawa.val(),\n        kita_mula_sa_kasama:        $txtKitaMulaSaKasama.val(),\n        iba_pang_pinagkakakitaan:   $txtIbaPangPinagkakakitaan.val(),\n\n  \n        gastos_sa_pagkain:          $txtGastosSaPagkain.val(),\n        gastos_sa_baon:             $txtGastosSaBaon.val(),\n        gastos_sa_gamot:            $txtGastosSaGamot.val(),\n        bayarin_sa_tubig:           $txtBayarinSaTubig.val(),\n        iba_pa:                     $txtIbaPa.val(),\n        hulugan_sa_coop:            $txtHuluganSaCoop.val(),\n        hulugan_bukod_sa_coop:      $txtHuluganBukodSaCoop.val(),\n\n        authenticity_token:         _authenticityToken\n\n      },\n      success: function(response) {\n        alert(\"Success!\"); \n        window.location.href = \"/online_loan_applications/\" + response.id;\n      }\n    });\n\n\n  });\n  \n\n}\n\nvar init = function(options) {\n  //_id                 = options.id;\n  _authenticityToken  = options.authenticityToken;\n  //_data               = options.data;\n\n  _cacheDom();\n  _bindEvents();\n}\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\nimport select2 from 'select2';\nselect2($);\n\nvar $modalNew;\nvar $modalDelete;\nvar $modalProcess;\nvar $modalBatchProcess;\nvar $selectBranch;\nvar $selectCenter;\nvar $selectMember;\nvar $selectProcessCenter;\nvar $selectLoans;\nvar $inputCollectionDate;\nvar $inputNumberOfDays;\nvar $inputStartDate;\nvar $inputEndDate;\nvar $inputNumberOfMoratoriumDays;\nvar $selectAccruedType;\nvar $inputReason;\nvar $btnNew;\nvar $btnDelete;\nvar $btnProcess;\nvar $btnBatchProcess;\nvar $btnConfirmNew;\nvar $btnConfirmDelete;\nvar $btnConfirmProcess;\nvar $btnConfirmBatchProcess;\nvar $message;\nvar templateErrorList;\nvar _authenticityToken;\n\nvar $inputBatchNumberOfDays;\nvar $selectBatchBranch;\nvar $inputDateInitializedCutOff;\nvar $batchStartDate;\nvar $batchEndDate;\nvar $batchAccruedType;\n\nvar _centers  = [];\nvar _members  = [];\nvar _loans    = [];\nvar _loanIds  = [];\n\nvar _branchId;\nvar _centerId;\nvar _memberId;\nvar _moratoriumId;\n\nvar _urlCreate        = \"/api/v1/billing_for_full_payments/create\";\nvar _urlDelete        = \"/api/v1/adjustments/accrued_interests/delete\";\nvar _urlProcess       =  \"#\" // \"/api/v1/adjustments/moratoriums/process\";\nvar _urlProcess       = \"/api/v1/adjustments/accrued_interests/process\";\nvar _urlBatchProcess  = \"/api/v1/adjustments/accrued_interests/batch_process\";\nvar _urlCenters       = \"/api/v1/branches/fetch_centers\";\nvar _urlLoans         = \"/api/v1/loans/fetch_by_member\";\n\nvar init  = function(options) {\n  _authenticityToken = options.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n};\n\nvar _cacheDom = function() {\n  $modalNew = new bootstrap.Modal(\n    document.getElementById(\"modal-new\")\n  )\n\n  $selectBranch                 = $(\"#select-branch\");\n  $selectCenter                 = $(\"#select-center\");\n  $selectMember                 = $(\"#select-member\");\n  $selectProcessCenter          = $(\"#select-process-center\");\n  $selectLoans                  = $(\"#select-loans\");\n  $inputNumberOfDays            = $(\"#input-number-of-days\");\n  $inputStartDate               = $(\"#input-start-date\");\n  $inputEndDate                 = $(\"#input-end-date\");\n  $inputNumberOfMoratoriumDays  = $(\"#input-number-of-moratorium-days\");\n  $selectAccruedType            = $(\"#select-accrued-type\");\n  $inputReason                  = $(\"#input-reason\");\n  $btnNew                       = $(\"#btn-new\");\n  $btnDelete                    = $(\".btn-delete\");\n  $btnProcess                   = $(\".btn-process\");\n  $btnBatchProcess              = $(\"#btn-batch-process\");\n  $btnConfirmNew                = $(\"#btn-confirm-new\");\n  $btnConfirmDelete             = $(\"#btn-confirm-delete\");\n  $btnConfirmProcess            = $(\"#btn-confirm-process\");\n  $btnConfirmBatchProcess       = $(\"#btn-confirm-batch-process\");\n  $message                      = $(\".message\");\n\n  $inputBatchNumberOfDays       = $(\"#input-batch-number-of-moratorium-days\");\n  $selectBatchBranch       = $(\"#select-batch-branch\");\n  $inputDateInitializedCutOff = $(\"#input-date-initialized-cut-off\");\n  $batchStartDate             = $(\"#batch-input-start-date\")\n  $batchEndDate             = $(\"#batch-input-end-date\")\n  $batchAccruedType         = $(\"#select-batch-accrued-type\")\n  $inputCollectionDate      = $(\"#collection-date\")\n  templateErrorList = $(\"#template-error-list\").html();\n\n  $selectLoans.select2({\n    allowClear: true,\n    width: \"auto\",\n    theme: \"bootstrap\"\n  });\n};\n\nvar _loadCenterOptions  = function() {\n  $selectCenter.html(\"\");\n  $selectMember.html(\"\");\n\n  if(_centers.length > 0) {\n    _centerId = _centers[0].id;\n\n    for(var i = 0; i < _centers.length; i++) {\n      $selectCenter.append(new Option(_centers[i].name, _centers[i].id));\n    }\n  }\n\n  if(_members.length > 0) {\n    _memberId = _members[0].id;\n\n    for(var i = 0; i < _members.length; i++) {\n      $selectMember.append(new Option(_members[i].full_name, _members[i].id));\n    }\n\n    $selectMember.val(_memberId);\n\n    _fetchLoans();\n  }\n};\n\nvar _fetchLoans = function() {\n  $.ajax({\n    method: 'GET',\n    url: _urlLoans,\n    data: {\n      member_id: _memberId\n    },\n    success: function(response) {\n      _loans  = response.loans;\n      console.log(\"Loans:\");\n      console.log(_loans);\n\n      $selectLoans.val(null).trigger('change');\n      $selectLoans.empty();\n\n      _loans.forEach(function(o, i) {\n        $selectLoans.append(\n          new Option(\n            o.loan_product.name,\n            o.id,\n            false,\n            false\n          )\n        ).trigger('change');\n      });\n    },\n    error: function(response) {\n      console.log(\"Error in fetching loans.\");\n      console.log(response);\n    }\n  });\n};\n\nvar _bindEvents = function() {\n  $selectMember.on(\"change\", function() {\n    _memberId = $(this).val();\n\n    _fetchLoans();\n  });\n\n  $btnBatchProcess.on(\"click\", function() {\n  \n    $modalBatchProcess.show();\n  });\n\n  $btnConfirmBatchProcess.on(\"click\", function() {\n  \n   var batchnumberOfDays    = $inputBatchNumberOfDays.val();\n   var selectBatchBranch    = $selectBatchBranch.val();\n   var inputDateInitializedCutOff =  $inputDateInitializedCutOff.val()\n    \n  var batchStartDate = $batchStartDate.val()       \n  var batchEndDate = $batchEndDate.val()  \n  var batchAccruedType = $batchAccruedType.val()\n\n  \n    $message.html(\"Loading...\");\n    $btnConfirmBatchProcess.prop(\"disabled\", true);\n\n\n    $.ajax({\n      url: _urlBatchProcess,\n      method: \"POST\",\n      data: {\n        branch_id:  selectBatchBranch,\n        batchnumberOfDays: batchnumberOfDays,\n        inputDateInitializedCutOff: inputDateInitializedCutOff,\n        batchStartDate: batchStartDate,\n        batchEndDate: batchEndDate,  \n        batchAccruedType: batchAccruedType\n    \n      },\n      success: function(response) {\n        $message.html(\"Success!\");\n        window.location.reload();\n      },\n      error: function(response) {\n        var errors  = [];\n\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors = [\"Something went wrong\"];\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmBatchProcess.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  $btnProcess.on(\"click\", function() {\n    _moratoriumId = $(this).data(\"id\");\n    $modalProcess.show();\n  });\n\n  $btnConfirmProcess.on(\"click\", function() {\n    $message.html(\"Loading...\");\n    $btnConfirmProcess.prop(\"disabled\", true);\n\n    $.ajax({\n      url: _urlProcess,\n      method: \"POST\",\n      data: {\n        id: _moratoriumId,\n        authenticity_token: _authenticityToken\n      },\n      success: function(response) {\n        $message.html(\"Success!\");\n        window.location.reload();\n      },\n      error: function(response) {\n        var errors  = [];\n\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors = [\"Something went wrong\"];\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmProcess.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  $btnDelete.on(\"click\", function() {\n    _moratoriumId = $(this).data(\"id\");\n    $modalDelete.show();\n  });\n\n  $btnConfirmDelete.on(\"click\", function() {\n    $message.html(\"Loading...\");\n    $btnConfirmDelete.prop(\"disabled\", true);\n\n    $.ajax({\n      url: _urlDelete,\n      method: \"POST\",\n      data: {\n        id: _moratoriumId\n      },\n      success: function(response) {\n        $message.html(\"Success!\");\n        window.location.reload();\n      },\n      error: function(response) {\n        console.log(response);\n        alert(\"Error in deleting record!\");\n        $message.html(\"\");\n        $btnConfirmDelete.prop(\"disabled\", false);\n      }\n    });\n  });\n\n  $selectCenter.on(\"change\", function() {\n    _centerId = $selectCenter.val();\n\n\n  });\n\n  $selectBranch.on(\"change\", function() {\n    $.ajax({\n      method: 'GET',\n      url: _urlCenters,\n      data: {\n        id: $selectBranch.val(),\n        with_members: true\n      },\n      success: function(response) {\n        _centers  = response.centers;\n\n        if(_centers.length > 0) {\n          _members  = _centers[0].members;\n        }\n\n        _loadCenterOptions();\n      },\n      error: function(response) {\n        console.log(response);\n        alert(\"Error in fetching centers\");\n      }\n    });\n  });\n\n  $btnNew.on(\"click\", function() {\n    $modalNew.show();\n  });\n\n  $btnConfirmNew.on(\"click\", function() {\n    _branchId           = $selectBranch.val();\n    _centerId           = $selectCenter.val();\n\n    var inputCollectionDate  = $inputCollectionDate.val();\n    var numberOfDays    = $inputNumberOfDays.val();\n    var reason          = $inputReason.val();\n    var startDate       = $inputStartDate.val();\n    var endDate         = $inputEndDate.val();\n    var inputNumberOfMoratoriumDays =  $inputNumberOfMoratoriumDays.val();\n    var selectAccruedType = $selectAccruedType.val();\n\n    \n\n    $btnConfirmNew.prop(\"disabled\", true);\n    $selectBranch.prop(\"disabled\", true);\n    $selectCenter.prop(\"disabled\", true);\n\n    console.log(_loanIds);\n\n    $message.html(\"Loading...\");\n\n    $.ajax({\n      url: _urlCreate,\n      method: \"POST\",\n      data: {\n        branch_id: _branchId,\n        center_id: _centerId,\n        collection_date: inputCollectionDate,\n        authenticity_token: _authenticityToken\n      },\n      success: function(resonse) {\n        $message.html(\n          \"Success! Redirecting...\"\n        );\n\n        window.location.reload();\n      },\n      error: function(response) {\n        var errors  = [];\n\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors = [\"Something went wrong\"];\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmNew.prop(\"disabled\", false);\n          $selectBranch.prop(\"disabled\", false);\n          $selectCenter.prop(\"disabled\", false);\n          $selectMember.prop(\"disabled\", false);\n          $selectLoans.prop(\"disabled\", false);\n          $inputReason.prop(\"disabled\", false);\n          $inputNumberOfDays.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n};\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\nimport select2 from 'select2';\nselect2($);\n\nvar $modalDelete;\nvar $modalProcess;\nvar $modalBatchProcess;\nvar $modalRemovePayment;\n\nvar $selectBranch;\nvar $selectCenter;\nvar $selectMember;\nvar $selectProcessCenter;\nvar $selectLoans;\nvar $inputCollectionDate;\nvar $inputNumberOfDays;\nvar $inputStartDate;\nvar $inputEndDate;\nvar $inputNumberOfMoratoriumDays;\nvar $selectAccruedType;\nvar $inputReason;\nvar $btnNew;\nvar $btnDelete;\nvar $btnProcess;\nvar $btnBatchProcess;\nvar $btnConfirmNew;\nvar $btnConfirmDelete;\nvar $btnConfirmProcess;\nvar $btnConfirmBatchProcess;\nvar $btnAdd;\nvar $btnRemove;\nvar $btnConfirmRemove;\n\nvar $btnAddParticular;\nvar $inputParticular;\nvar $btnAddOr;\nvar $inputOrNumber;\nvar $btnAddAr;\nvar $inputArNumber;\nvar $selectBook;\n\nvar $message;\nvar templateErrorList;\nvar _authenticityToken;\n\nvar $inputBatchNumberOfDays;\nvar $selectBatchBranch;\nvar $inputDateInitializedCutOff;\nvar $batchStartDate;\nvar $batchEndDate;\nvar $batchAccruedType;\n\nvar $btnApproved;\nvar $modalApproved;\nvar $btnConfirmApproved;\n\nvar $btnChecked;\nvar $modalCheck;\nvar $btnConfirmCheck;\n\nvar $labelMemberName;\nvar $labeMemberLoanName;\nvar $labelMemberLoanProduct;\nvar $labelMemberLoanAmount;\n \nvar $btnSelectBook;\n\nvar _centers  = [];\nvar _members  = [];\nvar _loans    = [];\nvar _loanIds  = [];\n\nvar _branchId;\nvar _centerId;\nvar _memberId;\nvar _moratoriumId;\n\nvar _memberId;\nvar _memberAccountId;\nvar _dataStoreId;  \nvar _recordType;\nvar _loanAmount;\nvar _loanProductId;\nvar _loanId;\n\n\nvar _urlCreate        = \"/api/v1/billing_for_full_payments/update_amount\";\nvar _urlDelete        = \"/api/v1/adjustments/accrued_interests/delete\";\nvar _urlProcess       =  \"#\" // \"/api/v1/adjustments/moratoriums/process\";\nvar _urlProcess       = \"/api/v1/adjustments/accrued_interests/process\";\nvar _urlBatchProcess  = \"/api/v1/adjustments/accrued_interests/batch_process\";\nvar _urlCenters       = \"/api/v1/branches/fetch_centers\";\nvar _urlLoans         = \"/api/v1/loans/fetch_by_member\";\nvar _urlAddMember     = \"/api/v1/billing_for_full_payments/add_member\";\nvar _urlRemovePayment = \"/api/v1/billing_for_full_payments/remove_payment_member\";\nvar _urlAddParticular = \"/api/v1/billing_for_full_payments/add_particular\";\nvar _urlAddOr         = \"/api/v1/billing_for_full_payments/add_or\";\nvar _urlAddAr         = \"/api/v1/billing_for_full_payments/add_ar\";\nvar _urlApproved      = \"/api/v1/billing_for_full_payments/approved\";\nvar _urlChecked       = \"/api/v1/billing_for_full_payments/checked\";\nvar _urlUpdateBook    = \"/api/v1/billing_for_full_payments/update_book\";\n\nvar init  = function(options) {\n  _authenticityToken = options.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n};\n\nvar _cacheDom = function() {\n  $modalProcess = new bootstrap.Modal(\n    document.getElementById(\"modal-change-payment\")\n  );\n\n  $modalRemovePayment = new bootstrap.Modal(\n    document.getElementById(\"modal-remove-payment\")\n  );\n\n  $modalCheck = new bootstrap.Modal(\n    document.getElementById(\"modal-check\")\n  );\n\n  $modalApproved = new bootstrap.Modal(\n    document.getElementById(\"modal-approve\")\n  );\n\n  $selectBranch                 = $(\"#select-branch\");\n  $selectCenter                 = $(\"#select-center\");\n  $selectProcessCenter          = $(\"#select-process-center\");\n  $inputNumberOfDays            = $(\".amount_details\");\n  $inputStartDate               = $(\"#bookId\");\n  $inputEndDate                 = $(\"#input-end-date\");\n  $inputNumberOfMoratoriumDays  = $(\"#input-number-of-moratorium-days\");\n  $selectAccruedType            = $(\"#select-accrued-type\");\n  $inputReason                  = $(\"#input-reason\");\n  $btnNew                       = $(\".undo\");\n  $btnRemove                    = $(\".remove_amount\");\n  $btnDelete                    = $(\".btn-delete\");\n  $btnProcess                   = $(\".btn-process\");\n  $btnBatchProcess              = $(\"#btn-batch-process\");\n  $btnConfirmNew                = $(\"#btn-confirm-approve\");\n  $btnConfirmDelete             = $(\"#btn-confirm-delete\");\n  $btnConfirmProcess            = $(\"#btn-confirm-process\");\n  $btnConfirmBatchProcess       = $(\"#btn-confirm-batch-process\");\n  $message                      = $(\".message\");\n\n  $inputBatchNumberOfDays       = $(\"#input-batch-number-of-moratorium-days\");\n  $selectBatchBranch            = $(\"#select-batch-branch\");\n  $inputDateInitializedCutOff   = $(\"#input-date-initialized-cut-off\");\n  $batchStartDate               = $(\"#batch-input-start-date\");\n  $batchEndDate                 = $(\"#batch-input-end-date\");\n  $batchAccruedType             = $(\"#select-batch-accrued-type\");\n  $inputCollectionDate          = $(\"#collection-date\");\n  $btnAdd                       = $(\"#btn-add\");\n  $selectMember                 = $(\"#select-member\");\n  $selectLoans                  = $(\"#select-loans\");\n  $btnConfirmRemove             = $(\"#btn-confirm-remove\");\n\n  $btnAddParticular         = $(\"#btn-add-particular\");\n  $inputParticular          = $(\"#particular\");\n\n  $btnAddOr         = $(\"#btn-add-or\");\n  $inputOrNumber          = $(\"#or_number\");\n  \n  $btnAddAr         = $(\"#btn-add-ar\");\n  $inputArNumber          = $(\"#ar_number\");\n\n  $btnApproved      = $(\"#btn-approved\")\n  $btnConfirmApproved = $(\"#btn-confirm-approved\")\n\n\n  $btnChecked = $(\"#btn-checked\");\n  $btnConfirmCheck = $(\"#btn-confirm-check\");\n\n\n  $labelMemberName = $(\"#memberName\");\n  $labeMemberLoanName = $(\"#memberLoanName\");\n  $labelMemberLoanProduct = $(\"#memberLoanProduct\");\n  $labelMemberLoanAmount = $(\"#memberLoanAmount\")\n  \n  $selectBook = $(\"#book_type\");\n  $btnSelectBook  = $(\"#btn-add-book\");\n\n\n  templateErrorList = $(\"#template-error-list\").html();\n\n  $selectLoans.select2({\n    width: \"auto\",\n    theme: \"bootstrap-5\"\n  });\n};\n\nvar _loadCenterOptions  = function() {\n  $selectCenter.html(\"\");\n  $selectMember.html(\"\");\n\n  if(_centers.length > 0) {\n    _centerId = _centers[0].id;\n\n    for(var i = 0; i < _centers.length; i++) {\n      $selectCenter.append(new Option(_centers[i].name, _centers[i].id));\n    }\n  }\n\n  if(_members.length > 0) {\n    _memberId = _members[0].id;\n\n    for(var i = 0; i < _members.length; i++) {\n      $selectMember.append(new Option(_members[i].full_name, _members[i].id));\n    }\n\n    $selectMember.val(_memberId);\n\n    _fetchLoans();\n  }\n};\n\n\nvar _bindEvents = function() {\n  $selectMember.on(\"change\", function() {\n    _memberId = $(this).val();\n\n    //_fetchLoans();\n  });\n \n  \n  $btnSelectBook.on(\"click\", function(){\n    _dataStoreId = $(this).data(\"id\");\n    var new_book = $selectBook.val()\n    $.ajax({\n      url: _urlUpdateBook,\n      method: \"POST\",\n      data: {\n        dataStoreid: _dataStoreId,\n        selectBook: new_book\n      },\n      success: function(response) {\n        $message.html(\"Success!\");\n        window.location.reload();\n      },\n      error: function(response) {\n        console.log(response);\n        alert(\"Error in changing book!\");\n        $message.html(\"\");\n        $btnConfirmDelete.prop(\"disabled\", false);\n      }\n    });\n    //_urlUpdateBook\n    //alert($selectBook.val())\n\n  });\n\n\n\n  $btnChecked.on(\"click\", function() {\n    \n    _dataStoreId = $(this).data(\"data-store-id\");\n  \n    $modalCheck.show();\n  });\n\n\n  $btnConfirmCheck.on(\"click\", function() { //add or\n  \n    \n    var dataStoreId = _dataStoreId    \n  \n    \n    $.ajax({\n      url: _urlChecked,\n      method: \"POST\",\n      data: {\n        dataStoreid: dataStoreId\n      },\n      success: function(response) {\n        $message.html(\"Success!\");\n        \n        window.location.reload();\n      },\n      error: function(response) {\n        console.log(response);\n        alert(\"Error in adding particular!\");\n        $message.html(\"\");\n        $btnConfirmDelete.prop(\"disabled\", false);\n      }\n    });\n  });\n\n\n  $btnApproved.on(\"click\", function() {\n    \n    _dataStoreId = $(this).data(\"data-store-id\");\n  \n    $modalApproved.show();\n  });\n\n\n  $btnConfirmApproved.on(\"click\", function() { //add or\n  \n    //var dataStoreId = $(this).data('data-store-id')     \n    \n    \n    $.ajax({\n      url: _urlApproved,\n      method: \"POST\",\n      data: {\n        dataStoreid: _dataStoreId\n      },\n      success: function(response) {\n        $message.html(\"Processing!\");\n        window.location.reload();\n      },\n      error: function(response) {\n        var errors  = [];\n\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors = [\"Something went wrong\"];\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmProcess.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n\n\n  $btnAddAr.on(\"click\", function() { //add or\n  \n    \n    var dataStoreId = $(this).data('data-store-id')     \n    var txtAr = $inputArNumber.val()\n    \n    $.ajax({\n      url: _urlAddAr,\n      method: \"POST\",\n      data: {\n        dataStoreid: dataStoreId,\n        txtAr: txtAr\n      },\n      success: function(response) {\n        $message.html(\"Success!\");\n        window.location.reload();\n      },\n      error: function(response) {\n        console.log(response);\n        alert(\"Error in adding particular!\");\n        $message.html(\"\");\n        $btnConfirmDelete.prop(\"disabled\", false);\n      }\n    });\n  });\n  $btnAddOr.on(\"click\", function() { //add or\n  \n    \n    var dataStoreId = $(this).data('data-store-id')     \n    var txtOr = $inputOrNumber.val()\n  \n    $.ajax({\n      url: _urlAddOr,\n      method: \"POST\",\n      data: {\n        dataStoreid: dataStoreId,\n        txtOr: txtOr\n      },\n      success: function(response) {\n        $message.html(\"Success!\");\n        window.location.reload();\n      },\n      error: function(response) {\n        console.log(response);\n        alert(\"Error in adding particular!\");\n        $message.html(\"\");\n        $btnConfirmDelete.prop(\"disabled\", false);\n      }\n    });\n  });\n\n\n  $btnAddParticular.on(\"click\", function() { //add particular\n  \n\n    var dataStoreId = $(this).data('data-store-id')     \n    var txtParticular = $inputParticular.val()\n    $.ajax({\n      url: _urlAddParticular,\n      method: \"POST\",\n      data: {\n        dataStoreid: dataStoreId,\n        txtParticular: txtParticular\n      },\n      success: function(response) {\n        $message.html(\"Success!\");\n        window.location.reload();\n      },\n      error: function(response) {\n        console.log(response);\n        alert(\"Error in adding particular!\");\n        $message.html(\"\");\n        $btnConfirmDelete.prop(\"disabled\", false);\n      }\n    });\n  });\n\n\n  $btnAdd.on(\"click\", function(){\n    \n    var member_id = $selectMember.val();\n    var member_loan_id = $selectLoans.val();\n    var dataStoreId = $(this).data('data-store-id')     \n\n    //alert(dataStoreId)\n    $.ajax({\n\n      url: _urlAddMember,\n      method: \"POST\",\n      data: {\n        member_id:          member_id,\n        member_loan_id:     member_loan_id,\n        data_store_id:      dataStoreId,\n        authenticity_token: _authenticityToken\n      },\n      success: function(response) {\n        $message.html(\"Success!\");\n        window.location.reload();\n      },\n      error: function(response) {\n        \n        var errors  = [];\n        alert(JSON.parse(response.responseText).full_messages)\n      \n      }\n    });\n  });\n\n\n//  $btnAddParticular.on(\"click\", function() {\n//    alert( $inputParticular.val())\n  \n//  });\n\n\n  $btnProcess.on(\"click\", function() {\n  \n    _moratoriumId = $(this).data(\"id\");\n    $modalProcess.show();\n  });\n\n  $btnConfirmProcess.on(\"click\", function() {\n    $message.html(\"Loading...\");\n    $btnConfirmProcess.prop(\"disabled\", true);\n\n    $.ajax({\n      url: _urlProcess,\n      method: \"POST\",\n      data: {\n        id: _moratoriumId,\n        authenticity_token: _authenticityToken\n      },\n      success: function(response) {\n        $message.html(\"Success!\");\n        window.location.reload();\n      },\n      error: function(response) {\n        var errors  = [];\n\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors = [\"Something went wrong\"];\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmProcess.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  $btnDelete.on(\"click\", function() {\n    alert(\"jef\")\n    _moratoriumId = $(this).data(\"id\");\n    $modalDelete.show();\n  });\n\n  $btnConfirmDelete.on(\"click\", function() {\n    $message.html(\"Loading...\");\n    $btnConfirmDelete.prop(\"disabled\", true);\n\n    $.ajax({\n      url: _urlDelete,\n      method: \"POST\",\n      data: {\n        id: _moratoriumId\n      },\n      success: function(response) {\n        $message.html(\"Success!\");\n        window.location.reload();\n      },\n      error: function(response) {\n        console.log(response);\n        alert(\"Error in deleting record!\");\n        $message.html(\"\");\n        $btnConfirmDelete.prop(\"disabled\", false);\n      }\n    });\n  });\n\n\n  $btnConfirmRemove.on(\"click\", function() {\n  \n    \n    \n    var loanProductId   = _loanProductId\n    var memberId        = _memberId\n    var memberAccountId = _memberAccountId\n    var dataStoreId     = _dataStoreId   \n    var loanId          = _loanId\n    \n    \n    $.ajax({\n      url: _urlRemovePayment,\n      method: \"POST\",\n      data: {\n        id: _moratoriumId,\n        loanProductId:    loanProductId,\n        memberId:         memberId,\n        memberAccountId:  memberAccountId,\n        dataStoreId:      dataStoreId,\n        loanId:          loanId\n      },\n      success: function(response) {\n        $message.html(\"Success!\");\n        window.location.reload();\n      },\n      error: function(response) {\n        console.log(response);\n        alert(\"Error in deleting record!\");\n        $message.html(\"\");\n        $btnConfirmDelete.prop(\"disabled\", false);\n      }\n    });\n  });\n  \n\n\n\n  $btnRemove.on(\"click\", function(){\n  \n    var amount = $(this).data('amount')\n    var loanProductId = $(this).data('loan-id')\n    var memberId = $(this).data('member-id') \n    var memberAccountId = $(this).data('member-account-id')\n    var dataStoreId = $(this).data('data-store-id')     \n    var recordType = $(this).data('record-type')\n    var loanId = $(this).data('loan-product-id')\n    var loanProductName = $(this).data('loan-product-name')\n    var memberAccountName = $(this).data('member-account-name')    \n    $labeMemberLoanName.text(memberAccountName)\n    $labelMemberLoanProduct.text(loanProductName)\n    $labelMemberLoanAmount.text(amount)\n    \n    $inputStartDate.val(amount)\n    \n    \n    \n\n\n     _memberId          = memberId \n     _memberAccountId   = memberAccountId\n     _dataStoreId       = dataStoreId\n     _recordType        = recordType\n     _loanProductId     = loanProductId\n     _loanId            = loanId\n    \n  \n\n    $modalRemovePayment.show();\n\n  });\n\n\n  $btnNew.on(\"click\", function() {\n  \n    var amount = $(this).data('amount')\n    var memberId = $(this).data('member-id') \n    var memberName = $(this).data('member-account-name') \n    var memberAccountId = $(this).data('member-account-id')\n    var dataStoreId = $(this).data('data-store-id')     \n    var recordType = $(this).data('record-type')\n    $inputStartDate.val(amount)\n    $labelMemberName.text(memberName)\n    \n    \n     _memberId          = memberId \n     _memberAccountId   = memberAccountId\n     _dataStoreId       = dataStoreId\n     _recordType        = recordType\n   \n\n\n    $modalProcess.show();\n  });\n\n  $btnConfirmNew.on(\"click\", function(e) {\n    \n     _loanAmount = $inputStartDate.val()\n    \n  \n\n    _branchId           = $selectBranch.val();\n    _centerId           = $selectCenter.val();\n\n    var inputCollectionDate  = $inputCollectionDate.val();\n    var numberOfDays    = $inputNumberOfDays.val();\n    var reason          = $inputReason.val();\n    var startDate       = $inputStartDate.val();\n    var endDate         = $inputEndDate.val();\n    var inputNumberOfMoratoriumDays =  $inputNumberOfMoratoriumDays.val();\n    var selectAccruedType = $selectAccruedType.val();\n\n    \n\n    $btnConfirmNew.prop(\"disabled\", true);\n    $selectBranch.prop(\"disabled\", true);\n    $selectCenter.prop(\"disabled\", true);\n\n    console.log(_loanIds);\n\n    $message.html(\"Loading...\");\n\n    $.ajax({\n      url: _urlCreate,\n      method: \"POST\",\n      data: {\n            member_id:          _memberId,\n            member_account_id:  _memberAccountId,\n            data_store_id:      _dataStoreId,\n            record_type:        _recordType,\n            loan_amount:        _loanAmount\n      },\n      success: function(resonse) {\n        $message.html(\n          \"Success! Redirecting...\"\n        );\n\n        window.location.reload();\n      },\n      error: function(response) {\n        var errors  = [];\n\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors = [\"Something went wrong\"];\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmNew.prop(\"disabled\", false);\n          $selectBranch.prop(\"disabled\", false);\n          $selectCenter.prop(\"disabled\", false);\n          $selectMember.prop(\"disabled\", false);\n          $selectLoans.prop(\"disabled\", false);\n          $inputReason.prop(\"disabled\", false);\n          $inputNumberOfDays.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n};\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\nimport \"pdfmake/build/pdfmake\"\nconst pdfMake = window[\"pdfMake\"];\nimport pdfFonts from \"pdfmake/build/vfs_fonts\";\npdfMake.vfs = pdfFonts.pdfMake.vfs;\n\nimport LoanFormDocumentBuilder from './LoanFormDocumentBuilder.js';\n\nvar _data;\n\nvar $message;\n\nvar templateErrorList;\n\nvar $btnApproveReverseLoan;\nvar $btnDeleteReverseLoan;\nvar $btnAddParticular;\nvar $txtReverseReason;\nvar $modalApproveReverseLoan;\nvar $btnConfirmReverseLoan;\n//var $btnConfirmReverseLoan;\n//var $modalReverseLoan;\n\n//var _urlApproveReverse               = \"/api/v1/loans/reage\";\nvar _urlReverse               = \"/api/v1/loans/reverse_loan_reason\";\nvar _urlConfirmReverse        = \"/api/v1/loans/reverse_approve_loan_reason\";\n\nvar _id;\nvar _authenticityToken;\n\nvar _cacheDom = function() {\n  $message          = $(\".message\");\n\n  $btnApproveReverseLoan  = $(\"#btn-approve-reverse-loan\");\n  $btnDeleteReverseLoan   = $(\"#btn-delete-reverse-loan\");\n  $btnAddParticular       = $(\"#btn-add-particular\");\n  $txtReverseReason       = $(\"#reverse-reason\");\n\n  \n  $modalApproveReverseLoan = new bootstrap.Modal(document.getElementById(\"modal-approve-reverse-loan\"));\n  $btnConfirmReverseLoan = $(\"#btn-confirm-approve-reverse-loan\");\n\n  templateErrorList = $(\"#template-error-list\").html();\n};\n\nvar _bindEvents = function() {\n  \n  $btnApproveReverseLoan.on(\"click\", function() {\n    \n    $modalApproveReverseLoan.show();\n   // $txtReverseReason.val();\n  });\n  \n  $btnConfirmReverseLoan.on(\"click\", function(){\n  \n    _id =  $(this).data(\"loan-id\");\n    $.ajax({\n      url: _urlConfirmReverse,\n      method: 'POST',\n      data: {\n        id: _id,\n        authenticity_token: _authenticityToken\n      },\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.href = \"/loans/\" + _id;\n      },\n      error: function(response) {\n        console.log(response);\n        var errors  = [];\n        try {\n          errors  = JSON.parse(response.responseText).errors.full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n        }\n      }\n    });\n    \n  });\n\n  $btnAddParticular.on(\"click\", function() {\n    \n    _id =  $(this).data(\"loan-id\");\n    $.ajax({\n      url: _urlReverse,\n      method: 'POST',\n      data: {\n        id: _id,\n        reason_details: $txtReverseReason.val(),\n        authenticity_token: _authenticityToken\n      },\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.reload();\n      },\n      error: function(response) {\n        console.log(response);\n        var errors  = [];\n        try {\n          errors  = JSON.parse(response.responseText).errors.full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n        }\n      }\n    });\n  });\n\n\n  \n\n  \n\n\n\n\n\n\n\n\n};\n\nvar init  = function(config) {\n  _id                 = config.id;\n  _authenticityToken  = config.authenticityToken;\n  _data               = config.data;\n\n  _cacheDom();\n  _bindEvents();\n};\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\n\nvar authenticityToken;\n\nvar $modalNew;\nvar $btnNew;\nvar $btnConfirmNew;\nvar $btnGenMidas;\n\nvar $selectBranch;\nvar $reportDate;\nvar $inputAsOf;\nvar $midasType;\n\nvar $startDate;\nvar $endDate;\nvar $selectBranch2;\nvar $midasType2;\nvar $btnGenMidasClosing;\n\nvar $message;\nvar templateErrorList;\n\nvar _urlQueue;\nvar _userId;\nvar _xKoinsAppAuthSecret;\nvar _urlGenerate        = \"/api/v1/midas/generate\";\n\n\nvar $selectBranch3;\nvar $inputAsOf2;\nvar $selectLoanProduct;\n\n\nvar _cacheDom = function() {\n  $modalNew      = $(\"#modal-new\");\n  $btnNew        = $(\"#btn-new\");\n  $btnConfirmNew = $(\"#btn-confirm-new\");\n  $btnGenMidas   = $(\"#btn-gen-midas\");\n\n  $selectBranch2        = $(\"#branch-select\");\n  $startDate            = $(\"#start-date\");\n  $endDate              = $(\"#end-date\");\n  $midasType2           = $(\"#midas-type-closing\");\n  $btnGenMidasClosing   = $(\"#c-btn-gen-midas\");\n\n  $selectBranch = $(\"#select-branch\");\n  $reportDate\t  = $(\"#report-date\");\t\n  $inputAsOf    = $(\"#input-as-of\");\n  $midasType\t  = $(\"#midas-type\");\n\n\n\n  $btnGenloan   = $(\"#btn-gen-loan\");\n  $selectBranch3 = $(\"#select-branch-loan\");\n  $inputAsOf2    = $(\"#as-of-date\");\n  $selectLoanProduct   = $(\"#loan-product-select\");\n\n  $message          = $(\".message\");\n  templateErrorList = $(\"#template-error-list\").html();\n}\nvar encodeQueryData = function(data) {\n  var ret = []\n  for(var d in data) {\n    ret.push(encodeURIComponent(d) + \"=\" + encodeURIComponent(data[d]));\n  }\n\n  return ret.join(\"&\");\n};\n\nvar _bindEvents = function() {\n  $btnGenMidasClosing.on(\"click\",function(){\n    var select_branch = $selectBranch2.val();\n    var start_date = $startDate.val();\n    var end_date = $endDate.val();\n    var midas_type = $midasType2.val();\n\n    var data = {\n      branch: select_branch,\n      start_date: start_date,\n      end_date: end_date,\n      midas_type: midas_type\n    }\n\n   console.log(data);\n\n   window.location = \"/excel_reports/midas_closing_report?\" + encodeQueryData(data);\n\n\n  });\n\n\n  $btnGenloan.on(\"click\", function() {\n    var branch = $selectBranch3.val();\n    var as_of = $inputAsOf2.val();\n    var loan_product = $selectLoanProduct.val();\n  \n    var data = {\n      branch: branch,\n      as_of: as_of,\n      loan: loan_product\n    };\n  \n    console.log(data);\n  \n    window.location = \"/excel_reports/loan_report?\" + encodeQueryData(data);\n  });\n  \n\n\n\n  $btnNew.on(\"click\", function() {\n    $modalNew.show();\n    $message.html(\"\");\n  });\n\n   $btnGenMidas.on(\"click\", function() {\n\tvar branchId   = $selectBranch.val();\n\tvar reportDate = $reportDate.val();\n\tvar midasType  = $midasType.val();\n\t\n\tvar data = {\n\t\tbranchId: branchId,\n\t\treportDate: reportDate,\n\t\tmidasType: midasType\n\t}\t\n\twindow.location = \"/excel_reports/excel_report?\" + encodeQueryData(data);\n\n  });\n\n\n}\n\n\nvar init  = function(config) {\n  authenticityToken = config.authenticityToken;\n  _urlQueue             = config.urlQueue;\n  _userId               = config.userId;\n  _xKoinsAppAuthSecret  = config.xKoinsAppAuthSecret;\n\n  _cacheDom();\n  _bindEvents();\n}\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\r\nimport $ from \"jquery\";\r\nimport * as bootstrap from \"bootstrap\";\r\n\r\nvar authenticityToken;\r\n\r\nvar $modalNew;\r\nvar $btnNew;\r\nvar $btnConfirmNew;\r\n\r\nvar $selectYear;\r\nvar $selectBranch;\r\n\r\nvar $message;\r\nvar templateErrorList;\r\n\r\nvar _cacheDom = function() {\r\n  $modalNew      = new bootstrap.Modal(\r\n    document.getElementById(\"modal-new\")\r\n\r\n  );\r\n  $btnNew           = $(\"#btn-new\");\r\n  $btnConfirmNew    = $(\"#btn-confirm-new\");\r\n  $selectYear       = $(\"#select-year\");\r\n  $selectBranch     = $(\"#select-branch\");\r\n\r\n  $message          = $(\".message\");\r\n  templateErrorList = $(\"#template-error-list\").html();\r\n}\r\n\r\nvar _bindEvents = function() {\r\n  $btnNew.on(\"click\", function() {\r\n    $modalNew.show();\r\n    $message.html(\"\");\r\n  });\r\n\r\n  $btnConfirmNew.on(\"click\", function() {\r\n    var year      = $selectYear.val();\r\n    var branchId  = $selectBranch.val();\r\n\r\n    $message.html(\"Loading...\");\r\n    $btnConfirmNew.prop(\"disabled\", true);\r\n    $selectYear.prop(\"disabled\", true);\r\n    $selectBranch.prop(\"disabled\", true);\r\n\r\n    var data  = {\r\n      year: year,\r\n      branch_id: branchId,\r\n      authenticity_token: authenticityToken\r\n    }\r\n\r\n    $.ajax({\r\n      url: \"/api/v1/data_stores/members_in_good_standing/queue\",\r\n      method: 'POST',\r\n      data: data,\r\n      success: function(response) {\r\n        window.location.href=\"/data_stores/members_in_good_standing\";\r\n      },\r\n      error: function(response) {\r\n        errors = [];\r\n\r\n        try {\r\n          errors = JSON.parse(response.responseText).full_messages;\r\n        } catch(err) {\r\n          console.log(response);\r\n          errors.push(\"Something went wrong\");\r\n        }\r\n\r\n        $message.html(\r\n          Mustache.render(\r\n            templateErrorList,\r\n            { errors: errors }\r\n          )\r\n        );\r\n\r\n        $btnConfirmNew.prop(\"disabled\", false);\r\n        $selectYear.prop(\"disabled\", false);\r\n        $selectBranch.prop(\"disabled\", false);\r\n      }\r\n    });\r\n  });\r\n}\r\n\r\nvar init  = function(config) {\r\n  authenticityToken = config.authenticityToken;\r\n\r\n  _cacheDom();\r\n  _bindEvents();\r\n}\r\n\r\nexport default { init: init };\r\n", "import Mustache from \"mustache\";\r\nimport $ from \"jquery\";\r\nimport * as bootstrap from \"bootstrap\";\r\nvar $modalPrint;\r\nvar $printMessage;\r\nvar $btnPrintPdf;\r\n\r\n\r\nvar $btnPrint;\r\nvar loader;\r\n\r\nvar id;\r\nvar templateErrorList;\r\nvar authenticityToken;\r\n\r\nvar $message;\r\n\r\nvar _cacheDom = function() {\r\n\r\n  $btnPrint         = $(\"#btn-print\");\r\n  $printMessage     = $(\".print-message\");\r\n  $btnPrintPdf      = $(\"#btn-print-pdf\");\r\n  $btnExcel         = $(\"#btn-excel\");\r\n  $modalPrint       = $(\"#modal-print\");\r\n  $message          = $(\".message\");\r\n  templateErrorList = $(\"#template-error-list\").html();\r\n  loader            = $(\"#template-loader\").html();\r\n};\r\n\r\nvar _bindEvents = function() {\r\n\r\n  \r\n $btnPrintPdf.on(\"click\", function() {\r\n    var print_icpr = $btnPrintPdf.data('id');\r\n\r\n    $modalPrint.show();\r\n    // $printMessage.html(\r\n    //  Mustache.render(\r\n    //    loader,\r\n    //    {}\r\n    //  )\r\n    // );\r\n    $modalPrint.hide();\r\n    window.open(\"/print?id=\" + print_icpr + \"&type=print_migs\");\r\n  });\r\n\r\n  $btnExcel.on(\"click\", function () {\r\n\r\n    id = $(this).data(\"id\");\t\r\n    if (!id) {\r\n      console.error(\"Missing ID for Excel download\");\r\n      $message.html(\"Error: Missing ID.\");\r\n      return;\r\n    }else{\r\n      console.log(id);\r\n    }\r\n    \r\n    $.ajax({\r\n      url: \"/data_stores/members_in_good_standing/\" + id + \"/excel\",\r\n      method: \"GET\",\r\n      data: {\r\n        id: id,\r\n        authenticity_token: authenticityToken,\r\n      },\r\n      dataType: \"json\",\r\n      success: function (response) {\r\n        console.log(response);\r\n        window.open(response.download_url, \"_blank\");\r\n      },\r\n      error: function (response) {\r\n        $message.html(\"Error downloading Excel.\");\r\n      },\r\n    });\r\n  });\r\n};\r\n\r\nvar init  = function(options) {\r\n  id                = options.id;\r\n  authenticityToken = options.authenticityToken;\r\n\r\n  _cacheDom();\r\n  _bindEvents();\r\n};\r\n\r\nexport default { init: init }\r\n", "import Mustache from \"mustache\";\r\nimport $ from \"jquery\";\r\nimport * as bootstrap from \"bootstrap\";\r\n\r\nvar authenticityToken;\r\n\r\nvar $modalNew;\r\nvar $btnNew;\r\nvar $btnConfirmNew;\r\nvar errors;\r\nvar $selectYear;\r\nvar $selectBranch;\r\nvar $selectNumberYear;\r\nvar $message;\r\nvar templateErrorList;\r\n\r\nvar _cacheDom = function() {\r\n  $modalNew = new bootstrap.Modal(\r\n    document.getElementById(\"modal-new\")\r\n  );\r\n\r\n  $btnNew           = $(\"#btn-new\");\r\n  $btnConfirmNew    = $(\"#btn-confirm-new\");\r\n  $selectYear       = $(\"#select-year\");\r\n  $selectBranch     = $(\"#select-branch\");\r\n  $selectNumberYear = $(\"#select-number-year\");\r\n  $message          = $(\".message\");\r\n  templateErrorList = $(\"#template-error-list\").html();\r\n}\r\n\r\nvar _bindEvents = function() {\r\n  $btnNew.on(\"click\", function() {\r\n    $modalNew.show();\r\n    $message.html(\"\");\r\n  });\r\n\r\n  $btnConfirmNew.on(\"click\", function() {\r\n    var year      = $selectYear.val();\r\n    var branchId  = $selectBranch.val();\r\n    var numberyear = $selectNumberYear.val();\r\n\r\n    $message.html(\"Loading...\");\r\n    $btnConfirmNew.prop(\"disabled\", true);\r\n    $selectYear.prop(\"disabled\", true);\r\n    $selectNumberYear.prop(\"disabled\", true);\r\n    $selectBranch.prop(\"disabled\", true);\r\n\r\n    var data  = {\r\n      year: year,\r\n      branch_id: branchId,\r\n      number_year: numberyear,\r\n      authenticity_token: authenticityToken\r\n    }\r\n\r\n    $.ajax({\r\n      url: \"/api/v1/data_stores/for_writeoff/queue\",\r\n      method: 'POST',\r\n      data: data,\r\n      success: function(response) {\r\n        window.location.href=\"/data_stores/for_writeoff\";\r\n      },\r\n      error: function(response) {\r\n        errors = [];\r\n\r\n        try {\r\n          errors = JSON.parse(response.responseText).full_messages;\r\n        } catch(err) {\r\n          errors.push(\"Something went wrong\");\r\n          console.log(response);\r\n        }\r\n\r\n        $message.html(\r\n          Mustache.render(\r\n            templateErrorList,\r\n            { errors: errors }\r\n          )\r\n        );\r\n\r\n        $btnConfirmNew.prop(\"disabled\", false);\r\n        $selectBranch.prop(\"disabled\", false);\r\n        $selectYear.prop(\"disabled\", false);\r\n      }\r\n    });\r\n  });\r\n}\r\n\r\nvar init  = function(config) {\r\n  authenticityToken = config.authenticityToken;\r\n\r\n  _cacheDom();\r\n  _bindEvents();\r\n}\r\n\r\nexport default { init: init };\r\n", "import Mustache from \"mustache\";\r\nimport $ from \"jquery\";\r\nimport * as bootstrap from \"bootstrap\";\r\n\r\nvar $btnPrint;\r\nvar loader;\r\n\r\nvar id;\r\nvar templateErrorList;\r\nvar authenticityToken;\r\nvar $btnExcel;\r\nvar $message;\r\n\r\nvar _urlDownload= \"/data_stores/for_writeoff/excel\";\r\n\r\nvar _cacheDom = function() {\r\n  $btnExcel         = $(\"#btn-excel\")\r\n\r\n  $message          = $(\".message\");\r\n  templateErrorList = $(\"#template-error-list\").html();\r\n  loader            = $(\"#template-loader\").html();\r\n};\r\n\r\nvar _bindEvents = function() {\r\n\r\n  $btnExcel.on(\"click\", function() {\r\n    $.ajax({\r\n      url: _urlDownload,\r\n      method: 'GET',\r\n      data: {\r\n        id: id,\r\n        authenticity_token: authenticityToken\r\n      },\r\n      dataType: 'json',\r\n      success: function(response) {\r\n        console.log(response);\r\n        window.open(response.download_url, '_blank');\r\n      },\r\n      error: function(response) {\r\n        $message.html(\"Error!\");\r\n      }\r\n    });\r\n  });\r\n};\r\n\r\nvar init  = function(options) {\r\n  id                = options.id;\r\n  authenticityToken = options.authenticityToken;\r\n\r\n  _cacheDom();\r\n  _bindEvents();\r\n};\r\n\r\nexport default { init: init }\r\n", "import Mustache from \"mustache\";\r\nimport $ from \"jquery\";\r\nimport * as bootstrap from \"bootstrap\";\r\n\r\nvar authenticityToken;\r\n\r\nvar $modalNew;\r\nvar $btnNew;\r\nvar $btnConfirmNew;\r\nvar errors;\r\nvar $selectBranch;\r\nvar $selectBranchToTransfer;\r\nvar $message;\r\nvar templateErrorList;\r\n\r\nvar _cacheDom = function() {\r\n  $modalNew = new bootstrap.Modal(\r\n    document.getElementById(\"modal-new\")\r\n  )\r\n  $btnNew           = $(\"#btn-new\");\r\n  $btnConfirmNew    = $(\"#btn-confirm-new\");\r\n  $selectBranch     = $(\"#select-branch\");\r\n  $selectBranchToTransfer = $(\"#select-branch-to-transfer\");\r\n  $message          = $(\".message\");\r\n  templateErrorList = $(\"#template-error-list\").html();\r\n}\r\n\r\nvar _bindEvents = function() {\r\n  $btnNew.on(\"click\", function() {\r\n    $modalNew.show();\r\n    $message.html(\"\");\r\n  });\r\n\r\n  $btnConfirmNew.on(\"click\", function() {\r\n    var selectBranchToTransferId = $selectBranchToTransfer.val();\r\n    var branchId  = $selectBranch.val();\r\n\r\n    $message.html(\"Loading...\");\r\n    $btnConfirmNew.prop(\"disabled\", true);\r\n    $selectBranchToTransfer.prop(\"disabled\", true);\r\n    $selectBranch.prop(\"disabled\", true);\r\n\r\n    var data  = {\r\n      \r\n      branch_id: branchId,\r\n      branch_id_to_transfer: selectBranchToTransferId,\r\n      authenticity_token: authenticityToken\r\n    }\r\n\r\n    $.ajax({\r\n      url: \"/api/v1/transfer_member_records/create\",\r\n      method: 'POST',\r\n      data: data,\r\n      success: function(response) {\r\n        window.location.href=\"/transfer_member_records\";\r\n      },\r\n      error: function(response) {\r\n        errors = [];\r\n\r\n        try {\r\n          errors = JSON.parse(response.responseText).full_messages;\r\n        } catch(err) {\r\n          console.log(response);\r\n          errors.push(\"Something went wrong\");\r\n        }\r\n\r\n        $message.html(\r\n          Mustache.render(\r\n            templateErrorList,\r\n            { errors: errors }\r\n          )\r\n        );\r\n\r\n        $btnConfirmNew.prop(\"disabled\", false);\r\n        $selectYear.prop(\"disabled\", false);\r\n        $selectBranch.prop(\"disabled\", false);\r\n      }\r\n    });\r\n  });\r\n}\r\n\r\nvar init  = function(config) {\r\n  authenticityToken = config.authenticityToken;\r\n\r\n  _cacheDom();\r\n  _bindEvents();\r\n}\r\n\r\nexport default { init: init };\r\n", "import Mustache from \"mustache\";\r\nimport $ from \"jquery\";\r\nimport * as bootstrap from \"bootstrap\";\r\n\r\nvar _authenticityToken;\r\nvar _id;\r\n\r\nvar $btnApprove;\r\nvar $btnConfirmApprove;\r\nvar $modalApprove;\r\nvar $btnDelete;\r\nvar $btnConfirmDelete;\r\nvar $modalDelete;\r\nvar $btnDeleteMember;\r\nvar $btnConfirmDeleteMember;\r\nvar $modalDeleteMember;\r\nvar $selectMember;\r\nvar $selectCenter;\r\nvar $btnAdd;\r\nvar $displayMember;\r\nvar $displayAccountingCode;\r\nvar $SelectCenterFrom;\r\n\r\nvar $btnSaveParticular;\r\nvar $particularTo;\r\nvar $particularFrom;\r\n\r\nvar $message;\r\nvar templateErrorList;\r\n\r\nvar currentMember           = \"\";\r\nvar currentMemberId         = \"\";\r\n\r\n\r\nvar _cacheDom = function() {\r\n\r\n\r\n  $btnApprove         = $(\"#btn-approve\");\r\n  $btnConfirmApprove  = $(\"#btn-confirm-approve\");\r\n  $modalApprove = new bootstrap.Modal(\r\n    document.getElementById(\"modal-approve\")\r\n  );\r\n\r\n  $btnDeleteMember        = $(\".btn-delete-member\");\r\n  $btnConfirmDeleteMember = $(\"#btn-confirm-delete-member\");\r\n  $modalDeleteMember = new bootstrap.Modal(\r\n    document.getElementById(\"modal-delete-member\")\r\n  );\r\n  $selectCenter     = $(\"#select-center\");\r\n  $selectMember     = $(\"#select-member\");\r\n\r\n  $btnAdd           = $(\"#btn-add\");\r\n  $btnSaveParticular = $(\"#btn-save-particular\");\r\n  $particularTo      = $(\"#particular-to\");\r\n  $particularFrom    = $(\"#particular-from\");\r\n  $SelectCenterFrom     = $(\"#select-center-from\");\r\n\r\n  $displayMember          = $(\".display-member\");\r\n  $message  = $(\".message\");\r\n\r\n  templateErrorList = $(\"#template-error-list\").html();\r\n};\r\n\r\nvar _bindEvents = function() {\r\n\r\n  $btnAdd.on(\"click\", function() {\r\n    var memberId        = $selectMember.val();\r\n    var CenterFromId    = $SelectCenterFrom.val();\r\n    var centerId        = $selectCenter.val();\r\n    \r\n    var data  = {\r\n      id: _id,\r\n      member_id: memberId,\r\n      center_id: centerId,\r\n      center_from_id: CenterFromId,\r\n      authenticity_token: _authenticityToken\r\n    };\r\n\r\n    $selectMember.prop(\"disabled\", true);\r\n    $selectCenter.prop(\"disabled\",true);\r\n \r\n\r\n    $.ajax({\r\n      url: \"/api/v1/transfer_member_records/add_member\",\r\n      method: 'POST',\r\n      data: data,\r\n      success: function(response) {\r\n        $message.html(\r\n          \"Success! Redirecting...\"\r\n        );\r\n        \r\n        window.location.reload();\r\n      },\r\n      error: function(response) {\r\n        var errors  = [];\r\n\r\n        try {\r\n          errors  = JSON.parse(response.responseText).full_messages;\r\n        } catch(err) {\r\n          errors  = [\"Something went wrong\"]\r\n        } finally {\r\n          $message.html(\r\n            Mustache.render(\r\n              templateErrorList,\r\n              { errors: errors }\r\n            )\r\n          );\r\n\r\n          $selectMember.prop(\"disabled\", false);\r\n           $selectCenter.prop(\"disabled\",false);\r\n         \r\n        }\r\n      }\r\n    });\r\n    \r\n  });\r\n  $btnSaveParticular.on(\"click\", function() {\r\n    var particular_to        = $particularTo.val();\r\n    var particlar_from        = $particularFrom.val();\r\n    \r\n    var data  = {\r\n      id: _id,\r\n      particular_to: particular_to,\r\n      particlar_from: particlar_from,\r\n      authenticity_token: _authenticityToken\r\n    };\r\n    console.log(data);\r\n    $particularTo.prop(\"disabled\", true);\r\n    $particularFrom.prop(\"disabled\",true);\r\n \r\n\r\n    $.ajax({\r\n      url: \"/api/v1/transfer_member_records/add_particular\",\r\n      method: 'POST',\r\n      data: data,\r\n      success: function(response) {\r\n        $message.html(\r\n          \"Success! Redirecting...\"\r\n        );\r\n        \r\n        window.location.reload();\r\n      },\r\n      error: function(response) {\r\n        var errors  = [];\r\n\r\n        try {\r\n          errors  = JSON.parse(response.responseText).full_messages;\r\n        } catch(err) {\r\n          errors  = [\"Something went wrong\"]\r\n        } finally {\r\n          $message.html(\r\n            Mustache.render(\r\n              templateErrorList,\r\n              { errors: errors }\r\n            )\r\n          );\r\n\r\n          $particularTo.prop(\"disabled\", true);\r\n          $particularFrom.prop(\"disabled\",true);\r\n          $btnSaveParticular.prop(\"disabled\", true);\r\n        }\r\n      }\r\n    });\r\n  });\r\n  $btnApprove.on(\"click\", function() {\r\n    $message.html(\"\");\r\n    $modalApprove.show();\r\n  });\r\n\r\n\r\n $btnConfirmApprove.on(\"click\", function() {\r\n    var data = {\r\n      id: _id,\r\n      authenticity_token: _authenticityToken\r\n    };\r\n    $btnConfirmApprove.prop(\"disabled\", true);\r\n    $message.html(\"Loading...\");\r\n    \r\n    console.log(data);\r\n    $.ajax({\r\n      url: \"/api/v1/transfer_member_records/approve\",\r\n      method: 'POST',\r\n      data: data,\r\n      success: function(response) {\r\n        $message.html(\"Success! Redirecting...\");\r\n        window.location.href=\"/transfer_member_records\";\r\n      },\r\n      error: function(response) {\r\n        console.log(response);\r\n        var errors  = [];\r\n        try {\r\n          errors  = JSON.parse(response.responseText).full_messages;\r\n        } catch(err) {\r\n          errors  = [\"Something went wrong\"];\r\n          console.log(err);\r\n        } finally {\r\n          console.log(errors);\r\n          $message.html(\r\n            Mustache.render(\r\n              templateErrorList,\r\n              { errors: errors }\r\n            )\r\n          );\r\n\r\n          $btnConfirmApprove.prop(\"disabled\", false);\r\n        }\r\n      }\r\n    });\r\n  });\r\n\r\n $btnDeleteMember.on(\"click\", function() {\r\n    $message.html(\"\");\r\n    currentMember           = $(this).data(\"member-name\");\r\n    currentMemberId         = $(this).data(\"member-id\");\r\n   \r\n\r\n    $displayMember.html(currentMember);\r\n    $modalDeleteMember.show();\r\n  });\r\n\r\n  $btnConfirmDeleteMember.on(\"click\", function() {\r\n    $message.html(\"Loading...\");\r\n    $btnConfirmDeleteMember.prop(\"disabled\", true);\r\n\r\n    var data  = {\r\n      id: _id,\r\n      member_id: currentMemberId,\r\n      authenticity_token: _authenticityToken\r\n    };\r\n\r\n    $.ajax({\r\n      url: \"/api/v1/transfer_member_records/delete_member\",\r\n      method: 'POST',\r\n      data: data,\r\n      success: function(response) {\r\n        $message.html(\r\n          \"Success! Redirecting...\"\r\n        );\r\n        \r\n        window.location.reload();\r\n      },\r\n      error: function(response) {\r\n        var errors  = [];\r\n\r\n        try {\r\n          errors  = JSON.parse(response.responseText).full_messages;\r\n        } catch(err) {\r\n          errors  = [\"Something went wrong\"]\r\n        } finally {\r\n          $message.html(\r\n            Mustache.render(\r\n              templateErrorList,\r\n              { errors: errors }\r\n            )\r\n          );\r\n\r\n          $btnConfirmDeleteMember.prop(\"disabled\", false);\r\n        }\r\n      }\r\n    });\r\n  });\r\n\r\n\r\n  \r\n  \r\n};\r\n\r\nvar init  = function(options) {\r\n  _authenticityToken  = options.authenticityToken; \r\n  _id                 = options.id;\r\n\r\n  _cacheDom();\r\n  _bindEvents();\r\n};\r\n\r\nexport default { init: init };\r\n \r\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\n\nvar authenticityToken;\n\nvar $selectYear;\nvar $selectBranch;\n\nvar $selectBook;\nvar  $inputPaticular;\nvar  $inputOrNumber;\nvar  $inputArNumber;\nvar  $inputSiNumber;\n\nvar  $btnApprove;\nvar  $modalApprove;\nvar  $btnConfirmApprove;\n\nvar  $btnDestroy;\nvar  $modalDelete;\nvar  $btnConfirmDelete;\n\nvar $message;\nvar templateErrorList;\nvar _id;\n\nvar $btnConfirmSave;\nvar $btnSave;\n\nvar _cacheDom = function() {\n  $modalApprove = new bootstrap.Modal(\n    document.getElementById(\"modal-approve\")\n  );\n\n  $modalDelete = new bootstrap.Modal(\n    document.getElementById(\"modal-delete\")\n  );\n\n  $selectBook       = $(\"#book_type\");\n  $inputPaticular   = $(\"#particular\");\n  $inputOrNumber    = $(\"#or_number\");\n  $inputArNumber    = $(\"#ar_number\");\n  $inputSiNumber    = $(\"#si_number\");\n\n  $btnApprove         = $(\"#btn-approve\");\n  $btnConfirmApprove  = $(\"#btn-confirm-approve\");\n  $btnDestroy         = $(\"#btn-destroy\");\n  $btnConfirmDelete   = $(\"#btn-confirm-delete\");\n\n  $message          = $(\".message\");\n  templateErrorList = $(\"#template-error-list\").html();\n\n  $btnSave            = $('#btn-save');\n\n  $modalSaveFormMakePayment = new bootstrap.Modal(\n    document.getElementById(\"modal-save-form-make-payment\")\n  );\n\n  $btnConfirmSave     = $('#btn-confirm-save-form-make-payment');\n\n}\n\nvar _bindEvents = function() {\n  \n  $btnDestroy.on(\"click\", function() {\n    $message.html(\"\");\n    $modalDelete.show();\n    _id = $(this).data(\"make-payment-id\")\n  });\n\n  $btnConfirmDelete.on(\"click\", function() {\n    \n    var data = {\n      make_payment_id: _id,\n      authenticity_token: authenticityToken\n    }\n\n    $.ajax({\n      url: \"/api/v1/adjustments/make_payments/destroy\",\n      method: 'POST',\n      data: data,\n      success: function(response) {\n        $message.html(\"Success!\");\n        window.location.href=\"/adjustments/make_payments\";\n      },\n      error: function(response) {\n        errors = [];\n\n        try {\n          errors = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          console.log(response);\n          errors.push(\"Something went wrong\");\n        }\n\n        $message.html(\n          Mustache.render(\n            templateErrorList,\n            { errors: errors }\n          )\n        );\n\n      }\n    });\n  });\n\n\n  $btnApprove.on(\"click\", function() {\n    $message.html(\"\");\n    $modalApprove.show();\n    _id = $(this).data(\"make-payment-id\")\n    \n  });\n\n   $btnConfirmApprove.on(\"click\", function() {\n    \n    var data = {\n                  make_payment_id: _id,\n                  authenticity_token: authenticityToken\n                }\n    $.ajax({\n      url: \"/api/v1/adjustments/make_payments/approve\",\n      method: 'POST',\n      data: data,\n      success: function(response) {\n        $message.html(\"Success! Redirecting\");\n        window.location.href=\"/adjustments/make_payments/\";\n      },\n      error: function(response) {\n        errors = [];\n\n        try {\n          errors = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          console.log(response);\n          errors.push(\"Something went wrong\");\n        }\n\n        $message.html(\n          Mustache.render(\n            templateErrorList,\n            { errors: errors }\n          )\n        );\n      }\n    });\n  });\n\n  $btnSave.on(\"click\", function() {\n    $message.html(\"\");\n    $modalSaveFormMakePayment.show();\n    _id = $(this).data(\"make-payment-id\")\n\n  });\n\n  $btnConfirmSave.on(\"click\", function() {\n\n    var data = {\n      member_id: document.getElementById('btn-save').getAttribute('data-member-id'),\n      book: document.getElementById('book_type').value,\n      particular: document.getElementById('particular').value,\n      or_number: document.getElementById(\"or_number\").value,\n      si_number: document.getElementById(\"si_number\").value,\n      ar_number: document.getElementById(\"ar_number\").value,\n      make_payment_type: document.getElementById('btn-save').getAttribute(\"data-make-payment-type\"),\n      authenticity_token: authenticityToken,\n    }\n    //console.log(\"dsadsadasdsadsadsasda: \", data);\n\n    $.ajax({\n      url: \"/api/v1/members/save_make_payment\",\n      method: 'POST',\n      data: data,\n      success: function(response) {\n        console.log(\"response: \", response)\n        $message.html(\"Success! Redirecting\");\n        window.location.href=\"/adjustments/make_payments/\" + response.id;\n      },\n      error: function(response) {\n        errors = [];\n\n        try {\n          errors = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          console.log(response);\n          errors.push(\"Something went wrong\");\n        }\n\n        $message.html(\n          Mustache.render(\n            templateErrorList,\n            { errors: errors }\n          )\n        );\n      }\n    });\n\n  });\n}\n\nvar init  = function(config) {\n  authenticityToken = config.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n}\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\r\nimport $ from \"jquery\";\r\nimport * as bootstrap from \"bootstrap\";\r\n\r\nvar authenticityToken;\r\n\r\nvar $modalNew;\r\nvar $btnNew;\r\nvar $btnConfirmNew;\r\nvar errors;\r\nvar $selectYear;\r\nvar $selectBranch;\r\nvar $message;\r\nvar templateErrorList;\r\n\r\nvar _cacheDom = function() {\r\n  $modalNew = new bootstrap.Modal(\r\n    document.getElementById(\"modal-new\")\r\n  );\r\n\r\n  $btnNew           = $(\"#btn-new\");\r\n  $btnConfirmNew    = $(\"#btn-confirm-new\");\r\n  $selectYear       = $(\"#select-year\");\r\n  $selectBranch     = $(\"#select-branch\");\r\n  $message          = $(\".message\");\r\n  templateErrorList = $(\"#template-error-list\").html();\r\n}\r\n\r\nvar _bindEvents = function() {\r\n  $btnNew.on(\"click\", function() {\r\n    $modalNew.show();\r\n    $message.html(\"\");\r\n  });\r\n\r\n  $btnConfirmNew.on(\"click\", function() {\r\n    var year      = $selectYear.val();\r\n    var branchId  = $selectBranch.val();\r\n\r\n    $message.html(\"Loading...\");\r\n    $btnConfirmNew.prop(\"disabled\", true);\r\n    $selectYear.prop(\"disabled\", true);\r\n    $selectBranch.prop(\"disabled\", true);\r\n\r\n    var data  = {\r\n      year: year,\r\n      branch_id: branchId,\r\n      authenticity_token: authenticityToken\r\n    }\r\n\r\n    $.ajax({\r\n      url: \"/api/v1/billing_for_writeoff/create\",\r\n      method: 'POST',\r\n      data: data,\r\n      success: function(response) {\r\n        window.location.href=\"/billing_for_writeoff\";\r\n      },\r\n      error: function(response) {\r\n        errors = [];\r\n\r\n        try {\r\n          errors = JSON.parse(response.responseText).full_messages;\r\n        } catch(err) {\r\n          errors.push(\"Something went wrong\");\r\n          console.log(response);\r\n        }\r\n\r\n        $message.html(\r\n          Mustache.render(\r\n            templateErrorList,\r\n            { errors: errors }\r\n          )\r\n        );\r\n\r\n        $btnConfirmNew.prop(\"disabled\", false);\r\n        $selectBranch.prop(\"disabled\", false);\r\n        $selectYear.prop(\"disabled\", false);\r\n      }\r\n    });\r\n  });\r\n}\r\n\r\nvar init  = function(config) {\r\n  authenticityToken = config.authenticityToken;\r\n\r\n  _cacheDom();\r\n  _bindEvents();\r\n}\r\n\r\nexport default { init: init };\r\n", "import Mustache from \"mustache\";\r\nimport $ from \"jquery\";\r\nimport * as bootstrap from \"bootstrap\";\r\n\r\nvar _authenticityToken;\r\nvar _id;\r\n\r\nvar $btnApprove;\r\nvar $btnConfirmApprove;\r\nvar $modalApprove;\r\n\r\nvar $btnDelete;\r\nvar $btnConfirmDelete;\r\nvar $modalDelete;\r\n\r\nvar $btnDeleteMember;\r\nvar $btnConfirmDeleteMember;\r\nvar $modalDeleteMember;\r\n\r\nvar $selectMember;\r\nvar $selectAccount;\r\nvar $selectAdjustment;\r\nvar $inputAmount;\r\nvar $btnAdd;\r\n\r\n\r\nvar $displayMember;\r\nvar $displayLoanProductName;\r\nvar $displayAccountSubtype;\r\nvar $displayPostType;\r\nvar $displayAccountingCode;\r\nvar $selectLoan;\r\nvar $message;\r\n\r\nvar templateErrorList;\r\n\r\nvar currentMember           = \"\";\r\nvar currentLoanProduct      = \"\";\r\nvar currentLoanProductId    = \"\";\r\nvar currentMemberId         = \"\";\r\nvar currentAccountSubtype   = \"\";\r\nvar currentAccountingCodeId = \"\";\r\nvar currentPostType         = \"\";\r\n\r\n\r\nvar _cacheDom = function() {\r\n  $modalApprove = new bootstrap.Modal(\r\n    document.getElementById(\"modal-approve\")\r\n  );\r\n\r\n  $modalDeleteMemeber = new bootstrap.Modal(\r\n    document.getElementById(\"modal-delete-member\") \r\n  );\r\n\r\n  $btnApprove         = $(\"#btn-approve\");\r\n  $btnConfirmApprove  = $(\"#btn-confirm-approve\");\r\n  $inputAmount        = $(\"#input-amount\");\r\n\r\n  $btnDeleteMember        = $(\".btn-delete-member\");\r\n  $btnConfirmDeleteMember = $(\"#btn-confirm-delete-member\");\r\n\r\n  $selectMember     = $(\"#select-member\");\r\n  $selectLoan       = $(\"#select-loan\")\r\n  $btnAdd           = $(\"#btn-add\");\r\n\r\n  $displayMember          = $(\".display-member\");\r\n  $displayLoanProductName = $(\".display-loan-product-name\");\r\n  $message  = $(\".message\");\r\n\r\n  templateErrorList = $(\"#template-error-list\").html();\r\n};\r\n\r\nvar _bindEvents = function() {\r\n\r\n  $btnAdd.on(\"click\", function() {\r\n    var memberId        = $selectMember.val();\r\n    var loanProductId   = $selectLoan.val();\r\n  \r\n\r\n    var data  = {\r\n      id: _id,\r\n      member_id: memberId,\r\n      loan_product_id: loanProductId,\r\n      authenticity_token: _authenticityToken\r\n    };\r\n\r\n    $selectMember.prop(\"disabled\", true);\r\n    $selectLoan.prop(\"disabled\", true);\r\n \r\n\r\n    $.ajax({\r\n      url: \"/api/v1/billing_for_writeoff/add_member\",\r\n      method: 'POST',\r\n      data: data,\r\n      success: function(response) {\r\n        $message.html(\r\n          \"Success! Redirecting...\"\r\n        );\r\n        \r\n        window.location.reload();\r\n      },\r\n      error: function(response) {\r\n        var errors  = [];\r\n\r\n        try {\r\n          errors  = JSON.parse(response.responseText).full_messages;\r\n        } catch(err) {\r\n          errors  = [\"Something went wrong\"]\r\n        } finally {\r\n          $message.html(\r\n            Mustache.render(\r\n              templateErrorList,\r\n              { errors: errors }\r\n            )\r\n          );\r\n\r\n          $selectMember.prop(\"disabled\", false);\r\n          $selectLoan.prop(\"disabled\", false);\r\n         \r\n        }\r\n      }\r\n    });\r\n  });\r\n\r\n$btnApprove.on(\"click\", function() {\r\n    $message.html(\"\");\r\n    $modalApprove.show();\r\n  });\r\n\r\n\r\n $btnConfirmApprove.on(\"click\", function() {\r\n    var data = {\r\n      id: _id,\r\n      authenticity_token: _authenticityToken\r\n    };\r\n    $btnConfirmApprove.prop(\"disabled\", true);\r\n    $message.html(\"Loading...\");\r\n    \r\n    console.log(data);\r\n    $.ajax({\r\n      url: \"/api/v1/billing_for_writeoff/approve\",\r\n      method: 'POST',\r\n      data: data,\r\n      success: function(response) {\r\n        $message.html(\"Success! Redirecting...\");\r\n        window.location.href=\"/billing_for_writeoff\";\r\n      },\r\n      error: function(response) {\r\n        console.log(response);\r\n        var errors  = [];\r\n        try {\r\n          errors  = JSON.parse(response.responseText).full_messages;\r\n        } catch(err) {\r\n          errors  = [\"Something went wrong\"];\r\n          console.log(err);\r\n        } finally {\r\n          console.log(errors);\r\n          $message.html(\r\n            Mustache.render(\r\n              templateErrorList,\r\n              { errors: errors }\r\n            )\r\n          );\r\n\r\n          $btnConfirmApprove.prop(\"disabled\", false);\r\n        }\r\n      }\r\n    });\r\n  });\r\n\r\n $btnDeleteMember.on(\"click\", function() {\r\n    $message.html(\"\");\r\n\r\n    currentMember           = $(this).data(\"member-name\");\r\n    currentMemberId         = $(this).data(\"member-id\");\r\n    currentLoanProduct      = $(this).data(\"loan-product-name\");\r\n    currentLoanProductId    = $(this).data(\"loan-id\");\r\n\r\n    $displayMember.html(currentMember);\r\n    $displayLoanProductName.html(currentLoanProduct);\r\n\r\n    $modalDeleteMember.show();\r\n  });\r\n\r\n  $btnConfirmDeleteMember.on(\"click\", function() {\r\n    $message.html(\"Loading...\");\r\n    $btnConfirmDeleteMember.prop(\"disabled\", true);\r\n\r\n    var data  = {\r\n      id: _id,\r\n      member_id: currentMemberId,\r\n      loan_product_id: currentLoanProductId,\r\n      authenticity_token: _authenticityToken\r\n    };\r\n\r\n    $.ajax({\r\n      url: \"/api/v1/billing_for_writeoff/delete_member\",\r\n      method: 'POST',\r\n      data: data,\r\n      success: function(response) {\r\n        $message.html(\r\n          \"Success! Redirecting...\"\r\n        );\r\n        \r\n        window.location.reload();\r\n      },\r\n      error: function(response) {\r\n        var errors  = [];\r\n\r\n        try {\r\n          errors  = JSON.parse(response.responseText).full_messages;\r\n        } catch(err) {\r\n          errors  = [\"Something went wrong\"]\r\n        } finally {\r\n          $message.html(\r\n            Mustache.render(\r\n              templateErrorList,\r\n              { errors: errors }\r\n            )\r\n          );\r\n\r\n          $btnConfirmDeleteMember.prop(\"disabled\", false);\r\n        }\r\n      }\r\n    });\r\n  });\r\n\r\n\r\n  \r\n  \r\n};\r\n\r\nvar init  = function(options) {\r\n  _authenticityToken  = options.authenticityToken; \r\n  _id                 = options.id;\r\n\r\n  _cacheDom();\r\n  _bindEvents();\r\n};\r\n\r\nexport default { init: init };\r\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\nimport select2 from 'select2';\n\nvar authenticityToken;\n\nvar $modalNew;\nvar $btnNew;\nvar $btnConfirmNew;\nvar $btnDelete;\n\nvar $selectBranch;\n\nvar $message;\nvar templateErrorList;\n\nvar _cacheDom = function() {\n  $modalNew      = new bootstrap.Modal(\n    document.getElementById(\"modal-new\")\n\n  );\n  $btnNew           = $(\"#btn-new\");\n  $btnConfirmNew    = $(\"#btn-confirm-new\");\n  $selectBranch     = $(\"#select-branch\");\n\n  $btnDelete        = $(\"#btn-delete\");\n\n  $message          = $(\".message\");\n  templateErrorList = $(\"#template-error-list\").html();\n}\n\nvar _bindEvents = function() {\n  $btnDelete.on(\"click\", function(){\n    alert(\"jef\")\n  });\n\n\n  $btnNew.on(\"click\", function() {\n    //alert(\"jef\")\n    $modalNew.show();\n    $message.html(\"\");\n  });\n\n  $btnConfirmNew.on(\"click\", function() {\n    var branchId  = $selectBranch.val();\n    $message.html(\"Loading...\");\n    $btnConfirmNew.prop(\"disabled\", true);\n    $selectBranch.prop(\"disabled\", true);\n\n    var data  = {\n      branch_id: branchId,\n      authenticity_token: authenticityToken\n    }\n\n    $.ajax({\n      url: \"/api/v1/data_stores/member_id_generetors/create\",\n      method: 'POST',\n      data: data,\n      success: function(response) {\n        \n        window.location.href=\"/data_stores/member_id_generators/\" + response.id;\n      },\n      error: function(response) {\n        errors = [];\n\n        try {\n          errors = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          console.log(response);\n          errors.push(\"Something went wrong\");\n        }\n\n        $message.html(\n          Mustache.render(\n            templateErrorList,\n            { errors: errors }\n          )\n        );\n\n        $btnConfirmNew.prop(\"disabled\", false);\n        $selectBranch.prop(\"disabled\", false);\n      }\n    });\n  });\n}\n\nvar init  = function(config) {\n  authenticityToken = config.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n}\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\n\nvar authenticityToken;\n\nvar $modalNew;\nvar $btnNew;\nvar $btnConfirmNew;\n\nvar $selectBranch;\nvar $selectCenter;\nvar $selectMember;\nvar $selectIdType;\n\nvar $btnDelete;\n\n\nvar $btnAdd;\nvar $modalContactPerson;\nvar $inputContactName;\nvar $inputContactNumber;\nvar $btnConfirmContactPerson;\n\nvar $labelMemberName\nvar $message;\nvar templateErrorList;\n\nvar $btnCheck;\nvar $modalCheck;\nvar $btnConfirmCheck;\n\nvar btnDelayAmort;\n\nvar _members;\nvar _members_list;\nvar _memberId;\nvar _urlCenters = \"/api/v1/data_stores/member_id_generetors/fetch_members\";\nvar _urlAddMember = \"/api/v1/data_stores/member_id_generetors/add_member\";\nvar _urlContactPerson = \"/api/v1/data_stores/member_id_generetors/contact_person\";\nvar _urlAddContactPerson = \"/api/v1/data_stores/member_id_generetors/add_contact_person\";\nvar _urlCheckIdForm = \"/api/v1/data_stores/member_id_generetors/check_member_id\";\nvar _urlRemoveMember = \"/api/v1/data_stores/member_id_generetors/remove_member\";\n\n\nvar _cacheDom = function() {\n  $modalNew                 = $(\"#modal-new\");\n  $btnNew                   = $(\"#btn-new\");\n  $btnConfirmNew            = $(\"#btn-confirm-new\");\n  $selectBranch             = $(\"#select-branch\");\n  $selectCenter             = $(\"#select-center\");\n  $selectIdType             = $(\"#select-id-type\");\n  $selectMember             = $(\"#select-member\");\n  $btnAdd                   = $(\"#btn-add\");\n  $message                  = $(\".message\");\n  $modalContactPerson       = $(\"#modal-contact-person\");\n  $inputContactName         = $(\"#contact-name\");\n  $inputContactNumber       = $(\"#contact-number\");\n  $btnConfirmContactPerson  = $(\"#btn-confirm-contact-person\");\n  $labelMemberName          = $(\"#member-name\");\n  \n  $btnCheck                 = $(\"#btn-check\");\n\n  $modalCheck      = new bootstrap.Modal(\n    document.getElementById(\"modal-check\")\n\n  );\n  $btnConfirmCheck          = $(\"#btn-confirm-check\")\n  $btnDelayAmort            = $(\".btn-delay-amort\");\n\n\n  templateErrorList   = $(\"#template-error-list\").html();\n}\n\nvar _loadMemberOptions  = function() {\n  $selectMember.html(\"\");\n  if (_members_list.length > 0) {\n    _memberId = _members_list[0].id;\n    \n    for(var i = 0; i < _members_list.length; i++) {\n  \n      $selectMember.append(new Option(_members_list[i].name, _members_list[i].id));\n    }\n    $selectMember.val(_memberId);\n  }\n\n\n}\n\n\nvar _bindEvents = function() {\n\n  $btnDelayAmort.on(\"click\", function(){\n    data_store_id = $(this).data(\"id\")\n    member_test = $(this).data(\"member\")\n    alert(member_test)\n    var data = {\n      data_store_id:  data_store_id,\n      member_id: member_test\n    }\n\n    $.ajax({\n      method: 'POST',\n      url: _urlRemoveMember,\n      data: {\n        data: data\n      },\n      success: function(response) {\n        window.location.reload();\n        \n      },\n      error: function(response) {\n        console.log(response);\n        alert(\"Error in checking id details\");\n      }\n    });\n\n  });\n  \n  $btnCheck.on(\"click\", function(){\n  \n  \n    $modalCheck.show();\n  } );\n\n\n  $btnConfirmCheck.on(\"click\", function(){\n    var data = {\n      data_store:  $(this).data(\"id\")\n    }\n\n    $.ajax({\n      method: 'POST',\n      url: _urlCheckIdForm,\n      data: {\n        data: data\n      },\n      success: function(response) {\n        window.location.reload();\n        \n      },\n      error: function(response) {\n        console.log(response);\n        alert(\"Error in checking id details\");\n      }\n    });\n\n\n\n  });\n\n\n  $btnConfirmContactPerson.on(\"click\", function(){\n    //alert($inputContactNumber.val())\n    //$selectMember.val()\n    //alert(\"jef\")\n    //alert($(this).data(\"id\"))\n    var data = {\n      data_store: $(this).data(\"id\"),\n      member_id: $selectMember.val(),\n      id_type: $selectIdType.val(),\n      contact_person: $inputContactName.val(),\n      contact_person_number: $inputContactNumber.val()\n    }\n    $.ajax({\n      method: 'POST',\n      url: _urlAddContactPerson,\n      data: {\n        data: data\n      },\n      success: function(response) {\n        window.location.reload();\n        \n      },\n      error: function(response) {\n        console.log(response);\n        alert(\"Error in fetching centers\");\n      }\n    });\n  });\n\n  $btnAdd.on(\"click\", function(){\n  \n     \n    var config = {member_id: $selectMember.val()}\n    \n  \n    //$inputContactName.val(\"jef\")\n    // var data_store = $(this).data(\"id\")\n    $.ajax({\n      method: 'POST',\n      url: _urlContactPerson,\n      data: {\n        member_id: $selectMember.val()\n      },\n      success: function(response) {\n        $labelMemberName.text(response.member_name) \n        if (response.id != null){\n          $inputContactName.val(response.id.name)\n          $inputContactNumber.val(response.id.cNumber)\n        }else{\n          $inputContactName.val(\"\")\n          $inputContactNumber.val(\"\")\n\n        }\n        \n      },\n      error: function(response) {\n        console.log(response);\n        alert(\"Error in fetching centers\");\n      }\n    });\n/*\n    //$selectCenter.val()\n    //$selectMember.val()\n    */\n    $modalContactPerson.show();\n  }) \n\n  $selectCenter.on(\"change\", function() {\n  \n    $.ajax({\n      method: 'GET',\n      url: _urlCenters,\n      data: {\n        id: $selectCenter.val(),\n        with_members: true\n      },\n      success: function(response) {\n        _members_list  = response.members;\n        \n        if(_members_list.length > 0) {\n          _members  = _members_list[0].name;\n          \n        }\n\n        _loadMemberOptions();\n      },\n      error: function(response) {\n        console.log(response);\n        alert(\"Error in fetching centers\");\n      }\n    });\n\n  });\n\n}\n\nvar init  = function(config) {\n  authenticityToken = config.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n}\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\r\nimport $ from \"jquery\";\r\n\r\nvar $modalPrint;\r\nvar $printMessage;\r\nvar $btnPrintPdf;\r\nvar $btnDownloadExcel;\r\nvar $btnPrint;\r\nvar loader;\r\nvar id;\r\nvar templateErrorList;\r\nvar authenticityToken;\r\nvar _urlDownload= \"/data_stores/monthly_incentives_excel/\";\r\nvar $message;\r\n\r\nvar _cacheDom = function() {\r\n\r\n  $btnPrint         = $(\"#btn-print\");\r\n  $printMessage     = $(\".print-message\");\r\n  $btnPrintPdf      = $(\"#btn-print-pdf\");\r\n  $printMessage       = $(\".print-message\");\r\n  $btnPrintPdf      =  $(\"#btn-print-pdf\");\r\n  $btnDownloadExcel =  $(\"#btn-dl-excel\")\r\n  $modalPrint         = $(\"#modal-print\");\r\n  $message          = $(\".message\");\r\n  templateErrorList = $(\"#template-error-list\").html();\r\n  loader            = $(\"#template-loader\").html();\r\n};\r\n\r\nvar _bindEvents = function() {\r\n\r\n  \r\n $btnPrintPdf.on(\"click\", function() {\r\n    var print_mi = $btnPrintPdf.data('id');\r\n\r\n    $modalPrint.show();\r\n    $printMessage.html(\r\n      Mustache.render(\r\n        loader,\r\n        {}\r\n      )\r\n    );\r\n\r\n    $modalPrint.hide();\r\n    window.open(\"/print?id=\" + print_mi + \"&type=print_monthly_incentives\");\r\n  });\r\n\r\n  $btnDownloadExcel.on(\"click\", function() {\r\n    console.log(\"hello\");\r\n    // $.ajax({\r\n    //   url: _urlDownload+$btnDownloadExcel.data('id'),\r\n    //   method: 'GET',\r\n    //   success: function(response) {\r\n    //     console.log(response);\r\n    //     console.log(\"kkkk\");\r\n\r\n    //     var filename = response.filename;\r\n\r\n    //     window.location.href = \"/download_file?filename=\" + filename;\r\n    //   },\r\n    //   error: function(response) {\r\n    //     console.log(response);\r\n    //     alert(\"Something went wrong when fetching data store\");\r\n    //   }\r\n    // });\r\n    window.open(_urlDownload+$btnDownloadExcel.data('id'));\r\n  });\r\n\r\n};\r\n\r\nvar init  = function(options) {\r\n  id                = options.id;\r\n  authenticityToken = options.authenticityToken;\r\n\r\n  _cacheDom();\r\n  _bindEvents();\r\n};\r\n\r\nexport default { init: init }\r\n", "let arrow;\nlet sidebar;\nlet sidebarBtn;\n\nconst _cacheDom = () => {\n  arrow       = document.querySelectorAll(\".arrow\");\n  sidebar     = document.querySelector(\".sidebar\");\n  sidebarBtn  = document.querySelector(\".bi-menu\");\n}\n\nconst _bindEvents = () => {\n  arrow.forEach((o, i) => {\n    o.addEventListener(\"click\", (e) => {\n      let arrowParent = e.target.parentElement.parentElement;\n      arrowParent.classList.toggle(\"show-menu\");\n    });\n  });\n\n  sidebarBtn.addEventListener(\"click\", () => {\n    sidebar.classList.toggle(\"close\");\n  });\n}\n\nvar init = function() {\n  _cacheDom();\n  _bindEvents();\n}\n\nexport default { init: init }\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\n\nvar authenticityToken;\n\nvar $btnNew;\nvar $modalNew;\nvar $selectBranch;\nvar $selectCenter;\nvar $btnConfirmNew;\nvar templateErrorList;\n\nvar _centers  = [];\n\nvar _urlCenters       = \"/api/v1/branches/fetch_centers\";\n\nvar _cacheDom = function() {\n  $btnNew\t    = $(\"#btn-new\");\n  $modalNew      = new bootstrap.Modal(\n    document.getElementById(\"modal-new\")\n\n  );\n  $btnConfirmNew    = $(\"#btn-confirm-new\");\n  $selectBranch     = $(\"#select-branch\");\n  $selectCenter     = $(\"#select-center\");\n  $message          = $(\".message\");\n  templateErrorList = $(\"#template-error-list\").html();\n}\n\nvar _loadCenterOptions  = function() {\n  $selectCenter.html(\"\");\n  if(_centers.length > 0) {\n    _centerId = _centers[0].id;\n\n    for(var i = 0; i < _centers.length; i++) {\n      $selectCenter.append(new Option(_centers[i].name, _centers[i].id));\n    }\n  }\n };\n\n\nvar _bindEvents = function() {\n   $selectBranch.on(\"change\", function() {\n    $.ajax({\n      method: 'GET',\n      url: _urlCenters,\n      data: {\n        id: $selectBranch.val(),\n        with_members: true\n      },\n      success: function(response) {\n        _centers  = response.centers;\n\n        if(_centers.length > 0) {\n          _members  = _centers[0].members;\n        }\n\n        _loadCenterOptions();\n      },\n      error: function(response) {\n        console.log(response);\n        alert(\"Error in fetching centers\");\n      }\n    });\n  });\n  $selectCenter.on(\"change\", function() {\n    _centerId = $selectCenter.val();\n\n    _members  = _centers.find(c => c.id === _centerId).members;\n\n    $selectMember.html(\"\");\n    for(var i = 0; i < _members.length; i++) {\n      $selectMember.append(new Option(_members[i].full_name, _members[i].id));\n    }\n\n    if(_members.length > 0) {\n      _memberId = _members[i].id;\n\n      _fetchLoans();\n    }\n  });\n\n     \n $btnNew.on(\"click\", function() {\n    $modalNew.show();\n    $message.html(\"\");\n  });\n\n\n $btnConfirmNew.on(\"click\", function() {\n   var branchId = $selectBranch.val(); \n   var centerId = $selectCenter.val(); \n\n   $message.html(\"Loading...\");\n   $btnConfirmNew.prop(\"disabled\", true);\n   $selectBranch.prop(\"disabled\", true);\n   $selectCenter.prop(\"disabled\", true);\n\n   var data = {\n\t  branch_id: branchId,\n\t  center_id: centerId,\n\t  authenticity_token: authenticityToken\n   }\n\t \n    $.ajax({\n      url: \"/api/v1/billing_for_writeoff_collection/create\",\n      method: 'POST',\n      data: data,\n      success: function(response) {\n\t      window.location.href=\"/billing_for_writeoff_collections\";\n      },\n      error: function(response) {\n        errors = [];\n\n        try {\n          errors = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors.push(\"Something went wrong\");\n          console.log(response);\n        }\n\n        $message.html(\n          Mustache.render(\n            templateErrorList,\n            { errors: errors }\n          )\n        );\n\n   \t  $btnConfirmNew.prop(\"disabled\", true);\n   \t  $selectBranch.prop(\"disabled\", true);\n   \t  $selectCenter.prop(\"disabled\", true);\n     }\n    });   \n });\n\n}\nvar init  = function(config) {\n  authenticityToken = config.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n}\n\nexport default { init: init };\n\n\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\n\nvar _authenticityToken;\nvar _id;\n\nvar $btnAddBook;\nvar $inputBookType;\n\nvar $btnAdd;\nvar $btnApprove;\nvar $btnConfirmProcess; \nvar $UpdateAmount;\nvar $modalUpdate;\nvar $modalApproveTransaction;\nvar $btnAddParticular;\nvar $inputParticular;\nvar $inputSinumber;\nvar $btnAddSinumber;\n\nvar _urlAddParticular   = \"/api/v1/billing_for_writeoff_collection/add_particular\";\nvar _urlAddSiNumber   = \"/api/v1/billing_for_writeoff_collection/add_si_number\";\nvar _urlAddBookType     = \"/api/v1/billing_for_writeoff_collection/add_book_type\";\nvar _loanId;\nvar _memberId;\n\nvar $message;\nvar templateErrorList;\n\nvar _cacheDom = function() {\n  $modalUpdate = new bootstrap.Modal(\n    document.getElementById(\"modal-update-transaction\")\n  )\n\t\n  $modalApproveTransaction = new bootstrap.Modal(\n    document.getElementById(\"modal-approve-transaction\")\n  )\n  $btnAddBook             = $(\"#btn-add-book\");\n  $inputBookType          = $(\"#book_type\");\n\n  $btnAdd             = $(\"#btn-add\");\t\n  $btnConfirmAmount   = $(\"#btn-confirm-amount\")\n  $btnApprove         = $(\"#btn-approve\");\n  $btnConfirmProcess  = $(\"#btn-confirm-process\");\n  $selectMember       = $(\"#select-member\");\n  $UpdateAmount       = $(\".undo\");\n  $paymentAmount      = $(\"#paymentAmount\");\t\t\n  $memberName         = $(\"#memberName\");\n  $memberId           = $(\"#memberId\");\n  $loanType           = $(\"#loanType\");\n  $btnAddParticular   = $(\"#btn-add-particular\");\n  $inputParticular    = $(\"#particular\");\n  $inputSinumber      = $(\"#si_number\");\n  $btnAddSinumber     = $(\"#btn-add-si\");\n  $message            = $(\".message\");\n};\n\nvar _bindEvents = function() {\n\n  $btnAddBook.on(\"click\", function() {\n    \n     var txtBookType = $inputBookType.val()   \n     _id = $(this).data(\"id\");    \n      $.ajax({      \n        url: _urlAddBookType,\n        method: \"POST\",\n        data: {\n    id: _id,\n    txtBookType:  txtBookType,\n          authenticity_token: _authenticityToken\n        },\n        success: function(response) {\n          $message.html(\"Success!\");\n          window.location.reload();\n        },\n        error: function(response) {\n          var errors  = [];\n\n          try {\n            errors  = JSON.parse(response.responseText).full_messages;\n          } catch(err) {\n            errors = [\"Something went wrong\"];\n          } finally {\n            $message.html(\n              Mustache.render(\n                templateErrorList,\n                { errors: errors }\n              )\n            );\n\n            $btnAddBook.prop(\"disabled\", false);\n          }\n        }\n      });\n \n  });\n\n\n  $btnAdd.on(\"click\", function() {\n    _memberId = $selectMember.val();\n    _id = $(this).data(\"id\");\t  \n    var data = {\n      id: _id,\n\t    member_id: _memberId,\n\t    authenticity_token: _authenticityToken\n    };  \n    $selectMember.prop(\"disabled\", true);\n \n    $.ajax({\n\t    url: \"/api/v1/billing_for_writeoff_collection/add_member\",\n\t    method: 'POST',\n\t    data: data,\n\t    success: function(response) {\n        $message.html(\n          \"Success! Redirecting...\"\n        );\n        window.location.reload();\n      },\n\t    error: function(response) {\n        var errors  = [];\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"]\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n          $selectMember.prop(\"disabled\", false);\n        }\n      }\n    });\t   \n  });\n\n  $UpdateAmount.on(\"click\" , function() {\n    _loanId \t\t        = $(this).data(\"loan-id\")\n\t  var payment_amount  = $(this).data(\"payment-amount\")\n\t  var member_name\t\t  = $(this).data(\"member-name\")\n\t  var loan_type\t\t    = $(this).data(\"loan-type\")\n\t  var member_id\t\t    = $(this).data(\"member-id\")\n\t  $paymentAmount.val(payment_amount)\n\t  $memberName.text(member_name)\n\t  $loanType.text(loan_type)\n\t  $memberId.text(member_id)\n\t  $modalUpdate.show();\n  });\n   \n  $btnConfirmAmount.on(\"click\", function() {\n    _paymentAmount\t= $paymentAmount.val()\t     \n    _id \t\t        = $(this).data(\"id\");\t\n    _memberId\t      = $memberId.text()\n  \n    var data = {\n\t\t  id: _id,\n\t\t  member_name: $memberName.text(),\n\t\t  member_id: _memberId,   \n\t\t  loan_id: _loanId,   \n\t\t  payment_amount: _paymentAmount,\n\t\t  authenticity_token: _authenticityToken\n\t  };\n    $.ajax({\n      url: \"/api/v1/billing_for_writeoff_collection/update_amount\",\n      method: 'POST',\n      data: data,\n      success: function(response) {\n\t      $message.html(\n          \"Success! Redirecting...\"\n        );  \n        window.location.reload();\n      },\n      error: function(response) {\n        errors = [];\n        alert(JSON.parse(response.responseText).full_messages)\n        try {\n          errors = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors.push(\"Something went wrong\");\n          console.log(response);\n        }\n        $message.html(\n          Mustache.render(   \n          )\n        );\n      }\n    }); \n  });\n\n  $btnApprove.on(\"click\", function() {\n    _id = $(this).data(\"id\");\n    $modalApproveTransaction.show();\n  });\n\n  $btnConfirmProcess.on(\"click\", function() {\n    var data = {\n      id: _id,\n      authenticity_token: _authenticityToken\n    };\n    $btnConfirmProcess.prop(\"disabled\", true);\n    $message.html(\"Loading...\");\n    console.log(data);\n    $.ajax({\n      url: \"/api/v1/billing_for_writeoff_collection/approve\",\n      method: 'POST',\n      data: data,\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.href=\"/billing_for_writeoff_collections\";\n      },\n      error: function(response) {\n        console.log(response);\n        var errors  = [];\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmProcess.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n  $btnAddSinumber.on(\"click\", function(){\n    var si_number = $inputSinumber.val();\n    _id = $(this).data(\"id\");\n       $.ajax({\n        url:_urlAddSiNumber,\n        method: \"POST\",\n        data: {\n          id: _id,\n          si_number: si_number,\n          authenticity_token: _authenticityToken\n        },\n        success: function(response) {\n          $message.html(\"Success!\");\n          window.location.reload();\n        },\n        error: function(response) {\n          var errors  = [];\n          try {\n            errors  = JSON.parse(response.responseText).full_messages;\n          } catch(err) {\n            errors = [\"Something went wrong\"];\n          } finally {\n            $message.html(\n              Mustache.render(\n                templateErrorList,\n                { errors: errors }\n              )\n            );\n\n            $btnAddSinumber.prop(\"disabled\", false);\n          }\n        }\n       })\n     });\n\n  $btnAddParticular.on(\"click\", function() {\n    var txtParticular = $inputParticular.val()\n      _id = $(this).data(\"id\");\t  \n      $.ajax({\t    \n        url: _urlAddParticular,\n        method: \"POST\",\n        data: {\n          id: _id,\n          txtParticular: txtParticular,\n          authenticity_token: _authenticityToken\n        },\n        success: function(response) {\n          $message.html(\"Success!\");\n          window.location.reload();\n        },\n        error: function(response) {\n          var errors  = [];\n          try {\n            errors  = JSON.parse(response.responseText).full_messages;\n          } catch(err) {\n            errors = [\"Something went wrong\"];\n          } finally {\n            $message.html(\n              Mustache.render(\n                templateErrorList,\n                { errors: errors }\n              )\n            );\n\n            $btnAddParticular.prop(\"disabled\", false);\n          }\n        }\n    });\n  });\n\n}\n\n\nvar init  = function(config) {\n  _authenticityToken = config.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n}\n\nexport default { init: init };\n\n\n\n\n\n\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\nimport select2 from 'select2';\nselect2($);\n\n\nvar authenticityToken;\n\nvar $btnNew;\nvar $modalNew;\nvar $selectBranch;\nvar $selectCenter;\nvar $btnConfirmNew;\nvar templateErrorList;\n\nvar _centers  = [];\n\nvar _urlCenters       = \"/api/v1/branches/fetch_centers\";\n\nvar _cacheDom = function() {\n  $btnNew\t    = $(\"#btn-new\");\n  $modalNew = new bootstrap.Modal(\n    document.getElementById(\"modal-new\")\n  )\n\n  $btnConfirmNew    = $(\"#btn-confirm-new\");\n  $selectBranch     = $(\"#select-branch\");\n  $selectCenter     = $(\"#select-center\");\n  $message          = $(\".message\");\n  templateErrorList = $(\"#template-error-list\").html();\n}\n\nvar _loadCenterOptions  = function() {\n  $selectCenter.html(\"\");\n  if(_centers.length > 0) {\n    _centerId = _centers[0].id;\n\n    for(var i = 0; i < _centers.length; i++) {\n      $selectCenter.append(new Option(_centers[i].name, _centers[i].id));\n    }\n  }\n };\n\n\nvar _bindEvents = function() {\n   $selectBranch.on(\"change\", function() {\n    $.ajax({\n      method: 'GET',\n      url: _urlCenters,\n      data: {\n        id: $selectBranch.val(),\n        with_members: true\n      },\n      success: function(response) {\n        _centers  = response.centers;\n\n        if(_centers.length > 0) {\n          _members  = _centers[0].members;\n        }\n\n        _loadCenterOptions();\n      },\n      error: function(response) {\n        console.log(response);\n        alert(\"Error in fetching centers\");\n      }\n    });\n  });\n  $selectCenter.on(\"change\", function() {\n    _centerId = $selectCenter.val();\n\n    _members  = _centers.find(c => c.id === _centerId).members;\n\n    $selectMember.html(\"\");\n    for(var i = 0; i < _members.length; i++) {\n      $selectMember.append(new Option(_members[i].full_name, _members[i].id));\n    }\n\n    if(_members.length > 0) {\n      _memberId = _members[i].id;\n\n      _fetchLoans();\n    }\n  });\n\n     \n $btnNew.on(\"click\", function() {\n   $modalNew.show();\n   $message.html(\"\");\n  });\n\n\n $btnConfirmNew.on(\"click\", function() {\n   var branchId = $selectBranch.val(); \n   var centerId = $selectCenter.val(); \n\n   $message.html(\"Loading...\");\n   $btnConfirmNew.prop(\"disabled\", true);\n   $selectBranch.prop(\"disabled\", true);\n   $selectCenter.prop(\"disabled\", true);\n\n   var data = {\n\tbranch_id: branchId,\n\tcenter_id: centerId,\n\tauthenticity_token: authenticityToken\n   }\n\t \n     $.ajax({\n      url: \"/api/v1/additional_share/create\",\n      method: 'POST',\n      data: data,\n      success: function(response) {\n\t      window.location.href=\"/additional_share\";\n      },\n      error: function(response) {\n        errors = [];\n\n        try {\n          errors = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors.push(\"Something went wrong\");\n          console.log(response);\n        }\n\n        $message.html(\n          Mustache.render(\n            templateErrorList,\n            { errors: errors }\n          )\n        );\n\n   \t$btnConfirmNew.prop(\"disabled\", true);\n   \t$selectBranch.prop(\"disabled\", true);\n   \t$selectCenter.prop(\"disabled\", true);\n     }\n    }); //alert(data);   \n });\n\n}\nvar init  = function(config) {\n  authenticityToken = config.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n}\n\nexport default { init: init };\n\n\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\n\n\nvar _authenticityToken;\nvar _id;\n\nvar $btnAdd;\nvar $UpdateAmount;\nvar $modalUpdate;\nvar $modalApproveTransaction;\nvar $btnApprove;\nvar $btnAddParticular;\nvar $inputParticular;\nvar $btnDelete;\nvar $modalDeleteMember;\nvar _memberAccountId;\nvar _memberId;\nvar $btnConfirmDeleteMember;\nvar currentMember           = \"\";\nvar currentMemberId         = \"\";\nvar $message;\nvar templateErrorList;\n\nvar _urlAddParticular = \"/api/v1/additional_share/add_particular\";\n\nvar _cacheDom = function() {\n   $modalUpdate \t    = new bootstrap.Modal(\n     document.getElementById(\"modal-update-transaction\")\n   )\n\n   $modalApproveTransaction = new bootstrap.Modal(\n     document.getElementById(\"modal-approve-transaction\")\n   )\n\n   $modalDeleteMember = new bootstrap.Modal(document.getElementById(\"modal-delete-member\"));\n\n\t $btnDelete         = $(\".btn-delete-member\");\n   $btnAdd\t\t\t      = $(\"#btn-add\");\n   $btnApprove\t\t\t  = $(\"#btn-approve\");\t\n   $btnConfirmProcess = $(\"#btn-confirm-process\");\n   $btnConfirmAmount\t= $(\"#btn-confirm-amount\");\n   $selectMember      = $(\"#select-member\");\n   $UpdateAmount      = $(\".undo\");\n   $withdrawAmount\t\t= $(\"#withdrawAmount\");\t\t\n   $memberName\t\t\t  = $(\"#memberName\");\n   $memberId\t\t\t    = $(\"#memberId\");\n   $accountSubType\t\t= $(\"#accountSubType\");\n   $btnAddParticular  = $(\"#btn-add-particular\");\n   $inputParticular   = $(\"#particular\");\n   $message  \t\t\t    = $(\".message\");\n   $btnConfirmDeleteMember = $(\"#btn-confirm-delete-member\");\n\t $displayMember          = $(\".display-member\");\n};\n\nvar _bindEvents = function() {\n  $btnDelete.on(\"click\",function(){\n    $message.html(\"\");\n    console.log($(this).data);\n    currentMember           = $(this).data(\"member-name\");\n    currentMemberId         = $(this).data(\"member-id\");\n    _id = $(this).data(\"id\");  \n    $displayMember.html(currentMember);\n    $modalDeleteMember.show();\n  });\n\n  $btnConfirmDeleteMember.on(\"click\",function(){\n\n    $message.html(\"Loading...\");\n    $btnConfirmDeleteMember.prop(\"disabled\", true);\n\n    var data  = {\n      id: _id,\n      member_id: currentMemberId,\n      authenticity_token: _authenticityToken\n    };\n    \n    $.ajax({\n      url: \"/api/v1/additional_share/delete_member\",\n      method: \"POST\",\n      data: data,\n      success: function(response){\n        $message.html(\"Success!\");\n        window.location.reload();\n      },\n\n      error: function(response) {\n        var errors  = [];\n\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"]\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmDeleteMember.prop(\"disabled\", false);\n        }\n      }\n\n\n    });\n\n\n  });\n\n\n\n\n\n  $btnAdd.on(\"click\", function() {\n   _memberId = $selectMember.val();\n   _id = $(this).data(\"id\");\t  \n\n    var data = {\n      id: _id,\n      member_id: _memberId,\n      authenticity_token: _authenticityToken\n    };\n\n    $selectMember.prop(\"disabled\", true);\n \n    $.ajax({\n      url: \"/api/v1/additional_share/add_member\",\n      method: 'POST',\n      data: data,\n      success: function(response) {\n      $message.html(\n        \"Success! Redirecting...\"\n      );\n\n      window.location.reload();\n      },\n      error: function(response) {\n      var errors  = [];\n      alert(JSON.parse(response.responseText).full_messages)\n      $selectMember.prop(\"disabled\", false);\n      try {\n      errors  = JSON.parse(response.responseText).full_messages;\n      } catch(err) {\n      errors  = [\"Something went wrong\"]\n      } finally {\n      $message.html(\n      Mustache.render(\n      templateErrorList,\n      { errors: errors }\n      )\n      );\n      $selectMember.prop(\"disabled\", false);\n      }\n      }\n      });\t   \n    });\n\t//end btnAdd\n   $UpdateAmount.on(\"click\" , function() {\n\t   _memberAccountId \t\t= $(this).data(\"member-account-id\")\n\t   var withdraw_amount\t\t= $(this).data(\"withdraw-amount\")\n\t   var member_name\t\t= $(this).data(\"member-name\")\n\t   var account_subtype\t\t= $(this).data(\"account-subtype\")\n\t   var member_id\t\t= $(this).data(\"member-id\")\n\n\t   //alert(account_subtype);\n\t   $withdrawAmount.val(withdraw_amount)\n\t   $memberName.text(member_name)\n\t   $accountSubType.text(account_subtype)\n\t   $memberId.text(member_id)\n\t   $modalUpdate.show();\n\n   });\n\n   $btnConfirmAmount.on(\"click\", function() {\n\t_withdrawAmount\t= $withdrawAmount.val()\t     \n\t_id \t\t= $(this).data(\"id\");\t\n\t_memberId\t= $memberId.text()\n\n\t   var data = {\n\t\tid: _id,\n\t\tmember_name: $memberName.text(),\n\t\tmember_id: _memberId,   \n\t\tmember_account_id: _memberAccountId,   \n\t\twithdraw_amount: _withdrawAmount,\n\t\tauthenticity_token: _authenticityToken\n\t   \t};\n      $.ajax({\n      url: \"/api/v1/additional_share/update_amount\",\n      method: 'POST',\n      data: data,\n      success: function(response) {\n\t$message.html(\n          \"Success! Redirecting...\"\n        );\n        \n        window.location.reload();\n      },\n      error: function(response) {\n        errors = [];\n\talert(JSON.parse(response.responseText).full_messages)\n        try {\n          errors = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors.push(\"Something went wrong\");\n          console.log(response);\n        }\n\n        $message.html(\n          Mustache.render(\n           \n          )\n        );\n    }\n    }); \n   });\n\n   $btnApprove.on(\"click\", function() {\n     _id = $(this).data(\"id\");\n           //alert(_id);\n        $modalApproveTransaction.show();\n   });\n\n    $btnConfirmProcess.on(\"click\", function() {\n     var data = {\n       id: _id,\n       authenticity_token: _authenticityToken\n     };\n           //alert(_id);\n     $btnConfirmProcess.prop(\"disabled\", true);\n     $message.html(\"Loading...\");\n\n    console.log(data);\n    $.ajax({\n      url: \"/api/v1/additional_share/approve\",\n      method: 'POST',\n      data: data,\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.href=\"/additional_share\";\n      },\n      error: function(response) {\n        console.log(response);\n\talert(JSON.parse(response.responseText).full_messages);      \n\tvar errors  = [];\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n\t      { errors: errors }\n\t    )\n          );\n\n          $btnConfirmProcess.prop(\"disabled\", false);\n        }\n      }\n    });\n   });\n\n   $btnAddParticular.on(\"click\", function() {\n    var txtParticular = $inputParticular.val()\n    _id = $(this).data(\"id\");\t  \n    $.ajax({\t    \n      url: _urlAddParticular,\n      method: \"POST\",\n      data: {\n\tid: _id,\n\ttxtParticular: txtParticular,\n        authenticity_token: _authenticityToken\n      },\n      success: function(response) {\n        $message.html(\"Success!\");\n        window.location.reload();\n      },\n      error: function(response) {\n        var errors  = [];\n\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors = [\"Something went wrong\"];\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnAddParticular.prop(\"disabled\", false);\n        }\n      }\n    });\n\n   });\n\n \n}\n\n\nvar init  = function(config) {\n  _authenticityToken = config.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n}\n\nexport default { init: init };\n\n\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\n\nvar authenticityToken;\nvar $fileProfilePicture;\nvar $btnConfirmUpdate;\n\nvar $message;\nvar templateErrorList;\n\nvar _urlUpdateProfilePicture = \"/api/v1/update_profile_picture\";\n\nvar _cacheDom = function() {\n  $fileProfilePicture   = $(\"#file-profile-picture\");\n  $btnConfirmUpdate     = $(\"#btn-confirm-update\");\n  $message              = $(\".message\");\n  templateErrorList     = $(\"#template-error-list\").html();\n}\n\nvar _bindEvents = function() {\n  $btnConfirmUpdate.on(\"click\", () => {\n    $message.html(\"\");\n\n    var errors = [];\n\n    if($fileProfilePicture[0].files.length == 0) {\n      errors.push(\"Profile picture required\");\n\n      $message.html(\"Profile picture required...\");\n    } else if(errors.length == 0) {\n      var formData  = new FormData();\n\n      formData.append(\"profile_picture\", $fileProfilePicture[0].files[0]);\n\n      $.ajax({\n        url: _urlUpdateProfilePicture,\n        method: 'POST',\n        contentType: false,\n        processData: false,\n        data: formData,\n        success: function(response) {\n          $message.html(\"Success! Reloading...\");\n          window.location.reload();\n        },\n        error: function(response) {\n          console.log(response);\n          var errors  = [];\n          try {\n            errors  = JSON.parse(response.responseText).full_messages;\n          } catch(err) {\n            errors  = [\"Something went wrong\"];\n            console.log(err);\n          } finally {\n            console.log(errors);\n            $message.html(\n              Mustache.render(\n                templateErrorList,\n                { errors: errors }\n              )\n            );\n\n            $btnConfirmUpdate.prop(\"disabled\", false);\n          }\n        }\n      });\n\n      $fileProfilePicture.prop(\"disabled\", true);\n      $btnConfirmUpdate.prop(\"disabled\", true);\n    } else {\n      $fileProfilePicture.prop(\"disabled\", false);\n      $btnConfirmUpdate.prop(\"disabled\", false);\n    }\n  });\n}\n\nvar init  = function(config) {\n  authenticityToken = config.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n};\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\nimport select2 from 'select2';\nselect2($);\n\nvar $modalNew;\nvar $modalDelete;\nvar $modalProcess;\nvar $modalBatchProcess;\nvar $selectBranch;\nvar $selectCenter;\nvar $selectMember;\nvar $selectProcessCenter;\nvar $selectLoans;\nvar $inputCollectionDate;\nvar $inputNumberOfDays;\nvar $inputStartDate;\nvar $inputEndDate;\nvar $inputNumberOfMoratoriumDays;\nvar $selectAccruedType;\nvar $inputReason;\nvar $btnNew;\nvar $btnDelete;\nvar $btnProcess;\nvar $btnBatchProcess;\nvar $btnConfirmNew;\nvar $btnConfirmDelete;\nvar $btnConfirmProcess;\nvar $btnConfirmBatchProcess;\nvar $message;\nvar templateErrorList;\nvar _authenticityToken;\n\nvar $inputBatchNumberOfDays;\nvar $selectBatchBranch;\nvar $inputDateInitializedCutOff;\nvar $batchStartDate;\nvar $batchEndDate;\nvar $batchAccruedType;\n\nvar _centers  = [];\nvar _members  = [];\nvar _loans    = [];\nvar _loanIds  = [];\n\nvar _branchId;\nvar _centerId;\nvar _memberId;\nvar _moratoriumId;\n\nvar _urlCreate        = \"/api/v1/members_project_types_controller/create\";\nvar _urlDelete        = \"/api/v1/adjustments/accrued_interests/delete\";\nvar _urlProcess       =  \"#\" // \"/api/v1/adjustments/moratoriums/process\";\nvar _urlProcess       = \"/api/v1/adjustments/accrued_interests/process\";\nvar _urlBatchProcess  = \"/api/v1/adjustments/accrued_interests/batch_process\";\nvar _urlCenters       = \"/api/v1/branches/fetch_centers\";\nvar _urlLoans         = \"/api/v1/loans/fetch_by_member\";\n\nvar init  = function(options) {\n  _authenticityToken = options.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n};\n\nvar _cacheDom = function() {\n  $modalNew = new bootstrap.Modal(\n    document.getElementById(\"modal-new\")\n  )\n\n  $selectBranch                 = $(\"#select-branch\");\n  $selectCenter                 = $(\"#select-center\");\n  $selectMember                 = $(\"#select-member\");\n  $selectProcessCenter          = $(\"#select-process-center\");\n  $selectLoans                  = $(\"#select-loans\");\n  $inputNumberOfDays            = $(\"#input-number-of-days\");\n  $inputStartDate               = $(\"#input-start-date\");\n  $inputEndDate                 = $(\"#input-end-date\");\n  $inputNumberOfMoratoriumDays  = $(\"#input-number-of-moratorium-days\");\n  $selectAccruedType            = $(\"#select-accrued-type\");\n  $inputReason                  = $(\"#input-reason\");\n  $btnNew                       = $(\"#btn-new\");\n  $btnDelete                    = $(\".btn-delete\");\n  $btnProcess                   = $(\".btn-process\");\n  $btnBatchProcess              = $(\"#btn-batch-process\");\n  $btnConfirmNew                = $(\"#btn-confirm-new\");\n  $btnConfirmDelete             = $(\"#btn-confirm-delete\");\n  $btnConfirmProcess            = $(\"#btn-confirm-process\");\n  $btnConfirmBatchProcess       = $(\"#btn-confirm-batch-process\");\n  $message                      = $(\".message\");\n\n  $inputBatchNumberOfDays       = $(\"#input-batch-number-of-moratorium-days\");\n  $selectBatchBranch       = $(\"#select-batch-branch\");\n  $inputDateInitializedCutOff = $(\"#input-date-initialized-cut-off\");\n  $batchStartDate             = $(\"#batch-input-start-date\")\n  $batchEndDate             = $(\"#batch-input-end-date\")\n  $batchAccruedType         = $(\"#select-batch-accrued-type\")\n  $inputCollectionDate      = $(\"#collection-date\")\n  templateErrorList = $(\"#template-error-list\").html();\n\n  $selectLoans.select2({\n    allowClear: true,\n    width: \"auto\",\n    theme: \"bootstrap\"\n  });\n};\n\nvar _loadCenterOptions  = function() {\n  $selectCenter.html(\"\");\n  $selectMember.html(\"\");\n\n  if(_centers.length > 0) {\n    _centerId = _centers[0].id;\n\n    for(var i = 0; i < _centers.length; i++) {\n      $selectCenter.append(new Option(_centers[i].name, _centers[i].id));\n    }\n  }\n\n  if(_members.length > 0) {\n    _memberId = _members[0].id;\n\n    for(var i = 0; i < _members.length; i++) {\n      $selectMember.append(new Option(_members[i].full_name, _members[i].id));\n    }\n\n    $selectMember.val(_memberId);\n\n    _fetchLoans();\n  }\n};\n\nvar _fetchLoans = function() {\n  $.ajax({\n    method: 'GET',\n    url: _urlLoans,\n    data: {\n      member_id: _memberId\n    },\n    success: function(response) {\n      _loans  = response.loans;\n      console.log(\"Loans:\");\n      console.log(_loans);\n\n      $selectLoans.val(null).trigger('change');\n      $selectLoans.empty();\n\n      _loans.forEach(function(o, i) {\n        $selectLoans.append(\n          new Option(\n            o.loan_product.name,\n            o.id,\n            false,\n            false\n          )\n        ).trigger('change');\n      });\n    },\n    error: function(response) {\n      console.log(\"Error in fetching loans.\");\n      console.log(response);\n    }\n  });\n};\n\nvar _bindEvents = function() {\n  $selectMember.on(\"change\", function() {\n    _memberId = $(this).val();\n\n    _fetchLoans();\n  });\n\n  $btnBatchProcess.on(\"click\", function() {\n  \n    $modalBatchProcess.show();\n  });\n\n  $btnConfirmBatchProcess.on(\"click\", function() {\n  \n   var batchnumberOfDays    = $inputBatchNumberOfDays.val();\n   var selectBatchBranch    = $selectBatchBranch.val();\n   var inputDateInitializedCutOff =  $inputDateInitializedCutOff.val()\n    \n  var batchStartDate = $batchStartDate.val()       \n  var batchEndDate = $batchEndDate.val()  \n  var batchAccruedType = $batchAccruedType.val()\n\n  \n    $message.html(\"Loading...\");\n    $btnConfirmBatchProcess.prop(\"disabled\", true);\n\n\n    $.ajax({\n      url: _urlBatchProcess,\n      method: \"POST\",\n      data: {\n        branch_id:  selectBatchBranch,\n        batchnumberOfDays: batchnumberOfDays,\n        inputDateInitializedCutOff: inputDateInitializedCutOff,\n        batchStartDate: batchStartDate,\n        batchEndDate: batchEndDate,  \n        batchAccruedType: batchAccruedType\n    \n      },\n      success: function(response) {\n        $message.html(\"Success!\");\n        window.location.reload();\n      },\n      error: function(response) {\n        var errors  = [];\n\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors = [\"Something went wrong\"];\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmBatchProcess.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  $btnProcess.on(\"click\", function() {\n    _moratoriumId = $(this).data(\"id\");\n    $modalProcess.show();\n  });\n\n  $btnConfirmProcess.on(\"click\", function() {\n    $message.html(\"Loading...\");\n    $btnConfirmProcess.prop(\"disabled\", true);\n\n    $.ajax({\n      url: _urlProcess,\n      method: \"POST\",\n      data: {\n        id: _moratoriumId,\n        authenticity_token: _authenticityToken\n      },\n      success: function(response) {\n        $message.html(\"Success!\");\n        window.location.reload();\n      },\n      error: function(response) {\n        var errors  = [];\n\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors = [\"Something went wrong\"];\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmProcess.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  $btnDelete.on(\"click\", function() {\n    _moratoriumId = $(this).data(\"id\");\n    $modalDelete.show();\n  });\n\n  $btnConfirmDelete.on(\"click\", function() {\n    $message.html(\"Loading...\");\n    $btnConfirmDelete.prop(\"disabled\", true);\n\n    $.ajax({\n      url: _urlDelete,\n      method: \"POST\",\n      data: {\n        id: _moratoriumId\n      },\n      success: function(response) {\n        $message.html(\"Success!\");\n        window.location.reload();\n      },\n      error: function(response) {\n        console.log(response);\n        alert(\"Error in deleting record!\");\n        $message.html(\"\");\n        $btnConfirmDelete.prop(\"disabled\", false);\n      }\n    });\n  });\n\n  $selectCenter.on(\"change\", function() {\n    _centerId = $selectCenter.val();\n\n\n  });\n\n  $selectBranch.on(\"change\", function() {\n    $.ajax({\n      method: 'GET',\n      url: _urlCenters,\n      data: {\n        id: $selectBranch.val(),\n        with_members: true\n      },\n      success: function(response) {\n        _centers  = response.centers;\n\n        if(_centers.length > 0) {\n          _members  = _centers[0].members;\n        }\n\n        _loadCenterOptions();\n      },\n      error: function(response) {\n        console.log(response);\n        alert(\"Error in fetching centers\");\n      }\n    });\n  });\n\n  $btnNew.on(\"click\", function() {\n    $modalNew.show();\n  });\n\n  $btnConfirmNew.on(\"click\", function() {\n    _branchId           = $selectBranch.val();\n    _centerId           = $selectCenter.val();\n\n\n    \n\n    $btnConfirmNew.prop(\"disabled\", true);\n    $selectBranch.prop(\"disabled\", true);\n    $selectCenter.prop(\"disabled\", true);\n\n    console.log(_loanIds);\n\n    $message.html(\"Loading...\");\n\n    $.ajax({\n      url: _urlCreate,\n      method: \"POST\",\n      data: {\n        branch_id: _branchId,\n        center_id: _centerId,\n        authenticity_token: _authenticityToken\n      },\n      success: function(response) {\n        $message.html(\n          \"Success! Redirecting...\"\n        );\n        \n        window.location.href=\"/data_stores/members_project_types/\" + response.id;\n      },\n      error: function(response) {\n        var errors  = [];\n\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors = [\"Something went wrong\"];\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmNew.prop(\"disabled\", false);\n          $selectBranch.prop(\"disabled\", false);\n          $selectCenter.prop(\"disabled\", false);\n          $selectMember.prop(\"disabled\", false);\n          $selectLoans.prop(\"disabled\", false);\n          $inputReason.prop(\"disabled\", false);\n          $inputNumberOfDays.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n};\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\nimport select2 from 'select2';\nselect2($);\n\nvar $modalNew;\nvar $modalDelete;\nvar $modalProcess;\nvar $modalBatchProcess;\nvar $selectBranch;\nvar $selectCenter;\nvar $selectMember;\nvar $selectProcessCenter;\nvar $selectLoans;\nvar $inputCollectionDate;\nvar $inputNumberOfDays;\nvar $inputStartDate;\nvar $inputEndDate;\nvar $inputNumberOfMoratoriumDays;\nvar $selectAccruedType;\nvar $inputReason;\nvar $btnNew;\nvar $btnDelete;\nvar $btnProcess;\nvar $btnBatchProcess;\nvar $btnConfirmNew;\nvar $btnConfirmDelete;\nvar $btnConfirmProcess;\nvar $btnConfirmBatchProcess;\nvar $message;\nvar templateErrorList;\nvar _authenticityToken;\n\nvar $inputBatchNumberOfDays;\nvar $selectBatchBranch;\nvar $inputDateInitializedCutOff;\nvar $batchStartDate;\nvar $batchEndDate;\nvar $batchAccruedType;\n\n\nvar $latitudeData;\nvar $longtitudeData;\nvar $btnApprove;\nvar $btnConfirmApprove;\nvar $modalApprove;\n\nvar $btnAdd;\n\n\nvar _centers  = [];\nvar _members  = [];\nvar _loans    = [];\nvar _loanIds  = [];\n\nvar _branchId;\nvar _centerId;\nvar _memberId;\nvar _moratoriumId;\n\nvar _urlCreate        = \"/api/v1/members_project_types_controller/create\";\nvar _urlDelete        = \"/api/v1/members_project_types_controller/delete\";\nvar _urlApprove        = \"/api/v1/members_project_types_controller/approve\";\nvar _urlProcess       =  \"#\" // \"/api/v1/adjustments/moratoriums/process\";\nvar _urlProcess       = \"/api/v1/adjustments/accrued_interests/process\";\nvar _urlBatchProcess  = \"/api/v1/adjustments/accrued_interests/batch_process\";\nvar _urlCenters       = \"/api/v1/members_project_types_controller/fetch_project_type_category\";\nvar _urlSave          = \"/api/v1/members_project_types_controller/save\";\nvar init  = function(options) {\n  _authenticityToken = options.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n};\n\nvar _cacheDom = function() {\n\n  $selectBranch                 = $(\"#select-project-type\");\n  $selectCenter                 = $(\"#select-project-type-category\");\n  $btnAdd                       = $(\"#btn-add\");\n  $selectMember                 = $(\"#select-member\");\n  $selectProcessCenter          = $(\"#select-process-center\");\n  $selectLoans                  = $(\"#select-loans\");\n  $inputNumberOfDays            = $(\"#input-number-of-days\");\n  $inputStartDate               = $(\"#input-start-date\");\n  $inputEndDate                 = $(\"#input-end-date\");\n  $inputNumberOfMoratoriumDays  = $(\"#input-number-of-moratorium-days\");\n  $selectAccruedType            = $(\"#select-accrued-type\");\n  $inputReason                  = $(\"#input-reason\");\n  $btnNew                       = $(\"#btn-new\");\n  $btnDelete                    = $(\".btn-delete\");\n  $btnProcess                   = $(\".btn-process\");\n  $btnBatchProcess              = $(\"#btn-batch-process\");\n  $btnConfirmNew                = $(\"#btn-confirm-new\");\n  $btnConfirmDelete             = $(\"#btn-confirm-delete\");\n  $btnConfirmProcess            = $(\"#btn-confirm-process\");\n  $btnConfirmBatchProcess       = $(\"#btn-confirm-batch-process\");\n  $message                      = $(\".message\");\n\n  $inputBatchNumberOfDays       = $(\"#input-batch-number-of-moratorium-days\");\n  $selectBatchBranch       = $(\"#select-batch-branch\");\n  $inputDateInitializedCutOff = $(\"#input-date-initialized-cut-off\");\n  $batchStartDate             = $(\"#batch-input-start-date\")\n  $batchEndDate             = $(\"#batch-input-end-date\")\n  $batchAccruedType         = $(\"#select-batch-accrued-type\")\n  $inputCollectionDate      = $(\"#collection-date\")\n  templateErrorList = $(\"#template-error-list\").html();\n\n  $latitudeData =    $(\"#latitude-data\");\n  $longtitudeData =  $(\"#longtitude-data\");\n  $btnApprove = $(\"#btn-approve\")\n  $btnConfirmApprove = $(\"#btn-confirm-approve\")\n  \n  $modalApprove = new bootstrap.Modal(\n    document.getElementById(\"modal-approve\")\n  )\n\n  $selectLoans.select2({\n    allowClear: true,\n    width: \"auto\",\n    theme: \"bootstrap\"\n  });\n};\n\nvar _loadCenterOptions  = function() {\n  $selectCenter.html(\"\");\n\n\n  if(_centers.length > 0) {\n    _centerId = _centers[0].id;\n\n    for(var i = 0; i < _centers.length; i++) {\n      $selectCenter.append(new Option(_centers[i].name, _centers[i].id));\n    }\n  }\n\n};\n\n\nvar _bindEvents = function() {\n  \n  $btnApprove.on(\"click\", function(){\n    $modalApprove.show();\n\n  })\n\n\n  $btnConfirmApprove.on(\"click\", function(){\n    \n    _id = $(this).data(\"id\")\n  \n    \n    $.ajax({\n      url: _urlApprove,\n      method: \"POST\",\n      data: {\n        data_store_id: _id,\n        authenticity_token: _authenticityToken\n      },\n      success: function(response) {\n        alert(\"Successfully Approved\")\n        window.location.href=\"/data_stores/members_project_types/\";\n      },\n      error: function(response) {\n        var errors  = [];\n\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors = [\"Something went wrong\"];\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n        }\n      }\n    });\n  \n\n  })\n\n\n  $btnDelete.on(\"click\", function(){\n    \n    _id = $(this).data(\"id\")\n    var data_index = $(this).data(\"data-index\")\n    $.ajax({\n      url: _urlDelete,\n      method: \"POST\",\n      data: {\n        data_store_id: _id  , \n        data_index: data_index,\n        authenticity_token: _authenticityToken\n      },\n      success: function(response) {\n        window.location.reload();\n      },\n      error: function(response) {\n        var errors  = [];\n\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors = [\"Something went wrong\"];\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n        }\n      }\n    });\n\n  })\n\n\n  $btnAdd.on(\"click\", function(){\n    \n    _id = $(this).data(\"id\");\n    project_category = $selectBranch.val();\n    project_type = $selectCenter.val()\n\n    $.ajax({\n      url: _urlSave,\n      method: \"POST\",\n      data: {\n        data_store_id: _id  , \n        project_category_id: project_category,\n        project_type_id: project_type,\n        member_id: $selectMember.val(),\n        latitude_data: $latitudeData.val(),\n        longtitude_data: $longtitudeData.val(),\n        authenticity_token: _authenticityToken\n      },\n      success: function(response) {\n        window.location.reload();\n      },\n      error: function(response) {\n        var errors  = [];\n\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors = [\"Something went wrong\"];\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n        }\n      }\n    });\n\n\n\n  });\n\n  $btnConfirmDelete.on(\"click\", function() {\n    $message.html(\"Loading...\");\n    $btnConfirmDelete.prop(\"disabled\", true);\n\n    $.ajax({\n      url: _urlDelete,\n      method: \"POST\",\n      data: {\n        id: _moratoriumId\n      },\n      success: function(response) {\n        $message.html(\"Success!\");\n        window.location.reload();\n      },\n      error: function(response) {\n        console.log(response);\n        alert(\"Error in deleting record!\");\n        $message.html(\"\");\n        $btnConfirmDelete.prop(\"disabled\", false);\n      }\n    });\n  });\n\n  $selectCenter.on(\"change\", function() {\n    _centerId = $selectCenter.val();\n\n\n  });\n\n  $selectBranch.on(\"change\", function() {\n    //alert($selectBranch.val())\n    $.ajax({\n      method: 'GET',\n      url: _urlCenters,\n      data: {\n        id: $selectBranch.val(),\n        with_members: true\n      },\n      success: function(response) {\n        _centers  = response.project_type_category;\n\n        //if(_centers.length > 0) {\n       //   _members  = _centers[0].members;\n       // }\n\n        _loadCenterOptions();\n      },\n      error: function(response) {\n        console.log(response);\n        alert(\"Error in fetching centers\");\n      }\n    });\n  });\n\n  $btnNew.on(\"click\", function() {\n    $modalNew.show();\n  });\n\n  $btnConfirmNew.on(\"click\", function() {\n    _branchId           = $selectBranch.val();\n    _centerId           = $selectCenter.val();\n\n\n    \n\n    $btnConfirmNew.prop(\"disabled\", true);\n    $selectBranch.prop(\"disabled\", true);\n    $selectCenter.prop(\"disabled\", true);\n\n    console.log(_loanIds);\n\n    $message.html(\"Loading...\");\n\n    $.ajax({\n      url: _urlCreate,\n      method: \"POST\",\n      data: {\n        branch_id: _branchId,\n        center_id: _centerId,\n        authenticity_token: _authenticityToken\n      },\n      success: function(response) {\n        $message.html(\n          \"Success! Redirecting...\"\n        );\n        \n        window.location.href=\"/data_stores/members_project_types/\" + response.id;\n      },\n      error: function(response) {\n        var errors  = [];\n\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors = [\"Something went wrong\"];\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmNew.prop(\"disabled\", false);\n          $selectBranch.prop(\"disabled\", false);\n          $selectCenter.prop(\"disabled\", false);\n          $selectMember.prop(\"disabled\", false);\n          $selectLoans.prop(\"disabled\", false);\n          $inputReason.prop(\"disabled\", false);\n          $inputNumberOfDays.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n};\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\r\nimport $ from \"jquery\";\r\nimport * as bootstrap from \"bootstrap\";\r\n\r\nvar authenticityToken;\r\nvar $modalNew;\r\nvar $btnNew;\r\nvar $btnConfirmNew;\r\nvar errors;\r\nvar $selectBranch;\r\nvar $message;\r\nvar templateErrorList;\r\n\r\nvar _cacheDom = function() {\r\n  $modalNew      = new bootstrap.Modal(document.getElementById(\"modal-new\"));\r\n  $btnConfirmNew = $(\"#btn-confirm-new\");\r\n  $btnNew        = $(\"#btn-new\");\r\n  $selectBranch  = $(\"#select-branch\");\r\n  \r\n\r\n  $message          = $(\".message\");\r\n  templateErrorList = $(\"#template-error-list\").html();\r\n}\r\nvar _bindEvents = function() {\r\n  $btnNew.on(\"click\", function() {\r\n    $modalNew.show();\r\n    $message.html(\"\");\r\n  });\r\n\r\n  $btnConfirmNew.on(\"click\", function(){\r\n    var branchID = $selectBranch.val();\r\n    $message.html(\"Loading...\");\r\n    $btnConfirmNew.prop(\"disabled\", true);\r\n    $selectBranch.prop(\"disabled\", true);\r\n\r\n    var data = {\r\n      branch_id: branchID,\r\n      authenticity_token: authenticityToken\r\n    }\r\n\r\n      $btnConfirmNew.prop(\"disabled\",true);\r\n    $.ajax({\r\n      url: \"/api/v1/transfer_savings/create\",\r\n      method: \"POST\",\r\n      data: data,\r\n\r\n      success: function(response){\r\n         window.location.href=\"/transfer_savings\";\r\n      },\r\n      error: function(response){\r\n        errors = [];\r\n\r\n        try {\r\n          errors = JSON.parse(response.responseText).full_messages;\r\n        } catch(err) {\r\n          console.log(response);\r\n          errors.push(\"Something went wrong\");\r\n        }\r\n\r\n        $message.html(\r\n          Mustache.render(\r\n            templateErrorList,\r\n            { errors: errors }\r\n          )\r\n        );\r\n\r\n        $btnConfirmNew.prop(\"disabled\", false);\r\n      }\r\n\r\n    });\r\n\r\n\r\n\r\n  });\r\n\r\n\r\n}\r\n\r\nvar init  = function(config) {\r\n  authenticityToken = config.authenticityToken;\r\n\r\n  _cacheDom();\r\n  _bindEvents();\r\n}\r\n\r\nexport default { init: init };\r\n", "import Mustache from \"mustache\";\r\nimport $ from \"jquery\";\r\nimport * as bootstrap from \"bootstrap\";\r\n\r\nvar authenticityToken;\r\nvar $modalApprove;\r\nvar $btnApprove;\r\nvar $btnConfirmApprove;\r\nvar errors;\r\nvar $message;\r\nvar templateErrorList;\r\n\r\nvar _cacheDom = function() {\r\n   $modalApprove = new bootstrap.Modal(document.getElementById(\"modal-approve\"));\r\n   $btnApprove   = $(\"#btn-approved\");\r\n   $btnConfirmApprove = $(\"#btn-confirm-approve\");\r\n  \r\n  \r\n\r\n  $message          = $(\".message\");\r\n  templateErrorList = $(\"#template-error-list\").html();\r\n}\r\nvar _bindEvents = function() {\r\n  $btnApprove.on(\"click\",function(){\r\n    $modalApprove.show();\r\n  });\r\n\r\n  $btnConfirmApprove.on(\"click\",function(){\r\n    var data = {\r\n      id:_id,\r\n      authenticity_token: authenticityToken\r\n    }\r\n    $btnConfirmApprove.prop(\"disabled\", true);\r\n    \r\n    $.ajax({\r\n      url: \"/api/v1/transfer_savings/approved\",\r\n      data: data,\r\n      method: \"POST\",\r\n\r\n      success: function(response){\r\n        console.log(response);\r\n        $message.html(\r\n          \"Success! Redirecting...\"\r\n        );\r\n         window.location.href=\"/transfer_savings\";\r\n      },\r\n      error: function(response){\r\n         var errors  = [];\r\n        try {\r\n          errors  = JSON.parse(response.responseText).full_messages;\r\n        } catch(err) {\r\n          errors  = [\"Something went wrong\"]\r\n        } finally {\r\n          $message.html(\r\n            Mustache.render(\r\n              templateErrorList,\r\n              { errors: errors }\r\n            )\r\n          );\r\n           $btnConfirmApprove.prop(\"disabled\", false);\r\n         }\r\n      }\r\n    });\r\n  });\r\n}\r\n\r\nvar init  = function(config) {\r\n  authenticityToken = config.authenticityToken;\r\n  _id                 = config.id;\r\n\r\n  _cacheDom();\r\n  _bindEvents();\r\n}\r\n\r\nexport default { init: init };\r\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\nimport select2 from 'select2';\nselect2($);\n\n\nvar authenticityToken;\n\nvar $btnNew;\nvar $modalNew;\nvar $selectBranch;\nvar $selectCenter;\nvar $btnConfirmNew;\nvar templateErrorList;\n\nvar _centers  = [];\n\nvar _urlCenters       = \"/api/v1/branches/fetch_centers\";\n\nvar _cacheDom = function() {\n  $btnNew\t    = $(\"#btn-new\");\n  $modalNew = new bootstrap.Modal(\n    document.getElementById(\"modal-new\")\n  )\n\n  $btnConfirmNew    = $(\"#btn-confirm-new\");\n  $selectBranch     = $(\"#select-branch\");\n  $selectCenter     = $(\"#select-center\");\n  $message          = $(\".message\");\n  templateErrorList = $(\"#template-error-list\").html();\n}\n\nvar _loadCenterOptions  = function() {\n  $selectCenter.html(\"\");\n  if(_centers.length > 0) {\n    _centerId = _centers[0].id;\n\n    for(var i = 0; i < _centers.length; i++) {\n      $selectCenter.append(new Option(_centers[i].name, _centers[i].id));\n    }\n  }\n };\n\n\nvar _bindEvents = function() {\n   $selectBranch.on(\"change\", function() {\n    $.ajax({\n      method: 'GET',\n      url: _urlCenters,\n      data: {\n        id: $selectBranch.val(),\n        with_members: true\n      },\n      success: function(response) {\n        _centers  = response.centers;\n\n        if(_centers.length > 0) {\n          _members  = _centers[0].members;\n        }\n\n        _loadCenterOptions();\n      },\n      error: function(response) {\n        console.log(response);\n        alert(\"Error in fetching centers\");\n      }\n    });\n  });\n  $selectCenter.on(\"change\", function() {\n    _centerId = $selectCenter.val();\n\n    _members  = _centers.find(c => c.id === _centerId).members;\n\n    $selectMember.html(\"\");\n    for(var i = 0; i < _members.length; i++) {\n      $selectMember.append(new Option(_members[i].full_name, _members[i].id));\n    }\n\n    if(_members.length > 0) {\n      _memberId = _members[i].id;\n\n      _fetchLoans();\n    }\n  });\n\n     \n $btnNew.on(\"click\", function() {\n   $modalNew.show();\n   $message.html(\"\");\n  });\n\n\n $btnConfirmNew.on(\"click\", function() {\n   var branchId = $selectBranch.val(); \n   var centerId = $selectCenter.val(); \n\n   $message.html(\"Loading...\");\n   $btnConfirmNew.prop(\"disabled\", true);\n   $selectBranch.prop(\"disabled\", true);\n   $selectCenter.prop(\"disabled\", true);\n\n   var data = {\n\tbranch_id: branchId,\n\tcenter_id: centerId,\n\tauthenticity_token: authenticityToken\n   }\n\t \n     $.ajax({\n      url: \"/api/v1/mbs_transfer/create\",\n      method: 'POST',\n      data: data,\n      success: function(response) {\n\twindow.location.href=\"/mbs_transfer\";\n      },\n      error: function(response) {\n        errors = [];\n\n        try {\n          errors = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors.push(\"Something went wrong\");\n          console.log(response);\n        }\n\n        $message.html(\n          Mustache.render(\n            templateErrorList,\n            { errors: errors }\n          )\n        );\n\n   \t$btnConfirmNew.prop(\"disabled\", true);\n   \t$selectBranch.prop(\"disabled\", true);\n   \t$selectCenter.prop(\"disabled\", true);\n     }\n    });\n });\n\n}\nvar init  = function(config) {\n  authenticityToken = config.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n}\n\nexport default { init: init };\n\n\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\nimport select2 from 'select2';\nselect2($);\n\n\nvar authenticityToken;\n\nvar $btnDelete;\nvar $modalDeleteMember;\nvar $displayMember\nvar $message;\n\nvar currentMember           = \"\";\nvar currentMemberId         = \"\";\n\nvar $btnConfirmDeleteMember;\n\nvar $btnAdd;\nvar _memberId;\nvar _id;\n\nvar templateErrorList;\nvar _urlAddParticular = \"/api/v1/mbs_transfer/add_particular\";\n\nvar _cacheDom = function() {\n  $modalUpdate \t    = new bootstrap.Modal(\n     document.getElementById(\"modal-update-transaction\")\n   )\n  \n   $modalApproveTransaction = new bootstrap.Modal(\n     document.getElementById(\"modal-approve-transaction\")\n   )\n\n$modalDeleteMember = new bootstrap.Modal(document.getElementById(\"modal-delete-member\"))\n  $btnDelete = $(\".btn-delete-member\");\n  $btnAdd\t    = $(\"#btn-add\");\n  $btnApprove\t\t\t  = $(\"#btn-approve\");\t\n  $btnConfirmProcess = $(\"#btn-confirm-process\");\n  $btnConfirmAmount\t= $(\"#btn-confirm-amount\")\n  $selectMember      = $(\"#select-member\");\n  $message          = $(\".message\");\n  $UpdateAmount      = $(\".undo\");\n  $withdrawAmount\t\t= $(\"#withdrawAmount\");\t\t\n  $memberName\t\t\t  = $(\"#memberName\");\n  $memberId\t\t\t    = $(\"#memberId\");\n  $accountSubType\t\t= $(\"#accountSubType\");\n  $btnAddParticular  = $(\"#btn-add-particular\");\n  $inputParticular   = $(\"#particular\");\n  $btnConfirmDeleteMember = $(\"#btn-confirm-delete-member\");\n  $displayMember          = $(\".display-member\");\n \n  templateErrorList = $(\"#template-error-list\").html();\n}\n\nvar _bindEvents = function() {\n\n  $btnDelete.on(\"click\", function(){\n    $message.html(\"\");\n    console.log($(this).data);\n    currentMember           = $(this).data(\"member-name\");\n    currentMemberId         = $(this).data(\"member-id\");\n    _id = $(this).data(\"id\");\n    $displayMember.html(currentMember);\n    $modalDeleteMember.show();\n  });\n\n  $btnConfirmDeleteMember.on(\"click\", function(){\n    \n    $message.html(\"Loading...\");\n    $btnConfirmDeleteMember.prop(\"disabled\", true);\n\n\n    var data = {\n      id: _id,\n      member_id: currentMemberId,\n      authenticity_token: authenticityToken\n    };\n\n    $.ajax({\n      url: \"/api/v1/mbs_transfer/delete_member\",\n      method: \"POST\",\n      data: data,\n      success: function(response){\n        $message.html(\"Success!\");\n        window.location.reload();\n      },\n\n      error: function(response) {\n        var errors  = [];\n\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"]\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmDeleteMember.prop(\"disabled\", false);\n        }\n      }\n    });\n\n  });\n  $btnAdd.on(\"click\", function() {\n   _memberId = $selectMember.val();\n   _id = $(this).data(\"id\");\t\n   var data = {\n      id: _id,\n      member_id: _memberId,\n      authenticity_token: authenticityToken\n    };\n    \n    $selectMember.prop(\"disabled\", true);\n    $.ajax({\n      url: \"/api/v1/mbs_transfer/add_member\",\n      method: 'POST',\n      data: data,\n      success: function(response) {\n      $message.html(\n        \"Success! Redirecting...\"\n      );\n      window.location.reload();\n      },\n      error: function(response) {\n      var errors  = [];\n      alert(JSON.parse(response.responseText).full_messages)\n      $selectMember.prop(\"disabled\", false);\n      try {\n      errors  = JSON.parse(response.responseText).full_messages;\n      } catch(err) {\n      errors  = [\"Something went wrong\"]\n      } finally {\n      $message.html(\n      Mustache.render(\n      templateErrorList,\n      { errors: errors }\n      )\n      );\n      $selectMember.prop(\"disabled\", false);\n      }\n      }\n      });\n  });\n\n     $UpdateAmount.on(\"click\" , function() {\n\t   _memberAccountId \t\t= $(this).data(\"member-account-id\")\n\t   var withdraw_amount\t\t= $(this).data(\"withdraw-amount\")\n\t   var member_name\t\t= $(this).data(\"member-name\")\n\t   var account_subtype\t\t= $(this).data(\"account-subtype\")\n\t   var member_id\t\t= $(this).data(\"member-id\")\n\n\t   //alert(account_subtype);\n\t   $withdrawAmount.val(withdraw_amount)\n\t   $memberName.text(member_name)\n\t   $accountSubType.text(account_subtype)\n\t   $memberId.text(member_id)\n\t   $modalUpdate.show();\n\n     });\n\n      $btnConfirmAmount.on(\"click\", function() {\n\t_withdrawAmount\t= $withdrawAmount.val()\t     \n\t_id \t\t= $(this).data(\"id\");\t\n\t_memberId\t= $memberId.text()\n\n\t   var data = {\n\t\tid: _id,\n\t\tmember_name: $memberName.text(),\n\t\tmember_id: _memberId,   \n\t\tmember_account_id: _memberAccountId,   \n\t\twithdraw_amount: _withdrawAmount,\n\t\tauthenticity_token: authenticityToken\n\t   \t};\n      $.ajax({\n      url: \"/api/v1/mbs_transfer/update_amount\",\n      method: 'POST',\n      data: data,\n      success: function(response) {\n\t$message.html(\n          \"Success! Redirecting...\"\n        );\n        \n        window.location.reload();\n      },\n      error: function(response) {\n        errors = [];\n\talert(JSON.parse(response.responseText).full_messages)\n        try {\n          errors = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors.push(\"Something went wrong\");\n          console.log(response);\n        }\n\n        $message.html(\n          Mustache.render(\n           \n          )\n        );\n    }\n    }); \n   });\t\n\n\n   $btnAddParticular.on(\"click\", function() {\n    var txtParticular = $inputParticular.val()\n    _id = $(this).data(\"id\");\t  \n    $.ajax({\t    \n      url: _urlAddParticular,\n      method: \"POST\",\n      data: {\n\tid: _id,\n\ttxtParticular: txtParticular,\n        authenticity_token: authenticityToken\n      },\n      success: function(response) {\n        $message.html(\"Success!\");\n        window.location.reload();\n      },\n      error: function(response) {\n        var errors  = [];\n\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors = [\"Something went wrong\"];\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnAddParticular.prop(\"disabled\", false);\n        }\n      }\n    });\n\n   });\n\n   $btnApprove.on(\"click\", function() {\n     _id = $(this).data(\"id\");\n        $modalApproveTransaction.show();\n   });\n\t\n   $btnConfirmProcess.on(\"click\", function() {\n    var data = {\n       id: _id,\n       authenticity_token: authenticityToken\n     };\n     $btnConfirmProcess.prop(\"disabled\", true);\n     $message.html(\"Loading...\");\n\n    console.log(data);\n    $.ajax({\n      url: \"/api/v1/mbs_transfer/approve\",\n      method: 'POST',\n      data: data,\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.href=\"/mbs_transfer\";\n      },\n      error: function(response) {\n        console.log(response);\n\talert(JSON.parse(response.responseText).full_messages);      \n\tvar errors  = [];\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n\t      { errors: errors }\n\t    )\n          );\n\n          $btnConfirmProcess.prop(\"disabled\", false);\n        }\n      }\n    });\n\n   });\n\n\n}\nvar init  = function(config) {\n  authenticityToken = config.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n}\n\nexport default { init: init };\n\n\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\n\nvar authenticityToken;\n\nvar $modalNew;\nvar $btnNew;\nvar $btnConfirmNew;\nvar errors;\n\nvar _cacheDom = function() {\n  $modalNew = new bootstrap.Modal(\n    document.getElementById(\"modal-new\")\n  );\n\n  $btnNew           = $(\"#btn-new\");\n  $btnConfirmNew    = $(\"#btn-confirm-new\");\n  $asOf             = $(\"#as-of\");\n  $selectBranch     = $(\"#select-branch\");\n  $message          = $(\".message\");\n  templateErrorList = $(\"#template-error-list\").html();\n}\n\nvar _bindEvents = function() {\n  $btnNew.on(\"click\", function() {\n    $modalNew.show();\n    $message.html(\"\");\n  });\n\n  $btnConfirmNew.on(\"click\", function() {\n   var branch = $selectBranch.val();\n   var asOf   = $asOf.val();\n\n   $message.html(\"loading .....\");\n   $btnConfirmNew.prop(\"disabled\", true);\n   $selectBranch.prop(\"disabled\",true);\n   $asOf.prop(\"disabled\",true);\n\n   var data = {\n    branch_id: branch,\n    as_of: asOf,\n    authenticity_token: authenticityToken\n   }\n\n   console.log(data);\n\n   $.ajax({\n    url: \"/api/v1/data_stores/involuntary_members/queue\",\n    method: \"POST\",\n    data: data,\n    success: function(response){\n      window.location.href=\"/data_stores/involuntary_members\";\n    },\n    error: function(response){\n      errors = [];\n\n        try {\n          errors = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          console.log(response);\n          errors.push(\"Something went wrong\");\n        }\n\n        $message.html(\n          Mustache.render(\n            templateErrorList,\n            { errors: errors }\n          )\n        );\n\n    } \n   });\n  });\n\n\n\n \n}\n\nvar init  = function(config) {\n  authenticityToken = config.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n}\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\n\nvar authenticityToken;\nvar $modalDetails;\nvar $modalSecond;\nvar $btnSecondLetter;\nvar $btnConfirmSecondLetter;\nvar $selectDate;\nvar $btnDetails;\nvar $btnPrintList;\nvar $modalPrintlist;\nvar $btnConfirm;\nvar $member_name;\nvar $currentMember = \"\";\nvar $currentMemberId= \"\";\nlet $loan_records = [];\nlet $member_accounts = [];\nvar errors;\nvar id;\nvar _cacheDom = function() {\n  $modalDetails = new bootstrap.Modal(\n    document.getElementById(\"modal-details\")\n  );\n  \n  $modalSecond = new bootstrap.Modal(\n    document.getElementById(\"modal-second\")\n  );\n  $selectDate = $(\"#as-of\");\n  $btnPrint = $(\".btn-print-letter\");\n  $btnSecondLetter = $(\".btn-second-letter\");\n  $btnConfirmSecondLetter = $(\".btn-confirm-print-second\");\n  $member_name = $(\".display-member\");\n  $btnConfirm = $(\".btn-confirm\");\n  $btnPrintList  = $(\"#btn-print-list\");\n  $modalPrintlist = $(\"#modal-print\");\n  $message          = $(\".message\");\n  templateErrorList = $(\"#template-error-list\").html();\n  $printMessage       = $(\".print-message\");\n  loader            = $(\"#template-loader\").html();\n  var id = _id;\n}\n\nvar _bindEvents = function() {\n  $btnSecondLetter.on(\"click\",function(){\n    $currentMember = $(this).data(\"member-name\");\n    $currentMemberId = $(this).data(\"member-id\");\n    $loan_records = $(this).data(\"loan-records\");\n    $member_accounts = $(this).data(\"member-accounts\");\n    $member_name.html($currentMember);\n    $modalSecond.show();\n  });\n\n  $btnConfirmSecondLetter.on(\"click\",function(){\n      var data = {\n      id: _id,\n      member_id: $currentMemberId,\n      loan_records: $loan_records,\n      member_accounts: $member_accounts,\n      as_of: $selectDate.val(),\n      authenticity_token: authenticityToken\n      }\n      console.log(data);\n      const dataStr = JSON.stringify(data);\n      console.log(dataStr);\n      $modalDetails.hide();\n      window.open(\"/print?data=\"+ encodeURIComponent(dataStr) + \"&type=print_second_involuntary_letter\");\n  });\n\n\n  $btnPrintList.on(\"click\", function(){\n    var print_list_id = $btnPrintList.data('id');\n    console.log(print_list_id);\n    $modalPrintlist.show();\n    $printMessage.html(\n      Mustache.render(\n        loader,\n        {}\n      )\n    );\n\n    $modalPrintlist.hide();\n    window.open(\"/print?id=\" + print_list_id + \"&type=involuntary_members_list\");\n    \n  });\n\n\t$btnPrint.on(\"click\", function() {\n    $currentMember = $(this).data(\"member-name\");\n    $currentMemberId = $(this).data(\"member-id\");\n    $loan_records = $(this).data(\"loan-records\");\n    $member_accounts = $(this).data(\"member-accounts\");\n    $member_name.html($currentMember);\n    $modalDetails.show();\n\t});\n\n  $btnConfirm.on(\"click\", function() {\n   \n    var data = {\n      id: _id,\n      member_id: $currentMemberId,\n      loan_records: $loan_records,\n      member_accounts: $member_accounts,\n      authenticity_token: authenticityToken\n    }\n    const dataStr = JSON.stringify(data);\n    console.log(dataStr);\n    $modalDetails.hide();\n    window.open(\"/print?data=\"+ encodeURIComponent(dataStr) + \"&type=print_involuntary_members\");\n\n\n  })\n\n\n\n\n\n\n \n}\n\nvar init  = function(config) {\n  authenticityToken = config.authenticityToken;\n  _id = config.id;\n\n  _cacheDom();\n  _bindEvents();\n}\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\n\nvar $btnNew;\nvar $btnNewChannel;\nvar $modalApprove;\nvar $modalApproveChannel;\nvar $btnConfirmNew;\nvar $btnConfirmNewChannel;\nvar $BankName;\nvar $Amount;\nvar $Transferoption;\nvar $Code;\nvar $transfer;\nvar $accounting;\nvar _authenticityToken;\n\nvar _cacheDom\t\t= function() {\n\n$modalApprove \t= new bootstrap.Modal(document.getElementById(\"modal-new\"));\n$modalApproveChannel \t= new bootstrap.Modal(document.getElementById(\"modal-new-channel\"));\n\n$btnNew \t\t\t\t\t\t\t= $(\"#btn-new\");\n$btnNewChannel \t\t\t\t= $(\"#btn-channel\");\n$BankName \t\t\t\t\t\t= $(\"#bankname\");\n$btnConfirmNew  \t\t\t= $(\"#btn-confirm-new\");\n$btnConfirmNewChannel\t= $(\"#btn-confirm-new-channel\");\n$Amount \t\t\t\t\t\t\t= $(\"#amount\");\n$Transfer       \t\t\t= $(\"#select1\");\n$Accounting     \t\t\t= $(\"#select\");\n$Transferoption       = $(\"#transferoption\");\n$Code     \t\t\t\t\t\t= $(\"#code\");\n}\n\nvar _bindEvents = function () {\n\n\t$btnNewChannel.on(\"click\", function() {\n\t\t$modalApproveChannel.show();\n\t});\n\t\n\t$btnConfirmNewChannel.on(\"click\", function(){\n\t\tvar TransferName \t\t= $Transferoption.val();\n\t\tvar Code \t\t\t\t\t\t= $Code.val();\n\n\t\tvar data = {\n\n\t\t\ttransfer_name: TransferName,\n\t\t\tcode: Code,\n\t\t\tauthenticity_token: _authenticityToken\n\n\t\t}\n\n\t$.ajax({\n\t\turl: \"/api/v1/bank_transfer/create_channel\",\n\t\tmethod: 'POST',\n\t\tdata: data,\n\t\tsuccess: function(response) {\n\t\t\twindow.location.href=\"/bank_transfer\";\n\t\t},\n\t\terror: function(response) {\n\t\t\terrors = [];\n\n\t\ttry {                                                              \n          errors = JSON.parse(response.responseText).full_messages;        \n        } catch(err) {                                                     \n          errors.push(\"Something went wrong\");                             \n          console.log(response);                                           \n        }                                                                  \n                                                                           \n        $message.html(                                                     \n          Mustache.render(                                                 \n            templateErrorList,                                             \n            { errors: errors }                                             \n          )                                                                \n        );                                                                 \n     }\n\t});\n});\n\t$btnNew.on(\"click\", function() {\n\t\t$modalApprove.show();\n\t});\n\n\t$btnConfirmNew.on(\"click\", function(){\n\t\tvar BankName \t\t\t= $BankName.val();\n\t\tvar Amount \t\t\t \t= $Amount.val();\n\t\tvar Transfer     \t= $Transfer.val();\n\t\tvar Accounting    = $Accounting.val();\n\t\t\n\t\tvar data = {\n\t\t\t\tbank_name: \tBankName,\n\t\t\t\tamount: \t\tAmount,\n\t\t\t\ttransfer: \tTransfer,\n\t\t\t\taccounting: Accounting,\n\t\t\t\tauthenticity_token: _authenticityToken\n\n\n\t\t}\n\t\t$.ajax({                                                              \n      url: \"/api/v1/bank_transfer/create\",                              \n      method: 'POST',                                                      \n      data: data,                                                          \n      success: function(response) {                                       \n              window.location.href=\"/bank_transfer\";                    \n      },                                                                   \n      error: function(response) {                                          \n        errors = [];                                                       \n                                                                           \n        try {                                                              \n          errors = JSON.parse(response.responseText).full_messages;        \n        } catch(err) {                                                     \n          errors.push(\"Something went wrong\");                             \n          console.log(response);                                           \n        }                                                                  \n                                                                           \n        $message.html(                                                     \n          Mustache.render(                                                 \n            templateErrorList,                                             \n            { errors: errors }                                             \n          )                                                                \n        );                                                                 \n     }                                                                     \n    });\n\t\t//alert(data);\n\t});\n\n}\n\t\nvar init  = function(config) {\n  _authenticityToken  = config.authenticityToken;\n  \n  _cacheDom();\n  _bindEvents();\n};\n\n\nexport default { init: init };", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\n\n\nvar authenticityToken;\n\nvar $btnNew;\nvar $modalNew;\nvar $selectBranch;\nvar $selectAsOf;\nvar $btnConfirmNew;\n\nvar templateErrorList;\n\nvar $message;\n\nvar _cacheDom = function () {\n  $btnNew \t  = $('#btn-new');\n  $modalNew \t= new bootstrap.Modal(document.getElementById(\"modal-new-transaction\"));\n  $btnConfirmNew    = $(\"#btn-confirm-new\");\n  $selectBranch     = $(\"#select-branch\");\n\n  $selectAsOf       = $(\"#input-as-of\");\n  $message          = $(\".message\");\n  $templateErrorList = $(\"#template-error-list\").html();\n};\n\n \n\nvar _bindEvents = function() {\n\n  $btnNew.on(\"click\", function() {\n\n    $modalNew.show();\n    $message.html(\"\");\n  });\n\n  $btnConfirmNew.on(\"click\", function() {\n\n    var selectAsOf = $selectAsOf.val();\n    var branch_id  = $selectBranch.val();\n\n    var data = {\n    as_of: selectAsOf, \n    branch_id: branch_id, \n    authenticity_token: _authenticityToken\n  } \n\n    $.ajax({\n      method: 'POST',\n      url: \"/api/v1/data_stores/share_capital_summary/create\",\n      data: data,\n\n      success: function(response) {\n        $message.html(\"!Success Redirecting.....\");\n\n        window.location.href=\"/data_stores/share_capital_summary\";\n      },\n      error: function(response) {\n        var errors  = [];\n      try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"]\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $selectBranch.prop(\"disabled\", false);\n          $btnConfirmNew.prop(\"disabled\", false);\n        }\n      }\n\n\n\n\n    });\n  });\n\n};\n\nvar init  = function(options) {\n  _authenticityToken  = options.authenticityToken; \n\n  _cacheDom();\n  _bindEvents();\n};\n\nexport default { init: init };", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\nimport select2 from 'select2';\n\nvar authenticityToken;\n\nvar $modalNew;\nvar $btnNew;\nvar $btnConfirmNew;\nvar $selectBranch;\n\nvar $message;\nvar templateErrorList;\n\nvar _cacheDom = function() {\n  $modalNew      = new bootstrap.Modal(\n    document.getElementById(\"modal-new\")\n\n  );\n\n  $btnConfirmNew    = $(\"#btn-confirm-new\");\n  $btnNew           = $(\"#btn-new\");\n  $selectBranch     = $(\"#select-branch\");\n\n\n  $message          = $(\".message\");\n  templateErrorList = $(\"#template-error-list\").html();\n}\n\nvar _bindEvents = function() {\n  \n  $btnConfirmNew.on(\"click\", function() {\n    var branchId  = $selectBranch.val();\n    var data = {\n      branch_id: branchId,\n      authenticity_token: authenticityToken\n\n    }\n\n\n    $.ajax({\n      url: \"/api/v1/data_stores/project_type_summary/create\",\n      method: 'POST',\n      data: data,\n      success: function(response){\n        //alert(\"jef\")\n        window.location.href=\"/data_stores/project_types_summary/\" + response.id;\n\n      }\n\n\n\n\n    });\n\n\n  });\n\n  $btnNew.on(\"click\", function() {\n    $modalNew.show();\n    $message.html(\"\");\n\n\n  });\n\n\n}\n\nvar init  = function(config) {\n  authenticityToken = config.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n}\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\n\nvar $btnNew;\nvar $modalNew;\nvar $btnConfirmNew;\nvar $startDate;\nvar $endDate;\n\nvar $message;\nvar templateErrorList;\nvar authenticityToken;\n\n\nvar _cacheDom = function() {\n  $btnNew = $(\"#btn-new\");\n  $modalNew = new bootstrap.Modal(document.getElementById(\"modal-new\"));\n  $btnConfirmNew = $(\"#btn-confirm-new\");\n  $startDate = $(\"#start-date\");\n  $endDate = $(\"#end-date\");\n\n  $message                = $(\".message\");\n  templateErrorList = $(\"#template-error-list\").html();  \n};\n\nvar _bindEvents = function() {\n  $btnNew.on(\"click\",function(){\n    $modalNew.show();\n  });\n\n  $btnConfirmNew.on(\"click\",function(){\n    var start_date = $startDate.val();\n    var end_date = $endDate.val();\n\n    var data = {\n     start_date: start_date,\n     end_date: end_date,\n     authenticity_token: authenticityToken\n    }\n\n    console.log(data);\n\n    $.ajax({\n      url: \"/api/v1/data_stores/assets_liabilities/create\",\n      method: \"POST\",\n      data: data,\n      success: function(response) {\n        window.location.reload();\n      },\n      error: function(response){\n        errors = [];\n\n        try {\n          errors = JSON.parse(response.responseText).errors;\n          \n        } catch(err) {\n          errors.push(\"Something went wrong\");\n          console.log(response);\n        }\n\n        $message.html(\n          Mustache.render(\n            templateErrorList,\n            { errors: errors }\n          )\n        );\n        }\n    });\n    $startDate.prop(\"disabled\",false);\n    $endDate.prop(\"disabled\",false);\n\n  });\n\n}\n\nvar init  = function(options) {\n  authenticityToken = options.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n};\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\n\nvar $btnNew;\nvar $modalNew;\nvar $branchId;\nvar $date;\nvar $btnConfirmNew;\nvar $message;\nvar templateErrorList;\nvar authenticityToken;\n\n\nvar _cacheDom = function() {\n  $btnNew = $(\"#btn-new\");\n  $branchId = $(\"#select-branch\");\n  $date = $(\"#input-date\");\n  $btnConfirmNew = $(\"#btn-confirm-new\");\n  $modalNew = new bootstrap.Modal(document.getElementById(\"modal-new\"));\n\n\n  $message                = $(\".message\");\n  templateErrorList = $(\"#template-error-list\").html();  \n};\n\nvar _bindEvents = function() {\n  $btnNew.on(\"click\",function(){\n    $modalNew.show();\n  });\n\n  $btnConfirmNew.on(\"click\", function(){\n    var data = {\n      branch_id: $branchId.val(),\n      date: $date.val(),\n      authenticityToken: authenticityToken\n    }\n    $.ajax({\n      url: \"/api/branch_cash_flow/generate\",\n      method: \"POST\",\n      data: data,\n\n      success: function(response){\n\n      },\n      error: function(response){\n        errors = [];\n\n        try {\n          errors = JSON.parse(response.responseText).errors;\n          \n        } catch(err) {\n          errors.push(\"Something went wrong\");\n          console.log(response);\n        }\n\n        $message.html(\n          Mustache.render(\n            templateErrorList,\n            { errors: errors }\n          )\n        );\n      }\n    });\n  });\n\n\n\n\n\n\n}\n\nvar init  = function(options) {\n  authenticityToken = options.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n};\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\n\nvar authenticityToken;\n\nvar $modalNew;\nvar $btnNew;\nvar $btnConfirmNew;\nvar errors;\n\nvar _cacheDom = function() {\n  $modalNew = new bootstrap.Modal(\n    document.getElementById(\"modal-new\")\n  );\n\n  $btnNew           = $(\"#btn-new\");\n  $btnConfirmNew    = $(\"#btn-confirm-new\");\n  $asOf             = $(\"#as-of\");\n  $selectBranch     = $(\"#select-branch\");\n  $message          = $(\".message\");\n  templateErrorList = $(\"#template-error-list\").html();\n}\n\nvar _bindEvents = function() {\n  $btnNew.on(\"click\", function() {\n    $modalNew.show();\n    $message.html(\"\");\n  });\n\n  $btnConfirmNew.on(\"click\", function() {\n   var branch = $selectBranch.val();\n   var asOf   = $asOf.val();\n\n   $message.html(\"loading .....\");\n   $btnConfirmNew.prop(\"disabled\", true);\n   $selectBranch.prop(\"disabled\",true);\n   $asOf.prop(\"disabled\",true);\n\n   var data = {\n    branch_id: branch,\n    as_of: asOf,\n    authenticity_token: authenticityToken\n   }\n\n   console.log(data);\n\n   $.ajax({\n    url: \"/api/v1/data_stores/share_capital_involuntary/queue\",\n    method: \"POST\",\n    data: data,\n    success: function(response){\n      window.location.href=\"/data_stores/share_capital_involuntary\";\n    },\n    error: function(response){\n      errors = [];\n\n        try {\n          errors = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          console.log(response);\n          errors.push(\"Something went wrong\");\n        }\n\n        $message.html(\n          Mustache.render(\n            templateErrorList,\n            { errors: errors }\n          )\n        );\n\n    } \n   });\n  });\n\n\n\n \n}\n\nvar init  = function(config) {\n  authenticityToken = config.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n}\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\n\nvar authenticityToken;\nvar $modalDetails;\nvar $modalSecond;\nvar $btnSecondLetter;\nvar $btnConfirmSecondLetter;\nvar $selectDate;\nvar $btnDetails;\nvar $btnPrintList;\nvar $modalPrintlist;\nvar $btnConfirm;\nvar $member_name;\nvar $currentMember = \"\";\nvar $currentMemberId= \"\";\nlet $loan_records = [];\nlet $savings_account = [];\nlet $equity_accounts = [];\nlet $insurance_accounts = [];\nvar errors;\nvar id;\nvar _cacheDom = function() {\n  $modalDetails = new bootstrap.Modal(\n    document.getElementById(\"modal-details\")\n  );\n  \n  $modalSecond = new bootstrap.Modal(\n    document.getElementById(\"modal-second\")\n  );\n  $selectDate = $(\"#as-of\");\n  $btnPrint = $(\".btn-print-letter\");\n  $btnSecondLetter = $(\".btn-second-letter\");\n  $btnConfirmSecondLetter = $(\".btn-confirm-print-second\");\n  $member_name = $(\".display-member\");\n  $btnConfirm = $(\".btn-confirm\");\n  $btnPrintList  = $(\"#btn-print-list\");\n  $modalPrintlist = $(\"#modal-print\");\n  $message          = $(\".message\");\n  templateErrorList = $(\"#template-error-list\").html();\n  $printMessage       = $(\".print-message\");\n  loader            = $(\"#template-loader\").html();\n  var id = _id;\n}\n\nvar _bindEvents = function() {\n  $btnSecondLetter.on(\"click\",function(){\n    $currentMember = $(this).data(\"member-name\");\n    $currentMemberId = $(this).data(\"member-id\");\n    $savings_account= $(this).data(\"savings-accounts\");\n    $loan_records = $(this).data(\"loan-records\");\n    $insurance_accounts = $(this).data(\"insurance-accounts\");\n    $equity_accounts = $(this).data(\"equity-accounts\");\n    $member_name.html($currentMember);\n    $modalSecond.show();\n  });\n\n  $btnConfirmSecondLetter.on(\"click\",function(){\n      var data = {\n      id: _id,\n      member_id: $currentMemberId,\n      savings_accounts: $savings_account,\n      loan_records: $loan_records,\n      insurance_accounts: $insurance_accounts,\n      equity_accounts: $equity_accounts,\n      as_of: $selectDate.val(),\n      authenticity_token: authenticityToken\n      }\n      console.log(data);\n      const dataStr = JSON.stringify(data);\n      console.log(dataStr);\n      $modalDetails.hide();\n      window.open(\"/print?data=\"+ encodeURIComponent(dataStr) + \"&type=print_second_share_capital_involuntary_letter\");\n  });\n\n\n  $btnPrintList.on(\"click\", function(){\n    var print_list_id = $btnPrintList.data('id');\n    console.log(print_list_id);\n    $modalPrintlist.show();\n    $printMessage.html(\n      Mustache.render(\n        loader,\n        {}\n      )\n    );\n\n    $modalPrintlist.hide();\n    window.open(\"/print?id=\" + print_list_id + \"&type=share_capital_involuntary_letter_list\");\n    \n  });\n\n\t$btnPrint.on(\"click\", function() {\n    $currentMember = $(this).data(\"member-name\");\n    $currentMemberId = $(this).data(\"member-id\");\n    $savings_account= $(this).data(\"savings-accounts\");\n    $loan_records = $(this).data(\"loan-records\");\n    $insurance_accounts = $(this).data(\"insurance-accounts\");\n    $equity_accounts = $(this).data(\"equity-accounts\");\n    $member_name.html($currentMember);\n    $modalDetails.show();\n\t});\n\n  $btnConfirm.on(\"click\", function() {\n   \n    var data = {\n      id: _id,\n      member_id: $currentMemberId,\n      savings_accounts: $savings_account,\n      loan_records: $loan_records,\n      insurance_accounts: $insurance_accounts,\n      equity_accounts: $equity_accounts,\n      authenticity_token: authenticityToken\n    }\n    const dataStr = JSON.stringify(data);\n    console.log(dataStr);\n    $modalDetails.hide();\n    window.open(\"/print?data=\"+ encodeURIComponent(dataStr) + \"&type=print_share_capital_involuntary_letter\");\n\n\n  })\n\n\n\n\n\n\n \n}\n\nvar init  = function(config) {\n  authenticityToken = config.authenticityToken;\n  _id = config.id;\n\n  _cacheDom();\n  _bindEvents();\n}\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\n\nvar authenticityToken;\n\nvar $btnNew;\nvar $modalNew;\nvar $selectBranch;\nvar $selectCenter;\nvar $btnConfirmNew;\nvar templateErrorList;\n\nvar _centers  = [];\n\nvar _urlCenters       = \"/api/v1/branches/fetch_centers\";\n\nvar _cacheDom = function() {\n  $btnNew\t    = $(\"#btn-new\");\n  $modalNew      = new bootstrap.Modal(\n    document.getElementById(\"modal-new\")\n\n  );\n  $btnConfirmNew    = $(\"#btn-confirm-new\");\n  $selectBranch     = $(\"#select-branch\");\n  $selectCenter     = $(\"#select-center\");\n  $message          = $(\".message\");\n  templateErrorList = $(\"#template-error-list\").html();\n}\n\nvar _loadCenterOptions  = function() {\n  $selectCenter.html(\"\");\n  if(_centers.length > 0) {\n    _centerId = _centers[0].id;\n\n    for(var i = 0; i < _centers.length; i++) {\n      $selectCenter.append(new Option(_centers[i].name, _centers[i].id));\n    }\n  }\n };\n\n\nvar _bindEvents = function() {\n  $btnNew.on(\"click\",function(){\n   $modalNew.show();\n  });\n  \n $btnConfirmNew.on(\"click\", function() {\n   var branchId = $selectBranch.val(); \n\n   $message.html(\"Loading...\");\n   $btnConfirmNew.prop(\"disabled\", true);\n   $selectBranch.prop(\"disabled\", true);\n\n   var data = {\n    branch_id: branchId,\n    authenticity_token: authenticityToken\n   }\n   \n    $.ajax({\n      url: \"/api/v1/billing_for_involuntary/create\",\n      method: 'POST',\n      data: data,\n      success: function (response) {\n        window.location.href=\"/billing_for_involuntary\";\n      },\n      error: function(response) {\n        errors = [];\n\n        try {\n          errors = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors.push(\"Something went wrong\");\n          console.log(response);\n        }\n\n        $message.html(\n          Mustache.render(\n            templateErrorList,\n            { errors: errors }\n          )\n        );\n\n      $btnConfirmNew.prop(\"disabled\", true);\n      $selectBranch.prop(\"disabled\", true);\n      $selectCenter.prop(\"disabled\", true);\n     }\n    });   \n });\n}\nvar init  = function(config) {\n  authenticityToken = config.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n}\n\nexport default { init: init };\n\n\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\n\nvar _authenticityToken;\nvar _id;\n\nvar $btnDelete;\nvar $btnConfirmDelete;\nvar $modalDelete;\n\nvar $btnApproved;\nvar $btnConfirmApproved;\nvar $modalApproved;\n\nvar $btnDetails;\nvar $modalDetails;\n\nvar $btnPrint;\nvar $modalPrint;\n\n\nvar $btnSaveParticularTransfer;\nvar $btnSaveParticularPayments;\nvar $inputParticularSavings;\nvar $inputParticularPayments;\n\n\nvar $btnAdd;\nvar _memberId;\nvar $selectMember;\n\nvar $btnPrintEntry;\n\nvar currentMember           = \"\";\nvar currentMemberId         = \"\";\nvar $message;\n  templateErrorList = $(\"#template-error-list\").html();\n\nvar _cacheDom = function() {\n  $btnAdd             = $(\"#btn-add\");\t\n  $selectMember       = $(\"#select-member\");\n\n  $btnSaveParticularTransfer = $(\"#btn-add-particular-trans\");\n  $inputParticularSavings = $(\"#particular-transfer-savings\");\n\n  $btnSaveParticularPayments = $(\"#btn-add-particular-lp\");\n  $inputParticularPayments = $(\"#particular-transfer-loan-payments\");\n\n  $btnApproved = $(\"#btn-approve\");\n  $btnConfirmApproved = $(\"#btn-confirm-approved\");\n  $modalApproved = new bootstrap.Modal(document.getElementById(\"modal-approve\"));\n  \n  $btnDelete = $(\".btn-delete\");\n  $modalDelete = new bootstrap.Modal(document.getElementById(\"modal-delete\"));\n  $btnConfirmDelete = $(\"#btn-confirm-delete\");\n  $btnPrintEntry         = $(\"#btn-print-entry\");\n\n  $btnPrint = $(\"#btn-print\");\n\n  $btnDetails = $(\".btn-details\");\n  $modalDetails = new bootstrap.Modal(document.getElementById(\"modal-view-details\"));\n\n  $message            = $(\".message\");\n  templateErrorList = $(\"#template-error-list\").html();\n\n  $modalPrint = new bootstrap.Modal(document.getElementById(\"modal-print\"));\n\n};\n\nvar _bindEvents = function() {\n  $btnPrintEntry.on(\"click\",function(){\n    var data_store = $btnPrintEntry.data('id');\n  \n    window.open(\"/print?id=\" + data_store + \"&type=print_entry_involuntary\");\n  });\n\n  $btnDelete.on(\"click\", function(){\n    $message.html(\"\");\n    currentMember           = $(this).data(\"member-name\");\n    currentMemberId         = $(this).data(\"member-id\");\n    \n    $modalDelete.show();\n  });\n  \n  $btnDetails.on(\"click\", function(){\n    $message.html(\"\");\n    currentMember           = $(this).data(\"member-name\");\n    currentMemberId         = $(this).data(\"member-id\");\n    $modalDetails.show();\n  });\n\n  $btnConfirmDelete.on(\"click\", function(){\n    $message.html(\"Loading......\")\n    $btnConfirmDelete.prop(\"disabled\",true)\n\n    var data = {\n      id: _id,\n      member_id: currentMemberId,\n      authenticity_token: _authenticityToken\n    }\n\n    $.ajax({\n      url: \"/api/v1/billing_for_involuntary/delete\",\n      method: \"POST\",\n      data: data,\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.reload();\n      },\n      error: function(response) {\n        console.log(response);\n        var errors  = [];\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n          $btnConfirmApproved.prop(\"disabled\", false);\n        }\n      }\n    });\n\n  });\n\n$btnPrint.on(\"click\", function(){\nvar data_store = $btnPrint.data('id');\n$modalPrint.show();\n$message.html(\"\");\n\n\nwindow.open(\"/print?id=\" + data_store + \"&type=print_involuntary_tagging\");\n });\n\n  $btnApproved.on(\"click\", function(){\n    $modalApproved.show();\n  });\n\n  $btnConfirmApproved.on(\"click\",function(){\n    var data = {\n      id: _id,\n      authenticity_token: _authenticityToken\n    }\n\n    $btnConfirmApproved.prop(\"disabled\", true);\n\n    $.ajax({\n      url: \"/api/v1/billing_for_involuntary/approve\",\n      data: data,\n      method: \"POST\",\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.href=\"/billing_for_involuntary\";\n      },\n      error: function(response) {\n        console.log(response);\n        var errors  = [];\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n          $btnConfirmApproved.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n\n  $btnSaveParticularPayments.on(\"click\",function(){\n    var input = $inputParticularPayments.val();\n    var data = {\n      id: _id,\n      particular: input,\n      authenticity_token: _authenticityToken\n    }\n    $inputParticularPayments.prop(\"disabled\",true);\n\n    $.ajax({\n      url: \"/api/v1/billing_for_involuntary/add_particular_to_loan_payments\",\n      data: data,\n      method: \"POST\",\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.reload();\n      },\n      error: function(response) {\n        var errors  = [];\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"]\n        } finally {\n          alert(errors);\n          $inputParticularPayments.prop(\"disabled\", false);\n        }\n      }\n\n    });\n\n  });\n\n\n  $btnSaveParticularTransfer.on(\"click\", function() {\n    var input = $inputParticularSavings.val();\n    var data = {\n      id: _id,\n      particular: input,\n      authenticity_token: _authenticityToken\n    }\n\n    $inputParticularSavings.prop(\"disabled\", true);\n\n    $.ajax({\n      url: \"/api/v1/billing_for_involuntary/add_particular_to_transfer_savings\",\n      data: data,\n      method: \"POST\",\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.reload();\n      },\n      error: function(response) {\n        var errors  = [];\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"]\n        } finally {\n          alert(errors);\n          $inputParticularSavings.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n\n  $btnAdd.on(\"click\", function() {\n    _memberId = $selectMember.val();\n    var data = {\n      id: _id,\n\t    member_id: _memberId,\n\t    authenticity_token: _authenticityToken\n    };  \n    $selectMember.prop(\"disabled\", true);\n \n    $.ajax({\n\t    url: \"/api/v1/billing_for_involuntary/add_member\",\n\t    method: 'POST',\n\t    data: data,\n\t    success: function(response) {\n        $message.html(\n          \"Success! Redirecting...\"\n        );\n        window.location.reload();\n      },\n\t    error: function(response) {\n        var errors  = [];\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"]\n\n        } finally {\n            alert(errors);\n          $selectMember.prop(\"disabled\", false);\n        }\n      }\n    });\t   \n  });\n\n\n}\n\n\nvar init  = function(options) {\n  _authenticityToken = options.authenticityToken;\n  _id                = options.id\n  _cacheDom();\n  _bindEvents();\n}\n\nexport default { init: init };\n\n\n\n\n\n\n", "import $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\nimport Mustache from \"mustache\";\n\nvar authenticityToken;\n\nvar $btnNew;\nvar $message;\nvar templateErrorList;\nvar $btnConfirmNew;\n\nvar _cacheDom = function() {\n  $modalNew = new bootstrap.Modal(\n    document.getElementById(\"modal-new\")\n  );\n\n  $btnNew           = $(\"#btn-new\");\n  $asOf\t\t    = $(\"#input-asof\")\n  $btnConfirmNew    = $(\"#btn-confirm-new\");\n \n  $message          = $(\".message\");\n  templateErrorList = $(\"#template-error-list\").html();\n}\n\nvar _bindEvents = function() {\n  $btnNew.on(\"click\", function() {\n    $modalNew.show();\n    $message.html(\"\"); \n  });\n\n  $btnConfirmNew.on(\"click\", function() {\n    var as_of = $asOf.val();\n    $message.html(\"Loading...\");\n    $asOf.prop(\"disabled\", true);\t  \n    $btnConfirmNew.prop(\"disabled\", true);\n\n    var data = {\n      as_of: as_of,\t    \n      authenticity_token: authenticityToken \n    }\n\n    $.ajax({\n      url: \"/api/v1/data_stores/allowance_computation_report/queue\",\n      method: 'POST',\n      data: data,\n      success: function(response) {\n\t$message.html( \n\t  \"Success! Redirecting...\"\n\t);\n\twindow.location.href=\"/data_stores/allowance_computation_report\";\n      },\n      error: function(response) {\n        errors = [];\n\n        try {\n          errors = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          console.log(response);\n          errors.push(\"Something went wrong\");\n        }\n\n        $message.html(\n          Mustache.render(\n            templateErrorList,\n            { errors: errors }\n          )\n        );\n\n        $asOf.prop(\"disabled\", false);\t  \n    \t$btnConfirmNew.prop(\"disabled\", false);\n      }\n    });\n  });\n\n}\nvar init  = function(config) {\n  authenticityToken = config.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n}\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport { func } from \"prop-types\";\nimport * as bootstrap from \"bootstrap\";\n\nvar $message;\nvar templateErrorList;\nvar _id;\nvar _authenticityToken;\nvar $btnNew;\nvar $btnConfirm;\nvar $modalNew;\nvar $regionTextbox;\nvar $regionid;\n\n\nvar _cacheDom = function() {\n    $btnNew = $(\"#btn-new\");\n    $btnUpdate = $(\".updateregion\")\n    $btnConfirm = $(\"#btn-confirm\");\n    $regionTextbox = $(\"#region-textbox\");\n    $regionid = $(\"#region-id\");\n    \n\n    $modalNew = new bootstrap.Modal(\n        document.getElementById('modal-new')\n    );\n};\n\nvar _bindEvents = function() {\n $btnNew.on(\"click\",function(){\n  $regionTextbox.val(\"\");\n  $regionid.val(\"\");\n \n    $modalNew.show();\n });\n\n $btnUpdate.on(\"click\",function(){\n    var _region_id = $(this).data(\"region-id\")\n    var _region_name = $(this).data(\"region-name\")\n    \n    $regionid.val(_region_id)\n    $regionTextbox.val(_region_name);\n    $modalNew.show();\n    $regionTextbox.focus()\n    \n });\n\n $btnConfirm.on(\"click\", function(){\n  var region   = $regionTextbox.val().trim();\n  var regionid = $regionid.val();\n\n  if (!region) {\n    showError($regionTextbox, \"Input the region name!\");\n    return;\n  }\n  \n  var data = {\n    region: region,\n    regionid: regionid,\n    authenticity_token: _authenticityToken\n  }\n\n  $.ajax({\n    url: \"/api/v1/administration/admin_address/create\",\n    method: 'POST',\n    data: data,\n    success: function(response) {   \n      alert(\"Successfuly Saved!\")\n     window.location.reload();       \n    },\n    error: function(response) {     \n      errors = [];\n      try {\n        errors = JSON.parse(response.responseText).full_messages;\n      } catch(err) {\n        errors.push(\"Something went wrong\");\n        console.log(response);          \n      }\n      $message.html(\n        Mustache.render(\n          templateErrorList,\n          { errors: errors }\n        )\n      );\n    } \n  });\n\n });\n\n};\n\nvar init = function(options) {\n  _id                 = options.id;\n  _authenticityToken  = options.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n};\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport { func } from \"prop-types\";\nimport * as bootstrap from \"bootstrap\";\n\nvar $message; \nvar templateErrorList;\nvar _id;\nvar _authenticityToken;\nvar $btnNew;\nvar $btnConfirm;\nvar $modalNew;\nvar $provinceTextbox;\nvar $provinceid;\nvar $regionSelect;\n\n\nvar _cacheDom = function() {\n    $btnNew = $(\"#btn-new\");\n    $btnConfirm = $(\"#btn-confirm\");\n    $provinceTextbox = $(\"#province-textbox\");\n    $provinceid = $(\"#province-id\");\n    $btnUpdate = $(\".updateregion\");\n    $regionSelect = $(\"#region-select\");\n\n    $modalNew = new bootstrap.Modal(\n        document.getElementById('modal-new')\n    );\n};\n\nvar _bindEvents = function() {\n $btnNew.on(\"click\",function(){\n  $provinceTextbox.val(\"\");\n  $provinceid.val(\"\");\n  $regionSelect.val(\"\");\n \n    $modalNew.show();\n });\n \n//  btnUpdate\n $(document).on(\"click\", \".updateprovince\",function(){\n    var _province_id = $(this).data(\"province-id\")\n    var _province_name = $(this).data(\"province-name\")\n    var _region_id = $(this).data(\"region-id\");\n\n    $provinceid.val(_province_id)\n    $provinceTextbox.val(_province_name);\n    $regionSelect.val(_region_id);\n\n    $modalNew.show();\n });\n\n\n $btnConfirm.on(\"click\", function(){\n  var provinceName = $provinceTextbox.val().trim();\n  var provinceId = $provinceid.val();\n  var regionId = $regionSelect.val();\n\n  if (!provinceName) {\n    showError($provinceTextbox, \"Input province name!\")\n    return;\n  }\n  if (!regionId) {\n    showError($regionSelect, \"Select region name!\")\n    return;\n  }\n\n  var data = {\n    province_name: provinceName,\n    provinceid: provinceId,\n    region_id: regionId,\n    authenticity_token: _authenticityToken\n    \n  }\n\n  console.log(\"Data sent to server:\", data); // Log the data object\n\n\n  $.ajax({\n    url: \"/api/v1/administration/admin_province/create\",\n    method: 'POST',\n    data: data,\n    success: function(response) {\n        alert(\"Successfuly Saved!\")\n        window.location.reload();\n    },\n    error: function(response) {\n        errors = [];\n        try {\n            errors = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n            errors.push(\"Something went wrong\");\n            console.log(response);\n        }\n        $message.html(\n          Mustache.render(\n            templateErrorList,\n              { errors: errors}\n          )\n        );\n    }\n  });\n\n });\n\n};\n\nvar init = function(options) {\n  _id                 = options.id;\n  _authenticityToken  = options.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n};\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport { func } from \"prop-types\";\nimport * as bootstrap from \"bootstrap\";\n\nvar $message;\nvar templateErrorList;\nvar _id;\nvar _authenticityToken;\nvar $btnNew;\nvar $btnConfirm;\nvar $modalNew;\nvar $municipalityTextbox;\nvar $municipalityid;\nvar $provinceSelect;\n\n\nvar _cacheDom = function() {\n    $btnNew = $(\"#btn-new\");\n    $btnUpdate = $(\".updateregion\")\n    $btnConfirm = $(\"#btn-confirm\");\n    $municipalityTextbox = $(\"#municipality-textbox\");\n    $municipalityid = $(\"#municipality-id\");\n    $provinceSelect = $(\"#province-select\");\n    \n\n    $modalNew = new bootstrap.Modal(\n        document.getElementById('modal-new')\n    );\n\n    // $modalUpdate = new bootstrap.Modal(\n    //   document.getElementById('modal-update')\n    // );\n};\n\nvar _bindEvents = function() {\n $btnNew.on(\"click\",function(){\n  $municipalityTextbox.val(\"\");\n  $municipalityid.val(\"\");\n  $provinceSelect.val(\"\");\n\n    $modalNew.show();\n });\n\n $btnUpdate.on(\"click\",function(){\n    var _municipality_id = $(this).data(\"municipality-id\")\n    var _municipality_name = $(this).data(\"municipality-name\")\n    var _province_id = $(this).data(\"province-id\")\n    \n    $municipalityid.val(_municipality_id)\n    $municipalityTextbox.val(_municipality_name);\n    $provinceSelect.val(_province_id);\n    \n    $modalNew.show();\n    \n  });\n\n $btnConfirm.on(\"click\", function(){\n  var municipality   = $municipalityTextbox.val().trim();\n  var municipalityid = $municipalityid.val();\n  var provinceId     = $provinceSelect.val();\n\n  if (!municipality) {\n    showError($municipalityTextbox, \"Input the municipality name!\");\n    return;\n  }\n  if (!provinceId) {\n    showError($provinceSelect, \"Select the province name!\");\n    return;\n  }\n\n  var data = {\n    municipality: municipality,\n    municipalityid: municipalityid,\n    province_id:  provinceId,\n    authenticity_token: _authenticityToken\n    \n  }\n\n  $.ajax({\n    url: \"/api/v1/administration/admin_municipality/create\",\n    method: 'POST',\n    data: data,\n    success: function(response) {   \n      alert(\"Successfuly Saved!\")\n     window.location.reload();       \n    },\n    error: function(response) {     \n      errors = [];\n      try {\n        errors = JSON.parse(response.responseText).full_messages;\n      } catch(err) {\n        errors.push(\"Something went wrong\");\n        console.log(response);          \n      }\n    //   $message.html(\n    //     Mustache.render(\n    //       templateErrorList,\n    //       { errors: errors }\n    //     )\n    //   );\n    } \n  });\n\n });\n\n};\n\nvar init = function(options) {\n  _id                 = options.id;\n  _authenticityToken  = options.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n};\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport { func } from \"prop-types\";\nimport * as bootstrap from \"bootstrap\";\n\nvar $message;\nvar templateErrorList;\nvar _id;\nvar _authenticityToken;\nvar $btnNew;\nvar $btnConfirm;\nvar $modalNew;\nvar $barangayTextbox;\nvar $barangayid;\nvar $municipalitySelect;\n\n\nvar _cacheDom = function() {\n    $btnNew = $(\"#btn-new\");\n    $btnUpdate = $(\".updatebarangay\")\n    $btnConfirm = $(\"#btn-confirm\");\n    $barangayTextbox = $(\"#barangay-textbox\");\n    $barangayid = $(\"#barangay-id\");\n    $municipalitySelect = $(\"#municipality-select\");\n    \n\n    $modalNew = new bootstrap.Modal(\n        document.getElementById('modal-new')\n    );\n\n    // $modalUpdate = new bootstrap.Modal(\n    //   document.getElementById('modal-update')\n    // );\n};\n\nvar _bindEvents = function() {\n $btnNew.on(\"click\",function(){\n  $barangayTextbox.val(\"\");\n  $barangayid.val(\"\");\n  $municipalitySelect.val();\n \n    $modalNew.show();\n });\n\n $btnUpdate.on(\"click\",function(){\n    var _barangay_id = $(this).data(\"barangay-id\")\n    var _barangay_name = $(this).data(\"barangay-name\")\n    var _municipality_id = $(this).data(\"municipality-id\")\n    \n    $barangayid.val(_barangay_id)\n    $barangayTextbox.val(_barangay_name);\n    $municipalitySelect.val(_municipality_id);\n    // console.log(\"Barangay:\" + _barangay_name);\n    $modalNew.show();\n    \n });\n\n $btnConfirm.on(\"click\", function(){\n  var barangay   = $barangayTextbox.val();\n  var barangayid = $barangayid.val();\n  var municipalityId = $municipalitySelect.val();\n\n  if (!barangay) {\n      showError($barangayTextbox, \"Input the barangay name!\");\n      return;\n  }\n\n  if (!municipalityId) {\n      showError($municipalitySelect, \"Select the municipality name!\");\n      return;\n  }\n  \n  var data = {\n    barangay: barangay,\n    barangayid: barangayid,\n    municipality_id: municipalityId,\n    authenticity_token: _authenticityToken\n  }\n\n  $.ajax({\n    url: \"/api/v1/administration/admin_barangay/create\",\n    method: 'POST',\n    data: data,\n    success: function(response) {   \n      alert(\"Successfuly Saved!\")\n     window.location.reload();       \n    },\n    error: function(response) {     \n      errors = [];\n      try {\n        errors = JSON.parse(response.responseText).full_messages;\n      } catch(err) {\n        errors.push(\"Something went wrong\");\n        console.log(response);          \n      }\n    //   $message.html(\n    //     Mustache.render(\n    //       templateErrorList,\n    //       { errors: errors }\n    //     )\n    //   );\n    } \n  });\n\n });\n\n};\n\nvar init = function(options) {\n  _id                 = options.id;\n  _authenticityToken  = options.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n};\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\n\nvar authenticityToken;\nvar $message;\nvar $btnNew;\nvar $btnConfirm;\nvar $selectBranch;\nvar $modalNew;\n\nvar _cacheDom = function() {\n    $message = $(\".message\");\n    $btnNew = $(\"#btn-new\");\n    $btnConfirm = $(\"#btn-confirm-new\");\n    $selectBranch = $(\"#branch-select\");\n    $modalNew = new bootstrap.Modal(document.getElementById(\"modal-new\"));\n};\n\nvar _bindEvents = function() {\n    $btnNew.on(\"click\", function() {\n        $modalNew.show();\n    });\n\n    $btnConfirm.on(\"click\", function() {\n        var branchh = $selectBranch.val();\n        var data = {\n            branch_id: branchh,\n            authenticity_token: authenticityToken\n            \n        };\n\n        $.ajax({\n            url: \"/api/v1/data_stores/written_off_report/generate\",\n            method: 'POST',\n            data: data,\n            success: function(response) {\n                window.location.reload();\n            },\n            error: function(response) {\n                let errors = [];\n                try {\n                    errors = JSON.parse(response.responseText).full_messages;\n                } catch (err) {\n                    errors.push(\"Something went wrong\");\n                    console.log(response);\n                }\n                $message.html(\n                    Mustache.render(\n                        templateErrorList,\n                        { errors: errors }\n                    )\n                );\n            }\n        });\n    });\n};\n\nvar init = function(config) {\n    authenticityToken = config.authenticityToken;\n    _cacheDom();\n    _bindEvents();\n};\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\n\nvar authenticityToken;\nvar $message;\n\n\nvar _cacheDom = function() {\n    // $search_name = $(\"#search-name\");\n    // $btnSearch = $(\"#search-button\");\n    $btnDelete = $(\"#btn-delete\");\n    $btnConfirmDelete = $(\"#btn-confirm-delete\");\n    $modalDelete = new bootstrap.Modal(document.getElementById(\"modal-delete\"));\n};\n\nvar _bindEvents = function() {\n    $btnDelete.on(\"click\", function() {\n        _id = $(this).data(\"id\");\n        $modalDelete.show();\n       \n    });\n\n    $btnConfirmDelete.on(\"click\", function(){\n        var id = _id\n        var data = {\n            data_store_id: id,\n            authenticity_token: authenticityToken\n        }\n\n        console.log(id);\n        $.ajax({\n            url: \"/api/v1/data_stores/written_off_report/delete\",\n            method: 'POST',\n            data: data,\n            success: function(response) {\n                window.location.href = \"/data_stores/written_off_report\";\n            },\n            error: function(response) {\n                let errors = [];\n                try {\n                    errors = JSON.parse(response.responseText).full_messages;\n                } catch (err) {\n                    errors.push(\"Something went wrong\");\n                    console.log(response);\n                }\n                $message.html(\n                    Mustache.render(\n                        templateErrorList,\n                        { errors: errors }\n                    )\n                );\n            }\n        });\n    });\n};\n\nvar init = function(config) {\n    authenticityToken = config.authenticityToken;\n    _cacheDom();\n    _bindEvents();\n};\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\n\nvar authenticityToken;\n\nvar $btnNew;\nvar $modalNew;\nvar $selectBranch;\nvar $selectCenter;\nvar $btnConfirmNew;\nvar templateErrorList;\n\nvar _centers  = [];\n\nvar _urlCenters       = \"/api/v1/branches/fetch_centers\";\n\nvar _cacheDom = function() {\n  $btnNew\t    = $(\"#btn-new\");\n  $modalNew      = new bootstrap.Modal(\n    document.getElementById(\"modal-new\")\n\n  );\n  $btnConfirmNew    = $(\"#btn-confirm-new\");\n  $selectBranch     = $(\"#select-branch\");\n  $selectCenter     = $(\"#select-center\");\n  $message          = $(\".message\");\n  templateErrorList = $(\"#template-error-list\").html();\n}\n\nvar _loadCenterOptions  = function() {\n  $selectCenter.html(\"\");\n  if(_centers.length > 0) {\n    _centerId = _centers[0].id;\n\n    for(var i = 0; i < _centers.length; i++) {\n      $selectCenter.append(new Option(_centers[i].name, _centers[i].id));\n    }\n  }\n };\n\n\nvar _bindEvents = function() {\n   $selectBranch.on(\"change\", function() {\n    $.ajax({\n      method: 'GET',\n      url: _urlCenters,\n      data: {\n        id: $selectBranch.val(),\n        with_members: true\n      },\n      success: function(response) {\n        _centers  = response.centers;\n\n        if(_centers.length > 0) {\n          _members  = _centers[0].members;\n        }\n\n        _loadCenterOptions();\n      },\n      error: function(response) {\n        console.log(response);\n        alert(\"Error in fetching centers\");\n      }\n    });\n  });\n    $selectCenter.on(\"change\", function() {\n        _centerId = $selectCenter.val();\n\n        _members  = _centers.find(c => c.id === _centerId).members;\n\n        $selectMember.html(\"\");\n        for(var i = 0; i < _members.length; i++) {\n        $selectMember.append(new Option(_members[i].full_name, _members[i].id));\n        }\n\n        if(_members.length > 0) {\n        _memberId = _members[i].id;\n\n        _fetchLoans();\n        }\n    });\n\n     \n $btnNew.on(\"click\", function() {\n    $modalNew.show();\n    $message.html(\"\");\n  });\n\n\n    $btnConfirmNew.on(\"click\", function() {\n    var branchId = $selectBranch.val(); \n    var centerId = $selectCenter.val(); \n\n    $message.html(\"Loading...\");\n    $btnConfirmNew.prop(\"disabled\", true);\n    $selectBranch.prop(\"disabled\", true);\n    $selectCenter.prop(\"disabled\", true);\n    console\n\n    var data = {\n        branch_id: branchId,\n        center_id: centerId,\n        authenticity_token: authenticityToken\n    }\n    console.log(data)\n\t \n    $.ajax({\n      url: \"/api/v1/involuntary_payment/create\",\n      method: 'POST',\n      data: data,\n      success: function(response) {\n\t      window.location.href=\"/involuntary_payment\";\n      },\n      error: function(response) {\n        errors = [];\n\n        try {\n          errors = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors.push(\"Something went wrong\");\n          console.log(response);\n        }\n\n        $message.html(\n          Mustache.render(\n            templateErrorList,\n            { errors: errors }\n          )\n        );\n\n   \t  $btnConfirmNew.prop(\"disabled\", true);\n   \t  $selectBranch.prop(\"disabled\", true);\n   \t  $selectCenter.prop(\"disabled\", true);\n     }\n    });   \n });\n\n}\nvar init  = function(config) {\n  authenticityToken = config.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n}\n\nexport default { init: init };\n\n\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\n\nvar _authenticityToken;\nvar _id;\n\nvar $btnAddBook;\nvar $inputBookType;\n\nvar $btnAdd;\nvar $btnApprove;\nvar $btnConfirmProcess; \nvar $UpdateAmount;\nvar $modalUpdate;\nvar $modalApproveTransaction;\nvar $btnAddParticular;\nvar $btnAddOR;\nvar $btnAddSI;\nvar $inputParticular;\nvar _urlAddParticular   = \"/api/v1/involuntary_payment/add_particular\";\nvar _urlAddBookType     = \"/api/v1/involuntary_payment/add_book_type\";\nvar _loanId;\nvar _memberId;\n\nvar $message;\nvar templateErrorList;\n\nvar _cacheDom = function() {\n  $modalUpdate = new bootstrap.Modal(\n    document.getElementById(\"modal-update-transaction\")\n  )\n\t\n  $modalApproveTransaction = new bootstrap.Modal(\n    document.getElementById(\"modal-approve-transaction\")\n  )\n  $btnAddBook             = $(\"#btn-add-book\");\n  $inputBookType          = $(\"#book_type\");\n\n  $btnAdd             = $(\"#btn-add\");\t\n  $btnConfirmAmount   = $(\"#btn-confirm-amount\")\n  $btnApprove         = $(\"#btn-approve\");\n  $btnConfirmProcess  = $(\"#btn-confirm-process\");\n  $selectMember       = $(\"#select-member\");\n  $UpdateAmount       = $(\".undo\");\n  $paymentAmount      = $(\"#paymentAmount\");\t\t\n  $memberName         = $(\"#memberName\");\n  $memberId           = $(\"#memberId\");\n  $loanType           = $(\"#loanType\");\n  $btnAddParticular   = $(\"#btn-add-particular\");\n  $inputParticular    = $(\"#particular\");\n  $inputSI            = $(\"#SI\");\n  $inputOR            = $(\"#inputOR\");\n  $btnAddOR           = $(\"#btn-add-or\");\n  $btnAddSI           = $(\"#btn-add-si\");\n  $message            = $(\".message\");\n};\n\nvar _bindEvents = function() {\n\n  $btnAddSI.on(\"click\", function() {\n    var txtSI = $inputSI.val()\n    \n    _id = $(this).data(\"id\");\n    var data = {\n      id: _id,\n      txtSI: txtSI,\n      authenticity_token: _authenticityToken\n    };  \n    $.ajax({\n\t    url: \"/api/v1/involuntary_payment/add_si\",\n\t    method: 'POST',\n\t    data: data,\n\t    success: function(response) {\n        $message.html(\n          \"Success! Redirecting...\"\n        );\n        window.location.reload();\n      },\n\t    error: function(response) {\n        var errors  = [];\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"]\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n          $selectMember.prop(\"disabled\", false);\n        }\n      }\n    });\t   \n  });\n\n\n  $btnAddOR.on(\"click\", function() {\n    var txtOR = $inputOR.val()\n    _id = $(this).data(\"id\");\n    \n    var data = {\n      id: _id,\n      txtOR: txtOR,\n      authenticity_token: _authenticityToken\n    };  \n    $.ajax({\n\t    url: \"/api/v1/involuntary_payment/add_or\",\n\t    method: 'POST',\n\t    data: data,\n\t    success: function(response) {\n        $message.html(\n          \"Success! Redirecting...\"\n        );\n        window.location.reload();\n      },\n\t    error: function(response) {\n        var errors  = [];\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"]\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n        }\n      }\n    });\t     \n  });\n\n  $btnAddBook.on(\"click\", function() {\n     var txtBookType = $inputBookType.val()   \n     _id = $(this).data(\"id\");    \n      $.ajax({      \n        url: _urlAddBookType,\n        method: \"POST\",\n        data: {\n        id: _id,\n        txtBookType:  txtBookType,\n        authenticity_token: _authenticityToken\n        },\n        success: function(response) {\n          $message.html(\"Success!\");\n          window.location.reload();\n        },\n        error: function(response) {\n          var errors  = [];\n\n          try {\n            errors  = JSON.parse(response.responseText).full_messages;\n          } catch(err) {\n            errors = [\"Something went wrong\"];\n          } finally {\n            $message.html(\n              Mustache.render(\n                templateErrorList,\n                { errors: errors }\n              )\n            );\n\n            $btnAddBook.prop(\"disabled\", false);\n          }\n        }\n      });\n \n  });\n\n  $btnAdd.on(\"click\", function() {\n    _memberId = $selectMember.val();\n    _id = $(this).data(\"id\");\t  \n    var data = {\n      id: _id,\n\t    member_id: _memberId,\n\t    authenticity_token: _authenticityToken\n    };  \n    $selectMember.prop(\"disabled\", true);\n \n    $.ajax({\n\t    url: \"/api/v1/involuntary_payment/add_member\",\n\t    method: 'POST',\n\t    data: data,\n\t    success: function(response) {\n        $message.html(\n          \"Success! Redirecting...\"\n        );\n        window.location.reload();\n      },\n\t    error: function(response) {\n        var errors  = [];\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"]\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n          $selectMember.prop(\"disabled\", false);\n        }\n      }\n    });\t   \n  });\n\n  $UpdateAmount.on(\"click\" , function() {\n    _loanId \t\t        = $(this).data(\"loan-id\")\n\t  var payment_amount  = $(this).data(\"payment-amount\")\n\t  var member_name\t\t  = $(this).data(\"member-name\")\n\t  var loan_type\t\t    = $(this).data(\"loan-type\")\n\t  var member_id\t\t    = $(this).data(\"member-id\")\n\t  $paymentAmount.val(payment_amount)\n\t  $memberName.text(member_name)\n\t  $loanType.text(loan_type)\n\t  $memberId.text(member_id)\n\t  $modalUpdate.show();\n  });\n   \n  $btnConfirmAmount.on(\"click\", function() {\n    _paymentAmount\t= $paymentAmount.val()\t     \n    _id \t\t        = $(this).data(\"id\");\t\n    _memberId\t      = $memberId.text()\n  \n    var data = {\n\t\t  id: _id,\n\t\t  member_name: $memberName.text(),\n\t\t  member_id: _memberId,   \n\t\t  loan_id: _loanId,   \n\t\t  payment_amount: _paymentAmount,\n\t\t  authenticity_token: _authenticityToken\n\t  };\n    $.ajax({\n      url: \"/api/v1/involuntary_payment/update_amount\",\n      method: 'POST',\n      data: data,\n      success: function(response) {\n\t      $message.html(\n          \"Success! Redirecting...\"\n        );  \n        window.location.reload();\n      },\n      error: function(response) {\n        errors = [];\n        alert(JSON.parse(response.responseText).full_messages)\n        try {\n          errors = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors.push(\"Something went wrong\");\n          console.log(response);\n        }\n        $message.html(\n          Mustache.render(   \n          )\n        );\n      }\n    }); \n  });\n\n  $btnApprove.on(\"click\", function() {\n    _id = $(this).data(\"id\");\n    $modalApproveTransaction.show();\n  });\n\n  $btnConfirmProcess.on(\"click\", function() {\n    var data = {\n      id: _id,\n      authenticity_token: _authenticityToken\n    };\n    $btnConfirmProcess.prop(\"disabled\", true);\n    $message.html(\"Loading...\");\n    console.log(data);\n    $.ajax({\n      url: \"/api/v1/involuntary_payment/approve\",\n      method: 'POST',\n      data: data,\n      success: function(response) {\n        $message.html(\"Success! Redirecting...\");\n        window.location.href=\"/involuntary_payment\";\n      },\n      error: function(response) {\n        console.log(response);\n        var errors  = [];\n        try {\n          errors  = JSON.parse(response.responseText).full_messages;\n        } catch(err) {\n          errors  = [\"Something went wrong\"];\n          console.log(err);\n        } finally {\n          console.log(errors);\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          $btnConfirmProcess.prop(\"disabled\", false);\n        }\n      }\n    });\n  });\n \n  $btnAddParticular.on(\"click\", function() {\n    var txtParticular = $inputParticular.val()\n      _id = $(this).data(\"id\");\t  \n      $.ajax({\t    \n        url: _urlAddParticular,\n        method: \"POST\",\n        data: {\n          id: _id,\n          txtParticular: txtParticular,\n          authenticity_token: _authenticityToken\n        },\n        success: function(response) {\n          $message.html(\"Success!\");\n          window.location.reload();\n        },\n        error: function(response) {\n          var errors  = [];\n          try {\n            errors  = JSON.parse(response.responseText).full_messages;\n          } catch(err) {\n            errors = [\"Something went wrong\"];\n          } finally {\n            $message.html(\n              Mustache.render(\n                templateErrorList,\n                { errors: errors }\n              )\n            );\n\n            $btnAddParticular.prop(\"disabled\", false);\n          }\n        }\n    });\n  });\n\n}\n\n\nvar init  = function(config) {\n  _authenticityToken = config.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n}\n\nexport default { init: init };\n\n\n\n\n\n\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\n\nvar $btnNewTransaction;\nvar $btnClick;\nvar $btnConfirmNewTransaction;\nvar $modalNewTransaction;\n\nvar $selectBranch;\nvar $inputCollectionDate;\n\nvar $message;\n\nvar templateErrorList;\n\nvar branches  = [];\n\nvar urlBranches                               = \"/api/v1/branches\";\nvar urlCreateInsuranceFundTransferCollection  = \"/api/v1/insurance_fund_transfer_collections\";\n\nvar _authenticityToken;\n\nvar _cacheDom = function() {\n  $btnClick                         = $(\"#btn-click\")\n  $selectBranch                     = $(\"#select-branch\");\n  $inputCollectionDate              = $(\"#input-collection-date\");\n  $message                          = $(\".message\");\n  templateErrorList                 = $(\"#template-error-list\").html();\n\n};\n\nvar _bindEvents = function() {\n  $btnClick.on(\"click\", function() {\n    console.log(\"click!\"); // Use console.log instead of alert.log\n  });\n\n};\n\nvar init  = function(config) {\n  _authenticityToken  = config.authenticityToken;\n\n  $.ajax({\n    url: urlBranches,\n    method: 'GET',\n    success: function(response) {\n      branches  = response.branches;\n    },\n    error: function(response) {\n      console.log(response);\n      alert(\"Error in fetching branches\");\n    }\n  });\n\n  _cacheDom();\n  _bindEvents();\n};\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from 'jquery';\nimport * as bootstrap from \"bootstrap\";\n\nvar $btnApprove;\nvar $btnConfirmApproved;\nvar $modalApprove;\n\nvar $btnDeclined;\nvar $btnDeclinedConfirm \nvar $modalDeclined;\nvar $btnButton;\n\nvar $message;\nvar templateErrorList;\n\nvar _id;\nvar _options;\nvar _authenticityToken;\n\nvar _urlApprove = \"/api/v1/api_receive_members/approve\";\n\nvar _cacheDom = function() {\n\n  $btnApprove               = $(\"#btn-approve\");\n  $btnDeclined              = $(\"#btn-declined\");\n  $btnConfirmApproved       = $(\"#btn-confirm-approved\")\n  $btnDeclinedConfirm       = $(\"#btn-confirm-declined\");\n  $btnButton                = $(\"#btn-button\");\n  $message                  = $(\".message\");\n\n  $modalApprove = new bootstrap.Modal(\n    document.getElementById(\"modal-approve\")\n  );\n\n  $modalDeclined = new bootstrap.Modal(\n    document.getElementById(\"modal-declined\")\n  );\n  \n};\n\nvar _bindEvents = function() {\n  $btnApprove.on(\"click\", function() {\n    $modalApprove.show();\n    $message.html(\"\");\n  });\n  \n  $btnDeclined.on(\"click\", function() {\n    $modalDeclined.show();\n    $message.html(\"\");\n  });\n  \n  $btnDeclinedConfirm.on(\"click\", function() {\n    console.log(\"cliked!\");\n  });\n\n    $btnDeclinedConfirm.on(\"click\", function() {\n    console.log(\"cliked!\");\n  });\n\n  $(document).on(\"click\", \"#btn-confirm-approved\", function() {\n    // $btnConfirmApprove.prop(\"disabled\", true);\n    var $button = $(this);  // the button \n    $button.prop(\"disabled\", true);  // to disable the declare button\n\n    var data  = {\n      id: _id,\n      authenticity_token: _authenticityToken\n    };\n\n    $message.html(\"Loading...\");\n\n    $.ajax({\n      url: _urlApprove,\n      method: 'POST',\n      data: data,\n      success: function(response) {\n        $message.html(\"Success! Reloading...\");\n        window.location.reload();\n      },\n      error: function(response) {\n        var errors = [];\n\n        try {\n          errors = JSON.parse(response.responseText).errors.full_messages;\n        } catch(err) {\n          errors.push(\"Something went wrong.\");\n        } finally {\n          $message.html(\n            Mustache.render(\n              templateErrorList,\n              { errors: errors }\n            )\n          );\n\n          // $btnConfirmApprove.prop(\"disabled\", false);\n          $button.prop(\"disabled\", true);\n        }\n      }\n    });\n  });\n};\n\nvar init = function(options) {\n  _options = options;\n  _id = _options.id;\n  _authenticityToken = _options.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n};\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\n\nvar _id;\nvar _authenticityToken;\nvar templateErrorList;\n\nvar $modalNew;\nvar $btnNew;\nvar $btnConfirm;\nvar $Selectbranch;\nvar $Selectdate;\nvar $btnCancel;\nvar $message;\n// var $modalApproveTransaction;\n\nvar _cacheDom = function() {\n    $btnNew       = $(\"#btn-new\");\n    $btnConfirm   = $(\"#btn-confirm\");\n    $btnCancel    = $(\".btn[data-bs-dismiss='modal']\");\n    $Selectbranch = $(\"#select-branch\");\n    $Selectdate   = $(\"#input-as-of\");\n    $message      = $(\".message\");\n\n    $modalNew = new bootstrap.Modal(\n        document.getElementById(\"modal-new\")\n    );\n    // $modalApproveTransaction = new bootstrap.Modal(\n    //     document.getElementById(\"modal-approve-transaction\")\n    // )\n}\n\nvar _bindEvents = function() {\n    $btnNew.on(\"click\", function(){\n        $Selectbranch.val(\"\"); \n        $Selectdate.val(\"\");   \n        $message.html(\"\");\n        $modalNew.show();\n        updateModalTitle(\"\");\n    });\n    \n    $Selectbranch.on(\"change\", function() {\n        var selectedBranch = $(this).find(\"option:selected\").text();\n\n        if (selectedBranch === \"-- SELECT --\") {\n            updateModalTitle(\"\");\n        } else {\n            updateModalTitle(selectedBranch);\n        }\n    });\n\n    $btnConfirm.on(\"click\", function(){\n        var branch  = $Selectbranch.val();\n        var date    = $Selectdate.val();\n\n        console.log(\"Branch selected:\", branch);\n        console.log(\"Date selected:\", date);\n\n        if (!branch) {\n            $message.html(\"Please select a branch.\");\n            $message.addClass(\"text-danger\");\n            console.error(\"No branch selected.\");\n            return;\n        }\n\n        if (!date) {\n            $message.html(\"Please select a date.\");\n            $message.addClass(\"text-danger\");\n            console.error(\"No date selected.\");\n            return;\n        }\n\n        $message.removeClass(\"text-danger\");\n        $message.html(\"Loading...\");\n        $btnConfirm.prop(\"disabled\", true);\n        \n        $.ajax({\n            url: \"/api/v1/data_stores/dormants/create\",\n            method: 'POST',\n            data: {\n                branch_id: branch,\n                as_of: date,\n                authenticity_token: _authenticityToken\n            },\n            success: function(response) {\n                alert(\"Successfully saved!\");\n                window.location.reload();\n            },\n            error: function(response) {\n                var errors = [];\n                try {\n                    errors = JSON.parse(response.responseText).messages;\n                } catch(err) {\n                    errors.push(\"Something went wrong\");\n                    console.log(response);\n                }\n                $message.html(\n                    Mustache.render(templateErrorList, { errors: errors })\n                );\n            }\n        });\n\n    });\n\n    $btnCancel.on(\"click\", function() {\n        $Selectbranch.val(\"\");\n        $Selectdate.val(\"\");\n        $message.html(\"\");\n        $message.removeClass(\"text-danger\");\n        $btnConfirm.prop(\"disabled\", false);\n        updateModalTitle(\"\");\n    });\n\n    function updateModalTitle(branchName) {\n        var title = branchName ? `Dormant Records for ${branchName}` : 'Dormant Records';\n        $(\".modal-title\").text(title);\n    }\n\n}\n\nvar init = function(options) {\n    _id                 = options.id;\n    _authenticityToken  = options.authenticityToken;\n\n    _cacheDom();\n    _bindEvents();\n};\n\n\nexport default { init: init };", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\n\nvar _authenticityToken;\nvar _id;\n\nvar $btnApprove;\nvar $modalApproveDormant;\nvar $btnConfirmProcess; \nvar $btnAddOR;\nvar $btnAddSI;\nvar $inputParticular;\nvar $btnAddParticular;\nvar _urlAddParticular   = \"/api/v1/data_stores/dormants/add_particular\";\nvar _urlAddBookType     = \"/api/v1/data_stores/dormants/add_book_type\";\n// var _urlDownload        = \"/data_stores/dormant/excel\";\n// var _urlDownload = \"/data_stores/dormant/\" + _id + \"/excel\";\n\nvar $btnAddBook;\nvar $inputBookType;\nvar $printMessage;\n\nvar $message;\nvar templateErrorList;\n\nvar loader;\n\nvar _cacheDom = function() {\n\t\n  $modalApproveDormant = new bootstrap.Modal(\n    document.getElementById(\"modal-approve-dormant\")\n  )\n\n  // $modalApproveTransaction = new bootstrap.Modal(\n  //   document.getElementById(\"modal-approve-transaction\")\n  // )\n\n  $btnApprove             = $(\"#btn-approve\");\n  $btnConfirmProcess      = $(\"#btn-confirm-process\");\n  $inputOR                = $(\"#inputOR\");\n  $btnAddOR               = $(\"#btn-add-or\");\n  $inputSI                = $(\"#SI\");\n  $btnAddSI               = $(\"#btn-add-si\");\n  $message                = $(\".message\");\n  $btnAddParticular       = $(\"#btn-add-particular\");\n  $inputParticular        = $(\"#particular\");\n  $btnAddBook             = $(\"#btn-add-book\");\n  $inputBookType          = $(\"#book_type\");\n  $btnPDF                 = $(\"#btn-print\");\n  $btnExcel               = $(\"#btn-excel\");\n  $modalPrint             = $(\"#modal-print\");\n  $printMessage           = $(\".print-message\");\n  templateErrorList       = $(\"#template-error-list\").html();\n  loader                  = $(\"#template-loader\").html();\n  \n};\n\nvar _bindEvents = function() {\n\n    $btnAddParticular.on(\"click\", function() {\n        var txtParticular = $inputParticular.val()\n          _id = $(this).data(\"id\");\t  \n          $.ajax({\t    \n            url: _urlAddParticular,\n            method: \"POST\",\n            data: {\n              id: _id,\n              txtParticular: txtParticular,\n              authenticity_token: _authenticityToken\n            },\n            success: function(response) {\n              $message.html(\"Success!\");\n              window.location.reload();\n            },\n            error: function(response) {\n              var errors  = [];\n              try {\n                errors  = JSON.parse(response.responseText).full_messages;\n              } catch(err) {\n                errors = [\"Something went wrong\"];\n              } finally {\n                $message.html(\n                  Mustache.render(\n                    templateErrorList,\n                    { errors: errors }\n                  )\n                );\n    \n                $btnAddParticular.prop(\"disabled\", false);\n              }\n            }\n        });\n      });\n\n    $btnAddOR.on(\"click\", function() {\n        var txtOR = $inputOR.val()\n        _id = $(this).data(\"id\");\n        \n        var data = {\n          id: _id,\n          txtOR: txtOR,\n          authenticity_token: _authenticityToken\n        };  \n        $.ajax({\n            url: \"/api/v1/data_stores/dormants/add_or\",\n            method: 'POST',\n            data: data,\n            success: function(response) {var _urlDownload = \"/data_stores/dormant/excel\";\n\n            window.location.reload();\n          },\n            error: function(response) {\n            var errors  = [];\n            try {\n              errors  = JSON.parse(response.responseText).full_messages;\n            } catch(err) {\n              errors  = [\"Something went wrong\"]\n            } finally {\n              $message.html(\n                Mustache.render(\n                  templateErrorList,\n                  { errors: errors }\n                )\n              );\n            }\n          }\n        });\t     \n      });\n\n    $btnAddSI.on(\"click\", function() {\n        var txtSI = $inputSI.val()\n        \n        _id = $(this).data(\"id\");\n        var data = {\n          id: _id,\n          txtSI: txtSI,\n          authenticity_token: _authenticityToken\n        };  \n        $.ajax({\n            url: \"/api/v1/data_stores/dormants/add_si\",\n            method: 'POST',\n            data: data,\n            success: function(response) {\n            $message.html(\n              \"Success! Redirecting...\"\n            );\n            window.location.reload();\n          },\n            error: function(response) {\n            var errors  = [];\n            try {\n              errors  = JSON.parse(response.responseText).full_messages;\n            } catch(err) {\n              errors  = [\"Something went wrong\"]\n            } finally {\n              $message.html(\n                Mustache.render(\n                  templateErrorList,\n                  { errors: errors }\n                )\n              );\n              $selectMember.prop(\"disabled\", false);\n            }\n          }\n        });\t   \n      });\n\n      $btnAddBook.on(\"click\", function() {\n        var txtBookType = $inputBookType.val()   \n        _id = $(this).data(\"id\");    \n         $.ajax({      \n           url: _urlAddBookType,\n           method: \"POST\",\n           data: {\n           id: _id,\n           txtBookType:  txtBookType,\n           authenticity_token: _authenticityToken\n           },\n           success: function(response) {\n             $message.html(\"Success!\");\n             window.location.reload();\n           },\n           error: function(response) {\n             var errors  = [];\n   \n             try {\n               errors  = JSON.parse(response.responseText).full_messages;\n             } catch(err) {\n               errors = [\"Something went wrong\"];\n             } finally {\n               $message.html(\n                 Mustache.render(\n                   templateErrorList,\n                   { errors: errors }\n                 )\n               );\n   \n               $btnAddBook.prop(\"disabled\", false);\n             }\n           }\n         });\n     });\n\n     $btnApprove.on(\"click\", function() {\n      _id = $(this).data(\"id\");\n      $modalApproveDormant.show();\n    });\n\n     $btnConfirmProcess.on(\"click\", function() {\n      var data = {\n        id: _id,\n        authenticity_token: _authenticityToken\n      };\n      $btnConfirmProcess.prop(\"disabled\", true);\n      $message.html(\"Loading...\");\n      console.log(data);\n      $.ajax({\n        url: \"/api/v1/data_stores/dormants/approve\",\n        method: 'POST',\n        data: data,\n        success: function(response) {\n          $message.html(\"Success! Redirecting...\");\n          window.location.href = \"/data_stores/dormant\";\n        },\n        error: function(response) {\n          console.log(response);\n          var errors  = [];\n          try {\n            errors  = JSON.parse(response.responseText).full_messages;\n          } catch(err) {\n            errors  = [\"Something went wrong\"];\n            console.log(err);\n          } finally {\n            console.log(errors);\n            $message.html(\n              Mustache.render(\n                templateErrorList,\n                { errors: errors }\n              )\n            );\n  \n            $btnConfirmProcess.prop(\"disabled\", false);\n          }\n        }\n      });\n    });\n    \n    $btnPDF.on(\"click\", function() {\n      var print_dormant = $btnPDF.data('id');\n  \n      $modalPrint.show();\n      $printMessage.html(\n        Mustache.render(\n          loader,\n          {}\n        )\n      );\n  \n      $modalPrint.hide();\n      window.open(\"/print?id=\" + print_dormant + \"&type=print_dormant\");\n    });\n\n    $btnExcel.on(\"click\", function () {\n      // var _urlDownload = \"/data_stores/dormant/\" + _id + \"/excel\";\n\n      _id = $(this).data(\"id\");\t\n      if (!_id) {\n        console.error(\"Missing ID for Excel download\");\n        $message.html(\"Error: Missing ID.\");\n        return;\n      }else{\n        console.log(_id);\n      }\n      \n      $.ajax({\n        url: \"/data_stores/dormant/\" + _id + \"/excel\",  // Update this URL\n        method: \"GET\",\n        data: {\n          id: _id,\n          authenticity_token: _authenticityToken,\n        },\n        dataType: \"json\",\n        success: function (response) {\n          // console.log(url);\n          console.log(response);\n          window.open(response.download_url, \"_blank\");\n        },\n        error: function (response) {\n          $message.html(\"Error downloading Excel.\");\n        },\n      });\n      \n    });\n    \n\n};\n\n\nvar init  = function(options) {\n  _id                = options.id;\n  _authenticityToken = options.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n}\n\nexport default { init: init };", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\n\nvar _id;\nvar _authenticityToken;\nvar templateErrorList;\nvar $modalNew;\nvar $btnNew;\nvar $btnConfirm;\nvar $Selectdate;\nvar $holidayTextbox;\nvar $holidayid;\nvar $message;\n\nvar _cacheDom = function() {\n    $btnNew         = $(\"#btn-new\");\n    $btnConfirm     = $(\"#btn-confirm\");\n    $Selectdate     = $(\"#input-as-of\");\n    $holidayTextbox = $(\"#holiday-textbox\")\n    $holidayid      = $(\"#holiday-id\")\n    $btnUpdate      = $(\"update-button\");\n    $message        = $(\".message\");\n\n    $modalNew = new bootstrap.Modal(\n        document.getElementById(\"modal-new\")\n    );\n}\n\nvar _bindEvents = function() {\n    $btnNew.on(\"click\", function(){\n        $message.html(\"\");\n        $Selectdate.val(\"\");\n        $holidayTextbox.val(\"\");\n        $holidayid.val(\"\");\n        $modalNew.show();\n    });\n\n    // btnUpdate\n    $(document).on(\"click\", \".update-button\", function () {\n        var _holidayId = $(this).data(\"holiday-id\");\n        var _holidayName = $(this).data(\"holiday-name\");\n        var _holidayDate = $(this).data(\"holiday-date\");\n        var _holidayStatus = $(this).data(\"holiday-status\");\n\n        // Pre-fill modal with holiday data\n        $holidayid.val(_holidayId);\n        $holidayTextbox.val(_holidayName);\n        $Selectdate.val(_holidayDate);\n\n        $modalNew.show();\n    });\n\n    $btnConfirm.on(\"click\", function(){\n        var holidayTextbox  = $holidayTextbox.val().trim();\n        var selectDate      = $Selectdate.val();\n        var holidayId       = $holidayid.val();\n\n        // Clear previous message\n        $message.html(\"\");\n        $message.removeClass(\"text-danger\"); // Remove any previous error class\n\n        // Validation checks\n        var messages = {\n            both: \"Please provide fields.\",\n            holiday: \"Please provide the holiday name.\",\n            date: \"Please select a date.\"\n        };\n\n        var missingField = !holidayTextbox && !selectDate ? \"both\" : !holidayTextbox ? \"holiday\" : !selectDate ? \"date\" : null;\n\n        if (missingField) {\n            $message.html(messages[missingField]);\n            $message.addClass(\"text-danger\");\n            return;\n        }\n\n        var data = {\n            holiday_name: holidayTextbox,\n            holiday_date: selectDate,\n            status: \"active\",\n            authenticity_token: _authenticityToken\n        };\n\n        if (holidayId) {\n            data.id = holidayId; \n            $.ajax({\n                url: \"/api/v1/data_stores/holiday_records/update\",\n                method: 'PUT',\n                data: data,\n                success: function(response) {\n                    alert(\"Successfully updated!\");\n                    window.location.reload();\n                },\n                error: function(response) {\n                    var errors = [];\n                    try {\n                        errors = JSON.parse(response.responseText).messages;\n                    } catch(err) {\n                        errors.push(\"Something went wrong\");\n                        console.log(response);\n                    }\n                    $message.html(\n                        Mustache.render(templateErrorList, { errors: errors })\n                    );\n                }\n            });\n        } else {\n            // If no holidayId, create a new holiday record (POST)\n            $.ajax({\n                url: \"/api/v1/data_stores/holiday_records/create\",\n                method: 'POST',\n                data: data,\n                success: function(response) {\n                    alert(\"Successfully created!\");\n                    window.location.reload();\n                },\n                error: function(response) {\n                    var errors = [];\n                    try {\n                        errors = JSON.parse(response.responseText).messages;\n                    } catch(err) {\n                        errors.push(\"Something went wrong\");\n                        console.log(response);\n                    }\n                    $message.html(\n                        Mustache.render(templateErrorList, { errors: errors })\n                    );\n                }\n            });\n        }\n    });\n\n    // Delete button event\n    $(document).on(\"click\", \".delete-button\", function() {\n        var holidayId = $(this).data(\"holiday-id\");\n\n        // Clear previous messages\n        $message.html(\"\");\n        $message.removeClass(\"text-danger\");\n\n        // Confirm before deletion\n        if (confirm(\"Are you sure you want to delete this holiday record?\")) {\n            $.ajax({\n                url: \"/api/v1/data_stores/holiday_records/delete\",\n                method: \"POST\",\n                data: {\n                    holiday_id: holidayId,\n                    authenticity_token: _authenticityToken\n                },\n                success: function(response) {\n                    alert(\"Holiday record successfully deleted!\");\n                    window.location.reload(); // Refresh the page to reflect changes\n                },\n                error: function(response) {\n                    var errors = [];\n                    try {\n                        errors = JSON.parse(response.responseText).messages;\n                    } catch (err) {\n                        errors.push(\"Something went wrong\");\n                        console.log(response);\n                    }\n                    $message.html(\n                        Mustache.render(templateErrorList, { errors: errors })\n                    );\n                }\n            });\n        }\n    });\n}\n\nvar init = function(options) {\n    _id                 = options.id;\n    _authenticityToken  = options.authenticityToken;\n\n    _cacheDom();\n    _bindEvents();\n};\n\n\nexport default { init: init };", "import $ from \"jquery\";\n\nvar $btnExcel;\nvar $CollectionDateFrom;\nvar CollectionDateTo;\nvar status;\nvar $branchSelect;\n\nvar _cacheDom = function() {\n  $btnExcel          = $(\"#btn-excel\");\n  $branchSelect      = $(\"#branch-select\");\n  $CollectionDateFrom  = $(\"#collection-date-from\");\n  CollectionDateTo    = $(\"#collection-date-to\");\n  $status            = $(\"#status\");\n}\n\nvar encodeQueryData = function(data) {\n  var ret = []\n  for(var d in data) {\n    ret.push(encodeURIComponent(d) + \"=\" + encodeURIComponent(data[d]));\n  }\n\n  return ret.join(\"&\");\n};\n\nvar _bindEvents = function() {\n  $btnExcel.on('click', function() {\n    var data = {\n      branch_id: $branchSelect.val(),\n      collection_date_from: $CollectionDateFrom.val(),\n      collection_date_to: CollectionDateTo.val(),\n      status: $status.val()\n    };\n\n    window.location = \"/reports/billing_lapsed_member_reports_excel?\" + encodeQueryData(data);\n  });    \n};\n\nvar init = function() {\n  _cacheDom();\n  _bindEvents();\n};\n\nexport default { init: init };\n", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\n\nvar _id;\nvar _authenticityToken;\nvar templateErrorList;\n\nvar $modalNew;\nvar $btnNew;\nvar $btnConfirm;\n// var $Selectbranch;\nvar $SelectMonth;\nvar $SelectYear;\nvar $SelectStatus;\nvar $txtBoardResolution;\nvar $btnCancel;\nvar $message;\n\nvar _cacheDom = function() {\n    $btnNew       = $(\"#btn-new\");\n    $btnConfirm   = $(\"#btn-confirm\");\n    $btnCancel    = $(\".btn[data-bs-dismiss='modal']\");\n    // $Selectbranch = $(\"#select-branch\");\n    $SelectMonth  = $(\"#select-month\");\n    $SelectYear   = $(\"#select-year\");\n    $SelectStatus = $(\"#select-status\");\n    $txtBoardResolution = $(\"#input-board-resolution-number\")\n    $message      = $(\".message\");\n\n    $modalNew = new bootstrap.Modal(\n        document.getElementById(\"modal-new\")\n    );\n}\n\nvar _bindEvents = function() {\n    $btnNew.on(\"click\", function(){\n        // $Selectbranch.val(\"\"); \n        $message.html(\"\");\n        $SelectMonth.val(\"\");\n        $SelectYear.val(\"\");\n        $SelectStatus.val(\"\");\n        $txtBoardResolution.val(\"\");\n        $modalNew.show();\n        updateModalTitle(\"\");\n    });\n    \n    // $Selectbranch.on(\"change\", function() {\n    //     var selectedBranch = $(this).find(\"option:selected\").text();\n\n    //     if (selectedBranch === \"-- SELECT --\") {\n    //         updateModalTitle(\"\");\n    //     } else {\n    //         updateModalTitle(selectedBranch);\n    //     }\n    // });\n\n    $btnConfirm.on(\"click\", function(){\n        // var branch  = $Selectbranch.val();\n        var month  = $SelectMonth.val();\n        var year   = $SelectYear.val();\n        var status = $SelectStatus.val();\n        var boardResolutionNumber = $txtBoardResolution.val();\n\n         // Array to map month numbers to month names (1-based index)\n         var monthNames = [\n            \"JANUARY\", \"FEBRUARY\", \"MARCH\", \"APRIL\", \"MAY\", \"JUNE\", \n            \"JULY\", \"AUGUST\", \"SEPTEMBER\", \"OCTOBER\", \"NOVEMBER\", \"DECEMBER\"\n        ];\n\n        var monthName = (month && month >= 1 && month <= 12) ? monthNames[month - 1] : null;\n        var yearString = (year) ? year.toString() : null;\n\n        // if (!branch || branch == \"-- SELECT --\") {\n        //     $message.html(\"Please select a branch.\");\n        //     $message.addClass(\"text-danger\");\n        //     console.error(\"No branch selected.\");\n        //     return;\n        // }\n\n        if (!month || !year) {\n            $message.html(\"Please select both month and year.\");\n            $message.addClass(\"text-danger\");\n            console.error(\"No month or year selected.\");\n            return;\n        }\n\n        if (!status) {\n            $message.html(\"Please select a status.\");\n            $message.addClass(\"text-danger\");\n            console.error(\"No status selected.\");\n            return;\n        }\n\n        if (!boardResolutionNumber) {\n            $message.html(\"Please provide a board resolution number.\");\n            $message.addClass(\"text-danger\");\n            console.error(\"No board resolution number provided.\");\n            return;\n        }\n\n        $message.removeClass(\"text-danger\");\n        $message.html(\"Loading...\");\n        $btnConfirm.prop(\"disabled\", false);\n        \n        $.ajax({\n            url: \"/api/v1/data_stores/board_resolution/create\",\n            method: 'POST',\n            data: {\n                // branch_id: branch,\n                month: monthName,\n                year: yearString,\n                member_status: status,\n                board_resolution_number: boardResolutionNumber,\n                authenticity_token: _authenticityToken\n            },\n            success: function(response) {\n                alert(\"Successfully saved!\");\n                $modalNew.hide();\n                window.location.reload();\n            },\n            error: function(response) {\n                // Validate create for duplicate board resolution number.\n                var templateErrorList = `<ul>{{#errors}}<li>{{.}}</li>{{/errors}}</ul>`;\n                var errors = [];\n                try {\n                    var errorData = JSON.parse(response.responseText);\n                    errors = Array.isArray(errorData.messages) ? \n                            errorData.messages.map(err => err.message) : \n                            [errorData.messages || \"An unexpected error occurred.\"];\n                } catch {\n                    errors.push(\"Something went wrong. Please try again.\");\n                    console.log(response);\n                }\n                $btnConfirm.prop(\"disabled\", false);\n                $message.html(Mustache.render(templateErrorList, { errors })).addClass(\"text-danger\");\n            }\n        });\n\n    });\n\n    $btnCancel.on(\"click\", function() {\n        // $Selectbranch.val(\"\");\n        $SelectMonth.val(\"\");\n        $SelectYear.val(\"\");\n        $SelectStatus.val(\"\"); \n        $(\"#board-resolution-number\").val(\"\"); \n        $message.html(\"\");\n        $message.removeClass(\"text-danger\");\n        $btnConfirm.prop(\"disabled\", false);\n        updateModalTitle(\"\");\n    });\n\n    // function updateModalTitle(branchName) {\n    //     var title = branchName ? `Board Resolution Records for ${branchName}` : 'Board Resolution Records';\n    //     $(\".modal-title\").text(title);\n    // }\n\n}\n\nvar init = function(options) {\n    _id                 = options.id;\n    _authenticityToken  = options.authenticityToken;\n\n    _cacheDom();\n    _bindEvents();\n};\n\n\nexport default { init: init };", "import Mustache from \"mustache\";\nimport $ from \"jquery\";\nimport * as bootstrap from \"bootstrap\";\n\nvar _authenticityToken;\nvar _id;\nvar $btnApprove;\nvar $modalApproveBoardResolution;\nvar $btnConfirmProcess; \nvar $printMessage;\n\nvar $message;\nvar templateErrorList;\n\nvar loader;\n\nvar _cacheDom = function() {\n\t\n  $modalApproveBoardResolution = new bootstrap.Modal(\n    document.getElementById(\"modal-approve-board-resolution\")\n  )\n\n  $btnApprove             = $(\"#btn-approve\");\n  $btnConfirmProcess      = $(\"#btn-confirm-process\");\n  $message                = $(\".message\");\n  $printMessage           = $(\".print-message\");\n  templateErrorList       = $(\"#template-error-list\").html();\n  loader                  = $(\"#template-loader\").html();\n  \n};\n\nvar _bindEvents = function() {\n\n     $btnApprove.on(\"click\", function() {\n      _id = $(this).data(\"id\");\n      $modalApproveBoardResolution.show();\n    });\n\n     $btnConfirmProcess.on(\"click\", function() {\n      var data = {\n        id: _id,\n        authenticity_token: _authenticityToken\n      };\n      $btnConfirmProcess.prop(\"disabled\", true);\n      $message.html(\"Loading...\");\n      console.log(data);\n      $.ajax({\n        url: \"/api/v1/data_stores/board_resolution/approve\",\n        method: 'POST',\n        data: data,\n        success: function(response) {\n          $message.html(\"Success! Redirecting...\");\n          window.location.href = \"/data_stores/board_resolution\";\n        },\n        error: function(response) {\n          console.log(response);\n          var errors  = [];\n          try {\n            errors  = JSON.parse(response.responseText).full_messages;\n          } catch(err) {\n            errors  = [\"Something went wrong\"];\n            console.log(err);\n          } finally {\n            console.log(errors);\n            $message.html(\n              Mustache.render(\n                templateErrorList,\n                { errors: errors }\n              )\n            );\n  \n            $btnConfirmProcess.prop(\"disabled\", false);\n          }\n        }\n      });\n    });\n\n};\n\n\nvar init  = function(options) {\n  _id                = options.id;\n  _authenticityToken = options.authenticityToken;\n\n  _cacheDom();\n  _bindEvents();\n}\n\nexport default { init: init };", "// app/javascript/models/UploadLoansIndex.js\n\nimport * as bootstrap from \"bootstrap\";\n\n// \u2500\u2500 DOM References \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nvar $btnOpenUploadModal;\nvar $loanFileInput;\nvar $dropZone;\nvar $btnClearFile;\nvar $fileSelectedInfo;\nvar $fileNameDisplay;\nvar $fileSizeDisplay;\nvar $btnPreview;\nvar $btnToAmort;\nvar $btnToConfirm;\nvar $btnSave;\nvar $btnBack;\nvar $uploadSpinner;\nvar $previewAlert;\nvar $previewAlertList;\nvar $previewTableTbody;\nvar $amortSettingsTbody;\nvar $amortDetailPanel;\nvar $amortPanelHeading;\nvar $amortDetailTbody;\nvar $btnSaveAmortDetail;\nvar $btnResetAmortDetail;\nvar $btnCloseAmortPanel;\nvar $globalFirstPayment;\nvar $globalTermOverride;\nvar $confirmTotal;\nvar $confirmValid;\nvar $confirmCustomAmort;\nvar $confirmTableTbody;\nvar $uploadModal;\nvar $resultModal;\nvar $resultModalTitle;\nvar $resultSuccess;\nvar $resultSuccessMsg;\nvar $resultError;\nvar $resultErrorTbody;\nvar $btnUploadMore;\nvar $btnDownloadTemplate;\nvar $uploadLoansTbody;\nvar $uploadLoansEmptyRow;\n\n// \u2500\u2500 State \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nvar state = {\n  step:               1,\n  file:               null,\n  previewLoans:       [],\n  amortOverrides:     {},\n  globalFirstPayment: null,\n  globalTerm:         null,\n  editingRow:         null\n};\n\n// \u2500\u2500 Helpers \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nvar csrfToken = function() {\n  var meta = document.querySelector('meta[name=\"csrf-token\"]');\n  return meta ? meta.content : \"\";\n};\n\nvar currency = function(val) {\n  var n = parseFloat(val);\n  return isNaN(n) ? \"\u2014\" : n.toLocaleString(\"en-PH\", { minimumFractionDigits: 2, maximumFractionDigits: 2 });\n};\n\nvar formatBytes = function(b) {\n  if (b < 1024)    return b + \" B\";\n  if (b < 1048576) return (b / 1024).toFixed(1) + \" KB\";\n  return (b / 1048576).toFixed(1) + \" MB\";\n};\n\nvar estimateMaturity = function(startDate, n, term) {\n  if (!startDate || !n) return \"\u2014\";\n  var d = new Date(startDate);\n  n = parseInt(n) - 1;\n  if (term === \"weekly\")            d.setDate(d.getDate() + 7 * n);\n  else if (term === \"monthly\")      d.setMonth(d.getMonth() + n);\n  else if (term === \"semi-monthly\") d.setDate(d.getDate() + 15 * n);\n  return d.toISOString().slice(0, 10);\n};\n\nvar computeSchedule = function(principal, mir, n, term, startDate) {\n  principal = parseFloat(principal) || 0;\n  mir       = parseFloat(mir) || 0.013;\n  n         = parseInt(n) || 0;\n  if (n <= 0 || principal <= 0) return [];\n\n  var perPrincipal = +(principal / n).toFixed(2);\n  var perInterest  = +(principal * mir).toFixed(2);\n  var amountDue    = +(perPrincipal + perInterest).toFixed(2);\n  var schedule     = [];\n  var cur          = startDate ? new Date(startDate) : null;\n\n  for (var i = 0; i < n; i++) {\n    var dueDate = null;\n    if (cur) {\n      dueDate = cur.toISOString().slice(0, 10);\n      var next = new Date(cur);\n      if (term === \"weekly\")            next.setDate(next.getDate() + 7);\n      else if (term === \"monthly\")      next.setMonth(next.getMonth() + 1);\n      else if (term === \"semi-monthly\") next.setDate(next.getDate() + 15);\n      cur = next;\n    }\n    schedule.push({ installment: i + 1, due_date: dueDate, principal: perPrincipal, interest: perInterest, amount_due: amountDue });\n  }\n  return schedule;\n};\n\n// \u2500\u2500 DOM Cache \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nvar _cacheDom = function() {\n  $btnOpenUploadModal  = document.getElementById(\"btn-open-upload-modal\");\n  $loanFileInput       = document.getElementById(\"loan-file-input\");\n  $dropZone            = document.getElementById(\"upload-dropzone\");\n  $btnClearFile        = document.getElementById(\"btn-clear-file\");\n  $fileSelectedInfo    = document.getElementById(\"file-selected-info\");\n  $fileNameDisplay     = document.getElementById(\"file-name-display\");\n  $fileSizeDisplay     = document.getElementById(\"file-size-display\");\n  $btnPreview          = document.getElementById(\"btn-preview\");\n  $btnToAmort          = document.getElementById(\"btn-to-amort\");\n  $btnToConfirm        = document.getElementById(\"btn-to-confirm\");\n  $btnSave             = document.getElementById(\"btn-save-upload\");\n  $btnBack             = document.getElementById(\"btn-step-back\");\n  $uploadSpinner       = document.getElementById(\"upload-spinner\");\n  $previewAlert        = document.getElementById(\"preview-alert\");\n  $previewAlertList    = document.getElementById(\"preview-alert-list\");\n  $previewTableTbody   = document.getElementById(\"preview-table-tbody\");\n  $amortSettingsTbody  = document.getElementById(\"amort-settings-tbody\");\n  $amortDetailPanel    = document.getElementById(\"amort-detail-panel\");\n  $amortPanelHeading   = document.getElementById(\"amort-panel-heading\");\n  $amortDetailTbody    = document.getElementById(\"amort-detail-tbody\");\n  $btnSaveAmortDetail  = document.getElementById(\"btn-save-amort-detail\");\n  $btnResetAmortDetail = document.getElementById(\"btn-reset-amort-detail\");\n  $btnCloseAmortPanel  = document.getElementById(\"btn-close-amort-panel\");\n  $globalFirstPayment  = document.getElementById(\"global-first-payment\");\n  $globalTermOverride  = document.getElementById(\"global-term-override\");\n  $confirmTotal        = document.getElementById(\"confirm-total\");\n  $confirmValid        = document.getElementById(\"confirm-valid\");\n  $confirmCustomAmort  = document.getElementById(\"confirm-custom-amort\");\n  $confirmTableTbody   = document.getElementById(\"confirm-table-tbody\");\n  $uploadModal         = document.getElementById(\"upload-modal\");\n  $resultModal         = document.getElementById(\"result-modal\");\n  $resultModalTitle    = document.getElementById(\"result-modal-title\");\n  $resultSuccess       = document.getElementById(\"result-success\");\n  $resultSuccessMsg    = document.getElementById(\"result-success-msg\");\n  $resultError         = document.getElementById(\"result-error\");\n  $resultErrorTbody    = document.getElementById(\"result-error-tbody\");\n  $btnUploadMore       = document.getElementById(\"btn-upload-more\");\n  $btnDownloadTemplate = document.getElementById(\"btn-download-template\");\n  $uploadLoansTbody    = document.getElementById(\"upload-loans-tbody\");\n  $uploadLoansEmptyRow = document.getElementById(\"upload-loans-empty-row\");\n};\n\n// \u2500\u2500 Step Management \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nvar _goToStep = function(n) {\n  [1, 2, 3, 4].forEach(function(i) {\n    var content   = document.getElementById(\"upload-step-\" + i);\n    var indicator = document.getElementById(\"step-ind-\" + i);\n    if (content) content.classList.toggle(\"d-none\", i !== n);\n    if (indicator) {\n      var circle = indicator.querySelector(\"div:first-child\");\n      var label  = indicator.querySelector(\"div:last-child\");\n      if (i === n) {\n        // Active step \u2014 orange\n        circle.style.background = \"#c45200\"; circle.style.color = \"#fff\";\n        circle.innerHTML = i;\n        label.style.color = \"#c45200\"; label.style.fontWeight = \"700\";\n      } else if (i < n) {\n        // Completed step \u2014 green with checkmark\n        circle.style.background = \"#16a34a\"; circle.style.color = \"#fff\";\n        circle.innerHTML = \"<i class='fa fa-check' style='font-size:11px;'></i>\";\n        label.style.color = \"#16a34a\"; label.style.fontWeight = \"700\";\n      } else {\n        // Future step \u2014 muted\n        circle.style.background = \"#fde0c0\"; circle.style.color = \"#c48060\";\n        circle.innerHTML = i;\n        label.style.color = \"#c48060\"; label.style.fontWeight = \"500\";\n      }\n    }\n  });\n\n  // Update connector lines\n  var lines = document.querySelectorAll(\".flex-grow-1.mx-2\");\n  lines.forEach(function(line, idx) {\n    line.style.background = (idx < n - 1) ? \"#16a34a\" : \"#fde0c0\";\n    line.style.height = \"2px\";\n    line.style.transition = \"background .3s\";\n  });\n\n  state.step = n;\n\n  $btnPreview.classList.toggle(\"d-none\",   n !== 1);\n  $btnToAmort.classList.toggle(\"d-none\",   n !== 2);\n  $btnToConfirm.classList.toggle(\"d-none\", n !== 3);\n  $btnSave.classList.toggle(\"d-none\",      n !== 4);\n  $btnBack.classList.toggle(\"d-none\",      n === 1);\n};\n\n// \u2500\u2500 File Handling \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nvar _handleFileSelect = function(file) {\n  if (!file) return;\n  var ext     = file.name.toLowerCase().slice(file.name.lastIndexOf(\".\"));\n  var allowed = [\".csv\", \".xlsx\", \".xls\"];\n  if (allowed.indexOf(ext) === -1) {\n    alert(\"Invalid file type. Please upload CSV or Excel (.xlsx, .xls).\");\n    return;\n  }\n  state.file = file;\n  $fileSelectedInfo.classList.remove(\"d-none\");\n  $fileNameDisplay.textContent = file.name;\n  $fileSizeDisplay.textContent = formatBytes(file.size);\n  $btnPreview.disabled = false;\n};\n\nvar _clearFile = function() {\n  state.file = null;\n  $loanFileInput.value = \"\";\n  $fileSelectedInfo.classList.add(\"d-none\");\n  $btnPreview.disabled = true;\n};\n\n// \u2500\u2500 Step 1 - 2: Preview \nvar _doPreview = function() {\n  if (!state.file) return;\n  $btnPreview.disabled = true;\n  $btnPreview.innerHTML = '<span class=\"spinner-border spinner-border-sm me-1\"></span>Processing...';\n\n  var fd = new FormData();\n  fd.append(\"file\", state.file);\n  fd.append(\"authenticity_token\", csrfToken());\n\n  fetch(\"/api/v1/upload_loans/preview\", { method: \"POST\", body: fd })\n    .then(function(r) { return r.json().then(function(d) { return { ok: r.ok, data: d }; }); })\n    .then(function(r) {\n      if (!r.ok) {\n        var msgs = (r.data.errors && r.data.errors.full_messages) || [\"Unknown error\"];\n        _showPreviewAlert(msgs);\n        return;\n      }\n      state.previewLoans = r.data.loans || [];\n      _renderPreviewTable();\n      _goToStep(2);\n    })\n    .catch(function(e) { alert(\"Network error: \" + e.message); })\n    .finally(function() {\n      $btnPreview.disabled = false;\n      $btnPreview.innerHTML = '<i class=\"fa fa-eye me-1\"></i>Preview Loans';\n    });\n};\n\nvar _showPreviewAlert = function(msgs) {\n  $previewAlertList.innerHTML = msgs.map(function(m) { return \"<li>\" + m + \"</li>\"; }).join(\"\");\n  $previewAlert.classList.remove(\"d-none\");\n};\n\nvar _renderPreviewTable = function() {\n  $previewTableTbody.innerHTML = \"\";\n  state.previewLoans.forEach(function(loan, i) {\n    var tr = document.createElement(\"tr\");\n    tr.innerHTML =\n      \"<td>\" + (loan._row_number || i + 2) + \"</td>\" +\n      \"<td>\" + (loan.member_id || \"\u2014\") + \"</td>\" +\n      \"<td><small>\" + (loan.loan_product_id || \"\u2014\") + \"</small></td>\" +\n      \"<td class='text-end'>\" + currency(loan.principal) + \"</td>\" +\n      \"<td class='text-center'>\" + (loan.num_installments || \"\u2014\") + \"</td>\" +\n      \"<td class='text-center'>\" + (loan.term || \"\u2014\") + \"</td>\" +\n      \"<td>\" + (loan.date_prepared || \"\u2014\") + \"</td>\" +\n      \"<td>\" + (loan.date_released || \"\u2014\") + \"</td>\" +\n      \"<td>\" + (loan.first_date_of_payment || \"\u2014\") + \"</td>\" +\n      \"<td>\" + (loan.pn_number || \"\u2014\") + \"</td>\" +\n      \"<td class='text-center'><span class='badge bg-success'><i class='fa fa-check'></i></span></td>\";\n    $previewTableTbody.appendChild(tr);\n  });\n};\n\n// \u2500\u2500 Step 2 - 3: Amortization\nvar _renderAmortSettingsTable = function() {\n  $amortSettingsTbody.innerHTML = \"\";\n\n  state.previewLoans.forEach(function(loan, i) {\n    var term         = state.globalTerm || loan.term || \"weekly\";\n    var firstPayment = loan.first_date_of_payment || state.globalFirstPayment || \"\";\n    var maturity     = estimateMaturity(firstPayment, loan.num_installments, term);\n    var hasCustom    = !!(state.amortOverrides[i] && Object.keys(state.amortOverrides[i]).length > 0);\n\n    var tr = document.createElement(\"tr\");\n    tr.innerHTML =\n      \"<td>\" + (i + 1) + \"</td>\" +\n      \"<td><small>\" + (loan.member_id || \"\u2014\") + \"</small></td>\" +\n      \"<td class='text-end'>\" + currency(loan.principal) + \"</td>\" +\n      \"<td class='text-center'>\" + term + \"</td>\" +\n      \"<td class='text-center'>\" + (loan.num_installments || \"\u2014\") + \"</td>\" +\n      \"<td><input type='date' class='form-control form-control-sm first-payment-row' \" +\n        \"data-row='\" + i + \"' value='\" + firstPayment + \"' style='width:145px;'></td>\" +\n      \"<td><small>\" + maturity + \"</small></td>\" +\n      \"<td class='text-center'>\" +\n        \"<button class='btn btn-sm btn-outline-secondary btn-customize-amort' type='button' data-row='\" + i + \"'>\" +\n          (hasCustom ? \"<i class='fa fa-edit'></i> Edit\" : \"<i class='fa fa-calendar-alt'></i> Dates\") +\n        \"</button>\" +\n        (hasCustom ? \" <span class='badge bg-info text-white ms-1'>Custom</span>\" : \"\") +\n      \"</td>\";\n    $amortSettingsTbody.appendChild(tr);\n  });\n\n  document.querySelectorAll(\".first-payment-row\").forEach(function(inp) {\n    inp.addEventListener(\"change\", function() {\n      var row = parseInt(inp.dataset.row);\n      state.previewLoans[row].first_date_of_payment = inp.value;\n      _renderAmortSettingsTable();\n    });\n  });\n\n  document.querySelectorAll(\".btn-customize-amort\").forEach(function(btn) {\n    btn.addEventListener(\"click\", function() {\n      _openAmortDetailPanel(parseInt(btn.dataset.row));\n    });\n  });\n};\n\nvar _openAmortDetailPanel = function(rowIndex) {\n  state.editingRow = rowIndex;\n  var loan         = state.previewLoans[rowIndex];\n  var term         = state.globalTerm || loan.term || \"weekly\";\n  var firstPayment = loan.first_date_of_payment || state.globalFirstPayment || \"\";\n  var mir          = parseFloat(loan.monthly_interest_rate) || 0.013;\n  var schedule     = computeSchedule(loan.principal, mir, loan.num_installments, term, firstPayment);\n  var existing     = state.amortOverrides[rowIndex] || {};\n\n  $amortPanelHeading.textContent =\n    \"Installment Dates \u2014 Row \" + (rowIndex + 1) + \" (Member: \" + (loan.member_id || \"\u2014\") + \")\";\n\n  $amortDetailTbody.innerHTML = \"\";\n\n  schedule.forEach(function(row) {\n    var customVal = existing[row.installment] || \"\";\n    var tr = document.createElement(\"tr\");\n    tr.innerHTML =\n      \"<td class='text-center'>\" + row.installment + \"</td>\" +\n      \"<td>\" + (row.due_date || \"\u2014\") + \"</td>\" +\n      \"<td><input type='date' class='form-control form-control-sm amort-custom-date' \" +\n        \"data-installment='\" + row.installment + \"' value='\" + customVal + \"' style='width:145px;'></td>\" +\n      \"<td class='text-end'>\" + currency(row.principal) + \"</td>\" +\n      \"<td class='text-end'>\" + currency(row.interest) + \"</td>\" +\n      \"<td class='text-end'>\" + currency(row.amount_due) + \"</td>\";\n    $amortDetailTbody.appendChild(tr);\n  });\n\n  $amortDetailPanel.classList.remove(\"d-none\");\n  $amortDetailPanel.scrollIntoView({ behavior: \"smooth\", block: \"nearest\" });\n};\n\nvar _saveAmortDetailPanel = function() {\n  var row       = state.editingRow;\n  var overrides = {};\n  document.querySelectorAll(\".amort-custom-date\").forEach(function(inp) {\n    if (inp.value) overrides[parseInt(inp.dataset.installment)] = inp.value;\n  });\n  if (Object.keys(overrides).length > 0) {\n    state.amortOverrides[row] = overrides;\n  } else {\n    delete state.amortOverrides[row];\n  }\n  $amortDetailPanel.classList.add(\"d-none\");\n  _renderAmortSettingsTable();\n};\n\nvar _resetAmortDetailPanel = function() {\n  document.querySelectorAll(\".amort-custom-date\").forEach(function(inp) { inp.value = \"\"; });\n};\n\n// \u2500\u2500 Step 3 - 4: Confirm \nvar _renderConfirmTable = function() {\n  var customCount = Object.keys(state.amortOverrides).length;\n  $confirmTotal.textContent       = state.previewLoans.length;\n  $confirmValid.textContent       = state.previewLoans.length;\n  $confirmCustomAmort.textContent = customCount;\n\n  $confirmTableTbody.innerHTML = \"\";\n  state.previewLoans.forEach(function(loan, i) {\n    var fp        = loan.first_date_of_payment || state.globalFirstPayment || \"\u2014\";\n    var hasCustom = !!(state.amortOverrides[i] && Object.keys(state.amortOverrides[i]).length > 0);\n    var paid      = parseInt(loan.paid_installments) || 0;\n    var total     = parseInt(loan.num_installments) || 0;\n    var remaining = total - paid;\n\n    var paidBadge = paid > 0\n      ? \"<span class='badge bg-success'>\" + paid + \" paid</span> \" +\n        \"<span class='badge bg-warning text-dark'>\" + remaining + \" left</span>\"\n      : \"<span class='badge bg-secondary'>None</span>\";\n\n    var tr = document.createElement(\"tr\");\n    tr.innerHTML =\n      \"<td>\" + (i + 1) + \"</td>\" +\n      \"<td><small>\" + (loan.member_id || \"\u2014\") + \"</small></td>\" +\n      \"<td class='text-end'>\" + currency(loan.principal) + \"</td>\" +\n      \"<td class='text-center'>\" + (loan.num_installments || \"\u2014\") + \"</td>\" +\n      \"<td>\" + fp + \"</td>\" +\n      \"<td class='text-center'>\" +\n        (hasCustom\n          ? \"<span class='badge bg-info text-white'><i class='fa fa-check'></i> Yes</span>\"\n          : \"<span class='badge bg-secondary'>No</span>\") +\n      \"</td>\" +\n      \"<td class='text-center'>\" + paidBadge + \"</td>\";\n    $confirmTableTbody.appendChild(tr);\n  });\n};\n\n// \u2500\u2500 Save \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nvar _doSave = function() {\n  $btnSave.disabled = true;\n  $uploadSpinner.classList.remove(\"d-none\");\n\n  var loans = state.previewLoans.map(function(loan, i) {\n    var merged = Object.assign({}, loan);\n    if (state.globalTerm) merged.term = state.globalTerm;\n    if (state.globalFirstPayment && !merged.first_date_of_payment)\n      merged.first_date_of_payment = state.globalFirstPayment;\n\n    var overrides = state.amortOverrides[i];\n    if (overrides && Object.keys(overrides).length > 0) {\n      merged.amortization_overrides = Object.keys(overrides).map(function(k) {\n        return { installment_number: k, due_date: overrides[k] };\n      });\n    }\n    return merged;\n  });\n\n  var fd = new FormData();\n  fd.append(\"loans_payload\", JSON.stringify({ loans: loans }));\n  fd.append(\"authenticity_token\", csrfToken());\n\n  fetch(\"/api/v1/upload_loans/save\", { method: \"POST\", body: fd })\n    .then(function(r) { return r.json().then(function(d) { return { ok: r.ok, data: d }; }); })\n    .then(function(r) {\n      var uploadModal = bootstrap.Modal.getInstance($uploadModal);\n      if (uploadModal) uploadModal.hide();\n\n      if (r.ok) {\n        _showResultSuccess(r.data);\n      } else {\n        _showResultError(r.data);\n      }\n    })\n    .catch(function(e) { alert(\"Network error: \" + e.message); })\n    .finally(function() {\n      $btnSave.disabled = false;\n      $uploadSpinner.classList.add(\"d-none\");\n    });\n};\n\n// \u2500\u2500 Result Modal \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nvar _showResultSuccess = function(data) {\n  $resultSuccessMsg.textContent = data.saved_count + \" loan(s) uploaded successfully. Amortization schedules generated.\";\n  $resultSuccess.classList.remove(\"d-none\");\n  $resultError.classList.add(\"d-none\");\n  $resultModalTitle.textContent = \"Upload Successful\";\n  new bootstrap.Modal($resultModal).show();\n  _refreshIndexTable(data.loans || []);\n};\n\nvar _showResultError = function(data) {\n  $resultErrorTbody.innerHTML = (data.errors || []).map(function(e) {\n    return \"<tr><td>\" + e.row + \"</td><td>\" + (e.member_id || \"\u2014\") + \"</td>\" +\n           \"<td>\" + (e.messages || []).join(\", \") + \"</td></tr>\";\n  }).join(\"\");\n  $resultError.classList.remove(\"d-none\");\n  $resultSuccess.classList.add(\"d-none\");\n  $resultModalTitle.textContent = \"Upload Failed\";\n  new bootstrap.Modal($resultModal).show();\n};\n\n// \u2500\u2500 Index Table Refresh \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nvar _refreshIndexTable = function(savedLoans) {\n  if ($uploadLoansEmptyRow) $uploadLoansEmptyRow.remove();\n\n  savedLoans.forEach(function(result) {\n    var loan = state.previewLoans[result.row - 1] || {};\n    var fp   = loan.first_date_of_payment || state.globalFirstPayment || \"\u2014\";\n\n    var tr = document.createElement(\"tr\");\n    tr.innerHTML =\n      \"<td>\" + result.row + \"</td>\" +\n      \"<td><small>\" + (result.member_id || \"\u2014\") + \"</small></td>\" +\n      \"<td><small>\" + (loan.branch_id || \"\u2014\") + \"</small></td>\" +\n      \"<td><small>\" + (loan.center_id || \"\u2014\") + \"</small></td>\" +\n      \"<td><small>\" + (loan.loan_product_id || \"\u2014\") + \"</small></td>\" +\n      \"<td class='text-end'>\" + currency(loan.principal) + \"</td>\" +\n      \"<td class='text-center'>\" + (loan.num_installments || \"\u2014\") + \"</td>\" +\n      \"<td class='text-center'>\" + (loan.term || \"\u2014\") + \"</td>\" +\n      \"<td>\" + (loan.date_prepared || \"\u2014\") + \"</td>\" +\n      \"<td>\" + (loan.date_released || \"\u2014\") + \"</td>\" +\n      \"<td>\" + fp + \"</td>\" +\n      \"<td>\" + (loan.pn_number || \"\u2014\") + \"</td>\" +\n      \"<td class='text-center'>\" +\n        \"<button class='btn btn-sm btn-outline-info btn-view-amort' type='button' \" +\n          \"data-loan-id='\" + result.loan_id + \"' \" +\n          \"data-bs-toggle='modal' data-bs-target='#amortization-modal'>\" +\n          \"<i class='fa fa-calendar-alt'></i>\" +\n        \"</button>\" +\n      \"</td>\" +\n      \"<td class='text-center'><span class='badge bg-success'>Uploaded</span></td>\";\n    $uploadLoansTbody.appendChild(tr);\n  });\n\n  _bindAmortViewButtons();\n};\n\n// \u2500\u2500 Amortization View Modal\nvar _bindAmortViewButtons = function() {\n  document.querySelectorAll(\".btn-view-amort\").forEach(function(btn) {\n    btn.addEventListener(\"click\", function() {\n      _loadAmortization(btn.dataset.loanId);\n    });\n  });\n};\n\nvar _loadAmortization = function(loanId) {\n  var tbody = document.getElementById(\"amort-view-tbody\");\n  tbody.innerHTML = \"<tr><td colspan='6' class='text-center'><i class='fa fa-spinner fa-spin me-1'></i>Loading...</td></tr>\";\n\n  fetch(\"/api/v1/upload_loans/amortization?loan_id=\" + loanId)\n    .then(function(r) { return r.json(); })\n    .then(function(data) {\n      var loan = data.loan || {};\n      document.getElementById(\"amort-view-loan-info\").textContent    = \"Loan ID: \" + loanId;\n      document.getElementById(\"amort-view-principal\").textContent    = currency(loan.principal);\n      document.getElementById(\"amort-view-interest\").textContent     = currency(loan.interest);\n      document.getElementById(\"amort-view-term\").textContent         = loan.term || \"\u2014\";\n      document.getElementById(\"amort-view-installments\").textContent = loan.num_installments || \"\u2014\";\n      document.getElementById(\"amort-view-first-date\").textContent   = loan.first_date_of_payment || \"\u2014\";\n      document.getElementById(\"amort-view-maturity\").textContent     = loan.maturity_date || \"\u2014\";\n\n      tbody.innerHTML = \"\";\n      (data.entries || []).forEach(function(e, i) {\n        var isPaid      = e.principal_balance === 0 && e.interest_balance === 0;\n        var isPartial   = !isPaid && (e.principal_paid > 0 || e.interest_paid > 0);\n        var statusBadge = isPaid\n          ? \"<span class='badge bg-success'>Paid</span>\"\n          : isPartial\n            ? \"<span class='badge bg-warning text-dark'>Partial</span>\"\n            : \"<span class='badge bg-secondary'>Unpaid</span>\";\n\n        var tr = document.createElement(\"tr\");\n        tr.innerHTML =\n          \"<td class='text-center'>\" + (i + 1) + \"</td>\" +\n          \"<td>\" + (e.due_date || \"\u2014\") + \"</td>\" +\n          \"<td class='text-end'>\" + currency(e.principal) + \"</td>\" +\n          \"<td class='text-end'>\" + currency(e.interest) + \"</td>\" +\n          \"<td class='text-end'><strong>\" + currency(e.amount_due) + \"</strong></td>\" +\n          \"<td class='text-center'>\" + statusBadge + \"</td>\";\n        tbody.appendChild(tr);\n      });\n    })\n    .catch(function() {\n      tbody.innerHTML = \"<tr><td colspan='6' class='text-center text-danger'>Failed to load amortization.</td></tr>\";\n    });\n};\n\n// \u2500\u2500 CSV Template Download\nvar _downloadTemplate = function() {\n  var headers = [\n    \"member_id\", \"branch_id\", \"center_id\", \"loan_product_id\",\n    \"principal\", \"num_installments\", \"term\",\n    \"date_prepared\", \"date_released\", \"first_date_of_payment\",\n    \"pn_number\", \"payment_type\",\n    \"bank_check_number\", \"check_number\", \"date_requested\", \"date_of_check\", \"paid_installments\",\n    \"first_co_maker_id\", \"second_co_maker_id\", \"third_co_maker_id\"\n  ];\n  var sample = [\n    \"MEMBER-UUID\", \"BRANCH-UUID\", \"CENTER-UUID\", \"PRODUCT-UUID\",\n    \"5000\", \"25\", \"weekly\",\n    \"2025-09-12\", \"2025-09-12\", \"2025-09-19\",\n    \"PN-001\", \"cash\",\n    \"BCN-001\", \"CVN-001\", \"2025-09-12\", \"2025-09-12\", \"15\",\n    \"MEMBER-UUID\", \"MEMBER-UUID\", \"MEMBER-UUID\"\n  ];\n  var csv  = [headers.join(\",\"), sample.join(\",\")].join(\"\\n\");\n  var blob = new Blob([csv], { type: \"text/csv\" });\n  var url  = URL.createObjectURL(blob);\n  var a    = document.createElement(\"a\");\n  a.href     = url;\n  a.download = \"loan_upload_template.csv\";\n  a.click();\n  URL.revokeObjectURL(url);\n};\n\n// \u2500\u2500 Reset State\nvar _resetState = function() {\n  state.step               = 1;\n  state.file               = null;\n  state.previewLoans       = [];\n  state.amortOverrides     = {};\n  state.globalFirstPayment = null;\n  state.globalTerm         = null;\n  state.editingRow         = null;\n  $loanFileInput.value = \"\";\n  $fileSelectedInfo.classList.add(\"d-none\");\n  $btnPreview.disabled = true;\n  $previewAlert.classList.add(\"d-none\");\n  $amortDetailPanel.classList.add(\"d-none\");\n  $globalFirstPayment.value = \"\";\n  $globalTermOverride.value = \"\";\n};\n\n// \u2500\u2500 Bind Events\nvar _bindEvents = function() {\n  if ($btnOpenUploadModal) {\n    $btnOpenUploadModal.addEventListener(\"click\", function() {\n      _resetState();\n      _goToStep(1);\n      new bootstrap.Modal($uploadModal).show();\n    });\n  }\n\n  $loanFileInput.addEventListener(\"change\", function(e) {\n    _handleFileSelect(e.target.files[0]);\n  });\n\n  $dropZone.addEventListener(\"dragover\", function(e) {\n    e.preventDefault();\n    $dropZone.classList.add(\"border-primary\", \"bg-primary\", \"bg-opacity-10\");\n  });\n  $dropZone.addEventListener(\"dragleave\", function() {\n    $dropZone.classList.remove(\"border-primary\", \"bg-primary\", \"bg-opacity-10\");\n  });\n  $dropZone.addEventListener(\"drop\", function(e) {\n    e.preventDefault();\n    $dropZone.classList.remove(\"border-primary\", \"bg-primary\", \"bg-opacity-10\");\n    _handleFileSelect(e.dataTransfer.files[0]);\n  });\n\n  $btnClearFile.addEventListener(\"click\", _clearFile);\n  $btnPreview.addEventListener(\"click\", _doPreview);\n\n  $btnToAmort.addEventListener(\"click\", function() {\n    _renderAmortSettingsTable();\n    _goToStep(3);\n  });\n\n  $btnSaveAmortDetail.addEventListener(\"click\",  _saveAmortDetailPanel);\n  $btnResetAmortDetail.addEventListener(\"click\", _resetAmortDetailPanel);\n  $btnCloseAmortPanel.addEventListener(\"click\",  function() {\n    $amortDetailPanel.classList.add(\"d-none\");\n  });\n\n  $globalFirstPayment.addEventListener(\"change\", function(e) {\n    state.globalFirstPayment = e.target.value;\n    _renderAmortSettingsTable();\n  });\n  $globalTermOverride.addEventListener(\"change\", function(e) {\n    state.globalTerm = e.target.value || null;\n    _renderAmortSettingsTable();\n  });\n\n  $btnToConfirm.addEventListener(\"click\", function() {\n    _renderConfirmTable();\n    _goToStep(4);\n  });\n\n  $btnSave.addEventListener(\"click\", _doSave);\n\n  $btnBack.addEventListener(\"click\", function() {\n    if (state.step > 1) _goToStep(state.step - 1);\n  });\n\n  if ($btnUploadMore) {\n    $btnUploadMore.addEventListener(\"click\", function() {\n      bootstrap.Modal.getInstance($resultModal).hide();\n    });\n  }\n\n  $btnDownloadTemplate.addEventListener(\"click\", _downloadTemplate);\n};\n\n// \u2500\u2500 Init\nvar init = function(config) {\n  _cacheDom();\n  _bindEvents();\n};\n\nexport default { init: init };"],
  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAUA,OAAE,SAAUA,SAAQ,SAAU;AAE7B;AAEA,YAAK,OAAO,WAAW,YAAY,OAAO,OAAO,YAAY,UAAW;AASvE,iBAAO,UAAUA,QAAO,WACvB,QAASA,SAAQ,IAAK,IACtB,SAAUC,IAAI;AACb,gBAAK,CAACA,GAAE,UAAW;AAClB,oBAAM,IAAI,MAAO,0CAA2C;AAAA,YAC7D;AACA,mBAAO,QAASA,EAAE;AAAA,UACnB;AAAA,QACF,OAAO;AACN,kBAASD,OAAO;AAAA,QACjB;AAAA,MAGD,GAAK,OAAO,WAAW,cAAc,SAAS,SAAM,SAAUE,SAAQ,UAAW;AAMjF;AAEA,YAAI,MAAM,CAAC;AAEX,YAAI,WAAW,OAAO;AAEtB,YAAIC,SAAQ,IAAI;AAEhB,YAAI,OAAO,IAAI,OAAO,SAAU,OAAQ;AACvC,iBAAO,IAAI,KAAK,KAAM,KAAM;AAAA,QAC7B,IAAI,SAAU,OAAQ;AACrB,iBAAO,IAAI,OAAO,MAAO,CAAC,GAAG,KAAM;AAAA,QACpC;AAGA,YAAIC,QAAO,IAAI;AAEf,YAAIC,WAAU,IAAI;AAElB,YAAI,aAAa,CAAC;AAElB,YAAI,WAAW,WAAW;AAE1B,YAAI,SAAS,WAAW;AAExB,YAAI,aAAa,OAAO;AAExB,YAAI,uBAAuB,WAAW,KAAM,MAAO;AAEnD,YAAI,UAAU,CAAC;AAEf,YAAIC,cAAa,SAASA,YAAY,KAAM;AAS1C,iBAAO,OAAO,QAAQ,cAAc,OAAO,IAAI,aAAa,YAC3D,OAAO,IAAI,SAAS;AAAA,QACtB;AAGD,YAAI,WAAW,SAASC,UAAU,KAAM;AACtC,iBAAO,OAAO,QAAQ,QAAQ,IAAI;AAAA,QACnC;AAGD,YAAIC,YAAWN,QAAO;AAIrB,YAAI,4BAA4B;AAAA,UAC/B,MAAM;AAAA,UACN,KAAK;AAAA,UACL,OAAO;AAAA,UACP,UAAU;AAAA,QACX;AAEA,iBAAS,QAAS,MAAMO,OAAM,KAAM;AACnC,gBAAM,OAAOD;AAEb,cAAI,GAAG,KACN,SAAS,IAAI,cAAe,QAAS;AAEtC,iBAAO,OAAO;AACd,cAAKC,OAAO;AACX,iBAAM,KAAK,2BAA4B;AAYtC,oBAAMA,MAAM,CAAE,KAAKA,MAAK,gBAAgBA,MAAK,aAAc,CAAE;AAC7D,kBAAK,KAAM;AACV,uBAAO,aAAc,GAAG,GAAI;AAAA,cAC7B;AAAA,YACD;AAAA,UACD;AACA,cAAI,KAAK,YAAa,MAAO,EAAE,WAAW,YAAa,MAAO;AAAA,QAC/D;AAGD,iBAASC,QAAQ,KAAM;AACtB,cAAK,OAAO,MAAO;AAClB,mBAAO,MAAM;AAAA,UACd;AAGA,iBAAO,OAAO,QAAQ,YAAY,OAAO,QAAQ,aAChD,WAAY,SAAS,KAAM,GAAI,CAAE,KAAK,WACtC,OAAO;AAAA,QACT;AAOA,YAAI,UAAU,SAEb,cAAc,UAGdC,UAAS,SAAU,UAAU,SAAU;AAItC,iBAAO,IAAIA,QAAO,GAAG,KAAM,UAAU,OAAQ;AAAA,QAC9C;AAED,QAAAA,QAAO,KAAKA,QAAO,YAAY;AAAA;AAAA,UAG9B,QAAQ;AAAA,UAER,aAAaA;AAAA;AAAA,UAGb,QAAQ;AAAA,UAER,SAAS,WAAW;AACnB,mBAAOR,OAAM,KAAM,IAAK;AAAA,UACzB;AAAA;AAAA;AAAA,UAIA,KAAK,SAAU,KAAM;AAGpB,gBAAK,OAAO,MAAO;AAClB,qBAAOA,OAAM,KAAM,IAAK;AAAA,YACzB;AAGA,mBAAO,MAAM,IAAI,KAAM,MAAM,KAAK,MAAO,IAAI,KAAM,GAAI;AAAA,UACxD;AAAA;AAAA;AAAA,UAIA,WAAW,SAAU,OAAQ;AAG5B,gBAAI,MAAMQ,QAAO,MAAO,KAAK,YAAY,GAAG,KAAM;AAGlD,gBAAI,aAAa;AAGjB,mBAAO;AAAA,UACR;AAAA;AAAA,UAGA,MAAM,SAAU,UAAW;AAC1B,mBAAOA,QAAO,KAAM,MAAM,QAAS;AAAA,UACpC;AAAA,UAEA,KAAK,SAAU,UAAW;AACzB,mBAAO,KAAK,UAAWA,QAAO,IAAK,MAAM,SAAU,MAAM,GAAI;AAC5D,qBAAO,SAAS,KAAM,MAAM,GAAG,IAAK;AAAA,YACrC,CAAE,CAAE;AAAA,UACL;AAAA,UAEA,OAAO,WAAW;AACjB,mBAAO,KAAK,UAAWR,OAAM,MAAO,MAAM,SAAU,CAAE;AAAA,UACvD;AAAA,UAEA,OAAO,WAAW;AACjB,mBAAO,KAAK,GAAI,CAAE;AAAA,UACnB;AAAA,UAEA,MAAM,WAAW;AAChB,mBAAO,KAAK,GAAI,EAAG;AAAA,UACpB;AAAA,UAEA,MAAM,WAAW;AAChB,mBAAO,KAAK,UAAWQ,QAAO,KAAM,MAAM,SAAU,OAAO,GAAI;AAC9D,sBAAS,IAAI,KAAM;AAAA,YACpB,CAAE,CAAE;AAAA,UACL;AAAA,UAEA,KAAK,WAAW;AACf,mBAAO,KAAK,UAAWA,QAAO,KAAM,MAAM,SAAU,OAAO,GAAI;AAC9D,qBAAO,IAAI;AAAA,YACZ,CAAE,CAAE;AAAA,UACL;AAAA,UAEA,IAAI,SAAU,GAAI;AACjB,gBAAI,MAAM,KAAK,QACd,IAAI,CAAC,KAAM,IAAI,IAAI,MAAM;AAC1B,mBAAO,KAAK,UAAW,KAAK,KAAK,IAAI,MAAM,CAAE,KAAM,CAAE,CAAE,IAAI,CAAC,CAAE;AAAA,UAC/D;AAAA,UAEA,KAAK,WAAW;AACf,mBAAO,KAAK,cAAc,KAAK,YAAY;AAAA,UAC5C;AAAA;AAAA;AAAA,UAIA,MAAMP;AAAA,UACN,MAAM,IAAI;AAAA,UACV,QAAQ,IAAI;AAAA,QACb;AAEA,QAAAO,QAAO,SAASA,QAAO,GAAG,SAAS,WAAW;AAC7C,cAAIC,UAASC,OAAM,KAAKC,OAAM,aAAa,OAC1C,SAAS,UAAW,CAAE,KAAK,CAAC,GAC5B,IAAI,GACJC,UAAS,UAAU,QACnB,OAAO;AAGR,cAAK,OAAO,WAAW,WAAY;AAClC,mBAAO;AAGP,qBAAS,UAAW,CAAE,KAAK,CAAC;AAC5B;AAAA,UACD;AAGA,cAAK,OAAO,WAAW,YAAY,CAACT,YAAY,MAAO,GAAI;AAC1D,qBAAS,CAAC;AAAA,UACX;AAGA,cAAK,MAAMS,SAAS;AACnB,qBAAS;AACT;AAAA,UACD;AAEA,iBAAQ,IAAIA,SAAQ,KAAM;AAGzB,iBAAOH,WAAU,UAAW,CAAE,MAAO,MAAO;AAG3C,mBAAMC,SAAQD,UAAU;AACvB,gBAAAE,QAAOF,SAASC,KAAK;AAIrB,oBAAKA,UAAS,eAAe,WAAWC,OAAO;AAC9C;AAAA,gBACD;AAGA,oBAAK,QAAQA,UAAUH,QAAO,cAAeG,KAAK,MAC/C,cAAc,MAAM,QAASA,KAAK,KAAQ;AAC5C,wBAAM,OAAQD,KAAK;AAGnB,sBAAK,eAAe,CAAC,MAAM,QAAS,GAAI,GAAI;AAC3C,4BAAQ,CAAC;AAAA,kBACV,WAAY,CAAC,eAAe,CAACF,QAAO,cAAe,GAAI,GAAI;AAC1D,4BAAQ,CAAC;AAAA,kBACV,OAAO;AACN,4BAAQ;AAAA,kBACT;AACA,gCAAc;AAGd,yBAAQE,KAAK,IAAIF,QAAO,OAAQ,MAAM,OAAOG,KAAK;AAAA,gBAGnD,WAAYA,UAAS,QAAY;AAChC,yBAAQD,KAAK,IAAIC;AAAA,gBAClB;AAAA,cACD;AAAA,YACD;AAAA,UACD;AAGA,iBAAO;AAAA,QACR;AAEA,QAAAH,QAAO,OAAQ;AAAA;AAAA,UAGd,SAAS,YAAa,UAAU,KAAK,OAAO,GAAI,QAAS,OAAO,EAAG;AAAA;AAAA,UAGnE,SAAS;AAAA,UAET,OAAO,SAAU,KAAM;AACtB,kBAAM,IAAI,MAAO,GAAI;AAAA,UACtB;AAAA,UAEA,MAAM,WAAW;AAAA,UAAC;AAAA,UAElB,eAAe,SAAU,KAAM;AAC9B,gBAAI,OAAO;AAIX,gBAAK,CAAC,OAAO,SAAS,KAAM,GAAI,MAAM,mBAAoB;AACzD,qBAAO;AAAA,YACR;AAEA,oBAAQ,SAAU,GAAI;AAGtB,gBAAK,CAAC,OAAQ;AACb,qBAAO;AAAA,YACR;AAGA,mBAAO,OAAO,KAAM,OAAO,aAAc,KAAK,MAAM;AACpD,mBAAO,OAAO,SAAS,cAAc,WAAW,KAAM,IAAK,MAAM;AAAA,UAClE;AAAA,UAEA,eAAe,SAAU,KAAM;AAC9B,gBAAIE;AAEJ,iBAAMA,SAAQ,KAAM;AACnB,qBAAO;AAAA,YACR;AACA,mBAAO;AAAA,UACR;AAAA;AAAA;AAAA,UAIA,YAAY,SAAU,MAAMD,UAAS,KAAM;AAC1C,oBAAS,MAAM,EAAE,OAAOA,YAAWA,SAAQ,MAAM,GAAG,GAAI;AAAA,UACzD;AAAA,UAEA,MAAM,SAAU,KAAK,UAAW;AAC/B,gBAAIG,SAAQ,IAAI;AAEhB,gBAAK,YAAa,GAAI,GAAI;AACzB,cAAAA,UAAS,IAAI;AACb,qBAAQ,IAAIA,SAAQ,KAAM;AACzB,oBAAK,SAAS,KAAM,IAAK,CAAE,GAAG,GAAG,IAAK,CAAE,CAAE,MAAM,OAAQ;AACvD;AAAA,gBACD;AAAA,cACD;AAAA,YACD,OAAO;AACN,mBAAM,KAAK,KAAM;AAChB,oBAAK,SAAS,KAAM,IAAK,CAAE,GAAG,GAAG,IAAK,CAAE,CAAE,MAAM,OAAQ;AACvD;AAAA,gBACD;AAAA,cACD;AAAA,YACD;AAEA,mBAAO;AAAA,UACR;AAAA;AAAA,UAIA,MAAM,SAAU,MAAO;AACtB,gBAAIN,OACH,MAAM,IACN,IAAI,GACJ,WAAW,KAAK;AAEjB,gBAAK,CAAC,UAAW;AAGhB,qBAAUA,QAAO,KAAM,GAAI,GAAM;AAGhC,uBAAOE,QAAO,KAAMF,KAAK;AAAA,cAC1B;AAAA,YACD,WAAY,aAAa,KAAK,aAAa,KAAK,aAAa,IAAK;AACjE,qBAAO,KAAK;AAAA,YACb,WAAY,aAAa,KAAK,aAAa,GAAI;AAC9C,qBAAO,KAAK;AAAA,YACb;AAIA,mBAAO;AAAA,UACR;AAAA;AAAA,UAGA,WAAW,SAAUO,MAAK,SAAU;AACnC,gBAAI,MAAM,WAAW,CAAC;AAEtB,gBAAKA,QAAO,MAAO;AAClB,kBAAK,YAAa,OAAQA,IAAI,CAAE,GAAI;AACnC,gBAAAL,QAAO;AAAA,kBAAO;AAAA,kBACb,OAAOK,SAAQ,WACd,CAAEA,IAAI,IAAIA;AAAA,gBACZ;AAAA,cACD,OAAO;AACN,gBAAAZ,MAAK,KAAM,KAAKY,IAAI;AAAA,cACrB;AAAA,YACD;AAEA,mBAAO;AAAA,UACR;AAAA,UAEA,SAAS,SAAU,MAAMA,MAAK,GAAI;AACjC,mBAAOA,QAAO,OAAO,KAAKX,SAAQ,KAAMW,MAAK,MAAM,CAAE;AAAA,UACtD;AAAA,UAEA,UAAU,SAAU,MAAO;AAC1B,gBAAI,YAAY,QAAQ,KAAK,cAC5B,UAAU,SAAU,KAAK,iBAAiB,MAAO;AAIlD,mBAAO,CAAC,YAAY,KAAM,aAAa,WAAW,QAAQ,YAAY,MAAO;AAAA,UAC9E;AAAA;AAAA;AAAA,UAIA,OAAO,SAAU,OAAOC,SAAS;AAChC,gBAAI,MAAM,CAACA,QAAO,QACjB,IAAI,GACJ,IAAI,MAAM;AAEX,mBAAQ,IAAI,KAAK,KAAM;AACtB,oBAAO,GAAI,IAAIA,QAAQ,CAAE;AAAA,YAC1B;AAEA,kBAAM,SAAS;AAEf,mBAAO;AAAA,UACR;AAAA,UAEA,MAAM,SAAU,OAAO,UAAU,QAAS;AACzC,gBAAI,iBACH,UAAU,CAAC,GACX,IAAI,GACJF,UAAS,MAAM,QACf,iBAAiB,CAAC;AAInB,mBAAQ,IAAIA,SAAQ,KAAM;AACzB,gCAAkB,CAAC,SAAU,MAAO,CAAE,GAAG,CAAE;AAC3C,kBAAK,oBAAoB,gBAAiB;AACzC,wBAAQ,KAAM,MAAO,CAAE,CAAE;AAAA,cAC1B;AAAA,YACD;AAEA,mBAAO;AAAA,UACR;AAAA;AAAA,UAGA,KAAK,SAAU,OAAO,UAAU,KAAM;AACrC,gBAAIA,SAAQ,OACX,IAAI,GACJ,MAAM,CAAC;AAGR,gBAAK,YAAa,KAAM,GAAI;AAC3B,cAAAA,UAAS,MAAM;AACf,qBAAQ,IAAIA,SAAQ,KAAM;AACzB,wBAAQ,SAAU,MAAO,CAAE,GAAG,GAAG,GAAI;AAErC,oBAAK,SAAS,MAAO;AACpB,sBAAI,KAAM,KAAM;AAAA,gBACjB;AAAA,cACD;AAAA,YAGD,OAAO;AACN,mBAAM,KAAK,OAAQ;AAClB,wBAAQ,SAAU,MAAO,CAAE,GAAG,GAAG,GAAI;AAErC,oBAAK,SAAS,MAAO;AACpB,sBAAI,KAAM,KAAM;AAAA,gBACjB;AAAA,cACD;AAAA,YACD;AAGA,mBAAO,KAAM,GAAI;AAAA,UAClB;AAAA;AAAA,UAGA,MAAM;AAAA;AAAA;AAAA,UAIN;AAAA,QACD,CAAE;AAEF,YAAK,OAAO,WAAW,YAAa;AACnC,UAAAJ,QAAO,GAAI,OAAO,QAAS,IAAI,IAAK,OAAO,QAAS;AAAA,QACrD;AAGA,QAAAA,QAAO;AAAA,UAAM,uEAAuE,MAAO,GAAI;AAAA,UAC9F,SAAU,IAAIE,OAAO;AACpB,uBAAY,aAAaA,QAAO,GAAI,IAAIA,MAAK,YAAY;AAAA,UAC1D;AAAA,QAAE;AAEH,iBAAS,YAAa,KAAM;AAM3B,cAAIE,UAAS,CAAC,CAAC,OAAO,YAAY,OAAO,IAAI,QAC5C,OAAOL,QAAQ,GAAI;AAEpB,cAAKJ,YAAY,GAAI,KAAK,SAAU,GAAI,GAAI;AAC3C,mBAAO;AAAA,UACR;AAEA,iBAAO,SAAS,WAAWS,YAAW,KACrC,OAAOA,YAAW,YAAYA,UAAS,KAAOA,UAAS,KAAO;AAAA,QAChE;AAGA,iBAAS,SAAU,MAAMF,OAAO;AAE/B,iBAAO,KAAK,YAAY,KAAK,SAAS,YAAY,MAAMA,MAAK,YAAY;AAAA,QAE1E;AACA,YAAI,MAAM,IAAI;AAGd,YAAI,OAAO,IAAI;AAGf,YAAI,SAAS,IAAI;AAGjB,YAAIK,cAAa;AAGjB,YAAI,WAAW,IAAI;AAAA,UAClB,MAAMA,cAAa,gCAAgCA,cAAa;AAAA,UAChE;AAAA,QACD;AAMA,QAAAP,QAAO,WAAW,SAAUQ,IAAG,GAAI;AAClC,cAAI,MAAM,KAAK,EAAE;AAEjB,iBAAOA,OAAM,OAAO,CAAC,EAAG,OAAO,IAAI,aAAa;AAAA;AAAA,WAI/CA,GAAE,WACDA,GAAE,SAAU,GAAI,IAChBA,GAAE,2BAA2BA,GAAE,wBAAyB,GAAI,IAAI;AAAA,QAEnE;AAOA,YAAI,aAAa;AAEjB,iBAAS,WAAY,IAAI,aAAc;AACtC,cAAK,aAAc;AAGlB,gBAAK,OAAO,MAAO;AAClB,qBAAO;AAAA,YACR;AAGA,mBAAO,GAAG,MAAO,GAAG,EAAG,IAAI,OAAO,GAAG,WAAY,GAAG,SAAS,CAAE,EAAE,SAAU,EAAG,IAAI;AAAA,UACnF;AAGA,iBAAO,OAAO;AAAA,QACf;AAEA,QAAAR,QAAO,iBAAiB,SAAU,KAAM;AACvC,kBAAS,MAAM,IAAK,QAAS,YAAY,UAAW;AAAA,QACrD;AAKA,YAAI,eAAeH,WAClB,aAAaJ;AAEd,SAAE,WAAW;AAEb,cAAI,GACH,MACA,kBACA,WACA,cACAA,QAAO,YAGPI,WACAY,kBACA,gBACA,WACA,SAGA,UAAUT,QAAO,SACjB,UAAU,GACV,OAAO,GACP,aAAaU,aAAY,GACzB,aAAaA,aAAY,GACzB,gBAAgBA,aAAY,GAC5B,yBAAyBA,aAAY,GACrC,YAAY,SAAUF,IAAG,GAAI;AAC5B,gBAAKA,OAAM,GAAI;AACd,6BAAe;AAAA,YAChB;AACA,mBAAO;AAAA,UACR,GAEA,WAAW,8HAMXG,cAAa,4BAA4BJ,cACxC,2CAGD,aAAa,QAAQA,cAAa,OAAOI,cAAa,SAASJ;AAAA,UAG9D,kBAAkBA;AAAA,UAGlB,0DAA6DI,cAAa,SAC1EJ,cAAa,QAEd,UAAU,OAAOI,cAAa,uFAOA,aAAa,gBAO3C,cAAc,IAAI,OAAQJ,cAAa,KAAK,GAAI,GAEhD,SAAS,IAAI,OAAQ,MAAMA,cAAa,OAAOA,cAAa,GAAI,GAChE,qBAAqB,IAAI,OAAQ,MAAMA,cAAa,aAAaA,cAAa,MAC7EA,cAAa,GAAI,GAClB,WAAW,IAAI,OAAQA,cAAa,IAAK,GAEzC,UAAU,IAAI,OAAQ,OAAQ,GAC9B,cAAc,IAAI,OAAQ,MAAMI,cAAa,GAAI,GAEjD,YAAY;AAAA,YACX,IAAI,IAAI,OAAQ,QAAQA,cAAa,GAAI;AAAA,YACzC,OAAO,IAAI,OAAQ,UAAUA,cAAa,GAAI;AAAA,YAC9C,KAAK,IAAI,OAAQ,OAAOA,cAAa,OAAQ;AAAA,YAC7C,MAAM,IAAI,OAAQ,MAAM,UAAW;AAAA,YACnC,QAAQ,IAAI,OAAQ,MAAM,OAAQ;AAAA,YAClC,OAAO,IAAI;AAAA,cACV,2DACCJ,cAAa,iCAAiCA,cAAa,gBAC3DA,cAAa,eAAeA,cAAa;AAAA,cAAU;AAAA,YAAI;AAAA,YACzD,MAAM,IAAI,OAAQ,SAAS,WAAW,MAAM,GAAI;AAAA;AAAA;AAAA,YAIhD,cAAc,IAAI,OAAQ,MAAMA,cAC/B,qDAAqDA,cACrD,qBAAqBA,cAAa,oBAAoB,GAAI;AAAA,UAC5D,GAEA,UAAU,uCACV,UAAU,UAGVK,cAAa,oCAEb,WAAW,QAIX,YAAY,IAAI,OAAQ,yBAAyBL,cAChD,wBAAwB,GAAI,GAC7B,YAAY,SAAUM,SAAQ,QAAS;AACtC,gBAAI,OAAO,OAAOA,QAAO,MAAO,CAAE,IAAI;AAEtC,gBAAK,QAAS;AAGb,qBAAO;AAAA,YACR;AAMA,mBAAO,OAAO,IACb,OAAO,aAAc,OAAO,KAAQ,IACpC,OAAO,aAAc,QAAQ,KAAK,OAAQ,OAAO,OAAQ,KAAO;AAAA,UAClE,GAMA,gBAAgB,WAAW;AAC1B,wBAAY;AAAA,UACb,GAEA,qBAAqB;AAAA,YACpB,SAAU,MAAO;AAChB,qBAAO,KAAK,aAAa,QAAQ,SAAU,MAAM,UAAW;AAAA,YAC7D;AAAA,YACA,EAAE,KAAK,cAAc,MAAM,SAAS;AAAA,UACrC;AAKD,mBAAS,oBAAoB;AAC5B,gBAAI;AACH,qBAAOhB,UAAS;AAAA,YACjB,SAAU,KAAM;AAAA,YAAE;AAAA,UACnB;AAGA,cAAI;AACH,YAAAJ,MAAK;AAAA,cACF,MAAMD,OAAM,KAAM,aAAa,UAAW;AAAA,cAC5C,aAAa;AAAA,YACd;AAKA,gBAAK,aAAa,WAAW,MAAO,EAAE;AAAA,UACvC,SAAUsB,IAAI;AACb,YAAArB,QAAO;AAAA,cACN,OAAO,SAAU,QAAQ,KAAM;AAC9B,2BAAW,MAAO,QAAQD,OAAM,KAAM,GAAI,CAAE;AAAA,cAC7C;AAAA,cACA,MAAM,SAAU,QAAS;AACxB,2BAAW,MAAO,QAAQA,OAAM,KAAM,WAAW,CAAE,CAAE;AAAA,cACtD;AAAA,YACD;AAAA,UACD;AAEA,mBAAS,KAAM,UAAU,SAAS,SAAS,MAAO;AACjD,gBAAI,GAAGuB,IAAG,MAAM,KAAKC,QAAO,QAAQ,aACnC,aAAa,WAAW,QAAQ,eAGhC,WAAW,UAAU,QAAQ,WAAW;AAEzC,sBAAU,WAAW,CAAC;AAGtB,gBAAK,OAAO,aAAa,YAAY,CAAC,YACrC,aAAa,KAAK,aAAa,KAAK,aAAa,IAAK;AAEtD,qBAAO;AAAA,YACR;AAGA,gBAAK,CAAC,MAAO;AACZ,0BAAa,OAAQ;AACrB,wBAAU,WAAWnB;AAErB,kBAAK,gBAAiB;AAIrB,oBAAK,aAAa,OAAQmB,SAAQJ,YAAW,KAAM,QAAS,IAAM;AAGjE,sBAAO,IAAII,OAAO,CAAE,GAAM;AAGzB,wBAAK,aAAa,GAAI;AACrB,0BAAO,OAAO,QAAQ,eAAgB,CAAE,GAAM;AAI7C,4BAAK,KAAK,OAAO,GAAI;AACpB,0BAAAvB,MAAK,KAAM,SAAS,IAAK;AACzB,iCAAO;AAAA,wBACR;AAAA,sBACD,OAAO;AACN,+BAAO;AAAA,sBACR;AAAA,oBAGD,OAAO;AAIN,0BAAK,eAAgB,OAAO,WAAW,eAAgB,CAAE,MACxD,KAAK,SAAU,SAAS,IAAK,KAC7B,KAAK,OAAO,GAAI;AAEhB,wBAAAA,MAAK,KAAM,SAAS,IAAK;AACzB,+BAAO;AAAA,sBACR;AAAA,oBACD;AAAA,kBAGD,WAAYuB,OAAO,CAAE,GAAI;AACxB,oBAAAvB,MAAK,MAAO,SAAS,QAAQ,qBAAsB,QAAS,CAAE;AAC9D,2BAAO;AAAA,kBAGR,YAAc,IAAIuB,OAAO,CAAE,MAAO,QAAQ,wBAAyB;AAClE,oBAAAvB,MAAK,MAAO,SAAS,QAAQ,uBAAwB,CAAE,CAAE;AACzD,2BAAO;AAAA,kBACR;AAAA,gBACD;AAGA,oBAAK,CAAC,uBAAwB,WAAW,GAAI,MAC1C,CAAC,aAAa,CAAC,UAAU,KAAM,QAAS,IAAM;AAEhD,gCAAc;AACd,+BAAa;AASb,sBAAK,aAAa,MACf,SAAS,KAAM,QAAS,KAAK,mBAAmB,KAAM,QAAS,IAAM;AAGvE,iCAAa,SAAS,KAAM,QAAS,KAAK,YAAa,QAAQ,UAAW,KACzE;AAQD,wBAAK,cAAc,WAAW,CAAC,QAAQ,OAAQ;AAG9C,0BAAO,MAAM,QAAQ,aAAc,IAAK,GAAM;AAC7C,8BAAMO,QAAO,eAAgB,GAAI;AAAA,sBAClC,OAAO;AACN,gCAAQ,aAAc,MAAQ,MAAM,OAAU;AAAA,sBAC/C;AAAA,oBACD;AAGA,6BAAS,SAAU,QAAS;AAC5B,oBAAAe,KAAI,OAAO;AACX,2BAAQA,MAAM;AACb,6BAAQA,EAAE,KAAM,MAAM,MAAM,MAAM,YAAa,MAC9C,WAAY,OAAQA,EAAE,CAAE;AAAA,oBAC1B;AACA,kCAAc,OAAO,KAAM,GAAI;AAAA,kBAChC;AAEA,sBAAI;AACH,oBAAAtB,MAAK;AAAA,sBAAO;AAAA,sBACX,WAAW,iBAAkB,WAAY;AAAA,oBAC1C;AACA,2BAAO;AAAA,kBACR,SAAU,UAAW;AACpB,2CAAwB,UAAU,IAAK;AAAA,kBACxC,UAAE;AACD,wBAAK,QAAQ,SAAU;AACtB,8BAAQ,gBAAiB,IAAK;AAAA,oBAC/B;AAAA,kBACD;AAAA,gBACD;AAAA,cACD;AAAA,YACD;AAGA,mBAAO,OAAQ,SAAS,QAAS,UAAU,IAAK,GAAG,SAAS,SAAS,IAAK;AAAA,UAC3E;AAQA,mBAASiB,eAAc;AACtB,gBAAI,OAAO,CAAC;AAEZ,qBAAS,MAAO,KAAK,OAAQ;AAI5B,kBAAK,KAAK,KAAM,MAAM,GAAI,IAAI,KAAK,aAAc;AAGhD,uBAAO,MAAO,KAAK,MAAM,CAAE;AAAA,cAC5B;AACA,qBAAS,MAAO,MAAM,GAAI,IAAI;AAAA,YAC/B;AACA,mBAAO;AAAA,UACR;AAMA,mBAAS,aAAc,IAAK;AAC3B,eAAI,OAAQ,IAAI;AAChB,mBAAO;AAAA,UACR;AAMA,mBAAS,OAAQ,IAAK;AACrB,gBAAI,KAAKb,UAAS,cAAe,UAAW;AAE5C,gBAAI;AACH,qBAAO,CAAC,CAAC,GAAI,EAAG;AAAA,YACjB,SAAUiB,IAAI;AACb,qBAAO;AAAA,YACR,UAAE;AAGD,kBAAK,GAAG,YAAa;AACpB,mBAAG,WAAW,YAAa,EAAG;AAAA,cAC/B;AAGA,mBAAK;AAAA,YACN;AAAA,UACD;AAMA,mBAAS,kBAAmB,MAAO;AAClC,mBAAO,SAAU,MAAO;AACvB,qBAAO,SAAU,MAAM,OAAQ,KAAK,KAAK,SAAS;AAAA,YACnD;AAAA,UACD;AAMA,mBAAS,mBAAoB,MAAO;AACnC,mBAAO,SAAU,MAAO;AACvB,sBAAS,SAAU,MAAM,OAAQ,KAAK,SAAU,MAAM,QAAS,MAC9D,KAAK,SAAS;AAAA,YAChB;AAAA,UACD;AAMA,mBAAS,qBAAsB,UAAW;AAGzC,mBAAO,SAAU,MAAO;AAKvB,kBAAK,UAAU,MAAO;AASrB,oBAAK,KAAK,cAAc,KAAK,aAAa,OAAQ;AAGjD,sBAAK,WAAW,MAAO;AACtB,wBAAK,WAAW,KAAK,YAAa;AACjC,6BAAO,KAAK,WAAW,aAAa;AAAA,oBACrC,OAAO;AACN,6BAAO,KAAK,aAAa;AAAA,oBAC1B;AAAA,kBACD;AAIA,yBAAO,KAAK,eAAe;AAAA,kBAG1B,KAAK,eAAe,CAAC,YACpB,mBAAoB,IAAK,MAAM;AAAA,gBAClC;AAEA,uBAAO,KAAK,aAAa;AAAA,cAK1B,WAAY,WAAW,MAAO;AAC7B,uBAAO,KAAK,aAAa;AAAA,cAC1B;AAGA,qBAAO;AAAA,YACR;AAAA,UACD;AAMA,mBAAS,uBAAwB,IAAK;AACrC,mBAAO,aAAc,SAAU,UAAW;AACzC,yBAAW,CAAC;AACZ,qBAAO,aAAc,SAAU,MAAMG,UAAU;AAC9C,oBAAI,GACH,eAAe,GAAI,CAAC,GAAG,KAAK,QAAQ,QAAS,GAC7CF,KAAI,aAAa;AAGlB,uBAAQA,MAAM;AACb,sBAAK,KAAQ,IAAI,aAAcA,EAAE,CAAI,GAAI;AACxC,yBAAM,CAAE,IAAI,EAAGE,SAAS,CAAE,IAAI,KAAM,CAAE;AAAA,kBACvC;AAAA,gBACD;AAAA,cACD,CAAE;AAAA,YACH,CAAE;AAAA,UACH;AAOA,mBAAS,YAAa,SAAU;AAC/B,mBAAO,WAAW,OAAO,QAAQ,yBAAyB,eAAe;AAAA,UAC1E;AAOA,mBAAS,YAAanB,OAAO;AAC5B,gBAAI,WACH,MAAMA,QAAOA,MAAK,iBAAiBA,QAAO;AAO3C,gBAAK,OAAOD,aAAY,IAAI,aAAa,KAAK,CAAC,IAAI,iBAAkB;AACpE,qBAAOA;AAAA,YACR;AAGA,YAAAA,YAAW;AACX,YAAAY,mBAAkBZ,UAAS;AAC3B,6BAAiB,CAACG,QAAO,SAAUH,SAAS;AAI5C,sBAAUY,iBAAgB,WACzBA,iBAAgB,yBAChBA,iBAAgB;AAQjB,gBAAK,gBAAgBZ,cAClB,YAAYA,UAAS,gBAAiB,UAAU,QAAQ,WAAY;AAGtE,wBAAU,iBAAkB,UAAU,aAAc;AAAA,YACrD;AAMA,oBAAQ,UAAU,OAAQ,SAAU,IAAK;AACxC,cAAAY,iBAAgB,YAAa,EAAG,EAAE,KAAKT,QAAO;AAC9C,qBAAO,CAACH,UAAS,qBAChB,CAACA,UAAS,kBAAmBG,QAAO,OAAQ,EAAE;AAAA,YAChD,CAAE;AAKF,oBAAQ,oBAAoB,OAAQ,SAAU,IAAK;AAClD,qBAAO,QAAQ,KAAM,IAAI,GAAI;AAAA,YAC9B,CAAE;AAIF,oBAAQ,QAAQ,OAAQ,WAAW;AAClC,qBAAOH,UAAS,iBAAkB,QAAS;AAAA,YAC5C,CAAE;AAWF,oBAAQ,SAAS,OAAQ,WAAW;AACnC,kBAAI;AACH,gBAAAA,UAAS,cAAe,iBAAkB;AAC1C,uBAAO;AAAA,cACR,SAAUiB,IAAI;AACb,uBAAO;AAAA,cACR;AAAA,YACD,CAAE;AAGF,gBAAK,QAAQ,SAAU;AACtB,mBAAK,OAAO,KAAK,SAAUI,MAAK;AAC/B,oBAAI,SAASA,KAAG,QAAS,WAAW,SAAU;AAC9C,uBAAO,SAAU,MAAO;AACvB,yBAAO,KAAK,aAAc,IAAK,MAAM;AAAA,gBACtC;AAAA,cACD;AACA,mBAAK,KAAK,KAAK,SAAUA,MAAI,SAAU;AACtC,oBAAK,OAAO,QAAQ,mBAAmB,eAAe,gBAAiB;AACtE,sBAAI,OAAO,QAAQ,eAAgBA,IAAG;AACtC,yBAAO,OAAO,CAAE,IAAK,IAAI,CAAC;AAAA,gBAC3B;AAAA,cACD;AAAA,YACD,OAAO;AACN,mBAAK,OAAO,KAAM,SAAUA,MAAK;AAChC,oBAAI,SAASA,KAAG,QAAS,WAAW,SAAU;AAC9C,uBAAO,SAAU,MAAO;AACvB,sBAAIpB,QAAO,OAAO,KAAK,qBAAqB,eAC3C,KAAK,iBAAkB,IAAK;AAC7B,yBAAOA,SAAQA,MAAK,UAAU;AAAA,gBAC/B;AAAA,cACD;AAIA,mBAAK,KAAK,KAAK,SAAUoB,MAAI,SAAU;AACtC,oBAAK,OAAO,QAAQ,mBAAmB,eAAe,gBAAiB;AACtE,sBAAIpB,OAAMiB,IAAG,OACZ,OAAO,QAAQ,eAAgBG,IAAG;AAEnC,sBAAK,MAAO;AAGX,oBAAApB,QAAO,KAAK,iBAAkB,IAAK;AACnC,wBAAKA,SAAQA,MAAK,UAAUoB,MAAK;AAChC,6BAAO,CAAE,IAAK;AAAA,oBACf;AAGA,4BAAQ,QAAQ,kBAAmBA,IAAG;AACtC,oBAAAH,KAAI;AACJ,2BAAU,OAAO,MAAOA,IAAI,GAAM;AACjC,sBAAAjB,QAAO,KAAK,iBAAkB,IAAK;AACnC,0BAAKA,SAAQA,MAAK,UAAUoB,MAAK;AAChC,+BAAO,CAAE,IAAK;AAAA,sBACf;AAAA,oBACD;AAAA,kBACD;AAEA,yBAAO,CAAC;AAAA,gBACT;AAAA,cACD;AAAA,YACD;AAGA,iBAAK,KAAK,MAAM,SAAU,KAAK,SAAU;AACxC,kBAAK,OAAO,QAAQ,yBAAyB,aAAc;AAC1D,uBAAO,QAAQ,qBAAsB,GAAI;AAAA,cAG1C,OAAO;AACN,uBAAO,QAAQ,iBAAkB,GAAI;AAAA,cACtC;AAAA,YACD;AAGA,iBAAK,KAAK,QAAQ,SAAU,WAAW,SAAU;AAChD,kBAAK,OAAO,QAAQ,2BAA2B,eAAe,gBAAiB;AAC9E,uBAAO,QAAQ,uBAAwB,SAAU;AAAA,cAClD;AAAA,YACD;AAOA,wBAAY,CAAC;AAIb,mBAAQ,SAAU,IAAK;AAEtB,kBAAI;AAEJ,cAAAT,iBAAgB,YAAa,EAAG,EAAE,YACjC,YAAY,UAAU,mDACL,UAAU;AAK5B,kBAAK,CAAC,GAAG,iBAAkB,YAAa,EAAE,QAAS;AAClD,0BAAU,KAAM,QAAQF,cAAa,eAAe,WAAW,GAAI;AAAA,cACpE;AAGA,kBAAK,CAAC,GAAG,iBAAkB,UAAU,UAAU,IAAK,EAAE,QAAS;AAC9D,0BAAU,KAAM,IAAK;AAAA,cACtB;AAKA,kBAAK,CAAC,GAAG,iBAAkB,OAAO,UAAU,IAAK,EAAE,QAAS;AAC3D,0BAAU,KAAM,UAAW;AAAA,cAC5B;AAMA,kBAAK,CAAC,GAAG,iBAAkB,UAAW,EAAE,QAAS;AAChD,0BAAU,KAAM,UAAW;AAAA,cAC5B;AAIA,sBAAQV,UAAS,cAAe,OAAQ;AACxC,oBAAM,aAAc,QAAQ,QAAS;AACrC,iBAAG,YAAa,KAAM,EAAE,aAAc,QAAQ,GAAI;AAQlD,cAAAY,iBAAgB,YAAa,EAAG,EAAE,WAAW;AAC7C,kBAAK,GAAG,iBAAkB,WAAY,EAAE,WAAW,GAAI;AACtD,0BAAU,KAAM,YAAY,WAAY;AAAA,cACzC;AAOA,sBAAQZ,UAAS,cAAe,OAAQ;AACxC,oBAAM,aAAc,QAAQ,EAAG;AAC/B,iBAAG,YAAa,KAAM;AACtB,kBAAK,CAAC,GAAG,iBAAkB,WAAY,EAAE,QAAS;AACjD,0BAAU,KAAM,QAAQU,cAAa,UAAUA,cAAa,OAC3DA,cAAa,YAAe;AAAA,cAC9B;AAAA,YACD,CAAE;AAEF,gBAAK,CAAC,QAAQ,QAAS;AAQtB,wBAAU,KAAM,MAAO;AAAA,YACxB;AAEA,wBAAY,UAAU,UAAU,IAAI,OAAQ,UAAU,KAAM,GAAI,CAAE;AAMlE,wBAAY,SAAUC,IAAG,GAAI;AAG5B,kBAAKA,OAAM,GAAI;AACd,+BAAe;AACf,uBAAO;AAAA,cACR;AAGA,kBAAI,UAAU,CAACA,GAAE,0BAA0B,CAAC,EAAE;AAC9C,kBAAK,SAAU;AACd,uBAAO;AAAA,cACR;AAOA,yBAAYA,GAAE,iBAAiBA,QAAS,EAAE,iBAAiB,KAC1DA,GAAE,wBAAyB,CAAE;AAAA;AAAA,gBAG7B;AAAA;AAGD,kBAAK,UAAU,KACZ,CAAC,QAAQ,gBAAgB,EAAE,wBAAyBA,EAAE,MAAM,SAAY;AAO1E,oBAAKA,OAAMX,aAAYW,GAAE,iBAAiB,gBACzC,KAAK,SAAU,cAAcA,EAAE,GAAI;AACnC,yBAAO;AAAA,gBACR;AAMA,oBAAK,MAAMX,aAAY,EAAE,iBAAiB,gBACzC,KAAK,SAAU,cAAc,CAAE,GAAI;AACnC,yBAAO;AAAA,gBACR;AAGA,uBAAO,YACJH,SAAQ,KAAM,WAAWc,EAAE,IAAId,SAAQ,KAAM,WAAW,CAAE,IAC5D;AAAA,cACF;AAEA,qBAAO,UAAU,IAAI,KAAK;AAAA,YAC3B;AAEA,mBAAOG;AAAA,UACR;AAEA,eAAK,UAAU,SAAU,MAAM,UAAW;AACzC,mBAAO,KAAM,MAAM,MAAM,MAAM,QAAS;AAAA,UACzC;AAEA,eAAK,kBAAkB,SAAU,MAAM,MAAO;AAC7C,wBAAa,IAAK;AAElB,gBAAK,kBACJ,CAAC,uBAAwB,OAAO,GAAI,MAClC,CAAC,aAAa,CAAC,UAAU,KAAM,IAAK,IAAM;AAE5C,kBAAI;AACH,oBAAI,MAAM,QAAQ,KAAM,MAAM,IAAK;AAGnC,oBAAK,OAAO,QAAQ;AAAA;AAAA,gBAIlB,KAAK,YAAY,KAAK,SAAS,aAAa,IAAK;AAClD,yBAAO;AAAA,gBACR;AAAA,cACD,SAAUiB,IAAI;AACb,uCAAwB,MAAM,IAAK;AAAA,cACpC;AAAA,YACD;AAEA,mBAAO,KAAM,MAAMjB,WAAU,MAAM,CAAE,IAAK,CAAE,EAAE,SAAS;AAAA,UACxD;AAEA,eAAK,WAAW,SAAU,SAAS,MAAO;AAOzC,iBAAO,QAAQ,iBAAiB,YAAaA,WAAW;AACvD,0BAAa,OAAQ;AAAA,YACtB;AACA,mBAAOG,QAAO,SAAU,SAAS,IAAK;AAAA,UACvC;AAGA,eAAK,OAAO,SAAU,MAAME,OAAO;AAOlC,iBAAO,KAAK,iBAAiB,SAAUL,WAAW;AACjD,0BAAa,IAAK;AAAA,YACnB;AAEA,gBAAI,KAAK,KAAK,WAAYK,MAAK,YAAY,CAAE,GAG5C,MAAM,MAAM,OAAO,KAAM,KAAK,YAAYA,MAAK,YAAY,CAAE,IAC5D,GAAI,MAAMA,OAAM,CAAC,cAAe,IAChC;AAEF,gBAAK,QAAQ,QAAY;AACxB,qBAAO;AAAA,YACR;AAEA,mBAAO,KAAK,aAAcA,KAAK;AAAA,UAChC;AAEA,eAAK,QAAQ,SAAU,KAAM;AAC5B,kBAAM,IAAI,MAAO,4CAA4C,GAAI;AAAA,UAClE;AAMA,UAAAF,QAAO,aAAa,SAAU,SAAU;AACvC,gBAAI,MACH,aAAa,CAAC,GACd,IAAI,GACJe,KAAI;AAOL,2BAAe,CAAC,QAAQ;AACxB,wBAAY,CAAC,QAAQ,cAAcvB,OAAM,KAAM,SAAS,CAAE;AAC1D,iBAAK,KAAM,SAAS,SAAU;AAE9B,gBAAK,cAAe;AACnB,qBAAU,OAAO,QAASuB,IAAI,GAAM;AACnC,oBAAK,SAAS,QAASA,EAAE,GAAI;AAC5B,sBAAI,WAAW,KAAMA,EAAE;AAAA,gBACxB;AAAA,cACD;AACA,qBAAQ,KAAM;AACb,uBAAO,KAAM,SAAS,WAAY,CAAE,GAAG,CAAE;AAAA,cAC1C;AAAA,YACD;AAIA,wBAAY;AAEZ,mBAAO;AAAA,UACR;AAEA,UAAAf,QAAO,GAAG,aAAa,WAAW;AACjC,mBAAO,KAAK,UAAWA,QAAO,WAAYR,OAAM,MAAO,IAAK,CAAE,CAAE;AAAA,UACjE;AAEA,iBAAOQ,QAAO,OAAO;AAAA;AAAA,YAGpB,aAAa;AAAA,YAEb,cAAc;AAAA,YAEd,OAAO;AAAA,YAEP,YAAY,CAAC;AAAA,YAEb,MAAM,CAAC;AAAA,YAEP,UAAU;AAAA,cACT,KAAK,EAAE,KAAK,cAAc,OAAO,KAAK;AAAA,cACtC,KAAK,EAAE,KAAK,aAAa;AAAA,cACzB,KAAK,EAAE,KAAK,mBAAmB,OAAO,KAAK;AAAA,cAC3C,KAAK,EAAE,KAAK,kBAAkB;AAAA,YAC/B;AAAA,YAEA,WAAW;AAAA,cACV,MAAM,SAAUgB,QAAQ;AACvB,gBAAAA,OAAO,CAAE,IAAIA,OAAO,CAAE,EAAE,QAAS,WAAW,SAAU;AAGtD,gBAAAA,OAAO,CAAE,KAAMA,OAAO,CAAE,KAAKA,OAAO,CAAE,KAAKA,OAAO,CAAE,KAAK,IACvD,QAAS,WAAW,SAAU;AAEhC,oBAAKA,OAAO,CAAE,MAAM,MAAO;AAC1B,kBAAAA,OAAO,CAAE,IAAI,MAAMA,OAAO,CAAE,IAAI;AAAA,gBACjC;AAEA,uBAAOA,OAAM,MAAO,GAAG,CAAE;AAAA,cAC1B;AAAA,cAEA,OAAO,SAAUA,QAAQ;AAYxB,gBAAAA,OAAO,CAAE,IAAIA,OAAO,CAAE,EAAE,YAAY;AAEpC,oBAAKA,OAAO,CAAE,EAAE,MAAO,GAAG,CAAE,MAAM,OAAQ;AAGzC,sBAAK,CAACA,OAAO,CAAE,GAAI;AAClB,yBAAK,MAAOA,OAAO,CAAE,CAAE;AAAA,kBACxB;AAIA,kBAAAA,OAAO,CAAE,IAAI,EAAGA,OAAO,CAAE,IACxBA,OAAO,CAAE,KAAMA,OAAO,CAAE,KAAK,KAC7B,KAAMA,OAAO,CAAE,MAAM,UAAUA,OAAO,CAAE,MAAM;AAE/C,kBAAAA,OAAO,CAAE,IAAI,EAAKA,OAAO,CAAE,IAAIA,OAAO,CAAE,KAAOA,OAAO,CAAE,MAAM;AAAA,gBAG/D,WAAYA,OAAO,CAAE,GAAI;AACxB,uBAAK,MAAOA,OAAO,CAAE,CAAE;AAAA,gBACxB;AAEA,uBAAOA;AAAA,cACR;AAAA,cAEA,QAAQ,SAAUA,QAAQ;AACzB,oBAAI,QACH,WAAW,CAACA,OAAO,CAAE,KAAKA,OAAO,CAAE;AAEpC,oBAAK,UAAU,MAAM,KAAMA,OAAO,CAAE,CAAE,GAAI;AACzC,yBAAO;AAAA,gBACR;AAGA,oBAAKA,OAAO,CAAE,GAAI;AACjB,kBAAAA,OAAO,CAAE,IAAIA,OAAO,CAAE,KAAKA,OAAO,CAAE,KAAK;AAAA,gBAG1C,WAAY,YAAY,QAAQ,KAAM,QAAS;AAAA,iBAG5C,SAAS,SAAU,UAAU,IAAK;AAAA,iBAGlC,SAAS,SAAS,QAAS,KAAK,SAAS,SAAS,MAAO,IAAI,SAAS,SAAW;AAGnF,kBAAAA,OAAO,CAAE,IAAIA,OAAO,CAAE,EAAE,MAAO,GAAG,MAAO;AACzC,kBAAAA,OAAO,CAAE,IAAI,SAAS,MAAO,GAAG,MAAO;AAAA,gBACxC;AAGA,uBAAOA,OAAM,MAAO,GAAG,CAAE;AAAA,cAC1B;AAAA,YACD;AAAA,YAEA,QAAQ;AAAA,cAEP,KAAK,SAAU,kBAAmB;AACjC,oBAAI,mBAAmB,iBAAiB,QAAS,WAAW,SAAU,EAAE,YAAY;AACpF,uBAAO,qBAAqB,MAC3B,WAAW;AACV,yBAAO;AAAA,gBACR,IACA,SAAU,MAAO;AAChB,yBAAO,SAAU,MAAM,gBAAiB;AAAA,gBACzC;AAAA,cACF;AAAA,cAEA,OAAO,SAAU,WAAY;AAC5B,oBAAI,UAAU,WAAY,YAAY,GAAI;AAE1C,uBAAO,YACJ,UAAU,IAAI,OAAQ,QAAQT,cAAa,MAAM,YAClD,MAAMA,cAAa,KAAM,MAC1B,WAAY,WAAW,SAAU,MAAO;AACvC,yBAAO,QAAQ;AAAA,oBACd,OAAO,KAAK,cAAc,YAAY,KAAK,aAC1C,OAAO,KAAK,iBAAiB,eAC5B,KAAK,aAAc,OAAQ,KAC5B;AAAA,kBACF;AAAA,gBACD,CAAE;AAAA,cACJ;AAAA,cAEA,MAAM,SAAUL,OAAM,UAAU,OAAQ;AACvC,uBAAO,SAAU,MAAO;AACvB,sBAAI,SAAS,KAAK,KAAM,MAAMA,KAAK;AAEnC,sBAAK,UAAU,MAAO;AACrB,2BAAO,aAAa;AAAA,kBACrB;AACA,sBAAK,CAAC,UAAW;AAChB,2BAAO;AAAA,kBACR;AAEA,4BAAU;AAEV,sBAAK,aAAa,KAAM;AACvB,2BAAO,WAAW;AAAA,kBACnB;AACA,sBAAK,aAAa,MAAO;AACxB,2BAAO,WAAW;AAAA,kBACnB;AACA,sBAAK,aAAa,MAAO;AACxB,2BAAO,SAAS,OAAO,QAAS,KAAM,MAAM;AAAA,kBAC7C;AACA,sBAAK,aAAa,MAAO;AACxB,2BAAO,SAAS,OAAO,QAAS,KAAM,IAAI;AAAA,kBAC3C;AACA,sBAAK,aAAa,MAAO;AACxB,2BAAO,SAAS,OAAO,MAAO,CAAC,MAAM,MAAO,MAAM;AAAA,kBACnD;AACA,sBAAK,aAAa,MAAO;AACxB,4BAAS,MAAM,OAAO,QAAS,aAAa,GAAI,IAAI,KAClD,QAAS,KAAM,IAAI;AAAA,kBACtB;AACA,sBAAK,aAAa,MAAO;AACxB,2BAAO,WAAW,SAAS,OAAO,MAAO,GAAG,MAAM,SAAS,CAAE,MAAM,QAAQ;AAAA,kBAC5E;AAEA,yBAAO;AAAA,gBACR;AAAA,cACD;AAAA,cAEA,OAAO,SAAU,MAAM,MAAM,WAAW,OAAO,MAAO;AACrD,oBAAI,SAAS,KAAK,MAAO,GAAG,CAAE,MAAM,OACnC,UAAU,KAAK,MAAO,EAAG,MAAM,QAC/B,SAAS,SAAS;AAEnB,uBAAO,UAAU,KAAK,SAAS;AAAA;AAAA,kBAG9B,SAAU,MAAO;AAChB,2BAAO,CAAC,CAAC,KAAK;AAAA,kBACf;AAAA,oBAEA,SAAU,MAAM,UAAU,KAAM;AAC/B,sBAAI,OAAO,YAAYJ,OAAM,WAAW,OACvCqB,OAAM,WAAW,UAAU,gBAAgB,mBAC3C,SAAS,KAAK,YACdjB,QAAO,UAAU,KAAK,SAAS,YAAY,GAC3C,WAAW,CAAC,OAAO,CAAC,QACpB,OAAO;AAER,sBAAK,QAAS;AAGb,wBAAK,QAAS;AACb,6BAAQiB,MAAM;AACb,wBAAArB,QAAO;AACP,+BAAUA,QAAOA,MAAMqB,IAAI,GAAM;AAChC,8BAAK,SACJ,SAAUrB,OAAMI,KAAK,IACrBJ,MAAK,aAAa,GAAI;AAEtB,mCAAO;AAAA,0BACR;AAAA,wBACD;AAGA,gCAAQqB,OAAM,SAAS,UAAU,CAAC,SAAS;AAAA,sBAC5C;AACA,6BAAO;AAAA,oBACR;AAEA,4BAAQ,CAAE,UAAU,OAAO,aAAa,OAAO,SAAU;AAGzD,wBAAK,WAAW,UAAW;AAG1B,mCAAa,OAAQ,OAAQ,MAAO,OAAQ,OAAQ,IAAI,CAAC;AACzD,8BAAQ,WAAY,IAAK,KAAK,CAAC;AAC/B,kCAAY,MAAO,CAAE,MAAM,WAAW,MAAO,CAAE;AAC/C,6BAAO,aAAa,MAAO,CAAE;AAC7B,sBAAArB,QAAO,aAAa,OAAO,WAAY,SAAU;AAEjD,6BAAUA,QAAO,EAAE,aAAaA,SAAQA,MAAMqB,IAAI;AAAA,uBAG/C,OAAO,YAAY,MAAO,MAAM,IAAI,GAAM;AAG5C,4BAAKrB,MAAK,aAAa,KAAK,EAAE,QAAQA,UAAS,MAAO;AACrD,qCAAY,IAAK,IAAI,CAAE,SAAS,WAAW,IAAK;AAChD;AAAA,wBACD;AAAA,sBACD;AAAA,oBAED,OAAO;AAGN,0BAAK,UAAW;AACf,qCAAa,KAAM,OAAQ,MAAO,KAAM,OAAQ,IAAI,CAAC;AACrD,gCAAQ,WAAY,IAAK,KAAK,CAAC;AAC/B,oCAAY,MAAO,CAAE,MAAM,WAAW,MAAO,CAAE;AAC/C,+BAAO;AAAA,sBACR;AAIA,0BAAK,SAAS,OAAQ;AAGrB,+BAAUA,QAAO,EAAE,aAAaA,SAAQA,MAAMqB,IAAI,MAC/C,OAAO,YAAY,MAAO,MAAM,IAAI,GAAM;AAE5C,+BAAO,SACN,SAAUrB,OAAMI,KAAK,IACrBJ,MAAK,aAAa,MAClB,EAAE,MAAO;AAGT,gCAAK,UAAW;AACf,2CAAaA,MAAM,OAAQ,MACxBA,MAAM,OAAQ,IAAI,CAAC;AACtB,yCAAY,IAAK,IAAI,CAAE,SAAS,IAAK;AAAA,4BACtC;AAEA,gCAAKA,UAAS,MAAO;AACpB;AAAA,4BACD;AAAA,0BACD;AAAA,wBACD;AAAA,sBACD;AAAA,oBACD;AAGA,4BAAQ;AACR,2BAAO,SAAS,SAAW,OAAO,UAAU,KAAK,OAAO,SAAS;AAAA,kBAClE;AAAA,gBACD;AAAA,cACF;AAAA,cAEA,QAAQ,SAAU,QAAQ,UAAW;AAMpC,oBAAI,MACH,KAAK,KAAK,QAAS,MAAO,KAAK,KAAK,WAAY,OAAO,YAAY,CAAE,KACpE,KAAK,MAAO,yBAAyB,MAAO;AAK9C,oBAAK,GAAI,OAAQ,GAAI;AACpB,yBAAO,GAAI,QAAS;AAAA,gBACrB;AAGA,oBAAK,GAAG,SAAS,GAAI;AACpB,yBAAO,CAAE,QAAQ,QAAQ,IAAI,QAAS;AACtC,yBAAO,KAAK,WAAW,eAAgB,OAAO,YAAY,CAAE,IAC3D,aAAc,SAAU,MAAMmB,UAAU;AACvC,wBAAI,KACH,UAAU,GAAI,MAAM,QAAS,GAC7BF,KAAI,QAAQ;AACb,2BAAQA,MAAM;AACb,4BAAMrB,SAAQ,KAAM,MAAM,QAASqB,EAAE,CAAE;AACvC,2BAAM,GAAI,IAAI,EAAGE,SAAS,GAAI,IAAI,QAASF,EAAE;AAAA,oBAC9C;AAAA,kBACD,CAAE,IACF,SAAU,MAAO;AAChB,2BAAO,GAAI,MAAM,GAAG,IAAK;AAAA,kBAC1B;AAAA,gBACF;AAEA,uBAAO;AAAA,cACR;AAAA,YACD;AAAA,YAEA,SAAS;AAAA;AAAA,cAGR,KAAK,aAAc,SAAU,UAAW;AAKvC,oBAAI,QAAQ,CAAC,GACZ,UAAU,CAAC,GACX,UAAUK,SAAS,SAAS,QAAS,UAAU,IAAK,CAAE;AAEvD,uBAAO,QAAS,OAAQ,IACvB,aAAc,SAAU,MAAMH,UAAS,UAAU,KAAM;AACtD,sBAAI,MACH,YAAY,QAAS,MAAM,MAAM,KAAK,CAAC,CAAE,GACzCF,KAAI,KAAK;AAGV,yBAAQA,MAAM;AACb,wBAAO,OAAO,UAAWA,EAAE,GAAM;AAChC,2BAAMA,EAAE,IAAI,EAAGE,SAASF,EAAE,IAAI;AAAA,oBAC/B;AAAA,kBACD;AAAA,gBACD,CAAE,IACF,SAAU,MAAM,UAAU,KAAM;AAC/B,wBAAO,CAAE,IAAI;AACb,0BAAS,OAAO,MAAM,KAAK,OAAQ;AAInC,wBAAO,CAAE,IAAI;AACb,yBAAO,CAAC,QAAQ,IAAI;AAAA,gBACrB;AAAA,cACF,CAAE;AAAA,cAEF,KAAK,aAAc,SAAU,UAAW;AACvC,uBAAO,SAAU,MAAO;AACvB,yBAAO,KAAM,UAAU,IAAK,EAAE,SAAS;AAAA,gBACxC;AAAA,cACD,CAAE;AAAA,cAEF,UAAU,aAAc,SAAU,MAAO;AACxC,uBAAO,KAAK,QAAS,WAAW,SAAU;AAC1C,uBAAO,SAAU,MAAO;AACvB,0BAAS,KAAK,eAAef,QAAO,KAAM,IAAK,GAAI,QAAS,IAAK,IAAI;AAAA,gBACtE;AAAA,cACD,CAAE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cASF,MAAM,aAAc,SAAU,MAAO;AAGpC,oBAAK,CAAC,YAAY,KAAM,QAAQ,EAAG,GAAI;AACtC,uBAAK,MAAO,uBAAuB,IAAK;AAAA,gBACzC;AACA,uBAAO,KAAK,QAAS,WAAW,SAAU,EAAE,YAAY;AACxD,uBAAO,SAAU,MAAO;AACvB,sBAAI;AACJ,qBAAG;AACF,wBAAO,WAAW,iBACjB,KAAK,OACL,KAAK,aAAc,UAAW,KAAK,KAAK,aAAc,MAAO,GAAM;AAEnE,iCAAW,SAAS,YAAY;AAChC,6BAAO,aAAa,QAAQ,SAAS,QAAS,OAAO,GAAI,MAAM;AAAA,oBAChE;AAAA,kBACD,UAAY,OAAO,KAAK,eAAgB,KAAK,aAAa;AAC1D,yBAAO;AAAA,gBACR;AAAA,cACD,CAAE;AAAA;AAAA,cAGF,QAAQ,SAAU,MAAO;AACxB,oBAAIqB,QAAO9B,QAAO,YAAYA,QAAO,SAAS;AAC9C,uBAAO8B,SAAQA,MAAK,MAAO,CAAE,MAAM,KAAK;AAAA,cACzC;AAAA,cAEA,MAAM,SAAU,MAAO;AACtB,uBAAO,SAASZ;AAAA,cACjB;AAAA,cAEA,OAAO,SAAU,MAAO;AACvB,uBAAO,SAAS,kBAAkB,KACjCZ,UAAS,SAAS,KAClB,CAAC,EAAG,KAAK,QAAQ,KAAK,QAAQ,CAAC,KAAK;AAAA,cACtC;AAAA;AAAA,cAGA,SAAS,qBAAsB,KAAM;AAAA,cACrC,UAAU,qBAAsB,IAAK;AAAA,cAErC,SAAS,SAAU,MAAO;AAIzB,uBAAS,SAAU,MAAM,OAAQ,KAAK,CAAC,CAAC,KAAK,WAC1C,SAAU,MAAM,QAAS,KAAK,CAAC,CAAC,KAAK;AAAA,cACzC;AAAA,cAEA,UAAU,SAAU,MAAO;AAM1B,oBAAK,KAAK,YAAa;AAEtB,uBAAK,WAAW;AAAA,gBACjB;AAEA,uBAAO,KAAK,aAAa;AAAA,cAC1B;AAAA;AAAA,cAGA,OAAO,SAAU,MAAO;AAMvB,qBAAM,OAAO,KAAK,YAAY,MAAM,OAAO,KAAK,aAAc;AAC7D,sBAAK,KAAK,WAAW,GAAI;AACxB,2BAAO;AAAA,kBACR;AAAA,gBACD;AACA,uBAAO;AAAA,cACR;AAAA,cAEA,QAAQ,SAAU,MAAO;AACxB,uBAAO,CAAC,KAAK,QAAQ,MAAO,IAAK;AAAA,cAClC;AAAA;AAAA,cAGA,QAAQ,SAAU,MAAO;AACxB,uBAAO,QAAQ,KAAM,KAAK,QAAS;AAAA,cACpC;AAAA,cAEA,OAAO,SAAU,MAAO;AACvB,uBAAO,QAAQ,KAAM,KAAK,QAAS;AAAA,cACpC;AAAA,cAEA,QAAQ,SAAU,MAAO;AACxB,uBAAO,SAAU,MAAM,OAAQ,KAAK,KAAK,SAAS,YACjD,SAAU,MAAM,QAAS;AAAA,cAC3B;AAAA,cAEA,MAAM,SAAU,MAAO;AACtB,oBAAI;AACJ,uBAAO,SAAU,MAAM,OAAQ,KAAK,KAAK,SAAS;AAAA;AAAA;AAAA,kBAK7C,OAAO,KAAK,aAAc,MAAO,MAAO,QAC3C,KAAK,YAAY,MAAM;AAAA,cAC1B;AAAA;AAAA,cAGA,OAAO,uBAAwB,WAAW;AACzC,uBAAO,CAAE,CAAE;AAAA,cACZ,CAAE;AAAA,cAEF,MAAM,uBAAwB,SAAU,eAAeO,SAAS;AAC/D,uBAAO,CAAEA,UAAS,CAAE;AAAA,cACrB,CAAE;AAAA,cAEF,IAAI,uBAAwB,SAAU,eAAeA,SAAQ,UAAW;AACvE,uBAAO,CAAE,WAAW,IAAI,WAAWA,UAAS,QAAS;AAAA,cACtD,CAAE;AAAA,cAEF,MAAM,uBAAwB,SAAU,cAAcA,SAAS;AAC9D,oBAAIW,KAAI;AACR,uBAAQA,KAAIX,SAAQW,MAAK,GAAI;AAC5B,+BAAa,KAAMA,EAAE;AAAA,gBACtB;AACA,uBAAO;AAAA,cACR,CAAE;AAAA,cAEF,KAAK,uBAAwB,SAAU,cAAcX,SAAS;AAC7D,oBAAIW,KAAI;AACR,uBAAQA,KAAIX,SAAQW,MAAK,GAAI;AAC5B,+BAAa,KAAMA,EAAE;AAAA,gBACtB;AACA,uBAAO;AAAA,cACR,CAAE;AAAA,cAEF,IAAI,uBAAwB,SAAU,cAAcX,SAAQ,UAAW;AACtE,oBAAIW;AAEJ,oBAAK,WAAW,GAAI;AACnB,kBAAAA,KAAI,WAAWX;AAAA,gBAChB,WAAY,WAAWA,SAAS;AAC/B,kBAAAW,KAAIX;AAAA,gBACL,OAAO;AACN,kBAAAW,KAAI;AAAA,gBACL;AAEA,uBAAQ,EAAEA,MAAK,KAAK;AACnB,+BAAa,KAAMA,EAAE;AAAA,gBACtB;AACA,uBAAO;AAAA,cACR,CAAE;AAAA,cAEF,IAAI,uBAAwB,SAAU,cAAcX,SAAQ,UAAW;AACtE,oBAAIW,KAAI,WAAW,IAAI,WAAWX,UAAS;AAC3C,uBAAQ,EAAEW,KAAIX,WAAU;AACvB,+BAAa,KAAMW,EAAE;AAAA,gBACtB;AACA,uBAAO;AAAA,cACR,CAAE;AAAA,YACH;AAAA,UACD;AAEA,eAAK,QAAQ,MAAM,KAAK,QAAQ;AAGhC,eAAM,KAAK,EAAE,OAAO,MAAM,UAAU,MAAM,MAAM,MAAM,UAAU,MAAM,OAAO,KAAK,GAAI;AACrF,iBAAK,QAAS,CAAE,IAAI,kBAAmB,CAAE;AAAA,UAC1C;AACA,eAAM,KAAK,EAAE,QAAQ,MAAM,OAAO,KAAK,GAAI;AAC1C,iBAAK,QAAS,CAAE,IAAI,mBAAoB,CAAE;AAAA,UAC3C;AAGA,mBAAS,aAAa;AAAA,UAAC;AACvB,qBAAW,YAAY,KAAK,UAAU,KAAK;AAC3C,eAAK,aAAa,IAAI,WAAW;AAEjC,mBAAS,SAAU,UAAU,WAAY;AACxC,gBAAI,SAASC,QAAO,QAAQ,MAC3B,OAAO,QAAQ,YACf,SAAS,WAAY,WAAW,GAAI;AAErC,gBAAK,QAAS;AACb,qBAAO,YAAY,IAAI,OAAO,MAAO,CAAE;AAAA,YACxC;AAEA,oBAAQ;AACR,qBAAS,CAAC;AACV,yBAAa,KAAK;AAElB,mBAAQ,OAAQ;AAGf,kBAAK,CAAC,YAAaA,SAAQ,OAAO,KAAM,KAAM,IAAM;AACnD,oBAAKA,QAAQ;AAGZ,0BAAQ,MAAM,MAAOA,OAAO,CAAE,EAAE,MAAO,KAAK;AAAA,gBAC7C;AACA,uBAAO,KAAQ,SAAS,CAAC,CAAI;AAAA,cAC9B;AAEA,wBAAU;AAGV,kBAAOA,SAAQ,mBAAmB,KAAM,KAAM,GAAM;AACnD,0BAAUA,OAAM,MAAM;AACtB,uBAAO,KAAM;AAAA,kBACZ,OAAO;AAAA;AAAA,kBAGP,MAAMA,OAAO,CAAE,EAAE,QAAS,UAAU,GAAI;AAAA,gBACzC,CAAE;AACF,wBAAQ,MAAM,MAAO,QAAQ,MAAO;AAAA,cACrC;AAGA,mBAAM,QAAQ,KAAK,QAAS;AAC3B,qBAAOA,SAAQ,UAAW,IAAK,EAAE,KAAM,KAAM,OAAS,CAAC,WAAY,IAAK,MACrEA,SAAQ,WAAY,IAAK,EAAGA,MAAM,KAAQ;AAC5C,4BAAUA,OAAM,MAAM;AACtB,yBAAO,KAAM;AAAA,oBACZ,OAAO;AAAA,oBACP;AAAA,oBACA,SAASA;AAAA,kBACV,CAAE;AACF,0BAAQ,MAAM,MAAO,QAAQ,MAAO;AAAA,gBACrC;AAAA,cACD;AAEA,kBAAK,CAAC,SAAU;AACf;AAAA,cACD;AAAA,YACD;AAKA,gBAAK,WAAY;AAChB,qBAAO,MAAM;AAAA,YACd;AAEA,mBAAO,QACN,KAAK,MAAO,QAAS;AAAA;AAAA,cAGrB,WAAY,UAAU,MAAO,EAAE,MAAO,CAAE;AAAA;AAAA,UAC1C;AAEA,mBAAS,WAAY,QAAS;AAC7B,gBAAID,KAAI,GACP,MAAM,OAAO,QACb,WAAW;AACZ,mBAAQA,KAAI,KAAKA,MAAM;AACtB,0BAAY,OAAQA,EAAE,EAAE;AAAA,YACzB;AACA,mBAAO;AAAA,UACR;AAEA,mBAAS,cAAe,SAAS,YAAY,MAAO;AACnD,gBAAII,OAAM,WAAW,KACpB,OAAO,WAAW,MAClB,MAAM,QAAQA,MACd,mBAAmB,QAAQ,QAAQ,cACnC,WAAW;AAEZ,mBAAO,WAAW;AAAA;AAAA,cAGjB,SAAU,MAAM,SAAS,KAAM;AAC9B,uBAAU,OAAO,KAAMA,IAAI,GAAM;AAChC,sBAAK,KAAK,aAAa,KAAK,kBAAmB;AAC9C,2BAAO,QAAS,MAAM,SAAS,GAAI;AAAA,kBACpC;AAAA,gBACD;AACA,uBAAO;AAAA,cACR;AAAA;AAAA;AAAA,cAGA,SAAU,MAAM,SAAS,KAAM;AAC9B,oBAAI,UAAU,YACb,WAAW,CAAE,SAAS,QAAS;AAGhC,oBAAK,KAAM;AACV,yBAAU,OAAO,KAAMA,IAAI,GAAM;AAChC,wBAAK,KAAK,aAAa,KAAK,kBAAmB;AAC9C,0BAAK,QAAS,MAAM,SAAS,GAAI,GAAI;AACpC,+BAAO;AAAA,sBACR;AAAA,oBACD;AAAA,kBACD;AAAA,gBACD,OAAO;AACN,yBAAU,OAAO,KAAMA,IAAI,GAAM;AAChC,wBAAK,KAAK,aAAa,KAAK,kBAAmB;AAC9C,mCAAa,KAAM,OAAQ,MAAO,KAAM,OAAQ,IAAI,CAAC;AAErD,0BAAK,QAAQ,SAAU,MAAM,IAAK,GAAI;AACrC,+BAAO,KAAMA,IAAI,KAAK;AAAA,sBACvB,YAAc,WAAW,WAAY,GAAI,MACxC,SAAU,CAAE,MAAM,WAAW,SAAU,CAAE,MAAM,UAAW;AAG1D,+BAAS,SAAU,CAAE,IAAI,SAAU,CAAE;AAAA,sBACtC,OAAO;AAGN,mCAAY,GAAI,IAAI;AAGpB,4BAAO,SAAU,CAAE,IAAI,QAAS,MAAM,SAAS,GAAI,GAAM;AACxD,iCAAO;AAAA,wBACR;AAAA,sBACD;AAAA,oBACD;AAAA,kBACD;AAAA,gBACD;AACA,uBAAO;AAAA,cACR;AAAA;AAAA,UACF;AAEA,mBAAS,eAAgB,UAAW;AACnC,mBAAO,SAAS,SAAS,IACxB,SAAU,MAAM,SAAS,KAAM;AAC9B,kBAAIJ,KAAI,SAAS;AACjB,qBAAQA,MAAM;AACb,oBAAK,CAAC,SAAUA,EAAE,EAAG,MAAM,SAAS,GAAI,GAAI;AAC3C,yBAAO;AAAA,gBACR;AAAA,cACD;AACA,qBAAO;AAAA,YACR,IACA,SAAU,CAAE;AAAA,UACd;AAEA,mBAAS,iBAAkB,UAAU,UAAU,SAAU;AACxD,gBAAIA,KAAI,GACP,MAAM,SAAS;AAChB,mBAAQA,KAAI,KAAKA,MAAM;AACtB,mBAAM,UAAU,SAAUA,EAAE,GAAG,OAAQ;AAAA,YACxC;AACA,mBAAO;AAAA,UACR;AAEA,mBAAS,SAAU,WAAWO,MAAK,QAAQ,SAAS,KAAM;AACzD,gBAAI,MACH,eAAe,CAAC,GAChBP,KAAI,GACJ,MAAM,UAAU,QAChB,SAASO,QAAO;AAEjB,mBAAQP,KAAI,KAAKA,MAAM;AACtB,kBAAO,OAAO,UAAWA,EAAE,GAAM;AAChC,oBAAK,CAAC,UAAU,OAAQ,MAAM,SAAS,GAAI,GAAI;AAC9C,+BAAa,KAAM,IAAK;AACxB,sBAAK,QAAS;AACb,oBAAAO,KAAI,KAAMP,EAAE;AAAA,kBACb;AAAA,gBACD;AAAA,cACD;AAAA,YACD;AAEA,mBAAO;AAAA,UACR;AAEA,mBAAS,WAAY,WAAW,UAAU,SAAS,YAAY,YAAY,cAAe;AACzF,gBAAK,cAAc,CAAC,WAAY,OAAQ,GAAI;AAC3C,2BAAa,WAAY,UAAW;AAAA,YACrC;AACA,gBAAK,cAAc,CAAC,WAAY,OAAQ,GAAI;AAC3C,2BAAa,WAAY,YAAY,YAAa;AAAA,YACnD;AACA,mBAAO,aAAc,SAAU,MAAM,SAAS,SAAS,KAAM;AAC5D,kBAAI,MAAMA,IAAG,MAAM,YAClB,SAAS,CAAC,GACV,UAAU,CAAC,GACX,cAAc,QAAQ,QAGtB,QAAQ,QACP;AAAA,gBAAkB,YAAY;AAAA,gBAC7B,QAAQ,WAAW,CAAE,OAAQ,IAAI;AAAA,gBAAS,CAAC;AAAA,cAAE,GAG/C,YAAY,cAAe,QAAQ,CAAC,YACnC,SAAU,OAAO,QAAQ,WAAW,SAAS,GAAI,IACjD;AAEF,kBAAK,SAAU;AAId,6BAAa,eAAgB,OAAO,YAAY,eAAe;AAAA;AAAA,kBAG9D,CAAC;AAAA;AAAA;AAAA,kBAGD;AAAA;AAGD,wBAAS,WAAW,YAAY,SAAS,GAAI;AAAA,cAC9C,OAAO;AACN,6BAAa;AAAA,cACd;AAGA,kBAAK,YAAa;AACjB,uBAAO,SAAU,YAAY,OAAQ;AACrC,2BAAY,MAAM,CAAC,GAAG,SAAS,GAAI;AAGnC,gBAAAA,KAAI,KAAK;AACT,uBAAQA,MAAM;AACb,sBAAO,OAAO,KAAMA,EAAE,GAAM;AAC3B,+BAAY,QAASA,EAAE,CAAE,IAAI,EAAG,UAAW,QAASA,EAAE,CAAE,IAAI;AAAA,kBAC7D;AAAA,gBACD;AAAA,cACD;AAEA,kBAAK,MAAO;AACX,oBAAK,cAAc,WAAY;AAC9B,sBAAK,YAAa;AAGjB,2BAAO,CAAC;AACR,oBAAAA,KAAI,WAAW;AACf,2BAAQA,MAAM;AACb,0BAAO,OAAO,WAAYA,EAAE,GAAM;AAGjC,6BAAK,KAAQ,UAAWA,EAAE,IAAI,IAAO;AAAA,sBACtC;AAAA,oBACD;AACA,+BAAY,MAAQ,aAAa,CAAC,GAAK,MAAM,GAAI;AAAA,kBAClD;AAGA,kBAAAA,KAAI,WAAW;AACf,yBAAQA,MAAM;AACb,yBAAO,OAAO,WAAYA,EAAE,OACzB,OAAO,aAAarB,SAAQ,KAAM,MAAM,IAAK,IAAI,OAAQqB,EAAE,KAAM,IAAK;AAExE,2BAAM,IAAK,IAAI,EAAG,QAAS,IAAK,IAAI;AAAA,oBACrC;AAAA,kBACD;AAAA,gBACD;AAAA,cAGD,OAAO;AACN,6BAAa;AAAA,kBACZ,eAAe,UACd,WAAW,OAAQ,aAAa,WAAW,MAAO,IAClD;AAAA,gBACF;AACA,oBAAK,YAAa;AACjB,6BAAY,MAAM,SAAS,YAAY,GAAI;AAAA,gBAC5C,OAAO;AACN,kBAAAtB,MAAK,MAAO,SAAS,UAAW;AAAA,gBACjC;AAAA,cACD;AAAA,YACD,CAAE;AAAA,UACH;AAEA,mBAAS,kBAAmB,QAAS;AACpC,gBAAI,cAAc,SAAS,GAC1B,MAAM,OAAO,QACb,kBAAkB,KAAK,SAAU,OAAQ,CAAE,EAAE,IAAK,GAClD,mBAAmB,mBAAmB,KAAK,SAAU,GAAI,GACzDsB,KAAI,kBAAkB,IAAI,GAG1B,eAAe,cAAe,SAAU,MAAO;AAC9C,qBAAO,SAAS;AAAA,YACjB,GAAG,kBAAkB,IAAK,GAC1B,kBAAkB,cAAe,SAAU,MAAO;AACjD,qBAAOrB,SAAQ,KAAM,cAAc,IAAK,IAAI;AAAA,YAC7C,GAAG,kBAAkB,IAAK,GAC1B,WAAW,CAAE,SAAU,MAAM,SAAS,KAAM;AAM3C,kBAAI,MAAQ,CAAC,oBAAqB,OAAO,WAAW,uBACjD,eAAe,SAAU,WAC1B,aAAc,MAAM,SAAS,GAAI,IACjC,gBAAiB,MAAM,SAAS,GAAI;AAItC,6BAAe;AACf,qBAAO;AAAA,YACR,CAAE;AAEH,mBAAQqB,KAAI,KAAKA,MAAM;AACtB,kBAAO,UAAU,KAAK,SAAU,OAAQA,EAAE,EAAE,IAAK,GAAM;AACtD,2BAAW,CAAE,cAAe,eAAgB,QAAS,GAAG,OAAQ,CAAE;AAAA,cACnE,OAAO;AACN,0BAAU,KAAK,OAAQ,OAAQA,EAAE,EAAE,IAAK,EAAE,MAAO,MAAM,OAAQA,EAAE,EAAE,OAAQ;AAG3E,oBAAK,QAAS,OAAQ,GAAI;AAGzB,sBAAI,EAAEA;AACN,yBAAQ,IAAI,KAAK,KAAM;AACtB,wBAAK,KAAK,SAAU,OAAQ,CAAE,EAAE,IAAK,GAAI;AACxC;AAAA,oBACD;AAAA,kBACD;AACA,yBAAO;AAAA,oBACNA,KAAI,KAAK,eAAgB,QAAS;AAAA,oBAClCA,KAAI,KAAK;AAAA;AAAA,sBAGR,OAAO,MAAO,GAAGA,KAAI,CAAE,EACrB,OAAQ,EAAE,OAAO,OAAQA,KAAI,CAAE,EAAE,SAAS,MAAM,MAAM,GAAG,CAAE;AAAA,oBAC9D,EAAE,QAAS,UAAU,IAAK;AAAA,oBAC1B;AAAA,oBACAA,KAAI,KAAK,kBAAmB,OAAO,MAAOA,IAAG,CAAE,CAAE;AAAA,oBACjD,IAAI,OAAO,kBAAqB,SAAS,OAAO,MAAO,CAAE,CAAI;AAAA,oBAC7D,IAAI,OAAO,WAAY,MAAO;AAAA,kBAC/B;AAAA,gBACD;AACA,yBAAS,KAAM,OAAQ;AAAA,cACxB;AAAA,YACD;AAEA,mBAAO,eAAgB,QAAS;AAAA,UACjC;AAEA,mBAAS,yBAA0B,iBAAiB,aAAc;AACjE,gBAAI,QAAQ,YAAY,SAAS,GAChC,YAAY,gBAAgB,SAAS,GACrC,eAAe,SAAU,MAAM,SAAS,KAAK,SAAS,WAAY;AACjE,kBAAI,MAAM,GAAG,SACZ,eAAe,GACfA,KAAI,KACJ,YAAY,QAAQ,CAAC,GACrB,aAAa,CAAC,GACd,gBAAgB,kBAGhB,QAAQ,QAAQ,aAAa,KAAK,KAAK,IAAK,KAAK,SAAU,GAG3D,gBAAkB,WAAW,iBAAiB,OAAO,IAAI,KAAK,OAAO,KAAK,KAC1E,MAAM,MAAM;AAEb,kBAAK,WAAY;AAMhB,mCAAmB,WAAWlB,aAAY,WAAW;AAAA,cACtD;AAMA,qBAAQkB,OAAM,QAAS,OAAO,MAAOA,EAAE,MAAO,MAAMA,MAAM;AACzD,oBAAK,aAAa,MAAO;AACxB,sBAAI;AAMJ,sBAAK,CAAC,WAAW,KAAK,iBAAiBlB,WAAW;AACjD,gCAAa,IAAK;AAClB,0BAAM,CAAC;AAAA,kBACR;AACA,yBAAU,UAAU,gBAAiB,GAAI,GAAM;AAC9C,wBAAK,QAAS,MAAM,WAAWA,WAAU,GAAI,GAAI;AAChD,sBAAAJ,MAAK,KAAM,SAAS,IAAK;AACzB;AAAA,oBACD;AAAA,kBACD;AACA,sBAAK,WAAY;AAChB,8BAAU;AAAA,kBACX;AAAA,gBACD;AAGA,oBAAK,OAAQ;AAGZ,sBAAO,OAAO,CAAC,WAAW,MAAS;AAClC;AAAA,kBACD;AAGA,sBAAK,MAAO;AACX,8BAAU,KAAM,IAAK;AAAA,kBACtB;AAAA,gBACD;AAAA,cACD;AAIA,8BAAgBsB;AAShB,kBAAK,SAASA,OAAM,cAAe;AAClC,oBAAI;AACJ,uBAAU,UAAU,YAAa,GAAI,GAAM;AAC1C,0BAAS,WAAW,YAAY,SAAS,GAAI;AAAA,gBAC9C;AAEA,oBAAK,MAAO;AAGX,sBAAK,eAAe,GAAI;AACvB,2BAAQA,MAAM;AACb,0BAAK,EAAG,UAAWA,EAAE,KAAK,WAAYA,EAAE,IAAM;AAC7C,mCAAYA,EAAE,IAAI,IAAI,KAAM,OAAQ;AAAA,sBACrC;AAAA,oBACD;AAAA,kBACD;AAGA,+BAAa,SAAU,UAAW;AAAA,gBACnC;AAGA,gBAAAtB,MAAK,MAAO,SAAS,UAAW;AAGhC,oBAAK,aAAa,CAAC,QAAQ,WAAW,SAAS,KAC5C,eAAe,YAAY,SAAW,GAAI;AAE5C,kBAAAO,QAAO,WAAY,OAAQ;AAAA,gBAC5B;AAAA,cACD;AAGA,kBAAK,WAAY;AAChB,0BAAU;AACV,mCAAmB;AAAA,cACpB;AAEA,qBAAO;AAAA,YACR;AAED,mBAAO,QACN,aAAc,YAAa,IAC3B;AAAA,UACF;AAEA,mBAASoB,SAAS,UAAUJ,QAAgC;AAC3D,gBAAID,IACH,cAAc,CAAC,GACf,kBAAkB,CAAC,GACnB,SAAS,cAAe,WAAW,GAAI;AAExC,gBAAK,CAAC,QAAS;AAGd,kBAAK,CAACC,QAAQ;AACb,gBAAAA,SAAQ,SAAU,QAAS;AAAA,cAC5B;AACA,cAAAD,KAAIC,OAAM;AACV,qBAAQD,MAAM;AACb,yBAAS,kBAAmBC,OAAOD,EAAE,CAAE;AACvC,oBAAK,OAAQ,OAAQ,GAAI;AACxB,8BAAY,KAAM,MAAO;AAAA,gBAC1B,OAAO;AACN,kCAAgB,KAAM,MAAO;AAAA,gBAC9B;AAAA,cACD;AAGA,uBAAS;AAAA,gBAAe;AAAA,gBACvB,yBAA0B,iBAAiB,WAAY;AAAA,cAAE;AAG1D,qBAAO,WAAW;AAAA,YACnB;AACA,mBAAO;AAAA,UACR;AAWA,mBAAS,OAAQ,UAAU,SAAS,SAAS,MAAO;AACnD,gBAAIA,IAAG,QAAQQ,QAAO,MAAMC,OAC3B,WAAW,OAAO,aAAa,cAAc,UAC7CR,SAAQ,CAAC,QAAQ,SAAY,WAAW,SAAS,YAAY,QAAW;AAEzE,sBAAU,WAAW,CAAC;AAItB,gBAAKA,OAAM,WAAW,GAAI;AAGzB,uBAASA,OAAO,CAAE,IAAIA,OAAO,CAAE,EAAE,MAAO,CAAE;AAC1C,kBAAK,OAAO,SAAS,MAAOO,SAAQ,OAAQ,CAAE,GAAI,SAAS,QACzD,QAAQ,aAAa,KAAK,kBAAkB,KAAK,SAAU,OAAQ,CAAE,EAAE,IAAK,GAAI;AAEjF,2BAAY,KAAK,KAAK;AAAA,kBACrBA,OAAM,QAAS,CAAE,EAAE,QAAS,WAAW,SAAU;AAAA,kBACjD;AAAA,gBACD,KAAK,CAAC,GAAK,CAAE;AACb,oBAAK,CAAC,SAAU;AACf,yBAAO;AAAA,gBAGR,WAAY,UAAW;AACtB,4BAAU,QAAQ;AAAA,gBACnB;AAEA,2BAAW,SAAS,MAAO,OAAO,MAAM,EAAE,MAAM,MAAO;AAAA,cACxD;AAGA,cAAAR,KAAI,UAAU,aAAa,KAAM,QAAS,IAAI,IAAI,OAAO;AACzD,qBAAQA,MAAM;AACb,gBAAAQ,SAAQ,OAAQR,EAAE;AAGlB,oBAAK,KAAK,SAAY,OAAOQ,OAAM,IAAO,GAAI;AAC7C;AAAA,gBACD;AACA,oBAAOC,QAAO,KAAK,KAAM,IAAK,GAAM;AAGnC,sBAAO,OAAOA;AAAA,oBACbD,OAAM,QAAS,CAAE,EAAE,QAAS,WAAW,SAAU;AAAA,oBACjD,SAAS,KAAM,OAAQ,CAAE,EAAE,IAAK,KAC/B,YAAa,QAAQ,UAAW,KAAK;AAAA,kBACvC,GAAM;AAGL,2BAAO,OAAQR,IAAG,CAAE;AACpB,+BAAW,KAAK,UAAU,WAAY,MAAO;AAC7C,wBAAK,CAAC,UAAW;AAChB,sBAAAtB,MAAK,MAAO,SAAS,IAAK;AAC1B,6BAAO;AAAA,oBACR;AAEA;AAAA,kBACD;AAAA,gBACD;AAAA,cACD;AAAA,YACD;AAIA,aAAE,YAAY2B,SAAS,UAAUJ,MAAM;AAAA,cACtC;AAAA,cACA;AAAA,cACA,CAAC;AAAA,cACD;AAAA,cACA,CAAC,WAAW,SAAS,KAAM,QAAS,KAAK,YAAa,QAAQ,UAAW,KAAK;AAAA,YAC/E;AACA,mBAAO;AAAA,UACR;AAMA,kBAAQ,aAAa,QAAQ,MAAO,EAAG,EAAE,KAAM,SAAU,EAAE,KAAM,EAAG,MAAM;AAG1E,sBAAY;AAIZ,kBAAQ,eAAe,OAAQ,SAAU,IAAK;AAG7C,mBAAO,GAAG,wBAAyBnB,UAAS,cAAe,UAAW,CAAE,IAAI;AAAA,UAC7E,CAAE;AAEF,UAAAG,QAAO,OAAO;AAGd,UAAAA,QAAO,KAAM,GAAI,IAAIA,QAAO,KAAK;AACjC,UAAAA,QAAO,SAASA,QAAO;AAKvB,eAAK,UAAUoB;AACf,eAAK,SAAS;AACd,eAAK,cAAc;AAEnB,eAAK,SAASpB,QAAO;AACrB,eAAK,UAAUA,QAAO;AACtB,eAAK,QAAQA,QAAO;AACpB,eAAK,YAAYA,QAAO;AACxB,eAAK,UAAUA,QAAO;AACtB,eAAK,aAAaA,QAAO;AAAA,QAIzB,GAAI;AAGJ,YAAI,MAAM,SAAU,MAAMmB,MAAK,OAAQ;AACtC,cAAI,UAAU,CAAC,GACd,WAAW,UAAU;AAEtB,kBAAU,OAAO,KAAMA,IAAI,MAAO,KAAK,aAAa,GAAI;AACvD,gBAAK,KAAK,aAAa,GAAI;AAC1B,kBAAK,YAAYnB,QAAQ,IAAK,EAAE,GAAI,KAAM,GAAI;AAC7C;AAAA,cACD;AACA,sBAAQ,KAAM,IAAK;AAAA,YACpB;AAAA,UACD;AACA,iBAAO;AAAA,QACR;AAGA,YAAI,WAAW,SAAUyB,IAAG,MAAO;AAClC,cAAI,UAAU,CAAC;AAEf,iBAAQA,IAAGA,KAAIA,GAAE,aAAc;AAC9B,gBAAKA,GAAE,aAAa,KAAKA,OAAM,MAAO;AACrC,sBAAQ,KAAMA,EAAE;AAAA,YACjB;AAAA,UACD;AAEA,iBAAO;AAAA,QACR;AAGA,YAAI,gBAAgBzB,QAAO,KAAK,MAAM;AAEtC,YAAI,aAAe;AAKnB,iBAAS,OAAQ,UAAU,WAAW,KAAM;AAC3C,cAAKL,YAAY,SAAU,GAAI;AAC9B,mBAAOK,QAAO,KAAM,UAAU,SAAU,MAAM,GAAI;AACjD,qBAAO,CAAC,CAAC,UAAU,KAAM,MAAM,GAAG,IAAK,MAAM;AAAA,YAC9C,CAAE;AAAA,UACH;AAGA,cAAK,UAAU,UAAW;AACzB,mBAAOA,QAAO,KAAM,UAAU,SAAU,MAAO;AAC9C,qBAAS,SAAS,cAAgB;AAAA,YACnC,CAAE;AAAA,UACH;AAGA,cAAK,OAAO,cAAc,UAAW;AACpC,mBAAOA,QAAO,KAAM,UAAU,SAAU,MAAO;AAC9C,qBAASN,SAAQ,KAAM,WAAW,IAAK,IAAI,OAAS;AAAA,YACrD,CAAE;AAAA,UACH;AAGA,iBAAOM,QAAO,OAAQ,WAAW,UAAU,GAAI;AAAA,QAChD;AAEA,QAAAA,QAAO,SAAS,SAAU,MAAM,OAAO,KAAM;AAC5C,cAAI,OAAO,MAAO,CAAE;AAEpB,cAAK,KAAM;AACV,mBAAO,UAAU,OAAO;AAAA,UACzB;AAEA,cAAK,MAAM,WAAW,KAAK,KAAK,aAAa,GAAI;AAChD,mBAAOA,QAAO,KAAK,gBAAiB,MAAM,IAAK,IAAI,CAAE,IAAK,IAAI,CAAC;AAAA,UAChE;AAEA,iBAAOA,QAAO,KAAK,QAAS,MAAMA,QAAO,KAAM,OAAO,SAAU0B,OAAO;AACtE,mBAAOA,MAAK,aAAa;AAAA,UAC1B,CAAE,CAAE;AAAA,QACL;AAEA,QAAA1B,QAAO,GAAG,OAAQ;AAAA,UACjB,MAAM,SAAU,UAAW;AAC1B,gBAAI,GAAG,KACN,MAAM,KAAK,QACX2B,QAAO;AAER,gBAAK,OAAO,aAAa,UAAW;AACnC,qBAAO,KAAK,UAAW3B,QAAQ,QAAS,EAAE,OAAQ,WAAW;AAC5D,qBAAM,IAAI,GAAG,IAAI,KAAK,KAAM;AAC3B,sBAAKA,QAAO,SAAU2B,MAAM,CAAE,GAAG,IAAK,GAAI;AACzC,2BAAO;AAAA,kBACR;AAAA,gBACD;AAAA,cACD,CAAE,CAAE;AAAA,YACL;AAEA,kBAAM,KAAK,UAAW,CAAC,CAAE;AAEzB,iBAAM,IAAI,GAAG,IAAI,KAAK,KAAM;AAC3B,cAAA3B,QAAO,KAAM,UAAU2B,MAAM,CAAE,GAAG,GAAI;AAAA,YACvC;AAEA,mBAAO,MAAM,IAAI3B,QAAO,WAAY,GAAI,IAAI;AAAA,UAC7C;AAAA,UACA,QAAQ,SAAU,UAAW;AAC5B,mBAAO,KAAK,UAAW,OAAQ,MAAM,YAAY,CAAC,GAAG,KAAM,CAAE;AAAA,UAC9D;AAAA,UACA,KAAK,SAAU,UAAW;AACzB,mBAAO,KAAK,UAAW,OAAQ,MAAM,YAAY,CAAC,GAAG,IAAK,CAAE;AAAA,UAC7D;AAAA,UACA,IAAI,SAAU,UAAW;AACxB,mBAAO,CAAC,CAAC;AAAA,cACR;AAAA;AAAA;AAAA,cAIA,OAAO,aAAa,YAAY,cAAc,KAAM,QAAS,IAC5DA,QAAQ,QAAS,IACjB,YAAY,CAAC;AAAA,cACd;AAAA,YACD,EAAE;AAAA,UACH;AAAA,QACD,CAAE;AAOF,YAAI,YAMH,aAAa,uCAEb4B,UAAO5B,QAAO,GAAG,OAAO,SAAU,UAAU,SAAS,MAAO;AAC3D,cAAIgB,QAAO;AAGX,cAAK,CAAC,UAAW;AAChB,mBAAO;AAAA,UACR;AAIA,iBAAO,QAAQ;AAGf,cAAK,OAAO,aAAa,UAAW;AACnC,gBAAK,SAAU,CAAE,MAAM,OACtB,SAAU,SAAS,SAAS,CAAE,MAAM,OACpC,SAAS,UAAU,GAAI;AAGvB,cAAAA,SAAQ,CAAE,MAAM,UAAU,IAAK;AAAA,YAEhC,OAAO;AACN,cAAAA,SAAQ,WAAW,KAAM,QAAS;AAAA,YACnC;AAGA,gBAAKA,WAAWA,OAAO,CAAE,KAAK,CAAC,UAAY;AAG1C,kBAAKA,OAAO,CAAE,GAAI;AACjB,0BAAU,mBAAmBhB,UAAS,QAAS,CAAE,IAAI;AAIrD,gBAAAA,QAAO,MAAO,MAAMA,QAAO;AAAA,kBAC1BgB,OAAO,CAAE;AAAA,kBACT,WAAW,QAAQ,WAAW,QAAQ,iBAAiB,UAAUnB;AAAA,kBACjE;AAAA,gBACD,CAAE;AAGF,oBAAK,WAAW,KAAMmB,OAAO,CAAE,CAAE,KAAKhB,QAAO,cAAe,OAAQ,GAAI;AACvE,uBAAMgB,UAAS,SAAU;AAGxB,wBAAKrB,YAAY,KAAMqB,MAAM,CAAE,GAAI;AAClC,2BAAMA,MAAM,EAAG,QAASA,MAAM,CAAE;AAAA,oBAGjC,OAAO;AACN,2BAAK,KAAMA,QAAO,QAASA,MAAM,CAAE;AAAA,oBACpC;AAAA,kBACD;AAAA,gBACD;AAEA,uBAAO;AAAA,cAGR,OAAO;AACN,uBAAOnB,UAAS,eAAgBmB,OAAO,CAAE,CAAE;AAE3C,oBAAK,MAAO;AAGX,uBAAM,CAAE,IAAI;AACZ,uBAAK,SAAS;AAAA,gBACf;AACA,uBAAO;AAAA,cACR;AAAA,YAGD,WAAY,CAAC,WAAW,QAAQ,QAAS;AACxC,sBAAS,WAAW,MAAO,KAAM,QAAS;AAAA,YAI3C,OAAO;AACN,qBAAO,KAAK,YAAa,OAAQ,EAAE,KAAM,QAAS;AAAA,YACnD;AAAA,UAGD,WAAY,SAAS,UAAW;AAC/B,iBAAM,CAAE,IAAI;AACZ,iBAAK,SAAS;AACd,mBAAO;AAAA,UAIR,WAAYrB,YAAY,QAAS,GAAI;AACpC,mBAAO,KAAK,UAAU,SACrB,KAAK,MAAO,QAAS;AAAA;AAAA,cAGrB,SAAUK,OAAO;AAAA;AAAA,UACnB;AAEA,iBAAOA,QAAO,UAAW,UAAU,IAAK;AAAA,QACzC;AAGD,QAAA4B,QAAK,YAAY5B,QAAO;AAGxB,qBAAaA,QAAQH,SAAS;AAG9B,YAAI,eAAe,kCAGlB,mBAAmB;AAAA,UAClB,UAAU;AAAA,UACV,UAAU;AAAA,UACV,MAAM;AAAA,UACN,MAAM;AAAA,QACP;AAED,QAAAG,QAAO,GAAG,OAAQ;AAAA,UACjB,KAAK,SAAU,QAAS;AACvB,gBAAI,UAAUA,QAAQ,QAAQ,IAAK,GAClC,IAAI,QAAQ;AAEb,mBAAO,KAAK,OAAQ,WAAW;AAC9B,kBAAI,IAAI;AACR,qBAAQ,IAAI,GAAG,KAAM;AACpB,oBAAKA,QAAO,SAAU,MAAM,QAAS,CAAE,CAAE,GAAI;AAC5C,yBAAO;AAAA,gBACR;AAAA,cACD;AAAA,YACD,CAAE;AAAA,UACH;AAAA,UAEA,SAAS,SAAU,WAAW,SAAU;AACvC,gBAAI,KACH,IAAI,GACJ,IAAI,KAAK,QACT,UAAU,CAAC,GACX,UAAU,OAAO,cAAc,YAAYA,QAAQ,SAAU;AAG9D,gBAAK,CAAC,cAAc,KAAM,SAAU,GAAI;AACvC,qBAAQ,IAAI,GAAG,KAAM;AACpB,qBAAM,MAAM,KAAM,CAAE,GAAG,OAAO,QAAQ,SAAS,MAAM,IAAI,YAAa;AAGrE,sBAAK,IAAI,WAAW,OAAQ,UAC3B,QAAQ,MAAO,GAAI,IAAI;AAAA;AAAA,oBAGvB,IAAI,aAAa,KAChBA,QAAO,KAAK,gBAAiB,KAAK,SAAU;AAAA,sBAAM;AAEnD,4BAAQ,KAAM,GAAI;AAClB;AAAA,kBACD;AAAA,gBACD;AAAA,cACD;AAAA,YACD;AAEA,mBAAO,KAAK,UAAW,QAAQ,SAAS,IAAIA,QAAO,WAAY,OAAQ,IAAI,OAAQ;AAAA,UACpF;AAAA;AAAA,UAGA,OAAO,SAAU,MAAO;AAGvB,gBAAK,CAAC,MAAO;AACZ,qBAAS,KAAM,CAAE,KAAK,KAAM,CAAE,EAAE,aAAe,KAAK,MAAM,EAAE,QAAQ,EAAE,SAAS;AAAA,YAChF;AAGA,gBAAK,OAAO,SAAS,UAAW;AAC/B,qBAAON,SAAQ,KAAMM,QAAQ,IAAK,GAAG,KAAM,CAAE,CAAE;AAAA,YAChD;AAGA,mBAAON,SAAQ;AAAA,cAAM;AAAA;AAAA,cAGpB,KAAK,SAAS,KAAM,CAAE,IAAI;AAAA,YAC3B;AAAA,UACD;AAAA,UAEA,KAAK,SAAU,UAAU,SAAU;AAClC,mBAAO,KAAK;AAAA,cACXM,QAAO;AAAA,gBACNA,QAAO,MAAO,KAAK,IAAI,GAAGA,QAAQ,UAAU,OAAQ,CAAE;AAAA,cACvD;AAAA,YACD;AAAA,UACD;AAAA,UAEA,SAAS,SAAU,UAAW;AAC7B,mBAAO,KAAK;AAAA,cAAK,YAAY,OAC5B,KAAK,aAAa,KAAK,WAAW,OAAQ,QAAS;AAAA,YACpD;AAAA,UACD;AAAA,QACD,CAAE;AAEF,iBAAS,QAAS,KAAKmB,MAAM;AAC5B,kBAAU,MAAM,IAAKA,IAAI,MAAO,IAAI,aAAa,GAAI;AAAA,UAAC;AACtD,iBAAO;AAAA,QACR;AAEA,QAAAnB,QAAO,KAAM;AAAA,UACZ,QAAQ,SAAU,MAAO;AACxB,gBAAI,SAAS,KAAK;AAClB,mBAAO,UAAU,OAAO,aAAa,KAAK,SAAS;AAAA,UACpD;AAAA,UACA,SAAS,SAAU,MAAO;AACzB,mBAAO,IAAK,MAAM,YAAa;AAAA,UAChC;AAAA,UACA,cAAc,SAAU,MAAM,IAAI,OAAQ;AACzC,mBAAO,IAAK,MAAM,cAAc,KAAM;AAAA,UACvC;AAAA,UACA,MAAM,SAAU,MAAO;AACtB,mBAAO,QAAS,MAAM,aAAc;AAAA,UACrC;AAAA,UACA,MAAM,SAAU,MAAO;AACtB,mBAAO,QAAS,MAAM,iBAAkB;AAAA,UACzC;AAAA,UACA,SAAS,SAAU,MAAO;AACzB,mBAAO,IAAK,MAAM,aAAc;AAAA,UACjC;AAAA,UACA,SAAS,SAAU,MAAO;AACzB,mBAAO,IAAK,MAAM,iBAAkB;AAAA,UACrC;AAAA,UACA,WAAW,SAAU,MAAM,IAAI,OAAQ;AACtC,mBAAO,IAAK,MAAM,eAAe,KAAM;AAAA,UACxC;AAAA,UACA,WAAW,SAAU,MAAM,IAAI,OAAQ;AACtC,mBAAO,IAAK,MAAM,mBAAmB,KAAM;AAAA,UAC5C;AAAA,UACA,UAAU,SAAU,MAAO;AAC1B,mBAAO,UAAY,KAAK,cAAc,CAAC,GAAI,YAAY,IAAK;AAAA,UAC7D;AAAA,UACA,UAAU,SAAU,MAAO;AAC1B,mBAAO,SAAU,KAAK,UAAW;AAAA,UAClC;AAAA,UACA,UAAU,SAAU,MAAO;AAC1B,gBAAK,KAAK,mBAAmB;AAAA;AAAA;AAAA,YAK5B,SAAU,KAAK,eAAgB,GAAI;AAEnC,qBAAO,KAAK;AAAA,YACb;AAKA,gBAAK,SAAU,MAAM,UAAW,GAAI;AACnC,qBAAO,KAAK,WAAW;AAAA,YACxB;AAEA,mBAAOA,QAAO,MAAO,CAAC,GAAG,KAAK,UAAW;AAAA,UAC1C;AAAA,QACD,GAAG,SAAUE,OAAM,IAAK;AACvB,UAAAF,QAAO,GAAIE,KAAK,IAAI,SAAU,OAAO,UAAW;AAC/C,gBAAI,UAAUF,QAAO,IAAK,MAAM,IAAI,KAAM;AAE1C,gBAAKE,MAAK,MAAO,EAAG,MAAM,SAAU;AACnC,yBAAW;AAAA,YACZ;AAEA,gBAAK,YAAY,OAAO,aAAa,UAAW;AAC/C,wBAAUF,QAAO,OAAQ,UAAU,OAAQ;AAAA,YAC5C;AAEA,gBAAK,KAAK,SAAS,GAAI;AAGtB,kBAAK,CAAC,iBAAkBE,KAAK,GAAI;AAChC,gBAAAF,QAAO,WAAY,OAAQ;AAAA,cAC5B;AAGA,kBAAK,aAAa,KAAME,KAAK,GAAI;AAChC,wBAAQ,QAAQ;AAAA,cACjB;AAAA,YACD;AAEA,mBAAO,KAAK,UAAW,OAAQ;AAAA,UAChC;AAAA,QACD,CAAE;AACF,YAAI,gBAAkB;AAKtB,iBAAS,cAAeD,UAAU;AACjC,cAAI,SAAS,CAAC;AACd,UAAAD,QAAO,KAAMC,SAAQ,MAAO,aAAc,KAAK,CAAC,GAAG,SAAU,GAAG,MAAO;AACtE,mBAAQ,IAAK,IAAI;AAAA,UAClB,CAAE;AACF,iBAAO;AAAA,QACR;AAwBA,QAAAD,QAAO,YAAY,SAAUC,UAAU;AAItC,UAAAA,WAAU,OAAOA,aAAY,WAC5B,cAAeA,QAAQ,IACvBD,QAAO,OAAQ,CAAC,GAAGC,QAAQ;AAE5B,cACC,QAGA,QAGA,OAGA,QAGA,OAAO,CAAC,GAGR,QAAQ,CAAC,GAGT,cAAc,IAGd,OAAO,WAAW;AAGjB,qBAAS,UAAUA,SAAQ;AAI3B,oBAAQ,SAAS;AACjB,mBAAQ,MAAM,QAAQ,cAAc,IAAK;AACxC,uBAAS,MAAM,MAAM;AACrB,qBAAQ,EAAE,cAAc,KAAK,QAAS;AAGrC,oBAAK,KAAM,WAAY,EAAE,MAAO,OAAQ,CAAE,GAAG,OAAQ,CAAE,CAAE,MAAM,SAC9DA,SAAQ,aAAc;AAGtB,gCAAc,KAAK;AACnB,2BAAS;AAAA,gBACV;AAAA,cACD;AAAA,YACD;AAGA,gBAAK,CAACA,SAAQ,QAAS;AACtB,uBAAS;AAAA,YACV;AAEA,qBAAS;AAGT,gBAAK,QAAS;AAGb,kBAAK,QAAS;AACb,uBAAO,CAAC;AAAA,cAGT,OAAO;AACN,uBAAO;AAAA,cACR;AAAA,YACD;AAAA,UACD,GAGA0B,QAAO;AAAA;AAAA,YAGN,KAAK,WAAW;AACf,kBAAK,MAAO;AAGX,oBAAK,UAAU,CAAC,QAAS;AACxB,gCAAc,KAAK,SAAS;AAC5B,wBAAM,KAAM,MAAO;AAAA,gBACpB;AAEA,iBAAE,SAAS,IAAK,MAAO;AACtB,kBAAA3B,QAAO,KAAM,MAAM,SAAU,GAAG,KAAM;AACrC,wBAAKL,YAAY,GAAI,GAAI;AACxB,0BAAK,CAACM,SAAQ,UAAU,CAAC0B,MAAK,IAAK,GAAI,GAAI;AAC1C,6BAAK,KAAM,GAAI;AAAA,sBAChB;AAAA,oBACD,WAAY,OAAO,IAAI,UAAU5B,QAAQ,GAAI,MAAM,UAAW;AAG7D,0BAAK,GAAI;AAAA,oBACV;AAAA,kBACD,CAAE;AAAA,gBACH,GAAK,SAAU;AAEf,oBAAK,UAAU,CAAC,QAAS;AACxB,uBAAK;AAAA,gBACN;AAAA,cACD;AACA,qBAAO;AAAA,YACR;AAAA;AAAA,YAGA,QAAQ,WAAW;AAClB,cAAAC,QAAO,KAAM,WAAW,SAAU,GAAG,KAAM;AAC1C,oBAAI6B;AACJ,wBAAUA,SAAQ7B,QAAO,QAAS,KAAK,MAAM6B,MAAM,KAAM,IAAK;AAC7D,uBAAK,OAAQA,QAAO,CAAE;AAGtB,sBAAKA,UAAS,aAAc;AAC3B;AAAA,kBACD;AAAA,gBACD;AAAA,cACD,CAAE;AACF,qBAAO;AAAA,YACR;AAAA;AAAA;AAAA,YAIA,KAAK,SAAU,IAAK;AACnB,qBAAO,KACN7B,QAAO,QAAS,IAAI,IAAK,IAAI,KAC7B,KAAK,SAAS;AAAA,YAChB;AAAA;AAAA,YAGA,OAAO,WAAW;AACjB,kBAAK,MAAO;AACX,uBAAO,CAAC;AAAA,cACT;AACA,qBAAO;AAAA,YACR;AAAA;AAAA;AAAA;AAAA,YAKA,SAAS,WAAW;AACnB,uBAAS,QAAQ,CAAC;AAClB,qBAAO,SAAS;AAChB,qBAAO;AAAA,YACR;AAAA,YACA,UAAU,WAAW;AACpB,qBAAO,CAAC;AAAA,YACT;AAAA;AAAA;AAAA;AAAA,YAKA,MAAM,WAAW;AAChB,uBAAS,QAAQ,CAAC;AAClB,kBAAK,CAAC,UAAU,CAAC,QAAS;AACzB,uBAAO,SAAS;AAAA,cACjB;AACA,qBAAO;AAAA,YACR;AAAA,YACA,QAAQ,WAAW;AAClB,qBAAO,CAAC,CAAC;AAAA,YACV;AAAA;AAAA,YAGA,UAAU,SAAU,SAAS,MAAO;AACnC,kBAAK,CAAC,QAAS;AACd,uBAAO,QAAQ,CAAC;AAChB,uBAAO,CAAE,SAAS,KAAK,QAAQ,KAAK,MAAM,IAAI,IAAK;AACnD,sBAAM,KAAM,IAAK;AACjB,oBAAK,CAAC,QAAS;AACd,uBAAK;AAAA,gBACN;AAAA,cACD;AACA,qBAAO;AAAA,YACR;AAAA;AAAA,YAGA,MAAM,WAAW;AAChB,cAAA2B,MAAK,SAAU,MAAM,SAAU;AAC/B,qBAAO;AAAA,YACR;AAAA;AAAA,YAGA,OAAO,WAAW;AACjB,qBAAO,CAAC,CAAC;AAAA,YACV;AAAA,UACD;AAED,iBAAOA;AAAA,QACR;AAGA,iBAAS,SAAU,GAAI;AACtB,iBAAO;AAAA,QACR;AACA,iBAAS,QAAS,IAAK;AACtB,gBAAM;AAAA,QACP;AAEA,iBAAS,WAAY,OAAO,SAAS,QAAQ,SAAU;AACtD,cAAI;AAEJ,cAAI;AAGH,gBAAK,SAAShC,YAAc,SAAS,MAAM,OAAU,GAAI;AACxD,qBAAO,KAAM,KAAM,EAAE,KAAM,OAAQ,EAAE,KAAM,MAAO;AAAA,YAGnD,WAAY,SAASA,YAAc,SAAS,MAAM,IAAO,GAAI;AAC5D,qBAAO,KAAM,OAAO,SAAS,MAAO;AAAA,YAGrC,OAAO;AAKN,sBAAQ,MAAO,QAAW,CAAE,KAAM,EAAE,MAAO,OAAQ,CAAE;AAAA,YACtD;AAAA,UAKD,SAAUmC,QAAQ;AAIjB,mBAAO,MAAO,QAAW,CAAEA,MAAM,CAAE;AAAA,UACpC;AAAA,QACD;AAEA,QAAA9B,QAAO,OAAQ;AAAA,UAEd,UAAU,SAAU,MAAO;AAC1B,gBAAI,SAAS;AAAA;AAAA;AAAA,cAIX;AAAA,gBAAE;AAAA,gBAAU;AAAA,gBAAYA,QAAO,UAAW,QAAS;AAAA,gBAClDA,QAAO,UAAW,QAAS;AAAA,gBAAG;AAAA,cAAE;AAAA,cACjC;AAAA,gBAAE;AAAA,gBAAW;AAAA,gBAAQA,QAAO,UAAW,aAAc;AAAA,gBACpDA,QAAO,UAAW,aAAc;AAAA,gBAAG;AAAA,gBAAG;AAAA,cAAW;AAAA,cAClD;AAAA,gBAAE;AAAA,gBAAU;AAAA,gBAAQA,QAAO,UAAW,aAAc;AAAA,gBACnDA,QAAO,UAAW,aAAc;AAAA,gBAAG;AAAA,gBAAG;AAAA,cAAW;AAAA,YACnD,GACA+B,SAAQ,WACR,UAAU;AAAA,cACT,OAAO,WAAW;AACjB,uBAAOA;AAAA,cACR;AAAA,cACA,QAAQ,WAAW;AAClB,yBAAS,KAAM,SAAU,EAAE,KAAM,SAAU;AAC3C,uBAAO;AAAA,cACR;AAAA,cACA,SAAS,SAAU,IAAK;AACvB,uBAAO,QAAQ,KAAM,MAAM,EAAG;AAAA,cAC/B;AAAA;AAAA,cAGA,MAAM,WAA6C;AAClD,oBAAI,MAAM;AAEV,uBAAO/B,QAAO,SAAU,SAAU,UAAW;AAC5C,kBAAAA,QAAO,KAAM,QAAQ,SAAU,IAAI,OAAQ;AAG1C,wBAAI,KAAKL,YAAY,IAAK,MAAO,CAAE,CAAE,CAAE,KAAK,IAAK,MAAO,CAAE,CAAE;AAK5D,6BAAU,MAAO,CAAE,CAAE,EAAG,WAAW;AAClC,0BAAI,WAAW,MAAM,GAAG,MAAO,MAAM,SAAU;AAC/C,0BAAK,YAAYA,YAAY,SAAS,OAAQ,GAAI;AACjD,iCAAS,QAAQ,EACf,SAAU,SAAS,MAAO,EAC1B,KAAM,SAAS,OAAQ,EACvB,KAAM,SAAS,MAAO;AAAA,sBACzB,OAAO;AACN,iCAAU,MAAO,CAAE,IAAI,MAAO;AAAA,0BAC7B;AAAA,0BACA,KAAK,CAAE,QAAS,IAAI;AAAA,wBACrB;AAAA,sBACD;AAAA,oBACD,CAAE;AAAA,kBACH,CAAE;AACF,wBAAM;AAAA,gBACP,CAAE,EAAE,QAAQ;AAAA,cACb;AAAA,cACA,MAAM,SAAU,aAAa,YAAY,YAAa;AACrD,oBAAI,WAAW;AACf,yBAAS,QAAS,OAAOqC,WAAU,SAAS,SAAU;AACrD,yBAAO,WAAW;AACjB,wBAAI,OAAO,MACV,OAAO,WACP,aAAa,WAAW;AACvB,0BAAI,UAAU;AAKd,0BAAK,QAAQ,UAAW;AACvB;AAAA,sBACD;AAEA,iCAAW,QAAQ,MAAO,MAAM,IAAK;AAIrC,0BAAK,aAAaA,UAAS,QAAQ,GAAI;AACtC,8BAAM,IAAI,UAAW,0BAA2B;AAAA,sBACjD;AAMA,6BAAO;AAAA;AAAA;AAAA,uBAKJ,OAAO,aAAa,YACrB,OAAO,aAAa,eACrB,SAAS;AAGV,0BAAKrC,YAAY,IAAK,GAAI;AAGzB,4BAAK,SAAU;AACd,+BAAK;AAAA,4BACJ;AAAA,4BACA,QAAS,UAAUqC,WAAU,UAAU,OAAQ;AAAA,4BAC/C,QAAS,UAAUA,WAAU,SAAS,OAAQ;AAAA,0BAC/C;AAAA,wBAGD,OAAO;AAGN;AAEA,+BAAK;AAAA,4BACJ;AAAA,4BACA,QAAS,UAAUA,WAAU,UAAU,OAAQ;AAAA,4BAC/C,QAAS,UAAUA,WAAU,SAAS,OAAQ;AAAA,4BAC9C;AAAA,8BAAS;AAAA,8BAAUA;AAAA,8BAAU;AAAA,8BAC5BA,UAAS;AAAA,4BAAW;AAAA,0BACtB;AAAA,wBACD;AAAA,sBAGD,OAAO;AAIN,4BAAK,YAAY,UAAW;AAC3B,iCAAO;AACP,iCAAO,CAAE,QAAS;AAAA,wBACnB;AAIA,yBAAE,WAAWA,UAAS,aAAe,MAAM,IAAK;AAAA,sBACjD;AAAA,oBACD,GAGAC,WAAU,UACT,aACA,WAAW;AACV,0BAAI;AACH,mCAAW;AAAA,sBACZ,SAAUnB,IAAI;AAEb,4BAAKd,QAAO,SAAS,eAAgB;AACpC,0BAAAA,QAAO,SAAS;AAAA,4BAAec;AAAA,4BAC9BmB,SAAQ;AAAA,0BAAM;AAAA,wBAChB;AAKA,4BAAK,QAAQ,KAAK,UAAW;AAI5B,8BAAK,YAAY,SAAU;AAC1B,mCAAO;AACP,mCAAO,CAAEnB,EAAE;AAAA,0BACZ;AAEA,0BAAAkB,UAAS,WAAY,MAAM,IAAK;AAAA,wBACjC;AAAA,sBACD;AAAA,oBACD;AAMF,wBAAK,OAAQ;AACZ,sBAAAC,SAAQ;AAAA,oBACT,OAAO;AAIN,0BAAKjC,QAAO,SAAS,cAAe;AACnC,wBAAAiC,SAAQ,QAAQjC,QAAO,SAAS,aAAa;AAAA,sBAM9C,WAAYA,QAAO,SAAS,cAAe;AAC1C,wBAAAiC,SAAQ,QAAQjC,QAAO,SAAS,aAAa;AAAA,sBAC9C;AACA,sBAAAT,QAAO,WAAY0C,QAAQ;AAAA,oBAC5B;AAAA,kBACD;AAAA,gBACD;AAEA,uBAAOjC,QAAO,SAAU,SAAU,UAAW;AAG5C,yBAAQ,CAAE,EAAG,CAAE,EAAE;AAAA,oBAChB;AAAA,sBACC;AAAA,sBACA;AAAA,sBACAL,YAAY,UAAW,IACtB,aACA;AAAA,sBACD,SAAS;AAAA,oBACV;AAAA,kBACD;AAGA,yBAAQ,CAAE,EAAG,CAAE,EAAE;AAAA,oBAChB;AAAA,sBACC;AAAA,sBACA;AAAA,sBACAA,YAAY,WAAY,IACvB,cACA;AAAA,oBACF;AAAA,kBACD;AAGA,yBAAQ,CAAE,EAAG,CAAE,EAAE;AAAA,oBAChB;AAAA,sBACC;AAAA,sBACA;AAAA,sBACAA,YAAY,UAAW,IACtB,aACA;AAAA,oBACF;AAAA,kBACD;AAAA,gBACD,CAAE,EAAE,QAAQ;AAAA,cACb;AAAA;AAAA;AAAA,cAIA,SAAS,SAAU,KAAM;AACxB,uBAAO,OAAO,OAAOK,QAAO,OAAQ,KAAK,OAAQ,IAAI;AAAA,cACtD;AAAA,YACD,GACA,WAAW,CAAC;AAGb,YAAAA,QAAO,KAAM,QAAQ,SAAU,GAAG,OAAQ;AACzC,kBAAI,OAAO,MAAO,CAAE,GACnB,cAAc,MAAO,CAAE;AAKxB,sBAAS,MAAO,CAAE,CAAE,IAAI,KAAK;AAG7B,kBAAK,aAAc;AAClB,qBAAK;AAAA,kBACJ,WAAW;AAIV,oBAAA+B,SAAQ;AAAA,kBACT;AAAA;AAAA;AAAA,kBAIA,OAAQ,IAAI,CAAE,EAAG,CAAE,EAAE;AAAA;AAAA;AAAA,kBAIrB,OAAQ,IAAI,CAAE,EAAG,CAAE,EAAE;AAAA;AAAA,kBAGrB,OAAQ,CAAE,EAAG,CAAE,EAAE;AAAA;AAAA,kBAGjB,OAAQ,CAAE,EAAG,CAAE,EAAE;AAAA,gBAClB;AAAA,cACD;AAKA,mBAAK,IAAK,MAAO,CAAE,EAAE,IAAK;AAK1B,uBAAU,MAAO,CAAE,CAAE,IAAI,WAAW;AACnC,yBAAU,MAAO,CAAE,IAAI,MAAO,EAAG,SAAS,WAAW,SAAY,MAAM,SAAU;AACjF,uBAAO;AAAA,cACR;AAKA,uBAAU,MAAO,CAAE,IAAI,MAAO,IAAI,KAAK;AAAA,YACxC,CAAE;AAGF,oBAAQ,QAAS,QAAS;AAG1B,gBAAK,MAAO;AACX,mBAAK,KAAM,UAAU,QAAS;AAAA,YAC/B;AAGA,mBAAO;AAAA,UACR;AAAA;AAAA,UAGA,MAAM,SAAU,aAAc;AAC7B,gBAGC,YAAY,UAAU,QAGtB,IAAI,WAGJ,kBAAkB,MAAO,CAAE,GAC3B,gBAAgBvC,OAAM,KAAM,SAAU,GAGtC,UAAUQ,QAAO,SAAS,GAG1B,aAAa,SAAUe,IAAI;AAC1B,qBAAO,SAAU,OAAQ;AACxB,gCAAiBA,EAAE,IAAI;AACvB,8BAAeA,EAAE,IAAI,UAAU,SAAS,IAAIvB,OAAM,KAAM,SAAU,IAAI;AACtE,oBAAK,CAAG,EAAE,WAAc;AACvB,0BAAQ,YAAa,iBAAiB,aAAc;AAAA,gBACrD;AAAA,cACD;AAAA,YACD;AAGD,gBAAK,aAAa,GAAI;AACrB;AAAA,gBAAY;AAAA,gBAAa,QAAQ,KAAM,WAAY,CAAE,CAAE,EAAE;AAAA,gBAAS,QAAQ;AAAA,gBACzE,CAAC;AAAA,cAAU;AAGZ,kBAAK,QAAQ,MAAM,MAAM,aACxBG,YAAY,cAAe,CAAE,KAAK,cAAe,CAAE,EAAE,IAAK,GAAI;AAE9D,uBAAO,QAAQ,KAAK;AAAA,cACrB;AAAA,YACD;AAGA,mBAAQ,KAAM;AACb,yBAAY,cAAe,CAAE,GAAG,WAAY,CAAE,GAAG,QAAQ,MAAO;AAAA,YACjE;AAEA,mBAAO,QAAQ,QAAQ;AAAA,UACxB;AAAA,QACD,CAAE;AAKF,YAAI,cAAc;AAKlB,QAAAK,QAAO,SAAS,gBAAgB,SAAU,OAAO,YAAa;AAI7D,cAAKT,QAAO,WAAWA,QAAO,QAAQ,QAAQ,SAAS,YAAY,KAAM,MAAM,IAAK,GAAI;AACvF,YAAAA,QAAO,QAAQ;AAAA,cAAM,gCAAgC,MAAM;AAAA,cAC1D,MAAM;AAAA,cAAO;AAAA,YAAW;AAAA,UAC1B;AAAA,QACD;AAKA,QAAAS,QAAO,iBAAiB,SAAU,OAAQ;AACzC,UAAAT,QAAO,WAAY,WAAW;AAC7B,kBAAM;AAAA,UACP,CAAE;AAAA,QACH;AAMA,YAAI,YAAYS,QAAO,SAAS;AAEhC,QAAAA,QAAO,GAAG,QAAQ,SAAU,IAAK;AAEhC,oBACE,KAAM,EAAG,EAKT,MAAO,SAAU,OAAQ;AACzB,YAAAA,QAAO,eAAgB,KAAM;AAAA,UAC9B,CAAE;AAEH,iBAAO;AAAA,QACR;AAEA,QAAAA,QAAO,OAAQ;AAAA;AAAA,UAGd,SAAS;AAAA;AAAA;AAAA,UAIT,WAAW;AAAA;AAAA,UAGX,OAAO,SAAU,MAAO;AAGvB,gBAAK,SAAS,OAAO,EAAEA,QAAO,YAAYA,QAAO,SAAU;AAC1D;AAAA,YACD;AAGA,YAAAA,QAAO,UAAU;AAGjB,gBAAK,SAAS,QAAQ,EAAEA,QAAO,YAAY,GAAI;AAC9C;AAAA,YACD;AAGA,sBAAU,YAAaH,WAAU,CAAEG,OAAO,CAAE;AAAA,UAC7C;AAAA,QACD,CAAE;AAEF,QAAAA,QAAO,MAAM,OAAO,UAAU;AAG9B,iBAAS,YAAY;AACpB,UAAAH,UAAS,oBAAqB,oBAAoB,SAAU;AAC5D,UAAAN,QAAO,oBAAqB,QAAQ,SAAU;AAC9C,UAAAS,QAAO,MAAM;AAAA,QACd;AAMA,YAAKH,UAAS,eAAe,cAC1BA,UAAS,eAAe,aAAa,CAACA,UAAS,gBAAgB,UAAa;AAG9E,UAAAN,QAAO,WAAYS,QAAO,KAAM;AAAA,QAEjC,OAAO;AAGN,UAAAH,UAAS,iBAAkB,oBAAoB,SAAU;AAGzD,UAAAN,QAAO,iBAAkB,QAAQ,SAAU;AAAA,QAC5C;AAOA,YAAI,SAAS,SAAU,OAAO,IAAI,KAAK,OAAO,WAAW,UAAU,KAAM;AACxE,cAAI,IAAI,GACP,MAAM,MAAM,QACZ,OAAO,OAAO;AAGf,cAAKQ,QAAQ,GAAI,MAAM,UAAW;AACjC,wBAAY;AACZ,iBAAM,KAAK,KAAM;AAChB,qBAAQ,OAAO,IAAI,GAAG,IAAK,CAAE,GAAG,MAAM,UAAU,GAAI;AAAA,YACrD;AAAA,UAGD,WAAY,UAAU,QAAY;AACjC,wBAAY;AAEZ,gBAAK,CAACJ,YAAY,KAAM,GAAI;AAC3B,oBAAM;AAAA,YACP;AAEA,gBAAK,MAAO;AAGX,kBAAK,KAAM;AACV,mBAAG,KAAM,OAAO,KAAM;AACtB,qBAAK;AAAA,cAGN,OAAO;AACN,uBAAO;AACP,qBAAK,SAAU,MAAM,MAAMmC,QAAQ;AAClC,yBAAO,KAAK,KAAM9B,QAAQ,IAAK,GAAG8B,MAAM;AAAA,gBACzC;AAAA,cACD;AAAA,YACD;AAEA,gBAAK,IAAK;AACT,qBAAQ,IAAI,KAAK,KAAM;AACtB;AAAA,kBACC,MAAO,CAAE;AAAA,kBAAG;AAAA,kBAAK,MAChB,QACA,MAAM,KAAM,MAAO,CAAE,GAAG,GAAG,GAAI,MAAO,CAAE,GAAG,GAAI,CAAE;AAAA,gBACnD;AAAA,cACD;AAAA,YACD;AAAA,UACD;AAEA,cAAK,WAAY;AAChB,mBAAO;AAAA,UACR;AAGA,cAAK,MAAO;AACX,mBAAO,GAAG,KAAM,KAAM;AAAA,UACvB;AAEA,iBAAO,MAAM,GAAI,MAAO,CAAE,GAAG,GAAI,IAAI;AAAA,QACtC;AAIA,YAAI,YAAY,SACf,aAAa;AAGd,iBAAS,WAAY,MAAM,QAAS;AACnC,iBAAO,OAAO,YAAY;AAAA,QAC3B;AAKA,iBAAS,UAAW,QAAS;AAC5B,iBAAO,OAAO,QAAS,WAAW,KAAM,EAAE,QAAS,YAAY,UAAW;AAAA,QAC3E;AACA,YAAI,aAAa,SAAU,OAAQ;AAQlC,iBAAO,MAAM,aAAa,KAAK,MAAM,aAAa,KAAK,CAAG,CAAC,MAAM;AAAA,QAClE;AAKA,iBAASI,QAAO;AACf,eAAK,UAAUlC,QAAO,UAAUkC,MAAK;AAAA,QACtC;AAEA,QAAAA,MAAK,MAAM;AAEX,QAAAA,MAAK,YAAY;AAAA,UAEhB,OAAO,SAAU,OAAQ;AAGxB,gBAAI,QAAQ,MAAO,KAAK,OAAQ;AAGhC,gBAAK,CAAC,OAAQ;AACb,sBAAQ,CAAC;AAKT,kBAAK,WAAY,KAAM,GAAI;AAI1B,oBAAK,MAAM,UAAW;AACrB,wBAAO,KAAK,OAAQ,IAAI;AAAA,gBAKzB,OAAO;AACN,yBAAO,eAAgB,OAAO,KAAK,SAAS;AAAA,oBAC3C;AAAA,oBACA,cAAc;AAAA,kBACf,CAAE;AAAA,gBACH;AAAA,cACD;AAAA,YACD;AAEA,mBAAO;AAAA,UACR;AAAA,UACA,KAAK,SAAU,OAAOC,OAAM,OAAQ;AACnC,gBAAI,MACH,QAAQ,KAAK,MAAO,KAAM;AAI3B,gBAAK,OAAOA,UAAS,UAAW;AAC/B,oBAAO,UAAWA,KAAK,CAAE,IAAI;AAAA,YAG9B,OAAO;AAGN,mBAAM,QAAQA,OAAO;AACpB,sBAAO,UAAW,IAAK,CAAE,IAAIA,MAAM,IAAK;AAAA,cACzC;AAAA,YACD;AACA,mBAAO;AAAA,UACR;AAAA,UACA,KAAK,SAAU,OAAO,KAAM;AAC3B,mBAAO,QAAQ,SACd,KAAK,MAAO,KAAM;AAAA;AAAA,cAGlB,MAAO,KAAK,OAAQ,KAAK,MAAO,KAAK,OAAQ,EAAG,UAAW,GAAI,CAAE;AAAA;AAAA,UACnE;AAAA,UACA,QAAQ,SAAU,OAAO,KAAK,OAAQ;AAarC,gBAAK,QAAQ,UACP,OAAO,OAAO,QAAQ,YAAc,UAAU,QAAc;AAEjE,qBAAO,KAAK,IAAK,OAAO,GAAI;AAAA,YAC7B;AAQA,iBAAK,IAAK,OAAO,KAAK,KAAM;AAI5B,mBAAO,UAAU,SAAY,QAAQ;AAAA,UACtC;AAAA,UACA,QAAQ,SAAU,OAAO,KAAM;AAC9B,gBAAI,GACH,QAAQ,MAAO,KAAK,OAAQ;AAE7B,gBAAK,UAAU,QAAY;AAC1B;AAAA,YACD;AAEA,gBAAK,QAAQ,QAAY;AAGxB,kBAAK,MAAM,QAAS,GAAI,GAAI;AAI3B,sBAAM,IAAI,IAAK,SAAU;AAAA,cAC1B,OAAO;AACN,sBAAM,UAAW,GAAI;AAIrB,sBAAM,OAAO,QACZ,CAAE,GAAI,IACJ,IAAI,MAAO,aAAc,KAAK,CAAC;AAAA,cACnC;AAEA,kBAAI,IAAI;AAER,qBAAQ,KAAM;AACb,uBAAO,MAAO,IAAK,CAAE,CAAE;AAAA,cACxB;AAAA,YACD;AAGA,gBAAK,QAAQ,UAAanC,QAAO,cAAe,KAAM,GAAI;AAMzD,kBAAK,MAAM,UAAW;AACrB,sBAAO,KAAK,OAAQ,IAAI;AAAA,cACzB,OAAO;AACN,uBAAO,MAAO,KAAK,OAAQ;AAAA,cAC5B;AAAA,YACD;AAAA,UACD;AAAA,UACA,SAAS,SAAU,OAAQ;AAC1B,gBAAI,QAAQ,MAAO,KAAK,OAAQ;AAChC,mBAAO,UAAU,UAAa,CAACA,QAAO,cAAe,KAAM;AAAA,UAC5D;AAAA,QACD;AACA,YAAI,WAAW,IAAIkC,MAAK;AAExB,YAAI,WAAW,IAAIA,MAAK;AAcxB,YAAI,SAAS,iCACZ,aAAa;AAEd,iBAASE,SAASD,OAAO;AACxB,cAAKA,UAAS,QAAS;AACtB,mBAAO;AAAA,UACR;AAEA,cAAKA,UAAS,SAAU;AACvB,mBAAO;AAAA,UACR;AAEA,cAAKA,UAAS,QAAS;AACtB,mBAAO;AAAA,UACR;AAGA,cAAKA,UAAS,CAACA,QAAO,IAAK;AAC1B,mBAAO,CAACA;AAAA,UACT;AAEA,cAAK,OAAO,KAAMA,KAAK,GAAI;AAC1B,mBAAO,KAAK,MAAOA,KAAK;AAAA,UACzB;AAEA,iBAAOA;AAAA,QACR;AAEA,iBAASE,UAAU,MAAM,KAAKF,OAAO;AACpC,cAAIjC;AAIJ,cAAKiC,UAAS,UAAa,KAAK,aAAa,GAAI;AAChD,YAAAjC,QAAO,UAAU,IAAI,QAAS,YAAY,KAAM,EAAE,YAAY;AAC9D,YAAAiC,QAAO,KAAK,aAAcjC,KAAK;AAE/B,gBAAK,OAAOiC,UAAS,UAAW;AAC/B,kBAAI;AACH,gBAAAA,QAAOC,SAASD,KAAK;AAAA,cACtB,SAAUrB,IAAI;AAAA,cAAC;AAGf,uBAAS,IAAK,MAAM,KAAKqB,KAAK;AAAA,YAC/B,OAAO;AACN,cAAAA,QAAO;AAAA,YACR;AAAA,UACD;AACA,iBAAOA;AAAA,QACR;AAEA,QAAAnC,QAAO,OAAQ;AAAA,UACd,SAAS,SAAU,MAAO;AACzB,mBAAO,SAAS,QAAS,IAAK,KAAK,SAAS,QAAS,IAAK;AAAA,UAC3D;AAAA,UAEA,MAAM,SAAU,MAAME,OAAMiC,OAAO;AAClC,mBAAO,SAAS,OAAQ,MAAMjC,OAAMiC,KAAK;AAAA,UAC1C;AAAA,UAEA,YAAY,SAAU,MAAMjC,OAAO;AAClC,qBAAS,OAAQ,MAAMA,KAAK;AAAA,UAC7B;AAAA;AAAA;AAAA,UAIA,OAAO,SAAU,MAAMA,OAAMiC,OAAO;AACnC,mBAAO,SAAS,OAAQ,MAAMjC,OAAMiC,KAAK;AAAA,UAC1C;AAAA,UAEA,aAAa,SAAU,MAAMjC,OAAO;AACnC,qBAAS,OAAQ,MAAMA,KAAK;AAAA,UAC7B;AAAA,QACD,CAAE;AAEF,QAAAF,QAAO,GAAG,OAAQ;AAAA,UACjB,MAAM,SAAU,KAAK,OAAQ;AAC5B,gBAAI,GAAGE,OAAMiC,OACZ,OAAO,KAAM,CAAE,GACf,QAAQ,QAAQ,KAAK;AAGtB,gBAAK,QAAQ,QAAY;AACxB,kBAAK,KAAK,QAAS;AAClB,gBAAAA,QAAO,SAAS,IAAK,IAAK;AAE1B,oBAAK,KAAK,aAAa,KAAK,CAAC,SAAS,IAAK,MAAM,cAAe,GAAI;AACnE,sBAAI,MAAM;AACV,yBAAQ,KAAM;AAIb,wBAAK,MAAO,CAAE,GAAI;AACjB,sBAAAjC,QAAO,MAAO,CAAE,EAAE;AAClB,0BAAKA,MAAK,QAAS,OAAQ,MAAM,GAAI;AACpC,wBAAAA,QAAO,UAAWA,MAAK,MAAO,CAAE,CAAE;AAClC,wBAAAmC,UAAU,MAAMnC,OAAMiC,MAAMjC,KAAK,CAAE;AAAA,sBACpC;AAAA,oBACD;AAAA,kBACD;AACA,2BAAS,IAAK,MAAM,gBAAgB,IAAK;AAAA,gBAC1C;AAAA,cACD;AAEA,qBAAOiC;AAAA,YACR;AAGA,gBAAK,OAAO,QAAQ,UAAW;AAC9B,qBAAO,KAAK,KAAM,WAAW;AAC5B,yBAAS,IAAK,MAAM,GAAI;AAAA,cACzB,CAAE;AAAA,YACH;AAEA,mBAAO,OAAQ,MAAM,SAAUL,QAAQ;AACtC,kBAAIK;AAOJ,kBAAK,QAAQL,WAAU,QAAY;AAIlC,gBAAAK,QAAO,SAAS,IAAK,MAAM,GAAI;AAC/B,oBAAKA,UAAS,QAAY;AACzB,yBAAOA;AAAA,gBACR;AAIA,gBAAAA,QAAOE,UAAU,MAAM,GAAI;AAC3B,oBAAKF,UAAS,QAAY;AACzB,yBAAOA;AAAA,gBACR;AAGA;AAAA,cACD;AAGA,mBAAK,KAAM,WAAW;AAGrB,yBAAS,IAAK,MAAM,KAAKL,MAAM;AAAA,cAChC,CAAE;AAAA,YACH,GAAG,MAAM,OAAO,UAAU,SAAS,GAAG,MAAM,IAAK;AAAA,UAClD;AAAA,UAEA,YAAY,SAAU,KAAM;AAC3B,mBAAO,KAAK,KAAM,WAAW;AAC5B,uBAAS,OAAQ,MAAM,GAAI;AAAA,YAC5B,CAAE;AAAA,UACH;AAAA,QACD,CAAE;AAGF,QAAA9B,QAAO,OAAQ;AAAA,UACd,OAAO,SAAU,MAAM,MAAMmC,OAAO;AACnC,gBAAI;AAEJ,gBAAK,MAAO;AACX,sBAAS,QAAQ,QAAS;AAC1B,sBAAQ,SAAS,IAAK,MAAM,IAAK;AAGjC,kBAAKA,OAAO;AACX,oBAAK,CAAC,SAAS,MAAM,QAASA,KAAK,GAAI;AACtC,0BAAQ,SAAS,OAAQ,MAAM,MAAMnC,QAAO,UAAWmC,KAAK,CAAE;AAAA,gBAC/D,OAAO;AACN,wBAAM,KAAMA,KAAK;AAAA,gBAClB;AAAA,cACD;AACA,qBAAO,SAAS,CAAC;AAAA,YAClB;AAAA,UACD;AAAA,UAEA,SAAS,SAAU,MAAM,MAAO;AAC/B,mBAAO,QAAQ;AAEf,gBAAI,QAAQnC,QAAO,MAAO,MAAM,IAAK,GACpC,cAAc,MAAM,QACpB,KAAK,MAAM,MAAM,GACjBsC,SAAQtC,QAAO,YAAa,MAAM,IAAK,GACvCuC,QAAO,WAAW;AACjB,cAAAvC,QAAO,QAAS,MAAM,IAAK;AAAA,YAC5B;AAGD,gBAAK,OAAO,cAAe;AAC1B,mBAAK,MAAM,MAAM;AACjB;AAAA,YACD;AAEA,gBAAK,IAAK;AAIT,kBAAK,SAAS,MAAO;AACpB,sBAAM,QAAS,YAAa;AAAA,cAC7B;AAGA,qBAAOsC,OAAM;AACb,iBAAG,KAAM,MAAMC,OAAMD,MAAM;AAAA,YAC5B;AAEA,gBAAK,CAAC,eAAeA,QAAQ;AAC5B,cAAAA,OAAM,MAAM,KAAK;AAAA,YAClB;AAAA,UACD;AAAA;AAAA,UAGA,aAAa,SAAU,MAAM,MAAO;AACnC,gBAAI,MAAM,OAAO;AACjB,mBAAO,SAAS,IAAK,MAAM,GAAI,KAAK,SAAS,OAAQ,MAAM,KAAK;AAAA,cAC/D,OAAOtC,QAAO,UAAW,aAAc,EAAE,IAAK,WAAW;AACxD,yBAAS,OAAQ,MAAM,CAAE,OAAO,SAAS,GAAI,CAAE;AAAA,cAChD,CAAE;AAAA,YACH,CAAE;AAAA,UACH;AAAA,QACD,CAAE;AAEF,QAAAA,QAAO,GAAG,OAAQ;AAAA,UACjB,OAAO,SAAU,MAAMmC,OAAO;AAC7B,gBAAI,SAAS;AAEb,gBAAK,OAAO,SAAS,UAAW;AAC/B,cAAAA,QAAO;AACP,qBAAO;AACP;AAAA,YACD;AAEA,gBAAK,UAAU,SAAS,QAAS;AAChC,qBAAOnC,QAAO,MAAO,KAAM,CAAE,GAAG,IAAK;AAAA,YACtC;AAEA,mBAAOmC,UAAS,SACf,OACA,KAAK,KAAM,WAAW;AACrB,kBAAI,QAAQnC,QAAO,MAAO,MAAM,MAAMmC,KAAK;AAG3C,cAAAnC,QAAO,YAAa,MAAM,IAAK;AAE/B,kBAAK,SAAS,QAAQ,MAAO,CAAE,MAAM,cAAe;AACnD,gBAAAA,QAAO,QAAS,MAAM,IAAK;AAAA,cAC5B;AAAA,YACD,CAAE;AAAA,UACJ;AAAA,UACA,SAAS,SAAU,MAAO;AACzB,mBAAO,KAAK,KAAM,WAAW;AAC5B,cAAAA,QAAO,QAAS,MAAM,IAAK;AAAA,YAC5B,CAAE;AAAA,UACH;AAAA,UACA,YAAY,SAAU,MAAO;AAC5B,mBAAO,KAAK,MAAO,QAAQ,MAAM,CAAC,CAAE;AAAA,UACrC;AAAA;AAAA;AAAA,UAIA,SAAS,SAAU,MAAM,KAAM;AAC9B,gBAAI,KACH,QAAQ,GACR,QAAQA,QAAO,SAAS,GACxB,WAAW,MACX,IAAI,KAAK,QACT,UAAU,WAAW;AACpB,kBAAK,CAAG,EAAE,OAAU;AACnB,sBAAM,YAAa,UAAU,CAAE,QAAS,CAAE;AAAA,cAC3C;AAAA,YACD;AAED,gBAAK,OAAO,SAAS,UAAW;AAC/B,oBAAM;AACN,qBAAO;AAAA,YACR;AACA,mBAAO,QAAQ;AAEf,mBAAQ,KAAM;AACb,oBAAM,SAAS,IAAK,SAAU,CAAE,GAAG,OAAO,YAAa;AACvD,kBAAK,OAAO,IAAI,OAAQ;AACvB;AACA,oBAAI,MAAM,IAAK,OAAQ;AAAA,cACxB;AAAA,YACD;AACA,oBAAQ;AACR,mBAAO,MAAM,QAAS,GAAI;AAAA,UAC3B;AAAA,QACD,CAAE;AACF,YAAI,OAAS,sCAAwC;AAErD,YAAI,UAAU,IAAI,OAAQ,mBAAmB,OAAO,eAAe,GAAI;AAGvE,YAAI,YAAY,CAAE,OAAO,SAAS,UAAU,MAAO;AAEnD,YAAI,kBAAkBH,UAAS;AAI9B,YAAI,aAAa,SAAU,MAAO;AAChC,iBAAOG,QAAO,SAAU,KAAK,eAAe,IAAK;AAAA,QAClD,GACA,WAAW,EAAE,UAAU,KAAK;AAO7B,YAAK,gBAAgB,aAAc;AAClC,uBAAa,SAAU,MAAO;AAC7B,mBAAOA,QAAO,SAAU,KAAK,eAAe,IAAK,KAChD,KAAK,YAAa,QAAS,MAAM,KAAK;AAAA,UACxC;AAAA,QACD;AACD,YAAI,qBAAqB,SAAU,MAAM,IAAK;AAI5C,iBAAO,MAAM;AAGb,iBAAO,KAAK,MAAM,YAAY,UAC7B,KAAK,MAAM,YAAY;AAAA;AAAA;AAAA;AAAA,UAMvB,WAAY,IAAK,KAEjBA,QAAO,IAAK,MAAM,SAAU,MAAM;AAAA,QACpC;AAID,iBAAS,UAAW,MAAM,MAAM,YAAY,OAAQ;AACnD,cAAI,UAAUwC,QACb,gBAAgB,IAChB,eAAe,QACd,WAAW;AACV,mBAAO,MAAM,IAAI;AAAA,UAClB,IACA,WAAW;AACV,mBAAOxC,QAAO,IAAK,MAAM,MAAM,EAAG;AAAA,UACnC,GACD,UAAU,aAAa,GACvByC,QAAO,cAAc,WAAY,CAAE,MAAOzC,QAAO,UAAW,IAAK,IAAI,KAAK,OAG1E,gBAAgB,KAAK,aAClBA,QAAO,UAAW,IAAK,KAAKyC,UAAS,QAAQ,CAAC,YAChD,QAAQ,KAAMzC,QAAO,IAAK,MAAM,IAAK,CAAE;AAEzC,cAAK,iBAAiB,cAAe,CAAE,MAAMyC,OAAO;AAInD,sBAAU,UAAU;AAGpB,YAAAA,QAAOA,SAAQ,cAAe,CAAE;AAGhC,4BAAgB,CAAC,WAAW;AAE5B,mBAAQ,iBAAkB;AAIzB,cAAAzC,QAAO,MAAO,MAAM,MAAM,gBAAgByC,KAAK;AAC/C,mBAAO,IAAID,WAAY,KAAMA,SAAQ,aAAa,IAAI,WAAW,SAAW,GAAI;AAC/E,gCAAgB;AAAA,cACjB;AACA,8BAAgB,gBAAgBA;AAAA,YAEjC;AAEA,4BAAgB,gBAAgB;AAChC,YAAAxC,QAAO,MAAO,MAAM,MAAM,gBAAgByC,KAAK;AAG/C,yBAAa,cAAc,CAAC;AAAA,UAC7B;AAEA,cAAK,YAAa;AACjB,4BAAgB,CAAC,iBAAiB,CAAC,WAAW;AAG9C,uBAAW,WAAY,CAAE,IACxB,iBAAkB,WAAY,CAAE,IAAI,KAAM,WAAY,CAAE,IACxD,CAAC,WAAY,CAAE;AAChB,gBAAK,OAAQ;AACZ,oBAAM,OAAOA;AACb,oBAAM,QAAQ;AACd,oBAAM,MAAM;AAAA,YACb;AAAA,UACD;AACA,iBAAO;AAAA,QACR;AAGA,YAAI,oBAAoB,CAAC;AAEzB,iBAAS,kBAAmB,MAAO;AAClC,cAAI,MACH,MAAM,KAAK,eACXC,YAAW,KAAK,UAChB,UAAU,kBAAmBA,SAAS;AAEvC,cAAK,SAAU;AACd,mBAAO;AAAA,UACR;AAEA,iBAAO,IAAI,KAAK,YAAa,IAAI,cAAeA,SAAS,CAAE;AAC3D,oBAAU1C,QAAO,IAAK,MAAM,SAAU;AAEtC,eAAK,WAAW,YAAa,IAAK;AAElC,cAAK,YAAY,QAAS;AACzB,sBAAU;AAAA,UACX;AACA,4BAAmB0C,SAAS,IAAI;AAEhC,iBAAO;AAAA,QACR;AAEA,iBAAS,SAAU,UAAU,MAAO;AACnC,cAAI,SAAS,MACZ,SAAS,CAAC,GACVb,SAAQ,GACRzB,UAAS,SAAS;AAGnB,iBAAQyB,SAAQzB,SAAQyB,UAAU;AACjC,mBAAO,SAAUA,MAAM;AACvB,gBAAK,CAAC,KAAK,OAAQ;AAClB;AAAA,YACD;AAEA,sBAAU,KAAK,MAAM;AACrB,gBAAK,MAAO;AAKX,kBAAK,YAAY,QAAS;AACzB,uBAAQA,MAAM,IAAI,SAAS,IAAK,MAAM,SAAU,KAAK;AACrD,oBAAK,CAAC,OAAQA,MAAM,GAAI;AACvB,uBAAK,MAAM,UAAU;AAAA,gBACtB;AAAA,cACD;AACA,kBAAK,KAAK,MAAM,YAAY,MAAM,mBAAoB,IAAK,GAAI;AAC9D,uBAAQA,MAAM,IAAI,kBAAmB,IAAK;AAAA,cAC3C;AAAA,YACD,OAAO;AACN,kBAAK,YAAY,QAAS;AACzB,uBAAQA,MAAM,IAAI;AAGlB,yBAAS,IAAK,MAAM,WAAW,OAAQ;AAAA,cACxC;AAAA,YACD;AAAA,UACD;AAGA,eAAMA,SAAQ,GAAGA,SAAQzB,SAAQyB,UAAU;AAC1C,gBAAK,OAAQA,MAAM,KAAK,MAAO;AAC9B,uBAAUA,MAAM,EAAE,MAAM,UAAU,OAAQA,MAAM;AAAA,YACjD;AAAA,UACD;AAEA,iBAAO;AAAA,QACR;AAEA,QAAA7B,QAAO,GAAG,OAAQ;AAAA,UACjB,MAAM,WAAW;AAChB,mBAAO,SAAU,MAAM,IAAK;AAAA,UAC7B;AAAA,UACA,MAAM,WAAW;AAChB,mBAAO,SAAU,IAAK;AAAA,UACvB;AAAA,UACA,QAAQ,SAAU+B,QAAQ;AACzB,gBAAK,OAAOA,WAAU,WAAY;AACjC,qBAAOA,SAAQ,KAAK,KAAK,IAAI,KAAK,KAAK;AAAA,YACxC;AAEA,mBAAO,KAAK,KAAM,WAAW;AAC5B,kBAAK,mBAAoB,IAAK,GAAI;AACjC,gBAAA/B,QAAQ,IAAK,EAAE,KAAK;AAAA,cACrB,OAAO;AACN,gBAAAA,QAAQ,IAAK,EAAE,KAAK;AAAA,cACrB;AAAA,YACD,CAAE;AAAA,UACH;AAAA,QACD,CAAE;AACF,YAAI,iBAAmB;AAEvB,YAAI,WAAa;AAEjB,YAAI,cAAgB;AAIpB,SAAE,WAAW;AACZ,cAAI,WAAWH,UAAS,uBAAuB,GAC9C,MAAM,SAAS,YAAaA,UAAS,cAAe,KAAM,CAAE,GAC5D,QAAQA,UAAS,cAAe,OAAQ;AAMzC,gBAAM,aAAc,QAAQ,OAAQ;AACpC,gBAAM,aAAc,WAAW,SAAU;AACzC,gBAAM,aAAc,QAAQ,GAAI;AAEhC,cAAI,YAAa,KAAM;AAIvB,kBAAQ,aAAa,IAAI,UAAW,IAAK,EAAE,UAAW,IAAK,EAAE,UAAU;AAIvE,cAAI,YAAY;AAChB,kBAAQ,iBAAiB,CAAC,CAAC,IAAI,UAAW,IAAK,EAAE,UAAU;AAK3D,cAAI,YAAY;AAChB,kBAAQ,SAAS,CAAC,CAAC,IAAI;AAAA,QACxB,GAAI;AAIJ,YAAI,UAAU;AAAA;AAAA;AAAA;AAAA,UAKb,OAAO,CAAE,GAAG,WAAW,UAAW;AAAA,UAClC,KAAK,CAAE,GAAG,qBAAqB,qBAAsB;AAAA,UACrD,IAAI,CAAE,GAAG,kBAAkB,kBAAmB;AAAA,UAC9C,IAAI,CAAE,GAAG,sBAAsB,uBAAwB;AAAA,UAEvD,UAAU,CAAE,GAAG,IAAI,EAAG;AAAA,QACvB;AAEA,gBAAQ,QAAQ,QAAQ,QAAQ,QAAQ,WAAW,QAAQ,UAAU,QAAQ;AAC7E,gBAAQ,KAAK,QAAQ;AAGrB,YAAK,CAAC,QAAQ,QAAS;AACtB,kBAAQ,WAAW,QAAQ,SAAS,CAAE,GAAG,gCAAgC,WAAY;AAAA,QACtF;AAGA,iBAAS,OAAQ,SAAS,KAAM;AAI/B,cAAI;AAEJ,cAAK,OAAO,QAAQ,yBAAyB,aAAc;AAC1D,kBAAM,QAAQ,qBAAsB,OAAO,GAAI;AAAA,UAEhD,WAAY,OAAO,QAAQ,qBAAqB,aAAc;AAC7D,kBAAM,QAAQ,iBAAkB,OAAO,GAAI;AAAA,UAE5C,OAAO;AACN,kBAAM,CAAC;AAAA,UACR;AAEA,cAAK,QAAQ,UAAa,OAAO,SAAU,SAAS,GAAI,GAAI;AAC3D,mBAAOG,QAAO,MAAO,CAAE,OAAQ,GAAG,GAAI;AAAA,UACvC;AAEA,iBAAO;AAAA,QACR;AAIA,iBAAS,cAAe,OAAO,aAAc;AAC5C,cAAI,IAAI,GACP,IAAI,MAAM;AAEX,iBAAQ,IAAI,GAAG,KAAM;AACpB,qBAAS;AAAA,cACR,MAAO,CAAE;AAAA,cACT;AAAA,cACA,CAAC,eAAe,SAAS,IAAK,YAAa,CAAE,GAAG,YAAa;AAAA,YAC9D;AAAA,UACD;AAAA,QACD;AAGA,YAAI,QAAQ;AAEZ,iBAAS,cAAe,OAAO,SAAS,SAAS,WAAW,SAAU;AACrE,cAAI,MAAM,KAAK,KAAK,MAAM,UAAU,GACnC,WAAW,QAAQ,uBAAuB,GAC1C,QAAQ,CAAC,GACT,IAAI,GACJ,IAAI,MAAM;AAEX,iBAAQ,IAAI,GAAG,KAAM;AACpB,mBAAO,MAAO,CAAE;AAEhB,gBAAK,QAAQ,SAAS,GAAI;AAGzB,kBAAKD,QAAQ,IAAK,MAAM,UAAW;AAIlC,gBAAAC,QAAO,MAAO,OAAO,KAAK,WAAW,CAAE,IAAK,IAAI,IAAK;AAAA,cAGtD,WAAY,CAAC,MAAM,KAAM,IAAK,GAAI;AACjC,sBAAM,KAAM,QAAQ,eAAgB,IAAK,CAAE;AAAA,cAG5C,OAAO;AACN,sBAAM,OAAO,SAAS,YAAa,QAAQ,cAAe,KAAM,CAAE;AAGlE,uBAAQ,SAAS,KAAM,IAAK,KAAK,CAAE,IAAI,EAAG,GAAK,CAAE,EAAE,YAAY;AAC/D,uBAAO,QAAS,GAAI,KAAK,QAAQ;AACjC,oBAAI,YAAY,KAAM,CAAE,IAAIA,QAAO,cAAe,IAAK,IAAI,KAAM,CAAE;AAGnE,oBAAI,KAAM,CAAE;AACZ,uBAAQ,KAAM;AACb,wBAAM,IAAI;AAAA,gBACX;AAIA,gBAAAA,QAAO,MAAO,OAAO,IAAI,UAAW;AAGpC,sBAAM,SAAS;AAGf,oBAAI,cAAc;AAAA,cACnB;AAAA,YACD;AAAA,UACD;AAGA,mBAAS,cAAc;AAEvB,cAAI;AACJ,iBAAU,OAAO,MAAO,GAAI,GAAM;AAGjC,gBAAK,aAAaA,QAAO,QAAS,MAAM,SAAU,IAAI,IAAK;AAC1D,kBAAK,SAAU;AACd,wBAAQ,KAAM,IAAK;AAAA,cACpB;AACA;AAAA,YACD;AAEA,uBAAW,WAAY,IAAK;AAG5B,kBAAM,OAAQ,SAAS,YAAa,IAAK,GAAG,QAAS;AAGrD,gBAAK,UAAW;AACf,4BAAe,GAAI;AAAA,YACpB;AAGA,gBAAK,SAAU;AACd,kBAAI;AACJ,qBAAU,OAAO,IAAK,GAAI,GAAM;AAC/B,oBAAK,YAAY,KAAM,KAAK,QAAQ,EAAG,GAAI;AAC1C,0BAAQ,KAAM,IAAK;AAAA,gBACpB;AAAA,cACD;AAAA,YACD;AAAA,UACD;AAEA,iBAAO;AAAA,QACR;AAGA,YAAI,iBAAiB;AAErB,iBAAS,aAAa;AACrB,iBAAO;AAAA,QACR;AAEA,iBAAS,cAAc;AACtB,iBAAO;AAAA,QACR;AAEA,iBAAS,GAAI,MAAM,OAAO,UAAUmC,OAAM,IAAIQ,MAAM;AACnD,cAAI,QAAQ;AAGZ,cAAK,OAAO,UAAU,UAAW;AAGhC,gBAAK,OAAO,aAAa,UAAW;AAGnC,cAAAR,QAAOA,SAAQ;AACf,yBAAW;AAAA,YACZ;AACA,iBAAM,QAAQ,OAAQ;AACrB,iBAAI,MAAM,MAAM,UAAUA,OAAM,MAAO,IAAK,GAAGQ,IAAI;AAAA,YACpD;AACA,mBAAO;AAAA,UACR;AAEA,cAAKR,SAAQ,QAAQ,MAAM,MAAO;AAGjC,iBAAK;AACL,YAAAA,QAAO,WAAW;AAAA,UACnB,WAAY,MAAM,MAAO;AACxB,gBAAK,OAAO,aAAa,UAAW;AAGnC,mBAAKA;AACL,cAAAA,QAAO;AAAA,YACR,OAAO;AAGN,mBAAKA;AACL,cAAAA,QAAO;AACP,yBAAW;AAAA,YACZ;AAAA,UACD;AACA,cAAK,OAAO,OAAQ;AACnB,iBAAK;AAAA,UACN,WAAY,CAAC,IAAK;AACjB,mBAAO;AAAA,UACR;AAEA,cAAKQ,SAAQ,GAAI;AAChB,qBAAS;AACT,iBAAK,SAAU,OAAQ;AAGtB,cAAA3C,QAAO,EAAE,IAAK,KAAM;AACpB,qBAAO,OAAO,MAAO,MAAM,SAAU;AAAA,YACtC;AAGA,eAAG,OAAO,OAAO,SAAU,OAAO,OAAOA,QAAO;AAAA,UACjD;AACA,iBAAO,KAAK,KAAM,WAAW;AAC5B,YAAAA,QAAO,MAAM,IAAK,MAAM,OAAO,IAAImC,OAAM,QAAS;AAAA,UACnD,CAAE;AAAA,QACH;AAMA,QAAAnC,QAAO,QAAQ;AAAA,UAEd,QAAQ,CAAC;AAAA,UAET,KAAK,SAAU,MAAM,OAAO,SAASmC,OAAM,UAAW;AAErD,gBAAI,aAAa,aAAa,KAC7B,QAAQS,IAAG,WACX,SAAS,UAAU,MAAM,YAAY,UACrC,WAAW,SAAS,IAAK,IAAK;AAG/B,gBAAK,CAAC,WAAY,IAAK,GAAI;AAC1B;AAAA,YACD;AAGA,gBAAK,QAAQ,SAAU;AACtB,4BAAc;AACd,wBAAU,YAAY;AACtB,yBAAW,YAAY;AAAA,YACxB;AAIA,gBAAK,UAAW;AACf,cAAA5C,QAAO,KAAK,gBAAiB,iBAAiB,QAAS;AAAA,YACxD;AAGA,gBAAK,CAAC,QAAQ,MAAO;AACpB,sBAAQ,OAAOA,QAAO;AAAA,YACvB;AAGA,gBAAK,EAAG,SAAS,SAAS,SAAW;AACpC,uBAAS,SAAS,SAAS,uBAAO,OAAQ,IAAK;AAAA,YAChD;AACA,gBAAK,EAAG,cAAc,SAAS,SAAW;AACzC,4BAAc,SAAS,SAAS,SAAUc,IAAI;AAI7C,uBAAO,OAAOd,YAAW,eAAeA,QAAO,MAAM,cAAcc,GAAE,OACpEd,QAAO,MAAM,SAAS,MAAO,MAAM,SAAU,IAAI;AAAA,cACnD;AAAA,YACD;AAGA,qBAAU,SAAS,IAAK,MAAO,aAAc,KAAK,CAAE,EAAG;AACvD,YAAA4C,KAAI,MAAM;AACV,mBAAQA,MAAM;AACb,oBAAM,eAAe,KAAM,MAAOA,EAAE,CAAE,KAAK,CAAC;AAC5C,qBAAO,WAAW,IAAK,CAAE;AACzB,4BAAe,IAAK,CAAE,KAAK,IAAK,MAAO,GAAI,EAAE,KAAK;AAGlD,kBAAK,CAAC,MAAO;AACZ;AAAA,cACD;AAGA,wBAAU5C,QAAO,MAAM,QAAS,IAAK,KAAK,CAAC;AAG3C,sBAAS,WAAW,QAAQ,eAAe,QAAQ,aAAc;AAGjE,wBAAUA,QAAO,MAAM,QAAS,IAAK,KAAK,CAAC;AAG3C,0BAAYA,QAAO,OAAQ;AAAA,gBAC1B;AAAA,gBACA;AAAA,gBACA,MAAMmC;AAAA,gBACN;AAAA,gBACA,MAAM,QAAQ;AAAA,gBACd;AAAA,gBACA,cAAc,YAAYnC,QAAO,KAAK,MAAM,aAAa,KAAM,QAAS;AAAA,gBACxE,WAAW,WAAW,KAAM,GAAI;AAAA,cACjC,GAAG,WAAY;AAGf,kBAAK,EAAG,WAAW,OAAQ,IAAK,IAAM;AACrC,2BAAW,OAAQ,IAAK,IAAI,CAAC;AAC7B,yBAAS,gBAAgB;AAGzB,oBAAK,CAAC,QAAQ,SACb,QAAQ,MAAM,KAAM,MAAMmC,OAAM,YAAY,WAAY,MAAM,OAAQ;AAEtE,sBAAK,KAAK,kBAAmB;AAC5B,yBAAK,iBAAkB,MAAM,WAAY;AAAA,kBAC1C;AAAA,gBACD;AAAA,cACD;AAEA,kBAAK,QAAQ,KAAM;AAClB,wBAAQ,IAAI,KAAM,MAAM,SAAU;AAElC,oBAAK,CAAC,UAAU,QAAQ,MAAO;AAC9B,4BAAU,QAAQ,OAAO,QAAQ;AAAA,gBAClC;AAAA,cACD;AAGA,kBAAK,UAAW;AACf,yBAAS,OAAQ,SAAS,iBAAiB,GAAG,SAAU;AAAA,cACzD,OAAO;AACN,yBAAS,KAAM,SAAU;AAAA,cAC1B;AAGA,cAAAnC,QAAO,MAAM,OAAQ,IAAK,IAAI;AAAA,YAC/B;AAAA,UAED;AAAA;AAAA,UAGA,QAAQ,SAAU,MAAM,OAAO,SAAS,UAAU,aAAc;AAE/D,gBAAI,GAAG,WAAW,KACjB,QAAQ4C,IAAG,WACX,SAAS,UAAU,MAAM,YAAY,UACrC,WAAW,SAAS,QAAS,IAAK,KAAK,SAAS,IAAK,IAAK;AAE3D,gBAAK,CAAC,YAAY,EAAG,SAAS,SAAS,SAAW;AACjD;AAAA,YACD;AAGA,qBAAU,SAAS,IAAK,MAAO,aAAc,KAAK,CAAE,EAAG;AACvD,YAAAA,KAAI,MAAM;AACV,mBAAQA,MAAM;AACb,oBAAM,eAAe,KAAM,MAAOA,EAAE,CAAE,KAAK,CAAC;AAC5C,qBAAO,WAAW,IAAK,CAAE;AACzB,4BAAe,IAAK,CAAE,KAAK,IAAK,MAAO,GAAI,EAAE,KAAK;AAGlD,kBAAK,CAAC,MAAO;AACZ,qBAAM,QAAQ,QAAS;AACtB,kBAAA5C,QAAO,MAAM,OAAQ,MAAM,OAAO,MAAO4C,EAAE,GAAG,SAAS,UAAU,IAAK;AAAA,gBACvE;AACA;AAAA,cACD;AAEA,wBAAU5C,QAAO,MAAM,QAAS,IAAK,KAAK,CAAC;AAC3C,sBAAS,WAAW,QAAQ,eAAe,QAAQ,aAAc;AACjE,yBAAW,OAAQ,IAAK,KAAK,CAAC;AAC9B,oBAAM,IAAK,CAAE,KACZ,IAAI,OAAQ,YAAY,WAAW,KAAM,eAAgB,IAAI,SAAU;AAGxE,0BAAY,IAAI,SAAS;AACzB,qBAAQ,KAAM;AACb,4BAAY,SAAU,CAAE;AAExB,qBAAO,eAAe,aAAa,UAAU,cAC1C,CAAC,WAAW,QAAQ,SAAS,UAAU,UACvC,CAAC,OAAO,IAAI,KAAM,UAAU,SAAU,OACtC,CAAC,YAAY,aAAa,UAAU,YACrC,aAAa,QAAQ,UAAU,WAAa;AAC7C,2BAAS,OAAQ,GAAG,CAAE;AAEtB,sBAAK,UAAU,UAAW;AACzB,6BAAS;AAAA,kBACV;AACA,sBAAK,QAAQ,QAAS;AACrB,4BAAQ,OAAO,KAAM,MAAM,SAAU;AAAA,kBACtC;AAAA,gBACD;AAAA,cACD;AAIA,kBAAK,aAAa,CAAC,SAAS,QAAS;AACpC,oBAAK,CAAC,QAAQ,YACb,QAAQ,SAAS,KAAM,MAAM,YAAY,SAAS,MAAO,MAAM,OAAQ;AAEvE,kBAAAA,QAAO,YAAa,MAAM,MAAM,SAAS,MAAO;AAAA,gBACjD;AAEA,uBAAO,OAAQ,IAAK;AAAA,cACrB;AAAA,YACD;AAGA,gBAAKA,QAAO,cAAe,MAAO,GAAI;AACrC,uBAAS,OAAQ,MAAM,eAAgB;AAAA,YACxC;AAAA,UACD;AAAA,UAEA,UAAU,SAAU,aAAc;AAEjC,gBAAI,GAAG,GAAG,KAAK,SAAS,WAAW,cAClC,OAAO,IAAI,MAAO,UAAU,MAAO,GAGnC,QAAQA,QAAO,MAAM,IAAK,WAAY,GAEtC,YACC,SAAS,IAAK,MAAM,QAAS,KAAK,uBAAO,OAAQ,IAAK,GACpD,MAAM,IAAK,KAAK,CAAC,GACpB,UAAUA,QAAO,MAAM,QAAS,MAAM,IAAK,KAAK,CAAC;AAGlD,iBAAM,CAAE,IAAI;AAEZ,iBAAM,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAM;AACxC,mBAAM,CAAE,IAAI,UAAW,CAAE;AAAA,YAC1B;AAEA,kBAAM,iBAAiB;AAGvB,gBAAK,QAAQ,eAAe,QAAQ,YAAY,KAAM,MAAM,KAAM,MAAM,OAAQ;AAC/E;AAAA,YACD;AAGA,2BAAeA,QAAO,MAAM,SAAS,KAAM,MAAM,OAAO,QAAS;AAGjE,gBAAI;AACJ,oBAAU,UAAU,aAAc,GAAI,MAAO,CAAC,MAAM,qBAAqB,GAAI;AAC5E,oBAAM,gBAAgB,QAAQ;AAE9B,kBAAI;AACJ,sBAAU,YAAY,QAAQ,SAAU,GAAI,MAC3C,CAAC,MAAM,8BAA8B,GAAI;AAIzC,oBAAK,CAAC,MAAM,cAAc,UAAU,cAAc,SACjD,MAAM,WAAW,KAAM,UAAU,SAAU,GAAI;AAE/C,wBAAM,YAAY;AAClB,wBAAM,OAAO,UAAU;AAEvB,0BAAUA,QAAO,MAAM,QAAS,UAAU,QAAS,KAAK,CAAC,GAAI,UAC5D,UAAU,SAAU,MAAO,QAAQ,MAAM,IAAK;AAE/C,sBAAK,QAAQ,QAAY;AACxB,yBAAO,MAAM,SAAS,SAAU,OAAQ;AACvC,4BAAM,eAAe;AACrB,4BAAM,gBAAgB;AAAA,oBACvB;AAAA,kBACD;AAAA,gBACD;AAAA,cACD;AAAA,YACD;AAGA,gBAAK,QAAQ,cAAe;AAC3B,sBAAQ,aAAa,KAAM,MAAM,KAAM;AAAA,YACxC;AAEA,mBAAO,MAAM;AAAA,UACd;AAAA,UAEA,UAAU,SAAU,OAAO,UAAW;AACrC,gBAAI,GAAG,WAAW,KAAK,iBAAiB,kBACvC,eAAe,CAAC,GAChB,gBAAgB,SAAS,eACzB,MAAM,MAAM;AAGb,gBAAK;AAAA;AAAA,YAIJ,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA,YAOJ,EAAG,MAAM,SAAS,WAAW,MAAM,UAAU,IAAM;AAEnD,qBAAQ,QAAQ,MAAM,MAAM,IAAI,cAAc,MAAO;AAIpD,oBAAK,IAAI,aAAa,KAAK,EAAG,MAAM,SAAS,WAAW,IAAI,aAAa,OAAS;AACjF,oCAAkB,CAAC;AACnB,qCAAmB,CAAC;AACpB,uBAAM,IAAI,GAAG,IAAI,eAAe,KAAM;AACrC,gCAAY,SAAU,CAAE;AAGxB,0BAAM,UAAU,WAAW;AAE3B,wBAAK,iBAAkB,GAAI,MAAM,QAAY;AAC5C,uCAAkB,GAAI,IAAI,UAAU,eACnCA,QAAQ,KAAK,IAAK,EAAE,MAAO,GAAI,IAAI,KACnCA,QAAO,KAAM,KAAK,MAAM,MAAM,CAAE,GAAI,CAAE,EAAE;AAAA,oBAC1C;AACA,wBAAK,iBAAkB,GAAI,GAAI;AAC9B,sCAAgB,KAAM,SAAU;AAAA,oBACjC;AAAA,kBACD;AACA,sBAAK,gBAAgB,QAAS;AAC7B,iCAAa,KAAM,EAAE,MAAM,KAAK,UAAU,gBAAgB,CAAE;AAAA,kBAC7D;AAAA,gBACD;AAAA,cACD;AAAA,YACD;AAGA,kBAAM;AACN,gBAAK,gBAAgB,SAAS,QAAS;AACtC,2BAAa,KAAM,EAAE,MAAM,KAAK,UAAU,SAAS,MAAO,aAAc,EAAE,CAAE;AAAA,YAC7E;AAEA,mBAAO;AAAA,UACR;AAAA,UAEA,SAAS,SAAUE,OAAM,MAAO;AAC/B,mBAAO,eAAgBF,QAAO,MAAM,WAAWE,OAAM;AAAA,cACpD,YAAY;AAAA,cACZ,cAAc;AAAA,cAEd,KAAKP,YAAY,IAAK,IACrB,WAAW;AACV,oBAAK,KAAK,eAAgB;AACzB,yBAAO,KAAM,KAAK,aAAc;AAAA,gBACjC;AAAA,cACD,IACA,WAAW;AACV,oBAAK,KAAK,eAAgB;AACzB,yBAAO,KAAK,cAAeO,KAAK;AAAA,gBACjC;AAAA,cACD;AAAA,cAED,KAAK,SAAU,OAAQ;AACtB,uBAAO,eAAgB,MAAMA,OAAM;AAAA,kBAClC,YAAY;AAAA,kBACZ,cAAc;AAAA,kBACd,UAAU;AAAA,kBACV;AAAA,gBACD,CAAE;AAAA,cACH;AAAA,YACD,CAAE;AAAA,UACH;AAAA,UAEA,KAAK,SAAU,eAAgB;AAC9B,mBAAO,cAAeF,QAAO,OAAQ,IACpC,gBACA,IAAIA,QAAO,MAAO,aAAc;AAAA,UAClC;AAAA,UAEA,SAAS;AAAA,YACR,MAAM;AAAA;AAAA,cAGL,UAAU;AAAA,YACX;AAAA,YACA,OAAO;AAAA;AAAA,cAGN,OAAO,SAAUmC,OAAO;AAIvB,oBAAI,KAAK,QAAQA;AAGjB,oBAAK,eAAe,KAAM,GAAG,IAAK,KACjC,GAAG,SAAS,SAAU,IAAI,OAAQ,GAAI;AAGtC,iCAAgB,IAAI,SAAS,IAAK;AAAA,gBACnC;AAGA,uBAAO;AAAA,cACR;AAAA,cACA,SAAS,SAAUA,OAAO;AAIzB,oBAAI,KAAK,QAAQA;AAGjB,oBAAK,eAAe,KAAM,GAAG,IAAK,KACjC,GAAG,SAAS,SAAU,IAAI,OAAQ,GAAI;AAEtC,iCAAgB,IAAI,OAAQ;AAAA,gBAC7B;AAGA,uBAAO;AAAA,cACR;AAAA;AAAA;AAAA,cAIA,UAAU,SAAU,OAAQ;AAC3B,oBAAI,SAAS,MAAM;AACnB,uBAAO,eAAe,KAAM,OAAO,IAAK,KACvC,OAAO,SAAS,SAAU,QAAQ,OAAQ,KAC1C,SAAS,IAAK,QAAQ,OAAQ,KAC9B,SAAU,QAAQ,GAAI;AAAA,cACxB;AAAA,YACD;AAAA,YAEA,cAAc;AAAA,cACb,cAAc,SAAU,OAAQ;AAI/B,oBAAK,MAAM,WAAW,UAAa,MAAM,eAAgB;AACxD,wBAAM,cAAc,cAAc,MAAM;AAAA,gBACzC;AAAA,cACD;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAMA,iBAAS,eAAgB,IAAI,MAAM,SAAU;AAG5C,cAAK,CAAC,SAAU;AACf,gBAAK,SAAS,IAAK,IAAI,IAAK,MAAM,QAAY;AAC7C,cAAAnC,QAAO,MAAM,IAAK,IAAI,MAAM,UAAW;AAAA,YACxC;AACA;AAAA,UACD;AAGA,mBAAS,IAAK,IAAI,MAAM,KAAM;AAC9B,UAAAA,QAAO,MAAM,IAAK,IAAI,MAAM;AAAA,YAC3B,WAAW;AAAA,YACX,SAAS,SAAU,OAAQ;AAC1B,kBAAI,QACH,QAAQ,SAAS,IAAK,MAAM,IAAK;AAElC,kBAAO,MAAM,YAAY,KAAO,KAAM,IAAK,GAAI;AAG9C,oBAAK,CAAC,OAAQ;AAKb,0BAAQR,OAAM,KAAM,SAAU;AAC9B,2BAAS,IAAK,MAAM,MAAM,KAAM;AAGhC,uBAAM,IAAK,EAAE;AACb,2BAAS,SAAS,IAAK,MAAM,IAAK;AAClC,2BAAS,IAAK,MAAM,MAAM,KAAM;AAEhC,sBAAK,UAAU,QAAS;AAGvB,0BAAM,yBAAyB;AAC/B,0BAAM,eAAe;AAErB,2BAAO;AAAA,kBACR;AAAA,gBAQD,YAAcQ,QAAO,MAAM,QAAS,IAAK,KAAK,CAAC,GAAI,cAAe;AACjE,wBAAM,gBAAgB;AAAA,gBACvB;AAAA,cAID,WAAY,OAAQ;AAGnB,yBAAS,IAAK,MAAM,MAAMA,QAAO,MAAM;AAAA,kBACtC,MAAO,CAAE;AAAA,kBACT,MAAM,MAAO,CAAE;AAAA,kBACf;AAAA,gBACD,CAAE;AAUF,sBAAM,gBAAgB;AACtB,sBAAM,gCAAgC;AAAA,cACvC;AAAA,YACD;AAAA,UACD,CAAE;AAAA,QACH;AAEA,QAAAA,QAAO,cAAc,SAAU,MAAM,MAAM,QAAS;AAGnD,cAAK,KAAK,qBAAsB;AAC/B,iBAAK,oBAAqB,MAAM,MAAO;AAAA,UACxC;AAAA,QACD;AAEA,QAAAA,QAAO,QAAQ,SAAU,KAAK,OAAQ;AAGrC,cAAK,EAAG,gBAAgBA,QAAO,QAAU;AACxC,mBAAO,IAAIA,QAAO,MAAO,KAAK,KAAM;AAAA,UACrC;AAGA,cAAK,OAAO,IAAI,MAAO;AACtB,iBAAK,gBAAgB;AACrB,iBAAK,OAAO,IAAI;AAIhB,iBAAK,qBAAqB,IAAI,oBAC5B,IAAI,qBAAqB;AAAA,YAGzB,IAAI,gBAAgB,QACrB,aACA;AAKD,iBAAK,SAAW,IAAI,UAAU,IAAI,OAAO,aAAa,IACrD,IAAI,OAAO,aACX,IAAI;AAEL,iBAAK,gBAAgB,IAAI;AACzB,iBAAK,gBAAgB,IAAI;AAAA,UAG1B,OAAO;AACN,iBAAK,OAAO;AAAA,UACb;AAGA,cAAK,OAAQ;AACZ,YAAAA,QAAO,OAAQ,MAAM,KAAM;AAAA,UAC5B;AAGA,eAAK,YAAY,OAAO,IAAI,aAAa,KAAK,IAAI;AAGlD,eAAMA,QAAO,OAAQ,IAAI;AAAA,QAC1B;AAIA,QAAAA,QAAO,MAAM,YAAY;AAAA,UACxB,aAAaA,QAAO;AAAA,UACpB,oBAAoB;AAAA,UACpB,sBAAsB;AAAA,UACtB,+BAA+B;AAAA,UAC/B,aAAa;AAAA,UAEb,gBAAgB,WAAW;AAC1B,gBAAIc,KAAI,KAAK;AAEb,iBAAK,qBAAqB;AAE1B,gBAAKA,MAAK,CAAC,KAAK,aAAc;AAC7B,cAAAA,GAAE,eAAe;AAAA,YAClB;AAAA,UACD;AAAA,UACA,iBAAiB,WAAW;AAC3B,gBAAIA,KAAI,KAAK;AAEb,iBAAK,uBAAuB;AAE5B,gBAAKA,MAAK,CAAC,KAAK,aAAc;AAC7B,cAAAA,GAAE,gBAAgB;AAAA,YACnB;AAAA,UACD;AAAA,UACA,0BAA0B,WAAW;AACpC,gBAAIA,KAAI,KAAK;AAEb,iBAAK,gCAAgC;AAErC,gBAAKA,MAAK,CAAC,KAAK,aAAc;AAC7B,cAAAA,GAAE,yBAAyB;AAAA,YAC5B;AAEA,iBAAK,gBAAgB;AAAA,UACtB;AAAA,QACD;AAGA,QAAAd,QAAO,KAAM;AAAA,UACZ,QAAQ;AAAA,UACR,SAAS;AAAA,UACT,YAAY;AAAA,UACZ,gBAAgB;AAAA,UAChB,SAAS;AAAA,UACT,QAAQ;AAAA,UACR,YAAY;AAAA,UACZ,SAAS;AAAA,UACT,OAAO;AAAA,UACP,OAAO;AAAA,UACP,UAAU;AAAA,UACV,MAAM;AAAA,UACN,QAAQ;AAAA,UACR,MAAM;AAAA,UACN,UAAU;AAAA,UACV,KAAK;AAAA,UACL,SAAS;AAAA,UACT,QAAQ;AAAA,UACR,SAAS;AAAA,UACT,SAAS;AAAA,UACT,SAAS;AAAA,UACT,SAAS;AAAA,UACT,SAAS;AAAA,UACT,WAAW;AAAA,UACX,aAAa;AAAA,UACb,SAAS;AAAA,UACT,SAAS;AAAA,UACT,eAAe;AAAA,UACf,WAAW;AAAA,UACX,SAAS;AAAA,UACT,OAAO;AAAA,QACR,GAAGA,QAAO,MAAM,OAAQ;AAExB,QAAAA,QAAO,KAAM,EAAE,OAAO,WAAW,MAAM,WAAW,GAAG,SAAU,MAAM,cAAe;AAEnF,mBAAS,mBAAoB,aAAc;AAC1C,gBAAKH,UAAS,cAAe;AAS5B,kBAAI,SAAS,SAAS,IAAK,MAAM,QAAS,GACzC,QAAQG,QAAO,MAAM,IAAK,WAAY;AACvC,oBAAM,OAAO,YAAY,SAAS,YAAY,UAAU;AACxD,oBAAM,cAAc;AAGpB,qBAAQ,WAAY;AAMpB,kBAAK,MAAM,WAAW,MAAM,eAAgB;AAK3C,uBAAQ,KAAM;AAAA,cACf;AAAA,YACD,OAAO;AAIN,cAAAA,QAAO,MAAM;AAAA,gBAAU;AAAA,gBAAc,YAAY;AAAA,gBAChDA,QAAO,MAAM,IAAK,WAAY;AAAA,cAAE;AAAA,YAClC;AAAA,UACD;AAEA,UAAAA,QAAO,MAAM,QAAS,IAAK,IAAI;AAAA;AAAA,YAG9B,OAAO,WAAW;AAEjB,kBAAI;AAKJ,6BAAgB,MAAM,MAAM,IAAK;AAEjC,kBAAKH,UAAS,cAAe;AAM5B,2BAAW,SAAS,IAAK,MAAM,YAAa;AAC5C,oBAAK,CAAC,UAAW;AAChB,uBAAK,iBAAkB,cAAc,kBAAmB;AAAA,gBACzD;AACA,yBAAS,IAAK,MAAM,eAAgB,YAAY,KAAM,CAAE;AAAA,cACzD,OAAO;AAGN,uBAAO;AAAA,cACR;AAAA,YACD;AAAA,YACA,SAAS,WAAW;AAGnB,6BAAgB,MAAM,IAAK;AAG3B,qBAAO;AAAA,YACR;AAAA,YAEA,UAAU,WAAW;AACpB,kBAAI;AAEJ,kBAAKA,UAAS,cAAe;AAC5B,2BAAW,SAAS,IAAK,MAAM,YAAa,IAAI;AAChD,oBAAK,CAAC,UAAW;AAChB,uBAAK,oBAAqB,cAAc,kBAAmB;AAC3D,2BAAS,OAAQ,MAAM,YAAa;AAAA,gBACrC,OAAO;AACN,2BAAS,IAAK,MAAM,cAAc,QAAS;AAAA,gBAC5C;AAAA,cACD,OAAO;AAGN,uBAAO;AAAA,cACR;AAAA,YACD;AAAA;AAAA;AAAA,YAIA,UAAU,SAAU,OAAQ;AAC3B,qBAAO,SAAS,IAAK,MAAM,QAAQ,IAAK;AAAA,YACzC;AAAA,YAEA;AAAA,UACD;AAcA,UAAAG,QAAO,MAAM,QAAS,YAAa,IAAI;AAAA,YACtC,OAAO,WAAW;AAIjB,kBAAI,MAAM,KAAK,iBAAiB,KAAK,YAAY,MAChD,aAAaH,UAAS,eAAe,OAAO,KAC5C,WAAW,SAAS,IAAK,YAAY,YAAa;AAMnD,kBAAK,CAAC,UAAW;AAChB,oBAAKA,UAAS,cAAe;AAC5B,uBAAK,iBAAkB,cAAc,kBAAmB;AAAA,gBACzD,OAAO;AACN,sBAAI,iBAAkB,MAAM,oBAAoB,IAAK;AAAA,gBACtD;AAAA,cACD;AACA,uBAAS,IAAK,YAAY,eAAgB,YAAY,KAAM,CAAE;AAAA,YAC/D;AAAA,YACA,UAAU,WAAW;AACpB,kBAAI,MAAM,KAAK,iBAAiB,KAAK,YAAY,MAChD,aAAaA,UAAS,eAAe,OAAO,KAC5C,WAAW,SAAS,IAAK,YAAY,YAAa,IAAI;AAEvD,kBAAK,CAAC,UAAW;AAChB,oBAAKA,UAAS,cAAe;AAC5B,uBAAK,oBAAqB,cAAc,kBAAmB;AAAA,gBAC5D,OAAO;AACN,sBAAI,oBAAqB,MAAM,oBAAoB,IAAK;AAAA,gBACzD;AACA,yBAAS,OAAQ,YAAY,YAAa;AAAA,cAC3C,OAAO;AACN,yBAAS,IAAK,YAAY,cAAc,QAAS;AAAA,cAClD;AAAA,YACD;AAAA,UACD;AAAA,QACD,CAAE;AAUF,QAAAG,QAAO,KAAM;AAAA,UACZ,YAAY;AAAA,UACZ,YAAY;AAAA,UACZ,cAAc;AAAA,UACd,cAAc;AAAA,QACf,GAAG,SAAU,MAAM,KAAM;AACxB,UAAAA,QAAO,MAAM,QAAS,IAAK,IAAI;AAAA,YAC9B,cAAc;AAAA,YACd,UAAU;AAAA,YAEV,QAAQ,SAAU,OAAQ;AACzB,kBAAI,KACH,SAAS,MACT,UAAU,MAAM,eAChB,YAAY,MAAM;AAInB,kBAAK,CAAC,WAAa,YAAY,UAAU,CAACA,QAAO,SAAU,QAAQ,OAAQ,GAAM;AAChF,sBAAM,OAAO,UAAU;AACvB,sBAAM,UAAU,QAAQ,MAAO,MAAM,SAAU;AAC/C,sBAAM,OAAO;AAAA,cACd;AACA,qBAAO;AAAA,YACR;AAAA,UACD;AAAA,QACD,CAAE;AAEF,QAAAA,QAAO,GAAG,OAAQ;AAAA,UAEjB,IAAI,SAAU,OAAO,UAAUmC,OAAM,IAAK;AACzC,mBAAO,GAAI,MAAM,OAAO,UAAUA,OAAM,EAAG;AAAA,UAC5C;AAAA,UACA,KAAK,SAAU,OAAO,UAAUA,OAAM,IAAK;AAC1C,mBAAO,GAAI,MAAM,OAAO,UAAUA,OAAM,IAAI,CAAE;AAAA,UAC/C;AAAA,UACA,KAAK,SAAU,OAAO,UAAU,IAAK;AACpC,gBAAI,WAAW;AACf,gBAAK,SAAS,MAAM,kBAAkB,MAAM,WAAY;AAGvD,0BAAY,MAAM;AAClB,cAAAnC,QAAQ,MAAM,cAAe,EAAE;AAAA,gBAC9B,UAAU,YACT,UAAU,WAAW,MAAM,UAAU,YACrC,UAAU;AAAA,gBACX,UAAU;AAAA,gBACV,UAAU;AAAA,cACX;AACA,qBAAO;AAAA,YACR;AACA,gBAAK,OAAO,UAAU,UAAW;AAGhC,mBAAM,QAAQ,OAAQ;AACrB,qBAAK,IAAK,MAAM,UAAU,MAAO,IAAK,CAAE;AAAA,cACzC;AACA,qBAAO;AAAA,YACR;AACA,gBAAK,aAAa,SAAS,OAAO,aAAa,YAAa;AAG3D,mBAAK;AACL,yBAAW;AAAA,YACZ;AACA,gBAAK,OAAO,OAAQ;AACnB,mBAAK;AAAA,YACN;AACA,mBAAO,KAAK,KAAM,WAAW;AAC5B,cAAAA,QAAO,MAAM,OAAQ,MAAM,OAAO,IAAI,QAAS;AAAA,YAChD,CAAE;AAAA,UACH;AAAA,QACD,CAAE;AAGF,YAKC,eAAe,yBAGf,WAAW,qCAEX,eAAe;AAGhB,iBAAS,mBAAoB,MAAM,SAAU;AAC5C,cAAK,SAAU,MAAM,OAAQ,KAC5B,SAAU,QAAQ,aAAa,KAAK,UAAU,QAAQ,YAAY,IAAK,GAAI;AAE3E,mBAAOA,QAAQ,IAAK,EAAE,SAAU,OAAQ,EAAG,CAAE,KAAK;AAAA,UACnD;AAEA,iBAAO;AAAA,QACR;AAGA,iBAAS,cAAe,MAAO;AAC9B,eAAK,QAAS,KAAK,aAAc,MAAO,MAAM,QAAS,MAAM,KAAK;AAClE,iBAAO;AAAA,QACR;AACA,iBAAS,cAAe,MAAO;AAC9B,eAAO,KAAK,QAAQ,IAAK,MAAO,GAAG,CAAE,MAAM,SAAU;AACpD,iBAAK,OAAO,KAAK,KAAK,MAAO,CAAE;AAAA,UAChC,OAAO;AACN,iBAAK,gBAAiB,MAAO;AAAA,UAC9B;AAEA,iBAAO;AAAA,QACR;AAEA,iBAAS,eAAgB,KAAK,MAAO;AACpC,cAAI,GAAG,GAAG,MAAM,UAAU,UAAU,UAAU;AAE9C,cAAK,KAAK,aAAa,GAAI;AAC1B;AAAA,UACD;AAGA,cAAK,SAAS,QAAS,GAAI,GAAI;AAC9B,uBAAW,SAAS,IAAK,GAAI;AAC7B,qBAAS,SAAS;AAElB,gBAAK,QAAS;AACb,uBAAS,OAAQ,MAAM,eAAgB;AAEvC,mBAAM,QAAQ,QAAS;AACtB,qBAAM,IAAI,GAAG,IAAI,OAAQ,IAAK,EAAE,QAAQ,IAAI,GAAG,KAAM;AACpD,kBAAAA,QAAO,MAAM,IAAK,MAAM,MAAM,OAAQ,IAAK,EAAG,CAAE,CAAE;AAAA,gBACnD;AAAA,cACD;AAAA,YACD;AAAA,UACD;AAGA,cAAK,SAAS,QAAS,GAAI,GAAI;AAC9B,uBAAW,SAAS,OAAQ,GAAI;AAChC,uBAAWA,QAAO,OAAQ,CAAC,GAAG,QAAS;AAEvC,qBAAS,IAAK,MAAM,QAAS;AAAA,UAC9B;AAAA,QACD;AAGA,iBAAS,SAAU,KAAK,MAAO;AAC9B,cAAI0C,YAAW,KAAK,SAAS,YAAY;AAGzC,cAAKA,cAAa,WAAW,eAAe,KAAM,IAAI,IAAK,GAAI;AAC9D,iBAAK,UAAU,IAAI;AAAA,UAGpB,WAAYA,cAAa,WAAWA,cAAa,YAAa;AAC7D,iBAAK,eAAe,IAAI;AAAA,UACzB;AAAA,QACD;AAEA,iBAAS,SAAU,YAAY,MAAM,UAAU,SAAU;AAGxD,iBAAO,KAAM,IAAK;AAElB,cAAI,UAAU,OAAO,SAAS,YAAY5C,OAAM,KAC/C,IAAI,GACJ,IAAI,WAAW,QACf,WAAW,IAAI,GACf,QAAQ,KAAM,CAAE,GAChB,kBAAkBH,YAAY,KAAM;AAGrC,cAAK,mBACD,IAAI,KAAK,OAAO,UAAU,YAC3B,CAAC,QAAQ,cAAc,SAAS,KAAM,KAAM,GAAM;AACpD,mBAAO,WAAW,KAAM,SAAUkC,QAAQ;AACzC,kBAAIF,QAAO,WAAW,GAAIE,MAAM;AAChC,kBAAK,iBAAkB;AACtB,qBAAM,CAAE,IAAI,MAAM,KAAM,MAAMA,QAAOF,MAAK,KAAK,CAAE;AAAA,cAClD;AACA,uBAAUA,OAAM,MAAM,UAAU,OAAQ;AAAA,YACzC,CAAE;AAAA,UACH;AAEA,cAAK,GAAI;AACR,uBAAW,cAAe,MAAM,WAAY,CAAE,EAAE,eAAe,OAAO,YAAY,OAAQ;AAC1F,oBAAQ,SAAS;AAEjB,gBAAK,SAAS,WAAW,WAAW,GAAI;AACvC,yBAAW;AAAA,YACZ;AAGA,gBAAK,SAAS,SAAU;AACvB,wBAAU3B,QAAO,IAAK,OAAQ,UAAU,QAAS,GAAG,aAAc;AAClE,2BAAa,QAAQ;AAKrB,qBAAQ,IAAI,GAAG,KAAM;AACpB,gBAAAF,QAAO;AAEP,oBAAK,MAAM,UAAW;AACrB,kBAAAA,QAAOE,QAAO,MAAOF,OAAM,MAAM,IAAK;AAGtC,sBAAK,YAAa;AAIjB,oBAAAE,QAAO,MAAO,SAAS,OAAQF,OAAM,QAAS,CAAE;AAAA,kBACjD;AAAA,gBACD;AAEA,yBAAS,KAAM,WAAY,CAAE,GAAGA,OAAM,CAAE;AAAA,cACzC;AAEA,kBAAK,YAAa;AACjB,sBAAM,QAAS,QAAQ,SAAS,CAAE,EAAE;AAGpC,gBAAAE,QAAO,IAAK,SAAS,aAAc;AAGnC,qBAAM,IAAI,GAAG,IAAI,YAAY,KAAM;AAClC,kBAAAF,QAAO,QAAS,CAAE;AAClB,sBAAK,YAAY,KAAMA,MAAK,QAAQ,EAAG,KACtC,CAAC,SAAS,OAAQA,OAAM,YAAa,KACrCE,QAAO,SAAU,KAAKF,KAAK,GAAI;AAE/B,wBAAKA,MAAK,QAASA,MAAK,QAAQ,IAAK,YAAY,MAAO,UAAW;AAGlE,0BAAKE,QAAO,YAAY,CAACF,MAAK,UAAW;AACxC,wBAAAE,QAAO,SAAUF,MAAK,KAAK;AAAA,0BAC1B,OAAOA,MAAK,SAASA,MAAK,aAAc,OAAQ;AAAA,wBACjD,GAAG,GAAI;AAAA,sBACR;AAAA,oBACD,OAAO;AAON,8BAASA,MAAK,YAAY,QAAS,cAAc,EAAG,GAAGA,OAAM,GAAI;AAAA,oBAClE;AAAA,kBACD;AAAA,gBACD;AAAA,cACD;AAAA,YACD;AAAA,UACD;AAEA,iBAAO;AAAA,QACR;AAEA,iBAAS,OAAQ,MAAM,UAAU,UAAW;AAC3C,cAAIA,OACH,QAAQ,WAAWE,QAAO,OAAQ,UAAU,IAAK,IAAI,MACrD,IAAI;AAEL,kBAAUF,QAAO,MAAO,CAAE,MAAO,MAAM,KAAM;AAC5C,gBAAK,CAAC,YAAYA,MAAK,aAAa,GAAI;AACvC,cAAAE,QAAO,UAAW,OAAQF,KAAK,CAAE;AAAA,YAClC;AAEA,gBAAKA,MAAK,YAAa;AACtB,kBAAK,YAAY,WAAYA,KAAK,GAAI;AACrC,8BAAe,OAAQA,OAAM,QAAS,CAAE;AAAA,cACzC;AACA,cAAAA,MAAK,WAAW,YAAaA,KAAK;AAAA,YACnC;AAAA,UACD;AAEA,iBAAO;AAAA,QACR;AAEA,QAAAE,QAAO,OAAQ;AAAA,UACd,eAAe,SAAU,MAAO;AAC/B,mBAAO;AAAA,UACR;AAAA,UAEA,OAAO,SAAU,MAAM,eAAe,mBAAoB;AACzD,gBAAI,GAAG,GAAG,aAAa,cACtB,QAAQ,KAAK,UAAW,IAAK,GAC7B,SAAS,WAAY,IAAK;AAG3B,gBAAK,CAAC,QAAQ,mBAAoB,KAAK,aAAa,KAAK,KAAK,aAAa,OACzE,CAACA,QAAO,SAAU,IAAK,GAAI;AAI5B,6BAAe,OAAQ,KAAM;AAC7B,4BAAc,OAAQ,IAAK;AAE3B,mBAAM,IAAI,GAAG,IAAI,YAAY,QAAQ,IAAI,GAAG,KAAM;AACjD,yBAAU,YAAa,CAAE,GAAG,aAAc,CAAE,CAAE;AAAA,cAC/C;AAAA,YACD;AAGA,gBAAK,eAAgB;AACpB,kBAAK,mBAAoB;AACxB,8BAAc,eAAe,OAAQ,IAAK;AAC1C,+BAAe,gBAAgB,OAAQ,KAAM;AAE7C,qBAAM,IAAI,GAAG,IAAI,YAAY,QAAQ,IAAI,GAAG,KAAM;AACjD,iCAAgB,YAAa,CAAE,GAAG,aAAc,CAAE,CAAE;AAAA,gBACrD;AAAA,cACD,OAAO;AACN,+BAAgB,MAAM,KAAM;AAAA,cAC7B;AAAA,YACD;AAGA,2BAAe,OAAQ,OAAO,QAAS;AACvC,gBAAK,aAAa,SAAS,GAAI;AAC9B,4BAAe,cAAc,CAAC,UAAU,OAAQ,MAAM,QAAS,CAAE;AAAA,YAClE;AAGA,mBAAO;AAAA,UACR;AAAA,UAEA,WAAW,SAAU,OAAQ;AAC5B,gBAAImC,OAAM,MAAM,MACf,UAAUnC,QAAO,MAAM,SACvB,IAAI;AAEL,oBAAU,OAAO,MAAO,CAAE,OAAQ,QAAW,KAAM;AAClD,kBAAK,WAAY,IAAK,GAAI;AACzB,oBAAOmC,QAAO,KAAM,SAAS,OAAQ,GAAM;AAC1C,sBAAKA,MAAK,QAAS;AAClB,yBAAM,QAAQA,MAAK,QAAS;AAC3B,0BAAK,QAAS,IAAK,GAAI;AACtB,wBAAAnC,QAAO,MAAM,OAAQ,MAAM,IAAK;AAAA,sBAGjC,OAAO;AACN,wBAAAA,QAAO,YAAa,MAAM,MAAMmC,MAAK,MAAO;AAAA,sBAC7C;AAAA,oBACD;AAAA,kBACD;AAIA,uBAAM,SAAS,OAAQ,IAAI;AAAA,gBAC5B;AACA,oBAAK,KAAM,SAAS,OAAQ,GAAI;AAI/B,uBAAM,SAAS,OAAQ,IAAI;AAAA,gBAC5B;AAAA,cACD;AAAA,YACD;AAAA,UACD;AAAA,QACD,CAAE;AAEF,QAAAnC,QAAO,GAAG,OAAQ;AAAA,UACjB,QAAQ,SAAU,UAAW;AAC5B,mBAAO,OAAQ,MAAM,UAAU,IAAK;AAAA,UACrC;AAAA,UAEA,QAAQ,SAAU,UAAW;AAC5B,mBAAO,OAAQ,MAAM,QAAS;AAAA,UAC/B;AAAA,UAEA,MAAM,SAAU,OAAQ;AACvB,mBAAO,OAAQ,MAAM,SAAU8B,QAAQ;AACtC,qBAAOA,WAAU,SAChB9B,QAAO,KAAM,IAAK,IAClB,KAAK,MAAM,EAAE,KAAM,WAAW;AAC7B,oBAAK,KAAK,aAAa,KAAK,KAAK,aAAa,MAAM,KAAK,aAAa,GAAI;AACzE,uBAAK,cAAc8B;AAAA,gBACpB;AAAA,cACD,CAAE;AAAA,YACJ,GAAG,MAAM,OAAO,UAAU,MAAO;AAAA,UAClC;AAAA,UAEA,QAAQ,WAAW;AAClB,mBAAO,SAAU,MAAM,WAAW,SAAU,MAAO;AAClD,kBAAK,KAAK,aAAa,KAAK,KAAK,aAAa,MAAM,KAAK,aAAa,GAAI;AACzE,oBAAI,SAAS,mBAAoB,MAAM,IAAK;AAC5C,uBAAO,YAAa,IAAK;AAAA,cAC1B;AAAA,YACD,CAAE;AAAA,UACH;AAAA,UAEA,SAAS,WAAW;AACnB,mBAAO,SAAU,MAAM,WAAW,SAAU,MAAO;AAClD,kBAAK,KAAK,aAAa,KAAK,KAAK,aAAa,MAAM,KAAK,aAAa,GAAI;AACzE,oBAAI,SAAS,mBAAoB,MAAM,IAAK;AAC5C,uBAAO,aAAc,MAAM,OAAO,UAAW;AAAA,cAC9C;AAAA,YACD,CAAE;AAAA,UACH;AAAA,UAEA,QAAQ,WAAW;AAClB,mBAAO,SAAU,MAAM,WAAW,SAAU,MAAO;AAClD,kBAAK,KAAK,YAAa;AACtB,qBAAK,WAAW,aAAc,MAAM,IAAK;AAAA,cAC1C;AAAA,YACD,CAAE;AAAA,UACH;AAAA,UAEA,OAAO,WAAW;AACjB,mBAAO,SAAU,MAAM,WAAW,SAAU,MAAO;AAClD,kBAAK,KAAK,YAAa;AACtB,qBAAK,WAAW,aAAc,MAAM,KAAK,WAAY;AAAA,cACtD;AAAA,YACD,CAAE;AAAA,UACH;AAAA,UAEA,OAAO,WAAW;AACjB,gBAAI,MACH,IAAI;AAEL,oBAAU,OAAO,KAAM,CAAE,MAAO,MAAM,KAAM;AAC3C,kBAAK,KAAK,aAAa,GAAI;AAG1B,gBAAA9B,QAAO,UAAW,OAAQ,MAAM,KAAM,CAAE;AAGxC,qBAAK,cAAc;AAAA,cACpB;AAAA,YACD;AAEA,mBAAO;AAAA,UACR;AAAA,UAEA,OAAO,SAAU,eAAe,mBAAoB;AACnD,4BAAgB,iBAAiB,OAAO,QAAQ;AAChD,gCAAoB,qBAAqB,OAAO,gBAAgB;AAEhE,mBAAO,KAAK,IAAK,WAAW;AAC3B,qBAAOA,QAAO,MAAO,MAAM,eAAe,iBAAkB;AAAA,YAC7D,CAAE;AAAA,UACH;AAAA,UAEA,MAAM,SAAU,OAAQ;AACvB,mBAAO,OAAQ,MAAM,SAAU8B,QAAQ;AACtC,kBAAI,OAAO,KAAM,CAAE,KAAK,CAAC,GACxB,IAAI,GACJ,IAAI,KAAK;AAEV,kBAAKA,WAAU,UAAa,KAAK,aAAa,GAAI;AACjD,uBAAO,KAAK;AAAA,cACb;AAGA,kBAAK,OAAOA,WAAU,YAAY,CAAC,aAAa,KAAMA,MAAM,KAC3D,CAAC,SAAW,SAAS,KAAMA,MAAM,KAAK,CAAE,IAAI,EAAG,GAAK,CAAE,EAAE,YAAY,CAAE,GAAI;AAE1E,gBAAAA,SAAQ9B,QAAO,cAAe8B,MAAM;AAEpC,oBAAI;AACH,yBAAQ,IAAI,GAAG,KAAM;AACpB,2BAAO,KAAM,CAAE,KAAK,CAAC;AAGrB,wBAAK,KAAK,aAAa,GAAI;AAC1B,sBAAA9B,QAAO,UAAW,OAAQ,MAAM,KAAM,CAAE;AACxC,2BAAK,YAAY8B;AAAA,oBAClB;AAAA,kBACD;AAEA,yBAAO;AAAA,gBAGR,SAAUhB,IAAI;AAAA,gBAAC;AAAA,cAChB;AAEA,kBAAK,MAAO;AACX,qBAAK,MAAM,EAAE,OAAQgB,MAAM;AAAA,cAC5B;AAAA,YACD,GAAG,MAAM,OAAO,UAAU,MAAO;AAAA,UAClC;AAAA,UAEA,aAAa,WAAW;AACvB,gBAAI,UAAU,CAAC;AAGf,mBAAO,SAAU,MAAM,WAAW,SAAU,MAAO;AAClD,kBAAI,SAAS,KAAK;AAElB,kBAAK9B,QAAO,QAAS,MAAM,OAAQ,IAAI,GAAI;AAC1C,gBAAAA,QAAO,UAAW,OAAQ,IAAK,CAAE;AACjC,oBAAK,QAAS;AACb,yBAAO,aAAc,MAAM,IAAK;AAAA,gBACjC;AAAA,cACD;AAAA,YAGD,GAAG,OAAQ;AAAA,UACZ;AAAA,QACD,CAAE;AAEF,QAAAA,QAAO,KAAM;AAAA,UACZ,UAAU;AAAA,UACV,WAAW;AAAA,UACX,cAAc;AAAA,UACd,aAAa;AAAA,UACb,YAAY;AAAA,QACb,GAAG,SAAUE,OAAM,UAAW;AAC7B,UAAAF,QAAO,GAAIE,KAAK,IAAI,SAAU,UAAW;AACxC,gBAAI,OACH,MAAM,CAAC,GACP,SAASF,QAAQ,QAAS,GAC1B,OAAO,OAAO,SAAS,GACvB,IAAI;AAEL,mBAAQ,KAAK,MAAM,KAAM;AACxB,sBAAQ,MAAM,OAAO,OAAO,KAAK,MAAO,IAAK;AAC7C,cAAAA,QAAQ,OAAQ,CAAE,CAAE,EAAG,QAAS,EAAG,KAAM;AAIzC,cAAAP,MAAK,MAAO,KAAK,MAAM,IAAI,CAAE;AAAA,YAC9B;AAEA,mBAAO,KAAK,UAAW,GAAI;AAAA,UAC5B;AAAA,QACD,CAAE;AACF,YAAI,YAAY,IAAI,OAAQ,OAAO,OAAO,mBAAmB,GAAI;AAEjE,YAAI,cAAc;AAGlB,YAAIoD,aAAY,SAAU,MAAO;AAK/B,cAAI,OAAO,KAAK,cAAc;AAE9B,cAAK,CAAC,QAAQ,CAAC,KAAK,QAAS;AAC5B,mBAAOtD;AAAA,UACR;AAEA,iBAAO,KAAK,iBAAkB,IAAK;AAAA,QACpC;AAED,YAAIuD,QAAO,SAAU,MAAM7C,UAAS,UAAW;AAC9C,cAAI,KAAKC,OACR,MAAM,CAAC;AAGR,eAAMA,SAAQD,UAAU;AACvB,gBAAKC,KAAK,IAAI,KAAK,MAAOA,KAAK;AAC/B,iBAAK,MAAOA,KAAK,IAAID,SAASC,KAAK;AAAA,UACpC;AAEA,gBAAM,SAAS,KAAM,IAAK;AAG1B,eAAMA,SAAQD,UAAU;AACvB,iBAAK,MAAOC,KAAK,IAAI,IAAKA,KAAK;AAAA,UAChC;AAEA,iBAAO;AAAA,QACR;AAGA,YAAI,YAAY,IAAI,OAAQ,UAAU,KAAM,GAAI,GAAG,GAAI;AAIvD,SAAE,WAAW;AAIZ,mBAAS,oBAAoB;AAG5B,gBAAK,CAAC,KAAM;AACX;AAAA,YACD;AAEA,sBAAU,MAAM,UAAU;AAE1B,gBAAI,MAAM,UACT;AAGD,4BAAgB,YAAa,SAAU,EAAE,YAAa,GAAI;AAE1D,gBAAI,WAAWX,QAAO,iBAAkB,GAAI;AAC5C,+BAAmB,SAAS,QAAQ;AAGpC,oCAAwB,mBAAoB,SAAS,UAAW,MAAM;AAItE,gBAAI,MAAM,QAAQ;AAClB,gCAAoB,mBAAoB,SAAS,KAAM,MAAM;AAI7D,mCAAuB,mBAAoB,SAAS,KAAM,MAAM;AAMhE,gBAAI,MAAM,WAAW;AACrB,+BAAmB,mBAAoB,IAAI,cAAc,CAAE,MAAM;AAEjE,4BAAgB,YAAa,SAAU;AAIvC,kBAAM;AAAA,UACP;AAEA,mBAAS,mBAAoB,SAAU;AACtC,mBAAO,KAAK,MAAO,WAAY,OAAQ,CAAE;AAAA,UAC1C;AAEA,cAAI,kBAAkB,sBAAsB,kBAAkB,mBAC7D,yBAAyB,uBACzB,YAAYM,UAAS,cAAe,KAAM,GAC1C,MAAMA,UAAS,cAAe,KAAM;AAGrC,cAAK,CAAC,IAAI,OAAQ;AACjB;AAAA,UACD;AAIA,cAAI,MAAM,iBAAiB;AAC3B,cAAI,UAAW,IAAK,EAAE,MAAM,iBAAiB;AAC7C,kBAAQ,kBAAkB,IAAI,MAAM,mBAAmB;AAEvD,UAAAG,QAAO,OAAQ,SAAS;AAAA,YACvB,mBAAmB,WAAW;AAC7B,gCAAkB;AAClB,qBAAO;AAAA,YACR;AAAA,YACA,gBAAgB,WAAW;AAC1B,gCAAkB;AAClB,qBAAO;AAAA,YACR;AAAA,YACA,eAAe,WAAW;AACzB,gCAAkB;AAClB,qBAAO;AAAA,YACR;AAAA,YACA,oBAAoB,WAAW;AAC9B,gCAAkB;AAClB,qBAAO;AAAA,YACR;AAAA,YACA,eAAe,WAAW;AACzB,gCAAkB;AAClB,qBAAO;AAAA,YACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAWA,sBAAsB,WAAW;AAChC,kBAAI,OAAO,IAAI,SAAS;AACxB,kBAAK,2BAA2B,MAAO;AACtC,wBAAQH,UAAS,cAAe,OAAQ;AACxC,qBAAKA,UAAS,cAAe,IAAK;AAClC,0BAAUA,UAAS,cAAe,KAAM;AAExC,sBAAM,MAAM,UAAU;AACtB,mBAAG,MAAM,UAAU;AAKnB,mBAAG,MAAM,SAAS;AAClB,wBAAQ,MAAM,SAAS;AAQvB,wBAAQ,MAAM,UAAU;AAExB,gCACE,YAAa,KAAM,EACnB,YAAa,EAAG,EAChB,YAAa,OAAQ;AAEvB,0BAAUN,QAAO,iBAAkB,EAAG;AACtC,0CAA4B,SAAU,QAAQ,QAAQ,EAAG,IACxD,SAAU,QAAQ,gBAAgB,EAAG,IACrC,SAAU,QAAQ,mBAAmB,EAAG,MAAQ,GAAG;AAEpD,gCAAgB,YAAa,KAAM;AAAA,cACpC;AACA,qBAAO;AAAA,YACR;AAAA,UACD,CAAE;AAAA,QACH,GAAI;AAGJ,iBAAS,OAAQ,MAAMW,OAAM,UAAW;AACvC,cAAI,OAAO,UAAU,UAAU,KAC9B,eAAe,YAAY,KAAMA,KAAK,GAMtC6C,SAAQ,KAAK;AAEd,qBAAW,YAAYF,WAAW,IAAK;AAKvC,cAAK,UAAW;AAWf,kBAAM,SAAS,iBAAkB3C,KAAK,KAAK,SAAUA,KAAK;AAE1D,gBAAK,gBAAgB,KAAM;AAkB1B,oBAAM,IAAI,QAAS,UAAU,IAAK,KAAK;AAAA,YACxC;AAEA,gBAAK,QAAQ,MAAM,CAAC,WAAY,IAAK,GAAI;AACxC,oBAAMF,QAAO,MAAO,MAAME,KAAK;AAAA,YAChC;AAOA,gBAAK,CAAC,QAAQ,eAAe,KAAK,UAAU,KAAM,GAAI,KAAK,UAAU,KAAMA,KAAK,GAAI;AAGnF,sBAAQ6C,OAAM;AACd,yBAAWA,OAAM;AACjB,yBAAWA,OAAM;AAGjB,cAAAA,OAAM,WAAWA,OAAM,WAAWA,OAAM,QAAQ;AAChD,oBAAM,SAAS;AAGf,cAAAA,OAAM,QAAQ;AACd,cAAAA,OAAM,WAAW;AACjB,cAAAA,OAAM,WAAW;AAAA,YAClB;AAAA,UACD;AAEA,iBAAO,QAAQ;AAAA;AAAA;AAAA,YAId,MAAM;AAAA,cACN;AAAA,QACF;AAGA,iBAAS,aAAc,aAAa,QAAS;AAG5C,iBAAO;AAAA,YACN,KAAK,WAAW;AACf,kBAAK,YAAY,GAAI;AAIpB,uBAAO,KAAK;AACZ;AAAA,cACD;AAGA,sBAAS,KAAK,MAAM,QAAS,MAAO,MAAM,SAAU;AAAA,YACrD;AAAA,UACD;AAAA,QACD;AAGA,YAAI,cAAc,CAAE,UAAU,OAAO,IAAK,GACzC,aAAalD,UAAS,cAAe,KAAM,EAAE,OAC7C,cAAc,CAAC;AAGhB,iBAAS,eAAgBK,OAAO;AAG/B,cAAI,UAAUA,MAAM,CAAE,EAAE,YAAY,IAAIA,MAAK,MAAO,CAAE,GACrD,IAAI,YAAY;AAEjB,iBAAQ,KAAM;AACb,YAAAA,QAAO,YAAa,CAAE,IAAI;AAC1B,gBAAKA,SAAQ,YAAa;AACzB,qBAAOA;AAAA,YACR;AAAA,UACD;AAAA,QACD;AAGA,iBAAS,cAAeA,OAAO;AAC9B,cAAI,QAAQF,QAAO,SAAUE,KAAK,KAAK,YAAaA,KAAK;AAEzD,cAAK,OAAQ;AACZ,mBAAO;AAAA,UACR;AACA,cAAKA,SAAQ,YAAa;AACzB,mBAAOA;AAAA,UACR;AACA,iBAAO,YAAaA,KAAK,IAAI,eAAgBA,KAAK,KAAKA;AAAA,QACxD;AAGA,YAKC,eAAe,6BACf,UAAU,EAAE,UAAU,YAAY,YAAY,UAAU,SAAS,QAAQ,GACzE,qBAAqB;AAAA,UACpB,eAAe;AAAA,UACf,YAAY;AAAA,QACb;AAED,iBAAS,kBAAmB,OAAO,OAAO,UAAW;AAIpD,cAAI,UAAU,QAAQ,KAAM,KAAM;AAClC,iBAAO;AAAA;AAAA,YAGN,KAAK,IAAK,GAAG,QAAS,CAAE,KAAM,YAAY,EAAI,KAAM,QAAS,CAAE,KAAK;AAAA,cACpE;AAAA,QACF;AAEA,iBAAS,mBAAoB,MAAM,WAAW,KAAK,aAAa,QAAQ,aAAc;AACrF,cAAI,IAAI,cAAc,UAAU,IAAI,GACnC,QAAQ,GACR,QAAQ,GACR,cAAc;AAGf,cAAK,SAAU,cAAc,WAAW,YAAc;AACrD,mBAAO;AAAA,UACR;AAEA,iBAAQ,IAAI,GAAG,KAAK,GAAI;AAKvB,gBAAK,QAAQ,UAAW;AACvB,6BAAeF,QAAO,IAAK,MAAM,MAAM,UAAW,CAAE,GAAG,MAAM,MAAO;AAAA,YACrE;AAGA,gBAAK,CAAC,aAAc;AAGnB,uBAASA,QAAO,IAAK,MAAM,YAAY,UAAW,CAAE,GAAG,MAAM,MAAO;AAGpE,kBAAK,QAAQ,WAAY;AACxB,yBAASA,QAAO,IAAK,MAAM,WAAW,UAAW,CAAE,IAAI,SAAS,MAAM,MAAO;AAAA,cAG9E,OAAO;AACN,yBAASA,QAAO,IAAK,MAAM,WAAW,UAAW,CAAE,IAAI,SAAS,MAAM,MAAO;AAAA,cAC9E;AAAA,YAID,OAAO;AAGN,kBAAK,QAAQ,WAAY;AACxB,yBAASA,QAAO,IAAK,MAAM,YAAY,UAAW,CAAE,GAAG,MAAM,MAAO;AAAA,cACrE;AAGA,kBAAK,QAAQ,UAAW;AACvB,yBAASA,QAAO,IAAK,MAAM,WAAW,UAAW,CAAE,IAAI,SAAS,MAAM,MAAO;AAAA,cAC9E;AAAA,YACD;AAAA,UACD;AAGA,cAAK,CAAC,eAAe,eAAe,GAAI;AAIvC,qBAAS,KAAK,IAAK,GAAG,KAAK;AAAA,cAC1B,KAAM,WAAW,UAAW,CAAE,EAAE,YAAY,IAAI,UAAU,MAAO,CAAE,CAAE,IACrE,cACA,QACA,QACA;AAAA;AAAA;AAAA,YAID,CAAE,KAAK;AAAA,UACR;AAEA,iBAAO,QAAQ;AAAA,QAChB;AAEA,iBAAS,iBAAkB,MAAM,WAAW,OAAQ;AAGnD,cAAI,SAAS6C,WAAW,IAAK,GAI5B,kBAAkB,CAAC,QAAQ,kBAAkB,KAAK,OAClD,cAAc,mBACb7C,QAAO,IAAK,MAAM,aAAa,OAAO,MAAO,MAAM,cACpD,mBAAmB,aAEnB,MAAM,OAAQ,MAAM,WAAW,MAAO,GACtC,aAAa,WAAW,UAAW,CAAE,EAAE,YAAY,IAAI,UAAU,MAAO,CAAE;AAI3E,cAAK,UAAU,KAAM,GAAI,GAAI;AAC5B,gBAAK,CAAC,OAAQ;AACb,qBAAO;AAAA,YACR;AACA,kBAAM;AAAA,UACP;AAMA,eAAO,CAAC,QAAQ,kBAAkB,KAAK;AAAA;AAAA;AAAA;AAAA,UAMtC,CAAC,QAAQ,qBAAqB,KAAK,SAAU,MAAM,IAAK;AAAA;AAAA,UAIxD,QAAQ;AAAA;AAAA,UAIR,CAAC,WAAY,GAAI,KAAKA,QAAO,IAAK,MAAM,WAAW,OAAO,MAAO,MAAM;AAAA,UAGvE,KAAK,eAAe,EAAE,QAAS;AAE/B,0BAAcA,QAAO,IAAK,MAAM,aAAa,OAAO,MAAO,MAAM;AAKjE,+BAAmB,cAAc;AACjC,gBAAK,kBAAmB;AACvB,oBAAM,KAAM,UAAW;AAAA,YACxB;AAAA,UACD;AAGA,gBAAM,WAAY,GAAI,KAAK;AAG3B,iBAAS,MACR;AAAA,YACC;AAAA,YACA;AAAA,YACA,UAAW,cAAc,WAAW;AAAA,YACpC;AAAA,YACA;AAAA;AAAA,YAGA;AAAA,UACD,IACG;AAAA,QACL;AAEA,QAAAA,QAAO,OAAQ;AAAA;AAAA;AAAA,UAId,UAAU;AAAA,YACT,SAAS;AAAA,cACR,KAAK,SAAU,MAAM,UAAW;AAC/B,oBAAK,UAAW;AAGf,sBAAI,MAAM,OAAQ,MAAM,SAAU;AAClC,yBAAO,QAAQ,KAAK,MAAM;AAAA,gBAC3B;AAAA,cACD;AAAA,YACD;AAAA,UACD;AAAA;AAAA,UAGA,WAAW;AAAA,YACV,yBAAyB;AAAA,YACzB,aAAa;AAAA,YACb,kBAAkB;AAAA,YAClB,aAAa;AAAA,YACb,UAAU;AAAA,YACV,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,UAAU;AAAA,YACV,YAAY;AAAA,YACZ,eAAe;AAAA,YACf,iBAAiB;AAAA,YACjB,SAAS;AAAA,YACT,YAAY;AAAA,YACZ,cAAc;AAAA,YACd,YAAY;AAAA,YACZ,SAAS;AAAA,YACT,OAAO;AAAA,YACP,SAAS;AAAA,YACT,OAAO;AAAA,YACP,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,MAAM;AAAA;AAAA,YAGN,aAAa;AAAA,YACb,cAAc;AAAA,YACd,aAAa;AAAA,YACb,kBAAkB;AAAA,YAClB,eAAe;AAAA,UAChB;AAAA;AAAA;AAAA,UAIA,UAAU,CAAC;AAAA;AAAA,UAGX,OAAO,SAAU,MAAME,OAAM,OAAO,OAAQ;AAG3C,gBAAK,CAAC,QAAQ,KAAK,aAAa,KAAK,KAAK,aAAa,KAAK,CAAC,KAAK,OAAQ;AACzE;AAAA,YACD;AAGA,gBAAI,KAAK,MAAMoC,QACd,WAAW,UAAWpC,KAAK,GAC3B,eAAe,YAAY,KAAMA,KAAK,GACtC6C,SAAQ,KAAK;AAKd,gBAAK,CAAC,cAAe;AACpB,cAAA7C,QAAO,cAAe,QAAS;AAAA,YAChC;AAGA,YAAAoC,SAAQtC,QAAO,SAAUE,KAAK,KAAKF,QAAO,SAAU,QAAS;AAG7D,gBAAK,UAAU,QAAY;AAC1B,qBAAO,OAAO;AAGd,kBAAK,SAAS,aAAc,MAAM,QAAQ,KAAM,KAAM,MAAO,IAAK,CAAE,GAAI;AACvE,wBAAQ,UAAW,MAAME,OAAM,GAAI;AAGnC,uBAAO;AAAA,cACR;AAGA,kBAAK,SAAS,QAAQ,UAAU,OAAQ;AACvC;AAAA,cACD;AAKA,kBAAK,SAAS,YAAY,CAAC,cAAe;AACzC,yBAAS,OAAO,IAAK,CAAE,MAAOF,QAAO,UAAW,QAAS,IAAI,KAAK;AAAA,cACnE;AAGA,kBAAK,CAAC,QAAQ,mBAAmB,UAAU,MAAME,MAAK,QAAS,YAAa,MAAM,GAAI;AACrF,gBAAA6C,OAAO7C,KAAK,IAAI;AAAA,cACjB;AAGA,kBAAK,CAACoC,UAAS,EAAG,SAASA,YACxB,QAAQA,OAAM,IAAK,MAAM,OAAO,KAAM,OAAQ,QAAY;AAE5D,oBAAK,cAAe;AACnB,kBAAAS,OAAM,YAAa7C,OAAM,KAAM;AAAA,gBAChC,OAAO;AACN,kBAAA6C,OAAO7C,KAAK,IAAI;AAAA,gBACjB;AAAA,cACD;AAAA,YAED,OAAO;AAGN,kBAAKoC,UAAS,SAASA,WACpB,MAAMA,OAAM,IAAK,MAAM,OAAO,KAAM,OAAQ,QAAY;AAE1D,uBAAO;AAAA,cACR;AAGA,qBAAOS,OAAO7C,KAAK;AAAA,YACpB;AAAA,UACD;AAAA,UAEA,KAAK,SAAU,MAAMA,OAAM,OAAO,QAAS;AAC1C,gBAAI,KAAK,KAAKoC,QACb,WAAW,UAAWpC,KAAK,GAC3B,eAAe,YAAY,KAAMA,KAAK;AAKvC,gBAAK,CAAC,cAAe;AACpB,cAAAA,QAAO,cAAe,QAAS;AAAA,YAChC;AAGA,YAAAoC,SAAQtC,QAAO,SAAUE,KAAK,KAAKF,QAAO,SAAU,QAAS;AAG7D,gBAAKsC,UAAS,SAASA,QAAQ;AAC9B,oBAAMA,OAAM,IAAK,MAAM,MAAM,KAAM;AAAA,YACpC;AAGA,gBAAK,QAAQ,QAAY;AACxB,oBAAM,OAAQ,MAAMpC,OAAM,MAAO;AAAA,YAClC;AAGA,gBAAK,QAAQ,YAAYA,SAAQ,oBAAqB;AACrD,oBAAM,mBAAoBA,KAAK;AAAA,YAChC;AAGA,gBAAK,UAAU,MAAM,OAAQ;AAC5B,oBAAM,WAAY,GAAI;AACtB,qBAAO,UAAU,QAAQ,SAAU,GAAI,IAAI,OAAO,IAAI;AAAA,YACvD;AAEA,mBAAO;AAAA,UACR;AAAA,QACD,CAAE;AAEF,QAAAF,QAAO,KAAM,CAAE,UAAU,OAAQ,GAAG,SAAU,IAAI,WAAY;AAC7D,UAAAA,QAAO,SAAU,SAAU,IAAI;AAAA,YAC9B,KAAK,SAAU,MAAM,UAAU,OAAQ;AACtC,kBAAK,UAAW;AAIf,uBAAO,aAAa,KAAMA,QAAO,IAAK,MAAM,SAAU,CAAE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAQrD,CAAC,KAAK,eAAe,EAAE,UAAU,CAAC,KAAK,sBAAsB,EAAE,SACjE8C,MAAM,MAAM,SAAS,WAAW;AAC/B,yBAAO,iBAAkB,MAAM,WAAW,KAAM;AAAA,gBACjD,CAAE,IACF,iBAAkB,MAAM,WAAW,KAAM;AAAA,cAC3C;AAAA,YACD;AAAA,YAEA,KAAK,SAAU,MAAM,OAAO,OAAQ;AACnC,kBAAI,SACH,SAASD,WAAW,IAAK,GAIzB,qBAAqB,CAAC,QAAQ,cAAc,KAC3C,OAAO,aAAa,YAGrB,kBAAkB,sBAAsB,OACxC,cAAc,mBACb7C,QAAO,IAAK,MAAM,aAAa,OAAO,MAAO,MAAM,cACpD,WAAW,QACV;AAAA,gBACC;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,cACD,IACA;AAIF,kBAAK,eAAe,oBAAqB;AACxC,4BAAY,KAAK;AAAA,kBAChB,KAAM,WAAW,UAAW,CAAE,EAAE,YAAY,IAAI,UAAU,MAAO,CAAE,CAAE,IACrE,WAAY,OAAQ,SAAU,CAAE,IAChC,mBAAoB,MAAM,WAAW,UAAU,OAAO,MAAO,IAC7D;AAAA,gBACD;AAAA,cACD;AAGA,kBAAK,aAAc,UAAU,QAAQ,KAAM,KAAM,OAC9C,QAAS,CAAE,KAAK,UAAW,MAAO;AAEpC,qBAAK,MAAO,SAAU,IAAI;AAC1B,wBAAQA,QAAO,IAAK,MAAM,SAAU;AAAA,cACrC;AAEA,qBAAO,kBAAmB,MAAM,OAAO,QAAS;AAAA,YACjD;AAAA,UACD;AAAA,QACD,CAAE;AAEF,QAAAA,QAAO,SAAS,aAAa;AAAA,UAAc,QAAQ;AAAA,UAClD,SAAU,MAAM,UAAW;AAC1B,gBAAK,UAAW;AACf,sBAAS,WAAY,OAAQ,MAAM,YAAa,CAAE,KACjD,KAAK,sBAAsB,EAAE,OAC5B8C,MAAM,MAAM,EAAE,YAAY,EAAE,GAAG,WAAW;AACzC,uBAAO,KAAK,sBAAsB,EAAE;AAAA,cACrC,CAAE,KACA;AAAA,YACL;AAAA,UACD;AAAA,QACD;AAGA,QAAA9C,QAAO,KAAM;AAAA,UACZ,QAAQ;AAAA,UACR,SAAS;AAAA,UACT,QAAQ;AAAA,QACT,GAAG,SAAUgD,SAAQ,QAAS;AAC7B,UAAAhD,QAAO,SAAUgD,UAAS,MAAO,IAAI;AAAA,YACpC,QAAQ,SAAU,OAAQ;AACzB,kBAAI,IAAI,GACP,WAAW,CAAC,GAGZ,QAAQ,OAAO,UAAU,WAAW,MAAM,MAAO,GAAI,IAAI,CAAE,KAAM;AAElE,qBAAQ,IAAI,GAAG,KAAM;AACpB,yBAAUA,UAAS,UAAW,CAAE,IAAI,MAAO,IAC1C,MAAO,CAAE,KAAK,MAAO,IAAI,CAAE,KAAK,MAAO,CAAE;AAAA,cAC3C;AAEA,qBAAO;AAAA,YACR;AAAA,UACD;AAEA,cAAKA,YAAW,UAAW;AAC1B,YAAAhD,QAAO,SAAUgD,UAAS,MAAO,EAAE,MAAM;AAAA,UAC1C;AAAA,QACD,CAAE;AAEF,QAAAhD,QAAO,GAAG,OAAQ;AAAA,UACjB,KAAK,SAAUE,OAAM,OAAQ;AAC5B,mBAAO,OAAQ,MAAM,SAAU,MAAMA,OAAM4B,QAAQ;AAClD,kBAAI,QAAQ,KACXR,OAAM,CAAC,GACP,IAAI;AAEL,kBAAK,MAAM,QAASpB,KAAK,GAAI;AAC5B,yBAAS2C,WAAW,IAAK;AACzB,sBAAM3C,MAAK;AAEX,uBAAQ,IAAI,KAAK,KAAM;AACtB,kBAAAoB,KAAKpB,MAAM,CAAE,CAAE,IAAIF,QAAO,IAAK,MAAME,MAAM,CAAE,GAAG,OAAO,MAAO;AAAA,gBAC/D;AAEA,uBAAOoB;AAAA,cACR;AAEA,qBAAOQ,WAAU,SAChB9B,QAAO,MAAO,MAAME,OAAM4B,MAAM,IAChC9B,QAAO,IAAK,MAAME,KAAK;AAAA,YACzB,GAAGA,OAAM,OAAO,UAAU,SAAS,CAAE;AAAA,UACtC;AAAA,QACD,CAAE;AAGF,iBAAS,MAAO,MAAMD,UAAS,MAAM,KAAK,QAAS;AAClD,iBAAO,IAAI,MAAM,UAAU,KAAM,MAAMA,UAAS,MAAM,KAAK,MAAO;AAAA,QACnE;AACA,QAAAD,QAAO,QAAQ;AAEf,cAAM,YAAY;AAAA,UACjB,aAAa;AAAA,UACb,MAAM,SAAU,MAAMC,UAAS,MAAM,KAAK,QAAQwC,OAAO;AACxD,iBAAK,OAAO;AACZ,iBAAK,OAAO;AACZ,iBAAK,SAAS,UAAUzC,QAAO,OAAO;AACtC,iBAAK,UAAUC;AACf,iBAAK,QAAQ,KAAK,MAAM,KAAK,IAAI;AACjC,iBAAK,MAAM;AACX,iBAAK,OAAOwC,UAAUzC,QAAO,UAAW,IAAK,IAAI,KAAK;AAAA,UACvD;AAAA,UACA,KAAK,WAAW;AACf,gBAAIsC,SAAQ,MAAM,UAAW,KAAK,IAAK;AAEvC,mBAAOA,UAASA,OAAM,MACrBA,OAAM,IAAK,IAAK,IAChB,MAAM,UAAU,SAAS,IAAK,IAAK;AAAA,UACrC;AAAA,UACA,KAAK,SAAU,SAAU;AACxB,gBAAI,OACHA,SAAQ,MAAM,UAAW,KAAK,IAAK;AAEpC,gBAAK,KAAK,QAAQ,UAAW;AAC5B,mBAAK,MAAM,QAAQtC,QAAO,OAAQ,KAAK,MAAO;AAAA,gBAC7C;AAAA,gBAAS,KAAK,QAAQ,WAAW;AAAA,gBAAS;AAAA,gBAAG;AAAA,gBAAG,KAAK,QAAQ;AAAA,cAC9D;AAAA,YACD,OAAO;AACN,mBAAK,MAAM,QAAQ;AAAA,YACpB;AACA,iBAAK,OAAQ,KAAK,MAAM,KAAK,SAAU,QAAQ,KAAK;AAEpD,gBAAK,KAAK,QAAQ,MAAO;AACxB,mBAAK,QAAQ,KAAK,KAAM,KAAK,MAAM,KAAK,KAAK,IAAK;AAAA,YACnD;AAEA,gBAAKsC,UAASA,OAAM,KAAM;AACzB,cAAAA,OAAM,IAAK,IAAK;AAAA,YACjB,OAAO;AACN,oBAAM,UAAU,SAAS,IAAK,IAAK;AAAA,YACpC;AACA,mBAAO;AAAA,UACR;AAAA,QACD;AAEA,cAAM,UAAU,KAAK,YAAY,MAAM;AAEvC,cAAM,YAAY;AAAA,UACjB,UAAU;AAAA,YACT,KAAK,SAAU,OAAQ;AACtB,kBAAI;AAIJ,kBAAK,MAAM,KAAK,aAAa,KAC5B,MAAM,KAAM,MAAM,IAAK,KAAK,QAAQ,MAAM,KAAK,MAAO,MAAM,IAAK,KAAK,MAAO;AAC7E,uBAAO,MAAM,KAAM,MAAM,IAAK;AAAA,cAC/B;AAMA,uBAAStC,QAAO,IAAK,MAAM,MAAM,MAAM,MAAM,EAAG;AAGhD,qBAAO,CAAC,UAAU,WAAW,SAAS,IAAI;AAAA,YAC3C;AAAA,YACA,KAAK,SAAU,OAAQ;AAKtB,kBAAKA,QAAO,GAAG,KAAM,MAAM,IAAK,GAAI;AACnC,gBAAAA,QAAO,GAAG,KAAM,MAAM,IAAK,EAAG,KAAM;AAAA,cACrC,WAAY,MAAM,KAAK,aAAa,MACnCA,QAAO,SAAU,MAAM,IAAK,KAC3B,MAAM,KAAK,MAAO,cAAe,MAAM,IAAK,CAAE,KAAK,OAAS;AAC7D,gBAAAA,QAAO,MAAO,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAK;AAAA,cAC9D,OAAO;AACN,sBAAM,KAAM,MAAM,IAAK,IAAI,MAAM;AAAA,cAClC;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAIA,cAAM,UAAU,YAAY,MAAM,UAAU,aAAa;AAAA,UACxD,KAAK,SAAU,OAAQ;AACtB,gBAAK,MAAM,KAAK,YAAY,MAAM,KAAK,YAAa;AACnD,oBAAM,KAAM,MAAM,IAAK,IAAI,MAAM;AAAA,YAClC;AAAA,UACD;AAAA,QACD;AAEA,QAAAA,QAAO,SAAS;AAAA,UACf,QAAQ,SAAU,GAAI;AACrB,mBAAO;AAAA,UACR;AAAA,UACA,OAAO,SAAU,GAAI;AACpB,mBAAO,MAAM,KAAK,IAAK,IAAI,KAAK,EAAG,IAAI;AAAA,UACxC;AAAA,UACA,UAAU;AAAA,QACX;AAEA,QAAAA,QAAO,KAAK,MAAM,UAAU;AAG5B,QAAAA,QAAO,GAAG,OAAO,CAAC;AAKlB,YACC,OAAO,YACP,WAAW,0BACX,OAAO;AAER,iBAAS,WAAW;AACnB,cAAK,YAAa;AACjB,gBAAKH,UAAS,WAAW,SAASN,QAAO,uBAAwB;AAChE,cAAAA,QAAO,sBAAuB,QAAS;AAAA,YACxC,OAAO;AACN,cAAAA,QAAO,WAAY,UAAUS,QAAO,GAAG,QAAS;AAAA,YACjD;AAEA,YAAAA,QAAO,GAAG,KAAK;AAAA,UAChB;AAAA,QACD;AAGA,iBAAS,cAAc;AACtB,UAAAT,QAAO,WAAY,WAAW;AAC7B,oBAAQ;AAAA,UACT,CAAE;AACF,iBAAS,QAAQ,KAAK,IAAI;AAAA,QAC3B;AAGA,iBAAS,MAAO,MAAM,cAAe;AACpC,cAAI,OACH,IAAI,GACJ,QAAQ,EAAE,QAAQ,KAAK;AAIxB,yBAAe,eAAe,IAAI;AAClC,iBAAQ,IAAI,GAAG,KAAK,IAAI,cAAe;AACtC,oBAAQ,UAAW,CAAE;AACrB,kBAAO,WAAW,KAAM,IAAI,MAAO,YAAY,KAAM,IAAI;AAAA,UAC1D;AAEA,cAAK,cAAe;AACnB,kBAAM,UAAU,MAAM,QAAQ;AAAA,UAC/B;AAEA,iBAAO;AAAA,QACR;AAEA,iBAAS,YAAa,OAAO,MAAM,WAAY;AAC9C,cAAI,OACH,cAAe,UAAU,SAAU,IAAK,KAAK,CAAC,GAAI,OAAQ,UAAU,SAAU,GAAI,CAAE,GACpFsC,SAAQ,GACRzB,UAAS,WAAW;AACrB,iBAAQyB,SAAQzB,SAAQyB,UAAU;AACjC,gBAAO,QAAQ,WAAYA,MAAM,EAAE,KAAM,WAAW,MAAM,KAAM,GAAM;AAGrE,qBAAO;AAAA,YACR;AAAA,UACD;AAAA,QACD;AAEA,iBAAS,iBAAkB,MAAM,OAAO,MAAO;AAC9C,cAAI,MAAM,OAAO,QAAQS,QAAO,SAAS,WAAW,gBAAgB,SACnE,QAAQ,WAAW,SAAS,YAAY,OACxC,OAAO,MACP,OAAO,CAAC,GACRS,SAAQ,KAAK,OACb,SAAS,KAAK,YAAY,mBAAoB,IAAK,GACnD,WAAW,SAAS,IAAK,MAAM,QAAS;AAGzC,cAAK,CAAC,KAAK,OAAQ;AAClB,YAAAT,SAAQtC,QAAO,YAAa,MAAM,IAAK;AACvC,gBAAKsC,OAAM,YAAY,MAAO;AAC7B,cAAAA,OAAM,WAAW;AACjB,wBAAUA,OAAM,MAAM;AACtB,cAAAA,OAAM,MAAM,OAAO,WAAW;AAC7B,oBAAK,CAACA,OAAM,UAAW;AACtB,0BAAQ;AAAA,gBACT;AAAA,cACD;AAAA,YACD;AACA,YAAAA,OAAM;AAEN,iBAAK,OAAQ,WAAW;AAGvB,mBAAK,OAAQ,WAAW;AACvB,gBAAAA,OAAM;AACN,oBAAK,CAACtC,QAAO,MAAO,MAAM,IAAK,EAAE,QAAS;AACzC,kBAAAsC,OAAM,MAAM,KAAK;AAAA,gBAClB;AAAA,cACD,CAAE;AAAA,YACH,CAAE;AAAA,UACH;AAGA,eAAM,QAAQ,OAAQ;AACrB,oBAAQ,MAAO,IAAK;AACpB,gBAAK,SAAS,KAAM,KAAM,GAAI;AAC7B,qBAAO,MAAO,IAAK;AACnB,uBAAS,UAAU,UAAU;AAC7B,kBAAK,WAAY,SAAS,SAAS,SAAW;AAI7C,oBAAK,UAAU,UAAU,YAAY,SAAU,IAAK,MAAM,QAAY;AACrE,2BAAS;AAAA,gBAGV,OAAO;AACN;AAAA,gBACD;AAAA,cACD;AACA,mBAAM,IAAK,IAAI,YAAY,SAAU,IAAK,KAAKtC,QAAO,MAAO,MAAM,IAAK;AAAA,YACzE;AAAA,UACD;AAGA,sBAAY,CAACA,QAAO,cAAe,KAAM;AACzC,cAAK,CAAC,aAAaA,QAAO,cAAe,IAAK,GAAI;AACjD;AAAA,UACD;AAGA,cAAK,SAAS,KAAK,aAAa,GAAI;AAMnC,iBAAK,WAAW,CAAE+C,OAAM,UAAUA,OAAM,WAAWA,OAAM,SAAU;AAGnE,6BAAiB,YAAY,SAAS;AACtC,gBAAK,kBAAkB,MAAO;AAC7B,+BAAiB,SAAS,IAAK,MAAM,SAAU;AAAA,YAChD;AACA,sBAAU/C,QAAO,IAAK,MAAM,SAAU;AACtC,gBAAK,YAAY,QAAS;AACzB,kBAAK,gBAAiB;AACrB,0BAAU;AAAA,cACX,OAAO;AAGN,yBAAU,CAAE,IAAK,GAAG,IAAK;AACzB,iCAAiB,KAAK,MAAM,WAAW;AACvC,0BAAUA,QAAO,IAAK,MAAM,SAAU;AACtC,yBAAU,CAAE,IAAK,CAAE;AAAA,cACpB;AAAA,YACD;AAGA,gBAAK,YAAY,YAAY,YAAY,kBAAkB,kBAAkB,MAAO;AACnF,kBAAKA,QAAO,IAAK,MAAM,OAAQ,MAAM,QAAS;AAG7C,oBAAK,CAAC,WAAY;AACjB,uBAAK,KAAM,WAAW;AACrB,oBAAA+C,OAAM,UAAU;AAAA,kBACjB,CAAE;AACF,sBAAK,kBAAkB,MAAO;AAC7B,8BAAUA,OAAM;AAChB,qCAAiB,YAAY,SAAS,KAAK;AAAA,kBAC5C;AAAA,gBACD;AACA,gBAAAA,OAAM,UAAU;AAAA,cACjB;AAAA,YACD;AAAA,UACD;AAEA,cAAK,KAAK,UAAW;AACpB,YAAAA,OAAM,WAAW;AACjB,iBAAK,OAAQ,WAAW;AACvB,cAAAA,OAAM,WAAW,KAAK,SAAU,CAAE;AAClC,cAAAA,OAAM,YAAY,KAAK,SAAU,CAAE;AACnC,cAAAA,OAAM,YAAY,KAAK,SAAU,CAAE;AAAA,YACpC,CAAE;AAAA,UACH;AAGA,sBAAY;AACZ,eAAM,QAAQ,MAAO;AAGpB,gBAAK,CAAC,WAAY;AACjB,kBAAK,UAAW;AACf,oBAAK,YAAY,UAAW;AAC3B,2BAAS,SAAS;AAAA,gBACnB;AAAA,cACD,OAAO;AACN,2BAAW,SAAS,OAAQ,MAAM,UAAU,EAAE,SAAS,eAAe,CAAE;AAAA,cACzE;AAGA,kBAAK,QAAS;AACb,yBAAS,SAAS,CAAC;AAAA,cACpB;AAGA,kBAAK,QAAS;AACb,yBAAU,CAAE,IAAK,GAAG,IAAK;AAAA,cAC1B;AAIA,mBAAK,KAAM,WAAW;AAKrB,oBAAK,CAAC,QAAS;AACd,2BAAU,CAAE,IAAK,CAAE;AAAA,gBACpB;AACA,yBAAS,OAAQ,MAAM,QAAS;AAChC,qBAAM,QAAQ,MAAO;AACpB,kBAAA/C,QAAO,MAAO,MAAM,MAAM,KAAM,IAAK,CAAE;AAAA,gBACxC;AAAA,cACD,CAAE;AAAA,YACH;AAGA,wBAAY,YAAa,SAAS,SAAU,IAAK,IAAI,GAAG,MAAM,IAAK;AACnE,gBAAK,EAAG,QAAQ,WAAa;AAC5B,uBAAU,IAAK,IAAI,UAAU;AAC7B,kBAAK,QAAS;AACb,0BAAU,MAAM,UAAU;AAC1B,0BAAU,QAAQ;AAAA,cACnB;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAEA,iBAAS,WAAY,OAAO,eAAgB;AAC3C,cAAI6B,QAAO3B,OAAM,QAAQ,OAAOoC;AAGhC,eAAMT,UAAS,OAAQ;AACtB,YAAA3B,QAAO,UAAW2B,MAAM;AACxB,qBAAS,cAAe3B,KAAK;AAC7B,oBAAQ,MAAO2B,MAAM;AACrB,gBAAK,MAAM,QAAS,KAAM,GAAI;AAC7B,uBAAS,MAAO,CAAE;AAClB,sBAAQ,MAAOA,MAAM,IAAI,MAAO,CAAE;AAAA,YACnC;AAEA,gBAAKA,WAAU3B,OAAO;AACrB,oBAAOA,KAAK,IAAI;AAChB,qBAAO,MAAO2B,MAAM;AAAA,YACrB;AAEA,YAAAS,SAAQtC,QAAO,SAAUE,KAAK;AAC9B,gBAAKoC,UAAS,YAAYA,QAAQ;AACjC,sBAAQA,OAAM,OAAQ,KAAM;AAC5B,qBAAO,MAAOpC,KAAK;AAInB,mBAAM2B,UAAS,OAAQ;AACtB,oBAAK,EAAGA,UAAS,QAAU;AAC1B,wBAAOA,MAAM,IAAI,MAAOA,MAAM;AAC9B,gCAAeA,MAAM,IAAI;AAAA,gBAC1B;AAAA,cACD;AAAA,YACD,OAAO;AACN,4BAAe3B,KAAK,IAAI;AAAA,YACzB;AAAA,UACD;AAAA,QACD;AAEA,iBAAS,UAAW,MAAM,YAAYD,UAAU;AAC/C,cAAI,QACH,SACA4B,SAAQ,GACRzB,UAAS,UAAU,WAAW,QAC9B,WAAWJ,QAAO,SAAS,EAAE,OAAQ,WAAW;AAG/C,mBAAO,KAAK;AAAA,UACb,CAAE,GACF,OAAO,WAAW;AACjB,gBAAK,SAAU;AACd,qBAAO;AAAA,YACR;AACA,gBAAI,cAAc,SAAS,YAAY,GACtC,YAAY,KAAK,IAAK,GAAG,UAAU,YAAY,UAAU,WAAW,WAAY,GAIhF,OAAO,YAAY,UAAU,YAAY,GACzC,UAAU,IAAI,MACd6B,SAAQ,GACRzB,UAAS,UAAU,OAAO;AAE3B,mBAAQyB,SAAQzB,SAAQyB,UAAU;AACjC,wBAAU,OAAQA,MAAM,EAAE,IAAK,OAAQ;AAAA,YACxC;AAEA,qBAAS,WAAY,MAAM,CAAE,WAAW,SAAS,SAAU,CAAE;AAG7D,gBAAK,UAAU,KAAKzB,SAAS;AAC5B,qBAAO;AAAA,YACR;AAGA,gBAAK,CAACA,SAAS;AACd,uBAAS,WAAY,MAAM,CAAE,WAAW,GAAG,CAAE,CAAE;AAAA,YAChD;AAGA,qBAAS,YAAa,MAAM,CAAE,SAAU,CAAE;AAC1C,mBAAO;AAAA,UACR,GACA,YAAY,SAAS,QAAS;AAAA,YAC7B;AAAA,YACA,OAAOJ,QAAO,OAAQ,CAAC,GAAG,UAAW;AAAA,YACrC,MAAMA,QAAO,OAAQ,MAAM;AAAA,cAC1B,eAAe,CAAC;AAAA,cAChB,QAAQA,QAAO,OAAO;AAAA,YACvB,GAAGC,QAAQ;AAAA,YACX,oBAAoB;AAAA,YACpB,iBAAiBA;AAAA,YACjB,WAAW,SAAS,YAAY;AAAA,YAChC,UAAUA,SAAQ;AAAA,YAClB,QAAQ,CAAC;AAAA,YACT,aAAa,SAAU,MAAM,KAAM;AAClC,kBAAI,QAAQD,QAAO;AAAA,gBAAO;AAAA,gBAAM,UAAU;AAAA,gBAAM;AAAA,gBAAM;AAAA,gBACrD,UAAU,KAAK,cAAe,IAAK,KAAK,UAAU,KAAK;AAAA,cAAO;AAC/D,wBAAU,OAAO,KAAM,KAAM;AAC7B,qBAAO;AAAA,YACR;AAAA,YACA,MAAM,SAAU,SAAU;AACzB,kBAAI6B,SAAQ,GAIXzB,UAAS,UAAU,UAAU,OAAO,SAAS;AAC9C,kBAAK,SAAU;AACd,uBAAO;AAAA,cACR;AACA,wBAAU;AACV,qBAAQyB,SAAQzB,SAAQyB,UAAU;AACjC,0BAAU,OAAQA,MAAM,EAAE,IAAK,CAAE;AAAA,cAClC;AAGA,kBAAK,SAAU;AACd,yBAAS,WAAY,MAAM,CAAE,WAAW,GAAG,CAAE,CAAE;AAC/C,yBAAS,YAAa,MAAM,CAAE,WAAW,OAAQ,CAAE;AAAA,cACpD,OAAO;AACN,yBAAS,WAAY,MAAM,CAAE,WAAW,OAAQ,CAAE;AAAA,cACnD;AACA,qBAAO;AAAA,YACR;AAAA,UACD,CAAE,GACF,QAAQ,UAAU;AAEnB,qBAAY,OAAO,UAAU,KAAK,aAAc;AAEhD,iBAAQA,SAAQzB,SAAQyB,UAAU;AACjC,qBAAS,UAAU,WAAYA,MAAM,EAAE,KAAM,WAAW,MAAM,OAAO,UAAU,IAAK;AACpF,gBAAK,QAAS;AACb,kBAAKlC,YAAY,OAAO,IAAK,GAAI;AAChC,gBAAAK,QAAO,YAAa,UAAU,MAAM,UAAU,KAAK,KAAM,EAAE,OAC1D,OAAO,KAAK,KAAM,MAAO;AAAA,cAC3B;AACA,qBAAO;AAAA,YACR;AAAA,UACD;AAEA,UAAAA,QAAO,IAAK,OAAO,aAAa,SAAU;AAE1C,cAAKL,YAAY,UAAU,KAAK,KAAM,GAAI;AACzC,sBAAU,KAAK,MAAM,KAAM,MAAM,SAAU;AAAA,UAC5C;AAGA,oBACE,SAAU,UAAU,KAAK,QAAS,EAClC,KAAM,UAAU,KAAK,MAAM,UAAU,KAAK,QAAS,EACnD,KAAM,UAAU,KAAK,IAAK,EAC1B,OAAQ,UAAU,KAAK,MAAO;AAEhC,UAAAK,QAAO,GAAG;AAAA,YACTA,QAAO,OAAQ,MAAM;AAAA,cACpB;AAAA,cACA,MAAM;AAAA,cACN,OAAO,UAAU,KAAK;AAAA,YACvB,CAAE;AAAA,UACH;AAEA,iBAAO;AAAA,QACR;AAEA,QAAAA,QAAO,YAAYA,QAAO,OAAQ,WAAW;AAAA,UAE5C,UAAU;AAAA,YACT,KAAK,CAAE,SAAU,MAAM,OAAQ;AAC9B,kBAAI,QAAQ,KAAK,YAAa,MAAM,KAAM;AAC1C,wBAAW,MAAM,MAAM,MAAM,QAAQ,KAAM,KAAM,GAAG,KAAM;AAC1D,qBAAO;AAAA,YACR,CAAE;AAAA,UACH;AAAA,UAEA,SAAS,SAAU,OAAO,UAAW;AACpC,gBAAKL,YAAY,KAAM,GAAI;AAC1B,yBAAW;AACX,sBAAQ,CAAE,GAAI;AAAA,YACf,OAAO;AACN,sBAAQ,MAAM,MAAO,aAAc;AAAA,YACpC;AAEA,gBAAI,MACHkC,SAAQ,GACRzB,UAAS,MAAM;AAEhB,mBAAQyB,SAAQzB,SAAQyB,UAAU;AACjC,qBAAO,MAAOA,MAAM;AACpB,wBAAU,SAAU,IAAK,IAAI,UAAU,SAAU,IAAK,KAAK,CAAC;AAC5D,wBAAU,SAAU,IAAK,EAAE,QAAS,QAAS;AAAA,YAC9C;AAAA,UACD;AAAA,UAEA,YAAY,CAAE,gBAAiB;AAAA,UAE/B,WAAW,SAAU,UAAU,SAAU;AACxC,gBAAK,SAAU;AACd,wBAAU,WAAW,QAAS,QAAS;AAAA,YACxC,OAAO;AACN,wBAAU,WAAW,KAAM,QAAS;AAAA,YACrC;AAAA,UACD;AAAA,QACD,CAAE;AAEF,QAAA7B,QAAO,QAAQ,SAAU,OAAO,QAAQ,IAAK;AAC5C,cAAI,MAAM,SAAS,OAAO,UAAU,WAAWA,QAAO,OAAQ,CAAC,GAAG,KAAM,IAAI;AAAA,YAC3E,UAAU,MAAM,CAAC,MAAM,UACtBL,YAAY,KAAM,KAAK;AAAA,YACxB,UAAU;AAAA,YACV,QAAQ,MAAM,UAAU,UAAU,CAACA,YAAY,MAAO,KAAK;AAAA,UAC5D;AAGA,cAAKK,QAAO,GAAG,KAAM;AACpB,gBAAI,WAAW;AAAA,UAEhB,OAAO;AACN,gBAAK,OAAO,IAAI,aAAa,UAAW;AACvC,kBAAK,IAAI,YAAYA,QAAO,GAAG,QAAS;AACvC,oBAAI,WAAWA,QAAO,GAAG,OAAQ,IAAI,QAAS;AAAA,cAE/C,OAAO;AACN,oBAAI,WAAWA,QAAO,GAAG,OAAO;AAAA,cACjC;AAAA,YACD;AAAA,UACD;AAGA,cAAK,IAAI,SAAS,QAAQ,IAAI,UAAU,MAAO;AAC9C,gBAAI,QAAQ;AAAA,UACb;AAGA,cAAI,MAAM,IAAI;AAEd,cAAI,WAAW,WAAW;AACzB,gBAAKL,YAAY,IAAI,GAAI,GAAI;AAC5B,kBAAI,IAAI,KAAM,IAAK;AAAA,YACpB;AAEA,gBAAK,IAAI,OAAQ;AAChB,cAAAK,QAAO,QAAS,MAAM,IAAI,KAAM;AAAA,YACjC;AAAA,UACD;AAEA,iBAAO;AAAA,QACR;AAEA,QAAAA,QAAO,GAAG,OAAQ;AAAA,UACjB,QAAQ,SAAU,OAAO,IAAI,QAAQ,UAAW;AAG/C,mBAAO,KAAK,OAAQ,kBAAmB,EAAE,IAAK,WAAW,CAAE,EAAE,KAAK,EAGhE,IAAI,EAAE,QAAS,EAAE,SAAS,GAAG,GAAG,OAAO,QAAQ,QAAS;AAAA,UAC3D;AAAA,UACA,SAAS,SAAU,MAAM,OAAO,QAAQ,UAAW;AAClD,gBAAI,QAAQA,QAAO,cAAe,IAAK,GACtC,SAASA,QAAO,MAAO,OAAO,QAAQ,QAAS,GAC/C,cAAc,WAAW;AAGxB,kBAAI,OAAO,UAAW,MAAMA,QAAO,OAAQ,CAAC,GAAG,IAAK,GAAG,MAAO;AAG9D,kBAAK,SAAS,SAAS,IAAK,MAAM,QAAS,GAAI;AAC9C,qBAAK,KAAM,IAAK;AAAA,cACjB;AAAA,YACD;AAED,wBAAY,SAAS;AAErB,mBAAO,SAAS,OAAO,UAAU,QAChC,KAAK,KAAM,WAAY,IACvB,KAAK,MAAO,OAAO,OAAO,WAAY;AAAA,UACxC;AAAA,UACA,MAAM,SAAU,MAAM,YAAY,SAAU;AAC3C,gBAAI,YAAY,SAAUsC,QAAQ;AACjC,kBAAI,OAAOA,OAAM;AACjB,qBAAOA,OAAM;AACb,mBAAM,OAAQ;AAAA,YACf;AAEA,gBAAK,OAAO,SAAS,UAAW;AAC/B,wBAAU;AACV,2BAAa;AACb,qBAAO;AAAA,YACR;AACA,gBAAK,YAAa;AACjB,mBAAK,MAAO,QAAQ,MAAM,CAAC,CAAE;AAAA,YAC9B;AAEA,mBAAO,KAAK,KAAM,WAAW;AAC5B,kBAAI,UAAU,MACbT,SAAQ,QAAQ,QAAQ,OAAO,cAC/B,SAAS7B,QAAO,QAChBmC,QAAO,SAAS,IAAK,IAAK;AAE3B,kBAAKN,QAAQ;AACZ,oBAAKM,MAAMN,MAAM,KAAKM,MAAMN,MAAM,EAAE,MAAO;AAC1C,4BAAWM,MAAMN,MAAM,CAAE;AAAA,gBAC1B;AAAA,cACD,OAAO;AACN,qBAAMA,UAASM,OAAO;AACrB,sBAAKA,MAAMN,MAAM,KAAKM,MAAMN,MAAM,EAAE,QAAQ,KAAK,KAAMA,MAAM,GAAI;AAChE,8BAAWM,MAAMN,MAAM,CAAE;AAAA,kBAC1B;AAAA,gBACD;AAAA,cACD;AAEA,mBAAMA,SAAQ,OAAO,QAAQA,YAAW;AACvC,oBAAK,OAAQA,MAAM,EAAE,SAAS,SAC3B,QAAQ,QAAQ,OAAQA,MAAM,EAAE,UAAU,OAAS;AAErD,yBAAQA,MAAM,EAAE,KAAK,KAAM,OAAQ;AACnC,4BAAU;AACV,yBAAO,OAAQA,QAAO,CAAE;AAAA,gBACzB;AAAA,cACD;AAKA,kBAAK,WAAW,CAAC,SAAU;AAC1B,gBAAA7B,QAAO,QAAS,MAAM,IAAK;AAAA,cAC5B;AAAA,YACD,CAAE;AAAA,UACH;AAAA,UACA,QAAQ,SAAU,MAAO;AACxB,gBAAK,SAAS,OAAQ;AACrB,qBAAO,QAAQ;AAAA,YAChB;AACA,mBAAO,KAAK,KAAM,WAAW;AAC5B,kBAAI6B,QACHM,QAAO,SAAS,IAAK,IAAK,GAC1B,QAAQA,MAAM,OAAO,OAAQ,GAC7BG,SAAQH,MAAM,OAAO,YAAa,GAClC,SAASnC,QAAO,QAChBI,UAAS,QAAQ,MAAM,SAAS;AAGjC,cAAA+B,MAAK,SAAS;AAGd,cAAAnC,QAAO,MAAO,MAAM,MAAM,CAAC,CAAE;AAE7B,kBAAKsC,UAASA,OAAM,MAAO;AAC1B,gBAAAA,OAAM,KAAK,KAAM,MAAM,IAAK;AAAA,cAC7B;AAGA,mBAAMT,SAAQ,OAAO,QAAQA,YAAW;AACvC,oBAAK,OAAQA,MAAM,EAAE,SAAS,QAAQ,OAAQA,MAAM,EAAE,UAAU,MAAO;AACtE,yBAAQA,MAAM,EAAE,KAAK,KAAM,IAAK;AAChC,yBAAO,OAAQA,QAAO,CAAE;AAAA,gBACzB;AAAA,cACD;AAGA,mBAAMA,SAAQ,GAAGA,SAAQzB,SAAQyB,UAAU;AAC1C,oBAAK,MAAOA,MAAM,KAAK,MAAOA,MAAM,EAAE,QAAS;AAC9C,wBAAOA,MAAM,EAAE,OAAO,KAAM,IAAK;AAAA,gBAClC;AAAA,cACD;AAGA,qBAAOM,MAAK;AAAA,YACb,CAAE;AAAA,UACH;AAAA,QACD,CAAE;AAEF,QAAAnC,QAAO,KAAM,CAAE,UAAU,QAAQ,MAAO,GAAG,SAAU,IAAIE,OAAO;AAC/D,cAAI,QAAQF,QAAO,GAAIE,KAAK;AAC5B,UAAAF,QAAO,GAAIE,KAAK,IAAI,SAAU,OAAO,QAAQ,UAAW;AACvD,mBAAO,SAAS,QAAQ,OAAO,UAAU,YACxC,MAAM,MAAO,MAAM,SAAU,IAC7B,KAAK,QAAS,MAAOA,OAAM,IAAK,GAAG,OAAO,QAAQ,QAAS;AAAA,UAC7D;AAAA,QACD,CAAE;AAGF,QAAAF,QAAO,KAAM;AAAA,UACZ,WAAW,MAAO,MAAO;AAAA,UACzB,SAAS,MAAO,MAAO;AAAA,UACvB,aAAa,MAAO,QAAS;AAAA,UAC7B,QAAQ,EAAE,SAAS,OAAO;AAAA,UAC1B,SAAS,EAAE,SAAS,OAAO;AAAA,UAC3B,YAAY,EAAE,SAAS,SAAS;AAAA,QACjC,GAAG,SAAUE,OAAM,OAAQ;AAC1B,UAAAF,QAAO,GAAIE,KAAK,IAAI,SAAU,OAAO,QAAQ,UAAW;AACvD,mBAAO,KAAK,QAAS,OAAO,OAAO,QAAQ,QAAS;AAAA,UACrD;AAAA,QACD,CAAE;AAEF,QAAAF,QAAO,SAAS,CAAC;AACjB,QAAAA,QAAO,GAAG,OAAO,WAAW;AAC3B,cAAIiD,QACH,IAAI,GACJ,SAASjD,QAAO;AAEjB,kBAAQ,KAAK,IAAI;AAEjB,iBAAQ,IAAI,OAAO,QAAQ,KAAM;AAChC,YAAAiD,SAAQ,OAAQ,CAAE;AAGlB,gBAAK,CAACA,OAAM,KAAK,OAAQ,CAAE,MAAMA,QAAQ;AACxC,qBAAO,OAAQ,KAAK,CAAE;AAAA,YACvB;AAAA,UACD;AAEA,cAAK,CAAC,OAAO,QAAS;AACrB,YAAAjD,QAAO,GAAG,KAAK;AAAA,UAChB;AACA,kBAAQ;AAAA,QACT;AAEA,QAAAA,QAAO,GAAG,QAAQ,SAAUiD,QAAQ;AACnC,UAAAjD,QAAO,OAAO,KAAMiD,MAAM;AAC1B,UAAAjD,QAAO,GAAG,MAAM;AAAA,QACjB;AAEA,QAAAA,QAAO,GAAG,WAAW;AACrB,QAAAA,QAAO,GAAG,QAAQ,WAAW;AAC5B,cAAK,YAAa;AACjB;AAAA,UACD;AAEA,uBAAa;AACb,mBAAS;AAAA,QACV;AAEA,QAAAA,QAAO,GAAG,OAAO,WAAW;AAC3B,uBAAa;AAAA,QACd;AAEA,QAAAA,QAAO,GAAG,SAAS;AAAA,UAClB,MAAM;AAAA,UACN,MAAM;AAAA;AAAA,UAGN,UAAU;AAAA,QACX;AAIA,QAAAA,QAAO,GAAG,QAAQ,SAAUkD,OAAM,MAAO;AACxC,UAAAA,QAAOlD,QAAO,KAAKA,QAAO,GAAG,OAAQkD,KAAK,KAAKA,QAAOA;AACtD,iBAAO,QAAQ;AAEf,iBAAO,KAAK,MAAO,MAAM,SAAUX,OAAMD,QAAQ;AAChD,gBAAIa,WAAU5D,QAAO,WAAYgD,OAAMW,KAAK;AAC5C,YAAAZ,OAAM,OAAO,WAAW;AACvB,cAAA/C,QAAO,aAAc4D,QAAQ;AAAA,YAC9B;AAAA,UACD,CAAE;AAAA,QACH;AAGA,SAAE,WAAW;AACZ,cAAI,QAAQtD,UAAS,cAAe,OAAQ,GAC3C,SAASA,UAAS,cAAe,QAAS,GAC1C,MAAM,OAAO,YAAaA,UAAS,cAAe,QAAS,CAAE;AAE9D,gBAAM,OAAO;AAIb,kBAAQ,UAAU,MAAM,UAAU;AAIlC,kBAAQ,cAAc,IAAI;AAI1B,kBAAQA,UAAS,cAAe,OAAQ;AACxC,gBAAM,QAAQ;AACd,gBAAM,OAAO;AACb,kBAAQ,aAAa,MAAM,UAAU;AAAA,QACtC,GAAI;AAGJ,YAAI,UACH,aAAaG,QAAO,KAAK;AAE1B,QAAAA,QAAO,GAAG,OAAQ;AAAA,UACjB,MAAM,SAAUE,OAAM,OAAQ;AAC7B,mBAAO,OAAQ,MAAMF,QAAO,MAAME,OAAM,OAAO,UAAU,SAAS,CAAE;AAAA,UACrE;AAAA,UAEA,YAAY,SAAUA,OAAO;AAC5B,mBAAO,KAAK,KAAM,WAAW;AAC5B,cAAAF,QAAO,WAAY,MAAME,KAAK;AAAA,YAC/B,CAAE;AAAA,UACH;AAAA,QACD,CAAE;AAEF,QAAAF,QAAO,OAAQ;AAAA,UACd,MAAM,SAAU,MAAME,OAAM,OAAQ;AACnC,gBAAI,KAAKoC,QACR,QAAQ,KAAK;AAGd,gBAAK,UAAU,KAAK,UAAU,KAAK,UAAU,GAAI;AAChD;AAAA,YACD;AAGA,gBAAK,OAAO,KAAK,iBAAiB,aAAc;AAC/C,qBAAOtC,QAAO,KAAM,MAAME,OAAM,KAAM;AAAA,YACvC;AAIA,gBAAK,UAAU,KAAK,CAACF,QAAO,SAAU,IAAK,GAAI;AAC9C,cAAAsC,SAAQtC,QAAO,UAAWE,MAAK,YAAY,CAAE,MAC1CF,QAAO,KAAK,MAAM,KAAK,KAAME,KAAK,IAAI,WAAW;AAAA,YACrD;AAEA,gBAAK,UAAU,QAAY;AAC1B,kBAAK,UAAU,MAAO;AACrB,gBAAAF,QAAO,WAAY,MAAME,KAAK;AAC9B;AAAA,cACD;AAEA,kBAAKoC,UAAS,SAASA,WACpB,MAAMA,OAAM,IAAK,MAAM,OAAOpC,KAAK,OAAQ,QAAY;AACzD,uBAAO;AAAA,cACR;AAEA,mBAAK,aAAcA,OAAM,QAAQ,EAAG;AACpC,qBAAO;AAAA,YACR;AAEA,gBAAKoC,UAAS,SAASA,WAAW,MAAMA,OAAM,IAAK,MAAMpC,KAAK,OAAQ,MAAO;AAC5E,qBAAO;AAAA,YACR;AAEA,kBAAMF,QAAO,KAAK,KAAM,MAAME,KAAK;AAGnC,mBAAO,OAAO,OAAO,SAAY;AAAA,UAClC;AAAA,UAEA,WAAW;AAAA,YACV,MAAM;AAAA,cACL,KAAK,SAAU,MAAM,OAAQ;AAC5B,oBAAK,CAAC,QAAQ,cAAc,UAAU,WACrC,SAAU,MAAM,OAAQ,GAAI;AAC5B,sBAAI,MAAM,KAAK;AACf,uBAAK,aAAc,QAAQ,KAAM;AACjC,sBAAK,KAAM;AACV,yBAAK,QAAQ;AAAA,kBACd;AACA,yBAAO;AAAA,gBACR;AAAA,cACD;AAAA,YACD;AAAA,UACD;AAAA,UAEA,YAAY,SAAU,MAAM,OAAQ;AACnC,gBAAIA,OACH,IAAI,GAIJ,YAAY,SAAS,MAAM,MAAO,aAAc;AAEjD,gBAAK,aAAa,KAAK,aAAa,GAAI;AACvC,qBAAUA,QAAO,UAAW,GAAI,GAAM;AACrC,qBAAK,gBAAiBA,KAAK;AAAA,cAC5B;AAAA,YACD;AAAA,UACD;AAAA,QACD,CAAE;AAGF,mBAAW;AAAA,UACV,KAAK,SAAU,MAAM,OAAOA,OAAO;AAClC,gBAAK,UAAU,OAAQ;AAGtB,cAAAF,QAAO,WAAY,MAAME,KAAK;AAAA,YAC/B,OAAO;AACN,mBAAK,aAAcA,OAAMA,KAAK;AAAA,YAC/B;AACA,mBAAOA;AAAA,UACR;AAAA,QACD;AAEA,QAAAF,QAAO,KAAMA,QAAO,KAAK,MAAM,KAAK,OAAO,MAAO,MAAO,GAAG,SAAU,IAAIE,OAAO;AAChF,cAAI,SAAS,WAAYA,KAAK,KAAKF,QAAO,KAAK;AAE/C,qBAAYE,KAAK,IAAI,SAAU,MAAMA,OAAM,OAAQ;AAClD,gBAAI,KAAK,QACR,gBAAgBA,MAAK,YAAY;AAElC,gBAAK,CAAC,OAAQ;AAGb,uBAAS,WAAY,aAAc;AACnC,yBAAY,aAAc,IAAI;AAC9B,oBAAM,OAAQ,MAAMA,OAAM,KAAM,KAAK,OACpC,gBACA;AACD,yBAAY,aAAc,IAAI;AAAA,YAC/B;AACA,mBAAO;AAAA,UACR;AAAA,QACD,CAAE;AAKF,YAAI,aAAa,uCAChB,aAAa;AAEd,QAAAF,QAAO,GAAG,OAAQ;AAAA,UACjB,MAAM,SAAUE,OAAM,OAAQ;AAC7B,mBAAO,OAAQ,MAAMF,QAAO,MAAME,OAAM,OAAO,UAAU,SAAS,CAAE;AAAA,UACrE;AAAA,UAEA,YAAY,SAAUA,OAAO;AAC5B,mBAAO,KAAK,KAAM,WAAW;AAC5B,qBAAO,KAAMF,QAAO,QAASE,KAAK,KAAKA,KAAK;AAAA,YAC7C,CAAE;AAAA,UACH;AAAA,QACD,CAAE;AAEF,QAAAF,QAAO,OAAQ;AAAA,UACd,MAAM,SAAU,MAAME,OAAM,OAAQ;AACnC,gBAAI,KAAKoC,QACR,QAAQ,KAAK;AAGd,gBAAK,UAAU,KAAK,UAAU,KAAK,UAAU,GAAI;AAChD;AAAA,YACD;AAEA,gBAAK,UAAU,KAAK,CAACtC,QAAO,SAAU,IAAK,GAAI;AAG9C,cAAAE,QAAOF,QAAO,QAASE,KAAK,KAAKA;AACjC,cAAAoC,SAAQtC,QAAO,UAAWE,KAAK;AAAA,YAChC;AAEA,gBAAK,UAAU,QAAY;AAC1B,kBAAKoC,UAAS,SAASA,WACpB,MAAMA,OAAM,IAAK,MAAM,OAAOpC,KAAK,OAAQ,QAAY;AACzD,uBAAO;AAAA,cACR;AAEA,qBAAS,KAAMA,KAAK,IAAI;AAAA,YACzB;AAEA,gBAAKoC,UAAS,SAASA,WAAW,MAAMA,OAAM,IAAK,MAAMpC,KAAK,OAAQ,MAAO;AAC5E,qBAAO;AAAA,YACR;AAEA,mBAAO,KAAMA,KAAK;AAAA,UACnB;AAAA,UAEA,WAAW;AAAA,YACV,UAAU;AAAA,cACT,KAAK,SAAU,MAAO;AAMrB,oBAAI,WAAWF,QAAO,KAAK,KAAM,MAAM,UAAW;AAElD,oBAAK,UAAW;AACf,yBAAO,SAAU,UAAU,EAAG;AAAA,gBAC/B;AAEA,oBACC,WAAW,KAAM,KAAK,QAAS,KAC/B,WAAW,KAAM,KAAK,QAAS,KAC/B,KAAK,MACJ;AACD,yBAAO;AAAA,gBACR;AAEA,uBAAO;AAAA,cACR;AAAA,YACD;AAAA,UACD;AAAA,UAEA,SAAS;AAAA,YACR,OAAO;AAAA,YACP,SAAS;AAAA,UACV;AAAA,QACD,CAAE;AAUF,YAAK,CAAC,QAAQ,aAAc;AAC3B,UAAAA,QAAO,UAAU,WAAW;AAAA,YAC3B,KAAK,SAAU,MAAO;AAIrB,kBAAI,SAAS,KAAK;AAClB,kBAAK,UAAU,OAAO,YAAa;AAClC,uBAAO,WAAW;AAAA,cACnB;AACA,qBAAO;AAAA,YACR;AAAA,YACA,KAAK,SAAU,MAAO;AAIrB,kBAAI,SAAS,KAAK;AAClB,kBAAK,QAAS;AACb,uBAAO;AAEP,oBAAK,OAAO,YAAa;AACxB,yBAAO,WAAW;AAAA,gBACnB;AAAA,cACD;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAEA,QAAAA,QAAO,KAAM;AAAA,UACZ;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACD,GAAG,WAAW;AACb,UAAAA,QAAO,QAAS,KAAK,YAAY,CAAE,IAAI;AAAA,QACxC,CAAE;AAOD,iBAAS,iBAAkB,OAAQ;AAClC,cAAI,SAAS,MAAM,MAAO,aAAc,KAAK,CAAC;AAC9C,iBAAO,OAAO,KAAM,GAAI;AAAA,QACzB;AAGD,iBAAS,SAAU,MAAO;AACzB,iBAAO,KAAK,gBAAgB,KAAK,aAAc,OAAQ,KAAK;AAAA,QAC7D;AAEA,iBAAS,eAAgB,OAAQ;AAChC,cAAK,MAAM,QAAS,KAAM,GAAI;AAC7B,mBAAO;AAAA,UACR;AACA,cAAK,OAAO,UAAU,UAAW;AAChC,mBAAO,MAAM,MAAO,aAAc,KAAK,CAAC;AAAA,UACzC;AACA,iBAAO,CAAC;AAAA,QACT;AAEA,QAAAA,QAAO,GAAG,OAAQ;AAAA,UACjB,UAAU,SAAU,OAAQ;AAC3B,gBAAIoD,cAAY,KAAK,UAAU,WAAW,GAAG;AAE7C,gBAAKzD,YAAY,KAAM,GAAI;AAC1B,qBAAO,KAAK,KAAM,SAAU,GAAI;AAC/B,gBAAAK,QAAQ,IAAK,EAAE,SAAU,MAAM,KAAM,MAAM,GAAG,SAAU,IAAK,CAAE,CAAE;AAAA,cAClE,CAAE;AAAA,YACH;AAEA,YAAAoD,eAAa,eAAgB,KAAM;AAEnC,gBAAKA,aAAW,QAAS;AACxB,qBAAO,KAAK,KAAM,WAAW;AAC5B,2BAAW,SAAU,IAAK;AAC1B,sBAAM,KAAK,aAAa,KAAO,MAAM,iBAAkB,QAAS,IAAI;AAEpE,oBAAK,KAAM;AACV,uBAAM,IAAI,GAAG,IAAIA,aAAW,QAAQ,KAAM;AACzC,gCAAYA,aAAY,CAAE;AAC1B,wBAAK,IAAI,QAAS,MAAM,YAAY,GAAI,IAAI,GAAI;AAC/C,6BAAO,YAAY;AAAA,oBACpB;AAAA,kBACD;AAGA,+BAAa,iBAAkB,GAAI;AACnC,sBAAK,aAAa,YAAa;AAC9B,yBAAK,aAAc,SAAS,UAAW;AAAA,kBACxC;AAAA,gBACD;AAAA,cACD,CAAE;AAAA,YACH;AAEA,mBAAO;AAAA,UACR;AAAA,UAEA,aAAa,SAAU,OAAQ;AAC9B,gBAAIA,cAAY,KAAK,UAAU,WAAW,GAAG;AAE7C,gBAAKzD,YAAY,KAAM,GAAI;AAC1B,qBAAO,KAAK,KAAM,SAAU,GAAI;AAC/B,gBAAAK,QAAQ,IAAK,EAAE,YAAa,MAAM,KAAM,MAAM,GAAG,SAAU,IAAK,CAAE,CAAE;AAAA,cACrE,CAAE;AAAA,YACH;AAEA,gBAAK,CAAC,UAAU,QAAS;AACxB,qBAAO,KAAK,KAAM,SAAS,EAAG;AAAA,YAC/B;AAEA,YAAAoD,eAAa,eAAgB,KAAM;AAEnC,gBAAKA,aAAW,QAAS;AACxB,qBAAO,KAAK,KAAM,WAAW;AAC5B,2BAAW,SAAU,IAAK;AAG1B,sBAAM,KAAK,aAAa,KAAO,MAAM,iBAAkB,QAAS,IAAI;AAEpE,oBAAK,KAAM;AACV,uBAAM,IAAI,GAAG,IAAIA,aAAW,QAAQ,KAAM;AACzC,gCAAYA,aAAY,CAAE;AAG1B,2BAAQ,IAAI,QAAS,MAAM,YAAY,GAAI,IAAI,IAAK;AACnD,4BAAM,IAAI,QAAS,MAAM,YAAY,KAAK,GAAI;AAAA,oBAC/C;AAAA,kBACD;AAGA,+BAAa,iBAAkB,GAAI;AACnC,sBAAK,aAAa,YAAa;AAC9B,yBAAK,aAAc,SAAS,UAAW;AAAA,kBACxC;AAAA,gBACD;AAAA,cACD,CAAE;AAAA,YACH;AAEA,mBAAO;AAAA,UACR;AAAA,UAEA,aAAa,SAAU,OAAO,UAAW;AACxC,gBAAIA,cAAY,WAAW,GAAGzB,OAC7B,OAAO,OAAO,OACd,eAAe,SAAS,YAAY,MAAM,QAAS,KAAM;AAE1D,gBAAKhC,YAAY,KAAM,GAAI;AAC1B,qBAAO,KAAK,KAAM,SAAUoB,IAAI;AAC/B,gBAAAf,QAAQ,IAAK,EAAE;AAAA,kBACd,MAAM,KAAM,MAAMe,IAAG,SAAU,IAAK,GAAG,QAAS;AAAA,kBAChD;AAAA,gBACD;AAAA,cACD,CAAE;AAAA,YACH;AAEA,gBAAK,OAAO,aAAa,aAAa,cAAe;AACpD,qBAAO,WAAW,KAAK,SAAU,KAAM,IAAI,KAAK,YAAa,KAAM;AAAA,YACpE;AAEA,YAAAqC,eAAa,eAAgB,KAAM;AAEnC,mBAAO,KAAK,KAAM,WAAW;AAC5B,kBAAK,cAAe;AAGnB,gBAAAzB,QAAO3B,QAAQ,IAAK;AAEpB,qBAAM,IAAI,GAAG,IAAIoD,aAAW,QAAQ,KAAM;AACzC,8BAAYA,aAAY,CAAE;AAG1B,sBAAKzB,MAAK,SAAU,SAAU,GAAI;AACjC,oBAAAA,MAAK,YAAa,SAAU;AAAA,kBAC7B,OAAO;AACN,oBAAAA,MAAK,SAAU,SAAU;AAAA,kBAC1B;AAAA,gBACD;AAAA,cAGD,WAAY,UAAU,UAAa,SAAS,WAAY;AACvD,4BAAY,SAAU,IAAK;AAC3B,oBAAK,WAAY;AAGhB,2BAAS,IAAK,MAAM,iBAAiB,SAAU;AAAA,gBAChD;AAMA,oBAAK,KAAK,cAAe;AACxB,uBAAK;AAAA,oBAAc;AAAA,oBAClB,aAAa,UAAU,QACtB,KACA,SAAS,IAAK,MAAM,eAAgB,KAAK;AAAA,kBAC3C;AAAA,gBACD;AAAA,cACD;AAAA,YACD,CAAE;AAAA,UACH;AAAA,UAEA,UAAU,SAAU,UAAW;AAC9B,gBAAI,WAAW,MACd,IAAI;AAEL,wBAAY,MAAM,WAAW;AAC7B,mBAAU,OAAO,KAAM,GAAI,GAAM;AAChC,kBAAK,KAAK,aAAa,MACpB,MAAM,iBAAkB,SAAU,IAAK,CAAE,IAAI,KAAM,QAAS,SAAU,IAAI,IAAK;AACjF,uBAAO;AAAA,cACR;AAAA,YACD;AAEA,mBAAO;AAAA,UACR;AAAA,QACD,CAAE;AAKF,YAAI,UAAU;AAEd,QAAA3B,QAAO,GAAG,OAAQ;AAAA,UACjB,KAAK,SAAU,OAAQ;AACtB,gBAAIsC,QAAO,KAAK,iBACf,OAAO,KAAM,CAAE;AAEhB,gBAAK,CAAC,UAAU,QAAS;AACxB,kBAAK,MAAO;AACX,gBAAAA,SAAQtC,QAAO,SAAU,KAAK,IAAK,KAClCA,QAAO,SAAU,KAAK,SAAS,YAAY,CAAE;AAE9C,oBAAKsC,UACJ,SAASA,WACP,MAAMA,OAAM,IAAK,MAAM,OAAQ,OAAQ,QACxC;AACD,yBAAO;AAAA,gBACR;AAEA,sBAAM,KAAK;AAGX,oBAAK,OAAO,QAAQ,UAAW;AAC9B,yBAAO,IAAI,QAAS,SAAS,EAAG;AAAA,gBACjC;AAGA,uBAAO,OAAO,OAAO,KAAK;AAAA,cAC3B;AAEA;AAAA,YACD;AAEA,8BAAkB3C,YAAY,KAAM;AAEpC,mBAAO,KAAK,KAAM,SAAU,GAAI;AAC/B,kBAAI;AAEJ,kBAAK,KAAK,aAAa,GAAI;AAC1B;AAAA,cACD;AAEA,kBAAK,iBAAkB;AACtB,sBAAM,MAAM,KAAM,MAAM,GAAGK,QAAQ,IAAK,EAAE,IAAI,CAAE;AAAA,cACjD,OAAO;AACN,sBAAM;AAAA,cACP;AAGA,kBAAK,OAAO,MAAO;AAClB,sBAAM;AAAA,cAEP,WAAY,OAAO,QAAQ,UAAW;AACrC,uBAAO;AAAA,cAER,WAAY,MAAM,QAAS,GAAI,GAAI;AAClC,sBAAMA,QAAO,IAAK,KAAK,SAAU8B,QAAQ;AACxC,yBAAOA,UAAS,OAAO,KAAKA,SAAQ;AAAA,gBACrC,CAAE;AAAA,cACH;AAEA,cAAAQ,SAAQtC,QAAO,SAAU,KAAK,IAAK,KAAKA,QAAO,SAAU,KAAK,SAAS,YAAY,CAAE;AAGrF,kBAAK,CAACsC,UAAS,EAAG,SAASA,WAAWA,OAAM,IAAK,MAAM,KAAK,OAAQ,MAAM,QAAY;AACrF,qBAAK,QAAQ;AAAA,cACd;AAAA,YACD,CAAE;AAAA,UACH;AAAA,QACD,CAAE;AAEF,QAAAtC,QAAO,OAAQ;AAAA,UACd,UAAU;AAAA,YACT,QAAQ;AAAA,cACP,KAAK,SAAU,MAAO;AAErB,oBAAI,MAAMA,QAAO,KAAK,KAAM,MAAM,OAAQ;AAC1C,uBAAO,OAAO,OACb;AAAA;AAAA;AAAA;AAAA;AAAA,kBAMA,iBAAkBA,QAAO,KAAM,IAAK,CAAE;AAAA;AAAA,cACxC;AAAA,YACD;AAAA,YACA,QAAQ;AAAA,cACP,KAAK,SAAU,MAAO;AACrB,oBAAI,OAAO,QAAQ,GAClBC,WAAU,KAAK,SACf4B,SAAQ,KAAK,eACbc,OAAM,KAAK,SAAS,cACpB,SAASA,OAAM,OAAO,CAAC,GACvBU,OAAMV,OAAMd,SAAQ,IAAI5B,SAAQ;AAEjC,oBAAK4B,SAAQ,GAAI;AAChB,sBAAIwB;AAAA,gBAEL,OAAO;AACN,sBAAIV,OAAMd,SAAQ;AAAA,gBACnB;AAGA,uBAAQ,IAAIwB,MAAK,KAAM;AACtB,2BAASpD,SAAS,CAAE;AAIpB,uBAAO,OAAO,YAAY,MAAM4B;AAAA,kBAG9B,CAAC,OAAO,aACN,CAAC,OAAO,WAAW,YACpB,CAAC,SAAU,OAAO,YAAY,UAAW,IAAM;AAGjD,4BAAQ7B,QAAQ,MAAO,EAAE,IAAI;AAG7B,wBAAK2C,MAAM;AACV,6BAAO;AAAA,oBACR;AAGA,2BAAO,KAAM,KAAM;AAAA,kBACpB;AAAA,gBACD;AAEA,uBAAO;AAAA,cACR;AAAA,cAEA,KAAK,SAAU,MAAM,OAAQ;AAC5B,oBAAI,WAAW,QACd1C,WAAU,KAAK,SACf,SAASD,QAAO,UAAW,KAAM,GACjC,IAAIC,SAAQ;AAEb,uBAAQ,KAAM;AACb,2BAASA,SAAS,CAAE;AAIpB,sBAAK,OAAO,WACXD,QAAO,QAASA,QAAO,SAAS,OAAO,IAAK,MAAO,GAAG,MAAO,IAAI,IAChE;AACD,gCAAY;AAAA,kBACb;AAAA,gBAGD;AAGA,oBAAK,CAAC,WAAY;AACjB,uBAAK,gBAAgB;AAAA,gBACtB;AACA,uBAAO;AAAA,cACR;AAAA,YACD;AAAA,UACD;AAAA,QACD,CAAE;AAGF,QAAAA,QAAO,KAAM,CAAE,SAAS,UAAW,GAAG,WAAW;AAChD,UAAAA,QAAO,SAAU,IAAK,IAAI;AAAA,YACzB,KAAK,SAAU,MAAM,OAAQ;AAC5B,kBAAK,MAAM,QAAS,KAAM,GAAI;AAC7B,uBAAS,KAAK,UAAUA,QAAO,QAASA,QAAQ,IAAK,EAAE,IAAI,GAAG,KAAM,IAAI;AAAA,cACzE;AAAA,YACD;AAAA,UACD;AACA,cAAK,CAAC,QAAQ,SAAU;AACvB,YAAAA,QAAO,SAAU,IAAK,EAAE,MAAM,SAAU,MAAO;AAC9C,qBAAO,KAAK,aAAc,OAAQ,MAAM,OAAO,OAAO,KAAK;AAAA,YAC5D;AAAA,UACD;AAAA,QACD,CAAE;AAMF,YAAIsD,YAAW/D,QAAO;AAEtB,YAAI,QAAQ,EAAE,MAAM,KAAK,IAAI,EAAE;AAE/B,YAAI,SAAW;AAKf,QAAAS,QAAO,WAAW,SAAUmC,OAAO;AAClC,cAAI,KAAK;AACT,cAAK,CAACA,SAAQ,OAAOA,UAAS,UAAW;AACxC,mBAAO;AAAA,UACR;AAIA,cAAI;AACH,kBAAQ,IAAI5C,QAAO,UAAU,EAAI,gBAAiB4C,OAAM,UAAW;AAAA,UACpE,SAAUrB,IAAI;AAAA,UAAC;AAEf,4BAAkB,OAAO,IAAI,qBAAsB,aAAc,EAAG,CAAE;AACtE,cAAK,CAAC,OAAO,iBAAkB;AAC9B,YAAAd,QAAO,MAAO,mBACb,kBACCA,QAAO,IAAK,gBAAgB,YAAY,SAAU,IAAK;AACtD,qBAAO,GAAG;AAAA,YACX,CAAE,EAAE,KAAM,IAAK,IACfmC,MACA;AAAA,UACH;AACA,iBAAO;AAAA,QACR;AAGA,YAAI,cAAc,mCACjB,0BAA0B,SAAUrB,IAAI;AACvC,UAAAA,GAAE,gBAAgB;AAAA,QACnB;AAED,QAAAd,QAAO,OAAQA,QAAO,OAAO;AAAA,UAE5B,SAAS,SAAU,OAAOmC,OAAM,MAAM,cAAe;AAEpD,gBAAI,GAAG,KAAK,KAAK,YAAY,QAAQ,QAAQ,SAAS,aACrD,YAAY,CAAE,QAAQtC,SAAS,GAC/B,OAAO,OAAO,KAAM,OAAO,MAAO,IAAI,MAAM,OAAO,OACnD,aAAa,OAAO,KAAM,OAAO,WAAY,IAAI,MAAM,UAAU,MAAO,GAAI,IAAI,CAAC;AAElF,kBAAM,cAAc,MAAM,OAAO,QAAQA;AAGzC,gBAAK,KAAK,aAAa,KAAK,KAAK,aAAa,GAAI;AACjD;AAAA,YACD;AAGA,gBAAK,YAAY,KAAM,OAAOG,QAAO,MAAM,SAAU,GAAI;AACxD;AAAA,YACD;AAEA,gBAAK,KAAK,QAAS,GAAI,IAAI,IAAK;AAG/B,2BAAa,KAAK,MAAO,GAAI;AAC7B,qBAAO,WAAW,MAAM;AACxB,yBAAW,KAAK;AAAA,YACjB;AACA,qBAAS,KAAK,QAAS,GAAI,IAAI,KAAK,OAAO;AAG3C,oBAAQ,MAAOA,QAAO,OAAQ,IAC7B,QACA,IAAIA,QAAO,MAAO,MAAM,OAAO,UAAU,YAAY,KAAM;AAG5D,kBAAM,YAAY,eAAe,IAAI;AACrC,kBAAM,YAAY,WAAW,KAAM,GAAI;AACvC,kBAAM,aAAa,MAAM,YACxB,IAAI,OAAQ,YAAY,WAAW,KAAM,eAAgB,IAAI,SAAU,IACvE;AAGD,kBAAM,SAAS;AACf,gBAAK,CAAC,MAAM,QAAS;AACpB,oBAAM,SAAS;AAAA,YAChB;AAGA,YAAAmC,QAAOA,SAAQ,OACd,CAAE,KAAM,IACRnC,QAAO,UAAWmC,OAAM,CAAE,KAAM,CAAE;AAGnC,sBAAUnC,QAAO,MAAM,QAAS,IAAK,KAAK,CAAC;AAC3C,gBAAK,CAAC,gBAAgB,QAAQ,WAAW,QAAQ,QAAQ,MAAO,MAAMmC,KAAK,MAAM,OAAQ;AACxF;AAAA,YACD;AAIA,gBAAK,CAAC,gBAAgB,CAAC,QAAQ,YAAY,CAAC,SAAU,IAAK,GAAI;AAE9D,2BAAa,QAAQ,gBAAgB;AACrC,kBAAK,CAAC,YAAY,KAAM,aAAa,IAAK,GAAI;AAC7C,sBAAM,IAAI;AAAA,cACX;AACA,qBAAQ,KAAK,MAAM,IAAI,YAAa;AACnC,0BAAU,KAAM,GAAI;AACpB,sBAAM;AAAA,cACP;AAGA,kBAAK,SAAU,KAAK,iBAAiBtC,YAAa;AACjD,0BAAU,KAAM,IAAI,eAAe,IAAI,gBAAgBN,OAAO;AAAA,cAC/D;AAAA,YACD;AAGA,gBAAI;AACJ,oBAAU,MAAM,UAAW,GAAI,MAAO,CAAC,MAAM,qBAAqB,GAAI;AACrE,4BAAc;AACd,oBAAM,OAAO,IAAI,IAChB,aACA,QAAQ,YAAY;AAGrB,wBAAW,SAAS,IAAK,KAAK,QAAS,KAAK,uBAAO,OAAQ,IAAK,GAAK,MAAM,IAAK,KAC/E,SAAS,IAAK,KAAK,QAAS;AAC7B,kBAAK,QAAS;AACb,uBAAO,MAAO,KAAK4C,KAAK;AAAA,cACzB;AAGA,uBAAS,UAAU,IAAK,MAAO;AAC/B,kBAAK,UAAU,OAAO,SAAS,WAAY,GAAI,GAAI;AAClD,sBAAM,SAAS,OAAO,MAAO,KAAKA,KAAK;AACvC,oBAAK,MAAM,WAAW,OAAQ;AAC7B,wBAAM,eAAe;AAAA,gBACtB;AAAA,cACD;AAAA,YACD;AACA,kBAAM,OAAO;AAGb,gBAAK,CAAC,gBAAgB,CAAC,MAAM,mBAAmB,GAAI;AAEnD,mBAAO,CAAC,QAAQ,YACf,QAAQ,SAAS,MAAO,UAAU,IAAI,GAAGA,KAAK,MAAM,UACpD,WAAY,IAAK,GAAI;AAIrB,oBAAK,UAAUxC,YAAY,KAAM,IAAK,CAAE,KAAK,CAAC,SAAU,IAAK,GAAI;AAGhE,wBAAM,KAAM,MAAO;AAEnB,sBAAK,KAAM;AACV,yBAAM,MAAO,IAAI;AAAA,kBAClB;AAGA,kBAAAK,QAAO,MAAM,YAAY;AAEzB,sBAAK,MAAM,qBAAqB,GAAI;AACnC,gCAAY,iBAAkB,MAAM,uBAAwB;AAAA,kBAC7D;AAEA,uBAAM,IAAK,EAAE;AAEb,sBAAK,MAAM,qBAAqB,GAAI;AACnC,gCAAY,oBAAqB,MAAM,uBAAwB;AAAA,kBAChE;AAEA,kBAAAA,QAAO,MAAM,YAAY;AAEzB,sBAAK,KAAM;AACV,yBAAM,MAAO,IAAI;AAAA,kBAClB;AAAA,gBACD;AAAA,cACD;AAAA,YACD;AAEA,mBAAO,MAAM;AAAA,UACd;AAAA;AAAA;AAAA,UAIA,UAAU,SAAU,MAAM,MAAM,OAAQ;AACvC,gBAAIc,KAAId,QAAO;AAAA,cACd,IAAIA,QAAO,MAAM;AAAA,cACjB;AAAA,cACA;AAAA,gBACC;AAAA,gBACA,aAAa;AAAA,cACd;AAAA,YACD;AAEA,YAAAA,QAAO,MAAM,QAASc,IAAG,MAAM,IAAK;AAAA,UACrC;AAAA,QAED,CAAE;AAEF,QAAAd,QAAO,GAAG,OAAQ;AAAA,UAEjB,SAAS,SAAU,MAAMmC,OAAO;AAC/B,mBAAO,KAAK,KAAM,WAAW;AAC5B,cAAAnC,QAAO,MAAM,QAAS,MAAMmC,OAAM,IAAK;AAAA,YACxC,CAAE;AAAA,UACH;AAAA,UACA,gBAAgB,SAAU,MAAMA,OAAO;AACtC,gBAAI,OAAO,KAAM,CAAE;AACnB,gBAAK,MAAO;AACX,qBAAOnC,QAAO,MAAM,QAAS,MAAMmC,OAAM,MAAM,IAAK;AAAA,YACrD;AAAA,UACD;AAAA,QACD,CAAE;AAGF,YACC,WAAW,SACX,QAAQ,UACR,kBAAkB,yCAClB,eAAe;AAEhB,iBAAS,YAAaa,SAAQ,KAAK,aAAa,KAAM;AACrD,cAAI9C;AAEJ,cAAK,MAAM,QAAS,GAAI,GAAI;AAG3B,YAAAF,QAAO,KAAM,KAAK,SAAU,GAAG,GAAI;AAClC,kBAAK,eAAe,SAAS,KAAMgD,OAAO,GAAI;AAG7C,oBAAKA,SAAQ,CAAE;AAAA,cAEhB,OAAO;AAGN;AAAA,kBACCA,UAAS,OAAQ,OAAO,MAAM,YAAY,KAAK,OAAO,IAAI,MAAO;AAAA,kBACjE;AAAA,kBACA;AAAA,kBACA;AAAA,gBACD;AAAA,cACD;AAAA,YACD,CAAE;AAAA,UAEH,WAAY,CAAC,eAAejD,QAAQ,GAAI,MAAM,UAAW;AAGxD,iBAAMG,SAAQ,KAAM;AACnB,0BAAa8C,UAAS,MAAM9C,QAAO,KAAK,IAAKA,KAAK,GAAG,aAAa,GAAI;AAAA,YACvE;AAAA,UAED,OAAO;AAGN,gBAAK8C,SAAQ,GAAI;AAAA,UAClB;AAAA,QACD;AAIA,QAAAhD,QAAO,QAAQ,SAAUQ,IAAG,aAAc;AACzC,cAAIwC,SACHO,KAAI,CAAC,GACL,MAAM,SAAU,KAAK,iBAAkB;AAGtC,gBAAI,QAAQ5D,YAAY,eAAgB,IACvC,gBAAgB,IAChB;AAED,YAAA4D,GAAGA,GAAE,MAAO,IAAI,mBAAoB,GAAI,IAAI,MAC3C,mBAAoB,SAAS,OAAO,KAAK,KAAM;AAAA,UACjD;AAED,cAAK/C,MAAK,MAAO;AAChB,mBAAO;AAAA,UACR;AAGA,cAAK,MAAM,QAASA,EAAE,KAAOA,GAAE,UAAU,CAACR,QAAO,cAAeQ,EAAE,GAAM;AAGvE,YAAAR,QAAO,KAAMQ,IAAG,WAAW;AAC1B,kBAAK,KAAK,MAAM,KAAK,KAAM;AAAA,YAC5B,CAAE;AAAA,UAEH,OAAO;AAIN,iBAAMwC,WAAUxC,IAAI;AACnB,0BAAawC,SAAQxC,GAAGwC,OAAO,GAAG,aAAa,GAAI;AAAA,YACpD;AAAA,UACD;AAGA,iBAAOO,GAAE,KAAM,GAAI;AAAA,QACpB;AAEA,QAAAvD,QAAO,GAAG,OAAQ;AAAA,UACjB,WAAW,WAAW;AACrB,mBAAOA,QAAO,MAAO,KAAK,eAAe,CAAE;AAAA,UAC5C;AAAA,UACA,gBAAgB,WAAW;AAC1B,mBAAO,KAAK,IAAK,WAAW;AAG3B,kBAAI,WAAWA,QAAO,KAAM,MAAM,UAAW;AAC7C,qBAAO,WAAWA,QAAO,UAAW,QAAS,IAAI;AAAA,YAClD,CAAE,EAAE,OAAQ,WAAW;AACtB,kBAAI,OAAO,KAAK;AAGhB,qBAAO,KAAK,QAAQ,CAACA,QAAQ,IAAK,EAAE,GAAI,WAAY,KACnD,aAAa,KAAM,KAAK,QAAS,KAAK,CAAC,gBAAgB,KAAM,IAAK,MAChE,KAAK,WAAW,CAAC,eAAe,KAAM,IAAK;AAAA,YAC/C,CAAE,EAAE,IAAK,SAAU,IAAI,MAAO;AAC7B,kBAAI,MAAMA,QAAQ,IAAK,EAAE,IAAI;AAE7B,kBAAK,OAAO,MAAO;AAClB,uBAAO;AAAA,cACR;AAEA,kBAAK,MAAM,QAAS,GAAI,GAAI;AAC3B,uBAAOA,QAAO,IAAK,KAAK,SAAUwD,MAAM;AACvC,yBAAO,EAAE,MAAM,KAAK,MAAM,OAAOA,KAAI,QAAS,OAAO,MAAO,EAAE;AAAA,gBAC/D,CAAE;AAAA,cACH;AAEA,qBAAO,EAAE,MAAM,KAAK,MAAM,OAAO,IAAI,QAAS,OAAO,MAAO,EAAE;AAAA,YAC/D,CAAE,EAAE,IAAI;AAAA,UACT;AAAA,QACD,CAAE;AAGF,YACC,MAAM,QACN,QAAQ,QACR,aAAa,iBACb,WAAW,8BAGX,iBAAiB,6DACjB,aAAa,kBACb,YAAY,SAWZ,aAAa,CAAC,GAOd,aAAa,CAAC,GAGd,WAAW,KAAK,OAAQ,GAAI,GAG5B,eAAe3D,UAAS,cAAe,GAAI;AAE5C,qBAAa,OAAOyD,UAAS;AAG7B,iBAAS,4BAA6B,WAAY;AAGjD,iBAAO,SAAU,oBAAoB,MAAO;AAE3C,gBAAK,OAAO,uBAAuB,UAAW;AAC7C,qBAAO;AACP,mCAAqB;AAAA,YACtB;AAEA,gBAAI,UACH,IAAI,GACJ,YAAY,mBAAmB,YAAY,EAAE,MAAO,aAAc,KAAK,CAAC;AAEzE,gBAAK3D,YAAY,IAAK,GAAI;AAGzB,qBAAU,WAAW,UAAW,GAAI,GAAM;AAGzC,oBAAK,SAAU,CAAE,MAAM,KAAM;AAC5B,6BAAW,SAAS,MAAO,CAAE,KAAK;AAClC,mBAAE,UAAW,QAAS,IAAI,UAAW,QAAS,KAAK,CAAC,GAAI,QAAS,IAAK;AAAA,gBAGvE,OAAO;AACN,mBAAE,UAAW,QAAS,IAAI,UAAW,QAAS,KAAK,CAAC,GAAI,KAAM,IAAK;AAAA,gBACpE;AAAA,cACD;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAGA,iBAAS,8BAA+B,WAAWM,UAAS,iBAAiB,OAAQ;AAEpF,cAAI,YAAY,CAAC,GAChB,mBAAqB,cAAc;AAEpC,mBAAS,QAAS,UAAW;AAC5B,gBAAI;AACJ,sBAAW,QAAS,IAAI;AACxB,YAAAD,QAAO,KAAM,UAAW,QAAS,KAAK,CAAC,GAAG,SAAU,GAAG,oBAAqB;AAC3E,kBAAI,sBAAsB,mBAAoBC,UAAS,iBAAiB,KAAM;AAC9E,kBAAK,OAAO,wBAAwB,YACnC,CAAC,oBAAoB,CAAC,UAAW,mBAAoB,GAAI;AAEzD,gBAAAA,SAAQ,UAAU,QAAS,mBAAoB;AAC/C,wBAAS,mBAAoB;AAC7B,uBAAO;AAAA,cACR,WAAY,kBAAmB;AAC9B,uBAAO,EAAG,WAAW;AAAA,cACtB;AAAA,YACD,CAAE;AACF,mBAAO;AAAA,UACR;AAEA,iBAAO,QAASA,SAAQ,UAAW,CAAE,CAAE,KAAK,CAAC,UAAW,GAAI,KAAK,QAAS,GAAI;AAAA,QAC/E;AAKA,iBAAS,WAAY,QAAQ,KAAM;AAClC,cAAI,KAAK,MACR,cAAcD,QAAO,aAAa,eAAe,CAAC;AAEnD,eAAM,OAAO,KAAM;AAClB,gBAAK,IAAK,GAAI,MAAM,QAAY;AAC/B,eAAE,YAAa,GAAI,IAAI,SAAW,SAAU,OAAO,CAAC,IAAS,GAAI,IAAI,IAAK,GAAI;AAAA,YAC/E;AAAA,UACD;AACA,cAAK,MAAO;AACX,YAAAA,QAAO,OAAQ,MAAM,QAAQ,IAAK;AAAA,UACnC;AAEA,iBAAO;AAAA,QACR;AAMA,iBAAS,oBAAqBuD,IAAG,OAAO,WAAY;AAEnD,cAAI,IAAI,MAAM,eAAe,eAC5B,WAAWA,GAAE,UACb,YAAYA,GAAE;AAGf,iBAAQ,UAAW,CAAE,MAAM,KAAM;AAChC,sBAAU,MAAM;AAChB,gBAAK,OAAO,QAAY;AACvB,mBAAKA,GAAE,YAAY,MAAM,kBAAmB,cAAe;AAAA,YAC5D;AAAA,UACD;AAGA,cAAK,IAAK;AACT,iBAAM,QAAQ,UAAW;AACxB,kBAAK,SAAU,IAAK,KAAK,SAAU,IAAK,EAAE,KAAM,EAAG,GAAI;AACtD,0BAAU,QAAS,IAAK;AACxB;AAAA,cACD;AAAA,YACD;AAAA,UACD;AAGA,cAAK,UAAW,CAAE,KAAK,WAAY;AAClC,4BAAgB,UAAW,CAAE;AAAA,UAC9B,OAAO;AAGN,iBAAM,QAAQ,WAAY;AACzB,kBAAK,CAAC,UAAW,CAAE,KAAKA,GAAE,WAAY,OAAO,MAAM,UAAW,CAAE,CAAE,GAAI;AACrE,gCAAgB;AAChB;AAAA,cACD;AACA,kBAAK,CAAC,eAAgB;AACrB,gCAAgB;AAAA,cACjB;AAAA,YACD;AAGA,4BAAgB,iBAAiB;AAAA,UAClC;AAKA,cAAK,eAAgB;AACpB,gBAAK,kBAAkB,UAAW,CAAE,GAAI;AACvC,wBAAU,QAAS,aAAc;AAAA,YAClC;AACA,mBAAO,UAAW,aAAc;AAAA,UACjC;AAAA,QACD;AAKA,iBAAS,YAAaA,IAAG,UAAU,OAAO,WAAY;AACrD,cAAI,OAAO,SAAS,MAAM,KAAKE,OAC9B,aAAa,CAAC,GAGd,YAAYF,GAAE,UAAU,MAAM;AAG/B,cAAK,UAAW,CAAE,GAAI;AACrB,iBAAM,QAAQA,GAAE,YAAa;AAC5B,yBAAY,KAAK,YAAY,CAAE,IAAIA,GAAE,WAAY,IAAK;AAAA,YACvD;AAAA,UACD;AAEA,oBAAU,UAAU,MAAM;AAG1B,iBAAQ,SAAU;AAEjB,gBAAKA,GAAE,eAAgB,OAAQ,GAAI;AAClC,oBAAOA,GAAE,eAAgB,OAAQ,CAAE,IAAI;AAAA,YACxC;AAGA,gBAAK,CAACE,SAAQ,aAAaF,GAAE,YAAa;AACzC,yBAAWA,GAAE,WAAY,UAAUA,GAAE,QAAS;AAAA,YAC/C;AAEA,YAAAE,QAAO;AACP,sBAAU,UAAU,MAAM;AAE1B,gBAAK,SAAU;AAGd,kBAAK,YAAY,KAAM;AAEtB,0BAAUA;AAAA,cAGX,WAAYA,UAAS,OAAOA,UAAS,SAAU;AAG9C,uBAAO,WAAYA,QAAO,MAAM,OAAQ,KAAK,WAAY,OAAO,OAAQ;AAGxE,oBAAK,CAAC,MAAO;AACZ,uBAAM,SAAS,YAAa;AAG3B,0BAAM,MAAM,MAAO,GAAI;AACvB,wBAAK,IAAK,CAAE,MAAM,SAAU;AAG3B,6BAAO,WAAYA,QAAO,MAAM,IAAK,CAAE,CAAE,KACxC,WAAY,OAAO,IAAK,CAAE,CAAE;AAC7B,0BAAK,MAAO;AAGX,4BAAK,SAAS,MAAO;AACpB,iCAAO,WAAY,KAAM;AAAA,wBAG1B,WAAY,WAAY,KAAM,MAAM,MAAO;AAC1C,oCAAU,IAAK,CAAE;AACjB,oCAAU,QAAS,IAAK,CAAE,CAAE;AAAA,wBAC7B;AACA;AAAA,sBACD;AAAA,oBACD;AAAA,kBACD;AAAA,gBACD;AAGA,oBAAK,SAAS,MAAO;AAGpB,sBAAK,QAAQF,GAAE,QAAS;AACvB,+BAAW,KAAM,QAAS;AAAA,kBAC3B,OAAO;AACN,wBAAI;AACH,iCAAW,KAAM,QAAS;AAAA,oBAC3B,SAAUzC,IAAI;AACb,6BAAO;AAAA,wBACN,OAAO;AAAA,wBACP,OAAO,OAAOA,KAAI,wBAAwB2C,QAAO,SAAS;AAAA,sBAC3D;AAAA,oBACD;AAAA,kBACD;AAAA,gBACD;AAAA,cACD;AAAA,YACD;AAAA,UACD;AAEA,iBAAO,EAAE,OAAO,WAAW,MAAM,SAAS;AAAA,QAC3C;AAEA,QAAAzD,QAAO,OAAQ;AAAA;AAAA,UAGd,QAAQ;AAAA;AAAA,UAGR,cAAc,CAAC;AAAA,UACf,MAAM,CAAC;AAAA,UAEP,cAAc;AAAA,YACb,KAAKsD,UAAS;AAAA,YACd,MAAM;AAAA,YACN,SAAS,eAAe,KAAMA,UAAS,QAAS;AAAA,YAChD,QAAQ;AAAA,YACR,aAAa;AAAA,YACb,OAAO;AAAA,YACP,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAcb,SAAS;AAAA,cACR,KAAK;AAAA,cACL,MAAM;AAAA,cACN,MAAM;AAAA,cACN,KAAK;AAAA,cACL,MAAM;AAAA,YACP;AAAA,YAEA,UAAU;AAAA,cACT,KAAK;AAAA,cACL,MAAM;AAAA,cACN,MAAM;AAAA,YACP;AAAA,YAEA,gBAAgB;AAAA,cACf,KAAK;AAAA,cACL,MAAM;AAAA,cACN,MAAM;AAAA,YACP;AAAA;AAAA;AAAA,YAIA,YAAY;AAAA;AAAA,cAGX,UAAU;AAAA;AAAA,cAGV,aAAa;AAAA;AAAA,cAGb,aAAa,KAAK;AAAA;AAAA,cAGlB,YAAYtD,QAAO;AAAA,YACpB;AAAA;AAAA;AAAA;AAAA;AAAA,YAMA,aAAa;AAAA,cACZ,KAAK;AAAA,cACL,SAAS;AAAA,YACV;AAAA,UACD;AAAA;AAAA;AAAA;AAAA,UAKA,WAAW,SAAU,QAAQ0D,WAAW;AACvC,mBAAOA;AAAA;AAAA,cAGN,WAAY,WAAY,QAAQ1D,QAAO,YAAa,GAAG0D,SAAS;AAAA;AAAA;AAAA,cAGhE,WAAY1D,QAAO,cAAc,MAAO;AAAA;AAAA,UAC1C;AAAA,UAEA,eAAe,4BAA6B,UAAW;AAAA,UACvD,eAAe,4BAA6B,UAAW;AAAA;AAAA,UAGvD,MAAM,SAAU,KAAKC,UAAU;AAG9B,gBAAK,OAAO,QAAQ,UAAW;AAC9B,cAAAA,WAAU;AACV,oBAAM;AAAA,YACP;AAGA,YAAAA,WAAUA,YAAW,CAAC;AAEtB,gBAAI,WAGH,UAGA,uBACA,iBAGA,cAGA,WAGA0D,YAGA,aAGA,GAGA,UAGAJ,KAAIvD,QAAO,UAAW,CAAC,GAAGC,QAAQ,GAGlC,kBAAkBsD,GAAE,WAAWA,IAG/B,qBAAqBA,GAAE,YACpB,gBAAgB,YAAY,gBAAgB,UAC9CvD,QAAQ,eAAgB,IACxBA,QAAO,OAGR,WAAWA,QAAO,SAAS,GAC3B,mBAAmBA,QAAO,UAAW,aAAc,GAGnD,aAAauD,GAAE,cAAc,CAAC,GAG9B,iBAAiB,CAAC,GAClB,sBAAsB,CAAC,GAGvB,WAAW,YAGX,QAAQ;AAAA,cACP,YAAY;AAAA;AAAA,cAGZ,mBAAmB,SAAU,KAAM;AAClC,oBAAIvC;AACJ,oBAAK2C,YAAY;AAChB,sBAAK,CAAC,iBAAkB;AACvB,sCAAkB,CAAC;AACnB,2BAAU3C,SAAQ,SAAS,KAAM,qBAAsB,GAAM;AAC5D,sCAAiBA,OAAO,CAAE,EAAE,YAAY,IAAI,GAAI,KAC7C,gBAAiBA,OAAO,CAAE,EAAE,YAAY,IAAI,GAAI,KAAK,CAAC,GACtD,OAAQA,OAAO,CAAE,CAAE;AAAA,oBACvB;AAAA,kBACD;AACA,kBAAAA,SAAQ,gBAAiB,IAAI,YAAY,IAAI,GAAI;AAAA,gBAClD;AACA,uBAAOA,UAAS,OAAO,OAAOA,OAAM,KAAM,IAAK;AAAA,cAChD;AAAA;AAAA,cAGA,uBAAuB,WAAW;AACjC,uBAAO2C,aAAY,wBAAwB;AAAA,cAC5C;AAAA;AAAA,cAGA,kBAAkB,SAAUzD,OAAM,OAAQ;AACzC,oBAAKyD,cAAa,MAAO;AACxB,kBAAAzD,QAAO,oBAAqBA,MAAK,YAAY,CAAE,IAC9C,oBAAqBA,MAAK,YAAY,CAAE,KAAKA;AAC9C,iCAAgBA,KAAK,IAAI;AAAA,gBAC1B;AACA,uBAAO;AAAA,cACR;AAAA;AAAA,cAGA,kBAAkB,SAAU,MAAO;AAClC,oBAAKyD,cAAa,MAAO;AACxB,kBAAAJ,GAAE,WAAW;AAAA,gBACd;AACA,uBAAO;AAAA,cACR;AAAA;AAAA,cAGA,YAAY,SAAUjC,MAAM;AAC3B,oBAAI;AACJ,oBAAKA,MAAM;AACV,sBAAKqC,YAAY;AAGhB,0BAAM,OAAQrC,KAAK,MAAM,MAAO,CAAE;AAAA,kBACnC,OAAO;AAGN,yBAAM,QAAQA,MAAM;AACnB,iCAAY,IAAK,IAAI,CAAE,WAAY,IAAK,GAAGA,KAAK,IAAK,CAAE;AAAA,oBACxD;AAAA,kBACD;AAAA,gBACD;AACA,uBAAO;AAAA,cACR;AAAA;AAAA,cAGA,OAAO,SAAU,YAAa;AAC7B,oBAAI,YAAY,cAAc;AAC9B,oBAAK,WAAY;AAChB,4BAAU,MAAO,SAAU;AAAA,gBAC5B;AACA,qBAAM,GAAG,SAAU;AACnB,uBAAO;AAAA,cACR;AAAA,YACD;AAGD,qBAAS,QAAS,KAAM;AAKxB,YAAAiC,GAAE,QAAU,OAAOA,GAAE,OAAOD,UAAS,QAAS,IAC5C,QAAS,WAAWA,UAAS,WAAW,IAAK;AAG/C,YAAAC,GAAE,OAAOtD,SAAQ,UAAUA,SAAQ,QAAQsD,GAAE,UAAUA,GAAE;AAGzD,YAAAA,GAAE,aAAcA,GAAE,YAAY,KAAM,YAAY,EAAE,MAAO,aAAc,KAAK,CAAE,EAAG;AAGjF,gBAAKA,GAAE,eAAe,MAAO;AAC5B,0BAAY1D,UAAS,cAAe,GAAI;AAKxC,kBAAI;AACH,0BAAU,OAAO0D,GAAE;AAInB,0BAAU,OAAO,UAAU;AAC3B,gBAAAA,GAAE,cAAc,aAAa,WAAW,OAAO,aAAa,SAC3D,UAAU,WAAW,OAAO,UAAU;AAAA,cACxC,SAAUzC,IAAI;AAIb,gBAAAyC,GAAE,cAAc;AAAA,cACjB;AAAA,YACD;AAGA,gBAAKA,GAAE,QAAQA,GAAE,eAAe,OAAOA,GAAE,SAAS,UAAW;AAC5D,cAAAA,GAAE,OAAOvD,QAAO,MAAOuD,GAAE,MAAMA,GAAE,WAAY;AAAA,YAC9C;AAGA,0CAA+B,YAAYA,IAAGtD,UAAS,KAAM;AAG7D,gBAAK0D,YAAY;AAChB,qBAAO;AAAA,YACR;AAIA,0BAAc3D,QAAO,SAASuD,GAAE;AAGhC,gBAAK,eAAevD,QAAO,aAAa,GAAI;AAC3C,cAAAA,QAAO,MAAM,QAAS,WAAY;AAAA,YACnC;AAGA,YAAAuD,GAAE,OAAOA,GAAE,KAAK,YAAY;AAG5B,YAAAA,GAAE,aAAa,CAAC,WAAW,KAAMA,GAAE,IAAK;AAKxC,uBAAWA,GAAE,IAAI,QAAS,OAAO,EAAG;AAGpC,gBAAK,CAACA,GAAE,YAAa;AAGpB,yBAAWA,GAAE,IAAI,MAAO,SAAS,MAAO;AAGxC,kBAAKA,GAAE,SAAUA,GAAE,eAAe,OAAOA,GAAE,SAAS,WAAa;AAChE,6BAAc,OAAO,KAAM,QAAS,IAAI,MAAM,OAAQA,GAAE;AAGxD,uBAAOA,GAAE;AAAA,cACV;AAGA,kBAAKA,GAAE,UAAU,OAAQ;AACxB,2BAAW,SAAS,QAAS,YAAY,IAAK;AAC9C,4BAAa,OAAO,KAAM,QAAS,IAAI,MAAM,OAAQ,OAAS,MAAM,SACnE;AAAA,cACF;AAGA,cAAAA,GAAE,MAAM,WAAW;AAAA,YAGpB,WAAYA,GAAE,QAAQA,GAAE,gBACrBA,GAAE,eAAe,IAAK,QAAS,mCAAoC,MAAM,GAAI;AAC/E,cAAAA,GAAE,OAAOA,GAAE,KAAK,QAAS,KAAK,GAAI;AAAA,YACnC;AAGA,gBAAKA,GAAE,YAAa;AACnB,kBAAKvD,QAAO,aAAc,QAAS,GAAI;AACtC,sBAAM,iBAAkB,qBAAqBA,QAAO,aAAc,QAAS,CAAE;AAAA,cAC9E;AACA,kBAAKA,QAAO,KAAM,QAAS,GAAI;AAC9B,sBAAM,iBAAkB,iBAAiBA,QAAO,KAAM,QAAS,CAAE;AAAA,cAClE;AAAA,YACD;AAGA,gBAAKuD,GAAE,QAAQA,GAAE,cAAcA,GAAE,gBAAgB,SAAStD,SAAQ,aAAc;AAC/E,oBAAM,iBAAkB,gBAAgBsD,GAAE,WAAY;AAAA,YACvD;AAGA,kBAAM;AAAA,cACL;AAAA,cACAA,GAAE,UAAW,CAAE,KAAKA,GAAE,QAASA,GAAE,UAAW,CAAE,CAAE,IAC/CA,GAAE,QAASA,GAAE,UAAW,CAAE,CAAE,KACzBA,GAAE,UAAW,CAAE,MAAM,MAAM,OAAO,WAAW,aAAa,MAC7DA,GAAE,QAAS,GAAI;AAAA,YACjB;AAGA,iBAAM,KAAKA,GAAE,SAAU;AACtB,oBAAM,iBAAkB,GAAGA,GAAE,QAAS,CAAE,CAAE;AAAA,YAC3C;AAGA,gBAAKA,GAAE,eACJA,GAAE,WAAW,KAAM,iBAAiB,OAAOA,EAAE,MAAM,SAASI,aAAc;AAG5E,qBAAO,MAAM,MAAM;AAAA,YACpB;AAGA,uBAAW;AAGX,6BAAiB,IAAKJ,GAAE,QAAS;AACjC,kBAAM,KAAMA,GAAE,OAAQ;AACtB,kBAAM,KAAMA,GAAE,KAAM;AAGpB,wBAAY,8BAA+B,YAAYA,IAAGtD,UAAS,KAAM;AAGzE,gBAAK,CAAC,WAAY;AACjB,mBAAM,IAAI,cAAe;AAAA,YAC1B,OAAO;AACN,oBAAM,aAAa;AAGnB,kBAAK,aAAc;AAClB,mCAAmB,QAAS,YAAY,CAAE,OAAOsD,EAAE,CAAE;AAAA,cACtD;AAGA,kBAAKI,YAAY;AAChB,uBAAO;AAAA,cACR;AAGA,kBAAKJ,GAAE,SAASA,GAAE,UAAU,GAAI;AAC/B,+BAAehE,QAAO,WAAY,WAAW;AAC5C,wBAAM,MAAO,SAAU;AAAA,gBACxB,GAAGgE,GAAE,OAAQ;AAAA,cACd;AAEA,kBAAI;AACH,gBAAAI,aAAY;AACZ,0BAAU,KAAM,gBAAgB,IAAK;AAAA,cACtC,SAAU7C,IAAI;AAGb,oBAAK6C,YAAY;AAChB,wBAAM7C;AAAA,gBACP;AAGA,qBAAM,IAAIA,EAAE;AAAA,cACb;AAAA,YACD;AAGA,qBAAS,KAAM,QAAQ,kBAAkB,WAAW,SAAU;AAC7D,kBAAI,WAAW,SAAS,OAAO,UAAU,UACxC,aAAa;AAGd,kBAAK6C,YAAY;AAChB;AAAA,cACD;AAEA,cAAAA,aAAY;AAGZ,kBAAK,cAAe;AACnB,gBAAApE,QAAO,aAAc,YAAa;AAAA,cACnC;AAIA,0BAAY;AAGZ,sCAAwB,WAAW;AAGnC,oBAAM,aAAa,SAAS,IAAI,IAAI;AAGpC,0BAAY,UAAU,OAAO,SAAS,OAAO,WAAW;AAGxD,kBAAK,WAAY;AAChB,2BAAW,oBAAqBgE,IAAG,OAAO,SAAU;AAAA,cACrD;AAGA,kBAAK,CAAC,aACLvD,QAAO,QAAS,UAAUuD,GAAE,SAAU,IAAI,MAC1CvD,QAAO,QAAS,QAAQuD,GAAE,SAAU,IAAI,GAAI;AAC5C,gBAAAA,GAAE,WAAY,aAAc,IAAI,WAAW;AAAA,gBAAC;AAAA,cAC7C;AAGA,yBAAW,YAAaA,IAAG,UAAU,OAAO,SAAU;AAGtD,kBAAK,WAAY;AAGhB,oBAAKA,GAAE,YAAa;AACnB,6BAAW,MAAM,kBAAmB,eAAgB;AACpD,sBAAK,UAAW;AACf,oBAAAvD,QAAO,aAAc,QAAS,IAAI;AAAA,kBACnC;AACA,6BAAW,MAAM,kBAAmB,MAAO;AAC3C,sBAAK,UAAW;AACf,oBAAAA,QAAO,KAAM,QAAS,IAAI;AAAA,kBAC3B;AAAA,gBACD;AAGA,oBAAK,WAAW,OAAOuD,GAAE,SAAS,QAAS;AAC1C,+BAAa;AAAA,gBAGd,WAAY,WAAW,KAAM;AAC5B,+BAAa;AAAA,gBAGd,OAAO;AACN,+BAAa,SAAS;AACtB,4BAAU,SAAS;AACnB,0BAAQ,SAAS;AACjB,8BAAY,CAAC;AAAA,gBACd;AAAA,cACD,OAAO;AAGN,wBAAQ;AACR,oBAAK,UAAU,CAAC,YAAa;AAC5B,+BAAa;AACb,sBAAK,SAAS,GAAI;AACjB,6BAAS;AAAA,kBACV;AAAA,gBACD;AAAA,cACD;AAGA,oBAAM,SAAS;AACf,oBAAM,cAAe,oBAAoB,cAAe;AAGxD,kBAAK,WAAY;AAChB,yBAAS,YAAa,iBAAiB,CAAE,SAAS,YAAY,KAAM,CAAE;AAAA,cACvE,OAAO;AACN,yBAAS,WAAY,iBAAiB,CAAE,OAAO,YAAY,KAAM,CAAE;AAAA,cACpE;AAGA,oBAAM,WAAY,UAAW;AAC7B,2BAAa;AAEb,kBAAK,aAAc;AAClB,mCAAmB;AAAA,kBAAS,YAAY,gBAAgB;AAAA,kBACvD,CAAE,OAAOA,IAAG,YAAY,UAAU,KAAM;AAAA,gBAAE;AAAA,cAC5C;AAGA,+BAAiB,SAAU,iBAAiB,CAAE,OAAO,UAAW,CAAE;AAElE,kBAAK,aAAc;AAClB,mCAAmB,QAAS,gBAAgB,CAAE,OAAOA,EAAE,CAAE;AAGzD,oBAAK,CAAG,EAAEvD,QAAO,QAAW;AAC3B,kBAAAA,QAAO,MAAM,QAAS,UAAW;AAAA,gBAClC;AAAA,cACD;AAAA,YACD;AAEA,mBAAO;AAAA,UACR;AAAA,UAEA,SAAS,SAAU,KAAKmC,OAAM,UAAW;AACxC,mBAAOnC,QAAO,IAAK,KAAKmC,OAAM,UAAU,MAAO;AAAA,UAChD;AAAA,UAEA,WAAW,SAAU,KAAK,UAAW;AACpC,mBAAOnC,QAAO,IAAK,KAAK,QAAW,UAAU,QAAS;AAAA,UACvD;AAAA,QACD,CAAE;AAEF,QAAAA,QAAO,KAAM,CAAE,OAAO,MAAO,GAAG,SAAU,IAAI,QAAS;AACtD,UAAAA,QAAQ,MAAO,IAAI,SAAU,KAAKmC,OAAM,UAAU,MAAO;AAGxD,gBAAKxC,YAAYwC,KAAK,GAAI;AACzB,qBAAO,QAAQ;AACf,yBAAWA;AACX,cAAAA,QAAO;AAAA,YACR;AAGA,mBAAOnC,QAAO,KAAMA,QAAO,OAAQ;AAAA,cAClC;AAAA,cACA,MAAM;AAAA,cACN,UAAU;AAAA,cACV,MAAMmC;AAAA,cACN,SAAS;AAAA,YACV,GAAGnC,QAAO,cAAe,GAAI,KAAK,GAAI,CAAE;AAAA,UACzC;AAAA,QACD,CAAE;AAEF,QAAAA,QAAO,cAAe,SAAUuD,IAAI;AACnC,cAAI;AACJ,eAAM,KAAKA,GAAE,SAAU;AACtB,gBAAK,EAAE,YAAY,MAAM,gBAAiB;AACzC,cAAAA,GAAE,cAAcA,GAAE,QAAS,CAAE,KAAK;AAAA,YACnC;AAAA,UACD;AAAA,QACD,CAAE;AAGF,QAAAvD,QAAO,WAAW,SAAU,KAAKC,UAAS,KAAM;AAC/C,iBAAOD,QAAO,KAAM;AAAA,YACnB;AAAA;AAAA,YAGA,MAAM;AAAA,YACN,UAAU;AAAA,YACV,OAAO;AAAA,YACP,OAAO;AAAA,YACP,QAAQ;AAAA;AAAA;AAAA;AAAA,YAKR,YAAY;AAAA,cACX,eAAe,WAAW;AAAA,cAAC;AAAA,YAC5B;AAAA,YACA,YAAY,SAAU,UAAW;AAChC,cAAAA,QAAO,WAAY,UAAUC,UAAS,GAAI;AAAA,YAC3C;AAAA,UACD,CAAE;AAAA,QACH;AAGA,QAAAD,QAAO,GAAG,OAAQ;AAAA,UACjB,SAAS,SAAU,MAAO;AACzB,gBAAI;AAEJ,gBAAK,KAAM,CAAE,GAAI;AAChB,kBAAKL,YAAY,IAAK,GAAI;AACzB,uBAAO,KAAK,KAAM,KAAM,CAAE,CAAE;AAAA,cAC7B;AAGA,qBAAOK,QAAQ,MAAM,KAAM,CAAE,EAAE,aAAc,EAAE,GAAI,CAAE,EAAE,MAAO,IAAK;AAEnE,kBAAK,KAAM,CAAE,EAAE,YAAa;AAC3B,qBAAK,aAAc,KAAM,CAAE,CAAE;AAAA,cAC9B;AAEA,mBAAK,IAAK,WAAW;AACpB,oBAAI,OAAO;AAEX,uBAAQ,KAAK,mBAAoB;AAChC,yBAAO,KAAK;AAAA,gBACb;AAEA,uBAAO;AAAA,cACR,CAAE,EAAE,OAAQ,IAAK;AAAA,YAClB;AAEA,mBAAO;AAAA,UACR;AAAA,UAEA,WAAW,SAAU,MAAO;AAC3B,gBAAKL,YAAY,IAAK,GAAI;AACzB,qBAAO,KAAK,KAAM,SAAU,GAAI;AAC/B,gBAAAK,QAAQ,IAAK,EAAE,UAAW,KAAK,KAAM,MAAM,CAAE,CAAE;AAAA,cAChD,CAAE;AAAA,YACH;AAEA,mBAAO,KAAK,KAAM,WAAW;AAC5B,kBAAI2B,QAAO3B,QAAQ,IAAK,GACvB,WAAW2B,MAAK,SAAS;AAE1B,kBAAK,SAAS,QAAS;AACtB,yBAAS,QAAS,IAAK;AAAA,cAExB,OAAO;AACN,gBAAAA,MAAK,OAAQ,IAAK;AAAA,cACnB;AAAA,YACD,CAAE;AAAA,UACH;AAAA,UAEA,MAAM,SAAU,MAAO;AACtB,gBAAI,iBAAiBhC,YAAY,IAAK;AAEtC,mBAAO,KAAK,KAAM,SAAU,GAAI;AAC/B,cAAAK,QAAQ,IAAK,EAAE,QAAS,iBAAiB,KAAK,KAAM,MAAM,CAAE,IAAI,IAAK;AAAA,YACtE,CAAE;AAAA,UACH;AAAA,UAEA,QAAQ,SAAU,UAAW;AAC5B,iBAAK,OAAQ,QAAS,EAAE,IAAK,MAAO,EAAE,KAAM,WAAW;AACtD,cAAAA,QAAQ,IAAK,EAAE,YAAa,KAAK,UAAW;AAAA,YAC7C,CAAE;AACF,mBAAO;AAAA,UACR;AAAA,QACD,CAAE;AAGF,QAAAA,QAAO,KAAK,QAAQ,SAAS,SAAU,MAAO;AAC7C,iBAAO,CAACA,QAAO,KAAK,QAAQ,QAAS,IAAK;AAAA,QAC3C;AACA,QAAAA,QAAO,KAAK,QAAQ,UAAU,SAAU,MAAO;AAC9C,iBAAO,CAAC,EAAG,KAAK,eAAe,KAAK,gBAAgB,KAAK,eAAe,EAAE;AAAA,QAC3E;AAKA,QAAAA,QAAO,aAAa,MAAM,WAAW;AACpC,cAAI;AACH,mBAAO,IAAIT,QAAO,eAAe;AAAA,UAClC,SAAUuB,IAAI;AAAA,UAAC;AAAA,QAChB;AAEA,YAAI,mBAAmB;AAAA;AAAA,UAGrB,GAAG;AAAA;AAAA;AAAA,UAIH,MAAM;AAAA,QACP,GACA,eAAed,QAAO,aAAa,IAAI;AAExC,gBAAQ,OAAO,CAAC,CAAC,gBAAkB,qBAAqB;AACxD,gBAAQ,OAAO,eAAe,CAAC,CAAC;AAEhC,QAAAA,QAAO,cAAe,SAAUC,UAAU;AACzC,cAAI,UAAU;AAGd,cAAK,QAAQ,QAAQ,gBAAgB,CAACA,SAAQ,aAAc;AAC3D,mBAAO;AAAA,cACN,MAAM,SAAU,SAAS,UAAW;AACnC,oBAAI,GACH,MAAMA,SAAQ,IAAI;AAEnB,oBAAI;AAAA,kBACHA,SAAQ;AAAA,kBACRA,SAAQ;AAAA,kBACRA,SAAQ;AAAA,kBACRA,SAAQ;AAAA,kBACRA,SAAQ;AAAA,gBACT;AAGA,oBAAKA,SAAQ,WAAY;AACxB,uBAAM,KAAKA,SAAQ,WAAY;AAC9B,wBAAK,CAAE,IAAIA,SAAQ,UAAW,CAAE;AAAA,kBACjC;AAAA,gBACD;AAGA,oBAAKA,SAAQ,YAAY,IAAI,kBAAmB;AAC/C,sBAAI,iBAAkBA,SAAQ,QAAS;AAAA,gBACxC;AAOA,oBAAK,CAACA,SAAQ,eAAe,CAAC,QAAS,kBAAmB,GAAI;AAC7D,0BAAS,kBAAmB,IAAI;AAAA,gBACjC;AAGA,qBAAM,KAAK,SAAU;AACpB,sBAAI,iBAAkB,GAAG,QAAS,CAAE,CAAE;AAAA,gBACvC;AAGA,2BAAW,SAAU,MAAO;AAC3B,yBAAO,WAAW;AACjB,wBAAK,UAAW;AACf,iCAAW,gBAAgB,IAAI,SAC9B,IAAI,UAAU,IAAI,UAAU,IAAI,YAC/B,IAAI,qBAAqB;AAE3B,0BAAK,SAAS,SAAU;AACvB,4BAAI,MAAM;AAAA,sBACX,WAAY,SAAS,SAAU;AAK9B,4BAAK,OAAO,IAAI,WAAW,UAAW;AACrC,mCAAU,GAAG,OAAQ;AAAA,wBACtB,OAAO;AACN;AAAA;AAAA,4BAGC,IAAI;AAAA,4BACJ,IAAI;AAAA,0BACL;AAAA,wBACD;AAAA,sBACD,OAAO;AACN;AAAA,0BACC,iBAAkB,IAAI,MAAO,KAAK,IAAI;AAAA,0BACtC,IAAI;AAAA;AAAA;AAAA;AAAA,2BAKF,IAAI,gBAAgB,YAAa,UACnC,OAAO,IAAI,iBAAiB,WAC3B,EAAE,QAAQ,IAAI,SAAS,IACvB,EAAE,MAAM,IAAI,aAAa;AAAA,0BAC1B,IAAI,sBAAsB;AAAA,wBAC3B;AAAA,sBACD;AAAA,oBACD;AAAA,kBACD;AAAA,gBACD;AAGA,oBAAI,SAAS,SAAS;AACtB,gCAAgB,IAAI,UAAU,IAAI,YAAY,SAAU,OAAQ;AAKhE,oBAAK,IAAI,YAAY,QAAY;AAChC,sBAAI,UAAU;AAAA,gBACf,OAAO;AACN,sBAAI,qBAAqB,WAAW;AAGnC,wBAAK,IAAI,eAAe,GAAI;AAM3B,sBAAAV,QAAO,WAAY,WAAW;AAC7B,4BAAK,UAAW;AACf,wCAAc;AAAA,wBACf;AAAA,sBACD,CAAE;AAAA,oBACH;AAAA,kBACD;AAAA,gBACD;AAGA,2BAAW,SAAU,OAAQ;AAE7B,oBAAI;AAGH,sBAAI,KAAMU,SAAQ,cAAcA,SAAQ,QAAQ,IAAK;AAAA,gBACtD,SAAUa,IAAI;AAGb,sBAAK,UAAW;AACf,0BAAMA;AAAA,kBACP;AAAA,gBACD;AAAA,cACD;AAAA,cAEA,OAAO,WAAW;AACjB,oBAAK,UAAW;AACf,2BAAS;AAAA,gBACV;AAAA,cACD;AAAA,YACD;AAAA,UACD;AAAA,QACD,CAAE;AAMF,QAAAd,QAAO,cAAe,SAAUuD,IAAI;AACnC,cAAKA,GAAE,aAAc;AACpB,YAAAA,GAAE,SAAS,SAAS;AAAA,UACrB;AAAA,QACD,CAAE;AAGF,QAAAvD,QAAO,UAAW;AAAA,UACjB,SAAS;AAAA,YACR,QAAQ;AAAA,UAET;AAAA,UACA,UAAU;AAAA,YACT,QAAQ;AAAA,UACT;AAAA,UACA,YAAY;AAAA,YACX,eAAe,SAAU,MAAO;AAC/B,cAAAA,QAAO,WAAY,IAAK;AACxB,qBAAO;AAAA,YACR;AAAA,UACD;AAAA,QACD,CAAE;AAGF,QAAAA,QAAO,cAAe,UAAU,SAAUuD,IAAI;AAC7C,cAAKA,GAAE,UAAU,QAAY;AAC5B,YAAAA,GAAE,QAAQ;AAAA,UACX;AACA,cAAKA,GAAE,aAAc;AACpB,YAAAA,GAAE,OAAO;AAAA,UACV;AAAA,QACD,CAAE;AAGF,QAAAvD,QAAO,cAAe,UAAU,SAAUuD,IAAI;AAG7C,cAAKA,GAAE,eAAeA,GAAE,aAAc;AACrC,gBAAI,QAAQ;AACZ,mBAAO;AAAA,cACN,MAAM,SAAU,GAAG,UAAW;AAC7B,yBAASvD,QAAQ,UAAW,EAC1B,KAAMuD,GAAE,eAAe,CAAC,CAAE,EAC1B,KAAM,EAAE,SAASA,GAAE,eAAe,KAAKA,GAAE,IAAI,CAAE,EAC/C,GAAI,cAAc,WAAW,SAAU,KAAM;AAC7C,yBAAO,OAAO;AACd,6BAAW;AACX,sBAAK,KAAM;AACV,6BAAU,IAAI,SAAS,UAAU,MAAM,KAAK,IAAI,IAAK;AAAA,kBACtD;AAAA,gBACD,CAAE;AAGH,gBAAA1D,UAAS,KAAK,YAAa,OAAQ,CAAE,CAAE;AAAA,cACxC;AAAA,cACA,OAAO,WAAW;AACjB,oBAAK,UAAW;AACf,2BAAS;AAAA,gBACV;AAAA,cACD;AAAA,YACD;AAAA,UACD;AAAA,QACD,CAAE;AAKF,YAAI,eAAe,CAAC,GACnB,SAAS;AAGV,QAAAG,QAAO,UAAW;AAAA,UACjB,OAAO;AAAA,UACP,eAAe,WAAW;AACzB,gBAAI,WAAW,aAAa,IAAI,KAAOA,QAAO,UAAU,MAAQ,MAAM;AACtE,iBAAM,QAAS,IAAI;AACnB,mBAAO;AAAA,UACR;AAAA,QACD,CAAE;AAGF,QAAAA,QAAO,cAAe,cAAc,SAAUuD,IAAG,kBAAkB,OAAQ;AAE1E,cAAI,cAAc,aAAa,mBAC9B,WAAWA,GAAE,UAAU,UAAW,OAAO,KAAMA,GAAE,GAAI,IACpD,QACA,OAAOA,GAAE,SAAS,aACfA,GAAE,eAAe,IACjB,QAAS,mCAAoC,MAAM,KACrD,OAAO,KAAMA,GAAE,IAAK,KAAK;AAI5B,cAAK,YAAYA,GAAE,UAAW,CAAE,MAAM,SAAU;AAG/C,2BAAeA,GAAE,gBAAgB5D,YAAY4D,GAAE,aAAc,IAC5DA,GAAE,cAAc,IAChBA,GAAE;AAGH,gBAAK,UAAW;AACf,cAAAA,GAAG,QAAS,IAAIA,GAAG,QAAS,EAAE,QAAS,QAAQ,OAAO,YAAa;AAAA,YACpE,WAAYA,GAAE,UAAU,OAAQ;AAC/B,cAAAA,GAAE,QAAS,OAAO,KAAMA,GAAE,GAAI,IAAI,MAAM,OAAQA,GAAE,QAAQ,MAAM;AAAA,YACjE;AAGA,YAAAA,GAAE,WAAY,aAAc,IAAI,WAAW;AAC1C,kBAAK,CAAC,mBAAoB;AACzB,gBAAAvD,QAAO,MAAO,eAAe,iBAAkB;AAAA,cAChD;AACA,qBAAO,kBAAmB,CAAE;AAAA,YAC7B;AAGA,YAAAuD,GAAE,UAAW,CAAE,IAAI;AAGnB,0BAAchE,QAAQ,YAAa;AACnC,YAAAA,QAAQ,YAAa,IAAI,WAAW;AACnC,kCAAoB;AAAA,YACrB;AAGA,kBAAM,OAAQ,WAAW;AAGxB,kBAAK,gBAAgB,QAAY;AAChC,gBAAAS,QAAQT,OAAO,EAAE,WAAY,YAAa;AAAA,cAG3C,OAAO;AACN,gBAAAA,QAAQ,YAAa,IAAI;AAAA,cAC1B;AAGA,kBAAKgE,GAAG,YAAa,GAAI;AAGxB,gBAAAA,GAAE,gBAAgB,iBAAiB;AAGnC,6BAAa,KAAM,YAAa;AAAA,cACjC;AAGA,kBAAK,qBAAqB5D,YAAY,WAAY,GAAI;AACrD,4BAAa,kBAAmB,CAAE,CAAE;AAAA,cACrC;AAEA,kCAAoB,cAAc;AAAA,YACnC,CAAE;AAGF,mBAAO;AAAA,UACR;AAAA,QACD,CAAE;AAUF,gBAAQ,qBAAuB,WAAW;AACzC,cAAI,OAAOE,UAAS,eAAe,mBAAoB,EAAG,EAAE;AAC5D,eAAK,YAAY;AACjB,iBAAO,KAAK,WAAW,WAAW;AAAA,QACnC,EAAI;AAOJ,QAAAG,QAAO,YAAY,SAAUmC,OAAM,SAAS,aAAc;AACzD,cAAK,OAAOA,UAAS,UAAW;AAC/B,mBAAO,CAAC;AAAA,UACT;AACA,cAAK,OAAO,YAAY,WAAY;AACnC,0BAAc;AACd,sBAAU;AAAA,UACX;AAEA,cAAI,MAAM,QAAQ;AAElB,cAAK,CAAC,SAAU;AAIf,gBAAK,QAAQ,oBAAqB;AACjC,wBAAUtC,UAAS,eAAe,mBAAoB,EAAG;AAKzD,qBAAO,QAAQ,cAAe,MAAO;AACrC,mBAAK,OAAOA,UAAS,SAAS;AAC9B,sBAAQ,KAAK,YAAa,IAAK;AAAA,YAChC,OAAO;AACN,wBAAUA;AAAA,YACX;AAAA,UACD;AAEA,mBAAS,WAAW,KAAMsC,KAAK;AAC/B,oBAAU,CAAC,eAAe,CAAC;AAG3B,cAAK,QAAS;AACb,mBAAO,CAAE,QAAQ,cAAe,OAAQ,CAAE,CAAE,CAAE;AAAA,UAC/C;AAEA,mBAAS,cAAe,CAAEA,KAAK,GAAG,SAAS,OAAQ;AAEnD,cAAK,WAAW,QAAQ,QAAS;AAChC,YAAAnC,QAAQ,OAAQ,EAAE,OAAO;AAAA,UAC1B;AAEA,iBAAOA,QAAO,MAAO,CAAC,GAAG,OAAO,UAAW;AAAA,QAC5C;AAMA,QAAAA,QAAO,GAAG,OAAO,SAAU,KAAK,QAAQ,UAAW;AAClD,cAAI,UAAU,MAAM,UACnB2B,QAAO,MACP,MAAM,IAAI,QAAS,GAAI;AAExB,cAAK,MAAM,IAAK;AACf,uBAAW,iBAAkB,IAAI,MAAO,GAAI,CAAE;AAC9C,kBAAM,IAAI,MAAO,GAAG,GAAI;AAAA,UACzB;AAGA,cAAKhC,YAAY,MAAO,GAAI;AAG3B,uBAAW;AACX,qBAAS;AAAA,UAGV,WAAY,UAAU,OAAO,WAAW,UAAW;AAClD,mBAAO;AAAA,UACR;AAGA,cAAKgC,MAAK,SAAS,GAAI;AACtB,YAAA3B,QAAO,KAAM;AAAA,cACZ;AAAA;AAAA;AAAA;AAAA,cAKA,MAAM,QAAQ;AAAA,cACd,UAAU;AAAA,cACV,MAAM;AAAA,YACP,CAAE,EAAE,KAAM,SAAU,cAAe;AAGlC,yBAAW;AAEX,cAAA2B,MAAK,KAAM;AAAA;AAAA;AAAA,gBAIV3B,QAAQ,OAAQ,EAAE,OAAQA,QAAO,UAAW,YAAa,CAAE,EAAE,KAAM,QAAS;AAAA;AAAA;AAAA,gBAG5E;AAAA,eAAa;AAAA,YAKf,CAAE,EAAE,OAAQ,YAAY,SAAU,OAAO,QAAS;AACjD,cAAA2B,MAAK,KAAM,WAAW;AACrB,yBAAS,MAAO,MAAM,YAAY,CAAE,MAAM,cAAc,QAAQ,KAAM,CAAE;AAAA,cACzE,CAAE;AAAA,YACH,CAAE;AAAA,UACH;AAEA,iBAAO;AAAA,QACR;AAKA,QAAA3B,QAAO,KAAK,QAAQ,WAAW,SAAU,MAAO;AAC/C,iBAAOA,QAAO,KAAMA,QAAO,QAAQ,SAAU,IAAK;AACjD,mBAAO,SAAS,GAAG;AAAA,UACpB,CAAE,EAAE;AAAA,QACL;AAKA,QAAAA,QAAO,SAAS;AAAA,UACf,WAAW,SAAU,MAAMC,UAAS,GAAI;AACvC,gBAAI,aAAa,SAAS,WAAW,QAAQ,WAAW,YAAY,mBACnE2D,YAAW5D,QAAO,IAAK,MAAM,UAAW,GACxC,UAAUA,QAAQ,IAAK,GACvB,QAAQ,CAAC;AAGV,gBAAK4D,cAAa,UAAW;AAC5B,mBAAK,MAAM,WAAW;AAAA,YACvB;AAEA,wBAAY,QAAQ,OAAO;AAC3B,wBAAY5D,QAAO,IAAK,MAAM,KAAM;AACpC,yBAAaA,QAAO,IAAK,MAAM,MAAO;AACtC,iCAAsB4D,cAAa,cAAcA,cAAa,aAC3D,YAAY,YAAa,QAAS,MAAO,IAAI;AAIhD,gBAAK,mBAAoB;AACxB,4BAAc,QAAQ,SAAS;AAC/B,uBAAS,YAAY;AACrB,wBAAU,YAAY;AAAA,YAEvB,OAAO;AACN,uBAAS,WAAY,SAAU,KAAK;AACpC,wBAAU,WAAY,UAAW,KAAK;AAAA,YACvC;AAEA,gBAAKjE,YAAYM,QAAQ,GAAI;AAG5B,cAAAA,WAAUA,SAAQ,KAAM,MAAM,GAAGD,QAAO,OAAQ,CAAC,GAAG,SAAU,CAAE;AAAA,YACjE;AAEA,gBAAKC,SAAQ,OAAO,MAAO;AAC1B,oBAAM,MAAQA,SAAQ,MAAM,UAAU,MAAQ;AAAA,YAC/C;AACA,gBAAKA,SAAQ,QAAQ,MAAO;AAC3B,oBAAM,OAASA,SAAQ,OAAO,UAAU,OAAS;AAAA,YAClD;AAEA,gBAAK,WAAWA,UAAU;AACzB,cAAAA,SAAQ,MAAM,KAAM,MAAM,KAAM;AAAA,YAEjC,OAAO;AACN,sBAAQ,IAAK,KAAM;AAAA,YACpB;AAAA,UACD;AAAA,QACD;AAEA,QAAAD,QAAO,GAAG,OAAQ;AAAA;AAAA,UAGjB,QAAQ,SAAUC,UAAU;AAG3B,gBAAK,UAAU,QAAS;AACvB,qBAAOA,aAAY,SAClB,OACA,KAAK,KAAM,SAAU,GAAI;AACxB,gBAAAD,QAAO,OAAO,UAAW,MAAMC,UAAS,CAAE;AAAA,cAC3C,CAAE;AAAA,YACJ;AAEA,gBAAI,MAAM,KACT,OAAO,KAAM,CAAE;AAEhB,gBAAK,CAAC,MAAO;AACZ;AAAA,YACD;AAMA,gBAAK,CAAC,KAAK,eAAe,EAAE,QAAS;AACpC,qBAAO,EAAE,KAAK,GAAG,MAAM,EAAE;AAAA,YAC1B;AAGA,mBAAO,KAAK,sBAAsB;AAClC,kBAAM,KAAK,cAAc;AACzB,mBAAO;AAAA,cACN,KAAK,KAAK,MAAM,IAAI;AAAA,cACpB,MAAM,KAAK,OAAO,IAAI;AAAA,YACvB;AAAA,UACD;AAAA;AAAA;AAAA,UAIA,UAAU,WAAW;AACpB,gBAAK,CAAC,KAAM,CAAE,GAAI;AACjB;AAAA,YACD;AAEA,gBAAI,cAAc,QAAQ,KACzB,OAAO,KAAM,CAAE,GACf,eAAe,EAAE,KAAK,GAAG,MAAM,EAAE;AAGlC,gBAAKD,QAAO,IAAK,MAAM,UAAW,MAAM,SAAU;AAGjD,uBAAS,KAAK,sBAAsB;AAAA,YAErC,OAAO;AACN,uBAAS,KAAK,OAAO;AAIrB,oBAAM,KAAK;AACX,6BAAe,KAAK,gBAAgB,IAAI;AACxC,qBAAQ,iBACL,iBAAiB,IAAI,QAAQ,iBAAiB,IAAI,oBACpDA,QAAO,IAAK,cAAc,UAAW,MAAM,UAAW;AAEtD,+BAAe,aAAa;AAAA,cAC7B;AACA,kBAAK,gBAAgB,iBAAiB,QAAQ,aAAa,aAAa,GAAI;AAG3E,+BAAeA,QAAQ,YAAa,EAAE,OAAO;AAC7C,6BAAa,OAAOA,QAAO,IAAK,cAAc,kBAAkB,IAAK;AACrE,6BAAa,QAAQA,QAAO,IAAK,cAAc,mBAAmB,IAAK;AAAA,cACxE;AAAA,YACD;AAGA,mBAAO;AAAA,cACN,KAAK,OAAO,MAAM,aAAa,MAAMA,QAAO,IAAK,MAAM,aAAa,IAAK;AAAA,cACzE,MAAM,OAAO,OAAO,aAAa,OAAOA,QAAO,IAAK,MAAM,cAAc,IAAK;AAAA,YAC9E;AAAA,UACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAYA,cAAc,WAAW;AACxB,mBAAO,KAAK,IAAK,WAAW;AAC3B,kBAAI,eAAe,KAAK;AAExB,qBAAQ,gBAAgBA,QAAO,IAAK,cAAc,UAAW,MAAM,UAAW;AAC7E,+BAAe,aAAa;AAAA,cAC7B;AAEA,qBAAO,gBAAgB;AAAA,YACxB,CAAE;AAAA,UACH;AAAA,QACD,CAAE;AAGF,QAAAA,QAAO,KAAM,EAAE,YAAY,eAAe,WAAW,cAAc,GAAG,SAAU,QAAQ,MAAO;AAC9F,cAAI,MAAM,kBAAkB;AAE5B,UAAAA,QAAO,GAAI,MAAO,IAAI,SAAU,KAAM;AACrC,mBAAO,OAAQ,MAAM,SAAU,MAAM6D,SAAQL,MAAM;AAGlD,kBAAI;AACJ,kBAAK,SAAU,IAAK,GAAI;AACvB,sBAAM;AAAA,cACP,WAAY,KAAK,aAAa,GAAI;AACjC,sBAAM,KAAK;AAAA,cACZ;AAEA,kBAAKA,SAAQ,QAAY;AACxB,uBAAO,MAAM,IAAK,IAAK,IAAI,KAAMK,OAAO;AAAA,cACzC;AAEA,kBAAK,KAAM;AACV,oBAAI;AAAA,kBACH,CAAC,MAAML,OAAM,IAAI;AAAA,kBACjB,MAAMA,OAAM,IAAI;AAAA,gBACjB;AAAA,cAED,OAAO;AACN,qBAAMK,OAAO,IAAIL;AAAA,cAClB;AAAA,YACD,GAAG,QAAQ,KAAK,UAAU,MAAO;AAAA,UAClC;AAAA,QACD,CAAE;AAQF,QAAAxD,QAAO,KAAM,CAAE,OAAO,MAAO,GAAG,SAAU,IAAI,MAAO;AACpD,UAAAA,QAAO,SAAU,IAAK,IAAI;AAAA,YAAc,QAAQ;AAAA,YAC/C,SAAU,MAAM,UAAW;AAC1B,kBAAK,UAAW;AACf,2BAAW,OAAQ,MAAM,IAAK;AAG9B,uBAAO,UAAU,KAAM,QAAS,IAC/BA,QAAQ,IAAK,EAAE,SAAS,EAAG,IAAK,IAAI,OACpC;AAAA,cACF;AAAA,YACD;AAAA,UACD;AAAA,QACD,CAAE;AAIF,QAAAA,QAAO,KAAM,EAAE,QAAQ,UAAU,OAAO,QAAQ,GAAG,SAAUE,OAAM,MAAO;AACzE,UAAAF,QAAO,KAAM;AAAA,YACZ,SAAS,UAAUE;AAAA,YACnB,SAAS;AAAA,YACT,IAAI,UAAUA;AAAA,UACf,GAAG,SAAU,cAAc,UAAW;AAGrC,YAAAF,QAAO,GAAI,QAAS,IAAI,SAAU,QAAQ,OAAQ;AACjD,kBAAI,YAAY,UAAU,WAAY,gBAAgB,OAAO,WAAW,YACvE,QAAQ,iBAAkB,WAAW,QAAQ,UAAU,OAAO,WAAW;AAE1E,qBAAO,OAAQ,MAAM,SAAU,MAAM8D,OAAMhC,QAAQ;AAClD,oBAAI;AAEJ,oBAAK,SAAU,IAAK,GAAI;AAGvB,yBAAO,SAAS,QAAS,OAAQ,MAAM,IACtC,KAAM,UAAU5B,KAAK,IACrB,KAAK,SAAS,gBAAiB,WAAWA,KAAK;AAAA,gBACjD;AAGA,oBAAK,KAAK,aAAa,GAAI;AAC1B,wBAAM,KAAK;AAIX,yBAAO,KAAK;AAAA,oBACX,KAAK,KAAM,WAAWA,KAAK;AAAA,oBAAG,IAAK,WAAWA,KAAK;AAAA,oBACnD,KAAK,KAAM,WAAWA,KAAK;AAAA,oBAAG,IAAK,WAAWA,KAAK;AAAA,oBACnD,IAAK,WAAWA,KAAK;AAAA,kBACtB;AAAA,gBACD;AAEA,uBAAO4B,WAAU;AAAA;AAAA,kBAGhB9B,QAAO,IAAK,MAAM8D,OAAM,KAAM;AAAA;AAAA;AAAA,kBAG9B9D,QAAO,MAAO,MAAM8D,OAAMhC,QAAO,KAAM;AAAA;AAAA,cACzC,GAAG,MAAM,YAAY,SAAS,QAAW,SAAU;AAAA,YACpD;AAAA,UACD,CAAE;AAAA,QACH,CAAE;AAGF,QAAA9B,QAAO,KAAM;AAAA,UACZ;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACD,GAAG,SAAU,IAAI,MAAO;AACvB,UAAAA,QAAO,GAAI,IAAK,IAAI,SAAU,IAAK;AAClC,mBAAO,KAAK,GAAI,MAAM,EAAG;AAAA,UAC1B;AAAA,QACD,CAAE;AAKF,QAAAA,QAAO,GAAG,OAAQ;AAAA,UAEjB,MAAM,SAAU,OAAOmC,OAAM,IAAK;AACjC,mBAAO,KAAK,GAAI,OAAO,MAAMA,OAAM,EAAG;AAAA,UACvC;AAAA,UACA,QAAQ,SAAU,OAAO,IAAK;AAC7B,mBAAO,KAAK,IAAK,OAAO,MAAM,EAAG;AAAA,UAClC;AAAA,UAEA,UAAU,SAAU,UAAU,OAAOA,OAAM,IAAK;AAC/C,mBAAO,KAAK,GAAI,OAAO,UAAUA,OAAM,EAAG;AAAA,UAC3C;AAAA,UACA,YAAY,SAAU,UAAU,OAAO,IAAK;AAG3C,mBAAO,UAAU,WAAW,IAC3B,KAAK,IAAK,UAAU,IAAK,IACzB,KAAK,IAAK,OAAO,YAAY,MAAM,EAAG;AAAA,UACxC;AAAA,UAEA,OAAO,SAAU,QAAQ,OAAQ;AAChC,mBAAO,KAAK,WAAY,MAAO,EAAE,WAAY,SAAS,MAAO;AAAA,UAC9D;AAAA,QACD,CAAE;AAEF,QAAAnC,QAAO;AAAA,UACJ,wLAE0D,MAAO,GAAI;AAAA,UACvE,SAAU,IAAIE,OAAO;AAGpB,YAAAF,QAAO,GAAIE,KAAK,IAAI,SAAUiC,OAAM,IAAK;AACxC,qBAAO,UAAU,SAAS,IACzB,KAAK,GAAIjC,OAAM,MAAMiC,OAAM,EAAG,IAC9B,KAAK,QAASjC,KAAK;AAAA,YACrB;AAAA,UACD;AAAA,QACD;AASA,YAAI,QAAQ;AAMZ,QAAAF,QAAO,QAAQ,SAAU,IAAI,SAAU;AACtC,cAAI,KAAK,MAAM;AAEf,cAAK,OAAO,YAAY,UAAW;AAClC,kBAAM,GAAI,OAAQ;AAClB,sBAAU;AACV,iBAAK;AAAA,UACN;AAIA,cAAK,CAACL,YAAY,EAAG,GAAI;AACxB,mBAAO;AAAA,UACR;AAGA,iBAAOH,OAAM,KAAM,WAAW,CAAE;AAChC,kBAAQ,WAAW;AAClB,mBAAO,GAAG,MAAO,WAAW,MAAM,KAAK,OAAQA,OAAM,KAAM,SAAU,CAAE,CAAE;AAAA,UAC1E;AAGA,gBAAM,OAAO,GAAG,OAAO,GAAG,QAAQQ,QAAO;AAEzC,iBAAO;AAAA,QACR;AAEA,QAAAA,QAAO,YAAY,SAAU,MAAO;AACnC,cAAK,MAAO;AACX,YAAAA,QAAO;AAAA,UACR,OAAO;AACN,YAAAA,QAAO,MAAO,IAAK;AAAA,UACpB;AAAA,QACD;AACA,QAAAA,QAAO,UAAU,MAAM;AACvB,QAAAA,QAAO,YAAY,KAAK;AACxB,QAAAA,QAAO,WAAW;AAClB,QAAAA,QAAO,aAAaL;AACpB,QAAAK,QAAO,WAAW;AAClB,QAAAA,QAAO,YAAY;AACnB,QAAAA,QAAO,OAAOD;AAEd,QAAAC,QAAO,MAAM,KAAK;AAElB,QAAAA,QAAO,YAAY,SAAU,KAAM;AAKlC,cAAI,OAAOA,QAAO,KAAM,GAAI;AAC5B,kBAAS,SAAS,YAAY,SAAS;AAAA;AAAA;AAAA,UAKtC,CAAC,MAAO,MAAM,WAAY,GAAI,CAAE;AAAA,QAClC;AAEA,QAAAA,QAAO,OAAO,SAAU,MAAO;AAC9B,iBAAO,QAAQ,OACd,MACE,OAAO,IAAK,QAAS,OAAO,IAAK;AAAA,QACrC;AAiBA,YAAK,OAAO,WAAW,cAAc,OAAO,KAAM;AACjD,iBAAQ,UAAU,CAAC,GAAG,WAAW;AAChC,mBAAOA;AAAA,UACR,CAAE;AAAA,QACH;AAKA,YAGC,UAAUT,QAAO,QAGjB,KAAKA,QAAO;AAEb,QAAAS,QAAO,aAAa,SAAU,MAAO;AACpC,cAAKT,QAAO,MAAMS,SAAS;AAC1B,YAAAT,QAAO,IAAI;AAAA,UACZ;AAEA,cAAK,QAAQA,QAAO,WAAWS,SAAS;AACvC,YAAAT,QAAO,SAAS;AAAA,UACjB;AAEA,iBAAOS;AAAA,QACR;AAKA,YAAK,OAAO,aAAa,aAAc;AACtC,UAAAT,QAAO,SAASA,QAAO,IAAIS;AAAA,QAC5B;AAKA,eAAOA;AAAA,MACP,CAAE;AAAA;AAAA;;;AC/8UF;AAAA;AAAA;AAYA,UAAI,MAAuC;AACzC,SAAC,WAAW;AAEJ;AAGV,cACE,OAAO,mCAAmC,eAC1C,OAAO,+BAA+B,gCACpC,YACF;AACA,2CAA+B,4BAA4B,IAAI,MAAM,CAAC;AAAA,UACxE;AACU,cAAI,eAAe;AAM7B,cAAI,qBAAqB,OAAO,IAAI,eAAe;AACnD,cAAI,oBAAoB,OAAO,IAAI,cAAc;AACjD,cAAI,sBAAsB,OAAO,IAAI,gBAAgB;AACrD,cAAI,yBAAyB,OAAO,IAAI,mBAAmB;AAC3D,cAAI,sBAAsB,OAAO,IAAI,gBAAgB;AACrD,cAAI,sBAAsB,OAAO,IAAI,gBAAgB;AACrD,cAAI,qBAAqB,OAAO,IAAI,eAAe;AACnD,cAAI,yBAAyB,OAAO,IAAI,mBAAmB;AAC3D,cAAI,sBAAsB,OAAO,IAAI,gBAAgB;AACrD,cAAI,2BAA2B,OAAO,IAAI,qBAAqB;AAC/D,cAAI,kBAAkB,OAAO,IAAI,YAAY;AAC7C,cAAI,kBAAkB,OAAO,IAAI,YAAY;AAC7C,cAAI,uBAAuB,OAAO,IAAI,iBAAiB;AACvD,cAAI,wBAAwB,OAAO;AACnC,cAAI,uBAAuB;AAC3B,mBAAS,cAAc,eAAe;AACpC,gBAAI,kBAAkB,QAAQ,OAAO,kBAAkB,UAAU;AAC/D,qBAAO;AAAA,YACT;AAEA,gBAAI,gBAAgB,yBAAyB,cAAc,qBAAqB,KAAK,cAAc,oBAAoB;AAEvH,gBAAI,OAAO,kBAAkB,YAAY;AACvC,qBAAO;AAAA,YACT;AAEA,mBAAO;AAAA,UACT;AAKA,cAAI,yBAAyB;AAAA;AAAA;AAAA;AAAA;AAAA,YAK3B,SAAS;AAAA,UACX;AAMA,cAAI,0BAA0B;AAAA,YAC5B,YAAY;AAAA,UACd;AAEA,cAAI,uBAAuB;AAAA,YACzB,SAAS;AAAA;AAAA,YAET,kBAAkB;AAAA,YAClB,yBAAyB;AAAA,UAC3B;AAQA,cAAI,oBAAoB;AAAA;AAAA;AAAA;AAAA;AAAA,YAKtB,SAAS;AAAA,UACX;AAEA,cAAI,yBAAyB,CAAC;AAC9B,cAAI,yBAAyB;AAC7B,mBAAS,mBAAmB,OAAO;AACjC;AACE,uCAAyB;AAAA,YAC3B;AAAA,UACF;AAEA;AACE,mCAAuB,qBAAqB,SAAU,OAAO;AAC3D;AACE,yCAAyB;AAAA,cAC3B;AAAA,YACF;AAGA,mCAAuB,kBAAkB;AAEzC,mCAAuB,mBAAmB,WAAY;AACpD,kBAAI,QAAQ;AAEZ,kBAAI,wBAAwB;AAC1B,yBAAS;AAAA,cACX;AAGA,kBAAI,OAAO,uBAAuB;AAElC,kBAAI,MAAM;AACR,yBAAS,KAAK,KAAK;AAAA,cACrB;AAEA,qBAAO;AAAA,YACT;AAAA,UACF;AAIA,cAAI,iBAAiB;AACrB,cAAI,qBAAqB;AACzB,cAAI,0BAA0B;AAE9B,cAAI,qBAAqB;AAIzB,cAAI,qBAAqB;AAEzB,cAAI,uBAAuB;AAAA,YACzB;AAAA,YACA;AAAA,YACA;AAAA,UACF;AAEA;AACE,iCAAqB,yBAAyB;AAC9C,iCAAqB,uBAAuB;AAAA,UAC9C;AAOA,mBAAS+D,MAAKC,SAAQ;AACpB;AACE;AACE,yBAAS,OAAO,UAAU,QAAQ,OAAO,IAAI,MAAM,OAAO,IAAI,OAAO,IAAI,CAAC,GAAG,OAAO,GAAG,OAAO,MAAM,QAAQ;AAC1G,uBAAK,OAAO,CAAC,IAAI,UAAU,IAAI;AAAA,gBACjC;AAEA,6BAAa,QAAQA,SAAQ,IAAI;AAAA,cACnC;AAAA,YACF;AAAA,UACF;AACA,mBAAS,MAAMA,SAAQ;AACrB;AACE;AACE,yBAAS,QAAQ,UAAU,QAAQ,OAAO,IAAI,MAAM,QAAQ,IAAI,QAAQ,IAAI,CAAC,GAAG,QAAQ,GAAG,QAAQ,OAAO,SAAS;AACjH,uBAAK,QAAQ,CAAC,IAAI,UAAU,KAAK;AAAA,gBACnC;AAEA,6BAAa,SAASA,SAAQ,IAAI;AAAA,cACpC;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,aAAa,OAAOA,SAAQ,MAAM;AAGzC;AACE,kBAAIC,0BAAyB,qBAAqB;AAClD,kBAAI,QAAQA,wBAAuB,iBAAiB;AAEpD,kBAAI,UAAU,IAAI;AAChB,gBAAAD,WAAU;AACV,uBAAO,KAAK,OAAO,CAAC,KAAK,CAAC;AAAA,cAC5B;AAGA,kBAAI,iBAAiB,KAAK,IAAI,SAAU,MAAM;AAC5C,uBAAO,OAAO,IAAI;AAAA,cACpB,CAAC;AAED,6BAAe,QAAQ,cAAcA,OAAM;AAI3C,uBAAS,UAAU,MAAM,KAAK,QAAQ,KAAK,GAAG,SAAS,cAAc;AAAA,YACvE;AAAA,UACF;AAEA,cAAI,0CAA0C,CAAC;AAE/C,mBAAS,SAAS,gBAAgB,YAAY;AAC5C;AACE,kBAAI,eAAe,eAAe;AAClC,kBAAI,gBAAgB,iBAAiB,aAAa,eAAe,aAAa,SAAS;AACvF,kBAAI,aAAa,gBAAgB,MAAM;AAEvC,kBAAI,wCAAwC,UAAU,GAAG;AACvD;AAAA,cACF;AAEA,oBAAM,yPAAwQ,YAAY,aAAa;AAEvS,sDAAwC,UAAU,IAAI;AAAA,YACxD;AAAA,UACF;AAMA,cAAI,uBAAuB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAQzB,WAAW,SAAU,gBAAgB;AACnC,qBAAO;AAAA,YACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAiBA,oBAAoB,SAAU,gBAAgB,UAAU,YAAY;AAClE,uBAAS,gBAAgB,aAAa;AAAA,YACxC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAeA,qBAAqB,SAAU,gBAAgB,eAAe,UAAU,YAAY;AAClF,uBAAS,gBAAgB,cAAc;AAAA,YACzC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAcA,iBAAiB,SAAU,gBAAgB,cAAc,UAAU,YAAY;AAC7E,uBAAS,gBAAgB,UAAU;AAAA,YACrC;AAAA,UACF;AAEA,cAAIE,UAAS,OAAO;AAEpB,cAAI,cAAc,CAAC;AAEnB;AACE,mBAAO,OAAO,WAAW;AAAA,UAC3B;AAMA,mBAASC,WAAU,OAAO,SAAS,SAAS;AAC1C,iBAAK,QAAQ;AACb,iBAAK,UAAU;AAEf,iBAAK,OAAO;AAGZ,iBAAK,UAAU,WAAW;AAAA,UAC5B;AAEA,UAAAA,WAAU,UAAU,mBAAmB,CAAC;AA2BxC,UAAAA,WAAU,UAAU,WAAW,SAAU,cAAc,UAAU;AAC/D,gBAAI,OAAO,iBAAiB,YAAY,OAAO,iBAAiB,cAAc,gBAAgB,MAAM;AAClG,oBAAM,IAAI,MAAM,uHAA4H;AAAA,YAC9I;AAEA,iBAAK,QAAQ,gBAAgB,MAAM,cAAc,UAAU,UAAU;AAAA,UACvE;AAiBA,UAAAA,WAAU,UAAU,cAAc,SAAU,UAAU;AACpD,iBAAK,QAAQ,mBAAmB,MAAM,UAAU,aAAa;AAAA,UAC/D;AAQA;AACE,gBAAI,iBAAiB;AAAA,cACnB,WAAW,CAAC,aAAa,oHAAyH;AAAA,cAClJ,cAAc,CAAC,gBAAgB,iGAAsG;AAAA,YACvI;AAEA,gBAAI,2BAA2B,SAAU,YAAY,MAAM;AACzD,qBAAO,eAAeA,WAAU,WAAW,YAAY;AAAA,gBACrD,KAAK,WAAY;AACf,kBAAAJ,MAAK,+DAA+D,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;AAEpF,yBAAO;AAAA,gBACT;AAAA,cACF,CAAC;AAAA,YACH;AAEA,qBAAS,UAAU,gBAAgB;AACjC,kBAAI,eAAe,eAAe,MAAM,GAAG;AACzC,yCAAyB,QAAQ,eAAe,MAAM,CAAC;AAAA,cACzD;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,iBAAiB;AAAA,UAAC;AAE3B,yBAAe,YAAYI,WAAU;AAKrC,mBAASC,eAAc,OAAO,SAAS,SAAS;AAC9C,iBAAK,QAAQ;AACb,iBAAK,UAAU;AAEf,iBAAK,OAAO;AACZ,iBAAK,UAAU,WAAW;AAAA,UAC5B;AAEA,cAAI,yBAAyBA,eAAc,YAAY,IAAI,eAAe;AAC1E,iCAAuB,cAAcA;AAErC,UAAAF,QAAO,wBAAwBC,WAAU,SAAS;AAClD,iCAAuB,uBAAuB;AAG9C,mBAAS,YAAY;AACnB,gBAAI,YAAY;AAAA,cACd,SAAS;AAAA,YACX;AAEA;AACE,qBAAO,KAAK,SAAS;AAAA,YACvB;AAEA,mBAAO;AAAA,UACT;AAEA,cAAI,cAAc,MAAM;AAExB,mBAASE,SAAQC,IAAG;AAClB,mBAAO,YAAYA,EAAC;AAAA,UACtB;AAYA,mBAAS,SAAS,OAAO;AACvB;AAEE,kBAAI,iBAAiB,OAAO,WAAW,cAAc,OAAO;AAC5D,kBAAI,OAAO,kBAAkB,MAAM,OAAO,WAAW,KAAK,MAAM,YAAY,QAAQ;AACpF,qBAAO;AAAA,YACT;AAAA,UACF;AAGA,mBAAS,kBAAkB,OAAO;AAChC;AACE,kBAAI;AACF,mCAAmB,KAAK;AACxB,uBAAO;AAAA,cACT,SAASC,IAAG;AACV,uBAAO;AAAA,cACT;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,mBAAmB,OAAO;AAwBjC,mBAAO,KAAK;AAAA,UACd;AACA,mBAAS,uBAAuB,OAAO;AACrC;AACE,kBAAI,kBAAkB,KAAK,GAAG;AAC5B,sBAAM,mHAAwH,SAAS,KAAK,CAAC;AAE7I,uBAAO,mBAAmB,KAAK;AAAA,cACjC;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,eAAe,WAAW,WAAW,aAAa;AACzD,gBAAI,cAAc,UAAU;AAE5B,gBAAI,aAAa;AACf,qBAAO;AAAA,YACT;AAEA,gBAAI,eAAe,UAAU,eAAe,UAAU,QAAQ;AAC9D,mBAAO,iBAAiB,KAAK,cAAc,MAAM,eAAe,MAAM;AAAA,UACxE;AAGA,mBAAS,eAAe,MAAM;AAC5B,mBAAO,KAAK,eAAe;AAAA,UAC7B;AAGA,mBAAS,yBAAyB,MAAM;AACtC,gBAAI,QAAQ,MAAM;AAEhB,qBAAO;AAAA,YACT;AAEA;AACE,kBAAI,OAAO,KAAK,QAAQ,UAAU;AAChC,sBAAM,mHAAwH;AAAA,cAChI;AAAA,YACF;AAEA,gBAAI,OAAO,SAAS,YAAY;AAC9B,qBAAO,KAAK,eAAe,KAAK,QAAQ;AAAA,YAC1C;AAEA,gBAAI,OAAO,SAAS,UAAU;AAC5B,qBAAO;AAAA,YACT;AAEA,oBAAQ,MAAM;AAAA,cACZ,KAAK;AACH,uBAAO;AAAA,cAET,KAAK;AACH,uBAAO;AAAA,cAET,KAAK;AACH,uBAAO;AAAA,cAET,KAAK;AACH,uBAAO;AAAA,cAET,KAAK;AACH,uBAAO;AAAA,cAET,KAAK;AACH,uBAAO;AAAA,YAEX;AAEA,gBAAI,OAAO,SAAS,UAAU;AAC5B,sBAAQ,KAAK,UAAU;AAAA,gBACrB,KAAK;AACH,sBAAI,UAAU;AACd,yBAAO,eAAe,OAAO,IAAI;AAAA,gBAEnC,KAAK;AACH,sBAAI,WAAW;AACf,yBAAO,eAAe,SAAS,QAAQ,IAAI;AAAA,gBAE7C,KAAK;AACH,yBAAO,eAAe,MAAM,KAAK,QAAQ,YAAY;AAAA,gBAEvD,KAAK;AACH,sBAAI,YAAY,KAAK,eAAe;AAEpC,sBAAI,cAAc,MAAM;AACtB,2BAAO;AAAA,kBACT;AAEA,yBAAO,yBAAyB,KAAK,IAAI,KAAK;AAAA,gBAEhD,KAAK,iBACH;AACE,sBAAI,gBAAgB;AACpB,sBAAI,UAAU,cAAc;AAC5B,sBAAIC,UAAO,cAAc;AAEzB,sBAAI;AACF,2BAAO,yBAAyBA,QAAK,OAAO,CAAC;AAAA,kBAC/C,SAASC,IAAG;AACV,2BAAO;AAAA,kBACT;AAAA,gBACF;AAAA,cAGJ;AAAA,YACF;AAEA,mBAAO;AAAA,UACT;AAEA,cAAIC,kBAAiB,OAAO,UAAU;AAEtC,cAAI,iBAAiB;AAAA,YACnB,KAAK;AAAA,YACL,KAAK;AAAA,YACL,QAAQ;AAAA,YACR,UAAU;AAAA,UACZ;AACA,cAAI,4BAA4B,4BAA4B;AAE5D;AACE,qCAAyB,CAAC;AAAA,UAC5B;AAEA,mBAAS,YAAY,QAAQ;AAC3B;AACE,kBAAIA,gBAAe,KAAK,QAAQ,KAAK,GAAG;AACtC,oBAAI,SAAS,OAAO,yBAAyB,QAAQ,KAAK,EAAE;AAE5D,oBAAI,UAAU,OAAO,gBAAgB;AACnC,yBAAO;AAAA,gBACT;AAAA,cACF;AAAA,YACF;AAEA,mBAAO,OAAO,QAAQ;AAAA,UACxB;AAEA,mBAAS,YAAY,QAAQ;AAC3B;AACE,kBAAIA,gBAAe,KAAK,QAAQ,KAAK,GAAG;AACtC,oBAAI,SAAS,OAAO,yBAAyB,QAAQ,KAAK,EAAE;AAE5D,oBAAI,UAAU,OAAO,gBAAgB;AACnC,yBAAO;AAAA,gBACT;AAAA,cACF;AAAA,YACF;AAEA,mBAAO,OAAO,QAAQ;AAAA,UACxB;AAEA,mBAAS,2BAA2B,OAAO,aAAa;AACtD,gBAAI,wBAAwB,WAAY;AACtC;AACE,oBAAI,CAAC,4BAA4B;AAC/B,+CAA6B;AAE7B,wBAAM,6OAA4P,WAAW;AAAA,gBAC/Q;AAAA,cACF;AAAA,YACF;AAEA,kCAAsB,iBAAiB;AACvC,mBAAO,eAAe,OAAO,OAAO;AAAA,cAClC,KAAK;AAAA,cACL,cAAc;AAAA,YAChB,CAAC;AAAA,UACH;AAEA,mBAAS,2BAA2B,OAAO,aAAa;AACtD,gBAAI,wBAAwB,WAAY;AACtC;AACE,oBAAI,CAAC,4BAA4B;AAC/B,+CAA6B;AAE7B,wBAAM,6OAA4P,WAAW;AAAA,gBAC/Q;AAAA,cACF;AAAA,YACF;AAEA,kCAAsB,iBAAiB;AACvC,mBAAO,eAAe,OAAO,OAAO;AAAA,cAClC,KAAK;AAAA,cACL,cAAc;AAAA,YAChB,CAAC;AAAA,UACH;AAEA,mBAAS,qCAAqC,QAAQ;AACpD;AACE,kBAAI,OAAO,OAAO,QAAQ,YAAY,kBAAkB,WAAW,OAAO,UAAU,kBAAkB,QAAQ,cAAc,OAAO,QAAQ;AACzI,oBAAI,gBAAgB,yBAAyB,kBAAkB,QAAQ,IAAI;AAE3E,oBAAI,CAAC,uBAAuB,aAAa,GAAG;AAC1C,wBAAM,6VAAsX,eAAe,OAAO,GAAG;AAErZ,yCAAuB,aAAa,IAAI;AAAA,gBAC1C;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAuBA,cAAI,eAAe,SAAU,MAAM,KAAK,KAAKC,OAAM,QAAQ,OAAO,OAAO;AACvE,gBAAI,UAAU;AAAA;AAAA,cAEZ,UAAU;AAAA;AAAA,cAEV;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA;AAAA,cAEA,QAAQ;AAAA,YACV;AAEA;AAKE,sBAAQ,SAAS,CAAC;AAKlB,qBAAO,eAAe,QAAQ,QAAQ,aAAa;AAAA,gBACjD,cAAc;AAAA,gBACd,YAAY;AAAA,gBACZ,UAAU;AAAA,gBACV,OAAO;AAAA,cACT,CAAC;AAED,qBAAO,eAAe,SAAS,SAAS;AAAA,gBACtC,cAAc;AAAA,gBACd,YAAY;AAAA,gBACZ,UAAU;AAAA,gBACV,OAAOA;AAAA,cACT,CAAC;AAGD,qBAAO,eAAe,SAAS,WAAW;AAAA,gBACxC,cAAc;AAAA,gBACd,YAAY;AAAA,gBACZ,UAAU;AAAA,gBACV,OAAO;AAAA,cACT,CAAC;AAED,kBAAI,OAAO,QAAQ;AACjB,uBAAO,OAAO,QAAQ,KAAK;AAC3B,uBAAO,OAAO,OAAO;AAAA,cACvB;AAAA,YACF;AAEA,mBAAO;AAAA,UACT;AAMA,mBAASC,eAAc,MAAM,QAAQ,UAAU;AAC7C,gBAAI;AAEJ,gBAAI,QAAQ,CAAC;AACb,gBAAI,MAAM;AACV,gBAAI,MAAM;AACV,gBAAID,QAAO;AACX,gBAAI,SAAS;AAEb,gBAAI,UAAU,MAAM;AAClB,kBAAI,YAAY,MAAM,GAAG;AACvB,sBAAM,OAAO;AAEb;AACE,uDAAqC,MAAM;AAAA,gBAC7C;AAAA,cACF;AAEA,kBAAI,YAAY,MAAM,GAAG;AACvB;AACE,yCAAuB,OAAO,GAAG;AAAA,gBACnC;AAEA,sBAAM,KAAK,OAAO;AAAA,cACpB;AAEA,cAAAA,QAAO,OAAO,WAAW,SAAY,OAAO,OAAO;AACnD,uBAAS,OAAO,aAAa,SAAY,OAAO,OAAO;AAEvD,mBAAK,YAAY,QAAQ;AACvB,oBAAID,gBAAe,KAAK,QAAQ,QAAQ,KAAK,CAAC,eAAe,eAAe,QAAQ,GAAG;AACrF,wBAAM,QAAQ,IAAI,OAAO,QAAQ;AAAA,gBACnC;AAAA,cACF;AAAA,YACF;AAIA,gBAAI,iBAAiB,UAAU,SAAS;AAExC,gBAAI,mBAAmB,GAAG;AACxB,oBAAM,WAAW;AAAA,YACnB,WAAW,iBAAiB,GAAG;AAC7B,kBAAI,aAAa,MAAM,cAAc;AAErC,uBAAS,IAAI,GAAG,IAAI,gBAAgB,KAAK;AACvC,2BAAW,CAAC,IAAI,UAAU,IAAI,CAAC;AAAA,cACjC;AAEA;AACE,oBAAI,OAAO,QAAQ;AACjB,yBAAO,OAAO,UAAU;AAAA,gBAC1B;AAAA,cACF;AAEA,oBAAM,WAAW;AAAA,YACnB;AAGA,gBAAI,QAAQ,KAAK,cAAc;AAC7B,kBAAIG,gBAAe,KAAK;AAExB,mBAAK,YAAYA,eAAc;AAC7B,oBAAI,MAAM,QAAQ,MAAM,QAAW;AACjC,wBAAM,QAAQ,IAAIA,cAAa,QAAQ;AAAA,gBACzC;AAAA,cACF;AAAA,YACF;AAEA;AACE,kBAAI,OAAO,KAAK;AACd,oBAAI,cAAc,OAAO,SAAS,aAAa,KAAK,eAAe,KAAK,QAAQ,YAAY;AAE5F,oBAAI,KAAK;AACP,6CAA2B,OAAO,WAAW;AAAA,gBAC/C;AAEA,oBAAI,KAAK;AACP,6CAA2B,OAAO,WAAW;AAAA,gBAC/C;AAAA,cACF;AAAA,YACF;AAEA,mBAAO,aAAa,MAAM,KAAK,KAAKF,OAAM,QAAQ,kBAAkB,SAAS,KAAK;AAAA,UACpF;AACA,mBAAS,mBAAmB,YAAY,QAAQ;AAC9C,gBAAI,aAAa,aAAa,WAAW,MAAM,QAAQ,WAAW,KAAK,WAAW,OAAO,WAAW,SAAS,WAAW,QAAQ,WAAW,KAAK;AAChJ,mBAAO;AAAA,UACT;AAMA,mBAASG,cAAa,SAAS,QAAQ,UAAU;AAC/C,gBAAI,YAAY,QAAQ,YAAY,QAAW;AAC7C,oBAAM,IAAI,MAAM,mFAAmF,UAAU,GAAG;AAAA,YAClH;AAEA,gBAAI;AAEJ,gBAAI,QAAQZ,QAAO,CAAC,GAAG,QAAQ,KAAK;AAEpC,gBAAI,MAAM,QAAQ;AAClB,gBAAI,MAAM,QAAQ;AAElB,gBAAIS,QAAO,QAAQ;AAInB,gBAAI,SAAS,QAAQ;AAErB,gBAAI,QAAQ,QAAQ;AAEpB,gBAAI,UAAU,MAAM;AAClB,kBAAI,YAAY,MAAM,GAAG;AAEvB,sBAAM,OAAO;AACb,wBAAQ,kBAAkB;AAAA,cAC5B;AAEA,kBAAI,YAAY,MAAM,GAAG;AACvB;AACE,yCAAuB,OAAO,GAAG;AAAA,gBACnC;AAEA,sBAAM,KAAK,OAAO;AAAA,cACpB;AAGA,kBAAIE;AAEJ,kBAAI,QAAQ,QAAQ,QAAQ,KAAK,cAAc;AAC7C,gBAAAA,gBAAe,QAAQ,KAAK;AAAA,cAC9B;AAEA,mBAAK,YAAY,QAAQ;AACvB,oBAAIH,gBAAe,KAAK,QAAQ,QAAQ,KAAK,CAAC,eAAe,eAAe,QAAQ,GAAG;AACrF,sBAAI,OAAO,QAAQ,MAAM,UAAaG,kBAAiB,QAAW;AAEhE,0BAAM,QAAQ,IAAIA,cAAa,QAAQ;AAAA,kBACzC,OAAO;AACL,0BAAM,QAAQ,IAAI,OAAO,QAAQ;AAAA,kBACnC;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAIA,gBAAI,iBAAiB,UAAU,SAAS;AAExC,gBAAI,mBAAmB,GAAG;AACxB,oBAAM,WAAW;AAAA,YACnB,WAAW,iBAAiB,GAAG;AAC7B,kBAAI,aAAa,MAAM,cAAc;AAErC,uBAAS,IAAI,GAAG,IAAI,gBAAgB,KAAK;AACvC,2BAAW,CAAC,IAAI,UAAU,IAAI,CAAC;AAAA,cACjC;AAEA,oBAAM,WAAW;AAAA,YACnB;AAEA,mBAAO,aAAa,QAAQ,MAAM,KAAK,KAAKF,OAAM,QAAQ,OAAO,KAAK;AAAA,UACxE;AASA,mBAASI,gBAAe,QAAQ;AAC9B,mBAAO,OAAO,WAAW,YAAY,WAAW,QAAQ,OAAO,aAAa;AAAA,UAC9E;AAEA,cAAI,YAAY;AAChB,cAAI,eAAe;AAQnB,mBAASC,QAAO,KAAK;AACnB,gBAAI,cAAc;AAClB,gBAAI,gBAAgB;AAAA,cAClB,KAAK;AAAA,cACL,KAAK;AAAA,YACP;AACA,gBAAI,gBAAgB,IAAI,QAAQ,aAAa,SAAUC,QAAO;AAC5D,qBAAO,cAAcA,MAAK;AAAA,YAC5B,CAAC;AACD,mBAAO,MAAM;AAAA,UACf;AAOA,cAAI,mBAAmB;AACvB,cAAI,6BAA6B;AAEjC,mBAAS,sBAAsB,MAAM;AACnC,mBAAO,KAAK,QAAQ,4BAA4B,KAAK;AAAA,UACvD;AAUA,mBAAS,cAAc,SAASC,QAAO;AAGrC,gBAAI,OAAO,YAAY,YAAY,YAAY,QAAQ,QAAQ,OAAO,MAAM;AAE1E;AACE,uCAAuB,QAAQ,GAAG;AAAA,cACpC;AAEA,qBAAOF,QAAO,KAAK,QAAQ,GAAG;AAAA,YAChC;AAGA,mBAAOE,OAAM,SAAS,EAAE;AAAA,UAC1B;AAEA,mBAAS,aAAa,UAAU,OAAO,eAAe,WAAW,UAAU;AACzE,gBAAI,OAAO,OAAO;AAElB,gBAAI,SAAS,eAAe,SAAS,WAAW;AAE9C,yBAAW;AAAA,YACb;AAEA,gBAAI,iBAAiB;AAErB,gBAAI,aAAa,MAAM;AACrB,+BAAiB;AAAA,YACnB,OAAO;AACL,sBAAQ,MAAM;AAAA,gBACZ,KAAK;AAAA,gBACL,KAAK;AACH,mCAAiB;AACjB;AAAA,gBAEF,KAAK;AACH,0BAAQ,SAAS,UAAU;AAAA,oBACzB,KAAK;AAAA,oBACL,KAAK;AACH,uCAAiB;AAAA,kBACrB;AAAA,cAEJ;AAAA,YACF;AAEA,gBAAI,gBAAgB;AAClB,kBAAI,SAAS;AACb,kBAAI,cAAc,SAAS,MAAM;AAGjC,kBAAI,WAAW,cAAc,KAAK,YAAY,cAAc,QAAQ,CAAC,IAAI;AAEzE,kBAAIb,SAAQ,WAAW,GAAG;AACxB,oBAAI,kBAAkB;AAEtB,oBAAI,YAAY,MAAM;AACpB,oCAAkB,sBAAsB,QAAQ,IAAI;AAAA,gBACtD;AAEA,6BAAa,aAAa,OAAO,iBAAiB,IAAI,SAAUc,IAAG;AACjE,yBAAOA;AAAA,gBACT,CAAC;AAAA,cACH,WAAW,eAAe,MAAM;AAC9B,oBAAIJ,gBAAe,WAAW,GAAG;AAC/B;AAIE,wBAAI,YAAY,QAAQ,CAAC,UAAU,OAAO,QAAQ,YAAY,MAAM;AAClE,6CAAuB,YAAY,GAAG;AAAA,oBACxC;AAAA,kBACF;AAEA,gCAAc;AAAA,oBAAmB;AAAA;AAAA;AAAA,oBAEjC;AAAA,qBACA,YAAY,QAAQ,CAAC,UAAU,OAAO,QAAQ,YAAY;AAAA;AAAA;AAAA,sBAE1D,sBAAsB,KAAK,YAAY,GAAG,IAAI;AAAA,wBAAM,MAAM;AAAA,kBAAQ;AAAA,gBACpE;AAEA,sBAAM,KAAK,WAAW;AAAA,cACxB;AAEA,qBAAO;AAAA,YACT;AAEA,gBAAI;AACJ,gBAAI;AACJ,gBAAI,eAAe;AAEnB,gBAAI,iBAAiB,cAAc,KAAK,YAAY,YAAY;AAEhE,gBAAIV,SAAQ,QAAQ,GAAG;AACrB,uBAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK;AACxC,wBAAQ,SAAS,CAAC;AAClB,2BAAW,iBAAiB,cAAc,OAAO,CAAC;AAClD,gCAAgB,aAAa,OAAO,OAAO,eAAe,UAAU,QAAQ;AAAA,cAC9E;AAAA,YACF,OAAO;AACL,kBAAI,aAAa,cAAc,QAAQ;AAEvC,kBAAI,OAAO,eAAe,YAAY;AACpC,oBAAI,mBAAmB;AAEvB;AAEE,sBAAI,eAAe,iBAAiB,SAAS;AAC3C,wBAAI,CAAC,kBAAkB;AACrB,sBAAAN,MAAK,uFAA4F;AAAA,oBACnG;AAEA,uCAAmB;AAAA,kBACrB;AAAA,gBACF;AAEA,oBAAI,WAAW,WAAW,KAAK,gBAAgB;AAC/C,oBAAI;AACJ,oBAAI,KAAK;AAET,uBAAO,EAAE,OAAO,SAAS,KAAK,GAAG,MAAM;AACrC,0BAAQ,KAAK;AACb,6BAAW,iBAAiB,cAAc,OAAO,IAAI;AACrD,kCAAgB,aAAa,OAAO,OAAO,eAAe,UAAU,QAAQ;AAAA,gBAC9E;AAAA,cACF,WAAW,SAAS,UAAU;AAE5B,oBAAI,iBAAiB,OAAO,QAAQ;AACpC,sBAAM,IAAI,MAAM,qDAAqD,mBAAmB,oBAAoB,uBAAuB,OAAO,KAAK,QAAQ,EAAE,KAAK,IAAI,IAAI,MAAM,kBAAkB,2EAAqF;AAAA,cACrR;AAAA,YACF;AAEA,mBAAO;AAAA,UACT;AAeA,mBAAS,YAAY,UAAU,MAAM,SAAS;AAC5C,gBAAI,YAAY,MAAM;AACpB,qBAAO;AAAA,YACT;AAEA,gBAAI,SAAS,CAAC;AACd,gBAAI,QAAQ;AACZ,yBAAa,UAAU,QAAQ,IAAI,IAAI,SAAU,OAAO;AACtD,qBAAO,KAAK,KAAK,SAAS,OAAO,OAAO;AAAA,YAC1C,CAAC;AACD,mBAAO;AAAA,UACT;AAYA,mBAAS,cAAc,UAAU;AAC/B,gBAAIqB,KAAI;AACR,wBAAY,UAAU,WAAY;AAChC,cAAAA;AAAA,YACF,CAAC;AACD,mBAAOA;AAAA,UACT;AAcA,mBAAS,gBAAgB,UAAU,aAAa,gBAAgB;AAC9D,wBAAY,UAAU,WAAY;AAChC,0BAAY,MAAM,MAAM,SAAS;AAAA,YACnC,GAAG,cAAc;AAAA,UACnB;AASA,mBAASC,SAAQ,UAAU;AACzB,mBAAO,YAAY,UAAU,SAAU,OAAO;AAC5C,qBAAO;AAAA,YACT,CAAC,KAAK,CAAC;AAAA,UACT;AAiBA,mBAAS,UAAU,UAAU;AAC3B,gBAAI,CAACN,gBAAe,QAAQ,GAAG;AAC7B,oBAAM,IAAI,MAAM,uEAAuE;AAAA,YACzF;AAEA,mBAAO;AAAA,UACT;AAEA,mBAASO,eAAc,cAAc;AAGnC,gBAAI,UAAU;AAAA,cACZ,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAMV,eAAe;AAAA,cACf,gBAAgB;AAAA;AAAA;AAAA,cAGhB,cAAc;AAAA;AAAA,cAEd,UAAU;AAAA,cACV,UAAU;AAAA;AAAA,cAEV,eAAe;AAAA,cACf,aAAa;AAAA,YACf;AACA,oBAAQ,WAAW;AAAA,cACjB,UAAU;AAAA,cACV,UAAU;AAAA,YACZ;AACA,gBAAI,4CAA4C;AAChD,gBAAI,sCAAsC;AAC1C,gBAAI,sCAAsC;AAE1C;AAIE,kBAAIC,YAAW;AAAA,gBACb,UAAU;AAAA,gBACV,UAAU;AAAA,cACZ;AAEA,qBAAO,iBAAiBA,WAAU;AAAA,gBAChC,UAAU;AAAA,kBACR,KAAK,WAAY;AACf,wBAAI,CAAC,qCAAqC;AACxC,4DAAsC;AAEtC,4BAAM,0JAA+J;AAAA,oBACvK;AAEA,2BAAO,QAAQ;AAAA,kBACjB;AAAA,kBACA,KAAK,SAAU,WAAW;AACxB,4BAAQ,WAAW;AAAA,kBACrB;AAAA,gBACF;AAAA,gBACA,eAAe;AAAA,kBACb,KAAK,WAAY;AACf,2BAAO,QAAQ;AAAA,kBACjB;AAAA,kBACA,KAAK,SAAU,eAAe;AAC5B,4BAAQ,gBAAgB;AAAA,kBAC1B;AAAA,gBACF;AAAA,gBACA,gBAAgB;AAAA,kBACd,KAAK,WAAY;AACf,2BAAO,QAAQ;AAAA,kBACjB;AAAA,kBACA,KAAK,SAAU,gBAAgB;AAC7B,4BAAQ,iBAAiB;AAAA,kBAC3B;AAAA,gBACF;AAAA,gBACA,cAAc;AAAA,kBACZ,KAAK,WAAY;AACf,2BAAO,QAAQ;AAAA,kBACjB;AAAA,kBACA,KAAK,SAAU,cAAc;AAC3B,4BAAQ,eAAe;AAAA,kBACzB;AAAA,gBACF;AAAA,gBACA,UAAU;AAAA,kBACR,KAAK,WAAY;AACf,wBAAI,CAAC,2CAA2C;AAC9C,kEAA4C;AAE5C,4BAAM,0JAA+J;AAAA,oBACvK;AAEA,2BAAO,QAAQ;AAAA,kBACjB;AAAA,gBACF;AAAA,gBACA,aAAa;AAAA,kBACX,KAAK,WAAY;AACf,2BAAO,QAAQ;AAAA,kBACjB;AAAA,kBACA,KAAK,SAAU,aAAa;AAC1B,wBAAI,CAAC,qCAAqC;AACxC,sBAAAxB,MAAK,uIAA4I,WAAW;AAE5J,4DAAsC;AAAA,oBACxC;AAAA,kBACF;AAAA,gBACF;AAAA,cACF,CAAC;AAED,sBAAQ,WAAWwB;AAAA,YACrB;AAEA;AACE,sBAAQ,mBAAmB;AAC3B,sBAAQ,oBAAoB;AAAA,YAC9B;AAEA,mBAAO;AAAA,UACT;AAEA,cAAI,gBAAgB;AACpB,cAAI,UAAU;AACd,cAAI,WAAW;AACf,cAAI,WAAW;AAEf,mBAAS,gBAAgB,SAAS;AAChC,gBAAI,QAAQ,YAAY,eAAe;AACrC,kBAAI,OAAO,QAAQ;AACnB,kBAAI,WAAW,KAAK;AAMpB,uBAAS,KAAK,SAAUC,eAAc;AACpC,oBAAI,QAAQ,YAAY,WAAW,QAAQ,YAAY,eAAe;AAEpE,sBAAI,WAAW;AACf,2BAAS,UAAU;AACnB,2BAAS,UAAUA;AAAA,gBACrB;AAAA,cACF,GAAG,SAAUC,QAAO;AAClB,oBAAI,QAAQ,YAAY,WAAW,QAAQ,YAAY,eAAe;AAEpE,sBAAI,WAAW;AACf,2BAAS,UAAU;AACnB,2BAAS,UAAUA;AAAA,gBACrB;AAAA,cACF,CAAC;AAED,kBAAI,QAAQ,YAAY,eAAe;AAGrC,oBAAI,UAAU;AACd,wBAAQ,UAAU;AAClB,wBAAQ,UAAU;AAAA,cACpB;AAAA,YACF;AAEA,gBAAI,QAAQ,YAAY,UAAU;AAChC,kBAAI,eAAe,QAAQ;AAE3B;AACE,oBAAI,iBAAiB,QAAW;AAC9B,wBAAM,qOAC2H,YAAY;AAAA,gBAC/I;AAAA,cACF;AAEA;AACE,oBAAI,EAAE,aAAa,eAAe;AAChC,wBAAM,yKAC0D,YAAY;AAAA,gBAC9E;AAAA,cACF;AAEA,qBAAO,aAAa;AAAA,YACtB,OAAO;AACL,oBAAM,QAAQ;AAAA,YAChB;AAAA,UACF;AAEA,mBAAS,KAAK,MAAM;AAClB,gBAAI,UAAU;AAAA;AAAA,cAEZ,SAAS;AAAA,cACT,SAAS;AAAA,YACX;AACA,gBAAI,WAAW;AAAA,cACb,UAAU;AAAA,cACV,UAAU;AAAA,cACV,OAAO;AAAA,YACT;AAEA;AAEE,kBAAIZ;AACJ,kBAAIa;AAEJ,qBAAO,iBAAiB,UAAU;AAAA,gBAChC,cAAc;AAAA,kBACZ,cAAc;AAAA,kBACd,KAAK,WAAY;AACf,2BAAOb;AAAA,kBACT;AAAA,kBACA,KAAK,SAAU,iBAAiB;AAC9B,0BAAM,yLAAmM;AAEzM,oBAAAA,gBAAe;AAGf,2BAAO,eAAe,UAAU,gBAAgB;AAAA,sBAC9C,YAAY;AAAA,oBACd,CAAC;AAAA,kBACH;AAAA,gBACF;AAAA,gBACA,WAAW;AAAA,kBACT,cAAc;AAAA,kBACd,KAAK,WAAY;AACf,2BAAOa;AAAA,kBACT;AAAA,kBACA,KAAK,SAAU,cAAc;AAC3B,0BAAM,sLAAgM;AAEtM,oBAAAA,aAAY;AAGZ,2BAAO,eAAe,UAAU,aAAa;AAAA,sBAC3C,YAAY;AAAA,oBACd,CAAC;AAAA,kBACH;AAAA,gBACF;AAAA,cACF,CAAC;AAAA,YACH;AAEA,mBAAO;AAAA,UACT;AAEA,mBAASC,aAAWC,SAAQ;AAC1B;AACE,kBAAIA,WAAU,QAAQA,QAAO,aAAa,iBAAiB;AACzD,sBAAM,qIAA+I;AAAA,cACvJ,WAAW,OAAOA,YAAW,YAAY;AACvC,sBAAM,2DAA2DA,YAAW,OAAO,SAAS,OAAOA,OAAM;AAAA,cAC3G,OAAO;AACL,oBAAIA,QAAO,WAAW,KAAKA,QAAO,WAAW,GAAG;AAC9C,wBAAM,gFAAgFA,QAAO,WAAW,IAAI,6CAA6C,6CAA6C;AAAA,gBACxM;AAAA,cACF;AAEA,kBAAIA,WAAU,MAAM;AAClB,oBAAIA,QAAO,gBAAgB,QAAQA,QAAO,aAAa,MAAM;AAC3D,wBAAM,oHAAyH;AAAA,gBACjI;AAAA,cACF;AAAA,YACF;AAEA,gBAAI,cAAc;AAAA,cAChB,UAAU;AAAA,cACV,QAAQA;AAAA,YACV;AAEA;AACE,kBAAI;AACJ,qBAAO,eAAe,aAAa,eAAe;AAAA,gBAChD,YAAY;AAAA,gBACZ,cAAc;AAAA,gBACd,KAAK,WAAY;AACf,yBAAO;AAAA,gBACT;AAAA,gBACA,KAAK,SAAUC,OAAM;AACnB,4BAAUA;AAQV,sBAAI,CAACD,QAAO,QAAQ,CAACA,QAAO,aAAa;AACvC,oBAAAA,QAAO,cAAcC;AAAA,kBACvB;AAAA,gBACF;AAAA,cACF,CAAC;AAAA,YACH;AAEA,mBAAO;AAAA,UACT;AAEA,cAAI;AAEJ;AACE,qCAAyB,OAAO,IAAI,wBAAwB;AAAA,UAC9D;AAEA,mBAAS,mBAAmB,MAAM;AAChC,gBAAI,OAAO,SAAS,YAAY,OAAO,SAAS,YAAY;AAC1D,qBAAO;AAAA,YACT;AAGA,gBAAI,SAAS,uBAAuB,SAAS,uBAAuB,sBAAuB,SAAS,0BAA0B,SAAS,uBAAuB,SAAS,4BAA4B,sBAAuB,SAAS,wBAAwB,kBAAmB,sBAAuB,yBAA0B;AAC7T,qBAAO;AAAA,YACT;AAEA,gBAAI,OAAO,SAAS,YAAY,SAAS,MAAM;AAC7C,kBAAI,KAAK,aAAa,mBAAmB,KAAK,aAAa,mBAAmB,KAAK,aAAa,uBAAuB,KAAK,aAAa,sBAAsB,KAAK,aAAa;AAAA;AAAA;AAAA;AAAA,cAIjL,KAAK,aAAa,0BAA0B,KAAK,gBAAgB,QAAW;AAC1E,uBAAO;AAAA,cACT;AAAA,YACF;AAEA,mBAAO;AAAA,UACT;AAEA,mBAAS,KAAK,MAAM,SAAS;AAC3B;AACE,kBAAI,CAAC,mBAAmB,IAAI,GAAG;AAC7B,sBAAM,sEAA2E,SAAS,OAAO,SAAS,OAAO,IAAI;AAAA,cACvH;AAAA,YACF;AAEA,gBAAI,cAAc;AAAA,cAChB,UAAU;AAAA,cACV;AAAA,cACA,SAAS,YAAY,SAAY,OAAO;AAAA,YAC1C;AAEA;AACE,kBAAI;AACJ,qBAAO,eAAe,aAAa,eAAe;AAAA,gBAChD,YAAY;AAAA,gBACZ,cAAc;AAAA,gBACd,KAAK,WAAY;AACf,yBAAO;AAAA,gBACT;AAAA,gBACA,KAAK,SAAUA,OAAM;AACnB,4BAAUA;AAQV,sBAAI,CAAC,KAAK,QAAQ,CAAC,KAAK,aAAa;AACnC,yBAAK,cAAcA;AAAA,kBACrB;AAAA,gBACF;AAAA,cACF,CAAC;AAAA,YACH;AAEA,mBAAO;AAAA,UACT;AAEA,mBAAS,oBAAoB;AAC3B,gBAAI,aAAa,uBAAuB;AAExC;AACE,kBAAI,eAAe,MAAM;AACvB,sBAAM,ibAA0c;AAAA,cACld;AAAA,YACF;AAKA,mBAAO;AAAA,UACT;AACA,mBAASC,aAAWC,UAAS;AAC3B,gBAAI,aAAa,kBAAkB;AAEnC;AAEE,kBAAIA,SAAQ,aAAa,QAAW;AAClC,oBAAI,cAAcA,SAAQ;AAG1B,oBAAI,YAAY,aAAaA,UAAS;AACpC,wBAAM,yKAA8K;AAAA,gBACtL,WAAW,YAAY,aAAaA,UAAS;AAC3C,wBAAM,0GAA+G;AAAA,gBACvH;AAAA,cACF;AAAA,YACF;AAEA,mBAAO,WAAW,WAAWA,QAAO;AAAA,UACtC;AACA,mBAASC,WAAS,cAAc;AAC9B,gBAAI,aAAa,kBAAkB;AACnC,mBAAO,WAAW,SAAS,YAAY;AAAA,UACzC;AACA,mBAAS,WAAW,SAAS,YAAYxB,SAAM;AAC7C,gBAAI,aAAa,kBAAkB;AACnC,mBAAO,WAAW,WAAW,SAAS,YAAYA,OAAI;AAAA,UACxD;AACA,mBAASyB,SAAO,cAAc;AAC5B,gBAAI,aAAa,kBAAkB;AACnC,mBAAO,WAAW,OAAO,YAAY;AAAA,UACvC;AACA,mBAASC,YAAU,QAAQ,MAAM;AAC/B,gBAAI,aAAa,kBAAkB;AACnC,mBAAO,WAAW,UAAU,QAAQ,IAAI;AAAA,UAC1C;AACA,mBAASC,oBAAmB,QAAQ,MAAM;AACxC,gBAAI,aAAa,kBAAkB;AACnC,mBAAO,WAAW,mBAAmB,QAAQ,IAAI;AAAA,UACnD;AACA,mBAASC,iBAAgB,QAAQ,MAAM;AACrC,gBAAI,aAAa,kBAAkB;AACnC,mBAAO,WAAW,gBAAgB,QAAQ,IAAI;AAAA,UAChD;AACA,mBAASC,cAAY,UAAU,MAAM;AACnC,gBAAI,aAAa,kBAAkB;AACnC,mBAAO,WAAW,YAAY,UAAU,IAAI;AAAA,UAC9C;AACA,mBAASC,UAAQ,QAAQ,MAAM;AAC7B,gBAAI,aAAa,kBAAkB;AACnC,mBAAO,WAAW,QAAQ,QAAQ,IAAI;AAAA,UACxC;AACA,mBAASC,qBAAoB,KAAK,QAAQ,MAAM;AAC9C,gBAAI,aAAa,kBAAkB;AACnC,mBAAO,WAAW,oBAAoB,KAAK,QAAQ,IAAI;AAAA,UACzD;AACA,mBAAS,cAAc,OAAO,aAAa;AACzC;AACE,kBAAI,aAAa,kBAAkB;AACnC,qBAAO,WAAW,cAAc,OAAO,WAAW;AAAA,YACpD;AAAA,UACF;AACA,mBAASC,iBAAgB;AACvB,gBAAI,aAAa,kBAAkB;AACnC,mBAAO,WAAW,cAAc;AAAA,UAClC;AACA,mBAAS,iBAAiB,OAAO;AAC/B,gBAAI,aAAa,kBAAkB;AACnC,mBAAO,WAAW,iBAAiB,KAAK;AAAA,UAC1C;AACA,mBAASC,SAAQ;AACf,gBAAI,aAAa,kBAAkB;AACnC,mBAAO,WAAW,MAAM;AAAA,UAC1B;AACA,mBAAS,qBAAqB,WAAW,aAAa,mBAAmB;AACvE,gBAAI,aAAa,kBAAkB;AACnC,mBAAO,WAAW,qBAAqB,WAAW,aAAa,iBAAiB;AAAA,UAClF;AAMA,cAAI,gBAAgB;AACpB,cAAI;AACJ,cAAI;AACJ,cAAI;AACJ,cAAI;AACJ,cAAI;AACJ,cAAI;AACJ,cAAI;AAEJ,mBAAS,cAAc;AAAA,UAAC;AAExB,sBAAY,qBAAqB;AACjC,mBAAS,cAAc;AACrB;AACE,kBAAI,kBAAkB,GAAG;AAEvB,0BAAU,QAAQ;AAClB,2BAAW,QAAQ;AACnB,2BAAW,QAAQ;AACnB,4BAAY,QAAQ;AACpB,4BAAY,QAAQ;AACpB,qCAAqB,QAAQ;AAC7B,+BAAe,QAAQ;AAEvB,oBAAI,QAAQ;AAAA,kBACV,cAAc;AAAA,kBACd,YAAY;AAAA,kBACZ,OAAO;AAAA,kBACP,UAAU;AAAA,gBACZ;AAEA,uBAAO,iBAAiB,SAAS;AAAA,kBAC/B,MAAM;AAAA,kBACN,KAAK;AAAA,kBACL,MAAM;AAAA,kBACN,OAAO;AAAA,kBACP,OAAO;AAAA,kBACP,gBAAgB;AAAA,kBAChB,UAAU;AAAA,gBACZ,CAAC;AAAA,cAEH;AAEA;AAAA,YACF;AAAA,UACF;AACA,mBAAS,eAAe;AACtB;AACE;AAEA,kBAAI,kBAAkB,GAAG;AAEvB,oBAAI,QAAQ;AAAA,kBACV,cAAc;AAAA,kBACd,YAAY;AAAA,kBACZ,UAAU;AAAA,gBACZ;AAEA,uBAAO,iBAAiB,SAAS;AAAA,kBAC/B,KAAKvC,QAAO,CAAC,GAAG,OAAO;AAAA,oBACrB,OAAO;AAAA,kBACT,CAAC;AAAA,kBACD,MAAMA,QAAO,CAAC,GAAG,OAAO;AAAA,oBACtB,OAAO;AAAA,kBACT,CAAC;AAAA,kBACD,MAAMA,QAAO,CAAC,GAAG,OAAO;AAAA,oBACtB,OAAO;AAAA,kBACT,CAAC;AAAA,kBACD,OAAOA,QAAO,CAAC,GAAG,OAAO;AAAA,oBACvB,OAAO;AAAA,kBACT,CAAC;AAAA,kBACD,OAAOA,QAAO,CAAC,GAAG,OAAO;AAAA,oBACvB,OAAO;AAAA,kBACT,CAAC;AAAA,kBACD,gBAAgBA,QAAO,CAAC,GAAG,OAAO;AAAA,oBAChC,OAAO;AAAA,kBACT,CAAC;AAAA,kBACD,UAAUA,QAAO,CAAC,GAAG,OAAO;AAAA,oBAC1B,OAAO;AAAA,kBACT,CAAC;AAAA,gBACH,CAAC;AAAA,cAEH;AAEA,kBAAI,gBAAgB,GAAG;AACrB,sBAAM,8EAAmF;AAAA,cAC3F;AAAA,YACF;AAAA,UACF;AAEA,cAAI,2BAA2B,qBAAqB;AACpD,cAAIwC;AACJ,mBAAS,8BAA8Bb,OAAM,QAAQ,SAAS;AAC5D;AACE,kBAAIa,YAAW,QAAW;AAExB,oBAAI;AACF,wBAAM,MAAM;AAAA,gBACd,SAASjC,IAAG;AACV,sBAAIQ,SAAQR,GAAE,MAAM,KAAK,EAAE,MAAM,cAAc;AAC/C,kBAAAiC,UAASzB,UAASA,OAAM,CAAC,KAAK;AAAA,gBAChC;AAAA,cACF;AAGA,qBAAO,OAAOyB,UAASb;AAAA,YACzB;AAAA,UACF;AACA,cAAI,UAAU;AACd,cAAI;AAEJ;AACE,gBAAI,kBAAkB,OAAO,YAAY,aAAa,UAAU;AAChE,kCAAsB,IAAI,gBAAgB;AAAA,UAC5C;AAEA,mBAAS,6BAA6B,IAAI,WAAW;AAEnD,gBAAK,CAAC,MAAM,SAAS;AACnB,qBAAO;AAAA,YACT;AAEA;AACE,kBAAIc,SAAQ,oBAAoB,IAAI,EAAE;AAEtC,kBAAIA,WAAU,QAAW;AACvB,uBAAOA;AAAA,cACT;AAAA,YACF;AAEA,gBAAI;AACJ,sBAAU;AACV,gBAAI,4BAA4B,MAAM;AAEtC,kBAAM,oBAAoB;AAC1B,gBAAI;AAEJ;AACE,mCAAqB,yBAAyB;AAG9C,uCAAyB,UAAU;AACnC,0BAAY;AAAA,YACd;AAEA,gBAAI;AAEF,kBAAI,WAAW;AAEb,oBAAI,OAAO,WAAY;AACrB,wBAAM,MAAM;AAAA,gBACd;AAGA,uBAAO,eAAe,KAAK,WAAW,SAAS;AAAA,kBAC7C,KAAK,WAAY;AAGf,0BAAM,MAAM;AAAA,kBACd;AAAA,gBACF,CAAC;AAED,oBAAI,OAAO,YAAY,YAAY,QAAQ,WAAW;AAGpD,sBAAI;AACF,4BAAQ,UAAU,MAAM,CAAC,CAAC;AAAA,kBAC5B,SAASlC,IAAG;AACV,8BAAUA;AAAA,kBACZ;AAEA,0BAAQ,UAAU,IAAI,CAAC,GAAG,IAAI;AAAA,gBAChC,OAAO;AACL,sBAAI;AACF,yBAAK,KAAK;AAAA,kBACZ,SAASA,IAAG;AACV,8BAAUA;AAAA,kBACZ;AAEA,qBAAG,KAAK,KAAK,SAAS;AAAA,gBACxB;AAAA,cACF,OAAO;AACL,oBAAI;AACF,wBAAM,MAAM;AAAA,gBACd,SAASA,IAAG;AACV,4BAAUA;AAAA,gBACZ;AAEA,mBAAG;AAAA,cACL;AAAA,YACF,SAAS,QAAQ;AAEf,kBAAI,UAAU,WAAW,OAAO,OAAO,UAAU,UAAU;AAGzD,oBAAI,cAAc,OAAO,MAAM,MAAM,IAAI;AACzC,oBAAI,eAAe,QAAQ,MAAM,MAAM,IAAI;AAC3C,oBAAImC,KAAI,YAAY,SAAS;AAC7B,oBAAIzB,KAAI,aAAa,SAAS;AAE9B,uBAAOyB,MAAK,KAAKzB,MAAK,KAAK,YAAYyB,EAAC,MAAM,aAAazB,EAAC,GAAG;AAO7D,kBAAAA;AAAA,gBACF;AAEA,uBAAOyB,MAAK,KAAKzB,MAAK,GAAGyB,MAAKzB,MAAK;AAGjC,sBAAI,YAAYyB,EAAC,MAAM,aAAazB,EAAC,GAAG;AAMtC,wBAAIyB,OAAM,KAAKzB,OAAM,GAAG;AACtB,yBAAG;AACD,wBAAAyB;AACA,wBAAAzB;AAGA,4BAAIA,KAAI,KAAK,YAAYyB,EAAC,MAAM,aAAazB,EAAC,GAAG;AAE/C,8BAAI,SAAS,OAAO,YAAYyB,EAAC,EAAE,QAAQ,YAAY,MAAM;AAK7D,8BAAI,GAAG,eAAe,OAAO,SAAS,aAAa,GAAG;AACpD,qCAAS,OAAO,QAAQ,eAAe,GAAG,WAAW;AAAA,0BACvD;AAEA;AACE,gCAAI,OAAO,OAAO,YAAY;AAC5B,kDAAoB,IAAI,IAAI,MAAM;AAAA,4BACpC;AAAA,0BACF;AAGA,iCAAO;AAAA,wBACT;AAAA,sBACF,SAASA,MAAK,KAAKzB,MAAK;AAAA,oBAC1B;AAEA;AAAA,kBACF;AAAA,gBACF;AAAA,cACF;AAAA,YACF,UAAE;AACA,wBAAU;AAEV;AACE,yCAAyB,UAAU;AACnC,6BAAa;AAAA,cACf;AAEA,oBAAM,oBAAoB;AAAA,YAC5B;AAGA,gBAAIU,QAAO,KAAK,GAAG,eAAe,GAAG,OAAO;AAC5C,gBAAI,iBAAiBA,QAAO,8BAA8BA,KAAI,IAAI;AAElE;AACE,kBAAI,OAAO,OAAO,YAAY;AAC5B,oCAAoB,IAAI,IAAI,cAAc;AAAA,cAC5C;AAAA,YACF;AAEA,mBAAO;AAAA,UACT;AACA,mBAAS,+BAA+B,IAAI,QAAQ,SAAS;AAC3D;AACE,qBAAO,6BAA6B,IAAI,KAAK;AAAA,YAC/C;AAAA,UACF;AAEA,mBAAS,gBAAgB1B,YAAW;AAClC,gBAAI,YAAYA,WAAU;AAC1B,mBAAO,CAAC,EAAE,aAAa,UAAU;AAAA,UACnC;AAEA,mBAAS,qCAAqC,MAAM,QAAQ,SAAS;AAEnE,gBAAI,QAAQ,MAAM;AAChB,qBAAO;AAAA,YACT;AAEA,gBAAI,OAAO,SAAS,YAAY;AAC9B;AACE,uBAAO,6BAA6B,MAAM,gBAAgB,IAAI,CAAC;AAAA,cACjE;AAAA,YACF;AAEA,gBAAI,OAAO,SAAS,UAAU;AAC5B,qBAAO,8BAA8B,IAAI;AAAA,YAC3C;AAEA,oBAAQ,MAAM;AAAA,cACZ,KAAK;AACH,uBAAO,8BAA8B,UAAU;AAAA,cAEjD,KAAK;AACH,uBAAO,8BAA8B,cAAc;AAAA,YACvD;AAEA,gBAAI,OAAO,SAAS,UAAU;AAC5B,sBAAQ,KAAK,UAAU;AAAA,gBACrB,KAAK;AACH,yBAAO,+BAA+B,KAAK,MAAM;AAAA,gBAEnD,KAAK;AAEH,yBAAO,qCAAqC,KAAK,MAAM,QAAQ,OAAO;AAAA,gBAExE,KAAK,iBACH;AACE,sBAAI,gBAAgB;AACpB,sBAAI,UAAU,cAAc;AAC5B,sBAAIK,UAAO,cAAc;AAEzB,sBAAI;AAEF,2BAAO,qCAAqCA,QAAK,OAAO,GAAG,QAAQ,OAAO;AAAA,kBAC5E,SAASC,IAAG;AAAA,kBAAC;AAAA,gBACf;AAAA,cACJ;AAAA,YACF;AAEA,mBAAO;AAAA,UACT;AAEA,cAAI,qBAAqB,CAAC;AAC1B,cAAI,2BAA2B,qBAAqB;AAEpD,mBAAS,8BAA8B,SAAS;AAC9C;AACE,kBAAI,SAAS;AACX,oBAAI,QAAQ,QAAQ;AACpB,oBAAI,QAAQ,qCAAqC,QAAQ,MAAM,QAAQ,SAAS,QAAQ,MAAM,OAAO,IAAI;AACzG,yCAAyB,mBAAmB,KAAK;AAAA,cACnD,OAAO;AACL,yCAAyB,mBAAmB,IAAI;AAAA,cAClD;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,eAAe,WAAW,QAAQoC,WAAU,eAAe,SAAS;AAC3E;AAEE,kBAAI,MAAM,SAAS,KAAK,KAAKnC,eAAc;AAE3C,uBAAS,gBAAgB,WAAW;AAClC,oBAAI,IAAI,WAAW,YAAY,GAAG;AAChC,sBAAI,UAAU;AAId,sBAAI;AAGF,wBAAI,OAAO,UAAU,YAAY,MAAM,YAAY;AAEjD,0BAAI,MAAM,OAAO,iBAAiB,iBAAiB,OAAOmC,YAAW,YAAY,eAAe,+FAAoG,OAAO,UAAU,YAAY,IAAI,iGAAsG;AAC3U,0BAAI,OAAO;AACX,4BAAM;AAAA,oBACR;AAEA,8BAAU,UAAU,YAAY,EAAE,QAAQ,cAAc,eAAeA,WAAU,MAAM,8CAA8C;AAAA,kBACvI,SAAS,IAAI;AACX,8BAAU;AAAA,kBACZ;AAEA,sBAAI,WAAW,EAAE,mBAAmB,QAAQ;AAC1C,kDAA8B,OAAO;AAErC,0BAAM,4RAAqT,iBAAiB,eAAeA,WAAU,cAAc,OAAO,OAAO;AAEjY,kDAA8B,IAAI;AAAA,kBACpC;AAEA,sBAAI,mBAAmB,SAAS,EAAE,QAAQ,WAAW,qBAAqB;AAGxE,uCAAmB,QAAQ,OAAO,IAAI;AACtC,kDAA8B,OAAO;AAErC,0BAAM,sBAAsBA,WAAU,QAAQ,OAAO;AAErD,kDAA8B,IAAI;AAAA,kBACpC;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,gCAAgC,SAAS;AAChD;AACE,kBAAI,SAAS;AACX,oBAAI,QAAQ,QAAQ;AACpB,oBAAI,QAAQ,qCAAqC,QAAQ,MAAM,QAAQ,SAAS,QAAQ,MAAM,OAAO,IAAI;AACzG,mCAAmB,KAAK;AAAA,cAC1B,OAAO;AACL,mCAAmB,IAAI;AAAA,cACzB;AAAA,YACF;AAAA,UACF;AAEA,cAAI;AAEJ;AACE,4CAAgC;AAAA,UAClC;AAEA,mBAAS,8BAA8B;AACrC,gBAAI,kBAAkB,SAAS;AAC7B,kBAAIhB,QAAO,yBAAyB,kBAAkB,QAAQ,IAAI;AAElE,kBAAIA,OAAM;AACR,uBAAO,qCAAqCA,QAAO;AAAA,cACrD;AAAA,YACF;AAEA,mBAAO;AAAA,UACT;AAEA,mBAAS,2BAA2B,QAAQ;AAC1C,gBAAI,WAAW,QAAW;AACxB,kBAAI,WAAW,OAAO,SAAS,QAAQ,aAAa,EAAE;AACtD,kBAAI,aAAa,OAAO;AACxB,qBAAO,4BAA4B,WAAW,MAAM,aAAa;AAAA,YACnE;AAEA,mBAAO;AAAA,UACT;AAEA,mBAAS,mCAAmC,cAAc;AACxD,gBAAI,iBAAiB,QAAQ,iBAAiB,QAAW;AACvD,qBAAO,2BAA2B,aAAa,QAAQ;AAAA,YACzD;AAEA,mBAAO;AAAA,UACT;AAQA,cAAI,wBAAwB,CAAC;AAE7B,mBAAS,6BAA6B,YAAY;AAChD,gBAAI,OAAO,4BAA4B;AAEvC,gBAAI,CAAC,MAAM;AACT,kBAAI,aAAa,OAAO,eAAe,WAAW,aAAa,WAAW,eAAe,WAAW;AAEpG,kBAAI,YAAY;AACd,uBAAO,gDAAgD,aAAa;AAAA,cACtE;AAAA,YACF;AAEA,mBAAO;AAAA,UACT;AAcA,mBAAS,oBAAoB,SAAS,YAAY;AAChD,gBAAI,CAAC,QAAQ,UAAU,QAAQ,OAAO,aAAa,QAAQ,OAAO,MAAM;AACtE;AAAA,YACF;AAEA,oBAAQ,OAAO,YAAY;AAC3B,gBAAI,4BAA4B,6BAA6B,UAAU;AAEvE,gBAAI,sBAAsB,yBAAyB,GAAG;AACpD;AAAA,YACF;AAEA,kCAAsB,yBAAyB,IAAI;AAInD,gBAAI,aAAa;AAEjB,gBAAI,WAAW,QAAQ,UAAU,QAAQ,WAAW,kBAAkB,SAAS;AAE7E,2BAAa,iCAAiC,yBAAyB,QAAQ,OAAO,IAAI,IAAI;AAAA,YAChG;AAEA;AACE,8CAAgC,OAAO;AAEvC,oBAAM,6HAAkI,2BAA2B,UAAU;AAE7K,8CAAgC,IAAI;AAAA,YACtC;AAAA,UACF;AAYA,mBAAS,kBAAkBiB,OAAM,YAAY;AAC3C,gBAAI,OAAOA,UAAS,UAAU;AAC5B;AAAA,YACF;AAEA,gBAAIzC,SAAQyC,KAAI,GAAG;AACjB,uBAAS,IAAI,GAAG,IAAIA,MAAK,QAAQ,KAAK;AACpC,oBAAI,QAAQA,MAAK,CAAC;AAElB,oBAAI/B,gBAAe,KAAK,GAAG;AACzB,sCAAoB,OAAO,UAAU;AAAA,gBACvC;AAAA,cACF;AAAA,YACF,WAAWA,gBAAe+B,KAAI,GAAG;AAE/B,kBAAIA,MAAK,QAAQ;AACf,gBAAAA,MAAK,OAAO,YAAY;AAAA,cAC1B;AAAA,YACF,WAAWA,OAAM;AACf,kBAAI,aAAa,cAAcA,KAAI;AAEnC,kBAAI,OAAO,eAAe,YAAY;AAGpC,oBAAI,eAAeA,MAAK,SAAS;AAC/B,sBAAI,WAAW,WAAW,KAAKA,KAAI;AACnC,sBAAI;AAEJ,yBAAO,EAAE,OAAO,SAAS,KAAK,GAAG,MAAM;AACrC,wBAAI/B,gBAAe,KAAK,KAAK,GAAG;AAC9B,0CAAoB,KAAK,OAAO,UAAU;AAAA,oBAC5C;AAAA,kBACF;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAAA,UACF;AASA,mBAAS,kBAAkB,SAAS;AAClC;AACE,kBAAI,OAAO,QAAQ;AAEnB,kBAAI,SAAS,QAAQ,SAAS,UAAa,OAAO,SAAS,UAAU;AACnE;AAAA,cACF;AAEA,kBAAIW;AAEJ,kBAAI,OAAO,SAAS,YAAY;AAC9B,gBAAAA,aAAY,KAAK;AAAA,cACnB,WAAW,OAAO,SAAS,aAAa,KAAK,aAAa;AAAA;AAAA,cAE1D,KAAK,aAAa,kBAAkB;AAClC,gBAAAA,aAAY,KAAK;AAAA,cACnB,OAAO;AACL;AAAA,cACF;AAEA,kBAAIA,YAAW;AAEb,oBAAIG,QAAO,yBAAyB,IAAI;AACxC,+BAAeH,YAAW,QAAQ,OAAO,QAAQG,OAAM,OAAO;AAAA,cAChE,WAAW,KAAK,cAAc,UAAa,CAAC,+BAA+B;AACzE,gDAAgC;AAEhC,oBAAI,QAAQ,yBAAyB,IAAI;AAEzC,sBAAM,uGAAuG,SAAS,SAAS;AAAA,cACjI;AAEA,kBAAI,OAAO,KAAK,oBAAoB,cAAc,CAAC,KAAK,gBAAgB,sBAAsB;AAC5F,sBAAM,4HAAiI;AAAA,cACzI;AAAA,YACF;AAAA,UACF;AAOA,mBAAS,sBAAsB,UAAU;AACvC;AACE,kBAAI,OAAO,OAAO,KAAK,SAAS,KAAK;AAErC,uBAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,oBAAI,MAAM,KAAK,CAAC;AAEhB,oBAAI,QAAQ,cAAc,QAAQ,OAAO;AACvC,kDAAgC,QAAQ;AAExC,wBAAM,4GAAiH,GAAG;AAE1H,kDAAgC,IAAI;AACpC;AAAA,gBACF;AAAA,cACF;AAEA,kBAAI,SAAS,QAAQ,MAAM;AACzB,gDAAgC,QAAQ;AAExC,sBAAM,uDAAuD;AAE7D,gDAAgC,IAAI;AAAA,cACtC;AAAA,YACF;AAAA,UACF;AACA,mBAAS,4BAA4B,MAAM,OAAO,UAAU;AAC1D,gBAAI,YAAY,mBAAmB,IAAI;AAGvC,gBAAI,CAAC,WAAW;AACd,kBAAI,OAAO;AAEX,kBAAI,SAAS,UAAa,OAAO,SAAS,YAAY,SAAS,QAAQ,OAAO,KAAK,IAAI,EAAE,WAAW,GAAG;AACrG,wBAAQ;AAAA,cACV;AAEA,kBAAI,aAAa,mCAAmC,KAAK;AAEzD,kBAAI,YAAY;AACd,wBAAQ;AAAA,cACV,OAAO;AACL,wBAAQ,4BAA4B;AAAA,cACtC;AAEA,kBAAI;AAEJ,kBAAI,SAAS,MAAM;AACjB,6BAAa;AAAA,cACf,WAAWxB,SAAQ,IAAI,GAAG;AACxB,6BAAa;AAAA,cACf,WAAW,SAAS,UAAa,KAAK,aAAa,oBAAoB;AACrE,6BAAa,OAAO,yBAAyB,KAAK,IAAI,KAAK,aAAa;AACxE,uBAAO;AAAA,cACT,OAAO;AACL,6BAAa,OAAO;AAAA,cACtB;AAEA;AACE,sBAAM,qJAA+J,YAAY,IAAI;AAAA,cACvL;AAAA,YACF;AAEA,gBAAI,UAAUO,eAAc,MAAM,MAAM,SAAS;AAGjD,gBAAI,WAAW,MAAM;AACnB,qBAAO;AAAA,YACT;AAOA,gBAAI,WAAW;AACb,uBAAS,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAK;AACzC,kCAAkB,UAAU,CAAC,GAAG,IAAI;AAAA,cACtC;AAAA,YACF;AAEA,gBAAI,SAAS,qBAAqB;AAChC,oCAAsB,OAAO;AAAA,YAC/B,OAAO;AACL,gCAAkB,OAAO;AAAA,YAC3B;AAEA,mBAAO;AAAA,UACT;AACA,cAAI,sCAAsC;AAC1C,mBAAS,4BAA4B,MAAM;AACzC,gBAAI,mBAAmB,4BAA4B,KAAK,MAAM,IAAI;AAClE,6BAAiB,OAAO;AAExB;AACE,kBAAI,CAAC,qCAAqC;AACxC,sDAAsC;AAEtC,gBAAAb,MAAK,sJAAgK;AAAA,cACvK;AAGA,qBAAO,eAAe,kBAAkB,QAAQ;AAAA,gBAC9C,YAAY;AAAA,gBACZ,KAAK,WAAY;AACf,kBAAAA,MAAK,2FAAgG;AAErG,yBAAO,eAAe,MAAM,QAAQ;AAAA,oBAClC,OAAO;AAAA,kBACT,CAAC;AACD,yBAAO;AAAA,gBACT;AAAA,cACF,CAAC;AAAA,YACH;AAEA,mBAAO;AAAA,UACT;AACA,mBAAS,2BAA2B,SAAS,OAAO,UAAU;AAC5D,gBAAI,aAAae,cAAa,MAAM,MAAM,SAAS;AAEnD,qBAAS,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAK;AACzC,gCAAkB,UAAU,CAAC,GAAG,WAAW,IAAI;AAAA,YACjD;AAEA,8BAAkB,UAAU;AAC5B,mBAAO;AAAA,UACT;AAEA,mBAAS,gBAAgB,OAAOiC,UAAS;AACvC,gBAAI,iBAAiB,wBAAwB;AAC7C,oCAAwB,aAAa,CAAC;AACtC,gBAAI,oBAAoB,wBAAwB;AAEhD;AACE,sCAAwB,WAAW,iBAAiB,oBAAI,IAAI;AAAA,YAC9D;AAEA,gBAAI;AACF,oBAAM;AAAA,YACR,UAAE;AACA,sCAAwB,aAAa;AAErC;AACE,oBAAI,mBAAmB,QAAQ,kBAAkB,gBAAgB;AAC/D,sBAAI,qBAAqB,kBAAkB,eAAe;AAE1D,sBAAI,qBAAqB,IAAI;AAC3B,oBAAAhD,MAAK,qMAA+M;AAAA,kBACtN;AAEA,oCAAkB,eAAe,MAAM;AAAA,gBACzC;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAEA,cAAI,6BAA6B;AACjC,cAAI,kBAAkB;AACtB,mBAAS,YAAY,MAAM;AACzB,gBAAI,oBAAoB,MAAM;AAC5B,kBAAI;AAGF,oBAAI,iBAAiB,YAAY,KAAK,OAAO,GAAG,MAAM,GAAG,CAAC;AAC1D,oBAAI,cAAc,UAAU,OAAO,aAAa;AAGhD,kCAAkB,YAAY,KAAK,QAAQ,QAAQ,EAAE;AAAA,cACvD,SAAS,MAAM;AAIb,kCAAkB,SAAU,UAAU;AACpC;AACE,wBAAI,+BAA+B,OAAO;AACxC,mDAA6B;AAE7B,0BAAI,OAAO,mBAAmB,aAAa;AACzC,8BAAM,0NAAyO;AAAA,sBACjP;AAAA,oBACF;AAAA,kBACF;AAEA,sBAAI,UAAU,IAAI,eAAe;AACjC,0BAAQ,MAAM,YAAY;AAC1B,0BAAQ,MAAM,YAAY,MAAS;AAAA,gBACrC;AAAA,cACF;AAAA,YACF;AAEA,mBAAO,gBAAgB,IAAI;AAAA,UAC7B;AAEA,cAAI,gBAAgB;AACpB,cAAI,oBAAoB;AACxB,mBAAS,IAAI,UAAU;AACrB;AAGE,kBAAI,oBAAoB;AACxB;AAEA,kBAAI,qBAAqB,YAAY,MAAM;AAGzC,qCAAqB,UAAU,CAAC;AAAA,cAClC;AAEA,kBAAI,uBAAuB,qBAAqB;AAChD,kBAAI;AAEJ,kBAAI;AAKF,qCAAqB,mBAAmB;AACxC,yBAAS,SAAS;AAIlB,oBAAI,CAAC,wBAAwB,qBAAqB,yBAAyB;AACzE,sBAAI,QAAQ,qBAAqB;AAEjC,sBAAI,UAAU,MAAM;AAClB,yCAAqB,0BAA0B;AAC/C,kCAAc,KAAK;AAAA,kBACrB;AAAA,gBACF;AAAA,cACF,SAAS0B,QAAO;AACd,4BAAY,iBAAiB;AAC7B,sBAAMA;AAAA,cACR,UAAE;AACA,qCAAqB,mBAAmB;AAAA,cAC1C;AAEA,kBAAI,WAAW,QAAQ,OAAO,WAAW,YAAY,OAAO,OAAO,SAAS,YAAY;AACtF,oBAAI,iBAAiB;AAGrB,oBAAI,aAAa;AACjB,oBAAI,WAAW;AAAA,kBACb,MAAM,SAAU,SAAS,QAAQ;AAC/B,iCAAa;AACb,mCAAe,KAAK,SAAUuB,cAAa;AACzC,kCAAY,iBAAiB;AAE7B,0BAAI,kBAAkB,GAAG;AAGvB,qDAA6BA,cAAa,SAAS,MAAM;AAAA,sBAC3D,OAAO;AACL,gCAAQA,YAAW;AAAA,sBACrB;AAAA,oBACF,GAAG,SAAUvB,QAAO;AAElB,kCAAY,iBAAiB;AAC7B,6BAAOA,MAAK;AAAA,oBACd,CAAC;AAAA,kBACH;AAAA,gBACF;AAEA;AACE,sBAAI,CAAC,qBAAqB,OAAO,YAAY,aAAa;AAExD,4BAAQ,QAAQ,EAAE,KAAK,WAAY;AAAA,oBAAC,CAAC,EAAE,KAAK,WAAY;AACtD,0BAAI,CAAC,YAAY;AACf,4CAAoB;AAEpB,8BAAM,mMAAuN;AAAA,sBAC/N;AAAA,oBACF,CAAC;AAAA,kBACH;AAAA,gBACF;AAEA,uBAAO;AAAA,cACT,OAAO;AACL,oBAAI,cAAc;AAGlB,4BAAY,iBAAiB;AAE7B,oBAAI,kBAAkB,GAAG;AAEvB,sBAAI,SAAS,qBAAqB;AAElC,sBAAI,WAAW,MAAM;AACnB,kCAAc,MAAM;AACpB,yCAAqB,UAAU;AAAA,kBACjC;AAIA,sBAAI,YAAY;AAAA,oBACd,MAAM,SAAU,SAAS,QAAQ;AAI/B,0BAAI,qBAAqB,YAAY,MAAM;AAEzC,6CAAqB,UAAU,CAAC;AAChC,qDAA6B,aAAa,SAAS,MAAM;AAAA,sBAC3D,OAAO;AACL,gCAAQ,WAAW;AAAA,sBACrB;AAAA,oBACF;AAAA,kBACF;AACA,yBAAO;AAAA,gBACT,OAAO;AAGL,sBAAI,aAAa;AAAA,oBACf,MAAM,SAAU,SAAS,QAAQ;AAC/B,8BAAQ,WAAW;AAAA,oBACrB;AAAA,kBACF;AACA,yBAAO;AAAA,gBACT;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,YAAY,mBAAmB;AACtC;AACE,kBAAI,sBAAsB,gBAAgB,GAAG;AAC3C,sBAAM,kIAAuI;AAAA,cAC/I;AAEA,8BAAgB;AAAA,YAClB;AAAA,UACF;AAEA,mBAAS,6BAA6B,aAAa,SAAS,QAAQ;AAClE;AACE,kBAAI,QAAQ,qBAAqB;AAEjC,kBAAI,UAAU,MAAM;AAClB,oBAAI;AACF,gCAAc,KAAK;AACnB,8BAAY,WAAY;AACtB,wBAAI,MAAM,WAAW,GAAG;AAEtB,2CAAqB,UAAU;AAC/B,8BAAQ,WAAW;AAAA,oBACrB,OAAO;AAEL,mDAA6B,aAAa,SAAS,MAAM;AAAA,oBAC3D;AAAA,kBACF,CAAC;AAAA,gBACH,SAASA,QAAO;AACd,yBAAOA,MAAK;AAAA,gBACd;AAAA,cACF,OAAO;AACL,wBAAQ,WAAW;AAAA,cACrB;AAAA,YACF;AAAA,UACF;AAEA,cAAI,aAAa;AAEjB,mBAAS,cAAc,OAAO;AAC5B;AACE,kBAAI,CAAC,YAAY;AAEf,6BAAa;AACb,oBAAI,IAAI;AAER,oBAAI;AACF,yBAAO,IAAI,MAAM,QAAQ,KAAK;AAC5B,wBAAI,WAAW,MAAM,CAAC;AAEtB,uBAAG;AACD,iCAAW,SAAS,IAAI;AAAA,oBAC1B,SAAS,aAAa;AAAA,kBACxB;AAEA,wBAAM,SAAS;AAAA,gBACjB,SAASA,QAAO;AAEd,0BAAQ,MAAM,MAAM,IAAI,CAAC;AACzB,wBAAMA;AAAA,gBACR,UAAE;AACA,+BAAa;AAAA,gBACf;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAEA,cAAI,kBAAmB;AACvB,cAAI,iBAAkB;AACtB,cAAI,gBAAiB;AACrB,cAAIwB,YAAW;AAAA,YACb,KAAK;AAAA,YACL,SAAS;AAAA,YACT,OAAO;AAAA,YACP,SAAS5B;AAAA,YACT,MAAM;AAAA,UACR;AAEA,kBAAQ,WAAW4B;AACnB,kBAAQ,YAAY9C;AACpB,kBAAQ,WAAW;AACnB,kBAAQ,WAAW;AACnB,kBAAQ,gBAAgBC;AACxB,kBAAQ,aAAa;AACrB,kBAAQ,WAAW;AACnB,kBAAQ,qDAAqD;AAC7D,kBAAQ,eAAe;AACvB,kBAAQ,gBAAgBkB;AACxB,kBAAQ,gBAAgB;AACxB,kBAAQ,gBAAgB;AACxB,kBAAQ,YAAY;AACpB,kBAAQ,aAAaK;AACrB,kBAAQ,iBAAiBZ;AACzB,kBAAQ,OAAO;AACf,kBAAQ,OAAO;AACf,kBAAQ,kBAAkB;AAC1B,kBAAQ,eAAe;AACvB,kBAAQ,cAAcsB;AACtB,kBAAQ,aAAaP;AACrB,kBAAQ,gBAAgB;AACxB,kBAAQ,mBAAmB;AAC3B,kBAAQ,YAAYI;AACpB,kBAAQ,QAAQO;AAChB,kBAAQ,sBAAsBF;AAC9B,kBAAQ,qBAAqBJ;AAC7B,kBAAQ,kBAAkBC;AAC1B,kBAAQ,UAAUE;AAClB,kBAAQ,aAAa;AACrB,kBAAQ,SAASL;AACjB,kBAAQ,WAAWD;AACnB,kBAAQ,uBAAuB;AAC/B,kBAAQ,gBAAgBQ;AACxB,kBAAQ,UAAU;AAElB,cACE,OAAO,mCAAmC,eAC1C,OAAO,+BAA+B,+BACpC,YACF;AACA,2CAA+B,2BAA2B,IAAI,MAAM,CAAC;AAAA,UACvE;AAAA,QAEE,GAAG;AAAA,MACL;AAAA;AAAA;;;AClrFA;AAAA;AAAA;AAEA,UAAI,OAAuC;AACzC,eAAO,UAAU;AAAA,MACnB,OAAO;AACL,eAAO,UAAU;AAAA,MACnB;AAAA;AAAA;;;ACNA;AAAA;AAAA;AAYA,UAAI,MAAuC;AACzC,SAAC,WAAW;AAEJ;AAGV,cACE,OAAO,mCAAmC,eAC1C,OAAO,+BAA+B,gCACpC,YACF;AACA,2CAA+B,4BAA4B,IAAI,MAAM,CAAC;AAAA,UACxE;AACU,cAAI,2BAA2B;AACzC,cAAI,kBAAkB;AACtB,cAAI,eAAe;AAEnB,mBAASU,MAAK,MAAMC,OAAM;AACxB,gBAAIC,SAAQ,KAAK;AACjB,iBAAK,KAAKD,KAAI;AACd,mBAAO,MAAMA,OAAMC,MAAK;AAAA,UAC1B;AACA,mBAASC,MAAK,MAAM;AAClB,mBAAO,KAAK,WAAW,IAAI,OAAO,KAAK,CAAC;AAAA,UAC1C;AACA,mBAAS,IAAI,MAAM;AACjB,gBAAI,KAAK,WAAW,GAAG;AACrB,qBAAO;AAAA,YACT;AAEA,gBAAI,QAAQ,KAAK,CAAC;AAClB,gBAAI,OAAO,KAAK,IAAI;AAEpB,gBAAI,SAAS,OAAO;AAClB,mBAAK,CAAC,IAAI;AACV,uBAAS,MAAM,MAAM,CAAC;AAAA,YACxB;AAEA,mBAAO;AAAA,UACT;AAEA,mBAAS,OAAO,MAAMF,OAAM,GAAG;AAC7B,gBAAIC,SAAQ;AAEZ,mBAAOA,SAAQ,GAAG;AAChB,kBAAI,cAAcA,SAAQ,MAAM;AAChC,kBAAI,SAAS,KAAK,WAAW;AAE7B,kBAAI,QAAQ,QAAQD,KAAI,IAAI,GAAG;AAE7B,qBAAK,WAAW,IAAIA;AACpB,qBAAKC,MAAK,IAAI;AACd,gBAAAA,SAAQ;AAAA,cACV,OAAO;AAEL;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,SAAS,MAAMD,OAAM,GAAG;AAC/B,gBAAIC,SAAQ;AACZ,gBAAIE,UAAS,KAAK;AAClB,gBAAI,aAAaA,YAAW;AAE5B,mBAAOF,SAAQ,YAAY;AACzB,kBAAI,aAAaA,SAAQ,KAAK,IAAI;AAClC,kBAAI,OAAO,KAAK,SAAS;AACzB,kBAAI,aAAa,YAAY;AAC7B,kBAAI,QAAQ,KAAK,UAAU;AAE3B,kBAAI,QAAQ,MAAMD,KAAI,IAAI,GAAG;AAC3B,oBAAI,aAAaG,WAAU,QAAQ,OAAO,IAAI,IAAI,GAAG;AACnD,uBAAKF,MAAK,IAAI;AACd,uBAAK,UAAU,IAAID;AACnB,kBAAAC,SAAQ;AAAA,gBACV,OAAO;AACL,uBAAKA,MAAK,IAAI;AACd,uBAAK,SAAS,IAAID;AAClB,kBAAAC,SAAQ;AAAA,gBACV;AAAA,cACF,WAAW,aAAaE,WAAU,QAAQ,OAAOH,KAAI,IAAI,GAAG;AAC1D,qBAAKC,MAAK,IAAI;AACd,qBAAK,UAAU,IAAID;AACnB,gBAAAC,SAAQ;AAAA,cACV,OAAO;AAEL;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,QAAQG,IAAG,GAAG;AAErB,gBAAI,OAAOA,GAAE,YAAY,EAAE;AAC3B,mBAAO,SAAS,IAAI,OAAOA,GAAE,KAAK,EAAE;AAAA,UACtC;AAGA,cAAI,oBAAoB;AACxB,cAAI,uBAAuB;AAC3B,cAAI,iBAAiB;AACrB,cAAI,cAAc;AAClB,cAAI,eAAe;AAEnB,mBAAS,gBAAgB,MAAM,IAAI;AAAA,UACnC;AAIA,cAAI,oBAAoB,OAAO,gBAAgB,YAAY,OAAO,YAAY,QAAQ;AAEtF,cAAI,mBAAmB;AACrB,gBAAI,mBAAmB;AAEvB,oBAAQ,eAAe,WAAY;AACjC,qBAAO,iBAAiB,IAAI;AAAA,YAC9B;AAAA,UACF,OAAO;AACL,gBAAIC,aAAY;AAChB,gBAAI,cAAcA,WAAU,IAAI;AAEhC,oBAAQ,eAAe,WAAY;AACjC,qBAAOA,WAAU,IAAI,IAAI;AAAA,YAC3B;AAAA,UACF;AAKA,cAAI,oBAAoB;AAExB,cAAI,6BAA6B;AAEjC,cAAI,iCAAiC;AACrC,cAAI,0BAA0B;AAC9B,cAAI,uBAAuB;AAE3B,cAAI,wBAAwB;AAE5B,cAAI,YAAY,CAAC;AACjB,cAAI,aAAa,CAAC;AAElB,cAAI,gBAAgB;AACpB,cAAI,cAAc;AAClB,cAAI,uBAAuB;AAE3B,cAAI,mBAAmB;AACvB,cAAI,0BAA0B;AAC9B,cAAI,yBAAyB;AAE7B,cAAI,kBAAkB,OAAO,eAAe,aAAa,aAAa;AACtE,cAAI,oBAAoB,OAAO,iBAAiB,aAAa,eAAe;AAC5E,cAAI,oBAAoB,OAAO,iBAAiB,cAAc,eAAe;AAE7E,cAAI,iBAAiB,OAAO,cAAc,eAAe,UAAU,eAAe,UAAa,UAAU,WAAW,mBAAmB,SAAY,UAAU,WAAW,eAAe,KAAK,UAAU,UAAU,IAAI;AAEpN,mBAAS,cAAc,aAAa;AAElC,gBAAIC,SAAQJ,MAAK,UAAU;AAE3B,mBAAOI,WAAU,MAAM;AACrB,kBAAIA,OAAM,aAAa,MAAM;AAE3B,oBAAI,UAAU;AAAA,cAChB,WAAWA,OAAM,aAAa,aAAa;AAEzC,oBAAI,UAAU;AACd,gBAAAA,OAAM,YAAYA,OAAM;AACxB,gBAAAP,MAAK,WAAWO,MAAK;AAAA,cACvB,OAAO;AAEL;AAAA,cACF;AAEA,cAAAA,SAAQJ,MAAK,UAAU;AAAA,YACzB;AAAA,UACF;AAEA,mBAAS,cAAc,aAAa;AAClC,qCAAyB;AACzB,0BAAc,WAAW;AAEzB,gBAAI,CAAC,yBAAyB;AAC5B,kBAAIA,MAAK,SAAS,MAAM,MAAM;AAC5B,0CAA0B;AAC1B,oCAAoB,SAAS;AAAA,cAC/B,OAAO;AACL,oBAAI,aAAaA,MAAK,UAAU;AAEhC,oBAAI,eAAe,MAAM;AACvB,qCAAmB,eAAe,WAAW,YAAY,WAAW;AAAA,gBACtE;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,UAAU,kBAAkBK,cAAa;AAGhD,sCAA0B;AAE1B,gBAAI,wBAAwB;AAE1B,uCAAyB;AACzB,gCAAkB;AAAA,YACpB;AAEA,+BAAmB;AACnB,gBAAI,wBAAwB;AAE5B,gBAAI;AACF,kBAAI,iBAAiB;AACnB,oBAAI;AACF,yBAAO,SAAS,kBAAkBA,YAAW;AAAA,gBAC/C,SAAS,OAAO;AACd,sBAAI,gBAAgB,MAAM;AACxB,wBAAI,cAAc,QAAQ,aAAa;AACvC,oCAAgB,aAAa,WAAW;AACxC,gCAAY,WAAW;AAAA,kBACzB;AAEA,wBAAM;AAAA,gBACR;AAAA,cACF,OAAO;AAEL,uBAAO,SAAS,kBAAkBA,YAAW;AAAA,cAC/C;AAAA,YACF,UAAE;AACA,4BAAc;AACd,qCAAuB;AACvB,iCAAmB;AAAA,YACrB;AAAA,UACF;AAEA,mBAAS,SAAS,kBAAkBA,cAAa;AAC/C,gBAAI,cAAcA;AAClB,0BAAc,WAAW;AACzB,0BAAcL,MAAK,SAAS;AAE5B,mBAAO,gBAAgB,QAAQ,CAAE,0BAA4B;AAC3D,kBAAI,YAAY,iBAAiB,gBAAgB,CAAC,oBAAoB,kBAAkB,IAAI;AAE1F;AAAA,cACF;AAEA,kBAAI,WAAW,YAAY;AAE3B,kBAAI,OAAO,aAAa,YAAY;AAClC,4BAAY,WAAW;AACvB,uCAAuB,YAAY;AACnC,oBAAI,yBAAyB,YAAY,kBAAkB;AAE3D,oBAAI,uBAAuB,SAAS,sBAAsB;AAC1D,8BAAc,QAAQ,aAAa;AAEnC,oBAAI,OAAO,yBAAyB,YAAY;AAC9C,8BAAY,WAAW;AAAA,gBACzB,OAAO;AAEL,sBAAI,gBAAgBA,MAAK,SAAS,GAAG;AACnC,wBAAI,SAAS;AAAA,kBACf;AAAA,gBACF;AAEA,8BAAc,WAAW;AAAA,cAC3B,OAAO;AACL,oBAAI,SAAS;AAAA,cACf;AAEA,4BAAcA,MAAK,SAAS;AAAA,YAC9B;AAGA,gBAAI,gBAAgB,MAAM;AACxB,qBAAO;AAAA,YACT,OAAO;AACL,kBAAI,aAAaA,MAAK,UAAU;AAEhC,kBAAI,eAAe,MAAM;AACvB,mCAAmB,eAAe,WAAW,YAAY,WAAW;AAAA,cACtE;AAEA,qBAAO;AAAA,YACT;AAAA,UACF;AAEA,mBAAS,yBAAyB,eAAe,cAAc;AAC7D,oBAAQ,eAAe;AAAA,cACrB,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AACH;AAAA,cAEF;AACE,gCAAgB;AAAA,YACpB;AAEA,gBAAI,wBAAwB;AAC5B,mCAAuB;AAEvB,gBAAI;AACF,qBAAO,aAAa;AAAA,YACtB,UAAE;AACA,qCAAuB;AAAA,YACzB;AAAA,UACF;AAEA,mBAAS,cAAc,cAAc;AACnC,gBAAI;AAEJ,oBAAQ,sBAAsB;AAAA,cAC5B,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAEH,gCAAgB;AAChB;AAAA,cAEF;AAEE,gCAAgB;AAChB;AAAA,YACJ;AAEA,gBAAI,wBAAwB;AAC5B,mCAAuB;AAEvB,gBAAI;AACF,qBAAO,aAAa;AAAA,YACtB,UAAE;AACA,qCAAuB;AAAA,YACzB;AAAA,UACF;AAEA,mBAAS,sBAAsB,UAAU;AACvC,gBAAI,sBAAsB;AAC1B,mBAAO,WAAY;AAEjB,kBAAI,wBAAwB;AAC5B,qCAAuB;AAEvB,kBAAI;AACF,uBAAO,SAAS,MAAM,MAAM,SAAS;AAAA,cACvC,UAAE;AACA,uCAAuB;AAAA,cACzB;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,0BAA0B,eAAe,UAAUM,UAAS;AACnE,gBAAI,cAAc,QAAQ,aAAa;AACvC,gBAAIC;AAEJ,gBAAI,OAAOD,aAAY,YAAYA,aAAY,MAAM;AACnD,kBAAI,QAAQA,SAAQ;AAEpB,kBAAI,OAAO,UAAU,YAAY,QAAQ,GAAG;AAC1C,gBAAAC,aAAY,cAAc;AAAA,cAC5B,OAAO;AACL,gBAAAA,aAAY;AAAA,cACd;AAAA,YACF,OAAO;AACL,cAAAA,aAAY;AAAA,YACd;AAEA,gBAAIC;AAEJ,oBAAQ,eAAe;AAAA,cACrB,KAAK;AACH,gBAAAA,WAAU;AACV;AAAA,cAEF,KAAK;AACH,gBAAAA,WAAU;AACV;AAAA,cAEF,KAAK;AACH,gBAAAA,WAAU;AACV;AAAA,cAEF,KAAK;AACH,gBAAAA,WAAU;AACV;AAAA,cAEF,KAAK;AAAA,cACL;AACE,gBAAAA,WAAU;AACV;AAAA,YACJ;AAEA,gBAAI,iBAAiBD,aAAYC;AACjC,gBAAI,UAAU;AAAA,cACZ,IAAI;AAAA,cACJ;AAAA,cACA;AAAA,cACA,WAAWD;AAAA,cACX;AAAA,cACA,WAAW;AAAA,YACb;AAEA,gBAAIA,aAAY,aAAa;AAE3B,sBAAQ,YAAYA;AACpB,cAAAV,MAAK,YAAY,OAAO;AAExB,kBAAIG,MAAK,SAAS,MAAM,QAAQ,YAAYA,MAAK,UAAU,GAAG;AAE5D,oBAAI,wBAAwB;AAE1B,oCAAkB;AAAA,gBACpB,OAAO;AACL,2CAAyB;AAAA,gBAC3B;AAGA,mCAAmB,eAAeO,aAAY,WAAW;AAAA,cAC3D;AAAA,YACF,OAAO;AACL,sBAAQ,YAAY;AACpB,cAAAV,MAAK,WAAW,OAAO;AAIvB,kBAAI,CAAC,2BAA2B,CAAC,kBAAkB;AACjD,0CAA0B;AAC1B,oCAAoB,SAAS;AAAA,cAC/B;AAAA,YACF;AAEA,mBAAO;AAAA,UACT;AAEA,mBAAS,0BAA0B;AAAA,UACnC;AAEA,mBAAS,6BAA6B;AAEpC,gBAAI,CAAC,2BAA2B,CAAC,kBAAkB;AACjD,wCAA0B;AAC1B,kCAAoB,SAAS;AAAA,YAC/B;AAAA,UACF;AAEA,mBAAS,gCAAgC;AACvC,mBAAOG,MAAK,SAAS;AAAA,UACvB;AAEA,mBAAS,wBAAwB,MAAM;AAKrC,iBAAK,WAAW;AAAA,UAClB;AAEA,mBAAS,mCAAmC;AAC1C,mBAAO;AAAA,UACT;AAEA,cAAI,uBAAuB;AAC3B,cAAI,wBAAwB;AAC5B,cAAI,gBAAgB;AAKpB,cAAI,gBAAgB;AACpB,cAAI,YAAY;AAEhB,mBAAS,oBAAoB;AAC3B,gBAAI,cAAc,QAAQ,aAAa,IAAI;AAE3C,gBAAI,cAAc,eAAe;AAG/B,qBAAO;AAAA,YACT;AAGA,mBAAO;AAAA,UACT;AAEA,mBAAS,eAAe;AAAA,UAExB;AAEA,mBAAS,eAAe,KAAK;AAC3B,gBAAI,MAAM,KAAK,MAAM,KAAK;AAExB,sBAAQ,OAAO,EAAE,iHAAsH;AACvI;AAAA,YACF;AAEA,gBAAI,MAAM,GAAG;AACX,8BAAgB,KAAK,MAAM,MAAO,GAAG;AAAA,YACvC,OAAO;AAEL,8BAAgB;AAAA,YAClB;AAAA,UACF;AAEA,cAAI,2BAA2B,WAAY;AACzC,gBAAI,0BAA0B,MAAM;AAClC,kBAAI,cAAc,QAAQ,aAAa;AAGvC,0BAAY;AACZ,kBAAI,mBAAmB;AAOvB,kBAAI,cAAc;AAElB,kBAAI;AACF,8BAAc,sBAAsB,kBAAkB,WAAW;AAAA,cACnE,UAAE;AACA,oBAAI,aAAa;AAGf,mDAAiC;AAAA,gBACnC,OAAO;AACL,yCAAuB;AACvB,0CAAwB;AAAA,gBAC1B;AAAA,cACF;AAAA,YACF,OAAO;AACL,qCAAuB;AAAA,YACzB;AAAA,UACF;AAEA,cAAI;AAEJ,cAAI,OAAO,sBAAsB,YAAY;AAY3C,+CAAmC,WAAY;AAC7C,gCAAkB,wBAAwB;AAAA,YAC5C;AAAA,UACF,WAAW,OAAO,mBAAmB,aAAa;AAGhD,gBAAI,UAAU,IAAI,eAAe;AACjC,gBAAI,OAAO,QAAQ;AACnB,oBAAQ,MAAM,YAAY;AAE1B,+CAAmC,WAAY;AAC7C,mBAAK,YAAY,IAAI;AAAA,YACvB;AAAA,UACF,OAAO;AAEL,+CAAmC,WAAY;AAC7C,8BAAgB,0BAA0B,CAAC;AAAA,YAC7C;AAAA,UACF;AAEA,mBAAS,oBAAoB,UAAU;AACrC,oCAAwB;AAExB,gBAAI,CAAC,sBAAsB;AACzB,qCAAuB;AACvB,+CAAiC;AAAA,YACnC;AAAA,UACF;AAEA,mBAAS,mBAAmB,UAAU,IAAI;AACxC,4BAAgB,gBAAgB,WAAY;AAC1C,uBAAS,QAAQ,aAAa,CAAC;AAAA,YACjC,GAAG,EAAE;AAAA,UACP;AAEA,mBAAS,oBAAoB;AAC3B,8BAAkB,aAAa;AAC/B,4BAAgB;AAAA,UAClB;AAEA,cAAI,wBAAwB;AAC5B,cAAI,qBAAsB;AAE1B,kBAAQ,wBAAwB;AAChC,kBAAQ,6BAA6B;AACrC,kBAAQ,uBAAuB;AAC/B,kBAAQ,0BAA0B;AAClC,kBAAQ,qBAAqB;AAC7B,kBAAQ,gCAAgC;AACxC,kBAAQ,0BAA0B;AAClC,kBAAQ,6BAA6B;AACrC,kBAAQ,0BAA0B;AAClC,kBAAQ,mCAAmC;AAC3C,kBAAQ,gCAAgC;AACxC,kBAAQ,gBAAgB;AACxB,kBAAQ,0BAA0B;AAClC,kBAAQ,wBAAwB;AAChC,kBAAQ,2BAA2B;AACnC,kBAAQ,4BAA4B;AACpC,kBAAQ,uBAAuB;AAC/B,kBAAQ,wBAAwB;AAEhC,cACE,OAAO,mCAAmC,eAC1C,OAAO,+BAA+B,+BACpC,YACF;AACA,2CAA+B,2BAA2B,IAAI,MAAM,CAAC;AAAA,UACvE;AAAA,QAEE,GAAG;AAAA,MACL;AAAA;AAAA;;;ACznBA;AAAA;AAAA;AAEA,UAAI,OAAuC;AACzC,eAAO,UAAU;AAAA,MACnB,OAAO;AACL,eAAO,UAAU;AAAA,MACnB;AAAA;AAAA;;;ACNA;AAAA;AAAA;AAYA,UAAI,MAAuC;AACzC,SAAC,WAAW;AAEJ;AAGV,cACE,OAAO,mCAAmC,eAC1C,OAAO,+BAA+B,gCACpC,YACF;AACA,2CAA+B,4BAA4B,IAAI,MAAM,CAAC;AAAA,UACxE;AACU,cAAIS,WAAQ;AACtB,cAAI,YAAY;AAEhB,cAAI,uBAAuBA,SAAM;AAEjC,cAAI,kBAAkB;AACtB,mBAAS,mBAAmB,oBAAoB;AAC9C;AACE,gCAAkB;AAAA,YACpB;AAAA,UACF;AAMA,mBAASC,MAAKC,SAAQ;AACpB;AACE,kBAAI,CAAC,iBAAiB;AACpB,yBAAS,OAAO,UAAU,QAAQ,OAAO,IAAI,MAAM,OAAO,IAAI,OAAO,IAAI,CAAC,GAAG,OAAO,GAAG,OAAO,MAAM,QAAQ;AAC1G,uBAAK,OAAO,CAAC,IAAI,UAAU,IAAI;AAAA,gBACjC;AAEA,6BAAa,QAAQA,SAAQ,IAAI;AAAA,cACnC;AAAA,YACF;AAAA,UACF;AACA,mBAAS,MAAMA,SAAQ;AACrB;AACE,kBAAI,CAAC,iBAAiB;AACpB,yBAAS,QAAQ,UAAU,QAAQ,OAAO,IAAI,MAAM,QAAQ,IAAI,QAAQ,IAAI,CAAC,GAAG,QAAQ,GAAG,QAAQ,OAAO,SAAS;AACjH,uBAAK,QAAQ,CAAC,IAAI,UAAU,KAAK;AAAA,gBACnC;AAEA,6BAAa,SAASA,SAAQ,IAAI;AAAA,cACpC;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,aAAa,OAAOA,SAAQ,MAAM;AAGzC;AACE,kBAAIC,0BAAyB,qBAAqB;AAClD,kBAAI,QAAQA,wBAAuB,iBAAiB;AAEpD,kBAAI,UAAU,IAAI;AAChB,gBAAAD,WAAU;AACV,uBAAO,KAAK,OAAO,CAAC,KAAK,CAAC;AAAA,cAC5B;AAGA,kBAAI,iBAAiB,KAAK,IAAI,SAAU,MAAM;AAC5C,uBAAO,OAAO,IAAI;AAAA,cACpB,CAAC;AAED,6BAAe,QAAQ,cAAcA,OAAM;AAI3C,uBAAS,UAAU,MAAM,KAAK,QAAQ,KAAK,GAAG,SAAS,cAAc;AAAA,YACvE;AAAA,UACF;AAEA,cAAI,oBAAoB;AACxB,cAAI,iBAAiB;AACrB,cAAI,yBAAyB;AAE7B,cAAI,WAAW;AAEf,cAAI,aAAa;AAEjB,cAAI,gBAAgB;AACpB,cAAI,WAAW;AACf,cAAIE,YAAW;AACf,cAAI,OAAO;AACX,cAAI,kBAAkB;AACtB,cAAI,kBAAkB;AACtB,cAAI,aAAa;AACjB,cAAI,WAAW;AACf,cAAI,oBAAoB;AACxB,cAAI,gBAAgB;AACpB,cAAI,sBAAsB;AAC1B,cAAI,gBAAgB;AACpB,cAAI,2BAA2B;AAC/B,cAAI,qBAAqB;AACzB,cAAI,wBAAwB;AAC5B,cAAI,iBAAiB;AACrB,cAAI,qBAAqB;AACzB,cAAI,wBAAwB;AAC5B,cAAI,iBAAiB;AACrB,cAAI,yBAAyB;AAI7B,cAAI,2CAA2C;AAG/C,cAAI,sBAAsB;AAE1B,cAAI,+BAA+B;AAEnC,cAAI,qBAAqB;AAEzB,cAAI,kCAAkC;AAStC,cAAI,iCAAiC;AAKrC,cAAI,qCAAqC;AACzC,cAAI,sBAAsB;AAM1B,cAAI,2BAA2B;AAE/B,cAAI,sBAAsB;AAE1B,cAAI,4BAA4B;AAEhC,cAAI,kBAAkB,oBAAI,IAAI;AAM9B,cAAI,+BAA+B,CAAC;AAQpC,cAAI,4BAA6B,CAAC;AAElC,mBAAS,sBAAsB,kBAAkB,cAAc;AAC7D,gCAAoB,kBAAkB,YAAY;AAClD,gCAAoB,mBAAmB,WAAW,YAAY;AAAA,UAChE;AACA,mBAAS,oBAAoB,kBAAkB,cAAc;AAC3D;AACE,kBAAI,6BAA6B,gBAAgB,GAAG;AAClD,sBAAM,8FAAmG,gBAAgB;AAAA,cAC3H;AAAA,YACF;AAEA,yCAA6B,gBAAgB,IAAI;AAEjD;AACE,kBAAI,iBAAiB,iBAAiB,YAAY;AAClD,wCAA0B,cAAc,IAAI;AAE5C,kBAAI,qBAAqB,iBAAiB;AACxC,0CAA0B,aAAa;AAAA,cACzC;AAAA,YACF;AAEA,qBAAS,IAAI,GAAG,IAAI,aAAa,QAAQ,KAAK;AAC5C,8BAAgB,IAAI,aAAa,CAAC,CAAC;AAAA,YACrC;AAAA,UACF;AAEA,cAAIC,aAAY,CAAC,EAAE,OAAO,WAAW,eAAe,OAAO,OAAO,aAAa,eAAe,OAAO,OAAO,SAAS,kBAAkB;AAEvI,cAAIC,kBAAiB,OAAO,UAAU;AAYtC,mBAAS,SAAS,OAAO;AACvB;AAEE,kBAAI,iBAAiB,OAAO,WAAW,cAAc,OAAO;AAC5D,kBAAI,OAAO,kBAAkB,MAAM,OAAO,WAAW,KAAK,MAAM,YAAY,QAAQ;AACpF,qBAAO;AAAA,YACT;AAAA,UACF;AAGA,mBAAS,kBAAkB,OAAO;AAChC;AACE,kBAAI;AACF,mCAAmB,KAAK;AACxB,uBAAO;AAAA,cACT,SAASC,IAAG;AACV,uBAAO;AAAA,cACT;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,mBAAmB,OAAO;AAwBjC,mBAAO,KAAK;AAAA,UACd;AAEA,mBAAS,6BAA6B,OAAO,eAAe;AAC1D;AACE,kBAAI,kBAAkB,KAAK,GAAG;AAC5B,sBAAM,8HAAmI,eAAe,SAAS,KAAK,CAAC;AAEvK,uBAAO,mBAAmB,KAAK;AAAA,cACjC;AAAA,YACF;AAAA,UACF;AACA,mBAAS,uBAAuB,OAAO;AACrC;AACE,kBAAI,kBAAkB,KAAK,GAAG;AAC5B,sBAAM,mHAAwH,SAAS,KAAK,CAAC;AAE7I,uBAAO,mBAAmB,KAAK;AAAA,cACjC;AAAA,YACF;AAAA,UACF;AACA,mBAAS,wBAAwB,OAAO,UAAU;AAChD;AACE,kBAAI,kBAAkB,KAAK,GAAG;AAC5B,sBAAM,yHAA8H,UAAU,SAAS,KAAK,CAAC;AAE7J,uBAAO,mBAAmB,KAAK;AAAA,cACjC;AAAA,YACF;AAAA,UACF;AACA,mBAAS,+BAA+B,OAAO,UAAU;AACvD;AACE,kBAAI,kBAAkB,KAAK,GAAG;AAC5B,sBAAM,iIAAsI,UAAU,SAAS,KAAK,CAAC;AAErK,uBAAO,mBAAmB,KAAK;AAAA,cACjC;AAAA,YACF;AAAA,UACF;AACA,mBAAS,wBAAwB,OAAO;AACtC;AACE,kBAAI,kBAAkB,KAAK,GAAG;AAC5B,sBAAM,qIAA0I,SAAS,KAAK,CAAC;AAE/J,uBAAO,mBAAmB,KAAK;AAAA,cACjC;AAAA,YACF;AAAA,UACF;AACA,mBAAS,kCAAkC,OAAO;AAChD;AACE,kBAAI,kBAAkB,KAAK,GAAG;AAC5B,sBAAM,0KAAoL,SAAS,KAAK,CAAC;AAEzM,uBAAO,mBAAmB,KAAK;AAAA,cACjC;AAAA,YACF;AAAA,UACF;AAIA,cAAI,WAAW;AAGf,cAAI,SAAS;AAKb,cAAI,oBAAoB;AAIxB,cAAI,UAAU;AAKd,cAAI,qBAAqB;AAGzB,cAAI,UAAU;AAGd,cAAI,mBAAmB;AAGvB,cAAI,4BAA4B;AAGhC,cAAI,sBAAsB,4BAA4B;AACtD,cAAI,6BAA6B,IAAI,OAAO,OAAO,4BAA4B,OAAO,sBAAsB,KAAK;AACjH,cAAI,4BAA4B,CAAC;AACjC,cAAI,8BAA8B,CAAC;AACnC,mBAAS,oBAAoB,eAAe;AAC1C,gBAAID,gBAAe,KAAK,6BAA6B,aAAa,GAAG;AACnE,qBAAO;AAAA,YACT;AAEA,gBAAIA,gBAAe,KAAK,2BAA2B,aAAa,GAAG;AACjE,qBAAO;AAAA,YACT;AAEA,gBAAI,2BAA2B,KAAK,aAAa,GAAG;AAClD,0CAA4B,aAAa,IAAI;AAC7C,qBAAO;AAAA,YACT;AAEA,sCAA0B,aAAa,IAAI;AAE3C;AACE,oBAAM,gCAAgC,aAAa;AAAA,YACrD;AAEA,mBAAO;AAAA,UACT;AACA,mBAAS,sBAAsBE,OAAM,cAAc,sBAAsB;AACvE,gBAAI,iBAAiB,MAAM;AACzB,qBAAO,aAAa,SAAS;AAAA,YAC/B;AAEA,gBAAI,sBAAsB;AACxB,qBAAO;AAAA,YACT;AAEA,gBAAIA,MAAK,SAAS,MAAMA,MAAK,CAAC,MAAM,OAAOA,MAAK,CAAC,MAAM,SAASA,MAAK,CAAC,MAAM,OAAOA,MAAK,CAAC,MAAM,MAAM;AACnG,qBAAO;AAAA,YACT;AAEA,mBAAO;AAAA,UACT;AACA,mBAAS,iCAAiCA,OAAM,OAAO,cAAc,sBAAsB;AACzF,gBAAI,iBAAiB,QAAQ,aAAa,SAAS,UAAU;AAC3D,qBAAO;AAAA,YACT;AAEA,oBAAQ,OAAO,OAAO;AAAA,cACpB,KAAK;AAAA,cAEL,KAAK;AAEH,uBAAO;AAAA,cAET,KAAK,WACH;AACE,oBAAI,sBAAsB;AACxB,yBAAO;AAAA,gBACT;AAEA,oBAAI,iBAAiB,MAAM;AACzB,yBAAO,CAAC,aAAa;AAAA,gBACvB,OAAO;AACL,sBAAIC,UAASD,MAAK,YAAY,EAAE,MAAM,GAAG,CAAC;AAC1C,yBAAOC,YAAW,WAAWA,YAAW;AAAA,gBAC1C;AAAA,cACF;AAAA,cAEF;AACE,uBAAO;AAAA,YACX;AAAA,UACF;AACA,mBAAS,sBAAsBD,OAAM,OAAO,cAAc,sBAAsB;AAC9E,gBAAI,UAAU,QAAQ,OAAO,UAAU,aAAa;AAClD,qBAAO;AAAA,YACT;AAEA,gBAAI,iCAAiCA,OAAM,OAAO,cAAc,oBAAoB,GAAG;AACrF,qBAAO;AAAA,YACT;AAEA,gBAAI,sBAAsB;AAExB,qBAAO;AAAA,YACT;AAEA,gBAAI,iBAAiB,MAAM;AAEzB,sBAAQ,aAAa,MAAM;AAAA,gBACzB,KAAK;AACH,yBAAO,CAAC;AAAA,gBAEV,KAAK;AACH,yBAAO,UAAU;AAAA,gBAEnB,KAAK;AACH,yBAAO,MAAM,KAAK;AAAA,gBAEpB,KAAK;AACH,yBAAO,MAAM,KAAK,KAAK,QAAQ;AAAA,cACnC;AAAA,YACF;AAEA,mBAAO;AAAA,UACT;AACA,mBAAS,gBAAgBA,OAAM;AAC7B,mBAAO,WAAW,eAAeA,KAAI,IAAI,WAAWA,KAAI,IAAI;AAAA,UAC9D;AAEA,mBAAS,mBAAmBA,OAAM,MAAM,iBAAiB,eAAe,oBAAoBE,cAAa,mBAAmB;AAC1H,iBAAK,kBAAkB,SAAS,qBAAqB,SAAS,WAAW,SAAS;AAClF,iBAAK,gBAAgB;AACrB,iBAAK,qBAAqB;AAC1B,iBAAK,kBAAkB;AACvB,iBAAK,eAAeF;AACpB,iBAAK,OAAO;AACZ,iBAAK,cAAcE;AACnB,iBAAK,oBAAoB;AAAA,UAC3B;AAKA,cAAI,aAAa,CAAC;AAElB,cAAI,gBAAgB;AAAA,YAAC;AAAA,YAAY;AAAA;AAAA;AAAA;AAAA,YAGjC;AAAA,YAAgB;AAAA,YAAkB;AAAA,YAAa;AAAA,YAAkC;AAAA,YAA4B;AAAA,UAAO;AAEpH,wBAAc,QAAQ,SAAUF,OAAM;AACpC,uBAAWA,KAAI,IAAI,IAAI;AAAA,cAAmBA;AAAA,cAAM;AAAA,cAAU;AAAA;AAAA,cAC1DA;AAAA;AAAA,cACA;AAAA;AAAA,cACA;AAAA;AAAA,cACA;AAAA,YAAK;AAAA,UACP,CAAC;AAGD,WAAC,CAAC,iBAAiB,gBAAgB,GAAG,CAAC,aAAa,OAAO,GAAG,CAAC,WAAW,KAAK,GAAG,CAAC,aAAa,YAAY,CAAC,EAAE,QAAQ,SAAUG,OAAM;AACrI,gBAAIH,QAAOG,MAAK,CAAC,GACb,gBAAgBA,MAAK,CAAC;AAC1B,uBAAWH,KAAI,IAAI,IAAI;AAAA,cAAmBA;AAAA,cAAM;AAAA,cAAQ;AAAA;AAAA,cACxD;AAAA;AAAA,cACA;AAAA;AAAA,cACA;AAAA;AAAA,cACA;AAAA,YAAK;AAAA,UACP,CAAC;AAID,WAAC,mBAAmB,aAAa,cAAc,OAAO,EAAE,QAAQ,SAAUA,OAAM;AAC9E,uBAAWA,KAAI,IAAI,IAAI;AAAA,cAAmBA;AAAA,cAAM;AAAA,cAAmB;AAAA;AAAA,cACnEA,MAAK,YAAY;AAAA;AAAA,cACjB;AAAA;AAAA,cACA;AAAA;AAAA,cACA;AAAA,YAAK;AAAA,UACP,CAAC;AAKD,WAAC,eAAe,6BAA6B,aAAa,eAAe,EAAE,QAAQ,SAAUA,OAAM;AACjG,uBAAWA,KAAI,IAAI,IAAI;AAAA,cAAmBA;AAAA,cAAM;AAAA,cAAmB;AAAA;AAAA,cACnEA;AAAA;AAAA,cACA;AAAA;AAAA,cACA;AAAA;AAAA,cACA;AAAA,YAAK;AAAA,UACP,CAAC;AAED;AAAA,YAAC;AAAA,YAAmB;AAAA;AAAA;AAAA,YAEpB;AAAA,YAAa;AAAA,YAAY;AAAA,YAAY;AAAA,YAAW;AAAA,YAAS;AAAA,YAAY;AAAA,YAA2B;AAAA,YAAyB;AAAA,YAAkB;AAAA,YAAU;AAAA,YAAQ;AAAA,YAAY;AAAA,YAAc;AAAA,YAAQ;AAAA,YAAe;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YAAU;AAAA;AAAA,YAC5P;AAAA,UAAW,EAAE,QAAQ,SAAUA,OAAM;AACnC,uBAAWA,KAAI,IAAI,IAAI;AAAA,cAAmBA;AAAA,cAAM;AAAA,cAAS;AAAA;AAAA,cACzDA,MAAK,YAAY;AAAA;AAAA,cACjB;AAAA;AAAA,cACA;AAAA;AAAA,cACA;AAAA,YAAK;AAAA,UACP,CAAC;AAGD;AAAA,YAAC;AAAA;AAAA;AAAA,YAED;AAAA,YAAY;AAAA,YAAS;AAAA;AAAA;AAAA;AAAA,UAGrB,EAAE,QAAQ,SAAUA,OAAM;AACxB,uBAAWA,KAAI,IAAI,IAAI;AAAA,cAAmBA;AAAA,cAAM;AAAA,cAAS;AAAA;AAAA,cACzDA;AAAA;AAAA,cACA;AAAA;AAAA,cACA;AAAA;AAAA,cACA;AAAA,YAAK;AAAA,UACP,CAAC;AAGD;AAAA,YAAC;AAAA,YAAW;AAAA;AAAA;AAAA;AAAA,UAGZ,EAAE,QAAQ,SAAUA,OAAM;AACxB,uBAAWA,KAAI,IAAI,IAAI;AAAA,cAAmBA;AAAA,cAAM;AAAA,cAAoB;AAAA;AAAA,cACpEA;AAAA;AAAA,cACA;AAAA;AAAA,cACA;AAAA;AAAA,cACA;AAAA,YAAK;AAAA,UACP,CAAC;AAED;AAAA,YAAC;AAAA,YAAQ;AAAA,YAAQ;AAAA,YAAQ;AAAA;AAAA;AAAA;AAAA,UAGzB,EAAE,QAAQ,SAAUA,OAAM;AACxB,uBAAWA,KAAI,IAAI,IAAI;AAAA,cAAmBA;AAAA,cAAM;AAAA,cAAkB;AAAA;AAAA,cAClEA;AAAA;AAAA,cACA;AAAA;AAAA,cACA;AAAA;AAAA,cACA;AAAA,YAAK;AAAA,UACP,CAAC;AAED,WAAC,WAAW,OAAO,EAAE,QAAQ,SAAUA,OAAM;AAC3C,uBAAWA,KAAI,IAAI,IAAI;AAAA,cAAmBA;AAAA,cAAM;AAAA,cAAS;AAAA;AAAA,cACzDA,MAAK,YAAY;AAAA;AAAA,cACjB;AAAA;AAAA,cACA;AAAA;AAAA,cACA;AAAA,YAAK;AAAA,UACP,CAAC;AACD,cAAI,WAAW;AAEf,cAAI,aAAa,SAAUI,QAAO;AAChC,mBAAOA,OAAM,CAAC,EAAE,YAAY;AAAA,UAC9B;AAOA;AAAA,YAAC;AAAA,YAAiB;AAAA,YAAsB;AAAA,YAAe;AAAA,YAAkB;AAAA,YAAc;AAAA,YAAa;AAAA,YAAa;AAAA,YAAuB;AAAA,YAA+B;AAAA,YAAiB;AAAA,YAAmB;AAAA,YAAqB;AAAA,YAAqB;AAAA,YAAgB;AAAA,YAAa;AAAA,YAAe;AAAA,YAAiB;AAAA,YAAe;AAAA,YAAa;AAAA,YAAoB;AAAA,YAAgB;AAAA,YAAc;AAAA,YAAgB;AAAA,YAAe;AAAA,YAAc;AAAA,YAAgC;AAAA,YAA8B;AAAA,YAAe;AAAA,YAAkB;AAAA,YAAmB;AAAA,YAAkB;AAAA,YAAkB;AAAA,YAAc;AAAA,YAAc;AAAA,YAAgB;AAAA,YAAqB;AAAA,YAAsB;AAAA,YAAe;AAAA,YAAY;AAAA,YAAkB;AAAA,YAAoB;AAAA,YAAmB;AAAA,YAAc;AAAA,YAAgB;AAAA,YAA0B;AAAA,YAA2B;AAAA,YAAoB;AAAA,YAAqB;AAAA,YAAkB;AAAA,YAAmB;AAAA,YAAqB;AAAA,YAAkB;AAAA,YAAgB;AAAA,YAAe;AAAA,YAAmB;AAAA,YAAkB;AAAA,YAAsB;AAAA,YAAuB;AAAA,YAAgB;AAAA,YAAiB;AAAA,YAAgB;AAAA,YAAgB;AAAA,YAAa;AAAA,YAAiB;AAAA,YAAkB;AAAA,YAAiB;AAAA,YAAc;AAAA,YAAiB;AAAA,YAAiB;AAAA,YAAgB;AAAA,YAAgB;AAAA,YAAe;AAAA;AAAA;AAAA;AAAA,UAGxwC,EAAE,QAAQ,SAAU,eAAe;AACjC,gBAAIJ,QAAO,cAAc,QAAQ,UAAU,UAAU;AACrD,uBAAWA,KAAI,IAAI,IAAI;AAAA,cAAmBA;AAAA,cAAM;AAAA,cAAQ;AAAA;AAAA,cACxD;AAAA,cAAe;AAAA;AAAA,cACf;AAAA;AAAA,cACA;AAAA,YAAK;AAAA,UACP,CAAC;AAED;AAAA,YAAC;AAAA,YAAiB;AAAA,YAAiB;AAAA,YAAc;AAAA,YAAc;AAAA,YAAe;AAAA;AAAA;AAAA;AAAA,UAG9E,EAAE,QAAQ,SAAU,eAAe;AACjC,gBAAIA,QAAO,cAAc,QAAQ,UAAU,UAAU;AACrD,uBAAWA,KAAI,IAAI,IAAI;AAAA,cAAmBA;AAAA,cAAM;AAAA,cAAQ;AAAA;AAAA,cACxD;AAAA,cAAe;AAAA,cAAgC;AAAA;AAAA,cAC/C;AAAA,YAAK;AAAA,UACP,CAAC;AAED;AAAA,YAAC;AAAA,YAAY;AAAA,YAAY;AAAA;AAAA;AAAA;AAAA,UAGzB,EAAE,QAAQ,SAAU,eAAe;AACjC,gBAAIA,QAAO,cAAc,QAAQ,UAAU,UAAU;AACrD,uBAAWA,KAAI,IAAI,IAAI;AAAA,cAAmBA;AAAA,cAAM;AAAA,cAAQ;AAAA;AAAA,cACxD;AAAA,cAAe;AAAA,cAAwC;AAAA;AAAA,cACvD;AAAA,YAAK;AAAA,UACP,CAAC;AAID,WAAC,YAAY,aAAa,EAAE,QAAQ,SAAU,eAAe;AAC3D,uBAAW,aAAa,IAAI,IAAI;AAAA,cAAmB;AAAA,cAAe;AAAA,cAAQ;AAAA;AAAA,cAC1E,cAAc,YAAY;AAAA;AAAA,cAC1B;AAAA;AAAA,cACA;AAAA;AAAA,cACA;AAAA,YAAK;AAAA,UACP,CAAC;AAGD,cAAI,YAAY;AAChB,qBAAW,SAAS,IAAI,IAAI;AAAA,YAAmB;AAAA,YAAa;AAAA,YAAQ;AAAA;AAAA,YACpE;AAAA,YAAc;AAAA,YAAgC;AAAA;AAAA,YAC9C;AAAA,UAAK;AACL,WAAC,OAAO,QAAQ,UAAU,YAAY,EAAE,QAAQ,SAAU,eAAe;AACvE,uBAAW,aAAa,IAAI,IAAI;AAAA,cAAmB;AAAA,cAAe;AAAA,cAAQ;AAAA;AAAA,cAC1E,cAAc,YAAY;AAAA;AAAA,cAC1B;AAAA;AAAA,cACA;AAAA;AAAA,cACA;AAAA,YAAI;AAAA,UACN,CAAC;AAYD,cAAI,uBAAuB;AAC3B,cAAI,UAAU;AAEd,mBAAS,YAAY,KAAK;AACxB;AACE,kBAAI,CAAC,WAAW,qBAAqB,KAAK,GAAG,GAAG;AAC9C,0BAAU;AAEV,sBAAM,8NAAwO,KAAK,UAAU,GAAG,CAAC;AAAA,cACnQ;AAAA,YACF;AAAA,UACF;AAOA,mBAAS,oBAAoBK,OAAML,OAAM,UAAU,cAAc;AAC/D;AACE,kBAAI,aAAa,iBAAiB;AAChC,oBAAI,eAAe,aAAa;AAChC,uBAAOK,MAAK,YAAY;AAAA,cAC1B,OAAO;AAIL;AACE,+CAA6B,UAAUL,KAAI;AAAA,gBAC7C;AAEA,oBAAK,aAAa,aAAa;AAK7B,8BAAY,KAAK,QAAQ;AAAA,gBAC3B;AAEA,oBAAI,gBAAgB,aAAa;AACjC,oBAAI,cAAc;AAElB,oBAAI,aAAa,SAAS,oBAAoB;AAC5C,sBAAIK,MAAK,aAAa,aAAa,GAAG;AACpC,wBAAI,QAAQA,MAAK,aAAa,aAAa;AAE3C,wBAAI,UAAU,IAAI;AAChB,6BAAO;AAAA,oBACT;AAEA,wBAAI,sBAAsBL,OAAM,UAAU,cAAc,KAAK,GAAG;AAC9D,6BAAO;AAAA,oBACT;AAGA,wBAAI,UAAU,KAAK,UAAU;AAC3B,6BAAO;AAAA,oBACT;AAEA,2BAAO;AAAA,kBACT;AAAA,gBACF,WAAWK,MAAK,aAAa,aAAa,GAAG;AAC3C,sBAAI,sBAAsBL,OAAM,UAAU,cAAc,KAAK,GAAG;AAG9D,2BAAOK,MAAK,aAAa,aAAa;AAAA,kBACxC;AAEA,sBAAI,aAAa,SAAS,SAAS;AAGjC,2BAAO;AAAA,kBACT;AAMA,gCAAcA,MAAK,aAAa,aAAa;AAAA,gBAC/C;AAEA,oBAAI,sBAAsBL,OAAM,UAAU,cAAc,KAAK,GAAG;AAC9D,yBAAO,gBAAgB,OAAO,WAAW;AAAA,gBAC3C,WAAW,gBAAgB,KAAK,UAAU;AACxC,yBAAO;AAAA,gBACT,OAAO;AACL,yBAAO;AAAA,gBACT;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAOA,mBAAS,qBAAqBK,OAAML,OAAM,UAAU,sBAAsB;AACxE;AACE,kBAAI,CAAC,oBAAoBA,KAAI,GAAG;AAC9B;AAAA,cACF;AAEA,kBAAI,CAACK,MAAK,aAAaL,KAAI,GAAG;AAC5B,uBAAO,aAAa,SAAY,SAAY;AAAA,cAC9C;AAEA,kBAAI,QAAQK,MAAK,aAAaL,KAAI;AAElC;AACE,6CAA6B,UAAUA,KAAI;AAAA,cAC7C;AAEA,kBAAI,UAAU,KAAK,UAAU;AAC3B,uBAAO;AAAA,cACT;AAEA,qBAAO;AAAA,YACT;AAAA,UACF;AASA,mBAAS,oBAAoBK,OAAML,OAAM,OAAO,sBAAsB;AACpE,gBAAI,eAAe,gBAAgBA,KAAI;AAEvC,gBAAI,sBAAsBA,OAAM,cAAc,oBAAoB,GAAG;AACnE;AAAA,YACF;AAEA,gBAAI,sBAAsBA,OAAM,OAAO,cAAc,oBAAoB,GAAG;AAC1E,sBAAQ;AAAA,YACV;AAGA,gBAAI,wBAAwB,iBAAiB,MAAM;AACjD,kBAAI,oBAAoBA,KAAI,GAAG;AAC7B,oBAAI,iBAAiBA;AAErB,oBAAI,UAAU,MAAM;AAClB,kBAAAK,MAAK,gBAAgB,cAAc;AAAA,gBACrC,OAAO;AACL;AACE,iDAA6B,OAAOL,KAAI;AAAA,kBAC1C;AAEA,kBAAAK,MAAK,aAAa,gBAAiB,KAAK,KAAK;AAAA,gBAC/C;AAAA,cACF;AAEA;AAAA,YACF;AAEA,gBAAI,kBAAkB,aAAa;AAEnC,gBAAI,iBAAiB;AACnB,kBAAI,eAAe,aAAa;AAEhC,kBAAI,UAAU,MAAM;AAClB,oBAAI,OAAO,aAAa;AACxB,gBAAAA,MAAK,YAAY,IAAI,SAAS,UAAU,QAAQ;AAAA,cAClD,OAAO;AAGL,gBAAAA,MAAK,YAAY,IAAI;AAAA,cACvB;AAEA;AAAA,YACF;AAGA,gBAAI,gBAAgB,aAAa,eAC7B,qBAAqB,aAAa;AAEtC,gBAAI,UAAU,MAAM;AAClB,cAAAA,MAAK,gBAAgB,aAAa;AAAA,YACpC,OAAO;AACL,kBAAI,QAAQ,aAAa;AACzB,kBAAI;AAEJ,kBAAI,UAAU,WAAW,UAAU,sBAAsB,UAAU,MAAM;AAGvE,iCAAiB;AAAA,cACnB,OAAO;AAGL;AACE;AACE,iDAA6B,OAAO,aAAa;AAAA,kBACnD;AAEA,mCAAiB,KAAK;AAAA,gBACxB;AAEA,oBAAI,aAAa,aAAa;AAC5B,8BAAY,eAAe,SAAS,CAAC;AAAA,gBACvC;AAAA,cACF;AAEA,kBAAI,oBAAoB;AACtB,gBAAAA,MAAK,eAAe,oBAAoB,eAAe,cAAc;AAAA,cACvE,OAAO;AACL,gBAAAA,MAAK,aAAa,eAAe,cAAc;AAAA,cACjD;AAAA,YACF;AAAA,UACF;AAMA,cAAI,qBAAqB,OAAO,IAAI,eAAe;AACnD,cAAI,oBAAoB,OAAO,IAAI,cAAc;AACjD,cAAI,sBAAsB,OAAO,IAAI,gBAAgB;AACrD,cAAI,yBAAyB,OAAO,IAAI,mBAAmB;AAC3D,cAAI,sBAAsB,OAAO,IAAI,gBAAgB;AACrD,cAAI,sBAAsB,OAAO,IAAI,gBAAgB;AACrD,cAAI,qBAAqB,OAAO,IAAI,eAAe;AACnD,cAAI,yBAAyB,OAAO,IAAI,mBAAmB;AAC3D,cAAI,sBAAsB,OAAO,IAAI,gBAAgB;AACrD,cAAI,2BAA2B,OAAO,IAAI,qBAAqB;AAC/D,cAAI,kBAAkB,OAAO,IAAI,YAAY;AAC7C,cAAI,kBAAkB,OAAO,IAAI,YAAY;AAC7C,cAAI,mBAAmB,OAAO,IAAI,aAAa;AAC/C,cAAI,gCAAgC,OAAO,IAAI,wBAAwB;AACvE,cAAI,uBAAuB,OAAO,IAAI,iBAAiB;AACvD,cAAI,2BAA2B,OAAO,IAAI,qBAAqB;AAC/D,cAAI,mBAAmB,OAAO,IAAI,aAAa;AAC/C,cAAI,4BAA4B,OAAO,IAAI,sBAAsB;AACjE,cAAI,wBAAwB,OAAO;AACnC,cAAI,uBAAuB;AAC3B,mBAAS,cAAc,eAAe;AACpC,gBAAI,kBAAkB,QAAQ,OAAO,kBAAkB,UAAU;AAC/D,qBAAO;AAAA,YACT;AAEA,gBAAI,gBAAgB,yBAAyB,cAAc,qBAAqB,KAAK,cAAc,oBAAoB;AAEvH,gBAAI,OAAO,kBAAkB,YAAY;AACvC,qBAAO;AAAA,YACT;AAEA,mBAAO;AAAA,UACT;AAEA,cAAIC,UAAS,OAAO;AAMpB,cAAI,gBAAgB;AACpB,cAAI;AACJ,cAAI;AACJ,cAAI;AACJ,cAAI;AACJ,cAAI;AACJ,cAAI;AACJ,cAAI;AAEJ,mBAAS,cAAc;AAAA,UAAC;AAExB,sBAAY,qBAAqB;AACjC,mBAAS,cAAc;AACrB;AACE,kBAAI,kBAAkB,GAAG;AAEvB,0BAAU,QAAQ;AAClB,2BAAW,QAAQ;AACnB,2BAAW,QAAQ;AACnB,4BAAY,QAAQ;AACpB,4BAAY,QAAQ;AACpB,qCAAqB,QAAQ;AAC7B,+BAAe,QAAQ;AAEvB,oBAAI,QAAQ;AAAA,kBACV,cAAc;AAAA,kBACd,YAAY;AAAA,kBACZ,OAAO;AAAA,kBACP,UAAU;AAAA,gBACZ;AAEA,uBAAO,iBAAiB,SAAS;AAAA,kBAC/B,MAAM;AAAA,kBACN,KAAK;AAAA,kBACL,MAAM;AAAA,kBACN,OAAO;AAAA,kBACP,OAAO;AAAA,kBACP,gBAAgB;AAAA,kBAChB,UAAU;AAAA,gBACZ,CAAC;AAAA,cAEH;AAEA;AAAA,YACF;AAAA,UACF;AACA,mBAAS,eAAe;AACtB;AACE;AAEA,kBAAI,kBAAkB,GAAG;AAEvB,oBAAI,QAAQ;AAAA,kBACV,cAAc;AAAA,kBACd,YAAY;AAAA,kBACZ,UAAU;AAAA,gBACZ;AAEA,uBAAO,iBAAiB,SAAS;AAAA,kBAC/B,KAAKA,QAAO,CAAC,GAAG,OAAO;AAAA,oBACrB,OAAO;AAAA,kBACT,CAAC;AAAA,kBACD,MAAMA,QAAO,CAAC,GAAG,OAAO;AAAA,oBACtB,OAAO;AAAA,kBACT,CAAC;AAAA,kBACD,MAAMA,QAAO,CAAC,GAAG,OAAO;AAAA,oBACtB,OAAO;AAAA,kBACT,CAAC;AAAA,kBACD,OAAOA,QAAO,CAAC,GAAG,OAAO;AAAA,oBACvB,OAAO;AAAA,kBACT,CAAC;AAAA,kBACD,OAAOA,QAAO,CAAC,GAAG,OAAO;AAAA,oBACvB,OAAO;AAAA,kBACT,CAAC;AAAA,kBACD,gBAAgBA,QAAO,CAAC,GAAG,OAAO;AAAA,oBAChC,OAAO;AAAA,kBACT,CAAC;AAAA,kBACD,UAAUA,QAAO,CAAC,GAAG,OAAO;AAAA,oBAC1B,OAAO;AAAA,kBACT,CAAC;AAAA,gBACH,CAAC;AAAA,cAEH;AAEA,kBAAI,gBAAgB,GAAG;AACrB,sBAAM,8EAAmF;AAAA,cAC3F;AAAA,YACF;AAAA,UACF;AAEA,cAAI,yBAAyB,qBAAqB;AAClD,cAAIL;AACJ,mBAAS,8BAA8BD,OAAM,QAAQ,SAAS;AAC5D;AACE,kBAAIC,YAAW,QAAW;AAExB,oBAAI;AACF,wBAAM,MAAM;AAAA,gBACd,SAASM,IAAG;AACV,sBAAIC,SAAQD,GAAE,MAAM,KAAK,EAAE,MAAM,cAAc;AAC/C,kBAAAN,UAASO,UAASA,OAAM,CAAC,KAAK;AAAA,gBAChC;AAAA,cACF;AAGA,qBAAO,OAAOP,UAASD;AAAA,YACzB;AAAA,UACF;AACA,cAAI,UAAU;AACd,cAAI;AAEJ;AACE,gBAAI,kBAAkB,OAAO,YAAY,aAAa,UAAU;AAChE,kCAAsB,IAAI,gBAAgB;AAAA,UAC5C;AAEA,mBAAS,6BAA6B,IAAI,WAAW;AAEnD,gBAAK,CAAC,MAAM,SAAS;AACnB,qBAAO;AAAA,YACT;AAEA;AACE,kBAAIS,SAAQ,oBAAoB,IAAI,EAAE;AAEtC,kBAAIA,WAAU,QAAW;AACvB,uBAAOA;AAAA,cACT;AAAA,YACF;AAEA,gBAAI;AACJ,sBAAU;AACV,gBAAI,4BAA4B,MAAM;AAEtC,kBAAM,oBAAoB;AAC1B,gBAAI;AAEJ;AACE,mCAAqB,uBAAuB;AAG5C,qCAAuB,UAAU;AACjC,0BAAY;AAAA,YACd;AAEA,gBAAI;AAEF,kBAAI,WAAW;AAEb,oBAAI,OAAO,WAAY;AACrB,wBAAM,MAAM;AAAA,gBACd;AAGA,uBAAO,eAAe,KAAK,WAAW,SAAS;AAAA,kBAC7C,KAAK,WAAY;AAGf,0BAAM,MAAM;AAAA,kBACd;AAAA,gBACF,CAAC;AAED,oBAAI,OAAO,YAAY,YAAY,QAAQ,WAAW;AAGpD,sBAAI;AACF,4BAAQ,UAAU,MAAM,CAAC,CAAC;AAAA,kBAC5B,SAASF,IAAG;AACV,8BAAUA;AAAA,kBACZ;AAEA,0BAAQ,UAAU,IAAI,CAAC,GAAG,IAAI;AAAA,gBAChC,OAAO;AACL,sBAAI;AACF,yBAAK,KAAK;AAAA,kBACZ,SAASA,IAAG;AACV,8BAAUA;AAAA,kBACZ;AAEA,qBAAG,KAAK,KAAK,SAAS;AAAA,gBACxB;AAAA,cACF,OAAO;AACL,oBAAI;AACF,wBAAM,MAAM;AAAA,gBACd,SAASA,IAAG;AACV,4BAAUA;AAAA,gBACZ;AAEA,mBAAG;AAAA,cACL;AAAA,YACF,SAAS,QAAQ;AAEf,kBAAI,UAAU,WAAW,OAAO,OAAO,UAAU,UAAU;AAGzD,oBAAI,cAAc,OAAO,MAAM,MAAM,IAAI;AACzC,oBAAI,eAAe,QAAQ,MAAM,MAAM,IAAI;AAC3C,oBAAIG,KAAI,YAAY,SAAS;AAC7B,oBAAIC,KAAI,aAAa,SAAS;AAE9B,uBAAOD,MAAK,KAAKC,MAAK,KAAK,YAAYD,EAAC,MAAM,aAAaC,EAAC,GAAG;AAO7D,kBAAAA;AAAA,gBACF;AAEA,uBAAOD,MAAK,KAAKC,MAAK,GAAGD,MAAKC,MAAK;AAGjC,sBAAI,YAAYD,EAAC,MAAM,aAAaC,EAAC,GAAG;AAMtC,wBAAID,OAAM,KAAKC,OAAM,GAAG;AACtB,yBAAG;AACD,wBAAAD;AACA,wBAAAC;AAGA,4BAAIA,KAAI,KAAK,YAAYD,EAAC,MAAM,aAAaC,EAAC,GAAG;AAE/C,8BAAI,SAAS,OAAO,YAAYD,EAAC,EAAE,QAAQ,YAAY,MAAM;AAK7D,8BAAI,GAAG,eAAe,OAAO,SAAS,aAAa,GAAG;AACpD,qCAAS,OAAO,QAAQ,eAAe,GAAG,WAAW;AAAA,0BACvD;AAEA;AACE,gCAAI,OAAO,OAAO,YAAY;AAC5B,kDAAoB,IAAI,IAAI,MAAM;AAAA,4BACpC;AAAA,0BACF;AAGA,iCAAO;AAAA,wBACT;AAAA,sBACF,SAASA,MAAK,KAAKC,MAAK;AAAA,oBAC1B;AAEA;AAAA,kBACF;AAAA,gBACF;AAAA,cACF;AAAA,YACF,UAAE;AACA,wBAAU;AAEV;AACE,uCAAuB,UAAU;AACjC,6BAAa;AAAA,cACf;AAEA,oBAAM,oBAAoB;AAAA,YAC5B;AAGA,gBAAIX,QAAO,KAAK,GAAG,eAAe,GAAG,OAAO;AAC5C,gBAAI,iBAAiBA,QAAO,8BAA8BA,KAAI,IAAI;AAElE;AACE,kBAAI,OAAO,OAAO,YAAY;AAC5B,oCAAoB,IAAI,IAAI,cAAc;AAAA,cAC5C;AAAA,YACF;AAEA,mBAAO;AAAA,UACT;AAEA,mBAAS,4BAA4B,MAAM,QAAQ,SAAS;AAC1D;AACE,qBAAO,6BAA6B,MAAM,IAAI;AAAA,YAChD;AAAA,UACF;AACA,mBAAS,+BAA+B,IAAI,QAAQ,SAAS;AAC3D;AACE,qBAAO,6BAA6B,IAAI,KAAK;AAAA,YAC/C;AAAA,UACF;AAEA,mBAAS,gBAAgBY,YAAW;AAClC,gBAAI,YAAYA,WAAU;AAC1B,mBAAO,CAAC,EAAE,aAAa,UAAU;AAAA,UACnC;AAEA,mBAAS,qCAAqC,MAAM,QAAQ,SAAS;AAEnE,gBAAI,QAAQ,MAAM;AAChB,qBAAO;AAAA,YACT;AAEA,gBAAI,OAAO,SAAS,YAAY;AAC9B;AACE,uBAAO,6BAA6B,MAAM,gBAAgB,IAAI,CAAC;AAAA,cACjE;AAAA,YACF;AAEA,gBAAI,OAAO,SAAS,UAAU;AAC5B,qBAAO,8BAA8B,IAAI;AAAA,YAC3C;AAEA,oBAAQ,MAAM;AAAA,cACZ,KAAK;AACH,uBAAO,8BAA8B,UAAU;AAAA,cAEjD,KAAK;AACH,uBAAO,8BAA8B,cAAc;AAAA,YACvD;AAEA,gBAAI,OAAO,SAAS,UAAU;AAC5B,sBAAQ,KAAK,UAAU;AAAA,gBACrB,KAAK;AACH,yBAAO,+BAA+B,KAAK,MAAM;AAAA,gBAEnD,KAAK;AAEH,yBAAO,qCAAqC,KAAK,MAAM,QAAQ,OAAO;AAAA,gBAExE,KAAK,iBACH;AACE,sBAAI,gBAAgB;AACpB,sBAAI,UAAU,cAAc;AAC5B,sBAAIC,UAAO,cAAc;AAEzB,sBAAI;AAEF,2BAAO,qCAAqCA,QAAK,OAAO,GAAG,QAAQ,OAAO;AAAA,kBAC5E,SAASN,IAAG;AAAA,kBAAC;AAAA,gBACf;AAAA,cACJ;AAAA,YACF;AAEA,mBAAO;AAAA,UACT;AAEA,mBAAS,cAAc,OAAO;AAC5B,gBAAI,QAAS,MAAM,cAAc,MAAM,YAAY,OAAO;AAC1D,gBAAI,SAAU,MAAM;AAEpB,oBAAQ,MAAM,KAAK;AAAA,cACjB,KAAK;AACH,uBAAO,8BAA8B,MAAM,IAAI;AAAA,cAEjD,KAAK;AACH,uBAAO,8BAA8B,MAAM;AAAA,cAE7C,KAAK;AACH,uBAAO,8BAA8B,UAAU;AAAA,cAEjD,KAAK;AACH,uBAAO,8BAA8B,cAAc;AAAA,cAErD,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AACH,uBAAO,+BAA+B,MAAM,IAAI;AAAA,cAElD,KAAK;AACH,uBAAO,+BAA+B,MAAM,KAAK,MAAM;AAAA,cAEzD,KAAK;AACH,uBAAO,4BAA4B,MAAM,IAAI;AAAA,cAE/C;AACE,uBAAO;AAAA,YACX;AAAA,UACF;AAEA,mBAAS,4BAA4BO,iBAAgB;AACnD,gBAAI;AACF,kBAAI,OAAO;AACX,kBAAIT,QAAOS;AAEX,iBAAG;AACD,wBAAQ,cAAcT,KAAI;AAC1B,gBAAAA,QAAOA,MAAK;AAAA,cACd,SAASA;AAET,qBAAO;AAAA,YACT,SAASE,IAAG;AACV,qBAAO,+BAA+BA,GAAE,UAAU,OAAOA,GAAE;AAAA,YAC7D;AAAA,UACF;AAEA,mBAAS,eAAe,WAAW,WAAW,aAAa;AACzD,gBAAI,cAAc,UAAU;AAE5B,gBAAI,aAAa;AACf,qBAAO;AAAA,YACT;AAEA,gBAAI,eAAe,UAAU,eAAe,UAAU,QAAQ;AAC9D,mBAAO,iBAAiB,KAAK,cAAc,MAAM,eAAe,MAAM;AAAA,UACxE;AAGA,mBAAS,eAAe,MAAM;AAC5B,mBAAO,KAAK,eAAe;AAAA,UAC7B;AAGA,mBAAS,yBAAyB,MAAM;AACtC,gBAAI,QAAQ,MAAM;AAEhB,qBAAO;AAAA,YACT;AAEA;AACE,kBAAI,OAAO,KAAK,QAAQ,UAAU;AAChC,sBAAM,mHAAwH;AAAA,cAChI;AAAA,YACF;AAEA,gBAAI,OAAO,SAAS,YAAY;AAC9B,qBAAO,KAAK,eAAe,KAAK,QAAQ;AAAA,YAC1C;AAEA,gBAAI,OAAO,SAAS,UAAU;AAC5B,qBAAO;AAAA,YACT;AAEA,oBAAQ,MAAM;AAAA,cACZ,KAAK;AACH,uBAAO;AAAA,cAET,KAAK;AACH,uBAAO;AAAA,cAET,KAAK;AACH,uBAAO;AAAA,cAET,KAAK;AACH,uBAAO;AAAA,cAET,KAAK;AACH,uBAAO;AAAA,cAET,KAAK;AACH,uBAAO;AAAA,YAEX;AAEA,gBAAI,OAAO,SAAS,UAAU;AAC5B,sBAAQ,KAAK,UAAU;AAAA,gBACrB,KAAK;AACH,sBAAI,UAAU;AACd,yBAAO,eAAe,OAAO,IAAI;AAAA,gBAEnC,KAAK;AACH,sBAAI,WAAW;AACf,yBAAO,eAAe,SAAS,QAAQ,IAAI;AAAA,gBAE7C,KAAK;AACH,yBAAO,eAAe,MAAM,KAAK,QAAQ,YAAY;AAAA,gBAEvD,KAAK;AACH,sBAAI,YAAY,KAAK,eAAe;AAEpC,sBAAI,cAAc,MAAM;AACtB,2BAAO;AAAA,kBACT;AAEA,yBAAO,yBAAyB,KAAK,IAAI,KAAK;AAAA,gBAEhD,KAAK,iBACH;AACE,sBAAI,gBAAgB;AACpB,sBAAI,UAAU,cAAc;AAC5B,sBAAIM,UAAO,cAAc;AAEzB,sBAAI;AACF,2BAAO,yBAAyBA,QAAK,OAAO,CAAC;AAAA,kBAC/C,SAASN,IAAG;AACV,2BAAO;AAAA,kBACT;AAAA,gBACF;AAAA,cAGJ;AAAA,YACF;AAEA,mBAAO;AAAA,UACT;AAEA,mBAAS,iBAAiB,WAAW,WAAW,aAAa;AAC3D,gBAAI,eAAe,UAAU,eAAe,UAAU,QAAQ;AAC9D,mBAAO,UAAU,gBAAgB,iBAAiB,KAAK,cAAc,MAAM,eAAe,MAAM;AAAA,UAClG;AAGA,mBAAS,iBAAiB,MAAM;AAC9B,mBAAO,KAAK,eAAe;AAAA,UAC7B;AAEA,mBAAS,0BAA0B,OAAO;AACxC,gBAAI,MAAM,MAAM,KACZ,OAAO,MAAM;AAEjB,oBAAQ,KAAK;AAAA,cACX,KAAK;AACH,uBAAO;AAAA,cAET,KAAK;AACH,oBAAI,UAAU;AACd,uBAAO,iBAAiB,OAAO,IAAI;AAAA,cAErC,KAAK;AACH,oBAAI,WAAW;AACf,uBAAO,iBAAiB,SAAS,QAAQ,IAAI;AAAA,cAE/C,KAAK;AACH,uBAAO;AAAA,cAET,KAAK;AACH,uBAAO,iBAAiB,MAAM,KAAK,QAAQ,YAAY;AAAA,cAEzD,KAAKX;AACH,uBAAO;AAAA,cAET,KAAK;AAEH,uBAAO;AAAA,cAET,KAAK;AACH,uBAAO;AAAA,cAET,KAAK;AACH,uBAAO;AAAA,cAET,KAAK;AACH,uBAAO;AAAA,cAET,KAAK;AAEH,uBAAO,yBAAyB,IAAI;AAAA,cAEtC,KAAK;AACH,oBAAI,SAAS,wBAAwB;AAEnC,yBAAO;AAAA,gBACT;AAEA,uBAAO;AAAA,cAET,KAAK;AACH,uBAAO;AAAA,cAET,KAAK;AACH,uBAAO;AAAA,cAET,KAAK;AACH,uBAAO;AAAA,cAET,KAAK;AACH,uBAAO;AAAA,cAET,KAAK;AACH,uBAAO;AAAA,cAET,KAAK;AACH,uBAAO;AAAA,cAGT,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AACH,oBAAI,OAAO,SAAS,YAAY;AAC9B,yBAAO,KAAK,eAAe,KAAK,QAAQ;AAAA,gBAC1C;AAEA,oBAAI,OAAO,SAAS,UAAU;AAC5B,yBAAO;AAAA,gBACT;AAEA;AAAA,YAEJ;AAEA,mBAAO;AAAA,UACT;AAEA,cAAI,yBAAyB,qBAAqB;AAClD,cAAI,UAAU;AACd,cAAI,cAAc;AAClB,mBAAS,sCAAsC;AAC7C;AACE,kBAAI,YAAY,MAAM;AACpB,uBAAO;AAAA,cACT;AAEA,kBAAI,QAAQ,QAAQ;AAEpB,kBAAI,UAAU,QAAQ,OAAO,UAAU,aAAa;AAClD,uBAAO,0BAA0B,KAAK;AAAA,cACxC;AAAA,YACF;AAEA,mBAAO;AAAA,UACT;AAEA,mBAAS,4BAA4B;AACnC;AACE,kBAAI,YAAY,MAAM;AACpB,uBAAO;AAAA,cACT;AAIA,qBAAO,4BAA4B,OAAO;AAAA,YAC5C;AAAA,UACF;AAEA,mBAAS,oBAAoB;AAC3B;AACE,qCAAuB,kBAAkB;AACzC,wBAAU;AACV,4BAAc;AAAA,YAChB;AAAA,UACF;AACA,mBAAS,gBAAgB,OAAO;AAC9B;AACE,qCAAuB,kBAAkB,UAAU,OAAO,OAAO;AACjE,wBAAU;AACV,4BAAc;AAAA,YAChB;AAAA,UACF;AACA,mBAAS,kBAAkB;AACzB;AACE,qBAAO;AAAA,YACT;AAAA,UACF;AACA,mBAAS,eAAe,WAAW;AACjC;AACE,4BAAc;AAAA,YAChB;AAAA,UACF;AAKA,mBAAS,SAAS,OAAO;AAGvB,mBAAO,KAAK;AAAA,UACd;AACA,mBAAS,iBAAiB,OAAO;AAC/B,oBAAQ,OAAO,OAAO;AAAA,cACpB,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AACH,uBAAO;AAAA,cAET,KAAK;AACH;AACE,oDAAkC,KAAK;AAAA,gBACzC;AAEA,uBAAO;AAAA,cAET;AAEE,uBAAO;AAAA,YACX;AAAA,UACF;AAEA,cAAI,mBAAmB;AAAA,YACrB,QAAQ;AAAA,YACR,UAAU;AAAA,YACV,OAAO;AAAA,YACP,QAAQ;AAAA,YACR,OAAO;AAAA,YACP,OAAO;AAAA,YACP,QAAQ;AAAA,UACV;AACA,mBAAS,0BAA0B,SAAS,OAAO;AACjD;AACE,kBAAI,EAAE,iBAAiB,MAAM,IAAI,KAAK,MAAM,YAAY,MAAM,WAAW,MAAM,YAAY,MAAM,YAAY,MAAM,SAAS,OAAO;AACjI,sBAAM,mNAAkO;AAAA,cAC1O;AAEA,kBAAI,EAAE,MAAM,YAAY,MAAM,YAAY,MAAM,YAAY,MAAM,WAAW,OAAO;AAClF,sBAAM,uNAAsO;AAAA,cAC9O;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,YAAY,MAAM;AACzB,gBAAI,OAAO,KAAK;AAChB,gBAAI,WAAW,KAAK;AACpB,mBAAO,YAAY,SAAS,YAAY,MAAM,YAAY,SAAS,cAAc,SAAS;AAAA,UAC5F;AAEA,mBAAS,WAAWS,OAAM;AACxB,mBAAOA,MAAK;AAAA,UACd;AAEA,mBAAS,cAAcA,OAAM;AAC3B,YAAAA,MAAK,gBAAgB;AAAA,UACvB;AAEA,mBAAS,iBAAiBA,OAAM;AAC9B,gBAAI,QAAQ;AAEZ,gBAAI,CAACA,OAAM;AACT,qBAAO;AAAA,YACT;AAEA,gBAAI,YAAYA,KAAI,GAAG;AACrB,sBAAQA,MAAK,UAAU,SAAS;AAAA,YAClC,OAAO;AACL,sBAAQA,MAAK;AAAA,YACf;AAEA,mBAAO;AAAA,UACT;AAEA,mBAAS,iBAAiBA,OAAM;AAC9B,gBAAI,aAAa,YAAYA,KAAI,IAAI,YAAY;AACjD,gBAAI,aAAa,OAAO,yBAAyBA,MAAK,YAAY,WAAW,UAAU;AAEvF;AACE,gDAAkCA,MAAK,UAAU,CAAC;AAAA,YACpD;AAEA,gBAAI,eAAe,KAAKA,MAAK,UAAU;AAKvC,gBAAIA,MAAK,eAAe,UAAU,KAAK,OAAO,eAAe,eAAe,OAAO,WAAW,QAAQ,cAAc,OAAO,WAAW,QAAQ,YAAY;AACxJ;AAAA,YACF;AAEA,gBAAIU,OAAM,WAAW,KACjBC,OAAM,WAAW;AACrB,mBAAO,eAAeX,OAAM,YAAY;AAAA,cACtC,cAAc;AAAA,cACd,KAAK,WAAY;AACf,uBAAOU,KAAI,KAAK,IAAI;AAAA,cACtB;AAAA,cACA,KAAK,SAAU,OAAO;AACpB;AACE,oDAAkC,KAAK;AAAA,gBACzC;AAEA,+BAAe,KAAK;AACpB,gBAAAC,KAAI,KAAK,MAAM,KAAK;AAAA,cACtB;AAAA,YACF,CAAC;AAKD,mBAAO,eAAeX,OAAM,YAAY;AAAA,cACtC,YAAY,WAAW;AAAA,YACzB,CAAC;AACD,gBAAI,UAAU;AAAA,cACZ,UAAU,WAAY;AACpB,uBAAO;AAAA,cACT;AAAA,cACA,UAAU,SAAU,OAAO;AACzB;AACE,oDAAkC,KAAK;AAAA,gBACzC;AAEA,+BAAe,KAAK;AAAA,cACtB;AAAA,cACA,cAAc,WAAY;AACxB,8BAAcA,KAAI;AAClB,uBAAOA,MAAK,UAAU;AAAA,cACxB;AAAA,YACF;AACA,mBAAO;AAAA,UACT;AAEA,mBAAS,MAAMA,OAAM;AACnB,gBAAI,WAAWA,KAAI,GAAG;AACpB;AAAA,YACF;AAGA,YAAAA,MAAK,gBAAgB,iBAAiBA,KAAI;AAAA,UAC5C;AACA,mBAAS,qBAAqBA,OAAM;AAClC,gBAAI,CAACA,OAAM;AACT,qBAAO;AAAA,YACT;AAEA,gBAAI,UAAU,WAAWA,KAAI;AAG7B,gBAAI,CAAC,SAAS;AACZ,qBAAO;AAAA,YACT;AAEA,gBAAI,YAAY,QAAQ,SAAS;AACjC,gBAAI,YAAY,iBAAiBA,KAAI;AAErC,gBAAI,cAAc,WAAW;AAC3B,sBAAQ,SAAS,SAAS;AAC1B,qBAAO;AAAA,YACT;AAEA,mBAAO;AAAA,UACT;AAEA,mBAAS,iBAAiB,KAAK;AAC7B,kBAAM,QAAQ,OAAO,aAAa,cAAc,WAAW;AAE3D,gBAAI,OAAO,QAAQ,aAAa;AAC9B,qBAAO;AAAA,YACT;AAEA,gBAAI;AACF,qBAAO,IAAI,iBAAiB,IAAI;AAAA,YAClC,SAASN,IAAG;AACV,qBAAO,IAAI;AAAA,YACb;AAAA,UACF;AAEA,cAAI,2BAA2B;AAC/B,cAAI,+BAA+B;AACnC,cAAI,kCAAkC;AACtC,cAAI,kCAAkC;AAEtC,mBAAS,aAAa,OAAO;AAC3B,gBAAI,cAAc,MAAM,SAAS,cAAc,MAAM,SAAS;AAC9D,mBAAO,cAAc,MAAM,WAAW,OAAO,MAAM,SAAS;AAAA,UAC9D;AAmBA,mBAAS,aAAa,SAAS,OAAO;AACpC,gBAAIM,QAAO;AACX,gBAAI,UAAU,MAAM;AACpB,gBAAI,YAAYC,QAAO,CAAC,GAAG,OAAO;AAAA,cAChC,gBAAgB;AAAA,cAChB,cAAc;AAAA,cACd,OAAO;AAAA,cACP,SAAS,WAAW,OAAO,UAAUD,MAAK,cAAc;AAAA,YAC1D,CAAC;AACD,mBAAO;AAAA,UACT;AACA,mBAAS,iBAAiB,SAAS,OAAO;AACxC;AACE,wCAA0B,SAAS,KAAK;AAExC,kBAAI,MAAM,YAAY,UAAa,MAAM,mBAAmB,UAAa,CAAC,8BAA8B;AACtG,sBAAM,8WAAuY,oCAAoC,KAAK,eAAe,MAAM,IAAI;AAE/c,+CAA+B;AAAA,cACjC;AAEA,kBAAI,MAAM,UAAU,UAAa,MAAM,iBAAiB,UAAa,CAAC,0BAA0B;AAC9F,sBAAM,sWAA+X,oCAAoC,KAAK,eAAe,MAAM,IAAI;AAEvc,2CAA2B;AAAA,cAC7B;AAAA,YACF;AAEA,gBAAIA,QAAO;AACX,gBAAI,eAAe,MAAM,gBAAgB,OAAO,KAAK,MAAM;AAC3D,YAAAA,MAAK,gBAAgB;AAAA,cACnB,gBAAgB,MAAM,WAAW,OAAO,MAAM,UAAU,MAAM;AAAA,cAC9D,cAAc,iBAAiB,MAAM,SAAS,OAAO,MAAM,QAAQ,YAAY;AAAA,cAC/E,YAAY,aAAa,KAAK;AAAA,YAChC;AAAA,UACF;AACA,mBAAS,cAAc,SAAS,OAAO;AACrC,gBAAIA,QAAO;AACX,gBAAI,UAAU,MAAM;AAEpB,gBAAI,WAAW,MAAM;AACnB,kCAAoBA,OAAM,WAAW,SAAS,KAAK;AAAA,YACrD;AAAA,UACF;AACA,mBAAS,cAAc,SAAS,OAAO;AACrC,gBAAIA,QAAO;AAEX;AACE,kBAAI,aAAa,aAAa,KAAK;AAEnC,kBAAI,CAACA,MAAK,cAAc,cAAc,cAAc,CAAC,iCAAiC;AACpF,sBAAM,sUAA0V;AAEhW,kDAAkC;AAAA,cACpC;AAEA,kBAAIA,MAAK,cAAc,cAAc,CAAC,cAAc,CAAC,iCAAiC;AACpF,sBAAM,+TAAmV;AAEzV,kDAAkC;AAAA,cACpC;AAAA,YACF;AAEA,0BAAc,SAAS,KAAK;AAC5B,gBAAI,QAAQ,iBAAiB,MAAM,KAAK;AACxC,gBAAI,OAAO,MAAM;AAEjB,gBAAI,SAAS,MAAM;AACjB,kBAAI,SAAS,UAAU;AACrB,oBAAI,UAAU,KAAKA,MAAK,UAAU;AAAA;AAAA,gBAElCA,MAAK,SAAS,OAAO;AACnB,kBAAAA,MAAK,QAAQ,SAAS,KAAK;AAAA,gBAC7B;AAAA,cACF,WAAWA,MAAK,UAAU,SAAS,KAAK,GAAG;AACzC,gBAAAA,MAAK,QAAQ,SAAS,KAAK;AAAA,cAC7B;AAAA,YACF,WAAW,SAAS,YAAY,SAAS,SAAS;AAGhD,cAAAA,MAAK,gBAAgB,OAAO;AAC5B;AAAA,YACF;AAEA;AAME,kBAAI,MAAM,eAAe,OAAO,GAAG;AACjC,gCAAgBA,OAAM,MAAM,MAAM,KAAK;AAAA,cACzC,WAAW,MAAM,eAAe,cAAc,GAAG;AAC/C,gCAAgBA,OAAM,MAAM,MAAM,iBAAiB,MAAM,YAAY,CAAC;AAAA,cACxE;AAAA,YACF;AAEA;AAGE,kBAAI,MAAM,WAAW,QAAQ,MAAM,kBAAkB,MAAM;AACzD,gBAAAA,MAAK,iBAAiB,CAAC,CAAC,MAAM;AAAA,cAChC;AAAA,YACF;AAAA,UACF;AACA,mBAAS,iBAAiB,SAAS,OAAOY,cAAa;AACrD,gBAAIZ,QAAO;AAGX,gBAAI,MAAM,eAAe,OAAO,KAAK,MAAM,eAAe,cAAc,GAAG;AACzE,kBAAI,OAAO,MAAM;AACjB,kBAAI,WAAW,SAAS,YAAY,SAAS;AAG7C,kBAAI,aAAa,MAAM,UAAU,UAAa,MAAM,UAAU,OAAO;AACnE;AAAA,cACF;AAEA,kBAAI,eAAe,SAASA,MAAK,cAAc,YAAY;AAG3D,kBAAI,CAACY,cAAa;AAChB;AAOE,sBAAI,iBAAiBZ,MAAK,OAAO;AAC/B,oBAAAA,MAAK,QAAQ;AAAA,kBACf;AAAA,gBACF;AAAA,cACF;AAEA;AAIE,gBAAAA,MAAK,eAAe;AAAA,cACtB;AAAA,YACF;AAOA,gBAAIL,QAAOK,MAAK;AAEhB,gBAAIL,UAAS,IAAI;AACf,cAAAK,MAAK,OAAO;AAAA,YACd;AAEA;AAOE,cAAAA,MAAK,iBAAiB,CAACA,MAAK;AAC5B,cAAAA,MAAK,iBAAiB,CAAC,CAACA,MAAK,cAAc;AAAA,YAC7C;AAEA,gBAAIL,UAAS,IAAI;AACf,cAAAK,MAAK,OAAOL;AAAA,YACd;AAAA,UACF;AACA,mBAAS,uBAAuB,SAAS,OAAO;AAC9C,gBAAIK,QAAO;AACX,0BAAcA,OAAM,KAAK;AACzB,+BAAmBA,OAAM,KAAK;AAAA,UAChC;AAEA,mBAAS,mBAAmB,UAAU,OAAO;AAC3C,gBAAIL,QAAO,MAAM;AAEjB,gBAAI,MAAM,SAAS,WAAWA,SAAQ,MAAM;AAC1C,kBAAI,YAAY;AAEhB,qBAAO,UAAU,YAAY;AAC3B,4BAAY,UAAU;AAAA,cACxB;AASA;AACE,6CAA6BA,OAAM,MAAM;AAAA,cAC3C;AAEA,kBAAI,QAAQ,UAAU,iBAAiB,gBAAgB,KAAK,UAAU,KAAKA,KAAI,IAAI,iBAAiB;AAEpG,uBAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,oBAAI,YAAY,MAAM,CAAC;AAEvB,oBAAI,cAAc,YAAY,UAAU,SAAS,SAAS,MAAM;AAC9D;AAAA,gBACF;AAMA,oBAAI,aAAa,6BAA6B,SAAS;AAEvD,oBAAI,CAAC,YAAY;AACf,wBAAM,IAAI,MAAM,+FAAoG;AAAA,gBACtH;AAIA,qCAAqB,SAAS;AAI9B,8BAAc,WAAW,UAAU;AAAA,cACrC;AAAA,YACF;AAAA,UACF;AAUA,mBAAS,gBAAgBK,OAAM,MAAM,OAAO;AAC1C;AAAA;AAAA,cACA,SAAS,YAAY,iBAAiBA,MAAK,aAAa,MAAMA;AAAA,cAAM;AAClE,kBAAI,SAAS,MAAM;AACjB,gBAAAA,MAAK,eAAe,SAASA,MAAK,cAAc,YAAY;AAAA,cAC9D,WAAWA,MAAK,iBAAiB,SAAS,KAAK,GAAG;AAChD,gBAAAA,MAAK,eAAe,SAAS,KAAK;AAAA,cACpC;AAAA,YACF;AAAA,UACF;AAEA,cAAI,6BAA6B;AACjC,cAAI,sBAAsB;AAC1B,cAAI,0BAA0B;AAK9B,mBAAS,cAAc,SAAS,OAAO;AACrC;AAEE,kBAAI,MAAM,SAAS,MAAM;AACvB,oBAAI,OAAO,MAAM,aAAa,YAAY,MAAM,aAAa,MAAM;AACjE,kBAAAb,SAAM,SAAS,QAAQ,MAAM,UAAU,SAAU,OAAO;AACtD,wBAAI,SAAS,MAAM;AACjB;AAAA,oBACF;AAEA,wBAAI,OAAO,UAAU,YAAY,OAAO,UAAU,UAAU;AAC1D;AAAA,oBACF;AAEA,wBAAI,CAAC,qBAAqB;AACxB,4CAAsB;AAEtB,4BAAM,uHAA4H;AAAA,oBACpI;AAAA,kBACF,CAAC;AAAA,gBACH,WAAW,MAAM,2BAA2B,MAAM;AAChD,sBAAI,CAAC,yBAAyB;AAC5B,8CAA0B;AAE1B,0BAAM,oGAAyG;AAAA,kBACjH;AAAA,gBACF;AAAA,cACF;AAGA,kBAAI,MAAM,YAAY,QAAQ,CAAC,4BAA4B;AACzD,sBAAM,gGAAqG;AAE3G,6CAA6B;AAAA,cAC/B;AAAA,YACF;AAAA,UACF;AACA,mBAAS,mBAAmB,SAAS,OAAO;AAE1C,gBAAI,MAAM,SAAS,MAAM;AACvB,sBAAQ,aAAa,SAAS,SAAS,iBAAiB,MAAM,KAAK,CAAC,CAAC;AAAA,YACvE;AAAA,UACF;AAEA,cAAI,cAAc,MAAM;AAExB,mBAAS0B,SAAQC,IAAG;AAClB,mBAAO,YAAYA,EAAC;AAAA,UACtB;AAEA,cAAI;AAEJ;AACE,yCAA6B;AAAA,UAC/B;AAEA,mBAAS,8BAA8B;AACrC,gBAAI,YAAY,oCAAoC;AAEpD,gBAAI,WAAW;AACb,qBAAO,qCAAqC,YAAY;AAAA,YAC1D;AAEA,mBAAO;AAAA,UACT;AAEA,cAAI,iBAAiB,CAAC,SAAS,cAAc;AAK7C,mBAAS,qBAAqB,OAAO;AACnC;AACE,wCAA0B,UAAU,KAAK;AAEzC,uBAAS,IAAI,GAAG,IAAI,eAAe,QAAQ,KAAK;AAC9C,oBAAI,WAAW,eAAe,CAAC;AAE/B,oBAAI,MAAM,QAAQ,KAAK,MAAM;AAC3B;AAAA,gBACF;AAEA,oBAAI,kBAAkBD,SAAQ,MAAM,QAAQ,CAAC;AAE7C,oBAAI,MAAM,YAAY,CAAC,iBAAiB;AACtC,wBAAM,gFAAqF,UAAU,4BAA4B,CAAC;AAAA,gBACpI,WAAW,CAAC,MAAM,YAAY,iBAAiB;AAC7C,wBAAM,uFAA4F,UAAU,4BAA4B,CAAC;AAAA,gBAC3I;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,cAAcb,OAAM,UAAU,WAAW,oBAAoB;AACpE,gBAAIe,WAAUf,MAAK;AAEnB,gBAAI,UAAU;AACZ,kBAAI,iBAAiB;AACrB,kBAAI,gBAAgB,CAAC;AAErB,uBAAS,IAAI,GAAG,IAAI,eAAe,QAAQ,KAAK;AAE9C,8BAAc,MAAM,eAAe,CAAC,CAAC,IAAI;AAAA,cAC3C;AAEA,uBAAS,KAAK,GAAG,KAAKe,SAAQ,QAAQ,MAAM;AAC1C,oBAAI,WAAW,cAAc,eAAe,MAAMA,SAAQ,EAAE,EAAE,KAAK;AAEnE,oBAAIA,SAAQ,EAAE,EAAE,aAAa,UAAU;AACrC,kBAAAA,SAAQ,EAAE,EAAE,WAAW;AAAA,gBACzB;AAEA,oBAAI,YAAY,oBAAoB;AAClC,kBAAAA,SAAQ,EAAE,EAAE,kBAAkB;AAAA,gBAChC;AAAA,cACF;AAAA,YACF,OAAO;AAGL,kBAAI,iBAAiB,SAAS,iBAAiB,SAAS,CAAC;AAEzD,kBAAI,kBAAkB;AAEtB,uBAAS,MAAM,GAAG,MAAMA,SAAQ,QAAQ,OAAO;AAC7C,oBAAIA,SAAQ,GAAG,EAAE,UAAU,gBAAgB;AACzC,kBAAAA,SAAQ,GAAG,EAAE,WAAW;AAExB,sBAAI,oBAAoB;AACtB,oBAAAA,SAAQ,GAAG,EAAE,kBAAkB;AAAA,kBACjC;AAEA;AAAA,gBACF;AAEA,oBAAI,oBAAoB,QAAQ,CAACA,SAAQ,GAAG,EAAE,UAAU;AACtD,oCAAkBA,SAAQ,GAAG;AAAA,gBAC/B;AAAA,cACF;AAEA,kBAAI,oBAAoB,MAAM;AAC5B,gCAAgB,WAAW;AAAA,cAC7B;AAAA,YACF;AAAA,UACF;AAkBA,mBAAS,eAAe,SAAS,OAAO;AACtC,mBAAOd,QAAO,CAAC,GAAG,OAAO;AAAA,cACvB,OAAO;AAAA,YACT,CAAC;AAAA,UACH;AACA,mBAAS,mBAAmB,SAAS,OAAO;AAC1C,gBAAID,QAAO;AAEX;AACE,mCAAqB,KAAK;AAAA,YAC5B;AAEA,YAAAA,MAAK,gBAAgB;AAAA,cACnB,aAAa,CAAC,CAAC,MAAM;AAAA,YACvB;AAEA;AACE,kBAAI,MAAM,UAAU,UAAa,MAAM,iBAAiB,UAAa,CAAC,4BAA4B;AAChG,sBAAM,8RAAkT;AAExT,6CAA6B;AAAA,cAC/B;AAAA,YACF;AAAA,UACF;AACA,mBAAS,mBAAmB,SAAS,OAAO;AAC1C,gBAAIA,QAAO;AACX,YAAAA,MAAK,WAAW,CAAC,CAAC,MAAM;AACxB,gBAAI,QAAQ,MAAM;AAElB,gBAAI,SAAS,MAAM;AACjB,4BAAcA,OAAM,CAAC,CAAC,MAAM,UAAU,OAAO,KAAK;AAAA,YACpD,WAAW,MAAM,gBAAgB,MAAM;AACrC,4BAAcA,OAAM,CAAC,CAAC,MAAM,UAAU,MAAM,cAAc,IAAI;AAAA,YAChE;AAAA,UACF;AACA,mBAAS,kBAAkB,SAAS,OAAO;AACzC,gBAAIA,QAAO;AACX,gBAAI,cAAcA,MAAK,cAAc;AACrC,YAAAA,MAAK,cAAc,cAAc,CAAC,CAAC,MAAM;AACzC,gBAAI,QAAQ,MAAM;AAElB,gBAAI,SAAS,MAAM;AACjB,4BAAcA,OAAM,CAAC,CAAC,MAAM,UAAU,OAAO,KAAK;AAAA,YACpD,WAAW,gBAAgB,CAAC,CAAC,MAAM,UAAU;AAE3C,kBAAI,MAAM,gBAAgB,MAAM;AAC9B,8BAAcA,OAAM,CAAC,CAAC,MAAM,UAAU,MAAM,cAAc,IAAI;AAAA,cAChE,OAAO;AAEL,8BAAcA,OAAM,CAAC,CAAC,MAAM,UAAU,MAAM,WAAW,CAAC,IAAI,IAAI,KAAK;AAAA,cACvE;AAAA,YACF;AAAA,UACF;AACA,mBAAS,yBAAyB,SAAS,OAAO;AAChD,gBAAIA,QAAO;AACX,gBAAI,QAAQ,MAAM;AAElB,gBAAI,SAAS,MAAM;AACjB,4BAAcA,OAAM,CAAC,CAAC,MAAM,UAAU,OAAO,KAAK;AAAA,YACpD;AAAA,UACF;AAEA,cAAI,uBAAuB;AAiB3B,mBAAS,eAAe,SAAS,OAAO;AACtC,gBAAIA,QAAO;AAEX,gBAAI,MAAM,2BAA2B,MAAM;AACzC,oBAAM,IAAI,MAAM,8DAA8D;AAAA,YAChF;AAQA,gBAAI,YAAYC,QAAO,CAAC,GAAG,OAAO;AAAA,cAChC,OAAO;AAAA,cACP,cAAc;AAAA,cACd,UAAU,SAASD,MAAK,cAAc,YAAY;AAAA,YACpD,CAAC;AAED,mBAAO;AAAA,UACT;AACA,mBAAS,mBAAmB,SAAS,OAAO;AAC1C,gBAAIA,QAAO;AAEX;AACE,wCAA0B,YAAY,KAAK;AAE3C,kBAAI,MAAM,UAAU,UAAa,MAAM,iBAAiB,UAAa,CAAC,sBAAsB;AAC1F,sBAAM,2VAAoX,oCAAoC,KAAK,aAAa;AAEhb,uCAAuB;AAAA,cACzB;AAAA,YACF;AAEA,gBAAI,eAAe,MAAM;AAEzB,gBAAI,gBAAgB,MAAM;AACxB,kBAAI,WAAW,MAAM,UACjB,eAAe,MAAM;AAEzB,kBAAI,YAAY,MAAM;AACpB;AACE,wBAAM,oFAAyF;AAAA,gBACjG;AAEA;AACE,sBAAI,gBAAgB,MAAM;AACxB,0BAAM,IAAI,MAAM,qEAAqE;AAAA,kBACvF;AAEA,sBAAIa,SAAQ,QAAQ,GAAG;AACrB,wBAAI,SAAS,SAAS,GAAG;AACvB,4BAAM,IAAI,MAAM,6CAA6C;AAAA,oBAC/D;AAEA,+BAAW,SAAS,CAAC;AAAA,kBACvB;AAEA,iCAAe;AAAA,gBACjB;AAAA,cACF;AAEA,kBAAI,gBAAgB,MAAM;AACxB,+BAAe;AAAA,cACjB;AAEA,6BAAe;AAAA,YACjB;AAEA,YAAAb,MAAK,gBAAgB;AAAA,cACnB,cAAc,iBAAiB,YAAY;AAAA,YAC7C;AAAA,UACF;AACA,mBAAS,gBAAgB,SAAS,OAAO;AACvC,gBAAIA,QAAO;AACX,gBAAI,QAAQ,iBAAiB,MAAM,KAAK;AACxC,gBAAI,eAAe,iBAAiB,MAAM,YAAY;AAEtD,gBAAI,SAAS,MAAM;AAGjB,kBAAI,WAAW,SAAS,KAAK;AAE7B,kBAAI,aAAaA,MAAK,OAAO;AAC3B,gBAAAA,MAAK,QAAQ;AAAA,cACf;AAEA,kBAAI,MAAM,gBAAgB,QAAQA,MAAK,iBAAiB,UAAU;AAChE,gBAAAA,MAAK,eAAe;AAAA,cACtB;AAAA,YACF;AAEA,gBAAI,gBAAgB,MAAM;AACxB,cAAAA,MAAK,eAAe,SAAS,YAAY;AAAA,YAC3C;AAAA,UACF;AACA,mBAAS,mBAAmB,SAAS,OAAO;AAC1C,gBAAIA,QAAO;AAGX,gBAAI,cAAcA,MAAK;AAKvB,gBAAI,gBAAgBA,MAAK,cAAc,cAAc;AACnD,kBAAI,gBAAgB,MAAM,gBAAgB,MAAM;AAC9C,gBAAAA,MAAK,QAAQ;AAAA,cACf;AAAA,YACF;AAAA,UACF;AACA,mBAAS,yBAAyB,SAAS,OAAO;AAEhD,4BAAgB,SAAS,KAAK;AAAA,UAChC;AAEA,cAAI,iBAAiB;AACrB,cAAI,iBAAiB;AACrB,cAAI,gBAAgB;AAEpB,mBAAS,sBAAsB,MAAM;AACnC,oBAAQ,MAAM;AAAA,cACZ,KAAK;AACH,uBAAO;AAAA,cAET,KAAK;AACH,uBAAO;AAAA,cAET;AACE,uBAAO;AAAA,YACX;AAAA,UACF;AACA,mBAAS,kBAAkB,iBAAiB,MAAM;AAChD,gBAAI,mBAAmB,QAAQ,oBAAoB,gBAAgB;AAEjE,qBAAO,sBAAsB,IAAI;AAAA,YACnC;AAEA,gBAAI,oBAAoB,iBAAiB,SAAS,iBAAiB;AAEjE,qBAAO;AAAA,YACT;AAGA,mBAAO;AAAA,UACT;AAOA,cAAI,qCAAqC,SAAU,MAAM;AACvD,gBAAI,OAAO,UAAU,eAAe,MAAM,yBAAyB;AACjE,qBAAO,SAAU,MAAM,MAAM,MAAM,MAAM;AACvC,sBAAM,wBAAwB,WAAY;AACxC,yBAAO,KAAK,MAAM,MAAM,MAAM,IAAI;AAAA,gBACpC,CAAC;AAAA,cACH;AAAA,YACF,OAAO;AACL,qBAAO;AAAA,YACT;AAAA,UACF;AAEA,cAAI;AASJ,cAAI,eAAe,mCAAmC,SAAUA,OAAM,MAAM;AAC1E,gBAAIA,MAAK,iBAAiB,eAAe;AAEvC,kBAAI,EAAE,eAAeA,QAAO;AAI1B,uCAAuB,wBAAwB,SAAS,cAAc,KAAK;AAC3E,qCAAqB,YAAY,UAAU,KAAK,QAAQ,EAAE,SAAS,IAAI;AACvE,oBAAI,UAAU,qBAAqB;AAEnC,uBAAOA,MAAK,YAAY;AACtB,kBAAAA,MAAK,YAAYA,MAAK,UAAU;AAAA,gBAClC;AAEA,uBAAO,QAAQ,YAAY;AACzB,kBAAAA,MAAK,YAAY,QAAQ,UAAU;AAAA,gBACrC;AAEA;AAAA,cACF;AAAA,YACF;AAEA,YAAAA,MAAK,YAAY;AAAA,UACnB,CAAC;AAKD,cAAI,eAAe;AACnB,cAAI,YAAY;AAChB,cAAI,eAAe;AACnB,cAAI,gBAAgB;AACpB,cAAI,yBAAyB;AAY7B,cAAI,iBAAiB,SAAUA,OAAM,MAAM;AACzC,gBAAI,MAAM;AACR,kBAAI,aAAaA,MAAK;AAEtB,kBAAI,cAAc,eAAeA,MAAK,aAAa,WAAW,aAAa,WAAW;AACpF,2BAAW,YAAY;AACvB;AAAA,cACF;AAAA,YACF;AAEA,YAAAA,MAAK,cAAc;AAAA,UACrB;AAIA,cAAI,sBAAsB;AAAA,YACxB,WAAW,CAAC,kBAAkB,sBAAsB,qBAAqB,qBAAqB,2BAA2B,iBAAiB,sBAAsB,yBAAyB;AAAA,YACzL,YAAY,CAAC,wBAAwB,kBAAkB,mBAAmB,mBAAmB,oBAAoB,uBAAuB,uBAAuB,oBAAoB,gBAAgB;AAAA,YACnM,oBAAoB,CAAC,uBAAuB,qBAAqB;AAAA,YACjE,QAAQ,CAAC,qBAAqB,qBAAqB,qBAAqB,qBAAqB,qBAAqB,oBAAoB,qBAAqB,oBAAoB,mBAAmB,mBAAmB,mBAAmB,oBAAoB,oBAAoB,oBAAoB,kBAAkB,kBAAkB,gBAAgB;AAAA,YACxV,gBAAgB,CAAC,uBAAuB,uBAAuB,qBAAqB;AAAA,YACpF,kBAAkB,CAAC,yBAAyB,yBAAyB,uBAAuB;AAAA,YAC5F,cAAc,CAAC,qBAAqB,qBAAqB,mBAAmB;AAAA,YAC5E,aAAa,CAAC,qBAAqB,mBAAmB,oBAAoB,gBAAgB;AAAA,YAC1F,aAAa,CAAC,qBAAqB,qBAAqB,oBAAoB,qBAAqB,kBAAkB;AAAA,YACnH,iBAAiB,CAAC,wBAAwB,wBAAwB,sBAAsB;AAAA,YACxF,mBAAmB,CAAC,0BAA0B,0BAA0B,wBAAwB;AAAA,YAChG,YAAY,CAAC,mBAAmB,mBAAmB,iBAAiB;AAAA,YACpE,cAAc,CAAC,0BAA0B,2BAA2B,uBAAuB,sBAAsB;AAAA,YACjH,aAAa,CAAC,oBAAoB,oBAAoB,kBAAkB;AAAA,YACxE,aAAa,CAAC,qBAAqB,mBAAmB,oBAAoB,gBAAgB;AAAA,YAC1F,WAAW,CAAC,kBAAkB,kBAAkB,gBAAgB;AAAA,YAChE,aAAa,CAAC,qBAAqB,mBAAmB,oBAAoB,gBAAgB;AAAA,YAC1F,YAAY,CAAC,mBAAmB,mBAAmB,iBAAiB;AAAA,YACpE,SAAS,CAAC,eAAe,aAAa;AAAA,YACtC,MAAM,CAAC,aAAa,YAAY,YAAY;AAAA,YAC5C,UAAU,CAAC,iBAAiB,UAAU;AAAA,YACtC,MAAM,CAAC,cAAc,uBAAuB,eAAe,wBAAwB,YAAY,kBAAkB,eAAe,aAAa,eAAe,yBAAyB,mBAAmB,wBAAwB,wBAAwB,sBAAsB,uBAAuB,cAAc,YAAY;AAAA,YAC/T,aAAa,CAAC,yBAAyB,mBAAmB,wBAAwB,wBAAwB,sBAAsB,qBAAqB;AAAA,YACrJ,KAAK,CAAC,aAAa,QAAQ;AAAA,YAC3B,MAAM,CAAC,mBAAmB,gBAAgB,gBAAgB,qBAAqB,uBAAuB,kBAAkB;AAAA,YACxH,UAAU,CAAC,iBAAiB,mBAAmB,cAAc,cAAc;AAAA,YAC3E,YAAY,CAAC,iBAAiB,iBAAiB;AAAA,YAC/C,eAAe,CAAC,WAAW;AAAA,YAC3B,SAAS,CAAC,aAAa,QAAQ;AAAA,YAC/B,SAAS,CAAC,cAAc,cAAc;AAAA,YACtC,YAAY,CAAC,QAAQ;AAAA,YACrB,cAAc,CAAC,qBAAqB,uBAAuB,kBAAkB;AAAA,YAC7E,WAAW,CAAC,kBAAkB,qBAAqB,eAAe;AAAA,YAClE,QAAQ,CAAC,gBAAgB,cAAc,eAAe,WAAW;AAAA,YACjE,QAAQ,CAAC,aAAa,aAAa,aAAa;AAAA,YAChD,MAAM,CAAC,YAAY,iBAAiB,aAAa,YAAY,cAAc,iBAAiB,iBAAiB,cAAc,UAAU;AAAA,YACrI,cAAc,CAAC,iBAAiB,eAAe;AAAA,YAC/C,SAAS,CAAC,gBAAgB,gBAAgB,cAAc;AAAA,YACxD,UAAU,CAAC,aAAa,WAAW;AAAA,YACnC,SAAS,CAAC,iBAAiB,eAAe,gBAAgB,YAAY;AAAA,YACtE,cAAc,CAAC,gBAAgB,gBAAgB;AAAA,YAC/C,YAAY,CAAC,cAAc,cAAc;AAAA,YACzC,WAAW,CAAC,aAAa,aAAa;AAAA,YACtC,gBAAgB,CAAC,uBAAuB,sBAAsB,qBAAqB;AAAA,YACnF,cAAc,CAAC,qBAAqB,mBAAmB;AAAA,YACvD,YAAY,CAAC,mBAAmB,sBAAsB,sBAAsB,0BAA0B;AAAA,YACtG,UAAU,CAAC,cAAc;AAAA,UAC3B;AAKA,cAAI,mBAAmB;AAAA,YACrB,yBAAyB;AAAA,YACzB,aAAa;AAAA,YACb,mBAAmB;AAAA,YACnB,kBAAkB;AAAA,YAClB,kBAAkB;AAAA,YAClB,SAAS;AAAA,YACT,cAAc;AAAA,YACd,iBAAiB;AAAA,YACjB,aAAa;AAAA,YACb,SAAS;AAAA,YACT,MAAM;AAAA,YACN,UAAU;AAAA,YACV,cAAc;AAAA,YACd,YAAY;AAAA,YACZ,cAAc;AAAA,YACd,WAAW;AAAA,YACX,UAAU;AAAA,YACV,SAAS;AAAA,YACT,YAAY;AAAA,YACZ,aAAa;AAAA,YACb,cAAc;AAAA,YACd,YAAY;AAAA,YACZ,eAAe;AAAA,YACf,gBAAgB;AAAA,YAChB,iBAAiB;AAAA,YACjB,YAAY;AAAA,YACZ,WAAW;AAAA,YACX,YAAY;AAAA,YACZ,SAAS;AAAA,YACT,OAAO;AAAA,YACP,SAAS;AAAA,YACT,SAAS;AAAA,YACT,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,MAAM;AAAA;AAAA,YAEN,aAAa;AAAA,YACb,cAAc;AAAA,YACd,aAAa;AAAA,YACb,iBAAiB;AAAA,YACjB,kBAAkB;AAAA,YAClB,kBAAkB;AAAA,YAClB,eAAe;AAAA,YACf,aAAa;AAAA,UACf;AAQA,mBAAS,UAAUJ,SAAQ,KAAK;AAC9B,mBAAOA,UAAS,IAAI,OAAO,CAAC,EAAE,YAAY,IAAI,IAAI,UAAU,CAAC;AAAA,UAC/D;AAOA,cAAIoB,YAAW,CAAC,UAAU,MAAM,OAAO,GAAG;AAG1C,iBAAO,KAAK,gBAAgB,EAAE,QAAQ,SAAU,MAAM;AACpD,YAAAA,UAAS,QAAQ,SAAUpB,SAAQ;AACjC,+BAAiB,UAAUA,SAAQ,IAAI,CAAC,IAAI,iBAAiB,IAAI;AAAA,YACnE,CAAC;AAAA,UACH,CAAC;AAYD,mBAAS,oBAAoBD,OAAM,OAAOsB,mBAAkB;AAU1D,gBAAI,UAAU,SAAS,QAAQ,OAAO,UAAU,aAAa,UAAU;AAEvE,gBAAI,SAAS;AACX,qBAAO;AAAA,YACT;AAEA,gBAAI,CAACA,qBAAoB,OAAO,UAAU,YAAY,UAAU,KAAK,EAAE,iBAAiB,eAAetB,KAAI,KAAK,iBAAiBA,KAAI,IAAI;AACvI,qBAAO,QAAQ;AAAA,YACjB;AAEA;AACE,6CAA+B,OAAOA,KAAI;AAAA,YAC5C;AAEA,oBAAQ,KAAK,OAAO,KAAK;AAAA,UAC3B;AAEA,cAAI,mBAAmB;AACvB,cAAIuB,aAAY;AAehB,mBAASC,oBAAmBxB,OAAM;AAChC,mBAAOA,MAAK,QAAQ,kBAAkB,KAAK,EAAE,YAAY,EAAE,QAAQuB,YAAW,MAAM;AAAA,UACtF;AAEA,cAAI,iBAAiB,WAAY;AAAA,UAAC;AAElC;AAEE,gBAAI,8BAA8B;AAClC,gBAAI,cAAc;AAClB,gBAAI,gBAAgB;AAEpB,gBAAI,oCAAoC;AACxC,gBAAI,mBAAmB,CAAC;AACxB,gBAAI,oBAAoB,CAAC;AACzB,gBAAI,oBAAoB;AACxB,gBAAI,yBAAyB;AAE7B,gBAAIE,YAAW,SAAU,QAAQ;AAC/B,qBAAO,OAAO,QAAQ,eAAe,SAAU,GAAGC,YAAW;AAC3D,uBAAOA,WAAU,YAAY;AAAA,cAC/B,CAAC;AAAA,YACH;AAEA,gBAAI,0BAA0B,SAAU1B,OAAM;AAC5C,kBAAI,iBAAiB,eAAeA,KAAI,KAAK,iBAAiBA,KAAI,GAAG;AACnE;AAAA,cACF;AAEA,+BAAiBA,KAAI,IAAI;AAEzB;AAAA,gBAAM;AAAA,gBAAmDA;AAAA;AAAA;AAAA;AAAA,gBAGzDyB,UAASzB,MAAK,QAAQ,aAAa,KAAK,CAAC;AAAA,cAAC;AAAA,YAC5C;AAEA,gBAAI,2BAA2B,SAAUA,OAAM;AAC7C,kBAAI,iBAAiB,eAAeA,KAAI,KAAK,iBAAiBA,KAAI,GAAG;AACnE;AAAA,cACF;AAEA,+BAAiBA,KAAI,IAAI;AAEzB,oBAAM,mEAAmEA,OAAMA,MAAK,OAAO,CAAC,EAAE,YAAY,IAAIA,MAAK,MAAM,CAAC,CAAC;AAAA,YAC7H;AAEA,gBAAI,8BAA8B,SAAUA,OAAM,OAAO;AACvD,kBAAI,kBAAkB,eAAe,KAAK,KAAK,kBAAkB,KAAK,GAAG;AACvE;AAAA,cACF;AAEA,gCAAkB,KAAK,IAAI;AAE3B,oBAAM,8EAAmFA,OAAM,MAAM,QAAQ,mCAAmC,EAAE,CAAC;AAAA,YACrJ;AAEA,gBAAI,sBAAsB,SAAUA,OAAM,OAAO;AAC/C,kBAAI,mBAAmB;AACrB;AAAA,cACF;AAEA,kCAAoB;AAEpB,oBAAM,8DAA8DA,KAAI;AAAA,YAC1E;AAEA,gBAAI,2BAA2B,SAAUA,OAAM,OAAO;AACpD,kBAAI,wBAAwB;AAC1B;AAAA,cACF;AAEA,uCAAyB;AAEzB,oBAAM,mEAAmEA,KAAI;AAAA,YAC/E;AAEA,6BAAiB,SAAUA,OAAM,OAAO;AACtC,kBAAIA,MAAK,QAAQ,GAAG,IAAI,IAAI;AAC1B,wCAAwBA,KAAI;AAAA,cAC9B,WAAW,4BAA4B,KAAKA,KAAI,GAAG;AACjD,yCAAyBA,KAAI;AAAA,cAC/B,WAAW,kCAAkC,KAAK,KAAK,GAAG;AACxD,4CAA4BA,OAAM,KAAK;AAAA,cACzC;AAEA,kBAAI,OAAO,UAAU,UAAU;AAC7B,oBAAI,MAAM,KAAK,GAAG;AAChB,sCAAoBA,OAAM,KAAK;AAAA,gBACjC,WAAW,CAAC,SAAS,KAAK,GAAG;AAC3B,2CAAyBA,OAAM,KAAK;AAAA,gBACtC;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAEA,cAAI,mBAAmB;AAavB,mBAAS,+BAA+B,QAAQ;AAC9C;AACE,kBAAI,aAAa;AACjB,kBAAI2B,aAAY;AAEhB,uBAAS,aAAa,QAAQ;AAC5B,oBAAI,CAAC,OAAO,eAAe,SAAS,GAAG;AACrC;AAAA,gBACF;AAEA,oBAAI,aAAa,OAAO,SAAS;AAEjC,oBAAI,cAAc,MAAM;AACtB,sBAAIL,oBAAmB,UAAU,QAAQ,IAAI,MAAM;AACnD,gCAAcK,cAAaL,oBAAmB,YAAYE,oBAAmB,SAAS,KAAK;AAC3F,gCAAc,oBAAoB,WAAW,YAAYF,iBAAgB;AACzE,kBAAAK,aAAY;AAAA,gBACd;AAAA,cACF;AAEA,qBAAO,cAAc;AAAA,YACvB;AAAA,UACF;AASA,mBAAS,kBAAkBtB,OAAM,QAAQ;AACvC,gBAAIuB,SAAQvB,MAAK;AAEjB,qBAAS,aAAa,QAAQ;AAC5B,kBAAI,CAAC,OAAO,eAAe,SAAS,GAAG;AACrC;AAAA,cACF;AAEA,kBAAIiB,oBAAmB,UAAU,QAAQ,IAAI,MAAM;AAEnD;AACE,oBAAI,CAACA,mBAAkB;AACrB,mCAAiB,WAAW,OAAO,SAAS,CAAC;AAAA,gBAC/C;AAAA,cACF;AAEA,kBAAI,aAAa,oBAAoB,WAAW,OAAO,SAAS,GAAGA,iBAAgB;AAEnF,kBAAI,cAAc,SAAS;AACzB,4BAAY;AAAA,cACd;AAEA,kBAAIA,mBAAkB;AACpB,gBAAAM,OAAM,YAAY,WAAW,UAAU;AAAA,cACzC,OAAO;AACL,gBAAAA,OAAM,SAAS,IAAI;AAAA,cACrB;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,aAAa,OAAO;AAC3B,mBAAO,SAAS,QAAQ,OAAO,UAAU,aAAa,UAAU;AAAA,UAClE;AAWA,mBAAS,mBAAmB,QAAQ;AAClC,gBAAI,WAAW,CAAC;AAEhB,qBAAS,OAAO,QAAQ;AACtB,kBAAI,YAAY,oBAAoB,GAAG,KAAK,CAAC,GAAG;AAEhD,uBAAS,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAK;AACzC,yBAAS,UAAU,CAAC,CAAC,IAAI;AAAA,cAC3B;AAAA,YACF;AAEA,mBAAO;AAAA,UACT;AAiBA,mBAAS,wCAAwC,cAAc,YAAY;AACzE;AACE,kBAAI,CAAC,YAAY;AACf;AAAA,cACF;AAEA,kBAAI,kBAAkB,mBAAmB,YAAY;AACrD,kBAAI,iBAAiB,mBAAmB,UAAU;AAClD,kBAAI,cAAc,CAAC;AAEnB,uBAAS,OAAO,iBAAiB;AAC/B,oBAAI,cAAc,gBAAgB,GAAG;AACrC,oBAAI,qBAAqB,eAAe,GAAG;AAE3C,oBAAI,sBAAsB,gBAAgB,oBAAoB;AAC5D,sBAAI,aAAa,cAAc,MAAM;AAErC,sBAAI,YAAY,UAAU,GAAG;AAC3B;AAAA,kBACF;AAEA,8BAAY,UAAU,IAAI;AAE1B,wBAAM,uPAA2Q,aAAa,aAAa,WAAW,CAAC,IAAI,aAAa,YAAY,aAAa,kBAAkB;AAAA,gBACrX;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAIA,cAAI,mBAAmB;AAAA,YACrB,MAAM;AAAA,YACN,MAAM;AAAA,YACN,IAAI;AAAA,YACJ,KAAK;AAAA,YACL,OAAO;AAAA,YACP,IAAI;AAAA,YACJ,KAAK;AAAA,YACL,OAAO;AAAA,YACP,QAAQ;AAAA,YACR,MAAM;AAAA,YACN,MAAM;AAAA,YACN,OAAO;AAAA,YACP,QAAQ;AAAA,YACR,OAAO;AAAA,YACP,KAAK;AAAA;AAAA,UAEP;AAIA,cAAI,kBAAkBtB,QAAO;AAAA,YAC3B,UAAU;AAAA,UACZ,GAAG,gBAAgB;AAEnB,cAAI,OAAO;AAEX,mBAAS,iBAAiB,KAAK,OAAO;AACpC,gBAAI,CAAC,OAAO;AACV;AAAA,YACF;AAGA,gBAAI,gBAAgB,GAAG,GAAG;AACxB,kBAAI,MAAM,YAAY,QAAQ,MAAM,2BAA2B,MAAM;AACnE,sBAAM,IAAI,MAAM,MAAM,4FAAiG;AAAA,cACzH;AAAA,YACF;AAEA,gBAAI,MAAM,2BAA2B,MAAM;AACzC,kBAAI,MAAM,YAAY,MAAM;AAC1B,sBAAM,IAAI,MAAM,oEAAoE;AAAA,cACtF;AAEA,kBAAI,OAAO,MAAM,4BAA4B,YAAY,EAAE,QAAQ,MAAM,0BAA0B;AACjG,sBAAM,IAAI,MAAM,6JAAuK;AAAA,cACzL;AAAA,YACF;AAEA;AACE,kBAAI,CAAC,MAAM,kCAAkC,MAAM,mBAAmB,MAAM,YAAY,MAAM;AAC5F,sBAAM,2NAA0O;AAAA,cAClP;AAAA,YACF;AAEA,gBAAI,MAAM,SAAS,QAAQ,OAAO,MAAM,UAAU,UAAU;AAC1D,oBAAM,IAAI,MAAM,sJAAgK;AAAA,YAClL;AAAA,UACF;AAEA,mBAAS,kBAAkB,SAAS,OAAO;AACzC,gBAAI,QAAQ,QAAQ,GAAG,MAAM,IAAI;AAC/B,qBAAO,OAAO,MAAM,OAAO;AAAA,YAC7B;AAEA,oBAAQ,SAAS;AAAA,cAKf,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AACH,uBAAO;AAAA,cAET;AACE,uBAAO;AAAA,YACX;AAAA,UACF;AAKA,cAAI,wBAAwB;AAAA;AAAA,YAE1B,QAAQ;AAAA,YACR,eAAe;AAAA,YACf,kBAAkB;AAAA,YAClB,WAAW;AAAA,YACX,QAAQ;AAAA,YACR,iBAAiB;AAAA,YACjB,KAAK;AAAA,YACL,IAAI;AAAA,YACJ,OAAO;AAAA,YACP,gBAAgB;AAAA,YAChB,cAAc;AAAA,YACd,aAAa;AAAA,YACb,WAAW;AAAA,YACX,UAAU;AAAA,YACV,UAAU;AAAA,YACV,SAAS;AAAA,YACT,aAAa;AAAA,YACb,aAAa;AAAA,YACb,WAAW;AAAA,YACX,SAAS;AAAA,YACT,SAAS;AAAA,YACT,UAAU;AAAA,YACV,MAAM;AAAA,YACN,OAAO;AAAA,YACP,SAAS;AAAA,YACT,WAAW;AAAA,YACX,MAAM;AAAA,YACN,SAAS;AAAA,YACT,SAAS;AAAA,YACT,iBAAiB;AAAA,YACjB,aAAa;AAAA,YACb,UAAU;AAAA,YACV,cAAc;AAAA,YACd,QAAQ;AAAA,YACR,aAAa;AAAA,YACb,yBAAyB;AAAA,YACzB,MAAM;AAAA,YACN,UAAU;AAAA,YACV,SAAS;AAAA,YACT,gBAAgB;AAAA,YAChB,cAAc;AAAA,YACd,OAAO;AAAA,YACP,KAAK;AAAA,YACL,UAAU;AAAA,YACV,yBAAyB;AAAA,YACzB,uBAAuB;AAAA,YACvB,UAAU;AAAA,YACV,WAAW;AAAA,YACX,SAAS;AAAA,YACT,cAAc;AAAA,YACd,KAAK;AAAA,YACL,MAAM;AAAA,YACN,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,aAAa;AAAA,YACb,gBAAgB;AAAA,YAChB,YAAY;AAAA,YACZ,aAAa;AAAA,YACb,SAAS;AAAA,YACT,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,MAAM;AAAA,YACN,MAAM;AAAA,YACN,UAAU;AAAA,YACV,SAAS;AAAA,YACT,WAAW;AAAA,YACX,cAAc;AAAA,YACd,MAAM;AAAA,YACN,IAAI;AAAA,YACJ,YAAY;AAAA,YACZ,aAAa;AAAA,YACb,WAAW;AAAA,YACX,WAAW;AAAA,YACX,WAAW;AAAA,YACX,IAAI;AAAA,YACJ,QAAQ;AAAA,YACR,UAAU;AAAA,YACV,SAAS;AAAA,YACT,WAAW;AAAA,YACX,UAAU;AAAA,YACV,WAAW;AAAA,YACX,SAAS;AAAA,YACT,MAAM;AAAA,YACN,OAAO;AAAA,YACP,MAAM;AAAA,YACN,MAAM;AAAA,YACN,MAAM;AAAA,YACN,KAAK;AAAA,YACL,UAAU;AAAA,YACV,aAAa;AAAA,YACb,cAAc;AAAA,YACd,KAAK;AAAA,YACL,WAAW;AAAA,YACX,OAAO;AAAA,YACP,YAAY;AAAA,YACZ,QAAQ;AAAA,YACR,KAAK;AAAA,YACL,WAAW;AAAA,YACX,UAAU;AAAA,YACV,OAAO;AAAA,YACP,MAAM;AAAA,YACN,UAAU;AAAA,YACV,OAAO;AAAA,YACP,YAAY;AAAA,YACZ,MAAM;AAAA,YACN,SAAS;AAAA,YACT,SAAS;AAAA,YACT,aAAa;AAAA,YACb,aAAa;AAAA,YACb,QAAQ;AAAA,YACR,SAAS;AAAA,YACT,SAAS;AAAA,YACT,YAAY;AAAA,YACZ,UAAU;AAAA,YACV,gBAAgB;AAAA,YAChB,KAAK;AAAA,YACL,UAAU;AAAA,YACV,UAAU;AAAA,YACV,MAAM;AAAA,YACN,MAAM;AAAA,YACN,SAAS;AAAA,YACT,SAAS;AAAA,YACT,OAAO;AAAA,YACP,QAAQ;AAAA,YACR,WAAW;AAAA,YACX,UAAU;AAAA,YACV,UAAU;AAAA,YACV,OAAO;AAAA,YACP,MAAM;AAAA,YACN,OAAO;AAAA,YACP,MAAM;AAAA,YACN,YAAY;AAAA,YACZ,KAAK;AAAA,YACL,QAAQ;AAAA,YACR,SAAS;AAAA,YACT,QAAQ;AAAA,YACR,OAAO;AAAA,YACP,MAAM;AAAA,YACN,OAAO;AAAA,YACP,SAAS;AAAA,YACT,UAAU;AAAA,YACV,QAAQ;AAAA,YACR,OAAO;AAAA,YACP,MAAM;AAAA,YACN,QAAQ;AAAA,YACR,OAAO;AAAA,YACP,OAAO;AAAA,YACP,OAAO;AAAA,YACP,MAAM;AAAA;AAAA,YAEN,OAAO;AAAA,YACP,cAAc;AAAA,YACd,iBAAiB;AAAA,YACjB,YAAY;AAAA,YACZ,UAAU;AAAA,YACV,mBAAmB;AAAA,YACnB,sBAAsB;AAAA,YACtB,cAAc;AAAA,YACd,YAAY;AAAA,YACZ,WAAW;AAAA,YACX,YAAY;AAAA,YACZ,eAAe;AAAA,YACf,QAAQ;AAAA,YACR,eAAe;AAAA,YACf,eAAe;AAAA,YACf,aAAa;AAAA,YACb,SAAS;AAAA,YACT,eAAe;AAAA,YACf,eAAe;AAAA,YACf,kBAAkB;AAAA,YAClB,aAAa;AAAA,YACb,MAAM;AAAA,YACN,OAAO;AAAA,YACP,MAAM;AAAA,YACN,IAAI;AAAA,YACJ,UAAU;AAAA,YACV,WAAW;AAAA,YACX,cAAc;AAAA,YACd,MAAM;AAAA,YACN,UAAU;AAAA,YACV,aAAa;AAAA,YACb,eAAe;AAAA,YACf,UAAU;AAAA,YACV,aAAa;AAAA,YACb,OAAO;AAAA,YACP,oBAAoB;AAAA,YACpB,uBAAuB;AAAA,YACvB,2BAA2B;AAAA,YAC3B,+BAA+B;AAAA,YAC/B,cAAc;AAAA,YACd,iBAAiB;AAAA,YACjB,gBAAgB;AAAA,YAChB,mBAAmB;AAAA,YACnB,mBAAmB;AAAA,YACnB,kBAAkB;AAAA,YAClB,QAAQ;AAAA,YACR,IAAI;AAAA,YACJ,IAAI;AAAA,YACJ,GAAG;AAAA,YACH,UAAU;AAAA,YACV,YAAY;AAAA,YACZ,SAAS;AAAA,YACT,iBAAiB;AAAA,YACjB,WAAW;AAAA,YACX,SAAS;AAAA,YACT,SAAS;AAAA,YACT,kBAAkB;AAAA,YAClB,qBAAqB;AAAA,YACrB,KAAK;AAAA,YACL,IAAI;AAAA,YACJ,IAAI;AAAA,YACJ,UAAU;AAAA,YACV,WAAW;AAAA,YACX,kBAAkB;AAAA,YAClB,qBAAqB;AAAA,YACrB,KAAK;AAAA,YACL,UAAU;AAAA,YACV,2BAA2B;AAAA,YAC3B,MAAM;AAAA,YACN,aAAa;AAAA,YACb,gBAAgB;AAAA,YAChB,UAAU;AAAA,YACV,aAAa;AAAA,YACb,QAAQ;AAAA,YACR,WAAW;AAAA,YACX,aAAa;AAAA,YACb,cAAc;AAAA,YACd,iBAAiB;AAAA,YACjB,YAAY;AAAA,YACZ,eAAe;AAAA,YACf,WAAW;AAAA,YACX,YAAY;AAAA,YACZ,eAAe;AAAA,YACf,UAAU;AAAA,YACV,aAAa;AAAA,YACb,gBAAgB;AAAA,YAChB,oBAAoB;AAAA,YACpB,aAAa;AAAA,YACb,gBAAgB;AAAA,YAChB,WAAW;AAAA,YACX,cAAc;AAAA,YACd,aAAa;AAAA,YACb,gBAAgB;AAAA,YAChB,YAAY;AAAA,YACZ,eAAe;AAAA,YACf,QAAQ;AAAA,YACR,MAAM;AAAA,YACN,IAAI;AAAA,YACJ,IAAI;AAAA,YACJ,IAAI;AAAA,YACJ,IAAI;AAAA,YACJ,WAAW;AAAA,YACX,cAAc;AAAA,YACd,4BAA4B;AAAA,YAC5B,gCAAgC;AAAA,YAChC,0BAA0B;AAAA,YAC1B,8BAA8B;AAAA,YAC9B,UAAU;AAAA,YACV,mBAAmB;AAAA,YACnB,eAAe;AAAA,YACf,SAAS;AAAA,YACT,WAAW;AAAA,YACX,eAAe;AAAA,YACf,cAAc;AAAA,YACd,kBAAkB;AAAA,YAClB,aAAa;AAAA,YACb,gBAAgB;AAAA,YAChB,mBAAmB;AAAA,YACnB,KAAK;AAAA,YACL,IAAI;AAAA,YACJ,QAAQ;AAAA,YACR,WAAW;AAAA,YACX,IAAI;AAAA,YACJ,IAAI;AAAA,YACJ,IAAI;AAAA,YACJ,IAAI;AAAA,YACJ,GAAG;AAAA,YACH,cAAc;AAAA,YACd,kBAAkB;AAAA,YAClB,SAAS;AAAA,YACT,WAAW;AAAA,YACX,YAAY;AAAA,YACZ,UAAU;AAAA,YACV,cAAc;AAAA,YACd,eAAe;AAAA,YACf,kBAAkB;AAAA,YAClB,eAAe;AAAA,YACf,kBAAkB;AAAA,YAClB,mBAAmB;AAAA,YACnB,OAAO;AAAA,YACP,WAAW;AAAA,YACX,cAAc;AAAA,YACd,cAAc;AAAA,YACd,WAAW;AAAA,YACX,cAAc;AAAA,YACd,aAAa;AAAA,YACb,gBAAgB;AAAA,YAChB,aAAa;AAAA,YACb,aAAa;AAAA,YACb,MAAM;AAAA,YACN,kBAAkB;AAAA,YAClB,WAAW;AAAA,YACX,cAAc;AAAA,YACd,MAAM;AAAA,YACN,YAAY;AAAA,YACZ,QAAQ;AAAA,YACR,SAAS;AAAA,YACT,UAAU;AAAA,YACV,OAAO;AAAA,YACP,QAAQ;AAAA,YACR,aAAa;AAAA,YACb,QAAQ;AAAA,YACR,UAAU;AAAA,YACV,kBAAkB;AAAA,YAClB,qBAAqB;AAAA,YACrB,mBAAmB;AAAA,YACnB,sBAAsB;AAAA,YACtB,YAAY;AAAA,YACZ,eAAe;AAAA,YACf,SAAS;AAAA,YACT,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,qBAAqB;AAAA,YACrB,kBAAkB;AAAA,YAClB,cAAc;AAAA,YACd,eAAe;AAAA,YACf,kBAAkB;AAAA,YAClB,QAAQ;AAAA,YACR,WAAW;AAAA,YACX,WAAW;AAAA,YACX,WAAW;AAAA,YACX,QAAQ;AAAA,YACR,eAAe;AAAA,YACf,qBAAqB;AAAA,YACrB,gBAAgB;AAAA,YAChB,UAAU;AAAA,YACV,GAAG;AAAA,YACH,QAAQ;AAAA,YACR,MAAM;AAAA,YACN,MAAM;AAAA,YACN,iBAAiB;AAAA,YACjB,oBAAoB;AAAA,YACpB,aAAa;AAAA,YACb,WAAW;AAAA,YACX,oBAAoB;AAAA,YACpB,kBAAkB;AAAA,YAClB,UAAU;AAAA,YACV,SAAS;AAAA,YACT,QAAQ;AAAA,YACR,SAAS;AAAA,YACT,QAAQ;AAAA,YACR,IAAI;AAAA,YACJ,IAAI;AAAA,YACJ,OAAO;AAAA,YACP,UAAU;AAAA,YACV,MAAM;AAAA,YACN,gBAAgB;AAAA,YAChB,mBAAmB;AAAA,YACnB,OAAO;AAAA,YACP,SAAS;AAAA,YACT,kBAAkB;AAAA,YAClB,kBAAkB;AAAA,YAClB,OAAO;AAAA,YACP,cAAc;AAAA,YACd,aAAa;AAAA,YACb,cAAc;AAAA,YACd,OAAO;AAAA,YACP,OAAO;AAAA,YACP,aAAa;AAAA,YACb,WAAW;AAAA,YACX,cAAc;AAAA,YACd,aAAa;AAAA,YACb,gBAAgB;AAAA,YAChB,uBAAuB;AAAA,YACvB,0BAA0B;AAAA,YAC1B,wBAAwB;AAAA,YACxB,2BAA2B;AAAA,YAC3B,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,iBAAiB;AAAA,YACjB,oBAAoB;AAAA,YACpB,kBAAkB;AAAA,YAClB,qBAAqB;AAAA,YACrB,eAAe;AAAA,YACf,kBAAkB;AAAA,YAClB,gBAAgB;AAAA,YAChB,mBAAmB;AAAA,YACnB,kBAAkB;AAAA,YAClB,qBAAqB;AAAA,YACrB,aAAa;AAAA,YACb,gBAAgB;AAAA,YAChB,eAAe;AAAA,YACf,kBAAkB;AAAA,YAClB,gCAAgC;AAAA,YAChC,0BAA0B;AAAA,YAC1B,cAAc;AAAA,YACd,gBAAgB;AAAA,YAChB,aAAa;AAAA,YACb,SAAS;AAAA,YACT,SAAS;AAAA,YACT,YAAY;AAAA,YACZ,eAAe;AAAA,YACf,gBAAgB;AAAA,YAChB,mBAAmB;AAAA,YACnB,YAAY;AAAA,YACZ,eAAe;AAAA,YACf,kBAAkB;AAAA,YAClB,IAAI;AAAA,YACJ,WAAW;AAAA,YACX,QAAQ;AAAA,YACR,IAAI;AAAA,YACJ,IAAI;AAAA,YACJ,mBAAmB;AAAA,YACnB,sBAAsB;AAAA,YACtB,oBAAoB;AAAA,YACpB,uBAAuB;AAAA,YACvB,SAAS;AAAA,YACT,aAAa;AAAA,YACb,gBAAgB;AAAA,YAChB,cAAc;AAAA,YACd,iBAAiB;AAAA,YACjB,YAAY;AAAA,YACZ,gBAAgB;AAAA,YAChB,cAAc;AAAA,YACd,aAAa;AAAA,YACb,gBAAgB;AAAA,YAChB,QAAQ;AAAA,YACR,cAAc;AAAA,YACd,iBAAiB;AAAA,YACjB,SAAS;AAAA,YACT,UAAU;AAAA,YACV,cAAc;AAAA,YACd,aAAa;AAAA,YACb,iBAAiB;AAAA,YACjB,aAAa;AAAA,YACb,iBAAiB;AAAA,YACjB,UAAU;AAAA,YACV,aAAa;AAAA,YACb,cAAc;AAAA,YACd,iBAAiB;AAAA,YACjB,SAAS;AAAA,YACT,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,eAAe;AAAA,YACf,kBAAkB;AAAA,YAClB,OAAO;AAAA,YACP,QAAQ;AAAA,YACR,aAAa;AAAA,YACb,gBAAgB;AAAA,YAChB,aAAa;AAAA,YACb,gBAAgB;AAAA,YAChB,IAAI;AAAA,YACJ,IAAI;AAAA,YACJ,GAAG;AAAA,YACH,kBAAkB;AAAA,YAClB,SAAS;AAAA,YACT,YAAY;AAAA,YACZ,cAAc;AAAA,YACd,iBAAiB;AAAA,YACjB,cAAc;AAAA,YACd,iBAAiB;AAAA,YACjB,WAAW;AAAA,YACX,cAAc;AAAA,YACd,WAAW;AAAA,YACX,cAAc;AAAA,YACd,WAAW;AAAA,YACX,cAAc;AAAA,YACd,YAAY;AAAA,YACZ,eAAe;AAAA,YACf,WAAW;AAAA,YACX,cAAc;AAAA,YACd,SAAS;AAAA,YACT,YAAY;AAAA,YACZ,SAAS;AAAA,YACT,YAAY;AAAA,YACZ,OAAO;AAAA,YACP,aAAa;AAAA,YACb,YAAY;AAAA,YACZ,eAAe;AAAA,YACf,UAAU;AAAA,YACV,IAAI;AAAA,YACJ,IAAI;AAAA,YACJ,GAAG;AAAA,YACH,kBAAkB;AAAA,YAClB,GAAG;AAAA,YACH,YAAY;AAAA,UACd;AAEA,cAAI,iBAAiB;AAAA,YACnB,gBAAgB;AAAA;AAAA,YAEhB,oBAAoB;AAAA,YACpB,gBAAgB;AAAA,YAChB,iBAAiB;AAAA;AAAA,YAEjB,eAAe;AAAA;AAAA,YAEf,gBAAgB;AAAA;AAAA,YAEhB,qBAAqB;AAAA,YACrB,cAAc;AAAA,YACd,wBAAwB;AAAA;AAAA,YAExB,qBAAqB;AAAA,YACrB,gBAAgB;AAAA,YAChB,iBAAiB;AAAA,YACjB,iBAAiB;AAAA,YACjB,cAAc;AAAA,YACd,cAAc;AAAA,YACd,kBAAkB;AAAA,YAClB,wBAAwB;AAAA,YACxB,oBAAoB;AAAA,YACpB,oBAAoB;AAAA,YACpB,gBAAgB;AAAA,YAChB,iBAAiB;AAAA,YACjB,iBAAiB;AAAA,YACjB,iBAAiB;AAAA,YACjB,aAAa;AAAA,YACb,iBAAiB;AAAA,YACjB,iBAAiB;AAAA,YACjB,iBAAiB;AAAA,YACjB,kBAAkB;AAAA;AAAA,YAElB,eAAe;AAAA,YACf,aAAa;AAAA,YACb,aAAa;AAAA,YACb,iBAAiB;AAAA;AAAA,YAEjB,mBAAmB;AAAA,YACnB,gBAAgB;AAAA;AAAA,YAEhB,yBAAyB;AAAA,YACzB,iBAAiB;AAAA,YACjB,iBAAiB;AAAA,YACjB,gBAAgB;AAAA,YAChB,iBAAiB;AAAA,YACjB,oBAAoB;AAAA,YACpB,qBAAqB;AAAA,YACrB,eAAe;AAAA,YACf,mBAAmB;AAAA,YACnB,aAAa;AAAA,YACb,iBAAiB;AAAA,YACjB,iBAAiB;AAAA,YACjB,iBAAiB;AAAA,YACjB,gBAAgB;AAAA,YAChB,gBAAgB;AAAA,UAClB;AAEA,cAAI,mBAAmB,CAAC;AACxB,cAAI,QAAQ,IAAI,OAAO,cAAc,sBAAsB,KAAK;AAChE,cAAI,aAAa,IAAI,OAAO,kBAAkB,sBAAsB,KAAK;AAEzE,mBAAS,iBAAiB,SAASN,OAAM;AACvC;AACE,kBAAIF,gBAAe,KAAK,kBAAkBE,KAAI,KAAK,iBAAiBA,KAAI,GAAG;AACzE,uBAAO;AAAA,cACT;AAEA,kBAAI,WAAW,KAAKA,KAAI,GAAG;AACzB,oBAAI,WAAW,UAAUA,MAAK,MAAM,CAAC,EAAE,YAAY;AACnD,oBAAI,cAAc,eAAe,eAAe,QAAQ,IAAI,WAAW;AAGvE,oBAAI,eAAe,MAAM;AACvB,wBAAM,iGAAiGA,KAAI;AAE3G,mCAAiBA,KAAI,IAAI;AACzB,yBAAO;AAAA,gBACT;AAGA,oBAAIA,UAAS,aAAa;AACxB,wBAAM,mDAAmDA,OAAM,WAAW;AAE1E,mCAAiBA,KAAI,IAAI;AACzB,yBAAO;AAAA,gBACT;AAAA,cACF;AAEA,kBAAI,MAAM,KAAKA,KAAI,GAAG;AACpB,oBAAI,iBAAiBA,MAAK,YAAY;AACtC,oBAAI,eAAe,eAAe,eAAe,cAAc,IAAI,iBAAiB;AAGpF,oBAAI,gBAAgB,MAAM;AACxB,mCAAiBA,KAAI,IAAI;AACzB,yBAAO;AAAA,gBACT;AAGA,oBAAIA,UAAS,cAAc;AACzB,wBAAM,mDAAmDA,OAAM,YAAY;AAE3E,mCAAiBA,KAAI,IAAI;AACzB,yBAAO;AAAA,gBACT;AAAA,cACF;AAAA,YACF;AAEA,mBAAO;AAAA,UACT;AAEA,mBAAS,qBAAqB,MAAM,OAAO;AACzC;AACE,kBAAI,eAAe,CAAC;AAEpB,uBAAS,OAAO,OAAO;AACrB,oBAAI,UAAU,iBAAiB,MAAM,GAAG;AAExC,oBAAI,CAAC,SAAS;AACZ,+BAAa,KAAK,GAAG;AAAA,gBACvB;AAAA,cACF;AAEA,kBAAI,oBAAoB,aAAa,IAAI,SAAU,MAAM;AACvD,uBAAO,MAAM,OAAO;AAAA,cACtB,CAAC,EAAE,KAAK,IAAI;AAEZ,kBAAI,aAAa,WAAW,GAAG;AAC7B,sBAAM,kGAAuG,mBAAmB,IAAI;AAAA,cACtI,WAAW,aAAa,SAAS,GAAG;AAClC,sBAAM,mGAAwG,mBAAmB,IAAI;AAAA,cACvI;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,mBAAmB,MAAM,OAAO;AACvC,gBAAI,kBAAkB,MAAM,KAAK,GAAG;AAClC;AAAA,YACF;AAEA,iCAAqB,MAAM,KAAK;AAAA,UAClC;AAEA,cAAI,mBAAmB;AACvB,mBAAS,qBAAqB,MAAM,OAAO;AACzC;AACE,kBAAI,SAAS,WAAW,SAAS,cAAc,SAAS,UAAU;AAChE;AAAA,cACF;AAEA,kBAAI,SAAS,QAAQ,MAAM,UAAU,QAAQ,CAAC,kBAAkB;AAC9D,mCAAmB;AAEnB,oBAAI,SAAS,YAAY,MAAM,UAAU;AACvC,wBAAM,8KAAwL,IAAI;AAAA,gBACpM,OAAO;AACL,wBAAM,8IAAwJ,IAAI;AAAA,gBACpK;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAEA,cAAI,qBAAqB,WAAY;AAAA,UAAC;AAEtC;AACE,gBAAI,qBAAqB,CAAC;AAC1B,gBAAI,mBAAmB;AACvB,gBAAI,2BAA2B;AAC/B,gBAAI,UAAU,IAAI,OAAO,cAAc,sBAAsB,KAAK;AAClE,gBAAI,eAAe,IAAI,OAAO,kBAAkB,sBAAsB,KAAK;AAE3E,iCAAqB,SAAU,SAASA,OAAM,OAAO6B,gBAAe;AAClE,kBAAI/B,gBAAe,KAAK,oBAAoBE,KAAI,KAAK,mBAAmBA,KAAI,GAAG;AAC7E,uBAAO;AAAA,cACT;AAEA,kBAAI,iBAAiBA,MAAK,YAAY;AAEtC,kBAAI,mBAAmB,eAAe,mBAAmB,cAAc;AACrE,sBAAM,8KAAwL;AAE9L,mCAAmBA,KAAI,IAAI;AAC3B,uBAAO;AAAA,cACT;AAGA,kBAAI6B,kBAAiB,MAAM;AACzB,oBAAIC,gCAA+BD,eAAc,8BAC7CE,6BAA4BF,eAAc;AAE9C,oBAAIC,8BAA6B,eAAe9B,KAAI,GAAG;AACrD,yBAAO;AAAA,gBACT;AAEA,oBAAI,mBAAmB+B,2BAA0B,eAAe,cAAc,IAAIA,2BAA0B,cAAc,IAAI;AAE9H,oBAAI,oBAAoB,MAAM;AAC5B,wBAAM,2DAA2D/B,OAAM,gBAAgB;AAEvF,qCAAmBA,KAAI,IAAI;AAC3B,yBAAO;AAAA,gBACT;AAEA,oBAAI,iBAAiB,KAAKA,KAAI,GAAG;AAC/B,wBAAM,4DAA4DA,KAAI;AAEtE,qCAAmBA,KAAI,IAAI;AAC3B,yBAAO;AAAA,gBACT;AAAA,cACF,WAAW,iBAAiB,KAAKA,KAAI,GAAG;AAItC,oBAAI,yBAAyB,KAAKA,KAAI,GAAG;AACvC,wBAAM,iHAAsHA,KAAI;AAAA,gBAClI;AAEA,mCAAmBA,KAAI,IAAI;AAC3B,uBAAO;AAAA,cACT;AAGA,kBAAI,QAAQ,KAAKA,KAAI,KAAK,aAAa,KAAKA,KAAI,GAAG;AACjD,uBAAO;AAAA,cACT;AAEA,kBAAI,mBAAmB,aAAa;AAClC,sBAAM,kIAAuI;AAE7I,mCAAmBA,KAAI,IAAI;AAC3B,uBAAO;AAAA,cACT;AAEA,kBAAI,mBAAmB,QAAQ;AAC7B,sBAAM,uGAA4G;AAElH,mCAAmBA,KAAI,IAAI;AAC3B,uBAAO;AAAA,cACT;AAEA,kBAAI,mBAAmB,QAAQ,UAAU,QAAQ,UAAU,UAAa,OAAO,UAAU,UAAU;AACjG,sBAAM,iGAAsG,OAAO,KAAK;AAExH,mCAAmBA,KAAI,IAAI;AAC3B,uBAAO;AAAA,cACT;AAEA,kBAAI,OAAO,UAAU,YAAY,MAAM,KAAK,GAAG;AAC7C,sBAAM,yFAA8FA,KAAI;AAExG,mCAAmBA,KAAI,IAAI;AAC3B,uBAAO;AAAA,cACT;AAEA,kBAAI,eAAe,gBAAgBA,KAAI;AACvC,kBAAI,aAAa,iBAAiB,QAAQ,aAAa,SAAS;AAEhE,kBAAI,sBAAsB,eAAe,cAAc,GAAG;AACxD,oBAAI,eAAe,sBAAsB,cAAc;AAEvD,oBAAI,iBAAiBA,OAAM;AACzB,wBAAM,iDAAiDA,OAAM,YAAY;AAEzE,qCAAmBA,KAAI,IAAI;AAC3B,yBAAO;AAAA,gBACT;AAAA,cACF,WAAW,CAAC,cAAcA,UAAS,gBAAgB;AAGjD,sBAAM,gQAAoRA,OAAM,cAAc;AAE9S,mCAAmBA,KAAI,IAAI;AAC3B,uBAAO;AAAA,cACT;AAEA,kBAAI,OAAO,UAAU,aAAa,iCAAiCA,OAAM,OAAO,cAAc,KAAK,GAAG;AACpG,oBAAI,OAAO;AACT,wBAAM,mJAA6J,OAAOA,OAAMA,OAAM,OAAOA,KAAI;AAAA,gBACnM,OAAO;AACL,wBAAM,0QAA8R,OAAOA,OAAMA,OAAM,OAAOA,OAAMA,OAAMA,KAAI;AAAA,gBAChV;AAEA,mCAAmBA,KAAI,IAAI;AAC3B,uBAAO;AAAA,cACT;AAIA,kBAAI,YAAY;AACd,uBAAO;AAAA,cACT;AAGA,kBAAI,iCAAiCA,OAAM,OAAO,cAAc,KAAK,GAAG;AACtE,mCAAmBA,KAAI,IAAI;AAC3B,uBAAO;AAAA,cACT;AAGA,mBAAK,UAAU,WAAW,UAAU,WAAW,iBAAiB,QAAQ,aAAa,SAAS,SAAS;AACrG,sBAAM,qFAA+F,OAAOA,OAAM,UAAU,UAAU,qDAAqD,qFAAqFA,OAAM,KAAK;AAE3R,mCAAmBA,KAAI,IAAI;AAC3B,uBAAO;AAAA,cACT;AAEA,qBAAO;AAAA,YACT;AAAA,UACF;AAEA,cAAI,wBAAwB,SAAU,MAAM,OAAO6B,gBAAe;AAChE;AACE,kBAAI,eAAe,CAAC;AAEpB,uBAAS,OAAO,OAAO;AACrB,oBAAI,UAAU,mBAAmB,MAAM,KAAK,MAAM,GAAG,GAAGA,cAAa;AAErE,oBAAI,CAAC,SAAS;AACZ,+BAAa,KAAK,GAAG;AAAA,gBACvB;AAAA,cACF;AAEA,kBAAI,oBAAoB,aAAa,IAAI,SAAU,MAAM;AACvD,uBAAO,MAAM,OAAO;AAAA,cACtB,CAAC,EAAE,KAAK,IAAI;AAEZ,kBAAI,aAAa,WAAW,GAAG;AAC7B,sBAAM,mMAA6M,mBAAmB,IAAI;AAAA,cAC5O,WAAW,aAAa,SAAS,GAAG;AAClC,sBAAM,yMAAmN,mBAAmB,IAAI;AAAA,cAClP;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,qBAAqB,MAAM,OAAOA,gBAAe;AACxD,gBAAI,kBAAkB,MAAM,KAAK,GAAG;AAClC;AAAA,YACF;AAEA,kCAAsB,MAAM,OAAOA,cAAa;AAAA,UAClD;AAEA,cAAI,mCAAmC;AACvC,cAAI,mBAAmB,KAAK;AAC5B,cAAI,mBAAmB,KAAK;AAM5B,cAAI,4CAA4C,mCAAmC,mBAAmB;AAItG,cAAI,wBAAwB;AAC5B,mBAAS,kBAAkB,OAAO;AAChC;AACE,kBAAI,0BAA0B,MAAM;AAClC,sBAAM,qHAA0H;AAAA,cAClI;AAAA,YACF;AAEA,oCAAwB;AAAA,UAC1B;AACA,mBAAS,sBAAsB;AAC7B;AACE,kBAAI,0BAA0B,MAAM;AAClC,sBAAM,yHAA8H;AAAA,cACtI;AAAA,YACF;AAEA,oCAAwB;AAAA,UAC1B;AACA,mBAAS,iBAAiB,OAAO;AAC/B,mBAAO,UAAU;AAAA,UACnB;AAUA,mBAAS,eAAe,aAAa;AAGnC,gBAAI,SAAS,YAAY,UAAU,YAAY,cAAc;AAE7D,gBAAI,OAAO,yBAAyB;AAClC,uBAAS,OAAO;AAAA,YAClB;AAIA,mBAAO,OAAO,aAAa,YAAY,OAAO,aAAa;AAAA,UAC7D;AAEA,cAAI,cAAc;AAClB,cAAI,gBAAgB;AACpB,cAAI,eAAe;AAEnB,mBAAS,qBAAqB,QAAQ;AAGpC,gBAAI,mBAAmB,oBAAoB,MAAM;AAEjD,gBAAI,CAAC,kBAAkB;AAErB;AAAA,YACF;AAEA,gBAAI,OAAO,gBAAgB,YAAY;AACrC,oBAAM,IAAI,MAAM,8JAAmK;AAAA,YACrL;AAEA,gBAAI,YAAY,iBAAiB;AAEjC,gBAAI,WAAW;AACb,kBAAI,SAAS,6BAA6B,SAAS;AAEnD,0BAAY,iBAAiB,WAAW,iBAAiB,MAAM,MAAM;AAAA,YACvE;AAAA,UACF;AAEA,mBAAS,yBAAyB,MAAM;AACtC,0BAAc;AAAA,UAChB;AACA,mBAAS,oBAAoB,QAAQ;AACnC,gBAAI,eAAe;AACjB,kBAAI,cAAc;AAChB,6BAAa,KAAK,MAAM;AAAA,cAC1B,OAAO;AACL,+BAAe,CAAC,MAAM;AAAA,cACxB;AAAA,YACF,OAAO;AACL,8BAAgB;AAAA,YAClB;AAAA,UACF;AACA,mBAAS,oBAAoB;AAC3B,mBAAO,kBAAkB,QAAQ,iBAAiB;AAAA,UACpD;AACA,mBAAS,uBAAuB;AAC9B,gBAAI,CAAC,eAAe;AAClB;AAAA,YACF;AAEA,gBAAI,SAAS;AACb,gBAAI,gBAAgB;AACpB,4BAAgB;AAChB,2BAAe;AACf,iCAAqB,MAAM;AAE3B,gBAAI,eAAe;AACjB,uBAAS,IAAI,GAAG,IAAI,cAAc,QAAQ,KAAK;AAC7C,qCAAqB,cAAc,CAAC,CAAC;AAAA,cACvC;AAAA,YACF;AAAA,UACF;AAQA,cAAI,qBAAqB,SAAU,IAAI,aAAa;AAClD,mBAAO,GAAG,WAAW;AAAA,UACvB;AAEA,cAAI,gBAAgB,WAAY;AAAA,UAAC;AAEjC,cAAI,uBAAuB;AAE3B,mBAAS,qBAAqB;AAK5B,gBAAI,yCAAyC,kBAAkB;AAE/D,gBAAI,wCAAwC;AAM1C,4BAAc;AACd,mCAAqB;AAAA,YACvB;AAAA,UACF;AAEA,mBAAS,eAAe,IAAIV,IAAG,GAAG;AAChC,gBAAI,sBAAsB;AAGxB,qBAAO,GAAGA,IAAG,CAAC;AAAA,YAChB;AAEA,mCAAuB;AAEvB,gBAAI;AACF,qBAAO,mBAAmB,IAAIA,IAAG,CAAC;AAAA,YACpC,UAAE;AACA,qCAAuB;AACvB,iCAAmB;AAAA,YACrB;AAAA,UACF;AACA,mBAAS,0BAA0B,qBAAqB,sBAAsB,gBAAgB;AAC5F,iCAAqB;AACrB,4BAAgB;AAAA,UAClB;AAEA,mBAAS,cAAc,KAAK;AAC1B,mBAAO,QAAQ,YAAY,QAAQ,WAAW,QAAQ,YAAY,QAAQ;AAAA,UAC5E;AAEA,mBAAS,wBAAwBnB,OAAM,MAAM,OAAO;AAClD,oBAAQA,OAAM;AAAA,cACZ,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AACH,uBAAO,CAAC,EAAE,MAAM,YAAY,cAAc,IAAI;AAAA,cAEhD;AACE,uBAAO;AAAA,YACX;AAAA,UACF;AAQA,mBAAS,YAAY,MAAM,kBAAkB;AAC3C,gBAAI,YAAY,KAAK;AAErB,gBAAI,cAAc,MAAM;AAEtB,qBAAO;AAAA,YACT;AAEA,gBAAI,QAAQ,6BAA6B,SAAS;AAElD,gBAAI,UAAU,MAAM;AAElB,qBAAO;AAAA,YACT;AAEA,gBAAI,WAAW,MAAM,gBAAgB;AAErC,gBAAI,wBAAwB,kBAAkB,KAAK,MAAM,KAAK,GAAG;AAC/D,qBAAO;AAAA,YACT;AAEA,gBAAI,YAAY,OAAO,aAAa,YAAY;AAC9C,oBAAM,IAAI,MAAM,eAAe,mBAAmB,0DAA0D,OAAO,WAAW,SAAS;AAAA,YACzI;AAEA,mBAAO;AAAA,UACT;AAEA,cAAI,gCAAgC;AAGpC,cAAIH,YAAW;AACb,gBAAI;AACF,kBAAIuB,WAAU,CAAC;AAEf,qBAAO,eAAeA,UAAS,WAAW;AAAA,gBACxC,KAAK,WAAY;AACf,kDAAgC;AAAA,gBAClC;AAAA,cACF,CAAC;AACD,qBAAO,iBAAiB,QAAQA,UAASA,QAAO;AAChD,qBAAO,oBAAoB,QAAQA,UAASA,QAAO;AAAA,YACrD,SAASrB,IAAG;AACV,8CAAgC;AAAA,YAClC;AAAA,UACF;AAEA,mBAAS,0BAA0BC,OAAM,MAAM,SAASmB,IAAG,GAAGR,IAAGqB,IAAGjC,IAAG,GAAG;AACxE,gBAAI,WAAW,MAAM,UAAU,MAAM,KAAK,WAAW,CAAC;AAEtD,gBAAI;AACF,mBAAK,MAAM,SAAS,QAAQ;AAAA,YAC9B,SAASkC,QAAO;AACd,mBAAK,QAAQA,MAAK;AAAA,YACpB;AAAA,UACF;AAEA,cAAI,4BAA4B;AAEhC;AAqBE,gBAAI,OAAO,WAAW,eAAe,OAAO,OAAO,kBAAkB,cAAc,OAAO,aAAa,eAAe,OAAO,SAAS,gBAAgB,YAAY;AAChK,kBAAI,WAAW,SAAS,cAAc,OAAO;AAE7C,0CAA4B,SAAS,yBAAyBjC,OAAM,MAAM,SAASmB,IAAG,GAAGR,IAAGqB,IAAGjC,IAAG,GAAG;AAKnG,oBAAI,OAAO,aAAa,eAAe,aAAa,MAAM;AACxD,wBAAM,IAAI,MAAM,scAAoe;AAAA,gBACtf;AAEA,oBAAI,MAAM,SAAS,YAAY,OAAO;AACtC,oBAAI,UAAU;AAOd,oBAAI,WAAW;AAIf,oBAAI,cAAc,OAAO;AAGzB,oBAAI,wBAAwB,OAAO,yBAAyB,QAAQ,OAAO;AAE3E,yBAAS,uBAAuB;AAK9B,2BAAS,oBAAoB,SAASmC,eAAc,KAAK;AAKzD,sBAAI,OAAO,OAAO,UAAU,eAAe,OAAO,eAAe,OAAO,GAAG;AACzE,2BAAO,QAAQ;AAAA,kBACjB;AAAA,gBACF;AAKA,oBAAI,WAAW,MAAM,UAAU,MAAM,KAAK,WAAW,CAAC;AAEtD,yBAASA,gBAAe;AACtB,4BAAU;AACV,uCAAqB;AACrB,uBAAK,MAAM,SAAS,QAAQ;AAC5B,6BAAW;AAAA,gBACb;AAaA,oBAAID;AAEJ,oBAAI,cAAc;AAClB,oBAAI,qBAAqB;AAEzB,yBAAS,kBAAkB,OAAO;AAChC,kBAAAA,SAAQ,MAAM;AACd,gCAAc;AAEd,sBAAIA,WAAU,QAAQ,MAAM,UAAU,KAAK,MAAM,WAAW,GAAG;AAC7D,yCAAqB;AAAA,kBACvB;AAEA,sBAAI,MAAM,kBAAkB;AAI1B,wBAAIA,UAAS,QAAQ,OAAOA,WAAU,UAAU;AAC9C,0BAAI;AACF,wBAAAA,OAAM,mBAAmB;AAAA,sBAC3B,SAAS,OAAO;AAAA,sBAChB;AAAA,oBACF;AAAA,kBACF;AAAA,gBACF;AAGA,oBAAI,UAAU,YAAYjC,QAAOA,QAAO;AAExC,uBAAO,iBAAiB,SAAS,iBAAiB;AAClD,yBAAS,iBAAiB,SAASkC,eAAc,KAAK;AAGtD,oBAAI,UAAU,SAAS,OAAO,KAAK;AACnC,yBAAS,cAAc,GAAG;AAE1B,oBAAI,uBAAuB;AACzB,yBAAO,eAAe,QAAQ,SAAS,qBAAqB;AAAA,gBAC9D;AAEA,oBAAI,WAAW,UAAU;AACvB,sBAAI,CAAC,aAAa;AAGhB,oBAAAD,SAAQ,IAAI,MAAM,mdAAsf;AAAA,kBAC1gB,WAAW,oBAAoB;AAE7B,oBAAAA,SAAQ,IAAI,MAAM,4KAAsL;AAAA,kBAC1M;AAEA,uBAAK,QAAQA,MAAK;AAAA,gBACpB;AAGA,uBAAO,oBAAoB,SAAS,iBAAiB;AAErD,oBAAI,CAAC,SAAS;AAKZ,uCAAqB;AACrB,yBAAO,0BAA0B,MAAM,MAAM,SAAS;AAAA,gBACxD;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAEA,cAAI,8BAA8B;AAElC,cAAI,WAAW;AACf,cAAI,cAAc;AAElB,cAAI,kBAAkB;AACtB,cAAI,eAAe;AACnB,cAAI,WAAW;AAAA,YACb,SAAS,SAAUA,QAAO;AACxB,yBAAW;AACX,4BAAcA;AAAA,YAChB;AAAA,UACF;AAeA,mBAAS,sBAAsBjC,OAAM,MAAM,SAASmB,IAAG,GAAGR,IAAGqB,IAAGjC,IAAG,GAAG;AACpE,uBAAW;AACX,0BAAc;AACd,wCAA4B,MAAM,UAAU,SAAS;AAAA,UACvD;AAYA,mBAAS,wCAAwCC,OAAM,MAAM,SAASmB,IAAG,GAAGR,IAAGqB,IAAGjC,IAAG,GAAG;AACtF,kCAAsB,MAAM,MAAM,SAAS;AAE3C,gBAAI,UAAU;AACZ,kBAAIkC,SAAQ,iBAAiB;AAE7B,kBAAI,CAAC,iBAAiB;AACpB,kCAAkB;AAClB,+BAAeA;AAAA,cACjB;AAAA,YACF;AAAA,UACF;AAMA,mBAAS,qBAAqB;AAC5B,gBAAI,iBAAiB;AACnB,kBAAIA,SAAQ;AACZ,gCAAkB;AAClB,6BAAe;AACf,oBAAMA;AAAA,YACR;AAAA,UACF;AACA,mBAAS,iBAAiB;AACxB,mBAAO;AAAA,UACT;AACA,mBAAS,mBAAmB;AAC1B,gBAAI,UAAU;AACZ,kBAAIA,SAAQ;AACZ,yBAAW;AACX,4BAAc;AACd,qBAAOA;AAAA,YACT,OAAO;AACL,oBAAM,IAAI,MAAM,6HAAkI;AAAA,YACpJ;AAAA,UACF;AAWA,mBAAS,IAAI,KAAK;AAChB,mBAAO,IAAI;AAAA,UACb;AACA,mBAAS,IAAI,KAAK;AAChB,mBAAO,IAAI,oBAAoB;AAAA,UACjC;AACA,mBAAS,IAAI,KAAK,OAAO;AACvB,gBAAI,kBAAkB;AAAA,UACxB;AAGA,cAAI;AAAA;AAAA,YAEJ;AAAA;AACA,cAAI;AAAA;AAAA,YAEJ;AAAA;AAEA,cAAI;AAAA;AAAA,YAEJ;AAAA;AACA,cAAI;AAAA;AAAA,YAEJ;AAAA;AACA,cAAI;AAAA;AAAA,YAEJ;AAAA;AACA,cAAI;AAAA;AAAA,YAEJ;AAAA;AACA,cAAI;AAAA;AAAA,YAEJ;AAAA;AACA,cAAI;AAAA;AAAA,YAEJ;AAAA;AACA,cAAI;AAAA;AAAA,YAEJ;AAAA;AACA,cAAI;AAAA;AAAA,YAEJ;AAAA;AACA,cAAI;AAAA;AAAA,YAEJ;AAAA;AACA,cAAI;AAAA;AAAA,YAEJ;AAAA;AACA,cAAI;AAAA;AAAA,YAEJ;AAAA;AACA,cAAI;AAAA;AAAA,YAEJ;AAAA;AACA,cAAI;AAAA;AAAA,YAEJ;AAAA;AACA,cAAI,sBAAsB,UAAU,SAAS,WAAW,MAAM,WAAW;AAEzE,cAAI;AAAA;AAAA,YAEJ;AAAA;AAEA,cAAI;AAAA;AAAA,YAEJ;AAAA;AACA,cAAI;AAAA;AAAA,YAEJ;AAAA;AACA,cAAI;AAAA;AAAA,YAEJ;AAAA;AACA,cAAI;AAAA;AAAA,YAEJ;AAAA;AAMA,cAAI;AAAA;AAAA,YAEJ;AAAA;AACA,cAAI;AAAA;AAAA,YAEJ;AAAA;AACA,cAAI;AAAA;AAAA,YAEJ;AAAA;AAIA,cAAI;AAAA;AAAA,YAEJ;AAAA;AACA,cAAI;AAAA;AAAA,YAEJ;AAAA;AAGA,cAAI;AAAA;AAAA;AAAA,YAEJ,SAAS,WAAa;AAAA;AACtB,cAAI,eAAe,YAAY,SAAS,gBAAgB,eAAe,MAAM,YAAY;AACzF,cAAI,aAAa,SAAS,WAAW,MAAM;AAE3C,cAAI,cAAc,UAAU;AAI5B,cAAI,aAAa,eAAe,gBAAgB;AAEhD,cAAI,oBAAoB,qBAAqB;AAC7C,mBAAS,uBAAuB,OAAO;AACrC,gBAAI5B,QAAO;AACX,gBAAI,iBAAiB;AAErB,gBAAI,CAAC,MAAM,WAAW;AAGpB,kBAAI,WAAWA;AAEf,iBAAG;AACD,gBAAAA,QAAO;AAEP,qBAAKA,MAAK,SAAS,YAAY,gBAAgB,SAAS;AAItD,mCAAiBA,MAAK;AAAA,gBACxB;AAEA,2BAAWA,MAAK;AAAA,cAClB,SAAS;AAAA,YACX,OAAO;AACL,qBAAOA,MAAK,QAAQ;AAClB,gBAAAA,QAAOA,MAAK;AAAA,cACd;AAAA,YACF;AAEA,gBAAIA,MAAK,QAAQ,UAAU;AAGzB,qBAAO;AAAA,YACT;AAIA,mBAAO;AAAA,UACT;AACA,mBAAS,6BAA6B,OAAO;AAC3C,gBAAI,MAAM,QAAQ,mBAAmB;AACnC,kBAAI,gBAAgB,MAAM;AAE1B,kBAAI,kBAAkB,MAAM;AAC1B,oBAAI8B,WAAU,MAAM;AAEpB,oBAAIA,aAAY,MAAM;AACpB,kCAAgBA,SAAQ;AAAA,gBAC1B;AAAA,cACF;AAEA,kBAAI,kBAAkB,MAAM;AAC1B,uBAAO,cAAc;AAAA,cACvB;AAAA,YACF;AAEA,mBAAO;AAAA,UACT;AACA,mBAAS,sBAAsB,OAAO;AACpC,mBAAO,MAAM,QAAQ,WAAW,MAAM,UAAU,gBAAgB;AAAA,UAClE;AACA,mBAAS,eAAe,OAAO;AAC7B,mBAAO,uBAAuB,KAAK,MAAM;AAAA,UAC3C;AACA,mBAAS,UAAU,WAAW;AAC5B;AACE,kBAAI,QAAQ,kBAAkB;AAE9B,kBAAI,UAAU,QAAQ,MAAM,QAAQ,gBAAgB;AAClD,oBAAI,aAAa;AACjB,oBAAI,WAAW,WAAW;AAE1B,oBAAI,CAAC,SAAS,0BAA0B;AACtC,wBAAM,yRAA6S,0BAA0B,UAAU,KAAK,aAAa;AAAA,gBAC3W;AAEA,yBAAS,2BAA2B;AAAA,cACtC;AAAA,YACF;AAEA,gBAAI,QAAQ,IAAI,SAAS;AAEzB,gBAAI,CAAC,OAAO;AACV,qBAAO;AAAA,YACT;AAEA,mBAAO,uBAAuB,KAAK,MAAM;AAAA,UAC3C;AAEA,mBAAS,gBAAgB,OAAO;AAC9B,gBAAI,uBAAuB,KAAK,MAAM,OAAO;AAC3C,oBAAM,IAAI,MAAM,gDAAgD;AAAA,YAClE;AAAA,UACF;AAEA,mBAAS,8BAA8B,OAAO;AAC5C,gBAAI,YAAY,MAAM;AAEtB,gBAAI,CAAC,WAAW;AAEd,kBAAI,iBAAiB,uBAAuB,KAAK;AAEjD,kBAAI,mBAAmB,MAAM;AAC3B,sBAAM,IAAI,MAAM,gDAAgD;AAAA,cAClE;AAEA,kBAAI,mBAAmB,OAAO;AAC5B,uBAAO;AAAA,cACT;AAEA,qBAAO;AAAA,YACT;AAKA,gBAAIhB,KAAI;AACR,gBAAI,IAAI;AAER,mBAAO,MAAM;AACX,kBAAI,UAAUA,GAAE;AAEhB,kBAAI,YAAY,MAAM;AAEpB;AAAA,cACF;AAEA,kBAAI,UAAU,QAAQ;AAEtB,kBAAI,YAAY,MAAM;AAKpB,oBAAI,aAAa,QAAQ;AAEzB,oBAAI,eAAe,MAAM;AACvB,kBAAAA,KAAI,IAAI;AACR;AAAA,gBACF;AAGA;AAAA,cACF;AAKA,kBAAI,QAAQ,UAAU,QAAQ,OAAO;AACnC,oBAAI,QAAQ,QAAQ;AAEpB,uBAAO,OAAO;AACZ,sBAAI,UAAUA,IAAG;AAEf,oCAAgB,OAAO;AACvB,2BAAO;AAAA,kBACT;AAEA,sBAAI,UAAU,GAAG;AAEf,oCAAgB,OAAO;AACvB,2BAAO;AAAA,kBACT;AAEA,0BAAQ,MAAM;AAAA,gBAChB;AAIA,sBAAM,IAAI,MAAM,gDAAgD;AAAA,cAClE;AAEA,kBAAIA,GAAE,WAAW,EAAE,QAAQ;AAKzB,gBAAAA,KAAI;AACJ,oBAAI;AAAA,cACN,OAAO;AAML,oBAAI,eAAe;AACnB,oBAAI,SAAS,QAAQ;AAErB,uBAAO,QAAQ;AACb,sBAAI,WAAWA,IAAG;AAChB,mCAAe;AACf,oBAAAA,KAAI;AACJ,wBAAI;AACJ;AAAA,kBACF;AAEA,sBAAI,WAAW,GAAG;AAChB,mCAAe;AACf,wBAAI;AACJ,oBAAAA,KAAI;AACJ;AAAA,kBACF;AAEA,2BAAS,OAAO;AAAA,gBAClB;AAEA,oBAAI,CAAC,cAAc;AAEjB,2BAAS,QAAQ;AAEjB,yBAAO,QAAQ;AACb,wBAAI,WAAWA,IAAG;AAChB,qCAAe;AACf,sBAAAA,KAAI;AACJ,0BAAI;AACJ;AAAA,oBACF;AAEA,wBAAI,WAAW,GAAG;AAChB,qCAAe;AACf,0BAAI;AACJ,sBAAAA,KAAI;AACJ;AAAA,oBACF;AAEA,6BAAS,OAAO;AAAA,kBAClB;AAEA,sBAAI,CAAC,cAAc;AACjB,0BAAM,IAAI,MAAM,8HAAmI;AAAA,kBACrJ;AAAA,gBACF;AAAA,cACF;AAEA,kBAAIA,GAAE,cAAc,GAAG;AACrB,sBAAM,IAAI,MAAM,8HAAmI;AAAA,cACrJ;AAAA,YACF;AAIA,gBAAIA,GAAE,QAAQ,UAAU;AACtB,oBAAM,IAAI,MAAM,gDAAgD;AAAA,YAClE;AAEA,gBAAIA,GAAE,UAAU,YAAYA,IAAG;AAE7B,qBAAO;AAAA,YACT;AAGA,mBAAO;AAAA,UACT;AACA,mBAAS,qBAAqB,QAAQ;AACpC,gBAAI,gBAAgB,8BAA8B,MAAM;AACxD,mBAAO,kBAAkB,OAAO,yBAAyB,aAAa,IAAI;AAAA,UAC5E;AAEA,mBAAS,yBAAyBd,OAAM;AAEtC,gBAAIA,MAAK,QAAQ,iBAAiBA,MAAK,QAAQ,UAAU;AACvD,qBAAOA;AAAA,YACT;AAEA,gBAAI,QAAQA,MAAK;AAEjB,mBAAO,UAAU,MAAM;AACrB,kBAAIG,SAAQ,yBAAyB,KAAK;AAE1C,kBAAIA,WAAU,MAAM;AAClB,uBAAOA;AAAA,cACT;AAEA,sBAAQ,MAAM;AAAA,YAChB;AAEA,mBAAO;AAAA,UACT;AAEA,mBAAS,kCAAkC,QAAQ;AACjD,gBAAI,gBAAgB,8BAA8B,MAAM;AACxD,mBAAO,kBAAkB,OAAO,sCAAsC,aAAa,IAAI;AAAA,UACzF;AAEA,mBAAS,sCAAsCH,OAAM;AAEnD,gBAAIA,MAAK,QAAQ,iBAAiBA,MAAK,QAAQ,UAAU;AACvD,qBAAOA;AAAA,YACT;AAEA,gBAAI,QAAQA,MAAK;AAEjB,mBAAO,UAAU,MAAM;AACrB,kBAAI,MAAM,QAAQ,YAAY;AAC5B,oBAAIG,SAAQ,sCAAsC,KAAK;AAEvD,oBAAIA,WAAU,MAAM;AAClB,yBAAOA;AAAA,gBACT;AAAA,cACF;AAEA,sBAAQ,MAAM;AAAA,YAChB;AAEA,mBAAO;AAAA,UACT;AAGA,cAAI,mBAAmB,UAAU;AACjC,cAAI,iBAAiB,UAAU;AAC/B,cAAI,cAAc,UAAU;AAC5B,cAAI,eAAe,UAAU;AAC7B,cAAI4B,OAAM,UAAU;AACpB,cAAI,0BAA0B,UAAU;AACxC,cAAI,oBAAoB,UAAU;AAClC,cAAI,uBAAuB,UAAU;AACrC,cAAI,iBAAiB,UAAU;AAC/B,cAAI,cAAc,UAAU;AAC5B,cAAI,eAAe,UAAU;AAG7B,cAAI,sBAAsB,UAAU;AACpC,cAAI,gCAAgC,UAAU;AAE9C,cAAI,aAAa;AACjB,cAAI,eAAe;AACnB,cAAI,yBAAyB;AAC7B,cAAI,iBAAiB;AACrB,cAAI,oBAAoB,OAAO,mCAAmC;AAClE,mBAAS,gBAAgB,WAAW;AAClC,gBAAI,OAAO,mCAAmC,aAAa;AAEzD,qBAAO;AAAA,YACT;AAEA,gBAAI,OAAO;AAEX,gBAAI,KAAK,YAAY;AAInB,qBAAO;AAAA,YACT;AAEA,gBAAI,CAAC,KAAK,eAAe;AACvB;AACE,sBAAM,+KAAyL;AAAA,cACjM;AAGA,qBAAO;AAAA,YACT;AAEA,gBAAI;AACF,kBAAI,0BAA0B;AAI5B,4BAAY9B,QAAO,CAAC,GAAG,WAAW;AAAA,kBAChC;AAAA,kBACA;AAAA,gBACF,CAAC;AAAA,cACH;AAEA,2BAAa,KAAK,OAAO,SAAS;AAElC,6BAAe;AAAA,YACjB,SAAS,KAAK;AAEZ;AACE,sBAAM,mDAAmD,GAAG;AAAA,cAC9D;AAAA,YACF;AAEA,gBAAI,KAAK,UAAU;AAEjB,qBAAO;AAAA,YACT,OAAO;AAEL,qBAAO;AAAA,YACT;AAAA,UACF;AACA,mBAAS,eAAe+B,OAAM,UAAU;AACtC;AACE,kBAAI,gBAAgB,OAAO,aAAa,wBAAwB,YAAY;AAC1E,oBAAI;AACF,+BAAa,oBAAoB,YAAYA,OAAM,QAAQ;AAAA,gBAC7D,SAAS,KAAK;AACZ,sBAAK,CAAC,gBAAgB;AACpB,qCAAiB;AAEjB,0BAAM,kDAAkD,GAAG;AAAA,kBAC7D;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAAA,UACF;AACA,mBAAS,aAAaA,OAAM,eAAe;AACzC,gBAAI,gBAAgB,OAAO,aAAa,sBAAsB,YAAY;AACxE,kBAAI;AACF,oBAAI,YAAYA,MAAK,QAAQ,QAAQ,gBAAgB;AAErD,oBAAI,qBAAqB;AACvB,sBAAI;AAEJ,0BAAQ,eAAe;AAAA,oBACrB,KAAK;AACH,0CAAoB;AACpB;AAAA,oBAEF,KAAK;AACH,0CAAoB;AACpB;AAAA,oBAEF,KAAK;AACH,0CAAoB;AACpB;AAAA,oBAEF,KAAK;AACH,0CAAoB;AACpB;AAAA,oBAEF;AACE,0CAAoB;AACpB;AAAA,kBACJ;AAEA,+BAAa,kBAAkB,YAAYA,OAAM,mBAAmB,QAAQ;AAAA,gBAC9E,OAAO;AACL,+BAAa,kBAAkB,YAAYA,OAAM,QAAW,QAAQ;AAAA,gBACtE;AAAA,cACF,SAAS,KAAK;AACZ;AACE,sBAAI,CAAC,gBAAgB;AACnB,qCAAiB;AAEjB,0BAAM,kDAAkD,GAAG;AAAA,kBAC7D;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAAA,UACF;AACA,mBAAS,iBAAiBA,OAAM;AAC9B,gBAAI,gBAAgB,OAAO,aAAa,0BAA0B,YAAY;AAC5E,kBAAI;AACF,6BAAa,sBAAsB,YAAYA,KAAI;AAAA,cACrD,SAAS,KAAK;AACZ;AACE,sBAAI,CAAC,gBAAgB;AACnB,qCAAiB;AAEjB,0BAAM,kDAAkD,GAAG;AAAA,kBAC7D;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAAA,UACF;AACA,mBAAS,gBAAgB,OAAO;AAC9B,gBAAI,gBAAgB,OAAO,aAAa,yBAAyB,YAAY;AAC3E,kBAAI;AACF,6BAAa,qBAAqB,YAAY,KAAK;AAAA,cACrD,SAAS,KAAK;AACZ;AACE,sBAAI,CAAC,gBAAgB;AACnB,qCAAiB;AAEjB,0BAAM,kDAAkD,GAAG;AAAA,kBAC7D;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAAA,UACF;AACA,mBAAS,2BAA2B,iBAAiB;AACnD;AACE,kBAAI,OAAO,wBAAwB,YAAY;AAI7C,8CAA8B,eAAe;AAC7C,mCAAmB,eAAe;AAAA,cACpC;AAEA,kBAAI,gBAAgB,OAAO,aAAa,kBAAkB,YAAY;AACpE,oBAAI;AACF,+BAAa,cAAc,YAAY,eAAe;AAAA,gBACxD,SAAS,KAAK;AACZ;AACE,wBAAI,CAAC,gBAAgB;AACnB,uCAAiB;AAEjB,4BAAM,kDAAkD,GAAG;AAAA,oBAC7D;AAAA,kBACF;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,qBAAqB,gBAAgB;AAC5C,qCAAyB;AAAA,UAC3B;AAEA,mBAAS,kBAAkB;AACzB;AACE,kBAAIC,OAAM,oBAAI,IAAI;AAClB,kBAAI,OAAO;AAEX,uBAASC,SAAQ,GAAGA,SAAQ,YAAYA,UAAS;AAC/C,oBAAI,QAAQ,gBAAgB,IAAI;AAChC,gBAAAD,KAAI,IAAI,MAAM,KAAK;AACnB,wBAAQ;AAAA,cACV;AAEA,qBAAOA;AAAA,YACT;AAAA,UACF;AAEA,mBAAS,kBAAkB,OAAO;AAChC;AACE,kBAAI,2BAA2B,QAAQ,OAAO,uBAAuB,sBAAsB,YAAY;AACrG,uCAAuB,kBAAkB,KAAK;AAAA,cAChD;AAAA,YACF;AAAA,UACF;AACA,mBAAS,oBAAoB;AAC3B;AACE,kBAAI,2BAA2B,QAAQ,OAAO,uBAAuB,sBAAsB,YAAY;AACrG,uCAAuB,kBAAkB;AAAA,cAC3C;AAAA,YACF;AAAA,UACF;AACA,mBAAS,2BAA2B,OAAO;AACzC;AACE,kBAAI,2BAA2B,QAAQ,OAAO,uBAAuB,+BAA+B,YAAY;AAC9G,uCAAuB,2BAA2B,KAAK;AAAA,cACzD;AAAA,YACF;AAAA,UACF;AACA,mBAAS,6BAA6B;AACpC;AACE,kBAAI,2BAA2B,QAAQ,OAAO,uBAAuB,+BAA+B,YAAY;AAC9G,uCAAuB,2BAA2B;AAAA,cACpD;AAAA,YACF;AAAA,UACF;AACA,mBAAS,uCAAuC,OAAO;AACrD;AACE,kBAAI,2BAA2B,QAAQ,OAAO,uBAAuB,2CAA2C,YAAY;AAC1H,uCAAuB,uCAAuC,KAAK;AAAA,cACrE;AAAA,YACF;AAAA,UACF;AACA,mBAAS,yCAAyC;AAChD;AACE,kBAAI,2BAA2B,QAAQ,OAAO,uBAAuB,2CAA2C,YAAY;AAC1H,uCAAuB,uCAAuC;AAAA,cAChE;AAAA,YACF;AAAA,UACF;AACA,mBAAS,yCAAyC,OAAO;AACvD;AACE,kBAAI,2BAA2B,QAAQ,OAAO,uBAAuB,6CAA6C,YAAY;AAC5H,uCAAuB,yCAAyC,KAAK;AAAA,cACvE;AAAA,YACF;AAAA,UACF;AACA,mBAAS,2CAA2C;AAClD;AACE,kBAAI,2BAA2B,QAAQ,OAAO,uBAAuB,6CAA6C,YAAY;AAC5H,uCAAuB,yCAAyC;AAAA,cAClE;AAAA,YACF;AAAA,UACF;AACA,mBAAS,sCAAsC,OAAO;AACpD;AACE,kBAAI,2BAA2B,QAAQ,OAAO,uBAAuB,0CAA0C,YAAY;AACzH,uCAAuB,sCAAsC,KAAK;AAAA,cACpE;AAAA,YACF;AAAA,UACF;AACA,mBAAS,wCAAwC;AAC/C;AACE,kBAAI,2BAA2B,QAAQ,OAAO,uBAAuB,0CAA0C,YAAY;AACzH,uCAAuB,sCAAsC;AAAA,cAC/D;AAAA,YACF;AAAA,UACF;AACA,mBAAS,wCAAwC,OAAO;AACtD;AACE,kBAAI,2BAA2B,QAAQ,OAAO,uBAAuB,4CAA4C,YAAY;AAC3H,uCAAuB,wCAAwC,KAAK;AAAA,cACtE;AAAA,YACF;AAAA,UACF;AACA,mBAAS,0CAA0C;AACjD;AACE,kBAAI,2BAA2B,QAAQ,OAAO,uBAAuB,4CAA4C,YAAY;AAC3H,uCAAuB,wCAAwC;AAAA,cACjE;AAAA,YACF;AAAA,UACF;AACA,mBAAS,qBAAqB,OAAO,aAAa,OAAO;AACvD;AACE,kBAAI,2BAA2B,QAAQ,OAAO,uBAAuB,yBAAyB,YAAY;AACxG,uCAAuB,qBAAqB,OAAO,aAAa,KAAK;AAAA,cACvE;AAAA,YACF;AAAA,UACF;AACA,mBAAS,uBAAuB,OAAO,UAAU,OAAO;AACtD;AACE,kBAAI,2BAA2B,QAAQ,OAAO,uBAAuB,2BAA2B,YAAY;AAC1G,uCAAuB,uBAAuB,OAAO,UAAU,KAAK;AAAA,cACtE;AAAA,YACF;AAAA,UACF;AACA,mBAAS,yBAAyB,OAAO;AACvC;AACE,kBAAI,2BAA2B,QAAQ,OAAO,uBAAuB,6BAA6B,YAAY;AAC5G,uCAAuB,yBAAyB,KAAK;AAAA,cACvD;AAAA,YACF;AAAA,UACF;AACA,mBAAS,2BAA2B;AAClC;AACE,kBAAI,2BAA2B,QAAQ,OAAO,uBAAuB,6BAA6B,YAAY;AAC5G,uCAAuB,yBAAyB;AAAA,cAClD;AAAA,YACF;AAAA,UACF;AACA,mBAAS,0BAA0B,OAAO;AACxC;AACE,kBAAI,2BAA2B,QAAQ,OAAO,uBAAuB,8BAA8B,YAAY;AAC7G,uCAAuB,0BAA0B,KAAK;AAAA,cACxD;AAAA,YACF;AAAA,UACF;AACA,mBAAS,4BAA4B;AACnC;AACE,kBAAI,2BAA2B,QAAQ,OAAO,uBAAuB,8BAA8B,YAAY;AAC7G,uCAAuB,0BAA0B;AAAA,cACnD;AAAA,YACF;AAAA,UACF;AACA,mBAAS,kBAAkB,OAAO;AAChC;AACE,kBAAI,2BAA2B,QAAQ,OAAO,uBAAuB,sBAAsB,YAAY;AACrG,uCAAuB,kBAAkB,KAAK;AAAA,cAChD;AAAA,YACF;AAAA,UACF;AACA,mBAAS,oBAAoB;AAC3B;AACE,kBAAI,2BAA2B,QAAQ,OAAO,uBAAuB,sBAAsB,YAAY;AACrG,uCAAuB,kBAAkB;AAAA,cAC3C;AAAA,YACF;AAAA,UACF;AACA,mBAAS,oBAAoB;AAC3B;AACE,kBAAI,2BAA2B,QAAQ,OAAO,uBAAuB,sBAAsB,YAAY;AACrG,uCAAuB,kBAAkB;AAAA,cAC3C;AAAA,YACF;AAAA,UACF;AACA,mBAAS,oBAAoB,MAAM;AACjC;AACE,kBAAI,2BAA2B,QAAQ,OAAO,uBAAuB,wBAAwB,YAAY;AACvG,uCAAuB,oBAAoB,IAAI;AAAA,cACjD;AAAA,YACF;AAAA,UACF;AACA,mBAAS,yBAAyB,OAAO,MAAM;AAC7C;AACE,kBAAI,2BAA2B,QAAQ,OAAO,uBAAuB,6BAA6B,YAAY;AAC5G,uCAAuB,yBAAyB,OAAO,IAAI;AAAA,cAC7D;AAAA,YACF;AAAA,UACF;AACA,mBAAS,yBAAyB,OAAO,MAAM;AAC7C;AACE,kBAAI,2BAA2B,QAAQ,OAAO,uBAAuB,6BAA6B,YAAY;AAC5G,uCAAuB,yBAAyB,OAAO,IAAI;AAAA,cAC7D;AAAA,YACF;AAAA,UACF;AAEA,cAAI;AAAA;AAAA,YAEJ;AAAA;AAEA,cAAI;AAAA;AAAA,YAEJ;AAAA;AACA,cAAI;AAAA;AAAA,YAEJ;AAAA;AACA,cAAI;AAAA;AAAA,YAEJ;AAAA;AACA,cAAI;AAAA;AAAA,YAEJ;AAAA;AAGA,cAAI,QAAQ,KAAK,QAAQ,KAAK,QAAQ;AAItC,cAAIE,OAAM,KAAK;AACf,cAAI,MAAM,KAAK;AAEf,mBAAS,cAAcjC,IAAG;AACxB,gBAAI,SAASA,OAAM;AAEnB,gBAAI,WAAW,GAAG;AAChB,qBAAO;AAAA,YACT;AAEA,mBAAO,MAAMiC,KAAI,MAAM,IAAI,MAAM,KAAK;AAAA,UACxC;AAIA,cAAI,aAAa;AACjB,cAAI;AAAA;AAAA,YAEJ;AAAA;AACA,cAAI;AAAA;AAAA,YAEJ;AAAA;AACA,cAAI;AAAA;AAAA,YAEJ;AAAA;AACA,cAAI;AAAA;AAAA,YAEJ;AAAA;AACA,cAAI;AAAA;AAAA,YAEJ;AAAA;AACA,cAAI;AAAA;AAAA,YAEJ;AAAA;AACA,cAAI;AAAA;AAAA,YAEJ;AAAA;AACA,cAAI;AAAA;AAAA,YAEJ;AAAA;AACA,cAAI;AAAA;AAAA,YAEJ;AAAA;AACA,cAAI;AAAA;AAAA,YAEJ;AAAA;AACA,cAAI;AAAA;AAAA,YAEJ;AAAA;AACA,cAAI;AAAA;AAAA,YAEJ;AAAA;AACA,cAAI;AAAA;AAAA,YAEJ;AAAA;AACA,cAAI;AAAA;AAAA,YAEJ;AAAA;AACA,cAAI;AAAA;AAAA,YAEJ;AAAA;AACA,cAAI;AAAA;AAAA,YAEJ;AAAA;AACA,cAAI;AAAA;AAAA,YAEJ;AAAA;AACA,cAAI;AAAA;AAAA,YAEJ;AAAA;AACA,cAAI;AAAA;AAAA,YAEJ;AAAA;AACA,cAAI;AAAA;AAAA,YAEJ;AAAA;AACA,cAAI;AAAA;AAAA,YAEJ;AAAA;AACA,cAAI;AAAA;AAAA,YAEJ;AAAA;AACA,cAAI;AAAA;AAAA,YAEJ;AAAA;AACA,cAAI;AAAA;AAAA,YAEJ;AAAA;AACA,cAAI;AAAA;AAAA,YAEJ;AAAA;AACA,cAAI;AAAA;AAAA,YAEJ;AAAA;AACA,cAAI;AAAA;AAAA,YAEJ;AAAA;AACA,cAAI;AAAA;AAAA,YAEJ;AAAA;AACA,cAAI;AAAA;AAAA,YAEJ;AAAA;AACA,cAAI;AAAA;AAAA,YAEJ;AAAA;AACA,cAAI;AAAA;AAAA,YAEJ;AAAA;AACA,cAAI,gBAAgB;AACpB,cAAI;AAAA;AAAA,YAEJ;AAAA;AACA,cAAI;AAAA;AAAA,YAEJ;AAAA;AACA,cAAI;AAAA;AAAA,YAEJ;AAAA;AACA,cAAI;AAAA;AAAA,YAEJ;AAAA;AACA,cAAI;AAAA;AAAA,YAEJ;AAAA;AAGA,mBAAS,gBAAgB,MAAM;AAC7B;AACE,kBAAI,OAAO,UAAU;AACnB,uBAAO;AAAA,cACT;AAEA,kBAAI,OAAO,8BAA8B;AACvC,uBAAO;AAAA,cACT;AAEA,kBAAI,OAAO,qBAAqB;AAC9B,uBAAO;AAAA,cACT;AAEA,kBAAI,OAAO,sBAAsB;AAC/B,uBAAO;AAAA,cACT;AAEA,kBAAI,OAAO,aAAa;AACtB,uBAAO;AAAA,cACT;AAEA,kBAAI,OAAO,yBAAyB;AAClC,uBAAO;AAAA,cACT;AAEA,kBAAI,OAAO,iBAAiB;AAC1B,uBAAO;AAAA,cACT;AAEA,kBAAI,OAAO,YAAY;AACrB,uBAAO;AAAA,cACT;AAEA,kBAAI,OAAO,wBAAwB;AACjC,uBAAO;AAAA,cACT;AAEA,kBAAI,OAAO,mBAAmB;AAC5B,uBAAO;AAAA,cACT;AAEA,kBAAI,OAAO,UAAU;AACnB,uBAAO;AAAA,cACT;AAEA,kBAAI,OAAO,eAAe;AACxB,uBAAO;AAAA,cACT;AAAA,YACF;AAAA,UACF;AACA,cAAI,cAAc;AAClB,cAAI,qBAAqB;AACzB,cAAI,gBAAgB;AAEpB,mBAAS,wBAAwB,OAAO;AACtC,oBAAQ,uBAAuB,KAAK,GAAG;AAAA,cACrC,KAAK;AACH,uBAAO;AAAA,cAET,KAAK;AACH,uBAAO;AAAA,cAET,KAAK;AACH,uBAAO;AAAA,cAET,KAAK;AACH,uBAAO;AAAA,cAET,KAAK;AACH,uBAAO;AAAA,cAET,KAAK;AACH,uBAAO;AAAA,cAET,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AACH,uBAAO,QAAQ;AAAA,cAEjB,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AACH,uBAAO,QAAQ;AAAA,cAEjB,KAAK;AACH,uBAAO;AAAA,cAET,KAAK;AACH,uBAAO;AAAA,cAET,KAAK;AACH,uBAAO;AAAA,cAET,KAAK;AACH,uBAAO;AAAA,cAET;AACE;AACE,wBAAM,2DAA2D;AAAA,gBACnE;AAGA,uBAAO;AAAA,YACX;AAAA,UACF;AAEA,mBAAS,aAAaH,OAAM,UAAU;AAEpC,gBAAI,eAAeA,MAAK;AAExB,gBAAI,iBAAiB,SAAS;AAC5B,qBAAO;AAAA,YACT;AAEA,gBAAI,YAAY;AAChB,gBAAI,iBAAiBA,MAAK;AAC1B,gBAAI,cAAcA,MAAK;AAGvB,gBAAI,sBAAsB,eAAe;AAEzC,gBAAI,wBAAwB,SAAS;AACnC,kBAAI,wBAAwB,sBAAsB,CAAC;AAEnD,kBAAI,0BAA0B,SAAS;AACrC,4BAAY,wBAAwB,qBAAqB;AAAA,cAC3D,OAAO;AACL,oBAAI,qBAAqB,sBAAsB;AAE/C,oBAAI,uBAAuB,SAAS;AAClC,8BAAY,wBAAwB,kBAAkB;AAAA,gBACxD;AAAA,cACF;AAAA,YACF,OAAO;AAEL,kBAAI,iBAAiB,eAAe,CAAC;AAErC,kBAAI,mBAAmB,SAAS;AAC9B,4BAAY,wBAAwB,cAAc;AAAA,cACpD,OAAO;AACL,oBAAI,gBAAgB,SAAS;AAC3B,8BAAY,wBAAwB,WAAW;AAAA,gBACjD;AAAA,cACF;AAAA,YACF;AAEA,gBAAI,cAAc,SAAS;AAGzB,qBAAO;AAAA,YACT;AAKA,gBAAI,aAAa,WAAW,aAAa;AAAA;AAAA,aAExC,WAAW,oBAAoB,SAAS;AACvC,kBAAI,WAAW,uBAAuB,SAAS;AAC/C,kBAAI,UAAU,uBAAuB,QAAQ;AAE7C;AAAA;AAAA;AAAA,gBAEA,YAAY;AAAA;AAAA;AAAA,gBAGZ,aAAa,gBAAgB,UAAU,qBAAqB;AAAA,gBAAS;AAEnE,uBAAO;AAAA,cACT;AAAA,YACF;AAEA,iBAAK,YAAY,yBAAyB,SAAS;AAKjD,2BAAa,eAAe;AAAA,YAC9B;AAwBA,gBAAI,iBAAiBA,MAAK;AAE1B,gBAAI,mBAAmB,SAAS;AAC9B,kBAAI,gBAAgBA,MAAK;AACzB,kBAAI,QAAQ,YAAY;AAExB,qBAAO,QAAQ,GAAG;AAChB,oBAAIE,SAAQ,uBAAuB,KAAK;AACxC,oBAAI,OAAO,KAAKA;AAChB,6BAAa,cAAcA,MAAK;AAChC,yBAAS,CAAC;AAAA,cACZ;AAAA,YACF;AAEA,mBAAO;AAAA,UACT;AACA,mBAAS,uBAAuBF,OAAM,OAAO;AAC3C,gBAAI,aAAaA,MAAK;AACtB,gBAAI,sBAAsB;AAE1B,mBAAO,QAAQ,GAAG;AAChB,kBAAIE,SAAQ,uBAAuB,KAAK;AACxC,kBAAI,OAAO,KAAKA;AAChB,kBAAI,YAAY,WAAWA,MAAK;AAEhC,kBAAI,YAAY,qBAAqB;AACnC,sCAAsB;AAAA,cACxB;AAEA,uBAAS,CAAC;AAAA,YACZ;AAEA,mBAAO;AAAA,UACT;AAEA,mBAAS,sBAAsB,MAAM,aAAa;AAChD,oBAAQ,MAAM;AAAA,cACZ,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAUH,uBAAO,cAAc;AAAA,cAEvB,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AACH,uBAAO,cAAc;AAAA,cAEvB,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAMH,uBAAO;AAAA,cAET,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAEH,uBAAO;AAAA,cAET;AACE;AACE,wBAAM,2DAA2D;AAAA,gBACnE;AAEA,uBAAO;AAAA,YACX;AAAA,UACF;AAEA,mBAAS,0BAA0BF,OAAM,aAAa;AAIpD,gBAAI,eAAeA,MAAK;AACxB,gBAAI,iBAAiBA,MAAK;AAC1B,gBAAI,cAAcA,MAAK;AACvB,gBAAI,kBAAkBA,MAAK;AAI3B,gBAAI,QAAQ;AAEZ,mBAAO,QAAQ,GAAG;AAChB,kBAAIE,SAAQ,uBAAuB,KAAK;AACxC,kBAAI,OAAO,KAAKA;AAChB,kBAAI,iBAAiB,gBAAgBA,MAAK;AAE1C,kBAAI,mBAAmB,aAAa;AAIlC,qBAAK,OAAO,oBAAoB,YAAY,OAAO,iBAAiB,SAAS;AAE3E,kCAAgBA,MAAK,IAAI,sBAAsB,MAAM,WAAW;AAAA,gBAClE;AAAA,cACF,WAAW,kBAAkB,aAAa;AAExC,gBAAAF,MAAK,gBAAgB;AAAA,cACvB;AAEA,uBAAS,CAAC;AAAA,YACZ;AAAA,UACF;AAGA,mBAAS,+BAA+BA,OAAM;AAC5C,mBAAO,wBAAwBA,MAAK,YAAY;AAAA,UAClD;AACA,mBAAS,oCAAoCA,OAAM;AACjD,gBAAI,yBAAyBA,MAAK,eAAe,CAAC;AAElD,gBAAI,2BAA2B,SAAS;AACtC,qBAAO;AAAA,YACT;AAEA,gBAAI,yBAAyB,eAAe;AAC1C,qBAAO;AAAA,YACT;AAEA,mBAAO;AAAA,UACT;AACA,mBAAS,iBAAiB,OAAO;AAC/B,oBAAQ,QAAQ,cAAc;AAAA,UAChC;AACA,mBAAS,oBAAoB,OAAO;AAClC,oBAAQ,QAAQ,kBAAkB;AAAA,UACpC;AACA,mBAAS,oBAAoB,OAAO;AAClC,oBAAQ,QAAQ,gBAAgB;AAAA,UAClC;AACA,mBAAS,2BAA2B,OAAO;AACzC,gBAAI,cAAc,WAAW,sBAAsB;AACnD,oBAAQ,QAAQ,iBAAiB;AAAA,UACnC;AACA,mBAAS,wBAAwB,OAAO;AACtC,oBAAQ,QAAQ,qBAAqB;AAAA,UACvC;AACA,mBAAS,qBAAqBA,OAAM,OAAO;AAEzC,gBAAI,mBAAmB,+BAA+B,sBAAsB,uBAAuB;AACnG,oBAAQ,QAAQ,sBAAsB;AAAA,UACxC;AACA,mBAAS,oBAAoBA,OAAM,OAAO;AAGxC,oBAAQ,QAAQA,MAAK,kBAAkB;AAAA,UACzC;AACA,mBAAS,iBAAiB,MAAM;AAC9B,oBAAQ,OAAO,qBAAqB;AAAA,UACtC;AACA,mBAAS,0BAA0B;AAIjC,gBAAI,OAAO;AACX,mCAAuB;AAEvB,iBAAK,qBAAqB,qBAAqB,SAAS;AACtD,mCAAqB;AAAA,YACvB;AAEA,mBAAO;AAAA,UACT;AACA,mBAAS,qBAAqB;AAC5B,gBAAI,OAAO;AACX,8BAAkB;AAElB,iBAAK,gBAAgB,gBAAgB,SAAS;AAC5C,8BAAgB;AAAA,YAClB;AAEA,mBAAO;AAAA,UACT;AACA,mBAAS,uBAAuB,OAAO;AACrC,mBAAO,QAAQ,CAAC;AAAA,UAClB;AACA,mBAAS,kBAAkB,OAAO;AAKhC,mBAAO,uBAAuB,KAAK;AAAA,UACrC;AAEA,mBAAS,uBAAuB,OAAO;AACrC,mBAAO,KAAK,MAAM,KAAK;AAAA,UACzB;AAEA,mBAAS,YAAY,MAAM;AACzB,mBAAO,uBAAuB,IAAI;AAAA,UACpC;AAEA,mBAAS,iBAAiBlB,IAAG,GAAG;AAC9B,oBAAQA,KAAI,OAAO;AAAA,UACrB;AACA,mBAAS,gBAAgBH,MAAK,QAAQ;AACpC,oBAAQA,OAAM,YAAY;AAAA,UAC5B;AACA,mBAAS,WAAWG,IAAG,GAAG;AACxB,mBAAOA,KAAI;AAAA,UACb;AACA,mBAAS,YAAYH,MAAK,QAAQ;AAChC,mBAAOA,OAAM,CAAC;AAAA,UAChB;AACA,mBAAS,eAAeG,IAAG,GAAG;AAC5B,mBAAOA,KAAI;AAAA,UACb;AAGA,mBAAS,YAAY,MAAM;AACzB,mBAAO;AAAA,UACT;AACA,mBAAS,mBAAmBA,IAAG,GAAG;AAEhC,mBAAOA,OAAM,UAAUA,KAAI,IAAIA,KAAI;AAAA,UACrC;AACA,mBAAS,cAAc,SAAS;AAG9B,gBAAI,UAAU,CAAC;AAEf,qBAAS,IAAI,GAAG,IAAI,YAAY,KAAK;AACnC,sBAAQ,KAAK,OAAO;AAAA,YACtB;AAEA,mBAAO;AAAA,UACT;AACA,mBAAS,gBAAgBkB,OAAM,YAAY,WAAW;AACpD,YAAAA,MAAK,gBAAgB;AAarB,gBAAI,eAAe,UAAU;AAC3B,cAAAA,MAAK,iBAAiB;AACtB,cAAAA,MAAK,cAAc;AAAA,YACrB;AAEA,gBAAI,aAAaA,MAAK;AACtB,gBAAIE,SAAQ,YAAY,UAAU;AAGlC,uBAAWA,MAAK,IAAI;AAAA,UACtB;AACA,mBAAS,kBAAkBF,OAAM,gBAAgB;AAC/C,YAAAA,MAAK,kBAAkB;AACvB,YAAAA,MAAK,eAAe,CAAC;AAErB,gBAAI,kBAAkBA,MAAK;AAC3B,gBAAI,QAAQ;AAEZ,mBAAO,QAAQ,GAAG;AAChB,kBAAIE,SAAQ,uBAAuB,KAAK;AACxC,kBAAI,OAAO,KAAKA;AAChB,8BAAgBA,MAAK,IAAI;AACzB,uBAAS,CAAC;AAAA,YACZ;AAAA,UACF;AACA,mBAAS,eAAeF,OAAM,aAAa,WAAW;AACpD,YAAAA,MAAK,eAAeA,MAAK,iBAAiB;AAAA,UAC5C;AACA,mBAAS,iBAAiBA,OAAM,gBAAgB;AAC9C,gBAAI,uBAAuBA,MAAK,eAAe,CAAC;AAChD,YAAAA,MAAK,eAAe;AAEpB,YAAAA,MAAK,iBAAiB;AACtB,YAAAA,MAAK,cAAc;AACnB,YAAAA,MAAK,gBAAgB;AACrB,YAAAA,MAAK,oBAAoB;AACzB,YAAAA,MAAK,kBAAkB;AACvB,gBAAI,gBAAgBA,MAAK;AACzB,gBAAI,aAAaA,MAAK;AACtB,gBAAI,kBAAkBA,MAAK;AAE3B,gBAAI,QAAQ;AAEZ,mBAAO,QAAQ,GAAG;AAChB,kBAAIE,SAAQ,uBAAuB,KAAK;AACxC,kBAAI,OAAO,KAAKA;AAChB,4BAAcA,MAAK,IAAI;AACvB,yBAAWA,MAAK,IAAI;AACpB,8BAAgBA,MAAK,IAAI;AACzB,uBAAS,CAAC;AAAA,YACZ;AAAA,UACF;AACA,mBAAS,kBAAkBF,OAAM,gBAAgB;AAY/C,gBAAI,qBAAqBA,MAAK,kBAAkB;AAChD,gBAAI,gBAAgBA,MAAK;AACzB,gBAAI,QAAQ;AAEZ,mBAAO,OAAO;AACZ,kBAAIE,SAAQ,uBAAuB,KAAK;AACxC,kBAAI,OAAO,KAAKA;AAEhB;AAAA;AAAA,gBACA,OAAO;AAAA,gBACP,cAAcA,MAAK,IAAI;AAAA,gBAAgB;AACrC,8BAAcA,MAAK,KAAK;AAAA,cAC1B;AAEA,uBAAS,CAAC;AAAA,YACZ;AAAA,UACF;AACA,mBAAS,0BAA0BF,OAAMI,cAAa;AACpD,gBAAI,aAAa,uBAAuBA,YAAW;AACnD,gBAAI;AAEJ,oBAAQ,YAAY;AAAA,cAClB,KAAK;AACH,uBAAO;AACP;AAAA,cAEF,KAAK;AACH,uBAAO;AACP;AAAA,cAEF,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AACH,uBAAO;AACP;AAAA,cAEF,KAAK;AACH,uBAAO;AACP;AAAA,cAEF;AAGE,uBAAO;AACP;AAAA,YACJ;AAKA,iBAAK,QAAQJ,MAAK,iBAAiBI,mBAAkB,QAAQ;AAE3D,qBAAO;AAAA,YACT;AAEA,mBAAO;AAAA,UACT;AACA,mBAAS,mBAAmBJ,OAAM,OAAO,OAAO;AAE9C,gBAAI,CAAC,mBAAmB;AACtB;AAAA,YACF;AAEA,gBAAI,yBAAyBA,MAAK;AAElC,mBAAO,QAAQ,GAAG;AAChB,kBAAIE,SAAQ,YAAY,KAAK;AAC7B,kBAAI,OAAO,KAAKA;AAChB,kBAAI,WAAW,uBAAuBA,MAAK;AAC3C,uBAAS,IAAI,KAAK;AAClB,uBAAS,CAAC;AAAA,YACZ;AAAA,UACF;AACA,mBAAS,4BAA4BF,OAAM,OAAO;AAEhD,gBAAI,CAAC,mBAAmB;AACtB;AAAA,YACF;AAEA,gBAAI,yBAAyBA,MAAK;AAClC,gBAAI,mBAAmBA,MAAK;AAE5B,mBAAO,QAAQ,GAAG;AAChB,kBAAIE,SAAQ,YAAY,KAAK;AAC7B,kBAAI,OAAO,KAAKA;AAChB,kBAAI,WAAW,uBAAuBA,MAAK;AAE3C,kBAAI,SAAS,OAAO,GAAG;AACrB,yBAAS,QAAQ,SAAU,OAAO;AAChC,sBAAI,YAAY,MAAM;AAEtB,sBAAI,cAAc,QAAQ,CAAC,iBAAiB,IAAI,SAAS,GAAG;AAC1D,qCAAiB,IAAI,KAAK;AAAA,kBAC5B;AAAA,gBACF,CAAC;AACD,yBAAS,MAAM;AAAA,cACjB;AAEA,uBAAS,CAAC;AAAA,YACZ;AAAA,UACF;AACA,mBAAS,uBAAuBF,OAAM,OAAO;AAC3C;AACE,qBAAO;AAAA,YACT;AAAA,UACF;AAEA,cAAI,wBAAwB;AAC5B,cAAI,0BAA0B;AAC9B,cAAI,uBAAuB;AAC3B,cAAI,oBAAoB;AACxB,cAAI,wBAAwB;AAC5B,mBAAS,2BAA2B;AAClC,mBAAO;AAAA,UACT;AACA,mBAAS,yBAAyB,aAAa;AAC7C,oCAAwB;AAAA,UAC1B;AACA,mBAAS,gBAAgB,UAAU,IAAI;AACrC,gBAAI,mBAAmB;AAEvB,gBAAI;AACF,sCAAwB;AACxB,qBAAO,GAAG;AAAA,YACZ,UAAE;AACA,sCAAwB;AAAA,YAC1B;AAAA,UACF;AACA,mBAAS,oBAAoBlB,IAAG,GAAG;AACjC,mBAAOA,OAAM,KAAKA,KAAI,IAAIA,KAAI;AAAA,UAChC;AACA,mBAAS,mBAAmBA,IAAG,GAAG;AAChC,mBAAOA,OAAM,KAAKA,KAAI,IAAIA,KAAI;AAAA,UAChC;AACA,mBAAS,sBAAsBA,IAAG,GAAG;AACnC,mBAAOA,OAAM,KAAKA,KAAI;AAAA,UACxB;AACA,mBAAS,qBAAqB,OAAO;AACnC,gBAAI,OAAO,uBAAuB,KAAK;AAEvC,gBAAI,CAAC,sBAAsB,uBAAuB,IAAI,GAAG;AACvD,qBAAO;AAAA,YACT;AAEA,gBAAI,CAAC,sBAAsB,yBAAyB,IAAI,GAAG;AACzD,qBAAO;AAAA,YACT;AAEA,gBAAI,oBAAoB,IAAI,GAAG;AAC7B,qBAAO;AAAA,YACT;AAEA,mBAAO;AAAA,UACT;AAKA,mBAAS,iBAAiBkB,OAAM;AAC9B,gBAAI,eAAeA,MAAK,QAAQ;AAChC,mBAAO,aAAa;AAAA,UACtB;AAEA,cAAI;AAEJ,mBAAS,+BAA+B,IAAI;AAC1C,2CAA+B;AAAA,UACjC;AACA,mBAAS,4BAA4B,OAAO;AAC1C,yCAA6B,KAAK;AAAA,UACpC;AACA,cAAI;AACJ,mBAAS,8BAA8B,IAAI;AACzC,yCAA6B;AAAA,UAC/B;AACA,cAAI;AACJ,mBAAS,qCAAqC,IAAI;AAChD,gDAAoC;AAAA,UACtC;AACA,cAAI;AACJ,mBAAS,4BAA4B,IAAI;AACvC,yCAA6B;AAAA,UAC/B;AACA,cAAI;AACJ,mBAAS,8BAA8B,IAAI;AACzC,yCAA6B;AAAA,UAC/B;AAGA,cAAI,4BAA4B;AAEhC,cAAI,uBAAuB,CAAC;AAG5B,cAAI,cAAc;AAClB,cAAI,aAAa;AACjB,cAAI,cAAc;AAElB,cAAI,iBAAiB,oBAAI,IAAI;AAC7B,cAAI,wBAAwB,oBAAI,IAAI;AAEpC,cAAI,iCAAiC,CAAC;AACtC,cAAI,2BAA2B;AAAA,YAAC;AAAA,YAAa;AAAA,YAAW;AAAA,YAAe;AAAA,YAAY;AAAA,YAAc;AAAA,YAAY;AAAA,YAAY;AAAA,YAAiB;AAAA,YAAe;AAAA,YAAa;AAAA,YAAW;AAAA,YAAa;AAAA,YAAQ;AAAA,YAAkB;AAAA,YAAoB;AAAA,YAAW;AAAA,YAAY;AAAA,YAAS;AAAA,YAAS;AAAA;AAAA,YACrR;AAAA,YAAQ;AAAA,YAAO;AAAA,YAAS;AAAA,YAAS;AAAA,YAAU;AAAA,YAAe;AAAA,YAAS;AAAA,UAAQ;AAC3E,mBAAS,qCAAqC,WAAW;AACvD,mBAAO,yBAAyB,QAAQ,SAAS,IAAI;AAAA,UACvD;AAEA,mBAAS,4BAA4B,WAAW,cAAc,kBAAkB,iBAAiB,aAAa;AAC5G,mBAAO;AAAA,cACL;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA,kBAAkB,CAAC,eAAe;AAAA,YACpC;AAAA,UACF;AAEA,mBAAS,uBAAuB,cAAc,aAAa;AACzD,oBAAQ,cAAc;AAAA,cACpB,KAAK;AAAA,cACL,KAAK;AACH,8BAAc;AACd;AAAA,cAEF,KAAK;AAAA,cACL,KAAK;AACH,6BAAa;AACb;AAAA,cAEF,KAAK;AAAA,cACL,KAAK;AACH,8BAAc;AACd;AAAA,cAEF,KAAK;AAAA,cACL,KAAK,cACH;AACE,oBAAI,YAAY,YAAY;AAC5B,+BAAe,OAAO,SAAS;AAC/B;AAAA,cACF;AAAA,cAEF,KAAK;AAAA,cACL,KAAK,sBACH;AACE,oBAAI,aAAa,YAAY;AAC7B,sCAAsB,OAAO,UAAU;AACvC;AAAA,cACF;AAAA,YACJ;AAAA,UACF;AAEA,mBAAS,kDAAkD,qBAAqB,WAAW,cAAc,kBAAkB,iBAAiB,aAAa;AACvJ,gBAAI,wBAAwB,QAAQ,oBAAoB,gBAAgB,aAAa;AACnF,kBAAI,cAAc,4BAA4B,WAAW,cAAc,kBAAkB,iBAAiB,WAAW;AAErH,kBAAI,cAAc,MAAM;AACtB,oBAAI,UAAU,oBAAoB,SAAS;AAE3C,oBAAI,YAAY,MAAM;AAEpB,6CAA2B,OAAO;AAAA,gBACpC;AAAA,cACF;AAEA,qBAAO;AAAA,YACT;AAMA,gCAAoB,oBAAoB;AACxC,gBAAI,mBAAmB,oBAAoB;AAE3C,gBAAI,oBAAoB,QAAQ,iBAAiB,QAAQ,eAAe,MAAM,IAAI;AAChF,+BAAiB,KAAK,eAAe;AAAA,YACvC;AAEA,mBAAO;AAAA,UACT;AAEA,mBAAS,uBAAuB,WAAW,cAAc,kBAAkB,iBAAiB,aAAa;AAIvG,oBAAQ,cAAc;AAAA,cACpB,KAAK,WACH;AACE,oBAAI,aAAa;AACjB,8BAAc,kDAAkD,aAAa,WAAW,cAAc,kBAAkB,iBAAiB,UAAU;AACnJ,uBAAO;AAAA,cACT;AAAA,cAEF,KAAK,aACH;AACE,oBAAI,YAAY;AAChB,6BAAa,kDAAkD,YAAY,WAAW,cAAc,kBAAkB,iBAAiB,SAAS;AAChJ,uBAAO;AAAA,cACT;AAAA,cAEF,KAAK,aACH;AACE,oBAAI,aAAa;AACjB,8BAAc,kDAAkD,aAAa,WAAW,cAAc,kBAAkB,iBAAiB,UAAU;AACnJ,uBAAO;AAAA,cACT;AAAA,cAEF,KAAK,eACH;AACE,oBAAI,eAAe;AACnB,oBAAI,YAAY,aAAa;AAC7B,+BAAe,IAAI,WAAW,kDAAkD,eAAe,IAAI,SAAS,KAAK,MAAM,WAAW,cAAc,kBAAkB,iBAAiB,YAAY,CAAC;AAChM,uBAAO;AAAA,cACT;AAAA,cAEF,KAAK,qBACH;AACE,oBAAI,gBAAgB;AACpB,oBAAI,cAAc,cAAc;AAChC,sCAAsB,IAAI,aAAa,kDAAkD,sBAAsB,IAAI,WAAW,KAAK,MAAM,WAAW,cAAc,kBAAkB,iBAAiB,aAAa,CAAC;AACnN,uBAAO;AAAA,cACT;AAAA,YACJ;AAEA,mBAAO;AAAA,UACT;AAEA,mBAAS,+BAA+B,cAAc;AAIpD,gBAAI,aAAa,2BAA2B,aAAa,MAAM;AAE/D,gBAAI,eAAe,MAAM;AACvB,kBAAI,iBAAiB,uBAAuB,UAAU;AAEtD,kBAAI,mBAAmB,MAAM;AAC3B,oBAAI,MAAM,eAAe;AAEzB,oBAAI,QAAQ,mBAAmB;AAC7B,sBAAI,WAAW,6BAA6B,cAAc;AAE1D,sBAAI,aAAa,MAAM;AAGrB,iCAAa,YAAY;AACzB,+CAA2B,aAAa,UAAU,WAAY;AAC5D,wDAAkC,cAAc;AAAA,oBAClD,CAAC;AACD;AAAA,kBACF;AAAA,gBACF,WAAW,QAAQ,UAAU;AAC3B,sBAAIA,QAAO,eAAe;AAE1B,sBAAI,iBAAiBA,KAAI,GAAG;AAC1B,iCAAa,YAAY,sBAAsB,cAAc;AAG7D;AAAA,kBACF;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAEA,yBAAa,YAAY;AAAA,UAC3B;AAEA,mBAAS,6BAA6B,QAAQ;AAI5C,gBAAI,iBAAiB,2BAA2B;AAChD,gBAAI,eAAe;AAAA,cACjB,WAAW;AAAA,cACX;AAAA,cACA,UAAU;AAAA,YACZ;AACA,gBAAI,IAAI;AAER,mBAAO,IAAI,+BAA+B,QAAQ,KAAK;AAErD,kBAAI,CAAC,sBAAsB,gBAAgB,+BAA+B,CAAC,EAAE,QAAQ,GAAG;AACtF;AAAA,cACF;AAAA,YACF;AAEA,2CAA+B,OAAO,GAAG,GAAG,YAAY;AAExD,gBAAI,MAAM,GAAG;AACX,6CAA+B,YAAY;AAAA,YAC7C;AAAA,UACF;AAEA,mBAAS,mCAAmC,aAAa;AACvD,gBAAI,YAAY,cAAc,MAAM;AAClC,qBAAO;AAAA,YACT;AAEA,gBAAI,mBAAmB,YAAY;AAEnC,mBAAO,iBAAiB,SAAS,GAAG;AAClC,kBAAI,kBAAkB,iBAAiB,CAAC;AACxC,kBAAI,gBAAgB,0BAA0B,YAAY,cAAc,YAAY,kBAAkB,iBAAiB,YAAY,WAAW;AAE9I,kBAAI,kBAAkB,MAAM;AAC1B;AACE,sBAAI,cAAc,YAAY;AAC9B,sBAAI,mBAAmB,IAAI,YAAY,YAAY,YAAY,MAAM,WAAW;AAChF,oCAAkB,gBAAgB;AAClC,8BAAY,OAAO,cAAc,gBAAgB;AACjD,sCAAoB;AAAA,gBACtB;AAAA,cACF,OAAO;AAEL,oBAAI,UAAU,oBAAoB,aAAa;AAE/C,oBAAI,YAAY,MAAM;AACpB,6CAA2B,OAAO;AAAA,gBACpC;AAEA,4BAAY,YAAY;AACxB,uBAAO;AAAA,cACT;AAGA,+BAAiB,MAAM;AAAA,YACzB;AAEA,mBAAO;AAAA,UACT;AAEA,mBAAS,wCAAwC,aAAa,KAAKC,MAAK;AACtE,gBAAI,mCAAmC,WAAW,GAAG;AACnD,cAAAA,KAAI,OAAO,GAAG;AAAA,YAChB;AAAA,UACF;AAEA,mBAAS,wBAAwB;AAC/B,wCAA4B;AAG5B,gBAAI,gBAAgB,QAAQ,mCAAmC,WAAW,GAAG;AAC3E,4BAAc;AAAA,YAChB;AAEA,gBAAI,eAAe,QAAQ,mCAAmC,UAAU,GAAG;AACzE,2BAAa;AAAA,YACf;AAEA,gBAAI,gBAAgB,QAAQ,mCAAmC,WAAW,GAAG;AAC3E,4BAAc;AAAA,YAChB;AAEA,2BAAe,QAAQ,uCAAuC;AAC9D,kCAAsB,QAAQ,uCAAuC;AAAA,UACvE;AAEA,mBAAS,4BAA4B,aAAa,WAAW;AAC3D,gBAAI,YAAY,cAAc,WAAW;AACvC,0BAAY,YAAY;AAExB,kBAAI,CAAC,2BAA2B;AAC9B,4CAA4B;AAI5B,0BAAU,0BAA0B,UAAU,yBAAyB,qBAAqB;AAAA,cAC9F;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,iBAAiB,WAAW;AAGnC,gBAAI,qBAAqB,SAAS,GAAG;AACnC,0CAA4B,qBAAqB,CAAC,GAAG,SAAS;AAI9D,uBAAS,IAAI,GAAG,IAAI,qBAAqB,QAAQ,KAAK;AACpD,oBAAI,cAAc,qBAAqB,CAAC;AAExC,oBAAI,YAAY,cAAc,WAAW;AACvC,8BAAY,YAAY;AAAA,gBAC1B;AAAA,cACF;AAAA,YACF;AAEA,gBAAI,gBAAgB,MAAM;AACxB,0CAA4B,aAAa,SAAS;AAAA,YACpD;AAEA,gBAAI,eAAe,MAAM;AACvB,0CAA4B,YAAY,SAAS;AAAA,YACnD;AAEA,gBAAI,gBAAgB,MAAM;AACxB,0CAA4B,aAAa,SAAS;AAAA,YACpD;AAEA,gBAAI,UAAU,SAAUI,cAAa;AACnC,qBAAO,4BAA4BA,cAAa,SAAS;AAAA,YAC3D;AAEA,2BAAe,QAAQ,OAAO;AAC9B,kCAAsB,QAAQ,OAAO;AAErC,qBAAS,KAAK,GAAG,KAAK,+BAA+B,QAAQ,MAAM;AACjE,kBAAI,eAAe,+BAA+B,EAAE;AAEpD,kBAAI,aAAa,cAAc,WAAW;AACxC,6BAAa,YAAY;AAAA,cAC3B;AAAA,YACF;AAEA,mBAAO,+BAA+B,SAAS,GAAG;AAChD,kBAAI,qBAAqB,+BAA+B,CAAC;AAEzD,kBAAI,mBAAmB,cAAc,MAAM;AAEzC;AAAA,cACF,OAAO;AACL,+CAA+B,kBAAkB;AAEjD,oBAAI,mBAAmB,cAAc,MAAM;AAEzC,iDAA+B,MAAM;AAAA,gBACvC;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAEA,cAAI,0BAA0B,qBAAqB;AAEnD,cAAI,WAAW;AAGf,mBAAS,WAAW,SAAS;AAC3B,uBAAW,CAAC,CAAC;AAAA,UACf;AACA,mBAAS,YAAY;AACnB,mBAAO;AAAA,UACT;AACA,mBAAS,uCAAuC,iBAAiB,cAAc,kBAAkB;AAC/F,gBAAI,gBAAgB,iBAAiB,YAAY;AACjD,gBAAI;AAEJ,oBAAQ,eAAe;AAAA,cACrB,KAAK;AACH,kCAAkB;AAClB;AAAA,cAEF,KAAK;AACH,kCAAkB;AAClB;AAAA,cAEF,KAAK;AAAA,cACL;AACE,kCAAkB;AAClB;AAAA,YACJ;AAEA,mBAAO,gBAAgB,KAAK,MAAM,cAAc,kBAAkB,eAAe;AAAA,UACnF;AAEA,mBAAS,sBAAsB,cAAc,kBAAkB,WAAW,aAAa;AACrF,gBAAI,mBAAmB,yBAAyB;AAChD,gBAAI,iBAAiB,wBAAwB;AAC7C,oCAAwB,aAAa;AAErC,gBAAI;AACF,uCAAyB,qBAAqB;AAC9C,4BAAc,cAAc,kBAAkB,WAAW,WAAW;AAAA,YACtE,UAAE;AACA,uCAAyB,gBAAgB;AACzC,sCAAwB,aAAa;AAAA,YACvC;AAAA,UACF;AAEA,mBAAS,wBAAwB,cAAc,kBAAkB,WAAW,aAAa;AACvF,gBAAI,mBAAmB,yBAAyB;AAChD,gBAAI,iBAAiB,wBAAwB;AAC7C,oCAAwB,aAAa;AAErC,gBAAI;AACF,uCAAyB,uBAAuB;AAChD,4BAAc,cAAc,kBAAkB,WAAW,WAAW;AAAA,YACtE,UAAE;AACA,uCAAyB,gBAAgB;AACzC,sCAAwB,aAAa;AAAA,YACvC;AAAA,UACF;AAEA,mBAAS,cAAc,cAAc,kBAAkB,iBAAiB,aAAa;AACnF,gBAAI,CAAC,UAAU;AACb;AAAA,YACF;AAEA;AACE,8FAAgF,cAAc,kBAAkB,iBAAiB,WAAW;AAAA,YAC9I;AAAA,UACF;AAEA,mBAAS,gFAAgF,cAAc,kBAAkB,iBAAiB,aAAa;AACrJ,gBAAI,YAAY,0BAA0B,cAAc,kBAAkB,iBAAiB,WAAW;AAEtG,gBAAI,cAAc,MAAM;AACtB,gDAAkC,cAAc,kBAAkB,aAAa,mBAAmB,eAAe;AACjH,qCAAuB,cAAc,WAAW;AAChD;AAAA,YACF;AAEA,gBAAI,uBAAuB,WAAW,cAAc,kBAAkB,iBAAiB,WAAW,GAAG;AACnG,0BAAY,gBAAgB;AAC5B;AAAA,YACF;AAIA,mCAAuB,cAAc,WAAW;AAEhD,gBAAI,mBAAmB,oBAAoB,qCAAqC,YAAY,GAAG;AAC7F,qBAAO,cAAc,MAAM;AACzB,oBAAI,QAAQ,oBAAoB,SAAS;AAEzC,oBAAI,UAAU,MAAM;AAClB,8CAA4B,KAAK;AAAA,gBACnC;AAEA,oBAAI,gBAAgB,0BAA0B,cAAc,kBAAkB,iBAAiB,WAAW;AAE1G,oBAAI,kBAAkB,MAAM;AAC1B,oDAAkC,cAAc,kBAAkB,aAAa,mBAAmB,eAAe;AAAA,gBACnH;AAEA,oBAAI,kBAAkB,WAAW;AAC/B;AAAA,gBACF;AAEA,4BAAY;AAAA,cACd;AAEA,kBAAI,cAAc,MAAM;AACtB,4BAAY,gBAAgB;AAAA,cAC9B;AAEA;AAAA,YACF;AAIA,8CAAkC,cAAc,kBAAkB,aAAa,MAAM,eAAe;AAAA,UACtG;AAEA,cAAI,oBAAoB;AAGxB,mBAAS,0BAA0B,cAAc,kBAAkB,iBAAiB,aAAa;AAE/F,gCAAoB;AACpB,gBAAI,oBAAoB,eAAe,WAAW;AAClD,gBAAI,aAAa,2BAA2B,iBAAiB;AAE7D,gBAAI,eAAe,MAAM;AACvB,kBAAI,iBAAiB,uBAAuB,UAAU;AAEtD,kBAAI,mBAAmB,MAAM;AAE3B,6BAAa;AAAA,cACf,OAAO;AACL,oBAAI,MAAM,eAAe;AAEzB,oBAAI,QAAQ,mBAAmB;AAC7B,sBAAI,WAAW,6BAA6B,cAAc;AAE1D,sBAAI,aAAa,MAAM;AAKrB,2BAAO;AAAA,kBACT;AAKA,+BAAa;AAAA,gBACf,WAAW,QAAQ,UAAU;AAC3B,sBAAIL,QAAO,eAAe;AAE1B,sBAAI,iBAAiBA,KAAI,GAAG;AAG1B,2BAAO,sBAAsB,cAAc;AAAA,kBAC7C;AAEA,+BAAa;AAAA,gBACf,WAAW,mBAAmB,YAAY;AAKxC,+BAAa;AAAA,gBACf;AAAA,cACF;AAAA,YACF;AAEA,gCAAoB;AAEpB,mBAAO;AAAA,UACT;AACA,mBAAS,iBAAiB,cAAc;AACtC,oBAAQ,cAAc;AAAA,cAEpB,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cAGL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cAGL,KAAK;AAAA,cACL,KAAK;AAAA,cAGL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AACH,uBAAO;AAAA,cAET,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cAGL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AACH,uBAAO;AAAA,cAET,KAAK,WACH;AAIE,oBAAI,oBAAoB,wBAAwB;AAEhD,wBAAQ,mBAAmB;AAAA,kBACzB,KAAK;AACH,2BAAO;AAAA,kBAET,KAAK;AACH,2BAAO;AAAA,kBAET,KAAK;AAAA,kBACL,KAAK;AAEH,2BAAO;AAAA,kBAET,KAAK;AACH,2BAAO;AAAA,kBAET;AACE,2BAAO;AAAA,gBACX;AAAA,cACF;AAAA,cAEF;AACE,uBAAO;AAAA,YACX;AAAA,UACF;AAEA,mBAAS,uBAAuB,QAAQ,WAAW,UAAU;AAC3D,mBAAO,iBAAiB,WAAW,UAAU,KAAK;AAClD,mBAAO;AAAA,UACT;AACA,mBAAS,wBAAwB,QAAQ,WAAW,UAAU;AAC5D,mBAAO,iBAAiB,WAAW,UAAU,IAAI;AACjD,mBAAO;AAAA,UACT;AACA,mBAAS,uCAAuC,QAAQ,WAAW,UAAU,SAAS;AACpF,mBAAO,iBAAiB,WAAW,UAAU;AAAA,cAC3C,SAAS;AAAA,cACT;AAAA,YACF,CAAC;AACD,mBAAO;AAAA,UACT;AACA,mBAAS,sCAAsC,QAAQ,WAAW,UAAU,SAAS;AACnF,mBAAO,iBAAiB,WAAW,UAAU;AAAA,cAC3C;AAAA,YACF,CAAC;AACD,mBAAO;AAAA,UACT;AAaA,cAAI,OAAO;AACX,cAAI,YAAY;AAChB,cAAI,eAAe;AACnB,mBAAS,WAAW,mBAAmB;AACrC,mBAAO;AACP,wBAAYM,SAAQ;AACpB,mBAAO;AAAA,UACT;AACA,mBAAS,QAAQ;AACf,mBAAO;AACP,wBAAY;AACZ,2BAAe;AAAA,UACjB;AACA,mBAASC,WAAU;AACjB,gBAAI,cAAc;AAChB,qBAAO;AAAA,YACT;AAEA,gBAAI;AACJ,gBAAI,aAAa;AACjB,gBAAI,cAAc,WAAW;AAC7B,gBAAI;AACJ,gBAAI,WAAWD,SAAQ;AACvB,gBAAI,YAAY,SAAS;AAEzB,iBAAK,QAAQ,GAAG,QAAQ,aAAa,SAAS;AAC5C,kBAAI,WAAW,KAAK,MAAM,SAAS,KAAK,GAAG;AACzC;AAAA,cACF;AAAA,YACF;AAEA,gBAAI,SAAS,cAAc;AAE3B,iBAAK,MAAM,GAAG,OAAO,QAAQ,OAAO;AAClC,kBAAI,WAAW,cAAc,GAAG,MAAM,SAAS,YAAY,GAAG,GAAG;AAC/D;AAAA,cACF;AAAA,YACF;AAEA,gBAAI,YAAY,MAAM,IAAI,IAAI,MAAM;AACpC,2BAAe,SAAS,MAAM,OAAO,SAAS;AAC9C,mBAAO;AAAA,UACT;AACA,mBAASA,WAAU;AACjB,gBAAI,WAAW,MAAM;AACnB,qBAAO,KAAK;AAAA,YACd;AAEA,mBAAO,KAAK;AAAA,UACd;AAYA,mBAAS,iBAAiB,aAAa;AACrC,gBAAI;AACJ,gBAAI,UAAU,YAAY;AAE1B,gBAAI,cAAc,aAAa;AAC7B,yBAAW,YAAY;AAEvB,kBAAI,aAAa,KAAK,YAAY,IAAI;AACpC,2BAAW;AAAA,cACb;AAAA,YACF,OAAO;AAEL,yBAAW;AAAA,YACb;AAIA,gBAAI,aAAa,IAAI;AACnB,yBAAW;AAAA,YACb;AAIA,gBAAI,YAAY,MAAM,aAAa,IAAI;AACrC,qBAAO;AAAA,YACT;AAEA,mBAAO;AAAA,UACT;AAEA,mBAAS,0BAA0B;AACjC,mBAAO;AAAA,UACT;AAEA,mBAAS,2BAA2B;AAClC,mBAAO;AAAA,UACT;AAIA,mBAAS,qBAAqB,WAAW;AAcvC,qBAAS,mBAAmB,WAAW,gBAAgB,YAAY,aAAa,mBAAmB;AACjG,mBAAK,aAAa;AAClB,mBAAK,cAAc;AACnB,mBAAK,OAAO;AACZ,mBAAK,cAAc;AACnB,mBAAK,SAAS;AACd,mBAAK,gBAAgB;AAErB,uBAAS,aAAa,WAAW;AAC/B,oBAAI,CAAC,UAAU,eAAe,SAAS,GAAG;AACxC;AAAA,gBACF;AAEA,oBAAIE,aAAY,UAAU,SAAS;AAEnC,oBAAIA,YAAW;AACb,uBAAK,SAAS,IAAIA,WAAU,WAAW;AAAA,gBACzC,OAAO;AACL,uBAAK,SAAS,IAAI,YAAY,SAAS;AAAA,gBACzC;AAAA,cACF;AAEA,kBAAI,mBAAmB,YAAY,oBAAoB,OAAO,YAAY,mBAAmB,YAAY,gBAAgB;AAEzH,kBAAI,kBAAkB;AACpB,qBAAK,qBAAqB;AAAA,cAC5B,OAAO;AACL,qBAAK,qBAAqB;AAAA,cAC5B;AAEA,mBAAK,uBAAuB;AAC5B,qBAAO;AAAA,YACT;AAEA,YAAAvC,QAAO,mBAAmB,WAAW;AAAA,cACnC,gBAAgB,WAAY;AAC1B,qBAAK,mBAAmB;AACxB,oBAAI,QAAQ,KAAK;AAEjB,oBAAI,CAAC,OAAO;AACV;AAAA,gBACF;AAEA,oBAAI,MAAM,gBAAgB;AACxB,wBAAM,eAAe;AAAA,gBACvB,WAAW,OAAO,MAAM,gBAAgB,WAAW;AACjD,wBAAM,cAAc;AAAA,gBACtB;AAEA,qBAAK,qBAAqB;AAAA,cAC5B;AAAA,cACA,iBAAiB,WAAY;AAC3B,oBAAI,QAAQ,KAAK;AAEjB,oBAAI,CAAC,OAAO;AACV;AAAA,gBACF;AAEA,oBAAI,MAAM,iBAAiB;AACzB,wBAAM,gBAAgB;AAAA,gBACxB,WAAW,OAAO,MAAM,iBAAiB,WAAW;AAMlD,wBAAM,eAAe;AAAA,gBACvB;AAEA,qBAAK,uBAAuB;AAAA,cAC9B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAOA,SAAS,WAAY;AAAA,cACrB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAOA,cAAc;AAAA,YAChB,CAAC;AACD,mBAAO;AAAA,UACT;AAOA,cAAI,iBAAiB;AAAA,YACnB,YAAY;AAAA,YACZ,SAAS;AAAA,YACT,YAAY;AAAA,YACZ,WAAW,SAAU,OAAO;AAC1B,qBAAO,MAAM,aAAa,KAAK,IAAI;AAAA,YACrC;AAAA,YACA,kBAAkB;AAAA,YAClB,WAAW;AAAA,UACb;AACA,cAAI,iBAAiB,qBAAqB,cAAc;AAExD,cAAI,mBAAmBA,QAAO,CAAC,GAAG,gBAAgB;AAAA,YAChD,MAAM;AAAA,YACN,QAAQ;AAAA,UACV,CAAC;AAED,cAAI,mBAAmB,qBAAqB,gBAAgB;AAC5D,cAAI;AACJ,cAAI;AACJ,cAAI;AAEJ,mBAAS,iCAAiC,OAAO;AAC/C,gBAAI,UAAU,gBAAgB;AAC5B,kBAAI,kBAAkB,MAAM,SAAS,aAAa;AAChD,gCAAgB,MAAM,UAAU,eAAe;AAC/C,gCAAgB,MAAM,UAAU,eAAe;AAAA,cACjD,OAAO;AACL,gCAAgB;AAChB,gCAAgB;AAAA,cAClB;AAEA,+BAAiB;AAAA,YACnB;AAAA,UACF;AAOA,cAAI,sBAAsBA,QAAO,CAAC,GAAG,kBAAkB;AAAA,YACrD,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,SAAS;AAAA,YACT,OAAO;AAAA,YACP,OAAO;AAAA,YACP,SAAS;AAAA,YACT,UAAU;AAAA,YACV,QAAQ;AAAA,YACR,SAAS;AAAA,YACT,kBAAkB;AAAA,YAClB,QAAQ;AAAA,YACR,SAAS;AAAA,YACT,eAAe,SAAU,OAAO;AAC9B,kBAAI,MAAM,kBAAkB;AAAW,uBAAO,MAAM,gBAAgB,MAAM,aAAa,MAAM,YAAY,MAAM;AAC/G,qBAAO,MAAM;AAAA,YACf;AAAA,YACA,WAAW,SAAU,OAAO;AAC1B,kBAAI,eAAe,OAAO;AACxB,uBAAO,MAAM;AAAA,cACf;AAEA,+CAAiC,KAAK;AACtC,qBAAO;AAAA,YACT;AAAA,YACA,WAAW,SAAU,OAAO;AAC1B,kBAAI,eAAe,OAAO;AACxB,uBAAO,MAAM;AAAA,cACf;AAKA,qBAAO;AAAA,YACT;AAAA,UACF,CAAC;AAED,cAAI,sBAAsB,qBAAqB,mBAAmB;AAMlE,cAAI,qBAAqBA,QAAO,CAAC,GAAG,qBAAqB;AAAA,YACvD,cAAc;AAAA,UAChB,CAAC;AAED,cAAI,qBAAqB,qBAAqB,kBAAkB;AAMhE,cAAI,sBAAsBA,QAAO,CAAC,GAAG,kBAAkB;AAAA,YACrD,eAAe;AAAA,UACjB,CAAC;AAED,cAAI,sBAAsB,qBAAqB,mBAAmB;AAOlE,cAAI,0BAA0BA,QAAO,CAAC,GAAG,gBAAgB;AAAA,YACvD,eAAe;AAAA,YACf,aAAa;AAAA,YACb,eAAe;AAAA,UACjB,CAAC;AAED,cAAI,0BAA0B,qBAAqB,uBAAuB;AAM1E,cAAI,0BAA0BA,QAAO,CAAC,GAAG,gBAAgB;AAAA,YACvD,eAAe,SAAU,OAAO;AAC9B,qBAAO,mBAAmB,QAAQ,MAAM,gBAAgB,OAAO;AAAA,YACjE;AAAA,UACF,CAAC;AAED,cAAI,0BAA0B,qBAAqB,uBAAuB;AAM1E,cAAI,4BAA4BA,QAAO,CAAC,GAAG,gBAAgB;AAAA,YACzD,MAAM;AAAA,UACR,CAAC;AAED,cAAI,4BAA4B,qBAAqB,yBAAyB;AAQ9E,cAAI,sBAAsB;AAM1B,cAAI,eAAe;AAAA,YACjB,KAAK;AAAA,YACL,UAAU;AAAA,YACV,MAAM;AAAA,YACN,IAAI;AAAA,YACJ,OAAO;AAAA,YACP,MAAM;AAAA,YACN,KAAK;AAAA,YACL,KAAK;AAAA,YACL,MAAM;AAAA,YACN,MAAM;AAAA,YACN,QAAQ;AAAA,YACR,iBAAiB;AAAA,UACnB;AAOA,cAAI,iBAAiB;AAAA,YACnB,KAAK;AAAA,YACL,KAAK;AAAA,YACL,MAAM;AAAA,YACN,MAAM;AAAA,YACN,MAAM;AAAA,YACN,MAAM;AAAA,YACN,MAAM;AAAA,YACN,MAAM;AAAA,YACN,MAAM;AAAA,YACN,MAAM;AAAA,YACN,MAAM;AAAA,YACN,MAAM;AAAA,YACN,MAAM;AAAA,YACN,MAAM;AAAA,YACN,MAAM;AAAA,YACN,MAAM;AAAA,YACN,MAAM;AAAA,YACN,MAAM;AAAA,YACN,MAAM;AAAA,YACN,MAAM;AAAA,YACN,MAAM;AAAA,YACN,OAAO;AAAA,YACP,OAAO;AAAA,YACP,OAAO;AAAA,YACP,OAAO;AAAA,YACP,OAAO;AAAA,YACP,OAAO;AAAA,YACP,OAAO;AAAA,YACP,OAAO;AAAA,YACP,OAAO;AAAA,YACP,OAAO;AAAA,YACP,OAAO;AAAA,YACP,OAAO;AAAA,YACP,OAAO;AAAA,YACP,OAAO;AAAA,YACP,OAAO;AAAA,UACT;AAMA,mBAASwC,aAAY,aAAa;AAChC,gBAAI,YAAY,KAAK;AAKnB,kBAAI,MAAM,aAAa,YAAY,GAAG,KAAK,YAAY;AAEvD,kBAAI,QAAQ,gBAAgB;AAC1B,uBAAO;AAAA,cACT;AAAA,YACF;AAGA,gBAAI,YAAY,SAAS,YAAY;AACnC,kBAAI,WAAW,iBAAiB,WAAW;AAG3C,qBAAO,aAAa,KAAK,UAAU,OAAO,aAAa,QAAQ;AAAA,YACjE;AAEA,gBAAI,YAAY,SAAS,aAAa,YAAY,SAAS,SAAS;AAGlE,qBAAO,eAAe,YAAY,OAAO,KAAK;AAAA,YAChD;AAEA,mBAAO;AAAA,UACT;AAOA,cAAI,oBAAoB;AAAA,YACtB,KAAK;AAAA,YACL,SAAS;AAAA,YACT,MAAM;AAAA,YACN,OAAO;AAAA,UACT;AAIA,mBAAS,oBAAoB,QAAQ;AACnC,gBAAI,iBAAiB;AACrB,gBAAI,cAAc,eAAe;AAEjC,gBAAI,YAAY,kBAAkB;AAChC,qBAAO,YAAY,iBAAiB,MAAM;AAAA,YAC5C;AAEA,gBAAI,UAAU,kBAAkB,MAAM;AACtC,mBAAO,UAAU,CAAC,CAAC,YAAY,OAAO,IAAI;AAAA,UAC5C;AAEA,mBAAS,sBAAsB,aAAa;AAC1C,mBAAO;AAAA,UACT;AAOA,cAAI,yBAAyBxC,QAAO,CAAC,GAAG,kBAAkB;AAAA,YACxD,KAAKwC;AAAA,YACL,MAAM;AAAA,YACN,UAAU;AAAA,YACV,SAAS;AAAA,YACT,UAAU;AAAA,YACV,QAAQ;AAAA,YACR,SAAS;AAAA,YACT,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,kBAAkB;AAAA;AAAA,YAElB,UAAU,SAAU,OAAO;AAKzB,kBAAI,MAAM,SAAS,YAAY;AAC7B,uBAAO,iBAAiB,KAAK;AAAA,cAC/B;AAEA,qBAAO;AAAA,YACT;AAAA,YACA,SAAS,SAAU,OAAO;AAOxB,kBAAI,MAAM,SAAS,aAAa,MAAM,SAAS,SAAS;AACtD,uBAAO,MAAM;AAAA,cACf;AAEA,qBAAO;AAAA,YACT;AAAA,YACA,OAAO,SAAU,OAAO;AAGtB,kBAAI,MAAM,SAAS,YAAY;AAC7B,uBAAO,iBAAiB,KAAK;AAAA,cAC/B;AAEA,kBAAI,MAAM,SAAS,aAAa,MAAM,SAAS,SAAS;AACtD,uBAAO,MAAM;AAAA,cACf;AAEA,qBAAO;AAAA,YACT;AAAA,UACF,CAAC;AAED,cAAI,yBAAyB,qBAAqB,sBAAsB;AAMxE,cAAI,wBAAwBxC,QAAO,CAAC,GAAG,qBAAqB;AAAA,YAC1D,WAAW;AAAA,YACX,OAAO;AAAA,YACP,QAAQ;AAAA,YACR,UAAU;AAAA,YACV,oBAAoB;AAAA,YACpB,OAAO;AAAA,YACP,OAAO;AAAA,YACP,OAAO;AAAA,YACP,aAAa;AAAA,YACb,WAAW;AAAA,UACb,CAAC;AAED,cAAI,wBAAwB,qBAAqB,qBAAqB;AAMtE,cAAI,sBAAsBA,QAAO,CAAC,GAAG,kBAAkB;AAAA,YACrD,SAAS;AAAA,YACT,eAAe;AAAA,YACf,gBAAgB;AAAA,YAChB,QAAQ;AAAA,YACR,SAAS;AAAA,YACT,SAAS;AAAA,YACT,UAAU;AAAA,YACV,kBAAkB;AAAA,UACpB,CAAC;AAED,cAAI,sBAAsB,qBAAqB,mBAAmB;AAOlE,cAAI,2BAA2BA,QAAO,CAAC,GAAG,gBAAgB;AAAA,YACxD,cAAc;AAAA,YACd,aAAa;AAAA,YACb,eAAe;AAAA,UACjB,CAAC;AAED,cAAI,2BAA2B,qBAAqB,wBAAwB;AAM5E,cAAI,sBAAsBA,QAAO,CAAC,GAAG,qBAAqB;AAAA,YACxD,QAAQ,SAAU,OAAO;AACvB,qBAAO,YAAY,QAAQ,MAAM;AAAA;AAAA,gBACjC,iBAAiB,QAAQ,CAAC,MAAM,cAAc;AAAA;AAAA,YAChD;AAAA,YACA,QAAQ,SAAU,OAAO;AACvB,qBAAO,YAAY,QAAQ,MAAM;AAAA;AAAA,gBACjC,iBAAiB,QAAQ,CAAC,MAAM;AAAA;AAAA,kBAChC,gBAAgB,QAAQ,CAAC,MAAM,aAAa;AAAA;AAAA;AAAA,YAC9C;AAAA,YACA,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA,YAKR,WAAW;AAAA,UACb,CAAC;AAED,cAAI,sBAAsB,qBAAqB,mBAAmB;AAElE,cAAI,eAAe,CAAC,GAAG,IAAI,IAAI,EAAE;AAEjC,cAAI,gBAAgB;AACpB,cAAI,yBAAyBT,cAAa,sBAAsB;AAChE,cAAI,eAAe;AAEnB,cAAIA,cAAa,kBAAkB,UAAU;AAC3C,2BAAe,SAAS;AAAA,UAC1B;AAKA,cAAI,uBAAuBA,cAAa,eAAe,UAAU,CAAC;AAIlE,cAAI,6BAA6BA,eAAc,CAAC,0BAA0B,gBAAgB,eAAe,KAAK,gBAAgB;AAC9H,cAAI,gBAAgB;AACpB,cAAI,gBAAgB,OAAO,aAAa,aAAa;AAErD,mBAAS,iBAAiB;AACxB,kCAAsB,iBAAiB,CAAC,kBAAkB,YAAY,aAAa,OAAO,CAAC;AAC3F,kCAAsB,oBAAoB,CAAC,kBAAkB,YAAY,WAAW,YAAY,SAAS,WAAW,CAAC;AACrH,kCAAsB,sBAAsB,CAAC,oBAAoB,YAAY,WAAW,YAAY,SAAS,WAAW,CAAC;AACzH,kCAAsB,uBAAuB,CAAC,qBAAqB,YAAY,WAAW,YAAY,SAAS,WAAW,CAAC;AAAA,UAC7H;AAGA,cAAI,mBAAmB;AAOvB,mBAAS,kBAAkB,aAAa;AACtC,oBAAQ,YAAY,WAAW,YAAY,UAAU,YAAY;AAAA,YACjE,EAAE,YAAY,WAAW,YAAY;AAAA,UACvC;AAMA,mBAAS,wBAAwB,cAAc;AAC7C,oBAAQ,cAAc;AAAA,cACpB,KAAK;AACH,uBAAO;AAAA,cAET,KAAK;AACH,uBAAO;AAAA,cAET,KAAK;AACH,uBAAO;AAAA,YACX;AAAA,UACF;AAOA,mBAAS,2BAA2B,cAAc,aAAa;AAC7D,mBAAO,iBAAiB,aAAa,YAAY,YAAY;AAAA,UAC/D;AAMA,mBAAS,yBAAyB,cAAc,aAAa;AAC3D,oBAAQ,cAAc;AAAA,cACpB,KAAK;AAEH,uBAAO,aAAa,QAAQ,YAAY,OAAO,MAAM;AAAA,cAEvD,KAAK;AAGH,uBAAO,YAAY,YAAY;AAAA,cAEjC,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAEH,uBAAO;AAAA,cAET;AACE,uBAAO;AAAA,YACX;AAAA,UACF;AAYA,mBAAS,uBAAuB,aAAa;AAC3C,gBAAI,SAAS,YAAY;AAEzB,gBAAI,OAAO,WAAW,YAAY,UAAU,QAAQ;AAClD,qBAAO,OAAO;AAAA,YAChB;AAEA,mBAAO;AAAA,UACT;AAaA,mBAAS,iBAAiB,aAAa;AACrC,mBAAO,YAAY,WAAW;AAAA,UAChC;AAGA,cAAI,cAAc;AAKlB,mBAAS,wBAAwB,eAAe,cAAc,YAAY,aAAa,mBAAmB;AACxG,gBAAI;AACJ,gBAAI;AAEJ,gBAAI,wBAAwB;AAC1B,0BAAY,wBAAwB,YAAY;AAAA,YAClD,WAAW,CAAC,aAAa;AACvB,kBAAI,2BAA2B,cAAc,WAAW,GAAG;AACzD,4BAAY;AAAA,cACd;AAAA,YACF,WAAW,yBAAyB,cAAc,WAAW,GAAG;AAC9D,0BAAY;AAAA,YACd;AAEA,gBAAI,CAAC,WAAW;AACd,qBAAO;AAAA,YACT;AAEA,gBAAI,8BAA8B,CAAC,iBAAiB,WAAW,GAAG;AAGhE,kBAAI,CAAC,eAAe,cAAc,sBAAsB;AACtD,8BAAc,WAAW,iBAAiB;AAAA,cAC5C,WAAW,cAAc,oBAAoB;AAC3C,oBAAI,aAAa;AACf,iCAAe+C,SAAQ;AAAA,gBACzB;AAAA,cACF;AAAA,YACF;AAEA,gBAAI,YAAY,4BAA4B,YAAY,SAAS;AAEjE,gBAAI,UAAU,SAAS,GAAG;AACxB,kBAAI,QAAQ,IAAI,0BAA0B,WAAW,cAAc,MAAM,aAAa,iBAAiB;AACvG,4BAAc,KAAK;AAAA,gBACjB;AAAA,gBACA;AAAA,cACF,CAAC;AAED,kBAAI,cAAc;AAGhB,sBAAM,OAAO;AAAA,cACf,OAAO;AACL,oBAAI,aAAa,uBAAuB,WAAW;AAEnD,oBAAI,eAAe,MAAM;AACvB,wBAAM,OAAO;AAAA,gBACf;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,0BAA0B,cAAc,aAAa;AAC5D,oBAAQ,cAAc;AAAA,cACpB,KAAK;AACH,uBAAO,uBAAuB,WAAW;AAAA,cAE3C,KAAK;AAeH,oBAAI,QAAQ,YAAY;AAExB,oBAAI,UAAU,eAAe;AAC3B,yBAAO;AAAA,gBACT;AAEA,mCAAmB;AACnB,uBAAO;AAAA,cAET,KAAK;AAEH,oBAAI,QAAQ,YAAY;AAIxB,oBAAI,UAAU,iBAAiB,kBAAkB;AAC/C,yBAAO;AAAA,gBACT;AAEA,uBAAO;AAAA,cAET;AAEE,uBAAO;AAAA,YACX;AAAA,UACF;AAOA,mBAAS,4BAA4B,cAAc,aAAa;AAK9D,gBAAI,aAAa;AACf,kBAAI,iBAAiB,oBAAoB,CAAC,0BAA0B,yBAAyB,cAAc,WAAW,GAAG;AACvH,oBAAI,QAAQA,SAAQ;AACpB,sBAAM;AACN,8BAAc;AACd,uBAAO;AAAA,cACT;AAEA,qBAAO;AAAA,YACT;AAEA,oBAAQ,cAAc;AAAA,cACpB,KAAK;AAGH,uBAAO;AAAA,cAET,KAAK;AAiBH,oBAAI,CAAC,kBAAkB,WAAW,GAAG;AAOnC,sBAAI,YAAY,QAAQ,YAAY,KAAK,SAAS,GAAG;AACnD,2BAAO,YAAY;AAAA,kBACrB,WAAW,YAAY,OAAO;AAC5B,2BAAO,OAAO,aAAa,YAAY,KAAK;AAAA,kBAC9C;AAAA,gBACF;AAEA,uBAAO;AAAA,cAET,KAAK;AACH,uBAAO,8BAA8B,CAAC,iBAAiB,WAAW,IAAI,OAAO,YAAY;AAAA,cAE3F;AACE,uBAAO;AAAA,YACX;AAAA,UACF;AASA,mBAAS,wBAAwB,eAAe,cAAc,YAAY,aAAa,mBAAmB;AACxG,gBAAI;AAEJ,gBAAI,sBAAsB;AACxB,sBAAQ,0BAA0B,cAAc,WAAW;AAAA,YAC7D,OAAO;AACL,sBAAQ,4BAA4B,cAAc,WAAW;AAAA,YAC/D;AAIA,gBAAI,CAAC,OAAO;AACV,qBAAO;AAAA,YACT;AAEA,gBAAI,YAAY,4BAA4B,YAAY,eAAe;AAEvE,gBAAI,UAAU,SAAS,GAAG;AACxB,kBAAI,QAAQ,IAAI,oBAAoB,iBAAiB,eAAe,MAAM,aAAa,iBAAiB;AACxG,4BAAc,KAAK;AAAA,gBACjB;AAAA,gBACA;AAAA,cACF,CAAC;AACD,oBAAM,OAAO;AAAA,YACf;AAAA,UACF;AAqBA,mBAAS,cAAc,eAAe,cAAc,YAAY,aAAa,mBAAmB,kBAAkB,iBAAiB;AACjI,oCAAwB,eAAe,cAAc,YAAY,aAAa,iBAAiB;AAC/F,oCAAwB,eAAe,cAAc,YAAY,aAAa,iBAAiB;AAAA,UACjG;AAKA,cAAI,sBAAsB;AAAA,YACxB,OAAO;AAAA,YACP,MAAM;AAAA,YACN,UAAU;AAAA,YACV,kBAAkB;AAAA,YAClB,OAAO;AAAA,YACP,OAAO;AAAA,YACP,QAAQ;AAAA,YACR,UAAU;AAAA,YACV,OAAO;AAAA,YACP,QAAQ;AAAA,YACR,KAAK;AAAA,YACL,MAAM;AAAA,YACN,MAAM;AAAA,YACN,KAAK;AAAA,YACL,MAAM;AAAA,UACR;AAEA,mBAAS,mBAAmB,MAAM;AAChC,gBAAI,WAAW,QAAQ,KAAK,YAAY,KAAK,SAAS,YAAY;AAElE,gBAAI,aAAa,SAAS;AACxB,qBAAO,CAAC,CAAC,oBAAoB,KAAK,IAAI;AAAA,YACxC;AAEA,gBAAI,aAAa,YAAY;AAC3B,qBAAO;AAAA,YACT;AAEA,mBAAO;AAAA,UACT;AAgBA,mBAAS,iBAAiB,iBAAiB;AACzC,gBAAI,CAAC/C,YAAW;AACd,qBAAO;AAAA,YACT;AAEA,gBAAI,YAAY,OAAO;AACvB,gBAAI,cAAe,aAAa;AAEhC,gBAAI,CAAC,aAAa;AAChB,kBAAI,UAAU,SAAS,cAAc,KAAK;AAC1C,sBAAQ,aAAa,WAAW,SAAS;AACzC,4BAAc,OAAO,QAAQ,SAAS,MAAM;AAAA,YAC9C;AAEA,mBAAO;AAAA,UACT;AAEA,mBAAS,mBAAmB;AAC1B,kCAAsB,YAAY,CAAC,UAAU,SAAS,WAAW,YAAY,SAAS,WAAW,SAAS,iBAAiB,CAAC;AAAA,UAC9H;AAEA,mBAAS,+BAA+B,eAAe,MAAM,aAAa,QAAQ;AAEhF,gCAAoB,MAAM;AAC1B,gBAAI,YAAY,4BAA4B,MAAM,UAAU;AAE5D,gBAAI,UAAU,SAAS,GAAG;AACxB,kBAAI,QAAQ,IAAI,eAAe,YAAY,UAAU,MAAM,aAAa,MAAM;AAC9E,4BAAc,KAAK;AAAA,gBACjB;AAAA,gBACA;AAAA,cACF,CAAC;AAAA,YACH;AAAA,UACF;AAMA,cAAIkD,iBAAgB;AACpB,cAAI,oBAAoB;AAKxB,mBAAS,qBAAqB,MAAM;AAClC,gBAAI,WAAW,KAAK,YAAY,KAAK,SAAS,YAAY;AAC1D,mBAAO,aAAa,YAAY,aAAa,WAAW,KAAK,SAAS;AAAA,UACxE;AAEA,mBAAS,0BAA0B,aAAa;AAC9C,gBAAI,gBAAgB,CAAC;AACrB,2CAA+B,eAAe,mBAAmB,aAAa,eAAe,WAAW,CAAC;AAYzG,2BAAe,iBAAiB,aAAa;AAAA,UAC/C;AAEA,mBAAS,gBAAgB,eAAe;AACtC,iCAAqB,eAAe,CAAC;AAAA,UACvC;AAEA,mBAAS,sBAAsB,YAAY;AACzC,gBAAI,aAAa,oBAAoB,UAAU;AAE/C,gBAAI,qBAAqB,UAAU,GAAG;AACpC,qBAAO;AAAA,YACT;AAAA,UACF;AAEA,mBAAS,4BAA4B,cAAc,YAAY;AAC7D,gBAAI,iBAAiB,UAAU;AAC7B,qBAAO;AAAA,YACT;AAAA,UACF;AAMA,cAAI,wBAAwB;AAE5B,cAAIlD,YAAW;AAGb,oCAAwB,iBAAiB,OAAO,MAAM,CAAC,SAAS,gBAAgB,SAAS,eAAe;AAAA,UAC1G;AAQA,mBAAS,4BAA4B,QAAQ,YAAY;AACvD,YAAAkD,iBAAgB;AAChB,gCAAoB;AACpB,YAAAA,eAAc,YAAY,oBAAoB,oBAAoB;AAAA,UACpE;AAOA,mBAAS,6BAA6B;AACpC,gBAAI,CAACA,gBAAe;AAClB;AAAA,YACF;AAEA,YAAAA,eAAc,YAAY,oBAAoB,oBAAoB;AAClE,YAAAA,iBAAgB;AAChB,gCAAoB;AAAA,UACtB;AAOA,mBAAS,qBAAqB,aAAa;AACzC,gBAAI,YAAY,iBAAiB,SAAS;AACxC;AAAA,YACF;AAEA,gBAAI,sBAAsB,iBAAiB,GAAG;AAC5C,wCAA0B,WAAW;AAAA,YACvC;AAAA,UACF;AAEA,mBAAS,kCAAkC,cAAc,QAAQ,YAAY;AAC3E,gBAAI,iBAAiB,WAAW;AAW9B,yCAA2B;AAC3B,0CAA4B,QAAQ,UAAU;AAAA,YAChD,WAAW,iBAAiB,YAAY;AACtC,yCAA2B;AAAA,YAC7B;AAAA,UACF;AAGA,mBAAS,mCAAmC,cAAc,YAAY;AACpE,gBAAI,iBAAiB,qBAAqB,iBAAiB,WAAW,iBAAiB,WAAW;AAWhG,qBAAO,sBAAsB,iBAAiB;AAAA,YAChD;AAAA,UACF;AAMA,mBAAS,oBAAoB,MAAM;AAIjC,gBAAI,WAAW,KAAK;AACpB,mBAAO,YAAY,SAAS,YAAY,MAAM,YAAY,KAAK,SAAS,cAAc,KAAK,SAAS;AAAA,UACtG;AAEA,mBAAS,2BAA2B,cAAc,YAAY;AAC5D,gBAAI,iBAAiB,SAAS;AAC5B,qBAAO,sBAAsB,UAAU;AAAA,YACzC;AAAA,UACF;AAEA,mBAAS,mCAAmC,cAAc,YAAY;AACpE,gBAAI,iBAAiB,WAAW,iBAAiB,UAAU;AACzD,qBAAO,sBAAsB,UAAU;AAAA,YACzC;AAAA,UACF;AAEA,mBAAS,0BAA0B1C,OAAM;AACvC,gBAAI2C,SAAQ3C,MAAK;AAEjB,gBAAI,CAAC2C,UAAS,CAACA,OAAM,cAAc3C,MAAK,SAAS,UAAU;AACzD;AAAA,YACF;AAEA;AAEE,8BAAgBA,OAAM,UAAUA,MAAK,KAAK;AAAA,YAC5C;AAAA,UACF;AAaA,mBAAS,gBAAgB,eAAe,cAAc,YAAY,aAAa,mBAAmB,kBAAkB,iBAAiB;AACnI,gBAAI,aAAa,aAAa,oBAAoB,UAAU,IAAI;AAChE,gBAAI,mBAAmB;AAEvB,gBAAI,qBAAqB,UAAU,GAAG;AACpC,kCAAoB;AAAA,YACtB,WAAW,mBAAmB,UAAU,GAAG;AACzC,kBAAI,uBAAuB;AACzB,oCAAoB;AAAA,cACtB,OAAO;AACL,oCAAoB;AACpB,kCAAkB;AAAA,cACpB;AAAA,YACF,WAAW,oBAAoB,UAAU,GAAG;AAC1C,kCAAoB;AAAA,YACtB;AAEA,gBAAI,mBAAmB;AACrB,kBAAI,OAAO,kBAAkB,cAAc,UAAU;AAErD,kBAAI,MAAM;AACR,+CAA+B,eAAe,MAAM,aAAa,iBAAiB;AAClF;AAAA,cACF;AAAA,YACF;AAEA,gBAAI,iBAAiB;AACnB,8BAAgB,cAAc,YAAY,UAAU;AAAA,YACtD;AAGA,gBAAI,iBAAiB,YAAY;AAC/B,wCAA0B,UAAU;AAAA,YACtC;AAAA,UACF;AAEA,mBAAS,mBAAmB;AAC1B,gCAAoB,gBAAgB,CAAC,YAAY,WAAW,CAAC;AAC7D,gCAAoB,gBAAgB,CAAC,YAAY,WAAW,CAAC;AAC7D,gCAAoB,kBAAkB,CAAC,cAAc,aAAa,CAAC;AACnE,gCAAoB,kBAAkB,CAAC,cAAc,aAAa,CAAC;AAAA,UACrE;AAUA,mBAAS,gBAAgB,eAAe,cAAc,YAAY,aAAa,mBAAmB,kBAAkB,iBAAiB;AACnI,gBAAI,cAAc,iBAAiB,eAAe,iBAAiB;AACnE,gBAAI,aAAa,iBAAiB,cAAc,iBAAiB;AAEjE,gBAAI,eAAe,CAAC,iBAAiB,WAAW,GAAG;AAKjD,kBAAI,UAAU,YAAY,iBAAiB,YAAY;AAEvD,kBAAI,SAAS;AAGX,oBAAI,2BAA2B,OAAO,KAAK,wBAAwB,OAAO,GAAG;AAC3E;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAEA,gBAAI,CAAC,cAAc,CAAC,aAAa;AAE/B;AAAA,YACF;AAEA,gBAAI;AAEJ,gBAAI,kBAAkB,WAAW,mBAAmB;AAElD,oBAAM;AAAA,YACR,OAAO;AAEL,kBAAI,MAAM,kBAAkB;AAE5B,kBAAI,KAAK;AACP,sBAAM,IAAI,eAAe,IAAI;AAAA,cAC/B,OAAO;AACL,sBAAM;AAAA,cACR;AAAA,YACF;AAEA,gBAAI4C;AACJ,gBAAI;AAEJ,gBAAI,YAAY;AACd,kBAAI,WAAW,YAAY,iBAAiB,YAAY;AAExD,cAAAA,QAAO;AACP,mBAAK,WAAW,2BAA2B,QAAQ,IAAI;AAEvD,kBAAI,OAAO,MAAM;AACf,oBAAI,iBAAiB,uBAAuB,EAAE;AAE9C,oBAAI,OAAO,kBAAkB,GAAG,QAAQ,iBAAiB,GAAG,QAAQ,UAAU;AAC5E,uBAAK;AAAA,gBACP;AAAA,cACF;AAAA,YACF,OAAO;AAEL,cAAAA,QAAO;AACP,mBAAK;AAAA,YACP;AAEA,gBAAIA,UAAS,IAAI;AAEf;AAAA,YACF;AAEA,gBAAI,qBAAqB;AACzB,gBAAI,iBAAiB;AACrB,gBAAI,iBAAiB;AACrB,gBAAI,kBAAkB;AAEtB,gBAAI,iBAAiB,gBAAgB,iBAAiB,eAAe;AACnE,mCAAqB;AACrB,+BAAiB;AACjB,+BAAiB;AACjB,gCAAkB;AAAA,YACpB;AAEA,gBAAI,WAAWA,SAAQ,OAAO,MAAM,oBAAoBA,KAAI;AAC5D,gBAAI,SAAS,MAAM,OAAO,MAAM,oBAAoB,EAAE;AACtD,gBAAI,QAAQ,IAAI,mBAAmB,gBAAgB,kBAAkB,SAASA,OAAM,aAAa,iBAAiB;AAClH,kBAAM,SAAS;AACf,kBAAM,gBAAgB;AACtB,gBAAI,QAAQ;AAGZ,gBAAI,mBAAmB,2BAA2B,iBAAiB;AAEnE,gBAAI,qBAAqB,YAAY;AACnC,kBAAI,aAAa,IAAI,mBAAmB,gBAAgB,kBAAkB,SAAS,IAAI,aAAa,iBAAiB;AACrH,yBAAW,SAAS;AACpB,yBAAW,gBAAgB;AAC3B,sBAAQ;AAAA,YACV;AAEA,kDAAsC,eAAe,OAAO,OAAOA,OAAM,EAAE;AAAA,UAC7E;AAMA,mBAAS,GAAG1C,IAAG2C,IAAG;AAChB,mBAAO3C,OAAM2C,OAAM3C,OAAM,KAAK,IAAIA,OAAM,IAAI2C,OAAM3C,OAAMA,MAAK2C,OAAMA;AAAA,UAErE;AAEA,cAAI,WAAW,OAAO,OAAO,OAAO,aAAa,OAAO,KAAK;AAQ7D,mBAAS,aAAa,MAAM,MAAM;AAChC,gBAAI,SAAS,MAAM,IAAI,GAAG;AACxB,qBAAO;AAAA,YACT;AAEA,gBAAI,OAAO,SAAS,YAAY,SAAS,QAAQ,OAAO,SAAS,YAAY,SAAS,MAAM;AAC1F,qBAAO;AAAA,YACT;AAEA,gBAAI,QAAQ,OAAO,KAAK,IAAI;AAC5B,gBAAI,QAAQ,OAAO,KAAK,IAAI;AAE5B,gBAAI,MAAM,WAAW,MAAM,QAAQ;AACjC,qBAAO;AAAA,YACT;AAGA,qBAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,kBAAI,aAAa,MAAM,CAAC;AAExB,kBAAI,CAACpD,gBAAe,KAAK,MAAM,UAAU,KAAK,CAAC,SAAS,KAAK,UAAU,GAAG,KAAK,UAAU,CAAC,GAAG;AAC3F,uBAAO;AAAA,cACT;AAAA,YACF;AAEA,mBAAO;AAAA,UACT;AASA,mBAAS,YAAYO,OAAM;AACzB,mBAAOA,SAAQA,MAAK,YAAY;AAC9B,cAAAA,QAAOA,MAAK;AAAA,YACd;AAEA,mBAAOA;AAAA,UACT;AAUA,mBAAS,eAAeA,OAAM;AAC5B,mBAAOA,OAAM;AACX,kBAAIA,MAAK,aAAa;AACpB,uBAAOA,MAAK;AAAA,cACd;AAEA,cAAAA,QAAOA,MAAK;AAAA,YACd;AAAA,UACF;AAUA,mBAAS,0BAA0BgC,OAAM,QAAQ;AAC/C,gBAAIhC,QAAO,YAAYgC,KAAI;AAC3B,gBAAI,YAAY;AAChB,gBAAI,UAAU;AAEd,mBAAOhC,OAAM;AACX,kBAAIA,MAAK,aAAa,WAAW;AAC/B,0BAAU,YAAYA,MAAK,YAAY;AAEvC,oBAAI,aAAa,UAAU,WAAW,QAAQ;AAC5C,yBAAO;AAAA,oBACL,MAAMA;AAAA,oBACN,QAAQ,SAAS;AAAA,kBACnB;AAAA,gBACF;AAEA,4BAAY;AAAA,cACd;AAEA,cAAAA,QAAO,YAAY,eAAeA,KAAI,CAAC;AAAA,YACzC;AAAA,UACF;AAOA,mBAAS,WAAW,WAAW;AAC7B,gBAAI8C,iBAAgB,UAAU;AAC9B,gBAAI,MAAMA,kBAAiBA,eAAc,eAAe;AACxD,gBAAI,YAAY,IAAI,gBAAgB,IAAI,aAAa;AAErD,gBAAI,CAAC,aAAa,UAAU,eAAe,GAAG;AAC5C,qBAAO;AAAA,YACT;AAEA,gBAAI,aAAa,UAAU,YACvB,eAAe,UAAU,cACzB,YAAY,UAAU,WACtB,cAAc,UAAU;AAQ5B,gBAAI;AAEF,yBAAW;AACX,wBAAU;AAAA,YAEZ,SAASpD,IAAG;AACV,qBAAO;AAAA,YACT;AAEA,mBAAO,2BAA2B,WAAW,YAAY,cAAc,WAAW,WAAW;AAAA,UAC/F;AAWA,mBAAS,2BAA2B,WAAW,YAAY,cAAc,WAAW,aAAa;AAC/F,gBAAIqD,UAAS;AACb,gBAAI,QAAQ;AACZ,gBAAI,MAAM;AACV,gBAAI,oBAAoB;AACxB,gBAAI,mBAAmB;AACvB,gBAAI/C,QAAO;AACX,gBAAI,aAAa;AAEjB;AAAO,qBAAO,MAAM;AAClB,oBAAIgD,QAAO;AAEX,uBAAO,MAAM;AACX,sBAAIhD,UAAS,eAAe,iBAAiB,KAAKA,MAAK,aAAa,YAAY;AAC9E,4BAAQ+C,UAAS;AAAA,kBACnB;AAEA,sBAAI/C,UAAS,cAAc,gBAAgB,KAAKA,MAAK,aAAa,YAAY;AAC5E,0BAAM+C,UAAS;AAAA,kBACjB;AAEA,sBAAI/C,MAAK,aAAa,WAAW;AAC/B,oBAAA+C,WAAU/C,MAAK,UAAU;AAAA,kBAC3B;AAEA,uBAAKgD,QAAOhD,MAAK,gBAAgB,MAAM;AACrC;AAAA,kBACF;AAGA,+BAAaA;AACb,kBAAAA,QAAOgD;AAAA,gBACT;AAEA,uBAAO,MAAM;AACX,sBAAIhD,UAAS,WAAW;AAKtB,0BAAM;AAAA,kBACR;AAEA,sBAAI,eAAe,cAAc,EAAE,sBAAsB,cAAc;AACrE,4BAAQ+C;AAAA,kBACV;AAEA,sBAAI,eAAe,aAAa,EAAE,qBAAqB,aAAa;AAClE,0BAAMA;AAAA,kBACR;AAEA,uBAAKC,QAAOhD,MAAK,iBAAiB,MAAM;AACtC;AAAA,kBACF;AAEA,kBAAAA,QAAO;AACP,+BAAaA,MAAK;AAAA,gBACpB;AAGA,gBAAAA,QAAOgD;AAAA,cACT;AAEA,gBAAI,UAAU,MAAM,QAAQ,IAAI;AAG9B,qBAAO;AAAA,YACT;AAEA,mBAAO;AAAA,cACL;AAAA,cACA;AAAA,YACF;AAAA,UACF;AAcA,mBAAS,WAAWhD,OAAM,SAAS;AACjC,gBAAI,MAAMA,MAAK,iBAAiB;AAChC,gBAAI,MAAM,OAAO,IAAI,eAAe;AAIpC,gBAAI,CAAC,IAAI,cAAc;AACrB;AAAA,YACF;AAEA,gBAAI,YAAY,IAAI,aAAa;AACjC,gBAAI+C,UAAS/C,MAAK,YAAY;AAC9B,gBAAI,QAAQ,KAAK,IAAI,QAAQ,OAAO+C,OAAM;AAC1C,gBAAI,MAAM,QAAQ,QAAQ,SAAY,QAAQ,KAAK,IAAI,QAAQ,KAAKA,OAAM;AAG1E,gBAAI,CAAC,UAAU,UAAU,QAAQ,KAAK;AACpC,kBAAI,OAAO;AACX,oBAAM;AACN,sBAAQ;AAAA,YACV;AAEA,gBAAI,cAAc,0BAA0B/C,OAAM,KAAK;AACvD,gBAAI,YAAY,0BAA0BA,OAAM,GAAG;AAEnD,gBAAI,eAAe,WAAW;AAC5B,kBAAI,UAAU,eAAe,KAAK,UAAU,eAAe,YAAY,QAAQ,UAAU,iBAAiB,YAAY,UAAU,UAAU,cAAc,UAAU,QAAQ,UAAU,gBAAgB,UAAU,QAAQ;AACpN;AAAA,cACF;AAEA,kBAAIiD,SAAQ,IAAI,YAAY;AAC5B,cAAAA,OAAM,SAAS,YAAY,MAAM,YAAY,MAAM;AACnD,wBAAU,gBAAgB;AAE1B,kBAAI,QAAQ,KAAK;AACf,0BAAU,SAASA,MAAK;AACxB,0BAAU,OAAO,UAAU,MAAM,UAAU,MAAM;AAAA,cACnD,OAAO;AACL,gBAAAA,OAAM,OAAO,UAAU,MAAM,UAAU,MAAM;AAC7C,0BAAU,SAASA,MAAK;AAAA,cAC1B;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,WAAWjD,OAAM;AACxB,mBAAOA,SAAQA,MAAK,aAAa;AAAA,UACnC;AAEA,mBAAS,aAAa,WAAW,WAAW;AAC1C,gBAAI,CAAC,aAAa,CAAC,WAAW;AAC5B,qBAAO;AAAA,YACT,WAAW,cAAc,WAAW;AAClC,qBAAO;AAAA,YACT,WAAW,WAAW,SAAS,GAAG;AAChC,qBAAO;AAAA,YACT,WAAW,WAAW,SAAS,GAAG;AAChC,qBAAO,aAAa,WAAW,UAAU,UAAU;AAAA,YACrD,WAAW,cAAc,WAAW;AAClC,qBAAO,UAAU,SAAS,SAAS;AAAA,YACrC,WAAW,UAAU,yBAAyB;AAC5C,qBAAO,CAAC,EAAE,UAAU,wBAAwB,SAAS,IAAI;AAAA,YAC3D,OAAO;AACL,qBAAO;AAAA,YACT;AAAA,UACF;AAEA,mBAAS,aAAaA,OAAM;AAC1B,mBAAOA,SAAQA,MAAK,iBAAiB,aAAaA,MAAK,cAAc,iBAAiBA,KAAI;AAAA,UAC5F;AAEA,mBAAS,kBAAkB,QAAQ;AACjC,gBAAI;AAQF,qBAAO,OAAO,OAAO,cAAc,SAAS,SAAS;AAAA,YACvD,SAAS,KAAK;AACZ,qBAAO;AAAA,YACT;AAAA,UACF;AAEA,mBAAS,uBAAuB;AAC9B,gBAAI,MAAM;AACV,gBAAI,UAAU,iBAAiB;AAE/B,mBAAO,mBAAmB,IAAI,mBAAmB;AAC/C,kBAAI,kBAAkB,OAAO,GAAG;AAC9B,sBAAM,QAAQ;AAAA,cAChB,OAAO;AACL,uBAAO;AAAA,cACT;AAEA,wBAAU,iBAAiB,IAAI,QAAQ;AAAA,YACzC;AAEA,mBAAO;AAAA,UACT;AAeA,mBAAS,yBAAyB,MAAM;AACtC,gBAAI,WAAW,QAAQ,KAAK,YAAY,KAAK,SAAS,YAAY;AAClE,mBAAO,aAAa,aAAa,YAAY,KAAK,SAAS,UAAU,KAAK,SAAS,YAAY,KAAK,SAAS,SAAS,KAAK,SAAS,SAAS,KAAK,SAAS,eAAe,aAAa,cAAc,KAAK,oBAAoB;AAAA,UAChO;AACA,mBAAS,0BAA0B;AACjC,gBAAI,cAAc,qBAAqB;AACvC,mBAAO;AAAA,cACL;AAAA,cACA,gBAAgB,yBAAyB,WAAW,IAAI,aAAa,WAAW,IAAI;AAAA,YACtF;AAAA,UACF;AAOA,mBAAS,iBAAiB,2BAA2B;AACnD,gBAAI,iBAAiB,qBAAqB;AAC1C,gBAAI,mBAAmB,0BAA0B;AACjD,gBAAI,sBAAsB,0BAA0B;AAEpD,gBAAI,mBAAmB,oBAAoB,aAAa,gBAAgB,GAAG;AACzE,kBAAI,wBAAwB,QAAQ,yBAAyB,gBAAgB,GAAG;AAC9E,6BAAa,kBAAkB,mBAAmB;AAAA,cACpD;AAGA,kBAAI,YAAY,CAAC;AACjB,kBAAI,WAAW;AAEf,qBAAO,WAAW,SAAS,YAAY;AACrC,oBAAI,SAAS,aAAa,cAAc;AACtC,4BAAU,KAAK;AAAA,oBACb,SAAS;AAAA,oBACT,MAAM,SAAS;AAAA,oBACf,KAAK,SAAS;AAAA,kBAChB,CAAC;AAAA,gBACH;AAAA,cACF;AAEA,kBAAI,OAAO,iBAAiB,UAAU,YAAY;AAChD,iCAAiB,MAAM;AAAA,cACzB;AAEA,uBAAS,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAK;AACzC,oBAAI,OAAO,UAAU,CAAC;AACtB,qBAAK,QAAQ,aAAa,KAAK;AAC/B,qBAAK,QAAQ,YAAY,KAAK;AAAA,cAChC;AAAA,YACF;AAAA,UACF;AAQA,mBAAS,aAAa,OAAO;AAC3B,gBAAI;AAEJ,gBAAI,oBAAoB,OAAO;AAE7B,0BAAY;AAAA,gBACV,OAAO,MAAM;AAAA,gBACb,KAAK,MAAM;AAAA,cACb;AAAA,YACF,OAAO;AAEL,0BAAY,WAAW,KAAK;AAAA,YAC9B;AAEA,mBAAO,aAAa;AAAA,cAClB,OAAO;AAAA,cACP,KAAK;AAAA,YACP;AAAA,UACF;AAQA,mBAAS,aAAa,OAAO,SAAS;AACpC,gBAAI,QAAQ,QAAQ;AACpB,gBAAI,MAAM,QAAQ;AAElB,gBAAI,QAAQ,QAAW;AACrB,oBAAM;AAAA,YACR;AAEA,gBAAI,oBAAoB,OAAO;AAC7B,oBAAM,iBAAiB;AACvB,oBAAM,eAAe,KAAK,IAAI,KAAK,MAAM,MAAM,MAAM;AAAA,YACvD,OAAO;AACL,yBAAW,OAAO,OAAO;AAAA,YAC3B;AAAA,UACF;AAEA,cAAI,2BAA2BR,cAAa,kBAAkB,YAAY,SAAS,gBAAgB;AAEnG,mBAAS,mBAAmB;AAC1B,kCAAsB,YAAY,CAAC,YAAY,eAAe,WAAW,WAAW,WAAW,SAAS,aAAa,WAAW,iBAAiB,CAAC;AAAA,UACpJ;AAEA,cAAI,kBAAkB;AACtB,cAAI,sBAAsB;AAC1B,cAAI,gBAAgB;AACpB,cAAI,YAAY;AAQhB,mBAAS,eAAeQ,OAAM;AAC5B,gBAAI,oBAAoBA,SAAQ,yBAAyBA,KAAI,GAAG;AAC9D,qBAAO;AAAA,gBACL,OAAOA,MAAK;AAAA,gBACZ,KAAKA,MAAK;AAAA,cACZ;AAAA,YACF,OAAO;AACL,kBAAI,MAAMA,MAAK,iBAAiBA,MAAK,cAAc,eAAe;AAClE,kBAAI,YAAY,IAAI,aAAa;AACjC,qBAAO;AAAA,gBACL,YAAY,UAAU;AAAA,gBACtB,cAAc,UAAU;AAAA,gBACxB,WAAW,UAAU;AAAA,gBACrB,aAAa,UAAU;AAAA,cACzB;AAAA,YACF;AAAA,UACF;AAMA,mBAAS,uBAAuB,aAAa;AAC3C,mBAAO,YAAY,WAAW,cAAc,YAAY,WAAW,YAAY,aAAa,gBAAgB,cAAc,YAAY;AAAA,UACxI;AAUA,mBAAS,qBAAqB,eAAe,aAAa,mBAAmB;AAK3E,gBAAI,MAAM,uBAAuB,iBAAiB;AAElD,gBAAI,aAAa,mBAAmB,QAAQ,oBAAoB,iBAAiB,GAAG,GAAG;AACrF;AAAA,YACF;AAGA,gBAAI,mBAAmB,eAAe,eAAe;AAErD,gBAAI,CAAC,iBAAiB,CAAC,aAAa,eAAe,gBAAgB,GAAG;AACpE,8BAAgB;AAChB,kBAAI,YAAY,4BAA4B,qBAAqB,UAAU;AAE3E,kBAAI,UAAU,SAAS,GAAG;AACxB,oBAAI,QAAQ,IAAI,eAAe,YAAY,UAAU,MAAM,aAAa,iBAAiB;AACzF,8BAAc,KAAK;AAAA,kBACjB;AAAA,kBACA;AAAA,gBACF,CAAC;AACD,sBAAM,SAAS;AAAA,cACjB;AAAA,YACF;AAAA,UACF;AAiBA,mBAAS,gBAAgB,eAAe,cAAc,YAAY,aAAa,mBAAmB,kBAAkB,iBAAiB;AACnI,gBAAI,aAAa,aAAa,oBAAoB,UAAU,IAAI;AAEhE,oBAAQ,cAAc;AAAA,cAEpB,KAAK;AACH,oBAAI,mBAAmB,UAAU,KAAK,WAAW,oBAAoB,QAAQ;AAC3E,oCAAkB;AAClB,wCAAsB;AACtB,kCAAgB;AAAA,gBAClB;AAEA;AAAA,cAEF,KAAK;AACH,kCAAkB;AAClB,sCAAsB;AACtB,gCAAgB;AAChB;AAAA,cAIF,KAAK;AACH,4BAAY;AACZ;AAAA,cAEF,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AACH,4BAAY;AACZ,qCAAqB,eAAe,aAAa,iBAAiB;AAClE;AAAA,cAWF,KAAK;AACH,oBAAI,0BAA0B;AAC5B;AAAA,gBACF;AAAA,cAIF,KAAK;AAAA,cACL,KAAK;AACH,qCAAqB,eAAe,aAAa,iBAAiB;AAAA,YACtE;AAAA,UACF;AAUA,mBAAS,cAAc,WAAW,WAAW;AAC3C,gBAAIgB,YAAW,CAAC;AAChB,YAAAA,UAAS,UAAU,YAAY,CAAC,IAAI,UAAU,YAAY;AAC1D,YAAAA,UAAS,WAAW,SAAS,IAAI,WAAW;AAC5C,YAAAA,UAAS,QAAQ,SAAS,IAAI,QAAQ;AACtC,mBAAOA;AAAA,UACT;AAMA,cAAI,iBAAiB;AAAA,YACnB,cAAc,cAAc,aAAa,cAAc;AAAA,YACvD,oBAAoB,cAAc,aAAa,oBAAoB;AAAA,YACnE,gBAAgB,cAAc,aAAa,gBAAgB;AAAA,YAC3D,eAAe,cAAc,cAAc,eAAe;AAAA,UAC5D;AAKA,cAAI,qBAAqB,CAAC;AAK1B,cAAIO,SAAQ,CAAC;AAKb,cAAI/B,YAAW;AACb,YAAA+B,SAAQ,SAAS,cAAc,KAAK,EAAE;AAKtC,gBAAI,EAAE,oBAAoB,SAAS;AACjC,qBAAO,eAAe,aAAa;AACnC,qBAAO,eAAe,mBAAmB;AACzC,qBAAO,eAAe,eAAe;AAAA,YACvC;AAGA,gBAAI,EAAE,qBAAqB,SAAS;AAClC,qBAAO,eAAe,cAAc;AAAA,YACtC;AAAA,UACF;AASA,mBAAS,2BAA2B,WAAW;AAC7C,gBAAI,mBAAmB,SAAS,GAAG;AACjC,qBAAO,mBAAmB,SAAS;AAAA,YACrC,WAAW,CAAC,eAAe,SAAS,GAAG;AACrC,qBAAO;AAAA,YACT;AAEA,gBAAI,YAAY,eAAe,SAAS;AAExC,qBAAS,aAAa,WAAW;AAC/B,kBAAI,UAAU,eAAe,SAAS,KAAK,aAAaA,QAAO;AAC7D,uBAAO,mBAAmB,SAAS,IAAI,UAAU,SAAS;AAAA,cAC5D;AAAA,YACF;AAEA,mBAAO;AAAA,UACT;AAEA,cAAI,gBAAgB,2BAA2B,cAAc;AAC7D,cAAI,sBAAsB,2BAA2B,oBAAoB;AACzE,cAAI,kBAAkB,2BAA2B,gBAAgB;AACjE,cAAI2B,kBAAiB,2BAA2B,eAAe;AAE/D,cAAI,6BAA6B,oBAAI,IAAI;AAUzC,cAAI,0BAA0B,CAAC,SAAS,YAAY,UAAU,WAAW,kBAAkB,SAAS,SAAS,eAAe,QAAQ,OAAO,QAAQ,WAAW,aAAa,YAAY,aAAa,YAAY,aAAa,QAAQ,kBAAkB,WAAW,aAAa,SAAS,SAAS,qBAAqB,SAAS,WAAW,WAAW,YAAY,SAAS,QAAQ,cAAc,kBAAkB,aAAa,sBAAsB,aAAa,aAAa,YAAY,aAAa,WAAW,SAAS,SAAS,QAAQ,WAAW,iBAAiB,eAAe,eAAe,cAAc,eAAe,aAAa,YAAY,cAAc,SAAS,UAAU,UAAU,WAAW,WAAW,UAAU,WAAW,cAAc,eAAe,YAAY,cAAc,gBAAgB,UAAU,UAAU,aAAa,WAAW,OAAO;AAE70B,mBAAS,oBAAoB,cAAc,WAAW;AACpD,uCAA2B,IAAI,cAAc,SAAS;AACtD,kCAAsB,WAAW,CAAC,YAAY,CAAC;AAAA,UACjD;AAEA,mBAAS,uBAAuB;AAC9B,qBAAS,IAAI,GAAG,IAAI,wBAAwB,QAAQ,KAAK;AACvD,kBAAI,YAAY,wBAAwB,CAAC;AACzC,kBAAI,eAAe,UAAU,YAAY;AACzC,kBAAI,mBAAmB,UAAU,CAAC,EAAE,YAAY,IAAI,UAAU,MAAM,CAAC;AACrE,kCAAoB,cAAc,OAAO,gBAAgB;AAAA,YAC3D;AAGA,gCAAoB,eAAe,gBAAgB;AACnD,gCAAoB,qBAAqB,sBAAsB;AAC/D,gCAAoB,iBAAiB,kBAAkB;AACvD,gCAAoB,YAAY,eAAe;AAC/C,gCAAoB,WAAW,SAAS;AACxC,gCAAoB,YAAY,QAAQ;AACxC,gCAAoBA,iBAAgB,iBAAiB;AAAA,UACvD;AAEA,mBAAS,gBAAgB,eAAe,cAAc,YAAY,aAAa,mBAAmB,kBAAkB,iBAAiB;AACnI,gBAAI,YAAY,2BAA2B,IAAI,YAAY;AAE3D,gBAAI,cAAc,QAAW;AAC3B;AAAA,YACF;AAEA,gBAAI,qBAAqB;AACzB,gBAAI,iBAAiB;AAErB,oBAAQ,cAAc;AAAA,cACpB,KAAK;AAIH,oBAAI,iBAAiB,WAAW,MAAM,GAAG;AACvC;AAAA,gBACF;AAAA,cAIF,KAAK;AAAA,cACL,KAAK;AACH,qCAAqB;AACrB;AAAA,cAEF,KAAK;AACH,iCAAiB;AACjB,qCAAqB;AACrB;AAAA,cAEF,KAAK;AACH,iCAAiB;AACjB,qCAAqB;AACrB;AAAA,cAEF,KAAK;AAAA,cACL,KAAK;AACH,qCAAqB;AACrB;AAAA,cAEF,KAAK;AAGH,oBAAI,YAAY,WAAW,GAAG;AAC5B;AAAA,gBACF;AAAA,cAIF,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cAIL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AACH,qCAAqB;AACrB;AAAA,cAEF,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AACH,qCAAqB;AACrB;AAAA,cAEF,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AACH,qCAAqB;AACrB;AAAA,cAEF,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AACH,qCAAqB;AACrB;AAAA,cAEF,KAAKA;AACH,qCAAqB;AACrB;AAAA,cAEF,KAAK;AACH,qCAAqB;AACrB;AAAA,cAEF,KAAK;AACH,qCAAqB;AACrB;AAAA,cAEF,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AACH,qCAAqB;AACrB;AAAA,cAEF,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AACH,qCAAqB;AACrB;AAAA,YACJ;AAEA,gBAAI,kBAAkB,mBAAmB,sBAAsB;AAE/D;AAKE,kBAAI,uBAAuB,CAAC;AAAA;AAAA;AAAA;AAAA,cAI5B,iBAAiB;AAEjB,kBAAI,aAAa,+BAA+B,YAAY,WAAW,YAAY,MAAM,gBAAgB,oBAAoB;AAE7H,kBAAI,WAAW,SAAS,GAAG;AAEzB,oBAAI,SAAS,IAAI,mBAAmB,WAAW,gBAAgB,MAAM,aAAa,iBAAiB;AAEnG,8BAAc,KAAK;AAAA,kBACjB,OAAO;AAAA,kBACP,WAAW;AAAA,gBACb,CAAC;AAAA,cACH;AAAA,YACF;AAAA,UACF;AAGA,+BAAqB;AACrB,2BAAiB;AACjB,2BAAiB;AACjB,2BAAiB;AACjB,yBAAe;AAEf,mBAAS,gBAAgB,eAAe,cAAc,YAAY,aAAa,mBAAmB,kBAAkB,iBAAiB;AAOnI,4BAAgB,eAAe,cAAc,YAAY,aAAa,mBAAmB,gBAAgB;AACzG,gBAAI,gCAAgC,mBAAmB,+CAA+C;AAkBtG,gBAAI,8BAA8B;AAChC,8BAAgB,eAAe,cAAc,YAAY,aAAa,iBAAiB;AACvF,8BAAgB,eAAe,cAAc,YAAY,aAAa,iBAAiB;AACvF,8BAAgB,eAAe,cAAc,YAAY,aAAa,iBAAiB;AACvF,4BAAc,eAAe,cAAc,YAAY,aAAa,iBAAiB;AAAA,YACvF;AAAA,UACF;AAGA,cAAI,kBAAkB,CAAC,SAAS,WAAW,kBAAkB,kBAAkB,WAAW,aAAa,SAAS,SAAS,cAAc,kBAAkB,aAAa,SAAS,QAAQ,WAAW,YAAY,cAAc,UAAU,UAAU,WAAW,WAAW,WAAW,cAAc,gBAAgB,SAAS;AAIxT,cAAI,qBAAqB,IAAI,IAAI,CAAC,UAAU,SAAS,WAAW,QAAQ,UAAU,QAAQ,EAAE,OAAO,eAAe,CAAC;AAEnH,mBAAS,gBAAgB,OAAO,UAAU,eAAe;AACvD,gBAAI,OAAO,MAAM,QAAQ;AACzB,kBAAM,gBAAgB;AACtB,oDAAwC,MAAM,UAAU,QAAW,KAAK;AACxE,kBAAM,gBAAgB;AAAA,UACxB;AAEA,mBAAS,iCAAiC,OAAO,mBAAmB,gBAAgB;AAClF,gBAAI;AAEJ,gBAAI,gBAAgB;AAClB,uBAAS,IAAI,kBAAkB,SAAS,GAAG,KAAK,GAAG,KAAK;AACtD,oBAAI,uBAAuB,kBAAkB,CAAC,GAC1C,WAAW,qBAAqB,UAChC,gBAAgB,qBAAqB,eACrC,WAAW,qBAAqB;AAEpC,oBAAI,aAAa,oBAAoB,MAAM,qBAAqB,GAAG;AACjE;AAAA,gBACF;AAEA,gCAAgB,OAAO,UAAU,aAAa;AAC9C,mCAAmB;AAAA,cACrB;AAAA,YACF,OAAO;AACL,uBAAS,KAAK,GAAG,KAAK,kBAAkB,QAAQ,MAAM;AACpD,oBAAI,wBAAwB,kBAAkB,EAAE,GAC5C,YAAY,sBAAsB,UAClC,iBAAiB,sBAAsB,eACvC,YAAY,sBAAsB;AAEtC,oBAAI,cAAc,oBAAoB,MAAM,qBAAqB,GAAG;AAClE;AAAA,gBACF;AAEA,gCAAgB,OAAO,WAAW,cAAc;AAChD,mCAAmB;AAAA,cACrB;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,qBAAqB,eAAe,kBAAkB;AAC7D,gBAAI,kBAAkB,mBAAmB,sBAAsB;AAE/D,qBAAS,IAAI,GAAG,IAAI,cAAc,QAAQ,KAAK;AAC7C,kBAAI,mBAAmB,cAAc,CAAC,GAClC,QAAQ,iBAAiB,OACzB,YAAY,iBAAiB;AACjC,+CAAiC,OAAO,WAAW,cAAc;AAAA,YACnE;AAGA,+BAAmB;AAAA,UACrB;AAEA,mBAAS,yBAAyB,cAAc,kBAAkB,aAAa,YAAY,iBAAiB;AAC1G,gBAAI,oBAAoB,eAAe,WAAW;AAClD,gBAAI,gBAAgB,CAAC;AACrB,4BAAgB,eAAe,cAAc,YAAY,aAAa,mBAAmB,gBAAgB;AACzG,iCAAqB,eAAe,gBAAgB;AAAA,UACtD;AAEA,mBAAS,0BAA0B,cAAc,eAAe;AAC9D;AACE,kBAAI,CAAC,mBAAmB,IAAI,YAAY,GAAG;AACzC,sBAAM,6GAAkH,YAAY;AAAA,cACtI;AAAA,YACF;AAEA,gBAAI,yBAAyB;AAC7B,gBAAI,cAAc,oBAAoB,aAAa;AACnD,gBAAI,iBAAiB,kBAAkB,cAAc,sBAAsB;AAE3E,gBAAI,CAAC,YAAY,IAAI,cAAc,GAAG;AACpC,sCAAwB,eAAe,cAAc,kBAAkB,sBAAsB;AAC7F,0BAAY,IAAI,cAAc;AAAA,YAChC;AAAA,UACF;AACA,mBAAS,oBAAoB,cAAc,wBAAwB,QAAQ;AACzE;AACE,kBAAI,mBAAmB,IAAI,YAAY,KAAK,CAAC,wBAAwB;AACnE,sBAAM,2HAAgI,YAAY;AAAA,cACpJ;AAAA,YACF;AAEA,gBAAI,mBAAmB;AAEvB,gBAAI,wBAAwB;AAC1B,kCAAoB;AAAA,YACtB;AAEA,oCAAwB,QAAQ,cAAc,kBAAkB,sBAAsB;AAAA,UACxF;AACA,cAAI,kBAAkB,oBAAoB,KAAK,OAAO,EAAE,SAAS,EAAE,EAAE,MAAM,CAAC;AAC5E,mBAAS,2BAA2B,sBAAsB;AACxD,gBAAI,CAAC,qBAAqB,eAAe,GAAG;AAC1C,mCAAqB,eAAe,IAAI;AACxC,8BAAgB,QAAQ,SAAU,cAAc;AAG9C,oBAAI,iBAAiB,mBAAmB;AACtC,sBAAI,CAAC,mBAAmB,IAAI,YAAY,GAAG;AACzC,wCAAoB,cAAc,OAAO,oBAAoB;AAAA,kBAC/D;AAEA,sCAAoB,cAAc,MAAM,oBAAoB;AAAA,gBAC9D;AAAA,cACF,CAAC;AACD,kBAAIJ,iBAAgB,qBAAqB,aAAa,gBAAgB,uBAAuB,qBAAqB;AAElH,kBAAIA,mBAAkB,MAAM;AAG1B,oBAAI,CAACA,eAAc,eAAe,GAAG;AACnC,kBAAAA,eAAc,eAAe,IAAI;AACjC,sCAAoB,mBAAmB,OAAOA,cAAa;AAAA,gBAC7D;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,wBAAwB,iBAAiB,cAAc,kBAAkB,wBAAwB,sCAAsC;AAC9I,gBAAI,WAAW,uCAAuC,iBAAiB,cAAc,gBAAgB;AAGrG,gBAAI,oBAAoB;AAExB,gBAAI,+BAA+B;AAOjC,kBAAI,iBAAiB,gBAAgB,iBAAiB,eAAe,iBAAiB,SAAS;AAC7F,oCAAoB;AAAA,cACtB;AAAA,YACF;AAEA,8BAAmB;AACnB,gBAAI;AAGJ,gBAAI,wBAAwB;AAC1B,kBAAI,sBAAsB,QAAW;AACnC,sCAAsB,uCAAuC,iBAAiB,cAAc,UAAU,iBAAiB;AAAA,cACzH,OAAO;AACL,sCAAsB,wBAAwB,iBAAiB,cAAc,QAAQ;AAAA,cACvF;AAAA,YACF,OAAO;AACL,kBAAI,sBAAsB,QAAW;AACnC,sCAAsB,sCAAsC,iBAAiB,cAAc,UAAU,iBAAiB;AAAA,cACxH,OAAO;AACL,sCAAsB,uBAAuB,iBAAiB,cAAc,QAAQ;AAAA,cACtF;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,wBAAwB,gBAAgB,iBAAiB;AAChE,mBAAO,mBAAmB,mBAAmB,eAAe,aAAa,gBAAgB,eAAe,eAAe;AAAA,UACzH;AAEA,mBAAS,kCAAkC,cAAc,kBAAkB,aAAa,YAAY,iBAAiB;AACnH,gBAAI,eAAe;AAEnB,iBAAK,mBAAmB,sCAAsC,MAAM,mBAAmB,sBAAsB,GAAG;AAC9G,kBAAI,sBAAsB;AAE1B,kBAAI,eAAe,MAAM;AAYvB,oBAAI9C,QAAO;AAEX;AAAU,yBAAO,MAAM;AACrB,wBAAIA,UAAS,MAAM;AACjB;AAAA,oBACF;AAEA,wBAAI,UAAUA,MAAK;AAEnB,wBAAI,YAAY,YAAY,YAAY,YAAY;AAClD,0BAAI,YAAYA,MAAK,UAAU;AAE/B,0BAAI,wBAAwB,WAAW,mBAAmB,GAAG;AAC3D;AAAA,sBACF;AAEA,0BAAI,YAAY,YAAY;AAK1B,4BAAI,YAAYA,MAAK;AAErB,+BAAO,cAAc,MAAM;AACzB,8BAAI,WAAW,UAAU;AAEzB,8BAAI,aAAa,YAAY,aAAa,YAAY;AACpD,gCAAI,iBAAiB,UAAU,UAAU;AAEzC,gCAAI,wBAAwB,gBAAgB,mBAAmB,GAAG;AAIhE;AAAA,4BACF;AAAA,0BACF;AAEA,sCAAY,UAAU;AAAA,wBACxB;AAAA,sBACF;AAOA,6BAAO,cAAc,MAAM;AACzB,4BAAI,aAAa,2BAA2B,SAAS;AAErD,4BAAI,eAAe,MAAM;AACvB;AAAA,wBACF;AAEA,4BAAI,YAAY,WAAW;AAE3B,4BAAI,cAAc,iBAAiB,cAAc,UAAU;AACzD,0BAAAA,QAAO,eAAe;AACtB,mCAAS;AAAA,wBACX;AAEA,oCAAY,UAAU;AAAA,sBACxB;AAAA,oBACF;AAEA,oBAAAA,QAAOA,MAAK;AAAA,kBACd;AAAA,cACF;AAAA,YACF;AAEA,2BAAe,WAAY;AACzB,qBAAO,yBAAyB,cAAc,kBAAkB,aAAa,YAAY;AAAA,YAC3F,CAAC;AAAA,UACH;AAEA,mBAAS,uBAAuB,UAAU,UAAU,eAAe;AACjE,mBAAO;AAAA,cACL;AAAA,cACA;AAAA,cACA;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,+BAA+B,aAAa,WAAW,iBAAiB,gBAAgB,sBAAsB,aAAa;AAClI,gBAAI,cAAc,cAAc,OAAO,YAAY,YAAY;AAC/D,gBAAI,iBAAiB,iBAAiB,cAAc;AACpD,gBAAI,YAAY,CAAC;AACjB,gBAAI,WAAW;AACf,gBAAI,oBAAoB;AAExB,mBAAO,aAAa,MAAM;AACxB,kBAAI,aAAa,UACb,YAAY,WAAW,WACvB,MAAM,WAAW;AAErB,kBAAI,QAAQ,iBAAiB,cAAc,MAAM;AAC/C,oCAAoB;AAGpB,oBAAI,mBAAmB,MAAM;AAC3B,sBAAI,WAAW,YAAY,UAAU,cAAc;AAEnD,sBAAI,YAAY,MAAM;AACpB,8BAAU,KAAK,uBAAuB,UAAU,UAAU,iBAAiB,CAAC;AAAA,kBAC9E;AAAA,gBACF;AAAA,cACF;AAKA,kBAAI,sBAAsB;AACxB;AAAA,cACF;AAEA,yBAAW,SAAS;AAAA,YACtB;AAEA,mBAAO;AAAA,UACT;AAQA,mBAAS,4BAA4B,aAAa,WAAW;AAC3D,gBAAI,cAAc,YAAY;AAC9B,gBAAI,YAAY,CAAC;AACjB,gBAAI,WAAW;AAEf,mBAAO,aAAa,MAAM;AACxB,kBAAI,aAAa,UACb,YAAY,WAAW,WACvB,MAAM,WAAW;AAErB,kBAAI,QAAQ,iBAAiB,cAAc,MAAM;AAC/C,oBAAI,gBAAgB;AACpB,oBAAI,kBAAkB,YAAY,UAAU,WAAW;AAEvD,oBAAI,mBAAmB,MAAM;AAC3B,4BAAU,QAAQ,uBAAuB,UAAU,iBAAiB,aAAa,CAAC;AAAA,gBACpF;AAEA,oBAAI,iBAAiB,YAAY,UAAU,SAAS;AAEpD,oBAAI,kBAAkB,MAAM;AAC1B,4BAAU,KAAK,uBAAuB,UAAU,gBAAgB,aAAa,CAAC;AAAA,gBAChF;AAAA,cACF;AAEA,yBAAW,SAAS;AAAA,YACtB;AAEA,mBAAO;AAAA,UACT;AAEA,mBAAS,UAAU,MAAM;AACvB,gBAAI,SAAS,MAAM;AACjB,qBAAO;AAAA,YACT;AAEA,eAAG;AACD,qBAAO,KAAK;AAAA,YAKd,SAAS,QAAQ,KAAK,QAAQ;AAE9B,gBAAI,MAAM;AACR,qBAAO;AAAA,YACT;AAEA,mBAAO;AAAA,UACT;AAOA,mBAAS,wBAAwB,OAAO,OAAO;AAC7C,gBAAI,QAAQ;AACZ,gBAAI,QAAQ;AACZ,gBAAI,SAAS;AAEb,qBAAS,QAAQ,OAAO,OAAO,QAAQ,UAAU,KAAK,GAAG;AACvD;AAAA,YACF;AAEA,gBAAI,SAAS;AAEb,qBAAS,QAAQ,OAAO,OAAO,QAAQ,UAAU,KAAK,GAAG;AACvD;AAAA,YACF;AAGA,mBAAO,SAAS,SAAS,GAAG;AAC1B,sBAAQ,UAAU,KAAK;AACvB;AAAA,YACF;AAGA,mBAAO,SAAS,SAAS,GAAG;AAC1B,sBAAQ,UAAU,KAAK;AACvB;AAAA,YACF;AAGA,gBAAI,QAAQ;AAEZ,mBAAO,SAAS;AACd,kBAAI,UAAU,SAAS,UAAU,QAAQ,UAAU,MAAM,WAAW;AAClE,uBAAO;AAAA,cACT;AAEA,sBAAQ,UAAU,KAAK;AACvB,sBAAQ,UAAU,KAAK;AAAA,YACzB;AAEA,mBAAO;AAAA,UACT;AAEA,mBAAS,sCAAsC,eAAe,OAAO,QAAQ,QAAQ,gBAAgB;AACnG,gBAAI,mBAAmB,MAAM;AAC7B,gBAAI,YAAY,CAAC;AACjB,gBAAI,WAAW;AAEf,mBAAO,aAAa,MAAM;AACxB,kBAAI,aAAa,QAAQ;AACvB;AAAA,cACF;AAEA,kBAAI,aAAa,UACb,YAAY,WAAW,WACvB,YAAY,WAAW,WACvB,MAAM,WAAW;AAErB,kBAAI,cAAc,QAAQ,cAAc,QAAQ;AAC9C;AAAA,cACF;AAEA,kBAAI,QAAQ,iBAAiB,cAAc,MAAM;AAC/C,oBAAI,gBAAgB;AAEpB,oBAAI,gBAAgB;AAClB,sBAAI,kBAAkB,YAAY,UAAU,gBAAgB;AAE5D,sBAAI,mBAAmB,MAAM;AAC3B,8BAAU,QAAQ,uBAAuB,UAAU,iBAAiB,aAAa,CAAC;AAAA,kBACpF;AAAA,gBACF,WAAW,CAAC,gBAAgB;AAC1B,sBAAI,iBAAiB,YAAY,UAAU,gBAAgB;AAE3D,sBAAI,kBAAkB,MAAM;AAC1B,8BAAU,KAAK,uBAAuB,UAAU,gBAAgB,aAAa,CAAC;AAAA,kBAChF;AAAA,gBACF;AAAA,cACF;AAEA,yBAAW,SAAS;AAAA,YACtB;AAEA,gBAAI,UAAU,WAAW,GAAG;AAC1B,4BAAc,KAAK;AAAA,gBACjB;AAAA,gBACA;AAAA,cACF,CAAC;AAAA,YACH;AAAA,UACF;AAOA,mBAAS,sCAAsC,eAAe,YAAY,YAAY4C,OAAM,IAAI;AAC9F,gBAAI,SAASA,SAAQ,KAAK,wBAAwBA,OAAM,EAAE,IAAI;AAE9D,gBAAIA,UAAS,MAAM;AACjB,oDAAsC,eAAe,YAAYA,OAAM,QAAQ,KAAK;AAAA,YACtF;AAEA,gBAAI,OAAO,QAAQ,eAAe,MAAM;AACtC,oDAAsC,eAAe,YAAY,IAAI,QAAQ,IAAI;AAAA,YACnF;AAAA,UACF;AACA,mBAAS,kBAAkB,cAAc,SAAS;AAChD,mBAAO,eAAe,QAAQ,UAAU,YAAY;AAAA,UACtD;AAEA,cAAI,0BAA0B;AAC9B,cAAI,6BAA6B;AACjC,cAAI,oCAAoC;AACxC,cAAI,6BAA6B;AACjC,cAAI,YAAY;AAChB,cAAI,WAAW;AACf,cAAI,QAAQ;AACZ,cAAI,SAAS;AACb,cAAI;AACJ,cAAI;AACJ,cAAI;AACJ,cAAI;AACJ,cAAI;AACJ,cAAI;AACJ,cAAI;AAEJ;AACE,gCAAoB;AAAA;AAAA,cAElB,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAMR,SAAS;AAAA,YACX;AAEA,8CAAkC,SAAU,MAAM,OAAO;AACvD,iCAAmB,MAAM,KAAK;AAC9B,mCAAqB,MAAM,KAAK;AAChC,mCAAqB,MAAM,OAAO;AAAA,gBAChC;AAAA,gBACA;AAAA,cACF,CAAC;AAAA,YACH;AAUA,8CAAkCpD,cAAa,CAAC,SAAS;AAEzD,oCAAwB,SAAU,UAAU,aAAa,aAAa;AACpE,kBAAI,yBAAyB;AAC3B;AAAA,cACF;AAEA,kBAAI,wBAAwB,kCAAkC,WAAW;AACzE,kBAAI,wBAAwB,kCAAkC,WAAW;AAEzE,kBAAI,0BAA0B,uBAAuB;AACnD;AAAA,cACF;AAEA,wCAA0B;AAE1B,oBAAM,kDAAkD,UAAU,KAAK,UAAU,qBAAqB,GAAG,KAAK,UAAU,qBAAqB,CAAC;AAAA,YAChJ;AAEA,qCAAyB,SAAU,gBAAgB;AACjD,kBAAI,yBAAyB;AAC3B;AAAA,cACF;AAEA,wCAA0B;AAC1B,kBAAI,QAAQ,CAAC;AACb,6BAAe,QAAQ,SAAUG,OAAM;AACrC,sBAAM,KAAKA,KAAI;AAAA,cACjB,CAAC;AAED,oBAAM,wCAAwC,KAAK;AAAA,YACrD;AAEA,0CAA8B,SAAU,kBAAkB,UAAU;AAClE,kBAAI,aAAa,OAAO;AACtB,sBAAM,wLAAkM,kBAAkB,kBAAkB,gBAAgB;AAAA,cAC9P,OAAO;AACL,sBAAM,8EAA8E,kBAAkB,OAAO,QAAQ;AAAA,cACvH;AAAA,YACF;AAIA,4BAAgB,SAAU,QAAQ,MAAM;AAKtC,kBAAI,cAAc,OAAO,iBAAiB,iBAAiB,OAAO,cAAc,cAAc,OAAO,OAAO,IAAI,OAAO,cAAc,gBAAgB,OAAO,cAAc,OAAO,OAAO;AACxL,0BAAY,YAAY;AACxB,qBAAO,YAAY;AAAA,YACrB;AAAA,UACF;AAOA,cAAI,2BAA2B;AAC/B,cAAI,uCAAuC;AAE3C,mBAAS,kCAAkC,QAAQ;AACjD;AACE,sCAAwB,MAAM;AAAA,YAChC;AAEA,gBAAI,eAAe,OAAO,WAAW,WAAW,SAAS,KAAK;AAC9D,mBAAO,aAAa,QAAQ,0BAA0B,IAAI,EAAE,QAAQ,sCAAsC,EAAE;AAAA,UAC9G;AAEA,mBAAS,sBAAsB,YAAY,YAAY,kBAAkB,eAAe;AACtF,gBAAI,uBAAuB,kCAAkC,UAAU;AACvE,gBAAI,uBAAuB,kCAAkC,UAAU;AAEvE,gBAAI,yBAAyB,sBAAsB;AACjD;AAAA,YACF;AAEA,gBAAI,eAAe;AACjB;AACE,oBAAI,CAAC,yBAAyB;AAC5B,4CAA0B;AAE1B,wBAAM,yDAAyD,sBAAsB,oBAAoB;AAAA,gBAC3G;AAAA,cACF;AAAA,YACF;AAEA,gBAAI,oBAAoB,0CAA0C;AAGhE,oBAAM,IAAI,MAAM,mDAAmD;AAAA,YACrE;AAAA,UACF;AAEA,mBAAS,kCAAkC,sBAAsB;AAC/D,mBAAO,qBAAqB,aAAa,gBAAgB,uBAAuB,qBAAqB;AAAA,UACvG;AAEA,mBAASwD,QAAO;AAAA,UAAC;AAEjB,mBAAS,iCAAiCnD,OAAM;AAU9C,YAAAA,MAAK,UAAUmD;AAAA,UACjB;AAEA,mBAAS,wBAAwB,KAAK,YAAY,sBAAsB,WAAW,sBAAsB;AACvG,qBAAS,WAAW,WAAW;AAC7B,kBAAI,CAAC,UAAU,eAAe,OAAO,GAAG;AACtC;AAAA,cACF;AAEA,kBAAI,WAAW,UAAU,OAAO;AAEhC,kBAAI,YAAY,OAAO;AACrB;AACE,sBAAI,UAAU;AAGZ,2BAAO,OAAO,QAAQ;AAAA,kBACxB;AAAA,gBACF;AAGA,kCAAkB,YAAY,QAAQ;AAAA,cACxC,WAAW,YAAY,4BAA4B;AACjD,oBAAI,WAAW,WAAW,SAAS,MAAM,IAAI;AAE7C,oBAAI,YAAY,MAAM;AACpB,+BAAa,YAAY,QAAQ;AAAA,gBACnC;AAAA,cACF,WAAW,YAAY,UAAU;AAC/B,oBAAI,OAAO,aAAa,UAAU;AAKhC,sBAAI,oBAAoB,QAAQ,cAAc,aAAa;AAE3D,sBAAI,mBAAmB;AACrB,mCAAe,YAAY,QAAQ;AAAA,kBACrC;AAAA,gBACF,WAAW,OAAO,aAAa,UAAU;AACvC,iCAAe,YAAY,KAAK,QAAQ;AAAA,gBAC1C;AAAA,cACF,WAAW,YAAY,qCAAqC,YAAY;AAA4B;AAAA,uBAAW,YAAY;AAAW;AAAA,uBAAW,6BAA6B,eAAe,OAAO,GAAG;AACrM,oBAAI,YAAY,MAAM;AACpB,sBAAK,OAAO,aAAa,YAAY;AACnC,gDAA4B,SAAS,QAAQ;AAAA,kBAC/C;AAEA,sBAAI,YAAY,YAAY;AAC1B,8CAA0B,UAAU,UAAU;AAAA,kBAChD;AAAA,gBACF;AAAA,cACF,WAAW,YAAY,MAAM;AAC3B,oCAAoB,YAAY,SAAS,UAAU,oBAAoB;AAAA,cACzE;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,oBAAoB,YAAY,eAAe,uBAAuB,sBAAsB;AAEnG,qBAAS,IAAI,GAAG,IAAI,cAAc,QAAQ,KAAK,GAAG;AAChD,kBAAI,UAAU,cAAc,CAAC;AAC7B,kBAAI,YAAY,cAAc,IAAI,CAAC;AAEnC,kBAAI,YAAY,OAAO;AACrB,kCAAkB,YAAY,SAAS;AAAA,cACzC,WAAW,YAAY,4BAA4B;AACjD,6BAAa,YAAY,SAAS;AAAA,cACpC,WAAW,YAAY,UAAU;AAC/B,+BAAe,YAAY,SAAS;AAAA,cACtC,OAAO;AACL,oCAAoB,YAAY,SAAS,WAAW,oBAAoB;AAAA,cAC1E;AAAA,YACF;AAAA,UACF;AAEA,mBAASC,eAAc,MAAM,OAAO,sBAAsB,iBAAiB;AACzE,gBAAI;AAGJ,gBAAIN,iBAAgB,kCAAkC,oBAAoB;AAC1E,gBAAI;AACJ,gBAAI,eAAe;AAEnB,gBAAI,iBAAiB,gBAAgB;AACnC,6BAAe,sBAAsB,IAAI;AAAA,YAC3C;AAEA,gBAAI,iBAAiB,gBAAgB;AACnC;AACE,uCAAuB,kBAAkB,MAAM,KAAK;AAGpD,oBAAI,CAAC,wBAAwB,SAAS,KAAK,YAAY,GAAG;AACxD,wBAAM,0GAAoH,IAAI;AAAA,gBAChI;AAAA,cACF;AAEA,kBAAI,SAAS,UAAU;AAGrB,oBAAI,MAAMA,eAAc,cAAc,KAAK;AAE3C,oBAAI,YAAY;AAGhB,oBAAI,aAAa,IAAI;AACrB,6BAAa,IAAI,YAAY,UAAU;AAAA,cACzC,WAAW,OAAO,MAAM,OAAO,UAAU;AAEvC,6BAAaA,eAAc,cAAc,MAAM;AAAA,kBAC7C,IAAI,MAAM;AAAA,gBACZ,CAAC;AAAA,cACH,OAAO;AAIL,6BAAaA,eAAc,cAAc,IAAI;AAS7C,oBAAI,SAAS,UAAU;AACrB,sBAAI9C,QAAO;AAEX,sBAAI,MAAM,UAAU;AAClB,oBAAAA,MAAK,WAAW;AAAA,kBAClB,WAAW,MAAM,MAAM;AAKrB,oBAAAA,MAAK,OAAO,MAAM;AAAA,kBACpB;AAAA,gBACF;AAAA,cACF;AAAA,YACF,OAAO;AACL,2BAAa8C,eAAc,gBAAgB,cAAc,IAAI;AAAA,YAC/D;AAEA;AACE,kBAAI,iBAAiB,gBAAgB;AACnC,oBAAI,CAAC,wBAAwB,OAAO,UAAU,SAAS,KAAK,UAAU,MAAM,iCAAiC,CAACrD,gBAAe,KAAK,mBAAmB,IAAI,GAAG;AAC1J,oCAAkB,IAAI,IAAI;AAE1B,wBAAM,oIAA8I,IAAI;AAAA,gBAC1J;AAAA,cACF;AAAA,YACF;AAEA,mBAAO;AAAA,UACT;AACA,mBAAS,eAAe,MAAM,sBAAsB;AAClD,mBAAO,kCAAkC,oBAAoB,EAAE,eAAe,IAAI;AAAA,UACpF;AACA,mBAAS,qBAAqB,YAAY,KAAK,UAAU,sBAAsB;AAC7E,gBAAI,uBAAuB,kBAAkB,KAAK,QAAQ;AAE1D;AACE,8CAAgC,KAAK,QAAQ;AAAA,YAC/C;AAGA,gBAAI;AAEJ,oBAAQ,KAAK;AAAA,cACX,KAAK;AACH,0CAA0B,UAAU,UAAU;AAC9C,0CAA0B,SAAS,UAAU;AAC7C,wBAAQ;AACR;AAAA,cAEF,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAGH,0CAA0B,QAAQ,UAAU;AAC5C,wBAAQ;AACR;AAAA,cAEF,KAAK;AAAA,cACL,KAAK;AAGH,yBAAS,IAAI,GAAG,IAAI,gBAAgB,QAAQ,KAAK;AAC/C,4CAA0B,gBAAgB,CAAC,GAAG,UAAU;AAAA,gBAC1D;AAEA,wBAAQ;AACR;AAAA,cAEF,KAAK;AAGH,0CAA0B,SAAS,UAAU;AAC7C,wBAAQ;AACR;AAAA,cAEF,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAGH,0CAA0B,SAAS,UAAU;AAC7C,0CAA0B,QAAQ,UAAU;AAC5C,wBAAQ;AACR;AAAA,cAEF,KAAK;AAGH,0CAA0B,UAAU,UAAU;AAC9C,wBAAQ;AACR;AAAA,cAEF,KAAK;AACH,iCAAiB,YAAY,QAAQ;AACrC,wBAAQ,aAAa,YAAY,QAAQ;AAGzC,0CAA0B,WAAW,UAAU;AAC/C;AAAA,cAEF,KAAK;AACH,8BAAc,YAAY,QAAQ;AAClC,wBAAQ;AACR;AAAA,cAEF,KAAK;AACH,mCAAmB,YAAY,QAAQ;AACvC,wBAAQ,eAAe,YAAY,QAAQ;AAG3C,0CAA0B,WAAW,UAAU;AAC/C;AAAA,cAEF,KAAK;AACH,mCAAmB,YAAY,QAAQ;AACvC,wBAAQ,eAAe,YAAY,QAAQ;AAG3C,0CAA0B,WAAW,UAAU;AAC/C;AAAA,cAEF;AACE,wBAAQ;AAAA,YACZ;AAEA,6BAAiB,KAAK,KAAK;AAC3B,oCAAwB,KAAK,YAAY,sBAAsB,OAAO,oBAAoB;AAE1F,oBAAQ,KAAK;AAAA,cACX,KAAK;AAGH,sBAAM,UAAU;AAChB,iCAAiB,YAAY,UAAU,KAAK;AAC5C;AAAA,cAEF,KAAK;AAGH,sBAAM,UAAU;AAChB,mCAAmB,UAAU;AAC7B;AAAA,cAEF,KAAK;AACH,mCAAmB,YAAY,QAAQ;AACvC;AAAA,cAEF,KAAK;AACH,mCAAmB,YAAY,QAAQ;AACvC;AAAA,cAEF;AACE,oBAAI,OAAO,MAAM,YAAY,YAAY;AAEvC,mDAAiC,UAAU;AAAA,gBAC7C;AAEA;AAAA,YACJ;AAAA,UACF;AAEA,mBAAS,eAAe,YAAY,KAAK,cAAc,cAAc,sBAAsB;AACzF;AACE,8CAAgC,KAAK,YAAY;AAAA,YACnD;AAEA,gBAAI,gBAAgB;AACpB,gBAAI;AACJ,gBAAI;AAEJ,oBAAQ,KAAK;AAAA,cACX,KAAK;AACH,4BAAY,aAAa,YAAY,YAAY;AACjD,4BAAY,aAAa,YAAY,YAAY;AACjD,gCAAgB,CAAC;AACjB;AAAA,cAEF,KAAK;AACH,4BAAY,eAAe,YAAY,YAAY;AACnD,4BAAY,eAAe,YAAY,YAAY;AACnD,gCAAgB,CAAC;AACjB;AAAA,cAEF,KAAK;AACH,4BAAY,eAAe,YAAY,YAAY;AACnD,4BAAY,eAAe,YAAY,YAAY;AACnD,gCAAgB,CAAC;AACjB;AAAA,cAEF;AACE,4BAAY;AACZ,4BAAY;AAEZ,oBAAI,OAAO,UAAU,YAAY,cAAc,OAAO,UAAU,YAAY,YAAY;AAEtF,mDAAiC,UAAU;AAAA,gBAC7C;AAEA;AAAA,YACJ;AAEA,6BAAiB,KAAK,SAAS;AAC/B,gBAAI;AACJ,gBAAI;AACJ,gBAAI,eAAe;AAEnB,iBAAK,WAAW,WAAW;AACzB,kBAAI,UAAU,eAAe,OAAO,KAAK,CAAC,UAAU,eAAe,OAAO,KAAK,UAAU,OAAO,KAAK,MAAM;AACzG;AAAA,cACF;AAEA,kBAAI,YAAY,OAAO;AACrB,oBAAI,YAAY,UAAU,OAAO;AAEjC,qBAAK,aAAa,WAAW;AAC3B,sBAAI,UAAU,eAAe,SAAS,GAAG;AACvC,wBAAI,CAAC,cAAc;AACjB,qCAAe,CAAC;AAAA,oBAClB;AAEA,iCAAa,SAAS,IAAI;AAAA,kBAC5B;AAAA,gBACF;AAAA,cACF,WAAW,YAAY,8BAA8B,YAAY;AAAU;AAAA,uBAAW,YAAY,qCAAqC,YAAY;AAA4B;AAAA,uBAAW,YAAY;AAAW;AAAA,uBAAW,6BAA6B,eAAe,OAAO,GAAG;AAIhR,oBAAI,CAAC,eAAe;AAClB,kCAAgB,CAAC;AAAA,gBACnB;AAAA,cACF,OAAO;AAGL,iBAAC,gBAAgB,iBAAiB,CAAC,GAAG,KAAK,SAAS,IAAI;AAAA,cAC1D;AAAA,YACF;AAEA,iBAAK,WAAW,WAAW;AACzB,kBAAI,WAAW,UAAU,OAAO;AAChC,kBAAI,WAAW,aAAa,OAAO,UAAU,OAAO,IAAI;AAExD,kBAAI,CAAC,UAAU,eAAe,OAAO,KAAK,aAAa,YAAY,YAAY,QAAQ,YAAY,MAAM;AACvG;AAAA,cACF;AAEA,kBAAI,YAAY,OAAO;AACrB;AACE,sBAAI,UAAU;AAGZ,2BAAO,OAAO,QAAQ;AAAA,kBACxB;AAAA,gBACF;AAEA,oBAAI,UAAU;AAEZ,uBAAK,aAAa,UAAU;AAC1B,wBAAI,SAAS,eAAe,SAAS,MAAM,CAAC,YAAY,CAAC,SAAS,eAAe,SAAS,IAAI;AAC5F,0BAAI,CAAC,cAAc;AACjB,uCAAe,CAAC;AAAA,sBAClB;AAEA,mCAAa,SAAS,IAAI;AAAA,oBAC5B;AAAA,kBACF;AAGA,uBAAK,aAAa,UAAU;AAC1B,wBAAI,SAAS,eAAe,SAAS,KAAK,SAAS,SAAS,MAAM,SAAS,SAAS,GAAG;AACrF,0BAAI,CAAC,cAAc;AACjB,uCAAe,CAAC;AAAA,sBAClB;AAEA,mCAAa,SAAS,IAAI,SAAS,SAAS;AAAA,oBAC9C;AAAA,kBACF;AAAA,gBACF,OAAO;AAEL,sBAAI,CAAC,cAAc;AACjB,wBAAI,CAAC,eAAe;AAClB,sCAAgB,CAAC;AAAA,oBACnB;AAEA,kCAAc,KAAK,SAAS,YAAY;AAAA,kBAC1C;AAEA,iCAAe;AAAA,gBACjB;AAAA,cACF,WAAW,YAAY,4BAA4B;AACjD,oBAAI,WAAW,WAAW,SAAS,MAAM,IAAI;AAC7C,oBAAI,WAAW,WAAW,SAAS,MAAM,IAAI;AAE7C,oBAAI,YAAY,MAAM;AACpB,sBAAI,aAAa,UAAU;AACzB,qBAAC,gBAAgB,iBAAiB,CAAC,GAAG,KAAK,SAAS,QAAQ;AAAA,kBAC9D;AAAA,gBACF;AAAA,cACF,WAAW,YAAY,UAAU;AAC/B,oBAAI,OAAO,aAAa,YAAY,OAAO,aAAa,UAAU;AAChE,mBAAC,gBAAgB,iBAAiB,CAAC,GAAG,KAAK,SAAS,KAAK,QAAQ;AAAA,gBACnE;AAAA,cACF,WAAW,YAAY,qCAAqC,YAAY;AAA4B;AAAA,uBAAW,6BAA6B,eAAe,OAAO,GAAG;AACnK,oBAAI,YAAY,MAAM;AAEpB,sBAAK,OAAO,aAAa,YAAY;AACnC,gDAA4B,SAAS,QAAQ;AAAA,kBAC/C;AAEA,sBAAI,YAAY,YAAY;AAC1B,8CAA0B,UAAU,UAAU;AAAA,kBAChD;AAAA,gBACF;AAEA,oBAAI,CAAC,iBAAiB,aAAa,UAAU;AAI3C,kCAAgB,CAAC;AAAA,gBACnB;AAAA,cACF,OAAO;AAGL,iBAAC,gBAAgB,iBAAiB,CAAC,GAAG,KAAK,SAAS,QAAQ;AAAA,cAC9D;AAAA,YACF;AAEA,gBAAI,cAAc;AAChB;AACE,wDAAwC,cAAc,UAAU,KAAK,CAAC;AAAA,cACxE;AAEA,eAAC,gBAAgB,iBAAiB,CAAC,GAAG,KAAK,OAAO,YAAY;AAAA,YAChE;AAEA,mBAAO;AAAA,UACT;AAEA,mBAAS,iBAAiB,YAAY,eAAe,KAAK,cAAc,cAAc;AAIpF,gBAAI,QAAQ,WAAW,aAAa,SAAS,WAAW,aAAa,QAAQ,MAAM;AACjF,4BAAc,YAAY,YAAY;AAAA,YACxC;AAEA,gBAAI,wBAAwB,kBAAkB,KAAK,YAAY;AAC/D,gBAAI,uBAAuB,kBAAkB,KAAK,YAAY;AAE9D,gCAAoB,YAAY,eAAe,uBAAuB,oBAAoB;AAG1F,oBAAQ,KAAK;AAAA,cACX,KAAK;AAIH,8BAAc,YAAY,YAAY;AACtC;AAAA,cAEF,KAAK;AACH,gCAAgB,YAAY,YAAY;AACxC;AAAA,cAEF,KAAK;AAGH,kCAAkB,YAAY,YAAY;AAC1C;AAAA,YACJ;AAAA,UACF;AAEA,mBAAS,wBAAwB,UAAU;AACzC;AACE,kBAAI,iBAAiB,SAAS,YAAY;AAE1C,kBAAI,CAAC,sBAAsB,eAAe,cAAc,GAAG;AACzD,uBAAO;AAAA,cACT;AAEA,qBAAO,sBAAsB,cAAc,KAAK;AAAA,YAClD;AAAA,UACF;AAEA,mBAAS,uBAAuB,YAAY,KAAK,UAAU,iBAAiB,sBAAsB,kBAAkB,eAAe;AACjI,gBAAI;AACJ,gBAAI;AAEJ;AACE,qCAAuB,kBAAkB,KAAK,QAAQ;AACtD,8CAAgC,KAAK,QAAQ;AAAA,YAC/C;AAGA,oBAAQ,KAAK;AAAA,cACX,KAAK;AACH,0CAA0B,UAAU,UAAU;AAC9C,0CAA0B,SAAS,UAAU;AAC7C;AAAA,cAEF,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAGH,0CAA0B,QAAQ,UAAU;AAC5C;AAAA,cAEF,KAAK;AAAA,cACL,KAAK;AAGH,yBAAS,IAAI,GAAG,IAAI,gBAAgB,QAAQ,KAAK;AAC/C,4CAA0B,gBAAgB,CAAC,GAAG,UAAU;AAAA,gBAC1D;AAEA;AAAA,cAEF,KAAK;AAGH,0CAA0B,SAAS,UAAU;AAC7C;AAAA,cAEF,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAGH,0CAA0B,SAAS,UAAU;AAC7C,0CAA0B,QAAQ,UAAU;AAC5C;AAAA,cAEF,KAAK;AAGH,0CAA0B,UAAU,UAAU;AAC9C;AAAA,cAEF,KAAK;AACH,iCAAiB,YAAY,QAAQ;AAGrC,0CAA0B,WAAW,UAAU;AAC/C;AAAA,cAEF,KAAK;AACH,8BAAc,YAAY,QAAQ;AAClC;AAAA,cAEF,KAAK;AACH,mCAAmB,YAAY,QAAQ;AAGvC,0CAA0B,WAAW,UAAU;AAC/C;AAAA,cAEF,KAAK;AACH,mCAAmB,YAAY,QAAQ;AAGvC,0CAA0B,WAAW,UAAU;AAC/C;AAAA,YACJ;AAEA,6BAAiB,KAAK,QAAQ;AAE9B;AACE,oCAAsB,oBAAI,IAAI;AAC9B,kBAAI,aAAa,WAAW;AAE5B,uBAAS,KAAK,GAAG,KAAK,WAAW,QAAQ,MAAM;AAC7C,oBAAIE,QAAO,WAAW,EAAE,EAAE,KAAK,YAAY;AAE3C,wBAAQA,OAAM;AAAA,kBAGZ,KAAK;AACH;AAAA,kBAEF,KAAK;AACH;AAAA,kBAEF,KAAK;AACH;AAAA,kBAEF;AAGE,wCAAoB,IAAI,WAAW,EAAE,EAAE,IAAI;AAAA,gBAC/C;AAAA,cACF;AAAA,YACF;AAEA,gBAAI,gBAAgB;AAEpB,qBAAS,WAAW,UAAU;AAC5B,kBAAI,CAAC,SAAS,eAAe,OAAO,GAAG;AACrC;AAAA,cACF;AAEA,kBAAI,WAAW,SAAS,OAAO;AAE/B,kBAAI,YAAY,UAAU;AAUxB,oBAAI,OAAO,aAAa,UAAU;AAChC,sBAAI,WAAW,gBAAgB,UAAU;AACvC,wBAAI,SAAS,0BAA0B,MAAM,MAAM;AACjD,4CAAsB,WAAW,aAAa,UAAU,kBAAkB,aAAa;AAAA,oBACzF;AAEA,oCAAgB,CAAC,UAAU,QAAQ;AAAA,kBACrC;AAAA,gBACF,WAAW,OAAO,aAAa,UAAU;AACvC,sBAAI,WAAW,gBAAgB,KAAK,UAAU;AAC5C,wBAAI,SAAS,0BAA0B,MAAM,MAAM;AACjD,4CAAsB,WAAW,aAAa,UAAU,kBAAkB,aAAa;AAAA,oBACzF;AAEA,oCAAgB,CAAC,UAAU,KAAK,QAAQ;AAAA,kBAC1C;AAAA,gBACF;AAAA,cACF,WAAW,6BAA6B,eAAe,OAAO,GAAG;AAC/D,oBAAI,YAAY,MAAM;AACpB,sBAAK,OAAO,aAAa,YAAY;AACnC,gDAA4B,SAAS,QAAQ;AAAA,kBAC/C;AAEA,sBAAI,YAAY,YAAY;AAC1B,8CAA0B,UAAU,UAAU;AAAA,kBAChD;AAAA,gBACF;AAAA,cACF,WAAW,iBAAiB;AAAA,cAC5B,OAAO,yBAAyB,WAAW;AAEzC,oBAAI,cAAc;AAClB,oBAAI,eAAe,wBAAwB,qCAAqC,OAAO,gBAAgB,OAAO;AAE9G,oBAAI,SAAS,0BAA0B,MAAM;AAAM;AAAA,yBAAW,YAAY,qCAAqC,YAAY;AAAA;AAAA,gBAE3H,YAAY,WAAW,YAAY,aAAa,YAAY;AAAY;AAAA,yBAAW,YAAY,4BAA4B;AACzH,sBAAI,aAAa,WAAW;AAC5B,sBAAI,WAAW,WAAW,SAAS,MAAM,IAAI;AAE7C,sBAAI,YAAY,MAAM;AACpB,wBAAI,eAAe,cAAc,YAAY,QAAQ;AAErD,wBAAI,iBAAiB,YAAY;AAC/B,4CAAsB,SAAS,YAAY,YAAY;AAAA,oBACzD;AAAA,kBACF;AAAA,gBACF,WAAW,YAAY,OAAO;AAE5B,sCAAoB,OAAO,OAAO;AAElC,sBAAI,iCAAiC;AACnC,wBAAI,gBAAgB,+BAA+B,QAAQ;AAC3D,kCAAc,WAAW,aAAa,OAAO;AAE7C,wBAAI,kBAAkB,aAAa;AACjC,4CAAsB,SAAS,aAAa,aAAa;AAAA,oBAC3D;AAAA,kBACF;AAAA,gBACF,WAAW,wBAAwB,CAAC,oCAAoC;AAEtE,sCAAoB,OAAO,QAAQ,YAAY,CAAC;AAChD,gCAAc,qBAAqB,YAAY,SAAS,QAAQ;AAEhE,sBAAI,aAAa,aAAa;AAC5B,0CAAsB,SAAS,aAAa,QAAQ;AAAA,kBACtD;AAAA,gBACF,WAAW,CAAC,sBAAsB,SAAS,cAAc,oBAAoB,KAAK,CAAC,sBAAsB,SAAS,UAAU,cAAc,oBAAoB,GAAG;AAC/J,sBAAI,2BAA2B;AAE/B,sBAAI,iBAAiB,MAAM;AAEzB,wCAAoB,OAAO,aAAa,aAAa;AACrD,kCAAc,oBAAoB,YAAY,SAAS,UAAU,YAAY;AAAA,kBAC/E,OAAO;AACL,wBAAI,eAAe;AAEnB,wBAAI,iBAAiB,gBAAgB;AACnC,qCAAe,sBAAsB,GAAG;AAAA,oBAC1C;AAEA,wBAAI,iBAAiB,gBAAgB;AAEnC,0CAAoB,OAAO,QAAQ,YAAY,CAAC;AAAA,oBAClD,OAAO;AACL,0BAAI,eAAe,wBAAwB,OAAO;AAElD,0BAAI,iBAAiB,QAAQ,iBAAiB,SAAS;AAMrD,mDAA2B;AAE3B,4CAAoB,OAAO,YAAY;AAAA,sBACzC;AAGA,0CAAoB,OAAO,OAAO;AAAA,oBACpC;AAEA,kCAAc,qBAAqB,YAAY,SAAS,QAAQ;AAAA,kBAClE;AAEA,sBAAI,wBAAwB;AAE5B,sBAAI,CAAC,yBAAyB,aAAa,eAAe,CAAC,0BAA0B;AACnF,0CAAsB,SAAS,aAAa,QAAQ;AAAA,kBACtD;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAEA;AACE,kBAAI,eAAe;AACjB;AAAA;AAAA,kBACA,oBAAoB,OAAO,KAAK,SAAS,0BAA0B,MAAM;AAAA,kBAAM;AAE7E,yCAAuB,mBAAmB;AAAA,gBAC5C;AAAA,cACF;AAAA,YACF;AAEA,oBAAQ,KAAK;AAAA,cACX,KAAK;AAGH,sBAAM,UAAU;AAChB,iCAAiB,YAAY,UAAU,IAAI;AAC3C;AAAA,cAEF,KAAK;AAGH,sBAAM,UAAU;AAChB,mCAAmB,UAAU;AAC7B;AAAA,cAEF,KAAK;AAAA,cACL,KAAK;AAMH;AAAA,cAEF;AACE,oBAAI,OAAO,SAAS,YAAY,YAAY;AAE1C,mDAAiC,UAAU;AAAA,gBAC7C;AAEA;AAAA,YACJ;AAEA,mBAAO;AAAA,UACT;AACA,mBAAS,iBAAiB,UAAU,MAAM,kBAAkB;AAC1D,gBAAI,cAAc,SAAS,cAAc;AACzC,mBAAO;AAAA,UACT;AACA,mBAAS,gCAAgC,YAAY,OAAO;AAC1D;AACE,kBAAI,yBAAyB;AAC3B;AAAA,cACF;AAEA,wCAA0B;AAE1B,oBAAM,yDAAyD,MAAM,SAAS,YAAY,GAAG,WAAW,SAAS,YAAY,CAAC;AAAA,YAChI;AAAA,UACF;AACA,mBAAS,6BAA6B,YAAY,OAAO;AACvD;AACE,kBAAI,yBAAyB;AAC3B;AAAA,cACF;AAEA,wCAA0B;AAE1B,oBAAM,qEAAqE,MAAM,WAAW,WAAW,SAAS,YAAY,CAAC;AAAA,YAC/H;AAAA,UACF;AACA,mBAAS,+BAA+B,YAAY,KAAK,OAAO;AAC9D;AACE,kBAAI,yBAAyB;AAC3B;AAAA,cACF;AAEA,wCAA0B;AAE1B,oBAAM,4DAA4D,KAAK,WAAW,SAAS,YAAY,CAAC;AAAA,YAC1G;AAAA,UACF;AACA,mBAAS,4BAA4B,YAAY,MAAM;AACrD;AACE,kBAAI,SAAS,IAAI;AAKf;AAAA,cACF;AAEA,kBAAI,yBAAyB;AAC3B;AAAA,cACF;AAEA,wCAA0B;AAE1B,oBAAM,0EAA0E,MAAM,WAAW,SAAS,YAAY,CAAC;AAAA,YACzH;AAAA,UACF;AACA,mBAAS,yBAAyB,YAAY,KAAK,OAAO;AACxD,oBAAQ,KAAK;AAAA,cACX,KAAK;AACH,uCAAuB,YAAY,KAAK;AACxC;AAAA,cAEF,KAAK;AACH,yCAAyB,YAAY,KAAK;AAC1C;AAAA,cAEF,KAAK;AACH,yCAAyB,YAAY,KAAK;AAC1C;AAAA,YACJ;AAAA,UACF;AAEA,cAAI,qBAAqB,WAAY;AAAA,UAAC;AAEtC,cAAI,sBAAsB,WAAY;AAAA,UAAC;AAEvC;AAYE,gBAAI,cAAc,CAAC,WAAW,UAAU,QAAQ,WAAW,SAAS,QAAQ,YAAY,WAAW,cAAc,QAAQ,MAAM,UAAU,WAAW,UAAU,OAAO,YAAY,MAAM,WAAW,OAAO,OAAO,MAAM,MAAM,SAAS,YAAY,cAAc,UAAU,UAAU,QAAQ,SAAS,YAAY,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,QAAQ,UAAU,UAAU,MAAM,QAAQ,UAAU,OAAO,SAAS,WAAW,MAAM,QAAQ,WAAW,QAAQ,WAAW,QAAQ,YAAY,QAAQ,OAAO,WAAW,YAAY,YAAY,UAAU,MAAM,KAAK,SAAS,aAAa,OAAO,UAAU,WAAW,UAAU,UAAU,SAAS,WAAW,SAAS,SAAS,MAAM,YAAY,YAAY,SAAS,MAAM,SAAS,SAAS,MAAM,SAAS,MAAM,OAAO,KAAK;AAEtvB,gBAAI,cAAc;AAAA,cAAC;AAAA,cAAU;AAAA,cAAW;AAAA,cAAQ;AAAA,cAAS;AAAA,cAAM;AAAA,cAAM;AAAA,cAAW;AAAA,cAAU;AAAA;AAAA;AAAA;AAAA,cAG1F;AAAA,cAAiB;AAAA,cAAQ;AAAA,YAAO;AAEhC,gBAAI,kBAAkB,YAAY,OAAO,CAAC,QAAQ,CAAC;AAEnD,gBAAI,iBAAiB,CAAC,MAAM,MAAM,MAAM,UAAU,YAAY,KAAK,MAAM,IAAI;AAC7E,gBAAI,oBAAoB;AAAA,cACtB,SAAS;AAAA,cACT,SAAS;AAAA,cACT,aAAa;AAAA,cACb,kBAAkB;AAAA,cAClB,gBAAgB;AAAA,cAChB,mBAAmB;AAAA,cACnB,wBAAwB;AAAA,cACxB,sBAAsB;AAAA,YACxB;AAEA,kCAAsB,SAAU,SAAS,KAAK;AAC5C,kBAAI,eAAeM,QAAO,CAAC,GAAG,WAAW,iBAAiB;AAE1D,kBAAI,OAAO;AAAA,gBACT;AAAA,cACF;AAEA,kBAAI,YAAY,QAAQ,GAAG,MAAM,IAAI;AACnC,6BAAa,cAAc;AAC3B,6BAAa,mBAAmB;AAChC,6BAAa,iBAAiB;AAAA,cAChC;AAEA,kBAAI,gBAAgB,QAAQ,GAAG,MAAM,IAAI;AACvC,6BAAa,oBAAoB;AAAA,cACnC;AAIA,kBAAI,YAAY,QAAQ,GAAG,MAAM,MAAM,QAAQ,aAAa,QAAQ,SAAS,QAAQ,KAAK;AACxF,6BAAa,yBAAyB;AACtC,6BAAa,uBAAuB;AAAA,cACtC;AAEA,2BAAa,UAAU;AAEvB,kBAAI,QAAQ,QAAQ;AAClB,6BAAa,UAAU;AAAA,cACzB;AAEA,kBAAI,QAAQ,KAAK;AACf,6BAAa,cAAc;AAAA,cAC7B;AAEA,kBAAI,QAAQ,UAAU;AACpB,6BAAa,mBAAmB;AAAA,cAClC;AAEA,kBAAI,QAAQ,QAAQ;AAClB,6BAAa,iBAAiB;AAAA,cAChC;AAEA,kBAAI,QAAQ,KAAK;AACf,6BAAa,oBAAoB;AAAA,cACnC;AAEA,kBAAI,QAAQ,MAAM;AAChB,6BAAa,yBAAyB;AAAA,cACxC;AAEA,kBAAI,QAAQ,QAAQ,QAAQ,MAAM;AAChC,6BAAa,uBAAuB;AAAA,cACtC;AAEA,qBAAO;AAAA,YACT;AAMA,gBAAI,uBAAuB,SAAU,KAAK,WAAW;AAEnD,sBAAQ,WAAW;AAAA,gBAEjB,KAAK;AACH,yBAAO,QAAQ,YAAY,QAAQ,cAAc,QAAQ;AAAA,gBAE3D,KAAK;AACH,yBAAO,QAAQ,YAAY,QAAQ;AAAA,gBAIrC,KAAK;AACH,yBAAO,QAAQ;AAAA,gBAOjB,KAAK;AACH,yBAAO,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,WAAW,QAAQ,YAAY,QAAQ;AAAA,gBAGxF,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AACH,yBAAO,QAAQ,QAAQ,QAAQ,WAAW,QAAQ,YAAY,QAAQ;AAAA,gBAGxE,KAAK;AACH,yBAAO,QAAQ,SAAS,QAAQ;AAAA,gBAGlC,KAAK;AACH,yBAAO,QAAQ,aAAa,QAAQ,cAAc,QAAQ,WAAW,QAAQ,WAAW,QAAQ,WAAW,QAAQ,WAAW,QAAQ,YAAY,QAAQ;AAAA,gBAG5J,KAAK;AACH,yBAAO,QAAQ,UAAU,QAAQ,cAAc,QAAQ,aAAa,QAAQ,UAAU,QAAQ,UAAU,QAAQ,WAAW,QAAQ,cAAc,QAAQ,cAAc,QAAQ,WAAW,QAAQ,YAAY,QAAQ;AAAA,gBAGxN,KAAK;AACH,yBAAO,QAAQ,UAAU,QAAQ,UAAU,QAAQ;AAAA,gBAErD,KAAK;AACH,yBAAO,QAAQ;AAAA,gBAEjB,KAAK;AACH,yBAAO,QAAQ;AAAA,cACnB;AAKA,sBAAQ,KAAK;AAAA,gBACX,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AACH,yBAAO,cAAc,QAAQ,cAAc,QAAQ,cAAc,QAAQ,cAAc,QAAQ,cAAc,QAAQ,cAAc;AAAA,gBAErI,KAAK;AAAA,gBACL,KAAK;AACH,yBAAO,eAAe,QAAQ,SAAS,MAAM;AAAA,gBAE/C,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAKH,yBAAO,aAAa;AAAA,cACxB;AAEA,qBAAO;AAAA,YACT;AAMA,gBAAI,4BAA4B,SAAU,KAAK,cAAc;AAC3D,sBAAQ,KAAK;AAAA,gBACX,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AACH,yBAAO,aAAa;AAAA,gBAEtB,KAAK;AACH,yBAAO,aAAa,WAAW,aAAa;AAAA,gBAE9C,KAAK;AACH,yBAAO,aAAa;AAAA,gBAEtB,KAAK;AAAA,gBACL,KAAK;AACH,yBAAO,aAAa;AAAA,gBAEtB,KAAK;AACH,yBAAO,aAAa;AAAA,gBAEtB,KAAK;AAGH,yBAAO,aAAa;AAAA,gBAEtB,KAAK;AACH,yBAAO,aAAa;AAAA,cACxB;AAEA,qBAAO;AAAA,YACT;AAEA,gBAAI,YAAY,CAAC;AAEjB,iCAAqB,SAAU,UAAU,WAAW,cAAc;AAChE,6BAAe,gBAAgB;AAC/B,kBAAI,aAAa,aAAa;AAC9B,kBAAI,YAAY,cAAc,WAAW;AAEzC,kBAAI,aAAa,MAAM;AACrB,oBAAI,YAAY,MAAM;AACpB,wBAAM,uEAAuE;AAAA,gBAC/E;AAEA,2BAAW;AAAA,cACb;AAEA,kBAAI,gBAAgB,qBAAqB,UAAU,SAAS,IAAI,OAAO;AACvE,kBAAI,kBAAkB,gBAAgB,OAAO,0BAA0B,UAAU,YAAY;AAC7F,kBAAI,0BAA0B,iBAAiB;AAE/C,kBAAI,CAAC,yBAAyB;AAC5B;AAAA,cACF;AAEA,kBAAI,cAAc,wBAAwB;AAC1C,kBAAI,UAAU,CAAC,CAAC,gBAAgB,MAAM,WAAW,MAAM;AAEvD,kBAAI,UAAU,OAAO,GAAG;AACtB;AAAA,cACF;AAEA,wBAAU,OAAO,IAAI;AACrB,kBAAI,iBAAiB;AACrB,kBAAI,iBAAiB;AAErB,kBAAI,aAAa,SAAS;AACxB,oBAAI,KAAK,KAAK,SAAS,GAAG;AACxB,mCAAiB;AAAA,gBACnB,OAAO;AACL,mCAAiB;AACjB,mCAAiB;AAAA,gBACnB;AAAA,cACF,OAAO;AACL,iCAAiB,MAAM,WAAW;AAAA,cACpC;AAEA,kBAAI,eAAe;AACjB,oBAAI,OAAO;AAEX,oBAAI,gBAAgB,WAAW,aAAa,MAAM;AAChD,0BAAQ;AAAA,gBACV;AAEA,sBAAM,qEAAqE,gBAAgB,aAAa,gBAAgB,IAAI;AAAA,cAC9H,OAAO;AACL,sBAAM,sEAA2E,gBAAgB,WAAW;AAAA,cAC9G;AAAA,YACF;AAAA,UACF;AAEA,cAAI,+BAA+B;AACnC,cAAI,sBAAsB;AAC1B,cAAI,oBAAoB;AACxB,cAAI,8BAA8B;AAClC,cAAI,+BAA+B;AACnC,cAAI,UAAU;AACd,cAAI,gBAAgB;AACpB,cAAI,uBAAuB;AAC3B,mBAAS,mBAAmB,uBAAuB;AACjD,gBAAI;AACJ,gBAAI;AACJ,gBAAI,WAAW,sBAAsB;AAErC,oBAAQ,UAAU;AAAA,cAChB,KAAK;AAAA,cACL,KAAK,wBACH;AACE,uBAAO,aAAa,gBAAgB,cAAc;AAClD,oBAAI+B,QAAO,sBAAsB;AACjC,4BAAYA,QAAOA,MAAK,eAAe,kBAAkB,MAAM,EAAE;AACjE;AAAA,cACF;AAAA,cAEF,SACE;AACE,oBAAI,YAAY,aAAa,eAAe,sBAAsB,aAAa;AAC/E,oBAAI,eAAe,UAAU,gBAAgB;AAC7C,uBAAO,UAAU;AACjB,4BAAY,kBAAkB,cAAc,IAAI;AAChD;AAAA,cACF;AAAA,YACJ;AAEA;AACE,kBAAI,eAAe,KAAK,YAAY;AACpC,kBAAI,eAAe,oBAAoB,MAAM,YAAY;AACzD,qBAAO;AAAA,gBACL;AAAA,gBACA;AAAA,cACF;AAAA,YACF;AAAA,UACF;AACA,mBAAS,oBAAoB,mBAAmB,MAAM,uBAAuB;AAC3E;AACE,kBAAI,uBAAuB;AAC3B,kBAAI,YAAY,kBAAkB,qBAAqB,WAAW,IAAI;AACtE,kBAAI,eAAe,oBAAoB,qBAAqB,cAAc,IAAI;AAC9E,qBAAO;AAAA,gBACL;AAAA,gBACA;AAAA,cACF;AAAA,YACF;AAAA,UACF;AACA,mBAAS,kBAAkB,UAAU;AACnC,mBAAO;AAAA,UACT;AACA,mBAAS,iBAAiB,eAAe;AACvC,4BAAgB,UAAU;AAC1B,mCAAuB,wBAAwB;AAC/C,gBAAI,iBAAiB;AAErB,uBAAW,KAAK;AAChB,mBAAO;AAAA,UACT;AACA,mBAAS,iBAAiB,eAAe;AACvC,6BAAiB,oBAAoB;AACrC,uBAAW,aAAa;AACxB,4BAAgB;AAChB,mCAAuB;AAAA,UACzB;AACA,mBAAS,eAAe,MAAM,OAAO,uBAAuB,aAAa,wBAAwB;AAC/F,gBAAI;AAEJ;AAEE,kBAAI,iBAAiB;AACrB,iCAAmB,MAAM,MAAM,eAAe,YAAY;AAE1D,kBAAI,OAAO,MAAM,aAAa,YAAY,OAAO,MAAM,aAAa,UAAU;AAC5E,oBAAI,SAAS,KAAK,MAAM;AACxB,oBAAI,kBAAkB,oBAAoB,eAAe,cAAc,IAAI;AAC3E,mCAAmB,MAAM,QAAQ,eAAe;AAAA,cAClD;AAEA,gCAAkB,eAAe;AAAA,YACnC;AAEA,gBAAI,aAAaoB,eAAc,MAAM,OAAO,uBAAuB,eAAe;AAClF,8BAAkB,wBAAwB,UAAU;AACpD,6BAAiB,YAAY,KAAK;AAClC,mBAAO;AAAA,UACT;AACA,mBAAS,mBAAmB,gBAAgB,OAAO;AACjD,2BAAe,YAAY,KAAK;AAAA,UAClC;AACA,mBAAS,wBAAwB,YAAY,MAAM,OAAO,uBAAuB,aAAa;AAC5F,iCAAqB,YAAY,MAAM,OAAO,qBAAqB;AAEnE,oBAAQ,MAAM;AAAA,cACZ,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AACH,uBAAO,CAAC,CAAC,MAAM;AAAA,cAEjB,KAAK;AACH,uBAAO;AAAA,cAET;AACE,uBAAO;AAAA,YACX;AAAA,UACF;AACA,mBAAS,cAAc,YAAY,MAAM,UAAU,UAAU,uBAAuB,aAAa;AAC/F;AACE,kBAAI,iBAAiB;AAErB,kBAAI,OAAO,SAAS,aAAa,OAAO,SAAS,aAAa,OAAO,SAAS,aAAa,YAAY,OAAO,SAAS,aAAa,WAAW;AAC7I,oBAAI,SAAS,KAAK,SAAS;AAC3B,oBAAI,kBAAkB,oBAAoB,eAAe,cAAc,IAAI;AAC3E,mCAAmB,MAAM,QAAQ,eAAe;AAAA,cAClD;AAAA,YACF;AAEA,mBAAO,eAAe,YAAY,MAAM,UAAU,QAAQ;AAAA,UAC5D;AACA,mBAAS,qBAAqB,MAAM,OAAO;AACzC,mBAAO,SAAS,cAAc,SAAS,cAAc,OAAO,MAAM,aAAa,YAAY,OAAO,MAAM,aAAa,YAAY,OAAO,MAAM,4BAA4B,YAAY,MAAM,4BAA4B,QAAQ,MAAM,wBAAwB,UAAU;AAAA,UAC1Q;AACA,mBAAS,mBAAmB,MAAM,uBAAuB,aAAa,wBAAwB;AAC5F;AACE,kBAAI,iBAAiB;AACrB,iCAAmB,MAAM,MAAM,eAAe,YAAY;AAAA,YAC5D;AAEA,gBAAI,WAAW,eAAe,MAAM,qBAAqB;AACzD,8BAAkB,wBAAwB,QAAQ;AAClD,mBAAO;AAAA,UACT;AACA,mBAAS,0BAA0B;AACjC,gBAAI,eAAe,OAAO;AAE1B,gBAAI,iBAAiB,QAAW;AAC9B,qBAAO;AAAA,YACT;AAEA,mBAAO,iBAAiB,aAAa,IAAI;AAAA,UAC3C;AAIA,cAAI,kBAAkB,OAAO,eAAe,aAAa,aAAa;AACtE,cAAI,gBAAgB,OAAO,iBAAiB,aAAa,eAAe;AACxE,cAAI,YAAY;AAChB,cAAI,eAAe,OAAO,YAAY,aAAa,UAAU;AAC7D,cAAI,oBAAoB,OAAO,mBAAmB,aAAa,iBAAiB,OAAO,iBAAiB,cAAc,SAAU,UAAU;AACxI,mBAAO,aAAa,QAAQ,IAAI,EAAE,KAAK,QAAQ,EAAE,MAAM,qBAAqB;AAAA,UAC9E,IAAI;AAEJ,mBAAS,sBAAsBxB,QAAO;AACpC,uBAAW,WAAY;AACrB,oBAAMA;AAAA,YACR,CAAC;AAAA,UACH;AACA,mBAAS,YAAY,YAAY,MAAM,UAAU,wBAAwB;AAOvE,oBAAQ,MAAM;AAAA,cACZ,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AACH,oBAAI,SAAS,WAAW;AACtB,6BAAW,MAAM;AAAA,gBACnB;AAEA;AAAA,cAEF,KAAK,OACH;AACE,oBAAI,SAAS,KAAK;AAChB,6BAAW,MAAM,SAAS;AAAA,gBAC5B;AAEA;AAAA,cACF;AAAA,YACJ;AAAA,UACF;AACA,mBAAS,aAAa,YAAY,eAAe,MAAM,UAAU,UAAU,wBAAwB;AAEjG,6BAAiB,YAAY,eAAe,MAAM,UAAU,QAAQ;AAGpE,6BAAiB,YAAY,QAAQ;AAAA,UACvC;AACA,mBAAS,iBAAiB,YAAY;AACpC,2BAAe,YAAY,EAAE;AAAA,UAC/B;AACA,mBAAS,iBAAiB,cAAc,SAAS,SAAS;AACxD,yBAAa,YAAY;AAAA,UAC3B;AACA,mBAAS,YAAY,gBAAgB,OAAO;AAC1C,2BAAe,YAAY,KAAK;AAAA,UAClC;AACA,mBAAS,uBAAuB,WAAW,OAAO;AAChD,gBAAI;AAEJ,gBAAI,UAAU,aAAa,cAAc;AACvC,2BAAa,UAAU;AACvB,yBAAW,aAAa,OAAO,SAAS;AAAA,YAC1C,OAAO;AACL,2BAAa;AACb,yBAAW,YAAY,KAAK;AAAA,YAC9B;AAUA,gBAAI,qBAAqB,UAAU;AAEnC,iBAAK,uBAAuB,QAAQ,uBAAuB,WAAc,WAAW,YAAY,MAAM;AAEpG,+CAAiC,UAAU;AAAA,YAC7C;AAAA,UACF;AACA,mBAAS,aAAa,gBAAgB,OAAO,aAAa;AACxD,2BAAe,aAAa,OAAO,WAAW;AAAA,UAChD;AACA,mBAAS,wBAAwB,WAAW,OAAO,aAAa;AAC9D,gBAAI,UAAU,aAAa,cAAc;AACvC,wBAAU,WAAW,aAAa,OAAO,WAAW;AAAA,YACtD,OAAO;AACL,wBAAU,aAAa,OAAO,WAAW;AAAA,YAC3C;AAAA,UACF;AAEA,mBAAS,YAAY,gBAAgB,OAAO;AAC1C,2BAAe,YAAY,KAAK;AAAA,UAClC;AACA,mBAAS,yBAAyB,WAAW,OAAO;AAClD,gBAAI,UAAU,aAAa,cAAc;AACvC,wBAAU,WAAW,YAAY,KAAK;AAAA,YACxC,OAAO;AACL,wBAAU,YAAY,KAAK;AAAA,YAC7B;AAAA,UACF;AACA,mBAAS,sBAAsB,gBAAgB,kBAAkB;AAC/D,gBAAI5B,QAAO;AAIX,gBAAI,QAAQ;AAEZ,eAAG;AACD,kBAAI,WAAWA,MAAK;AACpB,6BAAe,YAAYA,KAAI;AAE/B,kBAAI,YAAY,SAAS,aAAa,cAAc;AAClD,oBAAIqD,QAAO,SAAS;AAEpB,oBAAIA,UAAS,mBAAmB;AAC9B,sBAAI,UAAU,GAAG;AACf,mCAAe,YAAY,QAAQ;AAEnC,qCAAiB,gBAAgB;AACjC;AAAA,kBACF,OAAO;AACL;AAAA,kBACF;AAAA,gBACF,WAAWA,UAAS,uBAAuBA,UAAS,+BAA+BA,UAAS,8BAA8B;AACxH;AAAA,gBACF;AAAA,cACF;AAEA,cAAArD,QAAO;AAAA,YACT,SAASA;AAIT,6BAAiB,gBAAgB;AAAA,UACnC;AACA,mBAAS,mCAAmC,WAAW,kBAAkB;AACvE,gBAAI,UAAU,aAAa,cAAc;AACvC,oCAAsB,UAAU,YAAY,gBAAgB;AAAA,YAC9D,WAAW,UAAU,aAAa,cAAc;AAC9C,oCAAsB,WAAW,gBAAgB;AAAA,YACnD;AAGA,6BAAiB,SAAS;AAAA,UAC5B;AACA,mBAAS,aAAa,UAAU;AAG9B,uBAAW;AACX,gBAAIuB,SAAQ,SAAS;AAErB,gBAAI,OAAOA,OAAM,gBAAgB,YAAY;AAC3C,cAAAA,OAAM,YAAY,WAAW,QAAQ,WAAW;AAAA,YAClD,OAAO;AACL,cAAAA,OAAM,UAAU;AAAA,YAClB;AAAA,UACF;AACA,mBAAS,iBAAiB,cAAc;AACtC,yBAAa,YAAY;AAAA,UAC3B;AACA,mBAAS,eAAe,UAAU,OAAO;AACvC,uBAAW;AACX,gBAAI,YAAY,MAAM,OAAO;AAC7B,gBAAI,UAAU,cAAc,UAAa,cAAc,QAAQ,UAAU,eAAe,SAAS,IAAI,UAAU,UAAU;AACzH,qBAAS,MAAM,UAAU,oBAAoB,WAAW,OAAO;AAAA,UACjE;AACA,mBAAS,mBAAmB,cAAc,MAAM;AAC9C,yBAAa,YAAY;AAAA,UAC3B;AACA,mBAAS,eAAe,WAAW;AACjC,gBAAI,UAAU,aAAa,cAAc;AACvC,wBAAU,cAAc;AAAA,YAC1B,WAAW,UAAU,aAAa,eAAe;AAC/C,kBAAI,UAAU,iBAAiB;AAC7B,0BAAU,YAAY,UAAU,eAAe;AAAA,cACjD;AAAA,YACF;AAAA,UACF;AACA,mBAAS,mBAAmB,UAAU,MAAM,OAAO;AACjD,gBAAI,SAAS,aAAa,gBAAgB,KAAK,YAAY,MAAM,SAAS,SAAS,YAAY,GAAG;AAChG,qBAAO;AAAA,YACT;AAGA,mBAAO;AAAA,UACT;AACA,mBAAS,uBAAuB,UAAU,MAAM;AAC9C,gBAAI,SAAS,MAAM,SAAS,aAAa,WAAW;AAElD,qBAAO;AAAA,YACT;AAGA,mBAAO;AAAA,UACT;AACA,mBAAS,2BAA2B,UAAU;AAC5C,gBAAI,SAAS,aAAa,cAAc;AAEtC,qBAAO;AAAA,YACT;AAGA,mBAAO;AAAA,UACT;AACA,mBAAS,0BAA0B,UAAU;AAC3C,mBAAO,SAAS,SAAS;AAAA,UAC3B;AACA,mBAAS,2BAA2B,UAAU;AAC5C,mBAAO,SAAS,SAAS;AAAA,UAC3B;AACA,mBAAS,wCAAwC,UAAU;AACzD,gBAAI,UAAU,SAAS,eAAe,SAAS,YAAY;AAC3D,gBAAI,QAAQ,SAAS;AAErB,gBAAI,SAAS;AACX,uBAAS,QAAQ;AAEjB;AACE,0BAAU,QAAQ;AAClB,wBAAQ,QAAQ;AAAA,cAClB;AAAA,YACF;AAEA;AACE,qBAAO;AAAA,gBACL;AAAA,gBACA;AAAA,gBACA;AAAA,cACF;AAAA,YACF;AAAA,UAYF;AACA,mBAAS,8BAA8B,UAAU,UAAU;AACzD,qBAAS,cAAc;AAAA,UACzB;AAEA,mBAAS,kBAAkBvB,OAAM;AAE/B,mBAAOA,SAAQ,MAAMA,QAAOA,MAAK,aAAa;AAC5C,kBAAI,WAAWA,MAAK;AAEpB,kBAAI,aAAa,gBAAgB,aAAa,WAAW;AACvD;AAAA,cACF;AAEA,kBAAI,aAAa,cAAc;AAC7B,oBAAI,WAAWA,MAAK;AAEpB,oBAAI,aAAa,uBAAuB,aAAa,gCAAgC,aAAa,6BAA6B;AAC7H;AAAA,gBACF;AAEA,oBAAI,aAAa,mBAAmB;AAClC,yBAAO;AAAA,gBACT;AAAA,cACF;AAAA,YACF;AAEA,mBAAOA;AAAA,UACT;AAEA,mBAAS,yBAAyB,UAAU;AAC1C,mBAAO,kBAAkB,SAAS,WAAW;AAAA,UAC/C;AACA,mBAAS,wBAAwB,gBAAgB;AAC/C,mBAAO,kBAAkB,eAAe,UAAU;AAAA,UACpD;AACA,mBAAS,uCAAuC,iBAAiB;AAC/D,mBAAO,kBAAkB,gBAAgB,UAAU;AAAA,UACrD;AACA,mBAAS,8CAA8C,gBAAgB;AACrE,mBAAO,kBAAkB,eAAe,WAAW;AAAA,UACrD;AACA,mBAAS,gBAAgB,UAAU,MAAM,OAAO,uBAAuB,aAAa,wBAAwB,eAAe;AACzH,8BAAkB,wBAAwB,QAAQ;AAGlD,6BAAiB,UAAU,KAAK;AAChC,gBAAI;AAEJ;AACE,kBAAI,iBAAiB;AACrB,gCAAkB,eAAe;AAAA,YACnC;AAIA,gBAAI,oBAAoB,uBAAuB,OAAO,oBAAoB;AAC1E,mBAAO,uBAAuB,UAAU,MAAM,OAAO,iBAAiB,uBAAuB,kBAAkB,aAAa;AAAA,UAC9H;AACA,mBAAS,oBAAoB,cAAc,MAAM,wBAAwB,eAAe;AACtF,8BAAkB,wBAAwB,YAAY;AAGtD,gBAAI,oBAAoB,uBAAuB,OAAO,oBAAoB;AAC1E,mBAAO,iBAAiB,cAAc,IAAI;AAAA,UAC5C;AACA,mBAAS,wBAAwB,kBAAkB,wBAAwB;AACzE,8BAAkB,wBAAwB,gBAAgB;AAAA,UAC5D;AACA,mBAAS,+CAA+C,kBAAkB;AACxE,gBAAIA,QAAO,iBAAiB;AAI5B,gBAAI,QAAQ;AAEZ,mBAAOA,OAAM;AACX,kBAAIA,MAAK,aAAa,cAAc;AAClC,oBAAIqD,QAAOrD,MAAK;AAEhB,oBAAIqD,UAAS,mBAAmB;AAC9B,sBAAI,UAAU,GAAG;AACf,2BAAO,yBAAyBrD,KAAI;AAAA,kBACtC,OAAO;AACL;AAAA,kBACF;AAAA,gBACF,WAAWqD,UAAS,uBAAuBA,UAAS,gCAAgCA,UAAS,6BAA6B;AACxH;AAAA,gBACF;AAAA,cACF;AAEA,cAAArD,QAAOA,MAAK;AAAA,YACd;AAGA,mBAAO;AAAA,UACT;AAIA,mBAAS,0BAA0B,gBAAgB;AACjD,gBAAIA,QAAO,eAAe;AAI1B,gBAAI,QAAQ;AAEZ,mBAAOA,OAAM;AACX,kBAAIA,MAAK,aAAa,cAAc;AAClC,oBAAIqD,QAAOrD,MAAK;AAEhB,oBAAIqD,UAAS,uBAAuBA,UAAS,gCAAgCA,UAAS,6BAA6B;AACjH,sBAAI,UAAU,GAAG;AACf,2BAAOrD;AAAA,kBACT,OAAO;AACL;AAAA,kBACF;AAAA,gBACF,WAAWqD,UAAS,mBAAmB;AACrC;AAAA,gBACF;AAAA,cACF;AAEA,cAAArD,QAAOA,MAAK;AAAA,YACd;AAEA,mBAAO;AAAA,UACT;AACA,mBAAS,wBAAwB,WAAW;AAE1C,6BAAiB,SAAS;AAAA,UAC5B;AACA,mBAAS,+BAA+B,kBAAkB;AAExD,6BAAiB,gBAAgB;AAAA,UACnC;AACA,mBAAS,oCAAoC,YAAY;AACvD,mBAAO,eAAe,UAAU,eAAe;AAAA,UACjD;AACA,mBAAS,yCAAyC,iBAAiB,cAAc,MAAM,kBAAkB;AACvG,gBAAI,gBAAgB;AACpB,kCAAsB,aAAa,WAAW,MAAM,kBAAkB,aAAa;AAAA,UACrF;AACA,mBAAS,gCAAgC,YAAY,aAAa,gBAAgB,cAAc,MAAM,kBAAkB;AACtH,gBAAI,YAAY,4BAA4B,MAAM,MAAM;AACtD,kBAAI,gBAAgB;AACpB,oCAAsB,aAAa,WAAW,MAAM,kBAAkB,aAAa;AAAA,YACrF;AAAA,UACF;AACA,mBAAS,qCAAqC,iBAAiB,UAAU;AACvE;AACE,kBAAI,SAAS,aAAa,cAAc;AACtC,gDAAgC,iBAAiB,QAAQ;AAAA,cAC3D,WAAW,SAAS,aAAa;AAAc;AAAA,mBAAO;AACpD,6CAA6B,iBAAiB,QAAQ;AAAA,cACxD;AAAA,YACF;AAAA,UACF;AACA,mBAAS,4CAA4C,gBAAgB,UAAU;AAC7E;AAEE,kBAAI,aAAa,eAAe;AAEhC,kBAAI,eAAe,MAAM;AACvB,oBAAI,SAAS,aAAa,cAAc;AACtC,kDAAgC,YAAY,QAAQ;AAAA,gBACtD,WAAW,SAAS,aAAa;AAAc;AAAA,qBAAO;AACpD,+CAA6B,YAAY,QAAQ;AAAA,gBACnD;AAAA,cACF;AAAA,YACF;AAAA,UACF;AACA,mBAAS,sBAAsB,YAAY,aAAa,gBAAgB,UAAU,kBAAkB;AAClG;AACE,kBAAI,oBAAoB,YAAY,4BAA4B,MAAM,MAAM;AAC1E,oBAAI,SAAS,aAAa,cAAc;AACtC,kDAAgC,gBAAgB,QAAQ;AAAA,gBAC1D,WAAW,SAAS,aAAa;AAAc;AAAA,qBAAO;AACpD,+CAA6B,gBAAgB,QAAQ;AAAA,gBACvD;AAAA,cACF;AAAA,YACF;AAAA,UACF;AACA,mBAAS,4CAA4C,iBAAiB,MAAM,OAAO;AACjF;AACE,6CAA+B,iBAAiB,IAAI;AAAA,YACtD;AAAA,UACF;AACA,mBAAS,gDAAgD,iBAAiB,MAAM;AAC9E;AACE,0CAA4B,iBAAiB,IAAI;AAAA,YACnD;AAAA,UACF;AACA,mBAAS,mDAAmD,gBAAgB,MAAM,OAAO;AACvF;AAEE,kBAAI,aAAa,eAAe;AAChC,kBAAI,eAAe;AAAM,+CAA+B,YAAY,IAAI;AAAA,YAC1E;AAAA,UACF;AACA,mBAAS,uDAAuD,gBAAgB,MAAM;AACpF;AAEE,kBAAI,aAAa,eAAe;AAChC,kBAAI,eAAe;AAAM,4CAA4B,YAAY,IAAI;AAAA,YACvE;AAAA,UACF;AACA,mBAAS,6BAA6B,YAAY,aAAa,gBAAgB,MAAM,OAAO,kBAAkB;AAC5G;AACE,kBAAI,oBAAoB,YAAY,4BAA4B,MAAM,MAAM;AAC1E,+CAA+B,gBAAgB,IAAI;AAAA,cACrD;AAAA,YACF;AAAA,UACF;AACA,mBAAS,iCAAiC,YAAY,aAAa,gBAAgB,MAAM,kBAAkB;AACzG;AACE,kBAAI,oBAAoB,YAAY,4BAA4B,MAAM,MAAM;AAC1E,4CAA4B,gBAAgB,IAAI;AAAA,cAClD;AAAA,YACF;AAAA,UACF;AACA,mBAAS,wBAAwB,iBAAiB;AAChD;AAGE,oBAAM,iGAAiG,gBAAgB,SAAS,YAAY,CAAC;AAAA,YAC/I;AAAA,UACF;AACA,mBAAS,mBAAmB,gBAAgB;AAC1C,uCAA2B,cAAc;AAAA,UAC3C;AAEA,cAAI,YAAY,KAAK,OAAO,EAAE,SAAS,EAAE,EAAE,MAAM,CAAC;AAClD,cAAI,sBAAsB,kBAAkB;AAC5C,cAAI,mBAAmB,kBAAkB;AACzC,cAAI,+BAA+B,sBAAsB;AACzD,cAAI,2BAA2B,mBAAmB;AAClD,cAAI,mCAAmC,sBAAsB;AAC7D,cAAI,6BAA6B,oBAAoB;AACrD,mBAAS,sBAAsBA,OAAM;AAGnC,mBAAOA,MAAK,mBAAmB;AAC/B,mBAAOA,MAAK,gBAAgB;AAC5B,mBAAOA,MAAK,wBAAwB;AACpC,mBAAOA,MAAK,gCAAgC;AAC5C,mBAAOA,MAAK,0BAA0B;AAAA,UACxC;AACA,mBAAS,kBAAkB,UAAUA,OAAM;AACzC,YAAAA,MAAK,mBAAmB,IAAI;AAAA,UAC9B;AACA,mBAAS,oBAAoB,UAAUA,OAAM;AAC3C,YAAAA,MAAK,4BAA4B,IAAI;AAAA,UACvC;AACA,mBAAS,sBAAsBA,OAAM;AACnC,YAAAA,MAAK,4BAA4B,IAAI;AAAA,UACvC;AACA,mBAAS,wBAAwBA,OAAM;AACrC,mBAAO,CAAC,CAACA,MAAK,4BAA4B;AAAA,UAC5C;AAQA,mBAAS,2BAA2B,YAAY;AAC9C,gBAAI,aAAa,WAAW,mBAAmB;AAE/C,gBAAI,YAAY;AAEd,qBAAO;AAAA,YACT;AAIA,gBAAI,aAAa,WAAW;AAE5B,mBAAO,YAAY;AASjB,2BAAa,WAAW,4BAA4B,KAAK,WAAW,mBAAmB;AAEvF,kBAAI,YAAY;AAcd,oBAAI,YAAY,WAAW;AAE3B,oBAAI,WAAW,UAAU,QAAQ,cAAc,QAAQ,UAAU,UAAU,MAAM;AAG/E,sBAAI,mBAAmB,0BAA0B,UAAU;AAE3D,yBAAO,qBAAqB,MAAM;AAShC,wBAAI,qBAAqB,iBAAiB,mBAAmB;AAE7D,wBAAI,oBAAoB;AACtB,6BAAO;AAAA,oBACT;AAMA,uCAAmB,0BAA0B,gBAAgB;AAAA,kBAG/D;AAAA,gBACF;AAEA,uBAAO;AAAA,cACT;AAEA,2BAAa;AACb,2BAAa,WAAW;AAAA,YAC1B;AAEA,mBAAO;AAAA,UACT;AAMA,mBAAS,oBAAoBA,OAAM;AACjC,gBAAI,OAAOA,MAAK,mBAAmB,KAAKA,MAAK,4BAA4B;AAEzE,gBAAI,MAAM;AACR,kBAAI,KAAK,QAAQ,iBAAiB,KAAK,QAAQ,YAAY,KAAK,QAAQ,qBAAqB,KAAK,QAAQ,UAAU;AAClH,uBAAO;AAAA,cACT,OAAO;AACL,uBAAO;AAAA,cACT;AAAA,YACF;AAEA,mBAAO;AAAA,UACT;AAMA,mBAAS,oBAAoB,MAAM;AACjC,gBAAI,KAAK,QAAQ,iBAAiB,KAAK,QAAQ,UAAU;AAGvD,qBAAO,KAAK;AAAA,YACd;AAIA,kBAAM,IAAI,MAAM,wCAAwC;AAAA,UAC1D;AACA,mBAAS,6BAA6BA,OAAM;AAC1C,mBAAOA,MAAK,gBAAgB,KAAK;AAAA,UACnC;AACA,mBAAS,iBAAiBA,OAAM,OAAO;AACrC,YAAAA,MAAK,gBAAgB,IAAI;AAAA,UAC3B;AACA,mBAAS,oBAAoBA,OAAM;AACjC,gBAAI,qBAAqBA,MAAK,wBAAwB;AAEtD,gBAAI,uBAAuB,QAAW;AACpC,mCAAqBA,MAAK,wBAAwB,IAAI,oBAAI,IAAI;AAAA,YAChE;AAEA,mBAAO;AAAA,UACT;AAEA,cAAI,qBAAqB,CAAC;AAC1B,cAAI,2BAA2B,qBAAqB;AAEpD,mBAAS,8BAA8B,SAAS;AAC9C;AACE,kBAAI,SAAS;AACX,oBAAI,QAAQ,QAAQ;AACpB,oBAAI,QAAQ,qCAAqC,QAAQ,MAAM,QAAQ,SAAS,QAAQ,MAAM,OAAO,IAAI;AACzG,yCAAyB,mBAAmB,KAAK;AAAA,cACnD,OAAO;AACL,yCAAyB,mBAAmB,IAAI;AAAA,cAClD;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,eAAe,WAAW,QAAQsD,WAAU,eAAe,SAAS;AAC3E;AAEE,kBAAIC,OAAM,SAAS,KAAK,KAAK9D,eAAc;AAE3C,uBAAS,gBAAgB,WAAW;AAClC,oBAAI8D,KAAI,WAAW,YAAY,GAAG;AAChC,sBAAI,UAAU;AAId,sBAAI;AAGF,wBAAI,OAAO,UAAU,YAAY,MAAM,YAAY;AAEjD,0BAAI,MAAM,OAAO,iBAAiB,iBAAiB,OAAOD,YAAW,YAAY,eAAe,+FAAoG,OAAO,UAAU,YAAY,IAAI,iGAAsG;AAC3U,0BAAI,OAAO;AACX,4BAAM;AAAA,oBACR;AAEA,8BAAU,UAAU,YAAY,EAAE,QAAQ,cAAc,eAAeA,WAAU,MAAM,8CAA8C;AAAA,kBACvI,SAAS,IAAI;AACX,8BAAU;AAAA,kBACZ;AAEA,sBAAI,WAAW,EAAE,mBAAmB,QAAQ;AAC1C,kDAA8B,OAAO;AAErC,0BAAM,4RAAqT,iBAAiB,eAAeA,WAAU,cAAc,OAAO,OAAO;AAEjY,kDAA8B,IAAI;AAAA,kBACpC;AAEA,sBAAI,mBAAmB,SAAS,EAAE,QAAQ,WAAW,qBAAqB;AAGxE,uCAAmB,QAAQ,OAAO,IAAI;AACtC,kDAA8B,OAAO;AAErC,0BAAM,sBAAsBA,WAAU,QAAQ,OAAO;AAErD,kDAA8B,IAAI;AAAA,kBACpC;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAEA,cAAI,aAAa,CAAC;AAClB,cAAI;AAEJ;AACE,yBAAa,CAAC;AAAA,UAChB;AAEA,cAAIpB,SAAQ;AAEZ,mBAAS,aAAa,cAAc;AAClC,mBAAO;AAAA,cACL,SAAS;AAAA,YACX;AAAA,UACF;AAEA,mBAAS,IAAIsB,SAAQ,OAAO;AAC1B,gBAAItB,SAAQ,GAAG;AACb;AACE,sBAAM,iBAAiB;AAAA,cACzB;AAEA;AAAA,YACF;AAEA;AACE,kBAAI,UAAU,WAAWA,MAAK,GAAG;AAC/B,sBAAM,0BAA0B;AAAA,cAClC;AAAA,YACF;AAEA,YAAAsB,QAAO,UAAU,WAAWtB,MAAK;AACjC,uBAAWA,MAAK,IAAI;AAEpB;AACE,yBAAWA,MAAK,IAAI;AAAA,YACtB;AAEA,YAAAA;AAAA,UACF;AAEA,mBAASuB,MAAKD,SAAQ,OAAO,OAAO;AAClC,YAAAtB;AACA,uBAAWA,MAAK,IAAIsB,QAAO;AAE3B;AACE,yBAAWtB,MAAK,IAAI;AAAA,YACtB;AAEA,YAAAsB,QAAO,UAAU;AAAA,UACnB;AAEA,cAAI;AAEJ;AACE,gDAAoC,CAAC;AAAA,UACvC;AAEA,cAAI,qBAAqB,CAAC;AAE1B;AACE,mBAAO,OAAO,kBAAkB;AAAA,UAClC;AAGA,cAAI,qBAAqB,aAAa,kBAAkB;AAExD,cAAI,4BAA4B,aAAa,KAAK;AAIlD,cAAI,kBAAkB;AAEtB,mBAAS,mBAAmB/C,iBAAgBF,YAAW,6BAA6B;AAClF;AACE,kBAAI,+BAA+B,kBAAkBA,UAAS,GAAG;AAK/D,uBAAO;AAAA,cACT;AAEA,qBAAO,mBAAmB;AAAA,YAC5B;AAAA,UACF;AAEA,mBAAS,aAAaE,iBAAgB,iBAAiB,eAAe;AACpE;AACE,kBAAI,WAAWA,gBAAe;AAC9B,uBAAS,8CAA8C;AACvD,uBAAS,4CAA4C;AAAA,YACvD;AAAA,UACF;AAEA,mBAAS,iBAAiBA,iBAAgB,iBAAiB;AACzD;AACE,kBAAI,OAAOA,gBAAe;AAC1B,kBAAI,eAAe,KAAK;AAExB,kBAAI,CAAC,cAAc;AACjB,uBAAO;AAAA,cACT;AAKA,kBAAI,WAAWA,gBAAe;AAE9B,kBAAI,YAAY,SAAS,gDAAgD,iBAAiB;AACxF,uBAAO,SAAS;AAAA,cAClB;AAEA,kBAAI,UAAU,CAAC;AAEf,uBAAS,OAAO,cAAc;AAC5B,wBAAQ,GAAG,IAAI,gBAAgB,GAAG;AAAA,cACpC;AAEA;AACE,oBAAId,QAAO,0BAA0Bc,eAAc,KAAK;AACxD,+BAAe,cAAc,SAAS,WAAWd,KAAI;AAAA,cACvD;AAIA,kBAAI,UAAU;AACZ,6BAAac,iBAAgB,iBAAiB,OAAO;AAAA,cACvD;AAEA,qBAAO;AAAA,YACT;AAAA,UACF;AAEA,mBAAS,oBAAoB;AAC3B;AACE,qBAAO,0BAA0B;AAAA,YACnC;AAAA,UACF;AAEA,mBAAS,kBAAkB,MAAM;AAC/B;AACE,kBAAI,oBAAoB,KAAK;AAC7B,qBAAO,sBAAsB,QAAQ,sBAAsB;AAAA,YAC7D;AAAA,UACF;AAEA,mBAAS,WAAW,OAAO;AACzB;AACE,kBAAI,2BAA2B,KAAK;AACpC,kBAAI,oBAAoB,KAAK;AAAA,YAC/B;AAAA,UACF;AAEA,mBAAS,yBAAyB,OAAO;AACvC;AACE,kBAAI,2BAA2B,KAAK;AACpC,kBAAI,oBAAoB,KAAK;AAAA,YAC/B;AAAA,UACF;AAEA,mBAAS,0BAA0B,OAAO,SAAS,WAAW;AAC5D;AACE,kBAAI,mBAAmB,YAAY,oBAAoB;AACrD,sBAAM,IAAI,MAAM,yGAA8G;AAAA,cAChI;AAEA,cAAAgD,MAAK,oBAAoB,SAAS,KAAK;AACvC,cAAAA,MAAK,2BAA2B,WAAW,KAAK;AAAA,YAClD;AAAA,UACF;AAEA,mBAAS,oBAAoB,OAAO,MAAM,eAAe;AACvD;AACE,kBAAI,WAAW,MAAM;AACrB,kBAAI,oBAAoB,KAAK;AAG7B,kBAAI,OAAO,SAAS,oBAAoB,YAAY;AAClD;AACE,sBAAI,gBAAgB,0BAA0B,KAAK,KAAK;AAExD,sBAAI,CAAC,kCAAkC,aAAa,GAAG;AACrD,sDAAkC,aAAa,IAAI;AAEnD,0BAAM,kLAA4L,eAAe,aAAa;AAAA,kBAChO;AAAA,gBACF;AAEA,uBAAO;AAAA,cACT;AAEA,kBAAI,eAAe,SAAS,gBAAgB;AAE5C,uBAAS,cAAc,cAAc;AACnC,oBAAI,EAAE,cAAc,oBAAoB;AACtC,wBAAM,IAAI,OAAO,0BAA0B,KAAK,KAAK,aAAa,8BAA+B,aAAa,wCAAyC;AAAA,gBACzJ;AAAA,cACF;AAEA;AACE,oBAAI9D,QAAO,0BAA0B,KAAK,KAAK;AAC/C,+BAAe,mBAAmB,cAAc,iBAAiBA,KAAI;AAAA,cACvE;AAEA,qBAAOM,QAAO,CAAC,GAAG,eAAe,YAAY;AAAA,YAC/C;AAAA,UACF;AAEA,mBAAS,oBAAoBQ,iBAAgB;AAC3C;AACE,kBAAI,WAAWA,gBAAe;AAI9B,kBAAI,6BAA6B,YAAY,SAAS,6CAA6C;AAGnG,gCAAkB,mBAAmB;AACrC,cAAAgD,MAAK,oBAAoB,4BAA4BhD,eAAc;AACnE,cAAAgD,MAAK,2BAA2B,0BAA0B,SAAShD,eAAc;AACjF,qBAAO;AAAA,YACT;AAAA,UACF;AAEA,mBAAS,0BAA0BA,iBAAgB,MAAM,WAAW;AAClE;AACE,kBAAI,WAAWA,gBAAe;AAE9B,kBAAI,CAAC,UAAU;AACb,sBAAM,IAAI,MAAM,kHAAuH;AAAA,cACzI;AAEA,kBAAI,WAAW;AAIb,oBAAI,gBAAgB,oBAAoBA,iBAAgB,MAAM,eAAe;AAC7E,yBAAS,4CAA4C;AAGrD,oBAAI,2BAA2BA,eAAc;AAC7C,oBAAI,oBAAoBA,eAAc;AAEtC,gBAAAgD,MAAK,oBAAoB,eAAehD,eAAc;AACtD,gBAAAgD,MAAK,2BAA2B,WAAWhD,eAAc;AAAA,cAC3D,OAAO;AACL,oBAAI,2BAA2BA,eAAc;AAC7C,gBAAAgD,MAAK,2BAA2B,WAAWhD,eAAc;AAAA,cAC3D;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,2BAA2B,OAAO;AACzC;AAGE,kBAAI,CAAC,eAAe,KAAK,KAAK,MAAM,QAAQ,gBAAgB;AAC1D,sBAAM,IAAI,MAAM,+HAAoI;AAAA,cACtJ;AAEA,kBAAIT,QAAO;AAEX,iBAAG;AACD,wBAAQA,MAAK,KAAK;AAAA,kBAChB,KAAK;AACH,2BAAOA,MAAK,UAAU;AAAA,kBAExB,KAAK,gBACH;AACE,wBAAIO,aAAYP,MAAK;AAErB,wBAAI,kBAAkBO,UAAS,GAAG;AAChC,6BAAOP,MAAK,UAAU;AAAA,oBACxB;AAEA;AAAA,kBACF;AAAA,gBACJ;AAEA,gBAAAA,QAAOA,MAAK;AAAA,cACd,SAASA,UAAS;AAElB,oBAAM,IAAI,MAAM,gHAAqH;AAAA,YACvI;AAAA,UACF;AAEA,cAAI,aAAa;AACjB,cAAI,iBAAiB;AAErB,cAAI,YAAY;AAChB,cAAI,8BAA8B;AAClC,cAAI,sBAAsB;AAC1B,mBAAS,qBAAqB,UAAU;AAGtC,gBAAI,cAAc,MAAM;AACtB,0BAAY,CAAC,QAAQ;AAAA,YACvB,OAAO;AAGL,wBAAU,KAAK,QAAQ;AAAA,YACzB;AAAA,UACF;AACA,mBAAS,2BAA2B,UAAU;AAC5C,0CAA8B;AAC9B,iCAAqB,QAAQ;AAAA,UAC/B;AACA,mBAAS,qCAAqC;AAM5C,gBAAI,6BAA6B;AAC/B,iCAAmB;AAAA,YACrB;AAAA,UACF;AACA,mBAAS,qBAAqB;AAC5B,gBAAI,CAAC,uBAAuB,cAAc,MAAM;AAE9C,oCAAsB;AACtB,kBAAI,IAAI;AACR,kBAAI,yBAAyB,yBAAyB;AAEtD,kBAAI;AACF,oBAAI,SAAS;AACb,oBAAI,QAAQ;AAGZ,yCAAyB,qBAAqB;AAE9C,uBAAO,IAAI,MAAM,QAAQ,KAAK;AAC5B,sBAAI,WAAW,MAAM,CAAC;AAEtB,qBAAG;AACD,+BAAW,SAAS,MAAM;AAAA,kBAC5B,SAAS,aAAa;AAAA,gBACxB;AAEA,4BAAY;AACZ,8CAA8B;AAAA,cAChC,SAAS4B,QAAO;AAEd,oBAAI,cAAc,MAAM;AACtB,8BAAY,UAAU,MAAM,IAAI,CAAC;AAAA,gBACnC;AAGA,iCAAiB,mBAAmB,kBAAkB;AACtD,sBAAMA;AAAA,cACR,UAAE;AACA,yCAAyB,sBAAsB;AAC/C,sCAAsB;AAAA,cACxB;AAAA,YACF;AAEA,mBAAO;AAAA,UACT;AAMA,cAAI,YAAY,CAAC;AACjB,cAAI,iBAAiB;AACrB,cAAI,mBAAmB;AACvB,cAAI,gBAAgB;AACpB,cAAI,UAAU,CAAC;AACf,cAAI,eAAe;AACnB,cAAI,sBAAsB;AAC1B,cAAI,gBAAgB;AACpB,cAAI,sBAAsB;AAC1B,mBAAS,cAAcnB,iBAAgB;AACrC,+BAAmB;AACnB,oBAAQA,gBAAe,QAAQ,YAAY;AAAA,UAC7C;AACA,mBAAS,gBAAgBA,iBAAgB;AACvC,+BAAmB;AACnB,mBAAO;AAAA,UACT;AACA,mBAAS,YAAY;AACnB,gBAAI,WAAW;AACf,gBAAI,mBAAmB;AACvB,gBAAIiD,OAAK,mBAAmB,CAAC,cAAc,gBAAgB;AAC3D,mBAAOA,KAAG,SAAS,EAAE,IAAI;AAAA,UAC3B;AACA,mBAAS,aAAajD,iBAAgB,eAAe;AAenD,+BAAmB;AACnB,sBAAU,gBAAgB,IAAI;AAC9B,sBAAU,gBAAgB,IAAI;AAC9B,+BAAmBA;AACnB,4BAAgB;AAAA,UAClB;AACA,mBAAS,WAAWA,iBAAgB,eAAeyB,QAAO;AACxD,+BAAmB;AACnB,oBAAQ,cAAc,IAAI;AAC1B,oBAAQ,cAAc,IAAI;AAC1B,oBAAQ,cAAc,IAAI;AAC1B,kCAAsBzB;AACtB,gBAAI,uBAAuB;AAC3B,gBAAI,eAAe;AAGnB,gBAAI,aAAa,aAAa,oBAAoB,IAAI;AACtD,gBAAI,SAAS,uBAAuB,EAAE,KAAK;AAC3C,gBAAI,OAAOyB,SAAQ;AACnB,gBAAIa,UAAS,aAAa,aAAa,IAAI;AAG3C,gBAAIA,UAAS,IAAI;AAcf,kBAAI,uBAAuB,aAAa,aAAa;AAErD,kBAAI,mBAAmB,KAAK,wBAAwB;AAEpD,kBAAI,eAAe,SAAS,iBAAiB,SAAS,EAAE;AAExD,kBAAI,eAAe,UAAU;AAC7B,kBAAI,mBAAmB,aAAa;AAGpC,kBAAI,eAAe,aAAa,aAAa,IAAI;AACjD,kBAAI,gBAAgB,QAAQ;AAC5B,kBAAIW,OAAK,gBAAgB;AACzB,kBAAI,WAAW,cAAc;AAC7B,8BAAgB,KAAK,eAAeA;AACpC,oCAAsB;AAAA,YACxB,OAAO;AAEL,kBAAI,UAAU,QAAQ;AAEtB,kBAAIC,QAAM,UAAU;AAEpB,kBAAI,YAAY;AAChB,8BAAgB,KAAKZ,UAASY;AAC9B,oCAAsB;AAAA,YACxB;AAAA,UACF;AACA,mBAAS,uBAAuBlD,iBAAgB;AAC9C,+BAAmB;AAGnB,gBAAI,cAAcA,gBAAe;AAEjC,gBAAI,gBAAgB,MAAM;AACxB,kBAAI,gBAAgB;AACpB,kBAAI,YAAY;AAChB,2BAAaA,iBAAgB,aAAa;AAC1C,yBAAWA,iBAAgB,eAAe,SAAS;AAAA,YACrD;AAAA,UACF;AAEA,mBAAS,aAAamD,SAAQ;AAC5B,mBAAO,KAAK,MAAMA,OAAM;AAAA,UAC1B;AAEA,mBAAS,cAAcF,MAAI;AACzB,mBAAO,KAAK,aAAaA,IAAE,IAAI;AAAA,UACjC;AAEA,mBAAS,eAAejD,iBAAgB;AAMtC,mBAAOA,oBAAmB,kBAAkB;AAC1C,iCAAmB,UAAU,EAAE,cAAc;AAC7C,wBAAU,cAAc,IAAI;AAC5B,8BAAgB,UAAU,EAAE,cAAc;AAC1C,wBAAU,cAAc,IAAI;AAAA,YAC9B;AAEA,mBAAOA,oBAAmB,qBAAqB;AAC7C,oCAAsB,QAAQ,EAAE,YAAY;AAC5C,sBAAQ,YAAY,IAAI;AACxB,oCAAsB,QAAQ,EAAE,YAAY;AAC5C,sBAAQ,YAAY,IAAI;AACxB,8BAAgB,QAAQ,EAAE,YAAY;AACtC,sBAAQ,YAAY,IAAI;AAAA,YAC1B;AAAA,UACF;AACA,mBAAS,0BAA0B;AACjC,+BAAmB;AAEnB,gBAAI,wBAAwB,MAAM;AAChC,qBAAO;AAAA,gBACL,IAAI;AAAA,gBACJ,UAAU;AAAA,cACZ;AAAA,YACF,OAAO;AACL,qBAAO;AAAA,YACT;AAAA,UACF;AACA,mBAAS,4BAA4BA,iBAAgB,kBAAkB;AACrE,+BAAmB;AACnB,oBAAQ,cAAc,IAAI;AAC1B,oBAAQ,cAAc,IAAI;AAC1B,oBAAQ,cAAc,IAAI;AAC1B,4BAAgB,iBAAiB;AACjC,kCAAsB,iBAAiB;AACvC,kCAAsBA;AAAA,UACxB;AAEA,mBAAS,qBAAqB;AAC5B;AACE,kBAAI,CAAC,eAAe,GAAG;AACrB,sBAAM,yEAA8E;AAAA,cACtF;AAAA,YACF;AAAA,UACF;AAIA,cAAI,uBAAuB;AAC3B,cAAI,yBAAyB;AAC7B,cAAI,cAAc;AAGlB,cAAI,uBAAuB;AAE3B,cAAI,kBAAkB;AAEtB,mBAAS,kBAAkB;AACzB;AACE,kBAAI,aAAa;AACf,sBAAM,6EAA6E;AAAA,cACrF;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,gCAAgC;AACvC;AACE,qCAAuB;AAAA,YACzB;AAAA,UACF;AACA,mBAAS,qCAAqC;AAC5C;AACE,qBAAO;AAAA,YACT;AAAA,UACF;AAEA,mBAAS,oBAAoB,OAAO;AAElC,gBAAI,iBAAiB,MAAM,UAAU;AACrC,qCAAyB,uCAAuC,cAAc;AAC9E,mCAAuB;AACvB,0BAAc;AACd,8BAAkB;AAClB,mCAAuB;AACvB,mBAAO;AAAA,UACT;AAEA,mBAAS,oDAAoD,OAAO,kBAAkB,aAAa;AAEjG,qCAAyB,8CAA8C,gBAAgB;AACvF,mCAAuB;AACvB,0BAAc;AACd,8BAAkB;AAClB,mCAAuB;AAEvB,gBAAI,gBAAgB,MAAM;AACxB,0CAA4B,OAAO,WAAW;AAAA,YAChD;AAEA,mBAAO;AAAA,UACT;AAEA,mBAAS,uBAAuB,aAAa,UAAU;AACrD;AACE,sBAAQ,YAAY,KAAK;AAAA,gBACvB,KAAK,UACH;AACE,uDAAqC,YAAY,UAAU,eAAe,QAAQ;AAClF;AAAA,gBACF;AAAA,gBAEF,KAAK,eACH;AACE,sBAAI,oBAAoB,YAAY,OAAO,oBAAoB;AAC/D;AAAA,oBAAsB,YAAY;AAAA,oBAAM,YAAY;AAAA,oBAAe,YAAY;AAAA,oBAAW;AAAA;AAAA,oBAC1F;AAAA,kBAAgB;AAChB;AAAA,gBACF;AAAA,gBAEF,KAAK,mBACH;AACE,sBAAI,gBAAgB,YAAY;AAChC,sBAAI,cAAc,eAAe;AAAM,gEAA4C,cAAc,YAAY,QAAQ;AACrH;AAAA,gBACF;AAAA,cACJ;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,yBAAyB,aAAa,UAAU;AACvD,mCAAuB,aAAa,QAAQ;AAC5C,gBAAI,gBAAgB,uCAAuC;AAC3D,0BAAc,YAAY;AAC1B,0BAAc,SAAS;AACvB,gBAAI,YAAY,YAAY;AAE5B,gBAAI,cAAc,MAAM;AACtB,0BAAY,YAAY,CAAC,aAAa;AACtC,0BAAY,SAAS;AAAA,YACvB,OAAO;AACL,wBAAU,KAAK,aAAa;AAAA,YAC9B;AAAA,UACF;AAEA,mBAAS,wBAAwB,aAAa,OAAO;AACnD;AACE,kBAAI,sBAAsB;AAIxB;AAAA,cACF;AAEA,sBAAQ,YAAY,KAAK;AAAA,gBACvB,KAAK,UACH;AACE,sBAAI,kBAAkB,YAAY,UAAU;AAE5C,0BAAQ,MAAM,KAAK;AAAA,oBACjB,KAAK;AACH,0BAAI,OAAO,MAAM;AACjB,0BAAI,QAAQ,MAAM;AAClB,kEAA4C,iBAAiB,IAAI;AACjE;AAAA,oBAEF,KAAK;AACH,0BAAI,OAAO,MAAM;AACjB,sEAAgD,iBAAiB,IAAI;AACrE;AAAA,kBACJ;AAEA;AAAA,gBACF;AAAA,gBAEF,KAAK,eACH;AACE,sBAAI,aAAa,YAAY;AAC7B,sBAAI,cAAc,YAAY;AAC9B,sBAAI,iBAAiB,YAAY;AAEjC,0BAAQ,MAAM,KAAK;AAAA,oBACjB,KAAK,eACH;AACE,0BAAI,QAAQ,MAAM;AAClB,0BAAI,SAAS,MAAM;AACnB,0BAAI,oBAAoB,YAAY,OAAO,oBAAoB;AAC/D;AAAA,wBAA6B;AAAA,wBAAY;AAAA,wBAAa;AAAA,wBAAgB;AAAA,wBAAO;AAAA;AAAA,wBAC7E;AAAA,sBAAgB;AAChB;AAAA,oBACF;AAAA,oBAEF,KAAK,UACH;AACE,0BAAI,QAAQ,MAAM;AAElB,0BAAI,qBAAqB,YAAY,OAAO,oBAAoB;AAEhE;AAAA,wBAAiC;AAAA,wBAAY;AAAA,wBAAa;AAAA,wBAAgB;AAAA;AAAA,wBAC1E;AAAA,sBAAiB;AACjB;AAAA,oBACF;AAAA,kBACJ;AAEA;AAAA,gBACF;AAAA,gBAEF,KAAK,mBACH;AACE,sBAAI,gBAAgB,YAAY;AAChC,sBAAI,kBAAkB,cAAc;AACpC,sBAAI,oBAAoB;AAAM,4BAAQ,MAAM,KAAK;AAAA,sBAC/C,KAAK;AACH,4BAAI,SAAS,MAAM;AACnB,4BAAI,UAAU,MAAM;AACpB,2EAAmD,iBAAiB,MAAM;AAC1E;AAAA,sBAEF,KAAK;AACH,4BAAI,SAAS,MAAM;AACnB,+EAAuD,iBAAiB,MAAM;AAC9E;AAAA,oBACJ;AACA;AAAA,gBACF;AAAA,gBAEF;AACE;AAAA,cACJ;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,0BAA0B,aAAa,OAAO;AACrD,kBAAM,QAAQ,MAAM,QAAQ,CAAC,YAAY;AACzC,oCAAwB,aAAa,KAAK;AAAA,UAC5C;AAEA,mBAAS,WAAW,OAAO,cAAc;AACvC,oBAAQ,MAAM,KAAK;AAAA,cACjB,KAAK,eACH;AACE,oBAAI,OAAO,MAAM;AACjB,oBAAI,QAAQ,MAAM;AAClB,oBAAI,WAAW,mBAAmB,cAAc,IAAI;AAEpD,oBAAI,aAAa,MAAM;AACrB,wBAAM,YAAY;AAClB,yCAAuB;AACvB,2CAAyB,wBAAwB,QAAQ;AACzD,yBAAO;AAAA,gBACT;AAEA,uBAAO;AAAA,cACT;AAAA,cAEF,KAAK,UACH;AACE,oBAAI,OAAO,MAAM;AACjB,oBAAI,eAAe,uBAAuB,cAAc,IAAI;AAE5D,oBAAI,iBAAiB,MAAM;AACzB,wBAAM,YAAY;AAClB,yCAAuB;AAEvB,2CAAyB;AACzB,yBAAO;AAAA,gBACT;AAEA,uBAAO;AAAA,cACT;AAAA,cAEF,KAAK,mBACH;AACE,oBAAI,mBAAmB,2BAA2B,YAAY;AAE9D,oBAAI,qBAAqB,MAAM;AAC7B,sBAAI,gBAAgB;AAAA,oBAClB,YAAY;AAAA,oBACZ,aAAa,wBAAwB;AAAA,oBACrC,WAAW;AAAA,kBACb;AACA,wBAAM,gBAAgB;AAKtB,sBAAI,qBAAqB,kCAAkC,gBAAgB;AAC3E,qCAAmB,SAAS;AAC5B,wBAAM,QAAQ;AACd,yCAAuB;AAGvB,2CAAyB;AACzB,yBAAO;AAAA,gBACT;AAEA,uBAAO;AAAA,cACT;AAAA,cAEF;AACE,uBAAO;AAAA,YACX;AAAA,UACF;AAEA,mBAAS,6BAA6B,OAAO;AAC3C,oBAAQ,MAAM,OAAO,oBAAoB,WAAW,MAAM,QAAQ,gBAAgB;AAAA,UACpF;AAEA,mBAAS,yBAAyB,OAAO;AACvC,kBAAM,IAAI,MAAM,yFAA8F;AAAA,UAChH;AAEA,mBAAS,iCAAiC,OAAO;AAC/C,gBAAI,CAAC,aAAa;AAChB;AAAA,YACF;AAEA,gBAAI,eAAe;AAEnB,gBAAI,CAAC,cAAc;AACjB,kBAAI,6BAA6B,KAAK,GAAG;AACvC,wCAAwB,sBAAsB,KAAK;AACnD,yCAAyB;AAAA,cAC3B;AAGA,wCAA0B,sBAAsB,KAAK;AACrD,4BAAc;AACd,qCAAuB;AACvB;AAAA,YACF;AAEA,gBAAI,yBAAyB;AAE7B,gBAAI,CAAC,WAAW,OAAO,YAAY,GAAG;AACpC,kBAAI,6BAA6B,KAAK,GAAG;AACvC,wCAAwB,sBAAsB,KAAK;AACnD,yCAAyB;AAAA,cAC3B;AAKA,6BAAe,yBAAyB,sBAAsB;AAC9D,kBAAI,2BAA2B;AAE/B,kBAAI,CAAC,gBAAgB,CAAC,WAAW,OAAO,YAAY,GAAG;AAErD,0CAA0B,sBAAsB,KAAK;AACrD,8BAAc;AACd,uCAAuB;AACvB;AAAA,cACF;AAMA,uCAAyB,0BAA0B,sBAAsB;AAAA,YAC3E;AAAA,UACF;AAEA,mBAAS,6BAA6B,OAAO,uBAAuB,aAAa;AAE/E,gBAAI,WAAW,MAAM;AACrB,gBAAI,0BAA0B,CAAC;AAC/B,gBAAI,gBAAgB,gBAAgB,UAAU,MAAM,MAAM,MAAM,eAAe,uBAAuB,aAAa,OAAO,uBAAuB;AAEjJ,kBAAM,cAAc;AAGpB,gBAAI,kBAAkB,MAAM;AAC1B,qBAAO;AAAA,YACT;AAEA,mBAAO;AAAA,UACT;AAEA,mBAAS,iCAAiC,OAAO;AAE/C,gBAAI,eAAe,MAAM;AACzB,gBAAI,cAAc,MAAM;AACxB,gBAAI,eAAe,oBAAoB,cAAc,aAAa,KAAK;AAEvE,gBAAI,cAAc;AAGhB,kBAAI,cAAc;AAElB,kBAAI,gBAAgB,MAAM;AACxB,wBAAQ,YAAY,KAAK;AAAA,kBACvB,KAAK,UACH;AACE,wBAAI,kBAAkB,YAAY,UAAU;AAC5C,wBAAI,oBAAoB,YAAY,OAAO,oBAAoB;AAC/D;AAAA,sBAAyC;AAAA,sBAAiB;AAAA,sBAAc;AAAA;AAAA,sBACxE;AAAA,oBAAgB;AAChB;AAAA,kBACF;AAAA,kBAEF,KAAK,eACH;AACE,wBAAI,aAAa,YAAY;AAC7B,wBAAI,cAAc,YAAY;AAC9B,wBAAI,iBAAiB,YAAY;AAEjC,wBAAI,sBAAsB,YAAY,OAAO,oBAAoB;AAEjE;AAAA,sBAAgC;AAAA,sBAAY;AAAA,sBAAa;AAAA,sBAAgB;AAAA,sBAAc;AAAA;AAAA,sBACvF;AAAA,oBAAkB;AAClB;AAAA,kBACF;AAAA,gBACJ;AAAA,cACF;AAAA,YACF;AAEA,mBAAO;AAAA,UACT;AAEA,mBAAS,qCAAqC,OAAO;AAEnD,gBAAI,gBAAgB,MAAM;AAC1B,gBAAI,mBAAmB,kBAAkB,OAAO,cAAc,aAAa;AAE3E,gBAAI,CAAC,kBAAkB;AACrB,oBAAM,IAAI,MAAM,qHAA0H;AAAA,YAC5I;AAEA,oCAAwB,kBAAkB,KAAK;AAAA,UACjD;AAEA,mBAAS,mCAAmC,OAAO;AAEjD,gBAAI,gBAAgB,MAAM;AAC1B,gBAAI,mBAAmB,kBAAkB,OAAO,cAAc,aAAa;AAE3E,gBAAI,CAAC,kBAAkB;AACrB,oBAAM,IAAI,MAAM,qHAA0H;AAAA,YAC5I;AAEA,mBAAO,+CAA+C,gBAAgB;AAAA,UACxE;AAEA,mBAAS,oBAAoB,OAAO;AAClC,gBAAI,SAAS,MAAM;AAEnB,mBAAO,WAAW,QAAQ,OAAO,QAAQ,iBAAiB,OAAO,QAAQ,YAAY,OAAO,QAAQ,mBAAmB;AACrH,uBAAS,OAAO;AAAA,YAClB;AAEA,mCAAuB;AAAA,UACzB;AAEA,mBAAS,kBAAkB,OAAO;AAEhC,gBAAI,UAAU,sBAAsB;AAGlC,qBAAO;AAAA,YACT;AAEA,gBAAI,CAAC,aAAa;AAIhB,kCAAoB,KAAK;AACzB,4BAAc;AACd,qBAAO;AAAA,YACT;AAMA,gBAAI,MAAM,QAAQ,aAAa,MAAM,QAAQ,iBAAiB,oCAAoC,MAAM,IAAI,KAAK,CAAC,qBAAqB,MAAM,MAAM,MAAM,aAAa,IAAI;AACxK,kBAAI,eAAe;AAEnB,kBAAI,cAAc;AAChB,oBAAI,6BAA6B,KAAK,GAAG;AACvC,4CAA0B,KAAK;AAC/B,2CAAyB;AAAA,gBAC3B,OAAO;AACL,yBAAO,cAAc;AACnB,6CAAyB,OAAO,YAAY;AAC5C,mCAAe,yBAAyB,YAAY;AAAA,kBACtD;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAEA,gCAAoB,KAAK;AAEzB,gBAAI,MAAM,QAAQ,mBAAmB;AACnC,uCAAyB,mCAAmC,KAAK;AAAA,YACnE,OAAO;AACL,uCAAyB,uBAAuB,yBAAyB,MAAM,SAAS,IAAI;AAAA,YAC9F;AAEA,mBAAO;AAAA,UACT;AAEA,mBAAS,yBAAyB;AAChC,mBAAO,eAAe,2BAA2B;AAAA,UACnD;AAEA,mBAAS,0BAA0B,OAAO;AACxC,gBAAI,eAAe;AAEnB,mBAAO,cAAc;AACnB,qCAAuB,OAAO,YAAY;AAC1C,6BAAe,yBAAyB,YAAY;AAAA,YACtD;AAAA,UACF;AAEA,mBAAS,sBAAsB;AAE7B,mCAAuB;AACvB,qCAAyB;AACzB,0BAAc;AACd,mCAAuB;AAAA,UACzB;AAEA,mBAAS,sCAAsC;AAC7C,gBAAI,oBAAoB,MAAM;AAI5B,qCAAuB,eAAe;AACtC,gCAAkB;AAAA,YACpB;AAAA,UACF;AAEA,mBAAS,iBAAiB;AACxB,mBAAO;AAAA,UACT;AAEA,mBAAS,oBAAoBmB,QAAO;AAClC,gBAAI,oBAAoB,MAAM;AAC5B,gCAAkB,CAACA,MAAK;AAAA,YAC1B,OAAO;AACL,8BAAgB,KAAKA,MAAK;AAAA,YAC5B;AAAA,UACF;AAEA,cAAI,4BAA4B,qBAAqB;AACrD,cAAI,eAAe;AACnB,mBAAS,2BAA2B;AAClC,mBAAO,0BAA0B;AAAA,UACnC;AAEA,cAAI,0BAA0B;AAAA,YAC5B,+BAA+B,SAAU,OAAO,UAAU;AAAA,YAAC;AAAA,YAC3D,qCAAqC,WAAY;AAAA,YAAC;AAAA,YAClD,4BAA4B,SAAU,OAAO,UAAU;AAAA,YAAC;AAAA,YACxD,2BAA2B,WAAY;AAAA,YAAC;AAAA,YACxC,wBAAwB,WAAY;AAAA,YAAC;AAAA,UACvC;AAEA;AACE,gBAAI,iBAAiB,SAAU,OAAO;AACpC,kBAAI,kBAAkB;AACtB,kBAAI5B,QAAO;AAEX,qBAAOA,UAAS,MAAM;AACpB,oBAAIA,MAAK,OAAO,kBAAkB;AAChC,oCAAkBA;AAAA,gBACpB;AAEA,gBAAAA,QAAOA,MAAK;AAAA,cACd;AAEA,qBAAO;AAAA,YACT;AAEA,gBAAI,oBAAoB,SAAUW,MAAK;AACrC,kBAAI,QAAQ,CAAC;AACb,cAAAA,KAAI,QAAQ,SAAU,OAAO;AAC3B,sBAAM,KAAK,KAAK;AAAA,cAClB,CAAC;AACD,qBAAO,MAAM,KAAK,EAAE,KAAK,IAAI;AAAA,YAC/B;AAEA,gBAAI,oCAAoC,CAAC;AACzC,gBAAI,2CAA2C,CAAC;AAChD,gBAAI,2CAA2C,CAAC;AAChD,gBAAI,kDAAkD,CAAC;AACvD,gBAAI,qCAAqC,CAAC;AAC1C,gBAAI,4CAA4C,CAAC;AAEjD,gBAAI,+BAA+B,oBAAI,IAAI;AAE3C,oCAAwB,gCAAgC,SAAU,OAAO,UAAU;AAEjF,kBAAI,6BAA6B,IAAI,MAAM,IAAI,GAAG;AAChD;AAAA,cACF;AAEA,kBAAI,OAAO,SAAS,uBAAuB;AAAA,cAC3C,SAAS,mBAAmB,iCAAiC,MAAM;AACjE,kDAAkC,KAAK,KAAK;AAAA,cAC9C;AAEA,kBAAI,MAAM,OAAO,oBAAoB,OAAO,SAAS,8BAA8B,YAAY;AAC7F,yDAAyC,KAAK,KAAK;AAAA,cACrD;AAEA,kBAAI,OAAO,SAAS,8BAA8B,cAAc,SAAS,0BAA0B,iCAAiC,MAAM;AACxI,yDAAyC,KAAK,KAAK;AAAA,cACrD;AAEA,kBAAI,MAAM,OAAO,oBAAoB,OAAO,SAAS,qCAAqC,YAAY;AACpG,gEAAgD,KAAK,KAAK;AAAA,cAC5D;AAEA,kBAAI,OAAO,SAAS,wBAAwB,cAAc,SAAS,oBAAoB,iCAAiC,MAAM;AAC5H,mDAAmC,KAAK,KAAK;AAAA,cAC/C;AAEA,kBAAI,MAAM,OAAO,oBAAoB,OAAO,SAAS,+BAA+B,YAAY;AAC9F,0DAA0C,KAAK,KAAK;AAAA,cACtD;AAAA,YACF;AAEA,oCAAwB,sCAAsC,WAAY;AAExE,kBAAI,gCAAgC,oBAAI,IAAI;AAE5C,kBAAI,kCAAkC,SAAS,GAAG;AAChD,kDAAkC,QAAQ,SAAU,OAAO;AACzD,gDAA8B,IAAI,0BAA0B,KAAK,KAAK,WAAW;AACjF,+CAA6B,IAAI,MAAM,IAAI;AAAA,gBAC7C,CAAC;AACD,oDAAoC,CAAC;AAAA,cACvC;AAEA,kBAAI,uCAAuC,oBAAI,IAAI;AAEnD,kBAAI,yCAAyC,SAAS,GAAG;AACvD,yDAAyC,QAAQ,SAAU,OAAO;AAChE,uDAAqC,IAAI,0BAA0B,KAAK,KAAK,WAAW;AACxF,+CAA6B,IAAI,MAAM,IAAI;AAAA,gBAC7C,CAAC;AACD,2DAA2C,CAAC;AAAA,cAC9C;AAEA,kBAAI,uCAAuC,oBAAI,IAAI;AAEnD,kBAAI,yCAAyC,SAAS,GAAG;AACvD,yDAAyC,QAAQ,SAAU,OAAO;AAChE,uDAAqC,IAAI,0BAA0B,KAAK,KAAK,WAAW;AACxF,+CAA6B,IAAI,MAAM,IAAI;AAAA,gBAC7C,CAAC;AACD,2DAA2C,CAAC;AAAA,cAC9C;AAEA,kBAAI,8CAA8C,oBAAI,IAAI;AAE1D,kBAAI,gDAAgD,SAAS,GAAG;AAC9D,gEAAgD,QAAQ,SAAU,OAAO;AACvE,8DAA4C,IAAI,0BAA0B,KAAK,KAAK,WAAW;AAC/F,+CAA6B,IAAI,MAAM,IAAI;AAAA,gBAC7C,CAAC;AACD,kEAAkD,CAAC;AAAA,cACrD;AAEA,kBAAI,iCAAiC,oBAAI,IAAI;AAE7C,kBAAI,mCAAmC,SAAS,GAAG;AACjD,mDAAmC,QAAQ,SAAU,OAAO;AAC1D,iDAA+B,IAAI,0BAA0B,KAAK,KAAK,WAAW;AAClF,+CAA6B,IAAI,MAAM,IAAI;AAAA,gBAC7C,CAAC;AACD,qDAAqC,CAAC;AAAA,cACxC;AAEA,kBAAI,wCAAwC,oBAAI,IAAI;AAEpD,kBAAI,0CAA0C,SAAS,GAAG;AACxD,0DAA0C,QAAQ,SAAU,OAAO;AACjE,wDAAsC,IAAI,0BAA0B,KAAK,KAAK,WAAW;AACzF,+CAA6B,IAAI,MAAM,IAAI;AAAA,gBAC7C,CAAC;AACD,4DAA4C,CAAC;AAAA,cAC/C;AAIA,kBAAI,qCAAqC,OAAO,GAAG;AACjD,oBAAI,cAAc,kBAAkB,oCAAoC;AAExE,sBAAM,8TAA6U,WAAW;AAAA,cAChW;AAEA,kBAAI,4CAA4C,OAAO,GAAG;AACxD,oBAAI,eAAe,kBAAkB,2CAA2C;AAEhF,sBAAM,ifAAohB,YAAY;AAAA,cACxiB;AAEA,kBAAI,sCAAsC,OAAO,GAAG;AAClD,oBAAI,gBAAgB,kBAAkB,qCAAqC;AAE3E,sBAAM,kSAAsT,aAAa;AAAA,cAC3U;AAEA,kBAAI,8BAA8B,OAAO,GAAG;AAC1C,oBAAI,gBAAgB,kBAAkB,6BAA6B;AAEnE,gBAAAvB,MAAK,okBAAumB,aAAa;AAAA,cAC3nB;AAEA,kBAAI,qCAAqC,OAAO,GAAG;AACjD,oBAAI,gBAAgB,kBAAkB,oCAAoC;AAE1E,gBAAAA,MAAK,qwBAAuzB,aAAa;AAAA,cAC30B;AAEA,kBAAI,+BAA+B,OAAO,GAAG;AAC3C,oBAAI,gBAAgB,kBAAkB,8BAA8B;AAEpE,gBAAAA,MAAK,0iBAA6kB,aAAa;AAAA,cACjmB;AAAA,YACF;AAEA,gBAAI,8BAA8B,oBAAI,IAAI;AAE1C,gBAAI,4BAA4B,oBAAI,IAAI;AAExC,oCAAwB,6BAA6B,SAAU,OAAO,UAAU;AAC9E,kBAAI,aAAa,eAAe,KAAK;AAErC,kBAAI,eAAe,MAAM;AACvB,sBAAM,qIAA0I;AAEhJ;AAAA,cACF;AAGA,kBAAI,0BAA0B,IAAI,MAAM,IAAI,GAAG;AAC7C;AAAA,cACF;AAEA,kBAAI,kBAAkB,4BAA4B,IAAI,UAAU;AAEhE,kBAAI,MAAM,KAAK,gBAAgB,QAAQ,MAAM,KAAK,qBAAqB,QAAQ,aAAa,QAAQ,OAAO,SAAS,oBAAoB,YAAY;AAClJ,oBAAI,oBAAoB,QAAW;AACjC,oCAAkB,CAAC;AACnB,8CAA4B,IAAI,YAAY,eAAe;AAAA,gBAC7D;AAEA,gCAAgB,KAAK,KAAK;AAAA,cAC5B;AAAA,YACF;AAEA,oCAAwB,4BAA4B,WAAY;AAC9D,0CAA4B,QAAQ,SAAU,YAAY,YAAY;AACpE,oBAAI,WAAW,WAAW,GAAG;AAC3B;AAAA,gBACF;AAEA,oBAAI,aAAa,WAAW,CAAC;AAC7B,oBAAI,cAAc,oBAAI,IAAI;AAC1B,2BAAW,QAAQ,SAAU,OAAO;AAClC,8BAAY,IAAI,0BAA0B,KAAK,KAAK,WAAW;AAC/D,4CAA0B,IAAI,MAAM,IAAI;AAAA,gBAC1C,CAAC;AACD,oBAAI,cAAc,kBAAkB,WAAW;AAE/C,oBAAI;AACF,kCAAgB,UAAU;AAE1B,wBAAM,oTAAwU,WAAW;AAAA,gBAC3V,UAAE;AACA,oCAAkB;AAAA,gBACpB;AAAA,cACF,CAAC;AAAA,YACH;AAEA,oCAAwB,yBAAyB,WAAY;AAC3D,kDAAoC,CAAC;AACrC,yDAA2C,CAAC;AAC5C,yDAA2C,CAAC;AAC5C,gEAAkD,CAAC;AACnD,mDAAqC,CAAC;AACtC,0DAA4C,CAAC;AAC7C,4CAA8B,oBAAI,IAAI;AAAA,YACxC;AAAA,UACF;AAEA,mBAAS,oBAAoBmB,YAAWsD,YAAW;AACjD,gBAAItD,cAAaA,WAAU,cAAc;AAEvC,kBAAI,QAAQN,QAAO,CAAC,GAAG4D,UAAS;AAChC,kBAAIC,gBAAevD,WAAU;AAE7B,uBAAS,YAAYuD,eAAc;AACjC,oBAAI,MAAM,QAAQ,MAAM,QAAW;AACjC,wBAAM,QAAQ,IAAIA,cAAa,QAAQ;AAAA,gBACzC;AAAA,cACF;AAEA,qBAAO;AAAA,YACT;AAEA,mBAAOD;AAAA,UACT;AAEA,cAAI,cAAc,aAAa,IAAI;AACnC,cAAI;AAEJ;AAEE,4BAAgB,CAAC;AAAA,UACnB;AAEA,cAAI,0BAA0B;AAC9B,cAAI,wBAAwB;AAC5B,cAAI,2BAA2B;AAC/B,cAAI,+BAA+B;AACnC,mBAAS,2BAA2B;AAGlC,sCAA0B;AAC1B,oCAAwB;AACxB,uCAA2B;AAE3B;AACE,6CAA+B;AAAA,YACjC;AAAA,UACF;AACA,mBAAS,kCAAkC;AACzC;AACE,6CAA+B;AAAA,YACjC;AAAA,UACF;AACA,mBAAS,iCAAiC;AACxC;AACE,6CAA+B;AAAA,YACjC;AAAA,UACF;AACA,mBAAS,aAAa,eAAe,SAAS,WAAW;AACvD;AACE,cAAAJ,MAAK,aAAa,QAAQ,eAAe,aAAa;AACtD,sBAAQ,gBAAgB;AAExB;AACE,oBAAI,QAAQ,qBAAqB,UAAa,QAAQ,qBAAqB,QAAQ,QAAQ,qBAAqB,eAAe;AAC7H,wBAAM,8GAAmH;AAAA,gBAC3H;AAEA,wBAAQ,mBAAmB;AAAA,cAC7B;AAAA,YACF;AAAA,UACF;AACA,mBAAS,YAAY,SAAS,eAAe;AAC3C,gBAAI,eAAe,YAAY;AAC/B,gBAAI,aAAa,aAAa;AAE9B;AACE;AACE,wBAAQ,gBAAgB;AAAA,cAC1B;AAAA,YACF;AAAA,UACF;AACA,mBAAS,gCAAgC,QAAQrB,cAAa,iBAAiB;AAE7E,gBAAIpC,QAAO;AAEX,mBAAOA,UAAS,MAAM;AACpB,kBAAI,YAAYA,MAAK;AAErB,kBAAI,CAAC,gBAAgBA,MAAK,YAAYoC,YAAW,GAAG;AAClD,gBAAApC,MAAK,aAAa,WAAWA,MAAK,YAAYoC,YAAW;AAEzD,oBAAI,cAAc,MAAM;AACtB,4BAAU,aAAa,WAAW,UAAU,YAAYA,YAAW;AAAA,gBACrE;AAAA,cACF,WAAW,cAAc,QAAQ,CAAC,gBAAgB,UAAU,YAAYA,YAAW,GAAG;AACpF,0BAAU,aAAa,WAAW,UAAU,YAAYA,YAAW;AAAA,cACrE;AAEA,kBAAIpC,UAAS,iBAAiB;AAC5B;AAAA,cACF;AAEA,cAAAA,QAAOA,MAAK;AAAA,YACd;AAEA;AACE,kBAAIA,UAAS,iBAAiB;AAC5B,sBAAM,0IAA+I;AAAA,cACvJ;AAAA,YACF;AAAA,UACF;AACA,mBAAS,uBAAuBS,iBAAgB,SAAS2B,cAAa;AACpE;AACE,2CAA6B3B,iBAAgB,SAAS2B,YAAW;AAAA,YACnE;AAAA,UACF;AAEA,mBAAS,6BAA6B3B,iBAAgB,SAAS2B,cAAa;AAE1E,gBAAI,QAAQ3B,gBAAe;AAE3B,gBAAI,UAAU,MAAM;AAElB,oBAAM,SAASA;AAAA,YACjB;AAEA,mBAAO,UAAU,MAAM;AACrB,kBAAI,YAAY;AAEhB,kBAAI,OAAO,MAAM;AAEjB,kBAAI,SAAS,MAAM;AACjB,4BAAY,MAAM;AAClB,oBAAI,aAAa,KAAK;AAEtB,uBAAO,eAAe,MAAM;AAE1B,sBAAI,WAAW,YAAY,SAAS;AAElC,wBAAI,MAAM,QAAQ,gBAAgB;AAEhC,0BAAI,OAAO,kBAAkB2B,YAAW;AACxC,0BAAI,SAAS,aAAa,aAAa,IAAI;AAC3C,6BAAO,MAAM;AAMb,0BAAI,cAAc,MAAM;AAExB,0BAAI,gBAAgB;AAAM;AAAA,2BAAO;AAC/B,4BAAI,cAAc,YAAY;AAC9B,4BAAI,UAAU,YAAY;AAE1B,4BAAI,YAAY,MAAM;AAEpB,iCAAO,OAAO;AAAA,wBAChB,OAAO;AACL,iCAAO,OAAO,QAAQ;AACtB,kCAAQ,OAAO;AAAA,wBACjB;AAEA,oCAAY,UAAU;AAAA,sBACxB;AAAA,oBACF;AAEA,0BAAM,QAAQ,WAAW,MAAM,OAAOA,YAAW;AACjD,wBAAI,YAAY,MAAM;AAEtB,wBAAI,cAAc,MAAM;AACtB,gCAAU,QAAQ,WAAW,UAAU,OAAOA,YAAW;AAAA,oBAC3D;AAEA,oDAAgC,MAAM,QAAQA,cAAa3B,eAAc;AAEzE,yBAAK,QAAQ,WAAW,KAAK,OAAO2B,YAAW;AAG/C;AAAA,kBACF;AAEA,+BAAa,WAAW;AAAA,gBAC1B;AAAA,cACF,WAAW,MAAM,QAAQ,iBAAiB;AAExC,4BAAY,MAAM,SAAS3B,gBAAe,OAAO,OAAO,MAAM;AAAA,cAChE,WAAW,MAAM,QAAQ,oBAAoB;AAI3C,oBAAI,iBAAiB,MAAM;AAE3B,oBAAI,mBAAmB,MAAM;AAC3B,wBAAM,IAAI,MAAM,kFAAkF;AAAA,gBACpG;AAEA,+BAAe,QAAQ,WAAW,eAAe,OAAO2B,YAAW;AACnE,oBAAI,aAAa,eAAe;AAEhC,oBAAI,eAAe,MAAM;AACvB,6BAAW,QAAQ,WAAW,WAAW,OAAOA,YAAW;AAAA,gBAC7D;AAMA,gDAAgC,gBAAgBA,cAAa3B,eAAc;AAC3E,4BAAY,MAAM;AAAA,cACpB,OAAO;AAEL,4BAAY,MAAM;AAAA,cACpB;AAEA,kBAAI,cAAc,MAAM;AAEtB,0BAAU,SAAS;AAAA,cACrB,OAAO;AAEL,4BAAY;AAEZ,uBAAO,cAAc,MAAM;AACzB,sBAAI,cAAcA,iBAAgB;AAEhC,gCAAY;AACZ;AAAA,kBACF;AAEA,sBAAI,UAAU,UAAU;AAExB,sBAAI,YAAY,MAAM;AAEpB,4BAAQ,SAAS,UAAU;AAC3B,gCAAY;AACZ;AAAA,kBACF;AAGA,8BAAY,UAAU;AAAA,gBACxB;AAAA,cACF;AAEA,sBAAQ;AAAA,YACV;AAAA,UACF;AACA,mBAAS,qBAAqBA,iBAAgB2B,cAAa;AACzD,sCAA0B3B;AAC1B,oCAAwB;AACxB,uCAA2B;AAC3B,gBAAI,eAAeA,gBAAe;AAElC,gBAAI,iBAAiB,MAAM;AACzB;AACE,oBAAI,eAAe,aAAa;AAEhC,oBAAI,iBAAiB,MAAM;AACzB,sBAAI,iBAAiB,aAAa,OAAO2B,YAAW,GAAG;AAErD,qDAAiC;AAAA,kBACnC;AAGA,+BAAa,eAAe;AAAA,gBAC9B;AAAA,cACF;AAAA,YACF;AAAA,UACF;AACA,mBAAS,YAAY,SAAS;AAC5B;AAGE,kBAAI,8BAA8B;AAChC,sBAAM,8PAA6Q;AAAA,cACrR;AAAA,YACF;AAEA,gBAAI,QAAS,QAAQ;AAErB,gBAAI,6BAA6B;AAAS;AAAA,iBAAO;AAC/C,kBAAI,cAAc;AAAA,gBAChB;AAAA,gBACA,eAAe;AAAA,gBACf,MAAM;AAAA,cACR;AAEA,kBAAI,0BAA0B,MAAM;AAClC,oBAAI,4BAA4B,MAAM;AACpC,wBAAM,IAAI,MAAM,8PAA6Q;AAAA,gBAC/R;AAGA,wCAAwB;AACxB,wCAAwB,eAAe;AAAA,kBACrC,OAAO;AAAA,kBACP,cAAc;AAAA,gBAChB;AAAA,cACF,OAAO;AAEL,wCAAwB,sBAAsB,OAAO;AAAA,cACvD;AAAA,YACF;AAEA,mBAAO;AAAA,UACT;AAMA,cAAI,mBAAmB;AACvB,mBAAS,0BAA0B,OAAO;AACxC,gBAAI,qBAAqB,MAAM;AAC7B,iCAAmB,CAAC,KAAK;AAAA,YAC3B,OAAO;AACL,+BAAiB,KAAK,KAAK;AAAA,YAC7B;AAAA,UACF;AACA,mBAAS,kCAAkC;AAMzC,gBAAI,qBAAqB,MAAM;AAC7B,uBAAS,IAAI,GAAG,IAAI,iBAAiB,QAAQ,KAAK;AAChD,oBAAI,QAAQ,iBAAiB,CAAC;AAC9B,oBAAI,wBAAwB,MAAM;AAElC,oBAAI,0BAA0B,MAAM;AAClC,wBAAM,cAAc;AACpB,sBAAI,yBAAyB,sBAAsB;AACnD,sBAAI,oBAAoB,MAAM;AAE9B,sBAAI,sBAAsB,MAAM;AAC9B,wBAAI,qBAAqB,kBAAkB;AAC3C,sCAAkB,OAAO;AACzB,0CAAsB,OAAO;AAAA,kBAC/B;AAEA,wBAAM,UAAU;AAAA,gBAClB;AAAA,cACF;AAEA,iCAAmB;AAAA,YACrB;AAAA,UACF;AACA,mBAAS,4BAA4B,OAAO,OAAO,QAAQ,MAAM;AAC/D,gBAAI,cAAc,MAAM;AAExB,gBAAI,gBAAgB,MAAM;AAExB,qBAAO,OAAO;AAGd,wCAA0B,KAAK;AAAA,YACjC,OAAO;AACL,qBAAO,OAAO,YAAY;AAC1B,0BAAY,OAAO;AAAA,YACrB;AAEA,kBAAM,cAAc;AACpB,mBAAO,8BAA8B,OAAO,IAAI;AAAA,UAClD;AACA,mBAAS,6CAA6C,OAAO,OAAO,QAAQ,MAAM;AAChF,gBAAI,cAAc,MAAM;AAExB,gBAAI,gBAAgB,MAAM;AAExB,qBAAO,OAAO;AAGd,wCAA0B,KAAK;AAAA,YACjC,OAAO;AACL,qBAAO,OAAO,YAAY;AAC1B,0BAAY,OAAO;AAAA,YACrB;AAEA,kBAAM,cAAc;AAAA,UACtB;AACA,mBAAS,6BAA6B,OAAO,OAAO,QAAQ,MAAM;AAChE,gBAAI,cAAc,MAAM;AAExB,gBAAI,gBAAgB,MAAM;AAExB,qBAAO,OAAO;AAGd,wCAA0B,KAAK;AAAA,YACjC,OAAO;AACL,qBAAO,OAAO,YAAY;AAC1B,0BAAY,OAAO;AAAA,YACrB;AAEA,kBAAM,cAAc;AACpB,mBAAO,8BAA8B,OAAO,IAAI;AAAA,UAClD;AACA,mBAAS,+BAA+B,OAAO,MAAM;AACnD,mBAAO,8BAA8B,OAAO,IAAI;AAAA,UAClD;AAGA,cAAI,uCAAuC;AAE3C,mBAAS,8BAA8B,aAAa,MAAM;AAExD,wBAAY,QAAQ,WAAW,YAAY,OAAO,IAAI;AACtD,gBAAI,YAAY,YAAY;AAE5B,gBAAI,cAAc,MAAM;AACtB,wBAAU,QAAQ,WAAW,UAAU,OAAO,IAAI;AAAA,YACpD;AAEA;AACE,kBAAI,cAAc,SAAS,YAAY,SAAS,YAAY,gBAAgB,SAAS;AACnF,yDAAyC,WAAW;AAAA,cACtD;AAAA,YACF;AAGA,gBAAIpC,QAAO;AACX,gBAAI,SAAS,YAAY;AAEzB,mBAAO,WAAW,MAAM;AACtB,qBAAO,aAAa,WAAW,OAAO,YAAY,IAAI;AACtD,0BAAY,OAAO;AAEnB,kBAAI,cAAc,MAAM;AACtB,0BAAU,aAAa,WAAW,UAAU,YAAY,IAAI;AAAA,cAC9D,OAAO;AACL;AACE,uBAAK,OAAO,SAAS,YAAY,gBAAgB,SAAS;AACxD,6DAAyC,WAAW;AAAA,kBACtD;AAAA,gBACF;AAAA,cACF;AAEA,cAAAA,QAAO;AACP,uBAAS,OAAO;AAAA,YAClB;AAEA,gBAAIA,MAAK,QAAQ,UAAU;AACzB,kBAAIgC,QAAOhC,MAAK;AAChB,qBAAOgC;AAAA,YACT,OAAO;AACL,qBAAO;AAAA,YACT;AAAA,UACF;AAEA,cAAI,cAAc;AAClB,cAAI,eAAe;AACnB,cAAI,cAAc;AAClB,cAAI,gBAAgB;AAIpB,cAAI,iBAAiB;AACrB,cAAI;AACJ,cAAI;AAEJ;AACE,wCAA4B;AAC5B,uCAA2B;AAAA,UAC7B;AAEA,mBAAS,sBAAsB,OAAO;AACpC,gBAAI,QAAQ;AAAA,cACV,WAAW,MAAM;AAAA,cACjB,iBAAiB;AAAA,cACjB,gBAAgB;AAAA,cAChB,QAAQ;AAAA,gBACN,SAAS;AAAA,gBACT,aAAa;AAAA,gBACb,OAAO;AAAA,cACT;AAAA,cACA,SAAS;AAAA,YACX;AACA,kBAAM,cAAc;AAAA,UACtB;AACA,mBAAS,iBAAiBF,UAASrB,iBAAgB;AAEjD,gBAAI,QAAQA,gBAAe;AAC3B,gBAAI,eAAeqB,SAAQ;AAE3B,gBAAI,UAAU,cAAc;AAC1B,kBAAI,QAAQ;AAAA,gBACV,WAAW,aAAa;AAAA,gBACxB,iBAAiB,aAAa;AAAA,gBAC9B,gBAAgB,aAAa;AAAA,gBAC7B,QAAQ,aAAa;AAAA,gBACrB,SAAS,aAAa;AAAA,cACxB;AACA,cAAArB,gBAAe,cAAc;AAAA,YAC/B;AAAA,UACF;AACA,mBAAS,aAAa,WAAW,MAAM;AACrC,gBAAI,SAAS;AAAA,cACX;AAAA,cACA;AAAA,cACA,KAAK;AAAA,cACL,SAAS;AAAA,cACT,UAAU;AAAA,cACV,MAAM;AAAA,YACR;AACA,mBAAO;AAAA,UACT;AACA,mBAAS,cAAc,OAAO,QAAQ,MAAM;AAC1C,gBAAI,cAAc,MAAM;AAExB,gBAAI,gBAAgB,MAAM;AAExB,qBAAO;AAAA,YACT;AAEA,gBAAI,cAAc,YAAY;AAE9B;AACE,kBAAI,6BAA6B,eAAe,CAAC,2BAA2B;AAC1E,sBAAM,4MAA2N;AAEjO,4CAA4B;AAAA,cAC9B;AAAA,YACF;AAEA,gBAAI,+BAA+B,GAAG;AAGpC,kBAAI,UAAU,YAAY;AAE1B,kBAAI,YAAY,MAAM;AAEpB,uBAAO,OAAO;AAAA,cAChB,OAAO;AACL,uBAAO,OAAO,QAAQ;AACtB,wBAAQ,OAAO;AAAA,cACjB;AAEA,0BAAY,UAAU;AAKtB,qBAAO,qCAAqC,OAAO,IAAI;AAAA,YACzD,OAAO;AACL,qBAAO,6BAA6B,OAAO,aAAa,QAAQ,IAAI;AAAA,YACtE;AAAA,UACF;AACA,mBAAS,oBAAoBuB,OAAM,OAAO,MAAM;AAC9C,gBAAI,cAAc,MAAM;AAExB,gBAAI,gBAAgB,MAAM;AAExB;AAAA,YACF;AAEA,gBAAI,cAAc,YAAY;AAE9B,gBAAI,iBAAiB,IAAI,GAAG;AAC1B,kBAAI,aAAa,YAAY;AAM7B,2BAAa,eAAe,YAAYA,MAAK,YAAY;AAEzD,kBAAI,gBAAgB,WAAW,YAAY,IAAI;AAC/C,0BAAY,QAAQ;AAIpB,gCAAkBA,OAAM,aAAa;AAAA,YACvC;AAAA,UACF;AACA,mBAAS,sBAAsBvB,iBAAgB,gBAAgB;AAI7D,gBAAI,QAAQA,gBAAe;AAE3B,gBAAIqB,WAAUrB,gBAAe;AAE7B,gBAAIqB,aAAY,MAAM;AACpB,kBAAI,eAAeA,SAAQ;AAE3B,kBAAI,UAAU,cAAc;AAO1B,oBAAI,WAAW;AACf,oBAAI,UAAU;AACd,oBAAI,kBAAkB,MAAM;AAE5B,oBAAI,oBAAoB,MAAM;AAE5B,sBAAI,SAAS;AAEb,qBAAG;AACD,wBAAI,QAAQ;AAAA,sBACV,WAAW,OAAO;AAAA,sBAClB,MAAM,OAAO;AAAA,sBACb,KAAK,OAAO;AAAA,sBACZ,SAAS,OAAO;AAAA,sBAChB,UAAU,OAAO;AAAA,sBACjB,MAAM;AAAA,oBACR;AAEA,wBAAI,YAAY,MAAM;AACpB,iCAAW,UAAU;AAAA,oBACvB,OAAO;AACL,8BAAQ,OAAO;AACf,gCAAU;AAAA,oBACZ;AAEA,6BAAS,OAAO;AAAA,kBAClB,SAAS,WAAW;AAGpB,sBAAI,YAAY,MAAM;AACpB,+BAAW,UAAU;AAAA,kBACvB,OAAO;AACL,4BAAQ,OAAO;AACf,8BAAU;AAAA,kBACZ;AAAA,gBACF,OAAO;AAEL,6BAAW,UAAU;AAAA,gBACvB;AAEA,wBAAQ;AAAA,kBACN,WAAW,aAAa;AAAA,kBACxB,iBAAiB;AAAA,kBACjB,gBAAgB;AAAA,kBAChB,QAAQ,aAAa;AAAA,kBACrB,SAAS,aAAa;AAAA,gBACxB;AACA,gBAAArB,gBAAe,cAAc;AAC7B;AAAA,cACF;AAAA,YACF;AAGA,gBAAI,iBAAiB,MAAM;AAE3B,gBAAI,mBAAmB,MAAM;AAC3B,oBAAM,kBAAkB;AAAA,YAC1B,OAAO;AACL,6BAAe,OAAO;AAAA,YACxB;AAEA,kBAAM,iBAAiB;AAAA,UACzB;AAEA,mBAAS,mBAAmBA,iBAAgB,OAAO,QAAQ,WAAW,WAAW,UAAU;AACzF,oBAAQ,OAAO,KAAK;AAAA,cAClB,KAAK,cACH;AACE,oBAAI,UAAU,OAAO;AAErB,oBAAI,OAAO,YAAY,YAAY;AAEjC;AACE,oDAAgC;AAAA,kBAClC;AAEA,sBAAI,YAAY,QAAQ,KAAK,UAAU,WAAW,SAAS;AAE3D;AACE,wBAAKA,gBAAe,OAAO,kBAAkB;AAC3C,iDAA2B,IAAI;AAE/B,0BAAI;AACF,gCAAQ,KAAK,UAAU,WAAW,SAAS;AAAA,sBAC7C,UAAE;AACA,mDAA2B,KAAK;AAAA,sBAClC;AAAA,oBACF;AAEA,mDAA+B;AAAA,kBACjC;AAEA,yBAAO;AAAA,gBACT;AAGA,uBAAO;AAAA,cACT;AAAA,cAEF,KAAK,eACH;AACE,gBAAAA,gBAAe,QAAQA,gBAAe,QAAQ,CAAC,gBAAgB;AAAA,cACjE;AAAA,cAGF,KAAK,aACH;AACE,oBAAI,WAAW,OAAO;AACtB,oBAAI;AAEJ,oBAAI,OAAO,aAAa,YAAY;AAElC;AACE,oDAAgC;AAAA,kBAClC;AAEA,iCAAe,SAAS,KAAK,UAAU,WAAW,SAAS;AAE3D;AACE,wBAAKA,gBAAe,OAAO,kBAAkB;AAC3C,iDAA2B,IAAI;AAE/B,0BAAI;AACF,iCAAS,KAAK,UAAU,WAAW,SAAS;AAAA,sBAC9C,UAAE;AACA,mDAA2B,KAAK;AAAA,sBAClC;AAAA,oBACF;AAEA,mDAA+B;AAAA,kBACjC;AAAA,gBACF,OAAO;AAEL,iCAAe;AAAA,gBACjB;AAEA,oBAAI,iBAAiB,QAAQ,iBAAiB,QAAW;AAEvD,yBAAO;AAAA,gBACT;AAGA,uBAAOR,QAAO,CAAC,GAAG,WAAW,YAAY;AAAA,cAC3C;AAAA,cAEF,KAAK,aACH;AACE,iCAAiB;AACjB,uBAAO;AAAA,cACT;AAAA,YACJ;AAEA,mBAAO;AAAA,UACT;AAEA,mBAAS,mBAAmBQ,iBAAgB,OAAO,UAAU2B,cAAa;AAExE,gBAAI,QAAQ3B,gBAAe;AAC3B,6BAAiB;AAEjB;AACE,yCAA2B,MAAM;AAAA,YACnC;AAEA,gBAAI,kBAAkB,MAAM;AAC5B,gBAAI,iBAAiB,MAAM;AAE3B,gBAAI,eAAe,MAAM,OAAO;AAEhC,gBAAI,iBAAiB,MAAM;AACzB,oBAAM,OAAO,UAAU;AAGvB,kBAAI,oBAAoB;AACxB,kBAAI,qBAAqB,kBAAkB;AAC3C,gCAAkB,OAAO;AAEzB,kBAAI,mBAAmB,MAAM;AAC3B,kCAAkB;AAAA,cACpB,OAAO;AACL,+BAAe,OAAO;AAAA,cACxB;AAEA,+BAAiB;AAMjB,kBAAIqB,WAAUrB,gBAAe;AAE7B,kBAAIqB,aAAY,MAAM;AAEpB,oBAAI,eAAeA,SAAQ;AAC3B,oBAAI,wBAAwB,aAAa;AAEzC,oBAAI,0BAA0B,gBAAgB;AAC5C,sBAAI,0BAA0B,MAAM;AAClC,iCAAa,kBAAkB;AAAA,kBACjC,OAAO;AACL,0CAAsB,OAAO;AAAA,kBAC/B;AAEA,+BAAa,iBAAiB;AAAA,gBAChC;AAAA,cACF;AAAA,YACF;AAGA,gBAAI,oBAAoB,MAAM;AAE5B,kBAAI,WAAW,MAAM;AAGrB,kBAAI,WAAW;AACf,kBAAI,eAAe;AACnB,kBAAI,qBAAqB;AACzB,kBAAI,oBAAoB;AACxB,kBAAI,SAAS;AAEb,iBAAG;AACD,oBAAI,aAAa,OAAO;AACxB,oBAAI,kBAAkB,OAAO;AAE7B,oBAAI,CAAC,gBAAgBM,cAAa,UAAU,GAAG;AAI7C,sBAAI,QAAQ;AAAA,oBACV,WAAW;AAAA,oBACX,MAAM;AAAA,oBACN,KAAK,OAAO;AAAA,oBACZ,SAAS,OAAO;AAAA,oBAChB,UAAU,OAAO;AAAA,oBACjB,MAAM;AAAA,kBACR;AAEA,sBAAI,sBAAsB,MAAM;AAC9B,yCAAqB,oBAAoB;AACzC,mCAAe;AAAA,kBACjB,OAAO;AACL,wCAAoB,kBAAkB,OAAO;AAAA,kBAC/C;AAGA,6BAAW,WAAW,UAAU,UAAU;AAAA,gBAC5C,OAAO;AAEL,sBAAI,sBAAsB,MAAM;AAC9B,wBAAI,SAAS;AAAA,sBACX,WAAW;AAAA;AAAA;AAAA;AAAA,sBAIX,MAAM;AAAA,sBACN,KAAK,OAAO;AAAA,sBACZ,SAAS,OAAO;AAAA,sBAChB,UAAU,OAAO;AAAA,sBACjB,MAAM;AAAA,oBACR;AACA,wCAAoB,kBAAkB,OAAO;AAAA,kBAC/C;AAGA,6BAAW,mBAAmB3B,iBAAgB,OAAO,QAAQ,UAAU,OAAO,QAAQ;AACtF,sBAAI,WAAW,OAAO;AAEtB,sBAAI,aAAa;AAAA;AAAA,kBAEjB,OAAO,SAAS,QAAQ;AACtB,oBAAAA,gBAAe,SAAS;AACxB,wBAAI,UAAU,MAAM;AAEpB,wBAAI,YAAY,MAAM;AACpB,4BAAM,UAAU,CAAC,MAAM;AAAA,oBACzB,OAAO;AACL,8BAAQ,KAAK,MAAM;AAAA,oBACrB;AAAA,kBACF;AAAA,gBACF;AAEA,yBAAS,OAAO;AAEhB,oBAAI,WAAW,MAAM;AACnB,iCAAe,MAAM,OAAO;AAE5B,sBAAI,iBAAiB,MAAM;AACzB;AAAA,kBACF,OAAO;AAGL,wBAAI,qBAAqB;AAGzB,wBAAI,sBAAsB,mBAAmB;AAC7C,uCAAmB,OAAO;AAC1B,6BAAS;AACT,0BAAM,iBAAiB;AACvB,0BAAM,OAAO,UAAU;AAAA,kBACzB;AAAA,gBACF;AAAA,cACF,SAAS;AAET,kBAAI,sBAAsB,MAAM;AAC9B,+BAAe;AAAA,cACjB;AAEA,oBAAM,YAAY;AAClB,oBAAM,kBAAkB;AACxB,oBAAM,iBAAiB;AAIvB,kBAAI,kBAAkB,MAAM,OAAO;AAEnC,kBAAI,oBAAoB,MAAM;AAC5B,oBAAI,cAAc;AAElB,mBAAG;AACD,6BAAW,WAAW,UAAU,YAAY,IAAI;AAChD,gCAAc,YAAY;AAAA,gBAC5B,SAAS,gBAAgB;AAAA,cAC3B,WAAW,oBAAoB,MAAM;AAGnC,sBAAM,OAAO,QAAQ;AAAA,cACvB;AASA,qCAAuB,QAAQ;AAC/B,cAAAA,gBAAe,QAAQ;AACvB,cAAAA,gBAAe,gBAAgB;AAAA,YACjC;AAEA;AACE,yCAA2B;AAAA,YAC7B;AAAA,UACF;AAEA,mBAAS,aAAa,UAAU,SAAS;AACvC,gBAAI,OAAO,aAAa,YAAY;AAClC,oBAAM,IAAI,MAAM,wEAAwE,eAAe,SAAS;AAAA,YAClH;AAEA,qBAAS,KAAK,OAAO;AAAA,UACvB;AAEA,mBAAS,sCAAsC;AAC7C,6BAAiB;AAAA,UACnB;AACA,mBAAS,qCAAqC;AAC5C,mBAAO;AAAA,UACT;AACA,mBAAS,kBAAkB,cAAc,eAAe,UAAU;AAEhE,gBAAI,UAAU,cAAc;AAC5B,0BAAc,UAAU;AAExB,gBAAI,YAAY,MAAM;AACpB,uBAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK;AACvC,oBAAI,SAAS,QAAQ,CAAC;AACtB,oBAAI,WAAW,OAAO;AAEtB,oBAAI,aAAa,MAAM;AACrB,yBAAO,WAAW;AAClB,+BAAa,UAAU,QAAQ;AAAA,gBACjC;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAEA,cAAI,uBAAuB,CAAC;AAG5B,cAAI,kBAAkB,IAAItB,SAAM,UAAU,EAAE;AAC5C,cAAI;AACJ,cAAI;AACJ,cAAI;AACJ,cAAI;AACJ,cAAI;AACJ,cAAI;AACJ,cAAI;AACJ,cAAI;AACJ,cAAI;AACJ,cAAI;AAEJ;AACE,sDAA0C,oBAAI,IAAI;AAClD,6CAAiC,oBAAI,IAAI;AACzC,kEAAsD,oBAAI,IAAI;AAC9D,0DAA8C,oBAAI,IAAI;AACtD,wDAA4C,oBAAI,IAAI;AACpD,gDAAoC,oBAAI,IAAI;AAC5C,qDAAyC,oBAAI,IAAI;AACjD,gDAAoC,oBAAI,IAAI;AAC5C,gBAAI,2BAA2B,oBAAI,IAAI;AAEvC,oCAAwB,SAAU,UAAU,YAAY;AACtD,kBAAI,aAAa,QAAQ,OAAO,aAAa,YAAY;AACvD;AAAA,cACF;AAEA,kBAAI,MAAM,aAAa,MAAM;AAE7B,kBAAI,CAAC,yBAAyB,IAAI,GAAG,GAAG;AACtC,yCAAyB,IAAI,GAAG;AAEhC,sBAAM,mGAAwG,YAAY,QAAQ;AAAA,cACpI;AAAA,YACF;AAEA,0CAA8B,SAAU,MAAM,cAAc;AAC1D,kBAAI,iBAAiB,QAAW;AAC9B,oBAAI,gBAAgB,yBAAyB,IAAI,KAAK;AAEtD,oBAAI,CAAC,kCAAkC,IAAI,aAAa,GAAG;AACzD,oDAAkC,IAAI,aAAa;AAEnD,wBAAM,gHAAqH,aAAa;AAAA,gBAC1I;AAAA,cACF;AAAA,YACF;AAOA,mBAAO,eAAe,sBAAsB,wBAAwB;AAAA,cAClE,YAAY;AAAA,cACZ,OAAO,WAAY;AACjB,sBAAM,IAAI,MAAM,8UAAuW;AAAA,cACzX;AAAA,YACF,CAAC;AACD,mBAAO,OAAO,oBAAoB;AAAA,UACpC;AAEA,mBAAS,2BAA2BsB,iBAAgB,MAAM,0BAA0B,WAAW;AAC7F,gBAAI,YAAYA,gBAAe;AAC/B,gBAAI,eAAe,yBAAyB,WAAW,SAAS;AAEhE;AACE,kBAAKA,gBAAe,OAAO,kBAAkB;AAC3C,2CAA2B,IAAI;AAE/B,oBAAI;AAEF,iCAAe,yBAAyB,WAAW,SAAS;AAAA,gBAC9D,UAAE;AACA,6CAA2B,KAAK;AAAA,gBAClC;AAAA,cACF;AAEA,0CAA4B,MAAM,YAAY;AAAA,YAChD;AAGA,gBAAI,gBAAgB,iBAAiB,QAAQ,iBAAiB,SAAY,YAAYR,QAAO,CAAC,GAAG,WAAW,YAAY;AACxH,YAAAQ,gBAAe,gBAAgB;AAG/B,gBAAIA,gBAAe,UAAU,SAAS;AAEpC,kBAAI,cAAcA,gBAAe;AACjC,0BAAY,YAAY;AAAA,YAC1B;AAAA,UACF;AAEA,cAAI,wBAAwB;AAAA,YAC1B;AAAA,YACA,iBAAiB,SAAU,MAAM,SAAS,UAAU;AAClD,kBAAI,QAAQ,IAAI,IAAI;AACpB,kBAAI,YAAY,iBAAiB;AACjC,kBAAI,OAAO,kBAAkB,KAAK;AAClC,kBAAI,SAAS,aAAa,WAAW,IAAI;AACzC,qBAAO,UAAU;AAEjB,kBAAI,aAAa,UAAa,aAAa,MAAM;AAC/C;AACE,wCAAsB,UAAU,UAAU;AAAA,gBAC5C;AAEA,uBAAO,WAAW;AAAA,cACpB;AAEA,kBAAIuB,QAAO,cAAc,OAAO,QAAQ,IAAI;AAE5C,kBAAIA,UAAS,MAAM;AACjB,sCAAsBA,OAAM,OAAO,MAAM,SAAS;AAClD,oCAAoBA,OAAM,OAAO,IAAI;AAAA,cACvC;AAEA;AACE,yCAAyB,OAAO,IAAI;AAAA,cACtC;AAAA,YACF;AAAA,YACA,qBAAqB,SAAU,MAAM,SAAS,UAAU;AACtD,kBAAI,QAAQ,IAAI,IAAI;AACpB,kBAAI,YAAY,iBAAiB;AACjC,kBAAI,OAAO,kBAAkB,KAAK;AAClC,kBAAI,SAAS,aAAa,WAAW,IAAI;AACzC,qBAAO,MAAM;AACb,qBAAO,UAAU;AAEjB,kBAAI,aAAa,UAAa,aAAa,MAAM;AAC/C;AACE,wCAAsB,UAAU,cAAc;AAAA,gBAChD;AAEA,uBAAO,WAAW;AAAA,cACpB;AAEA,kBAAIA,QAAO,cAAc,OAAO,QAAQ,IAAI;AAE5C,kBAAIA,UAAS,MAAM;AACjB,sCAAsBA,OAAM,OAAO,MAAM,SAAS;AAClD,oCAAoBA,OAAM,OAAO,IAAI;AAAA,cACvC;AAEA;AACE,yCAAyB,OAAO,IAAI;AAAA,cACtC;AAAA,YACF;AAAA,YACA,oBAAoB,SAAU,MAAM,UAAU;AAC5C,kBAAI,QAAQ,IAAI,IAAI;AACpB,kBAAI,YAAY,iBAAiB;AACjC,kBAAI,OAAO,kBAAkB,KAAK;AAClC,kBAAI,SAAS,aAAa,WAAW,IAAI;AACzC,qBAAO,MAAM;AAEb,kBAAI,aAAa,UAAa,aAAa,MAAM;AAC/C;AACE,wCAAsB,UAAU,aAAa;AAAA,gBAC/C;AAEA,uBAAO,WAAW;AAAA,cACpB;AAEA,kBAAIA,QAAO,cAAc,OAAO,QAAQ,IAAI;AAE5C,kBAAIA,UAAS,MAAM;AACjB,sCAAsBA,OAAM,OAAO,MAAM,SAAS;AAClD,oCAAoBA,OAAM,OAAO,IAAI;AAAA,cACvC;AAEA;AACE,yCAAyB,OAAO,IAAI;AAAA,cACtC;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,2BAA2BvB,iBAAgB,MAAM,UAAU,UAAU,UAAU,UAAU,aAAa;AAC7G,gBAAI,WAAWA,gBAAe;AAE9B,gBAAI,OAAO,SAAS,0BAA0B,YAAY;AACxD,kBAAI,eAAe,SAAS,sBAAsB,UAAU,UAAU,WAAW;AAEjF;AACE,oBAAKA,gBAAe,OAAO,kBAAkB;AAC3C,6CAA2B,IAAI;AAE/B,sBAAI;AAEF,mCAAe,SAAS,sBAAsB,UAAU,UAAU,WAAW;AAAA,kBAC/E,UAAE;AACA,+CAA2B,KAAK;AAAA,kBAClC;AAAA,gBACF;AAEA,oBAAI,iBAAiB,QAAW;AAC9B,wBAAM,iHAAsH,yBAAyB,IAAI,KAAK,WAAW;AAAA,gBAC3K;AAAA,cACF;AAEA,qBAAO;AAAA,YACT;AAEA,gBAAI,KAAK,aAAa,KAAK,UAAU,sBAAsB;AACzD,qBAAO,CAAC,aAAa,UAAU,QAAQ,KAAK,CAAC,aAAa,UAAU,QAAQ;AAAA,YAC9E;AAEA,mBAAO;AAAA,UACT;AAEA,mBAAS,mBAAmBA,iBAAgB,MAAM,UAAU;AAC1D,gBAAI,WAAWA,gBAAe;AAE9B;AACE,kBAAId,QAAO,yBAAyB,IAAI,KAAK;AAC7C,kBAAI,gBAAgB,SAAS;AAE7B,kBAAI,CAAC,eAAe;AAClB,oBAAI,KAAK,aAAa,OAAO,KAAK,UAAU,WAAW,YAAY;AACjE,wBAAM,qIAA0IA,KAAI;AAAA,gBACtJ,OAAO;AACL,wBAAM,oHAAyHA,KAAI;AAAA,gBACrI;AAAA,cACF;AAEA,kBAAI,SAAS,mBAAmB,CAAC,SAAS,gBAAgB,wBAAwB,CAAC,SAAS,OAAO;AACjG,sBAAM,qLAA+LA,KAAI;AAAA,cAC3M;AAEA,kBAAI,SAAS,mBAAmB,CAAC,SAAS,gBAAgB,sBAAsB;AAC9E,sBAAM,0LAAoMA,KAAI;AAAA,cAChN;AAEA,kBAAI,SAAS,WAAW;AACtB,sBAAM,2GAAgHA,KAAI;AAAA,cAC5H;AAEA,kBAAI,SAAS,aAAa;AACxB,sBAAM,+GAAoHA,KAAI;AAAA,cAChI;AAEA;AACE,oBAAI,SAAS,cAAc;AACzB,wBAAM,iHAAsHA,KAAI;AAAA,gBAClI;AAEA,oBAAI,KAAK,eAAe,KAAK,gBAAgB,CAAC,uCAAuC,IAAI,IAAI,GAAG;AAC9F,yDAAuC,IAAI,IAAI;AAE/C,wBAAM,sHAA2HA,KAAI;AAAA,gBACvI;AAAA,cACF;AAEA,kBAAI,OAAO,SAAS,0BAA0B,YAAY;AACxD,sBAAM,+KAA8LA,KAAI;AAAA,cAC1M;AAEA,kBAAI,KAAK,aAAa,KAAK,UAAU,wBAAwB,OAAO,SAAS,0BAA0B,aAAa;AAClH,sBAAM,gMAA0M,yBAAyB,IAAI,KAAK,kBAAkB;AAAA,cACtQ;AAEA,kBAAI,OAAO,SAAS,wBAAwB,YAAY;AACtD,sBAAM,6HAAuIA,KAAI;AAAA,cACnJ;AAEA,kBAAI,OAAO,SAAS,6BAA6B,YAAY;AAC3D,sBAAM,oTAAwUA,KAAI;AAAA,cACpV;AAEA,kBAAI,OAAO,SAAS,8BAA8B,YAAY;AAC5D,sBAAM,iGAAsGA,KAAI;AAAA,cAClH;AAEA,kBAAI,OAAO,SAAS,qCAAqC,YAAY;AACnE,sBAAM,+GAAoHA,KAAI;AAAA,cAChI;AAEA,kBAAI,kBAAkB,SAAS,UAAU;AAEzC,kBAAI,SAAS,UAAU,UAAa,iBAAiB;AACnD,sBAAM,4HAAiIA,OAAMA,KAAI;AAAA,cACnJ;AAEA,kBAAI,SAAS,cAAc;AACzB,sBAAM,qJAA0JA,OAAMA,KAAI;AAAA,cAC5K;AAEA,kBAAI,OAAO,SAAS,4BAA4B,cAAc,OAAO,SAAS,uBAAuB,cAAc,CAAC,oDAAoD,IAAI,IAAI,GAAG;AACjL,oEAAoD,IAAI,IAAI;AAE5D,sBAAM,kIAAuI,yBAAyB,IAAI,CAAC;AAAA,cAC7K;AAEA,kBAAI,OAAO,SAAS,6BAA6B,YAAY;AAC3D,sBAAM,gIAAqIA,KAAI;AAAA,cACjJ;AAEA,kBAAI,OAAO,SAAS,6BAA6B,YAAY;AAC3D,sBAAM,gIAAqIA,KAAI;AAAA,cACjJ;AAEA,kBAAI,OAAO,KAAK,4BAA4B,YAAY;AACtD,sBAAM,+HAAoIA,KAAI;AAAA,cAChJ;AAEA,kBAAI,SAAS,SAAS;AAEtB,kBAAI,WAAW,OAAO,WAAW,YAAYkB,SAAQ,MAAM,IAAI;AAC7D,sBAAM,8CAA8ClB,KAAI;AAAA,cAC1D;AAEA,kBAAI,OAAO,SAAS,oBAAoB,cAAc,OAAO,KAAK,sBAAsB,UAAU;AAChG,sBAAM,8FAAmGA,KAAI;AAAA,cAC/G;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,mBAAmBc,iBAAgB,UAAU;AACpD,qBAAS,UAAU;AACnB,YAAAA,gBAAe,YAAY;AAE3B,gBAAI,UAAUA,eAAc;AAE5B;AACE,uBAAS,yBAAyB;AAAA,YACpC;AAAA,UACF;AAEA,mBAAS,uBAAuBA,iBAAgB,MAAM,OAAO;AAC3D,gBAAI,0BAA0B;AAC9B,gBAAI,kBAAkB;AACtB,gBAAI,UAAU;AACd,gBAAI,cAAc,KAAK;AAEvB;AACE,kBAAI,iBAAiB,MAAM;AACzB,oBAAI;AAAA;AAAA,kBACJ,gBAAgB,QAAQ,gBAAgB,UAAa,YAAY,aAAa,sBAAsB,YAAY,aAAa;AAAA;AAE7H,oBAAI,CAAC,WAAW,CAAC,kCAAkC,IAAI,IAAI,GAAG;AAC5D,oDAAkC,IAAI,IAAI;AAC1C,sBAAI,WAAW;AAEf,sBAAI,gBAAgB,QAAW;AAC7B,+BAAW;AAAA,kBACb,WAAW,OAAO,gBAAgB,UAAU;AAC1C,+BAAW,8BAA8B,OAAO,cAAc;AAAA,kBAChE,WAAW,YAAY,aAAa,qBAAqB;AACvD,+BAAW;AAAA,kBACb,WAAW,YAAY,aAAa,QAAW;AAE7C,+BAAW;AAAA,kBACb,OAAO;AACL,+BAAW,iDAAiD,OAAO,KAAK,WAAW,EAAE,KAAK,IAAI,IAAI;AAAA,kBACpG;AAEA,wBAAM,0HAA+H,yBAAyB,IAAI,KAAK,aAAa,QAAQ;AAAA,gBAC9L;AAAA,cACF;AAAA,YACF;AAEA,gBAAI,OAAO,gBAAgB,YAAY,gBAAgB,MAAM;AAC3D,wBAAU,YAAY,WAAW;AAAA,YACnC,OAAO;AACL,gCAAkB,mBAAmBA,iBAAgB,MAAM,IAAI;AAC/D,kBAAI,eAAe,KAAK;AACxB,wCAA0B,iBAAiB,QAAQ,iBAAiB;AACpE,wBAAU,0BAA0B,iBAAiBA,iBAAgB,eAAe,IAAI;AAAA,YAC1F;AAEA,gBAAI,WAAW,IAAI,KAAK,OAAO,OAAO;AAEtC;AACE,kBAAKA,gBAAe,OAAO,kBAAkB;AAC3C,2CAA2B,IAAI;AAE/B,oBAAI;AACF,6BAAW,IAAI,KAAK,OAAO,OAAO;AAAA,gBACpC,UAAE;AACA,6CAA2B,KAAK;AAAA,gBAClC;AAAA,cACF;AAAA,YACF;AAEA,gBAAIkC,SAAQlC,gBAAe,gBAAgB,SAAS,UAAU,QAAQ,SAAS,UAAU,SAAY,SAAS,QAAQ;AACtH,+BAAmBA,iBAAgB,QAAQ;AAE3C;AACE,kBAAI,OAAO,KAAK,6BAA6B,cAAckC,WAAU,MAAM;AACzE,oBAAI,gBAAgB,yBAAyB,IAAI,KAAK;AAEtD,oBAAI,CAAC,+BAA+B,IAAI,aAAa,GAAG;AACtD,iDAA+B,IAAI,aAAa;AAEhD,wBAAM,mRAAkS,eAAe,SAAS,UAAU,OAAO,SAAS,aAAa,aAAa;AAAA,gBACtX;AAAA,cACF;AAKA,kBAAI,OAAO,KAAK,6BAA6B,cAAc,OAAO,SAAS,4BAA4B,YAAY;AACjH,oBAAI,qBAAqB;AACzB,oBAAI,4BAA4B;AAChC,oBAAI,sBAAsB;AAE1B,oBAAI,OAAO,SAAS,uBAAuB,cAAc,SAAS,mBAAmB,iCAAiC,MAAM;AAC1H,uCAAqB;AAAA,gBACvB,WAAW,OAAO,SAAS,8BAA8B,YAAY;AACnE,uCAAqB;AAAA,gBACvB;AAEA,oBAAI,OAAO,SAAS,8BAA8B,cAAc,SAAS,0BAA0B,iCAAiC,MAAM;AACxI,8CAA4B;AAAA,gBAC9B,WAAW,OAAO,SAAS,qCAAqC,YAAY;AAC1E,8CAA4B;AAAA,gBAC9B;AAEA,oBAAI,OAAO,SAAS,wBAAwB,cAAc,SAAS,oBAAoB,iCAAiC,MAAM;AAC5H,wCAAsB;AAAA,gBACxB,WAAW,OAAO,SAAS,+BAA+B,YAAY;AACpE,wCAAsB;AAAA,gBACxB;AAEA,oBAAI,uBAAuB,QAAQ,8BAA8B,QAAQ,wBAAwB,MAAM;AACrG,sBAAI,iBAAiB,yBAAyB,IAAI,KAAK;AAEvD,sBAAI,aAAa,OAAO,KAAK,6BAA6B,aAAa,+BAA+B;AAEtG,sBAAI,CAAC,4CAA4C,IAAI,cAAc,GAAG;AACpE,gEAA4C,IAAI,cAAc;AAE9D,0BAAM,oSAAmT,gBAAgB,YAAY,uBAAuB,OAAO,SAAS,qBAAqB,IAAI,8BAA8B,OAAO,SAAS,4BAA4B,IAAI,wBAAwB,OAAO,SAAS,sBAAsB,EAAE;AAAA,kBACriB;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAIA,gBAAI,yBAAyB;AAC3B,2BAAalC,iBAAgB,iBAAiB,OAAO;AAAA,YACvD;AAEA,mBAAO;AAAA,UACT;AAEA,mBAAS,uBAAuBA,iBAAgB,UAAU;AACxD,gBAAI,WAAW,SAAS;AAExB,gBAAI,OAAO,SAAS,uBAAuB,YAAY;AACrD,uBAAS,mBAAmB;AAAA,YAC9B;AAEA,gBAAI,OAAO,SAAS,8BAA8B,YAAY;AAC5D,uBAAS,0BAA0B;AAAA,YACrC;AAEA,gBAAI,aAAa,SAAS,OAAO;AAC/B;AACE,sBAAM,4IAAsJ,0BAA0BA,eAAc,KAAK,WAAW;AAAA,cACtN;AAEA,oCAAsB,oBAAoB,UAAU,SAAS,OAAO,IAAI;AAAA,YAC1E;AAAA,UACF;AAEA,mBAAS,8BAA8BA,iBAAgB,UAAU,UAAU,aAAa;AACtF,gBAAI,WAAW,SAAS;AAExB,gBAAI,OAAO,SAAS,8BAA8B,YAAY;AAC5D,uBAAS,0BAA0B,UAAU,WAAW;AAAA,YAC1D;AAEA,gBAAI,OAAO,SAAS,qCAAqC,YAAY;AACnE,uBAAS,iCAAiC,UAAU,WAAW;AAAA,YACjE;AAEA,gBAAI,SAAS,UAAU,UAAU;AAC/B;AACE,oBAAI,gBAAgB,0BAA0BA,eAAc,KAAK;AAEjE,oBAAI,CAAC,wCAAwC,IAAI,aAAa,GAAG;AAC/D,0DAAwC,IAAI,aAAa;AAEzD,wBAAM,mJAA6J,aAAa;AAAA,gBAClL;AAAA,cACF;AAEA,oCAAsB,oBAAoB,UAAU,SAAS,OAAO,IAAI;AAAA,YAC1E;AAAA,UACF;AAGA,mBAAS,mBAAmBA,iBAAgB,MAAM,UAAU2B,cAAa;AACvE;AACE,iCAAmB3B,iBAAgB,MAAM,QAAQ;AAAA,YACnD;AAEA,gBAAI,WAAWA,gBAAe;AAC9B,qBAAS,QAAQ;AACjB,qBAAS,QAAQA,gBAAe;AAChC,qBAAS,OAAO;AAChB,kCAAsBA,eAAc;AACpC,gBAAI,cAAc,KAAK;AAEvB,gBAAI,OAAO,gBAAgB,YAAY,gBAAgB,MAAM;AAC3D,uBAAS,UAAU,YAAY,WAAW;AAAA,YAC5C,OAAO;AACL,kBAAI,kBAAkB,mBAAmBA,iBAAgB,MAAM,IAAI;AACnE,uBAAS,UAAU,iBAAiBA,iBAAgB,eAAe;AAAA,YACrE;AAEA;AACE,kBAAI,SAAS,UAAU,UAAU;AAC/B,oBAAI,gBAAgB,yBAAyB,IAAI,KAAK;AAEtD,oBAAI,CAAC,0CAA0C,IAAI,aAAa,GAAG;AACjE,4DAA0C,IAAI,aAAa;AAE3D,wBAAM,wKAAkL,aAAa;AAAA,gBACvM;AAAA,cACF;AAEA,kBAAIA,gBAAe,OAAO,kBAAkB;AAC1C,wCAAwB,2BAA2BA,iBAAgB,QAAQ;AAAA,cAC7E;AAEA;AACE,wCAAwB,8BAA8BA,iBAAgB,QAAQ;AAAA,cAChF;AAAA,YACF;AAEA,qBAAS,QAAQA,gBAAe;AAChC,gBAAI,2BAA2B,KAAK;AAEpC,gBAAI,OAAO,6BAA6B,YAAY;AAClD,yCAA2BA,iBAAgB,MAAM,0BAA0B,QAAQ;AACnF,uBAAS,QAAQA,gBAAe;AAAA,YAClC;AAIA,gBAAI,OAAO,KAAK,6BAA6B,cAAc,OAAO,SAAS,4BAA4B,eAAe,OAAO,SAAS,8BAA8B,cAAc,OAAO,SAAS,uBAAuB,aAAa;AACpO,qCAAuBA,iBAAgB,QAAQ;AAG/C,iCAAmBA,iBAAgB,UAAU,UAAU2B,YAAW;AAClE,uBAAS,QAAQ3B,gBAAe;AAAA,YAClC;AAEA,gBAAI,OAAO,SAAS,sBAAsB,YAAY;AACpD,kBAAI,aAAa;AAEjB;AACE,8BAAc;AAAA,cAChB;AAEA,mBAAMA,gBAAe,OAAO,uBAAuB,QAAQ;AACzD,8BAAc;AAAA,cAChB;AAEA,cAAAA,gBAAe,SAAS;AAAA,YAC1B;AAAA,UACF;AAEA,mBAAS,yBAAyBA,iBAAgB,MAAM,UAAU2B,cAAa;AAC7E,gBAAI,WAAW3B,gBAAe;AAC9B,gBAAI,WAAWA,gBAAe;AAC9B,qBAAS,QAAQ;AACjB,gBAAI,aAAa,SAAS;AAC1B,gBAAI,cAAc,KAAK;AACvB,gBAAI,cAAc;AAElB,gBAAI,OAAO,gBAAgB,YAAY,gBAAgB,MAAM;AAC3D,4BAAc,YAAY,WAAW;AAAA,YACvC,OAAO;AACL,kBAAI,4BAA4B,mBAAmBA,iBAAgB,MAAM,IAAI;AAC7E,4BAAc,iBAAiBA,iBAAgB,yBAAyB;AAAA,YAC1E;AAEA,gBAAI,2BAA2B,KAAK;AACpC,gBAAI,mBAAmB,OAAO,6BAA6B,cAAc,OAAO,SAAS,4BAA4B;AAMrH,gBAAI,CAAC,qBAAqB,OAAO,SAAS,qCAAqC,cAAc,OAAO,SAAS,8BAA8B,aAAa;AACtJ,kBAAI,aAAa,YAAY,eAAe,aAAa;AACvD,8CAA8BA,iBAAgB,UAAU,UAAU,WAAW;AAAA,cAC/E;AAAA,YACF;AAEA,gDAAoC;AACpC,gBAAI,WAAWA,gBAAe;AAC9B,gBAAI,WAAW,SAAS,QAAQ;AAChC,+BAAmBA,iBAAgB,UAAU,UAAU2B,YAAW;AAClE,uBAAW3B,gBAAe;AAE1B,gBAAI,aAAa,YAAY,aAAa,YAAY,CAAC,kBAAkB,KAAK,CAAC,mCAAmC,GAAG;AAGnH,kBAAI,OAAO,SAAS,sBAAsB,YAAY;AACpD,oBAAI,aAAa;AAEjB;AACE,gCAAc;AAAA,gBAChB;AAEA,qBAAMA,gBAAe,OAAO,uBAAuB,QAAQ;AACzD,gCAAc;AAAA,gBAChB;AAEA,gBAAAA,gBAAe,SAAS;AAAA,cAC1B;AAEA,qBAAO;AAAA,YACT;AAEA,gBAAI,OAAO,6BAA6B,YAAY;AAClD,yCAA2BA,iBAAgB,MAAM,0BAA0B,QAAQ;AACnF,yBAAWA,gBAAe;AAAA,YAC5B;AAEA,gBAAI,eAAe,mCAAmC,KAAK,2BAA2BA,iBAAgB,MAAM,UAAU,UAAU,UAAU,UAAU,WAAW;AAE/J,gBAAI,cAAc;AAGhB,kBAAI,CAAC,qBAAqB,OAAO,SAAS,8BAA8B,cAAc,OAAO,SAAS,uBAAuB,aAAa;AACxI,oBAAI,OAAO,SAAS,uBAAuB,YAAY;AACrD,2BAAS,mBAAmB;AAAA,gBAC9B;AAEA,oBAAI,OAAO,SAAS,8BAA8B,YAAY;AAC5D,2BAAS,0BAA0B;AAAA,gBACrC;AAAA,cACF;AAEA,kBAAI,OAAO,SAAS,sBAAsB,YAAY;AACpD,oBAAI,cAAc;AAElB;AACE,iCAAe;AAAA,gBACjB;AAEA,qBAAMA,gBAAe,OAAO,uBAAuB,QAAQ;AACzD,iCAAe;AAAA,gBACjB;AAEA,gBAAAA,gBAAe,SAAS;AAAA,cAC1B;AAAA,YACF,OAAO;AAGL,kBAAI,OAAO,SAAS,sBAAsB,YAAY;AACpD,oBAAI,eAAe;AAEnB;AACE,kCAAgB;AAAA,gBAClB;AAEA,qBAAMA,gBAAe,OAAO,uBAAuB,QAAQ;AACzD,kCAAgB;AAAA,gBAClB;AAEA,gBAAAA,gBAAe,SAAS;AAAA,cAC1B;AAIA,cAAAA,gBAAe,gBAAgB;AAC/B,cAAAA,gBAAe,gBAAgB;AAAA,YACjC;AAIA,qBAAS,QAAQ;AACjB,qBAAS,QAAQ;AACjB,qBAAS,UAAU;AACnB,mBAAO;AAAA,UACT;AAGA,mBAAS,oBAAoBqB,UAASrB,iBAAgB,MAAM,UAAU2B,cAAa;AACjF,gBAAI,WAAW3B,gBAAe;AAC9B,6BAAiBqB,UAASrB,eAAc;AACxC,gBAAI,qBAAqBA,gBAAe;AACxC,gBAAI,WAAWA,gBAAe,SAASA,gBAAe,cAAc,qBAAqB,oBAAoBA,gBAAe,MAAM,kBAAkB;AACpJ,qBAAS,QAAQ;AACjB,gBAAI,qBAAqBA,gBAAe;AACxC,gBAAI,aAAa,SAAS;AAC1B,gBAAI,cAAc,KAAK;AACvB,gBAAI,cAAc;AAElB,gBAAI,OAAO,gBAAgB,YAAY,gBAAgB,MAAM;AAC3D,4BAAc,YAAY,WAAW;AAAA,YACvC,OAAO;AACL,kBAAI,sBAAsB,mBAAmBA,iBAAgB,MAAM,IAAI;AACvE,4BAAc,iBAAiBA,iBAAgB,mBAAmB;AAAA,YACpE;AAEA,gBAAI,2BAA2B,KAAK;AACpC,gBAAI,mBAAmB,OAAO,6BAA6B,cAAc,OAAO,SAAS,4BAA4B;AAMrH,gBAAI,CAAC,qBAAqB,OAAO,SAAS,qCAAqC,cAAc,OAAO,SAAS,8BAA8B,aAAa;AACtJ,kBAAI,uBAAuB,sBAAsB,eAAe,aAAa;AAC3E,8CAA8BA,iBAAgB,UAAU,UAAU,WAAW;AAAA,cAC/E;AAAA,YACF;AAEA,gDAAoC;AACpC,gBAAI,WAAWA,gBAAe;AAC9B,gBAAI,WAAW,SAAS,QAAQ;AAChC,+BAAmBA,iBAAgB,UAAU,UAAU2B,YAAW;AAClE,uBAAW3B,gBAAe;AAE1B,gBAAI,uBAAuB,sBAAsB,aAAa,YAAY,CAAC,kBAAkB,KAAK,CAAC,mCAAmC,KAAK,CAAE,8BAAkC;AAG7K,kBAAI,OAAO,SAAS,uBAAuB,YAAY;AACrD,oBAAI,uBAAuBqB,SAAQ,iBAAiB,aAAaA,SAAQ,eAAe;AACtF,kBAAArB,gBAAe,SAAS;AAAA,gBAC1B;AAAA,cACF;AAEA,kBAAI,OAAO,SAAS,4BAA4B,YAAY;AAC1D,oBAAI,uBAAuBqB,SAAQ,iBAAiB,aAAaA,SAAQ,eAAe;AACtF,kBAAArB,gBAAe,SAAS;AAAA,gBAC1B;AAAA,cACF;AAEA,qBAAO;AAAA,YACT;AAEA,gBAAI,OAAO,6BAA6B,YAAY;AAClD,yCAA2BA,iBAAgB,MAAM,0BAA0B,QAAQ;AACnF,yBAAWA,gBAAe;AAAA,YAC5B;AAEA,gBAAI,eAAe,mCAAmC,KAAK,2BAA2BA,iBAAgB,MAAM,UAAU,UAAU,UAAU,UAAU,WAAW;AAAA;AAAA;AAAA;AAAA,YAI/J;AAEA,gBAAI,cAAc;AAGhB,kBAAI,CAAC,qBAAqB,OAAO,SAAS,+BAA+B,cAAc,OAAO,SAAS,wBAAwB,aAAa;AAC1I,oBAAI,OAAO,SAAS,wBAAwB,YAAY;AACtD,2BAAS,oBAAoB,UAAU,UAAU,WAAW;AAAA,gBAC9D;AAEA,oBAAI,OAAO,SAAS,+BAA+B,YAAY;AAC7D,2BAAS,2BAA2B,UAAU,UAAU,WAAW;AAAA,gBACrE;AAAA,cACF;AAEA,kBAAI,OAAO,SAAS,uBAAuB,YAAY;AACrD,gBAAAA,gBAAe,SAAS;AAAA,cAC1B;AAEA,kBAAI,OAAO,SAAS,4BAA4B,YAAY;AAC1D,gBAAAA,gBAAe,SAAS;AAAA,cAC1B;AAAA,YACF,OAAO;AAGL,kBAAI,OAAO,SAAS,uBAAuB,YAAY;AACrD,oBAAI,uBAAuBqB,SAAQ,iBAAiB,aAAaA,SAAQ,eAAe;AACtF,kBAAArB,gBAAe,SAAS;AAAA,gBAC1B;AAAA,cACF;AAEA,kBAAI,OAAO,SAAS,4BAA4B,YAAY;AAC1D,oBAAI,uBAAuBqB,SAAQ,iBAAiB,aAAaA,SAAQ,eAAe;AACtF,kBAAArB,gBAAe,SAAS;AAAA,gBAC1B;AAAA,cACF;AAIA,cAAAA,gBAAe,gBAAgB;AAC/B,cAAAA,gBAAe,gBAAgB;AAAA,YACjC;AAIA,qBAAS,QAAQ;AACjB,qBAAS,QAAQ;AACjB,qBAAS,UAAU;AACnB,mBAAO;AAAA,UACT;AAEA,cAAI;AACJ,cAAI;AACJ,cAAI;AACJ,cAAI;AACJ,cAAI;AAEJ,cAAI,oBAAoB,SAAU,OAAO,aAAa;AAAA,UAAC;AAEvD;AACE,+BAAmB;AACnB,qCAAyB;AACzB,qCAAyB,CAAC;AAO1B,oCAAwB,CAAC;AACzB,0CAA8B,CAAC;AAE/B,gCAAoB,SAAU,OAAO,aAAa;AAChD,kBAAI,UAAU,QAAQ,OAAO,UAAU,UAAU;AAC/C;AAAA,cACF;AAEA,kBAAI,CAAC,MAAM,UAAU,MAAM,OAAO,aAAa,MAAM,OAAO,MAAM;AAChE;AAAA,cACF;AAEA,kBAAI,OAAO,MAAM,WAAW,UAAU;AACpC,sBAAM,IAAI,MAAM,iIAAsI;AAAA,cACxJ;AAEA,oBAAM,OAAO,YAAY;AACzB,kBAAI,gBAAgB,0BAA0B,WAAW,KAAK;AAE9D,kBAAI,sBAAsB,aAAa,GAAG;AACxC;AAAA,cACF;AAEA,oCAAsB,aAAa,IAAI;AAEvC,oBAAM,uHAAiI;AAAA,YACzI;AAAA,UACF;AAEA,mBAAS,UAAU,aAAaqB,UAAS,SAAS;AAChD,gBAAI,WAAW,QAAQ;AAEvB,gBAAI,aAAa,QAAQ,OAAO,aAAa,cAAc,OAAO,aAAa,UAAU;AACvF;AAGE,qBAAK,YAAY,OAAO,oBAAoB;AAAA;AAAA;AAAA,gBAG5C,EAAE,QAAQ,UAAU,QAAQ,SAAS,QAAQ,OAAO,cAAc,QAAQ,QAAQ;AAChF,sBAAI,gBAAgB,0BAA0B,WAAW,KAAK;AAE9D,sBAAI,CAAC,uBAAuB,aAAa,GAAG;AAC1C;AACE,4BAAM,gRAAoS,QAAQ;AAAA,oBACpT;AAEA,2CAAuB,aAAa,IAAI;AAAA,kBAC1C;AAAA,gBACF;AAAA,cACF;AAEA,kBAAI,QAAQ,QAAQ;AAClB,oBAAI,QAAQ,QAAQ;AACpB,oBAAI;AAEJ,oBAAI,OAAO;AACT,sBAAI,aAAa;AAEjB,sBAAI,WAAW,QAAQ,gBAAgB;AACrC,0BAAM,IAAI,MAAM,4KAA2L;AAAA,kBAC7M;AAEA,yBAAO,WAAW;AAAA,gBACpB;AAEA,oBAAI,CAAC,MAAM;AACT,wBAAM,IAAI,MAAM,kCAAkC,WAAW,wEAA6E;AAAA,gBAC5I;AAGA,oBAAI,eAAe;AAEnB;AACE,0CAAwB,UAAU,KAAK;AAAA,gBACzC;AAEA,oBAAI,YAAY,KAAK;AAErB,oBAAIA,aAAY,QAAQA,SAAQ,QAAQ,QAAQ,OAAOA,SAAQ,QAAQ,cAAcA,SAAQ,IAAI,eAAe,WAAW;AACzH,yBAAOA,SAAQ;AAAA,gBACjB;AAEA,oBAAI,MAAM,SAAU,OAAO;AACzB,sBAAI,OAAO,aAAa;AAExB,sBAAI,SAAS,iBAAiB;AAE5B,2BAAO,aAAa,OAAO,CAAC;AAAA,kBAC9B;AAEA,sBAAI,UAAU,MAAM;AAClB,2BAAO,KAAK,SAAS;AAAA,kBACvB,OAAO;AACL,yBAAK,SAAS,IAAI;AAAA,kBACpB;AAAA,gBACF;AAEA,oBAAI,aAAa;AACjB,uBAAO;AAAA,cACT,OAAO;AACL,oBAAI,OAAO,aAAa,UAAU;AAChC,wBAAM,IAAI,MAAM,4FAA4F;AAAA,gBAC9G;AAEA,oBAAI,CAAC,QAAQ,QAAQ;AACnB,wBAAM,IAAI,MAAM,4CAA4C,WAAW,0VAAmX;AAAA,gBAC5b;AAAA,cACF;AAAA,YACF;AAEA,mBAAO;AAAA,UACT;AAEA,mBAAS,yBAAyB,aAAa,UAAU;AACvD,gBAAI,cAAc,OAAO,UAAU,SAAS,KAAK,QAAQ;AACzD,kBAAM,IAAI,MAAM,qDAAqD,gBAAgB,oBAAoB,uBAAuB,OAAO,KAAK,QAAQ,EAAE,KAAK,IAAI,IAAI,MAAM,eAAe,2EAAqF;AAAA,UAC/Q;AAEA,mBAAS,mBAAmB,aAAa;AACvC;AACE,kBAAI,gBAAgB,0BAA0B,WAAW,KAAK;AAE9D,kBAAI,4BAA4B,aAAa,GAAG;AAC9C;AAAA,cACF;AAEA,0CAA4B,aAAa,IAAI;AAE7C,oBAAM,2LAAqM;AAAA,YAC7M;AAAA,UACF;AAEA,mBAAS,YAAY,UAAU;AAC7B,gBAAI,UAAU,SAAS;AACvB,gBAAItB,UAAO,SAAS;AACpB,mBAAOA,QAAK,OAAO;AAAA,UACrB;AAMA,mBAAS,gBAAgB,wBAAwB;AAC/C,qBAAS,YAAY,aAAa,eAAe;AAC/C,kBAAI,CAAC,wBAAwB;AAE3B;AAAA,cACF;AAEA,kBAAI,YAAY,YAAY;AAE5B,kBAAI,cAAc,MAAM;AACtB,4BAAY,YAAY,CAAC,aAAa;AACtC,4BAAY,SAAS;AAAA,cACvB,OAAO;AACL,0BAAU,KAAK,aAAa;AAAA,cAC9B;AAAA,YACF;AAEA,qBAAS,wBAAwB,aAAa,mBAAmB;AAC/D,kBAAI,CAAC,wBAAwB;AAE3B,uBAAO;AAAA,cACT;AAIA,kBAAI,gBAAgB;AAEpB,qBAAO,kBAAkB,MAAM;AAC7B,4BAAY,aAAa,aAAa;AACtC,gCAAgB,cAAc;AAAA,cAChC;AAEA,qBAAO;AAAA,YACT;AAEA,qBAAS,qBAAqB,aAAa,mBAAmB;AAI5D,kBAAI,mBAAmB,oBAAI,IAAI;AAC/B,kBAAI,gBAAgB;AAEpB,qBAAO,kBAAkB,MAAM;AAC7B,oBAAI,cAAc,QAAQ,MAAM;AAC9B,mCAAiB,IAAI,cAAc,KAAK,aAAa;AAAA,gBACvD,OAAO;AACL,mCAAiB,IAAI,cAAc,OAAO,aAAa;AAAA,gBACzD;AAEA,gCAAgB,cAAc;AAAA,cAChC;AAEA,qBAAO;AAAA,YACT;AAEA,qBAAS,SAAS,OAAO,cAAc;AAGrC,kBAAI,QAAQ,qBAAqB,OAAO,YAAY;AACpD,oBAAM,QAAQ;AACd,oBAAM,UAAU;AAChB,qBAAO;AAAA,YACT;AAEA,qBAAS,WAAW,UAAU,iBAAiB,UAAU;AACvD,uBAAS,QAAQ;AAEjB,kBAAI,CAAC,wBAAwB;AAG3B,yBAAS,SAAS;AAClB,uBAAO;AAAA,cACT;AAEA,kBAAIsB,WAAU,SAAS;AAEvB,kBAAIA,aAAY,MAAM;AACpB,oBAAI,WAAWA,SAAQ;AAEvB,oBAAI,WAAW,iBAAiB;AAE9B,2BAAS,SAAS;AAClB,yBAAO;AAAA,gBACT,OAAO;AAEL,yBAAO;AAAA,gBACT;AAAA,cACF,OAAO;AAEL,yBAAS,SAAS;AAClB,uBAAO;AAAA,cACT;AAAA,YACF;AAEA,qBAAS,iBAAiB,UAAU;AAGlC,kBAAI,0BAA0B,SAAS,cAAc,MAAM;AACzD,yBAAS,SAAS;AAAA,cACpB;AAEA,qBAAO;AAAA,YACT;AAEA,qBAAS,eAAe,aAAaA,UAAS,aAAa,OAAO;AAChE,kBAAIA,aAAY,QAAQA,SAAQ,QAAQ,UAAU;AAEhD,oBAAI,UAAU,oBAAoB,aAAa,YAAY,MAAM,KAAK;AACtE,wBAAQ,SAAS;AACjB,uBAAO;AAAA,cACT,OAAO;AAEL,oBAAI,WAAW,SAASA,UAAS,WAAW;AAC5C,yBAAS,SAAS;AAClB,uBAAO;AAAA,cACT;AAAA,YACF;AAEA,qBAAS,cAAc,aAAaA,UAAS,SAAS,OAAO;AAC3D,kBAAI,cAAc,QAAQ;AAE1B,kBAAI,gBAAgB,qBAAqB;AACvC,uBAAOiC,gBAAe,aAAajC,UAAS,QAAQ,MAAM,UAAU,OAAO,QAAQ,GAAG;AAAA,cACxF;AAEA,kBAAIA,aAAY,MAAM;AACpB,oBAAIA,SAAQ,gBAAgB;AAAA,gBAC3B,kCAAkCA,UAAS,OAAO;AAAA;AAAA;AAAA;AAAA,gBAInD,OAAO,gBAAgB,YAAY,gBAAgB,QAAQ,YAAY,aAAa,mBAAmB,YAAY,WAAW,MAAMA,SAAQ,MAAM;AAEhJ,sBAAI,WAAW,SAASA,UAAS,QAAQ,KAAK;AAC9C,2BAAS,MAAM,UAAU,aAAaA,UAAS,OAAO;AACtD,2BAAS,SAAS;AAElB;AACE,6BAAS,eAAe,QAAQ;AAChC,6BAAS,cAAc,QAAQ;AAAA,kBACjC;AAEA,yBAAO;AAAA,gBACT;AAAA,cACF;AAGA,kBAAI,UAAU,uBAAuB,SAAS,YAAY,MAAM,KAAK;AACrE,sBAAQ,MAAM,UAAU,aAAaA,UAAS,OAAO;AACrD,sBAAQ,SAAS;AACjB,qBAAO;AAAA,YACT;AAEA,qBAAS,aAAa,aAAaA,UAAS,QAAQ,OAAO;AACzD,kBAAIA,aAAY,QAAQA,SAAQ,QAAQ,cAAcA,SAAQ,UAAU,kBAAkB,OAAO,iBAAiBA,SAAQ,UAAU,mBAAmB,OAAO,gBAAgB;AAE5K,oBAAI,UAAU,sBAAsB,QAAQ,YAAY,MAAM,KAAK;AACnE,wBAAQ,SAAS;AACjB,uBAAO;AAAA,cACT,OAAO;AAEL,oBAAI,WAAW,SAASA,UAAS,OAAO,YAAY,CAAC,CAAC;AACtD,yBAAS,SAAS;AAClB,uBAAO;AAAA,cACT;AAAA,YACF;AAEA,qBAASiC,gBAAe,aAAajC,UAAS,UAAU,OAAO,KAAK;AAClE,kBAAIA,aAAY,QAAQA,SAAQ,QAAQvC,WAAU;AAEhD,oBAAI,UAAU,wBAAwB,UAAU,YAAY,MAAM,OAAO,GAAG;AAC5E,wBAAQ,SAAS;AACjB,uBAAO;AAAA,cACT,OAAO;AAEL,oBAAI,WAAW,SAASuC,UAAS,QAAQ;AACzC,yBAAS,SAAS;AAClB,uBAAO;AAAA,cACT;AAAA,YACF;AAEA,qBAAS,YAAY,aAAa,UAAU,OAAO;AACjD,kBAAI,OAAO,aAAa,YAAY,aAAa,MAAM,OAAO,aAAa,UAAU;AAInF,oBAAI,UAAU,oBAAoB,KAAK,UAAU,YAAY,MAAM,KAAK;AACxE,wBAAQ,SAAS;AACjB,uBAAO;AAAA,cACT;AAEA,kBAAI,OAAO,aAAa,YAAY,aAAa,MAAM;AACrD,wBAAQ,SAAS,UAAU;AAAA,kBACzB,KAAK,oBACH;AACE,wBAAI,WAAW,uBAAuB,UAAU,YAAY,MAAM,KAAK;AAEvE,6BAAS,MAAM,UAAU,aAAa,MAAM,QAAQ;AACpD,6BAAS,SAAS;AAClB,2BAAO;AAAA,kBACT;AAAA,kBAEF,KAAK,mBACH;AACE,wBAAI,YAAY,sBAAsB,UAAU,YAAY,MAAM,KAAK;AAEvE,8BAAU,SAAS;AACnB,2BAAO;AAAA,kBACT;AAAA,kBAEF,KAAK,iBACH;AACE,wBAAI,UAAU,SAAS;AACvB,wBAAItB,UAAO,SAAS;AACpB,2BAAO,YAAY,aAAaA,QAAK,OAAO,GAAG,KAAK;AAAA,kBACtD;AAAA,gBACJ;AAEA,oBAAIK,SAAQ,QAAQ,KAAK,cAAc,QAAQ,GAAG;AAChD,sBAAI,YAAY,wBAAwB,UAAU,YAAY,MAAM,OAAO,IAAI;AAE/E,4BAAU,SAAS;AACnB,yBAAO;AAAA,gBACT;AAEA,yCAAyB,aAAa,QAAQ;AAAA,cAChD;AAEA;AACE,oBAAI,OAAO,aAAa,YAAY;AAClC,qCAAmB,WAAW;AAAA,gBAChC;AAAA,cACF;AAEA,qBAAO;AAAA,YACT;AAEA,qBAAS,WAAW,aAAa,UAAU,UAAU,OAAO;AAE1D,kBAAI,MAAM,aAAa,OAAO,SAAS,MAAM;AAE7C,kBAAI,OAAO,aAAa,YAAY,aAAa,MAAM,OAAO,aAAa,UAAU;AAInF,oBAAI,QAAQ,MAAM;AAChB,yBAAO;AAAA,gBACT;AAEA,uBAAO,eAAe,aAAa,UAAU,KAAK,UAAU,KAAK;AAAA,cACnE;AAEA,kBAAI,OAAO,aAAa,YAAY,aAAa,MAAM;AACrD,wBAAQ,SAAS,UAAU;AAAA,kBACzB,KAAK,oBACH;AACE,wBAAI,SAAS,QAAQ,KAAK;AACxB,6BAAO,cAAc,aAAa,UAAU,UAAU,KAAK;AAAA,oBAC7D,OAAO;AACL,6BAAO;AAAA,oBACT;AAAA,kBACF;AAAA,kBAEF,KAAK,mBACH;AACE,wBAAI,SAAS,QAAQ,KAAK;AACxB,6BAAO,aAAa,aAAa,UAAU,UAAU,KAAK;AAAA,oBAC5D,OAAO;AACL,6BAAO;AAAA,oBACT;AAAA,kBACF;AAAA,kBAEF,KAAK,iBACH;AACE,wBAAI,UAAU,SAAS;AACvB,wBAAIL,UAAO,SAAS;AACpB,2BAAO,WAAW,aAAa,UAAUA,QAAK,OAAO,GAAG,KAAK;AAAA,kBAC/D;AAAA,gBACJ;AAEA,oBAAIK,SAAQ,QAAQ,KAAK,cAAc,QAAQ,GAAG;AAChD,sBAAI,QAAQ,MAAM;AAChB,2BAAO;AAAA,kBACT;AAEA,yBAAOkD,gBAAe,aAAa,UAAU,UAAU,OAAO,IAAI;AAAA,gBACpE;AAEA,yCAAyB,aAAa,QAAQ;AAAA,cAChD;AAEA;AACE,oBAAI,OAAO,aAAa,YAAY;AAClC,qCAAmB,WAAW;AAAA,gBAChC;AAAA,cACF;AAEA,qBAAO;AAAA,YACT;AAEA,qBAAS,cAAc,kBAAkB,aAAa,QAAQ,UAAU,OAAO;AAC7E,kBAAI,OAAO,aAAa,YAAY,aAAa,MAAM,OAAO,aAAa,UAAU;AAGnF,oBAAI,eAAe,iBAAiB,IAAI,MAAM,KAAK;AACnD,uBAAO,eAAe,aAAa,cAAc,KAAK,UAAU,KAAK;AAAA,cACvE;AAEA,kBAAI,OAAO,aAAa,YAAY,aAAa,MAAM;AACrD,wBAAQ,SAAS,UAAU;AAAA,kBACzB,KAAK,oBACH;AACE,wBAAI,gBAAgB,iBAAiB,IAAI,SAAS,QAAQ,OAAO,SAAS,SAAS,GAAG,KAAK;AAE3F,2BAAO,cAAc,aAAa,eAAe,UAAU,KAAK;AAAA,kBAClE;AAAA,kBAEF,KAAK,mBACH;AACE,wBAAI,iBAAiB,iBAAiB,IAAI,SAAS,QAAQ,OAAO,SAAS,SAAS,GAAG,KAAK;AAE5F,2BAAO,aAAa,aAAa,gBAAgB,UAAU,KAAK;AAAA,kBAClE;AAAA,kBAEF,KAAK;AACH,wBAAI,UAAU,SAAS;AACvB,wBAAIvD,UAAO,SAAS;AACpB,2BAAO,cAAc,kBAAkB,aAAa,QAAQA,QAAK,OAAO,GAAG,KAAK;AAAA,gBACpF;AAEA,oBAAIK,SAAQ,QAAQ,KAAK,cAAc,QAAQ,GAAG;AAChD,sBAAI,iBAAiB,iBAAiB,IAAI,MAAM,KAAK;AAErD,yBAAOkD,gBAAe,aAAa,gBAAgB,UAAU,OAAO,IAAI;AAAA,gBAC1E;AAEA,yCAAyB,aAAa,QAAQ;AAAA,cAChD;AAEA;AACE,oBAAI,OAAO,aAAa,YAAY;AAClC,qCAAmB,WAAW;AAAA,gBAChC;AAAA,cACF;AAEA,qBAAO;AAAA,YACT;AAMA,qBAAS,iBAAiB,OAAO,WAAW,aAAa;AACvD;AACE,oBAAI,OAAO,UAAU,YAAY,UAAU,MAAM;AAC/C,yBAAO;AAAA,gBACT;AAEA,wBAAQ,MAAM,UAAU;AAAA,kBACtB,KAAK;AAAA,kBACL,KAAK;AACH,sCAAkB,OAAO,WAAW;AACpC,wBAAI,MAAM,MAAM;AAEhB,wBAAI,OAAO,QAAQ,UAAU;AAC3B;AAAA,oBACF;AAEA,wBAAI,cAAc,MAAM;AACtB,kCAAY,oBAAI,IAAI;AACpB,gCAAU,IAAI,GAAG;AACjB;AAAA,oBACF;AAEA,wBAAI,CAAC,UAAU,IAAI,GAAG,GAAG;AACvB,gCAAU,IAAI,GAAG;AACjB;AAAA,oBACF;AAEA,0BAAM,kRAAiS,GAAG;AAE1S;AAAA,kBAEF,KAAK;AACH,wBAAI,UAAU,MAAM;AACpB,wBAAIvD,UAAO,MAAM;AACjB,qCAAiBA,QAAK,OAAO,GAAG,WAAW,WAAW;AACtD;AAAA,gBACJ;AAAA,cACF;AAEA,qBAAO;AAAA,YACT;AAEA,qBAAS,uBAAuB,aAAa,mBAAmB,aAAa,OAAO;AAgBlF;AAEE,oBAAI,YAAY;AAEhB,yBAAS,IAAI,GAAG,IAAI,YAAY,QAAQ,KAAK;AAC3C,sBAAI,QAAQ,YAAY,CAAC;AACzB,8BAAY,iBAAiB,OAAO,WAAW,WAAW;AAAA,gBAC5D;AAAA,cACF;AAEA,kBAAI,sBAAsB;AAC1B,kBAAI,mBAAmB;AACvB,kBAAI,WAAW;AACf,kBAAI,kBAAkB;AACtB,kBAAI,SAAS;AACb,kBAAI,eAAe;AAEnB,qBAAO,aAAa,QAAQ,SAAS,YAAY,QAAQ,UAAU;AACjE,oBAAI,SAAS,QAAQ,QAAQ;AAC3B,iCAAe;AACf,6BAAW;AAAA,gBACb,OAAO;AACL,iCAAe,SAAS;AAAA,gBAC1B;AAEA,oBAAI,WAAW,WAAW,aAAa,UAAU,YAAY,MAAM,GAAG,KAAK;AAE3E,oBAAI,aAAa,MAAM;AAKrB,sBAAI,aAAa,MAAM;AACrB,+BAAW;AAAA,kBACb;AAEA;AAAA,gBACF;AAEA,oBAAI,wBAAwB;AAC1B,sBAAI,YAAY,SAAS,cAAc,MAAM;AAG3C,gCAAY,aAAa,QAAQ;AAAA,kBACnC;AAAA,gBACF;AAEA,kCAAkB,WAAW,UAAU,iBAAiB,MAAM;AAE9D,oBAAI,qBAAqB,MAAM;AAE7B,wCAAsB;AAAA,gBACxB,OAAO;AAKL,mCAAiB,UAAU;AAAA,gBAC7B;AAEA,mCAAmB;AACnB,2BAAW;AAAA,cACb;AAEA,kBAAI,WAAW,YAAY,QAAQ;AAEjC,wCAAwB,aAAa,QAAQ;AAE7C,oBAAI,eAAe,GAAG;AACpB,sBAAI,gBAAgB;AACpB,+BAAa,aAAa,aAAa;AAAA,gBACzC;AAEA,uBAAO;AAAA,cACT;AAEA,kBAAI,aAAa,MAAM;AAGrB,uBAAO,SAAS,YAAY,QAAQ,UAAU;AAC5C,sBAAI,YAAY,YAAY,aAAa,YAAY,MAAM,GAAG,KAAK;AAEnE,sBAAI,cAAc,MAAM;AACtB;AAAA,kBACF;AAEA,oCAAkB,WAAW,WAAW,iBAAiB,MAAM;AAE/D,sBAAI,qBAAqB,MAAM;AAE7B,0CAAsB;AAAA,kBACxB,OAAO;AACL,qCAAiB,UAAU;AAAA,kBAC7B;AAEA,qCAAmB;AAAA,gBACrB;AAEA,oBAAI,eAAe,GAAG;AACpB,sBAAI,iBAAiB;AACrB,+BAAa,aAAa,cAAc;AAAA,gBAC1C;AAEA,uBAAO;AAAA,cACT;AAGA,kBAAI,mBAAmB,qBAAqB,aAAa,QAAQ;AAEjE,qBAAO,SAAS,YAAY,QAAQ,UAAU;AAC5C,oBAAI,aAAa,cAAc,kBAAkB,aAAa,QAAQ,YAAY,MAAM,GAAG,KAAK;AAEhG,oBAAI,eAAe,MAAM;AACvB,sBAAI,wBAAwB;AAC1B,wBAAI,WAAW,cAAc,MAAM;AAKjC,uCAAiB,OAAO,WAAW,QAAQ,OAAO,SAAS,WAAW,GAAG;AAAA,oBAC3E;AAAA,kBACF;AAEA,oCAAkB,WAAW,YAAY,iBAAiB,MAAM;AAEhE,sBAAI,qBAAqB,MAAM;AAC7B,0CAAsB;AAAA,kBACxB,OAAO;AACL,qCAAiB,UAAU;AAAA,kBAC7B;AAEA,qCAAmB;AAAA,gBACrB;AAAA,cACF;AAEA,kBAAI,wBAAwB;AAG1B,iCAAiB,QAAQ,SAAUwD,QAAO;AACxC,yBAAO,YAAY,aAAaA,MAAK;AAAA,gBACvC,CAAC;AAAA,cACH;AAEA,kBAAI,eAAe,GAAG;AACpB,oBAAI,kBAAkB;AACtB,6BAAa,aAAa,eAAe;AAAA,cAC3C;AAEA,qBAAO;AAAA,YACT;AAEA,qBAAS,0BAA0B,aAAa,mBAAmB,qBAAqB,OAAO;AAG7F,kBAAI,aAAa,cAAc,mBAAmB;AAElD,kBAAI,OAAO,eAAe,YAAY;AACpC,sBAAM,IAAI,MAAM,oGAAyG;AAAA,cAC3H;AAEA;AAGE,oBAAI,OAAO,WAAW;AAAA,gBACtB,oBAAoB,OAAO,WAAW,MAAM,aAAa;AACvD,sBAAI,CAAC,wBAAwB;AAC3B,0BAAM,gTAAoU;AAAA,kBAC5U;AAEA,2CAAyB;AAAA,gBAC3B;AAGA,oBAAI,oBAAoB,YAAY,YAAY;AAC9C,sBAAI,CAAC,kBAAkB;AACrB,0BAAM,uFAA4F;AAAA,kBACpG;AAEA,qCAAmB;AAAA,gBACrB;AAIA,oBAAI,eAAe,WAAW,KAAK,mBAAmB;AAEtD,oBAAI,cAAc;AAChB,sBAAI,YAAY;AAEhB,sBAAI,QAAQ,aAAa,KAAK;AAE9B,yBAAO,CAAC,MAAM,MAAM,QAAQ,aAAa,KAAK,GAAG;AAC/C,wBAAI,QAAQ,MAAM;AAClB,gCAAY,iBAAiB,OAAO,WAAW,WAAW;AAAA,kBAC5D;AAAA,gBACF;AAAA,cACF;AAEA,kBAAI,cAAc,WAAW,KAAK,mBAAmB;AAErD,kBAAI,eAAe,MAAM;AACvB,sBAAM,IAAI,MAAM,0CAA0C;AAAA,cAC5D;AAEA,kBAAI,sBAAsB;AAC1B,kBAAI,mBAAmB;AACvB,kBAAI,WAAW;AACf,kBAAI,kBAAkB;AACtB,kBAAI,SAAS;AACb,kBAAI,eAAe;AACnB,kBAAI,OAAO,YAAY,KAAK;AAE5B,qBAAO,aAAa,QAAQ,CAAC,KAAK,MAAM,UAAU,OAAO,YAAY,KAAK,GAAG;AAC3E,oBAAI,SAAS,QAAQ,QAAQ;AAC3B,iCAAe;AACf,6BAAW;AAAA,gBACb,OAAO;AACL,iCAAe,SAAS;AAAA,gBAC1B;AAEA,oBAAI,WAAW,WAAW,aAAa,UAAU,KAAK,OAAO,KAAK;AAElE,oBAAI,aAAa,MAAM;AAKrB,sBAAI,aAAa,MAAM;AACrB,+BAAW;AAAA,kBACb;AAEA;AAAA,gBACF;AAEA,oBAAI,wBAAwB;AAC1B,sBAAI,YAAY,SAAS,cAAc,MAAM;AAG3C,gCAAY,aAAa,QAAQ;AAAA,kBACnC;AAAA,gBACF;AAEA,kCAAkB,WAAW,UAAU,iBAAiB,MAAM;AAE9D,oBAAI,qBAAqB,MAAM;AAE7B,wCAAsB;AAAA,gBACxB,OAAO;AAKL,mCAAiB,UAAU;AAAA,gBAC7B;AAEA,mCAAmB;AACnB,2BAAW;AAAA,cACb;AAEA,kBAAI,KAAK,MAAM;AAEb,wCAAwB,aAAa,QAAQ;AAE7C,oBAAI,eAAe,GAAG;AACpB,sBAAI,gBAAgB;AACpB,+BAAa,aAAa,aAAa;AAAA,gBACzC;AAEA,uBAAO;AAAA,cACT;AAEA,kBAAI,aAAa,MAAM;AAGrB,uBAAO,CAAC,KAAK,MAAM,UAAU,OAAO,YAAY,KAAK,GAAG;AACtD,sBAAI,aAAa,YAAY,aAAa,KAAK,OAAO,KAAK;AAE3D,sBAAI,eAAe,MAAM;AACvB;AAAA,kBACF;AAEA,oCAAkB,WAAW,YAAY,iBAAiB,MAAM;AAEhE,sBAAI,qBAAqB,MAAM;AAE7B,0CAAsB;AAAA,kBACxB,OAAO;AACL,qCAAiB,UAAU;AAAA,kBAC7B;AAEA,qCAAmB;AAAA,gBACrB;AAEA,oBAAI,eAAe,GAAG;AACpB,sBAAI,kBAAkB;AACtB,+BAAa,aAAa,eAAe;AAAA,gBAC3C;AAEA,uBAAO;AAAA,cACT;AAGA,kBAAI,mBAAmB,qBAAqB,aAAa,QAAQ;AAEjE,qBAAO,CAAC,KAAK,MAAM,UAAU,OAAO,YAAY,KAAK,GAAG;AACtD,oBAAI,aAAa,cAAc,kBAAkB,aAAa,QAAQ,KAAK,OAAO,KAAK;AAEvF,oBAAI,eAAe,MAAM;AACvB,sBAAI,wBAAwB;AAC1B,wBAAI,WAAW,cAAc,MAAM;AAKjC,uCAAiB,OAAO,WAAW,QAAQ,OAAO,SAAS,WAAW,GAAG;AAAA,oBAC3E;AAAA,kBACF;AAEA,oCAAkB,WAAW,YAAY,iBAAiB,MAAM;AAEhE,sBAAI,qBAAqB,MAAM;AAC7B,0CAAsB;AAAA,kBACxB,OAAO;AACL,qCAAiB,UAAU;AAAA,kBAC7B;AAEA,qCAAmB;AAAA,gBACrB;AAAA,cACF;AAEA,kBAAI,wBAAwB;AAG1B,iCAAiB,QAAQ,SAAUA,QAAO;AACxC,yBAAO,YAAY,aAAaA,MAAK;AAAA,gBACvC,CAAC;AAAA,cACH;AAEA,kBAAI,eAAe,GAAG;AACpB,oBAAI,kBAAkB;AACtB,6BAAa,aAAa,eAAe;AAAA,cAC3C;AAEA,qBAAO;AAAA,YACT;AAEA,qBAAS,wBAAwB,aAAa,mBAAmB,aAAa,OAAO;AAGnF,kBAAI,sBAAsB,QAAQ,kBAAkB,QAAQ,UAAU;AAGpE,wCAAwB,aAAa,kBAAkB,OAAO;AAC9D,oBAAI,WAAW,SAAS,mBAAmB,WAAW;AACtD,yBAAS,SAAS;AAClB,uBAAO;AAAA,cACT;AAIA,sCAAwB,aAAa,iBAAiB;AACtD,kBAAI,UAAU,oBAAoB,aAAa,YAAY,MAAM,KAAK;AACtE,sBAAQ,SAAS;AACjB,qBAAO;AAAA,YACT;AAEA,qBAAS,uBAAuB,aAAa,mBAAmB,SAAS,OAAO;AAC9E,kBAAI,MAAM,QAAQ;AAClB,kBAAI,QAAQ;AAEZ,qBAAO,UAAU,MAAM;AAGrB,oBAAI,MAAM,QAAQ,KAAK;AACrB,sBAAI,cAAc,QAAQ;AAE1B,sBAAI,gBAAgB,qBAAqB;AACvC,wBAAI,MAAM,QAAQzE,WAAU;AAC1B,8CAAwB,aAAa,MAAM,OAAO;AAClD,0BAAI,WAAW,SAAS,OAAO,QAAQ,MAAM,QAAQ;AACrD,+BAAS,SAAS;AAElB;AACE,iCAAS,eAAe,QAAQ;AAChC,iCAAS,cAAc,QAAQ;AAAA,sBACjC;AAEA,6BAAO;AAAA,oBACT;AAAA,kBACF,OAAO;AACL,wBAAI,MAAM,gBAAgB;AAAA,oBACzB,kCAAkC,OAAO,OAAO;AAAA;AAAA;AAAA;AAAA,oBAIjD,OAAO,gBAAgB,YAAY,gBAAgB,QAAQ,YAAY,aAAa,mBAAmB,YAAY,WAAW,MAAM,MAAM,MAAM;AAC9I,8CAAwB,aAAa,MAAM,OAAO;AAElD,0BAAI,YAAY,SAAS,OAAO,QAAQ,KAAK;AAE7C,gCAAU,MAAM,UAAU,aAAa,OAAO,OAAO;AACrD,gCAAU,SAAS;AAEnB;AACE,kCAAU,eAAe,QAAQ;AACjC,kCAAU,cAAc,QAAQ;AAAA,sBAClC;AAEA,6BAAO;AAAA,oBACT;AAAA,kBACF;AAGA,0CAAwB,aAAa,KAAK;AAC1C;AAAA,gBACF,OAAO;AACL,8BAAY,aAAa,KAAK;AAAA,gBAChC;AAEA,wBAAQ,MAAM;AAAA,cAChB;AAEA,kBAAI,QAAQ,SAAS,qBAAqB;AACxC,oBAAI,UAAU,wBAAwB,QAAQ,MAAM,UAAU,YAAY,MAAM,OAAO,QAAQ,GAAG;AAClG,wBAAQ,SAAS;AACjB,uBAAO;AAAA,cACT,OAAO;AACL,oBAAI,YAAY,uBAAuB,SAAS,YAAY,MAAM,KAAK;AAEvE,0BAAU,MAAM,UAAU,aAAa,mBAAmB,OAAO;AACjE,0BAAU,SAAS;AACnB,uBAAO;AAAA,cACT;AAAA,YACF;AAEA,qBAAS,sBAAsB,aAAa,mBAAmB,QAAQ,OAAO;AAC5E,kBAAI,MAAM,OAAO;AACjB,kBAAI,QAAQ;AAEZ,qBAAO,UAAU,MAAM;AAGrB,oBAAI,MAAM,QAAQ,KAAK;AACrB,sBAAI,MAAM,QAAQ,cAAc,MAAM,UAAU,kBAAkB,OAAO,iBAAiB,MAAM,UAAU,mBAAmB,OAAO,gBAAgB;AAClJ,4CAAwB,aAAa,MAAM,OAAO;AAClD,wBAAI,WAAW,SAAS,OAAO,OAAO,YAAY,CAAC,CAAC;AACpD,6BAAS,SAAS;AAClB,2BAAO;AAAA,kBACT,OAAO;AACL,4CAAwB,aAAa,KAAK;AAC1C;AAAA,kBACF;AAAA,gBACF,OAAO;AACL,8BAAY,aAAa,KAAK;AAAA,gBAChC;AAEA,wBAAQ,MAAM;AAAA,cAChB;AAEA,kBAAI,UAAU,sBAAsB,QAAQ,YAAY,MAAM,KAAK;AACnE,sBAAQ,SAAS;AACjB,qBAAO;AAAA,YACT;AAKA,qBAAS0E,sBAAqB,aAAa,mBAAmB,UAAU,OAAO;AAQ7E,kBAAI,4BAA4B,OAAO,aAAa,YAAY,aAAa,QAAQ,SAAS,SAAS,uBAAuB,SAAS,QAAQ;AAE/I,kBAAI,2BAA2B;AAC7B,2BAAW,SAAS,MAAM;AAAA,cAC5B;AAGA,kBAAI,OAAO,aAAa,YAAY,aAAa,MAAM;AACrD,wBAAQ,SAAS,UAAU;AAAA,kBACzB,KAAK;AACH,2BAAO,iBAAiB,uBAAuB,aAAa,mBAAmB,UAAU,KAAK,CAAC;AAAA,kBAEjG,KAAK;AACH,2BAAO,iBAAiB,sBAAsB,aAAa,mBAAmB,UAAU,KAAK,CAAC;AAAA,kBAEhG,KAAK;AACH,wBAAI,UAAU,SAAS;AACvB,wBAAIzD,UAAO,SAAS;AAEpB,2BAAOyD,sBAAqB,aAAa,mBAAmBzD,QAAK,OAAO,GAAG,KAAK;AAAA,gBACpF;AAEA,oBAAIK,SAAQ,QAAQ,GAAG;AACrB,yBAAO,uBAAuB,aAAa,mBAAmB,UAAU,KAAK;AAAA,gBAC/E;AAEA,oBAAI,cAAc,QAAQ,GAAG;AAC3B,yBAAO,0BAA0B,aAAa,mBAAmB,UAAU,KAAK;AAAA,gBAClF;AAEA,yCAAyB,aAAa,QAAQ;AAAA,cAChD;AAEA,kBAAI,OAAO,aAAa,YAAY,aAAa,MAAM,OAAO,aAAa,UAAU;AACnF,uBAAO,iBAAiB,wBAAwB,aAAa,mBAAmB,KAAK,UAAU,KAAK,CAAC;AAAA,cACvG;AAEA;AACE,oBAAI,OAAO,aAAa,YAAY;AAClC,qCAAmB,WAAW;AAAA,gBAChC;AAAA,cACF;AAGA,qBAAO,wBAAwB,aAAa,iBAAiB;AAAA,YAC/D;AAEA,mBAAOoD;AAAA,UACT;AAEA,cAAI,uBAAuB,gBAAgB,IAAI;AAC/C,cAAI,mBAAmB,gBAAgB,KAAK;AAC5C,mBAAS,iBAAiBnC,UAASrB,iBAAgB;AACjD,gBAAIqB,aAAY,QAAQrB,gBAAe,UAAUqB,SAAQ,OAAO;AAC9D,oBAAM,IAAI,MAAM,oCAAoC;AAAA,YACtD;AAEA,gBAAIrB,gBAAe,UAAU,MAAM;AACjC;AAAA,YACF;AAEA,gBAAI,eAAeA,gBAAe;AAClC,gBAAI,WAAW,qBAAqB,cAAc,aAAa,YAAY;AAC3E,YAAAA,gBAAe,QAAQ;AACvB,qBAAS,SAASA;AAElB,mBAAO,aAAa,YAAY,MAAM;AACpC,6BAAe,aAAa;AAC5B,yBAAW,SAAS,UAAU,qBAAqB,cAAc,aAAa,YAAY;AAC1F,uBAAS,SAASA;AAAA,YACpB;AAEA,qBAAS,UAAU;AAAA,UACrB;AAEA,mBAAS,iBAAiBA,iBAAgB,OAAO;AAC/C,gBAAI,QAAQA,gBAAe;AAE3B,mBAAO,UAAU,MAAM;AACrB,kCAAoB,OAAO,KAAK;AAChC,sBAAQ,MAAM;AAAA,YAChB;AAAA,UACF;AAEA,cAAI,aAAa,CAAC;AAClB,cAAI,uBAAuB,aAAa,UAAU;AAClD,cAAI,0BAA0B,aAAa,UAAU;AACrD,cAAI,0BAA0B,aAAa,UAAU;AAErD,mBAAS,gBAAgBH,IAAG;AAC1B,gBAAIA,OAAM,YAAY;AACpB,oBAAM,IAAI,MAAM,sGAA2G;AAAA,YAC7H;AAEA,mBAAOA;AAAA,UACT;AAEA,mBAAS,uBAAuB;AAC9B,gBAAI,eAAe,gBAAgB,wBAAwB,OAAO;AAClE,mBAAO;AAAA,UACT;AAEA,mBAAS,kBAAkB,OAAO,kBAAkB;AAGlD,YAAAmD,MAAK,yBAAyB,kBAAkB,KAAK;AAGrD,YAAAA,MAAK,yBAAyB,OAAO,KAAK;AAM1C,YAAAA,MAAK,sBAAsB,YAAY,KAAK;AAC5C,gBAAI,kBAAkB,mBAAmB,gBAAgB;AAEzD,gBAAI,sBAAsB,KAAK;AAC/B,YAAAA,MAAK,sBAAsB,iBAAiB,KAAK;AAAA,UACnD;AAEA,mBAAS,iBAAiB,OAAO;AAC/B,gBAAI,sBAAsB,KAAK;AAC/B,gBAAI,yBAAyB,KAAK;AAClC,gBAAI,yBAAyB,KAAK;AAAA,UACpC;AAEA,mBAAS,iBAAiB;AACxB,gBAAI,UAAU,gBAAgB,qBAAqB,OAAO;AAC1D,mBAAO;AAAA,UACT;AAEA,mBAAS,gBAAgB,OAAO;AAC9B,gBAAI,eAAe,gBAAgB,wBAAwB,OAAO;AAClE,gBAAI,UAAU,gBAAgB,qBAAqB,OAAO;AAC1D,gBAAI,cAAc,oBAAoB,SAAS,MAAM,IAAI;AAEzD,gBAAI,YAAY,aAAa;AAC3B;AAAA,YACF;AAIA,YAAAA,MAAK,yBAAyB,OAAO,KAAK;AAC1C,YAAAA,MAAK,sBAAsB,aAAa,KAAK;AAAA,UAC/C;AAEA,mBAAS,eAAe,OAAO;AAG7B,gBAAI,wBAAwB,YAAY,OAAO;AAC7C;AAAA,YACF;AAEA,gBAAI,sBAAsB,KAAK;AAC/B,gBAAI,yBAAyB,KAAK;AAAA,UACpC;AAEA,cAAI,yBAAyB;AAK7B,cAAI,6BAA6B;AAQjC,cAAI,iCAAiC;AAIrC,cAAI,wBAAwB;AAC5B,cAAI,sBAAsB,aAAa,sBAAsB;AAC7D,mBAAS,mBAAmB,eAAe,MAAM;AAC/C,oBAAQ,gBAAgB,UAAU;AAAA,UACpC;AACA,mBAAS,iCAAiC,eAAe;AACvD,mBAAO,gBAAgB;AAAA,UACzB;AACA,mBAAS,0BAA0B,eAAe,gBAAgB;AAChE,mBAAO,gBAAgB,6BAA6B;AAAA,UACtD;AACA,mBAAS,0BAA0B,eAAe,gBAAgB;AAChE,mBAAO,gBAAgB;AAAA,UACzB;AACA,mBAAS,oBAAoB,OAAO,YAAY;AAC9C,YAAAA,MAAK,qBAAqB,YAAY,KAAK;AAAA,UAC7C;AACA,mBAAS,mBAAmB,OAAO;AACjC,gBAAI,qBAAqB,KAAK;AAAA,UAChC;AAEA,mBAAS,sBAAsBhD,iBAAgB,oBAAoB;AAGjE,gBAAI,YAAYA,gBAAe;AAE/B,gBAAI,cAAc,MAAM;AACtB,kBAAI,UAAU,eAAe,MAAM;AAEjC,uBAAO;AAAA,cACT;AAEA,qBAAO;AAAA,YACT;AAEA,gBAAI,QAAQA,gBAAe;AAE3B;AACE,qBAAO;AAAA,YACT;AAAA,UACF;AACA,mBAAS,mBAAmB,KAAK;AAC/B,gBAAIT,QAAO;AAEX,mBAAOA,UAAS,MAAM;AACpB,kBAAIA,MAAK,QAAQ,mBAAmB;AAClC,oBAAI2C,SAAQ3C,MAAK;AAEjB,oBAAI2C,WAAU,MAAM;AAClB,sBAAI,aAAaA,OAAM;AAEvB,sBAAI,eAAe,QAAQ,0BAA0B,UAAU,KAAK,2BAA2B,UAAU,GAAG;AAC1G,2BAAO3C;AAAA,kBACT;AAAA,gBACF;AAAA,cACF,WAAWA,MAAK,QAAQ;AAAA;AAAA,cAExBA,MAAK,cAAc,gBAAgB,QAAW;AAC5C,oBAAI,cAAcA,MAAK,QAAQ,gBAAgB;AAE/C,oBAAI,YAAY;AACd,yBAAOA;AAAA,gBACT;AAAA,cACF,WAAWA,MAAK,UAAU,MAAM;AAC9B,gBAAAA,MAAK,MAAM,SAASA;AACpB,gBAAAA,QAAOA,MAAK;AACZ;AAAA,cACF;AAEA,kBAAIA,UAAS,KAAK;AAChB,uBAAO;AAAA,cACT;AAEA,qBAAOA,MAAK,YAAY,MAAM;AAC5B,oBAAIA,MAAK,WAAW,QAAQA,MAAK,WAAW,KAAK;AAC/C,yBAAO;AAAA,gBACT;AAEA,gBAAAA,QAAOA,MAAK;AAAA,cACd;AAEA,cAAAA,MAAK,QAAQ,SAASA,MAAK;AAC3B,cAAAA,QAAOA,MAAK;AAAA,YACd;AAEA,mBAAO;AAAA,UACT;AAEA,cAAI;AAAA;AAAA,YAEJ;AAAA;AAEA,cAAI;AAAA;AAAA,YAEJ;AAAA;AAEA,cAAIkE;AAAA;AAAA,YAEJ;AAAA;AACA,cAAI;AAAA;AAAA,YAEJ;AAAA;AACA,cAAI;AAAA;AAAA,YAEJ;AAAA;AAKA,cAAI,wBAAwB,CAAC;AAC7B,mBAAS,8BAA8B;AACrC,qBAAS,IAAI,GAAG,IAAI,sBAAsB,QAAQ,KAAK;AACrD,kBAAI,gBAAgB,sBAAsB,CAAC;AAE3C;AACE,8BAAc,gCAAgC;AAAA,cAChD;AAAA,YACF;AAEA,kCAAsB,SAAS;AAAA,UACjC;AAKA,mBAAS,kCAAkClC,OAAM,eAAe;AAC9D,gBAAI,aAAa,cAAc;AAC/B,gBAAI,UAAU,WAAW,cAAc,OAAO;AAG9C,gBAAIA,MAAK,mCAAmC,MAAM;AAChD,cAAAA,MAAK,kCAAkC,CAAC,eAAe,OAAO;AAAA,YAChE,OAAO;AACL,cAAAA,MAAK,gCAAgC,KAAK,eAAe,OAAO;AAAA,YAClE;AAAA,UACF;AAEA,cAAI,2BAA2B,qBAAqB,wBAChD,4BAA4B,qBAAqB;AACrD,cAAI;AACJ,cAAI;AAEJ;AACE,sDAA0C,oBAAI,IAAI;AAAA,UACpD;AAGA,cAAI,cAAc;AAGlB,cAAI,4BAA4B;AAKhC,cAAI,cAAc;AAClB,cAAI,qBAAqB;AAKzB,cAAI,+BAA+B;AAKnC,cAAI,6CAA6C;AAEjD,cAAI,iBAAiB;AAIrB,cAAI,wBAAwB;AAC5B,cAAI,kBAAkB;AAEtB,cAAI,uBAAuB;AAI3B,cAAI,eAAe;AACnB,cAAI,0BAA0B;AAI9B,cAAI,6BAA6B;AAEjC,mBAAS,oBAAoB;AAC3B;AACE,kBAAI,WAAW;AAEf,kBAAI,iBAAiB,MAAM;AACzB,+BAAe,CAAC,QAAQ;AAAA,cAC1B,OAAO;AACL,6BAAa,KAAK,QAAQ;AAAA,cAC5B;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,qBAAqB;AAC5B;AACE,kBAAI,WAAW;AAEf,kBAAI,iBAAiB,MAAM;AACzB;AAEA,oBAAI,aAAa,uBAAuB,MAAM,UAAU;AACtD,0CAAwB,QAAQ;AAAA,gBAClC;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,qBAAqB,MAAM;AAClC;AACE,kBAAI,SAAS,UAAa,SAAS,QAAQ,CAACnB,SAAQ,IAAI,GAAG;AAGzD,sBAAM,oIAAyI,sBAAsB,OAAO,IAAI;AAAA,cAClL;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,wBAAwB,iBAAiB;AAChD;AACE,kBAAI,gBAAgB,0BAA0B,yBAAyB;AAEvE,kBAAI,CAAC,wCAAwC,IAAI,aAAa,GAAG;AAC/D,wDAAwC,IAAI,aAAa;AAEzD,oBAAI,iBAAiB,MAAM;AACzB,sBAAI,QAAQ;AACZ,sBAAI,oBAAoB;AAExB,2BAAS,IAAI,GAAG,KAAK,yBAAyB,KAAK;AACjD,wBAAI,cAAc,aAAa,CAAC;AAChC,wBAAI,cAAc,MAAM,0BAA0B,kBAAkB;AACpE,wBAAI,MAAM,IAAI,IAAI,OAAO;AAGzB,2BAAO,IAAI,SAAS,mBAAmB;AACrC,6BAAO;AAAA,oBACT;AAEA,2BAAO,cAAc;AACrB,6BAAS;AAAA,kBACX;AAEA,wBAAM,iXAA+Y,eAAe,KAAK;AAAA,gBAC3a;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,wBAAwB;AAC/B,kBAAM,IAAI,MAAM,ibAA0c;AAAA,UAC5d;AAEA,mBAAS,mBAAmB,UAAU,UAAU;AAC9C;AACE,kBAAI,4BAA4B;AAE9B,uBAAO;AAAA,cACT;AAAA,YACF;AAEA,gBAAI,aAAa,MAAM;AACrB;AACE,sBAAM,4KAAsL,oBAAoB;AAAA,cAClN;AAEA,qBAAO;AAAA,YACT;AAEA;AAGE,kBAAI,SAAS,WAAW,SAAS,QAAQ;AACvC,sBAAM,sJAAqK,sBAAsB,MAAM,SAAS,KAAK,IAAI,IAAI,KAAK,MAAM,SAAS,KAAK,IAAI,IAAI,GAAG;AAAA,cACnQ;AAAA,YACF;AAEA,qBAAS,IAAI,GAAG,IAAI,SAAS,UAAU,IAAI,SAAS,QAAQ,KAAK;AAC/D,kBAAI,SAAS,SAAS,CAAC,GAAG,SAAS,CAAC,CAAC,GAAG;AACtC;AAAA,cACF;AAEA,qBAAO;AAAA,YACT;AAEA,mBAAO;AAAA,UACT;AAEA,mBAAS,gBAAgBiB,UAASrB,iBAAgBF,YAAW,OAAO,WAAW,iBAAiB;AAC9F,0BAAc;AACd,wCAA4BE;AAE5B;AACE,6BAAeqB,aAAY,OAAOA,SAAQ,kBAAkB;AAC5D,wCAA0B;AAE1B,2CAA6BA,aAAY,QAAQA,SAAQ,SAASrB,gBAAe;AAAA,YACnF;AAEA,YAAAA,gBAAe,gBAAgB;AAC/B,YAAAA,gBAAe,cAAc;AAC7B,YAAAA,gBAAe,QAAQ;AAYvB;AACE,kBAAIqB,aAAY,QAAQA,SAAQ,kBAAkB,MAAM;AACtD,yCAAyB,UAAU;AAAA,cACrC,WAAW,iBAAiB,MAAM;AAMhC,yCAAyB,UAAU;AAAA,cACrC,OAAO;AACL,yCAAyB,UAAU;AAAA,cACrC;AAAA,YACF;AAEA,gBAAI,WAAWvB,WAAU,OAAO,SAAS;AAEzC,gBAAI,4CAA4C;AAG9C,kBAAI,oBAAoB;AAExB,iBAAG;AACD,6DAA6C;AAC7C,iCAAiB;AAEjB,oBAAI,qBAAqB,iBAAiB;AACxC,wBAAM,IAAI,MAAM,sFAA2F;AAAA,gBAC7G;AAEA,qCAAqB;AAErB;AAGE,+CAA6B;AAAA,gBAC/B;AAGA,8BAAc;AACd,qCAAqB;AACrB,gBAAAE,gBAAe,cAAc;AAE7B;AAEE,4CAA0B;AAAA,gBAC5B;AAEA,yCAAyB,UAAW;AACpC,2BAAWF,WAAU,OAAO,SAAS;AAAA,cACvC,SAAS;AAAA,YACX;AAIA,qCAAyB,UAAU;AAEnC;AACE,cAAAE,gBAAe,kBAAkB;AAAA,YACnC;AAIA,gBAAI,uBAAuB,gBAAgB,QAAQ,YAAY,SAAS;AACxE,0BAAc;AACd,wCAA4B;AAC5B,0BAAc;AACd,iCAAqB;AAErB;AACE,qCAAuB;AACvB,6BAAe;AACf,wCAA0B;AAK1B,kBAAIqB,aAAY,SAASA,SAAQ,QAAQ,iBAAiBrB,gBAAe,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA,eAKhFqB,SAAQ,OAAO,oBAAoB,QAAQ;AAC1C,sBAAM,uFAA4F;AAAA,cACpG;AAAA,YACF;AAEA,2CAA+B;AAG/B,gBAAI,sBAAsB;AACxB,oBAAM,IAAI,MAAM,iGAAsG;AAAA,YACxH;AAEA,mBAAO;AAAA,UACT;AACA,mBAAS,uBAAuB;AAI9B,gBAAI,kBAAkB,mBAAmB;AACzC,6BAAiB;AACjB,mBAAO;AAAA,UACT;AACA,mBAAS,aAAaA,UAASrB,iBAAgB,OAAO;AACpD,YAAAA,gBAAe,cAAcqB,SAAQ;AAGrC,iBAAMrB,gBAAe,OAAO,uBAAuB,QAAQ;AACzD,cAAAA,gBAAe,SAAS,EAAE,kBAAkB,iBAAiB,UAAU;AAAA,YACzE,OAAO;AACL,cAAAA,gBAAe,SAAS,EAAE,UAAU;AAAA,YACtC;AAEA,YAAAqB,SAAQ,QAAQ,YAAYA,SAAQ,OAAO,KAAK;AAAA,UAClD;AACA,mBAAS,uBAAuB;AAG9B,qCAAyB,UAAU;AAEnC,gBAAI,8BAA8B;AAShC,kBAAI,OAAO,0BAA0B;AAErC,qBAAO,SAAS,MAAM;AACpB,oBAAI,QAAQ,KAAK;AAEjB,oBAAI,UAAU,MAAM;AAClB,wBAAM,UAAU;AAAA,gBAClB;AAEA,uBAAO,KAAK;AAAA,cACd;AAEA,6CAA+B;AAAA,YACjC;AAEA,0BAAc;AACd,wCAA4B;AAC5B,0BAAc;AACd,iCAAqB;AAErB;AACE,6BAAe;AACf,wCAA0B;AAC1B,qCAAuB;AACvB,mDAAqC;AAAA,YACvC;AAEA,yDAA6C;AAC7C,6BAAiB;AAAA,UACnB;AAEA,mBAAS,0BAA0B;AACjC,gBAAI,OAAO;AAAA,cACT,eAAe;AAAA,cACf,WAAW;AAAA,cACX,WAAW;AAAA,cACX,OAAO;AAAA,cACP,MAAM;AAAA,YACR;AAEA,gBAAI,uBAAuB,MAAM;AAE/B,wCAA0B,gBAAgB,qBAAqB;AAAA,YACjE,OAAO;AAEL,mCAAqB,mBAAmB,OAAO;AAAA,YACjD;AAEA,mBAAO;AAAA,UACT;AAEA,mBAAS,2BAA2B;AAMlC,gBAAI;AAEJ,gBAAI,gBAAgB,MAAM;AACxB,kBAAIA,WAAU,0BAA0B;AAExC,kBAAIA,aAAY,MAAM;AACpB,kCAAkBA,SAAQ;AAAA,cAC5B,OAAO;AACL,kCAAkB;AAAA,cACpB;AAAA,YACF,OAAO;AACL,gCAAkB,YAAY;AAAA,YAChC;AAEA,gBAAI;AAEJ,gBAAI,uBAAuB,MAAM;AAC/B,uCAAyB,0BAA0B;AAAA,YACrD,OAAO;AACL,uCAAyB,mBAAmB;AAAA,YAC9C;AAEA,gBAAI,2BAA2B,MAAM;AAEnC,mCAAqB;AACrB,uCAAyB,mBAAmB;AAC5C,4BAAc;AAAA,YAChB,OAAO;AAEL,kBAAI,oBAAoB,MAAM;AAC5B,sBAAM,IAAI,MAAM,sDAAsD;AAAA,cACxE;AAEA,4BAAc;AACd,kBAAI,UAAU;AAAA,gBACZ,eAAe,YAAY;AAAA,gBAC3B,WAAW,YAAY;AAAA,gBACvB,WAAW,YAAY;AAAA,gBACvB,OAAO,YAAY;AAAA,gBACnB,MAAM;AAAA,cACR;AAEA,kBAAI,uBAAuB,MAAM;AAE/B,0CAA0B,gBAAgB,qBAAqB;AAAA,cACjE,OAAO;AAEL,qCAAqB,mBAAmB,OAAO;AAAA,cACjD;AAAA,YACF;AAEA,mBAAO;AAAA,UACT;AAEA,mBAAS,qCAAqC;AAC5C,mBAAO;AAAA,cACL,YAAY;AAAA,cACZ,QAAQ;AAAA,YACV;AAAA,UACF;AAEA,mBAAS,kBAAkBa,QAAO,QAAQ;AAExC,mBAAO,OAAO,WAAW,aAAa,OAAOA,MAAK,IAAI;AAAA,UACxD;AAEA,mBAAS,aAAa,SAAS,YAAYnC,SAAM;AAC/C,gBAAI,OAAO,wBAAwB;AACnC,gBAAI;AAEJ,gBAAIA,YAAS,QAAW;AACtB,6BAAeA,QAAK,UAAU;AAAA,YAChC,OAAO;AACL,6BAAe;AAAA,YACjB;AAEA,iBAAK,gBAAgB,KAAK,YAAY;AACtC,gBAAI,QAAQ;AAAA,cACV,SAAS;AAAA,cACT,aAAa;AAAA,cACb,OAAO;AAAA,cACP,UAAU;AAAA,cACV,qBAAqB;AAAA,cACrB,mBAAmB;AAAA,YACrB;AACA,iBAAK,QAAQ;AACb,gBAAI,WAAW,MAAM,WAAW,sBAAsB,KAAK,MAAM,2BAA2B,KAAK;AACjG,mBAAO,CAAC,KAAK,eAAe,QAAQ;AAAA,UACtC;AAEA,mBAAS,cAAc,SAAS,YAAYA,SAAM;AAChD,gBAAI,OAAO,yBAAyB;AACpC,gBAAI,QAAQ,KAAK;AAEjB,gBAAI,UAAU,MAAM;AAClB,oBAAM,IAAI,MAAM,2EAA2E;AAAA,YAC7F;AAEA,kBAAM,sBAAsB;AAC5B,gBAAIsB,WAAU;AAEd,gBAAI,YAAYA,SAAQ;AAExB,gBAAI,eAAe,MAAM;AAEzB,gBAAI,iBAAiB,MAAM;AAGzB,kBAAI,cAAc,MAAM;AAEtB,oBAAI,YAAY,UAAU;AAC1B,oBAAI,eAAe,aAAa;AAChC,0BAAU,OAAO;AACjB,6BAAa,OAAO;AAAA,cACtB;AAEA;AACE,oBAAIA,SAAQ,cAAc,WAAW;AAGnC,wBAAM,wFAA6F;AAAA,gBACrG;AAAA,cACF;AAEA,cAAAA,SAAQ,YAAY,YAAY;AAChC,oBAAM,UAAU;AAAA,YAClB;AAEA,gBAAI,cAAc,MAAM;AAEtB,kBAAI,QAAQ,UAAU;AACtB,kBAAI,WAAWA,SAAQ;AACvB,kBAAI,eAAe;AACnB,kBAAI,oBAAoB;AACxB,kBAAI,mBAAmB;AACvB,kBAAI,SAAS;AAEb,iBAAG;AACD,oBAAI,aAAa,OAAO;AAExB,oBAAI,CAAC,gBAAgB,aAAa,UAAU,GAAG;AAI7C,sBAAI,QAAQ;AAAA,oBACV,MAAM;AAAA,oBACN,QAAQ,OAAO;AAAA,oBACf,eAAe,OAAO;AAAA,oBACtB,YAAY,OAAO;AAAA,oBACnB,MAAM;AAAA,kBACR;AAEA,sBAAI,qBAAqB,MAAM;AAC7B,wCAAoB,mBAAmB;AACvC,mCAAe;AAAA,kBACjB,OAAO;AACL,uCAAmB,iBAAiB,OAAO;AAAA,kBAC7C;AAKA,4CAA0B,QAAQ,WAAW,0BAA0B,OAAO,UAAU;AACxF,yCAAuB,UAAU;AAAA,gBACnC,OAAO;AAEL,sBAAI,qBAAqB,MAAM;AAC7B,wBAAI,SAAS;AAAA;AAAA;AAAA;AAAA,sBAIX,MAAM;AAAA,sBACN,QAAQ,OAAO;AAAA,sBACf,eAAe,OAAO;AAAA,sBACtB,YAAY,OAAO;AAAA,sBACnB,MAAM;AAAA,oBACR;AACA,uCAAmB,iBAAiB,OAAO;AAAA,kBAC7C;AAGA,sBAAI,OAAO,eAAe;AAGxB,+BAAW,OAAO;AAAA,kBACpB,OAAO;AACL,wBAAI,SAAS,OAAO;AACpB,+BAAW,QAAQ,UAAU,MAAM;AAAA,kBACrC;AAAA,gBACF;AAEA,yBAAS,OAAO;AAAA,cAClB,SAAS,WAAW,QAAQ,WAAW;AAEvC,kBAAI,qBAAqB,MAAM;AAC7B,+BAAe;AAAA,cACjB,OAAO;AACL,iCAAiB,OAAO;AAAA,cAC1B;AAIA,kBAAI,CAAC,SAAS,UAAU,KAAK,aAAa,GAAG;AAC3C,iDAAiC;AAAA,cACnC;AAEA,mBAAK,gBAAgB;AACrB,mBAAK,YAAY;AACjB,mBAAK,YAAY;AACjB,oBAAM,oBAAoB;AAAA,YAC5B;AAKA,gBAAI,kBAAkB,MAAM;AAE5B,gBAAI,oBAAoB,MAAM;AAC5B,kBAAI,cAAc;AAElB,iBAAG;AACD,oBAAI,kBAAkB,YAAY;AAClC,0CAA0B,QAAQ,WAAW,0BAA0B,OAAO,eAAe;AAC7F,uCAAuB,eAAe;AACtC,8BAAc,YAAY;AAAA,cAC5B,SAAS,gBAAgB;AAAA,YAC3B,WAAW,cAAc,MAAM;AAG7B,oBAAM,QAAQ;AAAA,YAChB;AAEA,gBAAI,WAAW,MAAM;AACrB,mBAAO,CAAC,KAAK,eAAe,QAAQ;AAAA,UACtC;AAEA,mBAAS,gBAAgB,SAAS,YAAYtB,SAAM;AAClD,gBAAI,OAAO,yBAAyB;AACpC,gBAAI,QAAQ,KAAK;AAEjB,gBAAI,UAAU,MAAM;AAClB,oBAAM,IAAI,MAAM,2EAA2E;AAAA,YAC7F;AAEA,kBAAM,sBAAsB;AAG5B,gBAAI,WAAW,MAAM;AACrB,gBAAI,wBAAwB,MAAM;AAClC,gBAAI,WAAW,KAAK;AAEpB,gBAAI,0BAA0B,MAAM;AAElC,oBAAM,UAAU;AAChB,kBAAI,yBAAyB,sBAAsB;AACnD,kBAAI,SAAS;AAEb,iBAAG;AAID,oBAAI,SAAS,OAAO;AACpB,2BAAW,QAAQ,UAAU,MAAM;AACnC,yBAAS,OAAO;AAAA,cAClB,SAAS,WAAW;AAIpB,kBAAI,CAAC,SAAS,UAAU,KAAK,aAAa,GAAG;AAC3C,iDAAiC;AAAA,cACnC;AAEA,mBAAK,gBAAgB;AAKrB,kBAAI,KAAK,cAAc,MAAM;AAC3B,qBAAK,YAAY;AAAA,cACnB;AAEA,oBAAM,oBAAoB;AAAA,YAC5B;AAEA,mBAAO,CAAC,UAAU,QAAQ;AAAA,UAC5B;AAEA,mBAAS,mBAAmB,QAAQ,aAAa,WAAW;AAC1D;AACE,qBAAO;AAAA,YACT;AAAA,UACF;AAEA,mBAAS,oBAAoB,QAAQ,aAAa,WAAW;AAC3D;AACE,qBAAO;AAAA,YACT;AAAA,UACF;AAEA,mBAAS,uBAAuB,WAAW,aAAa,mBAAmB;AACzE,gBAAI,QAAQ;AACZ,gBAAI,OAAO,wBAAwB;AACnC,gBAAI;AACJ,gBAAII,eAAc,eAAe;AAEjC,gBAAIA,cAAa;AACf,kBAAI,sBAAsB,QAAW;AACnC,sBAAM,IAAI,MAAM,4GAAiH;AAAA,cACnI;AAEA,6BAAe,kBAAkB;AAEjC;AACE,oBAAI,CAAC,4BAA4B;AAC/B,sBAAI,iBAAiB,kBAAkB,GAAG;AACxC,0BAAM,4EAA4E;AAElF,iDAA6B;AAAA,kBAC/B;AAAA,gBACF;AAAA,cACF;AAAA,YACF,OAAO;AACL,6BAAe,YAAY;AAE3B;AACE,oBAAI,CAAC,4BAA4B;AAC/B,sBAAI,iBAAiB,YAAY;AAEjC,sBAAI,CAAC,SAAS,cAAc,cAAc,GAAG;AAC3C,0BAAM,sEAAsE;AAE5E,iDAA6B;AAAA,kBAC/B;AAAA,gBACF;AAAA,cACF;AASA,kBAAIoB,QAAO,sBAAsB;AAEjC,kBAAIA,UAAS,MAAM;AACjB,sBAAM,IAAI,MAAM,iFAAiF;AAAA,cACnG;AAEA,kBAAI,CAAC,qBAAqBA,OAAM,WAAW,GAAG;AAC5C,0CAA0B,OAAO,aAAa,YAAY;AAAA,cAC5D;AAAA,YACF;AAKA,iBAAK,gBAAgB;AACrB,gBAAI,OAAO;AAAA,cACT,OAAO;AAAA,cACP;AAAA,YACF;AACA,iBAAK,QAAQ;AAEb,wBAAY,iBAAiB,KAAK,MAAM,OAAO,MAAM,SAAS,GAAG,CAAC,SAAS,CAAC;AAQ5E,kBAAM,SAAS;AACf,uBAAW,YAAY,WAAW,oBAAoB,KAAK,MAAM,OAAO,MAAM,cAAc,WAAW,GAAG,QAAW,IAAI;AACzH,mBAAO;AAAA,UACT;AAEA,mBAAS,wBAAwB,WAAW,aAAa,mBAAmB;AAC1E,gBAAI,QAAQ;AACZ,gBAAI,OAAO,yBAAyB;AAIpC,gBAAI,eAAe,YAAY;AAE/B;AACE,kBAAI,CAAC,4BAA4B;AAC/B,oBAAI,iBAAiB,YAAY;AAEjC,oBAAI,CAAC,SAAS,cAAc,cAAc,GAAG;AAC3C,wBAAM,sEAAsE;AAE5E,+CAA6B;AAAA,gBAC/B;AAAA,cACF;AAAA,YACF;AAEA,gBAAI,eAAe,KAAK;AACxB,gBAAI,kBAAkB,CAAC,SAAS,cAAc,YAAY;AAE1D,gBAAI,iBAAiB;AACnB,mBAAK,gBAAgB;AACrB,+CAAiC;AAAA,YACnC;AAEA,gBAAI,OAAO,KAAK;AAChB,yBAAa,iBAAiB,KAAK,MAAM,OAAO,MAAM,SAAS,GAAG,CAAC,SAAS,CAAC;AAK7E,gBAAI,KAAK,gBAAgB,eAAe;AAAA;AAAA,YAExC,uBAAuB,QAAQ,mBAAmB,cAAc,MAAM,WAAW;AAC/E,oBAAM,SAAS;AACf,yBAAW,YAAY,WAAW,oBAAoB,KAAK,MAAM,OAAO,MAAM,cAAc,WAAW,GAAG,QAAW,IAAI;AAIzH,kBAAIA,QAAO,sBAAsB;AAEjC,kBAAIA,UAAS,MAAM;AACjB,sBAAM,IAAI,MAAM,iFAAiF;AAAA,cACnG;AAEA,kBAAI,CAAC,qBAAqBA,OAAM,WAAW,GAAG;AAC5C,0CAA0B,OAAO,aAAa,YAAY;AAAA,cAC5D;AAAA,YACF;AAEA,mBAAO;AAAA,UACT;AAEA,mBAAS,0BAA0B,OAAO,aAAa,kBAAkB;AACvE,kBAAM,SAAS;AACf,gBAAI,QAAQ;AAAA,cACV;AAAA,cACA,OAAO;AAAA,YACT;AACA,gBAAI,uBAAuB,0BAA0B;AAErD,gBAAI,yBAAyB,MAAM;AACjC,qCAAuB,mCAAmC;AAC1D,wCAA0B,cAAc;AACxC,mCAAqB,SAAS,CAAC,KAAK;AAAA,YACtC,OAAO;AACL,kBAAI,SAAS,qBAAqB;AAElC,kBAAI,WAAW,MAAM;AACnB,qCAAqB,SAAS,CAAC,KAAK;AAAA,cACtC,OAAO;AACL,uBAAO,KAAK,KAAK;AAAA,cACnB;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,oBAAoB,OAAO,MAAM,cAAc,aAAa;AAEnE,iBAAK,QAAQ;AACb,iBAAK,cAAc;AAKnB,gBAAI,uBAAuB,IAAI,GAAG;AAEhC,iCAAmB,KAAK;AAAA,YAC1B;AAAA,UACF;AAEA,mBAAS,iBAAiB,OAAO,MAAM,WAAW;AAChD,gBAAI,oBAAoB,WAAY;AAGlC,kBAAI,uBAAuB,IAAI,GAAG;AAEhC,mCAAmB,KAAK;AAAA,cAC1B;AAAA,YACF;AAGA,mBAAO,UAAU,iBAAiB;AAAA,UACpC;AAEA,mBAAS,uBAAuB,MAAM;AACpC,gBAAI,oBAAoB,KAAK;AAC7B,gBAAI,YAAY,KAAK;AAErB,gBAAI;AACF,kBAAI,YAAY,kBAAkB;AAClC,qBAAO,CAAC,SAAS,WAAW,SAAS;AAAA,YACvC,SAASJ,QAAO;AACd,qBAAO;AAAA,YACT;AAAA,UACF;AAEA,mBAAS,mBAAmB,OAAO;AACjC,gBAAII,QAAO,+BAA+B,OAAO,QAAQ;AAEzD,gBAAIA,UAAS,MAAM;AACjB,oCAAsBA,OAAM,OAAO,UAAU,WAAW;AAAA,YAC1D;AAAA,UACF;AAEA,mBAAS,WAAW,cAAc;AAChC,gBAAI,OAAO,wBAAwB;AAEnC,gBAAI,OAAO,iBAAiB,YAAY;AAEtC,6BAAe,aAAa;AAAA,YAC9B;AAEA,iBAAK,gBAAgB,KAAK,YAAY;AACtC,gBAAI,QAAQ;AAAA,cACV,SAAS;AAAA,cACT,aAAa;AAAA,cACb,OAAO;AAAA,cACP,UAAU;AAAA,cACV,qBAAqB;AAAA,cACrB,mBAAmB;AAAA,YACrB;AACA,iBAAK,QAAQ;AACb,gBAAI,WAAW,MAAM,WAAW,iBAAiB,KAAK,MAAM,2BAA2B,KAAK;AAC5F,mBAAO,CAAC,KAAK,eAAe,QAAQ;AAAA,UACtC;AAEA,mBAAS,YAAY,cAAc;AACjC,mBAAO,cAAc,iBAAiB;AAAA,UACxC;AAEA,mBAAS,cAAc,cAAc;AACnC,mBAAO,gBAAgB,iBAAiB;AAAA,UAC1C;AAEA,mBAAS,WAAW,KAAK,QAAQ,SAAS,MAAM;AAC9C,gBAAI,SAAS;AAAA,cACX;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA;AAAA,cAEA,MAAM;AAAA,YACR;AACA,gBAAI,uBAAuB,0BAA0B;AAErD,gBAAI,yBAAyB,MAAM;AACjC,qCAAuB,mCAAmC;AAC1D,wCAA0B,cAAc;AACxC,mCAAqB,aAAa,OAAO,OAAO;AAAA,YAClD,OAAO;AACL,kBAAI,aAAa,qBAAqB;AAEtC,kBAAI,eAAe,MAAM;AACvB,qCAAqB,aAAa,OAAO,OAAO;AAAA,cAClD,OAAO;AACL,oBAAI,cAAc,WAAW;AAC7B,2BAAW,OAAO;AAClB,uBAAO,OAAO;AACd,qCAAqB,aAAa;AAAA,cACpC;AAAA,YACF;AAEA,mBAAO;AAAA,UACT;AAEA,mBAAS,SAAS,cAAc;AAC9B,gBAAI,OAAO,wBAAwB;AAEnC;AACE,kBAAImC,SAAQ;AAAA,gBACV,SAAS;AAAA,cACX;AACA,mBAAK,gBAAgBA;AACrB,qBAAOA;AAAA,YACT;AAAA,UACF;AAEA,mBAAS,UAAU,cAAc;AAC/B,gBAAI,OAAO,yBAAyB;AACpC,mBAAO,KAAK;AAAA,UACd;AAEA,mBAAS,gBAAgB,YAAY,WAAW,QAAQ,MAAM;AAC5D,gBAAI,OAAO,wBAAwB;AACnC,gBAAI,WAAW,SAAS,SAAY,OAAO;AAC3C,sCAA0B,SAAS;AACnC,iBAAK,gBAAgB,WAAW,YAAY,WAAW,QAAQ,QAAW,QAAQ;AAAA,UACpF;AAEA,mBAAS,iBAAiB,YAAY,WAAW,QAAQ,MAAM;AAC7D,gBAAI,OAAO,yBAAyB;AACpC,gBAAI,WAAW,SAAS,SAAY,OAAO;AAC3C,gBAAI,UAAU;AAEd,gBAAI,gBAAgB,MAAM;AACxB,kBAAI,aAAa,YAAY;AAC7B,wBAAU,WAAW;AAErB,kBAAI,aAAa,MAAM;AACrB,oBAAI,WAAW,WAAW;AAE1B,oBAAI,mBAAmB,UAAU,QAAQ,GAAG;AAC1C,uBAAK,gBAAgB,WAAW,WAAW,QAAQ,SAAS,QAAQ;AACpE;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAEA,sCAA0B,SAAS;AACnC,iBAAK,gBAAgB,WAAW,YAAY,WAAW,QAAQ,SAAS,QAAQ;AAAA,UAClF;AAEA,mBAAS,YAAY,QAAQ,MAAM;AACjC,iBAAM,0BAA0B,OAAO,uBAAuB,QAAQ;AACpE,qBAAO,gBAAgB,kBAAkB,UAAU,eAAe,WAAW,QAAQ,IAAI;AAAA,YAC3F,OAAO;AACL,qBAAO,gBAAgB,UAAU,eAAe,WAAW,QAAQ,IAAI;AAAA,YACzE;AAAA,UACF;AAEA,mBAAS,aAAa,QAAQ,MAAM;AAClC,mBAAO,iBAAiB,SAAS,WAAW,QAAQ,IAAI;AAAA,UAC1D;AAEA,mBAAS,qBAAqB,QAAQ,MAAM;AAC1C,mBAAO,gBAAgB,QAAQD,YAAW,QAAQ,IAAI;AAAA,UACxD;AAEA,mBAAS,sBAAsB,QAAQ,MAAM;AAC3C,mBAAO,iBAAiB,QAAQA,YAAW,QAAQ,IAAI;AAAA,UACzD;AAEA,mBAAS,kBAAkB,QAAQ,MAAM;AACvC,gBAAI,aAAa;AAEjB;AACE,4BAAc;AAAA,YAChB;AAEA,iBAAM,0BAA0B,OAAO,uBAAuB,QAAQ;AACpE,4BAAc;AAAA,YAChB;AAEA,mBAAO,gBAAgB,YAAY,QAAQ,QAAQ,IAAI;AAAA,UACzD;AAEA,mBAAS,mBAAmB,QAAQ,MAAM;AACxC,mBAAO,iBAAiB,QAAQ,QAAQ,QAAQ,IAAI;AAAA,UACtD;AAEA,mBAAS,uBAAuB,QAAQ,KAAK;AAC3C,gBAAI,OAAO,QAAQ,YAAY;AAC7B,kBAAI,cAAc;AAElB,kBAAI,QAAQ,OAAO;AAEnB,0BAAY,KAAK;AACjB,qBAAO,WAAY;AACjB,4BAAY,IAAI;AAAA,cAClB;AAAA,YACF,WAAW,QAAQ,QAAQ,QAAQ,QAAW;AAC5C,kBAAI,YAAY;AAEhB;AACE,oBAAI,CAAC,UAAU,eAAe,SAAS,GAAG;AACxC,wBAAM,gIAAqI,0BAA0B,OAAO,KAAK,SAAS,EAAE,KAAK,IAAI,IAAI,GAAG;AAAA,gBAC9M;AAAA,cACF;AAEA,kBAAI,SAAS,OAAO;AAEpB,wBAAU,UAAU;AACpB,qBAAO,WAAY;AACjB,0BAAU,UAAU;AAAA,cACtB;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,sBAAsB,KAAK,QAAQ,MAAM;AAChD;AACE,kBAAI,OAAO,WAAW,YAAY;AAChC,sBAAM,gHAAqH,WAAW,OAAO,OAAO,SAAS,MAAM;AAAA,cACrK;AAAA,YACF;AAGA,gBAAI,aAAa,SAAS,QAAQ,SAAS,SAAY,KAAK,OAAO,CAAC,GAAG,CAAC,IAAI;AAC5E,gBAAI,aAAa;AAEjB;AACE,4BAAc;AAAA,YAChB;AAEA,iBAAM,0BAA0B,OAAO,uBAAuB,QAAQ;AACpE,4BAAc;AAAA,YAChB;AAEA,mBAAO,gBAAgB,YAAY,QAAQ,uBAAuB,KAAK,MAAM,QAAQ,GAAG,GAAG,UAAU;AAAA,UACvG;AAEA,mBAAS,uBAAuB,KAAK,QAAQ,MAAM;AACjD;AACE,kBAAI,OAAO,WAAW,YAAY;AAChC,sBAAM,gHAAqH,WAAW,OAAO,OAAO,SAAS,MAAM;AAAA,cACrK;AAAA,YACF;AAGA,gBAAI,aAAa,SAAS,QAAQ,SAAS,SAAY,KAAK,OAAO,CAAC,GAAG,CAAC,IAAI;AAC5E,mBAAO,iBAAiB,QAAQ,QAAQ,uBAAuB,KAAK,MAAM,QAAQ,GAAG,GAAG,UAAU;AAAA,UACpG;AAEA,mBAAS,gBAAgB,OAAO,aAAa;AAAA,UAG7C;AAEA,cAAI,mBAAmB;AAEvB,mBAAS,cAAc,UAAU,MAAM;AACrC,gBAAI,OAAO,wBAAwB;AACnC,gBAAI,WAAW,SAAS,SAAY,OAAO;AAC3C,iBAAK,gBAAgB,CAAC,UAAU,QAAQ;AACxC,mBAAO;AAAA,UACT;AAEA,mBAAS,eAAe,UAAU,MAAM;AACtC,gBAAI,OAAO,yBAAyB;AACpC,gBAAI,WAAW,SAAS,SAAY,OAAO;AAC3C,gBAAI,YAAY,KAAK;AAErB,gBAAI,cAAc,MAAM;AACtB,kBAAI,aAAa,MAAM;AACrB,oBAAI,WAAW,UAAU,CAAC;AAE1B,oBAAI,mBAAmB,UAAU,QAAQ,GAAG;AAC1C,yBAAO,UAAU,CAAC;AAAA,gBACpB;AAAA,cACF;AAAA,YACF;AAEA,iBAAK,gBAAgB,CAAC,UAAU,QAAQ;AACxC,mBAAO;AAAA,UACT;AAEA,mBAAS,UAAU,YAAY,MAAM;AACnC,gBAAI,OAAO,wBAAwB;AACnC,gBAAI,WAAW,SAAS,SAAY,OAAO;AAC3C,gBAAI,YAAY,WAAW;AAC3B,iBAAK,gBAAgB,CAAC,WAAW,QAAQ;AACzC,mBAAO;AAAA,UACT;AAEA,mBAAS,WAAW,YAAY,MAAM;AACpC,gBAAI,OAAO,yBAAyB;AACpC,gBAAI,WAAW,SAAS,SAAY,OAAO;AAC3C,gBAAI,YAAY,KAAK;AAErB,gBAAI,cAAc,MAAM;AAEtB,kBAAI,aAAa,MAAM;AACrB,oBAAI,WAAW,UAAU,CAAC;AAE1B,oBAAI,mBAAmB,UAAU,QAAQ,GAAG;AAC1C,yBAAO,UAAU,CAAC;AAAA,gBACpB;AAAA,cACF;AAAA,YACF;AAEA,gBAAI,YAAY,WAAW;AAC3B,iBAAK,gBAAgB,CAAC,WAAW,QAAQ;AACzC,mBAAO;AAAA,UACT;AAEA,mBAAS,mBAAmB,OAAO;AACjC,gBAAI,OAAO,wBAAwB;AACnC,iBAAK,gBAAgB;AACrB,mBAAO;AAAA,UACT;AAEA,mBAAS,oBAAoB,OAAO;AAClC,gBAAI,OAAO,yBAAyB;AACpC,gBAAI,sBAAsB;AAC1B,gBAAI,YAAY,oBAAoB;AACpC,mBAAO,wBAAwB,MAAM,WAAW,KAAK;AAAA,UACvD;AAEA,mBAAS,sBAAsB,OAAO;AACpC,gBAAI,OAAO,yBAAyB;AAEpC,gBAAI,gBAAgB,MAAM;AAExB,mBAAK,gBAAgB;AACrB,qBAAO;AAAA,YACT,OAAO;AAEL,kBAAI,YAAY,YAAY;AAC5B,qBAAO,wBAAwB,MAAM,WAAW,KAAK;AAAA,YACvD;AAAA,UACF;AAEA,mBAAS,wBAAwB,MAAM,WAAW,OAAO;AACvD,gBAAI,mBAAmB,CAAC,2BAA2B,WAAW;AAE9D,gBAAI,kBAAkB;AAGpB,kBAAI,CAAC,SAAS,OAAO,SAAS,GAAG;AAE/B,oBAAI,eAAe,wBAAwB;AAC3C,0CAA0B,QAAQ,WAAW,0BAA0B,OAAO,YAAY;AAC1F,uCAAuB,YAAY;AAKnC,qBAAK,YAAY;AAAA,cACnB;AAGA,qBAAO;AAAA,YACT,OAAO;AASL,kBAAI,KAAK,WAAW;AAElB,qBAAK,YAAY;AACjB,iDAAiC;AAAA,cACnC;AAEA,mBAAK,gBAAgB;AACrB,qBAAO;AAAA,YACT;AAAA,UACF;AAEA,mBAAS,gBAAgB,YAAY,UAAUnD,UAAS;AACtD,gBAAI,mBAAmB,yBAAyB;AAChD,qCAAyB,oBAAoB,kBAAkB,uBAAuB,CAAC;AACvF,uBAAW,IAAI;AACf,gBAAI,iBAAiB,0BAA0B;AAC/C,sCAA0B,aAAa,CAAC;AACxC,gBAAI,oBAAoB,0BAA0B;AAElD;AACE,wCAA0B,WAAW,iBAAiB,oBAAI,IAAI;AAAA,YAChE;AAEA,gBAAI;AACF,yBAAW,KAAK;AAChB,uBAAS;AAAA,YACX,UAAE;AACA,uCAAyB,gBAAgB;AACzC,wCAA0B,aAAa;AAEvC;AACE,oBAAI,mBAAmB,QAAQ,kBAAkB,gBAAgB;AAC/D,sBAAI,qBAAqB,kBAAkB,eAAe;AAE1D,sBAAI,qBAAqB,IAAI;AAC3B,oBAAA3B,MAAK,qMAA+M;AAAA,kBACtN;AAEA,oCAAkB,eAAe,MAAM;AAAA,gBACzC;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,kBAAkB;AACzB,gBAAI,cAAc,WAAW,KAAK,GAC9B,YAAY,YAAY,CAAC,GACzB,aAAa,YAAY,CAAC;AAG9B,gBAAI,QAAQ,gBAAgB,KAAK,MAAM,UAAU;AACjD,gBAAI,OAAO,wBAAwB;AACnC,iBAAK,gBAAgB;AACrB,mBAAO,CAAC,WAAW,KAAK;AAAA,UAC1B;AAEA,mBAAS,mBAAmB;AAC1B,gBAAI,eAAe,YAAY,GAC3B,YAAY,aAAa,CAAC;AAE9B,gBAAI,OAAO,yBAAyB;AACpC,gBAAI,QAAQ,KAAK;AACjB,mBAAO,CAAC,WAAW,KAAK;AAAA,UAC1B;AAEA,mBAAS,qBAAqB;AAC5B,gBAAI,iBAAiB,cAAc,GAC/B,YAAY,eAAe,CAAC;AAEhC,gBAAI,OAAO,yBAAyB;AACpC,gBAAI,QAAQ,KAAK;AACjB,mBAAO,CAAC,WAAW,KAAK;AAAA,UAC1B;AAEA,cAAI,qCAAqC;AACzC,mBAAS,6CAA6C;AACpD;AACE,qBAAO;AAAA,YACT;AAAA,UACF;AAEA,mBAAS,UAAU;AACjB,gBAAI,OAAO,wBAAwB;AACnC,gBAAI4C,QAAO,sBAAsB;AAMjC,gBAAI,mBAAmBA,MAAK;AAC5B,gBAAI0B;AAEJ,gBAAI,eAAe,GAAG;AACpB,kBAAI,SAAS,UAAU;AAEvB,cAAAA,OAAK,MAAM,mBAAmB,MAAM;AAIpC,kBAAI,UAAU;AAEd,kBAAI,UAAU,GAAG;AACf,gBAAAA,QAAM,MAAM,QAAQ,SAAS,EAAE;AAAA,cACjC;AAEA,cAAAA,QAAM;AAAA,YACR,OAAO;AAEL,kBAAI,iBAAiB;AACrB,cAAAA,OAAK,MAAM,mBAAmB,MAAM,eAAe,SAAS,EAAE,IAAI;AAAA,YACpE;AAEA,iBAAK,gBAAgBA;AACrB,mBAAOA;AAAA,UACT;AAEA,mBAAS,WAAW;AAClB,gBAAI,OAAO,yBAAyB;AACpC,gBAAIA,OAAK,KAAK;AACd,mBAAOA;AAAA,UACT;AAEA,mBAAS,sBAAsB,OAAO,OAAO,QAAQ;AACnD;AACE,kBAAI,OAAO,UAAU,CAAC,MAAM,YAAY;AACtC,sBAAM,mMAA6M;AAAA,cACrN;AAAA,YACF;AAEA,gBAAI,OAAO,kBAAkB,KAAK;AAClC,gBAAI,SAAS;AAAA,cACX;AAAA,cACA;AAAA,cACA,eAAe;AAAA,cACf,YAAY;AAAA,cACZ,MAAM;AAAA,YACR;AAEA,gBAAI,oBAAoB,KAAK,GAAG;AAC9B,uCAAyB,OAAO,MAAM;AAAA,YACxC,OAAO;AACL,kBAAI1B,QAAO,4BAA4B,OAAO,OAAO,QAAQ,IAAI;AAEjE,kBAAIA,UAAS,MAAM;AACjB,oBAAI,YAAY,iBAAiB;AACjC,sCAAsBA,OAAM,OAAO,MAAM,SAAS;AAClD,yCAAyBA,OAAM,OAAO,IAAI;AAAA,cAC5C;AAAA,YACF;AAEA,iCAAqB,OAAO,IAAI;AAAA,UAClC;AAEA,mBAAS,iBAAiB,OAAO,OAAO,QAAQ;AAC9C;AACE,kBAAI,OAAO,UAAU,CAAC,MAAM,YAAY;AACtC,sBAAM,mMAA6M;AAAA,cACrN;AAAA,YACF;AAEA,gBAAI,OAAO,kBAAkB,KAAK;AAClC,gBAAI,SAAS;AAAA,cACX;AAAA,cACA;AAAA,cACA,eAAe;AAAA,cACf,YAAY;AAAA,cACZ,MAAM;AAAA,YACR;AAEA,gBAAI,oBAAoB,KAAK,GAAG;AAC9B,uCAAyB,OAAO,MAAM;AAAA,YACxC,OAAO;AACL,kBAAI,YAAY,MAAM;AAEtB,kBAAI,MAAM,UAAU,YAAY,cAAc,QAAQ,UAAU,UAAU,UAAU;AAIlF,oBAAI,sBAAsB,MAAM;AAEhC,oBAAI,wBAAwB,MAAM;AAChC,sBAAI;AAEJ;AACE,qCAAiB,yBAAyB;AAC1C,6CAAyB,UAAU;AAAA,kBACrC;AAEA,sBAAI;AACF,wBAAI,eAAe,MAAM;AACzB,wBAAI,aAAa,oBAAoB,cAAc,MAAM;AAKzD,2BAAO,gBAAgB;AACvB,2BAAO,aAAa;AAEpB,wBAAI,SAAS,YAAY,YAAY,GAAG;AAMtC,mEAA6C,OAAO,OAAO,QAAQ,IAAI;AACvE;AAAA,oBACF;AAAA,kBACF,SAASJ,QAAO;AAAA,kBAChB,UAAE;AACA;AACE,+CAAyB,UAAU;AAAA,oBACrC;AAAA,kBACF;AAAA,gBACF;AAAA,cACF;AAEA,kBAAII,QAAO,4BAA4B,OAAO,OAAO,QAAQ,IAAI;AAEjE,kBAAIA,UAAS,MAAM;AACjB,oBAAI,YAAY,iBAAiB;AACjC,sCAAsBA,OAAM,OAAO,MAAM,SAAS;AAClD,yCAAyBA,OAAM,OAAO,IAAI;AAAA,cAC5C;AAAA,YACF;AAEA,iCAAqB,OAAO,IAAI;AAAA,UAClC;AAEA,mBAAS,oBAAoB,OAAO;AAClC,gBAAI,YAAY,MAAM;AACtB,mBAAO,UAAU,6BAA6B,cAAc,QAAQ,cAAc;AAAA,UACpF;AAEA,mBAAS,yBAAyB,OAAO,QAAQ;AAI/C,yDAA6C,+BAA+B;AAC5E,gBAAI,UAAU,MAAM;AAEpB,gBAAI,YAAY,MAAM;AAEpB,qBAAO,OAAO;AAAA,YAChB,OAAO;AACL,qBAAO,OAAO,QAAQ;AACtB,sBAAQ,OAAO;AAAA,YACjB;AAEA,kBAAM,UAAU;AAAA,UAClB;AAGA,mBAAS,yBAAyBA,OAAM,OAAO,MAAM;AACnD,gBAAI,iBAAiB,IAAI,GAAG;AAC1B,kBAAI,aAAa,MAAM;AAMvB,2BAAa,eAAe,YAAYA,MAAK,YAAY;AAEzD,kBAAI,gBAAgB,WAAW,YAAY,IAAI;AAC/C,oBAAM,QAAQ;AAId,gCAAkBA,OAAM,aAAa;AAAA,YACvC;AAAA,UACF;AAEA,mBAAS,qBAAqB,OAAO,MAAM,QAAQ;AAEjD;AACE,uCAAyB,OAAO,IAAI;AAAA,YACtC;AAAA,UACF;AAEA,cAAI,wBAAwB;AAAA,YAC1B;AAAA,YACA,aAAa;AAAA,YACb,YAAY;AAAA,YACZ,WAAW;AAAA,YACX,qBAAqB;AAAA,YACrB,oBAAoB;AAAA,YACpB,iBAAiB;AAAA,YACjB,SAAS;AAAA,YACT,YAAY;AAAA,YACZ,QAAQ;AAAA,YACR,UAAU;AAAA,YACV,eAAe;AAAA,YACf,kBAAkB;AAAA,YAClB,eAAe;AAAA,YACf,kBAAkB;AAAA,YAClB,sBAAsB;AAAA,YACtB,OAAO;AAAA,YACP,0BAA0B;AAAA,UAC5B;AAEA,cAAI,8BAA8B;AAClC,cAAI,2CAA2C;AAC/C,cAAI,+BAA+B;AACnC,cAAI,iCAAiC;AACrC,cAAI,2CAA2C;AAC/C,cAAI,4CAA4C;AAChD,cAAI,8CAA8C;AAElD;AACE,gBAAI,2BAA2B,WAAY;AACzC,oBAAM,8PAA6Q;AAAA,YACrR;AAEA,gBAAI,wBAAwB,WAAY;AACtC,oBAAM,oNAAmO;AAAA,YAC3O;AAEA,0CAA8B;AAAA,cAC5B,aAAa,SAAU,SAAS;AAC9B,uBAAO,YAAY,OAAO;AAAA,cAC5B;AAAA,cACA,aAAa,SAAU,UAAU,MAAM;AACrC,uCAAuB;AACvB,kCAAkB;AAClB,qCAAqB,IAAI;AACzB,uBAAO,cAAc,UAAU,IAAI;AAAA,cACrC;AAAA,cACA,YAAY,SAAU,SAAS;AAC7B,uCAAuB;AACvB,kCAAkB;AAClB,uBAAO,YAAY,OAAO;AAAA,cAC5B;AAAA,cACA,WAAW,SAAU,QAAQ,MAAM;AACjC,uCAAuB;AACvB,kCAAkB;AAClB,qCAAqB,IAAI;AACzB,uBAAO,YAAY,QAAQ,IAAI;AAAA,cACjC;AAAA,cACA,qBAAqB,SAAU,KAAK,QAAQ,MAAM;AAChD,uCAAuB;AACvB,kCAAkB;AAClB,qCAAqB,IAAI;AACzB,uBAAO,sBAAsB,KAAK,QAAQ,IAAI;AAAA,cAChD;AAAA,cACA,oBAAoB,SAAU,QAAQ,MAAM;AAC1C,uCAAuB;AACvB,kCAAkB;AAClB,qCAAqB,IAAI;AACzB,uBAAO,qBAAqB,QAAQ,IAAI;AAAA,cAC1C;AAAA,cACA,iBAAiB,SAAU,QAAQ,MAAM;AACvC,uCAAuB;AACvB,kCAAkB;AAClB,qCAAqB,IAAI;AACzB,uBAAO,kBAAkB,QAAQ,IAAI;AAAA,cACvC;AAAA,cACA,SAAS,SAAU,QAAQ,MAAM;AAC/B,uCAAuB;AACvB,kCAAkB;AAClB,qCAAqB,IAAI;AACzB,oBAAI,iBAAiB,yBAAyB;AAC9C,yCAAyB,UAAU;AAEnC,oBAAI;AACF,yBAAO,UAAU,QAAQ,IAAI;AAAA,gBAC/B,UAAE;AACA,2CAAyB,UAAU;AAAA,gBACrC;AAAA,cACF;AAAA,cACA,YAAY,SAAU,SAAS,YAAYxB,SAAM;AAC/C,uCAAuB;AACvB,kCAAkB;AAClB,oBAAI,iBAAiB,yBAAyB;AAC9C,yCAAyB,UAAU;AAEnC,oBAAI;AACF,yBAAO,aAAa,SAAS,YAAYA,OAAI;AAAA,gBAC/C,UAAE;AACA,2CAAyB,UAAU;AAAA,gBACrC;AAAA,cACF;AAAA,cACA,QAAQ,SAAU,cAAc;AAC9B,uCAAuB;AACvB,kCAAkB;AAClB,uBAAO,SAAS,YAAY;AAAA,cAC9B;AAAA,cACA,UAAU,SAAU,cAAc;AAChC,uCAAuB;AACvB,kCAAkB;AAClB,oBAAI,iBAAiB,yBAAyB;AAC9C,yCAAyB,UAAU;AAEnC,oBAAI;AACF,yBAAO,WAAW,YAAY;AAAA,gBAChC,UAAE;AACA,2CAAyB,UAAU;AAAA,gBACrC;AAAA,cACF;AAAA,cACA,eAAe,SAAU,OAAO,aAAa;AAC3C,uCAAuB;AACvB,kCAAkB;AAClB,uBAAO,gBAAgB;AAAA,cACzB;AAAA,cACA,kBAAkB,SAAU,OAAO;AACjC,uCAAuB;AACvB,kCAAkB;AAClB,uBAAO,mBAAmB,KAAK;AAAA,cACjC;AAAA,cACA,eAAe,WAAY;AACzB,uCAAuB;AACvB,kCAAkB;AAClB,uBAAO,gBAAgB;AAAA,cACzB;AAAA,cACA,kBAAkB,SAAU,QAAQ,aAAa,WAAW;AAC1D,uCAAuB;AACvB,kCAAkB;AAClB,uBAAO,mBAAmB;AAAA,cAC5B;AAAA,cACA,sBAAsB,SAAU,WAAW,aAAa,mBAAmB;AACzE,uCAAuB;AACvB,kCAAkB;AAClB,uBAAO,uBAAuB,WAAW,aAAa,iBAAiB;AAAA,cACzE;AAAA,cACA,OAAO,WAAY;AACjB,uCAAuB;AACvB,kCAAkB;AAClB,uBAAO,QAAQ;AAAA,cACjB;AAAA,cACA,0BAA0B;AAAA,YAC5B;AAEA,uDAA2C;AAAA,cACzC,aAAa,SAAU,SAAS;AAC9B,uBAAO,YAAY,OAAO;AAAA,cAC5B;AAAA,cACA,aAAa,SAAU,UAAU,MAAM;AACrC,uCAAuB;AACvB,mCAAmB;AACnB,uBAAO,cAAc,UAAU,IAAI;AAAA,cACrC;AAAA,cACA,YAAY,SAAU,SAAS;AAC7B,uCAAuB;AACvB,mCAAmB;AACnB,uBAAO,YAAY,OAAO;AAAA,cAC5B;AAAA,cACA,WAAW,SAAU,QAAQ,MAAM;AACjC,uCAAuB;AACvB,mCAAmB;AACnB,uBAAO,YAAY,QAAQ,IAAI;AAAA,cACjC;AAAA,cACA,qBAAqB,SAAU,KAAK,QAAQ,MAAM;AAChD,uCAAuB;AACvB,mCAAmB;AACnB,uBAAO,sBAAsB,KAAK,QAAQ,IAAI;AAAA,cAChD;AAAA,cACA,oBAAoB,SAAU,QAAQ,MAAM;AAC1C,uCAAuB;AACvB,mCAAmB;AACnB,uBAAO,qBAAqB,QAAQ,IAAI;AAAA,cAC1C;AAAA,cACA,iBAAiB,SAAU,QAAQ,MAAM;AACvC,uCAAuB;AACvB,mCAAmB;AACnB,uBAAO,kBAAkB,QAAQ,IAAI;AAAA,cACvC;AAAA,cACA,SAAS,SAAU,QAAQ,MAAM;AAC/B,uCAAuB;AACvB,mCAAmB;AACnB,oBAAI,iBAAiB,yBAAyB;AAC9C,yCAAyB,UAAU;AAEnC,oBAAI;AACF,yBAAO,UAAU,QAAQ,IAAI;AAAA,gBAC/B,UAAE;AACA,2CAAyB,UAAU;AAAA,gBACrC;AAAA,cACF;AAAA,cACA,YAAY,SAAU,SAAS,YAAYA,SAAM;AAC/C,uCAAuB;AACvB,mCAAmB;AACnB,oBAAI,iBAAiB,yBAAyB;AAC9C,yCAAyB,UAAU;AAEnC,oBAAI;AACF,yBAAO,aAAa,SAAS,YAAYA,OAAI;AAAA,gBAC/C,UAAE;AACA,2CAAyB,UAAU;AAAA,gBACrC;AAAA,cACF;AAAA,cACA,QAAQ,SAAU,cAAc;AAC9B,uCAAuB;AACvB,mCAAmB;AACnB,uBAAO,SAAS,YAAY;AAAA,cAC9B;AAAA,cACA,UAAU,SAAU,cAAc;AAChC,uCAAuB;AACvB,mCAAmB;AACnB,oBAAI,iBAAiB,yBAAyB;AAC9C,yCAAyB,UAAU;AAEnC,oBAAI;AACF,yBAAO,WAAW,YAAY;AAAA,gBAChC,UAAE;AACA,2CAAyB,UAAU;AAAA,gBACrC;AAAA,cACF;AAAA,cACA,eAAe,SAAU,OAAO,aAAa;AAC3C,uCAAuB;AACvB,mCAAmB;AACnB,uBAAO,gBAAgB;AAAA,cACzB;AAAA,cACA,kBAAkB,SAAU,OAAO;AACjC,uCAAuB;AACvB,mCAAmB;AACnB,uBAAO,mBAAmB,KAAK;AAAA,cACjC;AAAA,cACA,eAAe,WAAY;AACzB,uCAAuB;AACvB,mCAAmB;AACnB,uBAAO,gBAAgB;AAAA,cACzB;AAAA,cACA,kBAAkB,SAAU,QAAQ,aAAa,WAAW;AAC1D,uCAAuB;AACvB,mCAAmB;AACnB,uBAAO,mBAAmB;AAAA,cAC5B;AAAA,cACA,sBAAsB,SAAU,WAAW,aAAa,mBAAmB;AACzE,uCAAuB;AACvB,mCAAmB;AACnB,uBAAO,uBAAuB,WAAW,aAAa,iBAAiB;AAAA,cACzE;AAAA,cACA,OAAO,WAAY;AACjB,uCAAuB;AACvB,mCAAmB;AACnB,uBAAO,QAAQ;AAAA,cACjB;AAAA,cACA,0BAA0B;AAAA,YAC5B;AAEA,2CAA+B;AAAA,cAC7B,aAAa,SAAU,SAAS;AAC9B,uBAAO,YAAY,OAAO;AAAA,cAC5B;AAAA,cACA,aAAa,SAAU,UAAU,MAAM;AACrC,uCAAuB;AACvB,mCAAmB;AACnB,uBAAO,eAAe,UAAU,IAAI;AAAA,cACtC;AAAA,cACA,YAAY,SAAU,SAAS;AAC7B,uCAAuB;AACvB,mCAAmB;AACnB,uBAAO,YAAY,OAAO;AAAA,cAC5B;AAAA,cACA,WAAW,SAAU,QAAQ,MAAM;AACjC,uCAAuB;AACvB,mCAAmB;AACnB,uBAAO,aAAa,QAAQ,IAAI;AAAA,cAClC;AAAA,cACA,qBAAqB,SAAU,KAAK,QAAQ,MAAM;AAChD,uCAAuB;AACvB,mCAAmB;AACnB,uBAAO,uBAAuB,KAAK,QAAQ,IAAI;AAAA,cACjD;AAAA,cACA,oBAAoB,SAAU,QAAQ,MAAM;AAC1C,uCAAuB;AACvB,mCAAmB;AACnB,uBAAO,sBAAsB,QAAQ,IAAI;AAAA,cAC3C;AAAA,cACA,iBAAiB,SAAU,QAAQ,MAAM;AACvC,uCAAuB;AACvB,mCAAmB;AACnB,uBAAO,mBAAmB,QAAQ,IAAI;AAAA,cACxC;AAAA,cACA,SAAS,SAAU,QAAQ,MAAM;AAC/B,uCAAuB;AACvB,mCAAmB;AACnB,oBAAI,iBAAiB,yBAAyB;AAC9C,yCAAyB,UAAU;AAEnC,oBAAI;AACF,yBAAO,WAAW,QAAQ,IAAI;AAAA,gBAChC,UAAE;AACA,2CAAyB,UAAU;AAAA,gBACrC;AAAA,cACF;AAAA,cACA,YAAY,SAAU,SAAS,YAAYA,SAAM;AAC/C,uCAAuB;AACvB,mCAAmB;AACnB,oBAAI,iBAAiB,yBAAyB;AAC9C,yCAAyB,UAAU;AAEnC,oBAAI;AACF,yBAAO,cAAc,SAAS,YAAYA,OAAI;AAAA,gBAChD,UAAE;AACA,2CAAyB,UAAU;AAAA,gBACrC;AAAA,cACF;AAAA,cACA,QAAQ,SAAU,cAAc;AAC9B,uCAAuB;AACvB,mCAAmB;AACnB,uBAAO,UAAU;AAAA,cACnB;AAAA,cACA,UAAU,SAAU,cAAc;AAChC,uCAAuB;AACvB,mCAAmB;AACnB,oBAAI,iBAAiB,yBAAyB;AAC9C,yCAAyB,UAAU;AAEnC,oBAAI;AACF,yBAAO,YAAY,YAAY;AAAA,gBACjC,UAAE;AACA,2CAAyB,UAAU;AAAA,gBACrC;AAAA,cACF;AAAA,cACA,eAAe,SAAU,OAAO,aAAa;AAC3C,uCAAuB;AACvB,mCAAmB;AACnB,uBAAO,iBAAiB;AAAA,cAC1B;AAAA,cACA,kBAAkB,SAAU,OAAO;AACjC,uCAAuB;AACvB,mCAAmB;AACnB,uBAAO,oBAAoB,KAAK;AAAA,cAClC;AAAA,cACA,eAAe,WAAY;AACzB,uCAAuB;AACvB,mCAAmB;AACnB,uBAAO,iBAAiB;AAAA,cAC1B;AAAA,cACA,kBAAkB,SAAU,QAAQ,aAAa,WAAW;AAC1D,uCAAuB;AACvB,mCAAmB;AACnB,uBAAO,oBAAoB;AAAA,cAC7B;AAAA,cACA,sBAAsB,SAAU,WAAW,aAAa,mBAAmB;AACzE,uCAAuB;AACvB,mCAAmB;AACnB,uBAAO,wBAAwB,WAAW,WAAW;AAAA,cACvD;AAAA,cACA,OAAO,WAAY;AACjB,uCAAuB;AACvB,mCAAmB;AACnB,uBAAO,SAAS;AAAA,cAClB;AAAA,cACA,0BAA0B;AAAA,YAC5B;AAEA,6CAAiC;AAAA,cAC/B,aAAa,SAAU,SAAS;AAC9B,uBAAO,YAAY,OAAO;AAAA,cAC5B;AAAA,cACA,aAAa,SAAU,UAAU,MAAM;AACrC,uCAAuB;AACvB,mCAAmB;AACnB,uBAAO,eAAe,UAAU,IAAI;AAAA,cACtC;AAAA,cACA,YAAY,SAAU,SAAS;AAC7B,uCAAuB;AACvB,mCAAmB;AACnB,uBAAO,YAAY,OAAO;AAAA,cAC5B;AAAA,cACA,WAAW,SAAU,QAAQ,MAAM;AACjC,uCAAuB;AACvB,mCAAmB;AACnB,uBAAO,aAAa,QAAQ,IAAI;AAAA,cAClC;AAAA,cACA,qBAAqB,SAAU,KAAK,QAAQ,MAAM;AAChD,uCAAuB;AACvB,mCAAmB;AACnB,uBAAO,uBAAuB,KAAK,QAAQ,IAAI;AAAA,cACjD;AAAA,cACA,oBAAoB,SAAU,QAAQ,MAAM;AAC1C,uCAAuB;AACvB,mCAAmB;AACnB,uBAAO,sBAAsB,QAAQ,IAAI;AAAA,cAC3C;AAAA,cACA,iBAAiB,SAAU,QAAQ,MAAM;AACvC,uCAAuB;AACvB,mCAAmB;AACnB,uBAAO,mBAAmB,QAAQ,IAAI;AAAA,cACxC;AAAA,cACA,SAAS,SAAU,QAAQ,MAAM;AAC/B,uCAAuB;AACvB,mCAAmB;AACnB,oBAAI,iBAAiB,yBAAyB;AAC9C,yCAAyB,UAAU;AAEnC,oBAAI;AACF,yBAAO,WAAW,QAAQ,IAAI;AAAA,gBAChC,UAAE;AACA,2CAAyB,UAAU;AAAA,gBACrC;AAAA,cACF;AAAA,cACA,YAAY,SAAU,SAAS,YAAYA,SAAM;AAC/C,uCAAuB;AACvB,mCAAmB;AACnB,oBAAI,iBAAiB,yBAAyB;AAC9C,yCAAyB,UAAU;AAEnC,oBAAI;AACF,yBAAO,gBAAgB,SAAS,YAAYA,OAAI;AAAA,gBAClD,UAAE;AACA,2CAAyB,UAAU;AAAA,gBACrC;AAAA,cACF;AAAA,cACA,QAAQ,SAAU,cAAc;AAC9B,uCAAuB;AACvB,mCAAmB;AACnB,uBAAO,UAAU;AAAA,cACnB;AAAA,cACA,UAAU,SAAU,cAAc;AAChC,uCAAuB;AACvB,mCAAmB;AACnB,oBAAI,iBAAiB,yBAAyB;AAC9C,yCAAyB,UAAU;AAEnC,oBAAI;AACF,yBAAO,cAAc,YAAY;AAAA,gBACnC,UAAE;AACA,2CAAyB,UAAU;AAAA,gBACrC;AAAA,cACF;AAAA,cACA,eAAe,SAAU,OAAO,aAAa;AAC3C,uCAAuB;AACvB,mCAAmB;AACnB,uBAAO,iBAAiB;AAAA,cAC1B;AAAA,cACA,kBAAkB,SAAU,OAAO;AACjC,uCAAuB;AACvB,mCAAmB;AACnB,uBAAO,sBAAsB,KAAK;AAAA,cACpC;AAAA,cACA,eAAe,WAAY;AACzB,uCAAuB;AACvB,mCAAmB;AACnB,uBAAO,mBAAmB;AAAA,cAC5B;AAAA,cACA,kBAAkB,SAAU,QAAQ,aAAa,WAAW;AAC1D,uCAAuB;AACvB,mCAAmB;AACnB,uBAAO,oBAAoB;AAAA,cAC7B;AAAA,cACA,sBAAsB,SAAU,WAAW,aAAa,mBAAmB;AACzE,uCAAuB;AACvB,mCAAmB;AACnB,uBAAO,wBAAwB,WAAW,WAAW;AAAA,cACvD;AAAA,cACA,OAAO,WAAY;AACjB,uCAAuB;AACvB,mCAAmB;AACnB,uBAAO,SAAS;AAAA,cAClB;AAAA,cACA,0BAA0B;AAAA,YAC5B;AAEA,uDAA2C;AAAA,cACzC,aAAa,SAAU,SAAS;AAC9B,yCAAyB;AACzB,uBAAO,YAAY,OAAO;AAAA,cAC5B;AAAA,cACA,aAAa,SAAU,UAAU,MAAM;AACrC,uCAAuB;AACvB,sCAAsB;AACtB,kCAAkB;AAClB,uBAAO,cAAc,UAAU,IAAI;AAAA,cACrC;AAAA,cACA,YAAY,SAAU,SAAS;AAC7B,uCAAuB;AACvB,sCAAsB;AACtB,kCAAkB;AAClB,uBAAO,YAAY,OAAO;AAAA,cAC5B;AAAA,cACA,WAAW,SAAU,QAAQ,MAAM;AACjC,uCAAuB;AACvB,sCAAsB;AACtB,kCAAkB;AAClB,uBAAO,YAAY,QAAQ,IAAI;AAAA,cACjC;AAAA,cACA,qBAAqB,SAAU,KAAK,QAAQ,MAAM;AAChD,uCAAuB;AACvB,sCAAsB;AACtB,kCAAkB;AAClB,uBAAO,sBAAsB,KAAK,QAAQ,IAAI;AAAA,cAChD;AAAA,cACA,oBAAoB,SAAU,QAAQ,MAAM;AAC1C,uCAAuB;AACvB,sCAAsB;AACtB,kCAAkB;AAClB,uBAAO,qBAAqB,QAAQ,IAAI;AAAA,cAC1C;AAAA,cACA,iBAAiB,SAAU,QAAQ,MAAM;AACvC,uCAAuB;AACvB,sCAAsB;AACtB,kCAAkB;AAClB,uBAAO,kBAAkB,QAAQ,IAAI;AAAA,cACvC;AAAA,cACA,SAAS,SAAU,QAAQ,MAAM;AAC/B,uCAAuB;AACvB,sCAAsB;AACtB,kCAAkB;AAClB,oBAAI,iBAAiB,yBAAyB;AAC9C,yCAAyB,UAAU;AAEnC,oBAAI;AACF,yBAAO,UAAU,QAAQ,IAAI;AAAA,gBAC/B,UAAE;AACA,2CAAyB,UAAU;AAAA,gBACrC;AAAA,cACF;AAAA,cACA,YAAY,SAAU,SAAS,YAAYA,SAAM;AAC/C,uCAAuB;AACvB,sCAAsB;AACtB,kCAAkB;AAClB,oBAAI,iBAAiB,yBAAyB;AAC9C,yCAAyB,UAAU;AAEnC,oBAAI;AACF,yBAAO,aAAa,SAAS,YAAYA,OAAI;AAAA,gBAC/C,UAAE;AACA,2CAAyB,UAAU;AAAA,gBACrC;AAAA,cACF;AAAA,cACA,QAAQ,SAAU,cAAc;AAC9B,uCAAuB;AACvB,sCAAsB;AACtB,kCAAkB;AAClB,uBAAO,SAAS,YAAY;AAAA,cAC9B;AAAA,cACA,UAAU,SAAU,cAAc;AAChC,uCAAuB;AACvB,sCAAsB;AACtB,kCAAkB;AAClB,oBAAI,iBAAiB,yBAAyB;AAC9C,yCAAyB,UAAU;AAEnC,oBAAI;AACF,yBAAO,WAAW,YAAY;AAAA,gBAChC,UAAE;AACA,2CAAyB,UAAU;AAAA,gBACrC;AAAA,cACF;AAAA,cACA,eAAe,SAAU,OAAO,aAAa;AAC3C,uCAAuB;AACvB,sCAAsB;AACtB,kCAAkB;AAClB,uBAAO,gBAAgB;AAAA,cACzB;AAAA,cACA,kBAAkB,SAAU,OAAO;AACjC,uCAAuB;AACvB,sCAAsB;AACtB,kCAAkB;AAClB,uBAAO,mBAAmB,KAAK;AAAA,cACjC;AAAA,cACA,eAAe,WAAY;AACzB,uCAAuB;AACvB,sCAAsB;AACtB,kCAAkB;AAClB,uBAAO,gBAAgB;AAAA,cACzB;AAAA,cACA,kBAAkB,SAAU,QAAQ,aAAa,WAAW;AAC1D,uCAAuB;AACvB,sCAAsB;AACtB,kCAAkB;AAClB,uBAAO,mBAAmB;AAAA,cAC5B;AAAA,cACA,sBAAsB,SAAU,WAAW,aAAa,mBAAmB;AACzE,uCAAuB;AACvB,sCAAsB;AACtB,kCAAkB;AAClB,uBAAO,uBAAuB,WAAW,aAAa,iBAAiB;AAAA,cACzE;AAAA,cACA,OAAO,WAAY;AACjB,uCAAuB;AACvB,sCAAsB;AACtB,kCAAkB;AAClB,uBAAO,QAAQ;AAAA,cACjB;AAAA,cACA,0BAA0B;AAAA,YAC5B;AAEA,wDAA4C;AAAA,cAC1C,aAAa,SAAU,SAAS;AAC9B,yCAAyB;AACzB,uBAAO,YAAY,OAAO;AAAA,cAC5B;AAAA,cACA,aAAa,SAAU,UAAU,MAAM;AACrC,uCAAuB;AACvB,sCAAsB;AACtB,mCAAmB;AACnB,uBAAO,eAAe,UAAU,IAAI;AAAA,cACtC;AAAA,cACA,YAAY,SAAU,SAAS;AAC7B,uCAAuB;AACvB,sCAAsB;AACtB,mCAAmB;AACnB,uBAAO,YAAY,OAAO;AAAA,cAC5B;AAAA,cACA,WAAW,SAAU,QAAQ,MAAM;AACjC,uCAAuB;AACvB,sCAAsB;AACtB,mCAAmB;AACnB,uBAAO,aAAa,QAAQ,IAAI;AAAA,cAClC;AAAA,cACA,qBAAqB,SAAU,KAAK,QAAQ,MAAM;AAChD,uCAAuB;AACvB,sCAAsB;AACtB,mCAAmB;AACnB,uBAAO,uBAAuB,KAAK,QAAQ,IAAI;AAAA,cACjD;AAAA,cACA,oBAAoB,SAAU,QAAQ,MAAM;AAC1C,uCAAuB;AACvB,sCAAsB;AACtB,mCAAmB;AACnB,uBAAO,sBAAsB,QAAQ,IAAI;AAAA,cAC3C;AAAA,cACA,iBAAiB,SAAU,QAAQ,MAAM;AACvC,uCAAuB;AACvB,sCAAsB;AACtB,mCAAmB;AACnB,uBAAO,mBAAmB,QAAQ,IAAI;AAAA,cACxC;AAAA,cACA,SAAS,SAAU,QAAQ,MAAM;AAC/B,uCAAuB;AACvB,sCAAsB;AACtB,mCAAmB;AACnB,oBAAI,iBAAiB,yBAAyB;AAC9C,yCAAyB,UAAU;AAEnC,oBAAI;AACF,yBAAO,WAAW,QAAQ,IAAI;AAAA,gBAChC,UAAE;AACA,2CAAyB,UAAU;AAAA,gBACrC;AAAA,cACF;AAAA,cACA,YAAY,SAAU,SAAS,YAAYA,SAAM;AAC/C,uCAAuB;AACvB,sCAAsB;AACtB,mCAAmB;AACnB,oBAAI,iBAAiB,yBAAyB;AAC9C,yCAAyB,UAAU;AAEnC,oBAAI;AACF,yBAAO,cAAc,SAAS,YAAYA,OAAI;AAAA,gBAChD,UAAE;AACA,2CAAyB,UAAU;AAAA,gBACrC;AAAA,cACF;AAAA,cACA,QAAQ,SAAU,cAAc;AAC9B,uCAAuB;AACvB,sCAAsB;AACtB,mCAAmB;AACnB,uBAAO,UAAU;AAAA,cACnB;AAAA,cACA,UAAU,SAAU,cAAc;AAChC,uCAAuB;AACvB,sCAAsB;AACtB,mCAAmB;AACnB,oBAAI,iBAAiB,yBAAyB;AAC9C,yCAAyB,UAAU;AAEnC,oBAAI;AACF,yBAAO,YAAY,YAAY;AAAA,gBACjC,UAAE;AACA,2CAAyB,UAAU;AAAA,gBACrC;AAAA,cACF;AAAA,cACA,eAAe,SAAU,OAAO,aAAa;AAC3C,uCAAuB;AACvB,sCAAsB;AACtB,mCAAmB;AACnB,uBAAO,iBAAiB;AAAA,cAC1B;AAAA,cACA,kBAAkB,SAAU,OAAO;AACjC,uCAAuB;AACvB,sCAAsB;AACtB,mCAAmB;AACnB,uBAAO,oBAAoB,KAAK;AAAA,cAClC;AAAA,cACA,eAAe,WAAY;AACzB,uCAAuB;AACvB,sCAAsB;AACtB,mCAAmB;AACnB,uBAAO,iBAAiB;AAAA,cAC1B;AAAA,cACA,kBAAkB,SAAU,QAAQ,aAAa,WAAW;AAC1D,uCAAuB;AACvB,sCAAsB;AACtB,mCAAmB;AACnB,uBAAO,oBAAoB;AAAA,cAC7B;AAAA,cACA,sBAAsB,SAAU,WAAW,aAAa,mBAAmB;AACzE,uCAAuB;AACvB,sCAAsB;AACtB,mCAAmB;AACnB,uBAAO,wBAAwB,WAAW,WAAW;AAAA,cACvD;AAAA,cACA,OAAO,WAAY;AACjB,uCAAuB;AACvB,sCAAsB;AACtB,mCAAmB;AACnB,uBAAO,SAAS;AAAA,cAClB;AAAA,cACA,0BAA0B;AAAA,YAC5B;AAEA,0DAA8C;AAAA,cAC5C,aAAa,SAAU,SAAS;AAC9B,yCAAyB;AACzB,uBAAO,YAAY,OAAO;AAAA,cAC5B;AAAA,cACA,aAAa,SAAU,UAAU,MAAM;AACrC,uCAAuB;AACvB,sCAAsB;AACtB,mCAAmB;AACnB,uBAAO,eAAe,UAAU,IAAI;AAAA,cACtC;AAAA,cACA,YAAY,SAAU,SAAS;AAC7B,uCAAuB;AACvB,sCAAsB;AACtB,mCAAmB;AACnB,uBAAO,YAAY,OAAO;AAAA,cAC5B;AAAA,cACA,WAAW,SAAU,QAAQ,MAAM;AACjC,uCAAuB;AACvB,sCAAsB;AACtB,mCAAmB;AACnB,uBAAO,aAAa,QAAQ,IAAI;AAAA,cAClC;AAAA,cACA,qBAAqB,SAAU,KAAK,QAAQ,MAAM;AAChD,uCAAuB;AACvB,sCAAsB;AACtB,mCAAmB;AACnB,uBAAO,uBAAuB,KAAK,QAAQ,IAAI;AAAA,cACjD;AAAA,cACA,oBAAoB,SAAU,QAAQ,MAAM;AAC1C,uCAAuB;AACvB,sCAAsB;AACtB,mCAAmB;AACnB,uBAAO,sBAAsB,QAAQ,IAAI;AAAA,cAC3C;AAAA,cACA,iBAAiB,SAAU,QAAQ,MAAM;AACvC,uCAAuB;AACvB,sCAAsB;AACtB,mCAAmB;AACnB,uBAAO,mBAAmB,QAAQ,IAAI;AAAA,cACxC;AAAA,cACA,SAAS,SAAU,QAAQ,MAAM;AAC/B,uCAAuB;AACvB,sCAAsB;AACtB,mCAAmB;AACnB,oBAAI,iBAAiB,yBAAyB;AAC9C,yCAAyB,UAAU;AAEnC,oBAAI;AACF,yBAAO,WAAW,QAAQ,IAAI;AAAA,gBAChC,UAAE;AACA,2CAAyB,UAAU;AAAA,gBACrC;AAAA,cACF;AAAA,cACA,YAAY,SAAU,SAAS,YAAYA,SAAM;AAC/C,uCAAuB;AACvB,sCAAsB;AACtB,mCAAmB;AACnB,oBAAI,iBAAiB,yBAAyB;AAC9C,yCAAyB,UAAU;AAEnC,oBAAI;AACF,yBAAO,gBAAgB,SAAS,YAAYA,OAAI;AAAA,gBAClD,UAAE;AACA,2CAAyB,UAAU;AAAA,gBACrC;AAAA,cACF;AAAA,cACA,QAAQ,SAAU,cAAc;AAC9B,uCAAuB;AACvB,sCAAsB;AACtB,mCAAmB;AACnB,uBAAO,UAAU;AAAA,cACnB;AAAA,cACA,UAAU,SAAU,cAAc;AAChC,uCAAuB;AACvB,sCAAsB;AACtB,mCAAmB;AACnB,oBAAI,iBAAiB,yBAAyB;AAC9C,yCAAyB,UAAU;AAEnC,oBAAI;AACF,yBAAO,cAAc,YAAY;AAAA,gBACnC,UAAE;AACA,2CAAyB,UAAU;AAAA,gBACrC;AAAA,cACF;AAAA,cACA,eAAe,SAAU,OAAO,aAAa;AAC3C,uCAAuB;AACvB,sCAAsB;AACtB,mCAAmB;AACnB,uBAAO,iBAAiB;AAAA,cAC1B;AAAA,cACA,kBAAkB,SAAU,OAAO;AACjC,uCAAuB;AACvB,sCAAsB;AACtB,mCAAmB;AACnB,uBAAO,sBAAsB,KAAK;AAAA,cACpC;AAAA,cACA,eAAe,WAAY;AACzB,uCAAuB;AACvB,sCAAsB;AACtB,mCAAmB;AACnB,uBAAO,mBAAmB;AAAA,cAC5B;AAAA,cACA,kBAAkB,SAAU,QAAQ,aAAa,WAAW;AAC1D,uCAAuB;AACvB,sCAAsB;AACtB,mCAAmB;AACnB,uBAAO,oBAAoB;AAAA,cAC7B;AAAA,cACA,sBAAsB,SAAU,WAAW,aAAa,mBAAmB;AACzE,uCAAuB;AACvB,sCAAsB;AACtB,mCAAmB;AACnB,uBAAO,wBAAwB,WAAW,WAAW;AAAA,cACvD;AAAA,cACA,OAAO,WAAY;AACjB,uCAAuB;AACvB,sCAAsB;AACtB,mCAAmB;AACnB,uBAAO,SAAS;AAAA,cAClB;AAAA,cACA,0BAA0B;AAAA,YAC5B;AAAA,UACF;AAEA,cAAI,QAAQ,UAAU;AACtB,cAAI,aAAa;AACjB,cAAI,wBAAwB;AAC5B,cAAI,oBAAoB;AACxB,cAAI,yBAAyB;AAkB7B,cAAI,wBAAwB;AAC5B,cAAI,wBAAwB;AAE5B,mBAAS,wBAAwB;AAC/B,mBAAO;AAAA,UACT;AAEA,mBAAS,4BAA4B;AACnC;AACE,sCAAwB;AAAA,YAC1B;AAAA,UACF;AAEA,mBAAS,wBAAwB;AAC/B;AACE,sCAAwB;AACxB,sCAAwB;AAAA,YAC1B;AAAA,UACF;AAEA,mBAAS,uBAAuB;AAC9B;AACE,sCAAwB;AACxB,sCAAwB;AAAA,YAC1B;AAAA,UACF;AAEA,mBAAS,gBAAgB;AACvB,mBAAO;AAAA,UACT;AAEA,mBAAS,mBAAmB;AAE1B,yBAAa,MAAM;AAAA,UACrB;AAEA,mBAAS,mBAAmB,OAAO;AAEjC,gCAAoB,MAAM;AAE1B,gBAAI,MAAM,kBAAkB,GAAG;AAC7B,oBAAM,kBAAkB,MAAM;AAAA,YAChC;AAAA,UACF;AAEA,mBAAS,2BAA2B,OAAO;AAEzC,gCAAoB;AAAA,UACtB;AAEA,mBAAS,yCAAyC,OAAO,kBAAkB;AAEzE,gBAAI,qBAAqB,GAAG;AAC1B,kBAAI,cAAc,MAAM,IAAI;AAC5B,oBAAM,kBAAkB;AAExB,kBAAI,kBAAkB;AACpB,sBAAM,mBAAmB;AAAA,cAC3B;AAEA,kCAAoB;AAAA,YACtB;AAAA,UACF;AAEA,mBAAS,2BAA2B,OAAO;AAEzC,gBAAI,yBAAyB,GAAG;AAC9B,kBAAI,cAAc,MAAM,IAAI;AAC5B,sCAAwB;AAGxB,kBAAI,cAAc,MAAM;AAExB,qBAAO,gBAAgB,MAAM;AAC3B,wBAAQ,YAAY,KAAK;AAAA,kBACvB,KAAK;AACH,wBAAIwB,QAAO,YAAY;AACvB,oBAAAA,MAAK,kBAAkB;AACvB;AAAA,kBAEF,KAAK;AACH,wBAAI,kBAAkB,YAAY;AAClC,oCAAgB,kBAAkB;AAClC;AAAA,gBACJ;AAEA,8BAAc,YAAY;AAAA,cAC5B;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,4BAA4B,OAAO;AAE1C,gBAAI,0BAA0B,GAAG;AAC/B,kBAAI,cAAc,MAAM,IAAI;AAC5B,uCAAyB;AAGzB,kBAAI,cAAc,MAAM;AAExB,qBAAO,gBAAgB,MAAM;AAC3B,wBAAQ,YAAY,KAAK;AAAA,kBACvB,KAAK;AACH,wBAAIA,QAAO,YAAY;AAEvB,wBAAIA,UAAS,MAAM;AACjB,sBAAAA,MAAK,yBAAyB;AAAA,oBAChC;AAEA;AAAA,kBAEF,KAAK;AACH,wBAAI,kBAAkB,YAAY;AAElC,wBAAI,oBAAoB,MAAM;AAI5B,sCAAgB,yBAAyB;AAAA,oBAC3C;AAEA;AAAA,gBACJ;AAEA,8BAAc,YAAY;AAAA,cAC5B;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,yBAAyB;AAEhC,oCAAwB,MAAM;AAAA,UAChC;AAEA,mBAAS,0BAA0B;AAEjC,qCAAyB,MAAM;AAAA,UACjC;AAEA,mBAAS,uBAAuB,OAAO;AAIrC,gBAAI,QAAQ,MAAM;AAElB,mBAAO,OAAO;AACZ,oBAAM,kBAAkB,MAAM;AAC9B,sBAAQ,MAAM;AAAA,YAChB;AAAA,UACF;AAEA,mBAAS,2BAA2B,OAAO,QAAQ;AAGjD,mBAAO;AAAA,cACL;AAAA,cACA;AAAA,cACA,OAAO,4BAA4B,MAAM;AAAA,cACzC,QAAQ;AAAA,YACV;AAAA,UACF;AACA,mBAAS,oBAAoB,OAAO,QAAQ,OAAO;AACjD,mBAAO;AAAA,cACL;AAAA,cACA,QAAQ;AAAA,cACR,OAAO,SAAS,OAAO,QAAQ;AAAA,cAC/B,QAAQ,UAAU,OAAO,SAAS;AAAA,YACpC;AAAA,UACF;AAKA,mBAAS,gBAAgB,UAAU,WAAW;AAC5C,mBAAO;AAAA,UACT;AAEA,mBAAS,iBAAiB,UAAU,WAAW;AAC7C,gBAAI;AACF,kBAAI,WAAW,gBAAgB,UAAU,SAAS;AAGlD,kBAAI,aAAa,OAAO;AACtB;AAAA,cACF;AAEA,kBAAIJ,SAAQ,UAAU;AAEtB,kBAAI,MAAM;AACR,oBAAI,SAAS,UAAU;AACvB,oBAAI,QAAQ,UAAU;AACtB,oBAAI,iBAAiB,UAAU,OAAO,QAAQ;AAI9C,oBAAIA,UAAS,QAAQA,OAAM,kBAAkB;AAC3C,sBAAI,SAAS,QAAQ,gBAAgB;AAInC;AAAA,kBACF;AAMA,0BAAQ,OAAO,EAAEA,MAAK;AAAA,gBAGxB;AAEA,oBAAI,gBAAgB,SAAS,0BAA0B,MAAM,IAAI;AACjE,oBAAI,uBAAuB,gBAAgB,sCAAsC,gBAAgB,iBAAiB;AAClH,oBAAI;AAEJ,oBAAI,SAAS,QAAQ,UAAU;AAC7B,yCAAuB;AAAA,gBACzB,OAAO;AACL,sBAAI,oBAAoB,0BAA0B,QAAQ,KAAK;AAC/D,yCAAuB,kEAAkE,4CAA4C,oBAAoB;AAAA,gBAC3J;AAEA,oBAAI,kBAAkB,uBAAuB,OAAO,iBAAiB,UAAU,KAAK;AAKpF,wBAAQ,OAAO,EAAE,eAAe;AAAA,cAClC,OAAO;AAIL,wBAAQ,OAAO,EAAEA,MAAK;AAAA,cACxB;AAAA,YACF,SAASlC,IAAG;AAKV,yBAAW,WAAY;AACrB,sBAAMA;AAAA,cACR,CAAC;AAAA,YACH;AAAA,UACF;AAEA,cAAI,oBAAoB,OAAO,YAAY,aAAa,UAAU;AAElE,mBAAS,sBAAsB,OAAO,WAAW,MAAM;AACrD,gBAAI,SAAS,aAAa,aAAa,IAAI;AAE3C,mBAAO,MAAM;AAGb,mBAAO,UAAU;AAAA,cACf,SAAS;AAAA,YACX;AACA,gBAAIkC,SAAQ,UAAU;AAEtB,mBAAO,WAAW,WAAY;AAC5B,8BAAgBA,MAAK;AACrB,+BAAiB,OAAO,SAAS;AAAA,YACnC;AAEA,mBAAO;AAAA,UACT;AAEA,mBAAS,uBAAuB,OAAO,WAAW,MAAM;AACtD,gBAAI,SAAS,aAAa,aAAa,IAAI;AAC3C,mBAAO,MAAM;AACb,gBAAI,2BAA2B,MAAM,KAAK;AAE1C,gBAAI,OAAO,6BAA6B,YAAY;AAClD,kBAAI,UAAU,UAAU;AAExB,qBAAO,UAAU,WAAY;AAC3B,uBAAO,yBAAyB,OAAO;AAAA,cACzC;AAEA,qBAAO,WAAW,WAAY;AAC5B;AACE,yDAAuC,KAAK;AAAA,gBAC9C;AAEA,iCAAiB,OAAO,SAAS;AAAA,cACnC;AAAA,YACF;AAEA,gBAAI,OAAO,MAAM;AAEjB,gBAAI,SAAS,QAAQ,OAAO,KAAK,sBAAsB,YAAY;AACjE,qBAAO,WAAW,SAAS,WAAW;AACpC;AACE,yDAAuC,KAAK;AAAA,gBAC9C;AAEA,iCAAiB,OAAO,SAAS;AAEjC,oBAAI,OAAO,6BAA6B,YAAY;AAMlD,kDAAgC,IAAI;AAAA,gBACtC;AAEA,oBAAIwC,WAAU,UAAU;AACxB,oBAAI,QAAQ,UAAU;AACtB,qBAAK,kBAAkBA,UAAS;AAAA,kBAC9B,gBAAgB,UAAU,OAAO,QAAQ;AAAA,gBAC3C,CAAC;AAED;AACE,sBAAI,OAAO,6BAA6B,YAAY;AAIlD,wBAAI,CAAC,iBAAiB,MAAM,OAAO,QAAQ,GAAG;AAC5C,4BAAM,uJAA4J,0BAA0B,KAAK,KAAK,SAAS;AAAA,oBACjN;AAAA,kBACF;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAEA,mBAAO;AAAA,UACT;AAEA,mBAAS,mBAAmBpC,OAAM,UAAU,OAAO;AAajD,gBAAI,YAAYA,MAAK;AACrB,gBAAI;AAEJ,gBAAI,cAAc,MAAM;AACtB,0BAAYA,MAAK,YAAY,IAAI,kBAAkB;AACnD,0BAAY,oBAAI,IAAI;AACpB,wBAAU,IAAI,UAAU,SAAS;AAAA,YACnC,OAAO;AACL,0BAAY,UAAU,IAAI,QAAQ;AAElC,kBAAI,cAAc,QAAW;AAC3B,4BAAY,oBAAI,IAAI;AACpB,0BAAU,IAAI,UAAU,SAAS;AAAA,cACnC;AAAA,YACF;AAEA,gBAAI,CAAC,UAAU,IAAI,KAAK,GAAG;AAEzB,wBAAU,IAAI,KAAK;AACnB,kBAAI,OAAO,kBAAkB,KAAK,MAAMA,OAAM,UAAU,KAAK;AAE7D;AACE,oBAAI,mBAAmB;AAErB,yCAAuBA,OAAM,KAAK;AAAA,gBACpC;AAAA,cACF;AAEA,uBAAS,KAAK,MAAM,IAAI;AAAA,YAC1B;AAAA,UACF;AAEA,mBAAS,oBAAoB,kBAAkBA,OAAM,UAAU,OAAO;AAYpE,gBAAI,YAAY,iBAAiB;AAEjC,gBAAI,cAAc,MAAM;AACtB,kBAAI,cAAc,oBAAI,IAAI;AAC1B,0BAAY,IAAI,QAAQ;AACxB,+BAAiB,cAAc;AAAA,YACjC,OAAO;AACL,wBAAU,IAAI,QAAQ;AAAA,YACxB;AAAA,UACF;AAEA,mBAAS,wBAAwB,aAAa,iBAAiB;AAI7D,gBAAI,MAAM,YAAY;AAEtB,iBAAK,YAAY,OAAO,oBAAoB,WAAW,QAAQ,qBAAqB,QAAQ,cAAc,QAAQ,sBAAsB;AACtI,kBAAI,gBAAgB,YAAY;AAEhC,kBAAI,eAAe;AACjB,4BAAY,cAAc,cAAc;AACxC,4BAAY,gBAAgB,cAAc;AAC1C,4BAAY,QAAQ,cAAc;AAAA,cACpC,OAAO;AACL,4BAAY,cAAc;AAC1B,4BAAY,gBAAgB;AAAA,cAC9B;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,oCAAoC,aAAa;AACxD,gBAAIhC,QAAO;AAEX,eAAG;AACD,kBAAIA,MAAK,QAAQ,qBAAqB,sBAAsBA,KAAI,GAAG;AACjE,uBAAOA;AAAA,cACT;AAIA,cAAAA,QAAOA,MAAK;AAAA,YACd,SAASA,UAAS;AAElB,mBAAO;AAAA,UACT;AAEA,mBAAS,kCAAkC,kBAAkB,aAAa,aAAagC,OAAM,iBAAiB;AAG5G,iBAAK,iBAAiB,OAAO,oBAAoB,QAAQ;AAOvD,kBAAI,qBAAqB,aAAa;AAgBpC,iCAAiB,SAAS;AAAA,cAC5B,OAAO;AACL,iCAAiB,SAAS;AAC1B,4BAAY,SAAS;AAIrB,4BAAY,SAAS,EAAE,sBAAsB;AAE7C,oBAAI,YAAY,QAAQ,gBAAgB;AACtC,sBAAI,qBAAqB,YAAY;AAErC,sBAAI,uBAAuB,MAAM;AAI/B,gCAAY,MAAM;AAAA,kBACpB,OAAO;AAIL,wBAAI,SAAS,aAAa,aAAa,QAAQ;AAC/C,2BAAO,MAAM;AACb,kCAAc,aAAa,QAAQ,QAAQ;AAAA,kBAC7C;AAAA,gBACF;AAIA,4BAAY,QAAQ,WAAW,YAAY,OAAO,QAAQ;AAAA,cAC5D;AAEA,qBAAO;AAAA,YACT;AA0CA,6BAAiB,SAAS;AAG1B,6BAAiB,QAAQ;AACzB,mBAAO;AAAA,UACT;AAEA,mBAAS,eAAeA,OAAM,aAAa,aAAa,OAAO,iBAAiB;AAE9E,wBAAY,SAAS;AAErB;AACE,kBAAI,mBAAmB;AAErB,uCAAuBA,OAAM,eAAe;AAAA,cAC9C;AAAA,YACF;AAEA,gBAAI,UAAU,QAAQ,OAAO,UAAU,YAAY,OAAO,MAAM,SAAS,YAAY;AAEnF,kBAAI,WAAW;AACf,sCAAwB,WAAW;AAEnC;AACE,oBAAI,eAAe,KAAK,YAAY,OAAO,gBAAgB;AACzD,gDAA8B;AAAA,gBAChC;AAAA,cACF;AAGA,kBAAI,mBAAmB,oCAAoC,WAAW;AAEtE,kBAAI,qBAAqB,MAAM;AAC7B,iCAAiB,SAAS,CAAC;AAC3B,kDAAkC,kBAAkB,aAAa,aAAaA,OAAM,eAAe;AAGnG,oBAAI,iBAAiB,OAAO,gBAAgB;AAC1C,qCAAmBA,OAAM,UAAU,eAAe;AAAA,gBACpD;AAEA,oCAAoB,kBAAkBA,OAAM,QAAQ;AACpD;AAAA,cACF,OAAO;AAGL,oBAAI,CAAC,iBAAiB,eAAe,GAAG;AAQtC,qCAAmBA,OAAM,UAAU,eAAe;AAClD,kDAAgC;AAChC;AAAA,gBACF;AAKA,oBAAI,wBAAwB,IAAI,MAAM,mMAAkN;AAGxP,wBAAQ;AAAA,cACV;AAAA,YACF,OAAO;AAEL,kBAAI,eAAe,KAAK,YAAY,OAAO,gBAAgB;AACzD,8CAA8B;AAE9B,oBAAI,oBAAoB,oCAAoC,WAAW;AAMvE,oBAAI,sBAAsB,MAAM;AAC9B,uBAAK,kBAAkB,QAAQ,mBAAmB,SAAS;AAGzD,sCAAkB,SAAS;AAAA,kBAC7B;AAEA,oDAAkC,mBAAmB,aAAa,aAAaA,OAAM,eAAe;AAGpG,sCAAoB,2BAA2B,OAAO,WAAW,CAAC;AAClE;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAEA,oBAAQ,2BAA2B,OAAO,WAAW;AACrD,2BAAe,KAAK;AAIpB,gBAAIvB,kBAAiB;AAErB,eAAG;AACD,sBAAQA,gBAAe,KAAK;AAAA,gBAC1B,KAAK,UACH;AACE,sBAAI,aAAa;AACjB,kBAAAA,gBAAe,SAAS;AACxB,sBAAI,OAAO,kBAAkB,eAAe;AAC5C,kBAAAA,gBAAe,QAAQ,WAAWA,gBAAe,OAAO,IAAI;AAC5D,sBAAI,SAAS,sBAAsBA,iBAAgB,YAAY,IAAI;AACnE,wCAAsBA,iBAAgB,MAAM;AAC5C;AAAA,gBACF;AAAA,gBAEF,KAAK;AAEH,sBAAI,YAAY;AAChB,sBAAI,OAAOA,gBAAe;AAC1B,sBAAI,WAAWA,gBAAe;AAE9B,uBAAKA,gBAAe,QAAQ,gBAAgB,YAAY,OAAO,KAAK,6BAA6B,cAAc,aAAa,QAAQ,OAAO,SAAS,sBAAsB,cAAc,CAAC,mCAAmC,QAAQ,IAAI;AACtO,oBAAAA,gBAAe,SAAS;AAExB,wBAAI,QAAQ,kBAAkB,eAAe;AAE7C,oBAAAA,gBAAe,QAAQ,WAAWA,gBAAe,OAAO,KAAK;AAE7D,wBAAI,UAAU,uBAAuBA,iBAAgB,WAAW,KAAK;AAErE,0CAAsBA,iBAAgB,OAAO;AAC7C;AAAA,kBACF;AAEA;AAAA,cACJ;AAEA,cAAAA,kBAAiBA,gBAAe;AAAA,YAClC,SAASA,oBAAmB;AAAA,UAC9B;AAEA,mBAAS,oBAAoB;AAC3B;AACE,qBAAO;AAAA,YACT;AAAA,UACF;AAEA,cAAI,sBAAsB,qBAAqB;AAC/C,cAAI,mBAAmB;AACvB,cAAI;AACJ,cAAI;AACJ,cAAI;AACJ,cAAI;AACJ,cAAI;AACJ,cAAI;AACJ,cAAI;AACJ,cAAI;AAEJ;AACE,mCAAuB,CAAC;AACxB,iDAAqC,CAAC;AACtC,yDAA6C,CAAC;AAC9C,6DAAiD,CAAC;AAClD,uCAA2B,CAAC;AAC5B,2CAA+B;AAC/B,sCAA0B,CAAC;AAC3B,sCAA0B,CAAC;AAAA,UAC7B;AAEA,mBAAS,kBAAkBqB,UAASrB,iBAAgB,cAAc2B,cAAa;AAC7E,gBAAIN,aAAY,MAAM;AAKpB,cAAArB,gBAAe,QAAQ,iBAAiBA,iBAAgB,MAAM,cAAc2B,YAAW;AAAA,YACzF,OAAO;AAML,cAAA3B,gBAAe,QAAQ,qBAAqBA,iBAAgBqB,SAAQ,OAAO,cAAcM,YAAW;AAAA,YACtG;AAAA,UACF;AAEA,mBAAS,gCAAgCN,UAASrB,iBAAgB,cAAc2B,cAAa;AAS3F,YAAA3B,gBAAe,QAAQ,qBAAqBA,iBAAgBqB,SAAQ,OAAO,MAAMM,YAAW;AAK5F,YAAA3B,gBAAe,QAAQ,qBAAqBA,iBAAgB,MAAM,cAAc2B,YAAW;AAAA,UAC7F;AAEA,mBAAS,iBAAiBN,UAASrB,iBAAgBF,YAAW,WAAW6B,cAAa;AAIpF;AACE,kBAAI3B,gBAAe,SAASA,gBAAe,aAAa;AAGtD,oBAAI,iBAAiBF,WAAU;AAE/B,oBAAI,gBAAgB;AAClB;AAAA,oBAAe;AAAA,oBAAgB;AAAA;AAAA,oBAC/B;AAAA,oBAAQ,yBAAyBA,UAAS;AAAA,kBAAC;AAAA,gBAC7C;AAAA,cACF;AAAA,YACF;AAEA,gBAAI8D,UAAS9D,WAAU;AACvB,gBAAI,MAAME,gBAAe;AAEzB,gBAAI;AACJ,gBAAI;AACJ,iCAAqBA,iBAAgB2B,YAAW;AAEhD;AACE,yCAA2B3B,eAAc;AAAA,YAC3C;AAEA;AACE,kCAAoB,UAAUA;AAC9B,6BAAe,IAAI;AACnB,6BAAe,gBAAgBqB,UAASrB,iBAAgB4D,SAAQ,WAAW,KAAKjC,YAAW;AAC3F,sBAAQ,qBAAqB;AAE7B,kBAAK3B,gBAAe,OAAO,kBAAkB;AAC3C,2CAA2B,IAAI;AAE/B,oBAAI;AACF,iCAAe,gBAAgBqB,UAASrB,iBAAgB4D,SAAQ,WAAW,KAAKjC,YAAW;AAC3F,0BAAQ,qBAAqB;AAAA,gBAC/B,UAAE;AACA,6CAA2B,KAAK;AAAA,gBAClC;AAAA,cACF;AAEA,6BAAe,KAAK;AAAA,YACtB;AAEA;AACE,yCAA2B;AAAA,YAC7B;AAEA,gBAAIN,aAAY,QAAQ,CAAC,kBAAkB;AACzC,2BAAaA,UAASrB,iBAAgB2B,YAAW;AACjD,qBAAO,6BAA6BN,UAASrB,iBAAgB2B,YAAW;AAAA,YAC1E;AAEA,gBAAI,eAAe,KAAK,OAAO;AAC7B,qCAAuB3B,eAAc;AAAA,YACvC;AAGA,YAAAA,gBAAe,SAAS;AACxB,8BAAkBqB,UAASrB,iBAAgB,cAAc2B,YAAW;AACpE,mBAAO3B,gBAAe;AAAA,UACxB;AAEA,mBAAS,oBAAoBqB,UAASrB,iBAAgBF,YAAW,WAAW6B,cAAa;AACvF,gBAAIN,aAAY,MAAM;AACpB,kBAAI,OAAOvB,WAAU;AAErB,kBAAI,0BAA0B,IAAI,KAAKA,WAAU,YAAY;AAAA,cAC7DA,WAAU,iBAAiB,QAAW;AACpC,oBAAI,eAAe;AAEnB;AACE,iCAAe,+BAA+B,IAAI;AAAA,gBACpD;AAKA,gBAAAE,gBAAe,MAAM;AACrB,gBAAAA,gBAAe,OAAO;AAEtB;AACE,iDAA+BA,iBAAgB,IAAI;AAAA,gBACrD;AAEA,uBAAO,0BAA0BqB,UAASrB,iBAAgB,cAAc,WAAW2B,YAAW;AAAA,cAChG;AAEA;AACE,oBAAI,iBAAiB,KAAK;AAE1B,oBAAI,gBAAgB;AAGlB;AAAA,oBAAe;AAAA,oBAAgB;AAAA;AAAA,oBAC/B;AAAA,oBAAQ,yBAAyB,IAAI;AAAA,kBAAC;AAAA,gBACxC;AAAA,cACF;AAEA,kBAAI,QAAQ,4BAA4B7B,WAAU,MAAM,MAAM,WAAWE,iBAAgBA,gBAAe,MAAM2B,YAAW;AACzH,oBAAM,MAAM3B,gBAAe;AAC3B,oBAAM,SAASA;AACf,cAAAA,gBAAe,QAAQ;AACvB,qBAAO;AAAA,YACT;AAEA;AACE,kBAAI,QAAQF,WAAU;AACtB,kBAAI,kBAAkB,MAAM;AAE5B,kBAAI,iBAAiB;AAGnB;AAAA,kBAAe;AAAA,kBAAiB;AAAA;AAAA,kBAChC;AAAA,kBAAQ,yBAAyB,KAAK;AAAA,gBAAC;AAAA,cACzC;AAAA,YACF;AAEA,gBAAI,eAAeuB,SAAQ;AAE3B,gBAAI,8BAA8B,8BAA8BA,UAASM,YAAW;AAEpF,gBAAI,CAAC,6BAA6B;AAGhC,kBAAI,YAAY,aAAa;AAE7B,kBAAI,UAAU7B,WAAU;AACxB,wBAAU,YAAY,OAAO,UAAU;AAEvC,kBAAI,QAAQ,WAAW,SAAS,KAAKuB,SAAQ,QAAQrB,gBAAe,KAAK;AACvE,uBAAO,6BAA6BqB,UAASrB,iBAAgB2B,YAAW;AAAA,cAC1E;AAAA,YACF;AAGA,YAAA3B,gBAAe,SAAS;AACxB,gBAAI,WAAW,qBAAqB,cAAc,SAAS;AAC3D,qBAAS,MAAMA,gBAAe;AAC9B,qBAAS,SAASA;AAClB,YAAAA,gBAAe,QAAQ;AACvB,mBAAO;AAAA,UACT;AAEA,mBAAS,0BAA0BqB,UAASrB,iBAAgBF,YAAW,WAAW6B,cAAa;AAI7F;AACE,kBAAI3B,gBAAe,SAASA,gBAAe,aAAa;AAGtD,oBAAI,gBAAgBA,gBAAe;AAEnC,oBAAI,cAAc,aAAa,iBAAiB;AAI9C,sBAAI,gBAAgB;AACpB,sBAAI,UAAU,cAAc;AAC5B,sBAAID,UAAO,cAAc;AAEzB,sBAAI;AACF,oCAAgBA,QAAK,OAAO;AAAA,kBAC9B,SAASN,IAAG;AACV,oCAAgB;AAAA,kBAClB;AAGA,sBAAI,iBAAiB,iBAAiB,cAAc;AAEpD,sBAAI,gBAAgB;AAClB;AAAA,sBAAe;AAAA,sBAAgB;AAAA;AAAA,sBAC/B;AAAA,sBAAQ,yBAAyB,aAAa;AAAA,oBAAC;AAAA,kBACjD;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAEA,gBAAI4B,aAAY,MAAM;AACpB,kBAAI,YAAYA,SAAQ;AAExB,kBAAI,aAAa,WAAW,SAAS,KAAKA,SAAQ,QAAQrB,gBAAe;AAAA,cACxEA,gBAAe,SAASqB,SAAQ,MAAQ;AACvC,mCAAmB;AAgBnB,gBAAArB,gBAAe,eAAe,YAAY;AAE1C,oBAAI,CAAC,8BAA8BqB,UAASM,YAAW,GAAG;AAcxD,kBAAA3B,gBAAe,QAAQqB,SAAQ;AAC/B,yBAAO,6BAA6BA,UAASrB,iBAAgB2B,YAAW;AAAA,gBAC1E,YAAYN,SAAQ,QAAQ,kCAAkC,SAAS;AAGrE,qCAAmB;AAAA,gBACrB;AAAA,cACF;AAAA,YACF;AAEA,mBAAO,wBAAwBA,UAASrB,iBAAgBF,YAAW,WAAW6B,YAAW;AAAA,UAC3F;AAEA,mBAAS,yBAAyBN,UAASrB,iBAAgB2B,cAAa;AACtE,gBAAI,YAAY3B,gBAAe;AAC/B,gBAAI,eAAe,UAAU;AAC7B,gBAAI,YAAYqB,aAAY,OAAOA,SAAQ,gBAAgB;AAE3D,gBAAI,UAAU,SAAS,YAAY,oBAAqB;AAEtD,mBAAKrB,gBAAe,OAAO,oBAAoB,QAAQ;AAGrD,oBAAI,YAAY;AAAA,kBACd,WAAW;AAAA,kBACX,WAAW;AAAA,kBACX,aAAa;AAAA,gBACf;AACA,gBAAAA,gBAAe,gBAAgB;AAE/B,gCAAgBA,iBAAgB2B,YAAW;AAAA,cAC7C,WAAW,CAAC,iBAAiBA,cAAa,aAAa,GAAG;AACxD,oBAAI,mBAAmB;AAGvB,oBAAI;AAEJ,oBAAI,cAAc,MAAM;AACtB,sBAAI,gBAAgB,UAAU;AAC9B,kCAAgB,WAAW,eAAeA,YAAW;AAAA,gBACvD,OAAO;AACL,kCAAgBA;AAAA,gBAClB;AAGA,gBAAA3B,gBAAe,QAAQA,gBAAe,aAAa,YAAY,aAAa;AAC5E,oBAAI,aAAa;AAAA,kBACf,WAAW;AAAA,kBACX,WAAW;AAAA,kBACX,aAAa;AAAA,gBACf;AACA,gBAAAA,gBAAe,gBAAgB;AAC/B,gBAAAA,gBAAe,cAAc;AAI7B,gCAAgBA,iBAAgB,aAAa;AAE7C,uBAAO;AAAA,cACT,OAAO;AAIL,oBAAI,cAAc;AAAA,kBAChB,WAAW;AAAA,kBACX,WAAW;AAAA,kBACX,aAAa;AAAA,gBACf;AACA,gBAAAA,gBAAe,gBAAgB;AAE/B,oBAAI6D,sBAAqB,cAAc,OAAO,UAAU,YAAYlC;AAEpE,gCAAgB3B,iBAAgB6D,mBAAkB;AAAA,cACpD;AAAA,YACF,OAAO;AAEL,kBAAI;AAEJ,kBAAI,cAAc,MAAM;AAEtB,sCAAsB,WAAW,UAAU,WAAWlC,YAAW;AAEjE,gBAAA3B,gBAAe,gBAAgB;AAAA,cACjC,OAAO;AAIL,sCAAsB2B;AAAA,cACxB;AAEA,8BAAgB3B,iBAAgB,mBAAmB;AAAA,YACrD;AAEA,8BAAkBqB,UAASrB,iBAAgB,cAAc2B,YAAW;AACpE,mBAAO3B,gBAAe;AAAA,UACxB;AAEA,mBAAS,eAAeqB,UAASrB,iBAAgB2B,cAAa;AAC5D,gBAAI,eAAe3B,gBAAe;AAClC,8BAAkBqB,UAASrB,iBAAgB,cAAc2B,YAAW;AACpE,mBAAO3B,gBAAe;AAAA,UACxB;AAEA,mBAAS,WAAWqB,UAASrB,iBAAgB2B,cAAa;AACxD,gBAAI,eAAe3B,gBAAe,aAAa;AAC/C,8BAAkBqB,UAASrB,iBAAgB,cAAc2B,YAAW;AACpE,mBAAO3B,gBAAe;AAAA,UACxB;AAEA,mBAAS,eAAeqB,UAASrB,iBAAgB2B,cAAa;AAC5D;AACE,cAAA3B,gBAAe,SAAS;AAExB;AAGE,oBAAI,YAAYA,gBAAe;AAC/B,0BAAU,iBAAiB;AAC3B,0BAAU,wBAAwB;AAAA,cACpC;AAAA,YACF;AAEA,gBAAI,YAAYA,gBAAe;AAC/B,gBAAI,eAAe,UAAU;AAC7B,8BAAkBqB,UAASrB,iBAAgB,cAAc2B,YAAW;AACpE,mBAAO3B,gBAAe;AAAA,UACxB;AAEA,mBAAS,QAAQqB,UAASrB,iBAAgB;AACxC,gBAAI,MAAMA,gBAAe;AAEzB,gBAAIqB,aAAY,QAAQ,QAAQ,QAAQA,aAAY,QAAQA,SAAQ,QAAQ,KAAK;AAE/E,cAAArB,gBAAe,SAAS;AAExB;AACE,gBAAAA,gBAAe,SAAS;AAAA,cAC1B;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,wBAAwBqB,UAASrB,iBAAgBF,YAAW,WAAW6B,cAAa;AAC3F;AACE,kBAAI3B,gBAAe,SAASA,gBAAe,aAAa;AAGtD,oBAAI,iBAAiBF,WAAU;AAE/B,oBAAI,gBAAgB;AAClB;AAAA,oBAAe;AAAA,oBAAgB;AAAA;AAAA,oBAC/B;AAAA,oBAAQ,yBAAyBA,UAAS;AAAA,kBAAC;AAAA,gBAC7C;AAAA,cACF;AAAA,YACF;AAEA,gBAAI;AAEJ;AACE,kBAAI,kBAAkB,mBAAmBE,iBAAgBF,YAAW,IAAI;AACxE,wBAAU,iBAAiBE,iBAAgB,eAAe;AAAA,YAC5D;AAEA,gBAAI;AACJ,gBAAI;AACJ,iCAAqBA,iBAAgB2B,YAAW;AAEhD;AACE,yCAA2B3B,eAAc;AAAA,YAC3C;AAEA;AACE,kCAAoB,UAAUA;AAC9B,6BAAe,IAAI;AACnB,6BAAe,gBAAgBqB,UAASrB,iBAAgBF,YAAW,WAAW,SAAS6B,YAAW;AAClG,sBAAQ,qBAAqB;AAE7B,kBAAK3B,gBAAe,OAAO,kBAAkB;AAC3C,2CAA2B,IAAI;AAE/B,oBAAI;AACF,iCAAe,gBAAgBqB,UAASrB,iBAAgBF,YAAW,WAAW,SAAS6B,YAAW;AAClG,0BAAQ,qBAAqB;AAAA,gBAC/B,UAAE;AACA,6CAA2B,KAAK;AAAA,gBAClC;AAAA,cACF;AAEA,6BAAe,KAAK;AAAA,YACtB;AAEA;AACE,yCAA2B;AAAA,YAC7B;AAEA,gBAAIN,aAAY,QAAQ,CAAC,kBAAkB;AACzC,2BAAaA,UAASrB,iBAAgB2B,YAAW;AACjD,qBAAO,6BAA6BN,UAASrB,iBAAgB2B,YAAW;AAAA,YAC1E;AAEA,gBAAI,eAAe,KAAK,OAAO;AAC7B,qCAAuB3B,eAAc;AAAA,YACvC;AAGA,YAAAA,gBAAe,SAAS;AACxB,8BAAkBqB,UAASrB,iBAAgB,cAAc2B,YAAW;AACpE,mBAAO3B,gBAAe;AAAA,UACxB;AAEA,mBAAS,qBAAqBqB,UAASrB,iBAAgBF,YAAW,WAAW6B,cAAa;AACxF;AAEE,sBAAQ,YAAY3B,eAAc,GAAG;AAAA,gBACnC,KAAK,OACH;AACE,sBAAI,YAAYA,gBAAe;AAC/B,sBAAI,OAAOA,gBAAe;AAG1B,sBAAI,eAAe,IAAI,KAAKA,gBAAe,eAAe,UAAU,OAAO;AAC3E,sBAAIkC,SAAQ,aAAa;AAEzB,4BAAU,QAAQ,gBAAgB,WAAWA,QAAO,IAAI;AAExD;AAAA,gBACF;AAAA,gBAEF,KAAK,MACH;AACE,kBAAAlC,gBAAe,SAAS;AACxB,kBAAAA,gBAAe,SAAS;AAExB,sBAAI,UAAU,IAAI,MAAM,sCAAsC;AAC9D,sBAAI,OAAO,kBAAkB2B,YAAW;AACxC,kBAAA3B,gBAAe,QAAQ,WAAWA,gBAAe,OAAO,IAAI;AAE5D,sBAAI,SAAS,uBAAuBA,iBAAgB,2BAA2B,SAASA,eAAc,GAAG,IAAI;AAC7G,wCAAsBA,iBAAgB,MAAM;AAC5C;AAAA,gBACF;AAAA,cACJ;AAEA,kBAAIA,gBAAe,SAASA,gBAAe,aAAa;AAGtD,oBAAI,iBAAiBF,WAAU;AAE/B,oBAAI,gBAAgB;AAClB;AAAA,oBAAe;AAAA,oBAAgB;AAAA;AAAA,oBAC/B;AAAA,oBAAQ,yBAAyBA,UAAS;AAAA,kBAAC;AAAA,gBAC7C;AAAA,cACF;AAAA,YACF;AAKA,gBAAI;AAEJ,gBAAI,kBAAkBA,UAAS,GAAG;AAChC,2BAAa;AACb,kCAAoBE,eAAc;AAAA,YACpC,OAAO;AACL,2BAAa;AAAA,YACf;AAEA,iCAAqBA,iBAAgB2B,YAAW;AAChD,gBAAI,WAAW3B,gBAAe;AAC9B,gBAAI;AAEJ,gBAAI,aAAa,MAAM;AACrB,uDAAyCqB,UAASrB,eAAc;AAEhE,qCAAuBA,iBAAgBF,YAAW,SAAS;AAC3D,iCAAmBE,iBAAgBF,YAAW,WAAW6B,YAAW;AACpE,6BAAe;AAAA,YACjB,WAAWN,aAAY,MAAM;AAE3B,6BAAe,yBAAyBrB,iBAAgBF,YAAW,WAAW6B,YAAW;AAAA,YAC3F,OAAO;AACL,6BAAe,oBAAoBN,UAASrB,iBAAgBF,YAAW,WAAW6B,YAAW;AAAA,YAC/F;AAEA,gBAAI,iBAAiB,qBAAqBN,UAASrB,iBAAgBF,YAAW,cAAc,YAAY6B,YAAW;AAEnH;AACE,kBAAI,OAAO3B,gBAAe;AAE1B,kBAAI,gBAAgB,KAAK,UAAU,WAAW;AAC5C,oBAAI,CAAC,8BAA8B;AACjC,wBAAM,+HAAoI,0BAA0BA,eAAc,KAAK,aAAa;AAAA,gBACtM;AAEA,+CAA+B;AAAA,cACjC;AAAA,YACF;AAEA,mBAAO;AAAA,UACT;AAEA,mBAAS,qBAAqBqB,UAASrB,iBAAgBF,YAAW,cAAc,YAAY6B,cAAa;AAEvG,oBAAQN,UAASrB,eAAc;AAC/B,gBAAI,mBAAmBA,gBAAe,QAAQ,gBAAgB;AAE9D,gBAAI,CAAC,gBAAgB,CAAC,iBAAiB;AAErC,kBAAI,YAAY;AACd,0CAA0BA,iBAAgBF,YAAW,KAAK;AAAA,cAC5D;AAEA,qBAAO,6BAA6BuB,UAASrB,iBAAgB2B,YAAW;AAAA,YAC1E;AAEA,gBAAI,WAAW3B,gBAAe;AAE9B,gCAAoB,UAAUA;AAC9B,gBAAI;AAEJ,gBAAI,mBAAmB,OAAOF,WAAU,6BAA6B,YAAY;AAM/E,6BAAe;AAEf;AACE,2CAA2B;AAAA,cAC7B;AAAA,YACF,OAAO;AACL;AACE,2CAA2BE,eAAc;AAAA,cAC3C;AAEA;AACE,+BAAe,IAAI;AACnB,+BAAe,SAAS,OAAO;AAE/B,oBAAKA,gBAAe,OAAO,kBAAkB;AAC3C,6CAA2B,IAAI;AAE/B,sBAAI;AACF,6BAAS,OAAO;AAAA,kBAClB,UAAE;AACA,+CAA2B,KAAK;AAAA,kBAClC;AAAA,gBACF;AAEA,+BAAe,KAAK;AAAA,cACtB;AAEA;AACE,2CAA2B;AAAA,cAC7B;AAAA,YACF;AAGA,YAAAA,gBAAe,SAAS;AAExB,gBAAIqB,aAAY,QAAQ,iBAAiB;AAKvC,8CAAgCA,UAASrB,iBAAgB,cAAc2B,YAAW;AAAA,YACpF,OAAO;AACL,gCAAkBN,UAASrB,iBAAgB,cAAc2B,YAAW;AAAA,YACtE;AAIA,YAAA3B,gBAAe,gBAAgB,SAAS;AAExC,gBAAI,YAAY;AACd,wCAA0BA,iBAAgBF,YAAW,IAAI;AAAA,YAC3D;AAEA,mBAAOE,gBAAe;AAAA,UACxB;AAEA,mBAAS,oBAAoBA,iBAAgB;AAC3C,gBAAIuB,QAAOvB,gBAAe;AAE1B,gBAAIuB,MAAK,gBAAgB;AACvB,wCAA0BvB,iBAAgBuB,MAAK,gBAAgBA,MAAK,mBAAmBA,MAAK,OAAO;AAAA,YACrG,WAAWA,MAAK,SAAS;AAEvB,wCAA0BvB,iBAAgBuB,MAAK,SAAS,KAAK;AAAA,YAC/D;AAEA,8BAAkBvB,iBAAgBuB,MAAK,aAAa;AAAA,UACtD;AAEA,mBAAS,eAAeF,UAASrB,iBAAgB2B,cAAa;AAC5D,gCAAoB3B,eAAc;AAElC,gBAAIqB,aAAY,MAAM;AACpB,oBAAM,IAAI,MAAM,sDAAsD;AAAA,YACxE;AAEA,gBAAI,YAAYrB,gBAAe;AAC/B,gBAAI,YAAYA,gBAAe;AAC/B,gBAAI,eAAe,UAAU;AAC7B,6BAAiBqB,UAASrB,eAAc;AACxC,+BAAmBA,iBAAgB,WAAW,MAAM2B,YAAW;AAC/D,gBAAI,YAAY3B,gBAAe;AAC/B,gBAAIuB,QAAOvB,gBAAe;AAI1B,gBAAI,eAAe,UAAU;AAE7B,gBAAK,UAAU,cAAc;AAK3B,kBAAI,gBAAgB;AAAA,gBAClB,SAAS;AAAA,gBACT,cAAc;AAAA,gBACd,OAAO,UAAU;AAAA,gBACjB,2BAA2B,UAAU;AAAA,gBACrC,aAAa,UAAU;AAAA,cACzB;AACA,kBAAI,cAAcA,gBAAe;AAGjC,0BAAY,YAAY;AACxB,cAAAA,gBAAe,gBAAgB;AAE/B,kBAAIA,gBAAe,QAAQ,mBAAmB;AAG5C,oBAAI,mBAAmB,2BAA2B,IAAI,MAAM,iJAA2J,GAAGA,eAAc;AACxO,uBAAO,8BAA8BqB,UAASrB,iBAAgB,cAAc2B,cAAa,gBAAgB;AAAA,cAC3G,WAAW,iBAAiB,cAAc;AACxC,oBAAI,oBAAoB,2BAA2B,IAAI,MAAM,qHAA0H,GAAG3B,eAAc;AAExM,uBAAO,8BAA8BqB,UAASrB,iBAAgB,cAAc2B,cAAa,iBAAiB;AAAA,cAC5G,OAAO;AAEL,oCAAoB3B,eAAc;AAElC,oBAAI,QAAQ,iBAAiBA,iBAAgB,MAAM,cAAc2B,YAAW;AAC5E,gBAAA3B,gBAAe,QAAQ;AACvB,oBAAIT,QAAO;AAEX,uBAAOA,OAAM;AAOX,kBAAAA,MAAK,QAAQA,MAAK,QAAQ,CAAC,YAAY;AACvC,kBAAAA,QAAOA,MAAK;AAAA,gBACd;AAAA,cACF;AAAA,YACF,OAAO;AAGL,kCAAoB;AAEpB,kBAAI,iBAAiB,cAAc;AACjC,uBAAO,6BAA6B8B,UAASrB,iBAAgB2B,YAAW;AAAA,cAC1E;AAEA,gCAAkBN,UAASrB,iBAAgB,cAAc2B,YAAW;AAAA,YACtE;AAEA,mBAAO3B,gBAAe;AAAA,UACxB;AAEA,mBAAS,8BAA8BqB,UAASrB,iBAAgB,cAAc2B,cAAa,kBAAkB;AAE3G,gCAAoB;AACpB,gCAAoB,gBAAgB;AACpC,YAAA3B,gBAAe,SAAS;AACxB,8BAAkBqB,UAASrB,iBAAgB,cAAc2B,YAAW;AACpE,mBAAO3B,gBAAe;AAAA,UACxB;AAEA,mBAAS,oBAAoBqB,UAASrB,iBAAgB2B,cAAa;AACjE,4BAAgB3B,eAAc;AAE9B,gBAAIqB,aAAY,MAAM;AACpB,+CAAiCrB,eAAc;AAAA,YACjD;AAEA,gBAAI,OAAOA,gBAAe;AAC1B,gBAAI,YAAYA,gBAAe;AAC/B,gBAAI,YAAYqB,aAAY,OAAOA,SAAQ,gBAAgB;AAC3D,gBAAI,eAAe,UAAU;AAC7B,gBAAI,oBAAoB,qBAAqB,MAAM,SAAS;AAE5D,gBAAI,mBAAmB;AAKrB,6BAAe;AAAA,YACjB,WAAW,cAAc,QAAQ,qBAAqB,MAAM,SAAS,GAAG;AAGtE,cAAArB,gBAAe,SAAS;AAAA,YAC1B;AAEA,oBAAQqB,UAASrB,eAAc;AAC/B,8BAAkBqB,UAASrB,iBAAgB,cAAc2B,YAAW;AACpE,mBAAO3B,gBAAe;AAAA,UACxB;AAEA,mBAAS,eAAeqB,UAASrB,iBAAgB;AAC/C,gBAAIqB,aAAY,MAAM;AACpB,+CAAiCrB,eAAc;AAAA,YACjD;AAIA,mBAAO;AAAA,UACT;AAEA,mBAAS,mBAAmB,UAAUA,iBAAgB,aAAa2B,cAAa;AAC9E,qDAAyC,UAAU3B,eAAc;AACjE,gBAAI,QAAQA,gBAAe;AAC3B,gBAAI,gBAAgB;AACpB,gBAAI,UAAU,cAAc;AAC5B,gBAAID,UAAO,cAAc;AACzB,gBAAID,aAAYC,QAAK,OAAO;AAE5B,YAAAC,gBAAe,OAAOF;AACtB,gBAAI,cAAcE,gBAAe,MAAM,wBAAwBF,UAAS;AACxE,gBAAI,gBAAgB,oBAAoBA,YAAW,KAAK;AACxD,gBAAI;AAEJ,oBAAQ,aAAa;AAAA,cACnB,KAAK,mBACH;AACE;AACE,iDAA+BE,iBAAgBF,UAAS;AACxD,kBAAAE,gBAAe,OAAOF,aAAY,+BAA+BA,UAAS;AAAA,gBAC5E;AAEA,wBAAQ,wBAAwB,MAAME,iBAAgBF,YAAW,eAAe6B,YAAW;AAC3F,uBAAO;AAAA,cACT;AAAA,cAEF,KAAK,gBACH;AACE;AACE,kBAAA3B,gBAAe,OAAOF,aAAY,4BAA4BA,UAAS;AAAA,gBACzE;AAEA,wBAAQ,qBAAqB,MAAME,iBAAgBF,YAAW,eAAe6B,YAAW;AACxF,uBAAO;AAAA,cACT;AAAA,cAEF,KAAK,YACH;AACE;AACE,kBAAA3B,gBAAe,OAAOF,aAAY,iCAAiCA,UAAS;AAAA,gBAC9E;AAEA,wBAAQ,iBAAiB,MAAME,iBAAgBF,YAAW,eAAe6B,YAAW;AACpF,uBAAO;AAAA,cACT;AAAA,cAEF,KAAK,eACH;AACE;AACE,sBAAI3B,gBAAe,SAASA,gBAAe,aAAa;AACtD,wBAAI,iBAAiBF,WAAU;AAE/B,wBAAI,gBAAgB;AAClB;AAAA,wBAAe;AAAA,wBAAgB;AAAA;AAAA,wBAC/B;AAAA,wBAAQ,yBAAyBA,UAAS;AAAA,sBAAC;AAAA,oBAC7C;AAAA,kBACF;AAAA,gBACF;AAEA,wBAAQ;AAAA,kBAAoB;AAAA,kBAAME;AAAA,kBAAgBF;AAAA,kBAAW,oBAAoBA,WAAU,MAAM,aAAa;AAAA;AAAA,kBAC9G6B;AAAA,gBAAW;AACX,uBAAO;AAAA,cACT;AAAA,YACJ;AAEA,gBAAI,OAAO;AAEX;AACE,kBAAI7B,eAAc,QAAQ,OAAOA,eAAc,YAAYA,WAAU,aAAa,iBAAiB;AACjG,uBAAO;AAAA,cACT;AAAA,YACF;AAKA,kBAAM,IAAI,MAAM,mEAAmEA,aAAY,QAAQ,2DAA2D,KAAK;AAAA,UACzK;AAEA,mBAAS,8BAA8B,UAAUE,iBAAgBF,YAAW,WAAW6B,cAAa;AAClG,qDAAyC,UAAU3B,eAAc;AAEjE,YAAAA,gBAAe,MAAM;AAKrB,gBAAI;AAEJ,gBAAI,kBAAkBF,UAAS,GAAG;AAChC,2BAAa;AACb,kCAAoBE,eAAc;AAAA,YACpC,OAAO;AACL,2BAAa;AAAA,YACf;AAEA,iCAAqBA,iBAAgB2B,YAAW;AAChD,mCAAuB3B,iBAAgBF,YAAW,SAAS;AAC3D,+BAAmBE,iBAAgBF,YAAW,WAAW6B,YAAW;AACpE,mBAAO,qBAAqB,MAAM3B,iBAAgBF,YAAW,MAAM,YAAY6B,YAAW;AAAA,UAC5F;AAEA,mBAAS,4BAA4B,UAAU3B,iBAAgBF,YAAW6B,cAAa;AACrF,qDAAyC,UAAU3B,eAAc;AACjE,gBAAI,QAAQA,gBAAe;AAC3B,gBAAI;AAEJ;AACE,kBAAI,kBAAkB,mBAAmBA,iBAAgBF,YAAW,KAAK;AACzE,wBAAU,iBAAiBE,iBAAgB,eAAe;AAAA,YAC5D;AAEA,iCAAqBA,iBAAgB2B,YAAW;AAChD,gBAAI;AACJ,gBAAI;AAEJ;AACE,yCAA2B3B,eAAc;AAAA,YAC3C;AAEA;AACE,kBAAIF,WAAU,aAAa,OAAOA,WAAU,UAAU,WAAW,YAAY;AAC3E,oBAAI,gBAAgB,yBAAyBA,UAAS,KAAK;AAE3D,oBAAI,CAAC,qBAAqB,aAAa,GAAG;AACxC,wBAAM,0KAA+K,eAAe,aAAa;AAEjN,uCAAqB,aAAa,IAAI;AAAA,gBACxC;AAAA,cACF;AAEA,kBAAIE,gBAAe,OAAO,kBAAkB;AAC1C,wCAAwB,2BAA2BA,iBAAgB,IAAI;AAAA,cACzE;AAEA,6BAAe,IAAI;AACnB,kCAAoB,UAAUA;AAC9B,sBAAQ,gBAAgB,MAAMA,iBAAgBF,YAAW,OAAO,SAAS6B,YAAW;AACpF,sBAAQ,qBAAqB;AAC7B,6BAAe,KAAK;AAAA,YACtB;AAEA;AACE,yCAA2B;AAAA,YAC7B;AAGA,YAAA3B,gBAAe,SAAS;AAExB;AAGE,kBAAI,OAAO,UAAU,YAAY,UAAU,QAAQ,OAAO,MAAM,WAAW,cAAc,MAAM,aAAa,QAAW;AACrH,oBAAI,iBAAiB,yBAAyBF,UAAS,KAAK;AAE5D,oBAAI,CAAC,mCAAmC,cAAc,GAAG;AACvD,wBAAM,kWAAsX,gBAAgB,gBAAgB,cAAc;AAE1a,qDAAmC,cAAc,IAAI;AAAA,gBACvD;AAAA,cACF;AAAA,YACF;AAEA;AAAA;AAAA;AAAA,cAEC,OAAO,UAAU,YAAY,UAAU,QAAQ,OAAO,MAAM,WAAW,cAAc,MAAM,aAAa;AAAA,cAAW;AAClH;AACE,oBAAI,kBAAkB,yBAAyBA,UAAS,KAAK;AAE7D,oBAAI,CAAC,mCAAmC,eAAe,GAAG;AACxD,wBAAM,kWAAsX,iBAAiB,iBAAiB,eAAe;AAE7a,qDAAmC,eAAe,IAAI;AAAA,gBACxD;AAAA,cACF;AAGA,cAAAE,gBAAe,MAAM;AAErB,cAAAA,gBAAe,gBAAgB;AAC/B,cAAAA,gBAAe,cAAc;AAI7B,kBAAI,aAAa;AAEjB,kBAAI,kBAAkBF,UAAS,GAAG;AAChC,6BAAa;AACb,oCAAoBE,eAAc;AAAA,cACpC,OAAO;AACL,6BAAa;AAAA,cACf;AAEA,cAAAA,gBAAe,gBAAgB,MAAM,UAAU,QAAQ,MAAM,UAAU,SAAY,MAAM,QAAQ;AACjG,oCAAsBA,eAAc;AACpC,iCAAmBA,iBAAgB,KAAK;AACxC,iCAAmBA,iBAAgBF,YAAW,OAAO6B,YAAW;AAChE,qBAAO,qBAAqB,MAAM3B,iBAAgBF,YAAW,MAAM,YAAY6B,YAAW;AAAA,YAC5F,OAAO;AAEL,cAAA3B,gBAAe,MAAM;AAErB;AAEE,oBAAKA,gBAAe,OAAO,kBAAkB;AAC3C,6CAA2B,IAAI;AAE/B,sBAAI;AACF,4BAAQ,gBAAgB,MAAMA,iBAAgBF,YAAW,OAAO,SAAS6B,YAAW;AACpF,4BAAQ,qBAAqB;AAAA,kBAC/B,UAAE;AACA,+CAA2B,KAAK;AAAA,kBAClC;AAAA,gBACF;AAAA,cACF;AAEA,kBAAI,eAAe,KAAK,OAAO;AAC7B,uCAAuB3B,eAAc;AAAA,cACvC;AAEA,gCAAkB,MAAMA,iBAAgB,OAAO2B,YAAW;AAE1D;AACE,+CAA+B3B,iBAAgBF,UAAS;AAAA,cAC1D;AAEA,qBAAOE,gBAAe;AAAA,YACxB;AAAA,UACF;AAEA,mBAAS,+BAA+BA,iBAAgBF,YAAW;AACjE;AACE,kBAAIA,YAAW;AACb,oBAAIA,WAAU,mBAAmB;AAC/B,wBAAM,yEAAyEA,WAAU,eAAeA,WAAU,QAAQ,WAAW;AAAA,gBACvI;AAAA,cACF;AAEA,kBAAIE,gBAAe,QAAQ,MAAM;AAC/B,oBAAI,OAAO;AACX,oBAAI,YAAY,oCAAoC;AAEpD,oBAAI,WAAW;AACb,0BAAQ,qCAAqC,YAAY;AAAA,gBAC3D;AAEA,oBAAI,aAAa,aAAa;AAC9B,oBAAI,cAAcA,gBAAe;AAEjC,oBAAI,aAAa;AACf,+BAAa,YAAY,WAAW,MAAM,YAAY;AAAA,gBACxD;AAEA,oBAAI,CAAC,yBAAyB,UAAU,GAAG;AACzC,2CAAyB,UAAU,IAAI;AAEvC,wBAAM,8HAAwI,IAAI;AAAA,gBACpJ;AAAA,cACF;AAEA,kBAAI,OAAOF,WAAU,6BAA6B,YAAY;AAC5D,oBAAI,kBAAkB,yBAAyBA,UAAS,KAAK;AAE7D,oBAAI,CAAC,+CAA+C,eAAe,GAAG;AACpE,wBAAM,oEAAoE,eAAe;AAEzF,iEAA+C,eAAe,IAAI;AAAA,gBACpE;AAAA,cACF;AAEA,kBAAI,OAAOA,WAAU,gBAAgB,YAAYA,WAAU,gBAAgB,MAAM;AAC/E,oBAAI,kBAAkB,yBAAyBA,UAAS,KAAK;AAE7D,oBAAI,CAAC,2CAA2C,eAAe,GAAG;AAChE,wBAAM,uDAAuD,eAAe;AAE5E,6DAA2C,eAAe,IAAI;AAAA,gBAChE;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAEA,cAAI,mBAAmB;AAAA,YACrB,YAAY;AAAA,YACZ,aAAa;AAAA,YACb,WAAW;AAAA,UACb;AAEA,mBAAS,4BAA4B6B,cAAa;AAChD,mBAAO;AAAA,cACL,WAAWA;AAAA,cACX,WAAW,kBAAkB;AAAA,cAC7B,aAAa;AAAA,YACf;AAAA,UACF;AAEA,mBAAS,6BAA6B,oBAAoBA,cAAa;AACrE,gBAAI,YAAY;AAEhB,mBAAO;AAAA,cACL,WAAW,WAAW,mBAAmB,WAAWA,YAAW;AAAA,cAC/D;AAAA,cACA,aAAa,mBAAmB;AAAA,YAClC;AAAA,UACF;AAGA,mBAAS,uBAAuB,iBAAiBN,UAASrB,iBAAgB2B,cAAa;AAIrF,gBAAIN,aAAY,MAAM;AACpB,kBAAI,gBAAgBA,SAAQ;AAE5B,kBAAI,kBAAkB,MAAM;AAK1B,uBAAO;AAAA,cACT;AAAA,YACF;AAGA,mBAAO,mBAAmB,iBAAiB,qBAAqB;AAAA,UAClE;AAEA,mBAAS,8BAA8BA,UAASM,cAAa;AAE3D,mBAAO,YAAYN,SAAQ,YAAYM,YAAW;AAAA,UACpD;AAEA,mBAAS,wBAAwBN,UAASrB,iBAAgB2B,cAAa;AACrE,gBAAI,YAAY3B,gBAAe;AAE/B;AACE,kBAAI,cAAcA,eAAc,GAAG;AACjC,gBAAAA,gBAAe,SAAS;AAAA,cAC1B;AAAA,YACF;AAEA,gBAAI,kBAAkB,oBAAoB;AAC1C,gBAAI,eAAe;AACnB,gBAAI,cAAcA,gBAAe,QAAQ,gBAAgB;AAEzD,gBAAI,cAAc,uBAAuB,iBAAiBqB,QAAO,GAAG;AAGlE,6BAAe;AACf,cAAArB,gBAAe,SAAS,CAAC;AAAA,YAC3B,OAAO;AAEL,kBAAIqB,aAAY,QAAQA,SAAQ,kBAAkB,MAAM;AAKtD;AACE,oCAAkB,0BAA0B,iBAAiB,8BAA8B;AAAA,gBAC7F;AAAA,cACF;AAAA,YACF;AAEA,8BAAkB,iCAAiC,eAAe;AAClE,gCAAoBrB,iBAAgB,eAAe;AAuBnD,gBAAIqB,aAAY,MAAM;AAIpB,+CAAiCrB,eAAc;AAE/C,kBAAI,gBAAgBA,gBAAe;AAEnC,kBAAI,kBAAkB,MAAM;AAC1B,oBAAI,aAAa,cAAc;AAE/B,oBAAI,eAAe,MAAM;AACvB,yBAAO,iCAAiCA,iBAAgB,UAAU;AAAA,gBACpE;AAAA,cACF;AAEA,kBAAI,sBAAsB,UAAU;AACpC,kBAAI,uBAAuB,UAAU;AAErC,kBAAI,cAAc;AAChB,oBAAI,mBAAmB,8BAA8BA,iBAAgB,qBAAqB,sBAAsB2B,YAAW;AAC3H,oBAAI,uBAAuB3B,gBAAe;AAC1C,qCAAqB,gBAAgB,4BAA4B2B,YAAW;AAC5E,gBAAA3B,gBAAe,gBAAgB;AAE/B,uBAAO;AAAA,cACT,OAAO;AACL,uBAAO,6BAA6BA,iBAAgB,mBAAmB;AAAA,cACzE;AAAA,YACF,OAAO;AAGL,kBAAI,YAAYqB,SAAQ;AAExB,kBAAI,cAAc,MAAM;AACtB,oBAAI,cAAc,UAAU;AAE5B,oBAAI,gBAAgB,MAAM;AACxB,yBAAO,kCAAkCA,UAASrB,iBAAgB,YAAY,WAAW,aAAa,WAAW2B,YAAW;AAAA,gBAC9H;AAAA,cACF;AAEA,kBAAI,cAAc;AAChB,oBAAI,wBAAwB,UAAU;AACtC,oBAAI,uBAAuB,UAAU;AACrC,oBAAI,wBAAwB,+BAA+BN,UAASrB,iBAAgB,sBAAsB,uBAAuB2B,YAAW;AAC5I,oBAAI,yBAAyB3B,gBAAe;AAC5C,oBAAI,qBAAqBqB,SAAQ,MAAM;AACvC,uCAAuB,gBAAgB,uBAAuB,OAAO,4BAA4BM,YAAW,IAAI,6BAA6B,oBAAoBA,YAAW;AAE5K,uCAAuB,aAAa,8BAA8BN,UAASM,YAAW;AACtF,gBAAA3B,gBAAe,gBAAgB;AAC/B,uBAAO;AAAA,cACT,OAAO;AACL,oBAAI,wBAAwB,UAAU;AAEtC,oBAAI,yBAAyB,8BAA8BqB,UAASrB,iBAAgB,uBAAuB2B,YAAW;AAEtH,gBAAA3B,gBAAe,gBAAgB;AAC/B,uBAAO;AAAA,cACT;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,6BAA6BA,iBAAgB,iBAAiB2B,cAAa;AAClF,gBAAI,OAAO3B,gBAAe;AAC1B,gBAAI,oBAAoB;AAAA,cACtB,MAAM;AAAA,cACN,UAAU;AAAA,YACZ;AACA,gBAAI,uBAAuB,kCAAkC,mBAAmB,IAAI;AACpF,iCAAqB,SAASA;AAC9B,YAAAA,gBAAe,QAAQ;AACvB,mBAAO;AAAA,UACT;AAEA,mBAAS,8BAA8BA,iBAAgB,iBAAiB,kBAAkB2B,cAAa;AACrG,gBAAI,OAAO3B,gBAAe;AAC1B,gBAAI,4BAA4BA,gBAAe;AAC/C,gBAAI,oBAAoB;AAAA,cACtB,MAAM;AAAA,cACN,UAAU;AAAA,YACZ;AACA,gBAAI;AACJ,gBAAI;AAEJ,iBAAK,OAAO,oBAAoB,UAAU,8BAA8B,MAAM;AAG5E,qCAAuB;AACvB,mCAAqB,aAAa;AAClC,mCAAqB,eAAe;AAEpC,kBAAKA,gBAAe,OAAO,aAAa;AAKtC,qCAAqB,iBAAiB;AACtC,qCAAqB,kBAAkB;AACvC,qCAAqB,mBAAmB;AACxC,qCAAqB,mBAAmB;AAAA,cAC1C;AAEA,sCAAwB,wBAAwB,kBAAkB,MAAM2B,cAAa,IAAI;AAAA,YAC3F,OAAO;AACL,qCAAuB,kCAAkC,mBAAmB,IAAI;AAChF,sCAAwB,wBAAwB,kBAAkB,MAAMA,cAAa,IAAI;AAAA,YAC3F;AAEA,iCAAqB,SAAS3B;AAC9B,kCAAsB,SAASA;AAC/B,iCAAqB,UAAU;AAC/B,YAAAA,gBAAe,QAAQ;AACvB,mBAAO;AAAA,UACT;AAEA,mBAAS,kCAAkC,gBAAgB,MAAM2B,cAAa;AAG5E,mBAAO,yBAAyB,gBAAgB,MAAM,SAAS,IAAI;AAAA,UACrE;AAEA,mBAAS,mCAAmCN,UAAS,gBAAgB;AAGnE,mBAAO,qBAAqBA,UAAS,cAAc;AAAA,UACrD;AAEA,mBAAS,8BAA8BA,UAASrB,iBAAgB,iBAAiB2B,cAAa;AAC5F,gBAAI,8BAA8BN,SAAQ;AAC1C,gBAAI,+BAA+B,4BAA4B;AAC/D,gBAAI,uBAAuB,mCAAmC,6BAA6B;AAAA,cACzF,MAAM;AAAA,cACN,UAAU;AAAA,YACZ,CAAC;AAED,iBAAKrB,gBAAe,OAAO,oBAAoB,QAAQ;AACrD,mCAAqB,QAAQ2B;AAAA,YAC/B;AAEA,iCAAqB,SAAS3B;AAC9B,iCAAqB,UAAU;AAE/B,gBAAI,iCAAiC,MAAM;AAEzC,kBAAI,YAAYA,gBAAe;AAE/B,kBAAI,cAAc,MAAM;AACtB,gBAAAA,gBAAe,YAAY,CAAC,4BAA4B;AACxD,gBAAAA,gBAAe,SAAS;AAAA,cAC1B,OAAO;AACL,0BAAU,KAAK,4BAA4B;AAAA,cAC7C;AAAA,YACF;AAEA,YAAAA,gBAAe,QAAQ;AACvB,mBAAO;AAAA,UACT;AAEA,mBAAS,+BAA+BqB,UAASrB,iBAAgB,iBAAiB,kBAAkB2B,cAAa;AAC/G,gBAAI,OAAO3B,gBAAe;AAC1B,gBAAI,8BAA8BqB,SAAQ;AAC1C,gBAAI,+BAA+B,4BAA4B;AAC/D,gBAAI,oBAAoB;AAAA,cACtB,MAAM;AAAA,cACN,UAAU;AAAA,YACZ;AACA,gBAAI;AAEJ;AAAA;AAAA;AAAA,eAEC,OAAO,oBAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAM5BrB,gBAAe,UAAU;AAAA,cAA6B;AACpD,kBAAI,4BAA4BA,gBAAe;AAC/C,qCAAuB;AACvB,mCAAqB,aAAa;AAClC,mCAAqB,eAAe;AAEpC,kBAAKA,gBAAe,OAAO,aAAa;AAKtC,qCAAqB,iBAAiB;AACtC,qCAAqB,kBAAkB;AACvC,qCAAqB,mBAAmB,4BAA4B;AACpE,qCAAqB,mBAAmB,4BAA4B;AAAA,cACtE;AAKA,cAAAA,gBAAe,YAAY;AAAA,YAC7B,OAAO;AACL,qCAAuB,mCAAmC,6BAA6B,iBAAiB;AAIxG,mCAAqB,eAAe,4BAA4B,eAAe;AAAA,YACjF;AAEA,gBAAI;AAEJ,gBAAI,iCAAiC,MAAM;AACzC,sCAAwB,qBAAqB,8BAA8B,gBAAgB;AAAA,YAC7F,OAAO;AACL,sCAAwB,wBAAwB,kBAAkB,MAAM2B,cAAa,IAAI;AAGzF,oCAAsB,SAAS;AAAA,YACjC;AAEA,kCAAsB,SAAS3B;AAC/B,iCAAqB,SAASA;AAC9B,iCAAqB,UAAU;AAC/B,YAAAA,gBAAe,QAAQ;AACvB,mBAAO;AAAA,UACT;AAEA,mBAAS,uCAAuCqB,UAASrB,iBAAgB2B,cAAa,kBAAkB;AAQtG,gBAAI,qBAAqB,MAAM;AAC7B,kCAAoB,gBAAgB;AAAA,YACtC;AAGA,iCAAqB3B,iBAAgBqB,SAAQ,OAAO,MAAMM,YAAW;AAErE,gBAAI,YAAY3B,gBAAe;AAC/B,gBAAI,kBAAkB,UAAU;AAChC,gBAAI,uBAAuB,6BAA6BA,iBAAgB,eAAe;AAGvF,iCAAqB,SAAS;AAC9B,YAAAA,gBAAe,gBAAgB;AAC/B,mBAAO;AAAA,UACT;AAEA,mBAAS,gDAAgDqB,UAASrB,iBAAgB,iBAAiB,kBAAkB2B,cAAa;AAChI,gBAAI,YAAY3B,gBAAe;AAC/B,gBAAI,oBAAoB;AAAA,cACtB,MAAM;AAAA,cACN,UAAU;AAAA,YACZ;AACA,gBAAI,uBAAuB,kCAAkC,mBAAmB,SAAS;AACzF,gBAAI,wBAAwB,wBAAwB,kBAAkB,WAAW2B,cAAa,IAAI;AAGlG,kCAAsB,SAAS;AAC/B,iCAAqB,SAAS3B;AAC9B,kCAAsB,SAASA;AAC/B,iCAAqB,UAAU;AAC/B,YAAAA,gBAAe,QAAQ;AAEvB,iBAAKA,gBAAe,OAAO,oBAAoB,QAAQ;AAGrD,mCAAqBA,iBAAgBqB,SAAQ,OAAO,MAAMM,YAAW;AAAA,YACvE;AAEA,mBAAO;AAAA,UACT;AAEA,mBAAS,iCAAiC3B,iBAAgB,kBAAkB2B,cAAa;AAGvF,iBAAK3B,gBAAe,OAAO,oBAAoB,QAAQ;AACrD;AACE,sBAAM,mOAAuP;AAAA,cAC/P;AAEA,cAAAA,gBAAe,QAAQ,YAAY,QAAQ;AAAA,YAC7C,WAAW,2BAA2B,gBAAgB,GAAG;AAYvD,cAAAA,gBAAe,QAAQ,YAAY,oBAAoB;AAAA,YACzD,OAAO;AAGL,cAAAA,gBAAe,QAAQ,YAAY,aAAa;AAAA,YAClD;AAEA,mBAAO;AAAA,UACT;AAEA,mBAAS,kCAAkCqB,UAASrB,iBAAgB,YAAY,WAAW,kBAAkB,eAAe2B,cAAa;AACvI,gBAAI,CAAC,YAAY;AAIf,8BAAgB;AAEhB,mBAAK3B,gBAAe,OAAO,oBAAoB,QAAQ;AACrD,uBAAO;AAAA,kBAAuCqB;AAAA,kBAASrB;AAAA,kBAAgB2B;AAAA;AAAA;AAAA;AAAA,kBAGvE;AAAA,gBAAI;AAAA,cACN;AAEA,kBAAI,2BAA2B,gBAAgB,GAAG;AAIhD,oBAAI,QAAQ,SAAS;AAErB;AACE,sBAAI,wBAAwB,wCAAwC,gBAAgB;AAEpF,2BAAS,sBAAsB;AAC/B,4BAAU,sBAAsB;AAChC,0BAAQ,sBAAsB;AAAA,gBAChC;AAEA,oBAAIR;AAEJ,oBAAI,SAAS;AAEX,kBAAAA,SAAQ,IAAI,MAAM,OAAO;AAAA,gBAC3B,OAAO;AACL,kBAAAA,SAAQ,IAAI,MAAM,mIAA6I;AAAA,gBACjK;AAEA,oBAAI,gBAAgB,oBAAoBA,QAAO,QAAQ,KAAK;AAC5D,uBAAO,uCAAuCE,UAASrB,iBAAgB2B,cAAa,aAAa;AAAA,cACnG;AAIA,kBAAImC,qBAAoB,iBAAiBnC,cAAaN,SAAQ,UAAU;AAExE,kBAAI,oBAAoByC,oBAAmB;AAGzC,oBAAIvC,QAAO,sBAAsB;AAEjC,oBAAIA,UAAS,MAAM;AACjB,sBAAI,yBAAyB,0BAA0BA,OAAMI,YAAW;AAExE,sBAAI,2BAA2B,UAAU,2BAA2B,cAAc,WAAW;AAI3F,kCAAc,YAAY;AAE1B,wBAAI,YAAY;AAChB,mDAA+BN,UAAS,sBAAsB;AAC9D,0CAAsBE,OAAMF,UAAS,wBAAwB,SAAS;AAAA,kBACxE;AAAA,gBACF;AAOA,gDAAgC;AAEhC,oBAAI,iBAAiB,oBAAoB,IAAI,MAAM,8MAA6N,CAAC;AAEjR,uBAAO,uCAAuCA,UAASrB,iBAAgB2B,cAAa,cAAc;AAAA,cACpG,WAAW,0BAA0B,gBAAgB,GAAG;AAUtD,gBAAA3B,gBAAe,SAAS;AAExB,gBAAAA,gBAAe,QAAQqB,SAAQ;AAE/B,oBAAI,QAAQ,gCAAgC,KAAK,MAAMA,QAAO;AAC9D,8CAA8B,kBAAkB,KAAK;AACrD,uBAAO;AAAA,cACT,OAAO;AAEL,oEAAoDrB,iBAAgB,kBAAkB,cAAc,WAAW;AAC/G,oBAAI,kBAAkB,UAAU;AAChC,oBAAI,uBAAuB,6BAA6BA,iBAAgB,eAAe;AAOvF,qCAAqB,SAAS;AAC9B,uBAAO;AAAA,cACT;AAAA,YACF,OAAO;AAGL,kBAAIA,gBAAe,QAAQ,mBAAmB;AAE5C,gBAAAA,gBAAe,SAAS,CAAC;AAEzB,oBAAI,kBAAkB,oBAAoB,IAAI,MAAM,0FAA+F,CAAC;AAEpJ,uBAAO,uCAAuCqB,UAASrB,iBAAgB2B,cAAa,eAAe;AAAA,cACrG,WAAW3B,gBAAe,kBAAkB,MAAM;AAGhD,gBAAAA,gBAAe,QAAQqB,SAAQ;AAG/B,gBAAArB,gBAAe,SAAS;AACxB,uBAAO;AAAA,cACT,OAAO;AAGL,oBAAI,sBAAsB,UAAU;AACpC,oBAAI,uBAAuB,UAAU;AACrC,oBAAI,wBAAwB,gDAAgDqB,UAASrB,iBAAgB,qBAAqB,sBAAsB2B,YAAW;AAC3J,oBAAI,yBAAyB3B,gBAAe;AAC5C,uCAAuB,gBAAgB,4BAA4B2B,YAAW;AAC9E,gBAAA3B,gBAAe,gBAAgB;AAC/B,uBAAO;AAAA,cACT;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,4BAA4B,OAAO2B,cAAa,iBAAiB;AACxE,kBAAM,QAAQ,WAAW,MAAM,OAAOA,YAAW;AACjD,gBAAI,YAAY,MAAM;AAEtB,gBAAI,cAAc,MAAM;AACtB,wBAAU,QAAQ,WAAW,UAAU,OAAOA,YAAW;AAAA,YAC3D;AAEA,4CAAgC,MAAM,QAAQA,cAAa,eAAe;AAAA,UAC5E;AAEA,mBAAS,+BAA+B3B,iBAAgB,YAAY2B,cAAa;AAI/E,gBAAIpC,QAAO;AAEX,mBAAOA,UAAS,MAAM;AACpB,kBAAIA,MAAK,QAAQ,mBAAmB;AAClC,oBAAI2C,SAAQ3C,MAAK;AAEjB,oBAAI2C,WAAU,MAAM;AAClB,8CAA4B3C,OAAMoC,cAAa3B,eAAc;AAAA,gBAC/D;AAAA,cACF,WAAWT,MAAK,QAAQ,uBAAuB;AAM7C,4CAA4BA,OAAMoC,cAAa3B,eAAc;AAAA,cAC/D,WAAWT,MAAK,UAAU,MAAM;AAC9B,gBAAAA,MAAK,MAAM,SAASA;AACpB,gBAAAA,QAAOA,MAAK;AACZ;AAAA,cACF;AAEA,kBAAIA,UAASS,iBAAgB;AAC3B;AAAA,cACF;AAEA,qBAAOT,MAAK,YAAY,MAAM;AAC5B,oBAAIA,MAAK,WAAW,QAAQA,MAAK,WAAWS,iBAAgB;AAC1D;AAAA,gBACF;AAEA,gBAAAT,QAAOA,MAAK;AAAA,cACd;AAEA,cAAAA,MAAK,QAAQ,SAASA,MAAK;AAC3B,cAAAA,QAAOA,MAAK;AAAA,YACd;AAAA,UACF;AAEA,mBAAS,mBAAmB,YAAY;AAQtC,gBAAI,MAAM;AACV,gBAAI,iBAAiB;AAErB,mBAAO,QAAQ,MAAM;AACnB,kBAAI,aAAa,IAAI;AAErB,kBAAI,eAAe,QAAQ,mBAAmB,UAAU,MAAM,MAAM;AAClE,iCAAiB;AAAA,cACnB;AAEA,oBAAM,IAAI;AAAA,YACZ;AAEA,mBAAO;AAAA,UACT;AAEA,mBAAS,oBAAoB,aAAa;AACxC;AACE,kBAAI,gBAAgB,UAAa,gBAAgB,cAAc,gBAAgB,eAAe,gBAAgB,cAAc,CAAC,wBAAwB,WAAW,GAAG;AACjK,wCAAwB,WAAW,IAAI;AAEvC,oBAAI,OAAO,gBAAgB,UAAU;AACnC,0BAAQ,YAAY,YAAY,GAAG;AAAA,oBACjC,KAAK;AAAA,oBACL,KAAK;AAAA,oBACL,KAAK,aACH;AACE,4BAAM,8FAAmG,aAAa,YAAY,YAAY,CAAC;AAE/I;AAAA,oBACF;AAAA,oBAEF,KAAK;AAAA,oBACL,KAAK,YACH;AACE,4BAAM,+HAAoI,aAAa,YAAY,YAAY,CAAC;AAEhL;AAAA,oBACF;AAAA,oBAEF;AACE,4BAAM,gHAAqH,WAAW;AAEtI;AAAA,kBACJ;AAAA,gBACF,OAAO;AACL,wBAAM,wHAA6H,WAAW;AAAA,gBAChJ;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,oBAAoB,UAAU,aAAa;AAClD;AACE,kBAAI,aAAa,UAAa,CAAC,wBAAwB,QAAQ,GAAG;AAChE,oBAAI,aAAa,eAAe,aAAa,UAAU;AACrD,0CAAwB,QAAQ,IAAI;AAEpC,wBAAM,qGAA0G,QAAQ;AAAA,gBAC1H,WAAW,gBAAgB,cAAc,gBAAgB,aAAa;AACpE,0CAAwB,QAAQ,IAAI;AAEpC,wBAAM,yIAAmJ,QAAQ;AAAA,gBACnK;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,gCAAgC,WAAWkC,QAAO;AACzD;AACE,kBAAI,YAAYrB,SAAQ,SAAS;AACjC,kBAAI2D,cAAa,CAAC,aAAa,OAAO,cAAc,SAAS,MAAM;AAEnE,kBAAI,aAAaA,aAAY;AAC3B,oBAAI,OAAO,YAAY,UAAU;AAEjC,sBAAM,uOAA2P,MAAMtC,QAAO,IAAI;AAElR,uBAAO;AAAA,cACT;AAAA,YACF;AAEA,mBAAO;AAAA,UACT;AAEA,mBAAS,6BAA6B,UAAU,aAAa;AAC3D;AACE,mBAAK,gBAAgB,cAAc,gBAAgB,gBAAgB,aAAa,UAAa,aAAa,QAAQ,aAAa,OAAO;AACpI,oBAAIrB,SAAQ,QAAQ,GAAG;AACrB,2BAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK;AACxC,wBAAI,CAAC,gCAAgC,SAAS,CAAC,GAAG,CAAC,GAAG;AACpD;AAAA,oBACF;AAAA,kBACF;AAAA,gBACF,OAAO;AACL,sBAAI,aAAa,cAAc,QAAQ;AAEvC,sBAAI,OAAO,eAAe,YAAY;AACpC,wBAAI,mBAAmB,WAAW,KAAK,QAAQ;AAE/C,wBAAI,kBAAkB;AACpB,0BAAI,OAAO,iBAAiB,KAAK;AACjC,0BAAI,KAAK;AAET,6BAAO,CAAC,KAAK,MAAM,OAAO,iBAAiB,KAAK,GAAG;AACjD,4BAAI,CAAC,gCAAgC,KAAK,OAAO,EAAE,GAAG;AACpD;AAAA,wBACF;AAEA;AAAA,sBACF;AAAA,oBACF;AAAA,kBACF,OAAO;AACL,0BAAM,wKAAkL,WAAW;AAAA,kBACrM;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,4BAA4BJ,iBAAgB,aAAa,MAAM,gBAAgB,UAAU;AAChG,gBAAI,cAAcA,gBAAe;AAEjC,gBAAI,gBAAgB,MAAM;AACxB,cAAAA,gBAAe,gBAAgB;AAAA,gBAC7B;AAAA,gBACA,WAAW;AAAA,gBACX,oBAAoB;AAAA,gBACpB,MAAM;AAAA,gBACN;AAAA,gBACA;AAAA,cACF;AAAA,YACF,OAAO;AAEL,0BAAY,cAAc;AAC1B,0BAAY,YAAY;AACxB,0BAAY,qBAAqB;AACjC,0BAAY,OAAO;AACnB,0BAAY,OAAO;AACnB,0BAAY,WAAW;AAAA,YACzB;AAAA,UACF;AASA,mBAAS,4BAA4BqB,UAASrB,iBAAgB2B,cAAa;AACzE,gBAAI,YAAY3B,gBAAe;AAC/B,gBAAI,cAAc,UAAU;AAC5B,gBAAI,WAAW,UAAU;AACzB,gBAAI,cAAc,UAAU;AAC5B,gCAAoB,WAAW;AAC/B,gCAAoB,UAAU,WAAW;AACzC,yCAA6B,aAAa,WAAW;AACrD,8BAAkBqB,UAASrB,iBAAgB,aAAa2B,YAAW;AACnE,gBAAI,kBAAkB,oBAAoB;AAC1C,gBAAI,sBAAsB,mBAAmB,iBAAiB,qBAAqB;AAEnF,gBAAI,qBAAqB;AACvB,gCAAkB,0BAA0B,iBAAiB,qBAAqB;AAClF,cAAA3B,gBAAe,SAAS;AAAA,YAC1B,OAAO;AACL,kBAAI,mBAAmBqB,aAAY,SAASA,SAAQ,QAAQ,gBAAgB;AAE5E,kBAAI,kBAAkB;AAIpB,+CAA+BrB,iBAAgBA,gBAAe,OAAO2B,YAAW;AAAA,cAClF;AAEA,gCAAkB,iCAAiC,eAAe;AAAA,YACpE;AAEA,gCAAoB3B,iBAAgB,eAAe;AAEnD,iBAAKA,gBAAe,OAAO,oBAAoB,QAAQ;AAGrD,cAAAA,gBAAe,gBAAgB;AAAA,YACjC,OAAO;AACL,sBAAQ,aAAa;AAAA,gBACnB,KAAK,YACH;AACE,sBAAI,iBAAiB,mBAAmBA,gBAAe,KAAK;AAC5D,sBAAI;AAEJ,sBAAI,mBAAmB,MAAM;AAG3B,2BAAOA,gBAAe;AACtB,oBAAAA,gBAAe,QAAQ;AAAA,kBACzB,OAAO;AAGL,2BAAO,eAAe;AACtB,mCAAe,UAAU;AAAA,kBAC3B;AAEA;AAAA,oBAA4BA;AAAA,oBAAgB;AAAA;AAAA,oBAC5C;AAAA,oBAAM;AAAA,oBAAgB;AAAA,kBAAQ;AAC9B;AAAA,gBACF;AAAA,gBAEF,KAAK,aACH;AAKE,sBAAI,QAAQ;AACZ,sBAAI,MAAMA,gBAAe;AACzB,kBAAAA,gBAAe,QAAQ;AAEvB,yBAAO,QAAQ,MAAM;AACnB,wBAAI,aAAa,IAAI;AAErB,wBAAI,eAAe,QAAQ,mBAAmB,UAAU,MAAM,MAAM;AAElE,sBAAAA,gBAAe,QAAQ;AACvB;AAAA,oBACF;AAEA,wBAAI,UAAU,IAAI;AAClB,wBAAI,UAAU;AACd,4BAAQ;AACR,0BAAM;AAAA,kBACR;AAGA;AAAA,oBAA4BA;AAAA,oBAAgB;AAAA;AAAA,oBAC5C;AAAA,oBAAO;AAAA;AAAA,oBACP;AAAA,kBAAQ;AACR;AAAA,gBACF;AAAA,gBAEF,KAAK,YACH;AACE;AAAA,oBAA4BA;AAAA,oBAAgB;AAAA;AAAA,oBAC5C;AAAA;AAAA,oBACA;AAAA;AAAA,oBACA;AAAA,kBAAS;AACT;AAAA,gBACF;AAAA,gBAEF,SACE;AAGE,kBAAAA,gBAAe,gBAAgB;AAAA,gBACjC;AAAA,cACJ;AAAA,YACF;AAEA,mBAAOA,gBAAe;AAAA,UACxB;AAEA,mBAAS,sBAAsBqB,UAASrB,iBAAgB2B,cAAa;AACnE,8BAAkB3B,iBAAgBA,gBAAe,UAAU,aAAa;AACxE,gBAAI,eAAeA,gBAAe;AAElC,gBAAIqB,aAAY,MAAM;AAMpB,cAAArB,gBAAe,QAAQ,qBAAqBA,iBAAgB,MAAM,cAAc2B,YAAW;AAAA,YAC7F,OAAO;AACL,gCAAkBN,UAASrB,iBAAgB,cAAc2B,YAAW;AAAA,YACtE;AAEA,mBAAO3B,gBAAe;AAAA,UACxB;AAEA,cAAI,kDAAkD;AAEtD,mBAAS,sBAAsBqB,UAASrB,iBAAgB2B,cAAa;AACnE,gBAAI,eAAe3B,gBAAe;AAClC,gBAAI,UAAU,aAAa;AAC3B,gBAAI,WAAWA,gBAAe;AAC9B,gBAAI,WAAWA,gBAAe;AAC9B,gBAAI,WAAW,SAAS;AAExB;AACE,kBAAI,EAAE,WAAW,WAAW;AAC1B,oBAAI,CAAC,iDAAiD;AACpD,oEAAkD;AAElD,wBAAM,sGAAsG;AAAA,gBAC9G;AAAA,cACF;AAEA,kBAAI,oBAAoBA,gBAAe,KAAK;AAE5C,kBAAI,mBAAmB;AACrB,+BAAe,mBAAmB,UAAU,QAAQ,kBAAkB;AAAA,cACxE;AAAA,YACF;AAEA,yBAAaA,iBAAgB,SAAS,QAAQ;AAE9C;AACE,kBAAI,aAAa,MAAM;AACrB,oBAAI,WAAW,SAAS;AAExB,oBAAI,SAAS,UAAU,QAAQ,GAAG;AAEhC,sBAAI,SAAS,aAAa,SAAS,YAAY,CAAC,kBAAkB,GAAG;AACnE,2BAAO,6BAA6BqB,UAASrB,iBAAgB2B,YAAW;AAAA,kBAC1E;AAAA,gBACF,OAAO;AAGL,yCAAuB3B,iBAAgB,SAAS2B,YAAW;AAAA,gBAC7D;AAAA,cACF;AAAA,YACF;AAEA,gBAAI,cAAc,SAAS;AAC3B,8BAAkBN,UAASrB,iBAAgB,aAAa2B,YAAW;AACnE,mBAAO3B,gBAAe;AAAA,UACxB;AAEA,cAAI,uCAAuC;AAE3C,mBAAS,sBAAsBqB,UAASrB,iBAAgB2B,cAAa;AACnE,gBAAI,UAAU3B,gBAAe;AAQ7B;AACE,kBAAI,QAAQ,aAAa,QAAW;AAIlC,oBAAI,YAAY,QAAQ,UAAU;AAChC,sBAAI,CAAC,sCAAsC;AACzC,2DAAuC;AAEvC,0BAAM,iJAAsJ;AAAA,kBAC9J;AAAA,gBACF;AAAA,cACF,OAAO;AACL,0BAAU,QAAQ;AAAA,cACpB;AAAA,YACF;AAEA,gBAAI,WAAWA,gBAAe;AAC9B,gBAAI4D,UAAS,SAAS;AAEtB;AACE,kBAAI,OAAOA,YAAW,YAAY;AAChC,sBAAM,qPAAoQ;AAAA,cAC5Q;AAAA,YACF;AAEA,iCAAqB5D,iBAAgB2B,YAAW;AAChD,gBAAI,WAAW,YAAY,OAAO;AAElC;AACE,yCAA2B3B,eAAc;AAAA,YAC3C;AAEA,gBAAI;AAEJ;AACE,kCAAoB,UAAUA;AAC9B,6BAAe,IAAI;AACnB,4BAAc4D,QAAO,QAAQ;AAC7B,6BAAe,KAAK;AAAA,YACtB;AAEA;AACE,yCAA2B;AAAA,YAC7B;AAGA,YAAA5D,gBAAe,SAAS;AACxB,8BAAkBqB,UAASrB,iBAAgB,aAAa2B,YAAW;AACnE,mBAAO3B,gBAAe;AAAA,UACxB;AAEA,mBAAS,mCAAmC;AAC1C,+BAAmB;AAAA,UACrB;AAEA,mBAAS,yCAAyCqB,UAASrB,iBAAgB;AACzE,iBAAKA,gBAAe,OAAO,oBAAoB,QAAQ;AACrD,kBAAIqB,aAAY,MAAM;AAKpB,gBAAAA,SAAQ,YAAY;AACpB,gBAAArB,gBAAe,YAAY;AAE3B,gBAAAA,gBAAe,SAAS;AAAA,cAC1B;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,6BAA6BqB,UAASrB,iBAAgB2B,cAAa;AAC1E,gBAAIN,aAAY,MAAM;AAEpB,cAAArB,gBAAe,eAAeqB,SAAQ;AAAA,YACxC;AAEA;AAEE,yCAA2B;AAAA,YAC7B;AAEA,mCAAuBrB,gBAAe,KAAK;AAE3C,gBAAI,CAAC,iBAAiB2B,cAAa3B,gBAAe,UAAU,GAAG;AAI7D;AACE,uBAAO;AAAA,cACT;AAAA,YACF;AAIA,6BAAiBqB,UAASrB,eAAc;AACxC,mBAAOA,gBAAe;AAAA,UACxB;AAEA,mBAAS,aAAaqB,UAAS,mBAAmB,mBAAmB;AACnE;AACE,kBAAI,cAAc,kBAAkB;AAEpC,kBAAI,gBAAgB,MAAM;AAExB,sBAAM,IAAI,MAAM,6BAA6B;AAAA,cAC/C;AAIA,cAAAA,SAAQ,YAAY;AACpB,gCAAkB,YAAY;AAE9B,gCAAkB,QAAQ,kBAAkB;AAC5C,gCAAkB,UAAU,kBAAkB;AAC9C,gCAAkB,SAAS,kBAAkB;AAC7C,gCAAkB,MAAM,kBAAkB;AAE1C,kBAAI,sBAAsB,YAAY,OAAO;AAC3C,4BAAY,QAAQ;AAAA,cACtB,OAAO;AACL,oBAAI,cAAc,YAAY;AAE9B,oBAAI,gBAAgB,MAAM;AAExB,wBAAM,IAAI,MAAM,kCAAkC;AAAA,gBACpD;AAEA,uBAAO,YAAY,YAAY,mBAAmB;AAChD,gCAAc,YAAY;AAE1B,sBAAI,gBAAgB,MAAM;AAExB,0BAAM,IAAI,MAAM,wCAAwC;AAAA,kBAC1D;AAAA,gBACF;AAEA,4BAAY,UAAU;AAAA,cACxB;AAIA,kBAAI,YAAY,YAAY;AAE5B,kBAAI,cAAc,MAAM;AACtB,4BAAY,YAAY,CAACA,QAAO;AAChC,4BAAY,SAAS;AAAA,cACvB,OAAO;AACL,0BAAU,KAAKA,QAAO;AAAA,cACxB;AAEA,gCAAkB,SAAS;AAE3B,qBAAO;AAAA,YACT;AAAA,UACF;AAEA,mBAAS,8BAA8BA,UAASM,cAAa;AAG3D,gBAAI,cAAcN,SAAQ;AAE1B,gBAAI,iBAAiB,aAAaM,YAAW,GAAG;AAC9C,qBAAO;AAAA,YACT;AAEA,mBAAO;AAAA,UACT;AAEA,mBAAS,uCAAuCN,UAASrB,iBAAgB2B,cAAa;AAIpF,oBAAQ3B,gBAAe,KAAK;AAAA,cAC1B,KAAK;AACH,oCAAoBA,eAAc;AAClC,oBAAIuB,QAAOvB,gBAAe;AAE1B,oCAAoB;AACpB;AAAA,cAEF,KAAK;AACH,gCAAgBA,eAAc;AAC9B;AAAA,cAEF,KAAK,gBACH;AACE,oBAAIF,aAAYE,gBAAe;AAE/B,oBAAI,kBAAkBF,UAAS,GAAG;AAChC,sCAAoBE,eAAc;AAAA,gBACpC;AAEA;AAAA,cACF;AAAA,cAEF,KAAK;AACH,kCAAkBA,iBAAgBA,gBAAe,UAAU,aAAa;AACxE;AAAA,cAEF,KAAK,iBACH;AACE,oBAAI,WAAWA,gBAAe,cAAc;AAC5C,oBAAI,UAAUA,gBAAe,KAAK;AAClC,6BAAaA,iBAAgB,SAAS,QAAQ;AAC9C;AAAA,cACF;AAAA,cAEF,KAAK;AACH;AAEE,sBAAI,eAAe,iBAAiB2B,cAAa3B,gBAAe,UAAU;AAE1E,sBAAI,cAAc;AAChB,oBAAAA,gBAAe,SAAS;AAAA,kBAC1B;AAEA;AAGE,wBAAI,YAAYA,gBAAe;AAC/B,8BAAU,iBAAiB;AAC3B,8BAAU,wBAAwB;AAAA,kBACpC;AAAA,gBACF;AAEA;AAAA,cAEF,KAAK,mBACH;AACE,oBAAIkC,SAAQlC,gBAAe;AAE3B,oBAAIkC,WAAU,MAAM;AAClB,sBAAIA,OAAM,eAAe,MAAM;AAC7B,wCAAoBlC,iBAAgB,iCAAiC,oBAAoB,OAAO,CAAC;AAIjG,oBAAAA,gBAAe,SAAS;AAGxB,2BAAO;AAAA,kBACT;AAMA,sBAAI,uBAAuBA,gBAAe;AAC1C,sBAAI,oBAAoB,qBAAqB;AAE7C,sBAAI,iBAAiB2B,cAAa,iBAAiB,GAAG;AAGpD,2BAAO,wBAAwBN,UAASrB,iBAAgB2B,YAAW;AAAA,kBACrE,OAAO;AAGL,wCAAoB3B,iBAAgB,iCAAiC,oBAAoB,OAAO,CAAC;AAGjG,wBAAI,QAAQ,6BAA6BqB,UAASrB,iBAAgB2B,YAAW;AAE7E,wBAAI,UAAU,MAAM;AAGlB,6BAAO,MAAM;AAAA,oBACf,OAAO;AAIL,6BAAO;AAAA,oBACT;AAAA,kBACF;AAAA,gBACF,OAAO;AACL,sCAAoB3B,iBAAgB,iCAAiC,oBAAoB,OAAO,CAAC;AAAA,gBACnG;AAEA;AAAA,cACF;AAAA,cAEF,KAAK,uBACH;AACE,oBAAI,oBAAoBqB,SAAQ,QAAQ,gBAAgB;AAExD,oBAAI,gBAAgB,iBAAiBM,cAAa3B,gBAAe,UAAU;AAE3E,oBAAI,kBAAkB;AACpB,sBAAI,eAAe;AAMjB,2BAAO,4BAA4BqB,UAASrB,iBAAgB2B,YAAW;AAAA,kBACzE;AAKA,kBAAA3B,gBAAe,SAAS;AAAA,gBAC1B;AAKA,oBAAI,cAAcA,gBAAe;AAEjC,oBAAI,gBAAgB,MAAM;AAGxB,8BAAY,YAAY;AACxB,8BAAY,OAAO;AACnB,8BAAY,aAAa;AAAA,gBAC3B;AAEA,oCAAoBA,iBAAgB,oBAAoB,OAAO;AAE/D,oBAAI,eAAe;AACjB;AAAA,gBACF,OAAO;AAIL,yBAAO;AAAA,gBACT;AAAA,cACF;AAAA,cAEF,KAAK;AAAA,cACL,KAAK,uBACH;AASE,gBAAAA,gBAAe,QAAQ;AACvB,uBAAO,yBAAyBqB,UAASrB,iBAAgB2B,YAAW;AAAA,cACtE;AAAA,YACJ;AAEA,mBAAO,6BAA6BN,UAASrB,iBAAgB2B,YAAW;AAAA,UAC1E;AAEA,mBAAS,UAAUN,UAASrB,iBAAgB2B,cAAa;AACvD;AACE,kBAAI3B,gBAAe,sBAAsBqB,aAAY,MAAM;AAEzD,uBAAO,aAAaA,UAASrB,iBAAgB,4BAA4BA,gBAAe,MAAMA,gBAAe,KAAKA,gBAAe,cAAcA,gBAAe,eAAe,MAAMA,gBAAe,MAAMA,gBAAe,KAAK,CAAC;AAAA,cAC/N;AAAA,YACF;AAEA,gBAAIqB,aAAY,MAAM;AACpB,kBAAI,WAAWA,SAAQ;AACvB,kBAAI,WAAWrB,gBAAe;AAE9B,kBAAI,aAAa,YAAY,kBAAkB;AAAA,cAC9CA,gBAAe,SAASqB,SAAQ,MAAQ;AAGvC,mCAAmB;AAAA,cACrB,OAAO;AAGL,oBAAI,8BAA8B,8BAA8BA,UAASM,YAAW;AAEpF,oBAAI,CAAC;AAAA;AAAA,iBAEJ3B,gBAAe,QAAQ,gBAAgB,SAAS;AAE/C,qCAAmB;AACnB,yBAAO,uCAAuCqB,UAASrB,iBAAgB2B,YAAW;AAAA,gBACpF;AAEA,qBAAKN,SAAQ,QAAQ,kCAAkC,SAAS;AAG9D,qCAAmB;AAAA,gBACrB,OAAO;AAKL,qCAAmB;AAAA,gBACrB;AAAA,cACF;AAAA,YACF,OAAO;AACL,iCAAmB;AAEnB,kBAAI,eAAe,KAAK,cAAcrB,eAAc,GAAG;AAUrD,oBAAI,YAAYA,gBAAe;AAC/B,oBAAI,gBAAgB,gBAAgB;AACpC,2BAAWA,iBAAgB,eAAe,SAAS;AAAA,cACrD;AAAA,YACF;AAOA,YAAAA,gBAAe,QAAQ;AAEvB,oBAAQA,gBAAe,KAAK;AAAA,cAC1B,KAAK,wBACH;AACE,uBAAO,4BAA4BqB,UAASrB,iBAAgBA,gBAAe,MAAM2B,YAAW;AAAA,cAC9F;AAAA,cAEF,KAAK,eACH;AACE,oBAAI,cAAc3B,gBAAe;AACjC,uBAAO,mBAAmBqB,UAASrB,iBAAgB,aAAa2B,YAAW;AAAA,cAC7E;AAAA,cAEF,KAAK,mBACH;AACE,oBAAI7B,aAAYE,gBAAe;AAC/B,oBAAI,kBAAkBA,gBAAe;AACrC,oBAAI,gBAAgBA,gBAAe,gBAAgBF,aAAY,kBAAkB,oBAAoBA,YAAW,eAAe;AAC/H,uBAAO,wBAAwBuB,UAASrB,iBAAgBF,YAAW,eAAe6B,YAAW;AAAA,cAC/F;AAAA,cAEF,KAAK,gBACH;AACE,oBAAI,aAAa3B,gBAAe;AAChC,oBAAI,mBAAmBA,gBAAe;AAEtC,oBAAI,iBAAiBA,gBAAe,gBAAgB,aAAa,mBAAmB,oBAAoB,YAAY,gBAAgB;AAEpI,uBAAO,qBAAqBqB,UAASrB,iBAAgB,YAAY,gBAAgB2B,YAAW;AAAA,cAC9F;AAAA,cAEF,KAAK;AACH,uBAAO,eAAeN,UAASrB,iBAAgB2B,YAAW;AAAA,cAE5D,KAAK;AACH,uBAAO,oBAAoBN,UAASrB,iBAAgB2B,YAAW;AAAA,cAEjE,KAAK;AACH,uBAAO,eAAeN,UAASrB,eAAc;AAAA,cAE/C,KAAK;AACH,uBAAO,wBAAwBqB,UAASrB,iBAAgB2B,YAAW;AAAA,cAErE,KAAK;AACH,uBAAO,sBAAsBN,UAASrB,iBAAgB2B,YAAW;AAAA,cAEnE,KAAK,YACH;AACE,oBAAI,OAAO3B,gBAAe;AAC1B,oBAAI,oBAAoBA,gBAAe;AAEvC,oBAAI,kBAAkBA,gBAAe,gBAAgB,OAAO,oBAAoB,oBAAoB,MAAM,iBAAiB;AAE3H,uBAAO,iBAAiBqB,UAASrB,iBAAgB,MAAM,iBAAiB2B,YAAW;AAAA,cACrF;AAAA,cAEF,KAAK7C;AACH,uBAAO,eAAeuC,UAASrB,iBAAgB2B,YAAW;AAAA,cAE5D,KAAK;AACH,uBAAO,WAAWN,UAASrB,iBAAgB2B,YAAW;AAAA,cAExD,KAAK;AACH,uBAAO,eAAeN,UAASrB,iBAAgB2B,YAAW;AAAA,cAE5D,KAAK;AACH,uBAAO,sBAAsBN,UAASrB,iBAAgB2B,YAAW;AAAA,cAEnE,KAAK;AACH,uBAAO,sBAAsBN,UAASrB,iBAAgB2B,YAAW;AAAA,cAEnE,KAAK,eACH;AACE,oBAAI,SAAS3B,gBAAe;AAC5B,oBAAI,oBAAoBA,gBAAe;AAEvC,oBAAI,kBAAkB,oBAAoB,QAAQ,iBAAiB;AAEnE;AACE,sBAAIA,gBAAe,SAASA,gBAAe,aAAa;AACtD,wBAAI,iBAAiB,OAAO;AAE5B,wBAAI,gBAAgB;AAClB;AAAA,wBAAe;AAAA,wBAAgB;AAAA;AAAA,wBAC/B;AAAA,wBAAQ,yBAAyB,MAAM;AAAA,sBAAC;AAAA,oBAC1C;AAAA,kBACF;AAAA,gBACF;AAEA,kCAAkB,oBAAoB,OAAO,MAAM,eAAe;AAClE,uBAAO,oBAAoBqB,UAASrB,iBAAgB,QAAQ,iBAAiB2B,YAAW;AAAA,cAC1F;AAAA,cAEF,KAAK,qBACH;AACE,uBAAO,0BAA0BN,UAASrB,iBAAgBA,gBAAe,MAAMA,gBAAe,cAAc2B,YAAW;AAAA,cACzH;AAAA,cAEF,KAAK,0BACH;AACE,oBAAI,cAAc3B,gBAAe;AACjC,oBAAI,oBAAoBA,gBAAe;AAEvC,oBAAI,kBAAkBA,gBAAe,gBAAgB,cAAc,oBAAoB,oBAAoB,aAAa,iBAAiB;AAEzI,uBAAO,8BAA8BqB,UAASrB,iBAAgB,aAAa,iBAAiB2B,YAAW;AAAA,cACzG;AAAA,cAEF,KAAK,uBACH;AACE,uBAAO,4BAA4BN,UAASrB,iBAAgB2B,YAAW;AAAA,cACzE;AAAA,cAEF,KAAK,gBACH;AAEE;AAAA,cACF;AAAA,cAEF,KAAK,oBACH;AACE,uBAAO,yBAAyBN,UAASrB,iBAAgB2B,YAAW;AAAA,cACtE;AAAA,YACJ;AAEA,kBAAM,IAAI,MAAM,+BAA+B3B,gBAAe,MAAM,yEAA8E;AAAA,UACpJ;AAEA,mBAAS,WAAWA,iBAAgB;AAGlC,YAAAA,gBAAe,SAAS;AAAA,UAC1B;AAEA,mBAAS,UAAUA,iBAAgB;AACjC,YAAAA,gBAAe,SAAS;AAExB;AACE,cAAAA,gBAAe,SAAS;AAAA,YAC1B;AAAA,UACF;AAEA,cAAI;AACJ,cAAI;AACJ,cAAI;AACJ,cAAI;AAEJ;AAEE,gCAAoB,SAAU,QAAQA,iBAAgB,uBAAuB,UAAU;AAGrF,kBAAIT,QAAOS,gBAAe;AAE1B,qBAAOT,UAAS,MAAM;AACpB,oBAAIA,MAAK,QAAQ,iBAAiBA,MAAK,QAAQ,UAAU;AACvD,qCAAmB,QAAQA,MAAK,SAAS;AAAA,gBAC3C,WAAWA,MAAK,QAAQ;AAAY;AAAA,yBAAWA,MAAK,UAAU,MAAM;AAClE,kBAAAA,MAAK,MAAM,SAASA;AACpB,kBAAAA,QAAOA,MAAK;AACZ;AAAA,gBACF;AAEA,oBAAIA,UAASS,iBAAgB;AAC3B;AAAA,gBACF;AAEA,uBAAOT,MAAK,YAAY,MAAM;AAC5B,sBAAIA,MAAK,WAAW,QAAQA,MAAK,WAAWS,iBAAgB;AAC1D;AAAA,kBACF;AAEA,kBAAAT,QAAOA,MAAK;AAAA,gBACd;AAEA,gBAAAA,MAAK,QAAQ,SAASA,MAAK;AAC3B,gBAAAA,QAAOA,MAAK;AAAA,cACd;AAAA,YACF;AAEA,kCAAsB,SAAU8B,UAASrB,iBAAgB;AAAA,YACzD;AAEA,oCAAwB,SAAUqB,UAASrB,iBAAgB,MAAM,UAAU,uBAAuB;AAGhG,kBAAI,WAAWqB,SAAQ;AAEvB,kBAAI,aAAa,UAAU;AAGzB;AAAA,cACF;AAMA,kBAAI,WAAWrB,gBAAe;AAC9B,kBAAI,qBAAqB,eAAe;AAIxC,kBAAI,gBAAgB,cAAc,UAAU,MAAM,UAAU,UAAU,uBAAuB,kBAAkB;AAE/G,cAAAA,gBAAe,cAAc;AAG7B,kBAAI,eAAe;AACjB,2BAAWA,eAAc;AAAA,cAC3B;AAAA,YACF;AAEA,+BAAmB,SAAUqB,UAASrB,iBAAgB,SAAS,SAAS;AAEtE,kBAAI,YAAY,SAAS;AACvB,2BAAWA,eAAc;AAAA,cAC3B;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,mBAAmB,aAAa,0BAA0B;AACjE,gBAAI,eAAe,GAAG;AAGpB;AAAA,YACF;AAEA,oBAAQ,YAAY,UAAU;AAAA,cAC5B,KAAK,UACH;AAME,oBAAI,WAAW,YAAY;AAC3B,oBAAI,eAAe;AAEnB,uBAAO,aAAa,MAAM;AACxB,sBAAI,SAAS,cAAc,MAAM;AAC/B,mCAAe;AAAA,kBACjB;AAEA,6BAAW,SAAS;AAAA,gBACtB;AAIA,oBAAI,iBAAiB,MAAM;AAEzB,8BAAY,OAAO;AAAA,gBACrB,OAAO;AAGL,+BAAa,UAAU;AAAA,gBACzB;AAEA;AAAA,cACF;AAAA,cAEF,KAAK,aACH;AAME,oBAAI,YAAY,YAAY;AAC5B,oBAAI,gBAAgB;AAEpB,uBAAO,cAAc,MAAM;AACzB,sBAAI,UAAU,cAAc,MAAM;AAChC,oCAAgB;AAAA,kBAClB;AAEA,8BAAY,UAAU;AAAA,gBACxB;AAIA,oBAAI,kBAAkB,MAAM;AAE1B,sBAAI,CAAC,4BAA4B,YAAY,SAAS,MAAM;AAG1D,gCAAY,KAAK,UAAU;AAAA,kBAC7B,OAAO;AACL,gCAAY,OAAO;AAAA,kBACrB;AAAA,gBACF,OAAO;AAGL,gCAAc,UAAU;AAAA,gBAC1B;AAEA;AAAA,cACF;AAAA,YACJ;AAAA,UACF;AAEA,mBAAS,iBAAiB,eAAe;AACvC,gBAAI,aAAa,cAAc,cAAc,QAAQ,cAAc,UAAU,UAAU,cAAc;AACrG,gBAAI,gBAAgB;AACpB,gBAAI,eAAe;AAEnB,gBAAI,CAAC,YAAY;AAEf,mBAAM,cAAc,OAAO,iBAAiB,QAAQ;AAGlD,oBAAI,iBAAiB,cAAc;AACnC,oBAAI,mBAAmB,cAAc;AACrC,oBAAI,QAAQ,cAAc;AAE1B,uBAAO,UAAU,MAAM;AACrB,kCAAgB,WAAW,eAAe,WAAW,MAAM,OAAO,MAAM,UAAU,CAAC;AACnF,kCAAgB,MAAM;AACtB,kCAAgB,MAAM;AAQtB,oCAAkB,MAAM;AACxB,sCAAoB,MAAM;AAC1B,0BAAQ,MAAM;AAAA,gBAChB;AAEA,8BAAc,iBAAiB;AAC/B,8BAAc,mBAAmB;AAAA,cACnC,OAAO;AACL,oBAAI,SAAS,cAAc;AAE3B,uBAAO,WAAW,MAAM;AACtB,kCAAgB,WAAW,eAAe,WAAW,OAAO,OAAO,OAAO,UAAU,CAAC;AACrF,kCAAgB,OAAO;AACvB,kCAAgB,OAAO;AAIvB,yBAAO,SAAS;AAChB,2BAAS,OAAO;AAAA,gBAClB;AAAA,cACF;AAEA,4BAAc,gBAAgB;AAAA,YAChC,OAAO;AAEL,mBAAM,cAAc,OAAO,iBAAiB,QAAQ;AAGlD,oBAAI,oBAAoB,cAAc;AACtC,oBAAI,UAAU,cAAc;AAE5B,uBAAO,YAAY,MAAM;AACvB,kCAAgB,WAAW,eAAe,WAAW,QAAQ,OAAO,QAAQ,UAAU,CAAC;AAKvF,kCAAgB,QAAQ,eAAe;AACvC,kCAAgB,QAAQ,QAAQ;AAChC,uCAAqB,QAAQ;AAC7B,4BAAU,QAAQ;AAAA,gBACpB;AAEA,8BAAc,mBAAmB;AAAA,cACnC,OAAO;AACL,oBAAI,UAAU,cAAc;AAE5B,uBAAO,YAAY,MAAM;AACvB,kCAAgB,WAAW,eAAe,WAAW,QAAQ,OAAO,QAAQ,UAAU,CAAC;AAKvF,kCAAgB,QAAQ,eAAe;AACvC,kCAAgB,QAAQ,QAAQ;AAIhC,0BAAQ,SAAS;AACjB,4BAAU,QAAQ;AAAA,gBACpB;AAAA,cACF;AAEA,4BAAc,gBAAgB;AAAA,YAChC;AAEA,0BAAc,aAAa;AAC3B,mBAAO;AAAA,UACT;AAEA,mBAAS,mCAAmCqB,UAASrB,iBAAgB,WAAW;AAC9E,gBAAI,uBAAuB,MAAMA,gBAAe,OAAO,oBAAoB,WAAWA,gBAAe,QAAQ,gBAAgB,SAAS;AACpI,wCAA0BA,eAAc;AACxC,kCAAoB;AACpB,cAAAA,gBAAe,SAAS,oBAAoB,aAAa;AACzD,qBAAO;AAAA,YACT;AAEA,gBAAI,cAAc,kBAAkBA,eAAc;AAElD,gBAAI,cAAc,QAAQ,UAAU,eAAe,MAAM;AAGvD,kBAAIqB,aAAY,MAAM;AACpB,oBAAI,CAAC,aAAa;AAChB,wBAAM,IAAI,MAAM,yGAA8G;AAAA,gBAChI;AAEA,qDAAqCrB,eAAc;AACnD,iCAAiBA,eAAc;AAE/B;AACE,uBAAKA,gBAAe,OAAO,iBAAiB,QAAQ;AAClD,wBAAI,qBAAqB,cAAc;AAEvC,wBAAI,oBAAoB;AAEtB,0BAAI,uBAAuBA,gBAAe;AAE1C,0BAAI,yBAAyB,MAAM;AAEjC,wBAAAA,gBAAe,oBAAoB,qBAAqB;AAAA,sBAC1D;AAAA,oBACF;AAAA,kBACF;AAAA,gBACF;AAEA,uBAAO;AAAA,cACT,OAAO;AAGL,oCAAoB;AAEpB,qBAAKA,gBAAe,QAAQ,gBAAgB,SAAS;AAEnD,kBAAAA,gBAAe,gBAAgB;AAAA,gBACjC;AAOA,gBAAAA,gBAAe,SAAS;AACxB,iCAAiBA,eAAc;AAE/B;AACE,uBAAKA,gBAAe,OAAO,iBAAiB,QAAQ;AAClD,wBAAI,sBAAsB,cAAc;AAExC,wBAAI,qBAAqB;AAEvB,0BAAI,wBAAwBA,gBAAe;AAE3C,0BAAI,0BAA0B,MAAM;AAElC,wBAAAA,gBAAe,oBAAoB,sBAAsB;AAAA,sBAC3D;AAAA,oBACF;AAAA,kBACF;AAAA,gBACF;AAEA,uBAAO;AAAA,cACT;AAAA,YACF,OAAO;AAKL,kDAAoC;AAEpC,qBAAO;AAAA,YACT;AAAA,UACF;AAEA,mBAAS,aAAaqB,UAASrB,iBAAgB2B,cAAa;AAC1D,gBAAI,WAAW3B,gBAAe;AAK9B,2BAAeA,eAAc;AAE7B,oBAAQA,gBAAe,KAAK;AAAA,cAC1B,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAKlB;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AACH,iCAAiBkB,eAAc;AAC/B,uBAAO;AAAA,cAET,KAAK,gBACH;AACE,oBAAIF,aAAYE,gBAAe;AAE/B,oBAAI,kBAAkBF,UAAS,GAAG;AAChC,6BAAWE,eAAc;AAAA,gBAC3B;AAEA,iCAAiBA,eAAc;AAC/B,uBAAO;AAAA,cACT;AAAA,cAEF,KAAK,UACH;AACE,oBAAI,YAAYA,gBAAe;AAC/B,iCAAiBA,eAAc;AAC/B,yCAAyBA,eAAc;AACvC,4CAA4B;AAE5B,oBAAI,UAAU,gBAAgB;AAC5B,4BAAU,UAAU,UAAU;AAC9B,4BAAU,iBAAiB;AAAA,gBAC7B;AAEA,oBAAIqB,aAAY,QAAQA,SAAQ,UAAU,MAAM;AAG9C,sBAAI,cAAc,kBAAkBrB,eAAc;AAElD,sBAAI,aAAa;AAGf,+BAAWA,eAAc;AAAA,kBAC3B,OAAO;AACL,wBAAIqB,aAAY,MAAM;AACpB,0BAAI,YAAYA,SAAQ;AAExB;AAAA;AAAA,wBACA,CAAC,UAAU;AAAA,yBACVrB,gBAAe,QAAQ,uBAAuB;AAAA,wBAAS;AAOtD,wBAAAA,gBAAe,SAAS;AAIxB,4DAAoC;AAAA,sBACtC;AAAA,oBACF;AAAA,kBACF;AAAA,gBACF;AAEA,oCAAoBqB,UAASrB,eAAc;AAC3C,iCAAiBA,eAAc;AAE/B,uBAAO;AAAA,cACT;AAAA,cAEF,KAAK,eACH;AACE,+BAAeA,eAAc;AAC7B,oBAAI,wBAAwB,qBAAqB;AACjD,oBAAI,OAAOA,gBAAe;AAE1B,oBAAIqB,aAAY,QAAQrB,gBAAe,aAAa,MAAM;AACxD,wCAAsBqB,UAASrB,iBAAgB,MAAM,UAAU,qBAAqB;AAEpF,sBAAIqB,SAAQ,QAAQrB,gBAAe,KAAK;AACtC,8BAAUA,eAAc;AAAA,kBAC1B;AAAA,gBACF,OAAO;AACL,sBAAI,CAAC,UAAU;AACb,wBAAIA,gBAAe,cAAc,MAAM;AACrC,4BAAM,IAAI,MAAM,6GAAkH;AAAA,oBACpI;AAGA,qCAAiBA,eAAc;AAC/B,2BAAO;AAAA,kBACT;AAEA,sBAAI,qBAAqB,eAAe;AAKxC,sBAAI,eAAe,kBAAkBA,eAAc;AAEnD,sBAAI,cAAc;AAGhB,wBAAI,6BAA6BA,iBAAgB,uBAAuB,kBAAkB,GAAG;AAG3F,iCAAWA,eAAc;AAAA,oBAC3B;AAAA,kBACF,OAAO;AACL,wBAAI,WAAW,eAAe,MAAM,UAAU,uBAAuB,oBAAoBA,eAAc;AACvG,sCAAkB,UAAUA,iBAAgB,OAAO,KAAK;AACxD,oBAAAA,gBAAe,YAAY;AAI3B,wBAAI,wBAAwB,UAAU,MAAM,UAAU,qBAAqB,GAAG;AAC5E,iCAAWA,eAAc;AAAA,oBAC3B;AAAA,kBACF;AAEA,sBAAIA,gBAAe,QAAQ,MAAM;AAE/B,8BAAUA,eAAc;AAAA,kBAC1B;AAAA,gBACF;AAEA,iCAAiBA,eAAc;AAC/B,uBAAO;AAAA,cACT;AAAA,cAEF,KAAK,UACH;AACE,oBAAI,UAAU;AAEd,oBAAIqB,YAAWrB,gBAAe,aAAa,MAAM;AAC/C,sBAAI,UAAUqB,SAAQ;AAGtB,mCAAiBA,UAASrB,iBAAgB,SAAS,OAAO;AAAA,gBAC5D,OAAO;AACL,sBAAI,OAAO,YAAY,UAAU;AAC/B,wBAAIA,gBAAe,cAAc,MAAM;AACrC,4BAAM,IAAI,MAAM,6GAAkH;AAAA,oBACpI;AAAA,kBAEF;AAEA,sBAAI,yBAAyB,qBAAqB;AAElD,sBAAI,sBAAsB,eAAe;AAEzC,sBAAI,gBAAgB,kBAAkBA,eAAc;AAEpD,sBAAI,eAAe;AACjB,wBAAI,iCAAiCA,eAAc,GAAG;AACpD,iCAAWA,eAAc;AAAA,oBAC3B;AAAA,kBACF,OAAO;AACL,oBAAAA,gBAAe,YAAY,mBAAmB,SAAS,wBAAwB,qBAAqBA,eAAc;AAAA,kBACpH;AAAA,gBACF;AAEA,iCAAiBA,eAAc;AAC/B,uBAAO;AAAA,cACT;AAAA,cAEF,KAAK,mBACH;AACE,mCAAmBA,eAAc;AACjC,oBAAI,YAAYA,gBAAe;AAM/B,oBAAIqB,aAAY,QAAQA,SAAQ,kBAAkB,QAAQA,SAAQ,cAAc,eAAe,MAAM;AACnG,sBAAI,kCAAkC,mCAAmCA,UAASrB,iBAAgB,SAAS;AAE3G,sBAAI,CAAC,iCAAiC;AACpC,wBAAIA,gBAAe,QAAQ,eAAe;AAGxC,6BAAOA;AAAA,oBACT,OAAO;AAGL,6BAAO;AAAA,oBACT;AAAA,kBACF;AAAA,gBAEF;AAEA,qBAAKA,gBAAe,QAAQ,gBAAgB,SAAS;AAEnD,kBAAAA,gBAAe,QAAQ2B;AAEvB,uBAAM3B,gBAAe,OAAO,iBAAiB,QAAQ;AACnD,2CAAuBA,eAAc;AAAA,kBACvC;AAGA,yBAAOA;AAAA,gBACT;AAEA,oBAAI,iBAAiB,cAAc;AACnC,oBAAI,iBAAiBqB,aAAY,QAAQA,SAAQ,kBAAkB;AAInE,oBAAI,mBAAmB,gBAAgB;AAarC,sBAAI,gBAAgB;AAClB,wBAAI,mBAAmBrB,gBAAe;AACtC,qCAAiB,SAAS;AAI1B,yBAAKA,gBAAe,OAAO,oBAAoB,QAAQ;AAQrD,0BAAI,2BAA2BqB,aAAY,SAASrB,gBAAe,cAAc,+BAA+B,QAAQ,CAAC;AAEzH,0BAAI,4BAA4B,mBAAmB,oBAAoB,SAAS,8BAA8B,GAAG;AAG/G,yCAAiB;AAAA,sBACnB,OAAO;AAGL,wDAAgC;AAAA,sBAClC;AAAA,oBACF;AAAA,kBACF;AAAA,gBACF;AAEA,oBAAI,YAAYA,gBAAe;AAE/B,oBAAI,cAAc,MAAM;AAGtB,kBAAAA,gBAAe,SAAS;AAAA,gBAC1B;AAEA,iCAAiBA,eAAc;AAE/B;AACE,uBAAKA,gBAAe,OAAO,iBAAiB,QAAQ;AAClD,wBAAI,gBAAgB;AAElB,0BAAI,uBAAuBA,gBAAe;AAE1C,0BAAI,yBAAyB,MAAM;AAEjC,wBAAAA,gBAAe,oBAAoB,qBAAqB;AAAA,sBAC1D;AAAA,oBACF;AAAA,kBACF;AAAA,gBACF;AAEA,uBAAO;AAAA,cACT;AAAA,cAEF,KAAK;AACH,iCAAiBA,eAAc;AAC/B,oCAAoBqB,UAASrB,eAAc;AAE3C,oBAAIqB,aAAY,MAAM;AACpB,qCAAmBrB,gBAAe,UAAU,aAAa;AAAA,gBAC3D;AAEA,iCAAiBA,eAAc;AAC/B,uBAAO;AAAA,cAET,KAAK;AAEH,oBAAI,UAAUA,gBAAe,KAAK;AAClC,4BAAY,SAASA,eAAc;AACnC,iCAAiBA,eAAc;AAC/B,uBAAO;AAAA,cAET,KAAK,0BACH;AAGE,oBAAI,aAAaA,gBAAe;AAEhC,oBAAI,kBAAkB,UAAU,GAAG;AACjC,6BAAWA,eAAc;AAAA,gBAC3B;AAEA,iCAAiBA,eAAc;AAC/B,uBAAO;AAAA,cACT;AAAA,cAEF,KAAK,uBACH;AACE,mCAAmBA,eAAc;AACjC,oBAAI,cAAcA,gBAAe;AAEjC,oBAAI,gBAAgB,MAAM;AAGxB,mCAAiBA,eAAc;AAC/B,yBAAO;AAAA,gBACT;AAEA,oBAAI,qBAAqBA,gBAAe,QAAQ,gBAAgB;AAChE,oBAAI,eAAe,YAAY;AAE/B,oBAAI,iBAAiB,MAAM;AAEzB,sBAAI,CAAC,mBAAmB;AAUtB,wBAAI,oBAAoB,yBAAyB,MAAMqB,aAAY,SAASA,SAAQ,QAAQ,gBAAgB;AAE5G,wBAAI,CAAC,mBAAmB;AACtB,0BAAI,MAAMrB,gBAAe;AAEzB,6BAAO,QAAQ,MAAM;AACnB,4BAAI,YAAY,mBAAmB,GAAG;AAEtC,4BAAI,cAAc,MAAM;AACtB,8CAAoB;AACpB,0BAAAA,gBAAe,SAAS;AACxB,6CAAmB,aAAa,KAAK;AAarC,8BAAI,eAAe,UAAU;AAE7B,8BAAI,iBAAiB,MAAM;AACzB,4BAAAA,gBAAe,cAAc;AAC7B,4BAAAA,gBAAe,SAAS;AAAA,0BAC1B;AAMA,0BAAAA,gBAAe,eAAe;AAC9B,2CAAiBA,iBAAgB2B,YAAW;AAG5C,8CAAoB3B,iBAAgB,0BAA0B,oBAAoB,SAAS,qBAAqB,CAAC;AAEjH,iCAAOA,gBAAe;AAAA,wBACxB;AAEA,8BAAM,IAAI;AAAA,sBACZ;AAAA,oBACF;AAEA,wBAAI,YAAY,SAAS,QAAQsB,KAAI,IAAI,oBAAoB,GAAG;AAI9D,sBAAAtB,gBAAe,SAAS;AACxB,0CAAoB;AACpB,yCAAmB,aAAa,KAAK;AASrC,sBAAAA,gBAAe,QAAQ;AAAA,oBACzB;AAAA,kBACF,OAAO;AACL,uCAAmB,aAAa,KAAK;AAAA,kBACvC;AAAA,gBAEF,OAAO;AAEL,sBAAI,CAAC,mBAAmB;AACtB,wBAAI,aAAa,mBAAmB,YAAY;AAEhD,wBAAI,eAAe,MAAM;AACvB,sBAAAA,gBAAe,SAAS;AACxB,0CAAoB;AAGpB,0BAAI,gBAAgB,WAAW;AAE/B,0BAAI,kBAAkB,MAAM;AAC1B,wBAAAA,gBAAe,cAAc;AAC7B,wBAAAA,gBAAe,SAAS;AAAA,sBAC1B;AAEA,yCAAmB,aAAa,IAAI;AAEpC,0BAAI,YAAY,SAAS,QAAQ,YAAY,aAAa,YAAY,CAAC,aAAa,aAAa,CAAC,eAAe,GAC/G;AAEE,yCAAiBA,eAAc;AAC/B,+BAAO;AAAA,sBACT;AAAA,oBACJ;AAAA;AAAA;AAAA;AAAA,sBAGAsB,KAAI,IAAI,IAAI,YAAY,qBAAqB,oBAAoB,KAAKK,iBAAgB;AAAA,sBAAe;AAInG,sBAAA3B,gBAAe,SAAS;AACxB,0CAAoB;AACpB,yCAAmB,aAAa,KAAK;AASrC,sBAAAA,gBAAe,QAAQ;AAAA,oBACzB;AAAA,kBACF;AAEA,sBAAI,YAAY,aAAa;AAM3B,iCAAa,UAAUA,gBAAe;AACtC,oBAAAA,gBAAe,QAAQ;AAAA,kBACzB,OAAO;AACL,wBAAI,kBAAkB,YAAY;AAElC,wBAAI,oBAAoB,MAAM;AAC5B,sCAAgB,UAAU;AAAA,oBAC5B,OAAO;AACL,sBAAAA,gBAAe,QAAQ;AAAA,oBACzB;AAEA,gCAAY,OAAO;AAAA,kBACrB;AAAA,gBACF;AAEA,oBAAI,YAAY,SAAS,MAAM;AAG7B,sBAAIuC,QAAO,YAAY;AACvB,8BAAY,YAAYA;AACxB,8BAAY,OAAOA,MAAK;AACxB,8BAAY,qBAAqBjB,KAAI;AACrC,kBAAAiB,MAAK,UAAU;AAIf,sBAAI,kBAAkB,oBAAoB;AAE1C,sBAAI,mBAAmB;AACrB,sCAAkB,0BAA0B,iBAAiB,qBAAqB;AAAA,kBACpF,OAAO;AACL,sCAAkB,iCAAiC,eAAe;AAAA,kBACpE;AAEA,sCAAoBvC,iBAAgB,eAAe;AAGnD,yBAAOuC;AAAA,gBACT;AAEA,iCAAiBvC,eAAc;AAC/B,uBAAO;AAAA,cACT;AAAA,cAEF,KAAK,gBACH;AAEE;AAAA,cACF;AAAA,cAEF,KAAK;AAAA,cACL,KAAK,uBACH;AACE,+BAAeA,eAAc;AAC7B,oBAAI,aAAaA,gBAAe;AAChC,oBAAI,eAAe,eAAe;AAElC,oBAAIqB,aAAY,MAAM;AACpB,sBAAI,aAAaA,SAAQ;AACzB,sBAAI,eAAe,eAAe;AAElC,sBAAI,iBAAiB;AAAA,kBACrB,CAAC,oBAAsB;AACrB,oBAAArB,gBAAe,SAAS;AAAA,kBAC1B;AAAA,gBACF;AAEA,oBAAI,CAAC,iBAAiBA,gBAAe,OAAO,oBAAoB,QAAQ;AACtE,mCAAiBA,eAAc;AAAA,gBACjC,OAAO;AAGL,sBAAI,iBAAiB,oBAAoB,aAAa,GAAG;AACvD,qCAAiBA,eAAc;AAE/B;AAIE,0BAAKA,gBAAe,gBAAgB,YAAY,SAAS;AACvD,wBAAAA,gBAAe,SAAS;AAAA,sBAC1B;AAAA,oBACF;AAAA,kBACF;AAAA,gBACF;AACA,uBAAO;AAAA,cACT;AAAA,cAEF,KAAK,gBACH;AAEE,uBAAO;AAAA,cACT;AAAA,cAEF,KAAK,wBACH;AAEE,uBAAO;AAAA,cACT;AAAA,YACJ;AAEA,kBAAM,IAAI,MAAM,+BAA+BA,gBAAe,MAAM,yEAA8E;AAAA,UACpJ;AAEA,mBAAS,WAAWqB,UAASrB,iBAAgB2B,cAAa;AAKxD,2BAAe3B,eAAc;AAE7B,oBAAQA,gBAAe,KAAK;AAAA,cAC1B,KAAK,gBACH;AACE,oBAAIF,aAAYE,gBAAe;AAE/B,oBAAI,kBAAkBF,UAAS,GAAG;AAChC,6BAAWE,eAAc;AAAA,gBAC3B;AAEA,oBAAI,QAAQA,gBAAe;AAE3B,oBAAI,QAAQ,eAAe;AACzB,kBAAAA,gBAAe,QAAQ,QAAQ,CAAC,gBAAgB;AAEhD,uBAAMA,gBAAe,OAAO,iBAAiB,QAAQ;AACnD,2CAAuBA,eAAc;AAAA,kBACvC;AAEA,yBAAOA;AAAA,gBACT;AAEA,uBAAO;AAAA,cACT;AAAA,cAEF,KAAK,UACH;AACE,oBAAIuB,QAAOvB,gBAAe;AAC1B,iCAAiBA,eAAc;AAC/B,yCAAyBA,eAAc;AACvC,4CAA4B;AAC5B,oBAAI,SAASA,gBAAe;AAE5B,qBAAK,SAAS,mBAAmB,YAAY,SAAS,gBAAgB,SAAS;AAG7E,kBAAAA,gBAAe,QAAQ,SAAS,CAAC,gBAAgB;AACjD,yBAAOA;AAAA,gBACT;AAGA,uBAAO;AAAA,cACT;AAAA,cAEF,KAAK,eACH;AAEE,+BAAeA,eAAc;AAC7B,uBAAO;AAAA,cACT;AAAA,cAEF,KAAK,mBACH;AACE,mCAAmBA,eAAc;AACjC,oBAAI,gBAAgBA,gBAAe;AAEnC,oBAAI,kBAAkB,QAAQ,cAAc,eAAe,MAAM;AAC/D,sBAAIA,gBAAe,cAAc,MAAM;AACrC,0BAAM,IAAI,MAAM,mGAAwG;AAAA,kBAC1H;AAEA,sCAAoB;AAAA,gBACtB;AAEA,oBAAI,UAAUA,gBAAe;AAE7B,oBAAI,UAAU,eAAe;AAC3B,kBAAAA,gBAAe,QAAQ,UAAU,CAAC,gBAAgB;AAElD,uBAAMA,gBAAe,OAAO,iBAAiB,QAAQ;AACnD,2CAAuBA,eAAc;AAAA,kBACvC;AAEA,yBAAOA;AAAA,gBACT;AAEA,uBAAO;AAAA,cACT;AAAA,cAEF,KAAK,uBACH;AACE,mCAAmBA,eAAc;AAGjC,uBAAO;AAAA,cACT;AAAA,cAEF,KAAK;AACH,iCAAiBA,eAAc;AAC/B,uBAAO;AAAA,cAET,KAAK;AACH,oBAAI,UAAUA,gBAAe,KAAK;AAClC,4BAAY,SAASA,eAAc;AACnC,uBAAO;AAAA,cAET,KAAK;AAAA,cACL,KAAK;AACH,+BAAeA,eAAc;AAC7B,uBAAO;AAAA,cAET,KAAK;AAEH,uBAAO;AAAA,cAET;AACE,uBAAO;AAAA,YACX;AAAA,UACF;AAEA,mBAAS,sBAAsBqB,UAAS,iBAAiBM,cAAa;AAKpE,2BAAe,eAAe;AAE9B,oBAAQ,gBAAgB,KAAK;AAAA,cAC3B,KAAK,gBACH;AACE,oBAAI,oBAAoB,gBAAgB,KAAK;AAE7C,oBAAI,sBAAsB,QAAQ,sBAAsB,QAAW;AACjE,6BAAW,eAAe;AAAA,gBAC5B;AAEA;AAAA,cACF;AAAA,cAEF,KAAK,UACH;AACE,oBAAIJ,QAAO,gBAAgB;AAC3B,iCAAiB,eAAe;AAChC,yCAAyB,eAAe;AACxC,4CAA4B;AAC5B;AAAA,cACF;AAAA,cAEF,KAAK,eACH;AACE,+BAAe,eAAe;AAC9B;AAAA,cACF;AAAA,cAEF,KAAK;AACH,iCAAiB,eAAe;AAChC;AAAA,cAEF,KAAK;AACH,mCAAmB,eAAe;AAClC;AAAA,cAEF,KAAK;AACH,mCAAmB,eAAe;AAClC;AAAA,cAEF,KAAK;AACH,oBAAI,UAAU,gBAAgB,KAAK;AACnC,4BAAY,SAAS,eAAe;AACpC;AAAA,cAEF,KAAK;AAAA,cACL,KAAK;AACH,+BAAe,eAAe;AAC9B;AAAA,YACJ;AAAA,UACF;AAEA,cAAI,4CAA4C;AAEhD;AACE,wDAA4C,oBAAI,IAAI;AAAA,UACtD;AAKA,cAAI,2BAA2B;AAC/B,cAAI,4BAA4B;AAChC,cAAI,kBAAkB,OAAO,YAAY,aAAa,UAAU;AAChE,cAAI,aAAa;AAEjB,cAAI,kBAAkB;AACtB,cAAI,iBAAiB;AACrB,mBAAS,yBAAyBJ,QAAO;AAMvC;AACE,oCAAsB,MAAM,WAAY;AACtC,sBAAMA;AAAA,cACR,CAAC;AACD,+BAAiB;AAAA,YACnB;AAAA,UACF;AAEA,cAAI,oCAAoC,SAAUE,UAAS,UAAU;AACnE,qBAAS,QAAQA,SAAQ;AACzB,qBAAS,QAAQA,SAAQ;AAEzB,gBAAKA,SAAQ,OAAO,aAAa;AAC/B,kBAAI;AACF,uCAAuB;AACvB,yBAAS,qBAAqB;AAAA,cAChC,UAAE;AACA,2CAA2BA,QAAO;AAAA,cACpC;AAAA,YACF,OAAO;AACL,uBAAS,qBAAqB;AAAA,YAChC;AAAA,UACF;AAGA,mBAAS,0CAA0CA,UAAS,wBAAwB;AAClF,gBAAI;AACF,wCAA0B,QAAQA,QAAO;AAAA,YAC3C,SAASF,QAAO;AACd,sCAAwBE,UAAS,wBAAwBF,MAAK;AAAA,YAChE;AAAA,UACF;AAGA,mBAAS,+BAA+BE,UAAS,wBAAwB,UAAU;AACjF,gBAAI;AACF,gDAAkCA,UAAS,QAAQ;AAAA,YACrD,SAASF,QAAO;AACd,sCAAwBE,UAAS,wBAAwBF,MAAK;AAAA,YAChE;AAAA,UACF;AAGA,mBAAS,4BAA4BE,UAAS,wBAAwB,UAAU;AAC9E,gBAAI;AACF,uBAAS,kBAAkB;AAAA,YAC7B,SAASF,QAAO;AACd,sCAAwBE,UAAS,wBAAwBF,MAAK;AAAA,YAChE;AAAA,UACF;AAGA,mBAAS,gBAAgBE,UAAS,wBAAwB;AACxD,gBAAI;AACF,8BAAgBA,QAAO;AAAA,YACzB,SAASF,QAAO;AACd,sCAAwBE,UAAS,wBAAwBF,MAAK;AAAA,YAChE;AAAA,UACF;AAEA,mBAAS,gBAAgBE,UAAS,wBAAwB;AACxD,gBAAI,MAAMA,SAAQ;AAElB,gBAAI,QAAQ,MAAM;AAChB,kBAAI,OAAO,QAAQ,YAAY;AAC7B,oBAAI;AAEJ,oBAAI;AACF,sBAAI,uBAAuB,6BAA6BA,SAAQ,OAAO,aAAa;AAClF,wBAAI;AACF,6CAAuB;AACvB,+BAAS,IAAI,IAAI;AAAA,oBACnB,UAAE;AACA,iDAA2BA,QAAO;AAAA,oBACpC;AAAA,kBACF,OAAO;AACL,6BAAS,IAAI,IAAI;AAAA,kBACnB;AAAA,gBACF,SAASF,QAAO;AACd,0CAAwBE,UAAS,wBAAwBF,MAAK;AAAA,gBAChE;AAEA;AACE,sBAAI,OAAO,WAAW,YAAY;AAChC,0BAAM,mGAAwG,0BAA0BE,QAAO,CAAC;AAAA,kBAClJ;AAAA,gBACF;AAAA,cACF,OAAO;AACL,oBAAI,UAAU;AAAA,cAChB;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,kBAAkBA,UAAS,wBAAwB,SAAS;AACnE,gBAAI;AACF,sBAAQ;AAAA,YACV,SAASF,QAAO;AACd,sCAAwBE,UAAS,wBAAwBF,MAAK;AAAA,YAChE;AAAA,UACF;AAEA,cAAI,wBAAwB;AAC5B,cAAI,oCAAoC;AACxC,mBAAS,4BAA4BI,OAAM,YAAY;AACrD,oCAAwB,iBAAiBA,MAAK,aAAa;AAC3D,yBAAa;AACb,8CAAkC;AAElC,gBAAI,aAAa;AACjB,gDAAoC;AACpC,oCAAwB;AACxB,mBAAO;AAAA,UACT;AAEA,mBAAS,oCAAoC;AAC3C,mBAAO,eAAe,MAAM;AAC1B,kBAAI,QAAQ;AAEZ,kBAAI,QAAQ,MAAM;AAElB,mBAAK,MAAM,eAAe,wBAAwB,WAAW,UAAU,MAAM;AAC3E,sBAAM,SAAS;AACf,6BAAa;AAAA,cACf,OAAO;AACL,qDAAqC;AAAA,cACvC;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,uCAAuC;AAC9C,mBAAO,eAAe,MAAM;AAC1B,kBAAI,QAAQ;AACZ,8BAAgB,KAAK;AAErB,kBAAI;AACF,mDAAmC,KAAK;AAAA,cAC1C,SAASJ,QAAO;AACd,wCAAwB,OAAO,MAAM,QAAQA,MAAK;AAAA,cACpD;AAEA,gCAAkB;AAClB,kBAAI,UAAU,MAAM;AAEpB,kBAAI,YAAY,MAAM;AACpB,wBAAQ,SAAS,MAAM;AACvB,6BAAa;AACb;AAAA,cACF;AAEA,2BAAa,MAAM;AAAA,YACrB;AAAA,UACF;AAEA,mBAAS,mCAAmC,cAAc;AACxD,gBAAIE,WAAU,aAAa;AAC3B,gBAAI,QAAQ,aAAa;AAEzB,iBAAK,QAAQ,cAAc,SAAS;AAClC,8BAAgB,YAAY;AAE5B,sBAAQ,aAAa,KAAK;AAAA,gBACxB,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK,qBACH;AACE;AAAA,gBACF;AAAA,gBAEF,KAAK,gBACH;AACE,sBAAIA,aAAY,MAAM;AACpB,wBAAI,YAAYA,SAAQ;AACxB,wBAAI,YAAYA,SAAQ;AACxB,wBAAI,WAAW,aAAa;AAI5B;AACE,0BAAI,aAAa,SAAS,aAAa,eAAe,CAAC,8BAA8B;AACnF,4BAAI,SAAS,UAAU,aAAa,eAAe;AACjD,gCAAM,0MAA8N,0BAA0B,YAAY,KAAK,UAAU;AAAA,wBAC3R;AAEA,4BAAI,SAAS,UAAU,aAAa,eAAe;AACjD,gCAAM,0MAA8N,0BAA0B,YAAY,KAAK,UAAU;AAAA,wBAC3R;AAAA,sBACF;AAAA,oBACF;AAEA,wBAAI,WAAW,SAAS,wBAAwB,aAAa,gBAAgB,aAAa,OAAO,YAAY,oBAAoB,aAAa,MAAM,SAAS,GAAG,SAAS;AAEzK;AACE,0BAAI,aAAa;AAEjB,0BAAI,aAAa,UAAa,CAAC,WAAW,IAAI,aAAa,IAAI,GAAG;AAChE,mCAAW,IAAI,aAAa,IAAI;AAEhC,8BAAM,2GAAgH,0BAA0B,YAAY,CAAC;AAAA,sBAC/J;AAAA,oBACF;AAEA,6BAAS,sCAAsC;AAAA,kBACjD;AAEA;AAAA,gBACF;AAAA,gBAEF,KAAK,UACH;AACE;AACE,wBAAIE,QAAO,aAAa;AACxB,mCAAeA,MAAK,aAAa;AAAA,kBACnC;AAEA;AAAA,gBACF;AAAA,gBAEF,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAEH;AAAA,gBAEF,SACE;AACE,wBAAM,IAAI,MAAM,0HAA+H;AAAA,gBACjJ;AAAA,cACJ;AAEA,gCAAkB;AAAA,YACpB;AAAA,UACF;AAEA,mBAAS,4BAA4B,OAAO,cAAc,wBAAwB;AAChF,gBAAI,cAAc,aAAa;AAC/B,gBAAI,aAAa,gBAAgB,OAAO,YAAY,aAAa;AAEjE,gBAAI,eAAe,MAAM;AACvB,kBAAI,cAAc,WAAW;AAC7B,kBAAI,SAAS;AAEb,iBAAG;AACD,qBAAK,OAAO,MAAM,WAAW,OAAO;AAElC,sBAAI,UAAU,OAAO;AACrB,yBAAO,UAAU;AAEjB,sBAAI,YAAY,QAAW;AACzB;AACE,2BAAK,QAAQ,eAAe,WAAW;AACrC,iEAAyC,YAAY;AAAA,sBACvD,YAAY,QAAQ,YAAY,WAAW;AACzC,gEAAwC,YAAY;AAAA,sBACtD;AAAA,oBACF;AAEA;AACE,2BAAK,QAAQkC,gBAAe,WAAW;AACrC,oDAA4B,IAAI;AAAA,sBAClC;AAAA,oBACF;AAEA,sCAAkB,cAAc,wBAAwB,OAAO;AAE/D;AACE,2BAAK,QAAQA,gBAAe,WAAW;AACrC,oDAA4B,KAAK;AAAA,sBACnC;AAAA,oBACF;AAEA;AACE,2BAAK,QAAQ,eAAe,WAAW;AACrC,iEAAyC;AAAA,sBAC3C,YAAY,QAAQ,YAAY,WAAW;AACzC,gEAAwC;AAAA,sBAC1C;AAAA,oBACF;AAAA,kBACF;AAAA,gBACF;AAEA,yBAAS,OAAO;AAAA,cAClB,SAAS,WAAW;AAAA,YACtB;AAAA,UACF;AAEA,mBAAS,0BAA0B,OAAO,cAAc;AACtD,gBAAI,cAAc,aAAa;AAC/B,gBAAI,aAAa,gBAAgB,OAAO,YAAY,aAAa;AAEjE,gBAAI,eAAe,MAAM;AACvB,kBAAI,cAAc,WAAW;AAC7B,kBAAI,SAAS;AAEb,iBAAG;AACD,qBAAK,OAAO,MAAM,WAAW,OAAO;AAClC;AACE,yBAAK,QAAQ,eAAe,WAAW;AACrC,6DAAuC,YAAY;AAAA,oBACrD,YAAY,QAAQ,YAAY,WAAW;AACzC,4DAAsC,YAAY;AAAA,oBACpD;AAAA,kBACF;AAGA,sBAAI,SAAS,OAAO;AAEpB;AACE,yBAAK,QAAQA,gBAAe,WAAW;AACrC,kDAA4B,IAAI;AAAA,oBAClC;AAAA,kBACF;AAEA,yBAAO,UAAU,OAAO;AAExB;AACE,yBAAK,QAAQA,gBAAe,WAAW;AACrC,kDAA4B,KAAK;AAAA,oBACnC;AAAA,kBACF;AAEA;AACE,yBAAK,QAAQ,eAAe,WAAW;AACrC,6DAAuC;AAAA,oBACzC,YAAY,QAAQ,YAAY,WAAW;AACzC,4DAAsC;AAAA,oBACxC;AAAA,kBACF;AAEA;AACE,wBAAI,UAAU,OAAO;AAErB,wBAAI,YAAY,UAAa,OAAO,YAAY,YAAY;AAC1D,0BAAI,WAAW;AAEf,2BAAK,OAAO,MAAM,YAAY,SAAS;AACrC,mCAAW;AAAA,sBACb,YAAY,OAAO,MAAMA,gBAAe,SAAS;AAC/C,mCAAW;AAAA,sBACb,OAAO;AACL,mCAAW;AAAA,sBACb;AAEA,0BAAI,WAAW;AAEf,0BAAI,YAAY,MAAM;AACpB,mCAAW;AAAA,sBACb,WAAW,OAAO,QAAQ,SAAS,YAAY;AAC7C,mCAAW,iCAAiC,WAAW,+HAAyI,WAAW;AAAA,sBAC7M,OAAO;AACL,mCAAW,oBAAoB;AAAA,sBACjC;AAEA,4BAAM,iFAAsF,UAAU,QAAQ;AAAA,oBAChH;AAAA,kBACF;AAAA,gBACF;AAEA,yBAAS,OAAO;AAAA,cAClB,SAAS,WAAW;AAAA,YACtB;AAAA,UACF;AAEA,mBAAS,6BAA6B,cAAc,cAAc;AAChE;AAEE,mBAAK,aAAa,QAAQ,YAAY,SAAS;AAC7C,wBAAQ,aAAa,KAAK;AAAA,kBACxB,KAAK,UACH;AACE,wBAAI,wBAAwB,aAAa,UAAU;AACnD,wBAAI,wBAAwB,aAAa,eACrCR,OAAK,sBAAsB,IAC3B,eAAe,sBAAsB;AAGzC,wBAAIe,cAAa,cAAc;AAC/B,wBAAI,QAAQ,aAAa,cAAc,OAAO,UAAU;AAExD;AACE,0BAAI,sBAAsB,GAAG;AAC3B,gCAAQ;AAAA,sBACV;AAAA,oBACF;AAEA,wBAAI,OAAO,iBAAiB,YAAY;AACtC,mCAAaf,MAAI,OAAO,uBAAuBe,WAAU;AAAA,oBAC3D;AAIA,wBAAI,cAAc,aAAa;AAE/B;AAAO,6BAAO,gBAAgB,MAAM;AAClC,gCAAQ,YAAY,KAAK;AAAA,0BACvB,KAAK;AACH,gCAAIzC,QAAO,YAAY;AACvB,4BAAAA,MAAK,yBAAyB;AAC9B,kCAAM;AAAA,0BAER,KAAK;AACH,gCAAI,kBAAkB,YAAY;AAClC,4CAAgB,yBAAyB;AACzC,kCAAM;AAAA,wBACV;AAEA,sCAAc,YAAY;AAAA,sBAC5B;AAEA;AAAA,kBACF;AAAA,gBACJ;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,0BAA0B,cAAcF,UAAS,cAAc,gBAAgB;AACtF,iBAAK,aAAa,QAAQ,gBAAgB,SAAS;AACjD,sBAAQ,aAAa,KAAK;AAAA,gBACxB,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK,qBACH;AACE,sBAAK,CAAC,2BAA2B;AAK/B,wBAAK,aAAa,OAAO,aAAa;AACpC,0BAAI;AACF,+CAAuB;AACvB,kDAA0B,SAAS,WAAW,YAAY;AAAA,sBAC5D,UAAE;AACA,mDAA2B,YAAY;AAAA,sBACzC;AAAA,oBACF,OAAO;AACL,gDAA0B,SAAS,WAAW,YAAY;AAAA,oBAC5D;AAAA,kBACF;AAEA;AAAA,gBACF;AAAA,gBAEF,KAAK,gBACH;AACE,sBAAI,WAAW,aAAa;AAE5B,sBAAI,aAAa,QAAQ,QAAQ;AAC/B,wBAAI,CAAC,2BAA2B;AAC9B,0BAAIA,aAAY,MAAM;AAIpB;AACE,8BAAI,aAAa,SAAS,aAAa,eAAe,CAAC,8BAA8B;AACnF,gCAAI,SAAS,UAAU,aAAa,eAAe;AACjD,oCAAM,oMAAwN,0BAA0B,YAAY,KAAK,UAAU;AAAA,4BACrR;AAEA,gCAAI,SAAS,UAAU,aAAa,eAAe;AACjD,oCAAM,oMAAwN,0BAA0B,YAAY,KAAK,UAAU;AAAA,4BACrR;AAAA,0BACF;AAAA,wBACF;AAEA,4BAAK,aAAa,OAAO,aAAa;AACpC,8BAAI;AACF,mDAAuB;AACvB,qCAAS,kBAAkB;AAAA,0BAC7B,UAAE;AACA,uDAA2B,YAAY;AAAA,0BACzC;AAAA,wBACF,OAAO;AACL,mCAAS,kBAAkB;AAAA,wBAC7B;AAAA,sBACF,OAAO;AACL,4BAAI,YAAY,aAAa,gBAAgB,aAAa,OAAOA,SAAQ,gBAAgB,oBAAoB,aAAa,MAAMA,SAAQ,aAAa;AACrJ,4BAAI,YAAYA,SAAQ;AAIxB;AACE,8BAAI,aAAa,SAAS,aAAa,eAAe,CAAC,8BAA8B;AACnF,gCAAI,SAAS,UAAU,aAAa,eAAe;AACjD,oCAAM,qMAAyN,0BAA0B,YAAY,KAAK,UAAU;AAAA,4BACtR;AAEA,gCAAI,SAAS,UAAU,aAAa,eAAe;AACjD,oCAAM,qMAAyN,0BAA0B,YAAY,KAAK,UAAU;AAAA,4BACtR;AAAA,0BACF;AAAA,wBACF;AAEA,4BAAK,aAAa,OAAO,aAAa;AACpC,8BAAI;AACF,mDAAuB;AACvB,qCAAS,mBAAmB,WAAW,WAAW,SAAS,mCAAmC;AAAA,0BAChG,UAAE;AACA,uDAA2B,YAAY;AAAA,0BACzC;AAAA,wBACF,OAAO;AACL,mCAAS,mBAAmB,WAAW,WAAW,SAAS,mCAAmC;AAAA,wBAChG;AAAA,sBACF;AAAA,oBACF;AAAA,kBACF;AAIA,sBAAI,cAAc,aAAa;AAE/B,sBAAI,gBAAgB,MAAM;AACxB;AACE,0BAAI,aAAa,SAAS,aAAa,eAAe,CAAC,8BAA8B;AACnF,4BAAI,SAAS,UAAU,aAAa,eAAe;AACjD,gCAAM,8MAAkO,0BAA0B,YAAY,KAAK,UAAU;AAAA,wBAC/R;AAEA,4BAAI,SAAS,UAAU,aAAa,eAAe;AACjD,gCAAM,8MAAkO,0BAA0B,YAAY,KAAK,UAAU;AAAA,wBAC/R;AAAA,sBACF;AAAA,oBACF;AAKA,sCAAkB,cAAc,aAAa,QAAQ;AAAA,kBACvD;AAEA;AAAA,gBACF;AAAA,gBAEF,KAAK,UACH;AAGE,sBAAI,eAAe,aAAa;AAEhC,sBAAI,iBAAiB,MAAM;AACzB,wBAAI,YAAY;AAEhB,wBAAI,aAAa,UAAU,MAAM;AAC/B,8BAAQ,aAAa,MAAM,KAAK;AAAA,wBAC9B,KAAK;AACH,sCAAY,kBAAkB,aAAa,MAAM,SAAS;AAC1D;AAAA,wBAEF,KAAK;AACH,sCAAY,aAAa,MAAM;AAC/B;AAAA,sBACJ;AAAA,oBACF;AAEA,sCAAkB,cAAc,cAAc,SAAS;AAAA,kBACzD;AAEA;AAAA,gBACF;AAAA,gBAEF,KAAK,eACH;AACE,sBAAI,aAAa,aAAa;AAK9B,sBAAIA,aAAY,QAAQ,aAAa,QAAQ,QAAQ;AACnD,wBAAI,OAAO,aAAa;AACxB,wBAAI,QAAQ,aAAa;AACzB,gCAAY,YAAY,MAAM,KAAK;AAAA,kBACrC;AAEA;AAAA,gBACF;AAAA,gBAEF,KAAK,UACH;AAEE;AAAA,gBACF;AAAA,gBAEF,KAAK,YACH;AAEE;AAAA,gBACF;AAAA,gBAEF,KAAK,UACH;AACE;AACE,wBAAI,yBAAyB,aAAa,eACtC,WAAW,uBAAuB,UAClC,WAAW,uBAAuB;AACtC,wBAAI,iBAAiB,aAAa,UAAU;AAC5C,wBAAI2C,cAAa,cAAc;AAC/B,wBAAI,QAAQ3C,aAAY,OAAO,UAAU;AAEzC;AACE,0BAAI,sBAAsB,GAAG;AAC3B,gCAAQ;AAAA,sBACV;AAAA,oBACF;AAEA,wBAAI,OAAO,aAAa,YAAY;AAClC,+BAAS,aAAa,cAAc,IAAI,OAAO,aAAa,gBAAgB,aAAa,kBAAkB,aAAa,iBAAiB2C,WAAU;AAAA,oBACrJ;AAEA;AACE,0BAAI,OAAO,aAAa,YAAY;AAClC,iCAAS,aAAa,cAAc,IAAI,OAAO,gBAAgBA,WAAU;AAAA,sBAC3E;AAKA,0DAAoC,YAAY;AAGhD,0BAAI,cAAc,aAAa;AAE/B;AAAO,+BAAO,gBAAgB,MAAM;AAClC,kCAAQ,YAAY,KAAK;AAAA,4BACvB,KAAK;AACH,kCAAIzC,QAAO,YAAY;AACvB,8BAAAA,MAAK,kBAAkB;AACvB,oCAAM;AAAA,4BAER,KAAK;AACH,kCAAI,kBAAkB,YAAY;AAClC,8CAAgB,kBAAkB;AAClC,oCAAM;AAAA,0BACV;AAEA,wCAAc,YAAY;AAAA,wBAC5B;AAAA,oBACF;AAAA,kBACF;AAEA;AAAA,gBACF;AAAA,gBAEF,KAAK,mBACH;AACE,mDAAiC,cAAc,YAAY;AAC3D;AAAA,gBACF;AAAA,gBAEF,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK,wBACH;AACE;AAAA,gBACF;AAAA,gBAEF;AACE,wBAAM,IAAI,MAAM,0HAA+H;AAAA,cACnJ;AAAA,YACF;AAEA,gBAAK,CAAC,2BAA2B;AAC/B;AACE,oBAAI,aAAa,QAAQ,KAAK;AAC5B,kCAAgB,YAAY;AAAA,gBAC9B;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,6BAA6BhC,OAAM;AAG1C,oBAAQA,MAAK,KAAK;AAAA,cAChB,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK,qBACH;AACE,oBAAKA,MAAK,OAAO,aAAa;AAC5B,sBAAI;AACF,2CAAuB;AACvB,8DAA0CA,OAAMA,MAAK,MAAM;AAAA,kBAC7D,UAAE;AACA,+CAA2BA,KAAI;AAAA,kBACjC;AAAA,gBACF,OAAO;AACL,4DAA0CA,OAAMA,MAAK,MAAM;AAAA,gBAC7D;AAEA;AAAA,cACF;AAAA,cAEF,KAAK,gBACH;AACE,oBAAI,WAAWA,MAAK;AAEpB,oBAAI,OAAO,SAAS,sBAAsB,YAAY;AACpD,8CAA4BA,OAAMA,MAAK,QAAQ,QAAQ;AAAA,gBACzD;AAEA,gCAAgBA,OAAMA,MAAK,MAAM;AACjC;AAAA,cACF;AAAA,cAEF,KAAK,eACH;AACE,gCAAgBA,OAAMA,MAAK,MAAM;AACjC;AAAA,cACF;AAAA,YACJ;AAAA,UACF;AAEA,mBAAS,wBAAwB,cAAc,UAAU;AAEvD,gBAAI,kBAAkB;AAEtB;AAGE,kBAAIA,QAAO;AAEX,qBAAO,MAAM;AACX,oBAAIA,MAAK,QAAQ,eAAe;AAC9B,sBAAI,oBAAoB,MAAM;AAC5B,sCAAkBA;AAElB,wBAAI;AACF,0BAAI,WAAWA,MAAK;AAEpB,0BAAI,UAAU;AACZ,qCAAa,QAAQ;AAAA,sBACvB,OAAO;AACL,uCAAeA,MAAK,WAAWA,MAAK,aAAa;AAAA,sBACnD;AAAA,oBACF,SAAS4B,QAAO;AACd,8CAAwB,cAAc,aAAa,QAAQA,MAAK;AAAA,oBAClE;AAAA,kBACF;AAAA,gBACF,WAAW5B,MAAK,QAAQ,UAAU;AAChC,sBAAI,oBAAoB,MAAM;AAC5B,wBAAI;AACF,0BAAI,aAAaA,MAAK;AAEtB,0BAAI,UAAU;AACZ,yCAAiB,UAAU;AAAA,sBAC7B,OAAO;AACL,2CAAmB,YAAYA,MAAK,aAAa;AAAA,sBACnD;AAAA,oBACF,SAAS4B,QAAO;AACd,8CAAwB,cAAc,aAAa,QAAQA,MAAK;AAAA,oBAClE;AAAA,kBACF;AAAA,gBACF,YAAY5B,MAAK,QAAQ,sBAAsBA,MAAK,QAAQ,0BAA0BA,MAAK,kBAAkB,QAAQA,UAAS;AAAc;AAAA,yBAAWA,MAAK,UAAU,MAAM;AAC1K,kBAAAA,MAAK,MAAM,SAASA;AACpB,kBAAAA,QAAOA,MAAK;AACZ;AAAA,gBACF;AAEA,oBAAIA,UAAS,cAAc;AACzB;AAAA,gBACF;AAEA,uBAAOA,MAAK,YAAY,MAAM;AAC5B,sBAAIA,MAAK,WAAW,QAAQA,MAAK,WAAW,cAAc;AACxD;AAAA,kBACF;AAEA,sBAAI,oBAAoBA,OAAM;AAC5B,sCAAkB;AAAA,kBACpB;AAEA,kBAAAA,QAAOA,MAAK;AAAA,gBACd;AAEA,oBAAI,oBAAoBA,OAAM;AAC5B,oCAAkB;AAAA,gBACpB;AAEA,gBAAAA,MAAK,QAAQ,SAASA,MAAK;AAC3B,gBAAAA,QAAOA,MAAK;AAAA,cACd;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,gBAAgB,cAAc;AACrC,gBAAI,MAAM,aAAa;AAEvB,gBAAI,QAAQ,MAAM;AAChB,kBAAI,WAAW,aAAa;AAC5B,kBAAI;AAEJ,sBAAQ,aAAa,KAAK;AAAA,gBACxB,KAAK;AACH,kCAAgB,kBAAkB,QAAQ;AAC1C;AAAA,gBAEF;AACE,kCAAgB;AAAA,cACpB;AAEA,kBAAI,OAAO,QAAQ,YAAY;AAC7B,oBAAI;AAEJ,oBAAK,aAAa,OAAO,aAAa;AACpC,sBAAI;AACF,2CAAuB;AACvB,6BAAS,IAAI,aAAa;AAAA,kBAC5B,UAAE;AACA,+CAA2B,YAAY;AAAA,kBACzC;AAAA,gBACF,OAAO;AACL,2BAAS,IAAI,aAAa;AAAA,gBAC5B;AAEA;AACE,sBAAI,OAAO,WAAW,YAAY;AAChC,0BAAM,mGAAwG,0BAA0B,YAAY,CAAC;AAAA,kBACvJ;AAAA,gBACF;AAAA,cACF,OAAO;AACL;AACE,sBAAI,CAAC,IAAI,eAAe,SAAS,GAAG;AAClC,0BAAM,iGAAsG,0BAA0B,YAAY,CAAC;AAAA,kBACrJ;AAAA,gBACF;AAEA,oBAAI,UAAU;AAAA,cAChB;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,oBAAoB,OAAO;AAiBlC,gBAAI,YAAY,MAAM;AAEtB,gBAAI,cAAc,MAAM;AACtB,wBAAU,SAAS;AAAA,YACrB;AAEA,kBAAM,SAAS;AAAA,UACjB;AAEA,mBAAS,wBAAwB,OAAO;AACtC,gBAAI,YAAY,MAAM;AAEtB,gBAAI,cAAc,MAAM;AACtB,oBAAM,YAAY;AAClB,sCAAwB,SAAS;AAAA,YACnC;AAIA;AAOE,oBAAM,QAAQ;AACd,oBAAM,YAAY;AAClB,oBAAM,UAAU;AAKhB,kBAAI,MAAM,QAAQ,eAAe;AAC/B,oBAAI,eAAe,MAAM;AAEzB,oBAAI,iBAAiB,MAAM;AACzB,wCAAsB,YAAY;AAAA,gBACpC;AAAA,cACF;AAEA,oBAAM,YAAY;AAMlB;AACE,sBAAM,cAAc;AAAA,cACtB;AAEA;AAQE,sBAAM,SAAS;AACf,sBAAM,eAAe;AACrB,sBAAM,gBAAgB;AACtB,sBAAM,gBAAgB;AACtB,sBAAM,eAAe;AACrB,sBAAM,YAAY;AAElB,sBAAM,cAAc;AAAA,cACtB;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,mBAAmB,OAAO;AACjC,gBAAI,SAAS,MAAM;AAEnB,mBAAO,WAAW,MAAM;AACtB,kBAAI,aAAa,MAAM,GAAG;AACxB,uBAAO;AAAA,cACT;AAEA,uBAAS,OAAO;AAAA,YAClB;AAEA,kBAAM,IAAI,MAAM,sGAA2G;AAAA,UAC7H;AAEA,mBAAS,aAAa,OAAO;AAC3B,mBAAO,MAAM,QAAQ,iBAAiB,MAAM,QAAQ,YAAY,MAAM,QAAQ;AAAA,UAChF;AAEA,mBAAS,eAAe,OAAO;AAK7B,gBAAIA,QAAO;AAEX;AAAU,qBAAO,MAAM;AAErB,uBAAOA,MAAK,YAAY,MAAM;AAC5B,sBAAIA,MAAK,WAAW,QAAQ,aAAaA,MAAK,MAAM,GAAG;AAGrD,2BAAO;AAAA,kBACT;AAEA,kBAAAA,QAAOA,MAAK;AAAA,gBACd;AAEA,gBAAAA,MAAK,QAAQ,SAASA,MAAK;AAC3B,gBAAAA,QAAOA,MAAK;AAEZ,uBAAOA,MAAK,QAAQ,iBAAiBA,MAAK,QAAQ,YAAYA,MAAK,QAAQ,oBAAoB;AAG7F,sBAAIA,MAAK,QAAQ,WAAW;AAE1B,6BAAS;AAAA,kBACX;AAIA,sBAAIA,MAAK,UAAU,QAAQA,MAAK,QAAQ,YAAY;AAClD,6BAAS;AAAA,kBACX,OAAO;AACL,oBAAAA,MAAK,MAAM,SAASA;AACpB,oBAAAA,QAAOA,MAAK;AAAA,kBACd;AAAA,gBACF;AAGA,oBAAI,EAAEA,MAAK,QAAQ,YAAY;AAE7B,yBAAOA,MAAK;AAAA,gBACd;AAAA,cACF;AAAA,UACF;AAEA,mBAAS,gBAAgB,cAAc;AAGrC,gBAAI,cAAc,mBAAmB,YAAY;AAEjD,oBAAQ,YAAY,KAAK;AAAA,cACvB,KAAK,eACH;AACE,oBAAI,SAAS,YAAY;AAEzB,oBAAI,YAAY,QAAQ,cAAc;AAEpC,mCAAiB,MAAM;AAEvB,8BAAY,SAAS,CAAC;AAAA,gBACxB;AAEA,oBAAI,SAAS,eAAe,YAAY;AAGxC,4CAA4B,cAAc,QAAQ,MAAM;AACxD;AAAA,cACF;AAAA,cAEF,KAAK;AAAA,cACL,KAAK,YACH;AACE,oBAAI,UAAU,YAAY,UAAU;AAEpC,oBAAI,UAAU,eAAe,YAAY;AAEzC,yDAAyC,cAAc,SAAS,OAAO;AACvE;AAAA,cACF;AAAA,cAGF;AACE,sBAAM,IAAI,MAAM,iGAAsG;AAAA,YAC1H;AAAA,UACF;AAEA,mBAAS,yCAAyCA,OAAM,QAAQ,QAAQ;AACtE,gBAAI,MAAMA,MAAK;AACf,gBAAI,SAAS,QAAQ,iBAAiB,QAAQ;AAE9C,gBAAI,QAAQ;AACV,kBAAI,YAAYA,MAAK;AAErB,kBAAI,QAAQ;AACV,wCAAwB,QAAQ,WAAW,MAAM;AAAA,cACnD,OAAO;AACL,uCAAuB,QAAQ,SAAS;AAAA,cAC1C;AAAA,YACF,WAAW,QAAQ;AAAY;AAAA,iBAAO;AACpC,kBAAI,QAAQA,MAAK;AAEjB,kBAAI,UAAU,MAAM;AAClB,yDAAyC,OAAO,QAAQ,MAAM;AAC9D,oBAAI,UAAU,MAAM;AAEpB,uBAAO,YAAY,MAAM;AACvB,2DAAyC,SAAS,QAAQ,MAAM;AAChE,4BAAU,QAAQ;AAAA,gBACpB;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,4BAA4BA,OAAM,QAAQ,QAAQ;AACzD,gBAAI,MAAMA,MAAK;AACf,gBAAI,SAAS,QAAQ,iBAAiB,QAAQ;AAE9C,gBAAI,QAAQ;AACV,kBAAI,YAAYA,MAAK;AAErB,kBAAI,QAAQ;AACV,6BAAa,QAAQ,WAAW,MAAM;AAAA,cACxC,OAAO;AACL,4BAAY,QAAQ,SAAS;AAAA,cAC/B;AAAA,YACF,WAAW,QAAQ;AAAY;AAAA,iBAAO;AACpC,kBAAI,QAAQA,MAAK;AAEjB,kBAAI,UAAU,MAAM;AAClB,4CAA4B,OAAO,QAAQ,MAAM;AACjD,oBAAI,UAAU,MAAM;AAEpB,uBAAO,YAAY,MAAM;AACvB,8CAA4B,SAAS,QAAQ,MAAM;AACnD,4BAAU,QAAQ;AAAA,gBACpB;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAMA,cAAI,aAAa;AACjB,cAAI,wBAAwB;AAE5B,mBAAS,sBAAsBgC,OAAM,aAAa,cAAc;AAC9D;AAgBE,kBAAI,SAAS;AAEb;AAAY,uBAAO,WAAW,MAAM;AAClC,0BAAQ,OAAO,KAAK;AAAA,oBAClB,KAAK,eACH;AACE,mCAAa,OAAO;AACpB,8CAAwB;AACxB,4BAAM;AAAA,oBACR;AAAA,oBAEF,KAAK,UACH;AACE,mCAAa,OAAO,UAAU;AAC9B,8CAAwB;AACxB,4BAAM;AAAA,oBACR;AAAA,oBAEF,KAAK,YACH;AACE,mCAAa,OAAO,UAAU;AAC9B,8CAAwB;AACxB,4BAAM;AAAA,oBACR;AAAA,kBACJ;AAEA,2BAAS,OAAO;AAAA,gBAClB;AAEA,kBAAI,eAAe,MAAM;AACvB,sBAAM,IAAI,MAAM,sGAA2G;AAAA,cAC7H;AAEA,2CAA6BA,OAAM,aAAa,YAAY;AAC5D,2BAAa;AACb,sCAAwB;AAAA,YAC1B;AAEA,gCAAoB,YAAY;AAAA,UAClC;AAEA,mBAAS,mCAAmC,cAAc,wBAAwB,QAAQ;AAExF,gBAAI,QAAQ,OAAO;AAEnB,mBAAO,UAAU,MAAM;AACrB,2CAA6B,cAAc,wBAAwB,KAAK;AACxE,sBAAQ,MAAM;AAAA,YAChB;AAAA,UACF;AAEA,mBAAS,6BAA6B,cAAc,wBAAwB,cAAc;AACxF,4BAAgB,YAAY;AAI5B,oBAAQ,aAAa,KAAK;AAAA,cACxB,KAAK,eACH;AACE,oBAAI,CAAC,2BAA2B;AAC9B,kCAAgB,cAAc,sBAAsB;AAAA,gBACtD;AAAA,cAEF;AAAA,cAGF,KAAK,UACH;AAIE;AACE,sBAAI,iBAAiB;AACrB,sBAAI,4BAA4B;AAChC,+BAAa;AACb,qDAAmC,cAAc,wBAAwB,YAAY;AACrF,+BAAa;AACb,0CAAwB;AAExB,sBAAI,eAAe,MAAM;AAGvB,wBAAI,uBAAuB;AACzB,+CAAyB,YAAY,aAAa,SAAS;AAAA,oBAC7D,OAAO;AACL,kCAAY,YAAY,aAAa,SAAS;AAAA,oBAChD;AAAA,kBACF;AAAA,gBACF;AAEA;AAAA,cACF;AAAA,cAEF,KAAK,oBACH;AAIE;AACE,sBAAI,eAAe,MAAM;AACvB,wBAAI,uBAAuB;AACzB,yDAAmC,YAAY,aAAa,SAAS;AAAA,oBACvE,OAAO;AACL,4CAAsB,YAAY,aAAa,SAAS;AAAA,oBAC1D;AAAA,kBACF;AAAA,gBACF;AAEA;AAAA,cACF;AAAA,cAEF,KAAK,YACH;AACE;AAEE,sBAAI,kBAAkB;AACtB,sBAAI,6BAA6B;AACjC,+BAAa,aAAa,UAAU;AACpC,0CAAwB;AACxB,qDAAmC,cAAc,wBAAwB,YAAY;AACrF,+BAAa;AACb,0CAAwB;AAAA,gBAC1B;AAEA;AAAA,cACF;AAAA,cAEF,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK,qBACH;AACE,oBAAI,CAAC,2BAA2B;AAC9B,sBAAI,cAAc,aAAa;AAE/B,sBAAI,gBAAgB,MAAM;AACxB,wBAAI,aAAa,YAAY;AAE7B,wBAAI,eAAe,MAAM;AACvB,0BAAI,cAAc,WAAW;AAC7B,0BAAI,SAAS;AAEb,yBAAG;AACD,4BAAI,UAAU,QACV,UAAU,QAAQ,SAClB,MAAM,QAAQ;AAElB,4BAAI,YAAY,QAAW;AACzB,+BAAK,MAAMkC,gBAAe,WAAW;AACnC,8CAAkB,cAAc,wBAAwB,OAAO;AAAA,0BACjE,YAAY,MAAM,YAAY,WAAW;AACvC;AACE,sEAAwC,YAAY;AAAA,4BACtD;AAEA,gCAAK,aAAa,OAAO,aAAa;AACpC,qDAAuB;AACvB,gDAAkB,cAAc,wBAAwB,OAAO;AAC/D,yDAA2B,YAAY;AAAA,4BACzC,OAAO;AACL,gDAAkB,cAAc,wBAAwB,OAAO;AAAA,4BACjE;AAEA;AACE,sEAAwC;AAAA,4BAC1C;AAAA,0BACF;AAAA,wBACF;AAEA,iCAAS,OAAO;AAAA,sBAClB,SAAS,WAAW;AAAA,oBACtB;AAAA,kBACF;AAAA,gBACF;AAEA,mDAAmC,cAAc,wBAAwB,YAAY;AACrF;AAAA,cACF;AAAA,cAEF,KAAK,gBACH;AACE,oBAAI,CAAC,2BAA2B;AAC9B,kCAAgB,cAAc,sBAAsB;AACpD,sBAAI,WAAW,aAAa;AAE5B,sBAAI,OAAO,SAAS,yBAAyB,YAAY;AACvD,mDAA+B,cAAc,wBAAwB,QAAQ;AAAA,kBAC/E;AAAA,gBACF;AAEA,mDAAmC,cAAc,wBAAwB,YAAY;AACrF;AAAA,cACF;AAAA,cAEF,KAAK,gBACH;AAEE,mDAAmC,cAAc,wBAAwB,YAAY;AACrF;AAAA,cACF;AAAA,cAEF,KAAK,oBACH;AACE;AAAA;AAAA,kBACC,aAAa,OAAO;AAAA,kBAAgB;AAUnC,sBAAI,gCAAgC;AACpC,8CAA4B,iCAAiC,aAAa,kBAAkB;AAC5F,qDAAmC,cAAc,wBAAwB,YAAY;AACrF,8CAA4B;AAAA,gBAC9B,OAAO;AACL,qDAAmC,cAAc,wBAAwB,YAAY;AAAA,gBACvF;AAEA;AAAA,cACF;AAAA,cAEF,SACE;AACE,mDAAmC,cAAc,wBAAwB,YAAY;AACrF;AAAA,cACF;AAAA,YACJ;AAAA,UACF;AAEA,mBAAS,uBAAuB,cAAc;AAE5C,gBAAI,WAAW,aAAa;AAAA,UAC9B;AAEA,mBAAS,iCAAiC,cAAc,cAAc;AAEpE,gBAAI,WAAW,aAAa;AAE5B,gBAAI,aAAa,MAAM;AACrB,kBAAIpC,WAAU,aAAa;AAE3B,kBAAIA,aAAY,MAAM;AACpB,oBAAI,YAAYA,SAAQ;AAExB,oBAAI,cAAc,MAAM;AACtB,sBAAI,mBAAmB,UAAU;AAEjC,sBAAI,qBAAqB,MAAM;AAC7B,mDAA+B,gBAAgB;AAAA,kBACjD;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,6BAA6B,cAAc;AAIlD,gBAAI,YAAY,aAAa;AAE7B,gBAAI,cAAc,MAAM;AACtB,2BAAa,cAAc;AAC3B,kBAAI,aAAa,aAAa;AAE9B,kBAAI,eAAe,MAAM;AACvB,6BAAa,aAAa,YAAY,IAAI,gBAAgB;AAAA,cAC5D;AAEA,wBAAU,QAAQ,SAAU,UAAU;AAEpC,oBAAI,QAAQ,qBAAqB,KAAK,MAAM,cAAc,QAAQ;AAElE,oBAAI,CAAC,WAAW,IAAI,QAAQ,GAAG;AAC7B,6BAAW,IAAI,QAAQ;AAEvB;AACE,wBAAI,mBAAmB;AACrB,0BAAI,oBAAoB,QAAQ,mBAAmB,MAAM;AAEvD,+CAAuB,gBAAgB,eAAe;AAAA,sBACxD,OAAO;AACL,8BAAM,MAAM,qEAAqE;AAAA,sBACnF;AAAA,oBACF;AAAA,kBACF;AAEA,2BAAS,KAAK,OAAO,KAAK;AAAA,gBAC5B;AAAA,cACF,CAAC;AAAA,YACH;AAAA,UACF;AACA,mBAAS,sBAAsBE,OAAM,cAAc,gBAAgB;AACjE,8BAAkB;AAClB,6BAAiBA;AACjB,4BAAgB,YAAY;AAC5B,yCAA6B,cAAcA,KAAI;AAC/C,4BAAgB,YAAY;AAC5B,8BAAkB;AAClB,6BAAiB;AAAA,UACnB;AAEA,mBAAS,mCAAmCA,OAAM,aAAa,OAAO;AAGpE,gBAAI,YAAY,YAAY;AAE5B,gBAAI,cAAc,MAAM;AACtB,uBAAS,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAK;AACzC,oBAAI,gBAAgB,UAAU,CAAC;AAE/B,oBAAI;AACF,wCAAsBA,OAAM,aAAa,aAAa;AAAA,gBACxD,SAASJ,QAAO;AACd,0CAAwB,eAAe,aAAaA,MAAK;AAAA,gBAC3D;AAAA,cACF;AAAA,YACF;AAEA,gBAAI,iBAAiB,gBAAgB;AAErC,gBAAI,YAAY,eAAe,cAAc;AAC3C,kBAAI,QAAQ,YAAY;AAExB,qBAAO,UAAU,MAAM;AACrB,gCAAgB,KAAK;AACrB,6CAA6B,OAAOI,KAAI;AACxC,wBAAQ,MAAM;AAAA,cAChB;AAAA,YACF;AAEA,4BAAgB,cAAc;AAAA,UAChC;AAEA,mBAAS,6BAA6B,cAAcA,OAAM,OAAO;AAC/D,gBAAIF,WAAU,aAAa;AAC3B,gBAAI,QAAQ,aAAa;AAIzB,oBAAQ,aAAa,KAAK;AAAA,cACxB,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK,qBACH;AACE,mDAAmCE,OAAM,YAAY;AACrD,4CAA4B,YAAY;AAExC,oBAAI,QAAQ,QAAQ;AAClB,sBAAI;AACF,gDAA4BkC,aAAY,WAAW,cAAc,aAAa,MAAM;AACpF,8CAA0BA,aAAY,WAAW,YAAY;AAAA,kBAC/D,SAAStC,QAAO;AACd,4CAAwB,cAAc,aAAa,QAAQA,MAAK;AAAA,kBAClE;AAOA,sBAAK,aAAa,OAAO,aAAa;AACpC,wBAAI;AACF,6CAAuB;AACvB,kDAA4B,SAAS,WAAW,cAAc,aAAa,MAAM;AAAA,oBACnF,SAASA,QAAO;AACd,8CAAwB,cAAc,aAAa,QAAQA,MAAK;AAAA,oBAClE;AAEA,+CAA2B,YAAY;AAAA,kBACzC,OAAO;AACL,wBAAI;AACF,kDAA4B,SAAS,WAAW,cAAc,aAAa,MAAM;AAAA,oBACnF,SAASA,QAAO;AACd,8CAAwB,cAAc,aAAa,QAAQA,MAAK;AAAA,oBAClE;AAAA,kBACF;AAAA,gBACF;AAEA;AAAA,cACF;AAAA,cAEF,KAAK,gBACH;AACE,mDAAmCI,OAAM,YAAY;AACrD,4CAA4B,YAAY;AAExC,oBAAI,QAAQ,KAAK;AACf,sBAAIF,aAAY,MAAM;AACpB,oCAAgBA,UAASA,SAAQ,MAAM;AAAA,kBACzC;AAAA,gBACF;AAEA;AAAA,cACF;AAAA,cAEF,KAAK,eACH;AACE,mDAAmCE,OAAM,YAAY;AACrD,4CAA4B,YAAY;AAExC,oBAAI,QAAQ,KAAK;AACf,sBAAIF,aAAY,MAAM;AACpB,oCAAgBA,UAASA,SAAQ,MAAM;AAAA,kBACzC;AAAA,gBACF;AAEA;AAOE,sBAAI,aAAa,QAAQ,cAAc;AACrC,wBAAI,WAAW,aAAa;AAE5B,wBAAI;AACF,uCAAiB,QAAQ;AAAA,oBAC3B,SAASF,QAAO;AACd,8CAAwB,cAAc,aAAa,QAAQA,MAAK;AAAA,oBAClE;AAAA,kBACF;AAEA,sBAAI,QAAQ,QAAQ;AAClB,wBAAI,aAAa,aAAa;AAE9B,wBAAI,cAAc,MAAM;AAEtB,0BAAI,WAAW,aAAa;AAI5B,0BAAI,WAAWE,aAAY,OAAOA,SAAQ,gBAAgB;AAC1D,0BAAI,OAAO,aAAa;AAExB,0BAAI,gBAAgB,aAAa;AACjC,mCAAa,cAAc;AAE3B,0BAAI,kBAAkB,MAAM;AAC1B,4BAAI;AACF,uCAAa,YAAY,eAAe,MAAM,UAAU,UAAU,YAAY;AAAA,wBAChF,SAASF,QAAO;AACd,kDAAwB,cAAc,aAAa,QAAQA,MAAK;AAAA,wBAClE;AAAA,sBACF;AAAA,oBACF;AAAA,kBACF;AAAA,gBACF;AAEA;AAAA,cACF;AAAA,cAEF,KAAK,UACH;AACE,mDAAmCI,OAAM,YAAY;AACrD,4CAA4B,YAAY;AAExC,oBAAI,QAAQ,QAAQ;AAClB;AACE,wBAAI,aAAa,cAAc,MAAM;AACnC,4BAAM,IAAI,MAAM,gHAAqH;AAAA,oBACvI;AAEA,wBAAI,eAAe,aAAa;AAChC,wBAAI,UAAU,aAAa;AAI3B,wBAAI,UAAUF,aAAY,OAAOA,SAAQ,gBAAgB;AAEzD,wBAAI;AACF,uCAAiB,cAAc,SAAS,OAAO;AAAA,oBACjD,SAASF,QAAO;AACd,8CAAwB,cAAc,aAAa,QAAQA,MAAK;AAAA,oBAClE;AAAA,kBACF;AAAA,gBACF;AAEA;AAAA,cACF;AAAA,cAEF,KAAK,UACH;AACE,mDAAmCI,OAAM,YAAY;AACrD,4CAA4B,YAAY;AAExC,oBAAI,QAAQ,QAAQ;AAClB;AACE,wBAAIF,aAAY,MAAM;AACpB,0BAAI,gBAAgBA,SAAQ;AAE5B,0BAAI,cAAc,cAAc;AAC9B,4BAAI;AACF,kDAAwBE,MAAK,aAAa;AAAA,wBAC5C,SAASJ,QAAO;AACd,kDAAwB,cAAc,aAAa,QAAQA,MAAK;AAAA,wBAClE;AAAA,sBACF;AAAA,oBACF;AAAA,kBACF;AAAA,gBACF;AAEA;AAAA,cACF;AAAA,cAEF,KAAK,YACH;AACE,mDAAmCI,OAAM,YAAY;AACrD,4CAA4B,YAAY;AAExC;AAAA,cACF;AAAA,cAEF,KAAK,mBACH;AACE,mDAAmCA,OAAM,YAAY;AACrD,4CAA4B,YAAY;AACxC,oBAAI,iBAAiB,aAAa;AAElC,oBAAI,eAAe,QAAQ,YAAY;AACrC,sBAAI,oBAAoB,eAAe;AACvC,sBAAI,WAAW,eAAe;AAC9B,sBAAI,WAAW,aAAa;AAG5B,oCAAkB,WAAW;AAE7B,sBAAI,UAAU;AACZ,wBAAI,YAAY,eAAe,cAAc,QAAQ,eAAe,UAAU,kBAAkB;AAEhG,wBAAI,CAAC,WAAW;AAEd,+CAAyB;AAAA,oBAC3B;AAAA,kBACF;AAAA,gBACF;AAEA,oBAAI,QAAQ,QAAQ;AAClB,sBAAI;AACF,2CAAuB,YAAY;AAAA,kBACrC,SAASJ,QAAO;AACd,4CAAwB,cAAc,aAAa,QAAQA,MAAK;AAAA,kBAClE;AAEA,+CAA6B,YAAY;AAAA,gBAC3C;AAEA;AAAA,cACF;AAAA,cAEF,KAAK,oBACH;AACE,oBAAI,aAAaE,aAAY,QAAQA,SAAQ,kBAAkB;AAE/D;AAAA;AAAA,kBACC,aAAa,OAAO;AAAA,kBAAgB;AAInC,sBAAI,gCAAgC;AACpC,8CAA4B,iCAAiC;AAC7D,qDAAmCE,OAAM,YAAY;AACrD,8CAA4B;AAAA,gBAC9B,OAAO;AACL,qDAAmCA,OAAM,YAAY;AAAA,gBACvD;AAEA,4CAA4B,YAAY;AAExC,oBAAI,QAAQ,YAAY;AACtB,sBAAI,qBAAqB,aAAa;AACtC,sBAAI,YAAY,aAAa;AAE7B,sBAAI,YAAY,cAAc;AAE9B,sBAAI,oBAAoB;AAGxB,qCAAmB,WAAW;AAE9B;AACE,wBAAI,WAAW;AACb,0BAAI,CAAC,YAAY;AACf,6BAAK,kBAAkB,OAAO,oBAAoB,QAAQ;AACxD,uCAAa;AACb,8BAAI,iBAAiB,kBAAkB;AAEvC,iCAAO,mBAAmB,MAAM;AAC9B,yCAAa;AACb,yDAA6B,cAAc;AAC3C,6CAAiB,eAAe;AAAA,0BAClC;AAAA,wBACF;AAAA,sBACF;AAAA,oBACF;AAAA,kBACF;AAEA;AAGE,4CAAwB,mBAAmB,SAAS;AAAA,kBACtD;AAAA,gBACF;AAEA;AAAA,cACF;AAAA,cAEF,KAAK,uBACH;AACE,mDAAmCA,OAAM,YAAY;AACrD,4CAA4B,YAAY;AAExC,oBAAI,QAAQ,QAAQ;AAClB,+CAA6B,YAAY;AAAA,gBAC3C;AAEA;AAAA,cACF;AAAA,cAEF,KAAK,gBACH;AAEE;AAAA,cACF;AAAA,cAEF,SACE;AACE,mDAAmCA,OAAM,YAAY;AACrD,4CAA4B,YAAY;AACxC;AAAA,cACF;AAAA,YACJ;AAAA,UACF;AAEA,mBAAS,4BAA4B,cAAc;AAIjD,gBAAI,QAAQ,aAAa;AAEzB,gBAAI,QAAQ,WAAW;AACrB,kBAAI;AACF,gCAAgB,YAAY;AAAA,cAC9B,SAASJ,QAAO;AACd,wCAAwB,cAAc,aAAa,QAAQA,MAAK;AAAA,cAClE;AAMA,2BAAa,SAAS,CAAC;AAAA,YACzB;AAEA,gBAAI,QAAQ,WAAW;AACrB,2BAAa,SAAS,CAAC;AAAA,YACzB;AAAA,UACF;AAEA,mBAAS,oBAAoB,cAAcI,OAAM,gBAAgB;AAC/D,8BAAkB;AAClB,6BAAiBA;AACjB,yBAAa;AACb,sCAA0B,cAAcA,OAAM,cAAc;AAC5D,8BAAkB;AAClB,6BAAiB;AAAA,UACnB;AAEA,mBAAS,0BAA0B,aAAaA,OAAM,gBAAgB;AAEpE,gBAAI,gBAAgB,YAAY,OAAO,oBAAoB;AAE3D,mBAAO,eAAe,MAAM;AAC1B,kBAAI,QAAQ;AACZ,kBAAI,aAAa,MAAM;AAEvB,kBAAK,MAAM,QAAQ,sBAAsB,cAAc;AAErD,oBAAI,WAAW,MAAM,kBAAkB;AACvC,oBAAI,8BAA8B,YAAY;AAE9C,oBAAI,6BAA6B;AAE/B,oDAAkC,aAAaA,OAAM,cAAc;AACnE;AAAA,gBACF,OAAO;AAEL,sBAAIF,WAAU,MAAM;AACpB,sBAAI,YAAYA,aAAY,QAAQA,SAAQ,kBAAkB;AAC9D,sBAAI,+BAA+B,aAAa;AAChD,sBAAI,+BAA+B;AACnC,sBAAI,gCAAgC;AAEpC,6CAA2B;AAC3B,8CAA4B;AAE5B,sBAAI,6BAA6B,CAAC,+BAA+B;AAG/D,iCAAa;AACb,gDAA4B,KAAK;AAAA,kBACnC;AAEA,sBAAI,QAAQ;AAEZ,yBAAO,UAAU,MAAM;AACrB,iCAAa;AACb;AAAA,sBAA0B;AAAA;AAAA,sBAC1BE;AAAA,sBAAM;AAAA,oBAAc;AACpB,4BAAQ,MAAM;AAAA,kBAChB;AAGA,+BAAa;AACb,6CAA2B;AAC3B,8CAA4B;AAC5B,oDAAkC,aAAaA,OAAM,cAAc;AACnE;AAAA,gBACF;AAAA,cACF;AAEA,mBAAK,MAAM,eAAe,gBAAgB,WAAW,eAAe,MAAM;AACxE,2BAAW,SAAS;AACpB,6BAAa;AAAA,cACf,OAAO;AACL,kDAAkC,aAAaA,OAAM,cAAc;AAAA,cACrE;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,kCAAkC,aAAaA,OAAM,gBAAgB;AAC5E,mBAAO,eAAe,MAAM;AAC1B,kBAAI,QAAQ;AAEZ,mBAAK,MAAM,QAAQ,gBAAgB,SAAS;AAC1C,oBAAIF,WAAU,MAAM;AACpB,gCAAgB,KAAK;AAErB,oBAAI;AACF,4CAA0BE,OAAMF,UAAS,OAAO,cAAc;AAAA,gBAChE,SAASF,QAAO;AACd,0CAAwB,OAAO,MAAM,QAAQA,MAAK;AAAA,gBACpD;AAEA,kCAAkB;AAAA,cACpB;AAEA,kBAAI,UAAU,aAAa;AACzB,6BAAa;AACb;AAAA,cACF;AAEA,kBAAI,UAAU,MAAM;AAEpB,kBAAI,YAAY,MAAM;AACpB,wBAAQ,SAAS,MAAM;AACvB,6BAAa;AACb;AAAA,cACF;AAEA,2BAAa,MAAM;AAAA,YACrB;AAAA,UACF;AAEA,mBAAS,6BAA6B,aAAa;AACjD,mBAAO,eAAe,MAAM;AAC1B,kBAAI,QAAQ;AACZ,kBAAI,aAAa,MAAM;AAEvB,sBAAQ,MAAM,KAAK;AAAA,gBACjB,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK,qBACH;AACE,sBAAK,MAAM,OAAO,aAAa;AAC7B,wBAAI;AACF,6CAAuB;AACvB,kDAA4B,QAAQ,OAAO,MAAM,MAAM;AAAA,oBACzD,UAAE;AACA,iDAA2B,KAAK;AAAA,oBAClC;AAAA,kBACF,OAAO;AACL,gDAA4B,QAAQ,OAAO,MAAM,MAAM;AAAA,kBACzD;AAEA;AAAA,gBACF;AAAA,gBAEF,KAAK,gBACH;AAEE,kCAAgB,OAAO,MAAM,MAAM;AACnC,sBAAI,WAAW,MAAM;AAErB,sBAAI,OAAO,SAAS,yBAAyB,YAAY;AACvD,mDAA+B,OAAO,MAAM,QAAQ,QAAQ;AAAA,kBAC9D;AAEA;AAAA,gBACF;AAAA,gBAEF,KAAK,eACH;AACE,kCAAgB,OAAO,MAAM,MAAM;AACnC;AAAA,gBACF;AAAA,gBAEF,KAAK,oBACH;AAEE,sBAAI,WAAW,MAAM,kBAAkB;AAEvC,sBAAI,UAAU;AAGZ,oDAAgC,WAAW;AAC3C;AAAA,kBACF;AAEA;AAAA,gBACF;AAAA,cACJ;AAGA,kBAAI,eAAe,MAAM;AACvB,2BAAW,SAAS;AACpB,6BAAa;AAAA,cACf,OAAO;AACL,gDAAgC,WAAW;AAAA,cAC7C;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,gCAAgC,aAAa;AACpD,mBAAO,eAAe,MAAM;AAC1B,kBAAI,QAAQ;AAEZ,kBAAI,UAAU,aAAa;AACzB,6BAAa;AACb;AAAA,cACF;AAEA,kBAAI,UAAU,MAAM;AAEpB,kBAAI,YAAY,MAAM;AACpB,wBAAQ,SAAS,MAAM;AACvB,6BAAa;AACb;AAAA,cACF;AAEA,2BAAa,MAAM;AAAA,YACrB;AAAA,UACF;AAEA,mBAAS,4BAA4B,aAAa;AAChD,mBAAO,eAAe,MAAM;AAC1B,kBAAI,QAAQ;AACZ,kBAAI,aAAa,MAAM;AAEvB,kBAAI,MAAM,QAAQ,oBAAoB;AACpC,oBAAI,WAAW,MAAM,kBAAkB;AAEvC,oBAAI,UAAU;AAEZ,iDAA+B,WAAW;AAC1C;AAAA,gBACF;AAAA,cACF;AAGA,kBAAI,eAAe,MAAM;AAGvB,2BAAW,SAAS;AACpB,6BAAa;AAAA,cACf,OAAO;AACL,+CAA+B,WAAW;AAAA,cAC5C;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,+BAA+B,aAAa;AACnD,mBAAO,eAAe,MAAM;AAC1B,kBAAI,QAAQ;AAEZ,8BAAgB,KAAK;AAErB,kBAAI;AACF,6CAA6B,KAAK;AAAA,cACpC,SAASA,QAAO;AACd,wCAAwB,OAAO,MAAM,QAAQA,MAAK;AAAA,cACpD;AAEA,gCAAkB;AAElB,kBAAI,UAAU,aAAa;AACzB,6BAAa;AACb;AAAA,cACF;AAEA,kBAAI,UAAU,MAAM;AAEpB,kBAAI,YAAY,MAAM;AAGpB,wBAAQ,SAAS,MAAM;AACvB,6BAAa;AACb;AAAA,cACF;AAEA,2BAAa,MAAM;AAAA,YACrB;AAAA,UACF;AAEA,mBAAS,0BAA0BI,OAAM,cAAc,gBAAgB,sBAAsB;AAC3F,yBAAa;AACb,4CAAgC,cAAcA,OAAM,gBAAgB,oBAAoB;AAAA,UAC1F;AAEA,mBAAS,gCAAgC,aAAaA,OAAM,gBAAgB,sBAAsB;AAChG,mBAAO,eAAe,MAAM;AAC1B,kBAAI,QAAQ;AACZ,kBAAI,aAAa,MAAM;AAEvB,mBAAK,MAAM,eAAe,iBAAiB,WAAW,eAAe,MAAM;AACzE,2BAAW,SAAS;AACpB,6BAAa;AAAA,cACf,OAAO;AACL,mDAAmC,aAAaA,OAAM,gBAAgB,oBAAoB;AAAA,cAC5F;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,mCAAmC,aAAaA,OAAM,gBAAgB,sBAAsB;AACnG,mBAAO,eAAe,MAAM;AAC1B,kBAAI,QAAQ;AAEZ,mBAAK,MAAM,QAAQ,aAAa,SAAS;AACvC,gCAAgB,KAAK;AAErB,oBAAI;AACF,4CAA0BA,OAAM,OAAO,gBAAgB,oBAAoB;AAAA,gBAC7E,SAASJ,QAAO;AACd,0CAAwB,OAAO,MAAM,QAAQA,MAAK;AAAA,gBACpD;AAEA,kCAAkB;AAAA,cACpB;AAEA,kBAAI,UAAU,aAAa;AACzB,6BAAa;AACb;AAAA,cACF;AAEA,kBAAI,UAAU,MAAM;AAEpB,kBAAI,YAAY,MAAM;AACpB,wBAAQ,SAAS,MAAM;AACvB,6BAAa;AACb;AAAA,cACF;AAEA,2BAAa,MAAM;AAAA,YACrB;AAAA,UACF;AAEA,mBAAS,0BAA0B,cAAc,cAAc,gBAAgB,sBAAsB;AACnG,oBAAQ,aAAa,KAAK;AAAA,cACxB,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK,qBACH;AACE,oBAAK,aAAa,OAAO,aAAa;AACpC,0CAAwB;AAExB,sBAAI;AACF,8CAA0B,YAAY,WAAW,YAAY;AAAA,kBAC/D,UAAE;AACA,gDAA4B,YAAY;AAAA,kBAC1C;AAAA,gBACF,OAAO;AACL,4CAA0B,YAAY,WAAW,YAAY;AAAA,gBAC/D;AAEA;AAAA,cACF;AAAA,YACJ;AAAA,UACF;AAEA,mBAAS,4BAA4B,YAAY;AAC/C,yBAAa;AACb,8CAAkC;AAAA,UACpC;AAEA,mBAAS,oCAAoC;AAC3C,mBAAO,eAAe,MAAM;AAC1B,kBAAI,QAAQ;AACZ,kBAAI,QAAQ,MAAM;AAElB,mBAAK,WAAW,QAAQ,mBAAmB,SAAS;AAClD,oBAAI,YAAY,MAAM;AAEtB,oBAAI,cAAc,MAAM;AACtB,2BAAS,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAK;AACzC,wBAAI,gBAAgB,UAAU,CAAC;AAC/B,iCAAa;AACb,yEAAqD,eAAe,KAAK;AAAA,kBAC3E;AAEA;AAYE,wBAAI,gBAAgB,MAAM;AAE1B,wBAAI,kBAAkB,MAAM;AAC1B,0BAAI,gBAAgB,cAAc;AAElC,0BAAI,kBAAkB,MAAM;AAC1B,sCAAc,QAAQ;AAEtB,2BAAG;AACD,8BAAI,kBAAkB,cAAc;AACpC,wCAAc,UAAU;AACxB,0CAAgB;AAAA,wBAClB,SAAS,kBAAkB;AAAA,sBAC7B;AAAA,oBACF;AAAA,kBACF;AAEA,+BAAa;AAAA,gBACf;AAAA,cACF;AAEA,mBAAK,MAAM,eAAe,iBAAiB,WAAW,UAAU,MAAM;AACpE,sBAAM,SAAS;AACf,6BAAa;AAAA,cACf,OAAO;AACL,qDAAqC;AAAA,cACvC;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,uCAAuC;AAC9C,mBAAO,eAAe,MAAM;AAC1B,kBAAI,QAAQ;AAEZ,mBAAK,MAAM,QAAQ,aAAa,SAAS;AACvC,gCAAgB,KAAK;AACrB,4CAA4B,KAAK;AACjC,kCAAkB;AAAA,cACpB;AAEA,kBAAI,UAAU,MAAM;AAEpB,kBAAI,YAAY,MAAM;AACpB,wBAAQ,SAAS,MAAM;AACvB,6BAAa;AACb;AAAA,cACF;AAEA,2BAAa,MAAM;AAAA,YACrB;AAAA,UACF;AAEA,mBAAS,4BAA4B,cAAc;AACjD,oBAAQ,aAAa,KAAK;AAAA,cACxB,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK,qBACH;AACE,oBAAK,aAAa,OAAO,aAAa;AACpC,0CAAwB;AACxB,8CAA4B,YAAY,WAAW,cAAc,aAAa,MAAM;AACpF,8CAA4B,YAAY;AAAA,gBAC1C,OAAO;AACL,8CAA4B,YAAY,WAAW,cAAc,aAAa,MAAM;AAAA,gBACtF;AAEA;AAAA,cACF;AAAA,YACJ;AAAA,UACF;AAEA,mBAAS,qDAAqD,oBAAoB,wBAAwB;AACxG,mBAAO,eAAe,MAAM;AAC1B,kBAAI,QAAQ;AAGZ,8BAAgB,KAAK;AACrB,2DAA6C,OAAO,sBAAsB;AAC1E,gCAAkB;AAClB,kBAAI,QAAQ,MAAM;AAGlB,kBAAI,UAAU,MAAM;AAClB,sBAAM,SAAS;AACf,6BAAa;AAAA,cACf,OAAO;AACL,wEAAwD,kBAAkB;AAAA,cAC5E;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,wDAAwD,oBAAoB;AACnF,mBAAO,eAAe,MAAM;AAC1B,kBAAI,QAAQ;AACZ,kBAAI,UAAU,MAAM;AACpB,kBAAI,cAAc,MAAM;AAExB;AAIE,wCAAwB,KAAK;AAE7B,oBAAI,UAAU,oBAAoB;AAChC,+BAAa;AACb;AAAA,gBACF;AAAA,cACF;AAEA,kBAAI,YAAY,MAAM;AACpB,wBAAQ,SAAS;AACjB,6BAAa;AACb;AAAA,cACF;AAEA,2BAAa;AAAA,YACf;AAAA,UACF;AAEA,mBAAS,6CAA6CE,UAAS,wBAAwB;AACrF,oBAAQA,SAAQ,KAAK;AAAA,cACnB,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK,qBACH;AACE,oBAAKA,SAAQ,OAAO,aAAa;AAC/B,0CAAwB;AACxB,8CAA4B,WAAWA,UAAS,sBAAsB;AACtE,8CAA4BA,QAAO;AAAA,gBACrC,OAAO;AACL,8CAA4B,WAAWA,UAAS,sBAAsB;AAAA,gBACxE;AAEA;AAAA,cACF;AAAA,YACJ;AAAA,UACF;AAGA,mBAAS,6BAA6B,OAAO;AAC3C;AAGE,sBAAQ,MAAM,KAAK;AAAA,gBACjB,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK,qBACH;AACE,sBAAI;AACF,8CAA0B,SAAS,WAAW,KAAK;AAAA,kBACrD,SAASF,QAAO;AACd,4CAAwB,OAAO,MAAM,QAAQA,MAAK;AAAA,kBACpD;AAEA;AAAA,gBACF;AAAA,gBAEF,KAAK,gBACH;AACE,sBAAI,WAAW,MAAM;AAErB,sBAAI;AACF,6BAAS,kBAAkB;AAAA,kBAC7B,SAASA,QAAO;AACd,4CAAwB,OAAO,MAAM,QAAQA,MAAK;AAAA,kBACpD;AAEA;AAAA,gBACF;AAAA,cACJ;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,8BAA8B,OAAO;AAC5C;AAGE,sBAAQ,MAAM,KAAK;AAAA,gBACjB,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK,qBACH;AACE,sBAAI;AACF,8CAA0B,YAAY,WAAW,KAAK;AAAA,kBACxD,SAASA,QAAO;AACd,4CAAwB,OAAO,MAAM,QAAQA,MAAK;AAAA,kBACpD;AAEA;AAAA,gBACF;AAAA,cACJ;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,+BAA+B,OAAO;AAC7C;AAGE,sBAAQ,MAAM,KAAK;AAAA,gBACjB,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK,qBACH;AACE,sBAAI;AACF,gDAA4B,SAAS,WAAW,OAAO,MAAM,MAAM;AAAA,kBACrE,SAASA,QAAO;AACd,4CAAwB,OAAO,MAAM,QAAQA,MAAK;AAAA,kBACpD;AAEA;AAAA,gBACF;AAAA,gBAEF,KAAK,gBACH;AACE,sBAAI,WAAW,MAAM;AAErB,sBAAI,OAAO,SAAS,yBAAyB,YAAY;AACvD,mDAA+B,OAAO,MAAM,QAAQ,QAAQ;AAAA,kBAC9D;AAEA;AAAA,gBACF;AAAA,cACJ;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,gCAAgC,OAAO;AAC9C;AAGE,sBAAQ,MAAM,KAAK;AAAA,gBACjB,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK,qBACH;AACE,sBAAI;AACF,gDAA4B,YAAY,WAAW,OAAO,MAAM,MAAM;AAAA,kBACxE,SAASA,QAAO;AACd,4CAAwB,OAAO,MAAM,QAAQA,MAAK;AAAA,kBACpD;AAAA,gBACF;AAAA,cACJ;AAAA,YACF;AAAA,UACF;AAEA,cAAI,iBAAiB;AACrB,cAAI,wBAAwB;AAC5B,cAAI,YAAY;AAChB,cAAI,iBAAiB;AACrB,cAAI,YAAY;AAEhB,cAAI,OAAO,WAAW,cAAc,OAAO,KAAK;AAC9C,gBAAI,YAAY,OAAO;AACvB,6BAAiB,UAAU,oBAAoB;AAC/C,oCAAwB,UAAU,2BAA2B;AAC7D,wBAAY,UAAU,eAAe;AACrC,6BAAiB,UAAU,kBAAkB;AAC7C,wBAAY,UAAU,eAAe;AAAA,UACvC;AACA,cAAI,cAAc,CAAC;AACnB,mBAAS,iBAAiB;AACxB;AACE,0BAAY,QAAQ,SAAU,YAAY;AACxC,uBAAO,WAAW;AAAA,cACpB,CAAC;AAAA,YACH;AAAA,UACF;AAEA,cAAI,uBAAuB,qBAAqB;AAChD,mBAAS,uBAAuB,OAAO;AACrC;AAKE,kBAAI;AAAA;AAAA,gBACJ,OAAO,6BAA6B,cAAc,2BAA2B;AAAA;AAE7E,kBAAI,gBAAgB,OAAO,SAAS;AACpC,qBAAQ,iBAAiB,gCAAgC;AAAA,YAC3D;AAAA,UACF;AACA,mBAAS,6BAA6B;AACpC;AACE,kBAAI;AAAA;AAAA,gBACJ,OAAO,6BAA6B,cAAc,2BAA2B;AAAA;AAE7E,kBAAI,CAAC,+BAA+B,qBAAqB,YAAY,MAAM;AAEzE,sBAAM,uEAA4E;AAAA,cACpF;AAEA,qBAAO;AAAA,YACT;AAAA,UACF;AAEA,cAAI,OAAO,KAAK;AAChB,cAAI,2BAA2B,qBAAqB,wBAChD,sBAAsB,qBAAqB,mBAC3C,4BAA4B,qBAAqB,yBACjD,yBAAyB,qBAAqB;AAClD,cAAI;AAAA;AAAA,YAEJ;AAAA;AACA,cAAI;AAAA;AAAA,YAEJ;AAAA;AACA,cAAI;AAAA;AAAA,YAEJ;AAAA;AACA,cAAI;AAAA;AAAA,YAEJ;AAAA;AACA,cAAI,iBAAiB;AACrB,cAAI,mBAAmB;AACvB,cAAI,cAAc;AAClB,cAAI,gBAAgB;AACpB,cAAI,yBAAyB;AAC7B,cAAI,gBAAgB;AACpB,cAAI,qBAAqB;AAEzB,cAAI,mBAAmB;AAEvB,cAAI,qBAAqB;AAEzB,cAAI,iBAAiB;AAErB,cAAI,gCAAgC;AASpC,cAAI,qBAAqB;AACzB,cAAI,2BAA2B,aAAa,OAAO;AAEnD,cAAI,+BAA+B;AAEnC,cAAI,+BAA+B;AAKnC,cAAI,kCAAkC;AAGtC,cAAI,iCAAiC;AAErC,cAAI,4CAA4C;AAEhD,cAAI,gCAAgC;AAEpC,cAAI,qCAAqC;AAGzC,cAAI,sCAAsC;AAG1C,cAAI,+BAA+B;AACnC,cAAI,uBAAuB;AAG3B,cAAI,qCAAqC;AAGzC,cAAI,oBAAoB;AACxB,cAAI,4BAA4B;AAEhC,mBAAS,mBAAmB;AAC1B,iDAAqCG,KAAI,IAAI;AAAA,UAC/C;AAEA,mBAAS,sBAAsB;AAC7B,mBAAO;AAAA,UACT;AACA,cAAI,mBAAmB;AACvB,cAAI,qBAAqB;AACzB,cAAI,yCAAyC;AAC7C,cAAI,6BAA6B;AACjC,cAAI,gCAAgC;AACpC,cAAI,6BAA6B;AACjC,cAAI,gCAAgC,CAAC;AACrC,cAAI,4BAA4B;AAEhC,cAAI,sBAAsB;AAC1B,cAAI,oBAAoB;AACxB,cAAI,wBAAwB;AAC5B,cAAI,2BAA2B;AAC/B,cAAI,wCAAwC;AAC5C,cAAI,8BAA8B;AAClC,cAAI,2BAA2B;AAC/B,cAAI,+BAA+B;AAInC,cAAI,mBAAmB;AACvB,cAAI,6BAA6B;AACjC,cAAI,2BAA2B;AAC/B,mBAAS,wBAAwB;AAC/B,mBAAO;AAAA,UACT;AACA,mBAAS,mBAAmB;AAC1B,iBAAK,oBAAoB,gBAAgB,oBAAoB,WAAW;AAEtE,qBAAOA,KAAI;AAAA,YACb;AAGA,gBAAI,qBAAqB,aAAa;AAEpC,qBAAO;AAAA,YACT;AAGA,+BAAmBA,KAAI;AACvB,mBAAO;AAAA,UACT;AACA,mBAAS,kBAAkB,OAAO;AAEhC,gBAAI,OAAO,MAAM;AAEjB,iBAAK,OAAO,oBAAoB,QAAQ;AACtC,qBAAO;AAAA,YACT,YAAa,mBAAmB,mBAAmB,aAAa,kCAAkC,SAAS;AAUzG,qBAAO,kBAAkB,6BAA6B;AAAA,YACxD;AAEA,gBAAI,eAAe,yBAAyB,MAAM;AAElD,gBAAI,cAAc;AAChB,kBAAK,0BAA0B,eAAe,MAAM;AAClD,oBAAI,aAAa,0BAA0B;AAE3C,oBAAI,CAAC,WAAW,gBAAgB;AAC9B,6BAAW,iBAAiB,oBAAI,IAAI;AAAA,gBACtC;AAEA,2BAAW,eAAe,IAAI,KAAK;AAAA,cACrC;AASA,kBAAI,+BAA+B,QAAQ;AAEzC,6CAA6B,wBAAwB;AAAA,cACvD;AAEA,qBAAO;AAAA,YACT;AAQA,gBAAI,aAAa,yBAAyB;AAE1C,gBAAI,eAAe,QAAQ;AACzB,qBAAO;AAAA,YACT;AAQA,gBAAI,YAAY,wBAAwB;AACxC,mBAAO;AAAA,UACT;AAEA,mBAAS,iBAAiB,OAAO;AAK/B,gBAAI,OAAO,MAAM;AAEjB,iBAAK,OAAO,oBAAoB,QAAQ;AACtC,qBAAO;AAAA,YACT;AAEA,mBAAO,mBAAmB;AAAA,UAC5B;AAEA,mBAAS,sBAAsBC,OAAM,OAAO,MAAM,WAAW;AAC3D,kCAAsB;AAEtB;AACE,kBAAI,0BAA0B;AAC5B,sBAAM,+CAA+C;AAAA,cACvD;AAAA,YACF;AAEA;AACE,kBAAI,0BAA0B;AAC5B,wDAAwC;AAAA,cAC1C;AAAA,YACF;AAGA,4BAAgBA,OAAM,MAAM,SAAS;AAErC,iBAAK,mBAAmB,mBAAmB,WAAWA,UAAS,oBAAoB;AAMjF,+CAAiC,KAAK;AAAA,YACxC,OAAO;AAGL;AACE,oBAAI,mBAAmB;AACrB,qCAAmBA,OAAM,OAAO,IAAI;AAAA,gBACtC;AAAA,cACF;AAEA,gDAAkC,KAAK;AAEvC,kBAAIA,UAAS,oBAAoB;AAM/B,qBAAM,mBAAmB,mBAAmB,WAAW;AACrD,8DAA4C,WAAW,2CAA2C,IAAI;AAAA,gBACxG;AAEA,oBAAI,iCAAiC,wBAAwB;AAO3D,sCAAoBA,OAAM,6BAA6B;AAAA,gBACzD;AAAA,cACF;AAEA,oCAAsBA,OAAM,SAAS;AAErC,kBAAI,SAAS,YAAY,qBAAqB,cAAc,MAAM,OAAO,oBAAoB;AAAA,cAC7F,CAAG,uBAAuB,kBAAmB;AAM3C,iCAAiB;AACjB,mDAAmC;AAAA,cACrC;AAAA,YACF;AAAA,UACF;AACA,mBAAS,+BAA+BA,OAAM,MAAM,WAAW;AAU7D,gBAAIF,WAAUE,MAAK;AACnB,YAAAF,SAAQ,QAAQ;AAChB,4BAAgBE,OAAM,MAAM,SAAS;AACrC,kCAAsBA,OAAM,SAAS;AAAA,UACvC;AACA,mBAAS,+BAA+B,OAAO;AAG7C;AAAA;AAAA;AAAA,eAEI,mBAAmB,mBAAmB;AAAA;AAAA,UAE5C;AAMA,mBAAS,sBAAsBA,OAAM,aAAa;AAChD,gBAAI,uBAAuBA,MAAK;AAGhC,sCAA0BA,OAAM,WAAW;AAE3C,gBAAI,YAAY,aAAaA,OAAMA,UAAS,qBAAqB,gCAAgC,OAAO;AAExG,gBAAI,cAAc,SAAS;AAEzB,kBAAI,yBAAyB,MAAM;AACjC,iCAAiB,oBAAoB;AAAA,cACvC;AAEA,cAAAA,MAAK,eAAe;AACpB,cAAAA,MAAK,mBAAmB;AACxB;AAAA,YACF;AAGA,gBAAI,sBAAsB,uBAAuB,SAAS;AAE1D,gBAAI,2BAA2BA,MAAK;AAEpC,gBAAI,6BAA6B;AAAA;AAAA;AAAA,YAGjC,EAAG,uBAAuB,YAAY,QAAQ,yBAAyB,sBAAsB;AAC3F;AAIE,oBAAI,wBAAwB,QAAQ,6BAA6B,UAAU;AACzE,wBAAM,4GAA4G;AAAA,gBACpH;AAAA,cACF;AAGA;AAAA,YACF;AAEA,gBAAI,wBAAwB,MAAM;AAEhC,+BAAiB,oBAAoB;AAAA,YACvC;AAGA,gBAAI;AAEJ,gBAAI,wBAAwB,UAAU;AAGpC,kBAAIA,MAAK,QAAQ,YAAY;AAC3B,oBAAK,uBAAuB,qBAAqB,MAAM;AACrD,yCAAuB,0BAA0B;AAAA,gBACnD;AAEA,2CAA2B,sBAAsB,KAAK,MAAMA,KAAI,CAAC;AAAA,cACnE,OAAO;AACL,qCAAqB,sBAAsB,KAAK,MAAMA,KAAI,CAAC;AAAA,cAC7D;AAEA;AAEE,oBAAK,uBAAuB,YAAY,MAAM;AAI5C,yCAAuB,QAAQ,KAAK,kBAAkB;AAAA,gBACxD,OAAO;AACL,oCAAkB,WAAY;AAK5B,yBAAK,oBAAoB,gBAAgB,oBAAoB,WAAW;AAGtE,yCAAmB;AAAA,oBACrB;AAAA,kBACF,CAAC;AAAA,gBACH;AAAA,cACF;AAEA,gCAAkB;AAAA,YACpB,OAAO;AACL,kBAAI;AAEJ,sBAAQ,qBAAqB,SAAS,GAAG;AAAA,gBACvC,KAAK;AACH,2CAAyB;AACzB;AAAA,gBAEF,KAAK;AACH,2CAAyB;AACzB;AAAA,gBAEF,KAAK;AACH,2CAAyB;AACzB;AAAA,gBAEF,KAAK;AACH,2CAAyB;AACzB;AAAA,gBAEF;AACE,2CAAyB;AACzB;AAAA,cACJ;AAEA,gCAAkB,mBAAmB,wBAAwB,4BAA4B,KAAK,MAAMA,KAAI,CAAC;AAAA,YAC3G;AAEA,YAAAA,MAAK,mBAAmB;AACxB,YAAAA,MAAK,eAAe;AAAA,UACtB;AAIA,mBAAS,4BAA4BA,OAAM,YAAY;AACrD;AACE,oCAAsB;AAAA,YACxB;AAIA,+BAAmB;AACnB,yCAA6B;AAE7B,iBAAK,oBAAoB,gBAAgB,oBAAoB,WAAW;AACtE,oBAAM,IAAI,MAAM,gCAAgC;AAAA,YAClD;AAIA,gBAAI,uBAAuBA,MAAK;AAChC,gBAAI,yBAAyB,oBAAoB;AAEjD,gBAAI,wBAAwB;AAG1B,kBAAIA,MAAK,iBAAiB,sBAAsB;AAI9C,uBAAO;AAAA,cACT;AAAA,YACF;AAIA,gBAAI,QAAQ,aAAaA,OAAMA,UAAS,qBAAqB,gCAAgC,OAAO;AAEpG,gBAAI,UAAU,SAAS;AAErB,qBAAO;AAAA,YACT;AAQA,gBAAI,kBAAkB,CAAC,qBAAqBA,OAAM,KAAK,KAAK,CAAC,oBAAoBA,OAAM,KAAK,KAAO,CAAC;AACpG,gBAAI,aAAa,kBAAkB,qBAAqBA,OAAM,KAAK,IAAI,eAAeA,OAAM,KAAK;AAEjG,gBAAI,eAAe,gBAAgB;AACjC,kBAAI,eAAe,aAAa;AAK9B,oBAAI,kBAAkB,oCAAoCA,KAAI;AAE9D,oBAAI,oBAAoB,SAAS;AAC/B,0BAAQ;AACR,+BAAa,2BAA2BA,OAAM,eAAe;AAAA,gBAC/D;AAAA,cACF;AAEA,kBAAI,eAAe,kBAAkB;AACnC,oBAAI,aAAa;AACjB,kCAAkBA,OAAM,OAAO;AAC/B,oCAAoBA,OAAM,KAAK;AAC/B,sCAAsBA,OAAMD,KAAI,CAAC;AACjC,sBAAM;AAAA,cACR;AAEA,kBAAI,eAAe,oBAAoB;AAQrC,oCAAoBC,OAAM,KAAK;AAAA,cACjC,OAAO;AAOL,oBAAI,sBAAsB,CAAC,qBAAqBA,OAAM,KAAK;AAC3D,oBAAI,eAAeA,MAAK,QAAQ;AAEhC,oBAAI,uBAAuB,CAAC,qCAAqC,YAAY,GAAG;AAG9E,+BAAa,eAAeA,OAAM,KAAK;AAEvC,sBAAI,eAAe,aAAa;AAC9B,wBAAI,mBAAmB,oCAAoCA,KAAI;AAE/D,wBAAI,qBAAqB,SAAS;AAChC,8BAAQ;AACR,mCAAa,2BAA2BA,OAAM,gBAAgB;AAAA,oBAEhE;AAAA,kBACF;AAEA,sBAAI,eAAe,kBAAkB;AACnC,wBAAI,cAAc;AAClB,sCAAkBA,OAAM,OAAO;AAC/B,wCAAoBA,OAAM,KAAK;AAC/B,0CAAsBA,OAAMD,KAAI,CAAC;AACjC,0BAAM;AAAA,kBACR;AAAA,gBACF;AAIA,gBAAAC,MAAK,eAAe;AACpB,gBAAAA,MAAK,gBAAgB;AACrB,uCAAuBA,OAAM,YAAY,KAAK;AAAA,cAChD;AAAA,YACF;AAEA,kCAAsBA,OAAMD,KAAI,CAAC;AAEjC,gBAAIC,MAAK,iBAAiB,sBAAsB;AAG9C,qBAAO,4BAA4B,KAAK,MAAMA,KAAI;AAAA,YACpD;AAEA,mBAAO;AAAA,UACT;AAEA,mBAAS,2BAA2BA,OAAM,iBAAiB;AAIzD,gBAAI,yBAAyB;AAE7B,gBAAI,iBAAiBA,KAAI,GAAG;AAY1B,kBAAI,qBAAqB,kBAAkBA,OAAM,eAAe;AAChE,iCAAmB,SAAS;AAE5B;AACE,wCAAwBA,MAAK,aAAa;AAAA,cAC5C;AAAA,YACF;AAEA,gBAAI,aAAa,eAAeA,OAAM,eAAe;AAErD,gBAAI,eAAe,aAAa;AAK9B,kBAAI,0BAA0B;AAC9B,oDAAsC;AAGtC,kBAAI,4BAA4B,MAAM;AACpC,uCAAuB,uBAAuB;AAAA,cAChD;AAAA,YACF;AAEA,mBAAO;AAAA,UACT;AAEA,mBAAS,uBAAuB0C,SAAQ;AACtC,gBAAI,wCAAwC,MAAM;AAChD,oDAAsCA;AAAA,YACxC,OAAO;AACL,kDAAoC,KAAK,MAAM,qCAAqCA,OAAM;AAAA,YAC5F;AAAA,UACF;AAEA,mBAAS,uBAAuB1C,OAAM,YAAY,OAAO;AACvD,oBAAQ,YAAY;AAAA,cAClB,KAAK;AAAA,cACL,KAAK,kBACH;AACE,sBAAM,IAAI,MAAM,gDAAgD;AAAA,cAClE;AAAA,cAKF,KAAK,aACH;AAGE,2BAAWA,OAAM,qCAAqC,yBAAyB;AAC/E;AAAA,cACF;AAAA,cAEF,KAAK,eACH;AACE,oCAAoBA,OAAM,KAAK;AAG/B,oBAAI,oBAAoB,KAAK;AAAA,gBAC7B,CAAC,+BAA+B,GAAG;AAGjC,sBAAI,iBAAiB,+BAA+B,uBAAuBD,KAAI;AAE/E,sBAAI,iBAAiB,IAAI;AACvB,wBAAI,YAAY,aAAaC,OAAM,OAAO;AAE1C,wBAAI,cAAc,SAAS;AAEzB;AAAA,oBACF;AAEA,wBAAI,iBAAiBA,MAAK;AAE1B,wBAAI,CAAC,gBAAgB,gBAAgB,KAAK,GAAG;AAK3C,0BAAI,YAAY,iBAAiB;AACjC,qCAAeA,OAAM,cAAc;AACnC;AAAA,oBACF;AAKA,oBAAAA,MAAK,gBAAgB,gBAAgB,WAAW,KAAK,MAAMA,OAAM,qCAAqC,yBAAyB,GAAG,cAAc;AAChJ;AAAA,kBACF;AAAA,gBACF;AAGA,2BAAWA,OAAM,qCAAqC,yBAAyB;AAC/E;AAAA,cACF;AAAA,cAEF,KAAK,wBACH;AACE,oCAAoBA,OAAM,KAAK;AAE/B,oBAAI,wBAAwB,KAAK,GAAG;AAIlC;AAAA,gBACF;AAEA,oBAAI,CAAC,+BAA+B,GAAG;AAOrC,sBAAI,sBAAsB,uBAAuBA,OAAM,KAAK;AAC5D,sBAAI,cAAc;AAClB,sBAAI,gBAAgBD,KAAI,IAAI;AAE5B,sBAAI,kBAAkB,IAAI,aAAa,IAAI;AAG3C,sBAAI,kBAAkB,IAAI;AAGxB,oBAAAC,MAAK,gBAAgB,gBAAgB,WAAW,KAAK,MAAMA,OAAM,qCAAqC,yBAAyB,GAAG,eAAe;AACjJ;AAAA,kBACF;AAAA,gBACF;AAGA,2BAAWA,OAAM,qCAAqC,yBAAyB;AAC/E;AAAA,cACF;AAAA,cAEF,KAAK,eACH;AAEE,2BAAWA,OAAM,qCAAqC,yBAAyB;AAC/E;AAAA,cACF;AAAA,cAEF,SACE;AACE,sBAAM,IAAI,MAAM,2BAA2B;AAAA,cAC7C;AAAA,YACJ;AAAA,UACF;AAEA,mBAAS,qCAAqC,cAAc;AAI1D,gBAAIhC,QAAO;AAEX,mBAAO,MAAM;AACX,kBAAIA,MAAK,QAAQ,kBAAkB;AACjC,oBAAI,cAAcA,MAAK;AAEvB,oBAAI,gBAAgB,MAAM;AACxB,sBAAI,SAAS,YAAY;AAEzB,sBAAI,WAAW,MAAM;AACnB,6BAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK;AACtC,0BAAI,QAAQ,OAAO,CAAC;AACpB,0BAAI,cAAc,MAAM;AACxB,0BAAI,gBAAgB,MAAM;AAE1B,0BAAI;AACF,4BAAI,CAAC,SAAS,YAAY,GAAG,aAAa,GAAG;AAE3C,iCAAO;AAAA,wBACT;AAAA,sBACF,SAAS4B,QAAO;AAGd,+BAAO;AAAA,sBACT;AAAA,oBACF;AAAA,kBACF;AAAA,gBACF;AAAA,cACF;AAEA,kBAAI,QAAQ5B,MAAK;AAEjB,kBAAIA,MAAK,eAAe,oBAAoB,UAAU,MAAM;AAC1D,sBAAM,SAASA;AACf,gBAAAA,QAAO;AACP;AAAA,cACF;AAEA,kBAAIA,UAAS,cAAc;AACzB,uBAAO;AAAA,cACT;AAEA,qBAAOA,MAAK,YAAY,MAAM;AAC5B,oBAAIA,MAAK,WAAW,QAAQA,MAAK,WAAW,cAAc;AACxD,yBAAO;AAAA,gBACT;AAEA,gBAAAA,QAAOA,MAAK;AAAA,cACd;AAEA,cAAAA,MAAK,QAAQ,SAASA,MAAK;AAC3B,cAAAA,QAAOA,MAAK;AAAA,YACd;AAIA,mBAAO;AAAA,UACT;AAEA,mBAAS,oBAAoBgC,OAAM,gBAAgB;AAKjD,6BAAiB,YAAY,gBAAgB,6BAA6B;AAC1E,6BAAiB,YAAY,gBAAgB,yCAAyC;AACtF,8BAAkBA,OAAM,cAAc;AAAA,UACxC;AAIA,mBAAS,sBAAsBA,OAAM;AACnC;AACE,mCAAqB;AAAA,YACvB;AAEA,iBAAK,oBAAoB,gBAAgB,oBAAoB,WAAW;AACtE,oBAAM,IAAI,MAAM,gCAAgC;AAAA,YAClD;AAEA,gCAAoB;AACpB,gBAAI,QAAQ,aAAaA,OAAM,OAAO;AAEtC,gBAAI,CAAC,iBAAiB,OAAO,QAAQ,GAAG;AAEtC,oCAAsBA,OAAMD,KAAI,CAAC;AACjC,qBAAO;AAAA,YACT;AAEA,gBAAI,aAAa,eAAeC,OAAM,KAAK;AAE3C,gBAAIA,MAAK,QAAQ,cAAc,eAAe,aAAa;AAKzD,kBAAI,kBAAkB,oCAAoCA,KAAI;AAE9D,kBAAI,oBAAoB,SAAS;AAC/B,wBAAQ;AACR,6BAAa,2BAA2BA,OAAM,eAAe;AAAA,cAC/D;AAAA,YACF;AAEA,gBAAI,eAAe,kBAAkB;AACnC,kBAAI,aAAa;AACjB,gCAAkBA,OAAM,OAAO;AAC/B,kCAAoBA,OAAM,KAAK;AAC/B,oCAAsBA,OAAMD,KAAI,CAAC;AACjC,oBAAM;AAAA,YACR;AAEA,gBAAI,eAAe,oBAAoB;AACrC,oBAAM,IAAI,MAAM,gDAAgD;AAAA,YAClE;AAIA,gBAAI,eAAeC,MAAK,QAAQ;AAChC,YAAAA,MAAK,eAAe;AACpB,YAAAA,MAAK,gBAAgB;AACrB,uBAAWA,OAAM,qCAAqC,yBAAyB;AAG/E,kCAAsBA,OAAMD,KAAI,CAAC;AACjC,mBAAO;AAAA,UACT;AAEA,mBAAS,UAAUC,OAAM,OAAO;AAC9B,gBAAI,UAAU,SAAS;AACrB,gCAAkBA,OAAM,WAAW,OAAO,QAAQ,CAAC;AACnD,oCAAsBA,OAAMD,KAAI,CAAC;AAEjC,mBAAK,oBAAoB,gBAAgB,oBAAoB,WAAW;AACtE,iCAAiB;AACjB,mCAAmB;AAAA,cACrB;AAAA,YACF;AAAA,UACF;AACA,mBAAS,iBAAiB,IAAIjB,IAAG;AAC/B,gBAAI,uBAAuB;AAC3B,gCAAoB;AAEpB,gBAAI;AACF,qBAAO,GAAGA,EAAC;AAAA,YACb,UAAE;AACA,iCAAmB;AAGnB,kBAAI,qBAAqB;AAAA,cACzB,CAAG,uBAAuB,kBAAmB;AAC3C,iCAAiB;AACjB,mDAAmC;AAAA,cACrC;AAAA,YACF;AAAA,UACF;AACA,mBAAS,gBAAgB,IAAIA,IAAG,GAAGR,IAAGqB,IAAG;AACvC,gBAAI,mBAAmB,yBAAyB;AAChD,gBAAI,iBAAiB,0BAA0B;AAE/C,gBAAI;AACF,wCAA0B,aAAa;AACvC,uCAAyB,qBAAqB;AAC9C,qBAAO,GAAGb,IAAG,GAAGR,IAAGqB,EAAC;AAAA,YACtB,UAAE;AACA,uCAAyB,gBAAgB;AACzC,wCAA0B,aAAa;AAEvC,kBAAI,qBAAqB,WAAW;AAClC,iCAAiB;AAAA,cACnB;AAAA,YACF;AAAA,UACF;AAIA,mBAAS,UAAU,IAAI;AAGrB,gBAAI,kCAAkC,QAAQ,8BAA8B,QAAQ,eAAe,oBAAoB,gBAAgB,oBAAoB,WAAW;AACpK,kCAAoB;AAAA,YACtB;AAEA,gBAAI,uBAAuB;AAC3B,gCAAoB;AACpB,gBAAI,iBAAiB,0BAA0B;AAC/C,gBAAI,mBAAmB,yBAAyB;AAEhD,gBAAI;AACF,wCAA0B,aAAa;AACvC,uCAAyB,qBAAqB;AAE9C,kBAAI,IAAI;AACN,uBAAO,GAAG;AAAA,cACZ,OAAO;AACL,uBAAO;AAAA,cACT;AAAA,YACF,UAAE;AACA,uCAAyB,gBAAgB;AACzC,wCAA0B,aAAa;AACvC,iCAAmB;AAInB,mBAAK,oBAAoB,gBAAgB,oBAAoB,WAAW;AACtE,mCAAmB;AAAA,cACrB;AAAA,YACF;AAAA,UACF;AACA,mBAAS,qBAAqB;AAG5B,oBAAS,oBAAoB,gBAAgB,oBAAoB;AAAA,UACnE;AACA,mBAAS,gBAAgB,OAAO,OAAO;AACrC,YAAA8B,MAAK,0BAA0B,oBAAoB,KAAK;AACxD,iCAAqB,WAAW,oBAAoB,KAAK;AACzD,8CAAkC,WAAW,iCAAiC,KAAK;AAAA,UACrF;AACA,mBAAS,eAAe,OAAO;AAC7B,iCAAqB,yBAAyB;AAC9C,gBAAI,0BAA0B,KAAK;AAAA,UACrC;AAEA,mBAAS,kBAAkBzB,OAAM,OAAO;AACtC,YAAAA,MAAK,eAAe;AACpB,YAAAA,MAAK,gBAAgB;AACrB,gBAAI,gBAAgBA,MAAK;AAEzB,gBAAI,kBAAkB,WAAW;AAG/B,cAAAA,MAAK,gBAAgB;AAErB,4BAAc,aAAa;AAAA,YAC7B;AAEA,gBAAI,mBAAmB,MAAM;AAC3B,kBAAI,kBAAkB,eAAe;AAErC,qBAAO,oBAAoB,MAAM;AAC/B,oBAAIF,WAAU,gBAAgB;AAC9B,sCAAsBA,UAAS,eAAe;AAC9C,kCAAkB,gBAAgB;AAAA,cACpC;AAAA,YACF;AAEA,iCAAqBE;AACrB,gBAAI,qBAAqB,qBAAqBA,MAAK,SAAS,IAAI;AAChE,6BAAiB;AACjB,4CAAgC,qBAAqB,kCAAkC;AACvF,2CAA+B;AAC/B,2CAA+B;AAC/B,6CAAiC;AACjC,wDAA4C;AAC5C,4CAAgC;AAChC,iDAAqC;AACrC,kDAAsC;AACtC,4CAAgC;AAEhC;AACE,sCAAwB,uBAAuB;AAAA,YACjD;AAEA,mBAAO;AAAA,UACT;AAEA,mBAAS,YAAYA,OAAM,aAAa;AACtC,eAAG;AACD,kBAAI,cAAc;AAElB,kBAAI;AAEF,yCAAyB;AACzB,qCAAqB;AACrB,kCAAkB;AAGlB,oCAAoB,UAAU;AAE9B,oBAAI,gBAAgB,QAAQ,YAAY,WAAW,MAAM;AAKvD,iDAA+B;AAC/B,iDAA+B;AAO/B,mCAAiB;AACjB;AAAA,gBACF;AAEA,oBAAI,uBAAuB,YAAY,OAAO,aAAa;AAIzD,2DAAyC,aAAa,IAAI;AAAA,gBAC5D;AAEA,oBAAI,0BAA0B;AAC5B,6CAA2B;AAE3B,sBAAI,gBAAgB,QAAQ,OAAO,gBAAgB,YAAY,OAAO,YAAY,SAAS,YAAY;AACrG,wBAAI,WAAW;AACf,2CAAuB,aAAa,UAAU,6BAA6B;AAAA,kBAC7E,OAAO;AACL,yCAAqB,aAAa,aAAa,6BAA6B;AAAA,kBAC9E;AAAA,gBACF;AAEA,+BAAeA,OAAM,YAAY,QAAQ,aAAa,aAAa,6BAA6B;AAChG,mCAAmB,WAAW;AAAA,cAChC,SAAS,uBAAuB;AAE9B,8BAAc;AAEd,oBAAI,mBAAmB,eAAe,gBAAgB,MAAM;AAG1D,gCAAc,YAAY;AAC1B,mCAAiB;AAAA,gBACnB,OAAO;AACL,gCAAc;AAAA,gBAChB;AAEA;AAAA,cACF;AAGA;AAAA,YACF,SAAS;AAAA,UACX;AAEA,mBAAS,iBAAiB;AACxB,gBAAI,iBAAiB,yBAAyB;AAC9C,qCAAyB,UAAU;AAEnC,gBAAI,mBAAmB,MAAM;AAI3B,qBAAO;AAAA,YACT,OAAO;AACL,qBAAO;AAAA,YACT;AAAA,UACF;AAEA,mBAAS,cAAc,gBAAgB;AACrC,qCAAyB,UAAU;AAAA,UACrC;AAEA,mBAAS,2BAA2B;AAClC,2CAA+BD,KAAI;AAAA,UACrC;AACA,mBAAS,uBAAuB,MAAM;AACpC,6CAAiC,WAAW,MAAM,8BAA8B;AAAA,UAClF;AACA,mBAAS,mBAAmB;AAC1B,gBAAI,iCAAiC,gBAAgB;AACnD,6CAA+B;AAAA,YACjC;AAAA,UACF;AACA,mBAAS,kCAAkC;AACzC,gBAAI,iCAAiC,kBAAkB,iCAAiC,iBAAiB,iCAAiC,aAAa;AACrJ,6CAA+B;AAAA,YACjC;AAIA,gBAAI,uBAAuB,SAAS,oBAAoB,8BAA8B,KAAK,oBAAoB,yCAAyC,IAAI;AAQ1J,kCAAoB,oBAAoB,6BAA6B;AAAA,YACvE;AAAA,UACF;AACA,mBAAS,eAAeH,QAAO;AAC7B,gBAAI,iCAAiC,wBAAwB;AAC3D,6CAA+B;AAAA,YACjC;AAEA,gBAAI,uCAAuC,MAAM;AAC/C,mDAAqC,CAACA,MAAK;AAAA,YAC7C,OAAO;AACL,iDAAmC,KAAKA,MAAK;AAAA,YAC/C;AAAA,UACF;AAGA,mBAAS,2BAA2B;AAGlC,mBAAO,iCAAiC;AAAA,UAC1C;AAEA,mBAAS,eAAeI,OAAM,OAAO;AACnC,gBAAI,uBAAuB;AAC3B,gCAAoB;AACpB,gBAAI,iBAAiB,eAAe;AAGpC,gBAAI,uBAAuBA,SAAQ,kCAAkC,OAAO;AAC1E;AACE,oBAAI,mBAAmB;AACrB,sBAAI,mBAAmBA,MAAK;AAE5B,sBAAI,iBAAiB,OAAO,GAAG;AAC7B,2CAAuBA,OAAM,6BAA6B;AAC1D,qCAAiB,MAAM;AAAA,kBACzB;AAMA,8CAA4BA,OAAM,KAAK;AAAA,gBACzC;AAAA,cACF;AAEA,0CAA4B,uBAAuB;AACnD,gCAAkBA,OAAM,KAAK;AAAA,YAC/B;AAEA;AACE,gCAAkB,KAAK;AAAA,YACzB;AAEA,eAAG;AACD,kBAAI;AACF,6BAAa;AACb;AAAA,cACF,SAAS,aAAa;AACpB,4BAAYA,OAAM,WAAW;AAAA,cAC/B;AAAA,YACF,SAAS;AAET,qCAAyB;AACzB,+BAAmB;AACnB,0BAAc,cAAc;AAE5B,gBAAI,mBAAmB,MAAM;AAE3B,oBAAM,IAAI,MAAM,wGAA6G;AAAA,YAC/H;AAEA;AACE,gCAAkB;AAAA,YACpB;AAGA,iCAAqB;AACrB,4CAAgC;AAChC,mBAAO;AAAA,UACT;AAKA,mBAAS,eAAe;AAEtB,mBAAO,mBAAmB,MAAM;AAC9B,gCAAkB,cAAc;AAAA,YAClC;AAAA,UACF;AAEA,mBAAS,qBAAqBA,OAAM,OAAO;AACzC,gBAAI,uBAAuB;AAC3B,gCAAoB;AACpB,gBAAI,iBAAiB,eAAe;AAGpC,gBAAI,uBAAuBA,SAAQ,kCAAkC,OAAO;AAC1E;AACE,oBAAI,mBAAmB;AACrB,sBAAI,mBAAmBA,MAAK;AAE5B,sBAAI,iBAAiB,OAAO,GAAG;AAC7B,2CAAuBA,OAAM,6BAA6B;AAC1D,qCAAiB,MAAM;AAAA,kBACzB;AAMA,8CAA4BA,OAAM,KAAK;AAAA,gBACzC;AAAA,cACF;AAEA,0CAA4B,uBAAuB;AACnD,+BAAiB;AACjB,gCAAkBA,OAAM,KAAK;AAAA,YAC/B;AAEA;AACE,gCAAkB,KAAK;AAAA,YACzB;AAEA,eAAG;AACD,kBAAI;AACF,mCAAmB;AACnB;AAAA,cACF,SAAS,aAAa;AACpB,4BAAYA,OAAM,WAAW;AAAA,cAC/B;AAAA,YACF,SAAS;AAET,qCAAyB;AACzB,0BAAc,cAAc;AAC5B,+BAAmB;AAGnB,gBAAI,mBAAmB,MAAM;AAE3B;AACE,kCAAkB;AAAA,cACpB;AAEA,qBAAO;AAAA,YACT,OAAO;AAEL;AACE,kCAAkB;AAAA,cACpB;AAGA,mCAAqB;AACrB,8CAAgC;AAEhC,qBAAO;AAAA,YACT;AAAA,UACF;AAIA,mBAAS,qBAAqB;AAE5B,mBAAO,mBAAmB,QAAQ,CAAC,YAAY,GAAG;AAChD,gCAAkB,cAAc;AAAA,YAClC;AAAA,UACF;AAEA,mBAAS,kBAAkB,YAAY;AAIrC,gBAAIF,WAAU,WAAW;AACzB,4BAAgB,UAAU;AAC1B,gBAAIkB;AAEJ,iBAAM,WAAW,OAAO,iBAAiB,QAAQ;AAC/C,iCAAmB,UAAU;AAC7B,cAAAA,QAAO,YAAYlB,UAAS,YAAY,kBAAkB;AAC1D,uDAAyC,YAAY,IAAI;AAAA,YAC3D,OAAO;AACL,cAAAkB,QAAO,YAAYlB,UAAS,YAAY,kBAAkB;AAAA,YAC5D;AAEA,8BAAkB;AAClB,uBAAW,gBAAgB,WAAW;AAEtC,gBAAIkB,UAAS,MAAM;AAEjB,iCAAmB,UAAU;AAAA,YAC/B,OAAO;AACL,+BAAiBA;AAAA,YACnB;AAEA,gCAAoB,UAAU;AAAA,UAChC;AAEA,mBAAS,mBAAmB,YAAY;AAGtC,gBAAI,gBAAgB;AAEpB,eAAG;AAID,kBAAIlB,WAAU,cAAc;AAC5B,kBAAI,cAAc,cAAc;AAEhC,mBAAK,cAAc,QAAQ,gBAAgB,SAAS;AAClD,gCAAgB,aAAa;AAC7B,oBAAIkB,QAAO;AAEX,qBAAM,cAAc,OAAO,iBAAiB,QAAQ;AAClD,kBAAAA,QAAO,aAAalB,UAAS,eAAe,kBAAkB;AAAA,gBAChE,OAAO;AACL,qCAAmB,aAAa;AAChC,kBAAAkB,QAAO,aAAalB,UAAS,eAAe,kBAAkB;AAE9D,2DAAyC,eAAe,KAAK;AAAA,gBAC/D;AAEA,kCAAkB;AAElB,oBAAIkB,UAAS,MAAM;AAEjB,mCAAiBA;AACjB;AAAA,gBACF;AAAA,cACF,OAAO;AAIL,oBAAI,QAAQ,WAAWlB,UAAS,aAAa;AAG7C,oBAAI,UAAU,MAAM;AAKlB,wBAAM,SAAS;AACf,mCAAiB;AACjB;AAAA,gBACF;AAEA,qBAAM,cAAc,OAAO,iBAAiB,QAAQ;AAElD,2DAAyC,eAAe,KAAK;AAE7D,sBAAI,iBAAiB,cAAc;AACnC,sBAAI,QAAQ,cAAc;AAE1B,yBAAO,UAAU,MAAM;AACrB,sCAAkB,MAAM;AACxB,4BAAQ,MAAM;AAAA,kBAChB;AAEA,gCAAc,iBAAiB;AAAA,gBACjC;AAEA,oBAAI,gBAAgB,MAAM;AAExB,8BAAY,SAAS;AACrB,8BAAY,eAAe;AAC3B,8BAAY,YAAY;AAAA,gBAC1B,OAAO;AAEL,iDAA+B;AAC/B,mCAAiB;AACjB;AAAA,gBACF;AAAA,cACF;AAEA,kBAAI,eAAe,cAAc;AAEjC,kBAAI,iBAAiB,MAAM;AAEzB,iCAAiB;AACjB;AAAA,cACF;AAGA,8BAAgB;AAEhB,+BAAiB;AAAA,YACnB,SAAS,kBAAkB;AAG3B,gBAAI,iCAAiC,gBAAgB;AACnD,6CAA+B;AAAA,YACjC;AAAA,UACF;AAEA,mBAAS,WAAWE,OAAM,mBAAmB,aAAa;AAGxD,gBAAI,6BAA6B,yBAAyB;AAC1D,gBAAI,iBAAiB,0BAA0B;AAE/C,gBAAI;AACF,wCAA0B,aAAa;AACvC,uCAAyB,qBAAqB;AAC9C,6BAAeA,OAAM,mBAAmB,aAAa,0BAA0B;AAAA,YACjF,UAAE;AACA,wCAA0B,aAAa;AACvC,uCAAyB,0BAA0B;AAAA,YACrD;AAEA,mBAAO;AAAA,UACT;AAEA,mBAAS,eAAeA,OAAM,mBAAmB,aAAa,qBAAqB;AACjF,eAAG;AAOD,kCAAoB;AAAA,YACtB,SAAS,kCAAkC;AAE3C,oDAAwC;AAExC,iBAAK,oBAAoB,gBAAgB,oBAAoB,WAAW;AACtE,oBAAM,IAAI,MAAM,gCAAgC;AAAA,YAClD;AAEA,gBAAI,eAAeA,MAAK;AACxB,gBAAI,QAAQA,MAAK;AAEjB;AACE,gCAAkB,KAAK;AAAA,YACzB;AAEA,gBAAI,iBAAiB,MAAM;AAEzB;AACE,kCAAkB;AAAA,cACpB;AAEA,qBAAO;AAAA,YACT,OAAO;AACL;AACE,oBAAI,UAAU,SAAS;AACrB,wBAAM,iFAAsF;AAAA,gBAC9F;AAAA,cACF;AAAA,YACF;AAEA,YAAAA,MAAK,eAAe;AACpB,YAAAA,MAAK,gBAAgB;AAErB,gBAAI,iBAAiBA,MAAK,SAAS;AACjC,oBAAM,IAAI,MAAM,6GAAkH;AAAA,YACpI;AAIA,YAAAA,MAAK,eAAe;AACpB,YAAAA,MAAK,mBAAmB;AAGxB,gBAAI,iBAAiB,WAAW,aAAa,OAAO,aAAa,UAAU;AAC3E,6BAAiBA,OAAM,cAAc;AAErC,gBAAIA,UAAS,oBAAoB;AAE/B,mCAAqB;AACrB,+BAAiB;AACjB,8CAAgC;AAAA,YAClC;AAOA,iBAAK,aAAa,eAAe,iBAAiB,YAAY,aAAa,QAAQ,iBAAiB,SAAS;AAC3G,kBAAI,CAAC,4BAA4B;AAC/B,6CAA6B;AAO7B,4CAA4B;AAC5B,mCAAmB,gBAAgB,WAAY;AAC7C,sCAAoB;AAIpB,yBAAO;AAAA,gBACT,CAAC;AAAA,cACH;AAAA,YACF;AAOA,gBAAI,qBAAqB,aAAa,gBAAgB,qBAAqB,eAAe,aAAa,kBAAkB;AACzH,gBAAI,iBAAiB,aAAa,SAAS,qBAAqB,eAAe,aAAa,kBAAkB;AAE9G,gBAAI,qBAAqB,eAAe;AACtC,kBAAI,iBAAiB,0BAA0B;AAC/C,wCAA0B,aAAa;AACvC,kBAAI,mBAAmB,yBAAyB;AAChD,uCAAyB,qBAAqB;AAC9C,kBAAI,uBAAuB;AAC3B,kCAAoB;AAEpB,kCAAoB,UAAU;AAO9B,kBAAI2C,qCAAoC,4BAA4B3C,OAAM,YAAY;AAEtF;AAGE,iCAAiB;AAAA,cACnB;AAGA,oCAAsBA,OAAM,cAAc,KAAK;AAE/C,+BAAiBA,MAAK,aAAa;AAKnC,cAAAA,MAAK,UAAU;AAEf;AACE,yCAAyB,KAAK;AAAA,cAChC;AAEA,kCAAoB,cAAcA,OAAM,KAAK;AAE7C;AACE,yCAAyB;AAAA,cAC3B;AAIA,2BAAa;AACb,iCAAmB;AAEnB,uCAAyB,gBAAgB;AACzC,wCAA0B,aAAa;AAAA,YACzC,OAAO;AAEL,cAAAA,MAAK,UAAU;AAIf;AACE,iCAAiB;AAAA,cACnB;AAAA,YACF;AAEA,gBAAI,4BAA4B;AAEhC,gBAAI,4BAA4B;AAG9B,2CAA6B;AAC7B,8CAAgCA;AAChC,2CAA6B;AAAA,YAC/B,OAAO;AAEL;AACE,2CAA2B;AAC3B,+CAA+B;AAAA,cACjC;AAAA,YACF;AAGA,6BAAiBA,MAAK;AAWtB,gBAAI,mBAAmB,SAAS;AAG9B,uDAAyC;AAAA,YAC3C;AAEA;AACE,kBAAI,CAAC,2BAA2B;AAC9B,+CAA+BA,MAAK,SAAS,KAAK;AAAA,cACpD;AAAA,YACF;AAEA,yBAAa,aAAa,WAAW,mBAAmB;AAExD;AACE,kBAAI,mBAAmB;AACrB,gBAAAA,MAAK,iBAAiB,MAAM;AAAA,cAC9B;AAAA,YACF;AAEA;AACE,6BAAe;AAAA,YACjB;AAIA,kCAAsBA,OAAMD,KAAI,CAAC;AAEjC,gBAAI,sBAAsB,MAAM;AAG9B,kBAAI,qBAAqBC,MAAK;AAE9B,uBAAS,IAAI,GAAG,IAAI,kBAAkB,QAAQ,KAAK;AACjD,oBAAI,mBAAmB,kBAAkB,CAAC;AAC1C,oBAAI,iBAAiB,iBAAiB;AACtC,oBAAI,SAAS,iBAAiB;AAC9B,mCAAmB,iBAAiB,OAAO;AAAA,kBACzC;AAAA,kBACA;AAAA,gBACF,CAAC;AAAA,cACH;AAAA,YACF;AAEA,gBAAI,kBAAkB;AACpB,iCAAmB;AACnB,kBAAI,UAAU;AACd,mCAAqB;AACrB,oBAAM;AAAA,YACR;AAUA,gBAAI,iBAAiB,4BAA4B,QAAQ,KAAKA,MAAK,QAAQ,YAAY;AACrF,kCAAoB;AAAA,YACtB;AAGA,6BAAiBA,MAAK;AAEtB,gBAAI,iBAAiB,gBAAgB,QAAQ,GAAG;AAC9C;AACE,0CAA0B;AAAA,cAC5B;AAIA,kBAAIA,UAAS,uBAAuB;AAClC;AAAA,cACF,OAAO;AACL,oCAAoB;AACpB,wCAAwBA;AAAA,cAC1B;AAAA,YACF,OAAO;AACL,kCAAoB;AAAA,YACtB;AAGA,+BAAmB;AAEnB;AACE,gCAAkB;AAAA,YACpB;AAEA,mBAAO;AAAA,UACT;AAEA,mBAAS,sBAAsB;AAO7B,gBAAI,kCAAkC,MAAM;AAC1C,kBAAI,iBAAiB,qBAAqB,0BAA0B;AACpE,kBAAI,WAAW,mBAAmB,sBAAsB,cAAc;AACtE,kBAAI,iBAAiB,0BAA0B;AAC/C,kBAAI,mBAAmB,yBAAyB;AAEhD,kBAAI;AACF,0CAA0B,aAAa;AACvC,yCAAyB,QAAQ;AACjC,uBAAO,wBAAwB;AAAA,cACjC,UAAE;AACA,yCAAyB,gBAAgB;AACzC,0CAA0B,aAAa;AAAA,cACzC;AAAA,YACF;AAEA,mBAAO;AAAA,UACT;AACA,mBAAS,oCAAoC,OAAO;AAClD;AACE,4CAA8B,KAAK,KAAK;AAExC,kBAAI,CAAC,4BAA4B;AAC/B,6CAA6B;AAC7B,mCAAmB,gBAAgB,WAAY;AAC7C,sCAAoB;AACpB,yBAAO;AAAA,gBACT,CAAC;AAAA,cACH;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,0BAA0B;AACjC,gBAAI,kCAAkC,MAAM;AAC1C,qBAAO;AAAA,YACT;AAGA,gBAAI,cAAc;AAClB,wCAA4B;AAC5B,gBAAIA,QAAO;AACX,gBAAI,QAAQ;AACZ,4CAAgC;AAIhC,yCAA6B;AAE7B,iBAAK,oBAAoB,gBAAgB,oBAAoB,WAAW;AACtE,oBAAM,IAAI,MAAM,uDAAuD;AAAA,YACzE;AAEA;AACE,yCAA2B;AAC3B,sDAAwC;AAAA,YAC1C;AAEA;AACE,wCAA0B,KAAK;AAAA,YACjC;AAEA,gBAAI,uBAAuB;AAC3B,gCAAoB;AACpB,wCAA4BA,MAAK,OAAO;AACxC,sCAA0BA,OAAMA,MAAK,SAAS,OAAO,WAAW;AAEhE;AACE,kBAAI,kBAAkB;AACtB,8CAAgC,CAAC;AAEjC,uBAAS,IAAI,GAAG,IAAI,gBAAgB,QAAQ,KAAK;AAC/C,oBAAI,SAAS,gBAAgB,CAAC;AAC9B,6CAA6BA,OAAM,MAAM;AAAA,cAC3C;AAAA,YACF;AAEA;AACE,wCAA0B;AAAA,YAC5B;AAEA;AACE,6CAA+BA,MAAK,SAAS,IAAI;AAAA,YACnD;AAEA,+BAAmB;AACnB,+BAAmB;AAEnB;AAGE,kBAAI,uCAAuC;AACzC,oBAAIA,UAAS,8BAA8B;AACzC;AAAA,gBACF,OAAO;AACL,6CAA2B;AAC3B,iDAA+BA;AAAA,gBACjC;AAAA,cACF,OAAO;AACL,2CAA2B;AAAA,cAC7B;AAEA,yCAA2B;AAC3B,sDAAwC;AAAA,YAC1C;AAGA,6BAAiBA,KAAI;AAErB;AACE,kBAAI,YAAYA,MAAK,QAAQ;AAC7B,wBAAU,iBAAiB;AAC3B,wBAAU,wBAAwB;AAAA,YACpC;AAEA,mBAAO;AAAA,UACT;AAEA,mBAAS,mCAAmC,UAAU;AACpD,mBAAO,2CAA2C,QAAQ,uCAAuC,IAAI,QAAQ;AAAA,UAC/G;AACA,mBAAS,gCAAgC,UAAU;AACjD,gBAAI,2CAA2C,MAAM;AACnD,uDAAyC,oBAAI,IAAI,CAAC,QAAQ,CAAC;AAAA,YAC7D,OAAO;AACL,qDAAuC,IAAI,QAAQ;AAAA,YACrD;AAAA,UACF;AAEA,mBAAS,4BAA4BJ,QAAO;AAC1C,gBAAI,CAAC,kBAAkB;AACrB,iCAAmB;AACnB,mCAAqBA;AAAA,YACvB;AAAA,UACF;AAEA,cAAI,kBAAkB;AAEtB,mBAAS,8BAA8B,WAAW,aAAaA,QAAO;AACpE,gBAAI,YAAY,2BAA2BA,QAAO,WAAW;AAC7D,gBAAI,SAAS,sBAAsB,WAAW,WAAW,QAAQ;AACjE,gBAAII,QAAO,cAAc,WAAW,QAAQ,QAAQ;AACpD,gBAAI,YAAY,iBAAiB;AAEjC,gBAAIA,UAAS,MAAM;AACjB,8BAAgBA,OAAM,UAAU,SAAS;AACzC,oCAAsBA,OAAM,SAAS;AAAA,YACvC;AAAA,UACF;AAEA,mBAAS,wBAAwB,aAAa,wBAAwB,SAAS;AAC7E;AACE,uCAAyB,OAAO;AAChC,0CAA4B,KAAK;AAAA,YACnC;AAEA,gBAAI,YAAY,QAAQ,UAAU;AAGhC,4CAA8B,aAAa,aAAa,OAAO;AAC/D;AAAA,YACF;AAEA,gBAAI,QAAQ;AAEZ;AACE,sBAAQ;AAAA,YACV;AAEA,mBAAO,UAAU,MAAM;AACrB,kBAAI,MAAM,QAAQ,UAAU;AAC1B,8CAA8B,OAAO,aAAa,OAAO;AACzD;AAAA,cACF,WAAW,MAAM,QAAQ,gBAAgB;AACvC,oBAAI,OAAO,MAAM;AACjB,oBAAI,WAAW,MAAM;AAErB,oBAAI,OAAO,KAAK,6BAA6B,cAAc,OAAO,SAAS,sBAAsB,cAAc,CAAC,mCAAmC,QAAQ,GAAG;AAC5J,sBAAI,YAAY,2BAA2B,SAAS,WAAW;AAC/D,sBAAI,SAAS,uBAAuB,OAAO,WAAW,QAAQ;AAC9D,sBAAIA,QAAO,cAAc,OAAO,QAAQ,QAAQ;AAChD,sBAAI,YAAY,iBAAiB;AAEjC,sBAAIA,UAAS,MAAM;AACjB,oCAAgBA,OAAM,UAAU,SAAS;AACzC,0CAAsBA,OAAM,SAAS;AAAA,kBACvC;AAEA;AAAA,gBACF;AAAA,cACF;AAEA,sBAAQ,MAAM;AAAA,YAChB;AAEA;AAME,oBAAM,wRAA4S,OAAO;AAAA,YAC3T;AAAA,UACF;AACA,mBAAS,kBAAkBA,OAAM,UAAU,aAAa;AACtD,gBAAI,YAAYA,MAAK;AAErB,gBAAI,cAAc,MAAM;AAGtB,wBAAU,OAAO,QAAQ;AAAA,YAC3B;AAEA,gBAAI,YAAY,iBAAiB;AACjC,2BAAeA,OAAM,WAAW;AAChC,yDAA6CA,KAAI;AAEjD,gBAAI,uBAAuBA,SAAQ,gBAAgB,+BAA+B,WAAW,GAAG;AAQ9F,kBAAI,iCAAiC,0BAA0B,iCAAiC,iBAAiB,oBAAoB,6BAA6B,KAAKD,KAAI,IAAI,+BAA+B,sBAAsB;AAElO,kCAAkBC,OAAM,OAAO;AAAA,cACjC,OAAO;AAGL,gDAAgC,WAAW,+BAA+B,WAAW;AAAA,cACvF;AAAA,YACF;AAEA,kCAAsBA,OAAM,SAAS;AAAA,UACvC;AAEA,mBAAS,sBAAsB,eAAe,WAAW;AAKvD,gBAAI,cAAc,QAAQ;AAGxB,0BAAY,iBAAiB,aAAa;AAAA,YAC5C;AAGA,gBAAI,YAAY,iBAAiB;AACjC,gBAAIA,QAAO,+BAA+B,eAAe,SAAS;AAElE,gBAAIA,UAAS,MAAM;AACjB,8BAAgBA,OAAM,WAAW,SAAS;AAC1C,oCAAsBA,OAAM,SAAS;AAAA,YACvC;AAAA,UACF;AAEA,mBAAS,gCAAgC,eAAe;AACtD,gBAAI,gBAAgB,cAAc;AAClC,gBAAI,YAAY;AAEhB,gBAAI,kBAAkB,MAAM;AAC1B,0BAAY,cAAc;AAAA,YAC5B;AAEA,kCAAsB,eAAe,SAAS;AAAA,UAChD;AACA,mBAAS,qBAAqB,eAAe,UAAU;AACrD,gBAAI,YAAY;AAEhB,gBAAI;AAEJ,oBAAQ,cAAc,KAAK;AAAA,cACzB,KAAK;AACH,6BAAa,cAAc;AAC3B,oBAAI,gBAAgB,cAAc;AAElC,oBAAI,kBAAkB,MAAM;AAC1B,8BAAY,cAAc;AAAA,gBAC5B;AAEA;AAAA,cAEF,KAAK;AACH,6BAAa,cAAc;AAC3B;AAAA,cAEF;AACE,sBAAM,IAAI,MAAM,yEAA8E;AAAA,YAClG;AAEA,gBAAI,eAAe,MAAM;AAGvB,yBAAW,OAAO,QAAQ;AAAA,YAC5B;AAEA,kCAAsB,eAAe,SAAS;AAAA,UAChD;AAUA,mBAAS,IAAI,aAAa;AACxB,mBAAO,cAAc,MAAM,MAAM,cAAc,MAAM,MAAM,cAAc,OAAO,OAAO,cAAc,OAAO,OAAO,cAAc,MAAO,MAAO,cAAc,OAAO,OAAO,KAAK,cAAc,IAAI,IAAI;AAAA,UACxM;AAEA,mBAAS,wBAAwB;AAC/B,gBAAI,oBAAoB,qBAAqB;AAC3C,kCAAoB;AACpB,sCAAwB;AACxB,oBAAM,IAAI,MAAM,kNAAiO;AAAA,YACnP;AAEA;AACE,kBAAI,2BAA2B,6BAA6B;AAC1D,2CAA2B;AAC3B,+CAA+B;AAE/B,sBAAM,4MAA2N;AAAA,cACnO;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,0CAA0C;AACjD;AACE,sCAAwB,0BAA0B;AAElD;AACE,wCAAwB,oCAAoC;AAAA,cAC9D;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,+BAA+B,OAAO,mBAAmB;AAChE;AAIE,8BAAgB,KAAK;AACrB,iCAAmB,OAAO,gBAAgB,8BAA8B;AAExE,kBAAI,mBAAmB;AACrB,mCAAmB,OAAO,iBAAiB,+BAA+B;AAAA,cAC5E;AAEA,iCAAmB,OAAO,gBAAgB,4BAA4B;AAEtE,kBAAI,mBAAmB;AACrB,mCAAmB,OAAO,iBAAiB,6BAA6B;AAAA,cAC1E;AAEA,gCAAkB;AAAA,YACpB;AAAA,UACF;AAEA,mBAAS,mBAAmB,YAAY,YAAY,gBAAgB;AAClE;AAGE,kBAAIF,WAAU;AACd,kBAAI,cAAc;AAElB,qBAAOA,aAAY,MAAM;AACvB,oBAAI,qBAAqBA,SAAQ,eAAe;AAEhD,oBAAIA,aAAY,eAAeA,SAAQ,UAAU,QAAQ,uBAAuB,SAAS;AACvF,kBAAAA,WAAUA,SAAQ;AAAA,gBACpB,OAAO;AACL,uBAAKA,SAAQ,QAAQ,gBAAgB,SAAS;AAC5C,mCAAeA,QAAO;AAAA,kBACxB;AAEA,sBAAIA,SAAQ,YAAY,MAAM;AAC5B,oBAAAA,WAAUA,SAAQ;AAAA,kBACpB,OAAO;AACL,oBAAAA,WAAU,cAAcA,SAAQ;AAAA,kBAClC;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAEA,cAAI,8CAA8C;AAClD,mBAAS,yCAAyC,OAAO;AACvD;AACE,mBAAK,mBAAmB,mBAAmB,WAAW;AAEpD;AAAA,cACF;AAEA,kBAAI,EAAE,MAAM,OAAO,iBAAiB;AAClC;AAAA,cACF;AAEA,kBAAI,MAAM,MAAM;AAEhB,kBAAI,QAAQ,0BAA0B,QAAQ,YAAY,QAAQ,kBAAkB,QAAQ,qBAAqB,QAAQ,cAAc,QAAQ,iBAAiB,QAAQ,qBAAqB;AAE3L;AAAA,cACF;AAIA,kBAAI,gBAAgB,0BAA0B,KAAK,KAAK;AAExD,kBAAI,gDAAgD,MAAM;AACxD,oBAAI,4CAA4C,IAAI,aAAa,GAAG;AAClE;AAAA,gBACF;AAEA,4DAA4C,IAAI,aAAa;AAAA,cAC/D,OAAO;AACL,8DAA8C,oBAAI,IAAI,CAAC,aAAa,CAAC;AAAA,cACvE;AAEA,kBAAI,gBAAgB;AAEpB,kBAAI;AACF,gCAAgB,KAAK;AAErB,sBAAM,mPAAkQ;AAAA,cAC1Q,UAAE;AACA,oBAAI,eAAe;AACjB,kCAAgB,KAAK;AAAA,gBACvB,OAAO;AACL,oCAAkB;AAAA,gBACpB;AAAA,cACF;AAAA,YACF;AAAA,UACF;AACA,cAAI;AAEJ;AACE,gBAAI,aAAa;AAEjB,0BAAc,SAAUA,UAAS,YAAY,OAAO;AAMlD,kBAAI,6BAA6B,2BAA2B,YAAY,UAAU;AAElF,kBAAI;AACF,uBAAO,UAAUA,UAAS,YAAY,KAAK;AAAA,cAC7C,SAAS,eAAe;AACtB,oBAAI,mCAAmC,KAAK,kBAAkB,QAAQ,OAAO,kBAAkB,YAAY,OAAO,cAAc,SAAS,YAAY;AAGnJ,wBAAM;AAAA,gBACR;AAIA,yCAAyB;AACzB,qCAAqB;AAIrB,sCAAsBA,UAAS,UAAU;AAEzC,2CAA2B,YAAY,0BAA0B;AAEjE,oBAAK,WAAW,OAAO,aAAa;AAElC,qCAAmB,UAAU;AAAA,gBAC/B;AAGA,sCAAsB,MAAM,WAAW,MAAMA,UAAS,YAAY,KAAK;AAEvE,oBAAI,eAAe,GAAG;AACpB,sBAAI,cAAc,iBAAiB;AAEnC,sBAAI,OAAO,gBAAgB,YAAY,gBAAgB,QAAQ,YAAY,oBAAoB,OAAO,kBAAkB,YAAY,kBAAkB,QAAQ,CAAC,cAAc,kBAAkB;AAE7L,kCAAc,mBAAmB;AAAA,kBACnC;AAAA,gBACF;AAIA,sBAAM;AAAA,cACR;AAAA,YACF;AAAA,UACF;AAEA,cAAI,6BAA6B;AACjC,cAAI;AAEJ;AACE,4DAAgD,oBAAI,IAAI;AAAA,UAC1D;AAEA,mBAAS,iCAAiC,OAAO;AAC/C;AACE,kBAAI,eAAe,CAAC,2CAA2C,GAAG;AAChE,wBAAQ,MAAM,KAAK;AAAA,kBACjB,KAAK;AAAA,kBACL,KAAK;AAAA,kBACL,KAAK,qBACH;AACE,wBAAI,yBAAyB,kBAAkB,0BAA0B,cAAc,KAAK;AAE5F,wBAAI,YAAY;AAEhB,wBAAI,CAAC,8CAA8C,IAAI,SAAS,GAAG;AACjE,oEAA8C,IAAI,SAAS;AAC3D,0BAAI,wBAAwB,0BAA0B,KAAK,KAAK;AAEhE,4BAAM,oNAA8N,uBAAuB,wBAAwB,sBAAsB;AAAA,oBAC3S;AAEA;AAAA,kBACF;AAAA,kBAEF,KAAK,gBACH;AACE,wBAAI,CAAC,4BAA4B;AAC/B,4BAAM,2IAAqJ;AAE3J,mDAA6B;AAAA,oBAC/B;AAEA;AAAA,kBACF;AAAA,gBACJ;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,uBAAuBE,OAAM,OAAO;AAC3C;AACE,kBAAI,mBAAmB;AACrB,oBAAI,mBAAmBA,MAAK;AAC5B,iCAAiB,QAAQ,SAAU,iBAAiB;AAClD,qCAAmBA,OAAM,iBAAiB,KAAK;AAAA,gBACjD,CAAC;AAAA,cAGH;AAAA,YACF;AAAA,UACF;AACA,cAAI,sBAAsB,CAAC;AAE3B,mBAAS,mBAAmB,eAAe,UAAU;AACnD;AAGE,kBAAI,WAAW,uBAAuB;AAEtC,kBAAI,aAAa,MAAM;AACrB,yBAAS,KAAK,QAAQ;AACtB,uBAAO;AAAA,cACT,OAAO;AACL,uBAAO,iBAAiB,eAAe,QAAQ;AAAA,cACjD;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,iBAAiB,cAAc;AACtC,gBAAK,iBAAiB,qBAAqB;AACzC;AAAA,YACF;AAGA,mBAAO,eAAe,YAAY;AAAA,UACpC;AAEA,mBAAS,iCAAiC;AAExC,mBAAQ,uBAAuB,YAAY;AAAA,UAC7C;AAEA,mBAAS,kCAAkC,OAAO;AAChD;AACE,kBAAI,MAAM,OAAO,gBAAgB;AAC/B,oBAAI,CAAC,2BAA2B,GAAG;AAEjC;AAAA,gBACF;AAAA,cACF,OAAO;AAEL,oBAAI,CAAC,uBAAuB,GAAG;AAE7B;AAAA,gBACF;AAEA,oBAAI,qBAAqB,WAAW;AAGlC;AAAA,gBACF;AAEA,oBAAI,MAAM,QAAQ,qBAAqB,MAAM,QAAQ,cAAc,MAAM,QAAQ,qBAAqB;AAGpG;AAAA,gBACF;AAAA,cACF;AAEA,kBAAI,uBAAuB,YAAY,MAAM;AAC3C,oBAAI,gBAAgB;AAEpB,oBAAI;AACF,kCAAgB,KAAK;AAErB,wBAAM,2XAAwa,0BAA0B,KAAK,CAAC;AAAA,gBAChd,UAAE;AACA,sBAAI,eAAe;AACjB,oCAAgB,KAAK;AAAA,kBACvB,OAAO;AACL,sCAAkB;AAAA,kBACpB;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,6CAA6CA,OAAM;AAC1D;AACE,kBAAIA,MAAK,QAAQ,cAAc,2BAA2B,KAAK,uBAAuB,YAAY,MAAM;AACtG,sBAAM,2ZAA6c;AAAA,cACrd;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,4BAA4B,WAAW;AAC9C;AACE,yCAA2B;AAAA,YAC7B;AAAA,UACF;AAGA,cAAI,gBAAgB;AAEpB,cAAI,mBAAmB;AACvB,cAAI,oBAAoB,SAAU,SAAS;AACzC;AACE,8BAAgB;AAAA,YAClB;AAAA,UACF;AACA,mBAAS,+BAA+B,MAAM;AAC5C;AACE,kBAAI,kBAAkB,MAAM;AAE1B,uBAAO;AAAA,cACT;AAEA,kBAAI,SAAS,cAAc,IAAI;AAE/B,kBAAI,WAAW,QAAW;AACxB,uBAAO;AAAA,cACT;AAGA,qBAAO,OAAO;AAAA,YAChB;AAAA,UACF;AACA,mBAAS,4BAA4B,MAAM;AAEzC,mBAAO,+BAA+B,IAAI;AAAA,UAC5C;AACA,mBAAS,iCAAiC,MAAM;AAC9C;AACE,kBAAI,kBAAkB,MAAM;AAE1B,uBAAO;AAAA,cACT;AAEA,kBAAI,SAAS,cAAc,IAAI;AAE/B,kBAAI,WAAW,QAAW;AAExB,oBAAI,SAAS,QAAQ,SAAS,UAAa,OAAO,KAAK,WAAW,YAAY;AAI5E,sBAAI,gBAAgB,+BAA+B,KAAK,MAAM;AAE9D,sBAAI,KAAK,WAAW,eAAe;AACjC,wBAAI,gBAAgB;AAAA,sBAClB,UAAU;AAAA,sBACV,QAAQ;AAAA,oBACV;AAEA,wBAAI,KAAK,gBAAgB,QAAW;AAClC,oCAAc,cAAc,KAAK;AAAA,oBACnC;AAEA,2BAAO;AAAA,kBACT;AAAA,gBACF;AAEA,uBAAO;AAAA,cACT;AAGA,qBAAO,OAAO;AAAA,YAChB;AAAA,UACF;AACA,mBAAS,kCAAkC,OAAO,SAAS;AACzD;AACE,kBAAI,kBAAkB,MAAM;AAE1B,uBAAO;AAAA,cACT;AAEA,kBAAI,WAAW,MAAM;AACrB,kBAAI,WAAW,QAAQ;AAEvB,kBAAI,uBAAuB;AAC3B,kBAAI,mBAAmB,OAAO,aAAa,YAAY,aAAa,OAAO,SAAS,WAAW;AAE/F,sBAAQ,MAAM,KAAK;AAAA,gBACjB,KAAK,gBACH;AACE,sBAAI,OAAO,aAAa,YAAY;AAClC,2CAAuB;AAAA,kBACzB;AAEA;AAAA,gBACF;AAAA,gBAEF,KAAK,mBACH;AACE,sBAAI,OAAO,aAAa,YAAY;AAClC,2CAAuB;AAAA,kBACzB,WAAW,qBAAqB,iBAAiB;AAK/C,2CAAuB;AAAA,kBACzB;AAEA;AAAA,gBACF;AAAA,gBAEF,KAAK,YACH;AACE,sBAAI,qBAAqB,wBAAwB;AAC/C,2CAAuB;AAAA,kBACzB,WAAW,qBAAqB,iBAAiB;AAC/C,2CAAuB;AAAA,kBACzB;AAEA;AAAA,gBACF;AAAA,gBAEF,KAAK;AAAA,gBACL,KAAK,qBACH;AACE,sBAAI,qBAAqB,iBAAiB;AAGxC,2CAAuB;AAAA,kBACzB,WAAW,qBAAqB,iBAAiB;AAC/C,2CAAuB;AAAA,kBACzB;AAEA;AAAA,gBACF;AAAA,gBAEF;AACE,yBAAO;AAAA,cACX;AAGA,kBAAI,sBAAsB;AAMxB,oBAAI,aAAa,cAAc,QAAQ;AAEvC,oBAAI,eAAe,UAAa,eAAe,cAAc,QAAQ,GAAG;AACtE,yBAAO;AAAA,gBACT;AAAA,cACF;AAEA,qBAAO;AAAA,YACT;AAAA,UACF;AACA,mBAAS,uCAAuC,OAAO;AACrD;AACE,kBAAI,kBAAkB,MAAM;AAE1B;AAAA,cACF;AAEA,kBAAI,OAAO,YAAY,YAAY;AACjC;AAAA,cACF;AAEA,kBAAI,qBAAqB,MAAM;AAC7B,mCAAmB,oBAAI,QAAQ;AAAA,cACjC;AAEA,+BAAiB,IAAI,KAAK;AAAA,YAC5B;AAAA,UACF;AACA,cAAI,kBAAkB,SAAUA,OAAM,QAAQ;AAC5C;AACE,kBAAI,kBAAkB,MAAM;AAE1B;AAAA,cACF;AAEA,kBAAI,gBAAgB,OAAO,eACvB,kBAAkB,OAAO;AAC7B,kCAAoB;AACpB,wBAAU,WAAY;AACpB,sDAAsCA,MAAK,SAAS,iBAAiB,aAAa;AAAA,cACpF,CAAC;AAAA,YACH;AAAA,UACF;AACA,cAAI,eAAe,SAAUA,OAAM,SAAS;AAC1C;AACE,kBAAIA,MAAK,YAAY,oBAAoB;AAIvC;AAAA,cACF;AAEA,kCAAoB;AACpB,wBAAU,WAAY;AACpB,gCAAgB,SAASA,OAAM,MAAM,IAAI;AAAA,cAC3C,CAAC;AAAA,YACH;AAAA,UACF;AAEA,mBAAS,sCAAsC,OAAO,iBAAiB,eAAe;AACpF;AACE,kBAAI,YAAY,MAAM,WAClB,QAAQ,MAAM,OACd,UAAU,MAAM,SAChB,MAAM,MAAM,KACZ,OAAO,MAAM;AACjB,kBAAI,gBAAgB;AAEpB,sBAAQ,KAAK;AAAA,gBACX,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AACH,kCAAgB;AAChB;AAAA,gBAEF,KAAK;AACH,kCAAgB,KAAK;AACrB;AAAA,cACJ;AAEA,kBAAI,kBAAkB,MAAM;AAC1B,sBAAM,IAAI,MAAM,qDAAqD;AAAA,cACvE;AAEA,kBAAI,cAAc;AAClB,kBAAI,eAAe;AAEnB,kBAAI,kBAAkB,MAAM;AAC1B,oBAAI,SAAS,cAAc,aAAa;AAExC,oBAAI,WAAW,QAAW;AACxB,sBAAI,cAAc,IAAI,MAAM,GAAG;AAC7B,mCAAe;AAAA,kBACjB,WAAW,gBAAgB,IAAI,MAAM,GAAG;AACtC,wBAAI,QAAQ,gBAAgB;AAC1B,qCAAe;AAAA,oBACjB,OAAO;AACL,oCAAc;AAAA,oBAChB;AAAA,kBACF;AAAA,gBACF;AAAA,cACF;AAEA,kBAAI,qBAAqB,MAAM;AAC7B,oBAAI,iBAAiB,IAAI,KAAK,KAAK,cAAc,QAAQ,iBAAiB,IAAI,SAAS,GAAG;AACxF,iCAAe;AAAA,gBACjB;AAAA,cACF;AAEA,kBAAI,cAAc;AAChB,sBAAM,qBAAqB;AAAA,cAC7B;AAEA,kBAAI,gBAAgB,aAAa;AAC/B,oBAAI,QAAQ,+BAA+B,OAAO,QAAQ;AAE1D,oBAAI,UAAU,MAAM;AAClB,wCAAsB,OAAO,OAAO,UAAU,WAAW;AAAA,gBAC3D;AAAA,cACF;AAEA,kBAAI,UAAU,QAAQ,CAAC,cAAc;AACnC,sDAAsC,OAAO,iBAAiB,aAAa;AAAA,cAC7E;AAEA,kBAAI,YAAY,MAAM;AACpB,sDAAsC,SAAS,iBAAiB,aAAa;AAAA,cAC/E;AAAA,YACF;AAAA,UACF;AAEA,cAAI,8BAA8B,SAAUA,OAAM,UAAU;AAC1D;AACE,kBAAI,gBAAgB,oBAAI,IAAI;AAC5B,kBAAI,QAAQ,IAAI,IAAI,SAAS,IAAI,SAAU,QAAQ;AACjD,uBAAO,OAAO;AAAA,cAChB,CAAC,CAAC;AACF,4DAA8CA,MAAK,SAAS,OAAO,aAAa;AAChF,qBAAO;AAAA,YACT;AAAA,UACF;AAEA,mBAAS,8CAA8C,OAAO,OAAO,eAAe;AAClF;AACE,kBAAI,QAAQ,MAAM,OACd,UAAU,MAAM,SAChB,MAAM,MAAM,KACZ,OAAO,MAAM;AACjB,kBAAI,gBAAgB;AAEpB,sBAAQ,KAAK;AAAA,gBACX,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AACH,kCAAgB;AAChB;AAAA,gBAEF,KAAK;AACH,kCAAgB,KAAK;AACrB;AAAA,cACJ;AAEA,kBAAI,WAAW;AAEf,kBAAI,kBAAkB,MAAM;AAC1B,oBAAI,MAAM,IAAI,aAAa,GAAG;AAC5B,6BAAW;AAAA,gBACb;AAAA,cACF;AAEA,kBAAI,UAAU;AAIZ,mDAAmC,OAAO,aAAa;AAAA,cACzD,OAAO;AAEL,oBAAI,UAAU,MAAM;AAClB,gEAA8C,OAAO,OAAO,aAAa;AAAA,gBAC3E;AAAA,cACF;AAEA,kBAAI,YAAY,MAAM;AACpB,8DAA8C,SAAS,OAAO,aAAa;AAAA,cAC7E;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,mCAAmC,OAAO,eAAe;AAChE;AACE,kBAAI,qBAAqB,wCAAwC,OAAO,aAAa;AAErF,kBAAI,oBAAoB;AACtB;AAAA,cACF;AAGA,kBAAIhC,QAAO;AAEX,qBAAO,MAAM;AACX,wBAAQA,MAAK,KAAK;AAAA,kBAChB,KAAK;AACH,kCAAc,IAAIA,MAAK,SAAS;AAChC;AAAA,kBAEF,KAAK;AACH,kCAAc,IAAIA,MAAK,UAAU,aAAa;AAC9C;AAAA,kBAEF,KAAK;AACH,kCAAc,IAAIA,MAAK,UAAU,aAAa;AAC9C;AAAA,gBACJ;AAEA,oBAAIA,MAAK,WAAW,MAAM;AACxB,wBAAM,IAAI,MAAM,+BAA+B;AAAA,gBACjD;AAEA,gBAAAA,QAAOA,MAAK;AAAA,cACd;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,wCAAwC,OAAO,eAAe;AACrE;AACE,kBAAIA,QAAO;AACX,kBAAI,qBAAqB;AAEzB,qBAAO,MAAM;AACX,oBAAIA,MAAK,QAAQ,eAAe;AAE9B,uCAAqB;AACrB,gCAAc,IAAIA,MAAK,SAAS;AAAA,gBAClC,WAAWA,MAAK,UAAU,MAAM;AAC9B,kBAAAA,MAAK,MAAM,SAASA;AACpB,kBAAAA,QAAOA,MAAK;AACZ;AAAA,gBACF;AAEA,oBAAIA,UAAS,OAAO;AAClB,yBAAO;AAAA,gBACT;AAEA,uBAAOA,MAAK,YAAY,MAAM;AAC5B,sBAAIA,MAAK,WAAW,QAAQA,MAAK,WAAW,OAAO;AACjD,2BAAO;AAAA,kBACT;AAEA,kBAAAA,QAAOA,MAAK;AAAA,gBACd;AAEA,gBAAAA,MAAK,QAAQ,SAASA,MAAK;AAC3B,gBAAAA,QAAOA,MAAK;AAAA,cACd;AAAA,YACF;AAEA,mBAAO;AAAA,UACT;AAEA,cAAI;AAEJ;AACE,gCAAoB;AAEpB,gBAAI;AACF,kBAAI,sBAAsB,OAAO,kBAAkB,CAAC,CAAC;AAGrD,kCAAI,IAAI,CAAC,CAAC,qBAAqB,IAAI,CAAC,CAAC;AACrC,kCAAI,IAAI,CAAC,mBAAmB,CAAC;AAAA,YAE/B,SAASN,IAAG;AAEV,kCAAoB;AAAA,YACtB;AAAA,UACF;AAEA,mBAAS,UAAU,KAAK,cAAc,KAAK,MAAM;AAE/C,iBAAK,MAAM;AACX,iBAAK,MAAM;AACX,iBAAK,cAAc;AACnB,iBAAK,OAAO;AACZ,iBAAK,YAAY;AAEjB,iBAAK,SAAS;AACd,iBAAK,QAAQ;AACb,iBAAK,UAAU;AACf,iBAAK,QAAQ;AACb,iBAAK,MAAM;AACX,iBAAK,eAAe;AACpB,iBAAK,gBAAgB;AACrB,iBAAK,cAAc;AACnB,iBAAK,gBAAgB;AACrB,iBAAK,eAAe;AACpB,iBAAK,OAAO;AAEZ,iBAAK,QAAQ;AACb,iBAAK,eAAe;AACpB,iBAAK,YAAY;AACjB,iBAAK,QAAQ;AACb,iBAAK,aAAa;AAClB,iBAAK,YAAY;AAEjB;AAaE,mBAAK,iBAAiB,OAAO;AAC7B,mBAAK,kBAAkB,OAAO;AAC9B,mBAAK,mBAAmB,OAAO;AAC/B,mBAAK,mBAAmB,OAAO;AAI/B,mBAAK,iBAAiB;AACtB,mBAAK,kBAAkB;AACvB,mBAAK,mBAAmB;AACxB,mBAAK,mBAAmB;AAAA,YAC1B;AAEA;AAEE,mBAAK,eAAe;AACpB,mBAAK,cAAc;AACnB,mBAAK,qBAAqB;AAC1B,mBAAK,kBAAkB;AAEvB,kBAAI,CAAC,qBAAqB,OAAO,OAAO,sBAAsB,YAAY;AACxE,uBAAO,kBAAkB,IAAI;AAAA,cAC/B;AAAA,YACF;AAAA,UACF;AAeA,cAAI,cAAc,SAAU,KAAK,cAAc,KAAK,MAAM;AAExD,mBAAO,IAAI,UAAU,KAAK,cAAc,KAAK,IAAI;AAAA,UACnD;AAEA,mBAAS,kBAAkBa,YAAW;AACpC,gBAAI,YAAYA,WAAU;AAC1B,mBAAO,CAAC,EAAE,aAAa,UAAU;AAAA,UACnC;AAEA,mBAAS,0BAA0B,MAAM;AACvC,mBAAO,OAAO,SAAS,cAAc,CAAC,kBAAkB,IAAI,KAAK,KAAK,iBAAiB;AAAA,UACzF;AACA,mBAAS,wBAAwBA,YAAW;AAC1C,gBAAI,OAAOA,eAAc,YAAY;AACnC,qBAAO,kBAAkBA,UAAS,IAAI,iBAAiB;AAAA,YACzD,WAAWA,eAAc,UAAaA,eAAc,MAAM;AACxD,kBAAI,WAAWA,WAAU;AAEzB,kBAAI,aAAa,wBAAwB;AACvC,uBAAO;AAAA,cACT;AAEA,kBAAI,aAAa,iBAAiB;AAChC,uBAAO;AAAA,cACT;AAAA,YACF;AAEA,mBAAO;AAAA,UACT;AAEA,mBAAS,qBAAqBuB,UAAS,cAAc;AACnD,gBAAIrB,kBAAiBqB,SAAQ;AAE7B,gBAAIrB,oBAAmB,MAAM;AAM3B,cAAAA,kBAAiB,YAAYqB,SAAQ,KAAK,cAAcA,SAAQ,KAAKA,SAAQ,IAAI;AACjF,cAAArB,gBAAe,cAAcqB,SAAQ;AACrC,cAAArB,gBAAe,OAAOqB,SAAQ;AAC9B,cAAArB,gBAAe,YAAYqB,SAAQ;AAEnC;AAEE,gBAAArB,gBAAe,eAAeqB,SAAQ;AACtC,gBAAArB,gBAAe,cAAcqB,SAAQ;AACrC,gBAAArB,gBAAe,kBAAkBqB,SAAQ;AAAA,cAC3C;AAEA,cAAArB,gBAAe,YAAYqB;AAC3B,cAAAA,SAAQ,YAAYrB;AAAA,YACtB,OAAO;AACL,cAAAA,gBAAe,eAAe;AAE9B,cAAAA,gBAAe,OAAOqB,SAAQ;AAG9B,cAAArB,gBAAe,QAAQ;AAEvB,cAAAA,gBAAe,eAAe;AAC9B,cAAAA,gBAAe,YAAY;AAE3B;AAKE,gBAAAA,gBAAe,iBAAiB;AAChC,gBAAAA,gBAAe,kBAAkB;AAAA,cACnC;AAAA,YACF;AAIA,YAAAA,gBAAe,QAAQqB,SAAQ,QAAQ;AACvC,YAAArB,gBAAe,aAAaqB,SAAQ;AACpC,YAAArB,gBAAe,QAAQqB,SAAQ;AAC/B,YAAArB,gBAAe,QAAQqB,SAAQ;AAC/B,YAAArB,gBAAe,gBAAgBqB,SAAQ;AACvC,YAAArB,gBAAe,gBAAgBqB,SAAQ;AACvC,YAAArB,gBAAe,cAAcqB,SAAQ;AAGrC,gBAAI,sBAAsBA,SAAQ;AAClC,YAAArB,gBAAe,eAAe,wBAAwB,OAAO,OAAO;AAAA,cAClE,OAAO,oBAAoB;AAAA,cAC3B,cAAc,oBAAoB;AAAA,YACpC;AAEA,YAAAA,gBAAe,UAAUqB,SAAQ;AACjC,YAAArB,gBAAe,QAAQqB,SAAQ;AAC/B,YAAArB,gBAAe,MAAMqB,SAAQ;AAE7B;AACE,cAAArB,gBAAe,mBAAmBqB,SAAQ;AAC1C,cAAArB,gBAAe,mBAAmBqB,SAAQ;AAAA,YAC5C;AAEA;AACE,cAAArB,gBAAe,qBAAqBqB,SAAQ;AAE5C,sBAAQrB,gBAAe,KAAK;AAAA,gBAC1B,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AACH,kBAAAA,gBAAe,OAAO,+BAA+BqB,SAAQ,IAAI;AACjE;AAAA,gBAEF,KAAK;AACH,kBAAArB,gBAAe,OAAO,4BAA4BqB,SAAQ,IAAI;AAC9D;AAAA,gBAEF,KAAK;AACH,kBAAArB,gBAAe,OAAO,iCAAiCqB,SAAQ,IAAI;AACnE;AAAA,cACJ;AAAA,YACF;AAEA,mBAAOrB;AAAA,UACT;AAEA,mBAAS,oBAAoBA,iBAAgB2B,cAAa;AASxD,YAAA3B,gBAAe,SAAS,aAAa;AAErC,gBAAIqB,WAAUrB,gBAAe;AAE7B,gBAAIqB,aAAY,MAAM;AAEpB,cAAArB,gBAAe,aAAa;AAC5B,cAAAA,gBAAe,QAAQ2B;AACvB,cAAA3B,gBAAe,QAAQ;AACvB,cAAAA,gBAAe,eAAe;AAC9B,cAAAA,gBAAe,gBAAgB;AAC/B,cAAAA,gBAAe,gBAAgB;AAC/B,cAAAA,gBAAe,cAAc;AAC7B,cAAAA,gBAAe,eAAe;AAC9B,cAAAA,gBAAe,YAAY;AAE3B;AAGE,gBAAAA,gBAAe,mBAAmB;AAClC,gBAAAA,gBAAe,mBAAmB;AAAA,cACpC;AAAA,YACF,OAAO;AAEL,cAAAA,gBAAe,aAAaqB,SAAQ;AACpC,cAAArB,gBAAe,QAAQqB,SAAQ;AAC/B,cAAArB,gBAAe,QAAQqB,SAAQ;AAC/B,cAAArB,gBAAe,eAAe;AAC9B,cAAAA,gBAAe,YAAY;AAC3B,cAAAA,gBAAe,gBAAgBqB,SAAQ;AACvC,cAAArB,gBAAe,gBAAgBqB,SAAQ;AACvC,cAAArB,gBAAe,cAAcqB,SAAQ;AAErC,cAAArB,gBAAe,OAAOqB,SAAQ;AAG9B,kBAAI,sBAAsBA,SAAQ;AAClC,cAAArB,gBAAe,eAAe,wBAAwB,OAAO,OAAO;AAAA,gBAClE,OAAO,oBAAoB;AAAA,gBAC3B,cAAc,oBAAoB;AAAA,cACpC;AAEA;AAGE,gBAAAA,gBAAe,mBAAmBqB,SAAQ;AAC1C,gBAAArB,gBAAe,mBAAmBqB,SAAQ;AAAA,cAC5C;AAAA,YACF;AAEA,mBAAOrB;AAAA,UACT;AACA,mBAAS,oBAAoB,KAAK,cAAc,oCAAoC;AAClF,gBAAI;AAEJ,gBAAI,QAAQ,gBAAgB;AAC1B,qBAAO;AAEP,kBAAI,iBAAiB,MAAM;AACzB,wBAAQ;AAER;AACE,0BAAQ;AAAA,gBACV;AAAA,cACF;AAAA,YACF,OAAO;AACL,qBAAO;AAAA,YACT;AAEA,gBAAK,mBAAmB;AAItB,sBAAQ;AAAA,YACV;AAEA,mBAAO,YAAY,UAAU,MAAM,MAAM,IAAI;AAAA,UAC/C;AACA,mBAAS,4BAA4B,MACrC,KAAK,cAAc,OAAO,MAAM,OAAO;AACrC,gBAAI,WAAW;AAEf,gBAAI,eAAe;AAEnB,gBAAI,OAAO,SAAS,YAAY;AAC9B,kBAAI,kBAAkB,IAAI,GAAG;AAC3B,2BAAW;AAEX;AACE,iCAAe,4BAA4B,YAAY;AAAA,gBACzD;AAAA,cACF,OAAO;AACL;AACE,iCAAe,+BAA+B,YAAY;AAAA,gBAC5D;AAAA,cACF;AAAA,YACF,WAAW,OAAO,SAAS,UAAU;AACnC,yBAAW;AAAA,YACb,OAAO;AACL;AAAQ,wBAAQ,MAAM;AAAA,kBACpB,KAAK;AACH,2BAAO,wBAAwB,aAAa,UAAU,MAAM,OAAO,GAAG;AAAA,kBAExE,KAAK;AACH,+BAAW;AACX,4BAAQ;AAER,yBAAM,OAAO,oBAAoB,QAAQ;AAEvC,8BAAQ;AAAA,oBACV;AAEA;AAAA,kBAEF,KAAK;AACH,2BAAO,wBAAwB,cAAc,MAAM,OAAO,GAAG;AAAA,kBAE/D,KAAK;AACH,2BAAO,wBAAwB,cAAc,MAAM,OAAO,GAAG;AAAA,kBAE/D,KAAK;AACH,2BAAO,4BAA4B,cAAc,MAAM,OAAO,GAAG;AAAA,kBAEnE,KAAK;AACH,2BAAO,yBAAyB,cAAc,MAAM,OAAO,GAAG;AAAA,kBAEhE,KAAK;AAAA,kBAIL,KAAK;AAAA,kBAIL,KAAK;AAAA,kBAIL,KAAK;AAAA,kBAIL,KAAK;AAAA,kBAIL,SACE;AACE,wBAAI,OAAO,SAAS,YAAY,SAAS,MAAM;AAC7C,8BAAQ,KAAK,UAAU;AAAA,wBACrB,KAAK;AACH,qCAAW;AACX,gCAAM;AAAA,wBAER,KAAK;AAEH,qCAAW;AACX,gCAAM;AAAA,wBAER,KAAK;AACH,qCAAW;AAEX;AACE,2CAAe,iCAAiC,YAAY;AAAA,0BAC9D;AAEA,gCAAM;AAAA,wBAER,KAAK;AACH,qCAAW;AACX,gCAAM;AAAA,wBAER,KAAK;AACH,qCAAW;AACX,yCAAe;AACf,gCAAM;AAAA,sBACV;AAAA,oBACF;AAEA,wBAAI,OAAO;AAEX;AACE,0BAAI,SAAS,UAAa,OAAO,SAAS,YAAY,SAAS,QAAQ,OAAO,KAAK,IAAI,EAAE,WAAW,GAAG;AACrG,gCAAQ;AAAA,sBACV;AAEA,0BAAI,YAAY,QAAQ,0BAA0B,KAAK,IAAI;AAE3D,0BAAI,WAAW;AACb,gCAAQ,qCAAqC,YAAY;AAAA,sBAC3D;AAAA,oBACF;AAEA,0BAAM,IAAI,MAAM,0HAA+H,eAAe,QAAQ,OAAO,OAAO,OAAO,QAAQ,MAAM,KAAK;AAAA,kBAChN;AAAA,gBACJ;AAAA,YACF;AAEA,gBAAI,QAAQ,YAAY,UAAU,cAAc,KAAK,IAAI;AACzD,kBAAM,cAAc;AACpB,kBAAM,OAAO;AACb,kBAAM,QAAQ;AAEd;AACE,oBAAM,cAAc;AAAA,YACtB;AAEA,mBAAO;AAAA,UACT;AACA,mBAAS,uBAAuB,SAAS,MAAM,OAAO;AACpD,gBAAI,QAAQ;AAEZ;AACE,sBAAQ,QAAQ;AAAA,YAClB;AAEA,gBAAI,OAAO,QAAQ;AACnB,gBAAI,MAAM,QAAQ;AAClB,gBAAI,eAAe,QAAQ;AAC3B,gBAAI,QAAQ,4BAA4B,MAAM,KAAK,cAAc,OAAO,MAAM,KAAK;AAEnF;AACE,oBAAM,eAAe,QAAQ;AAC7B,oBAAM,cAAc,QAAQ;AAAA,YAC9B;AAEA,mBAAO;AAAA,UACT;AACA,mBAAS,wBAAwB,UAAU,MAAM,OAAO,KAAK;AAC3D,gBAAI,QAAQ,YAAYlB,WAAU,UAAU,KAAK,IAAI;AACrD,kBAAM,QAAQ;AACd,mBAAO;AAAA,UACT;AAEA,mBAAS,wBAAwB,cAAc,MAAM,OAAO,KAAK;AAC/D;AACE,kBAAI,OAAO,aAAa,OAAO,UAAU;AACvC,sBAAM,6FAA6F,OAAO,aAAa,EAAE;AAAA,cAC3H;AAAA,YACF;AAEA,gBAAI,QAAQ,YAAY,UAAU,cAAc,KAAK,OAAO,WAAW;AACvE,kBAAM,cAAc;AACpB,kBAAM,QAAQ;AAEd;AACE,oBAAM,YAAY;AAAA,gBAChB,gBAAgB;AAAA,gBAChB,uBAAuB;AAAA,cACzB;AAAA,YACF;AAEA,mBAAO;AAAA,UACT;AAEA,mBAAS,wBAAwB,cAAc,MAAM,OAAO,KAAK;AAC/D,gBAAI,QAAQ,YAAY,mBAAmB,cAAc,KAAK,IAAI;AAClE,kBAAM,cAAc;AACpB,kBAAM,QAAQ;AACd,mBAAO;AAAA,UACT;AACA,mBAAS,4BAA4B,cAAc,MAAM,OAAO,KAAK;AACnE,gBAAI,QAAQ,YAAY,uBAAuB,cAAc,KAAK,IAAI;AACtE,kBAAM,cAAc;AACpB,kBAAM,QAAQ;AACd,mBAAO;AAAA,UACT;AACA,mBAAS,yBAAyB,cAAc,MAAM,OAAO,KAAK;AAChE,gBAAI,QAAQ,YAAY,oBAAoB,cAAc,KAAK,IAAI;AACnE,kBAAM,cAAc;AACpB,kBAAM,QAAQ;AACd,gBAAI,uBAAuB;AAAA,cACzB,UAAU;AAAA,YACZ;AACA,kBAAM,YAAY;AAClB,mBAAO;AAAA,UACT;AACA,mBAAS,oBAAoB,SAAS,MAAM,OAAO;AACjD,gBAAI,QAAQ,YAAY,UAAU,SAAS,MAAM,IAAI;AACrD,kBAAM,QAAQ;AACd,mBAAO;AAAA,UACT;AACA,mBAAS,yCAAyC;AAChD,gBAAI,QAAQ,YAAY,eAAe,MAAM,MAAM,MAAM;AACzD,kBAAM,cAAc;AACpB,mBAAO;AAAA,UACT;AACA,mBAAS,kCAAkC,gBAAgB;AACzD,gBAAI,QAAQ,YAAY,oBAAoB,MAAM,MAAM,MAAM;AAC9D,kBAAM,YAAY;AAClB,mBAAO;AAAA,UACT;AACA,mBAAS,sBAAsB,QAAQ,MAAM,OAAO;AAClD,gBAAI,eAAe,OAAO,aAAa,OAAO,OAAO,WAAW,CAAC;AACjE,gBAAI,QAAQ,YAAY,YAAY,cAAc,OAAO,KAAK,IAAI;AAClE,kBAAM,QAAQ;AACd,kBAAM,YAAY;AAAA,cAChB,eAAe,OAAO;AAAA,cACtB,iBAAiB;AAAA;AAAA,cAEjB,gBAAgB,OAAO;AAAA,YACzB;AACA,mBAAO;AAAA,UACT;AAEA,mBAAS,2BAA2B,QAAQ,QAAQ;AAClD,gBAAI,WAAW,MAAM;AAGnB,uBAAS,YAAY,wBAAwB,MAAM,MAAM,MAAM;AAAA,YACjE;AAOA,mBAAO,MAAM,OAAO;AACpB,mBAAO,MAAM,OAAO;AACpB,mBAAO,cAAc,OAAO;AAC5B,mBAAO,OAAO,OAAO;AACrB,mBAAO,YAAY,OAAO;AAC1B,mBAAO,SAAS,OAAO;AACvB,mBAAO,QAAQ,OAAO;AACtB,mBAAO,UAAU,OAAO;AACxB,mBAAO,QAAQ,OAAO;AACtB,mBAAO,MAAM,OAAO;AACpB,mBAAO,eAAe,OAAO;AAC7B,mBAAO,gBAAgB,OAAO;AAC9B,mBAAO,cAAc,OAAO;AAC5B,mBAAO,gBAAgB,OAAO;AAC9B,mBAAO,eAAe,OAAO;AAC7B,mBAAO,OAAO,OAAO;AACrB,mBAAO,QAAQ,OAAO;AACtB,mBAAO,eAAe,OAAO;AAC7B,mBAAO,YAAY,OAAO;AAC1B,mBAAO,QAAQ,OAAO;AACtB,mBAAO,aAAa,OAAO;AAC3B,mBAAO,YAAY,OAAO;AAE1B;AACE,qBAAO,iBAAiB,OAAO;AAC/B,qBAAO,kBAAkB,OAAO;AAChC,qBAAO,mBAAmB,OAAO;AACjC,qBAAO,mBAAmB,OAAO;AAAA,YACnC;AAEA,mBAAO,eAAe,OAAO;AAC7B,mBAAO,cAAc,OAAO;AAC5B,mBAAO,qBAAqB,OAAO;AACnC,mBAAO,kBAAkB,OAAO;AAChC,mBAAO;AAAA,UACT;AAEA,mBAAS,cAAc,eAAe,KAAKqF,UAAS,kBAAkB,oBAAoB;AACxF,iBAAK,MAAM;AACX,iBAAK,gBAAgB;AACrB,iBAAK,kBAAkB;AACvB,iBAAK,UAAU;AACf,iBAAK,YAAY;AACjB,iBAAK,eAAe;AACpB,iBAAK,gBAAgB;AACrB,iBAAK,UAAU;AACf,iBAAK,iBAAiB;AACtB,iBAAK,eAAe;AACpB,iBAAK,mBAAmB;AACxB,iBAAK,aAAa,cAAc,OAAO;AACvC,iBAAK,kBAAkB,cAAc,WAAW;AAChD,iBAAK,eAAe;AACpB,iBAAK,iBAAiB;AACtB,iBAAK,cAAc;AACnB,iBAAK,eAAe;AACpB,iBAAK,mBAAmB;AACxB,iBAAK,gBAAgB;AACrB,iBAAK,iBAAiB;AACtB,iBAAK,gBAAgB,cAAc,OAAO;AAC1C,iBAAK,mBAAmB;AACxB,iBAAK,qBAAqB;AAE1B;AACE,mBAAK,kCAAkC;AAAA,YACzC;AAEA;AACE,mBAAK,iBAAiB;AACtB,mBAAK,wBAAwB;AAAA,YAC/B;AAEA;AACE,mBAAK,mBAAmB,oBAAI,IAAI;AAChC,kBAAI,yBAAyB,KAAK,yBAAyB,CAAC;AAE5D,uBAAS,KAAK,GAAG,KAAK,YAAY,MAAM;AACtC,uCAAuB,KAAK,oBAAI,IAAI,CAAC;AAAA,cACvC;AAAA,YACF;AAEA;AACE,sBAAQ,KAAK;AAAA,gBACX,KAAK;AACH,uBAAK,iBAAiBA,WAAU,kBAAkB;AAClD;AAAA,gBAEF,KAAK;AACH,uBAAK,iBAAiBA,WAAU,cAAc;AAC9C;AAAA,cACJ;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,gBAAgB,eAAe,KAAKA,UAAS,iBAAiB,oBAAoB,cAAc,oCAIzG,kBAAkB,oBAAoB,qBAAqB;AACzD,gBAAI5C,QAAO,IAAI,cAAc,eAAe,KAAK4C,UAAS,kBAAkB,kBAAkB;AAI9F,gBAAI,qBAAqB,oBAAoB,KAAK,YAAY;AAC9D,YAAA5C,MAAK,UAAU;AACf,+BAAmB,YAAYA;AAE/B;AACE,kBAAI,gBAAgB;AAAA,gBAClB,SAAS;AAAA,gBACT,cAAc4C;AAAA,gBACd,OAAO;AAAA;AAAA,gBAEP,aAAa;AAAA,gBACb,2BAA2B;AAAA,cAC7B;AACA,iCAAmB,gBAAgB;AAAA,YACrC;AAEA,kCAAsB,kBAAkB;AACxC,mBAAO5C;AAAA,UACT;AAEA,cAAI,eAAe;AAEnB,mBAAS6C,cAAa,UAAU,eAChC,gBAAgB;AACd,gBAAI,MAAM,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI;AAE9E;AACE,qCAAuB,GAAG;AAAA,YAC5B;AAEA,mBAAO;AAAA;AAAA,cAEL,UAAU;AAAA,cACV,KAAK,OAAO,OAAO,OAAO,KAAK;AAAA,cAC/B;AAAA,cACA;AAAA,cACA;AAAA,YACF;AAAA,UACF;AAEA,cAAI;AACJ,cAAI;AAEJ;AACE,wCAA4B;AAC5B,+CAAmC,CAAC;AAAA,UACtC;AAEA,mBAAS,qBAAqB,iBAAiB;AAC7C,gBAAI,CAAC,iBAAiB;AACpB,qBAAO;AAAA,YACT;AAEA,gBAAI,QAAQ,IAAI,eAAe;AAC/B,gBAAI,gBAAgB,2BAA2B,KAAK;AAEpD,gBAAI,MAAM,QAAQ,gBAAgB;AAChC,kBAAItE,aAAY,MAAM;AAEtB,kBAAI,kBAAkBA,UAAS,GAAG;AAChC,uBAAO,oBAAoB,OAAOA,YAAW,aAAa;AAAA,cAC5D;AAAA,YACF;AAEA,mBAAO;AAAA,UACT;AAEA,mBAAS,4BAA4B,WAAW,YAAY;AAC1D;AACE,kBAAI,QAAQ,IAAI,SAAS;AAEzB,kBAAI,UAAU,QAAW;AACvB,oBAAI,OAAO,UAAU,WAAW,YAAY;AAC1C,wBAAM,IAAI,MAAM,gDAAgD;AAAA,gBAClE,OAAO;AACL,sBAAI,OAAO,OAAO,KAAK,SAAS,EAAE,KAAK,GAAG;AAC1C,wBAAM,IAAI,MAAM,wDAAwD,IAAI;AAAA,gBAC9E;AAAA,cACF;AAEA,kBAAI,YAAY,qBAAqB,KAAK;AAE1C,kBAAI,cAAc,MAAM;AACtB,uBAAO;AAAA,cACT;AAEA,kBAAI,UAAU,OAAO,kBAAkB;AACrC,oBAAI,gBAAgB,0BAA0B,KAAK,KAAK;AAExD,oBAAI,CAAC,iCAAiC,aAAa,GAAG;AACpD,mDAAiC,aAAa,IAAI;AAClD,sBAAI,gBAAgB;AAEpB,sBAAI;AACF,oCAAgB,SAAS;AAEzB,wBAAI,MAAM,OAAO,kBAAkB;AACjC,4BAAM,yPAA6Q,YAAY,YAAY,aAAa;AAAA,oBAC1T,OAAO;AACL,4BAAM,gQAAoR,YAAY,YAAY,aAAa;AAAA,oBACjU;AAAA,kBACF,UAAE;AAGA,wBAAI,eAAe;AACjB,sCAAgB,aAAa;AAAA,oBAC/B,OAAO;AACL,wCAAkB;AAAA,oBACpB;AAAA,kBACF;AAAA,gBACF;AAAA,cACF;AAEA,qBAAO,UAAU;AAAA,YACnB;AAAA,UACF;AAEA,mBAAS,gBAAgB,eAAe,KAAK,oBAAoB,cAAc,oCAAoC,kBAAkB,oBAAoB,qBAAqB;AAC5K,gBAAIqE,WAAU;AACd,gBAAI,kBAAkB;AACtB,mBAAO,gBAAgB,eAAe,KAAKA,UAAS,iBAAiB,oBAAoB,cAAc,oCAAoC,kBAAkB,kBAAkB;AAAA,UACjL;AACA,mBAAS,yBAAyB,iBAClC,UAAU,eAAe,KAAK,oBAAoB,cAAc,oCAAoC,kBAAkB,oBAAoB,qBAAqB;AAC7J,gBAAIA,WAAU;AACd,gBAAI5C,QAAO,gBAAgB,eAAe,KAAK4C,UAAS,iBAAiB,oBAAoB,cAAc,oCAAoC,kBAAkB,kBAAkB;AAEnL,YAAA5C,MAAK,UAAU,qBAAqB,IAAI;AAOxC,gBAAIF,WAAUE,MAAK;AACnB,gBAAI,YAAY,iBAAiB;AACjC,gBAAI,OAAO,kBAAkBF,QAAO;AACpC,gBAAI,SAAS,aAAa,WAAW,IAAI;AACzC,mBAAO,WAAW,aAAa,UAAa,aAAa,OAAO,WAAW;AAC3E,0BAAcA,UAAS,QAAQ,IAAI;AACnC,2CAA+BE,OAAM,MAAM,SAAS;AACpD,mBAAOA;AAAA,UACT;AACA,mBAAS,gBAAgB,SAAS,WAAW,iBAAiB,UAAU;AACtE;AACE,6BAAe,WAAW,OAAO;AAAA,YACnC;AAEA,gBAAI,YAAY,UAAU;AAC1B,gBAAI,YAAY,iBAAiB;AACjC,gBAAI,OAAO,kBAAkB,SAAS;AAEtC;AACE,kCAAoB,IAAI;AAAA,YAC1B;AAEA,gBAAI,UAAU,qBAAqB,eAAe;AAElD,gBAAI,UAAU,YAAY,MAAM;AAC9B,wBAAU,UAAU;AAAA,YACtB,OAAO;AACL,wBAAU,iBAAiB;AAAA,YAC7B;AAEA;AACE,kBAAI,eAAe,YAAY,QAAQ,CAAC,2BAA2B;AACjE,4CAA4B;AAE5B,sBAAM,8NAA6O,0BAA0B,OAAO,KAAK,SAAS;AAAA,cACpS;AAAA,YACF;AAEA,gBAAI,SAAS,aAAa,WAAW,IAAI;AAGzC,mBAAO,UAAU;AAAA,cACf;AAAA,YACF;AACA,uBAAW,aAAa,SAAY,OAAO;AAE3C,gBAAI,aAAa,MAAM;AACrB;AACE,oBAAI,OAAO,aAAa,YAAY;AAClC,wBAAM,uGAA4G,QAAQ;AAAA,gBAC5H;AAAA,cACF;AAEA,qBAAO,WAAW;AAAA,YACpB;AAEA,gBAAIA,QAAO,cAAc,WAAW,QAAQ,IAAI;AAEhD,gBAAIA,UAAS,MAAM;AACjB,oCAAsBA,OAAM,WAAW,MAAM,SAAS;AACtD,kCAAoBA,OAAM,WAAW,IAAI;AAAA,YAC3C;AAEA,mBAAO;AAAA,UACT;AACA,mBAAS,sBAAsB,WAAW;AACxC,gBAAI,iBAAiB,UAAU;AAE/B,gBAAI,CAAC,eAAe,OAAO;AACzB,qBAAO;AAAA,YACT;AAEA,oBAAQ,eAAe,MAAM,KAAK;AAAA,cAChC,KAAK;AACH,uBAAO,kBAAkB,eAAe,MAAM,SAAS;AAAA,cAEzD;AACE,uBAAO,eAAe,MAAM;AAAA,YAChC;AAAA,UACF;AACA,mBAAS,8BAA8B,OAAO;AAC5C,oBAAQ,MAAM,KAAK;AAAA,cACjB,KAAK,UACH;AACE,oBAAIA,QAAO,MAAM;AAEjB,oBAAI,iBAAiBA,KAAI,GAAG;AAE1B,sBAAI,QAAQ,+BAA+BA,KAAI;AAC/C,4BAAUA,OAAM,KAAK;AAAA,gBACvB;AAEA;AAAA,cACF;AAAA,cAEF,KAAK,mBACH;AACE,0BAAU,WAAY;AACpB,sBAAIA,QAAO,+BAA+B,OAAO,QAAQ;AAEzD,sBAAIA,UAAS,MAAM;AACjB,wBAAI,YAAY,iBAAiB;AACjC,0CAAsBA,OAAM,OAAO,UAAU,SAAS;AAAA,kBACxD;AAAA,gBACF,CAAC;AAID,oBAAI,YAAY;AAChB,2CAA2B,OAAO,SAAS;AAC3C;AAAA,cACF;AAAA,YACJ;AAAA,UACF;AAEA,mBAAS,kBAAkB,OAAO,WAAW;AAC3C,gBAAI,gBAAgB,MAAM;AAE1B,gBAAI,kBAAkB,QAAQ,cAAc,eAAe,MAAM;AAC/D,4BAAc,YAAY,mBAAmB,cAAc,WAAW,SAAS;AAAA,YACjF;AAAA,UACF;AAGA,mBAAS,2BAA2B,OAAO,WAAW;AACpD,8BAAkB,OAAO,SAAS;AAClC,gBAAI,YAAY,MAAM;AAEtB,gBAAI,WAAW;AACb,gCAAkB,WAAW,SAAS;AAAA,YACxC;AAAA,UACF;AACA,mBAAS,6BAA6B,OAAO;AAC3C,gBAAI,MAAM,QAAQ,mBAAmB;AAKnC;AAAA,YACF;AAEA,gBAAI,OAAO;AACX,gBAAIA,QAAO,+BAA+B,OAAO,IAAI;AAErD,gBAAIA,UAAS,MAAM;AACjB,kBAAI,YAAY,iBAAiB;AACjC,oCAAsBA,OAAM,OAAO,MAAM,SAAS;AAAA,YACpD;AAEA,uCAA2B,OAAO,IAAI;AAAA,UACxC;AACA,mBAAS,oCAAoC,OAAO;AAClD,gBAAI,MAAM,QAAQ,mBAAmB;AAGnC;AAAA,YACF;AAEA,gBAAI,OAAO,kBAAkB,KAAK;AAClC,gBAAIA,QAAO,+BAA+B,OAAO,IAAI;AAErD,gBAAIA,UAAS,MAAM;AACjB,kBAAI,YAAY,iBAAiB;AACjC,oCAAsBA,OAAM,OAAO,MAAM,SAAS;AAAA,YACpD;AAEA,uCAA2B,OAAO,IAAI;AAAA,UACxC;AACA,mBAAS,8BAA8B,OAAO;AAC5C,gBAAI,YAAY,kCAAkC,KAAK;AAEvD,gBAAI,cAAc,MAAM;AACtB,qBAAO;AAAA,YACT;AAEA,mBAAO,UAAU;AAAA,UACnB;AAEA,cAAI,kBAAkB,SAAU,OAAO;AACrC,mBAAO;AAAA,UACT;AAEA,mBAAS,YAAY,OAAO;AAC1B,mBAAO,gBAAgB,KAAK;AAAA,UAC9B;AAEA,cAAI,oBAAoB,SAAU,OAAO;AACvC,mBAAO;AAAA,UACT;AAEA,mBAAS,cAAc,OAAO;AAC5B,mBAAO,kBAAkB,KAAK;AAAA,UAChC;AACA,cAAI,oBAAoB;AACxB,cAAI,8BAA8B;AAClC,cAAI,8BAA8B;AAClC,cAAI,gBAAgB;AACpB,cAAI,0BAA0B;AAC9B,cAAI,0BAA0B;AAC9B,cAAI,iBAAiB;AACrB,cAAI,kBAAkB;AACtB,cAAI,qBAAqB;AAEzB;AACE,gBAAI,qBAAqB,SAAU,KAAK8C,OAAM5C,QAAO;AACnD,kBAAI,MAAM4C,MAAK5C,MAAK;AACpB,kBAAI,UAAUrB,SAAQ,GAAG,IAAI,IAAI,MAAM,IAAIZ,QAAO,CAAC,GAAG,GAAG;AAEzD,kBAAIiC,SAAQ,MAAM4C,MAAK,QAAQ;AAC7B,oBAAIjE,SAAQ,OAAO,GAAG;AACpB,0BAAQ,OAAO,KAAK,CAAC;AAAA,gBACvB,OAAO;AACL,yBAAO,QAAQ,GAAG;AAAA,gBACpB;AAEA,uBAAO;AAAA,cACT;AAGA,sBAAQ,GAAG,IAAI,mBAAmB,IAAI,GAAG,GAAGiE,OAAM5C,SAAQ,CAAC;AAC3D,qBAAO;AAAA,YACT;AAEA,gBAAI,iBAAiB,SAAU,KAAK4C,OAAM;AACxC,qBAAO,mBAAmB,KAAKA,OAAM,CAAC;AAAA,YACxC;AAEA,gBAAI,qBAAqB,SAAU,KAAK,SAAS,SAAS5C,QAAO;AAC/D,kBAAI,SAAS,QAAQA,MAAK;AAC1B,kBAAI,UAAUrB,SAAQ,GAAG,IAAI,IAAI,MAAM,IAAIZ,QAAO,CAAC,GAAG,GAAG;AAEzD,kBAAIiC,SAAQ,MAAM,QAAQ,QAAQ;AAChC,oBAAI,SAAS,QAAQA,MAAK;AAE1B,wBAAQ,MAAM,IAAI,QAAQ,MAAM;AAEhC,oBAAIrB,SAAQ,OAAO,GAAG;AACpB,0BAAQ,OAAO,QAAQ,CAAC;AAAA,gBAC1B,OAAO;AACL,yBAAO,QAAQ,MAAM;AAAA,gBACvB;AAAA,cACF,OAAO;AAEL,wBAAQ,MAAM,IAAI;AAAA;AAAA,kBAClB,IAAI,MAAM;AAAA,kBAAG;AAAA,kBAAS;AAAA,kBAASqB,SAAQ;AAAA,gBAAC;AAAA,cAC1C;AAEA,qBAAO;AAAA,YACT;AAEA,gBAAI,iBAAiB,SAAU,KAAK,SAAS,SAAS;AACpD,kBAAI,QAAQ,WAAW,QAAQ,QAAQ;AACrC,gBAAA9C,MAAK,mDAAmD;AAExD;AAAA,cACF,OAAO;AACL,yBAAS,IAAI,GAAG,IAAI,QAAQ,SAAS,GAAG,KAAK;AAC3C,sBAAI,QAAQ,CAAC,MAAM,QAAQ,CAAC,GAAG;AAC7B,oBAAAA,MAAK,0EAA0E;AAE/E;AAAA,kBACF;AAAA,gBACF;AAAA,cACF;AAEA,qBAAO,mBAAmB,KAAK,SAAS,SAAS,CAAC;AAAA,YACpD;AAEA,gBAAI,kBAAkB,SAAU,KAAK0F,OAAM5C,QAAO,OAAO;AACvD,kBAAIA,UAAS4C,MAAK,QAAQ;AACxB,uBAAO;AAAA,cACT;AAEA,kBAAI,MAAMA,MAAK5C,MAAK;AACpB,kBAAI,UAAUrB,SAAQ,GAAG,IAAI,IAAI,MAAM,IAAIZ,QAAO,CAAC,GAAG,GAAG;AAEzD,sBAAQ,GAAG,IAAI,gBAAgB,IAAI,GAAG,GAAG6E,OAAM5C,SAAQ,GAAG,KAAK;AAC/D,qBAAO;AAAA,YACT;AAEA,gBAAI,cAAc,SAAU,KAAK4C,OAAM,OAAO;AAC5C,qBAAO,gBAAgB,KAAKA,OAAM,GAAG,KAAK;AAAA,YAC5C;AAEA,gBAAI,WAAW,SAAU,OAAOpB,MAAI;AAGlC,kBAAIqB,eAAc,MAAM;AAExB,qBAAOA,iBAAgB,QAAQrB,OAAK,GAAG;AACrC,gBAAAqB,eAAcA,aAAY;AAC1B,gBAAArB;AAAA,cACF;AAEA,qBAAOqB;AAAA,YACT;AAGA,gCAAoB,SAAU,OAAOrB,MAAIoB,OAAM,OAAO;AACpD,kBAAI,OAAO,SAAS,OAAOpB,IAAE;AAE7B,kBAAI,SAAS,MAAM;AACjB,oBAAI,WAAW,YAAY,KAAK,eAAeoB,OAAM,KAAK;AAC1D,qBAAK,gBAAgB;AACrB,qBAAK,YAAY;AAMjB,sBAAM,gBAAgB7E,QAAO,CAAC,GAAG,MAAM,aAAa;AACpD,oBAAI+B,QAAO,+BAA+B,OAAO,QAAQ;AAEzD,oBAAIA,UAAS,MAAM;AACjB,wCAAsBA,OAAM,OAAO,UAAU,WAAW;AAAA,gBAC1D;AAAA,cACF;AAAA,YACF;AAEA,0CAA8B,SAAU,OAAO0B,MAAIoB,OAAM;AACvD,kBAAI,OAAO,SAAS,OAAOpB,IAAE;AAE7B,kBAAI,SAAS,MAAM;AACjB,oBAAI,WAAW,eAAe,KAAK,eAAeoB,KAAI;AACtD,qBAAK,gBAAgB;AACrB,qBAAK,YAAY;AAMjB,sBAAM,gBAAgB7E,QAAO,CAAC,GAAG,MAAM,aAAa;AACpD,oBAAI+B,QAAO,+BAA+B,OAAO,QAAQ;AAEzD,oBAAIA,UAAS,MAAM;AACjB,wCAAsBA,OAAM,OAAO,UAAU,WAAW;AAAA,gBAC1D;AAAA,cACF;AAAA,YACF;AAEA,0CAA8B,SAAU,OAAO0B,MAAI,SAAS,SAAS;AACnE,kBAAI,OAAO,SAAS,OAAOA,IAAE;AAE7B,kBAAI,SAAS,MAAM;AACjB,oBAAI,WAAW,eAAe,KAAK,eAAe,SAAS,OAAO;AAClE,qBAAK,gBAAgB;AACrB,qBAAK,YAAY;AAMjB,sBAAM,gBAAgBzD,QAAO,CAAC,GAAG,MAAM,aAAa;AACpD,oBAAI+B,QAAO,+BAA+B,OAAO,QAAQ;AAEzD,oBAAIA,UAAS,MAAM;AACjB,wCAAsBA,OAAM,OAAO,UAAU,WAAW;AAAA,gBAC1D;AAAA,cACF;AAAA,YACF;AAGA,4BAAgB,SAAU,OAAO8C,OAAM,OAAO;AAC5C,oBAAM,eAAe,YAAY,MAAM,eAAeA,OAAM,KAAK;AAEjE,kBAAI,MAAM,WAAW;AACnB,sBAAM,UAAU,eAAe,MAAM;AAAA,cACvC;AAEA,kBAAI9C,QAAO,+BAA+B,OAAO,QAAQ;AAEzD,kBAAIA,UAAS,MAAM;AACjB,sCAAsBA,OAAM,OAAO,UAAU,WAAW;AAAA,cAC1D;AAAA,YACF;AAEA,sCAA0B,SAAU,OAAO8C,OAAM;AAC/C,oBAAM,eAAe,eAAe,MAAM,eAAeA,KAAI;AAE7D,kBAAI,MAAM,WAAW;AACnB,sBAAM,UAAU,eAAe,MAAM;AAAA,cACvC;AAEA,kBAAI9C,QAAO,+BAA+B,OAAO,QAAQ;AAEzD,kBAAIA,UAAS,MAAM;AACjB,sCAAsBA,OAAM,OAAO,UAAU,WAAW;AAAA,cAC1D;AAAA,YACF;AAEA,sCAA0B,SAAU,OAAO,SAAS,SAAS;AAC3D,oBAAM,eAAe,eAAe,MAAM,eAAe,SAAS,OAAO;AAEzE,kBAAI,MAAM,WAAW;AACnB,sBAAM,UAAU,eAAe,MAAM;AAAA,cACvC;AAEA,kBAAIA,QAAO,+BAA+B,OAAO,QAAQ;AAEzD,kBAAIA,UAAS,MAAM;AACjB,sCAAsBA,OAAM,OAAO,UAAU,WAAW;AAAA,cAC1D;AAAA,YACF;AAEA,6BAAiB,SAAU,OAAO;AAChC,kBAAIA,QAAO,+BAA+B,OAAO,QAAQ;AAEzD,kBAAIA,UAAS,MAAM;AACjB,sCAAsBA,OAAM,OAAO,UAAU,WAAW;AAAA,cAC1D;AAAA,YACF;AAEA,8BAAkB,SAAU,oBAAoB;AAC9C,gCAAkB;AAAA,YACpB;AAEA,iCAAqB,SAAU,sBAAsB;AACnD,kCAAoB;AAAA,YACtB;AAAA,UACF;AAEA,mBAAS,wBAAwB,OAAO;AACtC,gBAAI,YAAY,qBAAqB,KAAK;AAE1C,gBAAI,cAAc,MAAM;AACtB,qBAAO;AAAA,YACT;AAEA,mBAAO,UAAU;AAAA,UACnB;AAEA,mBAAS,6BAA6B,UAAU;AAC9C,mBAAO;AAAA,UACT;AAEA,mBAAS,6BAA6B;AACpC,mBAAO;AAAA,UACT;AAEA,mBAAS,mBAAmB,gBAAgB;AAC1C,gBAAI,0BAA0B,eAAe;AAC7C,gBAAIgD,0BAAyB,qBAAqB;AAClD,mBAAO,gBAAgB;AAAA,cACrB,YAAY,eAAe;AAAA,cAC3B,SAAS,eAAe;AAAA,cACxB,qBAAqB,eAAe;AAAA,cACpC,gBAAgB,eAAe;AAAA,cAC/B;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA,sBAAsBA;AAAA,cACtB;AAAA,cACA,yBAAyB,2BAA2B;AAAA;AAAA,cAEpD;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA;AAAA,cAEA,iBAAkB;AAAA;AAAA;AAAA,cAGlB,mBAAmB;AAAA,YACrB,CAAC;AAAA,UACH;AAIA,cAAI,4BAA4B,OAAO,gBAAgB;AAAA;AAAA;AAAA,YAEvD;AAAA,cAAc,SAAUpD,QAAO;AAG7B,oBAAQ,OAAO,EAAEA,MAAK;AAAA,UACxB;AAEA,mBAAS,aAAa,cAAc;AAClC,iBAAK,gBAAgB;AAAA,UACvB;AAEA,gCAAsB,UAAU,SAAS,aAAa,UAAU,SAAS,SAAU,UAAU;AAC3F,gBAAII,QAAO,KAAK;AAEhB,gBAAIA,UAAS,MAAM;AACjB,oBAAM,IAAI,MAAM,kCAAkC;AAAA,YACpD;AAEA;AACE,kBAAI,OAAO,UAAU,CAAC,MAAM,YAAY;AACtC,sBAAM,wJAA6J;AAAA,cACrK,WAAW,iBAAiB,UAAU,CAAC,CAAC,GAAG;AACzC,sBAAM,oJAAyJ;AAAA,cACjK,WAAW,OAAO,UAAU,CAAC,MAAM,aAAa;AAC9C,sBAAM,oFAAyF;AAAA,cACjG;AAEA,kBAAI,YAAYA,MAAK;AAErB,kBAAI,UAAU,aAAa,cAAc;AACvC,oBAAI,eAAe,8BAA8BA,MAAK,OAAO;AAE7D,oBAAI,cAAc;AAChB,sBAAI,aAAa,eAAe,WAAW;AACzC,0BAAM,qNAAoO;AAAA,kBAC5O;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAEA,4BAAgB,UAAUA,OAAM,MAAM,IAAI;AAAA,UAC5C;AAEA,gCAAsB,UAAU,UAAU,aAAa,UAAU,UAAU,WAAY;AACrF;AACE,kBAAI,OAAO,UAAU,CAAC,MAAM,YAAY;AACtC,sBAAM,gJAAqJ;AAAA,cAC7J;AAAA,YACF;AAEA,gBAAIA,QAAO,KAAK;AAEhB,gBAAIA,UAAS,MAAM;AACjB,mBAAK,gBAAgB;AACrB,kBAAI,YAAYA,MAAK;AAErB;AACE,oBAAI,mBAAmB,GAAG;AACxB,wBAAM,kMAA4M;AAAA,gBACpN;AAAA,cACF;AAEA,wBAAU,WAAY;AACpB,gCAAgB,MAAMA,OAAM,MAAM,IAAI;AAAA,cACxC,CAAC;AACD,oCAAsB,SAAS;AAAA,YACjC;AAAA,UACF;AAEA,mBAASiD,YAAW,WAAWlE,UAAS;AACtC,gBAAI,CAAC,iBAAiB,SAAS,GAAG;AAChC,oBAAM,IAAI,MAAM,yDAAyD;AAAA,YAC3E;AAEA,yCAA6B,SAAS;AACtC,gBAAI,eAAe;AACnB,gBAAI,qCAAqC;AACzC,gBAAI,mBAAmB;AACvB,gBAAI,qBAAqB;AACzB,gBAAI,sBAAsB;AAE1B,gBAAIA,aAAY,QAAQA,aAAY,QAAW;AAC7C;AACE,oBAAIA,SAAQ,SAAS;AACnB,kBAAA3B,MAAK,uGAAuG;AAAA,gBAC9G,OAAO;AACL,sBAAI,OAAO2B,aAAY,YAAYA,aAAY,QAAQA,SAAQ,aAAa,oBAAoB;AAC9F,0BAAM,2KAA+L;AAAA,kBACvM;AAAA,gBACF;AAAA,cACF;AAEA,kBAAIA,SAAQ,wBAAwB,MAAM;AACxC,+BAAe;AAAA,cACjB;AAEA,kBAAIA,SAAQ,qBAAqB,QAAW;AAC1C,mCAAmBA,SAAQ;AAAA,cAC7B;AAEA,kBAAIA,SAAQ,uBAAuB,QAAW;AAC5C,qCAAqBA,SAAQ;AAAA,cAC/B;AAEA,kBAAIA,SAAQ,wBAAwB,QAAW;AAC7C,sCAAsBA,SAAQ;AAAA,cAChC;AAAA,YACF;AAEA,gBAAIiB,QAAO,gBAAgB,WAAW,gBAAgB,MAAM,cAAc,oCAAoC,kBAAkB,kBAAkB;AAClJ,gCAAoBA,MAAK,SAAS,SAAS;AAC3C,gBAAI,uBAAuB,UAAU,aAAa,eAAe,UAAU,aAAa;AACxF,uCAA2B,oBAAoB;AAC/C,mBAAO,IAAI,aAAaA,KAAI;AAAA,UAC9B;AAEA,mBAAS,sBAAsB,cAAc;AAC3C,iBAAK,gBAAgB;AAAA,UACvB;AAEA,mBAAS,kBAAkB,QAAQ;AACjC,gBAAI,QAAQ;AACV,2CAA6B,MAAM;AAAA,YACrC;AAAA,UACF;AAEA,gCAAsB,UAAU,6BAA6B;AAC7D,mBAAS,YAAY,WAAW,iBAAiBjB,UAAS;AACxD,gBAAI,CAAC,iBAAiB,SAAS,GAAG;AAChC,oBAAM,IAAI,MAAM,0DAA0D;AAAA,YAC5E;AAEA,yCAA6B,SAAS;AAEtC;AACE,kBAAI,oBAAoB,QAAW;AACjC,sBAAM,oHAAyH;AAAA,cACjI;AAAA,YACF;AAIA,gBAAI,qBAAqBA,YAAW,OAAOA,WAAU;AAErD,gBAAI,iBAAiBA,YAAW,QAAQA,SAAQ,mBAAmB;AACnE,gBAAI,eAAe;AACnB,gBAAI,qCAAqC;AACzC,gBAAI,mBAAmB;AACvB,gBAAI,qBAAqB;AAEzB,gBAAIA,aAAY,QAAQA,aAAY,QAAW;AAC7C,kBAAIA,SAAQ,wBAAwB,MAAM;AACxC,+BAAe;AAAA,cACjB;AAEA,kBAAIA,SAAQ,qBAAqB,QAAW;AAC1C,mCAAmBA,SAAQ;AAAA,cAC7B;AAEA,kBAAIA,SAAQ,uBAAuB,QAAW;AAC5C,qCAAqBA,SAAQ;AAAA,cAC/B;AAAA,YACF;AAEA,gBAAIiB,QAAO,yBAAyB,iBAAiB,MAAM,WAAW,gBAAgB,oBAAoB,cAAc,oCAAoC,kBAAkB,kBAAkB;AAChM,gCAAoBA,MAAK,SAAS,SAAS;AAE3C,uCAA2B,SAAS;AAEpC,gBAAI,gBAAgB;AAClB,uBAAS,IAAI,GAAG,IAAI,eAAe,QAAQ,KAAK;AAC9C,oBAAI,gBAAgB,eAAe,CAAC;AACpC,kDAAkCA,OAAM,aAAa;AAAA,cACvD;AAAA,YACF;AAEA,mBAAO,IAAI,sBAAsBA,KAAI;AAAA,UACvC;AACA,mBAAS,iBAAiBhC,OAAM;AAC9B,mBAAO,CAAC,EAAEA,UAASA,MAAK,aAAa,gBAAgBA,MAAK,aAAa,iBAAiBA,MAAK,aAAa,0BAA0B,CAAC;AAAA,UACvI;AAGA,mBAAS,uBAAuBA,OAAM;AACpC,mBAAO,CAAC,EAAEA,UAASA,MAAK,aAAa,gBAAgBA,MAAK,aAAa,iBAAiBA,MAAK,aAAa,0BAA0BA,MAAK,aAAa,gBAAgBA,MAAK,cAAc;AAAA,UAC3L;AAEA,mBAAS,6BAA6B,WAAW;AAC/C;AACE,kBAAI,UAAU,aAAa,gBAAgB,UAAU,WAAW,UAAU,QAAQ,YAAY,MAAM,QAAQ;AAC1G,sBAAM,qQAAyR;AAAA,cACjS;AAEA,kBAAI,wBAAwB,SAAS,GAAG;AACtC,oBAAI,UAAU,qBAAqB;AACjC,wBAAM,oIAAyI;AAAA,gBACjJ,OAAO;AACL,wBAAM,oMAA8M;AAAA,gBACtN;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAEA,cAAI,sBAAsB,qBAAqB;AAC/C,cAAI;AAEJ;AACE,qCAAyB,SAAU,WAAW;AAC5C,kBAAI,UAAU,uBAAuB,UAAU,aAAa,cAAc;AACxE,oBAAI,eAAe,8BAA8B,UAAU,oBAAoB,OAAO;AAEtF,oBAAI,cAAc;AAChB,sBAAI,aAAa,eAAe,WAAW;AACzC,0BAAM,2NAA0O;AAAA,kBAClP;AAAA,gBACF;AAAA,cACF;AAEA,kBAAI,4BAA4B,CAAC,CAAC,UAAU;AAC5C,kBAAI,SAAS,+BAA+B,SAAS;AACrD,kBAAI,uBAAuB,CAAC,EAAE,UAAU,oBAAoB,MAAM;AAElE,kBAAI,wBAAwB,CAAC,2BAA2B;AACtD,sBAAM,mQAAkR;AAAA,cAC1R;AAEA,kBAAI,UAAU,aAAa,gBAAgB,UAAU,WAAW,UAAU,QAAQ,YAAY,MAAM,QAAQ;AAC1G,sBAAM,gRAAoS;AAAA,cAC5S;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,+BAA+B,WAAW;AACjD,gBAAI,CAAC,WAAW;AACd,qBAAO;AAAA,YACT;AAEA,gBAAI,UAAU,aAAa,eAAe;AACxC,qBAAO,UAAU;AAAA,YACnB,OAAO;AACL,qBAAO,UAAU;AAAA,YACnB;AAAA,UACF;AAEA,mBAAS,yBAAyB;AAAA,UAElC;AAEA,mBAAS,iCAAiC,WAAW,iBAAiB,iBAAiB,UAAU,sBAAsB;AACrH,gBAAI,sBAAsB;AACxB,kBAAI,OAAO,aAAa,YAAY;AAClC,oBAAI,mBAAmB;AAEvB,2BAAW,WAAY;AACrB,sBAAI,WAAW,sBAAsBgC,KAAI;AACzC,mCAAiB,KAAK,QAAQ;AAAA,gBAChC;AAAA,cACF;AAEA,kBAAIA,QAAO;AAAA,gBAAyB;AAAA,gBAAiB;AAAA,gBAAU;AAAA,gBAAW;AAAA,gBAAY;AAAA;AAAA,gBACtF;AAAA;AAAA,gBACA;AAAA;AAAA,gBACA;AAAA;AAAA,gBACA;AAAA,cAAsB;AACtB,wBAAU,sBAAsBA;AAChC,kCAAoBA,MAAK,SAAS,SAAS;AAC3C,kBAAI,uBAAuB,UAAU,aAAa,eAAe,UAAU,aAAa;AACxF,yCAA2B,oBAAoB;AAC/C,wBAAU;AACV,qBAAOA;AAAA,YACT,OAAO;AAEL,kBAAI;AAEJ,qBAAO,cAAc,UAAU,WAAW;AACxC,0BAAU,YAAY,WAAW;AAAA,cACnC;AAEA,kBAAI,OAAO,aAAa,YAAY;AAClC,oBAAI,oBAAoB;AAExB,2BAAW,WAAY;AACrB,sBAAI,WAAW,sBAAsB,KAAK;AAE1C,oCAAkB,KAAK,QAAQ;AAAA,gBACjC;AAAA,cACF;AAEA,kBAAI,QAAQ;AAAA,gBAAgB;AAAA,gBAAW;AAAA,gBAAY;AAAA;AAAA,gBACnD;AAAA;AAAA,gBACA;AAAA;AAAA,gBACA;AAAA;AAAA,gBACA;AAAA,cAAsB;AAEtB,wBAAU,sBAAsB;AAChC,kCAAoB,MAAM,SAAS,SAAS;AAE5C,kBAAI,wBAAwB,UAAU,aAAa,eAAe,UAAU,aAAa;AAEzF,yCAA2B,qBAAqB;AAEhD,wBAAU,WAAY;AACpB,gCAAgB,iBAAiB,OAAO,iBAAiB,QAAQ;AAAA,cACnE,CAAC;AACD,qBAAO;AAAA,YACT;AAAA,UACF;AAEA,mBAAS,wBAAwB,UAAU,YAAY;AACrD;AACE,kBAAI,aAAa,QAAQ,OAAO,aAAa,YAAY;AACvD,sBAAM,mGAAwG,YAAY,QAAQ;AAAA,cACpI;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,iCAAiC,iBAAiB,UAAU,WAAW,cAAc,UAAU;AACtG;AACE,qCAAuB,SAAS;AAChC,sCAAwB,aAAa,SAAY,OAAO,UAAU,QAAQ;AAAA,YAC5E;AAEA,gBAAI,YAAY,UAAU;AAC1B,gBAAIA;AAEJ,gBAAI,CAAC,WAAW;AAEd,cAAAA,QAAO,iCAAiC,WAAW,UAAU,iBAAiB,UAAU,YAAY;AAAA,YACtG,OAAO;AACL,cAAAA,QAAO;AAEP,kBAAI,OAAO,aAAa,YAAY;AAClC,oBAAI,mBAAmB;AAEvB,2BAAW,WAAY;AACrB,sBAAI,WAAW,sBAAsBA,KAAI;AACzC,mCAAiB,KAAK,QAAQ;AAAA,gBAChC;AAAA,cACF;AAGA,8BAAgB,UAAUA,OAAM,iBAAiB,QAAQ;AAAA,YAC3D;AAEA,mBAAO,sBAAsBA,KAAI;AAAA,UACnC;AAEA,mBAAS,YAAY,oBAAoB;AACvC;AACE,kBAAI,QAAQ,oBAAoB;AAEhC,kBAAI,UAAU,QAAQ,MAAM,cAAc,MAAM;AAC9C,oBAAI,0BAA0B,MAAM,UAAU;AAE9C,oBAAI,CAAC,yBAAyB;AAC5B,wBAAM,kRAAsS,yBAAyB,MAAM,IAAI,KAAK,aAAa;AAAA,gBACnW;AAEA,sBAAM,UAAU,2BAA2B;AAAA,cAC7C;AAAA,YACF;AAEA,gBAAI,sBAAsB,MAAM;AAC9B,qBAAO;AAAA,YACT;AAEA,gBAAI,mBAAmB,aAAa,cAAc;AAChD,qBAAO;AAAA,YACT;AAEA;AACE,qBAAO,4BAA4B,oBAAoB,aAAa;AAAA,YACtE;AAAA,UACF;AACA,mBAAS,QAAQ,SAAS,WAAW,UAAU;AAC7C;AACE,oBAAM,4NAA2O;AAAA,YACnP;AAEA,gBAAI,CAAC,uBAAuB,SAAS,GAAG;AACtC,oBAAM,IAAI,MAAM,wCAAwC;AAAA,YAC1D;AAEA;AACE,kBAAI,eAAe,wBAAwB,SAAS,KAAK,UAAU,wBAAwB;AAE3F,kBAAI,cAAc;AAChB,sBAAM,2LAAqM;AAAA,cAC7M;AAAA,YACF;AAGA,mBAAO,iCAAiC,MAAM,SAAS,WAAW,MAAM,QAAQ;AAAA,UAClF;AACA,mBAASqC,QAAO,SAAS,WAAW,UAAU;AAC5C;AACE,oBAAM,0NAAyO;AAAA,YACjP;AAEA,gBAAI,CAAC,uBAAuB,SAAS,GAAG;AACtC,oBAAM,IAAI,MAAM,wCAAwC;AAAA,YAC1D;AAEA;AACE,kBAAI,eAAe,wBAAwB,SAAS,KAAK,UAAU,wBAAwB;AAE3F,kBAAI,cAAc;AAChB,sBAAM,+KAAyL;AAAA,cACjM;AAAA,YACF;AAEA,mBAAO,iCAAiC,MAAM,SAAS,WAAW,OAAO,QAAQ;AAAA,UACnF;AACA,mBAAS,oCAAoC,iBAAiB,SAAS,eAAe,UAAU;AAC9F;AACE,oBAAM,yQAAwR;AAAA,YAChS;AAEA,gBAAI,CAAC,uBAAuB,aAAa,GAAG;AAC1C,oBAAM,IAAI,MAAM,wCAAwC;AAAA,YAC1D;AAEA,gBAAI,mBAAmB,QAAQ,CAAC,IAAI,eAAe,GAAG;AACpD,oBAAM,IAAI,MAAM,iDAAiD;AAAA,YACnE;AAEA,mBAAO,iCAAiC,iBAAiB,SAAS,eAAe,OAAO,QAAQ;AAAA,UAClG;AACA,mBAAS,uBAAuB,WAAW;AACzC,gBAAI,CAAC,uBAAuB,SAAS,GAAG;AACtC,oBAAM,IAAI,MAAM,qEAAqE;AAAA,YACvF;AAEA;AACE,kBAAI,eAAe,wBAAwB,SAAS,KAAK,UAAU,wBAAwB;AAE3F,kBAAI,cAAc;AAChB,sBAAM,yLAA8L;AAAA,cACtM;AAAA,YACF;AAEA,gBAAI,UAAU,qBAAqB;AACjC;AACE,oBAAI,SAAS,+BAA+B,SAAS;AACrD,oBAAI,2BAA2B,UAAU,CAAC,oBAAoB,MAAM;AAEpE,oBAAI,0BAA0B;AAC5B,wBAAM,wGAA6G;AAAA,gBACrH;AAAA,cACF;AAGA,wBAAU,WAAY;AACpB,iDAAiC,MAAM,MAAM,WAAW,OAAO,WAAY;AAEzE,4BAAU,sBAAsB;AAChC,wCAAsB,SAAS;AAAA,gBACjC,CAAC;AAAA,cACH,CAAC;AAGD,qBAAO;AAAA,YACT,OAAO;AACL;AACE,oBAAI,UAAU,+BAA+B,SAAS;AAEtD,oBAAI,uBAAuB,CAAC,EAAE,WAAW,oBAAoB,OAAO;AAEpE,oBAAI,uBAAuB,UAAU,aAAa,gBAAgB,uBAAuB,UAAU,UAAU,KAAK,CAAC,CAAC,UAAU,WAAW;AAEzI,oBAAI,sBAAsB;AACxB,wBAAM,8HAAmI,uBAAuB,oFAAyF,qGAA0G;AAAA,gBACrW;AAAA,cACF;AAEA,qBAAO;AAAA,YACT;AAAA,UACF;AAEA,yCAA+B,6BAA6B;AAC5D,wCAA8B,4BAA4B;AAC1D,+CAAqC,mCAAmC;AACxE,sCAA4B,wBAAwB;AACpD,wCAA8B,eAAe;AAE7C;AACE,gBAAI,OAAO,QAAQ;AAAA,YACnB,IAAI,aAAa,QAAQ,OAAO,IAAI,UAAU,YAAY,cAAc,OAAO,QAAQ;AAAA,YACvF,IAAI,aAAa,QAAQ,OAAO,IAAI,UAAU,UAAU,cAAc,OAAO,IAAI,UAAU,YAAY,YAAY;AACjH,oBAAM,6IAAkJ;AAAA,YAC1J;AAAA,UACF;AAEA,mCAAyB,wBAAwB;AACjD,oCAA0B,kBAAkB,iBAAiB,SAAS;AAEtE,mBAAS,eAAe,UAAU,WAAW;AAC3C,gBAAI,MAAM,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI;AAE9E,gBAAI,CAAC,iBAAiB,SAAS,GAAG;AAChC,oBAAM,IAAI,MAAM,wCAAwC;AAAA,YAC1D;AAIA,mBAAOQ,cAAa,UAAU,WAAW,MAAM,GAAG;AAAA,UACpD;AAEA,mBAAS,2BAA2B,iBAAiB,SAAS,eAAe,UAAU;AACrF,mBAAO,oCAAoC,iBAAiB,SAAS,eAAe,QAAQ;AAAA,UAC9F;AAEA,cAAI,YAAY;AAAA,YACd,uBAAuB;AAAA;AAAA;AAAA,YAGvB,QAAQ,CAAC,qBAAqB,qBAAqB,8BAA8B,qBAAqB,sBAAsB,gBAAgB;AAAA,UAC9I;AAEA,mBAAS,aAAa,WAAW9D,UAAS;AACxC;AACE,kBAAI,CAAC,UAAU,yBAAyB,MAAQ;AAC9C,sBAAM,6HAAkI;AAAA,cAC1I;AAAA,YACF;AAEA,mBAAOkE,YAAW,WAAWlE,QAAO;AAAA,UACtC;AAEA,mBAAS,cAAc,WAAW,iBAAiBA,UAAS;AAC1D;AACE,kBAAI,CAAC,UAAU,yBAAyB,MAAQ;AAC9C,sBAAM,8HAAmI;AAAA,cAC3I;AAAA,YACF;AAEA,mBAAO,YAAY,WAAW,iBAAiBA,QAAO;AAAA,UACxD;AAKA,mBAAS,YAAY,IAAI;AACvB;AACE,kBAAI,mBAAmB,GAAG;AACxB,sBAAM,uKAAiL;AAAA,cACzL;AAAA,YACF;AAEA,mBAAO,UAAU,EAAE;AAAA,UACrB;AACA,cAAI,gBAAgB,mBAAmB;AAAA,YACrC,yBAAyB;AAAA,YACzB,YAAa;AAAA,YACb,SAAS;AAAA,YACT,qBAAqB;AAAA,UACvB,CAAC;AAED;AACE,gBAAI,CAAC,iBAAiBvB,cAAa,OAAO,QAAQ,OAAO,MAAM;AAE7D,kBAAI,UAAU,UAAU,QAAQ,QAAQ,IAAI,MAAM,UAAU,UAAU,QAAQ,MAAM,MAAM,MAAM,UAAU,UAAU,QAAQ,SAAS,IAAI,IAAI;AAC3I,oBAAI,WAAW,OAAO,SAAS;AAE/B,oBAAI,mBAAmB,KAAK,QAAQ,GAAG;AAErC,0BAAQ,KAAK,gHAA0H,aAAa,UAAU,kHAAuH,KAAK,kBAAkB;AAAA,gBAC9S;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAEA,kBAAQ,qDAAqD;AAC7D,kBAAQ,eAAe;AACvB,kBAAQ,aAAa;AACrB,kBAAQ,cAAc;AACtB,kBAAQ,YAAY;AACpB,kBAAQ,UAAU;AAClB,kBAAQ,cAAc;AACtB,kBAAQ,SAAS6E;AACjB,kBAAQ,yBAAyB;AACjC,kBAAQ,0BAA0B;AAClC,kBAAQ,sCAAsC;AAC9C,kBAAQ,UAAU;AAElB,cACE,OAAO,mCAAmC,eAC1C,OAAO,+BAA+B,+BACpC,YACF;AACA,2CAA+B,2BAA2B,IAAI,MAAM,CAAC;AAAA,UACvE;AAAA,QAEE,GAAG;AAAA,MACL;AAAA;AAAA;;;AC3q6BA;AAAA;AAAA;AA8BA,UAAI,OAAuC;AAGzC,iBAAS;AACT,eAAO,UAAU;AAAA,MACnB,OAAO;AACL,eAAO,UAAU;AAAA,MACnB;AAAA;AAAA;;;ACrCA;AAAA;AAAA;AAEA,UAAI,IAAI;AACR,UAAI,OAAuC;AACzC,gBAAQ,aAAa,EAAE;AACvB,gBAAQ,cAAc,EAAE;AAAA,MAC1B,OAAO;AACD,YAAI,EAAE;AACV,gBAAQ,aAAa,SAASa,IAAGC,IAAG;AAClC,YAAE,wBAAwB;AAC1B,cAAI;AACF,mBAAO,EAAE,WAAWD,IAAGC,EAAC;AAAA,UAC1B,UAAE;AACA,cAAE,wBAAwB;AAAA,UAC5B;AAAA,QACF;AACA,gBAAQ,cAAc,SAASD,IAAG,GAAGC,IAAG;AACtC,YAAE,wBAAwB;AAC1B,cAAI;AACF,mBAAO,EAAE,YAAYD,IAAG,GAAGC,EAAC;AAAA,UAC9B,UAAE;AACA,cAAE,wBAAwB;AAAA,UAC5B;AAAA,QACF;AAAA,MACF;AAjBM;AAAA;AAAA;;;ACPN;AAAA;AAAA;AAaA,UAAI,MAAuC;AACzC,SAAC,WAAW;AACd;AAIA,cAAI,YAAY,OAAO,WAAW,cAAc,OAAO;AACvD,cAAI,qBAAqB,YAAY,OAAO,IAAI,eAAe,IAAI;AACnE,cAAI,oBAAoB,YAAY,OAAO,IAAI,cAAc,IAAI;AACjE,cAAI,sBAAsB,YAAY,OAAO,IAAI,gBAAgB,IAAI;AACrE,cAAI,yBAAyB,YAAY,OAAO,IAAI,mBAAmB,IAAI;AAC3E,cAAI,sBAAsB,YAAY,OAAO,IAAI,gBAAgB,IAAI;AACrE,cAAI,sBAAsB,YAAY,OAAO,IAAI,gBAAgB,IAAI;AACrE,cAAI,qBAAqB,YAAY,OAAO,IAAI,eAAe,IAAI;AAGnE,cAAI,wBAAwB,YAAY,OAAO,IAAI,kBAAkB,IAAI;AACzE,cAAI,6BAA6B,YAAY,OAAO,IAAI,uBAAuB,IAAI;AACnF,cAAI,yBAAyB,YAAY,OAAO,IAAI,mBAAmB,IAAI;AAC3E,cAAI,sBAAsB,YAAY,OAAO,IAAI,gBAAgB,IAAI;AACrE,cAAI,2BAA2B,YAAY,OAAO,IAAI,qBAAqB,IAAI;AAC/E,cAAI,kBAAkB,YAAY,OAAO,IAAI,YAAY,IAAI;AAC7D,cAAI,kBAAkB,YAAY,OAAO,IAAI,YAAY,IAAI;AAC7D,cAAI,mBAAmB,YAAY,OAAO,IAAI,aAAa,IAAI;AAC/D,cAAI,yBAAyB,YAAY,OAAO,IAAI,mBAAmB,IAAI;AAC3E,cAAI,uBAAuB,YAAY,OAAO,IAAI,iBAAiB,IAAI;AACvE,cAAI,mBAAmB,YAAY,OAAO,IAAI,aAAa,IAAI;AAE/D,mBAAS,mBAAmB,MAAM;AAChC,mBAAO,OAAO,SAAS,YAAY,OAAO,SAAS;AAAA,YACnD,SAAS,uBAAuB,SAAS,8BAA8B,SAAS,uBAAuB,SAAS,0BAA0B,SAAS,uBAAuB,SAAS,4BAA4B,OAAO,SAAS,YAAY,SAAS,SAAS,KAAK,aAAa,mBAAmB,KAAK,aAAa,mBAAmB,KAAK,aAAa,uBAAuB,KAAK,aAAa,sBAAsB,KAAK,aAAa,0BAA0B,KAAK,aAAa,0BAA0B,KAAK,aAAa,wBAAwB,KAAK,aAAa,oBAAoB,KAAK,aAAa;AAAA,UACplB;AAEA,mBAAS,OAAO,QAAQ;AACtB,gBAAI,OAAO,WAAW,YAAY,WAAW,MAAM;AACjD,kBAAI,WAAW,OAAO;AAEtB,sBAAQ,UAAU;AAAA,gBAChB,KAAK;AACH,sBAAI,OAAO,OAAO;AAElB,0BAAQ,MAAM;AAAA,oBACZ,KAAK;AAAA,oBACL,KAAK;AAAA,oBACL,KAAK;AAAA,oBACL,KAAK;AAAA,oBACL,KAAK;AAAA,oBACL,KAAK;AACH,6BAAO;AAAA,oBAET;AACE,0BAAI,eAAe,QAAQ,KAAK;AAEhC,8BAAQ,cAAc;AAAA,wBACpB,KAAK;AAAA,wBACL,KAAK;AAAA,wBACL,KAAK;AAAA,wBACL,KAAK;AAAA,wBACL,KAAK;AACH,iCAAO;AAAA,wBAET;AACE,iCAAO;AAAA,sBACX;AAAA,kBAEJ;AAAA,gBAEF,KAAK;AACH,yBAAO;AAAA,cACX;AAAA,YACF;AAEA,mBAAO;AAAA,UACT;AAEA,cAAI,YAAY;AAChB,cAAI,iBAAiB;AACrB,cAAI,kBAAkB;AACtB,cAAI,kBAAkB;AACtB,cAAIC,WAAU;AACd,cAAI,aAAa;AACjB,cAAIC,YAAW;AACf,cAAI,OAAO;AACX,cAAI,OAAO;AACX,cAAIC,UAAS;AACb,cAAI,WAAW;AACf,cAAI,aAAa;AACjB,cAAI,WAAW;AACf,cAAI,sCAAsC;AAE1C,mBAAS,YAAY,QAAQ;AAC3B;AACE,kBAAI,CAAC,qCAAqC;AACxC,sDAAsC;AAEtC,wBAAQ,MAAM,EAAE,+KAAyL;AAAA,cAC3M;AAAA,YACF;AAEA,mBAAO,iBAAiB,MAAM,KAAK,OAAO,MAAM,MAAM;AAAA,UACxD;AACA,mBAAS,iBAAiB,QAAQ;AAChC,mBAAO,OAAO,MAAM,MAAM;AAAA,UAC5B;AACA,mBAAS,kBAAkB,QAAQ;AACjC,mBAAO,OAAO,MAAM,MAAM;AAAA,UAC5B;AACA,mBAAS,kBAAkB,QAAQ;AACjC,mBAAO,OAAO,MAAM,MAAM;AAAA,UAC5B;AACA,mBAASC,WAAU,QAAQ;AACzB,mBAAO,OAAO,WAAW,YAAY,WAAW,QAAQ,OAAO,aAAa;AAAA,UAC9E;AACA,mBAAS,aAAa,QAAQ;AAC5B,mBAAO,OAAO,MAAM,MAAM;AAAA,UAC5B;AACA,mBAAS,WAAW,QAAQ;AAC1B,mBAAO,OAAO,MAAM,MAAM;AAAA,UAC5B;AACA,mBAAS,OAAO,QAAQ;AACtB,mBAAO,OAAO,MAAM,MAAM;AAAA,UAC5B;AACA,mBAAS,OAAO,QAAQ;AACtB,mBAAO,OAAO,MAAM,MAAM;AAAA,UAC5B;AACA,mBAAS,SAAS,QAAQ;AACxB,mBAAO,OAAO,MAAM,MAAM;AAAA,UAC5B;AACA,mBAAS,WAAW,QAAQ;AAC1B,mBAAO,OAAO,MAAM,MAAM;AAAA,UAC5B;AACA,mBAAS,aAAa,QAAQ;AAC5B,mBAAO,OAAO,MAAM,MAAM;AAAA,UAC5B;AACA,mBAAS,WAAW,QAAQ;AAC1B,mBAAO,OAAO,MAAM,MAAM;AAAA,UAC5B;AAEA,kBAAQ,YAAY;AACpB,kBAAQ,iBAAiB;AACzB,kBAAQ,kBAAkB;AAC1B,kBAAQ,kBAAkB;AAC1B,kBAAQ,UAAUH;AAClB,kBAAQ,aAAa;AACrB,kBAAQ,WAAWC;AACnB,kBAAQ,OAAO;AACf,kBAAQ,OAAO;AACf,kBAAQ,SAASC;AACjB,kBAAQ,WAAW;AACnB,kBAAQ,aAAa;AACrB,kBAAQ,WAAW;AACnB,kBAAQ,cAAc;AACtB,kBAAQ,mBAAmB;AAC3B,kBAAQ,oBAAoB;AAC5B,kBAAQ,oBAAoB;AAC5B,kBAAQ,YAAYC;AACpB,kBAAQ,eAAe;AACvB,kBAAQ,aAAa;AACrB,kBAAQ,SAAS;AACjB,kBAAQ,SAAS;AACjB,kBAAQ,WAAW;AACnB,kBAAQ,aAAa;AACrB,kBAAQ,eAAe;AACvB,kBAAQ,aAAa;AACrB,kBAAQ,qBAAqB;AAC7B,kBAAQ,SAAS;AAAA,QACf,GAAG;AAAA,MACL;AAAA;AAAA;;;ACpLA;AAAA;AAAA;AAEA,UAAI,OAAuC;AACzC,eAAO,UAAU;AAAA,MACnB,OAAO;AACL,eAAO,UAAU;AAAA,MACnB;AAAA;AAAA;;;ACNA;AAAA;AAAA;AAQA,UAAI,wBAAwB,OAAO;AACnC,UAAIC,kBAAiB,OAAO,UAAU;AACtC,UAAI,mBAAmB,OAAO,UAAU;AAExC,eAAS,SAAS,KAAK;AACtB,YAAI,QAAQ,QAAQ,QAAQ,QAAW;AACtC,gBAAM,IAAI,UAAU,uDAAuD;AAAA,QAC5E;AAEA,eAAO,OAAO,GAAG;AAAA,MAClB;AAEA,eAAS,kBAAkB;AAC1B,YAAI;AACH,cAAI,CAAC,OAAO,QAAQ;AACnB,mBAAO;AAAA,UACR;AAKA,cAAI,QAAQ,IAAI,OAAO,KAAK;AAC5B,gBAAM,CAAC,IAAI;AACX,cAAI,OAAO,oBAAoB,KAAK,EAAE,CAAC,MAAM,KAAK;AACjD,mBAAO;AAAA,UACR;AAGA,cAAI,QAAQ,CAAC;AACb,mBAAS,IAAI,GAAG,IAAI,IAAI,KAAK;AAC5B,kBAAM,MAAM,OAAO,aAAa,CAAC,CAAC,IAAI;AAAA,UACvC;AACA,cAAI,SAAS,OAAO,oBAAoB,KAAK,EAAE,IAAI,SAAUC,IAAG;AAC/D,mBAAO,MAAMA,EAAC;AAAA,UACf,CAAC;AACD,cAAI,OAAO,KAAK,EAAE,MAAM,cAAc;AACrC,mBAAO;AAAA,UACR;AAGA,cAAI,QAAQ,CAAC;AACb,iCAAuB,MAAM,EAAE,EAAE,QAAQ,SAAU,QAAQ;AAC1D,kBAAM,MAAM,IAAI;AAAA,UACjB,CAAC;AACD,cAAI,OAAO,KAAK,OAAO,OAAO,CAAC,GAAG,KAAK,CAAC,EAAE,KAAK,EAAE,MAC/C,wBAAwB;AACzB,mBAAO;AAAA,UACR;AAEA,iBAAO;AAAA,QACR,SAAS,KAAK;AAEb,iBAAO;AAAA,QACR;AAAA,MACD;AAEA,aAAO,UAAU,gBAAgB,IAAI,OAAO,SAAS,SAAU,QAAQ,QAAQ;AAC9E,YAAIC;AACJ,YAAI,KAAK,SAAS,MAAM;AACxB,YAAI;AAEJ,iBAASC,KAAI,GAAGA,KAAI,UAAU,QAAQA,MAAK;AAC1C,UAAAD,QAAO,OAAO,UAAUC,EAAC,CAAC;AAE1B,mBAAS,OAAOD,OAAM;AACrB,gBAAIF,gBAAe,KAAKE,OAAM,GAAG,GAAG;AACnC,iBAAG,GAAG,IAAIA,MAAK,GAAG;AAAA,YACnB;AAAA,UACD;AAEA,cAAI,uBAAuB;AAC1B,sBAAU,sBAAsBA,KAAI;AACpC,qBAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK;AACxC,kBAAI,iBAAiB,KAAKA,OAAM,QAAQ,CAAC,CAAC,GAAG;AAC5C,mBAAG,QAAQ,CAAC,CAAC,IAAIA,MAAK,QAAQ,CAAC,CAAC;AAAA,cACjC;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAEA,eAAO;AAAA,MACR;AAAA;AAAA;;;ACzFA;AAAA;AAAA;AASA,UAAI,uBAAuB;AAE3B,aAAO,UAAU;AAAA;AAAA;;;ACXjB;AAAA;AAAA,aAAO,UAAU,SAAS,KAAK,KAAK,OAAO,UAAU,cAAc;AAAA;AAAA;;;ACAnE;AAAA;AAAA;AASA,UAAI,eAAe,WAAW;AAAA,MAAC;AAE/B,UAAI,MAAuC;AACrC,+BAAuB;AACvB,6BAAqB,CAAC;AACtB,cAAM;AAEV,uBAAe,SAAS,MAAM;AAC5B,cAAI,UAAU,cAAc;AAC5B,cAAI,OAAO,YAAY,aAAa;AAClC,oBAAQ,MAAM,OAAO;AAAA,UACvB;AACA,cAAI;AAIF,kBAAM,IAAI,MAAM,OAAO;AAAA,UACzB,SAASE,IAAG;AAAA,UAAO;AAAA,QACrB;AAAA,MACF;AAhBM;AACA;AACA;AA2BN,eAAS,eAAe,WAAW,QAAQC,WAAU,eAAe,UAAU;AAC5E,YAAI,MAAuC;AACzC,mBAAS,gBAAgB,WAAW;AAClC,gBAAI,IAAI,WAAW,YAAY,GAAG;AAChC,kBAAI;AAIJ,kBAAI;AAGF,oBAAI,OAAO,UAAU,YAAY,MAAM,YAAY;AACjD,sBAAI,MAAM;AAAA,qBACP,iBAAiB,iBAAiB,OAAOA,YAAW,YAAY,eAAe,+FACC,OAAO,UAAU,YAAY,IAAI;AAAA,kBAEpH;AACA,sBAAI,OAAO;AACX,wBAAM;AAAA,gBACR;AACA,wBAAQ,UAAU,YAAY,EAAE,QAAQ,cAAc,eAAeA,WAAU,MAAM,oBAAoB;AAAA,cAC3G,SAAS,IAAI;AACX,wBAAQ;AAAA,cACV;AACA,kBAAI,SAAS,EAAE,iBAAiB,QAAQ;AACtC;AAAA,mBACG,iBAAiB,iBAAiB,6BACnCA,YAAW,OAAO,eAAe,6FAC6B,OAAO,QAAQ;AAAA,gBAI/E;AAAA,cACF;AACA,kBAAI,iBAAiB,SAAS,EAAE,MAAM,WAAW,qBAAqB;AAGpE,mCAAmB,MAAM,OAAO,IAAI;AAEpC,oBAAI,QAAQ,WAAW,SAAS,IAAI;AAEpC;AAAA,kBACE,YAAYA,YAAW,YAAY,MAAM,WAAW,SAAS,OAAO,QAAQ;AAAA,gBAC9E;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAOA,qBAAe,oBAAoB,WAAW;AAC5C,YAAI,MAAuC;AACzC,+BAAqB,CAAC;AAAA,QACxB;AAAA,MACF;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACtGjB;AAAA;AAAA;AASA,UAAI,UAAU;AACd,UAAIC,UAAS;AAEb,UAAI,uBAAuB;AAC3B,UAAI,MAAM;AACV,UAAI,iBAAiB;AAErB,UAAI,eAAe,WAAW;AAAA,MAAC;AAE/B,UAAI,MAAuC;AACzC,uBAAe,SAAS,MAAM;AAC5B,cAAI,UAAU,cAAc;AAC5B,cAAI,OAAO,YAAY,aAAa;AAClC,oBAAQ,MAAM,OAAO;AAAA,UACvB;AACA,cAAI;AAIF,kBAAM,IAAI,MAAM,OAAO;AAAA,UACzB,SAASC,IAAG;AAAA,UAAC;AAAA,QACf;AAAA,MACF;AAEA,eAAS,+BAA+B;AACtC,eAAO;AAAA,MACT;AAEA,aAAO,UAAU,SAASC,iBAAgB,qBAAqB;AAE7D,YAAI,kBAAkB,OAAO,WAAW,cAAc,OAAO;AAC7D,YAAI,uBAAuB;AAgB3B,iBAAS,cAAc,eAAe;AACpC,cAAI,aAAa,kBAAkB,mBAAmB,cAAc,eAAe,KAAK,cAAc,oBAAoB;AAC1H,cAAI,OAAO,eAAe,YAAY;AACpC,mBAAO;AAAA,UACT;AAAA,QACF;AAiDA,YAAI,YAAY;AAIhB,YAAI,iBAAiB;AAAA,UACnB,OAAO,2BAA2B,OAAO;AAAA,UACzC,QAAQ,2BAA2B,QAAQ;AAAA,UAC3C,MAAM,2BAA2B,SAAS;AAAA,UAC1C,MAAM,2BAA2B,UAAU;AAAA,UAC3C,QAAQ,2BAA2B,QAAQ;AAAA,UAC3C,QAAQ,2BAA2B,QAAQ;AAAA,UAC3C,QAAQ,2BAA2B,QAAQ;AAAA,UAC3C,QAAQ,2BAA2B,QAAQ;AAAA,UAE3C,KAAK,qBAAqB;AAAA,UAC1B,SAAS;AAAA,UACT,SAAS,yBAAyB;AAAA,UAClC,aAAa,6BAA6B;AAAA,UAC1C,YAAY;AAAA,UACZ,MAAM,kBAAkB;AAAA,UACxB,UAAU;AAAA,UACV,OAAO;AAAA,UACP,WAAW;AAAA,UACX,OAAO;AAAA,UACP,OAAO;AAAA,QACT;AAOA,iBAAS,GAAGD,IAAGE,IAAG;AAEhB,cAAIF,OAAME,IAAG;AAGX,mBAAOF,OAAM,KAAK,IAAIA,OAAM,IAAIE;AAAA,UAClC,OAAO;AAEL,mBAAOF,OAAMA,MAAKE,OAAMA;AAAA,UAC1B;AAAA,QACF;AAUA,iBAAS,cAAc,SAASC,OAAM;AACpC,eAAK,UAAU;AACf,eAAK,OAAOA,SAAQ,OAAOA,UAAS,WAAWA,QAAM,CAAC;AACtD,eAAK,QAAQ;AAAA,QACf;AAEA,sBAAc,YAAY,MAAM;AAEhC,iBAAS,2BAA2B,UAAU;AAC5C,cAAI,MAAuC;AACzC,gBAAI,0BAA0B,CAAC;AAC/B,gBAAI,6BAA6B;AAAA,UACnC;AACA,mBAAS,UAAU,YAAY,OAAO,UAAU,eAAeC,WAAU,cAAc,QAAQ;AAC7F,4BAAgB,iBAAiB;AACjC,2BAAe,gBAAgB;AAE/B,gBAAI,WAAW,sBAAsB;AACnC,kBAAI,qBAAqB;AAEvB,oBAAI,MAAM,IAAI;AAAA,kBACZ;AAAA,gBAGF;AACA,oBAAI,OAAO;AACX,sBAAM;AAAA,cACR,WAAoD,OAAO,YAAY,aAAa;AAElF,oBAAI,WAAW,gBAAgB,MAAM;AACrC,oBACE,CAAC,wBAAwB,QAAQ;AAAA,gBAEjC,6BAA6B,GAC7B;AACA;AAAA,oBACE,6EACuB,eAAe,gBAAgB,gBAAgB;AAAA,kBAIxE;AACA,0CAAwB,QAAQ,IAAI;AACpC;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AACA,gBAAI,MAAM,QAAQ,KAAK,MAAM;AAC3B,kBAAI,YAAY;AACd,oBAAI,MAAM,QAAQ,MAAM,MAAM;AAC5B,yBAAO,IAAI,cAAc,SAASA,YAAW,OAAO,eAAe,8BAA8B,SAAS,gBAAgB,8BAA8B;AAAA,gBAC1J;AACA,uBAAO,IAAI,cAAc,SAASA,YAAW,OAAO,eAAe,iCAAiC,MAAM,gBAAgB,mCAAmC;AAAA,cAC/J;AACA,qBAAO;AAAA,YACT,OAAO;AACL,qBAAO,SAAS,OAAO,UAAU,eAAeA,WAAU,YAAY;AAAA,YACxE;AAAA,UACF;AAEA,cAAI,mBAAmB,UAAU,KAAK,MAAM,KAAK;AACjD,2BAAiB,aAAa,UAAU,KAAK,MAAM,IAAI;AAEvD,iBAAO;AAAA,QACT;AAEA,iBAAS,2BAA2B,cAAc;AAChD,mBAAS,SAAS,OAAO,UAAU,eAAeA,WAAU,cAAc,QAAQ;AAChF,gBAAI,YAAY,MAAM,QAAQ;AAC9B,gBAAI,WAAW,YAAY,SAAS;AACpC,gBAAI,aAAa,cAAc;AAI7B,kBAAI,cAAc,eAAe,SAAS;AAE1C,qBAAO,IAAI;AAAA,gBACT,aAAaA,YAAW,OAAO,eAAe,gBAAgB,MAAM,cAAc,oBAAoB,gBAAgB,mBAAmB,MAAM,eAAe;AAAA,gBAC9J,EAAC,aAA0B;AAAA,cAC7B;AAAA,YACF;AACA,mBAAO;AAAA,UACT;AACA,iBAAO,2BAA2B,QAAQ;AAAA,QAC5C;AAEA,iBAAS,uBAAuB;AAC9B,iBAAO,2BAA2B,4BAA4B;AAAA,QAChE;AAEA,iBAAS,yBAAyB,aAAa;AAC7C,mBAAS,SAAS,OAAO,UAAU,eAAeA,WAAU,cAAc;AACxE,gBAAI,OAAO,gBAAgB,YAAY;AACrC,qBAAO,IAAI,cAAc,eAAe,eAAe,qBAAqB,gBAAgB,iDAAiD;AAAA,YAC/I;AACA,gBAAI,YAAY,MAAM,QAAQ;AAC9B,gBAAI,CAAC,MAAM,QAAQ,SAAS,GAAG;AAC7B,kBAAI,WAAW,YAAY,SAAS;AACpC,qBAAO,IAAI,cAAc,aAAaA,YAAW,OAAO,eAAe,gBAAgB,MAAM,WAAW,oBAAoB,gBAAgB,wBAAwB;AAAA,YACtK;AACA,qBAAS,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAK;AACzC,kBAAI,QAAQ,YAAY,WAAW,GAAG,eAAeA,WAAU,eAAe,MAAM,IAAI,KAAK,oBAAoB;AACjH,kBAAI,iBAAiB,OAAO;AAC1B,uBAAO;AAAA,cACT;AAAA,YACF;AACA,mBAAO;AAAA,UACT;AACA,iBAAO,2BAA2B,QAAQ;AAAA,QAC5C;AAEA,iBAAS,2BAA2B;AAClC,mBAAS,SAAS,OAAO,UAAU,eAAeA,WAAU,cAAc;AACxE,gBAAI,YAAY,MAAM,QAAQ;AAC9B,gBAAI,CAACH,gBAAe,SAAS,GAAG;AAC9B,kBAAI,WAAW,YAAY,SAAS;AACpC,qBAAO,IAAI,cAAc,aAAaG,YAAW,OAAO,eAAe,gBAAgB,MAAM,WAAW,oBAAoB,gBAAgB,qCAAqC;AAAA,YACnL;AACA,mBAAO;AAAA,UACT;AACA,iBAAO,2BAA2B,QAAQ;AAAA,QAC5C;AAEA,iBAAS,+BAA+B;AACtC,mBAAS,SAAS,OAAO,UAAU,eAAeA,WAAU,cAAc;AACxE,gBAAI,YAAY,MAAM,QAAQ;AAC9B,gBAAI,CAAC,QAAQ,mBAAmB,SAAS,GAAG;AAC1C,kBAAI,WAAW,YAAY,SAAS;AACpC,qBAAO,IAAI,cAAc,aAAaA,YAAW,OAAO,eAAe,gBAAgB,MAAM,WAAW,oBAAoB,gBAAgB,0CAA0C;AAAA,YACxL;AACA,mBAAO;AAAA,UACT;AACA,iBAAO,2BAA2B,QAAQ;AAAA,QAC5C;AAEA,iBAAS,0BAA0B,eAAe;AAChD,mBAAS,SAAS,OAAO,UAAU,eAAeA,WAAU,cAAc;AACxE,gBAAI,EAAE,MAAM,QAAQ,aAAa,gBAAgB;AAC/C,kBAAI,oBAAoB,cAAc,QAAQ;AAC9C,kBAAI,kBAAkB,aAAa,MAAM,QAAQ,CAAC;AAClD,qBAAO,IAAI,cAAc,aAAaA,YAAW,OAAO,eAAe,gBAAgB,MAAM,kBAAkB,oBAAoB,gBAAgB,mBAAmB,kBAAkB,oBAAoB,KAAK;AAAA,YACnN;AACA,mBAAO;AAAA,UACT;AACA,iBAAO,2BAA2B,QAAQ;AAAA,QAC5C;AAEA,iBAAS,sBAAsB,gBAAgB;AAC7C,cAAI,CAAC,MAAM,QAAQ,cAAc,GAAG;AAClC,gBAAI,MAAuC;AACzC,kBAAI,UAAU,SAAS,GAAG;AACxB;AAAA,kBACE,iEAAiE,UAAU,SAAS;AAAA,gBAEtF;AAAA,cACF,OAAO;AACL,6BAAa,wDAAwD;AAAA,cACvE;AAAA,YACF;AACA,mBAAO;AAAA,UACT;AAEA,mBAAS,SAAS,OAAO,UAAU,eAAeA,WAAU,cAAc;AACxE,gBAAI,YAAY,MAAM,QAAQ;AAC9B,qBAAS,IAAI,GAAG,IAAI,eAAe,QAAQ,KAAK;AAC9C,kBAAI,GAAG,WAAW,eAAe,CAAC,CAAC,GAAG;AACpC,uBAAO;AAAA,cACT;AAAA,YACF;AAEA,gBAAI,eAAe,KAAK,UAAU,gBAAgB,SAAS,SAAS,KAAK,OAAO;AAC9E,kBAAI,OAAO,eAAe,KAAK;AAC/B,kBAAI,SAAS,UAAU;AACrB,uBAAO,OAAO,KAAK;AAAA,cACrB;AACA,qBAAO;AAAA,YACT,CAAC;AACD,mBAAO,IAAI,cAAc,aAAaA,YAAW,OAAO,eAAe,iBAAiB,OAAO,SAAS,IAAI,QAAQ,kBAAkB,gBAAgB,wBAAwB,eAAe,IAAI;AAAA,UACnM;AACA,iBAAO,2BAA2B,QAAQ;AAAA,QAC5C;AAEA,iBAAS,0BAA0B,aAAa;AAC9C,mBAAS,SAAS,OAAO,UAAU,eAAeA,WAAU,cAAc;AACxE,gBAAI,OAAO,gBAAgB,YAAY;AACrC,qBAAO,IAAI,cAAc,eAAe,eAAe,qBAAqB,gBAAgB,kDAAkD;AAAA,YAChJ;AACA,gBAAI,YAAY,MAAM,QAAQ;AAC9B,gBAAI,WAAW,YAAY,SAAS;AACpC,gBAAI,aAAa,UAAU;AACzB,qBAAO,IAAI,cAAc,aAAaA,YAAW,OAAO,eAAe,gBAAgB,MAAM,WAAW,oBAAoB,gBAAgB,yBAAyB;AAAA,YACvK;AACA,qBAAS,OAAO,WAAW;AACzB,kBAAI,IAAI,WAAW,GAAG,GAAG;AACvB,oBAAI,QAAQ,YAAY,WAAW,KAAK,eAAeA,WAAU,eAAe,MAAM,KAAK,oBAAoB;AAC/G,oBAAI,iBAAiB,OAAO;AAC1B,yBAAO;AAAA,gBACT;AAAA,cACF;AAAA,YACF;AACA,mBAAO;AAAA,UACT;AACA,iBAAO,2BAA2B,QAAQ;AAAA,QAC5C;AAEA,iBAAS,uBAAuB,qBAAqB;AACnD,cAAI,CAAC,MAAM,QAAQ,mBAAmB,GAAG;AACvC,mBAAwC,aAAa,wEAAwE,IAAI;AACjI,mBAAO;AAAA,UACT;AAEA,mBAAS,IAAI,GAAG,IAAI,oBAAoB,QAAQ,KAAK;AACnD,gBAAI,UAAU,oBAAoB,CAAC;AACnC,gBAAI,OAAO,YAAY,YAAY;AACjC;AAAA,gBACE,gGACc,yBAAyB,OAAO,IAAI,eAAe,IAAI;AAAA,cACvE;AACA,qBAAO;AAAA,YACT;AAAA,UACF;AAEA,mBAAS,SAAS,OAAO,UAAU,eAAeA,WAAU,cAAc;AACxE,gBAAI,gBAAgB,CAAC;AACrB,qBAASC,KAAI,GAAGA,KAAI,oBAAoB,QAAQA,MAAK;AACnD,kBAAIC,WAAU,oBAAoBD,EAAC;AACnC,kBAAI,gBAAgBC,SAAQ,OAAO,UAAU,eAAeF,WAAU,cAAc,oBAAoB;AACxG,kBAAI,iBAAiB,MAAM;AACzB,uBAAO;AAAA,cACT;AACA,kBAAI,cAAc,QAAQ,IAAI,cAAc,MAAM,cAAc,GAAG;AACjE,8BAAc,KAAK,cAAc,KAAK,YAAY;AAAA,cACpD;AAAA,YACF;AACA,gBAAI,uBAAwB,cAAc,SAAS,IAAK,6BAA6B,cAAc,KAAK,IAAI,IAAI,MAAK;AACrH,mBAAO,IAAI,cAAc,aAAaA,YAAW,OAAO,eAAe,oBAAoB,MAAM,gBAAgB,MAAM,uBAAuB,IAAI;AAAA,UACpJ;AACA,iBAAO,2BAA2B,QAAQ;AAAA,QAC5C;AAEA,iBAAS,oBAAoB;AAC3B,mBAAS,SAAS,OAAO,UAAU,eAAeA,WAAU,cAAc;AACxE,gBAAI,CAACG,QAAO,MAAM,QAAQ,CAAC,GAAG;AAC5B,qBAAO,IAAI,cAAc,aAAaH,YAAW,OAAO,eAAe,oBAAoB,MAAM,gBAAgB,2BAA2B;AAAA,YAC9I;AACA,mBAAO;AAAA,UACT;AACA,iBAAO,2BAA2B,QAAQ;AAAA,QAC5C;AAEA,iBAAS,sBAAsB,eAAeA,WAAU,cAAc,KAAK,MAAM;AAC/E,iBAAO,IAAI;AAAA,aACR,iBAAiB,iBAAiB,OAAOA,YAAW,YAAY,eAAe,MAAM,MAAM,+FACX,OAAO;AAAA,UAC1F;AAAA,QACF;AAEA,iBAAS,uBAAuB,YAAY;AAC1C,mBAAS,SAAS,OAAO,UAAU,eAAeA,WAAU,cAAc;AACxE,gBAAI,YAAY,MAAM,QAAQ;AAC9B,gBAAI,WAAW,YAAY,SAAS;AACpC,gBAAI,aAAa,UAAU;AACzB,qBAAO,IAAI,cAAc,aAAaA,YAAW,OAAO,eAAe,gBAAgB,WAAW,QAAQ,kBAAkB,gBAAgB,wBAAwB;AAAA,YACtK;AACA,qBAAS,OAAO,YAAY;AAC1B,kBAAI,UAAU,WAAW,GAAG;AAC5B,kBAAI,OAAO,YAAY,YAAY;AACjC,uBAAO,sBAAsB,eAAeA,WAAU,cAAc,KAAK,eAAe,OAAO,CAAC;AAAA,cAClG;AACA,kBAAI,QAAQ,QAAQ,WAAW,KAAK,eAAeA,WAAU,eAAe,MAAM,KAAK,oBAAoB;AAC3G,kBAAI,OAAO;AACT,uBAAO;AAAA,cACT;AAAA,YACF;AACA,mBAAO;AAAA,UACT;AACA,iBAAO,2BAA2B,QAAQ;AAAA,QAC5C;AAEA,iBAAS,6BAA6B,YAAY;AAChD,mBAAS,SAAS,OAAO,UAAU,eAAeA,WAAU,cAAc;AACxE,gBAAI,YAAY,MAAM,QAAQ;AAC9B,gBAAI,WAAW,YAAY,SAAS;AACpC,gBAAI,aAAa,UAAU;AACzB,qBAAO,IAAI,cAAc,aAAaA,YAAW,OAAO,eAAe,gBAAgB,WAAW,QAAQ,kBAAkB,gBAAgB,wBAAwB;AAAA,YACtK;AAEA,gBAAI,UAAUL,QAAO,CAAC,GAAG,MAAM,QAAQ,GAAG,UAAU;AACpD,qBAAS,OAAO,SAAS;AACvB,kBAAI,UAAU,WAAW,GAAG;AAC5B,kBAAI,IAAI,YAAY,GAAG,KAAK,OAAO,YAAY,YAAY;AACzD,uBAAO,sBAAsB,eAAeK,WAAU,cAAc,KAAK,eAAe,OAAO,CAAC;AAAA,cAClG;AACA,kBAAI,CAAC,SAAS;AACZ,uBAAO,IAAI;AAAA,kBACT,aAAaA,YAAW,OAAO,eAAe,YAAY,MAAM,oBAAoB,gBAAgB,qBACjF,KAAK,UAAU,MAAM,QAAQ,GAAG,MAAM,IAAI,IAC7D,mBAAmB,KAAK,UAAU,OAAO,KAAK,UAAU,GAAG,MAAM,IAAI;AAAA,gBACvE;AAAA,cACF;AACA,kBAAI,QAAQ,QAAQ,WAAW,KAAK,eAAeA,WAAU,eAAe,MAAM,KAAK,oBAAoB;AAC3G,kBAAI,OAAO;AACT,uBAAO;AAAA,cACT;AAAA,YACF;AACA,mBAAO;AAAA,UACT;AAEA,iBAAO,2BAA2B,QAAQ;AAAA,QAC5C;AAEA,iBAASG,QAAO,WAAW;AACzB,kBAAQ,OAAO,WAAW;AAAA,YACxB,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AACH,qBAAO;AAAA,YACT,KAAK;AACH,qBAAO,CAAC;AAAA,YACV,KAAK;AACH,kBAAI,MAAM,QAAQ,SAAS,GAAG;AAC5B,uBAAO,UAAU,MAAMA,OAAM;AAAA,cAC/B;AACA,kBAAI,cAAc,QAAQN,gBAAe,SAAS,GAAG;AACnD,uBAAO;AAAA,cACT;AAEA,kBAAI,aAAa,cAAc,SAAS;AACxC,kBAAI,YAAY;AACd,oBAAI,WAAW,WAAW,KAAK,SAAS;AACxC,oBAAI;AACJ,oBAAI,eAAe,UAAU,SAAS;AACpC,yBAAO,EAAE,OAAO,SAAS,KAAK,GAAG,MAAM;AACrC,wBAAI,CAACM,QAAO,KAAK,KAAK,GAAG;AACvB,6BAAO;AAAA,oBACT;AAAA,kBACF;AAAA,gBACF,OAAO;AAEL,yBAAO,EAAE,OAAO,SAAS,KAAK,GAAG,MAAM;AACrC,wBAAI,QAAQ,KAAK;AACjB,wBAAI,OAAO;AACT,0BAAI,CAACA,QAAO,MAAM,CAAC,CAAC,GAAG;AACrB,+BAAO;AAAA,sBACT;AAAA,oBACF;AAAA,kBACF;AAAA,gBACF;AAAA,cACF,OAAO;AACL,uBAAO;AAAA,cACT;AAEA,qBAAO;AAAA,YACT;AACE,qBAAO;AAAA,UACX;AAAA,QACF;AAEA,iBAAS,SAAS,UAAU,WAAW;AAErC,cAAI,aAAa,UAAU;AACzB,mBAAO;AAAA,UACT;AAGA,cAAI,CAAC,WAAW;AACd,mBAAO;AAAA,UACT;AAGA,cAAI,UAAU,eAAe,MAAM,UAAU;AAC3C,mBAAO;AAAA,UACT;AAGA,cAAI,OAAO,WAAW,cAAc,qBAAqB,QAAQ;AAC/D,mBAAO;AAAA,UACT;AAEA,iBAAO;AAAA,QACT;AAGA,iBAAS,YAAY,WAAW;AAC9B,cAAI,WAAW,OAAO;AACtB,cAAI,MAAM,QAAQ,SAAS,GAAG;AAC5B,mBAAO;AAAA,UACT;AACA,cAAI,qBAAqB,QAAQ;AAI/B,mBAAO;AAAA,UACT;AACA,cAAI,SAAS,UAAU,SAAS,GAAG;AACjC,mBAAO;AAAA,UACT;AACA,iBAAO;AAAA,QACT;AAIA,iBAAS,eAAe,WAAW;AACjC,cAAI,OAAO,cAAc,eAAe,cAAc,MAAM;AAC1D,mBAAO,KAAK;AAAA,UACd;AACA,cAAI,WAAW,YAAY,SAAS;AACpC,cAAI,aAAa,UAAU;AACzB,gBAAI,qBAAqB,MAAM;AAC7B,qBAAO;AAAA,YACT,WAAW,qBAAqB,QAAQ;AACtC,qBAAO;AAAA,YACT;AAAA,UACF;AACA,iBAAO;AAAA,QACT;AAIA,iBAAS,yBAAyB,OAAO;AACvC,cAAI,OAAO,eAAe,KAAK;AAC/B,kBAAQ,MAAM;AAAA,YACZ,KAAK;AAAA,YACL,KAAK;AACH,qBAAO,QAAQ;AAAA,YACjB,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AACH,qBAAO,OAAO;AAAA,YAChB;AACE,qBAAO;AAAA,UACX;AAAA,QACF;AAGA,iBAAS,aAAa,WAAW;AAC/B,cAAI,CAAC,UAAU,eAAe,CAAC,UAAU,YAAY,MAAM;AACzD,mBAAO;AAAA,UACT;AACA,iBAAO,UAAU,YAAY;AAAA,QAC/B;AAEA,uBAAe,iBAAiB;AAChC,uBAAe,oBAAoB,eAAe;AAClD,uBAAe,YAAY;AAE3B,eAAO;AAAA,MACT;AAAA;AAAA;;;ACjmBA;AAAA;AAOA,UAAI,MAAuC;AACrC,kBAAU;AAIV,8BAAsB;AAC1B,eAAO,UAAU,kCAAqC,QAAQ,WAAW,mBAAmB;AAAA,MAC9F,OAAO;AAGL,eAAO,UAAU,KAAsC;AAAA,MACzD;AAVM;AAIA;AAAA;AAAA;;;;;;;ACRS,eAASC,WAAUC,OAAM;AACtC,YAAIA,SAAQ,MAAM;AAChB,iBAAOC;QACR;AAED,YAAID,MAAKE,SAAL,MAAoB,mBAAmB;AACzC,cAAMC,iBAAgBH,MAAKG;AAC3B,iBAAOA,iBAAgBA,eAAcC,eAAeH,SAASA;QAC9D;AAED,eAAOD;MACR;ACVD,eAASK,WAAUL,OAAM;AACvB,YAAMM,aAAaP,WAAUC,KAAD,EAAOO;AACnC,eAAOP,iBAAgBM,cAAcN,iBAAgBO;MACtD;AAID,eAASC,eAAcR,OAAM;AAC3B,YAAMM,aAAaP,WAAUC,KAAD,EAAOS;AACnC,eAAOT,iBAAgBM,cAAcN,iBAAgBS;MACtD;AAID,eAASC,cAAaV,OAAM;AAE1B,YAAI,OAAOW,eAAe,aAAa;AACrC,iBAAO;QACR;AACD,YAAML,aAAaP,WAAUC,KAAD,EAAOW;AACnC,eAAOX,iBAAgBM,cAAcN,iBAAgBW;MACtD;ACzBM,UAAMC,OAAMC,KAAKD;AACjB,UAAME,OAAMD,KAAKC;AACjB,UAAMC,SAAQF,KAAKE;ACMX,eAASC,cAAsB;AAC5C,YAAMC,SAAUC,UAAsBC;AAEtC,YAAIF,UAAM,QAANA,OAAQG,UAAUC,MAAMC,QAAQL,OAAOG,MAArB,GAA8B;AAClD,iBAAOH,OAAOG,OACXG,IAAI,SAACC,MAAD;AAAA,mBAAaA,KAAKC,QAAlB,MAA2BD,KAAKE;UAAhC,CADA,EAEJC,KAAK,GAFD;QAGR;AAED,eAAOT,UAAUU;MAClB;AChBc,eAASC,mBAAmB;AACzC,eAAO,CAAC,iCAAiCC,KAAKd,YAAW,CAAjD;MACT;ACEc,eAASe,uBACtBC,SACAC,cACAC,iBACkB;AAAA,YAFlBD,iBAEkB,QAAA;AAFlBA,yBAAwB;QAEN;AAAA,YADlBC,oBACkB,QAAA;AADlBA,4BAA2B;QACT;AAClB,YAAMC,aAAaH,QAAQD,sBAAR;AACnB,YAAIK,SAAS;AACb,YAAIC,SAAS;AAEb,YAAIJ,gBAAgBzB,eAAcwB,OAAD,GAAW;AAC1CI,mBACGJ,QAAsBM,cAAc,IACjCvB,OAAMoB,WAAWI,KAAZ,IAAsBP,QAAsBM,eAAe,IAChE;AACND,mBACGL,QAAsBQ,eAAe,IAClCzB,OAAMoB,WAAWM,MAAZ,IAAuBT,QAAsBQ,gBAAgB,IAClE;QACP;AAdiB,YAAAE,QAgBSrC,WAAU2B,OAAD,IAAYjC,WAAUiC,OAAD,IAAY/B,QAA7D0C,iBAhBUD,MAgBVC;AACR,YAAMC,mBAAmB,CAACf,iBAAgB,KAAMK;AAEhD,YAAMW,MACHV,WAAWW,QACTF,oBAAoBD,iBAAiBA,eAAeI,aAAa,MACpEX;AACF,YAAMY,MACHb,WAAWc,OACTL,oBAAoBD,iBAAiBA,eAAeO,YAAY,MACnEb;AACF,YAAME,QAAQJ,WAAWI,QAAQH;AACjC,YAAMK,SAASN,WAAWM,SAASJ;AAEnC,eAAO;UACLE;UACAE;UACAQ,KAAKD;UACLG,OAAON,KAAIN;UACXa,QAAQJ,KAAIP;UACZK,MAAMD;UACNA,GAAAA;UACAG,GAAAA;QARK;MAUR;AC/Cc,eAASK,gBAAgBrD,OAAqB;AAC3D,YAAMsD,MAAMvD,WAAUC,KAAD;AACrB,YAAMuD,aAAaD,IAAIE;AACvB,YAAMC,YAAYH,IAAII;AAEtB,eAAO;UACLH;UACAE;QAFK;MAIR;ACXc,eAASE,qBAAqB3B,SAAsB;AACjE,eAAO;UACLuB,YAAYvB,QAAQuB;UACpBE,WAAWzB,QAAQyB;QAFd;MAIR;ACAc,eAASG,eAAc5D,OAAqB;AACzD,YAAIA,UAASD,WAAUC,KAAD,KAAU,CAACQ,eAAcR,KAAD,GAAQ;AACpD,iBAAOqD,gBAAgBrD,KAAD;QACvB,OAAM;AACL,iBAAO2D,qBAAqB3D,KAAD;QAC5B;MACF;ACVc,eAAS6D,aAAY7B,SAAkC;AACpE,eAAOA,WAAWA,QAAQ8B,YAAY,IAAIC,YAAzB,IAAyC;MAC3D;ACDc,eAASC,oBACtBhC,SACa;AAEb,iBACG3B,WAAU2B,OAAD,IACNA,QAAQ7B;;UAER6B,QAAQiC;cAAahE,OAAOgE,UAChCC;MACH;ACTc,eAASC,oBAAoBnC,SAA0B;AAQpE,eACED,uBAAsBiC,oBAAmBhC,OAAD,CAAnB,EAA8Bc,OACnDO,gBAAgBrB,OAAD,EAAUuB;MAE5B;ACdc,eAASa,kBACtBpC,SACqB;AACrB,eAAOjC,WAAUiC,OAAD,EAAUoC,iBAAiBpC,OAApC;MACR;ACJc,eAASqC,eAAerC,SAA+B;AAAA,YAAA,oBAEzBoC,kBAAiBpC,OAAD,GAAnDsC,WAF4D,kBAE5DA,UAAUC,YAFkD,kBAElDA,WAAWC,YAFuC,kBAEvCA;AAC7B,eAAO,6BAA6B1C,KAAKwC,WAAWE,YAAYD,SAAzD;MACR;ACID,eAASE,gBAAgBzC,SAAsB;AAC7C,YAAM0C,OAAO1C,QAAQD,sBAAR;AACb,YAAMK,SAASrB,OAAM2D,KAAKnC,KAAN,IAAeP,QAAQM,eAAe;AAC1D,YAAMD,SAAStB,OAAM2D,KAAKjC,MAAN,IAAgBT,QAAQQ,gBAAgB;AAE5D,eAAOJ,WAAW,KAAKC,WAAW;MACnC;AAIc,eAASsC,iBACtBC,yBACAC,cACAC,SACM;AAAA,YADNA,YACM,QAAA;AADNA,oBAAmB;QACb;AACN,YAAMC,0BAA0BvE,eAAcqE,YAAD;AAC7C,YAAMG,uBACJxE,eAAcqE,YAAD,KAAkBJ,gBAAgBI,YAAD;AAChD,YAAMX,kBAAkBF,oBAAmBa,YAAD;AAC1C,YAAMH,OAAO3C,uBACX6C,yBACAI,sBACAF,OAHgC;AAMlC,YAAIG,SAAS;UAAE1B,YAAY;UAAGE,WAAW;QAA5B;AACb,YAAIyB,UAAU;UAAErC,GAAG;UAAGG,GAAG;QAAX;AAEd,YAAI+B,2BAA4B,CAACA,2BAA2B,CAACD,SAAU;AACrE,cACEjB,aAAYgB,YAAD,MAAmB;UAE9BR,eAAeH,eAAD,GACd;AACAe,qBAASrB,eAAciB,YAAD;UACvB;AAED,cAAIrE,eAAcqE,YAAD,GAAgB;AAC/BK,sBAAUnD,uBAAsB8C,cAAc,IAAf;AAC/BK,oBAAQrC,KAAKgC,aAAaM;AAC1BD,oBAAQlC,KAAK6B,aAAaO;UAC3B,WAAUlB,iBAAiB;AAC1BgB,oBAAQrC,IAAIsB,oBAAoBD,eAAD;UAChC;QACF;AAED,eAAO;UACLrB,GAAG6B,KAAK5B,OAAOmC,OAAO1B,aAAa2B,QAAQrC;UAC3CG,GAAG0B,KAAKzB,MAAMgC,OAAOxB,YAAYyB,QAAQlC;UACzCT,OAAOmC,KAAKnC;UACZE,QAAQiC,KAAKjC;QAJR;MAMR;ACzDc,eAAS4C,cAAcrD,SAA4B;AAChE,YAAMG,aAAaJ,uBAAsBC,OAAD;AAIxC,YAAIO,QAAQP,QAAQM;AACpB,YAAIG,SAAST,QAAQQ;AAErB,YAAI3B,KAAKyE,IAAInD,WAAWI,QAAQA,KAA5B,KAAsC,GAAG;AAC3CA,kBAAQJ,WAAWI;QACpB;AAED,YAAI1B,KAAKyE,IAAInD,WAAWM,SAASA,MAA7B,KAAwC,GAAG;AAC7CA,mBAASN,WAAWM;QACrB;AAED,eAAO;UACLI,GAAGb,QAAQe;UACXC,GAAGhB,QAAQkB;UACXX;UACAE;QAJK;MAMR;ACvBc,eAAS8C,eAAcvD,SAAkC;AACtE,YAAI6B,aAAY7B,OAAD,MAAc,QAAQ;AACnC,iBAAOA;QACR;AAED;;;;UAIEA,QAAQwD;UACRxD,QAAQyD;WACP/E,cAAasB,OAAD,IAAYA,QAAQ0D,OAAO;;UAExC1B,oBAAmBhC,OAAD;;MAErB;ACdc,eAAS2D,iBAAgB3F,OAAyB;AAC/D,YAAI,CAAC,QAAQ,QAAQ,WAAjB,EAA8B4F,QAAQ/B,aAAY7D,KAAD,CAAjD,KAA4D,GAAG;AAEjE,iBAAOA,MAAKG,cAAc0F;QAC3B;AAED,YAAIrF,eAAcR,KAAD,KAAUqE,eAAerE,KAAD,GAAQ;AAC/C,iBAAOA;QACR;AAED,eAAO2F,iBAAgBJ,eAAcvF,KAAD,CAAd;MACvB;ACJc,eAAS8F,kBACtB9D,SACA+D,MAC0C;AAAA,YAAA;AAAA,YAD1CA,SAC0C,QAAA;AAD1CA,iBAAgC,CAAA;QACU;AAC1C,YAAMC,eAAeL,iBAAgB3D,OAAD;AACpC,YAAMiE,SAASD,mBAAY,wBAAKhE,QAAQ7B,kBAAb,OAAA,SAAK,sBAAuB0F;AACvD,YAAMvC,MAAMvD,WAAUiG,YAAD;AACrB,YAAME,SAASD,SACX,CAAC3C,GAAD,EAAM6C,OACJ7C,IAAIX,kBAAkB,CAAA,GACtB0B,eAAe2B,YAAD,IAAiBA,eAAe,CAAA,CAFhD,IAIAA;AACJ,YAAMI,cAAcL,KAAKI,OAAOD,MAAZ;AAEpB,eAAOD,SACHG;;UAEAA,YAAYD,OAAOL,kBAAkBP,eAAcW,MAAD,CAAd,CAApC;;MACL;AC7Bc,eAASG,gBAAerE,SAA2B;AAChE,eAAO,CAAC,SAAS,MAAM,IAAhB,EAAsB4D,QAAQ/B,aAAY7B,OAAD,CAAzC,KAAuD;MAC/D;ACID,eAASsE,oBAAoBtE,SAA4B;AACvD,YACE,CAACxB,eAAcwB,OAAD;QAEdoC,kBAAiBpC,OAAD,EAAUuE,aAAa,SACvC;AACA,iBAAO;QACR;AAED,eAAOvE,QAAQ6C;MAChB;AAID,eAAS2B,oBAAmBxE,SAAkB;AAC5C,YAAMyE,YAAY,WAAW3E,KAAKd,YAAW,CAA3B;AAClB,YAAM0F,OAAO,WAAW5E,KAAKd,YAAW,CAA3B;AAEb,YAAI0F,QAAQlG,eAAcwB,OAAD,GAAW;AAElC,cAAM2E,aAAavC,kBAAiBpC,OAAD;AACnC,cAAI2E,WAAWJ,aAAa,SAAS;AACnC,mBAAO;UACR;QACF;AAED,YAAIK,cAAcrB,eAAcvD,OAAD;AAE/B,YAAItB,cAAakG,WAAD,GAAe;AAC7BA,wBAAcA,YAAYlB;QAC3B;AAED,eACElF,eAAcoG,WAAD,KACb,CAAC,QAAQ,MAAT,EAAiBhB,QAAQ/B,aAAY+C,WAAD,CAApC,IAAqD,GACrD;AACA,cAAMC,OAAMzC,kBAAiBwC,WAAD;AAK5B,cACEC,KAAIC,cAAc,UAClBD,KAAIE,gBAAgB,UACpBF,KAAIG,YAAY,WAChB,CAAC,aAAa,aAAd,EAA6BpB,QAAQiB,KAAII,UAAzC,MAAyD,MACxDR,aAAaI,KAAII,eAAe,YAChCR,aAAaI,KAAIK,UAAUL,KAAIK,WAAW,QAC3C;AACA,mBAAON;UACR,OAAM;AACLA,0BAAcA,YAAYnB;UAC3B;QACF;AAED,eAAO;MACR;AAIc,eAAS0B,gBAAgBnF,SAAkB;AACxD,YAAM/B,UAASF,WAAUiC,OAAD;AAExB,YAAI6C,eAAeyB,oBAAoBtE,OAAD;AAEtC,eACE6C,gBACAwB,gBAAexB,YAAD,KACdT,kBAAiBS,YAAD,EAAe0B,aAAa,UAC5C;AACA1B,yBAAeyB,oBAAoBzB,YAAD;QACnC;AAED,YACEA,iBACChB,aAAYgB,YAAD,MAAmB,UAC5BhB,aAAYgB,YAAD,MAAmB,UAC7BT,kBAAiBS,YAAD,EAAe0B,aAAa,WAChD;AACA,iBAAOtG;QACR;AAED,eAAO4E,gBAAgB2B,oBAAmBxE,OAAD,KAAa/B;MACvD;AC3FM,UAAMgD,MAAa;AACnB,UAAMG,SAAmB;AACzB,UAAMD,QAAiB;AACvB,UAAML,OAAe;AACrB,UAAMsE,OAAe;AAMrB,UAAMC,iBAAuC,CAACpE,KAAKG,QAAQD,OAAOL,IAArB;AAE7C,UAAMwE,QAAiB;AACvB,UAAMC,MAAa;AAGnB,UAAMC,kBAAqC;AAC3C,UAAMC,WAAuB;AAI7B,UAAMC,SAAmB;AACzB,UAAMC,YAAyB;AAgB/B,UAAMC,sBAAiDP,+BAAeQ,OAC3E,SAACC,KAAgCC,WAAjC;AAAA,eACED,IAAI3B,OAAO,CAAK4B,YAAL,MAAkBT,OAAmBS,YAArC,MAAkDR,GAAlD,CAAX;MADF,GAEA,CAAA,CAH4D;AAKvD,UAAMS,aAA+B,iBAAA,EAAA,OAAIX,gBAAJ,CAAoBD,IAApB,CAAA,EAA0BS,OACpE,SACEC,KACAC,WAFF;AAAA,eAIED,IAAI3B,OAAO,CACT4B,WACIA,YAFK,MAEQT,OACbS,YAHK,MAGQR,GAHR,CAAX;MAJF,GASA,CAAA,CAV0C;AAcrC,UAAMU,aAA2B;AACjC,UAAMC,OAAe;AACrB,UAAMC,YAAyB;AAE/B,UAAMC,aAA2B;AACjC,UAAMC,OAAe;AACrB,UAAMC,YAAyB;AAE/B,UAAMC,cAA6B;AACnC,UAAMC,QAAiB;AACvB,UAAMC,aAA2B;AACjC,UAAMC,iBAAwC,CACnDT,YACAC,MACAC,WACAC,YACAC,MACAC,WACAC,aACAC,OACAC,UATmD;AChErD,eAASE,MAAMC,WAAW;AACxB,YAAMrH,OAAM,oBAAIsH,IAAJ;AACZ,YAAMC,UAAU,oBAAIC,IAAJ;AAChB,YAAMC,SAAS,CAAA;AAEfJ,kBAAUK,QAAQ,SAAAC,UAAY;AAC5B3H,UAAAA,KAAI4H,IAAID,SAASE,MAAMF,QAAvB;QACD,CAFD;AAKA,iBAASG,KAAKH,UAA8B;AAC1CJ,kBAAQQ,IAAIJ,SAASE,IAArB;AAEA,cAAMG,WAAQ,CAAA,EAAA,OACRL,SAASK,YAAY,CAAA,GACrBL,SAASM,oBAAoB,CAAA,CAFrB;AAKdD,mBAASN,QAAQ,SAAAQ,KAAO;AACtB,gBAAI,CAACX,QAAQY,IAAID,GAAZ,GAAkB;AACrB,kBAAME,cAAcpI,KAAIqI,IAAIH,GAAR;AAEpB,kBAAIE,aAAa;AACfN,qBAAKM,WAAD;cACL;YACF;UACF,CARD;AAUAX,iBAAOa,KAAKX,QAAZ;QACD;AAEDN,kBAAUK,QAAQ,SAAAC,UAAY;AAC5B,cAAI,CAACJ,QAAQY,IAAIR,SAASE,IAArB,GAA4B;AAE/BC,iBAAKH,QAAD;UACL;QACF,CALD;AAOA,eAAOF;MACR;AAEc,eAASc,eACtBlB,WAC2B;AAE3B,YAAMmB,mBAAmBpB,MAAMC,SAAD;AAG9B,eAAOF,eAAeb,OAAO,SAACC,KAAKkC,OAAU;AAC3C,iBAAOlC,IAAI3B,OACT4D,iBAAiB7C,OAAO,SAAAgC,UAAQ;AAAA,mBAAIA,SAASc,UAAUA;UAAvB,CAAhC,CADK;QAGR,GAAE,CAAA,CAJI;MAKR;ACxDc,eAASC,SAAYC,IAAgC;AAClE,YAAIC;AACJ,eAAO,WAAM;AACX,cAAI,CAACA,SAAS;AACZA,sBAAU,IAAIC,QAAW,SAAAC,SAAW;AAClCD,sBAAQC,QAAR,EAAkBC,KAAK,WAAM;AAC3BH,0BAAUI;AACVF,wBAAQH,GAAE,CAAH;cACR,CAHD;YAID,CALS;UAMX;AAED,iBAAOC;QACR;MACF;ACbc,eAASK,YACtB5B,WACmC;AACnC,YAAM6B,SAAS7B,UAAUf,OAAO,SAAC4C,SAAQC,SAAY;AACnD,cAAMC,WAAWF,QAAOC,QAAQtB,IAAT;AACvBqB,UAAAA,QAAOC,QAAQtB,IAAT,IAAiBuB,WAAQ,OAAA,OAAA,CAAA,GAEtBA,UACAD,SAHsB;YAIzBE,SAAO,OAAA,OAAA,CAAA,GAAOD,SAASC,SAAYF,QAAQE,OAApC;YACPC,MAAI,OAAA,OAAA,CAAA,GAAOF,SAASE,MAASH,QAAQG,IAAjC;UALqB,CAAA,IAO3BH;AACJ,iBAAOD;QACR,GAAE,CAAA,CAXY;AAcf,eAAOK,OAAOC,KAAKN,MAAZ,EAAoBlJ,IAAI,SAAAyJ,KAAG;AAAA,iBAAIP,OAAOO,GAAD;QAAV,CAA3B;MACR;ACdc,eAASC,gBACtBjJ,SACAkJ,UACA;AACA,YAAM5H,MAAMvD,WAAUiC,OAAD;AACrB,YAAMmJ,OAAOnH,oBAAmBhC,OAAD;AAC/B,YAAMW,iBAAiBW,IAAIX;AAE3B,YAAIJ,QAAQ4I,KAAKC;AACjB,YAAI3I,SAAS0I,KAAKE;AAClB,YAAIxI,KAAI;AACR,YAAIG,KAAI;AAER,YAAIL,gBAAgB;AAClBJ,kBAAQI,eAAeJ;AACvBE,mBAASE,eAAeF;AAExB,cAAM6I,iBAAiBzJ,iBAAgB;AAEvC,cAAIyJ,kBAAmB,CAACA,kBAAkBJ,aAAa,SAAU;AAC/DrI,YAAAA,KAAIF,eAAeI;AACnBC,YAAAA,KAAIL,eAAeO;UACpB;QACF;AAED,eAAO;UACLX;UACAE;UACAI,GAAGA,KAAIsB,oBAAoBnC,OAAD;UAC1BgB,GAAAA;QAJK;MAMR;AC5Bc,eAASuI,gBAAgBvJ,SAA4B;AAAA,YAAA;AAClE,YAAMmJ,OAAOnH,oBAAmBhC,OAAD;AAC/B,YAAMwJ,YAAYnI,gBAAgBrB,OAAD;AACjC,YAAM6D,QAAI,wBAAG7D,QAAQ7B,kBAAX,OAAA,SAAG,sBAAuB0F;AAEpC,YAAMtD,QAAQ3B,KACZuK,KAAKM,aACLN,KAAKC,aACLvF,OAAOA,KAAK4F,cAAc,GAC1B5F,OAAOA,KAAKuF,cAAc,CAJX;AAMjB,YAAM3I,SAAS7B,KACbuK,KAAKO,cACLP,KAAKE,cACLxF,OAAOA,KAAK6F,eAAe,GAC3B7F,OAAOA,KAAKwF,eAAe,CAJX;AAOlB,YAAIxI,KAAI,CAAC2I,UAAUjI,aAAaY,oBAAoBnC,OAAD;AACnD,YAAMgB,KAAI,CAACwI,UAAU/H;AAErB,YAAIW,kBAAiByB,QAAQsF,IAAT,EAAeQ,cAAc,OAAO;AACtD9I,UAAAA,MAAKjC,KAAIuK,KAAKC,aAAavF,OAAOA,KAAKuF,cAAc,CAA7C,IAAkD7I;QAC3D;AAED,eAAO;UAAEA;UAAOE;UAAQI,GAAAA;UAAGG,GAAAA;QAApB;MACR;ACjCc,eAAS4I,UAASC,QAAiBC,OAAgB;AAChE,YAAMC,WAAWD,MAAME,eAAeF,MAAME,YAAN;AAGtC,YAAIH,OAAOD,SAASE,KAAhB,GAAwB;AAC1B,iBAAO;QACR,WAEQC,YAAYrL,cAAaqL,QAAD,GAAY;AAC3C,cAAIE,QAAOH;AACX,aAAG;AACD,gBAAIG,SAAQJ,OAAOK,WAAWD,KAAlB,GAAyB;AACnC,qBAAO;YACR;AAEDA,YAAAA,QAAOA,MAAKxG,cAAcwG,MAAKvG;UAChC,SAAQuG;QACV;AAGD,eAAO;MACR;ACrBc,eAASE,kBAAiBzH,MAA8B;AACrE,eAAA,OAAA,OAAA,CAAA,GACKA,MADL;UAEE5B,MAAM4B,KAAK7B;UACXI,KAAKyB,KAAK1B;UACVG,OAAOuB,KAAK7B,IAAI6B,KAAKnC;UACrBa,QAAQsB,KAAK1B,IAAI0B,KAAKjC;QALxB,CAAA;MAOD;ACOD,eAAS2J,2BACPpK,SACAkJ,UACA;AACA,YAAMxG,OAAO3C,uBAAsBC,SAAS,OAAOkJ,aAAa,OAA9B;AAElCxG,aAAKzB,MAAMyB,KAAKzB,MAAMjB,QAAQoD;AAC9BV,aAAK5B,OAAO4B,KAAK5B,OAAOd,QAAQmD;AAChCT,aAAKtB,SAASsB,KAAKzB,MAAMjB,QAAQqJ;AACjC3G,aAAKvB,QAAQuB,KAAK5B,OAAOd,QAAQoJ;AACjC1G,aAAKnC,QAAQP,QAAQoJ;AACrB1G,aAAKjC,SAAST,QAAQqJ;AACtB3G,aAAK7B,IAAI6B,KAAK5B;AACd4B,aAAK1B,IAAI0B,KAAKzB;AAEd,eAAOyB;MACR;AAED,eAAS2H,2BACPrK,SACAsK,gBACApB,UACkB;AAClB,eAAOoB,mBAAmB7E,WACtB0E,kBAAiBlB,gBAAgBjJ,SAASkJ,QAAV,CAAhB,IAChB7K,WAAUiM,cAAD,IACTF,2BAA2BE,gBAAgBpB,QAAjB,IAC1BiB,kBAAiBZ,gBAAgBvH,oBAAmBhC,OAAD,CAAnB,CAAhB;MACrB;AAKD,eAASuK,mBAAmBvK,SAAkC;AAC5D,YAAMwF,mBAAkB1B,kBAAkBP,eAAcvD,OAAD,CAAd;AACzC,YAAMwK,oBACJ,CAAC,YAAY,OAAb,EAAsB5G,QAAQxB,kBAAiBpC,OAAD,EAAUuE,QAAxD,KAAqE;AACvE,YAAMkG,iBACJD,qBAAqBhM,eAAcwB,OAAD,IAC9BmF,gBAAgBnF,OAAD,IACfA;AAEN,YAAI,CAAC3B,WAAUoM,cAAD,GAAkB;AAC9B,iBAAO,CAAA;QACR;AAGD,eAAOjF,iBAAgBN,OACrB,SAACoF,gBAAD;AAAA,iBACEjM,WAAUiM,cAAD,KACTV,UAASU,gBAAgBG,cAAjB,KACR5I,aAAYyI,cAAD,MAAqB;QAHlC,CADK;MAMR;AAIc,eAASI,gBACtB1K,SACA2K,UACAC,cACA1B,UACkB;AAClB,YAAM2B,sBACJF,aAAa,oBACTJ,mBAAmBvK,OAAD,IAClB,CAAA,EAAGmE,OAAOwG,QAAV;AACN,YAAMnF,mBAAe,CAAA,EAAA,OAAOqF,qBAAP,CAA4BD,YAA5B,CAAA;AACrB,YAAME,sBAAsBtF,iBAAgB,CAAD;AAE3C,YAAMuF,eAAevF,iBAAgBK,OAAO,SAACmF,SAASV,gBAAmB;AACvE,cAAM5H,OAAO2H,2BAA2BrK,SAASsK,gBAAgBpB,QAA1B;AAEvC8B,kBAAQ/J,MAAMrC,KAAI8D,KAAKzB,KAAK+J,QAAQ/J,GAAnB;AACjB+J,kBAAQ7J,QAAQrC,KAAI4D,KAAKvB,OAAO6J,QAAQ7J,KAArB;AACnB6J,kBAAQ5J,SAAStC,KAAI4D,KAAKtB,QAAQ4J,QAAQ5J,MAAtB;AACpB4J,kBAAQlK,OAAOlC,KAAI8D,KAAK5B,MAAMkK,QAAQlK,IAApB;AAElB,iBAAOkK;QACR,GAAEX,2BAA2BrK,SAAS8K,qBAAqB5B,QAA/B,CATR;AAWrB6B,qBAAaxK,QAAQwK,aAAa5J,QAAQ4J,aAAajK;AACvDiK,qBAAatK,SAASsK,aAAa3J,SAAS2J,aAAa9J;AACzD8J,qBAAalK,IAAIkK,aAAajK;AAC9BiK,qBAAa/J,IAAI+J,aAAa9J;AAE9B,eAAO8J;MACR;ACtGc,eAASE,iBACtBlF,WACe;AACf,eAAQA,UAAUmF,MAAM,GAAhB,EAAqB,CAArB;MACT;ACJc,eAASC,aAAapF,WAAkC;AACrE,eAAQA,UAAUmF,MAAM,GAAhB,EAAqB,CAArB;MACT;ACFc,eAASE,yBACtBrF,WACW;AACX,eAAO,CAAC,OAAO,QAAR,EAAkBnC,QAAQmC,SAA1B,KAAwC,IAAI,MAAM;MAC1D;ACKc,eAASsF,eAAT3K,OASH;AAAA,YARViF,aAQUjF,MARViF,WACA3F,UAOUU,MAPVV,SACA+F,YAMUrF,MANVqF;AAOA,YAAMuF,gBAAgBvF,YAAYkF,iBAAiBlF,SAAD,IAAc;AAChE,YAAMwF,YAAYxF,YAAYoF,aAAapF,SAAD,IAAc;AACxD,YAAMyF,UAAU7F,WAAU9E,IAAI8E,WAAUpF,QAAQ,IAAIP,QAAQO,QAAQ;AACpE,YAAMkL,UAAU9F,WAAU3E,IAAI2E,WAAUlF,SAAS,IAAIT,QAAQS,SAAS;AAEtE,YAAIyC;AACJ,gBAAQoI,eAAR;UACE,KAAKrK;AACHiC,sBAAU;cACRrC,GAAG2K;cACHxK,GAAG2E,WAAU3E,IAAIhB,QAAQS;YAFjB;AAIV;UACF,KAAKW;AACH8B,sBAAU;cACRrC,GAAG2K;cACHxK,GAAG2E,WAAU3E,IAAI2E,WAAUlF;YAFnB;AAIV;UACF,KAAKU;AACH+B,sBAAU;cACRrC,GAAG8E,WAAU9E,IAAI8E,WAAUpF;cAC3BS,GAAGyK;YAFK;AAIV;UACF,KAAK3K;AACHoC,sBAAU;cACRrC,GAAG8E,WAAU9E,IAAIb,QAAQO;cACzBS,GAAGyK;YAFK;AAIV;UACF;AACEvI,sBAAU;cACRrC,GAAG8E,WAAU9E;cACbG,GAAG2E,WAAU3E;YAFL;QA1Bd;AAgCA,YAAM0K,WAAWJ,gBACbF,yBAAyBE,aAAD,IACxB;AAEJ,YAAII,YAAY,MAAM;AACpB,cAAMC,MAAMD,aAAa,MAAM,WAAW;AAE1C,kBAAQH,WAAR;YACE,KAAKjG;AACHpC,sBAAQwI,QAAD,IACLxI,QAAQwI,QAAD,KAAc/F,WAAUgG,GAAD,IAAQ,IAAI3L,QAAQ2L,GAAD,IAAQ;AAC3D;YACF,KAAKpG;AACHrC,sBAAQwI,QAAD,IACLxI,QAAQwI,QAAD,KAAc/F,WAAUgG,GAAD,IAAQ,IAAI3L,QAAQ2L,GAAD,IAAQ;AAC3D;UARJ;QAWD;AAED,eAAOzI;MACR;AC9Ec,eAAS0I,qBAAiC;AACvD,eAAO;UACL3K,KAAK;UACLE,OAAO;UACPC,QAAQ;UACRN,MAAM;QAJD;MAMR;ACNc,eAAS+K,mBACtBC,eACY;AACZ,eAAA,OAAA,OAAA,CAAA,GACKF,mBAAkB,GAClBE,aAFL;MAID;ACTc,eAASC,gBAGtBC,OAAUjD,MAAsC;AAChD,eAAOA,KAAKlD,OAAO,SAACoG,SAASjD,KAAQ;AACnCiD,kBAAQjD,GAAD,IAAQgD;AACf,iBAAOC;QACR,GAAE,CAAA,CAHI;MAIR;ACuBc,eAASC,eACtBC,QACAvD,UACY;AAAA,YADZA,aACY,QAAA;AADZA,UAAAA,WAA2B,CAAA;QACf;AAAA,YAAAwD,YASRxD,UATQ,qBAAAwD,UAEVrG,WAAAA,YAFU,uBAAA,SAEEoG,OAAMpG,YAFR,oBAAA,oBAAAqG,UAGVlD,UAAAA,WAHU,sBAAA,SAGCiD,OAAMjD,WAHP,mBAAA,oBAAAkD,UAIVzB,UAAAA,WAJU,sBAAA,SAICnF,kBAJD,mBAAA,wBAAA4G,UAKVxB,cAAAA,eALU,0BAAA,SAKKnF,WALL,uBAAA,wBAAA2G,UAMVC,gBAAAA,iBANU,0BAAA,SAMO3G,SANP,uBAAA,uBAAA0G,UAOVE,aAAAA,cAPU,yBAAA,SAOI,QAPJ,sBAAA,mBAAAF,UAQVG,SAAAA,WARU,qBAAA,SAQA,IARA;AAWZ,YAAMT,gBAAgBD,mBACpB,OAAOU,aAAY,WACfA,WACAR,gBAAgBQ,UAASlH,cAAV,CAHmB;AAMxC,YAAMmH,aAAaH,mBAAmB3G,SAASC,YAAYD;AAE3D,YAAM+G,aAAaN,OAAMO,MAAMhH;AAC/B,YAAM1F,UAAUmM,OAAMQ,SAASL,cAAcE,aAAaH,cAA1C;AAEhB,YAAMO,qBAAqBlC,gBACzBrM,WAAU2B,OAAD,IACLA,UACAA,QAAQ6M,kBAAkB7K,oBAAmBmK,OAAMQ,SAASjH,MAAhB,GAChDiF,UACAC,cACA1B,QANwC;AAS1C,YAAM4D,sBAAsB/M,uBAAsBoM,OAAMQ,SAAShH,SAAhB;AAEjD,YAAMoH,iBAAgB1B,eAAe;UACnC1F,WAAWmH;UACX9M,SAASyM;UACTvD,UAAU;UACVnD;QAJmC,CAAD;AAOpC,YAAMiH,mBAAmB7C,kBAAgB,OAAA,OAAA,CAAA,GACpCsC,YACAM,cAFoC,CAAA;AAKzC,YAAME,oBACJZ,mBAAmB3G,SAASsH,mBAAmBF;AAIjD,YAAMI,kBAAkB;UACtBjM,KAAK2L,mBAAmB3L,MAAMgM,kBAAkBhM,MAAM6K,cAAc7K;UACpEG,QACE6L,kBAAkB7L,SAClBwL,mBAAmBxL,SACnB0K,cAAc1K;UAChBN,MAAM8L,mBAAmB9L,OAAOmM,kBAAkBnM,OAAOgL,cAAchL;UACvEK,OACE8L,kBAAkB9L,QAAQyL,mBAAmBzL,QAAQ2K,cAAc3K;QAR/C;AAWxB,YAAMgM,aAAahB,OAAMiB,cAAcC;AAGvC,YAAIhB,mBAAmB3G,UAAUyH,YAAY;AAC3C,cAAME,UAASF,WAAWpH,SAAD;AAEzB+C,iBAAOC,KAAKmE,eAAZ,EAA6BjG,QAAQ,SAAC+B,KAAQ;AAC5C,gBAAMsE,WAAW,CAACnM,OAAOC,MAAR,EAAgBwC,QAAQoF,GAAxB,KAAgC,IAAI,IAAI;AACzD,gBAAMuE,OAAO,CAACtM,KAAKG,MAAN,EAAcwC,QAAQoF,GAAtB,KAA8B,IAAI,MAAM;AACrDkE,4BAAgBlE,GAAD,KAASqE,QAAOE,IAAD,IAASD;UACxC,CAJD;QAKD;AAED,eAAOJ;MACR;AC7FD,UAAMM,kBAAuC;QAC3CzH,WAAW;QACXa,WAAW,CAAA;QACXsC,UAAU;MAHiC;AAW7C,eAASuE,mBAA+C;AAAA,iBAAA,OAAA,UAAA,QAA3BC,OAA2B,IAAA,MAAA,IAAA,GAAA,OAAA,GAAA,OAAA,MAAA,QAAA;AAA3BA,eAA2B,IAAA,IAAA,UAAA,IAAA;QAAA;AACtD,eAAO,CAACA,KAAKC,KACX,SAAC3N,SAAD;AAAA,iBACE,EAAEA,WAAW,OAAOA,QAAQD,0BAA0B;QADxD,CADM;MAIT;AAEM,eAAS6N,gBAAgBC,kBAA4C;AAAA,YAA5CA,qBAA4C,QAAA;AAA5CA,6BAAwC,CAAA;QAAI;AAAA,YAAA,oBAExEA,kBAFwE,wBAAA,kBAClEC,kBAAAA,oBADkE,0BAAA,SAC/C,CAAA,IAD+C,uBAAA,yBAAA,kBAC3CC,gBAAAA,iBAD2C,2BAAA,SAC1BP,kBAD0B;AAI1E,eAAO,SAASQ,cACdrI,YACAD,SACAkD,UACU;AAAA,cADVA,aACU,QAAA;AADVA,YAAAA,WAA6CmF;UACnC;AACV,cAAI5B,SAAuB;YACzBpG,WAAW;YACXgC,kBAAkB,CAAA;YAClBa,SAAO,OAAA,OAAA,CAAA,GAAO4E,iBAAoBO,cAA3B;YACPX,eAAe,CAAA;YACfT,UAAU;cACRhH,WAAAA;cACAD,QAAAA;YAFQ;YAIVuI,YAAY,CAAA;YACZC,QAAQ,CAAA;UAViB;AAa3B,cAAIC,mBAAsC,CAAA;AAC1C,cAAIC,cAAc;AAElB,cAAMC,WAAW;YACflC,OAAAA;YACAmC,YAFe,SAAA,WAEJC,kBAAkB;AAC3B,kBAAM3F,WACJ,OAAO2F,qBAAqB,aACxBA,iBAAiBpC,OAAMvD,OAAP,IAChB2F;AAENC,qCAAsB;AAEtBrC,cAAAA,OAAMvD,UAAN,OAAA,OAAA,CAAA,GAEKmF,gBACA5B,OAAMvD,SACNA,QAJL;AAOAuD,cAAAA,OAAMsC,gBAAgB;gBACpB9I,WAAWtH,WAAUsH,UAAD,IAChB7B,kBAAkB6B,UAAD,IACjBA,WAAUkH,iBACV/I,kBAAkB6B,WAAUkH,cAAX,IACjB,CAAA;gBACJnH,QAAQ5B,kBAAkB4B,OAAD;cANL;AAWtB,kBAAMqC,mBAAmBD,eACvBU,YAAW,CAAA,EAAA,OAAKsF,mBAAqB3B,OAAMvD,QAAQhC,SAAxC,CAAA,CAD0B;AAKvCuF,cAAAA,OAAMpE,mBAAmBA,iBAAiB7C,OAAO,SAACwJ,GAAD;AAAA,uBAAOA,EAAEC;cAAT,CAAxB;AAEzBC,iCAAkB;AAElB,qBAAOP,SAASQ,OAAT;YACR;;;;;;YAODC,aA7Ce,SAAA,cA6CD;AACZ,kBAAIV,aAAa;AACf;cACD;AAHW,kBAAA,kBAKkBjC,OAAMQ,UAA5BhH,aALI,gBAKJA,WAAWD,UALP,gBAKOA;AAInB,kBAAI,CAAC+H,iBAAiB9H,YAAWD,OAAZ,GAAqB;AACxC;cACD;AAGDyG,cAAAA,OAAMO,QAAQ;gBACZ/G,WAAWhD,iBACTgD,YACAR,gBAAgBO,OAAD,GACfyG,OAAMvD,QAAQM,aAAa,OAHF;gBAK3BxD,QAAQrC,cAAcqC,OAAD;cANT;AAcdyG,cAAAA,OAAM4C,QAAQ;AAEd5C,cAAAA,OAAMpG,YAAYoG,OAAMvD,QAAQ7C;AAMhCoG,cAAAA,OAAMpE,iBAAiBd,QACrB,SAACC,UAAD;AAAA,uBACGiF,OAAMiB,cAAclG,SAASE,IAA7B,IAAA,OAAA,OAAA,CAAA,GACIF,SAAS2B,IADb;cADH,CADF;AAOA,uBAASmG,SAAQ,GAAGA,SAAQ7C,OAAMpE,iBAAiBkH,QAAQD,UAAS;AAClE,oBAAI7C,OAAM4C,UAAU,MAAM;AACxB5C,kBAAAA,OAAM4C,QAAQ;AACdC,kBAAAA,SAAQ;AACR;gBACD;AALiE,oBAAA,wBAO/B7C,OAAMpE,iBAAiBiH,MAAvB,GAA3B9G,KAP0D,sBAO1DA,IAP0D,yBAAA,sBAOtDU,SAAAA,YAPsD,2BAAA,SAO5C,CAAA,IAP4C,wBAOxCxB,QAPwC,sBAOxCA;AAE1B,oBAAI,OAAOc,OAAO,YAAY;AAC5BiE,kBAAAA,SAAQjE,GAAG;oBAAEiE,OAAAA;oBAAOvD,SAAAA;oBAASxB,MAAAA;oBAAMiH;kBAAxB,CAAD,KAAwClC;gBACnD;cACF;YACF;;;YAID0C,QAAQ5G,SACN,WAAA;AAAA,qBACE,IAAIG,QAAuB,SAACC,SAAY;AACtCgG,yBAASS,YAAT;AACAzG,wBAAQ8D,MAAD;cACR,CAHD;YADF,CADc;YAQhB+C,SAjHe,SAAA,UAiHL;AACRV,qCAAsB;AACtBJ,4BAAc;YACf;UApHc;AAuHjB,cAAI,CAACX,iBAAiB9H,YAAWD,OAAZ,GAAqB;AACxC,mBAAO2I;UACR;AAEDA,mBAASC,WAAW1F,QAApB,EAA6BN,KAAK,SAAC6D,QAAU;AAC3C,gBAAI,CAACiC,eAAexF,SAAQuG,eAAe;AACzCvG,cAAAA,SAAQuG,cAAchD,MAAtB;YACD;UACF,CAJD;AAWA,mBAASyC,qBAAqB;AAC5BzC,YAAAA,OAAMpE,iBAAiBd,QAAQ,SAAAvG,OAAoC;AAAA,kBAAjC0G,QAAiC1G,MAAjC0G,MAAiC,eAAA1G,MAA3BkI,SAAAA,WAA2B,iBAAA,SAAjB,CAAA,IAAiB,cAAbwG,UAAa1O,MAAb0O;AACpD,kBAAI,OAAOA,YAAW,YAAY;AAChC,oBAAMC,YAAYD,QAAO;kBAAEjD,OAAAA;kBAAO/E,MAAAA;kBAAMiH;kBAAUzF,SAAAA;gBAAzB,CAAD;AACxB,oBAAM0G,SAAS,SAATA,UAAe;gBAAA;AACrBnB,iCAAiBtG,KAAKwH,aAAaC,MAAnC;cACD;YACF,CAND;UAOD;AAED,mBAASd,yBAAyB;AAChCL,6BAAiBlH,QAAQ,SAACiB,IAAD;AAAA,qBAAQA,GAAE;YAAV,CAAzB;AACAiG,+BAAmB,CAAA;UACpB;AAED,iBAAOE;QACR;MACF;AC1MD,UAAMkB,UAAU;QAAEA,SAAS;MAAX;AAEhB,eAASH,SAAT1O,OAA0E;AAAA,YAAxDyL,SAAwDzL,MAAxDyL,OAAOkC,WAAiD3N,MAAjD2N,UAAUzF,WAAuClI,MAAvCkI;AAAuC,YAAA,kBAC/BA,SAAjC3F,QAAAA,SADgE,oBAAA,SACvD,OADuD,iBAAA,kBAC/B2F,SAAlB4G,QAAAA,SADiD,oBAAA,SACxC,OADwC;AAGxE,YAAMvR,UAASF,WAAUoO,OAAMQ,SAASjH,MAAhB;AACxB,YAAM+I,gBAAa,CAAA,EAAA,OACdtC,OAAMsC,cAAc9I,WACpBwG,OAAMsC,cAAc/I,MAFN;AAKnB,YAAIzC,QAAQ;AACVwL,wBAAcxH,QAAQ,SAAAjD,cAAgB;AACpCA,yBAAayL,iBAAiB,UAAUpB,SAASQ,QAAQU,OAAzD;UACD,CAFD;QAGD;AAED,YAAIC,QAAQ;AACVvR,UAAAA,QAAOwR,iBAAiB,UAAUpB,SAASQ,QAAQU,OAAnD;QACD;AAED,eAAO,WAAM;AACX,cAAItM,QAAQ;AACVwL,0BAAcxH,QAAQ,SAAAjD,cAAgB;AACpCA,2BAAa0L,oBAAoB,UAAUrB,SAASQ,QAAQU,OAA5D;YACD,CAFD;UAGD;AAED,cAAIC,QAAQ;AACVvR,YAAAA,QAAOyR,oBAAoB,UAAUrB,SAASQ,QAAQU,OAAtD;UACD;QACF;MACF;AAID,UAAA,iBAAgB;QACdnI,MAAM;QACNuH,SAAS;QACT3G,OAAO;QACPE,IAAI,SAAA,KAAM;QAAA;QACVkH,QAAAA;QACAvG,MAAM,CAAA;MANQ;AC1ChB,eAASkE,cAATrM,OAAiE;AAAA,YAAxCyL,SAAwCzL,MAAxCyL,OAAO/E,QAAiC1G,MAAjC0G;AAK9B+E,QAAAA,OAAMiB,cAAchG,KAApB,IAA4BiE,eAAe;UACzC1F,WAAWwG,OAAMO,MAAM/G;UACvB3F,SAASmM,OAAMO,MAAMhH;UACrBwD,UAAU;UACVnD,WAAWoG,OAAMpG;QAJwB,CAAD;MAM3C;AAID,UAAA,kBAAgB;QACdqB,MAAM;QACNuH,SAAS;QACT3G,OAAO;QACPE,IAAI6E;QACJlE,MAAM,CAAA;MALQ;ACmBhB,UAAM8G,aAAa;QACjB1O,KAAK;QACLE,OAAO;QACPC,QAAQ;QACRN,MAAM;MAJW;AAUnB,eAAS8O,kBAATlP,OAAqCY,KAAsB;AAAA,YAA9BT,KAA8BH,MAA9BG,GAAGG,KAA2BN,MAA3BM;AAC9B,YAAM6O,MAAMvO,IAAIwO,oBAAoB;AAEpC,eAAO;UACLjP,GAAG9B,OAAM8B,KAAIgP,GAAL,IAAYA,OAAO;UAC3B7O,GAAGjC,OAAMiC,KAAI6O,GAAL,IAAYA,OAAO;QAFtB;MAIR;AAEM,eAASE,YAATC,QAsBJ;AAAA,YAAA;AAAA,YArBDtK,UAqBCsK,OArBDtK,QACA+G,aAoBCuD,OApBDvD,YACA1G,YAmBCiK,OAnBDjK,WACAwF,YAkBCyE,OAlBDzE,WACArI,UAiBC8M,OAjBD9M,SACAqB,YAgBCyL,OAhBDzL,UACA0L,kBAeCD,OAfDC,iBACAC,WAcCF,OAdDE,UACAC,eAaCH,OAbDG,cACArN,UAYCkN,OAZDlN;AAYC,YAAA,aACsBI,QAAjBrC,GAAAA,KADL,eAAA,SACS,IADT,YAAA,aACsBqC,QAAVlC,GAAAA,KADZ,eAAA,SACgB,IADhB;AAAA,YAAA,QAIC,OAAOmP,iBAAiB,aAAaA,aAAa;UAAEtP,GAAAA;UAAGG,GAAAA;QAAL,CAAD,IAAa;UAAEH,GAAAA;UAAGG,GAAAA;QAAL;AAD7DH,QAAAA,KAHF,MAGEA;AAAGG,QAAAA,KAHL,MAGKA;AAGN,YAAMoP,OAAOlN,QAAQmN,eAAe,GAAvB;AACb,YAAMC,OAAOpN,QAAQmN,eAAe,GAAvB;AAEb,YAAIE,QAAgBzP;AACpB,YAAI0P,QAAgBvP;AAEpB,YAAMK,MAAcrD;AAEpB,YAAIiS,UAAU;AACZ,cAAIrN,eAAesC,gBAAgBO,OAAD;AAClC,cAAI+K,aAAa;AACjB,cAAIC,YAAY;AAEhB,cAAI7N,iBAAiB9E,WAAU2H,OAAD,GAAU;AACtC7C,2BAAeb,oBAAmB0D,OAAD;AAEjC,gBACEtD,kBAAiBS,YAAD,EAAe0B,aAAa,YAC5CA,cAAa,YACb;AACAkM,2BAAa;AACbC,0BAAY;YACb;UACF;AAGD7N,yBAAgBA;AAEhB,cACEkD,cAAc9E,QACZ8E,cAAcjF,QAAQiF,cAAc5E,UAAUoK,cAAchG,KAC9D;AACAiL,oBAAQpP;AACR,gBAAMuP,UACJ7N,WAAWD,iBAAiBvB,OAAOA,IAAIX,iBACnCW,IAAIX,eAAeF;;cAEnBoC,aAAa4N,UAAD;;AAClBzP,YAAAA,MAAK2P,UAAUlE,WAAWhM;AAC1BO,YAAAA,MAAKiP,kBAAkB,IAAI;UAC5B;AAED,cACElK,cAAcjF,SACZiF,cAAc9E,OAAO8E,cAAc3E,WAAWmK,cAAchG,KAC9D;AACAgL,oBAAQpP;AACR,gBAAMyP,UACJ9N,WAAWD,iBAAiBvB,OAAOA,IAAIX,iBACnCW,IAAIX,eAAeJ;;cAEnBsC,aAAa6N,SAAD;;AAClB7P,YAAAA,MAAK+P,UAAUnE,WAAWlM;AAC1BM,YAAAA,MAAKoP,kBAAkB,IAAI;UAC5B;QACF;AAED,YAAMY,eAAY,OAAA,OAAA;UAChBtM,UAAAA;QADgB,GAEZ2L,YAAYP,UAFA;AA/DjB,YAAA,QAqECQ,iBAAiB,OACbP,kBAAkB;UAAE/O,GAAAA;UAAGG,GAAAA;QAAL,GAAUjD,WAAU2H,OAAD,CAApB,IACjB;UAAE7E,GAAAA;UAAGG,GAAAA;QAAL;AAHHH,QAAAA,KApEF,MAoEEA;AAAGG,QAAAA,KApEL,MAoEKA;AAKN,YAAIiP,iBAAiB;AAAA,cAAA;AACnB,iBAAA,OAAA,OAAA,CAAA,GACKY,eADL,iBAAA,CAAA,GAAA,eAEGL,KAFH,IAEWF,OAAO,MAAM,IAFxB,eAGGC,KAHH,IAGWH,OAAO,MAAM,IAHxB,eAOEtL,aACGxD,IAAIwO,oBAAoB,MAAM,IAA/B,eACiBjP,KADjB,SACyBG,KADzB,QAAA,iBAEmBH,KAFnB,SAE2BG,KAF3B,UARJ,eAAA;QAYD;AAED,eAAA,OAAA,OAAA,CAAA,GACK6P,eADL,kBAAA,CAAA,GAAA,gBAEGL,KAFH,IAEWF,OAAUtP,KAAN,OAAc,IAF7B,gBAGGuP,KAHH,IAGWH,OAAUvP,KAAN,OAAc,IAH7B,gBAIEiE,YAAW,IAJb,gBAAA;MAMD;AAED,eAASgM,cAAT,OAAuE;AAAA,YAA9C3E,SAA8C,MAA9CA,OAAOvD,WAAuC,MAAvCA;AAAuC,YAAA,wBAMjEA,SAJFqH,iBAAAA,kBAFmE,0BAAA,SAEjD,OAFiD,uBAAA,oBAMjErH,SAHFsH,UAAAA,WAHmE,sBAAA,SAGxD,OAHwD,mBAAA,wBAMjEtH,SADFuH,cAAAA,eALmE,0BAAA,SAKpD,OALoD;AAQrE,YAAMU,eAAe;UACnB9K,WAAWkF,iBAAiBkB,OAAMpG,SAAP;UAC3BwF,WAAWJ,aAAagB,OAAMpG,SAAP;UACvBL,QAAQyG,OAAMQ,SAASjH;UACvB+G,YAAYN,OAAMO,MAAMhH;UACxBuK;UACAnN,SAASqJ,OAAMvD,QAAQM,aAAa;QANjB;AASrB,YAAIiD,OAAMiB,cAAcL,iBAAiB,MAAM;AAC7CZ,UAAAA,OAAM+B,OAAOxI,SAAb,OAAA,OAAA,CAAA,GACKyG,OAAM+B,OAAOxI,QACbqK,YAAW,OAAA,OAAA,CAAA,GACTc,cADS;YAEZ3N,SAASiJ,OAAMiB,cAAcL;YAC7BxI,UAAU4H,OAAMvD,QAAQM;YACxBgH;YACAC;UALY,CAAA,CAAA,CAFhB;QAUD;AAED,YAAIhE,OAAMiB,cAAc2D,SAAS,MAAM;AACrC5E,UAAAA,OAAM+B,OAAO6C,QAAb,OAAA,OAAA,CAAA,GACK5E,OAAM+B,OAAO6C,OACbhB,YAAW,OAAA,OAAA,CAAA,GACTc,cADS;YAEZ3N,SAASiJ,OAAMiB,cAAc2D;YAC7BxM,UAAU;YACV2L,UAAU;YACVC;UALY,CAAA,CAAA,CAFhB;QAUD;AAEDhE,QAAAA,OAAM8B,WAAWvI,SAAjB,OAAA,OAAA,CAAA,GACKyG,OAAM8B,WAAWvI,QADtB;UAEE,yBAAyByG,OAAMpG;QAFjC,CAAA;MAID;AAID,UAAA,kBAAgB;QACdqB,MAAM;QACNuH,SAAS;QACT3G,OAAO;QACPE,IAAI4I;QACJjI,MAAM,CAAA;MALQ;AC1NhB,eAASmI,YAATtQ,OAAyD;AAAA,YAAlCyL,SAAkCzL,MAAlCyL;AACrBrD,eAAOC,KAAKoD,OAAMQ,QAAlB,EAA4B1F,QAAQ,SAACG,OAAS;AAC5C,cAAM6J,SAAQ9E,OAAM+B,OAAO9G,KAAb,KAAsB,CAAA;AAEpC,cAAM6G,aAAa9B,OAAM8B,WAAW7G,KAAjB,KAA0B,CAAA;AAC7C,cAAMpH,UAAUmM,OAAMQ,SAASvF,KAAf;AAGhB,cAAI,CAAC5I,eAAcwB,OAAD,KAAa,CAAC6B,aAAY7B,OAAD,GAAW;AACpD;UACD;AAKD8I,iBAAOoI,OAAOlR,QAAQiR,OAAOA,MAA7B;AAEAnI,iBAAOC,KAAKkF,UAAZ,EAAwBhH,QAAQ,SAACG,OAAS;AACxC,gBAAM4E,QAAQiC,WAAW7G,KAAD;AACxB,gBAAI4E,UAAU,OAAO;AACnBhM,sBAAQmR,gBAAgB/J,KAAxB;YACD,OAAM;AACLpH,sBAAQoR,aAAahK,OAAM4E,UAAU,OAAO,KAAKA,KAAjD;YACD;UACF,CAPD;QAQD,CAxBD;MAyBD;AAED,eAASoD,SAATY,QAAoD;AAAA,YAAlC7D,SAAkC6D,OAAlC7D;AAChB,YAAMkF,gBAAgB;UACpB3L,QAAQ;YACNnB,UAAU4H,OAAMvD,QAAQM;YACxBpI,MAAM;YACNG,KAAK;YACLqQ,QAAQ;UAJF;UAMRP,OAAO;YACLxM,UAAU;UADL;UAGPoB,WAAW,CAAA;QAVS;AAatBmD,eAAOoI,OAAO/E,OAAMQ,SAASjH,OAAOuL,OAAOI,cAAc3L,MAAzD;AACAyG,QAAAA,OAAM+B,SAASmD;AAEf,YAAIlF,OAAMQ,SAASoE,OAAO;AACxBjI,iBAAOoI,OAAO/E,OAAMQ,SAASoE,MAAME,OAAOI,cAAcN,KAAxD;QACD;AAED,eAAO,WAAM;AACXjI,iBAAOC,KAAKoD,OAAMQ,QAAlB,EAA4B1F,QAAQ,SAACG,OAAS;AAC5C,gBAAMpH,UAAUmM,OAAMQ,SAASvF,KAAf;AAChB,gBAAM6G,aAAa9B,OAAM8B,WAAW7G,KAAjB,KAA0B,CAAA;AAE7C,gBAAMmK,kBAAkBzI,OAAOC,KAC7BoD,OAAM+B,OAAOmC,eAAejJ,KAA5B,IACI+E,OAAM+B,OAAO9G,KAAb,IACAiK,cAAcjK,KAAD,CAHK;AAOxB,gBAAM6J,SAAQM,gBAAgB1L,OAAO,SAACoL,QAAOO,UAAa;AACxDP,cAAAA,OAAMO,QAAD,IAAa;AAClB,qBAAOP;YACR,GAAE,CAAA,CAHW;AAMd,gBAAI,CAACzS,eAAcwB,OAAD,KAAa,CAAC6B,aAAY7B,OAAD,GAAW;AACpD;YACD;AAED8I,mBAAOoI,OAAOlR,QAAQiR,OAAOA,MAA7B;AAEAnI,mBAAOC,KAAKkF,UAAZ,EAAwBhH,QAAQ,SAACwK,WAAc;AAC7CzR,sBAAQmR,gBAAgBM,SAAxB;YACD,CAFD;UAGD,CA1BD;QA2BD;MACF;AAID,UAAA,gBAAgB;QACdrK,MAAM;QACNuH,SAAS;QACT3G,OAAO;QACPE,IAAI8I;QACJ5B,QAAAA;QACA7H,UAAU,CAAC,eAAD;MANI;ACtET,eAASmK,wBACd3L,WACA2G,OACAW,SACS;AACT,YAAM/B,gBAAgBL,iBAAiBlF,SAAD;AACtC,YAAM4L,iBAAiB,CAAC7Q,MAAMG,GAAP,EAAY2C,QAAQ0H,aAApB,KAAsC,IAAI,KAAK;AAF7D,YAAA5K,QAKP,OAAO2M,YAAW,aACdA,QAAM,OAAA,OAAA,CAAA,GACDX,OADC;UAEJ3G;QAFI,CAAA,CAAA,IAINsH,SANDuE,WAJIlR,MAAA,CAAA,GAIMmR,WAJNnR,MAAA,CAAA;AAYTkR,mBAAWA,YAAY;AACvBC,oBAAYA,YAAY,KAAKF;AAE7B,eAAO,CAAC7Q,MAAMK,KAAP,EAAcyC,QAAQ0H,aAAtB,KAAwC,IAC3C;UAAEzK,GAAGgR;UAAU7Q,GAAG4Q;QAAlB,IACA;UAAE/Q,GAAG+Q;UAAU5Q,GAAG6Q;QAAlB;MACL;AAED,eAASxE,OAAT2C,QAAsE;AAAA,YAApD7D,SAAoD6D,OAApD7D,OAAOvD,WAA6CoH,OAA7CpH,SAASxB,QAAoC4I,OAApC5I;AAAoC,YAAA,kBACxCwB,SAApByE,QAAAA,UAD4D,oBAAA,SACnD,CAAC,GAAG,CAAJ,IADmD;AAGpE,YAAMxE,QAAO7C,WAAWH,OAAO,SAACC,KAAKC,WAAc;AACjDD,cAAIC,SAAD,IAAc2L,wBAAwB3L,WAAWoG,OAAMO,OAAOW,OAAzB;AACxC,iBAAOvH;QACR,GAAE,CAAA,CAHU;AAHuD,YAAA,wBAQnD+C,MAAKsD,OAAMpG,SAAP,GAAblF,KAR4D,sBAQ5DA,GAAGG,KARyD,sBAQzDA;AAEX,YAAImL,OAAMiB,cAAcL,iBAAiB,MAAM;AAC7CZ,UAAAA,OAAMiB,cAAcL,cAAclM,KAAKA;AACvCsL,UAAAA,OAAMiB,cAAcL,cAAc/L,KAAKA;QACxC;AAEDmL,QAAAA,OAAMiB,cAAchG,KAApB,IAA4ByB;MAC7B;AAID,UAAA,WAAgB;QACdzB,MAAM;QACNuH,SAAS;QACT3G,OAAO;QACPT,UAAU,CAAC,eAAD;QACVW,IAAImF;MALU;AC7DhB,UAAMyE,SAAO;QAAEhR,MAAM;QAASK,OAAO;QAAQC,QAAQ;QAAOH,KAAK;MAApD;AAEE,eAAS8Q,qBAAqBhM,WAAiC;AAC5E,eAAQA,UAAUiM,QAChB,0BACA,SAAAC,SAAO;AAAA,iBAAIH,OAAKG,OAAD;QAAR,CAFD;MAIT;ACPD,UAAMH,QAAO;QAAExM,OAAO;QAAOC,KAAK;MAArB;AAEE,eAAS2M,8BACtBnM,WACW;AACX,eAAQA,UAAUiM,QAAQ,cAAc,SAAAC,SAAO;AAAA,iBAAIH,MAAKG,OAAD;QAAR,CAAvC;MACT;ACmBc,eAASE,qBACtBhG,QACAvD,UAC0B;AAAA,YAD1BA,aAC0B,QAAA;AAD1BA,UAAAA,WAAmB,CAAA;QACO;AAAA,YAAAwD,YAQtBxD,UANF7C,YAFwBqG,UAExBrG,WACA4E,WAHwByB,UAGxBzB,UACAC,eAJwBwB,UAIxBxB,cACA2B,WALwBH,UAKxBG,SACA6F,iBANwBhG,UAMxBgG,gBANwB,wBAAAhG,UAOxBiG,uBAAAA,wBAPwB,0BAAA,SAOAC,aAPA;AAU1B,YAAM/G,YAAYJ,aAAapF,SAAD;AAE9B,YAAMC,eAAauF,YACf6G,iBACExM,sBACAA,oBAAoBV,OAClB,SAACa,YAAD;AAAA,iBAAeoF,aAAapF,UAAD,MAAgBwF;QAA3C,CADF,IAGFlG;AAEJ,YAAIkN,oBAAoBvM,aAAWd,OACjC,SAACa,YAAD;AAAA,iBAAesM,sBAAsBzO,QAAQmC,UAA9B,KAA4C;QAA3D,CADsB;AAIxB,YAAIwM,kBAAkBtD,WAAW,GAAG;AAClCsD,8BAAoBvM;QACrB;AAGD,YAAMwM,YAA0BD,kBAAkB1M,OAAO,SAACC,KAAKC,YAAc;AAC3ED,cAAIC,UAAD,IAAcmG,eAAeC,QAAO;YACrCpG,WAAAA;YACA4E;YACAC;YACA2B,SAAAA;UAJqC,CAAR,EAK5BtB,iBAAiBlF,UAAD,CALF;AAOjB,iBAAOD;QACR,GAAE,CAAA,CAT6B;AAWhC,eAAOgD,OAAOC,KAAKyJ,SAAZ,EAAuBnL,KAAK,SAACoL,IAAGC,GAAJ;AAAA,iBAAUF,UAAUC,EAAD,IAAMD,UAAUE,CAAD;QAAlC,CAA5B;MACR;AChDD,eAASC,8BAA8B5M,WAAwC;AAC7E,YAAIkF,iBAAiBlF,SAAD,MAAgBX,MAAM;AACxC,iBAAO,CAAA;QACR;AAED,YAAMwN,oBAAoBb,qBAAqBhM,SAAD;AAE9C,eAAO,CACLmM,8BAA8BnM,SAAD,GAC7B6M,mBACAV,8BAA8BU,iBAAD,CAHxB;MAKR;AAED,eAASC,KAATnS,OAAoE;AAAA,YAApDyL,SAAoDzL,MAApDyL,OAAOvD,WAA6ClI,MAA7CkI,SAASxB,QAAoC1G,MAApC0G;AAC9B,YAAI+E,OAAMiB,cAAchG,KAApB,EAA0B0L,OAAO;AACnC;QACD;AAHiE,YAAA,oBAe9DlK,SATF8C,UAAUqH,gBANsD,sBAAA,SAMtC,OANsC,mBAAA,mBAe9DnK,SARFoK,SAASC,eAPuD,qBAAA,SAOxC,OAPwC,kBAQ5CC,8BAOlBtK,SAPFuK,oBACA5G,WAME3D,SANF2D,SACA5B,WAKE/B,SALF+B,UACAC,eAIEhC,SAJFgC,cACA0B,cAGE1D,SAHF0D,aAZgE,wBAe9D1D,SAFFwJ,gBAAAA,iBAbgE,0BAAA,SAa/C,OAb+C,uBAchEC,wBACEzJ,SADFyJ;AAGF,YAAMe,qBAAqBjH,OAAMvD,QAAQ7C;AACzC,YAAMuF,gBAAgBL,iBAAiBmI,kBAAD;AACtC,YAAMC,kBAAkB/H,kBAAkB8H;AAE1C,YAAMD,qBACJD,gCACCG,mBAAmB,CAACjB,iBACjB,CAACL,qBAAqBqB,kBAAD,CAArB,IACAT,8BAA8BS,kBAAD;AAEnC,YAAMpN,cAAa,CAACoN,kBAAD,EAAA,OAAwBD,kBAAxB,EAA4CtN,OAC7D,SAACC,KAAKC,YAAc;AAClB,iBAAOD,IAAI3B,OACT8G,iBAAiBlF,UAAD,MAAgBX,OAC5B+M,qBAAqBhG,QAAO;YAC1BpG,WAAAA;YACA4E;YACAC;YACA2B,SAAAA;YACA6F;YACAC;UAN0B,CAAR,IAQpBtM,UAVC;QAYR,GACD,CAAA,CAfiB;AAkBnB,YAAMuN,gBAAgBnH,OAAMO,MAAM/G;AAClC,YAAM8G,aAAaN,OAAMO,MAAMhH;AAE/B,YAAM6N,YAAY,oBAAI1M,IAAJ;AAClB,YAAI2M,qBAAqB;AACzB,YAAIC,wBAAwBzN,YAAW,CAAD;AAEtC,iBAAS0N,IAAI,GAAGA,IAAI1N,YAAWiJ,QAAQyE,KAAK;AAC1C,cAAM3N,YAAYC,YAAW0N,CAAD;AAC5B,cAAMpI,iBAAgBL,iBAAiBlF,SAAD;AACtC,cAAM4N,mBAAmBxI,aAAapF,SAAD,MAAgBT;AACrD,cAAMsO,cAAa,CAAC3S,KAAKG,MAAN,EAAcwC,QAAQ0H,cAAtB,KAAwC;AAC3D,cAAMK,MAAMiI,cAAa,UAAU;AAEnC,cAAMtR,WAAW4J,eAAeC,QAAO;YACrCpG;YACA4E;YACAC;YACA0B;YACAC,SAAAA;UALqC,CAAR;AAQ/B,cAAIsH,oBAAyBD,cACzBD,mBACExS,QACAL,OACF6S,mBACAvS,SACAH;AAEJ,cAAIqS,cAAc3H,GAAD,IAAQc,WAAWd,GAAD,GAAO;AACxCkI,gCAAoB9B,qBAAqB8B,iBAAD;UACzC;AAED,cAAMC,mBAAwB/B,qBAAqB8B,iBAAD;AAElD,cAAME,SAAS,CAAA;AAEf,cAAIhB,eAAe;AACjBgB,mBAAOlM,KAAKvF,SAASgJ,cAAD,KAAmB,CAAvC;UACD;AAED,cAAI2H,cAAc;AAChBc,mBAAOlM,KACLvF,SAASuR,iBAAD,KAAuB,GAC/BvR,SAASwR,gBAAD,KAAsB,CAFhC;UAID;AAED,cAAIC,OAAOC,MAAM,SAACC,OAAD;AAAA,mBAAWA;UAAX,CAAb,GAAgC;AAClCR,oCAAwB1N;AACxByN,iCAAqB;AACrB;UACD;AAEDD,oBAAUpM,IAAIpB,WAAWgO,MAAzB;QACD;AAED,YAAIP,oBAAoB;AAEtB,cAAMU,iBAAiB9B,iBAAiB,IAAI;AAFtB,cAAA,QAAA,SAAA+B,OAIbT,KAJa;AAKpB,gBAAMU,mBAAmBpO,YAAWqO,KAAK,SAACtO,YAAc;AACtD,kBAAMgO,UAASR,UAAU3L,IAAI7B,UAAd;AACf,kBAAIgO,SAAQ;AACV,uBAAOA,QAAOO,MAAM,GAAGZ,GAAhB,EAAmBM,MAAM,SAACC,OAAD;AAAA,yBAAWA;gBAAX,CAAzB;cACR;YACF,CALwB;AAOzB,gBAAIG,kBAAkB;AACpBX,sCAAwBW;AACxB,qBAAA;YACD;UAfmB;AAItB,mBAASV,KAAIQ,gBAAgBR,KAAI,GAAGA,MAAK;AAAA,gBAAA,OAAA,MAAhCA,EAAgC;AAAA,gBAAA,SAAA;AAUrC;UAEH;QACF;AAED,YAAIvH,OAAMpG,cAAc0N,uBAAuB;AAC7CtH,UAAAA,OAAMiB,cAAchG,KAApB,EAA0B0L,QAAQ;AAClC3G,UAAAA,OAAMpG,YAAY0N;AAClBtH,UAAAA,OAAM4C,QAAQ;QACf;MACF;AAID,UAAA,SAAgB;QACd3H,MAAM;QACNuH,SAAS;QACT3G,OAAO;QACPE,IAAI2K;QACJrL,kBAAkB,CAAC,QAAD;QAClBqB,MAAM;UAAEiK,OAAO;QAAT;MANQ;ACvKD,eAASyB,WAAWhH,MAA4B;AAC7D,eAAOA,SAAS,MAAM,MAAM;MAC7B;ACDM,eAASiH,OAAO1V,OAAakN,OAAepN,OAAqB;AACtE,eAAO6V,KAAQ3V,OAAK4V,KAAQ1I,OAAOpN,KAAR,CAAb;MACf;AAEM,eAAS+V,eAAe7V,MAAakN,OAAepN,MAAa;AACtE,YAAMgW,IAAIJ,OAAO1V,MAAKkN,OAAOpN,IAAb;AAChB,eAAOgW,IAAIhW,OAAMA,OAAMgW;MACxB;ACqCD,eAASC,gBAATnU,OAA+E;AAAA,YAApDyL,SAAoDzL,MAApDyL,OAAOvD,WAA6ClI,MAA7CkI,SAASxB,QAAoC1G,MAApC0G;AAAoC,YAAA,oBAUzEwB,SARF8C,UAAUqH,gBAFiE,sBAAA,SAEjD,OAFiD,mBAAA,mBAUzEnK,SAPFoK,SAASC,eAHkE,qBAAA,SAGnD,QAHmD,kBAI3EtI,WAME/B,SANF+B,UACAC,eAKEhC,SALFgC,cACA0B,cAIE1D,SAJF0D,aACAC,WAGE3D,SAHF2D,SAP2E,kBAUzE3D,SAFFkM,QAAAA,SAR2E,oBAAA,SAQlE,OARkE,iBAAA,wBAUzElM,SADFmM,cAAAA,eAT2E,0BAAA,SAS5D,IAT4D;AAY7E,YAAMzS,WAAW4J,eAAeC,QAAO;UACrCxB;UACAC;UACA2B,SAAAA;UACAD;QAJqC,CAAR;AAM/B,YAAMhB,gBAAgBL,iBAAiBkB,OAAMpG,SAAP;AACtC,YAAMwF,YAAYJ,aAAagB,OAAMpG,SAAP;AAC9B,YAAMsN,kBAAkB,CAAC9H;AACzB,YAAMG,WAAWN,yBAAyBE,aAAD;AACzC,YAAM0H,UAAUuB,WAAW7I,QAAD;AAC1B,YAAMqB,iBAAgBZ,OAAMiB,cAAcL;AAC1C,YAAMuG,gBAAgBnH,OAAMO,MAAM/G;AAClC,YAAM8G,aAAaN,OAAMO,MAAMhH;AAC/B,YAAMsP,oBACJ,OAAOD,iBAAiB,aACpBA,aAAY,OAAA,OAAA,CAAA,GACP5I,OAAMO,OADC;UAEV3G,WAAWoG,OAAMpG;QAFP,CAAA,CAAA,IAIZgP;AACN,YAAME,8BACJ,OAAOD,sBAAsB,WACzB;UAAEtJ,UAAUsJ;UAAmBhC,SAASgC;QAAxC,IADJ,OAAA,OAAA;UAEMtJ,UAAU;UAAGsH,SAAS;QAF5B,GAEkCgC,iBAFlC;AAGF,YAAME,sBAAsB/I,OAAMiB,cAAcC,SAC5ClB,OAAMiB,cAAcC,OAAOlB,OAAMpG,SAAjC,IACA;AAEJ,YAAM8C,QAAO;UAAEhI,GAAG;UAAGG,GAAG;QAAX;AAEb,YAAI,CAAC+L,gBAAe;AAClB;QACD;AAED,YAAIgG,eAAe;AAAA,cAAA;AACjB,cAAMoC,WAAWzJ,aAAa,MAAMzK,MAAMH;AAC1C,cAAMsU,UAAU1J,aAAa,MAAMtK,SAASD;AAC5C,cAAMwK,MAAMD,aAAa,MAAM,WAAW;AAC1C,cAAM2B,UAASN,eAAcrB,QAAD;AAE5B,cAAM5M,QAAMuO,UAAS/K,SAAS6S,QAAD;AAC7B,cAAMvW,QAAMyO,UAAS/K,SAAS8S,OAAD;AAE7B,cAAMC,WAAWP,SAAS,CAACrI,WAAWd,GAAD,IAAQ,IAAI;AAEjD,cAAM2J,SAAS/J,cAAcjG,QAAQgO,cAAc3H,GAAD,IAAQc,WAAWd,GAAD;AACpE,cAAM4J,SAAShK,cAAcjG,QAAQ,CAACmH,WAAWd,GAAD,IAAQ,CAAC2H,cAAc3H,GAAD;AAItE,cAAM6J,eAAerJ,OAAMQ,SAASoE;AACpC,cAAM0E,YACJX,UAAUU,eACNnS,cAAcmS,YAAD,IACb;YAAEjV,OAAO;YAAGE,QAAQ;UAApB;AACN,cAAMiV,qBAAqBvJ,OAAMiB,cAAc,kBAApB,IACvBjB,OAAMiB,cAAc,kBAApB,EAAwCb,UACxCX,mBAAkB;AACtB,cAAM+J,kBAAkBD,mBAAmBP,QAAD;AAC1C,cAAMS,kBAAkBF,mBAAmBN,OAAD;AAO1C,cAAMS,WAAWrB,OAAO,GAAGlB,cAAc3H,GAAD,GAAO8J,UAAU9J,GAAD,CAAjC;AAEvB,cAAMmK,YAAYzC,kBACdC,cAAc3H,GAAD,IAAQ,IACrB0J,WACAQ,WACAF,kBACAV,4BAA4BvJ,WAC5B4J,SACAO,WACAF,kBACAV,4BAA4BvJ;AAChC,cAAMqK,YAAY1C,kBACd,CAACC,cAAc3H,GAAD,IAAQ,IACtB0J,WACAQ,WACAD,kBACAX,4BAA4BvJ,WAC5B6J,SACAM,WACAD,kBACAX,4BAA4BvJ;AAEhC,cAAMsK,oBACJ7J,OAAMQ,SAASoE,SAAS5L,gBAAgBgH,OAAMQ,SAASoE,KAAhB;AACzC,cAAMkF,eAAeD,oBACjBtK,aAAa,MACXsK,kBAAkB5S,aAAa,IAC/B4S,kBAAkB7S,cAAc,IAClC;AAEJ,cAAM+S,uBAAmB,wBAAGhB,uBAAH,OAAA,SAAGA,oBAAsBxJ,QAAH,MAAtB,OAAA,wBAAsC;AAC/D,cAAMyK,YAAY9I,UAASyI,YAAYI,sBAAsBD;AAC7D,cAAMG,YAAY/I,UAAS0I,YAAYG;AAEvC,cAAMG,kBAAkB7B,OACtBM,SAASJ,KAAQ5V,OAAKqX,SAAN,IAAmBrX,OACnCuO,SACAyH,SAASL,KAAQ7V,OAAKwX,SAAN,IAAmBxX,KAHP;AAM9BmO,UAAAA,eAAcrB,QAAD,IAAa2K;AAC1BxN,UAAAA,MAAK6C,QAAD,IAAa2K,kBAAkBhJ;QACpC;AAED,YAAI4F,cAAc;AAAA,cAAA;AAChB,cAAMkC,YAAWzJ,aAAa,MAAMzK,MAAMH;AAC1C,cAAMsU,WAAU1J,aAAa,MAAMtK,SAASD;AAC5C,cAAMkM,UAASN,eAAciG,OAAD;AAE5B,cAAMrH,OAAMqH,YAAY,MAAM,WAAW;AAEzC,cAAMlU,OAAMuO,UAAS/K,SAAS6S,SAAD;AAC7B,cAAMvW,OAAMyO,UAAS/K,SAAS8S,QAAD;AAE7B,cAAMkB,eAAe,CAACrV,KAAKH,IAAN,EAAY8C,QAAQ0H,aAApB,MAAuC;AAE5D,cAAM4K,wBAAmB,yBAAGhB,uBAAH,OAAA,SAAGA,oBAAsBlC,OAAH,MAAtB,OAAA,yBAAqC;AAC9D,cAAMmD,aAAYG,eACdxX,OACAuO,UACAiG,cAAc3H,IAAD,IACbc,WAAWd,IAAD,IACVuK,uBACAjB,4BAA4BjC;AAChC,cAAMoD,aAAYE,eACdjJ,UACAiG,cAAc3H,IAAD,IACbc,WAAWd,IAAD,IACVuK,uBACAjB,4BAA4BjC,UAC5BpU;AAEJ,cAAMyX,mBACJvB,UAAUwB,eACN3B,eAAewB,YAAW9I,SAAQ+I,UAApB,IACd5B,OAAOM,SAASqB,aAAYrX,MAAKuO,SAAQyH,SAASsB,aAAYxX,IAAxD;AAEZmO,UAAAA,eAAciG,OAAD,IAAYqD;AACzBxN,UAAAA,MAAKmK,OAAD,IAAYqD,mBAAkBhJ;QACnC;AAEDlB,QAAAA,OAAMiB,cAAchG,KAApB,IAA4ByB;MAC7B;AAID,UAAA,oBAAgB;QACdzB,MAAM;QACNuH,SAAS;QACT3G,OAAO;QACPE,IAAI2M;QACJrN,kBAAkB,CAAC,QAAD;MALJ;AC5LhB,UAAM+O,kBAAkB,SAAlBA,iBAAmBhK,UAASJ,QAAU;AAC1CI,QAAAA,WACE,OAAOA,aAAY,aACfA,SAAO,OAAA,OAAA,CAAA,GAAMJ,OAAMO,OAAZ;UAAmB3G,WAAWoG,OAAMpG;QAApC,CAAA,CAAA,IACPwG;AAEN,eAAOV,mBACL,OAAOU,aAAY,WACfA,WACAR,gBAAgBQ,UAASlH,cAAV,CAHI;MAK1B;AAED,eAAS0L,OAATrQ,OAAqE;AAAA,YAAA;AAAA,YAApDyL,SAAoDzL,MAApDyL,OAAO/E,QAA6C1G,MAA7C0G,MAAMwB,WAAuClI,MAAvCkI;AAC5B,YAAM4M,eAAerJ,OAAMQ,SAASoE;AACpC,YAAMhE,iBAAgBZ,OAAMiB,cAAcL;AAC1C,YAAMzB,gBAAgBL,iBAAiBkB,OAAMpG,SAAP;AACtC,YAAMwH,OAAOnC,yBAAyBE,aAAD;AACrC,YAAMsI,cAAa,CAAC9S,MAAMK,KAAP,EAAcyC,QAAQ0H,aAAtB,KAAwC;AAC3D,YAAMK,MAAMiI,cAAa,WAAW;AAEpC,YAAI,CAAC4B,gBAAgB,CAACzI,gBAAe;AACnC;QACD;AAED,YAAMjB,gBAAgByK,gBAAgB3N,SAAQ2D,SAASJ,MAAlB;AACrC,YAAMsJ,YAAYpS,cAAcmS,YAAD;AAC/B,YAAMgB,UAAUjJ,SAAS,MAAMtM,MAAMH;AACrC,YAAM2V,UAAUlJ,SAAS,MAAMnM,SAASD;AAExC,YAAMuV,UACJvK,OAAMO,MAAM/G,UAAUgG,GAAtB,IACAQ,OAAMO,MAAM/G,UAAU4H,IAAtB,IACAR,eAAcQ,IAAD,IACbpB,OAAMO,MAAMhH,OAAOiG,GAAnB;AACF,YAAMgL,YAAY5J,eAAcQ,IAAD,IAASpB,OAAMO,MAAM/G,UAAU4H,IAAtB;AAExC,YAAMyI,oBAAoB7Q,gBAAgBqQ,YAAD;AACzC,YAAMoB,aAAaZ,oBACfzI,SAAS,MACPyI,kBAAkB3M,gBAAgB,IAClC2M,kBAAkB5M,eAAe,IACnC;AAEJ,YAAMyN,oBAAoBH,UAAU,IAAIC,YAAY;AAIpD,YAAM7X,OAAMgN,cAAc0K,OAAD;AACzB,YAAM5X,OAAMgY,aAAanB,UAAU9J,GAAD,IAAQG,cAAc2K,OAAD;AACvD,YAAMK,SAASF,aAAa,IAAInB,UAAU9J,GAAD,IAAQ,IAAIkL;AACrD,YAAMxJ,UAASmH,OAAO1V,MAAKgY,QAAQlY,IAAd;AAGrB,YAAMmY,WAAmBxJ;AACzBpB,QAAAA,OAAMiB,cAAchG,KAApB,KAAA,wBAAA,CAAA,GAAA,sBACG2P,QADH,IACc1J,SADd,sBAEE2J,eAAc3J,UAASyJ,QAFzB;MAID;AAED,eAAS1H,OAATY,QAAgE;AAAA,YAA9C7D,SAA8C6D,OAA9C7D,OAAOvD,WAAuCoH,OAAvCpH;AAAuC,YAAA,mBACNA,SAAlD5I,SAASwV,eAD+C,qBAAA,SAChC,wBADgC;AAG9D,YAAIA,gBAAgB,MAAM;AACxB;QACD;AAGD,YAAI,OAAOA,iBAAiB,UAAU;AACpCA,yBAAerJ,OAAMQ,SAASjH,OAAOuR,cAAczB,YAApC;AAEf,cAAI,CAACA,cAAc;AACjB;UACD;QACF;AAED,YAAI,CAAC5L,UAASuC,OAAMQ,SAASjH,QAAQ8P,YAAxB,GAAuC;AAClD;QACD;AAEDrJ,QAAAA,OAAMQ,SAASoE,QAAQyE;MACxB;AAID,UAAA,UAAgB;QACdpO,MAAM;QACNuH,SAAS;QACT3G,OAAO;QACPE,IAAI6I;QACJ3B;QACA7H,UAAU,CAAC,eAAD;QACVC,kBAAkB,CAAC,iBAAD;MAPJ;ACpGhB,eAAS0P,eACP5U,UACAI,MACAyU,kBACY;AAAA,YADZA,qBACY,QAAA;AADZA,6BAA4B;YAAEtW,GAAG;YAAGG,GAAG;UAAX;QAChB;AACZ,eAAO;UACLC,KAAKqB,SAASrB,MAAMyB,KAAKjC,SAAS0W,iBAAiBnW;UACnDG,OAAOmB,SAASnB,QAAQuB,KAAKnC,QAAQ4W,iBAAiBtW;UACtDO,QAAQkB,SAASlB,SAASsB,KAAKjC,SAAS0W,iBAAiBnW;UACzDF,MAAMwB,SAASxB,OAAO4B,KAAKnC,QAAQ4W,iBAAiBtW;QAJ/C;MAMR;AAED,eAASuW,sBAAsB9U,UAA+B;AAC5D,eAAO,CAACrB,KAAKE,OAAOC,QAAQN,IAArB,EAA2B6M,KAAK,SAAC0J,MAAD;AAAA,iBAAU/U,SAAS+U,IAAD,KAAU;QAA5B,CAAhC;MACR;AAED,eAASC,KAAT5W,OAAwD;AAAA,YAAxCyL,SAAwCzL,MAAxCyL,OAAO/E,QAAiC1G,MAAjC0G;AACrB,YAAMkM,gBAAgBnH,OAAMO,MAAM/G;AAClC,YAAM8G,aAAaN,OAAMO,MAAMhH;AAC/B,YAAMyR,mBAAmBhL,OAAMiB,cAAcyH;AAE7C,YAAM0C,oBAAoBrL,eAAeC,QAAO;UAC9CE,gBAAgB;QAD8B,CAAR;AAGxC,YAAMmL,oBAAoBtL,eAAeC,QAAO;UAC9CG,aAAa;QADiC,CAAR;AAIxC,YAAMmL,2BAA2BP,eAC/BK,mBACAjE,aAF6C;AAI/C,YAAMoE,sBAAsBR,eAC1BM,mBACA/K,YACA0K,gBAHwC;AAM1C,YAAMQ,oBAAoBP,sBAAsBK,wBAAD;AAC/C,YAAMG,mBAAmBR,sBAAsBM,mBAAD;AAE9CvL,QAAAA,OAAMiB,cAAchG,KAApB,IAA4B;UAC1BqQ;UACAC;UACAC;UACAC;QAJ0B;AAO5BzL,QAAAA,OAAM8B,WAAWvI,SAAjB,OAAA,OAAA,CAAA,GACKyG,OAAM8B,WAAWvI,QADtB;UAEE,gCAAgCiS;UAChC,uBAAuBC;QAHzB,CAAA;MAKD;AAID,UAAA,SAAgB;QACdxQ,MAAM;QACNuH,SAAS;QACT3G,OAAO;QACPR,kBAAkB,CAAC,iBAAD;QAClBU,IAAIoP;MALU;AC3DhB,UAAMxJ,qBAAmB,CACvB+J,gBACA9K,iBACA+D,iBACAE,aAJuB;UAOnBhD,iBAAeJ,gCAAgB;QAAEE,kBAAAA;MAAF,CAAD;UCF9BA,mBAAmB,CACvB+J,gBACA9K,iBACA+D,iBACAE,eACA3D,UACAwF,QACAgC,mBACA9D,SACAuG,MATuB;UAYnBtJ,gBAAeJ,gCAAgB;QAAEE;MAAF,CAAD;;;;;;;;;;;;;;;;;;;AC3BpC;AAAA;AAAA;AAEA,UAAI,UAAU;AAMd,UAAI,gBAAgB;AAAA,QAClB,mBAAmB;AAAA,QACnB,aAAa;AAAA,QACb,cAAc;AAAA,QACd,cAAc;AAAA,QACd,aAAa;AAAA,QACb,iBAAiB;AAAA,QACjB,0BAA0B;AAAA,QAC1B,0BAA0B;AAAA,QAC1B,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,MAAM;AAAA,MACR;AACA,UAAI,gBAAgB;AAAA,QAClB,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,OAAO;AAAA,MACT;AACA,UAAI,sBAAsB;AAAA,QACxB,YAAY;AAAA,QACZ,QAAQ;AAAA,QACR,cAAc;AAAA,QACd,aAAa;AAAA,QACb,WAAW;AAAA,MACb;AACA,UAAI,eAAe;AAAA,QACjB,YAAY;AAAA,QACZ,SAAS;AAAA,QACT,cAAc;AAAA,QACd,aAAa;AAAA,QACb,WAAW;AAAA,QACX,MAAM;AAAA,MACR;AACA,UAAI,eAAe,CAAC;AACpB,mBAAa,QAAQ,UAAU,IAAI;AACnC,mBAAa,QAAQ,IAAI,IAAI;AAE7B,eAAS,WAAW,WAAW;AAE7B,YAAI,QAAQ,OAAO,SAAS,GAAG;AAC7B,iBAAO;AAAA,QACT;AAGA,eAAO,aAAa,UAAU,UAAU,CAAC,KAAK;AAAA,MAChD;AAEA,UAAI,iBAAiB,OAAO;AAC5B,UAAI,sBAAsB,OAAO;AACjC,UAAI,wBAAwB,OAAO;AACnC,UAAI,2BAA2B,OAAO;AACtC,UAAI,iBAAiB,OAAO;AAC5B,UAAI,kBAAkB,OAAO;AAC7B,eAAS,qBAAqB,iBAAiB,iBAAiB,WAAW;AACzE,YAAI,OAAO,oBAAoB,UAAU;AAEvC,cAAI,iBAAiB;AACnB,gBAAI,qBAAqB,eAAe,eAAe;AAEvD,gBAAI,sBAAsB,uBAAuB,iBAAiB;AAChE,mCAAqB,iBAAiB,oBAAoB,SAAS;AAAA,YACrE;AAAA,UACF;AAEA,cAAI,OAAO,oBAAoB,eAAe;AAE9C,cAAI,uBAAuB;AACzB,mBAAO,KAAK,OAAO,sBAAsB,eAAe,CAAC;AAAA,UAC3D;AAEA,cAAI,gBAAgB,WAAW,eAAe;AAC9C,cAAI,gBAAgB,WAAW,eAAe;AAE9C,mBAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,EAAE,GAAG;AACpC,gBAAI,MAAM,KAAK,CAAC;AAEhB,gBAAI,CAAC,cAAc,GAAG,KAAK,EAAE,aAAa,UAAU,GAAG,MAAM,EAAE,iBAAiB,cAAc,GAAG,MAAM,EAAE,iBAAiB,cAAc,GAAG,IAAI;AAC7I,kBAAI,aAAa,yBAAyB,iBAAiB,GAAG;AAE9D,kBAAI;AAEF,+BAAe,iBAAiB,KAAK,UAAU;AAAA,cACjD,SAASgK,IAAG;AAAA,cAAC;AAAA,YACf;AAAA,UACF;AAAA,QACF;AAEA,eAAO;AAAA,MACT;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACtGjB;AAAA;AAAA;AAEA,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAalB,UAAI,eAAe;AACnB,UAAI,mBAAmB;AAEvB,UAAI,eAAe;AAEnB,eAAS,iBAAiB,SAASC,QAAO;AACxC,eAAOA,OAAM,iBAAiB,UAAU,MAAM;AAAA,QAE9C,QAAQ,eAAe,KAAK,QAAQ,gBAAgB;AAAA,MACtD;AAEA,eAAS,cAAc,SAAS;AAC9B,YAAI,WAAW,QAAQ,eAAe,KAAK,QAAQ,gBAAgB;AAGnE,YAAI,YAAY,CAAC,QAAQ;AAAW,iBAAO;AAE3C,YAAI;AAEF,cAAIA,SAAQ,OAAO,iBAAiB,OAAO;AAC3C,cAAI,eAAeA,OAAM,iBAAiB,SAAS;AACnD,iBAAO,WAAW,iBAAiB,oBAAoB,iBAAiB,SAASA,MAAK,IAAI,iBAAiB;AAAA,QAC7G,SAAS,WAAW;AAElB,kBAAQ,KAAK,iCAAiC;AAC9C,iBAAO;AAAA,QACT;AAAA,MACF;AAEA,eAAS,QAAQ,SAAS;AACxB,YAAI,gBAAgB;AACpB,YAAI,WAAW,QAAQ,eAAe,QAAQ,YAAY;AAC1D,eAAO,eAAe;AACpB,cAAI,kBAAkB,SAAS;AAAM;AAGrC,cAAI,YAAY,kBAAkB;AAAU,4BAAgB,SAAS,KAAK;AAE1E,cAAI,cAAc,aAAa;AAAG,mBAAO;AACzC,0BAAgB,cAAc;AAAA,QAChC;AACA,eAAO;AAAA,MACT;AAEA,eAAS,UAAU,SAAS,kBAAkB;AAC5C,YAAI,WAAW,QAAQ,SAAS,YAAY;AAC5C,YAAI,MAAM,aAAa,KAAK,QAAQ,KAAK,CAAC,QAAQ,aAAa,aAAa,MAAM,QAAQ,QAAQ,mBAAmB;AACrH,eAAO,OAAO,QAAQ,OAAO;AAAA,MAC/B;AAEA,eAAS,SAAS,SAAS;AACzB,YAAI,WAAW,QAAQ,aAAa,UAAU;AAC9C,YAAI,aAAa;AAAM,qBAAW;AAClC,YAAI,gBAAgB,MAAM,QAAQ;AAClC,gBAAQ,iBAAiB,YAAY,MAAM,UAAU,SAAS,CAAC,aAAa;AAAA,MAC9E;AAEA,eAAS,wBAAwB,SAAS;AACxC,YAAI,cAAc,CAAC,EAAE,MAAM,KAAK,QAAQ,iBAAiB,GAAG,GAAG,CAAC,EAAE,OAAO,SAAU,UAAU,IAAI;AAC/F,iBAAO,SAAS,OAAO,CAAC,GAAG,aAAa,CAAC,EAAE,IAAI,wBAAwB,GAAG,UAAU,CAAC;AAAA,QACvF,GAAG,CAAC,CAAC;AACL,eAAO,YAAY,OAAO,QAAQ;AAAA,MACpC;AACA,aAAO,UAAU,QAAQ,SAAS;AAAA;AAAA;;;ACjFlC;AAAA;AAAA;AAEA,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,aAAa;AACrB,cAAQ,MAAMC;AACd,cAAQ,aAAa;AACrB,cAAQ,cAAc;AACtB,cAAQ,oBAAoB;AAC5B,cAAQ,cAAc;AACtB,cAAQ,kBAAkB;AAC1B,cAAQ,mBAAmB;AAC3B,cAAQ,sBAAsB;AAE9B,UAAI,YAAY;AAEhB,UAAI,aAAa,uBAAuB,SAAS;AAEjD,eAAS,uBAAuB,KAAK;AAAE,eAAO,OAAO,IAAI,aAAa,MAAM,EAAE,SAAS,IAAI;AAAA,MAAG;AAE9F,UAAI,qBAAqB,CAAC;AAC1B,UAAI,eAAe;AACnB,UAAI,cAAc;AAIlB,eAAS,aAAa;AACpB,6BAAqB,CAAC;AAAA,MACxB;AAGA,eAASA,OAAM;AACb,YAAI,MAAuC;AACzC,kBAAQ,IAAI,yBAAyB;AACrC,6BAAmB,QAAQ,SAAU,GAAG;AACtC,gBAAI,QAAQ,KAAK,CAAC;AAClB,oBAAQ,IAAI,MAAM,UAAU,MAAM,WAAW,MAAM,EAAE;AAAA,UACvD,CAAC;AACD,kBAAQ,IAAI,6BAA6B;AAAA,QAC3C;AAAA,MACF;AAGA,eAAS,aAAa;AACpB,sBAAc;AAAA,MAChB;AAEA,eAAS,cAAc;AACrB,YAAI,aAAa;AACf,wBAAc;AACd,cAAI,CAAC,cAAc;AACjB;AAAA,UACF;AAMA,qBAAW,WAAY;AACrB,gBAAI,aAAa,SAAS,SAAS,aAAa,GAAG;AACjD;AAAA,YACF;AACA,gBAAI,MAAM,GAAG,WAAW,SAAS,YAAY,EAAE,CAAC,KAAK;AACrD,eAAG,MAAM;AAAA,UACX,GAAG,CAAC;AAAA,QACN;AAAA,MACF;AAEA,eAAS,oBAAoB;AAC3B,2BAAmB,KAAK,SAAS,aAAa;AAAA,MAChD;AAGA,eAAS,cAAc;AACrB,YAAI,gBAAgB,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI;AAExF,YAAI,UAAU;AACd,YAAI;AACF,cAAI,mBAAmB,WAAW,GAAG;AACnC,sBAAU,mBAAmB,IAAI;AACjC,oBAAQ,MAAM,EAAE,cAA6B,CAAC;AAAA,UAChD;AACA;AAAA,QACF,SAASC,IAAG;AACV,kBAAQ,KAAK,CAAC,gCAAgC,SAAS,kCAAkC,EAAE,KAAK,GAAG,CAAC;AAAA,QACtG;AAAA,MACF;AAGA,eAAS,kBAAkB;AACzB,2BAAmB,SAAS,KAAK,mBAAmB,IAAI;AAAA,MAC1D;AAEA,eAAS,iBAAiB,SAAS;AACjC,uBAAe;AAEf,YAAI,OAAO,kBAAkB;AAC3B,iBAAO,iBAAiB,QAAQ,YAAY,KAAK;AACjD,mBAAS,iBAAiB,SAAS,aAAa,IAAI;AAAA,QACtD,OAAO;AACL,iBAAO,YAAY,UAAU,UAAU;AACvC,mBAAS,YAAY,WAAW,WAAW;AAAA,QAC7C;AAAA,MACF;AAEA,eAAS,sBAAsB;AAC7B,uBAAe;AAEf,YAAI,OAAO,kBAAkB;AAC3B,iBAAO,oBAAoB,QAAQ,UAAU;AAC7C,mBAAS,oBAAoB,SAAS,WAAW;AAAA,QACnD,OAAO;AACL,iBAAO,YAAY,UAAU,UAAU;AACvC,mBAAS,YAAY,WAAW,WAAW;AAAA,QAC7C;AAAA,MACF;AAAA;AAAA;;;ACpHA;AAAA;AAAA;AAEA,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAElB,UAAI,YAAY;AAEhB,UAAI,aAAa,uBAAuB,SAAS;AAEjD,eAAS,uBAAuB,KAAK;AAAE,eAAO,OAAO,IAAI,aAAa,MAAM,EAAE,SAAS,IAAI;AAAA,MAAG;AAE9F,eAAS,mBAAmB;AAC1B,YAAI,KAAK,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI;AAE7E,eAAO,GAAG,cAAc,aAAa,iBAAiB,GAAG,cAAc,UAAU,IAAI,GAAG;AAAA,MAC1F;AAEA,eAAS,SAASC,OAAM,OAAO;AAC7B,YAAI,YAAY,GAAG,WAAW,SAASA,KAAI;AAE3C,YAAI,CAAC,SAAS,QAAQ;AAEpB,gBAAM,eAAe;AACrB;AAAA,QACF;AAEA,YAAI,SAAS;AAEb,YAAI,WAAW,MAAM;AACrB,YAAI,OAAO,SAAS,CAAC;AACrB,YAAI,OAAO,SAAS,SAAS,SAAS,CAAC;AACvC,YAAIC,iBAAgB,iBAAiB;AAIrC,YAAID,UAASC,gBAAe;AAC1B,cAAI,CAAC;AAAU;AACf,mBAAS;AAAA,QACX;AAEA,YAAI,SAASA,kBAAiB,CAAC,UAAU;AACvC,mBAAS;AAAA,QACX;AAEA,YAAI,SAASA,kBAAiB,UAAU;AACtC,mBAAS;AAAA,QACX;AAEA,YAAI,QAAQ;AACV,gBAAM,eAAe;AACrB,iBAAO,MAAM;AACb;AAAA,QACF;AAaA,YAAI,cAAc,4BAA4B,KAAK,UAAU,SAAS;AACtE,YAAI,kBAAkB,eAAe,QAAQ,YAAY,CAAC,KAAK,YAAY,qBAAqB,KAAK,UAAU,SAAS,KAAK;AAI7H,YAAI,CAAC;AAAiB;AAEtB,YAAIC,KAAI,SAAS,QAAQD,cAAa;AAEtC,YAAIC,KAAI,IAAI;AACV,UAAAA,MAAK,WAAW,KAAK;AAAA,QACvB;AAEA,iBAAS,SAASA,EAAC;AAInB,YAAI,OAAO,WAAW,aAAa;AACjC,gBAAM,eAAe;AACrB,mBAAS,WAAW,OAAO;AAC3B,iBAAO,MAAM;AACb;AAAA,QACF;AAEA,cAAM,eAAe;AAErB,eAAO,MAAM;AAAA,MACf;AACA,aAAO,UAAU,QAAQ,SAAS;AAAA;AAAA;;;AC/FlC;AAAA;AAAA;AAgBA,UAAI,UAAU;AAEd,UAAIC,WAAU,WAAW;AAAA,MAAC;AAE1B,UAAI,SAAS;AACP,uBAAe,SAASC,cAAaC,SAAQ,MAAM;AACrD,cAAI,MAAM,UAAU;AACpB,iBAAO,IAAI,MAAM,MAAM,IAAI,MAAM,IAAI,CAAC;AACtC,mBAAS,MAAM,GAAG,MAAM,KAAK,OAAO;AAClC,iBAAK,MAAM,CAAC,IAAI,UAAU,GAAG;AAAA,UAC/B;AACA,cAAI,WAAW;AACf,cAAI,UAAU,cACZA,QAAO,QAAQ,OAAO,WAAW;AAC/B,mBAAO,KAAK,UAAU;AAAA,UACxB,CAAC;AACH,cAAI,OAAO,YAAY,aAAa;AAClC,oBAAQ,MAAM,OAAO;AAAA,UACvB;AACA,cAAI;AAIF,kBAAM,IAAI,MAAM,OAAO;AAAA,UACzB,SAASC,IAAG;AAAA,UAAC;AAAA,QACf;AAEA,QAAAH,WAAU,SAAS,WAAWE,SAAQ,MAAM;AAC1C,cAAI,MAAM,UAAU;AACpB,iBAAO,IAAI,MAAM,MAAM,IAAI,MAAM,IAAI,CAAC;AACtC,mBAAS,MAAM,GAAG,MAAM,KAAK,OAAO;AAClC,iBAAK,MAAM,CAAC,IAAI,UAAU,GAAG;AAAA,UAC/B;AACA,cAAIA,YAAW,QAAW;AACxB,kBAAM,IAAI;AAAA,cACN;AAAA,YAEJ;AAAA,UACF;AACA,cAAI,CAAC,WAAW;AACd,yBAAa,MAAM,MAAM,CAACA,OAAM,EAAE,OAAO,IAAI,CAAC;AAAA,UAChD;AAAA,QACF;AAAA,MACF;AAtCM;AAwCN,aAAO,UAAUF;AAAA;AAAA;;;AC7DjB;AAAA;AAOA,OAAC,WAAY;AACZ;AAEA,YAAII,aAAY,CAAC,EAChB,OAAO,WAAW,eAClB,OAAO,YACP,OAAO,SAAS;AAGjB,YAAI,uBAAuB;AAAA,UAE1B,WAAWA;AAAA,UAEX,eAAe,OAAO,WAAW;AAAA,UAEjC,sBACCA,cAAa,CAAC,EAAE,OAAO,oBAAoB,OAAO;AAAA,UAEnD,gBAAgBA,cAAa,CAAC,CAAC,OAAO;AAAA,QAEvC;AAEA,YAAI,OAAO,WAAW,cAAc,OAAO,OAAO,QAAQ,YAAY,OAAO,KAAK;AACjF,iBAAO,WAAY;AAClB,mBAAO;AAAA,UACR,CAAC;AAAA,QACF,WAAW,OAAO,WAAW,eAAe,OAAO,SAAS;AAC3D,iBAAO,UAAU;AAAA,QAClB,OAAO;AACN,iBAAO,uBAAuB;AAAA,QAC/B;AAAA,MAED,GAAE;AAAA;AAAA;;;ACvCF;AAAA;AAAA;AAEA,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,YAAY,QAAQ,eAAe,QAAQ,qBAAqB;AAExE,UAAI,SAAS;AAEb,UAAI,UAAU,uBAAuB,MAAM;AAE3C,eAAS,uBAAuB,KAAK;AAAE,eAAO,OAAO,IAAI,aAAa,MAAM,EAAE,SAAS,IAAI;AAAA,MAAG;AAE9F,UAAI,KAAK,QAAQ;AAEjB,UAAI,kBAAkB,GAAG,YAAY,OAAO,cAAc,CAAC;AAE3D,UAAI,qBAAqB,QAAQ,qBAAqB,GAAG,YAAY,OAAO,iBAAiB,CAAC;AAE9F,UAAI,eAAe,QAAQ,eAAe,GAAG,YAAY,OAAO,WAAW,CAAC;AAE5E,UAAIC,aAAY,QAAQ,YAAY,GAAG;AAEvC,cAAQ,UAAU;AAAA;AAAA;;;ACvBlB;AAAA;AAAA;AAEA,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,aAAa;AACrB,cAAQ,MAAMC;AACd,cAAQ,iBAAiB;AACzB,cAAQ,aAAa;AACrB,cAAQ,kBAAkB;AAC1B,cAAQ,OAAO;AACf,cAAQ,OAAO;AACf,cAAQ,+BAA+B;AAEvC,UAAI,WAAW;AAEf,UAAI,YAAY,uBAAuB,QAAQ;AAE/C,UAAI,mBAAmB;AAEvB,eAAS,uBAAuB,KAAK;AAAE,eAAO,OAAO,IAAI,aAAa,MAAM,EAAE,SAAS,IAAI;AAAA,MAAG;AAE9F,UAAI,gBAAgB;AAIpB,eAAS,aAAa;AACpB,YAAI,eAAe;AACjB,cAAI,cAAc,iBAAiB;AACjC,0BAAc,gBAAgB,aAAa;AAAA,UAC7C,WAAW,cAAc,UAAU,MAAM;AACvC,0BAAc,QAAQ,SAAU,SAAS;AACvC,qBAAO,QAAQ,gBAAgB,aAAa;AAAA,YAC9C,CAAC;AAAA,UACH,OAAO;AACL,qBAAS,iBAAiB,aAAa,EAAE,QAAQ,SAAU,SAAS;AAClE,qBAAO,QAAQ,gBAAgB,aAAa;AAAA,YAC9C,CAAC;AAAA,UACH;AAAA,QACF;AACA,wBAAgB;AAAA,MAClB;AAGA,eAASA,OAAM;AACb,YAAI,MAAuC;AACzC,cAAI,QAAQ,iBAAiB,CAAC;AAC9B,kBAAQ,IAAI,yBAAyB;AACrC,kBAAQ,IAAI,MAAM,UAAU,MAAM,WAAW,MAAM,EAAE;AACrD,kBAAQ,IAAI,6BAA6B;AAAA,QAC3C;AAAA,MACF;AAGA,eAAS,eAAe,UAAU,UAAU;AAC1C,YAAI,CAAC,YAAY,CAAC,SAAS,QAAQ;AACjC,gBAAM,IAAI,MAAM,sDAAsD,WAAW,GAAG;AAAA,QACtF;AAAA,MACF;AAEA,eAAS,WAAW,SAAS;AAC3B,YAAI,aAAa;AACjB,YAAI,OAAO,eAAe,YAAY,iBAAiB,WAAW;AAChE,cAAI,KAAK,SAAS,iBAAiB,UAAU;AAC7C,yBAAe,IAAI,UAAU;AAC7B,uBAAa;AAAA,QACf;AACA,wBAAgB,cAAc;AAC9B,eAAO;AAAA,MACT;AAEA,eAAS,gBAAgB,YAAY;AACnC,YAAI,KAAK,cAAc;AACvB,YAAI,IAAI;AACN,iBAAO,MAAM,QAAQ,EAAE,KAAK,cAAc,kBAAkB,cAAc,WAAW,KAAK,CAAC,EAAE;AAAA,QAC/F,OAAO;AACL,WAAC,GAAG,UAAU,SAAS,OAAO,CAAC,4CAA4C,kEAAkE,2DAA2D,oEAAoE,mCAAmC,EAAE,KAAK,GAAG,CAAC;AAE1T,iBAAO,CAAC;AAAA,QACV;AAAA,MACF;AAEA,eAAS,KAAK,YAAY;AACxB,YAAI,4BAA4B;AAChC,YAAI,oBAAoB;AACxB,YAAI,iBAAiB;AAErB,YAAI;AACF,mBAAS,YAAY,gBAAgB,UAAU,EAAE,OAAO,QAAQ,EAAE,GAAG,OAAO,EAAE,6BAA6B,QAAQ,UAAU,KAAK,GAAG,OAAO,4BAA4B,MAAM;AAC5K,gBAAI,KAAK,MAAM;AAEf,eAAG,aAAa,eAAe,MAAM;AAAA,UACvC;AAAA,QACF,SAAS,KAAK;AACZ,8BAAoB;AACpB,2BAAiB;AAAA,QACnB,UAAE;AACA,cAAI;AACF,gBAAI,CAAC,6BAA6B,UAAU,QAAQ;AAClD,wBAAU,OAAO;AAAA,YACnB;AAAA,UACF,UAAE;AACA,gBAAI,mBAAmB;AACrB,oBAAM;AAAA,YACR;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAEA,eAAS,KAAK,YAAY;AACxB,YAAI,6BAA6B;AACjC,YAAI,qBAAqB;AACzB,YAAI,kBAAkB;AAEtB,YAAI;AACF,mBAAS,aAAa,gBAAgB,UAAU,EAAE,OAAO,QAAQ,EAAE,GAAG,QAAQ,EAAE,8BAA8B,SAAS,WAAW,KAAK,GAAG,OAAO,6BAA6B,MAAM;AAClL,gBAAI,KAAK,OAAO;AAEhB,eAAG,gBAAgB,aAAa;AAAA,UAClC;AAAA,QACF,SAAS,KAAK;AACZ,+BAAqB;AACrB,4BAAkB;AAAA,QACpB,UAAE;AACA,cAAI;AACF,gBAAI,CAAC,8BAA8B,WAAW,QAAQ;AACpD,yBAAW,OAAO;AAAA,YACpB;AAAA,UACF,UAAE;AACA,gBAAI,oBAAoB;AACtB,oBAAM;AAAA,YACR;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAEA,eAAS,+BAA+B;AACtC,wBAAgB;AAAA,MAClB;AAAA;AAAA;;;AC1IA;AAAA;AAAA;AAEA,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,aAAa;AACrB,cAAQ,MAAMC;AACd,UAAI,gBAAgB,CAAC;AACrB,UAAI,mBAAmB,CAAC;AAIxB,eAASC,aAAY,IAAI,KAAK;AAC5B,WAAG,UAAU,OAAO,GAAG;AAAA,MACzB;AAGA,eAAS,aAAa;AACpB,YAAI,cAAc,SAAS,qBAAqB,MAAM,EAAE,CAAC;AACzD,iBAAS,OAAO,eAAe;AAC7B,UAAAA,aAAY,aAAa,cAAc,GAAG,CAAC;AAAA,QAC7C;AAEA,YAAI,OAAO,SAAS;AACpB,iBAAS,QAAQ,kBAAkB;AACjC,UAAAA,aAAY,MAAM,iBAAiB,IAAI,CAAC;AAAA,QAC1C;AAEA,wBAAgB,CAAC;AACjB,2BAAmB,CAAC;AAAA,MACtB;AAGA,eAASD,OAAM;AACb,YAAI,MAAuC;AACzC,cAAI,UAAU,SAAS,qBAAqB,MAAM,EAAE,CAAC,EAAE;AACvD,cAAI,SAAS;AAEb,oBAAU,eAAe,UAAU;AACnC,mBAASE,MAAK,eAAe;AAC3B,sBAAU,OAAOA,KAAI,MAAM,cAAcA,EAAC,IAAI;AAAA,UAChD;AAEA,oBAAU,SAAS,KAAK;AAExB,oBAAU,mBAAmB,UAAU;AACvC,mBAAS,MAAM,kBAAkB;AAC/B,sBAAU,OAAO,KAAK,MAAM,iBAAiB,EAAE,IAAI;AAAA,UACrD;AAEA,oBAAU;AAEV,kBAAQ,IAAI,MAAM;AAAA,QACpB;AAAA,MACF;AASA,UAAI,qBAAqB,SAASC,oBAAmB,MAAM,WAAW;AACpE,YAAI,CAAC,KAAK,SAAS,GAAG;AACpB,eAAK,SAAS,IAAI;AAAA,QACpB;AACA,aAAK,SAAS,KAAK;AACnB,eAAO;AAAA,MACT;AAQA,UAAI,qBAAqB,SAASC,oBAAmB,MAAM,WAAW;AACpE,YAAI,KAAK,SAAS,GAAG;AACnB,eAAK,SAAS,KAAK;AAAA,QACrB;AACA,eAAO;AAAA,MACT;AAQA,UAAI,aAAa,SAASC,YAAW,cAAc,MAAM,SAAS;AAChE,gBAAQ,QAAQ,SAAU,WAAW;AACnC,6BAAmB,MAAM,SAAS;AAClC,uBAAa,IAAI,SAAS;AAAA,QAC5B,CAAC;AAAA,MACH;AASA,UAAI,eAAe,SAASC,cAAa,cAAc,MAAM,SAAS;AACpE,gBAAQ,QAAQ,SAAU,WAAW;AACnC,6BAAmB,MAAM,SAAS;AAClC,eAAK,SAAS,MAAM,KAAK,aAAa,OAAO,SAAS;AAAA,QACxD,CAAC;AAAA,MACH;AAQA,UAAI,MAAM,QAAQ,MAAM,SAASC,KAAI,SAAS,aAAa;AACzD,eAAO,WAAW,QAAQ,WAAW,QAAQ,SAAS,YAAY,KAAK,SAAS,gBAAgB,kBAAkB,YAAY,MAAM,GAAG,CAAC;AAAA,MAC1I;AAQA,UAAI,SAAS,QAAQ,SAAS,SAASC,QAAO,SAAS,aAAa;AAClE,eAAO,aAAa,QAAQ,WAAW,QAAQ,SAAS,YAAY,KAAK,SAAS,gBAAgB,kBAAkB,YAAY,MAAM,GAAG,CAAC;AAAA,MAC5I;AAAA;AAAA;;;ACjIA;AAAA;AAAA;AAEA,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,MAAMC;AACd,cAAQ,aAAa;AAErB,eAASC,kBAAgB,UAAU,aAAa;AAAE,YAAI,EAAE,oBAAoB,cAAc;AAAE,gBAAM,IAAI,UAAU,mCAAmC;AAAA,QAAG;AAAA,MAAE;AAIxJ,UAAI,sBAAsB,SAASC,uBAAsB;AACvD,YAAI,QAAQ;AAEZ,QAAAD,kBAAgB,MAAMC,oBAAmB;AAEzC,aAAK,WAAW,SAAU,cAAc;AACtC,cAAI,MAAM,cAAc,QAAQ,YAAY,MAAM,IAAI;AACpD,gBAAI,MAAuC;AAEzC,sBAAQ,KAAK,iEAAiE;AAAA,YAChF;AACA;AAAA,UACF;AACA,gBAAM,cAAc,KAAK,YAAY;AACrC,gBAAM,KAAK,UAAU;AAAA,QACvB;AAEA,aAAK,aAAa,SAAU,cAAc;AACxC,cAAIC,SAAQ,MAAM,cAAc,QAAQ,YAAY;AACpD,cAAIA,WAAU,IAAI;AAChB,gBAAI,MAAuC;AAEzC,sBAAQ,KAAK,uCAAuC,eAAe,6BAAkC;AAAA,YACvG;AACA;AAAA,UACF;AACA,gBAAM,cAAc,OAAOA,QAAO,CAAC;AACnC,gBAAM,KAAK,YAAY;AAAA,QACzB;AAEA,aAAK,YAAY,SAAU,UAAU;AACnC,gBAAM,YAAY,KAAK,QAAQ;AAAA,QACjC;AAEA,aAAK,OAAO,SAAU,WAAW;AAC/B,gBAAM,YAAY,QAAQ,SAAU,YAAY;AAC9C,mBAAO;AAAA,cAAW;AAAA;AAAA,cAElB,MAAM,cAAc,MAAM;AAAA,YAAC;AAAA,UAC7B,CAAC;AAAA,QACH;AAEA,aAAK,gBAAgB,CAAC;AACtB,aAAK,cAAc,CAAC;AAAA,MACtB;AAEA,UAAI,sBAAsB,IAAI,oBAAoB;AAIlD,eAASH,OAAM;AACb,gBAAQ,IAAI,gCAAgC;AAC5C,gBAAQ,IAAI,oBAAoB,cAAc,MAAM;AACpD,4BAAoB,cAAc,QAAQ,SAAU,GAAG;AACrD,iBAAO,QAAQ,IAAI,CAAC;AAAA,QACtB,CAAC;AACD,gBAAQ,IAAI,oCAAoC;AAAA,MAClD;AAGA,eAAS,aAAa;AACpB,8BAAsB,IAAI,oBAAoB;AAAA,MAChD;AAGA,cAAQ,UAAU;AAAA;AAAA;;;AC7ElB;AAAA;AAAA;AAEA,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,aAAa;AACrB,cAAQ,MAAMI;AAEd,UAAI,uBAAuB;AAE3B,UAAI,wBAAwB,uBAAuB,oBAAoB;AAEvE,eAAS,uBAAuB,KAAK;AAAE,eAAO,OAAO,IAAI,aAAa,MAAM,EAAE,SAAS,IAAI;AAAA,MAAG;AAI9F,UAAI,SAAS;AAAb,UACI,QAAQ;AADZ,UAEI,YAAY,CAAC;AAIjB,eAAS,aAAa;AACpB,YAAI,OAAO,CAAC,QAAQ,KAAK;AAEzB,iBAAS,KAAK,GAAG,KAAK,KAAK,QAAQ,MAAM;AACvC,cAAI,OAAO,KAAK,EAAE;AAClB,cAAI,CAAC;AAAM;AACX,eAAK,cAAc,KAAK,WAAW,YAAY,IAAI;AAAA,QACrD;AACA,iBAAS,QAAQ;AACjB,oBAAY,CAAC;AAAA,MACf;AAGA,eAASA,OAAM;AACb,gBAAQ,IAAI,qBAAqB;AACjC,gBAAQ,IAAI,UAAU,MAAM;AAC5B,YAAI,QAAQ,CAAC,QAAQ,KAAK;AAC1B,iBAAS,MAAM,GAAG,MAAM,MAAM,QAAQ,OAAO;AAC3C,cAAI,OAAO,MAAM,GAAG;AACpB,cAAI,QAAQ,QAAQ,CAAC;AACrB,kBAAQ,IAAI,MAAM,UAAU,MAAM,WAAW,MAAM,EAAE;AAAA,QACvD;AACA,gBAAQ,IAAI,yBAAyB;AAAA,MACvC;AAGA,eAAS,eAAe;AACtB,YAAI,UAAU,WAAW,GAAG;AAC1B,cAAI,MAAuC;AAEzC,oBAAQ,KAAK,0CAA0C;AAAA,UACzD;AACA;AAAA,QACF;AACA,kBAAU,UAAU,SAAS,CAAC,EAAE,aAAa;AAAA,MAC/C;AAEA,eAAS,SAAS,WAAW,eAAe;AAC1C,YAAI,CAAC,UAAU,CAAC,OAAO;AACrB,mBAAS,SAAS,cAAc,KAAK;AACrC,iBAAO,aAAa,8BAA8B,EAAE;AACpD,iBAAO,MAAM,WAAW;AACxB,iBAAO,MAAM,UAAU;AACvB,iBAAO,aAAa,YAAY,GAAG;AACnC,iBAAO,iBAAiB,SAAS,YAAY;AAC7C,kBAAQ,OAAO,UAAU;AACzB,gBAAM,iBAAiB,SAAS,YAAY;AAAA,QAC9C;AAEA,oBAAY;AAEZ,YAAI,UAAU,SAAS,GAAG;AAExB,cAAI,SAAS,KAAK,eAAe,QAAQ;AACvC,qBAAS,KAAK,aAAa,QAAQ,SAAS,KAAK,UAAU;AAAA,UAC7D;AACA,cAAI,SAAS,KAAK,cAAc,OAAO;AACrC,qBAAS,KAAK,YAAY,KAAK;AAAA,UACjC;AAAA,QACF,OAAO;AAEL,cAAI,OAAO,eAAe;AACxB,mBAAO,cAAc,YAAY,MAAM;AAAA,UACzC;AACA,cAAI,MAAM,eAAe;AACvB,kBAAM,cAAc,YAAY,KAAK;AAAA,UACvC;AAAA,QACF;AAAA,MACF;AAEA,4BAAsB,QAAQ,UAAU,QAAQ;AAAA;AAAA;;;AC5FhD;AAAA;AAAA;AAEA,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AAED,UAAIC,YAAW,OAAO,UAAU,SAAU,QAAQ;AAAE,iBAAS,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAK;AAAE,cAAI,SAAS,UAAU,CAAC;AAAG,mBAAS,OAAO,QAAQ;AAAE,gBAAI,OAAO,UAAU,eAAe,KAAK,QAAQ,GAAG,GAAG;AAAE,qBAAO,GAAG,IAAI,OAAO,GAAG;AAAA,YAAG;AAAA,UAAE;AAAA,QAAE;AAAE,eAAO;AAAA,MAAQ;AAE/P,UAAIC,WAAU,OAAO,WAAW,cAAc,OAAO,OAAO,aAAa,WAAW,SAAU,KAAK;AAAE,eAAO,OAAO;AAAA,MAAK,IAAI,SAAU,KAAK;AAAE,eAAO,OAAO,OAAO,WAAW,cAAc,IAAI,gBAAgB,UAAU,QAAQ,OAAO,YAAY,WAAW,OAAO;AAAA,MAAK;AAE3Q,UAAIC,iBAAe,WAAY;AAAE,iBAAS,iBAAiB,QAAQ,OAAO;AAAE,mBAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AAAE,gBAAI,aAAa,MAAM,CAAC;AAAG,uBAAW,aAAa,WAAW,cAAc;AAAO,uBAAW,eAAe;AAAM,gBAAI,WAAW;AAAY,yBAAW,WAAW;AAAM,mBAAO,eAAe,QAAQ,WAAW,KAAK,UAAU;AAAA,UAAG;AAAA,QAAE;AAAE,eAAO,SAAU,aAAa,YAAY,aAAa;AAAE,cAAI;AAAY,6BAAiB,YAAY,WAAW,UAAU;AAAG,cAAI;AAAa,6BAAiB,aAAa,WAAW;AAAG,iBAAO;AAAA,QAAa;AAAA,MAAG,EAAE;AAEljB,UAAI,SAAS;AAEb,UAAI,aAAa;AAEjB,UAAI,cAAc,uBAAuB,UAAU;AAEnD,UAAI,gBAAgB;AAEpB,UAAI,eAAe,wBAAwB,aAAa;AAExD,UAAI,YAAY;AAEhB,UAAI,aAAa,uBAAuB,SAAS;AAEjD,UAAI,gBAAgB;AAEpB,UAAI,eAAe,wBAAwB,aAAa;AAExD,UAAI,aAAa;AAEjB,UAAI,YAAY,wBAAwB,UAAU;AAElD,UAAI,mBAAmB;AAEvB,UAAI,oBAAoB,uBAAuB,gBAAgB;AAE/D,UAAI,uBAAuB;AAE3B,UAAI,wBAAwB,uBAAuB,oBAAoB;AAEvE;AAEA,eAAS,wBAAwB,KAAK;AAAE,YAAI,OAAO,IAAI,YAAY;AAAE,iBAAO;AAAA,QAAK,OAAO;AAAE,cAAI,SAAS,CAAC;AAAG,cAAI,OAAO,MAAM;AAAE,qBAAS,OAAO,KAAK;AAAE,kBAAI,OAAO,UAAU,eAAe,KAAK,KAAK,GAAG;AAAG,uBAAO,GAAG,IAAI,IAAI,GAAG;AAAA,YAAG;AAAA,UAAE;AAAE,iBAAO,UAAU;AAAK,iBAAO;AAAA,QAAQ;AAAA,MAAE;AAE5Q,eAAS,uBAAuB,KAAK;AAAE,eAAO,OAAO,IAAI,aAAa,MAAM,EAAE,SAAS,IAAI;AAAA,MAAG;AAE9F,eAASC,kBAAgB,UAAU,aAAa;AAAE,YAAI,EAAE,oBAAoB,cAAc;AAAE,gBAAM,IAAI,UAAU,mCAAmC;AAAA,QAAG;AAAA,MAAE;AAExJ,eAASC,6BAA2BC,OAAM,MAAM;AAAE,YAAI,CAACA,OAAM;AAAE,gBAAM,IAAI,eAAe,2DAA2D;AAAA,QAAG;AAAE,eAAO,SAAS,OAAO,SAAS,YAAY,OAAO,SAAS,cAAc,OAAOA;AAAA,MAAM;AAE/O,eAASC,YAAU,UAAU,YAAY;AAAE,YAAI,OAAO,eAAe,cAAc,eAAe,MAAM;AAAE,gBAAM,IAAI,UAAU,6DAA6D,OAAO,UAAU;AAAA,QAAG;AAAE,iBAAS,YAAY,OAAO,OAAO,cAAc,WAAW,WAAW,EAAE,aAAa,EAAE,OAAO,UAAU,YAAY,OAAO,UAAU,MAAM,cAAc,KAAK,EAAE,CAAC;AAAG,YAAI;AAAY,iBAAO,iBAAiB,OAAO,eAAe,UAAU,UAAU,IAAI,SAAS,YAAY;AAAA,MAAY;AAG7e,UAAI,cAAc;AAAA,QAChB,SAAS;AAAA,QACT,SAAS;AAAA,MACX;AAOA,UAAI,WAAW,SAASC,UAAS,OAAO;AACtC,eAAO,MAAM,SAAS,SAAS,MAAM,YAAY;AAAA,MACnD;AACA,UAAIC,YAAW,SAASA,UAAS,OAAO;AACtC,eAAO,MAAM,SAAS,YAAY,MAAM,YAAY;AAAA,MACtD;AAEA,UAAI,sBAAsB;AAE1B,UAAI,cAAc,SAAU,YAAY;AACtC,QAAAF,YAAUG,cAAa,UAAU;AAEjC,iBAASA,aAAY,OAAO;AAC1B,UAAAN,kBAAgB,MAAMM,YAAW;AAEjC,cAAI,QAAQL,6BAA2B,OAAOK,aAAY,aAAa,OAAO,eAAeA,YAAW,GAAG,KAAK,MAAM,KAAK,CAAC;AAE5H,gBAAM,gBAAgB,SAAU,SAAS;AACvC,kBAAM,UAAU;AAChB,kBAAM,MAAM,cAAc,MAAM,MAAM,WAAW,OAAO;AAAA,UAC1D;AAEA,gBAAM,gBAAgB,SAAU,SAAS;AACvC,kBAAM,UAAU;AAChB,kBAAM,MAAM,cAAc,MAAM,MAAM,WAAW,OAAO;AAAA,UAC1D;AAEA,gBAAM,aAAa,WAAY;AAC7B,gBAAI,cAAc,MAAM,OACpB,aAAa,YAAY,YACzB,cAAc,YAAY,aAC1B,oBAAoB,YAAY,mBAChC,oBAAoB,YAAY,mBAChC,iBAAiB,YAAY;AAGjC,gBAAI,iBAAiB,kBAAkB,eAAe,EAAE,iBAAiB;AAGzE,iCAAqB,UAAU,OAAO,eAAe,MAAM,iBAAiB;AAE5E,iCAAqB,UAAU,OAAO,eAAe,qBAAqB,MAAM,EAAE,CAAC,GAAG,iBAAiB;AAGvG,gBAAI,eAAe,sBAAsB,GAAG;AAC1C,qCAAuB;AAEvB,kBAAI,wBAAwB,GAAG;AAC7B,6BAAa,KAAK,UAAU;AAAA,cAC9B;AAAA,YACF;AAEA,gBAAI,MAAM,MAAM,wBAAwB;AACtC,kBAAI,MAAM,MAAM,6BAA6B;AAC3C,6BAAa,YAAY,MAAM,MAAM,aAAa;AAClD,6BAAa,oBAAoB;AAAA,cACnC,OAAO;AACL,6BAAa,gBAAgB;AAAA,cAC/B;AAAA,YACF;AAEA,gBAAI,MAAM,MAAM,cAAc;AAC5B,oBAAM,MAAM,aAAa;AAAA,YAC3B;AAEA,kCAAsB,QAAQ,WAAW,KAAK;AAAA,UAChD;AAEA,gBAAM,OAAO,WAAY;AACvB,kBAAM,WAAW;AACjB,gBAAI,MAAM,MAAM,aAAa,MAAM,MAAM,aAAa;AACpD,2BAAa,MAAM,UAAU;AAC7B,oBAAM,SAAS,EAAE,aAAa,MAAM,CAAC;AAAA,YACvC,OAAO;AACL,kBAAI,MAAM,MAAM,wBAAwB;AACtC,6BAAa,iBAAiB,MAAM,IAAI;AACxC,6BAAa,kBAAkB;AAAA,cACjC;AAEA,oBAAM,SAAS,EAAE,QAAQ,KAAK,GAAG,WAAY;AAC3C,sBAAM,qBAAqB,sBAAsB,WAAY;AAC3D,wBAAM,SAAS,EAAE,WAAW,KAAK,CAAC;AAElC,sBAAI,MAAM,MAAM,UAAU,MAAM,MAAM,aAAa;AACjD,0BAAM,MAAM,YAAY;AAAA,sBACtB,WAAW,MAAM;AAAA,sBACjB,WAAW,MAAM;AAAA,oBACnB,CAAC;AAAA,kBACH;AAAA,gBACF,CAAC;AAAA,cACH,CAAC;AAAA,YACH;AAAA,UACF;AAEA,gBAAM,QAAQ,WAAY;AACxB,gBAAI,MAAM,MAAM,iBAAiB,GAAG;AAClC,oBAAM,iBAAiB;AAAA,YACzB,OAAO;AACL,oBAAM,oBAAoB;AAAA,YAC5B;AAAA,UACF;AAEA,gBAAM,eAAe,WAAY;AAC/B,mBAAO,MAAM,WAAW,CAAC,MAAM,gBAAgB,KAAK,MAAM,QAAQ,MAAM,EAAE,eAAe,KAAK,CAAC;AAAA,UACjG;AAEA,gBAAM,mBAAmB,WAAY;AACnC,gBAAI,WAAW,KAAK,IAAI,IAAI,MAAM,MAAM;AACxC,kBAAM,SAAS,EAAE,aAAa,MAAM,SAAmB,GAAG,WAAY;AACpE,oBAAM,aAAa,WAAW,MAAM,qBAAqB,MAAM,MAAM,WAAW,KAAK,IAAI,CAAC;AAAA,YAC5F,CAAC;AAAA,UACH;AAEA,gBAAM,sBAAsB,WAAY;AACtC,kBAAM,SAAS;AAAA,cACb,aAAa;AAAA,cACb,QAAQ;AAAA,cACR,WAAW;AAAA,cACX,UAAU;AAAA,YACZ,GAAG,MAAM,UAAU;AAAA,UACrB;AAEA,gBAAM,gBAAgB,SAAU,OAAO;AACrC,gBAAI,SAAS,KAAK,GAAG;AACnB,eAAC,GAAG,WAAW,SAAS,MAAM,SAAS,KAAK;AAAA,YAC9C;AAEA,gBAAI,MAAM,MAAM,oBAAoBD,UAAS,KAAK,GAAG;AACnD,oBAAM,gBAAgB;AACtB,oBAAM,aAAa,KAAK;AAAA,YAC1B;AAAA,UACF;AAEA,gBAAM,uBAAuB,SAAU,OAAO;AAC5C,gBAAI,MAAM,gBAAgB,MAAM;AAC9B,oBAAM,cAAc;AAAA,YACtB;AAEA,gBAAI,MAAM,eAAe,MAAM,MAAM,2BAA2B;AAC9D,kBAAI,MAAM,kBAAkB,GAAG;AAC7B,sBAAM,aAAa,KAAK;AAAA,cAC1B,OAAO;AACL,sBAAM,aAAa;AAAA,cACrB;AAAA,YACF;AACA,kBAAM,cAAc;AAAA,UACtB;AAEA,gBAAM,yBAAyB,WAAY;AACzC,kBAAM,cAAc;AAAA,UACtB;AAEA,gBAAM,2BAA2B,SAAU,OAAO;AAChD,gBAAI,CAAC,MAAM,MAAM,6BAA6B,MAAM,UAAU,MAAM,SAAS;AAC3E,oBAAM,eAAe;AAAA,YACvB;AAAA,UACF;AAEA,gBAAM,uBAAuB,WAAY;AACvC,kBAAM,cAAc;AAAA,UACtB;AAEA,gBAAM,2BAA2B,WAAY;AAC3C,kBAAM,cAAc;AAAA,UACtB;AAEA,gBAAM,eAAe,SAAU,OAAO;AACpC,mBAAO,MAAM,kBAAkB,KAAK,MAAM,MAAM,eAAe,KAAK;AAAA,UACtE;AAEA,gBAAM,oBAAoB,WAAY;AACpC,mBAAO,MAAM,MAAM;AAAA,UACrB;AAEA,gBAAM,iBAAiB,WAAY;AACjC,mBAAO,CAAC,MAAM,MAAM,UAAU,CAAC,MAAM,MAAM;AAAA,UAC7C;AAEA,gBAAM,kBAAkB,WAAY;AAClC,mBAAO,SAAS,kBAAkB,MAAM,WAAW,MAAM,QAAQ,SAAS,SAAS,aAAa;AAAA,UAClG;AAEA,gBAAM,iBAAiB,SAAU,OAAO,YAAY;AAClD,gBAAIE,gBAAc,OAAO,eAAe,cAAc,cAAcT,SAAQ,UAAU,OAAO,WAAW,aAAa;AAAA,cACnH,MAAM,YAAY,KAAK;AAAA,cACvB,WAAW,YAAY,KAAK,IAAI;AAAA,cAChC,aAAa,YAAY,KAAK,IAAI;AAAA,YACpC;AACA,gBAAI,YAAYS,aAAW;AAC3B,gBAAI,MAAM,MAAM,WAAW;AACzB,0BAAY,YAAY,MAAMA,aAAW;AAAA,YAC3C;AACA,gBAAI,MAAM,MAAM,aAAa;AAC3B,0BAAY,YAAY,MAAMA,aAAW;AAAA,YAC3C;AACA,mBAAO,OAAO,eAAe,YAAY,aAAa,YAAY,MAAM,aAAa;AAAA,UACvF;AAEA,gBAAM,uBAAuB,SAAUC,SAAQ,OAAO;AACpD,mBAAO,OAAO,KAAK,KAAK,EAAE,OAAO,SAAU,KAAKC,OAAM;AACpD,kBAAID,UAAS,MAAMC,KAAI,IAAI,MAAMA,KAAI;AACrC,qBAAO;AAAA,YACT,GAAG,CAAC,CAAC;AAAA,UACP;AAEA,gBAAM,QAAQ;AAAA,YACZ,WAAW;AAAA,YACX,aAAa;AAAA,UACf;AAEA,gBAAM,cAAc;AACpB,gBAAM,2BAA2B;AACjC,iBAAO;AAAA,QACT;AAEA,QAAAV,eAAaO,cAAa,CAAC;AAAA,UACzB,KAAK;AAAA,UACL,OAAO,SAAS,oBAAoB;AAClC,gBAAI,KAAK,MAAM,QAAQ;AACrB,mBAAK,KAAK;AAAA,YACZ;AAAA,UACF;AAAA,QACF,GAAG;AAAA,UACD,KAAK;AAAA,UACL,OAAO,SAAS,mBAAmB,WAAW,WAAW;AACvD,gBAAI,MAAuC;AACzC,kBAAI,UAAU,sBAAsB,KAAK,MAAM,mBAAmB;AAEhE,wBAAQ,KAAK,4HAAiI;AAAA,cAChJ;AACA,kBAAI,UAAU,sBAAsB,KAAK,MAAM,mBAAmB;AAEhE,wBAAQ,KAAK,4HAAiI;AAAA,cAChJ;AAAA,YACF;AAEA,gBAAI,KAAK,MAAM,UAAU,CAAC,UAAU,QAAQ;AAC1C,mBAAK,KAAK;AAAA,YACZ,WAAW,CAAC,KAAK,MAAM,UAAU,UAAU,QAAQ;AACjD,mBAAK,MAAM;AAAA,YACb;AAGA,gBAAI,KAAK,MAAM,0BAA0B,KAAK,MAAM,UAAU,CAAC,UAAU,QAAQ;AAC/E,mBAAK,aAAa;AAAA,YACpB;AAAA,UACF;AAAA,QACF,GAAG;AAAA,UACD,KAAK;AAAA,UACL,OAAO,SAAS,uBAAuB;AACrC,gBAAI,KAAK,MAAM,QAAQ;AACrB,mBAAK,WAAW;AAAA,YAClB;AACA,yBAAa,KAAK,UAAU;AAC5B,iCAAqB,KAAK,kBAAkB;AAAA,UAC9C;AAAA,QACF,GAAG;AAAA,UACD,KAAK;AAAA,UACL,OAAO,SAAS,aAAa;AAC3B,gBAAI,SAAS,KAAK,OACd,aAAa,OAAO,YACpB,cAAc,OAAO,aACrB,oBAAoB,OAAO,mBAC3B,oBAAoB,OAAO,mBAC3B,iBAAiB,OAAO;AAG5B,gBAAI,iBAAiB,kBAAkB,eAAe,EAAE,iBAAiB;AAGzE,iCAAqB,UAAU,IAAI,eAAe,MAAM,iBAAiB;AAEzE,iCAAqB,UAAU,IAAI,eAAe,qBAAqB,MAAM,EAAE,CAAC,GAAG,iBAAiB;AAEpG,gBAAI,aAAa;AACf,qCAAuB;AACvB,2BAAa,KAAK,UAAU;AAAA,YAC9B;AAEA,kCAAsB,QAAQ,SAAS,IAAI;AAAA,UAC7C;AAAA;AAAA,QAIF,GAAG;AAAA,UACD,KAAK;AAAA,UACL,OAAO,SAASI,UAAS;AACvB,gBAAI,UAAU,KAAK,OACfC,OAAK,QAAQ,IACb,YAAY,QAAQ,WACpB,mBAAmB,QAAQ,kBAC3BC,iBAAgB,QAAQ,eACxB,WAAW,QAAQ;AAEvB,gBAAI,gBAAgB,YAAY,CAAC,IAAIA,eAAc;AACnD,gBAAI,gBAAgB,mBAAmB,CAAC,IAAIA,eAAc;AAE1D,gBAAI,KAAK,eAAe,GAAG;AACzB,qBAAO;AAAA,YACT;AAEA,gBAAI,eAAe;AAAA,cACjB,KAAK,KAAK;AAAA,cACV,WAAW,KAAK,eAAe,WAAW,gBAAgB;AAAA,cAC1D,OAAOf,UAAS,CAAC,GAAG,eAAe,KAAK,MAAM,MAAM,OAAO;AAAA,cAC3D,SAAS,KAAK;AAAA,cACd,aAAa,KAAK;AAAA,YACpB;AAEA,gBAAI,eAAeA,UAAS;AAAA,cAC1B,IAAIc;AAAA,cACJ,KAAK,KAAK;AAAA,cACV,OAAOd,UAAS,CAAC,GAAG,eAAe,KAAK,MAAM,MAAM,OAAO;AAAA,cAC3D,WAAW,KAAK,eAAe,WAAW,SAAS;AAAA,cACnD,UAAU;AAAA,cACV,WAAW,KAAK;AAAA,cAChB,aAAa,KAAK;AAAA,cAClB,WAAW,KAAK;AAAA,cAChB,SAAS,KAAK;AAAA,cACd,MAAM,KAAK,MAAM;AAAA,cACjB,cAAc,KAAK,MAAM;AAAA,YAC3B,GAAG,KAAK,qBAAqB,QAAQA,UAAS,EAAE,OAAO,KAAK,GAAG,KAAK,MAAM,IAAI,CAAC,GAAG,KAAK,qBAAqB,QAAQ,KAAK,MAAM,QAAQ,CAAC,CAAC,GAAG;AAAA,cAC1I,eAAe,KAAK,MAAM;AAAA,YAC5B,CAAC;AAED,gBAAI,iBAAiB,KAAK,MAAM,eAAe,cAAc,QAAQ;AACrE,mBAAO,KAAK,MAAM,eAAe,cAAc,cAAc;AAAA,UAC/D;AAAA,QACF,CAAC,CAAC;AAEF,eAAOS;AAAA,MACT,EAAE,OAAO,SAAS;AAElB,kBAAY,eAAe;AAAA,QACzB,OAAO;AAAA,UACL,SAAS,CAAC;AAAA,UACV,SAAS,CAAC;AAAA,QACZ;AAAA,QACA,eAAe,CAAC;AAAA,MAClB;AACA,kBAAY,YAAY;AAAA,QACtB,QAAQ,YAAY,QAAQ,KAAK;AAAA,QACjC,eAAe,YAAY,QAAQ,MAAM;AAAA,UACvC,SAAS,YAAY,QAAQ;AAAA,UAC7B,SAAS,YAAY,QAAQ;AAAA,QAC/B,CAAC;AAAA,QACD,OAAO,YAAY,QAAQ,MAAM;AAAA,UAC/B,SAAS,YAAY,QAAQ;AAAA,UAC7B,SAAS,YAAY,QAAQ;AAAA,QAC/B,CAAC;AAAA,QACD,WAAW,YAAY,QAAQ,UAAU,CAAC,YAAY,QAAQ,QAAQ,YAAY,QAAQ,MAAM,CAAC;AAAA,QACjG,kBAAkB,YAAY,QAAQ,UAAU,CAAC,YAAY,QAAQ,QAAQ,YAAY,QAAQ,MAAM,CAAC;AAAA,QACxG,gBAAgB,YAAY,QAAQ;AAAA,QACpC,mBAAmB,YAAY,QAAQ;AAAA,QACvC,mBAAmB,YAAY,QAAQ;AAAA,QACvC,aAAa,YAAY,QAAQ;AAAA,QACjC,YAAY,YAAY,QAAQ,UAAU,CAAC,YAAY,QAAQ,WAAW,kBAAkB,OAAO,GAAG,YAAY,QAAQ,WAAW,iBAAiB,kBAAkB,GAAG,YAAY,QAAQ,WAAW,iBAAiB,YAAY,GAAG,YAAY,QAAQ,QAAQ,YAAY,QAAQ,WAAW,kBAAkB,OAAO,CAAC,CAAC,CAAC;AAAA,QACjU,aAAa,YAAY,QAAQ;AAAA,QACjC,cAAc,YAAY,QAAQ;AAAA,QAClC,gBAAgB,YAAY,QAAQ;AAAA,QACpC,gBAAgB,YAAY,QAAQ;AAAA,QACpC,wBAAwB,YAAY,QAAQ;AAAA,QAC5C,2BAA2B,YAAY,QAAQ;AAAA,QAC/C,6BAA6B,YAAY,QAAQ;AAAA,QACjD,eAAe,YAAY,QAAQ;AAAA,QACnC,MAAM,YAAY,QAAQ;AAAA,QAC1B,cAAc,YAAY,QAAQ;AAAA,QAClC,MAAM,YAAY,QAAQ;AAAA,QAC1B,MAAM,YAAY,QAAQ;AAAA,QAC1B,UAAU,YAAY,QAAQ;AAAA,QAC9B,kBAAkB,YAAY,QAAQ;AAAA,QACtC,YAAY,YAAY,QAAQ;AAAA,QAChC,YAAY,YAAY,QAAQ;AAAA,QAChC,IAAI,YAAY,QAAQ;AAAA,QACxB,gBAAgB,YAAY,QAAQ;AAAA,QACpC,gBAAgB,YAAY,QAAQ;AAAA,QACpC,QAAQ,YAAY,QAAQ;AAAA,MAC9B;AACA,cAAQ,UAAU;AAClB,aAAO,UAAU,QAAQ,SAAS;AAAA;AAAA;;;AC5blC;AAAA;AAAA;AAEA,aAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAS5D,eAAS,qBAAqB;AAE5B,YAAIO,SAAQ,KAAK,YAAY,yBAAyB,KAAK,OAAO,KAAK,KAAK;AAC5E,YAAIA,WAAU,QAAQA,WAAU,QAAW;AACzC,eAAK,SAASA,MAAK;AAAA,QACrB;AAAA,MACF;AAEA,eAAS,0BAA0B,WAAW;AAG5C,iBAAS,QAAQ,WAAW;AAC1B,cAAIA,SAAQ,KAAK,YAAY,yBAAyB,WAAW,SAAS;AAC1E,iBAAOA,WAAU,QAAQA,WAAU,SAAYA,SAAQ;AAAA,QACzD;AAEA,aAAK,SAAS,QAAQ,KAAK,IAAI,CAAC;AAAA,MAClC;AAEA,eAAS,oBAAoB,WAAW,WAAW;AACjD,YAAI;AACF,cAAI,YAAY,KAAK;AACrB,cAAI,YAAY,KAAK;AACrB,eAAK,QAAQ;AACb,eAAK,QAAQ;AACb,eAAK,8BAA8B;AACnC,eAAK,0BAA0B,KAAK;AAAA,YAClC;AAAA,YACA;AAAA,UACF;AAAA,QACF,UAAE;AACA,eAAK,QAAQ;AACb,eAAK,QAAQ;AAAA,QACf;AAAA,MACF;AAIA,yBAAmB,+BAA+B;AAClD,gCAA0B,+BAA+B;AACzD,0BAAoB,+BAA+B;AAEnD,eAAS,SAASC,YAAW;AAC3B,YAAI,YAAYA,WAAU;AAE1B,YAAI,CAAC,aAAa,CAAC,UAAU,kBAAkB;AAC7C,gBAAM,IAAI,MAAM,oCAAoC;AAAA,QACtD;AAEA,YACE,OAAOA,WAAU,6BAA6B,cAC9C,OAAO,UAAU,4BAA4B,YAC7C;AACA,iBAAOA;AAAA,QACT;AAKA,YAAI,qBAAqB;AACzB,YAAI,4BAA4B;AAChC,YAAI,sBAAsB;AAC1B,YAAI,OAAO,UAAU,uBAAuB,YAAY;AACtD,+BAAqB;AAAA,QACvB,WAAW,OAAO,UAAU,8BAA8B,YAAY;AACpE,+BAAqB;AAAA,QACvB;AACA,YAAI,OAAO,UAAU,8BAA8B,YAAY;AAC7D,sCAA4B;AAAA,QAC9B,WAAW,OAAO,UAAU,qCAAqC,YAAY;AAC3E,sCAA4B;AAAA,QAC9B;AACA,YAAI,OAAO,UAAU,wBAAwB,YAAY;AACvD,gCAAsB;AAAA,QACxB,WAAW,OAAO,UAAU,+BAA+B,YAAY;AACrE,gCAAsB;AAAA,QACxB;AACA,YACE,uBAAuB,QACvB,8BAA8B,QAC9B,wBAAwB,MACxB;AACA,cAAI,gBAAgBA,WAAU,eAAeA,WAAU;AACvD,cAAI,aACF,OAAOA,WAAU,6BAA6B,aAC1C,+BACA;AAEN,gBAAM;AAAA,YACJ,6FACE,gBACA,WACA,aACA,yDACC,uBAAuB,OAAO,SAAS,qBAAqB,OAC5D,8BAA8B,OAC3B,SAAS,4BACT,OACH,wBAAwB,OAAO,SAAS,sBAAsB,MAC/D;AAAA,UAEJ;AAAA,QACF;AAKA,YAAI,OAAOA,WAAU,6BAA6B,YAAY;AAC5D,oBAAU,qBAAqB;AAC/B,oBAAU,4BAA4B;AAAA,QACxC;AAKA,YAAI,OAAO,UAAU,4BAA4B,YAAY;AAC3D,cAAI,OAAO,UAAU,uBAAuB,YAAY;AACtD,kBAAM,IAAI;AAAA,cACR;AAAA,YACF;AAAA,UACF;AAEA,oBAAU,sBAAsB;AAEhC,cAAI,qBAAqB,UAAU;AAEnC,oBAAU,qBAAqB,SAAS,2BACtC,WACA,WACA,eACA;AASA,gBAAI,WAAW,KAAK,8BAChB,KAAK,0BACL;AAEJ,+BAAmB,KAAK,MAAM,WAAW,WAAW,QAAQ;AAAA,UAC9D;AAAA,QACF;AAEA,eAAOA;AAAA,MACT;AAEA,cAAQ,WAAW;AAAA;AAAA;;;ACjKnB;AAAA;AAAA;AAEA,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,oBAAoB,QAAQ,kBAAkB;AAEtD,UAAIC,YAAW,OAAO,UAAU,SAAU,QAAQ;AAAE,iBAAS,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAK;AAAE,cAAI,SAAS,UAAU,CAAC;AAAG,mBAAS,OAAO,QAAQ;AAAE,gBAAI,OAAO,UAAU,eAAe,KAAK,QAAQ,GAAG,GAAG;AAAE,qBAAO,GAAG,IAAI,OAAO,GAAG;AAAA,YAAG;AAAA,UAAE;AAAA,QAAE;AAAE,eAAO;AAAA,MAAQ;AAE/P,UAAIC,iBAAe,WAAY;AAAE,iBAAS,iBAAiB,QAAQ,OAAO;AAAE,mBAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AAAE,gBAAI,aAAa,MAAM,CAAC;AAAG,uBAAW,aAAa,WAAW,cAAc;AAAO,uBAAW,eAAe;AAAM,gBAAI,WAAW;AAAY,yBAAW,WAAW;AAAM,mBAAO,eAAe,QAAQ,WAAW,KAAK,UAAU;AAAA,UAAG;AAAA,QAAE;AAAE,eAAO,SAAU,aAAa,YAAY,aAAa;AAAE,cAAI;AAAY,6BAAiB,YAAY,WAAW,UAAU;AAAG,cAAI;AAAa,6BAAiB,aAAa,WAAW;AAAG,iBAAO;AAAA,QAAa;AAAA,MAAG,EAAE;AAEljB,UAAI,SAAS;AAEb,UAAI,UAAU,uBAAuB,MAAM;AAE3C,UAAI,YAAY;AAEhB,UAAI,aAAa,uBAAuB,SAAS;AAEjD,UAAI,aAAa;AAEjB,UAAI,cAAc,uBAAuB,UAAU;AAEnD,UAAI,eAAe;AAEnB,UAAI,gBAAgB,uBAAuB,YAAY;AAEvD,UAAI,gBAAgB;AAEpB,UAAI,eAAe,wBAAwB,aAAa;AAExD,UAAI,mBAAmB;AAEvB,UAAI,oBAAoB,uBAAuB,gBAAgB;AAE/D,UAAI,yBAAyB;AAE7B,eAAS,wBAAwB,KAAK;AAAE,YAAI,OAAO,IAAI,YAAY;AAAE,iBAAO;AAAA,QAAK,OAAO;AAAE,cAAI,SAAS,CAAC;AAAG,cAAI,OAAO,MAAM;AAAE,qBAAS,OAAO,KAAK;AAAE,kBAAI,OAAO,UAAU,eAAe,KAAK,KAAK,GAAG;AAAG,uBAAO,GAAG,IAAI,IAAI,GAAG;AAAA,YAAG;AAAA,UAAE;AAAE,iBAAO,UAAU;AAAK,iBAAO;AAAA,QAAQ;AAAA,MAAE;AAE5Q,eAAS,uBAAuB,KAAK;AAAE,eAAO,OAAO,IAAI,aAAa,MAAM,EAAE,SAAS,IAAI;AAAA,MAAG;AAE9F,eAASC,kBAAgB,UAAU,aAAa;AAAE,YAAI,EAAE,oBAAoB,cAAc;AAAE,gBAAM,IAAI,UAAU,mCAAmC;AAAA,QAAG;AAAA,MAAE;AAExJ,eAASC,6BAA2BC,OAAM,MAAM;AAAE,YAAI,CAACA,OAAM;AAAE,gBAAM,IAAI,eAAe,2DAA2D;AAAA,QAAG;AAAE,eAAO,SAAS,OAAO,SAAS,YAAY,OAAO,SAAS,cAAc,OAAOA;AAAA,MAAM;AAE/O,eAASC,YAAU,UAAU,YAAY;AAAE,YAAI,OAAO,eAAe,cAAc,eAAe,MAAM;AAAE,gBAAM,IAAI,UAAU,6DAA6D,OAAO,UAAU;AAAA,QAAG;AAAE,iBAAS,YAAY,OAAO,OAAO,cAAc,WAAW,WAAW,EAAE,aAAa,EAAE,OAAO,UAAU,YAAY,OAAO,UAAU,MAAM,cAAc,KAAK,EAAE,CAAC;AAAG,YAAI;AAAY,iBAAO,iBAAiB,OAAO,eAAe,UAAU,UAAU,IAAI,SAAS,YAAY;AAAA,MAAY;AAE7e,UAAI,kBAAkB,QAAQ,kBAAkB;AAChD,UAAI,oBAAoB,QAAQ,oBAAoB;AAEpD,UAAI,YAAY,iBAAiB,aAAa,WAAW,QAAQ,iBAAiB;AAElF,UAAI,oBAAoB,SAASC,mBAAkBC,OAAM;AACvD,eAAO,SAAS,cAAcA,KAAI;AAAA,MACpC;AAEA,UAAI,kBAAkB,SAASC,mBAAkB;AAC/C,eAAO,YAAY,WAAW,QAAQ,eAAe,WAAW,QAAQ;AAAA,MAC1E;AAEA,eAAS,iBAAiB,gBAAgB;AACxC,eAAO,eAAe;AAAA,MACxB;AAEA,UAAIC,UAAQ,SAAU,YAAY;AAChC,QAAAJ,YAAUI,SAAO,UAAU;AAE3B,iBAASA,UAAQ;AACf,cAAIC;AAEJ,cAAI,OAAO,OAAO;AAElB,UAAAR,kBAAgB,MAAMO,OAAK;AAE3B,mBAAS,OAAO,UAAU,QAAQ,OAAO,MAAM,IAAI,GAAG,OAAO,GAAG,OAAO,MAAM,QAAQ;AACnF,iBAAK,IAAI,IAAI,UAAU,IAAI;AAAA,UAC7B;AAEA,iBAAO,QAAQ,SAAS,QAAQN,6BAA2B,OAAOO,QAAOD,QAAM,aAAa,OAAO,eAAeA,OAAK,GAAG,KAAK,MAAMC,OAAM,CAAC,IAAI,EAAE,OAAO,IAAI,CAAC,CAAC,GAAG,QAAQ,MAAM,eAAe,WAAY;AACzM,aAAC,aAAa,WAAW,QAAQ,uBAAuB,MAAM,IAAI;AAClE,gBAAI,SAAS,iBAAiB,MAAM,MAAM,cAAc;AACxD,gBAAI,UAAU,OAAO,SAAS,MAAM,IAAI,GAAG;AACzC,qBAAO,YAAY,MAAM,IAAI;AAAA,YAC/B,OAAO;AAEL,sBAAQ,KAAK,gJAA0J;AAAA,YACzK;AAAA,UACF,GAAG,MAAM,YAAY,SAAU,KAAK;AAClC,kBAAM,SAAS;AAAA,UACjB,GAAG,MAAM,eAAe,SAAU,OAAO;AACvC,gBAAIC,gBAAe,gBAAgB;AACnC,gBAAI,SAASA,cAAa,OAAO,QAAQ,QAAQ,cAAc,cAAc,SAASX,UAAS,EAAE,eAAeS,QAAM,cAAc,GAAG,KAAK,CAAC,GAAG,MAAM,IAAI;AAC1J,kBAAM,UAAU,MAAM;AAAA,UACxB,GAAG,QAAQN,6BAA2B,OAAO,IAAI;AAAA,QACnD;AAEA,QAAAF,eAAaQ,SAAO,CAAC;AAAA,UACnB,KAAK;AAAA,UACL,OAAO,SAAS,oBAAoB;AAClC,gBAAI,CAAC,iBAAiB;AAAW;AAEjC,gBAAI,CAAC,WAAW;AACd,mBAAK,OAAO,kBAAkB,KAAK;AAAA,YACrC;AACA,iBAAK,KAAK,YAAY,KAAK,MAAM;AAEjC,gBAAI,SAAS,iBAAiB,KAAK,MAAM,cAAc;AACvD,mBAAO,YAAY,KAAK,IAAI;AAE5B,aAAC,aAAa,KAAK,aAAa,KAAK,KAAK;AAAA,UAC5C;AAAA,QACF,GAAG;AAAA,UACD,KAAK;AAAA,UACL,OAAO,SAAS,wBAAwB,WAAW;AACjD,gBAAI,aAAa,iBAAiB,UAAU,cAAc;AAC1D,gBAAI,aAAa,iBAAiB,KAAK,MAAM,cAAc;AAC3D,mBAAO,EAAE,YAAwB,WAAuB;AAAA,UAC1D;AAAA,QACF,GAAG;AAAA,UACD,KAAK;AAAA,UACL,OAAO,SAAS,mBAAmB,WAAW,GAAG,UAAU;AACzD,gBAAI,CAAC,iBAAiB;AAAW;AACjC,gBAAI,SAAS,KAAK,OACd,SAAS,OAAO,QAChBG,mBAAkB,OAAO;AAG7B,gBAAI,UAAU,oBAAoBA,kBAAiB;AACjD,mBAAK,KAAK,YAAYA;AAAA,YACxB;AAEA,gBAAI,aAAa,SAAS,YACtB,aAAa,SAAS;AAE1B,gBAAI,eAAe,YAAY;AAC7B,yBAAW,YAAY,KAAK,IAAI;AAChC,yBAAW,YAAY,KAAK,IAAI;AAAA,YAClC;AAGA,gBAAI,CAAC,UAAU,UAAU,CAAC;AAAQ;AAElC,aAAC,aAAa,KAAK,aAAa,KAAK,KAAK;AAAA,UAC5C;AAAA,QACF,GAAG;AAAA,UACD,KAAK;AAAA,UACL,OAAO,SAAS,uBAAuB;AACrC,gBAAI,CAAC,iBAAiB,aAAa,CAAC,KAAK,QAAQ,CAAC,KAAK;AAAQ;AAE/D,gBAAIC,SAAQ,KAAK,OAAO;AACxB,gBAAIC,OAAM,KAAK,IAAI;AACnB,gBAAI,WAAWD,OAAM,UAAU,KAAK,MAAM,mBAAmBA,OAAM,YAAYC,OAAM,KAAK,MAAM;AAEhG,gBAAI,UAAU;AACZ,kBAAI,CAACD,OAAM,aAAa;AACtB,qBAAK,OAAO,iBAAiB;AAAA,cAC/B;AAEA,yBAAW,KAAK,cAAc,WAAWC,IAAG;AAAA,YAC9C,OAAO;AACL,mBAAK,aAAa;AAAA,YACpB;AAAA,UACF;AAAA,QACF,GAAG;AAAA,UACD,KAAK;AAAA,UACL,OAAO,SAASC,UAAS;AACvB,gBAAI,CAAC,iBAAiB,aAAa,CAAC,WAAW;AAC7C,qBAAO;AAAA,YACT;AAEA,gBAAI,CAAC,KAAK,QAAQ,WAAW;AAC3B,mBAAK,OAAO,kBAAkB,KAAK;AAAA,YACrC;AAEA,gBAAIJ,gBAAe,gBAAgB;AACnC,mBAAOA,cAAa,QAAQ,QAAQ,cAAc,cAAc,SAASX,UAAS;AAAA,cAChF,KAAK,KAAK;AAAA,cACV,eAAeS,QAAM;AAAA,YACvB,GAAG,KAAK,KAAK,CAAC,GAAG,KAAK,IAAI;AAAA,UAC5B;AAAA,QACF,CAAC,GAAG,CAAC;AAAA,UACH,KAAK;AAAA,UACL,OAAO,SAAS,cAAc,SAAS;AACrC,yBAAa,WAAW,OAAO;AAAA,UACjC;AAAA;AAAA;AAAA,QAMF,CAAC,CAAC;AAEF,eAAOA;AAAA,MACT,EAAE,OAAO,SAAS;AAElB,MAAAA,QAAM,YAAY;AAAA,QAChB,QAAQ,YAAY,QAAQ,KAAK;AAAA,QACjC,OAAO,YAAY,QAAQ,MAAM;AAAA,UAC/B,SAAS,YAAY,QAAQ;AAAA,UAC7B,SAAS,YAAY,QAAQ;AAAA,QAC/B,CAAC;AAAA,QACD,iBAAiB,YAAY,QAAQ;AAAA,QACrC,mBAAmB,YAAY,QAAQ;AAAA,QACvC,mBAAmB,YAAY,QAAQ;AAAA,QACvC,WAAW,YAAY,QAAQ,UAAU,CAAC,YAAY,QAAQ,QAAQ,YAAY,QAAQ,MAAM;AAAA,UAC9F,MAAM,YAAY,QAAQ,OAAO;AAAA,UACjC,WAAW,YAAY,QAAQ,OAAO;AAAA,UACtC,aAAa,YAAY,QAAQ,OAAO;AAAA,QAC1C,CAAC,CAAC,CAAC;AAAA,QACH,kBAAkB,YAAY,QAAQ,UAAU,CAAC,YAAY,QAAQ,QAAQ,YAAY,QAAQ,MAAM;AAAA,UACrG,MAAM,YAAY,QAAQ,OAAO;AAAA,UACjC,WAAW,YAAY,QAAQ,OAAO;AAAA,UACtC,aAAa,YAAY,QAAQ,OAAO;AAAA,QAC1C,CAAC,CAAC,CAAC;AAAA,QACH,YAAY,YAAY,QAAQ,UAAU,CAAC,YAAY,QAAQ,WAAW,kBAAkB,OAAO,GAAG,YAAY,QAAQ,WAAW,iBAAiB,kBAAkB,GAAG,YAAY,QAAQ,WAAW,iBAAiB,YAAY,GAAG,YAAY,QAAQ,QAAQ,YAAY,QAAQ,WAAW,kBAAkB,OAAO,CAAC,CAAC,CAAC;AAAA,QACjU,aAAa,YAAY,QAAQ;AAAA,QACjC,gBAAgB,YAAY,QAAQ;AAAA,QACpC,gBAAgB,YAAY,QAAQ;AAAA,QACpC,aAAa,YAAY,QAAQ;AAAA,QACjC,wBAAwB,YAAY,QAAQ;AAAA,QAC5C,2BAA2B,YAAY,QAAQ;AAAA,QAC/C,6BAA6B,YAAY,QAAQ;AAAA,QACjD,eAAe,YAAY,QAAQ;AAAA,QACnC,gBAAgB,YAAY,QAAQ;AAAA,QACpC,MAAM,YAAY,QAAQ;AAAA,QAC1B,MAAM,YAAY,QAAQ;AAAA,QAC1B,MAAM,YAAY,QAAQ;AAAA,QAC1B,cAAc,YAAY,QAAQ;AAAA,QAClC,kBAAkB,YAAY,QAAQ;AAAA,QACtC,YAAY,YAAY,QAAQ;AAAA,QAChC,YAAY,YAAY,QAAQ;AAAA,QAChC,IAAI,YAAY,QAAQ;AAAA,QACxB,gBAAgB,YAAY,QAAQ;AAAA,QACpC,gBAAgB,YAAY,QAAQ;AAAA,MACtC;AACA,MAAAA,QAAM,eAAe;AAAA,QACnB,QAAQ;AAAA,QACR;AAAA,QACA;AAAA,QACA,MAAM;AAAA,QACN,aAAa;AAAA,QACb,gBAAgB;AAAA,QAChB,wBAAwB;AAAA,QACxB,kBAAkB;AAAA,QAClB,2BAA2B;AAAA,QAC3B,6BAA6B;AAAA,QAC7B,eAAe;AAAA,QACf,gBAAgB,SAAS,iBAAiB;AACxC,iBAAO,SAAS;AAAA,QAClB;AAAA,QACA,gBAAgB,SAAS,eAAe,OAAO,WAAW;AACxD,iBAAO,QAAQ,QAAQ;AAAA,YACrB;AAAA,YACA;AAAA,YACA;AAAA,UACF;AAAA,QACF;AAAA,QACA,gBAAgB,SAAS,eAAe,OAAO,UAAU;AACvD,iBAAO,QAAQ,QAAQ;AAAA,YACrB;AAAA,YACA;AAAA,YACA;AAAA,UACF;AAAA,QACF;AAAA,MACF;AACA,MAAAA,QAAM,gBAAgB;AAAA,QACpB,SAAS;AAAA,UACP,UAAU;AAAA,UACV,KAAK;AAAA,UACL,MAAM;AAAA,UACN,OAAO;AAAA,UACP,QAAQ;AAAA,UACR,iBAAiB;AAAA,QACnB;AAAA,QACA,SAAS;AAAA,UACP,UAAU;AAAA,UACV,KAAK;AAAA,UACL,MAAM;AAAA,UACN,OAAO;AAAA,UACP,QAAQ;AAAA,UACR,QAAQ;AAAA,UACR,YAAY;AAAA,UACZ,UAAU;AAAA,UACV,yBAAyB;AAAA,UACzB,cAAc;AAAA,UACd,SAAS;AAAA,UACT,SAAS;AAAA,QACX;AAAA,MACF;AAGA,OAAC,GAAG,uBAAuB,UAAUA,OAAK;AAE1C,UAAI,MAAuC;AACzC,QAAAA,QAAM,uBAAuB,SAAU,IAAI;AACzC,iBAAO,oBAAoB;AAAA,QAC7B;AAAA,MACF;AAEA,cAAQ,UAAUA;AAAA;AAAA;;;AC3SlB;AAAA;AAAA;AAEA,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AAED,UAAI,SAAS;AAEb,UAAI,UAAU,uBAAuB,MAAM;AAE3C,eAAS,uBAAuB,KAAK;AAAE,eAAO,OAAO,IAAI,aAAa,MAAM,EAAE,SAAS,IAAI;AAAA,MAAG;AAE9F,cAAQ,UAAU,QAAQ;AAC1B,aAAO,UAAU,QAAQ,SAAS;AAAA;AAAA;;;ACblC;AAAA;AAAA,OAAC,SAASO,IAAEC,IAAE;AAAC,YAAG,YAAU,OAAO,WAAS,YAAU,OAAO;AAAO,iBAAO,UAAQA,GAAE,eAAgB;AAAA,iBAAU,cAAY,OAAO,UAAQ,OAAO;AAAI,iBAAO,CAAC,OAAO,GAAEA,EAAC;AAAA,aAAM;AAAC,cAAIC,KAAE,YAAU,OAAO,UAAQD,GAAE,eAAgB,IAAEA,GAAED,GAAE,KAAK;AAAE,mBAAQG,MAAKD;AAAE,aAAC,YAAU,OAAO,UAAQ,UAAQF,IAAGG,EAAC,IAAED,GAAEC,EAAC;AAAA,QAAC;AAAA,MAAC,EAAE,SAAM,SAASH,IAAE;AAAC,eAAO,SAASA,IAAE;AAAC,cAAIC,KAAE,CAAC;AAAE,mBAASC,GAAEC,IAAE;AAAC,gBAAGF,GAAEE,EAAC;AAAE,qBAAOF,GAAEE,EAAC,EAAE;AAAQ,gBAAIC,KAAEH,GAAEE,EAAC,IAAE,EAAC,GAAEA,IAAE,GAAE,OAAG,SAAQ,CAAC,EAAC;AAAE,mBAAOH,GAAEG,EAAC,EAAE,KAAKC,GAAE,SAAQA,IAAEA,GAAE,SAAQF,EAAC,GAAEE,GAAE,IAAE,MAAGA,GAAE;AAAA,UAAO;AAAC,iBAAOF,GAAE,IAAEF,IAAEE,GAAE,IAAED,IAAEC,GAAE,IAAE,SAASF,IAAEC,IAAEE,IAAE;AAAC,YAAAD,GAAE,EAAEF,IAAEC,EAAC,KAAG,OAAO,eAAeD,IAAEC,IAAE,EAAC,YAAW,MAAG,KAAIE,GAAC,CAAC;AAAA,UAAC,GAAED,GAAE,IAAE,SAASF,IAAE;AAAC,2BAAa,OAAO,UAAQ,OAAO,eAAa,OAAO,eAAeA,IAAE,OAAO,aAAY,EAAC,OAAM,SAAQ,CAAC,GAAE,OAAO,eAAeA,IAAE,cAAa,EAAC,OAAM,KAAE,CAAC;AAAA,UAAC,GAAEE,GAAE,IAAE,SAASF,IAAEC,IAAE;AAAC,gBAAG,IAAEA,OAAID,KAAEE,GAAEF,EAAC,IAAG,IAAEC;AAAE,qBAAOD;AAAE,gBAAG,IAAEC,MAAG,YAAU,OAAOD,MAAGA,MAAGA,GAAE;AAAW,qBAAOA;AAAE,gBAAIG,KAAE,uBAAO,OAAO,IAAI;AAAE,gBAAGD,GAAE,EAAEC,EAAC,GAAE,OAAO,eAAeA,IAAE,WAAU,EAAC,YAAW,MAAG,OAAMH,GAAC,CAAC,GAAE,IAAEC,MAAG,YAAU,OAAOD;AAAE,uBAAQI,MAAKJ;AAAE,gBAAAE,GAAE,EAAEC,IAAEC,IAAE,SAASH,IAAE;AAAC,yBAAOD,GAAEC,EAAC;AAAA,gBAAC,EAAE,KAAK,MAAKG,EAAC,CAAC;AAAE,mBAAOD;AAAA,UAAC,GAAED,GAAE,IAAE,SAASF,IAAE;AAAC,gBAAIC,KAAED,MAAGA,GAAE,aAAW,WAAU;AAAC,qBAAOA,GAAE;AAAA,YAAO,IAAE,WAAU;AAAC,qBAAOA;AAAA,YAAC;AAAE,mBAAOE,GAAE,EAAED,IAAE,KAAIA,EAAC,GAAEA;AAAA,UAAC,GAAEC,GAAE,IAAE,SAASF,IAAEC,IAAE;AAAC,mBAAO,OAAO,UAAU,eAAe,KAAKD,IAAEC,EAAC;AAAA,UAAC,GAAEC,GAAE,IAAE,IAAGA,GAAEA,GAAE,IAAE,CAAC;AAAA,QAAC,EAAE,CAAC,SAASF,IAAEC,IAAEC,IAAE;AAAC,UAAAF,GAAE,UAAQE,GAAE,CAAC,EAAE;AAAA,QAAC,GAAE,SAASD,IAAEC,IAAE;AAAC,UAAAD,GAAE,UAAQD;AAAA,QAAC,GAAE,SAASA,IAAEC,IAAEC,IAAE;AAAC;AAAa,cAAIC,KAAED,GAAE,CAAC;AAAE,mBAASE,KAAG;AAAA,UAAC;AAAC,mBAAS,IAAG;AAAA,UAAC;AAAC,YAAE,oBAAkBA,IAAEJ,GAAE,UAAQ,WAAU;AAAC,qBAASA,GAAEA,IAAEC,IAAEC,IAAEE,IAAEC,IAAEC,IAAE;AAAC,kBAAGA,OAAIH,IAAE;AAAC,oBAAII,KAAE,IAAI,MAAM,iLAAiL;AAAE,sBAAMA,GAAE,OAAK,uBAAsBA;AAAA,cAAC;AAAA,YAAC;AAAC,qBAASN,KAAG;AAAC,qBAAOD;AAAA,YAAC;AAAC,YAAAA,GAAE,aAAWA;AAAE,gBAAIE,KAAE,EAAC,OAAMF,IAAE,QAAOA,IAAE,MAAKA,IAAE,MAAKA,IAAE,QAAOA,IAAE,QAAOA,IAAE,QAAOA,IAAE,QAAOA,IAAE,KAAIA,IAAE,SAAQC,IAAE,SAAQD,IAAE,aAAYA,IAAE,YAAWC,IAAE,MAAKD,IAAE,UAASC,IAAE,OAAMA,IAAE,WAAUA,IAAE,OAAMA,IAAE,OAAMA,IAAE,gBAAe,GAAE,mBAAkBG,GAAC;AAAE,mBAAOF,GAAE,YAAUA,IAAEA;AAAA,UAAC;AAAA,QAAC,GAAE,SAASF,IAAEC,IAAEC,IAAE;AAAC;AAAa,UAAAF,GAAE,UAAQ;AAAA,QAA8C,GAAE,SAASA,IAAEC,IAAEC,IAAE;AAAC;AAAa,UAAAA,GAAE,EAAED,EAAC;AAAE,cAAIE,KAAED,GAAE,CAAC,GAAEE,KAAEF,GAAE,EAAEC,EAAC,GAAE,IAAED,GAAE,CAAC,GAAEI,KAAEJ,GAAE,EAAE,CAAC,GAAEK,KAAE,SAASP,IAAE;AAAC,mBAAO,MAAIA;AAAA,UAAC;AAAE,mBAAS,IAAG;AAAC,oBAAO,IAAE,OAAO,SAAO,OAAO,OAAO,KAAK,IAAE,SAASA,IAAE;AAAC,uBAAQC,KAAE,GAAEA,KAAE,UAAU,QAAOA,MAAI;AAAC,oBAAIC,KAAE,UAAUD,EAAC;AAAE,yBAAQE,MAAKD;AAAE,yBAAO,UAAU,eAAe,KAAKA,IAAEC,EAAC,MAAIH,GAAEG,EAAC,IAAED,GAAEC,EAAC;AAAA,cAAE;AAAC,qBAAOH;AAAA,YAAC,GAAG,MAAM,MAAK,SAAS;AAAA,UAAC;AAAC,mBAASQ,GAAER,IAAE;AAAC,oBAAOQ,KAAE,cAAY,OAAO,UAAQ,YAAU,OAAO,OAAO,WAAS,SAASR,IAAE;AAAC,qBAAO,OAAOA;AAAA,YAAC,IAAE,SAASA,IAAE;AAAC,qBAAOA,MAAG,cAAY,OAAO,UAAQA,GAAE,gBAAc,UAAQA,OAAI,OAAO,YAAU,WAAS,OAAOA;AAAA,YAAC,GAAGA,EAAC;AAAA,UAAC;AAAC,mBAAS,EAAEA,IAAEC,IAAE;AAAC,qBAAQC,KAAE,GAAEA,KAAED,GAAE,QAAOC,MAAI;AAAC,kBAAIC,KAAEF,GAAEC,EAAC;AAAE,cAAAC,GAAE,aAAWA,GAAE,cAAY,OAAGA,GAAE,eAAa,MAAG,WAAUA,OAAIA,GAAE,WAAS,OAAI,OAAO,eAAeH,IAAEG,GAAE,KAAIA,EAAC;AAAA,YAAC;AAAA,UAAC;AAAC,mBAAS,EAAEH,IAAEC,IAAE;AAAC,oBAAO,IAAE,OAAO,iBAAe,OAAO,eAAe,KAAK,IAAE,SAASD,IAAEC,IAAE;AAAC,qBAAOD,GAAE,YAAUC,IAAED;AAAA,YAAC,GAAGA,IAAEC,EAAC;AAAA,UAAC;AAAC,mBAAS,EAAED,IAAE;AAAC,gBAAIC,KAAE,WAAU;AAAC,kBAAG,eAAa,OAAO,WAAS,CAAC,QAAQ;AAAU,uBAAM;AAAG,kBAAG,QAAQ,UAAU;AAAK,uBAAM;AAAG,kBAAG,cAAY,OAAO;AAAM,uBAAM;AAAG,kBAAG;AAAC,uBAAO,QAAQ,UAAU,QAAQ,KAAK,QAAQ,UAAU,SAAQ,CAAC,GAAG,WAAU;AAAA,gBAAC,CAAE,CAAC,GAAE;AAAA,cAAE,SAAOD,IAAE;AAAC,uBAAM;AAAA,cAAE;AAAA,YAAC,EAAE;AAAE,mBAAO,WAAU;AAAC,kBAAIE,IAAEC,KAAEM,GAAET,EAAC;AAAE,kBAAGC,IAAE;AAAC,oBAAIG,KAAEK,GAAE,IAAI,EAAE;AAAY,gBAAAP,KAAE,QAAQ,UAAUC,IAAE,WAAUC,EAAC;AAAA,cAAC;AAAM,gBAAAF,KAAEC,GAAE,MAAM,MAAK,SAAS;AAAE,qBAAO,EAAE,MAAKD,EAAC;AAAA,YAAC;AAAA,UAAC;AAAC,mBAAS,EAAEF,IAAEC,IAAE;AAAC,gBAAGA,OAAI,aAAWO,GAAEP,EAAC,KAAG,cAAY,OAAOA;AAAG,qBAAOA;AAAE,gBAAG,WAASA;AAAE,oBAAM,IAAI,UAAU,0DAA0D;AAAE,mBAAO,EAAED,EAAC;AAAA,UAAC;AAAC,mBAAS,EAAEA,IAAE;AAAC,gBAAG,WAASA;AAAE,oBAAM,IAAI,eAAe,2DAA2D;AAAE,mBAAOA;AAAA,UAAC;AAAC,mBAASS,GAAET,IAAE;AAAC,oBAAOS,KAAE,OAAO,iBAAe,OAAO,eAAe,KAAK,IAAE,SAAST,IAAE;AAAC,qBAAOA,GAAE,aAAW,OAAO,eAAeA,EAAC;AAAA,YAAC,GAAGA,EAAC;AAAA,UAAC;AAAC,mBAAS,EAAEA,IAAEC,IAAEC,IAAE;AAAC,mBAAOD,MAAKD,KAAE,OAAO,eAAeA,IAAEC,IAAE,EAAC,OAAMC,IAAE,YAAW,MAAG,cAAa,MAAG,UAAS,KAAE,CAAC,IAAEF,GAAEC,EAAC,IAAEC,IAAEF;AAAA,UAAC;AAAC,cAAI,IAAE,SAASA,IAAE;AAAC,aAAC,SAASA,IAAEC,IAAE;AAAC,kBAAG,cAAY,OAAOA,MAAG,SAAOA;AAAE,sBAAM,IAAI,UAAU,oDAAoD;AAAE,cAAAD,GAAE,YAAU,OAAO,OAAOC,MAAGA,GAAE,WAAU,EAAC,aAAY,EAAC,OAAMD,IAAE,UAAS,MAAG,cAAa,KAAE,EAAC,CAAC,GAAE,OAAO,eAAeA,IAAE,aAAY,EAAC,UAAS,MAAE,CAAC,GAAEC,MAAG,EAAED,IAAEC,EAAC;AAAA,YAAC,EAAEK,IAAEN,EAAC;AAAE,gBAAIC,IAAEC,IAAEC,IAAEE,KAAE,EAAEC,EAAC;AAAE,qBAASA,GAAEN,IAAE;AAAC,kBAAIC;AAAE,qBAAO,SAASD,IAAEC,IAAE;AAAC,oBAAG,EAAED,cAAaC;AAAG,wBAAM,IAAI,UAAU,mCAAmC;AAAA,cAAC,EAAE,MAAKK,EAAC,GAAE,EAAE,EAAEL,KAAEI,GAAE,KAAK,MAAKL,EAAC,CAAC,GAAE,2BAA2B,WAAU;AAAC,oBAAIA,KAAE,EAAEC,EAAC,EAAE;AAAS,gBAAAA,GAAE,SAAS,EAAC,QAAOD,GAAE,cAAa,YAAW,UAAU,OAAOC,GAAE,MAAM,gBAAe,KAAK,EAAE,OAAOA,GAAE,MAAM,MAAM,GAAE,UAAS,OAAG,eAAc,MAAG,cAAaM,GAAEP,GAAE,YAAY,GAAE,uBAAsB,MAAE,CAAC;AAAA,cAAC,CAAE,GAAE,EAAE,EAAEC,EAAC,GAAE,sBAAsB,SAASD,IAAE;AAAC,gBAAAC,GAAE,MAAM,mBAAiBA,GAAE,MAAM,iBAAeD,GAAE,eAAe,GAAEC,GAAE,MAAM,qBAAmBA,GAAE,MAAM,mBAAmBA,GAAE,MAAM,iBAAiB,IAAE,SAAKA,GAAE,MAAM,YAAUA,GAAE,gBAAgB,GAAEA,GAAE,MAAM,UAAU,GAAEA,GAAE,MAAM,iBAAiB,MAAIA,GAAE,iBAAiB,GAAEA,GAAE,MAAM,UAAU,GAAEA,GAAE,MAAM,iBAAiB;AAAA,cAAG,CAAE,GAAE,EAAE,EAAEA,EAAC,GAAE,uBAAuB,SAASD,IAAE;AAAC,gBAAAA,GAAE,WAASC,GAAE,aAAWA,GAAE,MAAM,YAAUA,GAAE,SAAS,EAAC,cAAa,MAAE,CAAC,GAAEA,GAAE,MAAM,QAAQ,MAAIA,GAAE,SAAS,EAAC,QAAO,QAAO,UAASA,GAAE,MAAM,kBAAiB,cAAa,MAAE,CAAC,GAAEA,GAAE,MAAM,OAAO;AAAA,cAAG,CAAE,GAAE,EAAE,EAAEA,EAAC,GAAE,eAAe,SAASD,IAAE;AAAC,uBAAOC,GAAE,WAASD;AAAA,cAAC,CAAE,GAAEC,GAAE,UAAQ,QAAOA,GAAE,YAAUD,GAAE,oBAAkB,uBAAuB,OAAO,KAAK,IAAI,CAAC,GAAEC,GAAE,YAAUD,GAAE,oBAAoB,MAAI,uBAAuB,OAAO,KAAK,IAAI,CAAC,GAAEA,GAAE,OAAKC,GAAE,QAAM,EAAC,UAAS,OAAG,6BAA4B,OAAG,QAAO,QAAO,YAAW,QAAO,eAAc,MAAG,UAASD,GAAE,kBAAiB,cAAa,MAAE,IAAEC,GAAE,QAAM,EAAC,UAAS,MAAG,6BAA4B,OAAG,QAAO,GAAE,YAAW,UAAU,OAAOD,GAAE,gBAAe,KAAK,EAAE,OAAOA,GAAE,MAAM,GAAE,eAAc,OAAG,UAAS,UAAS,cAAa,MAAE,GAAEC;AAAA,YAAC;AAAC,mBAAOA,KAAEK,KAAGJ,KAAE,CAAC,EAAC,KAAI,sBAAqB,OAAM,SAASF,IAAEC,IAAE;AAAC,kBAAIC,KAAE;AAAK,mBAAK,MAAM,yBAAuB,KAAK,wBAAwB,GAAE,WAASD,GAAE,UAAQ,MAAIA,GAAE,UAAQ,SAAK,KAAK,MAAM,gCAA8B,OAAO,aAAa,KAAK,OAAO,GAAE,KAAK,UAAQ,OAAO,WAAY,WAAU;AAAC,gBAAAC,GAAE,SAAS,EAAC,QAAO,GAAE,UAAS,UAAS,UAAS,MAAG,6BAA4B,MAAE,CAAC;AAAA,cAAC,GAAG,EAAE,IAAGF,GAAE,SAAO,KAAK,MAAM,SAAO,SAAK,KAAK,MAAM,QAAM,KAAK,gBAAgB,GAAE,KAAK,MAAM,UAAU,MAAI,KAAK,iBAAiB,GAAE,KAAK,MAAM,UAAU;AAAA,YAAG,EAAC,GAAE,EAAC,KAAI,wBAAuB,OAAM,WAAU;AAAC,qBAAO,aAAa,KAAK,OAAO;AAAA,YAAC,EAAC,GAAE,EAAC,KAAI,oBAAmB,OAAM,WAAU;AAAC,kBAAIA,KAAE,KAAK;AAAS,mBAAK,SAAS,EAAC,6BAA4B,MAAG,QAAOA,GAAE,cAAa,YAAW,UAAU,OAAO,KAAK,MAAM,sBAAoB,KAAK,MAAM,sBAAoB,KAAK,MAAM,gBAAe,KAAK,EAAE,OAAO,KAAK,MAAM,MAAM,GAAE,cAAaO,GAAEP,GAAE,YAAY,EAAC,CAAC;AAAA,YAAC,EAAC,GAAE,EAAC,KAAI,mBAAkB,OAAM,WAAU;AAAC,mBAAK,SAAS,EAAC,cAAaO,GAAE,KAAK,SAAS,YAAY,GAAE,uBAAsB,KAAE,CAAC;AAAA,YAAC,EAAC,GAAE,EAAC,KAAI,oCAAmC,OAAM,WAAU;AAAC,kBAAIP,KAAE,KAAK,OAAMC,KAAED,GAAE,gBAAeE,KAAEF,GAAE;AAAkB,kBAAG,CAACC;AAAE,uBAAO;AAAK,sBAAOO,GAAEP,EAAC,GAAE;AAAA,gBAAC,KAAI;AAAS,yBAAOG,GAAE,EAAE,cAAc,QAAO,EAAC,WAAU,GAAG,OAAOF,IAAE,mBAAmB,EAAC,GAAED,EAAC;AAAA,gBAAE,KAAI;AAAW,yBAAOA,GAAE;AAAA,gBAAE,KAAI;AAAS,yBAAOA;AAAA,gBAAE;AAAQ,yBAAO;AAAA,cAAI;AAAA,YAAC,EAAC,GAAE,EAAC,KAAI,UAAS,OAAM,WAAU;AAAC,kBAAID,KAAE,MAAKC,KAAE,EAAC,QAAO,KAAK,MAAM,QAAO,kBAAiB,KAAK,MAAM,YAAW,cAAa,KAAK,MAAM,YAAW,YAAW,KAAK,MAAM,YAAW,UAAS,KAAK,MAAM,SAAQ,GAAEC,KAAE,KAAK,MAAM,WAAS,cAAY,WAAUC,KAAE,KAAK,MAAM,kBAAgB,gBAAc,IAAGE,KAAE,UAAK,KAAK,MAAM,YAAU,WAAS,KAAK,MAAM,kBAAgB,KAAK,MAAM,kBAAgB,KAAK,MAAM,SAAQC,KAAE,KAAK,MAAM,yBAAwBC,KAAE,KAAK,MAAM,gBAAeC,KAAE,KAAK,MAAM,cAAY,CAAC,KAAK,MAAM,iBAAe,KAAK,MAAM,YAAU,CAAC,KAAK,MAAM,eAAa,OAAK,KAAK,MAAM,UAASE,KAAE,KAAK,OAAMC,KAAED,GAAE,mBAAkBE,KAAEF,GAAE,uBAAsBG,KAAEH,GAAE,uBAAsBI,KAAE,GAAG,OAAOH,IAAE,YAAY,EAAE,OAAOT,IAAE,GAAG,EAAE,OAAOC,IAAE,GAAG,EAAE,OAAO,KAAK,MAAM,WAAS,KAAK,MAAM,mBAAiB,KAAK,MAAM,sBAAsB,GAAEM,KAAE,GAAG,OAAOE,IAAE,GAAG,EAAE,OAAO,KAAK,MAAM,WAAS,KAAK,MAAM,YAAU,KAAK,MAAM,eAAe,GAAEI,MAAE,GAAG,OAAOJ,IAAE,iBAAiB,EAAE,OAAOC,EAAC,GAAEI,KAAE,GAAG,OAAOL,IAAE,iBAAiB,EAAE,OAAOE,EAAC;AAAE,qBAAOT,GAAE,EAAE,cAAcE,IAAE,EAAE,EAAC,WAAUG,GAAE,KAAK,EAAC,GAAE,KAAK,MAAM,qBAAqB,GAAEL,GAAE,EAAE,cAAcG,IAAE,EAAE,EAAC,IAAG,KAAK,WAAU,WAAUO,GAAE,KAAK,GAAE,SAAQ,KAAK,oBAAmB,OAAM,KAAK,MAAM,gBAAc,KAAK,MAAM,cAAa,YAAW,SAASb,IAAE;AAAC,oBAAIC,KAAED,GAAE;AAAI,iBAAC,QAAMC,MAAG,aAAWF,GAAE,MAAM,eAAe,YAAY,KAAG,YAAUE,OAAIF,GAAE,mBAAmBC,EAAC;AAAA,cAAC,GAAE,UAAS,KAAK,MAAM,YAAU,KAAK,MAAM,UAAS,iBAAgB,CAAC,KAAK,MAAM,UAAS,iBAAgB,KAAK,MAAM,iBAAgB,iBAAgB,KAAK,WAAU,MAAK,SAAQ,GAAE,KAAK,MAAM,mBAAmB,GAAEI,EAAC,GAAE,KAAK,iCAAiC,GAAED,GAAE,EAAE,cAAc,OAAM,EAAC,IAAG,KAAK,WAAU,WAAUW,IAAE,KAAK,GAAE,OAAMd,IAAE,iBAAgB,KAAK,qBAAoB,KAAI,KAAK,aAAY,QAAO,KAAK,MAAM,2BAAyB,KAAK,MAAM,YAAU,CAAC,KAAK,MAAM,cAAa,MAAK,UAAS,mBAAkB,KAAK,UAAS,GAAEG,GAAE,EAAE,cAAc,OAAM,EAAC,WAAUY,GAAE,KAAK,EAAC,GAAER,EAAC,CAAC,CAAC;AAAA,YAAC,EAAC,CAAC,MAAI,EAAEP,GAAE,WAAUC,EAAC,GAAEC,MAAG,EAAEF,IAAEE,EAAC,GAAE,OAAO,eAAeF,IAAE,aAAY,EAAC,UAAS,MAAE,CAAC,GAAEK;AAAA,UAAC,EAAEH,GAAE,SAAS;AAAE,YAAE,YAAU,EAAC,gBAAeG,GAAE,EAAE,QAAO,qBAAoBA,GAAE,EAAE,QAAO,gBAAeA,GAAE,EAAE,QAAO,QAAOA,GAAE,EAAE,QAAO,MAAKA,GAAE,EAAE,MAAK,uBAAsBA,GAAE,EAAE,QAAO,qBAAoBA,GAAE,EAAE,QAAO,kBAAiBA,GAAE,EAAE,QAAO,mBAAkBA,GAAE,EAAE,QAAO,WAAUA,GAAE,EAAE,QAAO,iBAAgBA,GAAE,EAAE,QAAO,cAAaA,GAAE,EAAE,QAAO,kBAAiBA,GAAE,EAAE,QAAO,wBAAuBA,GAAE,EAAE,QAAO,uBAAsBA,GAAE,EAAE,QAAO,uBAAsBA,GAAE,EAAE,QAAO,mBAAkBA,GAAE,EAAE,UAAU,CAACA,GAAE,EAAE,QAAOA,GAAE,EAAE,MAAM,CAAC,GAAE,oBAAmBA,GAAE,EAAE,MAAK,QAAOA,GAAE,EAAE,MAAK,SAAQA,GAAE,EAAE,MAAK,WAAUA,GAAE,EAAE,MAAK,WAAUA,GAAE,EAAE,MAAK,kBAAiBA,GAAE,EAAE,MAAK,kBAAiBA,GAAE,EAAE,MAAK,SAAQA,GAAE,EAAE,UAAU,CAACA,GAAE,EAAE,QAAOA,GAAE,EAAE,OAAO,CAAC,GAAE,iBAAgBA,GAAE,EAAE,UAAU,CAACA,GAAE,EAAE,QAAOA,GAAE,EAAE,OAAO,CAAC,GAAE,iBAAgBA,GAAE,EAAE,MAAK,YAAWA,GAAE,EAAE,MAAK,kBAAiBA,GAAE,EAAE,MAAM,CAAC,UAAS,WAAU,QAAO,UAAS,WAAU,WAAU,OAAO,CAAC,GAAE,yBAAwBA,GAAE,EAAE,MAAK,gBAAeA,GAAE,EAAE,UAAU,CAACA,GAAE,EAAE,QAAOA,GAAE,EAAE,SAAQA,GAAE,EAAE,IAAI,CAAC,GAAE,UAASA,GAAE,EAAE,QAAO,yBAAwBA,GAAE,EAAE,QAAO,UAASA,GAAE,EAAE,UAAU,CAACA,GAAE,EAAE,QAAOA,GAAE,EAAE,OAAO,CAAC,EAAC,GAAE,EAAE,eAAa,EAAC,gBAAe,KAAI,qBAAoB,MAAK,gBAAe,QAAO,QAAO,UAAS,MAAK,OAAG,mBAAkB,eAAc,iBAAgB,OAAG,YAAW,OAAG,kBAAiB,UAAS,yBAAwB,OAAG,iBAAgB,IAAG,cAAa,MAAK,kBAAiB,IAAG,wBAAuB,IAAG,uBAAsB,IAAG,uBAAsB,IAAG,WAAU,IAAG,gBAAe,MAAK,QAAO,WAAU;AAAA,UAAC,GAAE,SAAQ,WAAU;AAAA,UAAC,GAAE,WAAU,WAAU;AAAA,UAAC,GAAE,WAAU,WAAU;AAAA,UAAC,GAAE,kBAAiB,WAAU;AAAA,UAAC,GAAE,kBAAiB,WAAU;AAAA,UAAC,GAAE,UAAS,MAAK,yBAAwB,OAAM,qBAAoB,CAAC,EAAC;AAAE,UAAAL,GAAE,UAAQ;AAAA,QAAC,CAAC,CAAC;AAAA,MAAC,CAAE;AAAA;AAAA;;;ACAjoV;AAAA;AAAA;AAEA,aAAO,UAAU,SAAS,KAAK,IAAI,SAAS;AAC1C,eAAO,SAAS,OAAO;AACrB,cAAI,OAAO,IAAI,MAAM,UAAU,MAAM;AACrC,mBAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,iBAAK,CAAC,IAAI,UAAU,CAAC;AAAA,UACvB;AACA,iBAAO,GAAG,MAAM,SAAS,IAAI;AAAA,QAC/B;AAAA,MACF;AAAA;AAAA;;;ACVA;AAAA;AAAA;AAEA,UAAI,OAAO;AAIX,UAAI,WAAW,OAAO,UAAU;AAGhC,UAAI,SAAU,SAAS,OAAO;AAE5B,eAAO,SAAS,OAAO;AACrB,cAAI,MAAM,SAAS,KAAK,KAAK;AAC7B,iBAAO,MAAM,GAAG,MAAM,MAAM,GAAG,IAAI,IAAI,MAAM,GAAG,EAAE,EAAE,YAAY;AAAA,QAClE;AAAA,MACF,EAAG,uBAAO,OAAO,IAAI,CAAC;AAEtB,eAAS,WAAW,MAAM;AACxB,eAAO,KAAK,YAAY;AACxB,eAAO,SAAS,SAAS,OAAO;AAC9B,iBAAO,OAAO,KAAK,MAAM;AAAA,QAC3B;AAAA,MACF;AAQA,eAASgB,SAAQ,KAAK;AACpB,eAAO,MAAM,QAAQ,GAAG;AAAA,MAC1B;AAQA,eAAS,YAAY,KAAK;AACxB,eAAO,OAAO,QAAQ;AAAA,MACxB;AAQA,eAAS,SAAS,KAAK;AACrB,eAAO,QAAQ,QAAQ,CAAC,YAAY,GAAG,KAAK,IAAI,gBAAgB,QAAQ,CAAC,YAAY,IAAI,WAAW,KAC/F,OAAO,IAAI,YAAY,aAAa,cAAc,IAAI,YAAY,SAAS,GAAG;AAAA,MACrF;AASA,UAAI,gBAAgB,WAAW,aAAa;AAS5C,eAAS,kBAAkB,KAAK;AAC9B,YAAI;AACJ,YAAK,OAAO,gBAAgB,eAAiB,YAAY,QAAS;AAChE,mBAAS,YAAY,OAAO,GAAG;AAAA,QACjC,OAAO;AACL,mBAAU,OAAS,IAAI,UAAY,cAAc,IAAI,MAAM;AAAA,QAC7D;AACA,eAAO;AAAA,MACT;AAQA,eAAS,SAAS,KAAK;AACrB,eAAO,OAAO,QAAQ;AAAA,MACxB;AAQA,eAAS,SAAS,KAAK;AACrB,eAAO,OAAO,QAAQ;AAAA,MACxB;AAQA,eAAS,SAAS,KAAK;AACrB,eAAO,QAAQ,QAAQ,OAAO,QAAQ;AAAA,MACxC;AAQA,eAAS,cAAc,KAAK;AAC1B,YAAI,OAAO,GAAG,MAAM,UAAU;AAC5B,iBAAO;AAAA,QACT;AAEA,YAAI,YAAY,OAAO,eAAe,GAAG;AACzC,eAAO,cAAc,QAAQ,cAAc,OAAO;AAAA,MACpD;AASA,UAAI,SAAS,WAAW,MAAM;AAS9B,UAAI,SAAS,WAAW,MAAM;AAS9B,UAAI,SAAS,WAAW,MAAM;AAS9B,UAAI,aAAa,WAAW,UAAU;AAQtC,eAASC,YAAW,KAAK;AACvB,eAAO,SAAS,KAAK,GAAG,MAAM;AAAA,MAChC;AAQA,eAAS,SAAS,KAAK;AACrB,eAAO,SAAS,GAAG,KAAKA,YAAW,IAAI,IAAI;AAAA,MAC7C;AAQA,eAAS,WAAW,OAAO;AACzB,YAAI,UAAU;AACd,eAAO,UACJ,OAAO,aAAa,cAAc,iBAAiB,YACpD,SAAS,KAAK,KAAK,MAAM,WACxBA,YAAW,MAAM,QAAQ,KAAK,MAAM,SAAS,MAAM;AAAA,MAExD;AAQA,UAAI,oBAAoB,WAAW,iBAAiB;AAQpD,eAASC,MAAK,KAAK;AACjB,eAAO,IAAI,OAAO,IAAI,KAAK,IAAI,IAAI,QAAQ,cAAc,EAAE;AAAA,MAC7D;AAiBA,eAAS,uBAAuB;AAC9B,YAAI,OAAO,cAAc,gBAAgB,UAAU,YAAY,iBACtB,UAAU,YAAY,kBACtB,UAAU,YAAY,OAAO;AACpE,iBAAO;AAAA,QACT;AACA,eACE,OAAO,WAAW,eAClB,OAAO,aAAa;AAAA,MAExB;AAcA,eAAS,QAAQ,KAAK,IAAI;AAExB,YAAI,QAAQ,QAAQ,OAAO,QAAQ,aAAa;AAC9C;AAAA,QACF;AAGA,YAAI,OAAO,QAAQ,UAAU;AAE3B,gBAAM,CAAC,GAAG;AAAA,QACZ;AAEA,YAAIF,SAAQ,GAAG,GAAG;AAEhB,mBAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,IAAI,GAAG,KAAK;AAC1C,eAAG,KAAK,MAAM,IAAI,CAAC,GAAG,GAAG,GAAG;AAAA,UAC9B;AAAA,QACF,OAAO;AAEL,mBAAS,OAAO,KAAK;AACnB,gBAAI,OAAO,UAAU,eAAe,KAAK,KAAK,GAAG,GAAG;AAClD,iBAAG,KAAK,MAAM,IAAI,GAAG,GAAG,KAAK,GAAG;AAAA,YAClC;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAmBA,eAASG,SAAmC;AAC1C,YAAI,SAAS,CAAC;AACd,iBAAS,YAAY,KAAK,KAAK;AAC7B,cAAI,cAAc,OAAO,GAAG,CAAC,KAAK,cAAc,GAAG,GAAG;AACpD,mBAAO,GAAG,IAAIA,OAAM,OAAO,GAAG,GAAG,GAAG;AAAA,UACtC,WAAW,cAAc,GAAG,GAAG;AAC7B,mBAAO,GAAG,IAAIA,OAAM,CAAC,GAAG,GAAG;AAAA,UAC7B,WAAWH,SAAQ,GAAG,GAAG;AACvB,mBAAO,GAAG,IAAI,IAAI,MAAM;AAAA,UAC1B,OAAO;AACL,mBAAO,GAAG,IAAI;AAAA,UAChB;AAAA,QACF;AAEA,iBAAS,IAAI,GAAG,IAAI,UAAU,QAAQ,IAAI,GAAG,KAAK;AAChD,kBAAQ,UAAU,CAAC,GAAG,WAAW;AAAA,QACnC;AACA,eAAO;AAAA,MACT;AAUA,eAASI,QAAOC,IAAG,GAAG,SAAS;AAC7B,gBAAQ,GAAG,SAAS,YAAY,KAAK,KAAK;AACxC,cAAI,WAAW,OAAO,QAAQ,YAAY;AACxC,YAAAA,GAAE,GAAG,IAAI,KAAK,KAAK,OAAO;AAAA,UAC5B,OAAO;AACL,YAAAA,GAAE,GAAG,IAAI;AAAA,UACX;AAAA,QACF,CAAC;AACD,eAAOA;AAAA,MACT;AAQA,eAAS,SAAS,SAAS;AACzB,YAAI,QAAQ,WAAW,CAAC,MAAM,OAAQ;AACpC,oBAAU,QAAQ,MAAM,CAAC;AAAA,QAC3B;AACA,eAAO;AAAA,MACT;AAUA,eAAS,SAAS,aAAa,kBAAkB,OAAO,aAAa;AACnE,oBAAY,YAAY,OAAO,OAAO,iBAAiB,WAAW,WAAW;AAC7E,oBAAY,UAAU,cAAc;AACpC,iBAAS,OAAO,OAAO,YAAY,WAAW,KAAK;AAAA,MACrD;AAUA,eAAS,aAAa,WAAW,SAAS,QAAQ;AAChD,YAAI;AACJ,YAAI;AACJ,YAAI;AACJ,YAAI,SAAS,CAAC;AAEd,kBAAU,WAAW,CAAC;AAEtB,WAAG;AACD,kBAAQ,OAAO,oBAAoB,SAAS;AAC5C,cAAI,MAAM;AACV,iBAAO,MAAM,GAAG;AACd,mBAAO,MAAM,CAAC;AACd,gBAAI,CAAC,OAAO,IAAI,GAAG;AACjB,sBAAQ,IAAI,IAAI,UAAU,IAAI;AAC9B,qBAAO,IAAI,IAAI;AAAA,YACjB;AAAA,UACF;AACA,sBAAY,OAAO,eAAe,SAAS;AAAA,QAC7C,SAAS,cAAc,CAAC,UAAU,OAAO,WAAW,OAAO,MAAM,cAAc,OAAO;AAEtF,eAAO;AAAA,MACT;AASA,eAAS,SAAS,KAAK,cAAcC,WAAU;AAC7C,cAAM,OAAO,GAAG;AAChB,YAAIA,cAAa,UAAaA,YAAW,IAAI,QAAQ;AACnD,UAAAA,YAAW,IAAI;AAAA,QACjB;AACA,QAAAA,aAAY,aAAa;AACzB,YAAI,YAAY,IAAI,QAAQ,cAAcA,SAAQ;AAClD,eAAO,cAAc,MAAM,cAAcA;AAAA,MAC3C;AAQA,eAASC,SAAQ,OAAO;AACtB,YAAI,CAAC;AAAO,iBAAO;AACnB,YAAI,IAAI,MAAM;AACd,YAAI,YAAY,CAAC;AAAG,iBAAO;AAC3B,YAAI,MAAM,IAAI,MAAM,CAAC;AACrB,eAAO,MAAM,GAAG;AACd,cAAI,CAAC,IAAI,MAAM,CAAC;AAAA,QAClB;AACA,eAAO;AAAA,MACT;AAGA,UAAI,eAAgB,SAAS,YAAY;AAEvC,eAAO,SAAS,OAAO;AACrB,iBAAO,cAAc,iBAAiB;AAAA,QACxC;AAAA,MACF,EAAG,OAAO,eAAe,eAAe,OAAO,eAAe,UAAU,CAAC;AAEzE,aAAO,UAAU;AAAA,QACf,SAASP;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,YAAYC;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,OAAOE;AAAA,QACP,QAAQC;AAAA,QACR,MAAMF;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,SAASK;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA;AAAA;;;ACrdA;AAAA;AAAA;AAEA,UAAI,QAAQ;AAEZ,eAAS,OAAO,KAAK;AACnB,eAAO,mBAAmB,GAAG,EAC3B,QAAQ,SAAS,GAAG,EACpB,QAAQ,QAAQ,GAAG,EACnB,QAAQ,SAAS,GAAG,EACpB,QAAQ,QAAQ,GAAG,EACnB,QAAQ,SAAS,GAAG,EACpB,QAAQ,SAAS,GAAG;AAAA,MACxB;AASA,aAAO,UAAU,SAAS,SAAS,KAAK,QAAQ,kBAAkB;AAEhE,YAAI,CAAC,QAAQ;AACX,iBAAO;AAAA,QACT;AAEA,YAAI;AACJ,YAAI,kBAAkB;AACpB,6BAAmB,iBAAiB,MAAM;AAAA,QAC5C,WAAW,MAAM,kBAAkB,MAAM,GAAG;AAC1C,6BAAmB,OAAO,SAAS;AAAA,QACrC,OAAO;AACL,cAAI,QAAQ,CAAC;AAEb,gBAAM,QAAQ,QAAQ,SAASC,WAAU,KAAK,KAAK;AACjD,gBAAI,QAAQ,QAAQ,OAAO,QAAQ,aAAa;AAC9C;AAAA,YACF;AAEA,gBAAI,MAAM,QAAQ,GAAG,GAAG;AACtB,oBAAM,MAAM;AAAA,YACd,OAAO;AACL,oBAAM,CAAC,GAAG;AAAA,YACZ;AAEA,kBAAM,QAAQ,KAAK,SAAS,WAAW,GAAG;AACxC,kBAAI,MAAM,OAAO,CAAC,GAAG;AACnB,oBAAI,EAAE,YAAY;AAAA,cACpB,WAAW,MAAM,SAAS,CAAC,GAAG;AAC5B,oBAAI,KAAK,UAAU,CAAC;AAAA,cACtB;AACA,oBAAM,KAAK,OAAO,GAAG,IAAI,MAAM,OAAO,CAAC,CAAC;AAAA,YAC1C,CAAC;AAAA,UACH,CAAC;AAED,6BAAmB,MAAM,KAAK,GAAG;AAAA,QACnC;AAEA,YAAI,kBAAkB;AACpB,cAAI,gBAAgB,IAAI,QAAQ,GAAG;AACnC,cAAI,kBAAkB,IAAI;AACxB,kBAAM,IAAI,MAAM,GAAG,aAAa;AAAA,UAClC;AAEA,kBAAQ,IAAI,QAAQ,GAAG,MAAM,KAAK,MAAM,OAAO;AAAA,QACjD;AAEA,eAAO;AAAA,MACT;AAAA;AAAA;;;ACrEA;AAAA;AAAA;AAEA,UAAI,QAAQ;AAEZ,eAAS,qBAAqB;AAC5B,aAAK,WAAW,CAAC;AAAA,MACnB;AAUA,yBAAmB,UAAU,MAAM,SAAS,IAAI,WAAW,UAAUC,UAAS;AAC5E,aAAK,SAAS,KAAK;AAAA,UACjB;AAAA,UACA;AAAA,UACA,aAAaA,WAAUA,SAAQ,cAAc;AAAA,UAC7C,SAASA,WAAUA,SAAQ,UAAU;AAAA,QACvC,CAAC;AACD,eAAO,KAAK,SAAS,SAAS;AAAA,MAChC;AAOA,yBAAmB,UAAU,QAAQ,SAAS,MAAMC,MAAI;AACtD,YAAI,KAAK,SAASA,IAAE,GAAG;AACrB,eAAK,SAASA,IAAE,IAAI;AAAA,QACtB;AAAA,MACF;AAUA,yBAAmB,UAAU,UAAU,SAAS,QAAQ,IAAI;AAC1D,cAAM,QAAQ,KAAK,UAAU,SAAS,eAAe,GAAG;AACtD,cAAI,MAAM,MAAM;AACd,eAAG,CAAC;AAAA,UACN;AAAA,QACF,CAAC;AAAA,MACH;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACrDjB;AAAA;AAAA;AAEA,UAAI,QAAQ;AAEZ,aAAO,UAAU,SAAS,oBAAoB,SAAS,gBAAgB;AACrE,cAAM,QAAQ,SAAS,SAAS,cAAc,OAAOC,OAAM;AACzD,cAAIA,UAAS,kBAAkBA,MAAK,YAAY,MAAM,eAAe,YAAY,GAAG;AAClF,oBAAQ,cAAc,IAAI;AAC1B,mBAAO,QAAQA,KAAI;AAAA,UACrB;AAAA,QACF,CAAC;AAAA,MACH;AAAA;AAAA;;;ACXA;AAAA;AAAA;AAEA,UAAI,QAAQ;AAYZ,eAAS,WAAW,SAAS,MAAM,QAAQ,SAAS,UAAU;AAC5D,cAAM,KAAK,IAAI;AACf,aAAK,UAAU;AACf,aAAK,OAAO;AACZ,iBAAS,KAAK,OAAO;AACrB,mBAAW,KAAK,SAAS;AACzB,oBAAY,KAAK,UAAU;AAC3B,qBAAa,KAAK,WAAW;AAAA,MAC/B;AAEA,YAAM,SAAS,YAAY,OAAO;AAAA,QAChC,QAAQ,SAAS,SAAS;AACxB,iBAAO;AAAA;AAAA,YAEL,SAAS,KAAK;AAAA,YACd,MAAM,KAAK;AAAA;AAAA,YAEX,aAAa,KAAK;AAAA,YAClB,QAAQ,KAAK;AAAA;AAAA,YAEb,UAAU,KAAK;AAAA,YACf,YAAY,KAAK;AAAA,YACjB,cAAc,KAAK;AAAA,YACnB,OAAO,KAAK;AAAA;AAAA,YAEZ,QAAQ,KAAK;AAAA,YACb,MAAM,KAAK;AAAA,YACX,QAAQ,KAAK,YAAY,KAAK,SAAS,SAAS,KAAK,SAAS,SAAS;AAAA,UACzE;AAAA,QACF;AAAA,MACF,CAAC;AAED,UAAI,YAAY,WAAW;AAC3B,UAAI,cAAc,CAAC;AAEnB;AAAA,QACE;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA;AAAA,MAEF,EAAE,QAAQ,SAAS,MAAM;AACvB,oBAAY,IAAI,IAAI,EAAC,OAAO,KAAI;AAAA,MAClC,CAAC;AAED,aAAO,iBAAiB,YAAY,WAAW;AAC/C,aAAO,eAAe,WAAW,gBAAgB,EAAC,OAAO,KAAI,CAAC;AAG9D,iBAAW,OAAO,SAAS,OAAO,MAAM,QAAQ,SAAS,UAAU,aAAa;AAC9E,YAAI,aAAa,OAAO,OAAO,SAAS;AAExC,cAAM,aAAa,OAAO,YAAY,SAAS,OAAO,KAAK;AACzD,iBAAO,QAAQ,MAAM;AAAA,QACvB,CAAC;AAED,mBAAW,KAAK,YAAY,MAAM,SAAS,MAAM,QAAQ,SAAS,QAAQ;AAE1E,mBAAW,OAAO,MAAM;AAExB,uBAAe,OAAO,OAAO,YAAY,WAAW;AAEpD,eAAO;AAAA,MACT;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACrFjB;AAAA;AAAA;AAEA,aAAO,UAAU;AAAA,QACf,mBAAmB;AAAA,QACnB,mBAAmB;AAAA,QACnB,qBAAqB;AAAA,MACvB;AAAA;AAAA;;;ACNA;AAAA;AAAA;AAEA,UAAI,QAAQ;AASZ,eAAS,WAAW,KAAK,UAAU;AAEjC,mBAAW,YAAY,IAAI,SAAS;AAEpC,YAAI,QAAQ,CAAC;AAEb,iBAAS,aAAa,OAAO;AAC3B,cAAI,UAAU;AAAM,mBAAO;AAE3B,cAAI,MAAM,OAAO,KAAK,GAAG;AACvB,mBAAO,MAAM,YAAY;AAAA,UAC3B;AAEA,cAAI,MAAM,cAAc,KAAK,KAAK,MAAM,aAAa,KAAK,GAAG;AAC3D,mBAAO,OAAO,SAAS,aAAa,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,KAAK;AAAA,UAC3E;AAEA,iBAAO;AAAA,QACT;AAEA,iBAASC,OAAMC,OAAM,WAAW;AAC9B,cAAI,MAAM,cAAcA,KAAI,KAAK,MAAM,QAAQA,KAAI,GAAG;AACpD,gBAAI,MAAM,QAAQA,KAAI,MAAM,IAAI;AAC9B,oBAAM,MAAM,oCAAoC,SAAS;AAAA,YAC3D;AAEA,kBAAM,KAAKA,KAAI;AAEf,kBAAM,QAAQA,OAAM,SAAS,KAAK,OAAO,KAAK;AAC5C,kBAAI,MAAM,YAAY,KAAK;AAAG;AAC9B,kBAAI,UAAU,YAAY,YAAY,MAAM,MAAM;AAClD,kBAAI;AAEJ,kBAAI,SAAS,CAAC,aAAa,OAAO,UAAU,UAAU;AACpD,oBAAI,MAAM,SAAS,KAAK,IAAI,GAAG;AAE7B,0BAAQ,KAAK,UAAU,KAAK;AAAA,gBAC9B,WAAW,MAAM,SAAS,KAAK,IAAI,MAAM,MAAM,MAAM,QAAQ,KAAK,IAAI;AAEpE,sBAAI,QAAQ,SAAS,IAAI;AACvB,qBAAC,MAAM,YAAY,EAAE,KAAK,SAAS,OAAO,SAAS,aAAa,EAAE,CAAC;AAAA,kBACrE,CAAC;AACD;AAAA,gBACF;AAAA,cACF;AAEA,cAAAD,OAAM,OAAO,OAAO;AAAA,YACtB,CAAC;AAED,kBAAM,IAAI;AAAA,UACZ,OAAO;AACL,qBAAS,OAAO,WAAW,aAAaC,KAAI,CAAC;AAAA,UAC/C;AAAA,QACF;AAEA,QAAAD,OAAM,GAAG;AAET,eAAO;AAAA,MACT;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACvEjB;AAAA;AAAA;AAEA,UAAI,aAAa;AASjB,aAAO,UAAU,SAAS,OAAO,SAAS,QAAQ,UAAU;AAC1D,YAAI,iBAAiB,SAAS,OAAO;AACrC,YAAI,CAAC,SAAS,UAAU,CAAC,kBAAkB,eAAe,SAAS,MAAM,GAAG;AAC1E,kBAAQ,QAAQ;AAAA,QAClB,OAAO;AACL,iBAAO,IAAI;AAAA,YACT,qCAAqC,SAAS;AAAA,YAC9C,CAAC,WAAW,iBAAiB,WAAW,gBAAgB,EAAE,KAAK,MAAM,SAAS,SAAS,GAAG,IAAI,CAAC;AAAA,YAC/F,SAAS;AAAA,YACT,SAAS;AAAA,YACT;AAAA,UACF,CAAC;AAAA,QACH;AAAA,MACF;AAAA;AAAA;;;ACxBA;AAAA;AAAA;AAEA,UAAI,QAAQ;AAEZ,aAAO,UACL,MAAM,qBAAqB;AAAA;AAAA,QAGxB,SAAS,qBAAqB;AAC7B,iBAAO;AAAA,YACL,OAAO,SAAS,MAAME,OAAM,OAAO,SAASC,OAAMC,SAAQ,QAAQ;AAChE,kBAAI,SAAS,CAAC;AACd,qBAAO,KAAKF,QAAO,MAAM,mBAAmB,KAAK,CAAC;AAElD,kBAAI,MAAM,SAAS,OAAO,GAAG;AAC3B,uBAAO,KAAK,aAAa,IAAI,KAAK,OAAO,EAAE,YAAY,CAAC;AAAA,cAC1D;AAEA,kBAAI,MAAM,SAASC,KAAI,GAAG;AACxB,uBAAO,KAAK,UAAUA,KAAI;AAAA,cAC5B;AAEA,kBAAI,MAAM,SAASC,OAAM,GAAG;AAC1B,uBAAO,KAAK,YAAYA,OAAM;AAAA,cAChC;AAEA,kBAAI,WAAW,MAAM;AACnB,uBAAO,KAAK,QAAQ;AAAA,cACtB;AAEA,uBAAS,SAAS,OAAO,KAAK,IAAI;AAAA,YACpC;AAAA,YAEA,MAAM,SAAS,KAAKF,OAAM;AACxB,kBAAIG,SAAQ,SAAS,OAAO,MAAM,IAAI,OAAO,eAAeH,QAAO,WAAW,CAAC;AAC/E,qBAAQG,SAAQ,mBAAmBA,OAAM,CAAC,CAAC,IAAI;AAAA,YACjD;AAAA,YAEA,QAAQ,SAAS,OAAOH,OAAM;AAC5B,mBAAK,MAAMA,OAAM,IAAI,KAAK,IAAI,IAAI,KAAQ;AAAA,YAC5C;AAAA,UACF;AAAA,QACF,EAAG;AAAA;AAAA;AAAA,QAGF,SAAS,wBAAwB;AAChC,iBAAO;AAAA,YACL,OAAO,SAAS,QAAQ;AAAA,YAAC;AAAA,YACzB,MAAM,SAAS,OAAO;AAAE,qBAAO;AAAA,YAAM;AAAA,YACrC,QAAQ,SAAS,SAAS;AAAA,YAAC;AAAA,UAC7B;AAAA,QACF,EAAG;AAAA;AAAA;AAAA;;;ACnDP;AAAA;AAAA;AAQA,aAAO,UAAU,SAAS,cAAc,KAAK;AAI3C,eAAO,8BAA8B,KAAK,GAAG;AAAA,MAC/C;AAAA;AAAA;;;ACbA;AAAA;AAAA;AASA,aAAO,UAAU,SAAS,YAAY,SAAS,aAAa;AAC1D,eAAO,cACH,QAAQ,QAAQ,QAAQ,EAAE,IAAI,MAAM,YAAY,QAAQ,QAAQ,EAAE,IAClE;AAAA,MACN;AAAA;AAAA;;;ACbA;AAAA;AAAA;AAEA,UAAI,gBAAgB;AACpB,UAAI,cAAc;AAWlB,aAAO,UAAU,SAAS,cAAc,SAAS,cAAc;AAC7D,YAAI,WAAW,CAAC,cAAc,YAAY,GAAG;AAC3C,iBAAO,YAAY,SAAS,YAAY;AAAA,QAC1C;AACA,eAAO;AAAA,MACT;AAAA;AAAA;;;ACnBA;AAAA;AAAA;AAEA,UAAI,QAAQ;AAIZ,UAAI,oBAAoB;AAAA,QACtB;AAAA,QAAO;AAAA,QAAiB;AAAA,QAAkB;AAAA,QAAgB;AAAA,QAC1D;AAAA,QAAW;AAAA,QAAQ;AAAA,QAAQ;AAAA,QAAqB;AAAA,QAChD;AAAA,QAAiB;AAAA,QAAY;AAAA,QAAgB;AAAA,QAC7C;AAAA,QAAW;AAAA,QAAe;AAAA,MAC5B;AAeA,aAAO,UAAU,SAAS,aAAa,SAAS;AAC9C,YAAI,SAAS,CAAC;AACd,YAAI;AACJ,YAAI;AACJ,YAAI;AAEJ,YAAI,CAAC,SAAS;AAAE,iBAAO;AAAA,QAAQ;AAE/B,cAAM,QAAQ,QAAQ,MAAM,IAAI,GAAG,SAAS,OAAOI,OAAM;AACvD,cAAIA,MAAK,QAAQ,GAAG;AACpB,gBAAM,MAAM,KAAKA,MAAK,OAAO,GAAG,CAAC,CAAC,EAAE,YAAY;AAChD,gBAAM,MAAM,KAAKA,MAAK,OAAO,IAAI,CAAC,CAAC;AAEnC,cAAI,KAAK;AACP,gBAAI,OAAO,GAAG,KAAK,kBAAkB,QAAQ,GAAG,KAAK,GAAG;AACtD;AAAA,YACF;AACA,gBAAI,QAAQ,cAAc;AACxB,qBAAO,GAAG,KAAK,OAAO,GAAG,IAAI,OAAO,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC;AAAA,YAC7D,OAAO;AACL,qBAAO,GAAG,IAAI,OAAO,GAAG,IAAI,OAAO,GAAG,IAAI,OAAO,MAAM;AAAA,YACzD;AAAA,UACF;AAAA,QACF,CAAC;AAED,eAAO;AAAA,MACT;AAAA;AAAA;;;ACpDA;AAAA;AAAA;AAEA,UAAI,QAAQ;AAEZ,aAAO,UACL,MAAM,qBAAqB;AAAA;AAAA;AAAA,QAIxB,SAAS,qBAAqB;AAC7B,cAAI,OAAO,kBAAkB,KAAK,UAAU,SAAS;AACrD,cAAI,iBAAiB,SAAS,cAAc,GAAG;AAC/C,cAAI;AAQJ,mBAAS,WAAW,KAAK;AACvB,gBAAI,OAAO;AAEX,gBAAI,MAAM;AAER,6BAAe,aAAa,QAAQ,IAAI;AACxC,qBAAO,eAAe;AAAA,YACxB;AAEA,2BAAe,aAAa,QAAQ,IAAI;AAGxC,mBAAO;AAAA,cACL,MAAM,eAAe;AAAA,cACrB,UAAU,eAAe,WAAW,eAAe,SAAS,QAAQ,MAAM,EAAE,IAAI;AAAA,cAChF,MAAM,eAAe;AAAA,cACrB,QAAQ,eAAe,SAAS,eAAe,OAAO,QAAQ,OAAO,EAAE,IAAI;AAAA,cAC3E,MAAM,eAAe,OAAO,eAAe,KAAK,QAAQ,MAAM,EAAE,IAAI;AAAA,cACpE,UAAU,eAAe;AAAA,cACzB,MAAM,eAAe;AAAA,cACrB,UAAW,eAAe,SAAS,OAAO,CAAC,MAAM,MAC/C,eAAe,WACf,MAAM,eAAe;AAAA,YACzB;AAAA,UACF;AAEA,sBAAY,WAAW,OAAO,SAAS,IAAI;AAQ3C,iBAAO,SAAS,gBAAgB,YAAY;AAC1C,gBAAI,SAAU,MAAM,SAAS,UAAU,IAAK,WAAW,UAAU,IAAI;AACrE,mBAAQ,OAAO,aAAa,UAAU,YAClC,OAAO,SAAS,UAAU;AAAA,UAChC;AAAA,QACF,EAAG;AAAA;AAAA;AAAA,QAGF,SAAS,wBAAwB;AAChC,iBAAO,SAAS,kBAAkB;AAChC,mBAAO;AAAA,UACT;AAAA,QACF,EAAG;AAAA;AAAA;AAAA;;;AClEP;AAAA;AAAA;AAEA,UAAI,aAAa;AACjB,UAAI,QAAQ;AAQZ,eAAS,cAAc,SAAS;AAE9B,mBAAW,KAAK,MAAM,WAAW,OAAO,aAAa,SAAS,WAAW,YAAY;AACrF,aAAK,OAAO;AAAA,MACd;AAEA,YAAM,SAAS,eAAe,YAAY;AAAA,QACxC,YAAY;AAAA,MACd,CAAC;AAED,aAAO,UAAU;AAAA;AAAA;;;ACrBjB;AAAA;AAAA;AAEA,aAAO,UAAU,SAAS,cAAc,KAAK;AAC3C,YAAIC,SAAQ,4BAA4B,KAAK,GAAG;AAChD,eAAOA,UAASA,OAAM,CAAC,KAAK;AAAA,MAC9B;AAAA;AAAA;;;ACLA;AAAA;AAAA;AAEA,UAAI,QAAQ;AACZ,UAAI,SAAS;AACb,UAAI,UAAU;AACd,UAAI,WAAW;AACf,UAAI,gBAAgB;AACpB,UAAI,eAAe;AACnB,UAAI,kBAAkB;AACtB,UAAI,uBAAuB;AAC3B,UAAI,aAAa;AACjB,UAAI,gBAAgB;AACpB,UAAI,gBAAgB;AAEpB,aAAO,UAAU,SAAS,WAAW,QAAQ;AAC3C,eAAO,IAAI,QAAQ,SAAS,mBAAmB,SAAS,QAAQ;AAC9D,cAAI,cAAc,OAAO;AACzB,cAAI,iBAAiB,OAAO;AAC5B,cAAI,eAAe,OAAO;AAC1B,cAAI;AACJ,mBAAS,OAAO;AACd,gBAAI,OAAO,aAAa;AACtB,qBAAO,YAAY,YAAY,UAAU;AAAA,YAC3C;AAEA,gBAAI,OAAO,QAAQ;AACjB,qBAAO,OAAO,oBAAoB,SAAS,UAAU;AAAA,YACvD;AAAA,UACF;AAEA,cAAI,MAAM,WAAW,WAAW,KAAK,MAAM,qBAAqB,GAAG;AACjE,mBAAO,eAAe,cAAc;AAAA,UACtC;AAEA,cAAI,UAAU,IAAI,eAAe;AAGjC,cAAI,OAAO,MAAM;AACf,gBAAI,WAAW,OAAO,KAAK,YAAY;AACvC,gBAAI,WAAW,OAAO,KAAK,WAAW,SAAS,mBAAmB,OAAO,KAAK,QAAQ,CAAC,IAAI;AAC3F,2BAAe,gBAAgB,WAAW,KAAK,WAAW,MAAM,QAAQ;AAAA,UAC1E;AAEA,cAAI,WAAW,cAAc,OAAO,SAAS,OAAO,GAAG;AAEvD,kBAAQ,KAAK,OAAO,OAAO,YAAY,GAAG,SAAS,UAAU,OAAO,QAAQ,OAAO,gBAAgB,GAAG,IAAI;AAG1G,kBAAQ,UAAU,OAAO;AAEzB,mBAAS,YAAY;AACnB,gBAAI,CAAC,SAAS;AACZ;AAAA,YACF;AAEA,gBAAI,kBAAkB,2BAA2B,UAAU,aAAa,QAAQ,sBAAsB,CAAC,IAAI;AAC3G,gBAAI,eAAe,CAAC,gBAAgB,iBAAiB,UAAW,iBAAiB,SAC/E,QAAQ,eAAe,QAAQ;AACjC,gBAAI,WAAW;AAAA,cACb,MAAM;AAAA,cACN,QAAQ,QAAQ;AAAA,cAChB,YAAY,QAAQ;AAAA,cACpB,SAAS;AAAA,cACT;AAAA,cACA;AAAA,YACF;AAEA,mBAAO,SAAS,SAAS,OAAO;AAC9B,sBAAQ,KAAK;AACb,mBAAK;AAAA,YACP,GAAG,SAAS,QAAQ,KAAK;AACvB,qBAAO,GAAG;AACV,mBAAK;AAAA,YACP,GAAG,QAAQ;AAGX,sBAAU;AAAA,UACZ;AAEA,cAAI,eAAe,SAAS;AAE1B,oBAAQ,YAAY;AAAA,UACtB,OAAO;AAEL,oBAAQ,qBAAqB,SAAS,aAAa;AACjD,kBAAI,CAAC,WAAW,QAAQ,eAAe,GAAG;AACxC;AAAA,cACF;AAMA,kBAAI,QAAQ,WAAW,KAAK,EAAE,QAAQ,eAAe,QAAQ,YAAY,QAAQ,OAAO,MAAM,IAAI;AAChG;AAAA,cACF;AAGA,yBAAW,SAAS;AAAA,YACtB;AAAA,UACF;AAGA,kBAAQ,UAAU,SAAS,cAAc;AACvC,gBAAI,CAAC,SAAS;AACZ;AAAA,YACF;AAEA,mBAAO,IAAI,WAAW,mBAAmB,WAAW,cAAc,QAAQ,OAAO,CAAC;AAGlF,sBAAU;AAAA,UACZ;AAGA,kBAAQ,UAAU,SAAS,cAAc;AAGvC,mBAAO,IAAI,WAAW,iBAAiB,WAAW,aAAa,QAAQ,SAAS,OAAO,CAAC;AAGxF,sBAAU;AAAA,UACZ;AAGA,kBAAQ,YAAY,SAAS,gBAAgB;AAC3C,gBAAI,sBAAsB,OAAO,UAAU,gBAAgB,OAAO,UAAU,gBAAgB;AAC5F,gBAAI,eAAe,OAAO,gBAAgB;AAC1C,gBAAI,OAAO,qBAAqB;AAC9B,oCAAsB,OAAO;AAAA,YAC/B;AACA,mBAAO,IAAI;AAAA,cACT;AAAA,cACA,aAAa,sBAAsB,WAAW,YAAY,WAAW;AAAA,cACrE;AAAA,cACA;AAAA,YAAO,CAAC;AAGV,sBAAU;AAAA,UACZ;AAKA,cAAI,MAAM,qBAAqB,GAAG;AAEhC,gBAAI,aAAa,OAAO,mBAAmB,gBAAgB,QAAQ,MAAM,OAAO,iBAC9E,QAAQ,KAAK,OAAO,cAAc,IAClC;AAEF,gBAAI,WAAW;AACb,6BAAe,OAAO,cAAc,IAAI;AAAA,YAC1C;AAAA,UACF;AAGA,cAAI,sBAAsB,SAAS;AACjC,kBAAM,QAAQ,gBAAgB,SAAS,iBAAiB,KAAK,KAAK;AAChE,kBAAI,OAAO,gBAAgB,eAAe,IAAI,YAAY,MAAM,gBAAgB;AAE9E,uBAAO,eAAe,GAAG;AAAA,cAC3B,OAAO;AAEL,wBAAQ,iBAAiB,KAAK,GAAG;AAAA,cACnC;AAAA,YACF,CAAC;AAAA,UACH;AAGA,cAAI,CAAC,MAAM,YAAY,OAAO,eAAe,GAAG;AAC9C,oBAAQ,kBAAkB,CAAC,CAAC,OAAO;AAAA,UACrC;AAGA,cAAI,gBAAgB,iBAAiB,QAAQ;AAC3C,oBAAQ,eAAe,OAAO;AAAA,UAChC;AAGA,cAAI,OAAO,OAAO,uBAAuB,YAAY;AACnD,oBAAQ,iBAAiB,YAAY,OAAO,kBAAkB;AAAA,UAChE;AAGA,cAAI,OAAO,OAAO,qBAAqB,cAAc,QAAQ,QAAQ;AACnE,oBAAQ,OAAO,iBAAiB,YAAY,OAAO,gBAAgB;AAAA,UACrE;AAEA,cAAI,OAAO,eAAe,OAAO,QAAQ;AAGvC,yBAAa,SAAS,QAAQ;AAC5B,kBAAI,CAAC,SAAS;AACZ;AAAA,cACF;AACA,qBAAO,CAAC,UAAW,UAAU,OAAO,OAAQ,IAAI,cAAc,IAAI,MAAM;AACxE,sBAAQ,MAAM;AACd,wBAAU;AAAA,YACZ;AAEA,mBAAO,eAAe,OAAO,YAAY,UAAU,UAAU;AAC7D,gBAAI,OAAO,QAAQ;AACjB,qBAAO,OAAO,UAAU,WAAW,IAAI,OAAO,OAAO,iBAAiB,SAAS,UAAU;AAAA,YAC3F;AAAA,UACF;AAEA,cAAI,CAAC,aAAa;AAChB,0BAAc;AAAA,UAChB;AAEA,cAAI,WAAW,cAAc,QAAQ;AAErC,cAAI,YAAY,CAAE,QAAQ,SAAS,MAAO,EAAE,QAAQ,QAAQ,MAAM,IAAI;AACpE,mBAAO,IAAI,WAAW,0BAA0B,WAAW,KAAK,WAAW,iBAAiB,MAAM,CAAC;AACnG;AAAA,UACF;AAIA,kBAAQ,KAAK,WAAW;AAAA,QAC1B,CAAC;AAAA,MACH;AAAA;AAAA;;;AC7NA;AAAA;AACA,aAAO,UAAU;AAAA;AAAA;;;ACDjB;AAAA;AAAA;AAEA,UAAI,QAAQ;AACZ,UAAI,sBAAsB;AAC1B,UAAI,aAAa;AACjB,UAAI,uBAAuB;AAC3B,UAAI,aAAa;AAEjB,UAAI,uBAAuB;AAAA,QACzB,gBAAgB;AAAA,MAClB;AAEA,eAAS,sBAAsB,SAAS,OAAO;AAC7C,YAAI,CAAC,MAAM,YAAY,OAAO,KAAK,MAAM,YAAY,QAAQ,cAAc,CAAC,GAAG;AAC7E,kBAAQ,cAAc,IAAI;AAAA,QAC5B;AAAA,MACF;AAEA,eAAS,oBAAoB;AAC3B,YAAI;AACJ,YAAI,OAAO,mBAAmB,aAAa;AAEzC,oBAAU;AAAA,QACZ,WAAW,OAAO,YAAY,eAAe,OAAO,UAAU,SAAS,KAAK,OAAO,MAAM,oBAAoB;AAE3G,oBAAU;AAAA,QACZ;AACA,eAAO;AAAA,MACT;AAEA,eAAS,gBAAgBC,WAAU,QAAQ,SAAS;AAClD,YAAI,MAAM,SAASA,SAAQ,GAAG;AAC5B,cAAI;AACF,aAAC,UAAU,KAAK,OAAOA,SAAQ;AAC/B,mBAAO,MAAM,KAAKA,SAAQ;AAAA,UAC5B,SAASC,IAAG;AACV,gBAAIA,GAAE,SAAS,eAAe;AAC5B,oBAAMA;AAAA,YACR;AAAA,UACF;AAAA,QACF;AAEA,gBAAQ,WAAW,KAAK,WAAWD,SAAQ;AAAA,MAC7C;AAEA,UAAI,WAAW;AAAA,QAEb,cAAc;AAAA,QAEd,SAAS,kBAAkB;AAAA,QAE3B,kBAAkB,CAAC,SAAS,iBAAiBE,OAAM,SAAS;AAC1D,8BAAoB,SAAS,QAAQ;AACrC,8BAAoB,SAAS,cAAc;AAE3C,cAAI,MAAM,WAAWA,KAAI,KACvB,MAAM,cAAcA,KAAI,KACxB,MAAM,SAASA,KAAI,KACnB,MAAM,SAASA,KAAI,KACnB,MAAM,OAAOA,KAAI,KACjB,MAAM,OAAOA,KAAI,GACjB;AACA,mBAAOA;AAAA,UACT;AACA,cAAI,MAAM,kBAAkBA,KAAI,GAAG;AACjC,mBAAOA,MAAK;AAAA,UACd;AACA,cAAI,MAAM,kBAAkBA,KAAI,GAAG;AACjC,kCAAsB,SAAS,iDAAiD;AAChF,mBAAOA,MAAK,SAAS;AAAA,UACvB;AAEA,cAAI,kBAAkB,MAAM,SAASA,KAAI;AACzC,cAAI,cAAc,WAAW,QAAQ,cAAc;AAEnD,cAAI;AAEJ,eAAK,aAAa,MAAM,WAAWA,KAAI,MAAO,mBAAmB,gBAAgB,uBAAwB;AACvG,gBAAI,YAAY,KAAK,OAAO,KAAK,IAAI;AACrC,mBAAO,WAAW,aAAa,EAAC,WAAWA,MAAI,IAAIA,OAAM,aAAa,IAAI,UAAU,CAAC;AAAA,UACvF,WAAW,mBAAmB,gBAAgB,oBAAoB;AAChE,kCAAsB,SAAS,kBAAkB;AACjD,mBAAO,gBAAgBA,KAAI;AAAA,UAC7B;AAEA,iBAAOA;AAAA,QACT,CAAC;AAAA,QAED,mBAAmB,CAAC,SAAS,kBAAkBA,OAAM;AACnD,cAAI,eAAe,KAAK,gBAAgB,SAAS;AACjD,cAAI,oBAAoB,gBAAgB,aAAa;AACrD,cAAI,oBAAoB,gBAAgB,aAAa;AACrD,cAAI,oBAAoB,CAAC,qBAAqB,KAAK,iBAAiB;AAEpE,cAAI,qBAAsB,qBAAqB,MAAM,SAASA,KAAI,KAAKA,MAAK,QAAS;AACnF,gBAAI;AACF,qBAAO,KAAK,MAAMA,KAAI;AAAA,YACxB,SAASD,IAAG;AACV,kBAAI,mBAAmB;AACrB,oBAAIA,GAAE,SAAS,eAAe;AAC5B,wBAAM,WAAW,KAAKA,IAAG,WAAW,kBAAkB,MAAM,MAAM,KAAK,QAAQ;AAAA,gBACjF;AACA,sBAAMA;AAAA,cACR;AAAA,YACF;AAAA,UACF;AAEA,iBAAOC;AAAA,QACT,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,QAMD,SAAS;AAAA,QAET,gBAAgB;AAAA,QAChB,gBAAgB;AAAA,QAEhB,kBAAkB;AAAA,QAClB,eAAe;AAAA,QAEf,KAAK;AAAA,UACH,UAAU;AAAA,QACZ;AAAA,QAEA,gBAAgB,SAAS,eAAe,QAAQ;AAC9C,iBAAO,UAAU,OAAO,SAAS;AAAA,QACnC;AAAA,QAEA,SAAS;AAAA,UACP,QAAQ;AAAA,YACN,UAAU;AAAA,UACZ;AAAA,QACF;AAAA,MACF;AAEA,YAAM,QAAQ,CAAC,UAAU,OAAO,MAAM,GAAG,SAAS,oBAAoB,QAAQ;AAC5E,iBAAS,QAAQ,MAAM,IAAI,CAAC;AAAA,MAC9B,CAAC;AAED,YAAM,QAAQ,CAAC,QAAQ,OAAO,OAAO,GAAG,SAAS,sBAAsB,QAAQ;AAC7E,iBAAS,QAAQ,MAAM,IAAI,MAAM,MAAM,oBAAoB;AAAA,MAC7D,CAAC;AAED,aAAO,UAAU;AAAA;AAAA;;;ACjJjB;AAAA;AAAA;AAEA,UAAI,QAAQ;AACZ,UAAI,WAAW;AAUf,aAAO,UAAU,SAAS,cAAcC,OAAM,SAAS,KAAK;AAC1D,YAAI,UAAU,QAAQ;AAEtB,cAAM,QAAQ,KAAK,SAAS,UAAU,IAAI;AACxC,UAAAA,QAAO,GAAG,KAAK,SAASA,OAAM,OAAO;AAAA,QACvC,CAAC;AAED,eAAOA;AAAA,MACT;AAAA;AAAA;;;ACrBA;AAAA;AAAA;AAEA,aAAO,UAAU,SAAS,SAAS,OAAO;AACxC,eAAO,CAAC,EAAE,SAAS,MAAM;AAAA,MAC3B;AAAA;AAAA;;;ACJA;AAAA;AAAA;AAEA,UAAI,QAAQ;AACZ,UAAI,gBAAgB;AACpB,UAAI,WAAW;AACf,UAAI,WAAW;AACf,UAAI,gBAAgB;AAKpB,eAAS,6BAA6B,QAAQ;AAC5C,YAAI,OAAO,aAAa;AACtB,iBAAO,YAAY,iBAAiB;AAAA,QACtC;AAEA,YAAI,OAAO,UAAU,OAAO,OAAO,SAAS;AAC1C,gBAAM,IAAI,cAAc;AAAA,QAC1B;AAAA,MACF;AAQA,aAAO,UAAU,SAAS,gBAAgB,QAAQ;AAChD,qCAA6B,MAAM;AAGnC,eAAO,UAAU,OAAO,WAAW,CAAC;AAGpC,eAAO,OAAO,cAAc;AAAA,UAC1B;AAAA,UACA,OAAO;AAAA,UACP,OAAO;AAAA,UACP,OAAO;AAAA,QACT;AAGA,eAAO,UAAU,MAAM;AAAA,UACrB,OAAO,QAAQ,UAAU,CAAC;AAAA,UAC1B,OAAO,QAAQ,OAAO,MAAM,KAAK,CAAC;AAAA,UAClC,OAAO;AAAA,QACT;AAEA,cAAM;AAAA,UACJ,CAAC,UAAU,OAAO,QAAQ,QAAQ,OAAO,SAAS,QAAQ;AAAA,UAC1D,SAAS,kBAAkB,QAAQ;AACjC,mBAAO,OAAO,QAAQ,MAAM;AAAA,UAC9B;AAAA,QACF;AAEA,YAAI,UAAU,OAAO,WAAW,SAAS;AAEzC,eAAO,QAAQ,MAAM,EAAE,KAAK,SAAS,oBAAoB,UAAU;AACjE,uCAA6B,MAAM;AAGnC,mBAAS,OAAO,cAAc;AAAA,YAC5B;AAAA,YACA,SAAS;AAAA,YACT,SAAS;AAAA,YACT,OAAO;AAAA,UACT;AAEA,iBAAO;AAAA,QACT,GAAG,SAAS,mBAAmB,QAAQ;AACrC,cAAI,CAAC,SAAS,MAAM,GAAG;AACrB,yCAA6B,MAAM;AAGnC,gBAAI,UAAU,OAAO,UAAU;AAC7B,qBAAO,SAAS,OAAO,cAAc;AAAA,gBACnC;AAAA,gBACA,OAAO,SAAS;AAAA,gBAChB,OAAO,SAAS;AAAA,gBAChB,OAAO;AAAA,cACT;AAAA,YACF;AAAA,UACF;AAEA,iBAAO,QAAQ,OAAO,MAAM;AAAA,QAC9B,CAAC;AAAA,MACH;AAAA;AAAA;;;ACtFA;AAAA;AAAA;AAEA,UAAI,QAAQ;AAUZ,aAAO,UAAU,SAAS,YAAY,SAAS,SAAS;AAEtD,kBAAU,WAAW,CAAC;AACtB,YAAI,SAAS,CAAC;AAEd,iBAAS,eAAe,QAAQ,QAAQ;AACtC,cAAI,MAAM,cAAc,MAAM,KAAK,MAAM,cAAc,MAAM,GAAG;AAC9D,mBAAO,MAAM,MAAM,QAAQ,MAAM;AAAA,UACnC,WAAW,MAAM,cAAc,MAAM,GAAG;AACtC,mBAAO,MAAM,MAAM,CAAC,GAAG,MAAM;AAAA,UAC/B,WAAW,MAAM,QAAQ,MAAM,GAAG;AAChC,mBAAO,OAAO,MAAM;AAAA,UACtB;AACA,iBAAO;AAAA,QACT;AAGA,iBAAS,oBAAoB,MAAM;AACjC,cAAI,CAAC,MAAM,YAAY,QAAQ,IAAI,CAAC,GAAG;AACrC,mBAAO,eAAe,QAAQ,IAAI,GAAG,QAAQ,IAAI,CAAC;AAAA,UACpD,WAAW,CAAC,MAAM,YAAY,QAAQ,IAAI,CAAC,GAAG;AAC5C,mBAAO,eAAe,QAAW,QAAQ,IAAI,CAAC;AAAA,UAChD;AAAA,QACF;AAGA,iBAAS,iBAAiB,MAAM;AAC9B,cAAI,CAAC,MAAM,YAAY,QAAQ,IAAI,CAAC,GAAG;AACrC,mBAAO,eAAe,QAAW,QAAQ,IAAI,CAAC;AAAA,UAChD;AAAA,QACF;AAGA,iBAAS,iBAAiB,MAAM;AAC9B,cAAI,CAAC,MAAM,YAAY,QAAQ,IAAI,CAAC,GAAG;AACrC,mBAAO,eAAe,QAAW,QAAQ,IAAI,CAAC;AAAA,UAChD,WAAW,CAAC,MAAM,YAAY,QAAQ,IAAI,CAAC,GAAG;AAC5C,mBAAO,eAAe,QAAW,QAAQ,IAAI,CAAC;AAAA,UAChD;AAAA,QACF;AAGA,iBAAS,gBAAgB,MAAM;AAC7B,cAAI,QAAQ,SAAS;AACnB,mBAAO,eAAe,QAAQ,IAAI,GAAG,QAAQ,IAAI,CAAC;AAAA,UACpD,WAAW,QAAQ,SAAS;AAC1B,mBAAO,eAAe,QAAW,QAAQ,IAAI,CAAC;AAAA,UAChD;AAAA,QACF;AAEA,YAAI,WAAW;AAAA,UACb,OAAO;AAAA,UACP,UAAU;AAAA,UACV,QAAQ;AAAA,UACR,WAAW;AAAA,UACX,oBAAoB;AAAA,UACpB,qBAAqB;AAAA,UACrB,oBAAoB;AAAA,UACpB,WAAW;AAAA,UACX,kBAAkB;AAAA,UAClB,mBAAmB;AAAA,UACnB,WAAW;AAAA,UACX,gBAAgB;AAAA,UAChB,kBAAkB;AAAA,UAClB,kBAAkB;AAAA,UAClB,oBAAoB;AAAA,UACpB,sBAAsB;AAAA,UACtB,cAAc;AAAA,UACd,oBAAoB;AAAA,UACpB,iBAAiB;AAAA,UACjB,kBAAkB;AAAA,UAClB,aAAa;AAAA,UACb,aAAa;AAAA,UACb,cAAc;AAAA,UACd,eAAe;AAAA,UACf,cAAc;AAAA,UACd,oBAAoB;AAAA,UACpB,kBAAkB;AAAA,QACpB;AAEA,cAAM,QAAQ,OAAO,KAAK,OAAO,EAAE,OAAO,OAAO,KAAK,OAAO,CAAC,GAAG,SAAS,mBAAmB,MAAM;AACjG,cAAIC,SAAQ,SAAS,IAAI,KAAK;AAC9B,cAAI,cAAcA,OAAM,IAAI;AAC5B,UAAC,MAAM,YAAY,WAAW,KAAKA,WAAU,oBAAqB,OAAO,IAAI,IAAI;AAAA,QACnF,CAAC;AAED,eAAO;AAAA,MACT;AAAA;AAAA;;;ACnGA;AAAA;AAAA,aAAO,UAAU;AAAA,QACf,WAAW;AAAA,MACb;AAAA;AAAA;;;ACFA;AAAA;AAAA;AAEA,UAAIC,WAAU,eAAuB;AACrC,UAAI,aAAa;AAEjB,UAAI,aAAa,CAAC;AAGlB,OAAC,UAAU,WAAW,UAAU,YAAY,UAAU,QAAQ,EAAE,QAAQ,SAAS,MAAM,GAAG;AACxF,mBAAW,IAAI,IAAI,SAAS,UAAU,OAAO;AAC3C,iBAAO,OAAO,UAAU,QAAQ,OAAO,IAAI,IAAI,OAAO,OAAO;AAAA,QAC/D;AAAA,MACF,CAAC;AAED,UAAI,qBAAqB,CAAC;AAS1B,iBAAW,eAAe,SAAS,aAAa,WAAW,SAAS,SAAS;AAC3E,iBAAS,cAAc,KAAK,MAAM;AAChC,iBAAO,aAAaA,WAAU,4BAA6B,MAAM,MAAO,QAAQ,UAAU,OAAO,UAAU;AAAA,QAC7G;AAGA,eAAO,SAAS,OAAO,KAAK,MAAM;AAChC,cAAI,cAAc,OAAO;AACvB,kBAAM,IAAI;AAAA,cACR,cAAc,KAAK,uBAAuB,UAAU,SAAS,UAAU,GAAG;AAAA,cAC1E,WAAW;AAAA,YACb;AAAA,UACF;AAEA,cAAI,WAAW,CAAC,mBAAmB,GAAG,GAAG;AACvC,+BAAmB,GAAG,IAAI;AAE1B,oBAAQ;AAAA,cACN;AAAA,gBACE;AAAA,gBACA,iCAAiC,UAAU;AAAA,cAC7C;AAAA,YACF;AAAA,UACF;AAEA,iBAAO,YAAY,UAAU,OAAO,KAAK,IAAI,IAAI;AAAA,QACnD;AAAA,MACF;AASA,eAAS,cAAcC,UAAS,QAAQ,cAAc;AACpD,YAAI,OAAOA,aAAY,UAAU;AAC/B,gBAAM,IAAI,WAAW,6BAA6B,WAAW,oBAAoB;AAAA,QACnF;AACA,YAAI,OAAO,OAAO,KAAKA,QAAO;AAC9B,YAAI,IAAI,KAAK;AACb,eAAO,MAAM,GAAG;AACd,cAAI,MAAM,KAAK,CAAC;AAChB,cAAI,YAAY,OAAO,GAAG;AAC1B,cAAI,WAAW;AACb,gBAAI,QAAQA,SAAQ,GAAG;AACvB,gBAAI,SAAS,UAAU,UAAa,UAAU,OAAO,KAAKA,QAAO;AACjE,gBAAI,WAAW,MAAM;AACnB,oBAAM,IAAI,WAAW,YAAY,MAAM,cAAc,QAAQ,WAAW,oBAAoB;AAAA,YAC9F;AACA;AAAA,UACF;AACA,cAAI,iBAAiB,MAAM;AACzB,kBAAM,IAAI,WAAW,oBAAoB,KAAK,WAAW,cAAc;AAAA,UACzE;AAAA,QACF;AAAA,MACF;AAEA,aAAO,UAAU;AAAA,QACf;AAAA,QACA;AAAA,MACF;AAAA;AAAA;;;ACrFA;AAAA;AAAA;AAEA,UAAI,QAAQ;AACZ,UAAI,WAAW;AACf,UAAI,qBAAqB;AACzB,UAAI,kBAAkB;AACtB,UAAI,cAAc;AAClB,UAAI,gBAAgB;AACpB,UAAI,YAAY;AAEhB,UAAI,aAAa,UAAU;AAM3B,eAAS,MAAM,gBAAgB;AAC7B,aAAK,WAAW;AAChB,aAAK,eAAe;AAAA,UAClB,SAAS,IAAI,mBAAmB;AAAA,UAChC,UAAU,IAAI,mBAAmB;AAAA,QACnC;AAAA,MACF;AAOA,YAAM,UAAU,UAAU,SAAS,QAAQ,aAAa,QAAQ;AAG9D,YAAI,OAAO,gBAAgB,UAAU;AACnC,mBAAS,UAAU,CAAC;AACpB,iBAAO,MAAM;AAAA,QACf,OAAO;AACL,mBAAS,eAAe,CAAC;AAAA,QAC3B;AAEA,iBAAS,YAAY,KAAK,UAAU,MAAM;AAG1C,YAAI,OAAO,QAAQ;AACjB,iBAAO,SAAS,OAAO,OAAO,YAAY;AAAA,QAC5C,WAAW,KAAK,SAAS,QAAQ;AAC/B,iBAAO,SAAS,KAAK,SAAS,OAAO,YAAY;AAAA,QACnD,OAAO;AACL,iBAAO,SAAS;AAAA,QAClB;AAEA,YAAI,eAAe,OAAO;AAE1B,YAAI,iBAAiB,QAAW;AAC9B,oBAAU,cAAc,cAAc;AAAA,YACpC,mBAAmB,WAAW,aAAa,WAAW,OAAO;AAAA,YAC7D,mBAAmB,WAAW,aAAa,WAAW,OAAO;AAAA,YAC7D,qBAAqB,WAAW,aAAa,WAAW,OAAO;AAAA,UACjE,GAAG,KAAK;AAAA,QACV;AAGA,YAAI,0BAA0B,CAAC;AAC/B,YAAI,iCAAiC;AACrC,aAAK,aAAa,QAAQ,QAAQ,SAAS,2BAA2B,aAAa;AACjF,cAAI,OAAO,YAAY,YAAY,cAAc,YAAY,QAAQ,MAAM,MAAM,OAAO;AACtF;AAAA,UACF;AAEA,2CAAiC,kCAAkC,YAAY;AAE/E,kCAAwB,QAAQ,YAAY,WAAW,YAAY,QAAQ;AAAA,QAC7E,CAAC;AAED,YAAI,2BAA2B,CAAC;AAChC,aAAK,aAAa,SAAS,QAAQ,SAAS,yBAAyB,aAAa;AAChF,mCAAyB,KAAK,YAAY,WAAW,YAAY,QAAQ;AAAA,QAC3E,CAAC;AAED,YAAI;AAEJ,YAAI,CAAC,gCAAgC;AACnC,cAAI,QAAQ,CAAC,iBAAiB,MAAS;AAEvC,gBAAM,UAAU,QAAQ,MAAM,OAAO,uBAAuB;AAC5D,kBAAQ,MAAM,OAAO,wBAAwB;AAE7C,oBAAU,QAAQ,QAAQ,MAAM;AAChC,iBAAO,MAAM,QAAQ;AACnB,sBAAU,QAAQ,KAAK,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC;AAAA,UACrD;AAEA,iBAAO;AAAA,QACT;AAGA,YAAI,YAAY;AAChB,eAAO,wBAAwB,QAAQ;AACrC,cAAI,cAAc,wBAAwB,MAAM;AAChD,cAAI,aAAa,wBAAwB,MAAM;AAC/C,cAAI;AACF,wBAAY,YAAY,SAAS;AAAA,UACnC,SAAS,OAAO;AACd,uBAAW,KAAK;AAChB;AAAA,UACF;AAAA,QACF;AAEA,YAAI;AACF,oBAAU,gBAAgB,SAAS;AAAA,QACrC,SAAS,OAAO;AACd,iBAAO,QAAQ,OAAO,KAAK;AAAA,QAC7B;AAEA,eAAO,yBAAyB,QAAQ;AACtC,oBAAU,QAAQ,KAAK,yBAAyB,MAAM,GAAG,yBAAyB,MAAM,CAAC;AAAA,QAC3F;AAEA,eAAO;AAAA,MACT;AAEA,YAAM,UAAU,SAAS,SAAS,OAAO,QAAQ;AAC/C,iBAAS,YAAY,KAAK,UAAU,MAAM;AAC1C,YAAI,WAAW,cAAc,OAAO,SAAS,OAAO,GAAG;AACvD,eAAO,SAAS,UAAU,OAAO,QAAQ,OAAO,gBAAgB;AAAA,MAClE;AAGA,YAAM,QAAQ,CAAC,UAAU,OAAO,QAAQ,SAAS,GAAG,SAAS,oBAAoB,QAAQ;AAEvF,cAAM,UAAU,MAAM,IAAI,SAAS,KAAK,QAAQ;AAC9C,iBAAO,KAAK,QAAQ,YAAY,UAAU,CAAC,GAAG;AAAA,YAC5C;AAAA,YACA;AAAA,YACA,OAAO,UAAU,CAAC,GAAG;AAAA,UACvB,CAAC,CAAC;AAAA,QACJ;AAAA,MACF,CAAC;AAED,YAAM,QAAQ,CAAC,QAAQ,OAAO,OAAO,GAAG,SAAS,sBAAsB,QAAQ;AAG7E,iBAAS,mBAAmB,QAAQ;AAClC,iBAAO,SAAS,WAAW,KAAKC,OAAM,QAAQ;AAC5C,mBAAO,KAAK,QAAQ,YAAY,UAAU,CAAC,GAAG;AAAA,cAC5C;AAAA,cACA,SAAS,SAAS;AAAA,gBAChB,gBAAgB;AAAA,cAClB,IAAI,CAAC;AAAA,cACL;AAAA,cACA,MAAMA;AAAA,YACR,CAAC,CAAC;AAAA,UACJ;AAAA,QACF;AAEA,cAAM,UAAU,MAAM,IAAI,mBAAmB;AAE7C,cAAM,UAAU,SAAS,MAAM,IAAI,mBAAmB,IAAI;AAAA,MAC5D,CAAC;AAED,aAAO,UAAU;AAAA;AAAA;;;AC/JjB;AAAA;AAAA;AAEA,UAAI,gBAAgB;AAQpB,eAAS,YAAY,UAAU;AAC7B,YAAI,OAAO,aAAa,YAAY;AAClC,gBAAM,IAAI,UAAU,8BAA8B;AAAA,QACpD;AAEA,YAAI;AAEJ,aAAK,UAAU,IAAI,QAAQ,SAAS,gBAAgB,SAAS;AAC3D,2BAAiB;AAAA,QACnB,CAAC;AAED,YAAIC,SAAQ;AAGZ,aAAK,QAAQ,KAAK,SAAS,QAAQ;AACjC,cAAI,CAACA,OAAM;AAAY;AAEvB,cAAI;AACJ,cAAI,IAAIA,OAAM,WAAW;AAEzB,eAAK,IAAI,GAAG,IAAI,GAAG,KAAK;AACtB,YAAAA,OAAM,WAAW,CAAC,EAAE,MAAM;AAAA,UAC5B;AACA,UAAAA,OAAM,aAAa;AAAA,QACrB,CAAC;AAGD,aAAK,QAAQ,OAAO,SAAS,aAAa;AACxC,cAAI;AAEJ,cAAI,UAAU,IAAI,QAAQ,SAAS,SAAS;AAC1C,YAAAA,OAAM,UAAU,OAAO;AACvB,uBAAW;AAAA,UACb,CAAC,EAAE,KAAK,WAAW;AAEnB,kBAAQ,SAAS,SAAS,SAAS;AACjC,YAAAA,OAAM,YAAY,QAAQ;AAAA,UAC5B;AAEA,iBAAO;AAAA,QACT;AAEA,iBAAS,SAAS,OAAO,SAAS;AAChC,cAAIA,OAAM,QAAQ;AAEhB;AAAA,UACF;AAEA,UAAAA,OAAM,SAAS,IAAI,cAAc,OAAO;AACxC,yBAAeA,OAAM,MAAM;AAAA,QAC7B,CAAC;AAAA,MACH;AAKA,kBAAY,UAAU,mBAAmB,SAAS,mBAAmB;AACnE,YAAI,KAAK,QAAQ;AACf,gBAAM,KAAK;AAAA,QACb;AAAA,MACF;AAMA,kBAAY,UAAU,YAAY,SAAS,UAAU,UAAU;AAC7D,YAAI,KAAK,QAAQ;AACf,mBAAS,KAAK,MAAM;AACpB;AAAA,QACF;AAEA,YAAI,KAAK,YAAY;AACnB,eAAK,WAAW,KAAK,QAAQ;AAAA,QAC/B,OAAO;AACL,eAAK,aAAa,CAAC,QAAQ;AAAA,QAC7B;AAAA,MACF;AAMA,kBAAY,UAAU,cAAc,SAAS,YAAY,UAAU;AACjE,YAAI,CAAC,KAAK,YAAY;AACpB;AAAA,QACF;AACA,YAAIC,SAAQ,KAAK,WAAW,QAAQ,QAAQ;AAC5C,YAAIA,WAAU,IAAI;AAChB,eAAK,WAAW,OAAOA,QAAO,CAAC;AAAA,QACjC;AAAA,MACF;AAMA,kBAAY,SAAS,SAAS,SAAS;AACrC,YAAI;AACJ,YAAID,SAAQ,IAAI,YAAY,SAAS,SAASE,IAAG;AAC/C,mBAASA;AAAA,QACX,CAAC;AACD,eAAO;AAAA,UACL,OAAOF;AAAA,UACP;AAAA,QACF;AAAA,MACF;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACtHjB;AAAA;AAAA;AAsBA,aAAO,UAAU,SAAS,OAAO,UAAU;AACzC,eAAO,SAAS,KAAK,KAAK;AACxB,iBAAO,SAAS,MAAM,MAAM,GAAG;AAAA,QACjC;AAAA,MACF;AAAA;AAAA;;;AC1BA;AAAA;AAAA;AAEA,UAAI,QAAQ;AAQZ,aAAO,UAAU,SAAS,aAAa,SAAS;AAC9C,eAAO,MAAM,SAAS,OAAO,KAAM,QAAQ,iBAAiB;AAAA,MAC9D;AAAA;AAAA;;;ACZA;AAAA;AAAA;AAEA,UAAI,QAAQ;AACZ,UAAI,OAAO;AACX,UAAI,QAAQ;AACZ,UAAI,cAAc;AAClB,UAAI,WAAW;AAQf,eAAS,eAAe,eAAe;AACrC,YAAI,UAAU,IAAI,MAAM,aAAa;AACrC,YAAI,WAAW,KAAK,MAAM,UAAU,SAAS,OAAO;AAGpD,cAAM,OAAO,UAAU,MAAM,WAAW,OAAO;AAG/C,cAAM,OAAO,UAAU,OAAO;AAG9B,iBAAS,SAAS,SAAS,OAAO,gBAAgB;AAChD,iBAAO,eAAe,YAAY,eAAe,cAAc,CAAC;AAAA,QAClE;AAEA,eAAO;AAAA,MACT;AAGA,UAAIG,UAAQ,eAAe,QAAQ;AAGnC,MAAAA,QAAM,QAAQ;AAGd,MAAAA,QAAM,gBAAgB;AACtB,MAAAA,QAAM,cAAc;AACpB,MAAAA,QAAM,WAAW;AACjB,MAAAA,QAAM,UAAU,eAAsB;AACtC,MAAAA,QAAM,aAAa;AAGnB,MAAAA,QAAM,aAAa;AAGnB,MAAAA,QAAM,SAASA,QAAM;AAGrB,MAAAA,QAAM,MAAM,SAAS,IAAI,UAAU;AACjC,eAAO,QAAQ,IAAI,QAAQ;AAAA,MAC7B;AACA,MAAAA,QAAM,SAAS;AAGf,MAAAA,QAAM,eAAe;AAErB,aAAO,UAAUA;AAGjB,aAAO,QAAQ,UAAUA;AAAA;AAAA;;;AC/DzB,MAAAC,iBAAA;AAAA;AAAA,aAAO,UAAU;AAAA;AAAA;;;ACAjB;AAAA;AAOA,OAAC,WAAY;AACZ;AAEA,YAAI,SAAS,CAAC,EAAE;AAChB,YAAI,mBAAmB;AAEvB,iBAASC,eAAa;AACrB,cAAI,UAAU,CAAC;AAEf,mBAAS,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAK;AAC1C,gBAAI,MAAM,UAAU,CAAC;AACrB,gBAAI,CAAC;AAAK;AAEV,gBAAI,UAAU,OAAO;AAErB,gBAAI,YAAY,YAAY,YAAY,UAAU;AACjD,sBAAQ,KAAK,GAAG;AAAA,YACjB,WAAW,MAAM,QAAQ,GAAG,GAAG;AAC9B,kBAAI,IAAI,QAAQ;AACf,oBAAI,QAAQA,aAAW,MAAM,MAAM,GAAG;AACtC,oBAAI,OAAO;AACV,0BAAQ,KAAK,KAAK;AAAA,gBACnB;AAAA,cACD;AAAA,YACD,WAAW,YAAY,UAAU;AAChC,kBAAI,IAAI,aAAa,OAAO,UAAU,YAAY,CAAC,IAAI,SAAS,SAAS,EAAE,SAAS,eAAe,GAAG;AACrG,wBAAQ,KAAK,IAAI,SAAS,CAAC;AAC3B;AAAA,cACD;AAEA,uBAAS,OAAO,KAAK;AACpB,oBAAI,OAAO,KAAK,KAAK,GAAG,KAAK,IAAI,GAAG,GAAG;AACtC,0BAAQ,KAAK,GAAG;AAAA,gBACjB;AAAA,cACD;AAAA,YACD;AAAA,UACD;AAEA,iBAAO,QAAQ,KAAK,GAAG;AAAA,QACxB;AAEA,YAAI,OAAO,WAAW,eAAe,OAAO,SAAS;AACpD,UAAAA,aAAW,UAAUA;AACrB,iBAAO,UAAUA;AAAA,QAClB,WAAW,OAAO,WAAW,cAAc,OAAO,OAAO,QAAQ,YAAY,OAAO,KAAK;AAExF,iBAAO,cAAc,CAAC,GAAG,WAAY;AACpC,mBAAOA;AAAA,UACR,CAAC;AAAA,QACF,OAAO;AACN,iBAAO,aAAaA;AAAA,QACrB;AAAA,MACD,GAAE;AAAA;AAAA;;;AC3DF;AAAA;AAAA;AAYA,UAAI,MAAuC;AACzC,SAAC,WAAW;AACd;AAEA,cAAIC,WAAQ;AAMZ,cAAI,qBAAqB,OAAO,IAAI,eAAe;AACnD,cAAI,oBAAoB,OAAO,IAAI,cAAc;AACjD,cAAI,sBAAsB,OAAO,IAAI,gBAAgB;AACrD,cAAI,yBAAyB,OAAO,IAAI,mBAAmB;AAC3D,cAAI,sBAAsB,OAAO,IAAI,gBAAgB;AACrD,cAAI,sBAAsB,OAAO,IAAI,gBAAgB;AACrD,cAAI,qBAAqB,OAAO,IAAI,eAAe;AACnD,cAAI,yBAAyB,OAAO,IAAI,mBAAmB;AAC3D,cAAI,sBAAsB,OAAO,IAAI,gBAAgB;AACrD,cAAI,2BAA2B,OAAO,IAAI,qBAAqB;AAC/D,cAAI,kBAAkB,OAAO,IAAI,YAAY;AAC7C,cAAI,kBAAkB,OAAO,IAAI,YAAY;AAC7C,cAAI,uBAAuB,OAAO,IAAI,iBAAiB;AACvD,cAAI,wBAAwB,OAAO;AACnC,cAAI,uBAAuB;AAC3B,mBAAS,cAAc,eAAe;AACpC,gBAAI,kBAAkB,QAAQ,OAAO,kBAAkB,UAAU;AAC/D,qBAAO;AAAA,YACT;AAEA,gBAAI,gBAAgB,yBAAyB,cAAc,qBAAqB,KAAK,cAAc,oBAAoB;AAEvH,gBAAI,OAAO,kBAAkB,YAAY;AACvC,qBAAO;AAAA,YACT;AAEA,mBAAO;AAAA,UACT;AAEA,cAAI,uBAAuBA,SAAM;AAEjC,mBAAS,MAAMC,SAAQ;AACrB;AACE;AACE,yBAAS,QAAQ,UAAU,QAAQ,OAAO,IAAI,MAAM,QAAQ,IAAI,QAAQ,IAAI,CAAC,GAAG,QAAQ,GAAG,QAAQ,OAAO,SAAS;AACjH,uBAAK,QAAQ,CAAC,IAAI,UAAU,KAAK;AAAA,gBACnC;AAEA,6BAAa,SAASA,SAAQ,IAAI;AAAA,cACpC;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,aAAa,OAAOA,SAAQ,MAAM;AAGzC;AACE,kBAAIC,0BAAyB,qBAAqB;AAClD,kBAAI,QAAQA,wBAAuB,iBAAiB;AAEpD,kBAAI,UAAU,IAAI;AAChB,gBAAAD,WAAU;AACV,uBAAO,KAAK,OAAO,CAAC,KAAK,CAAC;AAAA,cAC5B;AAGA,kBAAI,iBAAiB,KAAK,IAAI,SAAU,MAAM;AAC5C,uBAAO,OAAO,IAAI;AAAA,cACpB,CAAC;AAED,6BAAe,QAAQ,cAAcA,OAAM;AAI3C,uBAAS,UAAU,MAAM,KAAK,QAAQ,KAAK,GAAG,SAAS,cAAc;AAAA,YACvE;AAAA,UACF;AAIA,cAAI,iBAAiB;AACrB,cAAI,qBAAqB;AACzB,cAAI,0BAA0B;AAE9B,cAAI,qBAAqB;AAIzB,cAAI,qBAAqB;AAEzB,cAAI;AAEJ;AACE,qCAAyB,OAAO,IAAI,wBAAwB;AAAA,UAC9D;AAEA,mBAAS,mBAAmB,MAAM;AAChC,gBAAI,OAAO,SAAS,YAAY,OAAO,SAAS,YAAY;AAC1D,qBAAO;AAAA,YACT;AAGA,gBAAI,SAAS,uBAAuB,SAAS,uBAAuB,sBAAuB,SAAS,0BAA0B,SAAS,uBAAuB,SAAS,4BAA4B,sBAAuB,SAAS,wBAAwB,kBAAmB,sBAAuB,yBAA0B;AAC7T,qBAAO;AAAA,YACT;AAEA,gBAAI,OAAO,SAAS,YAAY,SAAS,MAAM;AAC7C,kBAAI,KAAK,aAAa,mBAAmB,KAAK,aAAa,mBAAmB,KAAK,aAAa,uBAAuB,KAAK,aAAa,sBAAsB,KAAK,aAAa;AAAA;AAAA;AAAA;AAAA,cAIjL,KAAK,aAAa,0BAA0B,KAAK,gBAAgB,QAAW;AAC1E,uBAAO;AAAA,cACT;AAAA,YACF;AAEA,mBAAO;AAAA,UACT;AAEA,mBAAS,eAAe,WAAW,WAAW,aAAa;AACzD,gBAAI,cAAc,UAAU;AAE5B,gBAAI,aAAa;AACf,qBAAO;AAAA,YACT;AAEA,gBAAI,eAAe,UAAU,eAAe,UAAU,QAAQ;AAC9D,mBAAO,iBAAiB,KAAK,cAAc,MAAM,eAAe,MAAM;AAAA,UACxE;AAGA,mBAAS,eAAe,MAAM;AAC5B,mBAAO,KAAK,eAAe;AAAA,UAC7B;AAGA,mBAAS,yBAAyB,MAAM;AACtC,gBAAI,QAAQ,MAAM;AAEhB,qBAAO;AAAA,YACT;AAEA;AACE,kBAAI,OAAO,KAAK,QAAQ,UAAU;AAChC,sBAAM,mHAAwH;AAAA,cAChI;AAAA,YACF;AAEA,gBAAI,OAAO,SAAS,YAAY;AAC9B,qBAAO,KAAK,eAAe,KAAK,QAAQ;AAAA,YAC1C;AAEA,gBAAI,OAAO,SAAS,UAAU;AAC5B,qBAAO;AAAA,YACT;AAEA,oBAAQ,MAAM;AAAA,cACZ,KAAK;AACH,uBAAO;AAAA,cAET,KAAK;AACH,uBAAO;AAAA,cAET,KAAK;AACH,uBAAO;AAAA,cAET,KAAK;AACH,uBAAO;AAAA,cAET,KAAK;AACH,uBAAO;AAAA,cAET,KAAK;AACH,uBAAO;AAAA,YAEX;AAEA,gBAAI,OAAO,SAAS,UAAU;AAC5B,sBAAQ,KAAK,UAAU;AAAA,gBACrB,KAAK;AACH,sBAAI,UAAU;AACd,yBAAO,eAAe,OAAO,IAAI;AAAA,gBAEnC,KAAK;AACH,sBAAI,WAAW;AACf,yBAAO,eAAe,SAAS,QAAQ,IAAI;AAAA,gBAE7C,KAAK;AACH,yBAAO,eAAe,MAAM,KAAK,QAAQ,YAAY;AAAA,gBAEvD,KAAK;AACH,sBAAI,YAAY,KAAK,eAAe;AAEpC,sBAAI,cAAc,MAAM;AACtB,2BAAO;AAAA,kBACT;AAEA,yBAAO,yBAAyB,KAAK,IAAI,KAAK;AAAA,gBAEhD,KAAK,iBACH;AACE,sBAAI,gBAAgB;AACpB,sBAAI,UAAU,cAAc;AAC5B,sBAAIE,UAAO,cAAc;AAEzB,sBAAI;AACF,2BAAO,yBAAyBA,QAAK,OAAO,CAAC;AAAA,kBAC/C,SAASC,IAAG;AACV,2BAAO;AAAA,kBACT;AAAA,gBACF;AAAA,cAGJ;AAAA,YACF;AAEA,mBAAO;AAAA,UACT;AAEA,cAAIC,UAAS,OAAO;AAMpB,cAAI,gBAAgB;AACpB,cAAI;AACJ,cAAI;AACJ,cAAI;AACJ,cAAI;AACJ,cAAI;AACJ,cAAI;AACJ,cAAI;AAEJ,mBAAS,cAAc;AAAA,UAAC;AAExB,sBAAY,qBAAqB;AACjC,mBAAS,cAAc;AACrB;AACE,kBAAI,kBAAkB,GAAG;AAEvB,0BAAU,QAAQ;AAClB,2BAAW,QAAQ;AACnB,2BAAW,QAAQ;AACnB,4BAAY,QAAQ;AACpB,4BAAY,QAAQ;AACpB,qCAAqB,QAAQ;AAC7B,+BAAe,QAAQ;AAEvB,oBAAI,QAAQ;AAAA,kBACV,cAAc;AAAA,kBACd,YAAY;AAAA,kBACZ,OAAO;AAAA,kBACP,UAAU;AAAA,gBACZ;AAEA,uBAAO,iBAAiB,SAAS;AAAA,kBAC/B,MAAM;AAAA,kBACN,KAAK;AAAA,kBACL,MAAM;AAAA,kBACN,OAAO;AAAA,kBACP,OAAO;AAAA,kBACP,gBAAgB;AAAA,kBAChB,UAAU;AAAA,gBACZ,CAAC;AAAA,cAEH;AAEA;AAAA,YACF;AAAA,UACF;AACA,mBAAS,eAAe;AACtB;AACE;AAEA,kBAAI,kBAAkB,GAAG;AAEvB,oBAAI,QAAQ;AAAA,kBACV,cAAc;AAAA,kBACd,YAAY;AAAA,kBACZ,UAAU;AAAA,gBACZ;AAEA,uBAAO,iBAAiB,SAAS;AAAA,kBAC/B,KAAKA,QAAO,CAAC,GAAG,OAAO;AAAA,oBACrB,OAAO;AAAA,kBACT,CAAC;AAAA,kBACD,MAAMA,QAAO,CAAC,GAAG,OAAO;AAAA,oBACtB,OAAO;AAAA,kBACT,CAAC;AAAA,kBACD,MAAMA,QAAO,CAAC,GAAG,OAAO;AAAA,oBACtB,OAAO;AAAA,kBACT,CAAC;AAAA,kBACD,OAAOA,QAAO,CAAC,GAAG,OAAO;AAAA,oBACvB,OAAO;AAAA,kBACT,CAAC;AAAA,kBACD,OAAOA,QAAO,CAAC,GAAG,OAAO;AAAA,oBACvB,OAAO;AAAA,kBACT,CAAC;AAAA,kBACD,gBAAgBA,QAAO,CAAC,GAAG,OAAO;AAAA,oBAChC,OAAO;AAAA,kBACT,CAAC;AAAA,kBACD,UAAUA,QAAO,CAAC,GAAG,OAAO;AAAA,oBAC1B,OAAO;AAAA,kBACT,CAAC;AAAA,gBACH,CAAC;AAAA,cAEH;AAEA,kBAAI,gBAAgB,GAAG;AACrB,sBAAM,8EAAmF;AAAA,cAC3F;AAAA,YACF;AAAA,UACF;AAEA,cAAI,yBAAyB,qBAAqB;AAClD,cAAIC;AACJ,mBAAS,8BAA8BC,OAAM,QAAQ,SAAS;AAC5D;AACE,kBAAID,YAAW,QAAW;AAExB,oBAAI;AACF,wBAAM,MAAM;AAAA,gBACd,SAASF,IAAG;AACV,sBAAII,SAAQJ,GAAE,MAAM,KAAK,EAAE,MAAM,cAAc;AAC/C,kBAAAE,UAASE,UAASA,OAAM,CAAC,KAAK;AAAA,gBAChC;AAAA,cACF;AAGA,qBAAO,OAAOF,UAASC;AAAA,YACzB;AAAA,UACF;AACA,cAAI,UAAU;AACd,cAAI;AAEJ;AACE,gBAAI,kBAAkB,OAAO,YAAY,aAAa,UAAU;AAChE,kCAAsB,IAAI,gBAAgB;AAAA,UAC5C;AAEA,mBAAS,6BAA6B,IAAI,WAAW;AAEnD,gBAAK,CAAC,MAAM,SAAS;AACnB,qBAAO;AAAA,YACT;AAEA;AACE,kBAAIE,SAAQ,oBAAoB,IAAI,EAAE;AAEtC,kBAAIA,WAAU,QAAW;AACvB,uBAAOA;AAAA,cACT;AAAA,YACF;AAEA,gBAAI;AACJ,sBAAU;AACV,gBAAI,4BAA4B,MAAM;AAEtC,kBAAM,oBAAoB;AAC1B,gBAAI;AAEJ;AACE,mCAAqB,uBAAuB;AAG5C,qCAAuB,UAAU;AACjC,0BAAY;AAAA,YACd;AAEA,gBAAI;AAEF,kBAAI,WAAW;AAEb,oBAAI,OAAO,WAAY;AACrB,wBAAM,MAAM;AAAA,gBACd;AAGA,uBAAO,eAAe,KAAK,WAAW,SAAS;AAAA,kBAC7C,KAAK,WAAY;AAGf,0BAAM,MAAM;AAAA,kBACd;AAAA,gBACF,CAAC;AAED,oBAAI,OAAO,YAAY,YAAY,QAAQ,WAAW;AAGpD,sBAAI;AACF,4BAAQ,UAAU,MAAM,CAAC,CAAC;AAAA,kBAC5B,SAASL,IAAG;AACV,8BAAUA;AAAA,kBACZ;AAEA,0BAAQ,UAAU,IAAI,CAAC,GAAG,IAAI;AAAA,gBAChC,OAAO;AACL,sBAAI;AACF,yBAAK,KAAK;AAAA,kBACZ,SAASA,IAAG;AACV,8BAAUA;AAAA,kBACZ;AAEA,qBAAG,KAAK,KAAK,SAAS;AAAA,gBACxB;AAAA,cACF,OAAO;AACL,oBAAI;AACF,wBAAM,MAAM;AAAA,gBACd,SAASA,IAAG;AACV,4BAAUA;AAAA,gBACZ;AAEA,mBAAG;AAAA,cACL;AAAA,YACF,SAAS,QAAQ;AAEf,kBAAI,UAAU,WAAW,OAAO,OAAO,UAAU,UAAU;AAGzD,oBAAI,cAAc,OAAO,MAAM,MAAM,IAAI;AACzC,oBAAI,eAAe,QAAQ,MAAM,MAAM,IAAI;AAC3C,oBAAIM,KAAI,YAAY,SAAS;AAC7B,oBAAIC,KAAI,aAAa,SAAS;AAE9B,uBAAOD,MAAK,KAAKC,MAAK,KAAK,YAAYD,EAAC,MAAM,aAAaC,EAAC,GAAG;AAO7D,kBAAAA;AAAA,gBACF;AAEA,uBAAOD,MAAK,KAAKC,MAAK,GAAGD,MAAKC,MAAK;AAGjC,sBAAI,YAAYD,EAAC,MAAM,aAAaC,EAAC,GAAG;AAMtC,wBAAID,OAAM,KAAKC,OAAM,GAAG;AACtB,yBAAG;AACD,wBAAAD;AACA,wBAAAC;AAGA,4BAAIA,KAAI,KAAK,YAAYD,EAAC,MAAM,aAAaC,EAAC,GAAG;AAE/C,8BAAI,SAAS,OAAO,YAAYD,EAAC,EAAE,QAAQ,YAAY,MAAM;AAK7D,8BAAI,GAAG,eAAe,OAAO,SAAS,aAAa,GAAG;AACpD,qCAAS,OAAO,QAAQ,eAAe,GAAG,WAAW;AAAA,0BACvD;AAEA;AACE,gCAAI,OAAO,OAAO,YAAY;AAC5B,kDAAoB,IAAI,IAAI,MAAM;AAAA,4BACpC;AAAA,0BACF;AAGA,iCAAO;AAAA,wBACT;AAAA,sBACF,SAASA,MAAK,KAAKC,MAAK;AAAA,oBAC1B;AAEA;AAAA,kBACF;AAAA,gBACF;AAAA,cACF;AAAA,YACF,UAAE;AACA,wBAAU;AAEV;AACE,uCAAuB,UAAU;AACjC,6BAAa;AAAA,cACf;AAEA,oBAAM,oBAAoB;AAAA,YAC5B;AAGA,gBAAIJ,QAAO,KAAK,GAAG,eAAe,GAAG,OAAO;AAC5C,gBAAI,iBAAiBA,QAAO,8BAA8BA,KAAI,IAAI;AAElE;AACE,kBAAI,OAAO,OAAO,YAAY;AAC5B,oCAAoB,IAAI,IAAI,cAAc;AAAA,cAC5C;AAAA,YACF;AAEA,mBAAO;AAAA,UACT;AACA,mBAAS,+BAA+B,IAAI,QAAQ,SAAS;AAC3D;AACE,qBAAO,6BAA6B,IAAI,KAAK;AAAA,YAC/C;AAAA,UACF;AAEA,mBAAS,gBAAgBK,YAAW;AAClC,gBAAI,YAAYA,WAAU;AAC1B,mBAAO,CAAC,EAAE,aAAa,UAAU;AAAA,UACnC;AAEA,mBAAS,qCAAqC,MAAM,QAAQ,SAAS;AAEnE,gBAAI,QAAQ,MAAM;AAChB,qBAAO;AAAA,YACT;AAEA,gBAAI,OAAO,SAAS,YAAY;AAC9B;AACE,uBAAO,6BAA6B,MAAM,gBAAgB,IAAI,CAAC;AAAA,cACjE;AAAA,YACF;AAEA,gBAAI,OAAO,SAAS,UAAU;AAC5B,qBAAO,8BAA8B,IAAI;AAAA,YAC3C;AAEA,oBAAQ,MAAM;AAAA,cACZ,KAAK;AACH,uBAAO,8BAA8B,UAAU;AAAA,cAEjD,KAAK;AACH,uBAAO,8BAA8B,cAAc;AAAA,YACvD;AAEA,gBAAI,OAAO,SAAS,UAAU;AAC5B,sBAAQ,KAAK,UAAU;AAAA,gBACrB,KAAK;AACH,yBAAO,+BAA+B,KAAK,MAAM;AAAA,gBAEnD,KAAK;AAEH,yBAAO,qCAAqC,KAAK,MAAM,QAAQ,OAAO;AAAA,gBAExE,KAAK,iBACH;AACE,sBAAI,gBAAgB;AACpB,sBAAI,UAAU,cAAc;AAC5B,sBAAIT,UAAO,cAAc;AAEzB,sBAAI;AAEF,2BAAO,qCAAqCA,QAAK,OAAO,GAAG,QAAQ,OAAO;AAAA,kBAC5E,SAASC,IAAG;AAAA,kBAAC;AAAA,gBACf;AAAA,cACJ;AAAA,YACF;AAEA,mBAAO;AAAA,UACT;AAEA,cAAIS,kBAAiB,OAAO,UAAU;AAEtC,cAAI,qBAAqB,CAAC;AAC1B,cAAI,yBAAyB,qBAAqB;AAElD,mBAAS,8BAA8B,SAAS;AAC9C;AACE,kBAAI,SAAS;AACX,oBAAI,QAAQ,QAAQ;AACpB,oBAAI,QAAQ,qCAAqC,QAAQ,MAAM,QAAQ,SAAS,QAAQ,MAAM,OAAO,IAAI;AACzG,uCAAuB,mBAAmB,KAAK;AAAA,cACjD,OAAO;AACL,uCAAuB,mBAAmB,IAAI;AAAA,cAChD;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,eAAe,WAAW,QAAQC,WAAU,eAAe,SAAS;AAC3E;AAEE,kBAAI,MAAM,SAAS,KAAK,KAAKD,eAAc;AAE3C,uBAAS,gBAAgB,WAAW;AAClC,oBAAI,IAAI,WAAW,YAAY,GAAG;AAChC,sBAAI,UAAU;AAId,sBAAI;AAGF,wBAAI,OAAO,UAAU,YAAY,MAAM,YAAY;AAEjD,0BAAI,MAAM,OAAO,iBAAiB,iBAAiB,OAAOC,YAAW,YAAY,eAAe,+FAAoG,OAAO,UAAU,YAAY,IAAI,iGAAsG;AAC3U,0BAAI,OAAO;AACX,4BAAM;AAAA,oBACR;AAEA,8BAAU,UAAU,YAAY,EAAE,QAAQ,cAAc,eAAeA,WAAU,MAAM,8CAA8C;AAAA,kBACvI,SAAS,IAAI;AACX,8BAAU;AAAA,kBACZ;AAEA,sBAAI,WAAW,EAAE,mBAAmB,QAAQ;AAC1C,kDAA8B,OAAO;AAErC,0BAAM,4RAAqT,iBAAiB,eAAeA,WAAU,cAAc,OAAO,OAAO;AAEjY,kDAA8B,IAAI;AAAA,kBACpC;AAEA,sBAAI,mBAAmB,SAAS,EAAE,QAAQ,WAAW,qBAAqB;AAGxE,uCAAmB,QAAQ,OAAO,IAAI;AACtC,kDAA8B,OAAO;AAErC,0BAAM,sBAAsBA,WAAU,QAAQ,OAAO;AAErD,kDAA8B,IAAI;AAAA,kBACpC;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAEA,cAAI,cAAc,MAAM;AAExB,mBAASC,SAAQC,IAAG;AAClB,mBAAO,YAAYA,EAAC;AAAA,UACtB;AAYA,mBAAS,SAAS,OAAO;AACvB;AAEE,kBAAI,iBAAiB,OAAO,WAAW,cAAc,OAAO;AAC5D,kBAAI,OAAO,kBAAkB,MAAM,OAAO,WAAW,KAAK,MAAM,YAAY,QAAQ;AACpF,qBAAO;AAAA,YACT;AAAA,UACF;AAGA,mBAAS,kBAAkB,OAAO;AAChC;AACE,kBAAI;AACF,mCAAmB,KAAK;AACxB,uBAAO;AAAA,cACT,SAASC,IAAG;AACV,uBAAO;AAAA,cACT;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,mBAAmB,OAAO;AAwBjC,mBAAO,KAAK;AAAA,UACd;AACA,mBAAS,uBAAuB,OAAO;AACrC;AACE,kBAAI,kBAAkB,KAAK,GAAG;AAC5B,sBAAM,mHAAwH,SAAS,KAAK,CAAC;AAE7I,uBAAO,mBAAmB,KAAK;AAAA,cACjC;AAAA,YACF;AAAA,UACF;AAEA,cAAI,oBAAoB,qBAAqB;AAC7C,cAAI,iBAAiB;AAAA,YACnB,KAAK;AAAA,YACL,KAAK;AAAA,YACL,QAAQ;AAAA,YACR,UAAU;AAAA,UACZ;AACA,cAAI;AACJ,cAAI;AACJ,cAAI;AAEJ;AACE,qCAAyB,CAAC;AAAA,UAC5B;AAEA,mBAAS,YAAY,QAAQ;AAC3B;AACE,kBAAIJ,gBAAe,KAAK,QAAQ,KAAK,GAAG;AACtC,oBAAI,SAAS,OAAO,yBAAyB,QAAQ,KAAK,EAAE;AAE5D,oBAAI,UAAU,OAAO,gBAAgB;AACnC,yBAAO;AAAA,gBACT;AAAA,cACF;AAAA,YACF;AAEA,mBAAO,OAAO,QAAQ;AAAA,UACxB;AAEA,mBAAS,YAAY,QAAQ;AAC3B;AACE,kBAAIA,gBAAe,KAAK,QAAQ,KAAK,GAAG;AACtC,oBAAI,SAAS,OAAO,yBAAyB,QAAQ,KAAK,EAAE;AAE5D,oBAAI,UAAU,OAAO,gBAAgB;AACnC,yBAAO;AAAA,gBACT;AAAA,cACF;AAAA,YACF;AAEA,mBAAO,OAAO,QAAQ;AAAA,UACxB;AAEA,mBAAS,qCAAqC,QAAQK,OAAM;AAC1D;AACE,kBAAI,OAAO,OAAO,QAAQ,YAAY,kBAAkB,WAAWA,SAAQ,kBAAkB,QAAQ,cAAcA,OAAM;AACvH,oBAAI,gBAAgB,yBAAyB,kBAAkB,QAAQ,IAAI;AAE3E,oBAAI,CAAC,uBAAuB,aAAa,GAAG;AAC1C,wBAAM,6VAAsX,yBAAyB,kBAAkB,QAAQ,IAAI,GAAG,OAAO,GAAG;AAEhc,yCAAuB,aAAa,IAAI;AAAA,gBAC1C;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,2BAA2B,OAAO,aAAa;AACtD;AACE,kBAAI,wBAAwB,WAAY;AACtC,oBAAI,CAAC,4BAA4B;AAC/B,+CAA6B;AAE7B,wBAAM,6OAA4P,WAAW;AAAA,gBAC/Q;AAAA,cACF;AAEA,oCAAsB,iBAAiB;AACvC,qBAAO,eAAe,OAAO,OAAO;AAAA,gBAClC,KAAK;AAAA,gBACL,cAAc;AAAA,cAChB,CAAC;AAAA,YACH;AAAA,UACF;AAEA,mBAAS,2BAA2B,OAAO,aAAa;AACtD;AACE,kBAAI,wBAAwB,WAAY;AACtC,oBAAI,CAAC,4BAA4B;AAC/B,+CAA6B;AAE7B,wBAAM,6OAA4P,WAAW;AAAA,gBAC/Q;AAAA,cACF;AAEA,oCAAsB,iBAAiB;AACvC,qBAAO,eAAe,OAAO,OAAO;AAAA,gBAClC,KAAK;AAAA,gBACL,cAAc;AAAA,cAChB,CAAC;AAAA,YACH;AAAA,UACF;AAuBA,cAAI,eAAe,SAAU,MAAM,KAAK,KAAKA,OAAM,QAAQ,OAAO,OAAO;AACvE,gBAAI,UAAU;AAAA;AAAA,cAEZ,UAAU;AAAA;AAAA,cAEV;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA;AAAA,cAEA,QAAQ;AAAA,YACV;AAEA;AAKE,sBAAQ,SAAS,CAAC;AAKlB,qBAAO,eAAe,QAAQ,QAAQ,aAAa;AAAA,gBACjD,cAAc;AAAA,gBACd,YAAY;AAAA,gBACZ,UAAU;AAAA,gBACV,OAAO;AAAA,cACT,CAAC;AAED,qBAAO,eAAe,SAAS,SAAS;AAAA,gBACtC,cAAc;AAAA,gBACd,YAAY;AAAA,gBACZ,UAAU;AAAA,gBACV,OAAOA;AAAA,cACT,CAAC;AAGD,qBAAO,eAAe,SAAS,WAAW;AAAA,gBACxC,cAAc;AAAA,gBACd,YAAY;AAAA,gBACZ,UAAU;AAAA,gBACV,OAAO;AAAA,cACT,CAAC;AAED,kBAAI,OAAO,QAAQ;AACjB,uBAAO,OAAO,QAAQ,KAAK;AAC3B,uBAAO,OAAO,OAAO;AAAA,cACvB;AAAA,YACF;AAEA,mBAAO;AAAA,UACT;AAQA,mBAAS,OAAO,MAAM,QAAQ,UAAU,QAAQA,OAAM;AACpD;AACE,kBAAI;AAEJ,kBAAI,QAAQ,CAAC;AACb,kBAAI,MAAM;AACV,kBAAI,MAAM;AAOV,kBAAI,aAAa,QAAW;AAC1B;AACE,yCAAuB,QAAQ;AAAA,gBACjC;AAEA,sBAAM,KAAK;AAAA,cACb;AAEA,kBAAI,YAAY,MAAM,GAAG;AACvB;AACE,yCAAuB,OAAO,GAAG;AAAA,gBACnC;AAEA,sBAAM,KAAK,OAAO;AAAA,cACpB;AAEA,kBAAI,YAAY,MAAM,GAAG;AACvB,sBAAM,OAAO;AACb,qDAAqC,QAAQA,KAAI;AAAA,cACnD;AAGA,mBAAK,YAAY,QAAQ;AACvB,oBAAIL,gBAAe,KAAK,QAAQ,QAAQ,KAAK,CAAC,eAAe,eAAe,QAAQ,GAAG;AACrF,wBAAM,QAAQ,IAAI,OAAO,QAAQ;AAAA,gBACnC;AAAA,cACF;AAGA,kBAAI,QAAQ,KAAK,cAAc;AAC7B,oBAAIM,gBAAe,KAAK;AAExB,qBAAK,YAAYA,eAAc;AAC7B,sBAAI,MAAM,QAAQ,MAAM,QAAW;AACjC,0BAAM,QAAQ,IAAIA,cAAa,QAAQ;AAAA,kBACzC;AAAA,gBACF;AAAA,cACF;AAEA,kBAAI,OAAO,KAAK;AACd,oBAAI,cAAc,OAAO,SAAS,aAAa,KAAK,eAAe,KAAK,QAAQ,YAAY;AAE5F,oBAAI,KAAK;AACP,6CAA2B,OAAO,WAAW;AAAA,gBAC/C;AAEA,oBAAI,KAAK;AACP,6CAA2B,OAAO,WAAW;AAAA,gBAC/C;AAAA,cACF;AAEA,qBAAO,aAAa,MAAM,KAAK,KAAKD,OAAM,QAAQ,kBAAkB,SAAS,KAAK;AAAA,YACpF;AAAA,UACF;AAEA,cAAI,sBAAsB,qBAAqB;AAC/C,cAAI,2BAA2B,qBAAqB;AAEpD,mBAAS,gCAAgC,SAAS;AAChD;AACE,kBAAI,SAAS;AACX,oBAAI,QAAQ,QAAQ;AACpB,oBAAI,QAAQ,qCAAqC,QAAQ,MAAM,QAAQ,SAAS,QAAQ,MAAM,OAAO,IAAI;AACzG,yCAAyB,mBAAmB,KAAK;AAAA,cACnD,OAAO;AACL,yCAAyB,mBAAmB,IAAI;AAAA,cAClD;AAAA,YACF;AAAA,UACF;AAEA,cAAI;AAEJ;AACE,4CAAgC;AAAA,UAClC;AAUA,mBAASE,gBAAe,QAAQ;AAC9B;AACE,qBAAO,OAAO,WAAW,YAAY,WAAW,QAAQ,OAAO,aAAa;AAAA,YAC9E;AAAA,UACF;AAEA,mBAAS,8BAA8B;AACrC;AACE,kBAAI,oBAAoB,SAAS;AAC/B,oBAAIb,QAAO,yBAAyB,oBAAoB,QAAQ,IAAI;AAEpE,oBAAIA,OAAM;AACR,yBAAO,qCAAqCA,QAAO;AAAA,gBACrD;AAAA,cACF;AAEA,qBAAO;AAAA,YACT;AAAA,UACF;AAEA,mBAAS,2BAA2B,QAAQ;AAC1C;AACE,kBAAI,WAAW,QAAW;AACxB,oBAAI,WAAW,OAAO,SAAS,QAAQ,aAAa,EAAE;AACtD,oBAAI,aAAa,OAAO;AACxB,uBAAO,4BAA4B,WAAW,MAAM,aAAa;AAAA,cACnE;AAEA,qBAAO;AAAA,YACT;AAAA,UACF;AAQA,cAAI,wBAAwB,CAAC;AAE7B,mBAAS,6BAA6B,YAAY;AAChD;AACE,kBAAI,OAAO,4BAA4B;AAEvC,kBAAI,CAAC,MAAM;AACT,oBAAI,aAAa,OAAO,eAAe,WAAW,aAAa,WAAW,eAAe,WAAW;AAEpG,oBAAI,YAAY;AACd,yBAAO,gDAAgD,aAAa;AAAA,gBACtE;AAAA,cACF;AAEA,qBAAO;AAAA,YACT;AAAA,UACF;AAcA,mBAAS,oBAAoB,SAAS,YAAY;AAChD;AACE,kBAAI,CAAC,QAAQ,UAAU,QAAQ,OAAO,aAAa,QAAQ,OAAO,MAAM;AACtE;AAAA,cACF;AAEA,sBAAQ,OAAO,YAAY;AAC3B,kBAAI,4BAA4B,6BAA6B,UAAU;AAEvE,kBAAI,sBAAsB,yBAAyB,GAAG;AACpD;AAAA,cACF;AAEA,oCAAsB,yBAAyB,IAAI;AAInD,kBAAI,aAAa;AAEjB,kBAAI,WAAW,QAAQ,UAAU,QAAQ,WAAW,oBAAoB,SAAS;AAE/E,6BAAa,iCAAiC,yBAAyB,QAAQ,OAAO,IAAI,IAAI;AAAA,cAChG;AAEA,8CAAgC,OAAO;AAEvC,oBAAM,6HAAkI,2BAA2B,UAAU;AAE7K,8CAAgC,IAAI;AAAA,YACtC;AAAA,UACF;AAYA,mBAAS,kBAAkBc,OAAM,YAAY;AAC3C;AACE,kBAAI,OAAOA,UAAS,UAAU;AAC5B;AAAA,cACF;AAEA,kBAAIN,SAAQM,KAAI,GAAG;AACjB,yBAAS,IAAI,GAAG,IAAIA,MAAK,QAAQ,KAAK;AACpC,sBAAI,QAAQA,MAAK,CAAC;AAElB,sBAAID,gBAAe,KAAK,GAAG;AACzB,wCAAoB,OAAO,UAAU;AAAA,kBACvC;AAAA,gBACF;AAAA,cACF,WAAWA,gBAAeC,KAAI,GAAG;AAE/B,oBAAIA,MAAK,QAAQ;AACf,kBAAAA,MAAK,OAAO,YAAY;AAAA,gBAC1B;AAAA,cACF,WAAWA,OAAM;AACf,oBAAI,aAAa,cAAcA,KAAI;AAEnC,oBAAI,OAAO,eAAe,YAAY;AAGpC,sBAAI,eAAeA,MAAK,SAAS;AAC/B,wBAAI,WAAW,WAAW,KAAKA,KAAI;AACnC,wBAAI;AAEJ,2BAAO,EAAE,OAAO,SAAS,KAAK,GAAG,MAAM;AACrC,0BAAID,gBAAe,KAAK,KAAK,GAAG;AAC9B,4CAAoB,KAAK,OAAO,UAAU;AAAA,sBAC5C;AAAA,oBACF;AAAA,kBACF;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAAA,UACF;AASA,mBAAS,kBAAkB,SAAS;AAClC;AACE,kBAAI,OAAO,QAAQ;AAEnB,kBAAI,SAAS,QAAQ,SAAS,UAAa,OAAO,SAAS,UAAU;AACnE;AAAA,cACF;AAEA,kBAAIE;AAEJ,kBAAI,OAAO,SAAS,YAAY;AAC9B,gBAAAA,aAAY,KAAK;AAAA,cACnB,WAAW,OAAO,SAAS,aAAa,KAAK,aAAa;AAAA;AAAA,cAE1D,KAAK,aAAa,kBAAkB;AAClC,gBAAAA,aAAY,KAAK;AAAA,cACnB,OAAO;AACL;AAAA,cACF;AAEA,kBAAIA,YAAW;AAEb,oBAAIf,QAAO,yBAAyB,IAAI;AACxC,+BAAee,YAAW,QAAQ,OAAO,QAAQf,OAAM,OAAO;AAAA,cAChE,WAAW,KAAK,cAAc,UAAa,CAAC,+BAA+B;AACzE,gDAAgC;AAEhC,oBAAI,QAAQ,yBAAyB,IAAI;AAEzC,sBAAM,uGAAuG,SAAS,SAAS;AAAA,cACjI;AAEA,kBAAI,OAAO,KAAK,oBAAoB,cAAc,CAAC,KAAK,gBAAgB,sBAAsB;AAC5F,sBAAM,4HAAiI;AAAA,cACzI;AAAA,YACF;AAAA,UACF;AAOA,mBAAS,sBAAsB,UAAU;AACvC;AACE,kBAAI,OAAO,OAAO,KAAK,SAAS,KAAK;AAErC,uBAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,oBAAI,MAAM,KAAK,CAAC;AAEhB,oBAAI,QAAQ,cAAc,QAAQ,OAAO;AACvC,kDAAgC,QAAQ;AAExC,wBAAM,4GAAiH,GAAG;AAE1H,kDAAgC,IAAI;AACpC;AAAA,gBACF;AAAA,cACF;AAEA,kBAAI,SAAS,QAAQ,MAAM;AACzB,gDAAgC,QAAQ;AAExC,sBAAM,uDAAuD;AAE7D,gDAAgC,IAAI;AAAA,cACtC;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,kBAAkB,MAAM,OAAO,KAAK,kBAAkB,QAAQW,OAAM;AAC3E;AACE,kBAAI,YAAY,mBAAmB,IAAI;AAGvC,kBAAI,CAAC,WAAW;AACd,oBAAI,OAAO;AAEX,oBAAI,SAAS,UAAa,OAAO,SAAS,YAAY,SAAS,QAAQ,OAAO,KAAK,IAAI,EAAE,WAAW,GAAG;AACrG,0BAAQ;AAAA,gBACV;AAEA,oBAAI,aAAa,2BAA2B,MAAM;AAElD,oBAAI,YAAY;AACd,0BAAQ;AAAA,gBACV,OAAO;AACL,0BAAQ,4BAA4B;AAAA,gBACtC;AAEA,oBAAI;AAEJ,oBAAI,SAAS,MAAM;AACjB,+BAAa;AAAA,gBACf,WAAWH,SAAQ,IAAI,GAAG;AACxB,+BAAa;AAAA,gBACf,WAAW,SAAS,UAAa,KAAK,aAAa,oBAAoB;AACrE,+BAAa,OAAO,yBAAyB,KAAK,IAAI,KAAK,aAAa;AACxE,yBAAO;AAAA,gBACT,OAAO;AACL,+BAAa,OAAO;AAAA,gBACtB;AAEA,sBAAM,2IAAqJ,YAAY,IAAI;AAAA,cAC7K;AAEA,kBAAI,UAAU,OAAO,MAAM,OAAO,KAAK,QAAQG,KAAI;AAGnD,kBAAI,WAAW,MAAM;AACnB,uBAAO;AAAA,cACT;AAOA,kBAAI,WAAW;AACb,oBAAI,WAAW,MAAM;AAErB,oBAAI,aAAa,QAAW;AAC1B,sBAAI,kBAAkB;AACpB,wBAAIH,SAAQ,QAAQ,GAAG;AACrB,+BAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK;AACxC,0CAAkB,SAAS,CAAC,GAAG,IAAI;AAAA,sBACrC;AAEA,0BAAI,OAAO,QAAQ;AACjB,+BAAO,OAAO,QAAQ;AAAA,sBACxB;AAAA,oBACF,OAAO;AACL,4BAAM,sJAAgK;AAAA,oBACxK;AAAA,kBACF,OAAO;AACL,sCAAkB,UAAU,IAAI;AAAA,kBAClC;AAAA,gBACF;AAAA,cACF;AAEA,kBAAI,SAAS,qBAAqB;AAChC,sCAAsB,OAAO;AAAA,cAC/B,OAAO;AACL,kCAAkB,OAAO;AAAA,cAC3B;AAEA,qBAAO;AAAA,YACT;AAAA,UACF;AAKA,mBAAS,wBAAwB,MAAM,OAAO,KAAK;AACjD;AACE,qBAAO,kBAAkB,MAAM,OAAO,KAAK,IAAI;AAAA,YACjD;AAAA,UACF;AACA,mBAAS,yBAAyB,MAAM,OAAO,KAAK;AAClD;AACE,qBAAO,kBAAkB,MAAM,OAAO,KAAK,KAAK;AAAA,YAClD;AAAA,UACF;AAEA,cAAIQ,OAAO;AAGX,cAAI,OAAQ;AAEZ,kBAAQ,WAAW;AACnB,kBAAQ,MAAMA;AACd,kBAAQ,OAAO;AAAA,QACb,GAAG;AAAA,MACL;AAAA;AAAA;;;ACjyCA;AAAA;AAAA;AAEA,UAAI,OAAuC;AACzC,eAAO,UAAU;AAAA,MACnB,OAAO;AACL,eAAO,UAAU;AAAA,MACnB;AAAA;AAAA;;;;;;;;;;ACEO,iBAASC,QAAO,MAAM;AAC5B,cAAI,GAAG,GAAG,KAAK;AAEf,eAAK,IAAI,GAAG,MAAM,UAAU,QAAQ,IAAI,KAAK,KAAK;AACjD,kBAAM,UAAU,CAAC;AACjB,iBAAK,KAAK,KAAK;AACd,mBAAK,CAAC,IAAI,IAAI,CAAC;YAClB;UACA;AACC,iBAAO;QACR;AAIO,YAAIC,WAAS,OAAO,UAAW,WAAY;AACjD,mBAAS,IAAI;UAAA;AACb,iBAAO,SAAU,OAAO;AACvB,cAAE,YAAY;AACd,mBAAO,IAAI,EAAC;UACd;QACA,EAAC;AAKM,iBAAS,KAAK,IAAI,KAAK;AAC7B,cAAIC,SAAQ,MAAM,UAAU;AAE5B,cAAI,GAAG,MAAM;AACZ,mBAAO,GAAG,KAAK,MAAM,IAAIA,OAAM,KAAK,WAAW,CAAC,CAAC;UACnD;AAEC,cAAI,OAAOA,OAAM,KAAK,WAAW,CAAC;AAElC,iBAAO,WAAY;AAClB,mBAAO,GAAG,MAAM,KAAK,KAAK,SAAS,KAAK,OAAOA,OAAM,KAAK,SAAS,CAAC,IAAI,SAAS;UACnF;QACA;AAIO,YAAI,SAAS;AAIb,iBAAS,MAAM,KAAK;AAC1B,cAAI,EAAE,iBAAiB,MAAM;AAC5B,gBAAI,aAAa,IAAI,EAAE;UACzB;AACC,iBAAO,IAAI;QACZ;AASO,iBAAS,SAAS,IAAIC,OAAM,SAAS;AAC3C,cAAI,MAAM,MAAM,WAAW;AAE3B,kBAAQ,WAAY;AAEnB,mBAAO;AACP,gBAAI,MAAM;AACT,wBAAU,MAAM,SAAS,IAAI;AAC7B,qBAAO;YACV;UACA;AAEC,sBAAY,WAAY;AACvB,gBAAI,MAAM;AAET,qBAAO;YAEV,OAAS;AAEN,iBAAG,MAAM,SAAS,SAAS;AAC3B,yBAAW,OAAOA,KAAI;AACtB,qBAAO;YACV;UACA;AAEC,iBAAO;QACR;AAMO,iBAAS,QAAQC,IAAGC,QAAO,YAAY;AAC7C,cAAIC,OAAMD,OAAM,CAAC,GACbE,OAAMF,OAAM,CAAC,GACbG,KAAIF,OAAMC;AACd,iBAAOH,OAAME,QAAO,aAAaF,OAAMA,KAAIG,QAAOC,KAAIA,MAAKA,KAAID;QAChE;AAIO,iBAAS,UAAU;AAAE,iBAAO;QAAM;AAMlC,iBAAS,UAAU,KAAK,WAAW;AACzC,cAAI,cAAc,OAAO;AAAE,mBAAO;UAAI;AACtC,cAAIE,OAAM,KAAK,IAAI,IAAI,cAAc,SAAY,IAAI,SAAS;AAC9D,iBAAO,KAAK,MAAM,MAAMA,IAAG,IAAIA;QAChC;AAIO,iBAASC,MAAK,KAAK;AACzB,iBAAO,IAAI,OAAO,IAAI,KAAI,IAAK,IAAI,QAAQ,cAAc,EAAE;QAC5D;AAIO,iBAAS,WAAW,KAAK;AAC/B,iBAAOA,MAAK,GAAG,EAAE,MAAM,KAAK;QAC7B;AAIO,iBAAS,WAAW,KAAKC,UAAS;AACxC,cAAI,CAAC,OAAO,UAAU,eAAe,KAAK,KAAK,SAAS,GAAG;AAC1D,gBAAI,UAAU,IAAI,UAAUV,SAAO,IAAI,OAAO,IAAI,CAAA;UACpD;AACC,mBAAS,KAAKU,UAAS;AACtB,gBAAI,QAAQ,CAAC,IAAIA,SAAQ,CAAC;UAC5B;AACC,iBAAO,IAAI;QACZ;AAOO,iBAAS,eAAe,KAAK,aAAa,WAAW;AAC3D,cAAI,SAAS,CAAA;AACb,mBAAS,KAAK,KAAK;AAClB,mBAAO,KAAK,mBAAmB,YAAY,EAAE,YAAW,IAAK,CAAC,IAAI,MAAM,mBAAmB,IAAI,CAAC,CAAC,CAAC;UACpG;AACC,kBAAS,CAAC,eAAe,YAAY,QAAQ,GAAG,MAAM,KAAM,MAAM,OAAO,OAAO,KAAK,GAAG;QACzF;AAEA,YAAI,aAAa;AAOV,iBAAS,SAAS,KAAKC,OAAM;AACnC,iBAAO,IAAI,QAAQ,YAAY,SAAUC,MAAK,KAAK;AAClD,gBAAI,QAAQD,MAAK,GAAG;AAEpB,gBAAI,UAAU,QAAW;AACxB,oBAAM,IAAI,MAAM,oCAAoCC,IAAG;YAE1D,WAAa,OAAO,UAAU,YAAY;AACvC,sBAAQ,MAAMD,KAAI;YACrB;AACE,mBAAO;UACT,CAAE;QACF;AAIO,YAAIE,WAAU,MAAM,WAAW,SAAU,KAAK;AACpD,iBAAQ,OAAO,UAAU,SAAS,KAAK,GAAG,MAAM;QACjD;AAIO,iBAASC,SAAQ,OAAO,IAAI;AAClC,mBAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACtC,gBAAI,MAAM,CAAC,MAAM,IAAI;AAAE,qBAAO;YAAE;UAClC;AACC,iBAAO;QACR;AAMO,YAAI,gBAAgB;AAI3B,iBAAS,YAAYC,OAAM;AAC1B,iBAAO,OAAO,WAAWA,KAAI,KAAK,OAAO,QAAQA,KAAI,KAAK,OAAO,OAAOA,KAAI;QAC7E;AAEA,YAAI,WAAW;AAGf,iBAAS,aAAa,IAAI;AACzB,cAAIb,QAAO,CAAC,oBAAI,KAAI,GAChB,aAAa,KAAK,IAAI,GAAG,MAAMA,QAAO,SAAS;AAEnD,qBAAWA,QAAO;AAClB,iBAAO,OAAO,WAAW,IAAI,UAAU;QACxC;AAEO,YAAI,YAAY,OAAO,yBAAyB,YAAY,uBAAuB,KAAK;AACxF,YAAI,WAAW,OAAO,wBAAwB,YAAY,sBAAsB,KACrF,YAAY,6BAA6B,KAAK,SAAUc,MAAI;AAAE,iBAAO,aAAaA,IAAE;QAAE;AAQjF,iBAAS,iBAAiB,IAAI,SAAS,WAAW;AACxD,cAAI,aAAa,cAAc,cAAc;AAC5C,eAAG,KAAK,OAAO;UACjB,OAAQ;AACN,mBAAO,UAAU,KAAK,QAAQ,KAAK,IAAI,OAAO,CAAC;UACjD;QACA;AAIO,iBAAS,gBAAgBA,MAAI;AACnC,cAAIA,MAAI;AACP,qBAAS,KAAK,QAAQA,IAAE;UAC1B;QACA;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtOO,iBAAS,QAAQ;QAAA;AAExB,cAAM,SAAS,SAAU,OAAO;AAK/B,cAAI,WAAW,WAAY;AAE1BC,uBAAgB,IAAI;AAGpB,gBAAI,KAAK,YAAY;AACpB,mBAAK,WAAW,MAAM,MAAM,SAAS;YACxC;AAGE,iBAAK,cAAa;UACpB;AAEC,cAAI,cAAc,SAAS,YAAY,KAAK;AAE5C,cAAI,QAAQC,SAAY,WAAW;AACnC,gBAAM,cAAc;AAEpB,mBAAS,YAAY;AAGrB,mBAAS,KAAK,MAAM;AACnB,gBAAI,OAAO,UAAU,eAAe,KAAK,MAAM,CAAC,KAAK,MAAM,eAAe,MAAM,aAAa;AAC5F,uBAAS,CAAC,IAAI,KAAK,CAAC;YACvB;UACA;AAGC,cAAI,MAAM,SAAS;AAClBC,YAAAA,QAAY,UAAU,MAAM,OAAO;UACrC;AAGC,cAAI,MAAM,UAAU;AACnB,uCAA2B,MAAM,QAAQ;AACzCA,YAAAA,QAAY,MAAM,MAAM,CAAC,KAAK,EAAE,OAAO,MAAM,QAAQ,CAAC;UACxD;AAGCA,UAAAA,QAAY,OAAO,KAAK;AACxB,iBAAO,MAAM;AACb,iBAAO,MAAM;AAGb,cAAI,MAAM,SAAS;AAClB,kBAAM,UAAU,YAAY,UAAUD,SAAY,YAAY,OAAO,IAAI,CAAA;AACzEC,YAAAA,QAAY,MAAM,SAAS,MAAM,OAAO;UAC1C;AAEC,gBAAM,aAAa,CAAA;AAGnB,gBAAM,gBAAgB,WAAY;AAEjC,gBAAI,KAAK,kBAAkB;AAAE;YAAO;AAEpC,gBAAI,YAAY,eAAe;AAC9B,0BAAY,cAAc,KAAK,IAAI;YACtC;AAEE,iBAAK,mBAAmB;AAExB,qBAASC,KAAI,GAAG,MAAM,MAAM,WAAW,QAAQA,KAAI,KAAKA,MAAK;AAC5D,oBAAM,WAAWA,EAAC,EAAE,KAAK,IAAI;YAChC;UACA;AAEC,iBAAO;QACR;AAKA,cAAM,UAAU,SAAU,OAAO;AAChC,cAAI,gBAAgB,KAAK,UAAU;AACnCD,UAAAA,QAAY,KAAK,WAAW,KAAK;AACjC,cAAI,MAAM,SAAS;AAClB,iBAAK,UAAU,UAAU;AACzB,iBAAK,aAAa,MAAM,OAAO;UACjC;AACC,iBAAO;QACR;AAIA,cAAM,eAAe,SAAUT,UAAS;AACvCS,UAAAA,QAAY,KAAK,UAAU,SAAST,QAAO;AAC3C,iBAAO;QACR;AAIA,cAAM,cAAc,SAAU,IAAI;AACjC,cAAI,OAAO,MAAM,UAAU,MAAM,KAAK,WAAW,CAAC;AAElD,cAAIW,UAAO,OAAO,OAAO,aAAa,KAAK,WAAY;AACtD,iBAAK,EAAE,EAAE,MAAM,MAAM,IAAI;UAC3B;AAEC,eAAK,UAAU,aAAa,KAAK,UAAU,cAAc,CAAA;AACzD,eAAK,UAAU,WAAW,KAAKA,OAAI;AACnC,iBAAO;QACR;AAEA,iBAAS,2BAA2B,UAAU;AAE7C,cAAI,OAAO,MAAM,eAAe,CAAC,KAAK,CAAC,EAAE,OAAO;AAAE;UAAO;AAEzD,qBAAWC,SAAa,QAAQ,IAAI,WAAW,CAAC,QAAQ;AAExD,mBAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK;AACzC,gBAAI,SAAS,CAAC,MAAM,EAAE,MAAM,QAAQ;AACnC,sBAAQ,KAAK,kIAE8B,IAAI,MAAK,EAAG,KAAK;YAC/D;UACA;QACA;AC1GO,YAAI,SAAS;;;;;;;;UAQnB,IAAI,SAAU,OAAO,IAAI,SAAS;AAGjC,gBAAI,OAAO,UAAU,UAAU;AAC9B,uBAAS,QAAQ,OAAO;AAGvB,qBAAK,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE;cAClC;YAEA,OAAS;AAEN,sBAAQC,WAAgB,KAAK;AAE7B,uBAAS,IAAI,GAAG,MAAM,MAAM,QAAQ,IAAI,KAAK,KAAK;AACjD,qBAAK,IAAI,MAAM,CAAC,GAAG,IAAI,OAAO;cAClC;YACA;AAEE,mBAAO;UACT;;;;;;;;;;;;UAaC,KAAK,SAAU,OAAO,IAAI,SAAS;AAElC,gBAAI,CAAC,UAAU,QAAQ;AAEtB,qBAAO,KAAK;YAEf,WAAa,OAAO,UAAU,UAAU;AACrC,uBAAS,QAAQ,OAAO;AACvB,qBAAK,KAAK,MAAM,MAAM,IAAI,GAAG,EAAE;cACnC;YAEA,OAAS;AACN,sBAAQA,WAAgB,KAAK;AAE7B,kBAAI,YAAY,UAAU,WAAW;AACrC,uBAAS,IAAI,GAAG,MAAM,MAAM,QAAQ,IAAI,KAAK,KAAK;AACjD,oBAAI,WAAW;AACd,uBAAK,KAAK,MAAM,CAAC,CAAC;gBACvB,OAAW;AACN,uBAAK,KAAK,MAAM,CAAC,GAAG,IAAI,OAAO;gBACpC;cACA;YACA;AAEE,mBAAO;UACT;;UAGC,KAAK,SAAU,MAAM,IAAI,SAAS,OAAO;AACxC,gBAAI,OAAO,OAAO,YAAY;AAC7B,sBAAQ,KAAK,0BAA0B,OAAO,EAAE;AAChD;YACH;AAGE,gBAAI,KAAK,SAAS,MAAM,IAAI,OAAO,MAAM,OAAO;AAC/C;YACH;AAEE,gBAAI,YAAY,MAAM;AAErB,wBAAU;YACb;AAEE,gBAAI,cAAc,EAAC,IAAQ,KAAK,QAAO;AACvC,gBAAI,OAAO;AACV,0BAAY,OAAO;YACtB;AAEE,iBAAK,UAAU,KAAK,WAAW,CAAA;AAC/B,iBAAK,QAAQ,IAAI,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAA;AAC3C,iBAAK,QAAQ,IAAI,EAAE,KAAK,WAAW;UACrC;UAEC,MAAM,SAAU,MAAM,IAAI,SAAS;AAClC,gBAAI,WACA,GACA;AAEJ,gBAAI,CAAC,KAAK,SAAS;AAClB;YACH;AAEE,wBAAY,KAAK,QAAQ,IAAI;AAC7B,gBAAI,CAAC,WAAW;AACf;YACH;AAEE,gBAAI,UAAU,WAAW,GAAG;AAC3B,kBAAI,KAAK,cAAc;AAGtB,qBAAK,IAAI,GAAG,MAAM,UAAU,QAAQ,IAAI,KAAK,KAAK;AACjD,4BAAU,CAAC,EAAE,KAAKC;gBACvB;cACA;AAEG,qBAAO,KAAK,QAAQ,IAAI;AACxB;YACH;AAEE,gBAAI,OAAO,OAAO,YAAY;AAC7B,sBAAQ,KAAK,0BAA0B,OAAO,EAAE;AAChD;YACH;AAGE,gBAAIC,SAAQ,KAAK,SAAS,MAAM,IAAI,OAAO;AAC3C,gBAAIA,WAAU,OAAO;AACpB,kBAAI,WAAW,UAAUA,MAAK;AAC9B,kBAAI,KAAK,cAAc;AAEtB,yBAAS,KAAKD;AAGd,qBAAK,QAAQ,IAAI,IAAI,YAAY,UAAU,MAAK;cACpD;AACG,wBAAU,OAAOC,QAAO,CAAC;YAC5B;UACA;;;;;UAMC,MAAM,SAAU,MAAMd,OAAM,WAAW;AACtC,gBAAI,CAAC,KAAK,QAAQ,MAAM,SAAS,GAAG;AAAE,qBAAO;YAAK;AAElD,gBAAI,QAAQQ,QAAY,CAAA,GAAIR,OAAM;cACjC;cACA,QAAQ;cACR,cAAcA,SAAQA,MAAK,gBAAgB;YAC9C,CAAG;AAED,gBAAI,KAAK,SAAS;AACjB,kBAAI,YAAY,KAAK,QAAQ,IAAI;AACjC,kBAAI,WAAW;AACd,qBAAK,eAAgB,KAAK,eAAe,KAAM;AAC/C,yBAAS,IAAI,GAAG,MAAM,UAAU,QAAQ,IAAI,KAAK,KAAK;AACrD,sBAAI,IAAI,UAAU,CAAC;AAEnB,sBAAI,KAAK,EAAE;AACX,sBAAI,EAAE,MAAM;AACX,yBAAK,IAAI,MAAM,IAAI,EAAE,GAAG;kBAC9B;AACK,qBAAG,KAAK,EAAE,OAAO,MAAM,KAAK;gBACjC;AAEI,qBAAK;cACT;YACA;AAEE,gBAAI,WAAW;AAEd,mBAAK,gBAAgB,KAAK;YAC7B;AAEE,mBAAO;UACT;;;;;UAMC,SAAS,SAAU,MAAM,IAAI,SAAS,WAAW;AAChD,gBAAI,OAAO,SAAS,UAAU;AAC7B,sBAAQ,KAAK,iCAAiC;YACjD;AAGE,gBAAI,MAAM;AACV,gBAAI,OAAO,OAAO,YAAY;AAC7B,0BAAY,CAAC,CAAC;AACd,oBAAM;AACN,wBAAU;YACb;AAEE,gBAAI,YAAY,KAAK,WAAW,KAAK,QAAQ,IAAI;AACjD,gBAAI,aAAa,UAAU,QAAQ;AAClC,kBAAI,KAAK,SAAS,MAAM,KAAK,OAAO,MAAM,OAAO;AAChD,uBAAO;cACX;YACA;AAEE,gBAAI,WAAW;AAEd,uBAASK,QAAM,KAAK,eAAe;AAClC,oBAAI,KAAK,cAAcA,IAAE,EAAE,QAAQ,MAAM,IAAI,SAAS,SAAS,GAAG;AAAE,yBAAO;gBAAK;cACpF;YACA;AACE,mBAAO;UACT;;UAGC,UAAU,SAAU,MAAM,IAAI,SAAS;AACtC,gBAAI,CAAC,KAAK,SAAS;AAClB,qBAAO;YACV;AAEE,gBAAI,YAAY,KAAK,QAAQ,IAAI,KAAK,CAAA;AACtC,gBAAI,CAAC,IAAI;AACR,qBAAO,CAAC,CAAC,UAAU;YACtB;AAEE,gBAAI,YAAY,MAAM;AAErB,wBAAU;YACb;AAEE,qBAAS,IAAI,GAAG,MAAM,UAAU,QAAQ,IAAI,KAAK,KAAK;AACrD,kBAAI,UAAU,CAAC,EAAE,OAAO,MAAM,UAAU,CAAC,EAAE,QAAQ,SAAS;AAC3D,uBAAO;cACX;YACA;AACE,mBAAO;UAET;;;UAIC,MAAM,SAAU,OAAO,IAAI,SAAS;AAGnC,gBAAI,OAAO,UAAU,UAAU;AAC9B,uBAAS,QAAQ,OAAO;AAGvB,qBAAK,IAAI,MAAM,MAAM,IAAI,GAAG,IAAI,IAAI;cACxC;YAEA,OAAS;AAEN,sBAAQO,WAAgB,KAAK;AAE7B,uBAAS,IAAI,GAAG,MAAM,MAAM,QAAQ,IAAI,KAAK,KAAK;AACjD,qBAAK,IAAI,MAAM,CAAC,GAAG,IAAI,SAAS,IAAI;cACxC;YACA;AAEE,mBAAO;UACT;;;UAIC,gBAAgB,SAAU,KAAK;AAC9B,iBAAK,gBAAgB,KAAK,iBAAiB,CAAA;AAC3C,iBAAK,cAAcG,MAAW,GAAG,CAAC,IAAI;AACtC,mBAAO;UACT;;;UAIC,mBAAmB,SAAU,KAAK;AACjC,gBAAI,KAAK,eAAe;AACvB,qBAAO,KAAK,cAAcA,MAAW,GAAG,CAAC;YAC5C;AACE,mBAAO;UACT;UAEC,iBAAiB,SAAUC,IAAG;AAC7B,qBAASX,QAAM,KAAK,eAAe;AAClC,mBAAK,cAAcA,IAAE,EAAE,KAAKW,GAAE,MAAMR,QAAY;gBAC/C,OAAOQ,GAAE;gBACT,gBAAgBA,GAAE;cACtB,GAAMA,EAAC,GAAG,IAAI;YACd;UACA;QACA;AAMA,eAAO,mBAAmB,OAAO;AAOjC,eAAO,sBAAsB,OAAO,yBAAyB,OAAO;AAIpE,eAAO,0BAA0B,OAAO;AAIxC,eAAO,YAAY,OAAO;AAI1B,eAAO,oBAAoB,OAAO;AAExB,YAAC,UAAU,MAAM,OAAO,MAAM;AC7TjC,iBAASC,OAAMzB,IAAG0B,IAAGC,QAAO;AAElC,eAAK,IAAKA,SAAQ,KAAK,MAAM3B,EAAC,IAAIA;AAElC,eAAK,IAAK2B,SAAQ,KAAK,MAAMD,EAAC,IAAIA;QACnC;AAEA,YAAI,QAAQ,KAAK,SAAS,SAAU,GAAG;AACtC,iBAAO,IAAI,IAAI,KAAK,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC;QAC3C;AAEA,QAAAD,OAAM,YAAY;;;UAIjB,OAAO,WAAY;AAClB,mBAAO,IAAIA,OAAM,KAAK,GAAG,KAAK,CAAC;UACjC;;;UAIC,KAAK,SAAUG,QAAO;AAErB,mBAAO,KAAK,MAAK,EAAG,KAAK,QAAQA,MAAK,CAAC;UACzC;UAEC,MAAM,SAAUA,QAAO;AAEtB,iBAAK,KAAKA,OAAM;AAChB,iBAAK,KAAKA,OAAM;AAChB,mBAAO;UACT;;;UAIC,UAAU,SAAUA,QAAO;AAC1B,mBAAO,KAAK,MAAK,EAAG,UAAU,QAAQA,MAAK,CAAC;UAC9C;UAEC,WAAW,SAAUA,QAAO;AAC3B,iBAAK,KAAKA,OAAM;AAChB,iBAAK,KAAKA,OAAM;AAChB,mBAAO;UACT;;;UAIC,UAAU,SAAU,KAAK;AACxB,mBAAO,KAAK,MAAK,EAAG,UAAU,GAAG;UACnC;UAEC,WAAW,SAAU,KAAK;AACzB,iBAAK,KAAK;AACV,iBAAK,KAAK;AACV,mBAAO;UACT;;;UAIC,YAAY,SAAU,KAAK;AAC1B,mBAAO,KAAK,MAAK,EAAG,YAAY,GAAG;UACrC;UAEC,aAAa,SAAU,KAAK;AAC3B,iBAAK,KAAK;AACV,iBAAK,KAAK;AACV,mBAAO;UACT;;;;;;UAOC,SAAS,SAAUA,QAAO;AACzB,mBAAO,IAAIH,OAAM,KAAK,IAAIG,OAAM,GAAG,KAAK,IAAIA,OAAM,CAAC;UACrD;;;;UAKC,WAAW,SAAUA,QAAO;AAC3B,mBAAO,IAAIH,OAAM,KAAK,IAAIG,OAAM,GAAG,KAAK,IAAIA,OAAM,CAAC;UACrD;;;UAIC,OAAO,WAAY;AAClB,mBAAO,KAAK,MAAK,EAAG,OAAM;UAC5B;UAEC,QAAQ,WAAY;AACnB,iBAAK,IAAI,KAAK,MAAM,KAAK,CAAC;AAC1B,iBAAK,IAAI,KAAK,MAAM,KAAK,CAAC;AAC1B,mBAAO;UACT;;;UAIC,OAAO,WAAY;AAClB,mBAAO,KAAK,MAAK,EAAG,OAAM;UAC5B;UAEC,QAAQ,WAAY;AACnB,iBAAK,IAAI,KAAK,MAAM,KAAK,CAAC;AAC1B,iBAAK,IAAI,KAAK,MAAM,KAAK,CAAC;AAC1B,mBAAO;UACT;;;UAIC,MAAM,WAAY;AACjB,mBAAO,KAAK,MAAK,EAAG,MAAK;UAC3B;UAEC,OAAO,WAAY;AAClB,iBAAK,IAAI,KAAK,KAAK,KAAK,CAAC;AACzB,iBAAK,IAAI,KAAK,KAAK,KAAK,CAAC;AACzB,mBAAO;UACT;;;UAIC,OAAO,WAAY;AAClB,mBAAO,KAAK,MAAK,EAAG,OAAM;UAC5B;UAEC,QAAQ,WAAY;AACnB,iBAAK,IAAI,MAAM,KAAK,CAAC;AACrB,iBAAK,IAAI,MAAM,KAAK,CAAC;AACrB,mBAAO;UACT;;;UAIC,YAAY,SAAUA,QAAO;AAC5B,YAAAA,SAAQ,QAAQA,MAAK;AAErB,gBAAI5B,KAAI4B,OAAM,IAAI,KAAK,GACnBF,KAAIE,OAAM,IAAI,KAAK;AAEvB,mBAAO,KAAK,KAAK5B,KAAIA,KAAI0B,KAAIA,EAAC;UAChC;;;UAIC,QAAQ,SAAUE,QAAO;AACxB,YAAAA,SAAQ,QAAQA,MAAK;AAErB,mBAAOA,OAAM,MAAM,KAAK,KACjBA,OAAM,MAAM,KAAK;UAC1B;;;UAIC,UAAU,SAAUA,QAAO;AAC1B,YAAAA,SAAQ,QAAQA,MAAK;AAErB,mBAAO,KAAK,IAAIA,OAAM,CAAC,KAAK,KAAK,IAAI,KAAK,CAAC,KACpC,KAAK,IAAIA,OAAM,CAAC,KAAK,KAAK,IAAI,KAAK,CAAC;UAC7C;;;UAIC,UAAU,WAAY;AACrB,mBAAO,WACC,UAAU,KAAK,CAAC,IAAI,OACpB,UAAU,KAAK,CAAC,IAAI;UAC9B;QACA;AAYO,iBAAS,QAAQ5B,IAAG0B,IAAGC,QAAO;AACpC,cAAI3B,cAAayB,QAAO;AACvB,mBAAOzB;UACT;AACC,cAAIU,SAAQV,EAAC,GAAG;AACf,mBAAO,IAAIyB,OAAMzB,GAAE,CAAC,GAAGA,GAAE,CAAC,CAAC;UAC7B;AACC,cAAIA,OAAM,UAAaA,OAAM,MAAM;AAClC,mBAAOA;UACT;AACC,cAAI,OAAOA,OAAM,YAAY,OAAOA,MAAK,OAAOA,IAAG;AAClD,mBAAO,IAAIyB,OAAMzB,GAAE,GAAGA,GAAE,CAAC;UAC3B;AACC,iBAAO,IAAIyB,OAAMzB,IAAG0B,IAAGC,MAAK;QAC7B;AClMO,iBAAS,OAAOE,IAAG,GAAG;AAC5B,cAAI,CAACA,IAAG;AAAE;UAAO;AAEjB,cAAI,SAAS,IAAI,CAACA,IAAG,CAAC,IAAIA;AAE1B,mBAAS,IAAI,GAAG,MAAM,OAAO,QAAQ,IAAI,KAAK,KAAK;AAClD,iBAAK,OAAO,OAAO,CAAC,CAAC;UACvB;QACA;AAEA,eAAO,YAAY;;;;;;UAOlB,QAAQ,SAAU,KAAK;AACtB,gBAAIC,OAAMC;AACV,gBAAI,CAAC,KAAK;AAAE,qBAAO;YAAK;AAExB,gBAAI,eAAeN,UAAS,OAAO,IAAI,CAAC,MAAM,YAAY,OAAO,KAAK;AACrE,cAAAK,QAAOC,QAAO,QAAQ,GAAG;YAC5B,OAAS;AACN,oBAAM,SAAS,GAAG;AAClB,cAAAD,QAAO,IAAI;AACX,cAAAC,QAAO,IAAI;AAEX,kBAAI,CAACD,SAAQ,CAACC,OAAM;AAAE,uBAAO;cAAK;YACrC;AAME,gBAAI,CAAC,KAAK,OAAO,CAAC,KAAK,KAAK;AAC3B,mBAAK,MAAMD,MAAK,MAAK;AACrB,mBAAK,MAAMC,MAAK,MAAK;YACxB,OAAS;AACN,mBAAK,IAAI,IAAI,KAAK,IAAID,MAAK,GAAG,KAAK,IAAI,CAAC;AACxC,mBAAK,IAAI,IAAI,KAAK,IAAIC,MAAK,GAAG,KAAK,IAAI,CAAC;AACxC,mBAAK,IAAI,IAAI,KAAK,IAAID,MAAK,GAAG,KAAK,IAAI,CAAC;AACxC,mBAAK,IAAI,IAAI,KAAK,IAAIC,MAAK,GAAG,KAAK,IAAI,CAAC;YAC3C;AACE,mBAAO;UACT;;;UAIC,WAAW,SAAUJ,QAAO;AAC3B,mBAAO;eACE,KAAK,IAAI,IAAI,KAAK,IAAI,KAAK;eAC3B,KAAK,IAAI,IAAI,KAAK,IAAI,KAAK;cAAGA;YAAK;UAC9C;;;UAIC,eAAe,WAAY;AAC1B,mBAAO,QAAQ,KAAK,IAAI,GAAG,KAAK,IAAI,CAAC;UACvC;;;UAIC,aAAa,WAAY;AACxB,mBAAO,QAAQ,KAAK,IAAI,GAAG,KAAK,IAAI,CAAC;UACvC;;;UAIC,YAAY,WAAY;AACvB,mBAAO,KAAK;UACd;;;UAIC,gBAAgB,WAAY;AAC3B,mBAAO,KAAK;UACd;;;UAIC,SAAS,WAAY;AACpB,mBAAO,KAAK,IAAI,SAAS,KAAK,GAAG;UACnC;;;;;;UAOC,UAAU,SAAU,KAAK;AACxB,gBAAIxB,MAAKD;AAET,gBAAI,OAAO,IAAI,CAAC,MAAM,YAAY,eAAeuB,QAAO;AACvD,oBAAM,QAAQ,GAAG;YACpB,OAAS;AACN,oBAAM,SAAS,GAAG;YACrB;AAEE,gBAAI,eAAe,QAAQ;AAC1B,cAAAtB,OAAM,IAAI;AACV,cAAAD,OAAM,IAAI;YACb,OAAS;AACN,cAAAC,OAAMD,OAAM;YACf;AAEE,mBAAQC,KAAI,KAAK,KAAK,IAAI,KAClBD,KAAI,KAAK,KAAK,IAAI,KAClBC,KAAI,KAAK,KAAK,IAAI,KAClBD,KAAI,KAAK,KAAK,IAAI;UAC5B;;;;UAKC,YAAY,SAAU,QAAQ;AAC7B,qBAAS,SAAS,MAAM;AAExB,gBAAIC,OAAM,KAAK,KACXD,OAAM,KAAK,KACX4B,QAAO,OAAO,KACdC,QAAO,OAAO,KACd,cAAeA,MAAK,KAAK5B,KAAI,KAAO2B,MAAK,KAAK5B,KAAI,GAClD,cAAe6B,MAAK,KAAK5B,KAAI,KAAO2B,MAAK,KAAK5B,KAAI;AAEtD,mBAAO,eAAe;UACxB;;;;UAKC,UAAU,SAAU,QAAQ;AAC3B,qBAAS,SAAS,MAAM;AAExB,gBAAIC,OAAM,KAAK,KACXD,OAAM,KAAK,KACX4B,QAAO,OAAO,KACdC,QAAO,OAAO,KACd,YAAaA,MAAK,IAAI5B,KAAI,KAAO2B,MAAK,IAAI5B,KAAI,GAC9C,YAAa6B,MAAK,IAAI5B,KAAI,KAAO2B,MAAK,IAAI5B,KAAI;AAElD,mBAAO,aAAa;UACtB;;;UAIC,SAAS,WAAY;AACpB,mBAAO,CAAC,EAAE,KAAK,OAAO,KAAK;UAC7B;;;;;UAOC,KAAK,SAAU,aAAa;AAC3B,gBAAIC,OAAM,KAAK,KACfD,OAAM,KAAK,KACX,eAAe,KAAK,IAAIC,KAAI,IAAID,KAAI,CAAC,IAAI,aACzC,cAAc,KAAK,IAAIC,KAAI,IAAID,KAAI,CAAC,IAAI;AAGxC,mBAAO;cACN,QAAQC,KAAI,IAAI,cAAcA,KAAI,IAAI,WAAW;cACjD,QAAQD,KAAI,IAAI,cAAcA,KAAI,IAAI,WAAW;YAAC;UACrD;;;UAKC,QAAQ,SAAU,QAAQ;AACzB,gBAAI,CAAC,QAAQ;AAAE,qBAAO;YAAM;AAE5B,qBAAS,SAAS,MAAM;AAExB,mBAAO,KAAK,IAAI,OAAO,OAAO,WAAU,CAAE,KACzC,KAAK,IAAI,OAAO,OAAO,eAAc,CAAE;UAC1C;QACA;AAQO,iBAAS,SAAS2B,IAAG,GAAG;AAC9B,cAAI,CAACA,MAAKA,cAAa,QAAQ;AAC9B,mBAAOA;UACT;AACC,iBAAO,IAAI,OAAOA,IAAG,CAAC;QACvB;AC1LO,iBAAS,aAAa,SAAS,SAAS;AAC9C,cAAI,CAAC,SAAS;AAAE;UAAO;AAEvB,cAAI,UAAU,UAAU,CAAC,SAAS,OAAO,IAAI;AAE7C,mBAAS,IAAI,GAAG,MAAM,QAAQ,QAAQ,IAAI,KAAK,KAAK;AACnD,iBAAK,OAAO,QAAQ,CAAC,CAAC;UACxB;QACA;AAEA,qBAAa,YAAY;;;;;;UAQxB,QAAQ,SAAU,KAAK;AACtB,gBAAI,KAAK,KAAK,YACV,KAAK,KAAK,YACV,KAAK;AAET,gBAAI,eAAe,QAAQ;AAC1B,oBAAM;AACN,oBAAM;YAET,WAAa,eAAe,cAAc;AACvC,oBAAM,IAAI;AACV,oBAAM,IAAI;AAEV,kBAAI,CAAC,OAAO,CAAC,KAAK;AAAE,uBAAO;cAAK;YAEnC,OAAS;AACN,qBAAO,MAAM,KAAK,OAAO,SAAS,GAAG,KAAK,eAAe,GAAG,CAAC,IAAI;YACpE;AAEE,gBAAI,CAAC,MAAM,CAAC,IAAI;AACf,mBAAK,aAAa,IAAI,OAAO,IAAI,KAAK,IAAI,GAAG;AAC7C,mBAAK,aAAa,IAAI,OAAO,IAAI,KAAK,IAAI,GAAG;YAChD,OAAS;AACN,iBAAG,MAAM,KAAK,IAAI,IAAI,KAAK,GAAG,GAAG;AACjC,iBAAG,MAAM,KAAK,IAAI,IAAI,KAAK,GAAG,GAAG;AACjC,iBAAG,MAAM,KAAK,IAAI,IAAI,KAAK,GAAG,GAAG;AACjC,iBAAG,MAAM,KAAK,IAAI,IAAI,KAAK,GAAG,GAAG;YACpC;AAEE,mBAAO;UACT;;;;;UAMC,KAAK,SAAU,aAAa;AAC3B,gBAAI,KAAK,KAAK,YACV,KAAK,KAAK,YACV,eAAe,KAAK,IAAI,GAAG,MAAM,GAAG,GAAG,IAAI,aAC3C,cAAc,KAAK,IAAI,GAAG,MAAM,GAAG,GAAG,IAAI;AAE9C,mBAAO,IAAI;cACH,IAAI,OAAO,GAAG,MAAM,cAAc,GAAG,MAAM,WAAW;cACtD,IAAI,OAAO,GAAG,MAAM,cAAc,GAAG,MAAM,WAAW;YAAC;UACjE;;;UAIC,WAAW,WAAY;AACtB,mBAAO,IAAI;eACF,KAAK,WAAW,MAAM,KAAK,WAAW,OAAO;eAC7C,KAAK,WAAW,MAAM,KAAK,WAAW,OAAO;YAAC;UACzD;;;UAIC,cAAc,WAAY;AACzB,mBAAO,KAAK;UACd;;;UAIC,cAAc,WAAY;AACzB,mBAAO,KAAK;UACd;;;UAIC,cAAc,WAAY;AACzB,mBAAO,IAAI,OAAO,KAAK,SAAQ,GAAI,KAAK,QAAO,CAAE;UACnD;;;UAIC,cAAc,WAAY;AACzB,mBAAO,IAAI,OAAO,KAAK,SAAQ,GAAI,KAAK,QAAO,CAAE;UACnD;;;UAIC,SAAS,WAAY;AACpB,mBAAO,KAAK,WAAW;UACzB;;;UAIC,UAAU,WAAY;AACrB,mBAAO,KAAK,WAAW;UACzB;;;UAIC,SAAS,WAAY;AACpB,mBAAO,KAAK,WAAW;UACzB;;;UAIC,UAAU,WAAY;AACrB,mBAAO,KAAK,WAAW;UACzB;;;;;;UAQC,UAAU,SAAU,KAAK;AACxB,gBAAI,OAAO,IAAI,CAAC,MAAM,YAAY,eAAe,UAAU,SAAS,KAAK;AACxE,oBAAM,SAAS,GAAG;YACrB,OAAS;AACN,oBAAM,eAAe,GAAG;YAC3B;AAEE,gBAAI,KAAK,KAAK,YACV,KAAK,KAAK,YACV,KAAK;AAET,gBAAI,eAAe,cAAc;AAChC,oBAAM,IAAI,aAAY;AACtB,oBAAM,IAAI,aAAY;YACzB,OAAS;AACN,oBAAM,MAAM;YACf;AAEE,mBAAQ,IAAI,OAAO,GAAG,OAAS,IAAI,OAAO,GAAG,OACrC,IAAI,OAAO,GAAG,OAAS,IAAI,OAAO,GAAG;UAC/C;;;UAIC,YAAY,SAAU,QAAQ;AAC7B,qBAAS,eAAe,MAAM;AAE9B,gBAAI,KAAK,KAAK,YACV,KAAK,KAAK,YACV,MAAM,OAAO,aAAY,GACzB,MAAM,OAAO,aAAY,GAEzB,gBAAiB,IAAI,OAAO,GAAG,OAAS,IAAI,OAAO,GAAG,KACtD,gBAAiB,IAAI,OAAO,GAAG,OAAS,IAAI,OAAO,GAAG;AAE1D,mBAAO,iBAAiB;UAC1B;;;UAIC,UAAU,SAAU,QAAQ;AAC3B,qBAAS,eAAe,MAAM;AAE9B,gBAAI,KAAK,KAAK,YACV,KAAK,KAAK,YACV,MAAM,OAAO,aAAY,GACzB,MAAM,OAAO,aAAY,GAEzB,cAAe,IAAI,MAAM,GAAG,OAAS,IAAI,MAAM,GAAG,KAClD,cAAe,IAAI,MAAM,GAAG,OAAS,IAAI,MAAM,GAAG;AAEtD,mBAAO,eAAe;UACxB;;;UAIC,cAAc,WAAY;AACzB,mBAAO,CAAC,KAAK,QAAO,GAAI,KAAK,SAAQ,GAAI,KAAK,QAAO,GAAI,KAAK,SAAQ,CAAE,EAAE,KAAK,GAAG;UACpF;;;UAIC,QAAQ,SAAU,QAAQ,WAAW;AACpC,gBAAI,CAAC,QAAQ;AAAE,qBAAO;YAAM;AAE5B,qBAAS,eAAe,MAAM;AAE9B,mBAAO,KAAK,WAAW,OAAO,OAAO,aAAY,GAAI,SAAS,KACvD,KAAK,WAAW,OAAO,OAAO,aAAY,GAAI,SAAS;UAChE;;;UAIC,SAAS,WAAY;AACpB,mBAAO,CAAC,EAAE,KAAK,cAAc,KAAK;UACpC;QACA;AAUO,iBAAS,eAAeA,IAAG,GAAG;AACpC,cAAIA,cAAa,cAAc;AAC9B,mBAAOA;UACT;AACC,iBAAO,IAAI,aAAaA,IAAG,CAAC;QAC7B;AC7NO,iBAAS,OAAO,KAAK,KAAK,KAAK;AACrC,cAAI,MAAM,GAAG,KAAK,MAAM,GAAG,GAAG;AAC7B,kBAAM,IAAI,MAAM,6BAA6B,MAAM,OAAO,MAAM,GAAG;UACrE;AAIC,eAAK,MAAM,CAAC;AAIZ,eAAK,MAAM,CAAC;AAIZ,cAAI,QAAQ,QAAW;AACtB,iBAAK,MAAM,CAAC;UACd;QACA;AAEA,eAAO,YAAY;;;UAGlB,QAAQ,SAAU,KAAK,WAAW;AACjC,gBAAI,CAAC,KAAK;AAAE,qBAAO;YAAM;AAEzB,kBAAM,SAAS,GAAG;AAElB,gBAAI,SAAS,KAAK;cACV,KAAK,IAAI,KAAK,MAAM,IAAI,GAAG;cAC3B,KAAK,IAAI,KAAK,MAAM,IAAI,GAAG;YAAC;AAEpC,mBAAO,WAAW,cAAc,SAAY,OAAS;UACvD;;;UAIC,UAAU,SAAU,WAAW;AAC9B,mBAAO,YACCG,UAAe,KAAK,KAAK,SAAS,IAAI,OACtCA,UAAe,KAAK,KAAK,SAAS,IAAI;UAChD;;;UAIC,YAAY,SAAU,OAAO;AAC5B,mBAAO,MAAM,SAAS,MAAM,SAAS,KAAK,CAAC;UAC7C;;;UAIC,MAAM,WAAY;AACjB,mBAAO,MAAM,WAAW,IAAI;UAC9B;;;UAIC,UAAU,SAAU,cAAc;AACjC,gBAAI,cAAc,MAAM,eAAe,UACnC,cAAc,cAAc,KAAK,IAAK,KAAK,KAAK,MAAO,KAAK,GAAG;AAEnE,mBAAO;cACC,CAAC,KAAK,MAAM,aAAa,KAAK,MAAM,WAAW;cAC/C,CAAC,KAAK,MAAM,aAAa,KAAK,MAAM,WAAW;YAAC;UAC1D;UAEC,OAAO,WAAY;AAClB,mBAAO,IAAI,OAAO,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG;UAChD;QACA;AAeO,iBAAS,SAASH,IAAG,GAAGI,IAAG;AACjC,cAAIJ,cAAa,QAAQ;AACxB,mBAAOA;UACT;AACC,cAAIV,SAAaU,EAAC,KAAK,OAAOA,GAAE,CAAC,MAAM,UAAU;AAChD,gBAAIA,GAAE,WAAW,GAAG;AACnB,qBAAO,IAAI,OAAOA,GAAE,CAAC,GAAGA,GAAE,CAAC,GAAGA,GAAE,CAAC,CAAC;YACrC;AACE,gBAAIA,GAAE,WAAW,GAAG;AACnB,qBAAO,IAAI,OAAOA,GAAE,CAAC,GAAGA,GAAE,CAAC,CAAC;YAC/B;AACE,mBAAO;UACT;AACC,cAAIA,OAAM,UAAaA,OAAM,MAAM;AAClC,mBAAOA;UACT;AACC,cAAI,OAAOA,OAAM,YAAY,SAASA,IAAG;AACxC,mBAAO,IAAI,OAAOA,GAAE,KAAK,SAASA,KAAIA,GAAE,MAAMA,GAAE,KAAKA,GAAE,GAAG;UAC5D;AACC,cAAI,MAAM,QAAW;AACpB,mBAAO;UACT;AACC,iBAAO,IAAI,OAAOA,IAAG,GAAGI,EAAC;QAC1B;ACjHU,YAAC,MAAM;;;UAGhB,eAAe,SAAU,QAAQC,OAAM;AACtC,gBAAI,iBAAiB,KAAK,WAAW,QAAQ,MAAM,GAC/CC,SAAQ,KAAK,MAAMD,KAAI;AAE3B,mBAAO,KAAK,eAAe,WAAW,gBAAgBC,MAAK;UAC7D;;;;UAKC,eAAe,SAAUP,QAAOM,OAAM;AACrC,gBAAIC,SAAQ,KAAK,MAAMD,KAAI,GACvB,qBAAqB,KAAK,eAAe,YAAYN,QAAOO,MAAK;AAErE,mBAAO,KAAK,WAAW,UAAU,kBAAkB;UACrD;;;;UAKC,SAAS,SAAU,QAAQ;AAC1B,mBAAO,KAAK,WAAW,QAAQ,MAAM;UACvC;;;;UAKC,WAAW,SAAUP,QAAO;AAC3B,mBAAO,KAAK,WAAW,UAAUA,MAAK;UACxC;;;;;UAMC,OAAO,SAAUM,OAAM;AACtB,mBAAO,MAAM,KAAK,IAAI,GAAGA,KAAI;UAC/B;;;;UAKC,MAAM,SAAUC,QAAO;AACtB,mBAAO,KAAK,IAAIA,SAAQ,GAAG,IAAI,KAAK;UACtC;;;UAIC,oBAAoB,SAAUD,OAAM;AACnC,gBAAI,KAAK,UAAU;AAAE,qBAAO;YAAK;AAEjC,gBAAI,IAAI,KAAK,WAAW,QACpBE,KAAI,KAAK,MAAMF,KAAI,GACnB/B,OAAM,KAAK,eAAe,UAAU,EAAE,KAAKiC,EAAC,GAC5ClC,OAAM,KAAK,eAAe,UAAU,EAAE,KAAKkC,EAAC;AAEhD,mBAAO,IAAI,OAAOjC,MAAKD,IAAG;UAC5B;;;;;;;;;;;;;;;;;UAqBC,UAAU;;;;UAKV,YAAY,SAAU,QAAQ;AAC7B,gBAAI,MAAM,KAAK,UAAUmC,QAAa,OAAO,KAAK,KAAK,SAAS,IAAI,IAAI,OAAO,KAC3E,MAAM,KAAK,UAAUA,QAAa,OAAO,KAAK,KAAK,SAAS,IAAI,IAAI,OAAO,KAC3E,MAAM,OAAO;AAEjB,mBAAO,IAAI,OAAO,KAAK,KAAK,GAAG;UACjC;;;;;UAMC,kBAAkB,SAAU,QAAQ;AACnC,gBAAI,SAAS,OAAO,UAAS,GACzB,YAAY,KAAK,WAAW,MAAM,GAClC,WAAW,OAAO,MAAM,UAAU,KAClC,WAAW,OAAO,MAAM,UAAU;AAEtC,gBAAI,aAAa,KAAK,aAAa,GAAG;AACrC,qBAAO;YACV;AAEE,gBAAI,KAAK,OAAO,aAAY,GACxB,KAAK,OAAO,aAAY,GACxB,QAAQ,IAAI,OAAO,GAAG,MAAM,UAAU,GAAG,MAAM,QAAQ,GACvD,QAAQ,IAAI,OAAO,GAAG,MAAM,UAAU,GAAG,MAAM,QAAQ;AAE3D,mBAAO,IAAI,aAAa,OAAO,KAAK;UACtC;QACA;AC7HO,YAAI,QAAQrB,QAAY,CAAA,GAAI,KAAK;UACvC,SAAS,CAAC,MAAM,GAAG;;;;UAKnB,GAAG;;UAGH,UAAU,SAAU,SAAS,SAAS;AACrC,gBAAI,MAAM,KAAK,KAAK,KAChB,OAAO,QAAQ,MAAM,KACrB,OAAO,QAAQ,MAAM,KACrB,UAAU,KAAK,KAAK,QAAQ,MAAM,QAAQ,OAAO,MAAM,CAAC,GACxD,UAAU,KAAK,KAAK,QAAQ,MAAM,QAAQ,OAAO,MAAM,CAAC,GACxDa,KAAI,UAAU,UAAU,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,UAAU,SACpEI,KAAI,IAAI,KAAK,MAAM,KAAK,KAAKJ,EAAC,GAAG,KAAK,KAAK,IAAIA,EAAC,CAAC;AACrD,mBAAO,KAAK,IAAII;UAClB;QACA,CAAC;ACnBD,YAAI,cAAc;AAEX,YAAI,oBAAoB;UAE9B,GAAG;UACH,cAAc;UAEd,SAAS,SAAU,QAAQ;AAC1B,gBAAI7B,KAAI,KAAK,KAAK,KACdF,OAAM,KAAK,cACX,MAAM,KAAK,IAAI,KAAK,IAAIA,MAAK,OAAO,GAAG,GAAG,CAACA,IAAG,GAC9CoC,OAAM,KAAK,IAAI,MAAMlC,EAAC;AAE1B,mBAAO,IAAIqB;cACV,KAAK,IAAI,OAAO,MAAMrB;cACtB,KAAK,IAAI,KAAK,KAAK,IAAIkC,SAAQ,IAAIA,KAAI,IAAI;YAAC;UAC/C;UAEC,WAAW,SAAUV,QAAO;AAC3B,gBAAIxB,KAAI,MAAM,KAAK;AAEnB,mBAAO,IAAI;eACT,IAAI,KAAK,KAAK,KAAK,IAAIwB,OAAM,IAAI,KAAK,CAAC,CAAC,IAAK,KAAK,KAAK,KAAMxB;cAC9DwB,OAAM,IAAIxB,KAAI,KAAK;YAAC;UACvB;UAEC,QAAS,WAAY;AACpB,gBAAIA,KAAI,cAAc,KAAK;AAC3B,mBAAO,IAAI,OAAO,CAAC,CAACA,IAAG,CAACA,EAAC,GAAG,CAACA,IAAGA,EAAC,CAAC;UACpC,EAAE;QACF;ACnBO,iBAAS,eAAeyB,IAAG,GAAGI,IAAG7B,IAAG;AAC1C,cAAIe,SAAaU,EAAC,GAAG;AAEpB,iBAAK,KAAKA,GAAE,CAAC;AACb,iBAAK,KAAKA,GAAE,CAAC;AACb,iBAAK,KAAKA,GAAE,CAAC;AACb,iBAAK,KAAKA,GAAE,CAAC;AACb;UACF;AACC,eAAK,KAAKA;AACV,eAAK,KAAK;AACV,eAAK,KAAKI;AACV,eAAK,KAAK7B;QACX;AAEA,uBAAe,YAAY;;;;UAI1B,WAAW,SAAUwB,QAAOO,QAAO;AAClC,mBAAO,KAAK,WAAWP,OAAM,MAAK,GAAIO,MAAK;UAC7C;;UAGC,YAAY,SAAUP,QAAOO,QAAO;AACnC,YAAAA,SAAQA,UAAS;AACjB,YAAAP,OAAM,IAAIO,UAAS,KAAK,KAAKP,OAAM,IAAI,KAAK;AAC5C,YAAAA,OAAM,IAAIO,UAAS,KAAK,KAAKP,OAAM,IAAI,KAAK;AAC5C,mBAAOA;UACT;;;;UAKC,aAAa,SAAUA,QAAOO,QAAO;AACpC,YAAAA,SAAQA,UAAS;AACjB,mBAAO,IAAIV;eACFG,OAAM,IAAIO,SAAQ,KAAK,MAAM,KAAK;eAClCP,OAAM,IAAIO,SAAQ,KAAK,MAAM,KAAK;YAAE;UAC/C;QACA;AAYO,iBAAS,iBAAiBN,IAAG,GAAGI,IAAG7B,IAAG;AAC5C,iBAAO,IAAI,eAAeyB,IAAG,GAAGI,IAAG7B,EAAC;QACrC;AChEO,YAAI,WAAWY,QAAY,CAAA,GAAI,OAAO;UAC5C,MAAM;UACN,YAAY;UAEZ,gBAAiB,WAAY;AAC5B,gBAAImB,SAAQ,OAAO,KAAK,KAAK,kBAAkB;AAC/C,mBAAO,iBAAiBA,QAAO,KAAK,CAACA,QAAO,GAAG;UACjD,EAAE;QACF,CAAC;AAEM,YAAI,aAAanB,QAAY,CAAA,GAAI,UAAU;UACjD,MAAM;QACP,CAAC;ACjBM,iBAAS,UAAUJ,OAAM;AAC/B,iBAAO,SAAS,gBAAgB,8BAA8BA,KAAI;QACnE;AAKO,iBAAS,aAAa,OAAO,QAAQ;AAC3C,cAAI,MAAM,IACV,GAAG,GAAG,KAAK,MAAM,QAAQ;AAEzB,eAAK,IAAI,GAAG,MAAM,MAAM,QAAQ,IAAI,KAAK,KAAK;AAC7C,qBAAS,MAAM,CAAC;AAEhB,iBAAK,IAAI,GAAG,OAAO,OAAO,QAAQ,IAAI,MAAM,KAAK;AAChD,kBAAI,OAAO,CAAC;AACZ,sBAAQ,IAAI,MAAM,OAAO,EAAE,IAAI,MAAM,EAAE;YAC1C;AAGE,mBAAO,SAAU,QAAQ,MAAM,MAAM,MAAO;UAC9C;AAGC,iBAAO,OAAO;QACf;AChBA,YAAI2B,SAAQ,SAAS,gBAAgB;AAGrC,YAAI,KAAK,mBAAmB;AAG5B,YAAI,QAAQ,MAAM,CAAC,SAAS;AAG5B,YAAI,OAAO,iBAAiB,aAAa,EAAE,kBAAkB;AAI7D,YAAI,SAAS,kBAAkB,QAAQ;AAIvC,YAAI,UAAU,kBAAkB,SAAS;AAGzC,YAAI,YAAY,kBAAkB,WAAW,KAAK,kBAAkB,WAAW;AAG/E,YAAI,YAAY,SAAS,qBAAqB,KAAK,UAAU,SAAS,EAAE,CAAC,GAAG,EAAE;AAE9E,YAAI,eAAe,WAAW,kBAAkB,QAAQ,KAAK,YAAY,OAAO,EAAE,eAAe;AAGjG,YAAI,QAAQ,CAAC,CAAC,OAAO;AAGrB,YAAI,SAAS,CAAC,QAAQ,kBAAkB,QAAQ;AAGhD,YAAI,QAAQ,kBAAkB,OAAO,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC;AAGhE,YAAI,SAAS,CAAC,UAAU,kBAAkB,QAAQ;AAElD,YAAI,UAAU,kBAAkB,SAAS;AAIzC,YAAI,UAAU,iBAAiBA;AAG/B,YAAI,MAAM,UAAU,SAAS,QAAQ,KAAK,MAAM;AAGhD,YAAI,OAAO,MAAO,gBAAgBA;AAGlC,YAAI,WAAY,qBAAqB,UAAY,SAAS,IAAI,OAAO,gBAAe,KAAO,CAAC;AAG5F,YAAI,UAAU,oBAAoBA;AAIlC,YAAI,QAAQ,CAAC,OAAO,iBAAiB,QAAQ,YAAY,YAAY,CAAC,WAAW,CAAC;AAGlF,YAAI,SAAS,OAAO,gBAAgB,eAAe,kBAAkB,QAAQ;AAG7E,YAAI,eAAe,UAAU;AAI7B,YAAI,iBAAiB,UAAU;AAI/B,YAAI,YAAY,CAAC,OAAO,gBAAgB,OAAO;AAI/C,YAAI,UAAU,CAAC,EAAE,OAAO,gBAAgB;AAOxC,YAAI,cAAc,kBAAkB,UAAU,CAAC,CAAC,OAAO;AAKvD,YAAI,QAAQ,CAAC,OAAO,eAAe,eAAe;AAGlD,YAAI,cAAc,UAAU;AAI5B,YAAI,cAAc,UAAU;AAI5B,YAAI,UAAU,OAAO,oBAAqB,OAAO,OAAO,aAAa,OAAO,OAAO,eAAgB;AAInG,YAAI,gBAAiB,WAAY;AAChC,cAAI,wBAAwB;AAC5B,cAAI;AACH,gBAAI,OAAO,OAAO,eAAe,CAAA,GAAI,WAAW;cAC/C,KAAK,WAAY;AAChB,wCAAwB;cAC5B;YACA,CAAG;AACD,mBAAO,iBAAiB,2BAA2BlB,SAAc,IAAI;AACrE,mBAAO,oBAAoB,2BAA2BA,SAAc,IAAI;UAC1E,SAAUG,IAAG;UAEb;AACC,iBAAO;QACR,EAAC;AAID,YAAIgB,WAAU,WAAY;AACzB,iBAAO,CAAC,CAAC,SAAS,cAAc,QAAQ,EAAE;QAC3C,EAAC;AAID,YAAIC,QAAM,CAAC,EAAE,SAAS,mBAAmB,UAAU,KAAK,EAAE;AAE1D,YAAI,YAAY,CAAC,CAACA,SAAQ,WAAY;AACrC,cAAI,MAAM,SAAS,cAAc,KAAK;AACtC,cAAI,YAAY;AAChB,kBAAQ,IAAI,cAAc,IAAI,WAAW,kBAAkB;QAC5D,EAAC;AAID,YAAI,MAAM,CAACA,SAAQ,WAAY;AAC9B,cAAI;AACH,gBAAI,MAAM,SAAS,cAAc,KAAK;AACtC,gBAAI,YAAY;AAEhB,gBAAI,QAAQ,IAAI;AAChB,kBAAM,MAAM,WAAW;AAEvB,mBAAO,SAAU,OAAO,MAAM,QAAQ;UAExC,SAAUjB,IAAG;AACX,mBAAO;UACT;QACA,EAAC;AAID,YAAI,MAAM,UAAU,SAAS,QAAQ,KAAK,MAAM;AAGhD,YAAI,QAAQ,UAAU,SAAS,QAAQ,OAAO,MAAM;AAEpD,iBAAS,kBAAkB,KAAK;AAC/B,iBAAO,UAAU,UAAU,YAAW,EAAG,QAAQ,GAAG,KAAK;QAC1D;AAGA,YAAA,UAAe;UACd;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA,QAAQgB;UACR,KAAKC;UACL;UACA;UACA;UACA;QACD;ACnNA,YAAI,eAAiB,QAAQ,YAAY,kBAAoB;AAC7D,YAAI,eAAiB,QAAQ,YAAY,kBAAoB;AAC7D,YAAI,aAAiB,QAAQ,YAAY,gBAAoB;AAC7D,YAAI,iBAAiB,QAAQ,YAAY,oBAAoB;AAC7D,YAAI,SAAS;UACZ,YAAc;UACd,WAAc;UACd,UAAc;UACd,aAAc;QACf;AACA,YAAI,SAAS;UACZ,YAAc;UACd,WAAc;UACd,UAAc;UACd,aAAc;QACf;AACA,YAAI,YAAY,CAAA;AAChB,YAAI,sBAAsB;AAKnB,iBAAS,mBAAmB,KAAK,MAAM,SAAS;AACtD,cAAI,SAAS,cAAc;AAC1B,mCAAsB;UACxB;AACC,cAAI,CAAC,OAAO,IAAI,GAAG;AAClB,oBAAQ,KAAK,0BAA0B,IAAI;AAC3C,mBAAO;UACT;AACC,oBAAU,OAAO,IAAI,EAAE,KAAK,MAAM,OAAO;AACzC,cAAI,iBAAiB,OAAO,IAAI,GAAG,SAAS,KAAK;AACjD,iBAAO;QACR;AAEO,iBAAS,sBAAsB,KAAK,MAAM,SAAS;AACzD,cAAI,CAAC,OAAO,IAAI,GAAG;AAClB,oBAAQ,KAAK,0BAA0B,IAAI;AAC3C;UACF;AACC,cAAI,oBAAoB,OAAO,IAAI,GAAG,SAAS,KAAK;QACrD;AAEA,iBAAS,mBAAmBjB,IAAG;AAC9B,oBAAUA,GAAE,SAAS,IAAIA;QAC1B;AAEA,iBAAS,mBAAmBA,IAAG;AAC9B,cAAI,UAAUA,GAAE,SAAS,GAAG;AAC3B,sBAAUA,GAAE,SAAS,IAAIA;UAC3B;QACA;AAEA,iBAAS,iBAAiBA,IAAG;AAC5B,iBAAO,UAAUA,GAAE,SAAS;QAC7B;AAEA,iBAAS,yBAAyB;AAEjC,cAAI,CAAC,qBAAqB;AAEzB,qBAAS,iBAAiB,cAAc,oBAAoB,IAAI;AAChE,qBAAS,iBAAiB,cAAc,oBAAoB,IAAI;AAChE,qBAAS,iBAAiB,YAAY,kBAAkB,IAAI;AAC5D,qBAAS,iBAAiB,gBAAgB,kBAAkB,IAAI;AAEhE,kCAAsB;UACxB;QACA;AAEA,iBAAS,eAAe,SAASA,IAAG;AACnC,cAAIA,GAAE,iBAAiBA,GAAE,wBAAwB,UAAU;AAAE;UAAO;AAEpE,UAAAA,GAAE,UAAU,CAAA;AACZ,mBAAS,KAAK,WAAW;AACxB,YAAAA,GAAE,QAAQ,KAAK,UAAU,CAAC,CAAC;UAC7B;AACC,UAAAA,GAAE,iBAAiB,CAACA,EAAC;AAErB,kBAAQA,EAAC;QACV;AAEA,iBAAS,gBAAgB,SAASA,IAAG;AAEpC,cAAIA,GAAE,wBAAwBA,GAAE,gBAAgBA,GAAE,sBAAsB;AACvEkB,2BAAwBlB,EAAC;UAC3B;AACC,yBAAe,SAASA,EAAC;QAC1B;ACvFA,iBAAS,aAAa,OAAO;AAG5B,cAAI,WAAW,CAAA,GACX,MAAM;AACV,eAAK,KAAK,OAAO;AAChB,mBAAO,MAAM,CAAC;AACd,qBAAS,CAAC,IAAI,QAAQ,KAAK,OAAO,KAAK,KAAK,KAAK,IAAI;UACvD;AACC,kBAAQ;AACR,mBAAS,OAAO;AAChB,mBAAS,SAAS;AAClB,mBAAS,YAAY;AACrB,mBAAS,aAAa;AACtB,iBAAO;QACR;AAEA,YAAI,QAAQ;AACL,iBAAS,qBAAqB,KAAK,SAAS;AAElD,cAAI,iBAAiB,YAAY,OAAO;AAKxC,cAAI,OAAO,GACP;AACJ,mBAAS,YAAYA,IAAG;AACvB,gBAAIA,GAAE,WAAW,GAAG;AACnB,uBAASA,GAAE;AACX;YACH;AAEE,gBAAIA,GAAE,gBAAgB,WACpBA,GAAE,sBAAsB,CAACA,GAAE,mBAAmB,kBAAmB;AAElE;YACH;AAOE,gBAAImB,QAAOC,mBAA4BpB,EAAC;AACxC,gBAAImB,MAAK,KAAK,SAAU,IAAI;AAC3B,qBAAO,cAAc,oBAAoB,GAAG,WAAW;YAC1D,CAAG,KACA,CAACA,MAAK,KAAK,SAAU,IAAI;AACxB,qBACC,cAAc,oBACd,cAAc;YAEnB,CAAI,GACA;AACD;YACH;AAEE,gBAAIE,OAAM,KAAK,IAAG;AAClB,gBAAIA,OAAM,QAAQ,OAAO;AACxB;AACA,kBAAI,WAAW,GAAG;AACjB,wBAAQ,aAAarB,EAAC,CAAC;cAC3B;YACA,OAAS;AACN,uBAAS;YACZ;AACE,mBAAOqB;UACT;AAEC,cAAI,iBAAiB,SAAS,WAAW;AAEzC,iBAAO;YACN,UAAU;YACV;UACF;QACA;AAEO,iBAAS,wBAAwB,KAAK,UAAU;AACtD,cAAI,oBAAoB,YAAY,SAAS,QAAQ;AACrD,cAAI,oBAAoB,SAAS,SAAS,WAAW;QACtD;ACvEO,YAAI,YAAY;UACtB,CAAC,aAAa,mBAAmB,cAAc,gBAAgB,aAAa;QAAC;AAOvE,YAAI,aAAa;UACvB,CAAC,oBAAoB,cAAc,eAAe,iBAAiB,cAAc;QAAC;AAI5E,YAAIC,kBACV,eAAe,sBAAsB,eAAe,gBAAgB,aAAa,QAAQ;AAMnF,iBAAS,IAAIjC,MAAI;AACvB,iBAAO,OAAOA,SAAO,WAAW,SAAS,eAAeA,IAAE,IAAIA;QAC/D;AAKO,iBAASkC,UAAS,IAAIR,QAAO;AACnC,cAAI,QAAQ,GAAG,MAAMA,MAAK,KAAM,GAAG,gBAAgB,GAAG,aAAaA,MAAK;AAExE,eAAK,CAAC,SAAS,UAAU,WAAW,SAAS,aAAa;AACzD,gBAAIS,OAAM,SAAS,YAAY,iBAAiB,IAAI,IAAI;AACxD,oBAAQA,OAAMA,KAAIT,MAAK,IAAI;UAC7B;AACC,iBAAO,UAAU,SAAS,OAAO;QAClC;AAIO,iBAAS1C,SAAO,SAAS,WAAW,WAAW;AACrD,cAAI,KAAK,SAAS,cAAc,OAAO;AACvC,aAAG,YAAY,aAAa;AAE5B,cAAI,WAAW;AACd,sBAAU,YAAY,EAAE;UAC1B;AACC,iBAAO;QACR;AAIO,iBAAS,OAAO,IAAI;AAC1B,cAAI,SAAS,GAAG;AAChB,cAAI,QAAQ;AACX,mBAAO,YAAY,EAAE;UACvB;QACA;AAIO,iBAAS,MAAM,IAAI;AACzB,iBAAO,GAAG,YAAY;AACrB,eAAG,YAAY,GAAG,UAAU;UAC9B;QACA;AAIO,iBAAS,QAAQ,IAAI;AAC3B,cAAI,SAAS,GAAG;AAChB,cAAI,UAAU,OAAO,cAAc,IAAI;AACtC,mBAAO,YAAY,EAAE;UACvB;QACA;AAIO,iBAAS,OAAO,IAAI;AAC1B,cAAI,SAAS,GAAG;AAChB,cAAI,UAAU,OAAO,eAAe,IAAI;AACvC,mBAAO,aAAa,IAAI,OAAO,UAAU;UAC3C;QACA;AAIO,iBAASoD,UAAS,IAAIrC,OAAM;AAClC,cAAI,GAAG,cAAc,QAAW;AAC/B,mBAAO,GAAG,UAAU,SAASA,KAAI;UACnC;AACC,cAAI,YAAY,SAAS,EAAE;AAC3B,iBAAO,UAAU,SAAS,KAAK,IAAI,OAAO,YAAYA,QAAO,SAAS,EAAE,KAAK,SAAS;QACvF;AAIO,iBAASsC,UAAS,IAAItC,OAAM;AAClC,cAAI,GAAG,cAAc,QAAW;AAC/B,gBAAI,UAAUQ,WAAgBR,KAAI;AAClC,qBAAS,IAAI,GAAG,MAAM,QAAQ,QAAQ,IAAI,KAAK,KAAK;AACnD,iBAAG,UAAU,IAAI,QAAQ,CAAC,CAAC;YAC9B;UACA,WAAY,CAACqC,UAAS,IAAIrC,KAAI,GAAG;AAC/B,gBAAI,YAAY,SAAS,EAAE;AAC3B,qBAAS,KAAK,YAAY,YAAY,MAAM,MAAMA,KAAI;UACxD;QACA;AAIO,iBAASuC,aAAY,IAAIvC,OAAM;AACrC,cAAI,GAAG,cAAc,QAAW;AAC/B,eAAG,UAAU,OAAOA,KAAI;UAC1B,OAAQ;AACN,qBAAS,IAAIwC,OAAW,MAAM,SAAS,EAAE,IAAI,KAAK,QAAQ,MAAMxC,QAAO,KAAK,GAAG,CAAC,CAAC;UACnF;QACA;AAIO,iBAAS,SAAS,IAAIA,OAAM;AAClC,cAAI,GAAG,UAAU,YAAY,QAAW;AACvC,eAAG,YAAYA;UACjB,OAAQ;AAEN,eAAG,UAAU,UAAUA;UACzB;QACA;AAIO,iBAAS,SAAS,IAAI;AAG5B,cAAI,GAAG,sBAAsB;AAC5B,iBAAK,GAAG;UACV;AACC,iBAAO,GAAG,UAAU,YAAY,SAAY,GAAG,YAAY,GAAG,UAAU;QACzE;AAKO,iBAAS,WAAW,IAAI,OAAO;AACrC,cAAI,aAAa,GAAG,OAAO;AAC1B,eAAG,MAAM,UAAU;UACrB,WAAY,YAAY,GAAG,OAAO;AAChC,0BAAc,IAAI,KAAK;UACzB;QACA;AAEA,iBAAS,cAAc,IAAI,OAAO;AACjC,cAAI,SAAS,OACT,aAAa;AAGjB,cAAI;AACH,qBAAS,GAAG,QAAQ,KAAK,UAAU;UACrC,SAAUY,IAAG;AAGX,gBAAI,UAAU,GAAG;AAAE;YAAO;UAC5B;AAEC,kBAAQ,KAAK,MAAM,QAAQ,GAAG;AAE9B,cAAI,QAAQ;AACX,mBAAO,UAAW,UAAU;AAC5B,mBAAO,UAAU;UACnB,OAAQ;AACN,eAAG,MAAM,UAAU,aAAa,aAAa,cAAc,QAAQ;UACrE;QACA;AAMO,iBAAS,SAAS,OAAO;AAC/B,cAAIe,SAAQ,SAAS,gBAAgB;AAErC,mBAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACtC,gBAAI,MAAM,CAAC,KAAKA,QAAO;AACtB,qBAAO,MAAM,CAAC;YACjB;UACA;AACC,iBAAO;QACR;AAMO,iBAAS,aAAa,IAAI,QAAQJ,QAAO;AAC/C,cAAI,MAAM,UAAU,IAAIV,OAAM,GAAG,CAAC;AAElC,aAAG,MAAM,SAAS,KAChB,QAAQ,OACR,eAAe,IAAI,IAAI,QAAQ,IAAI,IAAI,QACvC,iBAAiB,IAAI,IAAI,QAAQ,IAAI,IAAI,YACzCU,SAAQ,YAAYA,SAAQ,MAAM;QACrC;AAMO,iBAAS,YAAY,IAAIP,QAAO;AAGtC,aAAG,eAAeA;AAGlB,cAAI,QAAQ,OAAO;AAClB,yBAAa,IAAIA,MAAK;UACxB,OAAQ;AACN,eAAG,MAAM,OAAOA,OAAM,IAAI;AAC1B,eAAG,MAAM,MAAMA,OAAM,IAAI;UAC3B;QACA;AAIO,iBAASyB,aAAY,IAAI;AAI/B,iBAAO,GAAG,gBAAgB,IAAI5B,OAAM,GAAG,CAAC;QACzC;AAUO,YAAI;AACJ,YAAI;AACX,YAAI;AACJ,YAAI,mBAAmB,UAAU;AAChC,iCAAuB,WAAY;AAClC6B,eAAY,QAAQ,eAAeZ,cAAuB;UAC5D;AACC,gCAAsB,WAAY;AACjCa,gBAAa,QAAQ,eAAeb,cAAuB;UAC7D;QACA,OAAO;AACN,cAAI,qBAAqB;YACxB,CAAC,cAAc,oBAAoB,eAAe,iBAAiB,cAAc;UAAC;AAEnF,iCAAuB,WAAY;AAClC,gBAAI,oBAAoB;AACvB,kBAAIH,SAAQ,SAAS,gBAAgB;AACrC,4BAAcA,OAAM,kBAAkB;AACtC,cAAAA,OAAM,kBAAkB,IAAI;YAC/B;UACA;AACC,gCAAsB,WAAY;AACjC,gBAAI,oBAAoB;AACvB,uBAAS,gBAAgB,MAAM,kBAAkB,IAAI;AACrD,4BAAc;YACjB;UACA;QACA;AAKO,iBAAS,mBAAmB;AAClCe,aAAY,QAAQ,aAAaZ,cAAuB;QACzD;AAIO,iBAAS,kBAAkB;AACjCa,cAAa,QAAQ,aAAab,cAAuB;QAC1D;AAEA,YAAI,iBAAiB;AAMd,iBAAS,eAAe,SAAS;AACvC,iBAAO,QAAQ,aAAa,IAAI;AAC/B,sBAAU,QAAQ;UACpB;AACC,cAAI,CAAC,QAAQ,OAAO;AAAE;UAAO;AAC7B,yBAAc;AACd,4BAAkB;AAClB,0BAAgB,QAAQ,MAAM;AAC9B,kBAAQ,MAAM,eAAe;AAC7BY,aAAY,QAAQ,WAAW,cAAc;QAC9C;AAIO,iBAAS,iBAAiB;AAChC,cAAI,CAAC,iBAAiB;AAAE;UAAO;AAC/B,0BAAgB,MAAM,eAAe;AACrC,4BAAkB;AAClB,0BAAgB;AAChBC,cAAa,QAAQ,WAAW,cAAc;QAC/C;AAIO,iBAAS,mBAAmB,SAAS;AAC3C,aAAG;AACF,sBAAU,QAAQ;UACpB,UAAW,CAAC,QAAQ,eAAe,CAAC,QAAQ,iBAAiB,YAAY,SAAS;AACjF,iBAAO;QACR;AAMO,iBAASC,UAAS,SAAS;AACjC,cAAI,OAAO,QAAQ,sBAAqB;AAExC,iBAAO;YACN,GAAG,KAAK,QAAQ,QAAQ,eAAe;YACvC,GAAG,KAAK,SAAS,QAAQ,gBAAgB;YACzC,oBAAoB;UACtB;QACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACrUO,iBAAS,GAAG,KAAK,OAAO,IAAI,SAAS;AAE3C,cAAI,SAAS,OAAO,UAAU,UAAU;AACvC,qBAAS,QAAQ,OAAO;AACvB,qBAAO,KAAK,MAAM,MAAM,IAAI,GAAG,EAAE;YACpC;UACA,OAAQ;AACN,oBAAQpC,WAAgB,KAAK;AAE7B,qBAAS,IAAI,GAAG,MAAM,MAAM,QAAQ,IAAI,KAAK,KAAK;AACjD,qBAAO,KAAK,MAAM,CAAC,GAAG,IAAI,OAAO;YACpC;UACA;AAEC,iBAAO;QACR;AAEA,YAAI,YAAY;AAkBT,iBAAS,IAAI,KAAK,OAAO,IAAI,SAAS;AAE5C,cAAI,UAAU,WAAW,GAAG;AAC3B,wBAAY,GAAG;AACf,mBAAO,IAAI,SAAS;UAEtB,WAAY,SAAS,OAAO,UAAU,UAAU;AAC9C,qBAAS,QAAQ,OAAO;AACvB,wBAAU,KAAK,MAAM,MAAM,IAAI,GAAG,EAAE;YACvC;UAEA,OAAQ;AACN,oBAAQA,WAAgB,KAAK;AAE7B,gBAAI,UAAU,WAAW,GAAG;AAC3B,0BAAY,KAAK,SAAUqC,OAAM;AAChC,uBAAOC,SAAa,OAAOD,KAAI,MAAM;cACzC,CAAI;YACJ,OAAS;AACN,uBAAS,IAAI,GAAG,MAAM,MAAM,QAAQ,IAAI,KAAK,KAAK;AACjD,0BAAU,KAAK,MAAM,CAAC,GAAG,IAAI,OAAO;cACxC;YACA;UACA;AAEC,iBAAO;QACR;AAEA,iBAAS,YAAY,KAAK,UAAU;AACnC,mBAAS5C,QAAM,IAAI,SAAS,GAAG;AAC9B,gBAAI,OAAOA,KAAG,MAAM,IAAI,EAAE,CAAC;AAC3B,gBAAI,CAAC,YAAY,SAAS,IAAI,GAAG;AAChC,wBAAU,KAAK,MAAM,MAAM,MAAMA,IAAE;YACtC;UACA;QACA;AAEA,YAAI,aAAa;UAChB,YAAY;UACZ,YAAY;UACZ,OAAO,EAAE,aAAa,WAAW;QAClC;AAEA,iBAAS,OAAO,KAAK,MAAM,IAAI,SAAS;AACvC,cAAIA,OAAK,OAAOU,MAAW,EAAE,KAAK,UAAU,MAAMA,MAAW,OAAO,IAAI;AAExE,cAAI,IAAI,SAAS,KAAK,IAAI,SAAS,EAAEV,IAAE,GAAG;AAAE,mBAAO;UAAK;AAExD,cAAI,UAAU,SAAUW,IAAG;AAC1B,mBAAO,GAAG,KAAK,WAAW,KAAKA,MAAK,OAAO,KAAK;UAClD;AAEC,cAAI,kBAAkB;AAEtB,cAAI,CAAC,QAAQ,eAAe,QAAQ,WAAW,KAAK,QAAQ,OAAO,MAAM,GAAG;AAE3E,sBAAU,mBAAmB,KAAK,MAAM,OAAO;UAEjD,WAAY,QAAQ,SAAU,SAAS,YAAa;AAClD,sBAAU,qBAAqB,KAAK,OAAO;UAE7C,WAAY,sBAAsB,KAAK;AAErC,gBAAI,SAAS,gBAAgB,SAAS,eAAe,SAAS,WAAY,SAAS,cAAc;AAChG,kBAAI,iBAAiB,WAAW,IAAI,KAAK,MAAM,SAAS,QAAQ,gBAAgB,EAAC,SAAS,MAAK,IAAI,KAAK;YAE3G,WAAa,SAAS,gBAAgB,SAAS,cAAc;AAC1D,wBAAU,SAAUA,IAAG;AACtB,gBAAAA,KAAIA,MAAK,OAAO;AAChB,oBAAI,iBAAiB,KAAKA,EAAC,GAAG;AAC7B,kCAAgBA,EAAC;gBACtB;cACA;AACG,kBAAI,iBAAiB,WAAW,IAAI,GAAG,SAAS,KAAK;YAExD,OAAS;AACN,kBAAI,iBAAiB,MAAM,iBAAiB,KAAK;YACpD;UAEA,OAAQ;AACN,gBAAI,YAAY,OAAO,MAAM,OAAO;UACtC;AAEC,cAAI,SAAS,IAAI,IAAI,SAAS,KAAK,CAAA;AACnC,cAAI,SAAS,EAAEX,IAAE,IAAI;QACtB;AAEA,iBAAS,UAAU,KAAK,MAAM,IAAI,SAASA,MAAI;AAC9C,UAAAA,OAAKA,QAAM,OAAOU,MAAW,EAAE,KAAK,UAAU,MAAMA,MAAW,OAAO,IAAI;AAC1E,cAAI,UAAU,IAAI,SAAS,KAAK,IAAI,SAAS,EAAEV,IAAE;AAEjD,cAAI,CAAC,SAAS;AAAE,mBAAO;UAAK;AAE5B,cAAI,CAAC,QAAQ,eAAe,QAAQ,WAAW,KAAK,QAAQ,OAAO,MAAM,GAAG;AAC3E,kCAAsB,KAAK,MAAM,OAAO;UAE1C,WAAY,QAAQ,SAAU,SAAS,YAAa;AAClD,oCAAwB,KAAK,OAAO;UAEtC,WAAY,yBAAyB,KAAK;AAExC,gBAAI,oBAAoB,WAAW,IAAI,KAAK,MAAM,SAAS,KAAK;UAElE,OAAQ;AACN,gBAAI,YAAY,OAAO,MAAM,OAAO;UACtC;AAEC,cAAI,SAAS,EAAEA,IAAE,IAAI;QACtB;AASO,iBAAS,gBAAgBW,IAAG;AAElC,cAAIA,GAAE,iBAAiB;AACtB,YAAAA,GAAE,gBAAe;UACnB,WAAYA,GAAE,eAAe;AAC3B,YAAAA,GAAE,cAAc,WAAW;UAC7B,OAAQ;AACN,YAAAA,GAAE,eAAe;UACnB;AAEC,iBAAO;QACR;AAIO,iBAAS,yBAAyB,IAAI;AAC5C,iBAAO,IAAI,SAAS,eAAe;AACnC,iBAAO;QACR;AAKO,iBAAS,wBAAwB,IAAI;AAC3C,aAAG,IAAI,6CAA6C,eAAe;AACnE,aAAG,wBAAwB,IAAI;AAC/B,iBAAO;QACR;AAOO,iBAAS,eAAeA,IAAG;AACjC,cAAIA,GAAE,gBAAgB;AACrB,YAAAA,GAAE,eAAc;UAClB,OAAQ;AACN,YAAAA,GAAE,cAAc;UAClB;AACC,iBAAO;QACR;AAIO,iBAAS,KAAKA,IAAG;AACvB,yBAAeA,EAAC;AAChB,0BAAgBA,EAAC;AACjB,iBAAO;QACR;AAMO,iBAAS,mBAAmB,IAAI;AACtC,cAAI,GAAG,cAAc;AACpB,mBAAO,GAAG,aAAY;UACxB;AAEC,cAAImB,QAAO,CAAA;AACX,cAAI,KAAK,GAAG;AAEZ,iBAAO,IAAI;AACV,YAAAA,MAAK,KAAK,EAAE;AACZ,iBAAK,GAAG;UACV;AACC,iBAAOA;QACR;AAMO,iBAAS,iBAAiBnB,IAAG,WAAW;AAC9C,cAAI,CAAC,WAAW;AACf,mBAAO,IAAIC,OAAMD,GAAE,SAASA,GAAE,OAAO;UACvC;AAEC,cAAIW,SAAQqB,UAAS,SAAS,GAC1B,SAASrB,OAAM;AAEnB,iBAAO,IAAIV;;;aAGTD,GAAE,UAAU,OAAO,QAAQW,OAAM,IAAI,UAAU;aAC/CX,GAAE,UAAU,OAAO,OAAOW,OAAM,IAAI,UAAU;UACjD;QACA;AAOA,YAAI,gBACF,QAAQ,SAAS,QAAQ,SAAU,OAAO,mBAC3C,QAAQ,MAAM,OAAO,mBAAmB,IACxC,OAAO,mBAAmB,IAAI,IAAI,OAAO,mBAAmB;AAMtD,iBAAS,cAAcX,IAAG;AAChC,iBAAQ,QAAQ,OAAQA,GAAE,cAAc;;YAChCA,GAAE,UAAUA,GAAE,cAAc,IAAK,CAACA,GAAE,SAAS;;cAC7CA,GAAE,UAAUA,GAAE,cAAc,IAAK,CAACA,GAAE,SAAS;;gBAC7CA,GAAE,UAAUA,GAAE,cAAc,IAAK,CAACA,GAAE,SAAS;;kBAC7CA,GAAE,UAAUA,GAAE,SAAU;;oBACzBA,GAAE,cAAcA,GAAE,eAAeA,GAAE,cAAc;;sBAChDA,GAAE,UAAU,KAAK,IAAIA,GAAE,MAAM,IAAI,QAAS,CAACA,GAAE,SAAS;;wBACvDA,GAAE,SAASA,GAAE,SAAS,SAAS;;0BAC/B;;;;;;;;;QACR;AAGO,iBAAS,iBAAiB,IAAIA,IAAG;AAEvC,cAAI,UAAUA,GAAE;AAEhB,cAAI,CAAC,SAAS;AAAE,mBAAO;UAAK;AAE5B,cAAI;AACH,mBAAO,WAAY,YAAY,IAAK;AACnC,wBAAU,QAAQ;YACrB;UACA,SAAU,KAAK;AACb,mBAAO;UACT;AACC,iBAAQ,YAAY;QACrB;;;;;;;;;;;;;;;;;AC/QU,YAAC,eAAe,QAAQ,OAAO;;;;;;UAOxC,KAAK,SAAU,IAAI,QAAQ,UAAU,eAAe;AACnD,iBAAK,KAAI;AAET,iBAAK,MAAM;AACX,iBAAK,cAAc;AACnB,iBAAK,YAAY,YAAY;AAC7B,iBAAK,gBAAgB,IAAI,KAAK,IAAI,iBAAiB,KAAK,GAAG;AAE3D,iBAAK,YAAYmC,aAAoB,EAAE;AACvC,iBAAK,UAAU,OAAO,SAAS,KAAK,SAAS;AAC7C,iBAAK,aAAa,CAAC,oBAAI,KAAI;AAI3B,iBAAK,KAAK,OAAO;AAEjB,iBAAK,SAAQ;UACf;;;UAIC,MAAM,WAAY;AACjB,gBAAI,CAAC,KAAK,aAAa;AAAE;YAAO;AAEhC,iBAAK,MAAM,IAAI;AACf,iBAAK,UAAS;UAChB;UAEC,UAAU,WAAY;AAErB,iBAAK,UAAUC,iBAAsB,KAAK,UAAU,IAAI;AACxD,iBAAK,MAAK;UACZ;UAEC,OAAO,SAAUjC,QAAO;AACvB,gBAAI,UAAW,CAAC,oBAAI,KAAI,IAAM,KAAK,YAC/B,WAAW,KAAK,YAAY;AAEhC,gBAAI,UAAU,UAAU;AACvB,mBAAK,UAAU,KAAK,SAAS,UAAU,QAAQ,GAAGA,MAAK;YAC1D,OAAS;AACN,mBAAK,UAAU,CAAC;AAChB,mBAAK,UAAS;YACjB;UACA;UAEC,WAAW,SAAU,UAAUA,QAAO;AACrC,gBAAI,MAAM,KAAK,UAAU,IAAI,KAAK,QAAQ,WAAW,QAAQ,CAAC;AAC9D,gBAAIA,QAAO;AACV,kBAAI,OAAM;YACb;AACEkC,wBAAoB,KAAK,KAAK,GAAG;AAIjC,iBAAK,KAAK,MAAM;UAClB;UAEC,WAAW,WAAY;AACtBC,4BAAqB,KAAK,OAAO;AAEjC,iBAAK,cAAc;AAGnB,iBAAK,KAAK,KAAK;UACjB;UAEC,UAAU,SAAUC,IAAG;AACtB,mBAAO,IAAI,KAAK,IAAI,IAAIA,IAAG,KAAK,aAAa;UAC/C;QACA,CAAC;ACjFS,YAACC,OAAM,QAAQ,OAAO;UAE/B,SAAS;;;;;YAKR,KAAK;;;YAIL,QAAQ;;;YAIR,MAAM;;;;;YAMN,SAAS;;;;;YAMT,SAAS;;;YAIT,QAAQ,CAAA;;;;;;YAOR,WAAW;;;;YAKX,UAAU;;;;;YAOV,eAAe;;;YAIf,wBAAwB;;;;YAKxB,eAAe;;;;;YAMf,qBAAqB;;;;;YAMrB,kBAAkB;;;;;;;;;YASlB,UAAU;;;;;;YAOV,WAAW;;;YAIX,aAAa;UACf;UAEC,YAAY,SAAUnD,MAAIN,UAAS;AAClC,YAAAA,WAAUO,WAAgB,MAAMP,QAAO;AAIvC,iBAAK,YAAY,CAAA;AACjB,iBAAK,UAAU,CAAA;AACf,iBAAK,mBAAmB,CAAA;AACxB,iBAAK,eAAe;AAEpB,iBAAK,eAAeM,IAAE;AACtB,iBAAK,YAAW;AAGhB,iBAAK,YAAYoD,KAAU,KAAK,WAAW,IAAI;AAE/C,iBAAK,YAAW;AAEhB,gBAAI1D,SAAQ,WAAW;AACtB,mBAAK,aAAaA,SAAQ,SAAS;YACtC;AAEE,gBAAIA,SAAQ,SAAS,QAAW;AAC/B,mBAAK,QAAQ,KAAK,WAAWA,SAAQ,IAAI;YAC5C;AAEE,gBAAIA,SAAQ,UAAUA,SAAQ,SAAS,QAAW;AACjD,mBAAK,QAAQ,SAASA,SAAQ,MAAM,GAAGA,SAAQ,MAAM,EAAC,OAAO,KAAI,CAAC;YACrE;AAEE,iBAAK,cAAa;AAGlB,iBAAK,gBAAgB2D,cAAsB,QAAQ,SAAS,CAAC,QAAQ,eACnE,KAAK,QAAQ;AAIf,gBAAI,KAAK,eAAe;AACvB,mBAAK,iBAAgB;AACrBZ,iBAAY,KAAK,QAAQa,iBAAwB,KAAK,qBAAqB,IAAI;YAClF;AAEE,iBAAK,WAAW,KAAK,QAAQ,MAAM;UACrC;;;;;UAQC,SAAS,SAAU,QAAQjC,OAAM3B,UAAS;AAEzC,YAAA2B,QAAOA,UAAS,SAAY,KAAK,QAAQ,KAAK,WAAWA,KAAI;AAC7D,qBAAS,KAAK,aAAa,SAAS,MAAM,GAAGA,OAAM,KAAK,QAAQ,SAAS;AACzE,YAAA3B,WAAUA,YAAW,CAAA;AAErB,iBAAK,MAAK;AAEV,gBAAI,KAAK,WAAW,CAACA,SAAQ,SAASA,aAAY,MAAM;AAEvD,kBAAIA,SAAQ,YAAY,QAAW;AAClC,gBAAAA,SAAQ,OAAOS,QAAY,EAAC,SAAST,SAAQ,QAAO,GAAGA,SAAQ,IAAI;AACnE,gBAAAA,SAAQ,MAAMS,QAAY,EAAC,SAAST,SAAQ,SAAS,UAAUA,SAAQ,SAAQ,GAAGA,SAAQ,GAAG;cACjG;AAGG,kBAAI,QAAS,KAAK,UAAU2B,QAC3B,KAAK,oBAAoB,KAAK,iBAAiB,QAAQA,OAAM3B,SAAQ,IAAI,IACzE,KAAK,gBAAgB,QAAQA,SAAQ,GAAG;AAEzC,kBAAI,OAAO;AAEV,6BAAa,KAAK,UAAU;AAC5B,uBAAO;cACX;YACA;AAGE,iBAAK,WAAW,QAAQ2B,OAAM3B,SAAQ,OAAOA,SAAQ,IAAI,WAAW;AAEpE,mBAAO;UACT;;;UAIC,SAAS,SAAU2B,OAAM3B,UAAS;AACjC,gBAAI,CAAC,KAAK,SAAS;AAClB,mBAAK,QAAQ2B;AACb,qBAAO;YACV;AACE,mBAAO,KAAK,QAAQ,KAAK,UAAS,GAAIA,OAAM,EAAC,MAAM3B,SAAO,CAAC;UAC7D;;;UAIC,QAAQ,SAAU,OAAOA,UAAS;AACjC,oBAAQ,UAAU,QAAQ,QAAQ,KAAK,QAAQ,YAAY;AAC3D,mBAAO,KAAK,QAAQ,KAAK,QAAQ,OAAOA,QAAO;UACjD;;;UAIC,SAAS,SAAU,OAAOA,UAAS;AAClC,oBAAQ,UAAU,QAAQ,QAAQ,KAAK,QAAQ,YAAY;AAC3D,mBAAO,KAAK,QAAQ,KAAK,QAAQ,OAAOA,QAAO;UACjD;;;;;;;UAQC,eAAe,SAAU,QAAQ2B,OAAM3B,UAAS;AAC/C,gBAAI4B,SAAQ,KAAK,aAAaD,KAAI,GAC9B,WAAW,KAAK,QAAO,EAAG,SAAS,CAAC,GACpC,iBAAiB,kBAAkBT,SAAQ,SAAS,KAAK,uBAAuB,MAAM,GAEtF,eAAe,eAAe,SAAS,QAAQ,EAAE,WAAW,IAAI,IAAIU,MAAK,GACzE,YAAY,KAAK,uBAAuB,SAAS,IAAI,YAAY,CAAC;AAEtE,mBAAO,KAAK,QAAQ,WAAWD,OAAM,EAAC,MAAM3B,SAAO,CAAC;UACtD;UAEC,sBAAsB,SAAU,QAAQA,UAAS;AAEhD,YAAAA,WAAUA,YAAW,CAAA;AACrB,qBAAS,OAAO,YAAY,OAAO,UAAS,IAAK,eAAe,MAAM;AAEtE,gBAAI,YAAY,QAAQA,SAAQ,kBAAkBA,SAAQ,WAAW,CAAC,GAAG,CAAC,CAAC,GACvE,YAAY,QAAQA,SAAQ,sBAAsBA,SAAQ,WAAW,CAAC,GAAG,CAAC,CAAC,GAE3E2B,QAAO,KAAK,cAAc,QAAQ,OAAO,UAAU,IAAI,SAAS,CAAC;AAErE,YAAAA,QAAQ,OAAO3B,SAAQ,YAAY,WAAY,KAAK,IAAIA,SAAQ,SAAS2B,KAAI,IAAIA;AAEjF,gBAAIA,UAAS,UAAU;AACtB,qBAAO;gBACN,QAAQ,OAAO,UAAS;gBACxB,MAAMA;cACV;YACA;AAEE,gBAAI,gBAAgB,UAAU,SAAS,SAAS,EAAE,SAAS,CAAC,GAExD,UAAU,KAAK,QAAQ,OAAO,aAAY,GAAIA,KAAI,GAClD,UAAU,KAAK,QAAQ,OAAO,aAAY,GAAIA,KAAI,GAClD,SAAS,KAAK,UAAU,QAAQ,IAAI,OAAO,EAAE,SAAS,CAAC,EAAE,IAAI,aAAa,GAAGA,KAAI;AAErF,mBAAO;cACN;cACA,MAAMA;YACT;UACA;;;;UAKC,WAAW,SAAU,QAAQ3B,UAAS;AAErC,qBAAS,eAAe,MAAM;AAE9B,gBAAI,CAAC,OAAO,QAAO,GAAI;AACtB,oBAAM,IAAI,MAAM,uBAAuB;YAC1C;AAEE,gBAAI,SAAS,KAAK,qBAAqB,QAAQA,QAAO;AACtD,mBAAO,KAAK,QAAQ,OAAO,QAAQ,OAAO,MAAMA,QAAO;UACzD;;;;UAKC,UAAU,SAAUA,UAAS;AAC5B,mBAAO,KAAK,UAAU,CAAC,CAAC,KAAK,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAGA,QAAO;UACzD;;;UAIC,OAAO,SAAU,QAAQA,UAAS;AACjC,mBAAO,KAAK,QAAQ,QAAQ,KAAK,OAAO,EAAC,KAAKA,SAAO,CAAC;UACxD;;;UAIC,OAAO,SAAU,QAAQA,UAAS;AACjC,qBAAS,QAAQ,MAAM,EAAE,MAAK;AAC9B,YAAAA,WAAUA,YAAW,CAAA;AAErB,gBAAI,CAAC,OAAO,KAAK,CAAC,OAAO,GAAG;AAC3B,qBAAO,KAAK,KAAK,SAAS;YAC7B;AAGE,gBAAIA,SAAQ,YAAY,QAAQ,CAAC,KAAK,QAAO,EAAG,SAAS,MAAM,GAAG;AACjE,mBAAK,WAAW,KAAK,UAAU,KAAK,QAAQ,KAAK,UAAS,CAAE,EAAE,IAAI,MAAM,CAAC,GAAG,KAAK,QAAO,CAAE;AAC1F,qBAAO;YACV;AAEE,gBAAI,CAAC,KAAK,UAAU;AACnB,mBAAK,WAAW,IAAI,aAAY;AAEhC,mBAAK,SAAS,GAAG;gBAChB,QAAQ,KAAK;gBACb,OAAO,KAAK;cAChB,GAAM,IAAI;YACV;AAGE,gBAAI,CAACA,SAAQ,aAAa;AACzB,mBAAK,KAAK,WAAW;YACxB;AAGE,gBAAIA,SAAQ,YAAY,OAAO;AAC9B6D,cAAAA,UAAiB,KAAK,UAAU,kBAAkB;AAElD,kBAAI,SAAS,KAAK,eAAc,EAAG,SAAS,MAAM,EAAE,MAAK;AACzD,mBAAK,SAAS,IAAI,KAAK,UAAU,QAAQ7D,SAAQ,YAAY,MAAMA,SAAQ,aAAa;YAC3F,OAAS;AACN,mBAAK,UAAU,MAAM;AACrB,mBAAK,KAAK,MAAM,EAAE,KAAK,SAAS;YACnC;AAEE,mBAAO;UACT;;;;UAKC,OAAO,SAAU,cAAc,YAAYA,UAAS;AAEnD,YAAAA,WAAUA,YAAW,CAAA;AACrB,gBAAIA,SAAQ,YAAY,SAAS,CAAC,QAAQ,OAAO;AAChD,qBAAO,KAAK,QAAQ,cAAc,YAAYA,QAAO;YACxD;AAEE,iBAAK,MAAK;AAEV,gBAAI8D,QAAO,KAAK,QAAQ,KAAK,UAAS,CAAE,GACpC,KAAK,KAAK,QAAQ,YAAY,GAC9BC,QAAO,KAAK,QAAO,GACnB,YAAY,KAAK;AAErB,2BAAe,SAAS,YAAY;AACpC,yBAAa,eAAe,SAAY,YAAY;AAEpD,gBAAI,KAAK,KAAK,IAAIA,MAAK,GAAGA,MAAK,CAAC,GAC5B,KAAK,KAAK,KAAK,aAAa,WAAW,UAAU,GACjD,KAAM,GAAG,WAAWD,KAAI,KAAM,GAC9B,MAAM,MACN,OAAO,MAAM;AAEjB,qBAASE,GAAE,GAAG;AACb,kBAAI,KAAK,IAAI,KAAK,GACd,KAAK,IAAI,KAAK,IACdC,MAAK,KAAK,KAAK,KAAK,KAAK,KAAK,OAAO,OAAO,KAAK,IACjDC,MAAK,IAAI,KAAK,OAAO,IACrB,IAAID,MAAKC,KACT,KAAK,KAAK,KAAK,IAAI,IAAI,CAAC,IAAI;AAI5B,kBAAIC,OAAM,KAAK,OAAc,MAAM,KAAK,IAAI,EAAE;AAElD,qBAAOA;YACV;AAEE,qBAAS,KAAKC,IAAG;AAAE,sBAAQ,KAAK,IAAIA,EAAC,IAAI,KAAK,IAAI,CAACA,EAAC,KAAK;YAAE;AAC3D,qBAAS,KAAKA,IAAG;AAAE,sBAAQ,KAAK,IAAIA,EAAC,IAAI,KAAK,IAAI,CAACA,EAAC,KAAK;YAAE;AAC3D,qBAAS,KAAKA,IAAG;AAAE,qBAAO,KAAKA,EAAC,IAAI,KAAKA,EAAC;YAAE;AAE5C,gBAAI,KAAKJ,GAAE,CAAC;AAEZ,qBAASK,GAAExC,IAAG;AAAE,qBAAO,MAAM,KAAK,EAAE,IAAI,KAAK,KAAK,MAAMA,EAAC;YAAG;AAC5D,qBAAS,EAAEA,IAAG;AAAE,qBAAO,MAAM,KAAK,EAAE,IAAI,KAAK,KAAK,MAAMA,EAAC,IAAI,KAAK,EAAE,KAAK;YAAK;AAE9E,qBAAS,QAAQ2B,IAAG;AAAE,qBAAO,IAAI,KAAK,IAAI,IAAIA,IAAG,GAAG;YAAE;AAEtD,gBAAI,QAAQ,KAAK,IAAG,GAChB,KAAKQ,GAAE,CAAC,IAAI,MAAM,KAClB,WAAWhE,SAAQ,WAAW,MAAOA,SAAQ,WAAW,MAAO,IAAI;AAEvE,qBAASsE,SAAQ;AAChB,kBAAId,MAAK,KAAK,IAAG,IAAK,SAAS,UAC3B3B,KAAI,QAAQ2B,EAAC,IAAI;AAErB,kBAAIA,MAAK,GAAG;AACX,qBAAK,cAAcH,iBAAsBiB,QAAO,IAAI;AAEpD,qBAAK;kBACJ,KAAK,UAAUR,MAAK,IAAI,GAAG,SAASA,KAAI,EAAE,WAAW,EAAEjC,EAAC,IAAI,EAAE,CAAC,GAAG,SAAS;kBAC3E,KAAK,aAAa,KAAKwC,GAAExC,EAAC,GAAG,SAAS;kBACtC,EAAC,OAAO,KAAI;gBAAC;cAElB,OAAU;AACN,qBACE,MAAM,cAAc,UAAU,EAC9B,SAAS,IAAI;cACnB;YACA;AAEE,iBAAK,WAAW,MAAM7B,SAAQ,WAAW;AAEzC,YAAAsE,OAAM,KAAK,IAAI;AACf,mBAAO;UACT;;;;UAKC,aAAa,SAAU,QAAQtE,UAAS;AACvC,gBAAI,SAAS,KAAK,qBAAqB,QAAQA,QAAO;AACtD,mBAAO,KAAK,MAAM,OAAO,QAAQ,OAAO,MAAMA,QAAO;UACvD;;;UAIC,cAAc,SAAU,QAAQ;AAC/B,qBAAS,eAAe,MAAM;AAE9B,gBAAI,KAAK,QAAQ,WAAW,KAAK,mBAAmB,GAAG;AACtD,mBAAK,IAAI,WAAW,KAAK,mBAAmB;YAC/C;AAEE,gBAAI,CAAC,OAAO,QAAO,GAAI;AACtB,mBAAK,QAAQ,YAAY;AACzB,qBAAO;YACV;AAEE,iBAAK,QAAQ,YAAY;AAEzB,gBAAI,KAAK,SAAS;AACjB,mBAAK,oBAAmB;YAC3B;AAEE,mBAAO,KAAK,GAAG,WAAW,KAAK,mBAAmB;UACpD;;;UAIC,YAAY,SAAU2B,OAAM;AAC3B,gBAAI,UAAU,KAAK,QAAQ;AAC3B,iBAAK,QAAQ,UAAUA;AAEvB,gBAAI,KAAK,WAAW,YAAYA,OAAM;AACrC,mBAAK,KAAK,kBAAkB;AAE5B,kBAAI,KAAK,QAAO,IAAK,KAAK,QAAQ,SAAS;AAC1C,uBAAO,KAAK,QAAQA,KAAI;cAC5B;YACA;AAEE,mBAAO;UACT;;;UAIC,YAAY,SAAUA,OAAM;AAC3B,gBAAI,UAAU,KAAK,QAAQ;AAC3B,iBAAK,QAAQ,UAAUA;AAEvB,gBAAI,KAAK,WAAW,YAAYA,OAAM;AACrC,mBAAK,KAAK,kBAAkB;AAE5B,kBAAI,KAAK,QAAO,IAAK,KAAK,QAAQ,SAAS;AAC1C,uBAAO,KAAK,QAAQA,KAAI;cAC5B;YACA;AAEE,mBAAO;UACT;;;UAIC,iBAAiB,SAAU,QAAQ3B,UAAS;AAC3C,iBAAK,mBAAmB;AACxB,gBAAI,SAAS,KAAK,UAAS,GACvB,YAAY,KAAK,aAAa,QAAQ,KAAK,OAAO,eAAe,MAAM,CAAC;AAE5E,gBAAI,CAAC,OAAO,OAAO,SAAS,GAAG;AAC9B,mBAAK,MAAM,WAAWA,QAAO;YAChC;AAEE,iBAAK,mBAAmB;AACxB,mBAAO;UACT;;;;;;UAOC,WAAW,SAAU,QAAQA,UAAS;AACrC,YAAAA,WAAUA,YAAW,CAAA;AAErB,gBAAI,YAAY,QAAQA,SAAQ,kBAAkBA,SAAQ,WAAW,CAAC,GAAG,CAAC,CAAC,GACvE,YAAY,QAAQA,SAAQ,sBAAsBA,SAAQ,WAAW,CAAC,GAAG,CAAC,CAAC,GAC3E,cAAc,KAAK,QAAQ,KAAK,UAAS,CAAE,GAC3C,aAAa,KAAK,QAAQ,MAAM,GAChC,cAAc,KAAK,eAAc,GACjC,eAAe,SAAS,CAAC,YAAY,IAAI,IAAI,SAAS,GAAG,YAAY,IAAI,SAAS,SAAS,CAAC,CAAC,GAC7F,aAAa,aAAa,QAAO;AAErC,gBAAI,CAAC,aAAa,SAAS,UAAU,GAAG;AACvC,mBAAK,mBAAmB;AACxB,kBAAI,eAAe,WAAW,SAAS,aAAa,UAAS,CAAE;AAC/D,kBAAI,SAAS,aAAa,OAAO,UAAU,EAAE,QAAO,EAAG,SAAS,UAAU;AAC1E,0BAAY,KAAK,aAAa,IAAI,IAAI,CAAC,OAAO,IAAI,OAAO;AACzD,0BAAY,KAAK,aAAa,IAAI,IAAI,CAAC,OAAO,IAAI,OAAO;AACzD,mBAAK,MAAM,KAAK,UAAU,WAAW,GAAGA,QAAO;AAC/C,mBAAK,mBAAmB;YAC3B;AACE,mBAAO;UACT;;;;;;;;;;;;;UAeC,gBAAgB,SAAUA,UAAS;AAClC,gBAAI,CAAC,KAAK,SAAS;AAAE,qBAAO;YAAK;AAEjC,YAAAA,WAAUS,QAAY;cACrB,SAAS;cACT,KAAK;YACR,GAAKT,aAAY,OAAO,EAAC,SAAS,KAAI,IAAIA,QAAO;AAE/C,gBAAI,UAAU,KAAK,QAAO;AAC1B,iBAAK,eAAe;AACpB,iBAAK,cAAc;AAEnB,gBAAI,UAAU,KAAK,QAAO,GACtB,YAAY,QAAQ,SAAS,CAAC,EAAE,MAAK,GACrC,YAAY,QAAQ,SAAS,CAAC,EAAE,MAAK,GACrC,SAAS,UAAU,SAAS,SAAS;AAEzC,gBAAI,CAAC,OAAO,KAAK,CAAC,OAAO,GAAG;AAAE,qBAAO;YAAK;AAE1C,gBAAIA,SAAQ,WAAWA,SAAQ,KAAK;AACnC,mBAAK,MAAM,MAAM;YAEpB,OAAS;AACN,kBAAIA,SAAQ,KAAK;AAChB,qBAAK,UAAU,MAAM;cACzB;AAEG,mBAAK,KAAK,MAAM;AAEhB,kBAAIA,SAAQ,iBAAiB;AAC5B,6BAAa,KAAK,UAAU;AAC5B,qBAAK,aAAa,WAAW0D,KAAU,KAAK,MAAM,MAAM,SAAS,GAAG,GAAG;cAC3E,OAAU;AACN,qBAAK,KAAK,SAAS;cACvB;YACA;AAKE,mBAAO,KAAK,KAAK,UAAU;cAC1B;cACA;YACH,CAAG;UACH;;;;UAKC,MAAM,WAAY;AACjB,iBAAK,QAAQ,KAAK,WAAW,KAAK,KAAK,CAAC;AACxC,gBAAI,CAAC,KAAK,QAAQ,UAAU;AAC3B,mBAAK,KAAK,WAAW;YACxB;AACE,mBAAO,KAAK,MAAK;UACnB;;;;;;;;;;UAWC,QAAQ,SAAU1D,UAAS;AAE1B,YAAAA,WAAU,KAAK,iBAAiBS,QAAY;cAC3C,SAAS;cACT,OAAO;;;;;YAKV,GAAKT,QAAO;AAEV,gBAAI,EAAE,iBAAiB,YAAY;AAClC,mBAAK,wBAAwB;gBAC5B,MAAM;gBACN,SAAS;cACb,CAAI;AACD,qBAAO;YACV;AAEE,gBAAI,aAAa0D,KAAU,KAAK,4BAA4B,IAAI,GAC5D,UAAUA,KAAU,KAAK,yBAAyB,IAAI;AAE1D,gBAAI1D,SAAQ,OAAO;AAClB,mBAAK,mBACG,UAAU,YAAY,cAAc,YAAY,SAASA,QAAO;YAC3E,OAAS;AACN,wBAAU,YAAY,mBAAmB,YAAY,SAASA,QAAO;YACxE;AACE,mBAAO;UACT;;;;;UAMC,YAAY,WAAY;AACvB,gBAAI,UAAU,eAAe,UAAU,YAAY,YAAY;AAC9D,wBAAU,YAAY,WAAW,KAAK,gBAAgB;YACzD;AACE,gBAAI,KAAK,gBAAgB;AACxB,mBAAK,eAAe,UAAU;YACjC;AACE,mBAAO;UACT;UAEC,yBAAyB,SAAU,OAAO;AACzC,gBAAI,CAAC,KAAK,WAAW,aAAa;AAAE;YAAO;AAE3C,gBAAI0B,KAAI,MAAM,MACV,UAAU,MAAM,YACPA,OAAM,IAAI,sBACVA,OAAM,IAAI,yBAAyB;AAEhD,gBAAI,KAAK,eAAe,WAAW,CAAC,KAAK,SAAS;AACjD,mBAAK,SAAQ;YAChB;AAKE,iBAAK,KAAK,iBAAiB;cAC1B,MAAMA;cACN,SAAS,wBAAwB,UAAU;YAC9C,CAAG;UACH;UAEC,4BAA4B,SAAU,KAAK;AAC1C,gBAAI,CAAC,KAAK,WAAW,aAAa;AAAE;YAAO;AAE3C,gBAAI,MAAM,IAAI,OAAO,UACjB,MAAM,IAAI,OAAO,WACjB,SAAS,IAAI,OAAO,KAAK,GAAG,GAC5B,SAAS,OAAO,SAAS,IAAI,OAAO,WAAW,CAAC,GAChD1B,WAAU,KAAK;AAEnB,gBAAIA,SAAQ,SAAS;AACpB,kBAAI2B,QAAO,KAAK,cAAc,MAAM;AACpC,mBAAK,QAAQ,QAAQ3B,SAAQ,UAAU,KAAK,IAAI2B,OAAM3B,SAAQ,OAAO,IAAI2B,KAAI;YAChF;AAEE,gBAAI1B,QAAO;cACV;cACA;cACA,WAAW,IAAI;YAClB;AAEE,qBAAS,KAAK,IAAI,QAAQ;AACzB,kBAAI,OAAO,IAAI,OAAO,CAAC,MAAM,UAAU;AACtC,gBAAAA,MAAK,CAAC,IAAI,IAAI,OAAO,CAAC;cAC1B;YACA;AAKE,iBAAK,KAAK,iBAAiBA,KAAI;UACjC;;;;;UAMC,YAAY,SAAUI,OAAM,cAAc;AACzC,gBAAI,CAAC,cAAc;AAAE,qBAAO;YAAK;AAEjC,gBAAI,UAAU,KAAKA,KAAI,IAAI,IAAI,aAAa,IAAI;AAEhD,iBAAK,UAAU,KAAK,OAAO;AAE3B,gBAAI,KAAK,QAAQA,KAAI,GAAG;AACvB,sBAAQ,OAAM;YACjB;AAEE,mBAAO;UACT;;;UAIC,QAAQ,WAAY;AAEnB,iBAAK,YAAY,IAAI;AACrB,gBAAI,KAAK,QAAQ,WAAW;AAAE,mBAAK,IAAI,WAAW,KAAK,mBAAmB;YAAE;AAE5E,gBAAI,KAAK,iBAAiB,KAAK,WAAW,aAAa;AACtD,oBAAM,IAAI,MAAM,mDAAmD;YACtE;AAEE,gBAAI;AAEH,qBAAO,KAAK,WAAW;AACvB,qBAAO,KAAK;YACf,SAAWY,IAAG;AAEX,mBAAK,WAAW,cAAc;AAE9B,mBAAK,eAAe;YACvB;AAEE,gBAAI,KAAK,qBAAqB,QAAW;AACxC,mBAAK,WAAU;YAClB;AAEE,iBAAK,MAAK;AAEVsD,mBAAe,KAAK,QAAQ;AAE5B,gBAAI,KAAK,kBAAkB;AAC1B,mBAAK,iBAAgB;YACxB;AACE,gBAAI,KAAK,gBAAgB;AACxBhB,8BAAqB,KAAK,cAAc;AACxC,mBAAK,iBAAiB;YACzB;AAEE,iBAAK,eAAc;AAEnB,gBAAI,KAAK,SAAS;AAIjB,mBAAK,KAAK,QAAQ;YACrB;AAEE,gBAAI;AACJ,iBAAK,KAAK,KAAK,SAAS;AACvB,mBAAK,QAAQ,CAAC,EAAE,OAAM;YACzB;AACE,iBAAK,KAAK,KAAK,QAAQ;AACtBgB,qBAAe,KAAK,OAAO,CAAC,CAAC;YAChC;AAEE,iBAAK,UAAU,CAAA;AACf,iBAAK,SAAS,CAAA;AACd,mBAAO,KAAK;AACZ,mBAAO,KAAK;AAEZ,mBAAO;UACT;;;;;;UAOC,YAAY,SAAUlE,OAAM,WAAW;AACtC,gBAAI,YAAY,kBAAkBA,QAAO,cAAcA,MAAK,QAAQ,QAAQ,EAAE,IAAI,UAAU,KACxF,OAAOmE,SAAe,OAAO,WAAW,aAAa,KAAK,QAAQ;AAEtE,gBAAInE,OAAM;AACT,mBAAK,OAAOA,KAAI,IAAI;YACvB;AACE,mBAAO;UACT;;;;UAMC,WAAW,WAAY;AACtB,iBAAK,eAAc;AAEnB,gBAAI,KAAK,eAAe,CAAC,KAAK,OAAM,GAAI;AACvC,qBAAO,KAAK,YAAY,MAAK;YAChC;AACE,mBAAO,KAAK,mBAAmB,KAAK,qBAAoB,CAAE;UAC5D;;;UAIC,SAAS,WAAY;AACpB,mBAAO,KAAK;UACd;;;UAIC,WAAW,WAAY;AACtB,gBAAI,SAAS,KAAK,eAAc,GAC5B,KAAK,KAAK,UAAU,OAAO,cAAa,CAAE,GAC1C,KAAK,KAAK,UAAU,OAAO,YAAW,CAAE;AAE5C,mBAAO,IAAI,aAAa,IAAI,EAAE;UAChC;;;UAIC,YAAY,WAAY;AACvB,mBAAO,KAAK,QAAQ,YAAY,SAAY,KAAK,kBAAkB,IAAI,KAAK,QAAQ;UACtF;;;UAIC,YAAY,WAAY;AACvB,mBAAO,KAAK,QAAQ,YAAY,SAC9B,KAAK,mBAAmB,SAAY,WAAW,KAAK,iBACrD,KAAK,QAAQ;UAChB;;;;;;UAOC,eAAe,SAAU,QAAQ,QAAQoE,UAAS;AACjD,qBAAS,eAAe,MAAM;AAC9B,YAAAA,WAAU,QAAQA,YAAW,CAAC,GAAG,CAAC,CAAC;AAEnC,gBAAI9C,QAAO,KAAK,QAAO,KAAM,GACzB/B,OAAM,KAAK,WAAU,GACrBD,OAAM,KAAK,WAAU,GACrB,KAAK,OAAO,aAAY,GACxB,KAAK,OAAO,aAAY,GACxBoE,QAAO,KAAK,QAAO,EAAG,SAASU,QAAO,GACtC,aAAa,SAAS,KAAK,QAAQ,IAAI9C,KAAI,GAAG,KAAK,QAAQ,IAAIA,KAAI,CAAC,EAAE,QAAO,GAC7E,OAAO,QAAQ,QAAQ,KAAK,QAAQ,WAAW,GAC/C,SAASoC,MAAK,IAAI,WAAW,GAC7B,SAASA,MAAK,IAAI,WAAW,GAC7BnC,SAAQ,SAAS,KAAK,IAAI,QAAQ,MAAM,IAAI,KAAK,IAAI,QAAQ,MAAM;AAEvE,YAAAD,QAAO,KAAK,aAAaC,QAAOD,KAAI;AAEpC,gBAAI,MAAM;AACT,cAAAA,QAAO,KAAK,MAAMA,SAAQ,OAAO,IAAI,KAAK,OAAO;AACjD,cAAAA,QAAO,SAAS,KAAK,KAAKA,QAAO,IAAI,IAAI,OAAO,KAAK,MAAMA,QAAO,IAAI,IAAI;YAC7E;AAEE,mBAAO,KAAK,IAAI/B,MAAK,KAAK,IAAID,MAAKgC,KAAI,CAAC;UAC1C;;;UAIC,SAAS,WAAY;AACpB,gBAAI,CAAC,KAAK,SAAS,KAAK,cAAc;AACrC,mBAAK,QAAQ,IAAIT;gBAChB,KAAK,WAAW,eAAe;gBAC/B,KAAK,WAAW,gBAAgB;cAAC;AAElC,mBAAK,eAAe;YACvB;AACE,mBAAO,KAAK,MAAM,MAAK;UACzB;;;;UAKC,gBAAgB,SAAU,QAAQS,OAAM;AACvC,gBAAI,eAAe,KAAK,iBAAiB,QAAQA,KAAI;AACrD,mBAAO,IAAI,OAAO,cAAc,aAAa,IAAI,KAAK,QAAO,CAAE,CAAC;UAClE;;;;;;;UAQC,gBAAgB,WAAY;AAC3B,iBAAK,eAAc;AACnB,mBAAO,KAAK;UACd;;;;UAKC,qBAAqB,SAAUA,OAAM;AACpC,mBAAO,KAAK,QAAQ,IAAI,mBAAmBA,UAAS,SAAY,KAAK,QAAO,IAAKA,KAAI;UACvF;;;;UAMC,SAAS,SAAU,MAAM;AACxB,mBAAO,OAAO,SAAS,WAAW,KAAK,OAAO,IAAI,IAAI;UACxD;;;;UAKC,UAAU,WAAY;AACrB,mBAAO,KAAK;UACd;;;UAIC,cAAc,WAAY;AACzB,mBAAO,KAAK;UACd;;;;;UAQC,cAAc,SAAU,QAAQ,UAAU;AAEzC,gBAAI,MAAM,KAAK,QAAQ;AACvB,uBAAW,aAAa,SAAY,KAAK,QAAQ;AACjD,mBAAO,IAAI,MAAM,MAAM,IAAI,IAAI,MAAM,QAAQ;UAC/C;;;;;UAMC,cAAc,SAAUC,QAAO,UAAU;AACxC,gBAAI,MAAM,KAAK,QAAQ;AACvB,uBAAW,aAAa,SAAY,KAAK,QAAQ;AACjD,gBAAID,QAAO,IAAI,KAAKC,SAAQ,IAAI,MAAM,QAAQ,CAAC;AAC/C,mBAAO,MAAMD,KAAI,IAAI,WAAWA;UAClC;;;;;;UAOC,SAAS,SAAU,QAAQA,OAAM;AAChC,YAAAA,QAAOA,UAAS,SAAY,KAAK,QAAQA;AACzC,mBAAO,KAAK,QAAQ,IAAI,cAAc,SAAS,MAAM,GAAGA,KAAI;UAC9D;;;UAIC,WAAW,SAAUN,QAAOM,OAAM;AACjC,YAAAA,QAAOA,UAAS,SAAY,KAAK,QAAQA;AACzC,mBAAO,KAAK,QAAQ,IAAI,cAAc,QAAQN,MAAK,GAAGM,KAAI;UAC5D;;;;UAKC,oBAAoB,SAAUN,QAAO;AACpC,gBAAI,iBAAiB,QAAQA,MAAK,EAAE,IAAI,KAAK,eAAc,CAAE;AAC7D,mBAAO,KAAK,UAAU,cAAc;UACtC;;;;UAKC,oBAAoB,SAAU,QAAQ;AACrC,gBAAI,iBAAiB,KAAK,QAAQ,SAAS,MAAM,CAAC,EAAE,OAAM;AAC1D,mBAAO,eAAe,UAAU,KAAK,eAAc,CAAE;UACvD;;;;;;;UAQC,YAAY,SAAU,QAAQ;AAC7B,mBAAO,KAAK,QAAQ,IAAI,WAAW,SAAS,MAAM,CAAC;UACrD;;;;;;;UAQC,kBAAkB,SAAU,QAAQ;AACnC,mBAAO,KAAK,QAAQ,IAAI,iBAAiB,eAAe,MAAM,CAAC;UACjE;;;;UAKC,UAAU,SAAU,SAAS,SAAS;AACrC,mBAAO,KAAK,QAAQ,IAAI,SAAS,SAAS,OAAO,GAAG,SAAS,OAAO,CAAC;UACvE;;;;UAKC,4BAA4B,SAAUA,QAAO;AAC5C,mBAAO,QAAQA,MAAK,EAAE,SAAS,KAAK,eAAc,CAAE;UACtD;;;;UAKC,4BAA4B,SAAUA,QAAO;AAC5C,mBAAO,QAAQA,MAAK,EAAE,IAAI,KAAK,eAAc,CAAE;UACjD;;;;UAKC,wBAAwB,SAAUA,QAAO;AACxC,gBAAI,aAAa,KAAK,2BAA2B,QAAQA,MAAK,CAAC;AAC/D,mBAAO,KAAK,mBAAmB,UAAU;UAC3C;;;;UAKC,wBAAwB,SAAU,QAAQ;AACzC,mBAAO,KAAK,2BAA2B,KAAK,mBAAmB,SAAS,MAAM,CAAC,CAAC;UAClF;;;;UAKC,4BAA4B,SAAUJ,IAAG;AACxC,mBAAOyD,iBAA0BzD,IAAG,KAAK,UAAU;UACrD;;;;UAKC,wBAAwB,SAAUA,IAAG;AACpC,mBAAO,KAAK,2BAA2B,KAAK,2BAA2BA,EAAC,CAAC;UAC3E;;;;UAKC,oBAAoB,SAAUA,IAAG;AAChC,mBAAO,KAAK,mBAAmB,KAAK,uBAAuBA,EAAC,CAAC;UAC/D;;UAKC,gBAAgB,SAAUX,MAAI;AAC7B,gBAAI,YAAY,KAAK,aAAaqE,IAAYrE,IAAE;AAEhD,gBAAI,CAAC,WAAW;AACf,oBAAM,IAAI,MAAM,0BAA0B;YAC7C,WAAa,UAAU,aAAa;AACjC,oBAAM,IAAI,MAAM,uCAAuC;YAC1D;AAEEyC,eAAY,WAAW,UAAU,KAAK,WAAW,IAAI;AACrD,iBAAK,eAAe/B,MAAW,SAAS;UAC1C;UAEC,aAAa,WAAY;AACxB,gBAAI,YAAY,KAAK;AAErB,iBAAK,gBAAgB,KAAK,QAAQ,iBAAiB,QAAQ;AAE3D6C,YAAAA,UAAiB,WAAW,uBAC1B,QAAQ,QAAQ,mBAAmB,OACnC,QAAQ,SAAS,oBAAoB,OACrC,QAAQ,QAAQ,mBAAmB,OACnC,QAAQ,SAAS,oBAAoB,OACrC,KAAK,gBAAgB,uBAAuB,GAAG;AAEjD,gBAAIe,YAAWC,UAAiB,WAAW,UAAU;AAErD,gBAAID,cAAa,cAAcA,cAAa,cAAcA,cAAa,WAAWA,cAAa,UAAU;AACxG,wBAAU,MAAM,WAAW;YAC9B;AAEE,iBAAK,WAAU;AAEf,gBAAI,KAAK,iBAAiB;AACzB,mBAAK,gBAAe;YACvB;UACA;UAEC,YAAY,WAAY;AACvB,gBAAI,QAAQ,KAAK,SAAS,CAAA;AAC1B,iBAAK,iBAAiB,CAAA;AActB,iBAAK,WAAW,KAAK,WAAW,WAAW,KAAK,UAAU;AAC1DtB,wBAAoB,KAAK,UAAU,IAAIpC,OAAM,GAAG,CAAC,CAAC;AAIlD,iBAAK,WAAW,UAAU;AAG1B,iBAAK,WAAW,aAAa;AAG7B,iBAAK,WAAW,YAAY;AAG5B,iBAAK,WAAW,YAAY;AAG5B,iBAAK,WAAW,aAAa;AAG7B,iBAAK,WAAW,WAAW;AAE3B,gBAAI,CAAC,KAAK,QAAQ,qBAAqB;AACtC2C,cAAAA,UAAiB,MAAM,YAAY,mBAAmB;AACtDA,cAAAA,UAAiB,MAAM,YAAY,mBAAmB;YACzD;UACA;;;UAMC,YAAY,SAAU,QAAQlC,OAAM,aAAa;AAChD2B,wBAAoB,KAAK,UAAU,IAAIpC,OAAM,GAAG,CAAC,CAAC;AAElD,gBAAI,UAAU,CAAC,KAAK;AACpB,iBAAK,UAAU;AACf,YAAAS,QAAO,KAAK,WAAWA,KAAI;AAE3B,iBAAK,KAAK,cAAc;AAExB,gBAAI,cAAc,KAAK,UAAUA;AACjC,iBACE,WAAW,aAAa,WAAW,EACnC,MAAM,QAAQA,KAAI,EAClB,SAAS,WAAW;AAKtB,iBAAK,KAAK,WAAW;AAKrB,gBAAI,SAAS;AACZ,mBAAK,KAAK,MAAM;YACnB;UACA;UAEC,YAAY,SAAU,aAAa,aAAa;AAK/C,gBAAI,aAAa;AAChB,mBAAK,KAAK,WAAW;YACxB;AACE,gBAAI,CAAC,aAAa;AACjB,mBAAK,KAAK,WAAW;YACxB;AACE,mBAAO;UACT;UAEC,OAAO,SAAU,QAAQA,OAAM1B,OAAM,cAAc;AAClD,gBAAI0B,UAAS,QAAW;AACvB,cAAAA,QAAO,KAAK;YACf;AACE,gBAAI,cAAc,KAAK,UAAUA;AAEjC,iBAAK,QAAQA;AACb,iBAAK,cAAc;AACnB,iBAAK,eAAe,KAAK,mBAAmB,MAAM;AAElD,gBAAI,CAAC,cAAc;AAIlB,kBAAI,eAAgB1B,SAAQA,MAAK,OAAQ;AACxC,qBAAK,KAAK,QAAQA,KAAI;cAC1B;AAKG,mBAAK,KAAK,QAAQA,KAAI;YACzB,WAAaA,SAAQA,MAAK,OAAO;AAC9B,mBAAK,KAAK,QAAQA,KAAI;YACzB;AACE,mBAAO;UACT;UAEC,UAAU,SAAU,aAAa;AAGhC,gBAAI,aAAa;AAChB,mBAAK,KAAK,SAAS;YACtB;AAKE,mBAAO,KAAK,KAAK,SAAS;UAC5B;UAEC,OAAO,WAAY;AAClBsD,4BAAqB,KAAK,WAAW;AACrC,gBAAI,KAAK,UAAU;AAClB,mBAAK,SAAS,KAAI;YACrB;AACE,mBAAO;UACT;UAEC,WAAW,SAAU,QAAQ;AAC5BD,wBAAoB,KAAK,UAAU,KAAK,eAAc,EAAG,SAAS,MAAM,CAAC;UAC3E;UAEC,cAAc,WAAY;AACzB,mBAAO,KAAK,WAAU,IAAK,KAAK,WAAU;UAC5C;UAEC,qBAAqB,WAAY;AAChC,gBAAI,CAAC,KAAK,kBAAkB;AAC3B,mBAAK,gBAAgB,KAAK,QAAQ,SAAS;YAC9C;UACA;UAEC,gBAAgB,WAAY;AAC3B,gBAAI,CAAC,KAAK,SAAS;AAClB,oBAAM,IAAI,MAAM,gCAAgC;YACnD;UACA;;;UAKC,aAAa,SAAUwB,SAAQ;AAC9B,iBAAK,WAAW,CAAA;AAChB,iBAAK,SAAS9D,MAAW,KAAK,UAAU,CAAC,IAAI;AAE7C,gBAAI,QAAQ8D,UAAS9B,MAAeD;AA6BpC,kBAAM,KAAK,YAAY,oGAC6C,KAAK,iBAAiB,IAAI;AAE9F,gBAAI,KAAK,QAAQ,aAAa;AAC7B,oBAAM,QAAQ,UAAU,KAAK,WAAW,IAAI;YAC/C;AAEE,gBAAI,QAAQ,SAAS,KAAK,QAAQ,kBAAkB;AACnD,eAAC+B,UAAS,KAAK,MAAM,KAAK,IAAI,KAAK,MAAM,WAAW,KAAK,UAAU;YACtE;UACA;UAEC,WAAW,WAAY;AACtBvB,4BAAqB,KAAK,cAAc;AACxC,iBAAK,iBAAiBF;cACd,WAAY;AAAE,qBAAK,eAAe,EAAC,iBAAiB,KAAI,CAAC;cAAE;cAAI;YAAI;UAC7E;UAEC,WAAW,WAAY;AACtB,iBAAK,WAAW,YAAa;AAC7B,iBAAK,WAAW,aAAa;UAC/B;UAEC,YAAY,WAAY;AACvB,gBAAI,MAAM,KAAK,eAAc;AAC7B,gBAAI,KAAK,IAAI,KAAK,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,IAAI,CAAC,CAAC,KAAK,KAAK,QAAQ,kBAAkB;AAGhF,mBAAK,WAAW,KAAK,UAAS,GAAI,KAAK,QAAO,CAAE;YACnD;UACA;UAEC,mBAAmB,SAAUpC,IAAG,MAAM;AACrC,gBAAI,UAAU,CAAA,GACV,QACA,UAAU,SAAS,cAAc,SAAS,aAC1C,MAAMA,GAAE,UAAUA,GAAE,YACpB,WAAW;AAEf,mBAAO,KAAK;AACX,uBAAS,KAAK,SAASD,MAAW,GAAG,CAAC;AACtC,kBAAI,WAAW,SAAS,WAAW,SAAS,eAAe,KAAK,gBAAgB,MAAM,GAAG;AAExF,2BAAW;AACX;cACJ;AACG,kBAAI,UAAU,OAAO,QAAQ,MAAM,IAAI,GAAG;AACzC,oBAAI,WAAW,CAAC+D,iBAA0B,KAAK9D,EAAC,GAAG;AAAE;gBAAM;AAC3D,wBAAQ,KAAK,MAAM;AACnB,oBAAI,SAAS;AAAE;gBAAM;cACzB;AACG,kBAAI,QAAQ,KAAK,YAAY;AAAE;cAAM;AACrC,oBAAM,IAAI;YACb;AACE,gBAAI,CAAC,QAAQ,UAAU,CAAC,YAAY,CAAC,WAAW,KAAK,QAAQ,MAAM,IAAI,GAAG;AACzE,wBAAU,CAAC,IAAI;YAClB;AACE,mBAAO;UACT;UAEC,kBAAkB,SAAU,IAAI;AAC/B,mBAAO,MAAM,OAAO,KAAK,YAAY;AACpC,kBAAI,GAAG,wBAAwB,GAAG;AAAE,uBAAO;cAAK;AAChD,mBAAK,GAAG;YACX;UACA;UAEC,iBAAiB,SAAUA,IAAG;AAC7B,gBAAI,KAAMA,GAAE,UAAUA,GAAE;AACxB,gBAAI,CAAC,KAAK,WAAW,GAAG,yBAAyB,KAAKA,GAAE,SAAS,WAAW,KAAK,iBAAiB,EAAE,GAAG;AACtG;YACH;AAEE,gBAAI,OAAOA,GAAE;AAEb,gBAAI,SAAS,aAAa;AAEzB+D,6BAAuB,EAAE;YAC5B;AAEE,iBAAK,cAAc/D,IAAG,IAAI;UAC5B;UAEC,cAAc,CAAC,SAAS,YAAY,aAAa,YAAY,aAAa;UAE1E,eAAe,SAAUA,IAAG,MAAM,eAAe;AAEhD,gBAAIA,GAAE,SAAS,SAAS;AAMvB,kBAAI,QAAQR,QAAY,CAAA,GAAIQ,EAAC;AAC7B,oBAAM,OAAO;AACb,mBAAK,cAAc,OAAO,MAAM,MAAM,aAAa;YACtD;AAGE,gBAAI,UAAU,KAAK,kBAAkBA,IAAG,IAAI;AAE5C,gBAAI,eAAe;AAClB,kBAAI,WAAW,CAAA;AACf,uBAAS,IAAI,GAAG,IAAI,cAAc,QAAQ,KAAK;AAC9C,oBAAI,cAAc,CAAC,EAAE,QAAQ,MAAM,IAAI,GAAG;AACzC,2BAAS,KAAK,cAAc,CAAC,CAAC;gBACnC;cACA;AACG,wBAAU,SAAS,OAAO,OAAO;YACpC;AAEE,gBAAI,CAAC,QAAQ,QAAQ;AAAE;YAAO;AAE9B,gBAAI,SAAS,eAAe;AAC3BkB,6BAAwBlB,EAAC;YAC5B;AAEE,gBAAI,SAAS,QAAQ,CAAC;AACtB,gBAAIhB,QAAO;cACV,eAAegB;YAClB;AAEE,gBAAIA,GAAE,SAAS,cAAcA,GAAE,SAAS,aAAaA,GAAE,SAAS,SAAS;AACxE,kBAAI,WAAW,OAAO,cAAc,CAAC,OAAO,WAAW,OAAO,WAAW;AACzE,cAAAhB,MAAK,iBAAiB,WACrB,KAAK,uBAAuB,OAAO,UAAS,CAAE,IAAI,KAAK,2BAA2BgB,EAAC;AACpF,cAAAhB,MAAK,aAAa,KAAK,2BAA2BA,MAAK,cAAc;AACrE,cAAAA,MAAK,SAAS,WAAW,OAAO,UAAS,IAAK,KAAK,mBAAmBA,MAAK,UAAU;YACxF;AAEE,iBAAK,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK;AACpC,sBAAQ,CAAC,EAAE,KAAK,MAAMA,OAAM,IAAI;AAChC,kBAAIA,MAAK,cAAc,YACrB,QAAQ,CAAC,EAAE,QAAQ,wBAAwB,SAASkD,SAAa,KAAK,cAAc,IAAI,MAAM,IAAK;AAAE;cAAO;YACjH;UACA;UAEC,iBAAiB,SAAU,KAAK;AAC/B,kBAAM,IAAI,YAAY,IAAI,SAAS,QAAO,IAAK,MAAM;AACrD,mBAAQ,IAAI,YAAY,IAAI,SAAS,MAAK,KAAQ,KAAK,WAAW,KAAK,QAAQ,MAAK;UACtF;UAEC,gBAAgB,WAAY;AAC3B,qBAAS,IAAI,GAAG,MAAM,KAAK,UAAU,QAAQ,IAAI,KAAK,KAAK;AAC1D,mBAAK,UAAU,CAAC,EAAE,QAAO;YAC5B;UACA;;;;;;UAQC,WAAW,SAAU,UAAU,SAAS;AACvC,gBAAI,KAAK,SAAS;AACjB,uBAAS,KAAK,WAAW,MAAM,EAAC,QAAQ,KAAI,CAAC;YAChD,OAAS;AACN,mBAAK,GAAG,QAAQ,UAAU,OAAO;YACpC;AACE,mBAAO;UACT;;UAKC,gBAAgB,WAAY;AAC3B,mBAAOC,aAAoB,KAAK,QAAQ,KAAK,IAAIlC,OAAM,GAAG,CAAC;UAC7D;UAEC,QAAQ,WAAY;AACnB,gBAAI,MAAM,KAAK,eAAc;AAC7B,mBAAO,OAAO,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC;UAClC;UAEC,kBAAkB,SAAU,QAAQS,OAAM;AACzC,gBAAI,cAAc,UAAUA,UAAS,SACpC,KAAK,mBAAmB,QAAQA,KAAI,IACpC,KAAK,eAAc;AACpB,mBAAO,YAAY,SAAS,KAAK,eAAc,CAAE;UACnD;UAEC,oBAAoB,SAAU,QAAQA,OAAM;AAC3C,gBAAI,WAAW,KAAK,QAAO,EAAG,UAAU,CAAC;AACzC,mBAAO,KAAK,QAAQ,QAAQA,KAAI,EAAE,UAAU,QAAQ,EAAE,KAAK,KAAK,eAAc,CAAE,EAAE,OAAM;UAC1F;UAEC,wBAAwB,SAAU,QAAQA,OAAM,QAAQ;AACvD,gBAAI,UAAU,KAAK,mBAAmB,QAAQA,KAAI;AAClD,mBAAO,KAAK,QAAQ,QAAQA,KAAI,EAAE,UAAU,OAAO;UACrD;UAEC,+BAA+B,SAAU,cAAcA,OAAM,QAAQ;AACpE,gBAAI,UAAU,KAAK,mBAAmB,QAAQA,KAAI;AAClD,mBAAO,SAAS;cACf,KAAK,QAAQ,aAAa,aAAY,GAAIA,KAAI,EAAE,UAAU,OAAO;cACjE,KAAK,QAAQ,aAAa,aAAY,GAAIA,KAAI,EAAE,UAAU,OAAO;cACjE,KAAK,QAAQ,aAAa,aAAY,GAAIA,KAAI,EAAE,UAAU,OAAO;cACjE,KAAK,QAAQ,aAAa,aAAY,GAAIA,KAAI,EAAE,UAAU,OAAO;YACpE,CAAG;UACH;;UAGC,sBAAsB,WAAY;AACjC,mBAAO,KAAK,2BAA2B,KAAK,QAAO,EAAG,UAAU,CAAC,CAAC;UACpE;;UAGC,kBAAkB,SAAU,QAAQ;AACnC,mBAAO,KAAK,mBAAmB,MAAM,EAAE,SAAS,KAAK,qBAAoB,CAAE;UAC7E;;UAGC,cAAc,SAAU,QAAQA,OAAM,QAAQ;AAE7C,gBAAI,CAAC,QAAQ;AAAE,qBAAO;YAAO;AAE7B,gBAAI,cAAc,KAAK,QAAQ,QAAQA,KAAI,GACvC,WAAW,KAAK,QAAO,EAAG,SAAS,CAAC,GACpC,aAAa,IAAI,OAAO,YAAY,SAAS,QAAQ,GAAG,YAAY,IAAI,QAAQ,CAAC,GACjF,SAAS,KAAK,iBAAiB,YAAY,QAAQA,KAAI;AAK3D,gBAAI,KAAK,IAAI,OAAO,CAAC,KAAK,KAAK,KAAK,IAAI,OAAO,CAAC,KAAK,GAAG;AACvD,qBAAO;YACV;AAEE,mBAAO,KAAK,UAAU,YAAY,IAAI,MAAM,GAAGA,KAAI;UACrD;;UAGC,cAAc,SAAU,QAAQ,QAAQ;AACvC,gBAAI,CAAC,QAAQ;AAAE,qBAAO;YAAO;AAE7B,gBAAI,aAAa,KAAK,eAAc,GAChC,YAAY,IAAI,OAAO,WAAW,IAAI,IAAI,MAAM,GAAG,WAAW,IAAI,IAAI,MAAM,CAAC;AAEjF,mBAAO,OAAO,IAAI,KAAK,iBAAiB,WAAW,MAAM,CAAC;UAC5D;;UAGC,kBAAkB,SAAU,UAAU,WAAWA,OAAM;AACtD,gBAAI,qBAAqB;cACjB,KAAK,QAAQ,UAAU,aAAY,GAAIA,KAAI;cAC3C,KAAK,QAAQ,UAAU,aAAY,GAAIA,KAAI;YACrD,GACM,YAAY,mBAAmB,IAAI,SAAS,SAAS,GAAG,GACxD,YAAY,mBAAmB,IAAI,SAAS,SAAS,GAAG,GAExD,KAAK,KAAK,SAAS,UAAU,GAAG,CAAC,UAAU,CAAC,GAC5C,KAAK,KAAK,SAAS,UAAU,GAAG,CAAC,UAAU,CAAC;AAEhD,mBAAO,IAAIT,OAAM,IAAI,EAAE;UACzB;UAEC,UAAU,SAAU,MAAM,OAAO;AAChC,mBAAO,OAAO,QAAQ,IACrB,KAAK,MAAM,OAAO,KAAK,IAAI,IAC3B,KAAK,IAAI,GAAG,KAAK,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,GAAG,KAAK,MAAM,KAAK,CAAC;UAC/D;UAEC,YAAY,SAAUS,OAAM;AAC3B,gBAAI/B,OAAM,KAAK,WAAU,GACrBD,OAAM,KAAK,WAAU,GACrB,OAAO,QAAQ,QAAQ,KAAK,QAAQ,WAAW;AACnD,gBAAI,MAAM;AACT,cAAAgC,QAAO,KAAK,MAAMA,QAAO,IAAI,IAAI;YACpC;AACE,mBAAO,KAAK,IAAI/B,MAAK,KAAK,IAAID,MAAKgC,KAAI,CAAC;UAC1C;UAEC,sBAAsB,WAAY;AACjC,iBAAK,KAAK,MAAM;UAClB;UAEC,qBAAqB,WAAY;AAChCsD,YAAAA,aAAoB,KAAK,UAAU,kBAAkB;AACrD,iBAAK,KAAK,SAAS;UACrB;UAEC,iBAAiB,SAAU,QAAQjF,UAAS;AAE3C,gBAAI,SAAS,KAAK,iBAAiB,MAAM,EAAE,OAAM;AAGjD,iBAAKA,YAAWA,SAAQ,aAAa,QAAQ,CAAC,KAAK,QAAO,EAAG,SAAS,MAAM,GAAG;AAAE,qBAAO;YAAM;AAE9F,iBAAK,MAAM,QAAQA,QAAO;AAE1B,mBAAO;UACT;UAEC,kBAAkB,WAAY;AAE7B,gBAAI,QAAQ,KAAK,SAASwE,SAAe,OAAO,qCAAqC;AACrF,iBAAK,OAAO,QAAQ,YAAY,KAAK;AAErC,iBAAK,GAAG,YAAY,SAAUvD,IAAG;AAChC,kBAAI,OAAOiE,WACP,YAAY,KAAK,OAAO,MAAM,IAAI;AAEtCC,2BAAqB,KAAK,QAAQ,KAAK,QAAQlE,GAAE,QAAQA,GAAE,IAAI,GAAG,KAAK,aAAaA,GAAE,MAAM,CAAC,CAAC;AAG9F,kBAAI,cAAc,KAAK,OAAO,MAAM,IAAI,KAAK,KAAK,gBAAgB;AACjE,qBAAK,qBAAoB;cAC7B;YACA,GAAK,IAAI;AAEP,iBAAK,GAAG,gBAAgB,KAAK,cAAc,IAAI;AAE/C,iBAAK,IAAI,UAAU,KAAK,mBAAmB,IAAI;UACjD;UAEC,mBAAmB,WAAY;AAC9BsD,mBAAe,KAAK,MAAM;AAC1B,iBAAK,IAAI,gBAAgB,KAAK,cAAc,IAAI;AAChD,mBAAO,KAAK;UACd;UAEC,cAAc,WAAY;AACzB,gBAAI7C,KAAI,KAAK,UAAS,GAClB,IAAI,KAAK,QAAO;AACpByD,yBAAqB,KAAK,QAAQ,KAAK,QAAQzD,IAAG,CAAC,GAAG,KAAK,aAAa,GAAG,CAAC,CAAC;UAC/E;UAEC,qBAAqB,SAAUT,IAAG;AACjC,gBAAI,KAAK,kBAAkBA,GAAE,aAAa,QAAQ,WAAW,KAAK,GAAG;AACpE,mBAAK,qBAAoB;YAC5B;UACA;UAEC,mBAAmB,WAAY;AAC9B,mBAAO,CAAC,KAAK,WAAW,uBAAuB,uBAAuB,EAAE;UAC1E;UAEC,kBAAkB,SAAU,QAAQU,OAAM3B,UAAS;AAElD,gBAAI,KAAK,gBAAgB;AAAE,qBAAO;YAAK;AAEvC,YAAAA,WAAUA,YAAW,CAAA;AAGrB,gBAAI,CAAC,KAAK,iBAAiBA,SAAQ,YAAY,SAAS,KAAK,kBAAiB,KACtE,KAAK,IAAI2B,QAAO,KAAK,KAAK,IAAI,KAAK,QAAQ,wBAAwB;AAAE,qBAAO;YAAM;AAG1F,gBAAIC,SAAQ,KAAK,aAAaD,KAAI,GAC9B,SAAS,KAAK,iBAAiB,MAAM,EAAE,UAAU,IAAI,IAAIC,MAAK;AAGlE,gBAAI5B,SAAQ,YAAY,QAAQ,CAAC,KAAK,QAAO,EAAG,SAAS,MAAM,GAAG;AAAE,qBAAO;YAAM;AAEjFqD,6BAAsB,WAAY;AACjC,mBACK,WAAW,MAAMrD,SAAQ,eAAe,KAAK,EAC7C,aAAa,QAAQ2B,OAAM,IAAI;YACvC,GAAK,IAAI;AAEP,mBAAO;UACT;UAEC,cAAc,SAAU,QAAQA,OAAM,WAAW,UAAU;AAC1D,gBAAI,CAAC,KAAK,UAAU;AAAE;YAAO;AAE7B,gBAAI,WAAW;AACd,mBAAK,iBAAiB;AAGtB,mBAAK,mBAAmB;AACxB,mBAAK,iBAAiBA;AAEtBkC,cAAAA,UAAiB,KAAK,UAAU,mBAAmB;YACtD;AAKE,iBAAK,KAAK,YAAY;cACrB;cACA,MAAMlC;cACN;YACH,CAAG;AAED,gBAAI,CAAC,KAAK,oBAAoB;AAC7B,mBAAK,qBAAqB,KAAK,UAAU,KAAK;YACjD;AAEE,iBAAK,MAAM,KAAK,kBAAkB,KAAK,gBAAgB,QAAW,IAAI;AAGtE,uBAAW+B,KAAU,KAAK,sBAAsB,IAAI,GAAG,GAAG;UAC5D;UAEC,sBAAsB,WAAY;AACjC,gBAAI,CAAC,KAAK,gBAAgB;AAAE;YAAO;AAEnC,gBAAI,KAAK,UAAU;AAClBuB,cAAAA,aAAoB,KAAK,UAAU,mBAAmB;YACzD;AAEE,iBAAK,iBAAiB;AAEtB,iBAAK,MAAM,KAAK,kBAAkB,KAAK,gBAAgB,QAAW,IAAI;AAEtE,gBAAI,KAAK,oBAAoB;AAC5B,mBAAK,KAAK,MAAM;YACnB;AACE,mBAAO,KAAK;AAEZ,iBAAK,KAAK,MAAM;AAEhB,iBAAK,SAAS,IAAI;UACpB;QACA,CAAC;AAYM,iBAAS,UAAU3E,MAAIN,UAAS;AACtC,iBAAO,IAAIyD,KAAInD,MAAIN,QAAO;QAC3B;ACvsDU,YAACoF,WAAU,MAAM,OAAO;;;UAGjC,SAAS;;;;YAIR,UAAU;UACZ;UAEC,YAAY,SAAUpF,UAAS;AAC9BO,uBAAgB,MAAMP,QAAO;UAC/B;;;;;;;UAQC,aAAa,WAAY;AACxB,mBAAO,KAAK,QAAQ;UACtB;;;UAIC,aAAa,SAAU4E,WAAU;AAChC,gBAAIS,OAAM,KAAK;AAEf,gBAAIA,MAAK;AACR,cAAAA,KAAI,cAAc,IAAI;YACzB;AAEE,iBAAK,QAAQ,WAAWT;AAExB,gBAAIS,MAAK;AACR,cAAAA,KAAI,WAAW,IAAI;YACtB;AAEE,mBAAO;UACT;;;UAIC,cAAc,WAAY;AACzB,mBAAO,KAAK;UACd;;;UAIC,OAAO,SAAUA,MAAK;AACrB,iBAAK,OAAM;AACX,iBAAK,OAAOA;AAEZ,gBAAI,YAAY,KAAK,aAAa,KAAK,MAAMA,IAAG,GAC5C,MAAM,KAAK,YAAW,GACtB,SAASA,KAAI,gBAAgB,GAAG;AAEpCxB,YAAAA,UAAiB,WAAW,iBAAiB;AAE7C,gBAAI,IAAI,QAAQ,QAAQ,MAAM,IAAI;AACjC,qBAAO,aAAa,WAAW,OAAO,UAAU;YACnD,OAAS;AACN,qBAAO,YAAY,SAAS;YAC/B;AAEE,iBAAK,KAAK,GAAG,UAAU,KAAK,QAAQ,IAAI;AAExC,mBAAO;UACT;;;UAIC,QAAQ,WAAY;AACnB,gBAAI,CAAC,KAAK,MAAM;AACf,qBAAO;YACV;AAEEU,mBAAe,KAAK,UAAU;AAE9B,gBAAI,KAAK,UAAU;AAClB,mBAAK,SAAS,KAAK,IAAI;YAC1B;AAEE,iBAAK,KAAK,IAAI,UAAU,KAAK,QAAQ,IAAI;AACzC,iBAAK,OAAO;AAEZ,mBAAO;UACT;UAEC,eAAe,SAAUtD,IAAG;AAE3B,gBAAI,KAAK,QAAQA,MAAKA,GAAE,UAAU,KAAKA,GAAE,UAAU,GAAG;AACrD,mBAAK,KAAK,aAAY,EAAG,MAAK;YACjC;UACA;QACA,CAAC;AAES,YAAC,UAAU,SAAUjB,UAAS;AACvC,iBAAO,IAAIoF,SAAQpF,QAAO;QAC3B;AAiBA,QAAAyD,KAAI,QAAQ;;;UAGX,YAAY,SAAU6B,UAAS;AAC9B,YAAAA,SAAQ,MAAM,IAAI;AAClB,mBAAO;UACT;;;UAIC,eAAe,SAAUA,UAAS;AACjC,YAAAA,SAAQ,OAAM;AACd,mBAAO;UACT;UAEC,iBAAiB,WAAY;AAC5B,gBAAI,UAAU,KAAK,kBAAkB,CAAA,GACjC,IAAI,YACJ,YAAY,KAAK,oBACTd,SAAe,OAAO,IAAI,qBAAqB,KAAK,UAAU;AAE1E,qBAAS,aAAa,OAAO,OAAO;AACnC,kBAAI,YAAY,IAAI,QAAQ,MAAM,IAAI;AAEtC,sBAAQ,QAAQ,KAAK,IAAIA,SAAe,OAAO,WAAW,SAAS;YACtE;AAEE,yBAAa,OAAO,MAAM;AAC1B,yBAAa,OAAO,OAAO;AAC3B,yBAAa,UAAU,MAAM;AAC7B,yBAAa,UAAU,OAAO;UAChC;UAEC,kBAAkB,WAAY;AAC7B,qBAAS,KAAK,KAAK,iBAAiB;AACnCD,qBAAe,KAAK,gBAAgB,CAAC,CAAC;YACzC;AACEA,mBAAe,KAAK,iBAAiB;AACrC,mBAAO,KAAK;AACZ,mBAAO,KAAK;UACd;QACA,CAAC;AChIM,YAAI,SAASa,SAAQ,OAAO;;;UAGlC,SAAS;;;YAGR,WAAW;YACX,UAAU;;;YAIV,YAAY;;;YAIZ,gBAAgB;;;;YAKhB,YAAY;;;;;;;YAQZ,cAAc,SAAU,QAAQ,QAAQ,OAAO,OAAO;AACrD,qBAAO,QAAQ,QAAQ,KAAM,QAAQ,QAAQ,IAAI;YACpD;UACA;UAEC,YAAY,SAAU,YAAY,UAAUpF,UAAS;AACpDO,uBAAgB,MAAMP,QAAO;AAE7B,iBAAK,sBAAsB,CAAA;AAC3B,iBAAK,UAAU,CAAA;AACf,iBAAK,cAAc;AACnB,iBAAK,iBAAiB;AACtB,iBAAK,gBAAgB;AAErB,qBAAS,KAAK,YAAY;AACzB,mBAAK,UAAU,WAAW,CAAC,GAAG,CAAC;YAClC;AAEE,iBAAK,KAAK,UAAU;AACnB,mBAAK,UAAU,SAAS,CAAC,GAAG,GAAG,IAAI;YACtC;UACA;UAEC,OAAO,SAAUqF,MAAK;AACrB,iBAAK,YAAW;AAChB,iBAAK,QAAO;AAEZ,iBAAK,OAAOA;AACZ,YAAAA,KAAI,GAAG,WAAW,KAAK,sBAAsB,IAAI;AAEjD,qBAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,QAAQ,KAAK;AAC7C,mBAAK,QAAQ,CAAC,EAAE,MAAM,GAAG,cAAc,KAAK,gBAAgB,IAAI;YACnE;AAEE,mBAAO,KAAK;UACd;UAEC,OAAO,SAAUA,MAAK;AACrB,YAAAD,SAAQ,UAAU,MAAM,KAAK,MAAMC,IAAG;AAEtC,mBAAO,KAAK,sBAAqB;UACnC;UAEC,UAAU,WAAY;AACrB,iBAAK,KAAK,IAAI,WAAW,KAAK,sBAAsB,IAAI;AAExD,qBAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,QAAQ,KAAK;AAC7C,mBAAK,QAAQ,CAAC,EAAE,MAAM,IAAI,cAAc,KAAK,gBAAgB,IAAI;YACpE;UACA;;;UAIC,cAAc,SAAU,OAAOhF,OAAM;AACpC,iBAAK,UAAU,OAAOA,KAAI;AAC1B,mBAAQ,KAAK,OAAQ,KAAK,QAAO,IAAK;UACxC;;;UAIC,YAAY,SAAU,OAAOA,OAAM;AAClC,iBAAK,UAAU,OAAOA,OAAM,IAAI;AAChC,mBAAQ,KAAK,OAAQ,KAAK,QAAO,IAAK;UACxC;;;UAIC,aAAa,SAAU,OAAO;AAC7B,kBAAM,IAAI,cAAc,KAAK,gBAAgB,IAAI;AAEjD,gBAAI,MAAM,KAAK,UAAUW,MAAW,KAAK,CAAC;AAC1C,gBAAI,KAAK;AACR,mBAAK,QAAQ,OAAO,KAAK,QAAQ,QAAQ,GAAG,GAAG,CAAC;YACnD;AACE,mBAAQ,KAAK,OAAQ,KAAK,QAAO,IAAK;UACxC;;;UAIC,QAAQ,WAAY;AACnB6C,YAAAA,UAAiB,KAAK,YAAY,iCAAiC;AACnE,iBAAK,SAAS,MAAM,SAAS;AAC7B,gBAAI,mBAAmB,KAAK,KAAK,QAAO,EAAG,KAAK,KAAK,WAAW,YAAY;AAC5E,gBAAI,mBAAmB,KAAK,SAAS,cAAc;AAClDA,cAAAA,UAAiB,KAAK,UAAU,kCAAkC;AAClE,mBAAK,SAAS,MAAM,SAAS,mBAAmB;YACnD,OAAS;AACNoB,cAAAA,aAAoB,KAAK,UAAU,kCAAkC;YACxE;AACE,iBAAK,qBAAoB;AACzB,mBAAO;UACT;;;UAIC,UAAU,WAAY;AACrBA,YAAAA,aAAoB,KAAK,YAAY,iCAAiC;AACtE,mBAAO;UACT;UAEC,aAAa,WAAY;AACxB,gBAAI,YAAY,0BACZ,YAAY,KAAK,aAAaT,SAAe,OAAO,SAAS,GAC7D,YAAY,KAAK,QAAQ;AAG7B,sBAAU,aAAa,iBAAiB,IAAI;AAE5Ce,oCAAiC,SAAS;AAC1CC,qCAAkC,SAAS;AAE3C,gBAAI,UAAU,KAAK,WAAWhB,SAAe,WAAW,YAAY,OAAO;AAE3E,gBAAI,WAAW;AACd,mBAAK,KAAK,GAAG,SAAS,KAAK,UAAU,IAAI;AAEzCzB,iBAAY,WAAW;gBACtB,YAAY,KAAK;gBACjB,YAAY,KAAK;cACrB,GAAM,IAAI;YACV;AAEE,gBAAI0C,QAAO,KAAK,cAAcjB,SAAe,KAAK,YAAY,WAAW,SAAS;AAClF,YAAAiB,MAAK,OAAO;AACZ,YAAAA,MAAK,QAAQ;AACb,YAAAA,MAAK,aAAa,QAAQ,QAAQ;AAElC1C,eAAY0C,OAAM;cACjB,SAAS,SAAUxE,IAAG;AACrB,oBAAIA,GAAE,YAAY,IAAI;AACrB,uBAAK,cAAa;gBACvB;cACA;;cAEG,OAAO,SAAUA,IAAG;AACnBkB,+BAAwBlB,EAAC;AACzB,qBAAK,cAAa;cACtB;YACA,GAAK,IAAI;AAEP,gBAAI,CAAC,WAAW;AACf,mBAAK,OAAM;YACd;AAEE,iBAAK,kBAAkBuD,SAAe,OAAO,YAAY,SAAS,OAAO;AACzE,iBAAK,aAAaA,SAAe,OAAO,YAAY,cAAc,OAAO;AACzE,iBAAK,gBAAgBA,SAAe,OAAO,YAAY,aAAa,OAAO;AAE3E,sBAAU,YAAY,OAAO;UAC/B;UAEC,WAAW,SAAUlE,MAAI;AACxB,qBAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,QAAQ,KAAK;AAE7C,kBAAI,KAAK,QAAQ,CAAC,KAAKU,MAAW,KAAK,QAAQ,CAAC,EAAE,KAAK,MAAMV,MAAI;AAChE,uBAAO,KAAK,QAAQ,CAAC;cACzB;YACA;UACA;UAEC,WAAW,SAAU,OAAOD,OAAM,SAAS;AAC1C,gBAAI,KAAK,MAAM;AACd,oBAAM,GAAG,cAAc,KAAK,gBAAgB,IAAI;YACnD;AAEE,iBAAK,QAAQ,KAAK;cACjB;cACA,MAAMA;cACN;YACH,CAAG;AAED,gBAAI,KAAK,QAAQ,YAAY;AAC5B,mBAAK,QAAQ,KAAKqD,KAAU,SAAUpC,IAAG,GAAG;AAC3C,uBAAO,KAAK,QAAQ,aAAaA,GAAE,OAAO,EAAE,OAAOA,GAAE,MAAM,EAAE,IAAI;cACrE,GAAM,IAAI,CAAC;YACX;AAEE,gBAAI,KAAK,QAAQ,cAAc,MAAM,WAAW;AAC/C,mBAAK;AACL,oBAAM,UAAU,KAAK,WAAW;YACnC;AAEE,iBAAK,sBAAqB;UAC5B;UAEC,SAAS,WAAY;AACpB,gBAAI,CAAC,KAAK,YAAY;AAAE,qBAAO;YAAK;AAEpCoE,kBAAc,KAAK,eAAe;AAClCA,kBAAc,KAAK,aAAa;AAEhC,iBAAK,sBAAsB,CAAA;AAC3B,gBAAI,mBAAmB,iBAAiB,GAAG,KAAK,kBAAkB;AAElE,iBAAK,IAAI,GAAG,IAAI,KAAK,QAAQ,QAAQ,KAAK;AACzC,oBAAM,KAAK,QAAQ,CAAC;AACpB,mBAAK,SAAS,GAAG;AACjB,gCAAkB,mBAAmB,IAAI;AACzC,kCAAoB,qBAAqB,CAAC,IAAI;AAC9C,iCAAmB,CAAC,IAAI,UAAU,IAAI;YACzC;AAGE,gBAAI,KAAK,QAAQ,gBAAgB;AAChC,kCAAoB,qBAAqB,kBAAkB;AAC3D,mBAAK,gBAAgB,MAAM,UAAU,oBAAoB,KAAK;YACjE;AAEE,iBAAK,WAAW,MAAM,UAAU,mBAAmB,oBAAoB,KAAK;AAE5E,mBAAO;UACT;UAEC,gBAAgB,SAAUzE,IAAG;AAC5B,gBAAI,CAAC,KAAK,gBAAgB;AACzB,mBAAK,QAAO;YACf;AAEE,gBAAI,MAAM,KAAK,UAAUD,MAAWC,GAAE,MAAM,CAAC;AAW7C,gBAAI,OAAO,IAAI,UACbA,GAAE,SAAS,QAAQ,eAAe,kBAClCA,GAAE,SAAS,QAAQ,oBAAoB;AAEzC,gBAAI,MAAM;AACT,mBAAK,KAAK,KAAK,MAAM,GAAG;YAC3B;UACA;;UAGC,qBAAqB,SAAUZ,OAAM,SAAS;AAE7C,gBAAI,YAAY,uEACdA,QAAO,OAAO,UAAU,uBAAuB,MAAM;AAEvD,gBAAI,gBAAgB,SAAS,cAAc,KAAK;AAChD,0BAAc,YAAY;AAE1B,mBAAO,cAAc;UACvB;UAEC,UAAU,SAAU,KAAK;AACxB,gBAAI,QAAQ,SAAS,cAAc,OAAO,GACtC,UAAU,KAAK,KAAK,SAAS,IAAI,KAAK,GACtC;AAEJ,gBAAI,IAAI,SAAS;AAChB,sBAAQ,SAAS,cAAc,OAAO;AACtC,oBAAM,OAAO;AACb,oBAAM,YAAY;AAClB,oBAAM,iBAAiB;YAC1B,OAAS;AACN,sBAAQ,KAAK,oBAAoB,yBAAyBW,MAAW,IAAI,GAAG,OAAO;YACtF;AAEE,iBAAK,oBAAoB,KAAK,KAAK;AACnC,kBAAM,UAAUA,MAAW,IAAI,KAAK;AAEpC+B,eAAY,OAAO,SAAS,KAAK,eAAe,IAAI;AAEpD,gBAAI1C,QAAO,SAAS,cAAc,MAAM;AACxC,YAAAA,MAAK,YAAY,MAAM,IAAI;AAI3B,gBAAI,SAAS,SAAS,cAAc,MAAM;AAE1C,kBAAM,YAAY,MAAM;AACxB,mBAAO,YAAY,KAAK;AACxB,mBAAO,YAAYA,KAAI;AAEvB,gBAAI,YAAY,IAAI,UAAU,KAAK,gBAAgB,KAAK;AACxD,sBAAU,YAAY,KAAK;AAE3B,iBAAK,qBAAoB;AACzB,mBAAO;UACT;UAEC,eAAe,WAAY;AAE1B,gBAAI,KAAK,eAAe;AACvB;YACH;AAEE,gBAAI,SAAS,KAAK,qBACd,OAAO;AACX,gBAAI,cAAc,CAAA,GACd,gBAAgB,CAAA;AAEpB,iBAAK,iBAAiB;AAEtB,qBAAS,IAAI,OAAO,SAAS,GAAG,KAAK,GAAG,KAAK;AAC5C,sBAAQ,OAAO,CAAC;AAChB,sBAAQ,KAAK,UAAU,MAAM,OAAO,EAAE;AAEtC,kBAAI,MAAM,SAAS;AAClB,4BAAY,KAAK,KAAK;cAC1B,WAAc,CAAC,MAAM,SAAS;AAC1B,8BAAc,KAAK,KAAK;cAC5B;YACA;AAGE,iBAAK,IAAI,GAAG,IAAI,cAAc,QAAQ,KAAK;AAC1C,kBAAI,KAAK,KAAK,SAAS,cAAc,CAAC,CAAC,GAAG;AACzC,qBAAK,KAAK,YAAY,cAAc,CAAC,CAAC;cAC1C;YACA;AACE,iBAAK,IAAI,GAAG,IAAI,YAAY,QAAQ,KAAK;AACxC,kBAAI,CAAC,KAAK,KAAK,SAAS,YAAY,CAAC,CAAC,GAAG;AACxC,qBAAK,KAAK,SAAS,YAAY,CAAC,CAAC;cACrC;YACA;AAEE,iBAAK,iBAAiB;AAEtB,iBAAK,cAAa;UACpB;UAEC,sBAAsB,WAAY;AACjC,gBAAI,SAAS,KAAK,qBACd,OACA,OACAsB,QAAO,KAAK,KAAK,QAAO;AAE5B,qBAAS,IAAI,OAAO,SAAS,GAAG,KAAK,GAAG,KAAK;AAC5C,sBAAQ,OAAO,CAAC;AAChB,sBAAQ,KAAK,UAAU,MAAM,OAAO,EAAE;AACtC,oBAAM,WAAY,MAAM,QAAQ,YAAY,UAAaA,QAAO,MAAM,QAAQ,WAC5D,MAAM,QAAQ,YAAY,UAAaA,QAAO,MAAM,QAAQ;YAEjF;UACA;UAEC,uBAAuB,WAAY;AAClC,gBAAI,KAAK,QAAQ,CAAC,KAAK,QAAQ,WAAW;AACzC,mBAAK,OAAM;YACd;AACE,mBAAO;UACT;UAEC,eAAe,WAAY;AAC1B,gBAAI,UAAU,KAAK;AACnB,iBAAK,gBAAgB;AACrBoB,eAAY,SAAS,SAASZ,cAAuB;AACrD,iBAAK,OAAM;AACX,gBAAI,OAAO;AACX,uBAAW,WAAY;AACtBa,kBAAa,SAAS,SAASb,cAAuB;AACtD,mBAAK,gBAAgB;YACxB,CAAG;UACH;QAEA,CAAC;AAKM,YAAI,SAAS,SAAU,YAAY,UAAUnC,UAAS;AAC5D,iBAAO,IAAI,OAAO,YAAY,UAAUA,QAAO;QAChD;AC5aO,YAAI,OAAOoF,SAAQ,OAAO;;;UAGhC,SAAS;YACR,UAAU;;;YAIV,YAAY;;;YAIZ,aAAa;;;YAIb,aAAa;;;YAIb,cAAc;UAChB;UAEC,OAAO,SAAUC,MAAK;AACrB,gBAAI,WAAW,wBACX,YAAYb,SAAe,OAAO,WAAW,cAAc,GAC3DxE,WAAU,KAAK;AAEnB,iBAAK,gBAAiB,KAAK;cAAcA,SAAQ;cAAYA,SAAQ;cAC7D,WAAW;cAAQ;cAAW,KAAK;YAAO;AAClD,iBAAK,iBAAiB,KAAK;cAAcA,SAAQ;cAAaA,SAAQ;cAC9D,WAAW;cAAQ;cAAW,KAAK;YAAQ;AAEnD,iBAAK,gBAAe;AACpB,YAAAqF,KAAI,GAAG,4BAA4B,KAAK,iBAAiB,IAAI;AAE7D,mBAAO;UACT;UAEC,UAAU,SAAUA,MAAK;AACxB,YAAAA,KAAI,IAAI,4BAA4B,KAAK,iBAAiB,IAAI;UAChE;UAEC,SAAS,WAAY;AACpB,iBAAK,YAAY;AACjB,iBAAK,gBAAe;AACpB,mBAAO;UACT;UAEC,QAAQ,WAAY;AACnB,iBAAK,YAAY;AACjB,iBAAK,gBAAe;AACpB,mBAAO;UACT;UAEC,SAAS,SAAUpE,IAAG;AACrB,gBAAI,CAAC,KAAK,aAAa,KAAK,KAAK,QAAQ,KAAK,KAAK,WAAU,GAAI;AAChE,mBAAK,KAAK,OAAO,KAAK,KAAK,QAAQ,aAAaA,GAAE,WAAW,IAAI,EAAE;YACtE;UACA;UAEC,UAAU,SAAUA,IAAG;AACtB,gBAAI,CAAC,KAAK,aAAa,KAAK,KAAK,QAAQ,KAAK,KAAK,WAAU,GAAI;AAChE,mBAAK,KAAK,QAAQ,KAAK,KAAK,QAAQ,aAAaA,GAAE,WAAW,IAAI,EAAE;YACvE;UACA;UAEC,eAAe,SAAU,MAAM,OAAO,WAAW,WAAW,IAAI;AAC/D,gBAAIwE,QAAOjB,SAAe,KAAK,WAAW,SAAS;AACnD,YAAAiB,MAAK,YAAY;AACjB,YAAAA,MAAK,OAAO;AACZ,YAAAA,MAAK,QAAQ;AAKb,YAAAA,MAAK,aAAa,QAAQ,QAAQ;AAClC,YAAAA,MAAK,aAAa,cAAc,KAAK;AAErCF,oCAAiCE,KAAI;AACrC1C,eAAY0C,OAAM,SAASE,IAAa;AACxC5C,eAAY0C,OAAM,SAAS,IAAI,IAAI;AACnC1C,eAAY0C,OAAM,SAAS,KAAK,eAAe,IAAI;AAEnD,mBAAOA;UACT;UAEC,iBAAiB,WAAY;AAC5B,gBAAIJ,OAAM,KAAK,MACX,YAAY;AAEhBJ,YAAAA,aAAoB,KAAK,eAAe,SAAS;AACjDA,YAAAA,aAAoB,KAAK,gBAAgB,SAAS;AAClD,iBAAK,cAAc,aAAa,iBAAiB,OAAO;AACxD,iBAAK,eAAe,aAAa,iBAAiB,OAAO;AAEzD,gBAAI,KAAK,aAAaI,KAAI,UAAUA,KAAI,WAAU,GAAI;AACrDxB,cAAAA,UAAiB,KAAK,gBAAgB,SAAS;AAC/C,mBAAK,eAAe,aAAa,iBAAiB,MAAM;YAC3D;AACE,gBAAI,KAAK,aAAawB,KAAI,UAAUA,KAAI,WAAU,GAAI;AACrDxB,cAAAA,UAAiB,KAAK,eAAe,SAAS;AAC9C,mBAAK,cAAc,aAAa,iBAAiB,MAAM;YAC1D;UACA;QACA,CAAC;AAMD,QAAAJ,KAAI,aAAa;UAChB,aAAa;QACd,CAAC;AAED,QAAAA,KAAI,YAAY,WAAY;AAC3B,cAAI,KAAK,QAAQ,aAAa;AAK7B,iBAAK,cAAc,IAAI,KAAI;AAC3B,iBAAK,WAAW,KAAK,WAAW;UAClC;QACA,CAAC;AAKM,YAAI,OAAO,SAAUzD,UAAS;AACpC,iBAAO,IAAI,KAAKA,QAAO;QACxB;AC/HO,YAAI,QAAQoF,SAAQ,OAAO;;;UAGjC,SAAS;YACR,UAAU;;;YAIV,UAAU;;;YAIV,QAAQ;;;YAIR,UAAU;;;UAIZ;UAEC,OAAO,SAAUC,MAAK;AACrB,gBAAI,YAAY,yBACZ,YAAYb,SAAe,OAAO,SAAS,GAC3CxE,WAAU,KAAK;AAEnB,iBAAK,WAAWA,UAAS,YAAY,SAAS,SAAS;AAEvD,YAAAqF,KAAI,GAAGrF,SAAQ,iBAAiB,YAAY,QAAQ,KAAK,SAAS,IAAI;AACtE,YAAAqF,KAAI,UAAU,KAAK,SAAS,IAAI;AAEhC,mBAAO;UACT;UAEC,UAAU,SAAUA,MAAK;AACxB,YAAAA,KAAI,IAAI,KAAK,QAAQ,iBAAiB,YAAY,QAAQ,KAAK,SAAS,IAAI;UAC9E;UAEC,YAAY,SAAUrF,UAAS,WAAW,WAAW;AACpD,gBAAIA,SAAQ,QAAQ;AACnB,mBAAK,UAAUwE,SAAe,OAAO,WAAW,SAAS;YAC5D;AACE,gBAAIxE,SAAQ,UAAU;AACrB,mBAAK,UAAUwE,SAAe,OAAO,WAAW,SAAS;YAC5D;UACA;UAEC,SAAS,WAAY;AACpB,gBAAIa,OAAM,KAAK,MACXlE,KAAIkE,KAAI,QAAO,EAAG,IAAI;AAE1B,gBAAI,YAAYA,KAAI;cACnBA,KAAI,uBAAuB,CAAC,GAAGlE,EAAC,CAAC;cACjCkE,KAAI,uBAAuB,CAAC,KAAK,QAAQ,UAAUlE,EAAC,CAAC;YAAC;AAEvD,iBAAK,cAAc,SAAS;UAC9B;UAEC,eAAe,SAAU,WAAW;AACnC,gBAAI,KAAK,QAAQ,UAAU,WAAW;AACrC,mBAAK,cAAc,SAAS;YAC/B;AACE,gBAAI,KAAK,QAAQ,YAAY,WAAW;AACvC,mBAAK,gBAAgB,SAAS;YACjC;UACA;UAEC,eAAe,SAAU,WAAW;AACnC,gBAAI,SAAS,KAAK,aAAa,SAAS,GACpC,QAAQ,SAAS,MAAO,SAAS,OAAQ,SAAS,MAAQ;AAE9D,iBAAK,aAAa,KAAK,SAAS,OAAO,SAAS,SAAS;UAC3D;UAEC,iBAAiB,SAAU,WAAW;AACrC,gBAAI,UAAU,YAAY,WACtB,UAAU,OAAO;AAErB,gBAAI,UAAU,MAAM;AACnB,yBAAW,UAAU;AACrB,sBAAQ,KAAK,aAAa,QAAQ;AAClC,mBAAK,aAAa,KAAK,SAAS,QAAQ,OAAO,QAAQ,QAAQ;YAElE,OAAS;AACN,qBAAO,KAAK,aAAa,OAAO;AAChC,mBAAK,aAAa,KAAK,SAAS,OAAO,OAAO,OAAO,OAAO;YAC/D;UACA;UAEC,cAAc,SAAUS,QAAO,MAAM,OAAO;AAC3C,YAAAA,OAAM,MAAM,QAAQ,KAAK,MAAM,KAAK,QAAQ,WAAW,KAAK,IAAI;AAChE,YAAAA,OAAM,YAAY;UACpB;UAEC,cAAc,SAAU,KAAK;AAC5B,gBAAIgE,SAAQ,KAAK,IAAI,KAAK,KAAK,MAAM,GAAG,IAAI,IAAI,SAAS,CAAC,GACtD/F,KAAI,MAAM+F;AAEd,YAAA/F,KAAIA,MAAK,KAAK,KACVA,MAAK,IAAI,IACTA,MAAK,IAAI,IACTA,MAAK,IAAI,IAAI;AAEjB,mBAAO+F,SAAQ/F;UACjB;QACA,CAAC;AAKM,YAAI+B,SAAQ,SAAU5B,UAAS;AACrC,iBAAO,IAAI,MAAMA,QAAO;QACzB;AC3HA,YAAI,gBAAgB;AAWb,YAAI,cAAcoF,SAAQ,OAAO;;;UAGvC,SAAS;YACR,UAAU;;;YAIV,QAAQ,wFAAwF,QAAQ,YAAY,gBAAgB,MAAM,MAAM;UAClJ;UAEC,YAAY,SAAUpF,UAAS;AAC9BO,uBAAgB,MAAMP,QAAO;AAE7B,iBAAK,gBAAgB,CAAA;UACvB;UAEC,OAAO,SAAUqF,MAAK;AACrB,YAAAA,KAAI,qBAAqB;AACzB,iBAAK,aAAab,SAAe,OAAO,6BAA6B;AACrEe,oCAAiC,KAAK,UAAU;AAGhD,qBAAS,KAAKF,KAAI,SAAS;AAC1B,kBAAIA,KAAI,QAAQ,CAAC,EAAE,gBAAgB;AAClC,qBAAK,eAAeA,KAAI,QAAQ,CAAC,EAAE,eAAc,CAAE;cACvD;YACA;AAEE,iBAAK,QAAO;AAEZ,YAAAA,KAAI,GAAG,YAAY,KAAK,iBAAiB,IAAI;AAE7C,mBAAO,KAAK;UACd;UAEC,UAAU,SAAUA,MAAK;AACxB,YAAAA,KAAI,IAAI,YAAY,KAAK,iBAAiB,IAAI;UAChD;UAEC,iBAAiB,SAAU,IAAI;AAC9B,gBAAI,GAAG,MAAM,gBAAgB;AAC5B,mBAAK,eAAe,GAAG,MAAM,eAAc,CAAE;AAC7C,iBAAG,MAAM,KAAK,UAAU,WAAY;AACnC,qBAAK,kBAAkB,GAAG,MAAM,eAAc,CAAE;cACpD,GAAM,IAAI;YACV;UACA;;;UAIC,WAAW,SAAUQ,SAAQ;AAC5B,iBAAK,QAAQ,SAASA;AACtB,iBAAK,QAAO;AACZ,mBAAO;UACT;;;UAIC,gBAAgB,SAAU,MAAM;AAC/B,gBAAI,CAAC,MAAM;AAAE,qBAAO;YAAK;AAEzB,gBAAI,CAAC,KAAK,cAAc,IAAI,GAAG;AAC9B,mBAAK,cAAc,IAAI,IAAI;YAC9B;AACE,iBAAK,cAAc,IAAI;AAEvB,iBAAK,QAAO;AAEZ,mBAAO;UACT;;;UAIC,mBAAmB,SAAU,MAAM;AAClC,gBAAI,CAAC,MAAM;AAAE,qBAAO;YAAK;AAEzB,gBAAI,KAAK,cAAc,IAAI,GAAG;AAC7B,mBAAK,cAAc,IAAI;AACvB,mBAAK,QAAO;YACf;AAEE,mBAAO;UACT;UAEC,SAAS,WAAY;AACpB,gBAAI,CAAC,KAAK,MAAM;AAAE;YAAO;AAEzB,gBAAI,UAAU,CAAA;AAEd,qBAAS,KAAK,KAAK,eAAe;AACjC,kBAAI,KAAK,cAAc,CAAC,GAAG;AAC1B,wBAAQ,KAAK,CAAC;cAClB;YACA;AAEE,gBAAI,mBAAmB,CAAA;AAEvB,gBAAI,KAAK,QAAQ,QAAQ;AACxB,+BAAiB,KAAK,KAAK,QAAQ,MAAM;YAC5C;AACE,gBAAI,QAAQ,QAAQ;AACnB,+BAAiB,KAAK,QAAQ,KAAK,IAAI,CAAC;YAC3C;AAEE,iBAAK,WAAW,YAAY,iBAAiB,KAAK,qCAAqC;UACzF;QACA,CAAC;AAMD,QAAApC,KAAI,aAAa;UAChB,oBAAoB;QACrB,CAAC;AAED,QAAAA,KAAI,YAAY,WAAY;AAC3B,cAAI,KAAK,QAAQ,oBAAoB;AACpC,gBAAI,YAAW,EAAG,MAAM,IAAI;UAC9B;QACA,CAAC;AAKM,YAAI,cAAc,SAAUzD,UAAS;AAC3C,iBAAO,IAAI,YAAYA,QAAO;QAC/B;AC7IA,QAAAoF,SAAQ,SAAS;AACjB,QAAAA,SAAQ,OAAO;AACf,QAAAA,SAAQ,QAAQ;AAChB,QAAAA,SAAQ,cAAc;AAEtB,gBAAQ,SAAS;AACjB,gBAAQ,OAAO;AACf,gBAAQ,QAAQxD;AAChB,gBAAQ,cAAc;ACHZ,YAAC,UAAU,MAAM,OAAO;UACjC,YAAY,SAAUyD,MAAK;AAC1B,iBAAK,OAAOA;UACd;;;UAIC,QAAQ,WAAY;AACnB,gBAAI,KAAK,UAAU;AAAE,qBAAO;YAAK;AAEjC,iBAAK,WAAW;AAChB,iBAAK,SAAQ;AACb,mBAAO;UACT;;;UAIC,SAAS,WAAY;AACpB,gBAAI,CAAC,KAAK,UAAU;AAAE,qBAAO;YAAK;AAElC,iBAAK,WAAW;AAChB,iBAAK,YAAW;AAChB,mBAAO;UACT;;;UAIC,SAAS,WAAY;AACpB,mBAAO,CAAC,CAAC,KAAK;UAChB;;;;;;;QAQA,CAAC;AAKD,gBAAQ,QAAQ,SAAUA,MAAKhF,OAAM;AACpC,UAAAgF,KAAI,WAAWhF,OAAM,IAAI;AACzB,iBAAO;QACR;AChDU,YAAC,QAAQ,EAAC,OAAc;ACelC,YAAI,QAAQ,QAAQ,QAAQ,yBAAyB;AAE3C,YAAC,YAAY,QAAQ,OAAO;UAErC,SAAS;;;;;;YAMR,gBAAgB;UAClB;;;UAIC,YAAY,SAAU,SAAS,iBAAiByF,iBAAgB9F,UAAS;AACxEO,uBAAgB,MAAMP,QAAO;AAE7B,iBAAK,WAAW;AAChB,iBAAK,mBAAmB,mBAAmB;AAC3C,iBAAK,kBAAkB8F;UACzB;;;UAIC,QAAQ,WAAY;AACnB,gBAAI,KAAK,UAAU;AAAE;YAAO;AAE5B/C,eAAY,KAAK,kBAAkB,OAAO,KAAK,SAAS,IAAI;AAE5D,iBAAK,WAAW;UAClB;;;UAIC,SAAS,WAAY;AACpB,gBAAI,CAAC,KAAK,UAAU;AAAE;YAAO;AAI7B,gBAAI,UAAU,cAAc,MAAM;AACjC,mBAAK,WAAW,IAAI;YACvB;AAEEC,gBAAa,KAAK,kBAAkB,OAAO,KAAK,SAAS,IAAI;AAE7D,iBAAK,WAAW;AAChB,iBAAK,SAAS;UAChB;UAEC,SAAS,SAAU/B,IAAG;AAGrB,gBAAI,CAAC,KAAK,UAAU;AAAE;YAAO;AAE7B,iBAAK,SAAS;AAEd,gBAAI8E,UAAiB,KAAK,UAAU,mBAAmB,GAAG;AAAE;YAAO;AAEnE,gBAAI9E,GAAE,WAAWA,GAAE,QAAQ,WAAW,GAAG;AAExC,kBAAI,UAAU,cAAc,MAAM;AACjC,qBAAK,WAAU;cACnB;AACG;YACH;AAEE,gBAAI,UAAU,aAAaA,GAAE,YAAcA,GAAE,UAAU,KAAOA,GAAE,WAAW,KAAM,CAACA,GAAE,SAAU;AAAE;YAAO;AACvG,sBAAU,YAAY;AAEtB,gBAAI,KAAK,iBAAiB;AACzB+D,6BAAuB,KAAK,QAAQ;YACvC;AAEEgB,6BAAwB;AACxBC,iCAA4B;AAE5B,gBAAI,KAAK,SAAS;AAAE;YAAO;AAI3B,iBAAK,KAAK,MAAM;AAEhB,gBAAI,QAAQhF,GAAE,UAAUA,GAAE,QAAQ,CAAC,IAAIA,IACnC,cAAciF,mBAA2B,KAAK,QAAQ;AAE1D,iBAAK,cAAc,IAAIhF,OAAM,MAAM,SAAS,MAAM,OAAO;AACzD,iBAAK,YAAYkC,aAAoB,KAAK,QAAQ;AAGlD,iBAAK,eAAe+C,UAAiB,WAAW;AAEhD,gBAAI,aAAalF,GAAE,SAAS;AAC5B8B,eAAY,UAAU,aAAa,cAAc,aAAa,KAAK,SAAS,IAAI;AAChFA,eAAY,UAAU,aAAa,YAAY,wBAAwB,KAAK,OAAO,IAAI;UACzF;UAEC,SAAS,SAAU9B,IAAG;AAGrB,gBAAI,CAAC,KAAK,UAAU;AAAE;YAAO;AAE7B,gBAAIA,GAAE,WAAWA,GAAE,QAAQ,SAAS,GAAG;AACtC,mBAAK,SAAS;AACd;YACH;AAEE,gBAAI,QAASA,GAAE,WAAWA,GAAE,QAAQ,WAAW,IAAIA,GAAE,QAAQ,CAAC,IAAIA,IAC9D,SAAS,IAAIC,OAAM,MAAM,SAAS,MAAM,OAAO,EAAE,UAAU,KAAK,WAAW;AAE/E,gBAAI,CAAC,OAAO,KAAK,CAAC,OAAO,GAAG;AAAE;YAAO;AACrC,gBAAI,KAAK,IAAI,OAAO,CAAC,IAAI,KAAK,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,gBAAgB;AAAE;YAAO;AAKpF,mBAAO,KAAK,KAAK,aAAa;AAC9B,mBAAO,KAAK,KAAK,aAAa;AAE9BiB,2BAAwBlB,EAAC;AAEzB,gBAAI,CAAC,KAAK,QAAQ;AAGjB,mBAAK,KAAK,WAAW;AAErB,mBAAK,SAAS;AAEd4C,cAAAA,UAAiB,SAAS,MAAM,kBAAkB;AAElD,mBAAK,cAAc5C,GAAE,UAAUA,GAAE;AAGjC,kBAAI,OAAO,sBAAsB,KAAK,uBAAuB,OAAO,oBAAoB;AACvF,qBAAK,cAAc,KAAK,YAAY;cACxC;AACG4C,cAAAA,UAAiB,KAAK,aAAa,qBAAqB;YAC3D;AAEE,iBAAK,UAAU,KAAK,UAAU,IAAI,MAAM;AACxC,iBAAK,UAAU;AAEf,iBAAK,aAAa5C;AAClB,iBAAK,gBAAe;UACtB;UAEC,iBAAiB,WAAY;AAC5B,gBAAIA,KAAI,EAAC,eAAe,KAAK,WAAU;AAKvC,iBAAK,KAAK,WAAWA,EAAC;AACtBqC,wBAAoB,KAAK,UAAU,KAAK,OAAO;AAI/C,iBAAK,KAAK,QAAQrC,EAAC;UACrB;UAEC,OAAO,WAAY;AAGlB,gBAAI,CAAC,KAAK,UAAU;AAAE;YAAO;AAC7B,iBAAK,WAAU;UACjB;UAEC,YAAY,SAAU,WAAW;AAChCgE,YAAAA,aAAoB,SAAS,MAAM,kBAAkB;AAErD,gBAAI,KAAK,aAAa;AACrBA,cAAAA,aAAoB,KAAK,aAAa,qBAAqB;AAC3D,mBAAK,cAAc;YACtB;AAEEjC,gBAAa,UAAU,uBAAuB,KAAK,SAAS,IAAI;AAChEA,gBAAa,UAAU,gCAAgC,KAAK,OAAO,IAAI;AAEvEoD,4BAAuB;AACvBC,gCAA2B;AAE3B,gBAAI,cAAc,KAAK,UAAU,KAAK;AAEtC,iBAAK,UAAU;AACf,sBAAU,YAAY;AAEtB,gBAAI,aAAa;AAGhB,mBAAK,KAAK,WAAW;gBACpB;gBACA,UAAU,KAAK,QAAQ,WAAW,KAAK,SAAS;cACpD,CAAI;YACJ;UACA;QAEA,CAAC;AC5MM,iBAAS,YAAY,QAAQ,QAAQjF,QAAO;AAClD,cAAI,eACA,QAAQ,CAAC,GAAG,GAAG,GAAG,CAAC,GACnB,GAAG,GAAGkF,IACNhF,IAAG,GACH,KAAKiF,OAAM;AAEf,eAAK,IAAI,GAAG,MAAM,OAAO,QAAQ,IAAI,KAAK,KAAK;AAC9C,mBAAO,CAAC,EAAE,QAAQC,YAAqB,OAAO,CAAC,GAAG,MAAM;UAC1D;AAGC,eAAKF,KAAI,GAAGA,KAAI,GAAGA,MAAK;AACvB,YAAAC,QAAO,MAAMD,EAAC;AACd,4BAAgB,CAAA;AAEhB,iBAAK,IAAI,GAAG,MAAM,OAAO,QAAQ,IAAI,MAAM,GAAG,IAAI,KAAK,IAAI,KAAK;AAC/D,cAAAhF,KAAI,OAAO,CAAC;AACZ,kBAAI,OAAO,CAAC;AAGZ,kBAAI,EAAEA,GAAE,QAAQiF,QAAO;AAEtB,oBAAI,EAAE,QAAQA,OAAM;AACnB,sBAAIE,qBAA8B,GAAGnF,IAAGiF,OAAM,QAAQnF,MAAK;AAC3D,oBAAE,QAAQoF,YAAqB,GAAG,MAAM;AACxC,gCAAc,KAAK,CAAC;gBACzB;AACI,8BAAc,KAAKlF,EAAC;cAGxB,WAAc,EAAE,EAAE,QAAQiF,QAAO;AAC7B,oBAAIE,qBAA8B,GAAGnF,IAAGiF,OAAM,QAAQnF,MAAK;AAC3D,kBAAE,QAAQoF,YAAqB,GAAG,MAAM;AACxC,8BAAc,KAAK,CAAC;cACxB;YACA;AACE,qBAAS;UACX;AAEC,iBAAO;QACR;AAKO,iBAAS,cAAc,SAAS,KAAK;AAC3C,cAAI,GAAG,GAAG,IAAI,IAAI,GAAG,MAAM/G,IAAG0B,IAAG;AAEjC,cAAI,CAAC,WAAW,QAAQ,WAAW,GAAG;AACrC,kBAAM,IAAI,MAAM,oBAAoB;UACtC;AAEC,cAAI,CAACuF,OAAgB,OAAO,GAAG;AAC9B,oBAAQ,KAAK,wDAAwD;AACrE,sBAAU,QAAQ,CAAC;UACrB;AAEC,cAAI,iBAAiB,SAAS,CAAC,GAAG,CAAC,CAAC;AAEpC,cAAI,SAAS,eAAe,OAAO;AACnC,cAAI,aAAa,OAAO,aAAY,EAAG,WAAW,OAAO,aAAY,CAAE,IAAI,OAAO,aAAY,EAAG,WAAW,OAAO,aAAY,CAAE;AAEjI,cAAI,aAAa,MAAM;AAEtB,6BAAiB,SAAS,OAAO;UACnC;AAEC,cAAI,MAAM,QAAQ;AAClB,cAAI,SAAS,CAAA;AACb,eAAK,IAAI,GAAG,IAAI,KAAK,KAAK;AACzB,gBAAI,SAAS,SAAS,QAAQ,CAAC,CAAC;AAChC,mBAAO,KAAK,IAAI,QAAQ,SAAS,CAAC,OAAO,MAAM,eAAe,KAAK,OAAO,MAAM,eAAe,GAAG,CAAC,CAAC,CAAC;UACvG;AAEC,iBAAOjH,KAAI0B,KAAI;AAGf,eAAK,IAAI,GAAG,IAAI,MAAM,GAAG,IAAI,KAAK,IAAI,KAAK;AAC1C,iBAAK,OAAO,CAAC;AACb,iBAAK,OAAO,CAAC;AAEb,gBAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG;AAC5B,YAAA1B,OAAM,GAAG,IAAI,GAAG,KAAK;AACrB,YAAA0B,OAAM,GAAG,IAAI,GAAG,KAAK;AACrB,oBAAQ,IAAI;UACd;AAEC,cAAI,SAAS,GAAG;AAEf,qBAAS,OAAO,CAAC;UACnB,OAAQ;AACN,qBAAS,CAAC1B,KAAI,MAAM0B,KAAI,IAAI;UAC9B;AAEC,cAAI,eAAe,IAAI,UAAU,QAAQ,MAAM,CAAC;AAChD,iBAAO,SAAS,CAAC,aAAa,MAAM,eAAe,KAAK,aAAa,MAAM,eAAe,GAAG,CAAC;QAC/F;AAKO,iBAAS,SAAS,QAAQ;AAChC,cAAI,SAAS;AACb,cAAI,SAAS;AACb,cAAI,MAAM;AACV,mBAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK;AACvC,gBAAI,SAAS,SAAS,OAAO,CAAC,CAAC;AAC/B,sBAAU,OAAO;AACjB,sBAAU,OAAO;AACjB;UACF;AACC,iBAAO,SAAS,CAAC,SAAS,KAAK,SAAS,GAAG,CAAC;QAC7C;;;;;;;ACxGO,iBAAS,SAAS,QAAQ,WAAW;AAC3C,cAAI,CAAC,aAAa,CAAC,OAAO,QAAQ;AACjC,mBAAO,OAAO,MAAK;UACrB;AAEC,cAAI,cAAc,YAAY;AAG1B,mBAAS,cAAc,QAAQ,WAAW;AAG1C,mBAAS,YAAY,QAAQ,WAAW;AAE5C,iBAAO;QACR;AAIO,iBAAS,uBAAuB,GAAG,IAAI,IAAI;AACjD,iBAAO,KAAK,KAAK,yBAAyB,GAAG,IAAI,IAAI,IAAI,CAAC;QAC3D;AAIO,iBAAS,sBAAsB,GAAG,IAAI,IAAI;AAChD,iBAAO,yBAAyB,GAAG,IAAI,EAAE;QAC1C;AAGA,iBAAS,YAAY,QAAQ,aAAa;AAEzC,cAAI,MAAM,OAAO,QACb,mBAAmB,OAAO,eAAe,SAAY,KAAK,aAAa,OACvE,UAAU,IAAI,iBAAiB,GAAG;AAElC,kBAAQ,CAAC,IAAI,QAAQ,MAAM,CAAC,IAAI;AAEpC,0BAAgB,QAAQ,SAAS,aAAa,GAAG,MAAM,CAAC;AAExD,cAAI,GACA,YAAY,CAAA;AAEhB,eAAK,IAAI,GAAG,IAAI,KAAK,KAAK;AACzB,gBAAI,QAAQ,CAAC,GAAG;AACf,wBAAU,KAAK,OAAO,CAAC,CAAC;YAC3B;UACA;AAEC,iBAAO;QACR;AAEA,iBAAS,gBAAgB,QAAQ,SAAS,aAAa,OAAO,MAAM;AAEnE,cAAI,YAAY,GAChBJ,QAAO,GAAG;AAEV,eAAK,IAAI,QAAQ,GAAG,KAAK,OAAO,GAAG,KAAK;AACvC,qBAAS,yBAAyB,OAAO,CAAC,GAAG,OAAO,KAAK,GAAG,OAAO,IAAI,GAAG,IAAI;AAE9E,gBAAI,SAAS,WAAW;AACvB,cAAAA,SAAQ;AACR,0BAAY;YACf;UACA;AAEC,cAAI,YAAY,aAAa;AAC5B,oBAAQA,MAAK,IAAI;AAEjB,4BAAgB,QAAQ,SAAS,aAAa,OAAOA,MAAK;AAC1D,4BAAgB,QAAQ,SAAS,aAAaA,QAAO,IAAI;UAC3D;QACA;AAGA,iBAAS,cAAc,QAAQ,aAAa;AAC3C,cAAI,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAE9B,mBAAS,IAAI,GAAG4F,QAAO,GAAG,MAAM,OAAO,QAAQ,IAAI,KAAK,KAAK;AAC5D,gBAAI,QAAQ,OAAO,CAAC,GAAG,OAAOA,KAAI,CAAC,IAAI,aAAa;AACnD,4BAAc,KAAK,OAAO,CAAC,CAAC;AAC5B,cAAAA,QAAO;YACV;UACA;AACC,cAAIA,QAAO,MAAM,GAAG;AACnB,0BAAc,KAAK,OAAO,MAAM,CAAC,CAAC;UACpC;AACC,iBAAO;QACR;AAEA,YAAI;AAOG,iBAAS,YAAYrF,IAAG,GAAG,QAAQ,aAAaF,QAAO;AAC7D,cAAI,QAAQ,cAAc,YAAY,YAAYE,IAAG,MAAM,GACvD,QAAQ,YAAY,GAAG,MAAM,GAE7B,SAAS,GAAG;AAGZ,sBAAY;AAEhB,iBAAO,MAAM;AAEZ,gBAAI,EAAE,QAAQ,QAAQ;AACrB,qBAAO,CAACA,IAAG,CAAC;YACf;AAGE,gBAAI,QAAQ,OAAO;AAClB,qBAAO;YACV;AAGE,sBAAU,SAAS;AACnB,gBAAI,qBAAqBA,IAAG,GAAG,SAAS,QAAQF,MAAK;AACrD,sBAAU,YAAY,GAAG,MAAM;AAE/B,gBAAI,YAAY,OAAO;AACtB,cAAAE,KAAI;AACJ,sBAAQ;YACX,OAAS;AACN,kBAAI;AACJ,sBAAQ;YACX;UACA;QACA;AAEO,iBAAS,qBAAqBA,IAAG,GAAG,MAAM,QAAQF,QAAO;AAC/D,cAAI,KAAK,EAAE,IAAIE,GAAE,GACb,KAAK,EAAE,IAAIA,GAAE,GACb1B,OAAM,OAAO,KACbD,OAAM,OAAO,KACbF,IAAG0B;AAEP,cAAI,OAAO,GAAG;AACb,YAAA1B,KAAI6B,GAAE,IAAI,MAAM3B,KAAI,IAAI2B,GAAE,KAAK;AAC/B,YAAAH,KAAIxB,KAAI;UAEV,WAAY,OAAO,GAAG;AACpB,YAAAF,KAAI6B,GAAE,IAAI,MAAM1B,KAAI,IAAI0B,GAAE,KAAK;AAC/B,YAAAH,KAAIvB,KAAI;UAEV,WAAY,OAAO,GAAG;AACpB,YAAAH,KAAIE,KAAI;AACR,YAAAwB,KAAIG,GAAE,IAAI,MAAM3B,KAAI,IAAI2B,GAAE,KAAK;UAEjC,WAAY,OAAO,GAAG;AACpB,YAAA7B,KAAIG,KAAI;AACR,YAAAuB,KAAIG,GAAE,IAAI,MAAM1B,KAAI,IAAI0B,GAAE,KAAK;UACjC;AAEC,iBAAO,IAAIJ,OAAMzB,IAAG0B,IAAGC,MAAK;QAC7B;AAEO,iBAAS,YAAY,GAAG,QAAQ;AACtC,cAAI,OAAO;AAEX,cAAI,EAAE,IAAI,OAAO,IAAI,GAAG;AACvB,oBAAQ;UACV,WAAY,EAAE,IAAI,OAAO,IAAI,GAAG;AAC9B,oBAAQ;UACV;AAEC,cAAI,EAAE,IAAI,OAAO,IAAI,GAAG;AACvB,oBAAQ;UACV,WAAY,EAAE,IAAI,OAAO,IAAI,GAAG;AAC9B,oBAAQ;UACV;AAEC,iBAAO;QACR;AAGA,iBAAS,QAAQ,IAAI,IAAI;AACxB,cAAI,KAAK,GAAG,IAAI,GAAG,GACf,KAAK,GAAG,IAAI,GAAG;AACnB,iBAAO,KAAK,KAAK,KAAK;QACvB;AAGO,iBAAS,yBAAyB,GAAG,IAAI,IAAI,QAAQ;AAC3D,cAAI3B,KAAI,GAAG,GACP0B,KAAI,GAAG,GACP,KAAK,GAAG,IAAI1B,IACZ,KAAK,GAAG,IAAI0B,IACZ,MAAM,KAAK,KAAK,KAAK,IACrBqC;AAEJ,cAAI,MAAM,GAAG;AACZ,YAAAA,OAAM,EAAE,IAAI/D,MAAK,MAAM,EAAE,IAAI0B,MAAK,MAAM;AAExC,gBAAIqC,KAAI,GAAG;AACV,cAAA/D,KAAI,GAAG;AACP,cAAA0B,KAAI,GAAG;YACV,WAAaqC,KAAI,GAAG;AACjB,cAAA/D,MAAK,KAAK+D;AACV,cAAArC,MAAK,KAAKqC;YACb;UACA;AAEC,eAAK,EAAE,IAAI/D;AACX,eAAK,EAAE,IAAI0B;AAEX,iBAAO,SAAS,KAAK,KAAK,KAAK,KAAK,IAAID,OAAMzB,IAAG0B,EAAC;QACnD;AAKO,iBAAS,OAAO,SAAS;AAC/B,iBAAO,CAACP,SAAa,QAAQ,CAAC,CAAC,KAAM,OAAO,QAAQ,CAAC,EAAE,CAAC,MAAM,YAAY,OAAO,QAAQ,CAAC,EAAE,CAAC,MAAM;QACpG;AAEO,iBAAS,MAAM,SAAS;AAC9B,kBAAQ,KAAK,gEAAgE;AAC7E,iBAAO,OAAO,OAAO;QACtB;AAKO,iBAAS,eAAe,SAAS,KAAK;AAC5C,cAAI,GAAG,UAAU,SAAS,MAAM,IAAI,IAAI,OAAO;AAE/C,cAAI,CAAC,WAAW,QAAQ,WAAW,GAAG;AACrC,kBAAM,IAAI,MAAM,oBAAoB;UACtC;AAEC,cAAI,CAAC,OAAO,OAAO,GAAG;AACrB,oBAAQ,KAAK,wDAAwD;AACrE,sBAAU,QAAQ,CAAC;UACrB;AAEC,cAAI,iBAAiB,SAAS,CAAC,GAAG,CAAC,CAAC;AAEpC,cAAI,SAAS,eAAe,OAAO;AACnC,cAAI,aAAa,OAAO,aAAY,EAAG,WAAW,OAAO,aAAY,CAAE,IAAI,OAAO,aAAY,EAAG,WAAW,OAAO,aAAY,CAAE;AAEjI,cAAI,aAAa,MAAM;AAEtB,6BAAiB,SAAS,OAAO;UACnC;AAEC,cAAI,MAAM,QAAQ;AAClB,cAAI,SAAS,CAAA;AACb,eAAK,IAAI,GAAG,IAAI,KAAK,KAAK;AACzB,gBAAI,SAAS,SAAS,QAAQ,CAAC,CAAC;AAChC,mBAAO,KAAK,IAAI,QAAQ,SAAS,CAAC,OAAO,MAAM,eAAe,KAAK,OAAO,MAAM,eAAe,GAAG,CAAC,CAAC,CAAC;UACvG;AAEC,eAAK,IAAI,GAAG,WAAW,GAAG,IAAI,MAAM,GAAG,KAAK;AAC3C,wBAAY,OAAO,CAAC,EAAE,WAAW,OAAO,IAAI,CAAC,CAAC,IAAI;UACpD;AAGC,cAAI,aAAa,GAAG;AACnB,qBAAS,OAAO,CAAC;UACnB,OAAQ;AACN,iBAAK,IAAI,GAAG,OAAO,GAAG,IAAI,MAAM,GAAG,KAAK;AACvC,mBAAK,OAAO,CAAC;AACb,mBAAK,OAAO,IAAI,CAAC;AACjB,wBAAU,GAAG,WAAW,EAAE;AAC1B,sBAAQ;AAER,kBAAI,OAAO,UAAU;AACpB,yBAAS,OAAO,YAAY;AAC5B,yBAAS;kBACR,GAAG,IAAI,SAAS,GAAG,IAAI,GAAG;kBAC1B,GAAG,IAAI,SAAS,GAAG,IAAI,GAAG;gBAC/B;AACI;cACJ;YACA;UACA;AAEC,cAAI,eAAe,IAAI,UAAU,QAAQ,MAAM,CAAC;AAChD,iBAAO,SAAS,CAAC,aAAa,MAAM,eAAe,KAAK,aAAa,MAAM,eAAe,GAAG,CAAC;QAC/F;;;;;;;;;;;;;;AChSO,YAAI,SAAS;UACnB,SAAS,SAAU,QAAQ;AAC1B,mBAAO,IAAIM,OAAM,OAAO,KAAK,OAAO,GAAG;UACzC;UAEC,WAAW,SAAUG,QAAO;AAC3B,mBAAO,IAAI,OAAOA,OAAM,GAAGA,OAAM,CAAC;UACpC;UAEC,QAAQ,IAAI,OAAO,CAAC,MAAM,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;QAC1C;AChBO,YAAI,WAAW;UACrB,GAAG;UACH,SAAS;UAET,QAAQ,IAAI,OAAO,CAAC,mBAAiB,iBAAe,GAAG,CAAC,kBAAgB,gBAAc,CAAC;UAEvF,SAAS,SAAU,QAAQ;AAC1B,gBAAIxB,KAAI,KAAK,KAAK,KACdmE,KAAI,KAAK,GACT7C,KAAI,OAAO,MAAMtB,IACjB,MAAM,KAAK,UAAUmE,IACrB/C,KAAI,KAAK,KAAK,IAAI,MAAM,GAAG,GAC3B,MAAMA,KAAI,KAAK,IAAIE,EAAC;AAExB,gBAAI,KAAK,KAAK,IAAI,KAAK,KAAK,IAAIA,KAAI,CAAC,IAAI,KAAK,KAAK,IAAI,QAAQ,IAAI,MAAMF,KAAI,CAAC;AAC9E,YAAAE,KAAI,CAAC6C,KAAI,KAAK,IAAI,KAAK,IAAI,IAAI,KAAK,CAAC;AAErC,mBAAO,IAAI9C,OAAM,OAAO,MAAMrB,KAAImE,IAAG7C,EAAC;UACxC;UAEC,WAAW,SAAUE,QAAO;AAC3B,gBAAIxB,KAAI,MAAM,KAAK,IACfmE,KAAI,KAAK,GACT,MAAM,KAAK,UAAUA,IACrB/C,KAAI,KAAK,KAAK,IAAI,MAAM,GAAG,GAC3B,KAAK,KAAK,IAAI,CAACI,OAAM,IAAI2C,EAAC,GAC1B,MAAM,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE;AAExC,qBAAS,IAAI,GAAG,OAAO,KAAK,KAAK,IAAI,MAAM,KAAK,IAAI,IAAI,IAAI,MAAM,KAAK;AACtE,oBAAM/C,KAAI,KAAK,IAAI,GAAG;AACtB,oBAAM,KAAK,KAAK,IAAI,QAAQ,IAAI,MAAMA,KAAI,CAAC;AAC3C,qBAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,KAAK,GAAG,IAAI;AAC/C,qBAAO;YACV;AAEE,mBAAO,IAAI,OAAO,MAAMpB,IAAGwB,OAAM,IAAIxB,KAAImE,EAAC;UAC5C;QACA;;;;;;;AErCO,YAAI,WAAWvD,QAAY,CAAA,GAAI,OAAO;UAC5C,MAAM;UACN,YAAY;UAEZ,gBAAiB,WAAY;AAC5B,gBAAImB,SAAQ,OAAO,KAAK,KAAK,SAAS;AACtC,mBAAO,iBAAiBA,QAAO,KAAK,CAACA,QAAO,GAAG;UACjD,EAAE;QACF,CAAC;ACDM,YAAI,WAAWnB,QAAY,CAAA,GAAI,OAAO;UAC5C,MAAM;UACN,YAAY;UACZ,gBAAgB,iBAAiB,IAAI,KAAK,GAAG,KAAK,KAAK,GAAG;QAC3D,CAAC;ACPM,YAAI,SAASA,QAAY,CAAA,GAAI,KAAK;UACxC,YAAY;UACZ,gBAAgB,iBAAiB,GAAG,GAAG,IAAI,CAAC;UAE5C,OAAO,SAAUkB,OAAM;AACtB,mBAAO,KAAK,IAAI,GAAGA,KAAI;UACzB;UAEC,MAAM,SAAUC,QAAO;AACtB,mBAAO,KAAK,IAAIA,MAAK,IAAI,KAAK;UAChC;UAEC,UAAU,SAAU,SAAS,SAAS;AACrC,gBAAI,KAAK,QAAQ,MAAM,QAAQ,KAC3B,KAAK,QAAQ,MAAM,QAAQ;AAE/B,mBAAO,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE;UACpC;UAEC,UAAU;QACX,CAAC;AC5BD,YAAI,QAAQ;AACZ,YAAI,WAAW;AACf,YAAI,WAAW;AACf,YAAI,aAAa;AACjB,YAAI,WAAW;AACf,YAAI,SAAS;ACiBH,YAAC,QAAQ,QAAQ,OAAO;;UAGjC,SAAS;;;YAGR,MAAM;;;YAIN,aAAa;YAEb,qBAAqB;UACvB;;;;;;;UAQC,OAAO,SAAUyD,MAAK;AACrB,YAAAA,KAAI,SAAS,IAAI;AACjB,mBAAO;UACT;;;UAIC,QAAQ,WAAY;AACnB,mBAAO,KAAK,WAAW,KAAK,QAAQ,KAAK,SAAS;UACpD;;;;;;;UAQC,YAAY,SAAU,KAAK;AAC1B,gBAAI,KAAK;AACR,kBAAI,YAAY,IAAI;YACvB;AACE,mBAAO;UACT;;;UAIC,SAAS,SAAUhF,OAAM;AACxB,mBAAO,KAAK,KAAK,QAAQA,QAAQ,KAAK,QAAQA,KAAI,KAAKA,QAAQ,KAAK,QAAQ,IAAI;UAClF;UAEC,sBAAsB,SAAU,UAAU;AACzC,iBAAK,KAAK,SAASW,MAAW,QAAQ,CAAC,IAAI;AAC3C,mBAAO;UACT;UAEC,yBAAyB,SAAU,UAAU;AAC5C,mBAAO,KAAK,KAAK,SAASA,MAAW,QAAQ,CAAC;AAC9C,mBAAO;UACT;;;UAIC,gBAAgB,WAAY;AAC3B,mBAAO,KAAK,QAAQ;UACtB;UAEC,WAAW,SAAUC,IAAG;AACvB,gBAAIoE,OAAMpE,GAAE;AAGZ,gBAAI,CAACoE,KAAI,SAAS,IAAI,GAAG;AAAE;YAAO;AAElC,iBAAK,OAAOA;AACZ,iBAAK,gBAAgBA,KAAI;AAEzB,gBAAI,KAAK,WAAW;AACnB,kBAAI,SAAS,KAAK,UAAS;AAC3B,cAAAA,KAAI,GAAG,QAAQ,IAAI;AACnB,mBAAK,KAAK,UAAU,WAAY;AAC/B,gBAAAA,KAAI,IAAI,QAAQ,IAAI;cACxB,GAAM,IAAI;YACV;AAEE,iBAAK,MAAMA,IAAG;AAEd,iBAAK,KAAK,KAAK;AACf,YAAAA,KAAI,KAAK,YAAY,EAAC,OAAO,KAAI,CAAC;UACpC;QACA,CAAC;AAmCD,QAAA5B,KAAI,QAAQ;;;UAGX,UAAU,SAAU,OAAO;AAC1B,gBAAI,CAAC,MAAM,WAAW;AACrB,oBAAM,IAAI,MAAM,qCAAqC;YACxD;AAEE,gBAAInD,OAAKU,MAAW,KAAK;AACzB,gBAAI,KAAK,QAAQV,IAAE,GAAG;AAAE,qBAAO;YAAK;AACpC,iBAAK,QAAQA,IAAE,IAAI;AAEnB,kBAAM,YAAY;AAElB,gBAAI,MAAM,WAAW;AACpB,oBAAM,UAAU,IAAI;YACvB;AAEE,iBAAK,UAAU,MAAM,WAAW,KAAK;AAErC,mBAAO;UACT;;;UAIC,aAAa,SAAU,OAAO;AAC7B,gBAAIA,OAAKU,MAAW,KAAK;AAEzB,gBAAI,CAAC,KAAK,QAAQV,IAAE,GAAG;AAAE,qBAAO;YAAK;AAErC,gBAAI,KAAK,SAAS;AACjB,oBAAM,SAAS,IAAI;YACtB;AAEE,mBAAO,KAAK,QAAQA,IAAE;AAEtB,gBAAI,KAAK,SAAS;AACjB,mBAAK,KAAK,eAAe,EAAC,MAAY,CAAC;AACvC,oBAAM,KAAK,QAAQ;YACtB;AAEE,kBAAM,OAAO,MAAM,YAAY;AAE/B,mBAAO;UACT;;;UAIC,UAAU,SAAU,OAAO;AAC1B,mBAAOU,MAAW,KAAK,KAAK,KAAK;UACnC;;;;;;;;;UAUC,WAAW,SAAU,QAAQ,SAAS;AACrC,qBAAS,KAAK,KAAK,SAAS;AAC3B,qBAAO,KAAK,SAAS,KAAK,QAAQ,CAAC,CAAC;YACvC;AACE,mBAAO;UACT;UAEC,YAAY,SAAU4F,SAAQ;AAC7B,YAAAA,UAASA,UAAUhG,SAAagG,OAAM,IAAIA,UAAS,CAACA,OAAM,IAAK,CAAA;AAE/D,qBAAS,IAAI,GAAG,MAAMA,QAAO,QAAQ,IAAI,KAAK,KAAK;AAClD,mBAAK,SAASA,QAAO,CAAC,CAAC;YAC1B;UACA;UAEC,eAAe,SAAU,OAAO;AAC/B,gBAAI,CAAC,MAAM,MAAM,QAAQ,OAAO,KAAK,CAAC,MAAM,MAAM,QAAQ,OAAO,GAAG;AACnE,mBAAK,iBAAiB5F,MAAW,KAAK,CAAC,IAAI;AAC3C,mBAAK,kBAAiB;YACzB;UACA;UAEC,kBAAkB,SAAU,OAAO;AAClC,gBAAIV,OAAKU,MAAW,KAAK;AAEzB,gBAAI,KAAK,iBAAiBV,IAAE,GAAG;AAC9B,qBAAO,KAAK,iBAAiBA,IAAE;AAC/B,mBAAK,kBAAiB;YACzB;UACA;UAEC,mBAAmB,WAAY;AAC9B,gBAAI,UAAU,UACV,UAAU,WACV,cAAc,KAAK,aAAY;AAEnC,qBAAS,KAAK,KAAK,kBAAkB;AACpC,kBAAIN,WAAU,KAAK,iBAAiB,CAAC,EAAE;AAEvC,wBAAUA,SAAQ,YAAY,SAAY,UAAU,KAAK,IAAI,SAASA,SAAQ,OAAO;AACrF,wBAAUA,SAAQ,YAAY,SAAY,UAAU,KAAK,IAAI,SAASA,SAAQ,OAAO;YACxF;AAEE,iBAAK,iBAAiB,YAAY,YAAY,SAAY;AAC1D,iBAAK,iBAAiB,YAAY,WAAW,SAAY;AAMzD,gBAAI,gBAAgB,KAAK,aAAY,GAAI;AACxC,mBAAK,KAAK,kBAAkB;YAC/B;AAEE,gBAAI,KAAK,QAAQ,YAAY,UAAa,KAAK,kBAAkB,KAAK,QAAO,IAAK,KAAK,gBAAgB;AACtG,mBAAK,QAAQ,KAAK,cAAc;YACnC;AACE,gBAAI,KAAK,QAAQ,YAAY,UAAa,KAAK,kBAAkB,KAAK,QAAO,IAAK,KAAK,gBAAgB;AACtG,mBAAK,QAAQ,KAAK,cAAc;YACnC;UACA;QACA,CAAC;AC5PS,YAAC,aAAa,MAAM,OAAO;UAEpC,YAAY,SAAU4G,SAAQ5G,UAAS;AACtCO,uBAAgB,MAAMP,QAAO;AAE7B,iBAAK,UAAU,CAAA;AAEf,gBAAI,GAAG;AAEP,gBAAI4G,SAAQ;AACX,mBAAK,IAAI,GAAG,MAAMA,QAAO,QAAQ,IAAI,KAAK,KAAK;AAC9C,qBAAK,SAASA,QAAO,CAAC,CAAC;cAC3B;YACA;UACA;;;UAIC,UAAU,SAAU,OAAO;AAC1B,gBAAItG,OAAK,KAAK,WAAW,KAAK;AAE9B,iBAAK,QAAQA,IAAE,IAAI;AAEnB,gBAAI,KAAK,MAAM;AACd,mBAAK,KAAK,SAAS,KAAK;YAC3B;AAEE,mBAAO;UACT;;;;;;UAOC,aAAa,SAAU,OAAO;AAC7B,gBAAIA,OAAK,SAAS,KAAK,UAAU,QAAQ,KAAK,WAAW,KAAK;AAE9D,gBAAI,KAAK,QAAQ,KAAK,QAAQA,IAAE,GAAG;AAClC,mBAAK,KAAK,YAAY,KAAK,QAAQA,IAAE,CAAC;YACzC;AAEE,mBAAO,KAAK,QAAQA,IAAE;AAEtB,mBAAO;UACT;;;;;;UAOC,UAAU,SAAU,OAAO;AAC1B,gBAAI,UAAU,OAAO,UAAU,WAAW,QAAQ,KAAK,WAAW,KAAK;AACvE,mBAAO,WAAW,KAAK;UACzB;;;UAIC,aAAa,WAAY;AACxB,mBAAO,KAAK,UAAU,KAAK,aAAa,IAAI;UAC9C;;;;;UAMC,QAAQ,SAAU,YAAY;AAC7B,gBAAI,OAAO,MAAM,UAAU,MAAM,KAAK,WAAW,CAAC,GAC9C,GAAG;AAEP,iBAAK,KAAK,KAAK,SAAS;AACvB,sBAAQ,KAAK,QAAQ,CAAC;AAEtB,kBAAI,MAAM,UAAU,GAAG;AACtB,sBAAM,UAAU,EAAE,MAAM,OAAO,IAAI;cACvC;YACA;AAEE,mBAAO;UACT;UAEC,OAAO,SAAU+E,MAAK;AACrB,iBAAK,UAAUA,KAAI,UAAUA,IAAG;UAClC;UAEC,UAAU,SAAUA,MAAK;AACxB,iBAAK,UAAUA,KAAI,aAAaA,IAAG;UACrC;;;;;;;;UASC,WAAW,SAAU,QAAQ,SAAS;AACrC,qBAAS,KAAK,KAAK,SAAS;AAC3B,qBAAO,KAAK,SAAS,KAAK,QAAQ,CAAC,CAAC;YACvC;AACE,mBAAO;UACT;;;UAIC,UAAU,SAAU/E,MAAI;AACvB,mBAAO,KAAK,QAAQA,IAAE;UACxB;;;UAIC,WAAW,WAAY;AACtB,gBAAIsG,UAAS,CAAA;AACb,iBAAK,UAAUA,QAAO,MAAMA,OAAM;AAClC,mBAAOA;UACT;;;UAIC,WAAW,SAAU,QAAQ;AAC5B,mBAAO,KAAK,OAAO,aAAa,MAAM;UACxC;;;UAIC,YAAY,SAAU,OAAO;AAC5B,mBAAO5F,MAAW,KAAK;UACzB;QACA,CAAC;AAKS,YAAC,aAAa,SAAU4F,SAAQ5G,UAAS;AAClD,iBAAO,IAAI,WAAW4G,SAAQ5G,QAAO;QACtC;ACrIU,YAAC,eAAe,WAAW,OAAO;UAE3C,UAAU,SAAU,OAAO;AAC1B,gBAAI,KAAK,SAAS,KAAK,GAAG;AACzB,qBAAO;YACV;AAEE,kBAAM,eAAe,IAAI;AAEzB,uBAAW,UAAU,SAAS,KAAK,MAAM,KAAK;AAI9C,mBAAO,KAAK,KAAK,YAAY,EAAC,MAAY,CAAC;UAC7C;UAEC,aAAa,SAAU,OAAO;AAC7B,gBAAI,CAAC,KAAK,SAAS,KAAK,GAAG;AAC1B,qBAAO;YACV;AACE,gBAAI,SAAS,KAAK,SAAS;AAC1B,sBAAQ,KAAK,QAAQ,KAAK;YAC7B;AAEE,kBAAM,kBAAkB,IAAI;AAE5B,uBAAW,UAAU,YAAY,KAAK,MAAM,KAAK;AAIjD,mBAAO,KAAK,KAAK,eAAe,EAAC,MAAY,CAAC;UAChD;;;UAIC,UAAU,SAAUgC,QAAO;AAC1B,mBAAO,KAAK,OAAO,YAAYA,MAAK;UACtC;;;UAIC,cAAc,WAAY;AACzB,mBAAO,KAAK,OAAO,cAAc;UACnC;;;UAIC,aAAa,WAAY;AACxB,mBAAO,KAAK,OAAO,aAAa;UAClC;;;UAIC,WAAW,WAAY;AACtB,gBAAI,SAAS,IAAI,aAAY;AAE7B,qBAAS1B,QAAM,KAAK,SAAS;AAC5B,kBAAI,QAAQ,KAAK,QAAQA,IAAE;AAC3B,qBAAO,OAAO,MAAM,YAAY,MAAM,UAAS,IAAK,MAAM,UAAS,CAAE;YACxE;AACE,mBAAO;UACT;QACA,CAAC;AAIS,YAAC,eAAe,SAAUsG,SAAQ5G,UAAS;AACpD,iBAAO,IAAI,aAAa4G,SAAQ5G,QAAO;QACxC;AC5DU,YAAC,OAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UA0C9B,SAAS;YACR,aAAa,CAAC,GAAG,CAAC;YAClB,eAAe,CAAC,GAAG,CAAC;;;;;YAMpB,aAAa;UACf;UAEC,YAAY,SAAUA,UAAS;AAC9B,uBAAW,MAAMA,QAAO;UAC1B;;;;UAKC,YAAY,SAAU,SAAS;AAC9B,mBAAO,KAAK,YAAY,QAAQ,OAAO;UACzC;;;UAIC,cAAc,SAAU,SAAS;AAChC,mBAAO,KAAK,YAAY,UAAU,OAAO;UAC3C;UAEC,aAAa,SAAUK,OAAM,SAAS;AACrC,gBAAI,MAAM,KAAK,YAAYA,KAAI;AAE/B,gBAAI,CAAC,KAAK;AACT,kBAAIA,UAAS,QAAQ;AACpB,sBAAM,IAAI,MAAM,iDAAiD;cACrE;AACG,qBAAO;YACV;AAEE,gBAAI,MAAM,KAAK,WAAW,KAAK,WAAW,QAAQ,YAAY,QAAQ,UAAU,IAAI;AACpF,iBAAK,eAAe,KAAKA,KAAI;AAE7B,gBAAI,KAAK,QAAQ,eAAe,KAAK,QAAQ,gBAAgB,IAAI;AAChE,kBAAI,cAAc,KAAK,QAAQ,gBAAgB,OAAO,KAAK,KAAK,QAAQ;YAC3E;AAEE,mBAAO;UACT;UAEC,gBAAgB,SAAU,KAAKA,OAAM;AACpC,gBAAIL,WAAU,KAAK;AACnB,gBAAI,aAAaA,SAAQK,QAAO,MAAM;AAEtC,gBAAI,OAAO,eAAe,UAAU;AACnC,2BAAa,CAAC,YAAY,UAAU;YACvC;AAEE,gBAAI0D,QAAO1C,QAAM,UAAU,GACvB,SAASA,QAAMhB,UAAS,YAAYL,SAAQ,gBAAgBA,SAAQ,cAC5D+D,SAAQA,MAAK,SAAS,GAAG,IAAI,CAAC;AAE1C,gBAAI,YAAY,oBAAoB1D,QAAO,OAAOL,SAAQ,aAAa;AAEvE,gBAAI,QAAQ;AACX,kBAAI,MAAM,aAAc,CAAC,OAAO,IAAK;AACrC,kBAAI,MAAM,YAAc,CAAC,OAAO,IAAK;YACxC;AAEE,gBAAI+D,OAAM;AACT,kBAAI,MAAM,QAASA,MAAK,IAAI;AAC5B,kBAAI,MAAM,SAASA,MAAK,IAAI;YAC/B;UACA;UAEC,YAAY,SAAU,KAAK,IAAI;AAC9B,iBAAK,MAAM,SAAS,cAAc,KAAK;AACvC,eAAG,MAAM;AACT,mBAAO;UACT;UAEC,aAAa,SAAU1D,OAAM;AAC5B,mBAAO,QAAQ,UAAU,KAAK,QAAQA,QAAO,WAAW,KAAK,KAAK,QAAQA,QAAO,KAAK;UACxF;QACA,CAAC;AAKM,iBAAS,KAAKL,UAAS;AAC7B,iBAAO,IAAI,KAAKA,QAAO;QACxB;ACjJO,YAAI,cAAc,KAAK,OAAO;UAEpC,SAAS;YACR,SAAe;YACf,eAAe;YACf,WAAe;YACf,UAAa,CAAC,IAAI,EAAE;YACpB,YAAa,CAAC,IAAI,EAAE;YACpB,aAAa,CAAC,GAAG,GAAG;YACpB,eAAe,CAAC,IAAI,GAAG;YACvB,YAAa,CAAC,IAAI,EAAE;UACtB;UAEC,aAAa,SAAUK,OAAM;AAC5B,gBAAI,OAAO,YAAY,cAAc,UAAU;AAC9C,0BAAY,YAAY,KAAK,gBAAe;YAC/C;AAME,oBAAQ,KAAK,QAAQ,aAAa,YAAY,aAAa,KAAK,UAAU,YAAY,KAAK,MAAMA,KAAI;UACvG;UAEC,WAAW,SAAU+B,OAAM;AAC1B,gBAAI,QAAQ,SAAU,KAAKyE,KAAI,KAAK;AACnC,kBAAIC,SAAQD,IAAG,KAAK,GAAG;AACvB,qBAAOC,UAASA,OAAM,GAAG;YAC5B;AACE,YAAA1E,QAAO,MAAMA,OAAM,0BAA0B,CAAC;AAC9C,mBAAOA,SAAQ,MAAMA,OAAM,0BAA0B,CAAC;UACxD;UAEC,iBAAiB,WAAY;AAC5B,gBAAI,KAAKoC,SAAe,OAAQ,6BAA6B,SAAS,IAAI;AAC1E,gBAAIpC,QAAOyC,UAAiB,IAAI,kBAAkB,KACvCA,UAAiB,IAAI,iBAAiB;AAEjD,qBAAS,KAAK,YAAY,EAAE;AAC5B,YAAAzC,QAAO,KAAK,UAAUA,KAAI;AAC1B,gBAAIA,OAAM;AAAE,qBAAOA;YAAK;AACxB,gBAAIqD,QAAO,SAAS,cAAc,2BAA2B;AAC7D,gBAAI,CAACA,OAAM;AAAE,qBAAO;YAAG;AACvB,mBAAOA,MAAK,KAAK,UAAU,GAAGA,MAAK,KAAK,SAAS,cAAc,SAAS,CAAC;UAC3E;QACA,CAAC;ACxCM,YAAI,aAAa,QAAQ,OAAO;UACtC,YAAY,SAAUsB,SAAQ;AAC7B,iBAAK,UAAUA;UACjB;UAEC,UAAU,WAAY;AACrB,gBAAIC,QAAO,KAAK,QAAQ;AAExB,gBAAI,CAAC,KAAK,YAAY;AACrB,mBAAK,aAAa,IAAI,UAAUA,OAAMA,OAAM,IAAI;YACnD;AAEE,iBAAK,WAAW,GAAG;cAClB,WAAW,KAAK;cAChB,SAAS,KAAK;cACd,MAAM,KAAK;cACX,SAAS,KAAK;YACjB,GAAK,IAAI,EAAE,OAAM;AAEfnD,YAAAA,UAAiBmD,OAAM,0BAA0B;UACnD;UAEC,aAAa,WAAY;AACxB,iBAAK,WAAW,IAAI;cACnB,WAAW,KAAK;cAChB,SAAS,KAAK;cACd,MAAM,KAAK;cACX,SAAS,KAAK;YACjB,GAAK,IAAI,EAAE,QAAO;AAEhB,gBAAI,KAAK,QAAQ,OAAO;AACvB/B,cAAAA,aAAoB,KAAK,QAAQ,OAAO,0BAA0B;YACrE;UACA;UAEC,OAAO,WAAY;AAClB,mBAAO,KAAK,cAAc,KAAK,WAAW;UAC5C;UAEC,YAAY,SAAUhE,IAAG;AACxB,gBAAI8F,UAAS,KAAK,SACd1B,OAAM0B,QAAO,MACb,QAAQ,KAAK,QAAQ,QAAQ,cAC7BtC,WAAU,KAAK,QAAQ,QAAQ,gBAC/B,UAAUrB,aAAoB2D,QAAO,KAAK,GAC1C,SAAS1B,KAAI,eAAc,GAC3B,SAASA,KAAI,eAAc;AAE/B,gBAAI,YAAY;cACf,OAAO,IAAI,UAAU,MAAM,EAAE,IAAIZ,QAAO;cACxC,OAAO,IAAI,UAAU,MAAM,EAAE,SAASA,QAAO;YAChD;AAEE,gBAAI,CAAC,UAAU,SAAS,OAAO,GAAG;AAEjC,kBAAI,WAAW;iBACb,KAAK,IAAI,UAAU,IAAI,GAAG,QAAQ,CAAC,IAAI,UAAU,IAAI,MAAM,OAAO,IAAI,IAAI,UAAU,IAAI,MACxF,KAAK,IAAI,UAAU,IAAI,GAAG,QAAQ,CAAC,IAAI,UAAU,IAAI,MAAM,OAAO,IAAI,IAAI,UAAU,IAAI;iBAExF,KAAK,IAAI,UAAU,IAAI,GAAG,QAAQ,CAAC,IAAI,UAAU,IAAI,MAAM,OAAO,IAAI,IAAI,UAAU,IAAI,MACxF,KAAK,IAAI,UAAU,IAAI,GAAG,QAAQ,CAAC,IAAI,UAAU,IAAI,MAAM,OAAO,IAAI,IAAI,UAAU,IAAI;cAC7F,EAAK,WAAW,KAAK;AAElB,cAAAY,KAAI,MAAM,UAAU,EAAC,SAAS,MAAK,CAAC;AAEpC,mBAAK,WAAW,QAAQ,KAAK,QAAQ;AACrC,mBAAK,WAAW,UAAU,KAAK,QAAQ;AAEvC/B,0BAAoByD,QAAO,OAAO,KAAK,WAAW,OAAO;AACzD,mBAAK,QAAQ9F,EAAC;AAEd,mBAAK,cAAc,iBAAiB,KAAK,WAAW,KAAK,MAAMA,EAAC,CAAC;YACpE;UACA;UAEC,cAAc,WAAY;AAQzB,iBAAK,aAAa,KAAK,QAAQ,UAAS;AAGxC,iBAAK,QAAQ,cAAc,KAAK,QAAQ,WAAU;AAElD,iBAAK,QACH,KAAK,WAAW,EAChB,KAAK,WAAW;UACpB;UAEC,YAAY,SAAUA,IAAG;AACxB,gBAAI,KAAK,QAAQ,QAAQ,SAAS;AACjC,8BAAgB,KAAK,WAAW;AAChC,mBAAK,cAAc,iBAAiB,KAAK,WAAW,KAAK,MAAMA,EAAC,CAAC;YACpE;UACA;UAEC,SAAS,SAAUA,IAAG;AACrB,gBAAI8F,UAAS,KAAK,SACd,SAASA,QAAO,SAChB,UAAU3D,aAAoB2D,QAAO,KAAK,GAC1C,SAASA,QAAO,KAAK,mBAAmB,OAAO;AAGnD,gBAAI,QAAQ;AACXzD,0BAAoB,QAAQ,OAAO;YACtC;AAEE,YAAAyD,QAAO,UAAU;AACjB,YAAA9F,GAAE,SAAS;AACX,YAAAA,GAAE,YAAY,KAAK;AAInB,YAAA8F,QACK,KAAK,QAAQ9F,EAAC,EACd,KAAK,QAAQA,EAAC;UACrB;UAEC,YAAY,SAAUA,IAAG;AAIvB,4BAAgB,KAAK,WAAW;AAIjC,mBAAO,KAAK;AACZ,iBAAK,QACA,KAAK,SAAS,EACd,KAAK,WAAWA,EAAC;UACxB;QACA,CAAC;AC1IS,YAACgG,UAAS,MAAM,OAAO;;;UAIhC,SAAS;;;;;YAKR,MAAM,IAAI,YAAW;;YAGrB,aAAa;;;YAIb,UAAU;;;;YAKV,OAAO;;;;YAKP,KAAK;;;YAIL,cAAc;;;YAId,SAAS;;;YAIT,aAAa;;;YAIb,YAAY;;;YAIZ,MAAM;;;YAIN,YAAY;;;;YAKZ,qBAAqB;;;;;YAMrB,gBAAgB;;;;YAKhB,WAAW;;;YAIX,SAAS;;;;YAKT,gBAAgB,CAAC,IAAI,EAAE;;;YAIvB,cAAc;UAChB;;;;;UAOC,YAAY,SAAU,QAAQjH,UAAS;AACtCO,uBAAgB,MAAMP,QAAO;AAC7B,iBAAK,UAAUkH,SAAO,MAAM;UAC9B;UAEC,OAAO,SAAU7B,MAAK;AACrB,iBAAK,gBAAgB,KAAK,iBAAiBA,KAAI,QAAQ;AAEvD,gBAAI,KAAK,eAAe;AACvB,cAAAA,KAAI,GAAG,YAAY,KAAK,cAAc,IAAI;YAC7C;AAEE,iBAAK,UAAS;AACd,iBAAK,OAAM;UACb;UAEC,UAAU,SAAUA,MAAK;AACxB,gBAAI,KAAK,YAAY,KAAK,SAAS,QAAO,GAAI;AAC7C,mBAAK,QAAQ,YAAY;AACzB,mBAAK,SAAS,YAAW;YAC5B;AACE,mBAAO,KAAK;AAEZ,gBAAI,KAAK,eAAe;AACvB,cAAAA,KAAI,IAAI,YAAY,KAAK,cAAc,IAAI;YAC9C;AAEE,iBAAK,YAAW;AAChB,iBAAK,cAAa;UACpB;UAEC,WAAW,WAAY;AACtB,mBAAO;cACN,MAAM,KAAK;cACX,WAAW,KAAK;YACnB;UACA;;;UAIC,WAAW,WAAY;AACtB,mBAAO,KAAK;UACd;;;UAIC,WAAW,SAAU,QAAQ;AAC5B,gBAAI,YAAY,KAAK;AACrB,iBAAK,UAAU6B,SAAO,MAAM;AAC5B,iBAAK,OAAM;AAIX,mBAAO,KAAK,KAAK,QAAQ,EAAC,WAAsB,QAAQ,KAAK,QAAO,CAAC;UACvE;;;UAIC,iBAAiB,SAAU,QAAQ;AAClC,iBAAK,QAAQ,eAAe;AAC5B,mBAAO,KAAK,OAAM;UACpB;;;UAIC,SAAS,WAAY;AACpB,mBAAO,KAAK,QAAQ;UACtB;;;UAIC,SAAS,SAAUF,OAAM;AAExB,iBAAK,QAAQ,OAAOA;AAEpB,gBAAI,KAAK,MAAM;AACd,mBAAK,UAAS;AACd,mBAAK,OAAM;YACd;AAEE,gBAAI,KAAK,QAAQ;AAChB,mBAAK,UAAU,KAAK,QAAQ,KAAK,OAAO,OAAO;YAClD;AAEE,mBAAO;UACT;UAEC,YAAY,WAAY;AACvB,mBAAO,KAAK;UACd;UAEC,QAAQ,WAAY;AAEnB,gBAAI,KAAK,SAAS,KAAK,MAAM;AAC5B,kBAAI,MAAM,KAAK,KAAK,mBAAmB,KAAK,OAAO,EAAE,MAAK;AAC1D,mBAAK,QAAQ,GAAG;YACnB;AAEE,mBAAO;UACT;UAEC,WAAW,WAAY;AACtB,gBAAIhH,WAAU,KAAK,SACf,aAAa,mBAAmB,KAAK,gBAAgB,aAAa;AAEtE,gBAAIgH,QAAOhH,SAAQ,KAAK,WAAW,KAAK,KAAK,GACzC,UAAU;AAGd,gBAAIgH,UAAS,KAAK,OAAO;AACxB,kBAAI,KAAK,OAAO;AACf,qBAAK,YAAW;cACpB;AACG,wBAAU;AAEV,kBAAIhH,SAAQ,OAAO;AAClB,gBAAAgH,MAAK,QAAQhH,SAAQ;cACzB;AAEG,kBAAIgH,MAAK,YAAY,OAAO;AAC3B,gBAAAA,MAAK,MAAMhH,SAAQ,OAAO;cAC9B;YACA;AAEE6D,YAAAA,UAAiBmD,OAAM,UAAU;AAEjC,gBAAIhH,SAAQ,UAAU;AACrB,cAAAgH,MAAK,WAAW;AAChB,cAAAA,MAAK,aAAa,QAAQ,QAAQ;YACrC;AAEE,iBAAK,QAAQA;AAEb,gBAAIhH,SAAQ,aAAa;AACxB,mBAAK,GAAG;gBACP,WAAW,KAAK;gBAChB,UAAU,KAAK;cACnB,CAAI;YACJ;AAEE,gBAAI,KAAK,QAAQ,gBAAgB;AAChC+C,iBAAYiE,OAAM,SAAS,KAAK,aAAa,IAAI;YACpD;AAEE,gBAAI,YAAYhH,SAAQ,KAAK,aAAa,KAAK,OAAO,GAClD,YAAY;AAEhB,gBAAI,cAAc,KAAK,SAAS;AAC/B,mBAAK,cAAa;AAClB,0BAAY;YACf;AAEE,gBAAI,WAAW;AACd6D,cAAAA,UAAiB,WAAW,UAAU;AACtC,wBAAU,MAAM;YACnB;AACE,iBAAK,UAAU;AAGf,gBAAI7D,SAAQ,UAAU,GAAG;AACxB,mBAAK,eAAc;YACtB;AAGE,gBAAI,SAAS;AACZ,mBAAK,QAAO,EAAG,YAAY,KAAK,KAAK;YACxC;AACE,iBAAK,iBAAgB;AACrB,gBAAI,aAAa,WAAW;AAC3B,mBAAK,QAAQA,SAAQ,UAAU,EAAE,YAAY,KAAK,OAAO;YAC5D;UACA;UAEC,aAAa,WAAY;AACxB,gBAAI,KAAK,QAAQ,aAAa;AAC7B,mBAAK,IAAI;gBACR,WAAW,KAAK;gBAChB,UAAU,KAAK;cACnB,CAAI;YACJ;AAEE,gBAAI,KAAK,QAAQ,gBAAgB;AAChCgD,kBAAa,KAAK,OAAO,SAAS,KAAK,aAAa,IAAI;YAC3D;AAEEuB,mBAAe,KAAK,KAAK;AACzB,iBAAK,wBAAwB,KAAK,KAAK;AAEvC,iBAAK,QAAQ;UACf;UAEC,eAAe,WAAY;AAC1B,gBAAI,KAAK,SAAS;AACjBA,qBAAe,KAAK,OAAO;YAC9B;AACE,iBAAK,UAAU;UACjB;UAEC,SAAS,SAAU,KAAK;AAEvB,gBAAI,KAAK,OAAO;AACfjB,0BAAoB,KAAK,OAAO,GAAG;YACtC;AAEE,gBAAI,KAAK,SAAS;AACjBA,0BAAoB,KAAK,SAAS,GAAG;YACxC;AAEE,iBAAK,UAAU,IAAI,IAAI,KAAK,QAAQ;AAEpC,iBAAK,aAAY;UACnB;UAEC,eAAe,SAAU,QAAQ;AAChC,gBAAI,KAAK,OAAO;AACf,mBAAK,MAAM,MAAM,SAAS,KAAK,UAAU;YAC5C;UACA;UAEC,cAAc,SAAU,KAAK;AAC5B,gBAAI,MAAM,KAAK,KAAK,uBAAuB,KAAK,SAAS,IAAI,MAAM,IAAI,MAAM,EAAE,MAAK;AAEpF,iBAAK,QAAQ,GAAG;UAClB;UAEC,kBAAkB,WAAY;AAE7B,gBAAI,CAAC,KAAK,QAAQ,aAAa;AAAE;YAAO;AAExCO,YAAAA,UAAiB,KAAK,OAAO,qBAAqB;AAElD,iBAAK,qBAAqB,KAAK,KAAK;AAEpC,gBAAI,YAAY;AACf,kBAAI,YAAY,KAAK,QAAQ;AAC7B,kBAAI,KAAK,UAAU;AAClB,4BAAY,KAAK,SAAS,QAAO;AACjC,qBAAK,SAAS,QAAO;cACzB;AAEG,mBAAK,WAAW,IAAI,WAAW,IAAI;AAEnC,kBAAI,WAAW;AACd,qBAAK,SAAS,OAAM;cACxB;YACA;UACA;;;UAIC,YAAY,SAAU,SAAS;AAC9B,iBAAK,QAAQ,UAAU;AACvB,gBAAI,KAAK,MAAM;AACd,mBAAK,eAAc;YACtB;AAEE,mBAAO;UACT;UAEC,gBAAgB,WAAY;AAC3B,gBAAI,UAAU,KAAK,QAAQ;AAE3B,gBAAI,KAAK,OAAO;AACfsD,yBAAmB,KAAK,OAAO,OAAO;YACzC;AAEE,gBAAI,KAAK,SAAS;AACjBA,yBAAmB,KAAK,SAAS,OAAO;YAC3C;UACA;UAEC,eAAe,WAAY;AAC1B,iBAAK,cAAc,KAAK,QAAQ,UAAU;UAC5C;UAEC,cAAc,WAAY;AACzB,iBAAK,cAAc,CAAC;UACtB;UAEC,aAAa,WAAY;AACxB,gBAAI9B,OAAM,KAAK;AACf,gBAAI,CAACA,MAAK;AAAE;YAAO;AAEnB,gBAAI,WAAW,KAAK,QAAQ,KAAK;AACjC,gBAAItB,QAAO,SAAS,WAAW1C,QAAM,SAAS,QAAQ,IAAIA,QAAM,GAAG,CAAC;AACpE,gBAAI,SAAS,SAAS,aAAaA,QAAM,SAAS,UAAU,IAAIA,QAAM,GAAG,CAAC;AAE1E,YAAAgE,KAAI,UAAU,KAAK,SAAS;cAC3B,gBAAgB;cAChB,oBAAoBtB,MAAK,SAAS,MAAM;YAC3C,CAAG;UACH;UAEC,iBAAiB,WAAY;AAC5B,mBAAO,KAAK,QAAQ,KAAK,QAAQ;UACnC;UAEC,mBAAmB,WAAY;AAC9B,mBAAO,KAAK,QAAQ,KAAK,QAAQ;UACnC;QACA,CAAC;AAOM,iBAAS,OAAO,QAAQ/D,UAAS;AACvC,iBAAO,IAAIiH,QAAO,QAAQjH,QAAO;QAClC;ACtZU,YAACoH,QAAO,MAAM,OAAO;;;UAI9B,SAAS;;;YAGR,QAAQ;;;YAIR,OAAO;;;YAIP,QAAQ;;;YAIR,SAAS;;;YAIT,SAAS;;;YAIT,UAAU;;;YAIV,WAAW;;;YAIX,YAAY;;;YAIZ,MAAM;;;YAIN,WAAW;;;YAIX,aAAa;;;YAIb,UAAU;;;YAKV,aAAa;;;;YAKb,qBAAqB;UACvB;UAEC,WAAW,SAAU/B,MAAK;AAGzB,iBAAK,YAAYA,KAAI,YAAY,IAAI;UACvC;UAEC,OAAO,WAAY;AAClB,iBAAK,UAAU,UAAU,IAAI;AAC7B,iBAAK,OAAM;AACX,iBAAK,UAAU,SAAS,IAAI;UAC9B;UAEC,UAAU,WAAY;AACrB,iBAAK,UAAU,YAAY,IAAI;UACjC;;;UAIC,QAAQ,WAAY;AACnB,gBAAI,KAAK,MAAM;AACd,mBAAK,UAAU,YAAY,IAAI;YAClC;AACE,mBAAO;UACT;;;UAIC,UAAU,SAAUrD,QAAO;AAC1BzB,uBAAgB,MAAMyB,MAAK;AAC3B,gBAAI,KAAK,WAAW;AACnB,mBAAK,UAAU,aAAa,IAAI;AAChC,kBAAI,KAAK,QAAQ,UAAUA,UAAS,OAAO,UAAU,eAAe,KAAKA,QAAO,QAAQ,GAAG;AAC1F,qBAAK,cAAa;cACtB;YACA;AACE,mBAAO;UACT;;;UAIC,cAAc,WAAY;AACzB,gBAAI,KAAK,WAAW;AACnB,mBAAK,UAAU,cAAc,IAAI;YACpC;AACE,mBAAO;UACT;;;UAIC,aAAa,WAAY;AACxB,gBAAI,KAAK,WAAW;AACnB,mBAAK,UAAU,aAAa,IAAI;YACnC;AACE,mBAAO;UACT;UAEC,YAAY,WAAY;AACvB,mBAAO,KAAK;UACd;UAEC,QAAQ,WAAY;AAEnB,iBAAK,SAAQ;AACb,iBAAK,QAAO;UACd;UAEC,iBAAiB,WAAY;AAE5B,oBAAQ,KAAK,QAAQ,SAAS,KAAK,QAAQ,SAAS,IAAI,MACrD,KAAK,UAAU,QAAQ,aAAa;UACzC;QACA,CAAC;ACrIS,YAAC,eAAeoF,MAAK,OAAO;;;UAIrC,SAAS;YACR,MAAM;;;YAIN,QAAQ;UACV;UAEC,YAAY,SAAU,QAAQpH,UAAS;AACtCO,uBAAgB,MAAMP,QAAO;AAC7B,iBAAK,UAAU,SAAS,MAAM;AAC9B,iBAAK,UAAU,KAAK,QAAQ;UAC9B;;;UAIC,WAAW,SAAU,QAAQ;AAC5B,gBAAI,YAAY,KAAK;AACrB,iBAAK,UAAU,SAAS,MAAM;AAC9B,iBAAK,OAAM;AAIX,mBAAO,KAAK,KAAK,QAAQ,EAAC,WAAsB,QAAQ,KAAK,QAAO,CAAC;UACvE;;;UAIC,WAAW,WAAY;AACtB,mBAAO,KAAK;UACd;;;UAIC,WAAW,SAAU,QAAQ;AAC5B,iBAAK,QAAQ,SAAS,KAAK,UAAU;AACrC,mBAAO,KAAK,OAAM;UACpB;;;UAIC,WAAW,WAAY;AACtB,mBAAO,KAAK;UACd;UAEC,UAAW,SAAUA,UAAS;AAC7B,gBAAI,SAASA,YAAWA,SAAQ,UAAU,KAAK;AAC/C,YAAAoH,MAAK,UAAU,SAAS,KAAK,MAAMpH,QAAO;AAC1C,iBAAK,UAAU,MAAM;AACrB,mBAAO;UACT;UAEC,UAAU,WAAY;AACrB,iBAAK,SAAS,KAAK,KAAK,mBAAmB,KAAK,OAAO;AACvD,iBAAK,cAAa;UACpB;UAEC,eAAe,WAAY;AAC1B,gBAAIgE,KAAI,KAAK,SACTqD,MAAK,KAAK,YAAYrD,IACtBK,KAAI,KAAK,gBAAe,GACxB,IAAI,CAACL,KAAIK,IAAGgD,MAAKhD,EAAC;AACtB,iBAAK,YAAY,IAAI,OAAO,KAAK,OAAO,SAAS,CAAC,GAAG,KAAK,OAAO,IAAI,CAAC,CAAC;UACzE;UAEC,SAAS,WAAY;AACpB,gBAAI,KAAK,MAAM;AACd,mBAAK,YAAW;YACnB;UACA;UAEC,aAAa,WAAY;AACxB,iBAAK,UAAU,cAAc,IAAI;UACnC;UAEC,QAAQ,WAAY;AACnB,mBAAO,KAAK,WAAW,CAAC,KAAK,UAAU,QAAQ,WAAW,KAAK,SAAS;UAC1E;;UAGC,gBAAgB,SAAU,GAAG;AAC5B,mBAAO,EAAE,WAAW,KAAK,MAAM,KAAK,KAAK,UAAU,KAAK,gBAAe;UACzE;QACA,CAAC;AAKM,iBAAS,aAAa,QAAQrE,UAAS;AAC7C,iBAAO,IAAI,aAAa,QAAQA,QAAO;QACxC;ACpFU,YAACsH,UAAS,aAAa,OAAO;UAEvC,YAAY,SAAU,QAAQtH,UAAS,eAAe;AACrD,gBAAI,OAAOA,aAAY,UAAU;AAEhC,cAAAA,WAAUS,QAAY,CAAA,GAAI,eAAe,EAAC,QAAQT,SAAO,CAAC;YAC7D;AACEO,uBAAgB,MAAMP,QAAO;AAC7B,iBAAK,UAAU,SAAS,MAAM;AAE9B,gBAAI,MAAM,KAAK,QAAQ,MAAM,GAAG;AAAE,oBAAM,IAAI,MAAM,6BAA6B;YAAE;AAKjF,iBAAK,WAAW,KAAK,QAAQ;UAC/B;;;UAIC,WAAW,SAAU,QAAQ;AAC5B,iBAAK,WAAW;AAChB,mBAAO,KAAK,OAAM;UACpB;;;UAIC,WAAW,WAAY;AACtB,mBAAO,KAAK;UACd;;;UAIC,WAAW,WAAY;AACtB,gBAAI,OAAO,CAAC,KAAK,SAAS,KAAK,YAAY,KAAK,OAAO;AAEvD,mBAAO,IAAI;cACV,KAAK,KAAK,mBAAmB,KAAK,OAAO,SAAS,IAAI,CAAC;cACvD,KAAK,KAAK,mBAAmB,KAAK,OAAO,IAAI,IAAI,CAAC;YAAC;UACtD;UAEC,UAAUoH,MAAK,UAAU;UAEzB,UAAU,WAAY;AAErB,gBAAI,MAAM,KAAK,QAAQ,KACnB,MAAM,KAAK,QAAQ,KACnB/B,OAAM,KAAK,MACX,MAAMA,KAAI,QAAQ;AAEtB,gBAAI,IAAI,aAAa,MAAM,UAAU;AACpC,kBAAIxF,KAAI,KAAK,KAAK,KACd,OAAQ,KAAK,WAAW,MAAM,IAAKA,IACnC,MAAMwF,KAAI,QAAQ,CAAC,MAAM,MAAM,GAAG,CAAC,GACnC,SAASA,KAAI,QAAQ,CAAC,MAAM,MAAM,GAAG,CAAC,GACtC,IAAI,IAAI,IAAI,MAAM,EAAE,SAAS,CAAC,GAC9B,OAAOA,KAAI,UAAU,CAAC,EAAE,KACxB,OAAO,KAAK,MAAM,KAAK,IAAI,OAAOxF,EAAC,IAAI,KAAK,IAAI,MAAMA,EAAC,IAAI,KAAK,IAAI,OAAOA,EAAC,MACnE,KAAK,IAAI,MAAMA,EAAC,IAAI,KAAK,IAAI,OAAOA,EAAC,EAAE,IAAIA;AAExD,kBAAI,MAAM,IAAI,KAAK,SAAS,GAAG;AAC9B,uBAAO,OAAO,KAAK,IAAI,KAAK,KAAK,MAAM,GAAG;cAC9C;AAEG,mBAAK,SAAS,EAAE,SAASwF,KAAI,eAAc,CAAE;AAC7C,mBAAK,UAAU,MAAM,IAAI,IAAI,IAAI,EAAE,IAAIA,KAAI,QAAQ,CAAC,MAAM,MAAM,IAAI,CAAC,EAAE;AACvE,mBAAK,WAAW,EAAE,IAAI,IAAI;YAE7B,OAAS;AACN,kBAAI,UAAU,IAAI,UAAU,IAAI,QAAQ,KAAK,OAAO,EAAE,SAAS,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC;AAElF,mBAAK,SAASA,KAAI,mBAAmB,KAAK,OAAO;AACjD,mBAAK,UAAU,KAAK,OAAO,IAAIA,KAAI,mBAAmB,OAAO,EAAE;YAClE;AAEE,iBAAK,cAAa;UACpB;QACA,CAAC;AASM,iBAASkC,QAAO,QAAQvH,UAAS,eAAe;AACtD,iBAAO,IAAIsH,QAAO,QAAQtH,UAAS,aAAa;QACjD;ACjEU,YAAC,WAAWoH,MAAK,OAAO;;;UAIjC,SAAS;;;;YAIR,cAAc;;;YAId,QAAQ;UACV;UAEC,YAAY,SAAU,SAASpH,UAAS;AACvCO,uBAAgB,MAAMP,QAAO;AAC7B,iBAAK,YAAY,OAAO;UAC1B;;;UAIC,YAAY,WAAY;AACvB,mBAAO,KAAK;UACd;;;UAIC,YAAY,SAAU,SAAS;AAC9B,iBAAK,YAAY,OAAO;AACxB,mBAAO,KAAK,OAAM;UACpB;;;UAIC,SAAS,WAAY;AACpB,mBAAO,CAAC,KAAK,SAAS;UACxB;;;UAIC,mBAAmB,SAAU,GAAG;AAC/B,gBAAI,cAAc,UACd,WAAW,MACX,UAAUwH,0BACV,IAAI;AAER,qBAAS,IAAI,GAAG,OAAO,KAAK,OAAO,QAAQ,IAAI,MAAM,KAAK;AACzD,kBAAI,SAAS,KAAK,OAAO,CAAC;AAE1B,uBAAS,IAAI,GAAG,MAAM,OAAO,QAAQ,IAAI,KAAK,KAAK;AAClD,qBAAK,OAAO,IAAI,CAAC;AACjB,qBAAK,OAAO,CAAC;AAEb,oBAAI,SAAS,QAAQ,GAAG,IAAI,IAAI,IAAI;AAEpC,oBAAI,SAAS,aAAa;AACzB,gCAAc;AACd,6BAAW,QAAQ,GAAG,IAAI,EAAE;gBACjC;cACA;YACA;AACE,gBAAI,UAAU;AACb,uBAAS,WAAW,KAAK,KAAK,WAAW;YAC5C;AACE,mBAAO;UACT;;;UAIC,WAAW,WAAY;AAEtB,gBAAI,CAAC,KAAK,MAAM;AACf,oBAAM,IAAI,MAAM,gDAAgD;YACnE;AACE,mBAAOC,eAAwB,KAAK,cAAa,GAAI,KAAK,KAAK,QAAQ,GAAG;UAC5E;;;UAIC,WAAW,WAAY;AACtB,mBAAO,KAAK;UACd;;;;;UAMC,WAAW,SAAU,QAAQ,SAAS;AACrC,sBAAU,WAAW,KAAK,cAAa;AACvC,qBAAS,SAAS,MAAM;AACxB,oBAAQ,KAAK,MAAM;AACnB,iBAAK,QAAQ,OAAO,MAAM;AAC1B,mBAAO,KAAK,OAAM;UACpB;UAEC,aAAa,SAAU,SAAS;AAC/B,iBAAK,UAAU,IAAI,aAAY;AAC/B,iBAAK,WAAW,KAAK,gBAAgB,OAAO;UAC9C;UAEC,eAAe,WAAY;AAC1B,mBAAOf,OAAgB,KAAK,QAAQ,IAAI,KAAK,WAAW,KAAK,SAAS,CAAC;UACzE;;UAGC,iBAAiB,SAAU,SAAS;AACnC,gBAAI,SAAS,CAAA,GACT,OAAOA,OAAgB,OAAO;AAElC,qBAAS,IAAI,GAAG,MAAM,QAAQ,QAAQ,IAAI,KAAK,KAAK;AACnD,kBAAI,MAAM;AACT,uBAAO,CAAC,IAAI,SAAS,QAAQ,CAAC,CAAC;AAC/B,qBAAK,QAAQ,OAAO,OAAO,CAAC,CAAC;cACjC,OAAU;AACN,uBAAO,CAAC,IAAI,KAAK,gBAAgB,QAAQ,CAAC,CAAC;cAC/C;YACA;AAEE,mBAAO;UACT;UAEC,UAAU,WAAY;AACrB,gBAAI,WAAW,IAAI,OAAM;AACzB,iBAAK,SAAS,CAAA;AACd,iBAAK,gBAAgB,KAAK,UAAU,KAAK,QAAQ,QAAQ;AAEzD,gBAAI,KAAK,QAAQ,QAAO,KAAM,SAAS,QAAO,GAAI;AACjD,mBAAK,eAAe;AACpB,mBAAK,cAAa;YACrB;UACA;UAEC,eAAe,WAAY;AAC1B,gBAAIrC,KAAI,KAAK,gBAAe,GACxB,IAAI,IAAInD,OAAMmD,IAAGA,EAAC;AAEtB,gBAAI,CAAC,KAAK,cAAc;AACvB;YACH;AAEE,iBAAK,YAAY,IAAI,OAAO;cAC3B,KAAK,aAAa,IAAI,SAAS,CAAC;cAChC,KAAK,aAAa,IAAI,IAAI,CAAC;YAC9B,CAAG;UACH;;UAGC,iBAAiB,SAAU,SAAS,QAAQ,iBAAiB;AAC5D,gBAAI,OAAO,QAAQ,CAAC,aAAa,QAC7B,MAAM,QAAQ,QACd,GAAG;AAEP,gBAAI,MAAM;AACT,qBAAO,CAAA;AACP,mBAAK,IAAI,GAAG,IAAI,KAAK,KAAK;AACzB,qBAAK,CAAC,IAAI,KAAK,KAAK,mBAAmB,QAAQ,CAAC,CAAC;AACjD,gCAAgB,OAAO,KAAK,CAAC,CAAC;cAClC;AACG,qBAAO,KAAK,IAAI;YACnB,OAAS;AACN,mBAAK,IAAI,GAAG,IAAI,KAAK,KAAK;AACzB,qBAAK,gBAAgB,QAAQ,CAAC,GAAG,QAAQ,eAAe;cAC5D;YACA;UACA;;UAGC,aAAa,WAAY;AACxB,gBAAI,SAAS,KAAK,UAAU;AAE5B,iBAAK,SAAS,CAAA;AACd,gBAAI,CAAC,KAAK,aAAa,CAAC,KAAK,UAAU,WAAW,MAAM,GAAG;AAC1D;YACH;AAEE,gBAAI,KAAK,QAAQ,QAAQ;AACxB,mBAAK,SAAS,KAAK;AACnB;YACH;AAEE,gBAAI,QAAQ,KAAK,QACb,GAAG,GAAGiC,IAAG,KAAK,MAAM,SAAS;AAEjC,iBAAK,IAAI,GAAGA,KAAI,GAAG,MAAM,KAAK,OAAO,QAAQ,IAAI,KAAK,KAAK;AAC1D,uBAAS,KAAK,OAAO,CAAC;AAEtB,mBAAK,IAAI,GAAG,OAAO,OAAO,QAAQ,IAAI,OAAO,GAAG,KAAK;AACpD,0BAAUoB,YAAqB,OAAO,CAAC,GAAG,OAAO,IAAI,CAAC,GAAG,QAAQ,GAAG,IAAI;AAExE,oBAAI,CAAC,SAAS;AAAE;gBAAS;AAEzB,sBAAMpB,EAAC,IAAI,MAAMA,EAAC,KAAK,CAAA;AACvB,sBAAMA,EAAC,EAAE,KAAK,QAAQ,CAAC,CAAC;AAGxB,oBAAK,QAAQ,CAAC,MAAM,OAAO,IAAI,CAAC,KAAO,MAAM,OAAO,GAAI;AACvD,wBAAMA,EAAC,EAAE,KAAK,QAAQ,CAAC,CAAC;AACxB,kBAAAA;gBACL;cACA;YACA;UACA;;UAGC,iBAAiB,WAAY;AAC5B,gBAAI,QAAQ,KAAK,QACb,YAAY,KAAK,QAAQ;AAE7B,qBAAS,IAAI,GAAG,MAAM,MAAM,QAAQ,IAAI,KAAK,KAAK;AACjD,oBAAM,CAAC,IAAIqB,SAAkB,MAAM,CAAC,GAAG,SAAS;YACnD;UACA;UAEC,SAAS,WAAY;AACpB,gBAAI,CAAC,KAAK,MAAM;AAAE;YAAO;AAEzB,iBAAK,YAAW;AAChB,iBAAK,gBAAe;AACpB,iBAAK,YAAW;UAClB;UAEC,aAAa,WAAY;AACxB,iBAAK,UAAU,YAAY,IAAI;UACjC;;UAGC,gBAAgB,SAAU,GAAG,QAAQ;AACpC,gBAAI,GAAG,GAAGrB,IAAG,KAAK,MAAM,MACpBjC,KAAI,KAAK,gBAAe;AAE5B,gBAAI,CAAC,KAAK,aAAa,CAAC,KAAK,UAAU,SAAS,CAAC,GAAG;AAAE,qBAAO;YAAM;AAGnE,iBAAK,IAAI,GAAG,MAAM,KAAK,OAAO,QAAQ,IAAI,KAAK,KAAK;AACnD,qBAAO,KAAK,OAAO,CAAC;AAEpB,mBAAK,IAAI,GAAG,OAAO,KAAK,QAAQiC,KAAI,OAAO,GAAG,IAAI,MAAMA,KAAI,KAAK;AAChE,oBAAI,CAAC,UAAW,MAAM,GAAI;AAAE;gBAAS;AAErC,oBAAIsB,uBAAgC,GAAG,KAAKtB,EAAC,GAAG,KAAK,CAAC,CAAC,KAAKjC,IAAG;AAC9D,yBAAO;gBACZ;cACA;YACA;AACE,mBAAO;UACT;QACA,CAAC;AAOM,iBAAS,SAAS,SAASrE,UAAS;AAC1C,iBAAO,IAAI,SAAS,SAASA,QAAO;QACrC;AAGA,iBAAS,QAAQ6H;AC7PP,YAAC,UAAU,SAAS,OAAO;UAEpC,SAAS;YACR,MAAM;UACR;UAEC,SAAS,WAAY;AACpB,mBAAO,CAAC,KAAK,SAAS,UAAU,CAAC,KAAK,SAAS,CAAC,EAAE;UACpD;;;UAIC,WAAW,WAAY;AAEtB,gBAAI,CAAC,KAAK,MAAM;AACf,oBAAM,IAAI,MAAM,gDAAgD;YACnE;AACE,mBAAOC,cAAuB,KAAK,cAAa,GAAI,KAAK,KAAK,QAAQ,GAAG;UAC3E;UAEC,iBAAiB,SAAU,SAAS;AACnC,gBAAI,SAAS,SAAS,UAAU,gBAAgB,KAAK,MAAM,OAAO,GAC9D,MAAM,OAAO;AAGjB,gBAAI,OAAO,KAAK,OAAO,CAAC,aAAa,UAAU,OAAO,CAAC,EAAE,OAAO,OAAO,MAAM,CAAC,CAAC,GAAG;AACjF,qBAAO,IAAG;YACb;AACE,mBAAO;UACT;UAEC,aAAa,SAAU,SAAS;AAC/B,qBAAS,UAAU,YAAY,KAAK,MAAM,OAAO;AACjD,gBAAIpB,OAAgB,KAAK,QAAQ,GAAG;AACnC,mBAAK,WAAW,CAAC,KAAK,QAAQ;YACjC;UACA;UAEC,eAAe,WAAY;AAC1B,mBAAOA,OAAgB,KAAK,SAAS,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,EAAE,CAAC;UAClF;UAEC,aAAa,WAAY;AAGxB,gBAAI,SAAS,KAAK,UAAU,SACxBrC,KAAI,KAAK,QAAQ,QACjB,IAAI,IAAInD,OAAMmD,IAAGA,EAAC;AAGtB,qBAAS,IAAI,OAAO,OAAO,IAAI,SAAS,CAAC,GAAG,OAAO,IAAI,IAAI,CAAC,CAAC;AAE7D,iBAAK,SAAS,CAAA;AACd,gBAAI,CAAC,KAAK,aAAa,CAAC,KAAK,UAAU,WAAW,MAAM,GAAG;AAC1D;YACH;AAEE,gBAAI,KAAK,QAAQ,QAAQ;AACxB,mBAAK,SAAS,KAAK;AACnB;YACH;AAEE,qBAAS,IAAI,GAAG,MAAM,KAAK,OAAO,QAAQ,SAAS,IAAI,KAAK,KAAK;AAChE,wBAAU0D,YAAqB,KAAK,OAAO,CAAC,GAAG,QAAQ,IAAI;AAC3D,kBAAI,QAAQ,QAAQ;AACnB,qBAAK,OAAO,KAAK,OAAO;cAC5B;YACA;UACA;UAEC,aAAa,WAAY;AACxB,iBAAK,UAAU,YAAY,MAAM,IAAI;UACvC;;UAGC,gBAAgB,SAAU,GAAG;AAC5B,gBAAI,SAAS,OACT,MAAM,IAAI,IAAI,GAAG,GAAGzB,IAAG,KAAK;AAEhC,gBAAI,CAAC,KAAK,aAAa,CAAC,KAAK,UAAU,SAAS,CAAC,GAAG;AAAE,qBAAO;YAAM;AAGnE,iBAAK,IAAI,GAAG,MAAM,KAAK,OAAO,QAAQ,IAAI,KAAK,KAAK;AACnD,qBAAO,KAAK,OAAO,CAAC;AAEpB,mBAAK,IAAI,GAAG,OAAO,KAAK,QAAQA,KAAI,OAAO,GAAG,IAAI,MAAMA,KAAI,KAAK;AAChE,qBAAK,KAAK,CAAC;AACX,qBAAK,KAAKA,EAAC;AAEX,oBAAM,GAAG,IAAI,EAAE,MAAQ,GAAG,IAAI,EAAE,KAAQ,EAAE,KAAK,GAAG,IAAI,GAAG,MAAM,EAAE,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,KAAK,GAAG,GAAI;AACnG,2BAAS,CAAC;gBACf;cACA;YACA;AAGE,mBAAO,UAAU,SAAS,UAAU,eAAe,KAAK,MAAM,GAAG,IAAI;UACvE;QAEA,CAAC;AAIM,iBAAS,QAAQ,SAAStG,UAAS;AACzC,iBAAO,IAAI,QAAQ,SAASA,QAAO;QACpC;AC5HU,YAAC,UAAU,aAAa,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAoDxC,YAAY,SAAU,SAASA,UAAS;AACvCO,uBAAgB,MAAMP,QAAO;AAE7B,iBAAK,UAAU,CAAA;AAEf,gBAAI,SAAS;AACZ,mBAAK,QAAQ,OAAO;YACvB;UACA;;;UAIC,SAAS,SAAU,SAAS;AAC3B,gBAAI,WAAWY,SAAa,OAAO,IAAI,UAAU,QAAQ,UACrD,GAAG,KAAK;AAEZ,gBAAI,UAAU;AACb,mBAAK,IAAI,GAAG,MAAM,SAAS,QAAQ,IAAI,KAAK,KAAK;AAEhD,0BAAU,SAAS,CAAC;AACpB,oBAAI,QAAQ,cAAc,QAAQ,YAAY,QAAQ,YAAY,QAAQ,aAAa;AACtF,uBAAK,QAAQ,OAAO;gBACzB;cACA;AACG,qBAAO;YACV;AAEE,gBAAIZ,WAAU,KAAK;AAEnB,gBAAIA,SAAQ,UAAU,CAACA,SAAQ,OAAO,OAAO,GAAG;AAAE,qBAAO;YAAK;AAE9D,gBAAI,QAAQ,gBAAgB,SAASA,QAAO;AAC5C,gBAAI,CAAC,OAAO;AACX,qBAAO;YACV;AACE,kBAAM,UAAU,UAAU,OAAO;AAEjC,kBAAM,iBAAiB,MAAM;AAC7B,iBAAK,WAAW,KAAK;AAErB,gBAAIA,SAAQ,eAAe;AAC1B,cAAAA,SAAQ,cAAc,SAAS,KAAK;YACvC;AAEE,mBAAO,KAAK,SAAS,KAAK;UAC5B;;;;UAKC,YAAY,SAAU,OAAO;AAC5B,gBAAI,UAAU,QAAW;AACxB,qBAAO,KAAK,UAAU,KAAK,YAAY,IAAI;YAC9C;AAEE,kBAAM,UAAUS,QAAY,CAAA,GAAI,MAAM,cAAc;AACpD,iBAAK,eAAe,OAAO,KAAK,QAAQ,KAAK;AAC7C,mBAAO;UACT;;;UAIC,UAAU,SAAUuB,QAAO;AAC1B,mBAAO,KAAK,UAAU,SAAU,OAAO;AACtC,mBAAK,eAAe,OAAOA,MAAK;YACnC,GAAK,IAAI;UACT;UAEC,gBAAgB,SAAU,OAAOA,QAAO;AACvC,gBAAI,MAAM,UAAU;AACnB,kBAAI,OAAOA,WAAU,YAAY;AAChC,gBAAAA,SAAQA,OAAM,MAAM,OAAO;cAC/B;AACG,oBAAM,SAASA,MAAK;YACvB;UACA;QACA,CAAC;AASM,iBAAS,gBAAgB,SAAShC,UAAS;AAEjD,cAAI,WAAW,QAAQ,SAAS,YAAY,QAAQ,WAAW,SAC3D,SAAS,WAAW,SAAS,cAAc,MAC3C4G,UAAS,CAAA,GACT,eAAe5G,YAAWA,SAAQ,cAClC,kBAAkBA,YAAWA,SAAQ,kBAAkB,gBACvD,QAAQ,SAAS,GAAG;AAExB,cAAI,CAAC,UAAU,CAAC,UAAU;AACzB,mBAAO;UACT;AAEC,kBAAQ,SAAS,MAAI;YACrB,KAAK;AACJ,uBAAS,gBAAgB,MAAM;AAC/B,qBAAO,cAAc,cAAc,SAAS,QAAQA,QAAO;YAE5D,KAAK;AACJ,mBAAK,IAAI,GAAG,MAAM,OAAO,QAAQ,IAAI,KAAK,KAAK;AAC9C,yBAAS,gBAAgB,OAAO,CAAC,CAAC;AAClC,gBAAA4G,QAAO,KAAK,cAAc,cAAc,SAAS,QAAQ5G,QAAO,CAAC;cACpE;AACE,qBAAO,IAAI,aAAa4G,OAAM;YAE/B,KAAK;YACL,KAAK;AACJ,wBAAU,gBAAgB,QAAQ,SAAS,SAAS,eAAe,IAAI,GAAG,eAAe;AACzF,qBAAO,IAAI,SAAS,SAAS5G,QAAO;YAErC,KAAK;YACL,KAAK;AACJ,wBAAU,gBAAgB,QAAQ,SAAS,SAAS,YAAY,IAAI,GAAG,eAAe;AACtF,qBAAO,IAAI,QAAQ,SAASA,QAAO;YAEpC,KAAK;AACJ,mBAAK,IAAI,GAAG,MAAM,SAAS,WAAW,QAAQ,IAAI,KAAK,KAAK;AAC3D,oBAAI,WAAW,gBAAgB;kBAC9B,UAAU,SAAS,WAAW,CAAC;kBAC/B,MAAM;kBACN,YAAY,QAAQ;gBACxB,GAAMA,QAAO;AAEV,oBAAI,UAAU;AACb,kBAAA4G,QAAO,KAAK,QAAQ;gBACxB;cACA;AACE,qBAAO,IAAI,aAAaA,OAAM;YAE/B,KAAK;AACJ,mBAAK,IAAI,GAAG,MAAM,SAAS,SAAS,QAAQ,IAAI,KAAK,KAAK;AACzD,oBAAI,eAAe,gBAAgB,SAAS,SAAS,CAAC,GAAG5G,QAAO;AAEhE,oBAAI,cAAc;AACjB,kBAAA4G,QAAO,KAAK,YAAY;gBAC5B;cACA;AACE,qBAAO,IAAI,aAAaA,OAAM;YAE/B;AACC,oBAAM,IAAI,MAAM,yBAAyB;UAC3C;QACA;AAEA,iBAAS,cAAc,gBAAgB,SAAS,QAAQ5G,UAAS;AAChE,iBAAO,iBACN,eAAe,SAAS,MAAM,IAC9B,IAAIiH,QAAO,QAAQjH,YAAWA,SAAQ,yBAAyBA,QAAO;QACxE;AAKO,iBAAS,eAAe,QAAQ;AACtC,iBAAO,IAAI,OAAO,OAAO,CAAC,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC;QAClD;AAMO,iBAAS,gBAAgB,QAAQ,YAAY,iBAAiB;AACpE,cAAI,UAAU,CAAA;AAEd,mBAAS,IAAI,GAAG,MAAM,OAAO,QAAQ,QAAQ,IAAI,KAAK,KAAK;AAC1D,qBAAS,aACR,gBAAgB,OAAO,CAAC,GAAG,aAAa,GAAG,eAAe,KACzD,mBAAmB,gBAAgB,OAAO,CAAC,CAAC;AAE9C,oBAAQ,KAAK,MAAM;UACrB;AAEC,iBAAO;QACR;AAKO,iBAAS,eAAe,QAAQ,WAAW;AACjD,mBAAS,SAAS,MAAM;AACxB,iBAAO,OAAO,QAAQ,SACrB,CAACyB,UAAe,OAAO,KAAK,SAAS,GAAGA,UAAe,OAAO,KAAK,SAAS,GAAGA,UAAe,OAAO,KAAK,SAAS,CAAC,IACpH,CAACA,UAAe,OAAO,KAAK,SAAS,GAAGA,UAAe,OAAO,KAAK,SAAS,CAAC;QAC/E;AAMO,iBAAS,gBAAgB,SAAS,YAAY,QAAQ,WAAW;AACvE,cAAI,SAAS,CAAA;AAEb,mBAAS,IAAI,GAAG,MAAM,QAAQ,QAAQ,IAAI,KAAK,KAAK;AAEnD,mBAAO,KAAK,aACX,gBAAgB,QAAQ,CAAC,GAAGiF,OAAgB,QAAQ,CAAC,CAAC,IAAI,IAAI,aAAa,GAAG,QAAQ,SAAS,IAC/F,eAAe,QAAQ,CAAC,GAAG,SAAS,CAAC;UACxC;AAEC,cAAI,CAAC,cAAc,UAAU,OAAO,SAAS,GAAG;AAC/C,mBAAO,KAAK,OAAO,CAAC,EAAE,MAAK,CAAE;UAC/B;AAEC,iBAAO;QACR;AAEO,iBAAS,WAAW,OAAO,aAAa;AAC9C,iBAAO,MAAM,UACZjG,QAAY,CAAA,GAAI,MAAM,SAAS,EAAC,UAAU,YAAW,CAAC,IACtD,UAAU,WAAW;QACvB;AAIO,iBAAS,UAAU,SAAS;AAClC,cAAI,QAAQ,SAAS,aAAa,QAAQ,SAAS,qBAAqB;AACvE,mBAAO;UACT;AAEC,iBAAO;YACN,MAAM;YACN,YAAY,CAAA;YACZ,UAAU;UACZ;QACA;AAEA,YAAI,iBAAiB;UACpB,WAAW,SAAU,WAAW;AAC/B,mBAAO,WAAW,MAAM;cACvB,MAAM;cACN,aAAa,eAAe,KAAK,UAAS,GAAI,SAAS;YAC1D,CAAG;UACH;QACA;AAOA,QAAAwG,QAAO,QAAQ,cAAc;AAM7B,QAAAK,QAAO,QAAQ,cAAc;AAC7B,qBAAa,QAAQ,cAAc;AAOnC,iBAAS,QAAQ;UAChB,WAAW,SAAU,WAAW;AAC/B,gBAAI,QAAQ,CAACZ,OAAgB,KAAK,QAAQ;AAE1C,gBAAI,SAAS,gBAAgB,KAAK,UAAU,QAAQ,IAAI,GAAG,OAAO,SAAS;AAE3E,mBAAO,WAAW,MAAM;cACvB,OAAO,QAAQ,UAAU,MAAM;cAC/B,aAAa;YAChB,CAAG;UACH;QACA,CAAC;AAMD,gBAAQ,QAAQ;UACf,WAAW,SAAU,WAAW;AAC/B,gBAAI,QAAQ,CAACA,OAAgB,KAAK,QAAQ,GACtC,QAAQ,SAAS,CAACA,OAAgB,KAAK,SAAS,CAAC,CAAC;AAEtD,gBAAI,SAAS,gBAAgB,KAAK,UAAU,QAAQ,IAAI,QAAQ,IAAI,GAAG,MAAM,SAAS;AAEtF,gBAAI,CAAC,OAAO;AACX,uBAAS,CAAC,MAAM;YACnB;AAEE,mBAAO,WAAW,MAAM;cACvB,OAAO,QAAQ,UAAU,MAAM;cAC/B,aAAa;YAChB,CAAG;UACH;QACA,CAAC;AAID,mBAAW,QAAQ;UAClB,cAAc,SAAU,WAAW;AAClC,gBAAI,SAAS,CAAA;AAEb,iBAAK,UAAU,SAAU,OAAO;AAC/B,qBAAO,KAAK,MAAM,UAAU,SAAS,EAAE,SAAS,WAAW;YAC9D,CAAG;AAED,mBAAO,WAAW,MAAM;cACvB,MAAM;cACN,aAAa;YAChB,CAAG;UACH;;;;UAKC,WAAW,SAAU,WAAW;AAE/B,gBAAI,OAAO,KAAK,WAAW,KAAK,QAAQ,YAAY,KAAK,QAAQ,SAAS;AAE1E,gBAAI,SAAS,cAAc;AAC1B,qBAAO,KAAK,aAAa,SAAS;YACrC;AAEE,gBAAI,uBAAuB,SAAS,sBAChC,QAAQ,CAAA;AAEZ,iBAAK,UAAU,SAAU,OAAO;AAC/B,kBAAI,MAAM,WAAW;AACpB,oBAAI,OAAO,MAAM,UAAU,SAAS;AACpC,oBAAI,sBAAsB;AACzB,wBAAM,KAAK,KAAK,QAAQ;gBAC7B,OAAW;AACN,sBAAI,UAAU,UAAU,IAAI;AAE5B,sBAAI,QAAQ,SAAS,qBAAqB;AACzC,0BAAM,KAAK,MAAM,OAAO,QAAQ,QAAQ;kBAC9C,OAAY;AACN,0BAAM,KAAK,OAAO;kBACxB;gBACA;cACA;YACA,CAAG;AAED,gBAAI,sBAAsB;AACzB,qBAAO,WAAW,MAAM;gBACvB,YAAY;gBACZ,MAAM;cACV,CAAI;YACJ;AAEE,mBAAO;cACN,MAAM;cACN,UAAU;YACb;UACA;QACA,CAAC;AAOM,iBAAS,QAAQ,SAAS1G,UAAS;AACzC,iBAAO,IAAI,QAAQ,SAASA,QAAO;QACpC;AAGU,YAAC,UAAU;AC7aX,YAAC,eAAe,MAAM,OAAO;;;UAItC,SAAS;;;YAGR,SAAS;;;YAIT,KAAK;;;YAIL,aAAa;;;;;YAMb,aAAa;;;YAIb,iBAAiB;;;YAIjB,QAAQ;;;YAIR,WAAW;UACb;UAEC,YAAY,SAAU,KAAK,QAAQA,UAAS;AAC3C,iBAAK,OAAO;AACZ,iBAAK,UAAU,eAAe,MAAM;AAEpCO,uBAAgB,MAAMP,QAAO;UAC/B;UAEC,OAAO,WAAY;AAClB,gBAAI,CAAC,KAAK,QAAQ;AACjB,mBAAK,WAAU;AAEf,kBAAI,KAAK,QAAQ,UAAU,GAAG;AAC7B,qBAAK,eAAc;cACvB;YACA;AAEE,gBAAI,KAAK,QAAQ,aAAa;AAC7B6D,cAAAA,UAAiB,KAAK,QAAQ,qBAAqB;AACnD,mBAAK,qBAAqB,KAAK,MAAM;YACxC;AAEE,iBAAK,QAAO,EAAG,YAAY,KAAK,MAAM;AACtC,iBAAK,OAAM;UACb;UAEC,UAAU,WAAY;AACrBU,mBAAe,KAAK,MAAM;AAC1B,gBAAI,KAAK,QAAQ,aAAa;AAC7B,mBAAK,wBAAwB,KAAK,MAAM;YAC3C;UACA;;;UAIC,YAAY,SAAU,SAAS;AAC9B,iBAAK,QAAQ,UAAU;AAEvB,gBAAI,KAAK,QAAQ;AAChB,mBAAK,eAAc;YACtB;AACE,mBAAO;UACT;UAEC,UAAU,SAAU,WAAW;AAC9B,gBAAI,UAAU,SAAS;AACtB,mBAAK,WAAW,UAAU,OAAO;YACpC;AACE,mBAAO;UACT;;;UAIC,cAAc,WAAY;AACzB,gBAAI,KAAK,MAAM;AACdyD,sBAAgB,KAAK,MAAM;YAC9B;AACE,mBAAO;UACT;;;UAIC,aAAa,WAAY;AACxB,gBAAI,KAAK,MAAM;AACdC,qBAAe,KAAK,MAAM;YAC7B;AACE,mBAAO;UACT;;;UAIC,QAAQ,SAAU,KAAK;AACtB,iBAAK,OAAO;AAEZ,gBAAI,KAAK,QAAQ;AAChB,mBAAK,OAAO,MAAM;YACrB;AACE,mBAAO;UACT;;;UAIC,WAAW,SAAU,QAAQ;AAC5B,iBAAK,UAAU,eAAe,MAAM;AAEpC,gBAAI,KAAK,MAAM;AACd,mBAAK,OAAM;YACd;AACE,mBAAO;UACT;UAEC,WAAW,WAAY;AACtB,gBAAI,SAAS;cACZ,MAAM,KAAK;cACX,WAAW,KAAK;YACnB;AAEE,gBAAI,KAAK,eAAe;AACvB,qBAAO,WAAW,KAAK;YAC1B;AAEE,mBAAO;UACT;;;UAIC,WAAW,SAAU,OAAO;AAC3B,iBAAK,QAAQ,SAAS;AACtB,iBAAK,cAAa;AAClB,mBAAO;UACT;;;UAIC,WAAW,WAAY;AACtB,mBAAO,KAAK;UACd;;;;UAKC,YAAY,WAAY;AACvB,mBAAO,KAAK;UACd;UAEC,YAAY,WAAY;AACvB,gBAAI,qBAAqB,KAAK,KAAK,YAAY;AAC/C,gBAAI,MAAM,KAAK,SAAS,qBAAqB,KAAK,OAAOzD,SAAe,KAAK;AAE7EX,YAAAA,UAAiB,KAAK,qBAAqB;AAC3C,gBAAI,KAAK,eAAe;AAAEA,cAAAA,UAAiB,KAAK,uBAAuB;YAAE;AACzE,gBAAI,KAAK,QAAQ,WAAW;AAAEA,cAAAA,UAAiB,KAAK,KAAK,QAAQ,SAAS;YAAE;AAE5E,gBAAI,gBAAgB/C;AACpB,gBAAI,cAAcA;AAIlB,gBAAI,SAAS4C,KAAU,KAAK,MAAM,MAAM,MAAM;AAC9C,gBAAI,UAAUA,KAAU,KAAK,iBAAiB,MAAM,OAAO;AAE3D,gBAAI,KAAK,QAAQ,eAAe,KAAK,QAAQ,gBAAgB,IAAI;AAChE,kBAAI,cAAc,KAAK,QAAQ,gBAAgB,OAAO,KAAK,KAAK,QAAQ;YAC3E;AAEE,gBAAI,KAAK,QAAQ,QAAQ;AACxB,mBAAK,cAAa;YACrB;AAEE,gBAAI,oBAAoB;AACvB,mBAAK,OAAO,IAAI;AAChB;YACH;AAEE,gBAAI,MAAM,KAAK;AACf,gBAAI,MAAM,KAAK,QAAQ;UACzB;UAEC,cAAc,SAAUzC,IAAG;AAC1B,gBAAIW,SAAQ,KAAK,KAAK,aAAaX,GAAE,IAAI,GACrC,SAAS,KAAK,KAAK,8BAA8B,KAAK,SAASA,GAAE,MAAMA,GAAE,MAAM,EAAE;AAErFkE,yBAAqB,KAAK,QAAQ,QAAQvD,MAAK;UACjD;UAEC,QAAQ,WAAY;AACnB,gBAAI,QAAQ,KAAK,QACb,SAAS,IAAI;cACT,KAAK,KAAK,mBAAmB,KAAK,QAAQ,aAAY,CAAE;cACxD,KAAK,KAAK,mBAAmB,KAAK,QAAQ,aAAY,CAAE;YAAC,GAC7DmC,QAAO,OAAO,QAAO;AAEzBT,wBAAoB,OAAO,OAAO,GAAG;AAErC,kBAAM,MAAM,QAASS,MAAK,IAAI;AAC9B,kBAAM,MAAM,SAASA,MAAK,IAAI;UAChC;UAEC,gBAAgB,WAAY;AAC3BoD,uBAAmB,KAAK,QAAQ,KAAK,QAAQ,OAAO;UACtD;UAEC,eAAe,WAAY;AAC1B,gBAAI,KAAK,UAAU,KAAK,QAAQ,WAAW,UAAa,KAAK,QAAQ,WAAW,MAAM;AACrF,mBAAK,OAAO,MAAM,SAAS,KAAK,QAAQ;YAC3C;UACA;UAEC,iBAAiB,WAAY;AAG5B,iBAAK,KAAK,OAAO;AAEjB,gBAAI,WAAW,KAAK,QAAQ;AAC5B,gBAAI,YAAY,KAAK,SAAS,UAAU;AACvC,mBAAK,OAAO;AACZ,mBAAK,OAAO,MAAM;YACrB;UACA;;;UAIC,WAAW,WAAY;AACtB,mBAAO,KAAK,QAAQ,UAAS;UAC/B;QACA,CAAC;AAKS,YAAC,eAAe,SAAU,KAAK,QAAQnH,UAAS;AACzD,iBAAO,IAAI,aAAa,KAAK,QAAQA,QAAO;QAC7C;ACtPU,YAAC,eAAe,aAAa,OAAO;;;UAI7C,SAAS;;;;YAIR,UAAU;;;YAIV,MAAM;;;;YAKN,iBAAiB;;;YAIjB,OAAO;;;YAIP,aAAa;UACf;UAEC,YAAY,WAAY;AACvB,gBAAI,qBAAqB,KAAK,KAAK,YAAY;AAC/C,gBAAI,MAAM,KAAK,SAAS,qBAAqB,KAAK,OAAOwE,SAAe,OAAO;AAE/EX,YAAAA,UAAiB,KAAK,qBAAqB;AAC3C,gBAAI,KAAK,eAAe;AAAEA,cAAAA,UAAiB,KAAK,uBAAuB;YAAE;AACzE,gBAAI,KAAK,QAAQ,WAAW;AAAEA,cAAAA,UAAiB,KAAK,KAAK,QAAQ,SAAS;YAAE;AAE5E,gBAAI,gBAAgB/C;AACpB,gBAAI,cAAcA;AAIlB,gBAAI,eAAe4C,KAAU,KAAK,MAAM,MAAM,MAAM;AAEpD,gBAAI,oBAAoB;AACvB,kBAAI,iBAAiB,IAAI,qBAAqB,QAAQ;AACtD,kBAAI,UAAU,CAAA;AACd,uBAAS,IAAI,GAAG,IAAI,eAAe,QAAQ,KAAK;AAC/C,wBAAQ,KAAK,eAAe,CAAC,EAAE,GAAG;cACtC;AAEG,mBAAK,OAAQ,eAAe,SAAS,IAAK,UAAU,CAAC,IAAI,GAAG;AAC5D;YACH;AAEE,gBAAI,CAAC9C,SAAa,KAAK,IAAI,GAAG;AAAE,mBAAK,OAAO,CAAC,KAAK,IAAI;YAAE;AAExD,gBAAI,CAAC,KAAK,QAAQ,mBAAmB,OAAO,UAAU,eAAe,KAAK,IAAI,OAAO,WAAW,GAAG;AAClG,kBAAI,MAAM,WAAW,IAAI;YAC5B;AACE,gBAAI,WAAW,CAAC,CAAC,KAAK,QAAQ;AAC9B,gBAAI,OAAO,CAAC,CAAC,KAAK,QAAQ;AAC1B,gBAAI,QAAQ,CAAC,CAAC,KAAK,QAAQ;AAC3B,gBAAI,cAAc,CAAC,CAAC,KAAK,QAAQ;AACjC,qBAAS,IAAI,GAAG,IAAI,KAAK,KAAK,QAAQ,KAAK;AAC1C,kBAAI,SAAS4D,SAAe,QAAQ;AACpC,qBAAO,MAAM,KAAK,KAAK,CAAC;AACxB,kBAAI,YAAY,MAAM;YACzB;UACA;;;;QAKA,CAAC;AAOM,iBAAS,aAAa,OAAO,QAAQxE,UAAS;AACpD,iBAAO,IAAI,aAAa,OAAO,QAAQA,QAAO;QAC/C;AChFU,YAAC,aAAa,aAAa,OAAO;UAC3C,YAAY,WAAY;AACvB,gBAAI,KAAK,KAAK,SAAS,KAAK;AAE5B6D,YAAAA,UAAiB,IAAI,qBAAqB;AAC1C,gBAAI,KAAK,eAAe;AAAEA,cAAAA,UAAiB,IAAI,uBAAuB;YAAE;AACxE,gBAAI,KAAK,QAAQ,WAAW;AAAEA,cAAAA,UAAiB,IAAI,KAAK,QAAQ,SAAS;YAAE;AAE3E,eAAG,gBAAgB/C;AACnB,eAAG,cAAcA;UACnB;;;;QAKA,CAAC;AAOM,iBAAS,WAAW,IAAI,QAAQd,UAAS;AAC/C,iBAAO,IAAI,WAAW,IAAI,QAAQA,QAAO;QAC1C;ACjCU,YAAC,aAAa,MAAM,OAAO;;;UAIpC,SAAS;;;YAGR,aAAa;;;YAIb,QAAQ,CAAC,GAAG,CAAC;;;YAIb,WAAW;;;YAIX,MAAM;;;;YAKN,SAAS;UACX;UAEC,YAAY,SAAUA,UAAS,QAAQ;AACtC,gBAAIA,aAAYA,oBAAmB,UAAUY,SAAaZ,QAAO,IAAI;AACpE,mBAAK,UAAU,SAASA,QAAO;AAC/BO,yBAAgB,MAAM,MAAM;YAC/B,OAAS;AACNA,yBAAgB,MAAMP,QAAO;AAC7B,mBAAK,UAAU;YAClB;AACE,gBAAI,KAAK,QAAQ,SAAS;AACzB,mBAAK,WAAW,KAAK,QAAQ;YAChC;UACA;;;;UAKC,QAAQ,SAAUqF,MAAK;AACtB,YAAAA,OAAM,UAAU,SAASA,OAAM,KAAK,QAAQ;AAC5C,gBAAI,CAACA,KAAI,SAAS,IAAI,GAAG;AACxB,cAAAA,KAAI,SAAS,IAAI;YACpB;AACE,mBAAO;UACT;;;;;UAMC,OAAO,WAAY;AAClB,gBAAI,KAAK,MAAM;AACd,mBAAK,KAAK,YAAY,IAAI;YAC7B;AACE,mBAAO;UACT;;;;;UAMC,QAAQ,SAAU,OAAO;AACxB,gBAAI,KAAK,MAAM;AACd,mBAAK,MAAK;YACb,OAAS;AACN,kBAAI,UAAU,QAAQ;AACrB,qBAAK,UAAU;cACnB,OAAU;AACN,wBAAQ,KAAK;cACjB;AACG,mBAAK,aAAY;AAGjB,mBAAK,OAAO,MAAM,IAAI;YACzB;AACE,mBAAO;UACT;UAEC,OAAO,SAAUA,MAAK;AACrB,iBAAK,gBAAgBA,KAAI;AAEzB,gBAAI,CAAC,KAAK,YAAY;AACrB,mBAAK,YAAW;YACnB;AAEE,gBAAIA,KAAI,eAAe;AACtB8B,yBAAmB,KAAK,YAAY,CAAC;YACxC;AAEE,yBAAa,KAAK,cAAc;AAChC,iBAAK,QAAO,EAAG,YAAY,KAAK,UAAU;AAC1C,iBAAK,OAAM;AAEX,gBAAI9B,KAAI,eAAe;AACtB8B,yBAAmB,KAAK,YAAY,CAAC;YACxC;AAEE,iBAAK,aAAY;AAEjB,gBAAI,KAAK,QAAQ,aAAa;AAC7BtD,cAAAA,UAAiB,KAAK,YAAY,qBAAqB;AACvD,mBAAK,qBAAqB,KAAK,UAAU;YAC5C;UACA;UAEC,UAAU,SAAUwB,MAAK;AACxB,gBAAIA,KAAI,eAAe;AACtB8B,yBAAmB,KAAK,YAAY,CAAC;AACrC,mBAAK,iBAAiB,WAAWzD,KAAUa,QAAgB,QAAW,KAAK,UAAU,GAAG,GAAG;YAC9F,OAAS;AACNA,qBAAe,KAAK,UAAU;YACjC;AAEE,gBAAI,KAAK,QAAQ,aAAa;AAC7BU,cAAAA,aAAoB,KAAK,YAAY,qBAAqB;AAC1D,mBAAK,wBAAwB,KAAK,UAAU;YAC/C;UACA;;;;UAKC,WAAW,WAAY;AACtB,mBAAO,KAAK;UACd;;;UAIC,WAAW,SAAU,QAAQ;AAC5B,iBAAK,UAAU,SAAS,MAAM;AAC9B,gBAAI,KAAK,MAAM;AACd,mBAAK,gBAAe;AACpB,mBAAK,WAAU;YAClB;AACE,mBAAO;UACT;;;UAIC,YAAY,WAAY;AACvB,mBAAO,KAAK;UACd;;;;UAKC,YAAY,SAAU,SAAS;AAC9B,iBAAK,WAAW;AAChB,iBAAK,OAAM;AACX,mBAAO;UACT;;;UAIC,YAAY,WAAY;AACvB,mBAAO,KAAK;UACd;;;UAIC,QAAQ,WAAY;AACnB,gBAAI,CAAC,KAAK,MAAM;AAAE;YAAO;AAEzB,iBAAK,WAAW,MAAM,aAAa;AAEnC,iBAAK,eAAc;AACnB,iBAAK,cAAa;AAClB,iBAAK,gBAAe;AAEpB,iBAAK,WAAW,MAAM,aAAa;AAEnC,iBAAK,WAAU;UACjB;UAEC,WAAW,WAAY;AACtB,gBAAI,SAAS;cACZ,MAAM,KAAK;cACX,WAAW,KAAK;YACnB;AAEE,gBAAI,KAAK,eAAe;AACvB,qBAAO,WAAW,KAAK;YAC1B;AACE,mBAAO;UACT;;;UAIC,QAAQ,WAAY;AACnB,mBAAO,CAAC,CAAC,KAAK,QAAQ,KAAK,KAAK,SAAS,IAAI;UAC/C;;;UAIC,cAAc,WAAY;AACzB,gBAAI,KAAK,MAAM;AACd+C,sBAAgB,KAAK,UAAU;YAClC;AACE,mBAAO;UACT;;;UAIC,aAAa,WAAY;AACxB,gBAAI,KAAK,MAAM;AACdC,qBAAe,KAAK,UAAU;YACjC;AACE,mBAAO;UACT;;UAGC,cAAc,SAAU,QAAQ;AAC/B,gBAAI,SAAS,KAAK;AAClB,gBAAI,CAAC,OAAO,MAAM;AAAE,qBAAO;YAAM;AAEjC,gBAAI,kBAAkB,cAAc;AACnC,uBAAS;AACT,kBAAIrB,UAAS,KAAK,QAAQ;AAC1B,uBAAStG,QAAMsG,SAAQ;AACtB,oBAAIA,QAAOtG,IAAE,EAAE,MAAM;AACpB,2BAASsG,QAAOtG,IAAE;AAClB;gBACL;cACA;AACG,kBAAI,CAAC,QAAQ;AAAE,uBAAO;cAAM;AAG5B,mBAAK,UAAU;YAClB;AAEE,gBAAI,CAAC,QAAQ;AACZ,kBAAI,OAAO,WAAW;AACrB,yBAAS,OAAO,UAAS;cAC7B,WAAc,OAAO,WAAW;AAC5B,yBAAS,OAAO,UAAS;cAC7B,WAAc,OAAO,WAAW;AAC5B,yBAAS,OAAO,UAAS,EAAG,UAAS;cACzC,OAAU;AACN,sBAAM,IAAI,MAAM,oCAAoC;cACxD;YACA;AACE,iBAAK,UAAU,MAAM;AAErB,gBAAI,KAAK,MAAM;AAEd,mBAAK,OAAM;YACd;AAEE,mBAAO;UACT;UAEC,gBAAgB,WAAY;AAC3B,gBAAI,CAAC,KAAK,UAAU;AAAE;YAAO;AAE7B,gBAAI4H,QAAO,KAAK;AAChB,gBAAI,UAAW,OAAO,KAAK,aAAa,aAAc,KAAK,SAAS,KAAK,WAAW,IAAI,IAAI,KAAK;AAEjG,gBAAI,OAAO,YAAY,UAAU;AAChC,cAAAA,MAAK,YAAY;YACpB,OAAS;AACN,qBAAOA,MAAK,cAAa,GAAI;AAC5B,gBAAAA,MAAK,YAAYA,MAAK,UAAU;cACpC;AACG,cAAAA,MAAK,YAAY,OAAO;YAC3B;AAME,iBAAK,KAAK,eAAe;UAC3B;UAEC,iBAAiB,WAAY;AAC5B,gBAAI,CAAC,KAAK,MAAM;AAAE;YAAO;AAEzB,gBAAI,MAAM,KAAK,KAAK,mBAAmB,KAAK,OAAO,GAC/C,SAAS,QAAQ,KAAK,QAAQ,MAAM,GACpC,SAAS,KAAK,WAAU;AAE5B,gBAAI,KAAK,eAAe;AACvB5E,0BAAoB,KAAK,YAAY,IAAI,IAAI,MAAM,CAAC;YACvD,OAAS;AACN,uBAAS,OAAO,IAAI,GAAG,EAAE,IAAI,MAAM;YACtC;AAEE,gBAAI,SAAS,KAAK,mBAAmB,CAAC,OAAO,GACzC,OAAO,KAAK,iBAAiB,CAAC,KAAK,MAAM,KAAK,kBAAkB,CAAC,IAAI,OAAO;AAGhF,iBAAK,WAAW,MAAM,SAAS,SAAS;AACxC,iBAAK,WAAW,MAAM,OAAO,OAAO;UACtC;UAEC,YAAY,WAAY;AACvB,mBAAO,CAAC,GAAG,CAAC;UACd;QAEA,CAAC;AAED,QAAAG,KAAI,QAAQ;UACX,cAAc,SAAU,cAAc,SAAS,QAAQzD,UAAS;AAC/D,gBAAI,UAAU;AACd,gBAAI,EAAE,mBAAmB,eAAe;AACvC,wBAAU,IAAI,aAAaA,QAAO,EAAE,WAAW,OAAO;YACzD;AACE,gBAAI,QAAQ;AACX,sBAAQ,UAAU,MAAM;YAC3B;AACE,mBAAO;UACT;QACA,CAAC;AAGD,cAAM,QAAQ;UACb,cAAc,SAAU,cAAc,KAAK,SAASA,UAAS;AAC5D,gBAAI,UAAU;AACd,gBAAI,mBAAmB,cAAc;AACpCO,yBAAgB,SAASP,QAAO;AAChC,sBAAQ,UAAU;YACrB,OAAS;AACN,wBAAW,OAAO,CAACA,WAAW,MAAM,IAAI,aAAaA,UAAS,IAAI;AAClE,sBAAQ,WAAW,OAAO;YAC7B;AACE,mBAAO;UACT;QACA,CAAC;AChTS,YAACmI,SAAQ,WAAW,OAAO;;;UAIpC,SAAS;;;YAGR,MAAM;;;YAIN,QAAQ,CAAC,GAAG,CAAC;;;YAIb,UAAU;;;YAIV,UAAU;;;;;;YAOV,WAAW;;;;YAKX,SAAS;;;;YAKT,uBAAuB;;;;YAKvB,2BAA2B;;;YAI3B,gBAAgB,CAAC,GAAG,CAAC;;;;YAKrB,YAAY;;;YAIZ,aAAa;;;;YAKb,WAAW;;;;YAKX,kBAAkB;;;;;;YAQlB,WAAW;UACb;;;;;UAMC,QAAQ,SAAU9C,MAAK;AACtB,YAAAA,OAAM,UAAU,SAASA,OAAM,KAAK,QAAQ;AAE5C,gBAAI,CAACA,KAAI,SAAS,IAAI,KAAKA,KAAI,UAAUA,KAAI,OAAO,QAAQ,WAAW;AACtE,cAAAA,KAAI,YAAYA,KAAI,MAAM;YAC7B;AACE,YAAAA,KAAI,SAAS;AAEb,mBAAO,WAAW,UAAU,OAAO,KAAK,MAAMA,IAAG;UACnD;UAEC,OAAO,SAAUA,MAAK;AACrB,uBAAW,UAAU,MAAM,KAAK,MAAMA,IAAG;AAMzC,YAAAA,KAAI,KAAK,aAAa,EAAC,OAAO,KAAI,CAAC;AAEnC,gBAAI,KAAK,SAAS;AAKjB,mBAAK,QAAQ,KAAK,aAAa,EAAC,OAAO,KAAI,GAAG,IAAI;AAGlD,kBAAI,EAAE,KAAK,mBAAmB+B,QAAO;AACpC,qBAAK,QAAQ,GAAG,YAAYgB,eAAwB;cACxD;YACA;UACA;UAEC,UAAU,SAAU/C,MAAK;AACxB,uBAAW,UAAU,SAAS,KAAK,MAAMA,IAAG;AAM5C,YAAAA,KAAI,KAAK,cAAc,EAAC,OAAO,KAAI,CAAC;AAEpC,gBAAI,KAAK,SAAS;AAKjB,mBAAK,QAAQ,KAAK,cAAc,EAAC,OAAO,KAAI,GAAG,IAAI;AACnD,kBAAI,EAAE,KAAK,mBAAmB+B,QAAO;AACpC,qBAAK,QAAQ,IAAI,YAAYgB,eAAwB;cACzD;YACA;UACA;UAEC,WAAW,WAAY;AACtB,gBAAI,SAAS,WAAW,UAAU,UAAU,KAAK,IAAI;AAErD,gBAAI,KAAK,QAAQ,iBAAiB,SAAY,KAAK,QAAQ,eAAe,KAAK,KAAK,QAAQ,mBAAmB;AAC9G,qBAAO,WAAW,KAAK;YAC1B;AAEE,gBAAI,KAAK,QAAQ,YAAY;AAC5B,qBAAO,UAAU,KAAK;YACzB;AAEE,mBAAO;UACT;UAEC,aAAa,WAAY;AACxB,gBAAIvC,UAAS,iBACT,YAAY,KAAK,aAAarB;cAAe;cAChDqB,UAAS,OAAO,KAAK,QAAQ,aAAa,MAC1C;YAAwB;AAEzB,gBAAI,UAAU,KAAK,WAAWrB,SAAe,OAAOqB,UAAS,oBAAoB,SAAS;AAC1F,iBAAK,eAAerB,SAAe,OAAOqB,UAAS,YAAY,OAAO;AAEtEN,oCAAiC,SAAS;AAC1CC,qCAAkC,KAAK,YAAY;AACnDzC,eAAY,WAAW,eAAeqF,eAAwB;AAE9D,iBAAK,gBAAgB5D,SAAe,OAAOqB,UAAS,kBAAkB,SAAS;AAC/E,iBAAK,OAAOrB,SAAe,OAAOqB,UAAS,QAAQ,KAAK,aAAa;AAErE,gBAAI,KAAK,QAAQ,aAAa;AAC7B,kBAAI,cAAc,KAAK,eAAerB,SAAe,KAAKqB,UAAS,iBAAiB,SAAS;AAC7F,0BAAY,aAAa,QAAQ,QAAQ;AACzC,0BAAY,aAAa,cAAc,aAAa;AACpD,0BAAY,OAAO;AACnB,0BAAY,YAAY;AAExB9C,iBAAY,aAAa,SAAS,SAAU,IAAI;AAC/CZ,+BAAwB,EAAE;AAC1B,qBAAK,MAAK;cACd,GAAM,IAAI;YACV;UACA;UAEC,eAAe,WAAY;AAC1B,gBAAI,YAAY,KAAK,cACjBH,SAAQ,UAAU;AAEtB,YAAAA,OAAM,QAAQ;AACd,YAAAA,OAAM,aAAa;AAEnB,gBAAI,QAAQ,UAAU;AACtB,oBAAQ,KAAK,IAAI,OAAO,KAAK,QAAQ,QAAQ;AAC7C,oBAAQ,KAAK,IAAI,OAAO,KAAK,QAAQ,QAAQ;AAE7C,YAAAA,OAAM,QAAS,QAAQ,IAAK;AAC5B,YAAAA,OAAM,aAAa;AAEnB,YAAAA,OAAM,SAAS;AAEf,gBAAI,SAAS,UAAU,cACnB,YAAY,KAAK,QAAQ,WACzB,gBAAgB;AAEpB,gBAAI,aAAa,SAAS,WAAW;AACpC,cAAAA,OAAM,SAAS,YAAY;AAC3B6B,cAAAA,UAAiB,WAAW,aAAa;YAC5C,OAAS;AACNoB,cAAAA,aAAoB,WAAW,aAAa;YAC/C;AAEE,iBAAK,kBAAkB,KAAK,WAAW;UACzC;UAEC,cAAc,SAAUhE,IAAG;AAC1B,gBAAI,MAAM,KAAK,KAAK,uBAAuB,KAAK,SAASA,GAAE,MAAMA,GAAE,MAAM,GACrE,SAAS,KAAK,WAAU;AAC5BqC,wBAAoB,KAAK,YAAY,IAAI,IAAI,MAAM,CAAC;UACtD;UAEC,YAAY,WAAY;AACvB,gBAAI,CAAC,KAAK,QAAQ,SAAS;AAAE;YAAO;AACpC,gBAAI,KAAK,KAAK,UAAU;AAAE,mBAAK,KAAK,SAAS,KAAI;YAAG;AAIpD,gBAAI,KAAK,cAAc;AACtB,mBAAK,eAAe;AACpB;YACH;AAEE,gBAAI+B,OAAM,KAAK,MACX,eAAe,SAASR,UAAiB,KAAK,YAAY,cAAc,GAAG,EAAE,KAAK,GAClF,kBAAkB,KAAK,WAAW,eAAe,cACjD,iBAAiB,KAAK,iBACtB,WAAW,IAAI3D,OAAM,KAAK,gBAAgB,CAAC,kBAAkB,KAAK,gBAAgB;AAEtF,qBAAS,KAAKkC,aAAoB,KAAK,UAAU,CAAC;AAElD,gBAAI,eAAeiC,KAAI,2BAA2B,QAAQ,GACtDZ,WAAU,QAAQ,KAAK,QAAQ,cAAc,GAC7C,YAAY,QAAQ,KAAK,QAAQ,yBAAyBA,QAAO,GACjE,YAAY,QAAQ,KAAK,QAAQ,6BAA6BA,QAAO,GACrEV,QAAOsB,KAAI,QAAO,GAClB,KAAK,GACL,KAAK;AAET,gBAAI,aAAa,IAAI,iBAAiB,UAAU,IAAItB,MAAK,GAAG;AAC3D,mBAAK,aAAa,IAAI,iBAAiBA,MAAK,IAAI,UAAU;YAC7D;AACE,gBAAI,aAAa,IAAI,KAAK,UAAU,IAAI,GAAG;AAC1C,mBAAK,aAAa,IAAI,UAAU;YACnC;AACE,gBAAI,aAAa,IAAI,kBAAkB,UAAU,IAAIA,MAAK,GAAG;AAC5D,mBAAK,aAAa,IAAI,kBAAkBA,MAAK,IAAI,UAAU;YAC9D;AACE,gBAAI,aAAa,IAAI,KAAK,UAAU,IAAI,GAAG;AAC1C,mBAAK,aAAa,IAAI,UAAU;YACnC;AAME,gBAAI,MAAM,IAAI;AAEb,kBAAI,KAAK,QAAQ,YAAY;AAC5B,qBAAK,eAAe;cACxB;AAEG,cAAAsB,KACK,KAAK,cAAc,EACnB,MAAM,CAAC,IAAI,EAAE,CAAC;YACtB;UACA;UAEC,YAAY,WAAY;AAEvB,mBAAO,QAAQ,KAAK,WAAW,KAAK,QAAQ,kBAAkB,KAAK,QAAQ,gBAAe,IAAK,CAAC,GAAG,CAAC,CAAC;UACvG;QAEA,CAAC;AAQS,YAAC,QAAQ,SAAUrF,UAAS,QAAQ;AAC7C,iBAAO,IAAImI,OAAMnI,UAAS,MAAM;QACjC;AAQA,QAAAyD,KAAI,aAAa;UAChB,mBAAmB;QACpB,CAAC;AAKD,QAAAA,KAAI,QAAQ;;;;;;UAMX,WAAW,SAAU4E,QAAO,QAAQrI,UAAS;AAC5C,iBAAK,aAAamI,QAAOE,QAAO,QAAQrI,QAAO,EAC5C,OAAO,IAAI;AAEd,mBAAO;UACT;;;UAIC,YAAY,SAAUqI,QAAO;AAC5B,YAAAA,SAAQ,UAAU,SAASA,SAAQ,KAAK;AACxC,gBAAIA,QAAO;AACV,cAAAA,OAAM,MAAK;YACd;AACE,mBAAO;UACT;QACA,CAAC;AAkBD,cAAM,QAAQ;;;;;UAMb,WAAW,SAAU,SAASrI,UAAS;AACtC,iBAAK,SAAS,KAAK,aAAamI,QAAO,KAAK,QAAQ,SAASnI,QAAO;AACpE,gBAAI,CAAC,KAAK,qBAAqB;AAC9B,mBAAK,GAAG;gBACP,OAAO,KAAK;gBACZ,UAAU,KAAK;gBACf,QAAQ,KAAK;gBACb,MAAM,KAAK;cACf,CAAI;AACD,mBAAK,sBAAsB;YAC9B;AAEE,mBAAO;UACT;;;UAIC,aAAa,WAAY;AACxB,gBAAI,KAAK,QAAQ;AAChB,mBAAK,IAAI;gBACR,OAAO,KAAK;gBACZ,UAAU,KAAK;gBACf,QAAQ,KAAK;gBACb,MAAM,KAAK;cACf,CAAI;AACD,mBAAK,sBAAsB;AAC3B,mBAAK,SAAS;YACjB;AACE,mBAAO;UACT;;;UAIC,WAAW,SAAU,QAAQ;AAC5B,gBAAI,KAAK,QAAQ;AAChB,kBAAI,EAAE,gBAAgB,eAAe;AACpC,qBAAK,OAAO,UAAU;cAC1B;AACG,kBAAI,KAAK,OAAO,aAAa,UAAU,KAAK,OAAO,GAAG;AAErD,qBAAK,OAAO,OAAO,KAAK,IAAI;cAChC;YACA;AACE,mBAAO;UACT;;;UAIC,YAAY,WAAY;AACvB,gBAAI,KAAK,QAAQ;AAChB,mBAAK,OAAO,MAAK;YACpB;AACE,mBAAO;UACT;;;UAIC,aAAa,WAAY;AACxB,gBAAI,KAAK,QAAQ;AAChB,mBAAK,OAAO,OAAO,IAAI;YAC1B;AACE,mBAAO;UACT;;;UAIC,aAAa,WAAY;AACxB,mBAAQ,KAAK,SAAS,KAAK,OAAO,OAAM,IAAK;UAC/C;;;UAIC,iBAAiB,SAAU,SAAS;AACnC,gBAAI,KAAK,QAAQ;AAChB,mBAAK,OAAO,WAAW,OAAO;YACjC;AACE,mBAAO;UACT;;;UAIC,UAAU,WAAY;AACrB,mBAAO,KAAK;UACd;UAEC,YAAY,SAAUiB,IAAG;AACxB,gBAAI,CAAC,KAAK,UAAU,CAAC,KAAK,MAAM;AAC/B;YACH;AAEE0E,iBAAc1E,EAAC;AAEf,gBAAI,SAASA,GAAE,SAASA,GAAE;AAC1B,gBAAI,KAAK,OAAO,YAAY,UAAU,EAAE,kBAAkBmG,QAAO;AAGhE,kBAAI,KAAK,KAAK,SAAS,KAAK,MAAM,GAAG;AACpC,qBAAK,WAAU;cACnB,OAAU;AACN,qBAAK,UAAUnG,GAAE,MAAM;cAC3B;AACG;YACH;AACE,iBAAK,OAAO,UAAU;AACtB,iBAAK,UAAUA,GAAE,MAAM;UACzB;UAEC,YAAY,SAAUA,IAAG;AACxB,iBAAK,OAAO,UAAUA,GAAE,MAAM;UAChC;UAEC,aAAa,SAAUA,IAAG;AACzB,gBAAIA,GAAE,cAAc,YAAY,IAAI;AACnC,mBAAK,WAAWA,EAAC;YACpB;UACA;QACA,CAAC;ACxcS,YAACqH,WAAU,WAAW,OAAO;;;UAItC,SAAS;;;YAGR,MAAM;;;YAIN,QAAQ,CAAC,GAAG,CAAC;;;;;;YAOb,WAAW;;;YAIX,WAAW;;;YAIX,QAAQ;;;YAIR,SAAS;UACX;UAEC,OAAO,SAAUjD,MAAK;AACrB,uBAAW,UAAU,MAAM,KAAK,MAAMA,IAAG;AACzC,iBAAK,WAAW,KAAK,QAAQ,OAAO;AAMpC,YAAAA,KAAI,KAAK,eAAe,EAAC,SAAS,KAAI,CAAC;AAEvC,gBAAI,KAAK,SAAS;AACjB,mBAAK,eAAe,KAAK,OAAO;AAMhC,mBAAK,QAAQ,KAAK,eAAe,EAAC,SAAS,KAAI,GAAG,IAAI;YACzD;UACA;UAEC,UAAU,SAAUA,MAAK;AACxB,uBAAW,UAAU,SAAS,KAAK,MAAMA,IAAG;AAM5C,YAAAA,KAAI,KAAK,gBAAgB,EAAC,SAAS,KAAI,CAAC;AAExC,gBAAI,KAAK,SAAS;AACjB,mBAAK,kBAAkB,KAAK,OAAO;AAMnC,mBAAK,QAAQ,KAAK,gBAAgB,EAAC,SAAS,KAAI,GAAG,IAAI;YAC1D;UACA;UAEC,WAAW,WAAY;AACtB,gBAAI,SAAS,WAAW,UAAU,UAAU,KAAK,IAAI;AAErD,gBAAI,CAAC,KAAK,QAAQ,WAAW;AAC5B,qBAAO,WAAW,KAAK;YAC1B;AAEE,mBAAO;UACT;UAEC,aAAa,WAAY;AACxB,gBAAIQ,UAAS,mBACT,YAAYA,UAAS,OAAO,KAAK,QAAQ,aAAa,MAAM,oBAAoB,KAAK,gBAAgB,aAAa;AAEtH,iBAAK,eAAe,KAAK,aAAarB,SAAe,OAAO,SAAS;AAErE,iBAAK,WAAW,aAAa,QAAQ,SAAS;AAC9C,iBAAK,WAAW,aAAa,MAAM,qBAAqBxD,MAAW,IAAI,CAAC;UAC1E;UAEC,eAAe,WAAY;UAAA;UAE3B,YAAY,WAAY;UAAA;UAExB,cAAc,SAAU,KAAK;AAC5B,gBAAI,MAAM,MACNqE,OAAM,KAAK,MACX,YAAY,KAAK,YACjB,cAAcA,KAAI,uBAAuBA,KAAI,UAAS,CAAE,GACxD,eAAeA,KAAI,2BAA2B,GAAG,GACjD,YAAY,KAAK,QAAQ,WACzB,eAAe,UAAU,aACzB,gBAAgB,UAAU,cAC1B,SAAS,QAAQ,KAAK,QAAQ,MAAM,GACpC,SAAS,KAAK,WAAU;AAE5B,gBAAI,cAAc,OAAO;AACxB,qBAAO,eAAe;AACtB,qBAAO;YACV,WAAa,cAAc,UAAU;AAClC,qBAAO,eAAe;AACtB,qBAAO;YACV,WAAa,cAAc,UAAU;AAClC,qBAAO,eAAe;AACtB,qBAAO,gBAAgB;YAC1B,WAAa,cAAc,SAAS;AACjC,qBAAO;AACP,qBAAO,gBAAgB;YAC1B,WAAa,cAAc,QAAQ;AAChC,qBAAO;AACP,qBAAO,gBAAgB;YAC1B,WAAa,aAAa,IAAI,YAAY,GAAG;AAC1C,0BAAY;AACZ,qBAAO;AACP,qBAAO,gBAAgB;YAC1B,OAAS;AACN,0BAAY;AACZ,qBAAO,gBAAgB,OAAO,IAAI,OAAO,KAAK;AAC9C,qBAAO,gBAAgB;YAC1B;AAEE,kBAAM,IAAI,SAAS,QAAQ,MAAM,MAAM,IAAI,CAAC,EAAE,IAAI,MAAM,EAAE,IAAI,MAAM;AAEpEJ,YAAAA,aAAoB,WAAW,uBAAuB;AACtDA,YAAAA,aAAoB,WAAW,sBAAsB;AACrDA,YAAAA,aAAoB,WAAW,qBAAqB;AACpDA,YAAAA,aAAoB,WAAW,wBAAwB;AACvDpB,YAAAA,UAAiB,WAAW,qBAAqB,SAAS;AAC1DP,wBAAoB,WAAW,GAAG;UACpC;UAEC,iBAAiB,WAAY;AAC5B,gBAAI,MAAM,KAAK,KAAK,mBAAmB,KAAK,OAAO;AACnD,iBAAK,aAAa,GAAG;UACvB;UAEC,YAAY,SAAU,SAAS;AAC9B,iBAAK,QAAQ,UAAU;AAEvB,gBAAI,KAAK,YAAY;AACpB6D,yBAAmB,KAAK,YAAY,OAAO;YAC9C;UACA;UAEC,cAAc,SAAUlG,IAAG;AAC1B,gBAAI,MAAM,KAAK,KAAK,uBAAuB,KAAK,SAASA,GAAE,MAAMA,GAAE,MAAM;AACzE,iBAAK,aAAa,GAAG;UACvB;UAEC,YAAY,WAAY;AAEvB,mBAAO,QAAQ,KAAK,WAAW,KAAK,QAAQ,qBAAqB,CAAC,KAAK,QAAQ,SAAS,KAAK,QAAQ,kBAAiB,IAAK,CAAC,GAAG,CAAC,CAAC;UACnI;QAEA,CAAC;AAQS,YAAC,UAAU,SAAUjB,UAAS,QAAQ;AAC/C,iBAAO,IAAIsI,SAAQtI,UAAS,MAAM;QACnC;AAIA,QAAAyD,KAAI,QAAQ;;;;;;UAOX,aAAa,SAAU8E,UAAS,QAAQvI,UAAS;AAChD,iBAAK,aAAasI,UAASC,UAAS,QAAQvI,QAAO,EAChD,OAAO,IAAI;AAEd,mBAAO;UACT;;;UAIC,cAAc,SAAUuI,UAAS;AAChC,YAAAA,SAAQ,MAAK;AACb,mBAAO;UACT;QAEA,CAAC;AAgBD,cAAM,QAAQ;;;;;UAMb,aAAa,SAAU,SAASvI,UAAS;AAExC,gBAAI,KAAK,YAAY,KAAK,cAAa,GAAI;AAC1C,mBAAK,cAAa;YACrB;AAEE,iBAAK,WAAW,KAAK,aAAasI,UAAS,KAAK,UAAU,SAAStI,QAAO;AAC1E,iBAAK,yBAAwB;AAE7B,gBAAI,KAAK,SAAS,QAAQ,aAAa,KAAK,QAAQ,KAAK,KAAK,SAAS,IAAI,GAAG;AAC7E,mBAAK,YAAW;YACnB;AAEE,mBAAO;UACT;;;UAIC,eAAe,WAAY;AAC1B,gBAAI,KAAK,UAAU;AAClB,mBAAK,yBAAyB,IAAI;AAClC,mBAAK,aAAY;AACjB,mBAAK,WAAW;YACnB;AACE,mBAAO;UACT;UAEC,0BAA0B,SAAU8E,SAAQ;AAC3C,gBAAI,CAACA,WAAU,KAAK,uBAAuB;AAAE;YAAO;AACpD,gBAAI,QAAQA,UAAS,QAAQ,MACzB,SAAS;cACZ,QAAQ,KAAK;cACb,MAAM,KAAK;YACd;AACE,gBAAI,CAAC,KAAK,SAAS,QAAQ,WAAW;AACrC,qBAAO,YAAY,KAAK;AACxB,qBAAO,WAAW,KAAK;AACvB,qBAAO,QAAQ,KAAK;AACpB,kBAAI,KAAK,MAAM;AACd,qBAAK,mBAAkB;cAC3B,OAAU;AACN,uBAAO,MAAM,KAAK;cACtB;YACA,OAAS;AACN,qBAAO,MAAM,KAAK;YACrB;AACE,gBAAI,KAAK,SAAS,QAAQ,QAAQ;AACjC,qBAAO,YAAY,KAAK;YAC3B;AACE,iBAAK,KAAK,EAAE,MAAM;AAClB,iBAAK,wBAAwB,CAACA;UAChC;;;UAIC,aAAa,SAAU,QAAQ;AAC9B,gBAAI,KAAK,UAAU;AAClB,kBAAI,EAAE,gBAAgB,eAAe;AACpC,qBAAK,SAAS,UAAU;cAC5B;AACG,kBAAI,KAAK,SAAS,aAAa,MAAM,GAAG;AAEvC,qBAAK,SAAS,OAAO,KAAK,IAAI;AAE9B,oBAAI,KAAK,YAAY;AACpB,uBAAK,2BAA2B,IAAI;gBACzC,WAAe,KAAK,WAAW;AAC1B,uBAAK,UAAU,KAAK,4BAA4B,IAAI;gBACzD;cACA;YACA;AACE,mBAAO;UACT;;;UAIC,cAAc,WAAY;AACzB,gBAAI,KAAK,UAAU;AAClB,qBAAO,KAAK,SAAS,MAAK;YAC7B;UACA;;;UAIC,eAAe,WAAY;AAC1B,gBAAI,KAAK,UAAU;AAClB,mBAAK,SAAS,OAAO,IAAI;YAC5B;AACE,mBAAO;UACT;;;UAIC,eAAe,WAAY;AAC1B,mBAAO,KAAK,SAAS,OAAM;UAC7B;;;UAIC,mBAAmB,SAAU,SAAS;AACrC,gBAAI,KAAK,UAAU;AAClB,mBAAK,SAAS,WAAW,OAAO;YACnC;AACE,mBAAO;UACT;;;UAIC,YAAY,WAAY;AACvB,mBAAO,KAAK;UACd;UAEC,oBAAoB,WAAY;AAC/B,gBAAI,KAAK,YAAY;AACpB,mBAAK,0BAA0B,IAAI;YACtC,WAAa,KAAK,WAAW;AAC1B,mBAAK,UAAU,KAAK,2BAA2B,IAAI;YACtD;UACA;UAEC,2BAA2B,SAAU,OAAO;AAC3C,gBAAI,KAAK,OAAO,MAAM,eAAe,cAAc,MAAM,WAAU;AACnE,gBAAI,IAAI;AACP/B,iBAAY,IAAI,SAAS,WAAY;AACpC,qBAAK,SAAS,UAAU;AACxB,qBAAK,YAAW;cACpB,GAAM,IAAI;AACPA,iBAAY,IAAI,QAAQ,KAAK,cAAc,IAAI;YAClD;UACA;UAEC,4BAA4B,SAAU,OAAO;AAC5C,gBAAI,KAAK,OAAO,MAAM,eAAe,cAAc,MAAM,WAAU;AACnE,gBAAI,IAAI;AACP,iBAAG,aAAa,oBAAoB,KAAK,SAAS,WAAW,EAAE;YAClE;UACA;UAGC,cAAc,SAAU9B,IAAG;AAC1B,gBAAI,CAAC,KAAK,YAAY,CAAC,KAAK,MAAM;AACjC;YACH;AAGE,gBAAI,KAAK,KAAK,YAAY,KAAK,KAAK,SAAS,OAAM,KAAM,CAAC,KAAK,eAAe;AAC7E,mBAAK,gBAAgB;AACrB,kBAAI,OAAO;AACX,mBAAK,KAAK,KAAK,WAAW,WAAY;AACrC,qBAAK,gBAAgB;AACrB,qBAAK,aAAaA,EAAC;cACvB,CAAI;AACD;YACH;AAEE,iBAAK,SAAS,UAAUA,GAAE,SAASA,GAAE;AAErC,iBAAK,YAAY,KAAK,SAAS,QAAQ,SAASA,GAAE,SAAS,MAAS;UACtE;UAEC,cAAc,SAAUA,IAAG;AAC1B,gBAAI,SAASA,GAAE,QAAQ,gBAAgB;AACvC,gBAAI,KAAK,SAAS,QAAQ,UAAUA,GAAE,eAAe;AACpD,+BAAiB,KAAK,KAAK,2BAA2BA,GAAE,aAAa;AACrE,2BAAa,KAAK,KAAK,2BAA2B,cAAc;AAChE,uBAAS,KAAK,KAAK,mBAAmB,UAAU;YACnD;AACE,iBAAK,SAAS,UAAU,MAAM;UAChC;QACA,CAAC;ACpaS,YAAC,UAAU,KAAK,OAAO;UAChC,SAAS;;;YAGR,UAAU,CAAC,IAAI,EAAE;;;;;;;YAQjB,MAAM;;;YAIN,OAAO;YAEP,WAAW;UACb;UAEC,YAAY,SAAU,SAAS;AAC9B,gBAAI,MAAO,WAAW,QAAQ,YAAY,QAAS,UAAU,SAAS,cAAc,KAAK,GACrFjB,WAAU,KAAK;AAEnB,gBAAIA,SAAQ,gBAAgB,SAAS;AACpC,oBAAM,GAAG;AACT,kBAAI,YAAYA,SAAQ,IAAI;YAC/B,OAAS;AACN,kBAAI,YAAYA,SAAQ,SAAS,QAAQA,SAAQ,OAAO;YAC3D;AAEE,gBAAIA,SAAQ,OAAO;AAClB,kBAAI,QAAQqB,QAAMrB,SAAQ,KAAK;AAC/B,kBAAI,MAAM,qBAAsB,CAAC,MAAM,IAAK,QAAS,CAAC,MAAM,IAAK;YACpE;AACE,iBAAK,eAAe,KAAK,MAAM;AAE/B,mBAAO;UACT;UAEC,cAAc,WAAY;AACzB,mBAAO;UACT;QACA,CAAC;AAIM,iBAAS,QAAQA,UAAS;AAChC,iBAAO,IAAI,QAAQA,QAAO;QAC3B;ACtEA,aAAK,UAAU;ACuEL,YAAC,YAAY,MAAM,OAAO;;;UAInC,SAAS;;;YAGR,UAAU;;;YAIV,SAAS;;;;;;YAOT,gBAAgB,QAAQ;;;YAIxB,mBAAmB;;;YAInB,gBAAgB;;;YAIhB,QAAQ;;;YAIR,QAAQ;;;YAIR,SAAS;;;YAIT,SAAS;;;;;YAMT,eAAe;;;;;YAMf,eAAe;;;;;;;YAQf,QAAQ;;;YAIR,MAAM;;;YAIN,WAAW;;;YAIX,YAAY;UACd;UAEC,YAAY,SAAUA,UAAS;AAC9BO,uBAAgB,MAAMP,QAAO;UAC/B;UAEC,OAAO,WAAY;AAClB,iBAAK,eAAc;AAEnB,iBAAK,UAAU,CAAA;AACf,iBAAK,SAAS,CAAA;AAEd,iBAAK,WAAU;UACjB;UAEC,WAAW,SAAUqF,MAAK;AACzB,YAAAA,KAAI,cAAc,IAAI;UACxB;UAEC,UAAU,SAAUA,MAAK;AACxB,iBAAK,gBAAe;AACpBd,mBAAe,KAAK,UAAU;AAC9B,YAAAc,KAAI,iBAAiB,IAAI;AACzB,iBAAK,aAAa;AAClB,iBAAK,YAAY;UACnB;;;UAIC,cAAc,WAAY;AACzB,gBAAI,KAAK,MAAM;AACd2C,sBAAgB,KAAK,UAAU;AAC/B,mBAAK,eAAe,KAAK,GAAG;YAC/B;AACE,mBAAO;UACT;;;UAIC,aAAa,WAAY;AACxB,gBAAI,KAAK,MAAM;AACdC,qBAAe,KAAK,UAAU;AAC9B,mBAAK,eAAe,KAAK,GAAG;YAC/B;AACE,mBAAO;UACT;;;UAIC,cAAc,WAAY;AACzB,mBAAO,KAAK;UACd;;;UAIC,YAAY,SAAU,SAAS;AAC9B,iBAAK,QAAQ,UAAU;AACvB,iBAAK,eAAc;AACnB,mBAAO;UACT;;;UAIC,WAAW,SAAU,QAAQ;AAC5B,iBAAK,QAAQ,SAAS;AACtB,iBAAK,cAAa;AAElB,mBAAO;UACT;;;UAIC,WAAW,WAAY;AACtB,mBAAO,KAAK;UACd;;;UAIC,QAAQ,WAAY;AACnB,gBAAI,KAAK,MAAM;AACd,mBAAK,gBAAe;AACpB,kBAAI,WAAW,KAAK,WAAW,KAAK,KAAK,QAAO,CAAE;AAClD,kBAAI,aAAa,KAAK,WAAW;AAChC,qBAAK,YAAY;AACjB,qBAAK,cAAa;cACtB;AACG,mBAAK,QAAO;YACf;AACE,mBAAO;UACT;UAEC,WAAW,WAAY;AACtB,gBAAI,SAAS;cACZ,cAAc,KAAK;cACnB,WAAW,KAAK;cAChB,MAAM,KAAK;cACX,SAAS,KAAK;YACjB;AAEE,gBAAI,CAAC,KAAK,QAAQ,gBAAgB;AAEjC,kBAAI,CAAC,KAAK,SAAS;AAClB,qBAAK,UAAUO,SAAc,KAAK,YAAY,KAAK,QAAQ,gBAAgB,IAAI;cACnF;AAEG,qBAAO,OAAO,KAAK;YACtB;AAEE,gBAAI,KAAK,eAAe;AACvB,qBAAO,WAAW,KAAK;YAC1B;AAEE,mBAAO;UACT;;;;;;;UAQC,YAAY,WAAY;AACvB,mBAAO,SAAS,cAAc,KAAK;UACrC;;;;UAKC,aAAa,WAAY;AACxB,gBAAI3G,KAAI,KAAK,QAAQ;AACrB,mBAAOA,cAAaX,SAAQW,KAAI,IAAIX,OAAMW,IAAGA,EAAC;UAChD;UAEC,eAAe,WAAY;AAC1B,gBAAI,KAAK,cAAc,KAAK,QAAQ,WAAW,UAAa,KAAK,QAAQ,WAAW,MAAM;AACzF,mBAAK,WAAW,MAAM,SAAS,KAAK,QAAQ;YAC/C;UACA;UAEC,gBAAgB,SAAU,SAAS;AAGlC,gBAAI+E,UAAS,KAAK,QAAO,EAAG,UACxB,aAAa,CAAC,QAAQ,WAAW,QAAQ;AAE7C,qBAAS,IAAI,GAAG,MAAMA,QAAO,QAAQ,QAAQ,IAAI,KAAK,KAAK;AAE1D,uBAASA,QAAO,CAAC,EAAE,MAAM;AAEzB,kBAAIA,QAAO,CAAC,MAAM,KAAK,cAAc,QAAQ;AAC5C,6BAAa,QAAQ,YAAY,CAAC,MAAM;cAC5C;YACA;AAEE,gBAAI,SAAS,UAAU,GAAG;AACzB,mBAAK,QAAQ,SAAS,aAAa,QAAQ,IAAI,CAAC;AAChD,mBAAK,cAAa;YACrB;UACA;UAEC,gBAAgB,WAAY;AAC3B,gBAAI,CAAC,KAAK,MAAM;AAAE;YAAO;AAGzB,gBAAI,QAAQ,OAAO;AAAE;YAAO;AAE5BO,uBAAmB,KAAK,YAAY,KAAK,QAAQ,OAAO;AAExD,gBAAI7E,OAAM,CAAC,oBAAI,KAAI,GACf,YAAY,OACZ,YAAY;AAEhB,qBAAS,OAAO,KAAK,QAAQ;AAC5B,kBAAI,OAAO,KAAK,OAAO,GAAG;AAC1B,kBAAI,CAAC,KAAK,WAAW,CAAC,KAAK,QAAQ;AAAE;cAAS;AAE9C,kBAAI,OAAO,KAAK,IAAI,IAAIA,OAAM,KAAK,UAAU,GAAG;AAEhD6E,yBAAmB,KAAK,IAAI,IAAI;AAChC,kBAAI,OAAO,GAAG;AACb,4BAAY;cAChB,OAAU;AACN,oBAAI,KAAK,QAAQ;AAChB,8BAAY;gBACjB,OAAW;AACN,uBAAK,cAAc,IAAI;gBAC5B;AACI,qBAAK,SAAS;cAClB;YACA;AAEE,gBAAI,aAAa,CAAC,KAAK,UAAU;AAAE,mBAAK,YAAW;YAAG;AAEtD,gBAAI,WAAW;AACd5D,8BAAqB,KAAK,UAAU;AACpC,mBAAK,aAAaF,iBAAsB,KAAK,gBAAgB,IAAI;YACpE;UACA;UAEC,eAAevC;UAEf,gBAAgB,WAAY;AAC3B,gBAAI,KAAK,YAAY;AAAE;YAAO;AAE9B,iBAAK,aAAa0D,SAAe,OAAO,oBAAoB,KAAK,QAAQ,aAAa,GAAG;AACzF,iBAAK,cAAa;AAElB,gBAAI,KAAK,QAAQ,UAAU,GAAG;AAC7B,mBAAK,eAAc;YACtB;AAEE,iBAAK,QAAO,EAAG,YAAY,KAAK,UAAU;UAC5C;UAEC,eAAe,WAAY;AAE1B,gBAAI7C,QAAO,KAAK,WACZ,UAAU,KAAK,QAAQ;AAE3B,gBAAIA,UAAS,QAAW;AAAE,qBAAO;YAAU;AAE3C,qBAAS,KAAK,KAAK,SAAS;AAC3B,kBAAI,OAAO,CAAC;AACZ,kBAAI,KAAK,QAAQ,CAAC,EAAE,GAAG,SAAS,UAAU,MAAMA,OAAM;AACrD,qBAAK,QAAQ,CAAC,EAAE,GAAG,MAAM,SAAS,UAAU,KAAK,IAAIA,QAAO,CAAC;AAC7D,qBAAK,eAAe,CAAC;cACzB,OAAU;AACN4C,uBAAe,KAAK,QAAQ,CAAC,EAAE,EAAE;AACjC,qBAAK,mBAAmB,CAAC;AACzB,qBAAK,eAAe,CAAC;AACrB,uBAAO,KAAK,QAAQ,CAAC;cACzB;YACA;AAEE,gBAAI,QAAQ,KAAK,QAAQ5C,KAAI,GACzB0D,OAAM,KAAK;AAEf,gBAAI,CAAC,OAAO;AACX,sBAAQ,KAAK,QAAQ1D,KAAI,IAAI,CAAA;AAE7B,oBAAM,KAAK6C,SAAe,OAAO,gDAAgD,KAAK,UAAU;AAChG,oBAAM,GAAG,MAAM,SAAS;AAExB,oBAAM,SAASa,KAAI,QAAQA,KAAI,UAAUA,KAAI,eAAc,CAAE,GAAG1D,KAAI,EAAE,MAAK;AAC3E,oBAAM,OAAOA;AAEb,mBAAK,kBAAkB,OAAO0D,KAAI,UAAS,GAAIA,KAAI,QAAO,CAAE;AAG5DvE,sBAAa,MAAM,GAAG,WAAW;AAEjC,mBAAK,eAAe,KAAK;YAC5B;AAEE,iBAAK,SAAS;AAEd,mBAAO;UACT;UAEC,gBAAgBA;UAEhB,gBAAgBA;UAEhB,gBAAgBA;UAEhB,aAAa,WAAY;AACxB,gBAAI,CAAC,KAAK,MAAM;AACf;YACH;AAEE,gBAAI,KAAK;AAET,gBAAIa,QAAO,KAAK,KAAK,QAAO;AAC5B,gBAAIA,QAAO,KAAK,QAAQ,WACvBA,QAAO,KAAK,QAAQ,SAAS;AAC7B,mBAAK,gBAAe;AACpB;YACH;AAEE,iBAAK,OAAO,KAAK,QAAQ;AACxB,qBAAO,KAAK,OAAO,GAAG;AACtB,mBAAK,SAAS,KAAK;YACtB;AAEE,iBAAK,OAAO,KAAK,QAAQ;AACxB,qBAAO,KAAK,OAAO,GAAG;AACtB,kBAAI,KAAK,WAAW,CAAC,KAAK,QAAQ;AACjC,oBAAI,SAAS,KAAK;AAClB,oBAAI,CAAC,KAAK,cAAc,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,IAAI,CAAC,GAAG;AACpE,uBAAK,gBAAgB,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,IAAI,CAAC;gBACpE;cACA;YACA;AAEE,iBAAK,OAAO,KAAK,QAAQ;AACxB,kBAAI,CAAC,KAAK,OAAO,GAAG,EAAE,QAAQ;AAC7B,qBAAK,YAAY,GAAG;cACxB;YACA;UACA;UAEC,oBAAoB,SAAUA,OAAM;AACnC,qBAAS,OAAO,KAAK,QAAQ;AAC5B,kBAAI,KAAK,OAAO,GAAG,EAAE,OAAO,MAAMA,OAAM;AACvC;cACJ;AACG,mBAAK,YAAY,GAAG;YACvB;UACA;UAEC,iBAAiB,WAAY;AAC5B,qBAAS,OAAO,KAAK,QAAQ;AAC5B,mBAAK,YAAY,GAAG;YACvB;UACA;UAEC,gBAAgB,WAAY;AAC3B,qBAAS,KAAK,KAAK,SAAS;AAC3B4C,qBAAe,KAAK,QAAQ,CAAC,EAAE,EAAE;AACjC,mBAAK,eAAe,OAAO,CAAC,CAAC;AAC7B,qBAAO,KAAK,QAAQ,CAAC;YACxB;AACE,iBAAK,gBAAe;AAEpB,iBAAK,YAAY;UACnB;UAEC,eAAe,SAAU9E,IAAG0B,IAAG,GAAG,SAAS;AAC1C,gBAAIsH,MAAK,KAAK,MAAMhJ,KAAI,CAAC,GACrBiJ,MAAK,KAAK,MAAMvH,KAAI,CAAC,GACrB,KAAK,IAAI,GACT,UAAU,IAAID,OAAM,CAACuH,KAAI,CAACC,GAAE;AAChC,oBAAQ,IAAI,CAAC;AAEb,gBAAI,MAAM,KAAK,iBAAiB,OAAO,GACnC,OAAO,KAAK,OAAO,GAAG;AAE1B,gBAAI,QAAQ,KAAK,QAAQ;AACxB,mBAAK,SAAS;AACd,qBAAO;YAEV,WAAa,QAAQ,KAAK,QAAQ;AAC/B,mBAAK,SAAS;YACjB;AAEE,gBAAI,KAAK,SAAS;AACjB,qBAAO,KAAK,cAAcD,KAAIC,KAAI,IAAI,OAAO;YAChD;AAEE,mBAAO;UACT;UAEC,iBAAiB,SAAUjJ,IAAG0B,IAAG,GAAG,SAAS;AAE5C,qBAAS,IAAI,IAAI1B,IAAG,IAAI,IAAIA,KAAI,GAAG,KAAK;AACvC,uBAAS,IAAI,IAAI0B,IAAG,IAAI,IAAIA,KAAI,GAAG,KAAK;AAEvC,oBAAI,SAAS,IAAID,OAAM,GAAG,CAAC;AAC3B,uBAAO,IAAI,IAAI;AAEf,oBAAI,MAAM,KAAK,iBAAiB,MAAM,GAClC,OAAO,KAAK,OAAO,GAAG;AAE1B,oBAAI,QAAQ,KAAK,QAAQ;AACxB,uBAAK,SAAS;AACd;gBAEL,WAAe,QAAQ,KAAK,QAAQ;AAC/B,uBAAK,SAAS;gBACnB;AAEI,oBAAI,IAAI,IAAI,SAAS;AACpB,uBAAK,gBAAgB,GAAG,GAAG,IAAI,GAAG,OAAO;gBAC9C;cACA;YACA;UACA;UAEC,YAAY,SAAUD,IAAG;AACxB,gBAAI,YAAYA,OAAMA,GAAE,SAASA,GAAE;AACnC,iBAAK,SAAS,KAAK,KAAK,UAAS,GAAI,KAAK,KAAK,QAAO,GAAI,WAAW,SAAS;UAChF;UAEC,cAAc,SAAUA,IAAG;AAC1B,iBAAK,SAASA,GAAE,QAAQA,GAAE,MAAM,MAAMA,GAAE,QAAQ;UAClD;UAEC,YAAY,SAAUU,OAAM;AAC3B,gBAAI3B,WAAU,KAAK;AAEnB,gBAAI,WAAcA,SAAQ,iBAAiB2B,QAAO3B,SAAQ,eAAe;AACxE,qBAAOA,SAAQ;YAClB;AAEE,gBAAI,WAAcA,SAAQ,iBAAiBA,SAAQ,gBAAgB2B,OAAM;AACxE,qBAAO3B,SAAQ;YAClB;AAEE,mBAAO2B;UACT;UAEC,UAAU,SAAU,QAAQA,OAAM,SAAS,UAAU;AACpD,gBAAI,WAAW,KAAK,MAAMA,KAAI;AAC9B,gBAAK,KAAK,QAAQ,YAAY,UAAa,WAAW,KAAK,QAAQ,WAC9D,KAAK,QAAQ,YAAY,UAAa,WAAW,KAAK,QAAQ,SAAU;AAC5E,yBAAW;YACd,OAAS;AACN,yBAAW,KAAK,WAAW,QAAQ;YACtC;AAEE,gBAAI,kBAAkB,KAAK,QAAQ,qBAAsB,aAAa,KAAK;AAE3E,gBAAI,CAAC,YAAY,iBAAiB;AAEjC,mBAAK,YAAY;AAEjB,kBAAI,KAAK,eAAe;AACvB,qBAAK,cAAa;cACtB;AAEG,mBAAK,cAAa;AAClB,mBAAK,WAAU;AAEf,kBAAI,aAAa,QAAW;AAC3B,qBAAK,QAAQ,MAAM;cACvB;AAEG,kBAAI,CAAC,SAAS;AACb,qBAAK,YAAW;cACpB;AAIG,mBAAK,WAAW,CAAC,CAAC;YACrB;AAEE,iBAAK,mBAAmB,QAAQA,KAAI;UACtC;UAEC,oBAAoB,SAAU,QAAQA,OAAM;AAC3C,qBAAS,KAAK,KAAK,SAAS;AAC3B,mBAAK,kBAAkB,KAAK,QAAQ,CAAC,GAAG,QAAQA,KAAI;YACvD;UACA;UAEC,mBAAmB,SAAU,OAAO,QAAQA,OAAM;AACjD,gBAAIC,SAAQ,KAAK,KAAK,aAAaD,OAAM,MAAM,IAAI,GAC/C,YAAY,MAAM,OAAO,WAAWC,MAAK,EACpC,SAAS,KAAK,KAAK,mBAAmB,QAAQD,KAAI,CAAC,EAAE,MAAK;AAEnE,gBAAI,QAAQ,OAAO;AAClBwD,2BAAqB,MAAM,IAAI,WAAWvD,MAAK;YAClD,OAAS;AACN0B,0BAAoB,MAAM,IAAI,SAAS;YAC1C;UACA;UAEC,YAAY,WAAY;AACvB,gBAAI+B,OAAM,KAAK,MACX,MAAMA,KAAI,QAAQ,KAClB,WAAW,KAAK,YAAY,KAAK,YAAW,GAC5C,WAAW,KAAK;AAEpB,gBAAI,SAAS,KAAK,KAAK,oBAAoB,KAAK,SAAS;AACzD,gBAAI,QAAQ;AACX,mBAAK,mBAAmB,KAAK,qBAAqB,MAAM;YAC3D;AAEE,iBAAK,SAAS,IAAI,WAAW,CAAC,KAAK,QAAQ,UAAU;cACpD,KAAK,MAAMA,KAAI,QAAQ,CAAC,GAAG,IAAI,QAAQ,CAAC,CAAC,GAAG,QAAQ,EAAE,IAAI,SAAS,CAAC;cACpE,KAAK,KAAKA,KAAI,QAAQ,CAAC,GAAG,IAAI,QAAQ,CAAC,CAAC,GAAG,QAAQ,EAAE,IAAI,SAAS,CAAC;YACtE;AACE,iBAAK,SAAS,IAAI,WAAW,CAAC,KAAK,QAAQ,UAAU;cACpD,KAAK,MAAMA,KAAI,QAAQ,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,QAAQ,EAAE,IAAI,SAAS,CAAC;cACpE,KAAK,KAAKA,KAAI,QAAQ,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,QAAQ,EAAE,IAAI,SAAS,CAAC;YACtE;UACA;UAEC,YAAY,WAAY;AACvB,gBAAI,CAAC,KAAK,QAAQ,KAAK,KAAK,gBAAgB;AAAE;YAAO;AAErD,iBAAK,QAAO;UACd;UAEC,sBAAsB,SAAU,QAAQ;AACvC,gBAAIA,OAAM,KAAK,MACX,UAAUA,KAAI,iBAAiB,KAAK,IAAIA,KAAI,gBAAgBA,KAAI,QAAO,CAAE,IAAIA,KAAI,QAAO,GACxFzD,SAAQyD,KAAI,aAAa,SAAS,KAAK,SAAS,GAChD,cAAcA,KAAI,QAAQ,QAAQ,KAAK,SAAS,EAAE,MAAK,GACvD,WAAWA,KAAI,QAAO,EAAG,SAASzD,SAAQ,CAAC;AAE/C,mBAAO,IAAI,OAAO,YAAY,SAAS,QAAQ,GAAG,YAAY,IAAI,QAAQ,CAAC;UAC7E;;UAGC,SAAS,SAAU,QAAQ;AAC1B,gBAAIyD,OAAM,KAAK;AACf,gBAAI,CAACA,MAAK;AAAE;YAAO;AACnB,gBAAI1D,QAAO,KAAK,WAAW0D,KAAI,QAAO,CAAE;AAExC,gBAAI,WAAW,QAAW;AAAE,uBAASA,KAAI,UAAS;YAAG;AACrD,gBAAI,KAAK,cAAc,QAAW;AAAE;YAAO;AAE3C,gBAAI,cAAc,KAAK,qBAAqB,MAAM,GAC9C,YAAY,KAAK,qBAAqB,WAAW,GACjD,aAAa,UAAU,UAAS,GAChC,QAAQ,CAAA,GACR,SAAS,KAAK,QAAQ,YACtB,eAAe,IAAI;cAAO,UAAU,cAAa,EAAG,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC;cACpD,UAAU,YAAW,EAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAC;AAG5E,gBAAI,EAAE,SAAS,UAAU,IAAI,CAAC,KACxB,SAAS,UAAU,IAAI,CAAC,KACxB,SAAS,UAAU,IAAI,CAAC,KACxB,SAAS,UAAU,IAAI,CAAC,IAAI;AAAE,oBAAM,IAAI,MAAM,+CAA+C;YAAE;AAErG,qBAAS,OAAO,KAAK,QAAQ;AAC5B,kBAAI3D,KAAI,KAAK,OAAO,GAAG,EAAE;AACzB,kBAAIA,GAAE,MAAM,KAAK,aAAa,CAAC,aAAa,SAAS,IAAIR,OAAMQ,GAAE,GAAGA,GAAE,CAAC,CAAC,GAAG;AAC1E,qBAAK,OAAO,GAAG,EAAE,UAAU;cAC/B;YACA;AAIE,gBAAI,KAAK,IAAIC,QAAO,KAAK,SAAS,IAAI,GAAG;AAAE,mBAAK,SAAS,QAAQA,KAAI;AAAG;YAAO;AAG/E,qBAAS,IAAI,UAAU,IAAI,GAAG,KAAK,UAAU,IAAI,GAAG,KAAK;AACxD,uBAAS,IAAI,UAAU,IAAI,GAAG,KAAK,UAAU,IAAI,GAAG,KAAK;AACxD,oBAAI,SAAS,IAAIT,OAAM,GAAG,CAAC;AAC3B,uBAAO,IAAI,KAAK;AAEhB,oBAAI,CAAC,KAAK,aAAa,MAAM,GAAG;AAAE;gBAAS;AAE3C,oBAAI,OAAO,KAAK,OAAO,KAAK,iBAAiB,MAAM,CAAC;AACpD,oBAAI,MAAM;AACT,uBAAK,UAAU;gBACpB,OAAW;AACN,wBAAM,KAAK,MAAM;gBACtB;cACA;YACA;AAGE,kBAAM,KAAK,SAAUI,IAAG,GAAG;AAC1B,qBAAOA,GAAE,WAAW,UAAU,IAAI,EAAE,WAAW,UAAU;YAC5D,CAAG;AAED,gBAAI,MAAM,WAAW,GAAG;AAEvB,kBAAI,CAAC,KAAK,UAAU;AACnB,qBAAK,WAAW;AAGhB,qBAAK,KAAK,SAAS;cACvB;AAGG,kBAAI,WAAW,SAAS,uBAAsB;AAE9C,mBAAK,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AAClC,qBAAK,SAAS,MAAM,CAAC,GAAG,QAAQ;cACpC;AAEG,mBAAK,OAAO,GAAG,YAAY,QAAQ;YACtC;UACA;UAEC,cAAc,SAAU,QAAQ;AAC/B,gBAAI,MAAM,KAAK,KAAK,QAAQ;AAE5B,gBAAI,CAAC,IAAI,UAAU;AAElB,kBAAI,SAAS,KAAK;AAClB,kBAAK,CAAC,IAAI,YAAY,OAAO,IAAI,OAAO,IAAI,KAAK,OAAO,IAAI,OAAO,IAAI,MAClE,CAAC,IAAI,YAAY,OAAO,IAAI,OAAO,IAAI,KAAK,OAAO,IAAI,OAAO,IAAI,IAAK;AAAE,uBAAO;cAAM;YAC9F;AAEE,gBAAI,CAAC,KAAK,QAAQ,QAAQ;AAAE,qBAAO;YAAK;AAGxC,gBAAI,aAAa,KAAK,oBAAoB,MAAM;AAChD,mBAAOqH,eAAa,KAAK,QAAQ,MAAM,EAAE,SAAS,UAAU;UAC9D;UAEC,cAAc,SAAU,KAAK;AAC5B,mBAAO,KAAK,oBAAoB,KAAK,iBAAiB,GAAG,CAAC;UAC5D;UAEC,mBAAmB,SAAU,QAAQ;AACpC,gBAAItD,OAAM,KAAK,MACX,WAAW,KAAK,YAAW,GAC3B,UAAU,OAAO,QAAQ,QAAQ,GACjC,UAAU,QAAQ,IAAI,QAAQ,GAC9B,KAAKA,KAAI,UAAU,SAAS,OAAO,CAAC,GACpC,KAAKA,KAAI,UAAU,SAAS,OAAO,CAAC;AACxC,mBAAO,CAAC,IAAI,EAAE;UAChB;;UAGC,qBAAqB,SAAU,QAAQ;AACtC,gBAAI,KAAK,KAAK,kBAAkB,MAAM,GAClC,SAAS,IAAI,aAAa,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;AAE1C,gBAAI,CAAC,KAAK,QAAQ,QAAQ;AACzB,uBAAS,KAAK,KAAK,iBAAiB,MAAM;YAC7C;AACE,mBAAO;UACT;;UAEC,kBAAkB,SAAU,QAAQ;AACnC,mBAAO,OAAO,IAAI,MAAM,OAAO,IAAI,MAAM,OAAO;UAClD;;UAGC,kBAAkB,SAAU,KAAK;AAChC,gBAAIiB,KAAI,IAAI,MAAM,GAAG,GACjB,SAAS,IAAIpF,OAAM,CAACoF,GAAE,CAAC,GAAG,CAACA,GAAE,CAAC,CAAC;AACnC,mBAAO,IAAI,CAACA,GAAE,CAAC;AACf,mBAAO;UACT;UAEC,aAAa,SAAU,KAAK;AAC3B,gBAAI,OAAO,KAAK,OAAO,GAAG;AAC1B,gBAAI,CAAC,MAAM;AAAE;YAAO;AAEpB/B,mBAAe,KAAK,EAAE;AAEtB,mBAAO,KAAK,OAAO,GAAG;AAItB,iBAAK,KAAK,cAAc;cACvB,MAAM,KAAK;cACX,QAAQ,KAAK,iBAAiB,GAAG;YACpC,CAAG;UACH;UAEC,WAAW,SAAU,MAAM;AAC1BV,YAAAA,UAAiB,MAAM,cAAc;AAErC,gBAAI,WAAW,KAAK,YAAW;AAC/B,iBAAK,MAAM,QAAQ,SAAS,IAAI;AAChC,iBAAK,MAAM,SAAS,SAAS,IAAI;AAEjC,iBAAK,gBAAgB/C;AACrB,iBAAK,cAAcA;AAGnB,gBAAI,QAAQ,SAAS,KAAK,QAAQ,UAAU,GAAG;AAC9CqG,yBAAmB,MAAM,KAAK,QAAQ,OAAO;YAChD;UACA;UAEC,UAAU,SAAU,QAAQ,WAAW;AACtC,gBAAI,UAAU,KAAK,YAAY,MAAM,GACjC,MAAM,KAAK,iBAAiB,MAAM;AAEtC,gBAAI,OAAO,KAAK,WAAW,KAAK,YAAY,MAAM,GAAGzD,KAAU,KAAK,YAAY,MAAM,MAAM,CAAC;AAE7F,iBAAK,UAAU,IAAI;AAInB,gBAAI,KAAK,WAAW,SAAS,GAAG;AAE/BL,+BAAsBK,KAAU,KAAK,YAAY,MAAM,QAAQ,MAAM,IAAI,CAAC;YAC7E;AAEEJ,wBAAoB,MAAM,OAAO;AAGjC,iBAAK,OAAO,GAAG,IAAI;cAClB,IAAI;cACJ;cACA,SAAS;YACZ;AAEE,sBAAU,YAAY,IAAI;AAG1B,iBAAK,KAAK,iBAAiB;cAC1B;cACA;YACH,CAAG;UACH;UAEC,YAAY,SAAU,QAAQ,KAAK,MAAM;AACxC,gBAAI,KAAK;AAGR,mBAAK,KAAK,aAAa;gBACtB,OAAO;gBACP;gBACA;cACJ,CAAI;YACJ;AAEE,gBAAI,MAAM,KAAK,iBAAiB,MAAM;AAEtC,mBAAO,KAAK,OAAO,GAAG;AACtB,gBAAI,CAAC,MAAM;AAAE;YAAO;AAEpB,iBAAK,SAAS,CAAC,oBAAI,KAAI;AACvB,gBAAI,KAAK,KAAK,eAAe;AAC5B6D,yBAAmB,KAAK,IAAI,CAAC;AAC7B5D,8BAAqB,KAAK,UAAU;AACpC,mBAAK,aAAaF,iBAAsB,KAAK,gBAAgB,IAAI;YACpE,OAAS;AACN,mBAAK,SAAS;AACd,mBAAK,YAAW;YACnB;AAEE,gBAAI,CAAC,KAAK;AACTQ,cAAAA,UAAiB,KAAK,IAAI,qBAAqB;AAI/C,mBAAK,KAAK,YAAY;gBACrB,MAAM,KAAK;gBACX;cACJ,CAAI;YACJ;AAEE,gBAAI,KAAK,eAAc,GAAI;AAC1B,mBAAK,WAAW;AAGhB,mBAAK,KAAK,MAAM;AAEhB,kBAAI,QAAQ,SAAS,CAAC,KAAK,KAAK,eAAe;AAC9CR,iCAAsB,KAAK,aAAa,IAAI;cAChD,OAAU;AAGN,2BAAWK,KAAU,KAAK,aAAa,IAAI,GAAG,GAAG;cACrD;YACA;UACA;UAEC,aAAa,SAAU,QAAQ;AAC9B,mBAAO,OAAO,QAAQ,KAAK,YAAW,CAAE,EAAE,SAAS,KAAK,OAAO,MAAM;UACvE;UAEC,aAAa,SAAU,QAAQ;AAC9B,gBAAI,YAAY,IAAIxC;cACnB,KAAK,SAASY,QAAa,OAAO,GAAG,KAAK,MAAM,IAAI,OAAO;cAC3D,KAAK,SAASA,QAAa,OAAO,GAAG,KAAK,MAAM,IAAI,OAAO;YAAC;AAC7D,sBAAU,IAAI,OAAO;AACrB,mBAAO;UACT;UAEC,sBAAsB,SAAU,QAAQ;AACvC,gBAAI,WAAW,KAAK,YAAW;AAC/B,mBAAO,IAAI;cACV,OAAO,IAAI,UAAU,QAAQ,EAAE,MAAK;cACpC,OAAO,IAAI,UAAU,QAAQ,EAAE,KAAI,EAAG,SAAS,CAAC,GAAG,CAAC,CAAC;YAAC;UACzD;UAEC,gBAAgB,WAAY;AAC3B,qBAAS,OAAO,KAAK,QAAQ;AAC5B,kBAAI,CAAC,KAAK,OAAO,GAAG,EAAE,QAAQ;AAAE,uBAAO;cAAM;YAChD;AACE,mBAAO;UACT;QACA,CAAC;AAIM,iBAAS,UAAU9B,UAAS;AAClC,iBAAO,IAAI,UAAUA,QAAO;QAC7B;ACp3BU,YAAC4I,aAAY,UAAU,OAAO;;;UAIvC,SAAS;;;YAGR,SAAS;;;YAIT,SAAS;;;YAIT,YAAY;;;YAIZ,cAAc;;;YAId,YAAY;;;YAIZ,KAAK;;;YAIL,aAAa;;;YAIb,cAAc;;;;;YAMd,aAAa;;;;;;;YAQb,gBAAgB;UAClB;UAEC,YAAY,SAAU,KAAK5I,UAAS;AAEnC,iBAAK,OAAO;AAEZ,YAAAA,WAAUO,WAAgB,MAAMP,QAAO;AAGvC,gBAAIA,SAAQ,gBAAgB,QAAQ,UAAUA,SAAQ,UAAU,GAAG;AAElE,cAAAA,SAAQ,WAAW,KAAK,MAAMA,SAAQ,WAAW,CAAC;AAElD,kBAAI,CAACA,SAAQ,aAAa;AACzB,gBAAAA,SAAQ;AACR,gBAAAA,SAAQ,UAAU,KAAK,IAAIA,SAAQ,SAASA,SAAQ,UAAU,CAAC;cACnE,OAAU;AACN,gBAAAA,SAAQ;AACR,gBAAAA,SAAQ,UAAU,KAAK,IAAIA,SAAQ,SAASA,SAAQ,UAAU,CAAC;cACnE;AAEG,cAAAA,SAAQ,UAAU,KAAK,IAAI,GAAGA,SAAQ,OAAO;YAChD,WAAa,CAACA,SAAQ,aAAa;AAEhC,cAAAA,SAAQ,UAAU,KAAK,IAAIA,SAAQ,SAASA,SAAQ,OAAO;YAC9D,OAAS;AAEN,cAAAA,SAAQ,UAAU,KAAK,IAAIA,SAAQ,SAASA,SAAQ,OAAO;YAC9D;AAEE,gBAAI,OAAOA,SAAQ,eAAe,UAAU;AAC3C,cAAAA,SAAQ,aAAaA,SAAQ,WAAW,MAAM,EAAE;YACnD;AAEE,iBAAK,GAAG,cAAc,KAAK,aAAa;UAC1C;;;;;UAMC,QAAQ,SAAU,KAAK,UAAU;AAChC,gBAAI,KAAK,SAAS,OAAO,aAAa,QAAW;AAChD,yBAAW;YACd;AAEE,iBAAK,OAAO;AAEZ,gBAAI,CAAC,UAAU;AACd,mBAAK,OAAM;YACd;AACE,mBAAO;UACT;;;;;UAMC,YAAY,SAAU,QAAQ,MAAM;AACnC,gBAAI,OAAO,SAAS,cAAc,KAAK;AAEvC+C,eAAY,MAAM,QAAQW,KAAU,KAAK,aAAa,MAAM,MAAM,IAAI,CAAC;AACvEX,eAAY,MAAM,SAASW,KAAU,KAAK,cAAc,MAAM,MAAM,IAAI,CAAC;AAEzE,gBAAI,KAAK,QAAQ,eAAe,KAAK,QAAQ,gBAAgB,IAAI;AAChE,mBAAK,cAAc,KAAK,QAAQ,gBAAgB,OAAO,KAAK,KAAK,QAAQ;YAC5E;AAIE,gBAAI,OAAO,KAAK,QAAQ,mBAAmB,UAAU;AACpD,mBAAK,iBAAiB,KAAK,QAAQ;YACtC;AAME,iBAAK,MAAM;AAEX,iBAAK,MAAM,KAAK,WAAW,MAAM;AAEjC,mBAAO;UACT;;;;;;;UAQC,YAAY,SAAU,QAAQ;AAC7B,gBAAIzD,QAAO;cACV,GAAG,QAAQ,SAAS,QAAQ;cAC5B,GAAG,KAAK,cAAc,MAAM;cAC5B,GAAG,OAAO;cACV,GAAG,OAAO;cACV,GAAG,KAAK,eAAc;YACzB;AACE,gBAAI,KAAK,QAAQ,CAAC,KAAK,KAAK,QAAQ,IAAI,UAAU;AACjD,kBAAI,YAAY,KAAK,iBAAiB,IAAI,IAAI,OAAO;AACrD,kBAAI,KAAK,QAAQ,KAAK;AACrB,gBAAAA,MAAK,GAAG,IAAI;cAChB;AACG,cAAAA,MAAK,IAAI,IAAI;YAChB;AAEE,mBAAO4I,SAAc,KAAK,MAAMpI,QAAYR,OAAM,KAAK,OAAO,CAAC;UACjE;UAEC,aAAa,SAAU,MAAM,MAAM;AAElC,gBAAI,QAAQ,OAAO;AAClB,yBAAWyD,KAAU,MAAM,MAAM,MAAM,IAAI,GAAG,CAAC;YAClD,OAAS;AACN,mBAAK,MAAM,IAAI;YAClB;UACA;UAEC,cAAc,SAAU,MAAM,MAAMzC,IAAG;AACtC,gBAAI,WAAW,KAAK,QAAQ;AAC5B,gBAAI,YAAY,KAAK,aAAa,KAAK,MAAM,UAAU;AACtD,mBAAK,MAAM;YACd;AACE,iBAAKA,IAAG,IAAI;UACd;UAEC,eAAe,SAAUA,IAAG;AAC3B,YAAAA,GAAE,KAAK,SAAS;UAClB;UAEC,gBAAgB,WAAY;AAC3B,gBAAIU,QAAO,KAAK,WAChB,UAAU,KAAK,QAAQ,SACvB,cAAc,KAAK,QAAQ,aAC3B,aAAa,KAAK,QAAQ;AAE1B,gBAAI,aAAa;AAChB,cAAAA,QAAO,UAAUA;YACpB;AAEE,mBAAOA,QAAO;UAChB;UAEC,eAAe,SAAU,WAAW;AACnC,gBAAIZ,SAAQ,KAAK,IAAI,UAAU,IAAI,UAAU,CAAC,IAAI,KAAK,QAAQ,WAAW;AAC1E,mBAAO,KAAK,QAAQ,WAAWA,MAAK;UACtC;;UAGC,eAAe,WAAY;AAC1B,gBAAI,GAAG;AACP,iBAAK,KAAK,KAAK,QAAQ;AACtB,kBAAI,KAAK,OAAO,CAAC,EAAE,OAAO,MAAM,KAAK,WAAW;AAC/C,uBAAO,KAAK,OAAO,CAAC,EAAE;AAEtB,qBAAK,SAASD;AACd,qBAAK,UAAUA;AAEf,oBAAI,CAAC,KAAK,UAAU;AACnB,uBAAK,MAAMgI;AACX,sBAAI,SAAS,KAAK,OAAO,CAAC,EAAE;AAC5BvE,yBAAe,IAAI;AACnB,yBAAO,KAAK,OAAO,CAAC;AAGpB,uBAAK,KAAK,aAAa;oBACtB;oBACA;kBACN,CAAM;gBACN;cACA;YACA;UACA;UAEC,aAAa,SAAU,KAAK;AAC3B,gBAAI,OAAO,KAAK,OAAO,GAAG;AAC1B,gBAAI,CAAC,MAAM;AAAE;YAAO;AAGpB,iBAAK,GAAG,aAAa,OAAOuE,aAAkB;AAE9C,mBAAO,UAAU,UAAU,YAAY,KAAK,MAAM,GAAG;UACvD;UAEC,YAAY,SAAU,QAAQ,KAAK,MAAM;AACxC,gBAAI,CAAC,KAAK,QAAS,QAAQ,KAAK,aAAa,KAAK,MAAMA,eAAqB;AAC5E;YACH;AAEE,mBAAO,UAAU,UAAU,WAAW,KAAK,MAAM,QAAQ,KAAK,IAAI;UACpE;QACA,CAAC;AAMM,iBAAS,UAAU,KAAK9I,UAAS;AACvC,iBAAO,IAAI4I,WAAU,KAAK5I,QAAO;QAClC;ACxQO,YAAI,eAAe4I,WAAU,OAAO;;;;;;UAO1C,kBAAkB;YACjB,SAAS;YACT,SAAS;;;YAIT,QAAQ;;;YAIR,QAAQ;;;YAIR,QAAQ;;;YAIR,aAAa;;;YAIb,SAAS;UACX;UAEC,SAAS;;;;YAIR,KAAK;;;YAIL,WAAW;UACb;UAEC,YAAY,SAAU,KAAK5I,UAAS;AAEnC,iBAAK,OAAO;AAEZ,gBAAI,YAAYX,QAAO,CAAA,GAAI,KAAK,gBAAgB;AAGhD,qBAAS,KAAKW,UAAS;AACtB,kBAAI,EAAE,KAAK,KAAK,UAAU;AACzB,0BAAU,CAAC,IAAIA,SAAQ,CAAC;cAC5B;YACA;AAEE,YAAAA,WAAU,WAAW,MAAMA,QAAO;AAElC,gBAAI,aAAaA,SAAQ,gBAAgB,QAAQ,SAAS,IAAI;AAC9D,gBAAI,WAAW,KAAK,YAAW;AAC/B,sBAAU,QAAQ,SAAS,IAAI;AAC/B,sBAAU,SAAS,SAAS,IAAI;AAEhC,iBAAK,YAAY;UACnB;UAEC,OAAO,SAAUqF,MAAK;AAErB,iBAAK,OAAO,KAAK,QAAQ,OAAOA,KAAI,QAAQ;AAC5C,iBAAK,cAAc,WAAW,KAAK,UAAU,OAAO;AAEpD,gBAAI,gBAAgB,KAAK,eAAe,MAAM,QAAQ;AACtD,iBAAK,UAAU,aAAa,IAAI,KAAK,KAAK;AAE1C,YAAAuD,WAAU,UAAU,MAAM,KAAK,MAAMvD,IAAG;UAC1C;UAEC,YAAY,SAAU,QAAQ;AAE7B,gBAAI,aAAa,KAAK,kBAAkB,MAAM,GAC1C,MAAM,KAAK,MACX,SAAS,SAAS,IAAI,QAAQ,WAAW,CAAC,CAAC,GAAG,IAAI,QAAQ,WAAW,CAAC,CAAC,CAAC,GACxEzF,OAAM,OAAO,KACbD,OAAM,OAAO,KACb,QAAQ,KAAK,eAAe,OAAO,KAAK,SAAS,WACjD,CAACC,KAAI,GAAGA,KAAI,GAAGD,KAAI,GAAGA,KAAI,CAAC,IAC3B,CAACC,KAAI,GAAGA,KAAI,GAAGD,KAAI,GAAGA,KAAI,CAAC,GAAG,KAAK,GAAG,GACtC,MAAMiJ,WAAU,UAAU,WAAW,KAAK,MAAM,MAAM;AAC1D,mBAAO,MACN,eAAe,KAAK,WAAW,KAAK,KAAK,QAAQ,SAAS,KACzD,KAAK,QAAQ,YAAY,WAAW,YAAY;UACpD;;;UAIC,WAAW,SAAU,QAAQ,UAAU;AAEtC,YAAAvJ,QAAO,KAAK,WAAW,MAAM;AAE7B,gBAAI,CAAC,UAAU;AACd,mBAAK,OAAM;YACd;AAEE,mBAAO;UACT;QACA,CAAC;AAKM,iBAAS,aAAa,KAAKW,UAAS;AAC1C,iBAAO,IAAI,aAAa,KAAKA,QAAO;QACrC;ACrIA,QAAA4I,WAAU,MAAM;AAChB,kBAAU,MAAM;ACwBN,YAAC,WAAW,MAAM,OAAO;;;UAIlC,SAAS;;;;YAIR,SAAS;UACX;UAEC,YAAY,SAAU5I,UAAS;AAC9BO,uBAAgB,MAAMP,QAAO;AAC7BgB,kBAAW,IAAI;AACf,iBAAK,UAAU,KAAK,WAAW,CAAA;UACjC;UAEC,OAAO,WAAY;AAClB,gBAAI,CAAC,KAAK,YAAY;AACrB,mBAAK,eAAc;AAGnB6C,cAAAA,UAAiB,KAAK,YAAY,uBAAuB;YAC5D;AAEE,iBAAK,QAAO,EAAG,YAAY,KAAK,UAAU;AAC1C,iBAAK,QAAO;AACZ,iBAAK,GAAG,UAAU,KAAK,cAAc,IAAI;UAC3C;UAEC,UAAU,WAAY;AACrB,iBAAK,IAAI,UAAU,KAAK,cAAc,IAAI;AAC1C,iBAAK,kBAAiB;UACxB;UAEC,WAAW,WAAY;AACtB,gBAAI,SAAS;cACZ,WAAW,KAAK;cAChB,MAAM,KAAK;cACX,SAAS,KAAK;cACd,SAAS,KAAK;YACjB;AACE,gBAAI,KAAK,eAAe;AACvB,qBAAO,WAAW,KAAK;YAC1B;AACE,mBAAO;UACT;UAEC,aAAa,SAAU,IAAI;AAC1B,iBAAK,iBAAiB,GAAG,QAAQ,GAAG,IAAI;UAC1C;UAEC,SAAS,WAAY;AACpB,iBAAK,iBAAiB,KAAK,KAAK,UAAS,GAAI,KAAK,KAAK,QAAO,CAAE;UAClE;UAEC,kBAAkB,SAAU,QAAQlC,OAAM;AACzC,gBAAIC,SAAQ,KAAK,KAAK,aAAaD,OAAM,KAAK,KAAK,GAC/C,WAAW,KAAK,KAAK,QAAO,EAAG,WAAW,MAAM,KAAK,QAAQ,OAAO,GACpE,qBAAqB,KAAK,KAAK,QAAQ,KAAK,SAASA,KAAI,GAEzD,gBAAgB,SAAS,WAAW,CAACC,MAAK,EAAE,IAAI,kBAAkB,EACjE,SAAS,KAAK,KAAK,mBAAmB,QAAQD,KAAI,CAAC;AAExD,gBAAI,QAAQ,OAAO;AAClBwD,2BAAqB,KAAK,YAAY,eAAevD,MAAK;YAC7D,OAAS;AACN0B,0BAAoB,KAAK,YAAY,aAAa;YACrD;UACA;UAEC,QAAQ,WAAY;AACnB,iBAAK,QAAO;AACZ,iBAAK,iBAAiB,KAAK,SAAS,KAAK,KAAK;AAE9C,qBAAShD,QAAM,KAAK,SAAS;AAC5B,mBAAK,QAAQA,IAAE,EAAE,OAAM;YAC1B;UACA;UAEC,YAAY,WAAY;AACvB,qBAASA,QAAM,KAAK,SAAS;AAC5B,mBAAK,QAAQA,IAAE,EAAE,SAAQ;YAC5B;UACA;UAEC,cAAc,WAAY;AACzB,qBAASA,QAAM,KAAK,SAAS;AAC5B,mBAAK,QAAQA,IAAE,EAAE,QAAO;YAC3B;UACA;UAEC,SAAS,WAAY;AAGpB,gBAAI,IAAI,KAAK,QAAQ,SACjByD,QAAO,KAAK,KAAK,QAAO,GACxBnE,OAAM,KAAK,KAAK,2BAA2BmE,MAAK,WAAW,CAAC,CAAC,CAAC,EAAE,MAAK;AAEzE,iBAAK,UAAU,IAAI,OAAOnE,MAAKA,KAAI,IAAImE,MAAK,WAAW,IAAI,IAAI,CAAC,CAAC,EAAE,MAAK,CAAE;AAE1E,iBAAK,UAAU,KAAK,KAAK,UAAS;AAClC,iBAAK,QAAQ,KAAK,KAAK,QAAO;UAChC;QACA,CAAC;AC7FS,YAAC,SAAS,SAAS,OAAO;;;UAInC,SAAS;;;YAGR,WAAW;UACb;UAEC,WAAW,WAAY;AACtB,gBAAI,SAAS,SAAS,UAAU,UAAU,KAAK,IAAI;AACnD,mBAAO,eAAe,KAAK;AAC3B,mBAAO;UACT;UAEC,iBAAiB,WAAY;AAE5B,iBAAK,uBAAuB;UAC9B;UAEC,OAAO,WAAY;AAClB,qBAAS,UAAU,MAAM,KAAK,IAAI;AAIlC,iBAAK,MAAK;UACZ;UAEC,gBAAgB,WAAY;AAC3B,gBAAI,YAAY,KAAK,aAAa,SAAS,cAAc,QAAQ;AAEjEhB,eAAY,WAAW,aAAa,KAAK,cAAc,IAAI;AAC3DA,eAAY,WAAW,gDAAgD,KAAK,UAAU,IAAI;AAC1FA,eAAY,WAAW,YAAY,KAAK,iBAAiB,IAAI;AAC7D,sBAAU,yBAAyB,IAAI;AAEvC,iBAAK,OAAO,UAAU,WAAW,IAAI;UACvC;UAEC,mBAAmB,WAAY;AAC9BQ,4BAAqB,KAAK,cAAc;AACxC,mBAAO,KAAK;AACZgB,mBAAe,KAAK,UAAU;AAC9BvB,gBAAa,KAAK,UAAU;AAC5B,mBAAO,KAAK;UACd;UAEC,cAAc,WAAY;AACzB,gBAAI,KAAK,sBAAsB;AAAE;YAAO;AAExC,gBAAI;AACJ,iBAAK,gBAAgB;AACrB,qBAAS1C,QAAM,KAAK,SAAS;AAC5B,sBAAQ,KAAK,QAAQA,IAAE;AACvB,oBAAM,QAAO;YAChB;AACE,iBAAK,QAAO;UACd;UAEC,SAAS,WAAY;AACpB,gBAAI,KAAK,KAAK,kBAAkB,KAAK,SAAS;AAAE;YAAO;AAEvD,qBAAS,UAAU,QAAQ,KAAK,IAAI;AAEpC,gBAAI,IAAI,KAAK,SACT,YAAY,KAAK,YACjByD,QAAO,EAAE,QAAO,GAChB,IAAI,QAAQ,SAAS,IAAI;AAE7BT,wBAAoB,WAAW,EAAE,GAAG;AAGpC,sBAAU,QAAQ,IAAIS,MAAK;AAC3B,sBAAU,SAAS,IAAIA,MAAK;AAC5B,sBAAU,MAAM,QAAQA,MAAK,IAAI;AACjC,sBAAU,MAAM,SAASA,MAAK,IAAI;AAElC,gBAAI,QAAQ,QAAQ;AACnB,mBAAK,KAAK,MAAM,GAAG,CAAC;YACvB;AAGE,iBAAK,KAAK,UAAU,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,CAAC;AAGtC,iBAAK,KAAK,QAAQ;UACpB;UAEC,QAAQ,WAAY;AACnB,qBAAS,UAAU,OAAO,KAAK,IAAI;AAEnC,gBAAI,KAAK,sBAAsB;AAC9B,mBAAK,uBAAuB;AAC5B,mBAAK,aAAY;YACpB;UACA;UAEC,WAAW,SAAU,OAAO;AAC3B,iBAAK,iBAAiB,KAAK;AAC3B,iBAAK,QAAQ/C,MAAW,KAAK,CAAC,IAAI;AAElC,gBAAI,QAAQ,MAAM,SAAS;cAC1B;cACA,MAAM,KAAK;cACX,MAAM;YACT;AACE,gBAAI,KAAK,WAAW;AAAE,mBAAK,UAAU,OAAO;YAAM;AAClD,iBAAK,YAAY;AACjB,iBAAK,aAAa,KAAK,cAAc,KAAK;UAC5C;UAEC,UAAU,SAAU,OAAO;AAC1B,iBAAK,eAAe,KAAK;UAC3B;UAEC,aAAa,SAAU,OAAO;AAC7B,gBAAI,QAAQ,MAAM;AAClB,gBAAI+H,QAAO,MAAM;AACjB,gBAAIpC,QAAO,MAAM;AAEjB,gBAAIoC,OAAM;AACT,cAAAA,MAAK,OAAOpC;YACf,OAAS;AACN,mBAAK,YAAYA;YACpB;AACE,gBAAIA,OAAM;AACT,cAAAA,MAAK,OAAOoC;YACf,OAAS;AACN,mBAAK,aAAaA;YACrB;AAEE,mBAAO,MAAM;AAEb,mBAAO,KAAK,QAAQ/H,MAAW,KAAK,CAAC;AAErC,iBAAK,eAAe,KAAK;UAC3B;UAEC,aAAa,SAAU,OAAO;AAG7B,iBAAK,oBAAoB,KAAK;AAC9B,kBAAM,SAAQ;AACd,kBAAM,QAAO;AAGb,iBAAK,eAAe,KAAK;UAC3B;UAEC,cAAc,SAAU,OAAO;AAC9B,iBAAK,iBAAiB,KAAK;AAC3B,iBAAK,eAAe,KAAK;UAC3B;UAEC,kBAAkB,SAAU,OAAO;AAClC,gBAAI,OAAO,MAAM,QAAQ,cAAc,UAAU;AAChD,kBAAI,QAAQ,MAAM,QAAQ,UAAU,MAAM,OAAO,GAC7C,YAAY,CAAA,GACZ,WACA;AACJ,mBAAK,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AAClC,4BAAY,OAAO,MAAM,CAAC,CAAC;AAE3B,oBAAI,MAAM,SAAS,GAAG;AAAE;gBAAO;AAC/B,0BAAU,KAAK,SAAS;cAC5B;AACG,oBAAM,QAAQ,aAAa;YAC9B,OAAS;AACN,oBAAM,QAAQ,aAAa,MAAM,QAAQ;YAC5C;UACA;UAEC,gBAAgB,SAAU,OAAO;AAChC,gBAAI,CAAC,KAAK,MAAM;AAAE;YAAO;AAEzB,iBAAK,oBAAoB,KAAK;AAC9B,iBAAK,iBAAiB,KAAK,kBAAkBqC,iBAAsB,KAAK,SAAS,IAAI;UACvF;UAEC,qBAAqB,SAAU,OAAO;AACrC,gBAAI,MAAM,WAAW;AACpB,kBAAIoB,YAAW,MAAM,QAAQ,UAAU,KAAK;AAC5C,mBAAK,gBAAgB,KAAK,iBAAiB,IAAI,OAAM;AACrD,mBAAK,cAAc,OAAO,MAAM,UAAU,IAAI,SAAS,CAACA,UAASA,QAAO,CAAC,CAAC;AAC1E,mBAAK,cAAc,OAAO,MAAM,UAAU,IAAI,IAAI,CAACA,UAASA,QAAO,CAAC,CAAC;YACxE;UACA;UAEC,SAAS,WAAY;AACpB,iBAAK,iBAAiB;AAEtB,gBAAI,KAAK,eAAe;AACvB,mBAAK,cAAc,IAAI,OAAM;AAC7B,mBAAK,cAAc,IAAI,MAAK;YAC/B;AAEE,iBAAK,OAAM;AACX,iBAAK,MAAK;AAEV,iBAAK,gBAAgB;UACvB;UAEC,QAAQ,WAAY;AACnB,gBAAI,SAAS,KAAK;AAClB,gBAAI,QAAQ;AACX,kBAAIV,QAAO,OAAO,QAAO;AACzB,mBAAK,KAAK,UAAU,OAAO,IAAI,GAAG,OAAO,IAAI,GAAGA,MAAK,GAAGA,MAAK,CAAC;YACjE,OAAS;AACN,mBAAK,KAAK,KAAI;AACd,mBAAK,KAAK,aAAa,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AACvC,mBAAK,KAAK,UAAU,GAAG,GAAG,KAAK,WAAW,OAAO,KAAK,WAAW,MAAM;AACvE,mBAAK,KAAK,QAAO;YACpB;UACA;UAEC,OAAO,WAAY;AAClB,gBAAI,OAAO,SAAS,KAAK;AACzB,iBAAK,KAAK,KAAI;AACd,gBAAI,QAAQ;AACX,kBAAIA,QAAO,OAAO,QAAO;AACzB,mBAAK,KAAK,UAAS;AACnB,mBAAK,KAAK,KAAK,OAAO,IAAI,GAAG,OAAO,IAAI,GAAGA,MAAK,GAAGA,MAAK,CAAC;AACzD,mBAAK,KAAK,KAAI;YACjB;AAEE,iBAAK,WAAW;AAEhB,qBAAS,QAAQ,KAAK,YAAY,OAAO,QAAQ,MAAM,MAAM;AAC5D,sBAAQ,MAAM;AACd,kBAAI,CAAC,UAAW,MAAM,aAAa,MAAM,UAAU,WAAW,MAAM,GAAI;AACvE,sBAAM,YAAW;cACrB;YACA;AAEE,iBAAK,WAAW;AAEhB,iBAAK,KAAK,QAAO;UACnB;UAEC,aAAa,SAAU,OAAO,QAAQ;AACrC,gBAAI,CAAC,KAAK,UAAU;AAAE;YAAO;AAE7B,gBAAI,GAAG,GAAG,MAAM,GACZ,QAAQ,MAAM,QACd,MAAM,MAAM,QACZ,MAAM,KAAK;AAEf,gBAAI,CAAC,KAAK;AAAE;YAAO;AAEnB,gBAAI,UAAS;AAEb,iBAAK,IAAI,GAAG,IAAI,KAAK,KAAK;AACzB,mBAAK,IAAI,GAAG,OAAO,MAAM,CAAC,EAAE,QAAQ,IAAI,MAAM,KAAK;AAClD,oBAAI,MAAM,CAAC,EAAE,CAAC;AACd,oBAAI,IAAI,WAAW,QAAQ,EAAE,EAAE,GAAG,EAAE,CAAC;cACzC;AACG,kBAAI,QAAQ;AACX,oBAAI,UAAS;cACjB;YACA;AAEE,iBAAK,YAAY,KAAK,KAAK;UAG7B;UAEC,eAAe,SAAU,OAAO;AAE/B,gBAAI,CAAC,KAAK,YAAY,MAAM,OAAM,GAAI;AAAE;YAAO;AAE/C,gBAAI,IAAI,MAAM,QACV,MAAM,KAAK,MACXC,KAAI,KAAK,IAAI,KAAK,MAAM,MAAM,OAAO,GAAG,CAAC,GACzCnC,MAAK,KAAK,IAAI,KAAK,MAAM,MAAM,QAAQ,GAAG,CAAC,KAAKmC,MAAKA;AAEzD,gBAAInC,OAAM,GAAG;AACZ,kBAAI,KAAI;AACR,kBAAI,MAAM,GAAGA,EAAC;YACjB;AAEE,gBAAI,UAAS;AACb,gBAAI,IAAI,EAAE,GAAG,EAAE,IAAIA,IAAGmC,IAAG,GAAG,KAAK,KAAK,GAAG,KAAK;AAE9C,gBAAInC,OAAM,GAAG;AACZ,kBAAI,QAAO;YACd;AAEE,iBAAK,YAAY,KAAK,KAAK;UAC7B;UAEC,aAAa,SAAU,KAAK,OAAO;AAClC,gBAAI7B,WAAU,MAAM;AAEpB,gBAAIA,SAAQ,MAAM;AACjB,kBAAI,cAAcA,SAAQ;AAC1B,kBAAI,YAAYA,SAAQ,aAAaA,SAAQ;AAC7C,kBAAI,KAAKA,SAAQ,YAAY,SAAS;YACzC;AAEE,gBAAIA,SAAQ,UAAUA,SAAQ,WAAW,GAAG;AAC3C,kBAAI,IAAI,aAAa;AACpB,oBAAI,YAAY,MAAM,WAAW,MAAM,QAAQ,cAAc,CAAA,CAAE;cACnE;AACG,kBAAI,cAAcA,SAAQ;AAC1B,kBAAI,YAAYA,SAAQ;AACxB,kBAAI,cAAcA,SAAQ;AAC1B,kBAAI,UAAUA,SAAQ;AACtB,kBAAI,WAAWA,SAAQ;AACvB,kBAAI,OAAM;YACb;UACA;;;UAKC,UAAU,SAAUiB,IAAG;AACtB,gBAAII,SAAQ,KAAK,KAAK,uBAAuBJ,EAAC,GAAG,OAAO;AAExD,qBAAS,QAAQ,KAAK,YAAY,OAAO,QAAQ,MAAM,MAAM;AAC5D,sBAAQ,MAAM;AACd,kBAAI,MAAM,QAAQ,eAAe,MAAM,eAAeI,MAAK,GAAG;AAC7D,oBAAI,EAAEJ,GAAE,SAAS,WAAWA,GAAE,SAAS,eAAe,CAAC,KAAK,KAAK,gBAAgB,KAAK,GAAG;AACxF,iCAAe;gBACpB;cACA;YACA;AACE,iBAAK,WAAW,eAAe,CAAC,YAAY,IAAI,OAAOA,EAAC;UAC1D;UAEC,cAAc,SAAUA,IAAG;AAC1B,gBAAI,CAAC,KAAK,QAAQ,KAAK,KAAK,SAAS,OAAM,KAAM,KAAK,KAAK,gBAAgB;AAAE;YAAO;AAEpF,gBAAII,SAAQ,KAAK,KAAK,uBAAuBJ,EAAC;AAC9C,iBAAK,kBAAkBA,IAAGI,MAAK;UACjC;UAGC,iBAAiB,SAAUJ,IAAG;AAC7B,gBAAI,QAAQ,KAAK;AACjB,gBAAI,OAAO;AAEVgE,cAAAA,aAAoB,KAAK,YAAY,qBAAqB;AAC1D,mBAAK,WAAW,CAAC,KAAK,GAAGhE,IAAG,UAAU;AACtC,mBAAK,gBAAgB;AACrB,mBAAK,uBAAuB;YAC/B;UACA;UAEC,mBAAmB,SAAUA,IAAGI,QAAO;AACtC,gBAAI,KAAK,sBAAsB;AAC9B;YACH;AAEE,gBAAI,OAAO;AAEX,qBAAS,QAAQ,KAAK,YAAY,OAAO,QAAQ,MAAM,MAAM;AAC5D,sBAAQ,MAAM;AACd,kBAAI,MAAM,QAAQ,eAAe,MAAM,eAAeA,MAAK,GAAG;AAC7D,wCAAwB;cAC5B;YACA;AAEE,gBAAI,0BAA0B,KAAK,eAAe;AACjD,mBAAK,gBAAgBJ,EAAC;AAEtB,kBAAI,uBAAuB;AAC1B4C,gBAAAA,UAAiB,KAAK,YAAY,qBAAqB;AACvD,qBAAK,WAAW,CAAC,qBAAqB,GAAG5C,IAAG,WAAW;AACvD,qBAAK,gBAAgB;cACzB;YACA;AAEE,iBAAK,WAAW,KAAK,gBAAgB,CAAC,KAAK,aAAa,IAAI,OAAOA,EAAC;AAEpE,iBAAK,uBAAuB;AAC5B,uBAAWyC,KAAU,WAAY;AAChC,mBAAK,uBAAuB;YAC/B,GAAK,IAAI,GAAG,EAAE;UACd;UAEC,YAAY,SAAUkD,SAAQ3F,IAAG,MAAM;AACtC,iBAAK,KAAK,cAAcA,IAAG,QAAQA,GAAE,MAAM2F,OAAM;UACnD;UAEC,eAAe,SAAU,OAAO;AAC/B,gBAAI,QAAQ,MAAM;AAElB,gBAAI,CAAC,OAAO;AAAE;YAAO;AAErB,gBAAImC,QAAO,MAAM;AACjB,gBAAIpC,QAAO,MAAM;AAEjB,gBAAIoC,OAAM;AACT,cAAAA,MAAK,OAAOpC;YACf,OAAS;AAEN;YACH;AACE,gBAAIA,OAAM;AACT,cAAAA,MAAK,OAAOoC;YACf,WAAaA,OAAM;AAGhB,mBAAK,aAAaA;YACrB;AAEE,kBAAM,OAAO,KAAK;AAClB,iBAAK,UAAU,OAAO;AAEtB,kBAAM,OAAO;AACb,iBAAK,YAAY;AAEjB,iBAAK,eAAe,KAAK;UAC3B;UAEC,cAAc,SAAU,OAAO;AAC9B,gBAAI,QAAQ,MAAM;AAElB,gBAAI,CAAC,OAAO;AAAE;YAAO;AAErB,gBAAIA,QAAO,MAAM;AACjB,gBAAIpC,QAAO,MAAM;AAEjB,gBAAIA,OAAM;AACT,cAAAA,MAAK,OAAOoC;YACf,OAAS;AAEN;YACH;AACE,gBAAIA,OAAM;AACT,cAAAA,MAAK,OAAOpC;YACf,WAAaA,OAAM;AAGhB,mBAAK,YAAYA;YACpB;AAEE,kBAAM,OAAO;AAEb,kBAAM,OAAO,KAAK;AAClB,iBAAK,WAAW,OAAO;AACvB,iBAAK,aAAa;AAElB,iBAAK,eAAe,KAAK;UAC3B;QACA,CAAC;AAIM,iBAAS,OAAO3G,UAAS;AAC/B,iBAAO,QAAQ,SAAS,IAAI,OAAOA,QAAO,IAAI;QAC/C;ACleO,YAAI,YAAa,WAAY;AACnC,cAAI;AACH,qBAAS,WAAW,IAAI,QAAQ,+BAA+B;AAC/D,mBAAO,SAAUK,OAAM;AACtB,qBAAO,SAAS,cAAc,WAAWA,QAAO,gBAAgB;YACnE;UACA,SAAUY,IAAG;UAGb;AACC,iBAAO,SAAUZ,OAAM;AACtB,mBAAO,SAAS,cAAc,MAAMA,QAAO,sDAAsD;UACnG;QACA,EAAC;AAYM,YAAI,WAAW;UAErB,gBAAgB,WAAY;AAC3B,iBAAK,aAAamE,SAAe,OAAO,uBAAuB;UACjE;UAEC,SAAS,WAAY;AACpB,gBAAI,KAAK,KAAK,gBAAgB;AAAE;YAAO;AACvC,qBAAS,UAAU,QAAQ,KAAK,IAAI;AACpC,iBAAK,KAAK,QAAQ;UACpB;UAEC,WAAW,SAAU,OAAO;AAC3B,gBAAI,YAAY,MAAM,aAAa,UAAU,OAAO;AAEpDX,YAAAA,UAAiB,WAAW,wBAAwB,KAAK,QAAQ,aAAa,GAAG;AAEjF,sBAAU,YAAY;AAEtB,kBAAM,QAAQ,UAAU,MAAM;AAC9B,sBAAU,YAAY,MAAM,KAAK;AAEjC,iBAAK,aAAa,KAAK;AACvB,iBAAK,QAAQ7C,MAAW,KAAK,CAAC,IAAI;UACpC;UAEC,UAAU,SAAU,OAAO;AAC1B,gBAAI,YAAY,MAAM;AACtB,iBAAK,WAAW,YAAY,SAAS;AAErC,gBAAI,MAAM,QAAQ,aAAa;AAC9B,oBAAM,qBAAqB,SAAS;YACvC;UACA;UAEC,aAAa,SAAU,OAAO;AAC7B,gBAAI,YAAY,MAAM;AACtBuD,mBAAe,SAAS;AACxB,kBAAM,wBAAwB,SAAS;AACvC,mBAAO,KAAK,QAAQvD,MAAW,KAAK,CAAC;UACvC;UAEC,cAAc,SAAU,OAAO;AAC9B,gBAAI,SAAS,MAAM,SACf,OAAO,MAAM,OACbhB,WAAU,MAAM,SAChB,YAAY,MAAM;AAEtB,sBAAU,UAAU,CAAC,CAACA,SAAQ;AAC9B,sBAAU,SAAS,CAAC,CAACA,SAAQ;AAE7B,gBAAIA,SAAQ,QAAQ;AACnB,kBAAI,CAAC,QAAQ;AACZ,yBAAS,MAAM,UAAU,UAAU,QAAQ;cAC/C;AACG,wBAAU,YAAY,MAAM;AAC5B,qBAAO,SAASA,SAAQ,SAAS;AACjC,qBAAO,QAAQA,SAAQ;AACvB,qBAAO,UAAUA,SAAQ;AAEzB,kBAAIA,SAAQ,WAAW;AACtB,uBAAO,YAAYY,SAAaZ,SAAQ,SAAS,IAC7CA,SAAQ,UAAU,KAAK,GAAG,IAC1BA,SAAQ,UAAU,QAAQ,YAAY,GAAG;cACjD,OAAU;AACN,uBAAO,YAAY;cACvB;AACG,qBAAO,SAASA,SAAQ,QAAQ,QAAQ,QAAQ,MAAM;AACtD,qBAAO,YAAYA,SAAQ;YAE9B,WAAa,QAAQ;AAClB,wBAAU,YAAY,MAAM;AAC5B,oBAAM,UAAU;YACnB;AAEE,gBAAIA,SAAQ,MAAM;AACjB,kBAAI,CAAC,MAAM;AACV,uBAAO,MAAM,QAAQ,UAAU,MAAM;cACzC;AACG,wBAAU,YAAY,IAAI;AAC1B,mBAAK,QAAQA,SAAQ,aAAaA,SAAQ;AAC1C,mBAAK,UAAUA,SAAQ;YAE1B,WAAa,MAAM;AAChB,wBAAU,YAAY,IAAI;AAC1B,oBAAM,QAAQ;YACjB;UACA;UAEC,eAAe,SAAU,OAAO;AAC/B,gBAAI,IAAI,MAAM,OAAO,MAAK,GACtBgE,KAAI,KAAK,MAAM,MAAM,OAAO,GAC5BqD,MAAK,KAAK,MAAM,MAAM,YAAYrD,EAAC;AAEvC,iBAAK,SAAS,OAAO,MAAM,OAAM,IAAK,SACrC,QAAQ,EAAE,IAAI,MAAM,EAAE,IAAI,MAAMA,KAAI,MAAMqD,MAAK,QAAS,QAAQ,GAAI;UACvE;UAEC,UAAU,SAAU,OAAOjF,OAAM;AAChC,kBAAM,MAAM,IAAIA;UAClB;UAEC,eAAe,SAAU,OAAO;AAC/B4F,oBAAgB,MAAM,UAAU;UAClC;UAEC,cAAc,SAAU,OAAO;AAC9BC,mBAAe,MAAM,UAAU;UACjC;QACA;ACtIO,YAAI,SAAS,QAAQ,MAAM,YAAY;AAsCpC,YAAC,MAAM,SAAS,OAAO;UAEhC,gBAAgB,WAAY;AAC3B,iBAAK,aAAa,OAAO,KAAK;AAG9B,iBAAK,WAAW,aAAa,kBAAkB,MAAM;AAErD,iBAAK,aAAa,OAAO,GAAG;AAC5B,iBAAK,WAAW,YAAY,KAAK,UAAU;UAC7C;UAEC,mBAAmB,WAAY;AAC9B1D,mBAAe,KAAK,UAAU;AAC9BvB,gBAAa,KAAK,UAAU;AAC5B,mBAAO,KAAK;AACZ,mBAAO,KAAK;AACZ,mBAAO,KAAK;UACd;UAEC,SAAS,WAAY;AACpB,gBAAI,KAAK,KAAK,kBAAkB,KAAK,SAAS;AAAE;YAAO;AAEvD,qBAAS,UAAU,QAAQ,KAAK,IAAI;AAEpC,gBAAI,IAAI,KAAK,SACTe,QAAO,EAAE,QAAO,GAChB,YAAY,KAAK;AAGrB,gBAAI,CAAC,KAAK,YAAY,CAAC,KAAK,SAAS,OAAOA,KAAI,GAAG;AAClD,mBAAK,WAAWA;AAChB,wBAAU,aAAa,SAASA,MAAK,CAAC;AACtC,wBAAU,aAAa,UAAUA,MAAK,CAAC;YAC1C;AAGET,wBAAoB,WAAW,EAAE,GAAG;AACpC,sBAAU,aAAa,WAAW,CAAC,EAAE,IAAI,GAAG,EAAE,IAAI,GAAGS,MAAK,GAAGA,MAAK,CAAC,EAAE,KAAK,GAAG,CAAC;AAE9E,iBAAK,KAAK,QAAQ;UACpB;;UAIC,WAAW,SAAU,OAAO;AAC3B,gBAAI3B,QAAO,MAAM,QAAQ,OAAO,MAAM;AAKtC,gBAAI,MAAM,QAAQ,WAAW;AAC5ByB,cAAAA,UAAiBzB,OAAM,MAAM,QAAQ,SAAS;YACjD;AAEE,gBAAI,MAAM,QAAQ,aAAa;AAC9ByB,cAAAA,UAAiBzB,OAAM,qBAAqB;YAC/C;AAEE,iBAAK,aAAa,KAAK;AACvB,iBAAK,QAAQ,MAAM,KAAK,CAAC,IAAI;UAC/B;UAEC,UAAU,SAAU,OAAO;AAC1B,gBAAI,CAAC,KAAK,YAAY;AAAE,mBAAK,eAAc;YAAG;AAC9C,iBAAK,WAAW,YAAY,MAAM,KAAK;AACvC,kBAAM,qBAAqB,MAAM,KAAK;UACxC;UAEC,aAAa,SAAU,OAAO;AAC7BmC,mBAAe,MAAM,KAAK;AAC1B,kBAAM,wBAAwB,MAAM,KAAK;AACzC,mBAAO,KAAK,QAAQ,MAAM,KAAK,CAAC;UAClC;UAEC,aAAa,SAAU,OAAO;AAC7B,kBAAM,SAAQ;AACd,kBAAM,QAAO;UACf;UAEC,cAAc,SAAU,OAAO;AAC9B,gBAAInC,QAAO,MAAM,OACbpC,WAAU,MAAM;AAEpB,gBAAI,CAACoC,OAAM;AAAE;YAAO;AAEpB,gBAAIpC,SAAQ,QAAQ;AACnB,cAAAoC,MAAK,aAAa,UAAUpC,SAAQ,KAAK;AACzC,cAAAoC,MAAK,aAAa,kBAAkBpC,SAAQ,OAAO;AACnD,cAAAoC,MAAK,aAAa,gBAAgBpC,SAAQ,MAAM;AAChD,cAAAoC,MAAK,aAAa,kBAAkBpC,SAAQ,OAAO;AACnD,cAAAoC,MAAK,aAAa,mBAAmBpC,SAAQ,QAAQ;AAErD,kBAAIA,SAAQ,WAAW;AACtB,gBAAAoC,MAAK,aAAa,oBAAoBpC,SAAQ,SAAS;cAC3D,OAAU;AACN,gBAAAoC,MAAK,gBAAgB,kBAAkB;cAC3C;AAEG,kBAAIpC,SAAQ,YAAY;AACvB,gBAAAoC,MAAK,aAAa,qBAAqBpC,SAAQ,UAAU;cAC7D,OAAU;AACN,gBAAAoC,MAAK,gBAAgB,mBAAmB;cAC5C;YACA,OAAS;AACN,cAAAA,MAAK,aAAa,UAAU,MAAM;YACrC;AAEE,gBAAIpC,SAAQ,MAAM;AACjB,cAAAoC,MAAK,aAAa,QAAQpC,SAAQ,aAAaA,SAAQ,KAAK;AAC5D,cAAAoC,MAAK,aAAa,gBAAgBpC,SAAQ,WAAW;AACrD,cAAAoC,MAAK,aAAa,aAAapC,SAAQ,YAAY,SAAS;YAC/D,OAAS;AACN,cAAAoC,MAAK,aAAa,QAAQ,MAAM;YACnC;UACA;UAEC,aAAa,SAAU,OAAO,QAAQ;AACrC,iBAAK,SAAS,OAAO,aAAa,MAAM,QAAQ,MAAM,CAAC;UACzD;UAEC,eAAe,SAAU,OAAO;AAC/B,gBAAI,IAAI,MAAM,QACV4B,KAAI,KAAK,IAAI,KAAK,MAAM,MAAM,OAAO,GAAG,CAAC,GACzCqD,MAAK,KAAK,IAAI,KAAK,MAAM,MAAM,QAAQ,GAAG,CAAC,KAAKrD,IAChD,MAAM,MAAMA,KAAI,MAAMqD,MAAK;AAG/B,gBAAIxH,KAAI,MAAM,OAAM,IAAK,SACxB,OAAO,EAAE,IAAImE,MAAK,MAAM,EAAE,IAC1B,MAAOA,KAAI,IAAK,QAChB,MAAO,CAACA,KAAI,IAAK;AAElB,iBAAK,SAAS,OAAOnE,EAAC;UACxB;UAEC,UAAU,SAAU,OAAOuC,OAAM;AAChC,kBAAM,MAAM,aAAa,KAAKA,KAAI;UACpC;;UAGC,eAAe,SAAU,OAAO;AAC/B4F,oBAAgB,MAAM,KAAK;UAC7B;UAEC,cAAc,SAAU,OAAO;AAC9BC,mBAAe,MAAM,KAAK;UAC5B;QACA,CAAC;AAED,YAAI,QAAQ,KAAK;AAChB,cAAI,QAAQ,QAAQ;QACrB;AAKO,iBAAS,IAAIjI,UAAS;AAC5B,iBAAO,QAAQ,OAAO,QAAQ,MAAM,IAAI,IAAIA,QAAO,IAAI;QACxD;AC1MA,QAAAyD,KAAI,QAAQ;;;;;UAKX,aAAa,SAAU,OAAO;AAI7B,gBAAI,WAAW,MAAM,QAAQ,YAAY,KAAK,iBAAiB,MAAM,QAAQ,IAAI,KAAK,KAAK,QAAQ,YAAY,KAAK;AAEpH,gBAAI,CAAC,UAAU;AACd,yBAAW,KAAK,YAAY,KAAK,gBAAe;YACnD;AAEE,gBAAI,CAAC,KAAK,SAAS,QAAQ,GAAG;AAC7B,mBAAK,SAAS,QAAQ;YACzB;AACE,mBAAO;UACT;UAEC,kBAAkB,SAAUpD,OAAM;AACjC,gBAAIA,UAAS,iBAAiBA,UAAS,QAAW;AACjD,qBAAO;YACV;AAEE,gBAAI,WAAW,KAAK,eAAeA,KAAI;AACvC,gBAAI,aAAa,QAAW;AAC3B,yBAAW,KAAK,gBAAgB,EAAC,MAAMA,MAAI,CAAC;AAC5C,mBAAK,eAAeA,KAAI,IAAI;YAC/B;AACE,mBAAO;UACT;UAEC,iBAAiB,SAAUL,UAAS;AAInC,mBAAQ,KAAK,QAAQ,gBAAgB,OAAOA,QAAO,KAAM,IAAIA,QAAO;UACtE;QACA,CAAC;ACdS,YAAC,YAAY,QAAQ,OAAO;UACrC,YAAY,SAAU,cAAcA,UAAS;AAC5C,oBAAQ,UAAU,WAAW,KAAK,MAAM,KAAK,iBAAiB,YAAY,GAAGA,QAAO;UACtF;;;UAIC,WAAW,SAAU,cAAc;AAClC,mBAAO,KAAK,WAAW,KAAK,iBAAiB,YAAY,CAAC;UAC5D;UAEC,kBAAkB,SAAU,cAAc;AACzC,2BAAe,eAAe,YAAY;AAC1C,mBAAO;cACN,aAAa,aAAY;cACzB,aAAa,aAAY;cACzB,aAAa,aAAY;cACzB,aAAa,aAAY;YAC5B;UACA;QACA,CAAC;AAIM,iBAAS,UAAU,cAAcA,UAAS;AAChD,iBAAO,IAAI,UAAU,cAAcA,QAAO;QAC3C;ACrDA,YAAI,SAAS;AACb,YAAI,eAAe;ACAnB,gBAAQ,kBAAkB;AAC1B,gBAAQ,iBAAiB;AACzB,gBAAQ,kBAAkB;AAC1B,gBAAQ,iBAAiB;AACzB,gBAAQ,kBAAkB;AAC1B,gBAAQ,aAAa;AACrB,gBAAQ,YAAY;ACKpB,QAAAyD,KAAI,aAAa;;;;UAIhB,SAAS;QACV,CAAC;AAEM,YAAI,UAAU,QAAQ,OAAO;UACnC,YAAY,SAAU4B,MAAK;AAC1B,iBAAK,OAAOA;AACZ,iBAAK,aAAaA,KAAI;AACtB,iBAAK,QAAQA,KAAI,OAAO;AACxB,iBAAK,qBAAqB;AAC1B,YAAAA,KAAI,GAAG,UAAU,KAAK,UAAU,IAAI;UACtC;UAEC,UAAU,WAAY;AACrBtC,eAAY,KAAK,YAAY,aAAa,KAAK,cAAc,IAAI;UACnE;UAEC,aAAa,WAAY;AACxBC,gBAAa,KAAK,YAAY,aAAa,KAAK,cAAc,IAAI;UACpE;UAEC,OAAO,WAAY;AAClB,mBAAO,KAAK;UACd;UAEC,UAAU,WAAY;AACrBuB,mBAAe,KAAK,KAAK;AACzB,mBAAO,KAAK;UACd;UAEC,aAAa,WAAY;AACxB,iBAAK,qBAAqB;AAC1B,iBAAK,SAAS;UAChB;UAEC,0BAA0B,WAAY;AACrC,gBAAI,KAAK,uBAAuB,GAAG;AAClC,2BAAa,KAAK,kBAAkB;AACpC,mBAAK,qBAAqB;YAC7B;UACA;UAEC,cAAc,SAAUtD,IAAG;AAC1B,gBAAI,CAACA,GAAE,YAAcA,GAAE,UAAU,KAAOA,GAAE,WAAW,GAAK;AAAE,qBAAO;YAAM;AAIzE,iBAAK,yBAAwB;AAC7B,iBAAK,YAAW;AAEhBgF,iCAA4B;AAC5BD,6BAAwB;AAExB,iBAAK,cAAc,KAAK,KAAK,2BAA2B/E,EAAC;AAEzD8B,eAAY,UAAU;cACrB,aAAa4C;cACb,WAAW,KAAK;cAChB,SAAS,KAAK;cACd,SAAS,KAAK;YACjB,GAAK,IAAI;UACT;UAEC,cAAc,SAAU1E,IAAG;AAC1B,gBAAI,CAAC,KAAK,QAAQ;AACjB,mBAAK,SAAS;AAEd,mBAAK,OAAOuD,SAAe,OAAO,oBAAoB,KAAK,UAAU;AACrEX,cAAAA,UAAiB,KAAK,YAAY,mBAAmB;AAErD,mBAAK,KAAK,KAAK,cAAc;YAChC;AAEE,iBAAK,SAAS,KAAK,KAAK,2BAA2B5C,EAAC;AAEpD,gBAAI,SAAS,IAAI,OAAO,KAAK,QAAQ,KAAK,WAAW,GACjD8C,QAAO,OAAO,QAAO;AAEzBT,wBAAoB,KAAK,MAAM,OAAO,GAAG;AAEzC,iBAAK,KAAK,MAAM,QAASS,MAAK,IAAI;AAClC,iBAAK,KAAK,MAAM,SAASA,MAAK,IAAI;UACpC;UAEC,SAAS,WAAY;AACpB,gBAAI,KAAK,QAAQ;AAChBQ,qBAAe,KAAK,IAAI;AACxBU,cAAAA,aAAoB,KAAK,YAAY,mBAAmB;YAC3D;AAEEoB,gCAA2B;AAC3BD,4BAAuB;AAEvBpD,gBAAa,UAAU;cACtB,aAAa2C;cACb,WAAW,KAAK;cAChB,SAAS,KAAK;cACd,SAAS,KAAK;YACjB,GAAK,IAAI;UACT;UAEC,YAAY,SAAU1E,IAAG;AACxB,gBAAKA,GAAE,UAAU,KAAOA,GAAE,WAAW,GAAI;AAAE;YAAO;AAElD,iBAAK,QAAO;AAEZ,gBAAI,CAAC,KAAK,QAAQ;AAAE;YAAO;AAG3B,iBAAK,yBAAwB;AAC7B,iBAAK,qBAAqB,WAAWyC,KAAU,KAAK,aAAa,IAAI,GAAG,CAAC;AAEzE,gBAAI,SAAS,IAAI;cACT,KAAK,KAAK,uBAAuB,KAAK,WAAW;cACjD,KAAK,KAAK,uBAAuB,KAAK,MAAM;YAAC;AAErD,iBAAK,KACH,UAAU,MAAM,EAChB,KAAK,cAAc,EAAC,eAAe,OAAM,CAAC;UAC9C;UAEC,YAAY,SAAUzC,IAAG;AACxB,gBAAIA,GAAE,YAAY,IAAI;AACrB,mBAAK,QAAO;AACZ,mBAAK,yBAAwB;AAC7B,mBAAK,YAAW;YACnB;UACA;QACA,CAAC;AAKD,QAAAwC,KAAI,YAAY,cAAc,WAAW,OAAO;AC7IhD,QAAAA,KAAI,aAAa;;;;;;UAMhB,iBAAiB;QAClB,CAAC;AAEM,YAAI,kBAAkB,QAAQ,OAAO;UAC3C,UAAU,WAAY;AACrB,iBAAK,KAAK,GAAG,YAAY,KAAK,gBAAgB,IAAI;UACpD;UAEC,aAAa,WAAY;AACxB,iBAAK,KAAK,IAAI,YAAY,KAAK,gBAAgB,IAAI;UACrD;UAEC,gBAAgB,SAAUxC,IAAG;AAC5B,gBAAIoE,OAAM,KAAK,MACX,UAAUA,KAAI,QAAO,GACrB,QAAQA,KAAI,QAAQ,WACpB1D,QAAOV,GAAE,cAAc,WAAW,UAAU,QAAQ,UAAU;AAElE,gBAAIoE,KAAI,QAAQ,oBAAoB,UAAU;AAC7C,cAAAA,KAAI,QAAQ1D,KAAI;YACnB,OAAS;AACN,cAAA0D,KAAI,cAAcpE,GAAE,gBAAgBU,KAAI;YAC3C;UACA;QACA,CAAC;AAcD,QAAA8B,KAAI,YAAY,cAAc,mBAAmB,eAAe;ACxChE,QAAAA,KAAI,aAAa;;;UAGhB,UAAU;;;;;;;UAQV,SAAS;;;UAIT,qBAAqB;;;;UAIrB,iBAAiB;;;UAGjB,eAAe;;;;;;UAOf,eAAe;;;;;;;UAQf,oBAAoB;QACrB,CAAC;AAEM,YAAI,OAAO,QAAQ,OAAO;UAChC,UAAU,WAAY;AACrB,gBAAI,CAAC,KAAK,YAAY;AACrB,kBAAI4B,OAAM,KAAK;AAEf,mBAAK,aAAa,IAAI,UAAUA,KAAI,UAAUA,KAAI,UAAU;AAE5D,mBAAK,WAAW,GAAG;gBAClB,WAAW,KAAK;gBAChB,MAAM,KAAK;gBACX,SAAS,KAAK;cAClB,GAAM,IAAI;AAEP,mBAAK,WAAW,GAAG,WAAW,KAAK,iBAAiB,IAAI;AACxD,kBAAIA,KAAI,QAAQ,eAAe;AAC9B,qBAAK,WAAW,GAAG,WAAW,KAAK,gBAAgB,IAAI;AACvD,gBAAAA,KAAI,GAAG,WAAW,KAAK,YAAY,IAAI;AAEvC,gBAAAA,KAAI,UAAU,KAAK,YAAY,IAAI;cACvC;YACA;AACExB,YAAAA,UAAiB,KAAK,KAAK,YAAY,iCAAiC;AACxE,iBAAK,WAAW,OAAM;AACtB,iBAAK,aAAa,CAAA;AAClB,iBAAK,SAAS,CAAA;UAChB;UAEC,aAAa,WAAY;AACxBoB,YAAAA,aAAoB,KAAK,KAAK,YAAY,cAAc;AACxDA,YAAAA,aAAoB,KAAK,KAAK,YAAY,oBAAoB;AAC9D,iBAAK,WAAW,QAAO;UACzB;UAEC,OAAO,WAAY;AAClB,mBAAO,KAAK,cAAc,KAAK,WAAW;UAC5C;UAEC,QAAQ,WAAY;AACnB,mBAAO,KAAK,cAAc,KAAK,WAAW;UAC5C;UAEC,cAAc,WAAY;AACzB,gBAAII,OAAM,KAAK;AAEf,YAAAA,KAAI,MAAK;AACT,gBAAI,KAAK,KAAK,QAAQ,aAAa,KAAK,KAAK,QAAQ,oBAAoB;AACxE,kBAAI,SAASsD,eAAa,KAAK,KAAK,QAAQ,SAAS;AAErD,mBAAK,eAAe;gBACnB,KAAK,KAAK,uBAAuB,OAAO,aAAY,CAAE,EAAE,WAAW,EAAE;gBACrE,KAAK,KAAK,uBAAuB,OAAO,aAAY,CAAE,EAAE,WAAW,EAAE,EACnE,IAAI,KAAK,KAAK,QAAO,CAAE;cAAC;AAE3B,mBAAK,aAAa,KAAK,IAAI,GAAK,KAAK,IAAI,GAAK,KAAK,KAAK,QAAQ,kBAAkB,CAAC;YACtF,OAAS;AACN,mBAAK,eAAe;YACvB;AAEE,YAAAtD,KACK,KAAK,WAAW,EAChB,KAAK,WAAW;AAErB,gBAAIA,KAAI,QAAQ,SAAS;AACxB,mBAAK,aAAa,CAAA;AAClB,mBAAK,SAAS,CAAA;YACjB;UACA;UAEC,SAAS,SAAUpE,IAAG;AACrB,gBAAI,KAAK,KAAK,QAAQ,SAAS;AAC9B,kBAAIzB,QAAO,KAAK,YAAY,CAAC,oBAAI,KAAI,GACjC,MAAM,KAAK,WAAW,KAAK,WAAW,WAAW,KAAK,WAAW;AAErE,mBAAK,WAAW,KAAK,GAAG;AACxB,mBAAK,OAAO,KAAKA,KAAI;AAErB,mBAAK,gBAAgBA,KAAI;YAC5B;AAEE,iBAAK,KACA,KAAK,QAAQyB,EAAC,EACd,KAAK,QAAQA,EAAC;UACrB;UAEC,iBAAiB,SAAUzB,OAAM;AAChC,mBAAO,KAAK,WAAW,SAAS,KAAKA,QAAO,KAAK,OAAO,CAAC,IAAI,IAAI;AAChE,mBAAK,WAAW,MAAK;AACrB,mBAAK,OAAO,MAAK;YACpB;UACA;UAEC,YAAY,WAAY;AACvB,gBAAI,WAAW,KAAK,KAAK,QAAO,EAAG,SAAS,CAAC,GACzC,gBAAgB,KAAK,KAAK,mBAAmB,CAAC,GAAG,CAAC,CAAC;AAEvD,iBAAK,sBAAsB,cAAc,SAAS,QAAQ,EAAE;AAC5D,iBAAK,cAAc,KAAK,KAAK,oBAAmB,EAAG,QAAO,EAAG;UAC/D;UAEC,eAAe,SAAU,OAAOwJ,YAAW;AAC1C,mBAAO,SAAS,QAAQA,cAAa,KAAK;UAC5C;UAEC,iBAAiB,WAAY;AAC5B,gBAAI,CAAC,KAAK,cAAc,CAAC,KAAK,cAAc;AAAE;YAAO;AAErD,gBAAI,SAAS,KAAK,WAAW,QAAQ,SAAS,KAAK,WAAW,SAAS;AAEvE,gBAAI,QAAQ,KAAK;AACjB,gBAAI,OAAO,IAAI,MAAM,IAAI,GAAG;AAAE,qBAAO,IAAI,KAAK,cAAc,OAAO,GAAG,MAAM,IAAI,CAAC;YAAE;AACnF,gBAAI,OAAO,IAAI,MAAM,IAAI,GAAG;AAAE,qBAAO,IAAI,KAAK,cAAc,OAAO,GAAG,MAAM,IAAI,CAAC;YAAE;AACnF,gBAAI,OAAO,IAAI,MAAM,IAAI,GAAG;AAAE,qBAAO,IAAI,KAAK,cAAc,OAAO,GAAG,MAAM,IAAI,CAAC;YAAE;AACnF,gBAAI,OAAO,IAAI,MAAM,IAAI,GAAG;AAAE,qBAAO,IAAI,KAAK,cAAc,OAAO,GAAG,MAAM,IAAI,CAAC;YAAE;AAEnF,iBAAK,WAAW,UAAU,KAAK,WAAW,UAAU,IAAI,MAAM;UAChE;UAEC,gBAAgB,WAAY;AAE3B,gBAAI,aAAa,KAAK,aAClB,YAAY,KAAK,MAAM,aAAa,CAAC,GACrC,KAAK,KAAK,qBACVvJ,KAAI,KAAK,WAAW,QAAQ,GAC5B,SAASA,KAAI,YAAY,MAAM,aAAa,YAAY,IACxD,SAASA,KAAI,YAAY,MAAM,aAAa,YAAY,IACxD,OAAO,KAAK,IAAI,QAAQ,EAAE,IAAI,KAAK,IAAI,QAAQ,EAAE,IAAI,QAAQ;AAEjE,iBAAK,WAAW,UAAU,KAAK,WAAW,QAAQ,MAAK;AACvD,iBAAK,WAAW,QAAQ,IAAI;UAC9B;UAEC,YAAY,SAAUwB,IAAG;AACxB,gBAAIoE,OAAM,KAAK,MACXrF,WAAUqF,KAAI,SAEd,YAAY,CAACrF,SAAQ,WAAWiB,GAAE,aAAa,KAAK,OAAO,SAAS;AAExE,YAAAoE,KAAI,KAAK,WAAWpE,EAAC;AAErB,gBAAI,WAAW;AACd,cAAAoE,KAAI,KAAK,SAAS;YAErB,OAAS;AACN,mBAAK,gBAAgB,CAAC,oBAAI,KAAI,CAAE;AAEhC,kBAAI,YAAY,KAAK,SAAS,SAAS,KAAK,WAAW,CAAC,CAAC,GACrD,YAAY,KAAK,YAAY,KAAK,OAAO,CAAC,KAAK,KAC/C,OAAOrF,SAAQ,eAEf,cAAc,UAAU,WAAW,OAAO,QAAQ,GAClD,QAAQ,YAAY,WAAW,CAAC,GAAG,CAAC,CAAC,GAErC,eAAe,KAAK,IAAIA,SAAQ,iBAAiB,KAAK,GACtD,qBAAqB,YAAY,WAAW,eAAe,KAAK,GAEhE,uBAAuB,gBAAgBA,SAAQ,sBAAsB,OACrE,SAAS,mBAAmB,WAAW,CAAC,uBAAuB,CAAC,EAAE,MAAK;AAE3E,kBAAI,CAAC,OAAO,KAAK,CAAC,OAAO,GAAG;AAC3B,gBAAAqF,KAAI,KAAK,SAAS;cAEtB,OAAU;AACN,yBAASA,KAAI,aAAa,QAAQA,KAAI,QAAQ,SAAS;AAEvDhC,iCAAsB,WAAY;AACjC,kBAAAgC,KAAI,MAAM,QAAQ;oBACjB,UAAU;oBACV,eAAe;oBACf,aAAa;oBACb,SAAS;kBACf,CAAM;gBACN,CAAK;cACL;YACA;UACA;QACA,CAAC;AAKD,QAAA5B,KAAI,YAAY,cAAc,YAAY,IAAI;AC9N9C,QAAAA,KAAI,aAAa;;;;UAIhB,UAAU;;;UAIV,kBAAkB;QACnB,CAAC;AAEM,YAAI,WAAW,QAAQ,OAAO;UAEpC,UAAU;YACT,MAAS,CAAC,EAAE;YACZ,OAAS,CAAC,EAAE;YACZ,MAAS,CAAC,EAAE;YACZ,IAAS,CAAC,EAAE;YACZ,QAAS,CAAC,KAAK,KAAK,IAAI,GAAG;YAC3B,SAAS,CAAC,KAAK,KAAK,IAAI,GAAG;UAC7B;UAEC,YAAY,SAAU4B,MAAK;AAC1B,iBAAK,OAAOA;AAEZ,iBAAK,aAAaA,KAAI,QAAQ,gBAAgB;AAC9C,iBAAK,cAAcA,KAAI,QAAQ,SAAS;UAC1C;UAEC,UAAU,WAAY;AACrB,gBAAI,YAAY,KAAK,KAAK;AAG1B,gBAAI,UAAU,YAAY,GAAG;AAC5B,wBAAU,WAAW;YACxB;AAEE,eAAG,WAAW;cACb,OAAO,KAAK;cACZ,MAAM,KAAK;cACX,WAAW,KAAK;YACnB,GAAK,IAAI;AAEP,iBAAK,KAAK,GAAG;cACZ,OAAO,KAAK;cACZ,MAAM,KAAK;YACd,GAAK,IAAI;UACT;UAEC,aAAa,WAAY;AACxB,iBAAK,aAAY;AAEjB,gBAAI,KAAK,KAAK,YAAY;cACzB,OAAO,KAAK;cACZ,MAAM,KAAK;cACX,WAAW,KAAK;YACnB,GAAK,IAAI;AAEP,iBAAK,KAAK,IAAI;cACb,OAAO,KAAK;cACZ,MAAM,KAAK;YACd,GAAK,IAAI;UACT;UAEC,cAAc,WAAY;AACzB,gBAAI,KAAK,UAAU;AAAE;YAAO;AAE5B,gBAAI,OAAO,SAAS,MAChB,QAAQ,SAAS,iBACjB,MAAM,KAAK,aAAa,MAAM,WAC9B,OAAO,KAAK,cAAc,MAAM;AAEpC,iBAAK,KAAK,WAAW,MAAK;AAE1B,mBAAO,SAAS,MAAM,GAAG;UAC3B;UAEC,UAAU,WAAY;AACrB,iBAAK,WAAW;AAChB,iBAAK,KAAK,KAAK,OAAO;UACxB;UAEC,SAAS,WAAY;AACpB,iBAAK,WAAW;AAChB,iBAAK,KAAK,KAAK,MAAM;UACvB;UAEC,cAAc,SAAU,UAAU;AACjC,gBAAI,OAAO,KAAK,WAAW,CAAA,GACvB,QAAQ,KAAK,UACb,GAAG;AAEP,iBAAK,IAAI,GAAG,MAAM,MAAM,KAAK,QAAQ,IAAI,KAAK,KAAK;AAClD,mBAAK,MAAM,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,UAAU,CAAC;YAC1C;AACE,iBAAK,IAAI,GAAG,MAAM,MAAM,MAAM,QAAQ,IAAI,KAAK,KAAK;AACnD,mBAAK,MAAM,MAAM,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;YACtC;AACE,iBAAK,IAAI,GAAG,MAAM,MAAM,KAAK,QAAQ,IAAI,KAAK,KAAK;AAClD,mBAAK,MAAM,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,QAAQ;YACrC;AACE,iBAAK,IAAI,GAAG,MAAM,MAAM,GAAG,QAAQ,IAAI,KAAK,KAAK;AAChD,mBAAK,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,KAAK,QAAQ;YACxC;UACA;UAEC,eAAe,SAAU,WAAW;AACnC,gBAAI,OAAO,KAAK,YAAY,CAAA,GACxB,QAAQ,KAAK,UACb,GAAG;AAEP,iBAAK,IAAI,GAAG,MAAM,MAAM,OAAO,QAAQ,IAAI,KAAK,KAAK;AACpD,mBAAK,MAAM,OAAO,CAAC,CAAC,IAAI;YAC3B;AACE,iBAAK,IAAI,GAAG,MAAM,MAAM,QAAQ,QAAQ,IAAI,KAAK,KAAK;AACrD,mBAAK,MAAM,QAAQ,CAAC,CAAC,IAAI,CAAC;YAC7B;UACA;UAEC,WAAW,WAAY;AACtB,eAAG,UAAU,WAAW,KAAK,YAAY,IAAI;UAC/C;UAEC,cAAc,WAAY;AACzB,gBAAI,UAAU,WAAW,KAAK,YAAY,IAAI;UAChD;UAEC,YAAY,SAAUpE,IAAG;AACxB,gBAAIA,GAAE,UAAUA,GAAE,WAAWA,GAAE,SAAS;AAAE;YAAO;AAEjD,gBAAI,MAAMA,GAAE,SACRoE,OAAM,KAAK,MACX;AAEJ,gBAAI,OAAO,KAAK,UAAU;AACzB,kBAAI,CAACA,KAAI,YAAY,CAACA,KAAI,SAAS,aAAa;AAC/C,yBAAS,KAAK,SAAS,GAAG;AAC1B,oBAAIpE,GAAE,UAAU;AACf,2BAAS,QAAQ,MAAM,EAAE,WAAW,CAAC;gBAC1C;AAEI,oBAAIoE,KAAI,QAAQ,WAAW;AAC1B,2BAASA,KAAI,aAAa,QAAQ,MAAM,GAAGA,KAAI,QAAQ,SAAS;gBACrE;AAEI,oBAAIA,KAAI,QAAQ,eAAe;AAC9B,sBAAI,YAAYA,KAAI,WAAWA,KAAI,UAAUA,KAAI,QAAQA,KAAI,UAAS,CAAE,EAAE,IAAI,MAAM,CAAC,CAAC;AACtF,kBAAAA,KAAI,MAAM,SAAS;gBACxB,OAAW;AACN,kBAAAA,KAAI,MAAM,MAAM;gBACrB;cACA;YACA,WAAa,OAAO,KAAK,WAAW;AACjC,cAAAA,KAAI,QAAQA,KAAI,QAAO,KAAMpE,GAAE,WAAW,IAAI,KAAK,KAAK,UAAU,GAAG,CAAC;YAEzE,WAAa,QAAQ,MAAMoE,KAAI,UAAUA,KAAI,OAAO,QAAQ,kBAAkB;AAC3E,cAAAA,KAAI,WAAU;YAEjB,OAAS;AACN;YACH;AAEE,iBAAKpE,EAAC;UACR;QACA,CAAC;AAMD,QAAAwC,KAAI,YAAY,cAAc,YAAY,QAAQ;AC3KlD,QAAAA,KAAI,aAAa;;;;;UAKhB,iBAAiB;;;;UAKjB,mBAAmB;;;;;UAMnB,qBAAqB;QACtB,CAAC;AAEM,YAAI,kBAAkB,QAAQ,OAAO;UAC3C,UAAU,WAAY;AACrBV,eAAY,KAAK,KAAK,YAAY,SAAS,KAAK,gBAAgB,IAAI;AAEpE,iBAAK,SAAS;UAChB;UAEC,aAAa,WAAY;AACxBC,gBAAa,KAAK,KAAK,YAAY,SAAS,KAAK,gBAAgB,IAAI;UACvE;UAEC,gBAAgB,SAAU/B,IAAG;AAC5B,gBAAI,QAAQgI,cAAuBhI,EAAC;AAEpC,gBAAI,WAAW,KAAK,KAAK,QAAQ;AAEjC,iBAAK,UAAU;AACf,iBAAK,gBAAgB,KAAK,KAAK,2BAA2BA,EAAC;AAE3D,gBAAI,CAAC,KAAK,YAAY;AACrB,mBAAK,aAAa,CAAC,oBAAI,KAAI;YAC9B;AAEE,gBAAI,OAAO,KAAK,IAAI,YAAY,CAAC,oBAAI,KAAI,IAAK,KAAK,aAAa,CAAC;AAEjE,yBAAa,KAAK,MAAM;AACxB,iBAAK,SAAS,WAAWyC,KAAU,KAAK,cAAc,IAAI,GAAG,IAAI;AAEjEiC,iBAAc1E,EAAC;UACjB;UAEC,cAAc,WAAY;AACzB,gBAAIoE,OAAM,KAAK,MACX1D,QAAO0D,KAAI,QAAO,GAClB,OAAO,KAAK,KAAK,QAAQ,YAAY;AAEzC,YAAAA,KAAI,MAAK;AAGT,gBAAI,KAAK,KAAK,UAAU,KAAK,KAAK,QAAQ,sBAAsB,IAC5D,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,IAAI,KAAK,KAC5D,KAAK,OAAO,KAAK,KAAK,KAAK,IAAI,IAAI,OAAO,IAC1C,QAAQA,KAAI,WAAW1D,SAAQ,KAAK,SAAS,IAAI,KAAK,CAAC,GAAG,IAAIA;AAElE,iBAAK,SAAS;AACd,iBAAK,aAAa;AAElB,gBAAI,CAAC,OAAO;AAAE;YAAO;AAErB,gBAAI0D,KAAI,QAAQ,oBAAoB,UAAU;AAC7C,cAAAA,KAAI,QAAQ1D,QAAO,KAAK;YAC3B,OAAS;AACN,cAAA0D,KAAI,cAAc,KAAK,eAAe1D,QAAO,KAAK;YACrD;UACA;QACA,CAAC;AAKD,QAAA8B,KAAI,YAAY,cAAc,mBAAmB,eAAe;AC9EhE,YAAI,eAAe;AAInB,QAAAA,KAAI,aAAa;;;;UAIhB,SAAS,QAAQ,eAAe,QAAQ,UAAU,QAAQ;;;;UAK1D,cAAc;QACf,CAAC;AAEM,YAAI,UAAU,QAAQ,OAAO;UACnC,UAAU,WAAY;AACrBV,eAAY,KAAK,KAAK,YAAY,cAAc,KAAK,SAAS,IAAI;UACpE;UAEC,aAAa,WAAY;AACxBC,gBAAa,KAAK,KAAK,YAAY,cAAc,KAAK,SAAS,IAAI;UACrE;UAEC,SAAS,SAAU/B,IAAG;AACrB,yBAAa,KAAK,YAAY;AAC9B,gBAAIA,GAAE,QAAQ,WAAW,GAAG;AAAE;YAAO;AAErC,gBAAI,QAAQA,GAAE,QAAQ,CAAC;AACvB,iBAAK,YAAY,KAAK,UAAU,IAAIC,OAAM,MAAM,SAAS,MAAM,OAAO;AAEtE,iBAAK,eAAe,WAAWwC,KAAU,WAAY;AACpD,mBAAK,QAAO;AACZ,kBAAI,CAAC,KAAK,YAAW,GAAI;AAAE;cAAO;AAGlCX,iBAAY,UAAU,YAAYZ,cAAuB;AACzDY,iBAAY,UAAU,wBAAwB,KAAK,mBAAmB;AACtE,mBAAK,eAAe,eAAe,KAAK;YAC3C,GAAK,IAAI,GAAG,YAAY;AAEtBA,eAAY,UAAU,oCAAoC,KAAK,SAAS,IAAI;AAC5EA,eAAY,UAAU,aAAa,KAAK,SAAS,IAAI;UACvD;UAEC,qBAAqB,SAAS,qBAAqB;AAClDC,gBAAa,UAAU,YAAYb,cAAuB;AAC1Da,gBAAa,UAAU,wBAAwB,kBAAkB;UACnE;UAEC,SAAS,WAAY;AACpB,yBAAa,KAAK,YAAY;AAC9BA,gBAAa,UAAU,oCAAoC,KAAK,SAAS,IAAI;AAC7EA,gBAAa,UAAU,aAAa,KAAK,SAAS,IAAI;UACxD;UAEC,SAAS,SAAU/B,IAAG;AACrB,gBAAI,QAAQA,GAAE,QAAQ,CAAC;AACvB,iBAAK,UAAU,IAAIC,OAAM,MAAM,SAAS,MAAM,OAAO;UACvD;UAEC,aAAa,WAAY;AACxB,mBAAO,KAAK,QAAQ,WAAW,KAAK,SAAS,KAAK,KAAK,KAAK,QAAQ;UACtE;UAEC,gBAAgB,SAAU,MAAMD,IAAG;AAClC,gBAAI,iBAAiB,IAAI,WAAW,MAAM;cACzC,SAAS;cACT,YAAY;cACZ,MAAM;;cAEN,SAASA,GAAE;cACX,SAASA,GAAE;cACX,SAASA,GAAE;cACX,SAASA,GAAE;;;YAGd,CAAG;AAED,2BAAe,aAAa;AAE5B,YAAAA,GAAE,OAAO,cAAc,cAAc;UACvC;QACA,CAAC;AAKD,QAAAwC,KAAI,YAAY,cAAc,WAAW,OAAO;ACxFhD,QAAAA,KAAI,aAAa;;;;;;;UAOhB,WAAW,QAAQ;;;;UAKnB,oBAAoB;QACrB,CAAC;AAEM,YAAI,YAAY,QAAQ,OAAO;UACrC,UAAU,WAAY;AACrBI,YAAAA,UAAiB,KAAK,KAAK,YAAY,oBAAoB;AAC3Dd,eAAY,KAAK,KAAK,YAAY,cAAc,KAAK,eAAe,IAAI;UAC1E;UAEC,aAAa,WAAY;AACxBkC,YAAAA,aAAoB,KAAK,KAAK,YAAY,oBAAoB;AAC9DjC,gBAAa,KAAK,KAAK,YAAY,cAAc,KAAK,eAAe,IAAI;UAC3E;UAEC,eAAe,SAAU/B,IAAG;AAC3B,gBAAIoE,OAAM,KAAK;AACf,gBAAI,CAACpE,GAAE,WAAWA,GAAE,QAAQ,WAAW,KAAKoE,KAAI,kBAAkB,KAAK,UAAU;AAAE;YAAO;AAE1F,gBAAI,KAAKA,KAAI,2BAA2BpE,GAAE,QAAQ,CAAC,CAAC,GAChD,KAAKoE,KAAI,2BAA2BpE,GAAE,QAAQ,CAAC,CAAC;AAEpD,iBAAK,eAAeoE,KAAI,QAAO,EAAG,UAAU,CAAC;AAC7C,iBAAK,eAAeA,KAAI,uBAAuB,KAAK,YAAY;AAChE,gBAAIA,KAAI,QAAQ,cAAc,UAAU;AACvC,mBAAK,oBAAoBA,KAAI,uBAAuB,GAAG,IAAI,EAAE,EAAE,UAAU,CAAC,CAAC;YAC9E;AAEE,iBAAK,aAAa,GAAG,WAAW,EAAE;AAClC,iBAAK,aAAaA,KAAI,QAAO;AAE7B,iBAAK,SAAS;AACd,iBAAK,WAAW;AAEhB,YAAAA,KAAI,MAAK;AAETtC,eAAY,UAAU,aAAa,KAAK,cAAc,IAAI;AAC1DA,eAAY,UAAU,wBAAwB,KAAK,aAAa,IAAI;AAEpEZ,2BAAwBlB,EAAC;UAC3B;UAEC,cAAc,SAAUA,IAAG;AAC1B,gBAAI,CAACA,GAAE,WAAWA,GAAE,QAAQ,WAAW,KAAK,CAAC,KAAK,UAAU;AAAE;YAAO;AAErE,gBAAIoE,OAAM,KAAK,MACX,KAAKA,KAAI,2BAA2BpE,GAAE,QAAQ,CAAC,CAAC,GAChD,KAAKoE,KAAI,2BAA2BpE,GAAE,QAAQ,CAAC,CAAC,GAChDW,SAAQ,GAAG,WAAW,EAAE,IAAI,KAAK;AAErC,iBAAK,QAAQyD,KAAI,aAAazD,QAAO,KAAK,UAAU;AAEpD,gBAAI,CAACyD,KAAI,QAAQ,uBACf,KAAK,QAAQA,KAAI,WAAU,KAAMzD,SAAQ,KACzC,KAAK,QAAQyD,KAAI,WAAU,KAAMzD,SAAQ,IAAK;AAC/C,mBAAK,QAAQyD,KAAI,WAAW,KAAK,KAAK;YACzC;AAEE,gBAAIA,KAAI,QAAQ,cAAc,UAAU;AACvC,mBAAK,UAAU,KAAK;AACpB,kBAAIzD,WAAU,GAAG;AAAE;cAAO;YAC7B,OAAS;AAEN,kBAAI,QAAQ,GAAG,KAAK,EAAE,EAAE,UAAU,CAAC,EAAE,UAAU,KAAK,YAAY;AAChE,kBAAIA,WAAU,KAAK,MAAM,MAAM,KAAK,MAAM,MAAM,GAAG;AAAE;cAAO;AAC5D,mBAAK,UAAUyD,KAAI,UAAUA,KAAI,QAAQ,KAAK,mBAAmB,KAAK,KAAK,EAAE,SAAS,KAAK,GAAG,KAAK,KAAK;YAC3G;AAEE,gBAAI,CAAC,KAAK,QAAQ;AACjB,cAAAA,KAAI,WAAW,MAAM,KAAK;AAC1B,mBAAK,SAAS;YACjB;AAEE9B,4BAAqB,KAAK,YAAY;AAEtC,gBAAI,SAASG,KAAU2B,KAAI,OAAOA,MAAK,KAAK,SAAS,KAAK,OAAO,EAAC,OAAO,MAAM,OAAO,MAAK,GAAG,MAAS;AACvG,iBAAK,eAAehC,iBAAsB,QAAQ,MAAM,IAAI;AAE5DlB,2BAAwBlB,EAAC;UAC3B;UAEC,aAAa,WAAY;AACxB,gBAAI,CAAC,KAAK,UAAU,CAAC,KAAK,UAAU;AACnC,mBAAK,WAAW;AAChB;YACH;AAEE,iBAAK,WAAW;AAChBsC,4BAAqB,KAAK,YAAY;AAEtCP,gBAAa,UAAU,aAAa,KAAK,cAAc,IAAI;AAC3DA,gBAAa,UAAU,wBAAwB,KAAK,aAAa,IAAI;AAGrE,gBAAI,KAAK,KAAK,QAAQ,eAAe;AACpC,mBAAK,KAAK,aAAa,KAAK,SAAS,KAAK,KAAK,WAAW,KAAK,KAAK,GAAG,MAAM,KAAK,KAAK,QAAQ,QAAQ;YAC1G,OAAS;AACN,mBAAK,KAAK,WAAW,KAAK,SAAS,KAAK,KAAK,WAAW,KAAK,KAAK,CAAC;YACtE;UACA;QACA,CAAC;AAKD,QAAAS,KAAI,YAAY,cAAc,aAAa,SAAS;AC/HpD,QAAAA,KAAI,UAAU;AAEd,QAAAA,KAAI,kBAAkB;AAEtB,QAAAA,KAAI,OAAO;AAEX,QAAAA,KAAI,WAAW;AAEf,QAAAA,KAAI,kBAAkB;AAEtB,QAAAA,KAAI,UAAU;AAEd,QAAAA,KAAI,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACdhB;AAAA;AAMC,OAAC,SAAUyF,SAAQ,SAAS;AACzB,eAAO,YAAY,YAAY,OAAO,WAAW,cAAc,OAAO,UAAU,QAAQ,IACxF,OAAO,WAAW,cAAc,OAAO,MAAM,OAAO,OAAO,IAC3DA,QAAO,SAAS,QAAQ;AAAA,MAC5B,GAAE,SAAO,WAAY;AAAE;AAEnB,YAAI;AAEJ,iBAASC,SAAQ;AACb,iBAAO,aAAa,MAAM,MAAM,SAAS;AAAA,QAC7C;AAIA,iBAAS,gBAAgB,UAAU;AAC/B,yBAAe;AAAA,QACnB;AAEA,iBAASC,SAAQ,OAAO;AACpB,iBACI,iBAAiB,SACjB,OAAO,UAAU,SAAS,KAAK,KAAK,MAAM;AAAA,QAElD;AAEA,iBAAS,SAAS,OAAO;AAGrB,iBACI,SAAS,QACT,OAAO,UAAU,SAAS,KAAK,KAAK,MAAM;AAAA,QAElD;AAEA,iBAAS,WAAWC,IAAG,GAAG;AACtB,iBAAO,OAAO,UAAU,eAAe,KAAKA,IAAG,CAAC;AAAA,QACpD;AAEA,iBAAS,cAAc,KAAK;AACxB,cAAI,OAAO,qBAAqB;AAC5B,mBAAO,OAAO,oBAAoB,GAAG,EAAE,WAAW;AAAA,UACtD,OAAO;AACH,gBAAIC;AACJ,iBAAKA,MAAK,KAAK;AACX,kBAAI,WAAW,KAAKA,EAAC,GAAG;AACpB,uBAAO;AAAA,cACX;AAAA,YACJ;AACA,mBAAO;AAAA,UACX;AAAA,QACJ;AAEA,iBAAS,YAAY,OAAO;AACxB,iBAAO,UAAU;AAAA,QACrB;AAEA,iBAAS,SAAS,OAAO;AACrB,iBACI,OAAO,UAAU,YACjB,OAAO,UAAU,SAAS,KAAK,KAAK,MAAM;AAAA,QAElD;AAEA,iBAAS,OAAO,OAAO;AACnB,iBACI,iBAAiB,QACjB,OAAO,UAAU,SAAS,KAAK,KAAK,MAAM;AAAA,QAElD;AAEA,iBAASC,KAAI,KAAK,IAAI;AAClB,cAAI,MAAM,CAAC,GACP,GACA,SAAS,IAAI;AACjB,eAAK,IAAI,GAAG,IAAI,QAAQ,EAAE,GAAG;AACzB,gBAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;AAAA,UAC1B;AACA,iBAAO;AAAA,QACX;AAEA,iBAASC,QAAOH,IAAG,GAAG;AAClB,mBAAS,KAAK,GAAG;AACb,gBAAI,WAAW,GAAG,CAAC,GAAG;AAClB,cAAAA,GAAE,CAAC,IAAI,EAAE,CAAC;AAAA,YACd;AAAA,UACJ;AAEA,cAAI,WAAW,GAAG,UAAU,GAAG;AAC3B,YAAAA,GAAE,WAAW,EAAE;AAAA,UACnB;AAEA,cAAI,WAAW,GAAG,SAAS,GAAG;AAC1B,YAAAA,GAAE,UAAU,EAAE;AAAA,UAClB;AAEA,iBAAOA;AAAA,QACX;AAEA,iBAAS,UAAU,OAAOI,SAAQC,SAAQ,QAAQ;AAC9C,iBAAO,iBAAiB,OAAOD,SAAQC,SAAQ,QAAQ,IAAI,EAAE,IAAI;AAAA,QACrE;AAEA,iBAAS,sBAAsB;AAE3B,iBAAO;AAAA,YACH,OAAO;AAAA,YACP,cAAc,CAAC;AAAA,YACf,aAAa,CAAC;AAAA,YACd,UAAU;AAAA,YACV,eAAe;AAAA,YACf,WAAW;AAAA,YACX,YAAY;AAAA,YACZ,cAAc;AAAA,YACd,eAAe;AAAA,YACf,iBAAiB;AAAA,YACjB,KAAK;AAAA,YACL,iBAAiB,CAAC;AAAA,YAClB,KAAK;AAAA,YACL,UAAU;AAAA,YACV,SAAS;AAAA,YACT,iBAAiB;AAAA,UACrB;AAAA,QACJ;AAEA,iBAAS,gBAAgB,GAAG;AACxB,cAAI,EAAE,OAAO,MAAM;AACf,cAAE,MAAM,oBAAoB;AAAA,UAChC;AACA,iBAAO,EAAE;AAAA,QACb;AAEA,YAAI;AACJ,YAAI,MAAM,UAAU,MAAM;AACtB,iBAAO,MAAM,UAAU;AAAA,QAC3B,OAAO;AACH,iBAAO,SAAU,KAAK;AAClB,gBAAIC,KAAI,OAAO,IAAI,GACf,MAAMA,GAAE,WAAW,GACnB;AAEJ,iBAAK,IAAI,GAAG,IAAI,KAAK,KAAK;AACtB,kBAAI,KAAKA,MAAK,IAAI,KAAK,MAAMA,GAAE,CAAC,GAAG,GAAGA,EAAC,GAAG;AACtC,uBAAO;AAAA,cACX;AAAA,YACJ;AAEA,mBAAO;AAAA,UACX;AAAA,QACJ;AAEA,iBAAS,QAAQ,GAAG;AAChB,cAAI,EAAE,YAAY,MAAM;AACpB,gBAAI,QAAQ,gBAAgB,CAAC,GACzB,cAAc,KAAK,KAAK,MAAM,iBAAiB,SAAU,GAAG;AACxD,qBAAO,KAAK;AAAA,YAChB,CAAC,GACD,aACI,CAAC,MAAM,EAAE,GAAG,QAAQ,CAAC,KACrB,MAAM,WAAW,KACjB,CAAC,MAAM,SACP,CAAC,MAAM,cACP,CAAC,MAAM,gBACP,CAAC,MAAM,kBACP,CAAC,MAAM,mBACP,CAAC,MAAM,aACP,CAAC,MAAM,iBACP,CAAC,MAAM,oBACN,CAAC,MAAM,YAAa,MAAM,YAAY;AAE/C,gBAAI,EAAE,SAAS;AACX,2BACI,cACA,MAAM,kBAAkB,KACxB,MAAM,aAAa,WAAW,KAC9B,MAAM,YAAY;AAAA,YAC1B;AAEA,gBAAI,OAAO,YAAY,QAAQ,CAAC,OAAO,SAAS,CAAC,GAAG;AAChD,gBAAE,WAAW;AAAA,YACjB,OAAO;AACH,qBAAO;AAAA,YACX;AAAA,UACJ;AACA,iBAAO,EAAE;AAAA,QACb;AAEA,iBAAS,cAAc,OAAO;AAC1B,cAAI,IAAI,UAAU,GAAG;AACrB,cAAI,SAAS,MAAM;AACf,YAAAH,QAAO,gBAAgB,CAAC,GAAG,KAAK;AAAA,UACpC,OAAO;AACH,4BAAgB,CAAC,EAAE,kBAAkB;AAAA,UACzC;AAEA,iBAAO;AAAA,QACX;AAIA,YAAI,mBAAoBL,OAAM,mBAAmB,CAAC,GAC9C,mBAAmB;AAEvB,iBAAS,WAAWS,KAAIC,OAAM;AAC1B,cAAI,GACA,MACA,KACA,sBAAsB,iBAAiB;AAE3C,cAAI,CAAC,YAAYA,MAAK,gBAAgB,GAAG;AACrC,YAAAD,IAAG,mBAAmBC,MAAK;AAAA,UAC/B;AACA,cAAI,CAAC,YAAYA,MAAK,EAAE,GAAG;AACvB,YAAAD,IAAG,KAAKC,MAAK;AAAA,UACjB;AACA,cAAI,CAAC,YAAYA,MAAK,EAAE,GAAG;AACvB,YAAAD,IAAG,KAAKC,MAAK;AAAA,UACjB;AACA,cAAI,CAAC,YAAYA,MAAK,EAAE,GAAG;AACvB,YAAAD,IAAG,KAAKC,MAAK;AAAA,UACjB;AACA,cAAI,CAAC,YAAYA,MAAK,OAAO,GAAG;AAC5B,YAAAD,IAAG,UAAUC,MAAK;AAAA,UACtB;AACA,cAAI,CAAC,YAAYA,MAAK,IAAI,GAAG;AACzB,YAAAD,IAAG,OAAOC,MAAK;AAAA,UACnB;AACA,cAAI,CAAC,YAAYA,MAAK,MAAM,GAAG;AAC3B,YAAAD,IAAG,SAASC,MAAK;AAAA,UACrB;AACA,cAAI,CAAC,YAAYA,MAAK,OAAO,GAAG;AAC5B,YAAAD,IAAG,UAAUC,MAAK;AAAA,UACtB;AACA,cAAI,CAAC,YAAYA,MAAK,GAAG,GAAG;AACxB,YAAAD,IAAG,MAAM,gBAAgBC,KAAI;AAAA,UACjC;AACA,cAAI,CAAC,YAAYA,MAAK,OAAO,GAAG;AAC5B,YAAAD,IAAG,UAAUC,MAAK;AAAA,UACtB;AAEA,cAAI,sBAAsB,GAAG;AACzB,iBAAK,IAAI,GAAG,IAAI,qBAAqB,KAAK;AACtC,qBAAO,iBAAiB,CAAC;AACzB,oBAAMA,MAAK,IAAI;AACf,kBAAI,CAAC,YAAY,GAAG,GAAG;AACnB,gBAAAD,IAAG,IAAI,IAAI;AAAA,cACf;AAAA,YACJ;AAAA,UACJ;AAEA,iBAAOA;AAAA,QACX;AAGA,iBAAS,OAAO,QAAQ;AACpB,qBAAW,MAAM,MAAM;AACvB,eAAK,KAAK,IAAI,KAAK,OAAO,MAAM,OAAO,OAAO,GAAG,QAAQ,IAAI,GAAG;AAChE,cAAI,CAAC,KAAK,QAAQ,GAAG;AACjB,iBAAK,KAAK,oBAAI,KAAK,GAAG;AAAA,UAC1B;AAGA,cAAI,qBAAqB,OAAO;AAC5B,+BAAmB;AACnB,YAAAT,OAAM,aAAa,IAAI;AACvB,+BAAmB;AAAA,UACvB;AAAA,QACJ;AAEA,iBAAS,SAAS,KAAK;AACnB,iBACI,eAAe,UAAW,OAAO,QAAQ,IAAI,oBAAoB;AAAA,QAEzE;AAEA,iBAASW,MAAK,KAAK;AACf,cACIX,OAAM,gCAAgC,SACtC,OAAO,YAAY,eACnB,QAAQ,MACV;AACE,oBAAQ,KAAK,0BAA0B,GAAG;AAAA,UAC9C;AAAA,QACJ;AAEA,iBAAS,UAAU,KAAK,IAAI;AACxB,cAAI,YAAY;AAEhB,iBAAOK,QAAO,WAAY;AACtB,gBAAIL,OAAM,sBAAsB,MAAM;AAClC,cAAAA,OAAM,mBAAmB,MAAM,GAAG;AAAA,YACtC;AACA,gBAAI,WAAW;AACX,kBAAI,OAAO,CAAC,GACR,KACA,GACA,KACA,SAAS,UAAU;AACvB,mBAAK,IAAI,GAAG,IAAI,QAAQ,KAAK;AACzB,sBAAM;AACN,oBAAI,OAAO,UAAU,CAAC,MAAM,UAAU;AAClC,yBAAO,QAAQ,IAAI;AACnB,uBAAK,OAAO,UAAU,CAAC,GAAG;AACtB,wBAAI,WAAW,UAAU,CAAC,GAAG,GAAG,GAAG;AAC/B,6BAAO,MAAM,OAAO,UAAU,CAAC,EAAE,GAAG,IAAI;AAAA,oBAC5C;AAAA,kBACJ;AACA,wBAAM,IAAI,MAAM,GAAG,EAAE;AAAA,gBACzB,OAAO;AACH,wBAAM,UAAU,CAAC;AAAA,gBACrB;AACA,qBAAK,KAAK,GAAG;AAAA,cACjB;AACA,cAAAW;AAAA,gBACI,MACI,kBACA,MAAM,UAAU,MAAM,KAAK,IAAI,EAAE,KAAK,EAAE,IACxC,OACA,IAAI,MAAM,EAAE;AAAA,cACpB;AACA,0BAAY;AAAA,YAChB;AACA,mBAAO,GAAG,MAAM,MAAM,SAAS;AAAA,UACnC,GAAG,EAAE;AAAA,QACT;AAEA,YAAI,eAAe,CAAC;AAEpB,iBAAS,gBAAgBC,OAAM,KAAK;AAChC,cAAIZ,OAAM,sBAAsB,MAAM;AAClC,YAAAA,OAAM,mBAAmBY,OAAM,GAAG;AAAA,UACtC;AACA,cAAI,CAAC,aAAaA,KAAI,GAAG;AACrB,YAAAD,MAAK,GAAG;AACR,yBAAaC,KAAI,IAAI;AAAA,UACzB;AAAA,QACJ;AAEA,QAAAZ,OAAM,8BAA8B;AACpC,QAAAA,OAAM,qBAAqB;AAE3B,iBAASa,YAAW,OAAO;AACvB,iBACK,OAAO,aAAa,eAAe,iBAAiB,YACrD,OAAO,UAAU,SAAS,KAAK,KAAK,MAAM;AAAA,QAElD;AAEA,iBAAS,IAAI,QAAQ;AACjB,cAAI,MAAM;AACV,eAAK,KAAK,QAAQ;AACd,gBAAI,WAAW,QAAQ,CAAC,GAAG;AACvB,qBAAO,OAAO,CAAC;AACf,kBAAIA,YAAW,IAAI,GAAG;AAClB,qBAAK,CAAC,IAAI;AAAA,cACd,OAAO;AACH,qBAAK,MAAM,CAAC,IAAI;AAAA,cACpB;AAAA,YACJ;AAAA,UACJ;AACA,eAAK,UAAU;AAIf,eAAK,iCAAiC,IAAI;AAAA,aACrC,KAAK,wBAAwB,UAAU,KAAK,cAAc,UACvD,MACA,UAAU;AAAA,UAClB;AAAA,QACJ;AAEA,iBAAS,aAAa,cAAc,aAAa;AAC7C,cAAI,MAAMR,QAAO,CAAC,GAAG,YAAY,GAC7B;AACJ,eAAK,QAAQ,aAAa;AACtB,gBAAI,WAAW,aAAa,IAAI,GAAG;AAC/B,kBAAI,SAAS,aAAa,IAAI,CAAC,KAAK,SAAS,YAAY,IAAI,CAAC,GAAG;AAC7D,oBAAI,IAAI,IAAI,CAAC;AACb,gBAAAA,QAAO,IAAI,IAAI,GAAG,aAAa,IAAI,CAAC;AACpC,gBAAAA,QAAO,IAAI,IAAI,GAAG,YAAY,IAAI,CAAC;AAAA,cACvC,WAAW,YAAY,IAAI,KAAK,MAAM;AAClC,oBAAI,IAAI,IAAI,YAAY,IAAI;AAAA,cAChC,OAAO;AACH,uBAAO,IAAI,IAAI;AAAA,cACnB;AAAA,YACJ;AAAA,UACJ;AACA,eAAK,QAAQ,cAAc;AACvB,gBACI,WAAW,cAAc,IAAI,KAC7B,CAAC,WAAW,aAAa,IAAI,KAC7B,SAAS,aAAa,IAAI,CAAC,GAC7B;AAEE,kBAAI,IAAI,IAAIA,QAAO,CAAC,GAAG,IAAI,IAAI,CAAC;AAAA,YACpC;AAAA,UACJ;AACA,iBAAO;AAAA,QACX;AAEA,iBAAS,OAAO,QAAQ;AACpB,cAAI,UAAU,MAAM;AAChB,iBAAK,IAAI,MAAM;AAAA,UACnB;AAAA,QACJ;AAEA,YAAI;AAEJ,YAAI,OAAO,MAAM;AACb,iBAAO,OAAO;AAAA,QAClB,OAAO;AACH,iBAAO,SAAU,KAAK;AAClB,gBAAI,GACA,MAAM,CAAC;AACX,iBAAK,KAAK,KAAK;AACX,kBAAI,WAAW,KAAK,CAAC,GAAG;AACpB,oBAAI,KAAK,CAAC;AAAA,cACd;AAAA,YACJ;AACA,mBAAO;AAAA,UACX;AAAA,QACJ;AAEA,YAAI,kBAAkB;AAAA,UAClB,SAAS;AAAA,UACT,SAAS;AAAA,UACT,UAAU;AAAA,UACV,SAAS;AAAA,UACT,UAAU;AAAA,UACV,UAAU;AAAA,QACd;AAEA,iBAASS,UAAS,KAAK,KAAKC,MAAK;AAC7B,cAAI,SAAS,KAAK,UAAU,GAAG,KAAK,KAAK,UAAU,UAAU;AAC7D,iBAAOF,YAAW,MAAM,IAAI,OAAO,KAAK,KAAKE,IAAG,IAAI;AAAA,QACxD;AAEA,iBAAS,SAASC,SAAQ,cAAc,WAAW;AAC/C,cAAI,YAAY,KAAK,KAAK,IAAIA,OAAM,GAChC,cAAc,eAAe,UAAU,QACvCC,QAAOD,WAAU;AACrB,kBACKC,QAAQ,YAAY,MAAM,KAAM,OACjC,KAAK,IAAI,IAAI,KAAK,IAAI,GAAG,WAAW,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,IAC1D;AAAA,QAER;AAEA,YAAI,mBACI,0MACJ,wBAAwB,8CACxB,kBAAkB,CAAC,GACnB,uBAAuB,CAAC;AAM5B,iBAAS,eAAeC,QAAO,QAAQC,UAAS,UAAU;AACtD,cAAI,OAAO;AACX,cAAI,OAAO,aAAa,UAAU;AAC9B,mBAAO,WAAY;AACf,qBAAO,KAAK,QAAQ,EAAE;AAAA,YAC1B;AAAA,UACJ;AACA,cAAID,QAAO;AACP,iCAAqBA,MAAK,IAAI;AAAA,UAClC;AACA,cAAI,QAAQ;AACR,iCAAqB,OAAO,CAAC,CAAC,IAAI,WAAY;AAC1C,qBAAO,SAAS,KAAK,MAAM,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC;AAAA,YACrE;AAAA,UACJ;AACA,cAAIC,UAAS;AACT,iCAAqBA,QAAO,IAAI,WAAY;AACxC,qBAAO,KAAK,WAAW,EAAE;AAAA,gBACrB,KAAK,MAAM,MAAM,SAAS;AAAA,gBAC1BD;AAAA,cACJ;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAEA,iBAAS,uBAAuB,OAAO;AACnC,cAAI,MAAM,MAAM,UAAU,GAAG;AACzB,mBAAO,MAAM,QAAQ,YAAY,EAAE;AAAA,UACvC;AACA,iBAAO,MAAM,QAAQ,OAAO,EAAE;AAAA,QAClC;AAEA,iBAAS,mBAAmBZ,SAAQ;AAChC,cAAI,QAAQA,QAAO,MAAM,gBAAgB,GACrC,GACAc;AAEJ,eAAK,IAAI,GAAGA,UAAS,MAAM,QAAQ,IAAIA,SAAQ,KAAK;AAChD,gBAAI,qBAAqB,MAAM,CAAC,CAAC,GAAG;AAChC,oBAAM,CAAC,IAAI,qBAAqB,MAAM,CAAC,CAAC;AAAA,YAC5C,OAAO;AACH,oBAAM,CAAC,IAAI,uBAAuB,MAAM,CAAC,CAAC;AAAA,YAC9C;AAAA,UACJ;AAEA,iBAAO,SAAU,KAAK;AAClB,gBAAI,SAAS,IACTC;AACJ,iBAAKA,KAAI,GAAGA,KAAID,SAAQC,MAAK;AACzB,wBAAUR,YAAW,MAAMQ,EAAC,CAAC,IACvB,MAAMA,EAAC,EAAE,KAAK,KAAKf,OAAM,IACzB,MAAMe,EAAC;AAAA,YACjB;AACA,mBAAO;AAAA,UACX;AAAA,QACJ;AAGA,iBAAS,aAAa,GAAGf,SAAQ;AAC7B,cAAI,CAAC,EAAE,QAAQ,GAAG;AACd,mBAAO,EAAE,WAAW,EAAE,YAAY;AAAA,UACtC;AAEA,UAAAA,UAAS,aAAaA,SAAQ,EAAE,WAAW,CAAC;AAC5C,0BAAgBA,OAAM,IAClB,gBAAgBA,OAAM,KAAK,mBAAmBA,OAAM;AAExD,iBAAO,gBAAgBA,OAAM,EAAE,CAAC;AAAA,QACpC;AAEA,iBAAS,aAAaA,SAAQC,SAAQ;AAClC,cAAI,IAAI;AAER,mBAAS,4BAA4B,OAAO;AACxC,mBAAOA,QAAO,eAAe,KAAK,KAAK;AAAA,UAC3C;AAEA,gCAAsB,YAAY;AAClC,iBAAO,KAAK,KAAK,sBAAsB,KAAKD,OAAM,GAAG;AACjD,YAAAA,UAASA,QAAO;AAAA,cACZ;AAAA,cACA;AAAA,YACJ;AACA,kCAAsB,YAAY;AAClC,iBAAK;AAAA,UACT;AAEA,iBAAOA;AAAA,QACX;AAEA,YAAI,wBAAwB;AAAA,UACxB,KAAK;AAAA,UACL,IAAI;AAAA,UACJ,GAAG;AAAA,UACH,IAAI;AAAA,UACJ,KAAK;AAAA,UACL,MAAM;AAAA,QACV;AAEA,iBAAS,eAAe,KAAK;AACzB,cAAIA,UAAS,KAAK,gBAAgB,GAAG,GACjC,cAAc,KAAK,gBAAgB,IAAI,YAAY,CAAC;AAExD,cAAIA,WAAU,CAAC,aAAa;AACxB,mBAAOA;AAAA,UACX;AAEA,eAAK,gBAAgB,GAAG,IAAI,YACvB,MAAM,gBAAgB,EACtB,IAAI,SAAU,KAAK;AAChB,gBACI,QAAQ,UACR,QAAQ,QACR,QAAQ,QACR,QAAQ,QACV;AACE,qBAAO,IAAI,MAAM,CAAC;AAAA,YACtB;AACA,mBAAO;AAAA,UACX,CAAC,EACA,KAAK,EAAE;AAEZ,iBAAO,KAAK,gBAAgB,GAAG;AAAA,QACnC;AAEA,YAAI,qBAAqB;AAEzB,iBAAS,cAAc;AACnB,iBAAO,KAAK;AAAA,QAChB;AAEA,YAAI,iBAAiB,MACjB,gCAAgC;AAEpC,iBAASa,SAAQH,SAAQ;AACrB,iBAAO,KAAK,SAAS,QAAQ,MAAMA,OAAM;AAAA,QAC7C;AAEA,YAAI,sBAAsB;AAAA,UACtB,QAAQ;AAAA,UACR,MAAM;AAAA,UACN,GAAG;AAAA,UACH,IAAI;AAAA,UACJ,GAAG;AAAA,UACH,IAAI;AAAA,UACJ,GAAG;AAAA,UACH,IAAI;AAAA,UACJ,GAAG;AAAA,UACH,IAAI;AAAA,UACJ,GAAG;AAAA,UACH,IAAI;AAAA,UACJ,GAAG;AAAA,UACH,IAAI;AAAA,UACJ,GAAG;AAAA,UACH,IAAI;AAAA,QACR;AAEA,iBAAS,aAAaA,SAAQ,eAAe,QAAQ,UAAU;AAC3D,cAAI,SAAS,KAAK,cAAc,MAAM;AACtC,iBAAOH,YAAW,MAAM,IAClB,OAAOG,SAAQ,eAAe,QAAQ,QAAQ,IAC9C,OAAO,QAAQ,OAAOA,OAAM;AAAA,QACtC;AAEA,iBAAS,WAAWM,OAAM,QAAQ;AAC9B,cAAIhB,UAAS,KAAK,cAAcgB,QAAO,IAAI,WAAW,MAAM;AAC5D,iBAAOT,YAAWP,OAAM,IAAIA,QAAO,MAAM,IAAIA,QAAO,QAAQ,OAAO,MAAM;AAAA,QAC7E;AAEA,YAAI,UAAU,CAAC;AAEf,iBAAS,aAAaiB,OAAM,WAAW;AACnC,cAAI,YAAYA,MAAK,YAAY;AACjC,kBAAQ,SAAS,IAAI,QAAQ,YAAY,GAAG,IAAI,QAAQ,SAAS,IAAIA;AAAA,QACzE;AAEA,iBAAS,eAAe,OAAO;AAC3B,iBAAO,OAAO,UAAU,WAClB,QAAQ,KAAK,KAAK,QAAQ,MAAM,YAAY,CAAC,IAC7C;AAAA,QACV;AAEA,iBAAS,qBAAqB,aAAa;AACvC,cAAI,kBAAkB,CAAC,GACnB,gBACA;AAEJ,eAAK,QAAQ,aAAa;AACtB,gBAAI,WAAW,aAAa,IAAI,GAAG;AAC/B,+BAAiB,eAAe,IAAI;AACpC,kBAAI,gBAAgB;AAChB,gCAAgB,cAAc,IAAI,YAAY,IAAI;AAAA,cACtD;AAAA,YACJ;AAAA,UACJ;AAEA,iBAAO;AAAA,QACX;AAEA,YAAI,aAAa,CAAC;AAElB,iBAAS,gBAAgBA,OAAM,UAAU;AACrC,qBAAWA,KAAI,IAAI;AAAA,QACvB;AAEA,iBAAS,oBAAoB,UAAU;AACnC,cAAI,QAAQ,CAAC,GACT;AACJ,eAAK,KAAK,UAAU;AAChB,gBAAI,WAAW,UAAU,CAAC,GAAG;AACzB,oBAAM,KAAK,EAAE,MAAM,GAAG,UAAU,WAAW,CAAC,EAAE,CAAC;AAAA,YACnD;AAAA,UACJ;AACA,gBAAM,KAAK,SAAUrB,IAAG,GAAG;AACvB,mBAAOA,GAAE,WAAW,EAAE;AAAA,UAC1B,CAAC;AACD,iBAAO;AAAA,QACX;AAEA,iBAAS,WAAW,MAAM;AACtB,iBAAQ,OAAO,MAAM,KAAK,OAAO,QAAQ,KAAM,OAAO,QAAQ;AAAA,QAClE;AAEA,iBAAS,SAASc,SAAQ;AACtB,cAAIA,UAAS,GAAG;AAEZ,mBAAO,KAAK,KAAKA,OAAM,KAAK;AAAA,UAChC,OAAO;AACH,mBAAO,KAAK,MAAMA,OAAM;AAAA,UAC5B;AAAA,QACJ;AAEA,iBAAS,MAAM,qBAAqB;AAChC,cAAI,gBAAgB,CAAC,qBACjB,QAAQ;AAEZ,cAAI,kBAAkB,KAAK,SAAS,aAAa,GAAG;AAChD,oBAAQ,SAAS,aAAa;AAAA,UAClC;AAEA,iBAAO;AAAA,QACX;AAEA,iBAAS,WAAWO,OAAM,UAAU;AAChC,iBAAO,SAAU,OAAO;AACpB,gBAAI,SAAS,MAAM;AACf,oBAAM,MAAMA,OAAM,KAAK;AACvB,cAAAvB,OAAM,aAAa,MAAM,QAAQ;AACjC,qBAAO;AAAA,YACX,OAAO;AACH,qBAAO,IAAI,MAAMuB,KAAI;AAAA,YACzB;AAAA,UACJ;AAAA,QACJ;AAEA,iBAAS,IAAI,KAAKA,OAAM;AACpB,iBAAO,IAAI,QAAQ,IACb,IAAI,GAAG,SAAS,IAAI,SAAS,QAAQ,MAAMA,KAAI,EAAE,IACjD;AAAA,QACV;AAEA,iBAAS,MAAM,KAAKA,OAAM,OAAO;AAC7B,cAAI,IAAI,QAAQ,KAAK,CAAC,MAAM,KAAK,GAAG;AAChC,gBACIA,UAAS,cACT,WAAW,IAAI,KAAK,CAAC,KACrB,IAAI,MAAM,MAAM,KAChB,IAAI,KAAK,MAAM,IACjB;AACE,sBAAQ,MAAM,KAAK;AACnB,kBAAI,GAAG,SAAS,IAAI,SAAS,QAAQ,MAAMA,KAAI;AAAA,gBAC3C;AAAA,gBACA,IAAI,MAAM;AAAA,gBACV,YAAY,OAAO,IAAI,MAAM,CAAC;AAAA,cAClC;AAAA,YACJ,OAAO;AACH,kBAAI,GAAG,SAAS,IAAI,SAAS,QAAQ,MAAMA,KAAI,EAAE,KAAK;AAAA,YAC1D;AAAA,UACJ;AAAA,QACJ;AAIA,iBAAS,UAAU,OAAO;AACtB,kBAAQ,eAAe,KAAK;AAC5B,cAAIV,YAAW,KAAK,KAAK,CAAC,GAAG;AACzB,mBAAO,KAAK,KAAK,EAAE;AAAA,UACvB;AACA,iBAAO;AAAA,QACX;AAEA,iBAAS,UAAU,OAAO,OAAO;AAC7B,cAAI,OAAO,UAAU,UAAU;AAC3B,oBAAQ,qBAAqB,KAAK;AAClC,gBAAI,cAAc,oBAAoB,KAAK,GACvC,GACA,iBAAiB,YAAY;AACjC,iBAAK,IAAI,GAAG,IAAI,gBAAgB,KAAK;AACjC,mBAAK,YAAY,CAAC,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC,EAAE,IAAI,CAAC;AAAA,YACxD;AAAA,UACJ,OAAO;AACH,oBAAQ,eAAe,KAAK;AAC5B,gBAAIA,YAAW,KAAK,KAAK,CAAC,GAAG;AACzB,qBAAO,KAAK,KAAK,EAAE,KAAK;AAAA,YAC5B;AAAA,UACJ;AACA,iBAAO;AAAA,QACX;AAEA,YAAI,SAAS,MACT,SAAS,QACT,SAAS,SACT,SAAS,SACT,SAAS,cACT,YAAY,SACZ,YAAY,aACZ,YAAY,iBACZ,YAAY,WACZ,YAAY,WACZ,YAAY,gBACZ,gBAAgB,OAChB,cAAc,YACd,cAAc,sBACd,mBAAmB,2BACnB,iBAAiB,wBAGjB,YACI,yJACJ;AAEJ,kBAAU,CAAC;AAEX,iBAAS,cAAcK,QAAO,OAAO,aAAa;AAC9C,kBAAQA,MAAK,IAAIL,YAAW,KAAK,IAC3B,QACA,SAAU,UAAUW,aAAY;AAC5B,mBAAO,YAAY,cAAc,cAAc;AAAA,UACnD;AAAA,QACV;AAEA,iBAAS,sBAAsBN,QAAO,QAAQ;AAC1C,cAAI,CAAC,WAAW,SAASA,MAAK,GAAG;AAC7B,mBAAO,IAAI,OAAO,eAAeA,MAAK,CAAC;AAAA,UAC3C;AAEA,iBAAO,QAAQA,MAAK,EAAE,OAAO,SAAS,OAAO,OAAO;AAAA,QACxD;AAGA,iBAAS,eAAeO,IAAG;AACvB,iBAAO;AAAA,YACHA,GACK,QAAQ,MAAM,EAAE,EAChB;AAAA,cACG;AAAA,cACA,SAAU,SAAS,IAAI,IAAI,IAAI,IAAI;AAC/B,uBAAO,MAAM,MAAM,MAAM;AAAA,cAC7B;AAAA,YACJ;AAAA,UACR;AAAA,QACJ;AAEA,iBAAS,YAAYA,IAAG;AACpB,iBAAOA,GAAE,QAAQ,0BAA0B,MAAM;AAAA,QACrD;AAEA,YAAI,SAAS,CAAC;AAEd,iBAAS,cAAcP,QAAO,UAAU;AACpC,cAAI,GACA,OAAO,UACP;AACJ,cAAI,OAAOA,WAAU,UAAU;AAC3B,YAAAA,SAAQ,CAACA,MAAK;AAAA,UAClB;AACA,cAAI,SAAS,QAAQ,GAAG;AACpB,mBAAO,SAAU,OAAO,OAAO;AAC3B,oBAAM,QAAQ,IAAI,MAAM,KAAK;AAAA,YACjC;AAAA,UACJ;AACA,qBAAWA,OAAM;AACjB,eAAK,IAAI,GAAG,IAAI,UAAU,KAAK;AAC3B,mBAAOA,OAAM,CAAC,CAAC,IAAI;AAAA,UACvB;AAAA,QACJ;AAEA,iBAAS,kBAAkBA,QAAO,UAAU;AACxC,wBAAcA,QAAO,SAAU,OAAO,OAAO,QAAQA,QAAO;AACxD,mBAAO,KAAK,OAAO,MAAM,CAAC;AAC1B,qBAAS,OAAO,OAAO,IAAI,QAAQA,MAAK;AAAA,UAC5C,CAAC;AAAA,QACL;AAEA,iBAAS,wBAAwBA,QAAO,OAAO,QAAQ;AACnD,cAAI,SAAS,QAAQ,WAAW,QAAQA,MAAK,GAAG;AAC5C,mBAAOA,MAAK,EAAE,OAAO,OAAO,IAAI,QAAQA,MAAK;AAAA,UACjD;AAAA,QACJ;AAEA,YAAI,OAAO,GACP,QAAQ,GACR,OAAO,GACP,OAAO,GACP,SAAS,GACT,SAAS,GACT,cAAc,GACd,OAAO,GACP,UAAU;AAEd,iBAAS,IAAIQ,IAAGC,IAAG;AACf,kBAASD,KAAIC,KAAKA,MAAKA;AAAA,QAC3B;AAEA,YAAIC;AAEJ,YAAI,MAAM,UAAU,SAAS;AACzB,UAAAA,WAAU,MAAM,UAAU;AAAA,QAC9B,OAAO;AACH,UAAAA,WAAU,SAAUC,IAAG;AAEnB,gBAAI;AACJ,iBAAK,IAAI,GAAG,IAAI,KAAK,QAAQ,EAAE,GAAG;AAC9B,kBAAI,KAAK,CAAC,MAAMA,IAAG;AACf,uBAAO;AAAA,cACX;AAAA,YACJ;AACA,mBAAO;AAAA,UACX;AAAA,QACJ;AAEA,iBAAS,YAAY,MAAM,OAAO;AAC9B,cAAI,MAAM,IAAI,KAAK,MAAM,KAAK,GAAG;AAC7B,mBAAO;AAAA,UACX;AACA,cAAI,WAAW,IAAI,OAAO,EAAE;AAC5B,mBAAS,QAAQ,YAAY;AAC7B,iBAAO,aAAa,IACd,WAAW,IAAI,IACX,KACA,KACJ,KAAO,WAAW,IAAK;AAAA,QACjC;AAIA,uBAAe,KAAK,CAAC,MAAM,CAAC,GAAG,MAAM,WAAY;AAC7C,iBAAO,KAAK,MAAM,IAAI;AAAA,QAC1B,CAAC;AAED,uBAAe,OAAO,GAAG,GAAG,SAAUvB,SAAQ;AAC1C,iBAAO,KAAK,WAAW,EAAE,YAAY,MAAMA,OAAM;AAAA,QACrD,CAAC;AAED,uBAAe,QAAQ,GAAG,GAAG,SAAUA,SAAQ;AAC3C,iBAAO,KAAK,WAAW,EAAE,OAAO,MAAMA,OAAM;AAAA,QAChD,CAAC;AAID,qBAAa,SAAS,GAAG;AAIzB,wBAAgB,SAAS,CAAC;AAI1B,sBAAc,KAAK,SAAS;AAC5B,sBAAc,MAAM,WAAW,MAAM;AACrC,sBAAc,OAAO,SAAU,UAAUC,SAAQ;AAC7C,iBAAOA,QAAO,iBAAiB,QAAQ;AAAA,QAC3C,CAAC;AACD,sBAAc,QAAQ,SAAU,UAAUA,SAAQ;AAC9C,iBAAOA,QAAO,YAAY,QAAQ;AAAA,QACtC,CAAC;AAED,sBAAc,CAAC,KAAK,IAAI,GAAG,SAAU,OAAO,OAAO;AAC/C,gBAAM,KAAK,IAAI,MAAM,KAAK,IAAI;AAAA,QAClC,CAAC;AAED,sBAAc,CAAC,OAAO,MAAM,GAAG,SAAU,OAAO,OAAO,QAAQW,QAAO;AAClE,cAAI,QAAQ,OAAO,QAAQ,YAAY,OAAOA,QAAO,OAAO,OAAO;AAEnE,cAAI,SAAS,MAAM;AACf,kBAAM,KAAK,IAAI;AAAA,UACnB,OAAO;AACH,4BAAgB,MAAM,EAAE,eAAe;AAAA,UAC3C;AAAA,QACJ,CAAC;AAID,YAAI,sBACI,wFAAwF;AAAA,UACpF;AAAA,QACJ,GACJ,2BACI,kDAAkD,MAAM,GAAG,GAC/D,mBAAmB,iCACnB,0BAA0B,WAC1B,qBAAqB;AAEzB,iBAAS,aAAa,GAAGZ,SAAQ;AAC7B,cAAI,CAAC,GAAG;AACJ,mBAAOL,SAAQ,KAAK,OAAO,IACrB,KAAK,UACL,KAAK,QAAQ,YAAY;AAAA,UACnC;AACA,iBAAOA,SAAQ,KAAK,OAAO,IACrB,KAAK,QAAQ,EAAE,MAAM,CAAC,IACtB,KAAK,SACA,KAAK,QAAQ,YAAY,kBAAkB,KAAKK,OAAM,IACjD,WACA,YACV,EAAE,EAAE,MAAM,CAAC;AAAA,QACrB;AAEA,iBAAS,kBAAkB,GAAGA,SAAQ;AAClC,cAAI,CAAC,GAAG;AACJ,mBAAOL,SAAQ,KAAK,YAAY,IAC1B,KAAK,eACL,KAAK,aAAa,YAAY;AAAA,UACxC;AACA,iBAAOA,SAAQ,KAAK,YAAY,IAC1B,KAAK,aAAa,EAAE,MAAM,CAAC,IAC3B,KAAK,aACD,iBAAiB,KAAKK,OAAM,IAAI,WAAW,YAC/C,EAAE,EAAE,MAAM,CAAC;AAAA,QACrB;AAEA,iBAAS,kBAAkB,WAAWA,SAAQ,QAAQ;AAClD,cAAI,GACA,IACA,KACA,MAAM,UAAU,kBAAkB;AACtC,cAAI,CAAC,KAAK,cAAc;AAEpB,iBAAK,eAAe,CAAC;AACrB,iBAAK,mBAAmB,CAAC;AACzB,iBAAK,oBAAoB,CAAC;AAC1B,iBAAK,IAAI,GAAG,IAAI,IAAI,EAAE,GAAG;AACrB,oBAAM,UAAU,CAAC,KAAM,CAAC,CAAC;AACzB,mBAAK,kBAAkB,CAAC,IAAI,KAAK;AAAA,gBAC7B;AAAA,gBACA;AAAA,cACJ,EAAE,kBAAkB;AACpB,mBAAK,iBAAiB,CAAC,IAAI,KAAK,OAAO,KAAK,EAAE,EAAE,kBAAkB;AAAA,YACtE;AAAA,UACJ;AAEA,cAAI,QAAQ;AACR,gBAAIA,YAAW,OAAO;AAClB,mBAAKsB,SAAQ,KAAK,KAAK,mBAAmB,GAAG;AAC7C,qBAAO,OAAO,KAAK,KAAK;AAAA,YAC5B,OAAO;AACH,mBAAKA,SAAQ,KAAK,KAAK,kBAAkB,GAAG;AAC5C,qBAAO,OAAO,KAAK,KAAK;AAAA,YAC5B;AAAA,UACJ,OAAO;AACH,gBAAItB,YAAW,OAAO;AAClB,mBAAKsB,SAAQ,KAAK,KAAK,mBAAmB,GAAG;AAC7C,kBAAI,OAAO,IAAI;AACX,uBAAO;AAAA,cACX;AACA,mBAAKA,SAAQ,KAAK,KAAK,kBAAkB,GAAG;AAC5C,qBAAO,OAAO,KAAK,KAAK;AAAA,YAC5B,OAAO;AACH,mBAAKA,SAAQ,KAAK,KAAK,kBAAkB,GAAG;AAC5C,kBAAI,OAAO,IAAI;AACX,uBAAO;AAAA,cACX;AACA,mBAAKA,SAAQ,KAAK,KAAK,mBAAmB,GAAG;AAC7C,qBAAO,OAAO,KAAK,KAAK;AAAA,YAC5B;AAAA,UACJ;AAAA,QACJ;AAEA,iBAAS,kBAAkB,WAAWtB,SAAQ,QAAQ;AAClD,cAAI,GAAG,KAAK;AAEZ,cAAI,KAAK,mBAAmB;AACxB,mBAAO,kBAAkB,KAAK,MAAM,WAAWA,SAAQ,MAAM;AAAA,UACjE;AAEA,cAAI,CAAC,KAAK,cAAc;AACpB,iBAAK,eAAe,CAAC;AACrB,iBAAK,mBAAmB,CAAC;AACzB,iBAAK,oBAAoB,CAAC;AAAA,UAC9B;AAKA,eAAK,IAAI,GAAG,IAAI,IAAI,KAAK;AAErB,kBAAM,UAAU,CAAC,KAAM,CAAC,CAAC;AACzB,gBAAI,UAAU,CAAC,KAAK,iBAAiB,CAAC,GAAG;AACrC,mBAAK,iBAAiB,CAAC,IAAI,IAAI;AAAA,gBAC3B,MAAM,KAAK,OAAO,KAAK,EAAE,EAAE,QAAQ,KAAK,EAAE,IAAI;AAAA,gBAC9C;AAAA,cACJ;AACA,mBAAK,kBAAkB,CAAC,IAAI,IAAI;AAAA,gBAC5B,MAAM,KAAK,YAAY,KAAK,EAAE,EAAE,QAAQ,KAAK,EAAE,IAAI;AAAA,gBACnD;AAAA,cACJ;AAAA,YACJ;AACA,gBAAI,CAAC,UAAU,CAAC,KAAK,aAAa,CAAC,GAAG;AAClC,sBACI,MAAM,KAAK,OAAO,KAAK,EAAE,IAAI,OAAO,KAAK,YAAY,KAAK,EAAE;AAChE,mBAAK,aAAa,CAAC,IAAI,IAAI,OAAO,MAAM,QAAQ,KAAK,EAAE,GAAG,GAAG;AAAA,YACjE;AAEA,gBACI,UACAA,YAAW,UACX,KAAK,iBAAiB,CAAC,EAAE,KAAK,SAAS,GACzC;AACE,qBAAO;AAAA,YACX,WACI,UACAA,YAAW,SACX,KAAK,kBAAkB,CAAC,EAAE,KAAK,SAAS,GAC1C;AACE,qBAAO;AAAA,YACX,WAAW,CAAC,UAAU,KAAK,aAAa,CAAC,EAAE,KAAK,SAAS,GAAG;AACxD,qBAAO;AAAA,YACX;AAAA,UACJ;AAAA,QACJ;AAIA,iBAAS,SAAS,KAAK,OAAO;AAC1B,cAAI;AAEJ,cAAI,CAAC,IAAI,QAAQ,GAAG;AAEhB,mBAAO;AAAA,UACX;AAEA,cAAI,OAAO,UAAU,UAAU;AAC3B,gBAAI,QAAQ,KAAK,KAAK,GAAG;AACrB,sBAAQ,MAAM,KAAK;AAAA,YACvB,OAAO;AACH,sBAAQ,IAAI,WAAW,EAAE,YAAY,KAAK;AAE1C,kBAAI,CAAC,SAAS,KAAK,GAAG;AAClB,uBAAO;AAAA,cACX;AAAA,YACJ;AAAA,UACJ;AAEA,uBAAa,KAAK,IAAI,IAAI,KAAK,GAAG,YAAY,IAAI,KAAK,GAAG,KAAK,CAAC;AAChE,cAAI,GAAG,SAAS,IAAI,SAAS,QAAQ,MAAM,OAAO,EAAE,OAAO,UAAU;AACrE,iBAAO;AAAA,QACX;AAEA,iBAAS,YAAY,OAAO;AACxB,cAAI,SAAS,MAAM;AACf,qBAAS,MAAM,KAAK;AACpB,YAAAN,OAAM,aAAa,MAAM,IAAI;AAC7B,mBAAO;AAAA,UACX,OAAO;AACH,mBAAO,IAAI,MAAM,OAAO;AAAA,UAC5B;AAAA,QACJ;AAEA,iBAAS,iBAAiB;AACtB,iBAAO,YAAY,KAAK,KAAK,GAAG,KAAK,MAAM,CAAC;AAAA,QAChD;AAEA,iBAAS,iBAAiB,UAAU;AAChC,cAAI,KAAK,mBAAmB;AACxB,gBAAI,CAAC,WAAW,MAAM,cAAc,GAAG;AACnC,iCAAmB,KAAK,IAAI;AAAA,YAChC;AACA,gBAAI,UAAU;AACV,qBAAO,KAAK;AAAA,YAChB,OAAO;AACH,qBAAO,KAAK;AAAA,YAChB;AAAA,UACJ,OAAO;AACH,gBAAI,CAAC,WAAW,MAAM,mBAAmB,GAAG;AACxC,mBAAK,oBAAoB;AAAA,YAC7B;AACA,mBAAO,KAAK,2BAA2B,WACjC,KAAK,0BACL,KAAK;AAAA,UACf;AAAA,QACJ;AAEA,iBAAS,YAAY,UAAU;AAC3B,cAAI,KAAK,mBAAmB;AACxB,gBAAI,CAAC,WAAW,MAAM,cAAc,GAAG;AACnC,iCAAmB,KAAK,IAAI;AAAA,YAChC;AACA,gBAAI,UAAU;AACV,qBAAO,KAAK;AAAA,YAChB,OAAO;AACH,qBAAO,KAAK;AAAA,YAChB;AAAA,UACJ,OAAO;AACH,gBAAI,CAAC,WAAW,MAAM,cAAc,GAAG;AACnC,mBAAK,eAAe;AAAA,YACxB;AACA,mBAAO,KAAK,sBAAsB,WAC5B,KAAK,qBACL,KAAK;AAAA,UACf;AAAA,QACJ;AAEA,iBAAS,qBAAqB;AAC1B,mBAAS,UAAUE,IAAG,GAAG;AACrB,mBAAO,EAAE,SAASA,GAAE;AAAA,UACxB;AAEA,cAAI,cAAc,CAAC,GACf,aAAa,CAAC,GACd,cAAc,CAAC,GACf,GACA;AACJ,eAAK,IAAI,GAAG,IAAI,IAAI,KAAK;AAErB,kBAAM,UAAU,CAAC,KAAM,CAAC,CAAC;AACzB,wBAAY,KAAK,KAAK,YAAY,KAAK,EAAE,CAAC;AAC1C,uBAAW,KAAK,KAAK,OAAO,KAAK,EAAE,CAAC;AACpC,wBAAY,KAAK,KAAK,OAAO,KAAK,EAAE,CAAC;AACrC,wBAAY,KAAK,KAAK,YAAY,KAAK,EAAE,CAAC;AAAA,UAC9C;AAGA,sBAAY,KAAK,SAAS;AAC1B,qBAAW,KAAK,SAAS;AACzB,sBAAY,KAAK,SAAS;AAC1B,eAAK,IAAI,GAAG,IAAI,IAAI,KAAK;AACrB,wBAAY,CAAC,IAAI,YAAY,YAAY,CAAC,CAAC;AAC3C,uBAAW,CAAC,IAAI,YAAY,WAAW,CAAC,CAAC;AAAA,UAC7C;AACA,eAAK,IAAI,GAAG,IAAI,IAAI,KAAK;AACrB,wBAAY,CAAC,IAAI,YAAY,YAAY,CAAC,CAAC;AAAA,UAC/C;AAEA,eAAK,eAAe,IAAI,OAAO,OAAO,YAAY,KAAK,GAAG,IAAI,KAAK,GAAG;AACtE,eAAK,oBAAoB,KAAK;AAC9B,eAAK,qBAAqB,IAAI;AAAA,YAC1B,OAAO,WAAW,KAAK,GAAG,IAAI;AAAA,YAC9B;AAAA,UACJ;AACA,eAAK,0BAA0B,IAAI;AAAA,YAC/B,OAAO,YAAY,KAAK,GAAG,IAAI;AAAA,YAC/B;AAAA,UACJ;AAAA,QACJ;AAIA,uBAAe,KAAK,GAAG,GAAG,WAAY;AAClC,cAAI4B,KAAI,KAAK,KAAK;AAClB,iBAAOA,MAAK,OAAO,SAASA,IAAG,CAAC,IAAI,MAAMA;AAAA,QAC9C,CAAC;AAED,uBAAe,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,WAAY;AACxC,iBAAO,KAAK,KAAK,IAAI;AAAA,QACzB,CAAC;AAED,uBAAe,GAAG,CAAC,QAAQ,CAAC,GAAG,GAAG,MAAM;AACxC,uBAAe,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM;AACzC,uBAAe,GAAG,CAAC,UAAU,GAAG,IAAI,GAAG,GAAG,MAAM;AAIhD,qBAAa,QAAQ,GAAG;AAIxB,wBAAgB,QAAQ,CAAC;AAIzB,sBAAc,KAAK,WAAW;AAC9B,sBAAc,MAAM,WAAW,MAAM;AACrC,sBAAc,QAAQ,WAAW,MAAM;AACvC,sBAAc,SAAS,WAAW,MAAM;AACxC,sBAAc,UAAU,WAAW,MAAM;AAEzC,sBAAc,CAAC,SAAS,QAAQ,GAAG,IAAI;AACvC,sBAAc,QAAQ,SAAU,OAAO,OAAO;AAC1C,gBAAM,IAAI,IACN,MAAM,WAAW,IAAI9B,OAAM,kBAAkB,KAAK,IAAI,MAAM,KAAK;AAAA,QACzE,CAAC;AACD,sBAAc,MAAM,SAAU,OAAO,OAAO;AACxC,gBAAM,IAAI,IAAIA,OAAM,kBAAkB,KAAK;AAAA,QAC/C,CAAC;AACD,sBAAc,KAAK,SAAU,OAAO,OAAO;AACvC,gBAAM,IAAI,IAAI,SAAS,OAAO,EAAE;AAAA,QACpC,CAAC;AAID,iBAAS,WAAW,MAAM;AACtB,iBAAO,WAAW,IAAI,IAAI,MAAM;AAAA,QACpC;AAIA,QAAAA,OAAM,oBAAoB,SAAU,OAAO;AACvC,iBAAO,MAAM,KAAK,KAAK,MAAM,KAAK,IAAI,KAAK,OAAO;AAAA,QACtD;AAIA,YAAI,aAAa,WAAW,YAAY,IAAI;AAE5C,iBAAS,gBAAgB;AACrB,iBAAO,WAAW,KAAK,KAAK,CAAC;AAAA,QACjC;AAEA,iBAAS,WAAW8B,IAAG,GAAGC,IAAG,GAAG,GAAGN,IAAG,IAAI;AAGtC,cAAIO;AAEJ,cAAIF,KAAI,OAAOA,MAAK,GAAG;AAEnB,YAAAE,QAAO,IAAI,KAAKF,KAAI,KAAK,GAAGC,IAAG,GAAG,GAAGN,IAAG,EAAE;AAC1C,gBAAI,SAASO,MAAK,YAAY,CAAC,GAAG;AAC9B,cAAAA,MAAK,YAAYF,EAAC;AAAA,YACtB;AAAA,UACJ,OAAO;AACH,YAAAE,QAAO,IAAI,KAAKF,IAAG,GAAGC,IAAG,GAAG,GAAGN,IAAG,EAAE;AAAA,UACxC;AAEA,iBAAOO;AAAA,QACX;AAEA,iBAAS,cAAcF,IAAG;AACtB,cAAIE,OAAM;AAEV,cAAIF,KAAI,OAAOA,MAAK,GAAG;AACnB,mBAAO,MAAM,UAAU,MAAM,KAAK,SAAS;AAE3C,iBAAK,CAAC,IAAIA,KAAI;AACd,YAAAE,QAAO,IAAI,KAAK,KAAK,IAAI,MAAM,MAAM,IAAI,CAAC;AAC1C,gBAAI,SAASA,MAAK,eAAe,CAAC,GAAG;AACjC,cAAAA,MAAK,eAAeF,EAAC;AAAA,YACzB;AAAA,UACJ,OAAO;AACH,YAAAE,QAAO,IAAI,KAAK,KAAK,IAAI,MAAM,MAAM,SAAS,CAAC;AAAA,UACnD;AAEA,iBAAOA;AAAA,QACX;AAGA,iBAAS,gBAAgB,MAAM,KAAK,KAAK;AACrC,cACI,MAAM,IAAI,MAAM,KAEhB,SAAS,IAAI,cAAc,MAAM,GAAG,GAAG,EAAE,UAAU,IAAI,OAAO;AAElE,iBAAO,CAAC,QAAQ,MAAM;AAAA,QAC1B;AAGA,iBAAS,mBAAmB,MAAM,MAAM,SAAS,KAAK,KAAK;AACvD,cAAI,gBAAgB,IAAI,UAAU,OAAO,GACrC,aAAa,gBAAgB,MAAM,KAAK,GAAG,GAC3C,YAAY,IAAI,KAAK,OAAO,KAAK,eAAe,YAChD,SACA;AAEJ,cAAI,aAAa,GAAG;AAChB,sBAAU,OAAO;AACjB,2BAAe,WAAW,OAAO,IAAI;AAAA,UACzC,WAAW,YAAY,WAAW,IAAI,GAAG;AACrC,sBAAU,OAAO;AACjB,2BAAe,YAAY,WAAW,IAAI;AAAA,UAC9C,OAAO;AACH,sBAAU;AACV,2BAAe;AAAA,UACnB;AAEA,iBAAO;AAAA,YACH,MAAM;AAAA,YACN,WAAW;AAAA,UACf;AAAA,QACJ;AAEA,iBAAS,WAAW,KAAK,KAAK,KAAK;AAC/B,cAAI,aAAa,gBAAgB,IAAI,KAAK,GAAG,KAAK,GAAG,GACjD,OAAO,KAAK,OAAO,IAAI,UAAU,IAAI,aAAa,KAAK,CAAC,IAAI,GAC5D,SACA;AAEJ,cAAI,OAAO,GAAG;AACV,sBAAU,IAAI,KAAK,IAAI;AACvB,sBAAU,OAAO,YAAY,SAAS,KAAK,GAAG;AAAA,UAClD,WAAW,OAAO,YAAY,IAAI,KAAK,GAAG,KAAK,GAAG,GAAG;AACjD,sBAAU,OAAO,YAAY,IAAI,KAAK,GAAG,KAAK,GAAG;AACjD,sBAAU,IAAI,KAAK,IAAI;AAAA,UAC3B,OAAO;AACH,sBAAU,IAAI,KAAK;AACnB,sBAAU;AAAA,UACd;AAEA,iBAAO;AAAA,YACH,MAAM;AAAA,YACN,MAAM;AAAA,UACV;AAAA,QACJ;AAEA,iBAAS,YAAY,MAAM,KAAK,KAAK;AACjC,cAAI,aAAa,gBAAgB,MAAM,KAAK,GAAG,GAC3C,iBAAiB,gBAAgB,OAAO,GAAG,KAAK,GAAG;AACvD,kBAAQ,WAAW,IAAI,IAAI,aAAa,kBAAkB;AAAA,QAC9D;AAIA,uBAAe,KAAK,CAAC,MAAM,CAAC,GAAG,MAAM,MAAM;AAC3C,uBAAe,KAAK,CAAC,MAAM,CAAC,GAAG,MAAM,SAAS;AAI9C,qBAAa,QAAQ,GAAG;AACxB,qBAAa,WAAW,GAAG;AAI3B,wBAAgB,QAAQ,CAAC;AACzB,wBAAgB,WAAW,CAAC;AAI5B,sBAAc,KAAK,SAAS;AAC5B,sBAAc,MAAM,WAAW,MAAM;AACrC,sBAAc,KAAK,SAAS;AAC5B,sBAAc,MAAM,WAAW,MAAM;AAErC;AAAA,UACI,CAAC,KAAK,MAAM,KAAK,IAAI;AAAA,UACrB,SAAU,OAAO,MAAM,QAAQd,QAAO;AAClC,iBAAKA,OAAM,OAAO,GAAG,CAAC,CAAC,IAAI,MAAM,KAAK;AAAA,UAC1C;AAAA,QACJ;AAMA,iBAAS,WAAW,KAAK;AACrB,iBAAO,WAAW,KAAK,KAAK,MAAM,KAAK,KAAK,MAAM,GAAG,EAAE;AAAA,QAC3D;AAEA,YAAI,oBAAoB;AAAA,UACpB,KAAK;AAAA;AAAA,UACL,KAAK;AAAA;AAAA,QACT;AAEA,iBAAS,uBAAuB;AAC5B,iBAAO,KAAK,MAAM;AAAA,QACtB;AAEA,iBAAS,uBAAuB;AAC5B,iBAAO,KAAK,MAAM;AAAA,QACtB;AAIA,iBAAS,WAAW,OAAO;AACvB,cAAI,OAAO,KAAK,WAAW,EAAE,KAAK,IAAI;AACtC,iBAAO,SAAS,OAAO,OAAO,KAAK,KAAK,QAAQ,QAAQ,GAAG,GAAG;AAAA,QAClE;AAEA,iBAAS,cAAc,OAAO;AAC1B,cAAI,OAAO,WAAW,MAAM,GAAG,CAAC,EAAE;AAClC,iBAAO,SAAS,OAAO,OAAO,KAAK,KAAK,QAAQ,QAAQ,GAAG,GAAG;AAAA,QAClE;AAIA,uBAAe,KAAK,GAAG,MAAM,KAAK;AAElC,uBAAe,MAAM,GAAG,GAAG,SAAUZ,SAAQ;AACzC,iBAAO,KAAK,WAAW,EAAE,YAAY,MAAMA,OAAM;AAAA,QACrD,CAAC;AAED,uBAAe,OAAO,GAAG,GAAG,SAAUA,SAAQ;AAC1C,iBAAO,KAAK,WAAW,EAAE,cAAc,MAAMA,OAAM;AAAA,QACvD,CAAC;AAED,uBAAe,QAAQ,GAAG,GAAG,SAAUA,SAAQ;AAC3C,iBAAO,KAAK,WAAW,EAAE,SAAS,MAAMA,OAAM;AAAA,QAClD,CAAC;AAED,uBAAe,KAAK,GAAG,GAAG,SAAS;AACnC,uBAAe,KAAK,GAAG,GAAG,YAAY;AAItC,qBAAa,OAAO,GAAG;AACvB,qBAAa,WAAW,GAAG;AAC3B,qBAAa,cAAc,GAAG;AAG9B,wBAAgB,OAAO,EAAE;AACzB,wBAAgB,WAAW,EAAE;AAC7B,wBAAgB,cAAc,EAAE;AAIhC,sBAAc,KAAK,SAAS;AAC5B,sBAAc,KAAK,SAAS;AAC5B,sBAAc,KAAK,SAAS;AAC5B,sBAAc,MAAM,SAAU,UAAUC,SAAQ;AAC5C,iBAAOA,QAAO,iBAAiB,QAAQ;AAAA,QAC3C,CAAC;AACD,sBAAc,OAAO,SAAU,UAAUA,SAAQ;AAC7C,iBAAOA,QAAO,mBAAmB,QAAQ;AAAA,QAC7C,CAAC;AACD,sBAAc,QAAQ,SAAU,UAAUA,SAAQ;AAC9C,iBAAOA,QAAO,cAAc,QAAQ;AAAA,QACxC,CAAC;AAED,0BAAkB,CAAC,MAAM,OAAO,MAAM,GAAG,SAAU,OAAO,MAAM,QAAQW,QAAO;AAC3E,cAAI,UAAU,OAAO,QAAQ,cAAc,OAAOA,QAAO,OAAO,OAAO;AAEvE,cAAI,WAAW,MAAM;AACjB,iBAAK,IAAI;AAAA,UACb,OAAO;AACH,4BAAgB,MAAM,EAAE,iBAAiB;AAAA,UAC7C;AAAA,QACJ,CAAC;AAED,0BAAkB,CAAC,KAAK,KAAK,GAAG,GAAG,SAAU,OAAO,MAAM,QAAQA,QAAO;AACrE,eAAKA,MAAK,IAAI,MAAM,KAAK;AAAA,QAC7B,CAAC;AAID,iBAAS,aAAa,OAAOX,SAAQ;AACjC,cAAI,OAAO,UAAU,UAAU;AAC3B,mBAAO;AAAA,UACX;AAEA,cAAI,CAAC,MAAM,KAAK,GAAG;AACf,mBAAO,SAAS,OAAO,EAAE;AAAA,UAC7B;AAEA,kBAAQA,QAAO,cAAc,KAAK;AAClC,cAAI,OAAO,UAAU,UAAU;AAC3B,mBAAO;AAAA,UACX;AAEA,iBAAO;AAAA,QACX;AAEA,iBAAS,gBAAgB,OAAOA,SAAQ;AACpC,cAAI,OAAO,UAAU,UAAU;AAC3B,mBAAOA,QAAO,cAAc,KAAK,IAAI,KAAK;AAAA,UAC9C;AACA,iBAAO,MAAM,KAAK,IAAI,OAAO;AAAA,QACjC;AAGA,iBAAS,cAAc,IAAImB,IAAG;AAC1B,iBAAO,GAAG,MAAMA,IAAG,CAAC,EAAE,OAAO,GAAG,MAAM,GAAGA,EAAC,CAAC;AAAA,QAC/C;AAEA,YAAI,wBACI,2DAA2D,MAAM,GAAG,GACxE,6BAA6B,8BAA8B,MAAM,GAAG,GACpE,2BAA2B,uBAAuB,MAAM,GAAG,GAC3D,uBAAuB,WACvB,4BAA4B,WAC5B,0BAA0B;AAE9B,iBAAS,eAAe,GAAGpB,SAAQ;AAC/B,cAAI,WAAWL,SAAQ,KAAK,SAAS,IAC/B,KAAK,YACL,KAAK,UACD,KAAK,MAAM,QAAQ,KAAK,UAAU,SAAS,KAAKK,OAAM,IAChD,WACA,YACV;AACN,iBAAO,MAAM,OACP,cAAc,UAAU,KAAK,MAAM,GAAG,IACtC,IACA,SAAS,EAAE,IAAI,CAAC,IAChB;AAAA,QACV;AAEA,iBAAS,oBAAoB,GAAG;AAC5B,iBAAO,MAAM,OACP,cAAc,KAAK,gBAAgB,KAAK,MAAM,GAAG,IACjD,IACA,KAAK,eAAe,EAAE,IAAI,CAAC,IAC3B,KAAK;AAAA,QACf;AAEA,iBAAS,kBAAkB,GAAG;AAC1B,iBAAO,MAAM,OACP,cAAc,KAAK,cAAc,KAAK,MAAM,GAAG,IAC/C,IACA,KAAK,aAAa,EAAE,IAAI,CAAC,IACzB,KAAK;AAAA,QACf;AAEA,iBAAS,oBAAoB,aAAaA,SAAQ,QAAQ;AACtD,cAAI,GACA,IACA,KACA,MAAM,YAAY,kBAAkB;AACxC,cAAI,CAAC,KAAK,gBAAgB;AACtB,iBAAK,iBAAiB,CAAC;AACvB,iBAAK,sBAAsB,CAAC;AAC5B,iBAAK,oBAAoB,CAAC;AAE1B,iBAAK,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG;AACpB,oBAAM,UAAU,CAAC,KAAM,CAAC,CAAC,EAAE,IAAI,CAAC;AAChC,mBAAK,kBAAkB,CAAC,IAAI,KAAK;AAAA,gBAC7B;AAAA,gBACA;AAAA,cACJ,EAAE,kBAAkB;AACpB,mBAAK,oBAAoB,CAAC,IAAI,KAAK;AAAA,gBAC/B;AAAA,gBACA;AAAA,cACJ,EAAE,kBAAkB;AACpB,mBAAK,eAAe,CAAC,IAAI,KAAK,SAAS,KAAK,EAAE,EAAE,kBAAkB;AAAA,YACtE;AAAA,UACJ;AAEA,cAAI,QAAQ;AACR,gBAAIA,YAAW,QAAQ;AACnB,mBAAKsB,SAAQ,KAAK,KAAK,gBAAgB,GAAG;AAC1C,qBAAO,OAAO,KAAK,KAAK;AAAA,YAC5B,WAAWtB,YAAW,OAAO;AACzB,mBAAKsB,SAAQ,KAAK,KAAK,qBAAqB,GAAG;AAC/C,qBAAO,OAAO,KAAK,KAAK;AAAA,YAC5B,OAAO;AACH,mBAAKA,SAAQ,KAAK,KAAK,mBAAmB,GAAG;AAC7C,qBAAO,OAAO,KAAK,KAAK;AAAA,YAC5B;AAAA,UACJ,OAAO;AACH,gBAAItB,YAAW,QAAQ;AACnB,mBAAKsB,SAAQ,KAAK,KAAK,gBAAgB,GAAG;AAC1C,kBAAI,OAAO,IAAI;AACX,uBAAO;AAAA,cACX;AACA,mBAAKA,SAAQ,KAAK,KAAK,qBAAqB,GAAG;AAC/C,kBAAI,OAAO,IAAI;AACX,uBAAO;AAAA,cACX;AACA,mBAAKA,SAAQ,KAAK,KAAK,mBAAmB,GAAG;AAC7C,qBAAO,OAAO,KAAK,KAAK;AAAA,YAC5B,WAAWtB,YAAW,OAAO;AACzB,mBAAKsB,SAAQ,KAAK,KAAK,qBAAqB,GAAG;AAC/C,kBAAI,OAAO,IAAI;AACX,uBAAO;AAAA,cACX;AACA,mBAAKA,SAAQ,KAAK,KAAK,gBAAgB,GAAG;AAC1C,kBAAI,OAAO,IAAI;AACX,uBAAO;AAAA,cACX;AACA,mBAAKA,SAAQ,KAAK,KAAK,mBAAmB,GAAG;AAC7C,qBAAO,OAAO,KAAK,KAAK;AAAA,YAC5B,OAAO;AACH,mBAAKA,SAAQ,KAAK,KAAK,mBAAmB,GAAG;AAC7C,kBAAI,OAAO,IAAI;AACX,uBAAO;AAAA,cACX;AACA,mBAAKA,SAAQ,KAAK,KAAK,gBAAgB,GAAG;AAC1C,kBAAI,OAAO,IAAI;AACX,uBAAO;AAAA,cACX;AACA,mBAAKA,SAAQ,KAAK,KAAK,qBAAqB,GAAG;AAC/C,qBAAO,OAAO,KAAK,KAAK;AAAA,YAC5B;AAAA,UACJ;AAAA,QACJ;AAEA,iBAAS,oBAAoB,aAAatB,SAAQ,QAAQ;AACtD,cAAI,GAAG,KAAK;AAEZ,cAAI,KAAK,qBAAqB;AAC1B,mBAAO,oBAAoB,KAAK,MAAM,aAAaA,SAAQ,MAAM;AAAA,UACrE;AAEA,cAAI,CAAC,KAAK,gBAAgB;AACtB,iBAAK,iBAAiB,CAAC;AACvB,iBAAK,oBAAoB,CAAC;AAC1B,iBAAK,sBAAsB,CAAC;AAC5B,iBAAK,qBAAqB,CAAC;AAAA,UAC/B;AAEA,eAAK,IAAI,GAAG,IAAI,GAAG,KAAK;AAGpB,kBAAM,UAAU,CAAC,KAAM,CAAC,CAAC,EAAE,IAAI,CAAC;AAChC,gBAAI,UAAU,CAAC,KAAK,mBAAmB,CAAC,GAAG;AACvC,mBAAK,mBAAmB,CAAC,IAAI,IAAI;AAAA,gBAC7B,MAAM,KAAK,SAAS,KAAK,EAAE,EAAE,QAAQ,KAAK,MAAM,IAAI;AAAA,gBACpD;AAAA,cACJ;AACA,mBAAK,oBAAoB,CAAC,IAAI,IAAI;AAAA,gBAC9B,MAAM,KAAK,cAAc,KAAK,EAAE,EAAE,QAAQ,KAAK,MAAM,IAAI;AAAA,gBACzD;AAAA,cACJ;AACA,mBAAK,kBAAkB,CAAC,IAAI,IAAI;AAAA,gBAC5B,MAAM,KAAK,YAAY,KAAK,EAAE,EAAE,QAAQ,KAAK,MAAM,IAAI;AAAA,gBACvD;AAAA,cACJ;AAAA,YACJ;AACA,gBAAI,CAAC,KAAK,eAAe,CAAC,GAAG;AACzB,sBACI,MACA,KAAK,SAAS,KAAK,EAAE,IACrB,OACA,KAAK,cAAc,KAAK,EAAE,IAC1B,OACA,KAAK,YAAY,KAAK,EAAE;AAC5B,mBAAK,eAAe,CAAC,IAAI,IAAI,OAAO,MAAM,QAAQ,KAAK,EAAE,GAAG,GAAG;AAAA,YACnE;AAEA,gBACI,UACAA,YAAW,UACX,KAAK,mBAAmB,CAAC,EAAE,KAAK,WAAW,GAC7C;AACE,qBAAO;AAAA,YACX,WACI,UACAA,YAAW,SACX,KAAK,oBAAoB,CAAC,EAAE,KAAK,WAAW,GAC9C;AACE,qBAAO;AAAA,YACX,WACI,UACAA,YAAW,QACX,KAAK,kBAAkB,CAAC,EAAE,KAAK,WAAW,GAC5C;AACE,qBAAO;AAAA,YACX,WAAW,CAAC,UAAU,KAAK,eAAe,CAAC,EAAE,KAAK,WAAW,GAAG;AAC5D,qBAAO;AAAA,YACX;AAAA,UACJ;AAAA,QACJ;AAIA,iBAAS,gBAAgB,OAAO;AAC5B,cAAI,CAAC,KAAK,QAAQ,GAAG;AACjB,mBAAO,SAAS,OAAO,OAAO;AAAA,UAClC;AACA,cAAI,MAAM,KAAK,SAAS,KAAK,GAAG,UAAU,IAAI,KAAK,GAAG,OAAO;AAC7D,cAAI,SAAS,MAAM;AACf,oBAAQ,aAAa,OAAO,KAAK,WAAW,CAAC;AAC7C,mBAAO,KAAK,IAAI,QAAQ,KAAK,GAAG;AAAA,UACpC,OAAO;AACH,mBAAO;AAAA,UACX;AAAA,QACJ;AAEA,iBAAS,sBAAsB,OAAO;AAClC,cAAI,CAAC,KAAK,QAAQ,GAAG;AACjB,mBAAO,SAAS,OAAO,OAAO;AAAA,UAClC;AACA,cAAI,WAAW,KAAK,IAAI,IAAI,IAAI,KAAK,WAAW,EAAE,MAAM,OAAO;AAC/D,iBAAO,SAAS,OAAO,UAAU,KAAK,IAAI,QAAQ,SAAS,GAAG;AAAA,QAClE;AAEA,iBAAS,mBAAmB,OAAO;AAC/B,cAAI,CAAC,KAAK,QAAQ,GAAG;AACjB,mBAAO,SAAS,OAAO,OAAO;AAAA,UAClC;AAMA,cAAI,SAAS,MAAM;AACf,gBAAI,UAAU,gBAAgB,OAAO,KAAK,WAAW,CAAC;AACtD,mBAAO,KAAK,IAAI,KAAK,IAAI,IAAI,IAAI,UAAU,UAAU,CAAC;AAAA,UAC1D,OAAO;AACH,mBAAO,KAAK,IAAI,KAAK;AAAA,UACzB;AAAA,QACJ;AAEA,iBAAS,cAAc,UAAU;AAC7B,cAAI,KAAK,qBAAqB;AAC1B,gBAAI,CAAC,WAAW,MAAM,gBAAgB,GAAG;AACrC,mCAAqB,KAAK,IAAI;AAAA,YAClC;AACA,gBAAI,UAAU;AACV,qBAAO,KAAK;AAAA,YAChB,OAAO;AACH,qBAAO,KAAK;AAAA,YAChB;AAAA,UACJ,OAAO;AACH,gBAAI,CAAC,WAAW,MAAM,gBAAgB,GAAG;AACrC,mBAAK,iBAAiB;AAAA,YAC1B;AACA,mBAAO,KAAK,wBAAwB,WAC9B,KAAK,uBACL,KAAK;AAAA,UACf;AAAA,QACJ;AAEA,iBAAS,mBAAmB,UAAU;AAClC,cAAI,KAAK,qBAAqB;AAC1B,gBAAI,CAAC,WAAW,MAAM,gBAAgB,GAAG;AACrC,mCAAqB,KAAK,IAAI;AAAA,YAClC;AACA,gBAAI,UAAU;AACV,qBAAO,KAAK;AAAA,YAChB,OAAO;AACH,qBAAO,KAAK;AAAA,YAChB;AAAA,UACJ,OAAO;AACH,gBAAI,CAAC,WAAW,MAAM,qBAAqB,GAAG;AAC1C,mBAAK,sBAAsB;AAAA,YAC/B;AACA,mBAAO,KAAK,6BAA6B,WACnC,KAAK,4BACL,KAAK;AAAA,UACf;AAAA,QACJ;AAEA,iBAAS,iBAAiB,UAAU;AAChC,cAAI,KAAK,qBAAqB;AAC1B,gBAAI,CAAC,WAAW,MAAM,gBAAgB,GAAG;AACrC,mCAAqB,KAAK,IAAI;AAAA,YAClC;AACA,gBAAI,UAAU;AACV,qBAAO,KAAK;AAAA,YAChB,OAAO;AACH,qBAAO,KAAK;AAAA,YAChB;AAAA,UACJ,OAAO;AACH,gBAAI,CAAC,WAAW,MAAM,mBAAmB,GAAG;AACxC,mBAAK,oBAAoB;AAAA,YAC7B;AACA,mBAAO,KAAK,2BAA2B,WACjC,KAAK,0BACL,KAAK;AAAA,UACf;AAAA,QACJ;AAEA,iBAAS,uBAAuB;AAC5B,mBAAS,UAAUJ,IAAG,GAAG;AACrB,mBAAO,EAAE,SAASA,GAAE;AAAA,UACxB;AAEA,cAAI,YAAY,CAAC,GACb,cAAc,CAAC,GACf,aAAa,CAAC,GACd,cAAc,CAAC,GACf,GACA,KACA,MACA,QACA;AACJ,eAAK,IAAI,GAAG,IAAI,GAAG,KAAK;AAEpB,kBAAM,UAAU,CAAC,KAAM,CAAC,CAAC,EAAE,IAAI,CAAC;AAChC,mBAAO,YAAY,KAAK,YAAY,KAAK,EAAE,CAAC;AAC5C,qBAAS,YAAY,KAAK,cAAc,KAAK,EAAE,CAAC;AAChD,oBAAQ,YAAY,KAAK,SAAS,KAAK,EAAE,CAAC;AAC1C,sBAAU,KAAK,IAAI;AACnB,wBAAY,KAAK,MAAM;AACvB,uBAAW,KAAK,KAAK;AACrB,wBAAY,KAAK,IAAI;AACrB,wBAAY,KAAK,MAAM;AACvB,wBAAY,KAAK,KAAK;AAAA,UAC1B;AAGA,oBAAU,KAAK,SAAS;AACxB,sBAAY,KAAK,SAAS;AAC1B,qBAAW,KAAK,SAAS;AACzB,sBAAY,KAAK,SAAS;AAE1B,eAAK,iBAAiB,IAAI,OAAO,OAAO,YAAY,KAAK,GAAG,IAAI,KAAK,GAAG;AACxE,eAAK,sBAAsB,KAAK;AAChC,eAAK,oBAAoB,KAAK;AAE9B,eAAK,uBAAuB,IAAI;AAAA,YAC5B,OAAO,WAAW,KAAK,GAAG,IAAI;AAAA,YAC9B;AAAA,UACJ;AACA,eAAK,4BAA4B,IAAI;AAAA,YACjC,OAAO,YAAY,KAAK,GAAG,IAAI;AAAA,YAC/B;AAAA,UACJ;AACA,eAAK,0BAA0B,IAAI;AAAA,YAC/B,OAAO,UAAU,KAAK,GAAG,IAAI;AAAA,YAC7B;AAAA,UACJ;AAAA,QACJ;AAIA,iBAAS,UAAU;AACf,iBAAO,KAAK,MAAM,IAAI,MAAM;AAAA,QAChC;AAEA,iBAAS,UAAU;AACf,iBAAO,KAAK,MAAM,KAAK;AAAA,QAC3B;AAEA,uBAAe,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,MAAM;AACxC,uBAAe,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,OAAO;AACzC,uBAAe,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,OAAO;AAEzC,uBAAe,OAAO,GAAG,GAAG,WAAY;AACpC,iBAAO,KAAK,QAAQ,MAAM,IAAI,IAAI,SAAS,KAAK,QAAQ,GAAG,CAAC;AAAA,QAChE,CAAC;AAED,uBAAe,SAAS,GAAG,GAAG,WAAY;AACtC,iBACI,KACA,QAAQ,MAAM,IAAI,IAClB,SAAS,KAAK,QAAQ,GAAG,CAAC,IAC1B,SAAS,KAAK,QAAQ,GAAG,CAAC;AAAA,QAElC,CAAC;AAED,uBAAe,OAAO,GAAG,GAAG,WAAY;AACpC,iBAAO,KAAK,KAAK,MAAM,IAAI,SAAS,KAAK,QAAQ,GAAG,CAAC;AAAA,QACzD,CAAC;AAED,uBAAe,SAAS,GAAG,GAAG,WAAY;AACtC,iBACI,KACA,KAAK,MAAM,IACX,SAAS,KAAK,QAAQ,GAAG,CAAC,IAC1B,SAAS,KAAK,QAAQ,GAAG,CAAC;AAAA,QAElC,CAAC;AAED,iBAAS,SAASgB,QAAO,WAAW;AAChC,yBAAeA,QAAO,GAAG,GAAG,WAAY;AACpC,mBAAO,KAAK,WAAW,EAAE;AAAA,cACrB,KAAK,MAAM;AAAA,cACX,KAAK,QAAQ;AAAA,cACb;AAAA,YACJ;AAAA,UACJ,CAAC;AAAA,QACL;AAEA,iBAAS,KAAK,IAAI;AAClB,iBAAS,KAAK,KAAK;AAInB,qBAAa,QAAQ,GAAG;AAGxB,wBAAgB,QAAQ,EAAE;AAI1B,iBAAS,cAAc,UAAUX,SAAQ;AACrC,iBAAOA,QAAO;AAAA,QAClB;AAEA,sBAAc,KAAK,aAAa;AAChC,sBAAc,KAAK,aAAa;AAChC,sBAAc,KAAK,SAAS;AAC5B,sBAAc,KAAK,SAAS;AAC5B,sBAAc,KAAK,SAAS;AAC5B,sBAAc,MAAM,WAAW,MAAM;AACrC,sBAAc,MAAM,WAAW,MAAM;AACrC,sBAAc,MAAM,WAAW,MAAM;AAErC,sBAAc,OAAO,SAAS;AAC9B,sBAAc,SAAS,SAAS;AAChC,sBAAc,OAAO,SAAS;AAC9B,sBAAc,SAAS,SAAS;AAEhC,sBAAc,CAAC,KAAK,IAAI,GAAG,IAAI;AAC/B,sBAAc,CAAC,KAAK,IAAI,GAAG,SAAU,OAAO,OAAO,QAAQ;AACvD,cAAI,SAAS,MAAM,KAAK;AACxB,gBAAM,IAAI,IAAI,WAAW,KAAK,IAAI;AAAA,QACtC,CAAC;AACD,sBAAc,CAAC,KAAK,GAAG,GAAG,SAAU,OAAO,OAAO,QAAQ;AACtD,iBAAO,QAAQ,OAAO,QAAQ,KAAK,KAAK;AACxC,iBAAO,YAAY;AAAA,QACvB,CAAC;AACD,sBAAc,CAAC,KAAK,IAAI,GAAG,SAAU,OAAO,OAAO,QAAQ;AACvD,gBAAM,IAAI,IAAI,MAAM,KAAK;AACzB,0BAAgB,MAAM,EAAE,UAAU;AAAA,QACtC,CAAC;AACD,sBAAc,OAAO,SAAU,OAAO,OAAO,QAAQ;AACjD,cAAI,MAAM,MAAM,SAAS;AACzB,gBAAM,IAAI,IAAI,MAAM,MAAM,OAAO,GAAG,GAAG,CAAC;AACxC,gBAAM,MAAM,IAAI,MAAM,MAAM,OAAO,GAAG,CAAC;AACvC,0BAAgB,MAAM,EAAE,UAAU;AAAA,QACtC,CAAC;AACD,sBAAc,SAAS,SAAU,OAAO,OAAO,QAAQ;AACnD,cAAI,OAAO,MAAM,SAAS,GACtB,OAAO,MAAM,SAAS;AAC1B,gBAAM,IAAI,IAAI,MAAM,MAAM,OAAO,GAAG,IAAI,CAAC;AACzC,gBAAM,MAAM,IAAI,MAAM,MAAM,OAAO,MAAM,CAAC,CAAC;AAC3C,gBAAM,MAAM,IAAI,MAAM,MAAM,OAAO,IAAI,CAAC;AACxC,0BAAgB,MAAM,EAAE,UAAU;AAAA,QACtC,CAAC;AACD,sBAAc,OAAO,SAAU,OAAO,OAAO,QAAQ;AACjD,cAAI,MAAM,MAAM,SAAS;AACzB,gBAAM,IAAI,IAAI,MAAM,MAAM,OAAO,GAAG,GAAG,CAAC;AACxC,gBAAM,MAAM,IAAI,MAAM,MAAM,OAAO,GAAG,CAAC;AAAA,QAC3C,CAAC;AACD,sBAAc,SAAS,SAAU,OAAO,OAAO,QAAQ;AACnD,cAAI,OAAO,MAAM,SAAS,GACtB,OAAO,MAAM,SAAS;AAC1B,gBAAM,IAAI,IAAI,MAAM,MAAM,OAAO,GAAG,IAAI,CAAC;AACzC,gBAAM,MAAM,IAAI,MAAM,MAAM,OAAO,MAAM,CAAC,CAAC;AAC3C,gBAAM,MAAM,IAAI,MAAM,MAAM,OAAO,IAAI,CAAC;AAAA,QAC5C,CAAC;AAID,iBAAS,WAAW,OAAO;AAGvB,kBAAQ,QAAQ,IAAI,YAAY,EAAE,OAAO,CAAC,MAAM;AAAA,QACpD;AAEA,YAAI,6BAA6B,iBAK7B,aAAa,WAAW,SAAS,IAAI;AAEzC,iBAAS,eAAe0B,QAAOC,UAAS,SAAS;AAC7C,cAAID,SAAQ,IAAI;AACZ,mBAAO,UAAU,OAAO;AAAA,UAC5B,OAAO;AACH,mBAAO,UAAU,OAAO;AAAA,UAC5B;AAAA,QACJ;AAEA,YAAI,aAAa;AAAA,UACb,UAAU;AAAA,UACV,gBAAgB;AAAA,UAChB,aAAa;AAAA,UACb,SAAS;AAAA,UACT,wBAAwB;AAAA,UACxB,cAAc;AAAA,UAEd,QAAQ;AAAA,UACR,aAAa;AAAA,UAEb,MAAM;AAAA,UAEN,UAAU;AAAA,UACV,aAAa;AAAA,UACb,eAAe;AAAA,UAEf,eAAe;AAAA,QACnB;AAGA,YAAI,UAAU,CAAC,GACX,iBAAiB,CAAC,GAClB;AAEJ,iBAAS,aAAa,MAAM,MAAM;AAC9B,cAAI,GACA,OAAO,KAAK,IAAI,KAAK,QAAQ,KAAK,MAAM;AAC5C,eAAK,IAAI,GAAG,IAAI,MAAM,KAAK,GAAG;AAC1B,gBAAI,KAAK,CAAC,MAAM,KAAK,CAAC,GAAG;AACrB,qBAAO;AAAA,YACX;AAAA,UACJ;AACA,iBAAO;AAAA,QACX;AAEA,iBAAS,gBAAgB,KAAK;AAC1B,iBAAO,MAAM,IAAI,YAAY,EAAE,QAAQ,KAAK,GAAG,IAAI;AAAA,QACvD;AAKA,iBAAS,aAAa,OAAO;AACzB,cAAI,IAAI,GACJ,GACAE,OACA5B,SACA;AAEJ,iBAAO,IAAI,MAAM,QAAQ;AACrB,oBAAQ,gBAAgB,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG;AAC3C,gBAAI,MAAM;AACV,YAAA4B,QAAO,gBAAgB,MAAM,IAAI,CAAC,CAAC;AACnC,YAAAA,QAAOA,QAAOA,MAAK,MAAM,GAAG,IAAI;AAChC,mBAAO,IAAI,GAAG;AACV,cAAA5B,UAAS,WAAW,MAAM,MAAM,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC;AAC/C,kBAAIA,SAAQ;AACR,uBAAOA;AAAA,cACX;AACA,kBACI4B,SACAA,MAAK,UAAU,KACf,aAAa,OAAOA,KAAI,KAAK,IAAI,GACnC;AAEE;AAAA,cACJ;AACA;AAAA,YACJ;AACA;AAAA,UACJ;AACA,iBAAO;AAAA,QACX;AAEA,iBAAS,iBAAiBvB,OAAM;AAE5B,iBAAOA,MAAK,MAAM,aAAa,KAAK;AAAA,QACxC;AAEA,iBAAS,WAAWA,OAAM;AACtB,cAAI,YAAY,MACZ;AAEJ,cACI,QAAQA,KAAI,MAAM,UAClB,OAAO,WAAW,eAClB,UACA,OAAO,WACP,iBAAiBA,KAAI,GACvB;AACE,gBAAI;AACA,0BAAY,aAAa;AACzB,+BAAiB;AACjB,6BAAe,cAAcA,KAAI;AACjC,iCAAmB,SAAS;AAAA,YAChC,SAASwB,IAAG;AAGR,sBAAQxB,KAAI,IAAI;AAAA,YACpB;AAAA,UACJ;AACA,iBAAO,QAAQA,KAAI;AAAA,QACvB;AAKA,iBAAS,mBAAmB,KAAK,QAAQ;AACrC,cAAIyB;AACJ,cAAI,KAAK;AACL,gBAAI,YAAY,MAAM,GAAG;AACrB,cAAAA,QAAO,UAAU,GAAG;AAAA,YACxB,OAAO;AACH,cAAAA,QAAO,aAAa,KAAK,MAAM;AAAA,YACnC;AAEA,gBAAIA,OAAM;AAEN,6BAAeA;AAAA,YACnB,OAAO;AACH,kBAAI,OAAO,YAAY,eAAe,QAAQ,MAAM;AAEhD,wBAAQ;AAAA,kBACJ,YAAY,MAAM;AAAA,gBACtB;AAAA,cACJ;AAAA,YACJ;AAAA,UACJ;AAEA,iBAAO,aAAa;AAAA,QACxB;AAEA,iBAAS,aAAazB,OAAM,QAAQ;AAChC,cAAI,WAAW,MAAM;AACjB,gBAAIL,SACA,eAAe;AACnB,mBAAO,OAAOK;AACd,gBAAI,QAAQA,KAAI,KAAK,MAAM;AACvB;AAAA,gBACI;AAAA,gBACA;AAAA,cAIJ;AACA,6BAAe,QAAQA,KAAI,EAAE;AAAA,YACjC,WAAW,OAAO,gBAAgB,MAAM;AACpC,kBAAI,QAAQ,OAAO,YAAY,KAAK,MAAM;AACtC,+BAAe,QAAQ,OAAO,YAAY,EAAE;AAAA,cAChD,OAAO;AACH,gBAAAL,UAAS,WAAW,OAAO,YAAY;AACvC,oBAAIA,WAAU,MAAM;AAChB,iCAAeA,QAAO;AAAA,gBAC1B,OAAO;AACH,sBAAI,CAAC,eAAe,OAAO,YAAY,GAAG;AACtC,mCAAe,OAAO,YAAY,IAAI,CAAC;AAAA,kBAC3C;AACA,iCAAe,OAAO,YAAY,EAAE,KAAK;AAAA,oBACrC,MAAMK;AAAA,oBACN;AAAA,kBACJ,CAAC;AACD,yBAAO;AAAA,gBACX;AAAA,cACJ;AAAA,YACJ;AACA,oBAAQA,KAAI,IAAI,IAAI,OAAO,aAAa,cAAc,MAAM,CAAC;AAE7D,gBAAI,eAAeA,KAAI,GAAG;AACtB,6BAAeA,KAAI,EAAE,QAAQ,SAAUe,IAAG;AACtC,6BAAaA,GAAE,MAAMA,GAAE,MAAM;AAAA,cACjC,CAAC;AAAA,YACL;AAKA,+BAAmBf,KAAI;AAEvB,mBAAO,QAAQA,KAAI;AAAA,UACvB,OAAO;AAEH,mBAAO,QAAQA,KAAI;AACnB,mBAAO;AAAA,UACX;AAAA,QACJ;AAEA,iBAAS,aAAaA,OAAM,QAAQ;AAChC,cAAI,UAAU,MAAM;AAChB,gBAAIL,SACA,WACA,eAAe;AAEnB,gBAAI,QAAQK,KAAI,KAAK,QAAQ,QAAQA,KAAI,EAAE,gBAAgB,MAAM;AAE7D,sBAAQA,KAAI,EAAE,IAAI,aAAa,QAAQA,KAAI,EAAE,SAAS,MAAM,CAAC;AAAA,YACjE,OAAO;AAEH,0BAAY,WAAWA,KAAI;AAC3B,kBAAI,aAAa,MAAM;AACnB,+BAAe,UAAU;AAAA,cAC7B;AACA,uBAAS,aAAa,cAAc,MAAM;AAC1C,kBAAI,aAAa,MAAM;AAInB,uBAAO,OAAOA;AAAA,cAClB;AACA,cAAAL,UAAS,IAAI,OAAO,MAAM;AAC1B,cAAAA,QAAO,eAAe,QAAQK,KAAI;AAClC,sBAAQA,KAAI,IAAIL;AAAA,YACpB;AAGA,+BAAmBK,KAAI;AAAA,UAC3B,OAAO;AAEH,gBAAI,QAAQA,KAAI,KAAK,MAAM;AACvB,kBAAI,QAAQA,KAAI,EAAE,gBAAgB,MAAM;AACpC,wBAAQA,KAAI,IAAI,QAAQA,KAAI,EAAE;AAC9B,oBAAIA,UAAS,mBAAmB,GAAG;AAC/B,qCAAmBA,KAAI;AAAA,gBAC3B;AAAA,cACJ,WAAW,QAAQA,KAAI,KAAK,MAAM;AAC9B,uBAAO,QAAQA,KAAI;AAAA,cACvB;AAAA,YACJ;AAAA,UACJ;AACA,iBAAO,QAAQA,KAAI;AAAA,QACvB;AAGA,iBAAS,UAAU,KAAK;AACpB,cAAIL;AAEJ,cAAI,OAAO,IAAI,WAAW,IAAI,QAAQ,OAAO;AACzC,kBAAM,IAAI,QAAQ;AAAA,UACtB;AAEA,cAAI,CAAC,KAAK;AACN,mBAAO;AAAA,UACX;AAEA,cAAI,CAACN,SAAQ,GAAG,GAAG;AAEf,YAAAM,UAAS,WAAW,GAAG;AACvB,gBAAIA,SAAQ;AACR,qBAAOA;AAAA,YACX;AACA,kBAAM,CAAC,GAAG;AAAA,UACd;AAEA,iBAAO,aAAa,GAAG;AAAA,QAC3B;AAEA,iBAAS,cAAc;AACnB,iBAAO,KAAK,OAAO;AAAA,QACvB;AAEA,iBAAS,cAAc,GAAG;AACtB,cAAI,UACAL,KAAI,EAAE;AAEV,cAAIA,MAAK,gBAAgB,CAAC,EAAE,aAAa,IAAI;AACzC,uBACIA,GAAE,KAAK,IAAI,KAAKA,GAAE,KAAK,IAAI,KACrB,QACAA,GAAE,IAAI,IAAI,KAAKA,GAAE,IAAI,IAAI,YAAYA,GAAE,IAAI,GAAGA,GAAE,KAAK,CAAC,IACtD,OACAA,GAAE,IAAI,IAAI,KACVA,GAAE,IAAI,IAAI,MACTA,GAAE,IAAI,MAAM,OACRA,GAAE,MAAM,MAAM,KACXA,GAAE,MAAM,MAAM,KACdA,GAAE,WAAW,MAAM,KAC3B,OACAA,GAAE,MAAM,IAAI,KAAKA,GAAE,MAAM,IAAI,KAC7B,SACAA,GAAE,MAAM,IAAI,KAAKA,GAAE,MAAM,IAAI,KAC7B,SACAA,GAAE,WAAW,IAAI,KAAKA,GAAE,WAAW,IAAI,MACvC,cACA;AAEV,gBACI,gBAAgB,CAAC,EAAE,uBAClB,WAAW,QAAQ,WAAW,OACjC;AACE,yBAAW;AAAA,YACf;AACA,gBAAI,gBAAgB,CAAC,EAAE,kBAAkB,aAAa,IAAI;AACtD,yBAAW;AAAA,YACf;AACA,gBAAI,gBAAgB,CAAC,EAAE,oBAAoB,aAAa,IAAI;AACxD,yBAAW;AAAA,YACf;AAEA,4BAAgB,CAAC,EAAE,WAAW;AAAA,UAClC;AAEA,iBAAO;AAAA,QACX;AAIA,YAAI,mBACI,kJACJ,gBACI,8IACJ,UAAU,yBACV,WAAW;AAAA,UACP,CAAC,gBAAgB,qBAAqB;AAAA,UACtC,CAAC,cAAc,iBAAiB;AAAA,UAChC,CAAC,gBAAgB,gBAAgB;AAAA,UACjC,CAAC,cAAc,eAAe,KAAK;AAAA,UACnC,CAAC,YAAY,aAAa;AAAA,UAC1B,CAAC,WAAW,cAAc,KAAK;AAAA,UAC/B,CAAC,cAAc,YAAY;AAAA,UAC3B,CAAC,YAAY,OAAO;AAAA,UACpB,CAAC,cAAc,aAAa;AAAA,UAC5B,CAAC,aAAa,eAAe,KAAK;AAAA,UAClC,CAAC,WAAW,OAAO;AAAA,UACnB,CAAC,UAAU,SAAS,KAAK;AAAA,UACzB,CAAC,QAAQ,SAAS,KAAK;AAAA,QAC3B,GAEA,WAAW;AAAA,UACP,CAAC,iBAAiB,qBAAqB;AAAA,UACvC,CAAC,iBAAiB,oBAAoB;AAAA,UACtC,CAAC,YAAY,gBAAgB;AAAA,UAC7B,CAAC,SAAS,WAAW;AAAA,UACrB,CAAC,eAAe,mBAAmB;AAAA,UACnC,CAAC,eAAe,kBAAkB;AAAA,UAClC,CAAC,UAAU,cAAc;AAAA,UACzB,CAAC,QAAQ,UAAU;AAAA,UACnB,CAAC,MAAM,MAAM;AAAA,QACjB,GACA,kBAAkB,sBAElB,UACI,2LACJ,aAAa;AAAA,UACT,IAAI;AAAA,UACJ,KAAK;AAAA,UACL,KAAK,KAAK;AAAA,UACV,KAAK,KAAK;AAAA,UACV,KAAK,KAAK;AAAA,UACV,KAAK,KAAK;AAAA,UACV,KAAK,KAAK;AAAA,UACV,KAAK,KAAK;AAAA,UACV,KAAK,KAAK;AAAA,UACV,KAAK,KAAK;AAAA,QACd;AAGJ,iBAAS,cAAc,QAAQ;AAC3B,cAAI,GACA,GACA,SAAS,OAAO,IAChBoC,SAAQ,iBAAiB,KAAK,MAAM,KAAK,cAAc,KAAK,MAAM,GAClE,WACA,YACAC,aACA,UACA,cAAc,SAAS,QACvB,cAAc,SAAS;AAE3B,cAAID,QAAO;AACP,4BAAgB,MAAM,EAAE,MAAM;AAC9B,iBAAK,IAAI,GAAG,IAAI,aAAa,IAAI,GAAG,KAAK;AACrC,kBAAI,SAAS,CAAC,EAAE,CAAC,EAAE,KAAKA,OAAM,CAAC,CAAC,GAAG;AAC/B,6BAAa,SAAS,CAAC,EAAE,CAAC;AAC1B,4BAAY,SAAS,CAAC,EAAE,CAAC,MAAM;AAC/B;AAAA,cACJ;AAAA,YACJ;AACA,gBAAI,cAAc,MAAM;AACpB,qBAAO,WAAW;AAClB;AAAA,YACJ;AACA,gBAAIA,OAAM,CAAC,GAAG;AACV,mBAAK,IAAI,GAAG,IAAI,aAAa,IAAI,GAAG,KAAK;AACrC,oBAAI,SAAS,CAAC,EAAE,CAAC,EAAE,KAAKA,OAAM,CAAC,CAAC,GAAG;AAE/B,kBAAAC,eAAcD,OAAM,CAAC,KAAK,OAAO,SAAS,CAAC,EAAE,CAAC;AAC9C;AAAA,gBACJ;AAAA,cACJ;AACA,kBAAIC,eAAc,MAAM;AACpB,uBAAO,WAAW;AAClB;AAAA,cACJ;AAAA,YACJ;AACA,gBAAI,CAAC,aAAaA,eAAc,MAAM;AAClC,qBAAO,WAAW;AAClB;AAAA,YACJ;AACA,gBAAID,OAAM,CAAC,GAAG;AACV,kBAAI,QAAQ,KAAKA,OAAM,CAAC,CAAC,GAAG;AACxB,2BAAW;AAAA,cACf,OAAO;AACH,uBAAO,WAAW;AAClB;AAAA,cACJ;AAAA,YACJ;AACA,mBAAO,KAAK,cAAcC,eAAc,OAAO,YAAY;AAC3D,sCAA0B,MAAM;AAAA,UACpC,OAAO;AACH,mBAAO,WAAW;AAAA,UACtB;AAAA,QACJ;AAEA,iBAAS,0BACL,SACA,UACA,QACA,SACA,WACA,WACF;AACE,cAAI,SAAS;AAAA,YACT,eAAe,OAAO;AAAA,YACtB,yBAAyB,QAAQ,QAAQ;AAAA,YACzC,SAAS,QAAQ,EAAE;AAAA,YACnB,SAAS,SAAS,EAAE;AAAA,YACpB,SAAS,WAAW,EAAE;AAAA,UAC1B;AAEA,cAAI,WAAW;AACX,mBAAO,KAAK,SAAS,WAAW,EAAE,CAAC;AAAA,UACvC;AAEA,iBAAO;AAAA,QACX;AAEA,iBAAS,eAAe,SAAS;AAC7B,cAAI,OAAO,SAAS,SAAS,EAAE;AAC/B,cAAI,QAAQ,IAAI;AACZ,mBAAO,MAAO;AAAA,UAClB,WAAW,QAAQ,KAAK;AACpB,mBAAO,OAAO;AAAA,UAClB;AACA,iBAAO;AAAA,QACX;AAEA,iBAAS,kBAAkBd,IAAG;AAE1B,iBAAOA,GACF,QAAQ,sBAAsB,GAAG,EACjC,QAAQ,YAAY,GAAG,EACvB,QAAQ,UAAU,EAAE,EACpB,QAAQ,UAAU,EAAE;AAAA,QAC7B;AAEA,iBAAS,aAAa,YAAY,aAAa,QAAQ;AACnD,cAAI,YAAY;AAEZ,gBAAI,kBAAkB,2BAA2B,QAAQ,UAAU,GAC/D,gBAAgB,IAAI;AAAA,cAChB,YAAY,CAAC;AAAA,cACb,YAAY,CAAC;AAAA,cACb,YAAY,CAAC;AAAA,YACjB,EAAE,OAAO;AACb,gBAAI,oBAAoB,eAAe;AACnC,8BAAgB,MAAM,EAAE,kBAAkB;AAC1C,qBAAO,WAAW;AAClB,qBAAO;AAAA,YACX;AAAA,UACJ;AACA,iBAAO;AAAA,QACX;AAEA,iBAAS,gBAAgB,WAAW,gBAAgB,WAAW;AAC3D,cAAI,WAAW;AACX,mBAAO,WAAW,SAAS;AAAA,UAC/B,WAAW,gBAAgB;AAEvB,mBAAO;AAAA,UACX,OAAO;AACH,gBAAI,KAAK,SAAS,WAAW,EAAE,GAC3B,IAAI,KAAK,KACT,KAAK,KAAK,KAAK;AACnB,mBAAO,IAAI,KAAK;AAAA,UACpB;AAAA,QACJ;AAGA,iBAAS,kBAAkB,QAAQ;AAC/B,cAAIa,SAAQ,QAAQ,KAAK,kBAAkB,OAAO,EAAE,CAAC,GACjD;AACJ,cAAIA,QAAO;AACP,0BAAc;AAAA,cACVA,OAAM,CAAC;AAAA,cACPA,OAAM,CAAC;AAAA,cACPA,OAAM,CAAC;AAAA,cACPA,OAAM,CAAC;AAAA,cACPA,OAAM,CAAC;AAAA,cACPA,OAAM,CAAC;AAAA,YACX;AACA,gBAAI,CAAC,aAAaA,OAAM,CAAC,GAAG,aAAa,MAAM,GAAG;AAC9C;AAAA,YACJ;AAEA,mBAAO,KAAK;AACZ,mBAAO,OAAO,gBAAgBA,OAAM,CAAC,GAAGA,OAAM,CAAC,GAAGA,OAAM,EAAE,CAAC;AAE3D,mBAAO,KAAK,cAAc,MAAM,MAAM,OAAO,EAAE;AAC/C,mBAAO,GAAG,cAAc,OAAO,GAAG,cAAc,IAAI,OAAO,IAAI;AAE/D,4BAAgB,MAAM,EAAE,UAAU;AAAA,UACtC,OAAO;AACH,mBAAO,WAAW;AAAA,UACtB;AAAA,QACJ;AAGA,iBAAS,iBAAiB,QAAQ;AAC9B,cAAI,UAAU,gBAAgB,KAAK,OAAO,EAAE;AAC5C,cAAI,YAAY,MAAM;AAClB,mBAAO,KAAK,oBAAI,KAAK,CAAC,QAAQ,CAAC,CAAC;AAChC;AAAA,UACJ;AAEA,wBAAc,MAAM;AACpB,cAAI,OAAO,aAAa,OAAO;AAC3B,mBAAO,OAAO;AAAA,UAClB,OAAO;AACH;AAAA,UACJ;AAEA,4BAAkB,MAAM;AACxB,cAAI,OAAO,aAAa,OAAO;AAC3B,mBAAO,OAAO;AAAA,UAClB,OAAO;AACH;AAAA,UACJ;AAEA,cAAI,OAAO,SAAS;AAChB,mBAAO,WAAW;AAAA,UACtB,OAAO;AAEH,YAAAtC,OAAM,wBAAwB,MAAM;AAAA,UACxC;AAAA,QACJ;AAEA,QAAAA,OAAM,0BAA0B;AAAA,UAC5B;AAAA,UAGA,SAAU,QAAQ;AACd,mBAAO,KAAK,oBAAI,KAAK,OAAO,MAAM,OAAO,UAAU,SAAS,GAAG;AAAA,UACnE;AAAA,QACJ;AAGA,iBAAS,SAASE,IAAG,GAAGsC,IAAG;AACvB,cAAItC,MAAK,MAAM;AACX,mBAAOA;AAAA,UACX;AACA,cAAI,KAAK,MAAM;AACX,mBAAO;AAAA,UACX;AACA,iBAAOsC;AAAA,QACX;AAEA,iBAAS,iBAAiB,QAAQ;AAE9B,cAAI,WAAW,IAAI,KAAKxC,OAAM,IAAI,CAAC;AACnC,cAAI,OAAO,SAAS;AAChB,mBAAO;AAAA,cACH,SAAS,eAAe;AAAA,cACxB,SAAS,YAAY;AAAA,cACrB,SAAS,WAAW;AAAA,YACxB;AAAA,UACJ;AACA,iBAAO,CAAC,SAAS,YAAY,GAAG,SAAS,SAAS,GAAG,SAAS,QAAQ,CAAC;AAAA,QAC3E;AAMA,iBAAS,gBAAgB,QAAQ;AAC7B,cAAI,GACAgC,OACA,QAAQ,CAAC,GACT,aACA,iBACA;AAEJ,cAAI,OAAO,IAAI;AACX;AAAA,UACJ;AAEA,wBAAc,iBAAiB,MAAM;AAGrC,cAAI,OAAO,MAAM,OAAO,GAAG,IAAI,KAAK,QAAQ,OAAO,GAAG,KAAK,KAAK,MAAM;AAClE,kCAAsB,MAAM;AAAA,UAChC;AAGA,cAAI,OAAO,cAAc,MAAM;AAC3B,wBAAY,SAAS,OAAO,GAAG,IAAI,GAAG,YAAY,IAAI,CAAC;AAEvD,gBACI,OAAO,aAAa,WAAW,SAAS,KACxC,OAAO,eAAe,GACxB;AACE,8BAAgB,MAAM,EAAE,qBAAqB;AAAA,YACjD;AAEA,YAAAA,QAAO,cAAc,WAAW,GAAG,OAAO,UAAU;AACpD,mBAAO,GAAG,KAAK,IAAIA,MAAK,YAAY;AACpC,mBAAO,GAAG,IAAI,IAAIA,MAAK,WAAW;AAAA,UACtC;AAOA,eAAK,IAAI,GAAG,IAAI,KAAK,OAAO,GAAG,CAAC,KAAK,MAAM,EAAE,GAAG;AAC5C,mBAAO,GAAG,CAAC,IAAI,MAAM,CAAC,IAAI,YAAY,CAAC;AAAA,UAC3C;AAGA,iBAAO,IAAI,GAAG,KAAK;AACf,mBAAO,GAAG,CAAC,IAAI,MAAM,CAAC,IAClB,OAAO,GAAG,CAAC,KAAK,OAAQ,MAAM,IAAI,IAAI,IAAK,OAAO,GAAG,CAAC;AAAA,UAC9D;AAGA,cACI,OAAO,GAAG,IAAI,MAAM,MACpB,OAAO,GAAG,MAAM,MAAM,KACtB,OAAO,GAAG,MAAM,MAAM,KACtB,OAAO,GAAG,WAAW,MAAM,GAC7B;AACE,mBAAO,WAAW;AAClB,mBAAO,GAAG,IAAI,IAAI;AAAA,UACtB;AAEA,iBAAO,MAAM,OAAO,UAAU,gBAAgB,YAAY;AAAA,YACtD;AAAA,YACA;AAAA,UACJ;AACA,4BAAkB,OAAO,UACnB,OAAO,GAAG,UAAU,IACpB,OAAO,GAAG,OAAO;AAIvB,cAAI,OAAO,QAAQ,MAAM;AACrB,mBAAO,GAAG,cAAc,OAAO,GAAG,cAAc,IAAI,OAAO,IAAI;AAAA,UACnE;AAEA,cAAI,OAAO,UAAU;AACjB,mBAAO,GAAG,IAAI,IAAI;AAAA,UACtB;AAGA,cACI,OAAO,MACP,OAAO,OAAO,GAAG,MAAM,eACvB,OAAO,GAAG,MAAM,iBAClB;AACE,4BAAgB,MAAM,EAAE,kBAAkB;AAAA,UAC9C;AAAA,QACJ;AAEA,iBAAS,sBAAsB,QAAQ;AACnC,cAAIS,IAAG,UAAU,MAAM,SAAS,KAAK,KAAK,MAAM,iBAAiB;AAEjE,UAAAA,KAAI,OAAO;AACX,cAAIA,GAAE,MAAM,QAAQA,GAAE,KAAK,QAAQA,GAAE,KAAK,MAAM;AAC5C,kBAAM;AACN,kBAAM;AAMN,uBAAW;AAAA,cACPA,GAAE;AAAA,cACF,OAAO,GAAG,IAAI;AAAA,cACd,WAAW,YAAY,GAAG,GAAG,CAAC,EAAE;AAAA,YACpC;AACA,mBAAO,SAASA,GAAE,GAAG,CAAC;AACtB,sBAAU,SAASA,GAAE,GAAG,CAAC;AACzB,gBAAI,UAAU,KAAK,UAAU,GAAG;AAC5B,gCAAkB;AAAA,YACtB;AAAA,UACJ,OAAO;AACH,kBAAM,OAAO,QAAQ,MAAM;AAC3B,kBAAM,OAAO,QAAQ,MAAM;AAE3B,sBAAU,WAAW,YAAY,GAAG,KAAK,GAAG;AAE5C,uBAAW,SAASA,GAAE,IAAI,OAAO,GAAG,IAAI,GAAG,QAAQ,IAAI;AAGvD,mBAAO,SAASA,GAAE,GAAG,QAAQ,IAAI;AAEjC,gBAAIA,GAAE,KAAK,MAAM;AAEb,wBAAUA,GAAE;AACZ,kBAAI,UAAU,KAAK,UAAU,GAAG;AAC5B,kCAAkB;AAAA,cACtB;AAAA,YACJ,WAAWA,GAAE,KAAK,MAAM;AAEpB,wBAAUA,GAAE,IAAI;AAChB,kBAAIA,GAAE,IAAI,KAAKA,GAAE,IAAI,GAAG;AACpB,kCAAkB;AAAA,cACtB;AAAA,YACJ,OAAO;AAEH,wBAAU;AAAA,YACd;AAAA,UACJ;AACA,cAAI,OAAO,KAAK,OAAO,YAAY,UAAU,KAAK,GAAG,GAAG;AACpD,4BAAgB,MAAM,EAAE,iBAAiB;AAAA,UAC7C,WAAW,mBAAmB,MAAM;AAChC,4BAAgB,MAAM,EAAE,mBAAmB;AAAA,UAC/C,OAAO;AACH,mBAAO,mBAAmB,UAAU,MAAM,SAAS,KAAK,GAAG;AAC3D,mBAAO,GAAG,IAAI,IAAI,KAAK;AACvB,mBAAO,aAAa,KAAK;AAAA,UAC7B;AAAA,QACJ;AAGA,QAAAzC,OAAM,WAAW,WAAY;AAAA,QAAC;AAG9B,QAAAA,OAAM,WAAW,WAAY;AAAA,QAAC;AAG9B,iBAAS,0BAA0B,QAAQ;AAEvC,cAAI,OAAO,OAAOA,OAAM,UAAU;AAC9B,0BAAc,MAAM;AACpB;AAAA,UACJ;AACA,cAAI,OAAO,OAAOA,OAAM,UAAU;AAC9B,8BAAkB,MAAM;AACxB;AAAA,UACJ;AACA,iBAAO,KAAK,CAAC;AACb,0BAAgB,MAAM,EAAE,QAAQ;AAGhC,cAAI,SAAS,KAAK,OAAO,IACrB,GACA,aACA0C,SACAxB,QACA,SACA,eAAe,OAAO,QACtB,yBAAyB,GACzB,KACA;AAEJ,UAAAwB,UACI,aAAa,OAAO,IAAI,OAAO,OAAO,EAAE,MAAM,gBAAgB,KAAK,CAAC;AACxE,qBAAWA,QAAO;AAClB,eAAK,IAAI,GAAG,IAAI,UAAU,KAAK;AAC3B,YAAAxB,SAAQwB,QAAO,CAAC;AAChB,2BAAe,OAAO,MAAM,sBAAsBxB,QAAO,MAAM,CAAC,KAC5D,CAAC,GAAG,CAAC;AACT,gBAAI,aAAa;AACb,wBAAU,OAAO,OAAO,GAAG,OAAO,QAAQ,WAAW,CAAC;AACtD,kBAAI,QAAQ,SAAS,GAAG;AACpB,gCAAgB,MAAM,EAAE,YAAY,KAAK,OAAO;AAAA,cACpD;AACA,uBAAS,OAAO;AAAA,gBACZ,OAAO,QAAQ,WAAW,IAAI,YAAY;AAAA,cAC9C;AACA,wCAA0B,YAAY;AAAA,YAC1C;AAEA,gBAAI,qBAAqBA,MAAK,GAAG;AAC7B,kBAAI,aAAa;AACb,gCAAgB,MAAM,EAAE,QAAQ;AAAA,cACpC,OAAO;AACH,gCAAgB,MAAM,EAAE,aAAa,KAAKA,MAAK;AAAA,cACnD;AACA,sCAAwBA,QAAO,aAAa,MAAM;AAAA,YACtD,WAAW,OAAO,WAAW,CAAC,aAAa;AACvC,8BAAgB,MAAM,EAAE,aAAa,KAAKA,MAAK;AAAA,YACnD;AAAA,UACJ;AAGA,0BAAgB,MAAM,EAAE,gBACpB,eAAe;AACnB,cAAI,OAAO,SAAS,GAAG;AACnB,4BAAgB,MAAM,EAAE,YAAY,KAAK,MAAM;AAAA,UACnD;AAGA,cACI,OAAO,GAAG,IAAI,KAAK,MACnB,gBAAgB,MAAM,EAAE,YAAY,QACpC,OAAO,GAAG,IAAI,IAAI,GACpB;AACE,4BAAgB,MAAM,EAAE,UAAU;AAAA,UACtC;AAEA,0BAAgB,MAAM,EAAE,kBAAkB,OAAO,GAAG,MAAM,CAAC;AAC3D,0BAAgB,MAAM,EAAE,WAAW,OAAO;AAE1C,iBAAO,GAAG,IAAI,IAAI;AAAA,YACd,OAAO;AAAA,YACP,OAAO,GAAG,IAAI;AAAA,YACd,OAAO;AAAA,UACX;AAGA,gBAAM,gBAAgB,MAAM,EAAE;AAC9B,cAAI,QAAQ,MAAM;AACd,mBAAO,GAAG,IAAI,IAAI,OAAO,QAAQ,gBAAgB,KAAK,OAAO,GAAG,IAAI,CAAC;AAAA,UACzE;AAEA,0BAAgB,MAAM;AACtB,wBAAc,MAAM;AAAA,QACxB;AAEA,iBAAS,gBAAgBX,SAAQ,MAAMoC,WAAU;AAC7C,cAAI;AAEJ,cAAIA,aAAY,MAAM;AAElB,mBAAO;AAAA,UACX;AACA,cAAIpC,QAAO,gBAAgB,MAAM;AAC7B,mBAAOA,QAAO,aAAa,MAAMoC,SAAQ;AAAA,UAC7C,WAAWpC,QAAO,QAAQ,MAAM;AAE5B,mBAAOA,QAAO,KAAKoC,SAAQ;AAC3B,gBAAI,QAAQ,OAAO,IAAI;AACnB,sBAAQ;AAAA,YACZ;AACA,gBAAI,CAAC,QAAQ,SAAS,IAAI;AACtB,qBAAO;AAAA,YACX;AACA,mBAAO;AAAA,UACX,OAAO;AAEH,mBAAO;AAAA,UACX;AAAA,QACJ;AAGA,iBAAS,yBAAyB,QAAQ;AACtC,cAAI,YACA,YACA,aACA,GACA,cACA,kBACA,oBAAoB,OACpB,aAAa,OAAO,GAAG;AAE3B,cAAI,eAAe,GAAG;AAClB,4BAAgB,MAAM,EAAE,gBAAgB;AACxC,mBAAO,KAAK,oBAAI,KAAK,GAAG;AACxB;AAAA,UACJ;AAEA,eAAK,IAAI,GAAG,IAAI,YAAY,KAAK;AAC7B,2BAAe;AACf,+BAAmB;AACnB,yBAAa,WAAW,CAAC,GAAG,MAAM;AAClC,gBAAI,OAAO,WAAW,MAAM;AACxB,yBAAW,UAAU,OAAO;AAAA,YAChC;AACA,uBAAW,KAAK,OAAO,GAAG,CAAC;AAC3B,sCAA0B,UAAU;AAEpC,gBAAI,QAAQ,UAAU,GAAG;AACrB,iCAAmB;AAAA,YACvB;AAGA,4BAAgB,gBAAgB,UAAU,EAAE;AAG5C,4BAAgB,gBAAgB,UAAU,EAAE,aAAa,SAAS;AAElE,4BAAgB,UAAU,EAAE,QAAQ;AAEpC,gBAAI,CAAC,mBAAmB;AACpB,kBACI,eAAe,QACf,eAAe,eACf,kBACF;AACE,8BAAc;AACd,6BAAa;AACb,oBAAI,kBAAkB;AAClB,sCAAoB;AAAA,gBACxB;AAAA,cACJ;AAAA,YACJ,OAAO;AACH,kBAAI,eAAe,aAAa;AAC5B,8BAAc;AACd,6BAAa;AAAA,cACjB;AAAA,YACJ;AAAA,UACJ;AAEA,UAAAtC,QAAO,QAAQ,cAAc,UAAU;AAAA,QAC3C;AAEA,iBAAS,iBAAiB,QAAQ;AAC9B,cAAI,OAAO,IAAI;AACX;AAAA,UACJ;AAEA,cAAI,IAAI,qBAAqB,OAAO,EAAE,GAClC,YAAY,EAAE,QAAQ,SAAY,EAAE,OAAO,EAAE;AACjD,iBAAO,KAAKD;AAAA,YACR,CAAC,EAAE,MAAM,EAAE,OAAO,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW;AAAA,YACtE,SAAU,KAAK;AACX,qBAAO,OAAO,SAAS,KAAK,EAAE;AAAA,YAClC;AAAA,UACJ;AAEA,0BAAgB,MAAM;AAAA,QAC1B;AAEA,iBAAS,iBAAiB,QAAQ;AAC9B,cAAI,MAAM,IAAI,OAAO,cAAc,cAAc,MAAM,CAAC,CAAC;AACzD,cAAI,IAAI,UAAU;AAEd,gBAAI,IAAI,GAAG,GAAG;AACd,gBAAI,WAAW;AAAA,UACnB;AAEA,iBAAO;AAAA,QACX;AAEA,iBAAS,cAAc,QAAQ;AAC3B,cAAI,QAAQ,OAAO,IACfE,UAAS,OAAO;AAEpB,iBAAO,UAAU,OAAO,WAAW,UAAU,OAAO,EAAE;AAEtD,cAAI,UAAU,QAASA,YAAW,UAAa,UAAU,IAAK;AAC1D,mBAAO,cAAc,EAAE,WAAW,KAAK,CAAC;AAAA,UAC5C;AAEA,cAAI,OAAO,UAAU,UAAU;AAC3B,mBAAO,KAAK,QAAQ,OAAO,QAAQ,SAAS,KAAK;AAAA,UACrD;AAEA,cAAI,SAAS,KAAK,GAAG;AACjB,mBAAO,IAAI,OAAO,cAAc,KAAK,CAAC;AAAA,UAC1C,WAAW,OAAO,KAAK,GAAG;AACtB,mBAAO,KAAK;AAAA,UAChB,WAAWL,SAAQK,OAAM,GAAG;AACxB,qCAAyB,MAAM;AAAA,UACnC,WAAWA,SAAQ;AACf,sCAA0B,MAAM;AAAA,UACpC,OAAO;AACH,4BAAgB,MAAM;AAAA,UAC1B;AAEA,cAAI,CAAC,QAAQ,MAAM,GAAG;AAClB,mBAAO,KAAK;AAAA,UAChB;AAEA,iBAAO;AAAA,QACX;AAEA,iBAAS,gBAAgB,QAAQ;AAC7B,cAAI,QAAQ,OAAO;AACnB,cAAI,YAAY,KAAK,GAAG;AACpB,mBAAO,KAAK,IAAI,KAAKN,OAAM,IAAI,CAAC;AAAA,UACpC,WAAW,OAAO,KAAK,GAAG;AACtB,mBAAO,KAAK,IAAI,KAAK,MAAM,QAAQ,CAAC;AAAA,UACxC,WAAW,OAAO,UAAU,UAAU;AAClC,6BAAiB,MAAM;AAAA,UAC3B,WAAWC,SAAQ,KAAK,GAAG;AACvB,mBAAO,KAAKG,KAAI,MAAM,MAAM,CAAC,GAAG,SAAU,KAAK;AAC3C,qBAAO,SAAS,KAAK,EAAE;AAAA,YAC3B,CAAC;AACD,4BAAgB,MAAM;AAAA,UAC1B,WAAW,SAAS,KAAK,GAAG;AACxB,6BAAiB,MAAM;AAAA,UAC3B,WAAW,SAAS,KAAK,GAAG;AAExB,mBAAO,KAAK,IAAI,KAAK,KAAK;AAAA,UAC9B,OAAO;AACH,YAAAJ,OAAM,wBAAwB,MAAM;AAAA,UACxC;AAAA,QACJ;AAEA,iBAAS,iBAAiB,OAAOM,SAAQC,SAAQ,QAAQ,OAAO;AAC5D,cAAIiC,KAAI,CAAC;AAET,cAAIlC,YAAW,QAAQA,YAAW,OAAO;AACrC,qBAASA;AACT,YAAAA,UAAS;AAAA,UACb;AAEA,cAAIC,YAAW,QAAQA,YAAW,OAAO;AACrC,qBAASA;AACT,YAAAA,UAAS;AAAA,UACb;AAEA,cACK,SAAS,KAAK,KAAK,cAAc,KAAK,KACtCN,SAAQ,KAAK,KAAK,MAAM,WAAW,GACtC;AACE,oBAAQ;AAAA,UACZ;AAGA,UAAAuC,GAAE,mBAAmB;AACrB,UAAAA,GAAE,UAAUA,GAAE,SAAS;AACvB,UAAAA,GAAE,KAAKjC;AACP,UAAAiC,GAAE,KAAK;AACP,UAAAA,GAAE,KAAKlC;AACP,UAAAkC,GAAE,UAAU;AAEZ,iBAAO,iBAAiBA,EAAC;AAAA,QAC7B;AAEA,iBAAS,YAAY,OAAOlC,SAAQC,SAAQ,QAAQ;AAChD,iBAAO,iBAAiB,OAAOD,SAAQC,SAAQ,QAAQ,KAAK;AAAA,QAChE;AAEA,YAAI,eAAe;AAAA,UACX;AAAA,UACA,WAAY;AACR,gBAAI,QAAQ,YAAY,MAAM,MAAM,SAAS;AAC7C,gBAAI,KAAK,QAAQ,KAAK,MAAM,QAAQ,GAAG;AACnC,qBAAO,QAAQ,OAAO,OAAO;AAAA,YACjC,OAAO;AACH,qBAAO,cAAc;AAAA,YACzB;AAAA,UACJ;AAAA,QACJ,GACA,eAAe;AAAA,UACX;AAAA,UACA,WAAY;AACR,gBAAI,QAAQ,YAAY,MAAM,MAAM,SAAS;AAC7C,gBAAI,KAAK,QAAQ,KAAK,MAAM,QAAQ,GAAG;AACnC,qBAAO,QAAQ,OAAO,OAAO;AAAA,YACjC,OAAO;AACH,qBAAO,cAAc;AAAA,YACzB;AAAA,UACJ;AAAA,QACJ;AAOJ,iBAAS,OAAO,IAAI,SAAS;AACzB,cAAI,KAAK;AACT,cAAI,QAAQ,WAAW,KAAKN,SAAQ,QAAQ,CAAC,CAAC,GAAG;AAC7C,sBAAU,QAAQ,CAAC;AAAA,UACvB;AACA,cAAI,CAAC,QAAQ,QAAQ;AACjB,mBAAO,YAAY;AAAA,UACvB;AACA,gBAAM,QAAQ,CAAC;AACf,eAAK,IAAI,GAAG,IAAI,QAAQ,QAAQ,EAAE,GAAG;AACjC,gBAAI,CAAC,QAAQ,CAAC,EAAE,QAAQ,KAAK,QAAQ,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG;AAC9C,oBAAM,QAAQ,CAAC;AAAA,YACnB;AAAA,UACJ;AACA,iBAAO;AAAA,QACX;AAGA,iBAAS2C,OAAM;AACX,cAAI,OAAO,CAAC,EAAE,MAAM,KAAK,WAAW,CAAC;AAErC,iBAAO,OAAO,YAAY,IAAI;AAAA,QAClC;AAEA,iBAASC,OAAM;AACX,cAAI,OAAO,CAAC,EAAE,MAAM,KAAK,WAAW,CAAC;AAErC,iBAAO,OAAO,WAAW,IAAI;AAAA,QACjC;AAEA,YAAI9B,OAAM,WAAY;AAClB,iBAAO,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,oBAAI,KAAK;AAAA,QAC7C;AAEA,YAAI,WAAW;AAAA,UACX;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACJ;AAEA,iBAAS,gBAAgB,GAAG;AACxB,cAAI,KACA,iBAAiB,OACjB,GACA,WAAW,SAAS;AACxB,eAAK,OAAO,GAAG;AACX,gBACI,WAAW,GAAG,GAAG,KACjB,EACIa,SAAQ,KAAK,UAAU,GAAG,MAAM,OAC/B,EAAE,GAAG,KAAK,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,KAEtC;AACE,qBAAO;AAAA,YACX;AAAA,UACJ;AAEA,eAAK,IAAI,GAAG,IAAI,UAAU,EAAE,GAAG;AAC3B,gBAAI,EAAE,SAAS,CAAC,CAAC,GAAG;AAChB,kBAAI,gBAAgB;AAChB,uBAAO;AAAA,cACX;AACA,kBAAI,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC,MAAM,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG;AACtD,iCAAiB;AAAA,cACrB;AAAA,YACJ;AAAA,UACJ;AAEA,iBAAO;AAAA,QACX;AAEA,iBAAS,YAAY;AACjB,iBAAO,KAAK;AAAA,QAChB;AAEA,iBAAS,kBAAkB;AACvB,iBAAO,eAAe,GAAG;AAAA,QAC7B;AAEA,iBAAS,SAAS,UAAU;AACxB,cAAI,kBAAkB,qBAAqB,QAAQ,GAC/CkB,SAAQ,gBAAgB,QAAQ,GAChC,WAAW,gBAAgB,WAAW,GACtCC,UAAS,gBAAgB,SAAS,GAClCC,SAAQ,gBAAgB,QAAQ,gBAAgB,WAAW,GAC3DC,QAAO,gBAAgB,OAAO,GAC9BhB,SAAQ,gBAAgB,QAAQ,GAChCC,WAAU,gBAAgB,UAAU,GACpCgB,WAAU,gBAAgB,UAAU,GACpCC,gBAAe,gBAAgB,eAAe;AAElD,eAAK,WAAW,gBAAgB,eAAe;AAG/C,eAAK,gBACD,CAACA,gBACDD,WAAU;AAAA,UACVhB,WAAU;AAAA,UACVD,SAAQ,MAAO,KAAK;AAGxB,eAAK,QAAQ,CAACgB,QAAOD,SAAQ;AAI7B,eAAK,UAAU,CAACD,UAAS,WAAW,IAAID,SAAQ;AAEhD,eAAK,QAAQ,CAAC;AAEd,eAAK,UAAU,UAAU;AAEzB,eAAK,QAAQ;AAAA,QACjB;AAEA,iBAAS,WAAW,KAAK;AACrB,iBAAO,eAAe;AAAA,QAC1B;AAEA,iBAAS,SAAS9B,SAAQ;AACtB,cAAIA,UAAS,GAAG;AACZ,mBAAO,KAAK,MAAM,KAAKA,OAAM,IAAI;AAAA,UACrC,OAAO;AACH,mBAAO,KAAK,MAAMA,OAAM;AAAA,UAC5B;AAAA,QACJ;AAGA,iBAAS,cAAc,QAAQ,QAAQ,aAAa;AAChD,cAAI,MAAM,KAAK,IAAI,OAAO,QAAQ,OAAO,MAAM,GAC3C,aAAa,KAAK,IAAI,OAAO,SAAS,OAAO,MAAM,GACnD,QAAQ,GACR;AACJ,eAAK,IAAI,GAAG,IAAI,KAAK,KAAK;AACtB,gBACK,eAAe,OAAO,CAAC,MAAM,OAAO,CAAC,KACrC,CAAC,eAAe,MAAM,OAAO,CAAC,CAAC,MAAM,MAAM,OAAO,CAAC,CAAC,GACvD;AACE;AAAA,YACJ;AAAA,UACJ;AACA,iBAAO,QAAQ;AAAA,QACnB;AAIA,iBAAS,OAAOE,QAAO,WAAW;AAC9B,yBAAeA,QAAO,GAAG,GAAG,WAAY;AACpC,gBAAIkC,UAAS,KAAK,UAAU,GACxBnC,QAAO;AACX,gBAAImC,UAAS,GAAG;AACZ,cAAAA,UAAS,CAACA;AACV,cAAAnC,QAAO;AAAA,YACX;AACA,mBACIA,QACA,SAAS,CAAC,EAAEmC,UAAS,KAAK,CAAC,IAC3B,YACA,SAAS,CAAC,CAACA,UAAS,IAAI,CAAC;AAAA,UAEjC,CAAC;AAAA,QACL;AAEA,eAAO,KAAK,GAAG;AACf,eAAO,MAAM,EAAE;AAIf,sBAAc,KAAK,gBAAgB;AACnC,sBAAc,MAAM,gBAAgB;AACpC,sBAAc,CAAC,KAAK,IAAI,GAAG,SAAU,OAAO,OAAO,QAAQ;AACvD,iBAAO,UAAU;AACjB,iBAAO,OAAO,iBAAiB,kBAAkB,KAAK;AAAA,QAC1D,CAAC;AAOD,YAAI,cAAc;AAElB,iBAAS,iBAAiB,SAAS,QAAQ;AACvC,cAAI,WAAW,UAAU,IAAI,MAAM,OAAO,GACtC,OACA,OACAlB;AAEJ,cAAI,YAAY,MAAM;AAClB,mBAAO;AAAA,UACX;AAEA,kBAAQ,QAAQ,QAAQ,SAAS,CAAC,KAAK,CAAC;AACxC,mBAAS,QAAQ,IAAI,MAAM,WAAW,KAAK,CAAC,KAAK,GAAG,CAAC;AACrD,UAAAA,WAAU,EAAE,MAAM,CAAC,IAAI,MAAM,MAAM,MAAM,CAAC,CAAC;AAE3C,iBAAOA,aAAY,IAAI,IAAI,MAAM,CAAC,MAAM,MAAMA,WAAU,CAACA;AAAA,QAC7D;AAGA,iBAAS,gBAAgB,OAAO,OAAO;AACnC,cAAI,KAAKZ;AACT,cAAI,MAAM,QAAQ;AACd,kBAAM,MAAM,MAAM;AAClB,YAAAA,SACK,SAAS,KAAK,KAAK,OAAO,KAAK,IAC1B,MAAM,QAAQ,IACd,YAAY,KAAK,EAAE,QAAQ,KAAK,IAAI,QAAQ;AAEtD,gBAAI,GAAG,QAAQ,IAAI,GAAG,QAAQ,IAAIA,KAAI;AACtC,YAAAtB,OAAM,aAAa,KAAK,KAAK;AAC7B,mBAAO;AAAA,UACX,OAAO;AACH,mBAAO,YAAY,KAAK,EAAE,MAAM;AAAA,UACpC;AAAA,QACJ;AAEA,iBAAS,cAAc,GAAG;AAGtB,iBAAO,CAAC,KAAK,MAAM,EAAE,GAAG,kBAAkB,CAAC;AAAA,QAC/C;AAMA,QAAAA,OAAM,eAAe,WAAY;AAAA,QAAC;AAclC,iBAAS,aAAa,OAAO,eAAe,aAAa;AACrD,cAAIoD,UAAS,KAAK,WAAW,GACzB;AACJ,cAAI,CAAC,KAAK,QAAQ,GAAG;AACjB,mBAAO,SAAS,OAAO,OAAO;AAAA,UAClC;AACA,cAAI,SAAS,MAAM;AACf,gBAAI,OAAO,UAAU,UAAU;AAC3B,sBAAQ,iBAAiB,kBAAkB,KAAK;AAChD,kBAAI,UAAU,MAAM;AAChB,uBAAO;AAAA,cACX;AAAA,YACJ,WAAW,KAAK,IAAI,KAAK,IAAI,MAAM,CAAC,aAAa;AAC7C,sBAAQ,QAAQ;AAAA,YACpB;AACA,gBAAI,CAAC,KAAK,UAAU,eAAe;AAC/B,4BAAc,cAAc,IAAI;AAAA,YACpC;AACA,iBAAK,UAAU;AACf,iBAAK,SAAS;AACd,gBAAI,eAAe,MAAM;AACrB,mBAAK,IAAI,aAAa,GAAG;AAAA,YAC7B;AACA,gBAAIA,YAAW,OAAO;AAClB,kBAAI,CAAC,iBAAiB,KAAK,mBAAmB;AAC1C;AAAA,kBACI;AAAA,kBACA,eAAe,QAAQA,SAAQ,GAAG;AAAA,kBAClC;AAAA,kBACA;AAAA,gBACJ;AAAA,cACJ,WAAW,CAAC,KAAK,mBAAmB;AAChC,qBAAK,oBAAoB;AACzB,gBAAApD,OAAM,aAAa,MAAM,IAAI;AAC7B,qBAAK,oBAAoB;AAAA,cAC7B;AAAA,YACJ;AACA,mBAAO;AAAA,UACX,OAAO;AACH,mBAAO,KAAK,SAASoD,UAAS,cAAc,IAAI;AAAA,UACpD;AAAA,QACJ;AAEA,iBAAS,WAAW,OAAO,eAAe;AACtC,cAAI,SAAS,MAAM;AACf,gBAAI,OAAO,UAAU,UAAU;AAC3B,sBAAQ,CAAC;AAAA,YACb;AAEA,iBAAK,UAAU,OAAO,aAAa;AAEnC,mBAAO;AAAA,UACX,OAAO;AACH,mBAAO,CAAC,KAAK,UAAU;AAAA,UAC3B;AAAA,QACJ;AAEA,iBAAS,eAAe,eAAe;AACnC,iBAAO,KAAK,UAAU,GAAG,aAAa;AAAA,QAC1C;AAEA,iBAAS,iBAAiB,eAAe;AACrC,cAAI,KAAK,QAAQ;AACb,iBAAK,UAAU,GAAG,aAAa;AAC/B,iBAAK,SAAS;AAEd,gBAAI,eAAe;AACf,mBAAK,SAAS,cAAc,IAAI,GAAG,GAAG;AAAA,YAC1C;AAAA,UACJ;AACA,iBAAO;AAAA,QACX;AAEA,iBAAS,0BAA0B;AAC/B,cAAI,KAAK,QAAQ,MAAM;AACnB,iBAAK,UAAU,KAAK,MAAM,OAAO,IAAI;AAAA,UACzC,WAAW,OAAO,KAAK,OAAO,UAAU;AACpC,gBAAI,QAAQ,iBAAiB,aAAa,KAAK,EAAE;AACjD,gBAAI,SAAS,MAAM;AACf,mBAAK,UAAU,KAAK;AAAA,YACxB,OAAO;AACH,mBAAK,UAAU,GAAG,IAAI;AAAA,YAC1B;AAAA,UACJ;AACA,iBAAO;AAAA,QACX;AAEA,iBAAS,qBAAqB,OAAO;AACjC,cAAI,CAAC,KAAK,QAAQ,GAAG;AACjB,mBAAO;AAAA,UACX;AACA,kBAAQ,QAAQ,YAAY,KAAK,EAAE,UAAU,IAAI;AAEjD,kBAAQ,KAAK,UAAU,IAAI,SAAS,OAAO;AAAA,QAC/C;AAEA,iBAAS,uBAAuB;AAC5B,iBACI,KAAK,UAAU,IAAI,KAAK,MAAM,EAAE,MAAM,CAAC,EAAE,UAAU,KACnD,KAAK,UAAU,IAAI,KAAK,MAAM,EAAE,MAAM,CAAC,EAAE,UAAU;AAAA,QAE3D;AAEA,iBAAS,8BAA8B;AACnC,cAAI,CAAC,YAAY,KAAK,aAAa,GAAG;AAClC,mBAAO,KAAK;AAAA,UAChB;AAEA,cAAIZ,KAAI,CAAC,GACL;AAEJ,qBAAWA,IAAG,IAAI;AAClB,UAAAA,KAAI,cAAcA,EAAC;AAEnB,cAAIA,GAAE,IAAI;AACN,oBAAQA,GAAE,SAAS,UAAUA,GAAE,EAAE,IAAI,YAAYA,GAAE,EAAE;AACrD,iBAAK,gBACD,KAAK,QAAQ,KAAK,cAAcA,GAAE,IAAI,MAAM,QAAQ,CAAC,IAAI;AAAA,UACjE,OAAO;AACH,iBAAK,gBAAgB;AAAA,UACzB;AAEA,iBAAO,KAAK;AAAA,QAChB;AAEA,iBAAS,UAAU;AACf,iBAAO,KAAK,QAAQ,IAAI,CAAC,KAAK,SAAS;AAAA,QAC3C;AAEA,iBAAS,cAAc;AACnB,iBAAO,KAAK,QAAQ,IAAI,KAAK,SAAS;AAAA,QAC1C;AAEA,iBAAS,QAAQ;AACb,iBAAO,KAAK,QAAQ,IAAI,KAAK,UAAU,KAAK,YAAY,IAAI;AAAA,QAChE;AAGA,YAAI,cAAc,yDAId,WACI;AAER,iBAAS,eAAe,OAAO,KAAK;AAChC,cAAI,WAAW,OAEXF,SAAQ,MACRrB,OACA,KACA;AAEJ,cAAI,WAAW,KAAK,GAAG;AACnB,uBAAW;AAAA,cACP,IAAI,MAAM;AAAA,cACV,GAAG,MAAM;AAAA,cACT,GAAG,MAAM;AAAA,YACb;AAAA,UACJ,WAAW,SAAS,KAAK,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG;AAC1C,uBAAW,CAAC;AACZ,gBAAI,KAAK;AACL,uBAAS,GAAG,IAAI,CAAC;AAAA,YACrB,OAAO;AACH,uBAAS,eAAe,CAAC;AAAA,YAC7B;AAAA,UACJ,WAAYqB,SAAQ,YAAY,KAAK,KAAK,GAAI;AAC1C,YAAArB,QAAOqB,OAAM,CAAC,MAAM,MAAM,KAAK;AAC/B,uBAAW;AAAA,cACP,GAAG;AAAA,cACH,GAAG,MAAMA,OAAM,IAAI,CAAC,IAAIrB;AAAA,cACxB,GAAG,MAAMqB,OAAM,IAAI,CAAC,IAAIrB;AAAA,cACxB,GAAG,MAAMqB,OAAM,MAAM,CAAC,IAAIrB;AAAA,cAC1B,GAAG,MAAMqB,OAAM,MAAM,CAAC,IAAIrB;AAAA,cAC1B,IAAI,MAAM,SAASqB,OAAM,WAAW,IAAI,GAAI,CAAC,IAAIrB;AAAA;AAAA,YACrD;AAAA,UACJ,WAAYqB,SAAQ,SAAS,KAAK,KAAK,GAAI;AACvC,YAAArB,QAAOqB,OAAM,CAAC,MAAM,MAAM,KAAK;AAC/B,uBAAW;AAAA,cACP,GAAG,SAASA,OAAM,CAAC,GAAGrB,KAAI;AAAA,cAC1B,GAAG,SAASqB,OAAM,CAAC,GAAGrB,KAAI;AAAA,cAC1B,GAAG,SAASqB,OAAM,CAAC,GAAGrB,KAAI;AAAA,cAC1B,GAAG,SAASqB,OAAM,CAAC,GAAGrB,KAAI;AAAA,cAC1B,GAAG,SAASqB,OAAM,CAAC,GAAGrB,KAAI;AAAA,cAC1B,GAAG,SAASqB,OAAM,CAAC,GAAGrB,KAAI;AAAA,cAC1B,GAAG,SAASqB,OAAM,CAAC,GAAGrB,KAAI;AAAA,YAC9B;AAAA,UACJ,WAAW,YAAY,MAAM;AAEzB,uBAAW,CAAC;AAAA,UAChB,WACI,OAAO,aAAa,aACnB,UAAU,YAAY,QAAQ,WACjC;AACE,sBAAU;AAAA,cACN,YAAY,SAAS,IAAI;AAAA,cACzB,YAAY,SAAS,EAAE;AAAA,YAC3B;AAEA,uBAAW,CAAC;AACZ,qBAAS,KAAK,QAAQ;AACtB,qBAAS,IAAI,QAAQ;AAAA,UACzB;AAEA,gBAAM,IAAI,SAAS,QAAQ;AAE3B,cAAI,WAAW,KAAK,KAAK,WAAW,OAAO,SAAS,GAAG;AACnD,gBAAI,UAAU,MAAM;AAAA,UACxB;AAEA,cAAI,WAAW,KAAK,KAAK,WAAW,OAAO,UAAU,GAAG;AACpD,gBAAI,WAAW,MAAM;AAAA,UACzB;AAEA,iBAAO;AAAA,QACX;AAEA,uBAAe,KAAK,SAAS;AAC7B,uBAAe,UAAU;AAEzB,iBAAS,SAAS,KAAKA,OAAM;AAIzB,cAAI,MAAM,OAAO,WAAW,IAAI,QAAQ,KAAK,GAAG,CAAC;AAEjD,kBAAQ,MAAM,GAAG,IAAI,IAAI,OAAOA;AAAA,QACpC;AAEA,iBAAS,0BAA0B,MAAM,OAAO;AAC5C,cAAI,MAAM,CAAC;AAEX,cAAI,SACA,MAAM,MAAM,IAAI,KAAK,MAAM,KAAK,MAAM,KAAK,IAAI,KAAK,KAAK,KAAK;AAClE,cAAI,KAAK,MAAM,EAAE,IAAI,IAAI,QAAQ,GAAG,EAAE,QAAQ,KAAK,GAAG;AAClD,cAAE,IAAI;AAAA,UACV;AAEA,cAAI,eAAe,CAAC,QAAQ,CAAC,KAAK,MAAM,EAAE,IAAI,IAAI,QAAQ,GAAG;AAE7D,iBAAO;AAAA,QACX;AAEA,iBAAS,kBAAkB,MAAM,OAAO;AACpC,cAAI;AACJ,cAAI,EAAE,KAAK,QAAQ,KAAK,MAAM,QAAQ,IAAI;AACtC,mBAAO,EAAE,cAAc,GAAG,QAAQ,EAAE;AAAA,UACxC;AAEA,kBAAQ,gBAAgB,OAAO,IAAI;AACnC,cAAI,KAAK,SAAS,KAAK,GAAG;AACtB,kBAAM,0BAA0B,MAAM,KAAK;AAAA,UAC/C,OAAO;AACH,kBAAM,0BAA0B,OAAO,IAAI;AAC3C,gBAAI,eAAe,CAAC,IAAI;AACxB,gBAAI,SAAS,CAAC,IAAI;AAAA,UACtB;AAEA,iBAAO;AAAA,QACX;AAGA,iBAAS,YAAY,WAAWL,OAAM;AAClC,iBAAO,SAAU,KAAKyC,SAAQ;AAC1B,gBAAI,KAAK;AAET,gBAAIA,YAAW,QAAQ,CAAC,MAAM,CAACA,OAAM,GAAG;AACpC;AAAA,gBACIzC;AAAA,gBACA,cACIA,QACA,yDACAA,QACA;AAAA,cAER;AACA,oBAAM;AACN,oBAAMyC;AACN,cAAAA,UAAS;AAAA,YACb;AAEA,kBAAM,eAAe,KAAKA,OAAM;AAChC,wBAAY,MAAM,KAAK,SAAS;AAChC,mBAAO;AAAA,UACX;AAAA,QACJ;AAEA,iBAAS,YAAY,KAAK,UAAU,UAAU,cAAc;AACxD,cAAIF,gBAAe,SAAS,eACxBF,QAAO,SAAS,SAAS,KAAK,GAC9BF,UAAS,SAAS,SAAS,OAAO;AAEtC,cAAI,CAAC,IAAI,QAAQ,GAAG;AAEhB;AAAA,UACJ;AAEA,yBAAe,gBAAgB,OAAO,OAAO;AAE7C,cAAIA,SAAQ;AACR,qBAAS,KAAK,IAAI,KAAK,OAAO,IAAIA,UAAS,QAAQ;AAAA,UACvD;AACA,cAAIE,OAAM;AACN,kBAAM,KAAK,QAAQ,IAAI,KAAK,MAAM,IAAIA,QAAO,QAAQ;AAAA,UACzD;AACA,cAAIE,eAAc;AACd,gBAAI,GAAG,QAAQ,IAAI,GAAG,QAAQ,IAAIA,gBAAe,QAAQ;AAAA,UAC7D;AACA,cAAI,cAAc;AACd,YAAAnD,OAAM,aAAa,KAAKiD,SAAQF,OAAM;AAAA,UAC1C;AAAA,QACJ;AAEA,YAAI,MAAM,YAAY,GAAG,KAAK,GAC1B,WAAW,YAAY,IAAI,UAAU;AAEzC,iBAAS,SAAS,OAAO;AACrB,iBAAO,OAAO,UAAU,YAAY,iBAAiB;AAAA,QACzD;AAGA,iBAAS,cAAc,OAAO;AAC1B,iBACI,SAAS,KAAK,KACd,OAAO,KAAK,KACZ,SAAS,KAAK,KACd,SAAS,KAAK,KACd,sBAAsB,KAAK,KAC3B,oBAAoB,KAAK,KACzB,UAAU,QACV,UAAU;AAAA,QAElB;AAEA,iBAAS,oBAAoB,OAAO;AAChC,cAAI,aAAa,SAAS,KAAK,KAAK,CAAC,cAAc,KAAK,GACpD,eAAe,OACf,aAAa;AAAA,YACT;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACJ,GACA,GACA,UACA,cAAc,WAAW;AAE7B,eAAK,IAAI,GAAG,IAAI,aAAa,KAAK,GAAG;AACjC,uBAAW,WAAW,CAAC;AACvB,2BAAe,gBAAgB,WAAW,OAAO,QAAQ;AAAA,UAC7D;AAEA,iBAAO,cAAc;AAAA,QACzB;AAEA,iBAAS,sBAAsB,OAAO;AAClC,cAAI,YAAY9C,SAAQ,KAAK,GACzB,eAAe;AACnB,cAAI,WAAW;AACX,2BACI,MAAM,OAAO,SAAU,MAAM;AACzB,qBAAO,CAAC,SAAS,IAAI,KAAK,SAAS,KAAK;AAAA,YAC5C,CAAC,EAAE,WAAW;AAAA,UACtB;AACA,iBAAO,aAAa;AAAA,QACxB;AAEA,iBAAS,eAAe,OAAO;AAC3B,cAAI,aAAa,SAAS,KAAK,KAAK,CAAC,cAAc,KAAK,GACpD,eAAe,OACf,aAAa;AAAA,YACT;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACJ,GACA,GACA;AAEJ,eAAK,IAAI,GAAG,IAAI,WAAW,QAAQ,KAAK,GAAG;AACvC,uBAAW,WAAW,CAAC;AACvB,2BAAe,gBAAgB,WAAW,OAAO,QAAQ;AAAA,UAC7D;AAEA,iBAAO,cAAc;AAAA,QACzB;AAEA,iBAAS,kBAAkB,UAAUc,MAAK;AACtC,cAAIO,QAAO,SAAS,KAAKP,MAAK,QAAQ,IAAI;AAC1C,iBAAOO,QAAO,KACR,aACAA,QAAO,KACP,aACAA,QAAO,IACP,YACAA,QAAO,IACP,YACAA,QAAO,IACP,YACAA,QAAO,IACP,aACA;AAAA,QACV;AAEA,iBAAS,WAAWgC,OAAM,SAAS;AAE/B,cAAI,UAAU,WAAW,GAAG;AACxB,gBAAI,CAAC,UAAU,CAAC,GAAG;AACf,cAAAA,QAAO;AACP,wBAAU;AAAA,YACd,WAAW,cAAc,UAAU,CAAC,CAAC,GAAG;AACpC,cAAAA,QAAO,UAAU,CAAC;AAClB,wBAAU;AAAA,YACd,WAAW,eAAe,UAAU,CAAC,CAAC,GAAG;AACrC,wBAAU,UAAU,CAAC;AACrB,cAAAA,QAAO;AAAA,YACX;AAAA,UACJ;AAGA,cAAIvC,OAAMuC,SAAQ,YAAY,GAC1B,MAAM,gBAAgBvC,MAAK,IAAI,EAAE,QAAQ,KAAK,GAC9CT,UAASN,OAAM,eAAe,MAAM,GAAG,KAAK,YAC5C,SACI,YACCa,YAAW,QAAQP,OAAM,CAAC,IACrB,QAAQA,OAAM,EAAE,KAAK,MAAMS,IAAG,IAC9B,QAAQT,OAAM;AAE5B,iBAAO,KAAK;AAAA,YACR,UAAU,KAAK,WAAW,EAAE,SAASA,SAAQ,MAAM,YAAYS,IAAG,CAAC;AAAA,UACvE;AAAA,QACJ;AAEA,iBAAS,QAAQ;AACb,iBAAO,IAAI,OAAO,IAAI;AAAA,QAC1B;AAEA,iBAAS,QAAQ,OAAO,OAAO;AAC3B,cAAI,aAAa,SAAS,KAAK,IAAI,QAAQ,YAAY,KAAK;AAC5D,cAAI,EAAE,KAAK,QAAQ,KAAK,WAAW,QAAQ,IAAI;AAC3C,mBAAO;AAAA,UACX;AACA,kBAAQ,eAAe,KAAK,KAAK;AACjC,cAAI,UAAU,eAAe;AACzB,mBAAO,KAAK,QAAQ,IAAI,WAAW,QAAQ;AAAA,UAC/C,OAAO;AACH,mBAAO,WAAW,QAAQ,IAAI,KAAK,MAAM,EAAE,QAAQ,KAAK,EAAE,QAAQ;AAAA,UACtE;AAAA,QACJ;AAEA,iBAAS,SAAS,OAAO,OAAO;AAC5B,cAAI,aAAa,SAAS,KAAK,IAAI,QAAQ,YAAY,KAAK;AAC5D,cAAI,EAAE,KAAK,QAAQ,KAAK,WAAW,QAAQ,IAAI;AAC3C,mBAAO;AAAA,UACX;AACA,kBAAQ,eAAe,KAAK,KAAK;AACjC,cAAI,UAAU,eAAe;AACzB,mBAAO,KAAK,QAAQ,IAAI,WAAW,QAAQ;AAAA,UAC/C,OAAO;AACH,mBAAO,KAAK,MAAM,EAAE,MAAM,KAAK,EAAE,QAAQ,IAAI,WAAW,QAAQ;AAAA,UACpE;AAAA,QACJ;AAEA,iBAAS,UAAUL,OAAMD,KAAI,OAAO,aAAa;AAC7C,cAAI,YAAY,SAASC,KAAI,IAAIA,QAAO,YAAYA,KAAI,GACpD,UAAU,SAASD,GAAE,IAAIA,MAAK,YAAYA,GAAE;AAChD,cAAI,EAAE,KAAK,QAAQ,KAAK,UAAU,QAAQ,KAAK,QAAQ,QAAQ,IAAI;AAC/D,mBAAO;AAAA,UACX;AACA,wBAAc,eAAe;AAC7B,kBACK,YAAY,CAAC,MAAM,MACd,KAAK,QAAQ,WAAW,KAAK,IAC7B,CAAC,KAAK,SAAS,WAAW,KAAK,OACpC,YAAY,CAAC,MAAM,MACd,KAAK,SAAS,SAAS,KAAK,IAC5B,CAAC,KAAK,QAAQ,SAAS,KAAK;AAAA,QAE1C;AAEA,iBAAS,OAAO,OAAO,OAAO;AAC1B,cAAI,aAAa,SAAS,KAAK,IAAI,QAAQ,YAAY,KAAK,GACxD;AACJ,cAAI,EAAE,KAAK,QAAQ,KAAK,WAAW,QAAQ,IAAI;AAC3C,mBAAO;AAAA,UACX;AACA,kBAAQ,eAAe,KAAK,KAAK;AACjC,cAAI,UAAU,eAAe;AACzB,mBAAO,KAAK,QAAQ,MAAM,WAAW,QAAQ;AAAA,UACjD,OAAO;AACH,sBAAU,WAAW,QAAQ;AAC7B,mBACI,KAAK,MAAM,EAAE,QAAQ,KAAK,EAAE,QAAQ,KAAK,WACzC,WAAW,KAAK,MAAM,EAAE,MAAM,KAAK,EAAE,QAAQ;AAAA,UAErD;AAAA,QACJ;AAEA,iBAAS,cAAc,OAAO,OAAO;AACjC,iBAAO,KAAK,OAAO,OAAO,KAAK,KAAK,KAAK,QAAQ,OAAO,KAAK;AAAA,QACjE;AAEA,iBAAS,eAAe,OAAO,OAAO;AAClC,iBAAO,KAAK,OAAO,OAAO,KAAK,KAAK,KAAK,SAAS,OAAO,KAAK;AAAA,QAClE;AAEA,iBAAS,KAAK,OAAO,OAAO,SAAS;AACjC,cAAI,MAAM,WAAW;AAErB,cAAI,CAAC,KAAK,QAAQ,GAAG;AACjB,mBAAO;AAAA,UACX;AAEA,iBAAO,gBAAgB,OAAO,IAAI;AAElC,cAAI,CAAC,KAAK,QAAQ,GAAG;AACjB,mBAAO;AAAA,UACX;AAEA,uBAAa,KAAK,UAAU,IAAI,KAAK,UAAU,KAAK;AAEpD,kBAAQ,eAAe,KAAK;AAE5B,kBAAQ,OAAO;AAAA,YACX,KAAK;AACD,uBAAS,UAAU,MAAM,IAAI,IAAI;AACjC;AAAA,YACJ,KAAK;AACD,uBAAS,UAAU,MAAM,IAAI;AAC7B;AAAA,YACJ,KAAK;AACD,uBAAS,UAAU,MAAM,IAAI,IAAI;AACjC;AAAA,YACJ,KAAK;AACD,wBAAU,OAAO,QAAQ;AACzB;AAAA,YACJ,KAAK;AACD,wBAAU,OAAO,QAAQ;AACzB;AAAA,YACJ,KAAK;AACD,wBAAU,OAAO,QAAQ;AACzB;AAAA,YACJ,KAAK;AACD,wBAAU,OAAO,OAAO,aAAa;AACrC;AAAA,YACJ,KAAK;AACD,wBAAU,OAAO,OAAO,aAAa;AACrC;AAAA,YACJ;AACI,uBAAS,OAAO;AAAA,UACxB;AAEA,iBAAO,UAAU,SAAS,SAAS,MAAM;AAAA,QAC7C;AAEA,iBAAS,UAAUP,IAAG,GAAG;AACrB,cAAIA,GAAE,KAAK,IAAI,EAAE,KAAK,GAAG;AAGrB,mBAAO,CAAC,UAAU,GAAGA,EAAC;AAAA,UAC1B;AAEA,cAAI,kBAAkB,EAAE,KAAK,IAAIA,GAAE,KAAK,KAAK,MAAM,EAAE,MAAM,IAAIA,GAAE,MAAM,IAEnE,SAASA,GAAE,MAAM,EAAE,IAAI,gBAAgB,QAAQ,GAC/C,SACA;AAEJ,cAAI,IAAI,SAAS,GAAG;AAChB,sBAAUA,GAAE,MAAM,EAAE,IAAI,iBAAiB,GAAG,QAAQ;AAEpD,sBAAU,IAAI,WAAW,SAAS;AAAA,UACtC,OAAO;AACH,sBAAUA,GAAE,MAAM,EAAE,IAAI,iBAAiB,GAAG,QAAQ;AAEpD,sBAAU,IAAI,WAAW,UAAU;AAAA,UACvC;AAGA,iBAAO,EAAE,iBAAiB,WAAW;AAAA,QACzC;AAEA,QAAAF,OAAM,gBAAgB;AACtB,QAAAA,OAAM,mBAAmB;AAEzB,iBAAS,WAAW;AAChB,iBAAO,KAAK,MAAM,EAAE,OAAO,IAAI,EAAE,OAAO,kCAAkC;AAAA,QAC9E;AAEA,iBAAS,YAAY,YAAY;AAC7B,cAAI,CAAC,KAAK,QAAQ,GAAG;AACjB,mBAAO;AAAA,UACX;AACA,cAAI,MAAM,eAAe,MACrB,IAAI,MAAM,KAAK,MAAM,EAAE,IAAI,IAAI;AACnC,cAAI,EAAE,KAAK,IAAI,KAAK,EAAE,KAAK,IAAI,MAAM;AACjC,mBAAO;AAAA,cACH;AAAA,cACA,MACM,mCACA;AAAA,YACV;AAAA,UACJ;AACA,cAAIa,YAAW,KAAK,UAAU,WAAW,GAAG;AAExC,gBAAI,KAAK;AACL,qBAAO,KAAK,OAAO,EAAE,YAAY;AAAA,YACrC,OAAO;AACH,qBAAO,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,UAAU,IAAI,KAAK,GAAI,EACxD,YAAY,EACZ,QAAQ,KAAK,aAAa,GAAG,GAAG,CAAC;AAAA,YAC1C;AAAA,UACJ;AACA,iBAAO;AAAA,YACH;AAAA,YACA,MAAM,iCAAiC;AAAA,UAC3C;AAAA,QACJ;AAQA,iBAAS,UAAU;AACf,cAAI,CAAC,KAAK,QAAQ,GAAG;AACjB,mBAAO,uBAAuB,KAAK,KAAK;AAAA,UAC5C;AACA,cAAI,OAAO,UACP,OAAO,IACP0C,SACA,MACA,UACA;AACJ,cAAI,CAAC,KAAK,QAAQ,GAAG;AACjB,mBAAO,KAAK,UAAU,MAAM,IAAI,eAAe;AAC/C,mBAAO;AAAA,UACX;AACA,UAAAA,UAAS,MAAM,OAAO;AACtB,iBAAO,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,OAAO,SAAS;AAC1D,qBAAW;AACX,mBAAS,OAAO;AAEhB,iBAAO,KAAK,OAAOA,UAAS,OAAO,WAAW,MAAM;AAAA,QACxD;AAEA,iBAASjD,QAAO,aAAa;AACzB,cAAI,CAAC,aAAa;AACd,0BAAc,KAAK,MAAM,IACnBN,OAAM,mBACNA,OAAM;AAAA,UAChB;AACA,cAAI,SAAS,aAAa,MAAM,WAAW;AAC3C,iBAAO,KAAK,WAAW,EAAE,WAAW,MAAM;AAAA,QAC9C;AAEA,iBAASU,MAAK4C,OAAM,eAAe;AAC/B,cACI,KAAK,QAAQ,MACX,SAASA,KAAI,KAAKA,MAAK,QAAQ,KAAM,YAAYA,KAAI,EAAE,QAAQ,IACnE;AACE,mBAAO,eAAe,EAAE,IAAI,MAAM,MAAMA,MAAK,CAAC,EACzC,OAAO,KAAK,OAAO,CAAC,EACpB,SAAS,CAAC,aAAa;AAAA,UAChC,OAAO;AACH,mBAAO,KAAK,WAAW,EAAE,YAAY;AAAA,UACzC;AAAA,QACJ;AAEA,iBAAS,QAAQ,eAAe;AAC5B,iBAAO,KAAK,KAAK,YAAY,GAAG,aAAa;AAAA,QACjD;AAEA,iBAAS,GAAGA,OAAM,eAAe;AAC7B,cACI,KAAK,QAAQ,MACX,SAASA,KAAI,KAAKA,MAAK,QAAQ,KAAM,YAAYA,KAAI,EAAE,QAAQ,IACnE;AACE,mBAAO,eAAe,EAAE,MAAM,MAAM,IAAIA,MAAK,CAAC,EACzC,OAAO,KAAK,OAAO,CAAC,EACpB,SAAS,CAAC,aAAa;AAAA,UAChC,OAAO;AACH,mBAAO,KAAK,WAAW,EAAE,YAAY;AAAA,UACzC;AAAA,QACJ;AAEA,iBAAS,MAAM,eAAe;AAC1B,iBAAO,KAAK,GAAG,YAAY,GAAG,aAAa;AAAA,QAC/C;AAKA,iBAAS/C,QAAO,KAAK;AACjB,cAAI;AAEJ,cAAI,QAAQ,QAAW;AACnB,mBAAO,KAAK,QAAQ;AAAA,UACxB,OAAO;AACH,4BAAgB,UAAU,GAAG;AAC7B,gBAAI,iBAAiB,MAAM;AACvB,mBAAK,UAAU;AAAA,YACnB;AACA,mBAAO;AAAA,UACX;AAAA,QACJ;AAEA,YAAI,OAAO;AAAA,UACP;AAAA,UACA,SAAU,KAAK;AACX,gBAAI,QAAQ,QAAW;AACnB,qBAAO,KAAK,WAAW;AAAA,YAC3B,OAAO;AACH,qBAAO,KAAK,OAAO,GAAG;AAAA,YAC1B;AAAA,UACJ;AAAA,QACJ;AAEA,iBAAS,aAAa;AAClB,iBAAO,KAAK;AAAA,QAChB;AAEA,YAAI,gBAAgB,KAChB,gBAAgB,KAAK,eACrB,cAAc,KAAK,eACnB,oBAAoB,MAAM,MAAM,MAAM,KAAK;AAG/C,iBAAS,MAAM,UAAU,SAAS;AAC9B,kBAAS,WAAW,UAAW,WAAW;AAAA,QAC9C;AAEA,iBAAS,iBAAiBuB,IAAG,GAAGC,IAAG;AAE/B,cAAID,KAAI,OAAOA,MAAK,GAAG;AAEnB,mBAAO,IAAI,KAAKA,KAAI,KAAK,GAAGC,EAAC,IAAI;AAAA,UACrC,OAAO;AACH,mBAAO,IAAI,KAAKD,IAAG,GAAGC,EAAC,EAAE,QAAQ;AAAA,UACrC;AAAA,QACJ;AAEA,iBAAS,eAAeD,IAAG,GAAGC,IAAG;AAE7B,cAAID,KAAI,OAAOA,MAAK,GAAG;AAEnB,mBAAO,KAAK,IAAIA,KAAI,KAAK,GAAGC,EAAC,IAAI;AAAA,UACrC,OAAO;AACH,mBAAO,KAAK,IAAID,IAAG,GAAGC,EAAC;AAAA,UAC3B;AAAA,QACJ;AAEA,iBAAS,QAAQ,OAAO;AACpB,cAAIuB,OAAM;AACV,kBAAQ,eAAe,KAAK;AAC5B,cAAI,UAAU,UAAa,UAAU,iBAAiB,CAAC,KAAK,QAAQ,GAAG;AACnE,mBAAO;AAAA,UACX;AAEA,wBAAc,KAAK,SAAS,iBAAiB;AAE7C,kBAAQ,OAAO;AAAA,YACX,KAAK;AACD,cAAAA,QAAO,YAAY,KAAK,KAAK,GAAG,GAAG,CAAC;AACpC;AAAA,YACJ,KAAK;AACD,cAAAA,QAAO;AAAA,gBACH,KAAK,KAAK;AAAA,gBACV,KAAK,MAAM,IAAK,KAAK,MAAM,IAAI;AAAA,gBAC/B;AAAA,cACJ;AACA;AAAA,YACJ,KAAK;AACD,cAAAA,QAAO,YAAY,KAAK,KAAK,GAAG,KAAK,MAAM,GAAG,CAAC;AAC/C;AAAA,YACJ,KAAK;AACD,cAAAA,QAAO;AAAA,gBACH,KAAK,KAAK;AAAA,gBACV,KAAK,MAAM;AAAA,gBACX,KAAK,KAAK,IAAI,KAAK,QAAQ;AAAA,cAC/B;AACA;AAAA,YACJ,KAAK;AACD,cAAAA,QAAO;AAAA,gBACH,KAAK,KAAK;AAAA,gBACV,KAAK,MAAM;AAAA,gBACX,KAAK,KAAK,KAAK,KAAK,WAAW,IAAI;AAAA,cACvC;AACA;AAAA,YACJ,KAAK;AAAA,YACL,KAAK;AACD,cAAAA,QAAO,YAAY,KAAK,KAAK,GAAG,KAAK,MAAM,GAAG,KAAK,KAAK,CAAC;AACzD;AAAA,YACJ,KAAK;AACD,cAAAA,QAAO,KAAK,GAAG,QAAQ;AACvB,cAAAA,SAAQ;AAAA,gBACJA,SAAQ,KAAK,SAAS,IAAI,KAAK,UAAU,IAAI;AAAA,gBAC7C;AAAA,cACJ;AACA;AAAA,YACJ,KAAK;AACD,cAAAA,QAAO,KAAK,GAAG,QAAQ;AACvB,cAAAA,SAAQ,MAAMA,OAAM,aAAa;AACjC;AAAA,YACJ,KAAK;AACD,cAAAA,QAAO,KAAK,GAAG,QAAQ;AACvB,cAAAA,SAAQ,MAAMA,OAAM,aAAa;AACjC;AAAA,UACR;AAEA,eAAK,GAAG,QAAQA,KAAI;AACpB,UAAAtD,OAAM,aAAa,MAAM,IAAI;AAC7B,iBAAO;AAAA,QACX;AAEA,iBAAS,MAAM,OAAO;AAClB,cAAIsD,OAAM;AACV,kBAAQ,eAAe,KAAK;AAC5B,cAAI,UAAU,UAAa,UAAU,iBAAiB,CAAC,KAAK,QAAQ,GAAG;AACnE,mBAAO;AAAA,UACX;AAEA,wBAAc,KAAK,SAAS,iBAAiB;AAE7C,kBAAQ,OAAO;AAAA,YACX,KAAK;AACD,cAAAA,QAAO,YAAY,KAAK,KAAK,IAAI,GAAG,GAAG,CAAC,IAAI;AAC5C;AAAA,YACJ,KAAK;AACD,cAAAA,QACI;AAAA,gBACI,KAAK,KAAK;AAAA,gBACV,KAAK,MAAM,IAAK,KAAK,MAAM,IAAI,IAAK;AAAA,gBACpC;AAAA,cACJ,IAAI;AACR;AAAA,YACJ,KAAK;AACD,cAAAA,QAAO,YAAY,KAAK,KAAK,GAAG,KAAK,MAAM,IAAI,GAAG,CAAC,IAAI;AACvD;AAAA,YACJ,KAAK;AACD,cAAAA,QACI;AAAA,gBACI,KAAK,KAAK;AAAA,gBACV,KAAK,MAAM;AAAA,gBACX,KAAK,KAAK,IAAI,KAAK,QAAQ,IAAI;AAAA,cACnC,IAAI;AACR;AAAA,YACJ,KAAK;AACD,cAAAA,QACI;AAAA,gBACI,KAAK,KAAK;AAAA,gBACV,KAAK,MAAM;AAAA,gBACX,KAAK,KAAK,KAAK,KAAK,WAAW,IAAI,KAAK;AAAA,cAC5C,IAAI;AACR;AAAA,YACJ,KAAK;AAAA,YACL,KAAK;AACD,cAAAA,QAAO,YAAY,KAAK,KAAK,GAAG,KAAK,MAAM,GAAG,KAAK,KAAK,IAAI,CAAC,IAAI;AACjE;AAAA,YACJ,KAAK;AACD,cAAAA,QAAO,KAAK,GAAG,QAAQ;AACvB,cAAAA,SACI,cACA;AAAA,gBACIA,SAAQ,KAAK,SAAS,IAAI,KAAK,UAAU,IAAI;AAAA,gBAC7C;AAAA,cACJ,IACA;AACJ;AAAA,YACJ,KAAK;AACD,cAAAA,QAAO,KAAK,GAAG,QAAQ;AACvB,cAAAA,SAAQ,gBAAgB,MAAMA,OAAM,aAAa,IAAI;AACrD;AAAA,YACJ,KAAK;AACD,cAAAA,QAAO,KAAK,GAAG,QAAQ;AACvB,cAAAA,SAAQ,gBAAgB,MAAMA,OAAM,aAAa,IAAI;AACrD;AAAA,UACR;AAEA,eAAK,GAAG,QAAQA,KAAI;AACpB,UAAAtD,OAAM,aAAa,MAAM,IAAI;AAC7B,iBAAO;AAAA,QACX;AAEA,iBAAS,UAAU;AACf,iBAAO,KAAK,GAAG,QAAQ,KAAK,KAAK,WAAW,KAAK;AAAA,QACrD;AAEA,iBAAS,OAAO;AACZ,iBAAO,KAAK,MAAM,KAAK,QAAQ,IAAI,GAAI;AAAA,QAC3C;AAEA,iBAAS,SAAS;AACd,iBAAO,IAAI,KAAK,KAAK,QAAQ,CAAC;AAAA,QAClC;AAEA,iBAASwD,WAAU;AACf,cAAI,IAAI;AACR,iBAAO;AAAA,YACH,EAAE,KAAK;AAAA,YACP,EAAE,MAAM;AAAA,YACR,EAAE,KAAK;AAAA,YACP,EAAE,KAAK;AAAA,YACP,EAAE,OAAO;AAAA,YACT,EAAE,OAAO;AAAA,YACT,EAAE,YAAY;AAAA,UAClB;AAAA,QACJ;AAEA,iBAAS,WAAW;AAChB,cAAI,IAAI;AACR,iBAAO;AAAA,YACH,OAAO,EAAE,KAAK;AAAA,YACd,QAAQ,EAAE,MAAM;AAAA,YAChB,MAAM,EAAE,KAAK;AAAA,YACb,OAAO,EAAE,MAAM;AAAA,YACf,SAAS,EAAE,QAAQ;AAAA,YACnB,SAAS,EAAE,QAAQ;AAAA,YACnB,cAAc,EAAE,aAAa;AAAA,UACjC;AAAA,QACJ;AAEA,iBAAS,SAAS;AAEd,iBAAO,KAAK,QAAQ,IAAI,KAAK,YAAY,IAAI;AAAA,QACjD;AAEA,iBAAS,YAAY;AACjB,iBAAO,QAAQ,IAAI;AAAA,QACvB;AAEA,iBAAS,eAAe;AACpB,iBAAOnD,QAAO,CAAC,GAAG,gBAAgB,IAAI,CAAC;AAAA,QAC3C;AAEA,iBAAS,YAAY;AACjB,iBAAO,gBAAgB,IAAI,EAAE;AAAA,QACjC;AAEA,iBAAS,eAAe;AACpB,iBAAO;AAAA,YACH,OAAO,KAAK;AAAA,YACZ,QAAQ,KAAK;AAAA,YACb,QAAQ,KAAK;AAAA,YACb,OAAO,KAAK;AAAA,YACZ,QAAQ,KAAK;AAAA,UACjB;AAAA,QACJ;AAEA,uBAAe,KAAK,GAAG,GAAG,SAAS;AACnC,uBAAe,MAAM,GAAG,GAAG,SAAS;AACpC,uBAAe,OAAO,GAAG,GAAG,SAAS;AACrC,uBAAe,QAAQ,GAAG,GAAG,SAAS;AACtC,uBAAe,SAAS,GAAG,GAAG,WAAW;AAEzC,uBAAe,KAAK,CAAC,KAAK,CAAC,GAAG,MAAM,SAAS;AAC7C,uBAAe,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,SAAS;AAC3C,uBAAe,KAAK,CAAC,OAAO,CAAC,GAAG,GAAG,SAAS;AAC5C,uBAAe,KAAK,CAAC,QAAQ,CAAC,GAAG,GAAG,SAAS;AAE7C,sBAAc,KAAK,YAAY;AAC/B,sBAAc,MAAM,YAAY;AAChC,sBAAc,OAAO,YAAY;AACjC,sBAAc,QAAQ,YAAY;AAClC,sBAAc,SAAS,cAAc;AAErC;AAAA,UACI,CAAC,KAAK,MAAM,OAAO,QAAQ,OAAO;AAAA,UAClC,SAAU,OAAO,OAAO,QAAQa,QAAO;AACnC,gBAAI,MAAM,OAAO,QAAQ,UAAU,OAAOA,QAAO,OAAO,OAAO;AAC/D,gBAAI,KAAK;AACL,8BAAgB,MAAM,EAAE,MAAM;AAAA,YAClC,OAAO;AACH,8BAAgB,MAAM,EAAE,aAAa;AAAA,YACzC;AAAA,UACJ;AAAA,QACJ;AAEA,sBAAc,KAAK,aAAa;AAChC,sBAAc,MAAM,aAAa;AACjC,sBAAc,OAAO,aAAa;AAClC,sBAAc,QAAQ,aAAa;AACnC,sBAAc,MAAM,mBAAmB;AAEvC,sBAAc,CAAC,KAAK,MAAM,OAAO,MAAM,GAAG,IAAI;AAC9C,sBAAc,CAAC,IAAI,GAAG,SAAU,OAAO,OAAO,QAAQA,QAAO;AACzD,cAAIoB;AACJ,cAAI,OAAO,QAAQ,sBAAsB;AACrC,YAAAA,SAAQ,MAAM,MAAM,OAAO,QAAQ,oBAAoB;AAAA,UAC3D;AAEA,cAAI,OAAO,QAAQ,qBAAqB;AACpC,kBAAM,IAAI,IAAI,OAAO,QAAQ,oBAAoB,OAAOA,MAAK;AAAA,UACjE,OAAO;AACH,kBAAM,IAAI,IAAI,SAAS,OAAO,EAAE;AAAA,UACpC;AAAA,QACJ,CAAC;AAED,iBAAS,WAAW,GAAGhC,SAAQ;AAC3B,cAAI,GACA,GACA0B,OACA,OAAO,KAAK,SAAS,UAAU,IAAI,EAAE;AACzC,eAAK,IAAI,GAAG,IAAI,KAAK,QAAQ,IAAI,GAAG,EAAE,GAAG;AACrC,oBAAQ,OAAO,KAAK,CAAC,EAAE,OAAO;AAAA,cAC1B,KAAK;AAED,gBAAAA,QAAOhC,OAAM,KAAK,CAAC,EAAE,KAAK,EAAE,QAAQ,KAAK;AACzC,qBAAK,CAAC,EAAE,QAAQgC,MAAK,QAAQ;AAC7B;AAAA,YACR;AAEA,oBAAQ,OAAO,KAAK,CAAC,EAAE,OAAO;AAAA,cAC1B,KAAK;AACD,qBAAK,CAAC,EAAE,QAAQ;AAChB;AAAA,cACJ,KAAK;AAED,gBAAAA,QAAOhC,OAAM,KAAK,CAAC,EAAE,KAAK,EAAE,QAAQ,KAAK,EAAE,QAAQ;AACnD,qBAAK,CAAC,EAAE,QAAQgC,MAAK,QAAQ;AAC7B;AAAA,YACR;AAAA,UACJ;AACA,iBAAO;AAAA,QACX;AAEA,iBAAS,gBAAgB,SAAS1B,SAAQ,QAAQ;AAC9C,cAAI,GACA,GACA,OAAO,KAAK,KAAK,GACjBM,OACA,MACA;AACJ,oBAAU,QAAQ,YAAY;AAE9B,eAAK,IAAI,GAAG,IAAI,KAAK,QAAQ,IAAI,GAAG,EAAE,GAAG;AACrC,YAAAA,QAAO,KAAK,CAAC,EAAE,KAAK,YAAY;AAChC,mBAAO,KAAK,CAAC,EAAE,KAAK,YAAY;AAChC,qBAAS,KAAK,CAAC,EAAE,OAAO,YAAY;AAEpC,gBAAI,QAAQ;AACR,sBAAQN,SAAQ;AAAA,gBACZ,KAAK;AAAA,gBACL,KAAK;AAAA,gBACL,KAAK;AACD,sBAAI,SAAS,SAAS;AAClB,2BAAO,KAAK,CAAC;AAAA,kBACjB;AACA;AAAA,gBAEJ,KAAK;AACD,sBAAIM,UAAS,SAAS;AAClB,2BAAO,KAAK,CAAC;AAAA,kBACjB;AACA;AAAA,gBAEJ,KAAK;AACD,sBAAI,WAAW,SAAS;AACpB,2BAAO,KAAK,CAAC;AAAA,kBACjB;AACA;AAAA,cACR;AAAA,YACJ,WAAW,CAACA,OAAM,MAAM,MAAM,EAAE,QAAQ,OAAO,KAAK,GAAG;AACnD,qBAAO,KAAK,CAAC;AAAA,YACjB;AAAA,UACJ;AAAA,QACJ;AAEA,iBAAS,sBAAsB,KAAK,MAAM;AACtC,cAAI,MAAM,IAAI,SAAS,IAAI,QAAQ,IAAK;AACxC,cAAI,SAAS,QAAW;AACpB,mBAAOZ,OAAM,IAAI,KAAK,EAAE,KAAK;AAAA,UACjC,OAAO;AACH,mBAAOA,OAAM,IAAI,KAAK,EAAE,KAAK,KAAK,OAAO,IAAI,UAAU;AAAA,UAC3D;AAAA,QACJ;AAEA,iBAAS,aAAa;AAClB,cAAI,GACA,GACA,KACA,OAAO,KAAK,WAAW,EAAE,KAAK;AAClC,eAAK,IAAI,GAAG,IAAI,KAAK,QAAQ,IAAI,GAAG,EAAE,GAAG;AAErC,kBAAM,KAAK,MAAM,EAAE,QAAQ,KAAK,EAAE,QAAQ;AAE1C,gBAAI,KAAK,CAAC,EAAE,SAAS,OAAO,OAAO,KAAK,CAAC,EAAE,OAAO;AAC9C,qBAAO,KAAK,CAAC,EAAE;AAAA,YACnB;AACA,gBAAI,KAAK,CAAC,EAAE,SAAS,OAAO,OAAO,KAAK,CAAC,EAAE,OAAO;AAC9C,qBAAO,KAAK,CAAC,EAAE;AAAA,YACnB;AAAA,UACJ;AAEA,iBAAO;AAAA,QACX;AAEA,iBAAS,eAAe;AACpB,cAAI,GACA,GACA,KACA,OAAO,KAAK,WAAW,EAAE,KAAK;AAClC,eAAK,IAAI,GAAG,IAAI,KAAK,QAAQ,IAAI,GAAG,EAAE,GAAG;AAErC,kBAAM,KAAK,MAAM,EAAE,QAAQ,KAAK,EAAE,QAAQ;AAE1C,gBAAI,KAAK,CAAC,EAAE,SAAS,OAAO,OAAO,KAAK,CAAC,EAAE,OAAO;AAC9C,qBAAO,KAAK,CAAC,EAAE;AAAA,YACnB;AACA,gBAAI,KAAK,CAAC,EAAE,SAAS,OAAO,OAAO,KAAK,CAAC,EAAE,OAAO;AAC9C,qBAAO,KAAK,CAAC,EAAE;AAAA,YACnB;AAAA,UACJ;AAEA,iBAAO;AAAA,QACX;AAEA,iBAAS,aAAa;AAClB,cAAI,GACA,GACA,KACA,OAAO,KAAK,WAAW,EAAE,KAAK;AAClC,eAAK,IAAI,GAAG,IAAI,KAAK,QAAQ,IAAI,GAAG,EAAE,GAAG;AAErC,kBAAM,KAAK,MAAM,EAAE,QAAQ,KAAK,EAAE,QAAQ;AAE1C,gBAAI,KAAK,CAAC,EAAE,SAAS,OAAO,OAAO,KAAK,CAAC,EAAE,OAAO;AAC9C,qBAAO,KAAK,CAAC,EAAE;AAAA,YACnB;AACA,gBAAI,KAAK,CAAC,EAAE,SAAS,OAAO,OAAO,KAAK,CAAC,EAAE,OAAO;AAC9C,qBAAO,KAAK,CAAC,EAAE;AAAA,YACnB;AAAA,UACJ;AAEA,iBAAO;AAAA,QACX;AAEA,iBAAS,aAAa;AAClB,cAAI,GACA,GACA,KACA,KACA,OAAO,KAAK,WAAW,EAAE,KAAK;AAClC,eAAK,IAAI,GAAG,IAAI,KAAK,QAAQ,IAAI,GAAG,EAAE,GAAG;AACrC,kBAAM,KAAK,CAAC,EAAE,SAAS,KAAK,CAAC,EAAE,QAAQ,IAAK;AAG5C,kBAAM,KAAK,MAAM,EAAE,QAAQ,KAAK,EAAE,QAAQ;AAE1C,gBACK,KAAK,CAAC,EAAE,SAAS,OAAO,OAAO,KAAK,CAAC,EAAE,SACvC,KAAK,CAAC,EAAE,SAAS,OAAO,OAAO,KAAK,CAAC,EAAE,OAC1C;AACE,sBACK,KAAK,KAAK,IAAIA,OAAM,KAAK,CAAC,EAAE,KAAK,EAAE,KAAK,KAAK,MAC9C,KAAK,CAAC,EAAE;AAAA,YAEhB;AAAA,UACJ;AAEA,iBAAO,KAAK,KAAK;AAAA,QACrB;AAEA,iBAAS,cAAc,UAAU;AAC7B,cAAI,CAAC,WAAW,MAAM,gBAAgB,GAAG;AACrC,6BAAiB,KAAK,IAAI;AAAA,UAC9B;AACA,iBAAO,WAAW,KAAK,iBAAiB,KAAK;AAAA,QACjD;AAEA,iBAAS,cAAc,UAAU;AAC7B,cAAI,CAAC,WAAW,MAAM,gBAAgB,GAAG;AACrC,6BAAiB,KAAK,IAAI;AAAA,UAC9B;AACA,iBAAO,WAAW,KAAK,iBAAiB,KAAK;AAAA,QACjD;AAEA,iBAAS,gBAAgB,UAAU;AAC/B,cAAI,CAAC,WAAW,MAAM,kBAAkB,GAAG;AACvC,6BAAiB,KAAK,IAAI;AAAA,UAC9B;AACA,iBAAO,WAAW,KAAK,mBAAmB,KAAK;AAAA,QACnD;AAEA,iBAAS,aAAa,UAAUO,SAAQ;AACpC,iBAAOA,QAAO,cAAc,QAAQ;AAAA,QACxC;AAEA,iBAAS,aAAa,UAAUA,SAAQ;AACpC,iBAAOA,QAAO,cAAc,QAAQ;AAAA,QACxC;AAEA,iBAAS,eAAe,UAAUA,SAAQ;AACtC,iBAAOA,QAAO,gBAAgB,QAAQ;AAAA,QAC1C;AAEA,iBAAS,oBAAoB,UAAUA,SAAQ;AAC3C,iBAAOA,QAAO,wBAAwB;AAAA,QAC1C;AAEA,iBAAS,mBAAmB;AACxB,cAAI,aAAa,CAAC,GACd,aAAa,CAAC,GACd,eAAe,CAAC,GAChB,cAAc,CAAC,GACf,GACA,GACA,OAAO,KAAK,KAAK;AAErB,eAAK,IAAI,GAAG,IAAI,KAAK,QAAQ,IAAI,GAAG,EAAE,GAAG;AACrC,uBAAW,KAAK,YAAY,KAAK,CAAC,EAAE,IAAI,CAAC;AACzC,uBAAW,KAAK,YAAY,KAAK,CAAC,EAAE,IAAI,CAAC;AACzC,yBAAa,KAAK,YAAY,KAAK,CAAC,EAAE,MAAM,CAAC;AAE7C,wBAAY,KAAK,YAAY,KAAK,CAAC,EAAE,IAAI,CAAC;AAC1C,wBAAY,KAAK,YAAY,KAAK,CAAC,EAAE,IAAI,CAAC;AAC1C,wBAAY,KAAK,YAAY,KAAK,CAAC,EAAE,MAAM,CAAC;AAAA,UAChD;AAEA,eAAK,aAAa,IAAI,OAAO,OAAO,YAAY,KAAK,GAAG,IAAI,KAAK,GAAG;AACpE,eAAK,iBAAiB,IAAI,OAAO,OAAO,WAAW,KAAK,GAAG,IAAI,KAAK,GAAG;AACvE,eAAK,iBAAiB,IAAI,OAAO,OAAO,WAAW,KAAK,GAAG,IAAI,KAAK,GAAG;AACvE,eAAK,mBAAmB,IAAI;AAAA,YACxB,OAAO,aAAa,KAAK,GAAG,IAAI;AAAA,YAChC;AAAA,UACJ;AAAA,QACJ;AAIA,uBAAe,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,WAAY;AACxC,iBAAO,KAAK,SAAS,IAAI;AAAA,QAC7B,CAAC;AAED,uBAAe,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,WAAY;AACxC,iBAAO,KAAK,YAAY,IAAI;AAAA,QAChC,CAAC;AAED,iBAAS,uBAAuBW,QAAO,QAAQ;AAC3C,yBAAe,GAAG,CAACA,QAAOA,OAAM,MAAM,GAAG,GAAG,MAAM;AAAA,QACtD;AAEA,+BAAuB,QAAQ,UAAU;AACzC,+BAAuB,SAAS,UAAU;AAC1C,+BAAuB,QAAQ,aAAa;AAC5C,+BAAuB,SAAS,aAAa;AAI7C,qBAAa,YAAY,IAAI;AAC7B,qBAAa,eAAe,IAAI;AAIhC,wBAAgB,YAAY,CAAC;AAC7B,wBAAgB,eAAe,CAAC;AAIhC,sBAAc,KAAK,WAAW;AAC9B,sBAAc,KAAK,WAAW;AAC9B,sBAAc,MAAM,WAAW,MAAM;AACrC,sBAAc,MAAM,WAAW,MAAM;AACrC,sBAAc,QAAQ,WAAW,MAAM;AACvC,sBAAc,QAAQ,WAAW,MAAM;AACvC,sBAAc,SAAS,WAAW,MAAM;AACxC,sBAAc,SAAS,WAAW,MAAM;AAExC;AAAA,UACI,CAAC,QAAQ,SAAS,QAAQ,OAAO;AAAA,UACjC,SAAU,OAAO,MAAM,QAAQA,QAAO;AAClC,iBAAKA,OAAM,OAAO,GAAG,CAAC,CAAC,IAAI,MAAM,KAAK;AAAA,UAC1C;AAAA,QACJ;AAEA,0BAAkB,CAAC,MAAM,IAAI,GAAG,SAAU,OAAO,MAAM,QAAQA,QAAO;AAClE,eAAKA,MAAK,IAAIlB,OAAM,kBAAkB,KAAK;AAAA,QAC/C,CAAC;AAID,iBAAS,eAAe,OAAO;AAC3B,iBAAO,qBAAqB;AAAA,YACxB;AAAA,YACA;AAAA,YACA,KAAK,KAAK;AAAA,YACV,KAAK,QAAQ;AAAA,YACb,KAAK,WAAW,EAAE,MAAM;AAAA,YACxB,KAAK,WAAW,EAAE,MAAM;AAAA,UAC5B;AAAA,QACJ;AAEA,iBAAS,kBAAkB,OAAO;AAC9B,iBAAO,qBAAqB;AAAA,YACxB;AAAA,YACA;AAAA,YACA,KAAK,QAAQ;AAAA,YACb,KAAK,WAAW;AAAA,YAChB;AAAA,YACA;AAAA,UACJ;AAAA,QACJ;AAEA,iBAAS,oBAAoB;AACzB,iBAAO,YAAY,KAAK,KAAK,GAAG,GAAG,CAAC;AAAA,QACxC;AAEA,iBAAS,2BAA2B;AAChC,iBAAO,YAAY,KAAK,YAAY,GAAG,GAAG,CAAC;AAAA,QAC/C;AAEA,iBAAS,iBAAiB;AACtB,cAAI,WAAW,KAAK,WAAW,EAAE;AACjC,iBAAO,YAAY,KAAK,KAAK,GAAG,SAAS,KAAK,SAAS,GAAG;AAAA,QAC9D;AAEA,iBAAS,qBAAqB;AAC1B,cAAI,WAAW,KAAK,WAAW,EAAE;AACjC,iBAAO,YAAY,KAAK,SAAS,GAAG,SAAS,KAAK,SAAS,GAAG;AAAA,QAClE;AAEA,iBAAS,qBAAqB,OAAO,MAAM,SAAS,KAAK,KAAK;AAC1D,cAAI;AACJ,cAAI,SAAS,MAAM;AACf,mBAAO,WAAW,MAAM,KAAK,GAAG,EAAE;AAAA,UACtC,OAAO;AACH,0BAAc,YAAY,OAAO,KAAK,GAAG;AACzC,gBAAI,OAAO,aAAa;AACpB,qBAAO;AAAA,YACX;AACA,mBAAO,WAAW,KAAK,MAAM,OAAO,MAAM,SAAS,KAAK,GAAG;AAAA,UAC/D;AAAA,QACJ;AAEA,iBAAS,WAAW,UAAU,MAAM,SAAS,KAAK,KAAK;AACnD,cAAI,gBAAgB,mBAAmB,UAAU,MAAM,SAAS,KAAK,GAAG,GACpEgC,QAAO,cAAc,cAAc,MAAM,GAAG,cAAc,SAAS;AAEvE,eAAK,KAAKA,MAAK,eAAe,CAAC;AAC/B,eAAK,MAAMA,MAAK,YAAY,CAAC;AAC7B,eAAK,KAAKA,MAAK,WAAW,CAAC;AAC3B,iBAAO;AAAA,QACX;AAIA,uBAAe,KAAK,GAAG,MAAM,SAAS;AAItC,qBAAa,WAAW,GAAG;AAI3B,wBAAgB,WAAW,CAAC;AAI5B,sBAAc,KAAK,MAAM;AACzB,sBAAc,KAAK,SAAU,OAAO,OAAO;AACvC,gBAAM,KAAK,KAAK,MAAM,KAAK,IAAI,KAAK;AAAA,QACxC,CAAC;AAID,iBAAS,cAAc,OAAO;AAC1B,iBAAO,SAAS,OACV,KAAK,MAAM,KAAK,MAAM,IAAI,KAAK,CAAC,IAChC,KAAK,OAAO,QAAQ,KAAK,IAAK,KAAK,MAAM,IAAI,CAAE;AAAA,QACzD;AAIA,uBAAe,KAAK,CAAC,MAAM,CAAC,GAAG,MAAM,MAAM;AAI3C,qBAAa,QAAQ,GAAG;AAGxB,wBAAgB,QAAQ,CAAC;AAIzB,sBAAc,KAAK,SAAS;AAC5B,sBAAc,MAAM,WAAW,MAAM;AACrC,sBAAc,MAAM,SAAU,UAAUzB,SAAQ;AAE5C,iBAAO,WACDA,QAAO,2BAA2BA,QAAO,gBACzCA,QAAO;AAAA,QACjB,CAAC;AAED,sBAAc,CAAC,KAAK,IAAI,GAAG,IAAI;AAC/B,sBAAc,MAAM,SAAU,OAAO,OAAO;AACxC,gBAAM,IAAI,IAAI,MAAM,MAAM,MAAM,SAAS,EAAE,CAAC,CAAC;AAAA,QACjD,CAAC;AAID,YAAI,mBAAmB,WAAW,QAAQ,IAAI;AAI9C,uBAAe,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,WAAW;AAItD,qBAAa,aAAa,KAAK;AAG/B,wBAAgB,aAAa,CAAC;AAI9B,sBAAc,OAAO,SAAS;AAC9B,sBAAc,QAAQ,MAAM;AAC5B,sBAAc,CAAC,OAAO,MAAM,GAAG,SAAU,OAAO,OAAO,QAAQ;AAC3D,iBAAO,aAAa,MAAM,KAAK;AAAA,QACnC,CAAC;AAMD,iBAAS,gBAAgB,OAAO;AAC5B,cAAI,YACA,KAAK;AAAA,aACA,KAAK,MAAM,EAAE,QAAQ,KAAK,IAAI,KAAK,MAAM,EAAE,QAAQ,MAAM,KAAK;AAAA,UACnE,IAAI;AACR,iBAAO,SAAS,OAAO,YAAY,KAAK,IAAI,QAAQ,WAAW,GAAG;AAAA,QACtE;AAIA,uBAAe,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,QAAQ;AAI1C,qBAAa,UAAU,GAAG;AAI1B,wBAAgB,UAAU,EAAE;AAI5B,sBAAc,KAAK,SAAS;AAC5B,sBAAc,MAAM,WAAW,MAAM;AACrC,sBAAc,CAAC,KAAK,IAAI,GAAG,MAAM;AAIjC,YAAI,eAAe,WAAW,WAAW,KAAK;AAI9C,uBAAe,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,QAAQ;AAI1C,qBAAa,UAAU,GAAG;AAI1B,wBAAgB,UAAU,EAAE;AAI5B,sBAAc,KAAK,SAAS;AAC5B,sBAAc,MAAM,WAAW,MAAM;AACrC,sBAAc,CAAC,KAAK,IAAI,GAAG,MAAM;AAIjC,YAAI,eAAe,WAAW,WAAW,KAAK;AAI9C,uBAAe,KAAK,GAAG,GAAG,WAAY;AAClC,iBAAO,CAAC,EAAE,KAAK,YAAY,IAAI;AAAA,QACnC,CAAC;AAED,uBAAe,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,WAAY;AACxC,iBAAO,CAAC,EAAE,KAAK,YAAY,IAAI;AAAA,QACnC,CAAC;AAED,uBAAe,GAAG,CAAC,OAAO,CAAC,GAAG,GAAG,aAAa;AAC9C,uBAAe,GAAG,CAAC,QAAQ,CAAC,GAAG,GAAG,WAAY;AAC1C,iBAAO,KAAK,YAAY,IAAI;AAAA,QAChC,CAAC;AACD,uBAAe,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,WAAY;AAC3C,iBAAO,KAAK,YAAY,IAAI;AAAA,QAChC,CAAC;AACD,uBAAe,GAAG,CAAC,UAAU,CAAC,GAAG,GAAG,WAAY;AAC5C,iBAAO,KAAK,YAAY,IAAI;AAAA,QAChC,CAAC;AACD,uBAAe,GAAG,CAAC,WAAW,CAAC,GAAG,GAAG,WAAY;AAC7C,iBAAO,KAAK,YAAY,IAAI;AAAA,QAChC,CAAC;AACD,uBAAe,GAAG,CAAC,YAAY,CAAC,GAAG,GAAG,WAAY;AAC9C,iBAAO,KAAK,YAAY,IAAI;AAAA,QAChC,CAAC;AACD,uBAAe,GAAG,CAAC,aAAa,CAAC,GAAG,GAAG,WAAY;AAC/C,iBAAO,KAAK,YAAY,IAAI;AAAA,QAChC,CAAC;AAID,qBAAa,eAAe,IAAI;AAIhC,wBAAgB,eAAe,EAAE;AAIjC,sBAAc,KAAK,WAAW,MAAM;AACpC,sBAAc,MAAM,WAAW,MAAM;AACrC,sBAAc,OAAO,WAAW,MAAM;AAEtC,YAAIW,QAAO;AACX,aAAKA,SAAQ,QAAQA,OAAM,UAAU,GAAGA,UAAS,KAAK;AAClD,wBAAcA,QAAO,aAAa;AAAA,QACtC;AAEA,iBAAS,QAAQ,OAAO,OAAO;AAC3B,gBAAM,WAAW,IAAI,OAAO,OAAO,SAAS,GAAI;AAAA,QACpD;AAEA,aAAKA,SAAQ,KAAKA,OAAM,UAAU,GAAGA,UAAS,KAAK;AAC/C,wBAAcA,QAAO,OAAO;AAAA,QAChC;AAEA,4BAAoB,WAAW,gBAAgB,KAAK;AAIpD,uBAAe,KAAK,GAAG,GAAG,UAAU;AACpC,uBAAe,MAAM,GAAG,GAAG,UAAU;AAIrC,iBAAS,cAAc;AACnB,iBAAO,KAAK,SAAS,QAAQ;AAAA,QACjC;AAEA,iBAAS,cAAc;AACnB,iBAAO,KAAK,SAAS,+BAA+B;AAAA,QACxD;AAEA,YAAI,QAAQ,OAAO;AAEnB,cAAM,MAAM;AACZ,cAAM,WAAW;AACjB,cAAM,QAAQ;AACd,cAAM,OAAO;AACb,cAAM,QAAQ;AACd,cAAM,SAASZ;AACf,cAAM,OAAOI;AACb,cAAM,UAAU;AAChB,cAAM,KAAK;AACX,cAAM,QAAQ;AACd,cAAM,MAAM;AACZ,cAAM,YAAY;AAClB,cAAM,UAAU;AAChB,cAAM,WAAW;AACjB,cAAM,YAAY;AAClB,cAAM,SAAS;AACf,cAAM,gBAAgB;AACtB,cAAM,iBAAiB;AACvB,cAAM,UAAU;AAChB,cAAM,OAAO;AACb,cAAM,SAASH;AACf,cAAM,aAAa;AACnB,cAAM,MAAM;AACZ,cAAM,MAAM;AACZ,cAAM,eAAe;AACrB,cAAM,MAAM;AACZ,cAAM,UAAU;AAChB,cAAM,WAAW;AACjB,cAAM,UAAUiD;AAChB,cAAM,WAAW;AACjB,cAAM,SAAS;AACf,cAAM,cAAc;AACpB,cAAM,UAAU;AAChB,YAAI,OAAO,WAAW,eAAe,OAAO,OAAO,MAAM;AACrD,gBAAM,OAAO,IAAI,4BAA4B,CAAC,IAAI,WAAY;AAC1D,mBAAO,YAAY,KAAK,OAAO,IAAI;AAAA,UACvC;AAAA,QACJ;AACA,cAAM,SAAS;AACf,cAAM,WAAW;AACjB,cAAM,OAAO;AACb,cAAM,UAAU;AAChB,cAAM,eAAe;AACrB,cAAM,UAAU;AAChB,cAAM,YAAY;AAClB,cAAM,UAAU;AAChB,cAAM,UAAU;AAChB,cAAM,OAAO;AACb,cAAM,aAAa;AACnB,cAAM,WAAW;AACjB,cAAM,cAAc;AACpB,cAAM,UAAU,MAAM,WAAW;AACjC,cAAM,QAAQ;AACd,cAAM,cAAc;AACpB,cAAM,OAAO,MAAM,QAAQ;AAC3B,cAAM,UAAU,MAAM,WAAW;AACjC,cAAM,cAAc;AACpB,cAAM,kBAAkB;AACxB,cAAM,iBAAiB;AACvB,cAAM,wBAAwB;AAC9B,cAAM,OAAO;AACb,cAAM,MAAM,MAAM,OAAO;AACzB,cAAM,UAAU;AAChB,cAAM,aAAa;AACnB,cAAM,YAAY;AAClB,cAAM,OAAO,MAAM,QAAQ;AAC3B,cAAM,SAAS,MAAM,UAAU;AAC/B,cAAM,SAAS,MAAM,UAAU;AAC/B,cAAM,cAAc,MAAM,eAAe;AACzC,cAAM,YAAY;AAClB,cAAM,MAAM;AACZ,cAAM,QAAQ;AACd,cAAM,YAAY;AAClB,cAAM,uBAAuB;AAC7B,cAAM,QAAQ;AACd,cAAM,UAAU;AAChB,cAAM,cAAc;AACpB,cAAM,QAAQ;AACd,cAAM,QAAQ;AACd,cAAM,WAAW;AACjB,cAAM,WAAW;AACjB,cAAM,QAAQ;AAAA,UACV;AAAA,UACA;AAAA,QACJ;AACA,cAAM,SAAS;AAAA,UACX;AAAA,UACA;AAAA,QACJ;AACA,cAAM,QAAQ;AAAA,UACV;AAAA,UACA;AAAA,QACJ;AACA,cAAM,OAAO;AAAA,UACT;AAAA,UACA;AAAA,QACJ;AACA,cAAM,eAAe;AAAA,UACjB;AAAA,UACA;AAAA,QACJ;AAEA,iBAAS,WAAW,OAAO;AACvB,iBAAO,YAAY,QAAQ,GAAI;AAAA,QACnC;AAEA,iBAAS,eAAe;AACpB,iBAAO,YAAY,MAAM,MAAM,SAAS,EAAE,UAAU;AAAA,QACxD;AAEA,iBAAS,mBAAmB,QAAQ;AAChC,iBAAO;AAAA,QACX;AAEA,YAAI,UAAU,OAAO;AAErB,gBAAQ,WAAW1C;AACnB,gBAAQ,iBAAiB;AACzB,gBAAQ,cAAc;AACtB,gBAAQ,UAAUK;AAClB,gBAAQ,WAAW;AACnB,gBAAQ,aAAa;AACrB,gBAAQ,eAAe;AACvB,gBAAQ,aAAa;AACrB,gBAAQ,MAAM;AACd,gBAAQ,OAAO;AACf,gBAAQ,YAAY;AACpB,gBAAQ,kBAAkB;AAC1B,gBAAQ,gBAAgB;AACxB,gBAAQ,gBAAgB;AACxB,gBAAQ,kBAAkB;AAE1B,gBAAQ,SAAS;AACjB,gBAAQ,cAAc;AACtB,gBAAQ,cAAc;AACtB,gBAAQ,cAAc;AACtB,gBAAQ,mBAAmB;AAC3B,gBAAQ,OAAO;AACf,gBAAQ,iBAAiB;AACzB,gBAAQ,iBAAiB;AAEzB,gBAAQ,WAAW;AACnB,gBAAQ,cAAc;AACtB,gBAAQ,gBAAgB;AACxB,gBAAQ,gBAAgB;AAExB,gBAAQ,gBAAgB;AACxB,gBAAQ,qBAAqB;AAC7B,gBAAQ,mBAAmB;AAE3B,gBAAQ,OAAO;AACf,gBAAQ,WAAW;AAEnB,iBAAS,MAAMb,SAAQmD,QAAO,OAAO,QAAQ;AACzC,cAAIlD,UAAS,UAAU,GACnB,MAAM,UAAU,EAAE,IAAI,QAAQkD,MAAK;AACvC,iBAAOlD,QAAO,KAAK,EAAE,KAAKD,OAAM;AAAA,QACpC;AAEA,iBAAS,eAAeA,SAAQmD,QAAO,OAAO;AAC1C,cAAI,SAASnD,OAAM,GAAG;AAClB,YAAAmD,SAAQnD;AACR,YAAAA,UAAS;AAAA,UACb;AAEA,UAAAA,UAASA,WAAU;AAEnB,cAAImD,UAAS,MAAM;AACf,mBAAO,MAAMnD,SAAQmD,QAAO,OAAO,OAAO;AAAA,UAC9C;AAEA,cAAI,GACA,MAAM,CAAC;AACX,eAAK,IAAI,GAAG,IAAI,IAAI,KAAK;AACrB,gBAAI,CAAC,IAAI,MAAMnD,SAAQ,GAAG,OAAO,OAAO;AAAA,UAC5C;AACA,iBAAO;AAAA,QACX;AAUA,iBAAS,iBAAiB,cAAcA,SAAQmD,QAAO,OAAO;AAC1D,cAAI,OAAO,iBAAiB,WAAW;AACnC,gBAAI,SAASnD,OAAM,GAAG;AAClB,cAAAmD,SAAQnD;AACR,cAAAA,UAAS;AAAA,YACb;AAEA,YAAAA,UAASA,WAAU;AAAA,UACvB,OAAO;AACH,YAAAA,UAAS;AACT,YAAAmD,SAAQnD;AACR,2BAAe;AAEf,gBAAI,SAASA,OAAM,GAAG;AAClB,cAAAmD,SAAQnD;AACR,cAAAA,UAAS;AAAA,YACb;AAEA,YAAAA,UAASA,WAAU;AAAA,UACvB;AAEA,cAAIC,UAAS,UAAU,GACnB,QAAQ,eAAeA,QAAO,MAAM,MAAM,GAC1C,GACA,MAAM,CAAC;AAEX,cAAIkD,UAAS,MAAM;AACf,mBAAO,MAAMnD,UAASmD,SAAQ,SAAS,GAAG,OAAO,KAAK;AAAA,UAC1D;AAEA,eAAK,IAAI,GAAG,IAAI,GAAG,KAAK;AACpB,gBAAI,CAAC,IAAI,MAAMnD,UAAS,IAAI,SAAS,GAAG,OAAO,KAAK;AAAA,UACxD;AACA,iBAAO;AAAA,QACX;AAEA,iBAAS,WAAWA,SAAQmD,QAAO;AAC/B,iBAAO,eAAenD,SAAQmD,QAAO,QAAQ;AAAA,QACjD;AAEA,iBAAS,gBAAgBnD,SAAQmD,QAAO;AACpC,iBAAO,eAAenD,SAAQmD,QAAO,aAAa;AAAA,QACtD;AAEA,iBAAS,aAAa,cAAcnD,SAAQmD,QAAO;AAC/C,iBAAO,iBAAiB,cAAcnD,SAAQmD,QAAO,UAAU;AAAA,QACnE;AAEA,iBAAS,kBAAkB,cAAcnD,SAAQmD,QAAO;AACpD,iBAAO,iBAAiB,cAAcnD,SAAQmD,QAAO,eAAe;AAAA,QACxE;AAEA,iBAAS,gBAAgB,cAAcnD,SAAQmD,QAAO;AAClD,iBAAO,iBAAiB,cAAcnD,SAAQmD,QAAO,aAAa;AAAA,QACtE;AAEA,2BAAmB,MAAM;AAAA,UACrB,MAAM;AAAA,YACF;AAAA,cACI,OAAO;AAAA,cACP,OAAO;AAAA,cACP,QAAQ;AAAA,cACR,MAAM;AAAA,cACN,QAAQ;AAAA,cACR,MAAM;AAAA,YACV;AAAA,YACA;AAAA,cACI,OAAO;AAAA,cACP,OAAO;AAAA,cACP,QAAQ;AAAA,cACR,MAAM;AAAA,cACN,QAAQ;AAAA,cACR,MAAM;AAAA,YACV;AAAA,UACJ;AAAA,UACA,wBAAwB;AAAA,UACxB,SAAS,SAAUzC,SAAQ;AACvB,gBAAI,IAAIA,UAAS,IACb,SACI,MAAOA,UAAS,MAAO,EAAE,MAAM,IACzB,OACA,MAAM,IACN,OACA,MAAM,IACN,OACA,MAAM,IACN,OACA;AACd,mBAAOA,UAAS;AAAA,UACpB;AAAA,QACJ,CAAC;AAID,QAAAhB,OAAM,OAAO;AAAA,UACT;AAAA,UACA;AAAA,QACJ;AACA,QAAAA,OAAM,WAAW;AAAA,UACb;AAAA,UACA;AAAA,QACJ;AAEA,YAAI,UAAU,KAAK;AAEnB,iBAAS0D,OAAM;AACX,cAAIrB,QAAO,KAAK;AAEhB,eAAK,gBAAgB,QAAQ,KAAK,aAAa;AAC/C,eAAK,QAAQ,QAAQ,KAAK,KAAK;AAC/B,eAAK,UAAU,QAAQ,KAAK,OAAO;AAEnC,UAAAA,MAAK,eAAe,QAAQA,MAAK,YAAY;AAC7C,UAAAA,MAAK,UAAU,QAAQA,MAAK,OAAO;AACnC,UAAAA,MAAK,UAAU,QAAQA,MAAK,OAAO;AACnC,UAAAA,MAAK,QAAQ,QAAQA,MAAK,KAAK;AAC/B,UAAAA,MAAK,SAAS,QAAQA,MAAK,MAAM;AACjC,UAAAA,MAAK,QAAQ,QAAQA,MAAK,KAAK;AAE/B,iBAAO;AAAA,QACX;AAEA,iBAAS,cAAc,UAAU,OAAO,OAAO,WAAW;AACtD,cAAI,QAAQ,eAAe,OAAO,KAAK;AAEvC,mBAAS,iBAAiB,YAAY,MAAM;AAC5C,mBAAS,SAAS,YAAY,MAAM;AACpC,mBAAS,WAAW,YAAY,MAAM;AAEtC,iBAAO,SAAS,QAAQ;AAAA,QAC5B;AAGA,iBAAS,MAAM,OAAO,OAAO;AACzB,iBAAO,cAAc,MAAM,OAAO,OAAO,CAAC;AAAA,QAC9C;AAGA,iBAAS,WAAW,OAAO,OAAO;AAC9B,iBAAO,cAAc,MAAM,OAAO,OAAO,EAAE;AAAA,QAC/C;AAEA,iBAAS,QAAQrB,SAAQ;AACrB,cAAIA,UAAS,GAAG;AACZ,mBAAO,KAAK,MAAMA,OAAM;AAAA,UAC5B,OAAO;AACH,mBAAO,KAAK,KAAKA,OAAM;AAAA,UAC3B;AAAA,QACJ;AAEA,iBAAS,SAAS;AACd,cAAImC,gBAAe,KAAK,eACpBF,QAAO,KAAK,OACZF,UAAS,KAAK,SACdV,QAAO,KAAK,OACZa,UACAhB,UACAD,QACAa,QACA;AAIJ,cACI,EACKK,iBAAgB,KAAKF,SAAQ,KAAKF,WAAU,KAC5CI,iBAAgB,KAAKF,SAAQ,KAAKF,WAAU,IAEnD;AACE,YAAAI,iBAAgB,QAAQ,aAAaJ,OAAM,IAAIE,KAAI,IAAI;AACvD,YAAAA,QAAO;AACP,YAAAF,UAAS;AAAA,UACb;AAIA,UAAAV,MAAK,eAAec,gBAAe;AAEnC,UAAAD,WAAU,SAASC,gBAAe,GAAI;AACtC,UAAAd,MAAK,UAAUa,WAAU;AAEzB,UAAAhB,WAAU,SAASgB,WAAU,EAAE;AAC/B,UAAAb,MAAK,UAAUH,WAAU;AAEzB,UAAAD,SAAQ,SAASC,WAAU,EAAE;AAC7B,UAAAG,MAAK,QAAQJ,SAAQ;AAErB,UAAAgB,SAAQ,SAAShB,SAAQ,EAAE;AAG3B,2BAAiB,SAAS,aAAagB,KAAI,CAAC;AAC5C,UAAAF,WAAU;AACV,UAAAE,SAAQ,QAAQ,aAAa,cAAc,CAAC;AAG5C,UAAAH,SAAQ,SAASC,UAAS,EAAE;AAC5B,UAAAA,WAAU;AAEV,UAAAV,MAAK,OAAOY;AACZ,UAAAZ,MAAK,SAASU;AACd,UAAAV,MAAK,QAAQS;AAEb,iBAAO;AAAA,QACX;AAEA,iBAAS,aAAaG,OAAM;AAGxB,iBAAQA,QAAO,OAAQ;AAAA,QAC3B;AAEA,iBAAS,aAAaF,SAAQ;AAE1B,iBAAQA,UAAS,SAAU;AAAA,QAC/B;AAEA,iBAAS,GAAG,OAAO;AACf,cAAI,CAAC,KAAK,QAAQ,GAAG;AACjB,mBAAO;AAAA,UACX;AACA,cAAIE,OACAF,SACAI,gBAAe,KAAK;AAExB,kBAAQ,eAAe,KAAK;AAE5B,cAAI,UAAU,WAAW,UAAU,aAAa,UAAU,QAAQ;AAC9D,YAAAF,QAAO,KAAK,QAAQE,gBAAe;AACnC,YAAAJ,UAAS,KAAK,UAAU,aAAaE,KAAI;AACzC,oBAAQ,OAAO;AAAA,cACX,KAAK;AACD,uBAAOF;AAAA,cACX,KAAK;AACD,uBAAOA,UAAS;AAAA,cACpB,KAAK;AACD,uBAAOA,UAAS;AAAA,YACxB;AAAA,UACJ,OAAO;AAEH,YAAAE,QAAO,KAAK,QAAQ,KAAK,MAAM,aAAa,KAAK,OAAO,CAAC;AACzD,oBAAQ,OAAO;AAAA,cACX,KAAK;AACD,uBAAOA,QAAO,IAAIE,gBAAe;AAAA,cACrC,KAAK;AACD,uBAAOF,QAAOE,gBAAe;AAAA,cACjC,KAAK;AACD,uBAAOF,QAAO,KAAKE,gBAAe;AAAA,cACtC,KAAK;AACD,uBAAOF,QAAO,OAAOE,gBAAe;AAAA,cACxC,KAAK;AACD,uBAAOF,QAAO,QAAQE,gBAAe;AAAA,cAEzC,KAAK;AACD,uBAAO,KAAK,MAAMF,QAAO,KAAK,IAAIE;AAAA,cACtC;AACI,sBAAM,IAAI,MAAM,kBAAkB,KAAK;AAAA,YAC/C;AAAA,UACJ;AAAA,QACJ;AAGA,iBAAS,YAAY;AACjB,cAAI,CAAC,KAAK,QAAQ,GAAG;AACjB,mBAAO;AAAA,UACX;AACA,iBACI,KAAK,gBACL,KAAK,QAAQ,QACZ,KAAK,UAAU,KAAM,SACtB,MAAM,KAAK,UAAU,EAAE,IAAI;AAAA,QAEnC;AAEA,iBAAS,OAAO,OAAO;AACnB,iBAAO,WAAY;AACf,mBAAO,KAAK,GAAG,KAAK;AAAA,UACxB;AAAA,QACJ;AAEA,YAAI,iBAAiB,OAAO,IAAI,GAC5B,YAAY,OAAO,GAAG,GACtB,YAAY,OAAO,GAAG,GACtB,UAAU,OAAO,GAAG,GACpB,SAAS,OAAO,GAAG,GACnB,UAAU,OAAO,GAAG,GACpB,WAAW,OAAO,GAAG,GACrB,aAAa,OAAO,GAAG,GACvB,UAAU,OAAO,GAAG;AAExB,iBAAS,UAAU;AACf,iBAAO,eAAe,IAAI;AAAA,QAC9B;AAEA,iBAAS,MAAM,OAAO;AAClB,kBAAQ,eAAe,KAAK;AAC5B,iBAAO,KAAK,QAAQ,IAAI,KAAK,QAAQ,GAAG,EAAE,IAAI;AAAA,QAClD;AAEA,iBAAS,WAAWvC,OAAM;AACtB,iBAAO,WAAY;AACf,mBAAO,KAAK,QAAQ,IAAI,KAAK,MAAMA,KAAI,IAAI;AAAA,UAC/C;AAAA,QACJ;AAEA,YAAIuC,gBAAe,WAAW,cAAc,GACxCD,WAAU,WAAW,SAAS,GAC9B,UAAU,WAAW,SAAS,GAC9B,QAAQ,WAAW,OAAO,GAC1B,OAAO,WAAW,MAAM,GACxBH,UAAS,WAAW,QAAQ,GAC5B,QAAQ,WAAW,OAAO;AAE9B,iBAAS,QAAQ;AACb,iBAAO,SAAS,KAAK,KAAK,IAAI,CAAC;AAAA,QACnC;AAEA,YAAIY,SAAQ,KAAK,OACb,aAAa;AAAA,UACT,IAAI;AAAA;AAAA,UACJ,GAAG;AAAA;AAAA,UACH,GAAG;AAAA;AAAA,UACH,GAAG;AAAA;AAAA,UACH,GAAG;AAAA;AAAA,UACH,GAAG;AAAA;AAAA,UACH,GAAG;AAAA;AAAA,QACP;AAGJ,iBAAS,kBAAkB,QAAQ3C,SAAQ,eAAe,UAAUT,SAAQ;AACxE,iBAAOA,QAAO,aAAaS,WAAU,GAAG,CAAC,CAAC,eAAe,QAAQ,QAAQ;AAAA,QAC7E;AAEA,iBAAS,eAAe,gBAAgB,eAAe4C,aAAYrD,SAAQ;AACvE,cAAI,WAAW,eAAe,cAAc,EAAE,IAAI,GAC9C2C,WAAUS,OAAM,SAAS,GAAG,GAAG,CAAC,GAChCzB,WAAUyB,OAAM,SAAS,GAAG,GAAG,CAAC,GAChC1B,SAAQ0B,OAAM,SAAS,GAAG,GAAG,CAAC,GAC9BV,QAAOU,OAAM,SAAS,GAAG,GAAG,CAAC,GAC7BZ,UAASY,OAAM,SAAS,GAAG,GAAG,CAAC,GAC/BX,SAAQW,OAAM,SAAS,GAAG,GAAG,CAAC,GAC9Bb,SAAQa,OAAM,SAAS,GAAG,GAAG,CAAC,GAC9BzD,KACKgD,YAAWU,YAAW,MAAM,CAAC,KAAKV,QAAO,KACzCA,WAAUU,YAAW,KAAK,CAAC,MAAMV,QAAO,KACxChB,YAAW,KAAK,CAAC,GAAG,KACpBA,WAAU0B,YAAW,KAAK,CAAC,MAAM1B,QAAO,KACxCD,UAAS,KAAK,CAAC,GAAG,KAClBA,SAAQ2B,YAAW,KAAK,CAAC,MAAM3B,MAAK,KACpCgB,SAAQ,KAAK,CAAC,GAAG,KACjBA,QAAOW,YAAW,KAAK,CAAC,MAAMX,KAAI;AAE3C,cAAIW,YAAW,KAAK,MAAM;AACtB,YAAA1D,KACIA,MACC8C,UAAS,KAAK,CAAC,GAAG,KAClBA,SAAQY,YAAW,KAAK,CAAC,MAAMZ,MAAK;AAAA,UAC7C;AACA,UAAA9C,KAAIA,MACC6C,WAAU,KAAK,CAAC,GAAG,KACnBA,UAASa,YAAW,KAAK,CAAC,MAAMb,OAAM,KACtCD,UAAS,KAAK,CAAC,GAAG,KAAM,CAAC,MAAMA,MAAK;AAEzC,UAAA5C,GAAE,CAAC,IAAI;AACP,UAAAA,GAAE,CAAC,IAAI,CAAC,iBAAiB;AACzB,UAAAA,GAAE,CAAC,IAAIK;AACP,iBAAO,kBAAkB,MAAM,MAAML,EAAC;AAAA,QAC1C;AAGA,iBAAS,2BAA2B,kBAAkB;AAClD,cAAI,qBAAqB,QAAW;AAChC,mBAAOyD;AAAA,UACX;AACA,cAAI,OAAO,qBAAqB,YAAY;AACxC,YAAAA,SAAQ;AACR,mBAAO;AAAA,UACX;AACA,iBAAO;AAAA,QACX;AAGA,iBAAS,4BAA4BE,YAAW,OAAO;AACnD,cAAI,WAAWA,UAAS,MAAM,QAAW;AACrC,mBAAO;AAAA,UACX;AACA,cAAI,UAAU,QAAW;AACrB,mBAAO,WAAWA,UAAS;AAAA,UAC/B;AACA,qBAAWA,UAAS,IAAI;AACxB,cAAIA,eAAc,KAAK;AACnB,uBAAW,KAAK,QAAQ;AAAA,UAC5B;AACA,iBAAO;AAAA,QACX;AAEA,iBAAS,SAAS,eAAe,eAAe;AAC5C,cAAI,CAAC,KAAK,QAAQ,GAAG;AACjB,mBAAO,KAAK,WAAW,EAAE,YAAY;AAAA,UACzC;AAEA,cAAI,aAAa,OACb,KAAK,YACLtD,SACA;AAEJ,cAAI,OAAO,kBAAkB,UAAU;AACnC,4BAAgB;AAChB,4BAAgB;AAAA,UACpB;AACA,cAAI,OAAO,kBAAkB,WAAW;AACpC,yBAAa;AAAA,UACjB;AACA,cAAI,OAAO,kBAAkB,UAAU;AACnC,iBAAK,OAAO,OAAO,CAAC,GAAG,YAAY,aAAa;AAChD,gBAAI,cAAc,KAAK,QAAQ,cAAc,MAAM,MAAM;AACrD,iBAAG,KAAK,cAAc,IAAI;AAAA,YAC9B;AAAA,UACJ;AAEA,UAAAA,UAAS,KAAK,WAAW;AACzB,mBAAS,eAAe,MAAM,CAAC,YAAY,IAAIA,OAAM;AAErD,cAAI,YAAY;AACZ,qBAASA,QAAO,WAAW,CAAC,MAAM,MAAM;AAAA,UAC5C;AAEA,iBAAOA,QAAO,WAAW,MAAM;AAAA,QACnC;AAEA,YAAI,QAAQ,KAAK;AAEjB,iBAASU,MAAKU,IAAG;AACb,kBAAQA,KAAI,MAAMA,KAAI,MAAM,CAACA;AAAA,QACjC;AAEA,iBAAS,gBAAgB;AAQrB,cAAI,CAAC,KAAK,QAAQ,GAAG;AACjB,mBAAO,KAAK,WAAW,EAAE,YAAY;AAAA,UACzC;AAEA,cAAIuB,WAAU,MAAM,KAAK,aAAa,IAAI,KACtCD,QAAO,MAAM,KAAK,KAAK,GACvBF,UAAS,MAAM,KAAK,OAAO,GAC3Bb,UACAD,QACAa,QACArB,IACA,QAAQ,KAAK,UAAU,GACvB,WACA,QACA,UACA;AAEJ,cAAI,CAAC,OAAO;AAGR,mBAAO;AAAA,UACX;AAGA,UAAAS,WAAU,SAASgB,WAAU,EAAE;AAC/B,UAAAjB,SAAQ,SAASC,WAAU,EAAE;AAC7B,UAAAgB,YAAW;AACX,UAAAhB,YAAW;AAGX,UAAAY,SAAQ,SAASC,UAAS,EAAE;AAC5B,UAAAA,WAAU;AAGV,UAAAtB,KAAIyB,WAAUA,SAAQ,QAAQ,CAAC,EAAE,QAAQ,UAAU,EAAE,IAAI;AAEzD,sBAAY,QAAQ,IAAI,MAAM;AAC9B,mBAASjC,MAAK,KAAK,OAAO,MAAMA,MAAK,KAAK,IAAI,MAAM;AACpD,qBAAWA,MAAK,KAAK,KAAK,MAAMA,MAAK,KAAK,IAAI,MAAM;AACpD,oBAAUA,MAAK,KAAK,aAAa,MAAMA,MAAK,KAAK,IAAI,MAAM;AAE3D,iBACI,YACA,OACC6B,SAAQ,SAASA,SAAQ,MAAM,OAC/BC,UAAS,SAASA,UAAS,MAAM,OACjCE,QAAO,WAAWA,QAAO,MAAM,OAC/BhB,UAASC,YAAWgB,WAAU,MAAM,OACpCjB,SAAQ,UAAUA,SAAQ,MAAM,OAChCC,WAAU,UAAUA,WAAU,MAAM,OACpCgB,WAAU,UAAUzB,KAAI,MAAM;AAAA,QAEvC;AAEA,YAAI,UAAU,SAAS;AAEvB,gBAAQ,UAAU;AAClB,gBAAQ,MAAMiC;AACd,gBAAQ,MAAM;AACd,gBAAQ,WAAW;AACnB,gBAAQ,KAAK;AACb,gBAAQ,iBAAiB;AACzB,gBAAQ,YAAY;AACpB,gBAAQ,YAAY;AACpB,gBAAQ,UAAU;AAClB,gBAAQ,SAAS;AACjB,gBAAQ,UAAU;AAClB,gBAAQ,WAAW;AACnB,gBAAQ,aAAa;AACrB,gBAAQ,UAAU;AAClB,gBAAQ,UAAU;AAClB,gBAAQ,UAAU;AAClB,gBAAQ,QAAQ;AAChB,gBAAQ,MAAM;AACd,gBAAQ,eAAeP;AACvB,gBAAQ,UAAUD;AAClB,gBAAQ,UAAU;AAClB,gBAAQ,QAAQ;AAChB,gBAAQ,OAAO;AACf,gBAAQ,QAAQ;AAChB,gBAAQ,SAASH;AACjB,gBAAQ,QAAQ;AAChB,gBAAQ,WAAW;AACnB,gBAAQ,cAAc;AACtB,gBAAQ,WAAW;AACnB,gBAAQ,SAAS;AACjB,gBAAQ,SAASxC;AACjB,gBAAQ,aAAa;AAErB,gBAAQ,cAAc;AAAA,UAClB;AAAA,UACA;AAAA,QACJ;AACA,gBAAQ,OAAO;AAIf,uBAAe,KAAK,GAAG,GAAG,MAAM;AAChC,uBAAe,KAAK,GAAG,GAAG,SAAS;AAInC,sBAAc,KAAK,WAAW;AAC9B,sBAAc,KAAK,cAAc;AACjC,sBAAc,KAAK,SAAU,OAAO,OAAO,QAAQ;AAC/C,iBAAO,KAAK,IAAI,KAAK,WAAW,KAAK,IAAI,GAAI;AAAA,QACjD,CAAC;AACD,sBAAc,KAAK,SAAU,OAAO,OAAO,QAAQ;AAC/C,iBAAO,KAAK,IAAI,KAAK,MAAM,KAAK,CAAC;AAAA,QACrC,CAAC;AAID,QAAAP,OAAM,UAAU;AAEhB,wBAAgB,WAAW;AAE3B,QAAAA,OAAM,KAAK;AACX,QAAAA,OAAM,MAAM4C;AACZ,QAAA5C,OAAM,MAAM6C;AACZ,QAAA7C,OAAM,MAAMe;AACZ,QAAAf,OAAM,MAAM;AACZ,QAAAA,OAAM,OAAO;AACb,QAAAA,OAAM,SAAS;AACf,QAAAA,OAAM,SAAS;AACf,QAAAA,OAAM,SAAS;AACf,QAAAA,OAAM,UAAU;AAChB,QAAAA,OAAM,WAAW;AACjB,QAAAA,OAAM,WAAW;AACjB,QAAAA,OAAM,WAAW;AACjB,QAAAA,OAAM,YAAY;AAClB,QAAAA,OAAM,aAAa;AACnB,QAAAA,OAAM,aAAa;AACnB,QAAAA,OAAM,cAAc;AACpB,QAAAA,OAAM,cAAc;AACpB,QAAAA,OAAM,eAAe;AACrB,QAAAA,OAAM,eAAe;AACrB,QAAAA,OAAM,UAAU;AAChB,QAAAA,OAAM,gBAAgB;AACtB,QAAAA,OAAM,iBAAiB;AACvB,QAAAA,OAAM,uBAAuB;AAC7B,QAAAA,OAAM,wBAAwB;AAC9B,QAAAA,OAAM,iBAAiB;AACvB,QAAAA,OAAM,YAAY;AAGlB,QAAAA,OAAM,YAAY;AAAA,UACd,gBAAgB;AAAA;AAAA,UAChB,wBAAwB;AAAA;AAAA,UACxB,mBAAmB;AAAA;AAAA,UACnB,MAAM;AAAA;AAAA,UACN,MAAM;AAAA;AAAA,UACN,cAAc;AAAA;AAAA,UACd,SAAS;AAAA;AAAA,UACT,MAAM;AAAA;AAAA,UACN,OAAO;AAAA;AAAA,QACX;AAEA,eAAOA;AAAA,MAEX,CAAE;AAAA;AAAA;;;ACpjLF;AAAA;AAAA,OAAC,MAAI;AAAC;AAAa,YAAI8D,KAAE,EAAC,GAAE,CAACC,IAAEC,OAAI;AAAC,mBAAQC,MAAKD;AAAE,YAAAF,GAAE,EAAEE,IAAEC,EAAC,KAAG,CAACH,GAAE,EAAEC,IAAEE,EAAC,KAAG,OAAO,eAAeF,IAAEE,IAAE,EAAC,YAAW,MAAG,KAAID,GAAEC,EAAC,EAAC,CAAC;AAAA,QAAC,GAAE,GAAE,CAACH,IAAEC,OAAI,OAAO,UAAU,eAAe,KAAKD,IAAEC,EAAC,GAAE,GAAE,CAAAD,OAAG;AAAC,yBAAa,OAAO,UAAQ,OAAO,eAAa,OAAO,eAAeA,IAAE,OAAO,aAAY,EAAC,OAAM,SAAQ,CAAC,GAAE,OAAO,eAAeA,IAAE,cAAa,EAAC,OAAM,KAAE,CAAC;AAAA,QAAC,EAAC,GAAEC,KAAE,CAAC;AAAE,iBAASC,GAAEF,IAAEC,IAAE;AAAC,mBAAQC,KAAE,GAAEA,KAAED,GAAE,QAAOC,MAAI;AAAC,gBAAIC,KAAEF,GAAEC,EAAC;AAAE,YAAAC,GAAE,aAAWA,GAAE,cAAY,OAAGA,GAAE,eAAa,MAAG,WAAUA,OAAIA,GAAE,WAAS,OAAI,OAAO,eAAeH,IAAEG,GAAE,KAAIA,EAAC;AAAA,UAAC;AAAA,QAAC;AAAC,QAAAH,GAAE,EAAEC,EAAC,GAAED,GAAE,EAAEC,IAAE,EAAC,SAAQ,MAAIG,GAAC,CAAC;AAAE,YAAID,KAAE,WAAU;AAAC,mBAASH,KAAG;AAAC,aAAC,SAASA,IAAEC,IAAE;AAAC,kBAAG,EAAED,cAAaC;AAAG,sBAAM,IAAI,UAAU,mCAAmC;AAAA,YAAC,EAAE,MAAKD,EAAC;AAAA,UAAC;AAAC,cAAIC,IAAEE;AAAE,iBAAOF,KAAED,IAAEG,KAAE,CAAC,EAAC,KAAI,qBAAoB,OAAM,SAASH,IAAEC,IAAEC,IAAEC,IAAEC,IAAE,GAAE;AAAC,mBAAOF,KAAEC,OAAIH,KAAE,KAAK,MAAMA,KAAEG,KAAED,EAAC,GAAEA,KAAEC,KAAGH,KAAEC,OAAIC,KAAE,KAAK,MAAMA,KAAED,KAAED,EAAC,GAAEA,KAAEC,KAAGG,MAAGF,KAAEE,OAAIJ,KAAE,KAAK,MAAMA,KAAEI,KAAEF,EAAC,GAAEA,KAAEE,KAAG,KAAGJ,KAAE,MAAIE,KAAE,KAAK,MAAMA,KAAE,IAAEF,EAAC,GAAEA,KAAE,IAAG,EAAC,QAAOA,IAAE,OAAME,GAAC;AAAA,UAAC,EAAC,GAAE,EAAC,KAAI,wBAAuB,OAAM,SAASF,IAAEC,IAAEC,IAAEC,IAAEC,IAAE;AAAC,gBAAI,IAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE,QAAOC,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE,KAAI,IAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE,GAAE,IAAEA,KAAE,KAAI,IAAE,SAAS,cAAc,QAAQ,GAAE,IAAEL,GAAE,OAAMM,KAAEN,GAAE,QAAOO,KAAE,KAAK,kBAAkBD,IAAEJ,IAAE,GAAED,IAAEE,IAAEC,EAAC;AAAE,aAAC,KAAG,OAAK,KAAG,QAAM,KAAG,EAAE,QAAMG,GAAE,OAAM,EAAE,SAAOA,GAAE,WAAS,EAAE,QAAMA,GAAE,QAAO,EAAE,SAAOA,GAAE,QAAO,IAAEA,GAAE,OAAMD,KAAEC,GAAE;AAAO,gBAAIC,KAAE,EAAE,WAAW,IAAI;AAAE,mBAAOA,GAAE,YAAU,oBAAmBA,GAAE,SAAS,GAAE,GAAE,GAAEF,EAAC,GAAEE,GAAE,yBAAuBA,GAAE,0BAAwBA,GAAE,wBAAsB,SAAQ,MAAIA,GAAE,OAAO,IAAE,KAAK,KAAG,GAAG,GAAE,OAAK,IAAEA,GAAE,UAAU,GAAE,CAAC,EAAE,KAAK,IAAE,QAAM,IAAEA,GAAE,UAAU,CAAC,EAAE,OAAM,CAAC,EAAE,MAAM,IAAE,QAAM,IAAEA,GAAE,UAAU,CAAC,EAAE,QAAO,CAAC,IAAE,MAAI,KAAG,QAAM,KAAGA,GAAE,UAAU,GAAE,CAAC,IAAGA,GAAE,UAAUR,IAAE,GAAE,GAAE,GAAEM,EAAC,GAAE,EAAE,UAAU,SAAS,OAAO,CAAC,GAAE,CAAC;AAAA,UAAC,EAAC,GAAE,EAAC,KAAI,mBAAkB,OAAM,SAASN,IAAEC,IAAE;AAAC,YAAAA,KAAEA,MAAG;AAAa,qBAAQC,KAAE,KAAKF,GAAE,SAAS,EAAE,QAAQ,4CAA2C,EAAE,CAAC,GAAEG,KAAE,CAAC,GAAEC,KAAE,GAAEA,KAAEF,GAAE,QAAOE,MAAG,KAAI;AAAC,uBAAQ,IAAEF,GAAE,MAAME,IAAEA,KAAE,GAAG,GAAEC,KAAE,IAAI,MAAM,EAAE,MAAM,GAAE,IAAE,GAAE,IAAE,EAAE,QAAO;AAAI,gBAAAA,GAAE,CAAC,IAAE,EAAE,WAAW,CAAC;AAAE,kBAAI,IAAE,IAAI,WAAWA,EAAC;AAAE,cAAAF,GAAE,KAAK,CAAC;AAAA,YAAC;AAAC,mBAAOA;AAAA,UAAC,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,SAASH,IAAEC,IAAE;AAAC,gBAAIC,KAAE,KAAK,gBAAgBF,IAAEC,EAAC;AAAE,mBAAO,IAAI,KAAKC,IAAE,EAAC,MAAKD,IAAE,cAAa,oBAAI,OAAI,CAAC;AAAA,UAAC,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,SAASD,IAAEC,IAAEC,IAAE;AAAC,gBAAIC,KAAE,KAAK,gBAAgBH,IAAEE,EAAC;AAAE,mBAAO,IAAI,KAAKC,IAAEF,IAAE,EAAC,MAAKC,IAAE,cAAa,oBAAI,OAAI,CAAC;AAAA,UAAC,EAAC,GAAE,EAAC,KAAI,sBAAqB,OAAM,SAASD,IAAEC,IAAEC,IAAEC,IAAE,GAAEC,IAAE,GAAE;AAAC,gBAAI,IAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE,UAAS,IAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE,MAAK,IAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE,MAAKC,KAAE,IAAI;AAAW,gBAAG,CAACL;AAAE,oBAAM,MAAM,iBAAiB;AAAE,gBAAGA,GAAE,QAAM,CAACA,GAAE,KAAK,SAAS,OAAO;AAAE,oBAAM,MAAM,oBAAoB;AAAE,YAAAK,GAAE,cAAcL,EAAC,GAAEK,GAAE,SAAO,WAAU;AAAC,kBAAIC,KAAE,IAAI;AAAM,cAAAA,GAAE,MAAID,GAAE,QAAOC,GAAE,SAAO,WAAU;AAAC,oBAAID,KAAEN,GAAE,qBAAqBO,IAAEL,IAAEC,IAAE,GAAE,GAAEC,IAAE,GAAEC,EAAC,GAAEG,KAAE,SAAS,OAAOJ,EAAC;AAAE,wBAAO,GAAE;AAAA,kBAAC,KAAI;AAAO,wBAAI,IAAEJ,GAAE,UAAUM,IAAEE,EAAC;AAAE,sBAAE,CAAC;AAAE;AAAA,kBAAM,KAAI;AAAS,sBAAEF,EAAC;AAAE;AAAA,kBAAM,KAAI;AAAO,wBAAI,IAAEL,GAAE,KAAK,SAAS,EAAE,QAAQ,yBAAwB,EAAE,EAAE,OAAOG,GAAE,SAAS,CAAC,GAAE,IAAEJ,GAAE,UAAUM,IAAE,GAAEE,EAAC;AAAE,sBAAE,CAAC;AAAE;AAAA,kBAAM;AAAQ,sBAAEF,EAAC;AAAA,gBAAC;AAAA,cAAC;AAAA,YAAC,GAAEA,GAAE,UAAQ,SAASN,IAAE;AAAC,oBAAM,MAAMA,EAAC;AAAA,YAAC;AAAA,UAAC,EAAC,CAAC,GAAE,MAA0BG,MAAGD,GAAED,IAAEE,EAAC,GAAEH;AAAA,QAAC,EAAE;AAAE,cAAMI,KAAE,EAAC,kBAAiB,SAASJ,IAAEC,IAAEC,IAAEE,IAAE,GAAEC,IAAE,GAAE,GAAE,GAAE,GAAE;AAAC,iBAAOF,GAAE,mBAAmBH,IAAEC,IAAEC,IAAEE,IAAE,GAAEC,IAAE,GAAE,GAAE,GAAE,CAAC;AAAA,QAAC,EAAC;AAAE,eAAO,UAAQJ;AAAA,MAAC,GAAG;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACEpsG,YAAIQ,YAAY;YAEHC,UAAU;UACrBC,MAAM;QADe;YAIVC,kBAAkB,SAAlBA,iBAAkBC,OAAA;AAAA,cAAA,aAAAA,MAAGC,OAAAA,QAAH,eAAA,SAAW,KAAX;AAAA,iBAAoBA;QAApB;YAClBC,gBAAgB,SAAhBA,iBAAgB;AAAA,iBAAMC,SAAA,cAAAA,SAAA,UAAA,MAAA,MAAA;QAAN;YAEhBC,gBAAgB;UAC3BC,MAAMN;UACNO,OAAO;UACPC,UAAU;UACVC,UAAUC,OAAOC;QAJU;AAO7B,iBAASC,aAAwB;AAAA,mBAAA,OAAA,UAAA,QAAVC,WAAU,IAAA,MAAA,IAAA,GAAA,OAAA,GAAA,OAAA,MAAA,QAAA;AAAVA,qBAAU,IAAA,IAAA,UAAA,IAAA;UAAA;AAC/B,iBAAOA,SAASC,OAAO,SAACC,OAAOC,OAAS;AAAA,gBAC9BC,SAA8BD,MAA9BC,OAAOC,YAAuBF,MAAvBE,WAAcC,OADSC,gCACAJ,OADA,CAAA,SAAA,WAAA,CAAA;AAGtCD,oBAAKM,UAAA,CAAA,GACAN,OADA,CAAA,GAEAI,IAFA;AAKL,gBAAIF,QAAO;AACTF,oBAAME,QAAQF,MAAME,QAANI,UAAA,CAAA,GACJN,MAAME,SAAS,CAAA,GADX,CAAA,GACoBA,UAAS,CAAA,CAD7B,IAEVA;YACL;AAED,gBAAIC,WAAW;AACbH,oBAAMG,YAAYH,MAAMG,YACpBH,MAAMG,YAAY,MAAMA,YACxBA;YACL;AAED,gBAAIH,MAAMG,cAAc,IAAI;AAC1B,qBAAOH,MAAMG;YACd;AAED,mBAAOH;UACR,GAAE,CAAA,CAzBI;QA0BR;AAED,iBAASO,iBAAiBC,WAAWC,WAAWC,MAAM;AAEpD,cAAI,OAAOD,cAAc,YAAY;AACnC,mBAAOF,iBAAiB,CAAA,GAAIE,UAAUD,WAAWE,IAAZ,CAAd;UACxB;AAGD,cAAIC,MAAMC,QAAQH,SAAd,GAA0B;AAC5B,mBAAOZ,WAAU,MAAV,QAAA,CAAWW,SAAX,EAAA,OAAyBC,SAAzB,CAAA;UACR;AAGD,iBAAOZ,WAAWW,WAAWC,SAAZ;QAClB;YAEYI,iBAAiB,SAAjBA,gBAAkBC,QAAOJ,MAAc;AAAA,cAAdA,SAAc,QAAA;AAAdA,mBAAO,CAAA;UAAO;AAClD,iBAAO,SAACD,WAAD;AAAA,gBAACA,cAAD,QAAA;AAACA,0BAAY,CAAA;YAAb;AAAA,mBACL,CAAA,EAAA,OAAIK,QAAJ,CAAWL,SAAX,CAAA,EAAsBV,OACpB,SAACgB,OAAMd,OAAP;AAAA,qBACEM,iBAAiBQ,OAAMd,OAAPK,UAAA,CAAA,GACXI,MADW;gBAEdD;cAFc,CAAA,CAAA;YADlB,GAKA,CAAA,CANF;UADK;QASR;YAEYO,cAAc,SAAdA,aAAeF,QAAOG,SAASP,MAAWQ,gBAA5B;AAAA,cAAiBR,SAAjB,QAAA;AAAiBA,mBAAO,CAAA;UAAxB;AAAA,iBACzBI,OAAMf,OAAO,SAACgB,OAAMd,OAAS;AAC3B,gBAAMkB,YAAYlB,MAAKc,OAAML,IAAP;AACqB;AACzC,kBAAI,CAACQ,kBAAkB,OAAOC,cAAc,aAAa;AACvDC,wBAAQC,KAAKpB,KAAb;AACA,sBAAM,IAAIqB,MACR,wFADI;cAGP;YACF;AACD,mBAAOH;UACR,GAAEF,OAXH;QADyB;YAcdM,YAAY,SAAZA,WAAaT,QAAOU,SAASd,MAAjB;AAAA,cAAiBA,SAAjB,QAAA;AAAiBA,mBAAO,CAAA;UAAxB;AAAA,iBACvBI,OAAMW,QAAQ,SAAAC,MAAQ;AACpB,gBAAMP,YAAYO,KAAKF,SAASd,IAAV;AACqB;AACzC,kBAAI,OAAOS,cAAc,aAAa;AACpCC,wBAAQC,KAAKK,MAAMP,SAAnB;AACA,sBAAM,IAAIG,MACR,wFADI;cAGP;YACF;UACF,CAVD;QADuB;AAalB,iBAASK,kBAAkBC,SAASC,SAASC,aAAYC,QAAQ;AACtE,cAA6CA,QAAQ;AACnD,kBAAM,IAAIT,MAAJ,qGAC+FQ,cAD/F,GAAA;UAGP;AACD,cAAME,cAAcJ,QAAQK,UAC1B,SAAAC,QAAM;AAAA,mBAAIA,OAAOJ,eAAeA;UAA1B,CADY;AAIpB,cAAIE,gBAAgB,IAAI;AACqB;AACzC,oBAAM,IAAIV,MAAJ,iBAAyBQ,cAAzB;;;MAGRA,cAHQ,oBAGoBA,cAHpB,KAAA;YAKP;UACF;AAEDD,kBAAQJ,QAAQ,SAAAU,QAAU;AACxB,gBAAMC,cAAcR,QAAQK,UAC1B,SAAAC,QAAM;AAAA,qBAAIA,OAAOJ,eAAeK;YAA1B,CADY;AAGpB,gBAAIC,cAAc,MAAMA,cAAcJ,aAAa;AACN;AACzC,sBAAM,IAAIV,MAAJ,sBACgBQ,cADhB,2CACmEK,SADnE,eAAA;cAGP;YACF;UACF,CAXD;QAYD;AAEM,iBAASE,iBAAiBC,SAASC,KAAK;AAC7C,iBAAO,OAAOD,YAAY,aAAaA,QAAQC,GAAD,IAAQD;QACvD;AAEM,iBAASE,aAAaC,KAAK;AAChC,cAAMC,MAAMrD,SAAMsD,OAAN;AACZD,cAAIE,UAAUH;AAEd,iBAAOpD,SAAMwD,YAAY,WAAA;AAAA,mBAAMH,IAAIE;UAAV,GAAmB,CAAA,CAArC;QACR;YAGYE,sBACX,OAAOC,aAAa,cAAc1D,SAAM2D,kBAAkB3D,SAAM4D;AAE3D,iBAASC,uBAAuBC,IAAIC,MAAM;AAC/C,cAAMC,aAAahE,SAAMsD,OAAO,KAAb;AAEnBG,8BAAoB,WAAM;AACxB,gBAAIO,WAAWT,SAAS;AACtBO,iBAAE;YACH;AACDE,uBAAWT,UAAU;UAEtB,GAAEQ,IANgB;QAOpB;AAEM,iBAASE,iBAAiBC,WAAWC,aAAiB;AAAA,cAAjBA,gBAAiB,QAAA;AAAjBA,0BAAc;UAAG;AAC3D,cAAMC,cAAcpE,SAAMsD,OAAO,CAAA,CAAb;AAEpB,cAAMe,eAAelB,aAAae,SAAD;AACjC,cAAMI,iBAAiBnB,aAAagB,WAAD;AAEnC,iBAAOnE,SAAMwD;YAAN,2BAAA;AAAA,kBAAAe,SAAA;gBAAA,mCAAA,KACL,SAAA,WAAA;AAAA,sBAAA,OAAA,MAAA,OAAA,SAAA;AAAA,yBAAA,mBAAA,KAAA,SAAA,UAAA,WAAA;AAAA,2BAAA,GAAA;AAAA,8BAAA,UAAA,OAAA,UAAA,MAAA;wBAAA,KAAA;AAAA,+BAAA,QAAA,OAAA,QAAUC,OAAV,IAAA,MAAA,KAAA,GAAA,QAAA,GAAA,QAAA,OAAA,SAAA;AAAUA,iCAAV,KAAA,IAAA,OAAA,KAAA;0BAAA;AACE,8BAAI,CAACJ,YAAYb,QAAQkB,SAAS;AAChCL,wCAAYb,QAAQkB,UAAU,IAAIC,QAAQ,SAACC,SAASC,QAAW;AAC7DR,0CAAYb,QAAQoB,UAAUA;AAC9BP,0CAAYb,QAAQqB,SAASA;4BAC9B,CAH6B;0BAI/B;AAED,8BAAIR,YAAYb,QAAQsB,SAAS;AAC/BC,yCAAaV,YAAYb,QAAQsB,OAArB;0BACb;AAEDT,sCAAYb,QAAQsB,UAAUE;4BAAU;8BAAA,mCAAA,KAAC,SAAA,UAAA;AAAA,uCAAA,mBAAA,KAAA,SAAA,SAAA,UAAA;AAAA,yCAAA,GAAA;AAAA,4CAAA,SAAA,OAAA,SAAA,MAAA;sCAAA,KAAA;AACvC,+CAAOX,YAAYb,QAAQsB;AADY,iDAAA,OAAA;AAAA,iDAAA,KAGrCT,YAAYb;AAHyB,iDAAA,OAAA;AAAA,+CAGHc,aAAY,EAAA,MAAZ,QAAkBG,IAAlB;sCAHG,KAAA;AAAA,iDAAA,KAAA,SAAA;AAAA,iDAAA,GAGjBG,QAHiB,KAAA,SAAA,IAAA,SAAA,EAAA;AAAA,iDAAA,OAAA;AAAA;sCAAA,KAAA;AAAA,iDAAA,OAAA;AAAA,iDAAA,KAAA,SAAA,OAAA,EAAA,CAAA;AAKrCP,oDAAYb,QAAQqB,OAApB,SAAA,EAAA;sCALqC,KAAA;AAAA,iDAAA,OAAA;AAOrC,+CAAOR,YAAYb,QAAQkB;AAPU,+CAAA,SAAA,OAAA,EAAA;sCAAA,KAAA;sCAAA,KAAA;AAAA,+CAAA,SAAA,KAAA;oCAAA;kCAAA;gCAAA,GAAA,SAAA,MAAA,CAAA,CAAA,GAAA,GAAA,IAAA,EAAA,CAAA,CAAA;8BAAA,CAAD;4BAAA;4BASrCH,eAAc;0BATuB;AAZ1C,iCAAA,UAAA,OAAA,UAuBSF,YAAYb,QAAQkB,OAvB7B;wBAAA,KAAA;wBAAA,KAAA;AAAA,iCAAA,UAAA,KAAA;sBAAA;oBAAA;kBAAA,GAAA,QAAA;gBAAA,CADK;cAAA;AAAA,qBAAA,WAAA;AAAA,uBAAAF,OAAA,MAAA,MAAA,SAAA;cAAA;YAAA,EAAA;YA0BL,CAACF,cAAcC,cAAf;UA1BK;QA4BR;AAEM,iBAASU,aAAaC,UAAUC,SAAQ7D,MAAW;AAAA,cAAXA,SAAW,QAAA;AAAXA,mBAAO,CAAA;UAAI;AACxD,iBAAO,SAAC8D,MAAM/D,WAAmB;AAAA,gBAAnBA,cAAmB,QAAA;AAAnBA,0BAAY,CAAA;YAAO;AAC/B,gBAAMgE,OAAO,OAAOD,SAAS,WAAWD,QAAOC,IAAD,IAASA;AAEvD,gBAAI,OAAOC,SAAS,aAAa;AAC/BrD,sBAAQC,KAAKkD,OAAb;AACA,oBAAM,IAAIjD,MAAMxC,SAAV;YACP;AAED,mBAAO4F,WAAWD,MAADnE,UAAA,CAAA,GAAYgE,UAAZ;cAAsBC,QAAAA;YAAtB,GAAiC7D,MAAjC,CAAA,GAA0CD,SAA1C,CAAA;UAClB;QACF;AAEM,iBAASiE,WAAWD,MAAMzE,OAAO;AACtC,iBAAO2E,iBAAiBF,IAAD,IAASpF,SAAA,cAAC,MAASW,KAAV,IAAsByE;QACvD;AAED,iBAASE,iBAAiBC,WAAW;AACnC,iBACEC,iBAAiBD,SAAD,KAChB,OAAOA,cAAc,cACrBE,kBAAkBF,SAAD;QAEpB;AAED,iBAASC,iBAAiBD,WAAW;AACnC,iBACE,OAAOA,cAAc,cACpB,WAAM;AACL,gBAAMG,QAAQC,OAAOC,eAAeL,SAAtB;AACd,mBAAOG,MAAMG,aAAaH,MAAMG,UAAUP;UAC3C,EAHD;QAKH;AAED,iBAASG,kBAAkBF,WAAW;AACpC,iBACE,OAAOA,cAAc,YACrB,OAAOA,UAAUO,aAAa,YAC9B,CAAC,cAAc,mBAAf,EAAoCC,SAASR,UAAUO,SAASE,WAAhE;QAEH;AClOM,iBAASC,oBAAoBC,SAASC,QAAQC,OAAW;AAAA,cAAXA,UAAW,QAAA;AAAXA,oBAAQ;UAAG;AAC9D,iBAAOF,QAAQG,IAAI,SAAAnB,SAAU;AAC3BA,YAAAA,UAAMjE,UAAA,CAAA,GACDiE,SADC;cAEJiB;cACAC;YAHI,CAAA;AAMNE,iCAAqBpB,OAAD;AAEpB,gBAAIA,QAAOgB,SAAS;AAClBhB,cAAAA,QAAOgB,UAAUD,oBAAoBf,QAAOgB,SAAShB,SAAQkB,QAAQ,CAAjC;YACrC;AACD,mBAAOlB;UACR,CAbM;QAcR;AAEM,iBAASqB,eAAeL,SAAS;AACtC,iBAAOM,UAAUN,SAAS,SAAV;QACjB;AAEM,iBAASI,qBAAqBpB,SAAQ;AAAA,cAErCuB,OAAyBvB,QAAzBuB,IAAIC,WAAqBxB,QAArBwB,UAAUC,SAAWzB,QAAXyB;AAEpB,cAAI,OAAOD,aAAa,UAAU;AAChCD,YAAAA,OAAKA,QAAMC;AACX,gBAAME,eAAeF,SAASG,MAAM,GAAf;AACrBH,uBAAW,SAAAA,UAAAI,KAAG;AAAA,qBAAIC,MAAMD,KAAKF,YAAN;YAAT;UACf;AAED,cAAI,CAACH,QAAM,OAAOE,WAAW,YAAYA,QAAQ;AAC/CF,YAAAA,OAAKE;UACN;AAED,cAAI,CAACF,QAAMvB,QAAOgB,SAAS;AACzBnE,oBAAQiF,MAAM9B,OAAd;AACA,kBAAM,IAAIjD,MAAM,qDAAV;UACP;AAED,cAAI,CAACwE,MAAI;AACP1E,oBAAQiF,MAAM9B,OAAd;AACA,kBAAM,IAAIjD,MAAM,+CAAV;UACP;AAED0D,iBAAOsB,OAAO/B,SAAQ;YACpBuB,IAAAA;YACAC;UAFoB,CAAtB;AAKA,iBAAOxB;QACR;AAEM,iBAASgC,eAAehC,SAAQiC,mBAAmB;AACxD,cAAI,CAACA,mBAAmB;AACtB,kBAAM,IAAIlF,MAAJ;UACP;AACD0D,iBAAOsB,OAAO/B,SAAdjE,UAAA;;YAEE0F,QAAQ5G;YACRqH,QAAQrH;UAHV,GAIKE,eAJL,CAAA,GAKKkH,mBALL,CAAA,GAMKjC,OANL,CAAA;AASAS,iBAAOsB,OAAO/B,SAAQ;YACpBmC,eAAenC,QAAO/E;UADF,CAAtB;AAIA,iBAAO+E;QACR;AAGM,iBAASoC,iBACdC,aACAtH,gBACAuH,4BACA;AAAA,cADAA,+BACA,QAAA;AADAA,yCAA6B,SAAAA,8BAAA;AAAA,qBAAO,CAAA;YAAP;UAC7B;AACA,cAAMC,eAAe,CAAA;AAErB,cAAIC,cAAcH;AAElB,cAAII,MAAM;AACV,cAAMC,UAAS,SAATA,UAAS;AAAA,mBAAMD;UAAN;AANf,cAAA,QAAA,SAAAE,SAAA;AAUE,gBAAMC,cAAc;cAClBC,SAAS,CAAA;YADS;AAKpB,gBAAMC,gBAAgB,CAAA;AAEtB,gBAAMC,aAAaP,YAAYQ,KAAK,SAAAC,IAAC;AAAA,qBAAIA,GAAEhC;YAAN,CAAlB;AAGnBuB,wBAAYtF,QAAQ,SAAA8C,SAAU;AAE5B,kBAAIkD,qBAAqB,CAAA,EAAA,OAAIJ,aAAJ,EAAmBK,QAAnB,EAA6B,CAA7B;AAEzB,kBAAIC;AAEJ,kBAAIL,YAAY;AAEd,oBAAI/C,QAAOiB,QAAQ;AACjBmC,8BAASrH,UAAA,CAAA,GACJiE,QAAOiB,QADH;oBAEPoC,YAAYrD,QAAOiB,OAAOM;oBAC1BA,IAAOvB,QAAOiB,OAAOM,KAAnB,MAAyBmB,QAAM;oBACjCG,SAAS,CAAC7C,OAAD;kBAJF,GAKJsC,2BAA2BtC,OAAD,CALtB;gBAOV,OAAM;AAEL,sBAAMqD,aAAgBrD,QAAOuB,KAAb;AAChB6B,8BAAYpB,eAAcjG,UAAA;oBAEtBsH;oBACA9B,IAAOvB,QAAOuB,KAAZ,kBAA8BmB,QAAM;oBACtCY,eAAetD;oBACf6C,SAAS,CAAC7C,OAAD;kBALa,GAMnBsC,2BAA2BtC,OAAD,CANP,GAQxBjF,cARwB;gBAU3B;AAID,oBACEmI,sBACAA,mBAAmBG,eAAeD,UAAUC,YAC5C;AACAH,qCAAmBL,QAAQU,KAAKvD,OAAhC;gBACD,OAAM;AACL8C,gCAAcS,KAAKH,SAAnB;gBACD;cACF;AAEDR,0BAAYC,QAAQU,KAAKvD,OAAzB;YACD,CA5CD;AA8CAuC,yBAAagB,KAAKX,WAAlB;AAGAJ,0BAAcM;UArEhB;AAQA,iBAAON,YAAYgB,QAAQ;AAAA,kBAAA;UA8D1B;AAED,iBAAOjB,aAAaY,QAAb;QACR;AAED,YAAMM,eAAe,oBAAIC,IAAJ;AAEd,iBAAS7B,MAAM3D,KAAKyF,OAAMC,KAAK;AACpC,cAAI,CAACD,OAAM;AACT,mBAAOzF;UACR;AACD,cAAM2F,WAAW,OAAOF,UAAS,aAAaA,QAAOG,KAAKC,UAAUJ,KAAf;AAErD,cAAMK,UACJP,aAAaQ,IAAIJ,QAAjB,KACC,WAAM;AACL,gBAAMG,WAAUE,cAAcP,KAAD;AAC7BF,yBAAaU,IAAIN,UAAUG,QAA3B;AACA,mBAAOA;UACR,EAJD;AAMF,cAAII;AAEJ,cAAI;AACFA,kBAAMJ,QAAQxI,OAAO,SAAC6I,SAAQC,UAAT;AAAA,qBAAsBD,QAAOC,QAAD;YAA5B,GAAwCpG,GAAvD;UACP,SAAQqG,IAAG;UAEX;AACD,iBAAO,OAAOH,QAAQ,cAAcA,MAAMR;QAC3C;AAEM,iBAASY,kBAAyB;AAAA,mBAAA,OAAA,UAAA,QAANlF,OAAM,IAAA,MAAA,IAAA,GAAA,OAAA,GAAA,OAAA,MAAA,QAAA;AAANA,iBAAM,IAAA,IAAA,UAAA,IAAA;UAAA;AACvC,mBAASmF,IAAI,GAAGA,IAAInF,KAAKkE,QAAQiB,KAAK,GAAG;AACvC,gBAAI,OAAOnF,KAAKmF,CAAD,MAAQ,aAAa;AAClC,qBAAOnF,KAAKmF,CAAD;YACZ;UACF;QACF;AA2BM,iBAASC,YAAWC,IAAG;AAC5B,cAAI,OAAOA,OAAM,YAAY;AAC3B,mBAAOA;UACR;QACF;AAEM,iBAASrD,UAAUsD,KAAKC,KAAK;AAClC,cAAMC,OAAO,CAAA;AAEb,cAAMC,UAAU,SAAVA,SAAUH,MAAO;AACrBA,YAAAA,KAAI1H,QAAQ,SAAA+F,IAAK;AACf,kBAAI,CAACA,GAAE4B,GAAD,GAAO;AACXC,qBAAKvB,KAAKN,EAAV;cACD,OAAM;AACL8B,gBAAAA,SAAQ9B,GAAE4B,GAAD,CAAF;cACR;YACF,CAND;UAOD;AAEDE,kBAAQH,GAAD;AAEP,iBAAOE;QACR;AAEM,iBAASE,WACdC,MADKtK,OAGL;AAAA,cADEuK,oBACFvK,MADEuK,mBAAmBC,WACrBxK,MADqBwK,UACrB,qBAAAxK,MAD+ByK,eAAAA,gBAC/B,uBAAA,SAD+C,OAC/C;AACA,cAAMC,eAAe,CAAA;AAErB,cAAMC,YAAY,SAAZA,WAAa1D,KAAK2D,mBAA6B;AAAA,gBAA7BA,sBAA6B,QAAA;AAA7BA,kCAAoB;YAAS;AACnD3D,gBAAI4D,aACD5D,IAAI6D,YAAY7D,IAAI6D,SAASP,iBAAb,KAAoCC,SAASvD,IAAIL,EAAL;AAE/DK,gBAAI8D,YAAY9D,IAAI+D,WAAW,CAAC,CAAC/D,IAAI+D,QAAQnC;AAE7C,gBAAI+B,mBAAmB;AACrBF,2BAAa9B,KAAK3B,GAAlB;YACD;AAED,gBAAIA,IAAI+D,WAAW/D,IAAI+D,QAAQnC,UAAU5B,IAAI4D,YAAY;AACvD5D,kBAAI+D,QAAQzI,QAAQ,SAAA0E,MAAG;AAAA,uBAAI0D,WAAU1D,MAAKwD,aAAN;cAAb,CAAvB;YACD;UACF;AAEDH,eAAK/H,QAAQ,SAAA0E,KAAG;AAAA,mBAAI0D,UAAU1D,GAAD;UAAb,CAAhB;AAEA,iBAAOyD;QACR;AAEM,iBAASO,gBAAgBC,QAAQC,iBAAiBC,cAAa;AACpE,iBACErB,YAAWmB,MAAD,KACVC,gBAAgBD,MAAD,KACfE,aAAYF,MAAD,KACXE,aAAYC;QAEf;AAEM,iBAASC,uBAAuBC,YAAYtL,OAAOoF,SAAQ;AAChE,iBAAOkG,aAAaA,WAAWtL,OAAOoF,OAAR,IAAkB,OAAOpF,UAAU;QAClE;AAEM,iBAASuL,0BAA0B;AACxC,gBAAM,IAAIpJ,MACR,iGADI;QAGP;AAED,YAAIqJ,mBAAmB;AAChB,iBAASC,wBAAwB;AAEtC,cAAI,OAAOD,qBAAqB;AAAW,mBAAOA;AAElD,cAAIE,YAAY;AAChB,cAAI;AACF,gBAAMC,WAAU;cACd,IAAIC,UAAU;AACZF,4BAAY;AACZ,uBAAO;cACR;YAJa;AAOhBG,mBAAOC,iBAAiB,QAAQ,MAAMH,QAAtC;AACAE,mBAAOE,oBAAoB,QAAQ,MAAMJ,QAAzC;UACD,SAAQK,KAAK;AACZN,wBAAY;UACb;AACDF,6BAAmBE;AACnB,iBAAOF;QACR;AAID,YAAMS,gBAAgB;AACtB,YAAMC,iBAAiB;AAEvB,iBAAS5C,cAAchG,KAAK;AAC1B,iBACE6I,YAAY7I,GAAD,EAERiD,IAAI,SAAA8B,IAAC;AAAA,mBAAI+D,OAAO/D,EAAD,EAAIgE,QAAQ,KAAK,GAAvB;UAAJ,CAFR,EAIGC,KAAK,GAJR,EAMGD,QAAQJ,eAAe,GAN1B,EAOGI,QAAQH,gBAAgB,EAP3B,EASGnF,MAAM,GATT;QAWH;AAED,iBAASoF,YAAYnC,KAAKuC,QAAa;AAAA,cAAbA,WAAa,QAAA;AAAbA,qBAAS,CAAA;UAAI;AACrC,cAAI,CAAC/K,MAAMC,QAAQuI,GAAd,GAAoB;AACvBuC,mBAAO5D,KAAKqB,GAAZ;UACD,OAAM;AACL,qBAASH,IAAI,GAAGA,IAAIG,IAAIpB,QAAQiB,KAAK,GAAG;AACtCsC,0BAAYnC,IAAIH,CAAD,GAAK0C,MAAT;YACZ;UACF;AACD,iBAAOA;QACR;AC1VD,YAAMC,uBAAuB,SAAvBA,sBAAuB3L,OAAK;AAAA,iBAAAM,UAAA;YAChCsL,MAAM;UAD0B,GAE7B5L,KAF6B;QAAA;AAKlC,YAAM6L,2BAA2B,SAA3BA,0BAA2B7L,OAAK;AAAA,iBAAAM,UAAA;YACpCsL,MAAM;UAD8B,GAEjC5L,KAFiC;QAAA;AAKtC,YAAM8L,wBAAwB,SAAxBA,uBAAyB9L,OAADd,OAAA;AAAA,cAAUqF,UAAVrF,MAAUqF;AAAV,iBAAAjE,UAAA;YAC5B8I,KAAG,YAAY7E,QAAOuB;YACtBiG,SAASxH,QAAOyH;YAChBJ,MAAM;UAHsB,GAIzB5L,KAJyB;QAAA;AAO9B,YAAMiM,wBAAwB,SAAxBA,uBAAyBjM,OAAD4D,QAAA;AAAA,cAAUW,UAAVX,OAAUW;AAAV,iBAAAjE,UAAA;YAC5B8I,KAAG,YAAY7E,QAAOuB;YACtBiG,SAASxH,QAAOyH;UAFY,GAGzBhM,KAHyB;QAAA;AAM9B,YAAMkM,6BAA6B,SAA7BA,4BAA8BlM,OAAD,OAAA;AAAA,cAAUmM,SAAV,MAAUA;AAAV,iBAAA7L,UAAA;YACjC8I,KAAG,iBAAiB+C;YACpBP,MAAM;UAF2B,GAG9B5L,KAH8B;QAAA;AAMnC,YAAMoM,6BAA6B,SAA7BA,4BAA8BpM,OAAD,OAAA;AAAA,cAAUmM,SAAV,MAAUA;AAAV,iBAAA7L,UAAA;YACjC8I,KAAG,iBAAiB+C;UADa,GAE9BnM,KAF8B;QAAA;AAKnC,YAAMqM,qBAAqB,SAArBA,oBAAsBrM,OAAD,OAAA;AAAA,cAAUmG,MAAV,MAAUA;AAAV,iBAAA7F,UAAA;YACzB8I,KAAG,SAASjD,IAAIL;YAChB8F,MAAM;UAFmB,GAGtB5L,KAHsB;QAAA;AAM3B,YAAMsM,sBAAsB,SAAtBA,qBAAuBtM,OAAD,OAAA;AAAA,cAAUuM,OAAV,MAAUA;AAAV,iBAAAjM,UAAA;YAC1B8I,KAAG,UAAUmD,KAAKpG,IAAIL,KAAnB,MAAyByG,KAAKhI,OAAOuB;YACxC8F,MAAM;UAFoB,GAGvB5L,KAHuB;QAAA;AAMb,iBAASwM,yBAAyB;AAC/C,iBAAO;YACLC,YAAY,CAAA;YACZC,eAAe,CAAA;YACfC,oBAAoB,CAAA;YACpBpH,SAAS,CAAA;YACTqH,aAAa,CAAA;YACbhG,YAAY,CAAA;YACZiG,gBAAgB,CAAA;YAChBC,aAAa,CAAA;YACbC,qBAAqB,CAAA;YACrBC,yBAAyB,CAAA;YACzBC,sBAAsB,CAAA;YACtBC,gBAAgB,CAAA;YAChBC,oBAAoB,CAAA;YACpBrG,cAAc,CAAA;YACdsG,kBAAkB,CAAA;YAClBC,6BAA6B,CAAA;YAC7BC,aAAa,CAAA;YACbC,YAAY,CAAA;YACZC,eAAe,CAAC7B,oBAAD;YACf8B,mBAAmB,CAAC5B,wBAAD;YACnB6B,qBAAqB,CAACxB,0BAAD;YACrByB,qBAAqB,CAACvB,0BAAD;YACrBwB,gBAAgB,CAAC9B,qBAAD;YAChB+B,gBAAgB,CAAC5B,qBAAD;YAChB6B,aAAa,CAACzB,kBAAD;YACb0B,cAAc,CAACzB,mBAAD;YACd0B,kBAAkB,CAAA;UA3Bb;QA6BR;AClEDjP,gBAAQkP,qBAAqB;AAC7BlP,gBAAQmP,mBAAmB;AAC3BnP,gBAAQoP,mBAAmB;AAC3BpP,gBAAQqP,uBAAuB;AAExB,YAAMC,sBAAsB,SAAtBA,qBAAsBvN,QAAS;AAC1CA,UAAAA,OAAMwN,uBAAuB,CAACC,2BAAD;AAC7BzN,UAAAA,OAAM0N,+BAA+B,CAACC,mCAAD;AAErC3N,UAAAA,OAAM4L,cAAc5E,KAAK4G,OAAzB;AACA5N,UAAAA,OAAMuM,4BAA4BvF,KAAKuF,2BAAvC;AACAvM,UAAAA,OAAMsM,iBAAiBtF,KAAK,SAAC1E,MAADlE,OAAA;AAAA,gBAASoF,WAATpF,MAASoF;AAAT,mBAAA,CAAA,EAAA,OACvBlB,MADuB,CAE1BkB,SAASqK,MAAMC,aAFW,CAAA;UAAA,CAA5B;AAIA9N,UAAAA,OAAMwM,YAAYxF,KAAKwF,WAAvB;QACD;AAEDe,4BAAoBvM,aAAa;AAEjC,YAAMyM,8BAA8B,SAA9BA,6BAA+BvO,OAAD4D,QAAA;AAAA,cAAUW,UAAVX,OAAUW;AAAV,iBAAuB,CACzDvE,OACA;YACE6O,UAAU,SAAAA,UAAA/F,IAAK;AACbvE,cAAAA,QAAOuK,aAAa,CAAChG,GAAEiG,OAAOC,OAA9B;YACD;YACD9O,OAAO;cACL0I,QAAQ;YADH;YAGPoG,SAASzK,QAAO0K;YAChBC,OAAO;UART,CAFyD;QAAvB;AAcpC,YAAMT,sCAAsC,SAAtCA,qCAAuCzO,OAAD,OAAA;AAAA,cAAUsE,WAAV,MAAUA;AAAV,iBAAyB,CACnEtE,OACA;YACE6O,UAAU,SAAAA,UAAA/F,IAAK;AACbxE,uBAAS8J,qBAAqB,CAACtF,GAAEiG,OAAOC,OAAxC;YACD;YACD9O,OAAO;cACL0I,QAAQ;YADH;YAGPoG,SAAS,CAAC1K,SAAS6K,oBAAoB,CAAC7K,SAASqK,MAAMC,cAAc7G;YACrEmH,OAAO;YACPE,eACE,CAAC9K,SAAS6K,oBAAoB7K,SAASqK,MAAMC,cAAc7G;UAV/D,CAFmE;QAAzB;AAgB5C,iBAAS2G,QAAQC,QAAOU,QAAQC,eAAehL,UAAU;AACvD,cAAI+K,OAAO7K,SAASzF,QAAQC,MAAM;AAChC,mBAAAsB,UAAA;cACEsO,eAAe,CAAA;YADjB,GAEKD,MAFL;UAID;AAED,cAAIU,OAAO7K,SAASzF,QAAQkP,oBAAoB;AAC9C,mBAAA3N,UAAA,CAAA,GACKqO,QADL;cAEEC,eAAetK,SAASiL,aAAaX,iBAAiB,CAAA;YAFxD,CAAA;UAID;AAED,cAAIS,OAAO7K,SAASzF,QAAQmP,kBAAkB;AAC5C,gBAAMsB,SACJ,OAAOH,OAAOlQ,UAAU,cACpBkQ,OAAOlQ,QACP,CAACwP,OAAMC,cAAcxJ,SAASiK,OAAOI,QAApC;AAEP,gBAAMb,gBAAgBY,SAAM,CAAA,EAAA,OACpBb,OAAMC,eADc,CACCS,OAAOI,QADR,CAAA,IAExBd,OAAMC,cAAcxE,OAAO,SAAA5C,IAAC;AAAA,qBAAIA,OAAM6H,OAAOI;YAAjB,CAA5B;AAEJ,mBAAAnP,UAAA,CAAA,GACKqO,QADL;cAEEC;YAFF,CAAA;UAID;AAED,cAAIS,OAAO7K,SAASzF,QAAQoP,kBAAkB;AAC5C,mBAAA7N,UAAA,CAAA,GACKqO,QADL;cAEEC,eAAevM,iBAAiBgN,OAAOlQ,OAAOwP,OAAMC,aAArB;YAFjC,CAAA;UAID;AAED,cAAIS,OAAO7K,SAASzF,QAAQqP,sBAAsB;AAChD,gBAAMsB,YACJ,OAAOL,OAAOlQ,UAAU,cACpBkQ,OAAOlQ,QACP,CAACwP,OAAMC,cAAc7G;AAE3B,mBAAAzH,UAAA,CAAA,GACKqO,QADL;cAEEC,eAAec,YAAYpL,SAASsC,WAAWlB,IAAI,SAAA8B,IAAC;AAAA,uBAAIA,GAAE1B;cAAN,CAAzB,IAAqC,CAAA;YAFlE,CAAA;UAID;QACF;AAED,iBAASuH,4BAA4B/I,UAAU;AAAA,cAE3C8C,UAEE9C,SAFF8C,SACSwH,gBACPtK,SADFqK,MAASC;AAGX,cAAMe,eAAetQ,SAAMsD,OAAO,KAAb;AAErB,cAAI,CAACgN,aAAa/M;AAAS;AAG3B,cAAMgN,eAAe,SAAfA,cAAgBrL,SAAQsL,eAAkB;AAC9CtL,YAAAA,QAAO0K,YAAYY,iBAAiB,CAACjB,cAAcxJ,SAASb,QAAOuB,EAA9B;AAErC,gBAAIkG,2BAA0B;AAE9B,gBAAIzH,QAAO6C,WAAW7C,QAAO6C,QAAQW,QAAQ;AAC3CxD,cAAAA,QAAO6C,QAAQ3F,QACb,SAAAqO,WAAS;AAAA,uBACN9D,4BAA2B4D,cAAaE,WAAWvL,QAAO0K,SAAnB;cADjC,CADX;YAID,OAAM;AACLjD,cAAAA,2BAA0BzH,QAAO0K,YAAY,IAAI;YAClD;AAED1K,YAAAA,QAAOyH,0BAA0BA;AAEjC,mBAAOA;UACR;AAED,cAAIA,0BAA0B;AAE9B5E,kBAAQ3F,QACN,SAAAsO,WAAS;AAAA,mBAAK/D,2BAA2B4D,aAAaG,WAAW,IAAZ;UAA5C,CADX;QAGD;AAED,iBAASzC,YAAYhJ,UAAU;AAAA,cAE3BiB,UAOEjB,SAPFiB,SACAyK,cAME1L,SANF0L,aACAC,WAKE3L,SALF2L,UACArJ,cAIEtC,SAJFsC,YACAsJ,WAGE5L,SAHF4L,UACStB,gBAEPtK,SAFFqK,MAASC,eAPkB,wBASzBtK,SADF6L,wBAAAA,yBAR2B,0BAAA,SAQF,OARE;AAW7B,cAAMC,cAAc5N,aAAa8B,QAAD;AAEhC,cAAM6K,mBAAmBvI,YAAWmB,WAAW6G,cAAc7G;AAE7D,cAAMmG,mBAAmB7O,SAAMwD,YAC7B,SAAC4M,UAAUtQ,OAAX;AAAA,mBACE8Q,SAAS;cAAEzL,MAAMzF,QAAQmP;cAAkBuB;cAAUtQ;YAA5C,CAAD;UADV,GAEA,CAAC8Q,QAAD,CAHuB;AAMzB,cAAM9B,mBAAmB9O,SAAMwD,YAC7B,SAAA1D,OAAK;AAAA,mBAAI8Q,SAAS;cAAEzL,MAAMzF,QAAQoP;cAAkBhP;YAAlC,CAAD;UAAZ,GACL,CAAC8Q,QAAD,CAFuB;AAKzB,cAAM7B,uBAAuB/O,SAAMwD,YACjC,SAAA1D,OAAK;AAAA,mBAAI8Q,SAAS;cAAEzL,MAAMzF,QAAQqP;cAAsBjP;YAAtC,CAAD;UAAZ,GACL,CAAC8Q,QAAD,CAF2B;AAK7B,cAAMzB,+BAA+B3N,eACnCqP,SAAQ,EAAG1B,8BACX;YAAElK,UAAU8L,YAAW;UAAvB,CAFiD;AAKnDJ,sBAAYvO,QAAQ,SAAA8C,SAAU;AAC5BA,YAAAA,QAAOuK,eAAe,SAAA3P,OAAS;AAC7B8Q,uBAAS;gBACPzL,MAAMzF,QAAQmP;gBACduB,UAAUlL,QAAOuB;gBACjB3G;cAHO,CAAD;YAKT;AAEDoF,YAAAA,QAAO+J,uBAAuBzN,eAC5BqP,SAAQ,EAAG5B,sBACX;cACEhK,UAAU8L,YAAW;cACrB7L,QAAAA;YAFF,CAF0C;UAO7C,CAhBD;AAkBA,cAAM8L,4BAA4B7N,aAAa2N,sBAAD;AAE9CjN,iCAAuB,WAAM;AAC3B,gBAAImN,0BAAyB,GAAI;AAC/BJ,uBAAS;gBAAEzL,MAAMzF,QAAQkP;cAAhB,CAAD;YACT;UACF,GAAE,CAACgC,UAAU1K,OAAX,CAJmB;AAMtBP,iBAAOsB,OAAOhC,UAAU;YACtB6K;YACAjB;YACAC;YACAC;YACAI;UALsB,CAAxB;QAOD;AC/LD,YAAM8B,sBAAsB,CAAA;AAC5B,YAAMC,wBAAwB,CAAA;AAC9B,YAAMC,iBAAiB,SAAjBA,gBAAkB7B,QAAOU,QAAQoB,WAAhB;AAAA,iBAA8B9B;QAA9B;AACvB,YAAM+B,oBAAoB,SAApBA,mBAAqBvK,KAAKgG,QAAN;AAAA,iBAAgBhG,IAAI+D,WAAW,CAAA;QAA/B;AAC1B,YAAMyG,kBAAkB,SAAlBA,iBAAmBxK,KAAKgG,QAAO3G,QAAb;AAAA,iBAAA,MACnBA,SAAS,CAACA,OAAOM,IAAIqG,MAAZ,EAAmBV,KAAK,GAAxB,IAA+BU;QADrB;AAExB,YAAMyE,4BAA4B,SAA5BA,2BAA4BpJ,IAAC;AAAA,iBAAIA;QAAJ;AAEnC,iBAASqJ,cAAc7Q,OAAO;AAAA,cAAA,sBASxBA,MAPFuP,cAAAA,eAF0B,wBAAA,SAEXe,sBAFW,qBAAA,uBASxBtQ,MANFV,eAAAA,iBAH0B,yBAAA,SAGViR,wBAHU,sBAAA,oBASxBvQ,MALF8Q,YAAAA,aAJ0B,sBAAA,SAIbJ,oBAJa,mBAAA,kBASxB1Q,MAJF+Q,UAAAA,WAL0B,oBAAA,SAKfJ,kBALe,iBAAA,sBASxB3Q,MAHFgR,cAAAA,eAN0B,wBAAA,SAMXR,iBANW,qBAAA,wBASxBxQ,MAFF2M,oBAAAA,qBAP0B,0BAAA,SAOLiE,4BAPK,uBAQvBxQ,OARuBC,gCASxBL,OATwB,CAAA,gBAAA,iBAAA,cAAA,YAAA,gBAAA,oBAAA,CAAA;AAW5B,iBAAAM,UAAA,CAAA,GACKF,MADL;YAEEmP;YACAjQ,eAAAA;YACAwR;YACAC;YACAC;YACArE;UAPF,CAAA;QASD;AAED,YAAasE,WAAW,SAAXA,UAAYjR,OAAsB;AAAA,mBAAA,OAAA,UAAA,QAAZ4B,UAAY,IAAA,MAAA,OAAA,IAAA,OAAA,IAAA,CAAA,GAAA,OAAA,GAAA,OAAA,MAAA,QAAA;AAAZA,oBAAY,OAAA,CAAA,IAAA,UAAA,IAAA;UAAA;AAE7C5B,kBAAQ6Q,cAAc7Q,KAAD;AAGrB4B,oBAAO,CAAIyM,mBAAJ,EAAA,OAA4BzM,OAA5B;AAGP,cAAIsP,cAAc7R,SAAMsD,OAAO,CAAA,CAAb;AAGlB,cAAMyN,cAAc5N,aAAa0O,YAAYtO,OAAb;AAGhCoC,iBAAOsB,OAAO8J,YAAW,GAAzB9P,UAAA,CAAA,GACKN,OADL;YAEE4B;YACAd,OAAO0L,uBAAsB;UAH/B,CAAA,CAAA;AAOA5K,kBAAQwI,OAAO+G,OAAf,EAAwB1P,QAAQ,SAAAS,QAAU;AACxCA,mBAAOkO,YAAW,EAAGtP,KAAf;UACP,CAFD;AAKA,cAAMoP,WAAW1N,aAAa4N,YAAW,EAAGtP,KAAf;AAC7BsP,sBAAW,EAAGF,WAAWA;AACzB,iBAAOE,YAAW,EAAGtP;AAGrBkE,iBAAOsB,OACL8J,YAAW,GACXpP,YAAYkP,SAAQ,EAAGzD,YAAYoE,cAAc7Q,KAAD,CAArC,CAFb;AA/B6C,cAAA,eA6CzCoQ,YAAW,GARbgB,QArC2C,aAqC3CA,MACSC,cAtCkC,aAsC3C9L,SACAgK,eAvC2C,aAuC3CA,cACAjQ,iBAxC2C,aAwC3CA,eACAwR,aAzC2C,aAyC3CA,YACAC,WA1C2C,aA0C3CA,UACAC,eA3C2C,aA2C3CA,cACArE,qBA5C2C,aA4C3CA;AAIF,cAAM2E,kBAAkB9O,aAAawO,YAAD;AAGpC,cAAMtC,WAAUrP,SAAMwD,YACpB,SAAC8L,QAAOU,QAAW;AAEjB,gBAAI,CAACA,OAAO7K,MAAM;AAChBpD,sBAAQC,KAAK;gBAAEgO;cAAF,CAAb;AACA,oBAAM,IAAI/N,MAAM,0BAAV;YACP;AAGD,mBAAO,CAAA,EAAA,OACF4O,SAAQ,EAAGxD,eAEV/L,MAAMC,QAAQ0Q,gBAAe,CAA7B,IACAA,gBAAe,IACf,CAACA,gBAAe,CAAhB,CALC,EAMLvR,OACA,SAACwR,IAAGC,SAAJ;AAAA,qBAAgBA,QAAQD,IAAGlC,QAAQV,QAAOyB,YAAW,CAA9B,KAAqCmB;YAA5D,GACA5C,MARK;UAUR,GACD,CAACuB,UAAUoB,iBAAiBlB,WAA5B,CApBc;AAnD6B,cAAA,oBA2EZ/Q,SAAMoS,WAAW/C,UAASgD,QAAW,WAAA;AAAA,mBACpEhD,SAAQa,cAAc;cAAE/K,MAAMzF,QAAQC;YAAhB,CAAf;UAD6D,CAArC,GAA1B2S,eA3EsC,kBAAA,CAAA,GA2ExB1B,WA3EwB,kBAAA,CAAA;AAgF7C,cAAMtB,SAAQ3N,YAAW,CAAA,EAAA,OACnBkP,SAAQ,EAAGvD,oBADQ,CACYA,kBADZ,CAAA,GAEvBgF,cACA;YAAErN,UAAU8L,YAAW;UAAvB,CAHuB;AAMzBpL,iBAAOsB,OAAO8J,YAAW,GAAI;YAC3BzB,OAAAA;YACAsB;UAF2B,CAA7B;AAMA,cAAM1K,UAAUlG,SAAMuS,QACpB,WAAA;AAAA,mBACEtM,oBACEtE,YAAYkP,SAAQ,EAAG3K,SAAS8L,aAAa;cAC3C/M,UAAU8L,YAAW;YADsB,CAAlC,CADM;UADrB,GADc,CAQZF,UACAE,aACAiB,WAVY,EAAA,OAYTrQ,YAAYkP,SAAQ,EAAGtD,aAAa,CAAA,GAAI;YAAEtI,UAAU8L,YAAW;UAAvB,CAA7B,CAZF,CAAA;AAehBA,sBAAW,EAAG7K,UAAUA;AAIxB,cAAIqB,cAAavH,SAAMuS,QACrB,WAAA;AAAA,mBACE5Q,YAAYkP,SAAQ,EAAGtJ,YAAYhB,eAAeL,OAAD,GAAW;cAC1DjB,UAAU8L,YAAW;YADqC,CAAjD,EAER1K,IAAIC,oBAFP;UADF,GADe,CAMbJ,SACA2K,UACAE,WARa,EAAA,OAUVpP,YAAYkP,SAAQ,EAAGrD,gBAAgB,CAAA,GAAI;YAC5CvI,UAAU8L,YAAW;UADuB,CAAhC,CAVD,CAAA;AAejBA,sBAAW,EAAGxJ,aAAaA;AA9HkB,cAAA,iBAiIVvH,SAAMuS,QAAQ,WAAM;AACrD,gBAAIpI,QAAO,CAAA;AACX,gBAAIqI,YAAW,CAAA;AACf,gBAAMC,YAAW,CAAA;AAEjB,gBAAMC,kBAAe,CAAA,EAAA,OAAOnL,WAAP;AAErB,mBAAOmL,gBAAgBhK,QAAQ;AAC7B,kBAAMxD,UAASwN,gBAAgBC,MAAhB;AACfC,kCAAoB;gBAClBb,MAAAA;gBACA5H,MAAAA;gBACAqI,UAAAA;gBACAC,UAAAA;gBACAvN,QAAAA;gBACAwM;gBACAD;gBACAoB,kBAAkBhC,SAAQ,EAAGpD;gBAC7BsD;cATkB,CAAD;YAWpB;AAED,mBAAO,CAAC5G,OAAMqI,WAAUC,SAAjB;UACR,GAAE,CAAClL,aAAYwK,OAAML,UAAUD,YAAYZ,UAAUE,WAAnD,CAvBgC,GAA5B5G,OAjIsC,eAAA,CAAA,GAiIhCqI,WAjIgC,eAAA,CAAA,GAiItBC,WAjIsB,eAAA,CAAA;AA0J7C9M,iBAAOsB,OAAO8J,YAAW,GAAI;YAC3B5G;YACA2I,aAAW,CAAA,EAAA,OAAM3I,IAAN;YACXqI;YACAC;;UAJ2B,CAA7B;AAQAvQ,oBAAU2O,SAAQ,EAAGjD,sBAAsBmD,YAAW,CAA7C;AAKT,cAAIlD,kBAAiB7N,SAAMuS,QACzB,WAAA;AAAA,mBACE5Q,YAAYkP,SAAQ,EAAGhD,gBAAgBtG,aAAY;cACjDtC,UAAU8L,YAAW;YAD4B,CAAxC,EAER1K,IAAI,SAAA8B,IAAC;AAAA,qBAAIjB,eAAeiB,IAAGlI,cAAJ;YAAlB,CAFR;UADF,GADmB,CAMjB4Q,UACAtJ,aACAwJ,aACA9Q,cATiB,EAAA,OAWd0B,YAAYkP,SAAQ,EAAG/C,oBAAoB,CAAA,GAAI;YAChD7I,UAAU8L,YAAW;UAD2B,CAApC,CAXG,CAAA;AAkBrBxJ,UAAAA,cAAavH,SAAMuS,QAAQ,WAAM;AAC/B,gBAAMrM,WAAO,CAAA,EAAA,OAAO2H,eAAP;AAEbtG,YAAAA,YAAWnF,QAAQ,SAAA8C,SAAU;AAC3B,kBAAI,CAACgB,SAAQ6M,KAAK,SAAA5K,IAAC;AAAA,uBAAIA,GAAE1B,OAAOvB,QAAOuB;cAApB,CAAd,GAAuC;AAC1CP,gBAAAA,SAAQuC,KAAKvD,OAAb;cACD;YACF,CAJD;AAMA,mBAAOgB;UACR,GAAE,CAACqB,aAAYsG,eAAb,CAVU;AAWbkD,sBAAW,EAAGxJ,aAAaA;AAEgB;AACzC,gBAAMyL,mBAAmBzL,YAAWwD,OAAO,SAAC7F,SAAQyE,GAAM;AACxD,qBAAOpC,YAAW3E,UAAU,SAAAuF,IAAC;AAAA,uBAAIA,GAAE1B,OAAOvB,QAAOuB;cAApB,CAAtB,MAAkDkD;YAC1D,CAFwB;AAIzB,gBAAIqJ,iBAAiBtK,QAAQ;AAC3B3G,sBAAQC,KAAKuF,WAAb;AACA,oBAAM,IAAItF,MAAJ,6CACuC+Q,iBACxC3M,IAAI,SAAA8B,IAAC;AAAA,uBAAIA,GAAE1B;cAAN,CADmC,EAExC2F,KAAK,IAFmC,IADvC,8BAAA;YAKP;UACF;AAGD,cAAM3E,eAAezH,SAAMuS,QACzB,WAAA;AAAA,mBACE5Q,YACEkP,SAAQ,EAAGpJ,cACXH,iBAAiBuG,iBAAgB5N,cAAjB,GAChB8Q,YAAW,CAHF;UADb,GADmB,CAQjBF,UACAhD,iBACA5N,gBACA8Q,WAXiB,EAAA,OAadpP,YAAYkP,SAAQ,EAAG9C,kBAAkB,CAAA,GAAI;YAC9C9I,UAAU8L,YAAW;UADyB,CAAlC,CAbG,CAAA;AAkBrBA,sBAAW,EAAGtJ,eAAeA;AAG7B,cAAMM,UAAU/H,SAAMuS,QACpB,WAAA;AAAA,mBAAO9K,aAAaiB,SAASjB,aAAa,CAAD,EAAIM,UAAU,CAAA;UAAvD,GACA,CAACN,YAAD,CAFc;AAIhBsJ,sBAAW,EAAGhJ,UAAUA;AAGxBgJ,sBAAW,EAAGJ,cAAclJ,aAAa/G,OACvC,SAACuS,KAAKnL,aAAN;AAAA,mBAAA,CAAA,EAAA,OAA0BmL,KAAQnL,YAAYC,OAA9C;UAAA,GACA,CAAA,CAF0B;AAK5B7F,oBAAU2O,SAAQ,EAAG7C,6BAA6B+C,YAAW,CAApD;AAGT,cAAMmC,oBAAoBrF,gBACvB9C,OAAO,SAAA5C,IAAC;AAAA,mBAAIA,GAAEyH;UAAN,CADe,EAEvBvJ,IAAI,SAAA8B,IAAC;AAAA,mBAAIA,GAAE1B;UAAN,CAFkB,EAGvB0M,KAHuB,EAIvB/G,KAAK,GAJkB;AAM1ByB,UAAAA,kBAAiB7N,SAAMuS;YACrB,WAAA;AAAA,qBAAM1E,gBAAe9C,OAAO,SAAA5C,IAAC;AAAA,uBAAIA,GAAEyH;cAAN,CAAvB;YAAN;;YAEA,CAAC/B,iBAAgBqF,iBAAjB;UAHe;AAKjBnC,sBAAW,EAAGlD,iBAAiBA;AArQc,cAAA,wBA4QzCuF,sBAAsBrL,OAAD,GAHvBsL,uBAzQ2C,sBAAA,CAAA,GA0Q3CC,oBA1Q2C,sBAAA,CAAA,GA2Q3CC,uBA3Q2C,sBAAA,CAAA;AA8Q7CxC,sBAAW,EAAGsC,uBAAuBA;AACrCtC,sBAAW,EAAGuC,oBAAoBA;AAClCvC,sBAAW,EAAGwC,uBAAuBA;AAErCrR,oBAAU2O,SAAQ,EAAG5C,aAAa8C,YAAW,CAApC;AAIR,WAAA,EAAA,OAAIA,YAAW,EAAGJ,aAAgBI,YAAW,EAAGxJ,UAAhD,EAA4DnF,QAC3D,SAAA8C,SAAU;AAERA,YAAAA,QAAOsO,SAASxO,aAAa+L,YAAW,GAAI7L,OAAhB;AAG5BA,YAAAA,QAAOqJ,iBAAiB/M,eAAeqP,SAAQ,EAAGtC,gBAAgB;cAChEtJ,UAAU8L,YAAW;cACrB7L,QAAAA;YAFgE,CAA5B;AAMtCA,YAAAA,QAAOsJ,iBAAiBhN,eAAeqP,SAAQ,EAAGrC,gBAAgB;cAChEvJ,UAAU8L,YAAW;cACrB7L,QAAAA;YAFgE,CAA5B;UAIvC,CAhBF;AAmBD6L,sBAAW,EAAGtJ,eAAezH,SAAMuS,QACjC,WAAA;AAAA,mBACE9K,aAAasD,OAAO,SAACjD,aAAa6B,GAAM;AAEtC7B,0BAAYC,UAAUD,YAAYC,QAAQgD,OAAO,SAAA7F,SAAU;AACzD,oBAAM+E,UAAU,SAAVA,SAAUlC,UAAO;AAAA,yBACrBA,SAAQgD,OAAO,SAAA7F,SAAU;AACvB,wBAAIA,QAAO6C,SAAS;AAClB,6BAAOkC,SAAQ/E,QAAO6C,OAAR;oBACf;AACD,2BAAO7C,QAAO0K;kBACf,CALD,EAKGlH;gBANkB;AAOvB,oBAAIxD,QAAO6C,SAAS;AAClB,yBAAOkC,QAAQ/E,QAAO6C,OAAR;gBACf;AACD,uBAAO7C,QAAO0K;cACf,CAZqB;AAetB,kBAAI9H,YAAYC,QAAQW,QAAQ;AAC9BZ,4BAAYuG,sBAAsB7M,eAChCqP,SAAQ,EAAGxC,qBACX;kBAAEpJ,UAAU8L,YAAW;kBAAIjJ;kBAAagF,OAAOnD;gBAA/C,CAF8C;AAKhD7B,4BAAYwG,sBAAsB9M,eAChCqP,SAAQ,EAAGvC,qBACX;kBAAErJ,UAAU8L,YAAW;kBAAIjJ;kBAAagF,OAAOnD;gBAA/C,CAF8C;AAKhD,uBAAO;cACR;AAED,qBAAO;YACR,CAhCD;UADF,GAkCA,CAAClC,cAAcsJ,aAAaF,QAA5B,CAnC2B;AAsC7BE,sBAAW,EAAG0C,eAAe,CAAA,EAAA,OAAI1C,YAAW,EAAGtJ,YAAlB,EAAgCY,QAAhC;AAK7B0I,sBAAW,EAAG7C,aAAalO,SAAMwD,YAC/B,SAAAsD,KAAO;AACLA,gBAAI2H,cAAcjN,eAAeqP,SAAQ,EAAGpC,aAAa;cACvDxJ,UAAU8L,YAAW;cACrBjK;YAFuD,CAAzB;AAMhCA,gBAAI4M,WAAWnM,YAAWlB,IAAI,SAAAnB,SAAU;AACtC,kBAAMpF,QAAQgH,IAAI6M,OAAOzO,QAAOuB,EAAlB;AAEd,kBAAMyG,OAAO;gBACXhI,QAAAA;gBACA4B;gBACAhH;cAHW;AAOboN,mBAAKwB,eAAelN,eAAeqP,SAAQ,EAAGnC,cAAc;gBAC1DzJ,UAAU8L,YAAW;gBACrB7D;cAF0D,CAA1B;AAMlCA,mBAAKsG,SAASxO,aAAa+L,YAAW,GAAI7L,SAAQ;gBAChD4B;gBACAoG;gBACApN;cAHgD,CAAxB;AAM1B,qBAAOoN;YACR,CAvBc;AAyBfpG,gBAAI8M,QAAQ/F,gBAAexH,IAAI,SAAAnB,SAAM;AAAA,qBACnC4B,IAAI4M,SAASX,KAAK,SAAA7F,MAAI;AAAA,uBAAIA,KAAKhI,OAAOuB,OAAOvB,QAAOuB;cAA9B,CAAtB;YADmC,CAAzB;AAKZvE,sBAAU2O,SAAQ,EAAG3C,YAAYpH,KAAK;cAAE7B,UAAU8L,YAAW;YAAvB,CAA7B;UACV,GACD,CAACF,UAAUE,aAAaxJ,aAAYsG,eAApC,CAxCyB;AA2C3BkD,sBAAW,EAAG5C,gBAAgB3M,eAAeqP,SAAQ,EAAG1C,eAAe;YACrElJ,UAAU8L,YAAW;UADgD,CAA3B;AAI5CA,sBAAW,EAAG3C,oBAAoB5M,eAChCqP,SAAQ,EAAGzC,mBACX;YACEnJ,UAAU8L,YAAW;UADvB,CAF8C;AAOhD7O,oBAAU2O,SAAQ,EAAGlC,kBAAkBoC,YAAW,CAAzC;AAET,iBAAOA,YAAW;QACnB;AAED,iBAASqC,sBAAsBrL,SAAS8L,MAAU;AAAA,cAAVA,SAAU,QAAA;AAAVA,mBAAO;UAAG;AAChD,cAAIC,mBAAmB;AACvB,cAAIC,gBAAgB;AACpB,cAAIC,mBAAmB;AACvB,cAAIC,oBAAoB;AAExBlM,kBAAQ3F,QAAQ,SAAA8R,QAAU;AAAA,gBACTC,aAAeD,OAAxBnM;AAENmM,mBAAOE,YAAYP;AAEnB,gBAAIM,cAAcA,WAAWzL,QAAQ;AAAA,kBAAA,yBAM/B0K,sBAAsBe,YAAYN,IAAb,GAJvBQ,gBAFiC,uBAAA,CAAA,GAGjCC,aAHiC,uBAAA,CAAA,GAIjCC,gBAJiC,uBAAA,CAAA,GAKjCC,iBALiC,uBAAA,CAAA;AAOnCN,qBAAOG,gBAAgBA;AACvBH,qBAAOI,aAAaA;AACpBJ,qBAAOK,gBAAgBA;AACvBL,qBAAOM,iBAAiBA;YACzB,OAAM;AACLN,qBAAOG,gBAAgBH,OAAO9T;AAC9B8T,qBAAOI,aAAaG,KAAKC,IACvBD,KAAKE,IAAIT,OAAO9T,UAAU8T,OAAO/T,KAAjC,GACA+T,OAAO7T,QAFW;AAIpB6T,qBAAOK,gBAAgBL,OAAO7T;AAC9B6T,qBAAOM,iBAAiBN,OAAOU,YAAYV,OAAOI,aAAa;YAChE;AACD,gBAAIJ,OAAOtE,WAAW;AACpBiE,sBAAQK,OAAOI;AACfR,kCAAoBI,OAAOG;AAC3BN,+BAAiBG,OAAOI;AACxBN,kCAAoBE,OAAOK;AAC3BN,mCAAqBC,OAAOM;YAC7B;UACF,CAhCD;AAkCA,iBAAO,CAACV,kBAAkBC,eAAeC,kBAAkBC,iBAApD;QACR;AAED,iBAASrB,oBAAT/S,OAUG;AAAA,cATDkS,QASClS,MATDkS,MACA5H,OAQCtK,MARDsK,MACAqI,WAOC3S,MAPD2S,UACAC,WAMC5S,MAND4S,UACAvN,UAKCrF,MALDqF,QACAwM,WAIC7R,MAJD6R,UACAD,aAGC5R,MAHD4R,YACAoB,mBAEChT,MAFDgT,kBACA9B,cACClR,MADDkR;AAKA,cAAM8D,YAAY,SAAZA,WAAaC,aAAaC,UAAU3O,OAAWD,QAAQ6O,YAAe;AAAA,gBAAlC5O,UAAkC,QAAA;AAAlCA,sBAAQ;YAA0B;AAE1E,gBAAMuE,WAAWmK;AAEjB,gBAAMrO,OAAKiL,SAASoD,aAAaC,UAAU5O,MAAxB;AAEnB,gBAAIW,MAAM2L,SAAShM,IAAD;AAGlB,gBAAI,CAACK,KAAK;AACRA,oBAAM;gBACJL,IAAAA;gBACAkE;gBACAmC,OAAOiI;gBACP3O;gBACAwN,OAAO,CAAC,CAAA,CAAD;;cALH;AAUN9M,kBAAI8M,MAAMvN,MAAMgF;AAChBvE,kBAAI8M,MAAM7I,SAASM;AACnBvE,kBAAI8M,MAAMxR,UAAUiJ;AACpBvE,kBAAI8M,MAAM,CAAV,EAAalF,eAAerD;AAG5BvE,kBAAI6M,SAAS,CAAA;AAGbqB,yBAAWvM,KAAK3B,GAAhB;AAEA0L,uBAAS/J,KAAK3B,GAAd;AAEA2L,uBAAShM,IAAD,IAAOK;AAGfA,kBAAImO,kBAAkBxD,WAAWqD,aAAaC,QAAd;AAGhC,kBAAIjO,IAAImO,iBAAiB;AACvB,oBAAMpK,UAAU,CAAA;AAChB/D,oBAAImO,gBAAgB7S,QAAQ,SAAC+F,IAAGwB,GAAJ;AAAA,yBAC1BkL,WAAU1M,IAAGwB,GAAGvD,QAAQ,GAAGU,KAAK+D,OAAvB;gBADiB,CAA5B;AAIA/D,oBAAI+D,UAAUA;cACf;YACF,WAAU/D,IAAI+D,SAAS;AAItB/D,kBAAImO,gBAAgB7S,QAAQ,SAAC+F,IAAGwB,GAAJ;AAAA,uBAAUkL,WAAU1M,IAAGwB,GAAGvD,QAAQ,GAAGU,GAAlB;cAAnB,CAA5B;YACD;AAGD,gBAAI5B,QAAOwB,UAAU;AACnBI,kBAAI6M,OAAOzO,QAAOuB,EAAlB,IAAwBvB,QAAOwB,SAC7BoO,aACAC,UACAjO,KACAkO,YACAjD,KALsB;YAOzB;AAGDjL,gBAAI6M,OAAOzO,QAAOuB,EAAlB,IAAwB9E,YACtBkR,kBACA/L,IAAI6M,OAAOzO,QAAOuB,EAAlB,GACA;cACEK;cACA5B,QAAAA;cACAD,UAAU8L,YAAW;YAHvB,GAKA,IARiC;UAUpC;AAEDgB,UAAAA,MAAK3P,QAAQ,SAAC0S,aAAaC,UAAd;AAAA,mBACXF,UAAUC,aAAaC,UAAU,GAAG1C,QAAWlI,IAAtC;UADE,CAAb;QAGD;ACpkBDzK,gBAAQwV,gBAAgB;AACxBxV,gBAAQyV,oBAAoB;AAC5BzV,gBAAQ0V,wBAAwB;AAEhC,YAAaC,cAAc,SAAdA,aAAc5T,QAAS;AAClCA,UAAAA,OAAM6T,gCAAgC,CAACC,oCAAD;AACtC9T,UAAAA,OAAM+T,4BAA4B,CAACC,gCAAD;AAClChU,UAAAA,OAAM4L,cAAc5E,KAAK4G,SAAzB;AACA5N,UAAAA,OAAMwM,YAAYxF,KAAKwF,aAAvB;AACAxM,UAAAA,OAAMyM,WAAWzF,KAAKyF,UAAtB;QACD;AAEDmH,oBAAY5S,aAAa;AAEzB,YAAM8S,uCAAuC,SAAvCA,sCAAwC5U,OAADd,OAAA;AAAA,cAAUoF,WAAVpF,MAAUoF;AAAV,iBAAyB,CACpEtE,OACA;YACE+U,SAAS,SAAA,QAAAjM,IAAK;AACZxE,uBAASmQ,sBAAT;YACD;YACDvU,OAAO;cACL0I,QAAQ;YADH;YAGPsG,OAAO;UAPT,CAFoE;QAAzB;AAa7C,YAAM4F,mCAAmC,SAAnCA,kCAAoC9U,OAAD4D,QAAA;AAAA,cAAUuC,MAAVvC,OAAUuC;AAAV,iBAAoB,CAC3DnG,OACA;YACE+U,SAAS,SAAA,UAAM;AACb5O,kBAAIqO,kBAAJ;YACD;YACDtU,OAAO;cACL0I,QAAQ;YADH;YAGPsG,OAAO;UAPT,CAF2D;QAApB;AAczC,iBAASR,UAAQC,QAAOU,QAAQC,eAAehL,UAAU;AACvD,cAAI+K,OAAO7K,SAASzF,QAAQC,MAAM;AAChC,mBAAAsB,UAAA;cACEoJ,UAAU,CAAA;YADZ,GAEKiF,MAFL;UAID;AAED,cAAIU,OAAO7K,SAASzF,QAAQwV,eAAe;AACzC,mBAAAjU,UAAA,CAAA,GACKqO,QADL;cAEEjF,UAAUpF,SAASiL,aAAa7F,YAAY,CAAA;YAF9C,CAAA;UAID;AAED,cAAI2F,OAAO7K,SAASzF,QAAQ0V,uBAAuB;AAAA,gBACzCtV,QAAUkQ,OAAVlQ;AADyC,gBAEzC2S,WAAaxN,SAAbwN;AAER,gBAAMkD,oBACJhQ,OAAOiQ,KAAKnD,QAAZ,EAAsB/J,WAAW/C,OAAOiQ,KAAKtG,OAAMjF,QAAlB,EAA4B3B;AAE/D,gBAAMmN,YAAY,OAAO/V,UAAU,cAAcA,QAAQ,CAAC6V;AAE1D,gBAAIE,WAAW;AACb,kBAAMxL,WAAW,CAAA;AAEjB1E,qBAAOiQ,KAAKnD,QAAZ,EAAsBrQ,QAAQ,SAAA0T,OAAS;AACrCzL,yBAASyL,KAAD,IAAU;cACnB,CAFD;AAIA,qBAAA7U,UAAA,CAAA,GACKqO,QADL;gBAEEjF;cAFF,CAAA;YAID;AAED,mBAAApJ,UAAA,CAAA,GACKqO,QADL;cAEEjF,UAAU,CAAA;YAFZ,CAAA;UAID;AAED,cAAI2F,OAAO7K,SAASzF,QAAQyV,mBAAmB;AAAA,gBACrC1O,OAA2BuJ,OAA3BvJ,IAAWsP,cAAgB/F,OAAvBlQ;AACZ,gBAAMkW,UAAS1G,OAAMjF,SAAS5D,IAAf;AAEf,gBAAMwP,cACJ,OAAOF,gBAAgB,cAAcA,cAAc,CAACC;AAEtD,gBAAI,CAACA,WAAUC,aAAa;AAAA,kBAAAC;AAC1B,qBAAAjV,UAAA,CAAA,GACKqO,QADL;gBAEEjF,UAAQpJ,UAAA,CAAA,GACHqO,OAAMjF,WADH6L,aAAA,CAAA,GAAAA,WAELzP,IAFK,IAEA,MAFAyP,WAAA;cAFV,CAAA;YAOD,WAAUF,WAAU,CAACC,aAAa;AAAA,kBAAA,kBACJ3G,OAAMjF,UAArB8L,IADmB,gBACxB1P,IADwB,GACb1F,OADaC,gCAAA,iBAAA,CACxByF,IADwB,EAAA,IAAA2P,eAAA,CAAA;AAEjC,qBAAAnV,UAAA,CAAA,GACKqO,QADL;gBAEEjF,UAAUtJ;cAFZ,CAAA;YAID,OAAM;AACL,qBAAOuO;YACR;UACF;QACF;AAED,iBAASrB,cAAYhJ,UAAU;AAAA,cAE3B8M,QAWE9M,SAXF8M,MACA5H,OAUElF,SAVFkF,MACAsI,WASExN,SATFwN,UAJ2B,wBAazBxN,SARFmF,mBAAAA,oBAL2B,0BAAA,SAKP,aALO,uBAAA,wBAazBnF,SAPFoR,sBAAAA,uBAN2B,0BAAA,SAMJ,OANI,uBAAA,wBAazBpR,SANFqF,eAAAA,gBAP2B,0BAAA,SAOX,OAPW,uBAAA,wBAazBrF,SALFqR,mBAAAA,oBAR2B,0BAAA,SAQP,OARO,uBAS3BzF,WAIE5L,SAJF4L,UACAtO,UAGE0C,SAHF1C,SACS8H,WAEPpF,SAFFqK,MAASjF,UACTuG,WACE3L,SADF2L;AAGFtO,4BACEC,SACA,CAAC,aAAa,cAAc,mBAAmB,iBAA/C,GACA,aAHe;AAMjB,cAAMgU,uBAAuBpT,aAAamT,iBAAD;AAEzC,cAAIX,oBAAoB7D,QACtBnM,OAAOiQ,KAAKnD,QAAZ,EAAsB/J,UAAU/C,OAAOiQ,KAAKvL,QAAZ,EAAsB3B,MADzB;AAI/B,cAAIiN,mBAAmB;AACrB,gBAAIhQ,OAAOiQ,KAAKnD,QAAZ,EAAsBvK,KAAK,SAAAzB,MAAE;AAAA,qBAAI,CAAC4D,SAAS5D,IAAD;YAAb,CAA7B,GAAiD;AACnDkP,kCAAoB;YACrB;UACF;AAGD9R,iCAAuB,WAAM;AAC3B,gBAAI0S,qBAAoB,GAAI;AAC1B3F,uBAAS;gBAAEzL,MAAMzF,QAAQwV;cAAhB,CAAD;YACT;UACF,GAAE,CAACtE,UAAUmB,KAAX,CAJmB;AAMtB,cAAMoD,oBAAoBnV,SAAMwD,YAC9B,SAACiD,MAAI3G,OAAU;AACb8Q,qBAAS;cAAEzL,MAAMzF,QAAQyV;cAAmB1O,IAAAA;cAAI3G;YAAvC,CAAD;UACT,GACD,CAAC8Q,QAAD,CAJwB;AAO1B,cAAMwE,wBAAwBpV,SAAMwD,YAClC,SAAA1D,OAAK;AAAA,mBAAI8Q,SAAS;cAAEzL,MAAMzF,QAAQ0V;cAAuBtV;YAAvC,CAAD;UAAZ,GACL,CAAC8Q,QAAD,CAF4B;AAK9B,cAAMrG,eAAevK,SAAMuS,QAAQ,WAAM;AACvC,gBAAI8D,sBAAsB;AACxB,qBAAOnM,WAAWC,MAAM;gBAAEC;gBAAmBC;gBAAUC;cAA/B,CAAP;YAClB;AAED,mBAAOH;UACR,GAAE,CAACkM,sBAAsBlM,MAAMC,mBAAmBC,UAAUC,aAA1D,CANkB;AAQrB,cAAMkM,gBAAgBxW,SAAMuS,QAAQ,WAAA;AAAA,mBAAMkE,kBAAkBpM,QAAD;UAAvB,GAAmC,CACrEA,QADqE,CAAjD;AAItB,cAAM0G,cAAc5N,aAAa8B,QAAD;AAEhC,cAAMqQ,gCAAgC9T,eACpCqP,SAAQ,EAAGyE,+BACX;YAAErQ,UAAU8L,YAAW;UAAvB,CAFkD;AAKpDpL,iBAAOsB,OAAOhC,UAAU;YACtByR,iBAAiBvM;YACjBI;YACAJ,MAAMI;YACNiM;YACAb;YACAR;YACAC;YACAE;UARsB,CAAxB;QAUD;AAED,iBAASpH,WAAWpH,KAApB,OAA+D;AAAA,cAAxB+J,WAAwB,MAApC5L,SAAY4L,UAAY5L,WAAY,MAAZA;AACjD6B,cAAIqO,oBAAoB,SAAA9L,KAAG;AAAA,mBAAIpE,SAASkQ,kBAAkBrO,IAAIL,IAAI4C,GAAnC;UAAJ;AAE3BvC,cAAI0O,4BAA4BhU,eAC9BqP,SAAQ,EAAG2E,2BACX;YACEvQ;YACA6B;UAFF,CAF4C;QAO/C;AAED,iBAAS2P,kBAAkBpM,UAAU;AACnC,cAAIsM,WAAW;AAEfhR,iBAAOiQ,KAAKvL,QAAZ,EAAsBjI,QAAQ,SAAAqE,MAAM;AAClC,gBAAMmQ,UAAUnQ,KAAGI,MAAM,GAAT;AAChB8P,uBAAWlC,KAAKE,IAAIgC,UAAUC,QAAQlO,MAA3B;UACZ,CAHD;AAKA,iBAAOiO;QACR;ACpOM,YAAMzL,OAAO,SAAPA,MAAQf,MAAM0M,KAAKC,aAAgB;AAC9C3M,iBAAOA,KAAKY,OAAO,SAAAjE,KAAO;AACxB,mBAAO+P,IAAI3O,KAAK,SAAAzB,MAAM;AACpB,kBAAMsQ,WAAWjQ,IAAI6M,OAAOlN,IAAX;AACjB,qBAAOyF,OAAO6K,QAAD,EACVC,YADI,EAEJjR,SAASmG,OAAO4K,WAAD,EAAcE,YAApB,CAFL;YAGR,CALM;UAMR,CAPM;AAQP,iBAAO7M;QACR;AAEDe,aAAKE,aAAa,SAAA9B,KAAG;AAAA,iBAAI,CAACA;QAAL;AAEd,YAAM2N,YAAY,SAAZA,WAAa9M,MAAM0M,KAAKC,aAAgB;AACnD,iBAAO3M,KAAKY,OAAO,SAAAjE,KAAO;AACxB,mBAAO+P,IAAI3O,KAAK,SAAAzB,MAAM;AACpB,kBAAMsQ,WAAWjQ,IAAI6M,OAAOlN,IAAX;AACjB,qBAAOsQ,aAAa1E,SAChBnG,OAAO6K,QAAD,EAAWC,YAAjB,MAAmC9K,OAAO4K,WAAD,EAAcE,YAApB,IACnC;YACL,CALM;UAMR,CAPM;QAQR;AAEDC,kBAAU7L,aAAa,SAAA9B,KAAG;AAAA,iBAAI,CAACA;QAAL;AAEnB,YAAM4N,gBAAgB,SAAhBA,eAAiB/M,MAAM0M,KAAKC,aAAgB;AACvD,iBAAO3M,KAAKY,OAAO,SAAAjE,KAAO;AACxB,mBAAO+P,IAAI3O,KAAK,SAAAzB,MAAM;AACpB,kBAAMsQ,WAAWjQ,IAAI6M,OAAOlN,IAAX;AACjB,qBAAOsQ,aAAa1E,SAChBnG,OAAO6K,QAAD,MAAe7K,OAAO4K,WAAD,IAC3B;YACL,CALM;UAMR,CAPM;QAQR;AAEDI,sBAAc9L,aAAa,SAAA9B,KAAG;AAAA,iBAAI,CAACA;QAAL;AAEvB,YAAMvD,WAAW,SAAXA,UAAYoE,MAAM0M,KAAKC,aAAgB;AAClD,iBAAO3M,KAAKY,OAAO,SAAAjE,KAAO;AACxB,mBAAO+P,IAAI3O,KAAK,SAAAzB,MAAM;AACpB,kBAAMsQ,WAAWjQ,IAAI6M,OAAOlN,IAAX;AACjB,qBAAOsQ,SAAShR,SAAS+Q,WAAlB;YACR,CAHM;UAIR,CALM;QAMR;AAED/Q,iBAASqF,aAAa,SAAA9B,KAAG;AAAA,iBAAI,CAACA,OAAO,CAACA,IAAIZ;QAAjB;AAElB,YAAMyO,cAAc,SAAdA,aAAehN,MAAM0M,KAAKC,aAAgB;AACrD,iBAAO3M,KAAKY,OAAO,SAAAjE,KAAO;AACxB,mBAAO+P,IAAI3O,KAAK,SAAAzB,MAAM;AACpB,kBAAMsQ,WAAWjQ,IAAI6M,OAAOlN,IAAX;AACjB,qBACEsQ,YACAA,SAASrO,UACToO,YAAYM,MAAM,SAAA9N,KAAG;AAAA,uBAAIyN,SAAShR,SAASuD,GAAlB;cAAJ,CAArB;YAEH,CAPM;UAQR,CATM;QAUR;AAED6N,oBAAY/L,aAAa,SAAA9B,KAAG;AAAA,iBAAI,CAACA,OAAO,CAACA,IAAIZ;QAAjB;AAErB,YAAM2O,eAAe,SAAfA,cAAgBlN,MAAM0M,KAAKC,aAAgB;AACtD,iBAAO3M,KAAKY,OAAO,SAAAjE,KAAO;AACxB,mBAAO+P,IAAI3O,KAAK,SAAAzB,MAAM;AACpB,kBAAMsQ,WAAWjQ,IAAI6M,OAAOlN,IAAX;AACjB,qBACEsQ,YACAA,SAASrO,UACToO,YAAY5O,KAAK,SAAAoB,KAAG;AAAA,uBAAIyN,SAAShR,SAASuD,GAAlB;cAAJ,CAApB;YAEH,CAPM;UAQR,CATM;QAUR;AAED+N,qBAAajM,aAAa,SAAA9B,KAAG;AAAA,iBAAI,CAACA,OAAO,CAACA,IAAIZ;QAAjB;AAEtB,YAAM4O,gBAAgB,SAAhBA,eAAiBnN,MAAM0M,KAAKC,aAAgB;AACvD,iBAAO3M,KAAKY,OAAO,SAAAjE,KAAO;AACxB,mBAAO+P,IAAI3O,KAAK,SAAAzB,MAAM;AACpB,kBAAMsQ,WAAWjQ,IAAI6M,OAAOlN,IAAX;AACjB,qBAAOqQ,YAAY/Q,SAASgR,QAArB;YACR,CAHM;UAIR,CALM;QAMR;AAEDO,sBAAclM,aAAa,SAAA9B,KAAG;AAAA,iBAAI,CAACA,OAAO,CAACA,IAAIZ;QAAjB;AAEvB,YAAM6O,QAAQ,SAARA,OAASpN,MAAM0M,KAAKC,aAAgB;AAC/C,iBAAO3M,KAAKY,OAAO,SAAAjE,KAAO;AACxB,mBAAO+P,IAAI3O,KAAK,SAAAzB,MAAM;AACpB,kBAAMsQ,WAAWjQ,IAAI6M,OAAOlN,IAAX;AACjB,qBAAOsQ,aAAaD;YACrB,CAHM;UAIR,CALM;QAMR;AAEDS,cAAMnM,aAAa,SAAA9B,KAAG;AAAA,iBAAI,OAAOA,QAAQ;QAAnB;AAEf,YAAMkO,SAAS,SAATA,QAAUrN,MAAM0M,KAAKC,aAAgB;AAChD,iBAAO3M,KAAKY,OAAO,SAAAjE,KAAO;AACxB,mBAAO+P,IAAI3O,KAAK,SAAAzB,MAAM;AACpB,kBAAMsQ,WAAWjQ,IAAI6M,OAAOlN,IAAX;AAEjB,qBAAOsQ,YAAYD;YACpB,CAJM;UAKR,CANM;QAOR;AAEDU,eAAOpM,aAAa,SAAA9B,KAAG;AAAA,iBAAIA,OAAO;QAAX;AAEhB,YAAMmO,UAAU,SAAVA,SAAWtN,MAAM0M,KAAKC,aAAgB;AAAA,cAAAjX,QAChCiX,eAAe,CAAA,GAA3BpC,OAD4C7U,MAAA,CAAA,GACvC8U,OADuC9U,MAAA,CAAA;AAGjD6U,UAAAA,OAAM,OAAOA,SAAQ,WAAWA,OAAM;AACtCC,UAAAA,OAAM,OAAOA,SAAQ,WAAWA,OAAM+C;AAEtC,cAAIhD,OAAMC,MAAK;AACb,gBAAMgD,OAAOjD;AACbA,YAAAA,OAAMC;AACNA,YAAAA,OAAMgD;UACP;AAED,iBAAOxN,KAAKY,OAAO,SAAAjE,KAAO;AACxB,mBAAO+P,IAAI3O,KAAK,SAAAzB,MAAM;AACpB,kBAAMsQ,WAAWjQ,IAAI6M,OAAOlN,IAAX;AACjB,qBAAOsQ,YAAYrC,QAAOqC,YAAYpC;YACvC,CAHM;UAIR,CALM;QAMR;AAED8C,gBAAQrM,aAAa,SAAA9B,KAAG;AAAA,iBACtB,CAACA,OAAQ,OAAOA,IAAI,CAAD,MAAQ,YAAY,OAAOA,IAAI,CAAD,MAAQ;QADnC;;;;;;;;;;;;;;ACrHxB5J,gBAAQkY,eAAe;AACvBlY,gBAAQmY,YAAY;AACpBnY,gBAAQoY,gBAAgB;AAExB,YAAaC,aAAa,SAAbA,YAAatW,QAAS;AACjCA,UAAAA,OAAM4L,cAAc5E,KAAK4G,SAAzB;AACA5N,UAAAA,OAAMwM,YAAYxF,KAAKwF,aAAvB;QACD;AAED8J,mBAAWtV,aAAa;AAExB,iBAAS4M,UAAQC,QAAOU,QAAQC,eAAehL,UAAU;AACvD,cAAI+K,OAAO7K,SAASzF,QAAQC,MAAM;AAChC,mBAAAsB,UAAA;cACE+W,SAAS,CAAA;YADX,GAEK1I,MAFL;UAID;AAED,cAAIU,OAAO7K,SAASzF,QAAQkY,cAAc;AACxC,mBAAA3W,UAAA,CAAA,GACKqO,QADL;cAEE0I,SAAS/S,SAASiL,aAAa8H,WAAW,CAAA;YAF5C,CAAA;UAID;AAED,cAAIhI,OAAO7K,SAASzF,QAAQmY,WAAW;AAAA,gBAC7BzH,WAA0BJ,OAA1BI,UAAU0G,cAAgB9G,OAAhB8G;AADmB,gBAE7BvP,cAA6CtC,SAA7CsC,YAAyByD,kBAAoB/F,SAAjCgG;AAEpB,gBAAM/F,UAASqC,YAAWwL,KAAK,SAAA5K,IAAC;AAAA,qBAAIA,GAAE1B,OAAO2J;YAAb,CAAjB;AAEf,gBAAI,CAAClL,SAAQ;AACX,oBAAM,IAAIjD,MAAJ,mDAC6CmO,QAD7C;YAGP;AAED,gBAAM6H,eAAenN,gBACnB5F,QAAO6F,QACPC,mBAAmB,CAAA,GACnBC,WAHkC;AAMpC,gBAAMiN,iBAAiB5I,OAAM0I,QAAQjF,KAAK,SAAA5K,IAAC;AAAA,qBAAIA,GAAE1B,OAAO2J;YAAb,CAApB;AAEvB,gBAAM+H,YAAYnV,iBAChB8T,aACAoB,kBAAkBA,eAAepY,KAFD;AAMlC,gBAAIqL,uBAAuB8M,aAAa7M,YAAY+M,WAAWjT,OAArC,GAA8C;AACtE,qBAAAjE,UAAA,CAAA,GACKqO,QADL;gBAEE0I,SAAS1I,OAAM0I,QAAQjN,OAAO,SAAA5C,IAAC;AAAA,yBAAIA,GAAE1B,OAAO2J;gBAAb,CAAtB;cAFX,CAAA;YAID;AAED,gBAAI8H,gBAAgB;AAClB,qBAAAjX,UAAA,CAAA,GACKqO,QADL;gBAEE0I,SAAS1I,OAAM0I,QAAQ3R,IAAI,SAAA8B,IAAK;AAC9B,sBAAIA,GAAE1B,OAAO2J,UAAU;AACrB,2BAAO;sBAAE3J,IAAI2J;sBAAUtQ,OAAOqY;oBAAvB;kBACR;AACD,yBAAOhQ;gBACR,CALQ;cAFX,CAAA;YASD;AAED,mBAAAlH,UAAA,CAAA,GACKqO,QADL;cAEE0I,SAAO,CAAA,EAAA,OAAM1I,OAAM0I,SAAZ,CAAqB;gBAAEvR,IAAI2J;gBAAUtQ,OAAOqY;cAAvB,CAArB,CAAA;YAFT,CAAA;UAID;AAED,cAAInI,OAAO7K,SAASzF,QAAQoY,eAAe;AAAA,gBACjCE,UAAYhI,OAAZgI;AADiC,gBAEjCzQ,cAA6CtC,SAA7CsC,YAAyByD,mBAAoB/F,SAAjCgG;AAEpB,mBAAAhK,UAAA,CAAA,GACKqO,QADL;;cAGE0I,SAAShV,iBAAiBgV,SAAS1I,OAAM0I,OAAhB,EAAyBjN,OAAO,SAAAA,QAAU;AACjE,oBAAM7F,UAASqC,YAAWwL,KAAK,SAAA5K,IAAC;AAAA,yBAAIA,GAAE1B,OAAOsE,OAAOtE;gBAApB,CAAjB;AACf,oBAAMwR,gBAAenN,gBACnB5F,QAAO6F,QACPC,oBAAmB,CAAA,GACnBC,WAHkC;AAMpC,oBACEE,uBAAuB8M,cAAa7M,YAAYL,OAAOjL,OAAOoF,OAAxC,GACtB;AACA,yBAAO;gBACR;AACD,uBAAO;cACR,CAdQ;YAHX,CAAA;UAmBD;QACF;AAED,iBAAS+I,cAAYhJ,UAAU;AAAA,cAE3B8M,QAYE9M,SAZF8M,MACA5H,OAWElF,SAXFkF,MACAqI,WAUEvN,SAVFuN,UACAC,WASExN,SATFwN,UACAlL,cAQEtC,SARFsC,YACayD,kBAOX/F,SAPFgG,aACAmN,gBAMEnT,SANFmT,eAR2B,wBAczBnT,SALFoT,kBAAAA,mBAT2B,0BAAA,SASR,QATQ,uBAU3BC,iBAIErT,SAJFqT,gBACSN,UAGP/S,SAHFqK,MAAS0I,SACTpH,WAEE3L,SAFF2L,UAZ2B,wBAczB3L,SADFsT,kBAAAA,mBAb2B,0BAAA,SAaR,OAbQ;AAgB7B,cAAMV,YAAY7X,SAAMwD,YACtB,SAAC4M,UAAU0G,aAAgB;AACzBlG,qBAAS;cAAEzL,MAAMzF,QAAQmY;cAAWzH;cAAU0G;YAArC,CAAD;UACT,GACD,CAAClG,QAAD,CAJgB;AAOlB,cAAMkH,gBAAgB9X,SAAMwD,YAC1B,SAAAwU,UAAW;AACTpH,qBAAS;cACPzL,MAAMzF,QAAQoY;cACdE,SAAAA;YAFO,CAAD;UAIT,GACD,CAACpH,QAAD,CAPoB;AAUtBrJ,UAAAA,YAAWnF,QAAQ,SAAA8C,SAAU;AAAA,gBAEzBuB,OAIEvB,QAJFuB,IACAC,WAGExB,QAHFwB,UACkB8R,yBAEhBtT,QAFFmT,kBACgBI,uBACdvT,QADFoT;AAIFpT,YAAAA,QAAOwT,YAAYhS,WACfgD,gBACE+O,yBAAyB,OAAO,QAAQpG,QACxCiG,mBAAmB,OAAO,QAAQjG,QAClC,IAHa,IAKf3I,gBAAgB8O,wBAAwBH,kBAAkB,KAA3C;AAGnBnT,YAAAA,QAAO2S,YAAY,SAAAvO,KAAG;AAAA,qBAAIuO,UAAU3S,QAAOuB,IAAI6C,GAAZ;YAAb;AAItB,gBAAMqP,QAAQX,QAAQjF,KAAK,SAAA5K,IAAC;AAAA,qBAAIA,GAAE1B,OAAOA;YAAb,CAAd;AACdvB,YAAAA,QAAO4R,cAAc6B,SAASA,MAAM7Y;UACrC,CAxBD;AAjC6B,cAAA,iBA+DzBE,SAAMuS,QAAQ,WAAM;AACtB,gBAAI6F,iBAAiB,CAACJ,QAAQtP,QAAQ;AACpC,qBAAO,CAACyB,MAAMqI,UAAUC,QAAjB;YACR;AAED,gBAAMmG,oBAAmB,CAAA;AACzB,gBAAMC,oBAAmB,CAAA;AAGzB,gBAAMC,aAAa,SAAbA,YAAc3O,OAAM/D,OAAc;AAAA,kBAAdA,UAAc,QAAA;AAAdA,wBAAQ;cAAM;AACtC,kBAAI2S,gBAAe5O;AAEnB4O,cAAAA,gBAAef,QAAQtX,OACrB,SAACsY,eAADnZ,OAAyD;AAAA,oBAAnCuQ,WAAmCvQ,MAAvC4G,IAAqBqQ,cAAkBjX,MAAzBC;AAE9B,oBAAMoF,UAASqC,YAAWwL,KAAK,SAAA5K,IAAC;AAAA,yBAAIA,GAAE1B,OAAO2J;gBAAb,CAAjB;AAEf,oBAAI,CAAClL,SAAQ;AACX,yBAAO8T;gBACR;AAED,oBAAI5S,UAAU,GAAG;AACflB,kBAAAA,QAAO+T,kBAAkBD;gBAC1B;AAED,oBAAMf,eAAenN,gBACnB5F,QAAO6F,QACPC,mBAAmB,CAAA,GACnBC,WAHkC;AAMpC,oBAAI,CAACgN,cAAc;AACjBlW,0BAAQmX,KAAR,oEACoEhU,QAAOuB,KAD3E,GAAA;AAGA,yBAAOuS;gBACR;AAID9T,gBAAAA,QAAO6T,eAAed,aACpBe,eACA,CAAC5I,QAAD,GACA0G,WAHgC;AAMlC,uBAAO5R,QAAO6T;cACf,GACD5O,KApCa;AA2Cf4O,cAAAA,cAAa3W,QAAQ,SAAA0E,KAAO;AAC1B8R,gBAAAA,kBAAiBnQ,KAAK3B,GAAtB;AACA+R,gBAAAA,kBAAiB/R,IAAIL,EAAL,IAAWK;AAC3B,oBAAI,CAACA,IAAI+D,SAAS;AAChB;gBACD;AAED/D,oBAAI+D,UACF/D,IAAI+D,WAAW/D,IAAI+D,QAAQnC,SAAS,IAChCoQ,YAAWhS,IAAI+D,SAASzE,QAAQ,CAAtB,IACVU,IAAI+D;cACX,CAXD;AAaA,qBAAOkO;YACR;AAED,mBAAO,CAACD,WAAW3O,IAAD,GAAQyO,mBAAkBC,iBAArC;UACR,GAAE,CACDT,eACAJ,SACA7N,MACAqI,UACAC,UACAlL,aACAyD,eAPC,CAxEC,GAHF+N,eA5D2B,eAAA,CAAA,GA6D3BH,mBA7D2B,eAAA,CAAA,GA8D3BC,mBA9D2B,eAAA,CAAA;AAiJ7B7Y,UAAAA,SAAMuS,QAAQ,WAAM;AAGlB,gBAAM4G,qBAAqB5R,YAAWwD,OACpC,SAAA7F,SAAM;AAAA,qBAAI,CAAC8S,QAAQjF,KAAK,SAAA5K,IAAC;AAAA,uBAAIA,GAAE1B,OAAOvB,QAAOuB;cAApB,CAAd;YAAL,CADmB;AAM3B0S,+BAAmB/W,QAAQ,SAAA8C,SAAU;AACnCA,cAAAA,QAAO+T,kBAAkBF;AACzB7T,cAAAA,QAAO6T,eAAeA;YACvB,CAHD;UAID,GAAE,CAACA,cAAcf,SAASzQ,WAAxB,CAbH;AAeA,cAAM6R,sBAAsBjW,aAAaoV,gBAAD;AAExC1U,iCAAuB,WAAM;AAC3B,gBAAIuV,oBAAmB,GAAI;AACzBxI,uBAAS;gBAAEzL,MAAMzF,QAAQkY;cAAhB,CAAD;YACT;UACF,GAAE,CAAChH,UAAUwH,gBAAgB,OAAOrG,KAAlC,CAJmB;AAMtBpM,iBAAOsB,OAAOhC,UAAU;YACtBgU,iBAAiB9O;YACjBkP,qBAAqB7G;YACrB8G,qBAAqB7G;YACrBsG;YACAH;YACAC;YACA1O,MAAM4O;YACNvG,UAAUoG;YACVnG,UAAUoG;YACVhB;YACAC;UAXsB,CAAxB;QAaD;AC5RDpY,gBAAQ6Z,oBAAoB;AAC5B7Z,gBAAQ8Z,kBAAkB;AAE1B,YAAaC,kBAAkB,SAAlBA,iBAAkBhY,QAAS;AACtCA,UAAAA,OAAM4L,cAAc5E,KAAK4G,SAAzB;AACA5N,UAAAA,OAAMwM,YAAYxF,KAAKwF,aAAvB;QACD;AAEDwL,wBAAgBhX,aAAa;AAE7B,iBAAS4M,UAAQC,QAAOU,QAAQC,eAAehL,UAAU;AACvD,cAAI+K,OAAO7K,SAASzF,QAAQ6Z,mBAAmB;AAC7C,mBAAAtY,UAAA,CAAA,GACKqO,QADL;cAEEoK,cAAczU,SAASiL,aAAawJ,gBAAgBrH;YAFtD,CAAA;UAID;AAED,cAAIrC,OAAO7K,SAASzF,QAAQ8Z,iBAAiB;AAAA,gBACnC1C,cAAgB9G,OAAhB8G;AADmC,gBAEnC9L,kBAAoB/F,SAApB+F;AAER,gBAAMiN,eAAenN,gBACnB7F,SAASyU,cACT1O,mBAAmB,CAAA,GACnBC,WAHkC;AAMpC,gBAAMkN,YAAYnV,iBAAiB8T,aAAaxH,OAAMoK,YAApB;AAGlC,gBAAIvO,uBAAuB8M,aAAa7M,YAAY+M,SAA1B,GAAsC;AAAA,kBACtDuB,eAA8CpK,OAA9CoK,cAAiBC,2BADqC3Y,gCACRsO,QADQ,CAAA,cAAA,CAAA;AAE9D,qBAAOqK;YACR;AAED,mBAAA1Y,UAAA,CAAA,GACKqO,QADL;cAEEoK,cAAcvB;YAFhB,CAAA;UAID;QACF;AAED,iBAASlK,cAAYhJ,UAAU;AAAA,cAE3B8M,QAYE9M,SAZF8M,MACA5H,OAWElF,SAXFkF,MACAqI,WAUEvN,SAVFuN,UACAC,WASExN,SATFwN,UACAlL,cAQEtC,SARFsC,YACayD,kBAOX/F,SAPFgG,aACAyO,eAMEzU,SANFyU,cACAE,qBAKE3U,SALF2U,oBACuBC,oBAIrB5U,SAJFqK,MAASoK,cACT9I,WAGE3L,SAHF2L,UAX2B,wBAczB3L,SAFF6U,uBAAAA,wBAZ2B,0BAAA,SAYH,OAZG,uBAa3BC,sBACE9U,SADF8U;AAGF,cAAMP,kBAAkBxZ,SAAMwD,YAC5B,SAAAsT,aAAe;AACblG,qBAAS;cAAEzL,MAAMzF,QAAQ8Z;cAAiB1C;YAAjC,CAAD;UACT,GACD,CAAClG,QAAD,CAJsB;AAhBK,cAAA,iBAgCzB5Q,SAAMuS,QAAQ,WAAM;AACtB,gBAAIqH,sBAAsB,OAAOC,sBAAsB,aAAa;AAClE,qBAAO,CAAC1P,MAAMqI,UAAUC,QAAjB;YACR;AAED,gBAAMmG,mBAAmB,CAAA;AACzB,gBAAMC,mBAAmB,CAAA;AAEzB,gBAAMZ,eAAenN,gBACnB4O,cACA1O,mBAAmB,CAAA,GACnBC,WAHkC;AAMpC,gBAAI,CAACgN,cAAc;AACjBlW,sBAAQmX,KAAR,+CAAA;AACA,qBAAO/O;YACR;AAED5C,YAAAA,YAAWnF,QAAQ,SAAA8C,SAAU;AAAA,kBACE8U,4BAA8B9U,QAAnD6U;AAER7U,cAAAA,QAAOwT,YAAYhP,gBACjBsQ,8BAA8B,OAAO,QAAQ3H,QAC7C0H,wBAAwB,OAAO,QAAQ1H,QACvC,IAHgC;YAKnC,CARD;AAUA,gBAAM4H,oBAAoB1S,YAAWwD,OAAO,SAAAmP,IAAC;AAAA,qBAAIA,GAAExB,cAAc;YAApB,CAAnB;AAG1B,gBAAMI,aAAa,SAAbA,YAAaC,cAAgB;AACjCA,6BAAed,aACbc,cACAkB,kBAAkB5T,IAAI,SAAA8B,IAAC;AAAA,uBAAIA,GAAE1B;cAAN,CAAvB,GACAoT,iBAHyB;AAM3Bd,2BAAa3W,QAAQ,SAAA0E,KAAO;AAC1B8R,iCAAiBnQ,KAAK3B,GAAtB;AACA+R,iCAAiB/R,IAAIL,EAAL,IAAWK;AAE3BA,oBAAI+D,UACF/D,IAAI+D,WAAW/D,IAAI+D,QAAQnC,SACvBoQ,YAAWhS,IAAI+D,OAAL,IACV/D,IAAI+D;cACX,CARD;AAUA,qBAAOkO;YACR;AAED,mBAAO,CAACD,WAAW3O,IAAD,GAAQyO,kBAAkBC,gBAArC;UACR,GAAE,CACDe,oBACAC,mBACAH,cACA1O,iBACAzD,aACA4C,MACAqI,UACAC,UACAsH,mBATC,CArDC,GAHFI,qBA7B2B,eAAA,CAAA,GA8B3BC,yBA9B2B,eAAA,CAAA,GA+B3BC,yBA/B2B,eAAA,CAAA;AAiG7B,cAAMC,2BAA2BnX,aAAa2W,qBAAD;AAE7CjW,iCAAuB,WAAM;AAC3B,gBAAIyW,yBAAwB,GAAI;AAC9B1J,uBAAS;gBAAEzL,MAAMzF,QAAQ6Z;cAAhB,CAAD;YACT;UACF,GAAE,CAAC3I,UAAUgJ,qBAAqB,OAAO7H,KAAvC,CAJmB;AAMtBpM,iBAAOsB,OAAOhC,UAAU;YACtBsV,uBAAuBpQ;YACvBqQ,2BAA2BhI;YAC3BiI,2BAA2BhI;YAC3B0H;YACAC;YACAC;YACAlQ,MAAMgQ;YACN3H,UAAU4H;YACV3H,UAAU4H;YACVb;YACAO;UAXsB,CAAxB;QAaD;ACnLM,iBAASW,KAAI/G,QAAQgH,kBAAkB;AAG5C,iBAAOA,iBAAiBja,OACtB,SAACga,MAAK9Z,OAAN;AAAA,mBAAe8Z,QAAO,OAAO9Z,UAAS,WAAWA,QAAO;UAAxD,GACA,CAFK;QAIR;AAEM,iBAAS8T,KAAIf,QAAQ;AAC1B,cAAIe,OAAMf,OAAO,CAAD,KAAO;AAEvBA,iBAAOvR,QAAQ,SAAAtC,OAAS;AACtB,gBAAI,OAAOA,UAAU,UAAU;AAC7B4U,cAAAA,OAAMD,KAAKC,IAAIA,MAAK5U,KAAd;YACP;UACF,CAJD;AAMA,iBAAO4U;QACR;AAEM,iBAASC,KAAIhB,QAAQ;AAC1B,cAAIgB,OAAMhB,OAAO,CAAD,KAAO;AAEvBA,iBAAOvR,QAAQ,SAAAtC,OAAS;AACtB,gBAAI,OAAOA,UAAU,UAAU;AAC7B6U,cAAAA,OAAMF,KAAKE,IAAIA,MAAK7U,KAAd;YACP;UACF,CAJD;AAMA,iBAAO6U;QACR;AAEM,iBAASiG,OAAOjH,QAAQ;AAC7B,cAAIe,OAAMf,OAAO,CAAD,KAAO;AACvB,cAAIgB,OAAMhB,OAAO,CAAD,KAAO;AAEvBA,iBAAOvR,QAAQ,SAAAtC,OAAS;AACtB,gBAAI,OAAOA,UAAU,UAAU;AAC7B4U,cAAAA,OAAMD,KAAKC,IAAIA,MAAK5U,KAAd;AACN6U,cAAAA,OAAMF,KAAKE,IAAIA,MAAK7U,KAAd;YACP;UACF,CALD;AAOA,iBAAU4U,OAAV,OAAkBC;QACnB;AAEM,iBAASkG,QAAQlH,QAAQ;AAC9B,iBAAO+G,KAAI,MAAM/G,MAAP,IAAiBA,OAAOjL;QACnC;AAEM,iBAASoS,OAAOnH,QAAQ;AAC7B,cAAI,CAACA,OAAOjL,QAAQ;AAClB,mBAAO;UACR;AAED,cAAMqS,MAAMtG,KAAKuG,MAAMrH,OAAOjL,SAAS,CAA3B;AACZ,cAAMuS,OAAO,CAAA,EAAA,OAAItH,MAAJ,EAAYR,KAAK,SAACtJ,IAAGqR,GAAJ;AAAA,mBAAUrR,KAAIqR;UAAd,CAAjB;AACb,iBAAOvH,OAAOjL,SAAS,MAAM,IAAIuS,KAAKF,GAAD,KAASE,KAAKF,MAAM,CAAP,IAAYE,KAAKF,GAAD,KAAS;QAC5E;AAEM,iBAASI,OAAOxH,QAAQ;AAC7B,iBAAOrS,MAAM8Z,KAAK,IAAIC,IAAI1H,MAAR,EAAgBA,OAAhB,CAAX;QACR;AAEM,iBAAS2H,YAAY3H,QAAQ;AAClC,iBAAO,IAAI0H,IAAI1H,MAAR,EAAgB4H;QACxB;AAEM,iBAASC,MAAM7H,QAAQ;AAC5B,iBAAOA,OAAOjL;QACf;;;;;;;;;;;;;ACzDD,YAAM+S,aAAa,CAAA;AACnB,YAAMC,cAAc,CAAA;AAGpBhc,gBAAQic,eAAe;AACvBjc,gBAAQkc,aAAa;AACrBlc,gBAAQmc,gBAAgB;AAExB,YAAaC,aAAa,SAAbA,YAAara,QAAS;AACjCA,UAAAA,OAAMsa,wBAAwB,CAACC,4BAAD;AAC9Bva,UAAAA,OAAM4L,cAAc5E,KAAK4G,SAAzB;AACA5N,UAAAA,OAAMqM,mBAAmBrF,KAAK,SAAC1E,MAADlE,OAAA;AAAA,gBAASoF,WAATpF,MAASoF;AAAT,mBAAA,CAAA,EAAA,OACzBlB,MADyB,CAE5BkB,SAASqK,MAAM2M,OAFa,CAAA;UAAA,CAA9B;AAIAxa,UAAAA,OAAMoM,eAAepF,KAAKoF,cAA1B;AACApM,UAAAA,OAAMwM,YAAYxF,KAAKwF,aAAvB;AACAxM,UAAAA,OAAMyM,WAAWzF,KAAKyF,YAAtB;QACD;AAED4N,mBAAWrZ,aAAa;AAExB,YAAMuZ,+BAA+B,SAA/BA,8BAAgCrb,OAAD4D,QAAA;AAAA,cAAU2P,SAAV3P,OAAU2P;AAAV,iBAAuB,CAC1DvT,OACA;YACE+U,SAASxB,OAAOgI,aACZ,SAAAzS,IAAK;AACHA,cAAAA,GAAE0S,QAAF;AACAjI,qBAAO2H,cAAP;YACD,IACDxJ;YACJxR,OAAO;cACL0I,QAAQ2K,OAAOgI,aAAa,YAAY7J;YADnC;YAGPxC,OAAO;UAVT,CAF0D;QAAvB;AAiBrC,iBAASR,UAAQC,QAAOU,QAAQC,eAAehL,UAAU;AACvD,cAAI+K,OAAO7K,SAASzF,QAAQC,MAAM;AAChC,mBAAAsB,UAAA;cACEgb,SAAS,CAAA;YADX,GAEK3M,MAFL;UAID;AAED,cAAIU,OAAO7K,SAASzF,QAAQic,cAAc;AACxC,mBAAA1a,UAAA,CAAA,GACKqO,QADL;cAEE2M,SAAShX,SAASiL,aAAa+L,WAAW,CAAA;YAF5C,CAAA;UAID;AAED,cAAIjM,OAAO7K,SAASzF,QAAQkc,YAAY;AAAA,gBAC9B9b,QAAUkQ,OAAVlQ;AACR,mBAAAmB,UAAA,CAAA,GACKqO,QADL;cAEE2M,SAASnc;YAFX,CAAA;UAID;AAED,cAAIkQ,OAAO7K,SAASzF,QAAQmc,eAAe;AAAA,gBACjCzL,WAAgCJ,OAAhCI,UAAiBwL,aAAe5L,OAAtBlQ;AAElB,gBAAMsc,kBACJ,OAAOR,eAAe,cAClBA,aACA,CAACtM,OAAM2M,QAAQlW,SAASqK,QAAvB;AAEP,gBAAIgM,iBAAiB;AACnB,qBAAAnb,UAAA,CAAA,GACKqO,QADL;gBAEE2M,SAAO,CAAA,EAAA,OAAM3M,OAAM2M,SAAZ,CAAqB7L,QAArB,CAAA;cAFT,CAAA;YAID;AAED,mBAAAnP,UAAA,CAAA,GACKqO,QADL;cAEE2M,SAAS3M,OAAM2M,QAAQlR,OAAO,SAAA5C,IAAC;AAAA,uBAAIA,OAAMiI;cAAV,CAAtB;YAFX,CAAA;UAID;QACF;AAED,iBAASvC,eACP3H,SADF,OAOE;AAAA,cAHa+V,UAGb,MAJEhX,SACEqK,MAAS2M;AAOb,cAAMI,iBAAiBJ,QACpB5V,IAAI,SAAAiW,GAAC;AAAA,mBAAIpW,QAAQ6M,KAAK,SAAAwJ,KAAG;AAAA,qBAAIA,IAAI9V,OAAO6V;YAAf,CAAhB;UAAJ,CADe,EAEpBvR,OAAO+G,OAFa;AAIvB,cAAM0K,oBAAoBtW,QAAQ6E,OAAO,SAAAwR,KAAG;AAAA,mBAAI,CAACN,QAAQlW,SAASwW,IAAI9V,EAArB;UAAL,CAAlB;AAE1BP,oBAAO,CAAA,EAAA,OAAOmW,gBAAmBG,iBAA1B;AAEPtW,kBAAQ9D,QAAQ,SAAA8C,SAAU;AACxBA,YAAAA,QAAOuX,YAAYR,QAAQlW,SAASb,QAAOuB,EAAxB;AACnBvB,YAAAA,QAAOwX,eAAeT,QAAQU,QAAQzX,QAAOuB,EAAvB;UACvB,CAHD;AAKA,iBAAOP;QACR;AAED,YAAM0W,0BAA0B,CAAA;AAEhC,iBAAS3O,cAAYhJ,UAAU;AAAA,cAE3B8M,QAgBE9M,SAhBF8M,MACA5H,OAeElF,SAfFkF,MACAqI,WAcEvN,SAdFuN,UACAC,WAaExN,SAbFwN,UACAlL,cAYEtC,SAZFsC,YACAoJ,cAWE1L,SAXF0L,aAP2B,sBAkBzB1L,SAVF4X,WAAAA,YAR2B,wBAAA,SAQfC,mBARe,qBAS3BC,gBASE9X,SATF8X,eAT2B,wBAkBzB9X,SARF+X,cAAcC,mBAVa,0BAAA,SAUML,0BAVN,uBAW3Bra,UAOE0C,SAPF1C,SACS0Z,UAMPhX,SANFqK,MAAS2M,SACTrL,WAKE3L,SALF2L,UAb2B,wBAkBzB3L,SAJFiY,kBAAAA,mBAd2B,0BAAA,SAcR,OAdQ,uBAe3BC,iBAGElY,SAHFkY,gBACAC,oBAEEnY,SAFFmY,mBACAvM,WACE5L,SADF4L;AAGFvO,4BAAkBC,SAAS,CAAC,kBAAkB,YAAnB,GAAkC,YAA5C;AAEjB,cAAMwO,cAAc5N,aAAa8B,QAAD;AAEhCsC,UAAAA,YAAWnF,QAAQ,SAAA8C,SAAU;AAAA,gBAEzBwB,WAGExB,QAHFwB,UACgB2W,uBAEdnY,QAFFoY,gBACgBC,uBACdrY,QADFiY;AAGFjY,YAAAA,QAAOgX,aAAaxV,WAChBgD,gBACExE,QAAOgX,YACPqB,yBAAyB,OAAO,QAAQlL,QACxC8K,mBAAmB,OAAO,QAAQ9K,QAClC,IAJa,IAMf3I,gBACExE,QAAOgX,YACPmB,sBACAD,mBACA,KAJa;AAOnB,gBAAIlY,QAAOgX,YAAY;AACrBhX,cAAAA,QAAO2W,gBAAgB,WAAA;AAAA,uBAAM5W,SAAS4W,cAAc3W,QAAOuB,EAA9B;cAAN;YACxB;AAEDvB,YAAAA,QAAOsY,aAAatY,QAAOsY,cAActY,QAAOhF;UACjD,CA1BD;AA4BA,cAAM2b,gBAAgB7b,SAAMwD,YAC1B,SAAC4M,UAAUtQ,OAAU;AACnB8Q,qBAAS;cAAEzL,MAAMzF,QAAQmc;cAAezL;cAAUtQ;YAAzC,CAAD;UACT,GACD,CAAC8Q,QAAD,CAJoB;AAOtB,cAAMgL,aAAa5b,SAAMwD,YACvB,SAAA1D,OAAS;AACP8Q,qBAAS;cAAEzL,MAAMzF,QAAQkc;cAAY9b;YAA5B,CAAD;UACT,GACD,CAAC8Q,QAAD,CAJiB;AAOnBD,sBAAYvO,QAAQ,SAAA8R,QAAU;AAC5BA,mBAAO6H,wBAAwBva,eAC7BqP,SAAQ,EAAGkL,uBACX;cAAE9W,UAAU8L,YAAW;cAAImD;YAA3B,CAF2C;UAI9C,CALD;AAlE6B,cAAA,iBAiFzBlU,SAAMuS,QAAQ,WAAM;AACtB,gBAAIwK,iBAAiB,CAACd,QAAQvT,QAAQ;AACpC,qBAAO,CACLyB,MACAqI,UACAC,UACAgJ,YACAC,aACAlJ,UACAC,QAPK;YASR;AAGD,gBAAMgL,kBAAkBxB,QAAQlR,OAAO,SAAAuR,GAAC;AAAA,qBACtC/U,YAAWwL,KAAK,SAAAwJ,KAAG;AAAA,uBAAIA,IAAI9V,OAAO6V;cAAf,CAAnB;YADsC,CAAhB;AAMxB,gBAAMoB,wBAAwB,SAAxBA,uBAAyBC,UAAUC,cAAaxX,OAAU;AAC9D,kBAAMuN,SAAS,CAAA;AAEfpM,cAAAA,YAAWnF,QAAQ,SAAA8C,SAAU;AAE3B,oBAAIuY,gBAAgB1X,SAASb,QAAOuB,EAAhC,GAAqC;AACvCkN,yBAAOzO,QAAOuB,EAAR,IAAcmX,aAAY,CAAD,IAC3BA,aAAY,CAAD,EAAIjK,OAAOzO,QAAOuB,EAA7B,IACA;AACJ;gBACD;AAGD,oBAAIoX,cACF,OAAO3Y,QAAO4Y,cAAc,aACxB5Y,QAAO4Y,YACPb,iBAAiB/X,QAAO4Y,SAAR,KAChBd,aAAa9X,QAAO4Y,SAAR;AAElB,oBAAID,aAAa;AAEf,sBAAME,gBAAgBH,aAAYvX,IAAI,SAAAS,KAAG;AAAA,2BAAIA,IAAI6M,OAAOzO,QAAOuB,EAAlB;kBAAJ,CAAnB;AAGtB,sBAAMuX,aAAaL,SAAStX,IAAI,SAAAS,KAAO;AACrC,wBAAImX,cAAcnX,IAAI6M,OAAOzO,QAAOuB,EAAlB;AAElB,wBAAI,CAACL,SAASlB,QAAOgZ,gBAAgB;AACnC,0BAAMC,mBACJ,OAAOjZ,QAAOgZ,mBAAmB,aAC7BhZ,QAAOgZ,iBACPjB,iBAAiB/X,QAAOgZ,cAAR,KAChBlB,aAAa9X,QAAOgZ,cAAR;AAElB,0BAAI,CAACC,kBAAkB;AACrBpc,gCAAQC,KAAK;0BAAEkD,QAAAA;wBAAF,CAAb;AACA,8BAAM,IAAIjD,MAAJ,2EAAA;sBAGP;AAEDgc,oCAAcE,iBAAiBF,aAAanX,KAAK5B,OAAnB;oBAC/B;AACD,2BAAO+Y;kBACR,CApBkB;AAsBnBtK,yBAAOzO,QAAOuB,EAAR,IAAcoX,YAAYG,YAAYD,aAAb;gBAChC,WAAU7Y,QAAO4Y,WAAW;AAC3B/b,0BAAQC,KAAK;oBAAEkD,QAAAA;kBAAF,CAAb;AACA,wBAAM,IAAIjD,MAAJ,sEAAA;gBAGP,OAAM;AACL0R,yBAAOzO,QAAOuB,EAAR,IAAc;gBACrB;cACF,CApDD;AAsDA,qBAAOkN;YACR;AAED,gBAAIyK,mBAAkB,CAAA;AACtB,gBAAMC,mBAAkB,CAAA;AACxB,gBAAMC,uBAAsB,CAAA;AAC5B,gBAAMC,uBAAsB,CAAA;AAC5B,gBAAMC,sBAAqB,CAAA;AAC3B,gBAAMC,sBAAqB,CAAA;AAG3B,gBAAMC,qBAAqB,SAArBA,oBAAsBvU,OAAM/D,OAAWuY,UAAa;AAAA,kBAAxBvY,UAAwB,QAAA;AAAxBA,wBAAQ;cAAgB;AAExD,kBAAIA,UAAUqX,gBAAgB/U,QAAQ;AACpC,uBAAOyB,MAAK9D,IAAI,SAACS,KAAD;AAAA,yBAAA7F,UAAA,CAAA,GAAe6F,KAAf;oBAAoBV;kBAApB,CAAA;gBAAA,CAAT;cACR;AAED,kBAAMgK,WAAWqN,gBAAgBrX,KAAD;AAGhC,kBAAIwY,eAAe/B,UAAU1S,OAAMiG,QAAP;AAG5B,kBAAMyO,wBAAwBlZ,OAAOmZ,QAAQF,YAAf,EAA6BvY,IACzD,SAAA,OAA4ByG,QAAU;AAAA,oBAApCiS,aAAoC,MAAA,CAAA,GAAxBnB,eAAwB,MAAA,CAAA;AACpC,oBAAInX,OAAQ2J,WAAN,MAAkB2O;AACxBtY,gBAAAA,OAAKkY,WAAcA,WAAN,MAAkBlY,OAAOA;AAGtC,oBAAMoE,UAAU6T,oBAAmBd,cAAaxX,QAAQ,GAAGK,IAAzB;AAGlC,oBAAMkX,WAAWvX,QACbI,UAAUoX,cAAa,UAAd,IACTA;AAEJ,oBAAMjK,SAAS+J,sBAAsBC,UAAUC,cAAaxX,KAAxB;AAEpC,oBAAMU,MAAM;kBACVL,IAAAA;kBACAgW,WAAW;kBACXuC,WAAW5O;kBACX2O;kBACApL;kBACA9I;kBACA8S;kBACAvX;kBACA0G,OAAAA;gBATU;AAYZjC,wBAAQzI,QAAQ,SAAA6c,QAAU;AACxBb,kBAAAA,iBAAgB3V,KAAKwW,MAArB;AACAZ,kBAAAA,iBAAgBY,OAAOxY,EAAR,IAAcwY;AAC7B,sBAAIA,OAAOxC,WAAW;AACpB6B,oBAAAA,qBAAoB7V,KAAKwW,MAAzB;AACAV,oBAAAA,qBAAoBU,OAAOxY,EAAR,IAAcwY;kBAClC,OAAM;AACLT,oBAAAA,oBAAmB/V,KAAKwW,MAAxB;AACAR,oBAAAA,oBAAmBQ,OAAOxY,EAAR,IAAcwY;kBACjC;gBACF,CAVD;AAYA,uBAAOnY;cACR,CAxC2B;AA2C9B,qBAAO+X;YACR;AAED,gBAAMjB,eAAcc,mBAAmBvU,IAAD;AAEtCyT,YAAAA,aAAYxb,QAAQ,SAAA6c,QAAU;AAC5Bb,cAAAA,iBAAgB3V,KAAKwW,MAArB;AACAZ,cAAAA,iBAAgBY,OAAOxY,EAAR,IAAcwY;AAC7B,kBAAIA,OAAOxC,WAAW;AACpB6B,gBAAAA,qBAAoB7V,KAAKwW,MAAzB;AACAV,gBAAAA,qBAAoBU,OAAOxY,EAAR,IAAcwY;cAClC,OAAM;AACLT,gBAAAA,oBAAmB/V,KAAKwW,MAAxB;AACAR,gBAAAA,oBAAmBQ,OAAOxY,EAAR,IAAcwY;cACjC;YACF,CAVD;AAaA,mBAAO,CACLrB,cACAQ,kBACAC,kBACAC,sBACAC,sBACAC,qBACAC,mBAPK;UASR,GAAE,CACD1B,eACAd,SACA9R,MACAqI,UACAC,UACAlL,aACA0V,kBACAJ,SARC,CA1KC,GAPFe,cA1E2B,eAAA,CAAA,GA2E3BQ,kBA3E2B,eAAA,CAAA,GA4E3BC,kBA5E2B,eAAA,CAAA,GA6E3BC,sBA7E2B,eAAA,CAAA,GA8E3BC,sBA9E2B,eAAA,CAAA,GA+E3BC,qBA/E2B,eAAA,CAAA,GAgF3BC,qBAhF2B,eAAA,CAAA;AAsQ7B,cAAMS,sBAAsB/b,aAAa+Z,gBAAD;AAExCrZ,iCAAuB,WAAM;AAC3B,gBAAIqb,oBAAmB,GAAI;AACzBtO,uBAAS;gBAAEzL,MAAMzF,QAAQic;cAAhB,CAAD;YACT;UACF,GAAE,CAAC/K,UAAUmM,gBAAgB,OAAOhL,KAAlC,CAJmB;AAMtBpM,iBAAOsB,OAAOhC,UAAU;YACtBka,gBAAgBhV;YAChBiV,mBAAmB5M;YACnB6M,oBAAoB5M;YACpBmL;YACAQ;YACAC;YACAC;YACAC;YACAC;YACAC;YACAtU,MAAMyT;YACNpL,UAAU4L;YACV3L,UAAU4L;YACVxC;YACAD;UAfsB,CAAxB;QAiBD;AAED,iBAAS1N,aAAWpH,KAAK;AACvBA,cAAI4M,SAAStR,QAAQ,SAAA8K,MAAQ;AAAA,gBAAA;AAE3BA,iBAAKuP,YAAYvP,KAAKhI,OAAOuX,aAAavP,KAAKhI,OAAOuB,OAAOK,IAAIkY;AAEjE9R,iBAAKoS,gBAAgB,CAACpS,KAAKuP,aAAavP,KAAKhI,OAAOuX;AAEpDvP,iBAAKqS,eACH,CAACrS,KAAKuP,aAAa,CAACvP,KAAKoS,mBAAzB,eAA0CxY,IAAI+D,YAA9C,OAAA,SAA0C,aAAanC;UAC1D,CARD;QASD;AAEM,iBAASoU,iBAAiB3S,MAAMiG,UAAU;AAC/C,iBAAOjG,KAAKzJ,OAAO,SAACgB,OAAMoF,KAAK6C,GAAM;AAGnC,gBAAM6V,SAAM,KAAM1Y,IAAI6M,OAAOvD,QAAX;AAClB1O,YAAAA,MAAK8d,MAAD,IAAWle,MAAMC,QAAQG,MAAK8d,MAAD,CAAlB,IAA8B9d,MAAK8d,MAAD,IAAW,CAAA;AAC5D9d,YAAAA,MAAK8d,MAAD,EAAS/W,KAAK3B,GAAlB;AACA,mBAAOpF;UACR,GAAE,CAAA,CAPI;QAQR;ACrbD,YAAM+d,sBAAsB;AAKrB,YAAMC,eAAe,SAAfA,cAAgBC,MAAMC,MAAMxP,UAAa;AAAA,cAAA,wBACvCyP,uBAAuBF,MAAMC,MAAMxP,QAAb,GAA9BvG,KAD+C,sBAAA,CAAA,GAC5CqR,IAD4C,sBAAA,CAAA;AAIpDrR,UAAAA,KAAIiW,SAASjW,EAAD;AACZqR,cAAI4E,SAAS5E,CAAD;AAIZrR,UAAAA,KAAIA,GAAEhD,MAAM4Y,mBAAR,EAA6B1U,OAAO+G,OAApC;AACJoJ,cAAIA,EAAErU,MAAM4Y,mBAAR,EAA6B1U,OAAO+G,OAApC;AAGJ,iBAAOjI,GAAEnB,UAAUwS,EAAExS,QAAQ;AAC3B,gBAAIqX,KAAKlW,GAAE8I,MAAF;AACT,gBAAIqN,KAAK9E,EAAEvI,MAAF;AAET,gBAAMsN,KAAKC,SAASH,IAAI,EAAL;AACnB,gBAAMI,KAAKD,SAASF,IAAI,EAAL;AAEnB,gBAAMI,QAAQ,CAACH,IAAIE,EAAL,EAAShN,KAAT;AAGd,gBAAIkN,MAAMD,MAAM,CAAD,CAAN,GAAY;AACnB,kBAAIL,KAAKC,IAAI;AACX,uBAAO;cACR;AACD,kBAAIA,KAAKD,IAAI;AACX,uBAAO;cACR;AACD;YACD;AAGD,gBAAIM,MAAMD,MAAM,CAAD,CAAN,GAAY;AACnB,qBAAOC,MAAMJ,EAAD,IAAO,KAAK;YACzB;AAGD,gBAAIA,KAAKE,IAAI;AACX,qBAAO;YACR;AACD,gBAAIA,KAAKF,IAAI;AACX,qBAAO;YACR;UACF;AAED,iBAAOpW,GAAEnB,SAASwS,EAAExS;QACrB;AACM,iBAAS4X,SAASX,MAAMC,MAAMxP,UAAU;AAAA,cAAA,yBAChCyP,uBAAuBF,MAAMC,MAAMxP,QAAb,GAA9BvG,KADwC,uBAAA,CAAA,GACrCqR,IADqC,uBAAA,CAAA;AAG7CrR,UAAAA,KAAIA,GAAE0W,QAAF;AACJrF,cAAIA,EAAEqF,QAAF;AAEJ,iBAAOC,aAAa3W,IAAGqR,CAAJ;QACpB;AAEM,iBAASuF,MAAMd,MAAMC,MAAMxP,UAAU;AAAA,cAAA,yBAC7ByP,uBAAuBF,MAAMC,MAAMxP,QAAb,GAA9BvG,KADqC,uBAAA,CAAA,GAClCqR,IADkC,uBAAA,CAAA;AAG1C,iBAAOsF,aAAa3W,IAAGqR,CAAJ;QACpB;AAEM,iBAASwF,OAAOf,MAAMC,MAAMxP,UAAU;AAAA,cAAA,yBAC9ByP,uBAAuBF,MAAMC,MAAMxP,QAAb,GAA9BvG,KADsC,uBAAA,CAAA,GACnCqR,IADmC,uBAAA,CAAA;AAG3CrR,UAAAA,KAAIA,GAAEhD,MAAM,EAAR,EAAYkE,OAAO+G,OAAnB;AACJoJ,cAAIA,EAAErU,MAAM,EAAR,EAAYkE,OAAO+G,OAAnB;AAEJ,iBAAOjI,GAAEnB,UAAUwS,EAAExS,QAAQ;AAC3B,gBAAIqX,KAAKlW,GAAE8I,MAAF;AACT,gBAAIqN,KAAK9E,EAAEvI,MAAF;AAET,gBAAIgO,SAASZ,GAAG/I,YAAH;AACb,gBAAI4J,SAASZ,GAAGhJ,YAAH;AAGb,gBAAI2J,SAASC,QAAQ;AACnB,qBAAO;YACR;AACD,gBAAIA,SAASD,QAAQ;AACnB,qBAAO;YACR;AAED,gBAAIZ,KAAKC,IAAI;AACX,qBAAO;YACR;AACD,gBAAIA,KAAKD,IAAI;AACX,qBAAO;YACR;AACD;UACD;AAED,iBAAOlW,GAAEnB,SAASwS,EAAExS;QACrB;AAEM,iBAASmY,QAAOlB,MAAMC,MAAMxP,UAAU;AAAA,cAAA,yBAC9ByP,uBAAuBF,MAAMC,MAAMxP,QAAb,GAA9BvG,KADsC,uBAAA,CAAA,GACnCqR,IADmC,uBAAA,CAAA;AAG3C,cAAM4F,oBAAoB;AAE1BjX,UAAAA,KAAIvJ,OAAO4L,OAAOrC,EAAD,EAAIsC,QAAQ2U,mBAAmB,EAArC,CAAD;AACV5F,cAAI5a,OAAO4L,OAAOgP,CAAD,EAAI/O,QAAQ2U,mBAAmB,EAArC,CAAD;AAEV,iBAAON,aAAa3W,IAAGqR,CAAJ;QACpB;AAID,iBAASsF,aAAa3W,IAAGqR,GAAG;AAC1B,iBAAOrR,OAAMqR,IAAI,IAAIrR,KAAIqR,IAAI,IAAI;QAClC;AAED,iBAAS2E,uBAAuBkB,MAAMC,MAAM5Q,UAAU;AACpD,iBAAO,CAAC2Q,KAAKpN,OAAOvD,QAAZ,GAAuB4Q,KAAKrN,OAAOvD,QAAZ,CAAxB;QACR;AAED,iBAAS0P,SAASjW,IAAG;AACnB,cAAI,OAAOA,OAAM,UAAU;AACzB,gBAAIwW,MAAMxW,EAAD,KAAOA,OAAM6N,YAAY7N,OAAM,WAAW;AACjD,qBAAO;YACR;AACD,mBAAOqC,OAAOrC,EAAD;UACd;AACD,cAAI,OAAOA,OAAM,UAAU;AACzB,mBAAOA;UACR;AACD,iBAAO;QACR;;;;;;;;;ACtHDnK,gBAAQuhB,cAAc;AACtBvhB,gBAAQwhB,YAAY;AACpBxhB,gBAAQyhB,eAAe;AACvBzhB,gBAAQ0hB,cAAc;AAEtBnhB,sBAAcohB,WAAW;AACzBphB,sBAAcqhB,gBAAgB;AAE9B,YAAaC,YAAY,SAAZA,WAAY9f,QAAS;AAChCA,UAAAA,OAAM+f,uBAAuB,CAACC,2BAAD;AAC7BhgB,UAAAA,OAAM4L,cAAc5E,KAAK4G,SAAzB;AACA5N,UAAAA,OAAMwM,YAAYxF,KAAKwF,aAAvB;QACD;AAEDsT,kBAAU9e,aAAa;AAEvB,YAAMgf,8BAA8B,SAA9BA,6BAA+B9gB,OAADd,OAAiC;AAAA,cAAvBoF,WAAuBpF,MAAvBoF,UAAUC,UAAarF,MAAbqF;AAAa,cAAA,wBACpBD,SAAvCyc,kBAAAA,mBAD2D,0BAAA,SACxC,SAAAjY,IAAC;AAAA,mBAAIA,GAAEkY;UAAN,IADuC;AAGnE,iBAAO,CACLhhB,OACA;YACE+U,SAASxQ,QAAO0c,UACZ,SAAAnY,IAAK;AACHA,cAAAA,GAAE0S,QAAF;AACAjX,cAAAA,QAAOic,aACL9O,QACA,CAACpN,SAAS4c,oBAAoBH,iBAAiBjY,EAAD,CAFhD;YAID,IACD4I;YACJxR,OAAO;cACL0I,QAAQrE,QAAO0c,UAAU,YAAYvP;YADhC;YAGPxC,OAAO3K,QAAO0c,UAAU,kBAAkBvP;UAb5C,CAFK;QAkBR;AAGD,iBAAShD,UAAQC,QAAOU,QAAQC,eAAehL,UAAU;AACvD,cAAI+K,OAAO7K,SAASzF,QAAQC,MAAM;AAChC,mBAAAsB,UAAA;cACE6gB,QAAQ,CAAA;YADV,GAEKxS,MAFL;UAID;AAED,cAAIU,OAAO7K,SAASzF,QAAQuhB,aAAa;AACvC,mBAAAhgB,UAAA,CAAA,GACKqO,QADL;cAEEwS,QAAQ7c,SAASiL,aAAa4R,UAAU,CAAA;YAF1C,CAAA;UAID;AAED,cAAI9R,OAAO7K,SAASzF,QAAQ0hB,aAAa;AAAA,gBAC/BU,SAAWxS,OAAXwS;AACR,gBAAMC,YAAYD,OAAO/W,OAAO,SAAA5C,IAAC;AAAA,qBAAIA,GAAE1B,OAAOuJ,OAAOI;YAApB,CAAf;AAElB,mBAAAnP,UAAA,CAAA,GACKqO,QADL;cAEEwS,QAAQC;YAFV,CAAA;UAID;AAED,cAAI/R,OAAO7K,SAASzF,QAAQwhB,WAAW;AAAA,gBAC7BY,UAAW9R,OAAX8R;AACR,mBAAA7gB,UAAA,CAAA,GACKqO,QADL;cAEEwS,QAAAA;YAFF,CAAA;UAID;AAED,cAAI9R,OAAO7K,SAASzF,QAAQyhB,cAAc;AAAA,gBAChC/Q,WAA0BJ,OAA1BI,UAAU4R,OAAgBhS,OAAhBgS,MAAMC,QAAUjS,OAAViS;AADgB,gBAItC1a,cAKEtC,SALFsC,YACAsa,mBAIE5c,SAJF4c,kBACAK,oBAGEjd,SAHFid,mBACAC,qBAEEld,SAFFkd,oBAPsC,wBASpCld,SADFmd,sBAAAA,uBARsC,0BAAA,SAQf9hB,OAAOC,mBARQ;AAAA,gBAWhCuhB,WAAWxS,OAAXwS;AAGR,gBAAM5c,UAASqC,YAAWwL,KAAK,SAAA5K,IAAC;AAAA,qBAAIA,GAAE1B,OAAO2J;YAAb,CAAjB;AAdyB,gBAehCkR,gBAAkBpc,QAAlBoc;AAGR,gBAAMe,iBAAiBP,SAAO/O,KAAK,SAAA5K,IAAC;AAAA,qBAAIA,GAAE1B,OAAO2J;YAAb,CAAb;AACvB,gBAAMkS,gBAAgBR,SAAOlf,UAAU,SAAAuF,IAAC;AAAA,qBAAIA,GAAE1B,OAAO2J;YAAb,CAAlB;AACtB,gBAAMmS,iBAAiB,OAAOP,SAAS,eAAeA,SAAS;AAE/D,gBAAID,aAAY,CAAA;AAGhB,gBAAIS;AAEJ,gBAAI,CAACX,oBAAoBI,OAAO;AAC9B,kBAAII,gBAAgB;AAClBG,6BAAa;cACd,OAAM;AACLA,6BAAa;cACd;YACF,OAAM;AAEL,kBAAIF,kBAAkBR,SAAOpZ,SAAS,KAAKoZ,SAAOpZ,WAAW,GAAG;AAC9D8Z,6BAAa;cACd,WAAUH,gBAAgB;AACzBG,6BAAa;cACd,OAAM;AACLA,6BAAa;cACd;YACF;AAGD,gBACEA,eAAe;YACf,CAACN;YACD,CAACK;aACAN,QAAQ,CAACE,qBAAqB;aAC7BE;YACAA,eAAeL,QACf,CAACV,iBACA,CAACe,eAAeL,QAAQV,gBAC3B;AACAkB,2BAAa;YACd;AAED,gBAAIA,eAAe,WAAW;AAC5BT,2BAAY,CACV;gBACEtb,IAAI2J;gBACJ4R,MAAMO,iBAAiBP,OAAOV;cAFhC,CADU;YAMb,WAAUkB,eAAe,OAAO;AAC/BT,2BAAS,CAAA,EAAA,OACJD,UADI,CAEP;gBACErb,IAAI2J;gBACJ4R,MAAMO,iBAAiBP,OAAOV;cAFhC,CAFO,CAAA;AAQTS,yBAAUU,OAAO,GAAGV,WAAUrZ,SAAS0Z,oBAAvC;YACD,WAAUI,eAAe,UAAU;AAElCT,2BAAYD,SAAOzb,IAAI,SAAA8B,IAAK;AAC1B,oBAAIA,GAAE1B,OAAO2J,UAAU;AACrB,yBAAAnP,UAAA,CAAA,GACKkH,IADL;oBAEE6Z,MAAMO,iBAAiBP,OAAO,CAACK,eAAeL;kBAFhD,CAAA;gBAID;AACD,uBAAO7Z;cACR,CARW;YASb,WAAUqa,eAAe,UAAU;AAClCT,2BAAYD,SAAO/W,OAAO,SAAA5C,IAAC;AAAA,uBAAIA,GAAE1B,OAAO2J;cAAb,CAAf;YACb;AAED,mBAAAnP,UAAA,CAAA,GACKqO,QADL;cAEEwS,QAAQC;YAFV,CAAA;UAID;QACF;AAED,iBAAS9T,cAAYhJ,UAAU;AAAA,cAE3B8M,QAeE9M,SAfF8M,MACA5H,OAcElF,SAdFkF,MACAqI,WAaEvN,SAbFuN,UACAjL,cAYEtC,SAZFsC,YAL2B,sBAiBzBtC,SAXFyd,WAAAA,YAN2B,wBAAA,SAMfC,mBANe,qBAOhBC,gBAUT3d,SAVF4d,WACAC,eASE7d,SATF6d,cACAC,iBAQE9d,SARF8d,gBACAC,gBAOE/d,SAPF+d,eACArS,cAME1L,SANF0L,aACSmR,SAKP7c,SALFqK,MAASwS,QACTlR,WAIE3L,SAJF2L,UACArO,UAGE0C,SAHF1C,SACAsO,WAEE5L,SAFF4L,UAf2B,wBAiBzB5L,SADFge,iBAAAA,kBAhB2B,0BAAA,SAgBT,OAhBS;AAmB7B3gB,4BACEC,SACA,CAAC,cAAc,mBAAmB,cAAc,iBAAhD,GACA,WAHe;AAMjB,cAAM2e,YAAYlhB,SAAMwD,YACtB,SAAAse,SAAU;AACRlR,qBAAS;cAAEzL,MAAMzF,QAAQwhB;cAAWY,QAAAA;YAA3B,CAAD;UACT,GACD,CAAClR,QAAD,CAJgB;AAQlB,cAAMuQ,eAAenhB,SAAMwD,YACzB,SAAC4M,UAAU4R,MAAMC,OAAU;AACzBrR,qBAAS;cAAEzL,MAAMzF,QAAQyhB;cAAc/Q;cAAU4R;cAAMC;YAA9C,CAAD;UACT,GACD,CAACrR,QAAD,CAJmB;AAQrB,cAAMG,cAAc5N,aAAa8B,QAAD;AAGhC0L,sBAAYvO,QAAQ,SAAA8C,SAAU;AAAA,gBAE1BwB,WAIExB,QAJFwB,UACSwc,uBAGPhe,QAHF0c,SACeuB,sBAEbje,QAFF8d,eACAvc,OACEvB,QADFuB;AAGF,gBAAMmb,UAAUlb,WACZgD,gBACEyZ,wBAAwB,OAAO,QAAQ9Q,QACvC2Q,kBAAkB,OAAO,QAAQ3Q,QACjC,IAHa,IAKf3I,gBAAgBqZ,gBAAgBG,sBAAsB,KAAvC;AAEnBhe,YAAAA,QAAO0c,UAAUA;AAEjB,gBAAI1c,QAAO0c,SAAS;AAClB1c,cAAAA,QAAOic,eAAe,SAACa,MAAMC,OAAP;AAAA,uBACpBd,aAAajc,QAAOuB,IAAIub,MAAMC,KAAlB;cADQ;AAGtB/c,cAAAA,QAAOkc,cAAc,WAAM;AACzBxQ,yBAAS;kBAAEzL,MAAMzF,QAAQ0hB;kBAAahR,UAAUlL,QAAOuB;gBAA9C,CAAD;cACT;YACF;AAEDvB,YAAAA,QAAOsc,uBAAuBhgB,eAC5BqP,SAAQ,EAAG2Q,sBACX;cACEvc,UAAU8L,YAAW;cACrB7L,QAAAA;YAFF,CAF0C;AAQ5C,gBAAMke,aAAatB,OAAO/O,KAAK,SAAA5K,IAAC;AAAA,qBAAIA,GAAE1B,OAAOA;YAAb,CAAb;AACnBvB,YAAAA,QAAOme,WAAW,CAAC,CAACD;AACpBle,YAAAA,QAAOoe,cAAcxB,OAAOlf,UAAU,SAAAuF,IAAC;AAAA,qBAAIA,GAAE1B,OAAOA;YAAb,CAAlB;AACrBvB,YAAAA,QAAOqe,eAAere,QAAOme,WAAWD,WAAWpB,OAAO3P;UAC3D,CAvCD;AA5C6B,cAAA,iBAqFQrS,SAAMuS,QAAQ,WAAM;AACvD,gBAAIuQ,gBAAgB,CAAChB,OAAOpZ,QAAQ;AAClC,qBAAO,CAACyB,MAAMqI,QAAP;YACR;AAED,gBAAMgR,kBAAiB,CAAA;AAGvB,gBAAMC,kBAAkB3B,OAAO/W,OAAO,SAAAoI,MAAI;AAAA,qBACxC5L,YAAWwL,KAAK,SAAAwJ,KAAG;AAAA,uBAAIA,IAAI9V,OAAO0M,KAAK1M;cAApB,CAAnB;YADwC,CAAlB;AAIxB,gBAAMid,YAAW,SAAXA,UAAWvZ,OAAQ;AAIvB,kBAAMwZ,aAAajB;gBACjBvY;gBACAsZ,gBAAgBpd,IAAI,SAAA8M,MAAQ;AAE1B,sBAAMjO,UAASqC,YAAWwL,KAAK,SAAA5K,IAAC;AAAA,2BAAIA,GAAE1B,OAAO0M,KAAK1M;kBAAlB,CAAjB;AAEf,sBAAI,CAACvB,SAAQ;AACX,0BAAM,IAAIjD,MAAJ,mDAC6CkR,KAAK1M,KADlD,gBAAA;kBAGP;AARyB,sBAUlB4a,WAAanc,QAAbmc;AASR,sBAAMuC,aACJha,YAAWyX,QAAD,MACTuB,iBAAiB,CAAA,GAAIvB,QAAtB,KACAwB,UAAUxB,QAAD;AAEX,sBAAI,CAACuC,YAAY;AACf,0BAAM,IAAI3hB,MAAJ,sDACgDof,WADhD,mBACyElO,KAAK1M,KAD9E,IAAA;kBAGP;AAID,yBAAO,SAACoD,IAAGqR,GAAJ;AAAA,2BAAU0I,WAAW/Z,IAAGqR,GAAG/H,KAAK1M,IAAI0M,KAAK6O,IAArB;kBAApB;gBACR,CAjCD;;gBAmCAyB,gBAAgBpd,IAAI,SAAA8M,MAAQ;AAE1B,sBAAMjO,UAASqC,YAAWwL,KAAK,SAAA5K,IAAC;AAAA,2BAAIA,GAAE1B,OAAO0M,KAAK1M;kBAAlB,CAAjB;AAEf,sBAAIvB,WAAUA,QAAO2e,cAAc;AACjC,2BAAO1Q,KAAK6O;kBACb;AAED,yBAAO,CAAC7O,KAAK6O;gBACd,CATD;cArC0B;AAkD5B2B,yBAAWvhB,QAAQ,SAAA0E,KAAO;AACxB0c,gBAAAA,gBAAe/a,KAAK3B,GAApB;AACA,oBAAI,CAACA,IAAI+D,WAAW/D,IAAI+D,QAAQnC,WAAW,GAAG;AAC5C;gBACD;AACD5B,oBAAI+D,UAAU6Y,UAAS5c,IAAI+D,OAAL;cACvB,CAND;AAQA,qBAAO8Y;YACR;AAED,mBAAO,CAACD,UAASvZ,IAAD,GAAQqZ,eAAjB;UACR,GAAE,CACDV,cACAhB,QACA3X,MACAqI,UACAjL,aACAmb,WACAE,aAPC,CA9EkC,GAA9BkB,aArFsB,eAAA,CAAA,GAqFVN,iBArFU,eAAA,CAAA;AA6K7B,cAAMO,qBAAqB5gB,aAAa8f,eAAD;AAEvCpf,iCAAuB,WAAM;AAC3B,gBAAIkgB,mBAAkB,GAAI;AACxBnT,uBAAS;gBAAEzL,MAAMzF,QAAQuhB;cAAhB,CAAD;YACT;UACF,GAAE,CAAC6B,eAAe,OAAO/Q,KAAvB,CAJmB;AAMtBpM,iBAAOsB,OAAOhC,UAAU;YACtB+e,eAAe7Z;YACf8Z,mBAAmBzR;YACnBsR;YACAN;YACArZ,MAAM2Z;YACNtR,UAAUgR;YACVtC;YACAC;UARsB,CAAxB;QAUD;AAEM,iBAASwB,iBAAiB7Y,KAAKoa,OAAOC,MAAM;AACjD,iBAAO,CAAA,EAAA,OAAIra,GAAJ,EAASqJ,KAAK,SAACwM,MAAMC,MAAS;AACnC,qBAASjW,IAAI,GAAGA,IAAIua,MAAMxb,QAAQiB,KAAK,GAAG;AACxC,kBAAMya,SAASF,MAAMva,CAAD;AACpB,kBAAMqY,OAAOmC,KAAKxa,CAAD,MAAQ,SAASwa,KAAKxa,CAAD,MAAQ;AAC9C,kBAAM0a,UAAUD,OAAOzE,MAAMC,IAAP;AACtB,kBAAIyE,YAAY,GAAG;AACjB,uBAAOrC,OAAO,CAACqC,UAAUA;cAC1B;YACF;AACD,mBAAOF,KAAK,CAAD,IAAMxE,KAAK7S,QAAQ8S,KAAK9S,QAAQ8S,KAAK9S,QAAQ6S,KAAK7S;UAC9D,CAVM;QAWR;ACzXD,YAAMrK,aAAa;AAGnB/C,gBAAQ4kB,YAAY;AACpB5kB,gBAAQ6kB,WAAW;AACnB7kB,gBAAQ8kB,cAAc;AAEtB,YAAaC,gBAAgB,SAAhBA,eAAgBhjB,QAAS;AACpCA,UAAAA,OAAM4L,cAAc5E,KAAK4G,SAAzB;AACA5N,UAAAA,OAAMwM,YAAYxF,KAAKwF,aAAvB;QACD;AAEDwW,sBAAchiB,aAAaA;AAE3B,iBAAS4M,UAAQC,QAAOU,QAAQC,eAAehL,UAAU;AACvD,cAAI+K,OAAO7K,SAASzF,QAAQC,MAAM;AAChC,mBAAAsB,UAAA;cACEyjB,UAAU;cACVC,WAAW;YAFb,GAGKrV,MAHL;UAKD;AAED,cAAIU,OAAO7K,SAASzF,QAAQ4kB,WAAW;AACrC,mBAAArjB,UAAA,CAAA,GACKqO,QADL;cAEEqV,WAAW1f,SAASiL,aAAayU,aAAa;YAFhD,CAAA;UAID;AAED,cAAI3U,OAAO7K,SAASzF,QAAQ6kB,UAAU;AAAA,gBAC5BK,YAAoB3f,SAApB2f,WAAWC,OAAS5f,SAAT4f;AACnB,gBAAMC,eAAe9hB,iBAAiBgN,OAAO2U,WAAWrV,OAAMqV,SAAzB;AACrC,gBAAII,cAAc;AAElB,gBAAID,eAAexV,OAAMqV,WAAW;AAElCI,4BACEH,cAAc,KACVC,KAAKnc,UAAU4G,OAAMoV,WACrBI,eAAeF;YACtB,WAAUE,eAAexV,OAAMqV,WAAW;AAEzCI,4BAAcD,eAAe;YAC9B;AAED,gBAAI,CAACC,aAAa;AAChB,qBAAOzV;YACR;AAED,mBAAArO,UAAA,CAAA,GACKqO,QADL;cAEEqV,WAAWG;YAFb,CAAA;UAID;AAED,cAAI9U,OAAO7K,SAASzF,QAAQ8kB,aAAa;AAAA,gBAC/BE,WAAa1U,OAAb0U;AACR,gBAAMM,cAAc1V,OAAMoV,WAAWpV,OAAMqV;AAC3C,gBAAMA,YAAYlQ,KAAKuG,MAAMgK,cAAcN,QAAzB;AAElB,mBAAAzjB,UAAA,CAAA,GACKqO,QADL;cAEEqV;cACAD;YAHF,CAAA;UAKD;QACF;AAED,iBAASzW,cAAYhJ,UAAU;AAAA,cAE3BkF,OAmBElF,SAnBFkF,MAF2B,wBAqBzBlF,SAlBFggB,eAAAA,gBAH2B,0BAAA,SAGX,OAHW,uBAAA,wBAqBzBhgB,SAjBFmF,mBAAAA,oBAJ2B,0BAAA,SAIP,aAJO,uBAK3B7H,UAgBE0C,SAhBF1C,SACW2iB,gBAeTjgB,SAfF2f,WAN2B,wBAqBzB3f,SAdFoR,sBAAAA,uBAP2B,0BAAA,SAOJ,OAPI,uBAAA,wBAqBzBpR,SAbFqF,eAAAA,gBAR2B,0BAAA,SAQX,OARW,uBAAA,kBAqBzBrF,SAZFqK,OACEoV,WAVyB,gBAUzBA,UACAC,YAXyB,gBAWzBA,WACAta,WAZyB,gBAYzBA,UACAqP,eAbyB,gBAazBA,cACA1B,UAdyB,gBAczBA,SACAiE,UAfyB,gBAezBA,SACA6F,SAhByB,gBAgBzBA,QAEFlR,WAGE3L,SAHF2L,UACAmB,QAEE9M,SAFF8M,MACAoT,mBACElgB,SADFkgB;AAGF7iB,4BACEC,SACA,CAAC,mBAAmB,cAAc,cAAc,aAAa,aAA7D,GACA,eAHe;AAMjB,cAAM6iB,mBAAmBjiB,aAAa8hB,aAAD;AAErCphB,iCAAuB,WAAM;AAC3B,gBAAIuhB,iBAAgB,GAAI;AACtBxU,uBAAS;gBAAEzL,MAAMzF,QAAQ4kB;cAAhB,CAAD;YACT;UACF,GAAE,CACD1T,UACAuU,mBAAmB,OAAOpT,OAC1B2H,cACA1B,SACAiE,SACA6F,MANC,CAJmB;AAatB,cAAM8C,YAAYO,mBACdD,gBACAzQ,KAAK4Q,KAAKlb,KAAKzB,SAASgc,QAAxB;AAEJ,cAAMY,cAActlB,SAAMuS,QACxB,WAAA;AAAA,mBACEqS,YAAY,IACR,CAAA,EAAA,OAAI,IAAItjB,MAAMsjB,SAAV,CAAJ,EAA0BW,KAAK,IAA/B,EAAqClf,IAAI,SAAC8B,IAAGwB,GAAJ;AAAA,qBAAUA;YAAV,CAAzC,IACA,CAAA;UAHN,GAIA,CAACib,SAAD,CALkB;AAQpB,cAAMC,OAAO7kB,SAAMuS,QAAQ,WAAM;AAC/B,gBAAIsS;AAEJ,gBAAIM,kBAAkB;AACpBN,cAAAA,QAAO1a;YACR,OAAM;AACL,kBAAMqb,YAAYd,WAAWC;AAC7B,kBAAMc,UAAUD,YAAYd;AAE5BG,cAAAA,QAAO1a,KAAKub,MAAMF,WAAWC,OAAtB;YACR;AAED,gBAAIpP,sBAAsB;AACxB,qBAAOwO;YACR;AAED,mBAAO3a,WAAW2a,OAAM;cAAEza;cAAmBC;cAAUC;YAA/B,CAAP;UAClB,GAAE,CACDA,eACAD,UACAD,mBACA+a,kBACAR,WACAD,UACArO,sBACAlM,IARC,CAjBU;AA4Bb,cAAMwb,kBAAkBhB,YAAY;AACpC,cAAMiB,cACJhB,cAAc,KAAKC,KAAKnc,UAAUgc,WAAWC,YAAYC,YAAY;AAEvE,cAAML,WAAWvkB,SAAMwD,YACrB,SAAAmhB,YAAa;AACX/T,qBAAS;cAAEzL,MAAMzF,QAAQ6kB;cAAUI,WAAAA;YAA1B,CAAD;UACT,GACD,CAAC/T,QAAD,CAJe;AAOjB,cAAMiV,eAAe7lB,SAAMwD,YAAY,WAAM;AAC3C,mBAAO+gB,SAAS,SAAArhB,KAAG;AAAA,qBAAIA,MAAM;YAAV,CAAJ;UAChB,GAAE,CAACqhB,QAAD,CAFkB;AAIrB,cAAMuB,WAAW9lB,SAAMwD,YAAY,WAAM;AACvC,mBAAO+gB,SAAS,SAAArhB,KAAG;AAAA,qBAAIA,MAAM;YAAV,CAAJ;UAChB,GAAE,CAACqhB,QAAD,CAFc;AAIjB,cAAMC,cAAcxkB,SAAMwD,YACxB,SAAAkhB,WAAY;AACV9T,qBAAS;cAAEzL,MAAMzF,QAAQ8kB;cAAaE,UAAAA;YAA7B,CAAD;UACT,GACD,CAAC9T,QAAD,CAJkB;AAOpBjL,iBAAOsB,OAAOhC,UAAU;YACtBqgB;YACAV;YACAC;YACAc;YACAC;YACArB;YACAsB;YACAC;YACAtB;UATsB,CAAxB;QAWD;AC/LD9kB,gBAAQqmB,aAAa;AACrBrmB,gBAAQsmB,cAAc;AAEtB,YAAaC,4BAA4B,SAA5BA,2BAA4BxkB,QAAS;AAChDA,UAAAA,OAAMykB,sBAAsB,CAACC,0BAAD;AAC5B1kB,UAAAA,OAAM4L,cAAc5E,KAAK4G,SAAzB;AACA5N,UAAAA,OAAMmM,qBAAqBnF,KAAKmF,oBAAhC;AACAnM,UAAAA,OAAM8F,WAAWkB,KAAKlB,UAAtB;AACA9F,UAAAA,OAAMgM,YAAYhF,KAAKgF,WAAvB;AACAhM,UAAAA,OAAMiM,oBAAoBjF,KAAKiF,mBAA/B;AACAjM,UAAAA,OAAMkM,wBAAwBlF,KAAKkF,uBAAnC;AACAlM,UAAAA,OAAMoM,eAAepF,KAAKoF,gBAA1B;AACApM,UAAAA,OAAMqM,mBAAmBrF,KAAKqF,kBAA9B;AACArM,UAAAA,OAAMwM,YAAYxF,KAAKwF,aAAvB;AACAxM,UAAAA,OAAMyM,WAAWzF,KAAKyF,YAAtB;QACD;AAED+X,kCAA0BxjB,aAAa;AAEvC,YAAM2jB,sBAAsB,CAAA;AAE5B,YAAMD,6BAA6B,SAA7BA,4BAA8BxlB,OAADd,OAAA;AAAA,cAAUqU,SAAVrU,MAAUqU;AAAV,iBAAuB,CACxDvT,OACA;YACE+U,SAASxB,OAAOmS,WACZ,SAAA5c,IAAK;AACHA,cAAAA,GAAE0S,QAAF;AACAjI,qBAAO8R,YAAP;YACD,IACD3T;YACJxR,OAAO;cACL0I,QAAQ2K,OAAOmS,WAAW,YAAYhU;YADjC;YAGPxC,OAAO;UAVT,CAFwD;QAAvB;AAiBnC,iBAASR,UAAQC,QAAOU,QAAQC,eAAehL,UAAU;AACvD,cAAI+K,OAAO7K,SAASzF,QAAQC,MAAM;AAChC,mBAAAsB,UAAA;cACEqlB,cAAcF;YADhB,GAEK9W,MAFL;UAID;AAED,cAAIU,OAAO7K,SAASzF,QAAQqmB,YAAY;AACtC,mBAAA9kB,UAAA,CAAA,GACKqO,QADL;cAEEgX,cAAcrhB,SAASiL,aAAaoW,gBAAgBF;YAFtD,CAAA;UAID;AAED,cAAIpW,OAAO7K,SAASzF,QAAQsmB,aAAa;AAAA,gBAC/B5V,WAA8BJ,OAA9BI,UAAiBmW,WAAavW,OAApBlQ;AAElB,gBAAM0mB,gBACJ,OAAOD,aAAa,cAChBA,WACA,CAACjX,OAAMgX,aAAavgB,SAASqK,QAA5B;AAEP,gBAAIoW,eAAe;AACjB,qBAAAvlB,UAAA,CAAA,GACKqO,QADL;gBAEEgX,cAAY,CAAA,EAAA,OAAMhX,OAAMgX,cAAZ,CAA0BlW,QAA1B,CAAA;cAFd,CAAA;YAID;AAED,mBAAAnP,UAAA,CAAA,GACKqO,QADL;cAEEgX,cAAchX,OAAMgX,aAAavb,OAAO,SAAA5C,IAAC;AAAA,uBAAIA,OAAMiI;cAAV,CAA3B;YAFhB,CAAA;UAID;QACF;AAED,iBAASxC,qBAAqB3I,UAAU;AACtCA,mBAASsC,WAAWnF,QAAQ,SAAA8C,SAAU;AACpCA,YAAAA,QAAOuhB,gBAAgBxhB,SAASqK,MAAMgX,aAAavgB,SAASb,QAAOuB,EAA5C;UACxB,CAFD;QAGD;AAED,iBAASc,WAAWrB,SAApB3B,QAA2C;AAAA,cAAZU,WAAYV,OAAZU;AAC7BiB,kBAAQ9D,QAAQ,SAAA8C,SAAU;AACxBA,YAAAA,QAAOuhB,gBAAgBxhB,SAASqK,MAAMgX,aAAavgB,SAASb,QAAOuB,EAA5C;AACvBvB,YAAAA,QAAOwhB,eAAe,oBAAIrL,IAAJ;UACvB,CAHD;AAIA,iBAAOnV;QACR;AAED,iBAASuH,YAAY3N,OAArB,OAAwC;AAAA,cAAVoF,UAAU,MAAVA;AAC5B,cAAIA,QAAOwhB,gBAAgB,OAAO5mB,UAAU,aAAa;AACvDoF,YAAAA,QAAOwhB,aAAaC,IAAI7mB,KAAxB;UACD;AACD,iBAAOA;QACR;AAED,iBAAS4N,oBAAoBkZ,cAA7B,OAAyD;AAAA,cAAZ3hB,WAAY,MAAZA;AAAY,cAC/CsC,cAAsBtC,SAAtBsC,YAAY+H,SAAUrK,SAAVqK;AAEpB,cAAI,CAACA,OAAMgX,aAAa5d,UAAU,CAAC4G,OAAM2M,WAAW,CAAC3M,OAAM2M,QAAQvT,QAAQ;AACzE,mBAAOke;UACR;AAED,cAAMN,eAAehX,OAAMgX,aACxBjgB,IAAI,SAAAI,MAAE;AAAA,mBAAIc,YAAWwL,KAAK,SAAA5K,IAAC;AAAA,qBAAIA,GAAE1B,OAAOA;YAAb,CAAjB;UAAJ,CADY,EAElBsE,OAAO+G,OAFW;AAIrB,cAAM+U,gBAAgBtf,YAAWwD,OAC/B,SAAA5C,IAAC;AAAA,mBACC,CAACA,GAAEse,iBACH,CAACnX,OAAM2M,QAAQlW,SAASoC,GAAE1B,EAAzB,KACD,CAAC6I,OAAMgX,aAAavgB,SAASoC,GAAE1B,EAA9B;UAHF,CADmB;AAOtB,cAAMqgB,oBAAoB,SAApBA,mBAAqB1gB,OAAWD,QAAQ4gB,cAAsB;AAAA,gBAAzC3gB,UAAyC,QAAA;AAAzCA,sBAAQ;YAAiC;AAAA,gBAAtB2gB,iBAAsB,QAAA;AAAtBA,6BAAe,CAAA;YAAO;AAClE,gBAAMC,cAAcV,aAAalgB,KAAD;AAEhC,gBAAI,CAAC4gB,aAAa;AAChB,qBAAOH,cAAcxgB,IAAI,SAAA4gB,cAAgB;AAOvC,uBAAAhmB,UAAA,CAAA,GACKgmB,cADL;kBAEEZ,UAAU;kBACVa,WAAW;kBACX/gB;kBACAC;kBACAK,IAAE,MAAKN,SAAYA,OAAOM,KAAb,MAAmBwgB,aAAaxgB,KAAOwgB,aAAaxgB;kBACjEC,UAAU,SAAA,SAACoO,aAAanL,GAAG7C,KAAQ;AACjC,wBAAIigB,aAAa3P,MAAM,SAAArM,QAAM;AAAA,6BAAIA,OAAOjE,GAAD;oBAAV,CAAzB,GAA2C;AAC7C,6BAAOA,IAAI6M,OAAOsT,aAAaxgB,EAAxB;oBACR;kBACF;gBAXH,CAAA;cAaD,CApBM;YAqBR;AAED,gBAAMigB,eAAeplB,MAAM8Z,KAAK4L,YAAYN,YAAvB,EAAqCvT,KAArC;AAErB,mBAAOuT,aAAargB,IAAI,SAAA8gB,aAAe;AACrC,kBAAMC,cAAWnmB,UAAA,CAAA,GACZ+lB,aADY;gBAEfrgB,QACEqgB,YAAYK,eAAe,OAAOL,YAAY9S,WAAW,WAClD8S,YAAYrgB,SADnB,OAC8BwgB,cAC1BA;gBACNG,cAAc;gBACdnhB;gBACAC;gBACAK,IAAIN,SACGA,OAAOM,KADJ,MACUugB,YAAYvgB,KADtB,MAC4B0gB,cAC/BH,YAAYvgB,KAFT,MAEe0gB;gBACzBI,YAAYJ;cAZG,CAAA;AAejBC,0BAAYlhB,UAAU4gB,mBAAkB1gB,QAAQ,GAAGghB,aAAZ,CAAA,EAAA,OAClCL,cADkC,CAErC,SAAAjgB,KAAG;AAAA,uBAAIA,IAAI6M,OAAOqT,YAAYvgB,EAAvB,MAA+B0gB;cAAnC,CAFkC,CAAA,CAAA;AAKvC,qBAAOC;YACR,CAtBM;UAuBR;AAED,cAAMI,kBAAkBjhB,eAAeugB,kBAAiB,CAAlB;AAEtC,iBAAA,CAAA,EAAA,OAAWF,cAAiBY,eAA5B;QACD;AAED,iBAAS7Z,wBACP5J,MADF,OAOE;AAAA,cAAA,uBAAA,MAJEkB,SACEqK,OAASgX,eAGb,qBAHaA,cAAcrK,UAG3B,qBAH2BA;AAI3B,iBAAA,CAAA,EAAA,OAAWlY,MAAX,CAAiBuiB,cAAcrK,OAA/B,CAAA;QACD;AAED,iBAASpO,iBAAeA,iBAAxB,OAAiE;AAAA,cAAXyB,SAAW,MAAvBrK,SAAYqK;AACpDzB,UAAAA,kBAAiBA,gBAAe9C,OAAO,SAAA5C,IAAC;AAAA,mBAAI,CAACA,GAAEse;UAAP,CAAvB;AAEjB,cAAInX,OAAMgX,aAAa5d,UAAU4G,OAAM2M,WAAW3M,OAAM2M,QAAQvT,QAAQ;AACtEmF,YAAAA,kBAAiBA,gBAAe9C,OAC9B,SAAA7F,SAAM;AAAA,qBAAIA,QAAOuX,aAAavX,QAAOgiB;YAA/B,CADS;UAGlB;AAED,iBAAOrZ;QACR;AAED,iBAASC,mBAAmB/J,MAA5B,OAAgD;AAAA,cAAZkB,WAAY,MAAZA;AAClC,iBAAA,CAAA,EAAA,OAAWlB,MAAX,CAAiBkB,SAASqK,MAAMgX,cAAcrhB,SAASqK,MAAM2M,OAA7D,CAAA;QACD;AAED,iBAAShO,cAAYhJ,UAAU;AAAA,cAE3BiB,UAYEjB,SAZFiB,SACAqB,cAWEtC,SAXFsC,YACAoJ,cAUE1L,SAVF0L,aAGAE,WAOE5L,SAPF4L,UACAtO,UAME0C,SANF1C,SACAqO,WAKE3L,SALF2L,UAT2B,wBAczB3L,SAJFwiB,gBAAAA,iBAV2B,0BAAA,SAUV,OAVU,uBAW3BC,cAGEziB,SAHFyiB,aACAC,eAEE1iB,SAFF0iB,cACAC,kBACE3iB,SADF2iB;AAGFtlB,4BAAkBC,SAAS,CAAC,YAAD,GAAgB,iBAA1B;AAEjB,cAAMwO,cAAc5N,aAAa8B,QAAD;AAEhCsC,UAAAA,YAAWnF,QAAQ,SAAA8C,SAAU;AAAA,gBAEzBwB,WAGExB,QAHFwB,UACcmhB,qBAEZ3iB,QAFF4iB,cACcC,qBACZ7iB,QADFyiB;AAGFziB,YAAAA,QAAOmhB,WAAW3f,WACdgD,gBACExE,QAAOmhB,UACP0B,uBAAuB,OAAO,QAAQ1V,QACtCsV,iBAAiB,OAAO,QAAQtV,QAChC,IAJa,IAMf3I,gBACExE,QAAOmhB,UACPwB,oBACAD,iBACA,KAJa;AAOnB,gBAAI1iB,QAAOmhB,UAAU;AACnBnhB,cAAAA,QAAO8gB,cAAc,WAAA;AAAA,uBAAM/gB,SAAS+gB,YAAY9gB,QAAOuB,EAA5B;cAAN;YACtB;AAEDvB,YAAAA,QAAOsY,aAAatY,QAAOsY,cAActY,QAAOhF;UACjD,CA1BD;AA4BA,cAAM8lB,cAAc,SAAdA,aAAe5V,UAAUtQ,OAAU;AACvC8Q,qBAAS;cAAEzL,MAAMzF,QAAQsmB;cAAa5V;cAAUtQ;YAAvC,CAAD;UACT;AAED6Q,sBAAYvO,QAAQ,SAAA8R,QAAU;AAC5BA,mBAAOgS,sBAAsB1kB,eAC3BqP,SAAQ,EAAGqV,qBACX;cACEjhB,UAAU8L,YAAW;cACrBmD;YAFF,CAFyC;UAO5C,CARD;AAUA,cAAM8T,oBAAoB7kB,aAAaskB,cAAD;AAEtC5jB,iCAAuB,WAAM;AAC3B,gBAAImkB,kBAAiB,GAAI;AACvBpX,uBAAS;gBAAEzL,MAAMzF,QAAQqmB;cAAhB,CAAD;YACT;UACF,GAAE,CAACnV,UAAU8W,cAAc,OAAOxhB,OAAhC,CAJmB;AAMtBP,iBAAOsB,OAAOhC,UAAU;YACtB+gB;UADsB,CAAxB;QAGD;AAED,iBAAS9X,aAAWpH,KAAK;AACvBA,cAAI4M,SAAStR,QAAQ,SAAA8K,MAAQ;AAE3BA,iBAAKga,YAAYha,KAAKhI,OAAOgiB;UAC9B,CAHD;QAID;AC3RD,YAAMzkB,eAAa;AAGnB/C,gBAAQuoB,oBAAoB;AAC5BvoB,gBAAQwoB,wBAAwB;AAChCxoB,gBAAQyoB,oBAAoB;AAC5BzoB,gBAAQ0oB,4BAA4B;AAEpC,YAAaC,eAAe,SAAfA,cAAe5mB,QAAS;AACnCA,UAAAA,OAAM6mB,4BAA4B,CAACC,gCAAD;AAClC9mB,UAAAA,OAAM+mB,gCAAgC,CAACC,oCAAD;AACtChnB,UAAAA,OAAMinB,oCAAoC,CACxCC,wCADwC;AAG1ClnB,UAAAA,OAAM4L,cAAc5E,KAAK4G,SAAzB;AACA5N,UAAAA,OAAMwM,YAAYxF,KAAKwF,aAAvB;AACAxM,UAAAA,OAAMyM,WAAWzF,KAAKyF,YAAtB;QACD;AAEDma,qBAAa5lB,aAAaA;AAE1B,YAAM8lB,mCAAmC,SAAnCA,kCAAoC5nB,OAADd,OAA8B;AAAA,cAApBoF,WAAoBpF,MAApBoF,UAAU6B,MAAUjH,MAAViH;AAAU,cAAA,wBACrB7B,SAAxC2jB,sBAAAA,uBAD6D,0BAAA,SACtC,eADsC;AAErE,cAAIjZ,UAAU;AAEd,cAAI7I,IAAI6D,YAAY7D,IAAI6D,SAASie,oBAAb,GAAoC;AACtDjZ,sBAAU;UACX,OAAM;AACLA,sBAAU7I,IAAI+hB;UACf;AAED,iBAAO,CACLloB,OACA;YACE6O,UAAU,SAAAA,UAAA/F,IAAK;AACb3C,kBAAIqhB,kBAAkB1e,GAAEiG,OAAOC,OAA/B;YACD;YACD9O,OAAO;cACL0I,QAAQ;YADH;YAGPoG;YACAE,OAAO;YACPE,eAAejJ,IAAIgiB;UATrB,CAFK;QAcR;AAED,YAAML,uCAAuC,SAAvCA,sCAAwC9nB,OAAD4D,QAAA;AAAA,cAAUU,WAAVV,OAAUU;AAAV,iBAAyB,CACpEtE,OACA;YACE6O,UAAU,SAAAA,UAAA/F,IAAK;AACbxE,uBAASijB,sBAAsBze,GAAEiG,OAAOC,OAAxC;YACD;YACD9O,OAAO;cACL0I,QAAQ;YADH;YAGPoG,SAAS1K,SAAS8jB;YAClBlZ,OAAO;YACPE,eAAe+B,QACb,CAAC7M,SAAS8jB,qBACRpjB,OAAOiQ,KAAK3Q,SAASqK,MAAM0Z,cAA3B,EAA2CtgB,MAFzB;UATxB,CAFoE;QAAzB;AAkB7C,YAAMigB,2CAA2C,SAA3CA,0CAA4ChoB,OAAD,OAAA;AAAA,cAAUsE,WAAV,MAAUA;AAAV,iBAAyB,CACxEtE,OACA;YACE6O,UADF,SAAAA,UACW/F,IAAG;AACVxE,uBAASmjB,0BAA0B3e,GAAEiG,OAAOC,OAA5C;YACD;YACD9O,OAAO;cACL0I,QAAQ;YADH;YAGPoG,SAAS1K,SAASgkB;YAClBpZ,OAAO;YACPE,eAAe+B,QACb,CAAC7M,SAASgkB,yBACRhkB,SAAS4f,KAAK3c,KAAK,SAAA,OAAA;AAAA,kBAAGzB,OAAH,MAAGA;AAAH,qBAAYxB,SAASqK,MAAM0Z,eAAeviB,IAA9B;YAAZ,CAAnB,CAFkB;UATxB,CAFwE;QAAzB;AAmBjD,iBAAS4I,UAAQC,QAAOU,QAAQC,eAAehL,UAAU;AACvD,cAAI+K,OAAO7K,SAASzF,QAAQC,MAAM;AAChC,mBAAAsB,UAAA;cACE+nB,gBAAgB,CAAA;YADlB,GAEK1Z,MAFL;UAID;AAED,cAAIU,OAAO7K,SAASzF,QAAQuoB,mBAAmB;AAC7C,mBAAAhnB,UAAA,CAAA,GACKqO,QADL;cAEE0Z,gBAAgB/jB,SAASiL,aAAa8Y,kBAAkB,CAAA;YAF1D,CAAA;UAID;AAED,cAAIhZ,OAAO7K,SAASzF,QAAQwoB,uBAAuB;AAAA,gBAClCgB,cAAgBlZ,OAAvBlQ;AADyC,gBAG/CipB,oBAGE9jB,SAHF8jB,mBACAtW,WAEExN,SAFFwN,UAJ+C,wBAM7CxN,SADFwZ,oBAAAA,qBAL+C,0BAAA,SAK1BhM,WAL0B;AAQjD,gBAAM0W,YACJ,OAAOD,gBAAgB,cAAcA,cAAc,CAACH;AAItD,gBAAMC,iBAAiBrjB,OAAOsB,OAAO,CAAA,GAAIqI,OAAM0Z,cAAxB;AAEvB,gBAAIG,WAAW;AACbxjB,qBAAOiQ,KAAK6I,kBAAZ,EAAgCrc,QAAQ,SAAA0T,OAAS;AAC/CkT,+BAAelT,KAAD,IAAU;cACzB,CAFD;YAGD,OAAM;AACLnQ,qBAAOiQ,KAAK6I,kBAAZ,EAAgCrc,QAAQ,SAAA0T,OAAS;AAC/C,uBAAOkT,eAAelT,KAAD;cACtB,CAFD;YAGD;AAED,mBAAA7U,UAAA,CAAA,GACKqO,QADL;cAEE0Z;YAFF,CAAA;UAID;AAED,cAAIhZ,OAAO7K,SAASzF,QAAQyoB,mBAAmB;AAAA,gBACrC1hB,OAA2BuJ,OAA3BvJ,IAAWyiB,eAAgBlZ,OAAvBlQ;AADiC,gBAErC2S,YAA+CxN,SAA/CwN,UAFqC,wBAEUxN,SAArCmkB,eAAAA,gBAF2B,0BAAA,SAEX,OAFW,uBAEL3X,aAAexM,SAAfwM;AACxC,gBAAMoX,aAAavZ,OAAM0Z,eAAeviB,IAArB;AACnB,gBAAMwP,cACJ,OAAOiT,iBAAgB,cAAcA,eAAc,CAACL;AAEtD,gBAAIA,eAAe5S,aAAa;AAC9B,qBAAO3G;YACR;AAED,gBAAM+Z,oBAAiBpoB,UAAA,CAAA,GAAQqO,OAAM0Z,cAAd;AAEvB,gBAAMM,gBAAgB,SAAhBA,eAAgB7iB,MAAM;AAC1B,kBAAMK,MAAM2L,UAAShM,IAAD;AAEpB,kBAAIK,KAAK;AACP,oBAAI,CAACA,IAAI2V,WAAW;AAClB,sBAAIxG,aAAa;AACfoT,sCAAkB5iB,IAAD,IAAO;kBACzB,OAAM;AACL,2BAAO4iB,kBAAkB5iB,IAAD;kBACzB;gBACF;AAED,oBAAI2iB,iBAAiB3X,WAAW3K,GAAD,GAAO;AACpC,yBAAO2K,WAAW3K,GAAD,EAAM1E,QAAQ,SAAA0E,MAAG;AAAA,2BAAIwiB,eAAcxiB,KAAIL,EAAL;kBAAjB,CAA3B;gBACR;cACF;YACF;AAED6iB,0BAAc7iB,IAAD;AAEb,mBAAAxF,UAAA,CAAA,GACKqO,QADL;cAEE0Z,gBAAgBK;YAFlB,CAAA;UAID;AAED,cAAIrZ,OAAO7K,SAASzF,QAAQ0oB,2BAA2B;AAAA,gBACtCc,gBAAgBlZ,OAAvBlQ;AAD6C,gBAGnD+kB,OAKE5f,SALF4f,MACApS,aAIExN,SAJFwN,UAJmD,yBAQjDxN,SAHFmkB,eAAAA,iBALmD,2BAAA,SAKnC,OALmC,wBAMnDH,wBAEEhkB,SAFFgkB,uBACAxX,cACExM,SADFwM;AAGF,gBAAM0X,aACJ,OAAOD,kBAAgB,cAAcA,gBAAc,CAACD;AAEtD,gBAAMI,qBAAiBpoB,UAAA,CAAA,GAAQqO,OAAM0Z,cAAd;AAEvB,gBAAMM,iBAAgB,SAAhBA,gBAAgB7iB,MAAM;AAC1B,kBAAMK,MAAM2L,WAAShM,IAAD;AAEpB,kBAAI,CAACK,IAAI2V,WAAW;AAClB,oBAAI0M,YAAW;AACbE,qCAAkB5iB,IAAD,IAAO;gBACzB,OAAM;AACL,yBAAO4iB,mBAAkB5iB,IAAD;gBACzB;cACF;AAED,kBAAI2iB,kBAAiB3X,YAAW3K,GAAD,GAAO;AACpC,uBAAO2K,YAAW3K,GAAD,EAAM1E,QAAQ,SAAA0E,MAAG;AAAA,yBAAIwiB,gBAAcxiB,KAAIL,EAAL;gBAAjB,CAA3B;cACR;YACF;AAEDoe,iBAAKziB,QAAQ,SAAA0E,KAAG;AAAA,qBAAIwiB,eAAcxiB,IAAIL,EAAL;YAAjB,CAAhB;AAEA,mBAAAxF,UAAA,CAAA,GACKqO,QADL;cAEE0Z,gBAAgBK;YAFlB,CAAA;UAID;AACD,iBAAO/Z;QACR;AAED,iBAASrB,cAAYhJ,UAAU;AAAA,cAE3B8M,QAYE9M,SAZF8M,MACA5H,OAWElF,SAXFkF,MACA0G,WAUE5L,SAVF4L,UACAtO,UASE0C,SATF1C,SACAkQ,WAQExN,SARFwN,UAN2B,yBAczBxN,SAPFwZ,oBAAAA,qBAP2B,2BAAA,SAONhM,WAPM,wBAAA,wBAczBxN,SANFskB,uBAAAA,wBAR2B,0BAAA,SAQH,OARG,uBASlBP,iBAKP/jB,SALFqK,MAAS0Z,gBATkB,yBAczB/jB,SAJFmkB,eAAAA,gBAV2B,2BAAA,SAUX,OAVW,wBAW3BxY,WAGE3L,SAHF2L,UACAiU,OAEE5f,SAFF4f,MACApT,aACExM,SADFwM;AAGFnP,4BACEC,SACA,CAAC,cAAc,cAAc,aAAa,eAAe,eAAzD,GACA,cAHe;AAMjB,cAAMinB,mBAAmBxpB,SAAMuS,QAAQ,WAAM;AAC3C,gBAAMiX,oBAAmB,CAAA;AAEzBrf,iBAAK/H,QAAQ,SAAA0E,KAAO;AAClB,kBAAM+hB,aAAaO,gBACfK,iBAAiB3iB,KAAKkiB,gBAAgBvX,UAAtB,IAChB,CAAC,CAACuX,eAAeliB,IAAIL,EAAL;AACpBK,kBAAI+hB,aAAa,CAAC,CAACA;AACnB/hB,kBAAIgiB,iBAAiBD,eAAe;AAEpC,kBAAIA,YAAY;AACdW,gBAAAA,kBAAiB/gB,KAAK3B,GAAtB;cACD;YACF,CAVD;AAYA,mBAAO0iB;UACR,GAAE,CAACrf,MAAMif,eAAeJ,gBAAgBvX,UAAtC,CAhBsB;AAkBzB,cAAIsX,oBAAoBjX,QACtBnM,OAAOiQ,KAAK6I,kBAAZ,EAAgC/V,UAAU/C,OAAOiQ,KAAKoT,cAAZ,EAA4BtgB,MADzC;AAI/B,cAAIugB,wBAAwBF;AAE5B,cAAIA,mBAAmB;AACrB,gBAAIpjB,OAAOiQ,KAAK6I,kBAAZ,EAAgCvW,KAAK,SAAAzB,MAAE;AAAA,qBAAI,CAACuiB,eAAeviB,IAAD;YAAnB,CAAvC,GAAiE;AACnEsiB,kCAAoB;YACrB;UACF;AAED,cAAI,CAACA,mBAAmB;AACtB,gBAAIlE,QAAQA,KAAKnc,UAAUmc,KAAK3c,KAAK,SAAA,OAAA;AAAA,kBAAGzB,OAAH,MAAGA;AAAH,qBAAY,CAACuiB,eAAeviB,IAAD;YAA3B,CAAV,GAA4C;AACrEwiB,sCAAwB;YACzB;UACF;AAED,cAAMS,2BAA2BvmB,aAAaomB,qBAAD;AAE7C1lB,iCAAuB,WAAM;AAC3B,gBAAI6lB,yBAAwB,GAAI;AAC9B9Y,uBAAS;gBAAEzL,MAAMzF,QAAQuoB;cAAhB,CAAD;YACT;UACF,GAAE,CAACrX,UAAUmB,KAAX,CAJmB;AAMtB,cAAMmW,wBAAwBloB,SAAMwD,YAClC,SAAA1D,OAAK;AAAA,mBAAI8Q,SAAS;cAAEzL,MAAMzF,QAAQwoB;cAAuBpoB;YAAvC,CAAD;UAAZ,GACL,CAAC8Q,QAAD,CAF4B;AAK9B,cAAMwX,4BAA4BpoB,SAAMwD,YACtC,SAAA1D,OAAK;AAAA,mBAAI8Q,SAAS;cAAEzL,MAAMzF,QAAQ0oB;cAA2BtoB;YAA3C,CAAD;UAAZ,GACL,CAAC8Q,QAAD,CAFgC;AAKlC,cAAMuX,oBAAoBnoB,SAAMwD,YAC9B,SAACiD,MAAI3G,OAAL;AAAA,mBAAe8Q,SAAS;cAAEzL,MAAMzF,QAAQyoB;cAAmB1hB,IAAAA;cAAI3G;YAAvC,CAAD;UAAvB,GACA,CAAC8Q,QAAD,CAFwB;AAK1B,cAAMG,cAAc5N,aAAa8B,QAAD;AAEhC,cAAMujB,gCAAgChnB,eACpCqP,SAAQ,EAAG2X,+BACX;YAAEvjB,UAAU8L,YAAW;UAAvB,CAFkD;AAKpD,cAAM2X,oCAAoClnB,eACxCqP,SAAQ,EAAG6X,mCACX;YAAEzjB,UAAU8L,YAAW;UAAvB,CAFsD;AAKxDpL,iBAAOsB,OAAOhC,UAAU;YACtBukB;YACAT;YACAE;YACAd;YACAD;YACAM;YACAE;YACAN;UARsB,CAAxB;QAUD;AAED,iBAASla,aAAWpH,KAApB,OAAuC;AAAA,cAAZ7B,WAAY,MAAZA;AACzB6B,cAAIqhB,oBAAoB,SAAA9e,KAAG;AAAA,mBAAIpE,SAASkjB,kBAAkBrhB,IAAIL,IAAI4C,GAAnC;UAAJ;AAE3BvC,cAAIwhB,4BAA4B9mB,eAC9ByD,SAAS4L,SAAT,EAAoByX,2BACpB;YAAErjB;YAAoB6B;UAAtB,CAF4C;QAI/C;AAED,iBAAS2iB,iBAAiB3iB,KAAKkiB,gBAAgBvX,YAAY;AACzD,cAAIuX,eAAeliB,IAAIL,EAAL,GAAU;AAC1B,mBAAO;UACR;AAED,cAAMoE,UAAU4G,WAAW3K,GAAD;AAE1B,cAAI+D,WAAWA,QAAQnC,QAAQ;AAC7B,gBAAIihB,sBAAsB;AAC1B,gBAAIC,eAAe;AAEnB/e,oBAAQzI,QAAQ,SAAA6c,QAAU;AAExB,kBAAI2K,gBAAgB,CAACD,qBAAqB;AACxC;cACD;AAED,kBAAIF,iBAAiBxK,QAAQ+J,gBAAgBvX,UAAzB,GAAsC;AACxDmY,+BAAe;cAChB,OAAM;AACLD,sCAAsB;cACvB;YACF,CAXD;AAYA,mBAAOA,sBAAsB,OAAOC,eAAe,OAAO;UAC3D;AAED,iBAAO;QACR;AChWD,YAAMC,iCAAiC,SAAjCA,gCAAiC/iB,KAAG;AAAA,iBAAK,CAAA;QAAL;AAC1C,YAAMgjB,kCAAkC,SAAlCA,iCAAkC5c,MAAI;AAAA,iBAAK,CAAA;QAAL;AAG5CxN,gBAAQqqB,cAAc;AACtBrqB,gBAAQsqB,eAAe;AACvBtqB,gBAAQuqB,gBAAgB;AAExB,YAAaC,cAAc,SAAdA,aAAczoB,QAAS;AAClCA,UAAAA,OAAM4L,cAAc5E,KAAK4G,SAAzB;AACA5N,UAAAA,OAAMwM,YAAYxF,KAAKwF,aAAvB;AACAxM,UAAAA,OAAMyM,WAAWzF,KAAKyF,YAAtB;QACD;AAEDgc,oBAAYznB,aAAa;AAEzB,iBAAS4M,UAAQC,QAAOU,QAAQC,eAAehL,UAAU;AAAA,cAAA,wBAKnDA,SAHFklB,yBAAAA,0BAFqD,0BAAA,SAE3BN,iCAF2B,uBAAA,wBAKnD5kB,SAFFmlB,0BAAAA,2BAHqD,0BAAA,SAG1BN,kCAH0B,uBAIrDrX,WACExN,SADFwN;AAGF,cAAIzC,OAAO7K,SAASzF,QAAQC,MAAM;AAChC,mBAAAsB,UAAA;cACEopB,UAAU,CAAA;YADZ,GAEK/a,MAFL;UAID;AAED,cAAIU,OAAO7K,SAASzF,QAAQuqB,eAAe;AACzC,mBAAAhpB,UAAA,CAAA,GACKqO,QADL;cAEE+a,UAAUplB,SAASiL,aAAama,YAAY,CAAA;YAF9C,CAAA;UAID;AAED,cAAIra,OAAO7K,SAASzF,QAAQqqB,aAAa;AAAA,gBAAA7T;AAAA,gBAC/BJ,QAAiB9F,OAAjB8F,OAAOhW,QAAUkQ,OAAVlQ;AAEf,gBAAMwqB,cACJ,OAAOhb,OAAM+a,SAASvU,KAAf,MAA0B,cAC7BxG,OAAM+a,SAASvU,KAAf,IACAqU,wBAAwB1X,SAASqD,KAAD,CAAT;AAE7B,mBAAA7U,UAAA,CAAA,GACKqO,QADL;cAEE+a,UAAQppB,UAAA,CAAA,GACHqO,OAAM+a,WADHnU,aAAA,CAAA,GAAAA,WAELJ,KAFK,IAEG9S,iBAAiBlD,OAAOwqB,WAAR,GAFnBpU,WAAA;YAFV,CAAA;UAOD;AAED,cAAIlG,OAAO7K,SAASzF,QAAQsqB,cAAc;AAAA,gBAAA,uBAAA,kBAAA,uBAAAO,YAAAC;AAAA,gBAChC1U,SAA2B9F,OAA3B8F,OAAO1F,WAAoBJ,OAApBI,UAAUtQ,SAAUkQ,OAAVlQ;AAEzB,gBAAMwqB,eACJ,OAAOhb,OAAM+a,SAASvU,MAAf,MAA0B,cAC7BxG,OAAM+a,SAASvU,MAAf,IACAqU,wBAAwB1X,SAASqD,MAAD,CAAT;AAE7B,gBAAM2U,eACJ,QAAOH,gBAAP,OAAA,UAAA,wBAAOA,aAAaI,cAApB,OAAA,SAAO,sBAAyBta,QAAzB,OAAuC,cAC1Cka,aAAYI,UAAUta,QAAtB,IACAga,0BAAwB,mBACtB3X,SAASqD,MAAD,MADc,OAAA,UAAA,wBACtB,iBAAiBlC,UADK,OAAA,SACtB,sBAAwBb,KAAK,SAAA7F,MAAI;AAAA,qBAAIA,KAAKhI,OAAOuB,OAAO2J;YAAvB,CAAjC,CADsB;AAI9B,mBAAAnP,UAAA,CAAA,GACKqO,QADL;cAEE+a,UAAQppB,UAAA,CAAA,GACHqO,OAAM+a,WADHG,aAAA,CAAA,GAAAA,WAEL1U,MAFK,IAAA7U,UAAA,CAAA,GAGDqpB,cAHC;gBAIJI,WAASzpB,UAAA,CAAA,GACHqpB,aAAYI,aAAa,CAAA,IADtBH,aAAA,CAAA,GAAAA,WAENna,QAFM,IAEKpN,iBAAiBlD,QAAO2qB,YAAR,GAFrBF,WAAA;cAJL,CAAA,GAAAC,WAAA;YAFV,CAAA;UAaD;QACF;AAED,iBAASvc,cAAYhJ,UAAU;AAAA,cAAA,wBACwBA,SAA7C0lB,mBAAAA,oBADqB,0BAAA,SACD,OADC,uBACK5Y,QAAmB9M,SAAnB8M,MAAMnB,WAAa3L,SAAb2L;AAExC,cAAMmZ,cAAc/pB,SAAMwD,YACxB,SAACsS,OAAOhW,OAAR;AAAA,mBACE8Q,SAAS;cACPzL,MAAMzF,QAAQqqB;cACdjU;cACAhW;YAHO,CAAD;UADV,GAMA,CAAC8Q,QAAD,CAPkB;AAUpB,cAAMoZ,eAAehqB,SAAMwD,YACzB,SAACsS,OAAO1F,UAAUtQ,OAAlB;AAAA,mBACE8Q,SAAS;cACPzL,MAAMzF,QAAQsqB;cACdlU;cACA1F;cACAtQ;YAJO,CAAD;UADV,GAOA,CAAC8Q,QAAD,CARmB;AAWrB,cAAMga,uBAAuBznB,aAAawnB,iBAAD;AAEzC9mB,iCAAuB,WAAM;AAC3B,gBAAI+mB,qBAAoB,GAAI;AAC1Bha,uBAAS;gBAAEzL,MAAMzF,QAAQuqB;cAAhB,CAAD;YACT;UACF,GAAE,CAAClY,KAAD,CAJmB;AAMtBpM,iBAAOsB,OAAOhC,UAAU;YACtB8kB;YACAC;UAFsB,CAAxB;QAID;AAED,iBAAS9b,aAAWpH,KAApBjH,OAAuC;AAAA,cAAZoF,WAAYpF,MAAZoF;AAAY,cAAA,yBAKjCA,SAHFklB,yBAAAA,0BAFmC,2BAAA,SAETN,iCAFS,wBAAA,yBAKjC5kB,SAFFmlB,0BAAAA,2BAHmC,2BAAA,SAGRN,kCAHQ,wBAI1BO,WACPplB,SADFqK,MAAS+a;AAGX,cAAIvjB,KAAK;AACPA,gBAAIwI,QACF,OAAO+a,SAASvjB,IAAIL,EAAL,MAAa,cACxB4jB,SAASvjB,IAAIL,EAAL,IACR0jB,wBAAwBrjB,GAAD;AAE7BA,gBAAI+jB,WAAW,SAAA5nB,SAAW;AACxB,qBAAOgC,SAAS8kB,YAAYjjB,IAAIL,IAAIxD,OAA7B;YACR;AAED6D,gBAAI8M,MAAMxR,QAAQ,SAAA8K,MAAQ;AACxB,kBAAI,CAACpG,IAAIwI,MAAMob,WAAW;AACxB5jB,oBAAIwI,MAAMob,YAAY,CAAA;cACvB;AAEDxd,mBAAKoC,QACH,OAAOxI,IAAIwI,MAAMob,UAAUxd,KAAKhI,OAAOuB,EAAhC,MAAwC,cAC3CK,IAAIwI,MAAMob,UAAUxd,KAAKhI,OAAOuB,EAAhC,IACA2jB,yBAAyBld,IAAD;AAE9BA,mBAAK2d,WAAW,SAAA5nB,SAAW;AACzB,uBAAOgC,SAAS+kB,aAAaljB,IAAIL,IAAIyG,KAAKhI,OAAOuB,IAAIxD,OAA9C;cACR;YACF,CAbD;UAcD;QACF;AC/JDvD,gBAAQorB,mBAAmB;AAC3BprB,gBAAQqrB,iBAAiB;AAEzB,YAAaC,iBAAiB,SAAjBA,gBAAiBvpB,QAAS;AACrCA,UAAAA,OAAM4L,cAAc5E,KAAK4G,SAAzB;AACA5N,UAAAA,OAAMqM,mBAAmBrF,KAAK,SAAC1E,MAADlE,OAAwB;AAAA,gBAAfoF,WAAepF,MAAfoF;AACrC,mBAAA,CAAA,EAAA,OAAWlB,MAAX,CAAiBkB,SAASqK,MAAM2b,WAAhC,CAAA;UACD,CAFD;AAGAxpB,UAAAA,OAAMoM,eAAepF,KAAKoF,gBAA1B;AACApM,UAAAA,OAAMwM,YAAYxF,KAAKwF,aAAvB;QACD;AAED+c,uBAAevoB,aAAa;AAE5B,iBAAS4M,UAAQC,QAAOU,QAAQC,eAAehL,UAAU;AACvD,cAAI+K,OAAO7K,SAASzF,QAAQC,MAAM;AAChC,mBAAAsB,UAAA;cACEgqB,aAAa,CAAA;YADf,GAEK3b,MAFL;UAID;AAED,cAAIU,OAAO7K,SAASzF,QAAQorB,kBAAkB;AAC5C,mBAAA7pB,UAAA,CAAA,GACKqO,QADL;cAEE2b,aAAahmB,SAASiL,aAAa+a,eAAe,CAAA;YAFpD,CAAA;UAID;AAED,cAAIjb,OAAO7K,SAASzF,QAAQqrB,gBAAgB;AAC1C,mBAAA9pB,UAAA,CAAA,GACKqO,QADL;cAEE2b,aAAajoB,iBAAiBgN,OAAOib,aAAa3b,OAAM2b,WAA3B;YAF/B,CAAA;UAID;QACF;AAED,iBAASpd,iBACP3H,SADF3B,QAOE;AAAA,cAHa0mB,cAGb1mB,OAJEU,SACEqK,MAAS2b;AAKb,cAAI,CAACA,eAAe,CAACA,YAAYviB,QAAQ;AACvC,mBAAOxC;UACR;AAED,cAAMglB,kBAAe,CAAA,EAAA,OAAOD,WAAP;AAGrB,cAAME,cAAW,CAAA,EAAA,OAAOjlB,OAAP;AAGjB,cAAMklB,iBAAiB,CAAA;AAZvB,cAAA,QAAA,SAAAvjB,SAAA;AAgBE,gBAAMwjB,iBAAiBH,gBAAgBvY,MAAhB;AACvB,gBAAM2Y,aAAaH,YAAYvoB,UAAU,SAAAuF,IAAC;AAAA,qBAAIA,GAAE1B,OAAO4kB;YAAb,CAAvB;AACnB,gBAAIC,aAAa,IAAI;AACnBF,6BAAe3iB,KAAK0iB,YAAY1I,OAAO6I,YAAY,CAA/B,EAAkC,CAAlC,CAApB;YACD;UApBH;AAeA,iBAAOH,YAAYziB,UAAUwiB,gBAAgBxiB,QAAQ;AAAA,kBAAA;UAMpD;AAGD,iBAAA,CAAA,EAAA,OAAW0iB,gBAAmBD,WAA9B;QACD;AAED,iBAASld,cAAYhJ,UAAU;AAAA,cACrB2L,WAAa3L,SAAb2L;AAER3L,mBAAS8lB,iBAAiB/qB,SAAMwD,YAC9B,SAAAynB,aAAe;AACb,mBAAOra,SAAS;cAAEzL,MAAMzF,QAAQqrB;cAAgBE;YAAhC,CAAD;UAChB,GACD,CAACra,QAAD,CAJwB;QAM3B;ACvED3Q,sBAAc2U,YAAY;AAG1BlV,gBAAQ6rB,sBAAsB;AAC9B7rB,gBAAQ8rB,iBAAiB;AACzB9rB,gBAAQ+rB,qBAAqB;AAC7B/rB,gBAAQgsB,cAAc;AAEtB,YAAaC,mBAAmB,SAAnBA,kBAAmBlqB,QAAS;AACvCA,UAAAA,OAAMmqB,kBAAkB,CAACC,sBAAD;AACxBpqB,UAAAA,OAAM8M,eAAe9F,KAAK;YACxB5H,OAAO;cACLirB,UAAU;YADL;UADiB,CAA1B;AAKArqB,UAAAA,OAAM4L,cAAc5E,KAAK4G,SAAzB;AACA5N,UAAAA,OAAMwM,YAAYxF,KAAKwF,aAAvB;AACAxM,UAAAA,OAAMuM,4BAA4BvF,KAAKuF,6BAAvC;QACD;AAED,YAAM6d,yBAAyB,SAAzBA,wBAA0BlrB,OAADd,OAAiC;AAAA,cAAvBoF,WAAuBpF,MAAvBoF,UAAUiP,SAAarU,MAAbqU;AAAa,cACtDtD,WAAa3L,SAAb2L;AAER,cAAMmb,gBAAgB,SAAhBA,eAAiBtiB,IAAGyK,SAAW;AACnC,gBAAI8X,eAAe;AACnB,gBAAIviB,GAAEtE,SAAS,cAAc;AAE3B,kBAAIsE,GAAEwiB,WAAWxiB,GAAEwiB,QAAQvjB,SAAS,GAAG;AACrC;cACD;AACDsjB,6BAAe;YAChB;AACD,gBAAME,kBAAkBC,eAAejY,OAAD;AACtC,gBAAMkY,iBAAiBF,gBAAgB7lB,IAAI,SAAA8B,IAAC;AAAA,qBAAI,CAACA,GAAE1B,IAAI0B,GAAEmM,UAAT;YAAJ,CAArB;AAEvB,gBAAM+X,UAAUL,eAAevX,KAAK6X,MAAM7iB,GAAEwiB,QAAQ,CAAV,EAAaI,OAAxB,IAAmC5iB,GAAE4iB;AAEpE,gBAAIE;AACJ,gBAAIC;AAEJ,gBAAMC,cAAc,SAAdA,eAAoB;AACxB9gB,qBAAO+gB,qBAAqBH,GAA5B;AACAA,oBAAM;AACN3b,uBAAS;gBAAEzL,MAAMzF,QAAQ+rB;cAAhB,CAAD;YACT;AACD,gBAAMkB,eAAe,SAAfA,gBAAqB;AACzBhhB,qBAAO+gB,qBAAqBH,GAA5B;AACAA,oBAAM;AACN3b,uBAAS;gBAAEzL,MAAMzF,QAAQ8rB;gBAAgBa,SAASG;cAAzC,CAAD;YACT;AAED,gBAAMI,2CAA2C,SAA3CA,0CAA2CC,YAAc;AAC7DL,kCAAoBK;AACpB,kBAAI,CAACN,KAAK;AACRA,sBAAM5gB,OAAOmhB,sBAAsBH,YAA7B;cACP;YACF;AAED,gBAAMI,oBAAoB;cACxBC,OAAO;gBACLC,WAAW;gBACXC,aAAa,SAAA,YAAAzjB,IAAC;AAAA,yBAAImjB,yCAAyCnjB,GAAE4iB,OAAH;gBAA5C;gBACdc,SAAS;gBACTC,WAAW,SAAA,UAAA3jB,IAAK;AACd/F,2BAASmI,oBACP,aACAkhB,kBAAkBC,MAAME,WAF1B;AAIAxpB,2BAASmI,oBACP,WACAkhB,kBAAkBC,MAAMI,SAF1B;AAIAX,8BAAW;gBACZ;cAdI;cAgBPY,OAAO;gBACLJ,WAAW;gBACXC,aAAa,SAAA,YAAAzjB,IAAK;AAChB,sBAAIA,GAAE6jB,YAAY;AAChB7jB,oBAAAA,GAAE8jB,eAAF;AACA9jB,oBAAAA,GAAE+jB,gBAAF;kBACD;AACDZ,2DAAyCnjB,GAAEwiB,QAAQ,CAAV,EAAaI,OAAd;AACxC,yBAAO;gBACR;gBACDc,SAAS;gBACTC,WAAW,SAAA,UAAA3jB,IAAK;AACd/F,2BAASmI,oBACPkhB,kBAAkBM,MAAMJ,WACxBF,kBAAkBM,MAAMH,WAF1B;AAIAxpB,2BAASmI,oBACPkhB,kBAAkBM,MAAMF,SACxBJ,kBAAkBM,MAAMH,WAF1B;AAIAT,8BAAW;gBACZ;cArBI;YAjBiB;AA0C1B,gBAAMgB,SAASzB,eACXe,kBAAkBM,QAClBN,kBAAkBC;AACtB,gBAAMU,qBAAqBniB,sBAAqB,IAC5C;cAAEG,SAAS;YAAX,IACA;AACJhI,qBAASkI,iBACP6hB,OAAOR,WACPQ,OAAOP,aACPQ,kBAHF;AAKAhqB,qBAASkI,iBACP6hB,OAAON,SACPM,OAAOL,WACPM,kBAHF;AAMA9c,qBAAS;cACPzL,MAAMzF,QAAQ6rB;cACdnb,UAAU8D,QAAOzN;cACjBknB,aAAazZ,QAAOI;cACpB8X;cACAC;YALO,CAAD;UAOT;AAED,iBAAO,CACL1rB,OACA;YACEitB,aAAa,SAAA,YAAAnkB,IAAC;AAAA,qBAAIA,GAAE0S,QAAF,KAAe4P,cAActiB,IAAGyK,MAAJ;YAAhC;YACd2Z,cAAc,SAAA,aAAApkB,IAAC;AAAA,qBAAIA,GAAE0S,QAAF,KAAe4P,cAActiB,IAAGyK,MAAJ;YAAhC;YACfrT,OAAO;cACL0I,QAAQ;YADH;YAGPukB,WAAW;YACXvhB,MAAM;UAPR,CAFK;QAYR;AAEDof,yBAAiBlpB,aAAa;AAE9B,iBAAS4M,UAAQC,QAAOU,QAAQ;AAC9B,cAAIA,OAAO7K,SAASzF,QAAQC,MAAM;AAChC,mBAAAsB,UAAA;cACEuqB,gBAAgB;gBACduC,cAAc,CAAA;cADA;YADlB,GAIKze,MAJL;UAMD;AAED,cAAIU,OAAO7K,SAASzF,QAAQgsB,aAAa;AACvC,mBAAAzqB,UAAA,CAAA,GACKqO,QADL;cAEEkc,gBAAgB;gBACduC,cAAc,CAAA;cADA;YAFlB,CAAA;UAMD;AAED,cAAI/d,OAAO7K,SAASzF,QAAQ6rB,qBAAqB;AAAA,gBACvCc,UAAmDrc,OAAnDqc,SAASjc,WAA0CJ,OAA1CI,UAAUud,cAAgC3d,OAAhC2d,aAAavB,iBAAmBpc,OAAnBoc;AAExC,mBAAAnrB,UAAA,CAAA,GACKqO,QADL;cAEEkc,gBAAcvqB,UAAA,CAAA,GACTqO,OAAMkc,gBADG;gBAEZwC,QAAQ3B;gBACRD;gBACAuB;gBACAM,kBAAkB7d;cALN,CAAA;YAFhB,CAAA;UAUD;AAED,cAAIJ,OAAO7K,SAASzF,QAAQ8rB,gBAAgB;AAAA,gBAClCa,WAAYrc,OAAZqc;AADkC,gBAAA,wBAEW/c,OAAMkc,gBAAnDwC,SAFkC,sBAElCA,QAAQL,eAF0B,sBAE1BA,aAF0B,yBAAA,sBAEbvB,gBAAAA,kBAFa,2BAAA,SAEI,CAAA,IAFJ;AAI1C,gBAAM8B,SAAS7B,WAAU2B;AACzB,gBAAMG,mBAAmBD,SAASP;AAElC,gBAAMS,kBAAkB,CAAA;AAExBhC,4BAAehqB,QAAQ,SAAAmC,QAA6B;AAAA,kBAA3B8pB,WAA2B9pB,OAAA,CAAA,GAAjB+pB,cAAiB/pB,OAAA,CAAA;AAClD6pB,8BAAgBC,QAAD,IAAa5Z,KAAKE,IAC/B2Z,cAAcA,cAAcH,kBAC5B,CAF0B;YAI7B,CALD;AAOA,mBAAAltB,UAAA,CAAA,GACKqO,QADL;cAEEkc,gBAAcvqB,UAAA,CAAA,GACTqO,OAAMkc,gBADG;gBAEZuC,cAAY9sB,UAAA,CAAA,GACPqO,OAAMkc,eAAeuC,cADd,CAAA,GAEPK,eAFO;cAFA,CAAA;YAFhB,CAAA;UAUD;AAED,cAAIpe,OAAO7K,SAASzF,QAAQ+rB,oBAAoB;AAC9C,mBAAAxqB,UAAA,CAAA,GACKqO,QADL;cAEEkc,gBAAcvqB,UAAA,CAAA,GACTqO,OAAMkc,gBADG;gBAEZwC,QAAQ;gBACRC,kBAAkB;cAHN,CAAA;YAFhB,CAAA;UAQD;QACF;AAED,YAAMjgB,gCAA8B,SAA9BA,6BAA8B/I,UAAY;AAAA,cAE5C0L,cAIE1L,SAJF0L,aACA4d,kBAGEtpB,SAHFspB,iBACA1d,WAEE5L,SAFF4L,UACS2a,iBACPvmB,SADFqK,MAASkc;AAGX,cAAMza,cAAc5N,aAAa8B,QAAD;AAEhC0L,sBAAYvO,QAAQ,SAAA8R,QAAU;AAC5B,gBAAMU,YAAYlL,gBAChBwK,OAAOqa,oBAAoB,OAAO,QAAQlc,QAC1Ckc,oBAAoB,OAAO,QAAQlc,QACnC,IAH+B;AAMjC6B,mBAAOU,YAAYA;AACnBV,mBAAO/T,QACLqrB,eAAeuC,aAAa7Z,OAAOzN,EAAnC,KACAyN,OAAO7M,iBACP6M,OAAO/T;AACT+T,mBAAOsa,aAAahD,eAAeyC,qBAAqB/Z,OAAOzN;AAE/D,gBAAImO,WAAW;AACbV,qBAAO0X,kBAAkBpqB,eAAeqP,SAAQ,EAAG+a,iBAAiB;gBAClE3mB,UAAU8L,YAAW;gBACrBmD;cAFkE,CAA7B;YAIxC;UACF,CApBD;QAqBD;AAED,iBAASjG,cAAYhJ,UAAU;AAAA,cACrB1C,UAAuD0C,SAAvD1C,SAASqO,WAA8C3L,SAA9C2L,UADY,wBACkC3L,SAApCwpB,iBAAAA,kBADE,0BAAA,SACgB,OADhB,uBACsBvoB,UAAYjB,SAAZiB;AAEnD5D,4BAAkBC,SAAS,CAAC,mBAAD,GAAuB,kBAAjC;AAEjB,cAAMmsB,qBAAqBvrB,aAAasrB,eAAD;AACvC5qB,iCAAuB,WAAM;AAC3B,gBAAI6qB,mBAAkB,GAAI;AACxB9d,uBAAS;gBAAEzL,MAAMzF,QAAQgsB;cAAhB,CAAD;YACT;UACF,GAAE,CAACxlB,OAAD,CAJmB;AAMtB,cAAMyoB,gBAAgB3uB,SAAMwD,YAC1B,WAAA;AAAA,mBAAMoN,SAAS;cAAEzL,MAAMzF,QAAQgsB;YAAhB,CAAD;UAAd,GACA,CAAC9a,QAAD,CAFoB;AAKtBjL,iBAAOsB,OAAOhC,UAAU;YACtB0pB;UADsB,CAAxB;QAGD;AAED,iBAASxC,eAAejY,QAAQ;AAC9B,cAAM0a,cAAc,CAAA;AACpB,cAAMC,gBAAgB,SAAhBA,eAAgB3a,SAAU;AAC9B,gBAAIA,QAAOhO,WAAWgO,QAAOhO,QAAQwC,QAAQ;AAC3CwL,cAAAA,QAAOhO,QAAQG,IAAIwoB,cAAnB;YACD;AACDD,wBAAYnmB,KAAKyL,OAAjB;UACD;AACD2a,wBAAc3a,MAAD;AACb,iBAAO0a;QACR;ACvSD,YAAME,aAAa;UACjBhD,UAAU;UACViD,KAAK;QAFY;AAKnB,YAAaC,oBAAoB,SAApBA,mBAAoBvtB,QAAS;AACxCA,UAAAA,OAAM2M,kBAAkB3F,KAAKwmB,YAA7B;AACAxtB,UAAAA,OAAMgN,YAAYhG,KAAKwmB,YAAvB;AACAxtB,UAAAA,OAAM4M,oBAAoB5F,KAAKwmB,YAA/B;AACAxtB,UAAAA,OAAM6M,oBAAoB7F,KAAKwmB,YAA/B;AAEAxtB,UAAAA,OAAM8M,eAAe9F,KAAK,SAAC9H,OAADd,OAAA;AAAA,gBAAUqF,UAAVrF,MAAUqF;AAAV,mBAAuB,CAC/CvE,OACA;cACEE,OAAKI,UAAA,CAAA,GACA6tB,YADA;gBAEHjb,MAAS3O,QAAOkP,YAAZ;gBACJjU,OAAU+E,QAAOoP,aAAZ;cAHF,CAAA;YADP,CAF+C;UAAvB,CAA1B;AAWA7S,UAAAA,OAAMiN,aAAajG,KAAK,SAAC9H,OAAD4D,QAAA;AAAA,gBAAU2I,OAAV3I,OAAU2I;AAAV,mBAAqB,CAC3CvM,OACA;cACEE,OAAKI,UAAA,CAAA,GACA6tB,YADA;gBAEHjb,MAAS3G,KAAKhI,OAAOkP,YAAjB;gBACJjU,OAAU+M,KAAKhI,OAAOoP,aAAjB;cAHF,CAAA;YADP,CAF2C;UAArB,CAAxB;AAWA7S,UAAAA,OAAM+M,eAAe/F,KAAK,SAAC9H,OAAD,OAAA;AAAA,gBAAUuE,UAAV,MAAUA;AAAV,mBAAuB,CAC/CvE,OACA;cACEE,OAAKI,UAAA,CAAA,GACA6tB,YADA;gBAEHjb,MAAS3O,QAAOkP,YAAZ;gBACJjU,OAAU+E,QAAOoP,aAAZ;cAHF,CAAA;YADP,CAF+C;UAAvB,CAA1B;QAUD;AAED0a,0BAAkBvsB,aAAa;AAE/B,YAAMwsB,eAAe,SAAfA,cAAgBtuB,OAAD,OAAA;AAAA,cAAUsE,WAAV,MAAUA;AAAV,iBAAyB,CAC5CtE,OACA;YACEE,OAAO;cACLirB,UAAU;cACV3rB,OAAU8E,SAASqO,oBAAd;YAFA;UADT,CAF4C;QAAzB;AC/CrB,YAAMwb,eAAa;UACjBI,SAAS;UACTC,WAAW;QAFM;AAKnB,YAAMF,iBAAe,SAAfA,cAAgBtuB,OAADd,OAAA;AAAA,cAAUoF,WAAVpF,MAAUoF;AAAV,iBAAyB,CAC5CtE,OACA;YACEE,OAAO;cACLquB,SAAS;cACT/uB,OAAU8E,SAASqO,oBAAd;YAFA;UADT,CAF4C;QAAzB;AAUrB,YAAa8b,iBAAiB,SAAjBA,gBAAiB3tB,QAAS;AACrCA,UAAAA,OAAMgN,YAAYhG,KAAKwmB,cAAvB;AACAxtB,UAAAA,OAAM4M,oBAAoB5F,KAAKwmB,cAA/B;AACAxtB,UAAAA,OAAM6M,oBAAoB7F,KAAKwmB,cAA/B;AAEAxtB,UAAAA,OAAM8M,eAAe9F,KAAK,SAAC9H,OAAD4D,QAAA;AAAA,gBAAUW,UAAVX,OAAUW;AAAV,mBAAuB,CAC/CvE,OACA;cACEE,OAAKI,UAAA,CAAA,GACA6tB,cADA;gBAEH3uB,OAAU+E,QAAOoP,aAAZ;cAFF,CAAA;YADP,CAF+C;UAAvB,CAA1B;AAUA7S,UAAAA,OAAMiN,aAAajG,KAAK,SAAC9H,OAAD,OAAA;AAAA,gBAAUuM,OAAV,MAAUA;AAAV,mBAAqB,CAC3CvM,OACA;cACEE,OAAKI,UAAA,CAAA,GACA6tB,cADA;gBAEH3uB,OAAU+M,KAAKhI,OAAOoP,aAAjB;cAFF,CAAA;YADP,CAF2C;UAArB,CAAxB;AAUA7S,UAAAA,OAAM+M,eAAe/F,KAAK,SAAC9H,OAAD,OAAA;AAAA,gBAAUuE,UAAV,MAAUA;AAAV,mBAAuB,CAC/CvE,OACA;cACEE,OAAKI,UAAA,CAAA,GACA6tB,cADA;gBAEH3uB,OAAU+E,QAAOoP,aAAZ;cAFF,CAAA;YADP,CAF+C;UAAvB,CAA1B;QASD;AAED8a,uBAAe3sB,aAAa;ACnDrB,iBAAS4sB,cAAc5tB,QAAO;AACnCA,UAAAA,OAAM0M,cAAc1F,KAAK0F,aAAzB;AACA1M,UAAAA,OAAMgN,YAAYhG,KAAKwmB,cAAvB;AACAxtB,UAAAA,OAAM4M,oBAAoB5F,KAAKwmB,cAA/B;AACAxtB,UAAAA,OAAM6M,oBAAoB7F,KAAKwmB,cAA/B;AACAxtB,UAAAA,OAAM8M,eAAe9F,KAAK8F,cAA1B;AACA9M,UAAAA,OAAMiN,aAAajG,KAAKiG,YAAxB;AACAjN,UAAAA,OAAM+M,eAAe/F,KAAK+F,cAA1B;QACD;AAED6gB,sBAAc5sB,aAAa;AAE3B,YAAM0L,gBAAgB,SAAhBA,eAAiBxN,OAADd,OAAA;AAAA,cAAUoF,WAAVpF,MAAUoF;AAAV,iBAAyB,CAC7CtE,OACA;YACEE,OAAO;cACLT,UAAa6E,SAASoO,uBAAd;YADH;UADT,CAF6C;QAAzB;AAStB,YAAM4b,iBAAe,SAAfA,cAAgBtuB,OAAD4D,QAAA;AAAA,cAAUU,WAAVV,OAAUU;AAAV,iBAAyB,CAC5CtE,OACA;YACEE,OAAO;cACLquB,SAAS;cACTI,MAAM;cACNlvB,UAAa6E,SAASoO,uBAAd;YAHH;UADT,CAF4C;QAAzB;AAWrB,YAAM9E,iBAAiB,SAAjBA,gBAAkB5N,OAAD,OAAA;AAAA,cAAUuE,UAAV,MAAUA;AAAV,iBAAuB,CAC5CvE,OACA;YACEE,OAAO;cACLsuB,WAAW;cACXG,MAAMpqB,QAAOsP,iBACNtP,QAAOsP,iBADR,YAEFnC;cACJjS,UAAa8E,QAAOmP,gBAAZ;cACRlU,OAAU+E,QAAOoP,aAAZ;YANA;UADT,CAF4C;QAAvB;AAcvB,YAAM5F,eAAe,SAAfA,cAAgB/N,OAAD,OAAA;AAAA,cAAUuM,OAAV,MAAUA;AAAV,iBAAqB,CACxCvM,OACA;YACEE,OAAO;cACLsuB,WAAW;cACXG,MAASpiB,KAAKhI,OAAOsP,iBAAjB;cACJpU,UAAa8M,KAAKhI,OAAOmP,gBAAjB;cACRlU,OAAU+M,KAAKhI,OAAOoP,aAAjB;YAJA;UADT,CAFwC;QAArB;AAYrB,YAAM9F,iBAAiB,SAAjBA,gBAAkB7N,OAAD,OAAA;AAAA,cAAUuE,UAAV,MAAUA;AAAV,iBAAuB,CAC5CvE,OACA;YACEE,OAAO;cACLsuB,WAAW;cACXG,MAAMpqB,QAAOsP,iBACNtP,QAAOsP,iBADR,YAEFnC;cACJjS,UAAa8E,QAAOmP,gBAAZ;cACRlU,OAAU+E,QAAOoP,aAAZ;YANA;UADT,CAF4C;QAAvB;ACvDvB5U,gBAAQ6rB,sBAAsB;AAC9B7rB,gBAAQ8rB,iBAAiB;AACzB9rB,gBAAQ+rB,qBAAqB;AAC7B/rB,gBAAQgsB,cAAc;AAEf,iBAAS6D,cAAc9tB,QAAO;AACnCA,UAAAA,OAAM4L,cAAc5E,KAAK4G,SAAzB;AACA5N,UAAAA,OAAM0M,cAAc1F,KAAK0F,eAAzB;AACA1M,UAAAA,OAAM8M,eAAe9F,KAAK8F,gBAA1B;AACA9M,UAAAA,OAAMgN,YAAYhG,KAAKgG,WAAvB;QACD;AAED8gB,sBAAc9sB,aAAa;AAE3B,YAAM0L,kBAAgB,SAAhBA,eAAiBxN,OAADd,OAAyB;AAAA,cAAfoF,WAAepF,MAAfoF;AAC9B,cAAMuqB,sBAAsBvqB,SAAS4I,eAAexH,IAAI,SAAAnB,SAAU;AAAA,gBAAA;AAChE,gBAAID,SAASqK,MAAMmgB,WAAW1B,aAAa7oB,QAAOuB,EAA9C;AACF,qBAAUxB,SAASqK,MAAMmgB,WAAW1B,aAAa7oB,QAAOuB,EAA9C,IAAV;AAIF,iBAAA,wBAAIxB,SAASqK,MAAMkc,mBAAnB,OAAA,SAAI,sBAA+ByC;AACjC,qBAAUhpB,SAASqK,MAAMmgB,WAAWC,YAAYxqB,QAAOuB,EAA7C,IAAV;AACF,gBAAI,OAAOvB,QAAO/E,UAAU;AAAU,qBAAU+E,QAAO/E,QAAjB;AACtC,mBAAO+E,QAAO/E;UACf,CAV2B;AAW5B,iBAAO,CACLQ,OACA;YACEE,OAAO;cACLquB,SAAO;cACPM,qBAAqBA,oBAAoBpjB,KAApB,GAAA;YAFhB;UADT,CAFK;QASR;AAED,YAAMmC,mBAAiB,SAAjBA,gBAAkB5N,OAAD4D,QAAA;AAAA,cAAUW,UAAVX,OAAUW;AAAV,iBAAuB,CAC5CvE,OACA;YACE8F,IAAE,iBAAiBvB,QAAOuB;YAC1B5F,OAAO;cACLirB,UAAQ;;cACR6D,YAAU,UAAUzqB,QAAOyH;YAFtB;UAFT,CAF4C;QAAvB;AAWvB,YAAM8B,cAAc,SAAdA,aAAe9N,OAAD,OAAoB;AAAA,cAAVmG,MAAU,MAAVA;AAC5B,cAAIA,IAAI4D,YAAY;AAClB,mBAAO,CACL/J,OACA;cACEE,OAAO;gBACL8uB,YAAU,UAAS7oB,IAAI8M,MAAMlL,SAAS;cADjC;YADT,CAFK;UAQR;AACD,iBAAO,CAAC/H,OAAO,CAAA,CAAR;QACR;AAED,iBAAS0O,UAAQC,QAAOU,QAAQC,eAAehL,UAAU;AACvD,cAAI+K,OAAO7K,SAASzF,QAAQC,MAAM;AAChC,mBAAAsB,UAAA;cACEwuB,YAAY;gBACV1B,cAAc,CAAA;cADJ;YADd,GAIKze,MAJL;UAMD;AAED,cAAIU,OAAO7K,SAASzF,QAAQgsB,aAAa;AACvC,mBAAAzqB,UAAA,CAAA,GACKqO,QADL;cAEEmgB,YAAY;gBACV1B,cAAc,CAAA;cADJ;YAFd,CAAA;UAMD;AAED,cAAI/d,OAAO7K,SAASzF,QAAQ6rB,qBAAqB;AAAA,gBACvCnb,WAA6BJ,OAA7BI,UAAUgc,iBAAmBpc,OAAnBoc;AAClB,gBAAMuB,cAAciC,gBAAgBxf,QAAD;AAEnC,gBAAIud,gBAAgBtb,QAAW;AAC7B,kBAAMqd,cAAczqB,SAAS4I,eAAenN,OAC1C,SAACmvB,KAAK3qB,SAAN;AAAA,oBAAAgR;AAAA,uBAAAjV,UAAA,CAAA,GACK4uB,MADL3Z,aAAA,CAAA,GAAAA,WAEGhR,QAAOuB,EAFV,IAEempB,gBAAgB1qB,QAAOuB,EAAR,GAF9ByP,WAAA;cAAA,GAIA,CAAA,CALkB;AAOpB,kBAAM4Z,YAAY7qB,SAAS4I,eAAenN,OACxC,SAACmvB,KAAK3qB,SAAN;AAAA,oBAAAqlB;AAAA,uBAAAtpB,UAAA,CAAA,GACK4uB,MADLtF,aAAA,CAAA,GAAAA,WAEGrlB,QAAOuB,EAFV,IAEevB,QAAO9E,UAFtBmqB,WAAA;cAAA,GAIA,CAAA,CALgB;AAOlB,kBAAMwF,YAAY9qB,SAAS4I,eAAenN,OACxC,SAACmvB,KAAK3qB,SAAN;AAAA,oBAAAslB;AAAA,uBAAAvpB,UAAA,CAAA,GACK4uB,MADLrF,aAAA,CAAA,GAAAA,WAEGtlB,QAAOuB,EAFV,IAEevB,QAAO7E,UAFtBmqB,WAAA;cAAA,GAIA,CAAA,CALgB;AAQlB,kBAAMwF,qBAAqB5D,eAAe/lB,IAAI,SAAA,OAAA;AAAA,oBAAEgoB,WAAF,MAAA,CAAA;AAAA,uBAAgB,CAC5DA,UACAuB,gBAAgBvB,QAAD,CAF6C;cAAhB,CAAnB;AAK3B,qBAAAptB,UAAA,CAAA,GACKqO,QADL;gBAEEmgB,YAAUxuB,UAAA,CAAA,GACLqO,OAAMmgB,YADD;kBAERC;kBACAI;kBACAC;kBACAC;kBACArC;gBANQ,CAAA;cAFZ,CAAA;YAWD,OAAM;AACL,qBAAOre;YACR;UACF;AAED,cAAIU,OAAO7K,SAASzF,QAAQ8rB,gBAAgB;AAAA,gBAClCa,UAAYrc,OAAZqc;AADkC,gBAElC2B,SAAW1e,OAAMkc,eAAjBwC;AAFkC,gBAAA,oBAQtC1e,OAAMmgB,YAJR9B,eAJwC,kBAIxCA,aACAmC,aALwC,kBAKxCA,WACAC,aANwC,kBAMxCA,WANwC,wBAAA,kBAOxCC,oBAAAA,sBAPwC,0BAAA,SAOnB,CAAA,IAPmB;AAU1C,gBAAM9B,SAAS7B,UAAU2B;AACzB,gBAAMG,mBAAmBD,SAASP;AAElC,gBAAMS,kBAAkB,CAAA;AAExB4B,gCAAmB5tB,QAAQ,SAAA,OAA6B;AAAA,kBAA3BisB,WAA2B,MAAA,CAAA,GAAjBC,cAAiB,MAAA,CAAA;AACtDF,8BAAgBC,QAAD,IAAa5Z,KAAKC,IAC/BD,KAAKE,IACHmb,WAAUzB,QAAD,GACTC,cAAcA,cAAcH,gBAF9B,GAIA4B,WAAU1B,QAAD,CALiB;YAO7B,CARD;AAUA,mBAAAptB,UAAA,CAAA,GACKqO,QADL;cAEEmgB,YAAUxuB,UAAA,CAAA,GACLqO,OAAMmgB,YADD;gBAER1B,cAAY9sB,UAAA,CAAA,GACPqO,OAAMmgB,WAAW1B,cADV,CAAA,GAEPK,eAFO;cAFJ,CAAA;YAFZ,CAAA;UAUD;AAED,cAAIpe,OAAO7K,SAASzF,QAAQ+rB,oBAAoB;AAC9C,mBAAAxqB,UAAA,CAAA,GACKqO,QADL;cAEEmgB,YAAUxuB,UAAA,CAAA,GACLqO,OAAMmgB,YADD;gBAERC,aAAa,CAAA;gBACbI,WAAW,CAAA;gBACXC,WAAW,CAAA;cAJH,CAAA;YAFZ,CAAA;UASD;QACF;AAED,iBAASH,gBAAgBxf,UAAU;AAAA,cAAA;AACjC,cAAMjQ,SAAK,wBAAGuD,SAASusB,eAAT,iBAAuC7f,QAAvC,MAAH,OAAA,SAAG,sBAAoD8f;AAElE,cAAI/vB,UAAUkS,QAAW;AACvB,mBAAOlS;UACR;QACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC5LD;AAAA;AAAA,UAAI,OAAuC;AACzC,eAAO,UAAU;AAAA,MACnB,OAAO;AACL,eAAO,UAAU;AAAA,MACnB;AAAA;AAAA;;;ACJA;AAAA;AAAA;AAEA,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AAED,UAAI,SAAS;AAEb,UAAI,UAAU,uBAAuB,MAAM;AAE3C,eAAS,uBAAuB,KAAK;AAAE,eAAO,OAAO,IAAI,aAAa,MAAM,EAAE,SAAS,IAAI;AAAA,MAAG;AAE9F,cAAQ,UAAU,WAAY;AAC5B,eAAO,QAAQ,QAAQ;AAAA,UACrB;AAAA,UACA,EAAE,OAAO,MAAM,QAAQ,MAAM,SAAS,YAAY;AAAA,UAClD,QAAQ,QAAQ,cAAc,QAAQ,EAAE,GAAG,0EAA0E,MAAM,QAAQ,UAAU,UAAU,CAAC;AAAA,QAC1J;AAAA,MACF;AAAA;AAAA;;;AClBA;AAAA;AAAA;AAEA,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AAED,UAAI,SAAS;AAEb,UAAI,UAAU,uBAAuB,MAAM;AAE3C,eAAS,uBAAuB,KAAK;AAAE,eAAO,OAAO,IAAI,aAAa,MAAM,EAAE,SAAS,IAAI;AAAA,MAAG;AAE9F,cAAQ,UAAU,WAAY;AAC5B,eAAO,QAAQ,QAAQ;AAAA,UACrB;AAAA,UACA,EAAE,OAAO,MAAM,QAAQ,MAAM,SAAS,YAAY;AAAA,UAClD,QAAQ,QAAQ,cAAc,QAAQ,EAAE,GAAG,0HAA0H,MAAM,QAAQ,UAAU,UAAU,CAAC;AAAA,QAC1M;AAAA,MACF;AAAA;AAAA;;;AClBA;AAAA;AAAA;AAEA,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,eAAe;AAKvB,eAAS,aAAa,OAAO;AAG3B,YAAI,OAAO;AACT,cAAI,iBAAiB,MAAM;AAC3B,cAAI,kBAAkB,eAAe,SAAS,GAAG;AAC/C,gBAAI,QAAQ,eAAe,CAAC;AAC5B,mBAAO,EAAE,GAAG,MAAM,SAAS,GAAG,MAAM,QAAQ;AAAA,UAC9C;AACA,cAAI,QAAQ,MAAM;AAClB,cAAI,UAAU,QAAW;AACvB,mBAAO,EAAE,GAAG,OAAO,GAAG,MAAM,MAAM;AAAA,UACpC;AAAA,QACF;AACA,eAAO,EAAE,GAAG,GAAG,GAAG,EAAE;AAAA,MACtB;AAAA;AAAA;;;ACzBA;AAAA;AAAA;AAEA,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AAED,UAAIgwB,YAAW,OAAO,UAAU,SAAU,QAAQ;AAAE,iBAAS,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAK;AAAE,cAAI,SAAS,UAAU,CAAC;AAAG,mBAAS,OAAO,QAAQ;AAAE,gBAAI,OAAO,UAAU,eAAe,KAAK,QAAQ,GAAG,GAAG;AAAE,qBAAO,GAAG,IAAI,OAAO,GAAG;AAAA,YAAG;AAAA,UAAE;AAAA,QAAE;AAAE,eAAO;AAAA,MAAQ;AAE/P,UAAIC,iBAAe,WAAY;AAAE,iBAAS,iBAAiB,QAAQ,OAAO;AAAE,mBAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AAAE,gBAAI,aAAa,MAAM,CAAC;AAAG,uBAAW,aAAa,WAAW,cAAc;AAAO,uBAAW,eAAe;AAAM,gBAAI,WAAW;AAAY,yBAAW,WAAW;AAAM,mBAAO,eAAe,QAAQ,WAAW,KAAK,UAAU;AAAA,UAAG;AAAA,QAAE;AAAE,eAAO,SAAU,aAAa,YAAY,aAAa;AAAE,cAAI;AAAY,6BAAiB,YAAY,WAAW,UAAU;AAAG,cAAI;AAAa,6BAAiB,aAAa,WAAW;AAAG,iBAAO;AAAA,QAAa;AAAA,MAAG,EAAE;AAEljB,UAAI,SAAS;AAEb,UAAI,UAAU,uBAAuB,MAAM;AAE3C,UAAI,cAAc;AAElB,UAAI,eAAe,uBAAuB,WAAW;AAErD,UAAI,aAAa;AAEjB,UAAI,cAAc,uBAAuB,UAAU;AAEnD,UAAI,SAAS;AAEb,UAAI,UAAU,uBAAuB,MAAM;AAE3C,UAAI,KAAK;AAET,UAAI,MAAM,uBAAuB,EAAE;AAEnC,UAAI,QAAQ;AAEZ,eAAS,uBAAuB,KAAK;AAAE,eAAO,OAAO,IAAI,aAAa,MAAM,EAAE,SAAS,IAAI;AAAA,MAAG;AAE9F,eAASC,0BAAyB,KAAK,MAAM;AAAE,YAAI,SAAS,CAAC;AAAG,iBAAS,KAAK,KAAK;AAAE,cAAI,KAAK,QAAQ,CAAC,KAAK;AAAG;AAAU,cAAI,CAAC,OAAO,UAAU,eAAe,KAAK,KAAK,CAAC;AAAG;AAAU,iBAAO,CAAC,IAAI,IAAI,CAAC;AAAA,QAAG;AAAE,eAAO;AAAA,MAAQ;AAE3N,eAASC,kBAAgB,UAAU,aAAa;AAAE,YAAI,EAAE,oBAAoB,cAAc;AAAE,gBAAM,IAAI,UAAU,mCAAmC;AAAA,QAAG;AAAA,MAAE;AAExJ,eAASC,6BAA2BC,OAAM,MAAM;AAAE,YAAI,CAACA,OAAM;AAAE,gBAAM,IAAI,eAAe,2DAA2D;AAAA,QAAG;AAAE,eAAO,SAAS,OAAO,SAAS,YAAY,OAAO,SAAS,cAAc,OAAOA;AAAA,MAAM;AAE/O,eAASC,YAAU,UAAU,YAAY;AAAE,YAAI,OAAO,eAAe,cAAc,eAAe,MAAM;AAAE,gBAAM,IAAI,UAAU,6DAA6D,OAAO,UAAU;AAAA,QAAG;AAAE,iBAAS,YAAY,OAAO,OAAO,cAAc,WAAW,WAAW,EAAE,aAAa,EAAE,OAAO,UAAU,YAAY,OAAO,UAAU,MAAM,cAAc,KAAK,EAAE,CAAC;AAAG,YAAI;AAAY,iBAAO,iBAAiB,OAAO,eAAe,UAAU,UAAU,IAAI,SAAS,YAAY;AAAA,MAAY;AAE7e,UAAIC,WAAS,SAAU,gBAAgB;AACrC,QAAAD,YAAUC,UAAQ,cAAc;AAEhC,iBAASA,SAAO,OAAO;AACrB,UAAAJ,kBAAgB,MAAMI,QAAM;AAE5B,cAAI,QAAQH,6BAA2B,OAAOG,SAAO,aAAa,OAAO,eAAeA,QAAM,GAAG,KAAK,MAAM,KAAK,CAAC;AAElH,gBAAM,cAAc,MAAM,YAAY,KAAK,KAAK;AAChD,gBAAM,mBAAmB,MAAM,iBAAiB,KAAK,KAAK;AAC1D,gBAAM,kBAAkB,MAAM,gBAAgB,KAAK,KAAK;AACxD,gBAAM,iBAAiB,MAAM,eAAe,KAAK,KAAK;AACtD,gBAAM,cAAc,MAAM,YAAY,KAAK,KAAK;AAChD,gBAAM,aAAa,MAAM,WAAW,KAAK,KAAK;AAC9C,gBAAM,oBAAoB,CAAC,EAAE,MAAM,WAAW,MAAM;AACpD,gBAAM,QAAQ;AAAA,YACZ,SAAS,CAAC,EAAE,MAAM,WAAW,MAAM;AAAA,YACnC,UAAU;AAAA,UACZ;AACA,iBAAO;AAAA,QACT;AAEA,QAAAN,eAAaM,UAAQ,CAAC;AAAA,UACpB,KAAK;AAAA,UACL,OAAO,SAAS,mBAAmB,WAAW;AAC5C,gBAAI,UAAU,YAAY,KAAK,MAAM,SAAS;AAK5C,mBAAK,SAAS,EAAE,SAAS,CAAC,CAAC,KAAK,MAAM,QAAQ,CAAC;AAAA,YACjD;AAAA,UACF;AAAA,QACF,GAAG;AAAA,UACD,KAAK;AAAA,UACL,OAAO,SAAS,YAAY,OAAO;AACjC,gBAAI,KAAK,MAAM,UAAU;AACvB;AAAA,YACF;AACA,gBAAI,WAAW,KAAK;AACpB,gBAAI,MAAM,WAAW,YAAY,CAAC,KAAK,OAAO;AAC5C,mBAAK,oBAAoB,SAAS;AAClC,oBAAM,eAAe;AACrB,uBAAS,MAAM;AACf,uBAAS,MAAM;AACf;AAAA,YACF;AAEA,gBAAI,UAAU,KAAK,MAAM,eAAe,SAAS,IAAI,KAAK,MAAM,UAAU,SAAS;AAEnF,iBAAK,SAAS,EAAE,QAAiB,CAAC;AAAA,UACpC;AAAA,QACF,GAAG;AAAA,UACD,KAAK;AAAA,UACL,OAAO,SAAS,iBAAiB,OAAO;AACtC,gBAAI,KAAK,MAAM,UAAU;AACvB;AAAA,YACF;AACA,iBAAK,UAAU,GAAG,MAAM,cAAc,KAAK,EAAE;AAC7C,iBAAK,YAAY;AAAA,UACnB;AAAA,QACF,GAAG;AAAA,UACD,KAAK;AAAA,UACL,OAAO,SAAS,gBAAgB,OAAO;AACrC,gBAAI,CAAC,KAAK;AAAW;AACrB,iBAAK,QAAQ;AAEb,gBAAI,KAAK,QAAQ;AACf,kBAAI,YAAY,GAAG,MAAM,cAAc,KAAK,EAAE;AAC9C,kBAAI,KAAK,MAAM,WAAW,WAAW,KAAK,KAAK,QAAQ;AACrD,qBAAK,SAAS,EAAE,SAAS,MAAM,CAAC;AAChC,qBAAK,SAAS;AACd,qBAAK,YAAY;AAAA,cACnB,WAAW,WAAW,KAAK,KAAK,QAAQ;AACtC,qBAAK,SAAS,EAAE,SAAS,KAAK,CAAC;AAC/B,qBAAK,SAAS;AACd,qBAAK,YAAY,WAAW,KAAK,SAAS;AAAA,cAC5C;AAAA,YACF;AAAA,UACF;AAAA,QACF,GAAG;AAAA,UACD,KAAK;AAAA,UACL,OAAO,SAAS,eAAe,OAAO;AACpC,gBAAI,CAAC,KAAK;AAAO;AACjB,gBAAI,WAAW,KAAK;AACpB,kBAAM,eAAe;AAErB,gBAAI,KAAK,QAAQ;AACf,kBAAI,QAAQ,GAAG,MAAM,cAAc,KAAK,EAAE;AAC1C,kBAAI,KAAK,sBAAsB,QAAQ,KAAK,SAAS,IAAI,MAAM;AAC7D,oBAAI,KAAK,sBAAsB,KAAK,MAAM,SAAS;AACjD,uBAAK,SAAS,EAAE,SAAS,MAAM,CAAC;AAChC,uBAAK,oBAAoB,KAAK,MAAM;AACpC,2BAAS,MAAM;AAAA,gBACjB;AAAA,cACF,WAAW,KAAK,SAAS,IAAI,MAAM;AACjC,oBAAI,KAAK,sBAAsB,KAAK,MAAM,SAAS;AACjD,uBAAK,SAAS,EAAE,SAAS,KAAK,CAAC;AAC/B,uBAAK,oBAAoB,KAAK,MAAM;AACpC,2BAAS,MAAM;AAAA,gBACjB;AAAA,cACF;AAEA,mBAAK,YAAY;AACjB,mBAAK,SAAS;AACd,mBAAK,QAAQ;AAAA,YACf;AAAA,UACF;AAAA,QACF,GAAG;AAAA,UACD,KAAK;AAAA,UACL,OAAO,SAAS,YAAY,OAAO;AACjC,gBAAIC,WAAU,KAAK,MAAM;AAGzB,gBAAIA,UAAS;AACX,cAAAA,SAAQ,KAAK;AAAA,YACf;AAEA,iBAAK,SAAS,EAAE,UAAU,KAAK,CAAC;AAAA,UAClC;AAAA,QACF,GAAG;AAAA,UACD,KAAK;AAAA,UACL,OAAO,SAAS,WAAW,OAAO;AAChC,gBAAI,SAAS,KAAK,MAAM;AAGxB,gBAAI,QAAQ;AACV,qBAAO,KAAK;AAAA,YACd;AAEA,iBAAK,SAAS,EAAE,UAAU,MAAM,CAAC;AAAA,UACnC;AAAA,QACF,GAAG;AAAA,UACD,KAAK;AAAA,UACL,OAAO,SAAS,QAAQ,MAAM;AAC5B,gBAAI,QAAQ,KAAK,MAAM;AAEvB,gBAAI,CAAC,OAAO;AACV,qBAAO;AAAA,YACT;AACA,mBAAO,MAAM,IAAI,MAAM,SAAYD,SAAO,aAAa,MAAM,IAAI,IAAI,MAAM,IAAI;AAAA,UACjF;AAAA,QACF,GAAG;AAAA,UACD,KAAK;AAAA,UACL,OAAO,SAASE,UAAS;AACvB,gBAAI,SAAS;AAEb,gBAAI,SAAS,KAAK,OACd,YAAY,OAAO,WACnB,SAAS,OAAO,OAChB,aAAaP,0BAAyB,QAAQ,CAAC,aAAa,OAAO,CAAC;AAExE,gBAAI,WAAW,GAAG,aAAa,SAAS,gBAAgB;AAAA,cACtD,yBAAyB,KAAK,MAAM;AAAA,cACpC,uBAAuB,KAAK,MAAM;AAAA,cAClC,0BAA0B,KAAK,MAAM;AAAA,YACvC,GAAG,SAAS;AAEZ,mBAAO,QAAQ,QAAQ;AAAA,cACrB;AAAA,cACA;AAAA,gBAAE,WAAW;AAAA,gBACX,SAAS,KAAK;AAAA,gBACd,cAAc,KAAK;AAAA,gBACnB,aAAa,KAAK;AAAA,gBAClB,YAAY,KAAK;AAAA,cAAe;AAAA,cAClC,QAAQ,QAAQ;AAAA,gBACd;AAAA,gBACA,EAAE,WAAW,qBAAqB;AAAA,gBAClC,QAAQ,QAAQ;AAAA,kBACd;AAAA,kBACA,EAAE,WAAW,2BAA2B;AAAA,kBACxC,KAAK,QAAQ,SAAS;AAAA,gBACxB;AAAA,gBACA,QAAQ,QAAQ;AAAA,kBACd;AAAA,kBACA,EAAE,WAAW,uBAAuB;AAAA,kBACpC,KAAK,QAAQ,WAAW;AAAA,gBAC1B;AAAA,cACF;AAAA,cACA,QAAQ,QAAQ,cAAc,OAAO,EAAE,WAAW,qBAAqB,CAAC;AAAA,cACxE,QAAQ,QAAQ,cAAc,SAASF,UAAS,CAAC,GAAG,YAAY;AAAA,gBAC9D,KAAK,SAAS,IAAIU,OAAM;AACtB,yBAAO,QAAQA;AAAA,gBACjB;AAAA,gBACA,SAAS,KAAK;AAAA,gBACd,QAAQ,KAAK;AAAA,gBACb,WAAW;AAAA,gBACX,MAAM;AAAA,cAAW,CAAC,CAAC;AAAA,YACvB;AAAA,UACF;AAAA,QACF,CAAC,CAAC;AAEF,eAAOH;AAAA,MACT,EAAE,OAAO,aAAa;AAEtB,cAAQ,UAAUA;AAGlB,MAAAA,SAAO,cAAc;AAErB,MAAAA,SAAO,eAAe;AAAA,QACpB,OAAO;AAAA,UACL,SAAS,QAAQ,QAAQ,cAAc,QAAQ,SAAS,IAAI;AAAA,UAC5D,WAAW,QAAQ,QAAQ,cAAc,IAAI,SAAS,IAAI;AAAA,QAC5D;AAAA,MACF;AAEA,MAAAA,SAAO,YAAY;AAAA,QACjB,SAAS,YAAY,QAAQ;AAAA,QAC7B,UAAU,YAAY,QAAQ;AAAA,QAC9B,gBAAgB,YAAY,QAAQ;AAAA,QACpC,UAAU,YAAY,QAAQ;AAAA,QAC9B,SAAS,YAAY,QAAQ;AAAA,QAC7B,QAAQ,YAAY,QAAQ;AAAA,QAC5B,WAAW,YAAY,QAAQ;AAAA,QAC/B,MAAM,YAAY,QAAQ;AAAA,QAC1B,OAAO,YAAY,QAAQ;AAAA,QAC3B,IAAI,YAAY,QAAQ;AAAA,QACxB,mBAAmB,YAAY,QAAQ;AAAA,QACvC,cAAc,YAAY,QAAQ;AAAA,QAClC,OAAO,YAAY,QAAQ,UAAU,CAAC,YAAY,QAAQ,MAAM,YAAY,QAAQ,MAAM;AAAA,UACxF,SAAS,YAAY,QAAQ;AAAA,UAC7B,WAAW,YAAY,QAAQ;AAAA,QACjC,CAAC,CAAC,CAAC;AAAA,MACL;AAAA;AAAA;;;AC1QA;AAAA;AAAA,eAAS,uBAAuB,KAAK;AACnC,eAAO,OAAO,IAAI,aAAa,MAAM;AAAA,UACnC,WAAW;AAAA,QACb;AAAA,MACF;AACA,aAAO,UAAU,wBAAwB,OAAO,QAAQ,aAAa,MAAM,OAAO,QAAQ,SAAS,IAAI,OAAO;AAAA;AAAA;;;ACL9G;AAAA;AAAA,eAASI,SAAQ,KAAK;AACpB;AAEA,eAAQ,OAAO,UAAUA,WAAU,cAAc,OAAO,UAAU,YAAY,OAAO,OAAO,WAAW,SAAUC,MAAK;AACpH,iBAAO,OAAOA;AAAA,QAChB,IAAI,SAAUA,MAAK;AACjB,iBAAOA,QAAO,cAAc,OAAO,UAAUA,KAAI,gBAAgB,UAAUA,SAAQ,OAAO,YAAY,WAAW,OAAOA;AAAA,QAC1H,GAAG,OAAO,QAAQ,aAAa,MAAM,OAAO,QAAQ,SAAS,IAAI,OAAO,SAAUD,SAAQ,GAAG;AAAA,MAC/F;AACA,aAAO,UAAUA,UAAS,OAAO,QAAQ,aAAa,MAAM,OAAO,QAAQ,SAAS,IAAI,OAAO;AAAA;AAAA;;;ACT/F;AAAA;AAAA;AAEA,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,eAAS,aAAa,UAAU,MAAM;AACpC,YAAI,KAAK,SAAS,UAAU;AAC1B,gBAAM,IAAI,UAAU,WAAW,eAAe,WAAW,IAAI,MAAM,MAAM,yBAAyB,KAAK,SAAS,UAAU;AAAA,QAC5H;AAAA,MACF;AACA,aAAO,UAAU,QAAQ;AAAA;AAAA;;;ACXzB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,UAAI,WAAW,uBAAuB,gBAAwC;AAC9E,UAAI,SAAS,uBAAuB,sBAAwC;AAiC5E,eAAS,OAAO,OAAO;AACrB,SAAC,GAAG,OAAO,SAAS,GAAG,SAAS;AAChC,eAAO,iBAAiB,SAAS,GAAG,SAAS,SAAS,KAAK,MAAM,YAAY,OAAO,UAAU,SAAS,KAAK,KAAK,MAAM;AAAA,MACzH;AACA,aAAO,UAAU,QAAQ;AAAA;AAAA;;;AC7CzB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,UAAI,WAAW,uBAAuB,gBAAwC;AAC9E,UAAI,SAAS,uBAAuB,sBAAwC;AA+B5E,eAAS,OAAO,UAAU;AACxB,SAAC,GAAG,OAAO,SAAS,GAAG,SAAS;AAChC,YAAI,SAAS,OAAO,UAAU,SAAS,KAAK,QAAQ;AAGpD,YAAI,oBAAoB,SAAS,GAAG,SAAS,SAAS,QAAQ,MAAM,YAAY,WAAW,iBAAiB;AAE1G,iBAAO,IAAI,KAAK,SAAS,QAAQ,CAAC;AAAA,QACpC,WAAW,OAAO,aAAa,YAAY,WAAW,mBAAmB;AACvE,iBAAO,IAAI,KAAK,QAAQ;AAAA,QAC1B,OAAO;AACL,eAAK,OAAO,aAAa,YAAY,WAAW,sBAAsB,OAAO,YAAY,aAAa;AAEpG,oBAAQ,KAAK,oNAAoN;AAEjO,oBAAQ,KAAK,IAAI,MAAM,EAAE,KAAK;AAAA,UAChC;AACA,iBAAO,oBAAI,KAAK,GAAG;AAAA,QACrB;AAAA,MACF;AACA,aAAO,UAAU,QAAQ;AAAA;AAAA;;;AC3DzB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,UAAI,SAAS,uBAAuB,gBAA6B;AACjE,UAAI,UAAU,uBAAuB,gBAA6B;AAClE,UAAI,UAAU,uBAAuB,sBAAwC;AAgC7E,eAAS,QAAQ,WAAW;AAC1B,SAAC,GAAG,QAAQ,SAAS,GAAG,SAAS;AACjC,YAAI,EAAE,GAAG,OAAO,SAAS,SAAS,KAAK,OAAO,cAAc,UAAU;AACpE,iBAAO;AAAA,QACT;AACA,YAAIE,SAAQ,GAAG,QAAQ,SAAS,SAAS;AACzC,eAAO,CAAC,MAAM,OAAOA,KAAI,CAAC;AAAA,MAC5B;AACA,aAAO,UAAU,QAAQ;AAAA;AAAA;;;ACjDzB;AAAA;AAAA;AAEA,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,eAAS,UAAU,aAAa;AAC9B,YAAI,gBAAgB,QAAQ,gBAAgB,QAAQ,gBAAgB,OAAO;AACzE,iBAAO;AAAA,QACT;AACA,YAAIC,UAAS,OAAO,WAAW;AAC/B,YAAI,MAAMA,OAAM,GAAG;AACjB,iBAAOA;AAAA,QACT;AACA,eAAOA,UAAS,IAAI,KAAK,KAAKA,OAAM,IAAI,KAAK,MAAMA,OAAM;AAAA,MAC3D;AACA,aAAO,UAAU,QAAQ;AAAA;AAAA;;;AChBzB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,UAAI,SAAS,uBAAuB,mBAAqC;AACzE,UAAI,UAAU,uBAAuB,gBAA6B;AAClE,UAAI,UAAU,uBAAuB,sBAAwC;AAmB7E,eAAS,gBAAgB,WAAW,aAAa;AAC/C,SAAC,GAAG,QAAQ,SAAS,GAAG,SAAS;AACjC,YAAI,aAAa,GAAG,QAAQ,SAAS,SAAS,EAAE,QAAQ;AACxD,YAAI,UAAU,GAAG,OAAO,SAAS,WAAW;AAC5C,eAAO,IAAI,KAAK,YAAY,MAAM;AAAA,MACpC;AACA,aAAO,UAAU,QAAQ;AAAA;AAAA;;;AClCzB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,UAAI,SAAS,uBAAuB,yBAAsC;AAC1E,UAAI,UAAU,uBAAuB,sBAAwC;AAC7E,UAAI,UAAU,uBAAuB,mBAAqC;AAmB1E,eAAS,gBAAgB,WAAW,aAAa;AAC/C,SAAC,GAAG,QAAQ,SAAS,GAAG,SAAS;AACjC,YAAI,UAAU,GAAG,QAAQ,SAAS,WAAW;AAC7C,gBAAQ,GAAG,OAAO,SAAS,WAAW,CAAC,MAAM;AAAA,MAC/C;AACA,aAAO,UAAU,QAAQ;AAAA;AAAA;;;ACjCzB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,UAAI,SAAS,uBAAuB,gBAAgC;AACpE,UAAI,UAAU,uBAAuB,sBAAmC;AACxE,UAAI,sBAAsB;AAC1B,eAAS,gBAAgB,WAAW;AAClC,SAAC,GAAG,QAAQ,SAAS,GAAG,SAAS;AACjC,YAAIC,SAAQ,GAAG,OAAO,SAAS,SAAS;AACxC,YAAI,YAAYA,MAAK,QAAQ;AAC7B,QAAAA,MAAK,YAAY,GAAG,CAAC;AACrB,QAAAA,MAAK,YAAY,GAAG,GAAG,GAAG,CAAC;AAC3B,YAAI,uBAAuBA,MAAK,QAAQ;AACxC,YAAI,aAAa,YAAY;AAC7B,eAAO,KAAK,MAAM,aAAa,mBAAmB,IAAI;AAAA,MACxD;AACA,aAAO,UAAU,QAAQ;AAAA;AAAA;;;ACpBzB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,UAAI,SAAS,uBAAuB,gBAAgC;AACpE,UAAI,UAAU,uBAAuB,sBAAmC;AACxE,eAAS,kBAAkB,WAAW;AACpC,SAAC,GAAG,QAAQ,SAAS,GAAG,SAAS;AACjC,YAAI,eAAe;AACnB,YAAIC,SAAQ,GAAG,OAAO,SAAS,SAAS;AACxC,YAAI,MAAMA,MAAK,UAAU;AACzB,YAAI,QAAQ,MAAM,eAAe,IAAI,KAAK,MAAM;AAChD,QAAAA,MAAK,WAAWA,MAAK,WAAW,IAAI,IAAI;AACxC,QAAAA,MAAK,YAAY,GAAG,GAAG,GAAG,CAAC;AAC3B,eAAOA;AAAA,MACT;AACA,aAAO,UAAU,QAAQ;AAAA;AAAA;;;ACnBzB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,UAAI,SAAS,uBAAuB,gBAAgC;AACpE,UAAI,UAAU,uBAAuB,sBAAmC;AACxE,UAAI,UAAU,uBAAuB,2BAAwC;AAC7E,eAAS,kBAAkB,WAAW;AACpC,SAAC,GAAG,QAAQ,SAAS,GAAG,SAAS;AACjC,YAAIC,SAAQ,GAAG,OAAO,SAAS,SAAS;AACxC,YAAI,OAAOA,MAAK,eAAe;AAC/B,YAAI,4BAA4B,oBAAI,KAAK,CAAC;AAC1C,kCAA0B,eAAe,OAAO,GAAG,GAAG,CAAC;AACvD,kCAA0B,YAAY,GAAG,GAAG,GAAG,CAAC;AAChD,YAAI,mBAAmB,GAAG,QAAQ,SAAS,yBAAyB;AACpE,YAAI,4BAA4B,oBAAI,KAAK,CAAC;AAC1C,kCAA0B,eAAe,MAAM,GAAG,CAAC;AACnD,kCAA0B,YAAY,GAAG,GAAG,GAAG,CAAC;AAChD,YAAI,mBAAmB,GAAG,QAAQ,SAAS,yBAAyB;AACpE,YAAIA,MAAK,QAAQ,KAAK,gBAAgB,QAAQ,GAAG;AAC/C,iBAAO,OAAO;AAAA,QAChB,WAAWA,MAAK,QAAQ,KAAK,gBAAgB,QAAQ,GAAG;AACtD,iBAAO;AAAA,QACT,OAAO;AACL,iBAAO,OAAO;AAAA,QAChB;AAAA,MACF;AACA,aAAO,UAAU,QAAQ;AAAA;AAAA;;;AC9BzB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,UAAI,SAAS,uBAAuB,2BAAwC;AAC5E,UAAI,UAAU,uBAAuB,2BAAwC;AAC7E,UAAI,UAAU,uBAAuB,sBAAmC;AACxE,eAAS,sBAAsB,WAAW;AACxC,SAAC,GAAG,QAAQ,SAAS,GAAG,SAAS;AACjC,YAAI,QAAQ,GAAG,OAAO,SAAS,SAAS;AACxC,YAAI,kBAAkB,oBAAI,KAAK,CAAC;AAChC,wBAAgB,eAAe,MAAM,GAAG,CAAC;AACzC,wBAAgB,YAAY,GAAG,GAAG,GAAG,CAAC;AACtC,YAAIC,SAAQ,GAAG,QAAQ,SAAS,eAAe;AAC/C,eAAOA;AAAA,MACT;AACA,aAAO,UAAU,QAAQ;AAAA;AAAA;;;ACnBzB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,UAAI,SAAS,uBAAuB,gBAAgC;AACpE,UAAI,UAAU,uBAAuB,2BAAwC;AAC7E,UAAI,UAAU,uBAAuB,+BAA4C;AACjF,UAAI,UAAU,uBAAuB,sBAAmC;AACxE,UAAI,uBAAuB;AAC3B,eAAS,cAAc,WAAW;AAChC,SAAC,GAAG,QAAQ,SAAS,GAAG,SAAS;AACjC,YAAIC,SAAQ,GAAG,OAAO,SAAS,SAAS;AACxC,YAAI,QAAQ,GAAG,QAAQ,SAASA,KAAI,EAAE,QAAQ,KAAK,GAAG,QAAQ,SAASA,KAAI,EAAE,QAAQ;AAKrF,eAAO,KAAK,MAAM,OAAO,oBAAoB,IAAI;AAAA,MACnD;AACA,aAAO,UAAU,QAAQ;AAAA;AAAA;;;ACtBzB;AAAA;AAAA;AAEA,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,oBAAoB;AAC5B,cAAQ,oBAAoB;AAC5B,UAAI,iBAAiB,CAAC;AACtB,eAAS,oBAAoB;AAC3B,eAAO;AAAA,MACT;AACA,eAAS,kBAAkB,YAAY;AACrC,yBAAiB;AAAA,MACnB;AAAA;AAAA;;;ACbA;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,UAAI,SAAS,uBAAuB,gBAAgC;AACpE,UAAI,UAAU,uBAAuB,sBAAmC;AACxE,UAAI,UAAU,uBAAuB,mBAAgC;AACrE,UAAI,UAAU;AACd,eAAS,eAAe,WAAWC,UAAS;AAC1C,YAAIC,OAAMC,QAAOC,QAAO,uBAAuB,iBAAiB,uBAAuB,uBAAuB;AAC9G,SAAC,GAAG,QAAQ,SAAS,GAAG,SAAS;AACjC,YAAI,kBAAkB,GAAG,QAAQ,mBAAmB;AACpD,YAAI,gBAAgB,GAAG,QAAQ,UAAUF,SAAQC,UAASC,UAAS,wBAAwBH,aAAY,QAAQA,aAAY,SAAS,SAASA,SAAQ,kBAAkB,QAAQ,0BAA0B,SAAS,wBAAwBA,aAAY,QAAQA,aAAY,SAAS,UAAU,kBAAkBA,SAAQ,YAAY,QAAQ,oBAAoB,SAAS,UAAU,wBAAwB,gBAAgB,aAAa,QAAQ,0BAA0B,SAAS,SAAS,sBAAsB,kBAAkB,QAAQG,WAAU,SAASA,SAAQ,eAAe,kBAAkB,QAAQD,WAAU,SAASA,UAAS,wBAAwB,eAAe,YAAY,QAAQ,0BAA0B,SAAS,UAAU,yBAAyB,sBAAsB,aAAa,QAAQ,2BAA2B,SAAS,SAAS,uBAAuB,kBAAkB,QAAQD,UAAS,SAASA,QAAO,CAAC;AAG/4B,YAAI,EAAE,gBAAgB,KAAK,gBAAgB,IAAI;AAC7C,gBAAM,IAAI,WAAW,kDAAkD;AAAA,QACzE;AACA,YAAIG,SAAQ,GAAG,OAAO,SAAS,SAAS;AACxC,YAAI,MAAMA,MAAK,UAAU;AACzB,YAAI,QAAQ,MAAM,eAAe,IAAI,KAAK,MAAM;AAChD,QAAAA,MAAK,WAAWA,MAAK,WAAW,IAAI,IAAI;AACxC,QAAAA,MAAK,YAAY,GAAG,GAAG,GAAG,CAAC;AAC3B,eAAOA;AAAA,MACT;AACA,aAAO,UAAU,QAAQ;AAAA;AAAA;;;AC5BzB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,UAAI,SAAS,uBAAuB,gBAAgC;AACpE,UAAI,UAAU,uBAAuB,sBAAmC;AACxE,UAAI,UAAU,uBAAuB,wBAAqC;AAC1E,UAAI,UAAU,uBAAuB,mBAAgC;AACrE,UAAI,UAAU;AACd,eAAS,eAAe,WAAWC,UAAS;AAC1C,YAAIC,OAAMC,QAAOC,QAAO,uBAAuB,iBAAiB,uBAAuB,uBAAuB;AAC9G,SAAC,GAAG,QAAQ,SAAS,GAAG,SAAS;AACjC,YAAIC,SAAQ,GAAG,OAAO,SAAS,SAAS;AACxC,YAAI,OAAOA,MAAK,eAAe;AAC/B,YAAI,kBAAkB,GAAG,QAAQ,mBAAmB;AACpD,YAAI,yBAAyB,GAAG,QAAQ,UAAUH,SAAQC,UAASC,UAAS,wBAAwBH,aAAY,QAAQA,aAAY,SAAS,SAASA,SAAQ,2BAA2B,QAAQ,0BAA0B,SAAS,wBAAwBA,aAAY,QAAQA,aAAY,SAAS,UAAU,kBAAkBA,SAAQ,YAAY,QAAQ,oBAAoB,SAAS,UAAU,wBAAwB,gBAAgB,aAAa,QAAQ,0BAA0B,SAAS,SAAS,sBAAsB,2BAA2B,QAAQG,WAAU,SAASA,SAAQ,eAAe,2BAA2B,QAAQD,WAAU,SAASA,UAAS,wBAAwB,eAAe,YAAY,QAAQ,0BAA0B,SAAS,UAAU,yBAAyB,sBAAsB,aAAa,QAAQ,2BAA2B,SAAS,SAAS,uBAAuB,2BAA2B,QAAQD,UAAS,SAASA,QAAO,CAAC;AAG57B,YAAI,EAAE,yBAAyB,KAAK,yBAAyB,IAAI;AAC/D,gBAAM,IAAI,WAAW,2DAA2D;AAAA,QAClF;AACA,YAAI,sBAAsB,oBAAI,KAAK,CAAC;AACpC,4BAAoB,eAAe,OAAO,GAAG,GAAG,qBAAqB;AACrE,4BAAoB,YAAY,GAAG,GAAG,GAAG,CAAC;AAC1C,YAAI,mBAAmB,GAAG,QAAQ,SAAS,qBAAqBD,QAAO;AACvE,YAAI,sBAAsB,oBAAI,KAAK,CAAC;AACpC,4BAAoB,eAAe,MAAM,GAAG,qBAAqB;AACjE,4BAAoB,YAAY,GAAG,GAAG,GAAG,CAAC;AAC1C,YAAI,mBAAmB,GAAG,QAAQ,SAAS,qBAAqBA,QAAO;AACvE,YAAII,MAAK,QAAQ,KAAK,gBAAgB,QAAQ,GAAG;AAC/C,iBAAO,OAAO;AAAA,QAChB,WAAWA,MAAK,QAAQ,KAAK,gBAAgB,QAAQ,GAAG;AACtD,iBAAO;AAAA,QACT,OAAO;AACL,iBAAO,OAAO;AAAA,QAChB;AAAA,MACF;AACA,aAAO,UAAU,QAAQ;AAAA;AAAA;;;ACxCzB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,UAAI,SAAS,uBAAuB,wBAAqC;AACzE,UAAI,UAAU,uBAAuB,sBAAmC;AACxE,UAAI,UAAU,uBAAuB,wBAAqC;AAC1E,UAAI,UAAU,uBAAuB,mBAAgC;AACrE,UAAI,UAAU;AACd,eAAS,mBAAmB,WAAWC,UAAS;AAC9C,YAAIC,OAAMC,QAAOC,QAAO,uBAAuB,iBAAiB,uBAAuB,uBAAuB;AAC9G,SAAC,GAAG,QAAQ,SAAS,GAAG,SAAS;AACjC,YAAI,kBAAkB,GAAG,QAAQ,mBAAmB;AACpD,YAAI,yBAAyB,GAAG,QAAQ,UAAUF,SAAQC,UAASC,UAAS,wBAAwBH,aAAY,QAAQA,aAAY,SAAS,SAASA,SAAQ,2BAA2B,QAAQ,0BAA0B,SAAS,wBAAwBA,aAAY,QAAQA,aAAY,SAAS,UAAU,kBAAkBA,SAAQ,YAAY,QAAQ,oBAAoB,SAAS,UAAU,wBAAwB,gBAAgB,aAAa,QAAQ,0BAA0B,SAAS,SAAS,sBAAsB,2BAA2B,QAAQG,WAAU,SAASA,SAAQ,eAAe,2BAA2B,QAAQD,WAAU,SAASA,UAAS,wBAAwB,eAAe,YAAY,QAAQ,0BAA0B,SAAS,UAAU,yBAAyB,sBAAsB,aAAa,QAAQ,2BAA2B,SAAS,SAAS,uBAAuB,2BAA2B,QAAQD,UAAS,SAASA,QAAO,CAAC;AAC57B,YAAI,QAAQ,GAAG,OAAO,SAAS,WAAWD,QAAO;AACjD,YAAI,YAAY,oBAAI,KAAK,CAAC;AAC1B,kBAAU,eAAe,MAAM,GAAG,qBAAqB;AACvD,kBAAU,YAAY,GAAG,GAAG,GAAG,CAAC;AAChC,YAAII,SAAQ,GAAG,QAAQ,SAAS,WAAWJ,QAAO;AAClD,eAAOI;AAAA,MACT;AACA,aAAO,UAAU,QAAQ;AAAA;AAAA;;;ACxBzB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,UAAI,SAAS,uBAAuB,gBAAgC;AACpE,UAAI,UAAU,uBAAuB,wBAAqC;AAC1E,UAAI,UAAU,uBAAuB,4BAAyC;AAC9E,UAAI,UAAU,uBAAuB,sBAAmC;AACxE,UAAI,uBAAuB;AAC3B,eAAS,WAAW,WAAWC,UAAS;AACtC,SAAC,GAAG,QAAQ,SAAS,GAAG,SAAS;AACjC,YAAIC,SAAQ,GAAG,OAAO,SAAS,SAAS;AACxC,YAAI,QAAQ,GAAG,QAAQ,SAASA,OAAMD,QAAO,EAAE,QAAQ,KAAK,GAAG,QAAQ,SAASC,OAAMD,QAAO,EAAE,QAAQ;AAKvG,eAAO,KAAK,MAAM,OAAO,oBAAoB,IAAI;AAAA,MACnD;AACA,aAAO,UAAU,QAAQ;AAAA;AAAA;;;ACtBzB;AAAA;AAAA;AAEA,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,eAAS,gBAAgBE,SAAQ,cAAc;AAC7C,YAAIC,QAAOD,UAAS,IAAI,MAAM;AAC9B,YAAI,SAAS,KAAK,IAAIA,OAAM,EAAE,SAAS;AACvC,eAAO,OAAO,SAAS,cAAc;AACnC,mBAAS,MAAM;AAAA,QACjB;AACA,eAAOC,QAAO;AAAA,MAChB;AACA,aAAO,UAAU,QAAQ;AAAA;AAAA;;;ACdzB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,UAAI,SAAS,uBAAuB,yBAAyC;AAc7E,UAAI,aAAa;AAAA;AAAA,QAEf,GAAG,SAASC,GAAEC,OAAMC,QAAO;AAUzB,cAAI,aAAaD,MAAK,eAAe;AAErC,cAAI,OAAO,aAAa,IAAI,aAAa,IAAI;AAC7C,kBAAQ,GAAG,OAAO,SAASC,WAAU,OAAO,OAAO,MAAM,MAAMA,OAAM,MAAM;AAAA,QAC7E;AAAA;AAAA,QAEA,GAAG,SAAS,EAAED,OAAMC,QAAO;AACzB,cAAI,QAAQD,MAAK,YAAY;AAC7B,iBAAOC,WAAU,MAAM,OAAO,QAAQ,CAAC,KAAK,GAAG,OAAO,SAAS,QAAQ,GAAG,CAAC;AAAA,QAC7E;AAAA;AAAA,QAEA,GAAG,SAASC,GAAEF,OAAMC,QAAO;AACzB,kBAAQ,GAAG,OAAO,SAASD,MAAK,WAAW,GAAGC,OAAM,MAAM;AAAA,QAC5D;AAAA;AAAA,QAEA,GAAG,SAASE,GAAEH,OAAMC,QAAO;AACzB,cAAI,qBAAqBD,MAAK,YAAY,IAAI,MAAM,IAAI,OAAO;AAC/D,kBAAQC,QAAO;AAAA,YACb,KAAK;AAAA,YACL,KAAK;AACH,qBAAO,mBAAmB,YAAY;AAAA,YACxC,KAAK;AACH,qBAAO;AAAA,YACT,KAAK;AACH,qBAAO,mBAAmB,CAAC;AAAA,YAC7B,KAAK;AAAA,YACL;AACE,qBAAO,uBAAuB,OAAO,SAAS;AAAA,UAClD;AAAA,QACF;AAAA;AAAA,QAEA,GAAG,SAAS,EAAED,OAAMC,QAAO;AACzB,kBAAQ,GAAG,OAAO,SAASD,MAAK,YAAY,IAAI,MAAM,IAAIC,OAAM,MAAM;AAAA,QACxE;AAAA;AAAA,QAEA,GAAG,SAAS,EAAED,OAAMC,QAAO;AACzB,kBAAQ,GAAG,OAAO,SAASD,MAAK,YAAY,GAAGC,OAAM,MAAM;AAAA,QAC7D;AAAA;AAAA,QAEA,GAAG,SAAS,EAAED,OAAMC,QAAO;AACzB,kBAAQ,GAAG,OAAO,SAASD,MAAK,cAAc,GAAGC,OAAM,MAAM;AAAA,QAC/D;AAAA;AAAA,QAEA,GAAG,SAASG,GAAEJ,OAAMC,QAAO;AACzB,kBAAQ,GAAG,OAAO,SAASD,MAAK,cAAc,GAAGC,OAAM,MAAM;AAAA,QAC/D;AAAA;AAAA,QAEA,GAAG,SAAS,EAAED,OAAMC,QAAO;AACzB,cAAI,iBAAiBA,OAAM;AAC3B,cAAII,gBAAeL,MAAK,mBAAmB;AAC3C,cAAI,oBAAoB,KAAK,MAAMK,gBAAe,KAAK,IAAI,IAAI,iBAAiB,CAAC,CAAC;AAClF,kBAAQ,GAAG,OAAO,SAAS,mBAAmBJ,OAAM,MAAM;AAAA,QAC5D;AAAA,MACF;AACA,UAAI,WAAW;AACf,cAAQ,UAAU;AAClB,aAAO,UAAU,QAAQ;AAAA;AAAA;;;ACzFzB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,UAAI,SAAS,uBAAuB,yBAAiD;AACrF,UAAI,UAAU,uBAAuB,uBAA+C;AACpF,UAAI,UAAU,uBAAuB,2BAAmD;AACxF,UAAI,UAAU,uBAAuB,oBAA4C;AACjF,UAAI,UAAU,uBAAuB,wBAAgD;AACrF,UAAI,UAAU,uBAAuB,yBAAyC;AAC9E,UAAI,UAAU,uBAAuB,yBAAsC;AAC3E,UAAI,gBAAgB;AAAA,QAClB,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,UAAU;AAAA,QACV,MAAM;AAAA,QACN,SAAS;AAAA,QACT,WAAW;AAAA,QACX,SAAS;AAAA,QACT,OAAO;AAAA,MACT;AA+CA,UAAI,aAAa;AAAA;AAAA,QAEf,GAAG,SAAS,EAAEK,OAAMC,QAAO,UAAU;AACnC,cAAI,MAAMD,MAAK,eAAe,IAAI,IAAI,IAAI;AAC1C,kBAAQC,QAAO;AAAA,YAEb,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AACH,qBAAO,SAAS,IAAI,KAAK;AAAA,gBACvB,OAAO;AAAA,cACT,CAAC;AAAA,YAEH,KAAK;AACH,qBAAO,SAAS,IAAI,KAAK;AAAA,gBACvB,OAAO;AAAA,cACT,CAAC;AAAA,YAEH,KAAK;AAAA,YACL;AACE,qBAAO,SAAS,IAAI,KAAK;AAAA,gBACvB,OAAO;AAAA,cACT,CAAC;AAAA,UACL;AAAA,QACF;AAAA;AAAA,QAEA,GAAG,SAASC,GAAEF,OAAMC,QAAO,UAAU;AAEnC,cAAIA,WAAU,MAAM;AAClB,gBAAI,aAAaD,MAAK,eAAe;AAErC,gBAAI,OAAO,aAAa,IAAI,aAAa,IAAI;AAC7C,mBAAO,SAAS,cAAc,MAAM;AAAA,cAClC,MAAM;AAAA,YACR,CAAC;AAAA,UACH;AACA,iBAAO,QAAQ,QAAQ,EAAEA,OAAMC,MAAK;AAAA,QACtC;AAAA;AAAA,QAEA,GAAG,SAAS,EAAED,OAAMC,QAAO,UAAUE,UAAS;AAC5C,cAAI,kBAAkB,GAAG,QAAQ,SAASH,OAAMG,QAAO;AAEvD,cAAI,WAAW,iBAAiB,IAAI,iBAAiB,IAAI;AAGzD,cAAIF,WAAU,MAAM;AAClB,gBAAI,eAAe,WAAW;AAC9B,oBAAQ,GAAG,QAAQ,SAAS,cAAc,CAAC;AAAA,UAC7C;AAGA,cAAIA,WAAU,MAAM;AAClB,mBAAO,SAAS,cAAc,UAAU;AAAA,cACtC,MAAM;AAAA,YACR,CAAC;AAAA,UACH;AAGA,kBAAQ,GAAG,QAAQ,SAAS,UAAUA,OAAM,MAAM;AAAA,QACpD;AAAA;AAAA,QAEA,GAAG,SAAS,EAAED,OAAMC,QAAO;AACzB,cAAI,eAAe,GAAG,QAAQ,SAASD,KAAI;AAG3C,kBAAQ,GAAG,QAAQ,SAAS,aAAaC,OAAM,MAAM;AAAA,QACvD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAUA,GAAG,SAAS,EAAED,OAAMC,QAAO;AACzB,cAAI,OAAOD,MAAK,eAAe;AAC/B,kBAAQ,GAAG,QAAQ,SAAS,MAAMC,OAAM,MAAM;AAAA,QAChD;AAAA;AAAA,QAEA,GAAG,SAAS,EAAED,OAAMC,QAAO,UAAU;AACnC,cAAI,UAAU,KAAK,MAAMD,MAAK,YAAY,IAAI,KAAK,CAAC;AACpD,kBAAQC,QAAO;AAAA,YAEb,KAAK;AACH,qBAAO,OAAO,OAAO;AAAA,YAEvB,KAAK;AACH,sBAAQ,GAAG,QAAQ,SAAS,SAAS,CAAC;AAAA,YAExC,KAAK;AACH,qBAAO,SAAS,cAAc,SAAS;AAAA,gBACrC,MAAM;AAAA,cACR,CAAC;AAAA,YAEH,KAAK;AACH,qBAAO,SAAS,QAAQ,SAAS;AAAA,gBAC/B,OAAO;AAAA,gBACP,SAAS;AAAA,cACX,CAAC;AAAA,YAEH,KAAK;AACH,qBAAO,SAAS,QAAQ,SAAS;AAAA,gBAC/B,OAAO;AAAA,gBACP,SAAS;AAAA,cACX,CAAC;AAAA,YAEH,KAAK;AAAA,YACL;AACE,qBAAO,SAAS,QAAQ,SAAS;AAAA,gBAC/B,OAAO;AAAA,gBACP,SAAS;AAAA,cACX,CAAC;AAAA,UACL;AAAA,QACF;AAAA;AAAA,QAEA,GAAG,SAASG,GAAEJ,OAAMC,QAAO,UAAU;AACnC,cAAI,UAAU,KAAK,MAAMD,MAAK,YAAY,IAAI,KAAK,CAAC;AACpD,kBAAQC,QAAO;AAAA,YAEb,KAAK;AACH,qBAAO,OAAO,OAAO;AAAA,YAEvB,KAAK;AACH,sBAAQ,GAAG,QAAQ,SAAS,SAAS,CAAC;AAAA,YAExC,KAAK;AACH,qBAAO,SAAS,cAAc,SAAS;AAAA,gBACrC,MAAM;AAAA,cACR,CAAC;AAAA,YAEH,KAAK;AACH,qBAAO,SAAS,QAAQ,SAAS;AAAA,gBAC/B,OAAO;AAAA,gBACP,SAAS;AAAA,cACX,CAAC;AAAA,YAEH,KAAK;AACH,qBAAO,SAAS,QAAQ,SAAS;AAAA,gBAC/B,OAAO;AAAA,gBACP,SAAS;AAAA,cACX,CAAC;AAAA,YAEH,KAAK;AAAA,YACL;AACE,qBAAO,SAAS,QAAQ,SAAS;AAAA,gBAC/B,OAAO;AAAA,gBACP,SAAS;AAAA,cACX,CAAC;AAAA,UACL;AAAA,QACF;AAAA;AAAA,QAEA,GAAG,SAAS,EAAED,OAAMC,QAAO,UAAU;AACnC,cAAI,QAAQD,MAAK,YAAY;AAC7B,kBAAQC,QAAO;AAAA,YACb,KAAK;AAAA,YACL,KAAK;AACH,qBAAO,QAAQ,QAAQ,EAAED,OAAMC,MAAK;AAAA,YAEtC,KAAK;AACH,qBAAO,SAAS,cAAc,QAAQ,GAAG;AAAA,gBACvC,MAAM;AAAA,cACR,CAAC;AAAA,YAEH,KAAK;AACH,qBAAO,SAAS,MAAM,OAAO;AAAA,gBAC3B,OAAO;AAAA,gBACP,SAAS;AAAA,cACX,CAAC;AAAA,YAEH,KAAK;AACH,qBAAO,SAAS,MAAM,OAAO;AAAA,gBAC3B,OAAO;AAAA,gBACP,SAAS;AAAA,cACX,CAAC;AAAA,YAEH,KAAK;AAAA,YACL;AACE,qBAAO,SAAS,MAAM,OAAO;AAAA,gBAC3B,OAAO;AAAA,gBACP,SAAS;AAAA,cACX,CAAC;AAAA,UACL;AAAA,QACF;AAAA;AAAA,QAEA,GAAG,SAASI,GAAEL,OAAMC,QAAO,UAAU;AACnC,cAAI,QAAQD,MAAK,YAAY;AAC7B,kBAAQC,QAAO;AAAA,YAEb,KAAK;AACH,qBAAO,OAAO,QAAQ,CAAC;AAAA,YAEzB,KAAK;AACH,sBAAQ,GAAG,QAAQ,SAAS,QAAQ,GAAG,CAAC;AAAA,YAE1C,KAAK;AACH,qBAAO,SAAS,cAAc,QAAQ,GAAG;AAAA,gBACvC,MAAM;AAAA,cACR,CAAC;AAAA,YAEH,KAAK;AACH,qBAAO,SAAS,MAAM,OAAO;AAAA,gBAC3B,OAAO;AAAA,gBACP,SAAS;AAAA,cACX,CAAC;AAAA,YAEH,KAAK;AACH,qBAAO,SAAS,MAAM,OAAO;AAAA,gBAC3B,OAAO;AAAA,gBACP,SAAS;AAAA,cACX,CAAC;AAAA,YAEH,KAAK;AAAA,YACL;AACE,qBAAO,SAAS,MAAM,OAAO;AAAA,gBAC3B,OAAO;AAAA,gBACP,SAAS;AAAA,cACX,CAAC;AAAA,UACL;AAAA,QACF;AAAA;AAAA,QAEA,GAAG,SAASK,GAAEN,OAAMC,QAAO,UAAUE,UAAS;AAC5C,cAAI,QAAQ,GAAG,QAAQ,SAASH,OAAMG,QAAO;AAC7C,cAAIF,WAAU,MAAM;AAClB,mBAAO,SAAS,cAAc,MAAM;AAAA,cAClC,MAAM;AAAA,YACR,CAAC;AAAA,UACH;AACA,kBAAQ,GAAG,QAAQ,SAAS,MAAMA,OAAM,MAAM;AAAA,QAChD;AAAA;AAAA,QAEA,GAAG,SAAS,EAAED,OAAMC,QAAO,UAAU;AACnC,cAAI,WAAW,GAAG,QAAQ,SAASD,KAAI;AACvC,cAAIC,WAAU,MAAM;AAClB,mBAAO,SAAS,cAAc,SAAS;AAAA,cACrC,MAAM;AAAA,YACR,CAAC;AAAA,UACH;AACA,kBAAQ,GAAG,QAAQ,SAAS,SAASA,OAAM,MAAM;AAAA,QACnD;AAAA;AAAA,QAEA,GAAG,SAASM,GAAEP,OAAMC,QAAO,UAAU;AACnC,cAAIA,WAAU,MAAM;AAClB,mBAAO,SAAS,cAAcD,MAAK,WAAW,GAAG;AAAA,cAC/C,MAAM;AAAA,YACR,CAAC;AAAA,UACH;AACA,iBAAO,QAAQ,QAAQ,EAAEA,OAAMC,MAAK;AAAA,QACtC;AAAA;AAAA,QAEA,GAAG,SAAS,EAAED,OAAMC,QAAO,UAAU;AACnC,cAAI,aAAa,GAAG,OAAO,SAASD,KAAI;AACxC,cAAIC,WAAU,MAAM;AAClB,mBAAO,SAAS,cAAc,WAAW;AAAA,cACvC,MAAM;AAAA,YACR,CAAC;AAAA,UACH;AACA,kBAAQ,GAAG,QAAQ,SAAS,WAAWA,OAAM,MAAM;AAAA,QACrD;AAAA;AAAA,QAEA,GAAG,SAAS,EAAED,OAAMC,QAAO,UAAU;AACnC,cAAI,YAAYD,MAAK,UAAU;AAC/B,kBAAQC,QAAO;AAAA,YAEb,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AACH,qBAAO,SAAS,IAAI,WAAW;AAAA,gBAC7B,OAAO;AAAA,gBACP,SAAS;AAAA,cACX,CAAC;AAAA,YAEH,KAAK;AACH,qBAAO,SAAS,IAAI,WAAW;AAAA,gBAC7B,OAAO;AAAA,gBACP,SAAS;AAAA,cACX,CAAC;AAAA,YAEH,KAAK;AACH,qBAAO,SAAS,IAAI,WAAW;AAAA,gBAC7B,OAAO;AAAA,gBACP,SAAS;AAAA,cACX,CAAC;AAAA,YAEH,KAAK;AAAA,YACL;AACE,qBAAO,SAAS,IAAI,WAAW;AAAA,gBAC7B,OAAO;AAAA,gBACP,SAAS;AAAA,cACX,CAAC;AAAA,UACL;AAAA,QACF;AAAA;AAAA,QAEA,GAAG,SAASO,GAAER,OAAMC,QAAO,UAAUE,UAAS;AAC5C,cAAI,YAAYH,MAAK,UAAU;AAC/B,cAAI,kBAAkB,YAAYG,SAAQ,eAAe,KAAK,KAAK;AACnE,kBAAQF,QAAO;AAAA,YAEb,KAAK;AACH,qBAAO,OAAO,cAAc;AAAA,YAE9B,KAAK;AACH,sBAAQ,GAAG,QAAQ,SAAS,gBAAgB,CAAC;AAAA,YAE/C,KAAK;AACH,qBAAO,SAAS,cAAc,gBAAgB;AAAA,gBAC5C,MAAM;AAAA,cACR,CAAC;AAAA,YACH,KAAK;AACH,qBAAO,SAAS,IAAI,WAAW;AAAA,gBAC7B,OAAO;AAAA,gBACP,SAAS;AAAA,cACX,CAAC;AAAA,YAEH,KAAK;AACH,qBAAO,SAAS,IAAI,WAAW;AAAA,gBAC7B,OAAO;AAAA,gBACP,SAAS;AAAA,cACX,CAAC;AAAA,YAEH,KAAK;AACH,qBAAO,SAAS,IAAI,WAAW;AAAA,gBAC7B,OAAO;AAAA,gBACP,SAAS;AAAA,cACX,CAAC;AAAA,YAEH,KAAK;AAAA,YACL;AACE,qBAAO,SAAS,IAAI,WAAW;AAAA,gBAC7B,OAAO;AAAA,gBACP,SAAS;AAAA,cACX,CAAC;AAAA,UACL;AAAA,QACF;AAAA;AAAA,QAEA,GAAG,SAASQ,GAAET,OAAMC,QAAO,UAAUE,UAAS;AAC5C,cAAI,YAAYH,MAAK,UAAU;AAC/B,cAAI,kBAAkB,YAAYG,SAAQ,eAAe,KAAK,KAAK;AACnE,kBAAQF,QAAO;AAAA,YAEb,KAAK;AACH,qBAAO,OAAO,cAAc;AAAA,YAE9B,KAAK;AACH,sBAAQ,GAAG,QAAQ,SAAS,gBAAgBA,OAAM,MAAM;AAAA,YAE1D,KAAK;AACH,qBAAO,SAAS,cAAc,gBAAgB;AAAA,gBAC5C,MAAM;AAAA,cACR,CAAC;AAAA,YACH,KAAK;AACH,qBAAO,SAAS,IAAI,WAAW;AAAA,gBAC7B,OAAO;AAAA,gBACP,SAAS;AAAA,cACX,CAAC;AAAA,YAEH,KAAK;AACH,qBAAO,SAAS,IAAI,WAAW;AAAA,gBAC7B,OAAO;AAAA,gBACP,SAAS;AAAA,cACX,CAAC;AAAA,YAEH,KAAK;AACH,qBAAO,SAAS,IAAI,WAAW;AAAA,gBAC7B,OAAO;AAAA,gBACP,SAAS;AAAA,cACX,CAAC;AAAA,YAEH,KAAK;AAAA,YACL;AACE,qBAAO,SAAS,IAAI,WAAW;AAAA,gBAC7B,OAAO;AAAA,gBACP,SAAS;AAAA,cACX,CAAC;AAAA,UACL;AAAA,QACF;AAAA;AAAA,QAEA,GAAG,SAAS,EAAED,OAAMC,QAAO,UAAU;AACnC,cAAI,YAAYD,MAAK,UAAU;AAC/B,cAAI,eAAe,cAAc,IAAI,IAAI;AACzC,kBAAQC,QAAO;AAAA,YAEb,KAAK;AACH,qBAAO,OAAO,YAAY;AAAA,YAE5B,KAAK;AACH,sBAAQ,GAAG,QAAQ,SAAS,cAAcA,OAAM,MAAM;AAAA,YAExD,KAAK;AACH,qBAAO,SAAS,cAAc,cAAc;AAAA,gBAC1C,MAAM;AAAA,cACR,CAAC;AAAA,YAEH,KAAK;AACH,qBAAO,SAAS,IAAI,WAAW;AAAA,gBAC7B,OAAO;AAAA,gBACP,SAAS;AAAA,cACX,CAAC;AAAA,YAEH,KAAK;AACH,qBAAO,SAAS,IAAI,WAAW;AAAA,gBAC7B,OAAO;AAAA,gBACP,SAAS;AAAA,cACX,CAAC;AAAA,YAEH,KAAK;AACH,qBAAO,SAAS,IAAI,WAAW;AAAA,gBAC7B,OAAO;AAAA,gBACP,SAAS;AAAA,cACX,CAAC;AAAA,YAEH,KAAK;AAAA,YACL;AACE,qBAAO,SAAS,IAAI,WAAW;AAAA,gBAC7B,OAAO;AAAA,gBACP,SAAS;AAAA,cACX,CAAC;AAAA,UACL;AAAA,QACF;AAAA;AAAA,QAEA,GAAG,SAASS,GAAEV,OAAMC,QAAO,UAAU;AACnC,cAAI,QAAQD,MAAK,YAAY;AAC7B,cAAI,qBAAqB,QAAQ,MAAM,IAAI,OAAO;AAClD,kBAAQC,QAAO;AAAA,YACb,KAAK;AAAA,YACL,KAAK;AACH,qBAAO,SAAS,UAAU,oBAAoB;AAAA,gBAC5C,OAAO;AAAA,gBACP,SAAS;AAAA,cACX,CAAC;AAAA,YACH,KAAK;AACH,qBAAO,SAAS,UAAU,oBAAoB;AAAA,gBAC5C,OAAO;AAAA,gBACP,SAAS;AAAA,cACX,CAAC,EAAE,YAAY;AAAA,YACjB,KAAK;AACH,qBAAO,SAAS,UAAU,oBAAoB;AAAA,gBAC5C,OAAO;AAAA,gBACP,SAAS;AAAA,cACX,CAAC;AAAA,YACH,KAAK;AAAA,YACL;AACE,qBAAO,SAAS,UAAU,oBAAoB;AAAA,gBAC5C,OAAO;AAAA,gBACP,SAAS;AAAA,cACX,CAAC;AAAA,UACL;AAAA,QACF;AAAA;AAAA,QAEA,GAAG,SAAS,EAAED,OAAMC,QAAO,UAAU;AACnC,cAAI,QAAQD,MAAK,YAAY;AAC7B,cAAI;AACJ,cAAI,UAAU,IAAI;AAChB,iCAAqB,cAAc;AAAA,UACrC,WAAW,UAAU,GAAG;AACtB,iCAAqB,cAAc;AAAA,UACrC,OAAO;AACL,iCAAqB,QAAQ,MAAM,IAAI,OAAO;AAAA,UAChD;AACA,kBAAQC,QAAO;AAAA,YACb,KAAK;AAAA,YACL,KAAK;AACH,qBAAO,SAAS,UAAU,oBAAoB;AAAA,gBAC5C,OAAO;AAAA,gBACP,SAAS;AAAA,cACX,CAAC;AAAA,YACH,KAAK;AACH,qBAAO,SAAS,UAAU,oBAAoB;AAAA,gBAC5C,OAAO;AAAA,gBACP,SAAS;AAAA,cACX,CAAC,EAAE,YAAY;AAAA,YACjB,KAAK;AACH,qBAAO,SAAS,UAAU,oBAAoB;AAAA,gBAC5C,OAAO;AAAA,gBACP,SAAS;AAAA,cACX,CAAC;AAAA,YACH,KAAK;AAAA,YACL;AACE,qBAAO,SAAS,UAAU,oBAAoB;AAAA,gBAC5C,OAAO;AAAA,gBACP,SAAS;AAAA,cACX,CAAC;AAAA,UACL;AAAA,QACF;AAAA;AAAA,QAEA,GAAG,SAAS,EAAED,OAAMC,QAAO,UAAU;AACnC,cAAI,QAAQD,MAAK,YAAY;AAC7B,cAAI;AACJ,cAAI,SAAS,IAAI;AACf,iCAAqB,cAAc;AAAA,UACrC,WAAW,SAAS,IAAI;AACtB,iCAAqB,cAAc;AAAA,UACrC,WAAW,SAAS,GAAG;AACrB,iCAAqB,cAAc;AAAA,UACrC,OAAO;AACL,iCAAqB,cAAc;AAAA,UACrC;AACA,kBAAQC,QAAO;AAAA,YACb,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AACH,qBAAO,SAAS,UAAU,oBAAoB;AAAA,gBAC5C,OAAO;AAAA,gBACP,SAAS;AAAA,cACX,CAAC;AAAA,YACH,KAAK;AACH,qBAAO,SAAS,UAAU,oBAAoB;AAAA,gBAC5C,OAAO;AAAA,gBACP,SAAS;AAAA,cACX,CAAC;AAAA,YACH,KAAK;AAAA,YACL;AACE,qBAAO,SAAS,UAAU,oBAAoB;AAAA,gBAC5C,OAAO;AAAA,gBACP,SAAS;AAAA,cACX,CAAC;AAAA,UACL;AAAA,QACF;AAAA;AAAA,QAEA,GAAG,SAAS,EAAED,OAAMC,QAAO,UAAU;AACnC,cAAIA,WAAU,MAAM;AAClB,gBAAI,QAAQD,MAAK,YAAY,IAAI;AACjC,gBAAI,UAAU;AAAG,sBAAQ;AACzB,mBAAO,SAAS,cAAc,OAAO;AAAA,cACnC,MAAM;AAAA,YACR,CAAC;AAAA,UACH;AACA,iBAAO,QAAQ,QAAQ,EAAEA,OAAMC,MAAK;AAAA,QACtC;AAAA;AAAA,QAEA,GAAG,SAAS,EAAED,OAAMC,QAAO,UAAU;AACnC,cAAIA,WAAU,MAAM;AAClB,mBAAO,SAAS,cAAcD,MAAK,YAAY,GAAG;AAAA,cAChD,MAAM;AAAA,YACR,CAAC;AAAA,UACH;AACA,iBAAO,QAAQ,QAAQ,EAAEA,OAAMC,MAAK;AAAA,QACtC;AAAA;AAAA,QAEA,GAAG,SAAS,EAAED,OAAMC,QAAO,UAAU;AACnC,cAAI,QAAQD,MAAK,YAAY,IAAI;AACjC,cAAIC,WAAU,MAAM;AAClB,mBAAO,SAAS,cAAc,OAAO;AAAA,cACnC,MAAM;AAAA,YACR,CAAC;AAAA,UACH;AACA,kBAAQ,GAAG,QAAQ,SAAS,OAAOA,OAAM,MAAM;AAAA,QACjD;AAAA;AAAA,QAEA,GAAG,SAASU,GAAEX,OAAMC,QAAO,UAAU;AACnC,cAAI,QAAQD,MAAK,YAAY;AAC7B,cAAI,UAAU;AAAG,oBAAQ;AACzB,cAAIC,WAAU,MAAM;AAClB,mBAAO,SAAS,cAAc,OAAO;AAAA,cACnC,MAAM;AAAA,YACR,CAAC;AAAA,UACH;AACA,kBAAQ,GAAG,QAAQ,SAAS,OAAOA,OAAM,MAAM;AAAA,QACjD;AAAA;AAAA,QAEA,GAAG,SAAS,EAAED,OAAMC,QAAO,UAAU;AACnC,cAAIA,WAAU,MAAM;AAClB,mBAAO,SAAS,cAAcD,MAAK,cAAc,GAAG;AAAA,cAClD,MAAM;AAAA,YACR,CAAC;AAAA,UACH;AACA,iBAAO,QAAQ,QAAQ,EAAEA,OAAMC,MAAK;AAAA,QACtC;AAAA;AAAA,QAEA,GAAG,SAASW,GAAEZ,OAAMC,QAAO,UAAU;AACnC,cAAIA,WAAU,MAAM;AAClB,mBAAO,SAAS,cAAcD,MAAK,cAAc,GAAG;AAAA,cAClD,MAAM;AAAA,YACR,CAAC;AAAA,UACH;AACA,iBAAO,QAAQ,QAAQ,EAAEA,OAAMC,MAAK;AAAA,QACtC;AAAA;AAAA,QAEA,GAAG,SAAS,EAAED,OAAMC,QAAO;AACzB,iBAAO,QAAQ,QAAQ,EAAED,OAAMC,MAAK;AAAA,QACtC;AAAA;AAAA,QAEA,GAAG,SAAS,EAAED,OAAMC,QAAO,WAAWE,UAAS;AAC7C,cAAI,eAAeA,SAAQ,iBAAiBH;AAC5C,cAAI,iBAAiB,aAAa,kBAAkB;AACpD,cAAI,mBAAmB,GAAG;AACxB,mBAAO;AAAA,UACT;AACA,kBAAQC,QAAO;AAAA,YAEb,KAAK;AACH,qBAAO,kCAAkC,cAAc;AAAA,YAKzD,KAAK;AAAA,YACL,KAAK;AAEH,qBAAO,eAAe,cAAc;AAAA,YAKtC,KAAK;AAAA,YACL,KAAK;AAAA,YACL;AACE,qBAAO,eAAe,gBAAgB,GAAG;AAAA,UAC7C;AAAA,QACF;AAAA;AAAA,QAEA,GAAG,SAASY,GAAEb,OAAMC,QAAO,WAAWE,UAAS;AAC7C,cAAI,eAAeA,SAAQ,iBAAiBH;AAC5C,cAAI,iBAAiB,aAAa,kBAAkB;AACpD,kBAAQC,QAAO;AAAA,YAEb,KAAK;AACH,qBAAO,kCAAkC,cAAc;AAAA,YAKzD,KAAK;AAAA,YACL,KAAK;AAEH,qBAAO,eAAe,cAAc;AAAA,YAKtC,KAAK;AAAA,YACL,KAAK;AAAA,YACL;AACE,qBAAO,eAAe,gBAAgB,GAAG;AAAA,UAC7C;AAAA,QACF;AAAA;AAAA,QAEA,GAAG,SAAS,EAAED,OAAMC,QAAO,WAAWE,UAAS;AAC7C,cAAI,eAAeA,SAAQ,iBAAiBH;AAC5C,cAAI,iBAAiB,aAAa,kBAAkB;AACpD,kBAAQC,QAAO;AAAA,YAEb,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AACH,qBAAO,QAAQ,oBAAoB,gBAAgB,GAAG;AAAA,YAExD,KAAK;AAAA,YACL;AACE,qBAAO,QAAQ,eAAe,gBAAgB,GAAG;AAAA,UACrD;AAAA,QACF;AAAA;AAAA,QAEA,GAAG,SAAS,EAAED,OAAMC,QAAO,WAAWE,UAAS;AAC7C,cAAI,eAAeA,SAAQ,iBAAiBH;AAC5C,cAAI,iBAAiB,aAAa,kBAAkB;AACpD,kBAAQC,QAAO;AAAA,YAEb,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AACH,qBAAO,QAAQ,oBAAoB,gBAAgB,GAAG;AAAA,YAExD,KAAK;AAAA,YACL;AACE,qBAAO,QAAQ,eAAe,gBAAgB,GAAG;AAAA,UACrD;AAAA,QACF;AAAA;AAAA,QAEA,GAAG,SAASa,GAAEd,OAAMC,QAAO,WAAWE,UAAS;AAC7C,cAAI,eAAeA,SAAQ,iBAAiBH;AAC5C,cAAI,YAAY,KAAK,MAAM,aAAa,QAAQ,IAAI,GAAI;AACxD,kBAAQ,GAAG,QAAQ,SAAS,WAAWC,OAAM,MAAM;AAAA,QACrD;AAAA;AAAA,QAEA,GAAG,SAAS,EAAED,OAAMC,QAAO,WAAWE,UAAS;AAC7C,cAAI,eAAeA,SAAQ,iBAAiBH;AAC5C,cAAI,YAAY,aAAa,QAAQ;AACrC,kBAAQ,GAAG,QAAQ,SAAS,WAAWC,OAAM,MAAM;AAAA,QACrD;AAAA,MACF;AACA,eAAS,oBAAoB,QAAQ,gBAAgB;AACnD,YAAIc,QAAO,SAAS,IAAI,MAAM;AAC9B,YAAI,YAAY,KAAK,IAAI,MAAM;AAC/B,YAAI,QAAQ,KAAK,MAAM,YAAY,EAAE;AACrC,YAAI,UAAU,YAAY;AAC1B,YAAI,YAAY,GAAG;AACjB,iBAAOA,QAAO,OAAO,KAAK;AAAA,QAC5B;AACA,YAAIC,aAAY,kBAAkB;AAClC,eAAOD,QAAO,OAAO,KAAK,IAAIC,cAAa,GAAG,QAAQ,SAAS,SAAS,CAAC;AAAA,MAC3E;AACA,eAAS,kCAAkC,QAAQ,gBAAgB;AACjE,YAAI,SAAS,OAAO,GAAG;AACrB,cAAID,QAAO,SAAS,IAAI,MAAM;AAC9B,iBAAOA,SAAQ,GAAG,QAAQ,SAAS,KAAK,IAAI,MAAM,IAAI,IAAI,CAAC;AAAA,QAC7D;AACA,eAAO,eAAe,QAAQ,cAAc;AAAA,MAC9C;AACA,eAAS,eAAe,QAAQ,gBAAgB;AAC9C,YAAIC,aAAY,kBAAkB;AAClC,YAAID,QAAO,SAAS,IAAI,MAAM;AAC9B,YAAI,YAAY,KAAK,IAAI,MAAM;AAC/B,YAAI,SAAS,GAAG,QAAQ,SAAS,KAAK,MAAM,YAAY,EAAE,GAAG,CAAC;AAC9D,YAAI,WAAW,GAAG,QAAQ,SAAS,YAAY,IAAI,CAAC;AACpD,eAAOA,QAAO,QAAQC,aAAY;AAAA,MACpC;AACA,UAAI,WAAW;AACf,cAAQ,UAAU;AAClB,aAAO,UAAU,QAAQ;AAAA;AAAA;;;AC5wBzB;AAAA;AAAA;AAEA,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,UAAI,oBAAoB,SAASC,mBAAkB,SAAS,YAAY;AACtE,gBAAQ,SAAS;AAAA,UACf,KAAK;AACH,mBAAO,WAAW,KAAK;AAAA,cACrB,OAAO;AAAA,YACT,CAAC;AAAA,UACH,KAAK;AACH,mBAAO,WAAW,KAAK;AAAA,cACrB,OAAO;AAAA,YACT,CAAC;AAAA,UACH,KAAK;AACH,mBAAO,WAAW,KAAK;AAAA,cACrB,OAAO;AAAA,YACT,CAAC;AAAA,UACH,KAAK;AAAA,UACL;AACE,mBAAO,WAAW,KAAK;AAAA,cACrB,OAAO;AAAA,YACT,CAAC;AAAA,QACL;AAAA,MACF;AACA,UAAI,oBAAoB,SAASC,mBAAkB,SAAS,YAAY;AACtE,gBAAQ,SAAS;AAAA,UACf,KAAK;AACH,mBAAO,WAAW,KAAK;AAAA,cACrB,OAAO;AAAA,YACT,CAAC;AAAA,UACH,KAAK;AACH,mBAAO,WAAW,KAAK;AAAA,cACrB,OAAO;AAAA,YACT,CAAC;AAAA,UACH,KAAK;AACH,mBAAO,WAAW,KAAK;AAAA,cACrB,OAAO;AAAA,YACT,CAAC;AAAA,UACH,KAAK;AAAA,UACL;AACE,mBAAO,WAAW,KAAK;AAAA,cACrB,OAAO;AAAA,YACT,CAAC;AAAA,QACL;AAAA,MACF;AACA,UAAI,wBAAwB,SAASC,uBAAsB,SAAS,YAAY;AAC9E,YAAI,cAAc,QAAQ,MAAM,WAAW,KAAK,CAAC;AACjD,YAAI,cAAc,YAAY,CAAC;AAC/B,YAAI,cAAc,YAAY,CAAC;AAC/B,YAAI,CAAC,aAAa;AAChB,iBAAO,kBAAkB,SAAS,UAAU;AAAA,QAC9C;AACA,YAAI;AACJ,gBAAQ,aAAa;AAAA,UACnB,KAAK;AACH,6BAAiB,WAAW,SAAS;AAAA,cACnC,OAAO;AAAA,YACT,CAAC;AACD;AAAA,UACF,KAAK;AACH,6BAAiB,WAAW,SAAS;AAAA,cACnC,OAAO;AAAA,YACT,CAAC;AACD;AAAA,UACF,KAAK;AACH,6BAAiB,WAAW,SAAS;AAAA,cACnC,OAAO;AAAA,YACT,CAAC;AACD;AAAA,UACF,KAAK;AAAA,UACL;AACE,6BAAiB,WAAW,SAAS;AAAA,cACnC,OAAO;AAAA,YACT,CAAC;AACD;AAAA,QACJ;AACA,eAAO,eAAe,QAAQ,YAAY,kBAAkB,aAAa,UAAU,CAAC,EAAE,QAAQ,YAAY,kBAAkB,aAAa,UAAU,CAAC;AAAA,MACtJ;AACA,UAAI,iBAAiB;AAAA,QACnB,GAAG;AAAA,QACH,GAAG;AAAA,MACL;AACA,UAAI,WAAW;AACf,cAAQ,UAAU;AAClB,aAAO,UAAU,QAAQ;AAAA;AAAA;;;ACvFzB;AAAA;AAAA;AAEA,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAYlB,eAAS,gCAAgCC,OAAM;AAC7C,YAAIC,WAAU,IAAI,KAAK,KAAK,IAAID,MAAK,YAAY,GAAGA,MAAK,SAAS,GAAGA,MAAK,QAAQ,GAAGA,MAAK,SAAS,GAAGA,MAAK,WAAW,GAAGA,MAAK,WAAW,GAAGA,MAAK,gBAAgB,CAAC,CAAC;AACnK,QAAAC,SAAQ,eAAeD,MAAK,YAAY,CAAC;AACzC,eAAOA,MAAK,QAAQ,IAAIC,SAAQ,QAAQ;AAAA,MAC1C;AACA,aAAO,UAAU,QAAQ;AAAA;AAAA;;;ACtBzB;AAAA;AAAA;AAEA,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,4BAA4B;AACpC,cAAQ,2BAA2B;AACnC,cAAQ,sBAAsB;AAC9B,UAAI,2BAA2B,CAAC,KAAK,IAAI;AACzC,UAAI,0BAA0B,CAAC,MAAM,MAAM;AAC3C,eAAS,0BAA0BC,QAAO;AACxC,eAAO,yBAAyB,QAAQA,MAAK,MAAM;AAAA,MACrD;AACA,eAAS,yBAAyBA,QAAO;AACvC,eAAO,wBAAwB,QAAQA,MAAK,MAAM;AAAA,MACpD;AACA,eAAS,oBAAoBA,QAAOC,SAAQ,OAAO;AACjD,YAAID,WAAU,QAAQ;AACpB,gBAAM,IAAI,WAAW,qCAAqC,OAAOC,SAAQ,wCAAwC,EAAE,OAAO,OAAO,gFAAgF,CAAC;AAAA,QACpN,WAAWD,WAAU,MAAM;AACzB,gBAAM,IAAI,WAAW,iCAAiC,OAAOC,SAAQ,wCAAwC,EAAE,OAAO,OAAO,gFAAgF,CAAC;AAAA,QAChN,WAAWD,WAAU,KAAK;AACxB,gBAAM,IAAI,WAAW,+BAA+B,OAAOC,SAAQ,oDAAoD,EAAE,OAAO,OAAO,gFAAgF,CAAC;AAAA,QAC1N,WAAWD,WAAU,MAAM;AACzB,gBAAM,IAAI,WAAW,iCAAiC,OAAOC,SAAQ,oDAAoD,EAAE,OAAO,OAAO,gFAAgF,CAAC;AAAA,QAC5N;AAAA,MACF;AAAA;AAAA;;;AC1BA;AAAA;AAAA;AAEA,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,UAAI,uBAAuB;AAAA,QACzB,kBAAkB;AAAA,UAChB,KAAK;AAAA,UACL,OAAO;AAAA,QACT;AAAA,QACA,UAAU;AAAA,UACR,KAAK;AAAA,UACL,OAAO;AAAA,QACT;AAAA,QACA,aAAa;AAAA,QACb,kBAAkB;AAAA,UAChB,KAAK;AAAA,UACL,OAAO;AAAA,QACT;AAAA,QACA,UAAU;AAAA,UACR,KAAK;AAAA,UACL,OAAO;AAAA,QACT;AAAA,QACA,aAAa;AAAA,UACX,KAAK;AAAA,UACL,OAAO;AAAA,QACT;AAAA,QACA,QAAQ;AAAA,UACN,KAAK;AAAA,UACL,OAAO;AAAA,QACT;AAAA,QACA,OAAO;AAAA,UACL,KAAK;AAAA,UACL,OAAO;AAAA,QACT;AAAA,QACA,aAAa;AAAA,UACX,KAAK;AAAA,UACL,OAAO;AAAA,QACT;AAAA,QACA,QAAQ;AAAA,UACN,KAAK;AAAA,UACL,OAAO;AAAA,QACT;AAAA,QACA,cAAc;AAAA,UACZ,KAAK;AAAA,UACL,OAAO;AAAA,QACT;AAAA,QACA,SAAS;AAAA,UACP,KAAK;AAAA,UACL,OAAO;AAAA,QACT;AAAA,QACA,aAAa;AAAA,UACX,KAAK;AAAA,UACL,OAAO;AAAA,QACT;AAAA,QACA,QAAQ;AAAA,UACN,KAAK;AAAA,UACL,OAAO;AAAA,QACT;AAAA,QACA,YAAY;AAAA,UACV,KAAK;AAAA,UACL,OAAO;AAAA,QACT;AAAA,QACA,cAAc;AAAA,UACZ,KAAK;AAAA,UACL,OAAO;AAAA,QACT;AAAA,MACF;AACA,UAAI,iBAAiB,SAASC,gBAAeC,QAAO,OAAOC,UAAS;AAClE,YAAI;AACJ,YAAI,aAAa,qBAAqBD,MAAK;AAC3C,YAAI,OAAO,eAAe,UAAU;AAClC,mBAAS;AAAA,QACX,WAAW,UAAU,GAAG;AACtB,mBAAS,WAAW;AAAA,QACtB,OAAO;AACL,mBAAS,WAAW,MAAM,QAAQ,aAAa,MAAM,SAAS,CAAC;AAAA,QACjE;AACA,YAAIC,aAAY,QAAQA,aAAY,UAAUA,SAAQ,WAAW;AAC/D,cAAIA,SAAQ,cAAcA,SAAQ,aAAa,GAAG;AAChD,mBAAO,QAAQ;AAAA,UACjB,OAAO;AACL,mBAAO,SAAS;AAAA,UAClB;AAAA,QACF;AACA,eAAO;AAAA,MACT;AACA,UAAI,WAAW;AACf,cAAQ,UAAU;AAClB,aAAO,UAAU,QAAQ;AAAA;AAAA;;;AC1FzB;AAAA;AAAA;AAEA,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,eAAS,kBAAkB,MAAM;AAC/B,eAAO,WAAY;AACjB,cAAIC,WAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAC;AAEnF,cAAI,QAAQA,SAAQ,QAAQ,OAAOA,SAAQ,KAAK,IAAI,KAAK;AACzD,cAAIC,UAAS,KAAK,QAAQ,KAAK,KAAK,KAAK,QAAQ,KAAK,YAAY;AAClE,iBAAOA;AAAA,QACT;AAAA,MACF;AACA,aAAO,UAAU,QAAQ;AAAA;AAAA;;;ACfzB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,UAAI,SAAS,uBAAuB,2BAAmD;AACvF,UAAI,cAAc;AAAA,QAChB,MAAM;AAAA,QACN,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,OAAO;AAAA,MACT;AACA,UAAI,cAAc;AAAA,QAChB,MAAM;AAAA,QACN,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,OAAO;AAAA,MACT;AACA,UAAI,kBAAkB;AAAA,QACpB,MAAM;AAAA,QACN,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,OAAO;AAAA,MACT;AACA,UAAI,aAAa;AAAA,QACf,OAAO,GAAG,OAAO,SAAS;AAAA,UACxB,SAAS;AAAA,UACT,cAAc;AAAA,QAChB,CAAC;AAAA,QACD,OAAO,GAAG,OAAO,SAAS;AAAA,UACxB,SAAS;AAAA,UACT,cAAc;AAAA,QAChB,CAAC;AAAA,QACD,WAAW,GAAG,OAAO,SAAS;AAAA,UAC5B,SAAS;AAAA,UACT,cAAc;AAAA,QAChB,CAAC;AAAA,MACH;AACA,UAAI,WAAW;AACf,cAAQ,UAAU;AAClB,aAAO,UAAU,QAAQ;AAAA;AAAA;;;AC1CzB;AAAA;AAAA;AAEA,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,UAAI,uBAAuB;AAAA,QACzB,UAAU;AAAA,QACV,WAAW;AAAA,QACX,OAAO;AAAA,QACP,UAAU;AAAA,QACV,UAAU;AAAA,QACV,OAAO;AAAA,MACT;AACA,UAAI,iBAAiB,SAASC,gBAAeC,QAAO,OAAO,WAAWC,WAAU;AAC9E,eAAO,qBAAqBD,MAAK;AAAA,MACnC;AACA,UAAI,WAAW;AACf,cAAQ,UAAU;AAClB,aAAO,UAAU,QAAQ;AAAA;AAAA;;;ACnBzB;AAAA;AAAA;AAEA,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,eAAS,gBAAgB,MAAM;AAC7B,eAAO,SAAU,YAAYE,UAAS;AACpC,cAAI,UAAUA,aAAY,QAAQA,aAAY,UAAUA,SAAQ,UAAU,OAAOA,SAAQ,OAAO,IAAI;AACpG,cAAI;AACJ,cAAI,YAAY,gBAAgB,KAAK,kBAAkB;AACrD,gBAAI,eAAe,KAAK,0BAA0B,KAAK;AACvD,gBAAI,QAAQA,aAAY,QAAQA,aAAY,UAAUA,SAAQ,QAAQ,OAAOA,SAAQ,KAAK,IAAI;AAC9F,0BAAc,KAAK,iBAAiB,KAAK,KAAK,KAAK,iBAAiB,YAAY;AAAA,UAClF,OAAO;AACL,gBAAI,gBAAgB,KAAK;AACzB,gBAAI,SAASA,aAAY,QAAQA,aAAY,UAAUA,SAAQ,QAAQ,OAAOA,SAAQ,KAAK,IAAI,KAAK;AACpG,0BAAc,KAAK,OAAO,MAAM,KAAK,KAAK,OAAO,aAAa;AAAA,UAChE;AACA,cAAIC,SAAQ,KAAK,mBAAmB,KAAK,iBAAiB,UAAU,IAAI;AAExE,iBAAO,YAAYA,MAAK;AAAA,QAC1B;AAAA,MACF;AACA,aAAO,UAAU,QAAQ;AAAA;AAAA;;;ACxBzB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,UAAI,SAAS,uBAAuB,yBAAiD;AACrF,UAAI,YAAY;AAAA,QACd,QAAQ,CAAC,KAAK,GAAG;AAAA,QACjB,aAAa,CAAC,MAAM,IAAI;AAAA,QACxB,MAAM,CAAC,iBAAiB,aAAa;AAAA,MACvC;AACA,UAAI,gBAAgB;AAAA,QAClB,QAAQ,CAAC,KAAK,KAAK,KAAK,GAAG;AAAA,QAC3B,aAAa,CAAC,MAAM,MAAM,MAAM,IAAI;AAAA,QACpC,MAAM,CAAC,eAAe,eAAe,eAAe,aAAa;AAAA,MACnE;AAMA,UAAI,cAAc;AAAA,QAChB,QAAQ,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG;AAAA,QACnE,aAAa,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAK;AAAA,QAChG,MAAM,CAAC,WAAW,YAAY,SAAS,SAAS,OAAO,QAAQ,QAAQ,UAAU,aAAa,WAAW,YAAY,UAAU;AAAA,MACjI;AACA,UAAI,YAAY;AAAA,QACd,QAAQ,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG;AAAA,QAC1C,OAAO,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI;AAAA,QAChD,aAAa,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAK;AAAA,QAC7D,MAAM,CAAC,UAAU,UAAU,WAAW,aAAa,YAAY,UAAU,UAAU;AAAA,MACrF;AACA,UAAI,kBAAkB;AAAA,QACpB,QAAQ;AAAA,UACN,IAAI;AAAA,UACJ,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,MAAM;AAAA,UACN,SAAS;AAAA,UACT,WAAW;AAAA,UACX,SAAS;AAAA,UACT,OAAO;AAAA,QACT;AAAA,QACA,aAAa;AAAA,UACX,IAAI;AAAA,UACJ,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,MAAM;AAAA,UACN,SAAS;AAAA,UACT,WAAW;AAAA,UACX,SAAS;AAAA,UACT,OAAO;AAAA,QACT;AAAA,QACA,MAAM;AAAA,UACJ,IAAI;AAAA,UACJ,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,MAAM;AAAA,UACN,SAAS;AAAA,UACT,WAAW;AAAA,UACX,SAAS;AAAA,UACT,OAAO;AAAA,QACT;AAAA,MACF;AACA,UAAI,4BAA4B;AAAA,QAC9B,QAAQ;AAAA,UACN,IAAI;AAAA,UACJ,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,MAAM;AAAA,UACN,SAAS;AAAA,UACT,WAAW;AAAA,UACX,SAAS;AAAA,UACT,OAAO;AAAA,QACT;AAAA,QACA,aAAa;AAAA,UACX,IAAI;AAAA,UACJ,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,MAAM;AAAA,UACN,SAAS;AAAA,UACT,WAAW;AAAA,UACX,SAAS;AAAA,UACT,OAAO;AAAA,QACT;AAAA,QACA,MAAM;AAAA,UACJ,IAAI;AAAA,UACJ,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,MAAM;AAAA,UACN,SAAS;AAAA,UACT,WAAW;AAAA,UACX,SAAS;AAAA,UACT,OAAO;AAAA,QACT;AAAA,MACF;AACA,UAAI,gBAAgB,SAASC,eAAc,aAAaC,WAAU;AAChE,YAAIC,UAAS,OAAO,WAAW;AAS/B,YAAI,SAASA,UAAS;AACtB,YAAI,SAAS,MAAM,SAAS,IAAI;AAC9B,kBAAQ,SAAS,IAAI;AAAA,YACnB,KAAK;AACH,qBAAOA,UAAS;AAAA,YAClB,KAAK;AACH,qBAAOA,UAAS;AAAA,YAClB,KAAK;AACH,qBAAOA,UAAS;AAAA,UACpB;AAAA,QACF;AACA,eAAOA,UAAS;AAAA,MAClB;AACA,UAAI,WAAW;AAAA,QACb;AAAA,QACA,MAAM,GAAG,OAAO,SAAS;AAAA,UACvB,QAAQ;AAAA,UACR,cAAc;AAAA,QAChB,CAAC;AAAA,QACD,UAAU,GAAG,OAAO,SAAS;AAAA,UAC3B,QAAQ;AAAA,UACR,cAAc;AAAA,UACd,kBAAkB,SAAS,iBAAiB,SAAS;AACnD,mBAAO,UAAU;AAAA,UACnB;AAAA,QACF,CAAC;AAAA,QACD,QAAQ,GAAG,OAAO,SAAS;AAAA,UACzB,QAAQ;AAAA,UACR,cAAc;AAAA,QAChB,CAAC;AAAA,QACD,MAAM,GAAG,OAAO,SAAS;AAAA,UACvB,QAAQ;AAAA,UACR,cAAc;AAAA,QAChB,CAAC;AAAA,QACD,YAAY,GAAG,OAAO,SAAS;AAAA,UAC7B,QAAQ;AAAA,UACR,cAAc;AAAA,UACd,kBAAkB;AAAA,UAClB,wBAAwB;AAAA,QAC1B,CAAC;AAAA,MACH;AACA,UAAI,WAAW;AACf,cAAQ,UAAU;AAClB,aAAO,UAAU,QAAQ;AAAA;AAAA;;;ACvJzB;AAAA;AAAA;AAEA,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,eAAS,aAAa,MAAM;AAC1B,eAAO,SAAU,QAAQ;AACvB,cAAIC,WAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAC;AACnF,cAAI,QAAQA,SAAQ;AACpB,cAAI,eAAe,SAAS,KAAK,cAAc,KAAK,KAAK,KAAK,cAAc,KAAK,iBAAiB;AAClG,cAAI,cAAc,OAAO,MAAM,YAAY;AAC3C,cAAI,CAAC,aAAa;AAChB,mBAAO;AAAA,UACT;AACA,cAAI,gBAAgB,YAAY,CAAC;AACjC,cAAI,gBAAgB,SAAS,KAAK,cAAc,KAAK,KAAK,KAAK,cAAc,KAAK,iBAAiB;AACnG,cAAI,MAAM,MAAM,QAAQ,aAAa,IAAI,UAAU,eAAe,SAAU,SAAS;AACnF,mBAAO,QAAQ,KAAK,aAAa;AAAA,UACnC,CAAC,IAAI,QAAQ,eAAe,SAAU,SAAS;AAC7C,mBAAO,QAAQ,KAAK,aAAa;AAAA,UACnC,CAAC;AACD,cAAI;AACJ,kBAAQ,KAAK,gBAAgB,KAAK,cAAc,GAAG,IAAI;AACvD,kBAAQA,SAAQ,gBAAgBA,SAAQ,cAAc,KAAK,IAAI;AAC/D,cAAI,OAAO,OAAO,MAAM,cAAc,MAAM;AAC5C,iBAAO;AAAA,YACL;AAAA,YACA;AAAA,UACF;AAAA,QACF;AAAA,MACF;AACA,eAAS,QAAQ,QAAQ,WAAW;AAClC,iBAAS,OAAO,QAAQ;AACtB,cAAI,OAAO,eAAe,GAAG,KAAK,UAAU,OAAO,GAAG,CAAC,GAAG;AACxD,mBAAO;AAAA,UACT;AAAA,QACF;AACA,eAAO;AAAA,MACT;AACA,eAAS,UAAU,OAAO,WAAW;AACnC,iBAAS,MAAM,GAAG,MAAM,MAAM,QAAQ,OAAO;AAC3C,cAAI,UAAU,MAAM,GAAG,CAAC,GAAG;AACzB,mBAAO;AAAA,UACT;AAAA,QACF;AACA,eAAO;AAAA,MACT;AACA,aAAO,UAAU,QAAQ;AAAA;AAAA;;;AChDzB;AAAA;AAAA;AAEA,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,eAAS,oBAAoB,MAAM;AACjC,eAAO,SAAU,QAAQ;AACvB,cAAIC,WAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAC;AACnF,cAAI,cAAc,OAAO,MAAM,KAAK,YAAY;AAChD,cAAI,CAAC;AAAa,mBAAO;AACzB,cAAI,gBAAgB,YAAY,CAAC;AACjC,cAAI,cAAc,OAAO,MAAM,KAAK,YAAY;AAChD,cAAI,CAAC;AAAa,mBAAO;AACzB,cAAI,QAAQ,KAAK,gBAAgB,KAAK,cAAc,YAAY,CAAC,CAAC,IAAI,YAAY,CAAC;AACnF,kBAAQA,SAAQ,gBAAgBA,SAAQ,cAAc,KAAK,IAAI;AAC/D,cAAI,OAAO,OAAO,MAAM,cAAc,MAAM;AAC5C,iBAAO;AAAA,YACL;AAAA,YACA;AAAA,UACF;AAAA,QACF;AAAA,MACF;AACA,aAAO,UAAU,QAAQ;AAAA;AAAA;;;ACvBzB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,UAAI,SAAS,uBAAuB,sBAA8C;AAClF,UAAI,UAAU,uBAAuB,6BAAqD;AAC1F,UAAI,4BAA4B;AAChC,UAAI,4BAA4B;AAChC,UAAI,mBAAmB;AAAA,QACrB,QAAQ;AAAA,QACR,aAAa;AAAA,QACb,MAAM;AAAA,MACR;AACA,UAAI,mBAAmB;AAAA,QACrB,KAAK,CAAC,OAAO,SAAS;AAAA,MACxB;AACA,UAAI,uBAAuB;AAAA,QACzB,QAAQ;AAAA,QACR,aAAa;AAAA,QACb,MAAM;AAAA,MACR;AACA,UAAI,uBAAuB;AAAA,QACzB,KAAK,CAAC,MAAM,MAAM,MAAM,IAAI;AAAA,MAC9B;AACA,UAAI,qBAAqB;AAAA,QACvB,QAAQ;AAAA,QACR,aAAa;AAAA,QACb,MAAM;AAAA,MACR;AACA,UAAI,qBAAqB;AAAA,QACvB,QAAQ,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAK;AAAA,QAC3F,KAAK,CAAC,QAAQ,OAAO,SAAS,QAAQ,SAAS,SAAS,SAAS,QAAQ,OAAO,OAAO,OAAO,KAAK;AAAA,MACrG;AACA,UAAI,mBAAmB;AAAA,QACrB,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,aAAa;AAAA,QACb,MAAM;AAAA,MACR;AACA,UAAI,mBAAmB;AAAA,QACrB,QAAQ,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAK;AAAA,QACxD,KAAK,CAAC,QAAQ,OAAO,QAAQ,OAAO,QAAQ,OAAO,MAAM;AAAA,MAC3D;AACA,UAAI,yBAAyB;AAAA,QAC3B,QAAQ;AAAA,QACR,KAAK;AAAA,MACP;AACA,UAAI,yBAAyB;AAAA,QAC3B,KAAK;AAAA,UACH,IAAI;AAAA,UACJ,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,MAAM;AAAA,UACN,SAAS;AAAA,UACT,WAAW;AAAA,UACX,SAAS;AAAA,UACT,OAAO;AAAA,QACT;AAAA,MACF;AACA,UAAIC,SAAQ;AAAA,QACV,gBAAgB,GAAG,QAAQ,SAAS;AAAA,UAClC,cAAc;AAAA,UACd,cAAc;AAAA,UACd,eAAe,SAAS,cAAc,OAAO;AAC3C,mBAAO,SAAS,OAAO,EAAE;AAAA,UAC3B;AAAA,QACF,CAAC;AAAA,QACD,MAAM,GAAG,OAAO,SAAS;AAAA,UACvB,eAAe;AAAA,UACf,mBAAmB;AAAA,UACnB,eAAe;AAAA,UACf,mBAAmB;AAAA,QACrB,CAAC;AAAA,QACD,UAAU,GAAG,OAAO,SAAS;AAAA,UAC3B,eAAe;AAAA,UACf,mBAAmB;AAAA,UACnB,eAAe;AAAA,UACf,mBAAmB;AAAA,UACnB,eAAe,SAAS,cAAcC,QAAO;AAC3C,mBAAOA,SAAQ;AAAA,UACjB;AAAA,QACF,CAAC;AAAA,QACD,QAAQ,GAAG,OAAO,SAAS;AAAA,UACzB,eAAe;AAAA,UACf,mBAAmB;AAAA,UACnB,eAAe;AAAA,UACf,mBAAmB;AAAA,QACrB,CAAC;AAAA,QACD,MAAM,GAAG,OAAO,SAAS;AAAA,UACvB,eAAe;AAAA,UACf,mBAAmB;AAAA,UACnB,eAAe;AAAA,UACf,mBAAmB;AAAA,QACrB,CAAC;AAAA,QACD,YAAY,GAAG,OAAO,SAAS;AAAA,UAC7B,eAAe;AAAA,UACf,mBAAmB;AAAA,UACnB,eAAe;AAAA,UACf,mBAAmB;AAAA,QACrB,CAAC;AAAA,MACH;AACA,UAAI,WAAWD;AACf,cAAQ,UAAU;AAClB,aAAO,UAAU,QAAQ;AAAA;AAAA;;;AC1GzB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,UAAI,SAAS,uBAAuB,wBAAyC;AAC7E,UAAI,UAAU,uBAAuB,oBAAqC;AAC1E,UAAI,UAAU,uBAAuB,wBAAyC;AAC9E,UAAI,UAAU,uBAAuB,kBAAmC;AACxE,UAAI,UAAU,uBAAuB,eAAgC;AAUrE,UAAIE,UAAS;AAAA,QACX,MAAM;AAAA,QACN,gBAAgB,OAAO;AAAA,QACvB,YAAY,QAAQ;AAAA,QACpB,gBAAgB,QAAQ;AAAA,QACxB,UAAU,QAAQ;AAAA,QAClB,OAAO,QAAQ;AAAA,QACf,SAAS;AAAA,UACP,cAAc;AAAA,UACd,uBAAuB;AAAA,QACzB;AAAA,MACF;AACA,UAAI,WAAWA;AACf,cAAQ,UAAU;AAClB,aAAO,UAAU,QAAQ;AAAA;AAAA;;;ACnCzB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,UAAI,SAAS,uBAAuB,eAAsC;AAC1E,UAAI,WAAW,OAAO;AACtB,cAAQ,UAAU;AAClB,aAAO,UAAU,QAAQ;AAAA;AAAA;;;ACVzB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAUC;AAClB,UAAI,SAAS,uBAAuB,iBAA8B;AAClE,UAAI,UAAU,uBAAuB,yBAAsC;AAC3E,UAAI,UAAU,uBAAuB,gBAA6B;AAClE,UAAI,UAAU,uBAAuB,oBAA6C;AAClF,UAAI,UAAU,uBAAuB,wBAAiD;AACtF,UAAI,UAAU,uBAAuB,yCAA2D;AAChG,UAAI,UAAU;AACd,UAAI,UAAU,uBAAuB,mBAAqC;AAC1E,UAAI,UAAU,uBAAuB,sBAAwC;AAC7E,UAAI,WAAW;AACf,UAAI,WAAW,uBAAuB,uBAAyC;AAY/E,UAAI,yBAAyB;AAI7B,UAAI,6BAA6B;AACjC,UAAI,sBAAsB;AAC1B,UAAI,oBAAoB;AACxB,UAAI,gCAAgC;AAsSpC,eAASA,QAAO,WAAW,gBAAgBC,UAAS;AAClD,YAAIC,OAAM,iBAAiBC,QAAOC,QAAO,OAAO,uBAAuB,kBAAkB,uBAAuB,uBAAuB,wBAAwB,OAAO,OAAO,OAAO,uBAAuB,kBAAkB,uBAAuB,wBAAwB;AAC5Q,SAAC,GAAG,QAAQ,SAAS,GAAG,SAAS;AACjC,YAAI,YAAY,OAAO,cAAc;AACrC,YAAI,kBAAkB,GAAG,SAAS,mBAAmB;AACrD,YAAIC,WAAUH,SAAQ,kBAAkBD,aAAY,QAAQA,aAAY,SAAS,SAASA,SAAQ,YAAY,QAAQ,oBAAoB,SAAS,kBAAkB,eAAe,YAAY,QAAQC,UAAS,SAASA,QAAO,SAAS;AAC1O,YAAI,yBAAyB,GAAG,QAAQ,UAAUC,UAASC,UAAS,SAAS,wBAAwBH,aAAY,QAAQA,aAAY,SAAS,SAASA,SAAQ,2BAA2B,QAAQ,0BAA0B,SAAS,wBAAwBA,aAAY,QAAQA,aAAY,SAAS,UAAU,mBAAmBA,SAAQ,YAAY,QAAQ,qBAAqB,SAAS,UAAU,wBAAwB,iBAAiB,aAAa,QAAQ,0BAA0B,SAAS,SAAS,sBAAsB,2BAA2B,QAAQ,UAAU,SAAS,QAAQ,eAAe,2BAA2B,QAAQG,WAAU,SAASA,UAAS,wBAAwB,eAAe,YAAY,QAAQ,0BAA0B,SAAS,UAAU,yBAAyB,sBAAsB,aAAa,QAAQ,2BAA2B,SAAS,SAAS,uBAAuB,2BAA2B,QAAQD,WAAU,SAASA,SAAQ,CAAC;AAGl8B,YAAI,EAAE,yBAAyB,KAAK,yBAAyB,IAAI;AAC/D,gBAAM,IAAI,WAAW,2DAA2D;AAAA,QAClF;AACA,YAAI,gBAAgB,GAAG,QAAQ,UAAU,SAAS,SAAS,SAAS,wBAAwBF,aAAY,QAAQA,aAAY,SAAS,SAASA,SAAQ,kBAAkB,QAAQ,0BAA0B,SAAS,wBAAwBA,aAAY,QAAQA,aAAY,SAAS,UAAU,mBAAmBA,SAAQ,YAAY,QAAQ,qBAAqB,SAAS,UAAU,wBAAwB,iBAAiB,aAAa,QAAQ,0BAA0B,SAAS,SAAS,sBAAsB,kBAAkB,QAAQ,UAAU,SAAS,QAAQ,eAAe,kBAAkB,QAAQ,UAAU,SAAS,SAAS,yBAAyB,eAAe,YAAY,QAAQ,2BAA2B,SAAS,UAAU,yBAAyB,uBAAuB,aAAa,QAAQ,2BAA2B,SAAS,SAAS,uBAAuB,kBAAkB,QAAQ,UAAU,SAAS,QAAQ,CAAC;AAGx5B,YAAI,EAAE,gBAAgB,KAAK,gBAAgB,IAAI;AAC7C,gBAAM,IAAI,WAAW,kDAAkD;AAAA,QACzE;AACA,YAAI,CAACI,QAAO,UAAU;AACpB,gBAAM,IAAI,WAAW,uCAAuC;AAAA,QAC9D;AACA,YAAI,CAACA,QAAO,YAAY;AACtB,gBAAM,IAAI,WAAW,yCAAyC;AAAA,QAChE;AACA,YAAI,gBAAgB,GAAG,QAAQ,SAAS,SAAS;AACjD,YAAI,EAAE,GAAG,OAAO,SAAS,YAAY,GAAG;AACtC,gBAAM,IAAI,WAAW,oBAAoB;AAAA,QAC3C;AAKA,YAAI,kBAAkB,GAAG,QAAQ,SAAS,YAAY;AACtD,YAAIC,YAAW,GAAG,QAAQ,SAAS,cAAc,cAAc;AAC/D,YAAI,mBAAmB;AAAA,UACrB;AAAA,UACA;AAAA,UACA,QAAQD;AAAA,UACR,eAAe;AAAA,QACjB;AACA,YAAI,SAAS,UAAU,MAAM,0BAA0B,EAAE,IAAI,SAAU,WAAW;AAChF,cAAI,iBAAiB,UAAU,CAAC;AAChC,cAAI,mBAAmB,OAAO,mBAAmB,KAAK;AACpD,gBAAI,gBAAgB,QAAQ,QAAQ,cAAc;AAClD,mBAAO,cAAc,WAAWA,QAAO,UAAU;AAAA,UACnD;AACA,iBAAO;AAAA,QACT,CAAC,EAAE,KAAK,EAAE,EAAE,MAAM,sBAAsB,EAAE,IAAI,SAAU,WAAW;AAEjE,cAAI,cAAc,MAAM;AACtB,mBAAO;AAAA,UACT;AACA,cAAI,iBAAiB,UAAU,CAAC;AAChC,cAAI,mBAAmB,KAAK;AAC1B,mBAAO,mBAAmB,SAAS;AAAA,UACrC;AACA,cAAI,YAAY,QAAQ,QAAQ,cAAc;AAC9C,cAAI,WAAW;AACb,gBAAI,EAAEJ,aAAY,QAAQA,aAAY,UAAUA,SAAQ,iCAAiC,GAAG,QAAQ,0BAA0B,SAAS,GAAG;AACxI,eAAC,GAAG,QAAQ,qBAAqB,WAAW,gBAAgB,OAAO,SAAS,CAAC;AAAA,YAC/E;AACA,gBAAI,EAAEA,aAAY,QAAQA,aAAY,UAAUA,SAAQ,kCAAkC,GAAG,QAAQ,2BAA2B,SAAS,GAAG;AAC1I,eAAC,GAAG,QAAQ,qBAAqB,WAAW,gBAAgB,OAAO,SAAS,CAAC;AAAA,YAC/E;AACA,mBAAO,UAAUK,UAAS,WAAWD,QAAO,UAAU,gBAAgB;AAAA,UACxE;AACA,cAAI,eAAe,MAAM,6BAA6B,GAAG;AACvD,kBAAM,IAAI,WAAW,mEAAmE,iBAAiB,GAAG;AAAA,UAC9G;AACA,iBAAO;AAAA,QACT,CAAC,EAAE,KAAK,EAAE;AACV,eAAO;AAAA,MACT;AACA,eAAS,mBAAmB,OAAO;AACjC,YAAI,UAAU,MAAM,MAAM,mBAAmB;AAC7C,YAAI,CAAC,SAAS;AACZ,iBAAO;AAAA,QACT;AACA,eAAO,QAAQ,CAAC,EAAE,QAAQ,mBAAmB,GAAG;AAAA,MAClD;AACA,aAAO,UAAU,QAAQ;AAAA;AAAA;;;AC1ZzB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,UAAI,SAAS,uBAAuB,mBAAqC;AACzE,UAAI,UAAU,uBAAuB,yBAAsC;AAC3E,UAAI,UAAU,uBAAuB,sBAAwC;AAC7E,UAAI,yBAAyB;AAoB7B,eAAS,WAAW,WAAW,aAAa;AAC1C,SAAC,GAAG,QAAQ,SAAS,GAAG,SAAS;AACjC,YAAI,UAAU,GAAG,OAAO,SAAS,WAAW;AAC5C,gBAAQ,GAAG,QAAQ,SAAS,WAAW,SAAS,sBAAsB;AAAA,MACxE;AACA,aAAO,UAAU,QAAQ;AAAA;AAAA;;;ACnCzB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,UAAI,SAAS,uBAAuB,mBAAqC;AACzE,UAAI,UAAU,uBAAuB,yBAAsC;AAC3E,UAAI,UAAU,uBAAuB,sBAAwC;AAC7E,UAAI,uBAAuB;AAoB3B,eAAS,SAAS,WAAW,aAAa;AACxC,SAAC,GAAG,QAAQ,SAAS,GAAG,SAAS;AACjC,YAAI,UAAU,GAAG,OAAO,SAAS,WAAW;AAC5C,gBAAQ,GAAG,QAAQ,SAAS,WAAW,SAAS,oBAAoB;AAAA,MACtE;AACA,aAAO,UAAU,QAAQ;AAAA;AAAA;;;ACnCzB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,UAAI,SAAS,uBAAuB,mBAAqC;AACzE,UAAI,UAAU,uBAAuB,gBAA6B;AAClE,UAAI,UAAU,uBAAuB,sBAAwC;AAmB7E,eAAS,QAAQ,WAAW,aAAa;AACvC,SAAC,GAAG,QAAQ,SAAS,GAAG,SAAS;AACjC,YAAIE,SAAQ,GAAG,QAAQ,SAAS,SAAS;AACzC,YAAI,UAAU,GAAG,OAAO,SAAS,WAAW;AAC5C,YAAI,MAAM,MAAM,GAAG;AACjB,iBAAO,oBAAI,KAAK,GAAG;AAAA,QACrB;AACA,YAAI,CAAC,QAAQ;AAEX,iBAAOA;AAAA,QACT;AACA,QAAAA,MAAK,QAAQA,MAAK,QAAQ,IAAI,MAAM;AACpC,eAAOA;AAAA,MACT;AACA,aAAO,UAAU,QAAQ;AAAA;AAAA;;;AC1CzB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,UAAI,SAAS,uBAAuB,mBAAqC;AACzE,UAAI,UAAU,uBAAuB,iBAA8B;AACnE,UAAI,UAAU,uBAAuB,sBAAwC;AAmB7E,eAAS,SAAS,WAAW,aAAa;AACxC,SAAC,GAAG,QAAQ,SAAS,GAAG,SAAS;AACjC,YAAI,UAAU,GAAG,OAAO,SAAS,WAAW;AAC5C,YAAI,OAAO,SAAS;AACpB,gBAAQ,GAAG,QAAQ,SAAS,WAAW,IAAI;AAAA,MAC7C;AACA,aAAO,UAAU,QAAQ;AAAA;AAAA;;;AClCzB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,UAAI,SAAS,uBAAuB,mBAAqC;AACzE,UAAI,UAAU,uBAAuB,gBAA6B;AAClE,UAAI,UAAU,uBAAuB,sBAAwC;AAmB7E,eAAS,UAAU,WAAW,aAAa;AACzC,SAAC,GAAG,QAAQ,SAAS,GAAG,SAAS;AACjC,YAAIC,SAAQ,GAAG,QAAQ,SAAS,SAAS;AACzC,YAAI,UAAU,GAAG,OAAO,SAAS,WAAW;AAC5C,YAAI,MAAM,MAAM,GAAG;AACjB,iBAAO,oBAAI,KAAK,GAAG;AAAA,QACrB;AACA,YAAI,CAAC,QAAQ;AAEX,iBAAOA;AAAA,QACT;AACA,YAAI,aAAaA,MAAK,QAAQ;AAU9B,YAAI,oBAAoB,IAAI,KAAKA,MAAK,QAAQ,CAAC;AAC/C,0BAAkB,SAASA,MAAK,SAAS,IAAI,SAAS,GAAG,CAAC;AAC1D,YAAI,cAAc,kBAAkB,QAAQ;AAC5C,YAAI,cAAc,aAAa;AAG7B,iBAAO;AAAA,QACT,OAAO;AAQL,UAAAA,MAAK,YAAY,kBAAkB,YAAY,GAAG,kBAAkB,SAAS,GAAG,UAAU;AAC1F,iBAAOA;AAAA,QACT;AAAA,MACF;AACA,aAAO,UAAU,QAAQ;AAAA;AAAA;;;ACpEzB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,UAAI,SAAS,uBAAuB,mBAAqC;AACzE,UAAI,UAAU,uBAAuB,mBAAgC;AACrE,UAAI,UAAU,uBAAuB,sBAAwC;AAmB7E,eAAS,YAAY,WAAW,aAAa;AAC3C,SAAC,GAAG,QAAQ,SAAS,GAAG,SAAS;AACjC,YAAI,UAAU,GAAG,OAAO,SAAS,WAAW;AAC5C,YAAIC,UAAS,SAAS;AACtB,gBAAQ,GAAG,QAAQ,SAAS,WAAWA,OAAM;AAAA,MAC/C;AACA,aAAO,UAAU,QAAQ;AAAA;AAAA;;;AClCzB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,UAAI,SAAS,uBAAuB,mBAAqC;AACzE,UAAI,UAAU,uBAAuB,mBAAgC;AACrE,UAAI,UAAU,uBAAuB,sBAAwC;AAmB7E,eAAS,SAAS,WAAW,aAAa;AACxC,SAAC,GAAG,QAAQ,SAAS,GAAG,SAAS;AACjC,YAAI,UAAU,GAAG,OAAO,SAAS,WAAW;AAC5C,gBAAQ,GAAG,QAAQ,SAAS,WAAW,SAAS,EAAE;AAAA,MACpD;AACA,aAAO,UAAU,QAAQ;AAAA;AAAA;;;ACjCzB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,UAAI,SAAS,uBAAuB,iBAA8B;AAClE,UAAI,UAAU,uBAAuB,sBAAwC;AAC7E,UAAI,UAAU,uBAAuB,mBAAqC;AAmB1E,eAAS,QAAQ,WAAW,aAAa;AACvC,SAAC,GAAG,QAAQ,SAAS,GAAG,SAAS;AACjC,YAAI,UAAU,GAAG,QAAQ,SAAS,WAAW;AAC7C,gBAAQ,GAAG,OAAO,SAAS,WAAW,CAAC,MAAM;AAAA,MAC/C;AACA,aAAO,UAAU,QAAQ;AAAA;AAAA;;;ACjCzB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,UAAI,SAAS,uBAAuB,mBAAqC;AACzE,UAAI,UAAU,uBAAuB,kBAA+B;AACpE,UAAI,UAAU,uBAAuB,sBAAwC;AAmB7E,eAAS,SAAS,WAAW,aAAa;AACxC,SAAC,GAAG,QAAQ,SAAS,GAAG,SAAS;AACjC,YAAI,UAAU,GAAG,OAAO,SAAS,WAAW;AAC5C,gBAAQ,GAAG,QAAQ,SAAS,WAAW,CAAC,MAAM;AAAA,MAChD;AACA,aAAO,UAAU,QAAQ;AAAA;AAAA;;;ACjCzB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,UAAI,SAAS,uBAAuB,mBAAqC;AACzE,UAAI,UAAU,uBAAuB,mBAAgC;AACrE,UAAI,UAAU,uBAAuB,sBAAwC;AAmB7E,eAAS,UAAU,WAAW,aAAa;AACzC,SAAC,GAAG,QAAQ,SAAS,GAAG,SAAS;AACjC,YAAI,UAAU,GAAG,OAAO,SAAS,WAAW;AAC5C,gBAAQ,GAAG,QAAQ,SAAS,WAAW,CAAC,MAAM;AAAA,MAChD;AACA,aAAO,UAAU,QAAQ;AAAA;AAAA;;;ACjCzB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,UAAI,SAAS,uBAAuB,mBAAqC;AACzE,UAAI,UAAU,uBAAuB,qBAAkC;AACvE,UAAI,UAAU,uBAAuB,sBAAwC;AAmB7E,eAAS,YAAY,WAAW,aAAa;AAC3C,SAAC,GAAG,QAAQ,SAAS,GAAG,SAAS;AACjC,YAAI,UAAU,GAAG,OAAO,SAAS,WAAW;AAC5C,gBAAQ,GAAG,QAAQ,SAAS,WAAW,CAAC,MAAM;AAAA,MAChD;AACA,aAAO,UAAU,QAAQ;AAAA;AAAA;;;ACjCzB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,UAAI,SAAS,uBAAuB,mBAAqC;AACzE,UAAI,UAAU,uBAAuB,kBAA+B;AACpE,UAAI,UAAU,uBAAuB,sBAAwC;AAmB7E,eAAS,SAAS,WAAW,aAAa;AACxC,SAAC,GAAG,QAAQ,SAAS,GAAG,SAAS;AACjC,YAAI,UAAU,GAAG,OAAO,SAAS,WAAW;AAC5C,gBAAQ,GAAG,QAAQ,SAAS,WAAW,CAAC,MAAM;AAAA,MAChD;AACA,aAAO,UAAU,QAAQ;AAAA;AAAA;;;ACjCzB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,UAAI,SAAS,uBAAuB,gBAA6B;AACjE,UAAI,UAAU,uBAAuB,sBAAwC;AAkB7E,eAAS,WAAW,WAAW;AAC7B,SAAC,GAAG,QAAQ,SAAS,GAAG,SAAS;AACjC,YAAIC,SAAQ,GAAG,OAAO,SAAS,SAAS;AACxC,YAAIC,WAAUD,MAAK,WAAW;AAC9B,eAAOC;AAAA,MACT;AACA,aAAO,UAAU,QAAQ;AAAA;AAAA;;;AChCzB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,UAAI,SAAS,uBAAuB,gBAA6B;AACjE,UAAI,UAAU,uBAAuB,sBAAwC;AAkB7E,eAAS,WAAW,WAAW;AAC7B,SAAC,GAAG,QAAQ,SAAS,GAAG,SAAS;AACjC,YAAIC,SAAQ,GAAG,OAAO,SAAS,SAAS;AACxC,YAAI,UAAUA,MAAK,WAAW;AAC9B,eAAO;AAAA,MACT;AACA,aAAO,UAAU,QAAQ;AAAA;AAAA;;;AChCzB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,UAAI,SAAS,uBAAuB,gBAA6B;AACjE,UAAI,UAAU,uBAAuB,sBAAwC;AAkB7E,eAAS,SAAS,WAAW;AAC3B,SAAC,GAAG,QAAQ,SAAS,GAAG,SAAS;AACjC,YAAIC,SAAQ,GAAG,OAAO,SAAS,SAAS;AACxC,YAAI,QAAQA,MAAK,SAAS;AAC1B,eAAO;AAAA,MACT;AACA,aAAO,UAAU,QAAQ;AAAA;AAAA;;;AChCzB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,UAAI,SAAS,uBAAuB,gBAA6B;AACjE,UAAI,UAAU,uBAAuB,sBAAwC;AAkB7E,eAAS,OAAO,WAAW;AACzB,SAAC,GAAG,QAAQ,SAAS,GAAG,SAAS;AACjC,YAAIC,SAAQ,GAAG,OAAO,SAAS,SAAS;AACxC,YAAI,MAAMA,MAAK,OAAO;AACtB,eAAO;AAAA,MACT;AACA,aAAO,UAAU,QAAQ;AAAA;AAAA;;;AChCzB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,UAAI,SAAS,uBAAuB,gBAA6B;AACjE,UAAI,UAAU,uBAAuB,sBAAwC;AAkB7E,eAAS,QAAQ,WAAW;AAC1B,SAAC,GAAG,QAAQ,SAAS,GAAG,SAAS;AACjC,YAAIC,SAAQ,GAAG,OAAO,SAAS,SAAS;AACxC,YAAI,aAAaA,MAAK,QAAQ;AAC9B,eAAO;AAAA,MACT;AACA,aAAO,UAAU,QAAQ;AAAA;AAAA;;;AChCzB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,UAAI,SAAS,uBAAuB,gBAA6B;AACjE,UAAI,UAAU,uBAAuB,mBAAqC;AAC1E,UAAI,UAAU,uBAAuB,sBAAwC;AAC7E,UAAI,UAAU;AA4Bd,eAAS,YAAY,WAAWC,UAAS;AACvC,YAAIC,OAAMC,QAAOC,QAAO,uBAAuB,iBAAiB,uBAAuB,uBAAuB;AAC9G,SAAC,GAAG,QAAQ,SAAS,GAAG,SAAS;AACjC,YAAI,kBAAkB,GAAG,QAAQ,mBAAmB;AACpD,YAAI,gBAAgB,GAAG,QAAQ,UAAUF,SAAQC,UAASC,UAAS,wBAAwBH,aAAY,QAAQA,aAAY,SAAS,SAASA,SAAQ,kBAAkB,QAAQ,0BAA0B,SAAS,wBAAwBA,aAAY,QAAQA,aAAY,SAAS,UAAU,kBAAkBA,SAAQ,YAAY,QAAQ,oBAAoB,SAAS,UAAU,wBAAwB,gBAAgB,aAAa,QAAQ,0BAA0B,SAAS,SAAS,sBAAsB,kBAAkB,QAAQG,WAAU,SAASA,SAAQ,eAAe,kBAAkB,QAAQD,WAAU,SAASA,UAAS,wBAAwB,eAAe,YAAY,QAAQ,0BAA0B,SAAS,UAAU,yBAAyB,sBAAsB,aAAa,QAAQ,2BAA2B,SAAS,SAAS,uBAAuB,kBAAkB,QAAQD,UAAS,SAASA,QAAO,CAAC;AAG/4B,YAAI,EAAE,gBAAgB,KAAK,gBAAgB,IAAI;AAC7C,gBAAM,IAAI,WAAW,kDAAkD;AAAA,QACzE;AACA,YAAIG,SAAQ,GAAG,OAAO,SAAS,SAAS;AACxC,YAAI,MAAMA,MAAK,OAAO;AACtB,YAAI,QAAQ,MAAM,eAAe,IAAI,KAAK,MAAM;AAChD,QAAAA,MAAK,QAAQA,MAAK,QAAQ,IAAI,IAAI;AAClC,QAAAA,MAAK,SAAS,GAAG,GAAG,GAAG,CAAC;AACxB,eAAOA;AAAA,MACT;AACA,aAAO,UAAU,QAAQ;AAAA;AAAA;;;ACvDzB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,UAAI,SAAS,uBAAuB,qBAAkC;AACtE,UAAI,UAAU,uBAAuB,sBAAwC;AAqB7E,eAAS,eAAe,WAAW;AACjC,SAAC,GAAG,QAAQ,SAAS,GAAG,SAAS;AACjC,gBAAQ,GAAG,OAAO,SAAS,WAAW;AAAA,UACpC,cAAc;AAAA,QAChB,CAAC;AAAA,MACH;AACA,aAAO,UAAU,QAAQ;AAAA;AAAA;;;ACnCzB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,UAAI,SAAS,uBAAuB,gBAA6B;AACjE,UAAI,UAAU,uBAAuB,wBAAqC;AAC1E,UAAI,UAAU,uBAAuB,sBAAwC;AAqB7E,eAAS,eAAe,WAAW;AACjC,SAAC,GAAG,QAAQ,SAAS,GAAG,SAAS;AACjC,YAAIC,SAAQ,GAAG,OAAO,SAAS,SAAS;AACxC,YAAI,OAAOA,MAAK,YAAY;AAC5B,YAAI,4BAA4B,oBAAI,KAAK,CAAC;AAC1C,kCAA0B,YAAY,OAAO,GAAG,GAAG,CAAC;AACpD,kCAA0B,SAAS,GAAG,GAAG,GAAG,CAAC;AAC7C,YAAI,mBAAmB,GAAG,QAAQ,SAAS,yBAAyB;AACpE,YAAI,4BAA4B,oBAAI,KAAK,CAAC;AAC1C,kCAA0B,YAAY,MAAM,GAAG,CAAC;AAChD,kCAA0B,SAAS,GAAG,GAAG,GAAG,CAAC;AAC7C,YAAI,mBAAmB,GAAG,QAAQ,SAAS,yBAAyB;AACpE,YAAIA,MAAK,QAAQ,KAAK,gBAAgB,QAAQ,GAAG;AAC/C,iBAAO,OAAO;AAAA,QAChB,WAAWA,MAAK,QAAQ,KAAK,gBAAgB,QAAQ,GAAG;AACtD,iBAAO;AAAA,QACT,OAAO;AACL,iBAAO,OAAO;AAAA,QAChB;AAAA,MACF;AACA,aAAO,UAAU,QAAQ;AAAA;AAAA;;;AClDzB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,UAAI,SAAS,uBAAuB,wBAAqC;AACzE,UAAI,UAAU,uBAAuB,wBAAqC;AAC1E,UAAI,UAAU,uBAAuB,sBAAwC;AAsB7E,eAAS,mBAAmB,WAAW;AACrC,SAAC,GAAG,QAAQ,SAAS,GAAG,SAAS;AACjC,YAAI,QAAQ,GAAG,OAAO,SAAS,SAAS;AACxC,YAAI,kBAAkB,oBAAI,KAAK,CAAC;AAChC,wBAAgB,YAAY,MAAM,GAAG,CAAC;AACtC,wBAAgB,SAAS,GAAG,GAAG,GAAG,CAAC;AACnC,YAAIC,SAAQ,GAAG,QAAQ,SAAS,eAAe;AAC/C,eAAOA;AAAA,MACT;AACA,aAAO,UAAU,QAAQ;AAAA;AAAA;;;ACxCzB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,UAAI,SAAS,uBAAuB,gBAA6B;AACjE,UAAI,UAAU,uBAAuB,wBAAqC;AAC1E,UAAI,UAAU,uBAAuB,4BAAyC;AAC9E,UAAI,UAAU,uBAAuB,sBAAwC;AAC7E,UAAI,uBAAuB;AAqB3B,eAAS,WAAW,WAAW;AAC7B,SAAC,GAAG,QAAQ,SAAS,GAAG,SAAS;AACjC,YAAIC,SAAQ,GAAG,OAAO,SAAS,SAAS;AACxC,YAAI,QAAQ,GAAG,QAAQ,SAASA,KAAI,EAAE,QAAQ,KAAK,GAAG,QAAQ,SAASA,KAAI,EAAE,QAAQ;AAKrF,eAAO,KAAK,MAAM,OAAO,oBAAoB,IAAI;AAAA,MACnD;AACA,aAAO,UAAU,QAAQ;AAAA;AAAA;;;AC1CzB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,UAAI,SAAS,uBAAuB,gBAA6B;AACjE,UAAI,UAAU,uBAAuB,sBAAwC;AAkB7E,eAAS,SAAS,WAAW;AAC3B,SAAC,GAAG,QAAQ,SAAS,GAAG,SAAS;AACjC,YAAIC,SAAQ,GAAG,OAAO,SAAS,SAAS;AACxC,YAAI,QAAQA,MAAK,SAAS;AAC1B,eAAO;AAAA,MACT;AACA,aAAO,UAAU,QAAQ;AAAA;AAAA;;;AChCzB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,UAAI,SAAS,uBAAuB,gBAA6B;AACjE,UAAI,UAAU,uBAAuB,sBAAwC;AAkB7E,eAAS,WAAW,WAAW;AAC7B,SAAC,GAAG,QAAQ,SAAS,GAAG,SAAS;AACjC,YAAIC,SAAQ,GAAG,OAAO,SAAS,SAAS;AACxC,YAAI,UAAU,KAAK,MAAMA,MAAK,SAAS,IAAI,CAAC,IAAI;AAChD,eAAO;AAAA,MACT;AACA,aAAO,UAAU,QAAQ;AAAA;AAAA;;;AChCzB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,UAAI,SAAS,uBAAuB,gBAA6B;AACjE,UAAI,UAAU,uBAAuB,sBAAwC;AAkB7E,eAAS,QAAQ,WAAW;AAC1B,SAAC,GAAG,QAAQ,SAAS,GAAG,SAAS;AACjC,gBAAQ,GAAG,OAAO,SAAS,SAAS,EAAE,YAAY;AAAA,MACpD;AACA,aAAO,UAAU,QAAQ;AAAA;AAAA;;;AC9BzB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,UAAI,SAAS,uBAAuB,gBAA6B;AACjE,UAAI,UAAU,uBAAuB,sBAAwC;AAkB7E,eAAS,QAAQ,WAAW;AAC1B,SAAC,GAAG,QAAQ,SAAS,GAAG,SAAS;AACjC,YAAIC,SAAQ,GAAG,OAAO,SAAS,SAAS;AACxC,YAAI,YAAYA,MAAK,QAAQ;AAC7B,eAAO;AAAA,MACT;AACA,aAAO,UAAU,QAAQ;AAAA;AAAA;;;AChCzB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,UAAI,SAAS,uBAAuB,mBAAqC;AACzE,UAAI,UAAU,uBAAuB,gBAA6B;AAClE,UAAI,UAAU,uBAAuB,sBAAwC;AAmB7E,eAAS,WAAW,WAAW,cAAc;AAC3C,SAAC,GAAG,QAAQ,SAAS,GAAG,SAAS;AACjC,YAAIC,SAAQ,GAAG,QAAQ,SAAS,SAAS;AACzC,YAAIC,YAAW,GAAG,OAAO,SAAS,YAAY;AAC9C,QAAAD,MAAK,WAAWC,QAAO;AACvB,eAAOD;AAAA,MACT;AACA,aAAO,UAAU,QAAQ;AAAA;AAAA;;;ACnCzB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,UAAI,SAAS,uBAAuB,mBAAqC;AACzE,UAAI,UAAU,uBAAuB,gBAA6B;AAClE,UAAI,UAAU,uBAAuB,sBAAwC;AAmB7E,eAAS,WAAW,WAAW,cAAc;AAC3C,SAAC,GAAG,QAAQ,SAAS,GAAG,SAAS;AACjC,YAAIE,SAAQ,GAAG,QAAQ,SAAS,SAAS;AACzC,YAAI,WAAW,GAAG,OAAO,SAAS,YAAY;AAC9C,QAAAA,MAAK,WAAW,OAAO;AACvB,eAAOA;AAAA,MACT;AACA,aAAO,UAAU,QAAQ;AAAA;AAAA;;;ACnCzB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,UAAI,SAAS,uBAAuB,mBAAqC;AACzE,UAAI,UAAU,uBAAuB,gBAA6B;AAClE,UAAI,UAAU,uBAAuB,sBAAwC;AAmB7E,eAAS,SAAS,WAAW,YAAY;AACvC,SAAC,GAAG,QAAQ,SAAS,GAAG,SAAS;AACjC,YAAIC,SAAQ,GAAG,QAAQ,SAAS,SAAS;AACzC,YAAI,SAAS,GAAG,OAAO,SAAS,UAAU;AAC1C,QAAAA,MAAK,SAAS,KAAK;AACnB,eAAOA;AAAA,MACT;AACA,aAAO,UAAU,QAAQ;AAAA;AAAA;;;ACnCzB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,UAAI,SAAS,uBAAuB,gBAA6B;AACjE,UAAI,UAAU,uBAAuB,sBAAwC;AAkB7E,eAAS,eAAe,WAAW;AACjC,SAAC,GAAG,QAAQ,SAAS,GAAG,SAAS;AACjC,YAAIC,SAAQ,GAAG,OAAO,SAAS,SAAS;AACxC,YAAI,OAAOA,MAAK,YAAY;AAC5B,YAAI,aAAaA,MAAK,SAAS;AAC/B,YAAI,iBAAiB,oBAAI,KAAK,CAAC;AAC/B,uBAAe,YAAY,MAAM,aAAa,GAAG,CAAC;AAClD,uBAAe,SAAS,GAAG,GAAG,GAAG,CAAC;AAClC,eAAO,eAAe,QAAQ;AAAA,MAChC;AACA,aAAO,UAAU,QAAQ;AAAA;AAAA;;;ACpCzB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,UAAI,SAAS,uBAAuB,mBAAqC;AACzE,UAAI,UAAU,uBAAuB,gBAA6B;AAClE,UAAI,UAAU,uBAAuB,wBAAqC;AAC1E,UAAI,UAAU,uBAAuB,sBAAwC;AAmB7E,eAAS,SAAS,WAAW,YAAY;AACvC,SAAC,GAAG,QAAQ,SAAS,GAAG,SAAS;AACjC,YAAIC,SAAQ,GAAG,QAAQ,SAAS,SAAS;AACzC,YAAI,SAAS,GAAG,OAAO,SAAS,UAAU;AAC1C,YAAI,OAAOA,MAAK,YAAY;AAC5B,YAAI,MAAMA,MAAK,QAAQ;AACvB,YAAI,uBAAuB,oBAAI,KAAK,CAAC;AACrC,6BAAqB,YAAY,MAAM,OAAO,EAAE;AAChD,6BAAqB,SAAS,GAAG,GAAG,GAAG,CAAC;AACxC,YAAI,eAAe,GAAG,QAAQ,SAAS,oBAAoB;AAG3D,QAAAA,MAAK,SAAS,OAAO,KAAK,IAAI,KAAK,WAAW,CAAC;AAC/C,eAAOA;AAAA,MACT;AACA,aAAO,UAAU,QAAQ;AAAA;AAAA;;;AC5CzB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,UAAI,SAAS,uBAAuB,mBAAqC;AACzE,UAAI,UAAU,uBAAuB,gBAA6B;AAClE,UAAI,UAAU,uBAAuB,kBAA+B;AACpE,UAAI,UAAU,uBAAuB,sBAAwC;AAmB7E,eAAS,WAAW,WAAW,cAAc;AAC3C,SAAC,GAAG,QAAQ,SAAS,GAAG,SAAS;AACjC,YAAIC,SAAQ,GAAG,QAAQ,SAAS,SAAS;AACzC,YAAI,WAAW,GAAG,OAAO,SAAS,YAAY;AAC9C,YAAI,aAAa,KAAK,MAAMA,MAAK,SAAS,IAAI,CAAC,IAAI;AACnD,YAAI,OAAO,UAAU;AACrB,gBAAQ,GAAG,QAAQ,SAASA,OAAMA,MAAK,SAAS,IAAI,OAAO,CAAC;AAAA,MAC9D;AACA,aAAO,UAAU,QAAQ;AAAA;AAAA;;;ACrCzB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,UAAI,SAAS,uBAAuB,mBAAqC;AACzE,UAAI,UAAU,uBAAuB,gBAA6B;AAClE,UAAI,UAAU,uBAAuB,sBAAwC;AAmB7E,eAAS,QAAQ,WAAW,WAAW;AACrC,SAAC,GAAG,QAAQ,SAAS,GAAG,SAAS;AACjC,YAAIC,SAAQ,GAAG,QAAQ,SAAS,SAAS;AACzC,YAAI,QAAQ,GAAG,OAAO,SAAS,SAAS;AAGxC,YAAI,MAAMA,MAAK,QAAQ,CAAC,GAAG;AACzB,iBAAO,oBAAI,KAAK,GAAG;AAAA,QACrB;AACA,QAAAA,MAAK,YAAY,IAAI;AACrB,eAAOA;AAAA,MACT;AACA,aAAO,UAAU,QAAQ;AAAA;AAAA;;;ACxCzB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAUC;AAClB,UAAI,WAAW,uBAAuB,gBAAwC;AAC9E,UAAI,SAAS,uBAAuB,gBAA6B;AACjE,UAAI,UAAU,uBAAuB,sBAAwC;AAuB7E,eAASA,KAAI,iBAAiB;AAC5B,SAAC,GAAG,QAAQ,SAAS,GAAG,SAAS;AACjC,YAAI;AAEJ,YAAI,mBAAmB,OAAO,gBAAgB,YAAY,YAAY;AACpE,uBAAa;AAAA,QAEf,YAAY,GAAG,SAAS,SAAS,eAAe,MAAM,YAAY,oBAAoB,MAAM;AAC1F,uBAAa,MAAM,UAAU,MAAM,KAAK,eAAe;AAAA,QACzD,OAAO;AAEL,iBAAO,oBAAI,KAAK,GAAG;AAAA,QACrB;AACA,YAAI;AACJ,mBAAW,QAAQ,SAAU,WAAW;AACtC,cAAI,eAAe,GAAG,OAAO,SAAS,SAAS;AAC/C,cAAI,WAAW,UAAa,SAAS,eAAe,MAAM,YAAY,QAAQ,CAAC,GAAG;AAChF,qBAAS;AAAA,UACX;AAAA,QACF,CAAC;AACD,eAAO,UAAU,oBAAI,KAAK,GAAG;AAAA,MAC/B;AACA,aAAO,UAAU,QAAQ;AAAA;AAAA;;;ACtDzB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAUC;AAClB,UAAI,WAAW,uBAAuB,gBAAwC;AAC9E,UAAI,SAAS,uBAAuB,gBAA6B;AACjE,UAAI,UAAU,uBAAuB,sBAAwC;AAuB7E,eAASA,KAAI,iBAAiB;AAC5B,SAAC,GAAG,QAAQ,SAAS,GAAG,SAAS;AACjC,YAAI;AAEJ,YAAI,mBAAmB,OAAO,gBAAgB,YAAY,YAAY;AACpE,uBAAa;AAAA,QAGf,YAAY,GAAG,SAAS,SAAS,eAAe,MAAM,YAAY,oBAAoB,MAAM;AAC1F,uBAAa,MAAM,UAAU,MAAM,KAAK,eAAe;AAAA,QACzD,OAAO;AAEL,iBAAO,oBAAI,KAAK,GAAG;AAAA,QACrB;AACA,YAAI;AACJ,mBAAW,QAAQ,SAAU,WAAW;AACtC,cAAI,eAAe,GAAG,OAAO,SAAS,SAAS;AAC/C,cAAI,WAAW,UAAa,SAAS,eAAe,MAAM,OAAO,WAAW,CAAC,GAAG;AAC9E,qBAAS;AAAA,UACX;AAAA,QACF,CAAC;AACD,eAAO,UAAU,oBAAI,KAAK,GAAG;AAAA,MAC/B;AACA,aAAO,UAAU,QAAQ;AAAA;AAAA;;;ACvDzB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,UAAI,SAAS,uBAAuB,gBAA6B;AACjE,UAAI,UAAU,uBAAuB,sBAAwC;AAmB7E,eAAS,WAAW,WAAW;AAC7B,SAAC,GAAG,QAAQ,SAAS,GAAG,SAAS;AACjC,YAAIC,SAAQ,GAAG,OAAO,SAAS,SAAS;AACxC,QAAAA,MAAK,SAAS,GAAG,GAAG,GAAG,CAAC;AACxB,eAAOA;AAAA,MACT;AACA,aAAO,UAAU,QAAQ;AAAA;AAAA;;;ACjCzB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,UAAI,SAAS,uBAAuB,yCAA2D;AAC/F,UAAI,UAAU,uBAAuB,oBAAiC;AACtE,UAAI,UAAU,uBAAuB,sBAAwC;AAC7E,UAAI,sBAAsB;AAgC1B,eAAS,yBAAyB,eAAe,gBAAgB;AAC/D,SAAC,GAAG,QAAQ,SAAS,GAAG,SAAS;AACjC,YAAI,kBAAkB,GAAG,QAAQ,SAAS,aAAa;AACvD,YAAI,mBAAmB,GAAG,QAAQ,SAAS,cAAc;AACzD,YAAI,gBAAgB,eAAe,QAAQ,KAAK,GAAG,OAAO,SAAS,cAAc;AACjF,YAAI,iBAAiB,gBAAgB,QAAQ,KAAK,GAAG,OAAO,SAAS,eAAe;AAKpF,eAAO,KAAK,OAAO,gBAAgB,kBAAkB,mBAAmB;AAAA,MAC1E;AACA,aAAO,UAAU,QAAQ;AAAA;AAAA;;;ACtDzB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,UAAI,SAAS,uBAAuB,gBAA6B;AACjE,UAAI,UAAU,uBAAuB,sBAAwC;AAsB7E,eAAS,2BAA2B,eAAe,gBAAgB;AACjE,SAAC,GAAG,QAAQ,SAAS,GAAG,SAAS;AACjC,YAAI,YAAY,GAAG,OAAO,SAAS,aAAa;AAChD,YAAI,aAAa,GAAG,OAAO,SAAS,cAAc;AAClD,YAAI,WAAW,SAAS,YAAY,IAAI,UAAU,YAAY;AAC9D,YAAI,YAAY,SAAS,SAAS,IAAI,UAAU,SAAS;AACzD,eAAO,WAAW,KAAK;AAAA,MACzB;AACA,aAAO,UAAU,QAAQ;AAAA;AAAA;;;ACtCzB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,UAAI,SAAS,uBAAuB,gBAA6B;AACjE,UAAI,UAAU,uBAAuB,sBAAwC;AAsB7E,eAAS,0BAA0B,eAAe,gBAAgB;AAChE,SAAC,GAAG,QAAQ,SAAS,GAAG,SAAS;AACjC,YAAI,YAAY,GAAG,OAAO,SAAS,aAAa;AAChD,YAAI,aAAa,GAAG,OAAO,SAAS,cAAc;AAClD,eAAO,SAAS,YAAY,IAAI,UAAU,YAAY;AAAA,MACxD;AACA,aAAO,UAAU,QAAQ;AAAA;AAAA;;;ACpCzB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,UAAI,SAAS,uBAAuB,gBAA6B;AACjE,UAAI,UAAU,uBAAuB,sBAAwC;AAmB7E,eAAS,aAAa,WAAW;AAC/B,SAAC,GAAG,QAAQ,SAAS,GAAG,SAAS;AACjC,YAAIC,SAAQ,GAAG,OAAO,SAAS,SAAS;AACxC,QAAAA,MAAK,QAAQ,CAAC;AACd,QAAAA,MAAK,SAAS,GAAG,GAAG,GAAG,CAAC;AACxB,eAAOA;AAAA,MACT;AACA,aAAO,UAAU,QAAQ;AAAA;AAAA;;;AClCzB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,UAAI,SAAS,uBAAuB,gBAA6B;AACjE,UAAI,UAAU,uBAAuB,sBAAwC;AAmB7E,eAAS,eAAe,WAAW;AACjC,SAAC,GAAG,QAAQ,SAAS,GAAG,SAAS;AACjC,YAAIC,SAAQ,GAAG,OAAO,SAAS,SAAS;AACxC,YAAI,eAAeA,MAAK,SAAS;AACjC,YAAI,QAAQ,eAAe,eAAe;AAC1C,QAAAA,MAAK,SAAS,OAAO,CAAC;AACtB,QAAAA,MAAK,SAAS,GAAG,GAAG,GAAG,CAAC;AACxB,eAAOA;AAAA,MACT;AACA,aAAO,UAAU,QAAQ;AAAA;AAAA;;;ACpCzB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,UAAI,SAAS,uBAAuB,gBAA6B;AACjE,UAAI,UAAU,uBAAuB,sBAAwC;AAmB7E,eAAS,YAAY,WAAW;AAC9B,SAAC,GAAG,QAAQ,SAAS,GAAG,SAAS;AACjC,YAAI,aAAa,GAAG,OAAO,SAAS,SAAS;AAC7C,YAAIC,QAAO,oBAAI,KAAK,CAAC;AACrB,QAAAA,MAAK,YAAY,UAAU,YAAY,GAAG,GAAG,CAAC;AAC9C,QAAAA,MAAK,SAAS,GAAG,GAAG,GAAG,CAAC;AACxB,eAAOA;AAAA,MACT;AACA,aAAO,UAAU,QAAQ;AAAA;AAAA;;;ACnCzB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,UAAI,SAAS,uBAAuB,gBAA6B;AACjE,UAAI,UAAU,uBAAuB,sBAAwC;AAmB7E,eAAS,SAAS,WAAW;AAC3B,SAAC,GAAG,QAAQ,SAAS,GAAG,SAAS;AACjC,YAAIC,SAAQ,GAAG,OAAO,SAAS,SAAS;AACxC,QAAAA,MAAK,SAAS,IAAI,IAAI,IAAI,GAAG;AAC7B,eAAOA;AAAA,MACT;AACA,aAAO,UAAU,QAAQ;AAAA;AAAA;;;ACjCzB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,UAAI,SAAS;AACb,UAAI,UAAU,uBAAuB,gBAA6B;AAClE,UAAI,UAAU,uBAAuB,mBAAqC;AAC1E,UAAI,UAAU,uBAAuB,sBAAwC;AA4B7E,eAAS,UAAU,WAAWC,UAAS;AACrC,YAAIC,OAAMC,QAAOC,QAAO,uBAAuB,iBAAiB,uBAAuB,uBAAuB;AAC9G,SAAC,GAAG,QAAQ,SAAS,GAAG,SAAS;AACjC,YAAI,kBAAkB,GAAG,OAAO,mBAAmB;AACnD,YAAI,gBAAgB,GAAG,QAAQ,UAAUF,SAAQC,UAASC,UAAS,wBAAwBH,aAAY,QAAQA,aAAY,SAAS,SAASA,SAAQ,kBAAkB,QAAQ,0BAA0B,SAAS,wBAAwBA,aAAY,QAAQA,aAAY,SAAS,UAAU,kBAAkBA,SAAQ,YAAY,QAAQ,oBAAoB,SAAS,UAAU,wBAAwB,gBAAgB,aAAa,QAAQ,0BAA0B,SAAS,SAAS,sBAAsB,kBAAkB,QAAQG,WAAU,SAASA,SAAQ,eAAe,kBAAkB,QAAQD,WAAU,SAASA,UAAS,wBAAwB,eAAe,YAAY,QAAQ,0BAA0B,SAAS,UAAU,yBAAyB,sBAAsB,aAAa,QAAQ,2BAA2B,SAAS,SAAS,uBAAuB,kBAAkB,QAAQD,UAAS,SAASA,QAAO,CAAC;AAG/4B,YAAI,EAAE,gBAAgB,KAAK,gBAAgB,IAAI;AAC7C,gBAAM,IAAI,WAAW,kDAAkD;AAAA,QACzE;AACA,YAAIG,SAAQ,GAAG,QAAQ,SAAS,SAAS;AACzC,YAAI,MAAMA,MAAK,OAAO;AACtB,YAAI,QAAQ,MAAM,eAAe,KAAK,KAAK,KAAK,MAAM;AACtD,QAAAA,MAAK,QAAQA,MAAK,QAAQ,IAAI,IAAI;AAClC,QAAAA,MAAK,SAAS,IAAI,IAAI,IAAI,GAAG;AAC7B,eAAOA;AAAA,MACT;AACA,aAAO,UAAU,QAAQ;AAAA;AAAA;;;ACvDzB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,UAAI,SAAS,uBAAuB,gBAA6B;AACjE,UAAI,UAAU,uBAAuB,sBAAwC;AAmB7E,eAAS,WAAW,WAAW;AAC7B,SAAC,GAAG,QAAQ,SAAS,GAAG,SAAS;AACjC,YAAIC,SAAQ,GAAG,OAAO,SAAS,SAAS;AACxC,YAAI,QAAQA,MAAK,SAAS;AAC1B,QAAAA,MAAK,YAAYA,MAAK,YAAY,GAAG,QAAQ,GAAG,CAAC;AACjD,QAAAA,MAAK,SAAS,IAAI,IAAI,IAAI,GAAG;AAC7B,eAAOA;AAAA,MACT;AACA,aAAO,UAAU,QAAQ;AAAA;AAAA;;;ACnCzB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,UAAI,SAAS,uBAAuB,gBAA6B;AACjE,UAAI,UAAU,uBAAuB,sBAAwC;AAmB7E,eAAS,UAAU,WAAW;AAC5B,SAAC,GAAG,QAAQ,SAAS,GAAG,SAAS;AACjC,YAAIC,SAAQ,GAAG,OAAO,SAAS,SAAS;AACxC,YAAI,OAAOA,MAAK,YAAY;AAC5B,QAAAA,MAAK,YAAY,OAAO,GAAG,GAAG,CAAC;AAC/B,QAAAA,MAAK,SAAS,IAAI,IAAI,IAAI,GAAG;AAC7B,eAAOA;AAAA,MACT;AACA,aAAO,UAAU,QAAQ;AAAA;AAAA;;;ACnCzB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAUC;AAClB,UAAI,SAAS,uBAAuB,gBAA6B;AACjE,UAAI,UAAU,uBAAuB,sBAAwC;AAsB7E,eAASA,SAAQ,eAAe,gBAAgB;AAC9C,SAAC,GAAG,QAAQ,SAAS,GAAG,SAAS;AACjC,YAAI,YAAY,GAAG,OAAO,SAAS,aAAa;AAChD,YAAI,aAAa,GAAG,OAAO,SAAS,cAAc;AAClD,eAAO,SAAS,QAAQ,MAAM,UAAU,QAAQ;AAAA,MAClD;AACA,aAAO,UAAU,QAAQ;AAAA;AAAA;;;ACpCzB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,UAAI,SAAS,uBAAuB,oBAAiC;AACrE,UAAI,UAAU,uBAAuB,sBAAwC;AA6B7E,eAAS,UAAU,eAAe,gBAAgB;AAChD,SAAC,GAAG,QAAQ,SAAS,GAAG,SAAS;AACjC,YAAI,sBAAsB,GAAG,OAAO,SAAS,aAAa;AAC1D,YAAI,uBAAuB,GAAG,OAAO,SAAS,cAAc;AAC5D,eAAO,mBAAmB,QAAQ,MAAM,oBAAoB,QAAQ;AAAA,MACtE;AACA,aAAO,UAAU,QAAQ;AAAA;AAAA;;;AC3CzB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,UAAI,SAAS,uBAAuB,gBAA6B;AACjE,UAAI,UAAU,uBAAuB,sBAAwC;AAwB7E,eAAS,YAAY,eAAe,gBAAgB;AAClD,SAAC,GAAG,QAAQ,SAAS,GAAG,SAAS;AACjC,YAAI,YAAY,GAAG,OAAO,SAAS,aAAa;AAChD,YAAI,aAAa,GAAG,OAAO,SAAS,cAAc;AAClD,eAAO,SAAS,YAAY,MAAM,UAAU,YAAY,KAAK,SAAS,SAAS,MAAM,UAAU,SAAS;AAAA,MAC1G;AACA,aAAO,UAAU,QAAQ;AAAA;AAAA;;;ACtCzB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,UAAI,SAAS,uBAAuB,gBAA6B;AACjE,UAAI,UAAU,uBAAuB,sBAAwC;AAmB7E,eAAS,WAAW,eAAe,gBAAgB;AACjD,SAAC,GAAG,QAAQ,SAAS,GAAG,SAAS;AACjC,YAAI,YAAY,GAAG,OAAO,SAAS,aAAa;AAChD,YAAI,aAAa,GAAG,OAAO,SAAS,cAAc;AAClD,eAAO,SAAS,YAAY,MAAM,UAAU,YAAY;AAAA,MAC1D;AACA,aAAO,UAAU,QAAQ;AAAA;AAAA;;;ACjCzB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,UAAI,SAAS,uBAAuB,wBAAqC;AACzE,UAAI,UAAU,uBAAuB,sBAAwC;AAwB7E,eAAS,cAAc,eAAe,gBAAgB;AACpD,SAAC,GAAG,QAAQ,SAAS,GAAG,SAAS;AACjC,YAAI,0BAA0B,GAAG,OAAO,SAAS,aAAa;AAC9D,YAAI,2BAA2B,GAAG,OAAO,SAAS,cAAc;AAChE,eAAO,uBAAuB,QAAQ,MAAM,wBAAwB,QAAQ;AAAA,MAC9E;AACA,aAAO,UAAU,QAAQ;AAAA;AAAA;;;ACtCzB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,UAAI,SAAS,uBAAuB,gBAA6B;AACjE,UAAI,UAAU,uBAAuB,sBAAwC;AAmB7E,eAAS,QAAQ,WAAW,oBAAoB;AAC9C,SAAC,GAAG,QAAQ,SAAS,GAAG,SAAS;AACjC,YAAIC,SAAQ,GAAG,OAAO,SAAS,SAAS;AACxC,YAAI,iBAAiB,GAAG,OAAO,SAAS,kBAAkB;AAC1D,eAAOA,MAAK,QAAQ,IAAI,cAAc,QAAQ;AAAA,MAChD;AACA,aAAO,UAAU,QAAQ;AAAA;AAAA;;;ACjCzB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,UAAI,SAAS,uBAAuB,gBAA6B;AACjE,UAAI,UAAU,uBAAuB,sBAAwC;AAmB7E,eAAS,SAAS,WAAW,oBAAoB;AAC/C,SAAC,GAAG,QAAQ,SAAS,GAAG,SAAS;AACjC,YAAIC,SAAQ,GAAG,OAAO,SAAS,SAAS;AACxC,YAAI,iBAAiB,GAAG,OAAO,SAAS,kBAAkB;AAC1D,eAAOA,MAAK,QAAQ,IAAI,cAAc,QAAQ;AAAA,MAChD;AACA,aAAO,UAAU,QAAQ;AAAA;AAAA;;;ACjCzB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,UAAI,SAAS,uBAAuB,gBAA6B;AACjE,UAAI,UAAU,uBAAuB,sBAAwC;AAwC7E,eAAS,iBAAiB,WAAWC,WAAU;AAC7C,SAAC,GAAG,QAAQ,SAAS,GAAG,SAAS;AACjC,YAAIC,SAAQ,GAAG,OAAO,SAAS,SAAS,EAAE,QAAQ;AAClD,YAAI,aAAa,GAAG,OAAO,SAASD,UAAS,KAAK,EAAE,QAAQ;AAC5D,YAAI,WAAW,GAAG,OAAO,SAASA,UAAS,GAAG,EAAE,QAAQ;AAGxD,YAAI,EAAE,aAAa,UAAU;AAC3B,gBAAM,IAAI,WAAW,kBAAkB;AAAA,QACzC;AACA,eAAOC,SAAQ,aAAaA,SAAQ;AAAA,MACtC;AACA,aAAO,UAAU,QAAQ;AAAA;AAAA;;;AC5DzB;AAAA;AAAA,eAASC,oBAAkB,KAAK,KAAK;AACnC,YAAI,OAAO,QAAQ,MAAM,IAAI;AAAQ,gBAAM,IAAI;AAC/C,iBAAS,IAAI,GAAG,OAAO,IAAI,MAAM,GAAG,GAAG,IAAI,KAAK;AAAK,eAAK,CAAC,IAAI,IAAI,CAAC;AACpE,eAAO;AAAA,MACT;AACA,aAAO,UAAUA,qBAAmB,OAAO,QAAQ,aAAa,MAAM,OAAO,QAAQ,SAAS,IAAI,OAAO;AAAA;AAAA;;;ACLzG;AAAA;AAAA,UAAI,mBAAmB;AACvB,eAASC,8BAA4BC,IAAG,QAAQ;AAC9C,YAAI,CAACA;AAAG;AACR,YAAI,OAAOA,OAAM;AAAU,iBAAO,iBAAiBA,IAAG,MAAM;AAC5D,YAAIC,KAAI,OAAO,UAAU,SAAS,KAAKD,EAAC,EAAE,MAAM,GAAG,EAAE;AACrD,YAAIC,OAAM,YAAYD,GAAE;AAAa,UAAAC,KAAID,GAAE,YAAY;AACvD,YAAIC,OAAM,SAASA,OAAM;AAAO,iBAAO,MAAM,KAAKD,EAAC;AACnD,YAAIC,OAAM,eAAe,2CAA2C,KAAKA,EAAC;AAAG,iBAAO,iBAAiBD,IAAG,MAAM;AAAA,MAChH;AACA,aAAO,UAAUD,+BAA6B,OAAO,QAAQ,aAAa,MAAM,OAAO,QAAQ,SAAS,IAAI,OAAO;AAAA;AAAA;;;ACTnH;AAAA;AAAA,UAAI,6BAA6B;AACjC,eAAS,2BAA2BG,IAAG,gBAAgB;AACrD,YAAI,KAAK,OAAO,WAAW,eAAeA,GAAE,OAAO,QAAQ,KAAKA,GAAE,YAAY;AAC9E,YAAI,CAAC,IAAI;AACP,cAAI,MAAM,QAAQA,EAAC,MAAM,KAAK,2BAA2BA,EAAC,MAAM,kBAAkBA,MAAK,OAAOA,GAAE,WAAW,UAAU;AACnH,gBAAI;AAAI,cAAAA,KAAI;AACZ,gBAAI,IAAI;AACR,gBAAI,IAAI,SAASC,KAAI;AAAA,YAAC;AACtB,mBAAO;AAAA,cACL,GAAG;AAAA,cACH,GAAG,SAASC,KAAI;AACd,oBAAI,KAAKF,GAAE;AAAQ,yBAAO;AAAA,oBACxB,MAAM;AAAA,kBACR;AACA,uBAAO;AAAA,kBACL,MAAM;AAAA,kBACN,OAAOA,GAAE,GAAG;AAAA,gBACd;AAAA,cACF;AAAA,cACA,GAAG,SAASG,GAAE,IAAI;AAChB,sBAAM;AAAA,cACR;AAAA,cACA,GAAG;AAAA,YACL;AAAA,UACF;AACA,gBAAM,IAAI,UAAU,uIAAuI;AAAA,QAC7J;AACA,YAAI,mBAAmB,MACrB,SAAS,OACT;AACF,eAAO;AAAA,UACL,GAAG,SAASC,KAAI;AACd,iBAAK,GAAG,KAAKJ,EAAC;AAAA,UAChB;AAAA,UACA,GAAG,SAASE,KAAI;AACd,gBAAI,OAAO,GAAG,KAAK;AACnB,+BAAmB,KAAK;AACxB,mBAAO;AAAA,UACT;AAAA,UACA,GAAG,SAASC,GAAE,KAAK;AACjB,qBAAS;AACT,kBAAM;AAAA,UACR;AAAA,UACA,GAAG,SAAS,IAAI;AACd,gBAAI;AACF,kBAAI,CAAC,oBAAoB,GAAG,QAAQ,KAAK;AAAM,mBAAG,QAAQ,EAAE;AAAA,YAC9D,UAAE;AACA,kBAAI;AAAQ,sBAAM;AAAA,YACpB;AAAA,UACF;AAAA,QACF;AAAA,MACF;AACA,aAAO,UAAU,4BAA4B,OAAO,QAAQ,aAAa,MAAM,OAAO,QAAQ,SAAS,IAAI,OAAO;AAAA;AAAA;;;ACpDlH;AAAA;AAAA;AAEA,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAUE;AAClB,eAASA,QAAO,QAAQ,QAAQ;AAC9B,YAAI,UAAU,MAAM;AAClB,gBAAM,IAAI,UAAU,+DAA+D;AAAA,QACrF;AACA,iBAAS,YAAY,QAAQ;AAC3B,cAAI,OAAO,UAAU,eAAe,KAAK,QAAQ,QAAQ,GAAG;AAC1D;AACA,mBAAO,QAAQ,IAAI,OAAO,QAAQ;AAAA,UACpC;AAAA,QACF;AACA,eAAO;AAAA,MACT;AACA,aAAO,UAAU,QAAQ;AAAA;AAAA;;;AClBzB;AAAA;AAAA,eAASC,yBAAuBC,OAAM;AACpC,YAAIA,UAAS,QAAQ;AACnB,gBAAM,IAAI,eAAe,2DAA2D;AAAA,QACtF;AACA,eAAOA;AAAA,MACT;AACA,aAAO,UAAUD,0BAAwB,OAAO,QAAQ,aAAa,MAAM,OAAO,QAAQ,SAAS,IAAI,OAAO;AAAA;AAAA;;;ACN9G;AAAA;AAAA,eAASE,kBAAgBC,IAAG,GAAG;AAC7B,eAAO,UAAUD,oBAAkB,OAAO,iBAAiB,OAAO,eAAe,KAAK,IAAI,SAASA,kBAAgBC,IAAGC,IAAG;AACvH,UAAAD,GAAE,YAAYC;AACd,iBAAOD;AAAA,QACT,GAAG,OAAO,QAAQ,aAAa,MAAM,OAAO,QAAQ,SAAS,IAAI,OAAO;AACxE,eAAOD,kBAAgBC,IAAG,CAAC;AAAA,MAC7B;AACA,aAAO,UAAUD,mBAAiB,OAAO,QAAQ,aAAa,MAAM,OAAO,QAAQ,SAAS,IAAI,OAAO;AAAA;AAAA;;;ACPvG;AAAA;AAAA,UAAI,iBAAiB;AACrB,eAASG,YAAU,UAAU,YAAY;AACvC,YAAI,OAAO,eAAe,cAAc,eAAe,MAAM;AAC3D,gBAAM,IAAI,UAAU,oDAAoD;AAAA,QAC1E;AACA,iBAAS,YAAY,OAAO,OAAO,cAAc,WAAW,WAAW;AAAA,UACrE,aAAa;AAAA,YACX,OAAO;AAAA,YACP,UAAU;AAAA,YACV,cAAc;AAAA,UAChB;AAAA,QACF,CAAC;AACD,eAAO,eAAe,UAAU,aAAa;AAAA,UAC3C,UAAU;AAAA,QACZ,CAAC;AACD,YAAI;AAAY,yBAAe,UAAU,UAAU;AAAA,MACrD;AACA,aAAO,UAAUA,aAAW,OAAO,QAAQ,aAAa,MAAM,OAAO,QAAQ,SAAS,IAAI,OAAO;AAAA;AAAA;;;ACjBjG;AAAA;AAAA,eAASC,kBAAgBC,IAAG;AAC1B,eAAO,UAAUD,oBAAkB,OAAO,iBAAiB,OAAO,eAAe,KAAK,IAAI,SAASA,kBAAgBC,IAAG;AACpH,iBAAOA,GAAE,aAAa,OAAO,eAAeA,EAAC;AAAA,QAC/C,GAAG,OAAO,QAAQ,aAAa,MAAM,OAAO,QAAQ,SAAS,IAAI,OAAO;AACxE,eAAOD,kBAAgBC,EAAC;AAAA,MAC1B;AACA,aAAO,UAAUD,mBAAiB,OAAO,QAAQ,aAAa,MAAM,OAAO,QAAQ,SAAS,IAAI,OAAO;AAAA;AAAA;;;ACNvG;AAAA;AAAA,eAASE,8BAA4B;AACnC,YAAI,OAAO,YAAY,eAAe,CAAC,QAAQ;AAAW,iBAAO;AACjE,YAAI,QAAQ,UAAU;AAAM,iBAAO;AACnC,YAAI,OAAO,UAAU;AAAY,iBAAO;AACxC,YAAI;AACF,kBAAQ,UAAU,QAAQ,KAAK,QAAQ,UAAU,SAAS,CAAC,GAAG,WAAY;AAAA,UAAC,CAAC,CAAC;AAC7E,iBAAO;AAAA,QACT,SAASC,IAAG;AACV,iBAAO;AAAA,QACT;AAAA,MACF;AACA,aAAO,UAAUD,6BAA2B,OAAO,QAAQ,aAAa,MAAM,OAAO,QAAQ,SAAS,IAAI,OAAO;AAAA;AAAA;;;ACXjH;AAAA;AAAA,UAAIE,WAAU,iBAAuB,SAAS;AAC9C,UAAI,wBAAwB;AAC5B,eAASC,6BAA2BC,OAAM,MAAM;AAC9C,YAAI,SAASF,SAAQ,IAAI,MAAM,YAAY,OAAO,SAAS,aAAa;AACtE,iBAAO;AAAA,QACT,WAAW,SAAS,QAAQ;AAC1B,gBAAM,IAAI,UAAU,0DAA0D;AAAA,QAChF;AACA,eAAO,sBAAsBE,KAAI;AAAA,MACnC;AACA,aAAO,UAAUD,8BAA4B,OAAO,QAAQ,aAAa,MAAM,OAAO,QAAQ,SAAS,IAAI,OAAO;AAAA;AAAA;;;ACVlH;AAAA;AAAA,UAAI,iBAAiB;AACrB,UAAI,2BAA2B;AAC/B,UAAI,4BAA4B;AAChC,eAASE,eAAa,SAAS;AAC7B,YAAI,4BAA4B,yBAAyB;AACzD,eAAO,SAAS,uBAAuB;AACrC,cAAI,QAAQ,eAAe,OAAO,GAChC;AACF,cAAI,2BAA2B;AAC7B,gBAAI,YAAY,eAAe,IAAI,EAAE;AACrC,qBAAS,QAAQ,UAAU,OAAO,WAAW,SAAS;AAAA,UACxD,OAAO;AACL,qBAAS,MAAM,MAAM,MAAM,SAAS;AAAA,UACtC;AACA,iBAAO,0BAA0B,MAAM,MAAM;AAAA,QAC/C;AAAA,MACF;AACA,aAAO,UAAUA,gBAAc,OAAO,QAAQ,aAAa,MAAM,OAAO,QAAQ,SAAS,IAAI,OAAO;AAAA;AAAA;;;ACjBpG;AAAA;AAAA,eAASC,kBAAgB,UAAU,aAAa;AAC9C,YAAI,EAAE,oBAAoB,cAAc;AACtC,gBAAM,IAAI,UAAU,mCAAmC;AAAA,QACzD;AAAA,MACF;AACA,aAAO,UAAUA,mBAAiB,OAAO,QAAQ,aAAa,MAAM,OAAO,QAAQ,SAAS,IAAI,OAAO;AAAA;AAAA;;;ACLvG;AAAA;AAAA,UAAIC,WAAU,iBAAuB,SAAS;AAC9C,eAASC,cAAa,OAAO,MAAM;AACjC,YAAID,SAAQ,KAAK,MAAM,YAAY,UAAU;AAAM,iBAAO;AAC1D,YAAI,OAAO,MAAM,OAAO,WAAW;AACnC,YAAI,SAAS,QAAW;AACtB,cAAI,MAAM,KAAK,KAAK,OAAO,QAAQ,SAAS;AAC5C,cAAIA,SAAQ,GAAG,MAAM;AAAU,mBAAO;AACtC,gBAAM,IAAI,UAAU,8CAA8C;AAAA,QACpE;AACA,gBAAQ,SAAS,WAAW,SAAS,QAAQ,KAAK;AAAA,MACpD;AACA,aAAO,UAAUC,eAAc,OAAO,QAAQ,aAAa,MAAM,OAAO,QAAQ,SAAS,IAAI,OAAO;AAAA;AAAA;;;ACXpG;AAAA;AAAA,UAAIC,WAAU,iBAAuB,SAAS;AAC9C,UAAI,cAAc;AAClB,eAASC,gBAAe,KAAK;AAC3B,YAAI,MAAM,YAAY,KAAK,QAAQ;AACnC,eAAOD,SAAQ,GAAG,MAAM,WAAW,MAAM,OAAO,GAAG;AAAA,MACrD;AACA,aAAO,UAAUC,iBAAgB,OAAO,QAAQ,aAAa,MAAM,OAAO,QAAQ,SAAS,IAAI,OAAO;AAAA;AAAA;;;ACNtG;AAAA;AAAA,UAAI,gBAAgB;AACpB,eAASC,oBAAkB,QAAQ,OAAO;AACxC,iBAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,cAAI,aAAa,MAAM,CAAC;AACxB,qBAAW,aAAa,WAAW,cAAc;AACjD,qBAAW,eAAe;AAC1B,cAAI,WAAW;AAAY,uBAAW,WAAW;AACjD,iBAAO,eAAe,QAAQ,cAAc,WAAW,GAAG,GAAG,UAAU;AAAA,QACzE;AAAA,MACF;AACA,eAASC,eAAa,aAAa,YAAY,aAAa;AAC1D,YAAI;AAAY,UAAAD,oBAAkB,YAAY,WAAW,UAAU;AACnE,YAAI;AAAa,UAAAA,oBAAkB,aAAa,WAAW;AAC3D,eAAO,eAAe,aAAa,aAAa;AAAA,UAC9C,UAAU;AAAA,QACZ,CAAC;AACD,eAAO;AAAA,MACT;AACA,aAAO,UAAUC,gBAAc,OAAO,QAAQ,aAAa,MAAM,OAAO,QAAQ,SAAS,IAAI,OAAO;AAAA;AAAA;;;AClBpG;AAAA;AAAA,UAAI,gBAAgB;AACpB,eAASC,kBAAgB,KAAK,KAAK,OAAO;AACxC,cAAM,cAAc,GAAG;AACvB,YAAI,OAAO,KAAK;AACd,iBAAO,eAAe,KAAK,KAAK;AAAA,YAC9B;AAAA,YACA,YAAY;AAAA,YACZ,cAAc;AAAA,YACd,UAAU;AAAA,UACZ,CAAC;AAAA,QACH,OAAO;AACL,cAAI,GAAG,IAAI;AAAA,QACb;AACA,eAAO;AAAA,MACT;AACA,aAAO,UAAUA,mBAAiB,OAAO,QAAQ,aAAa,MAAM,OAAO,QAAQ,SAAS,IAAI,OAAO;AAAA;AAAA;;;ACfvG;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,cAAc,QAAQ,SAAS,QAAQ,6BAA6B;AAC5E,UAAIC,2BAA0B,uBAAuB,+BAAuD;AAC5G,UAAIC,cAAa,uBAAuB,kBAA0C;AAClF,UAAIC,iBAAgB,uBAAuB,qBAA6C;AACxF,UAAIC,oBAAmB,uBAAuB,wBAAgD;AAC9F,UAAIC,iBAAgB,uBAAuB,qBAA6C;AACxF,UAAIC,oBAAmB,uBAAuB,wBAAgD;AAC9F,UAAI,yBAAyB;AAC7B,UAAI,SAAsB,2BAAY;AACpC,iBAASC,UAAS;AAChB,WAAC,GAAGH,kBAAiB,SAAS,MAAMG,OAAM;AAC1C,WAAC,GAAGD,kBAAiB,SAAS,MAAM,YAAY,MAAM;AACtD,WAAC,GAAGA,kBAAiB,SAAS,MAAM,eAAe,CAAC;AAAA,QACtD;AACA,SAAC,GAAGD,eAAc,SAASE,SAAQ,CAAC;AAAA,UAClC,KAAK;AAAA,UACL,OAAO,SAAS,SAAS,UAAUC,WAAU;AAC3C,mBAAO;AAAA,UACT;AAAA,QACF,CAAC,CAAC;AACF,eAAOD;AAAA,MACT,EAAE;AACF,cAAQ,SAAS;AACjB,UAAI,cAA2B,yBAAU,SAAS;AAChD,SAAC,GAAGL,YAAW,SAASO,cAAa,OAAO;AAC5C,YAAI,UAAU,GAAGN,eAAc,SAASM,YAAW;AACnD,iBAASA,aAAY,OAAO,eAAe,UAAU,UAAU,aAAa;AAC1E,cAAI;AACJ,WAAC,GAAGL,kBAAiB,SAAS,MAAMK,YAAW;AAC/C,kBAAQ,OAAO,KAAK,IAAI;AACxB,gBAAM,QAAQ;AACd,gBAAM,gBAAgB;AACtB,gBAAM,WAAW;AACjB,gBAAM,WAAW;AACjB,cAAI,aAAa;AACf,kBAAM,cAAc;AAAA,UACtB;AACA,iBAAO;AAAA,QACT;AACA,SAAC,GAAGJ,eAAc,SAASI,cAAa,CAAC;AAAA,UACvC,KAAK;AAAA,UACL,OAAO,SAAS,SAASC,UAASC,UAAS;AACzC,mBAAO,KAAK,cAAcD,UAAS,KAAK,OAAOC,QAAO;AAAA,UACxD;AAAA,QACF,GAAG;AAAA,UACD,KAAK;AAAA,UACL,OAAO,SAAS,IAAID,UAAS,OAAOC,UAAS;AAC3C,mBAAO,KAAK,SAASD,UAAS,OAAO,KAAK,OAAOC,QAAO;AAAA,UAC1D;AAAA,QACF,CAAC,CAAC;AACF,eAAOF;AAAA,MACT,EAAE,MAAM;AACR,cAAQ,cAAc;AACtB,UAAI,6BAA0C,yBAAU,UAAU;AAChE,SAAC,GAAGP,YAAW,SAASU,6BAA4B,QAAQ;AAC5D,YAAI,WAAW,GAAGT,eAAc,SAASS,2BAA0B;AACnE,iBAASA,8BAA6B;AACpC,cAAI;AACJ,WAAC,GAAGR,kBAAiB,SAAS,MAAMQ,2BAA0B;AAC9D,mBAAS,OAAO,UAAU,QAAQ,OAAO,IAAI,MAAM,IAAI,GAAG,OAAO,GAAG,OAAO,MAAM,QAAQ;AACvF,iBAAK,IAAI,IAAI,UAAU,IAAI;AAAA,UAC7B;AACA,mBAAS,QAAQ,KAAK,MAAM,SAAS,CAAC,IAAI,EAAE,OAAO,IAAI,CAAC;AACxD,WAAC,GAAGN,kBAAiB,UAAU,GAAGL,yBAAwB,SAAS,MAAM,GAAG,YAAY,sBAAsB;AAC9G,WAAC,GAAGK,kBAAiB,UAAU,GAAGL,yBAAwB,SAAS,MAAM,GAAG,eAAe,EAAE;AAC7F,iBAAO;AAAA,QACT;AACA,SAAC,GAAGI,eAAc,SAASO,6BAA4B,CAAC;AAAA,UACtD,KAAK;AAAA,UACL,OAAO,SAAS,IAAIC,OAAM,OAAO;AAC/B,gBAAI,MAAM,gBAAgB;AACxB,qBAAOA;AAAA,YACT;AACA,gBAAI,gBAAgB,oBAAI,KAAK,CAAC;AAC9B,0BAAc,YAAYA,MAAK,eAAe,GAAGA,MAAK,YAAY,GAAGA,MAAK,WAAW,CAAC;AACtF,0BAAc,SAASA,MAAK,YAAY,GAAGA,MAAK,cAAc,GAAGA,MAAK,cAAc,GAAGA,MAAK,mBAAmB,CAAC;AAChH,mBAAO;AAAA,UACT;AAAA,QACF,CAAC,CAAC;AACF,eAAOD;AAAA,MACT,EAAE,MAAM;AACR,cAAQ,6BAA6B;AAAA;AAAA;;;ACvFrC;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,SAAS;AACjB,UAAIE,oBAAmB,uBAAuB,wBAAgD;AAC9F,UAAIC,iBAAgB,uBAAuB,qBAA6C;AACxF,UAAIC,oBAAmB,uBAAuB,wBAAgD;AAC9F,UAAI,UAAU;AACd,UAAI,SAAsB,2BAAY;AACpC,iBAASC,UAAS;AAChB,WAAC,GAAGH,kBAAiB,SAAS,MAAMG,OAAM;AAC1C,WAAC,GAAGD,kBAAiB,SAAS,MAAM,sBAAsB,MAAM;AAChE,WAAC,GAAGA,kBAAiB,SAAS,MAAM,YAAY,MAAM;AACtD,WAAC,GAAGA,kBAAiB,SAAS,MAAM,eAAe,MAAM;AAAA,QAC3D;AACA,SAAC,GAAGD,eAAc,SAASE,SAAQ,CAAC;AAAA,UAClC,KAAK;AAAA,UACL,OAAO,SAAS,IAAI,YAAYC,QAAOC,QAAOC,UAAS;AACrD,gBAAI,SAAS,KAAK,MAAM,YAAYF,QAAOC,QAAOC,QAAO;AACzD,gBAAI,CAAC,QAAQ;AACX,qBAAO;AAAA,YACT;AACA,mBAAO;AAAA,cACL,QAAQ,IAAI,QAAQ,YAAY,OAAO,OAAO,KAAK,UAAU,KAAK,KAAK,KAAK,UAAU,KAAK,WAAW;AAAA,cACtG,MAAM,OAAO;AAAA,YACf;AAAA,UACF;AAAA,QACF,GAAG;AAAA,UACD,KAAK;AAAA,UACL,OAAO,SAAS,SAAS,UAAU,QAAQC,WAAU;AACnD,mBAAO;AAAA,UACT;AAAA,QACF,CAAC,CAAC;AACF,eAAOJ;AAAA,MACT,EAAE;AACF,cAAQ,SAAS;AAAA;AAAA;;;ACtCjB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,YAAY;AACpB,UAAIK,oBAAmB,uBAAuB,wBAAgD;AAC9F,UAAIC,iBAAgB,uBAAuB,qBAA6C;AACxF,UAAIC,2BAA0B,uBAAuB,+BAAuD;AAC5G,UAAIC,cAAa,uBAAuB,kBAA0C;AAClF,UAAIC,iBAAgB,uBAAuB,qBAA6C;AACxF,UAAIC,oBAAmB,uBAAuB,wBAAgD;AAC9F,UAAI,WAAW;AACf,UAAI,YAAyB,yBAAU,SAAS;AAC9C,SAAC,GAAGF,YAAW,SAASG,YAAW,OAAO;AAC1C,YAAI,UAAU,GAAGF,eAAc,SAASE,UAAS;AACjD,iBAASA,aAAY;AACnB,cAAI;AACJ,WAAC,GAAGN,kBAAiB,SAAS,MAAMM,UAAS;AAC7C,mBAAS,OAAO,UAAU,QAAQ,OAAO,IAAI,MAAM,IAAI,GAAG,OAAO,GAAG,OAAO,MAAM,QAAQ;AACvF,iBAAK,IAAI,IAAI,UAAU,IAAI;AAAA,UAC7B;AACA,kBAAQ,OAAO,KAAK,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,IAAI,CAAC;AACrD,WAAC,GAAGD,kBAAiB,UAAU,GAAGH,yBAAwB,SAAS,KAAK,GAAG,YAAY,GAAG;AAC1F,WAAC,GAAGG,kBAAiB,UAAU,GAAGH,yBAAwB,SAAS,KAAK,GAAG,sBAAsB,CAAC,KAAK,KAAK,KAAK,GAAG,CAAC;AACrH,iBAAO;AAAA,QACT;AACA,SAAC,GAAGD,eAAc,SAASK,YAAW,CAAC;AAAA,UACrC,KAAK;AAAA,UACL,OAAO,SAASC,OAAM,YAAYC,QAAOC,QAAO;AAC9C,oBAAQD,QAAO;AAAA,cAEb,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AACH,uBAAOC,OAAM,IAAI,YAAY;AAAA,kBAC3B,OAAO;AAAA,gBACT,CAAC,KAAKA,OAAM,IAAI,YAAY;AAAA,kBAC1B,OAAO;AAAA,gBACT,CAAC;AAAA,cAEH,KAAK;AACH,uBAAOA,OAAM,IAAI,YAAY;AAAA,kBAC3B,OAAO;AAAA,gBACT,CAAC;AAAA,cAEH,KAAK;AAAA,cACL;AACE,uBAAOA,OAAM,IAAI,YAAY;AAAA,kBAC3B,OAAO;AAAA,gBACT,CAAC,KAAKA,OAAM,IAAI,YAAY;AAAA,kBAC1B,OAAO;AAAA,gBACT,CAAC,KAAKA,OAAM,IAAI,YAAY;AAAA,kBAC1B,OAAO;AAAA,gBACT,CAAC;AAAA,YACL;AAAA,UACF;AAAA,QACF,GAAG;AAAA,UACD,KAAK;AAAA,UACL,OAAO,SAAS,IAAIC,OAAM,OAAO,OAAO;AACtC,kBAAM,MAAM;AACZ,YAAAA,MAAK,eAAe,OAAO,GAAG,CAAC;AAC/B,YAAAA,MAAK,YAAY,GAAG,GAAG,GAAG,CAAC;AAC3B,mBAAOA;AAAA,UACT;AAAA,QACF,CAAC,CAAC;AACF,eAAOJ;AAAA,MACT,EAAE,SAAS,MAAM;AACjB,cAAQ,YAAY;AAAA;AAAA;;;ACrEpB;AAAA;AAAA;AAEA,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,gBAAgB,QAAQ,gBAAgB,QAAQ,mBAAmB,QAAQ,iBAAiB,QAAQ,kBAAkB,QAAQ,gBAAgB,QAAQ,eAAe,QAAQ,iBAAiB,QAAQ,eAAe,QAAQ,kBAAkB,QAAQ,gBAAgB,QAAQ,UAAU,QAAQ,uBAAuB,QAAQ,uBAAuB,QAAQ,qBAAqB,QAAQ,UAAU,QAAQ,aAAa,QAAQ,aAAa;AASxb,UAAI,aAAa;AAcjB,cAAQ,aAAa;AACrB,UAAI,aAAa;AAUjB,cAAQ,aAAa;AACrB,UAAI,UAAU,KAAK,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,KAAK;AAU/C,cAAQ,UAAU;AAClB,UAAI,uBAAuB;AAU3B,cAAQ,uBAAuB;AAC/B,UAAI,qBAAqB;AAUzB,cAAQ,qBAAqB;AAC7B,UAAI,uBAAuB;AAU3B,cAAQ,uBAAuB;AAC/B,UAAI,UAAU,CAAC;AAUf,cAAQ,UAAU;AAClB,UAAI,gBAAgB;AAUpB,cAAQ,gBAAgB;AACxB,UAAI,kBAAkB;AAUtB,cAAQ,kBAAkB;AAC1B,UAAI,eAAe;AAUnB,cAAQ,eAAe;AACvB,UAAI,iBAAiB;AAUrB,cAAQ,iBAAiB;AACzB,UAAI,gBAAgB;AAUpB,cAAQ,gBAAgB;AACxB,UAAI,kBAAkB;AAUtB,cAAQ,kBAAkB;AAC1B,UAAI,eAAe,gBAAgB;AAUnC,cAAQ,eAAe;AACvB,UAAI,gBAAgB,eAAe;AAUnC,cAAQ,gBAAgB;AACxB,UAAI,gBAAgB,eAAe;AAUnC,cAAQ,gBAAgB;AACxB,UAAI,iBAAiB,gBAAgB;AAUrC,cAAQ,iBAAiB;AACzB,UAAI,mBAAmB,iBAAiB;AACxC,cAAQ,mBAAmB;AAAA;AAAA;;;AC9M3B,MAAAK,qBAAA;AAAA;AAAA;AAEA,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,mBAAmB,QAAQ,kBAAkB;AACrD,UAAI,kBAAkB;AAAA,QACpB,OAAO;AAAA;AAAA,QAEP,MAAM;AAAA;AAAA,QAEN,WAAW;AAAA;AAAA,QAEX,MAAM;AAAA;AAAA,QAEN,SAAS;AAAA;AAAA,QAET,SAAS;AAAA;AAAA,QAET,SAAS;AAAA;AAAA,QAET,SAAS;AAAA;AAAA,QAET,QAAQ;AAAA;AAAA,QAER,QAAQ;AAAA;AAAA,QAGR,aAAa;AAAA;AAAA,QAEb,WAAW;AAAA;AAAA,QAEX,aAAa;AAAA;AAAA,QAEb,YAAY;AAAA;AAAA,QAGZ,iBAAiB;AAAA,QACjB,mBAAmB;AAAA;AAAA,QAEnB,iBAAiB;AAAA;AAAA,QAEjB,mBAAmB;AAAA;AAAA,QAEnB,kBAAkB;AAAA;AAAA,MACpB;AACA,cAAQ,kBAAkB;AAC1B,UAAI,mBAAmB;AAAA,QACrB,sBAAsB;AAAA,QACtB,OAAO;AAAA,QACP,sBAAsB;AAAA,QACtB,UAAU;AAAA,QACV,yBAAyB;AAAA,MAC3B;AACA,cAAQ,mBAAmB;AAAA;AAAA;;;ACtD3B,MAAAC,iBAAA;AAAA;AAAA;AAEA,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,uBAAuB;AAC/B,cAAQ,kBAAkB;AAC1B,cAAQ,WAAW;AACnB,cAAQ,wBAAwB;AAChC,cAAQ,uBAAuB;AAC/B,cAAQ,eAAe;AACvB,cAAQ,qBAAqB;AAC7B,cAAQ,sBAAsB;AAC9B,cAAQ,uBAAuB;AAC/B,UAAI,SAAS;AACb,UAAI,aAAa;AACjB,eAAS,SAAS,eAAe,OAAO;AACtC,YAAI,CAAC,eAAe;AAClB,iBAAO;AAAA,QACT;AACA,eAAO;AAAA,UACL,OAAO,MAAM,cAAc,KAAK;AAAA,UAChC,MAAM,cAAc;AAAA,QACtB;AAAA,MACF;AACA,eAAS,oBAAoB,SAAS,YAAY;AAChD,YAAI,cAAc,WAAW,MAAM,OAAO;AAC1C,YAAI,CAAC,aAAa;AAChB,iBAAO;AAAA,QACT;AACA,eAAO;AAAA,UACL,OAAO,SAAS,YAAY,CAAC,GAAG,EAAE;AAAA,UAClC,MAAM,WAAW,MAAM,YAAY,CAAC,EAAE,MAAM;AAAA,QAC9C;AAAA,MACF;AACA,eAAS,qBAAqB,SAAS,YAAY;AACjD,YAAI,cAAc,WAAW,MAAM,OAAO;AAC1C,YAAI,CAAC,aAAa;AAChB,iBAAO;AAAA,QACT;AAGA,YAAI,YAAY,CAAC,MAAM,KAAK;AAC1B,iBAAO;AAAA,YACL,OAAO;AAAA,YACP,MAAM,WAAW,MAAM,CAAC;AAAA,UAC1B;AAAA,QACF;AACA,YAAIC,QAAO,YAAY,CAAC,MAAM,MAAM,IAAI;AACxC,YAAI,QAAQ,YAAY,CAAC,IAAI,SAAS,YAAY,CAAC,GAAG,EAAE,IAAI;AAC5D,YAAI,UAAU,YAAY,CAAC,IAAI,SAAS,YAAY,CAAC,GAAG,EAAE,IAAI;AAC9D,YAAIC,WAAU,YAAY,CAAC,IAAI,SAAS,YAAY,CAAC,GAAG,EAAE,IAAI;AAC9D,eAAO;AAAA,UACL,OAAOD,SAAQ,QAAQ,OAAO,qBAAqB,UAAU,OAAO,uBAAuBC,WAAU,OAAO;AAAA,UAC5G,MAAM,WAAW,MAAM,YAAY,CAAC,EAAE,MAAM;AAAA,QAC9C;AAAA,MACF;AACA,eAAS,qBAAqB,YAAY;AACxC,eAAO,oBAAoB,WAAW,gBAAgB,iBAAiB,UAAU;AAAA,MACnF;AACA,eAAS,aAAaC,IAAG,YAAY;AACnC,gBAAQA,IAAG;AAAA,UACT,KAAK;AACH,mBAAO,oBAAoB,WAAW,gBAAgB,aAAa,UAAU;AAAA,UAC/E,KAAK;AACH,mBAAO,oBAAoB,WAAW,gBAAgB,WAAW,UAAU;AAAA,UAC7E,KAAK;AACH,mBAAO,oBAAoB,WAAW,gBAAgB,aAAa,UAAU;AAAA,UAC/E,KAAK;AACH,mBAAO,oBAAoB,WAAW,gBAAgB,YAAY,UAAU;AAAA,UAC9E;AACE,mBAAO,oBAAoB,IAAI,OAAO,YAAYA,KAAI,GAAG,GAAG,UAAU;AAAA,QAC1E;AAAA,MACF;AACA,eAAS,mBAAmBA,IAAG,YAAY;AACzC,gBAAQA,IAAG;AAAA,UACT,KAAK;AACH,mBAAO,oBAAoB,WAAW,gBAAgB,mBAAmB,UAAU;AAAA,UACrF,KAAK;AACH,mBAAO,oBAAoB,WAAW,gBAAgB,iBAAiB,UAAU;AAAA,UACnF,KAAK;AACH,mBAAO,oBAAoB,WAAW,gBAAgB,mBAAmB,UAAU;AAAA,UACrF,KAAK;AACH,mBAAO,oBAAoB,WAAW,gBAAgB,kBAAkB,UAAU;AAAA,UACpF;AACE,mBAAO,oBAAoB,IAAI,OAAO,cAAcA,KAAI,GAAG,GAAG,UAAU;AAAA,QAC5E;AAAA,MACF;AACA,eAAS,qBAAqB,WAAW;AACvC,gBAAQ,WAAW;AAAA,UACjB,KAAK;AACH,mBAAO;AAAA,UACT,KAAK;AACH,mBAAO;AAAA,UACT,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AACH,mBAAO;AAAA,UACT,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL;AACE,mBAAO;AAAA,QACX;AAAA,MACF;AACA,eAAS,sBAAsB,cAAc,aAAa;AACxD,YAAI,cAAc,cAAc;AAKhC,YAAI,iBAAiB,cAAc,cAAc,IAAI;AACrD,YAAI;AACJ,YAAI,kBAAkB,IAAI;AACxB,mBAAS,gBAAgB;AAAA,QAC3B,OAAO;AACL,cAAI,WAAW,iBAAiB;AAChC,cAAI,kBAAkB,KAAK,MAAM,WAAW,GAAG,IAAI;AACnD,cAAI,oBAAoB,gBAAgB,WAAW;AACnD,mBAAS,eAAe,mBAAmB,oBAAoB,MAAM;AAAA,QACvE;AACA,eAAO,cAAc,SAAS,IAAI;AAAA,MACpC;AACA,eAAS,gBAAgB,MAAM;AAC7B,eAAO,OAAO,QAAQ,KAAK,OAAO,MAAM,KAAK,OAAO,QAAQ;AAAA,MAC9D;AAAA;AAAA;;;AC7HA;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,aAAa;AACrB,UAAIC,oBAAmB,uBAAuB,wBAAgD;AAC9F,UAAIC,iBAAgB,uBAAuB,qBAA6C;AACxF,UAAIC,2BAA0B,uBAAuB,+BAAuD;AAC5G,UAAIC,cAAa,uBAAuB,kBAA0C;AAClF,UAAIC,iBAAgB,uBAAuB,qBAA6C;AACxF,UAAIC,oBAAmB,uBAAuB,wBAAgD;AAC9F,UAAI,WAAW;AACf,UAAI,SAAS;AASb,UAAI,aAA0B,yBAAU,SAAS;AAC/C,SAAC,GAAGF,YAAW,SAASG,aAAY,OAAO;AAC3C,YAAI,UAAU,GAAGF,eAAc,SAASE,WAAU;AAClD,iBAASA,cAAa;AACpB,cAAI;AACJ,WAAC,GAAGN,kBAAiB,SAAS,MAAMM,WAAU;AAC9C,mBAAS,OAAO,UAAU,QAAQ,OAAO,IAAI,MAAM,IAAI,GAAG,OAAO,GAAG,OAAO,MAAM,QAAQ;AACvF,iBAAK,IAAI,IAAI,UAAU,IAAI;AAAA,UAC7B;AACA,kBAAQ,OAAO,KAAK,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,IAAI,CAAC;AACrD,WAAC,GAAGD,kBAAiB,UAAU,GAAGH,yBAAwB,SAAS,KAAK,GAAG,YAAY,GAAG;AAC1F,WAAC,GAAGG,kBAAiB,UAAU,GAAGH,yBAAwB,SAAS,KAAK,GAAG,sBAAsB,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,CAAC;AACnJ,iBAAO;AAAA,QACT;AACA,SAAC,GAAGD,eAAc,SAASK,aAAY,CAAC;AAAA,UACtC,KAAK;AAAA,UACL,OAAO,SAASC,OAAM,YAAYC,QAAOC,QAAO;AAC9C,gBAAI,gBAAgB,SAASC,eAAc,MAAM;AAC/C,qBAAO;AAAA,gBACL;AAAA,gBACA,gBAAgBF,WAAU;AAAA,cAC5B;AAAA,YACF;AACA,oBAAQA,QAAO;AAAA,cACb,KAAK;AACH,wBAAQ,GAAG,OAAO,WAAW,GAAG,OAAO,cAAc,GAAG,UAAU,GAAG,aAAa;AAAA,cACpF,KAAK;AACH,wBAAQ,GAAG,OAAO,UAAUC,OAAM,cAAc,YAAY;AAAA,kBAC1D,MAAM;AAAA,gBACR,CAAC,GAAG,aAAa;AAAA,cACnB;AACE,wBAAQ,GAAG,OAAO,WAAW,GAAG,OAAO,cAAcD,OAAM,QAAQ,UAAU,GAAG,aAAa;AAAA,YACjG;AAAA,UACF;AAAA,QACF,GAAG;AAAA,UACD,KAAK;AAAA,UACL,OAAO,SAAS,SAAS,OAAO,OAAO;AACrC,mBAAO,MAAM,kBAAkB,MAAM,OAAO;AAAA,UAC9C;AAAA,QACF,GAAG;AAAA,UACD,KAAK;AAAA,UACL,OAAO,SAAS,IAAIG,OAAM,OAAO,OAAO;AACtC,gBAAI,cAAcA,MAAK,eAAe;AACtC,gBAAI,MAAM,gBAAgB;AACxB,kBAAI,0BAA0B,GAAG,OAAO,uBAAuB,MAAM,MAAM,WAAW;AACtF,cAAAA,MAAK,eAAe,wBAAwB,GAAG,CAAC;AAChD,cAAAA,MAAK,YAAY,GAAG,GAAG,GAAG,CAAC;AAC3B,qBAAOA;AAAA,YACT;AACA,gBAAI,OAAO,EAAE,SAAS,UAAU,MAAM,QAAQ,IAAI,MAAM,OAAO,IAAI,MAAM;AACzE,YAAAA,MAAK,eAAe,MAAM,GAAG,CAAC;AAC9B,YAAAA,MAAK,YAAY,GAAG,GAAG,GAAG,CAAC;AAC3B,mBAAOA;AAAA,UACT;AAAA,QACF,CAAC,CAAC;AACF,eAAOL;AAAA,MACT,EAAE,SAAS,MAAM;AACjB,cAAQ,aAAa;AAAA;AAAA;;;AChFrB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,sBAAsB;AAC9B,UAAIM,oBAAmB,uBAAuB,wBAAgD;AAC9F,UAAIC,iBAAgB,uBAAuB,qBAA6C;AACxF,UAAIC,2BAA0B,uBAAuB,+BAAuD;AAC5G,UAAIC,cAAa,uBAAuB,kBAA0C;AAClF,UAAIC,iBAAgB,uBAAuB,qBAA6C;AACxF,UAAIC,oBAAmB,uBAAuB,wBAAgD;AAC9F,UAAI,WAAW;AACf,UAAI,SAAS;AACb,UAAI,SAAS,uBAAuB,wBAAgD;AACpF,UAAI,UAAU,uBAAuB,wBAAgD;AAErF,UAAI,sBAAmC,yBAAU,SAAS;AACxD,SAAC,GAAGF,YAAW,SAASG,sBAAqB,OAAO;AACpD,YAAI,UAAU,GAAGF,eAAc,SAASE,oBAAmB;AAC3D,iBAASA,uBAAsB;AAC7B,cAAI;AACJ,WAAC,GAAGN,kBAAiB,SAAS,MAAMM,oBAAmB;AACvD,mBAAS,OAAO,UAAU,QAAQ,OAAO,IAAI,MAAM,IAAI,GAAG,OAAO,GAAG,OAAO,MAAM,QAAQ;AACvF,iBAAK,IAAI,IAAI,UAAU,IAAI;AAAA,UAC7B;AACA,kBAAQ,OAAO,KAAK,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,IAAI,CAAC;AACrD,WAAC,GAAGD,kBAAiB,UAAU,GAAGH,yBAAwB,SAAS,KAAK,GAAG,YAAY,GAAG;AAC1F,WAAC,GAAGG,kBAAiB,UAAU,GAAGH,yBAAwB,SAAS,KAAK,GAAG,sBAAsB,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,CAAC;AAClK,iBAAO;AAAA,QACT;AACA,SAAC,GAAGD,eAAc,SAASK,sBAAqB,CAAC;AAAA,UAC/C,KAAK;AAAA,UACL,OAAO,SAASC,OAAM,YAAYC,QAAOC,QAAO;AAC9C,gBAAI,gBAAgB,SAASC,eAAc,MAAM;AAC/C,qBAAO;AAAA,gBACL;AAAA,gBACA,gBAAgBF,WAAU;AAAA,cAC5B;AAAA,YACF;AACA,oBAAQA,QAAO;AAAA,cACb,KAAK;AACH,wBAAQ,GAAG,OAAO,WAAW,GAAG,OAAO,cAAc,GAAG,UAAU,GAAG,aAAa;AAAA,cACpF,KAAK;AACH,wBAAQ,GAAG,OAAO,UAAUC,OAAM,cAAc,YAAY;AAAA,kBAC1D,MAAM;AAAA,gBACR,CAAC,GAAG,aAAa;AAAA,cACnB;AACE,wBAAQ,GAAG,OAAO,WAAW,GAAG,OAAO,cAAcD,OAAM,QAAQ,UAAU,GAAG,aAAa;AAAA,YACjG;AAAA,UACF;AAAA,QACF,GAAG;AAAA,UACD,KAAK;AAAA,UACL,OAAO,SAAS,SAAS,OAAO,OAAO;AACrC,mBAAO,MAAM,kBAAkB,MAAM,OAAO;AAAA,UAC9C;AAAA,QACF,GAAG;AAAA,UACD,KAAK;AAAA,UACL,OAAO,SAAS,IAAIG,OAAM,OAAO,OAAOC,UAAS;AAC/C,gBAAI,eAAe,GAAG,OAAO,SAASD,OAAMC,QAAO;AACnD,gBAAI,MAAM,gBAAgB;AACxB,kBAAI,0BAA0B,GAAG,OAAO,uBAAuB,MAAM,MAAM,WAAW;AACtF,cAAAD,MAAK,eAAe,wBAAwB,GAAGC,SAAQ,qBAAqB;AAC5E,cAAAD,MAAK,YAAY,GAAG,GAAG,GAAG,CAAC;AAC3B,sBAAQ,GAAG,QAAQ,SAASA,OAAMC,QAAO;AAAA,YAC3C;AACA,gBAAI,OAAO,EAAE,SAAS,UAAU,MAAM,QAAQ,IAAI,MAAM,OAAO,IAAI,MAAM;AACzE,YAAAD,MAAK,eAAe,MAAM,GAAGC,SAAQ,qBAAqB;AAC1D,YAAAD,MAAK,YAAY,GAAG,GAAG,GAAG,CAAC;AAC3B,oBAAQ,GAAG,QAAQ,SAASA,OAAMC,QAAO;AAAA,UAC3C;AAAA,QACF,CAAC,CAAC;AACF,eAAON;AAAA,MACT,EAAE,SAAS,MAAM;AACjB,cAAQ,sBAAsB;AAAA;AAAA;;;AC3E9B;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,oBAAoB;AAC5B,UAAIO,oBAAmB,uBAAuB,wBAAgD;AAC9F,UAAIC,iBAAgB,uBAAuB,qBAA6C;AACxF,UAAIC,2BAA0B,uBAAuB,+BAAuD;AAC5G,UAAIC,cAAa,uBAAuB,kBAA0C;AAClF,UAAIC,iBAAgB,uBAAuB,qBAA6C;AACxF,UAAIC,oBAAmB,uBAAuB,wBAAgD;AAC9F,UAAI,WAAW;AACf,UAAI,SAAS;AACb,UAAI,SAAS,uBAAuB,2BAAmD;AAEvF,UAAI,oBAAiC,yBAAU,SAAS;AACtD,SAAC,GAAGF,YAAW,SAASG,oBAAmB,OAAO;AAClD,YAAI,UAAU,GAAGF,eAAc,SAASE,kBAAiB;AACzD,iBAASA,qBAAoB;AAC3B,cAAI;AACJ,WAAC,GAAGN,kBAAiB,SAAS,MAAMM,kBAAiB;AACrD,mBAAS,OAAO,UAAU,QAAQ,OAAO,IAAI,MAAM,IAAI,GAAG,OAAO,GAAG,OAAO,MAAM,QAAQ;AACvF,iBAAK,IAAI,IAAI,UAAU,IAAI;AAAA,UAC7B;AACA,kBAAQ,OAAO,KAAK,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,IAAI,CAAC;AACrD,WAAC,GAAGD,kBAAiB,UAAU,GAAGH,yBAAwB,SAAS,KAAK,GAAG,YAAY,GAAG;AAC1F,WAAC,GAAGG,kBAAiB,UAAU,GAAGH,yBAAwB,SAAS,KAAK,GAAG,sBAAsB,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,CAAC;AAC5K,iBAAO;AAAA,QACT;AACA,SAAC,GAAGD,eAAc,SAASK,oBAAmB,CAAC;AAAA,UAC7C,KAAK;AAAA,UACL,OAAO,SAASC,OAAM,YAAYC,QAAO;AACvC,gBAAIA,WAAU,KAAK;AACjB,sBAAQ,GAAG,OAAO,oBAAoB,GAAG,UAAU;AAAA,YACrD;AACA,oBAAQ,GAAG,OAAO,oBAAoBA,OAAM,QAAQ,UAAU;AAAA,UAChE;AAAA,QACF,GAAG;AAAA,UACD,KAAK;AAAA,UACL,OAAO,SAAS,IAAI,OAAO,QAAQ,OAAO;AACxC,gBAAI,kBAAkB,oBAAI,KAAK,CAAC;AAChC,4BAAgB,eAAe,OAAO,GAAG,CAAC;AAC1C,4BAAgB,YAAY,GAAG,GAAG,GAAG,CAAC;AACtC,oBAAQ,GAAG,OAAO,SAAS,eAAe;AAAA,UAC5C;AAAA,QACF,CAAC,CAAC;AACF,eAAOF;AAAA,MACT,EAAE,SAAS,MAAM;AACjB,cAAQ,oBAAoB;AAAA;AAAA;;;AClD5B;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,qBAAqB;AAC7B,UAAIG,oBAAmB,uBAAuB,wBAAgD;AAC9F,UAAIC,iBAAgB,uBAAuB,qBAA6C;AACxF,UAAIC,2BAA0B,uBAAuB,+BAAuD;AAC5G,UAAIC,cAAa,uBAAuB,kBAA0C;AAClF,UAAIC,iBAAgB,uBAAuB,qBAA6C;AACxF,UAAIC,oBAAmB,uBAAuB,wBAAgD;AAC9F,UAAI,WAAW;AACf,UAAI,SAAS;AACb,UAAI,qBAAkC,yBAAU,SAAS;AACvD,SAAC,GAAGF,YAAW,SAASG,qBAAoB,OAAO;AACnD,YAAI,UAAU,GAAGF,eAAc,SAASE,mBAAkB;AAC1D,iBAASA,sBAAqB;AAC5B,cAAI;AACJ,WAAC,GAAGN,kBAAiB,SAAS,MAAMM,mBAAkB;AACtD,mBAAS,OAAO,UAAU,QAAQ,OAAO,IAAI,MAAM,IAAI,GAAG,OAAO,GAAG,OAAO,MAAM,QAAQ;AACvF,iBAAK,IAAI,IAAI,UAAU,IAAI;AAAA,UAC7B;AACA,kBAAQ,OAAO,KAAK,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,IAAI,CAAC;AACrD,WAAC,GAAGD,kBAAiB,UAAU,GAAGH,yBAAwB,SAAS,KAAK,GAAG,YAAY,GAAG;AAC1F,WAAC,GAAGG,kBAAiB,UAAU,GAAGH,yBAAwB,SAAS,KAAK,GAAG,sBAAsB,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,CAAC;AACxJ,iBAAO;AAAA,QACT;AACA,SAAC,GAAGD,eAAc,SAASK,qBAAoB,CAAC;AAAA,UAC9C,KAAK;AAAA,UACL,OAAO,SAASC,OAAM,YAAYC,QAAO;AACvC,gBAAIA,WAAU,KAAK;AACjB,sBAAQ,GAAG,OAAO,oBAAoB,GAAG,UAAU;AAAA,YACrD;AACA,oBAAQ,GAAG,OAAO,oBAAoBA,OAAM,QAAQ,UAAU;AAAA,UAChE;AAAA,QACF,GAAG;AAAA,UACD,KAAK;AAAA,UACL,OAAO,SAAS,IAAIC,OAAM,QAAQ,OAAO;AACvC,YAAAA,MAAK,eAAe,OAAO,GAAG,CAAC;AAC/B,YAAAA,MAAK,YAAY,GAAG,GAAG,GAAG,CAAC;AAC3B,mBAAOA;AAAA,UACT;AAAA,QACF,CAAC,CAAC;AACF,eAAOH;AAAA,MACT,EAAE,SAAS,MAAM;AACjB,cAAQ,qBAAqB;AAAA;AAAA;;;AC/C7B;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,gBAAgB;AACxB,UAAII,oBAAmB,uBAAuB,wBAAgD;AAC9F,UAAIC,iBAAgB,uBAAuB,qBAA6C;AACxF,UAAIC,2BAA0B,uBAAuB,+BAAuD;AAC5G,UAAIC,cAAa,uBAAuB,kBAA0C;AAClF,UAAIC,iBAAgB,uBAAuB,qBAA6C;AACxF,UAAIC,oBAAmB,uBAAuB,wBAAgD;AAC9F,UAAI,WAAW;AACf,UAAI,SAAS;AACb,UAAI,gBAA6B,yBAAU,SAAS;AAClD,SAAC,GAAGF,YAAW,SAASG,gBAAe,OAAO;AAC9C,YAAI,UAAU,GAAGF,eAAc,SAASE,cAAa;AACrD,iBAASA,iBAAgB;AACvB,cAAI;AACJ,WAAC,GAAGN,kBAAiB,SAAS,MAAMM,cAAa;AACjD,mBAAS,OAAO,UAAU,QAAQ,OAAO,IAAI,MAAM,IAAI,GAAG,OAAO,GAAG,OAAO,MAAM,QAAQ;AACvF,iBAAK,IAAI,IAAI,UAAU,IAAI;AAAA,UAC7B;AACA,kBAAQ,OAAO,KAAK,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,IAAI,CAAC;AACrD,WAAC,GAAGD,kBAAiB,UAAU,GAAGH,yBAAwB,SAAS,KAAK,GAAG,YAAY,GAAG;AAC1F,WAAC,GAAGG,kBAAiB,UAAU,GAAGH,yBAAwB,SAAS,KAAK,GAAG,sBAAsB,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,CAAC;AACvK,iBAAO;AAAA,QACT;AACA,SAAC,GAAGD,eAAc,SAASK,gBAAe,CAAC;AAAA,UACzC,KAAK;AAAA,UACL,OAAO,SAASC,OAAM,YAAYC,QAAOC,QAAO;AAC9C,oBAAQD,QAAO;AAAA,cAEb,KAAK;AAAA,cACL,KAAK;AAEH,wBAAQ,GAAG,OAAO,cAAcA,OAAM,QAAQ,UAAU;AAAA,cAE1D,KAAK;AACH,uBAAOC,OAAM,cAAc,YAAY;AAAA,kBACrC,MAAM;AAAA,gBACR,CAAC;AAAA,cAEH,KAAK;AACH,uBAAOA,OAAM,QAAQ,YAAY;AAAA,kBAC/B,OAAO;AAAA,kBACP,SAAS;AAAA,gBACX,CAAC,KAAKA,OAAM,QAAQ,YAAY;AAAA,kBAC9B,OAAO;AAAA,kBACP,SAAS;AAAA,gBACX,CAAC;AAAA,cAEH,KAAK;AACH,uBAAOA,OAAM,QAAQ,YAAY;AAAA,kBAC/B,OAAO;AAAA,kBACP,SAAS;AAAA,gBACX,CAAC;AAAA,cAEH,KAAK;AAAA,cACL;AACE,uBAAOA,OAAM,QAAQ,YAAY;AAAA,kBAC/B,OAAO;AAAA,kBACP,SAAS;AAAA,gBACX,CAAC,KAAKA,OAAM,QAAQ,YAAY;AAAA,kBAC9B,OAAO;AAAA,kBACP,SAAS;AAAA,gBACX,CAAC,KAAKA,OAAM,QAAQ,YAAY;AAAA,kBAC9B,OAAO;AAAA,kBACP,SAAS;AAAA,gBACX,CAAC;AAAA,YACL;AAAA,UACF;AAAA,QACF,GAAG;AAAA,UACD,KAAK;AAAA,UACL,OAAO,SAAS,SAAS,OAAO,OAAO;AACrC,mBAAO,SAAS,KAAK,SAAS;AAAA,UAChC;AAAA,QACF,GAAG;AAAA,UACD,KAAK;AAAA,UACL,OAAO,SAAS,IAAIC,OAAM,QAAQ,OAAO;AACvC,YAAAA,MAAK,aAAa,QAAQ,KAAK,GAAG,CAAC;AACnC,YAAAA,MAAK,YAAY,GAAG,GAAG,GAAG,CAAC;AAC3B,mBAAOA;AAAA,UACT;AAAA,QACF,CAAC,CAAC;AACF,eAAOJ;AAAA,MACT,EAAE,SAAS,MAAM;AACjB,cAAQ,gBAAgB;AAAA;AAAA;;;ACxFxB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,0BAA0B;AAClC,UAAIK,oBAAmB,uBAAuB,wBAAgD;AAC9F,UAAIC,iBAAgB,uBAAuB,qBAA6C;AACxF,UAAIC,2BAA0B,uBAAuB,+BAAuD;AAC5G,UAAIC,cAAa,uBAAuB,kBAA0C;AAClF,UAAIC,iBAAgB,uBAAuB,qBAA6C;AACxF,UAAIC,oBAAmB,uBAAuB,wBAAgD;AAC9F,UAAI,WAAW;AACf,UAAI,SAAS;AACb,UAAI,0BAAuC,yBAAU,SAAS;AAC5D,SAAC,GAAGF,YAAW,SAASG,0BAAyB,OAAO;AACxD,YAAI,UAAU,GAAGF,eAAc,SAASE,wBAAuB;AAC/D,iBAASA,2BAA0B;AACjC,cAAI;AACJ,WAAC,GAAGN,kBAAiB,SAAS,MAAMM,wBAAuB;AAC3D,mBAAS,OAAO,UAAU,QAAQ,OAAO,IAAI,MAAM,IAAI,GAAG,OAAO,GAAG,OAAO,MAAM,QAAQ;AACvF,iBAAK,IAAI,IAAI,UAAU,IAAI;AAAA,UAC7B;AACA,kBAAQ,OAAO,KAAK,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,IAAI,CAAC;AACrD,WAAC,GAAGD,kBAAiB,UAAU,GAAGH,yBAAwB,SAAS,KAAK,GAAG,YAAY,GAAG;AAC1F,WAAC,GAAGG,kBAAiB,UAAU,GAAGH,yBAAwB,SAAS,KAAK,GAAG,sBAAsB,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,CAAC;AACvK,iBAAO;AAAA,QACT;AACA,SAAC,GAAGD,eAAc,SAASK,0BAAyB,CAAC;AAAA,UACnD,KAAK;AAAA,UACL,OAAO,SAASC,OAAM,YAAYC,QAAOC,QAAO;AAC9C,oBAAQD,QAAO;AAAA,cAEb,KAAK;AAAA,cACL,KAAK;AAEH,wBAAQ,GAAG,OAAO,cAAcA,OAAM,QAAQ,UAAU;AAAA,cAE1D,KAAK;AACH,uBAAOC,OAAM,cAAc,YAAY;AAAA,kBACrC,MAAM;AAAA,gBACR,CAAC;AAAA,cAEH,KAAK;AACH,uBAAOA,OAAM,QAAQ,YAAY;AAAA,kBAC/B,OAAO;AAAA,kBACP,SAAS;AAAA,gBACX,CAAC,KAAKA,OAAM,QAAQ,YAAY;AAAA,kBAC9B,OAAO;AAAA,kBACP,SAAS;AAAA,gBACX,CAAC;AAAA,cAEH,KAAK;AACH,uBAAOA,OAAM,QAAQ,YAAY;AAAA,kBAC/B,OAAO;AAAA,kBACP,SAAS;AAAA,gBACX,CAAC;AAAA,cAEH,KAAK;AAAA,cACL;AACE,uBAAOA,OAAM,QAAQ,YAAY;AAAA,kBAC/B,OAAO;AAAA,kBACP,SAAS;AAAA,gBACX,CAAC,KAAKA,OAAM,QAAQ,YAAY;AAAA,kBAC9B,OAAO;AAAA,kBACP,SAAS;AAAA,gBACX,CAAC,KAAKA,OAAM,QAAQ,YAAY;AAAA,kBAC9B,OAAO;AAAA,kBACP,SAAS;AAAA,gBACX,CAAC;AAAA,YACL;AAAA,UACF;AAAA,QACF,GAAG;AAAA,UACD,KAAK;AAAA,UACL,OAAO,SAAS,SAAS,OAAO,OAAO;AACrC,mBAAO,SAAS,KAAK,SAAS;AAAA,UAChC;AAAA,QACF,GAAG;AAAA,UACD,KAAK;AAAA,UACL,OAAO,SAAS,IAAIC,OAAM,QAAQ,OAAO;AACvC,YAAAA,MAAK,aAAa,QAAQ,KAAK,GAAG,CAAC;AACnC,YAAAA,MAAK,YAAY,GAAG,GAAG,GAAG,CAAC;AAC3B,mBAAOA;AAAA,UACT;AAAA,QACF,CAAC,CAAC;AACF,eAAOJ;AAAA,MACT,EAAE,SAAS,MAAM;AACjB,cAAQ,0BAA0B;AAAA;AAAA;;;ACxFlC;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,cAAc;AACtB,UAAIK,oBAAmB,uBAAuB,wBAAgD;AAC9F,UAAIC,iBAAgB,uBAAuB,qBAA6C;AACxF,UAAIC,2BAA0B,uBAAuB,+BAAuD;AAC5G,UAAIC,cAAa,uBAAuB,kBAA0C;AAClF,UAAIC,iBAAgB,uBAAuB,qBAA6C;AACxF,UAAIC,oBAAmB,uBAAuB,wBAAgD;AAC9F,UAAI,SAAS;AACb,UAAI,WAAW;AACf,UAAI,aAAa;AACjB,UAAI,cAA2B,yBAAU,SAAS;AAChD,SAAC,GAAGF,YAAW,SAASG,cAAa,OAAO;AAC5C,YAAI,UAAU,GAAGF,eAAc,SAASE,YAAW;AACnD,iBAASA,eAAc;AACrB,cAAI;AACJ,WAAC,GAAGN,kBAAiB,SAAS,MAAMM,YAAW;AAC/C,mBAAS,OAAO,UAAU,QAAQ,OAAO,IAAI,MAAM,IAAI,GAAG,OAAO,GAAG,OAAO,MAAM,QAAQ;AACvF,iBAAK,IAAI,IAAI,UAAU,IAAI;AAAA,UAC7B;AACA,kBAAQ,OAAO,KAAK,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,IAAI,CAAC;AACrD,WAAC,GAAGD,kBAAiB,UAAU,GAAGH,yBAAwB,SAAS,KAAK,GAAG,sBAAsB,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,CAAC;AAClK,WAAC,GAAGG,kBAAiB,UAAU,GAAGH,yBAAwB,SAAS,KAAK,GAAG,YAAY,GAAG;AAC1F,iBAAO;AAAA,QACT;AACA,SAAC,GAAGD,eAAc,SAASK,cAAa,CAAC;AAAA,UACvC,KAAK;AAAA,UACL,OAAO,SAASC,OAAM,YAAYC,QAAOC,QAAO;AAC9C,gBAAI,gBAAgB,SAASC,eAAc,OAAO;AAChD,qBAAO,QAAQ;AAAA,YACjB;AACA,oBAAQF,QAAO;AAAA,cAEb,KAAK;AACH,wBAAQ,GAAG,OAAO,WAAW,GAAG,OAAO,qBAAqB,WAAW,gBAAgB,OAAO,UAAU,GAAG,aAAa;AAAA,cAE1H,KAAK;AACH,wBAAQ,GAAG,OAAO,WAAW,GAAG,OAAO,cAAc,GAAG,UAAU,GAAG,aAAa;AAAA,cAEpF,KAAK;AACH,wBAAQ,GAAG,OAAO,UAAUC,OAAM,cAAc,YAAY;AAAA,kBAC1D,MAAM;AAAA,gBACR,CAAC,GAAG,aAAa;AAAA,cAEnB,KAAK;AACH,uBAAOA,OAAM,MAAM,YAAY;AAAA,kBAC7B,OAAO;AAAA,kBACP,SAAS;AAAA,gBACX,CAAC,KAAKA,OAAM,MAAM,YAAY;AAAA,kBAC5B,OAAO;AAAA,kBACP,SAAS;AAAA,gBACX,CAAC;AAAA,cAEH,KAAK;AACH,uBAAOA,OAAM,MAAM,YAAY;AAAA,kBAC7B,OAAO;AAAA,kBACP,SAAS;AAAA,gBACX,CAAC;AAAA,cAEH,KAAK;AAAA,cACL;AACE,uBAAOA,OAAM,MAAM,YAAY;AAAA,kBAC7B,OAAO;AAAA,kBACP,SAAS;AAAA,gBACX,CAAC,KAAKA,OAAM,MAAM,YAAY;AAAA,kBAC5B,OAAO;AAAA,kBACP,SAAS;AAAA,gBACX,CAAC,KAAKA,OAAM,MAAM,YAAY;AAAA,kBAC5B,OAAO;AAAA,kBACP,SAAS;AAAA,gBACX,CAAC;AAAA,YACL;AAAA,UACF;AAAA,QACF,GAAG;AAAA,UACD,KAAK;AAAA,UACL,OAAO,SAAS,SAAS,OAAO,OAAO;AACrC,mBAAO,SAAS,KAAK,SAAS;AAAA,UAChC;AAAA,QACF,GAAG;AAAA,UACD,KAAK;AAAA,UACL,OAAO,SAAS,IAAIE,OAAM,QAAQ,OAAO;AACvC,YAAAA,MAAK,YAAY,OAAO,CAAC;AACzB,YAAAA,MAAK,YAAY,GAAG,GAAG,GAAG,CAAC;AAC3B,mBAAOA;AAAA,UACT;AAAA,QACF,CAAC,CAAC;AACF,eAAOL;AAAA,MACT,EAAE,SAAS,MAAM;AACjB,cAAQ,cAAc;AAAA;AAAA;;;AC7FtB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,wBAAwB;AAChC,UAAIM,oBAAmB,uBAAuB,wBAAgD;AAC9F,UAAIC,iBAAgB,uBAAuB,qBAA6C;AACxF,UAAIC,2BAA0B,uBAAuB,+BAAuD;AAC5G,UAAIC,cAAa,uBAAuB,kBAA0C;AAClF,UAAIC,iBAAgB,uBAAuB,qBAA6C;AACxF,UAAIC,oBAAmB,uBAAuB,wBAAgD;AAC9F,UAAI,WAAW;AACf,UAAI,aAAa;AACjB,UAAI,SAAS;AACb,UAAI,wBAAqC,yBAAU,SAAS;AAC1D,SAAC,GAAGF,YAAW,SAASG,wBAAuB,OAAO;AACtD,YAAI,UAAU,GAAGF,eAAc,SAASE,sBAAqB;AAC7D,iBAASA,yBAAwB;AAC/B,cAAI;AACJ,WAAC,GAAGN,kBAAiB,SAAS,MAAMM,sBAAqB;AACzD,mBAAS,OAAO,UAAU,QAAQ,OAAO,IAAI,MAAM,IAAI,GAAG,OAAO,GAAG,OAAO,MAAM,QAAQ;AACvF,iBAAK,IAAI,IAAI,UAAU,IAAI;AAAA,UAC7B;AACA,kBAAQ,OAAO,KAAK,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,IAAI,CAAC;AACrD,WAAC,GAAGD,kBAAiB,UAAU,GAAGH,yBAAwB,SAAS,KAAK,GAAG,YAAY,GAAG;AAC1F,WAAC,GAAGG,kBAAiB,UAAU,GAAGH,yBAAwB,SAAS,KAAK,GAAG,sBAAsB,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,CAAC;AAClK,iBAAO;AAAA,QACT;AACA,SAAC,GAAGD,eAAc,SAASK,wBAAuB,CAAC;AAAA,UACjD,KAAK;AAAA,UACL,OAAO,SAASC,OAAM,YAAYC,QAAOC,QAAO;AAC9C,gBAAI,gBAAgB,SAASC,eAAc,OAAO;AAChD,qBAAO,QAAQ;AAAA,YACjB;AACA,oBAAQF,QAAO;AAAA,cAEb,KAAK;AACH,wBAAQ,GAAG,OAAO,WAAW,GAAG,OAAO,qBAAqB,WAAW,gBAAgB,OAAO,UAAU,GAAG,aAAa;AAAA,cAE1H,KAAK;AACH,wBAAQ,GAAG,OAAO,WAAW,GAAG,OAAO,cAAc,GAAG,UAAU,GAAG,aAAa;AAAA,cAEpF,KAAK;AACH,wBAAQ,GAAG,OAAO,UAAUC,OAAM,cAAc,YAAY;AAAA,kBAC1D,MAAM;AAAA,gBACR,CAAC,GAAG,aAAa;AAAA,cAEnB,KAAK;AACH,uBAAOA,OAAM,MAAM,YAAY;AAAA,kBAC7B,OAAO;AAAA,kBACP,SAAS;AAAA,gBACX,CAAC,KAAKA,OAAM,MAAM,YAAY;AAAA,kBAC5B,OAAO;AAAA,kBACP,SAAS;AAAA,gBACX,CAAC;AAAA,cAEH,KAAK;AACH,uBAAOA,OAAM,MAAM,YAAY;AAAA,kBAC7B,OAAO;AAAA,kBACP,SAAS;AAAA,gBACX,CAAC;AAAA,cAEH,KAAK;AAAA,cACL;AACE,uBAAOA,OAAM,MAAM,YAAY;AAAA,kBAC7B,OAAO;AAAA,kBACP,SAAS;AAAA,gBACX,CAAC,KAAKA,OAAM,MAAM,YAAY;AAAA,kBAC5B,OAAO;AAAA,kBACP,SAAS;AAAA,gBACX,CAAC,KAAKA,OAAM,MAAM,YAAY;AAAA,kBAC5B,OAAO;AAAA,kBACP,SAAS;AAAA,gBACX,CAAC;AAAA,YACL;AAAA,UACF;AAAA,QACF,GAAG;AAAA,UACD,KAAK;AAAA,UACL,OAAO,SAAS,SAAS,OAAO,OAAO;AACrC,mBAAO,SAAS,KAAK,SAAS;AAAA,UAChC;AAAA,QACF,GAAG;AAAA,UACD,KAAK;AAAA,UACL,OAAO,SAAS,IAAIE,OAAM,QAAQ,OAAO;AACvC,YAAAA,MAAK,YAAY,OAAO,CAAC;AACzB,YAAAA,MAAK,YAAY,GAAG,GAAG,GAAG,CAAC;AAC3B,mBAAOA;AAAA,UACT;AAAA,QACF,CAAC,CAAC;AACF,eAAOL;AAAA,MACT,EAAE,SAAS,MAAM;AACjB,cAAQ,wBAAwB;AAAA;AAAA;;;AC7FhC;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,UAAI,SAAS,uBAAuB,mBAAgC;AACpE,UAAI,UAAU,uBAAuB,gBAAgC;AACrE,UAAI,UAAU,uBAAuB,oBAAiC;AACtE,UAAI,UAAU,uBAAuB,sBAAmC;AACxE,eAAS,WAAW,WAAW,WAAWM,UAAS;AACjD,SAAC,GAAG,QAAQ,SAAS,GAAG,SAAS;AACjC,YAAIC,SAAQ,GAAG,QAAQ,SAAS,SAAS;AACzC,YAAI,QAAQ,GAAG,OAAO,SAAS,SAAS;AACxC,YAAI,QAAQ,GAAG,QAAQ,SAASA,OAAMD,QAAO,IAAI;AACjD,QAAAC,MAAK,WAAWA,MAAK,WAAW,IAAI,OAAO,CAAC;AAC5C,eAAOA;AAAA,MACT;AACA,aAAO,UAAU,QAAQ;AAAA;AAAA;;;ACnBzB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,kBAAkB;AAC1B,UAAIC,oBAAmB,uBAAuB,wBAAgD;AAC9F,UAAIC,iBAAgB,uBAAuB,qBAA6C;AACxF,UAAIC,2BAA0B,uBAAuB,+BAAuD;AAC5G,UAAIC,cAAa,uBAAuB,kBAA0C;AAClF,UAAIC,iBAAgB,uBAAuB,qBAA6C;AACxF,UAAIC,oBAAmB,uBAAuB,wBAAgD;AAC9F,UAAI,WAAW;AACf,UAAI,aAAa;AACjB,UAAI,SAAS;AACb,UAAI,SAAS,uBAAuB,oBAA4C;AAChF,UAAI,UAAU,uBAAuB,wBAAgD;AAErF,UAAI,kBAA+B,yBAAU,SAAS;AACpD,SAAC,GAAGF,YAAW,SAASG,kBAAiB,OAAO;AAChD,YAAI,UAAU,GAAGF,eAAc,SAASE,gBAAe;AACvD,iBAASA,mBAAkB;AACzB,cAAI;AACJ,WAAC,GAAGN,kBAAiB,SAAS,MAAMM,gBAAe;AACnD,mBAAS,OAAO,UAAU,QAAQ,OAAO,IAAI,MAAM,IAAI,GAAG,OAAO,GAAG,OAAO,MAAM,QAAQ;AACvF,iBAAK,IAAI,IAAI,UAAU,IAAI;AAAA,UAC7B;AACA,kBAAQ,OAAO,KAAK,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,IAAI,CAAC;AACrD,WAAC,GAAGD,kBAAiB,UAAU,GAAGH,yBAAwB,SAAS,KAAK,GAAG,YAAY,GAAG;AAC1F,WAAC,GAAGG,kBAAiB,UAAU,GAAGH,yBAAwB,SAAS,KAAK,GAAG,sBAAsB,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,CAAC;AAClK,iBAAO;AAAA,QACT;AACA,SAAC,GAAGD,eAAc,SAASK,kBAAiB,CAAC;AAAA,UAC3C,KAAK;AAAA,UACL,OAAO,SAASC,OAAM,YAAYC,QAAOC,QAAO;AAC9C,oBAAQD,QAAO;AAAA,cACb,KAAK;AACH,wBAAQ,GAAG,OAAO,qBAAqB,WAAW,gBAAgB,MAAM,UAAU;AAAA,cACpF,KAAK;AACH,uBAAOC,OAAM,cAAc,YAAY;AAAA,kBACrC,MAAM;AAAA,gBACR,CAAC;AAAA,cACH;AACE,wBAAQ,GAAG,OAAO,cAAcD,OAAM,QAAQ,UAAU;AAAA,YAC5D;AAAA,UACF;AAAA,QACF,GAAG;AAAA,UACD,KAAK;AAAA,UACL,OAAO,SAAS,SAAS,OAAO,OAAO;AACrC,mBAAO,SAAS,KAAK,SAAS;AAAA,UAChC;AAAA,QACF,GAAG;AAAA,UACD,KAAK;AAAA,UACL,OAAO,SAAS,IAAIE,OAAM,QAAQ,OAAOC,UAAS;AAChD,oBAAQ,GAAG,QAAQ,UAAU,GAAG,OAAO,SAASD,OAAM,OAAOC,QAAO,GAAGA,QAAO;AAAA,UAChF;AAAA,QACF,CAAC,CAAC;AACF,eAAOL;AAAA,MACT,EAAE,SAAS,MAAM;AACjB,cAAQ,kBAAkB;AAAA;AAAA;;;AC5D1B;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,UAAI,SAAS,uBAAuB,mBAAgC;AACpE,UAAI,UAAU,uBAAuB,gBAAgC;AACrE,UAAI,UAAU,uBAAuB,uBAAoC;AACzE,UAAI,UAAU,uBAAuB,sBAAmC;AACxE,eAAS,cAAc,WAAW,cAAc;AAC9C,SAAC,GAAG,QAAQ,SAAS,GAAG,SAAS;AACjC,YAAIM,SAAQ,GAAG,QAAQ,SAAS,SAAS;AACzC,YAAI,WAAW,GAAG,OAAO,SAAS,YAAY;AAC9C,YAAI,QAAQ,GAAG,QAAQ,SAASA,KAAI,IAAI;AACxC,QAAAA,MAAK,WAAWA,MAAK,WAAW,IAAI,OAAO,CAAC;AAC5C,eAAOA;AAAA,MACT;AACA,aAAO,UAAU,QAAQ;AAAA;AAAA;;;ACnBzB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,gBAAgB;AACxB,UAAIC,oBAAmB,uBAAuB,wBAAgD;AAC9F,UAAIC,iBAAgB,uBAAuB,qBAA6C;AACxF,UAAIC,2BAA0B,uBAAuB,+BAAuD;AAC5G,UAAIC,cAAa,uBAAuB,kBAA0C;AAClF,UAAIC,iBAAgB,uBAAuB,qBAA6C;AACxF,UAAIC,oBAAmB,uBAAuB,wBAAgD;AAC9F,UAAI,WAAW;AACf,UAAI,aAAa;AACjB,UAAI,SAAS;AACb,UAAI,SAAS,uBAAuB,uBAA+C;AACnF,UAAI,UAAU,uBAAuB,2BAAmD;AAExF,UAAI,gBAA6B,yBAAU,SAAS;AAClD,SAAC,GAAGF,YAAW,SAASG,gBAAe,OAAO;AAC9C,YAAI,UAAU,GAAGF,eAAc,SAASE,cAAa;AACrD,iBAASA,iBAAgB;AACvB,cAAI;AACJ,WAAC,GAAGN,kBAAiB,SAAS,MAAMM,cAAa;AACjD,mBAAS,OAAO,UAAU,QAAQ,OAAO,IAAI,MAAM,IAAI,GAAG,OAAO,GAAG,OAAO,MAAM,QAAQ;AACvF,iBAAK,IAAI,IAAI,UAAU,IAAI;AAAA,UAC7B;AACA,kBAAQ,OAAO,KAAK,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,IAAI,CAAC;AACrD,WAAC,GAAGD,kBAAiB,UAAU,GAAGH,yBAAwB,SAAS,KAAK,GAAG,YAAY,GAAG;AAC1F,WAAC,GAAGG,kBAAiB,UAAU,GAAGH,yBAAwB,SAAS,KAAK,GAAG,sBAAsB,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,CAAC;AACvK,iBAAO;AAAA,QACT;AACA,SAAC,GAAGD,eAAc,SAASK,gBAAe,CAAC;AAAA,UACzC,KAAK;AAAA,UACL,OAAO,SAASC,OAAM,YAAYC,QAAOC,QAAO;AAC9C,oBAAQD,QAAO;AAAA,cACb,KAAK;AACH,wBAAQ,GAAG,OAAO,qBAAqB,WAAW,gBAAgB,MAAM,UAAU;AAAA,cACpF,KAAK;AACH,uBAAOC,OAAM,cAAc,YAAY;AAAA,kBACrC,MAAM;AAAA,gBACR,CAAC;AAAA,cACH;AACE,wBAAQ,GAAG,OAAO,cAAcD,OAAM,QAAQ,UAAU;AAAA,YAC5D;AAAA,UACF;AAAA,QACF,GAAG;AAAA,UACD,KAAK;AAAA,UACL,OAAO,SAAS,SAAS,OAAO,OAAO;AACrC,mBAAO,SAAS,KAAK,SAAS;AAAA,UAChC;AAAA,QACF,GAAG;AAAA,UACD,KAAK;AAAA,UACL,OAAO,SAAS,IAAIE,OAAM,QAAQ,OAAO;AACvC,oBAAQ,GAAG,QAAQ,UAAU,GAAG,OAAO,SAASA,OAAM,KAAK,CAAC;AAAA,UAC9D;AAAA,QACF,CAAC,CAAC;AACF,eAAOJ;AAAA,MACT,EAAE,SAAS,MAAM;AACjB,cAAQ,gBAAgB;AAAA;AAAA;;;AC5DxB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,aAAa;AACrB,UAAIK,oBAAmB,uBAAuB,wBAAgD;AAC9F,UAAIC,iBAAgB,uBAAuB,qBAA6C;AACxF,UAAIC,2BAA0B,uBAAuB,+BAAuD;AAC5G,UAAIC,cAAa,uBAAuB,kBAA0C;AAClF,UAAIC,iBAAgB,uBAAuB,qBAA6C;AACxF,UAAIC,oBAAmB,uBAAuB,wBAAgD;AAC9F,UAAI,SAAS;AACb,UAAI,WAAW;AACf,UAAI,aAAa;AACjB,UAAI,gBAAgB,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE;AACnE,UAAI,0BAA0B,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE;AAG7E,UAAI,aAA0B,yBAAU,SAAS;AAC/C,SAAC,GAAGF,YAAW,SAASG,aAAY,OAAO;AAC3C,YAAI,UAAU,GAAGF,eAAc,SAASE,WAAU;AAClD,iBAASA,cAAa;AACpB,cAAI;AACJ,WAAC,GAAGN,kBAAiB,SAAS,MAAMM,WAAU;AAC9C,mBAAS,OAAO,UAAU,QAAQ,OAAO,IAAI,MAAM,IAAI,GAAG,OAAO,GAAG,OAAO,MAAM,QAAQ;AACvF,iBAAK,IAAI,IAAI,UAAU,IAAI;AAAA,UAC7B;AACA,kBAAQ,OAAO,KAAK,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,IAAI,CAAC;AACrD,WAAC,GAAGD,kBAAiB,UAAU,GAAGH,yBAAwB,SAAS,KAAK,GAAG,YAAY,EAAE;AACzF,WAAC,GAAGG,kBAAiB,UAAU,GAAGH,yBAAwB,SAAS,KAAK,GAAG,eAAe,CAAC;AAC3F,WAAC,GAAGG,kBAAiB,UAAU,GAAGH,yBAAwB,SAAS,KAAK,GAAG,sBAAsB,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,CAAC;AAC7J,iBAAO;AAAA,QACT;AACA,SAAC,GAAGD,eAAc,SAASK,aAAY,CAAC;AAAA,UACtC,KAAK;AAAA,UACL,OAAO,SAASC,OAAM,YAAYC,QAAOC,QAAO;AAC9C,oBAAQD,QAAO;AAAA,cACb,KAAK;AACH,wBAAQ,GAAG,OAAO,qBAAqB,WAAW,gBAAgB,MAAM,UAAU;AAAA,cACpF,KAAK;AACH,uBAAOC,OAAM,cAAc,YAAY;AAAA,kBACrC,MAAM;AAAA,gBACR,CAAC;AAAA,cACH;AACE,wBAAQ,GAAG,OAAO,cAAcD,OAAM,QAAQ,UAAU;AAAA,YAC5D;AAAA,UACF;AAAA,QACF,GAAG;AAAA,UACD,KAAK;AAAA,UACL,OAAO,SAAS,SAASE,OAAM,OAAO;AACpC,gBAAI,OAAOA,MAAK,eAAe;AAC/B,gBAAI,cAAc,GAAG,OAAO,iBAAiB,IAAI;AACjD,gBAAI,QAAQA,MAAK,YAAY;AAC7B,gBAAI,YAAY;AACd,qBAAO,SAAS,KAAK,SAAS,wBAAwB,KAAK;AAAA,YAC7D,OAAO;AACL,qBAAO,SAAS,KAAK,SAAS,cAAc,KAAK;AAAA,YACnD;AAAA,UACF;AAAA,QACF,GAAG;AAAA,UACD,KAAK;AAAA,UACL,OAAO,SAAS,IAAIA,OAAM,QAAQ,OAAO;AACvC,YAAAA,MAAK,WAAW,KAAK;AACrB,YAAAA,MAAK,YAAY,GAAG,GAAG,GAAG,CAAC;AAC3B,mBAAOA;AAAA,UACT;AAAA,QACF,CAAC,CAAC;AACF,eAAOJ;AAAA,MACT,EAAE,SAAS,MAAM;AACjB,cAAQ,aAAa;AAAA;AAAA;;;ACvErB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,kBAAkB;AAC1B,UAAIK,oBAAmB,uBAAuB,wBAAgD;AAC9F,UAAIC,iBAAgB,uBAAuB,qBAA6C;AACxF,UAAIC,2BAA0B,uBAAuB,+BAAuD;AAC5G,UAAIC,cAAa,uBAAuB,kBAA0C;AAClF,UAAIC,iBAAgB,uBAAuB,qBAA6C;AACxF,UAAIC,oBAAmB,uBAAuB,wBAAgD;AAC9F,UAAI,WAAW;AACf,UAAI,aAAa;AACjB,UAAI,SAAS;AACb,UAAI,kBAA+B,yBAAU,SAAS;AACpD,SAAC,GAAGF,YAAW,SAASG,kBAAiB,OAAO;AAChD,YAAI,UAAU,GAAGF,eAAc,SAASE,gBAAe;AACvD,iBAASA,mBAAkB;AACzB,cAAI;AACJ,WAAC,GAAGN,kBAAiB,SAAS,MAAMM,gBAAe;AACnD,mBAAS,OAAO,UAAU,QAAQ,OAAO,IAAI,MAAM,IAAI,GAAG,OAAO,GAAG,OAAO,MAAM,QAAQ;AACvF,iBAAK,IAAI,IAAI,UAAU,IAAI;AAAA,UAC7B;AACA,kBAAQ,OAAO,KAAK,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,IAAI,CAAC;AACrD,WAAC,GAAGD,kBAAiB,UAAU,GAAGH,yBAAwB,SAAS,KAAK,GAAG,YAAY,EAAE;AACzF,WAAC,GAAGG,kBAAiB,UAAU,GAAGH,yBAAwB,SAAS,KAAK,GAAG,eAAe,CAAC;AAC3F,WAAC,GAAGG,kBAAiB,UAAU,GAAGH,yBAAwB,SAAS,KAAK,GAAG,sBAAsB,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,CAAC;AAC5K,iBAAO;AAAA,QACT;AACA,SAAC,GAAGD,eAAc,SAASK,kBAAiB,CAAC;AAAA,UAC3C,KAAK;AAAA,UACL,OAAO,SAASC,OAAM,YAAYC,QAAOC,QAAO;AAC9C,oBAAQD,QAAO;AAAA,cACb,KAAK;AAAA,cACL,KAAK;AACH,wBAAQ,GAAG,OAAO,qBAAqB,WAAW,gBAAgB,WAAW,UAAU;AAAA,cACzF,KAAK;AACH,uBAAOC,OAAM,cAAc,YAAY;AAAA,kBACrC,MAAM;AAAA,gBACR,CAAC;AAAA,cACH;AACE,wBAAQ,GAAG,OAAO,cAAcD,OAAM,QAAQ,UAAU;AAAA,YAC5D;AAAA,UACF;AAAA,QACF,GAAG;AAAA,UACD,KAAK;AAAA,UACL,OAAO,SAAS,SAASE,OAAM,OAAO;AACpC,gBAAI,OAAOA,MAAK,eAAe;AAC/B,gBAAI,cAAc,GAAG,OAAO,iBAAiB,IAAI;AACjD,gBAAI,YAAY;AACd,qBAAO,SAAS,KAAK,SAAS;AAAA,YAChC,OAAO;AACL,qBAAO,SAAS,KAAK,SAAS;AAAA,YAChC;AAAA,UACF;AAAA,QACF,GAAG;AAAA,UACD,KAAK;AAAA,UACL,OAAO,SAAS,IAAIA,OAAM,QAAQ,OAAO;AACvC,YAAAA,MAAK,YAAY,GAAG,KAAK;AACzB,YAAAA,MAAK,YAAY,GAAG,GAAG,GAAG,CAAC;AAC3B,mBAAOA;AAAA,UACT;AAAA,QACF,CAAC,CAAC;AACF,eAAOJ;AAAA,MACT,EAAE,SAAS,MAAM;AACjB,cAAQ,kBAAkB;AAAA;AAAA;;;ACnE1B;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,UAAI,SAAS,uBAAuB,gBAAgC;AACpE,UAAI,UAAU,uBAAuB,sBAAmC;AACxE,UAAI,UAAU,uBAAuB,mBAAgC;AACrE,UAAI,UAAU;AACd,eAAS,UAAU,WAAW,UAAUK,UAAS;AAC/C,YAAIC,OAAMC,QAAOC,QAAO,uBAAuB,iBAAiB,uBAAuB,uBAAuB;AAC9G,SAAC,GAAG,QAAQ,SAAS,GAAG,SAAS;AACjC,YAAI,kBAAkB,GAAG,QAAQ,mBAAmB;AACpD,YAAI,gBAAgB,GAAG,QAAQ,UAAUF,SAAQC,UAASC,UAAS,wBAAwBH,aAAY,QAAQA,aAAY,SAAS,SAASA,SAAQ,kBAAkB,QAAQ,0BAA0B,SAAS,wBAAwBA,aAAY,QAAQA,aAAY,SAAS,UAAU,kBAAkBA,SAAQ,YAAY,QAAQ,oBAAoB,SAAS,UAAU,wBAAwB,gBAAgB,aAAa,QAAQ,0BAA0B,SAAS,SAAS,sBAAsB,kBAAkB,QAAQG,WAAU,SAASA,SAAQ,eAAe,kBAAkB,QAAQD,WAAU,SAASA,UAAS,wBAAwB,eAAe,YAAY,QAAQ,0BAA0B,SAAS,UAAU,yBAAyB,sBAAsB,aAAa,QAAQ,2BAA2B,SAAS,SAAS,uBAAuB,kBAAkB,QAAQD,UAAS,SAASA,QAAO,CAAC;AAG/4B,YAAI,EAAE,gBAAgB,KAAK,gBAAgB,IAAI;AAC7C,gBAAM,IAAI,WAAW,kDAAkD;AAAA,QACzE;AACA,YAAIG,SAAQ,GAAG,OAAO,SAAS,SAAS;AACxC,YAAI,OAAO,GAAG,QAAQ,SAAS,QAAQ;AACvC,YAAI,aAAaA,MAAK,UAAU;AAChC,YAAI,YAAY,MAAM;AACtB,YAAI,YAAY,YAAY,KAAK;AACjC,YAAI,QAAQ,WAAW,eAAe,IAAI,KAAK,MAAM;AACrD,QAAAA,MAAK,WAAWA,MAAK,WAAW,IAAI,IAAI;AACxC,eAAOA;AAAA,MACT;AACA,aAAO,UAAU,QAAQ;AAAA;AAAA;;;AC9BzB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,YAAY;AACpB,UAAIC,oBAAmB,uBAAuB,wBAAgD;AAC9F,UAAIC,iBAAgB,uBAAuB,qBAA6C;AACxF,UAAIC,2BAA0B,uBAAuB,+BAAuD;AAC5G,UAAIC,cAAa,uBAAuB,kBAA0C;AAClF,UAAIC,iBAAgB,uBAAuB,qBAA6C;AACxF,UAAIC,oBAAmB,uBAAuB,wBAAgD;AAC9F,UAAI,WAAW;AACf,UAAI,SAAS,uBAAuB,mBAA2C;AAE/E,UAAI,YAAyB,yBAAU,SAAS;AAC9C,SAAC,GAAGF,YAAW,SAASG,YAAW,OAAO;AAC1C,YAAI,UAAU,GAAGF,eAAc,SAASE,UAAS;AACjD,iBAASA,aAAY;AACnB,cAAI;AACJ,WAAC,GAAGN,kBAAiB,SAAS,MAAMM,UAAS;AAC7C,mBAAS,OAAO,UAAU,QAAQ,OAAO,IAAI,MAAM,IAAI,GAAG,OAAO,GAAG,OAAO,MAAM,QAAQ;AACvF,iBAAK,IAAI,IAAI,UAAU,IAAI;AAAA,UAC7B;AACA,kBAAQ,OAAO,KAAK,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,IAAI,CAAC;AACrD,WAAC,GAAGD,kBAAiB,UAAU,GAAGH,yBAAwB,SAAS,KAAK,GAAG,YAAY,EAAE;AACzF,WAAC,GAAGG,kBAAiB,UAAU,GAAGH,yBAAwB,SAAS,KAAK,GAAG,sBAAsB,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,CAAC;AAC/H,iBAAO;AAAA,QACT;AACA,SAAC,GAAGD,eAAc,SAASK,YAAW,CAAC;AAAA,UACrC,KAAK;AAAA,UACL,OAAO,SAASC,OAAM,YAAYC,QAAOC,QAAO;AAC9C,oBAAQD,QAAO;AAAA,cAEb,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AACH,uBAAOC,OAAM,IAAI,YAAY;AAAA,kBAC3B,OAAO;AAAA,kBACP,SAAS;AAAA,gBACX,CAAC,KAAKA,OAAM,IAAI,YAAY;AAAA,kBAC1B,OAAO;AAAA,kBACP,SAAS;AAAA,gBACX,CAAC,KAAKA,OAAM,IAAI,YAAY;AAAA,kBAC1B,OAAO;AAAA,kBACP,SAAS;AAAA,gBACX,CAAC;AAAA,cAEH,KAAK;AACH,uBAAOA,OAAM,IAAI,YAAY;AAAA,kBAC3B,OAAO;AAAA,kBACP,SAAS;AAAA,gBACX,CAAC;AAAA,cAEH,KAAK;AACH,uBAAOA,OAAM,IAAI,YAAY;AAAA,kBAC3B,OAAO;AAAA,kBACP,SAAS;AAAA,gBACX,CAAC,KAAKA,OAAM,IAAI,YAAY;AAAA,kBAC1B,OAAO;AAAA,kBACP,SAAS;AAAA,gBACX,CAAC;AAAA,cAEH,KAAK;AAAA,cACL;AACE,uBAAOA,OAAM,IAAI,YAAY;AAAA,kBAC3B,OAAO;AAAA,kBACP,SAAS;AAAA,gBACX,CAAC,KAAKA,OAAM,IAAI,YAAY;AAAA,kBAC1B,OAAO;AAAA,kBACP,SAAS;AAAA,gBACX,CAAC,KAAKA,OAAM,IAAI,YAAY;AAAA,kBAC1B,OAAO;AAAA,kBACP,SAAS;AAAA,gBACX,CAAC,KAAKA,OAAM,IAAI,YAAY;AAAA,kBAC1B,OAAO;AAAA,kBACP,SAAS;AAAA,gBACX,CAAC;AAAA,YACL;AAAA,UACF;AAAA,QACF,GAAG;AAAA,UACD,KAAK;AAAA,UACL,OAAO,SAAS,SAAS,OAAO,OAAO;AACrC,mBAAO,SAAS,KAAK,SAAS;AAAA,UAChC;AAAA,QACF,GAAG;AAAA,UACD,KAAK;AAAA,UACL,OAAO,SAAS,IAAIC,OAAM,QAAQ,OAAOC,UAAS;AAChD,YAAAD,SAAQ,GAAG,OAAO,SAASA,OAAM,OAAOC,QAAO;AAC/C,YAAAD,MAAK,YAAY,GAAG,GAAG,GAAG,CAAC;AAC3B,mBAAOA;AAAA,UACT;AAAA,QACF,CAAC,CAAC;AACF,eAAOJ;AAAA,MACT,EAAE,SAAS,MAAM;AACjB,cAAQ,YAAY;AAAA;AAAA;;;AChGpB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,iBAAiB;AACzB,UAAIM,oBAAmB,uBAAuB,wBAAgD;AAC9F,UAAIC,iBAAgB,uBAAuB,qBAA6C;AACxF,UAAIC,2BAA0B,uBAAuB,+BAAuD;AAC5G,UAAIC,cAAa,uBAAuB,kBAA0C;AAClF,UAAIC,iBAAgB,uBAAuB,qBAA6C;AACxF,UAAIC,oBAAmB,uBAAuB,wBAAgD;AAC9F,UAAI,WAAW;AACf,UAAI,SAAS;AACb,UAAI,SAAS,uBAAuB,mBAA2C;AAE/E,UAAI,iBAA8B,yBAAU,SAAS;AACnD,SAAC,GAAGF,YAAW,SAASG,iBAAgB,OAAO;AAC/C,YAAI,UAAU,GAAGF,eAAc,SAASE,eAAc;AACtD,iBAASA,kBAAiB;AACxB,cAAI;AACJ,WAAC,GAAGN,kBAAiB,SAAS,MAAMM,eAAc;AAClD,mBAAS,OAAO,UAAU,QAAQ,OAAO,IAAI,MAAM,IAAI,GAAG,OAAO,GAAG,OAAO,MAAM,QAAQ;AACvF,iBAAK,IAAI,IAAI,UAAU,IAAI;AAAA,UAC7B;AACA,kBAAQ,OAAO,KAAK,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,IAAI,CAAC;AACrD,WAAC,GAAGD,kBAAiB,UAAU,GAAGH,yBAAwB,SAAS,KAAK,GAAG,YAAY,EAAE;AACzF,WAAC,GAAGG,kBAAiB,UAAU,GAAGH,yBAAwB,SAAS,KAAK,GAAG,sBAAsB,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,CAAC;AAC5K,iBAAO;AAAA,QACT;AACA,SAAC,GAAGD,eAAc,SAASK,iBAAgB,CAAC;AAAA,UAC1C,KAAK;AAAA,UACL,OAAO,SAASC,OAAM,YAAYC,QAAOC,QAAOC,UAAS;AACvD,gBAAI,gBAAgB,SAASC,eAAc,OAAO;AAChD,kBAAI,gBAAgB,KAAK,OAAO,QAAQ,KAAK,CAAC,IAAI;AAClD,sBAAQ,QAAQD,SAAQ,eAAe,KAAK,IAAI;AAAA,YAClD;AACA,oBAAQF,QAAO;AAAA,cAEb,KAAK;AAAA,cACL,KAAK;AAEH,wBAAQ,GAAG,OAAO,WAAW,GAAG,OAAO,cAAcA,OAAM,QAAQ,UAAU,GAAG,aAAa;AAAA,cAE/F,KAAK;AACH,wBAAQ,GAAG,OAAO,UAAUC,OAAM,cAAc,YAAY;AAAA,kBAC1D,MAAM;AAAA,gBACR,CAAC,GAAG,aAAa;AAAA,cAEnB,KAAK;AACH,uBAAOA,OAAM,IAAI,YAAY;AAAA,kBAC3B,OAAO;AAAA,kBACP,SAAS;AAAA,gBACX,CAAC,KAAKA,OAAM,IAAI,YAAY;AAAA,kBAC1B,OAAO;AAAA,kBACP,SAAS;AAAA,gBACX,CAAC,KAAKA,OAAM,IAAI,YAAY;AAAA,kBAC1B,OAAO;AAAA,kBACP,SAAS;AAAA,gBACX,CAAC;AAAA,cAEH,KAAK;AACH,uBAAOA,OAAM,IAAI,YAAY;AAAA,kBAC3B,OAAO;AAAA,kBACP,SAAS;AAAA,gBACX,CAAC;AAAA,cAEH,KAAK;AACH,uBAAOA,OAAM,IAAI,YAAY;AAAA,kBAC3B,OAAO;AAAA,kBACP,SAAS;AAAA,gBACX,CAAC,KAAKA,OAAM,IAAI,YAAY;AAAA,kBAC1B,OAAO;AAAA,kBACP,SAAS;AAAA,gBACX,CAAC;AAAA,cAEH,KAAK;AAAA,cACL;AACE,uBAAOA,OAAM,IAAI,YAAY;AAAA,kBAC3B,OAAO;AAAA,kBACP,SAAS;AAAA,gBACX,CAAC,KAAKA,OAAM,IAAI,YAAY;AAAA,kBAC1B,OAAO;AAAA,kBACP,SAAS;AAAA,gBACX,CAAC,KAAKA,OAAM,IAAI,YAAY;AAAA,kBAC1B,OAAO;AAAA,kBACP,SAAS;AAAA,gBACX,CAAC,KAAKA,OAAM,IAAI,YAAY;AAAA,kBAC1B,OAAO;AAAA,kBACP,SAAS;AAAA,gBACX,CAAC;AAAA,YACL;AAAA,UACF;AAAA,QACF,GAAG;AAAA,UACD,KAAK;AAAA,UACL,OAAO,SAAS,SAAS,OAAO,OAAO;AACrC,mBAAO,SAAS,KAAK,SAAS;AAAA,UAChC;AAAA,QACF,GAAG;AAAA,UACD,KAAK;AAAA,UACL,OAAO,SAAS,IAAIG,OAAM,QAAQ,OAAOF,UAAS;AAChD,YAAAE,SAAQ,GAAG,OAAO,SAASA,OAAM,OAAOF,QAAO;AAC/C,YAAAE,MAAK,YAAY,GAAG,GAAG,GAAG,CAAC;AAC3B,mBAAOA;AAAA,UACT;AAAA,QACF,CAAC,CAAC;AACF,eAAON;AAAA,MACT,EAAE,SAAS,MAAM;AACjB,cAAQ,iBAAiB;AAAA;AAAA;;;AC7GzB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,2BAA2B;AACnC,UAAIO,oBAAmB,uBAAuB,wBAAgD;AAC9F,UAAIC,iBAAgB,uBAAuB,qBAA6C;AACxF,UAAIC,2BAA0B,uBAAuB,+BAAuD;AAC5G,UAAIC,cAAa,uBAAuB,kBAA0C;AAClF,UAAIC,iBAAgB,uBAAuB,qBAA6C;AACxF,UAAIC,oBAAmB,uBAAuB,wBAAgD;AAC9F,UAAI,WAAW;AACf,UAAI,SAAS;AACb,UAAI,SAAS,uBAAuB,mBAA2C;AAE/E,UAAI,2BAAwC,yBAAU,SAAS;AAC7D,SAAC,GAAGF,YAAW,SAASG,2BAA0B,OAAO;AACzD,YAAI,UAAU,GAAGF,eAAc,SAASE,yBAAwB;AAChE,iBAASA,4BAA2B;AAClC,cAAI;AACJ,WAAC,GAAGN,kBAAiB,SAAS,MAAMM,yBAAwB;AAC5D,mBAAS,OAAO,UAAU,QAAQ,OAAO,IAAI,MAAM,IAAI,GAAG,OAAO,GAAG,OAAO,MAAM,QAAQ;AACvF,iBAAK,IAAI,IAAI,UAAU,IAAI;AAAA,UAC7B;AACA,kBAAQ,OAAO,KAAK,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,IAAI,CAAC;AACrD,WAAC,GAAGD,kBAAiB,UAAU,GAAGH,yBAAwB,SAAS,KAAK,GAAG,YAAY,EAAE;AACzF,WAAC,GAAGG,kBAAiB,UAAU,GAAGH,yBAAwB,SAAS,KAAK,GAAG,sBAAsB,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,CAAC;AAC5K,iBAAO;AAAA,QACT;AACA,SAAC,GAAGD,eAAc,SAASK,2BAA0B,CAAC;AAAA,UACpD,KAAK;AAAA,UACL,OAAO,SAASC,OAAM,YAAYC,QAAOC,QAAOC,UAAS;AACvD,gBAAI,gBAAgB,SAASC,eAAc,OAAO;AAChD,kBAAI,gBAAgB,KAAK,OAAO,QAAQ,KAAK,CAAC,IAAI;AAClD,sBAAQ,QAAQD,SAAQ,eAAe,KAAK,IAAI;AAAA,YAClD;AACA,oBAAQF,QAAO;AAAA,cAEb,KAAK;AAAA,cACL,KAAK;AAEH,wBAAQ,GAAG,OAAO,WAAW,GAAG,OAAO,cAAcA,OAAM,QAAQ,UAAU,GAAG,aAAa;AAAA,cAE/F,KAAK;AACH,wBAAQ,GAAG,OAAO,UAAUC,OAAM,cAAc,YAAY;AAAA,kBAC1D,MAAM;AAAA,gBACR,CAAC,GAAG,aAAa;AAAA,cAEnB,KAAK;AACH,uBAAOA,OAAM,IAAI,YAAY;AAAA,kBAC3B,OAAO;AAAA,kBACP,SAAS;AAAA,gBACX,CAAC,KAAKA,OAAM,IAAI,YAAY;AAAA,kBAC1B,OAAO;AAAA,kBACP,SAAS;AAAA,gBACX,CAAC,KAAKA,OAAM,IAAI,YAAY;AAAA,kBAC1B,OAAO;AAAA,kBACP,SAAS;AAAA,gBACX,CAAC;AAAA,cAEH,KAAK;AACH,uBAAOA,OAAM,IAAI,YAAY;AAAA,kBAC3B,OAAO;AAAA,kBACP,SAAS;AAAA,gBACX,CAAC;AAAA,cAEH,KAAK;AACH,uBAAOA,OAAM,IAAI,YAAY;AAAA,kBAC3B,OAAO;AAAA,kBACP,SAAS;AAAA,gBACX,CAAC,KAAKA,OAAM,IAAI,YAAY;AAAA,kBAC1B,OAAO;AAAA,kBACP,SAAS;AAAA,gBACX,CAAC;AAAA,cAEH,KAAK;AAAA,cACL;AACE,uBAAOA,OAAM,IAAI,YAAY;AAAA,kBAC3B,OAAO;AAAA,kBACP,SAAS;AAAA,gBACX,CAAC,KAAKA,OAAM,IAAI,YAAY;AAAA,kBAC1B,OAAO;AAAA,kBACP,SAAS;AAAA,gBACX,CAAC,KAAKA,OAAM,IAAI,YAAY;AAAA,kBAC1B,OAAO;AAAA,kBACP,SAAS;AAAA,gBACX,CAAC,KAAKA,OAAM,IAAI,YAAY;AAAA,kBAC1B,OAAO;AAAA,kBACP,SAAS;AAAA,gBACX,CAAC;AAAA,YACL;AAAA,UACF;AAAA,QACF,GAAG;AAAA,UACD,KAAK;AAAA,UACL,OAAO,SAAS,SAAS,OAAO,OAAO;AACrC,mBAAO,SAAS,KAAK,SAAS;AAAA,UAChC;AAAA,QACF,GAAG;AAAA,UACD,KAAK;AAAA,UACL,OAAO,SAAS,IAAIG,OAAM,QAAQ,OAAOF,UAAS;AAChD,YAAAE,SAAQ,GAAG,OAAO,SAASA,OAAM,OAAOF,QAAO;AAC/C,YAAAE,MAAK,YAAY,GAAG,GAAG,GAAG,CAAC;AAC3B,mBAAOA;AAAA,UACT;AAAA,QACF,CAAC,CAAC;AACF,eAAON;AAAA,MACT,EAAE,SAAS,MAAM;AACjB,cAAQ,2BAA2B;AAAA;AAAA;;;AC7GnC;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,UAAI,SAAS,uBAAuB,gBAAgC;AACpE,UAAI,UAAU,uBAAuB,sBAAmC;AACxE,UAAI,UAAU,uBAAuB,mBAAgC;AACrE,eAAS,aAAa,WAAW,UAAU;AACzC,SAAC,GAAG,QAAQ,SAAS,GAAG,SAAS;AACjC,YAAI,OAAO,GAAG,QAAQ,SAAS,QAAQ;AACvC,YAAI,MAAM,MAAM,GAAG;AACjB,gBAAM,MAAM;AAAA,QACd;AACA,YAAI,eAAe;AACnB,YAAIO,SAAQ,GAAG,OAAO,SAAS,SAAS;AACxC,YAAI,aAAaA,MAAK,UAAU;AAChC,YAAI,YAAY,MAAM;AACtB,YAAI,YAAY,YAAY,KAAK;AACjC,YAAI,QAAQ,WAAW,eAAe,IAAI,KAAK,MAAM;AACrD,QAAAA,MAAK,WAAWA,MAAK,WAAW,IAAI,IAAI;AACxC,eAAOA;AAAA,MACT;AACA,aAAO,UAAU,QAAQ;AAAA;AAAA;;;ACzBzB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,eAAe;AACvB,UAAIC,oBAAmB,uBAAuB,wBAAgD;AAC9F,UAAIC,iBAAgB,uBAAuB,qBAA6C;AACxF,UAAIC,2BAA0B,uBAAuB,+BAAuD;AAC5G,UAAIC,cAAa,uBAAuB,kBAA0C;AAClF,UAAIC,iBAAgB,uBAAuB,qBAA6C;AACxF,UAAIC,oBAAmB,uBAAuB,wBAAgD;AAC9F,UAAI,WAAW;AACf,UAAI,SAAS;AACb,UAAI,SAAS,uBAAuB,sBAA8C;AAElF,UAAI,eAA4B,yBAAU,SAAS;AACjD,SAAC,GAAGF,YAAW,SAASG,eAAc,OAAO;AAC7C,YAAI,UAAU,GAAGF,eAAc,SAASE,aAAY;AACpD,iBAASA,gBAAe;AACtB,cAAI;AACJ,WAAC,GAAGN,kBAAiB,SAAS,MAAMM,aAAY;AAChD,mBAAS,OAAO,UAAU,QAAQ,OAAO,IAAI,MAAM,IAAI,GAAG,OAAO,GAAG,OAAO,MAAM,QAAQ;AACvF,iBAAK,IAAI,IAAI,UAAU,IAAI;AAAA,UAC7B;AACA,kBAAQ,OAAO,KAAK,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,IAAI,CAAC;AACrD,WAAC,GAAGD,kBAAiB,UAAU,GAAGH,yBAAwB,SAAS,KAAK,GAAG,YAAY,EAAE;AACzF,WAAC,GAAGG,kBAAiB,UAAU,GAAGH,yBAAwB,SAAS,KAAK,GAAG,sBAAsB,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,CAAC;AAC5K,iBAAO;AAAA,QACT;AACA,SAAC,GAAGD,eAAc,SAASK,eAAc,CAAC;AAAA,UACxC,KAAK;AAAA,UACL,OAAO,SAASC,OAAM,YAAYC,QAAOC,QAAO;AAC9C,gBAAI,gBAAgB,SAASC,eAAc,OAAO;AAChD,kBAAI,UAAU,GAAG;AACf,uBAAO;AAAA,cACT;AACA,qBAAO;AAAA,YACT;AACA,oBAAQF,QAAO;AAAA,cAEb,KAAK;AAAA,cACL,KAAK;AAEH,wBAAQ,GAAG,OAAO,cAAcA,OAAM,QAAQ,UAAU;AAAA,cAE1D,KAAK;AACH,uBAAOC,OAAM,cAAc,YAAY;AAAA,kBACrC,MAAM;AAAA,gBACR,CAAC;AAAA,cAEH,KAAK;AACH,wBAAQ,GAAG,OAAO,UAAUA,OAAM,IAAI,YAAY;AAAA,kBAChD,OAAO;AAAA,kBACP,SAAS;AAAA,gBACX,CAAC,KAAKA,OAAM,IAAI,YAAY;AAAA,kBAC1B,OAAO;AAAA,kBACP,SAAS;AAAA,gBACX,CAAC,KAAKA,OAAM,IAAI,YAAY;AAAA,kBAC1B,OAAO;AAAA,kBACP,SAAS;AAAA,gBACX,CAAC,GAAG,aAAa;AAAA,cAEnB,KAAK;AACH,wBAAQ,GAAG,OAAO,UAAUA,OAAM,IAAI,YAAY;AAAA,kBAChD,OAAO;AAAA,kBACP,SAAS;AAAA,gBACX,CAAC,GAAG,aAAa;AAAA,cAEnB,KAAK;AACH,wBAAQ,GAAG,OAAO,UAAUA,OAAM,IAAI,YAAY;AAAA,kBAChD,OAAO;AAAA,kBACP,SAAS;AAAA,gBACX,CAAC,KAAKA,OAAM,IAAI,YAAY;AAAA,kBAC1B,OAAO;AAAA,kBACP,SAAS;AAAA,gBACX,CAAC,GAAG,aAAa;AAAA,cAEnB,KAAK;AAAA,cACL;AACE,wBAAQ,GAAG,OAAO,UAAUA,OAAM,IAAI,YAAY;AAAA,kBAChD,OAAO;AAAA,kBACP,SAAS;AAAA,gBACX,CAAC,KAAKA,OAAM,IAAI,YAAY;AAAA,kBAC1B,OAAO;AAAA,kBACP,SAAS;AAAA,gBACX,CAAC,KAAKA,OAAM,IAAI,YAAY;AAAA,kBAC1B,OAAO;AAAA,kBACP,SAAS;AAAA,gBACX,CAAC,KAAKA,OAAM,IAAI,YAAY;AAAA,kBAC1B,OAAO;AAAA,kBACP,SAAS;AAAA,gBACX,CAAC,GAAG,aAAa;AAAA,YACrB;AAAA,UACF;AAAA,QACF,GAAG;AAAA,UACD,KAAK;AAAA,UACL,OAAO,SAAS,SAAS,OAAO,OAAO;AACrC,mBAAO,SAAS,KAAK,SAAS;AAAA,UAChC;AAAA,QACF,GAAG;AAAA,UACD,KAAK;AAAA,UACL,OAAO,SAAS,IAAIE,OAAM,QAAQ,OAAO;AACvC,YAAAA,SAAQ,GAAG,OAAO,SAASA,OAAM,KAAK;AACtC,YAAAA,MAAK,YAAY,GAAG,GAAG,GAAG,CAAC;AAC3B,mBAAOA;AAAA,UACT;AAAA,QACF,CAAC,CAAC;AACF,eAAOL;AAAA,MACT,EAAE,SAAS,MAAM;AACjB,cAAQ,eAAe;AAAA;AAAA;;;AC/GvB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,aAAa;AACrB,UAAIM,oBAAmB,uBAAuB,wBAAgD;AAC9F,UAAIC,iBAAgB,uBAAuB,qBAA6C;AACxF,UAAIC,2BAA0B,uBAAuB,+BAAuD;AAC5G,UAAIC,cAAa,uBAAuB,kBAA0C;AAClF,UAAIC,iBAAgB,uBAAuB,qBAA6C;AACxF,UAAIC,oBAAmB,uBAAuB,wBAAgD;AAC9F,UAAI,WAAW;AACf,UAAI,SAAS;AACb,UAAI,aAA0B,yBAAU,SAAS;AAC/C,SAAC,GAAGF,YAAW,SAASG,aAAY,OAAO;AAC3C,YAAI,UAAU,GAAGF,eAAc,SAASE,WAAU;AAClD,iBAASA,cAAa;AACpB,cAAI;AACJ,WAAC,GAAGN,kBAAiB,SAAS,MAAMM,WAAU;AAC9C,mBAAS,OAAO,UAAU,QAAQ,OAAO,IAAI,MAAM,IAAI,GAAG,OAAO,GAAG,OAAO,MAAM,QAAQ;AACvF,iBAAK,IAAI,IAAI,UAAU,IAAI;AAAA,UAC7B;AACA,kBAAQ,OAAO,KAAK,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,IAAI,CAAC;AACrD,WAAC,GAAGD,kBAAiB,UAAU,GAAGH,yBAAwB,SAAS,KAAK,GAAG,YAAY,EAAE;AACzF,WAAC,GAAGG,kBAAiB,UAAU,GAAGH,yBAAwB,SAAS,KAAK,GAAG,sBAAsB,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,CAAC;AAC/H,iBAAO;AAAA,QACT;AACA,SAAC,GAAGD,eAAc,SAASK,aAAY,CAAC;AAAA,UACtC,KAAK;AAAA,UACL,OAAO,SAASC,OAAM,YAAYC,QAAOC,QAAO;AAC9C,oBAAQD,QAAO;AAAA,cACb,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AACH,uBAAOC,OAAM,UAAU,YAAY;AAAA,kBACjC,OAAO;AAAA,kBACP,SAAS;AAAA,gBACX,CAAC,KAAKA,OAAM,UAAU,YAAY;AAAA,kBAChC,OAAO;AAAA,kBACP,SAAS;AAAA,gBACX,CAAC;AAAA,cACH,KAAK;AACH,uBAAOA,OAAM,UAAU,YAAY;AAAA,kBACjC,OAAO;AAAA,kBACP,SAAS;AAAA,gBACX,CAAC;AAAA,cACH,KAAK;AAAA,cACL;AACE,uBAAOA,OAAM,UAAU,YAAY;AAAA,kBACjC,OAAO;AAAA,kBACP,SAAS;AAAA,gBACX,CAAC,KAAKA,OAAM,UAAU,YAAY;AAAA,kBAChC,OAAO;AAAA,kBACP,SAAS;AAAA,gBACX,CAAC,KAAKA,OAAM,UAAU,YAAY;AAAA,kBAChC,OAAO;AAAA,kBACP,SAAS;AAAA,gBACX,CAAC;AAAA,YACL;AAAA,UACF;AAAA,QACF,GAAG;AAAA,UACD,KAAK;AAAA,UACL,OAAO,SAAS,IAAIC,OAAM,QAAQ,OAAO;AACvC,YAAAA,MAAK,aAAa,GAAG,OAAO,sBAAsB,KAAK,GAAG,GAAG,GAAG,CAAC;AACjE,mBAAOA;AAAA,UACT;AAAA,QACF,CAAC,CAAC;AACF,eAAOJ;AAAA,MACT,EAAE,SAAS,MAAM;AACjB,cAAQ,aAAa;AAAA;AAAA;;;ACvErB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,qBAAqB;AAC7B,UAAIK,oBAAmB,uBAAuB,wBAAgD;AAC9F,UAAIC,iBAAgB,uBAAuB,qBAA6C;AACxF,UAAIC,2BAA0B,uBAAuB,+BAAuD;AAC5G,UAAIC,cAAa,uBAAuB,kBAA0C;AAClF,UAAIC,iBAAgB,uBAAuB,qBAA6C;AACxF,UAAIC,oBAAmB,uBAAuB,wBAAgD;AAC9F,UAAI,WAAW;AACf,UAAI,SAAS;AACb,UAAI,qBAAkC,yBAAU,SAAS;AACvD,SAAC,GAAGF,YAAW,SAASG,qBAAoB,OAAO;AACnD,YAAI,UAAU,GAAGF,eAAc,SAASE,mBAAkB;AAC1D,iBAASA,sBAAqB;AAC5B,cAAI;AACJ,WAAC,GAAGN,kBAAiB,SAAS,MAAMM,mBAAkB;AACtD,mBAAS,OAAO,UAAU,QAAQ,OAAO,IAAI,MAAM,IAAI,GAAG,OAAO,GAAG,OAAO,MAAM,QAAQ;AACvF,iBAAK,IAAI,IAAI,UAAU,IAAI;AAAA,UAC7B;AACA,kBAAQ,OAAO,KAAK,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,IAAI,CAAC;AACrD,WAAC,GAAGD,kBAAiB,UAAU,GAAGH,yBAAwB,SAAS,KAAK,GAAG,YAAY,EAAE;AACzF,WAAC,GAAGG,kBAAiB,UAAU,GAAGH,yBAAwB,SAAS,KAAK,GAAG,sBAAsB,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,CAAC;AAC/H,iBAAO;AAAA,QACT;AACA,SAAC,GAAGD,eAAc,SAASK,qBAAoB,CAAC;AAAA,UAC9C,KAAK;AAAA,UACL,OAAO,SAASC,OAAM,YAAYC,QAAOC,QAAO;AAC9C,oBAAQD,QAAO;AAAA,cACb,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AACH,uBAAOC,OAAM,UAAU,YAAY;AAAA,kBACjC,OAAO;AAAA,kBACP,SAAS;AAAA,gBACX,CAAC,KAAKA,OAAM,UAAU,YAAY;AAAA,kBAChC,OAAO;AAAA,kBACP,SAAS;AAAA,gBACX,CAAC;AAAA,cACH,KAAK;AACH,uBAAOA,OAAM,UAAU,YAAY;AAAA,kBACjC,OAAO;AAAA,kBACP,SAAS;AAAA,gBACX,CAAC;AAAA,cACH,KAAK;AAAA,cACL;AACE,uBAAOA,OAAM,UAAU,YAAY;AAAA,kBACjC,OAAO;AAAA,kBACP,SAAS;AAAA,gBACX,CAAC,KAAKA,OAAM,UAAU,YAAY;AAAA,kBAChC,OAAO;AAAA,kBACP,SAAS;AAAA,gBACX,CAAC,KAAKA,OAAM,UAAU,YAAY;AAAA,kBAChC,OAAO;AAAA,kBACP,SAAS;AAAA,gBACX,CAAC;AAAA,YACL;AAAA,UACF;AAAA,QACF,GAAG;AAAA,UACD,KAAK;AAAA,UACL,OAAO,SAAS,IAAIC,OAAM,QAAQ,OAAO;AACvC,YAAAA,MAAK,aAAa,GAAG,OAAO,sBAAsB,KAAK,GAAG,GAAG,GAAG,CAAC;AACjE,mBAAOA;AAAA,UACT;AAAA,QACF,CAAC,CAAC;AACF,eAAOJ;AAAA,MACT,EAAE,SAAS,MAAM;AACjB,cAAQ,qBAAqB;AAAA;AAAA;;;ACvE7B;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,kBAAkB;AAC1B,UAAIK,oBAAmB,uBAAuB,wBAAgD;AAC9F,UAAIC,iBAAgB,uBAAuB,qBAA6C;AACxF,UAAIC,2BAA0B,uBAAuB,+BAAuD;AAC5G,UAAIC,cAAa,uBAAuB,kBAA0C;AAClF,UAAIC,iBAAgB,uBAAuB,qBAA6C;AACxF,UAAIC,oBAAmB,uBAAuB,wBAAgD;AAC9F,UAAI,WAAW;AACf,UAAI,SAAS;AAEb,UAAI,kBAA+B,yBAAU,SAAS;AACpD,SAAC,GAAGF,YAAW,SAASG,kBAAiB,OAAO;AAChD,YAAI,UAAU,GAAGF,eAAc,SAASE,gBAAe;AACvD,iBAASA,mBAAkB;AACzB,cAAI;AACJ,WAAC,GAAGN,kBAAiB,SAAS,MAAMM,gBAAe;AACnD,mBAAS,OAAO,UAAU,QAAQ,OAAO,IAAI,MAAM,IAAI,GAAG,OAAO,GAAG,OAAO,MAAM,QAAQ;AACvF,iBAAK,IAAI,IAAI,UAAU,IAAI;AAAA,UAC7B;AACA,kBAAQ,OAAO,KAAK,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,IAAI,CAAC;AACrD,WAAC,GAAGD,kBAAiB,UAAU,GAAGH,yBAAwB,SAAS,KAAK,GAAG,YAAY,EAAE;AACzF,WAAC,GAAGG,kBAAiB,UAAU,GAAGH,yBAAwB,SAAS,KAAK,GAAG,sBAAsB,CAAC,KAAK,KAAK,KAAK,GAAG,CAAC;AACrH,iBAAO;AAAA,QACT;AACA,SAAC,GAAGD,eAAc,SAASK,kBAAiB,CAAC;AAAA,UAC3C,KAAK;AAAA,UACL,OAAO,SAASC,OAAM,YAAYC,QAAOC,QAAO;AAC9C,oBAAQD,QAAO;AAAA,cACb,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AACH,uBAAOC,OAAM,UAAU,YAAY;AAAA,kBACjC,OAAO;AAAA,kBACP,SAAS;AAAA,gBACX,CAAC,KAAKA,OAAM,UAAU,YAAY;AAAA,kBAChC,OAAO;AAAA,kBACP,SAAS;AAAA,gBACX,CAAC;AAAA,cACH,KAAK;AACH,uBAAOA,OAAM,UAAU,YAAY;AAAA,kBACjC,OAAO;AAAA,kBACP,SAAS;AAAA,gBACX,CAAC;AAAA,cACH,KAAK;AAAA,cACL;AACE,uBAAOA,OAAM,UAAU,YAAY;AAAA,kBACjC,OAAO;AAAA,kBACP,SAAS;AAAA,gBACX,CAAC,KAAKA,OAAM,UAAU,YAAY;AAAA,kBAChC,OAAO;AAAA,kBACP,SAAS;AAAA,gBACX,CAAC,KAAKA,OAAM,UAAU,YAAY;AAAA,kBAChC,OAAO;AAAA,kBACP,SAAS;AAAA,gBACX,CAAC;AAAA,YACL;AAAA,UACF;AAAA,QACF,GAAG;AAAA,UACD,KAAK;AAAA,UACL,OAAO,SAAS,IAAIC,OAAM,QAAQ,OAAO;AACvC,YAAAA,MAAK,aAAa,GAAG,OAAO,sBAAsB,KAAK,GAAG,GAAG,GAAG,CAAC;AACjE,mBAAOA;AAAA,UACT;AAAA,QACF,CAAC,CAAC;AACF,eAAOJ;AAAA,MACT,EAAE,SAAS,MAAM;AACjB,cAAQ,kBAAkB;AAAA;AAAA;;;ACxE1B;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,kBAAkB;AAC1B,UAAIK,oBAAmB,uBAAuB,wBAAgD;AAC9F,UAAIC,iBAAgB,uBAAuB,qBAA6C;AACxF,UAAIC,2BAA0B,uBAAuB,+BAAuD;AAC5G,UAAIC,cAAa,uBAAuB,kBAA0C;AAClF,UAAIC,iBAAgB,uBAAuB,qBAA6C;AACxF,UAAIC,oBAAmB,uBAAuB,wBAAgD;AAC9F,UAAI,WAAW;AACf,UAAI,aAAa;AACjB,UAAI,SAAS;AACb,UAAI,kBAA+B,yBAAU,SAAS;AACpD,SAAC,GAAGF,YAAW,SAASG,kBAAiB,OAAO;AAChD,YAAI,UAAU,GAAGF,eAAc,SAASE,gBAAe;AACvD,iBAASA,mBAAkB;AACzB,cAAI;AACJ,WAAC,GAAGN,kBAAiB,SAAS,MAAMM,gBAAe;AACnD,mBAAS,OAAO,UAAU,QAAQ,OAAO,IAAI,MAAM,IAAI,GAAG,OAAO,GAAG,OAAO,MAAM,QAAQ;AACvF,iBAAK,IAAI,IAAI,UAAU,IAAI;AAAA,UAC7B;AACA,kBAAQ,OAAO,KAAK,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,IAAI,CAAC;AACrD,WAAC,GAAGD,kBAAiB,UAAU,GAAGH,yBAAwB,SAAS,KAAK,GAAG,YAAY,EAAE;AACzF,WAAC,GAAGG,kBAAiB,UAAU,GAAGH,yBAAwB,SAAS,KAAK,GAAG,sBAAsB,CAAC,KAAK,KAAK,KAAK,KAAK,GAAG,CAAC;AAC1H,iBAAO;AAAA,QACT;AACA,SAAC,GAAGD,eAAc,SAASK,kBAAiB,CAAC;AAAA,UAC3C,KAAK;AAAA,UACL,OAAO,SAASC,OAAM,YAAYC,QAAOC,QAAO;AAC9C,oBAAQD,QAAO;AAAA,cACb,KAAK;AACH,wBAAQ,GAAG,OAAO,qBAAqB,WAAW,gBAAgB,SAAS,UAAU;AAAA,cACvF,KAAK;AACH,uBAAOC,OAAM,cAAc,YAAY;AAAA,kBACrC,MAAM;AAAA,gBACR,CAAC;AAAA,cACH;AACE,wBAAQ,GAAG,OAAO,cAAcD,OAAM,QAAQ,UAAU;AAAA,YAC5D;AAAA,UACF;AAAA,QACF,GAAG;AAAA,UACD,KAAK;AAAA,UACL,OAAO,SAAS,SAAS,OAAO,OAAO;AACrC,mBAAO,SAAS,KAAK,SAAS;AAAA,UAChC;AAAA,QACF,GAAG;AAAA,UACD,KAAK;AAAA,UACL,OAAO,SAAS,IAAIE,OAAM,QAAQ,OAAO;AACvC,gBAAI,OAAOA,MAAK,YAAY,KAAK;AACjC,gBAAI,QAAQ,QAAQ,IAAI;AACtB,cAAAA,MAAK,YAAY,QAAQ,IAAI,GAAG,GAAG,CAAC;AAAA,YACtC,WAAW,CAAC,QAAQ,UAAU,IAAI;AAChC,cAAAA,MAAK,YAAY,GAAG,GAAG,GAAG,CAAC;AAAA,YAC7B,OAAO;AACL,cAAAA,MAAK,YAAY,OAAO,GAAG,GAAG,CAAC;AAAA,YACjC;AACA,mBAAOA;AAAA,UACT;AAAA,QACF,CAAC,CAAC;AACF,eAAOJ;AAAA,MACT,EAAE,SAAS,MAAM;AACjB,cAAQ,kBAAkB;AAAA;AAAA;;;ACjE1B;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,kBAAkB;AAC1B,UAAIK,oBAAmB,uBAAuB,wBAAgD;AAC9F,UAAIC,iBAAgB,uBAAuB,qBAA6C;AACxF,UAAIC,2BAA0B,uBAAuB,+BAAuD;AAC5G,UAAIC,cAAa,uBAAuB,kBAA0C;AAClF,UAAIC,iBAAgB,uBAAuB,qBAA6C;AACxF,UAAIC,oBAAmB,uBAAuB,wBAAgD;AAC9F,UAAI,WAAW;AACf,UAAI,aAAa;AACjB,UAAI,SAAS;AACb,UAAI,kBAA+B,yBAAU,SAAS;AACpD,SAAC,GAAGF,YAAW,SAASG,kBAAiB,OAAO;AAChD,YAAI,UAAU,GAAGF,eAAc,SAASE,gBAAe;AACvD,iBAASA,mBAAkB;AACzB,cAAI;AACJ,WAAC,GAAGN,kBAAiB,SAAS,MAAMM,gBAAe;AACnD,mBAAS,OAAO,UAAU,QAAQ,OAAO,IAAI,MAAM,IAAI,GAAG,OAAO,GAAG,OAAO,MAAM,QAAQ;AACvF,iBAAK,IAAI,IAAI,UAAU,IAAI;AAAA,UAC7B;AACA,kBAAQ,OAAO,KAAK,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,IAAI,CAAC;AACrD,WAAC,GAAGD,kBAAiB,UAAU,GAAGH,yBAAwB,SAAS,KAAK,GAAG,YAAY,EAAE;AACzF,WAAC,GAAGG,kBAAiB,UAAU,GAAGH,yBAAwB,SAAS,KAAK,GAAG,sBAAsB,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,CAAC;AACpI,iBAAO;AAAA,QACT;AACA,SAAC,GAAGD,eAAc,SAASK,kBAAiB,CAAC;AAAA,UAC3C,KAAK;AAAA,UACL,OAAO,SAASC,OAAM,YAAYC,QAAOC,QAAO;AAC9C,oBAAQD,QAAO;AAAA,cACb,KAAK;AACH,wBAAQ,GAAG,OAAO,qBAAqB,WAAW,gBAAgB,SAAS,UAAU;AAAA,cACvF,KAAK;AACH,uBAAOC,OAAM,cAAc,YAAY;AAAA,kBACrC,MAAM;AAAA,gBACR,CAAC;AAAA,cACH;AACE,wBAAQ,GAAG,OAAO,cAAcD,OAAM,QAAQ,UAAU;AAAA,YAC5D;AAAA,UACF;AAAA,QACF,GAAG;AAAA,UACD,KAAK;AAAA,UACL,OAAO,SAAS,SAAS,OAAO,OAAO;AACrC,mBAAO,SAAS,KAAK,SAAS;AAAA,UAChC;AAAA,QACF,GAAG;AAAA,UACD,KAAK;AAAA,UACL,OAAO,SAAS,IAAIE,OAAM,QAAQ,OAAO;AACvC,YAAAA,MAAK,YAAY,OAAO,GAAG,GAAG,CAAC;AAC/B,mBAAOA;AAAA,UACT;AAAA,QACF,CAAC,CAAC;AACF,eAAOJ;AAAA,MACT,EAAE,SAAS,MAAM;AACjB,cAAQ,kBAAkB;AAAA;AAAA;;;AC1D1B;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,kBAAkB;AAC1B,UAAIK,oBAAmB,uBAAuB,wBAAgD;AAC9F,UAAIC,iBAAgB,uBAAuB,qBAA6C;AACxF,UAAIC,2BAA0B,uBAAuB,+BAAuD;AAC5G,UAAIC,cAAa,uBAAuB,kBAA0C;AAClF,UAAIC,iBAAgB,uBAAuB,qBAA6C;AACxF,UAAIC,oBAAmB,uBAAuB,wBAAgD;AAC9F,UAAI,WAAW;AACf,UAAI,aAAa;AACjB,UAAI,SAAS;AACb,UAAI,kBAA+B,yBAAU,SAAS;AACpD,SAAC,GAAGF,YAAW,SAASG,kBAAiB,OAAO;AAChD,YAAI,UAAU,GAAGF,eAAc,SAASE,gBAAe;AACvD,iBAASA,mBAAkB;AACzB,cAAI;AACJ,WAAC,GAAGN,kBAAiB,SAAS,MAAMM,gBAAe;AACnD,mBAAS,OAAO,UAAU,QAAQ,OAAO,IAAI,MAAM,IAAI,GAAG,OAAO,GAAG,OAAO,MAAM,QAAQ;AACvF,iBAAK,IAAI,IAAI,UAAU,IAAI;AAAA,UAC7B;AACA,kBAAQ,OAAO,KAAK,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,IAAI,CAAC;AACrD,WAAC,GAAGD,kBAAiB,UAAU,GAAGH,yBAAwB,SAAS,KAAK,GAAG,YAAY,EAAE;AACzF,WAAC,GAAGG,kBAAiB,UAAU,GAAGH,yBAAwB,SAAS,KAAK,GAAG,sBAAsB,CAAC,KAAK,KAAK,KAAK,KAAK,GAAG,CAAC;AAC1H,iBAAO;AAAA,QACT;AACA,SAAC,GAAGD,eAAc,SAASK,kBAAiB,CAAC;AAAA,UAC3C,KAAK;AAAA,UACL,OAAO,SAASC,OAAM,YAAYC,QAAOC,QAAO;AAC9C,oBAAQD,QAAO;AAAA,cACb,KAAK;AACH,wBAAQ,GAAG,OAAO,qBAAqB,WAAW,gBAAgB,SAAS,UAAU;AAAA,cACvF,KAAK;AACH,uBAAOC,OAAM,cAAc,YAAY;AAAA,kBACrC,MAAM;AAAA,gBACR,CAAC;AAAA,cACH;AACE,wBAAQ,GAAG,OAAO,cAAcD,OAAM,QAAQ,UAAU;AAAA,YAC5D;AAAA,UACF;AAAA,QACF,GAAG;AAAA,UACD,KAAK;AAAA,UACL,OAAO,SAAS,SAAS,OAAO,OAAO;AACrC,mBAAO,SAAS,KAAK,SAAS;AAAA,UAChC;AAAA,QACF,GAAG;AAAA,UACD,KAAK;AAAA,UACL,OAAO,SAAS,IAAIE,OAAM,QAAQ,OAAO;AACvC,gBAAI,OAAOA,MAAK,YAAY,KAAK;AACjC,gBAAI,QAAQ,QAAQ,IAAI;AACtB,cAAAA,MAAK,YAAY,QAAQ,IAAI,GAAG,GAAG,CAAC;AAAA,YACtC,OAAO;AACL,cAAAA,MAAK,YAAY,OAAO,GAAG,GAAG,CAAC;AAAA,YACjC;AACA,mBAAOA;AAAA,UACT;AAAA,QACF,CAAC,CAAC;AACF,eAAOJ;AAAA,MACT,EAAE,SAAS,MAAM;AACjB,cAAQ,kBAAkB;AAAA;AAAA;;;AC/D1B;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,kBAAkB;AAC1B,UAAIK,oBAAmB,uBAAuB,wBAAgD;AAC9F,UAAIC,iBAAgB,uBAAuB,qBAA6C;AACxF,UAAIC,2BAA0B,uBAAuB,+BAAuD;AAC5G,UAAIC,cAAa,uBAAuB,kBAA0C;AAClF,UAAIC,iBAAgB,uBAAuB,qBAA6C;AACxF,UAAIC,oBAAmB,uBAAuB,wBAAgD;AAC9F,UAAI,WAAW;AACf,UAAI,aAAa;AACjB,UAAI,SAAS;AACb,UAAI,kBAA+B,yBAAU,SAAS;AACpD,SAAC,GAAGF,YAAW,SAASG,kBAAiB,OAAO;AAChD,YAAI,UAAU,GAAGF,eAAc,SAASE,gBAAe;AACvD,iBAASA,mBAAkB;AACzB,cAAI;AACJ,WAAC,GAAGN,kBAAiB,SAAS,MAAMM,gBAAe;AACnD,mBAAS,OAAO,UAAU,QAAQ,OAAO,IAAI,MAAM,IAAI,GAAG,OAAO,GAAG,OAAO,MAAM,QAAQ;AACvF,iBAAK,IAAI,IAAI,UAAU,IAAI;AAAA,UAC7B;AACA,kBAAQ,OAAO,KAAK,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,IAAI,CAAC;AACrD,WAAC,GAAGD,kBAAiB,UAAU,GAAGH,yBAAwB,SAAS,KAAK,GAAG,YAAY,EAAE;AACzF,WAAC,GAAGG,kBAAiB,UAAU,GAAGH,yBAAwB,SAAS,KAAK,GAAG,sBAAsB,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,CAAC;AACpI,iBAAO;AAAA,QACT;AACA,SAAC,GAAGD,eAAc,SAASK,kBAAiB,CAAC;AAAA,UAC3C,KAAK;AAAA,UACL,OAAO,SAASC,OAAM,YAAYC,QAAOC,QAAO;AAC9C,oBAAQD,QAAO;AAAA,cACb,KAAK;AACH,wBAAQ,GAAG,OAAO,qBAAqB,WAAW,gBAAgB,SAAS,UAAU;AAAA,cACvF,KAAK;AACH,uBAAOC,OAAM,cAAc,YAAY;AAAA,kBACrC,MAAM;AAAA,gBACR,CAAC;AAAA,cACH;AACE,wBAAQ,GAAG,OAAO,cAAcD,OAAM,QAAQ,UAAU;AAAA,YAC5D;AAAA,UACF;AAAA,QACF,GAAG;AAAA,UACD,KAAK;AAAA,UACL,OAAO,SAAS,SAAS,OAAO,OAAO;AACrC,mBAAO,SAAS,KAAK,SAAS;AAAA,UAChC;AAAA,QACF,GAAG;AAAA,UACD,KAAK;AAAA,UACL,OAAO,SAAS,IAAIE,OAAM,QAAQ,OAAO;AACvC,gBAAI,QAAQ,SAAS,KAAK,QAAQ,KAAK;AACvC,YAAAA,MAAK,YAAY,OAAO,GAAG,GAAG,CAAC;AAC/B,mBAAOA;AAAA,UACT;AAAA,QACF,CAAC,CAAC;AACF,eAAOJ;AAAA,MACT,EAAE,SAAS,MAAM;AACjB,cAAQ,kBAAkB;AAAA;AAAA;;;AC3D1B;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,eAAe;AACvB,UAAIK,oBAAmB,uBAAuB,wBAAgD;AAC9F,UAAIC,iBAAgB,uBAAuB,qBAA6C;AACxF,UAAIC,2BAA0B,uBAAuB,+BAAuD;AAC5G,UAAIC,cAAa,uBAAuB,kBAA0C;AAClF,UAAIC,iBAAgB,uBAAuB,qBAA6C;AACxF,UAAIC,oBAAmB,uBAAuB,wBAAgD;AAC9F,UAAI,WAAW;AACf,UAAI,aAAa;AACjB,UAAI,SAAS;AACb,UAAI,eAA4B,yBAAU,SAAS;AACjD,SAAC,GAAGF,YAAW,SAASG,eAAc,OAAO;AAC7C,YAAI,UAAU,GAAGF,eAAc,SAASE,aAAY;AACpD,iBAASA,gBAAe;AACtB,cAAI;AACJ,WAAC,GAAGN,kBAAiB,SAAS,MAAMM,aAAY;AAChD,mBAAS,OAAO,UAAU,QAAQ,OAAO,IAAI,MAAM,IAAI,GAAG,OAAO,GAAG,OAAO,MAAM,QAAQ;AACvF,iBAAK,IAAI,IAAI,UAAU,IAAI;AAAA,UAC7B;AACA,kBAAQ,OAAO,KAAK,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,IAAI,CAAC;AACrD,WAAC,GAAGD,kBAAiB,UAAU,GAAGH,yBAAwB,SAAS,KAAK,GAAG,YAAY,EAAE;AACzF,WAAC,GAAGG,kBAAiB,UAAU,GAAGH,yBAAwB,SAAS,KAAK,GAAG,sBAAsB,CAAC,KAAK,GAAG,CAAC;AAC3G,iBAAO;AAAA,QACT;AACA,SAAC,GAAGD,eAAc,SAASK,eAAc,CAAC;AAAA,UACxC,KAAK;AAAA,UACL,OAAO,SAASC,OAAM,YAAYC,QAAOC,QAAO;AAC9C,oBAAQD,QAAO;AAAA,cACb,KAAK;AACH,wBAAQ,GAAG,OAAO,qBAAqB,WAAW,gBAAgB,QAAQ,UAAU;AAAA,cACtF,KAAK;AACH,uBAAOC,OAAM,cAAc,YAAY;AAAA,kBACrC,MAAM;AAAA,gBACR,CAAC;AAAA,cACH;AACE,wBAAQ,GAAG,OAAO,cAAcD,OAAM,QAAQ,UAAU;AAAA,YAC5D;AAAA,UACF;AAAA,QACF,GAAG;AAAA,UACD,KAAK;AAAA,UACL,OAAO,SAAS,SAAS,OAAO,OAAO;AACrC,mBAAO,SAAS,KAAK,SAAS;AAAA,UAChC;AAAA,QACF,GAAG;AAAA,UACD,KAAK;AAAA,UACL,OAAO,SAAS,IAAIE,OAAM,QAAQ,OAAO;AACvC,YAAAA,MAAK,cAAc,OAAO,GAAG,CAAC;AAC9B,mBAAOA;AAAA,UACT;AAAA,QACF,CAAC,CAAC;AACF,eAAOJ;AAAA,MACT,EAAE,SAAS,MAAM;AACjB,cAAQ,eAAe;AAAA;AAAA;;;AC1DvB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,eAAe;AACvB,UAAIK,oBAAmB,uBAAuB,wBAAgD;AAC9F,UAAIC,iBAAgB,uBAAuB,qBAA6C;AACxF,UAAIC,2BAA0B,uBAAuB,+BAAuD;AAC5G,UAAIC,cAAa,uBAAuB,kBAA0C;AAClF,UAAIC,iBAAgB,uBAAuB,qBAA6C;AACxF,UAAIC,oBAAmB,uBAAuB,wBAAgD;AAC9F,UAAI,WAAW;AACf,UAAI,aAAa;AACjB,UAAI,SAAS;AACb,UAAI,eAA4B,yBAAU,SAAS;AACjD,SAAC,GAAGF,YAAW,SAASG,eAAc,OAAO;AAC7C,YAAI,UAAU,GAAGF,eAAc,SAASE,aAAY;AACpD,iBAASA,gBAAe;AACtB,cAAI;AACJ,WAAC,GAAGN,kBAAiB,SAAS,MAAMM,aAAY;AAChD,mBAAS,OAAO,UAAU,QAAQ,OAAO,IAAI,MAAM,IAAI,GAAG,OAAO,GAAG,OAAO,MAAM,QAAQ;AACvF,iBAAK,IAAI,IAAI,UAAU,IAAI;AAAA,UAC7B;AACA,kBAAQ,OAAO,KAAK,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,IAAI,CAAC;AACrD,WAAC,GAAGD,kBAAiB,UAAU,GAAGH,yBAAwB,SAAS,KAAK,GAAG,YAAY,EAAE;AACzF,WAAC,GAAGG,kBAAiB,UAAU,GAAGH,yBAAwB,SAAS,KAAK,GAAG,sBAAsB,CAAC,KAAK,GAAG,CAAC;AAC3G,iBAAO;AAAA,QACT;AACA,SAAC,GAAGD,eAAc,SAASK,eAAc,CAAC;AAAA,UACxC,KAAK;AAAA,UACL,OAAO,SAASC,OAAM,YAAYC,QAAOC,QAAO;AAC9C,oBAAQD,QAAO;AAAA,cACb,KAAK;AACH,wBAAQ,GAAG,OAAO,qBAAqB,WAAW,gBAAgB,QAAQ,UAAU;AAAA,cACtF,KAAK;AACH,uBAAOC,OAAM,cAAc,YAAY;AAAA,kBACrC,MAAM;AAAA,gBACR,CAAC;AAAA,cACH;AACE,wBAAQ,GAAG,OAAO,cAAcD,OAAM,QAAQ,UAAU;AAAA,YAC5D;AAAA,UACF;AAAA,QACF,GAAG;AAAA,UACD,KAAK;AAAA,UACL,OAAO,SAAS,SAAS,OAAO,OAAO;AACrC,mBAAO,SAAS,KAAK,SAAS;AAAA,UAChC;AAAA,QACF,GAAG;AAAA,UACD,KAAK;AAAA,UACL,OAAO,SAAS,IAAIE,OAAM,QAAQ,OAAO;AACvC,YAAAA,MAAK,cAAc,OAAO,CAAC;AAC3B,mBAAOA;AAAA,UACT;AAAA,QACF,CAAC,CAAC;AACF,eAAOJ;AAAA,MACT,EAAE,SAAS,MAAM;AACjB,cAAQ,eAAe;AAAA;AAAA;;;AC1DvB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,yBAAyB;AACjC,UAAIK,oBAAmB,uBAAuB,wBAAgD;AAC9F,UAAIC,iBAAgB,uBAAuB,qBAA6C;AACxF,UAAIC,2BAA0B,uBAAuB,+BAAuD;AAC5G,UAAIC,cAAa,uBAAuB,kBAA0C;AAClF,UAAIC,iBAAgB,uBAAuB,qBAA6C;AACxF,UAAIC,oBAAmB,uBAAuB,wBAAgD;AAC9F,UAAI,WAAW;AACf,UAAI,SAAS;AACb,UAAI,yBAAsC,yBAAU,SAAS;AAC3D,SAAC,GAAGF,YAAW,SAASG,yBAAwB,OAAO;AACvD,YAAI,UAAU,GAAGF,eAAc,SAASE,uBAAsB;AAC9D,iBAASA,0BAAyB;AAChC,cAAI;AACJ,WAAC,GAAGN,kBAAiB,SAAS,MAAMM,uBAAsB;AAC1D,mBAAS,OAAO,UAAU,QAAQ,OAAO,IAAI,MAAM,IAAI,GAAG,OAAO,GAAG,OAAO,MAAM,QAAQ;AACvF,iBAAK,IAAI,IAAI,UAAU,IAAI;AAAA,UAC7B;AACA,kBAAQ,OAAO,KAAK,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,IAAI,CAAC;AACrD,WAAC,GAAGD,kBAAiB,UAAU,GAAGH,yBAAwB,SAAS,KAAK,GAAG,YAAY,EAAE;AACzF,WAAC,GAAGG,kBAAiB,UAAU,GAAGH,yBAAwB,SAAS,KAAK,GAAG,sBAAsB,CAAC,KAAK,GAAG,CAAC;AAC3G,iBAAO;AAAA,QACT;AACA,SAAC,GAAGD,eAAc,SAASK,yBAAwB,CAAC;AAAA,UAClD,KAAK;AAAA,UACL,OAAO,SAASC,OAAM,YAAYC,QAAO;AACvC,gBAAI,gBAAgB,SAASC,eAAc,OAAO;AAChD,qBAAO,KAAK,MAAM,QAAQ,KAAK,IAAI,IAAI,CAACD,OAAM,SAAS,CAAC,CAAC;AAAA,YAC3D;AACA,oBAAQ,GAAG,OAAO,WAAW,GAAG,OAAO,cAAcA,OAAM,QAAQ,UAAU,GAAG,aAAa;AAAA,UAC/F;AAAA,QACF,GAAG;AAAA,UACD,KAAK;AAAA,UACL,OAAO,SAAS,IAAIE,OAAM,QAAQ,OAAO;AACvC,YAAAA,MAAK,mBAAmB,KAAK;AAC7B,mBAAOA;AAAA,UACT;AAAA,QACF,CAAC,CAAC;AACF,eAAOJ;AAAA,MACT,EAAE,SAAS,MAAM;AACjB,cAAQ,yBAAyB;AAAA;AAAA;;;AC9CjC;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,yBAAyB;AACjC,UAAIK,oBAAmB,uBAAuB,wBAAgD;AAC9F,UAAIC,iBAAgB,uBAAuB,qBAA6C;AACxF,UAAIC,2BAA0B,uBAAuB,+BAAuD;AAC5G,UAAIC,cAAa,uBAAuB,kBAA0C;AAClF,UAAIC,iBAAgB,uBAAuB,qBAA6C;AACxF,UAAIC,oBAAmB,uBAAuB,wBAAgD;AAC9F,UAAI,WAAW;AACf,UAAI,aAAa;AACjB,UAAI,SAAS;AAEb,UAAI,yBAAsC,yBAAU,SAAS;AAC3D,SAAC,GAAGF,YAAW,SAASG,yBAAwB,OAAO;AACvD,YAAI,UAAU,GAAGF,eAAc,SAASE,uBAAsB;AAC9D,iBAASA,0BAAyB;AAChC,cAAI;AACJ,WAAC,GAAGN,kBAAiB,SAAS,MAAMM,uBAAsB;AAC1D,mBAAS,OAAO,UAAU,QAAQ,OAAO,IAAI,MAAM,IAAI,GAAG,OAAO,GAAG,OAAO,MAAM,QAAQ;AACvF,iBAAK,IAAI,IAAI,UAAU,IAAI;AAAA,UAC7B;AACA,kBAAQ,OAAO,KAAK,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,IAAI,CAAC;AACrD,WAAC,GAAGD,kBAAiB,UAAU,GAAGH,yBAAwB,SAAS,KAAK,GAAG,YAAY,EAAE;AACzF,WAAC,GAAGG,kBAAiB,UAAU,GAAGH,yBAAwB,SAAS,KAAK,GAAG,sBAAsB,CAAC,KAAK,KAAK,GAAG,CAAC;AAChH,iBAAO;AAAA,QACT;AACA,SAAC,GAAGD,eAAc,SAASK,yBAAwB,CAAC;AAAA,UAClD,KAAK;AAAA,UACL,OAAO,SAASC,OAAM,YAAYC,QAAO;AACvC,oBAAQA,QAAO;AAAA,cACb,KAAK;AACH,wBAAQ,GAAG,OAAO,sBAAsB,WAAW,iBAAiB,sBAAsB,UAAU;AAAA,cACtG,KAAK;AACH,wBAAQ,GAAG,OAAO,sBAAsB,WAAW,iBAAiB,OAAO,UAAU;AAAA,cACvF,KAAK;AACH,wBAAQ,GAAG,OAAO,sBAAsB,WAAW,iBAAiB,sBAAsB,UAAU;AAAA,cACtG,KAAK;AACH,wBAAQ,GAAG,OAAO,sBAAsB,WAAW,iBAAiB,yBAAyB,UAAU;AAAA,cACzG,KAAK;AAAA,cACL;AACE,wBAAQ,GAAG,OAAO,sBAAsB,WAAW,iBAAiB,UAAU,UAAU;AAAA,YAC5F;AAAA,UACF;AAAA,QACF,GAAG;AAAA,UACD,KAAK;AAAA,UACL,OAAO,SAAS,IAAIC,OAAM,OAAO,OAAO;AACtC,gBAAI,MAAM,gBAAgB;AACxB,qBAAOA;AAAA,YACT;AACA,mBAAO,IAAI,KAAKA,MAAK,QAAQ,IAAI,KAAK;AAAA,UACxC;AAAA,QACF,CAAC,CAAC;AACF,eAAOH;AAAA,MACT,EAAE,SAAS,MAAM;AACjB,cAAQ,yBAAyB;AAAA;AAAA;;;AC3DjC;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,oBAAoB;AAC5B,UAAII,oBAAmB,uBAAuB,wBAAgD;AAC9F,UAAIC,iBAAgB,uBAAuB,qBAA6C;AACxF,UAAIC,2BAA0B,uBAAuB,+BAAuD;AAC5G,UAAIC,cAAa,uBAAuB,kBAA0C;AAClF,UAAIC,iBAAgB,uBAAuB,qBAA6C;AACxF,UAAIC,oBAAmB,uBAAuB,wBAAgD;AAC9F,UAAI,WAAW;AACf,UAAI,aAAa;AACjB,UAAI,SAAS;AAEb,UAAI,oBAAiC,yBAAU,SAAS;AACtD,SAAC,GAAGF,YAAW,SAASG,oBAAmB,OAAO;AAClD,YAAI,UAAU,GAAGF,eAAc,SAASE,kBAAiB;AACzD,iBAASA,qBAAoB;AAC3B,cAAI;AACJ,WAAC,GAAGN,kBAAiB,SAAS,MAAMM,kBAAiB;AACrD,mBAAS,OAAO,UAAU,QAAQ,OAAO,IAAI,MAAM,IAAI,GAAG,OAAO,GAAG,OAAO,MAAM,QAAQ;AACvF,iBAAK,IAAI,IAAI,UAAU,IAAI;AAAA,UAC7B;AACA,kBAAQ,OAAO,KAAK,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,IAAI,CAAC;AACrD,WAAC,GAAGD,kBAAiB,UAAU,GAAGH,yBAAwB,SAAS,KAAK,GAAG,YAAY,EAAE;AACzF,WAAC,GAAGG,kBAAiB,UAAU,GAAGH,yBAAwB,SAAS,KAAK,GAAG,sBAAsB,CAAC,KAAK,KAAK,GAAG,CAAC;AAChH,iBAAO;AAAA,QACT;AACA,SAAC,GAAGD,eAAc,SAASK,oBAAmB,CAAC;AAAA,UAC7C,KAAK;AAAA,UACL,OAAO,SAASC,OAAM,YAAYC,QAAO;AACvC,oBAAQA,QAAO;AAAA,cACb,KAAK;AACH,wBAAQ,GAAG,OAAO,sBAAsB,WAAW,iBAAiB,sBAAsB,UAAU;AAAA,cACtG,KAAK;AACH,wBAAQ,GAAG,OAAO,sBAAsB,WAAW,iBAAiB,OAAO,UAAU;AAAA,cACvF,KAAK;AACH,wBAAQ,GAAG,OAAO,sBAAsB,WAAW,iBAAiB,sBAAsB,UAAU;AAAA,cACtG,KAAK;AACH,wBAAQ,GAAG,OAAO,sBAAsB,WAAW,iBAAiB,yBAAyB,UAAU;AAAA,cACzG,KAAK;AAAA,cACL;AACE,wBAAQ,GAAG,OAAO,sBAAsB,WAAW,iBAAiB,UAAU,UAAU;AAAA,YAC5F;AAAA,UACF;AAAA,QACF,GAAG;AAAA,UACD,KAAK;AAAA,UACL,OAAO,SAAS,IAAIC,OAAM,OAAO,OAAO;AACtC,gBAAI,MAAM,gBAAgB;AACxB,qBAAOA;AAAA,YACT;AACA,mBAAO,IAAI,KAAKA,MAAK,QAAQ,IAAI,KAAK;AAAA,UACxC;AAAA,QACF,CAAC,CAAC;AACF,eAAOH;AAAA,MACT,EAAE,SAAS,MAAM;AACjB,cAAQ,oBAAoB;AAAA;AAAA;;;AC3D5B;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,yBAAyB;AACjC,UAAII,oBAAmB,uBAAuB,wBAAgD;AAC9F,UAAIC,iBAAgB,uBAAuB,qBAA6C;AACxF,UAAIC,2BAA0B,uBAAuB,+BAAuD;AAC5G,UAAIC,cAAa,uBAAuB,kBAA0C;AAClF,UAAIC,iBAAgB,uBAAuB,qBAA6C;AACxF,UAAIC,oBAAmB,uBAAuB,wBAAgD;AAC9F,UAAI,WAAW;AACf,UAAI,SAAS;AACb,UAAI,yBAAsC,yBAAU,SAAS;AAC3D,SAAC,GAAGF,YAAW,SAASG,yBAAwB,OAAO;AACvD,YAAI,UAAU,GAAGF,eAAc,SAASE,uBAAsB;AAC9D,iBAASA,0BAAyB;AAChC,cAAI;AACJ,WAAC,GAAGN,kBAAiB,SAAS,MAAMM,uBAAsB;AAC1D,mBAAS,OAAO,UAAU,QAAQ,OAAO,IAAI,MAAM,IAAI,GAAG,OAAO,GAAG,OAAO,MAAM,QAAQ;AACvF,iBAAK,IAAI,IAAI,UAAU,IAAI;AAAA,UAC7B;AACA,kBAAQ,OAAO,KAAK,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,IAAI,CAAC;AACrD,WAAC,GAAGD,kBAAiB,UAAU,GAAGH,yBAAwB,SAAS,KAAK,GAAG,YAAY,EAAE;AACzF,WAAC,GAAGG,kBAAiB,UAAU,GAAGH,yBAAwB,SAAS,KAAK,GAAG,sBAAsB,GAAG;AACpG,iBAAO;AAAA,QACT;AACA,SAAC,GAAGD,eAAc,SAASK,yBAAwB,CAAC;AAAA,UAClD,KAAK;AAAA,UACL,OAAO,SAASC,OAAM,YAAY;AAChC,oBAAQ,GAAG,OAAO,sBAAsB,UAAU;AAAA,UACpD;AAAA,QACF,GAAG;AAAA,UACD,KAAK;AAAA,UACL,OAAO,SAAS,IAAI,OAAO,QAAQ,OAAO;AACxC,mBAAO,CAAC,IAAI,KAAK,QAAQ,GAAI,GAAG;AAAA,cAC9B,gBAAgB;AAAA,YAClB,CAAC;AAAA,UACH;AAAA,QACF,CAAC,CAAC;AACF,eAAOD;AAAA,MACT,EAAE,SAAS,MAAM;AACjB,cAAQ,yBAAyB;AAAA;AAAA;;;AC5CjC;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,8BAA8B;AACtC,UAAIE,oBAAmB,uBAAuB,wBAAgD;AAC9F,UAAIC,iBAAgB,uBAAuB,qBAA6C;AACxF,UAAIC,2BAA0B,uBAAuB,+BAAuD;AAC5G,UAAIC,cAAa,uBAAuB,kBAA0C;AAClF,UAAIC,iBAAgB,uBAAuB,qBAA6C;AACxF,UAAIC,oBAAmB,uBAAuB,wBAAgD;AAC9F,UAAI,WAAW;AACf,UAAI,SAAS;AACb,UAAI,8BAA2C,yBAAU,SAAS;AAChE,SAAC,GAAGF,YAAW,SAASG,8BAA6B,OAAO;AAC5D,YAAI,UAAU,GAAGF,eAAc,SAASE,4BAA2B;AACnE,iBAASA,+BAA8B;AACrC,cAAI;AACJ,WAAC,GAAGN,kBAAiB,SAAS,MAAMM,4BAA2B;AAC/D,mBAAS,OAAO,UAAU,QAAQ,OAAO,IAAI,MAAM,IAAI,GAAG,OAAO,GAAG,OAAO,MAAM,QAAQ;AACvF,iBAAK,IAAI,IAAI,UAAU,IAAI;AAAA,UAC7B;AACA,kBAAQ,OAAO,KAAK,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,IAAI,CAAC;AACrD,WAAC,GAAGD,kBAAiB,UAAU,GAAGH,yBAAwB,SAAS,KAAK,GAAG,YAAY,EAAE;AACzF,WAAC,GAAGG,kBAAiB,UAAU,GAAGH,yBAAwB,SAAS,KAAK,GAAG,sBAAsB,GAAG;AACpG,iBAAO;AAAA,QACT;AACA,SAAC,GAAGD,eAAc,SAASK,8BAA6B,CAAC;AAAA,UACvD,KAAK;AAAA,UACL,OAAO,SAASC,OAAM,YAAY;AAChC,oBAAQ,GAAG,OAAO,sBAAsB,UAAU;AAAA,UACpD;AAAA,QACF,GAAG;AAAA,UACD,KAAK;AAAA,UACL,OAAO,SAAS,IAAI,OAAO,QAAQ,OAAO;AACxC,mBAAO,CAAC,IAAI,KAAK,KAAK,GAAG;AAAA,cACvB,gBAAgB;AAAA,YAClB,CAAC;AAAA,UACH;AAAA,QACF,CAAC,CAAC;AACF,eAAOD;AAAA,MACT,EAAE,SAAS,MAAM;AACjB,cAAQ,8BAA8B;AAAA;AAAA;;;AC5CtC;AAAA;AAAA;AAEA,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,UAAI,aAAa;AACjB,UAAI,cAAc;AAClB,UAAI,uBAAuB;AAC3B,UAAI,qBAAqB;AACzB,UAAI,sBAAsB;AAC1B,UAAI,iBAAiB;AACrB,UAAI,2BAA2B;AAC/B,UAAI,eAAe;AACnB,UAAI,yBAAyB;AAC7B,UAAI,mBAAmB;AACvB,UAAI,iBAAiB;AACrB,UAAI,cAAc;AAClB,UAAI,mBAAmB;AACvB,UAAI,aAAa;AACjB,UAAI,kBAAkB;AACtB,UAAI,4BAA4B;AAChC,UAAI,gBAAgB;AACpB,UAAI,cAAc;AAClB,UAAI,sBAAsB;AAC1B,UAAI,mBAAmB;AACvB,UAAI,mBAAmB;AACvB,UAAI,mBAAmB;AACvB,UAAI,mBAAmB;AACvB,UAAI,mBAAmB;AACvB,UAAI,gBAAgB;AACpB,UAAI,gBAAgB;AACpB,UAAI,0BAA0B;AAC9B,UAAI,0BAA0B;AAC9B,UAAI,qBAAqB;AACzB,UAAI,0BAA0B;AAC9B,UAAI,+BAA+B;AA4CnC,UAAI,UAAU;AAAA,QACZ,GAAG,IAAI,WAAW,UAAU;AAAA,QAC5B,GAAG,IAAI,YAAY,WAAW;AAAA,QAC9B,GAAG,IAAI,qBAAqB,oBAAoB;AAAA,QAChD,GAAG,IAAI,mBAAmB,kBAAkB;AAAA,QAC5C,GAAG,IAAI,oBAAoB,mBAAmB;AAAA,QAC9C,GAAG,IAAI,eAAe,cAAc;AAAA,QACpC,GAAG,IAAI,yBAAyB,wBAAwB;AAAA,QACxD,GAAG,IAAI,aAAa,YAAY;AAAA,QAChC,GAAG,IAAI,uBAAuB,sBAAsB;AAAA,QACpD,GAAG,IAAI,iBAAiB,gBAAgB;AAAA,QACxC,GAAG,IAAI,eAAe,cAAc;AAAA,QACpC,GAAG,IAAI,YAAY,WAAW;AAAA,QAC9B,GAAG,IAAI,iBAAiB,gBAAgB;AAAA,QACxC,GAAG,IAAI,WAAW,UAAU;AAAA,QAC5B,GAAG,IAAI,gBAAgB,eAAe;AAAA,QACtC,GAAG,IAAI,0BAA0B,yBAAyB;AAAA,QAC1D,GAAG,IAAI,cAAc,aAAa;AAAA,QAClC,GAAG,IAAI,YAAY,WAAW;AAAA,QAC9B,GAAG,IAAI,oBAAoB,mBAAmB;AAAA,QAC9C,GAAG,IAAI,iBAAiB,gBAAgB;AAAA,QACxC,GAAG,IAAI,iBAAiB,gBAAgB;AAAA,QACxC,GAAG,IAAI,iBAAiB,gBAAgB;AAAA,QACxC,GAAG,IAAI,iBAAiB,gBAAgB;AAAA,QACxC,GAAG,IAAI,iBAAiB,gBAAgB;AAAA,QACxC,GAAG,IAAI,cAAc,aAAa;AAAA,QAClC,GAAG,IAAI,cAAc,aAAa;AAAA,QAClC,GAAG,IAAI,wBAAwB,uBAAuB;AAAA,QACtD,GAAG,IAAI,wBAAwB,uBAAuB;AAAA,QACtD,GAAG,IAAI,mBAAmB,kBAAkB;AAAA,QAC5C,GAAG,IAAI,wBAAwB,uBAAuB;AAAA,QACtD,GAAG,IAAI,6BAA6B,4BAA4B;AAAA,MAClE;AACA,cAAQ,UAAU;AAAA;AAAA;;;ACjHlB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAUE;AAClB,UAAI,WAAW,uBAAuB,gBAAwC;AAC9E,UAAI,8BAA8B,uBAAuB,mCAA2D;AACpH,UAAI,SAAS,uBAAuB,uBAAyC;AAC7E,UAAI,UAAU,uBAAuB,yBAAsC;AAC3E,UAAI,UAAU,uBAAuB,gBAA6B;AAClE,UAAI,UAAU,uBAAuB,gBAAkC;AACvE,UAAI,UAAU,uBAAuB,wBAAiD;AACtF,UAAI,UAAU,uBAAuB,yCAA2D;AAChG,UAAI,UAAU;AACd,UAAI,UAAU,uBAAuB,mBAAqC;AAC1E,UAAI,UAAU,uBAAuB,sBAAwC;AAC7E,UAAI,UAAU;AACd,UAAI,WAAW;AACf,UAAI,WAAW;AAYf,UAAI,yBAAyB;AAI7B,UAAI,6BAA6B;AACjC,UAAI,sBAAsB;AAC1B,UAAI,oBAAoB;AACxB,UAAI,sBAAsB;AAC1B,UAAI,gCAAgC;AA+SpC,eAASA,OAAM,iBAAiB,mBAAmB,oBAAoBC,UAAS;AAC9E,YAAIC,OAAM,iBAAiBC,QAAOC,QAAO,OAAO,uBAAuB,kBAAkB,uBAAuB,uBAAuB,wBAAwB,OAAO,OAAO,OAAO,uBAAuB,kBAAkB,uBAAuB,wBAAwB;AAC5Q,SAAC,GAAG,QAAQ,SAAS,GAAG,SAAS;AACjC,YAAI,aAAa,OAAO,eAAe;AACvC,YAAI,eAAe,OAAO,iBAAiB;AAC3C,YAAI,kBAAkB,GAAG,SAAS,mBAAmB;AACrD,YAAIC,WAAUH,SAAQ,kBAAkBD,aAAY,QAAQA,aAAY,SAAS,SAASA,SAAQ,YAAY,QAAQ,oBAAoB,SAAS,kBAAkB,eAAe,YAAY,QAAQC,UAAS,SAASA,QAAO,OAAO;AACxO,YAAI,CAACG,QAAO,OAAO;AACjB,gBAAM,IAAI,WAAW,oCAAoC;AAAA,QAC3D;AACA,YAAI,yBAAyB,GAAG,QAAQ,UAAUF,UAASC,UAAS,SAAS,wBAAwBH,aAAY,QAAQA,aAAY,SAAS,SAASA,SAAQ,2BAA2B,QAAQ,0BAA0B,SAAS,wBAAwBA,aAAY,QAAQA,aAAY,SAAS,UAAU,mBAAmBA,SAAQ,YAAY,QAAQ,qBAAqB,SAAS,UAAU,wBAAwB,iBAAiB,aAAa,QAAQ,0BAA0B,SAAS,SAAS,sBAAsB,2BAA2B,QAAQ,UAAU,SAAS,QAAQ,eAAe,2BAA2B,QAAQG,WAAU,SAASA,UAAS,wBAAwB,eAAe,YAAY,QAAQ,0BAA0B,SAAS,UAAU,yBAAyB,sBAAsB,aAAa,QAAQ,2BAA2B,SAAS,SAAS,uBAAuB,2BAA2B,QAAQD,WAAU,SAASA,SAAQ,CAAC;AAGl8B,YAAI,EAAE,yBAAyB,KAAK,yBAAyB,IAAI;AAC/D,gBAAM,IAAI,WAAW,2DAA2D;AAAA,QAClF;AACA,YAAI,gBAAgB,GAAG,QAAQ,UAAU,SAAS,SAAS,SAAS,wBAAwBF,aAAY,QAAQA,aAAY,SAAS,SAASA,SAAQ,kBAAkB,QAAQ,0BAA0B,SAAS,wBAAwBA,aAAY,QAAQA,aAAY,SAAS,UAAU,mBAAmBA,SAAQ,YAAY,QAAQ,qBAAqB,SAAS,UAAU,wBAAwB,iBAAiB,aAAa,QAAQ,0BAA0B,SAAS,SAAS,sBAAsB,kBAAkB,QAAQ,UAAU,SAAS,QAAQ,eAAe,kBAAkB,QAAQ,UAAU,SAAS,SAAS,yBAAyB,eAAe,YAAY,QAAQ,2BAA2B,SAAS,UAAU,yBAAyB,uBAAuB,aAAa,QAAQ,2BAA2B,SAAS,SAAS,uBAAuB,kBAAkB,QAAQ,UAAU,SAAS,QAAQ,CAAC;AAGx5B,YAAI,EAAE,gBAAgB,KAAK,gBAAgB,IAAI;AAC7C,gBAAM,IAAI,WAAW,kDAAkD;AAAA,QACzE;AACA,YAAI,iBAAiB,IAAI;AACvB,cAAI,eAAe,IAAI;AACrB,oBAAQ,GAAG,QAAQ,SAAS,kBAAkB;AAAA,UAChD,OAAO;AACL,mBAAO,oBAAI,KAAK,GAAG;AAAA,UACrB;AAAA,QACF;AACA,YAAI,eAAe;AAAA,UACjB;AAAA,UACA;AAAA,UACA,QAAQI;AAAA,QACV;AAGA,YAAI,UAAU,CAAC,IAAI,QAAQ,2BAA2B,CAAC;AACvD,YAAI,SAAS,aAAa,MAAM,0BAA0B,EAAE,IAAI,SAAU,WAAW;AACnF,cAAI,iBAAiB,UAAU,CAAC;AAChC,cAAI,kBAAkB,QAAQ,SAAS;AACrC,gBAAI,gBAAgB,QAAQ,QAAQ,cAAc;AAClD,mBAAO,cAAc,WAAWA,QAAO,UAAU;AAAA,UACnD;AACA,iBAAO;AAAA,QACT,CAAC,EAAE,KAAK,EAAE,EAAE,MAAM,sBAAsB;AACxC,YAAI,aAAa,CAAC;AAClB,YAAI,aAAa,GAAG,4BAA4B,SAAS,MAAM,GAC7D;AACF,YAAI;AACF,cAAI,QAAQ,SAASC,SAAQ;AAC3B,gBAAIC,SAAQ,MAAM;AAClB,gBAAI,EAAEN,aAAY,QAAQA,aAAY,UAAUA,SAAQ,iCAAiC,GAAG,QAAQ,0BAA0BM,MAAK,GAAG;AACpI,eAAC,GAAG,QAAQ,qBAAqBA,QAAO,cAAc,eAAe;AAAA,YACvE;AACA,gBAAI,EAAEN,aAAY,QAAQA,aAAY,UAAUA,SAAQ,kCAAkC,GAAG,QAAQ,2BAA2BM,MAAK,GAAG;AACtI,eAAC,GAAG,QAAQ,qBAAqBA,QAAO,cAAc,eAAe;AAAA,YACvE;AACA,gBAAI,iBAAiBA,OAAM,CAAC;AAC5B,gBAAI,SAAS,SAAS,QAAQ,cAAc;AAC5C,gBAAI,QAAQ;AACV,kBAAI,qBAAqB,OAAO;AAChC,kBAAI,MAAM,QAAQ,kBAAkB,GAAG;AACrC,oBAAI,oBAAoB,WAAW,KAAK,SAAU,WAAW;AAC3D,yBAAO,mBAAmB,SAAS,UAAU,KAAK,KAAK,UAAU,UAAU;AAAA,gBAC7E,CAAC;AACD,oBAAI,mBAAmB;AACrB,wBAAM,IAAI,WAAW,sCAAsC,OAAO,kBAAkB,WAAW,SAAS,EAAE,OAAOA,QAAO,oBAAoB,CAAC;AAAA,gBAC/I;AAAA,cACF,WAAW,OAAO,uBAAuB,OAAO,WAAW,SAAS,GAAG;AACrE,sBAAM,IAAI,WAAW,sCAAsC,OAAOA,QAAO,wCAAwC,CAAC;AAAA,cACpH;AACA,yBAAW,KAAK;AAAA,gBACd,OAAO;AAAA,gBACP,WAAWA;AAAA,cACb,CAAC;AACD,kBAAI,cAAc,OAAO,IAAI,YAAYA,QAAOF,QAAO,OAAO,YAAY;AAC1E,kBAAI,CAAC,aAAa;AAChB,uBAAO;AAAA,kBACL,GAAG,oBAAI,KAAK,GAAG;AAAA,gBACjB;AAAA,cACF;AACA,sBAAQ,KAAK,YAAY,MAAM;AAC/B,2BAAa,YAAY;AAAA,YAC3B,OAAO;AACL,kBAAI,eAAe,MAAM,6BAA6B,GAAG;AACvD,sBAAM,IAAI,WAAW,mEAAmE,iBAAiB,GAAG;AAAA,cAC9G;AAGA,kBAAIE,WAAU,MAAM;AAClB,gBAAAA,SAAQ;AAAA,cACV,WAAW,mBAAmB,KAAK;AACjC,gBAAAA,SAAQ,mBAAmBA,MAAK;AAAA,cAClC;AAGA,kBAAI,WAAW,QAAQA,MAAK,MAAM,GAAG;AACnC,6BAAa,WAAW,MAAMA,OAAM,MAAM;AAAA,cAC5C,OAAO;AACL,uBAAO;AAAA,kBACL,GAAG,oBAAI,KAAK,GAAG;AAAA,gBACjB;AAAA,cACF;AAAA,YACF;AAAA,UACF;AACA,eAAK,UAAU,EAAE,GAAG,EAAE,QAAQ,UAAU,EAAE,GAAG,QAAO;AAClD,gBAAI,OAAO,MAAM;AACjB,iBAAK,GAAG,SAAS,SAAS,IAAI,MAAM;AAAU,qBAAO,KAAK;AAAA,UAC5D;AAAA,QAGF,SAAS,KAAK;AACZ,oBAAU,EAAE,GAAG;AAAA,QACjB,UAAE;AACA,oBAAU,EAAE;AAAA,QACd;AACA,YAAI,WAAW,SAAS,KAAK,oBAAoB,KAAK,UAAU,GAAG;AACjE,iBAAO,oBAAI,KAAK,GAAG;AAAA,QACrB;AACA,YAAI,wBAAwB,QAAQ,IAAI,SAAUC,SAAQ;AACxD,iBAAOA,QAAO;AAAA,QAChB,CAAC,EAAE,KAAK,SAAUC,IAAG,GAAG;AACtB,iBAAO,IAAIA;AAAA,QACb,CAAC,EAAE,OAAO,SAAU,UAAUC,QAAO,OAAO;AAC1C,iBAAO,MAAM,QAAQ,QAAQ,MAAMA;AAAA,QACrC,CAAC,EAAE,IAAI,SAAU,UAAU;AACzB,iBAAO,QAAQ,OAAO,SAAUF,SAAQ;AACtC,mBAAOA,QAAO,aAAa;AAAA,UAC7B,CAAC,EAAE,KAAK,SAAUC,IAAG,GAAG;AACtB,mBAAO,EAAE,cAAcA,GAAE;AAAA,UAC3B,CAAC;AAAA,QACH,CAAC,EAAE,IAAI,SAAU,aAAa;AAC5B,iBAAO,YAAY,CAAC;AAAA,QACtB,CAAC;AACD,YAAIE,SAAQ,GAAG,QAAQ,SAAS,kBAAkB;AAClD,YAAI,MAAMA,MAAK,QAAQ,CAAC,GAAG;AACzB,iBAAO,oBAAI,KAAK,GAAG;AAAA,QACrB;AAGA,YAAIC,YAAW,GAAG,QAAQ,SAASD,QAAO,GAAG,QAAQ,SAASA,KAAI,CAAC;AACnE,YAAI,QAAQ,CAAC;AACb,YAAI,cAAc,GAAG,4BAA4B,SAAS,qBAAqB,GAC7E;AACF,YAAI;AACF,eAAK,WAAW,EAAE,GAAG,EAAE,SAAS,WAAW,EAAE,GAAG,QAAO;AACrD,gBAAI,SAAS,OAAO;AACpB,gBAAI,CAAC,OAAO,SAASC,UAAS,YAAY,GAAG;AAC3C,qBAAO,oBAAI,KAAK,GAAG;AAAA,YACrB;AACA,gBAAI,SAAS,OAAO,IAAIA,UAAS,OAAO,YAAY;AAEpD,gBAAI,MAAM,QAAQ,MAAM,GAAG;AACzB,cAAAA,WAAU,OAAO,CAAC;AAClB,eAAC,GAAG,QAAQ,SAAS,OAAO,OAAO,CAAC,CAAC;AAAA,YAEvC,OAAO;AACL,cAAAA,WAAU;AAAA,YACZ;AAAA,UACF;AAAA,QACF,SAAS,KAAK;AACZ,qBAAW,EAAE,GAAG;AAAA,QAClB,UAAE;AACA,qBAAW,EAAE;AAAA,QACf;AACA,eAAOA;AAAA,MACT;AACA,eAAS,mBAAmB,OAAO;AACjC,eAAO,MAAM,MAAM,mBAAmB,EAAE,CAAC,EAAE,QAAQ,mBAAmB,GAAG;AAAA,MAC3E;AACA,aAAO,UAAU,QAAQ;AAAA;AAAA;;;ACjgBzB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,UAAI,SAAS;AACb,UAAI,UAAU,uBAAuB,sBAAwC;AAC7E,UAAI,UAAU,uBAAuB,mBAAqC;AAiC1E,eAAS,SAAS,UAAUC,UAAS;AACnC,YAAI;AACJ,SAAC,GAAG,QAAQ,SAAS,GAAG,SAAS;AACjC,YAAI,oBAAoB,GAAG,QAAQ,UAAU,wBAAwBA,aAAY,QAAQA,aAAY,SAAS,SAASA,SAAQ,sBAAsB,QAAQ,0BAA0B,SAAS,wBAAwB,CAAC;AACzN,YAAI,qBAAqB,KAAK,qBAAqB,KAAK,qBAAqB,GAAG;AAC9E,gBAAM,IAAI,WAAW,oCAAoC;AAAA,QAC3D;AACA,YAAI,EAAE,OAAO,aAAa,YAAY,OAAO,UAAU,SAAS,KAAK,QAAQ,MAAM,oBAAoB;AACrG,iBAAO,oBAAI,KAAK,GAAG;AAAA,QACrB;AACA,YAAI,cAAc,gBAAgB,QAAQ;AAC1C,YAAIC;AACJ,YAAI,YAAY,MAAM;AACpB,cAAI,kBAAkBC,WAAU,YAAY,MAAM,gBAAgB;AAClE,UAAAD,QAAO,UAAU,gBAAgB,gBAAgB,gBAAgB,IAAI;AAAA,QACvE;AACA,YAAI,CAACA,SAAQ,MAAMA,MAAK,QAAQ,CAAC,GAAG;AAClC,iBAAO,oBAAI,KAAK,GAAG;AAAA,QACrB;AACA,YAAI,YAAYA,MAAK,QAAQ;AAC7B,YAAIE,QAAO;AACX,YAAI;AACJ,YAAI,YAAY,MAAM;AACpB,UAAAA,QAAO,UAAU,YAAY,IAAI;AACjC,cAAI,MAAMA,KAAI,GAAG;AACf,mBAAO,oBAAI,KAAK,GAAG;AAAA,UACrB;AAAA,QACF;AACA,YAAI,YAAY,UAAU;AACxB,mBAAS,cAAc,YAAY,QAAQ;AAC3C,cAAI,MAAM,MAAM,GAAG;AACjB,mBAAO,oBAAI,KAAK,GAAG;AAAA,UACrB;AAAA,QACF,OAAO;AACL,cAAI,YAAY,IAAI,KAAK,YAAYA,KAAI;AAMzC,cAAI,SAAS,oBAAI,KAAK,CAAC;AACvB,iBAAO,YAAY,UAAU,eAAe,GAAG,UAAU,YAAY,GAAG,UAAU,WAAW,CAAC;AAC9F,iBAAO,SAAS,UAAU,YAAY,GAAG,UAAU,cAAc,GAAG,UAAU,cAAc,GAAG,UAAU,mBAAmB,CAAC;AAC7H,iBAAO;AAAA,QACT;AACA,eAAO,IAAI,KAAK,YAAYA,QAAO,MAAM;AAAA,MAC3C;AACA,UAAI,WAAW;AAAA,QACb,mBAAmB;AAAA,QACnB,mBAAmB;AAAA,QACnB,UAAU;AAAA,MACZ;AACA,UAAI,YAAY;AAChB,UAAI,YAAY;AAChB,UAAI,gBAAgB;AACpB,eAAS,gBAAgB,YAAY;AACnC,YAAI,cAAc,CAAC;AACnB,YAAI,QAAQ,WAAW,MAAM,SAAS,iBAAiB;AACvD,YAAI;AAIJ,YAAI,MAAM,SAAS,GAAG;AACpB,iBAAO;AAAA,QACT;AACA,YAAI,IAAI,KAAK,MAAM,CAAC,CAAC,GAAG;AACtB,uBAAa,MAAM,CAAC;AAAA,QACtB,OAAO;AACL,sBAAY,OAAO,MAAM,CAAC;AAC1B,uBAAa,MAAM,CAAC;AACpB,cAAI,SAAS,kBAAkB,KAAK,YAAY,IAAI,GAAG;AACrD,wBAAY,OAAO,WAAW,MAAM,SAAS,iBAAiB,EAAE,CAAC;AACjE,yBAAa,WAAW,OAAO,YAAY,KAAK,QAAQ,WAAW,MAAM;AAAA,UAC3E;AAAA,QACF;AACA,YAAI,YAAY;AACd,cAAIC,SAAQ,SAAS,SAAS,KAAK,UAAU;AAC7C,cAAIA,QAAO;AACT,wBAAY,OAAO,WAAW,QAAQA,OAAM,CAAC,GAAG,EAAE;AAClD,wBAAY,WAAWA,OAAM,CAAC;AAAA,UAChC,OAAO;AACL,wBAAY,OAAO;AAAA,UACrB;AAAA,QACF;AACA,eAAO;AAAA,MACT;AACA,eAASF,WAAU,YAAY,kBAAkB;AAC/C,YAAI,QAAQ,IAAI,OAAO,0BAA0B,IAAI,oBAAoB,yBAAyB,IAAI,oBAAoB,MAAM;AAChI,YAAI,WAAW,WAAW,MAAM,KAAK;AAErC,YAAI,CAAC;AAAU,iBAAO;AAAA,YACpB,MAAM;AAAA,YACN,gBAAgB;AAAA,UAClB;AACA,YAAI,OAAO,SAAS,CAAC,IAAI,SAAS,SAAS,CAAC,CAAC,IAAI;AACjD,YAAI,UAAU,SAAS,CAAC,IAAI,SAAS,SAAS,CAAC,CAAC,IAAI;AAGpD,eAAO;AAAA,UACL,MAAM,YAAY,OAAO,OAAO,UAAU;AAAA,UAC1C,gBAAgB,WAAW,OAAO,SAAS,CAAC,KAAK,SAAS,CAAC,GAAG,MAAM;AAAA,QACtE;AAAA,MACF;AACA,eAAS,UAAU,YAAY,MAAM;AAEnC,YAAI,SAAS;AAAM,iBAAO,oBAAI,KAAK,GAAG;AACtC,YAAI,WAAW,WAAW,MAAM,SAAS;AAEzC,YAAI,CAAC;AAAU,iBAAO,oBAAI,KAAK,GAAG;AAClC,YAAI,aAAa,CAAC,CAAC,SAAS,CAAC;AAC7B,YAAI,YAAY,cAAc,SAAS,CAAC,CAAC;AACzC,YAAI,QAAQ,cAAc,SAAS,CAAC,CAAC,IAAI;AACzC,YAAI,MAAM,cAAc,SAAS,CAAC,CAAC;AACnC,YAAI,OAAO,cAAc,SAAS,CAAC,CAAC;AACpC,YAAI,YAAY,cAAc,SAAS,CAAC,CAAC,IAAI;AAC7C,YAAI,YAAY;AACd,cAAI,CAAC,iBAAiB,MAAM,MAAM,SAAS,GAAG;AAC5C,mBAAO,oBAAI,KAAK,GAAG;AAAA,UACrB;AACA,iBAAO,iBAAiB,MAAM,MAAM,SAAS;AAAA,QAC/C,OAAO;AACL,cAAID,QAAO,oBAAI,KAAK,CAAC;AACrB,cAAI,CAAC,aAAa,MAAM,OAAO,GAAG,KAAK,CAAC,sBAAsB,MAAM,SAAS,GAAG;AAC9E,mBAAO,oBAAI,KAAK,GAAG;AAAA,UACrB;AACA,UAAAA,MAAK,eAAe,MAAM,OAAO,KAAK,IAAI,WAAW,GAAG,CAAC;AACzD,iBAAOA;AAAA,QACT;AAAA,MACF;AACA,eAAS,cAAc,OAAO;AAC5B,eAAO,QAAQ,SAAS,KAAK,IAAI;AAAA,MACnC;AACA,eAAS,UAAU,YAAY;AAC7B,YAAI,WAAW,WAAW,MAAM,SAAS;AACzC,YAAI,CAAC;AAAU,iBAAO;AAEtB,YAAI,QAAQ,cAAc,SAAS,CAAC,CAAC;AACrC,YAAI,UAAU,cAAc,SAAS,CAAC,CAAC;AACvC,YAAII,WAAU,cAAc,SAAS,CAAC,CAAC;AACvC,YAAI,CAAC,aAAa,OAAO,SAASA,QAAO,GAAG;AAC1C,iBAAO;AAAA,QACT;AACA,eAAO,QAAQ,OAAO,qBAAqB,UAAU,OAAO,uBAAuBA,WAAU;AAAA,MAC/F;AACA,eAAS,cAAc,OAAO;AAC5B,eAAO,SAAS,WAAW,MAAM,QAAQ,KAAK,GAAG,CAAC,KAAK;AAAA,MACzD;AACA,eAAS,cAAc,gBAAgB;AACrC,YAAI,mBAAmB;AAAK,iBAAO;AACnC,YAAI,WAAW,eAAe,MAAM,aAAa;AACjD,YAAI,CAAC;AAAU,iBAAO;AACtB,YAAIC,QAAO,SAAS,CAAC,MAAM,MAAM,KAAK;AACtC,YAAI,QAAQ,SAAS,SAAS,CAAC,CAAC;AAChC,YAAI,UAAU,SAAS,CAAC,KAAK,SAAS,SAAS,CAAC,CAAC,KAAK;AACtD,YAAI,CAAC,iBAAiB,OAAO,OAAO,GAAG;AACrC,iBAAO;AAAA,QACT;AACA,eAAOA,SAAQ,QAAQ,OAAO,qBAAqB,UAAU,OAAO;AAAA,MACtE;AACA,eAAS,iBAAiB,aAAa,MAAM,KAAK;AAChD,YAAIL,QAAO,oBAAI,KAAK,CAAC;AACrB,QAAAA,MAAK,eAAe,aAAa,GAAG,CAAC;AACrC,YAAI,qBAAqBA,MAAK,UAAU,KAAK;AAC7C,YAAI,QAAQ,OAAO,KAAK,IAAI,MAAM,IAAI;AACtC,QAAAA,MAAK,WAAWA,MAAK,WAAW,IAAI,IAAI;AACxC,eAAOA;AAAA,MACT;AAKA,UAAI,eAAe,CAAC,IAAI,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE;AACpE,eAAS,gBAAgB,MAAM;AAC7B,eAAO,OAAO,QAAQ,KAAK,OAAO,MAAM,KAAK,OAAO,QAAQ;AAAA,MAC9D;AACA,eAAS,aAAa,MAAM,OAAOA,OAAM;AACvC,eAAO,SAAS,KAAK,SAAS,MAAMA,SAAQ,KAAKA,UAAS,aAAa,KAAK,MAAM,gBAAgB,IAAI,IAAI,KAAK;AAAA,MACjH;AACA,eAAS,sBAAsB,MAAM,WAAW;AAC9C,eAAO,aAAa,KAAK,cAAc,gBAAgB,IAAI,IAAI,MAAM;AAAA,MACvE;AACA,eAAS,iBAAiB,OAAO,MAAM,KAAK;AAC1C,eAAO,QAAQ,KAAK,QAAQ,MAAM,OAAO,KAAK,OAAO;AAAA,MACvD;AACA,eAAS,aAAa,OAAO,SAASI,UAAS;AAC7C,YAAI,UAAU,IAAI;AAChB,iBAAO,YAAY,KAAKA,aAAY;AAAA,QACtC;AACA,eAAOA,YAAW,KAAKA,WAAU,MAAM,WAAW,KAAK,UAAU,MAAM,SAAS,KAAK,QAAQ;AAAA,MAC/F;AACA,eAAS,iBAAiB,QAAQ,SAAS;AACzC,eAAO,WAAW,KAAK,WAAW;AAAA,MACpC;AACA,aAAO,UAAU,QAAQ;AAAA;AAAA;;;AC3OzB;AAAA;AAAA;AAAa,aAAO,eAAe,SAAQ,cAAa,EAAC,OAAM,KAAI,CAAC;AAAE,UAAI,QAAM;AAAV,UAA2B,WAAS;AAAqB,eAASE,gBAAe,UAAU,YAAY;AAC3K,iBAAS,YAAY,OAAO,OAAO,WAAW,SAAS;AACvD,iBAAS,UAAU,cAAc;AAEjC,QAAAC,kBAAgB,UAAU,UAAU;AAAA,MACtC;AAEA,eAASA,kBAAgBC,IAAG,GAAG;AAC7B,QAAAD,oBAAkB,OAAO,kBAAkB,SAASA,kBAAgBC,IAAGC,IAAG;AACxE,UAAAD,GAAE,YAAYC;AACd,iBAAOD;AAAA,QACT;AAEA,eAAOD,kBAAgBC,IAAG,CAAC;AAAA,MAC7B;AAEA,eAASE,gCAA8B,QAAQ,UAAU;AACvD,YAAI,UAAU;AAAM,iBAAO,CAAC;AAC5B,YAAI,SAAS,CAAC;AACd,YAAI,aAAa,OAAO,KAAK,MAAM;AACnC,YAAI,KAAK;AAET,aAAK,IAAI,GAAG,IAAI,WAAW,QAAQ,KAAK;AACtC,gBAAM,WAAW,CAAC;AAClB,cAAI,SAAS,QAAQ,GAAG,KAAK;AAAG;AAChC,iBAAO,GAAG,IAAI,OAAO,GAAG;AAAA,QAC1B;AAEA,eAAO;AAAA,MACT;AAEA,eAASC,yBAAuBC,OAAM;AACpC,YAAIA,UAAS,QAAQ;AACnB,gBAAM,IAAI,eAAe,2DAA2D;AAAA,QACtF;AAEA,eAAOA;AAAA,MACT;AAGA,eAAS,YAAY,SAAS,eAAe,aAAa;AACxD,YAAI,YAAY,eAAe;AAC7B,iBAAO;AAAA,QACT;AAQA,YAAI,QAAQ,sBAAsB;AAChC,iBAAO,QAAQ,qBAAqB,UAAU,SAAS,WAAW;AAAA,QACpE;AAEA,eAAO,QAAQ,UAAU,SAAS,WAAW;AAAA,MAC/C;AAMA,eAAS,YAAY,SAAS,eAAe,aAAa;AACxD,YAAI,YAAY,eAAe;AAC7B,iBAAO;AAAA,QACT;AAQA,eAAO,QAAQ,cAAc,QAAQ,MAAM;AAEzC,cAAI,QAAQ,cAAc,YAAY,SAAS,eAAe,WAAW,GAAG;AAC1E,mBAAO;AAAA,UACT;AAEA,oBAAU,QAAQ,cAAc,QAAQ;AAAA,QAC1C;AAEA,eAAO;AAAA,MACT;AAKA,eAAS,iBAAiB,KAAK;AAC7B,eAAO,SAAS,gBAAgB,eAAe,IAAI,WAAW,SAAS,gBAAgB,gBAAgB,IAAI;AAAA,MAC7G;AAEA,UAAI,0BAA0B,SAASC,2BAA0B;AAC/D,YAAI,OAAO,WAAW,eAAe,OAAO,OAAO,qBAAqB,YAAY;AAClF;AAAA,QACF;AAEA,YAAI,UAAU;AACd,YAAIC,WAAU,OAAO,eAAe,CAAC,GAAG,WAAW;AAAA,UACjD,KAAK,SAAS,MAAM;AAClB,sBAAU;AAAA,UACZ;AAAA,QACF,CAAC;AAED,YAAIC,QAAO,SAASA,QAAO;AAAA,QAAC;AAE5B,eAAO,iBAAiB,2BAA2BA,OAAMD,QAAO;AAChE,eAAO,oBAAoB,2BAA2BC,OAAMD,QAAO;AACnE,eAAO;AAAA,MACT;AAAE,eAAS,QAAQ,MAAM;AACvB,YAAI,SAAS,QAAQ;AACnB,iBAAO;AAAA,QACT;AAEA,eAAO,WAAY;AACjB,iBAAO,EAAE;AAAA,QACX;AAAA,MACF;AAEA,UAAI,MAAM,QAAQ;AAAE,UAAI;AACxB,UAAI,cAAc,CAAC;AACnB,UAAI,mBAAmB,CAAC;AACxB,UAAI,cAAc,CAAC,cAAc,WAAW;AAC5C,UAAI,oBAAoB;AAKxB,eAAS,uBAAuB,UAAU,WAAW;AACnD,YAAI,iBAAiB,CAAC;AACtB,YAAI,eAAe,YAAY,QAAQ,SAAS,MAAM;AAEtD,YAAI,gBAAgB,qBAAqB;AACvC,yBAAe,UAAU,CAAC,SAAS,MAAM;AAAA,QAC3C;AAEA,eAAO;AAAA,MACT;AAUA,eAAS,kBAAkB,kBAAkB,QAAQ;AACnD,YAAI,QAAQ;AAEZ,YAAI,gBAAgB,iBAAiB,eAAe,iBAAiB,QAAQ;AAC7E,eAAO,QAAQ,SAAsB,yBAAU,YAAY;AACzD,UAAAR,gBAAe,gBAAgB,UAAU;AAEzC,mBAAS,eAAe,OAAO;AAC7B,gBAAI;AAEJ,oBAAQ,WAAW,KAAK,MAAM,KAAK,KAAK;AAExC,kBAAM,wBAAwB,SAAU,OAAO;AAC7C,kBAAI,OAAO,MAAM,8BAA8B,YAAY;AACzD,sBAAM,0BAA0B,KAAK;AAErC;AAAA,cACF;AAEA,kBAAI,WAAW,MAAM,YAAY;AAEjC,kBAAI,OAAO,SAAS,MAAM,uBAAuB,YAAY;AAC3D,yBAAS,MAAM,mBAAmB,KAAK;AACvC;AAAA,cACF;AAEA,kBAAI,OAAO,SAAS,uBAAuB,YAAY;AACrD,yBAAS,mBAAmB,KAAK;AACjC;AAAA,cACF;AAEA,oBAAM,IAAI,MAAM,uBAAuB,gBAAgB,kFAAkF;AAAA,YAC3I;AAEA,kBAAM,qBAAqB,WAAY;AACrC,kBAAI,WAAW,MAAM,YAAY;AAEjC,kBAAI,UAAU,OAAO,OAAO,uBAAuB,YAAY;AAC7D,uBAAO,OAAO,mBAAmB,EAAE,QAAQ;AAAA,cAC7C;AAEA,kBAAI,OAAO,SAAS,uBAAuB,YAAY;AACrD,uBAAO,SAAS,mBAAmB;AAAA,cACrC;AAEA,qBAAO,SAAS,YAAY,QAAQ;AAAA,YACtC;AAEA,kBAAM,uBAAuB,WAAY;AACvC,kBAAI,OAAO,aAAa,eAAe,iBAAiB,MAAM,IAAI,GAAG;AACnE;AAAA,cACF;AAEA,kBAAI,OAAO,wBAAwB,aAAa;AAC9C,sCAAsB,wBAAwB;AAAA,cAChD;AAEA,+BAAiB,MAAM,IAAI,IAAI;AAC/B,kBAAI,SAAS,MAAM,MAAM;AAEzB,kBAAI,CAAC,OAAO,SAAS;AACnB,yBAAS,CAAC,MAAM;AAAA,cAClB;AAEA,0BAAY,MAAM,IAAI,IAAI,SAAU,OAAO;AACzC,oBAAI,MAAM,kBAAkB;AAAM;AAElC,oBAAI,MAAM,MAAM,gBAAgB;AAC9B,wBAAM,eAAe;AAAA,gBACvB;AAEA,oBAAI,MAAM,MAAM,iBAAiB;AAC/B,wBAAM,gBAAgB;AAAA,gBACxB;AAEA,oBAAI,MAAM,MAAM,oBAAoB,iBAAiB,KAAK;AAAG;AAC7D,oBAAI,UAAU,MAAM,YAAY,MAAM,gBAAgB,MAAM,aAAa,EAAE,MAAM,KAAK,MAAM;AAE5F,oBAAI,YAAY,SAAS,MAAM,eAAe,MAAM,MAAM,uBAAuB,MAAM,UAAU;AAC/F;AAAA,gBACF;AAEA,sBAAM,sBAAsB,KAAK;AAAA,cACnC;AAEA,qBAAO,QAAQ,SAAU,WAAW;AAClC,yBAAS,iBAAiB,WAAW,YAAY,MAAM,IAAI,GAAG,uBAAuBK,yBAAuB,KAAK,GAAG,SAAS,CAAC;AAAA,cAChI,CAAC;AAAA,YACH;AAEA,kBAAM,wBAAwB,WAAY;AACxC,qBAAO,iBAAiB,MAAM,IAAI;AAClC,kBAAI,KAAK,YAAY,MAAM,IAAI;AAE/B,kBAAI,MAAM,OAAO,aAAa,aAAa;AACzC,oBAAI,SAAS,MAAM,MAAM;AAEzB,oBAAI,CAAC,OAAO,SAAS;AACnB,2BAAS,CAAC,MAAM;AAAA,gBAClB;AAEA,uBAAO,QAAQ,SAAU,WAAW;AAClC,yBAAO,SAAS,oBAAoB,WAAW,IAAI,uBAAuBA,yBAAuB,KAAK,GAAG,SAAS,CAAC;AAAA,gBACrH,CAAC;AACD,uBAAO,YAAY,MAAM,IAAI;AAAA,cAC/B;AAAA,YACF;AAEA,kBAAM,SAAS,SAAU,KAAK;AAC5B,qBAAO,MAAM,cAAc;AAAA,YAC7B;AAEA,kBAAM,OAAO,IAAI;AACjB,mBAAO;AAAA,UACT;AAMA,cAAI,SAAS,eAAe;AAE5B,iBAAO,cAAc,SAAS,cAAc;AAC1C,gBAAI,iBAAiB,aAAa,CAAC,iBAAiB,UAAU,kBAAkB;AAC9E,qBAAO;AAAA,YACT;AAEA,gBAAI,MAAM,KAAK;AACf,mBAAO,IAAI,cAAc,IAAI,YAAY,IAAI;AAAA,UAC/C;AAMA,iBAAO,oBAAoB,SAAS,oBAAoB;AAItD,gBAAI,OAAO,aAAa,eAAe,CAAC,SAAS,eAAe;AAC9D;AAAA,YACF;AAEA,gBAAI,WAAW,KAAK,YAAY;AAEhC,gBAAI,UAAU,OAAO,OAAO,uBAAuB,YAAY;AAC7D,mBAAK,4BAA4B,OAAO,mBAAmB,QAAQ;AAEnE,kBAAI,OAAO,KAAK,8BAA8B,YAAY;AACxD,sBAAM,IAAI,MAAM,uBAAuB,gBAAgB,0GAA0G;AAAA,cACnK;AAAA,YACF;AAEA,iBAAK,gBAAgB,KAAK,mBAAmB;AAE7C,gBAAI,KAAK,MAAM;AAAuB;AACtC,iBAAK,qBAAqB;AAAA,UAC5B;AAEA,iBAAO,qBAAqB,SAAS,qBAAqB;AACxD,iBAAK,gBAAgB,KAAK,mBAAmB;AAAA,UAC/C;AAMA,iBAAO,uBAAuB,SAAS,uBAAuB;AAC5D,iBAAK,sBAAsB;AAAA,UAC7B;AAUA,iBAAO,SAAS,SAASK,UAAS;AAEhC,gBAAI,cAAc,KAAK;AACnB,wBAAY;AACZ,gBAAI,QAAQN,gCAA8B,aAAa,CAAC,kBAAkB,CAAC;AAE/E,gBAAI,iBAAiB,aAAa,iBAAiB,UAAU,kBAAkB;AAC7E,oBAAM,MAAM,KAAK;AAAA,YACnB,OAAO;AACL,oBAAM,aAAa,KAAK;AAAA,YAC1B;AAEA,kBAAM,wBAAwB,KAAK;AACnC,kBAAM,uBAAuB,KAAK;AAClC,mBAAO,MAAM,cAAc,kBAAkB,KAAK;AAAA,UACpD;AAEA,iBAAO;AAAA,QACT,EAAE,MAAM,SAAS,GAAG,OAAO,cAAc,oBAAoB,gBAAgB,KAAK,OAAO,eAAe;AAAA,UACtG,YAAY,CAAC,aAAa,YAAY;AAAA,UACtC,kBAAkB,UAAU,OAAO,oBAAoB;AAAA,UACvD,yBAAyB;AAAA,UACzB,gBAAgB;AAAA,UAChB,iBAAiB;AAAA,QACnB,GAAG,OAAO,WAAW,WAAY;AAC/B,iBAAO,iBAAiB,WAAW,iBAAiB,SAAS,IAAI;AAAA,QACnE,GAAG;AAAA,MACL;AAAC,cAAQ,oBAAkB;AAAkB,cAAQ,UAAQ;AAAA;AAAA;;;ACjW7D;AAAA;AAAA;AAEA,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,cAAQ,oCAAoC,QAAQ,8BAA8B;AAElF,UAAIO,WAAQ,wBAAwB,eAAgB;AAEpD,eAAS,2BAA2B;AAAE,YAAI,OAAO,YAAY;AAAY,iBAAO;AAAM,YAAI,QAAQ,oBAAI,QAAQ;AAAG,mCAA2B,SAASC,4BAA2B;AAAE,iBAAO;AAAA,QAAO;AAAG,eAAO;AAAA,MAAO;AAEjN,eAAS,wBAAwB,KAAK;AAAE,YAAI,OAAO,IAAI,YAAY;AAAE,iBAAO;AAAA,QAAK;AAAE,YAAI,QAAQ,QAAQ,OAAO,QAAQ,YAAY,OAAO,QAAQ,YAAY;AAAE,iBAAO,EAAE,WAAW,IAAI;AAAA,QAAG;AAAE,YAAI,QAAQ,yBAAyB;AAAG,YAAI,SAAS,MAAM,IAAI,GAAG,GAAG;AAAE,iBAAO,MAAM,IAAI,GAAG;AAAA,QAAG;AAAE,YAAI,SAAS,CAAC;AAAG,YAAI,wBAAwB,OAAO,kBAAkB,OAAO;AAA0B,iBAAS,OAAO,KAAK;AAAE,cAAI,OAAO,UAAU,eAAe,KAAK,KAAK,GAAG,GAAG;AAAE,gBAAI,OAAO,wBAAwB,OAAO,yBAAyB,KAAK,GAAG,IAAI;AAAM,gBAAI,SAAS,KAAK,OAAO,KAAK,MAAM;AAAE,qBAAO,eAAe,QAAQ,KAAK,IAAI;AAAA,YAAG,OAAO;AAAE,qBAAO,GAAG,IAAI,IAAI,GAAG;AAAA,YAAG;AAAA,UAAE;AAAA,QAAE;AAAE,eAAO,SAAS,IAAI;AAAK,YAAI,OAAO;AAAE,gBAAM,IAAI,KAAK,MAAM;AAAA,QAAG;AAAE,eAAO;AAAA,MAAQ;AAE3uB,UAAI,8BAA8BD,SAAM,cAAc;AACtD,cAAQ,8BAA8B;AACtC,UAAI,oCAAoCA,SAAM,cAAc;AAC5D,cAAQ,oCAAoC;AAE5C,eAAS,QAAQE,OAAM;AACrB,YAAI,WAAWA,MAAK;AAEpB,YAAI,kBAAkBF,SAAM,SAAS,IAAI,GACrC,gBAAgB,gBAAgB,CAAC,GACjC,mBAAmB,gBAAgB,CAAC;AAExC,YAAI,eAAeA,SAAM,OAAO,KAAK;AACrC,QAAAA,SAAM,UAAU,WAAY;AAC1B,iBAAO,WAAY;AACjB,yBAAa,UAAU;AAAA,UACzB;AAAA,QACF,GAAG,CAAC,CAAC;AACL,YAAI,yBAAyBA,SAAM,YAAY,SAAUG,OAAM;AAC7D,cAAI,CAAC,aAAa,SAAS;AACzB,6BAAiBA,KAAI;AAAA,UACvB;AAAA,QACF,GAAG,CAAC,CAAC;AACL,eAAoB,gBAAAH,SAAM,cAAc,4BAA4B,UAAU;AAAA,UAC5E,OAAO;AAAA,QACT,GAAgB,gBAAAA,SAAM,cAAc,kCAAkC,UAAU;AAAA,UAC9E,OAAO;AAAA,QACT,GAAG,QAAQ,CAAC;AAAA,MACd;AAAA;AAAA;;;AC1CA,MAAAI,iBAAA;AAAA;AAAA;AAEA,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,4BAA4B,QAAQ,cAAc,QAAQ,SAAS,QAAQ,aAAa,QAAQ,cAAc;AAEtH,UAAIC,WAAQ,wBAAwB,eAAgB;AAEpD,eAAS,2BAA2B;AAAE,YAAI,OAAO,YAAY;AAAY,iBAAO;AAAM,YAAI,QAAQ,oBAAI,QAAQ;AAAG,mCAA2B,SAASC,4BAA2B;AAAE,iBAAO;AAAA,QAAO;AAAG,eAAO;AAAA,MAAO;AAEjN,eAAS,wBAAwB,KAAK;AAAE,YAAI,OAAO,IAAI,YAAY;AAAE,iBAAO;AAAA,QAAK;AAAE,YAAI,QAAQ,QAAQ,OAAO,QAAQ,YAAY,OAAO,QAAQ,YAAY;AAAE,iBAAO,EAAE,WAAW,IAAI;AAAA,QAAG;AAAE,YAAI,QAAQ,yBAAyB;AAAG,YAAI,SAAS,MAAM,IAAI,GAAG,GAAG;AAAE,iBAAO,MAAM,IAAI,GAAG;AAAA,QAAG;AAAE,YAAI,SAAS,CAAC;AAAG,YAAI,wBAAwB,OAAO,kBAAkB,OAAO;AAA0B,iBAAS,OAAO,KAAK;AAAE,cAAI,OAAO,UAAU,eAAe,KAAK,KAAK,GAAG,GAAG;AAAE,gBAAI,OAAO,wBAAwB,OAAO,yBAAyB,KAAK,GAAG,IAAI;AAAM,gBAAI,SAAS,KAAK,OAAO,KAAK,MAAM;AAAE,qBAAO,eAAe,QAAQ,KAAK,IAAI;AAAA,YAAG,OAAO;AAAE,qBAAO,GAAG,IAAI,IAAI,GAAG;AAAA,YAAG;AAAA,UAAE;AAAA,QAAE;AAAE,eAAO,SAAS,IAAI;AAAK,YAAI,OAAO;AAAE,gBAAM,IAAI,KAAK,MAAM;AAAA,QAAG;AAAE,eAAO;AAAA,MAAQ;AAM3uB,UAAI,cAAc,SAASC,aAAY,KAAK;AAC1C,eAAO,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,IAAI;AAAA,MACvC;AAOA,cAAQ,cAAc;AAEtB,UAAI,aAAa,SAASC,YAAW,IAAI;AACvC,YAAI,OAAO,OAAO,YAAY;AAC5B,mBAAS,OAAO,UAAU,QAAQ,OAAO,IAAI,MAAM,OAAO,IAAI,OAAO,IAAI,CAAC,GAAG,OAAO,GAAG,OAAO,MAAM,QAAQ;AAC1G,iBAAK,OAAO,CAAC,IAAI,UAAU,IAAI;AAAA,UACjC;AAEA,iBAAO,GAAG,MAAM,QAAQ,IAAI;AAAA,QAC9B;AAAA,MACF;AAMA,cAAQ,aAAa;AAErB,UAAI,SAAS,SAASC,QAAO,KAAKC,OAAM;AAEtC,YAAI,OAAO,QAAQ,YAAY;AAC7B,iBAAO,WAAW,KAAKA,KAAI;AAAA,QAC7B,WACS,OAAO,MAAM;AAClB,cAAI,UAAUA;AAAA,QAChB;AAAA,MACJ;AAMA,cAAQ,SAAS;AAEjB,UAAI,cAAc,SAASC,aAAY,SAAS;AAC9C,eAAO,QAAQ,OAAO,SAAU,KAAKC,OAAM;AACzC,cAAI,MAAMA,MAAK,CAAC,GACZ,QAAQA,MAAK,CAAC;AAClB,cAAI,GAAG,IAAI;AACX,iBAAO;AAAA,QACT,GAAG,CAAC,CAAC;AAAA,MACP;AAMA,cAAQ,cAAc;AACtB,UAAI,4BAA4B,OAAO,WAAW,eAAe,OAAO,YAAY,OAAO,SAAS,gBAAgBP,SAAM,kBAAkBA,SAAM;AAClJ,cAAQ,4BAA4B;AAAA;AAAA;;;AC3EpC;AAAA;AAEA,UAAI,iBAAiB,OAAO,YAAY;AACxC,UAAI,SAAS,OAAO,QAAQ;AAC5B,UAAI,SAAS,OAAO,QAAQ;AAC5B,UAAI,iBAAiB,OAAO,gBAAgB,cAAc,CAAC,CAAC,YAAY;AAIxE,eAAS,MAAMQ,IAAG,GAAG;AAEnB,YAAIA,OAAM;AAAG,iBAAO;AAEpB,YAAIA,MAAK,KAAK,OAAOA,MAAK,YAAY,OAAO,KAAK,UAAU;AAC1D,cAAIA,GAAE,gBAAgB,EAAE;AAAa,mBAAO;AAE5C,cAAIC,SAAQ,GAAG;AACf,cAAI,MAAM,QAAQD,EAAC,GAAG;AACpB,YAAAC,UAASD,GAAE;AACX,gBAAIC,WAAU,EAAE;AAAQ,qBAAO;AAC/B,iBAAK,IAAIA,SAAQ,QAAQ;AACvB,kBAAI,CAAC,MAAMD,GAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAAG,uBAAO;AACjC,mBAAO;AAAA,UACT;AAsBA,cAAI;AACJ,cAAI,UAAWA,cAAa,OAAS,aAAa,KAAM;AACtD,gBAAIA,GAAE,SAAS,EAAE;AAAM,qBAAO;AAC9B,iBAAKA,GAAE,QAAQ;AACf,mBAAO,EAAE,IAAI,GAAG,KAAK,GAAG;AACtB,kBAAI,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AAAG,uBAAO;AACjC,iBAAKA,GAAE,QAAQ;AACf,mBAAO,EAAE,IAAI,GAAG,KAAK,GAAG;AACtB,kBAAI,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;AAAG,uBAAO;AACpD,mBAAO;AAAA,UACT;AAEA,cAAI,UAAWA,cAAa,OAAS,aAAa,KAAM;AACtD,gBAAIA,GAAE,SAAS,EAAE;AAAM,qBAAO;AAC9B,iBAAKA,GAAE,QAAQ;AACf,mBAAO,EAAE,IAAI,GAAG,KAAK,GAAG;AACtB,kBAAI,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AAAG,uBAAO;AACjC,mBAAO;AAAA,UACT;AAGA,cAAI,kBAAkB,YAAY,OAAOA,EAAC,KAAK,YAAY,OAAO,CAAC,GAAG;AACpE,YAAAC,UAASD,GAAE;AACX,gBAAIC,WAAU,EAAE;AAAQ,qBAAO;AAC/B,iBAAK,IAAIA,SAAQ,QAAQ;AACvB,kBAAID,GAAE,CAAC,MAAM,EAAE,CAAC;AAAG,uBAAO;AAC5B,mBAAO;AAAA,UACT;AAEA,cAAIA,GAAE,gBAAgB;AAAQ,mBAAOA,GAAE,WAAW,EAAE,UAAUA,GAAE,UAAU,EAAE;AAK5E,cAAIA,GAAE,YAAY,OAAO,UAAU,WAAW,OAAOA,GAAE,YAAY,cAAc,OAAO,EAAE,YAAY;AAAY,mBAAOA,GAAE,QAAQ,MAAM,EAAE,QAAQ;AACnJ,cAAIA,GAAE,aAAa,OAAO,UAAU,YAAY,OAAOA,GAAE,aAAa,cAAc,OAAO,EAAE,aAAa;AAAY,mBAAOA,GAAE,SAAS,MAAM,EAAE,SAAS;AAGzJ,iBAAO,OAAO,KAAKA,EAAC;AACpB,UAAAC,UAAS,KAAK;AACd,cAAIA,YAAW,OAAO,KAAK,CAAC,EAAE;AAAQ,mBAAO;AAE7C,eAAK,IAAIA,SAAQ,QAAQ;AACvB,gBAAI,CAAC,OAAO,UAAU,eAAe,KAAK,GAAG,KAAK,CAAC,CAAC;AAAG,qBAAO;AAKhE,cAAI,kBAAkBD,cAAa;AAAS,mBAAO;AAGnD,eAAK,IAAIC,SAAQ,QAAQ,KAAI;AAC3B,iBAAK,KAAK,CAAC,MAAM,YAAY,KAAK,CAAC,MAAM,SAAS,KAAK,CAAC,MAAM,UAAUD,GAAE,UAAU;AASlF;AAAA,YACF;AAGA,gBAAI,CAAC,MAAMA,GAAE,KAAK,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;AAAG,qBAAO;AAAA,UAC7C;AAIA,iBAAO;AAAA,QACT;AAEA,eAAOA,OAAMA,MAAK,MAAM;AAAA,MAC1B;AAGA,aAAO,UAAU,SAASE,SAAQF,IAAG,GAAG;AACtC,YAAI;AACF,iBAAO,MAAMA,IAAG,CAAC;AAAA,QACnB,SAAS,OAAO;AACd,eAAM,MAAM,WAAW,IAAI,MAAM,kBAAkB,GAAI;AAMrD,oBAAQ,KAAK,gDAAgD;AAC7D,mBAAO;AAAA,UACT;AAEA,gBAAM;AAAA,QACR;AAAA,MACF;AAAA;AAAA;;;AC1IA;AAAA;AAAA;AAEA,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,YAAY;AAEpB,UAAIG,WAAQ,wBAAwB,eAAgB;AAEpD,UAAIC,YAAW,wBAAwB,mBAAoB;AAE3D,UAAI,QAAQ;AAEZ,UAAI,oBAAoB,uBAAuB,4BAA6B;AAE5E,UAAI,SAAS;AAEb,eAAS,uBAAuB,KAAK;AAAE,eAAO,OAAO,IAAI,aAAa,MAAM,EAAE,WAAW,IAAI;AAAA,MAAG;AAEhG,eAAS,2BAA2B;AAAE,YAAI,OAAO,YAAY;AAAY,iBAAO;AAAM,YAAI,QAAQ,oBAAI,QAAQ;AAAG,mCAA2B,SAASC,4BAA2B;AAAE,iBAAO;AAAA,QAAO;AAAG,eAAO;AAAA,MAAO;AAEjN,eAAS,wBAAwB,KAAK;AAAE,YAAI,OAAO,IAAI,YAAY;AAAE,iBAAO;AAAA,QAAK;AAAE,YAAI,QAAQ,QAAQ,OAAO,QAAQ,YAAY,OAAO,QAAQ,YAAY;AAAE,iBAAO,EAAE,WAAW,IAAI;AAAA,QAAG;AAAE,YAAI,QAAQ,yBAAyB;AAAG,YAAI,SAAS,MAAM,IAAI,GAAG,GAAG;AAAE,iBAAO,MAAM,IAAI,GAAG;AAAA,QAAG;AAAE,YAAI,SAAS,CAAC;AAAG,YAAI,wBAAwB,OAAO,kBAAkB,OAAO;AAA0B,iBAAS,OAAO,KAAK;AAAE,cAAI,OAAO,UAAU,eAAe,KAAK,KAAK,GAAG,GAAG;AAAE,gBAAI,OAAO,wBAAwB,OAAO,yBAAyB,KAAK,GAAG,IAAI;AAAM,gBAAI,SAAS,KAAK,OAAO,KAAK,MAAM;AAAE,qBAAO,eAAe,QAAQ,KAAK,IAAI;AAAA,YAAG,OAAO;AAAE,qBAAO,GAAG,IAAI,IAAI,GAAG;AAAA,YAAG;AAAA,UAAE;AAAA,QAAE;AAAE,eAAO,SAAS,IAAI;AAAK,YAAI,OAAO;AAAE,gBAAM,IAAI,KAAK,MAAM;AAAA,QAAG;AAAE,eAAO;AAAA,MAAQ;AAE3uB,UAAI,kBAAkB,CAAC;AAEvB,UAAI,YAAY,SAASC,WAAU,kBAAkB,eAAeC,UAAS;AAC3E,YAAIA,aAAY,QAAQ;AACtB,UAAAA,WAAU,CAAC;AAAA,QACb;AAEA,YAAI,cAAcJ,SAAM,OAAO,IAAI;AACnC,YAAI,sBAAsB;AAAA,UACxB,eAAeI,SAAQ;AAAA,UACvB,WAAWA,SAAQ,aAAa;AAAA,UAChC,UAAUA,SAAQ,YAAY;AAAA,UAC9B,WAAWA,SAAQ,aAAa;AAAA,QAClC;AAEA,YAAI,kBAAkBJ,SAAM,SAAS;AAAA,UACnC,QAAQ;AAAA,YACN,QAAQ;AAAA,cACN,UAAU,oBAAoB;AAAA,cAC9B,MAAM;AAAA,cACN,KAAK;AAAA,YACP;AAAA,YACA,OAAO;AAAA,cACL,UAAU;AAAA,YACZ;AAAA,UACF;AAAA,UACA,YAAY,CAAC;AAAA,QACf,CAAC,GACGK,SAAQ,gBAAgB,CAAC,GACzB,WAAW,gBAAgB,CAAC;AAEhC,YAAI,sBAAsBL,SAAM,QAAQ,WAAY;AAClD,iBAAO;AAAA,YACL,MAAM;AAAA,YACN,SAAS;AAAA,YACT,OAAO;AAAA,YACP,IAAI,SAAS,GAAGM,OAAM;AACpB,kBAAID,SAAQC,MAAK;AACjB,kBAAI,WAAW,OAAO,KAAKD,OAAM,QAAQ;AACzC,cAAAJ,UAAS,UAAU,WAAY;AAC7B,yBAAS;AAAA,kBACP,SAAS,GAAG,OAAO,aAAa,SAAS,IAAI,SAAU,SAAS;AAC9D,2BAAO,CAAC,SAASI,OAAM,OAAO,OAAO,KAAK,CAAC,CAAC;AAAA,kBAC9C,CAAC,CAAC;AAAA,kBACF,aAAa,GAAG,OAAO,aAAa,SAAS,IAAI,SAAU,SAAS;AAClE,2BAAO,CAAC,SAASA,OAAM,WAAW,OAAO,CAAC;AAAA,kBAC5C,CAAC,CAAC;AAAA,gBACJ,CAAC;AAAA,cACH,CAAC;AAAA,YACH;AAAA,YACA,UAAU,CAAC,eAAe;AAAA,UAC5B;AAAA,QACF,GAAG,CAAC,CAAC;AACL,YAAI,gBAAgBL,SAAM,QAAQ,WAAY;AAC5C,cAAI,aAAa;AAAA,YACf,eAAe,oBAAoB;AAAA,YACnC,WAAW,oBAAoB;AAAA,YAC/B,UAAU,oBAAoB;AAAA,YAC9B,WAAW,CAAC,EAAE,OAAO,oBAAoB,WAAW,CAAC,qBAAqB;AAAA,cACxE,MAAM;AAAA,cACN,SAAS;AAAA,YACX,CAAC,CAAC;AAAA,UACJ;AAEA,eAAK,GAAG,kBAAkB,SAAS,GAAG,YAAY,SAAS,UAAU,GAAG;AACtE,mBAAO,YAAY,WAAW;AAAA,UAChC,OAAO;AACL,wBAAY,UAAU;AACtB,mBAAO;AAAA,UACT;AAAA,QACF,GAAG,CAAC,oBAAoB,eAAe,oBAAoB,WAAW,oBAAoB,UAAU,oBAAoB,WAAW,mBAAmB,CAAC;AACvJ,YAAI,oBAAoBA,SAAM,OAAO;AACrC,SAAC,GAAG,OAAO,2BAA2B,WAAY;AAChD,cAAI,kBAAkB,SAAS;AAC7B,8BAAkB,QAAQ,WAAW,aAAa;AAAA,UACpD;AAAA,QACF,GAAG,CAAC,aAAa,CAAC;AAClB,SAAC,GAAG,OAAO,2BAA2B,WAAY;AAChD,cAAI,oBAAoB,QAAQ,iBAAiB,MAAM;AACrD;AAAA,UACF;AAEA,cAAIO,gBAAeH,SAAQ,gBAAgB,MAAM;AACjD,cAAI,iBAAiBG,cAAa,kBAAkB,eAAe,aAAa;AAChF,4BAAkB,UAAU;AAC5B,iBAAO,WAAY;AACjB,2BAAe,QAAQ;AACvB,8BAAkB,UAAU;AAAA,UAC9B;AAAA,QACF,GAAG,CAAC,kBAAkB,eAAeH,SAAQ,YAAY,CAAC;AAC1D,eAAO;AAAA,UACL,OAAO,kBAAkB,UAAU,kBAAkB,QAAQ,QAAQ;AAAA,UACrE,QAAQC,OAAM;AAAA,UACd,YAAYA,OAAM;AAAA,UAClB,QAAQ,kBAAkB,UAAU,kBAAkB,QAAQ,SAAS;AAAA,UACvE,aAAa,kBAAkB,UAAU,kBAAkB,QAAQ,cAAc;AAAA,QACnF;AAAA,MACF;AAEA,cAAQ,YAAY;AAAA;AAAA;;;AC1HpB;AAAA;AAAA;AAEA,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,SAASG;AAEjB,UAAIC,WAAQ,wBAAwB,eAAgB;AAEpD,UAAI,WAAW;AAEf,UAAI,SAAS;AAEb,UAAI,cAAc;AAElB,eAAS,2BAA2B;AAAE,YAAI,OAAO,YAAY;AAAY,iBAAO;AAAM,YAAI,QAAQ,oBAAI,QAAQ;AAAG,mCAA2B,SAASC,4BAA2B;AAAE,iBAAO;AAAA,QAAO;AAAG,eAAO;AAAA,MAAO;AAEjN,eAAS,wBAAwB,KAAK;AAAE,YAAI,OAAO,IAAI,YAAY;AAAE,iBAAO;AAAA,QAAK;AAAE,YAAI,QAAQ,QAAQ,OAAO,QAAQ,YAAY,OAAO,QAAQ,YAAY;AAAE,iBAAO,EAAE,WAAW,IAAI;AAAA,QAAG;AAAE,YAAI,QAAQ,yBAAyB;AAAG,YAAI,SAAS,MAAM,IAAI,GAAG,GAAG;AAAE,iBAAO,MAAM,IAAI,GAAG;AAAA,QAAG;AAAE,YAAI,SAAS,CAAC;AAAG,YAAI,wBAAwB,OAAO,kBAAkB,OAAO;AAA0B,iBAAS,OAAO,KAAK;AAAE,cAAI,OAAO,UAAU,eAAe,KAAK,KAAK,GAAG,GAAG;AAAE,gBAAI,OAAO,wBAAwB,OAAO,yBAAyB,KAAK,GAAG,IAAI;AAAM,gBAAI,SAAS,KAAK,OAAO,KAAK,MAAM;AAAE,qBAAO,eAAe,QAAQ,KAAK,IAAI;AAAA,YAAG,OAAO;AAAE,qBAAO,GAAG,IAAI,IAAI,GAAG;AAAA,YAAG;AAAA,UAAE;AAAA,QAAE;AAAE,eAAO,SAAS,IAAI;AAAK,YAAI,OAAO;AAAE,gBAAM,IAAI,KAAK,MAAM;AAAA,QAAG;AAAE,eAAO;AAAA,MAAQ;AAE3uB,UAAI,OAAO,SAASC,QAAO;AACzB,eAAO;AAAA,MACT;AAEA,UAAI,eAAe,SAASC,gBAAe;AACzC,eAAO,QAAQ,QAAQ,IAAI;AAAA,MAC7B;AAEA,UAAI,kBAAkB,CAAC;AAEvB,eAASJ,QAAOK,OAAM;AACpB,YAAI,iBAAiBA,MAAK,WACtB,YAAY,mBAAmB,SAAS,WAAW,gBACnD,gBAAgBA,MAAK,UACrB,WAAW,kBAAkB,SAAS,aAAa,eACnD,iBAAiBA,MAAK,WACtB,YAAY,mBAAmB,SAAS,kBAAkB,gBAC1D,mBAAmBA,MAAK,kBACxB,gBAAgBA,MAAK,eACrB,WAAWA,MAAK,UAChB,WAAWA,MAAK;AACpB,YAAI,gBAAgBJ,SAAM,WAAW,SAAS,2BAA2B;AAEzE,YAAI,kBAAkBA,SAAM,SAAS,IAAI,GACrC,gBAAgB,gBAAgB,CAAC,GACjC,mBAAmB,gBAAgB,CAAC;AAExC,YAAI,mBAAmBA,SAAM,SAAS,IAAI,GACtC,eAAe,iBAAiB,CAAC,GACjC,kBAAkB,iBAAiB,CAAC;AAExC,QAAAA,SAAM,UAAU,WAAY;AAC1B,WAAC,GAAG,OAAO,QAAQ,UAAU,aAAa;AAAA,QAC5C,GAAG,CAAC,UAAU,aAAa,CAAC;AAC5B,YAAIK,WAAUL,SAAM,QAAQ,WAAY;AACtC,iBAAO;AAAA,YACL;AAAA,YACA;AAAA,YACA;AAAA,YACA,WAAW,CAAC,EAAE,OAAO,WAAW,CAAC;AAAA,cAC/B,MAAM;AAAA,cACN,SAAS,gBAAgB;AAAA,cACzB,SAAS;AAAA,gBACP,SAAS;AAAA,cACX;AAAA,YACF,CAAC,CAAC;AAAA,UACJ;AAAA,QACF,GAAG,CAAC,WAAW,UAAU,eAAe,WAAW,YAAY,CAAC;AAEhE,YAAI,cAAc,GAAG,YAAY,WAAW,oBAAoB,eAAe,eAAeK,QAAO,GACjGC,SAAQ,WAAW,OACnB,SAAS,WAAW,QACpB,cAAc,WAAW,aACzB,SAAS,WAAW;AAExB,YAAI,gBAAgBN,SAAM,QAAQ,WAAY;AAC5C,iBAAO;AAAA,YACL,KAAK;AAAA,YACL,OAAO,OAAO;AAAA,YACd,WAAWM,SAAQA,OAAM,YAAY;AAAA,YACrC,kBAAkBA,UAASA,OAAM,cAAc,OAAOA,OAAM,cAAc,KAAK,mBAAmB;AAAA,YAClG,mBAAmBA,UAASA,OAAM,cAAc,OAAOA,OAAM,cAAc,KAAK,oBAAoB;AAAA,YACpG,YAAY;AAAA,cACV,OAAO,OAAO;AAAA,cACd,KAAK;AAAA,YACP;AAAA,YACA,aAAa,eAAe;AAAA,YAC5B,QAAQ,UAAU;AAAA,UACpB;AAAA,QACF,GAAG,CAAC,kBAAkB,iBAAiB,WAAWA,QAAO,QAAQ,QAAQ,WAAW,CAAC;AACrF,gBAAQ,GAAG,OAAO,aAAa,QAAQ,EAAE,aAAa;AAAA,MACxD;AAAA;AAAA;;;AC1FA;AAAA;AAAA;AAEA,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,YAAY;AAEpB,UAAIC,WAAQ,wBAAwB,eAAgB;AAEpD,UAAI,WAAW,uBAAuB,iBAAkB;AAExD,UAAI,WAAW;AAEf,UAAI,SAAS;AAEb,eAAS,uBAAuB,KAAK;AAAE,eAAO,OAAO,IAAI,aAAa,MAAM,EAAE,WAAW,IAAI;AAAA,MAAG;AAEhG,eAAS,2BAA2B;AAAE,YAAI,OAAO,YAAY;AAAY,iBAAO;AAAM,YAAI,QAAQ,oBAAI,QAAQ;AAAG,mCAA2B,SAASC,4BAA2B;AAAE,iBAAO;AAAA,QAAO;AAAG,eAAO;AAAA,MAAO;AAEjN,eAAS,wBAAwB,KAAK;AAAE,YAAI,OAAO,IAAI,YAAY;AAAE,iBAAO;AAAA,QAAK;AAAE,YAAI,QAAQ,QAAQ,OAAO,QAAQ,YAAY,OAAO,QAAQ,YAAY;AAAE,iBAAO,EAAE,WAAW,IAAI;AAAA,QAAG;AAAE,YAAI,QAAQ,yBAAyB;AAAG,YAAI,SAAS,MAAM,IAAI,GAAG,GAAG;AAAE,iBAAO,MAAM,IAAI,GAAG;AAAA,QAAG;AAAE,YAAI,SAAS,CAAC;AAAG,YAAI,wBAAwB,OAAO,kBAAkB,OAAO;AAA0B,iBAAS,OAAO,KAAK;AAAE,cAAI,OAAO,UAAU,eAAe,KAAK,KAAK,GAAG,GAAG;AAAE,gBAAI,OAAO,wBAAwB,OAAO,yBAAyB,KAAK,GAAG,IAAI;AAAM,gBAAI,SAAS,KAAK,OAAO,KAAK,MAAM;AAAE,qBAAO,eAAe,QAAQ,KAAK,IAAI;AAAA,YAAG,OAAO;AAAE,qBAAO,GAAG,IAAI,IAAI,GAAG;AAAA,YAAG;AAAA,UAAE;AAAA,QAAE;AAAE,eAAO,SAAS,IAAI;AAAK,YAAI,OAAO;AAAE,gBAAM,IAAI,KAAK,MAAM;AAAA,QAAG;AAAE,eAAO;AAAA,MAAQ;AAE3uB,eAAS,UAAUC,OAAM;AACvB,YAAI,WAAWA,MAAK,UAChB,WAAWA,MAAK;AACpB,YAAI,mBAAmBF,SAAM,WAAW,SAAS,iCAAiC;AAClF,YAAI,aAAaA,SAAM,YAAY,SAAUG,OAAM;AACjD,WAAC,GAAG,OAAO,QAAQ,UAAUA,KAAI;AACjC,WAAC,GAAG,OAAO,YAAY,kBAAkBA,KAAI;AAAA,QAC/C,GAAG,CAAC,UAAU,gBAAgB,CAAC;AAG/B,QAAAH,SAAM,UAAU,WAAY;AAC1B,iBAAO,WAAY;AACjB,oBAAQ,GAAG,OAAO,QAAQ,UAAU,IAAI;AAAA,UAC1C;AAAA,QACF,GAAG,CAAC,CAAC;AACL,QAAAA,SAAM,UAAU,WAAY;AAC1B,WAAC,GAAG,SAAS,SAAS,GAAG,QAAQ,gBAAgB,GAAG,kEAAkE;AAAA,QACxH,GAAG,CAAC,gBAAgB,CAAC;AACrB,gBAAQ,GAAG,OAAO,aAAa,QAAQ,EAAE;AAAA,UACvC,KAAK;AAAA,QACP,CAAC;AAAA,MACH;AAAA;AAAA;;;AC1CA;AAAA;AAAA;AAEA,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,aAAO,eAAe,SAAS,UAAU;AAAA,QACvC,YAAY;AAAA,QACZ,KAAK,SAAS,MAAM;AAClB,iBAAO,QAAQ;AAAA,QACjB;AAAA,MACF,CAAC;AACD,aAAO,eAAe,SAAS,WAAW;AAAA,QACxC,YAAY;AAAA,QACZ,KAAK,SAAS,MAAM;AAClB,iBAAO,SAAS;AAAA,QAClB;AAAA,MACF,CAAC;AACD,aAAO,eAAe,SAAS,aAAa;AAAA,QAC1C,YAAY;AAAA,QACZ,KAAK,SAAS,MAAM;AAClB,iBAAO,WAAW;AAAA,QACpB;AAAA,MACF,CAAC;AACD,aAAO,eAAe,SAAS,aAAa;AAAA,QAC1C,YAAY;AAAA,QACZ,KAAK,SAAS,MAAM;AAClB,iBAAO,WAAW;AAAA,QACpB;AAAA,MACF,CAAC;AAED,UAAI,UAAU;AAEd,UAAI,WAAW;AAEf,UAAI,aAAa;AAEjB,UAAI,aAAa;AAAA;AAAA;;;ACpCjB;AAAA;AAAA;AAEA,UAAI,yBAAyB,gCAAwD;AACrF,aAAO,eAAe,SAAS,cAAc;AAAA,QAC3C,OAAO;AAAA,MACT,CAAC;AACD,cAAQ,UAAU;AAClB,UAAI,WAAW,uBAAuB,gBAAwC;AAC9E,UAAI,SAAS,uBAAuB,gBAA6B;AACjE,UAAI,UAAU,uBAAuB,kBAA+B;AACpE,UAAI,UAAU,uBAAuB,mBAAqC;AAC1E,UAAI,UAAU,uBAAuB,sBAAwC;AAuC7E,eAAS,IAAI,WAAW,QAAQ;AAC9B,SAAC,GAAG,QAAQ,SAAS,GAAG,SAAS;AACjC,aAAK,GAAG,SAAS,SAAS,MAAM,MAAM,YAAY,WAAW,MAAM;AACjE,gBAAM,IAAI,WAAW,oCAAoC;AAAA,QAC3D;AACA,YAAII,SAAQ,GAAG,OAAO,SAAS,SAAS;AAGxC,YAAI,MAAMA,MAAK,QAAQ,CAAC,GAAG;AACzB,iBAAO,oBAAI,KAAK,GAAG;AAAA,QACrB;AACA,YAAI,OAAO,QAAQ,MAAM;AACvB,UAAAA,MAAK,YAAY,OAAO,IAAI;AAAA,QAC9B;AACA,YAAI,OAAO,SAAS,MAAM;AACxB,UAAAA,SAAQ,GAAG,QAAQ,SAASA,OAAM,OAAO,KAAK;AAAA,QAChD;AACA,YAAI,OAAO,QAAQ,MAAM;AACvB,UAAAA,MAAK,SAAS,GAAG,QAAQ,SAAS,OAAO,IAAI,CAAC;AAAA,QAChD;AACA,YAAI,OAAO,SAAS,MAAM;AACxB,UAAAA,MAAK,UAAU,GAAG,QAAQ,SAAS,OAAO,KAAK,CAAC;AAAA,QAClD;AACA,YAAI,OAAO,WAAW,MAAM;AAC1B,UAAAA,MAAK,YAAY,GAAG,QAAQ,SAAS,OAAO,OAAO,CAAC;AAAA,QACtD;AACA,YAAI,OAAO,WAAW,MAAM;AAC1B,UAAAA,MAAK,YAAY,GAAG,QAAQ,SAAS,OAAO,OAAO,CAAC;AAAA,QACtD;AACA,YAAI,OAAO,gBAAgB,MAAM;AAC/B,UAAAA,MAAK,iBAAiB,GAAG,QAAQ,SAAS,OAAO,YAAY,CAAC;AAAA,QAChE;AACA,eAAOA;AAAA,MACT;AACA,aAAO,UAAU,QAAQ;AAAA;AAAA;;;ACpFzB;AAAA;AAAA,OAAC,SAASC,IAAEC,IAAE;AAAC,oBAAU,OAAO,WAAS,eAAa,OAAO,SAAOA,GAAE,SAAQ,iBAAiB,sBAAsB,sBAAsB,kBAA2B,mBAA4B,kBAA2B,sBAA+B,oBAA6B,mBAA4B,oBAA6B,qBAA8B,uBAAgC,oBAA6B,mBAA4B,oBAA6B,qBAA8B,uBAAgC,oBAA6B,sBAA+B,sBAA+B,oBAA6B,kBAA2B,mBAA4B,sBAA+B,oBAA6B,sBAA+B,mBAA4B,mBAA4B,sBAA+B,sBAA+B,oBAA6B,oBAA6B,sBAA+B,mBAA4B,eAAwB,eAAwB,oCAA6C,sCAA+C,qCAA8C,sBAA+B,uBAAgC,wBAAiC,0BAAmC,uBAAgC,oBAA6B,qBAA8B,sBAA+B,qBAA8B,mBAA4B,qBAA8B,uBAAgC,sBAA+B,yBAAkC,mBAA4B,oBAA6B,4BAAqC,kBAA2B,iBAA0B,oBAA6B,oCAAgC,qBAAqB,eAAwB,aAAuB,IAAE,cAAY,OAAO,UAAQ,OAAO,MAAI,OAAO,CAAC,WAAU,SAAQ,cAAa,cAAa,mBAAkB,oBAAmB,mBAAkB,uBAAsB,qBAAoB,oBAAmB,qBAAoB,sBAAqB,wBAAuB,qBAAoB,oBAAmB,qBAAoB,sBAAqB,wBAAuB,qBAAoB,uBAAsB,uBAAsB,qBAAoB,mBAAkB,oBAAmB,uBAAsB,qBAAoB,uBAAsB,oBAAmB,oBAAmB,uBAAsB,uBAAsB,qBAAoB,qBAAoB,uBAAsB,oBAAmB,gBAAe,gBAAe,qCAAoC,uCAAsC,sCAAqC,uBAAsB,wBAAuB,yBAAwB,2BAA0B,wBAAuB,qBAAoB,sBAAqB,uBAAsB,sBAAqB,oBAAmB,sBAAqB,wBAAuB,uBAAsB,0BAAyB,oBAAmB,qBAAoB,6BAA4B,mBAAkB,kBAAiB,qBAAoB,wBAAuB,aAAY,gBAAe,cAAc,GAAEA,EAAC,IAAEA,IAAGD,KAAE,eAAa,OAAO,aAAW,aAAWA,MAAG,MAAM,aAAW,CAAC,GAAEA,GAAE,OAAMA,GAAE,WAAUA,GAAE,YAAWA,GAAE,QAAOA,GAAE,aAAYA,GAAE,QAAOA,GAAE,YAAWA,GAAE,UAASA,GAAE,SAAQA,GAAE,UAASA,GAAE,WAAUA,GAAE,aAAYA,GAAE,UAASA,GAAE,SAAQA,GAAE,UAASA,GAAE,WAAUA,GAAE,aAAYA,GAAE,UAASA,GAAE,YAAWA,GAAE,YAAWA,GAAE,UAASA,GAAE,QAAOA,GAAE,SAAQA,GAAE,YAAWA,GAAE,UAASA,GAAE,YAAWA,GAAE,SAAQA,GAAE,SAAQA,GAAE,YAAWA,GAAE,YAAWA,GAAE,UAASA,GAAE,UAASA,GAAE,YAAWA,GAAE,SAAQA,GAAE,KAAIA,GAAE,KAAIA,GAAE,0BAAyBA,GAAE,4BAA2BA,GAAE,2BAA0BA,GAAE,YAAWA,GAAE,aAAYA,GAAE,cAAaA,GAAE,gBAAeA,GAAE,aAAYA,GAAE,UAAS,MAAKA,GAAE,YAAWA,GAAE,WAAUA,GAAE,WAAUA,GAAE,aAAYA,GAAE,eAAcA,GAAE,cAAaA,GAAE,iBAAgBA,GAAE,SAAQA,GAAE,UAASA,GAAE,kBAAiBA,GAAE,QAAOA,GAAE,OAAMA,GAAE,UAASA,GAAE,gBAAeA,GAAE,UAASA,GAAE,aAAYA,GAAE,GAAG;AAAA,MAAC,EAAE,SAAM,SAASA,IAAEC,IAAEC,IAAEC,IAAEC,IAAEC,IAAEC,IAAE,GAAE,GAAE,GAAEC,IAAEC,IAAE,GAAE,GAAE,GAAE,GAAEC,IAAE,GAAE,GAAE,GAAEC,IAAEC,IAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAEC,IAAE,GAAE,GAAE,GAAE,GAAEC,IAAE,GAAE,GAAEC,IAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAEC,MAAE,GAAE,GAAE,GAAE,GAAE,IAAG,IAAGC,KAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG;AAAC;AAAa,iBAAS,GAAGhB,IAAE;AAAC,iBAAOA,MAAG,YAAU,OAAOA,MAAG,aAAYA,KAAEA,KAAE,EAAC,SAAQA,GAAC;AAAA,QAAC;AAAC,YAAI,KAAG,GAAGC,EAAC,GAAE,KAAG,GAAGE,EAAC,GAAE,KAAG,GAAGC,EAAC,GAAE,KAAG,GAAGC,EAAC,GAAE,KAAG,GAAGC,EAAC,GAAE,KAAG,GAAG,CAAC,GAAE,KAAG,GAAG,CAAC,GAAE,KAAG,GAAG,CAAC,GAAE,KAAG,GAAGC,EAAC,GAAE,KAAG,GAAGC,EAAC,GAAE,KAAG,GAAG,CAAC,GAAE,KAAG,GAAG,CAAC,GAAE,KAAG,GAAG,CAAC,GAAE,KAAG,GAAG,CAAC,GAAE,KAAG,GAAGC,EAAC,GAAE,KAAG,GAAG,CAAC,GAAE,KAAG,GAAG,CAAC,GAAE,KAAG,GAAG,CAAC,GAAE,KAAG,GAAGC,EAAC,GAAE,KAAG,GAAGC,EAAC,GAAE,KAAG,GAAG,CAAC,GAAE,KAAG,GAAG,CAAC,GAAE,KAAG,GAAG,CAAC,GAAE,KAAG,GAAG,CAAC,GAAE,KAAG,GAAG,CAAC,GAAE,KAAG,GAAG,CAAC,GAAE,KAAG,GAAG,CAAC,GAAE,KAAG,GAAG,CAAC,GAAE,KAAG,GAAG,CAAC,GAAE,KAAG,GAAGC,EAAC,GAAE,KAAG,GAAG,CAAC,GAAE,KAAG,GAAG,CAAC,GAAE,KAAG,GAAG,CAAC,GAAE,KAAG,GAAG,CAAC,GAAE,KAAG,GAAGC,EAAC,GAAE,KAAG,GAAG,CAAC,GAAE,KAAG,GAAG,CAAC,GAAE,KAAG,GAAGC,EAAC,GAAE,KAAG,GAAG,CAAC,GAAE,KAAG,GAAG,CAAC,GAAE,KAAG,GAAG,CAAC,GAAE,KAAG,GAAG,CAAC,GAAE,KAAG,GAAG,CAAC,GAAE,KAAG,GAAG,CAAC,GAAE,KAAG,GAAG,CAAC,GAAE,KAAG,GAAG,CAAC,GAAE,KAAG,GAAGC,IAAC,GAAE,KAAG,GAAG,CAAC,GAAE,KAAG,GAAG,CAAC,GAAE,KAAG,GAAG,CAAC,GAAE,KAAG,GAAG,CAAC,GAAE,KAAG,GAAG,EAAE,GAAE,KAAG,GAAG,EAAE,GAAE,KAAG,GAAGC,GAAE,GAAE,KAAG,GAAG,EAAE,GAAE,KAAG,GAAG,EAAE,GAAE,KAAG,GAAG,EAAE,GAAE,KAAG,GAAG,EAAE,GAAE,KAAG,GAAG,EAAE,GAAE,KAAG,GAAG,EAAE;AAAE,iBAAS,GAAGhB,IAAEC,IAAE;AAAC,cAAIC,KAAE,OAAO,KAAKF,EAAC;AAAE,cAAG,OAAO,uBAAsB;AAAC,gBAAIG,KAAE,OAAO,sBAAsBH,EAAC;AAAE,YAAAC,OAAIE,KAAEA,GAAE,OAAQ,SAASF,IAAE;AAAC,qBAAO,OAAO,yBAAyBD,IAAEC,EAAC,EAAE;AAAA,YAAU,CAAE,IAAGC,GAAE,KAAK,MAAMA,IAAEC,EAAC;AAAA,UAAC;AAAC,iBAAOD;AAAA,QAAC;AAAC,iBAAS,GAAGF,IAAE;AAAC,mBAAQC,KAAE,GAAEA,KAAE,UAAU,QAAOA,MAAI;AAAC,gBAAIC,KAAE,QAAM,UAAUD,EAAC,IAAE,UAAUA,EAAC,IAAE,CAAC;AAAE,YAAAA,KAAE,IAAE,GAAG,OAAOC,EAAC,GAAE,IAAE,EAAE,QAAS,SAASD,IAAE;AAAC,iBAAGD,IAAEC,IAAEC,GAAED,EAAC,CAAC;AAAA,YAAC,CAAE,IAAE,OAAO,4BAA0B,OAAO,iBAAiBD,IAAE,OAAO,0BAA0BE,EAAC,CAAC,IAAE,GAAG,OAAOA,EAAC,CAAC,EAAE,QAAS,SAASD,IAAE;AAAC,qBAAO,eAAeD,IAAEC,IAAE,OAAO,yBAAyBC,IAAED,EAAC,CAAC;AAAA,YAAC,CAAE;AAAA,UAAC;AAAC,iBAAOD;AAAA,QAAC;AAAC,iBAAS,GAAGA,IAAE;AAAC,iBAAO,KAAG,cAAY,OAAO,UAAQ,YAAU,OAAO,OAAO,WAAS,SAASA,IAAE;AAAC,mBAAO,OAAOA;AAAA,UAAC,IAAE,SAASA,IAAE;AAAC,mBAAOA,MAAG,cAAY,OAAO,UAAQA,GAAE,gBAAc,UAAQA,OAAI,OAAO,YAAU,WAAS,OAAOA;AAAA,UAAC,GAAE,GAAGA,EAAC;AAAA,QAAC;AAAC,iBAAS,GAAGA,IAAEC,IAAE;AAAC,cAAG,EAAED,cAAaC;AAAG,kBAAM,IAAI,UAAU,mCAAmC;AAAA,QAAC;AAAC,iBAAS,GAAGD,IAAEC,IAAE;AAAC,mBAAQC,KAAE,GAAEA,KAAED,GAAE,QAAOC,MAAI;AAAC,gBAAIC,KAAEF,GAAEC,EAAC;AAAE,YAAAC,GAAE,aAAWA,GAAE,cAAY,OAAGA,GAAE,eAAa,MAAG,WAAUA,OAAIA,GAAE,WAAS,OAAI,OAAO,eAAeH,IAAE,GAAGG,GAAE,GAAG,GAAEA,EAAC;AAAA,UAAC;AAAA,QAAC;AAAC,iBAAS,GAAGH,IAAEC,IAAEC,IAAE;AAAC,iBAAOD,MAAG,GAAGD,GAAE,WAAUC,EAAC,GAAEC,MAAG,GAAGF,IAAEE,EAAC,GAAE,OAAO,eAAeF,IAAE,aAAY,EAAC,UAAS,MAAE,CAAC,GAAEA;AAAA,QAAC;AAAC,iBAAS,GAAGA,IAAEC,IAAEC,IAAE;AAAC,kBAAOD,KAAE,GAAGA,EAAC,MAAKD,KAAE,OAAO,eAAeA,IAAEC,IAAE,EAAC,OAAMC,IAAE,YAAW,MAAG,cAAa,MAAG,UAAS,KAAE,CAAC,IAAEF,GAAEC,EAAC,IAAEC,IAAEF;AAAA,QAAC;AAAC,iBAAS,KAAI;AAAC,iBAAO,KAAG,OAAO,SAAO,OAAO,OAAO,KAAK,IAAE,SAASA,IAAE;AAAC,qBAAQC,KAAE,GAAEA,KAAE,UAAU,QAAOA,MAAI;AAAC,kBAAIC,KAAE,UAAUD,EAAC;AAAE,uBAAQE,MAAKD;AAAE,uBAAO,UAAU,eAAe,KAAKA,IAAEC,EAAC,MAAIH,GAAEG,EAAC,IAAED,GAAEC,EAAC;AAAA,YAAE;AAAC,mBAAOH;AAAA,UAAC,GAAE,GAAG,MAAM,MAAK,SAAS;AAAA,QAAC;AAAC,iBAAS,GAAGA,IAAEC,IAAE;AAAC,cAAG,cAAY,OAAOA,MAAG,SAAOA;AAAE,kBAAM,IAAI,UAAU,oDAAoD;AAAE,UAAAD,GAAE,YAAU,OAAO,OAAOC,MAAGA,GAAE,WAAU,EAAC,aAAY,EAAC,OAAMD,IAAE,UAAS,MAAG,cAAa,KAAE,EAAC,CAAC,GAAE,OAAO,eAAeA,IAAE,aAAY,EAAC,UAAS,MAAE,CAAC,GAAEC,MAAG,GAAGD,IAAEC,EAAC;AAAA,QAAC;AAAC,iBAAS,GAAGD,IAAE;AAAC,iBAAO,KAAG,OAAO,iBAAe,OAAO,eAAe,KAAK,IAAE,SAASA,IAAE;AAAC,mBAAOA,GAAE,aAAW,OAAO,eAAeA,EAAC;AAAA,UAAC,GAAE,GAAGA,EAAC;AAAA,QAAC;AAAC,iBAAS,GAAGA,IAAEC,IAAE;AAAC,iBAAO,KAAG,OAAO,iBAAe,OAAO,eAAe,KAAK,IAAE,SAASD,IAAEC,IAAE;AAAC,mBAAOD,GAAE,YAAUC,IAAED;AAAA,UAAC,GAAE,GAAGA,IAAEC,EAAC;AAAA,QAAC;AAAC,iBAAS,GAAGD,IAAE;AAAC,cAAG,WAASA;AAAE,kBAAM,IAAI,eAAe,2DAA2D;AAAE,iBAAOA;AAAA,QAAC;AAAC,iBAAS,GAAGA,IAAE;AAAC,cAAIC,KAAE,WAAU;AAAC,gBAAG,eAAa,OAAO,WAAS,CAAC,QAAQ;AAAU,qBAAM;AAAG,gBAAG,QAAQ,UAAU;AAAK,qBAAM;AAAG,gBAAG,cAAY,OAAO;AAAM,qBAAM;AAAG,gBAAG;AAAC,qBAAO,QAAQ,UAAU,QAAQ,KAAK,QAAQ,UAAU,SAAQ,CAAC,GAAG,WAAU;AAAA,cAAC,CAAE,CAAC,GAAE;AAAA,YAAE,SAAOD,IAAE;AAAC,qBAAM;AAAA,YAAE;AAAA,UAAC,EAAE;AAAE,iBAAO,WAAU;AAAC,gBAAIE,IAAEC,KAAE,GAAGH,EAAC;AAAE,gBAAGC,IAAE;AAAC,kBAAIG,KAAE,GAAG,IAAI,EAAE;AAAY,cAAAF,KAAE,QAAQ,UAAUC,IAAE,WAAUC,EAAC;AAAA,YAAC;AAAM,cAAAF,KAAEC,GAAE,MAAM,MAAK,SAAS;AAAE,mBAAO,SAASH,IAAEC,IAAE;AAAC,kBAAGA,OAAI,YAAU,OAAOA,MAAG,cAAY,OAAOA;AAAG,uBAAOA;AAAE,kBAAG,WAASA;AAAE,sBAAM,IAAI,UAAU,0DAA0D;AAAE,qBAAO,GAAGD,EAAC;AAAA,YAAC,EAAE,MAAKE,EAAC;AAAA,UAAC;AAAA,QAAC;AAAC,iBAAS,GAAGF,IAAE;AAAC,iBAAO,SAASA,IAAE;AAAC,gBAAG,MAAM,QAAQA,EAAC;AAAE,qBAAO,GAAGA,EAAC;AAAA,UAAC,EAAEA,EAAC,KAAG,SAASA,IAAE;AAAC,gBAAG,eAAa,OAAO,UAAQ,QAAMA,GAAE,OAAO,QAAQ,KAAG,QAAMA,GAAE,YAAY;AAAE,qBAAO,MAAM,KAAKA,EAAC;AAAA,UAAC,EAAEA,EAAC,KAAG,SAASA,IAAEC,IAAE;AAAC,gBAAG,CAACD;AAAE;AAAO,gBAAG,YAAU,OAAOA;AAAE,qBAAO,GAAGA,IAAEC,EAAC;AAAE,gBAAIC,KAAE,OAAO,UAAU,SAAS,KAAKF,EAAC,EAAE,MAAM,GAAE,EAAE;AAAE,yBAAWE,MAAGF,GAAE,gBAAcE,KAAEF,GAAE,YAAY;AAAM,gBAAG,UAAQE,MAAG,UAAQA;AAAE,qBAAO,MAAM,KAAKF,EAAC;AAAE,gBAAG,gBAAcE,MAAG,2CAA2C,KAAKA,EAAC;AAAE,qBAAO,GAAGF,IAAEC,EAAC;AAAA,UAAC,EAAED,EAAC,KAAG,WAAU;AAAC,kBAAM,IAAI,UAAU,sIAAsI;AAAA,UAAC,EAAE;AAAA,QAAC;AAAC,iBAAS,GAAGA,IAAEC,IAAE;AAAC,WAAC,QAAMA,MAAGA,KAAED,GAAE,YAAUC,KAAED,GAAE;AAAQ,mBAAQE,KAAE,GAAEC,KAAE,IAAI,MAAMF,EAAC,GAAEC,KAAED,IAAEC;AAAI,YAAAC,GAAED,EAAC,IAAEF,GAAEE,EAAC;AAAE,iBAAOC;AAAA,QAAC;AAAC,iBAAS,GAAGH,IAAE;AAAC,cAAIC,KAAE,SAASD,IAAEC,IAAE;AAAC,gBAAG,YAAU,OAAOD,MAAG,SAAOA;AAAE,qBAAOA;AAAE,gBAAIE,KAAEF,GAAE,OAAO,WAAW;AAAE,gBAAG,WAASE,IAAE;AAAC,kBAAIC,KAAED,GAAE,KAAKF,IAAEC,MAAG,SAAS;AAAE,kBAAG,YAAU,OAAOE;AAAE,uBAAOA;AAAE,oBAAM,IAAI,UAAU,8CAA8C;AAAA,YAAC;AAAC,oBAAO,aAAWF,KAAE,SAAO,QAAQD,EAAC;AAAA,UAAC,EAAEA,IAAE,QAAQ;AAAE,iBAAM,YAAU,OAAOC,KAAEA,KAAE,OAAOA,EAAC;AAAA,QAAC;AAAC,YAAI,KAAG,SAASD,IAAEC,IAAE;AAAC,kBAAOD,IAAE;AAAA,YAAC,KAAI;AAAI,qBAAOC,GAAE,KAAK,EAAC,OAAM,QAAO,CAAC;AAAA,YAAE,KAAI;AAAK,qBAAOA,GAAE,KAAK,EAAC,OAAM,SAAQ,CAAC;AAAA,YAAE,KAAI;AAAM,qBAAOA,GAAE,KAAK,EAAC,OAAM,OAAM,CAAC;AAAA,YAAE;AAAQ,qBAAOA,GAAE,KAAK,EAAC,OAAM,OAAM,CAAC;AAAA,UAAC;AAAA,QAAC,GAAE,KAAG,SAASD,IAAEC,IAAE;AAAC,kBAAOD,IAAE;AAAA,YAAC,KAAI;AAAI,qBAAOC,GAAE,KAAK,EAAC,OAAM,QAAO,CAAC;AAAA,YAAE,KAAI;AAAK,qBAAOA,GAAE,KAAK,EAAC,OAAM,SAAQ,CAAC;AAAA,YAAE,KAAI;AAAM,qBAAOA,GAAE,KAAK,EAAC,OAAM,OAAM,CAAC;AAAA,YAAE;AAAQ,qBAAOA,GAAE,KAAK,EAAC,OAAM,OAAM,CAAC;AAAA,UAAC;AAAA,QAAC,GAAE,KAAG,EAAC,GAAE,IAAG,GAAE,SAASD,IAAEC,IAAE;AAAC,cAAIC,IAAEC,KAAEH,GAAE,MAAM,WAAW,KAAG,CAAC,GAAEI,KAAED,GAAE,CAAC,GAAEE,KAAEF,GAAE,CAAC;AAAE,cAAG,CAACE;AAAE,mBAAO,GAAGL,IAAEC,EAAC;AAAE,kBAAOG,IAAE;AAAA,YAAC,KAAI;AAAI,cAAAF,KAAED,GAAE,SAAS,EAAC,OAAM,QAAO,CAAC;AAAE;AAAA,YAAM,KAAI;AAAK,cAAAC,KAAED,GAAE,SAAS,EAAC,OAAM,SAAQ,CAAC;AAAE;AAAA,YAAM,KAAI;AAAM,cAAAC,KAAED,GAAE,SAAS,EAAC,OAAM,OAAM,CAAC;AAAE;AAAA,YAAM;AAAQ,cAAAC,KAAED,GAAE,SAAS,EAAC,OAAM,OAAM,CAAC;AAAA,UAAC;AAAC,iBAAOC,GAAE,QAAQ,YAAW,GAAGE,IAAEH,EAAC,CAAC,EAAE,QAAQ,YAAW,GAAGI,IAAEJ,EAAC,CAAC;AAAA,QAAC,EAAC,GAAE,KAAG,IAAG,KAAG;AAAoC,iBAAS,GAAGD,IAAE;AAAC,cAAIC,KAAED,KAAE,YAAU,OAAOA,MAAGA,cAAa,SAAO,GAAG,QAAQA,EAAC,IAAE,GAAG,QAAQA,EAAC,IAAE,oBAAI;AAAK,iBAAO,GAAGC,EAAC,IAAEA,KAAE;AAAA,QAAI;AAAC,iBAAS,GAAGD,IAAEC,IAAE;AAAC,iBAAOA,KAAEA,MAAG,oBAAI,KAAK,UAAU,GAAE,GAAG,QAAQD,EAAC,KAAG,CAAC,GAAG,QAAQA,IAAEC,EAAC;AAAA,QAAC;AAAC,iBAAS,GAAGD,IAAEC,IAAEC,IAAE;AAAC,cAAG,SAAOA;AAAE,mBAAO,GAAG,QAAQF,IAAEC,IAAE,EAAC,sBAAqB,KAAE,CAAC;AAAE,cAAIE,KAAE,GAAGD,EAAC;AAAE,iBAAOA,MAAG,CAACC,MAAG,QAAQ,KAAK,2DAA2D,OAAOD,IAAE,KAAK,CAAC,GAAE,CAACC,MAAG,GAAG,KAAG,GAAG,GAAG,CAAC,MAAIA,KAAE,GAAG,GAAG,CAAC,IAAG,GAAG,QAAQH,IAAEC,IAAE,EAAC,QAAOE,MAAG,MAAK,sBAAqB,KAAE,CAAC;AAAA,QAAC;AAAC,iBAAS,GAAGH,IAAEC,IAAE;AAAC,cAAIC,KAAED,GAAE,YAAWE,KAAEF,GAAE;AAAO,iBAAOD,MAAG,GAAGA,IAAE,MAAM,QAAQE,EAAC,IAAEA,GAAE,CAAC,IAAEA,IAAEC,EAAC,KAAG;AAAA,QAAE;AAAC,iBAAS,GAAGH,IAAEC,IAAE;AAAC,cAAIC,KAAED,GAAE,MAAKE,KAAE,WAASD,KAAE,IAAEA,IAAEE,KAAEH,GAAE,QAAOI,KAAE,WAASD,KAAE,IAAEA,IAAEE,KAAEL,GAAE,QAAOgB,KAAE,WAASX,KAAE,IAAEA;AAAE,iBAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQN,IAAEiB,EAAC,GAAEZ,EAAC,GAAEF,EAAC;AAAA,QAAC;AAAC,iBAAS,GAAGH,IAAEC,IAAEC,IAAE;AAAC,cAAIC,KAAE,GAAGF,MAAG,GAAG,CAAC;AAAE,iBAAO,GAAG,QAAQD,IAAE,EAAC,QAAOG,IAAE,cAAaD,GAAC,CAAC;AAAA,QAAC;AAAC,iBAAS,GAAGF,IAAE;AAAC,iBAAO,GAAG,QAAQA,EAAC;AAAA,QAAC;AAAC,iBAAS,GAAGA,IAAE;AAAC,iBAAO,GAAG,QAAQA,EAAC;AAAA,QAAC;AAAC,iBAAS,GAAGA,IAAE;AAAC,iBAAO,GAAG,QAAQA,EAAC;AAAA,QAAC;AAAC,iBAAS,KAAI;AAAC,iBAAO,GAAG,QAAQ,GAAG,CAAC;AAAA,QAAC;AAAC,iBAAS,GAAGA,IAAEC,IAAE;AAAC,iBAAOD,MAAGC,KAAE,GAAG,QAAQD,IAAEC,EAAC,IAAE,CAACD,MAAG,CAACC;AAAA,QAAC;AAAC,iBAAS,GAAGD,IAAEC,IAAE;AAAC,iBAAOD,MAAGC,KAAE,GAAG,QAAQD,IAAEC,EAAC,IAAE,CAACD,MAAG,CAACC;AAAA,QAAC;AAAC,iBAAS,GAAGD,IAAEC,IAAE;AAAC,iBAAOD,MAAGC,KAAE,GAAG,QAAQD,IAAEC,EAAC,IAAE,CAACD,MAAG,CAACC;AAAA,QAAC;AAAC,iBAAS,GAAGD,IAAEC,IAAE;AAAC,iBAAOD,MAAGC,KAAE,GAAG,QAAQD,IAAEC,EAAC,IAAE,CAACD,MAAG,CAACC;AAAA,QAAC;AAAC,iBAAS,GAAGD,IAAEC,IAAE;AAAC,iBAAOD,MAAGC,KAAE,GAAG,QAAQD,IAAEC,EAAC,IAAE,CAACD,MAAG,CAACC;AAAA,QAAC;AAAC,iBAAS,GAAGD,IAAEC,IAAEC,IAAE;AAAC,cAAIC,IAAEC,KAAE,GAAG,QAAQH,EAAC,GAAEI,KAAE,GAAG,QAAQH,EAAC;AAAE,cAAG;AAAC,YAAAC,KAAE,GAAG,QAAQH,IAAE,EAAC,OAAMI,IAAE,KAAIC,GAAC,CAAC;AAAA,UAAC,SAAOL,IAAE;AAAC,YAAAG,KAAE;AAAA,UAAE;AAAC,iBAAOA;AAAA,QAAC;AAAC,iBAAS,KAAI;AAAC,kBAAO,eAAa,OAAO,SAAO,SAAO,YAAY;AAAA,QAAY;AAAC,iBAAS,GAAGH,IAAE;AAAC,cAAG,YAAU,OAAOA,IAAE;AAAC,gBAAIC,KAAE,eAAa,OAAO,SAAO,SAAO;AAAW,mBAAOA,GAAE,iBAAeA,GAAE,eAAeD,EAAC,IAAE;AAAA,UAAI;AAAC,iBAAOA;AAAA,QAAC;AAAC,iBAAS,GAAGA,IAAEC,IAAE;AAAC,iBAAO,GAAG,GAAG,QAAQ,GAAG,GAAED,EAAC,GAAE,QAAOC,EAAC;AAAA,QAAC;AAAC,iBAAS,GAAGD,IAAEC,IAAE;AAAC,iBAAO,GAAG,GAAG,QAAQ,GAAG,GAAED,EAAC,GAAE,OAAMC,EAAC;AAAA,QAAC;AAAC,iBAAS,GAAGD,IAAE;AAAC,cAAIC,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE,CAAC,GAAEC,KAAED,GAAE,SAAQE,KAAEF,GAAE,SAAQG,KAAEH,GAAE,cAAaI,KAAEJ,GAAE,sBAAqBK,KAAEL,GAAE,cAAagB,KAAEhB,GAAE,sBAAqBiB,KAAEjB,GAAE;AAAW,iBAAO,GAAGD,IAAE,EAAC,SAAQE,IAAE,SAAQC,GAAC,CAAC,KAAGC,MAAGA,GAAE,KAAM,SAASH,IAAE;AAAC,mBAAO,GAAGD,IAAEC,EAAC;AAAA,UAAC,CAAE,KAAGI,MAAGA,GAAE,KAAM,SAASJ,IAAE;AAAC,gBAAIC,KAAED,GAAE,OAAME,KAAEF,GAAE;AAAI,mBAAO,GAAG,QAAQD,IAAE,EAAC,OAAME,IAAE,KAAIC,GAAC,CAAC;AAAA,UAAC,CAAE,KAAGG,MAAG,CAACA,GAAE,KAAM,SAASL,IAAE;AAAC,mBAAO,GAAGD,IAAEC,EAAC;AAAA,UAAC,CAAE,KAAGgB,MAAG,CAACA,GAAE,KAAM,SAAShB,IAAE;AAAC,gBAAIC,KAAED,GAAE,OAAME,KAAEF,GAAE;AAAI,mBAAO,GAAG,QAAQD,IAAE,EAAC,OAAME,IAAE,KAAIC,GAAC,CAAC;AAAA,UAAC,CAAE,KAAGe,MAAG,CAACA,GAAE,GAAGlB,EAAC,CAAC,KAAG;AAAA,QAAE;AAAC,iBAAS,GAAGA,IAAE;AAAC,cAAIC,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE,CAAC,GAAEC,KAAED,GAAE,cAAaE,KAAEF,GAAE;AAAqB,iBAAOE,MAAGA,GAAE,SAAO,IAAEA,GAAE,KAAM,SAASF,IAAE;AAAC,gBAAIC,KAAED,GAAE,OAAME,KAAEF,GAAE;AAAI,mBAAO,GAAG,QAAQD,IAAE,EAAC,OAAME,IAAE,KAAIC,GAAC,CAAC;AAAA,UAAC,CAAE,IAAED,MAAGA,GAAE,KAAM,SAASD,IAAE;AAAC,mBAAO,GAAGD,IAAEC,EAAC;AAAA,UAAC,CAAE,KAAG;AAAA,QAAE;AAAC,iBAAS,GAAGD,IAAE;AAAC,cAAIC,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE,CAAC,GAAEC,KAAED,GAAE,SAAQE,KAAEF,GAAE,SAAQG,KAAEH,GAAE,cAAaI,KAAEJ,GAAE,cAAaK,KAAEL,GAAE;AAAW,iBAAO,GAAGD,IAAE,EAAC,SAAQ,GAAG,QAAQE,EAAC,GAAE,SAAQ,GAAG,QAAQC,EAAC,EAAC,CAAC,KAAGC,MAAGA,GAAE,KAAM,SAASH,IAAE;AAAC,mBAAO,GAAGD,IAAEC,EAAC;AAAA,UAAC,CAAE,KAAGI,MAAG,CAACA,GAAE,KAAM,SAASJ,IAAE;AAAC,mBAAO,GAAGD,IAAEC,EAAC;AAAA,UAAC,CAAE,KAAGK,MAAG,CAACA,GAAE,GAAGN,EAAC,CAAC,KAAG;AAAA,QAAE;AAAC,iBAAS,GAAGA,IAAEC,IAAEC,IAAEC,IAAE;AAAC,cAAIC,KAAE,GAAG,QAAQJ,EAAC,GAAEK,KAAE,GAAG,QAAQL,EAAC,GAAEM,KAAE,GAAG,QAAQL,EAAC,GAAEgB,KAAE,GAAG,QAAQhB,EAAC,GAAEiB,KAAE,GAAG,QAAQf,EAAC;AAAE,iBAAOC,OAAIE,MAAGF,OAAIc,KAAEb,MAAGH,MAAGA,MAAGe,KAAEb,KAAEE,KAAEY,OAAId,MAAGC,MAAGH,MAAGgB,OAAIZ,MAAGW,MAAGf,MAAGgB,KAAEZ,MAAGY,KAAEd,KAAE;AAAA,QAAM;AAAC,iBAAS,GAAGJ,IAAE;AAAC,cAAIC,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE,CAAC,GAAEC,KAAED,GAAE,SAAQE,KAAEF,GAAE,SAAQG,KAAEH,GAAE,cAAaI,KAAEJ,GAAE,cAAaK,KAAEL,GAAE;AAAW,iBAAO,GAAGD,IAAE,EAAC,SAAQE,IAAE,SAAQC,GAAC,CAAC,KAAGC,MAAGA,GAAE,KAAM,SAASH,IAAE;AAAC,mBAAO,GAAGD,IAAEC,EAAC;AAAA,UAAC,CAAE,KAAGI,MAAG,CAACA,GAAE,KAAM,SAASJ,IAAE;AAAC,mBAAO,GAAGD,IAAEC,EAAC;AAAA,UAAC,CAAE,KAAGK,MAAG,CAACA,GAAE,GAAGN,EAAC,CAAC,KAAG;AAAA,QAAE;AAAC,iBAAS,GAAGA,IAAEC,IAAEC,IAAE;AAAC,cAAG,CAAC,GAAG,QAAQD,EAAC,KAAG,CAAC,GAAG,QAAQC,EAAC;AAAE,mBAAM;AAAG,cAAIC,KAAE,GAAG,QAAQF,EAAC,GAAEG,KAAE,GAAG,QAAQF,EAAC;AAAE,iBAAOC,MAAGH,MAAGI,MAAGJ;AAAA,QAAC;AAAC,iBAAS,GAAGA,IAAE;AAAC,cAAIC,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE,CAAC,GAAEC,KAAED,GAAE,SAAQE,KAAEF,GAAE,SAAQG,KAAEH,GAAE,cAAaI,KAAEJ,GAAE,cAAaK,KAAEL,GAAE,YAAWgB,KAAE,IAAI,KAAKjB,IAAE,GAAE,CAAC;AAAE,iBAAO,GAAGiB,IAAE,EAAC,SAAQ,GAAG,QAAQf,EAAC,GAAE,SAAQ,GAAG,QAAQC,EAAC,EAAC,CAAC,KAAGC,MAAGA,GAAE,KAAM,SAASJ,IAAE;AAAC,mBAAO,GAAGiB,IAAEjB,EAAC;AAAA,UAAC,CAAE,KAAGK,MAAG,CAACA,GAAE,KAAM,SAASL,IAAE;AAAC,mBAAO,GAAGiB,IAAEjB,EAAC;AAAA,UAAC,CAAE,KAAGM,MAAG,CAACA,GAAE,GAAGW,EAAC,CAAC,KAAG;AAAA,QAAE;AAAC,iBAAS,GAAGjB,IAAEC,IAAEC,IAAEC,IAAE;AAAC,cAAIC,KAAE,GAAG,QAAQJ,EAAC,GAAEK,KAAE,GAAG,QAAQL,EAAC,GAAEM,KAAE,GAAG,QAAQL,EAAC,GAAEgB,KAAE,GAAG,QAAQhB,EAAC,GAAEiB,KAAE,GAAG,QAAQf,EAAC;AAAE,iBAAOC,OAAIE,MAAGF,OAAIc,KAAEb,MAAGH,MAAGA,MAAGe,KAAEb,KAAEE,KAAEY,OAAId,MAAGC,MAAGH,MAAGgB,OAAIZ,MAAGW,MAAGf,MAAGgB,KAAEZ,MAAGY,KAAEd,KAAE;AAAA,QAAM;AAAC,iBAAS,GAAGJ,IAAE;AAAC,cAAIC,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE,CAAC,GAAEC,KAAED,GAAE,SAAQE,KAAEF,GAAE;AAAQ,iBAAOC,MAAG,GAAG,QAAQF,IAAEE,EAAC,IAAE,KAAGC,MAAG,GAAG,QAAQH,IAAEG,EAAC,IAAE;AAAA,QAAC;AAAC,iBAAS,GAAGH,IAAEC,IAAE;AAAC,iBAAOA,GAAE,KAAM,SAASA,IAAE;AAAC,mBAAO,GAAG,QAAQA,EAAC,MAAI,GAAG,QAAQD,EAAC,KAAG,GAAG,QAAQC,EAAC,MAAI,GAAG,QAAQD,EAAC;AAAA,UAAC,CAAE;AAAA,QAAC;AAAC,iBAAS,GAAGA,IAAE;AAAC,cAAIC,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE,CAAC,GAAEC,KAAED,GAAE,cAAaE,KAAEF,GAAE,cAAaG,KAAEH,GAAE;AAAW,iBAAOC,MAAG,GAAGF,IAAEE,EAAC,KAAGC,MAAG,CAAC,GAAGH,IAAEG,EAAC,KAAGC,MAAG,CAACA,GAAEJ,EAAC,KAAG;AAAA,QAAE;AAAC,iBAAS,GAAGA,IAAEC,IAAE;AAAC,cAAIC,KAAED,GAAE,SAAQE,KAAEF,GAAE;AAAQ,cAAG,CAACC,MAAG,CAACC;AAAE,kBAAM,IAAI,MAAM,yCAAyC;AAAE,cAAIC,IAAEC,KAAE,GAAG,GAAEC,KAAE,GAAG,QAAQ,GAAG,QAAQD,IAAE,GAAG,QAAQL,EAAC,CAAC,GAAE,GAAG,QAAQA,EAAC,CAAC,GAAEiB,KAAE,GAAG,QAAQ,GAAG,QAAQZ,IAAE,GAAG,QAAQH,EAAC,CAAC,GAAE,GAAG,QAAQA,EAAC,CAAC,GAAEgB,KAAE,GAAG,QAAQ,GAAG,QAAQb,IAAE,GAAG,QAAQF,EAAC,CAAC,GAAE,GAAG,QAAQA,EAAC,CAAC;AAAE,cAAG;AAAC,YAAAC,KAAE,CAAC,GAAG,QAAQE,IAAE,EAAC,OAAMW,IAAE,KAAIC,GAAC,CAAC;AAAA,UAAC,SAAOlB,IAAE;AAAC,YAAAI,KAAE;AAAA,UAAE;AAAC,iBAAOA;AAAA,QAAC;AAAC,iBAAS,GAAGJ,IAAE;AAAC,cAAIC,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE,CAAC,GAAEC,KAAED,GAAE,SAAQE,KAAEF,GAAE,cAAaG,KAAE,GAAG,QAAQJ,IAAE,CAAC;AAAE,iBAAOE,MAAG,GAAG,QAAQA,IAAEE,EAAC,IAAE,KAAGD,MAAGA,GAAE,MAAO,SAASH,IAAE;AAAC,mBAAO,GAAG,QAAQA,IAAEI,EAAC,IAAE;AAAA,UAAC,CAAE,KAAG;AAAA,QAAE;AAAC,iBAAS,GAAGJ,IAAE;AAAC,cAAIC,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE,CAAC,GAAEC,KAAED,GAAE,SAAQE,KAAEF,GAAE,cAAaG,KAAE,GAAG,QAAQJ,IAAE,CAAC;AAAE,iBAAOE,MAAG,GAAG,QAAQE,IAAEF,EAAC,IAAE,KAAGC,MAAGA,GAAE,MAAO,SAASH,IAAE;AAAC,mBAAO,GAAG,QAAQI,IAAEJ,EAAC,IAAE;AAAA,UAAC,CAAE,KAAG;AAAA,QAAE;AAAC,iBAAS,GAAGA,IAAE;AAAC,cAAIC,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE,CAAC,GAAEC,KAAED,GAAE,SAAQE,KAAEF,GAAE,cAAaG,KAAE,GAAG,QAAQJ,IAAE,CAAC;AAAE,iBAAOE,MAAG,GAAG,QAAQA,IAAEE,EAAC,IAAE,KAAGD,MAAGA,GAAE,MAAO,SAASH,IAAE;AAAC,mBAAO,GAAG,QAAQA,IAAEI,EAAC,IAAE;AAAA,UAAC,CAAE,KAAG;AAAA,QAAE;AAAC,iBAAS,GAAGJ,IAAE;AAAC,cAAIC,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE,CAAC,GAAEC,KAAED,GAAE,SAAQE,KAAEF,GAAE,cAAaG,KAAE,GAAG,QAAQJ,IAAE,CAAC;AAAE,iBAAOE,MAAG,GAAG,QAAQE,IAAEF,EAAC,IAAE,KAAGC,MAAGA,GAAE,MAAO,SAASH,IAAE;AAAC,mBAAO,GAAG,QAAQI,IAAEJ,EAAC,IAAE;AAAA,UAAC,CAAE,KAAG;AAAA,QAAE;AAAC,iBAAS,GAAGA,IAAE;AAAC,cAAIC,KAAED,GAAE,SAAQE,KAAEF,GAAE;AAAa,cAAGE,MAAGD,IAAE;AAAC,gBAAIE,KAAED,GAAE,OAAQ,SAASF,IAAE;AAAC,qBAAO,GAAG,QAAQA,IAAEC,EAAC,KAAG;AAAA,YAAC,CAAE;AAAE,mBAAO,GAAG,QAAQE,EAAC;AAAA,UAAC;AAAC,iBAAOD,KAAE,GAAG,QAAQA,EAAC,IAAED;AAAA,QAAC;AAAC,iBAASkB,IAAGnB,IAAE;AAAC,cAAIC,KAAED,GAAE,SAAQE,KAAEF,GAAE;AAAa,cAAGE,MAAGD,IAAE;AAAC,gBAAIE,KAAED,GAAE,OAAQ,SAASF,IAAE;AAAC,qBAAO,GAAG,QAAQA,IAAEC,EAAC,KAAG;AAAA,YAAC,CAAE;AAAE,mBAAO,GAAG,QAAQE,EAAC;AAAA,UAAC;AAAC,iBAAOD,KAAE,GAAG,QAAQA,EAAC,IAAED;AAAA,QAAC;AAAC,iBAAS,KAAI;AAAC,mBAAQD,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE,CAAC,GAAEC,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE,sCAAqCC,KAAE,oBAAI,OAAIC,KAAE,GAAEC,KAAEJ,GAAE,QAAOG,KAAEC,IAAED,MAAI;AAAC,gBAAIE,KAAEL,GAAEG,EAAC;AAAE,gBAAG,GAAG,QAAQE,EAAC,GAAE;AAAC,kBAAIC,KAAE,GAAGD,IAAE,YAAY,GAAEY,KAAEf,GAAE,IAAII,EAAC,KAAG,CAAC;AAAE,cAAAW,GAAE,SAAShB,EAAC,MAAIgB,GAAE,KAAKhB,EAAC,GAAEC,GAAE,IAAII,IAAEW,EAAC;AAAA,YAAE,WAAS,aAAW,GAAGZ,EAAC,GAAE;AAAC,kBAAIa,KAAE,OAAO,KAAKb,EAAC,GAAEe,KAAEF,GAAE,CAAC,GAAEX,KAAEF,GAAEa,GAAE,CAAC,CAAC;AAAE,kBAAG,YAAU,OAAOE,MAAGb,GAAE,gBAAc;AAAM,yBAAQC,KAAE,GAAEa,KAAEd,GAAE,QAAOC,KAAEa,IAAEb,MAAI;AAAC,sBAAIc,KAAE,GAAGf,GAAEC,EAAC,GAAE,YAAY,GAAEe,KAAErB,GAAE,IAAIoB,EAAC,KAAG,CAAC;AAAE,kBAAAC,GAAE,SAASH,EAAC,MAAIG,GAAE,KAAKH,EAAC,GAAElB,GAAE,IAAIoB,IAAEC,EAAC;AAAA,gBAAE;AAAA,YAAC;AAAA,UAAC;AAAC,iBAAOrB;AAAA,QAAC;AAAC,iBAAS,GAAGF,IAAEC,IAAEC,IAAEC,IAAEC,IAAE;AAAC,mBAAQC,KAAED,GAAE,QAAOE,KAAE,CAAC,GAAEW,KAAE,GAAEA,KAAEZ,IAAEY,MAAI;AAAC,gBAAIC,KAAE,GAAG,QAAQ,GAAG,QAAQlB,IAAE,GAAG,QAAQI,GAAEa,EAAC,CAAC,CAAC,GAAE,GAAG,QAAQb,GAAEa,EAAC,CAAC,CAAC,GAAEG,KAAE,GAAG,QAAQpB,KAAGE,KAAE,KAAGC,EAAC;AAAE,eAAG,QAAQe,IAAEjB,EAAC,KAAG,GAAG,QAAQiB,IAAEE,EAAC,KAAGd,GAAE,KAAKF,GAAEa,EAAC,CAAC;AAAA,UAAC;AAAC,iBAAOX;AAAA,QAAC;AAAC,iBAAS,GAAGN,IAAE;AAAC,iBAAOA,KAAE,KAAG,IAAI,OAAOA,EAAC,IAAE,GAAG,OAAOA,EAAC;AAAA,QAAC;AAAC,iBAAS,GAAGA,IAAE;AAAC,cAAIC,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE,IAAGC,KAAE,KAAK,KAAK,GAAG,QAAQF,EAAC,IAAEC,EAAC,IAAEA;AAAE,iBAAM,EAAC,aAAYC,MAAGD,KAAE,IAAG,WAAUC,GAAC;AAAA,QAAC;AAAC,iBAAS,GAAGF,IAAEC,IAAEC,IAAEC,IAAE;AAAC,mBAAQC,KAAE,CAAC,GAAEC,KAAE,GAAEA,KAAE,IAAEJ,KAAE,GAAEI,MAAI;AAAC,gBAAIC,KAAEN,KAAEC,KAAEI,IAAEY,KAAE;AAAG,YAAAf,OAAIe,KAAE,GAAG,QAAQf,EAAC,KAAGI,KAAGH,MAAGc,OAAIA,KAAE,GAAG,QAAQd,EAAC,KAAGG,KAAGW,MAAGb,GAAE,KAAKE,EAAC;AAAA,UAAC;AAAC,iBAAOF;AAAA,QAAC;AAAC,YAAI,KAAG,SAASJ,IAAE;AAAC,aAAGG,IAAEH,EAAC;AAAE,cAAIE,KAAE,GAAGC,EAAC;AAAE,mBAASA,GAAEH,IAAE;AAAC,gBAAII;AAAE,eAAG,MAAKD,EAAC,GAAE,GAAG,GAAGC,KAAEF,GAAE,KAAK,MAAKF,EAAC,CAAC,GAAE,iBAAiB,WAAU;AAAC,kBAAIA,KAAEI,GAAE,MAAM,MAAKH,KAAEG,GAAE,MAAM,UAAU,IAAK,SAASH,IAAE;AAAC,uBAAO,GAAG,QAAQ,cAAc,OAAM,EAAC,WAAUD,OAAIC,KAAE,+EAA6E,iCAAgC,KAAIA,IAAE,SAAQG,GAAE,SAAS,KAAK,GAAGA,EAAC,GAAEH,EAAC,GAAE,iBAAgBD,OAAIC,KAAE,SAAO,OAAM,GAAED,OAAIC,KAAE,GAAG,QAAQ,cAAc,QAAO,EAAC,WAAU,0CAAyC,GAAE,QAAG,IAAE,IAAGA,EAAC;AAAA,cAAC,CAAE,GAAEC,KAAEE,GAAE,MAAM,UAAQ,GAAG,QAAQA,GAAE,MAAM,OAAO,IAAE,MAAKD,KAAEC,GAAE,MAAM,UAAQ,GAAG,QAAQA,GAAE,MAAM,OAAO,IAAE;AAAK,qBAAOD,MAAGC,GAAE,MAAM,UAAU,KAAM,SAASJ,IAAE;AAAC,uBAAOA,OAAIG;AAAA,cAAC,CAAE,KAAGF,GAAE,QAAQ,GAAG,QAAQ,cAAc,OAAM,EAAC,WAAU,iCAAgC,KAAI,YAAW,SAAQG,GAAE,eAAc,GAAE,GAAG,QAAQ,cAAc,KAAI,EAAC,WAAU,gHAA+G,CAAC,CAAC,CAAC,GAAEF,MAAGE,GAAE,MAAM,UAAU,KAAM,SAASJ,IAAE;AAAC,uBAAOA,OAAIE;AAAA,cAAC,CAAE,KAAGD,GAAE,KAAK,GAAG,QAAQ,cAAc,OAAM,EAAC,WAAU,iCAAgC,KAAI,YAAW,SAAQG,GAAE,eAAc,GAAE,GAAG,QAAQ,cAAc,KAAI,EAAC,WAAU,gHAA+G,CAAC,CAAC,CAAC,GAAEH;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGG,EAAC,GAAE,YAAY,SAASJ,IAAE;AAAC,cAAAI,GAAE,MAAM,SAASJ,EAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGI,EAAC,GAAE,sBAAsB,WAAU;AAAC,cAAAA,GAAE,MAAM,SAAS;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGA,EAAC,GAAE,cAAc,SAASJ,IAAE;AAAC,kBAAIC,KAAEG,GAAE,MAAM,UAAU,IAAK,SAASH,IAAE;AAAC,uBAAOA,KAAED;AAAA,cAAC,CAAE;AAAE,cAAAI,GAAE,SAAS,EAAC,WAAUH,GAAC,CAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGG,EAAC,GAAE,kBAAkB,WAAU;AAAC,qBAAOA,GAAE,WAAW,CAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGA,EAAC,GAAE,kBAAkB,WAAU;AAAC,qBAAOA,GAAE,WAAW,EAAE;AAAA,YAAC,CAAE;AAAE,gBAAIC,KAAEL,GAAE,wBAAuBM,KAAEN,GAAE,wBAAuBiB,KAAEZ,OAAIC,KAAE,KAAG;AAAG,mBAAOF,GAAE,QAAM,EAAC,WAAU,GAAGA,GAAE,MAAM,MAAKa,IAAEb,GAAE,MAAM,SAAQA,GAAE,MAAM,OAAO,EAAC,GAAEA,GAAE,cAAYH,GAAE,UAAU,GAAEG;AAAA,UAAC;AAAC,iBAAO,GAAGD,IAAE,CAAC,EAAC,KAAI,qBAAoB,OAAM,WAAU;AAAC,gBAAIH,KAAE,KAAK,YAAY;AAAQ,gBAAGA,IAAE;AAAC,kBAAIC,KAAED,GAAE,WAAS,MAAM,KAAKA,GAAE,QAAQ,IAAE,MAAKE,KAAED,KAAEA,GAAE,KAAM,SAASD,IAAE;AAAC,uBAAOA,GAAE;AAAA,cAAY,CAAE,IAAE;AAAK,cAAAA,GAAE,YAAUE,KAAEA,GAAE,aAAWA,GAAE,eAAaF,GAAE,gBAAc,KAAGA,GAAE,eAAaA,GAAE,gBAAc;AAAA,YAAC;AAAA,UAAC,EAAC,GAAE,EAAC,KAAI,UAAS,OAAM,WAAU;AAAC,gBAAIA,KAAE,GAAG,QAAQ,EAAC,mCAAkC,MAAG,+CAA8C,KAAK,MAAM,uBAAsB,CAAC;AAAE,mBAAO,GAAG,QAAQ,cAAc,OAAM,EAAC,WAAUA,IAAE,KAAI,KAAK,YAAW,GAAE,KAAK,cAAc,CAAC;AAAA,UAAC,EAAC,CAAC,CAAC,GAAEG;AAAA,QAAC,EAAE,GAAG,QAAQ,SAAS,GAAE,KAAG,GAAG,QAAQ,EAAE,GAAE,KAAG,SAASH,IAAE;AAAC,aAAGE,IAAEF,EAAC;AAAE,cAAIC,KAAE,GAAGC,EAAC;AAAE,mBAASA,KAAG;AAAC,gBAAIF;AAAE,eAAG,MAAKE,EAAC;AAAE,qBAAQC,KAAE,UAAU,QAAOC,KAAE,IAAI,MAAMD,EAAC,GAAEE,KAAE,GAAEA,KAAEF,IAAEE;AAAI,cAAAD,GAAEC,EAAC,IAAE,UAAUA,EAAC;AAAE,mBAAO,GAAG,GAAGL,KAAEC,GAAE,KAAK,MAAMA,IAAE,CAAC,IAAI,EAAE,OAAOG,EAAC,CAAC,CAAC,GAAE,SAAQ,EAAC,iBAAgB,MAAE,CAAC,GAAE,GAAG,GAAGJ,EAAC,GAAE,uBAAuB,WAAU;AAAC,uBAAQC,KAAED,GAAE,MAAM,UAAQ,GAAG,QAAQA,GAAE,MAAM,OAAO,IAAE,MAAKE,KAAEF,GAAE,MAAM,UAAQ,GAAG,QAAQA,GAAE,MAAM,OAAO,IAAE,MAAKG,KAAE,CAAC,GAAEC,KAAEH,IAAEG,MAAGF,IAAEE;AAAI,gBAAAD,GAAE,KAAK,GAAG,QAAQ,cAAc,UAAS,EAAC,KAAIC,IAAE,OAAMA,GAAC,GAAEA,EAAC,CAAC;AAAE,qBAAOD;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGH,EAAC,GAAE,kBAAkB,SAASC,IAAE;AAAC,cAAAD,GAAE,SAASC,GAAE,OAAO,KAAK;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGD,EAAC,GAAE,oBAAoB,WAAU;AAAC,qBAAO,GAAG,QAAQ,cAAc,UAAS,EAAC,OAAMA,GAAE,MAAM,MAAK,WAAU,iCAAgC,UAASA,GAAE,eAAc,GAAEA,GAAE,oBAAoB,CAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGA,EAAC,GAAE,kBAAkB,SAASC,IAAE;AAAC,qBAAO,GAAG,QAAQ,cAAc,OAAM,EAAC,KAAI,QAAO,OAAM,EAAC,YAAWA,KAAE,YAAU,SAAQ,GAAE,WAAU,oCAAmC,SAAQ,SAASA,IAAE;AAAC,uBAAOD,GAAE,eAAeC,EAAC;AAAA,cAAC,EAAC,GAAE,GAAG,QAAQ,cAAc,QAAO,EAAC,WAAU,+CAA8C,CAAC,GAAE,GAAG,QAAQ,cAAc,QAAO,EAAC,WAAU,kDAAiD,GAAED,GAAE,MAAM,IAAI,CAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGA,EAAC,GAAE,kBAAkB,WAAU;AAAC,qBAAO,GAAG,QAAQ,cAAc,IAAG,EAAC,KAAI,YAAW,MAAKA,GAAE,MAAM,MAAK,UAASA,GAAE,UAAS,UAASA,GAAE,gBAAe,SAAQA,GAAE,MAAM,SAAQ,SAAQA,GAAE,MAAM,SAAQ,wBAAuBA,GAAE,MAAM,wBAAuB,wBAAuBA,GAAE,MAAM,uBAAsB,CAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGA,EAAC,GAAE,oBAAoB,WAAU;AAAC,kBAAIC,KAAED,GAAE,MAAM,iBAAgBE,KAAE,CAACF,GAAE,eAAe,CAACC,EAAC,CAAC;AAAE,qBAAOA,MAAGC,GAAE,QAAQF,GAAE,eAAe,CAAC,GAAEE;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGF,EAAC,GAAE,YAAY,SAASC,IAAE;AAAC,cAAAD,GAAE,eAAe,GAAEC,OAAID,GAAE,MAAM,QAAMA,GAAE,MAAM,SAASC,EAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGD,EAAC,GAAE,kBAAkB,SAASC,IAAE;AAAC,cAAAD,GAAE,SAAS,EAAC,iBAAgB,CAACA,GAAE,MAAM,gBAAe,GAAG,WAAU;AAAC,gBAAAA,GAAE,MAAM,sBAAoBA,GAAE,iBAAiBA,GAAE,MAAM,MAAKC,EAAC;AAAA,cAAC,CAAE;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGD,EAAC,GAAE,oBAAoB,SAASC,IAAEC,IAAE;AAAC,cAAAF,GAAE,SAASC,IAAEC,EAAC,GAAEF,GAAE,QAAQ;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGA,EAAC,GAAE,YAAY,SAASC,IAAEC,IAAE;AAAC,cAAAF,GAAE,MAAM,YAAUA,GAAE,MAAM,SAASC,IAAEC,EAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGF,EAAC,GAAE,WAAW,WAAU;AAAC,cAAAA,GAAE,MAAM,WAASA,GAAE,MAAM,QAAQ,IAAE;AAAA,YAAC,CAAE,GAAEA;AAAA,UAAC;AAAC,iBAAO,GAAGE,IAAE,CAAC,EAAC,KAAI,UAAS,OAAM,WAAU;AAAC,gBAAIF;AAAE,oBAAO,KAAK,MAAM,cAAa;AAAA,cAAC,KAAI;AAAS,gBAAAA,KAAE,KAAK,iBAAiB;AAAE;AAAA,cAAM,KAAI;AAAS,gBAAAA,KAAE,KAAK,iBAAiB;AAAA,YAAC;AAAC,mBAAO,GAAG,QAAQ,cAAc,OAAM,EAAC,WAAU,wFAAwF,OAAO,KAAK,MAAM,YAAY,EAAC,GAAEA,EAAC;AAAA,UAAC,EAAC,CAAC,CAAC,GAAEE;AAAA,QAAC,EAAE,GAAG,QAAQ,SAAS,GAAE,KAAG,SAASF,IAAE;AAAC,aAAGE,IAAEF,EAAC;AAAE,cAAIC,KAAE,GAAGC,EAAC;AAAE,mBAASA,KAAG;AAAC,gBAAIF;AAAE,eAAG,MAAKE,EAAC;AAAE,qBAAQC,KAAE,UAAU,QAAOC,KAAE,IAAI,MAAMD,EAAC,GAAEE,KAAE,GAAEA,KAAEF,IAAEE;AAAI,cAAAD,GAAEC,EAAC,IAAE,UAAUA,EAAC;AAAE,mBAAO,GAAG,GAAGL,KAAEC,GAAE,KAAK,MAAMA,IAAE,CAAC,IAAI,EAAE,OAAOG,EAAC,CAAC,CAAC,GAAE,mBAAmB,SAASH,IAAE;AAAC,qBAAOD,GAAE,MAAM,UAAQC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGD,EAAC,GAAE,iBAAiB,WAAU;AAAC,qBAAOA,GAAE,MAAM,WAAW,IAAK,SAASC,IAAEC,IAAE;AAAC,uBAAO,GAAG,QAAQ,cAAc,OAAM,EAAC,WAAUF,GAAE,gBAAgBE,EAAC,IAAE,kFAAgF,kCAAiC,KAAID,IAAE,SAAQD,GAAE,SAAS,KAAK,GAAGA,EAAC,GAAEE,EAAC,GAAE,iBAAgBF,GAAE,gBAAgBE,EAAC,IAAE,SAAO,OAAM,GAAEF,GAAE,gBAAgBE,EAAC,IAAE,GAAG,QAAQ,cAAc,QAAO,EAAC,WAAU,2CAA0C,GAAE,QAAG,IAAE,IAAGD,EAAC;AAAA,cAAC,CAAE;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGD,EAAC,GAAE,YAAY,SAASC,IAAE;AAAC,qBAAOD,GAAE,MAAM,SAASC,EAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGD,EAAC,GAAE,sBAAsB,WAAU;AAAC,qBAAOA,GAAE,MAAM,SAAS;AAAA,YAAC,CAAE,GAAEA;AAAA,UAAC;AAAC,iBAAO,GAAGE,IAAE,CAAC,EAAC,KAAI,UAAS,OAAM,WAAU;AAAC,mBAAO,GAAG,QAAQ,cAAc,OAAM,EAAC,WAAU,mCAAkC,GAAE,KAAK,cAAc,CAAC;AAAA,UAAC,EAAC,CAAC,CAAC,GAAEA;AAAA,QAAC,EAAE,GAAG,QAAQ,SAAS,GAAE,KAAG,GAAG,QAAQ,EAAE,GAAE,KAAG,SAASF,IAAE;AAAC,aAAGE,IAAEF,EAAC;AAAE,cAAIC,KAAE,GAAGC,EAAC;AAAE,mBAASA,KAAG;AAAC,gBAAIF;AAAE,eAAG,MAAKE,EAAC;AAAE,qBAAQC,KAAE,UAAU,QAAOC,KAAE,IAAI,MAAMD,EAAC,GAAEE,KAAE,GAAEA,KAAEF,IAAEE;AAAI,cAAAD,GAAEC,EAAC,IAAE,UAAUA,EAAC;AAAE,mBAAO,GAAG,GAAGL,KAAEC,GAAE,KAAK,MAAMA,IAAE,CAAC,IAAI,EAAE,OAAOG,EAAC,CAAC,CAAC,GAAE,SAAQ,EAAC,iBAAgB,MAAE,CAAC,GAAE,GAAG,GAAGJ,EAAC,GAAE,uBAAuB,SAASA,IAAE;AAAC,qBAAOA,GAAE,IAAK,SAASA,IAAEC,IAAE;AAAC,uBAAO,GAAG,QAAQ,cAAc,UAAS,EAAC,KAAIA,IAAE,OAAMA,GAAC,GAAED,EAAC;AAAA,cAAC,CAAE;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGA,EAAC,GAAE,oBAAoB,SAASC,IAAE;AAAC,qBAAO,GAAG,QAAQ,cAAc,UAAS,EAAC,OAAMD,GAAE,MAAM,OAAM,WAAU,kCAAiC,UAAS,SAASC,IAAE;AAAC,uBAAOD,GAAE,SAASC,GAAE,OAAO,KAAK;AAAA,cAAC,EAAC,GAAED,GAAE,oBAAoBC,EAAC,CAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGD,EAAC,GAAE,kBAAkB,SAASC,IAAEC,IAAE;AAAC,qBAAO,GAAG,QAAQ,cAAc,OAAM,EAAC,KAAI,QAAO,OAAM,EAAC,YAAWD,KAAE,YAAU,SAAQ,GAAE,WAAU,qCAAoC,SAAQD,GAAE,eAAc,GAAE,GAAG,QAAQ,cAAc,QAAO,EAAC,WAAU,gDAA+C,CAAC,GAAE,GAAG,QAAQ,cAAc,QAAO,EAAC,WAAU,oDAAmD,GAAEE,GAAEF,GAAE,MAAM,KAAK,CAAC,CAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGA,EAAC,GAAE,kBAAkB,SAASC,IAAE;AAAC,qBAAO,GAAG,QAAQ,cAAc,IAAG,EAAC,KAAI,YAAW,OAAMD,GAAE,MAAM,OAAM,YAAWC,IAAE,UAASD,GAAE,UAAS,UAASA,GAAE,eAAc,CAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGA,EAAC,GAAE,oBAAoB,SAASC,IAAE;AAAC,kBAAIC,KAAEF,GAAE,MAAM,iBAAgBG,KAAE,CAACH,GAAE,eAAe,CAACE,IAAED,EAAC,CAAC;AAAE,qBAAOC,MAAGC,GAAE,QAAQH,GAAE,eAAeC,EAAC,CAAC,GAAEE;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGH,EAAC,GAAE,YAAY,SAASC,IAAE;AAAC,cAAAD,GAAE,eAAe,GAAEC,OAAID,GAAE,MAAM,SAAOA,GAAE,MAAM,SAASC,EAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGD,EAAC,GAAE,kBAAkB,WAAU;AAAC,qBAAOA,GAAE,SAAS,EAAC,iBAAgB,CAACA,GAAE,MAAM,gBAAe,CAAC;AAAA,YAAC,CAAE,GAAEA;AAAA,UAAC;AAAC,iBAAO,GAAGE,IAAE,CAAC,EAAC,KAAI,UAAS,OAAM,WAAU;AAAC,gBAAIF,IAAEC,KAAE,MAAKC,KAAE,CAAC,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,IAAG,EAAE,EAAE,IAAI,KAAK,MAAM,0BAAwB,SAASF,IAAE;AAAC,qBAAO,GAAGA,IAAEC,GAAE,MAAM,MAAM;AAAA,YAAC,IAAE,SAASD,IAAE;AAAC,qBAAO,GAAGA,IAAEC,GAAE,MAAM,MAAM;AAAA,YAAC,CAAC;AAAE,oBAAO,KAAK,MAAM,cAAa;AAAA,cAAC,KAAI;AAAS,gBAAAD,KAAE,KAAK,iBAAiBE,EAAC;AAAE;AAAA,cAAM,KAAI;AAAS,gBAAAF,KAAE,KAAK,iBAAiBE,EAAC;AAAA,YAAC;AAAC,mBAAO,GAAG,QAAQ,cAAc,OAAM,EAAC,WAAU,0FAA0F,OAAO,KAAK,MAAM,YAAY,EAAC,GAAEF,EAAC;AAAA,UAAC,EAAC,CAAC,CAAC,GAAEE;AAAA,QAAC,EAAE,GAAG,QAAQ,SAAS;AAAE,iBAAS,GAAGF,IAAEC,IAAE;AAAC,mBAAQC,KAAE,CAAC,GAAEC,KAAE,GAAGH,EAAC,GAAEI,KAAE,GAAGH,EAAC,GAAE,CAAC,GAAG,QAAQE,IAAEC,EAAC;AAAG,YAAAF,GAAE,KAAK,GAAGC,EAAC,CAAC,GAAEA,KAAE,GAAG,QAAQA,IAAE,CAAC;AAAE,iBAAOD;AAAA,QAAC;AAAC,YAAI,IAAG,KAAG,SAASF,IAAE;AAAC,aAAGE,IAAEF,EAAC;AAAE,cAAIC,KAAE,GAAGC,EAAC;AAAE,mBAASA,GAAEF,IAAE;AAAC,gBAAIG;AAAE,mBAAO,GAAG,MAAKD,EAAC,GAAE,GAAG,GAAGC,KAAEF,GAAE,KAAK,MAAKD,EAAC,CAAC,GAAE,iBAAiB,WAAU;AAAC,qBAAOG,GAAE,MAAM,eAAe,IAAK,SAASH,IAAE;AAAC,oBAAIC,KAAE,GAAG,QAAQD,EAAC,GAAEE,KAAE,GAAGC,GAAE,MAAM,MAAKH,EAAC,KAAG,GAAGG,GAAE,MAAM,MAAKH,EAAC;AAAE,uBAAO,GAAG,QAAQ,cAAc,OAAM,EAAC,WAAUE,KAAE,6DAA2D,uCAAsC,KAAID,IAAE,SAAQE,GAAE,SAAS,KAAK,GAAGA,EAAC,GAAEF,EAAC,GAAE,iBAAgBC,KAAE,SAAO,OAAM,GAAEA,KAAE,GAAG,QAAQ,cAAc,QAAO,EAAC,WAAU,gDAA+C,GAAE,QAAG,IAAE,IAAG,GAAGF,IAAEG,GAAE,MAAM,YAAWA,GAAE,MAAM,MAAM,CAAC;AAAA,cAAC,CAAE;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGA,EAAC,GAAE,YAAY,SAASH,IAAE;AAAC,qBAAOG,GAAE,MAAM,SAASH,EAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGG,EAAC,GAAE,sBAAsB,WAAU;AAAC,cAAAA,GAAE,MAAM,SAAS;AAAA,YAAC,CAAE,GAAEA,GAAE,QAAM,EAAC,gBAAe,GAAGA,GAAE,MAAM,SAAQA,GAAE,MAAM,OAAO,EAAC,GAAEA;AAAA,UAAC;AAAC,iBAAO,GAAGD,IAAE,CAAC,EAAC,KAAI,UAAS,OAAM,WAAU;AAAC,gBAAIF,KAAE,GAAG,QAAQ,EAAC,yCAAwC,MAAG,qDAAoD,KAAK,MAAM,4BAA2B,CAAC;AAAE,mBAAO,GAAG,QAAQ,cAAc,OAAM,EAAC,WAAUA,GAAC,GAAE,KAAK,cAAc,CAAC;AAAA,UAAC,EAAC,CAAC,CAAC,GAAEE;AAAA,QAAC,EAAE,GAAG,QAAQ,SAAS,GAAE,KAAG,GAAG,QAAQ,EAAE,GAAE,KAAG,SAASF,IAAE;AAAC,aAAGE,IAAEF,EAAC;AAAE,cAAIC,KAAE,GAAGC,EAAC;AAAE,mBAASA,KAAG;AAAC,gBAAIF;AAAE,eAAG,MAAKE,EAAC;AAAE,qBAAQC,KAAE,UAAU,QAAOC,KAAE,IAAI,MAAMD,EAAC,GAAEE,KAAE,GAAEA,KAAEF,IAAEE;AAAI,cAAAD,GAAEC,EAAC,IAAE,UAAUA,EAAC;AAAE,mBAAO,GAAG,GAAGL,KAAEC,GAAE,KAAK,MAAMA,IAAE,CAAC,IAAI,EAAE,OAAOG,EAAC,CAAC,CAAC,GAAE,SAAQ,EAAC,iBAAgB,MAAE,CAAC,GAAE,GAAG,GAAGJ,EAAC,GAAE,uBAAuB,WAAU;AAAC,uBAAQC,KAAE,GAAGD,GAAE,MAAM,OAAO,GAAEE,KAAE,GAAGF,GAAE,MAAM,OAAO,GAAEG,KAAE,CAAC,GAAE,CAAC,GAAG,QAAQF,IAAEC,EAAC,KAAG;AAAC,oBAAIE,KAAE,GAAG,QAAQH,EAAC;AAAE,gBAAAE,GAAE,KAAK,GAAG,QAAQ,cAAc,UAAS,EAAC,KAAIC,IAAE,OAAMA,GAAC,GAAE,GAAGH,IAAED,GAAE,MAAM,YAAWA,GAAE,MAAM,MAAM,CAAC,CAAC,GAAEC,KAAE,GAAG,QAAQA,IAAE,CAAC;AAAA,cAAC;AAAC,qBAAOE;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGH,EAAC,GAAE,kBAAkB,SAASC,IAAE;AAAC,cAAAD,GAAE,SAASC,GAAE,OAAO,KAAK;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGD,EAAC,GAAE,oBAAoB,WAAU;AAAC,qBAAO,GAAG,QAAQ,cAAc,UAAS,EAAC,OAAM,GAAG,QAAQ,GAAGA,GAAE,MAAM,IAAI,CAAC,GAAE,WAAU,uCAAsC,UAASA,GAAE,eAAc,GAAEA,GAAE,oBAAoB,CAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGA,EAAC,GAAE,kBAAkB,SAASC,IAAE;AAAC,kBAAIC,KAAE,GAAGF,GAAE,MAAM,MAAKA,GAAE,MAAM,YAAWA,GAAE,MAAM,MAAM;AAAE,qBAAO,GAAG,QAAQ,cAAc,OAAM,EAAC,KAAI,QAAO,OAAM,EAAC,YAAWC,KAAE,YAAU,SAAQ,GAAE,WAAU,0CAAyC,SAAQ,SAASA,IAAE;AAAC,uBAAOD,GAAE,eAAeC,EAAC;AAAA,cAAC,EAAC,GAAE,GAAG,QAAQ,cAAc,QAAO,EAAC,WAAU,qDAAoD,CAAC,GAAE,GAAG,QAAQ,cAAc,QAAO,EAAC,WAAU,8DAA6D,GAAEC,EAAC,CAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGF,EAAC,GAAE,kBAAkB,WAAU;AAAC,qBAAO,GAAG,QAAQ,cAAc,IAAG,EAAC,KAAI,YAAW,MAAKA,GAAE,MAAM,MAAK,YAAWA,GAAE,MAAM,YAAW,UAASA,GAAE,UAAS,UAASA,GAAE,gBAAe,SAAQA,GAAE,MAAM,SAAQ,SAAQA,GAAE,MAAM,SAAQ,6BAA4BA,GAAE,MAAM,6BAA4B,QAAOA,GAAE,MAAM,OAAM,CAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGA,EAAC,GAAE,oBAAoB,WAAU;AAAC,kBAAIC,KAAED,GAAE,MAAM,iBAAgBE,KAAE,CAACF,GAAE,eAAe,CAACC,EAAC,CAAC;AAAE,qBAAOA,MAAGC,GAAE,QAAQF,GAAE,eAAe,CAAC,GAAEE;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGF,EAAC,GAAE,YAAY,SAASC,IAAE;AAAC,cAAAD,GAAE,eAAe;AAAE,kBAAIE,KAAE,GAAG,SAASD,EAAC,CAAC;AAAE,iBAAGD,GAAE,MAAM,MAAKE,EAAC,KAAG,GAAGF,GAAE,MAAM,MAAKE,EAAC,KAAGF,GAAE,MAAM,SAASE,EAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGF,EAAC,GAAE,kBAAkB,WAAU;AAAC,qBAAOA,GAAE,SAAS,EAAC,iBAAgB,CAACA,GAAE,MAAM,gBAAe,CAAC;AAAA,YAAC,CAAE,GAAEA;AAAA,UAAC;AAAC,iBAAO,GAAGE,IAAE,CAAC,EAAC,KAAI,UAAS,OAAM,WAAU;AAAC,gBAAIF;AAAE,oBAAO,KAAK,MAAM,cAAa;AAAA,cAAC,KAAI;AAAS,gBAAAA,KAAE,KAAK,iBAAiB;AAAE;AAAA,cAAM,KAAI;AAAS,gBAAAA,KAAE,KAAK,iBAAiB;AAAA,YAAC;AAAC,mBAAO,GAAG,QAAQ,cAAc,OAAM,EAAC,WAAU,oGAAoG,OAAO,KAAK,MAAM,YAAY,EAAC,GAAEA,EAAC;AAAA,UAAC,EAAC,CAAC,CAAC,GAAEE;AAAA,QAAC,EAAE,GAAG,QAAQ,SAAS,GAAE,KAAG,SAASF,IAAE;AAAC,aAAGE,IAAEF,EAAC;AAAE,cAAIC,KAAE,GAAGC,EAAC;AAAE,mBAASA,KAAG;AAAC,gBAAIF;AAAE,eAAG,MAAKE,EAAC;AAAE,qBAAQC,KAAE,UAAU,QAAOC,KAAE,IAAI,MAAMD,EAAC,GAAEE,KAAE,GAAEA,KAAEF,IAAEE;AAAI,cAAAD,GAAEC,EAAC,IAAE,UAAUA,EAAC;AAAE,mBAAO,GAAG,GAAGL,KAAEC,GAAE,KAAK,MAAMA,IAAE,CAAC,IAAI,EAAE,OAAOG,EAAC,CAAC,CAAC,GAAE,SAAQ,GAAG,QAAQ,UAAU,CAAC,GAAE,GAAG,GAAGJ,EAAC,GAAE,eAAe,SAASC,IAAE;AAAC,eAACD,GAAE,WAAW,KAAGA,GAAE,MAAM,WAASA,GAAE,MAAM,QAAQC,EAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGD,EAAC,GAAE,oBAAoB,SAASC,IAAE;AAAC,eAACD,GAAE,WAAW,KAAGA,GAAE,MAAM,gBAAcA,GAAE,MAAM,aAAaC,EAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGD,EAAC,GAAE,mBAAmB,SAASC,IAAE;AAAC,sBAAMA,GAAE,QAAMA,GAAE,eAAe,GAAEA,GAAE,MAAI,UAASD,GAAE,MAAM,gBAAgBC,EAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGD,EAAC,GAAE,aAAa,SAASC,IAAE;AAAC,qBAAO,GAAGD,GAAE,MAAM,KAAIC,EAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGD,EAAC,GAAE,sBAAsB,WAAU;AAAC,qBAAM,CAACA,GAAE,MAAM,8BAA4B,CAACA,GAAE,UAAUA,GAAE,MAAM,QAAQ,KAAGA,GAAE,UAAUA,GAAE,MAAM,YAAY;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGA,EAAC,GAAE,cAAc,WAAU;AAAC,qBAAO,GAAGA,GAAE,MAAM,KAAIA,GAAE,KAAK;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGA,EAAC,GAAE,cAAc,WAAU;AAAC,qBAAO,GAAGA,GAAE,MAAM,KAAIA,GAAE,KAAK;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGA,EAAC,GAAE,uBAAuB,WAAU;AAAC,kBAAIC,KAAED,GAAE,OAAME,KAAED,GAAE,KAAIE,KAAEF,GAAE;AAAe,kBAAG,CAACE;AAAE,uBAAM;AAAG,kBAAIC,KAAE,GAAGF,IAAE,YAAY;AAAE,qBAAOC,GAAE,IAAIC,EAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGJ,EAAC,GAAE,aAAa,WAAU;AAAC,kBAAIC,KAAED,GAAE,OAAME,KAAED,GAAE,KAAIE,KAAEF,GAAE,WAAUG,KAAEH,GAAE;AAAQ,qBAAM,EAAE,CAACE,MAAG,CAACC,OAAI,GAAGF,IAAEC,IAAEC,EAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGJ,EAAC,GAAE,sBAAsB,WAAU;AAAC,kBAAIC,IAAEC,KAAEF,GAAE,OAAMG,KAAED,GAAE,KAAIE,KAAEF,GAAE,cAAaG,KAAEH,GAAE,YAAWI,KAAEJ,GAAE,cAAae,KAAEf,GAAE,4BAA2BgB,KAAEhB,GAAE,WAAUkB,KAAElB,GAAE,SAAQK,KAAE,UAAQN,KAAED,GAAE,MAAM,kBAAgB,WAASC,KAAEA,KAAED,GAAE,MAAM;AAAa,qBAAM,EAAE,EAAEI,MAAGC,MAAGC,OAAI,CAACC,MAAG,CAACU,MAAGjB,GAAE,WAAW,OAAKI,MAAGgB,OAAI,GAAG,QAAQb,IAAEa,EAAC,KAAG,GAAGb,IAAEa,EAAC,KAAG,GAAGjB,IAAEI,IAAEa,EAAC,KAAGf,MAAGa,OAAI,GAAG,QAAQX,IAAEW,EAAC,KAAG,GAAGX,IAAEW,EAAC,MAAI,EAAE,CAACZ,MAAG,CAACY,MAAGE,MAAG,CAAC,GAAG,QAAQb,IAAEW,EAAC,KAAG,CAAC,GAAGX,IAAEW,EAAC,OAAK,GAAGf,IAAEe,IAAEX,EAAC;AAAA,YAAE,CAAE,GAAE,GAAG,GAAGP,EAAC,GAAE,yBAAyB,WAAU;AAAC,kBAAIC;AAAE,kBAAG,CAACD,GAAE,mBAAmB;AAAE,uBAAM;AAAG,kBAAIE,KAAEF,GAAE,OAAMG,KAAED,GAAE,KAAIE,KAAEF,GAAE,WAAUG,KAAEH,GAAE,cAAaI,KAAE,UAAQL,KAAED,GAAE,MAAM,kBAAgB,WAASC,KAAEA,KAAED,GAAE,MAAM;AAAa,qBAAO,GAAGG,IAAEE,KAAEC,KAAEF,EAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGJ,EAAC,GAAE,uBAAuB,WAAU;AAAC,kBAAIC;AAAE,kBAAG,CAACD,GAAE,mBAAmB;AAAE,uBAAM;AAAG,kBAAIE,KAAEF,GAAE,OAAMG,KAAED,GAAE,KAAIE,KAAEF,GAAE,SAAQG,KAAEH,GAAE,YAAWI,KAAEJ,GAAE,cAAae,KAAE,UAAQhB,KAAED,GAAE,MAAM,kBAAgB,WAASC,KAAEA,KAAED,GAAE,MAAM;AAAa,qBAAO,GAAGG,IAAEE,MAAGC,KAAEW,KAAEb,EAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGJ,EAAC,GAAE,gBAAgB,WAAU;AAAC,kBAAIC,KAAED,GAAE,OAAME,KAAED,GAAE,KAAIE,KAAEF,GAAE,WAAUG,KAAEH,GAAE;AAAQ,qBAAM,EAAE,CAACE,MAAG,CAACC,OAAI,GAAGD,IAAED,EAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGF,EAAC,GAAE,cAAc,WAAU;AAAC,kBAAIC,KAAED,GAAE,OAAME,KAAED,GAAE,KAAIE,KAAEF,GAAE,WAAUG,KAAEH,GAAE;AAAQ,qBAAM,EAAE,CAACE,MAAG,CAACC,OAAI,GAAGA,IAAEF,EAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGF,EAAC,GAAE,aAAa,WAAU;AAAC,kBAAIC,KAAE,GAAG,QAAQD,GAAE,MAAM,GAAG;AAAE,qBAAO,MAAIC,MAAG,MAAIA;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGD,EAAC,GAAE,gBAAgB,WAAU;AAAC,qBAAO,WAASA,GAAE,MAAM,UAAQA,GAAE,MAAM,QAAM,KAAG,OAAK,GAAG,QAAQA,GAAE,MAAM,GAAG;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGA,EAAC,GAAE,iBAAiB,WAAU;AAAC,qBAAO,WAASA,GAAE,MAAM,UAAQ,GAAG,QAAQA,GAAE,MAAM,GAAG,IAAE,KAAG,OAAKA,GAAE,MAAM;AAAA,YAAK,CAAE,GAAE,GAAG,GAAGA,EAAC,GAAE,gBAAgB,WAAU;AAAC,qBAAOA,GAAE,UAAU,GAAG,CAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGA,EAAC,GAAE,cAAc,WAAU;AAAC,qBAAOA,GAAE,UAAUA,GAAE,MAAM,QAAQ;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGA,EAAC,GAAE,iBAAiB,SAASC,IAAE;AAAC,kBAAIC,IAAEC,KAAEH,GAAE,MAAM,eAAaA,GAAE,MAAM,aAAaC,EAAC,IAAE;AAAO,qBAAO,GAAG,QAAQ,yBAAwBE,IAAE,4BAA0B,GAAGH,GAAE,MAAM,KAAI,OAAME,EAAC,GAAE,EAAC,mCAAkCF,GAAE,WAAW,GAAE,mCAAkCA,GAAE,WAAW,GAAE,mCAAkCA,GAAE,WAAW,GAAE,4CAA2CA,GAAE,mBAAmB,GAAE,sCAAqCA,GAAE,aAAa,GAAE,oCAAmCA,GAAE,WAAW,GAAE,mCAAkCA,GAAE,UAAU,GAAE,6CAA4CA,GAAE,mBAAmB,GAAE,gDAA+CA,GAAE,sBAAsB,GAAE,8CAA6CA,GAAE,oBAAoB,GAAE,gCAA+BA,GAAE,aAAa,GAAE,kCAAiCA,GAAE,UAAU,GAAE,wCAAuCA,GAAE,aAAa,KAAGA,GAAE,cAAc,EAAC,GAAEA,GAAE,oBAAoB,oCAAoC,CAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGA,EAAC,GAAE,gBAAgB,WAAU;AAAC,kBAAIC,KAAED,GAAE,OAAME,KAAED,GAAE,KAAIE,KAAEF,GAAE,4BAA2BG,KAAE,WAASD,KAAE,WAASA,IAAEE,KAAEJ,GAAE,6BAA4BK,KAAE,WAASD,KAAE,kBAAgBA,IAAEY,KAAEjB,GAAE,WAAW,KAAGA,GAAE,WAAW,IAAEM,KAAEF;AAAE,qBAAM,GAAG,OAAOa,IAAE,GAAG,EAAE,OAAO,GAAGf,IAAE,QAAOF,GAAE,MAAM,MAAM,CAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGA,EAAC,GAAE,eAAe,SAASC,IAAEC,IAAE;AAAC,kBAAIC,KAAEF,MAAGD,GAAE,MAAM,UAASI,KAAEF,MAAGF,GAAE,MAAM;AAAa,qBAAOA,GAAE,mBAAmB,KAAGA,GAAE,UAAUG,EAAC,KAAG,GAAGC,IAAED,EAAC,IAAE,IAAE;AAAA,YAAE,CAAE,GAAE,GAAG,GAAGH,EAAC,GAAE,kBAAkB,WAAU;AAAC,kBAAIC,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE,CAAC,GAAEC,KAAE;AAAG,oBAAIF,GAAE,YAAY,KAAG,CAACC,GAAE,kBAAgBD,GAAE,UAAUA,GAAE,MAAM,YAAY,MAAI,SAAS,iBAAe,SAAS,kBAAgB,SAAS,SAAOE,KAAE,OAAIF,GAAE,MAAM,UAAQ,CAACA,GAAE,MAAM,yBAAuBE,KAAE,QAAIF,GAAE,MAAM,gBAAcA,GAAE,MAAM,aAAa,WAASA,GAAE,MAAM,aAAa,QAAQ,SAAS,SAAS,aAAa,KAAG,SAAS,cAAc,UAAU,SAAS,uBAAuB,MAAIE,KAAE,OAAIF,GAAE,MAAM,8BAA4BA,GAAE,aAAa,MAAIE,KAAE,QAAIF,GAAE,MAAM,gCAA8BA,GAAE,cAAc,MAAIE,KAAE,SAAKA,MAAGF,GAAE,MAAM,QAAQ,MAAM,EAAC,eAAc,KAAE,CAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGA,EAAC,GAAE,qBAAqB,WAAU;AAAC,qBAAOA,GAAE,MAAM,8BAA4BA,GAAE,aAAa,KAAGA,GAAE,MAAM,gCAA8BA,GAAE,cAAc,IAAE,OAAKA,GAAE,MAAM,oBAAkBA,GAAE,MAAM,kBAAkB,GAAG,QAAQA,GAAE,MAAM,GAAG,GAAEA,GAAE,MAAM,GAAG,IAAE,GAAG,QAAQA,GAAE,MAAM,GAAG;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGA,EAAC,GAAE,UAAU,WAAU;AAAC,qBAAO,GAAG,QAAQ,cAAc,OAAM,EAAC,KAAIA,GAAE,OAAM,WAAUA,GAAE,cAAcA,GAAE,MAAM,GAAG,GAAE,WAAUA,GAAE,iBAAgB,SAAQA,GAAE,aAAY,cAAaA,GAAE,kBAAiB,UAASA,GAAE,YAAY,GAAE,cAAaA,GAAE,aAAa,GAAE,MAAK,UAAS,iBAAgBA,GAAE,WAAW,GAAE,gBAAeA,GAAE,aAAa,IAAE,SAAO,QAAO,iBAAgBA,GAAE,WAAW,KAAGA,GAAE,UAAU,EAAC,GAAEA,GAAE,kBAAkB,CAAC;AAAA,YAAC,CAAE,GAAEA;AAAA,UAAC;AAAC,iBAAO,GAAGE,IAAE,CAAC,EAAC,KAAI,qBAAoB,OAAM,WAAU;AAAC,iBAAK,eAAe;AAAA,UAAC,EAAC,GAAE,EAAC,KAAI,sBAAqB,OAAM,SAASF,IAAE;AAAC,iBAAK,eAAeA,EAAC;AAAA,UAAC,EAAC,CAAC,CAAC,GAAEE;AAAA,QAAC,EAAE,GAAG,QAAQ,SAAS,GAAE,KAAG,SAASF,IAAE;AAAC,aAAGE,IAAEF,EAAC;AAAE,cAAIC,KAAE,GAAGC,EAAC;AAAE,mBAASA,KAAG;AAAC,gBAAIF;AAAE,eAAG,MAAKE,EAAC;AAAE,qBAAQC,KAAE,UAAU,QAAOC,KAAE,IAAI,MAAMD,EAAC,GAAEE,KAAE,GAAEA,KAAEF,IAAEE;AAAI,cAAAD,GAAEC,EAAC,IAAE,UAAUA,EAAC;AAAE,mBAAO,GAAG,GAAGL,KAAEC,GAAE,KAAK,MAAMA,IAAE,CAAC,IAAI,EAAE,OAAOG,EAAC,CAAC,CAAC,GAAE,eAAe,SAASH,IAAE;AAAC,cAAAD,GAAE,MAAM,WAASA,GAAE,MAAM,QAAQC,EAAC;AAAA,YAAC,CAAE,GAAED;AAAA,UAAC;AAAC,iBAAO,GAAGE,IAAE,CAAC,EAAC,KAAI,UAAS,OAAM,WAAU;AAAC,gBAAIF,KAAE,KAAK,OAAMC,KAAED,GAAE,YAAWE,KAAEF,GAAE,iBAAgBG,KAAE,WAASD,KAAE,UAAQA,IAAEE,KAAE,EAAC,iCAAgC,MAAG,4CAA2C,CAAC,CAACJ,GAAE,QAAO;AAAE,mBAAO,GAAG,QAAQ,cAAc,OAAM,EAAC,WAAU,GAAG,QAAQI,EAAC,GAAE,cAAa,GAAG,OAAOD,IAAE,GAAG,EAAE,OAAO,KAAK,MAAM,UAAU,GAAE,SAAQ,KAAK,YAAW,GAAEF,EAAC;AAAA,UAAC,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,KAAI,WAAU;AAAC,mBAAM,EAAC,iBAAgB,QAAO;AAAA,UAAC,EAAC,CAAC,CAAC,GAAEC;AAAA,QAAC,EAAE,GAAG,QAAQ,SAAS,GAAE,KAAG,SAASF,IAAE;AAAC,aAAGE,IAAEF,EAAC;AAAE,cAAIC,KAAE,GAAGC,EAAC;AAAE,mBAASA,KAAG;AAAC,gBAAIF;AAAE,eAAG,MAAKE,EAAC;AAAE,qBAAQC,KAAE,UAAU,QAAOC,KAAE,IAAI,MAAMD,EAAC,GAAEE,KAAE,GAAEA,KAAEF,IAAEE;AAAI,cAAAD,GAAEC,EAAC,IAAE,UAAUA,EAAC;AAAE,mBAAO,GAAG,GAAGL,KAAEC,GAAE,KAAK,MAAMA,IAAE,CAAC,IAAI,EAAE,OAAOG,EAAC,CAAC,CAAC,GAAE,kBAAkB,SAASH,IAAEC,IAAE;AAAC,cAAAF,GAAE,MAAM,cAAYA,GAAE,MAAM,WAAWC,IAAEC,EAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGF,EAAC,GAAE,uBAAuB,SAASC,IAAE;AAAC,cAAAD,GAAE,MAAM,mBAAiBA,GAAE,MAAM,gBAAgBC,EAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGD,EAAC,GAAE,mBAAmB,SAASC,IAAEC,IAAEC,IAAE;AAAC,4BAAY,OAAOH,GAAE,MAAM,gBAAcA,GAAE,MAAM,aAAaC,IAAEC,IAAEC,EAAC,GAAEH,GAAE,MAAM,uBAAqBA,GAAE,MAAM,QAAQ,KAAE;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGA,EAAC,GAAE,oBAAoB,SAASC,IAAE;AAAC,qBAAOD,GAAE,MAAM,mBAAiBA,GAAE,MAAM,iBAAiBC,EAAC,IAAE,SAASD,IAAEC,IAAE;AAAC,oBAAIC,KAAED,MAAG,GAAGA,EAAC,KAAG,GAAG,KAAG,GAAG,GAAG,CAAC;AAAE,uBAAO,GAAG,QAAQD,IAAEE,KAAE,EAAC,QAAOA,GAAC,IAAE,IAAI;AAAA,cAAC,EAAED,EAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGD,EAAC,GAAE,cAAc,WAAU;AAAC,kBAAIC,KAAE,GAAGD,GAAE,MAAM,KAAIA,GAAE,MAAM,QAAOA,GAAE,MAAM,gBAAgB,GAAEE,KAAE,CAAC,GAAEC,KAAEH,GAAE,iBAAiBC,EAAC;AAAE,kBAAGD,GAAE,MAAM,gBAAe;AAAC,oBAAII,KAAEJ,GAAE,MAAM,eAAaA,GAAE,gBAAgB,KAAK,GAAGA,EAAC,GAAEC,IAAEE,EAAC,IAAE;AAAO,gBAAAD,GAAE,KAAK,GAAG,QAAQ,cAAc,IAAG,EAAC,KAAI,KAAI,YAAWC,IAAE,SAAQC,IAAE,iBAAgBJ,GAAE,MAAM,gBAAe,CAAC,CAAC;AAAA,cAAC;AAAC,qBAAOE,GAAE,OAAO,CAAC,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,CAAC,EAAE,IAAK,SAASA,IAAE;AAAC,oBAAIC,KAAE,GAAG,QAAQF,IAAEC,EAAC;AAAE,uBAAO,GAAG,QAAQ,cAAc,IAAG,EAAC,4BAA2BF,GAAE,MAAM,0BAAyB,6BAA4BA,GAAE,MAAM,4BAA2B,KAAIG,GAAE,QAAQ,GAAE,KAAIA,IAAE,OAAMH,GAAE,MAAM,OAAM,SAAQA,GAAE,eAAe,KAAK,GAAGA,EAAC,GAAEG,EAAC,GAAE,cAAaH,GAAE,oBAAoB,KAAK,GAAGA,EAAC,GAAEG,EAAC,GAAE,SAAQH,GAAE,MAAM,SAAQ,SAAQA,GAAE,MAAM,SAAQ,cAAaA,GAAE,MAAM,cAAa,sBAAqBA,GAAE,MAAM,sBAAqB,cAAaA,GAAE,MAAM,cAAa,sBAAqBA,GAAE,MAAM,sBAAqB,gBAAeA,GAAE,MAAM,gBAAe,eAAcA,GAAE,MAAM,eAAc,YAAWA,GAAE,MAAM,YAAW,cAAaA,GAAE,MAAM,cAAa,UAASA,GAAE,MAAM,UAAS,cAAaA,GAAE,MAAM,cAAa,YAAWA,GAAE,MAAM,YAAW,cAAaA,GAAE,MAAM,cAAa,4BAA2BA,GAAE,MAAM,4BAA2B,WAAUA,GAAE,MAAM,WAAU,SAAQA,GAAE,MAAM,SAAQ,cAAaA,GAAE,MAAM,cAAa,mBAAkBA,GAAE,MAAM,mBAAkB,4BAA2BA,GAAE,MAAM,4BAA2B,iBAAgBA,GAAE,MAAM,iBAAgB,gBAAeA,GAAE,MAAM,gBAAe,cAAaA,GAAE,MAAM,cAAa,QAAOA,GAAE,MAAM,QAAO,sBAAqBA,GAAE,MAAM,sBAAqB,4BAA2BA,GAAE,MAAM,4BAA2B,8BAA6BA,GAAE,MAAM,8BAA6B,QAAOA,GAAE,MAAM,OAAM,CAAC;AAAA,cAAC,CAAE,CAAC;AAAA,YAAC,CAAE,GAAEA;AAAA,UAAC;AAAC,iBAAO,GAAGE,IAAE,CAAC,EAAC,KAAI,UAAS,OAAM,WAAU;AAAC,mBAAO,GAAG,QAAQ,cAAc,OAAM,EAAC,WAAU,yBAAwB,GAAE,KAAK,WAAW,CAAC;AAAA,UAAC,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,KAAI,WAAU;AAAC,mBAAM,EAAC,qBAAoB,KAAE;AAAA,UAAC,EAAC,CAAC,CAAC,GAAEA;AAAA,QAAC,EAAE,GAAG,QAAQ,SAAS,GAAE,KAAG,eAAc,KAAG,iBAAgB,KAAG,gBAAe,MAAI,GAAG,KAAG,CAAC,GAAE,IAAG,EAAC,MAAK,CAAC,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,IAAG,EAAE,CAAC,GAAE,0BAAyB,EAAC,CAAC,GAAE,GAAG,IAAG,IAAG,EAAC,MAAK,CAAC,CAAC,GAAE,GAAE,CAAC,GAAE,CAAC,GAAE,GAAE,CAAC,GAAE,CAAC,GAAE,GAAE,CAAC,GAAE,CAAC,GAAE,IAAG,EAAE,CAAC,GAAE,0BAAyB,EAAC,CAAC,GAAE,GAAG,IAAG,IAAG,EAAC,MAAK,CAAC,CAAC,GAAE,GAAE,GAAE,CAAC,GAAE,CAAC,GAAE,GAAE,GAAE,CAAC,GAAE,CAAC,GAAE,GAAE,IAAG,EAAE,CAAC,GAAE,0BAAyB,EAAC,CAAC,GAAE;AAAI,iBAAS,GAAGF,IAAEC,IAAE;AAAC,iBAAOD,KAAE,KAAGC,KAAE,KAAG;AAAA,QAAE;AAAC,YAAI,KAAG,SAASD,IAAE;AAAC,aAAGE,IAAEF,EAAC;AAAE,cAAIC,KAAE,GAAGC,EAAC;AAAE,mBAASA,KAAG;AAAC,gBAAIF;AAAE,eAAG,MAAKE,EAAC;AAAE,qBAAQC,KAAE,UAAU,QAAOC,KAAE,IAAI,MAAMD,EAAC,GAAEE,KAAE,GAAEA,KAAEF,IAAEE;AAAI,cAAAD,GAAEC,EAAC,IAAE,UAAUA,EAAC;AAAE,mBAAO,GAAG,GAAGL,KAAEC,GAAE,KAAK,MAAMA,IAAE,CAAC,IAAI,EAAE,OAAOG,EAAC,CAAC,CAAC,GAAE,cAAa,GAAG,MAAM,EAAE,CAAC,EAAE,IAAK,WAAU;AAAC,qBAAO,GAAG,QAAQ,UAAU;AAAA,YAAC,CAAE,CAAC,GAAE,GAAG,GAAGJ,EAAC,GAAE,gBAAe,GAAG,MAAM,CAAC,CAAC,EAAE,IAAK,WAAU;AAAC,qBAAO,GAAG,QAAQ,UAAU;AAAA,YAAC,CAAE,CAAC,GAAE,GAAG,GAAGA,EAAC,GAAE,cAAc,SAASC,IAAE;AAAC,qBAAO,GAAGA,IAAED,GAAE,KAAK;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGA,EAAC,GAAE,cAAc,SAASC,IAAE;AAAC,qBAAO,GAAGA,IAAED,GAAE,KAAK;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGA,EAAC,GAAE,kBAAkB,SAASC,IAAEC,IAAE;AAAC,cAAAF,GAAE,MAAM,cAAYA,GAAE,MAAM,WAAWC,IAAEC,IAAEF,GAAE,MAAM,cAAc;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGA,EAAC,GAAE,uBAAuB,SAASC,IAAE;AAAC,cAAAD,GAAE,MAAM,mBAAiBA,GAAE,MAAM,gBAAgBC,EAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGD,EAAC,GAAE,oBAAoB,WAAU;AAAC,cAAAA,GAAE,MAAM,gBAAcA,GAAE,MAAM,aAAa;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGA,EAAC,GAAE,qBAAqB,SAASC,IAAE;AAAC,kBAAIC,KAAEF,GAAE,OAAMG,KAAED,GAAE,KAAIE,KAAEF,GAAE,WAAUG,KAAEH,GAAE;AAAQ,qBAAM,EAAE,CAACE,MAAG,CAACC,OAAI,GAAG,GAAG,QAAQF,IAAEF,EAAC,GAAEG,EAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGJ,EAAC,GAAE,uBAAuB,SAASC,IAAE;AAAC,kBAAIC,KAAEF,GAAE,OAAMG,KAAED,GAAE,KAAIE,KAAEF,GAAE,WAAUG,KAAEH,GAAE;AAAQ,qBAAM,EAAE,CAACE,MAAG,CAACC,OAAI,GAAG,GAAG,QAAQF,IAAEF,EAAC,GAAEG,EAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGJ,EAAC,GAAE,mBAAmB,SAASC,IAAE;AAAC,kBAAIC,KAAEF,GAAE,OAAMG,KAAED,GAAE,KAAIE,KAAEF,GAAE,WAAUG,KAAEH,GAAE;AAAQ,qBAAM,EAAE,CAACE,MAAG,CAACC,OAAI,GAAG,GAAG,QAAQF,IAAEF,EAAC,GAAEI,EAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGL,EAAC,GAAE,qBAAqB,SAASC,IAAE;AAAC,kBAAIC,KAAEF,GAAE,OAAMG,KAAED,GAAE,KAAIE,KAAEF,GAAE,WAAUG,KAAEH,GAAE;AAAQ,qBAAM,EAAE,CAACE,MAAG,CAACC,OAAI,GAAG,GAAG,QAAQF,IAAEF,EAAC,GAAEI,EAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGL,EAAC,GAAE,2BAA2B,SAASC,IAAE;AAAC,kBAAIC,IAAEC,KAAEH,GAAE,OAAMI,KAAED,GAAE,KAAIE,KAAEF,GAAE,cAAaG,KAAEH,GAAE,YAAWc,KAAEd,GAAE,cAAae,KAAEf,GAAE,WAAUiB,KAAEjB,GAAE,SAAQI,KAAE,UAAQL,KAAEF,GAAE,MAAM,kBAAgB,WAASE,KAAEA,KAAEF,GAAE,MAAM;AAAa,qBAAM,EAAE,EAAEK,MAAGC,MAAGW,OAAI,CAACV,QAAKF,MAAGe,KAAE,GAAGb,IAAEa,IAAEnB,IAAEG,EAAC,KAAGE,MAAGY,MAAG,EAAE,CAACD,MAAG,CAACC,MAAGE,QAAK,GAAGF,IAAEX,IAAEN,IAAEG,EAAC;AAAA,YAAE,CAAE,GAAE,GAAG,GAAGJ,EAAC,GAAE,8BAA8B,SAASC,IAAE;AAAC,kBAAIC;AAAE,kBAAG,CAACF,GAAE,wBAAwBC,EAAC;AAAE,uBAAM;AAAG,kBAAIE,KAAEH,GAAE,OAAMI,KAAED,GAAE,KAAIE,KAAEF,GAAE,WAAUG,KAAEH,GAAE,cAAac,KAAE,GAAG,QAAQb,IAAEH,EAAC,GAAEiB,KAAE,UAAQhB,KAAEF,GAAE,MAAM,kBAAgB,WAASE,KAAEA,KAAEF,GAAE,MAAM;AAAa,qBAAO,GAAGiB,IAAEX,KAAEY,KAAEb,EAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGL,EAAC,GAAE,4BAA4B,SAASC,IAAE;AAAC,kBAAIC;AAAE,kBAAG,CAACF,GAAE,wBAAwBC,EAAC;AAAE,uBAAM;AAAG,kBAAIE,KAAEH,GAAE,OAAMI,KAAED,GAAE,KAAIE,KAAEF,GAAE,SAAQG,KAAEH,GAAE,YAAWc,KAAEd,GAAE,cAAae,KAAE,GAAG,QAAQd,IAAEH,EAAC,GAAEmB,KAAE,UAAQlB,KAAEF,GAAE,MAAM,kBAAgB,WAASE,KAAEA,KAAEF,GAAE,MAAM;AAAa,qBAAO,GAAGkB,IAAEZ,MAAGW,KAAEG,KAAEf,EAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGL,EAAC,GAAE,6BAA6B,SAASC,IAAE;AAAC,kBAAIC,IAAEC,KAAEH,GAAE,OAAMI,KAAED,GAAE,KAAIE,KAAEF,GAAE,cAAaG,KAAEH,GAAE,YAAWc,KAAEd,GAAE,cAAae,KAAEf,GAAE,WAAUiB,KAAEjB,GAAE,SAAQI,KAAE,UAAQL,KAAEF,GAAE,MAAM,kBAAgB,WAASE,KAAEA,KAAEF,GAAE,MAAM;AAAa,qBAAM,EAAE,EAAEK,MAAGC,MAAGW,OAAI,CAACV,QAAKF,MAAGe,KAAE,GAAGb,IAAEa,IAAEnB,IAAEG,EAAC,KAAGE,MAAGY,MAAG,EAAE,CAACD,MAAG,CAACC,MAAGE,QAAK,GAAGF,IAAEX,IAAEN,IAAEG,EAAC;AAAA,YAAE,CAAE,GAAE,GAAG,GAAGJ,EAAC,GAAE,iBAAiB,SAASC,IAAE;AAAC,kBAAIC,KAAEF,GAAE,MAAM,KAAIG,KAAE,GAAG,QAAQF,IAAE,CAAC;AAAE,qBAAO,GAAGA,IAAEC,EAAC,KAAG,GAAGC,IAAED,EAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGF,EAAC,GAAE,kBAAkB,SAASA,IAAEC,IAAE;AAAC,qBAAO,GAAG,QAAQD,EAAC,MAAI,GAAG,QAAQ,GAAG,CAAC,KAAGC,OAAI,GAAG,QAAQ,GAAG,CAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGD,EAAC,GAAE,oBAAoB,SAASA,IAAEC,IAAE;AAAC,qBAAO,GAAG,QAAQD,EAAC,MAAI,GAAG,QAAQ,GAAG,CAAC,KAAGC,OAAI,GAAG,QAAQ,GAAG,CAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGD,EAAC,GAAE,mBAAmB,SAASA,IAAEC,IAAEC,IAAE;AAAC,qBAAO,GAAG,QAAQA,EAAC,MAAID,MAAG,GAAG,QAAQD,EAAC,MAAI,GAAG,QAAQE,EAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGF,EAAC,GAAE,qBAAqB,SAASA,IAAEC,IAAEC,IAAE;AAAC,qBAAO,GAAG,QAAQF,EAAC,MAAIC,MAAG,GAAG,QAAQD,EAAC,MAAI,GAAG,QAAQE,EAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGF,EAAC,GAAE,eAAe,WAAU;AAAC,uBAAQC,KAAE,CAAC,GAAEC,KAAEF,GAAE,MAAM,aAAYG,KAAE,GAAEC,KAAE,OAAGC,KAAE,GAAG,GAAGL,GAAE,MAAM,GAAG,GAAEA,GAAE,MAAM,QAAOA,GAAE,MAAM,gBAAgB,GAAEC,GAAE,KAAK,GAAG,QAAQ,cAAc,IAAG,EAAC,iBAAgBD,GAAE,MAAM,qBAAoB,0BAAyBA,GAAE,MAAM,0BAAyB,4BAA2BA,GAAE,MAAM,4BAA2B,KAAIG,IAAE,KAAIE,IAAE,OAAM,GAAG,QAAQL,GAAE,MAAM,GAAG,GAAE,YAAWA,GAAE,gBAAe,iBAAgBA,GAAE,qBAAoB,cAAaA,GAAE,MAAM,cAAa,kBAAiBA,GAAE,MAAM,kBAAiB,QAAOA,GAAE,MAAM,QAAO,SAAQA,GAAE,MAAM,SAAQ,SAAQA,GAAE,MAAM,SAAQ,cAAaA,GAAE,MAAM,cAAa,sBAAqBA,GAAE,MAAM,sBAAqB,cAAaA,GAAE,MAAM,cAAa,sBAAqBA,GAAE,MAAM,sBAAqB,QAAOA,GAAE,MAAM,QAAO,sBAAqBA,GAAE,MAAM,sBAAqB,gBAAeA,GAAE,MAAM,gBAAe,eAAcA,GAAE,MAAM,eAAc,YAAWA,GAAE,MAAM,YAAW,cAAaA,GAAE,MAAM,cAAa,UAASA,GAAE,MAAM,UAAS,cAAaA,GAAE,MAAM,cAAa,YAAWA,GAAE,MAAM,YAAW,cAAaA,GAAE,MAAM,cAAa,4BAA2BA,GAAE,MAAM,4BAA2B,gBAAeA,GAAE,MAAM,iBAAgB,WAAUA,GAAE,MAAM,WAAU,SAAQA,GAAE,MAAM,SAAQ,cAAaA,GAAE,MAAM,cAAa,SAAQA,GAAE,MAAM,SAAQ,qBAAoBA,GAAE,MAAM,qBAAoB,4BAA2BA,GAAE,MAAM,4BAA2B,mBAAkBA,GAAE,MAAM,mBAAkB,iBAAgBA,GAAE,MAAM,iBAAgB,gBAAeA,GAAE,MAAM,gBAAe,cAAaA,GAAE,MAAM,cAAa,kBAAiBA,GAAE,MAAM,kBAAiB,4BAA2BA,GAAE,MAAM,4BAA2B,8BAA6BA,GAAE,MAAM,6BAA4B,CAAC,CAAC,GAAE,CAACI,MAAG;AAAC,gBAAAD,MAAIE,KAAE,GAAG,QAAQA,IAAE,CAAC;AAAE,oBAAIC,KAAEJ,MAAGC,MAAG,GAAEc,KAAE,CAACf,MAAG,CAACF,GAAE,cAAcK,EAAC;AAAE,oBAAGC,MAAGW,IAAE;AAAC,sBAAG,CAACjB,GAAE,MAAM;AAAc;AAAM,kBAAAI,KAAE;AAAA,gBAAE;AAAA,cAAC;AAAC,qBAAOH;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGD,EAAC,GAAE,gBAAgB,SAASC,IAAEC,IAAE;AAAC,cAAAF,GAAE,eAAe,GAAG,GAAG,QAAQA,GAAE,MAAM,KAAIE,EAAC,CAAC,GAAED,EAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGD,EAAC,GAAE,qBAAqB,SAASC,IAAE;AAAC,cAAAD,GAAE,oBAAoB,GAAG,GAAG,QAAQA,GAAE,MAAM,KAAIC,EAAC,CAAC,CAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGD,EAAC,GAAE,yBAAyB,SAASC,IAAEC,IAAE;AAAC,cAAAF,GAAE,WAAWE,EAAC,KAAGF,GAAE,WAAWE,EAAC,MAAIF,GAAE,MAAM,gBAAgBE,EAAC,GAAEF,GAAE,WAAWC,EAAC,EAAE,WAASD,GAAE,WAAWC,EAAC,EAAE,QAAQ,MAAM;AAAA,YAAE,CAAE,GAAE,GAAG,GAAGD,EAAC,GAAE,kBAAkB,SAASC,IAAEC,IAAE;AAAC,kBAAIC,KAAEH,GAAE,OAAMI,KAAED,GAAE,UAASE,KAAEF,GAAE,cAAaG,KAAEH,GAAE,4BAA2Bc,KAAEd,GAAE,8BAA6Be,KAAEf,GAAE,+BAA8BiB,KAAEjB,GAAE,iBAAgBI,KAAEN,GAAE;AAAI,kBAAG,UAAQM,MAAGN,GAAE,eAAe,GAAE,CAACK,IAAE;AAAC,oBAAIE,KAAE,GAAGU,IAAED,EAAC,GAAEI,KAAE,GAAGb,EAAC,EAAE,0BAAyBc,KAAE,GAAGd,EAAC,EAAE;AAAK,wBAAOD,IAAE;AAAA,kBAAC,KAAI;AAAQ,oBAAAP,GAAE,aAAaC,IAAEC,EAAC,GAAEkB,GAAEhB,EAAC;AAAE;AAAA,kBAAM,KAAI;AAAa,oBAAAJ,GAAE,sBAAsB,OAAKE,KAAE,IAAEA,KAAE,GAAE,GAAG,QAAQG,IAAE,CAAC,CAAC;AAAE;AAAA,kBAAM,KAAI;AAAY,oBAAAL,GAAE,sBAAsB,MAAIE,KAAE,KAAGA,KAAE,GAAE,GAAG,QAAQG,IAAE,CAAC,CAAC;AAAE;AAAA,kBAAM,KAAI;AAAU,oBAAAL,GAAE,sBAAsBsB,GAAE,CAAC,EAAE,SAASpB,EAAC,IAAEA,KAAE,KAAGmB,KAAEnB,KAAEmB,IAAE,GAAG,QAAQhB,IAAEgB,EAAC,CAAC;AAAE;AAAA,kBAAM,KAAI;AAAY,oBAAArB,GAAE,sBAAsBsB,GAAEA,GAAE,SAAO,CAAC,EAAE,SAASpB,EAAC,IAAEA,KAAE,KAAGmB,KAAEnB,KAAEmB,IAAE,GAAG,QAAQhB,IAAEgB,EAAC,CAAC;AAAA,gBAAC;AAAA,cAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGrB,EAAC,GAAE,kBAAkB,SAASC,IAAEC,IAAE;AAAC,cAAAF,GAAE,eAAe,GAAG,GAAG,QAAQA,GAAE,MAAM,KAAIE,EAAC,CAAC,GAAED,EAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGD,EAAC,GAAE,uBAAuB,SAASC,IAAE;AAAC,cAAAD,GAAE,oBAAoB,GAAG,GAAG,QAAQA,GAAE,MAAM,KAAIC,EAAC,CAAC,CAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGD,EAAC,GAAE,2BAA2B,SAASC,IAAEC,IAAE;AAAC,cAAAF,GAAE,WAAWE,EAAC,KAAGF,GAAE,WAAWE,EAAC,MAAIF,GAAE,MAAM,gBAAgBE,EAAC,GAAEF,GAAE,aAAaC,KAAE,CAAC,EAAE,WAASD,GAAE,aAAaC,KAAE,CAAC,EAAE,QAAQ,MAAM;AAAA,YAAE,CAAE,GAAE,GAAG,GAAGD,EAAC,GAAE,oBAAoB,SAASC,IAAEC,IAAE;AAAC,kBAAIC,KAAEF,GAAE;AAAI,kBAAG,CAACD,GAAE,MAAM;AAA2B,wBAAOG,IAAE;AAAA,kBAAC,KAAI;AAAQ,oBAAAH,GAAE,eAAeC,IAAEC,EAAC,GAAEF,GAAE,MAAM,gBAAgBA,GAAE,MAAM,QAAQ;AAAE;AAAA,kBAAM,KAAI;AAAa,oBAAAA,GAAE,wBAAwB,MAAIE,KAAE,IAAEA,KAAE,GAAE,GAAG,QAAQF,GAAE,MAAM,cAAa,CAAC,CAAC;AAAE;AAAA,kBAAM,KAAI;AAAY,oBAAAA,GAAE,wBAAwB,MAAIE,KAAE,IAAEA,KAAE,GAAE,GAAG,QAAQF,GAAE,MAAM,cAAa,CAAC,CAAC;AAAA,gBAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGA,EAAC,GAAE,sBAAsB,SAASC,IAAE;AAAC,kBAAIC,KAAEF,GAAE,OAAMG,KAAED,GAAE,KAAIE,KAAEF,GAAE,WAAUG,KAAEH,GAAE,SAAQI,KAAEJ,GAAE,UAASe,KAAEf,GAAE,SAAQgB,KAAEhB,GAAE,SAAQkB,KAAElB,GAAE,cAAaK,KAAEL,GAAE,gBAAeM,KAAEN,GAAE,cAAamB,KAAEnB,GAAE,cAAaoB,KAAEf,KAAEA,GAAE,GAAG,QAAQJ,IAAEF,EAAC,CAAC,IAAE,QAAOsB,KAAE,GAAG,QAAQpB,IAAEF,EAAC;AAAE,qBAAO,GAAG,QAAQ,gCAA+B,2BAA2B,OAAOA,EAAC,GAAEqB,IAAE,EAAC,2CAA0CL,MAAGC,MAAGV,MAAGa,OAAI,GAAGE,IAAEvB,GAAE,KAAK,GAAE,0CAAyCA,GAAE,gBAAgBG,IAAEF,IAAEK,EAAC,GAAE,mDAAkD,CAACN,GAAE,MAAM,8BAA4B,GAAG,QAAQoB,EAAC,MAAInB,IAAE,oDAAmDD,GAAE,wBAAwBC,EAAC,GAAE,0CAAyC,GAAGG,IAAEC,IAAEJ,IAAEE,EAAC,GAAE,6CAA4CH,GAAE,kBAAkBC,EAAC,GAAE,2CAA0CD,GAAE,gBAAgBC,EAAC,GAAE,uDAAsDD,GAAE,2BAA2BC,EAAC,GAAE,qDAAoDD,GAAE,yBAAyBC,EAAC,GAAE,uCAAsCD,GAAE,eAAeG,IAAEF,EAAC,EAAC,CAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGD,EAAC,GAAE,eAAe,SAASC,IAAE;AAAC,kBAAIC,KAAE,GAAG,QAAQF,GAAE,MAAM,YAAY;AAAE,qBAAOA,GAAE,MAAM,8BAA4BC,OAAIC,KAAE,OAAK;AAAA,YAAG,CAAE,GAAE,GAAG,GAAGF,EAAC,GAAE,sBAAsB,SAASC,IAAE;AAAC,kBAAIC,KAAE,GAAG,QAAQF,GAAE,MAAM,YAAY;AAAE,qBAAOA,GAAE,MAAM,8BAA4BC,OAAIC,KAAE,OAAK;AAAA,YAAG,CAAE,GAAE,GAAG,GAAGF,EAAC,GAAE,gBAAgB,SAASC,IAAE;AAAC,kBAAIC,KAAEF,GAAE,OAAMG,KAAED,GAAE,0BAAyBE,KAAE,WAASD,KAAE,WAASA,IAAEE,KAAEH,GAAE,4BAA2BI,KAAE,WAASD,KAAE,kBAAgBA,IAAEY,KAAEf,GAAE,KAAIgB,KAAE,GAAG,QAAQD,IAAEhB,EAAC,GAAEmB,KAAEpB,GAAE,WAAWkB,EAAC,KAAGlB,GAAE,WAAWkB,EAAC,IAAEZ,KAAEF;AAAE,qBAAM,GAAG,OAAOgB,IAAE,GAAG,EAAE,OAAO,GAAGF,IAAE,WAAW,CAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGlB,EAAC,GAAE,wBAAwB,SAASC,IAAE;AAAC,kBAAIC,KAAEF,GAAE,OAAMG,KAAED,GAAE,KAAIE,KAAEF,GAAE,WAAUG,KAAEH,GAAE,SAAQI,KAAEJ,GAAE,UAASe,KAAEf,GAAE,SAAQgB,KAAEhB,GAAE,SAAQkB,KAAElB,GAAE;AAAa,qBAAO,GAAG,QAAQ,kCAAiC,6BAA6B,OAAOD,EAAC,GAAE,EAAC,6CAA4CgB,MAAGC,OAAI,GAAG,GAAG,QAAQf,IAAEF,EAAC,GAAED,GAAE,KAAK,GAAE,4CAA2CA,GAAE,kBAAkBG,IAAEF,IAAEK,EAAC,GAAE,qDAAoD,GAAG,QAAQc,EAAC,MAAInB,IAAE,sDAAqDD,GAAE,0BAA0BC,EAAC,GAAE,4CAA2C,GAAGG,IAAEC,IAAEJ,IAAEE,EAAC,GAAE,+CAA8CH,GAAE,oBAAoBC,EAAC,GAAE,6CAA4CD,GAAE,kBAAkBC,EAAC,EAAC,CAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGD,EAAC,GAAE,mBAAmB,SAASC,IAAE;AAAC,kBAAIC,KAAEF,GAAE,OAAMG,KAAED,GAAE,yBAAwBE,KAAEF,GAAE,oBAAmBG,KAAEH,GAAE,QAAOI,KAAE,GAAGL,IAAEI,EAAC,GAAEY,KAAE,GAAGhB,IAAEI,EAAC;AAAE,qBAAOD,KAAEA,GAAEH,IAAEK,IAAEW,EAAC,IAAEd,KAAEc,KAAEX;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGN,EAAC,GAAE,qBAAqB,SAASC,IAAE;AAAC,kBAAIC,KAAEF,GAAE,OAAMG,KAAED,GAAE,sBAAqBE,KAAE,SAASJ,IAAEC,IAAE;AAAC,uBAAO,GAAG,GAAG,QAAQ,GAAG,GAAED,EAAC,GAAE,OAAMC,EAAC;AAAA,cAAC,EAAEA,IAAEC,GAAE,MAAM;AAAE,qBAAOC,KAAEA,GAAEF,IAAEG,EAAC,IAAEA;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGJ,EAAC,GAAE,gBAAgB,WAAU;AAAC,kBAAIC,KAAED,GAAE,OAAME,KAAED,GAAE,8BAA6BE,KAAEF,GAAE,+BAA8BG,KAAEH,GAAE,KAAII,KAAEJ,GAAE;AAAS,qBAAO,GAAG,GAAGE,IAAED,EAAC,CAAC,EAAE,KAAK,IAAK,SAASD,IAAEC,IAAE;AAAC,uBAAO,GAAG,QAAQ,cAAc,OAAM,EAAC,WAAU,mCAAkC,KAAIA,GAAC,GAAED,GAAE,IAAK,SAASA,IAAEC,IAAE;AAAC,yBAAO,GAAG,QAAQ,cAAc,OAAM,EAAC,KAAIF,GAAE,WAAWC,EAAC,GAAE,KAAIC,IAAE,SAAQ,SAASA,IAAE;AAAC,oBAAAF,GAAE,aAAaE,IAAED,EAAC;AAAA,kBAAC,GAAE,WAAU,SAASC,IAAE;AAAC,oBAAAF,GAAE,eAAeE,IAAED,EAAC;AAAA,kBAAC,GAAE,cAAa,WAAU;AAAC,2BAAOD,GAAE,kBAAkBC,EAAC;AAAA,kBAAC,GAAE,UAASD,GAAE,YAAYC,EAAC,GAAE,WAAUD,GAAE,mBAAmBC,EAAC,GAAE,MAAK,UAAS,cAAaD,GAAE,aAAaC,EAAC,GAAE,gBAAeD,GAAE,eAAeI,IAAEH,EAAC,IAAE,SAAO,QAAO,iBAAgBD,GAAE,gBAAgBI,IAAEH,IAAEI,EAAC,EAAC,GAAEL,GAAE,gBAAgBC,EAAC,CAAC;AAAA,gBAAC,CAAE,CAAC;AAAA,cAAC,CAAE;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGD,EAAC,GAAE,kBAAkB,WAAU;AAAC,kBAAIC,KAAED,GAAE,OAAME,KAAED,GAAE,KAAIE,KAAEF,GAAE;AAAS,qBAAO,GAAG,QAAQ,cAAc,OAAM,EAAC,WAAU,oCAAmC,GAAE,CAAC,GAAE,GAAE,GAAE,CAAC,EAAE,IAAK,SAASA,IAAEG,IAAE;AAAC,uBAAO,GAAG,QAAQ,cAAc,OAAM,EAAC,KAAIA,IAAE,KAAIJ,GAAE,aAAaI,EAAC,GAAE,MAAK,UAAS,SAAQ,SAASF,IAAE;AAAC,kBAAAF,GAAE,eAAeE,IAAED,EAAC;AAAA,gBAAC,GAAE,WAAU,SAASC,IAAE;AAAC,kBAAAF,GAAE,iBAAiBE,IAAED,EAAC;AAAA,gBAAC,GAAE,cAAa,WAAU;AAAC,yBAAOD,GAAE,oBAAoBC,EAAC;AAAA,gBAAC,GAAE,WAAUD,GAAE,qBAAqBC,EAAC,GAAE,iBAAgBD,GAAE,kBAAkBE,IAAED,IAAEE,EAAC,GAAE,UAASH,GAAE,mBAAmBC,EAAC,GAAE,gBAAeD,GAAE,iBAAiBE,IAAED,EAAC,IAAE,SAAO,OAAM,GAAED,GAAE,kBAAkBC,EAAC,CAAC;AAAA,cAAC,CAAE,CAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGD,EAAC,GAAE,iBAAiB,WAAU;AAAC,kBAAIC,KAAED,GAAE,OAAME,KAAED,GAAE,eAAcE,KAAEF,GAAE,cAAaG,KAAEH,GAAE,YAAWI,KAAEJ,GAAE,qBAAoBK,KAAEL,GAAE;AAAsB,qBAAO,GAAG,QAAQ,2BAA0B,EAAC,4CAA2CC,OAAIC,MAAGC,IAAE,GAAE,EAAC,iCAAgCC,GAAC,GAAE,EAAC,mCAAkCC,GAAC,CAAC;AAAA,YAAC,CAAE,GAAEN;AAAA,UAAC;AAAC,iBAAO,GAAGE,IAAE,CAAC,EAAC,KAAI,UAAS,OAAM,WAAU;AAAC,gBAAIF,KAAE,KAAK,OAAMC,KAAED,GAAE,qBAAoBE,KAAEF,GAAE,uBAAsBG,KAAEH,GAAE,KAAII,KAAEJ,GAAE,iBAAgBK,KAAE,WAASD,KAAE,WAASA;AAAE,mBAAO,GAAG,QAAQ,cAAc,OAAM,EAAC,WAAU,KAAK,cAAc,GAAE,cAAa,KAAK,kBAAiB,cAAa,GAAG,OAAOC,IAAE,GAAG,EAAE,OAAO,GAAGF,IAAE,SAAS,CAAC,GAAE,MAAK,UAAS,GAAEF,KAAE,KAAK,aAAa,IAAEC,KAAE,KAAK,eAAe,IAAE,KAAK,YAAY,CAAC;AAAA,UAAC,EAAC,CAAC,CAAC,GAAEA;AAAA,QAAC,EAAE,GAAG,QAAQ,SAAS,GAAE,KAAG,SAASF,IAAE;AAAC,aAAGE,IAAEF,EAAC;AAAE,cAAIC,KAAE,GAAGC,EAAC;AAAE,mBAASA,KAAG;AAAC,gBAAIF;AAAE,eAAG,MAAKE,EAAC;AAAE,qBAAQC,KAAE,UAAU,QAAOC,KAAE,IAAI,MAAMD,EAAC,GAAEE,KAAE,GAAEA,KAAEF,IAAEE;AAAI,cAAAD,GAAEC,EAAC,IAAE,UAAUA,EAAC;AAAE,mBAAO,GAAG,GAAGL,KAAEC,GAAE,KAAK,MAAMA,IAAE,CAAC,IAAI,EAAE,OAAOG,EAAC,CAAC,CAAC,GAAE,SAAQ,EAAC,QAAO,KAAI,CAAC,GAAE,GAAG,GAAGJ,EAAC,GAAE,eAAe,SAASC,IAAE;AAAC,eAACD,GAAE,MAAM,WAASA,GAAE,MAAM,YAAU,GAAGC,IAAED,GAAE,KAAK,MAAIA,GAAE,MAAM,gBAAcA,GAAE,MAAM,gBAAcA,GAAE,MAAM,eAAa,GAAGC,IAAED,GAAE,KAAK,KAAGA,GAAE,MAAM,SAASC,EAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGD,EAAC,GAAE,kBAAkB,SAASC,IAAEC,IAAEC,IAAE;AAAC,qBAAOH,GAAE,MAAM,YAAUE,OAAI,GAAG,QAAQD,EAAC,KAAGE,OAAI,GAAG,QAAQF,EAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGD,EAAC,GAAE,aAAa,SAASC,IAAEC,IAAEC,IAAE;AAAC,kBAAIC,KAAE,CAAC,oCAAmCJ,GAAE,MAAM,gBAAcA,GAAE,MAAM,cAAcC,IAAEC,IAAEC,EAAC,IAAE,MAAM;AAAE,qBAAOH,GAAE,eAAeC,IAAEC,IAAEC,EAAC,KAAGC,GAAE,KAAK,4CAA4C,KAAIJ,GAAE,MAAM,WAASA,GAAE,MAAM,YAAU,GAAGC,IAAED,GAAE,KAAK,MAAIA,GAAE,MAAM,gBAAcA,GAAE,MAAM,gBAAcA,GAAE,MAAM,eAAa,GAAGC,IAAED,GAAE,KAAK,MAAII,GAAE,KAAK,4CAA4C,GAAEJ,GAAE,MAAM,gBAAc,KAAG,GAAG,QAAQC,EAAC,IAAE,GAAG,QAAQA,EAAC,KAAGD,GAAE,MAAM,aAAW,KAAGI,GAAE,KAAK,4CAA4C,GAAEA,GAAE,KAAK,GAAG;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGJ,EAAC,GAAE,mBAAmB,SAASC,IAAEC,IAAE;AAAC,sBAAMD,GAAE,QAAMA,GAAE,eAAe,GAAEA,GAAE,MAAI,UAAS,YAAUA,GAAE,OAAKD,GAAE,YAAYE,EAAC,GAAEF,GAAE,MAAM,gBAAgBC,EAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGD,EAAC,GAAE,eAAe,WAAU;AAAC,uBAAQC,IAAEC,KAAE,CAAC,GAAEC,KAAEH,GAAE,MAAM,SAAOA,GAAE,MAAM,SAAO,KAAII,KAAEJ,GAAE,MAAM,WAAUK,MAAGJ,KAAE,GAAGD,GAAE,MAAM,QAAQ,GAAE,GAAG,QAAQC,EAAC,IAAGK,KAAE,OAAKF,IAAEa,KAAEjB,GAAE,MAAM,eAAaA,GAAE,MAAM,YAAY,KAAM,SAASA,IAAEC,IAAE;AAAC,uBAAOD,KAAEC;AAAA,cAAC,CAAE,GAAEiB,KAAElB,GAAE,MAAM,YAAUA,GAAE,MAAM,cAAY,GAAG,GAAEoB,KAAE,GAAG,QAAQF,EAAC,GAAEX,KAAE,GAAG,QAAQW,EAAC,GAAEV,KAAE,GAAG,QAAQ,GAAG,QAAQH,IAAEE,EAAC,GAAEa,EAAC,GAAEC,KAAE,GAAEA,KAAEf,IAAEe,MAAI;AAAC,oBAAIC,KAAE,GAAG,QAAQjB,IAAEgB,KAAEjB,EAAC;AAAE,oBAAGF,GAAE,KAAKoB,EAAC,GAAEL,IAAE;AAAC,sBAAIM,KAAE,GAAGlB,IAAEiB,IAAED,IAAEjB,IAAEa,EAAC;AAAE,kBAAAf,KAAEA,GAAE,OAAOqB,EAAC;AAAA,gBAAC;AAAA,cAAC;AAAC,qBAAOrB,GAAE,IAAK,SAASD,IAAEC,IAAE;AAAC,uBAAO,GAAG,QAAQ,cAAc,MAAK,EAAC,KAAIA,IAAE,SAAQF,GAAE,YAAY,KAAK,GAAGA,EAAC,GAAEC,EAAC,GAAE,WAAUD,GAAE,UAAUC,IAAEmB,IAAEb,EAAC,GAAE,KAAI,SAASL,IAAE;AAAC,mBAAC,GAAG,QAAQD,IAAEO,EAAC,KAAG,GAAGP,IAAEO,EAAC,OAAKR,GAAE,WAASE;AAAA,gBAAE,GAAE,WAAU,SAASA,IAAE;AAAC,kBAAAF,GAAE,gBAAgBE,IAAED,EAAC;AAAA,gBAAC,GAAE,UAAS,KAAI,iBAAgBD,GAAE,eAAeC,IAAEmB,IAAEb,EAAC,IAAE,SAAO,OAAM,GAAE,GAAGN,IAAEE,IAAEH,GAAE,MAAM,MAAM,CAAC;AAAA,cAAC,CAAE;AAAA,YAAC,CAAE,GAAEA;AAAA,UAAC;AAAC,iBAAO,GAAGE,IAAE,CAAC,EAAC,KAAI,qBAAoB,OAAM,WAAU;AAAC,iBAAK,KAAK,YAAU,KAAK,YAAUA,GAAE,mBAAmB,KAAK,MAAM,WAAS,KAAK,MAAM,SAAS,eAAa,KAAK,OAAO,eAAa,KAAK,KAAK,cAAa,KAAK,QAAQ,GAAE,KAAK,MAAM,YAAU,KAAK,UAAQ,KAAK,SAAS,EAAC,QAAO,KAAK,MAAM,SAAS,eAAa,KAAK,OAAO,aAAY,CAAC;AAAA,UAAC,EAAC,GAAE,EAAC,KAAI,UAAS,OAAM,WAAU;AAAC,gBAAIF,KAAE,MAAKC,KAAE,KAAK,MAAM;AAAO,mBAAO,GAAG,QAAQ,cAAc,OAAM,EAAC,WAAU,oCAAoC,OAAO,KAAK,MAAM,cAAY,wDAAsD,EAAE,EAAC,GAAE,GAAG,QAAQ,cAAc,OAAM,EAAC,WAAU,2DAA2D,OAAO,KAAK,MAAM,qBAAmB,yCAAuC,EAAE,GAAE,KAAI,SAASA,IAAE;AAAC,cAAAD,GAAE,SAAOC;AAAA,YAAC,EAAC,GAAE,GAAG,QAAQ,cAAc,OAAM,EAAC,WAAU,gCAA+B,GAAE,KAAK,MAAM,WAAW,CAAC,GAAE,GAAG,QAAQ,cAAc,OAAM,EAAC,WAAU,yBAAwB,GAAE,GAAG,QAAQ,cAAc,OAAM,EAAC,WAAU,6BAA4B,GAAE,GAAG,QAAQ,cAAc,MAAK,EAAC,WAAU,+BAA8B,KAAI,SAASA,IAAE;AAAC,cAAAD,GAAE,OAAKC;AAAA,YAAC,GAAE,OAAMA,KAAE,EAAC,QAAOA,GAAC,IAAE,CAAC,GAAE,UAAS,IAAG,GAAE,KAAK,YAAY,CAAC,CAAC,CAAC,CAAC;AAAA,UAAC,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,KAAI,WAAU;AAAC,mBAAM,EAAC,WAAU,IAAG,cAAa,WAAU;AAAA,YAAC,GAAE,aAAY,MAAK,aAAY,OAAM;AAAA,UAAC,EAAC,CAAC,CAAC,GAAEC;AAAA,QAAC,EAAE,GAAG,QAAQ,SAAS;AAAE,WAAG,IAAG,sBAAsB,SAASF,IAAEC,IAAE;AAAC,iBAAOA,GAAE,aAAWD,KAAE,IAAEC,GAAE,eAAa;AAAA,QAAE,CAAE;AAAE,YAAI,KAAG,SAASD,IAAE;AAAC,aAAGE,IAAEF,EAAC;AAAE,cAAIC,KAAE,GAAGC,EAAC;AAAE,mBAASA,GAAEF,IAAE;AAAC,gBAAIG;AAAE,mBAAO,GAAG,MAAKD,EAAC,GAAE,GAAG,GAAGC,KAAEF,GAAE,KAAK,MAAKD,EAAC,CAAC,GAAE,aAAY,GAAG,MAAMG,GAAE,MAAM,cAAc,CAAC,EAAE,IAAK,WAAU;AAAC,qBAAO,GAAG,QAAQ,UAAU;AAAA,YAAC,CAAE,CAAC,GAAE,GAAG,GAAGA,EAAC,GAAE,cAAc,SAASH,IAAE;AAAC,qBAAO,GAAGA,IAAEG,GAAE,KAAK;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGA,EAAC,GAAE,cAAc,SAASH,IAAE;AAAC,qBAAO,GAAGA,IAAEG,GAAE,KAAK;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGA,EAAC,GAAE,iBAAiB,WAAU;AAAC,kBAAIH;AAAE,qBAAO,UAAQA,KAAEG,GAAE,MAAM,kBAAgB,WAASH,KAAEA,KAAEG,GAAE,MAAM;AAAA,YAAY,CAAE,GAAE,GAAG,GAAGA,EAAC,GAAE,yBAAyB,SAASH,IAAE;AAAC,kBAAIC,KAAE,WAAU;AAAC,qBAAK,UAAUD,EAAC,EAAE,QAAQ,MAAM;AAAA,cAAC,EAAE,KAAK,GAAGG,EAAC,CAAC;AAAE,qBAAO,sBAAsBF,EAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGE,EAAC,GAAE,mBAAmB,SAASH,IAAEC,IAAE;AAAC,cAAAE,GAAE,MAAM,cAAYA,GAAE,MAAM,WAAWH,IAAEC,EAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGE,EAAC,GAAE,wBAAwB,SAASH,IAAEC,IAAE;AAAC,kBAAIC,KAAEC,GAAE,OAAMC,KAAEF,GAAE,MAAKG,KAAEH,GAAE,gBAAeI,KAAE,GAAGF,IAAEC,EAAC,EAAE;AAAY,cAAAF,GAAE,WAAWF,EAAC,KAAGE,GAAE,WAAWF,EAAC,MAAIE,GAAE,MAAM,gBAAgBF,EAAC,GAAED,KAAEM,MAAG,KAAGH,GAAE,sBAAsBE,KAAE,CAAC,IAAEL,KAAEM,OAAID,KAAEF,GAAE,sBAAsB,CAAC,IAAEA,GAAE,UAAUH,KAAEM,EAAC,EAAE,QAAQ,MAAM;AAAA,YAAE,CAAE,GAAE,GAAG,GAAGH,EAAC,GAAE,aAAa,SAASH,IAAEC,IAAE;AAAC,qBAAO,GAAGD,IAAEC,EAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGE,EAAC,GAAE,iBAAiB,SAASH,IAAE;AAAC,qBAAOA,OAAI,GAAG,QAAQ,GAAG,CAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGG,EAAC,GAAE,gBAAgB,SAASH,IAAE;AAAC,qBAAOG,GAAE,MAAM,aAAWA,GAAE,MAAM,WAAS,GAAG,GAAG,QAAQ,GAAG,GAAEH,EAAC,GAAEG,GAAE,MAAM,SAAS;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGA,EAAC,GAAE,cAAc,SAASH,IAAE;AAAC,qBAAOG,GAAE,MAAM,aAAWA,GAAE,MAAM,WAAS,GAAG,GAAG,QAAQ,GAAG,GAAEH,EAAC,GAAEG,GAAE,MAAM,OAAO;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGA,EAAC,GAAE,aAAa,SAASH,IAAE;AAAC,qBAAO,GAAGA,IAAEG,GAAE,MAAM,WAAUA,GAAE,MAAM,OAAO;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGA,EAAC,GAAE,sBAAsB,SAASH,IAAE;AAAC,kBAAIC,KAAEE,GAAE,OAAMD,KAAED,GAAE,cAAaG,KAAEH,GAAE,YAAWI,KAAEJ,GAAE,cAAaK,KAAEL,GAAE,WAAUgB,KAAEhB,GAAE;AAAQ,qBAAM,EAAE,EAAEC,MAAGE,MAAGC,OAAI,CAACF,GAAE,cAAc,OAAKD,MAAGe,KAAE,GAAGjB,IAAEG,GAAE,cAAc,GAAEc,EAAC,KAAGb,MAAGE,MAAG,EAAE,CAACD,MAAG,CAACC,MAAGW,QAAK,GAAGjB,IAAEM,IAAEH,GAAE,cAAc,CAAC;AAAA,YAAE,CAAE,GAAE,GAAG,GAAGA,EAAC,GAAE,yBAAyB,SAASH,IAAE;AAAC,kBAAG,CAACG,GAAE,mBAAmBH,EAAC;AAAE,uBAAM;AAAG,kBAAIC,KAAEE,GAAE,OAAMD,KAAED,GAAE,WAAUG,KAAEH,GAAE,cAAaI,KAAE,GAAG,QAAQ,GAAG,GAAEL,EAAC;AAAE,qBAAO,GAAGK,IAAED,KAAED,GAAE,cAAc,IAAED,EAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGC,EAAC,GAAE,uBAAuB,SAASH,IAAE;AAAC,kBAAG,CAACG,GAAE,mBAAmBH,EAAC;AAAE,uBAAM;AAAG,kBAAIC,KAAEE,GAAE,OAAMD,KAAED,GAAE,SAAQG,KAAEH,GAAE,YAAWI,KAAEJ,GAAE,cAAaK,KAAE,GAAG,QAAQ,GAAG,GAAEN,EAAC;AAAE,qBAAO,GAAGM,IAAEF,MAAGC,KAAEF,GAAE,cAAc,IAAED,EAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGC,EAAC,GAAE,sBAAsB,SAASH,IAAE;AAAC,kBAAIC,KAAE,GAAG,GAAG,QAAQE,GAAE,MAAM,MAAKH,EAAC,CAAC;AAAE,qBAAM,CAACG,GAAE,MAAM,8BAA4B,CAACA,GAAE,MAAM,UAAQ,CAAC,GAAGF,IAAE,GAAGE,GAAE,MAAM,QAAQ,CAAC,KAAG,GAAGF,IAAE,GAAGE,GAAE,MAAM,YAAY,CAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGA,EAAC,GAAE,eAAe,SAASH,IAAEC,IAAE;AAAC,kBAAIC,KAAEC,GAAE,MAAM;AAAK,cAAAA,GAAE,gBAAgB,GAAG,GAAG,QAAQD,IAAED,EAAC,CAAC,GAAED,EAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGG,EAAC,GAAE,iBAAiB,SAASH,IAAEC,IAAE;AAAC,kBAAIC,KAAEF,GAAE;AAAI,kBAAG,CAACG,GAAE,MAAM;AAA2B,wBAAOD,IAAE;AAAA,kBAAC,KAAI;AAAQ,oBAAAC,GAAE,YAAYH,IAAEC,EAAC,GAAEE,GAAE,MAAM,gBAAgBA,GAAE,MAAM,QAAQ;AAAE;AAAA,kBAAM,KAAI;AAAa,oBAAAA,GAAE,qBAAqBF,KAAE,GAAE,GAAG,QAAQE,GAAE,MAAM,cAAa,CAAC,CAAC;AAAE;AAAA,kBAAM,KAAI;AAAY,oBAAAA,GAAE,qBAAqBF,KAAE,GAAE,GAAG,QAAQE,GAAE,MAAM,cAAa,CAAC,CAAC;AAAA,gBAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGA,EAAC,GAAE,qBAAqB,SAASH,IAAE;AAAC,kBAAIC,KAAEE,GAAE,OAAMD,KAAED,GAAE,SAAQG,KAAEH,GAAE,SAAQI,KAAEJ,GAAE,UAASK,KAAEL,GAAE,cAAagB,KAAEhB,GAAE,cAAaiB,KAAEjB,GAAE;AAAW,qBAAO,GAAG,QAAQ,+BAA8B,EAAC,yCAAwCD,OAAI,GAAG,QAAQK,EAAC,GAAE,0CAAyCH,MAAGE,MAAGE,MAAGW,MAAGC,OAAI,GAAGlB,IAAEG,GAAE,KAAK,GAAE,kDAAiDA,GAAE,mBAAmBH,EAAC,GAAE,4CAA2CG,GAAE,aAAaH,EAAC,GAAE,0CAAyCG,GAAE,WAAWH,EAAC,GAAE,yCAAwCG,GAAE,UAAUH,EAAC,GAAE,mDAAkDG,GAAE,mBAAmBH,EAAC,GAAE,sDAAqDG,GAAE,sBAAsBH,EAAC,GAAE,oDAAmDG,GAAE,oBAAoBH,EAAC,GAAE,sCAAqCG,GAAE,cAAcH,EAAC,EAAC,CAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGG,EAAC,GAAE,mBAAmB,SAASH,IAAE;AAAC,qBAAOG,GAAE,MAAM,6BAA2B,OAAKH,OAAI,GAAG,QAAQG,GAAE,MAAM,YAAY,IAAE,MAAI;AAAA,YAAI,CAAE,GAAE,GAAG,GAAGA,EAAC,GAAE,8BAA8B,WAAU;AAAC,kBAAIH,KAAEG,GAAE,OAAMF,KAAED,GAAE,eAAcE,KAAEF,GAAE,cAAaI,KAAEJ,GAAE,YAAWK,KAAEL,GAAE;AAAa,qBAAO,GAAG,QAAQ,0BAAyB,EAAC,2CAA0CC,OAAIC,MAAGE,MAAGC,IAAE,CAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGF,EAAC,GAAE,kBAAkB,SAASH,IAAE;AAAC,qBAAOG,GAAE,MAAM,oBAAkBA,GAAE,MAAM,kBAAkBH,EAAC,IAAEA;AAAA,YAAC,CAAE,GAAEG;AAAA,UAAC;AAAC,iBAAO,GAAGD,IAAE,CAAC,EAAC,KAAI,UAAS,OAAM,WAAU;AAAC,qBAAQF,KAAE,MAAKC,KAAE,CAAC,GAAEC,KAAE,KAAK,OAAMC,KAAED,GAAE,MAAKE,KAAEF,GAAE,gBAAeG,KAAEH,GAAE,kBAAiBI,KAAEJ,GAAE,kBAAiBe,KAAE,GAAGd,IAAEC,EAAC,GAAEc,KAAED,GAAE,aAAYG,KAAEH,GAAE,WAAUV,KAAE,SAASL,IAAE;AAAC,cAAAD,GAAE,KAAK,GAAG,QAAQ,cAAc,OAAM,EAAC,KAAID,GAAE,UAAUE,KAAEgB,EAAC,GAAE,SAAQ,SAASjB,IAAE;AAAC,gBAAAD,GAAE,YAAYC,IAAEC,EAAC;AAAA,cAAC,GAAE,WAAU,SAASD,IAAE;AAAC,gBAAAD,GAAE,cAAcC,IAAEC,EAAC;AAAA,cAAC,GAAE,UAASF,GAAE,gBAAgBE,EAAC,GAAE,WAAUF,GAAE,kBAAkBE,EAAC,GAAE,cAAa,SAASF,IAAE;AAAC,uBAAOK,GAAEL,IAAEE,EAAC;AAAA,cAAC,GAAE,cAAa,SAASF,IAAE;AAAC,uBAAOM,GAAEN,IAAEE,EAAC;AAAA,cAAC,GAAE,KAAIA,IAAE,gBAAeF,GAAE,cAAcE,EAAC,IAAE,SAAO,OAAM,GAAEF,GAAE,eAAeE,EAAC,CAAC,CAAC;AAAA,YAAC,GAAEM,KAAEU,IAAEV,MAAGY,IAAEZ;AAAI,cAAAD,GAAEC,EAAC;AAAE,mBAAO,GAAG,QAAQ,cAAc,OAAM,EAAC,WAAU,KAAK,2BAA2B,EAAC,GAAE,GAAG,QAAQ,cAAc,OAAM,EAAC,WAAU,kCAAiC,cAAa,KAAK,MAAM,mBAAkB,GAAEP,EAAC,CAAC;AAAA,UAAC,EAAC,CAAC,CAAC,GAAEC;AAAA,QAAC,EAAE,GAAG,QAAQ,SAAS,GAAE,KAAG,SAASF,IAAE;AAAC,aAAGE,IAAEF,EAAC;AAAE,cAAIC,KAAE,GAAGC,EAAC;AAAE,mBAASA,GAAEF,IAAE;AAAC,gBAAIG;AAAE,mBAAO,GAAG,MAAKD,EAAC,GAAE,GAAG,GAAGC,KAAEF,GAAE,KAAK,MAAKD,EAAC,CAAC,GAAE,gBAAgB,SAASA,IAAE;AAAC,cAAAG,GAAE,SAAS,EAAC,MAAKH,GAAC,CAAC;AAAE,kBAAIC,KAAE,oBAAI;AAAK,cAAAA,GAAE,SAASD,GAAE,MAAM,GAAG,EAAE,CAAC,CAAC,GAAEC,GAAE,WAAWD,GAAE,MAAM,GAAG,EAAE,CAAC,CAAC,GAAEG,GAAE,MAAM,SAASF,EAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGE,EAAC,GAAE,mBAAmB,WAAU;AAAC,kBAAIH,KAAEG,GAAE,MAAM,MAAKF,KAAEE,GAAE,OAAMD,KAAED,GAAE,MAAKG,KAAEH,GAAE,YAAWI,KAAEJ,GAAE;AAAgB,qBAAOI,KAAE,GAAG,QAAQ,aAAaA,IAAE,EAAC,MAAKH,IAAE,OAAMF,IAAE,UAASG,GAAE,aAAY,CAAC,IAAE,GAAG,QAAQ,cAAc,SAAQ,EAAC,MAAK,QAAO,WAAU,gCAA+B,aAAY,QAAO,MAAK,cAAa,UAAS,MAAG,OAAMH,IAAE,UAAS,SAASA,IAAE;AAAC,gBAAAG,GAAE,aAAaH,GAAE,OAAO,SAAOI,EAAC;AAAA,cAAC,EAAC,CAAC;AAAA,YAAC,CAAE,GAAED,GAAE,QAAM,EAAC,MAAKA,GAAE,MAAM,WAAU,GAAEA;AAAA,UAAC;AAAC,iBAAO,GAAGD,IAAE,CAAC,EAAC,KAAI,UAAS,OAAM,WAAU;AAAC,mBAAO,GAAG,QAAQ,cAAc,OAAM,EAAC,WAAU,yCAAwC,GAAE,GAAG,QAAQ,cAAc,OAAM,EAAC,WAAU,iCAAgC,GAAE,KAAK,MAAM,cAAc,GAAE,GAAG,QAAQ,cAAc,OAAM,EAAC,WAAU,yCAAwC,GAAE,GAAG,QAAQ,cAAc,OAAM,EAAC,WAAU,+BAA8B,GAAE,KAAK,gBAAgB,CAAC,CAAC,CAAC;AAAA,UAAC,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,4BAA2B,OAAM,SAASF,IAAEC,IAAE;AAAC,mBAAOD,GAAE,eAAaC,GAAE,OAAK,EAAC,MAAKD,GAAE,WAAU,IAAE;AAAA,UAAI,EAAC,CAAC,CAAC,GAAEE;AAAA,QAAC,EAAE,GAAG,QAAQ,SAAS;AAAE,iBAAS,GAAGF,IAAE;AAAC,cAAIC,KAAED,GAAE,WAAUE,KAAEF,GAAE,UAASG,KAAEH,GAAE,iBAAgBI,KAAEJ,GAAE,YAAWK,KAAE,WAASD,KAAE,CAAC,IAAEA;AAAE,iBAAO,GAAG,QAAQ,cAAc,OAAM,EAAC,WAAUH,GAAC,GAAEE,MAAG,GAAG,QAAQ,cAAc,OAAM,GAAG,EAAC,WAAU,6BAA4B,GAAEE,EAAC,CAAC,GAAEH,EAAC;AAAA,QAAC;AAAC,YAAI,KAAG,CAAC,iCAAgC,kCAAiC,qCAAqC,GAAE,KAAG,SAASF,IAAE;AAAC,aAAGE,IAAEF,EAAC;AAAE,cAAIC,KAAE,GAAGC,EAAC;AAAE,mBAASA,GAAEF,IAAE;AAAC,gBAAIG;AAAE,mBAAO,GAAG,MAAKD,EAAC,GAAE,GAAG,GAAGC,KAAEF,GAAE,KAAK,MAAKD,EAAC,CAAC,GAAE,sBAAsB,SAASA,IAAE;AAAC,cAAAG,GAAE,MAAM,eAAeH,EAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGG,EAAC,GAAE,sBAAsB,WAAU;AAAC,qBAAOA,GAAE,aAAa;AAAA,YAAO,CAAE,GAAE,GAAG,GAAGA,EAAC,GAAE,uBAAuB,SAASH,IAAE;AAAC,eAAC,WAAU;AAAC,oBAAIA,OAAI,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE,CAAC,GAAG,aAAW,IAAI,MAAM,KAAK;AAAE,uBAAO,GAAG,KAAM,SAASC,IAAE;AAAC,yBAAOD,GAAE,QAAQC,EAAC,KAAG;AAAA,gBAAC,CAAE;AAAA,cAAC,GAAGD,GAAE,MAAM,KAAGG,GAAE,MAAM,gBAAgB;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGA,EAAC,GAAE,iBAAiB,WAAU;AAAC,kBAAIH,KAAEG,GAAE,OAAMF,KAAED,GAAE,cAAaE,KAAEF,GAAE,UAASI,KAAEJ,GAAE,YAAWK,KAAE,GAAGF,GAAE,KAAK,GAAEG,KAAEa,IAAGhB,GAAE,KAAK,GAAEc,KAAE,GAAG,GAAEC,KAAEd,MAAGF,MAAGD;AAAE,qBAAOiB,OAAIb,MAAG,GAAG,QAAQY,IAAEZ,EAAC,IAAEA,KAAEC,MAAG,GAAG,QAAQW,IAAEX,EAAC,IAAEA,KAAEW;AAAA,YAAE,CAAE,GAAE,GAAG,GAAGd,EAAC,GAAE,iBAAiB,WAAU;AAAC,cAAAA,GAAE,SAAU,SAASH,IAAE;AAAC,oBAAIC,KAAED,GAAE;AAAK,uBAAM,EAAC,MAAK,GAAG,QAAQC,IAAE,CAAC,EAAC;AAAA,cAAC,GAAI,WAAU;AAAC,uBAAOE,GAAE,kBAAkBA,GAAE,MAAM,IAAI;AAAA,cAAC,CAAE;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGA,EAAC,GAAE,iBAAiB,WAAU;AAAC,cAAAA,GAAE,SAAU,SAASH,IAAE;AAAC,oBAAIC,KAAED,GAAE;AAAK,uBAAM,EAAC,MAAK,GAAG,QAAQC,IAAE,CAAC,EAAC;AAAA,cAAC,GAAI,WAAU;AAAC,uBAAOE,GAAE,kBAAkBA,GAAE,MAAM,IAAI;AAAA,cAAC,CAAE;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGA,EAAC,GAAE,kBAAkB,SAASH,IAAEC,IAAEC,IAAE;AAAC,cAAAC,GAAE,MAAM,SAASH,IAAEC,IAAEC,EAAC,GAAEC,GAAE,MAAM,mBAAiBA,GAAE,MAAM,gBAAgBH,EAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGG,EAAC,GAAE,uBAAuB,SAASH,IAAE;AAAC,cAAAG,GAAE,SAAS,EAAC,eAAcH,GAAC,CAAC,GAAEG,GAAE,MAAM,mBAAiBA,GAAE,MAAM,gBAAgBH,EAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGG,EAAC,GAAE,yBAAyB,WAAU;AAAC,cAAAA,GAAE,SAAS,EAAC,eAAc,KAAI,CAAC,GAAEA,GAAE,MAAM,qBAAmBA,GAAE,MAAM,kBAAkB;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGA,EAAC,GAAE,wBAAwB,SAASH,IAAEC,IAAE;AAAC,cAAAE,GAAE,SAAS,EAAC,eAAc,GAAG,QAAQ,GAAG,GAAEF,EAAC,EAAC,CAAC,GAAEE,GAAE,MAAM,oBAAkBA,GAAE,MAAM,iBAAiBH,IAAEC,EAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGE,EAAC,GAAE,wBAAwB,SAASH,IAAEC,IAAE;AAAC,cAAAE,GAAE,MAAM,oBAAkBA,GAAE,MAAM,iBAAiBH,IAAEC,EAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGE,EAAC,GAAE,oBAAoB,SAASH,IAAE;AAAC,cAAAG,GAAE,MAAM,iBAAeA,GAAE,MAAM,aAAaH,EAAC,GAAEG,GAAE,SAAS,EAAC,yBAAwB,KAAE,CAAC,IAAGA,GAAE,MAAM,uBAAqBA,GAAE,MAAM,YAAUA,GAAE,MAAM,SAASH,EAAC,GAAEG,GAAE,MAAM,WAASA,GAAE,MAAM,QAAQ,IAAE,IAAGA,GAAE,MAAM,mBAAiBA,GAAE,MAAM,gBAAgBH,EAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGG,EAAC,GAAE,qBAAqB,SAASH,IAAE;AAAC,cAAAG,GAAE,wBAAwBH,EAAC,GAAEG,GAAE,MAAM,uBAAqBA,GAAE,MAAM,YAAUA,GAAE,MAAM,SAASH,EAAC,GAAEG,GAAE,MAAM,WAASA,GAAE,MAAM,QAAQ,IAAE,IAAGA,GAAE,MAAM,mBAAiBA,GAAE,MAAM,gBAAgBH,EAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGG,EAAC,GAAE,2BAA2B,SAASH,IAAE;AAAC,cAAAG,GAAE,MAAM,kBAAgBA,GAAE,MAAM,cAAcH,EAAC,GAAEG,GAAE,SAAS,EAAC,yBAAwB,KAAE,CAAC;AAAA,YAAE,CAAE,GAAE,GAAG,GAAGA,EAAC,GAAE,yBAAyB,SAASH,IAAE;AAAC,cAAAG,GAAE,iBAAiBH,EAAC,GAAEG,GAAE,kBAAkBH,EAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGG,EAAC,GAAE,cAAc,SAASH,IAAE;AAAC,cAAAG,GAAE,SAAU,SAASF,IAAE;AAAC,oBAAIC,KAAED,GAAE;AAAK,uBAAM,EAAC,MAAK,GAAG,QAAQC,IAAEF,EAAC,EAAC;AAAA,cAAC,GAAI,WAAU;AAAC,uBAAOG,GAAE,iBAAiBA,GAAE,MAAM,IAAI;AAAA,cAAC,CAAE;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGA,EAAC,GAAE,eAAe,SAASH,IAAE;AAAC,cAAAG,GAAE,SAAU,SAASF,IAAE;AAAC,oBAAIC,KAAED,GAAE;AAAK,uBAAM,EAAC,MAAK,GAAG,QAAQC,IAAEF,EAAC,EAAC;AAAA,cAAC,GAAI,WAAU;AAAC,uBAAOG,GAAE,kBAAkBA,GAAE,MAAM,IAAI;AAAA,cAAC,CAAE;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGA,EAAC,GAAE,mBAAmB,SAASH,IAAE;AAAC,cAAAG,GAAE,SAAU,SAASF,IAAE;AAAC,oBAAIC,KAAED,GAAE;AAAK,uBAAM,EAAC,MAAK,GAAG,QAAQ,GAAG,QAAQC,IAAE,GAAG,QAAQF,EAAC,CAAC,GAAE,GAAG,QAAQA,EAAC,CAAC,EAAC;AAAA,cAAC,GAAI,WAAU;AAAC,uBAAOG,GAAE,sBAAsBA,GAAE,MAAM,IAAI;AAAA,cAAC,CAAE;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGA,EAAC,GAAE,UAAU,WAAU;AAAC,kBAAIH,KAAE,GAAG,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAEG,GAAE,MAAM,MAAKA,GAAE,MAAM,QAAOA,GAAE,MAAM,gBAAgB,GAAEF,KAAE,CAAC;AAAE,qBAAOE,GAAE,MAAM,mBAAiBF,GAAE,KAAK,GAAG,QAAQ,cAAc,OAAM,EAAC,KAAI,KAAI,WAAU,6BAA4B,GAAEE,GAAE,MAAM,aAAW,GAAG,CAAC,GAAEF,GAAE,OAAO,CAAC,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,CAAC,EAAE,IAAK,SAASA,IAAE;AAAC,oBAAIC,KAAE,GAAG,QAAQF,IAAEC,EAAC,GAAEG,KAAED,GAAE,cAAcD,IAAEC,GAAE,MAAM,MAAM,GAAEE,KAAEF,GAAE,MAAM,mBAAiBA,GAAE,MAAM,iBAAiBD,EAAC,IAAE;AAAO,uBAAO,GAAG,QAAQ,cAAc,OAAM,EAAC,KAAID,IAAE,WAAU,GAAG,QAAQ,8BAA6BI,EAAC,EAAC,GAAED,EAAC;AAAA,cAAC,CAAE,CAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGD,EAAC,GAAE,iBAAiB,SAASH,IAAEC,IAAE;AAAC,qBAAOE,GAAE,MAAM,gBAAc,SAASH,IAAEC,IAAEC,IAAE;AAAC,uBAAOD,GAAE,GAAGD,IAAE,QAAOE,EAAC,CAAC;AAAA,cAAC,EAAEF,IAAEG,GAAE,MAAM,eAAcF,EAAC,IAAEE,GAAE,MAAM,mBAAiB,SAASH,IAAEC,IAAE;AAAC,uBAAO,GAAGD,IAAE,OAAMC,EAAC;AAAA,cAAC,EAAED,IAAEC,EAAC,IAAE,SAASD,IAAEC,IAAE;AAAC,uBAAO,GAAGD,IAAE,UAASC,EAAC;AAAA,cAAC,EAAED,IAAEC,EAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGE,EAAC,GAAE,gBAAgB,WAAU;AAAC,cAAAA,GAAE,SAAU,SAASH,IAAE;AAAC,oBAAIC,KAAED,GAAE;AAAK,uBAAM,EAAC,MAAK,GAAG,QAAQC,IAAEE,GAAE,MAAM,iBAAeA,GAAE,MAAM,iBAAe,CAAC,EAAC;AAAA,cAAC,GAAI,WAAU;AAAC,uBAAOA,GAAE,iBAAiBA,GAAE,MAAM,IAAI;AAAA,cAAC,CAAE;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGA,EAAC,GAAE,sBAAsB,WAAU;AAAC,cAAAA,GAAE,SAAS,EAAC,eAAc,KAAI,CAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGA,EAAC,GAAE,wBAAwB,WAAU;AAAC,kBAAG,CAACA,GAAE,MAAM,oBAAmB;AAAC,oBAAIH;AAAE,wBAAO,MAAG;AAAA,kBAAC,KAAKG,GAAE,MAAM;AAAoB,oBAAAH,KAAE,GAAGG,GAAE,MAAM,MAAKA,GAAE,KAAK;AAAE;AAAA,kBAAM,KAAKA,GAAE,MAAM;AAAe,oBAAAH,KAAE,SAASA,IAAE;AAAC,0BAAIC,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE,CAAC,GAAEC,KAAED,GAAE,SAAQE,KAAEF,GAAE,gBAAeG,KAAE,WAASD,KAAE,KAAGA,IAAEE,KAAE,GAAG,GAAG,GAAG,QAAQL,IAAEI,EAAC,CAAC,GAAEA,EAAC,EAAE,WAAUE,KAAEJ,MAAG,GAAG,QAAQA,EAAC;AAAE,6BAAOI,MAAGA,KAAED,MAAG;AAAA,oBAAE,EAAEF,GAAE,MAAM,MAAKA,GAAE,KAAK;AAAE;AAAA,kBAAM;AAAQ,oBAAAH,KAAE,GAAGG,GAAE,MAAM,MAAKA,GAAE,KAAK;AAAA,gBAAC;AAAC,qBAAIA,GAAE,MAAM,4BAA0BA,GAAE,MAAM,+BAA6B,CAACH,OAAI,CAACG,GAAE,MAAM,oBAAmB;AAAC,sBAAIF,KAAE,CAAC,gCAA+B,wCAAwC,GAAEC,KAAEC,GAAE;AAAc,mBAACA,GAAE,MAAM,uBAAqBA,GAAE,MAAM,yBAAuBA,GAAE,MAAM,oBAAkBD,KAAEC,GAAE,eAAcH,MAAGG,GAAE,MAAM,gCAA8BF,GAAE,KAAK,kDAAkD,GAAEC,KAAE;AAAM,sBAAIE,KAAED,GAAE,MAAM,uBAAqBA,GAAE,MAAM,yBAAuBA,GAAE,MAAM,gBAAeE,KAAEF,GAAE,OAAMG,KAAED,GAAE,0BAAyBY,KAAEZ,GAAE,yBAAwBa,KAAEf,GAAE,OAAMiB,KAAEF,GAAE,wBAAuBX,KAAE,WAASa,KAAE,YAAU,OAAOd,KAAEA,KAAE,mBAAiBc,IAAEZ,KAAEU,GAAE,uBAAsBG,KAAE,WAASb,KAAE,YAAU,OAAOS,KAAEA,KAAE,kBAAgBT;AAAE,yBAAO,GAAG,QAAQ,cAAc,UAAS,EAAC,MAAK,UAAS,WAAUP,GAAE,KAAK,GAAG,GAAE,SAAQC,IAAE,WAAUC,GAAE,MAAM,iBAAgB,cAAaC,KAAEiB,KAAEd,GAAC,GAAE,GAAG,QAAQ,cAAc,QAAO,EAAC,WAAU,CAAC,qCAAoC,6CAA6C,EAAE,KAAK,GAAG,EAAC,GAAEH,KAAED,GAAE,MAAM,0BAAwBA,GAAE,MAAM,wBAAwB,CAAC;AAAA,gBAAC;AAAA,cAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGA,EAAC,GAAE,gBAAgB,WAAU;AAAC,cAAAA,GAAE,SAAU,SAASH,IAAE;AAAC,oBAAIC,KAAED,GAAE;AAAK,uBAAM,EAAC,MAAK,GAAG,QAAQC,IAAEE,GAAE,MAAM,iBAAeA,GAAE,MAAM,iBAAe,CAAC,EAAC;AAAA,cAAC,GAAI,WAAU;AAAC,uBAAOA,GAAE,iBAAiBA,GAAE,MAAM,IAAI;AAAA,cAAC,CAAE;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGA,EAAC,GAAE,oBAAoB,WAAU;AAAC,kBAAG,CAACA,GAAE,MAAM,oBAAmB;AAAC,oBAAIH;AAAE,wBAAO,MAAG;AAAA,kBAAC,KAAKG,GAAE,MAAM;AAAoB,oBAAAH,KAAE,GAAGG,GAAE,MAAM,MAAKA,GAAE,KAAK;AAAE;AAAA,kBAAM,KAAKA,GAAE,MAAM;AAAe,oBAAAH,KAAE,SAASA,IAAE;AAAC,0BAAIC,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE,CAAC,GAAEC,KAAED,GAAE,SAAQE,KAAEF,GAAE,gBAAeG,KAAE,WAASD,KAAE,KAAGA,IAAEE,KAAE,GAAG,GAAG,QAAQL,IAAEI,EAAC,GAAEA,EAAC,EAAE,aAAYE,KAAEJ,MAAG,GAAG,QAAQA,EAAC;AAAE,6BAAOI,MAAGA,KAAED,MAAG;AAAA,oBAAE,EAAEF,GAAE,MAAM,MAAKA,GAAE,KAAK;AAAE;AAAA,kBAAM;AAAQ,oBAAAH,KAAE,GAAGG,GAAE,MAAM,MAAKA,GAAE,KAAK;AAAA,gBAAC;AAAC,qBAAIA,GAAE,MAAM,4BAA0BA,GAAE,MAAM,+BAA6B,CAACH,OAAI,CAACG,GAAE,MAAM,oBAAmB;AAAC,sBAAIF,KAAE,CAAC,gCAA+B,oCAAoC;AAAE,kBAAAE,GAAE,MAAM,kBAAgBF,GAAE,KAAK,+CAA+C,GAAEE,GAAE,MAAM,eAAaF,GAAE,KAAK,uDAAuD;AAAE,sBAAIC,KAAEC,GAAE;AAAc,mBAACA,GAAE,MAAM,uBAAqBA,GAAE,MAAM,yBAAuBA,GAAE,MAAM,oBAAkBD,KAAEC,GAAE,eAAcH,MAAGG,GAAE,MAAM,gCAA8BF,GAAE,KAAK,8CAA8C,GAAEC,KAAE;AAAM,sBAAIE,KAAED,GAAE,MAAM,uBAAqBA,GAAE,MAAM,yBAAuBA,GAAE,MAAM,gBAAeE,KAAEF,GAAE,OAAMG,KAAED,GAAE,sBAAqBY,KAAEZ,GAAE,qBAAoBa,KAAEf,GAAE,OAAMiB,KAAEF,GAAE,oBAAmBX,KAAE,WAASa,KAAE,YAAU,OAAOd,KAAEA,KAAE,eAAac,IAAEZ,KAAEU,GAAE,mBAAkBG,KAAE,WAASb,KAAE,YAAU,OAAOS,KAAEA,KAAE,cAAYT;AAAE,yBAAO,GAAG,QAAQ,cAAc,UAAS,EAAC,MAAK,UAAS,WAAUP,GAAE,KAAK,GAAG,GAAE,SAAQC,IAAE,WAAUC,GAAE,MAAM,iBAAgB,cAAaC,KAAEiB,KAAEd,GAAC,GAAE,GAAG,QAAQ,cAAc,QAAO,EAAC,WAAU,CAAC,qCAAoC,yCAAyC,EAAE,KAAK,GAAG,EAAC,GAAEH,KAAED,GAAE,MAAM,sBAAoBA,GAAE,MAAM,oBAAoB,CAAC;AAAA,gBAAC;AAAA,cAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGA,EAAC,GAAE,sBAAsB,WAAU;AAAC,kBAAIH,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAEG,GAAE,MAAM,MAAKF,KAAE,CAAC,iCAAiC;AAAE,qBAAOE,GAAE,MAAM,oBAAkBF,GAAE,KAAK,kDAAkD,GAAEE,GAAE,MAAM,qBAAmBF,GAAE,KAAK,mDAAmD,GAAEE,GAAE,MAAM,yBAAuBF,GAAE,KAAK,uDAAuD,GAAE,GAAG,QAAQ,cAAc,OAAM,EAAC,WAAUA,GAAE,KAAK,GAAG,EAAC,GAAE,GAAGD,IAAEG,GAAE,MAAM,YAAWA,GAAE,MAAM,MAAM,CAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGA,EAAC,GAAE,sBAAsB,WAAU;AAAC,kBAAIH,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,KAAG,UAAU,CAAC;AAAE,kBAAGG,GAAE,MAAM,oBAAkB,CAACH;AAAE,uBAAO,GAAG,QAAQ,cAAc,IAAG,EAAC,oBAAmBG,GAAE,MAAM,oBAAmB,MAAKA,GAAE,MAAM,MAAK,UAASA,GAAE,MAAM,UAAS,SAAQA,GAAE,MAAM,SAAQ,cAAaA,GAAE,MAAM,cAAa,UAASA,GAAE,YAAW,SAAQA,GAAE,MAAM,SAAQ,SAAQA,GAAE,MAAM,SAAQ,MAAK,GAAG,QAAQA,GAAE,MAAM,IAAI,GAAE,wBAAuBA,GAAE,MAAM,wBAAuB,wBAAuBA,GAAE,MAAM,uBAAsB,CAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGA,EAAC,GAAE,uBAAuB,WAAU;AAAC,kBAAIH,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,KAAG,UAAU,CAAC;AAAE,kBAAGG,GAAE,MAAM,qBAAmB,CAACH;AAAE,uBAAO,GAAG,QAAQ,cAAc,IAAG,EAAC,cAAaG,GAAE,MAAM,cAAa,QAAOA,GAAE,MAAM,QAAO,UAASA,GAAE,aAAY,OAAM,GAAG,QAAQA,GAAE,MAAM,IAAI,GAAE,yBAAwBA,GAAE,MAAM,wBAAuB,CAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGA,EAAC,GAAE,2BAA2B,WAAU;AAAC,kBAAIH,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,KAAG,UAAU,CAAC;AAAE,kBAAGG,GAAE,MAAM,yBAAuB,CAACH;AAAE,uBAAO,GAAG,QAAQ,cAAc,IAAG,EAAC,cAAaG,GAAE,MAAM,cAAa,QAAOA,GAAE,MAAM,QAAO,YAAWA,GAAE,MAAM,YAAW,UAASA,GAAE,iBAAgB,SAAQA,GAAE,MAAM,SAAQ,SAAQA,GAAE,MAAM,SAAQ,MAAKA,GAAE,MAAM,MAAK,6BAA4BA,GAAE,MAAM,4BAA2B,CAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGA,EAAC,GAAE,0BAA0B,SAASH,IAAE;AAAC,cAAAG,GAAE,MAAM,SAAS,GAAG,GAAEH,EAAC,GAAEG,GAAE,MAAM,mBAAiBA,GAAE,MAAM,gBAAgB,GAAG,CAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGA,EAAC,GAAE,qBAAqB,WAAU;AAAC,kBAAGA,GAAE,MAAM,eAAa,CAACA,GAAE,MAAM;AAAmB,uBAAO,GAAG,QAAQ,cAAc,OAAM,EAAC,WAAU,kCAAiC,SAAQ,SAASH,IAAE;AAAC,yBAAOG,GAAE,uBAAuBH,EAAC;AAAA,gBAAC,EAAC,GAAEG,GAAE,MAAM,WAAW;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGA,EAAC,GAAE,uBAAuB,SAASH,IAAE;AAAC,kBAAIC,KAAED,GAAE,WAAUE,KAAEF,GAAE;AAAE,qBAAO,GAAG,QAAQ,cAAc,OAAM,EAAC,WAAU,4BAA4B,OAAOG,GAAE,MAAM,iBAAe,8CAA4C,EAAE,EAAC,GAAEA,GAAE,mBAAmBF,EAAC,GAAE,GAAG,QAAQ,cAAc,OAAM,EAAC,WAAU,0EAA0E,OAAOE,GAAE,MAAM,YAAY,GAAE,SAAQA,GAAE,oBAAmB,GAAEA,GAAE,oBAAoB,MAAID,EAAC,GAAEC,GAAE,wBAAwB,MAAID,EAAC,GAAEC,GAAE,mBAAmB,MAAID,EAAC,CAAC,GAAE,GAAG,QAAQ,cAAc,OAAM,EAAC,WAAU,8BAA6B,GAAEC,GAAE,OAAOF,EAAC,CAAC,CAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGE,EAAC,GAAE,sBAAsB,WAAU;AAAC,kBAAIH,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE,CAAC,GAAEC,KAAED,GAAE,WAAUE,KAAEF,GAAE;AAAE,kBAAGG,GAAE,MAAM,kBAAgB,CAACA,GAAE,MAAM,kBAAgBA,GAAE,MAAM;AAAmB,uBAAO;AAAK,kBAAIC,KAAE,GAAGD,GAAE,MAAM,MAAKA,GAAE,KAAK,GAAEE,KAAE,GAAGF,GAAE,MAAM,MAAKA,GAAE,KAAK,GAAEG,KAAE,GAAGH,GAAE,MAAM,MAAKA,GAAE,KAAK,GAAEc,KAAE,GAAGd,GAAE,MAAM,MAAKA,GAAE,KAAK,GAAEe,KAAE,CAACf,GAAE,MAAM,uBAAqB,CAACA,GAAE,MAAM,yBAAuB,CAACA,GAAE,MAAM;AAAe,qBAAO,GAAG,QAAQ,cAAc,OAAM,EAAC,WAAU,6DAA4D,SAAQA,GAAE,MAAM,gBAAe,GAAEA,GAAE,MAAM,mBAAmB,GAAG,GAAG,CAAC,GAAEA,GAAE,KAAK,GAAE,CAAC,GAAE,EAAC,mBAAkBD,IAAE,WAAUD,IAAE,aAAYE,GAAE,aAAY,YAAWA,GAAE,YAAW,eAAcA,GAAE,eAAc,eAAcA,GAAE,eAAc,cAAaA,GAAE,cAAa,cAAaA,GAAE,cAAa,yBAAwBC,IAAE,yBAAwBC,IAAE,wBAAuBC,IAAE,wBAAuBW,GAAC,CAAC,CAAC,GAAEC,MAAG,GAAG,QAAQ,cAAc,OAAM,EAAC,WAAU,8BAA6B,GAAEf,GAAE,OAAOF,EAAC,CAAC,CAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGE,EAAC,GAAE,oBAAoB,WAAU;AAAC,kBAAIH,KAAEG,GAAE,MAAM,MAAKF,KAAEE,GAAE,OAAMD,KAAED,GAAE,gBAAeG,KAAE,GAAGJ,IAAEC,GAAE,cAAc,GAAEI,KAAED,GAAE,aAAYE,KAAEF,GAAE;AAAU,qBAAO,GAAG,QAAQ,cAAc,OAAM,EAAC,WAAU,wDAAuD,GAAEF,KAAE,GAAG,OAAOG,IAAE,KAAK,EAAE,OAAOC,EAAC,IAAE,GAAG,QAAQN,EAAC,CAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGG,EAAC,GAAE,gBAAgB,SAASH,IAAE;AAAC,sBAAO,MAAG;AAAA,gBAAC,KAAK,WAASG,GAAE,MAAM;AAAmB,yBAAOA,GAAE,mBAAmBH,EAAC;AAAA,gBAAE,MAAKG,GAAE,MAAM,uBAAqBA,GAAE,MAAM,yBAAuBA,GAAE,MAAM;AAAe,yBAAOA,GAAE,iBAAiBH,EAAC;AAAA,gBAAE;AAAQ,yBAAOG,GAAE,oBAAoBH,EAAC;AAAA,cAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGG,EAAC,GAAE,gBAAgB,WAAU;AAAC,kBAAG,CAACA,GAAE,MAAM,sBAAoB,CAACA,GAAE,MAAM,gBAAe;AAAC,yBAAQH,KAAE,CAAC,GAAEC,KAAEE,GAAE,MAAM,qBAAmBA,GAAE,MAAM,cAAY,IAAE,GAAED,KAAE,GAAG,QAAQC,GAAE,MAAM,MAAKF,EAAC,GAAEG,KAAE,GAAEA,KAAED,GAAE,MAAM,aAAY,EAAEC,IAAE;AAAC,sBAAIC,KAAED,KAAED,GAAE,MAAM,iBAAgBG,KAAE,GAAG,QAAQJ,IAAEG,EAAC,GAAEY,KAAE,SAAS,OAAOb,EAAC,GAAEc,KAAEd,KAAED,GAAE,MAAM,cAAY,GAAEiB,KAAEhB,KAAE;AAAE,kBAAAJ,GAAE,KAAK,GAAG,QAAQ,cAAc,OAAM,EAAC,KAAIiB,IAAE,KAAI,SAASjB,IAAE;AAAC,oBAAAG,GAAE,iBAAeH;AAAA,kBAAC,GAAE,WAAU,oCAAmC,GAAEG,GAAE,aAAa,EAAC,WAAUG,IAAE,GAAEF,GAAC,CAAC,GAAE,GAAG,QAAQ,cAAc,IAAG,EAAC,0BAAyBD,GAAE,MAAM,0BAAyB,4BAA2BA,GAAE,MAAM,4BAA2B,qBAAoBA,GAAE,MAAM,qBAAoB,iBAAgBA,GAAE,MAAM,sBAAqB,UAASA,GAAE,iBAAgB,KAAIG,IAAE,cAAaH,GAAE,MAAM,cAAa,kBAAiBA,GAAE,MAAM,kBAAiB,gBAAeA,GAAE,MAAM,gBAAe,YAAWA,GAAE,gBAAe,iBAAgBA,GAAE,MAAM,oBAAmB,iBAAgBA,GAAE,qBAAoB,cAAaA,GAAE,uBAAsB,cAAaA,GAAE,MAAM,cAAa,gBAAeC,IAAE,kBAAiBD,GAAE,MAAM,kBAAiB,QAAOA,GAAE,MAAM,QAAO,SAAQA,GAAE,MAAM,SAAQ,SAAQA,GAAE,MAAM,SAAQ,cAAaA,GAAE,MAAM,cAAa,sBAAqBA,GAAE,MAAM,sBAAqB,gBAAeA,GAAE,MAAM,gBAAe,eAAcA,GAAE,MAAM,eAAc,cAAaA,GAAE,MAAM,cAAa,sBAAqBA,GAAE,MAAM,sBAAqB,QAAOA,GAAE,MAAM,QAAO,sBAAqBA,GAAE,MAAM,sBAAqB,aAAYA,GAAE,MAAM,aAAY,YAAWA,GAAE,MAAM,YAAW,cAAaA,GAAE,MAAM,cAAa,iBAAgBA,GAAE,MAAM,iBAAgB,UAASA,GAAE,MAAM,UAAS,cAAaA,GAAE,MAAM,cAAa,YAAWA,GAAE,MAAM,YAAW,cAAaA,GAAE,MAAM,cAAa,4BAA2BA,GAAE,MAAM,4BAA2B,iBAAgBA,GAAE,MAAM,iBAAgB,WAAUA,GAAE,MAAM,WAAU,SAAQA,GAAE,MAAM,SAAQ,eAAcA,GAAE,MAAM,eAAc,SAAQA,GAAE,MAAM,SAAQ,qBAAoBA,GAAE,MAAM,qBAAoB,mBAAkBA,GAAE,MAAM,mBAAkB,oBAAmBA,GAAE,MAAM,oBAAmB,sBAAqBA,GAAE,MAAM,sBAAqB,mBAAkBA,GAAE,MAAM,mBAAkB,4BAA2BA,GAAE,MAAM,4BAA2B,qBAAoBA,GAAE,MAAM,qBAAoB,yBAAwBA,GAAE,MAAM,yBAAwB,8BAA6BA,GAAE,MAAM,8BAA6B,+BAA8BA,GAAE,MAAM,+BAA8B,gBAAeA,GAAE,MAAM,gBAAe,uBAAsBA,GAAE,MAAM,uBAAsB,gBAAeA,GAAE,MAAM,gBAAe,cAAaA,GAAE,cAAa,4BAA2Be,IAAE,8BAA6BE,GAAC,CAAC,CAAC,CAAC;AAAA,gBAAC;AAAC,uBAAOpB;AAAA,cAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGG,EAAC,GAAE,eAAe,WAAU;AAAC,kBAAG,CAACA,GAAE,MAAM;AAAmB,uBAAOA,GAAE,MAAM,iBAAe,GAAG,QAAQ,cAAc,OAAM,EAAC,WAAU,oCAAmC,GAAEA,GAAE,aAAa,GAAE,GAAG,QAAQ,cAAc,IAAG,GAAG,EAAC,YAAWA,GAAE,gBAAe,eAAcA,GAAE,MAAM,eAAc,oBAAmBA,GAAE,oBAAmB,MAAKA,GAAE,MAAM,KAAI,GAAEA,GAAE,OAAM,EAAC,kBAAiBA,GAAE,sBAAqB,kBAAiBA,GAAE,qBAAoB,CAAC,CAAC,CAAC,IAAE;AAAA,YAAM,CAAE,GAAE,GAAG,GAAGA,EAAC,GAAE,qBAAqB,WAAU;AAAC,kBAAGA,GAAE,MAAM,mBAAiBA,GAAE,MAAM,kBAAgBA,GAAE,MAAM;AAAoB,uBAAO,GAAG,QAAQ,cAAc,IAAG,EAAC,UAASA,GAAE,MAAM,UAAS,YAAWA,GAAE,MAAM,YAAW,UAASA,GAAE,MAAM,cAAa,eAAcA,GAAE,MAAM,eAAc,QAAOA,GAAE,MAAM,YAAW,cAAaA,GAAE,MAAM,cAAa,WAAUA,GAAE,MAAM,eAAc,SAAQA,GAAE,MAAM,SAAQ,SAAQA,GAAE,MAAM,SAAQ,cAAaA,GAAE,MAAM,cAAa,YAAWA,GAAE,MAAM,YAAW,aAAYA,GAAE,MAAM,aAAY,aAAYA,GAAE,MAAM,aAAY,mBAAkBA,GAAE,MAAM,mBAAkB,uBAAsBA,GAAE,MAAM,uBAAsB,kBAAiBA,GAAE,MAAM,kBAAiB,YAAWA,GAAE,MAAM,YAAW,UAASA,GAAE,MAAM,gBAAe,aAAYA,GAAE,MAAM,aAAY,QAAOA,GAAE,MAAM,QAAO,iBAAgBA,GAAE,MAAM,iBAAgB,oBAAmBA,GAAE,MAAM,mBAAkB,CAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGA,EAAC,GAAE,0BAA0B,WAAU;AAAC,kBAAIH,KAAE,IAAI,KAAKG,GAAE,MAAM,QAAQ,GAAEF,KAAE,GAAGD,EAAC,KAAG,QAAQG,GAAE,MAAM,QAAQ,IAAE,GAAG,OAAO,GAAGH,GAAE,SAAS,CAAC,GAAE,GAAG,EAAE,OAAO,GAAGA,GAAE,WAAW,CAAC,CAAC,IAAE;AAAG,kBAAGG,GAAE,MAAM;AAAc,uBAAO,GAAG,QAAQ,cAAc,IAAG,EAAC,MAAKH,IAAE,YAAWC,IAAE,gBAAeE,GAAE,MAAM,gBAAe,UAASA,GAAE,MAAM,cAAa,iBAAgBA,GAAE,MAAM,gBAAe,CAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGA,EAAC,GAAE,wBAAwB,WAAU;AAAC,kBAAIH,IAAEC,KAAE,GAAGE,GAAE,MAAM,MAAKA,GAAE,MAAM,cAAc,GAAED,KAAED,GAAE,aAAYG,KAAEH,GAAE;AAAU,qBAAOD,KAAEG,GAAE,MAAM,iBAAe,GAAG,OAAOD,IAAE,KAAK,EAAE,OAAOE,EAAC,IAAED,GAAE,MAAM,uBAAqBA,GAAE,MAAM,wBAAsB,GAAG,QAAQA,GAAE,MAAM,IAAI,IAAE,GAAG,OAAO,GAAG,GAAG,QAAQA,GAAE,MAAM,IAAI,GAAEA,GAAE,MAAM,MAAM,GAAE,GAAG,EAAE,OAAO,GAAG,QAAQA,GAAE,MAAM,IAAI,CAAC,GAAE,GAAG,QAAQ,cAAc,QAAO,EAAC,MAAK,SAAQ,aAAY,UAAS,WAAU,8BAA6B,GAAEA,GAAE,MAAM,2BAAyBH,EAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGG,EAAC,GAAE,kBAAkB,WAAU;AAAC,kBAAGA,GAAE,MAAM;AAAS,uBAAO,GAAG,QAAQ,cAAc,OAAM,EAAC,WAAU,uCAAsC,GAAEA,GAAE,MAAM,QAAQ;AAAA,YAAC,CAAE,GAAEA,GAAE,eAAa,GAAG,QAAQ,UAAU,GAAEA,GAAE,QAAM,EAAC,MAAKA,GAAE,cAAc,GAAE,eAAc,MAAK,gBAAe,MAAK,yBAAwB,MAAE,GAAEA;AAAA,UAAC;AAAC,iBAAO,GAAGD,IAAE,CAAC,EAAC,KAAI,qBAAoB,OAAM,WAAU;AAAC,gBAAIF,KAAE;AAAK,iBAAK,MAAM,mBAAiB,KAAK,uBAAqB,KAAKA,GAAE,SAAS,EAAC,gBAAeA,GAAE,eAAc,CAAC;AAAA,UAAE,EAAC,GAAE,EAAC,KAAI,sBAAqB,OAAM,SAASA,IAAE;AAAC,gBAAIC,KAAE;AAAK,gBAAG,CAAC,KAAK,MAAM,gBAAc,GAAG,KAAK,MAAM,cAAaD,GAAE,YAAY,KAAG,KAAK,MAAM,oBAAkBA,GAAE;AAAgB,mBAAK,MAAM,cAAY,CAAC,GAAG,KAAK,MAAM,YAAWA,GAAE,UAAU,KAAG,KAAK,SAAS,EAAC,MAAK,KAAK,MAAM,WAAU,CAAC;AAAA,iBAAM;AAAC,kBAAIE,KAAE,CAAC,GAAG,KAAK,MAAM,MAAK,KAAK,MAAM,YAAY;AAAE,mBAAK,SAAS,EAAC,MAAK,KAAK,MAAM,aAAY,GAAG,WAAU;AAAC,uBAAOA,MAAGD,GAAE,wBAAwBA,GAAE,MAAM,IAAI;AAAA,cAAC,CAAE;AAAA,YAAC;AAAA,UAAC,EAAC,GAAE,EAAC,KAAI,UAAS,OAAM,WAAU;AAAC,gBAAID,KAAE,KAAK,MAAM,aAAW;AAAG,mBAAO,GAAG,QAAQ,cAAc,OAAM,EAAC,KAAI,KAAK,aAAY,GAAE,GAAG,QAAQ,cAAcA,IAAE,EAAC,WAAU,GAAG,QAAQ,oBAAmB,KAAK,MAAM,WAAU,EAAC,+BAA8B,KAAK,MAAM,mBAAkB,CAAC,GAAE,iBAAgB,KAAK,MAAM,iBAAgB,YAAW,KAAK,MAAM,WAAU,GAAE,KAAK,qBAAqB,GAAE,KAAK,qBAAqB,GAAE,KAAK,iBAAiB,GAAE,KAAK,aAAa,GAAE,KAAK,YAAY,GAAE,KAAK,kBAAkB,GAAE,KAAK,kBAAkB,GAAE,KAAK,uBAAuB,GAAE,KAAK,eAAe,CAAC,CAAC;AAAA,UAAC,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,KAAI,WAAU;AAAC,mBAAM,EAAC,iBAAgB,WAAU;AAAA,YAAC,GAAE,aAAY,GAAE,iBAAgB,GAAE,0BAAyB,OAAG,aAAY,QAAO,yBAAwB,iBAAgB,qBAAoB,aAAY,0BAAyB,kBAAiB,sBAAqB,cAAa,iBAAgB,MAAK,gBAAe,GAAE;AAAA,UAAC,EAAC,CAAC,CAAC,GAAEE;AAAA,QAAC,EAAE,GAAG,QAAQ,SAAS,GAAE,KAAG,SAASF,IAAE;AAAC,aAAGE,IAAEF,EAAC;AAAE,cAAIC,KAAE,GAAGC,EAAC;AAAE,mBAASA,GAAEF,IAAE;AAAC,gBAAIG;AAAE,mBAAO,GAAG,MAAKD,EAAC,IAAGC,KAAEF,GAAE,KAAK,MAAKD,EAAC,GAAG,KAAG,SAAS,cAAc,KAAK,GAAEG;AAAA,UAAC;AAAC,iBAAO,GAAGD,IAAE,CAAC,EAAC,KAAI,qBAAoB,OAAM,WAAU;AAAC,iBAAK,cAAY,KAAK,MAAM,cAAY,UAAU,eAAe,KAAK,MAAM,QAAQ,GAAE,KAAK,eAAa,KAAK,aAAW,SAAS,cAAc,KAAK,GAAE,KAAK,WAAW,aAAa,MAAK,KAAK,MAAM,QAAQ,IAAG,KAAK,MAAM,cAAY,SAAS,MAAM,YAAY,KAAK,UAAU,IAAG,KAAK,WAAW,YAAY,KAAK,EAAE;AAAA,UAAC,EAAC,GAAE,EAAC,KAAI,wBAAuB,OAAM,WAAU;AAAC,iBAAK,WAAW,YAAY,KAAK,EAAE;AAAA,UAAC,EAAC,GAAE,EAAC,KAAI,UAAS,OAAM,WAAU;AAAC,mBAAO,GAAG,QAAQ,aAAa,KAAK,MAAM,UAAS,KAAK,EAAE;AAAA,UAAC,EAAC,CAAC,CAAC,GAAEA;AAAA,QAAC,EAAE,GAAG,QAAQ,SAAS,GAAE,KAAG,SAASF,IAAE;AAAC,iBAAM,CAACA,GAAE,YAAU,OAAKA,GAAE;AAAA,QAAQ,GAAE,KAAG,SAASA,IAAE;AAAC,aAAGE,IAAEF,EAAC;AAAE,cAAIC,KAAE,GAAGC,EAAC;AAAE,mBAASA,GAAEF,IAAE;AAAC,gBAAIG;AAAE,mBAAO,GAAG,MAAKD,EAAC,GAAE,GAAG,GAAGC,KAAEF,GAAE,KAAK,MAAKD,EAAC,CAAC,GAAE,kBAAkB,WAAU;AAAC,qBAAO,MAAM,UAAU,MAAM,KAAKG,GAAE,WAAW,QAAQ,iBAAiB,gDAAgD,GAAE,GAAE,EAAE,EAAE,OAAO,EAAE;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGA,EAAC,GAAE,oBAAoB,WAAU;AAAC,kBAAIH,KAAEG,GAAE,eAAe;AAAE,cAAAH,MAAGA,GAAE,SAAO,KAAGA,GAAEA,GAAE,SAAO,CAAC,EAAE,MAAM;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGG,EAAC,GAAE,kBAAkB,WAAU;AAAC,kBAAIH,KAAEG,GAAE,eAAe;AAAE,cAAAH,MAAGA,GAAE,SAAO,KAAGA,GAAE,CAAC,EAAE,MAAM;AAAA,YAAC,CAAE,GAAEG,GAAE,aAAW,GAAG,QAAQ,UAAU,GAAEA;AAAA,UAAC;AAAC,iBAAO,GAAGD,IAAE,CAAC,EAAC,KAAI,UAAS,OAAM,WAAU;AAAC,mBAAO,KAAK,MAAM,gBAAc,GAAG,QAAQ,cAAc,OAAM,EAAC,WAAU,8BAA6B,KAAI,KAAK,WAAU,GAAE,GAAG,QAAQ,cAAc,OAAM,EAAC,WAAU,qCAAoC,UAAS,KAAI,SAAQ,KAAK,iBAAgB,CAAC,GAAE,KAAK,MAAM,UAAS,GAAG,QAAQ,cAAc,OAAM,EAAC,WAAU,mCAAkC,UAAS,KAAI,SAAQ,KAAK,eAAc,CAAC,CAAC,IAAE,KAAK,MAAM;AAAA,UAAQ,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,KAAI,WAAU;AAAC,mBAAM,EAAC,eAAc,KAAE;AAAA,UAAC,EAAC,CAAC,CAAC,GAAEA;AAAA,QAAC,EAAE,GAAG,QAAQ,SAAS,GAAE,KAAG,SAASF,IAAE;AAAC,aAAGE,IAAEF,EAAC;AAAE,cAAIC,KAAE,GAAGC,EAAC;AAAE,mBAASA,KAAG;AAAC,mBAAO,GAAG,MAAKA,EAAC,GAAED,GAAE,MAAM,MAAK,SAAS;AAAA,UAAC;AAAC,iBAAO,GAAGC,IAAE,CAAC,EAAC,KAAI,UAAS,OAAM,WAAU;AAAC,gBAAIF,IAAEC,KAAE,KAAK,OAAMC,KAAED,GAAE,WAAUE,KAAEF,GAAE,kBAAiBG,KAAEH,GAAE,YAAWI,KAAEJ,GAAE,iBAAgBK,KAAEL,GAAE,iBAAgBgB,KAAEhB,GAAE,iBAAgBiB,KAAEjB,GAAE,aAAYmB,KAAEnB,GAAE,iBAAgBM,KAAEN,GAAE,eAAcO,KAAEP,GAAE,iBAAgBoB,KAAEpB,GAAE,UAASqB,KAAErB,GAAE;AAAW,gBAAG,CAACG,IAAE;AAAC,kBAAImB,KAAE,GAAG,QAAQ,2BAA0BrB,EAAC;AAAE,cAAAF,KAAE,GAAG,QAAQ,cAAc,GAAG,QAAO,GAAG,EAAC,WAAUM,IAAE,WAAUW,GAAC,GAAEC,EAAC,GAAG,SAASlB,IAAE;AAAC,oBAAIC,KAAED,GAAE,KAAIE,KAAEF,GAAE,OAAMG,KAAEH,GAAE,WAAUI,KAAEJ,GAAE;AAAW,uBAAO,GAAG,QAAQ,cAAc,IAAG,EAAC,eAAcO,GAAC,GAAE,GAAG,QAAQ,cAAc,OAAM,EAAC,KAAIN,IAAE,OAAMC,IAAE,WAAUqB,IAAE,kBAAiBpB,IAAE,WAAUK,GAAC,GAAE,GAAG,QAAQ,aAAaH,IAAE,EAAC,YAAWD,GAAC,CAAC,CAAC,CAAC;AAAA,cAAC,CAAE;AAAA,YAAC;AAAC,iBAAK,MAAM,oBAAkBJ,KAAE,GAAG,QAAQ,cAAc,KAAK,MAAM,iBAAgB,CAAC,GAAEA,EAAC,IAAGqB,MAAG,CAACjB,OAAIJ,KAAE,GAAG,QAAQ,cAAc,IAAG,EAAC,UAASqB,IAAE,YAAWC,GAAC,GAAEtB,EAAC;AAAG,gBAAIwB,KAAE,GAAG,QAAQ,4BAA2BrB,EAAC;AAAE,mBAAO,GAAG,QAAQ,cAAc,GAAG,SAAQ,EAAC,WAAU,2BAA0B,GAAE,GAAG,QAAQ,cAAc,GAAG,WAAU,MAAM,SAASH,IAAE;AAAC,kBAAIC,KAAED,GAAE;AAAI,qBAAO,GAAG,QAAQ,cAAc,OAAM,EAAC,KAAIC,IAAE,WAAUuB,GAAC,GAAEJ,EAAC;AAAA,YAAC,CAAE,GAAEpB,EAAC;AAAA,UAAC,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,KAAI,WAAU;AAAC,mBAAM,EAAC,YAAW,MAAG,iBAAgB,CAAC,GAAE,aAAY,CAAC,GAAE,iBAAgB,eAAc;AAAA,UAAC,EAAC,CAAC,CAAC,GAAEE;AAAA,QAAC,EAAE,GAAG,QAAQ,SAAS,GAAE,KAAG,0CAAyC,KAAG,GAAG,QAAQ,EAAE;AAAE,YAAI,KAAG,yBAAwB,KAAG,SAASF,IAAE;AAAC,aAAGE,IAAEF,EAAC;AAAE,cAAIC,KAAE,GAAGC,EAAC;AAAE,mBAASA,GAAEF,IAAE;AAAC,gBAAIG;AAAE,mBAAO,GAAG,MAAKD,EAAC,GAAE,GAAG,GAAGC,KAAEF,GAAE,KAAK,MAAKD,EAAC,CAAC,GAAE,mBAAmB,WAAU;AAAC,qBAAOG,GAAE,MAAM,aAAWA,GAAE,MAAM,aAAWA,GAAE,MAAM,cAAYA,GAAE,MAAM,YAAUA,GAAE,MAAM,YAAUA,GAAE,MAAM,gBAAcA,GAAE,MAAM,UAAQA,GAAE,MAAM,UAAQ,GAAG;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGA,EAAC,GAAE,oBAAoB,WAAU;AAAC,kBAAIH,IAAEC,KAAEE,GAAE,gBAAgB,GAAED,KAAE,GAAGC,GAAE,KAAK,GAAEC,KAAEe,IAAGhB,GAAE,KAAK,GAAEE,KAAEH,MAAG,GAAG,QAAQD,IAAE,GAAG,QAAQC,EAAC,CAAC,IAAEA,KAAEE,MAAG,GAAG,QAAQH,IAAE,GAAG,QAAQG,EAAC,CAAC,IAAEA,KAAEH;AAAE,qBAAM,EAAC,MAAKE,GAAE,MAAM,aAAW,OAAG,cAAa,OAAG,cAAa,UAAQH,KAAEG,GAAE,MAAM,eAAaA,GAAE,MAAM,YAAUA,GAAE,MAAM,aAAW,WAASH,KAAEA,KAAEK,IAAE,gBAAe,GAAGF,GAAE,MAAM,cAAc,GAAE,SAAQ,OAAG,sBAAqB,OAAG,yBAAwB,MAAE;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGA,EAAC,GAAE,4BAA4B,WAAU;AAAC,cAAAA,GAAE,uBAAqB,aAAaA,GAAE,mBAAmB;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGA,EAAC,GAAE,YAAY,WAAU;AAAC,cAAAA,GAAE,SAAOA,GAAE,MAAM,SAAOA,GAAE,MAAM,MAAM,EAAC,eAAc,KAAE,CAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGA,EAAC,GAAE,WAAW,WAAU;AAAC,cAAAA,GAAE,SAAOA,GAAE,MAAM,QAAMA,GAAE,MAAM,KAAK,GAAEA,GAAE,iBAAiB;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGA,EAAC,GAAE,WAAW,SAASH,IAAE;AAAC,kBAAIC,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,KAAG,UAAU,CAAC;AAAE,cAAAE,GAAE,SAAS,EAAC,MAAKH,IAAE,cAAaA,MAAGG,GAAE,MAAM,OAAKA,GAAE,MAAM,eAAaA,GAAE,iBAAiB,EAAE,cAAa,qBAAoB,GAAE,GAAG,WAAU;AAAC,gBAAAH,MAAGG,GAAE,SAAU,SAASH,IAAE;AAAC,yBAAM,EAAC,SAAQ,CAAC,CAACC,MAAGD,GAAE,QAAO;AAAA,gBAAC,GAAI,WAAU;AAAC,mBAACC,MAAGE,GAAE,QAAQ,GAAEA,GAAE,SAAS,EAAC,YAAW,KAAI,CAAC;AAAA,gBAAC,CAAE;AAAA,cAAC,CAAE;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGA,EAAC,GAAE,WAAW,WAAU;AAAC,qBAAO,GAAG,QAAQA,GAAE,MAAM,YAAY;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGA,EAAC,GAAE,kBAAkB,WAAU;AAAC,qBAAO,WAASA,GAAE,MAAM,OAAKA,GAAE,MAAM,QAAM,CAACA,GAAE,MAAM,YAAU,CAACA,GAAE,MAAM,WAASA,GAAE,MAAM;AAAA,YAAI,CAAE,GAAE,GAAG,GAAGA,EAAC,GAAE,eAAe,SAASH,IAAE;AAAC,cAAAG,GAAE,MAAM,iBAAeA,GAAE,MAAM,QAAQH,EAAC,GAAEG,GAAE,MAAM,sBAAoBA,GAAE,MAAM,YAAUA,GAAE,QAAQ,IAAE,IAAGA,GAAE,SAAS,EAAC,SAAQ,KAAE,CAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGA,EAAC,GAAE,oBAAoB,WAAU;AAAC,2BAAaA,GAAE,iBAAiB,GAAEA,GAAE,oBAAkB;AAAA,YAAI,CAAE,GAAE,GAAG,GAAGA,EAAC,GAAE,mBAAmB,WAAU;AAAC,cAAAA,GAAE,iBAAiB,GAAEA,GAAE,oBAAkB,WAAY,WAAU;AAAC,uBAAOA,GAAE,SAAS;AAAA,cAAC,GAAG,CAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGA,EAAC,GAAE,uBAAuB,WAAU;AAAC,cAAAA,GAAE,iBAAiB;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGA,EAAC,GAAE,cAAc,SAASH,IAAE;AAAC,eAAC,CAACG,GAAE,MAAM,QAAMA,GAAE,MAAM,cAAYA,GAAE,MAAM,kBAAgBA,GAAE,MAAM,OAAOH,EAAC,GAAEG,GAAE,SAAS,EAAC,SAAQ,MAAE,CAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGA,EAAC,GAAE,8BAA8B,SAASH,IAAE;AAAC,cAAAG,GAAE,MAAM,UAAQA,GAAE,QAAQ,KAAE,GAAEA,GAAE,MAAM,eAAeH,EAAC,GAAEG,GAAE,MAAM,cAAYH,GAAE,eAAe;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGG,EAAC,GAAE,gBAAgB,WAAU;AAAC,uBAAQH,KAAE,UAAU,QAAOC,KAAE,IAAI,MAAMD,EAAC,GAAEE,KAAE,GAAEA,KAAEF,IAAEE;AAAI,gBAAAD,GAAEC,EAAC,IAAE,UAAUA,EAAC;AAAE,kBAAIE,KAAEH,GAAE,CAAC;AAAE,kBAAG,CAACE,GAAE,MAAM,gBAAcA,GAAE,MAAM,YAAY,MAAM,GAAGA,EAAC,GAAEF,EAAC,GAAE,cAAY,OAAOG,GAAE,sBAAoB,CAACA,GAAE,mBAAmB,IAAG;AAAC,gBAAAD,GAAE,SAAS,EAAC,YAAWC,GAAE,OAAO,OAAM,qBAAoB,GAAE,CAAC;AAAE,oBAAIC,IAAEC,IAAEW,IAAEC,IAAEE,IAAEb,IAAEC,IAAEa,IAAEC,MAAGjB,KAAED,GAAE,OAAO,OAAME,KAAEH,GAAE,MAAM,YAAWc,KAAEd,GAAE,MAAM,QAAOe,KAAEf,GAAE,MAAM,eAAciB,KAAEjB,GAAE,MAAM,SAAQI,KAAE,MAAKC,KAAE,GAAGS,EAAC,KAAG,GAAG,GAAG,CAAC,GAAEI,KAAE,MAAG,MAAM,QAAQf,EAAC,KAAGA,GAAE,QAAS,SAASN,IAAE;AAAC,sBAAIC,KAAE,GAAG,QAAQI,IAAEL,IAAE,oBAAI,QAAK,EAAC,QAAOQ,GAAC,CAAC;AAAE,kBAAAU,OAAIG,KAAE,GAAGpB,IAAEmB,EAAC,KAAGf,OAAI,GAAGJ,IAAED,IAAEiB,EAAC,IAAG,GAAGhB,IAAEmB,EAAC,KAAGC,OAAId,KAAEN;AAAA,gBAAE,CAAE,GAAEM,OAAIA,KAAE,GAAG,QAAQF,IAAEC,IAAE,oBAAI,QAAK,EAAC,QAAOE,GAAC,CAAC,GAAEU,KAAEG,KAAE,GAAGd,EAAC,KAAGF,OAAI,GAAGE,IAAED,IAAEW,EAAC,IAAE,GAAGV,EAAC,MAAID,KAAEA,GAAE,MAAM,EAAE,EAAE,IAAK,SAASN,IAAE;AAAC,sBAAIC,KAAED,GAAE,CAAC;AAAE,yBAAM,QAAMC,MAAG,QAAMA,KAAEO,MAAG,GAAE,GAAGP,EAAC,GAAGD,IAAEQ,GAAE,UAAU,IAAEP,KAAED;AAAA,gBAAC,CAAE,EAAE,KAAK,EAAE,GAAEK,GAAE,SAAO,MAAIE,KAAE,GAAG,QAAQF,IAAEC,GAAE,MAAM,GAAED,GAAE,MAAM,GAAE,oBAAI,MAAI,IAAG,GAAGE,EAAC,MAAIA,KAAE,IAAI,KAAKF,EAAC,KAAI,GAAGE,EAAC,KAAGc,KAAEd,KAAE;AAAO,gBAAAJ,GAAE,MAAM,sBAAoBA,GAAE,MAAM,YAAU,CAAC,GAAGmB,IAAEnB,GAAE,MAAM,QAAQ,MAAImB,KAAE,QAAMA,KAAE,GAAG,QAAQnB,GAAE,MAAM,UAAS,EAAC,OAAM,GAAG,QAAQA,GAAE,MAAM,QAAQ,GAAE,SAAQ,GAAG,QAAQA,GAAE,MAAM,QAAQ,GAAE,SAAQ,GAAG,QAAQA,GAAE,MAAM,QAAQ,EAAC,CAAC,IAAE,GAAG,QAAQA,GAAE,MAAM,UAAS,EAAC,OAAM,GAAG,QAAQmB,EAAC,GAAE,SAAQ,GAAG,QAAQA,EAAC,GAAE,SAAQ,GAAG,QAAQA,EAAC,EAAC,CAAC,IAAG,CAACA,MAAGlB,GAAE,OAAO,SAAOD,GAAE,YAAYmB,IAAElB,IAAE,IAAE;AAAA,cAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGD,EAAC,GAAE,gBAAgB,SAASH,IAAEC,IAAEC,IAAE;AAAC,kBAAGC,GAAE,SAAS,EAAC,cAAa,KAAE,GAAG,WAAU;AAAC,uBAAOA,GAAE,sBAAoB,WAAY,WAAU;AAAC,yBAAOA,GAAE,SAAS,EAAC,cAAa,MAAE,CAAC;AAAA,gBAAC,GAAG,EAAE,GAAEA,GAAE;AAAA,cAAmB,CAAE,GAAEA,GAAE,MAAM,eAAaA,GAAE,MAAM,YAAYF,EAAC,GAAEE,GAAE,YAAYH,IAAEC,IAAE,OAAGC,EAAC,GAAEC,GAAE,MAAM,kBAAgBA,GAAE,SAAS,EAAC,yBAAwB,KAAE,CAAC,GAAE,CAACA,GAAE,MAAM,uBAAqBA,GAAE,MAAM;AAAe,gBAAAA,GAAE,gBAAgBH,EAAC;AAAA,uBAAU,CAACG,GAAE,MAAM,QAAO;AAAC,gBAAAA,GAAE,MAAM,gBAAcA,GAAE,QAAQ,KAAE;AAAE,oBAAIC,KAAED,GAAE,OAAME,KAAED,GAAE,WAAUE,KAAEF,GAAE;AAAQ,iBAACC,MAAGC,MAAG,GAAG,QAAQN,IAAEK,EAAC,KAAGF,GAAE,QAAQ,KAAE;AAAA,cAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGA,EAAC,GAAE,eAAe,SAASH,IAAEC,IAAEC,IAAEE,IAAE;AAAC,kBAAIC,KAAEL;AAAE,kBAAGG,GAAE,MAAM,gBAAe;AAAC,oBAAG,SAAOE,MAAG,GAAG,GAAG,QAAQA,EAAC,GAAEF,GAAE,KAAK;AAAE;AAAA,cAAM,WAASA,GAAE,MAAM,qBAAoB;AAAC,oBAAG,SAAOE,MAAG,GAAGA,IAAEF,GAAE,KAAK;AAAE;AAAA,cAAM,WAAS,SAAOE,MAAG,GAAGA,IAAEF,GAAE,KAAK;AAAE;AAAO,kBAAIG,KAAEH,GAAE,OAAMc,KAAEX,GAAE,UAASY,KAAEZ,GAAE,cAAac,KAAEd,GAAE,WAAUC,KAAED,GAAE;AAAQ,kBAAG,CAAC,GAAGH,GAAE,MAAM,UAASE,EAAC,KAAGF,GAAE,MAAM,gBAAce;AAAE,oBAAG,SAAOb,OAAI,CAACF,GAAE,MAAM,YAAUD,OAAIC,GAAE,MAAM,kBAAgBA,GAAE,MAAM,sBAAoBA,GAAE,MAAM,mBAAiBE,KAAE,GAAGA,IAAE,EAAC,MAAK,GAAG,QAAQF,GAAE,MAAM,QAAQ,GAAE,QAAO,GAAG,QAAQA,GAAE,MAAM,QAAQ,GAAE,QAAO,GAAG,QAAQA,GAAE,MAAM,QAAQ,EAAC,CAAC,IAAGA,GAAE,MAAM,UAAQA,GAAE,SAAS,EAAC,cAAaE,GAAC,CAAC,GAAEF,GAAE,MAAM,sBAAoBA,GAAE,SAAS,EAAC,iBAAgBC,GAAC,CAAC,IAAGc,IAAE;AAAC,sBAAIV,KAAEY,MAAG,CAACb,IAAEc,KAAED,MAAGb;AAAE,mBAACa,MAAG,CAACb,KAAEU,GAAE,CAACZ,IAAE,IAAI,GAAEJ,EAAC,IAAEO,OAAI,GAAG,QAAQH,IAAEe,EAAC,IAAEH,GAAE,CAACZ,IAAE,IAAI,GAAEJ,EAAC,IAAEgB,GAAE,CAACG,IAAEf,EAAC,GAAEJ,EAAC,IAAGoB,MAAGJ,GAAE,CAACZ,IAAE,IAAI,GAAEJ,EAAC;AAAA,gBAAC;AAAM,kBAAAgB,GAAEZ,IAAEJ,EAAC;AAAE,cAAAC,OAAIC,GAAE,MAAM,SAASE,IAAEJ,EAAC,GAAEE,GAAE,SAAS,EAAC,YAAW,KAAI,CAAC;AAAA,YAAE,CAAE,GAAE,GAAG,GAAGA,EAAC,GAAE,mBAAmB,SAASH,IAAE;AAAC,kBAAIC,KAAE,WAASE,GAAE,MAAM,SAAQD,KAAE,WAASC,GAAE,MAAM,SAAQC,KAAE;AAAG,kBAAGJ,IAAE;AAAC,oBAAIK,KAAE,GAAG,QAAQL,EAAC;AAAE,oBAAGC,MAAGC;AAAE,kBAAAE,KAAE,GAAGJ,IAAEG,GAAE,MAAM,SAAQA,GAAE,MAAM,OAAO;AAAA,yBAAUF,IAAE;AAAC,sBAAIK,KAAE,GAAG,QAAQH,GAAE,MAAM,OAAO;AAAE,kBAAAC,KAAE,GAAG,QAAQJ,IAAEM,EAAC,KAAG,GAAGD,IAAEC,EAAC;AAAA,gBAAC,WAASJ,IAAE;AAAC,sBAAIe,KAAE,GAAG,QAAQd,GAAE,MAAM,OAAO;AAAE,kBAAAC,KAAE,GAAG,QAAQJ,IAAEiB,EAAC,KAAG,GAAGZ,IAAEY,EAAC;AAAA,gBAAC;AAAA,cAAC;AAAC,cAAAb,MAAGD,GAAE,SAAS,EAAC,cAAaH,GAAC,CAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGG,EAAC,GAAE,oBAAoB,SAASH,IAAE;AAAC,kBAAIC,KAAE,GAAGE,GAAE,MAAM,WAASA,GAAE,MAAM,WAASA,GAAE,gBAAgB,GAAE,EAAC,MAAK,GAAG,QAAQH,EAAC,GAAE,QAAO,GAAG,QAAQA,EAAC,EAAC,CAAC;AAAE,cAAAG,GAAE,SAAS,EAAC,cAAaF,GAAC,CAAC,GAAEE,GAAE,MAAM,SAASF,EAAC,GAAEE,GAAE,MAAM,uBAAqBA,GAAE,QAAQ,KAAE,GAAEA,GAAE,MAAM,iBAAeA,GAAE,QAAQ,IAAE,IAAGA,GAAE,MAAM,sBAAoBA,GAAE,MAAM,mBAAiBA,GAAE,SAAS,EAAC,yBAAwB,KAAE,CAAC,GAAEA,GAAE,SAAS,EAAC,YAAW,KAAI,CAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGA,EAAC,GAAE,gBAAgB,WAAU;AAAC,cAAAA,GAAE,MAAM,YAAUA,GAAE,MAAM,YAAUA,GAAE,QAAQ,IAAE,GAAEA,GAAE,MAAM,aAAa;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGA,EAAC,GAAE,kBAAkB,SAASH,IAAE;AAAC,cAAAG,GAAE,MAAM,UAAUH,EAAC;AAAE,kBAAIC,KAAED,GAAE;AAAI,kBAAGG,GAAE,MAAM,QAAMA,GAAE,MAAM,UAAQA,GAAE,MAAM,oBAAmB;AAAC,oBAAGA,GAAE,MAAM,MAAK;AAAC,sBAAG,gBAAcF,MAAG,cAAYA,IAAE;AAAC,oBAAAD,GAAE,eAAe;AAAE,wBAAIE,KAAEC,GAAE,SAAS,iBAAeA,GAAE,SAAS,cAAc,cAAc,sCAAsC;AAAE,2BAAO,MAAKD,MAAGA,GAAE,MAAM,EAAC,eAAc,KAAE,CAAC;AAAA,kBAAE;AAAC,sBAAIE,KAAE,GAAGD,GAAE,MAAM,YAAY;AAAE,8BAAUF,MAAGD,GAAE,eAAe,GAAEG,GAAE,QAAQ,KAAGA,GAAE,MAAM,wBAAsB,MAAIA,GAAE,aAAaC,IAAEJ,EAAC,GAAE,CAACG,GAAE,MAAM,uBAAqBA,GAAE,gBAAgBC,EAAC,KAAGD,GAAE,QAAQ,KAAE,KAAG,aAAWF,MAAGD,GAAE,eAAe,GAAEG,GAAE,QAAQ,KAAE,KAAG,UAAQF,MAAGD,GAAE,YAAUG,GAAE,QAAQ,KAAE,GAAEA,GAAE,QAAQ,KAAGA,GAAE,MAAM,aAAa,EAAC,MAAK,GAAE,KAAI,GAAE,CAAC;AAAA,gBAAC;AAAA,cAAC;AAAK,gCAAcF,MAAG,cAAYA,MAAG,YAAUA,MAAGE,GAAE,aAAa;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGA,EAAC,GAAE,mBAAmB,SAASH,IAAE;AAAC,2BAAWA,GAAE,QAAMA,GAAE,eAAe,GAAEG,GAAE,SAAS,EAAC,cAAa,KAAE,GAAG,WAAU;AAAC,gBAAAA,GAAE,QAAQ,KAAE,GAAE,WAAY,WAAU;AAAC,kBAAAA,GAAE,SAAS,GAAEA,GAAE,SAAS,EAAC,cAAa,MAAE,CAAC;AAAA,gBAAC,CAAE;AAAA,cAAC,CAAE;AAAA,YAAE,CAAE,GAAE,GAAG,GAAGA,EAAC,GAAE,gBAAgB,SAASH,IAAE;AAAC,cAAAG,GAAE,MAAM,UAAUH,EAAC;AAAE,kBAAIC,KAAED,GAAE,KAAIE,KAAE,GAAGC,GAAE,MAAM,YAAY;AAAE,kBAAG,YAAUF;AAAE,gBAAAD,GAAE,eAAe,GAAEG,GAAE,aAAaD,IAAEF,EAAC,GAAE,CAACG,GAAE,MAAM,uBAAqBA,GAAE,gBAAgBD,EAAC;AAAA,uBAAU,aAAWD;AAAE,gBAAAD,GAAE,eAAe,GAAEG,GAAE,QAAQ,KAAE,GAAEA,GAAE,QAAQ,KAAGA,GAAE,MAAM,aAAa,EAAC,MAAK,GAAE,KAAI,GAAE,CAAC;AAAA,uBAAU,CAACA,GAAE,MAAM,4BAA2B;AAAC,oBAAIC;AAAE,wBAAOH,IAAE;AAAA,kBAAC,KAAI;AAAY,oBAAAG,KAAE,GAAG,QAAQF,IAAE,CAAC;AAAE;AAAA,kBAAM,KAAI;AAAa,oBAAAE,KAAE,GAAG,QAAQF,IAAE,CAAC;AAAE;AAAA,kBAAM,KAAI;AAAU,oBAAAE,KAAE,GAAG,QAAQF,IAAE,CAAC;AAAE;AAAA,kBAAM,KAAI;AAAY,oBAAAE,KAAE,GAAG,QAAQF,IAAE,CAAC;AAAE;AAAA,kBAAM,KAAI;AAAS,oBAAAE,KAAE,GAAG,QAAQF,IAAE,CAAC;AAAE;AAAA,kBAAM,KAAI;AAAW,oBAAAE,KAAE,GAAG,QAAQF,IAAE,CAAC;AAAE;AAAA,kBAAM,KAAI;AAAO,oBAAAE,KAAE,GAAG,QAAQF,IAAE,CAAC;AAAE;AAAA,kBAAM,KAAI;AAAM,oBAAAE,KAAE,GAAG,QAAQF,IAAE,CAAC;AAAA,gBAAC;AAAC,oBAAG,CAACE;AAAE,yBAAO,MAAKD,GAAE,MAAM,gBAAcA,GAAE,MAAM,aAAa,EAAC,MAAK,GAAE,KAAI,GAAE,CAAC;AAAG,oBAAGH,GAAE,eAAe,GAAEG,GAAE,SAAS,EAAC,qBAAoB,GAAE,CAAC,GAAEA,GAAE,MAAM,sBAAoBA,GAAE,YAAYC,EAAC,GAAED,GAAE,gBAAgBC,EAAC,GAAED,GAAE,MAAM,QAAO;AAAC,sBAAIE,KAAE,GAAG,QAAQH,EAAC,GAAEI,KAAE,GAAG,QAAQF,EAAC,GAAEa,KAAE,GAAG,QAAQf,EAAC,GAAEgB,KAAE,GAAG,QAAQd,EAAC;AAAE,kBAAAC,OAAIC,MAAGW,OAAIC,KAAEf,GAAE,SAAS,EAAC,sBAAqB,KAAE,CAAC,IAAEA,GAAE,SAAS,EAAC,sBAAqB,MAAE,CAAC;AAAA,gBAAC;AAAA,cAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGA,EAAC,GAAE,mBAAmB,SAASH,IAAE;AAAC,2BAAWA,GAAE,QAAMA,GAAE,eAAe,GAAEG,GAAE,SAAS,EAAC,cAAa,KAAE,GAAG,WAAU;AAAC,gBAAAA,GAAE,QAAQ,KAAE,GAAE,WAAY,WAAU;AAAC,kBAAAA,GAAE,SAAS,GAAEA,GAAE,SAAS,EAAC,cAAa,MAAE,CAAC;AAAA,gBAAC,CAAE;AAAA,cAAC,CAAE;AAAA,YAAE,CAAE,GAAE,GAAG,GAAGA,EAAC,GAAE,gBAAgB,SAASH,IAAE;AAAC,cAAAA,MAAGA,GAAE,kBAAgBA,GAAE,eAAe,GAAEG,GAAE,MAAM,eAAaA,GAAE,MAAM,SAAS,CAAC,MAAK,IAAI,GAAEH,EAAC,IAAEG,GAAE,MAAM,SAAS,MAAKH,EAAC,GAAEG,GAAE,SAAS,EAAC,YAAW,KAAI,CAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGA,EAAC,GAAE,SAAS,WAAU;AAAC,cAAAA,GAAE,aAAa;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGA,EAAC,GAAE,YAAY,SAASH,IAAE;AAAC,2BAAW,OAAOG,GAAE,MAAM,iBAAeA,GAAE,MAAM,gBAAcH,GAAE,WAAS,YAAUA,GAAE,WAAS,SAAS,mBAAiBA,GAAE,WAAS,SAAS,QAAMG,GAAE,QAAQ,KAAE,IAAE,cAAY,OAAOA,GAAE,MAAM,iBAAeA,GAAE,MAAM,cAAcH,EAAC,KAAGG,GAAE,QAAQ,KAAE;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGA,EAAC,GAAE,kBAAkB,WAAU;AAAC,qBAAOA,GAAE,MAAM,UAAQA,GAAE,eAAe,IAAE,GAAG,QAAQ,cAAc,IAAG,EAAC,KAAI,SAASH,IAAE;AAAC,gBAAAG,GAAE,WAASH;AAAA,cAAC,GAAE,QAAOG,GAAE,MAAM,QAAO,kBAAiBA,GAAE,MAAM,kBAAiB,0BAAyBA,GAAE,MAAM,0BAAyB,4BAA2BA,GAAE,MAAM,4BAA2B,qBAAoBA,GAAE,MAAM,qBAAoB,sBAAqBA,GAAE,MAAM,sBAAqB,oBAAmBA,GAAE,MAAM,oBAAmB,SAAQA,GAAE,SAAQ,qBAAoBA,GAAE,MAAM,qBAAoB,YAAWA,GAAE,MAAM,oBAAmB,kBAAiBA,GAAE,MAAM,kBAAiB,eAAcA,GAAE,MAAM,eAAc,cAAaA,GAAE,MAAM,cAAa,UAASA,GAAE,MAAM,UAAS,cAAaA,GAAE,MAAM,cAAa,UAASA,GAAE,cAAa,cAAaA,GAAE,MAAM,cAAa,YAAWA,GAAE,MAAM,YAAW,SAAQA,GAAE,MAAM,SAAQ,SAAQA,GAAE,MAAM,SAAQ,cAAaA,GAAE,MAAM,cAAa,YAAWA,GAAE,MAAM,YAAW,cAAaA,GAAE,MAAM,cAAa,WAAUA,GAAE,MAAM,WAAU,SAAQA,GAAE,MAAM,SAAQ,cAAaA,GAAE,MAAM,cAAa,sBAAqBA,GAAE,MAAM,sBAAqB,YAAWA,GAAE,MAAM,YAAW,gBAAeA,GAAE,4BAA2B,kBAAiBA,GAAE,MAAM,kBAAiB,gBAAeA,GAAE,MAAM,gBAAe,cAAaA,GAAE,MAAM,cAAa,sBAAqBA,GAAE,MAAM,sBAAqB,cAAaA,GAAE,MAAM,cAAa,aAAYA,GAAE,MAAM,aAAY,QAAOA,GAAE,MAAM,QAAO,sBAAqBA,GAAE,MAAM,sBAAqB,eAAcA,GAAE,MAAM,eAAc,mBAAkBA,GAAE,MAAM,mBAAkB,oBAAmBA,GAAE,MAAM,oBAAmB,yBAAwBA,GAAE,MAAM,yBAAwB,uBAAsBA,GAAE,MAAM,uBAAsB,iBAAgBA,GAAE,MAAM,iBAAgB,kBAAiBA,GAAE,MAAM,kBAAiB,YAAWA,GAAE,MAAM,YAAW,0BAAyBA,GAAE,MAAM,0BAAyB,6BAA4BA,GAAE,MAAM,6BAA4B,wBAAuBA,GAAE,MAAM,wBAAuB,6BAA4BA,GAAE,MAAM,6BAA4B,aAAYA,GAAE,MAAM,aAAY,WAAUA,GAAE,MAAM,WAAU,yBAAwB,IAAG,aAAYA,GAAE,MAAM,aAAY,aAAYA,GAAE,MAAM,aAAY,iBAAgBA,GAAE,MAAM,iBAAgB,iBAAgBA,GAAE,qBAAoB,eAAcA,GAAE,MAAM,eAAc,cAAaA,GAAE,MAAM,cAAa,cAAaA,GAAE,MAAM,cAAa,kBAAiBA,GAAE,MAAM,kBAAiB,gBAAeA,GAAE,MAAM,gBAAe,eAAcA,GAAE,MAAM,eAAc,gBAAeA,GAAE,MAAM,gBAAe,gBAAeA,GAAE,MAAM,gBAAe,oBAAmBA,GAAE,MAAM,oBAAmB,cAAaA,GAAE,kBAAiB,YAAWA,GAAE,MAAM,YAAW,eAAcA,GAAE,MAAM,eAAc,SAAQA,GAAE,MAAM,SAAQ,SAAQA,GAAE,MAAM,SAAQ,cAAaA,GAAE,MAAM,cAAa,YAAWA,GAAE,MAAM,YAAW,aAAYA,GAAE,MAAM,aAAY,WAAUA,GAAE,MAAM,mBAAkB,WAAUA,GAAE,MAAM,mBAAkB,gBAAeA,GAAE,MAAM,gBAAe,wBAAuBA,GAAE,MAAM,wBAAuB,wBAAuBA,GAAE,MAAM,wBAAuB,0BAAyBA,GAAE,MAAM,0BAAyB,oBAAmBA,GAAE,MAAM,oBAAmB,sBAAqBA,GAAE,MAAM,sBAAqB,uBAAsBA,GAAE,MAAM,uBAAsB,yBAAwBA,GAAE,MAAM,yBAAwB,mBAAkBA,GAAE,MAAM,mBAAkB,qBAAoBA,GAAE,MAAM,qBAAoB,gBAAeA,GAAE,MAAM,gBAAe,4BAA2BA,GAAE,MAAM,4BAA2B,oBAAmBA,GAAE,MAAM,oBAAmB,aAAYA,GAAE,MAAM,aAAY,mBAAkBA,GAAE,MAAM,mBAAkB,oBAAmBA,GAAE,MAAM,oBAAmB,sBAAqBA,GAAE,MAAM,sBAAqB,mBAAkBA,GAAE,MAAM,mBAAkB,iBAAgBA,GAAE,MAAM,iBAAgB,mBAAkBA,GAAE,MAAM,mBAAkB,kBAAiBA,GAAE,MAAM,kBAAiB,kBAAiBA,GAAE,MAAM,kBAAiB,4BAA2BA,GAAE,MAAM,4BAA2B,eAAcA,GAAE,MAAM,eAAc,qBAAoBA,GAAE,MAAM,qBAAoB,yBAAwBA,GAAE,MAAM,yBAAwB,8BAA6BA,GAAE,MAAM,8BAA6B,+BAA8BA,GAAE,MAAM,+BAA8B,gBAAeA,GAAE,MAAM,gBAAe,uBAAsBA,GAAE,MAAM,uBAAsB,iBAAgBA,GAAE,MAAM,iBAAgB,kBAAiBA,GAAE,MAAM,kBAAiB,iBAAgBA,GAAE,MAAM,WAAU,oBAAmBA,GAAE,cAAa,gBAAeA,GAAE,MAAM,SAAQ,iBAAgBA,GAAE,MAAM,iBAAgB,iBAAgBA,GAAE,gBAAe,GAAEA,GAAE,MAAM,QAAQ,IAAE;AAAA,YAAI,CAAE,GAAE,GAAG,GAAGA,EAAC,GAAE,wBAAwB,WAAU;AAAC,kBAAIH,IAAEC,KAAEE,GAAE,OAAMD,KAAED,GAAE,YAAWG,KAAEH,GAAE,QAAOI,KAAEF,GAAE,MAAM,iBAAeA,GAAE,MAAM,iBAAe,UAAQ;AAAO,qBAAOH,KAAEG,GAAE,MAAM,eAAa,wBAAwB,OAAO,GAAGA,GAAE,MAAM,WAAU,EAAC,YAAWE,IAAE,QAAOD,GAAC,CAAC,GAAE,IAAI,EAAE,OAAOD,GAAE,MAAM,UAAQ,eAAa,GAAGA,GAAE,MAAM,SAAQ,EAAC,YAAWE,IAAE,QAAOD,GAAC,CAAC,IAAE,EAAE,IAAED,GAAE,MAAM,qBAAmB,kBAAkB,OAAO,GAAGA,GAAE,MAAM,UAAS,EAAC,YAAWD,IAAE,QAAOE,GAAC,CAAC,CAAC,IAAED,GAAE,MAAM,iBAAe,kBAAkB,OAAO,GAAGA,GAAE,MAAM,UAAS,EAAC,YAAW,QAAO,QAAOC,GAAC,CAAC,CAAC,IAAED,GAAE,MAAM,sBAAoB,mBAAmB,OAAO,GAAGA,GAAE,MAAM,UAAS,EAAC,YAAW,aAAY,QAAOC,GAAC,CAAC,CAAC,IAAED,GAAE,MAAM,wBAAsB,qBAAqB,OAAO,GAAGA,GAAE,MAAM,UAAS,EAAC,YAAW,aAAY,QAAOC,GAAC,CAAC,CAAC,IAAE,kBAAkB,OAAO,GAAGD,GAAE,MAAM,UAAS,EAAC,YAAWE,IAAE,QAAOD,GAAC,CAAC,CAAC,GAAE,GAAG,QAAQ,cAAc,QAAO,EAAC,MAAK,SAAQ,aAAY,UAAS,WAAU,8BAA6B,GAAEJ,EAAC;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGG,EAAC,GAAE,mBAAmB,WAAU;AAAC,kBAAIH,IAAEC,KAAE,GAAG,QAAQE,GAAE,MAAM,WAAU,GAAG,CAAC,GAAE,IAAGA,GAAE,MAAM,IAAI,CAAC,GAAED,KAAEC,GAAE,MAAM,eAAa,GAAG,QAAQ,cAAc,SAAQ,EAAC,MAAK,OAAM,CAAC,GAAEC,KAAED,GAAE,MAAM,kBAAgB,OAAME,KAAE,YAAU,OAAOF,GAAE,MAAM,QAAMA,GAAE,MAAM,QAAM,YAAU,OAAOA,GAAE,MAAM,aAAWA,GAAE,MAAM,aAAWA,GAAE,MAAM,eAAa,SAASH,IAAEC,IAAEC,IAAE;AAAC,oBAAG,CAACF;AAAE,yBAAM;AAAG,oBAAIG,KAAE,GAAGH,IAAEE,EAAC,GAAEE,KAAEH,KAAE,GAAGA,IAAEC,EAAC,IAAE;AAAG,uBAAM,GAAG,OAAOC,IAAE,KAAK,EAAE,OAAOC,EAAC;AAAA,cAAC,EAAED,GAAE,MAAM,WAAUA,GAAE,MAAM,SAAQA,GAAE,KAAK,IAAE,GAAGA,GAAE,MAAM,UAASA,GAAE,KAAK;AAAE,qBAAO,GAAG,QAAQ,aAAaD,KAAG,GAAGF,KAAE,CAAC,GAAEI,IAAG,SAASJ,IAAE;AAAC,gBAAAG,GAAE,QAAMH;AAAA,cAAC,CAAE,GAAE,GAAGA,IAAE,SAAQK,EAAC,GAAE,GAAGL,IAAE,UAASG,GAAE,UAAU,GAAE,GAAGH,IAAE,YAAWG,GAAE,YAAY,GAAE,GAAGH,IAAE,WAAUG,GAAE,YAAY,GAAE,GAAGH,IAAE,WAAUG,GAAE,WAAW,GAAE,GAAGH,IAAE,aAAYG,GAAE,cAAc,GAAE,GAAGH,IAAE,MAAKG,GAAE,MAAM,EAAE,GAAE,GAAGH,IAAE,QAAOG,GAAE,MAAM,IAAI,GAAE,GAAGH,IAAE,QAAOG,GAAE,MAAM,IAAI,GAAE,GAAGH,IAAE,aAAYG,GAAE,MAAM,SAAS,GAAE,GAAGH,IAAE,eAAcG,GAAE,MAAM,eAAe,GAAE,GAAGH,IAAE,YAAWG,GAAE,MAAM,QAAQ,GAAE,GAAGH,IAAE,gBAAeG,GAAE,MAAM,YAAY,GAAE,GAAGH,IAAE,aAAY,GAAG,QAAQE,GAAE,MAAM,WAAUD,EAAC,CAAC,GAAE,GAAGD,IAAE,SAAQG,GAAE,MAAM,KAAK,GAAE,GAAGH,IAAE,YAAWG,GAAE,MAAM,QAAQ,GAAE,GAAGH,IAAE,YAAWG,GAAE,MAAM,QAAQ,GAAE,GAAGH,IAAE,YAAWG,GAAE,MAAM,QAAQ,GAAE,GAAGH,IAAE,oBAAmBG,GAAE,MAAM,eAAe,GAAE,GAAGH,IAAE,gBAAeG,GAAE,MAAM,WAAW,GAAE,GAAGH,IAAE,mBAAkBG,GAAE,MAAM,cAAc,GAAE,GAAGH,IAAE,iBAAgBG,GAAE,MAAM,YAAY,GAAEH,GAAE;AAAA,YAAC,CAAE,GAAE,GAAG,GAAGG,EAAC,GAAE,qBAAqB,WAAU;AAAC,kBAAIH,KAAEG,GAAE,OAAMF,KAAED,GAAE,aAAYE,KAAEF,GAAE,UAASI,KAAEJ,GAAE,WAAUK,KAAEL,GAAE,SAAQM,KAAEN,GAAE,kBAAiBiB,KAAEjB,GAAE,sBAAqBkB,KAAE,WAASD,KAAE,KAAGA,IAAEG,KAAEpB,GAAE,gBAAeO,KAAE,WAASa,KAAE,UAAQA;AAAE,qBAAM,CAACnB,MAAG,QAAMC,MAAG,QAAME,MAAG,QAAMC,KAAE,OAAK,GAAG,QAAQ,cAAc,UAAS,EAAC,MAAK,UAAS,WAAU,gCAAgC,OAAOa,EAAC,EAAE,KAAK,GAAE,cAAaX,IAAE,SAAQJ,GAAE,cAAa,OAAMG,IAAE,UAAS,GAAE,CAAC;AAAA,YAAC,CAAE,GAAEH,GAAE,QAAMA,GAAE,iBAAiB,GAAEA;AAAA,UAAC;AAAC,iBAAO,GAAGD,IAAE,CAAC,EAAC,KAAI,qBAAoB,OAAM,WAAU;AAAC,mBAAO,iBAAiB,UAAS,KAAK,UAAS,IAAE;AAAA,UAAC,EAAC,GAAE,EAAC,KAAI,sBAAqB,OAAM,SAASF,IAAEC,IAAE;AAAC,gBAAIC,IAAEC;AAAE,YAAAH,GAAE,WAASE,KAAEF,GAAE,UAASG,KAAE,KAAK,MAAM,UAASD,MAAGC,KAAE,GAAG,QAAQD,EAAC,MAAI,GAAG,QAAQC,EAAC,KAAG,GAAG,QAAQD,EAAC,MAAI,GAAG,QAAQC,EAAC,IAAED,OAAIC,OAAI,KAAK,gBAAgB,KAAK,MAAM,QAAQ,GAAE,WAAS,KAAK,MAAM,mBAAiBH,GAAE,gBAAc,KAAK,MAAM,eAAa,KAAK,SAAS,EAAC,iBAAgB,EAAC,CAAC,GAAEA,GAAE,mBAAiB,KAAK,MAAM,kBAAgB,KAAK,SAAS,EAAC,gBAAe,GAAG,KAAK,MAAM,cAAc,EAAC,CAAC,GAAEC,GAAE,WAAS,GAAGD,GAAE,UAAS,KAAK,MAAM,QAAQ,KAAG,KAAK,SAAS,EAAC,YAAW,KAAI,CAAC,GAAEC,GAAE,SAAO,KAAK,MAAM,SAAO,UAAKA,GAAE,QAAM,SAAK,KAAK,MAAM,QAAM,KAAK,MAAM,eAAe,GAAE,SAAKA,GAAE,QAAM,UAAK,KAAK,MAAM,QAAM,KAAK,MAAM,gBAAgB;AAAA,UAAE,EAAC,GAAE,EAAC,KAAI,wBAAuB,OAAM,WAAU;AAAC,iBAAK,yBAAyB,GAAE,OAAO,oBAAoB,UAAS,KAAK,UAAS,IAAE;AAAA,UAAC,EAAC,GAAE,EAAC,KAAI,wBAAuB,OAAM,WAAU;AAAC,gBAAID,KAAE,KAAK,MAAM;AAAS,mBAAO,GAAG,QAAQ,cAAc,OAAM,EAAC,WAAU,oCAAoC,OAAOA,KAAE,0CAAwC,EAAE,EAAC,GAAEA,MAAG,GAAG,QAAQ,cAAc,OAAM,EAAC,WAAU,mCAAkC,OAAM,8BAA6B,SAAQ,cAAa,GAAE,GAAG,QAAQ,cAAc,QAAO,EAAC,GAAE,8NAA6N,CAAC,CAAC,GAAE,KAAK,MAAM,2BAAyB,KAAK,qBAAqB,GAAE,KAAK,gBAAgB,GAAE,KAAK,kBAAkB,CAAC;AAAA,UAAC,EAAC,GAAE,EAAC,KAAI,UAAS,OAAM,WAAU;AAAC,gBAAIA,KAAE,KAAK,eAAe;AAAE,gBAAG,KAAK,MAAM;AAAO,qBAAOA;AAAE,gBAAG,KAAK,MAAM,YAAW;AAAC,kBAAIC,KAAE,KAAK,MAAM,OAAK,GAAG,QAAQ,cAAc,IAAG,EAAC,eAAc,KAAK,MAAM,cAAa,GAAE,GAAG,QAAQ,cAAc,OAAM,EAAC,WAAU,4BAA2B,UAAS,IAAG,WAAU,KAAK,gBAAe,GAAED,EAAC,CAAC,IAAE;AAAK,qBAAO,KAAK,MAAM,QAAM,KAAK,MAAM,aAAWC,KAAE,GAAG,QAAQ,cAAc,IAAG,EAAC,UAAS,KAAK,MAAM,UAAS,YAAW,KAAK,MAAM,WAAU,GAAEA,EAAC,IAAG,GAAG,QAAQ,cAAc,OAAM,MAAK,KAAK,qBAAqB,GAAEA,EAAC;AAAA,YAAC;AAAC,mBAAO,GAAG,QAAQ,cAAc,IAAG,EAAC,WAAU,KAAK,MAAM,iBAAgB,kBAAiB,KAAK,MAAM,kBAAiB,YAAW,CAAC,KAAK,eAAe,GAAE,UAAS,KAAK,MAAM,UAAS,YAAW,KAAK,MAAM,YAAW,iBAAgB,KAAK,MAAM,iBAAgB,iBAAgB,KAAK,qBAAqB,GAAE,iBAAgB,KAAK,MAAM,iBAAgB,iBAAgBD,IAAE,iBAAgB,KAAK,MAAM,iBAAgB,aAAY,KAAK,MAAM,aAAY,iBAAgB,KAAK,iBAAgB,eAAc,KAAK,MAAM,cAAa,CAAC;AAAA,UAAC,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,KAAI,WAAU;AAAC,mBAAM,EAAC,cAAa,OAAG,YAAW,cAAa,oBAAmB,aAAY,UAAS,WAAU;AAAA,YAAC,GAAE,UAAS,OAAG,4BAA2B,OAAG,cAAa,UAAS,SAAQ,WAAU;AAAA,YAAC,GAAE,QAAO,WAAU;AAAA,YAAC,GAAE,WAAU,WAAU;AAAA,YAAC,GAAE,cAAa,WAAU;AAAA,YAAC,GAAE,UAAS,WAAU;AAAA,YAAC,GAAE,gBAAe,WAAU;AAAA,YAAC,GAAE,eAAc,WAAU;AAAA,YAAC,GAAE,gBAAe,WAAU;AAAA,YAAC,GAAE,iBAAgB,WAAU;AAAA,YAAC,GAAE,oBAAmB,OAAG,cAAa,WAAU;AAAA,YAAC,GAAE,cAAa,WAAU;AAAA,YAAC,GAAE,aAAY,GAAE,UAAS,OAAG,YAAW,OAAG,4BAA2B,OAAG,qBAAoB,MAAG,gBAAe,OAAG,eAAc,OAAG,oBAAmB,OAAG,qBAAoB,OAAG,yBAAwB,OAAG,8BAA6B,OAAG,+BAA8B,OAAG,gBAAe,OAAG,uBAAsB,OAAG,eAAc,OAAG,eAAc,IAAG,aAAY,QAAO,wBAAuB,kBAAiB,0BAAyB,kBAAiB,oBAAmB,cAAa,sBAAqB,cAAa,uBAAsB,iBAAgB,yBAAwB,iBAAgB,mBAAkB,aAAY,qBAAoB,aAAY,gBAAe,QAAO,eAAc,MAAG,gBAAe,IAAG,oBAAmB,OAAG,iBAAgB,MAAG,kBAAiB,MAAG,iBAAgB,MAAK,kBAAiB,OAAM;AAAA,UAAC,EAAC,CAAC,CAAC,GAAEE;AAAA,QAAC,EAAE,GAAG,QAAQ,SAAS,GAAE,KAAG,SAAQ,KAAG;AAAW,QAAAF,GAAE,oBAAkB,IAAGA,GAAE,UAAQ,IAAGA,GAAE,mBAAiB,IAAGA,GAAE,iBAAe,SAASA,IAAEC,IAAE;AAAC,cAAIC,KAAE,eAAa,OAAO,SAAO,SAAO;AAAW,UAAAA,GAAE,mBAAiBA,GAAE,iBAAe,CAAC,IAAGA,GAAE,eAAeF,EAAC,IAAEC;AAAA,QAAC,GAAED,GAAE,mBAAiB,SAASA,IAAE;AAAC,WAAC,eAAa,OAAO,SAAO,SAAO,YAAY,eAAaA;AAAA,QAAC,GAAE,OAAO,eAAeA,IAAE,cAAa,EAAC,OAAM,KAAE,CAAC;AAAA,MAAC,CAAE;AAAA;AAAA;;;ACAzhmG;AAAA;AAoBA,eAAS,MAAM,OAAO;AACpB,eAAO,SAAS;AAAA,MAClB;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACxBjB;AAAA;AACA,UAAI,aAAa,OAAO,UAAU,YAAY,UAAU,OAAO,WAAW,UAAU;AAEpF,aAAO,UAAU;AAAA;AAAA;;;ACHjB;AAAA;AAAA,UAAI,aAAa;AAGjB,UAAI,WAAW,OAAO,QAAQ,YAAY,QAAQ,KAAK,WAAW,UAAU;AAG5E,UAAI,OAAO,cAAc,YAAY,SAAS,aAAa,EAAE;AAE7D,aAAO,UAAU;AAAA;AAAA;;;ACRjB;AAAA;AAAA,UAAI,OAAO;AAGX,UAAIyB,UAAS,KAAK;AAElB,aAAO,UAAUA;AAAA;AAAA;;;ACLjB;AAAA;AAAA,UAAIC,UAAS;AAGb,UAAI,cAAc,OAAO;AAGzB,UAAIC,kBAAiB,YAAY;AAOjC,UAAI,uBAAuB,YAAY;AAGvC,UAAI,iBAAiBD,UAASA,QAAO,cAAc;AASnD,eAAS,UAAU,OAAO;AACxB,YAAI,QAAQC,gBAAe,KAAK,OAAO,cAAc,GACjD,MAAM,MAAM,cAAc;AAE9B,YAAI;AACF,gBAAM,cAAc,IAAI;AACxB,cAAI,WAAW;AAAA,QACjB,SAASC,IAAG;AAAA,QAAC;AAEb,YAAI,SAAS,qBAAqB,KAAK,KAAK;AAC5C,YAAI,UAAU;AACZ,cAAI,OAAO;AACT,kBAAM,cAAc,IAAI;AAAA,UAC1B,OAAO;AACL,mBAAO,MAAM,cAAc;AAAA,UAC7B;AAAA,QACF;AACA,eAAO;AAAA,MACT;AAEA,aAAO,UAAU;AAAA;AAAA;;;AC7CjB;AAAA;AACA,UAAI,cAAc,OAAO;AAOzB,UAAI,uBAAuB,YAAY;AASvC,eAASC,gBAAe,OAAO;AAC7B,eAAO,qBAAqB,KAAK,KAAK;AAAA,MACxC;AAEA,aAAO,UAAUA;AAAA;AAAA;;;ACrBjB;AAAA;AAAA,UAAIC,UAAS;AAAb,UACI,YAAY;AADhB,UAEIC,kBAAiB;AAGrB,UAAI,UAAU;AAAd,UACI,eAAe;AAGnB,UAAI,iBAAiBD,UAASA,QAAO,cAAc;AASnD,eAAS,WAAW,OAAO;AACzB,YAAI,SAAS,MAAM;AACjB,iBAAO,UAAU,SAAY,eAAe;AAAA,QAC9C;AACA,eAAQ,kBAAkB,kBAAkB,OAAO,KAAK,IACpD,UAAU,KAAK,IACfC,gBAAe,KAAK;AAAA,MAC1B;AAEA,aAAO,UAAU;AAAA;AAAA;;;AC3BjB;AAAA;AAyBA,eAAS,SAAS,OAAO;AACvB,YAAI,OAAO,OAAO;AAClB,eAAO,SAAS,SAAS,QAAQ,YAAY,QAAQ;AAAA,MACvD;AAEA,aAAO,UAAU;AAAA;AAAA;;;AC9BjB;AAAA;AAAA,UAAI,aAAa;AAAjB,UACI,WAAW;AAGf,UAAI,WAAW;AAAf,UACI,UAAU;AADd,UAEI,SAAS;AAFb,UAGI,WAAW;AAmBf,eAASC,YAAW,OAAO;AACzB,YAAI,CAAC,SAAS,KAAK,GAAG;AACpB,iBAAO;AAAA,QACT;AAGA,YAAI,MAAM,WAAW,KAAK;AAC1B,eAAO,OAAO,WAAW,OAAO,UAAU,OAAO,YAAY,OAAO;AAAA,MACtE;AAEA,aAAO,UAAUA;AAAA;AAAA;;;ACpCjB;AAAA;AAAA,UAAI,OAAO;AAGX,UAAI,aAAa,KAAK,oBAAoB;AAE1C,aAAO,UAAU;AAAA;AAAA;;;ACLjB;AAAA;AAAA,UAAI,aAAa;AAGjB,UAAI,aAAc,WAAW;AAC3B,YAAI,MAAM,SAAS,KAAK,cAAc,WAAW,QAAQ,WAAW,KAAK,YAAY,EAAE;AACvF,eAAO,MAAO,mBAAmB,MAAO;AAAA,MAC1C,EAAE;AASF,eAAS,SAAS,MAAM;AACtB,eAAO,CAAC,CAAC,cAAe,cAAc;AAAA,MACxC;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACnBjB;AAAA;AACA,UAAI,YAAY,SAAS;AAGzB,UAAI,eAAe,UAAU;AAS7B,eAAS,SAAS,MAAM;AACtB,YAAI,QAAQ,MAAM;AAChB,cAAI;AACF,mBAAO,aAAa,KAAK,IAAI;AAAA,UAC/B,SAASC,IAAG;AAAA,UAAC;AACb,cAAI;AACF,mBAAQ,OAAO;AAAA,UACjB,SAASA,IAAG;AAAA,UAAC;AAAA,QACf;AACA,eAAO;AAAA,MACT;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACzBjB;AAAA;AAAA,UAAIC,cAAa;AAAjB,UACI,WAAW;AADf,UAEI,WAAW;AAFf,UAGI,WAAW;AAMf,UAAI,eAAe;AAGnB,UAAI,eAAe;AAGnB,UAAI,YAAY,SAAS;AAAzB,UACI,cAAc,OAAO;AAGzB,UAAI,eAAe,UAAU;AAG7B,UAAIC,kBAAiB,YAAY;AAGjC,UAAI,aAAa;AAAA,QAAO,MACtB,aAAa,KAAKA,eAAc,EAAE,QAAQ,cAAc,MAAM,EAC7D,QAAQ,0DAA0D,OAAO,IAAI;AAAA,MAChF;AAUA,eAAS,aAAa,OAAO;AAC3B,YAAI,CAAC,SAAS,KAAK,KAAK,SAAS,KAAK,GAAG;AACvC,iBAAO;AAAA,QACT;AACA,YAAI,UAAUD,YAAW,KAAK,IAAI,aAAa;AAC/C,eAAO,QAAQ,KAAK,SAAS,KAAK,CAAC;AAAA,MACrC;AAEA,aAAO,UAAU;AAAA;AAAA;;;AC9CjB;AAAA;AAQA,eAASE,UAAS,QAAQ,KAAK;AAC7B,eAAO,UAAU,OAAO,SAAY,OAAO,GAAG;AAAA,MAChD;AAEA,aAAO,UAAUA;AAAA;AAAA;;;ACZjB;AAAA;AAAA,UAAI,eAAe;AAAnB,UACIC,YAAW;AAUf,eAAS,UAAU,QAAQ,KAAK;AAC9B,YAAI,QAAQA,UAAS,QAAQ,GAAG;AAChC,eAAO,aAAa,KAAK,IAAI,QAAQ;AAAA,MACvC;AAEA,aAAO,UAAU;AAAA;AAAA;;;AChBjB,MAAAC,0BAAA;AAAA;AAAA,UAAI,YAAY;AAEhB,UAAI,iBAAkB,WAAW;AAC/B,YAAI;AACF,cAAI,OAAO,UAAU,QAAQ,gBAAgB;AAC7C,eAAK,CAAC,GAAG,IAAI,CAAC,CAAC;AACf,iBAAO;AAAA,QACT,SAASC,IAAG;AAAA,QAAC;AAAA,MACf,EAAE;AAEF,aAAO,UAAU;AAAA;AAAA;;;ACVjB;AAAA;AAAA,UAAI,iBAAiB;AAWrB,eAAS,gBAAgB,QAAQ,KAAK,OAAO;AAC3C,YAAI,OAAO,eAAe,gBAAgB;AACxC,yBAAe,QAAQ,KAAK;AAAA,YAC1B,gBAAgB;AAAA,YAChB,cAAc;AAAA,YACd,SAAS;AAAA,YACT,YAAY;AAAA,UACd,CAAC;AAAA,QACH,OAAO;AACL,iBAAO,GAAG,IAAI;AAAA,QAChB;AAAA,MACF;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACxBjB;AAAA;AAgCA,eAAS,GAAG,OAAO,OAAO;AACxB,eAAO,UAAU,SAAU,UAAU,SAAS,UAAU;AAAA,MAC1D;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACpCjB;AAAA;AAAA,UAAI,kBAAkB;AAAtB,UACI,KAAK;AAGT,UAAI,cAAc,OAAO;AAGzB,UAAIC,kBAAiB,YAAY;AAYjC,eAAS,YAAY,QAAQ,KAAK,OAAO;AACvC,YAAI,WAAW,OAAO,GAAG;AACzB,YAAI,EAAEA,gBAAe,KAAK,QAAQ,GAAG,KAAK,GAAG,UAAU,KAAK,MACvD,UAAU,UAAa,EAAE,OAAO,SAAU;AAC7C,0BAAgB,QAAQ,KAAK,KAAK;AAAA,QACpC;AAAA,MACF;AAEA,aAAO,UAAU;AAAA;AAAA;;;AC3BjB;AAAA;AAAA,UAAI,cAAc;AAAlB,UACI,kBAAkB;AAYtB,eAAS,WAAW,QAAQ,OAAO,QAAQ,YAAY;AACrD,YAAI,QAAQ,CAAC;AACb,mBAAW,SAAS,CAAC;AAErB,YAAIC,SAAQ,IACRC,UAAS,MAAM;AAEnB,eAAO,EAAED,SAAQC,SAAQ;AACvB,cAAI,MAAM,MAAMD,MAAK;AAErB,cAAI,WAAW,aACX,WAAW,OAAO,GAAG,GAAG,OAAO,GAAG,GAAG,KAAK,QAAQ,MAAM,IACxD;AAEJ,cAAI,aAAa,QAAW;AAC1B,uBAAW,OAAO,GAAG;AAAA,UACvB;AACA,cAAI,OAAO;AACT,4BAAgB,QAAQ,KAAK,QAAQ;AAAA,UACvC,OAAO;AACL,wBAAY,QAAQ,KAAK,QAAQ;AAAA,UACnC;AAAA,QACF;AACA,eAAO;AAAA,MACT;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACvCjB;AAAA;AAgBA,eAASE,UAAS,OAAO;AACvB,eAAO;AAAA,MACT;AAEA,aAAO,UAAUA;AAAA;AAAA;;;ACpBjB;AAAA;AAUA,eAAS,MAAM,MAAM,SAAS,MAAM;AAClC,gBAAQ,KAAK,QAAQ;AAAA,UACnB,KAAK;AAAG,mBAAO,KAAK,KAAK,OAAO;AAAA,UAChC,KAAK;AAAG,mBAAO,KAAK,KAAK,SAAS,KAAK,CAAC,CAAC;AAAA,UACzC,KAAK;AAAG,mBAAO,KAAK,KAAK,SAAS,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;AAAA,UAClD,KAAK;AAAG,mBAAO,KAAK,KAAK,SAAS,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;AAAA,QAC7D;AACA,eAAO,KAAK,MAAM,SAAS,IAAI;AAAA,MACjC;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACpBjB;AAAA;AAAA,UAAI,QAAQ;AAGZ,UAAI,YAAY,KAAK;AAWrB,eAAS,SAAS,MAAM,OAAO,WAAW;AACxC,gBAAQ,UAAU,UAAU,SAAa,KAAK,SAAS,IAAK,OAAO,CAAC;AACpE,eAAO,WAAW;AAChB,cAAI,OAAO,WACPC,SAAQ,IACRC,UAAS,UAAU,KAAK,SAAS,OAAO,CAAC,GACzC,QAAQ,MAAMA,OAAM;AAExB,iBAAO,EAAED,SAAQC,SAAQ;AACvB,kBAAMD,MAAK,IAAI,KAAK,QAAQA,MAAK;AAAA,UACnC;AACA,UAAAA,SAAQ;AACR,cAAI,YAAY,MAAM,QAAQ,CAAC;AAC/B,iBAAO,EAAEA,SAAQ,OAAO;AACtB,sBAAUA,MAAK,IAAI,KAAKA,MAAK;AAAA,UAC/B;AACA,oBAAU,KAAK,IAAI,UAAU,KAAK;AAClC,iBAAO,MAAM,MAAM,MAAM,SAAS;AAAA,QACpC;AAAA,MACF;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACnCjB;AAAA;AAmBA,eAAS,SAAS,OAAO;AACvB,eAAO,WAAW;AAChB,iBAAO;AAAA,QACT;AAAA,MACF;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACzBjB;AAAA;AAAA,UAAI,WAAW;AAAf,UACI,iBAAiB;AADrB,UAEIE,YAAW;AAUf,UAAI,kBAAkB,CAAC,iBAAiBA,YAAW,SAAS,MAAM,QAAQ;AACxE,eAAO,eAAe,MAAM,YAAY;AAAA,UACtC,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,SAAS,SAAS,MAAM;AAAA,UACxB,YAAY;AAAA,QACd,CAAC;AAAA,MACH;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACrBjB;AAAA;AACA,UAAI,YAAY;AAAhB,UACI,WAAW;AAGf,UAAI,YAAY,KAAK;AAWrB,eAAS,SAAS,MAAM;AACtB,YAAI,QAAQ,GACR,aAAa;AAEjB,eAAO,WAAW;AAChB,cAAI,QAAQ,UAAU,GAClB,YAAY,YAAY,QAAQ;AAEpC,uBAAa;AACb,cAAI,YAAY,GAAG;AACjB,gBAAI,EAAE,SAAS,WAAW;AACxB,qBAAO,UAAU,CAAC;AAAA,YACpB;AAAA,UACF,OAAO;AACL,oBAAQ;AAAA,UACV;AACA,iBAAO,KAAK,MAAM,QAAW,SAAS;AAAA,QACxC;AAAA,MACF;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACpCjB;AAAA;AAAA,UAAI,kBAAkB;AAAtB,UACI,WAAW;AAUf,UAAI,cAAc,SAAS,eAAe;AAE1C,aAAO,UAAU;AAAA;AAAA;;;ACbjB;AAAA;AAAA,UAAIC,YAAW;AAAf,UACI,WAAW;AADf,UAEI,cAAc;AAUlB,eAAS,SAAS,MAAM,OAAO;AAC7B,eAAO,YAAY,SAAS,MAAM,OAAOA,SAAQ,GAAG,OAAO,EAAE;AAAA,MAC/D;AAEA,aAAO,UAAU;AAAA;AAAA;;;AChBjB;AAAA;AACA,UAAI,mBAAmB;AA4BvB,eAAS,SAAS,OAAO;AACvB,eAAO,OAAO,SAAS,YACrB,QAAQ,MAAM,QAAQ,KAAK,KAAK,SAAS;AAAA,MAC7C;AAEA,aAAO,UAAU;AAAA;AAAA;;;AClCjB;AAAA;AAAA,UAAIC,cAAa;AAAjB,UACI,WAAW;AA2Bf,eAAS,YAAY,OAAO;AAC1B,eAAO,SAAS,QAAQ,SAAS,MAAM,MAAM,KAAK,CAACA,YAAW,KAAK;AAAA,MACrE;AAEA,aAAO,UAAU;AAAA;AAAA;;;AChCjB;AAAA;AACA,UAAI,mBAAmB;AAGvB,UAAI,WAAW;AAUf,eAAS,QAAQ,OAAOC,SAAQ;AAC9B,YAAI,OAAO,OAAO;AAClB,QAAAA,UAASA,WAAU,OAAO,mBAAmBA;AAE7C,eAAO,CAAC,CAACA,YACN,QAAQ,YACN,QAAQ,YAAY,SAAS,KAAK,KAAK,OACrC,QAAQ,MAAM,QAAQ,KAAK,KAAK,QAAQA;AAAA,MACjD;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACxBjB;AAAA;AAAA,UAAI,KAAK;AAAT,UACI,cAAc;AADlB,UAEI,UAAU;AAFd,UAGI,WAAW;AAYf,eAAS,eAAe,OAAOC,QAAO,QAAQ;AAC5C,YAAI,CAAC,SAAS,MAAM,GAAG;AACrB,iBAAO;AAAA,QACT;AACA,YAAI,OAAO,OAAOA;AAClB,YAAI,QAAQ,WACH,YAAY,MAAM,KAAK,QAAQA,QAAO,OAAO,MAAM,IACnD,QAAQ,YAAYA,UAAS,QAChC;AACJ,iBAAO,GAAG,OAAOA,MAAK,GAAG,KAAK;AAAA,QAChC;AACA,eAAO;AAAA,MACT;AAEA,aAAO,UAAU;AAAA;AAAA;;;AC7BjB;AAAA;AAAA,UAAI,WAAW;AAAf,UACI,iBAAiB;AASrB,eAAS,eAAe,UAAU;AAChC,eAAO,SAAS,SAAS,QAAQ,SAAS;AACxC,cAAIC,SAAQ,IACRC,UAAS,QAAQ,QACjB,aAAaA,UAAS,IAAI,QAAQA,UAAS,CAAC,IAAI,QAChD,QAAQA,UAAS,IAAI,QAAQ,CAAC,IAAI;AAEtC,uBAAc,SAAS,SAAS,KAAK,OAAO,cAAc,cACrDA,WAAU,cACX;AAEJ,cAAI,SAAS,eAAe,QAAQ,CAAC,GAAG,QAAQ,CAAC,GAAG,KAAK,GAAG;AAC1D,yBAAaA,UAAS,IAAI,SAAY;AACtC,YAAAA,UAAS;AAAA,UACX;AACA,mBAAS,OAAO,MAAM;AACtB,iBAAO,EAAED,SAAQC,SAAQ;AACvB,gBAAI,SAAS,QAAQD,MAAK;AAC1B,gBAAI,QAAQ;AACV,uBAAS,QAAQ,QAAQA,QAAO,UAAU;AAAA,YAC5C;AAAA,UACF;AACA,iBAAO;AAAA,QACT,CAAC;AAAA,MACH;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACpCjB;AAAA;AACA,UAAI,cAAc,OAAO;AASzB,eAAS,YAAY,OAAO;AAC1B,YAAI,OAAO,SAAS,MAAM,aACtB,QAAS,OAAO,QAAQ,cAAc,KAAK,aAAc;AAE7D,eAAO,UAAU;AAAA,MACnB;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACjBjB;AAAA;AASA,eAAS,UAAUE,IAAG,UAAU;AAC9B,YAAIC,SAAQ,IACR,SAAS,MAAMD,EAAC;AAEpB,eAAO,EAAEC,SAAQD,IAAG;AAClB,iBAAOC,MAAK,IAAI,SAASA,MAAK;AAAA,QAChC;AACA,eAAO;AAAA,MACT;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACnBjB;AAAA;AAwBA,eAAS,aAAa,OAAO;AAC3B,eAAO,SAAS,QAAQ,OAAO,SAAS;AAAA,MAC1C;AAEA,aAAO,UAAU;AAAA;AAAA;;;AC5BjB;AAAA;AAAA,UAAI,aAAa;AAAjB,UACI,eAAe;AAGnB,UAAI,UAAU;AASd,eAAS,gBAAgB,OAAO;AAC9B,eAAO,aAAa,KAAK,KAAK,WAAW,KAAK,KAAK;AAAA,MACrD;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACjBjB;AAAA;AAAA,UAAI,kBAAkB;AAAtB,UACI,eAAe;AAGnB,UAAI,cAAc,OAAO;AAGzB,UAAIC,kBAAiB,YAAY;AAGjC,UAAI,uBAAuB,YAAY;AAoBvC,UAAI,cAAc,gBAAgB,WAAW;AAAE,eAAO;AAAA,MAAW,EAAE,CAAC,IAAI,kBAAkB,SAAS,OAAO;AACxG,eAAO,aAAa,KAAK,KAAKA,gBAAe,KAAK,OAAO,QAAQ,KAC/D,CAAC,qBAAqB,KAAK,OAAO,QAAQ;AAAA,MAC9C;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACnCjB;AAAA;AAuBA,UAAIC,WAAU,MAAM;AAEpB,aAAO,UAAUA;AAAA;AAAA;;;ACzBjB;AAAA;AAaA,eAAS,YAAY;AACnB,eAAO;AAAA,MACT;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACjBjB;AAAA;AAAA,UAAI,OAAO;AAAX,UACI,YAAY;AAGhB,UAAI,cAAc,OAAO,WAAW,YAAY,WAAW,CAAC,QAAQ,YAAY;AAGhF,UAAI,aAAa,eAAe,OAAO,UAAU,YAAY,UAAU,CAAC,OAAO,YAAY;AAG3F,UAAI,gBAAgB,cAAc,WAAW,YAAY;AAGzD,UAAIC,UAAS,gBAAgB,KAAK,SAAS;AAG3C,UAAI,iBAAiBA,UAASA,QAAO,WAAW;AAmBhD,UAAI,WAAW,kBAAkB;AAEjC,aAAO,UAAU;AAAA;AAAA;;;ACrCjB;AAAA;AAAA,UAAI,aAAa;AAAjB,UACI,WAAW;AADf,UAEI,eAAe;AAGnB,UAAI,UAAU;AAAd,UACI,WAAW;AADf,UAEI,UAAU;AAFd,UAGI,UAAU;AAHd,UAII,WAAW;AAJf,UAKI,UAAU;AALd,UAMI,SAAS;AANb,UAOI,YAAY;AAPhB,UAQI,YAAY;AARhB,UASI,YAAY;AAThB,UAUI,SAAS;AAVb,UAWI,YAAY;AAXhB,UAYI,aAAa;AAEjB,UAAI,iBAAiB;AAArB,UACI,cAAc;AADlB,UAEI,aAAa;AAFjB,UAGI,aAAa;AAHjB,UAII,UAAU;AAJd,UAKI,WAAW;AALf,UAMI,WAAW;AANf,UAOI,WAAW;AAPf,UAQI,kBAAkB;AARtB,UASI,YAAY;AAThB,UAUI,YAAY;AAGhB,UAAI,iBAAiB,CAAC;AACtB,qBAAe,UAAU,IAAI,eAAe,UAAU,IACtD,eAAe,OAAO,IAAI,eAAe,QAAQ,IACjD,eAAe,QAAQ,IAAI,eAAe,QAAQ,IAClD,eAAe,eAAe,IAAI,eAAe,SAAS,IAC1D,eAAe,SAAS,IAAI;AAC5B,qBAAe,OAAO,IAAI,eAAe,QAAQ,IACjD,eAAe,cAAc,IAAI,eAAe,OAAO,IACvD,eAAe,WAAW,IAAI,eAAe,OAAO,IACpD,eAAe,QAAQ,IAAI,eAAe,OAAO,IACjD,eAAe,MAAM,IAAI,eAAe,SAAS,IACjD,eAAe,SAAS,IAAI,eAAe,SAAS,IACpD,eAAe,MAAM,IAAI,eAAe,SAAS,IACjD,eAAe,UAAU,IAAI;AAS7B,eAAS,iBAAiB,OAAO;AAC/B,eAAO,aAAa,KAAK,KACvB,SAAS,MAAM,MAAM,KAAK,CAAC,CAAC,eAAe,WAAW,KAAK,CAAC;AAAA,MAChE;AAEA,aAAO,UAAU;AAAA;AAAA;;;AC3DjB;AAAA;AAOA,eAAS,UAAU,MAAM;AACvB,eAAO,SAAS,OAAO;AACrB,iBAAO,KAAK,KAAK;AAAA,QACnB;AAAA,MACF;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACbjB;AAAA;AAAA,UAAI,aAAa;AAGjB,UAAI,cAAc,OAAO,WAAW,YAAY,WAAW,CAAC,QAAQ,YAAY;AAGhF,UAAI,aAAa,eAAe,OAAO,UAAU,YAAY,UAAU,CAAC,OAAO,YAAY;AAG3F,UAAI,gBAAgB,cAAc,WAAW,YAAY;AAGzD,UAAI,cAAc,iBAAiB,WAAW;AAG9C,UAAI,WAAY,WAAW;AACzB,YAAI;AAEF,cAAI,QAAQ,cAAc,WAAW,WAAW,WAAW,QAAQ,MAAM,EAAE;AAE3E,cAAI,OAAO;AACT,mBAAO;AAAA,UACT;AAGA,iBAAO,eAAe,YAAY,WAAW,YAAY,QAAQ,MAAM;AAAA,QACzE,SAASC,IAAG;AAAA,QAAC;AAAA,MACf,EAAE;AAEF,aAAO,UAAU;AAAA;AAAA;;;AC7BjB;AAAA;AAAA,UAAI,mBAAmB;AAAvB,UACI,YAAY;AADhB,UAEI,WAAW;AAGf,UAAI,mBAAmB,YAAY,SAAS;AAmB5C,UAAI,eAAe,mBAAmB,UAAU,gBAAgB,IAAI;AAEpE,aAAO,UAAU;AAAA;AAAA;;;AC1BjB;AAAA;AAAA,UAAI,YAAY;AAAhB,UACI,cAAc;AADlB,UAEIC,WAAU;AAFd,UAGI,WAAW;AAHf,UAII,UAAU;AAJd,UAKI,eAAe;AAGnB,UAAI,cAAc,OAAO;AAGzB,UAAIC,kBAAiB,YAAY;AAUjC,eAAS,cAAc,OAAO,WAAW;AACvC,YAAI,QAAQD,SAAQ,KAAK,GACrB,QAAQ,CAAC,SAAS,YAAY,KAAK,GACnC,SAAS,CAAC,SAAS,CAAC,SAAS,SAAS,KAAK,GAC3C,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,UAAU,aAAa,KAAK,GAC1D,cAAc,SAAS,SAAS,UAAU,QAC1C,SAAS,cAAc,UAAU,MAAM,QAAQ,MAAM,IAAI,CAAC,GAC1DE,UAAS,OAAO;AAEpB,iBAAS,OAAO,OAAO;AACrB,eAAK,aAAaD,gBAAe,KAAK,OAAO,GAAG,MAC5C,EAAE;AAAA,WAEC,OAAO;AAAA,UAEN,WAAW,OAAO,YAAY,OAAO;AAAA,UAErC,WAAW,OAAO,YAAY,OAAO,gBAAgB,OAAO;AAAA,UAE7D,QAAQ,KAAKC,OAAM,KAClB;AACN,mBAAO,KAAK,GAAG;AAAA,UACjB;AAAA,QACF;AACA,eAAO;AAAA,MACT;AAEA,aAAO,UAAU;AAAA;AAAA;;;AChDjB;AAAA;AAQA,eAAS,QAAQ,MAAM,WAAW;AAChC,eAAO,SAAS,KAAK;AACnB,iBAAO,KAAK,UAAU,GAAG,CAAC;AAAA,QAC5B;AAAA,MACF;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACdjB;AAAA;AAAA,UAAI,UAAU;AAGd,UAAI,aAAa,QAAQ,OAAO,MAAM,MAAM;AAE5C,aAAO,UAAU;AAAA;AAAA;;;ACLjB;AAAA;AAAA,UAAI,cAAc;AAAlB,UACI,aAAa;AAGjB,UAAI,cAAc,OAAO;AAGzB,UAAIC,kBAAiB,YAAY;AASjC,eAAS,SAAS,QAAQ;AACxB,YAAI,CAAC,YAAY,MAAM,GAAG;AACxB,iBAAO,WAAW,MAAM;AAAA,QAC1B;AACA,YAAI,SAAS,CAAC;AACd,iBAAS,OAAO,OAAO,MAAM,GAAG;AAC9B,cAAIA,gBAAe,KAAK,QAAQ,GAAG,KAAK,OAAO,eAAe;AAC5D,mBAAO,KAAK,GAAG;AAAA,UACjB;AAAA,QACF;AACA,eAAO;AAAA,MACT;AAEA,aAAO,UAAU;AAAA;AAAA;;;AC7BjB;AAAA;AAAA,UAAI,gBAAgB;AAApB,UACI,WAAW;AADf,UAEI,cAAc;AA8BlB,eAAS,KAAK,QAAQ;AACpB,eAAO,YAAY,MAAM,IAAI,cAAc,MAAM,IAAI,SAAS,MAAM;AAAA,MACtE;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACpCjB,MAAAC,kBAAA;AAAA;AAAA,UAAI,cAAc;AAAlB,UACI,aAAa;AADjB,UAEI,iBAAiB;AAFrB,UAGI,cAAc;AAHlB,UAII,cAAc;AAJlB,UAKI,OAAO;AAGX,UAAI,cAAc,OAAO;AAGzB,UAAIC,kBAAiB,YAAY;AAkCjC,UAAIC,UAAS,eAAe,SAAS,QAAQ,QAAQ;AACnD,YAAI,YAAY,MAAM,KAAK,YAAY,MAAM,GAAG;AAC9C,qBAAW,QAAQ,KAAK,MAAM,GAAG,MAAM;AACvC;AAAA,QACF;AACA,iBAAS,OAAO,QAAQ;AACtB,cAAID,gBAAe,KAAK,QAAQ,GAAG,GAAG;AACpC,wBAAY,QAAQ,KAAK,OAAO,GAAG,CAAC;AAAA,UACtC;AAAA,QACF;AAAA,MACF,CAAC;AAED,aAAO,UAAUC;AAAA;AAAA;;;ACzDjB;AAAA;AASA,eAAS,SAAS,OAAO,UAAU;AACjC,YAAIC,SAAQ,IACRC,UAAS,SAAS,OAAO,IAAI,MAAM,QACnC,SAAS,MAAMA,OAAM;AAEzB,eAAO,EAAED,SAAQC,SAAQ;AACvB,iBAAOD,MAAK,IAAI,SAAS,MAAMA,MAAK,GAAGA,QAAO,KAAK;AAAA,QACrD;AACA,eAAO;AAAA,MACT;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACpBjB;AAAA;AAAA,UAAI,aAAa;AAAjB,UACI,eAAe;AAGnB,UAAI,YAAY;AAmBhB,eAAS,SAAS,OAAO;AACvB,eAAO,OAAO,SAAS,YACpB,aAAa,KAAK,KAAK,WAAW,KAAK,KAAK;AAAA,MACjD;AAEA,aAAO,UAAU;AAAA;AAAA;;;AC5BjB;AAAA;AAAA,UAAIE,WAAU;AAAd,UACI,WAAW;AAGf,UAAI,eAAe;AAAnB,UACI,gBAAgB;AAUpB,eAAS,MAAM,OAAO,QAAQ;AAC5B,YAAIA,SAAQ,KAAK,GAAG;AAClB,iBAAO;AAAA,QACT;AACA,YAAI,OAAO,OAAO;AAClB,YAAI,QAAQ,YAAY,QAAQ,YAAY,QAAQ,aAChD,SAAS,QAAQ,SAAS,KAAK,GAAG;AACpC,iBAAO;AAAA,QACT;AACA,eAAO,cAAc,KAAK,KAAK,KAAK,CAAC,aAAa,KAAK,KAAK,KACzD,UAAU,QAAQ,SAAS,OAAO,MAAM;AAAA,MAC7C;AAEA,aAAO,UAAU;AAAA;AAAA;;;AC5BjB;AAAA;AAAA,UAAI,YAAY;AAGhB,UAAI,eAAe,UAAU,QAAQ,QAAQ;AAE7C,aAAO,UAAU;AAAA;AAAA;;;ACLjB;AAAA;AAAA,UAAI,eAAe;AASnB,eAAS,YAAY;AACnB,aAAK,WAAW,eAAe,aAAa,IAAI,IAAI,CAAC;AACrD,aAAK,OAAO;AAAA,MACd;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACdjB;AAAA;AAUA,eAAS,WAAW,KAAK;AACvB,YAAI,SAAS,KAAK,IAAI,GAAG,KAAK,OAAO,KAAK,SAAS,GAAG;AACtD,aAAK,QAAQ,SAAS,IAAI;AAC1B,eAAO;AAAA,MACT;AAEA,aAAO,UAAU;AAAA;AAAA;;;AChBjB;AAAA;AAAA,UAAI,eAAe;AAGnB,UAAI,iBAAiB;AAGrB,UAAI,cAAc,OAAO;AAGzB,UAAIC,kBAAiB,YAAY;AAWjC,eAAS,QAAQ,KAAK;AACpB,YAAIC,QAAO,KAAK;AAChB,YAAI,cAAc;AAChB,cAAI,SAASA,MAAK,GAAG;AACrB,iBAAO,WAAW,iBAAiB,SAAY;AAAA,QACjD;AACA,eAAOD,gBAAe,KAAKC,OAAM,GAAG,IAAIA,MAAK,GAAG,IAAI;AAAA,MACtD;AAEA,aAAO,UAAU;AAAA;AAAA;;;AC7BjB;AAAA;AAAA,UAAI,eAAe;AAGnB,UAAI,cAAc,OAAO;AAGzB,UAAIC,kBAAiB,YAAY;AAWjC,eAAS,QAAQ,KAAK;AACpB,YAAIC,QAAO,KAAK;AAChB,eAAO,eAAgBA,MAAK,GAAG,MAAM,SAAaD,gBAAe,KAAKC,OAAM,GAAG;AAAA,MACjF;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACtBjB;AAAA;AAAA,UAAI,eAAe;AAGnB,UAAI,iBAAiB;AAYrB,eAAS,QAAQ,KAAK,OAAO;AAC3B,YAAIC,QAAO,KAAK;AAChB,aAAK,QAAQ,KAAK,IAAI,GAAG,IAAI,IAAI;AACjC,QAAAA,MAAK,GAAG,IAAK,gBAAgB,UAAU,SAAa,iBAAiB;AACrE,eAAO;AAAA,MACT;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACtBjB;AAAA;AAAA,UAAI,YAAY;AAAhB,UACI,aAAa;AADjB,UAEI,UAAU;AAFd,UAGI,UAAU;AAHd,UAII,UAAU;AASd,eAAS,KAAK,SAAS;AACrB,YAAIC,SAAQ,IACRC,UAAS,WAAW,OAAO,IAAI,QAAQ;AAE3C,aAAK,MAAM;AACX,eAAO,EAAED,SAAQC,SAAQ;AACvB,cAAI,QAAQ,QAAQD,MAAK;AACzB,eAAK,IAAI,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC;AAAA,QAC7B;AAAA,MACF;AAGA,WAAK,UAAU,QAAQ;AACvB,WAAK,UAAU,QAAQ,IAAI;AAC3B,WAAK,UAAU,MAAM;AACrB,WAAK,UAAU,MAAM;AACrB,WAAK,UAAU,MAAM;AAErB,aAAO,UAAU;AAAA;AAAA;;;AC/BjB;AAAA;AAOA,eAAS,iBAAiB;AACxB,aAAK,WAAW,CAAC;AACjB,aAAK,OAAO;AAAA,MACd;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACZjB;AAAA;AAAA,UAAI,KAAK;AAUT,eAAS,aAAa,OAAO,KAAK;AAChC,YAAIE,UAAS,MAAM;AACnB,eAAOA,WAAU;AACf,cAAI,GAAG,MAAMA,OAAM,EAAE,CAAC,GAAG,GAAG,GAAG;AAC7B,mBAAOA;AAAA,UACT;AAAA,QACF;AACA,eAAO;AAAA,MACT;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACpBjB;AAAA;AAAA,UAAI,eAAe;AAGnB,UAAI,aAAa,MAAM;AAGvB,UAAI,SAAS,WAAW;AAWxB,eAAS,gBAAgB,KAAK;AAC5B,YAAIC,QAAO,KAAK,UACZC,SAAQ,aAAaD,OAAM,GAAG;AAElC,YAAIC,SAAQ,GAAG;AACb,iBAAO;AAAA,QACT;AACA,YAAI,YAAYD,MAAK,SAAS;AAC9B,YAAIC,UAAS,WAAW;AACtB,UAAAD,MAAK,IAAI;AAAA,QACX,OAAO;AACL,iBAAO,KAAKA,OAAMC,QAAO,CAAC;AAAA,QAC5B;AACA,UAAE,KAAK;AACP,eAAO;AAAA,MACT;AAEA,aAAO,UAAU;AAAA;AAAA;;;AClCjB;AAAA;AAAA,UAAI,eAAe;AAWnB,eAAS,aAAa,KAAK;AACzB,YAAIC,QAAO,KAAK,UACZC,SAAQ,aAAaD,OAAM,GAAG;AAElC,eAAOC,SAAQ,IAAI,SAAYD,MAAKC,MAAK,EAAE,CAAC;AAAA,MAC9C;AAEA,aAAO,UAAU;AAAA;AAAA;;;AClBjB;AAAA;AAAA,UAAI,eAAe;AAWnB,eAAS,aAAa,KAAK;AACzB,eAAO,aAAa,KAAK,UAAU,GAAG,IAAI;AAAA,MAC5C;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACfjB;AAAA;AAAA,UAAI,eAAe;AAYnB,eAAS,aAAa,KAAK,OAAO;AAChC,YAAIC,QAAO,KAAK,UACZC,SAAQ,aAAaD,OAAM,GAAG;AAElC,YAAIC,SAAQ,GAAG;AACb,YAAE,KAAK;AACP,UAAAD,MAAK,KAAK,CAAC,KAAK,KAAK,CAAC;AAAA,QACxB,OAAO;AACL,UAAAA,MAAKC,MAAK,EAAE,CAAC,IAAI;AAAA,QACnB;AACA,eAAO;AAAA,MACT;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACzBjB;AAAA;AAAA,UAAI,iBAAiB;AAArB,UACI,kBAAkB;AADtB,UAEI,eAAe;AAFnB,UAGI,eAAe;AAHnB,UAII,eAAe;AASnB,eAAS,UAAU,SAAS;AAC1B,YAAIC,SAAQ,IACRC,UAAS,WAAW,OAAO,IAAI,QAAQ;AAE3C,aAAK,MAAM;AACX,eAAO,EAAED,SAAQC,SAAQ;AACvB,cAAI,QAAQ,QAAQD,MAAK;AACzB,eAAK,IAAI,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC;AAAA,QAC7B;AAAA,MACF;AAGA,gBAAU,UAAU,QAAQ;AAC5B,gBAAU,UAAU,QAAQ,IAAI;AAChC,gBAAU,UAAU,MAAM;AAC1B,gBAAU,UAAU,MAAM;AAC1B,gBAAU,UAAU,MAAM;AAE1B,aAAO,UAAU;AAAA;AAAA;;;AC/BjB;AAAA;AAAA,UAAI,YAAY;AAAhB,UACI,OAAO;AAGX,UAAIE,OAAM,UAAU,MAAM,KAAK;AAE/B,aAAO,UAAUA;AAAA;AAAA;;;ACNjB;AAAA;AAAA,UAAI,OAAO;AAAX,UACI,YAAY;AADhB,UAEIC,OAAM;AASV,eAAS,gBAAgB;AACvB,aAAK,OAAO;AACZ,aAAK,WAAW;AAAA,UACd,QAAQ,IAAI;AAAA,UACZ,OAAO,KAAKA,QAAO;AAAA,UACnB,UAAU,IAAI;AAAA,QAChB;AAAA,MACF;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACpBjB;AAAA;AAOA,eAAS,UAAU,OAAO;AACxB,YAAI,OAAO,OAAO;AAClB,eAAQ,QAAQ,YAAY,QAAQ,YAAY,QAAQ,YAAY,QAAQ,YACvE,UAAU,cACV,UAAU;AAAA,MACjB;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACdjB;AAAA;AAAA,UAAI,YAAY;AAUhB,eAAS,WAAWC,MAAK,KAAK;AAC5B,YAAIC,QAAOD,KAAI;AACf,eAAO,UAAU,GAAG,IAChBC,MAAK,OAAO,OAAO,WAAW,WAAW,MAAM,IAC/CA,MAAK;AAAA,MACX;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACjBjB;AAAA;AAAA,UAAI,aAAa;AAWjB,eAAS,eAAe,KAAK;AAC3B,YAAI,SAAS,WAAW,MAAM,GAAG,EAAE,QAAQ,EAAE,GAAG;AAChD,aAAK,QAAQ,SAAS,IAAI;AAC1B,eAAO;AAAA,MACT;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACjBjB;AAAA;AAAA,UAAI,aAAa;AAWjB,eAAS,YAAY,KAAK;AACxB,eAAO,WAAW,MAAM,GAAG,EAAE,IAAI,GAAG;AAAA,MACtC;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACfjB;AAAA;AAAA,UAAI,aAAa;AAWjB,eAAS,YAAY,KAAK;AACxB,eAAO,WAAW,MAAM,GAAG,EAAE,IAAI,GAAG;AAAA,MACtC;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACfjB;AAAA;AAAA,UAAI,aAAa;AAYjB,eAAS,YAAY,KAAK,OAAO;AAC/B,YAAIC,QAAO,WAAW,MAAM,GAAG,GAC3BC,QAAOD,MAAK;AAEhB,QAAAA,MAAK,IAAI,KAAK,KAAK;AACnB,aAAK,QAAQA,MAAK,QAAQC,QAAO,IAAI;AACrC,eAAO;AAAA,MACT;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACrBjB;AAAA;AAAA,UAAI,gBAAgB;AAApB,UACI,iBAAiB;AADrB,UAEI,cAAc;AAFlB,UAGI,cAAc;AAHlB,UAII,cAAc;AASlB,eAAS,SAAS,SAAS;AACzB,YAAIC,SAAQ,IACRC,UAAS,WAAW,OAAO,IAAI,QAAQ;AAE3C,aAAK,MAAM;AACX,eAAO,EAAED,SAAQC,SAAQ;AACvB,cAAI,QAAQ,QAAQD,MAAK;AACzB,eAAK,IAAI,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC;AAAA,QAC7B;AAAA,MACF;AAGA,eAAS,UAAU,QAAQ;AAC3B,eAAS,UAAU,QAAQ,IAAI;AAC/B,eAAS,UAAU,MAAM;AACzB,eAAS,UAAU,MAAM;AACzB,eAAS,UAAU,MAAM;AAEzB,aAAO,UAAU;AAAA;AAAA;;;AC/BjB;AAAA;AAAA,UAAI,WAAW;AAGf,UAAI,kBAAkB;AA8CtB,eAASE,SAAQ,MAAM,UAAU;AAC/B,YAAI,OAAO,QAAQ,cAAe,YAAY,QAAQ,OAAO,YAAY,YAAa;AACpF,gBAAM,IAAI,UAAU,eAAe;AAAA,QACrC;AACA,YAAI,WAAW,WAAW;AACxB,cAAI,OAAO,WACP,MAAM,WAAW,SAAS,MAAM,MAAM,IAAI,IAAI,KAAK,CAAC,GACpD,QAAQ,SAAS;AAErB,cAAI,MAAM,IAAI,GAAG,GAAG;AAClB,mBAAO,MAAM,IAAI,GAAG;AAAA,UACtB;AACA,cAAI,SAAS,KAAK,MAAM,MAAM,IAAI;AAClC,mBAAS,QAAQ,MAAM,IAAI,KAAK,MAAM,KAAK;AAC3C,iBAAO;AAAA,QACT;AACA,iBAAS,QAAQ,KAAKA,SAAQ,SAAS;AACvC,eAAO;AAAA,MACT;AAGA,MAAAA,SAAQ,QAAQ;AAEhB,aAAO,UAAUA;AAAA;AAAA;;;ACxEjB;AAAA;AAAA,UAAIC,WAAU;AAGd,UAAI,mBAAmB;AAUvB,eAAS,cAAc,MAAM;AAC3B,YAAI,SAASA,SAAQ,MAAM,SAAS,KAAK;AACvC,cAAI,MAAM,SAAS,kBAAkB;AACnC,kBAAM,MAAM;AAAA,UACd;AACA,iBAAO;AAAA,QACT,CAAC;AAED,YAAI,QAAQ,OAAO;AACnB,eAAO;AAAA,MACT;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACzBjB;AAAA;AAAA,UAAI,gBAAgB;AAGpB,UAAI,aAAa;AAGjB,UAAI,eAAe;AASnB,UAAI,eAAe,cAAc,SAAS,QAAQ;AAChD,YAAI,SAAS,CAAC;AACd,YAAI,OAAO,WAAW,CAAC,MAAM,IAAY;AACvC,iBAAO,KAAK,EAAE;AAAA,QAChB;AACA,eAAO,QAAQ,YAAY,SAASC,QAAOC,SAAQ,OAAO,WAAW;AACnE,iBAAO,KAAK,QAAQ,UAAU,QAAQ,cAAc,IAAI,IAAKA,WAAUD,MAAM;AAAA,QAC/E,CAAC;AACD,eAAO;AAAA,MACT,CAAC;AAED,aAAO,UAAU;AAAA;AAAA;;;AC1BjB;AAAA;AAAA,UAAIE,UAAS;AAAb,UACI,WAAW;AADf,UAEIC,WAAU;AAFd,UAGI,WAAW;AAGf,UAAI,WAAW,IAAI;AAGnB,UAAI,cAAcD,UAASA,QAAO,YAAY;AAA9C,UACI,iBAAiB,cAAc,YAAY,WAAW;AAU1D,eAAS,aAAa,OAAO;AAE3B,YAAI,OAAO,SAAS,UAAU;AAC5B,iBAAO;AAAA,QACT;AACA,YAAIC,SAAQ,KAAK,GAAG;AAElB,iBAAO,SAAS,OAAO,YAAY,IAAI;AAAA,QACzC;AACA,YAAI,SAAS,KAAK,GAAG;AACnB,iBAAO,iBAAiB,eAAe,KAAK,KAAK,IAAI;AAAA,QACvD;AACA,YAAI,SAAU,QAAQ;AACtB,eAAQ,UAAU,OAAQ,IAAI,SAAU,CAAC,WAAY,OAAO;AAAA,MAC9D;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACpCjB;AAAA;AAAA,UAAI,eAAe;AAuBnB,eAAS,SAAS,OAAO;AACvB,eAAO,SAAS,OAAO,KAAK,aAAa,KAAK;AAAA,MAChD;AAEA,aAAO,UAAU;AAAA;AAAA;;;AC3BjB;AAAA;AAAA,UAAIC,WAAU;AAAd,UACI,QAAQ;AADZ,UAEI,eAAe;AAFnB,UAGI,WAAW;AAUf,eAAS,SAAS,OAAO,QAAQ;AAC/B,YAAIA,SAAQ,KAAK,GAAG;AAClB,iBAAO;AAAA,QACT;AACA,eAAO,MAAM,OAAO,MAAM,IAAI,CAAC,KAAK,IAAI,aAAa,SAAS,KAAK,CAAC;AAAA,MACtE;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACpBjB;AAAA;AAAA,UAAI,WAAW;AAGf,UAAI,WAAW,IAAI;AASnB,eAAS,MAAM,OAAO;AACpB,YAAI,OAAO,SAAS,YAAY,SAAS,KAAK,GAAG;AAC/C,iBAAO;AAAA,QACT;AACA,YAAI,SAAU,QAAQ;AACtB,eAAQ,UAAU,OAAQ,IAAI,SAAU,CAAC,WAAY,OAAO;AAAA,MAC9D;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACpBjB;AAAA;AAAA,UAAI,WAAW;AAAf,UACI,QAAQ;AAUZ,eAAS,QAAQ,QAAQC,OAAM;AAC7B,QAAAA,QAAO,SAASA,OAAM,MAAM;AAE5B,YAAIC,SAAQ,GACRC,UAASF,MAAK;AAElB,eAAO,UAAU,QAAQC,SAAQC,SAAQ;AACvC,mBAAS,OAAO,MAAMF,MAAKC,QAAO,CAAC,CAAC;AAAA,QACtC;AACA,eAAQA,UAASA,UAASC,UAAU,SAAS;AAAA,MAC/C;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACvBjB;AAAA;AAAA,UAAI,YAAY;AAShB,eAAS,aAAa;AACpB,aAAK,WAAW,IAAI;AACpB,aAAK,OAAO;AAAA,MACd;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACdjB;AAAA;AASA,eAAS,YAAY,KAAK;AACxB,YAAIC,QAAO,KAAK,UACZ,SAASA,MAAK,QAAQ,EAAE,GAAG;AAE/B,aAAK,OAAOA,MAAK;AACjB,eAAO;AAAA,MACT;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACjBjB;AAAA;AASA,eAAS,SAAS,KAAK;AACrB,eAAO,KAAK,SAAS,IAAI,GAAG;AAAA,MAC9B;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACbjB;AAAA;AASA,eAAS,SAAS,KAAK;AACrB,eAAO,KAAK,SAAS,IAAI,GAAG;AAAA,MAC9B;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACbjB;AAAA;AAAA,UAAI,YAAY;AAAhB,UACIC,OAAM;AADV,UAEI,WAAW;AAGf,UAAI,mBAAmB;AAYvB,eAAS,SAAS,KAAK,OAAO;AAC5B,YAAIC,QAAO,KAAK;AAChB,YAAIA,iBAAgB,WAAW;AAC7B,cAAI,QAAQA,MAAK;AACjB,cAAI,CAACD,QAAQ,MAAM,SAAS,mBAAmB,GAAI;AACjD,kBAAM,KAAK,CAAC,KAAK,KAAK,CAAC;AACvB,iBAAK,OAAO,EAAEC,MAAK;AACnB,mBAAO;AAAA,UACT;AACA,UAAAA,QAAO,KAAK,WAAW,IAAI,SAAS,KAAK;AAAA,QAC3C;AACA,QAAAA,MAAK,IAAI,KAAK,KAAK;AACnB,aAAK,OAAOA,MAAK;AACjB,eAAO;AAAA,MACT;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACjCjB;AAAA;AAAA,UAAI,YAAY;AAAhB,UACI,aAAa;AADjB,UAEI,cAAc;AAFlB,UAGI,WAAW;AAHf,UAII,WAAW;AAJf,UAKI,WAAW;AASf,eAAS,MAAM,SAAS;AACtB,YAAIC,QAAO,KAAK,WAAW,IAAI,UAAU,OAAO;AAChD,aAAK,OAAOA,MAAK;AAAA,MACnB;AAGA,YAAM,UAAU,QAAQ;AACxB,YAAM,UAAU,QAAQ,IAAI;AAC5B,YAAM,UAAU,MAAM;AACtB,YAAM,UAAU,MAAM;AACtB,YAAM,UAAU,MAAM;AAEtB,aAAO,UAAU;AAAA;AAAA;;;AC1BjB;AAAA;AACA,UAAI,iBAAiB;AAYrB,eAAS,YAAY,OAAO;AAC1B,aAAK,SAAS,IAAI,OAAO,cAAc;AACvC,eAAO;AAAA,MACT;AAEA,aAAO,UAAU;AAAA;AAAA;;;AClBjB;AAAA;AASA,eAAS,YAAY,OAAO;AAC1B,eAAO,KAAK,SAAS,IAAI,KAAK;AAAA,MAChC;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACbjB;AAAA;AAAA,UAAI,WAAW;AAAf,UACI,cAAc;AADlB,UAEI,cAAc;AAUlB,eAAS,SAAS,QAAQ;AACxB,YAAIC,SAAQ,IACRC,UAAS,UAAU,OAAO,IAAI,OAAO;AAEzC,aAAK,WAAW,IAAI;AACpB,eAAO,EAAED,SAAQC,SAAQ;AACvB,eAAK,IAAI,OAAOD,MAAK,CAAC;AAAA,QACxB;AAAA,MACF;AAGA,eAAS,UAAU,MAAM,SAAS,UAAU,OAAO;AACnD,eAAS,UAAU,MAAM;AAEzB,aAAO,UAAU;AAAA;AAAA;;;AC1BjB;AAAA;AAUA,eAAS,UAAU,OAAO,WAAW;AACnC,YAAIE,SAAQ,IACRC,UAAS,SAAS,OAAO,IAAI,MAAM;AAEvC,eAAO,EAAED,SAAQC,SAAQ;AACvB,cAAI,UAAU,MAAMD,MAAK,GAAGA,QAAO,KAAK,GAAG;AACzC,mBAAO;AAAA,UACT;AAAA,QACF;AACA,eAAO;AAAA,MACT;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACtBjB;AAAA;AAQA,eAAS,SAAS,OAAO,KAAK;AAC5B,eAAO,MAAM,IAAI,GAAG;AAAA,MACtB;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACZjB;AAAA;AAAA,UAAI,WAAW;AAAf,UACI,YAAY;AADhB,UAEI,WAAW;AAGf,UAAI,uBAAuB;AAA3B,UACI,yBAAyB;AAe7B,eAAS,YAAY,OAAO,OAAO,SAAS,YAAY,WAAW,OAAO;AACxE,YAAI,YAAY,UAAU,sBACtB,YAAY,MAAM,QAClB,YAAY,MAAM;AAEtB,YAAI,aAAa,aAAa,EAAE,aAAa,YAAY,YAAY;AACnE,iBAAO;AAAA,QACT;AAEA,YAAI,aAAa,MAAM,IAAI,KAAK;AAChC,YAAI,aAAa,MAAM,IAAI,KAAK;AAChC,YAAI,cAAc,YAAY;AAC5B,iBAAO,cAAc,SAAS,cAAc;AAAA,QAC9C;AACA,YAAIE,SAAQ,IACR,SAAS,MACT,OAAQ,UAAU,yBAA0B,IAAI,aAAW;AAE/D,cAAM,IAAI,OAAO,KAAK;AACtB,cAAM,IAAI,OAAO,KAAK;AAGtB,eAAO,EAAEA,SAAQ,WAAW;AAC1B,cAAI,WAAW,MAAMA,MAAK,GACtB,WAAW,MAAMA,MAAK;AAE1B,cAAI,YAAY;AACd,gBAAI,WAAW,YACX,WAAW,UAAU,UAAUA,QAAO,OAAO,OAAO,KAAK,IACzD,WAAW,UAAU,UAAUA,QAAO,OAAO,OAAO,KAAK;AAAA,UAC/D;AACA,cAAI,aAAa,QAAW;AAC1B,gBAAI,UAAU;AACZ;AAAA,YACF;AACA,qBAAS;AACT;AAAA,UACF;AAEA,cAAI,MAAM;AACR,gBAAI,CAAC,UAAU,OAAO,SAASC,WAAU,UAAU;AAC7C,kBAAI,CAAC,SAAS,MAAM,QAAQ,MACvB,aAAaA,aAAY,UAAU,UAAUA,WAAU,SAAS,YAAY,KAAK,IAAI;AACxF,uBAAO,KAAK,KAAK,QAAQ;AAAA,cAC3B;AAAA,YACF,CAAC,GAAG;AACN,uBAAS;AACT;AAAA,YACF;AAAA,UACF,WAAW,EACL,aAAa,YACX,UAAU,UAAU,UAAU,SAAS,YAAY,KAAK,IACzD;AACL,qBAAS;AACT;AAAA,UACF;AAAA,QACF;AACA,cAAM,QAAQ,EAAE,KAAK;AACrB,cAAM,QAAQ,EAAE,KAAK;AACrB,eAAO;AAAA,MACT;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACnFjB;AAAA;AAAA,UAAI,OAAO;AAGX,UAAIC,cAAa,KAAK;AAEtB,aAAO,UAAUA;AAAA;AAAA;;;ACLjB;AAAA;AAOA,eAAS,WAAWC,MAAK;AACvB,YAAIC,SAAQ,IACR,SAAS,MAAMD,KAAI,IAAI;AAE3B,QAAAA,KAAI,QAAQ,SAAS,OAAO,KAAK;AAC/B,iBAAO,EAAEC,MAAK,IAAI,CAAC,KAAK,KAAK;AAAA,QAC/B,CAAC;AACD,eAAO;AAAA,MACT;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACjBjB;AAAA;AAOA,eAAS,WAAW,KAAK;AACvB,YAAIC,SAAQ,IACR,SAAS,MAAM,IAAI,IAAI;AAE3B,YAAI,QAAQ,SAAS,OAAO;AAC1B,iBAAO,EAAEA,MAAK,IAAI;AAAA,QACpB,CAAC;AACD,eAAO;AAAA,MACT;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACjBjB;AAAA;AAAA,UAAIC,UAAS;AAAb,UACIC,cAAa;AADjB,UAEI,KAAK;AAFT,UAGI,cAAc;AAHlB,UAII,aAAa;AAJjB,UAKI,aAAa;AAGjB,UAAI,uBAAuB;AAA3B,UACI,yBAAyB;AAG7B,UAAI,UAAU;AAAd,UACI,UAAU;AADd,UAEI,WAAW;AAFf,UAGI,SAAS;AAHb,UAII,YAAY;AAJhB,UAKI,YAAY;AALhB,UAMI,SAAS;AANb,UAOI,YAAY;AAPhB,UAQI,YAAY;AAEhB,UAAI,iBAAiB;AAArB,UACI,cAAc;AAGlB,UAAI,cAAcD,UAASA,QAAO,YAAY;AAA9C,UACI,gBAAgB,cAAc,YAAY,UAAU;AAmBxD,eAAS,WAAW,QAAQ,OAAO,KAAK,SAAS,YAAY,WAAW,OAAO;AAC7E,gBAAQ,KAAK;AAAA,UACX,KAAK;AACH,gBAAK,OAAO,cAAc,MAAM,cAC3B,OAAO,cAAc,MAAM,YAAa;AAC3C,qBAAO;AAAA,YACT;AACA,qBAAS,OAAO;AAChB,oBAAQ,MAAM;AAAA,UAEhB,KAAK;AACH,gBAAK,OAAO,cAAc,MAAM,cAC5B,CAAC,UAAU,IAAIC,YAAW,MAAM,GAAG,IAAIA,YAAW,KAAK,CAAC,GAAG;AAC7D,qBAAO;AAAA,YACT;AACA,mBAAO;AAAA,UAET,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAGH,mBAAO,GAAG,CAAC,QAAQ,CAAC,KAAK;AAAA,UAE3B,KAAK;AACH,mBAAO,OAAO,QAAQ,MAAM,QAAQ,OAAO,WAAW,MAAM;AAAA,UAE9D,KAAK;AAAA,UACL,KAAK;AAIH,mBAAO,UAAW,QAAQ;AAAA,UAE5B,KAAK;AACH,gBAAI,UAAU;AAAA,UAEhB,KAAK;AACH,gBAAI,YAAY,UAAU;AAC1B,wBAAY,UAAU;AAEtB,gBAAI,OAAO,QAAQ,MAAM,QAAQ,CAAC,WAAW;AAC3C,qBAAO;AAAA,YACT;AAEA,gBAAI,UAAU,MAAM,IAAI,MAAM;AAC9B,gBAAI,SAAS;AACX,qBAAO,WAAW;AAAA,YACpB;AACA,uBAAW;AAGX,kBAAM,IAAI,QAAQ,KAAK;AACvB,gBAAI,SAAS,YAAY,QAAQ,MAAM,GAAG,QAAQ,KAAK,GAAG,SAAS,YAAY,WAAW,KAAK;AAC/F,kBAAM,QAAQ,EAAE,MAAM;AACtB,mBAAO;AAAA,UAET,KAAK;AACH,gBAAI,eAAe;AACjB,qBAAO,cAAc,KAAK,MAAM,KAAK,cAAc,KAAK,KAAK;AAAA,YAC/D;AAAA,QACJ;AACA,eAAO;AAAA,MACT;AAEA,aAAO,UAAU;AAAA;AAAA;;;AC/GjB;AAAA;AAQA,eAAS,UAAU,OAAO,QAAQ;AAChC,YAAIC,SAAQ,IACRC,UAAS,OAAO,QAChB,SAAS,MAAM;AAEnB,eAAO,EAAED,SAAQC,SAAQ;AACvB,gBAAM,SAASD,MAAK,IAAI,OAAOA,MAAK;AAAA,QACtC;AACA,eAAO;AAAA,MACT;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACnBjB;AAAA;AAAA,UAAI,YAAY;AAAhB,UACIE,WAAU;AAad,eAAS,eAAe,QAAQ,UAAU,aAAa;AACrD,YAAI,SAAS,SAAS,MAAM;AAC5B,eAAOA,SAAQ,MAAM,IAAI,SAAS,UAAU,QAAQ,YAAY,MAAM,CAAC;AAAA,MACzE;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACnBjB;AAAA;AASA,eAAS,YAAY,OAAO,WAAW;AACrC,YAAIC,SAAQ,IACRC,UAAS,SAAS,OAAO,IAAI,MAAM,QACnC,WAAW,GACX,SAAS,CAAC;AAEd,eAAO,EAAED,SAAQC,SAAQ;AACvB,cAAI,QAAQ,MAAMD,MAAK;AACvB,cAAI,UAAU,OAAOA,QAAO,KAAK,GAAG;AAClC,mBAAO,UAAU,IAAI;AAAA,UACvB;AAAA,QACF;AACA,eAAO;AAAA,MACT;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACxBjB;AAAA;AAkBA,eAAS,YAAY;AACnB,eAAO,CAAC;AAAA,MACV;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACtBjB;AAAA;AAAA,UAAI,cAAc;AAAlB,UACI,YAAY;AAGhB,UAAI,cAAc,OAAO;AAGzB,UAAI,uBAAuB,YAAY;AAGvC,UAAI,mBAAmB,OAAO;AAS9B,UAAI,aAAa,CAAC,mBAAmB,YAAY,SAAS,QAAQ;AAChE,YAAI,UAAU,MAAM;AAClB,iBAAO,CAAC;AAAA,QACV;AACA,iBAAS,OAAO,MAAM;AACtB,eAAO,YAAY,iBAAiB,MAAM,GAAG,SAAS,QAAQ;AAC5D,iBAAO,qBAAqB,KAAK,QAAQ,MAAM;AAAA,QACjD,CAAC;AAAA,MACH;AAEA,aAAO,UAAU;AAAA;AAAA;;;AC7BjB;AAAA;AAAA,UAAI,iBAAiB;AAArB,UACI,aAAa;AADjB,UAEI,OAAO;AASX,eAAS,WAAW,QAAQ;AAC1B,eAAO,eAAe,QAAQ,MAAM,UAAU;AAAA,MAChD;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACfjB;AAAA;AAAA,UAAI,aAAa;AAGjB,UAAI,uBAAuB;AAG3B,UAAI,cAAc,OAAO;AAGzB,UAAIE,kBAAiB,YAAY;AAejC,eAAS,aAAa,QAAQ,OAAO,SAAS,YAAY,WAAW,OAAO;AAC1E,YAAI,YAAY,UAAU,sBACtB,WAAW,WAAW,MAAM,GAC5B,YAAY,SAAS,QACrB,WAAW,WAAW,KAAK,GAC3B,YAAY,SAAS;AAEzB,YAAI,aAAa,aAAa,CAAC,WAAW;AACxC,iBAAO;AAAA,QACT;AACA,YAAIC,SAAQ;AACZ,eAAOA,UAAS;AACd,cAAI,MAAM,SAASA,MAAK;AACxB,cAAI,EAAE,YAAY,OAAO,QAAQD,gBAAe,KAAK,OAAO,GAAG,IAAI;AACjE,mBAAO;AAAA,UACT;AAAA,QACF;AAEA,YAAI,aAAa,MAAM,IAAI,MAAM;AACjC,YAAI,aAAa,MAAM,IAAI,KAAK;AAChC,YAAI,cAAc,YAAY;AAC5B,iBAAO,cAAc,SAAS,cAAc;AAAA,QAC9C;AACA,YAAI,SAAS;AACb,cAAM,IAAI,QAAQ,KAAK;AACvB,cAAM,IAAI,OAAO,MAAM;AAEvB,YAAI,WAAW;AACf,eAAO,EAAEC,SAAQ,WAAW;AAC1B,gBAAM,SAASA,MAAK;AACpB,cAAI,WAAW,OAAO,GAAG,GACrB,WAAW,MAAM,GAAG;AAExB,cAAI,YAAY;AACd,gBAAI,WAAW,YACX,WAAW,UAAU,UAAU,KAAK,OAAO,QAAQ,KAAK,IACxD,WAAW,UAAU,UAAU,KAAK,QAAQ,OAAO,KAAK;AAAA,UAC9D;AAEA,cAAI,EAAE,aAAa,SACV,aAAa,YAAY,UAAU,UAAU,UAAU,SAAS,YAAY,KAAK,IAClF,WACD;AACL,qBAAS;AACT;AAAA,UACF;AACA,uBAAa,WAAW,OAAO;AAAA,QACjC;AACA,YAAI,UAAU,CAAC,UAAU;AACvB,cAAI,UAAU,OAAO,aACjB,UAAU,MAAM;AAGpB,cAAI,WAAW,YACV,iBAAiB,UAAU,iBAAiB,UAC7C,EAAE,OAAO,WAAW,cAAc,mBAAmB,WACnD,OAAO,WAAW,cAAc,mBAAmB,UAAU;AACjE,qBAAS;AAAA,UACX;AAAA,QACF;AACA,cAAM,QAAQ,EAAE,MAAM;AACtB,cAAM,QAAQ,EAAE,KAAK;AACrB,eAAO;AAAA,MACT;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACzFjB;AAAA;AAAA,UAAI,YAAY;AAAhB,UACI,OAAO;AAGX,UAAIC,YAAW,UAAU,MAAM,UAAU;AAEzC,aAAO,UAAUA;AAAA;AAAA;;;ACNjB;AAAA;AAAA,UAAI,YAAY;AAAhB,UACI,OAAO;AAGX,UAAIC,WAAU,UAAU,MAAM,SAAS;AAEvC,aAAO,UAAUA;AAAA;AAAA;;;ACNjB;AAAA;AAAA,UAAI,YAAY;AAAhB,UACI,OAAO;AAGX,UAAIC,OAAM,UAAU,MAAM,KAAK;AAE/B,aAAO,UAAUA;AAAA;AAAA;;;ACNjB;AAAA;AAAA,UAAI,YAAY;AAAhB,UACI,OAAO;AAGX,UAAIC,WAAU,UAAU,MAAM,SAAS;AAEvC,aAAO,UAAUA;AAAA;AAAA;;;ACNjB;AAAA;AAAA,UAAIC,YAAW;AAAf,UACIC,OAAM;AADV,UAEIC,WAAU;AAFd,UAGIC,OAAM;AAHV,UAIIC,WAAU;AAJd,UAKI,aAAa;AALjB,UAMI,WAAW;AAGf,UAAI,SAAS;AAAb,UACI,YAAY;AADhB,UAEI,aAAa;AAFjB,UAGI,SAAS;AAHb,UAII,aAAa;AAEjB,UAAI,cAAc;AAGlB,UAAI,qBAAqB,SAASJ,SAAQ;AAA1C,UACI,gBAAgB,SAASC,IAAG;AADhC,UAEI,oBAAoB,SAASC,QAAO;AAFxC,UAGI,gBAAgB,SAASC,IAAG;AAHhC,UAII,oBAAoB,SAASC,QAAO;AASxC,UAAI,SAAS;AAGb,UAAKJ,aAAY,OAAO,IAAIA,UAAS,IAAI,YAAY,CAAC,CAAC,CAAC,KAAK,eACxDC,QAAO,OAAO,IAAIA,MAAG,KAAK,UAC1BC,YAAW,OAAOA,SAAQ,QAAQ,CAAC,KAAK,cACxCC,QAAO,OAAO,IAAIA,MAAG,KAAK,UAC1BC,YAAW,OAAO,IAAIA,UAAO,KAAK,YAAa;AAClD,iBAAS,SAAS,OAAO;AACvB,cAAI,SAAS,WAAW,KAAK,GACzB,OAAO,UAAU,YAAY,MAAM,cAAc,QACjD,aAAa,OAAO,SAAS,IAAI,IAAI;AAEzC,cAAI,YAAY;AACd,oBAAQ,YAAY;AAAA,cAClB,KAAK;AAAoB,uBAAO;AAAA,cAChC,KAAK;AAAe,uBAAO;AAAA,cAC3B,KAAK;AAAmB,uBAAO;AAAA,cAC/B,KAAK;AAAe,uBAAO;AAAA,cAC3B,KAAK;AAAmB,uBAAO;AAAA,YACjC;AAAA,UACF;AACA,iBAAO;AAAA,QACT;AAAA,MACF;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACzDjB;AAAA;AAAA,UAAI,QAAQ;AAAZ,UACI,cAAc;AADlB,UAEI,aAAa;AAFjB,UAGI,eAAe;AAHnB,UAII,SAAS;AAJb,UAKIC,WAAU;AALd,UAMI,WAAW;AANf,UAOI,eAAe;AAGnB,UAAI,uBAAuB;AAG3B,UAAI,UAAU;AAAd,UACI,WAAW;AADf,UAEI,YAAY;AAGhB,UAAI,cAAc,OAAO;AAGzB,UAAIC,kBAAiB,YAAY;AAgBjC,eAAS,gBAAgB,QAAQ,OAAO,SAAS,YAAY,WAAW,OAAO;AAC7E,YAAI,WAAWD,SAAQ,MAAM,GACzB,WAAWA,SAAQ,KAAK,GACxB,SAAS,WAAW,WAAW,OAAO,MAAM,GAC5C,SAAS,WAAW,WAAW,OAAO,KAAK;AAE/C,iBAAS,UAAU,UAAU,YAAY;AACzC,iBAAS,UAAU,UAAU,YAAY;AAEzC,YAAI,WAAW,UAAU,WACrB,WAAW,UAAU,WACrB,YAAY,UAAU;AAE1B,YAAI,aAAa,SAAS,MAAM,GAAG;AACjC,cAAI,CAAC,SAAS,KAAK,GAAG;AACpB,mBAAO;AAAA,UACT;AACA,qBAAW;AACX,qBAAW;AAAA,QACb;AACA,YAAI,aAAa,CAAC,UAAU;AAC1B,oBAAU,QAAQ,IAAI;AACtB,iBAAQ,YAAY,aAAa,MAAM,IACnC,YAAY,QAAQ,OAAO,SAAS,YAAY,WAAW,KAAK,IAChE,WAAW,QAAQ,OAAO,QAAQ,SAAS,YAAY,WAAW,KAAK;AAAA,QAC7E;AACA,YAAI,EAAE,UAAU,uBAAuB;AACrC,cAAI,eAAe,YAAYC,gBAAe,KAAK,QAAQ,aAAa,GACpE,eAAe,YAAYA,gBAAe,KAAK,OAAO,aAAa;AAEvE,cAAI,gBAAgB,cAAc;AAChC,gBAAI,eAAe,eAAe,OAAO,MAAM,IAAI,QAC/C,eAAe,eAAe,MAAM,MAAM,IAAI;AAElD,sBAAU,QAAQ,IAAI;AACtB,mBAAO,UAAU,cAAc,cAAc,SAAS,YAAY,KAAK;AAAA,UACzE;AAAA,QACF;AACA,YAAI,CAAC,WAAW;AACd,iBAAO;AAAA,QACT;AACA,kBAAU,QAAQ,IAAI;AACtB,eAAO,aAAa,QAAQ,OAAO,SAAS,YAAY,WAAW,KAAK;AAAA,MAC1E;AAEA,aAAO,UAAU;AAAA;AAAA;;;AClFjB;AAAA;AAAA,UAAI,kBAAkB;AAAtB,UACI,eAAe;AAgBnB,eAAS,YAAY,OAAO,OAAO,SAAS,YAAY,OAAO;AAC7D,YAAI,UAAU,OAAO;AACnB,iBAAO;AAAA,QACT;AACA,YAAI,SAAS,QAAQ,SAAS,QAAS,CAAC,aAAa,KAAK,KAAK,CAAC,aAAa,KAAK,GAAI;AACpF,iBAAO,UAAU,SAAS,UAAU;AAAA,QACtC;AACA,eAAO,gBAAgB,OAAO,OAAO,SAAS,YAAY,aAAa,KAAK;AAAA,MAC9E;AAEA,aAAO,UAAU;AAAA;AAAA;;;AC3BjB;AAAA;AAAA,UAAI,QAAQ;AAAZ,UACI,cAAc;AAGlB,UAAI,uBAAuB;AAA3B,UACI,yBAAyB;AAY7B,eAAS,YAAY,QAAQ,QAAQ,WAAW,YAAY;AAC1D,YAAIC,SAAQ,UAAU,QAClBC,UAASD,QACT,eAAe,CAAC;AAEpB,YAAI,UAAU,MAAM;AAClB,iBAAO,CAACC;AAAA,QACV;AACA,iBAAS,OAAO,MAAM;AACtB,eAAOD,UAAS;AACd,cAAIE,QAAO,UAAUF,MAAK;AAC1B,cAAK,gBAAgBE,MAAK,CAAC,IACnBA,MAAK,CAAC,MAAM,OAAOA,MAAK,CAAC,CAAC,IAC1B,EAAEA,MAAK,CAAC,KAAK,SACf;AACJ,mBAAO;AAAA,UACT;AAAA,QACF;AACA,eAAO,EAAEF,SAAQC,SAAQ;AACvB,UAAAC,QAAO,UAAUF,MAAK;AACtB,cAAI,MAAME,MAAK,CAAC,GACZ,WAAW,OAAO,GAAG,GACrB,WAAWA,MAAK,CAAC;AAErB,cAAI,gBAAgBA,MAAK,CAAC,GAAG;AAC3B,gBAAI,aAAa,UAAa,EAAE,OAAO,SAAS;AAC9C,qBAAO;AAAA,YACT;AAAA,UACF,OAAO;AACL,gBAAI,QAAQ,IAAI;AAChB,gBAAI,YAAY;AACd,kBAAI,SAAS,WAAW,UAAU,UAAU,KAAK,QAAQ,QAAQ,KAAK;AAAA,YACxE;AACA,gBAAI,EAAE,WAAW,SACT,YAAY,UAAU,UAAU,uBAAuB,wBAAwB,YAAY,KAAK,IAChG,SACD;AACL,qBAAO;AAAA,YACT;AAAA,UACF;AAAA,QACF;AACA,eAAO;AAAA,MACT;AAEA,aAAO,UAAU;AAAA;AAAA;;;AC7DjB;AAAA;AAAA,UAAI,WAAW;AAUf,eAAS,mBAAmB,OAAO;AACjC,eAAO,UAAU,SAAS,CAAC,SAAS,KAAK;AAAA,MAC3C;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACdjB;AAAA;AAAA,UAAI,qBAAqB;AAAzB,UACI,OAAO;AASX,eAAS,aAAa,QAAQ;AAC5B,YAAI,SAAS,KAAK,MAAM,GACpBC,UAAS,OAAO;AAEpB,eAAOA,WAAU;AACf,cAAI,MAAM,OAAOA,OAAM,GACnB,QAAQ,OAAO,GAAG;AAEtB,iBAAOA,OAAM,IAAI,CAAC,KAAK,OAAO,mBAAmB,KAAK,CAAC;AAAA,QACzD;AACA,eAAO;AAAA,MACT;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACvBjB;AAAA;AASA,eAAS,wBAAwB,KAAK,UAAU;AAC9C,eAAO,SAAS,QAAQ;AACtB,cAAI,UAAU,MAAM;AAClB,mBAAO;AAAA,UACT;AACA,iBAAO,OAAO,GAAG,MAAM,aACpB,aAAa,UAAc,OAAO,OAAO,MAAM;AAAA,QACpD;AAAA,MACF;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACnBjB;AAAA;AAAA,UAAI,cAAc;AAAlB,UACI,eAAe;AADnB,UAEI,0BAA0B;AAS9B,eAAS,YAAY,QAAQ;AAC3B,YAAI,YAAY,aAAa,MAAM;AACnC,YAAI,UAAU,UAAU,KAAK,UAAU,CAAC,EAAE,CAAC,GAAG;AAC5C,iBAAO,wBAAwB,UAAU,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC;AAAA,QACjE;AACA,eAAO,SAAS,QAAQ;AACtB,iBAAO,WAAW,UAAU,YAAY,QAAQ,QAAQ,SAAS;AAAA,QACnE;AAAA,MACF;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACrBjB;AAAA;AAAA,UAAI,UAAU;AA2Bd,eAAS,IAAI,QAAQC,OAAM,cAAc;AACvC,YAAI,SAAS,UAAU,OAAO,SAAY,QAAQ,QAAQA,KAAI;AAC9D,eAAO,WAAW,SAAY,eAAe;AAAA,MAC/C;AAEA,aAAO,UAAU;AAAA;AAAA;;;AChCjB;AAAA;AAQA,eAAS,UAAU,QAAQ,KAAK;AAC9B,eAAO,UAAU,QAAQ,OAAO,OAAO,MAAM;AAAA,MAC/C;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACZjB;AAAA;AAAA,UAAI,WAAW;AAAf,UACI,cAAc;AADlB,UAEIC,WAAU;AAFd,UAGI,UAAU;AAHd,UAII,WAAW;AAJf,UAKI,QAAQ;AAWZ,eAAS,QAAQ,QAAQC,OAAM,SAAS;AACtC,QAAAA,QAAO,SAASA,OAAM,MAAM;AAE5B,YAAIC,SAAQ,IACRC,UAASF,MAAK,QACd,SAAS;AAEb,eAAO,EAAEC,SAAQC,SAAQ;AACvB,cAAI,MAAM,MAAMF,MAAKC,MAAK,CAAC;AAC3B,cAAI,EAAE,SAAS,UAAU,QAAQ,QAAQ,QAAQ,GAAG,IAAI;AACtD;AAAA,UACF;AACA,mBAAS,OAAO,GAAG;AAAA,QACrB;AACA,YAAI,UAAU,EAAEA,UAASC,SAAQ;AAC/B,iBAAO;AAAA,QACT;AACA,QAAAA,UAAS,UAAU,OAAO,IAAI,OAAO;AACrC,eAAO,CAAC,CAACA,WAAU,SAASA,OAAM,KAAK,QAAQ,KAAKA,OAAM,MACvDH,SAAQ,MAAM,KAAK,YAAY,MAAM;AAAA,MAC1C;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACtCjB;AAAA;AAAA,UAAI,YAAY;AAAhB,UACI,UAAU;AA4Bd,eAAS,MAAM,QAAQI,OAAM;AAC3B,eAAO,UAAU,QAAQ,QAAQ,QAAQA,OAAM,SAAS;AAAA,MAC1D;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACjCjB;AAAA;AAAA,UAAI,cAAc;AAAlB,UACI,MAAM;AADV,UAEI,QAAQ;AAFZ,UAGI,QAAQ;AAHZ,UAII,qBAAqB;AAJzB,UAKI,0BAA0B;AAL9B,UAMI,QAAQ;AAGZ,UAAI,uBAAuB;AAA3B,UACI,yBAAyB;AAU7B,eAAS,oBAAoBC,OAAM,UAAU;AAC3C,YAAI,MAAMA,KAAI,KAAK,mBAAmB,QAAQ,GAAG;AAC/C,iBAAO,wBAAwB,MAAMA,KAAI,GAAG,QAAQ;AAAA,QACtD;AACA,eAAO,SAAS,QAAQ;AACtB,cAAI,WAAW,IAAI,QAAQA,KAAI;AAC/B,iBAAQ,aAAa,UAAa,aAAa,WAC3C,MAAM,QAAQA,KAAI,IAClB,YAAY,UAAU,UAAU,uBAAuB,sBAAsB;AAAA,QACnF;AAAA,MACF;AAEA,aAAO,UAAU;AAAA;AAAA;;;AChCjB;AAAA;AAOA,eAAS,aAAa,KAAK;AACzB,eAAO,SAAS,QAAQ;AACtB,iBAAO,UAAU,OAAO,SAAY,OAAO,GAAG;AAAA,QAChD;AAAA,MACF;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACbjB;AAAA;AAAA,UAAI,UAAU;AASd,eAAS,iBAAiBC,OAAM;AAC9B,eAAO,SAAS,QAAQ;AACtB,iBAAO,QAAQ,QAAQA,KAAI;AAAA,QAC7B;AAAA,MACF;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACfjB;AAAA;AAAA,UAAI,eAAe;AAAnB,UACI,mBAAmB;AADvB,UAEI,QAAQ;AAFZ,UAGI,QAAQ;AAwBZ,eAAS,SAASC,OAAM;AACtB,eAAO,MAAMA,KAAI,IAAI,aAAa,MAAMA,KAAI,CAAC,IAAI,iBAAiBA,KAAI;AAAA,MACxE;AAEA,aAAO,UAAU;AAAA;AAAA;;;AC/BjB;AAAA;AAAA,UAAI,cAAc;AAAlB,UACI,sBAAsB;AAD1B,UAEIC,YAAW;AAFf,UAGIC,WAAU;AAHd,UAII,WAAW;AASf,eAAS,aAAa,OAAO;AAG3B,YAAI,OAAO,SAAS,YAAY;AAC9B,iBAAO;AAAA,QACT;AACA,YAAI,SAAS,MAAM;AACjB,iBAAOD;AAAA,QACT;AACA,YAAI,OAAO,SAAS,UAAU;AAC5B,iBAAOC,SAAQ,KAAK,IAChB,oBAAoB,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,IACtC,YAAY,KAAK;AAAA,QACvB;AACA,eAAO,SAAS,KAAK;AAAA,MACvB;AAEA,aAAO,UAAU;AAAA;AAAA;;;AC9BjB;AAAA;AAOA,eAAS,cAAc,WAAW;AAChC,eAAO,SAAS,QAAQ,UAAU,UAAU;AAC1C,cAAIC,SAAQ,IACR,WAAW,OAAO,MAAM,GACxB,QAAQ,SAAS,MAAM,GACvBC,UAAS,MAAM;AAEnB,iBAAOA,WAAU;AACf,gBAAI,MAAM,MAAM,YAAYA,UAAS,EAAED,MAAK;AAC5C,gBAAI,SAAS,SAAS,GAAG,GAAG,KAAK,QAAQ,MAAM,OAAO;AACpD;AAAA,YACF;AAAA,UACF;AACA,iBAAO;AAAA,QACT;AAAA,MACF;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACxBjB;AAAA;AAAA,UAAI,gBAAgB;AAapB,UAAI,UAAU,cAAc;AAE5B,aAAO,UAAU;AAAA;AAAA;;;ACfjB;AAAA;AAAA,UAAI,UAAU;AAAd,UACI,OAAO;AAUX,eAAS,WAAW,QAAQ,UAAU;AACpC,eAAO,UAAU,QAAQ,QAAQ,UAAU,IAAI;AAAA,MACjD;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACfjB;AAAA;AAAA,UAAI,cAAc;AAUlB,eAAS,eAAe,UAAU,WAAW;AAC3C,eAAO,SAAS,YAAY,UAAU;AACpC,cAAI,cAAc,MAAM;AACtB,mBAAO;AAAA,UACT;AACA,cAAI,CAAC,YAAY,UAAU,GAAG;AAC5B,mBAAO,SAAS,YAAY,QAAQ;AAAA,UACtC;AACA,cAAIE,UAAS,WAAW,QACpBC,SAAQ,YAAYD,UAAS,IAC7B,WAAW,OAAO,UAAU;AAEhC,iBAAQ,YAAYC,WAAU,EAAEA,SAAQD,SAAS;AAC/C,gBAAI,SAAS,SAASC,MAAK,GAAGA,QAAO,QAAQ,MAAM,OAAO;AACxD;AAAA,YACF;AAAA,UACF;AACA,iBAAO;AAAA,QACT;AAAA,MACF;AAEA,aAAO,UAAU;AAAA;AAAA;;;AC/BjB;AAAA;AAAA,UAAI,aAAa;AAAjB,UACI,iBAAiB;AAUrB,UAAI,WAAW,eAAe,UAAU;AAExC,aAAO,UAAU;AAAA;AAAA;;;ACbjB;AAAA;AAAA,UAAI,WAAW;AAAf,UACI,cAAc;AAUlB,eAAS,QAAQ,YAAY,UAAU;AACrC,YAAIC,SAAQ,IACR,SAAS,YAAY,UAAU,IAAI,MAAM,WAAW,MAAM,IAAI,CAAC;AAEnE,iBAAS,YAAY,SAAS,OAAO,KAAKC,aAAY;AACpD,iBAAO,EAAED,MAAK,IAAI,SAAS,OAAO,KAAKC,WAAU;AAAA,QACnD,CAAC;AACD,eAAO;AAAA,MACT;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACrBjB;AAAA;AAUA,eAAS,WAAW,OAAO,UAAU;AACnC,YAAIC,UAAS,MAAM;AAEnB,cAAM,KAAK,QAAQ;AACnB,eAAOA,WAAU;AACf,gBAAMA,OAAM,IAAI,MAAMA,OAAM,EAAE;AAAA,QAChC;AACA,eAAO;AAAA,MACT;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACpBjB;AAAA;AAAA,UAAI,WAAW;AAUf,eAAS,iBAAiB,OAAO,OAAO;AACtC,YAAI,UAAU,OAAO;AACnB,cAAI,eAAe,UAAU,QACzB,YAAY,UAAU,MACtB,iBAAiB,UAAU,OAC3B,cAAc,SAAS,KAAK;AAEhC,cAAI,eAAe,UAAU,QACzB,YAAY,UAAU,MACtB,iBAAiB,UAAU,OAC3B,cAAc,SAAS,KAAK;AAEhC,cAAK,CAAC,aAAa,CAAC,eAAe,CAAC,eAAe,QAAQ,SACtD,eAAe,gBAAgB,kBAAkB,CAAC,aAAa,CAAC,eAChE,aAAa,gBAAgB,kBAC7B,CAAC,gBAAgB,kBAClB,CAAC,gBAAgB;AACnB,mBAAO;AAAA,UACT;AACA,cAAK,CAAC,aAAa,CAAC,eAAe,CAAC,eAAe,QAAQ,SACtD,eAAe,gBAAgB,kBAAkB,CAAC,aAAa,CAAC,eAChE,aAAa,gBAAgB,kBAC7B,CAAC,gBAAgB,kBAClB,CAAC,gBAAgB;AACnB,mBAAO;AAAA,UACT;AAAA,QACF;AACA,eAAO;AAAA,MACT;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACxCjB;AAAA;AAAA,UAAI,mBAAmB;AAgBvB,eAAS,gBAAgB,QAAQ,OAAO,QAAQ;AAC9C,YAAIC,SAAQ,IACR,cAAc,OAAO,UACrB,cAAc,MAAM,UACpBC,UAAS,YAAY,QACrB,eAAe,OAAO;AAE1B,eAAO,EAAED,SAAQC,SAAQ;AACvB,cAAI,SAAS,iBAAiB,YAAYD,MAAK,GAAG,YAAYA,MAAK,CAAC;AACpE,cAAI,QAAQ;AACV,gBAAIA,UAAS,cAAc;AACzB,qBAAO;AAAA,YACT;AACA,gBAAI,QAAQ,OAAOA,MAAK;AACxB,mBAAO,UAAU,SAAS,SAAS,KAAK;AAAA,UAC1C;AAAA,QACF;AAQA,eAAO,OAAO,QAAQ,MAAM;AAAA,MAC9B;AAEA,aAAO,UAAU;AAAA;AAAA;;;AC3CjB;AAAA;AAAA,UAAI,WAAW;AAAf,UACI,UAAU;AADd,UAEI,eAAe;AAFnB,UAGI,UAAU;AAHd,UAII,aAAa;AAJjB,UAKI,YAAY;AALhB,UAMI,kBAAkB;AANtB,UAOIE,YAAW;AAPf,UAQIC,WAAU;AAWd,eAAS,YAAY,YAAY,WAAW,QAAQ;AAClD,YAAI,UAAU,QAAQ;AACpB,sBAAY,SAAS,WAAW,SAAS,UAAU;AACjD,gBAAIA,SAAQ,QAAQ,GAAG;AACrB,qBAAO,SAAS,OAAO;AACrB,uBAAO,QAAQ,OAAO,SAAS,WAAW,IAAI,SAAS,CAAC,IAAI,QAAQ;AAAA,cACtE;AAAA,YACF;AACA,mBAAO;AAAA,UACT,CAAC;AAAA,QACH,OAAO;AACL,sBAAY,CAACD,SAAQ;AAAA,QACvB;AAEA,YAAIE,SAAQ;AACZ,oBAAY,SAAS,WAAW,UAAU,YAAY,CAAC;AAEvD,YAAI,SAAS,QAAQ,YAAY,SAAS,OAAO,KAAKC,aAAY;AAChE,cAAI,WAAW,SAAS,WAAW,SAAS,UAAU;AACpD,mBAAO,SAAS,KAAK;AAAA,UACvB,CAAC;AACD,iBAAO,EAAE,YAAY,UAAU,SAAS,EAAED,QAAO,SAAS,MAAM;AAAA,QAClE,CAAC;AAED,eAAO,WAAW,QAAQ,SAAS,QAAQ,OAAO;AAChD,iBAAO,gBAAgB,QAAQ,OAAO,MAAM;AAAA,QAC9C,CAAC;AAAA,MACH;AAEA,aAAO,UAAU;AAAA;AAAA;;;AChDjB;AAAA;AAAA,UAAI,cAAc;AAAlB,UACIE,WAAU;AA+Bd,eAAS,QAAQ,YAAY,WAAW,QAAQ,OAAO;AACrD,YAAI,cAAc,MAAM;AACtB,iBAAO,CAAC;AAAA,QACV;AACA,YAAI,CAACA,SAAQ,SAAS,GAAG;AACvB,sBAAY,aAAa,OAAO,CAAC,IAAI,CAAC,SAAS;AAAA,QACjD;AACA,iBAAS,QAAQ,SAAY;AAC7B,YAAI,CAACA,SAAQ,MAAM,GAAG;AACpB,mBAAS,UAAU,OAAO,CAAC,IAAI,CAAC,MAAM;AAAA,QACxC;AACA,eAAO,YAAY,YAAY,WAAW,MAAM;AAAA,MAClD;AAEA,aAAO,UAAU;AAAA;AAAA;;;AC9CjB;AAAA;AAAA,UAAI,UAAU;AAGd,UAAI,eAAe,QAAQ,OAAO,gBAAgB,MAAM;AAExD,aAAO,UAAU;AAAA;AAAA;;;ACLjB;AAAA;AAAA,UAAI,aAAa;AAAjB,UACI,eAAe;AADnB,UAEI,eAAe;AAGnB,UAAI,YAAY;AAGhB,UAAI,YAAY,SAAS;AAAzB,UACI,cAAc,OAAO;AAGzB,UAAI,eAAe,UAAU;AAG7B,UAAIC,kBAAiB,YAAY;AAGjC,UAAI,mBAAmB,aAAa,KAAK,MAAM;AA8B/C,eAAS,cAAc,OAAO;AAC5B,YAAI,CAAC,aAAa,KAAK,KAAK,WAAW,KAAK,KAAK,WAAW;AAC1D,iBAAO;AAAA,QACT;AACA,YAAI,QAAQ,aAAa,KAAK;AAC9B,YAAI,UAAU,MAAM;AAClB,iBAAO;AAAA,QACT;AACA,YAAI,OAAOA,gBAAe,KAAK,OAAO,aAAa,KAAK,MAAM;AAC9D,eAAO,OAAO,QAAQ,cAAc,gBAAgB,QAClD,aAAa,KAAK,IAAI,KAAK;AAAA,MAC/B;AAEA,aAAO,UAAU;AAAA;AAAA;;;AC7DjB;AAAA;AAAA,UAAI,WAAW;AAGf,UAAI,YAAY;AAmBhB,eAAS,SAASC,SAAQ;AACxB,YAAIC,OAAK,EAAE;AACX,eAAO,SAASD,OAAM,IAAIC;AAAA,MAC5B;AAEA,aAAO,UAAU;AAAA;AAAA;;;AC3BjB;AAAA;AASA,eAAS,aAAa,QAAQ;AAC5B,YAAI,SAAS,CAAC;AACd,YAAI,UAAU,MAAM;AAClB,mBAAS,OAAO,OAAO,MAAM,GAAG;AAC9B,mBAAO,KAAK,GAAG;AAAA,UACjB;AAAA,QACF;AACA,eAAO;AAAA,MACT;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACnBjB;AAAA;AAAA,UAAI,WAAW;AAAf,UACI,cAAc;AADlB,UAEI,eAAe;AAGnB,UAAI,cAAc,OAAO;AAGzB,UAAIC,kBAAiB,YAAY;AASjC,eAAS,WAAW,QAAQ;AAC1B,YAAI,CAAC,SAAS,MAAM,GAAG;AACrB,iBAAO,aAAa,MAAM;AAAA,QAC5B;AACA,YAAI,UAAU,YAAY,MAAM,GAC5B,SAAS,CAAC;AAEd,iBAAS,OAAO,QAAQ;AACtB,cAAI,EAAE,OAAO,kBAAkB,WAAW,CAACA,gBAAe,KAAK,QAAQ,GAAG,KAAK;AAC7E,mBAAO,KAAK,GAAG;AAAA,UACjB;AAAA,QACF;AACA,eAAO;AAAA,MACT;AAEA,aAAO,UAAU;AAAA;AAAA;;;AChCjB;AAAA;AAAA,UAAI,gBAAgB;AAApB,UACI,aAAa;AADjB,UAEI,cAAc;AAyBlB,eAAS,OAAO,QAAQ;AACtB,eAAO,YAAY,MAAM,IAAI,cAAc,QAAQ,IAAI,IAAI,WAAW,MAAM;AAAA,MAC9E;AAEA,aAAO,UAAU;AAAA;AAAA;;;AC/BjB,MAAAC,oBAAA;AAAA;AAAA,UAAI,WAAW;AAAf,UACI,KAAK;AADT,UAEI,iBAAiB;AAFrB,UAGI,SAAS;AAGb,UAAI,cAAc,OAAO;AAGzB,UAAIC,kBAAiB,YAAY;AAuBjC,UAAI,WAAW,SAAS,SAAS,QAAQ,SAAS;AAChD,iBAAS,OAAO,MAAM;AAEtB,YAAIC,SAAQ;AACZ,YAAIC,UAAS,QAAQ;AACrB,YAAI,QAAQA,UAAS,IAAI,QAAQ,CAAC,IAAI;AAEtC,YAAI,SAAS,eAAe,QAAQ,CAAC,GAAG,QAAQ,CAAC,GAAG,KAAK,GAAG;AAC1D,UAAAA,UAAS;AAAA,QACX;AAEA,eAAO,EAAED,SAAQC,SAAQ;AACvB,cAAI,SAAS,QAAQD,MAAK;AAC1B,cAAI,QAAQ,OAAO,MAAM;AACzB,cAAI,aAAa;AACjB,cAAI,cAAc,MAAM;AAExB,iBAAO,EAAE,aAAa,aAAa;AACjC,gBAAI,MAAM,MAAM,UAAU;AAC1B,gBAAI,QAAQ,OAAO,GAAG;AAEtB,gBAAI,UAAU,UACT,GAAG,OAAO,YAAY,GAAG,CAAC,KAAK,CAACD,gBAAe,KAAK,QAAQ,GAAG,GAAI;AACtE,qBAAO,GAAG,IAAI,OAAO,GAAG;AAAA,YAC1B;AAAA,UACF;AAAA,QACF;AAEA,eAAO;AAAA,MACT,CAAC;AAED,aAAO,UAAU;AAAA;AAAA;;;AC/DjB;AAAA;AAAA,UAAI,aAAa;AAAjB,UACI,eAAe;AAGnB,UAAI,YAAY;AAShB,eAAS,aAAa,OAAO;AAC3B,eAAO,aAAa,KAAK,KAAK,WAAW,KAAK,KAAK;AAAA,MACrD;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACjBjB;AAAA;AAAA,UAAI,eAAe;AAAnB,UACI,YAAY;AADhB,UAEI,WAAW;AAGf,UAAI,eAAe,YAAY,SAAS;AAmBxC,UAAI,WAAW,eAAe,UAAU,YAAY,IAAI;AAExD,aAAO,UAAU;AAAA;AAAA;;;AC1BjB;AAAA;AAAA,UAAI,eAAe;AAAnB,UACI,cAAc;AADlB,UAEI,OAAO;AASX,eAAS,WAAW,eAAe;AACjC,eAAO,SAAS,YAAY,WAAW,WAAW;AAChD,cAAI,WAAW,OAAO,UAAU;AAChC,cAAI,CAAC,YAAY,UAAU,GAAG;AAC5B,gBAAI,WAAW,aAAa,WAAW,CAAC;AACxC,yBAAa,KAAK,UAAU;AAC5B,wBAAY,SAAS,KAAK;AAAE,qBAAO,SAAS,SAAS,GAAG,GAAG,KAAK,QAAQ;AAAA,YAAG;AAAA,UAC7E;AACA,cAAIG,SAAQ,cAAc,YAAY,WAAW,SAAS;AAC1D,iBAAOA,SAAQ,KAAK,SAAS,WAAW,WAAWA,MAAK,IAAIA,MAAK,IAAI;AAAA,QACvE;AAAA,MACF;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACxBjB;AAAA;AAWA,eAAS,cAAc,OAAO,WAAW,WAAW,WAAW;AAC7D,YAAIC,UAAS,MAAM,QACfC,SAAQ,aAAa,YAAY,IAAI;AAEzC,eAAQ,YAAYA,WAAU,EAAEA,SAAQD,SAAS;AAC/C,cAAI,UAAU,MAAMC,MAAK,GAAGA,QAAO,KAAK,GAAG;AACzC,mBAAOA;AAAA,UACT;AAAA,QACF;AACA,eAAO;AAAA,MACT;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACvBjB;AAAA;AACA,UAAI,eAAe;AAUnB,eAAS,gBAAgB,QAAQ;AAC/B,YAAIC,SAAQ,OAAO;AAEnB,eAAOA,YAAW,aAAa,KAAK,OAAO,OAAOA,MAAK,CAAC,GAAG;AAAA,QAAC;AAC5D,eAAOA;AAAA,MACT;AAEA,aAAO,UAAU;AAAA;AAAA;;;AClBjB;AAAA;AAAA,UAAI,kBAAkB;AAGtB,UAAI,cAAc;AASlB,eAAS,SAAS,QAAQ;AACxB,eAAO,SACH,OAAO,MAAM,GAAG,gBAAgB,MAAM,IAAI,CAAC,EAAE,QAAQ,aAAa,EAAE,IACpE;AAAA,MACN;AAEA,aAAO,UAAU;AAAA;AAAA;;;AClBjB;AAAA;AAAA,UAAI,WAAW;AAAf,UACI,WAAW;AADf,UAEI,WAAW;AAGf,UAAI,MAAM,IAAI;AAGd,UAAI,aAAa;AAGjB,UAAI,aAAa;AAGjB,UAAI,YAAY;AAGhB,UAAI,eAAe;AAyBnB,eAAS,SAAS,OAAO;AACvB,YAAI,OAAO,SAAS,UAAU;AAC5B,iBAAO;AAAA,QACT;AACA,YAAI,SAAS,KAAK,GAAG;AACnB,iBAAO;AAAA,QACT;AACA,YAAI,SAAS,KAAK,GAAG;AACnB,cAAI,QAAQ,OAAO,MAAM,WAAW,aAAa,MAAM,QAAQ,IAAI;AACnE,kBAAQ,SAAS,KAAK,IAAK,QAAQ,KAAM;AAAA,QAC3C;AACA,YAAI,OAAO,SAAS,UAAU;AAC5B,iBAAO,UAAU,IAAI,QAAQ,CAAC;AAAA,QAChC;AACA,gBAAQ,SAAS,KAAK;AACtB,YAAI,WAAW,WAAW,KAAK,KAAK;AACpC,eAAQ,YAAY,UAAU,KAAK,KAAK,IACpC,aAAa,MAAM,MAAM,CAAC,GAAG,WAAW,IAAI,CAAC,IAC5C,WAAW,KAAK,KAAK,IAAI,MAAM,CAAC;AAAA,MACvC;AAEA,aAAO,UAAU;AAAA;AAAA;;;AC/DjB;AAAA;AAAA,UAAI,WAAW;AAGf,UAAI,WAAW,IAAI;AAAnB,UACI,cAAc;AAyBlB,eAAS,SAAS,OAAO;AACvB,YAAI,CAAC,OAAO;AACV,iBAAO,UAAU,IAAI,QAAQ;AAAA,QAC/B;AACA,gBAAQ,SAAS,KAAK;AACtB,YAAI,UAAU,YAAY,UAAU,CAAC,UAAU;AAC7C,cAAIC,QAAQ,QAAQ,IAAI,KAAK;AAC7B,iBAAOA,QAAO;AAAA,QAChB;AACA,eAAO,UAAU,QAAQ,QAAQ;AAAA,MACnC;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACzCjB,MAAAC,qBAAA;AAAA;AAAA,UAAI,WAAW;AA4Bf,eAAS,UAAU,OAAO;AACxB,YAAI,SAAS,SAAS,KAAK,GACvB,YAAY,SAAS;AAEzB,eAAO,WAAW,SAAU,YAAY,SAAS,YAAY,SAAU;AAAA,MACzE;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACnCjB;AAAA;AAAA,UAAI,gBAAgB;AAApB,UACI,eAAe;AADnB,UAEI,YAAY;AAGhB,UAAI,YAAY,KAAK;AAqCrB,eAAS,UAAU,OAAO,WAAW,WAAW;AAC9C,YAAIC,UAAS,SAAS,OAAO,IAAI,MAAM;AACvC,YAAI,CAACA,SAAQ;AACX,iBAAO;AAAA,QACT;AACA,YAAIC,SAAQ,aAAa,OAAO,IAAI,UAAU,SAAS;AACvD,YAAIA,SAAQ,GAAG;AACb,UAAAA,SAAQ,UAAUD,UAASC,QAAO,CAAC;AAAA,QACrC;AACA,eAAO,cAAc,OAAO,aAAa,WAAW,CAAC,GAAGA,MAAK;AAAA,MAC/D;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACtDjB;AAAA;AAAA,UAAI,aAAa;AAAjB,UACI,YAAY;AAsChB,UAAI,OAAO,WAAW,SAAS;AAE/B,aAAO,UAAU;AAAA;AAAA;;;ACzCjB;AAAA;AAOA,eAAS,UAAU,OAAO;AACxB,eAAO,UAAU;AAAA,MACnB;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACXjB;AAAA;AAUA,eAAS,cAAc,OAAO,OAAO,WAAW;AAC9C,YAAIC,SAAQ,YAAY,GACpBC,UAAS,MAAM;AAEnB,eAAO,EAAED,SAAQC,SAAQ;AACvB,cAAI,MAAMD,MAAK,MAAM,OAAO;AAC1B,mBAAOA;AAAA,UACT;AAAA,QACF;AACA,eAAO;AAAA,MACT;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACtBjB;AAAA;AAAA,UAAI,gBAAgB;AAApB,UACI,YAAY;AADhB,UAEI,gBAAgB;AAWpB,eAAS,YAAY,OAAO,OAAO,WAAW;AAC5C,eAAO,UAAU,QACb,cAAc,OAAO,OAAO,SAAS,IACrC,cAAc,OAAO,WAAW,SAAS;AAAA,MAC/C;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACnBjB;AAAA;AAAA,UAAI,aAAa;AAAjB,UACIE,WAAU;AADd,UAEI,eAAe;AAGnB,UAAI,YAAY;AAmBhB,eAAS,SAAS,OAAO;AACvB,eAAO,OAAO,SAAS,YACpB,CAACA,SAAQ,KAAK,KAAK,aAAa,KAAK,KAAK,WAAW,KAAK,KAAK;AAAA,MACpE;AAEA,aAAO,UAAU;AAAA;AAAA;;;AC7BjB;AAAA;AAAA,UAAI,WAAW;AAYf,eAAS,WAAW,QAAQ,OAAO;AACjC,eAAO,SAAS,OAAO,SAAS,KAAK;AACnC,iBAAO,OAAO,GAAG;AAAA,QACnB,CAAC;AAAA,MACH;AAEA,aAAO,UAAU;AAAA;AAAA;;;AClBjB;AAAA;AAAA,UAAI,aAAa;AAAjB,UACI,OAAO;AA4BX,eAAS,OAAO,QAAQ;AACtB,eAAO,UAAU,OAAO,CAAC,IAAI,WAAW,QAAQ,KAAK,MAAM,CAAC;AAAA,MAC9D;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACjCjB;AAAA;AAAA,UAAI,cAAc;AAAlB,UACI,cAAc;AADlB,UAEI,WAAW;AAFf,UAGI,YAAY;AAHhB,UAII,SAAS;AAGb,UAAI,YAAY,KAAK;AAgCrB,eAAS,SAAS,YAAY,OAAO,WAAW,OAAO;AACrD,qBAAa,YAAY,UAAU,IAAI,aAAa,OAAO,UAAU;AACrE,oBAAa,aAAa,CAAC,QAAS,UAAU,SAAS,IAAI;AAE3D,YAAIC,UAAS,WAAW;AACxB,YAAI,YAAY,GAAG;AACjB,sBAAY,UAAUA,UAAS,WAAW,CAAC;AAAA,QAC7C;AACA,eAAO,SAAS,UAAU,IACrB,aAAaA,WAAU,WAAW,QAAQ,OAAO,SAAS,IAAI,KAC9D,CAAC,CAACA,WAAU,YAAY,YAAY,OAAO,SAAS,IAAI;AAAA,MAC/D;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACpDjB;AAAA;AAAA,UAAI,cAAc;AAAlB,UACI,WAAW;AADf,UAEI,UAAU;AAFd,UAGI,WAAW;AAHf,UAII,QAAQ;AAYZ,eAAS,QAAQ,QAAQC,OAAM,OAAO,YAAY;AAChD,YAAI,CAAC,SAAS,MAAM,GAAG;AACrB,iBAAO;AAAA,QACT;AACA,QAAAA,QAAO,SAASA,OAAM,MAAM;AAE5B,YAAIC,SAAQ,IACRC,UAASF,MAAK,QACd,YAAYE,UAAS,GACrB,SAAS;AAEb,eAAO,UAAU,QAAQ,EAAED,SAAQC,SAAQ;AACzC,cAAI,MAAM,MAAMF,MAAKC,MAAK,CAAC,GACvB,WAAW;AAEf,cAAI,QAAQ,eAAe,QAAQ,iBAAiB,QAAQ,aAAa;AACvE,mBAAO;AAAA,UACT;AAEA,cAAIA,UAAS,WAAW;AACtB,gBAAI,WAAW,OAAO,GAAG;AACzB,uBAAW,aAAa,WAAW,UAAU,KAAK,MAAM,IAAI;AAC5D,gBAAI,aAAa,QAAW;AAC1B,yBAAW,SAAS,QAAQ,IACxB,WACC,QAAQD,MAAKC,SAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AAAA,YACxC;AAAA,UACF;AACA,sBAAY,QAAQ,KAAK,QAAQ;AACjC,mBAAS,OAAO,GAAG;AAAA,QACrB;AACA,eAAO;AAAA,MACT;AAEA,aAAO,UAAU;AAAA;AAAA;;;AClDjB;AAAA;AAAA,UAAI,UAAU;AAAd,UACI,UAAU;AADd,UAEI,WAAW;AAWf,eAAS,WAAW,QAAQ,OAAO,WAAW;AAC5C,YAAIE,SAAQ,IACRC,UAAS,MAAM,QACf,SAAS,CAAC;AAEd,eAAO,EAAED,SAAQC,SAAQ;AACvB,cAAIC,QAAO,MAAMF,MAAK,GAClB,QAAQ,QAAQ,QAAQE,KAAI;AAEhC,cAAI,UAAU,OAAOA,KAAI,GAAG;AAC1B,oBAAQ,QAAQ,SAASA,OAAM,MAAM,GAAG,KAAK;AAAA,UAC/C;AAAA,QACF;AACA,eAAO;AAAA,MACT;AAEA,aAAO,UAAU;AAAA;AAAA;;;AC7BjB;AAAA;AAAA,UAAI,aAAa;AAAjB,UACI,QAAQ;AAWZ,eAAS,SAAS,QAAQ,OAAO;AAC/B,eAAO,WAAW,QAAQ,OAAO,SAAS,OAAOC,OAAM;AACrD,iBAAO,MAAM,QAAQA,KAAI;AAAA,QAC3B,CAAC;AAAA,MACH;AAEA,aAAO,UAAU;AAAA;AAAA;;;AClBjB;AAAA;AAAA,UAAIC,UAAS;AAAb,UACI,cAAc;AADlB,UAEIC,WAAU;AAGd,UAAI,mBAAmBD,UAASA,QAAO,qBAAqB;AAS5D,eAAS,cAAc,OAAO;AAC5B,eAAOC,SAAQ,KAAK,KAAK,YAAY,KAAK,KACxC,CAAC,EAAE,oBAAoB,SAAS,MAAM,gBAAgB;AAAA,MAC1D;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACnBjB;AAAA;AAAA,UAAI,YAAY;AAAhB,UACI,gBAAgB;AAapB,eAAS,YAAY,OAAO,OAAO,WAAW,UAAU,QAAQ;AAC9D,YAAIC,SAAQ,IACRC,UAAS,MAAM;AAEnB,sBAAc,YAAY;AAC1B,mBAAW,SAAS,CAAC;AAErB,eAAO,EAAED,SAAQC,SAAQ;AACvB,cAAI,QAAQ,MAAMD,MAAK;AACvB,cAAI,QAAQ,KAAK,UAAU,KAAK,GAAG;AACjC,gBAAI,QAAQ,GAAG;AAEb,0BAAY,OAAO,QAAQ,GAAG,WAAW,UAAU,MAAM;AAAA,YAC3D,OAAO;AACL,wBAAU,QAAQ,KAAK;AAAA,YACzB;AAAA,UACF,WAAW,CAAC,UAAU;AACpB,mBAAO,OAAO,MAAM,IAAI;AAAA,UAC1B;AAAA,QACF;AACA,eAAO;AAAA,MACT;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACrCjB;AAAA;AAAA,UAAI,cAAc;AAgBlB,eAAS,QAAQ,OAAO;AACtB,YAAIE,UAAS,SAAS,OAAO,IAAI,MAAM;AACvC,eAAOA,UAAS,YAAY,OAAO,CAAC,IAAI,CAAC;AAAA,MAC3C;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACrBjB;AAAA;AAAA,UAAI,UAAU;AAAd,UACI,WAAW;AADf,UAEI,cAAc;AASlB,eAAS,SAAS,MAAM;AACtB,eAAO,YAAY,SAAS,MAAM,QAAW,OAAO,GAAG,OAAO,EAAE;AAAA,MAClE;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACfjB;AAAA;AAAA,UAAI,WAAW;AAAf,UACI,WAAW;AAmBf,UAAI,OAAO,SAAS,SAAS,QAAQ,OAAO;AAC1C,eAAO,UAAU,OAAO,CAAC,IAAI,SAAS,QAAQ,KAAK;AAAA,MACrD,CAAC;AAED,aAAO,UAAU;AAAA;AAAA;;;ACxBjB;AAAA;AAAA,UAAI,WAAW;AAAf,UACI,SAAS;AADb,UAEI,cAAc;AAFlB,UAGIC,WAAU;AAHd,UAII,cAAc;AAJlB,UAKI,WAAW;AALf,UAMI,cAAc;AANlB,UAOI,eAAe;AAGnB,UAAI,SAAS;AAAb,UACI,SAAS;AAGb,UAAI,cAAc,OAAO;AAGzB,UAAIC,kBAAiB,YAAY;AAmCjC,eAAS,QAAQ,OAAO;AACtB,YAAI,SAAS,MAAM;AACjB,iBAAO;AAAA,QACT;AACA,YAAI,YAAY,KAAK,MAChBD,SAAQ,KAAK,KAAK,OAAO,SAAS,YAAY,OAAO,MAAM,UAAU,cACpE,SAAS,KAAK,KAAK,aAAa,KAAK,KAAK,YAAY,KAAK,IAAI;AACnE,iBAAO,CAAC,MAAM;AAAA,QAChB;AACA,YAAI,MAAM,OAAO,KAAK;AACtB,YAAI,OAAO,UAAU,OAAO,QAAQ;AAClC,iBAAO,CAAC,MAAM;AAAA,QAChB;AACA,YAAI,YAAY,KAAK,GAAG;AACtB,iBAAO,CAAC,SAAS,KAAK,EAAE;AAAA,QAC1B;AACA,iBAAS,OAAO,OAAO;AACrB,cAAIC,gBAAe,KAAK,OAAO,GAAG,GAAG;AACnC,mBAAO;AAAA,UACT;AAAA,QACF;AACA,eAAO;AAAA,MACT;AAEA,aAAO,UAAU;AAAA;AAAA;;;AC5EjB;AAAA;AACA,UAAI,aAAa,KAAK;AAAtB,UACI,YAAY,KAAK;AAarB,eAAS,UAAU,OAAO,KAAK,MAAM,WAAW;AAC9C,YAAIC,SAAQ,IACRC,UAAS,UAAU,YAAY,MAAM,UAAU,QAAQ,EAAE,GAAG,CAAC,GAC7D,SAAS,MAAMA,OAAM;AAEzB,eAAOA,WAAU;AACf,iBAAO,YAAYA,UAAS,EAAED,MAAK,IAAI;AACvC,mBAAS;AAAA,QACX;AACA,eAAO;AAAA,MACT;AAEA,aAAO,UAAU;AAAA;AAAA;;;AC3BjB;AAAA;AAAA,UAAI,YAAY;AAAhB,UACI,iBAAiB;AADrB,UAEI,WAAW;AASf,eAAS,YAAY,WAAW;AAC9B,eAAO,SAAS,OAAO,KAAK,MAAM;AAChC,cAAI,QAAQ,OAAO,QAAQ,YAAY,eAAe,OAAO,KAAK,IAAI,GAAG;AACvE,kBAAM,OAAO;AAAA,UACf;AAEA,kBAAQ,SAAS,KAAK;AACtB,cAAI,QAAQ,QAAW;AACrB,kBAAM;AACN,oBAAQ;AAAA,UACV,OAAO;AACL,kBAAM,SAAS,GAAG;AAAA,UACpB;AACA,iBAAO,SAAS,SAAa,QAAQ,MAAM,IAAI,KAAM,SAAS,IAAI;AAClE,iBAAO,UAAU,OAAO,KAAK,MAAM,SAAS;AAAA,QAC9C;AAAA,MACF;AAEA,aAAO,UAAU;AAAA;AAAA;;;AC7BjB;AAAA;AAAA,UAAI,cAAc;AA2ClB,UAAIE,SAAQ,YAAY;AAExB,aAAO,UAAUA;AAAA;AAAA;;;AC7CjB;AAAA;AAAA,UAAI,cAAc;AAWlB,eAAS,cAAc,OAAO,OAAO;AACnC,YAAIC,UAAS,SAAS,OAAO,IAAI,MAAM;AACvC,eAAO,CAAC,CAACA,WAAU,YAAY,OAAO,OAAO,CAAC,IAAI;AAAA,MACpD;AAEA,aAAO,UAAU;AAAA;AAAA;;;AChBjB;AAAA;AASA,eAAS,kBAAkB,OAAO,OAAO,YAAY;AACnD,YAAIC,SAAQ,IACRC,UAAS,SAAS,OAAO,IAAI,MAAM;AAEvC,eAAO,EAAED,SAAQC,SAAQ;AACvB,cAAI,WAAW,OAAO,MAAMD,MAAK,CAAC,GAAG;AACnC,mBAAO;AAAA,UACT;AAAA,QACF;AACA,eAAO;AAAA,MACT;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACrBjB;AAAA;AAAA,UAAI,WAAW;AAAf,UACI,gBAAgB;AADpB,UAEI,oBAAoB;AAFxB,UAGI,WAAW;AAHf,UAII,YAAY;AAJhB,UAKI,WAAW;AAGf,UAAI,mBAAmB;AAavB,eAAS,eAAe,OAAO,QAAQ,UAAU,YAAY;AAC3D,YAAIE,SAAQ,IACR,WAAW,eACX,WAAW,MACXC,UAAS,MAAM,QACf,SAAS,CAAC,GACV,eAAe,OAAO;AAE1B,YAAI,CAACA,SAAQ;AACX,iBAAO;AAAA,QACT;AACA,YAAI,UAAU;AACZ,mBAAS,SAAS,QAAQ,UAAU,QAAQ,CAAC;AAAA,QAC/C;AACA,YAAI,YAAY;AACd,qBAAW;AACX,qBAAW;AAAA,QACb,WACS,OAAO,UAAU,kBAAkB;AAC1C,qBAAW;AACX,qBAAW;AACX,mBAAS,IAAI,SAAS,MAAM;AAAA,QAC9B;AACA;AACA,iBAAO,EAAED,SAAQC,SAAQ;AACvB,gBAAI,QAAQ,MAAMD,MAAK,GACnB,WAAW,YAAY,OAAO,QAAQ,SAAS,KAAK;AAExD,oBAAS,cAAc,UAAU,IAAK,QAAQ;AAC9C,gBAAI,YAAY,aAAa,UAAU;AACrC,kBAAI,cAAc;AAClB,qBAAO,eAAe;AACpB,oBAAI,OAAO,WAAW,MAAM,UAAU;AACpC,2BAAS;AAAA,gBACX;AAAA,cACF;AACA,qBAAO,KAAK,KAAK;AAAA,YACnB,WACS,CAAC,SAAS,QAAQ,UAAU,UAAU,GAAG;AAChD,qBAAO,KAAK,KAAK;AAAA,YACnB;AAAA,UACF;AACA,eAAO;AAAA,MACT;AAEA,aAAO,UAAU;AAAA;AAAA;;;AClEjB;AAAA;AAAA,UAAI,cAAc;AAAlB,UACI,eAAe;AA2BnB,eAAS,kBAAkB,OAAO;AAChC,eAAO,aAAa,KAAK,KAAK,YAAY,KAAK;AAAA,MACjD;AAEA,aAAO,UAAU;AAAA;AAAA;;;AChCjB;AAAA;AAAA,UAAI,iBAAiB;AAArB,UACI,WAAW;AADf,UAEI,oBAAoB;AAsBxB,UAAI,UAAU,SAAS,SAAS,OAAO,QAAQ;AAC7C,eAAO,kBAAkB,KAAK,IAC1B,eAAe,OAAO,MAAM,IAC5B,CAAC;AAAA,MACP,CAAC;AAED,aAAO,UAAU;AAAA;AAAA;;;AC9BjB;AAAA;AAAA,UAAI,iBAAiB;AAArB,UACI,cAAc;AADlB,UAEI,WAAW;AAFf,UAGI,oBAAoB;AAuBxB,UAAI,aAAa,SAAS,SAAS,OAAO,QAAQ;AAChD,eAAO,kBAAkB,KAAK,IAC1B,eAAe,OAAO,YAAY,QAAQ,GAAG,mBAAmB,IAAI,CAAC,IACrE,CAAC;AAAA,MACP,CAAC;AAED,aAAO,UAAU;AAAA;AAAA;;;AChCjB;AAAA;AAYA,eAASE,QAAO;AAAA,MAEhB;AAEA,aAAO,UAAUA;AAAA;AAAA;;;AChBjB;AAAA;AAAA,UAAIC,OAAM;AAAV,UACIC,QAAO;AADX,UAEI,aAAa;AAGjB,UAAI,WAAW,IAAI;AASnB,UAAI,YAAY,EAAED,QAAQ,IAAI,WAAW,IAAIA,KAAI,CAAC,EAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAM,YAAYC,QAAO,SAAS,QAAQ;AAClG,eAAO,IAAID,KAAI,MAAM;AAAA,MACvB;AAEA,aAAO,UAAU;AAAA;AAAA;;;AClBjB;AAAA;AAAA,UAAI,WAAW;AAAf,UACI,gBAAgB;AADpB,UAEI,oBAAoB;AAFxB,UAGI,WAAW;AAHf,UAII,YAAY;AAJhB,UAKI,aAAa;AAGjB,UAAI,mBAAmB;AAWvB,eAAS,SAAS,OAAO,UAAU,YAAY;AAC7C,YAAIE,SAAQ,IACR,WAAW,eACXC,UAAS,MAAM,QACf,WAAW,MACX,SAAS,CAAC,GACV,OAAO;AAEX,YAAI,YAAY;AACd,qBAAW;AACX,qBAAW;AAAA,QACb,WACSA,WAAU,kBAAkB;AACnC,cAAI,MAAM,WAAW,OAAO,UAAU,KAAK;AAC3C,cAAI,KAAK;AACP,mBAAO,WAAW,GAAG;AAAA,UACvB;AACA,qBAAW;AACX,qBAAW;AACX,iBAAO,IAAI;AAAA,QACb,OACK;AACH,iBAAO,WAAW,CAAC,IAAI;AAAA,QACzB;AACA;AACA,iBAAO,EAAED,SAAQC,SAAQ;AACvB,gBAAI,QAAQ,MAAMD,MAAK,GACnB,WAAW,WAAW,SAAS,KAAK,IAAI;AAE5C,oBAAS,cAAc,UAAU,IAAK,QAAQ;AAC9C,gBAAI,YAAY,aAAa,UAAU;AACrC,kBAAI,YAAY,KAAK;AACrB,qBAAO,aAAa;AAClB,oBAAI,KAAK,SAAS,MAAM,UAAU;AAChC,2BAAS;AAAA,gBACX;AAAA,cACF;AACA,kBAAI,UAAU;AACZ,qBAAK,KAAK,QAAQ;AAAA,cACpB;AACA,qBAAO,KAAK,KAAK;AAAA,YACnB,WACS,CAAC,SAAS,MAAM,UAAU,UAAU,GAAG;AAC9C,kBAAI,SAAS,QAAQ;AACnB,qBAAK,KAAK,QAAQ;AAAA,cACpB;AACA,qBAAO,KAAK,KAAK;AAAA,YACnB;AAAA,UACF;AACA,eAAO;AAAA,MACT;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACvEjB;AAAA;AAAA,UAAI,WAAW;AAoBf,eAAS,KAAK,OAAO;AACnB,eAAQ,SAAS,MAAM,SAAU,SAAS,KAAK,IAAI,CAAC;AAAA,MACtD;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACxBjB;AAAA;AACA,UAAI,kBAAkB;AAsBtB,eAAS,OAAO,WAAW;AACzB,YAAI,OAAO,aAAa,YAAY;AAClC,gBAAM,IAAI,UAAU,eAAe;AAAA,QACrC;AACA,eAAO,WAAW;AAChB,cAAI,OAAO;AACX,kBAAQ,KAAK,QAAQ;AAAA,YACnB,KAAK;AAAG,qBAAO,CAAC,UAAU,KAAK,IAAI;AAAA,YACnC,KAAK;AAAG,qBAAO,CAAC,UAAU,KAAK,MAAM,KAAK,CAAC,CAAC;AAAA,YAC5C,KAAK;AAAG,qBAAO,CAAC,UAAU,KAAK,MAAM,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;AAAA,YACrD,KAAK;AAAG,qBAAO,CAAC,UAAU,KAAK,MAAM,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;AAAA,UAChE;AACA,iBAAO,CAAC,UAAU,MAAM,MAAM,IAAI;AAAA,QACpC;AAAA,MACF;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACvCjB;AAAA;AAAA,UAAI,YAAY;AAAhB,UACI,eAAe;AADnB,UAEI,aAAa;AAFjB,UAGI,YAAY;AAGhB,UAAI,mBAAmB,OAAO;AAS9B,UAAI,eAAe,CAAC,mBAAmB,YAAY,SAAS,QAAQ;AAClE,YAAI,SAAS,CAAC;AACd,eAAO,QAAQ;AACb,oBAAU,QAAQ,WAAW,MAAM,CAAC;AACpC,mBAAS,aAAa,MAAM;AAAA,QAC9B;AACA,eAAO;AAAA,MACT;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACxBjB;AAAA;AAAA,UAAI,iBAAiB;AAArB,UACI,eAAe;AADnB,UAEI,SAAS;AAUb,eAAS,aAAa,QAAQ;AAC5B,eAAO,eAAe,QAAQ,QAAQ,YAAY;AAAA,MACpD;AAEA,aAAO,UAAU;AAAA;AAAA;;;AChBjB;AAAA;AAAA,UAAI,WAAW;AAAf,UACI,eAAe;AADnB,UAEI,aAAa;AAFjB,UAGI,eAAe;AAoBnB,eAAS,OAAO,QAAQ,WAAW;AACjC,YAAI,UAAU,MAAM;AAClB,iBAAO,CAAC;AAAA,QACV;AACA,YAAI,QAAQ,SAAS,aAAa,MAAM,GAAG,SAAS,MAAM;AACxD,iBAAO,CAAC,IAAI;AAAA,QACd,CAAC;AACD,oBAAY,aAAa,SAAS;AAClC,eAAO,WAAW,QAAQ,OAAO,SAAS,OAAOE,OAAM;AACrD,iBAAO,UAAU,OAAOA,MAAK,CAAC,CAAC;AAAA,QACjC,CAAC;AAAA,MACH;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACpCjB;AAAA;AAAA,UAAI,eAAe;AAAnB,UACI,SAAS;AADb,UAEI,SAAS;AAsBb,eAAS,OAAO,QAAQ,WAAW;AACjC,eAAO,OAAO,QAAQ,OAAO,aAAa,SAAS,CAAC,CAAC;AAAA,MACvD;AAEA,aAAO,UAAU;AAAA;AAAA;;;AC5BjB;AAAA;AAAA,UAAI,aAAa;AAajB,eAAS,aAAa,QAAQ,QAAQ,UAAU,aAAa;AAC3D,mBAAW,QAAQ,SAAS,OAAO,KAAKC,SAAQ;AAC9C,iBAAO,aAAa,SAAS,KAAK,GAAG,KAAKA,OAAM;AAAA,QAClD,CAAC;AACD,eAAO;AAAA,MACT;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACpBjB;AAAA;AAAA,UAAI,eAAe;AAUnB,eAAS,eAAe,QAAQ,YAAY;AAC1C,eAAO,SAAS,QAAQ,UAAU;AAChC,iBAAO,aAAa,QAAQ,QAAQ,WAAW,QAAQ,GAAG,CAAC,CAAC;AAAA,QAC9D;AAAA,MACF;AAEA,aAAO,UAAU;AAAA;AAAA;;;AChBjB;AAAA;AAAA,UAAI,WAAW;AAAf,UACI,iBAAiB;AADrB,UAEIC,YAAW;AAGf,UAAI,cAAc,OAAO;AAOzB,UAAI,uBAAuB,YAAY;AAoBvC,UAAI,SAAS,eAAe,SAAS,QAAQ,OAAO,KAAK;AACvD,YAAI,SAAS,QACT,OAAO,MAAM,YAAY,YAAY;AACvC,kBAAQ,qBAAqB,KAAK,KAAK;AAAA,QACzC;AAEA,eAAO,KAAK,IAAI;AAAA,MAClB,GAAG,SAASA,SAAQ,CAAC;AAErB,aAAO,UAAU;AAAA;AAAA;;;ACzCjB;AAAA;AAAA,UAAI,aAAa;AAAjB,UACI,eAAe;AAGnB,UAAI,UAAU;AASd,eAAS,WAAW,OAAO;AACzB,eAAO,aAAa,KAAK,KAAK,WAAW,KAAK,KAAK;AAAA,MACrD;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACjBjB,MAAAC,kBAAA;AAAA;AAAA,UAAI,aAAa;AAAjB,UACI,YAAY;AADhB,UAEI,WAAW;AAGf,UAAI,aAAa,YAAY,SAAS;AAmBtC,UAAI,SAAS,aAAa,UAAU,UAAU,IAAI;AAElD,aAAO,UAAU;AAAA;AAAA;;;AC1BjB;AAAA;AAAA,UAAI,KAAK;AAWT,eAAS,eAAe,OAAO,UAAU;AACvC,YAAIC,SAAQ,IACRC,UAAS,MAAM,QACf,WAAW,GACX,SAAS,CAAC;AAEd,eAAO,EAAED,SAAQC,SAAQ;AACvB,cAAI,QAAQ,MAAMD,MAAK,GACnB,WAAW,WAAW,SAAS,KAAK,IAAI;AAE5C,cAAI,CAACA,UAAS,CAAC,GAAG,UAAU,IAAI,GAAG;AACjC,gBAAI,OAAO;AACX,mBAAO,UAAU,IAAI,UAAU,IAAI,IAAI;AAAA,UACzC;AAAA,QACF;AACA,eAAO;AAAA,MACT;AAEA,aAAO,UAAU;AAAA;AAAA;;;AC7BjB;AAAA;AAAA,UAAI,iBAAiB;AAiBrB,eAAS,WAAW,OAAO;AACzB,eAAQ,SAAS,MAAM,SACnB,eAAe,KAAK,IACpB,CAAC;AAAA,MACP;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACvBjB;AAAA;AAiBA,eAAS,YAAY,OAAO;AAC1B,eAAO,UAAU;AAAA,MACnB;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACrBjB,MAAAE,mBAAA;AAAA;AAAA,UAAI,cAAc;AA8BlB,eAASC,SAAQ,OAAO,OAAO;AAC7B,eAAO,YAAY,OAAO,KAAK;AAAA,MACjC;AAEA,aAAO,UAAUA;AAAA;AAAA;;;AClCjB;AAAA;AAcA,eAAS,KAAK,OAAO;AACnB,YAAIC,UAAS,SAAS,OAAO,IAAI,MAAM;AACvC,eAAOA,UAAS,MAAMA,UAAS,CAAC,IAAI;AAAA,MACtC;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACnBjB;AAAA;AAAA,UAAI,WAAW;AAWf,eAAS,SAAS,YAAY,WAAW;AACvC,YAAI;AAEJ,iBAAS,YAAY,SAAS,OAAOC,QAAOC,aAAY;AACtD,mBAAS,UAAU,OAAOD,QAAOC,WAAU;AAC3C,iBAAO,CAAC;AAAA,QACV,CAAC;AACD,eAAO,CAAC,CAAC;AAAA,MACX;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACrBjB;AAAA;AAAA,UAAI,YAAY;AAAhB,UACI,eAAe;AADnB,UAEI,WAAW;AAFf,UAGIC,WAAU;AAHd,UAII,iBAAiB;AAsCrB,eAAS,KAAK,YAAY,WAAW,OAAO;AAC1C,YAAI,OAAOA,SAAQ,UAAU,IAAI,YAAY;AAC7C,YAAI,SAAS,eAAe,YAAY,WAAW,KAAK,GAAG;AACzD,sBAAY;AAAA,QACd;AACA,eAAO,KAAK,YAAY,aAAa,WAAW,CAAC,CAAC;AAAA,MACpD;AAEA,aAAO,UAAU;AAAA;AAAA;;;AClDjB;AAAA;AAAA,UAAI,eAAe;AAAnB,UACI,WAAW;AAyBf,eAAS,OAAO,OAAO,UAAU;AAC/B,eAAQ,SAAS,MAAM,SAAU,SAAS,OAAO,aAAa,UAAU,CAAC,CAAC,IAAI,CAAC;AAAA,MACjF;AAEA,aAAO,UAAU;AAAA;AAAA;;;AC9BjB;AAAA;AAUA,eAAS,gBAAgB,OAAO,QAAQ,UAAU,aAAa;AAC7D,YAAIC,SAAQ,IACRC,UAAS,SAAS,OAAO,IAAI,MAAM;AAEvC,eAAO,EAAED,SAAQC,SAAQ;AACvB,cAAI,QAAQ,MAAMD,MAAK;AACvB,iBAAO,aAAa,OAAO,SAAS,KAAK,GAAG,KAAK;AAAA,QACnD;AACA,eAAO;AAAA,MACT;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACrBjB;AAAA;AAAA,UAAI,WAAW;AAaf,eAAS,eAAe,YAAY,QAAQ,UAAU,aAAa;AACjE,iBAAS,YAAY,SAAS,OAAO,KAAKE,aAAY;AACpD,iBAAO,aAAa,OAAO,SAAS,KAAK,GAAGA,WAAU;AAAA,QACxD,CAAC;AACD,eAAO;AAAA,MACT;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACpBjB;AAAA;AAAA,UAAI,kBAAkB;AAAtB,UACI,iBAAiB;AADrB,UAEI,eAAe;AAFnB,UAGIC,WAAU;AAUd,eAAS,iBAAiB,QAAQ,aAAa;AAC7C,eAAO,SAAS,YAAY,UAAU;AACpC,cAAI,OAAOA,SAAQ,UAAU,IAAI,kBAAkB,gBAC/C,cAAc,cAAc,YAAY,IAAI,CAAC;AAEjD,iBAAO,KAAK,YAAY,QAAQ,aAAa,UAAU,CAAC,GAAG,WAAW;AAAA,QACxE;AAAA,MACF;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACtBjB;AAAA;AAAA,UAAI,kBAAkB;AAAtB,UACI,mBAAmB;AAGvB,UAAI,cAAc,OAAO;AAGzB,UAAIC,kBAAiB,YAAY;AAyBjC,UAAI,UAAU,iBAAiB,SAAS,QAAQ,OAAO,KAAK;AAC1D,YAAIA,gBAAe,KAAK,QAAQ,GAAG,GAAG;AACpC,iBAAO,GAAG,EAAE,KAAK,KAAK;AAAA,QACxB,OAAO;AACL,0BAAgB,QAAQ,KAAK,CAAC,KAAK,CAAC;AAAA,QACtC;AAAA,MACF,CAAC;AAED,aAAO,UAAU;AAAA;AAAA;;;ACxCjB;AAAA;AAAA,UAAI,OAAO;AAkBX,UAAIC,OAAM,WAAW;AACnB,eAAO,KAAK,KAAK,IAAI;AAAA,MACvB;AAEA,aAAO,UAAUA;AAAA;AAAA;;;ACtBjB;AAAA;AAAA,UAAI,WAAW;AAAf,UACIC,OAAM;AADV,UAEI,WAAW;AAGf,UAAI,kBAAkB;AAGtB,UAAI,YAAY,KAAK;AAArB,UACI,YAAY,KAAK;AAwDrB,eAAS,SAAS,MAAM,MAAMC,UAAS;AACrC,YAAI,UACA,UACA,SACA,QACA,SACA,cACA,iBAAiB,GACjB,UAAU,OACV,SAAS,OACT,WAAW;AAEf,YAAI,OAAO,QAAQ,YAAY;AAC7B,gBAAM,IAAI,UAAU,eAAe;AAAA,QACrC;AACA,eAAO,SAAS,IAAI,KAAK;AACzB,YAAI,SAASA,QAAO,GAAG;AACrB,oBAAU,CAAC,CAACA,SAAQ;AACpB,mBAAS,aAAaA;AACtB,oBAAU,SAAS,UAAU,SAASA,SAAQ,OAAO,KAAK,GAAG,IAAI,IAAI;AACrE,qBAAW,cAAcA,WAAU,CAAC,CAACA,SAAQ,WAAW;AAAA,QAC1D;AAEA,iBAAS,WAAWC,OAAM;AACxB,cAAI,OAAO,UACP,UAAU;AAEd,qBAAW,WAAW;AACtB,2BAAiBA;AACjB,mBAAS,KAAK,MAAM,SAAS,IAAI;AACjC,iBAAO;AAAA,QACT;AAEA,iBAAS,YAAYA,OAAM;AAEzB,2BAAiBA;AAEjB,oBAAU,WAAW,cAAc,IAAI;AAEvC,iBAAO,UAAU,WAAWA,KAAI,IAAI;AAAA,QACtC;AAEA,iBAAS,cAAcA,OAAM;AAC3B,cAAI,oBAAoBA,QAAO,cAC3B,sBAAsBA,QAAO,gBAC7B,cAAc,OAAO;AAEzB,iBAAO,SACH,UAAU,aAAa,UAAU,mBAAmB,IACpD;AAAA,QACN;AAEA,iBAAS,aAAaA,OAAM;AAC1B,cAAI,oBAAoBA,QAAO,cAC3B,sBAAsBA,QAAO;AAKjC,iBAAQ,iBAAiB,UAAc,qBAAqB,QACzD,oBAAoB,KAAO,UAAU,uBAAuB;AAAA,QACjE;AAEA,iBAAS,eAAe;AACtB,cAAIA,QAAOF,KAAI;AACf,cAAI,aAAaE,KAAI,GAAG;AACtB,mBAAO,aAAaA,KAAI;AAAA,UAC1B;AAEA,oBAAU,WAAW,cAAc,cAAcA,KAAI,CAAC;AAAA,QACxD;AAEA,iBAAS,aAAaA,OAAM;AAC1B,oBAAU;AAIV,cAAI,YAAY,UAAU;AACxB,mBAAO,WAAWA,KAAI;AAAA,UACxB;AACA,qBAAW,WAAW;AACtB,iBAAO;AAAA,QACT;AAEA,iBAAS,SAAS;AAChB,cAAI,YAAY,QAAW;AACzB,yBAAa,OAAO;AAAA,UACtB;AACA,2BAAiB;AACjB,qBAAW,eAAe,WAAW,UAAU;AAAA,QACjD;AAEA,iBAAS,QAAQ;AACf,iBAAO,YAAY,SAAY,SAAS,aAAaF,KAAI,CAAC;AAAA,QAC5D;AAEA,iBAAS,YAAY;AACnB,cAAIE,QAAOF,KAAI,GACX,aAAa,aAAaE,KAAI;AAElC,qBAAW;AACX,qBAAW;AACX,yBAAeA;AAEf,cAAI,YAAY;AACd,gBAAI,YAAY,QAAW;AACzB,qBAAO,YAAY,YAAY;AAAA,YACjC;AACA,gBAAI,QAAQ;AAEV,2BAAa,OAAO;AACpB,wBAAU,WAAW,cAAc,IAAI;AACvC,qBAAO,WAAW,YAAY;AAAA,YAChC;AAAA,UACF;AACA,cAAI,YAAY,QAAW;AACzB,sBAAU,WAAW,cAAc,IAAI;AAAA,UACzC;AACA,iBAAO;AAAA,QACT;AACA,kBAAU,SAAS;AACnB,kBAAU,QAAQ;AAClB,eAAO;AAAA,MACT;AAEA,aAAO,UAAU;AAAA;AAAA;;;AC9LjB;AAAA;AAAA,UAAI,WAAW;AAAf,UACI,WAAW;AAGf,UAAI,kBAAkB;AA8CtB,eAAS,SAAS,MAAM,MAAMC,UAAS;AACrC,YAAI,UAAU,MACV,WAAW;AAEf,YAAI,OAAO,QAAQ,YAAY;AAC7B,gBAAM,IAAI,UAAU,eAAe;AAAA,QACrC;AACA,YAAI,SAASA,QAAO,GAAG;AACrB,oBAAU,aAAaA,WAAU,CAAC,CAACA,SAAQ,UAAU;AACrD,qBAAW,cAAcA,WAAU,CAAC,CAACA,SAAQ,WAAW;AAAA,QAC1D;AACA,eAAO,SAAS,MAAM,MAAM;AAAA,UAC1B,WAAW;AAAA,UACX,WAAW;AAAA,UACX,YAAY;AAAA,QACd,CAAC;AAAA,MACH;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACpEjB;AAAA;AAeA,eAAS,UAAU,OAAO;AACxB,YAAIC,SAAQ,IACRC,UAAS,SAAS,OAAO,IAAI,MAAM,QACnC,SAAS,CAAC;AAEd,eAAO,EAAED,SAAQC,SAAQ;AACvB,cAAI,OAAO,MAAMD,MAAK;AACtB,iBAAO,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC;AAAA,QAC1B;AACA,eAAO;AAAA,MACT;AAEA,aAAO,UAAU;AAAA;AAAA;;;AC3BjB;AAAA;AAAA,gBAAU,OAAO,UAAUE;AAC3B,cAAQ,eAAe;AAEvB,eAASA,WAAU,KAAK,UAAU,QAAQ,eAAe;AACvD,eAAO,KAAK,UAAU,KAAK,WAAW,UAAU,aAAa,GAAG,MAAM;AAAA,MACxE;AAEA,eAAS,WAAW,UAAU,eAAe;AAC3C,YAAI,QAAQ,CAAC,GAAG,OAAO,CAAC;AAExB,YAAI,iBAAiB;AAAM,0BAAgB,SAAS,KAAK,OAAO;AAC9D,gBAAI,MAAM,CAAC,MAAM;AAAO,qBAAO;AAC/B,mBAAO,iBAAiB,KAAK,MAAM,GAAG,MAAM,QAAQ,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI;AAAA,UAC1E;AAEA,eAAO,SAAS,KAAK,OAAO;AAC1B,cAAI,MAAM,SAAS,GAAG;AACpB,gBAAI,UAAU,MAAM,QAAQ,IAAI;AAChC,aAAC,UAAU,MAAM,OAAO,UAAU,CAAC,IAAI,MAAM,KAAK,IAAI;AACtD,aAAC,UAAU,KAAK,OAAO,SAAS,UAAU,GAAG,IAAI,KAAK,KAAK,GAAG;AAC9D,gBAAI,CAAC,MAAM,QAAQ,KAAK;AAAG,sBAAQ,cAAc,KAAK,MAAM,KAAK,KAAK;AAAA,UACxE;AACK,kBAAM,KAAK,KAAK;AAErB,iBAAO,YAAY,OAAO,QAAQ,SAAS,KAAK,MAAM,KAAK,KAAK;AAAA,QAClE;AAAA,MACF;AAAA;AAAA;;;AC1BA;AAAA;AAAA,OAAC,SAAUC,SAAQ,SAAS;AACxB,eAAO,YAAY,YAAY,OAAO,WAAW,cAAc,OAAO,UAAU,QAAQ,IACxF,OAAO,WAAW,cAAc,OAAO,MAAM,OAAO,OAAO,KAC1DA,UAASA,WAAU,MAAMA,QAAO,aAAa,QAAQ;AAAA,MAC1D,GAAE,SAAM,WAAY;AAAE;AAElB,YAAI,UAAU,KAAK,IAAI,GAAG,GAAG;AAC7B,YAAI,aAAa,IAAI,YAAY,GAAG;AAEpC,YAAI,aAAa,SAASC,YAAW,QAAQ;AACzC,cAAIC,KAAI,OAAO,UAAU;AACzB,cAAIA,KAAI,KAAK,OAAO,OAAO,CAAC,MAAM,UAAU;AAAE,kBAAM,IAAI,MAAM,qCAAqC;AAAA,UAAG;AAEtG,eAAK,SAAS;AAGd,cAAI,eAAe,KAAK,IAAI,IAAIA,KAAI,GAAG,CAAC;AACxC,eAAK,aAAa,IAAI,YAAY,eAAe,CAAC;AAClD,eAAK,aAAa,IAAI,WAAW,eAAe,CAAC;AAGjD,eAAK,YAAY,KAAK,KAAK,KAAK,KAAKA,EAAC,CAAC;AACvC,eAAK,YAAY,IAAI,YAAYA,EAAC;AAClC,eAAK,YAAY,IAAI,YAAYA,EAAC;AAClC,eAAK,WAAW,IAAI,YAAYA,EAAC;AACjC,eAAK,YAAY,IAAI,WAAW,KAAK,SAAS,EAAE,KAAK,EAAE;AAGvD,eAAK,OAAO,IAAI,YAAYA,EAAC;AAC7B,eAAK,SAAS,IAAI,aAAaA,EAAC;AAEhC,eAAK,OAAO;AAAA,QAChB;AAEA,mBAAW,OAAO,SAASC,MAAM,QAAQ,MAAM,MAAM;AAC7C,cAAK,SAAS;AAAS,mBAAO;AAC9B,cAAK,SAAS;AAAS,mBAAO;AAElC,cAAID,KAAI,OAAO;AACf,cAAI,SAAS,IAAI,aAAaA,KAAI,CAAC;AAEnC,mBAAS,IAAI,GAAG,IAAIA,IAAG,KAAK;AACxB,gBAAI,IAAI,OAAO,CAAC;AAChB,mBAAO,IAAI,CAAC,IAAI,KAAK,CAAC;AACtB,mBAAO,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC;AAAA,UAC9B;AAEA,iBAAO,IAAI,WAAW,MAAM;AAAA,QAChC;AAEA,mBAAW,UAAU,SAAS,SAAS,SAAU;AAC7C,cAAI,MAAO;AACP,cAAI,SAAS,IAAI;AACjB,cAAI,WAAW,IAAI;AACnB,cAAI,WAAW,IAAI;AACnB,cAAI,UAAU,IAAI;AAClB,cAAI,WAAW,IAAI;AACvB,cAAIA,KAAI,OAAO,UAAU;AAGzB,cAAI,OAAO;AACX,cAAI,OAAO;AACX,cAAI,OAAO;AACX,cAAI,OAAO;AAEX,mBAAS,IAAI,GAAG,IAAIA,IAAG,KAAK;AACxB,gBAAIE,KAAI,OAAO,IAAI,CAAC;AACpB,gBAAIC,KAAI,OAAO,IAAI,IAAI,CAAC;AACxB,gBAAID,KAAI,MAAM;AAAE,qBAAOA;AAAA,YAAG;AAC1B,gBAAIC,KAAI,MAAM;AAAE,qBAAOA;AAAA,YAAG;AAC1B,gBAAID,KAAI,MAAM;AAAE,qBAAOA;AAAA,YAAG;AAC1B,gBAAIC,KAAI,MAAM;AAAE,qBAAOA;AAAA,YAAG;AAC1B,iBAAK,KAAK,CAAC,IAAI;AAAA,UACnB;AACA,cAAI,MAAM,OAAO,QAAQ;AACzB,cAAI,MAAM,OAAO,QAAQ;AAEzB,cAAI,UAAU;AACd,cAAI,IAAI,IAAI;AAGZ,mBAAS,MAAM,GAAG,MAAMH,IAAG,OAAO;AAC9B,gBAAII,KAAI,KAAK,IAAI,IAAI,OAAO,IAAI,GAAG,GAAG,OAAO,IAAI,MAAM,CAAC,CAAC;AACzD,gBAAIA,KAAI,SAAS;AACb,mBAAK;AACL,wBAAUA;AAAA,YACd;AAAA,UACJ;AACA,cAAI,MAAM,OAAO,IAAI,EAAE;AACvB,cAAI,MAAM,OAAO,IAAI,KAAK,CAAC;AAE3B,oBAAU;AAGV,mBAAS,MAAM,GAAG,MAAMJ,IAAG,OAAO;AAC9B,gBAAI,QAAQ,IAAI;AAAE;AAAA,YAAU;AAC5B,gBAAI,MAAM,KAAK,KAAK,KAAK,OAAO,IAAI,GAAG,GAAG,OAAO,IAAI,MAAM,CAAC,CAAC;AAC7D,gBAAI,MAAM,WAAW,MAAM,GAAG;AAC1B,mBAAK;AACL,wBAAU;AAAA,YACd;AAAA,UACJ;AACA,cAAI,MAAM,OAAO,IAAI,EAAE;AACvB,cAAI,MAAM,OAAO,IAAI,KAAK,CAAC;AAE3B,cAAI,YAAY;AAGhB,mBAAS,MAAM,GAAG,MAAMA,IAAG,OAAO;AAC9B,gBAAI,QAAQ,MAAM,QAAQ,IAAI;AAAE;AAAA,YAAU;AAC1C,gBAAIK,KAAI,aAAa,KAAK,KAAK,KAAK,KAAK,OAAO,IAAI,GAAG,GAAG,OAAO,IAAI,MAAM,CAAC,CAAC;AAC7E,gBAAIA,KAAI,WAAW;AACf,mBAAK;AACL,0BAAYA;AAAA,YAChB;AAAA,UACJ;AACA,cAAI,MAAM,OAAO,IAAI,EAAE;AACvB,cAAI,MAAM,OAAO,IAAI,KAAK,CAAC;AAE3B,cAAI,cAAc,UAAU;AAGxB,qBAAS,MAAM,GAAG,MAAML,IAAG,OAAO;AAC9B,mBAAK,OAAO,GAAG,IAAK,OAAO,IAAI,GAAG,IAAI,OAAO,CAAC,KAAO,OAAO,IAAI,MAAM,CAAC,IAAI,OAAO,CAAC;AAAA,YACvF;AACA,sBAAU,KAAK,MAAM,KAAK,QAAQ,GAAGA,KAAI,CAAC;AAC1C,gBAAI,OAAO,IAAI,YAAYA,EAAC;AAC5B,gBAAI,IAAI;AACR,qBAAS,MAAM,GAAG,KAAK,WAAW,MAAMA,IAAG,OAAO;AAC9C,kBAAIM,OAAK,KAAK,KAAK,GAAG;AACtB,kBAAI,KAAK,OAAOA,IAAE,IAAI,IAAI;AACtB,qBAAK,GAAG,IAAIA;AACZ,qBAAK,KAAK,OAAOA,IAAE;AAAA,cACvB;AAAA,YACJ;AACA,iBAAK,OAAO,KAAK,SAAS,GAAG,CAAC;AAC9B,iBAAK,YAAY,IAAI,YAAY,CAAC;AAClC,iBAAK,YAAY,IAAI,YAAY,CAAC;AAClC;AAAA,UACJ;AAGA,cAAI,OAAO,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,GAAG;AACtC,gBAAI,MAAM;AACV,gBAAI,MAAM;AACV,gBAAI,MAAM;AACV,iBAAK;AACL,kBAAM;AACN,kBAAM;AACN,iBAAK;AACL,kBAAM;AACN,kBAAM;AAAA,UACV;AAEA,cAAI,SAAS,aAAa,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG;AACtD,eAAK,MAAM,OAAO;AAClB,eAAK,MAAM,OAAO;AAElB,mBAAS,MAAM,GAAG,MAAMN,IAAG,OAAO;AAC9B,iBAAK,OAAO,GAAG,IAAI,KAAK,OAAO,IAAI,GAAG,GAAG,OAAO,IAAI,MAAM,CAAC,GAAG,OAAO,GAAG,OAAO,CAAC;AAAA,UACpF;AAGA,oBAAU,KAAK,MAAM,KAAK,QAAQ,GAAGA,KAAI,CAAC;AAG1C,eAAK,aAAa;AAClB,cAAI,WAAW;AAEf,mBAAS,EAAE,IAAI,SAAS,EAAE,IAAI;AAC9B,mBAAS,EAAE,IAAI,SAAS,EAAE,IAAI;AAC9B,mBAAS,EAAE,IAAI,SAAS,EAAE,IAAI;AAE9B,kBAAQ,EAAE,IAAI;AACd,kBAAQ,EAAE,IAAI;AACd,kBAAQ,EAAE,IAAI;AAEd,mBAAS,KAAK,EAAE;AAChB,mBAAS,KAAK,SAAS,KAAK,GAAG,CAAC,IAAI;AACpC,mBAAS,KAAK,SAAS,KAAK,GAAG,CAAC,IAAI;AACpC,mBAAS,KAAK,SAAS,KAAK,GAAG,CAAC,IAAI;AAEpC,eAAK,eAAe;AACpB,eAAK,aAAa,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE;AAExC,mBAASO,KAAI,GAAG,KAAM,QAAS,KAAM,QAASA,KAAI,KAAK,KAAK,QAAQA,MAAK;AACrE,gBAAI,MAAM,KAAK,KAAKA,EAAC;AACrB,gBAAI,MAAM,OAAO,IAAI,GAAG;AACxB,gBAAI,MAAM,OAAO,IAAI,MAAM,CAAC;AAG5B,gBAAIA,KAAI,KAAK,KAAK,IAAI,MAAM,EAAE,KAAK,WAAW,KAAK,IAAI,MAAM,EAAE,KAAK,SAAS;AAAE;AAAA,YAAU;AACzF,iBAAK;AACL,iBAAK;AAGL,gBAAI,QAAQ,MAAM,QAAQ,MAAM,QAAQ,IAAI;AAAE;AAAA,YAAU;AAGxD,gBAAI,QAAQ;AACZ,qBAAS,MAAM,GAAG,MAAM,KAAK,SAAS,KAAK,GAAG,GAAG,MAAM,KAAK,WAAW,OAAO;AAC1E,sBAAQ,UAAU,MAAM,OAAO,KAAK,SAAS;AAC7C,kBAAI,UAAU,MAAM,UAAU,SAAS,KAAK,GAAG;AAAE;AAAA,cAAO;AAAA,YAC5D;AAEA,oBAAQ,SAAS,KAAK;AACtB,gBAAIC,KAAI,OAAOC,KAAK;AACpB,mBAAOA,KAAI,SAASD,EAAC,GAAG,CAAC,OAAO,KAAK,KAAK,OAAO,IAAIA,EAAC,GAAG,OAAO,IAAIA,KAAI,CAAC,GAAG,OAAO,IAAIC,EAAC,GAAG,OAAO,IAAIA,KAAI,CAAC,CAAC,GAAG;AAC3G,cAAAD,KAAIC;AACJ,kBAAID,OAAM,OAAO;AACb,gBAAAA,KAAI;AACJ;AAAA,cACJ;AAAA,YACJ;AACA,gBAAIA,OAAM,IAAI;AAAE;AAAA,YAAU;AAG1B,gBAAIE,KAAI,KAAK,aAAaF,IAAG,KAAK,SAASA,EAAC,GAAG,IAAI,IAAI,QAAQA,EAAC,CAAC;AAGjE,oBAAQ,GAAG,IAAI,KAAK,UAAUE,KAAI,CAAC;AACnC,oBAAQF,EAAC,IAAIE;AACb;AAGA,gBAAI,MAAM,SAASF,EAAC;AACpB,mBAAOC,KAAI,SAAS,GAAG,GAAG,OAAO,KAAK,KAAK,OAAO,IAAI,GAAG,GAAG,OAAO,IAAI,MAAM,CAAC,GAAG,OAAO,IAAIA,EAAC,GAAG,OAAO,IAAIA,KAAI,CAAC,CAAC,GAAG;AAChH,cAAAC,KAAI,KAAK,aAAa,KAAK,KAAKD,IAAG,QAAQ,GAAG,GAAG,IAAI,QAAQ,GAAG,CAAC;AACjE,sBAAQ,GAAG,IAAI,KAAK,UAAUC,KAAI,CAAC;AACnC,uBAAS,GAAG,IAAI;AAChB;AACA,oBAAMD;AAAA,YACV;AAGA,gBAAID,OAAM,OAAO;AACb,qBAAOC,KAAI,SAASD,EAAC,GAAG,OAAO,KAAK,KAAK,OAAO,IAAIC,EAAC,GAAG,OAAO,IAAIA,KAAI,CAAC,GAAG,OAAO,IAAID,EAAC,GAAG,OAAO,IAAIA,KAAI,CAAC,CAAC,GAAG;AAC1G,gBAAAE,KAAI,KAAK,aAAaD,IAAG,KAAKD,IAAG,IAAI,QAAQA,EAAC,GAAG,QAAQC,EAAC,CAAC;AAC3D,qBAAK,UAAUC,KAAI,CAAC;AACpB,wBAAQD,EAAC,IAAIC;AACb,yBAASF,EAAC,IAAIA;AACd;AACA,gBAAAA,KAAIC;AAAA,cACR;AAAA,YACJ;AAGA,iBAAK,aAAa,SAAS,GAAG,IAAID;AAClC,qBAASA,EAAC,IAAI,SAAS,GAAG,IAAI;AAC9B,qBAAS,GAAG,IAAI;AAGhB,qBAAS,KAAK,SAAS,KAAK,GAAG,CAAC,IAAI;AACpC,qBAAS,KAAK,SAAS,OAAO,IAAIA,EAAC,GAAG,OAAO,IAAIA,KAAI,CAAC,CAAC,CAAC,IAAIA;AAAA,UAChE;AAEA,eAAK,OAAO,IAAI,YAAY,QAAQ;AACpC,mBAAS,MAAM,GAAG,MAAM,KAAK,YAAY,MAAM,UAAU,OAAO;AAC5D,iBAAK,KAAK,GAAG,IAAI;AACjB,kBAAM,SAAS,GAAG;AAAA,UACtB;AAGA,eAAK,YAAY,KAAK,WAAW,SAAS,GAAG,KAAK,YAAY;AAC9D,eAAK,YAAY,KAAK,WAAW,SAAS,GAAG,KAAK,YAAY;AAAA,QAClE;AAEA,mBAAW,UAAU,WAAW,SAAS,SAAUN,IAAGC,IAAG;AACrD,iBAAO,KAAK,MAAM,YAAYD,KAAI,KAAK,KAAKC,KAAI,KAAK,GAAG,IAAI,KAAK,SAAS,IAAI,KAAK;AAAA,QACvF;AAEA,mBAAW,UAAU,YAAY,SAAS,UAAWQ,IAAG;AACpD,cAAI,MAAM;AACN,cAAI,YAAY,IAAI;AACpB,cAAI,YAAY,IAAI;AACpB,cAAI,SAAS,IAAI;AAErB,cAAI,IAAI;AACR,cAAI,KAAK;AAGT,iBAAO,MAAM;AACT,gBAAI,IAAI,UAAUA,EAAC;AAiBnB,gBAAI,KAAKA,KAAIA,KAAI;AACjB,iBAAK,MAAMA,KAAI,KAAK;AAEpB,gBAAI,MAAM,IAAI;AACV,kBAAI,MAAM,GAAG;AAAE;AAAA,cAAO;AACtB,cAAAA,KAAI,WAAW,EAAE,CAAC;AAClB;AAAA,YACJ;AAEA,gBAAIC,MAAK,IAAI,IAAI;AACjB,gBAAI,KAAK,MAAMD,KAAI,KAAK;AACxB,gBAAI,KAAKC,OAAM,IAAI,KAAK;AAExB,gBAAI,KAAK,UAAU,EAAE;AACrB,gBAAI,KAAK,UAAUD,EAAC;AACpB,gBAAI,KAAK,UAAU,EAAE;AACrB,gBAAI,KAAK,UAAU,EAAE;AAErB,gBAAI,UAAU;AAAA,cACV,OAAO,IAAI,EAAE;AAAA,cAAG,OAAO,IAAI,KAAK,CAAC;AAAA,cACjC,OAAO,IAAI,EAAE;AAAA,cAAG,OAAO,IAAI,KAAK,CAAC;AAAA,cACjC,OAAO,IAAI,EAAE;AAAA,cAAG,OAAO,IAAI,KAAK,CAAC;AAAA,cACjC,OAAO,IAAI,EAAE;AAAA,cAAG,OAAO,IAAI,KAAK,CAAC;AAAA,YAAC;AAEtC,gBAAI,SAAS;AACT,wBAAUA,EAAC,IAAI;AACf,wBAAU,CAAC,IAAI;AAEf,kBAAI,MAAM,UAAU,EAAE;AAGtB,kBAAI,QAAQ,IAAI;AACZ,oBAAIH,KAAI,KAAK;AACb,mBAAG;AACC,sBAAI,KAAK,SAASA,EAAC,MAAM,IAAI;AACzB,yBAAK,SAASA,EAAC,IAAIG;AACnB;AAAA,kBACJ;AACA,kBAAAH,KAAI,KAAK,UAAUA,EAAC;AAAA,gBACxB,SAASA,OAAM,KAAK;AAAA,cACxB;AACA,mBAAK,MAAMG,IAAG,GAAG;AACjB,mBAAK,MAAM,GAAG,UAAU,EAAE,CAAC;AAC3B,mBAAK,MAAM,IAAI,EAAE;AAEjB,kBAAI,KAAKC,OAAM,IAAI,KAAK;AAGxB,kBAAI,IAAI,WAAW,QAAQ;AACvB,2BAAW,GAAG,IAAI;AAAA,cACtB;AAAA,YACJ,OAAO;AACH,kBAAI,MAAM,GAAG;AAAE;AAAA,cAAO;AACtB,cAAAD,KAAI,WAAW,EAAE,CAAC;AAAA,YACtB;AAAA,UACJ;AAEA,iBAAO;AAAA,QACX;AAEA,mBAAW,UAAU,QAAQ,SAAS,MAAOA,IAAG,GAAG;AAC/C,eAAK,WAAWA,EAAC,IAAI;AACrB,cAAI,MAAM,IAAI;AAAE,iBAAK,WAAW,CAAC,IAAIA;AAAA,UAAG;AAAA,QAC5C;AAGA,mBAAW,UAAU,eAAe,SAAS,aAAc,IAAI,IAAI,IAAIA,IAAG,GAAGE,IAAG;AAC5E,cAAIH,KAAI,KAAK;AAEb,eAAK,WAAWA,EAAC,IAAI;AACrB,eAAK,WAAWA,KAAI,CAAC,IAAI;AACzB,eAAK,WAAWA,KAAI,CAAC,IAAI;AAEzB,eAAK,MAAMA,IAAGC,EAAC;AACf,eAAK,MAAMD,KAAI,GAAG,CAAC;AACnB,eAAK,MAAMA,KAAI,GAAGG,EAAC;AAEnB,eAAK,gBAAgB;AAErB,iBAAOH;AAAA,QACX;AAGA,iBAAS,YAAY,IAAI,IAAI;AACzB,cAAI,IAAI,MAAM,KAAK,IAAI,EAAE,IAAI,KAAK,IAAI,EAAE;AACxC,kBAAQ,KAAK,IAAI,IAAI,IAAI,IAAI,KAAK;AAAA,QACtC;AAEA,iBAAS,KAAK,IAAI,IAAI,IAAI,IAAI;AAC1B,cAAI,KAAK,KAAK;AACd,cAAI,KAAK,KAAK;AACd,iBAAO,KAAK,KAAK,KAAK;AAAA,QAC1B;AAGA,iBAAS,aAAa,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI;AAC1C,cAAI,KAAK,KAAK,OAAO,KAAK;AAC1B,cAAIL,MAAK,KAAK,OAAO,KAAK;AAC1B,iBAAO,KAAK,IAAI,IAAIA,EAAC,KAAK,wBAAyB,KAAK,IAAI,IAAIA,EAAC,IAAI,IAAIA,KAAI;AAAA,QACjF;AAGA,iBAAS,OAAO,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI;AACpC,cAAIS,QAAO,aAAa,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,KAC9C,aAAa,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,KACnC,aAAa,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE;AACnC,iBAAOA,QAAO;AAAA,QAClB;AAEA,iBAAS,SAAS,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI;AAC9C,cAAI,KAAK,KAAK;AACd,cAAI,KAAK,KAAK;AACd,cAAI,KAAK,KAAK;AACd,cAAI,KAAK,KAAK;AACd,cAAI,KAAK,KAAK;AACd,cAAI,KAAK,KAAK;AAEd,cAAI,KAAK,KAAK,KAAK,KAAK;AACxB,cAAI,KAAK,KAAK,KAAK,KAAK;AACxB,cAAI,KAAK,KAAK,KAAK,KAAK;AAExB,iBAAO,MAAM,KAAK,KAAK,KAAK,MACrB,MAAM,KAAK,KAAK,KAAK,MACrB,MAAM,KAAK,KAAK,KAAK,MAAM;AAAA,QACtC;AAEA,iBAAS,aAAa,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI;AAC1C,cAAI,KAAK,KAAK;AACd,cAAI,KAAK,KAAK;AACd,cAAI,KAAK,KAAK;AACd,cAAI,KAAK,KAAK;AAEd,cAAI,KAAK,KAAK,KAAK,KAAK;AACxB,cAAI,KAAK,KAAK,KAAK,KAAK;AACxB,cAAIV,KAAI,OAAO,KAAK,KAAK,KAAK;AAE9B,cAAIF,MAAK,KAAK,KAAK,KAAK,MAAME;AAC9B,cAAID,MAAK,KAAK,KAAK,KAAK,MAAMC;AAE9B,iBAAOF,KAAIA,KAAIC,KAAIA;AAAA,QACvB;AAEA,iBAAS,aAAa,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI;AAC1C,cAAI,KAAK,KAAK;AACd,cAAI,KAAK,KAAK;AACd,cAAI,KAAK,KAAK;AACd,cAAI,KAAK,KAAK;AAEd,cAAI,KAAK,KAAK,KAAK,KAAK;AACxB,cAAI,KAAK,KAAK,KAAK,KAAK;AACxB,cAAIC,KAAI,OAAO,KAAK,KAAK,KAAK;AAE9B,cAAIF,KAAI,MAAM,KAAK,KAAK,KAAK,MAAME;AACnC,cAAID,KAAI,MAAM,KAAK,KAAK,KAAK,MAAMC;AAEnC,iBAAO,EAAC,GAAGF,IAAG,GAAGC,GAAC;AAAA,QACtB;AAEA,iBAAS,UAAU,KAAK,OAAO,MAAM,OAAO;AACxC,cAAI,QAAQ,QAAQ,IAAI;AACpB,qBAAS,IAAI,OAAO,GAAG,KAAK,OAAO,KAAK;AACpC,kBAAI,OAAO,IAAI,CAAC;AAChB,kBAAI,WAAW,MAAM,IAAI;AACzB,kBAAI,IAAI,IAAI;AACZ,qBAAO,KAAK,QAAQ,MAAM,IAAI,CAAC,CAAC,IAAI,UAAU;AAAE,oBAAI,IAAI,CAAC,IAAI,IAAI,GAAG;AAAA,cAAG;AACvE,kBAAI,IAAI,CAAC,IAAI;AAAA,YACjB;AAAA,UACJ,OAAO;AACH,gBAAI,SAAU,OAAO,SAAU;AAC/B,gBAAI,MAAM,OAAO;AACjB,gBAAI,MAAM;AACV,YAAAY,MAAK,KAAK,QAAQ,GAAG;AACrB,gBAAI,MAAM,IAAI,IAAI,CAAC,IAAI,MAAM,IAAI,KAAK,CAAC,GAAG;AAAE,cAAAA,MAAK,KAAK,MAAM,KAAK;AAAA,YAAG;AACpE,gBAAI,MAAM,IAAI,GAAG,CAAC,IAAI,MAAM,IAAI,KAAK,CAAC,GAAG;AAAE,cAAAA,MAAK,KAAK,KAAK,KAAK;AAAA,YAAG;AAClE,gBAAI,MAAM,IAAI,IAAI,CAAC,IAAI,MAAM,IAAI,GAAG,CAAC,GAAG;AAAE,cAAAA,MAAK,KAAK,MAAM,GAAG;AAAA,YAAG;AAEhE,gBAAI,SAAS,IAAI,GAAG;AACpB,gBAAI,aAAa,MAAM,MAAM;AAC7B,mBAAO,MAAM;AACT,iBAAG;AAAE;AAAA,cAAO,SAAS,MAAM,IAAI,GAAG,CAAC,IAAI;AACvC,iBAAG;AAAE;AAAA,cAAO,SAAS,MAAM,IAAI,GAAG,CAAC,IAAI;AACvC,kBAAI,MAAM,KAAK;AAAE;AAAA,cAAO;AACxB,cAAAA,MAAK,KAAK,KAAK,GAAG;AAAA,YACtB;AACA,gBAAI,OAAO,CAAC,IAAI,IAAI,GAAG;AACvB,gBAAI,GAAG,IAAI;AAEX,gBAAI,QAAQ,MAAM,KAAK,MAAM,MAAM;AAC/B,wBAAU,KAAK,OAAO,KAAK,KAAK;AAChC,wBAAU,KAAK,OAAO,MAAM,MAAM,CAAC;AAAA,YACvC,OAAO;AACH,wBAAU,KAAK,OAAO,MAAM,MAAM,CAAC;AACnC,wBAAU,KAAK,OAAO,KAAK,KAAK;AAAA,YACpC;AAAA,UACJ;AAAA,QACJ;AAEA,iBAASA,MAAK,KAAK,GAAG,GAAG;AACrB,cAAI,MAAM,IAAI,CAAC;AACf,cAAI,CAAC,IAAI,IAAI,CAAC;AACd,cAAI,CAAC,IAAI;AAAA,QACb;AAEA,iBAAS,YAAY,GAAG;AACpB,iBAAO,EAAE,CAAC;AAAA,QACd;AACA,iBAAS,YAAY,GAAG;AACpB,iBAAO,EAAE,CAAC;AAAA,QACd;AAEA,eAAO;AAAA,MAEX,CAAC;AAAA;AAAA;;;AC/fD,MAAAC,eAAA;AAAA;AAAA;AAEA,cAAQ,aAAa;AACrB,cAAQ,SAAS,IAAI;AAErB,UAAI,cAAc,uBAAuB,oBAAmC;AAE5E,eAAS,uBAAuB,KAAK;AAAE,eAAO,OAAO,IAAI,aAAa,MAAM,EAAE,WAAW,IAAI;AAAA,MAAG;AAGhG,eAAS,OAAO,GAAG;AACjB,eAAO,EAAE,CAAC;AAAA,MACZ;AAEA,eAAS,OAAO,GAAG;AACjB,eAAO,EAAE,CAAC;AAAA,MACZ;AAGA,eAAS,UAAUC,IAAG;AACpB,YAAI,YAAYA,GAAE,WACd,SAASA,GAAE;AAEf,iBAAS,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAK,GAAG;AAC5C,cAAIC,KAAI,IAAI,UAAU,CAAC;AACvB,cAAI,IAAI,IAAI,UAAU,IAAI,CAAC;AAC3B,cAAIC,KAAI,IAAI,UAAU,IAAI,CAAC;AAC3B,cAAIC,UAAS,OAAOD,EAAC,IAAI,OAAOD,EAAC,MAAM,OAAO,IAAI,CAAC,IAAI,OAAOA,KAAI,CAAC,MAAM,OAAO,CAAC,IAAI,OAAOA,EAAC,MAAM,OAAOC,KAAI,CAAC,IAAI,OAAOD,KAAI,CAAC;AAE/H,cAAIE,SAAQ,OAAO;AACjB,mBAAO;AAAA,UACT;AAAA,QACF;AAEA,eAAO;AAAA,MACT;AAEA,eAAS,OAAOC,IAAGC,IAAGC,IAAG;AACvB,eAAO,CAACF,KAAI,KAAK,IAAIA,KAAIC,EAAC,IAAIC,IAAGD,KAAI,KAAK,IAAID,KAAIC,EAAC,IAAIC,EAAC;AAAA,MAC1D;AAGA,eAAS,UAAU,QAAQ,IAAI,IAAI,MAAM;AACvC,YAAIC,KAAI,OAAO;AACf,YAAI,QAAQ,IAAI,aAAaA,KAAI,CAAC;AAElC,iBAAS,IAAI,GAAG,IAAIA,IAAG,EAAE,GAAG;AAC1B,cAAI,IAAI,OAAO,CAAC;AAChB,gBAAM,IAAI,CAAC,IAAI,GAAG,KAAK,MAAM,GAAG,GAAG,MAAM;AACzC,gBAAM,IAAI,IAAI,CAAC,IAAI,GAAG,KAAK,MAAM,GAAG,GAAG,MAAM;AAAA,QAC/C;AAEA,eAAO;AAAA,MACT;AAEA,UAAIC,YAEJ,2BAAY;AACV,iBAASA,UAAS,QAAQ;AACxB,cAAI,aAAa,IAAI,YAAY,SAAS,EAAE,MAAM;AAClD,eAAK,UAAU,IAAI,WAAW,OAAO,SAAS,CAAC;AAC/C,eAAK,aAAa,IAAI,WAAW,OAAO,SAAS,CAAC;AAClD,eAAK,SAAS,WAAW;AAEzB,eAAK,MAAM,UAAU;AAAA,QACvB;AAGA,YAAI,SAASA,UAAS;AAEtB,eAAO,QAAQ,SAAS,MAAM,YAAY;AACxC,cAAIR,KAAI;AACR,cAAI,SAAS,KAAK;AAGlB,cAAIA,GAAE,QAAQA,GAAE,KAAK,SAAS,KAAK,UAAUA,EAAC,GAAG;AAC/C,iBAAK,YAAY,WAAW,KAAK;AAAA,cAC/B,QAAQ,OAAO,SAAS;AAAA,YAC1B,GAAG,SAAU,GAAGS,IAAG;AACjB,qBAAOA;AAAA,YACT,CAAC,EAAE,KAAK,SAAUA,IAAG,GAAG;AACtB,qBAAO,OAAO,IAAIA,EAAC,IAAI,OAAO,IAAI,CAAC,KAAK,OAAO,IAAIA,KAAI,CAAC,IAAI,OAAO,IAAI,IAAI,CAAC;AAAA,YAC9E,CAAC;AAED,gBAAIC,KAAI,KAAK,UAAU,CAAC;AACxB,gBAAI,IAAI,KAAK,UAAU,KAAK,UAAU,SAAS,CAAC;AAChD,gBAAI,SAAS,CAAC,OAAO,IAAIA,EAAC,GAAG,OAAO,IAAIA,KAAI,CAAC,GAAG,OAAO,IAAI,CAAC,GAAG,OAAO,IAAI,IAAI,CAAC,CAAC;AAChF,gBAAIJ,KAAI;AAAA,YACR,KAAK,KAAK,KAAK,IAAI,OAAO,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,KAAK,IAAI,OAAO,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC;AAEjF,qBAAS,IAAI,GAAGC,KAAI,OAAO,SAAS,GAAG,IAAIA,IAAG,EAAE,GAAG;AACjD,kBAAI,IAAI,OAAO,OAAO,IAAI,CAAC,GAAG,OAAO,IAAI,IAAI,CAAC,GAAGD,EAAC;AAClD,qBAAO,IAAI,CAAC,IAAI,EAAE,CAAC;AACnB,qBAAO,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;AAAA,YACzB;AAEA,yBAAa,IAAI,YAAY,SAAS,EAAE,MAAM;AAAA,UAChD;AAEA,cAAI,YAAY,KAAK,YAAY,WAAW;AAC5C,cAAI,OAAO,KAAK,OAAO,WAAW;AAClC,cAAI,YAAY,KAAK,YAAY,WAAW;AAC5C,cAAI,UAAU,KAAK,QAAQ,KAAK,EAAE;AAElC,cAAI,YAAY,KAAK,WAAW,KAAK,EAAE;AAKvC,mBAAS,KAAK,GAAG,KAAK,UAAU,QAAQ,KAAK,IAAI,EAAE,IAAI;AACrD,gBAAI,KAAK,UAAU,KAAK,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC;AACjD,gBAAI,UAAU,EAAE,MAAM,MAAM,QAAQ,EAAE,MAAM;AAAI,sBAAQ,EAAE,IAAI;AAAA,UAChE;AAEA,mBAAS,KAAK,GAAG,MAAM,KAAK,QAAQ,KAAK,KAAK,EAAE,IAAI;AAClD,sBAAU,KAAK,EAAE,CAAC,IAAI;AAAA,UACxB;AAGA,cAAI,KAAK,UAAU,KAAK,KAAK,SAAS,GAAG;AACvC,iBAAK,YAAY,IAAI,WAAW,CAAC,EAAE,KAAK,EAAE;AAC1C,iBAAK,YAAY,IAAI,WAAW,CAAC,EAAE,KAAK,EAAE;AAC1C,iBAAK,UAAU,CAAC,IAAI,KAAK,CAAC;AAC1B,iBAAK,UAAU,CAAC,IAAI,KAAK,CAAC;AAC1B,iBAAK,UAAU,CAAC,IAAI,KAAK,CAAC;AAC1B,oBAAQ,KAAK,CAAC,CAAC,IAAI;AACnB,gBAAI,KAAK,WAAW;AAAG,sBAAQ,KAAK,CAAC,CAAC,IAAI;AAAA,UAC5C;AAAA,QACF;AAGA,eAAO,YAAY,SAAS,UAAU,GAAG;AACvC,cAAI,UAAU,CAAC;AACf,cAAI,UAAU,KAAK,SACf,OAAO,KAAK,MACZ,aAAa,KAAK,YAClB,YAAY,KAAK,WACjB,YAAY,KAAK;AACrB,cAAI,KAAK,QAAQ,CAAC;AAClB,cAAI,OAAO;AAAI,mBAAO;AAEtB,cAAII,KAAI;AACR,cAAI,KAAK;AAET,aAAG;AACD,iBAAK,UAAUA,EAAC;AAChB,oBAAQ,KAAK,EAAE;AACf,YAAAA,KAAIA,KAAI,MAAM,IAAIA,KAAI,IAAIA,KAAI;AAC9B,gBAAI,UAAUA,EAAC,MAAM;AAAG;AAExB,YAAAA,KAAI,UAAUA,EAAC;AAEf,gBAAIA,OAAM,IAAI;AACZ,kBAAI,IAAI,MAAM,WAAW,CAAC,IAAI,KAAK,KAAK,MAAM;AAC9C,kBAAI,MAAM;AAAI,wBAAQ,KAAK,CAAC;AAC5B;AAAA,YACF;AAAA,UACF,SAASA,OAAM;AAEf,iBAAO;AAAA,QACT;AAEA,eAAO,OAAO,SAAS,KAAKN,IAAGC,IAAG,GAAG;AACnC,cAAI,MAAM,QAAQ;AAChB,gBAAI;AAAA,UACN;AAGA,eAAKD,KAAI,CAACA,IAAGA,OAAMA,QAAOC,KAAI,CAACA,IAAGA,OAAMA;AAAI,mBAAO;AACnD,cAAI,KAAK;AACT,cAAIH;AAEJ,kBAAQA,KAAI,KAAK,MAAM,GAAGE,IAAGC,EAAC,MAAM,KAAKH,OAAM,KAAKA,OAAM,IAAI;AAC5D,gBAAIA;AAAA,UACN;AAEA,iBAAOA;AAAA,QACT;AAEA,eAAO,QAAQ,SAAS,MAAM,GAAGE,IAAGC,IAAG;AACrC,cAAI,UAAU,KAAK,SACf,SAAS,KAAK;AAClB,cAAI,QAAQ,CAAC,MAAM,MAAM,CAAC,OAAO;AAAQ,oBAAQ,IAAI,MAAM,OAAO,UAAU;AAC5E,cAAIH,KAAI;AACR,cAAI,KAAK,KAAK,IAAIE,KAAI,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,IAAIC,KAAI,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC;AAE3E,mBAAS,YAAY,KAAK,UAAU,CAAC,GAAG,WAAW,MAAM,QAAQ,SAAS,GAAG,MAAM,GAAG,YAAY,WAAW,YAAY,UAAU,OAAO,QAAQ,EAAE,OAAK;AACvJ,gBAAIM;AAEJ,gBAAI,UAAU;AACZ,kBAAI,OAAO,UAAU;AAAQ;AAC7B,cAAAA,QAAO,UAAU,KAAK;AAAA,YACxB,OAAO;AACL,oBAAM,UAAU,KAAK;AACrB,kBAAI,IAAI;AAAM;AACd,cAAAA,QAAO,IAAI;AAAA,YACb;AAEA,gBAAIC,KAAID;AACR,gBAAI,KAAK,KAAK,IAAIP,KAAI,OAAOQ,KAAI,CAAC,GAAG,CAAC,IAAI,KAAK,IAAIP,KAAI,OAAOO,KAAI,IAAI,CAAC,GAAG,CAAC;AAE3E,gBAAI,KAAK,IAAI;AACX,mBAAK;AACL,cAAAV,KAAIU;AAAA,YACN;AAAA,UACF;AAEA,iBAAOV;AAAA,QACT;AAEA,eAAOM;AAAA,MACT,EAAE;AAGF,cAAQ,SAAS,IAAIA;AAErB,MAAAA,UAAS,OAAO,SAAU,QAAQ,IAAI,IAAI,MAAM;AAC9C,YAAI,OAAO,QAAQ;AACjB,eAAK;AAAA,QACP;AAEA,YAAI,OAAO,QAAQ;AACjB,eAAK;AAAA,QACP;AAEA,eAAO,IAAIA,UAAS,UAAU,QAAQ,IAAI,IAAI,IAAI,CAAC;AAAA,MACrD;AAAA;AAAA;;;AClOA;AAAA;AASA,eAAS,QAAQ,OAAO,UAAU;AAChC,YAAI,QACAK,SAAQ,IACRC,UAAS,MAAM;AAEnB,eAAO,EAAED,SAAQC,SAAQ;AACvB,cAAI,UAAU,SAAS,MAAMD,MAAK,CAAC;AACnC,cAAI,YAAY,QAAW;AACzB,qBAAS,WAAW,SAAY,UAAW,SAAS;AAAA,UACtD;AAAA,QACF;AACA,eAAO;AAAA,MACT;AAEA,aAAO,UAAU;AAAA;AAAA;;;ACvBjB;AAAA;AAAA,UAAI,UAAU;AAAd,UACIE,YAAW;AAgBf,eAASC,KAAI,OAAO;AAClB,eAAQ,SAAS,MAAM,SACnB,QAAQ,OAAOD,SAAQ,IACvB;AAAA,MACN;AAEA,aAAO,UAAUC;AAAA;AAAA;;;;;ACvBjB,OAAA,SAAA,iCAAA,MAAA,SAAA;AACA,YAAA,OAAA,YAAA,YAAA,OAAA,WAAA;AACA,iBAAA,UAAA,QAAA;iBACA,OAAA,WAAA,cAAA,OAAA;AACA,iBAAA,CAAA,GAAA,OAAA;aACA;AACA,cAAAC,KAAA,QAAA;AACA,mBAAA,KAAAA;AAAA,aAAA,OAAA,YAAA,WAAA,UAAA,MAAA,CAAA,IAAAA,GAAA,CAAA;QACA;MACA,GAAC,OAAA,SAAA,cAAA,OAAA,SAAA,WAAA;AACD;;UAAA,WAAA;;;;;;;;ACaA,2BAAAC,SAAA,KAAA;AAAwB,wBAAA,OAAA,WAAA,cAAA,OAAA,OAAA,aAAA,UAAA;AAA2E,sBAAAA,WAAA,SAAAA,SAAAC,MAAA;AAAkC,+BAAA,OAAAA;sBAAA;oBAAA,OAAwB;AAAO,sBAAAD,WAAA,SAAAA,SAAAC,MAAA;AAAkC,+BAAAA,QAAA,OAAA,WAAA,cAAAA,KAAA,gBAAA,UAAAA,SAAA,OAAA,YAAA,WAAA,OAAAA;sBAAA;oBAAA;AAAmI,2BAAAD,SAAA,GAAA;kBAAA;AAEzU,2BAAAE,kBAAA,UAAA,aAAA;AAAkD,wBAAA,EAAA,oBAAA,cAAA;AAA0C,4BAAA,IAAA,UAAA,mCAAA;oBAAA;kBAAA;AAE5F,sBAAA,WAAeC,qBAAQ,IAAmB,GAC1C,iBAAA,SAAA,OACA,yBAAA,eAAA,wBACA,uBAAA,eAAA,sBACA,wBAAA,eAAA,uBACA,2BAAA,eAAA,0BACA,mBAAA,eAAA;AAEA,sBAAA,iBAAqBA,qBAAQ,IAAmC;AAEhE,sBAAA,YAAgBA,qBAAQ,IAAO,GAC/B,UAAA,UAAA;AAEA,sBAAA,iBAAqBA,qBAAA,IAAA,EAAA,OACrB,YAAA,eAAA,WACA,WAAA,eAAA;AAEA,sBAAA,eAAA,OAAA,SAAA,OAAA,SAAmDA,qBAAA,IAAA,EAAA;AACnD,sBAAA,WAAA,OAAA,KAAA,OAAA,KAAuCA,qBAAQ,GAAW;AAC1D,sBAAA,aAAA,oBAAA,IAAA;AACA,sBAAA;AACA,sBAAA;AACA,sBAAA;AACA,sBAAA;AACA,sBAAA;AAEA,2BAAA,qBAAA;AACA,wBAAA,aAAmBA,qBAAQ,IAA6B;AAExD,kCAAA,WAAA;AACA,wCAAA,WAAA;kBACA;AAKA,sBAAA,wBAAA;AACA,sBAAA;;oBAAW;;AAEX,sBAAA,WAAA,SAAAC,UAAA,KAAA;AACA,2BAAA,KAAA,IAAA,WAAA,CAAA,CAAA;kBACA;AAEA,sBAAA,SAAA;AAIA,sBAAA,SAAAC,QAAA,UAAA;AACA,sBAAA,wBAAA,CAAA;AAMA,2BAAA,UAAA,KAAA;AACA,wBAAA,IAAA,mBAAA;AAAA,4BAAA,IAAA;AACA,0BAAA,IAAA,eAAA,GAAA;kBACA;AAEA,2BAAA,KAAA,QAAA,UAAA,SAAA,UAAA,cAAA;AACA,wBAAA,UAAA,UAAA;AACA,wBAAA;AAEA,wBAAA,YAAA,GAAA;AACA,wCAAA;oBACA,WAAI,YAAA,GAAA;AACJ,gCAAA;AACA,+BAAA;oBACA,OAAI;AACJ,0BAAA,WAAA,OAAA;AACA,iCAAA;AACA,4BAAAC,QAAiBC,SAAO,cAAeA,SAAO,cAAA,QAAA,KAAA,KAAA,OAAA;AAC9C,wBAAAD,MAAA,4HAAA,sBAAA,SAAA;sBACA;AAEA,0BAAA,YAAA;AAAA,mCAAA;oBACA;AAEA,wBAAA,mBAAA;AAAA,4BAAA;AACA,wBAAA,UAAA;sBACA;sBACA;sBACA,UAAA,aAAA,SAAA,SAAA;sBACA,cAAA,gBAAA;oBACA;AAEA,wBAAA,YAAA,QAAA;AACA,8BAAA,UAAA;oBACA;AAEA,wBAAA,MAAA,IAAA,eAAA,OAAA;AAEA,wBAAA,iBAAA;AACA,0BAAA,UAAA;AACA,0BAAA,mBAAA;oBACA;AAEA,0BAAA;kBACA;AAEA,yBAAA,OAAA;AAEA,yBAAA,iBAAA;AAEA,2BAAA,QAAA,IAAA,QAAA,OAAA,SAAA;AACA,wBAAA,CAAA,OAAA;AACA,0BAAA,mBAAA;AAEA,0BAAA,WAAA,GAAA;AACA,2CAAA;AACA,kCAAA;sBACA,WAAM,mBAAA,OAAA;AACN,8BAAA;sBACA;AAEA,0BAAA,MAAA,IAAA,eAAA;wBACA,QAAA;wBACA,UAAA;wBACA;wBACA,UAAA;wBACA,cAAA;sBACA,CAAK;AACL,0BAAA,mBAAA;AACA,4BAAA;oBACA;kBACA;AAIA,2BAAA,KAAA;AACA,6BAAA,OAAA,UAAA,QAAA,OAAA,IAAA,MAAA,IAAA,GAAA,OAAA,GAAsE,OAAA,MAAa,QAAA;AACnF,2BAAA,IAAA,IAAA,UAAA,IAAA;oBACA;AAEA,4BAAA,MAAA,QAAA,CAAA,IAAA,KAAA,MAAA,EAAA,OAAA,IAAA,CAAA;kBACA;AAEA,yBAAA,KAAA;AAIA,yBAAA,QAAA,SAAA,MAAA,QAAA,UAAA,SAAA;AACA,wBAAA,UAAA,SAAA,GAAA;AACA,4BAAA,IAAA,iBAAA,UAAA,UAAA;oBACA;AAGA,wBAAA,UAAA,UAAA;AACA,gCAAA;wBACA;wBACA;wBACA;wBACA,UAAA;wBACA,cAAA;sBACA,CAAK;oBACL;kBACA;AAIA,yBAAA,WAAA,SAAA,SAAA,QAAA,UAAA,SAAA;AACA,wBAAA,UAAA,SAAA,GAAA;AACA,4BAAA,IAAA,iBAAA,UAAA,UAAA;oBACA;AAGA,wBAAA,UAAA,UAAA;AACA,gCAAA;wBACA;wBACA;wBACA;wBACA,UAAA;wBACA,cAAA;sBACA,CAAK;oBACL;kBACA;AAGA,yBAAA,YAAA,SAAA,UAAA,QAAA,UAAA,SAAA;AACA,wBAAA,UAAA,SAAA,GAAA;AACA,4BAAA,IAAA,iBAAA,UAAA,UAAA;oBACA;AAEA,wBAAA,gBAAA;AAAA,yCAAA;AAEA,wBAAA,CAAA,YAAA,QAAA,QAAA,GAAA;AACA,gCAAA;wBACA;wBACA;wBACA;wBACA,UAAA;wBACA,cAAA;sBACA,CAAK;oBACL;kBACA;AAGA,yBAAA,eAAA,SAAA,aAAA,QAAA,UAAA,SAAA;AACA,wBAAA,UAAA,SAAA,GAAA;AACA,4BAAA,IAAA,iBAAA,UAAA,UAAA;oBACA;AAEA,wBAAA,gBAAA;AAAA,yCAAA;AAEA,wBAAA,YAAA,QAAA,QAAA,GAAA;AACA,gCAAA;wBACA;wBACA;wBACA;wBACA,UAAA;wBACA,cAAA;sBACA,CAAK;oBACL;kBACA;AAIA,yBAAA,kBAAA,SAAA,gBAAA,QAAA,UAAA,SAAA;AACA,wBAAA,UAAA,SAAA,GAAA;AACA,4BAAA,IAAA,iBAAA,UAAA,UAAA;oBACA;AAEA,wBAAA,gBAAA;AAAA,yCAAA;AAEA,wBAAA,CAAA,kBAAA,QAAA,QAAA,GAAA;AACA,gCAAA;wBACA;wBACA;wBACA;wBACA,UAAA;wBACA,cAAA;sBACA,CAAK;oBACL;kBACA;AAEA,yBAAA,qBAAA;AAEA,2BAAA,mBAAA,QAAA,UAAA,SAAA;AACA,wBAAA,UAAA,SAAA,GAAA;AACA,4BAAA,IAAA,iBAAA,UAAA,UAAA;oBACA;AAEA,wBAAA,gBAAA;AAAA,yCAAA;AAEA,wBAAA,kBAAA,QAAA,QAAA,GAAA;AACA,gCAAA;wBACA;wBACA;wBACA;wBACA,UAAA;wBACA,cAAA;sBACA,CAAK;oBACL;kBACA;AAEA,yBAAA,cAAA,SAAA,YAAA,QAAA,UAAA,SAAA;AACA,wBAAA,UAAA,SAAA,GAAA;AACA,4BAAA,IAAA,iBAAA,UAAA,UAAA;oBACA;AAEA,wBAAA,CAAA,SAAA,QAAA,QAAA,GAAA;AACA,gCAAA;wBACA;wBACA;wBACA;wBACA,UAAA;wBACA,cAAA;sBACA,CAAK;oBACL;kBACA;AAEA,yBAAA,iBAAA,SAAA,eAAA,QAAA,UAAA,SAAA;AACA,wBAAA,UAAA,SAAA,GAAA;AACA,4BAAA,IAAA,iBAAA,UAAA,UAAA;oBACA;AAEA,wBAAA,SAAA,QAAA,QAAA,GAAA;AACA,gCAAA;wBACA;wBACA;wBACA;wBACA,UAAA;wBACA,cAAA;sBACA,CAAK;oBACL;kBACA;AAEA,sBAAA,aAAA,SAAAE,YAAA,KAAA,MAAA,QAAA;AACA,wBAAA,QAAA;AAEA,oBAAAN,kBAAA,MAAAM,WAAA;AAEA,yBAAA,QAAA,SAAA,KAAA;AACA,0BAAA,OAAA,KAAA;AACA,4BAAA,WAAA,UAAA,OAAA,OAAA,GAAA,MAAA,YAAA,SAAA,IAAA,GAAA,CAAA,KAAA,IAAA,GAAA,EAAA,KAAA,OAAA,GAAA,CAAA,GAAA;AACA,gCAAA,GAAA,IAAA,OAAA,GAAA;wBACA,OAAQ;AACR,gCAAA,GAAA,IAAA,IAAA,GAAA;wBACA;sBACA;oBACA,CAAG;kBACH;AAEA,2BAAA,oBAAA,QAAA,UAAA,KAAA,SAAA,MAAA,IAAA;AACA,wBAAA,EAAA,OAAA,WAAA,CAAA,kBAAA,OAAA,GAAA,GAAA,SAAA,GAAA,CAAA,GAAA;AACA,0BAAA,CAAA,SAAA;AAEA,4BAAAT,KAAA,IAAA,WAAA,QAAA,IAAA;AACA,4BAAA,IAAA,IAAA,WAAA,UAAA,MAAA,MAAA;AACA,4BAAA,MAAA,IAAA,eAAA;0BACA,QAAAA;0BACA,UAAA;0BACA,UAAA;0BACA,cAAA;wBACA,CAAO;AACP,4BAAA,SAAA;AACA,4BAAA,WAAA;AACA,4BAAA,WAAA,GAAA;AACA,8BAAA;sBACA;AAEA,gCAAA;wBACA;wBACA;wBACA;wBACA,UAAA,GAAA;wBACA,cAAA;sBACA,CAAK;oBACL;kBACA;AAEA,2BAAA,kBAAA,QAAA,UAAA,KAAA,IAAA;AACA,wBAAA,OAAA,aAAA,YAAA;AACA,0BAAA,SAAA,QAAA;AAAA,+BAAA,SAAA,KAAA,MAAA;AAEA,0BAAA,UAAA,WAAA,GAAA;AACA,8BAAA,IAAA,qBAAA,YAAA,CAAA,YAAA,QAAA,GAAA,QAAA;sBACA;AAGA,0BAAAC,SAAA,MAAA,MAAA,YAAA,WAAA,MAAA;AACA,4BAAA,MAAA,IAAA,eAAA;0BACA;0BACA;0BACA,SAAA;0BACA,UAAA;0BACA,cAAA;wBACA,CAAO;AACP,4BAAA,WAAA,GAAA;AACA,8BAAA;sBACA;AAEA,0BAAA,OAAA,OAAA,KAAA,QAAA;AAGA,0BAAA,oBAAA,OAAA;AACA,6BAAA,KAAA,QAAA,SAAA;sBACA,WAAM,KAAA,WAAA,GAAA;AACN,8BAAA,IAAA,sBAAA,SAAA,UAAA,4BAAA;sBACA;AAEA,0BAAA,gBAAA;AAAA,2CAAA;AACA,2BAAA,QAAA,SAAA,KAAA;AACA,4BAAA,OAAA,OAAA,GAAA,MAAA,YAAA,SAAA,SAAA,GAAA,CAAA,KAAA,SAAA,GAAA,EAAA,KAAA,OAAA,GAAA,CAAA,GAAA;AACA;wBACA;AAEA,4CAAA,QAAA,UAAA,KAAA,KAAA,MAAA,EAAA;sBACA,CAAK;AACL,6BAAA;oBACA;AAGA,wBAAA,SAAA,cAAA,UAAA,kBAAA,UAAA;AACA,6BAAA;oBACA;AAEA,wBAAA,MAAA,cAAA,QAAA,GAAA;AACA,6BAAA;oBACA;AAEA,2BAAA,SAAA,KAAA,CAAA,GAAyB,MAAA,MAAA;kBACzB;AAEA,2BAAA,UAAA,IAAA;AACA,wBAAA,OAAA,OAAA,YAAA;AACA,4BAAA,IAAA,qBAAA,MAAA,YAAA,EAAA;oBACA;AAEA,wBAAA;AACA,yBAAA;oBACA,SAAIS,IAAA;AACJ,6BAAAA;oBACA;AAEA,2BAAA;kBACA;AAEA,2BAAA,eAAA,KAAA;AAOA,2BAAA,UAAA,GAAA,KAAA,QAAA,QAAAT,SAAA,GAAA,MAAA,YAAA,OAAA,IAAA,SAAA,cAAA,OAAA,IAAA,UAAA;kBACA;AAEA,2BAAA,cAAA,WAAA;AACA,2BAAA,QAAA,QAAA,EAAA,KAAA,WAAA;AACA,0BAAA;AAEA,0BAAA,OAAA,cAAA,YAAA;AAEA,wCAAA,UAAA;AAEA,4BAAA,CAAA,eAAA,aAAA,GAAA;AACA,gCAAA,IAAA,yBAAA,uBAAA,aAAA,aAAA;wBACA;sBACA,WAAM,eAAA,SAAA,GAAA;AACN,wCAAA;sBACA,OAAM;AACN,8BAAA,IAAA,qBAAA,aAAA,CAAA,YAAA,SAAA,GAAA,SAAA;sBACA;AAEA,6BAAA,QAAA,QAAA,EAAA,KAAA,WAAA;AACA,+BAAA;sBACA,CAAK,EAAA,KAAA,WAAA;AACL,+BAAA;sBACA,CAAK,EAAA,MAAA,SAAAS,IAAA;AACL,+BAAAA;sBACA,CAAK;oBACL,CAAG;kBACH;AAEA,2BAAA,aAAA,cAAA,QAAA,OAAA,SAAA;AACA,wBAAA,OAAA,UAAA,UAAA;AACA,0BAAA,UAAA,WAAA,GAAA;AACA,8BAAA,IAAA,qBAAA,SAAA,CAAA,UAAA,SAAA,YAAA,QAAA,GAAA,KAAA;sBACA;AAEA,0BAAAT,SAAA,MAAA,MAAA,YAAA,WAAA,MAAA;AACA,4BAAA,OAAA,YAAA,OAAA;AACA,gCAAA,IAAA,uBAAA,iBAAA,sBAAA,OAAA,OAAA,SAAA,gCAAA,CAAA;wBACA;sBACA,WAAM,WAAA,OAAA;AACN,8BAAA,IAAA,uBAAA,iBAAA,cAAA,OAAA,QAAA,gCAAA,CAAA;sBACA;AAEA,gCAAA;AACA,8BAAA;oBACA,WAAI,SAAA,QAAAA,SAAA,KAAA,MAAA,YAAA,OAAA,UAAA,YAAA;AACJ,4BAAA,IAAA,qBAAA,SAAA,CAAA,UAAA,SAAA,YAAA,QAAA,GAAA,KAAA;oBACA;AAEA,wBAAA,WAAA,uBAAA;AACA,0BAAA,UAAA;AAEA,0BAAA,SAAA,MAAA,MAAA;AACA,mCAAA,KAAA,OAAA,MAAA,MAAA,GAAA;sBACA;AAEA,iCAAA,UAAA,KAAA,OAAA,OAAA,IAAA;AACA,0BAAA,SAAA,aAAA,SAAA,YAAA,cAAA;AACA,gCAAA;wBACA,QAAA;wBACA,UAAA;wBACA,UAAA,aAAA;wBACA,SAAA,oBAAA,OAAA,MAAA,EAAA,OAAA,OAAA;wBACA;sBACA,CAAK;oBACL;AAEA,wBAAA,SAAA,CAAA,kBAAA,QAAA,OAAA,SAAA,YAAA,GAAA;AACA,4BAAA;oBACA;kBACA;AAEA,2BAAA,eAAA,cAAA,QAAA,OAAA,SAAA;AACA,wBAAA,WAAA;AAAA;AAEA,wBAAA,OAAA,UAAA,UAAA;AACA,gCAAA;AACA,8BAAA;oBACA;AAEA,wBAAA,CAAA,SAAA,kBAAA,QAAA,KAAA,GAAA;AACA,0BAAA,UAAA,UAAA,KAAA,OAAA,OAAA,IAAA;AACA,0BAAA,SAAA,aAAA,SAAA,kBAAA,cAAA;AACA,gCAAA;wBACA;wBACA,UAAA;wBACA,UAAA,aAAA;wBACA,SAAA,gBAAA,OAAA,MAAA,EAAA,OAAA,SAAA,IAAA,IAAA,oBAAA,OAAA,UAAA,OAAA,SAAA,GAAA;wBACA;sBACA,CAAK;oBACL;AAEA,0BAAA;kBACA;AAEA,yBAAA,SAAA,SAAA,OAAA,WAAA;AACA,6BAAA,QAAA,UAAA,QAAA,OAAA,IAAA,MAAA,QAAA,IAAA,QAAA,IAAA,CAAA,GAAA,QAAA,GAA6F,QAAA,OAAe,SAAA;AAC5G,2BAAA,QAAA,CAAA,IAAA,UAAA,KAAA;oBACA;AAEA,iCAAA,MAAA,QAAA,CAAA,QAAA,UAAA,SAAA,CAAA,EAAA,OAAA,IAAA,CAAA;kBACA;AAEA,yBAAA,UAAA,SAAA,QAAA,WAAA;AACA,6BAAA,QAAA,UAAA,QAAA,OAAA,IAAA,MAAA,QAAA,IAAA,QAAA,IAAA,CAAA,GAAA,QAAA,GAA6F,QAAA,OAAe,SAAA;AAC5G,2BAAA,QAAA,CAAA,IAAA,UAAA,KAAA;oBACA;AAEA,2BAAA,cAAA,SAAA,EAAA,KAAA,SAAA,QAAA;AACA,6BAAA,aAAA,MAAA,QAAA,CAAA,SAAA,MAAA,EAAA,OAAA,IAAA,CAAA;oBACA,CAAG;kBACH;AAEA,yBAAA,eAAA,SAAA,aAAA,IAAA;AACA,6BAAA,QAAA,UAAA,QAAA,OAAA,IAAA,MAAA,QAAA,IAAA,QAAA,IAAA,CAAA,GAAA,QAAA,GAA6F,QAAA,OAAe,SAAA;AAC5G,2BAAA,QAAA,CAAA,IAAA,UAAA,KAAA;oBACA;AAEA,mCAAA,MAAA,QAAA,CAAA,cAAA,UAAA,EAAA,CAAA,EAAA,OAAA,IAAA,CAAA;kBACA;AAEA,yBAAA,gBAAA,SAAA,cAAA,IAAA;AACA,6BAAA,QAAA,UAAA,QAAA,OAAA,IAAA,MAAA,QAAA,IAAA,QAAA,IAAA,CAAA,GAAA,QAAA,GAA6F,QAAA,OAAe,SAAA;AAC5G,2BAAA,QAAA,CAAA,IAAA,UAAA,KAAA;oBACA;AAEA,2BAAA,cAAA,EAAA,EAAA,KAAA,SAAA,QAAA;AACA,6BAAA,eAAA,MAAA,QAAA,CAAA,eAAA,MAAA,EAAA,OAAA,IAAA,CAAA;oBACA,CAAG;kBACH;AAEA,yBAAA,UAAA,SAAA,QAAA,KAAA;AACA,wBAAA,QAAA,QAAA,QAAA,QAAA;AACA,0BAAA,UAAA;AAEA,0BAAAA,SAAA,GAAA,MAAA,YAAA,OAAA,IAAA,YAAA,UAAA;AACA,4BAAA,IAAA,QAAA,WAAA,KAAA,IAAA,aAAA;AACA,qCAAA,IAAA,YAAA;wBACA,OAAQ;AACR,qCAAA,IAAA;wBACA;sBACA,OAAM;AACN,mCAAA,QAAA,GAAA;sBACA;AAEA,0BAAA,SAAA,IAAA,eAAA;wBACA,QAAA;wBACA,UAAA;wBACA,UAAA;wBACA;wBACA,cAAA;sBACA,CAAK;AAEL,0BAAA,YAAA,IAAA;AAEA,0BAAA,OAAA,cAAA,UAAA;AAIA,4BAAA,OAAA,UAAA,MAAA,IAAA;AACA,6BAAA,MAAA;AAEA,4BAAA,OAAA,OAAA,MAAA,MAAA,IAAA;AAEA,iCAAA,IAAA,GAAsB,IAAA,KAAA,QAAiB,KAAA;AAEvC,8BAAA,MAAA,KAAA,QAAA,KAAA,CAAA,CAAA;AAEA,8BAAA,QAAA,IAAA;AAEA,mCAAA,KAAA,MAAA,GAAA,GAAA;AACA;0BACA;wBACA;AAEA,+BAAA,QAAA,GAAA,OAAA,KAAA,KAAA,IAAA,GAAA,IAAA,EAAA,OAAA,KAAA,KAAA,IAAA,CAAA;sBACA;AAEA,4BAAA;oBACA;kBACA;AAGA,2BAAA,SAAA;AACA,6BAAA,QAAA,UAAA,QAAA,OAAA,IAAA,MAAA,KAAA,GAAA,QAAA,GAAyE,QAAA,OAAe,SAAA;AACxF,2BAAA,KAAA,IAAA,UAAA,KAAA;oBACA;AAEA,4BAAA,MAAA,QAAA,CAAA,QAAA,KAAA,MAAA,EAAA,OAAA,IAAA,CAAA;kBACA;AAEA,yBAAA,SAAA,aAAA,QAAA,QAAA;oBACA,OAAA,OAAA;oBACA,WAAA,OAAA;oBACA,UAAA,OAAA;oBACA,cAAA,OAAA;kBACA,CAAC;AACD,yBAAA,OAAA,SAAA,OAAA;;;;;;;;;AClnBA,2BAAAU,gBAAA,QAAA;AAAiC,6BAAA,IAAA,GAAgB,IAAA,UAAA,QAAsB,KAAA;AAAO,0BAAA,SAAA,UAAA,CAAA,KAAA,OAAA,UAAA,CAAA,IAAA,CAAA;AAAuD,0BAAAC,YAAA,OAAA,KAAA,MAAA;AAAmC,0BAAA,OAAA,OAAA,0BAAA,YAAA;AAA0D,wBAAAA,YAAAA,UAAA,OAAA,OAAA,sBAAA,MAAA,EAAA,OAAA,SAAA,KAAA;AAAsF,iCAAA,OAAA,yBAAA,QAAA,GAAA,EAAA;wBAAA,CAAiE,CAAA;sBAAA;AAAM,sBAAAA,UAAA,QAAA,SAAA,KAAA;AAAiC,wBAAAC,kBAAA,QAAA,KAAA,OAAA,GAAA,CAAA;sBAAA,CAA4C;oBAAA;AAAK,2BAAA;kBAAA;AAEjd,2BAAAA,kBAAA,KAAA,KAAA,OAAA;AAA4C,wBAAA,OAAA,KAAA;AAAkB,6BAAA,eAAA,KAAA,KAAA,EAAkC,OAAA,YAAA,MAAA,cAAA,MAAA,UAAA,KAAA,CAAoE;oBAAA,OAAK;AAAO,0BAAA,GAAA,IAAA;oBAAA;AAAoB,2BAAA;kBAAA;AAEpM,2BAAAV,kBAAA,UAAA,aAAA;AAAkD,wBAAA,EAAA,oBAAA,cAAA;AAA0C,4BAAA,IAAA,UAAA,mCAAA;oBAAA;kBAAA;AAE5F,2BAAAW,oBAAA,QAAA,OAAA;AAA4C,6BAAA,IAAA,GAAgB,IAAA,MAAA,QAAkB,KAAA;AAAO,0BAAA,aAAA,MAAA,CAAA;AAA2B,iCAAA,aAAA,WAAA,cAAA;AAAwD,iCAAA,eAAA;AAAgC,0BAAA,WAAA;AAAA,mCAAA,WAAA;AAAuD,6BAAA,eAAA,QAAA,WAAA,KAAA,UAAA;oBAAA;kBAAA;AAE/P,2BAAAC,eAAA,aAAA,YAAA,aAAA;AAA8D,wBAAA;AAAA,sBAAAD,oBAAA,YAAA,WAAA,UAAA;AAAsE,wBAAA;AAAA,sBAAAA,oBAAA,aAAA,WAAA;AAA8D,2BAAA;kBAAA;AAElM,2BAAAE,6BAAAC,OAAA,MAAA;AAAkD,wBAAA,SAAAhB,SAAA,IAAA,MAAA,YAAA,OAAA,SAAA,aAAA;AAA0E,6BAAA;oBAAA;AAAe,2BAAAiB,yBAAAD,KAAA;kBAAA;AAE3I,2BAAAC,yBAAAD,OAAA;AAAwC,wBAAAA,UAAA,QAAA;AAAuB,4BAAA,IAAA,eAAA,2DAAA;oBAAA;AAAyF,2BAAAA;kBAAA;AAExJ,2BAAAE,YAAA,UAAA,YAAA;AAA2C,wBAAA,OAAA,eAAA,cAAA,eAAA,MAAA;AAA+D,4BAAA,IAAA,UAAA,oDAAA;oBAAA;AAA6E,6BAAA,YAAA,OAAA,OAAA,cAAA,WAAA,WAAA,EAAyE,aAAA,EAAe,OAAA,UAAA,UAAA,MAAA,cAAA,KAAA,EAAA,CAAuD;AAAG,wBAAA;AAAA,sBAAAC,kBAAA,UAAA,UAAA;kBAAA;AAEzU,2BAAA,iBAAA,OAAA;AAAmC,wBAAA,SAAA,OAAA,QAAA,aAAA,oBAAA,IAAA,IAAA;AAAgE,uCAAA,SAAAC,kBAAAC,QAAA;AAAsD,0BAAAA,WAAA,QAAA,CAAA,kBAAAA,MAAA;AAAA,+BAAAA;AAA+D,0BAAA,OAAAA,WAAA,YAAA;AAAmC,8BAAA,IAAA,UAAA,oDAAA;sBAAA;AAA6E,0BAAA,OAAA,WAAA,aAAA;AAAqC,4BAAA,OAAA,IAAAA,MAAA;AAAA,iCAAA,OAAA,IAAAA,MAAA;AAAiD,+BAAA,IAAAA,QAAA,OAAA;sBAAA;AAA8B,+BAAA,UAAA;AAAqB,+BAAA,WAAAA,QAAA,WAAAC,kBAAA,IAAA,EAAA,WAAA;sBAAA;AAA0E,8BAAA,YAAA,OAAA,OAAAD,OAAA,WAAA,EAAqD,aAAA,EAAe,OAAA,SAAA,YAAA,OAAA,UAAA,MAAA,cAAA,KAAA,EAAA,CAAyE;AAAG,6BAAAF,kBAAA,SAAAE,MAAA;oBAAA;AAA2C,2BAAA,iBAAA,KAAA;kBAAA;AAEttB,2BAAA,2BAAA;AAAsC,wBAAA,OAAA,YAAA,eAAA,CAAA,QAAA;AAAA,6BAAA;AAAwE,wBAAA,QAAA,UAAA;AAAA,6BAAA;AAA0C,wBAAA,OAAA,UAAA;AAAA,6BAAA;AAA8C,wBAAA;AAAM,2BAAA,UAAA,SAAA,KAAA,QAAA,UAAA,MAAA,CAAA,GAAA,WAAA;sBAAA,CAAuE,CAAA;AAAI,6BAAA;oBAAA,SAAeZ,IAAA;AAAY,6BAAA;oBAAA;kBAAA;AAElT,2BAAA,WAAA,QAAA,MAAA,OAAA;AAA2C,wBAAA,yBAAA,GAAA;AAAkC,mCAAA,QAAA;oBAAA,OAAkC;AAAO,mCAAA,SAAAc,YAAAC,SAAAC,OAAAJ,QAAA;AAAwD,4BAAAtB,KAAA,CAAA,IAAA;AAAgB,wBAAAA,GAAA,KAAA,MAAAA,IAAA0B,KAAA;AAAuB,4BAAA,cAAA,SAAA,KAAA,MAAAD,SAAAzB,EAAA;AAAkD,4BAAA,WAAA,IAAA,YAAA;AAAkC,4BAAAsB;AAAA,0BAAAF,kBAAA,UAAAE,OAAA,SAAA;AAAuD,+BAAA;sBAAA;oBAAA;AAAsB,2BAAA,WAAA,MAAA,MAAA,SAAA;kBAAA;AAEtX,2BAAA,kBAAA,IAAA;AAAiC,2BAAA,SAAA,SAAA,KAAA,EAAA,EAAA,QAAA,eAAA,MAAA;kBAAA;AAEjC,2BAAAF,kBAAAO,IAAA,GAAA;AAAiC,oBAAAP,oBAAA,OAAA,kBAAA,SAAAA,kBAAAO,IAAAC,IAAA;AAA4E,sBAAAD,GAAA,YAAAC;AAAiB,6BAAAD;oBAAA;AAAa,2BAAAP,kBAAAO,IAAA,CAAA;kBAAA;AAE3I,2BAAAJ,kBAAAI,IAAA;AAA8B,oBAAAJ,oBAAA,OAAA,iBAAA,OAAA,iBAAA,SAAAA,kBAAAI,IAAA;AAAgG,6BAAAA,GAAA,aAAA,OAAA,eAAAA,EAAA;oBAAA;AAAmD,2BAAAJ,kBAAAI,EAAA;kBAAA;AAEjL,2BAAA1B,SAAA,KAAA;AAAwB,wBAAA,OAAA,WAAA,cAAA,OAAA,OAAA,aAAA,UAAA;AAA2E,sBAAAA,WAAA,SAAAA,SAAAC,MAAA;AAAkC,+BAAA,OAAAA;sBAAA;oBAAA,OAAwB;AAAO,sBAAAD,WAAA,SAAAA,SAAAC,MAAA;AAAkC,+BAAAA,QAAA,OAAA,WAAA,cAAAA,KAAA,gBAAA,UAAAA,SAAA,OAAA,YAAA,WAAA,OAAAA;sBAAA;oBAAA;AAAmI,2BAAAD,SAAA,GAAA;kBAAA;AAEzU,sBAAA,WAAeG,qBAAQ,IAAO,GAC9B,UAAA,SAAA;AAEA,sBAAA,YAAgBA,qBAAQ,IAAW,GACnC,uBAAA,UAAA,MAAA;AAGA,2BAAA,SAAA,KAAA,QAAA,UAAA;AACA,wBAAA,aAAA,UAAA,WAAA,IAAA,QAAA;AACA,iCAAA,IAAA;oBACA;AAEA,2BAAA,IAAA,UAAA,WAAA,OAAA,QAAA,QAAA,MAAA;kBACA;AAGA,2BAAA,OAAA,KAAA,OAAA;AACA,4BAAA,KAAA,MAAA,KAAA;AACA,wBAAA,IAAA,UAAA,KAAA,SAAA;AAAA,6BAAA;AACA,wBAAA,WAAA,IAAA,SAAA;AACA,4BAAA,KAAA,MAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,CAAA,CAAA;AAEA,2BAAA,OAAA;AACA,6BAAA;AACA;oBACA;AAEA,2BAAA,IAAA,UAAA,GAAA,WAAA,IAAA,MAAA;AACA,2BAAA;kBACA;AAEA,sBAAA,OAAA;AACA,sBAAA,QAAA;AACA,sBAAA,MAAA;AACA,sBAAA,QAAA;AACA,sBAAA,oBAAA;oBACA,iBAAA;oBACA,aAAA;oBACA,mBAAA;oBACA,WAAA;oBACA,OAAA;oBACA,oBAAA;oBACA,gBAAA;oBACA,sBAAA;oBACA,cAAA;oBACA,UAAA;oBACA,cAAA;kBACA;AAGA,sBAAA,kBAAA;AAEA,2BAAA,UAAA,QAAA;AACA,wBAAA,OAAA,OAAA,KAAA,MAAA;AACA,wBAAA,SAAA,OAAA,OAAA,OAAA,eAAA,MAAA,CAAA;AACA,yBAAA,QAAA,SAAA,KAAA;AACA,6BAAA,GAAA,IAAA,OAAA,GAAA;oBACA,CAAG;AACH,2BAAA,eAAA,QAAA,WAAA;sBACA,OAAA,OAAA;oBACA,CAAG;AACH,2BAAA;kBACA;AAEA,2BAAA,aAAA,KAAA;AAGA,2BAAA,QAAA,KAAA;sBACA,SAAA;sBACA,eAAA;sBACA,OAAA;sBACA,gBAAA;;sBAEA,YAAA;;;;;;sBAMA,aAAA;;sBAEA,WAAA;sBACA,QAAA;;sBAEA,SAAA;oBACA,CAAG;kBACH;AAEA,2BAAA,cAAA,QAAA,UAAA,UAAA;AACA,wBAAA,QAAA;AACA,wBAAA,MAAA;AACA,wBAAA,UAAA;AACA,wBAAA,MAAA;AACA,wBAAA,UAAA;AACA,wBAAA,kBAAA,aAAA,MAAA;AACA,wBAAA,cAAA,gBAAA,MAAA,IAAA;AACA,wBAAA,gBAAA,aAAA,QAAA,EAAA,MAAA,IAAA;AACA,wBAAA,IAAA;AACA,wBAAA,YAAA;AAGA,wBAAA,aAAA,iBAAAH,SAAA,MAAA,MAAA,YAAAA,SAAA,QAAA,MAAA,YAAA,WAAA,QAAA,aAAA,MAAA;AACA,iCAAA;oBACA;AAIA,wBAAA,YAAA,WAAA,KAAA,cAAA,WAAA,KAAA,YAAA,CAAA,MAAA,cAAA,CAAA,GAAA;AACA,0BAAA,cAAA,YAAA,CAAA,EAAA,SAAA,cAAA,CAAA,EAAA;AAIA,0BAAA,eAAA,iBAAA;AACA,6BAAAA,SAAA,MAAA,MAAA,YAAA,WAAA,UAAAA,SAAA,QAAA,MAAA,YAAA,aAAA,UAAA,WAAA,KAAA,aAAA,IAAA;AAEA,iCAAA,GAAA,OAAA,kBAAA,QAAA,GAAA,MAAA,IAAA,GAAA,OAAA,YAAA,CAAA,GAAA,OAAA,EAAA,OAAA,cAAA,CAAA,GAAA,IAAA;wBACA;sBACA,WAAM,aAAA,qBAAA;AAIN,4BAAA,YAAsBO,SAAO,UAAWA,SAAO,OAAA,QAAgBA,SAAO,OAAA,UAAA;AAEtE,4BAAA,cAAA,WAAA;AACA,iCAAA,YAAA,CAAA,EAAA,CAAA,MAAA,cAAA,CAAA,EAAA,CAAA,GAAA;AACA;0BACA;AAGA,8BAAA,IAAA,GAAA;AAGA,wCAAA,OAAA,OAAA,OAAA,KAAA,CAAA,GAAA,GAAA;AACA,gCAAA;0BACA;wBACA;sBACA;oBACA;AAIA,wBAAAR,KAAA,YAAA,YAAA,SAAA,CAAA;AACA,wBAAA,IAAA,cAAA,cAAA,SAAA,CAAA;AAEA,2BAAAA,OAAA,GAAA;AACA,0BAAA,MAAA,GAAA;AACA,8BAAA,OAAA,OAAAA,EAAA,EAAA,OAAA,GAAA;sBACA,OAAM;AACN,gCAAAA;sBACA;AAEA,kCAAA,IAAA;AACA,oCAAA,IAAA;AACA,0BAAA,YAAA,WAAA,KAAA,cAAA,WAAA;AAAA;AACA,sBAAAA,KAAA,YAAA,YAAA,SAAA,CAAA;AACA,0BAAA,cAAA,cAAA,SAAA,CAAA;oBACA;AAEA,wBAAA,WAAA,KAAA,IAAA,YAAA,QAAA,cAAA,MAAA;AAGA,wBAAA,aAAA,GAAA;AAEA,0BAAA,eAAA,gBAAA,MAAA,IAAA;AAIA,0BAAA,aAAA,SAAA,IAAA;AACA,qCAAA,EAAA,IAAA,GAAA,OAAA,MAAA,KAAA,EAAA,OAAA,KAAA;AAEA,+BAAA,aAAA,SAAA,IAAA;AACA,uCAAA,IAAA;wBACA;sBACA;AAEA,6BAAA,GAAA,OAAA,kBAAA,cAAA,MAAA,EAAA,OAAA,aAAA,KAAA,IAAA,GAAA,IAAA;oBACA;AAEA,wBAAA,IAAA,GAAA;AACA,4BAAA,KAAA,OAAA,MAAA,KAAA,EAAA,OAAA,KAAA,EAAA,OAAA,GAAA;AACA,gCAAA;oBACA;AAEA,wBAAA,UAAA,IAAA;AACA,4BAAA,OAAA,OAAA,KAAA,EAAA,OAAA,GAAA;AACA,8BAAA;oBACA;AAEA,wBAAA,eAAA;AACA,wBAAA,MAAA,kBAAA,QAAA,IAAA,KAAA,OAAA,OAAA,UAAA,EAAA,OAAA,OAAA,GAAA,EAAA,OAAA,KAAA,YAAA,EAAA,OAAA,KAAA;AACA,wBAAA,aAAA,IAAA,OAAA,MAAA,KAAA,EAAA,OAAA,OAAA,gBAAA;AAEA,yBAAA,IAAA,GAAc,IAAA,UAAc,KAAA;AAE5B,0BAAA,MAAA,IAAA;AAEA,0BAAA,YAAA,SAAA,IAAA,GAAA;AAIA,4BAAA,MAAA,KAAA,IAAA,GAAA;AACA,8BAAA,MAAA,GAAA;AACA,mCAAA,KAAA,OAAA,MAAA,KAAA,EAAA,OAAA,KAAA;AACA,sCAAA;0BACA,WAAU,MAAA,GAAA;AACV,mCAAA,OAAA,OAAA,cAAA,IAAA,CAAA,CAAA;AACA;0BACA;AAEA,iCAAA,OAAA,OAAA,cAAA,IAAA,CAAA,CAAA;AACA;wBACA;AAGA,kCAAA;AAEA,iCAAA,KAAA,OAAA,KAAA,GAAA,EAAA,OAAA,OAAA,GAAA,EAAA,OAAA,cAAA,CAAA,CAAA;AACA;sBACA,WAAM,cAAA,SAAA,IAAA,GAAA;AAIN,4BAAA,MAAA,KAAA,IAAA,GAAA;AACA,8BAAA,MAAA,GAAA;AACA,mCAAA,KAAA,OAAA,MAAA,KAAA,EAAA,OAAA,KAAA;AACA,sCAAA;0BACA,WAAU,MAAA,GAAA;AACV,mCAAA,OAAA,OAAA,YAAA,IAAA,CAAA,CAAA;AACA;0BACA;AAEA,iCAAA,OAAA,OAAA,YAAA,IAAA,CAAA,CAAA;AACA;wBACA;AAGA,kCAAA;AAEA,+BAAA,KAAA,OAAA,OAAA,GAAA,EAAA,OAAA,OAAA,GAAA,EAAA,OAAA,YAAA,CAAA,CAAA;AACA;sBACA,OAAM;AACN,4BAAA,eAAA,cAAA,CAAA;AACA,4BAAA,aAAA,YAAA,CAAA;AAIA,4BAAA,iBAAA,eAAA,iBAAA,CAAA,SAAA,YAAA,GAAA,KAAA,WAAA,MAAA,GAAA,EAAA,MAAA;AAUA,4BAAA,kBAAA,SAAA,cAAA,GAAA,KAAA,aAAA,MAAA,GAAA,EAAA,MAAA,YAAA;AACA,2CAAA;AACA,wCAAA;wBACA;AAEA,4BAAA,gBAAA;AAIA,8BAAA,MAAA,KAAA,IAAA,GAAA;AACA,gCAAA,MAAA,GAAA;AACA,qCAAA,KAAA,OAAA,MAAA,KAAA,EAAA,OAAA,KAAA;AACA,wCAAA;4BACA,WAAY,MAAA,GAAA;AACZ,qCAAA,OAAA,OAAA,YAAA,IAAA,CAAA,CAAA;AACA;4BACA;AAEA,mCAAA,OAAA,OAAA,YAAA,IAAA,CAAA,CAAA;AACA;0BACA;AAGA,oCAAA;AAGA,iCAAA,KAAA,OAAA,OAAA,GAAA,EAAA,OAAA,OAAA,GAAA,EAAA,OAAA,UAAA;AACA,mCAAA,KAAA,OAAA,KAAA,GAAA,EAAA,OAAA,OAAA,GAAA,EAAA,OAAA,YAAA;AACA,0CAAA;wBACA,OAAQ;AAGR,iCAAA;AACA,kCAAA;AAGA,8BAAA,QAAA,KAAA,MAAA,GAAA;AACA,mCAAA,OAAA,OAAA,UAAA;AACA;0BACA;wBACA;sBACA;AAGA,0BAAA,eAAA,MAAA,IAAA,WAAA,GAAA;AACA,+BAAA,GAAA,OAAA,GAAA,EAAA,OAAA,YAAA,IAAA,EAAA,OAAA,KAAA,IAAA,EAAA,OAAA,MAAA,KAAA,EAAA,OAAA,KAAA,EAAA,OAAA,OAAA,IAAA,IAAA,GAAA,OAAA,MAAA,KAAA,EAAA,OAAA,KAAA;sBACA;oBACA;AAEA,2BAAA,GAAA,OAAA,GAAA,EAAA,OAAA,UAAA,aAAA,IAAA,IAAA,EAAA,OAAA,GAAA,EAAA,OAAA,KAAA,EAAA,OAAA,GAAA,EAAA,OAAA,SAAA;kBACA;AAEA,sBAAA,iBAEA,yBAAA,QAAA;AACA,oBAAAmB,YAAAU,iBAAA,MAAA;AAEA,6BAAAA,gBAAAC,UAAA;AACA,0BAAA;AAEA,sBAAA3B,kBAAA,MAAA0B,eAAA;AAEA,0BAAA5B,SAAA6B,QAAA,MAAA,YAAAA,aAAA,MAAA;AACA,8BAAA,IAAA,qBAAA,WAAA,UAAAA,QAAA;sBACA;AAEA,0BAAA,UAAAA,SAAA,SACA,WAAAA,SAAA,UACA,eAAAA,SAAA;AACA,0BAAA,SAAAA,SAAA,QACA,WAAAA,SAAA;AACA,0BAAA,QAAA,MAAA;AACA,4BAAA,kBAAA;AAEA,0BAAA,WAAA,MAAA;AACA,gCAAAd,6BAAA,MAAAO,kBAAAM,eAAA,EAAA,KAAA,MAAA,OAAA,OAAA,CAAA,CAAA;sBACA,OAAM;AACN,4BAAUrB,SAAO,UAAWA,SAAO,OAAA,OAAA;AAGnC,8BAAYA,SAAO,UAAWA,SAAO,OAAA,iBAAyBA,SAAO,OAAA,cAAA,MAAA,GAAA;AACrE,mCAAA;AACA,oCAAA;AACA,oCAAA;AACA,kCAAA;0BACA,OAAU;AACV,mCAAA;AACA,oCAAA;AACA,oCAAA;AACA,kCAAA;0BACA;wBACA;AAKA,4BAAAP,SAAA,MAAA,MAAA,YAAA,WAAA,QAAAA,SAAA,QAAA,MAAA,YAAA,aAAA,QAAA,WAAA,UAAA,kBAAA,SAAA,WAAA,YAAA,oBAAA,OAAA;AACA,mCAAA,UAAA,MAAA;AACA,qCAAA,UAAA,QAAA;wBACA;AAEA,4BAAA,aAAA,qBAAA,aAAA,eAAA;AACA,kCAAAe,6BAAA,MAAAO,kBAAAM,eAAA,EAAA,KAAA,MAAA,cAAA,QAAA,UAAA,QAAA,CAAA,CAAA;wBACA,WAAQ,aAAA,wBAAA,aAAA,kBAAA;AAGR,8BAAA,OAAA,kBAAA,QAAA;AACA,8BAAA,MAAA,aAAA,MAAA,EAAA,MAAA,IAAA;AAEA,8BAAA,aAAA,oBAAA5B,SAAA,MAAA,MAAA,YAAA,WAAA,MAAA;AACA,mCAAA,kBAAA;0BACA;AAIA,8BAAA,IAAA,SAAA,IAAA;AACA,gCAAA,EAAA,IAAA,GAAA,OAAA,MAAA,KAAA,EAAA,OAAA,KAAA;AAEA,mCAAA,IAAA,SAAA,IAAA;AACA,kCAAA,IAAA;4BACA;0BACA;AAGA,8BAAA,IAAA,WAAA,GAAA;AACA,oCAAAe,6BAAA,MAAAO,kBAAAM,eAAA,EAAA,KAAA,MAAA,GAAA,OAAA,MAAA,GAAA,EAAA,OAAA,IAAA,CAAA,CAAA,CAAA,CAAA;0BACA,OAAU;AACV,oCAAAb,6BAAA,MAAAO,kBAAAM,eAAA,EAAA,KAAA,MAAA,GAAA,OAAA,MAAA,MAAA,EAAA,OAAA,IAAA,KAAA,IAAA,GAAA,IAAA,CAAA,CAAA;0BACA;wBACA,OAAQ;AACR,8BAAA,OAAA,aAAA,MAAA;AAEA,8BAAA,QAAA;AACA,8BAAA,iBAAA,kBAAA,QAAA;AAEA,8BAAA,aAAA,kBAAA,aAAA,YAAA;AACA,mCAAA,GAAA,OAAA,kBAAA,QAAA,GAAA,MAAA,EAAA,OAAA,IAAA;AAEA,gCAAA,KAAA,SAAA,MAAA;AACA,qCAAA,GAAA,OAAA,KAAA,MAAA,GAAA,IAAA,GAAA,KAAA;4BACA;0BACA,OAAU;AACV,oCAAA,GAAA,OAAA,aAAA,QAAA,CAAA;AAEA,gCAAA,KAAA,SAAA,KAAA;AACA,qCAAA,GAAA,OAAA,KAAA,MAAA,GAAA,GAAA,GAAA,KAAA;4BACA;AAEA,gCAAA,MAAA,SAAA,KAAA;AACA,sCAAA,GAAA,OAAA,MAAA,MAAA,GAAA,GAAA,GAAA,KAAA;4BACA;AAEA,gCAAA,aAAA,eAAA,aAAA,SAAA;AACA,qCAAA,GAAA,OAAA,gBAAA,MAAA,EAAA,OAAA,MAAA,sBAAA;4BACA,OAAY;AACZ,sCAAA,IAAA,OAAA,UAAA,GAAA,EAAA,OAAA,KAAA;4BACA;0BACA;AAEA,kCAAAb,6BAAA,MAAAO,kBAAAM,eAAA,EAAA,KAAA,MAAA,GAAA,OAAA,IAAA,EAAA,OAAA,KAAA,CAAA,CAAA;wBACA;sBACA;AAEA,4BAAA,kBAAA;AACA,4BAAA,mBAAA,CAAA;AACA,6BAAA,eAAAX,yBAAA,KAAA,GAAA,QAAA;wBACA,OAAA;wBACA,YAAA;wBACA,UAAA;wBACA,cAAA;sBACA,CAAK;AACL,4BAAA,OAAA;AACA,4BAAA,SAAA;AACA,4BAAA,WAAA;AACA,4BAAA,WAAA;AAEA,0BAAA,MAAA,mBAAA;AAEA,8BAAA,kBAAAA,yBAAA,KAAA,GAAA,YAAA;sBACA;AAGA,4BAAA;AAEA,4BAAA,OAAA;AACA,6BAAAF,6BAAA,KAAA;oBACA;AAEA,oBAAAD,eAAAc,iBAAA,CAAA;sBACA,KAAA;sBACA,OAAA,SAAA,WAAA;AACA,+BAAA,GAAA,OAAA,KAAA,MAAA,IAAA,EAAA,OAAA,KAAA,MAAA,KAAA,EAAA,OAAA,KAAA,OAAA;sBACA;oBACA,GAAG;sBACH,KAAA,QAAA;sBACA,OAAA,SAAA,MAAA,cAAA,KAAA;AAKA,+BAAA,QAAA,MAAAlB,gBAAA,CAAA,GAA2C,KAAA;0BAC3C,eAAA;0BACA,OAAA;wBACA,CAAO,CAAA;sBACP;oBACA,CAAG,CAAA;AAEH,2BAAAkB;kBACA,EAAC,iBAAA,KAAA,CAAA;AAED,kBAAAvB,QAAA,UAAA;;;;;;;;ACteA,2BAAAL,SAAA,KAAA;AAAwB,wBAAA,OAAA,WAAA,cAAA,OAAA,OAAA,aAAA,UAAA;AAA2E,sBAAAA,WAAA,SAAAA,SAAAC,MAAA;AAAkC,+BAAA,OAAAA;sBAAA;oBAAA,OAAwB;AAAO,sBAAAD,WAAA,SAAAA,SAAAC,MAAA;AAAkC,+BAAAA,QAAA,OAAA,WAAA,cAAAA,KAAA,gBAAA,UAAAA,SAAA,OAAA,YAAA,WAAA,OAAAA;sBAAA;oBAAA;AAAmI,2BAAAD,SAAA,GAAA;kBAAA;AAEzU,2BAAAE,kBAAA,UAAA,aAAA;AAAkD,wBAAA,EAAA,oBAAA,cAAA;AAA0C,4BAAA,IAAA,UAAA,mCAAA;oBAAA;kBAAA;AAE5F,2BAAAa,6BAAAC,OAAA,MAAA;AAAkD,wBAAA,SAAAhB,SAAA,IAAA,MAAA,YAAA,OAAA,SAAA,aAAA;AAA0E,6BAAA;oBAAA;AAAe,2BAAAiB,yBAAAD,KAAA;kBAAA;AAE3I,2BAAAC,yBAAAD,OAAA;AAAwC,wBAAAA,UAAA,QAAA;AAAuB,4BAAA,IAAA,eAAA,2DAAA;oBAAA;AAAyF,2BAAAA;kBAAA;AAExJ,2BAAAM,kBAAAI,IAAA;AAA8B,oBAAAJ,oBAAA,OAAA,iBAAA,OAAA,iBAAA,SAAAA,kBAAAI,IAAA;AAAgG,6BAAAA,GAAA,aAAA,OAAA,eAAAA,EAAA;oBAAA;AAAmD,2BAAAJ,kBAAAI,EAAA;kBAAA;AAEjL,2BAAAR,YAAA,UAAA,YAAA;AAA2C,wBAAA,OAAA,eAAA,cAAA,eAAA,MAAA;AAA+D,4BAAA,IAAA,UAAA,oDAAA;oBAAA;AAA6E,6BAAA,YAAA,OAAA,OAAA,cAAA,WAAA,WAAA,EAAyE,aAAA,EAAe,OAAA,UAAA,UAAA,MAAA,cAAA,KAAA,EAAA,CAAuD;AAAG,wBAAA;AAAA,sBAAAC,kBAAA,UAAA,UAAA;kBAAA;AAEzU,2BAAAA,kBAAAO,IAAA,GAAA;AAAiC,oBAAAP,oBAAA,OAAA,kBAAA,SAAAA,kBAAAO,IAAAC,IAAA;AAA4E,sBAAAD,GAAA,YAAAC;AAAiB,6BAAAD;oBAAA;AAAa,2BAAAP,kBAAAO,IAAA,CAAA;kBAAA;AAE3I,sBAAA,QAAA,CAAA;AAEA,sBAAA;AACA,sBAAA;AAEA,2BAAA,gBAAA,MAAA,SAAA,MAAA;AACA,wBAAA,CAAA,MAAA;AACA,6BAAA;oBACA;AAEA,6BAAA,WAAA,MAAA,MAAA,MAAA;AACA,0BAAA,OAAA,YAAA,UAAA;AACA,+BAAA;sBACA,OAAM;AACN,+BAAA,QAAA,MAAA,MAAA,IAAA;sBACA;oBACA;AAEA,wBAAA,YAEA,yBAAA,OAAA;AACA,sBAAAR,YAAAY,YAAA,KAAA;AAEA,+BAAAA,WAAA,MAAA,MAAA,MAAA;AACA,4BAAA;AAEA,wBAAA5B,kBAAA,MAAA4B,UAAA;AAEA,gCAAAf,6BAAA,MAAAO,kBAAAQ,UAAA,EAAA,KAAA,MAAA,WAAA,MAAA,MAAA,IAAA,CAAA,CAAA;AACA,8BAAA,OAAA;AACA,+BAAA;sBACA;AAEA,6BAAAA;oBACA,EAAG,IAAA;AAEH,0BAAA,IAAA,IAAA;kBACA;AAGA,2BAAA,MAAA,UAAA,OAAA;AACA,wBAAA,MAAA,QAAA,QAAA,GAAA;AACA,0BAAA,MAAA,SAAA;AACA,iCAAA,SAAA,IAAA,SAAA,GAAA;AACA,+BAAA,OAAA,CAAA;sBACA,CAAK;AAEL,0BAAA,MAAA,GAAA;AACA,+BAAA,UAAA,OAAA,OAAA,GAAA,EAAA,OAAA,SAAA,MAAA,GAAA,MAAA,CAAA,EAAA,KAAA,IAAA,GAAA,OAAA,IAAA,SAAA,MAAA,CAAA;sBACA,WAAM,QAAA,GAAA;AACN,+BAAA,UAAA,OAAA,OAAA,GAAA,EAAA,OAAA,SAAA,CAAA,GAAA,MAAA,EAAA,OAAA,SAAA,CAAA,CAAA;sBACA,OAAM;AACN,+BAAA,MAAA,OAAA,OAAA,GAAA,EAAA,OAAA,SAAA,CAAA,CAAA;sBACA;oBACA,OAAI;AACJ,6BAAA,MAAA,OAAA,OAAA,GAAA,EAAA,OAAA,OAAA,QAAA,CAAA;oBACA;kBACA;AAGA,2BAAA,WAAA,KAAA,QAAA,KAAA;AACA,2BAAA,IAAA,OAAA,CAAA,OAAA,MAAA,IAAA,IAAA,CAAA,KAAA,OAAA,MAAA,MAAA;kBACA;AAGA,2BAAA,SAAA,KAAA,QAAA,UAAA;AACA,wBAAA,aAAA,UAAA,WAAA,IAAA,QAAA;AACA,iCAAA,IAAA;oBACA;AAEA,2BAAA,IAAA,UAAA,WAAA,OAAA,QAAA,QAAA,MAAA;kBACA;AAGA,2BAAA,SAAA,KAAA,QAAA,OAAA;AACA,wBAAA,OAAA,UAAA,UAAA;AACA,8BAAA;oBACA;AAEA,wBAAA,QAAA,OAAA,SAAA,IAAA,QAAA;AACA,6BAAA;oBACA,OAAI;AACJ,6BAAA,IAAA,QAAA,QAAA,KAAA,MAAA;oBACA;kBACA;AAEA,kCAAA,0BAAA,sCAAA,SAAA;AACA,kCAAA,wBAAA,SAAAC,OAAA,UAAA,QAAA;AACA,wBAAA,WAAA;AAAA,+BAAqC5B,qBAAQ,IAAW;AACxD,2BAAA,OAAA4B,UAAA,UAAA,yBAAA;AAEA,wBAAA;AAEA,wBAAA,OAAA,aAAA,YAAA,WAAA,UAAA,MAAA,GAAA;AACA,mCAAA;AACA,iCAAA,SAAA,QAAA,SAAA,EAAA;oBACA,OAAI;AACJ,mCAAA;oBACA;AAEA,wBAAA;AAEA,wBAAA,SAAAA,OAAA,WAAA,GAAA;AAEA,4BAAA,OAAA,OAAAA,OAAA,GAAA,EAAA,OAAA,YAAA,GAAA,EAAA,OAAA,MAAA,UAAA,MAAA,CAAA;oBACA,OAAI;AACJ,0BAAA,OAAA,SAAAA,OAAA,GAAA,IAAA,aAAA;AACA,4BAAA,QAAA,OAAAA,OAAA,IAAA,EAAA,OAAA,MAAA,GAAA,EAAA,OAAA,YAAA,GAAA,EAAA,OAAA,MAAA,UAAA,MAAA,CAAA;oBACA;AAGA,2BAAA,mBAAA,OAAA/B,SAAA,MAAA,CAAA;AACA,2BAAA;kBACA,GAAC,SAAA;AACD,kCAAA,yBAAA,SAAA+B,OAAA,OAAA;AACA,wBAAA,SAAA,UAAA,SAAA,KAAA,UAAA,CAAA,MAAA,SAAA,UAAA,CAAA,IAAA;AACA,wBAAA,SAAA;AAAA,6BAAiC5B,qBAAQ,IAAO;AAChD,wBAAA,YAAA,KAAA,QAAA,KAAA;AAEA,wBAAA,UAAA,SAAA,KAAA;AACA,kCAAA,GAAA,OAAA,UAAA,MAAA,GAAA,GAAA,GAAA,KAAA;oBACA;AAEA,2BAAA,iBAAA,OAAA4B,OAAA,IAAA,EAAA,OAAA,QAAA,aAAA,EAAA,OAAA,SAAA;kBACA,GAAC,WAAA,UAAA;AACD,kCAAA,4BAAA,SAAA,OAAAA,OAAA,OAAA;AACA,wBAAA;AAEA,wBAAA,SAAA,MAAA,eAAA,MAAA,YAAA,MAAA;AACA,6BAAA,eAAA,OAAA,MAAA,YAAA,IAAA;oBACA,OAAI;AACJ,6BAAA,QAAA,OAAA/B,SAAA,KAAA,CAAA;oBACA;AAEA,2BAAA,YAAA,OAAA,OAAA,4BAAA,EAAA,OAAA+B,OAAA,GAAA,IAAA,qBAAA,OAAA,MAAA,GAAA;kBACA,GAAC,SAAA;AACD,kCAAA,oBAAA,WAAA;AACA,6BAAA,OAAA,UAAA,QAAA,OAAA,IAAA,MAAA,IAAA,GAAA,OAAA,GAAsE,OAAA,MAAa,QAAA;AACnF,2BAAA,IAAA,IAAA,UAAA,IAAA;oBACA;AAEA,wBAAA,WAAA;AAAA,+BAAqC5B,qBAAQ,IAAW;AACxD,2BAAA,KAAA,SAAA,GAAA,wCAAA;AACA,wBAAA,MAAA;AACA,wBAAA,MAAA,KAAA;AACA,2BAAA,KAAA,IAAA,SAAAJ,IAAA;AACA,6BAAA,IAAA,OAAAA,IAAA,GAAA;oBACA,CAAG;AAEH,4BAAA,KAAA;sBACA,KAAA;AACA,+BAAA,GAAA,OAAA,KAAA,CAAA,GAAA,WAAA;AACA;sBAEA,KAAA;AACA,+BAAA,GAAA,OAAA,KAAA,CAAA,GAAA,OAAA,EAAA,OAAA,KAAA,CAAA,GAAA,YAAA;AACA;sBAEA;AACA,+BAAA,KAAA,MAAA,GAAA,MAAA,CAAA,EAAA,KAAA,IAAA;AACA,+BAAA,SAAA,OAAA,KAAA,MAAA,CAAA,GAAA,YAAA;AACA;oBACA;AAEA,2BAAA,GAAA,OAAA,KAAA,oBAAA;kBACA,GAAC,SAAA;AACD,kBAAAM,QAAA,QAAA,QAAoB;;;;;;;;AC9LpB,2BAAA2B,gBAAA,KAAA,GAAA;AAAkC,2BAAAC,iBAAA,GAAA,KAAAC,uBAAA,KAAA,CAAA,KAAAC,kBAAA;kBAAA;AAElC,2BAAAA,oBAAA;AAA8B,0BAAA,IAAA,UAAA,sDAAA;kBAAA;AAE9B,2BAAAD,uBAAA,KAAA,GAAA;AAAyC,wBAAA,OAAA,CAAA;AAAe,wBAAA,KAAA;AAAe,wBAAA,KAAA;AAAgB,wBAAA,KAAA;AAAoB,wBAAA;AAAM,+BAAA,KAAA,IAAA,OAAA,QAAA,EAAA,GAAA,IAA0C,EAAA,MAAA,KAAA,GAAA,KAAA,GAAA,OAA+B,KAAA,MAAA;AAAa,6BAAA,KAAA,GAAA,KAAA;AAAqB,4BAAA,KAAA,KAAA,WAAA;AAAA;sBAAA;oBAAA,SAAuC,KAAA;AAAc,2BAAA;AAAW,2BAAA;oBAAA,UAAY;AAAU,0BAAA;AAAM,4BAAA,CAAA,MAAA,GAAA,QAAA,KAAA;AAAA,6BAAA,QAAA,EAAA;sBAAA,UAAmD;AAAU,4BAAA;AAAA,gCAAA;sBAAA;oBAAA;AAAsB,2BAAA;kBAAA;AAE3Y,2BAAAD,iBAAA,KAAA;AAAgC,wBAAA,MAAA,QAAA,GAAA;AAAA,6BAAA;kBAAA;AAEhC,2BAAAjC,SAAA,KAAA;AAAwB,wBAAA,OAAA,WAAA,cAAA,OAAA,OAAA,aAAA,UAAA;AAA2E,sBAAAA,WAAA,SAAAA,SAAAC,MAAA;AAAkC,+BAAA,OAAAA;sBAAA;oBAAA,OAAwB;AAAO,sBAAAD,WAAA,SAAAA,SAAAC,MAAA;AAAkC,+BAAAA,QAAA,OAAA,WAAA,cAAAA,KAAA,gBAAA,UAAAA,SAAA,OAAA,YAAA,WAAA,OAAAA;sBAAA;oBAAA;AAAmI,2BAAAD,SAAA,GAAA;kBAAA;AAEzU,sBAAA,sBAAA,KAAA,UAAA;AAEA,sBAAA,eAAA,SAAAoC,cAAA,KAAA;AACA,wBAAA,QAAA,CAAA;AACA,wBAAA,QAAA,SAAA,OAAA;AACA,6BAAA,MAAA,KAAA,KAAA;oBACA,CAAG;AACH,2BAAA;kBACA;AAEA,sBAAA,eAAA,SAAAC,cAAAC,MAAA;AACA,wBAAA,QAAA,CAAA;AACA,oBAAAA,KAAA,QAAA,SAAA,OAAA,KAAA;AACA,6BAAA,MAAA,KAAA,CAAA,KAAA,KAAA,CAAA;oBACA,CAAG;AACH,2BAAA;kBACA;AAEA,sBAAA,WAAA,OAAA,KAAA,OAAA,KAAuCnC,qBAAQ,GAAW;AAC1D,sBAAA,8BAAA,OAAA,wBAAA,OAAA,wBAAA,WAAA;AACA,2BAAA,CAAA;kBACA;AACA,sBAAA,cAAA,OAAA,QAAA,OAAA,QAAgDA,qBAAQ,GAAQ;AAEhE,2BAAA,YAAA,GAAA;AACA,2BAAA,EAAA,KAAA,KAAA,CAAA;kBACA;AAEA,sBAAAoC,kBAAA,YAAA,OAAA,UAAA,cAAA;AACA,sBAAA,uBAAA,YAAA,OAAA,UAAA,oBAAA;AACA,sBAAAC,kBAAA,YAAA,OAAA,UAAA,QAAA;AAEA,sBAAA,iBAAqBrC,qBAAA,IAAA,EAAA,OACrB,mBAAA,eAAA,kBACA,oBAAA,eAAA,mBACA,SAAA,eAAA,QACA,QAAA,eAAA,OACA,WAAA,eAAA,UACA,QAAA,eAAA,OACA,gBAAA,eAAA,eACA,mBAAA,eAAA,kBACA,iBAAA,eAAA,gBACA,iBAAA,eAAA,gBACA,kBAAA,eAAA,iBACA,iBAAA,eAAA,gBACA,iBAAA,eAAA,gBACA,iBAAA,eAAA,gBACA,iBAAA,eAAA;AAEA,2BAAA,WAAA,KAAA;AACA,wBAAA,IAAA,WAAA,KAAA,IAAA,SAAA;AAAA,6BAAA;AAEA,6BAAA,IAAA,GAAkB,IAAA,IAAA,QAAgB,KAAA;AAClC,0BAAA,OAAA,IAAA,WAAA,CAAA;AACA,0BAAA,OAAA,MAAA,OAAA;AAAA,+BAAA;oBACA;AAGA,2BAAA,IAAA,WAAA,MAAA,OAAA,KAAA,IAAA,GAAA,EAAA;kBACA;AAEA,2BAAA,yBAAA,OAAA;AACA,2BAAA,OAAA,KAAA,KAAA,EAAA,OAAA,UAAA,EAAA,OAAA,4BAAA,KAAA,EAAA,OAAA,OAAA,UAAA,qBAAA,KAAA,KAAA,CAAA,CAAA;kBACA;AAWA,2BAAA,QAAAJ,IAAA,GAAA;AACA,wBAAAA,OAAA,GAAA;AACA,6BAAA;oBACA;AAEA,wBAAA0C,KAAA1C,GAAA;AACA,wBAAA2C,KAAA,EAAA;AAEA,6BAAA,IAAA,GAAA,MAAA,KAAA,IAAAD,IAAAC,EAAA,GAAwC,IAAA,KAAS,EAAA,GAAA;AACjD,0BAAA3C,GAAA,CAAA,MAAA,EAAA,CAAA,GAAA;AACA,wBAAA0C,KAAA1C,GAAA,CAAA;AACA,wBAAA2C,KAAA,EAAA,CAAA;AACA;sBACA;oBACA;AAEA,wBAAAD,KAAAC,IAAA;AACA,6BAAA;oBACA;AAEA,wBAAAA,KAAAD,IAAA;AACA,6BAAA;oBACA;AAEA,2BAAA;kBACA;AAEA,sBAAA,kBAAA;AACA,sBAAA,UAAA;AACA,sBAAA,SAAA;AACA,sBAAA,cAAA;AACA,sBAAA,WAAA;AACA,sBAAA,SAAA;AACA,sBAAA,SAAA;AAEA,2BAAA,kBAAA1C,IAAA,GAAA;AACA,2BAAA,sBAAAA,GAAA,WAAA,EAAA,UAAAA,GAAA,UAAA,EAAA,QAAA,OAAA,UAAA,SAAA,KAAAA,EAAA,MAAA,OAAA,UAAA,SAAA,KAAA,CAAA;kBACA;AAEA,2BAAA,sBAAAA,IAAA,GAAA;AACA,wBAAAA,GAAA,eAAA,EAAA,YAAA;AACA,6BAAA;oBACA;AAEA,6BAAA,SAAA,GAAuB,SAAAA,GAAA,YAAuB,UAAA;AAC9C,0BAAAA,GAAA,MAAA,MAAA,EAAA,MAAA,GAAA;AACA,+BAAA;sBACA;oBACA;AAEA,2BAAA;kBACA;AAEA,2BAAA,sBAAAA,IAAA,GAAA;AACA,wBAAAA,GAAA,eAAA,EAAA,YAAA;AACA,6BAAA;oBACA;AAEA,2BAAA,QAAA,IAAA,WAAAA,GAAA,QAAAA,GAAA,YAAAA,GAAA,UAAA,GAAA,IAAA,WAAA,EAAA,QAAA,EAAA,YAAA,EAAA,UAAA,CAAA,MAAA;kBACA;AAEA,2BAAA,qBAAA,MAAA,MAAA;AACA,2BAAA,KAAA,eAAA,KAAA,cAAA,QAAA,IAAA,WAAA,IAAA,GAAA,IAAA,WAAA,IAAA,CAAA,MAAA;kBACA;AAEA,2BAAA,sBAAA,MAAA,MAAA;AACA,wBAAA,eAAA,IAAA,GAAA;AACA,6BAAA,eAAA,IAAA,KAAA,SAAA,OAAA,UAAA,QAAA,KAAA,IAAA,GAAA,OAAA,UAAA,QAAA,KAAA,IAAA,CAAA;oBACA;AAEA,wBAAA,eAAA,IAAA,GAAA;AACA,6BAAA,eAAA,IAAA,KAAA,OAAA,UAAA,QAAA,KAAA,IAAA,MAAA,OAAA,UAAA,QAAA,KAAA,IAAA;oBACA;AAEA,wBAAA,gBAAA,IAAA,GAAA;AACA,6BAAA,gBAAA,IAAA,KAAA,QAAA,UAAA,QAAA,KAAA,IAAA,MAAA,QAAA,UAAA,QAAA,KAAA,IAAA;oBACA;AAEA,wBAAA,eAAA,IAAA,GAAA;AACA,6BAAA,eAAA,IAAA,KAAA,OAAA,UAAA,QAAA,KAAA,IAAA,MAAA,OAAA,UAAA,QAAA,KAAA,IAAA;oBACA;AAEA,2BAAA,eAAA,IAAA,KAAA,OAAA,UAAA,QAAA,KAAA,IAAA,MAAA,OAAA,UAAA,QAAA,KAAA,IAAA;kBACA;AAoBA,2BAAA,eAAA,MAAA,MAAA,QAAA,OAAA;AAEA,wBAAA,SAAA,MAAA;AACA,0BAAA,SAAA;AAAA,+BAAA;AACA,6BAAA,SAAA,SAAA,MAAA,IAAA,IAAA;oBACA;AAGA,wBAAA,QAAA;AACA,0BAAAC,SAAA,IAAA,MAAA,UAAA;AACA,+BAAA,OAAA,SAAA,YAAA,YAAA,IAAA,KAAA,YAAA,IAAA;sBACA;AAEA,0BAAAA,SAAA,IAAA,MAAA,YAAA,SAAA,QAAA,SAAA,MAAA;AACA,+BAAA;sBACA;AAEA,0BAAA,OAAA,eAAA,IAAA,MAAA,OAAA,eAAA,IAAA,GAAA;AACA,+BAAA;sBACA;oBACA,OAAI;AACJ,0BAAA,SAAA,QAAAA,SAAA,IAAA,MAAA,UAAA;AACA,4BAAA,SAAA,QAAAA,SAAA,IAAA,MAAA,UAAA;AAEA,iCAAA,QAAA;wBACA;AAEA,+BAAA;sBACA;AAEA,0BAAA,SAAA,QAAAA,SAAA,IAAA,MAAA,UAAA;AACA,+BAAA;sBACA;oBACA;AAEA,wBAAA,UAAAwC,gBAAA,IAAA;AACA,wBAAA,UAAAA,gBAAA,IAAA;AAEA,wBAAA,YAAA,SAAA;AACA,6BAAA;oBACA;AAEA,wBAAA,MAAA,QAAA,IAAA,GAAA;AAEA,0BAAA,KAAA,WAAA,KAAA,QAAA;AACA,+BAAA;sBACA;AAEA,0BAAA,QAAA,yBAAA,MAAA,eAAA;AACA,0BAAA,QAAA,yBAAA,MAAA,eAAA;AAEA,0BAAA,MAAA,WAAA,MAAA,QAAA;AACA,+BAAA;sBACA;AAEA,6BAAA,SAAA,MAAA,MAAA,QAAA,OAAA,UAAA,KAAA;oBACA;AAKA,wBAAA,YAAA,mBAAA;AAEA,0BAAA,CAAA,MAAA,IAAA,KAAA,MAAA,IAAA,KAAA,CAAA,MAAA,IAAA,KAAA,MAAA,IAAA,GAAA;AACA,+BAAA;sBACA;oBACA;AAEA,wBAAA,OAAA,IAAA,GAAA;AACA,0BAAA,CAAA,OAAA,IAAA,KAAA,KAAA,UAAA,QAAA,KAAA,IAAA,MAAA,KAAA,UAAA,QAAA,KAAA,IAAA,GAAA;AACA,+BAAA;sBACA;oBACA,WAAI,SAAA,IAAA,GAAA;AACJ,0BAAA,CAAA,SAAA,IAAA,KAAA,CAAA,kBAAA,MAAA,IAAA,GAAA;AACA,+BAAA;sBACA;oBACA,WAAI,cAAA,IAAA,KAAA,gBAAA,OAAA;AAGJ,0BAAA,KAAA,YAAA,KAAA,WAAA,KAAA,SAAA,KAAA,MAAA;AACA,+BAAA;sBACA;oBACA,WAAI,kBAAA,IAAA,GAAA;AACJ,0BAAA,CAAA,WAAA,eAAA,IAAA,KAAA,eAAA,IAAA,IAAA;AACA,4BAAA,CAAA,sBAAA,MAAA,IAAA,GAAA;AACA,iCAAA;wBACA;sBACA,WAAM,CAAA,sBAAA,MAAA,IAAA,GAAA;AACN,+BAAA;sBACA;AAKA,0BAAAG,SAAA,yBAAA,MAAA,eAAA;AAEA,0BAAAC,UAAA,yBAAA,MAAA,eAAA;AAEA,0BAAAD,OAAA,WAAAC,QAAA,QAAA;AACA,+BAAA;sBACA;AAEA,6BAAA,SAAA,MAAA,MAAA,QAAA,OAAA,aAAAD,MAAA;oBACA,WAAI,MAAA,IAAA,GAAA;AACJ,0BAAA,CAAA,MAAA,IAAA,KAAA,KAAA,SAAA,KAAA,MAAA;AACA,+BAAA;sBACA;AAEA,6BAAA,SAAA,MAAA,MAAA,QAAA,OAAA,MAAA;oBACA,WAAI,MAAA,IAAA,GAAA;AACJ,0BAAA,CAAA,MAAA,IAAA,KAAA,KAAA,SAAA,KAAA,MAAA;AACA,+BAAA;sBACA;AAEA,6BAAA,SAAA,MAAA,MAAA,QAAA,OAAA,MAAA;oBACA,WAAI,iBAAA,IAAA,GAAA;AACJ,0BAAA,CAAA,qBAAA,MAAA,IAAA,GAAA;AACA,+BAAA;sBACA;oBACA,WAAI,iBAAA,IAAA,KAAA,CAAA,sBAAA,MAAA,IAAA,GAAA;AACJ,6BAAA;oBACA;AAEA,2BAAA,SAAA,MAAA,MAAA,QAAA,OAAA,WAAA;kBACA;AAEA,2BAAA,eAAA,KAAA,MAAA;AACA,2BAAA,KAAA,OAAA,SAAAE,IAAA;AACA,6BAAA,qBAAA,KAAAA,EAAA;oBACA,CAAG;kBACH;AAEA,2BAAA,SAAA,MAAA,MAAA,QAAA,OAAA,eAAA,OAAA;AAQA,wBAAA,UAAA,WAAA,GAAA;AACA,8BAAA,OAAA,KAAA,IAAA;AACA,0BAAA,QAAA,OAAA,KAAA,IAAA;AAEA,0BAAA,MAAA,WAAA,MAAA,QAAA;AACA,+BAAA;sBACA;oBACA;AAGA,wBAAA,IAAA;AAEA,2BAAS,IAAA,MAAA,QAAkB,KAAA;AAC3B,0BAAA,CAAAN,gBAAA,MAAA,MAAA,CAAA,CAAA,GAAA;AACA,+BAAA;sBACA;oBACA;AAEA,wBAAA,UAAA,UAAA,WAAA,GAAA;AACA,0BAAA,cAAA,4BAAA,IAAA;AAEA,0BAAA,YAAA,WAAA,GAAA;AACA,4BAAA,QAAA;AAEA,6BAAA,IAAA,GAAkB,IAAA,YAAA,QAAwB,KAAA;AAC1C,8BAAA,MAAA,YAAA,CAAA;AAEA,8BAAA,qBAAA,MAAA,GAAA,GAAA;AACA,gCAAA,CAAA,qBAAA,MAAA,GAAA,GAAA;AACA,qCAAA;4BACA;AAEA,kCAAA,KAAA,GAAA;AACA;0BACA,WAAU,qBAAA,MAAA,GAAA,GAAA;AACV,mCAAA;0BACA;wBACA;AAEA,4BAAA,cAAA,4BAAA,IAAA;AAEA,4BAAA,YAAA,WAAA,YAAA,UAAA,eAAA,MAAA,WAAA,EAAA,WAAA,OAAA;AACA,iCAAA;wBACA;sBACA,OAAM;AACN,4BAAA,eAAA,4BAAA,IAAA;AAEA,4BAAA,aAAA,WAAA,KAAA,eAAA,MAAA,YAAA,EAAA,WAAA,GAAA;AACA,iCAAA;wBACA;sBACA;oBACA;AAEA,wBAAA,MAAA,WAAA,MAAA,kBAAA,eAAA,kBAAA,YAAA,KAAA,WAAA,KAAA,KAAA,SAAA,IAAA;AACA,6BAAA;oBACA;AAGA,wBAAA,UAAA,QAAA;AACA,8BAAA;wBACA,MAAA,oBAAA,IAAA;wBACA,MAAA,oBAAA,IAAA;wBACA,UAAA;sBACA;oBACA,OAAI;AAIJ,0BAAA,YAAA,MAAA,KAAA,IAAA,IAAA;AAEA,0BAAA,cAAA,QAAA;AACA,4BAAA,YAAA,MAAA,KAAA,IAAA,IAAA;AAEA,4BAAA,cAAA,QAAA;AACA,iCAAA,cAAA;wBACA;sBACA;AAEA,4BAAA;oBACA;AAEA,0BAAA,KAAA,IAAA,MAAA,MAAA,QAAA;AACA,0BAAA,KAAA,IAAA,MAAA,MAAA,QAAA;AACA,wBAAA,QAAA,SAAA,MAAA,MAAA,QAAA,OAAA,OAAA,aAAA;AACA,0BAAA,KAAA,OAAA,IAAA;AACA,0BAAA,KAAA,OAAA,IAAA;AACA,2BAAA;kBACA;AAEA,2BAAA,mBAAA,KAAA,MAAA,QAAA,MAAA;AAEA,wBAAA,YAAA,aAAA,GAAA;AAEA,6BAAA,IAAA,GAAkB,IAAA,UAAA,QAAsB,KAAA;AACxC,0BAAA,OAAA,UAAA,CAAA;AAEA,0BAAA,eAAA,MAAA,MAAA,QAAA,IAAA,GAAA;AAEA,4BAAA,OAAA,IAAA;AACA,+BAAA;sBACA;oBACA;AAEA,2BAAA;kBACA;AAMA,2BAAA,4BAAA,MAAA;AACA,4BAAAvC,SAAA,IAAA,GAAA;sBACA,KAAA;AACA,+BAAA;sBAEA,KAAA;AAEA,+BAAA;sBAEA,KAAA;AACA,+BAAA;sBAEA,KAAA;AACA,+BAAA,CAAA;sBAKA,KAAA;AACA,4BAAA,YAAA,IAAA,GAAA;AACA,iCAAA;wBACA;oBAEA;AAEA,2BAAA;kBACA;AAEA,2BAAA,sBAAAD,IAAA,GAAA,MAAA;AACA,wBAAA,WAAA,4BAAA,IAAA;AACA,wBAAA,YAAA;AAAA,6BAAA;AACA,2BAAA,EAAA,IAAA,QAAA,KAAA,CAAAA,GAAA,IAAA,QAAA;kBACA;AAEA,2BAAA,sBAAAA,IAAA,GAAA,MAAA,MAAA,MAAA;AACA,wBAAA,WAAA,4BAAA,IAAA;AAEA,wBAAA,YAAA,MAAA;AACA,6BAAA;oBACA;AAEA,wBAAA,OAAA,EAAA,IAAA,QAAA;AAEA,wBAAA,SAAA,UAAA,CAAA,EAAA,IAAA,QAAA,KAAA,CAAA,eAAA,MAAA,MAAA,OAAA,IAAA,GAAA;AACA,6BAAA;oBACA;AAEA,2BAAA,CAAAA,GAAA,IAAA,QAAA,KAAA,eAAA,MAAA,MAAA,OAAA,IAAA;kBACA;AAEA,2BAAA,SAAAA,IAAA,GAAA,QAAA,MAAA;AAGA,wBAAA,MAAA;AACA,wBAAA,UAAA,aAAAA,EAAA;AAEA,6BAAA,IAAA,GAAkB,IAAA,QAAA,QAAoB,KAAA;AACtC,0BAAA,MAAA,QAAA,CAAA;AAIA,0BAAAC,SAAA,GAAA,MAAA,YAAA,QAAA,MAAA;AACA,4BAAA,QAAA,MAAA;AACA,gCAAA,oBAAA,IAAA;wBACA;AAMA,4BAAA,IAAA,GAAA;sBACA,WAAM,CAAA,EAAA,IAAA,GAAA,GAAA;AACN,4BAAA;AAAA,iCAAA;AAEA,4BAAA,CAAA,sBAAAD,IAAA,GAAA,GAAA,GAAA;AACA,iCAAA;wBACA;AAEA,4BAAA,QAAA,MAAA;AACA,gCAAA,oBAAA,IAAA;wBACA;AAEA,4BAAA,IAAA,GAAA;sBACA;oBACA;AAEA,wBAAA,QAAA,MAAA;AACA,0BAAA,UAAA,aAAA,CAAA;AAEA,+BAAA,KAAA,GAAqB,KAAA,QAAA,QAAqB,MAAA;AAC1C,4BAAA,OAAA,QAAA,EAAA;AAGA,4BAAAC,SAAA,IAAA,MAAA,YAAA,SAAA,MAAA;AACA,8BAAA,CAAA,mBAAA,KAAA,MAAA,QAAA,IAAA;AAAA,mCAAA;wBACA,WAAQ,CAAA,UAAA,CAAAD,GAAA,IAAA,IAAA,KAAA,CAAA,mBAAA,KAAA,MAAA,QAAA,IAAA,GAAA;AACR,iCAAA;wBACA;sBACA;AAEA,6BAAA,IAAA,SAAA;oBACA;AAEA,2BAAA;kBACA;AAEA,2BAAA,iBAAA,KAAAuC,MAAA,MAAA,OAAA,QAAA,MAAA;AAIA,wBAAA,YAAA,aAAA,GAAA;AAEA,6BAAA,IAAA,GAAkB,IAAA,UAAA,QAAsB,KAAA;AACxC,0BAAA,OAAA,UAAA,CAAA;AAEA,0BAAA,eAAA,MAAA,MAAA,QAAA,IAAA,KAAA,eAAA,OAAAA,KAAA,IAAA,IAAA,GAAA,QAAA,IAAA,GAAA;AACA,4BAAA,OAAA,IAAA;AACA,+BAAA;sBACA;oBACA;AAEA,2BAAA;kBACA;AAEA,2BAAA,SAAAvC,IAAA,GAAA,QAAA,MAAA;AACA,wBAAA,MAAA;AACA,wBAAA,WAAA,aAAAA,EAAA;AAEA,6BAAA,IAAA,GAAkB,IAAA,SAAA,QAAqB,KAAA;AACvC,0BAAA,cAAAiC,gBAAA,SAAA,CAAA,GAAA,CAAA,GACA,MAAA,YAAA,CAAA,GACA,QAAA,YAAA,CAAA;AAEA,0BAAAhC,SAAA,GAAA,MAAA,YAAA,QAAA,MAAA;AACA,4BAAA,QAAA,MAAA;AACA,gCAAA,oBAAA,IAAA;wBACA;AAEA,4BAAA,IAAA,GAAA;sBACA,OAAM;AAGN,4BAAA,QAAA,EAAA,IAAA,GAAA;AAEA,4BAAA,UAAA,UAAA,CAAA,EAAA,IAAA,GAAA,KAAA,CAAA,eAAA,OAAA,OAAA,QAAA,IAAA,GAAA;AACA,8BAAA;AAAA,mCAAA;AAGA,8BAAA,CAAA,sBAAAD,IAAA,GAAA,KAAA,OAAA,IAAA;AAAA,mCAAA;AAEA,8BAAA,QAAA,MAAA;AACA,kCAAA,oBAAA,IAAA;0BACA;AAEA,8BAAA,IAAA,GAAA;wBACA;sBACA;oBACA;AAEA,wBAAA,QAAA,MAAA;AACA,0BAAA,WAAA,aAAA,CAAA;AAEA,+BAAA,MAAA,GAAsB,MAAA,SAAA,QAAuB,OAAA;AAC7C,4BAAA,eAAAiC,gBAAA,SAAA,GAAA,GAAA,CAAA,GACA,MAAA,aAAA,CAAA,GACA,OAAA,aAAA,CAAA;AAEA,4BAAAhC,SAAA,GAAA,MAAA,YAAA,QAAA,MAAA;AACA,8BAAA,CAAA,iBAAA,KAAAD,IAAA,KAAA,MAAA,QAAA,IAAA;AAAA,mCAAA;wBACA,WAAQ,CAAA,WAAA,CAAAA,GAAA,IAAA,GAAA,KAAA,CAAA,eAAAA,GAAA,IAAA,GAAA,GAAA,MAAA,OAAA,IAAA,MAAA,CAAA,iBAAA,KAAAA,IAAA,KAAA,MAAA,OAAA,IAAA,GAAA;AACR,iCAAA;wBACA;sBACA;AAEA,6BAAA,IAAA,SAAA;oBACA;AAEA,2BAAA;kBACA;AAEA,2BAAA,SAAAA,IAAA,GAAA,QAAA,MAAA,OAAA,eAAA;AAGA,wBAAA,IAAA;AAEA,wBAAA,kBAAA,QAAA;AACA,0BAAA,CAAA,SAAAA,IAAA,GAAA,QAAA,KAAA,GAAA;AACA,+BAAA;sBACA;oBACA,WAAI,kBAAA,QAAA;AACJ,0BAAA,CAAA,SAAAA,IAAA,GAAA,QAAA,KAAA,GAAA;AACA,+BAAA;sBACA;oBACA,WAAI,kBAAA,UAAA;AACJ,6BAAW,IAAAA,GAAA,QAAc,KAAA;AACzB,4BAAAwC,gBAAAxC,IAAA,CAAA,GAAA;AACA,8BAAA,CAAAwC,gBAAA,GAAA,CAAA,KAAA,CAAA,eAAAxC,GAAA,CAAA,GAAA,EAAA,CAAA,GAAA,QAAA,KAAA,GAAA;AACA,mCAAA;0BACA;wBACA,WAAQwC,gBAAA,GAAA,CAAA,GAAA;AACR,iCAAA;wBACA,OAAQ;AAER,8BAAA,QAAA,OAAA,KAAAxC,EAAA;AAEA,iCAAe,IAAA,MAAA,QAAkB,KAAA;AACjC,gCAAA,MAAA,MAAA,CAAA;AAEA,gCAAA,CAAAwC,gBAAA,GAAA,GAAA,KAAA,CAAA,eAAAxC,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,QAAA,KAAA,GAAA;AACA,qCAAA;4BACA;0BACA;AAEA,8BAAA,MAAA,WAAA,OAAA,KAAA,CAAA,EAAA,QAAA;AACA,mCAAA;0BACA;AAEA,iCAAA;wBACA;sBACA;oBACA;AAIA,yBAAA,IAAA,GAAc,IAAA,KAAA,QAAiB,KAAA;AAC/B,0BAAA,OAAA,KAAA,CAAA;AAEA,0BAAA,CAAA,eAAAA,GAAA,IAAA,GAAA,EAAA,IAAA,GAAA,QAAA,KAAA,GAAA;AACA,+BAAA;sBACA;oBACA;AAEA,2BAAA;kBACA;AAEA,2BAAA,YAAA,MAAA,MAAA;AACA,2BAAA,eAAA,MAAA,MAAA,MAAA;kBACA;AAEA,2BAAA,kBAAA,MAAA,MAAA;AACA,2BAAA,eAAA,MAAA,MAAA,OAAA;kBACA;AAEA,kBAAAM,QAAA,UAAA;oBACA;oBACA;kBACA;;;;;;;;AC9qBAyC,kBAAAA,SAAAA,KAAa;AACbA,kBAAAA,SAAAA,KAAa;AACbA,kBAAAA,SAAAA,KAAa;AACbA,kBAAAA,SAAAA,KAAa;AACbA,kBAAAA,SAAAA,KAAa;AACbA,kBAAAA,SAAAA,KAAa;AACbA,kBAAAA,SAAAA,KAAa;AACbA,kBAAAA,SAAAA,KAAa;AACbA,kBAAAA,SAAAA,KAAa;AACbA,kBAAAA,SAAAA,KAAa;AACbA,kBAAAA,SAAAA,KAAa;AACbA,kBAAAA,SAAAA,KAAa;AACbA,kBAAAA,SAAAA,KAAa;AACbA,kBAAAA,SAAAA,KAAa;AACbA,kBAAAA,SAAAA,KAAa;AACbA,kBAAAA,SAAAA,KAAa;AACbA,kBAAAA,SAAAA,KAAa;AACbA,kBAAAA,SAAAA,KAAa;AACbA,kBAAAA,SAAAA,KAAa;AACbA,kBAAAA,SAAAA,KAAa;AACbA,kBAAAA,SAAAA,KAAa;AACbA,kBAAAA,SAAAA,KAAa;AACbA,kBAAAA,SAAAA,KAAa;AACbA,kBAAAA,SAAAA,KAAa;AACbA,kBAAAA,SAAAA,KAAa;AACbA,kBAAAA,SAAAA,KAAa;AACbA,kBAAAA,SAAAA,KAAa;AACbA,kBAAAA,SAAAA,KAAa;AACbA,kBAAAA,SAAAA,KAAa;AACbA,kBAAAA,SAAAA,KAAa;AACbA,kBAAAA,SAAAA,KAAa;AACbA,kBAAAA,SAAAA,MAAc;AACdA,kBAAAA,SAAAA,KAAa;AAGbA,kBAAAA,SAAAA,KAAa;AACbA,kBAAAA,SAAAA,KAAa;AACbA,kBAAAA,SAAAA,KAAa;AACbA,kBAAAA,SAAAA,KAAa;AACbA,kBAAAA,SAAAA,KAAa;AACbA,kBAAAA,SAAAA,KAAa;AACbA,kBAAAA,SAAAA,KAAa;AACbA,kBAAAA,SAAAA,KAAa;AACbA,kBAAAA,SAAAA,KAAa;AACbA,kBAAAA,SAAAA,KAAa;;;;;;;;AC7Cb,sBAAIC,QAAQC,QAAQC,QAAQC,QAAQC;AACpCL,kBAAAA,SAAAA,SAAkBG,SAAS;AAC3BH,kBAAAA,SAAAA,SAAkBI,SAAS;AAC3BJ,kBAAAA,SAAAA,SAAkBC,SAAS;AAC3BD,kBAAAA,SAAAA,SAAkBE,SAAS;AAC3BF,kBAAAA,SAAAA,SAAkBK,SAAS;AAM3BL,kBAAAA,SAAAA,YAAoB;;oBAElB,CAACK,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQH,QAAQG,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,MAAM;;oBACvQ,CAACF,QAAQE,QAAQA,QAAQD,QAAQA,QAAQC,QAAQA,QAAQA,QAAQA,QAAQD,QAAQA,QAAQD,QAAQA,QAAQA,QAAQA,QAAQC,QAAQA,QAAQA,QAAQD,QAAQA,QAAQE,QAAQJ,QAAQI,QAAQF,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQC,QAAQD,MAAM;;oBACvQ,CAACA,QAAQE,QAAQA,QAAQD,QAAQA,QAAQC,QAAQA,QAAQA,QAAQA,QAAQD,QAAQA,QAAQA,QAAQA,QAAQA,QAAQD,QAAQC,QAAQA,QAAQA,QAAQD,QAAQA,QAAQE,QAAQJ,QAAQI,QAAQF,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQC,QAAQD,MAAM;;oBACvQ,CAACE,QAAQA,QAAQA,QAAQD,QAAQA,QAAQA,QAAQC,QAAQA,QAAQA,QAAQD,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQC,QAAQJ,QAAQI,QAAQD,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,MAAM;;oBACvQ,CAACA,QAAQC,QAAQA,QAAQD,QAAQA,QAAQA,QAAQC,QAAQA,QAAQA,QAAQD,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQC,QAAQJ,QAAQI,QAAQD,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,MAAM;;oBACvQ,CAACD,QAAQE,QAAQA,QAAQD,QAAQA,QAAQA,QAAQC,QAAQA,QAAQA,QAAQF,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQC,QAAQA,QAAQA,QAAQD,QAAQA,QAAQE,QAAQJ,QAAQI,QAAQF,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQC,QAAQD,MAAM;;oBACvQ,CAACA,QAAQE,QAAQA,QAAQD,QAAQA,QAAQA,QAAQC,QAAQA,QAAQA,QAAQF,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQC,QAAQA,QAAQA,QAAQD,QAAQA,QAAQE,QAAQJ,QAAQI,QAAQF,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQC,QAAQD,MAAM;;oBACvQ,CAACA,QAAQE,QAAQA,QAAQD,QAAQA,QAAQA,QAAQC,QAAQA,QAAQA,QAAQF,QAAQA,QAAQC,QAAQD,QAAQC,QAAQD,QAAQC,QAAQA,QAAQA,QAAQD,QAAQA,QAAQE,QAAQJ,QAAQI,QAAQF,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQC,QAAQD,MAAM;;oBACvQ,CAACA,QAAQE,QAAQA,QAAQD,QAAQA,QAAQA,QAAQC,QAAQA,QAAQA,QAAQF,QAAQA,QAAQC,QAAQA,QAAQA,QAAQD,QAAQC,QAAQA,QAAQA,QAAQD,QAAQA,QAAQE,QAAQJ,QAAQI,QAAQF,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQC,QAAQD,MAAM;;oBACvQ,CAACC,QAAQC,QAAQA,QAAQD,QAAQA,QAAQA,QAAQC,QAAQA,QAAQA,QAAQF,QAAQA,QAAQC,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQD,QAAQA,QAAQE,QAAQJ,QAAQI,QAAQD,QAAQA,QAAQA,QAAQA,QAAQA,QAAQD,QAAQC,QAAQA,QAAQA,QAAQD,MAAM;;oBACvQ,CAACC,QAAQC,QAAQA,QAAQD,QAAQA,QAAQA,QAAQC,QAAQA,QAAQA,QAAQF,QAAQA,QAAQC,QAAQA,QAAQA,QAAQD,QAAQC,QAAQA,QAAQA,QAAQD,QAAQA,QAAQE,QAAQJ,QAAQI,QAAQF,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQC,QAAQD,MAAM;;oBACvQ,CAACC,QAAQC,QAAQA,QAAQD,QAAQA,QAAQA,QAAQC,QAAQA,QAAQA,QAAQD,QAAQA,QAAQA,QAAQA,QAAQA,QAAQD,QAAQC,QAAQA,QAAQA,QAAQD,QAAQA,QAAQE,QAAQJ,QAAQI,QAAQF,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQC,QAAQD,MAAM;;oBACvQ,CAACC,QAAQC,QAAQA,QAAQD,QAAQA,QAAQA,QAAQC,QAAQA,QAAQA,QAAQD,QAAQA,QAAQA,QAAQA,QAAQA,QAAQD,QAAQC,QAAQA,QAAQA,QAAQD,QAAQA,QAAQE,QAAQJ,QAAQI,QAAQF,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQC,QAAQD,MAAM;;oBACvQ,CAACC,QAAQC,QAAQA,QAAQD,QAAQA,QAAQA,QAAQC,QAAQA,QAAQA,QAAQD,QAAQA,QAAQA,QAAQA,QAAQA,QAAQD,QAAQC,QAAQA,QAAQA,QAAQD,QAAQA,QAAQE,QAAQJ,QAAQI,QAAQF,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQC,QAAQD,MAAM;;oBACvQ,CAACA,QAAQE,QAAQA,QAAQD,QAAQA,QAAQA,QAAQC,QAAQA,QAAQA,QAAQF,QAAQC,QAAQD,QAAQA,QAAQA,QAAQA,QAAQC,QAAQA,QAAQA,QAAQD,QAAQA,QAAQE,QAAQJ,QAAQI,QAAQF,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQC,QAAQD,MAAM;;oBACvQ,CAACA,QAAQE,QAAQA,QAAQD,QAAQA,QAAQA,QAAQC,QAAQA,QAAQA,QAAQF,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQC,QAAQA,QAAQA,QAAQD,QAAQA,QAAQE,QAAQJ,QAAQI,QAAQF,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQC,QAAQD,MAAM;;oBACvQ,CAACA,QAAQE,QAAQA,QAAQD,QAAQD,QAAQC,QAAQC,QAAQA,QAAQA,QAAQF,QAAQA,QAAQC,QAAQD,QAAQA,QAAQA,QAAQC,QAAQA,QAAQA,QAAQD,QAAQA,QAAQE,QAAQJ,QAAQI,QAAQF,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQC,QAAQD,MAAM;;oBACvQ,CAACA,QAAQE,QAAQA,QAAQD,QAAQD,QAAQC,QAAQC,QAAQA,QAAQA,QAAQF,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQC,QAAQA,QAAQA,QAAQD,QAAQA,QAAQE,QAAQJ,QAAQI,QAAQF,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQC,QAAQD,MAAM;;oBACvQ,CAACC,QAAQC,QAAQA,QAAQD,QAAQA,QAAQA,QAAQC,QAAQA,QAAQA,QAAQD,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQC,QAAQJ,QAAQI,QAAQD,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQD,MAAM;;oBACvQ,CAACA,QAAQE,QAAQA,QAAQD,QAAQA,QAAQA,QAAQC,QAAQA,QAAQA,QAAQF,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQC,QAAQA,QAAQA,QAAQD,QAAQE,QAAQA,QAAQJ,QAAQI,QAAQF,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQC,QAAQD,MAAM;;oBACvQ,CAACA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQE,QAAQF,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,MAAM;;oBACvQ,CAACC,QAAQC,QAAQA,QAAQD,QAAQA,QAAQA,QAAQC,QAAQA,QAAQA,QAAQD,QAAQA,QAAQA,QAAQA,QAAQA,QAAQD,QAAQC,QAAQA,QAAQA,QAAQD,QAAQA,QAAQE,QAAQJ,QAAQI,QAAQF,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQC,QAAQD,MAAM;;oBACvQ,CAACC,QAAQC,QAAQA,QAAQD,QAAQA,QAAQA,QAAQC,QAAQA,QAAQA,QAAQD,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQC,QAAQJ,QAAQI,QAAQD,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,MAAM;;oBACvQ,CAACD,QAAQE,QAAQA,QAAQD,QAAQA,QAAQA,QAAQC,QAAQA,QAAQA,QAAQF,QAAQC,QAAQD,QAAQA,QAAQA,QAAQA,QAAQC,QAAQA,QAAQA,QAAQD,QAAQA,QAAQE,QAAQJ,QAAQI,QAAQF,QAAQA,QAAQA,QAAQC,QAAQA,QAAQD,QAAQA,QAAQA,QAAQC,QAAQD,MAAM;;oBACvQ,CAACA,QAAQE,QAAQA,QAAQD,QAAQA,QAAQA,QAAQC,QAAQA,QAAQA,QAAQF,QAAQC,QAAQD,QAAQA,QAAQA,QAAQA,QAAQC,QAAQA,QAAQA,QAAQD,QAAQA,QAAQE,QAAQJ,QAAQI,QAAQF,QAAQA,QAAQA,QAAQA,QAAQC,QAAQD,QAAQA,QAAQA,QAAQC,QAAQD,MAAM;;oBACvQ,CAACA,QAAQE,QAAQA,QAAQD,QAAQA,QAAQA,QAAQC,QAAQA,QAAQA,QAAQF,QAAQC,QAAQD,QAAQA,QAAQA,QAAQA,QAAQC,QAAQA,QAAQA,QAAQD,QAAQA,QAAQE,QAAQJ,QAAQI,QAAQD,QAAQA,QAAQA,QAAQA,QAAQD,QAAQA,QAAQA,QAAQA,QAAQC,QAAQD,MAAM;;oBACvQ,CAACA,QAAQE,QAAQA,QAAQD,QAAQA,QAAQA,QAAQC,QAAQA,QAAQA,QAAQF,QAAQC,QAAQD,QAAQA,QAAQA,QAAQA,QAAQC,QAAQA,QAAQA,QAAQD,QAAQA,QAAQE,QAAQJ,QAAQI,QAAQF,QAAQA,QAAQA,QAAQC,QAAQA,QAAQD,QAAQA,QAAQA,QAAQC,QAAQD,MAAM;;oBACvQ,CAACA,QAAQE,QAAQA,QAAQD,QAAQA,QAAQA,QAAQC,QAAQA,QAAQA,QAAQF,QAAQC,QAAQD,QAAQA,QAAQA,QAAQA,QAAQC,QAAQA,QAAQA,QAAQD,QAAQA,QAAQE,QAAQJ,QAAQI,QAAQF,QAAQA,QAAQA,QAAQA,QAAQC,QAAQD,QAAQA,QAAQA,QAAQC,QAAQD,MAAM;;oBACvQ,CAACA,QAAQE,QAAQA,QAAQD,QAAQA,QAAQA,QAAQC,QAAQA,QAAQA,QAAQF,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQC,QAAQA,QAAQA,QAAQD,QAAQA,QAAQE,QAAQJ,QAAQI,QAAQF,QAAQA,QAAQA,QAAQA,QAAQA,QAAQC,QAAQD,QAAQA,QAAQC,QAAQD,MAAM;;oBACvQ,CAACA,QAAQE,QAAQA,QAAQD,QAAQA,QAAQA,QAAQC,QAAQA,QAAQA,QAAQF,QAAQC,QAAQD,QAAQA,QAAQA,QAAQA,QAAQC,QAAQA,QAAQA,QAAQD,QAAQA,QAAQE,QAAQJ,QAAQI,QAAQF,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQC,QAAQA,QAAQD,MAAM;;oBACvQ,CAACA,QAAQE,QAAQA,QAAQD,QAAQA,QAAQA,QAAQC,QAAQA,QAAQA,QAAQF,QAAQC,QAAQD,QAAQA,QAAQA,QAAQA,QAAQC,QAAQA,QAAQA,QAAQD,QAAQA,QAAQE,QAAQJ,QAAQI,QAAQF,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQC,QAAQD,MAAM;;oBACvQ,CAACC,QAAQC,QAAQA,QAAQD,QAAQA,QAAQA,QAAQC,QAAQA,QAAQA,QAAQD,QAAQA,QAAQA,QAAQA,QAAQA,QAAQD,QAAQC,QAAQA,QAAQA,QAAQD,QAAQA,QAAQE,QAAQJ,QAAQI,QAAQF,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQC,QAAQD,MAAM;;oBACvQ,CAACA,QAAQE,QAAQA,QAAQD,QAAQA,QAAQD,QAAQE,QAAQA,QAAQA,QAAQF,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQE,QAAQJ,QAAQI,QAAQF,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQA,QAAQC,QAAQD,MAAM;;kBAAG;;;;;;;;;AC7C5QH,kBAAAA,SAAAA,eAAAA,qBAAAA,IAAAA;AACAA,kBAAAA,SAAAA,eAAAA,qBAAAA,IAAAA;AACAA,kBAAAA,SAAAA,QAAAA,qBAAAA,IAAAA;AACAA,kBAAAA,SAAAA,YAAAA,qBAAAA,IAAAA;AACAA,kBAAAA,SAAAA,WAAAA,qBAAAA,IAAAA;AACAA,kBAAAA,SAAAA,UAAAA,qBAAAA,IAAAA;AACAA,kBAAAA,SAAAA,SAAAA,qBAAAA,IAAAA;AACAA,kBAAAA,SAAAA,OAAAA,qBAAAA,IAAAA;AACAA,kBAAAA,SAAAA,WAAAA,qBAAAA,IAAAA;AACAA,kBAAAA,SAAAA,WAAAA,qBAAAA,IAAAA;AACAA,kBAAAA,SAAAA,SAAAA,qBAAAA,IAAAA;AACAA,kBAAAA,SAAAA,SAAAA,qBAAAA,IAAAA;AACAA,kBAAAA,SAAAA,kBAAAA,qBAAAA,IAAAA;AAEA,sBAAMM,QAAoBC,qBAAQ,IAAa;AAC/C,sBAAMC,UAAoBD,qBAAQ,IAAc;AAChD,sBAAME,UAAoBF,qBAAQ,IAAe;AAEjDG,yBAAOC,OAAOX,UAASM,OAAOE,SAASC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClB9C,sBAAA,WAAyBF,qBAAQ,IAAU,GAA7BC,UAAO,SAAdI;AACP,sBAAMN,QAAQC,qBAAQ,IAAS;AAAE,sBAE3BM,SAAM,2BAAA;AACV,6BAAAA,QAAYC,MAAMC,SAAQC,YAAsB;AAAA,0BAAtBA,eAAU,QAAA;AAAVA,qCAAa;sBAAO;AAC5C,2BAAKF,OAAOA;AACZ,2BAAKC,SAASA;AACd,2BAAKC,aAAaA;oBACpB;AAAC,wBAAA,SAAAH,QAAA;AAAA,2BAEDI,SAAA,SAAA,OAAOC,QAAQC,QAAQ;AACrB,0BAAIJ;AACJ,0BAAQK,MAAQF,OAARE;AAER,0BAAMC,MAAM,CAAA;AACZ,0BAAIC,MAAMH;AAEV,0BAAI,KAAKJ,UAAU,MAAM;AACvBA,wBAAAA,UAAST,MAAMiB,cAAc,KAAKR,QAAQG,QAAQC,MAAM;sBAC1D;AAEA,0BAAI,KAAKJ,kBAAkBP,SAAS;AAElCE,+BAAOc,iBAAiBH,KAAK;0BAC3BF,QAAgB;4BAAEM,OAAON;0BAAO;0BAChCO,cAAgB;4BAAED,OAAOL;0BAAI;0BAC7BO,gBAAgB;4BAAEF,OAAO;4BAAGG,UAAU;0BAAK;0BAC3CC,SAAgB;4BAAEJ,OAAOV;0BAAO;wBAClC,CAAC;AAEDO,8BAAMD;sBACR;AAEA,0BAAKN,WAAU,QAAU,KAAKC,eAAe,SAAU;AACrD,4BAAMc,SAAUf,WAAU,OACxBG,OAAOE,MAAML,WACZI,UAAU,OAAOA,OAAOU,UAAUE,UACnCZ,OAAOO,eAAeP,OAAOU,UAE7BX,OAAOH;AAET,+BAAOG,OAAOE,MAAMU,QAAQ;AAC1BT,8BAAIW,KAAK,KAAKlB,KAAKG,OAAOC,QAAQI,GAAG,CAAC;wBACxC;sBAEF,OAAO;AACL,iCAASW,IAAI,GAAGC,MAAMnB,SAAQkB,IAAIC,KAAKD,KAAK;AAC1CZ,8BAAIW,KAAK,KAAKlB,KAAKG,OAAOC,QAAQI,GAAG,CAAC;wBACxC;sBACF;AAEA,6BAAOD;oBACT;AAAC,2BAEDc,OAAA,SAAAA,MAAKC,OAAOd,KAAK;AACf,0BAAI,CAACc,OAAO;AACV,+BAAO,KAAKtB,KAAKqB,KAAK,MAAMb,GAAG,IAAIhB,MAAMiB,cAAc,KAAKR,QAAQ,MAAMO,GAAG;sBAC/E;AAEA,0BAAIa,QAAO;AACX,0BAAI,KAAKpB,kBAAkBP,SAAS;AAClC2B,wBAAAA,SAAQ,KAAKpB,OAAOoB,KAAI;AACxBb,8BAAM;0BAACH,QAAQG;wBAAG;sBACpB;AAEA,+BAAA,YAAA,gCAAiBc,KAAK,GAAA,OAAA,EAAA,QAAA,UAAA,GAAA,QAAE;AAAA,4BAAfC,OAAI,MAAA;AACXF,wBAAAA,SAAQ,KAAKrB,KAAKqB,KAAKE,MAAMf,GAAG;sBAClC;AAEA,6BAAOa;oBACT;AAAC,2BAEDG,SAAA,SAAA,OAAOpB,QAAQkB,OAAOjB,QAAQ;AAC5B,0BAAIG,MAAMH;AACV,0BAAI,KAAKJ,kBAAkBP,SAAS;AAClCc,8BAAM;0BACJiB,UAAU,CAAA;0BACVC,aAAatB,OAAOE;0BACpBD;wBACF;AAEAG,4BAAImB,gBAAgBvB,OAAOE,MAAM,KAAKe,KAAKC,OAAOd,GAAG;AACrD,6BAAKP,OAAOuB,OAAOpB,QAAQkB,MAAMrB,MAAM;sBACzC;AAEA,+BAAA,aAAA,gCAAiBqB,KAAK,GAAA,QAAA,EAAA,SAAA,WAAA,GAAA,QAAE;AAAA,4BAAfC,OAAI,OAAA;AACX,6BAAKvB,KAAKwB,OAAOpB,QAAQmB,MAAMf,GAAG;sBACpC;AAEA,0BAAI,KAAKP,kBAAkBP,SAAS;AAClC,4BAAIyB,IAAI;AACR,+BAAOA,IAAIX,IAAIiB,SAASxB,QAAQ;AAC9B,8BAAM2B,MAAMpB,IAAIiB,SAASN,GAAG;AAC5BS,8BAAI5B,KAAKwB,OAAOpB,QAAQwB,IAAIC,GAAG;wBACjC;sBACF;oBAEF;AAAC,2BAAA9B;kBAAA,EAAA;AAGHtD,kBAAAA,QAAOyC,UAAUa;;;;;;;;;sBCpGX+B,WAAQ,2BAAA;AACZ,6BAAAA,UAAY9B,MAAM+B,OAAY;AAAA,0BAAZA,UAAK,QAAA;AAALA,gCAAQ,CAAA;sBAAE;AAC1B,2BAAK/B,OAAOA;AACZ,2BAAK+B,QAAQA;oBACf;AAAC,wBAAA,SAAAD,UAAA;AAAA,2BACD3B,SAAA,SAAA,OAAOC,QAAQ;AACb,0BAAMyB,MAAM,KAAK7B,KAAKG,OAAOC,MAAM;AAEnC,0BAAMG,MAAM,CAAC;AACb,+BAASY,IAAI,GAAGA,IAAI,KAAKY,MAAM9B,QAAQkB,KAAK;AAC1C,4BAAMa,OAAO,KAAKD,MAAMZ,CAAC;AACzB,4BAAIa,QAAQ,MAAM;AAChBzB,8BAAIyB,IAAI,IAAI,CAAC,EAAEH,MAAO,KAAKV;wBAC7B;sBACF;AAEA,6BAAOZ;oBACT;AAAC,2BAEDc,OAAA,SAAAA,QAAO;AACL,6BAAO,KAAKrB,KAAKqB,KAAI;oBACvB;AAAC,2BAEDG,SAAA,SAAA,OAAOpB,QAAQ6B,MAAM;AACnB,0BAAIJ,MAAM;AACV,+BAASV,IAAI,GAAGA,IAAI,KAAKY,MAAM9B,QAAQkB,KAAK;AAC1C,4BAAMa,OAAO,KAAKD,MAAMZ,CAAC;AACzB,4BAAIa,QAAQ,MAAM;AAChB,8BAAIC,KAAKD,IAAI,GAAG;AAAEH,mCAAQ,KAAKV;0BAAI;wBACrC;sBACF;AAEA,6BAAO,KAAKnB,KAAKwB,OAAOpB,QAAQyB,GAAG;oBACrC;AAAC,2BAAAC;kBAAA,EAAA;AAGHrF,kBAAAA,QAAOyC,UAAU4C;;;;;;;;sBCpCXI,WAAQ,2BAAA;AACZ,6BAAAA,UAAYlC,MAAM;AAChB,2BAAKA,OAAOA;oBACd;AAAC,wBAAA,SAAAkC,UAAA;AAAA,2BAED/B,SAAA,SAAA,OAAOC,QAAQC,QAAQ;AACrB,6BAAO,CAAC,CAAC,KAAKL,KAAKG,OAAOC,QAAQC,MAAM;oBAC1C;AAAC,2BAEDgB,OAAA,SAAAA,MAAKQ,KAAKxB,QAAQ;AAChB,6BAAO,KAAKL,KAAKqB,KAAKQ,KAAKxB,MAAM;oBACnC;AAAC,2BAEDmB,SAAA,SAAA,OAAOpB,QAAQyB,KAAKxB,QAAQ;AAC1B,6BAAO,KAAKL,KAAKwB,OAAOpB,QAAQ,CAACyB,KAAKxB,MAAM;oBAC9C;AAAC,2BAAA6B;kBAAA,EAAA;AAGHzF,kBAAAA,QAAOyC,UAAUgD;;;;;;;;AClBjB,sBAAM1C,QAAQC,qBAAQ,IAAS;AAC/B,sBAAA,WAAyBA,qBAAQ,IAAU,GAA7BC,UAAO,SAAdI;AAAsC,sBAEvCqC,UAAO,2BAAA;AACX,6BAAAA,SAAYlC,SAAQ;AAClB,2BAAKA,SAASA;oBAChB;AAAC,wBAAA,SAAAkC,SAAA;AAAA,2BACDhC,SAAA,SAAA,OAAOC,QAAQC,QAAQ;AACrB,0BAAMJ,UAAST,MAAMiB,cAAc,KAAKR,QAAQG,QAAQC,MAAM;AAC9D,6BAAOD,OAAOgC,WAAWnC,OAAM;oBACjC;AAAC,2BAEDoB,OAAA,SAAAA,MAAKQ,KAAKxB,QAAQ;AAChB,0BAAI,CAACwB,KAAK;AACR,+BAAOrC,MAAMiB,cAAc,KAAKR,QAAQ,MAAMI,MAAM;sBACtD;AAEA,6BAAOwB,IAAI5B;oBACb;AAAC,2BAEDuB,SAAA,SAAA,OAAOpB,QAAQiC,KAAKhC,QAAQ;AAC1B,0BAAI,KAAKJ,kBAAkBP,SAAS;AAClC,6BAAKO,OAAOuB,OAAOpB,QAAQiC,IAAIpC,MAAM;sBACvC;AAEA,6BAAOG,OAAOkC,YAAYD,GAAG;oBAC/B;AAAC,2BAAAF;kBAAA,EAAA;AAGH1F,kBAAAA,QAAOyC,UAAUiD;;;;;;;;;;;;;;AC7BjB,sBAAII;AACJ,sBAAI;AAAEA,4BAAQ9C,qBAAQ,IAAY;kBAAG,SAAS+C,OAAO;kBAAC;AAAC,sBAEjDC,eAAY,2BAAA;AAChB,6BAAAA,cAAYC,QAAQ;AAClB,2BAAKA,SAASA;AACd,2BAAKpC,MAAM;AACX,2BAAKL,SAAS,KAAKyC,OAAOzC;oBAC5B;AAAC,wBAAA,SAAAwC,cAAA;AAAA,2BAEDE,aAAA,SAAA,WAAW1C,SAAQ2C,UAAoB;AAAA,0BAApBA,aAAQ,QAAA;AAARA,mCAAW;sBAAO;AACnC,8BAAQA,UAAQ;wBACd,KAAK;wBAAW,KAAK;wBAAQ,KAAK;wBAAQ,KAAK;AAC7C,iCAAO,KAAKF,OAAOG,SAASD,UAAU,KAAKtC,KAAM,KAAKA,OAAOL,OAAM;wBAErE,KAAK;AACH,8BAAIoC,MAAMS,QAAOC,KAAK,KAAKX,WAAWnC,OAAM,CAAC;AAG7C,mCAASkB,IAAI,GAAGC,MAAMiB,IAAIpC,SAAS,GAAGkB,IAAIC,KAAKD,KAAK,GAAG;AACrD,gCAAM6B,OAAOX,IAAIlB,CAAC;AAClBkB,gCAAIlB,CAAC,IAAIkB,IAAIlB,IAAI,CAAC;AAClBkB,gCAAIlB,IAAI,CAAC,IAAI6B;0BACf;AAEA,iCAAOX,IAAIQ,SAAS,SAAS;wBAE/B;AACER,gCAAM,KAAKD,WAAWnC,OAAM;AAC5B,8BAAIsC,OAAO;AACT,gCAAI;AACF,qCAAOA,MAAMpC,OAAOkC,KAAKO,QAAQ;4BACnC,SAASK,QAAQ;4BAAC;0BACpB;AAEA,iCAAOZ;sBAAI;oBAEjB;AAAC,2BAEDD,aAAA,SAAA,WAAWnC,SAAQ;AACjB,6BAAO,KAAKyC,OAAOQ,MAAM,KAAK5C,KAAM,KAAKA,OAAOL,OAAM;oBACxD;AAAC,2BAEDkD,eAAA,SAAA,eAAe;AACb,8BAAQ,KAAKC,aAAY,KAAM,KAAK,KAAKC,UAAS;oBACpD;AAAC,2BAEDC,eAAA,SAAA,eAAe;AACb,6BAAO,KAAKC,aAAY,KAAM,KAAKF,UAAS,KAAM;oBACpD;AAAC,2BAEDG,cAAA,SAAA,cAAc;AACZ,8BAAQ,KAAKC,YAAW,KAAM,KAAK,KAAKJ,UAAS;oBACnD;AAAC,2BAEDK,cAAA,SAAA,cAAc;AACZ,6BAAO,KAAKH,aAAY,KAAM,KAAKI,SAAQ,KAAM;oBACnD;AAAC,2BAAAlB;kBAAA,EAAA;AAGHA,+BAAamB,QAAQ;oBACnBC,OAAO;oBACPC,QAAQ;oBACRC,QAAQ;oBACRC,QAAQ;oBACRC,MAAM;oBACNC,OAAO;oBACPC,OAAO;oBACPC,OAAO;oBACPC,OAAO;oBACPC,QAAQ;kBACV;AAAE,sBAAA,QAAA,SAAAC,OAEOC,MAAG;AACV,wBAAIA,KAAItB,MAAM,GAAG,CAAC,MAAM,QAAQ;AAC9B,0BAAMuB,QAAQhC,aAAamB,MAAMY,KAAIE,QAAQ,eAAe,EAAE,CAAC;AAC/DjC,mCAAakC,UAAUH,IAAG,IAAI,WAAW;AACvC,4BAAMI,MAAM,KAAKlC,OAAO8B,IAAG,EAAE,KAAKlE,GAAG;AACrC,6BAAKA,OAAOmE;AACZ,+BAAOG;sBACT;oBACF;kBAAC;AARH,2BAASJ,OAAO1B,QAAO6B,WAAW;AAAA,0BAAzBH,GAAG;kBASZ;AAEA/H,kBAAAA,QAAOyC,UAAUuD;;;;;;;;;;;;;;;;;;;;;;;;;ACpFjB,sBAAIF;AACJ,sBAAMnC,SAASX,qBAAQ,IAAQ;AAC/B,sBAAMgD,eAAehD,qBAAQ,IAAgB;AAC7C,sBAAI;AAAE8C,4BAAQ9C,qBAAQ,IAAY;kBAAG,SAAS+C,OAAO;kBAAC;AAAC,sBAEjDqC,eAAY,yBAAA,kBAAA;AAAA,oBAAAC,gBAAAD,eAAA,gBAAA;AAChB,6BAAAA,cAAYE,YAAqB;AAAA,0BAAA;AAAA,0BAArBA,eAAU,QAAA;AAAVA,qCAAc;sBAAK;AAC7B,8BAAA,iBAAA,MAAA,MAASC,SAAS,KAAC;AACnB,4BAAKtC,SAASI,QAAOmC,MAAMF,UAAU;AACrC,4BAAKG,eAAe;AACpB,4BAAK5E,MAAM;AAAE,6BAAA;oBACf;AAEA,wBAAA,SAAAuE,cAAA;AAAA,2BACAM,QAAA,SAAA,QAAQ;oBAAC;AAAC,2BAEVC,SAAA,SAAA,OAAOX,OAAO;AACZ,0BAAK,KAAKS,eAAeT,QAAS,KAAK/B,OAAOzC,QAAQ;AACpD,+BAAO,KAAKoF,MAAK;sBACnB;oBACF;AAAC,2BAEDA,QAAA,SAAA,QAAQ;AACN,0BAAI,KAAKH,eAAe,GAAG;AACzB,6BAAKhE,KAAK4B,QAAOC,KAAK,KAAKL,OAAOQ,MAAM,GAAG,KAAKgC,YAAY,CAAC,CAAC;AAC9D,+BAAO,KAAKA,eAAe;sBAC7B;oBACF;AAAC,2BAED5C,cAAA,SAAA,YAAYI,QAAQ;AAClB,2BAAK2C,MAAK;AACV,2BAAKnE,KAAKwB,MAAM;AAChB,6BAAO,KAAKpC,OAAOoC,OAAOzC;oBAC5B;AAAC,2BAEDqF,cAAA,SAAA,YAAYC,QAAQ3C,UAAoB;AAAA,0BAApBA,aAAQ,QAAA;AAARA,mCAAW;sBAAO;AACpC,8BAAQA,UAAQ;wBACd,KAAK;wBAAW,KAAK;wBAAQ,KAAK;wBAAQ,KAAK;AAC7C,iCAAO,KAAKN,YAAYQ,QAAOC,KAAKwC,QAAQ3C,QAAQ,CAAC;wBAEvD,KAAK;AACH,8BAAIP,MAAMS,QAAOC,KAAKwC,QAAQ,SAAS;AAGvC,mCAASpE,IAAI,GAAGC,MAAMiB,IAAIpC,SAAS,GAAGkB,IAAIC,KAAKD,KAAK,GAAG;AACrD,gCAAM6B,OAAOX,IAAIlB,CAAC;AAClBkB,gCAAIlB,CAAC,IAAIkB,IAAIlB,IAAI,CAAC;AAClBkB,gCAAIlB,IAAI,CAAC,IAAI6B;0BACf;AAEA,iCAAO,KAAKV,YAAYD,GAAG;wBAE7B;AACE,8BAAIE,OAAO;AACT,mCAAO,KAAKD,YAAYC,MAAMf,OAAO+D,QAAQ3C,QAAQ,CAAC;0BACxD,OAAO;AACL,kCAAM,IAAI4C,MAAM,2DAA2D;0BAC7E;sBAAC;oBAEP;AAAC,2BAEDC,gBAAA,SAAA,cAAc5D,KAAK;AACjB,2BAAKuD,OAAO,CAAC;AACb,2BAAK1C,OAAO,KAAKwC,cAAc,IAAKrD,QAAQ,KAAM;AAClD,2BAAKa,OAAO,KAAKwC,cAAc,IAAKrD,QAAQ,IAAM;AAClD,2BAAKa,OAAO,KAAKwC,cAAc,IAAIrD,MAAM;AACzC,6BAAO,KAAKvB,OAAO;oBACrB;AAAC,2BAEDoF,gBAAA,SAAA,cAAc7D,KAAK;AACjB,2BAAKuD,OAAO,CAAC;AACb,2BAAK1C,OAAO,KAAKwC,cAAc,IAAIrD,MAAM;AACzC,2BAAKa,OAAO,KAAKwC,cAAc,IAAKrD,QAAQ,IAAK;AACjD,2BAAKa,OAAO,KAAKwC,cAAc,IAAKrD,QAAQ,KAAM;AAClD,6BAAO,KAAKvB,OAAO;oBACrB;AAAC,2BAEDqF,eAAA,SAAA,aAAa9D,KAAK;AAChB,0BAAIA,OAAO,GAAG;AACZ,+BAAO,KAAK4D,cAAc5D,GAAG;sBAC/B,OAAO;AACL,+BAAO,KAAK4D,cAAc5D,MAAM,WAAW,CAAC;sBAC9C;oBACF;AAAC,2BAED+D,eAAA,SAAA,aAAa/D,KAAK;AAChB,0BAAIA,OAAO,GAAG;AACZ,+BAAO,KAAK6D,cAAc7D,GAAG;sBAC/B,OAAO;AACL,+BAAO,KAAK6D,cAAc7D,MAAM,WAAW,CAAC;sBAC9C;oBACF;AAAC,2BAEDgE,OAAA,SAAA,KAAKhE,KAAK5B,SAAQ;AAChB,0BAAIA,UAAS,KAAKyC,OAAOzC,QAAQ;AAC/B,6BAAKmF,OAAOnF,OAAM;AAClB,6BAAKyC,OAAOmD,KAAKhE,KAAK,KAAKqD,cAAc,KAAKA,eAAejF,OAAM;AACnE,6BAAKiF,gBAAgBjF;AACrB,+BAAO,KAAKK,OAAOL;sBACrB,OAAO;AACL,4BAAMoC,MAAMS,QAAOmC,MAAMhF,OAAM;AAC/BoC,4BAAIwD,KAAKhE,GAAG;AACZ,+BAAO,KAAKS,YAAYD,GAAG;sBAC7B;oBACF;AAAC,2BAEDjB,MAAA,SAAA,MAAM;AACJ,2BAAKiE,MAAK;AACV,6BAAO,KAAKnE,KAAK,IAAI;oBACvB;AAAC,2BAAA2D;kBAAA,EAxGwBzE,OAAO0F,QAAQ;AAAA,sBAAA,QAAA,SAAAvB,OA2GjCC,MAAG;AACV,wBAAIA,KAAItB,MAAM,GAAG,CAAC,MAAM,SAAS;AAC/B,0BAAMuB,QAAQ,CAAChC,aAAamB,MAAMY,KAAIE,QAAQ,gBAAgB,EAAE,CAAC;AACjEG,mCAAaF,UAAUH,IAAG,IAAI,SAAS7D,OAAO;AAC5C,6BAAKyE,OAAOX,KAAK;AACjB,6BAAK/B,OAAO8B,IAAG,EAAE7D,OAAO,KAAKuE,YAAY;AACzC,6BAAKA,gBAAgBT;AACrB,+BAAO,KAAKnE,OAAOmE;sBACrB;oBACF;kBAAC;AATH,2BAASD,OAAO1B,QAAO6B,WAAW;AAAA,0BAAzBH,GAAG;kBAUZ;AAEA/H,kBAAAA,QAAOyC,UAAU2F;;;;;;;;sBC5HXkB,OAAI,2BAAA;AACR,6BAAAA,MAAY/F,MAAM/B,UAAc;AAAA,0BAAdA,aAAO,QAAA;AAAPA,wBAAAA,WAAU,CAAA;sBAAE;AAC5B,2BAAK+B,OAAOA;AACZ,2BAAK/B,UAAUA;oBACjB;AAAC,wBAAA,SAAA8H,MAAA;AAAA,2BACD5F,SAAA,SAAA,OAAOC,QAAQ;AACb,0BAAM4F,SAAQ,KAAKhG,KAAKG,OAAOC,MAAM;AACrC,6BAAO,KAAKnC,QAAQ+H,MAAK,KAAKA;oBAChC;AAAC,2BAED3E,OAAA,SAAAA,QAAO;AACL,6BAAO,KAAKrB,KAAKqB,KAAI;oBACvB;AAAC,2BAEDG,SAAA,SAAA,OAAOpB,QAAQyB,KAAK;AAClB,0BAAMmE,SAAQ,KAAK/H,QAAQgI,QAAQpE,GAAG;AACtC,0BAAImE,WAAU,IAAI;AAChB,8BAAM,IAAIR,MAAK,6BAA4B3D,GAAG;sBAChD;AAEA,6BAAO,KAAK7B,KAAKwB,OAAOpB,QAAQ4F,MAAK;oBACvC;AAAC,2BAAAD;kBAAA,EAAA;AAGHtJ,kBAAAA,QAAOyC,UAAU6G;;;;;;;;;;;;;;;;;;;;;;ACxBjB,sBAAMhG,SAASN,qBAAQ,IAAS;AAChC,sBAAA,WAAyBA,qBAAQ,IAAU,GAA7BC,UAAO,SAAdI;AACP,sBAAMN,QAAQC,qBAAQ,IAAS;AAC/B,sBAAA,YAAkBA,qBAAQ,IAAM,GAAzByG,WAAO,UAAPA;AAA2B,sBAE5BC,aAAU,yBAAA,SAAA;AAAA,oBAAArB,gBAAAqB,aAAA,OAAA;AAAA,6BAAAA,cAAA;AAAA,6BAAA,QAAA,MAAA,MAAA,SAAA,KAAA;oBAAA;AAAA,wBAAA,SAAAA,YAAA;AAAA,2BACdhG,SAAA,SAAA,OAAOC,QAAQC,QAAQ;AACrB,0BAAQC,MAAQF,OAARE;AACR,0BAAML,UAAST,MAAMiB,cAAc,KAAKR,QAAQG,QAAQC,MAAM;AAE9D,0BAAI,KAAKJ,kBAAkBP,SAAS;AAClCW,iCAAS;0BACPA;0BACAO,cAAcN;0BACdO,gBAAgB;0BAChBE,SAASd;wBACX;sBACF;AAEA,0BAAMM,MAAM,IAAI6F,UAAU,KAAKpG,MAAMC,SAAQG,QAAQC,MAAM;AAE3DD,6BAAOE,OAAOL,UAAS,KAAKD,KAAKqB,KAAK,MAAMhB,MAAM;AAClD,6BAAOE;oBACT;AAAC,2BAEDc,OAAA,SAAAA,MAAKQ,KAAKrB,KAAK;AACb,0BAAIqB,eAAeuE,WAAW;AAC5BvE,8BAAMA,IAAIwE,QAAO;sBACnB;AAEA,6BAAA,QAAA,UAAahF,KAAI,KAAA,MAACQ,KAAKrB,GAAG;oBAC5B;AAAC,2BAEDgB,SAAA,SAAA,OAAOpB,QAAQyB,KAAKrB,KAAK;AACvB,0BAAIqB,eAAeuE,WAAW;AAC5BvE,8BAAMA,IAAIwE,QAAO;sBACnB;AAEA,6BAAA,QAAA,UAAa7E,OAAM,KAAA,MAACpB,QAAQyB,KAAKrB,GAAG;oBACtC;AAAC,2BAAA2F;kBAAA,EAlCsBpG,MAAM;AAAA,sBAqCzBqG,YAAS,2BAAA;AACb,6BAAAA,WAAYpG,MAAMC,SAAQG,QAAQI,KAAK;AACrC,2BAAKR,OAAOA;AACZ,2BAAKC,SAASA;AACd,2BAAKG,SAASA;AACd,2BAAKI,MAAMA;AACX,2BAAK8F,OAAO,KAAKlG,OAAOE;AACxB,2BAAKiG,QAAQ,CAAA;oBACf;AAAC,wBAAA,UAAAH,WAAA;AAAA,4BAEDI,MAAA,SAAA,IAAIR,QAAO;AACT,0BAAKA,SAAQ,KAAOA,UAAS,KAAK/F,QAAS;AACzC,+BAAOgB;sBACT;AAEA,0BAAI,KAAKsF,MAAMP,MAAK,KAAK,MAAM;AAC7B,4BAAQ1F,MAAQ,KAAKF,OAAbE;AACR,6BAAKF,OAAOE,MAAM,KAAKgG,OAAQ,KAAKtG,KAAKqB,KAAK,MAAM,KAAKb,GAAG,IAAIwF;AAChE,6BAAKO,MAAMP,MAAK,IAAI,KAAKhG,KAAKG,OAAO,KAAKC,QAAQ,KAAKI,GAAG;AAC1D,6BAAKJ,OAAOE,MAAMA;sBACpB;AAEA,6BAAO,KAAKiG,MAAMP,MAAK;oBACzB;AAAC,4BAEDK,UAAA,SAAAA,WAAU;AACR,0BAAMI,SAAS,CAAA;AACf,+BAAStF,IAAI,GAAGC,MAAM,KAAKnB,QAAQkB,IAAIC,KAAKD,KAAK;AAC/CsF,+BAAOvF,KAAK,KAAKsF,IAAIrF,CAAC,CAAC;sBACzB;AACA,6BAAOsF;oBACT;AAAC,4BAEDP,UAAA,SAAA,UAAU;AACR,6BAAOA,SAAQ,KAAKG,QAAO,CAAE;oBAC/B;AAAC,2BAAAD;kBAAA,EAAA;AAGH3J,kBAAAA,QAAOyC,UAAUiH;;;;;;;;;;;;;;;;;;;;AChFjB,sBAAM1D,eAAehD,qBAAQ,IAAgB;AAAE,sBAEzCC,UAAO,2BAAA;AACX,6BAAAA,SAAYM,MAAM0G,QAAe;AAAA,0BAAfA,WAAM,QAAA;AAANA,iCAAS;sBAAI;AAC7B,2BAAK1G,OAAOA;AACZ,2BAAK0G,SAASA;AACd,2BAAKC,KAAK,KAAK3G;AACf,0BAAI,KAAKA,KAAK,KAAKA,KAAKC,SAAS,CAAC,MAAM,KAAK;AAC3C,6BAAK0G,MAAM,KAAKD;sBAClB;oBACF;AAAC,wBAAA,SAAAhH,SAAA;AAAA,2BAED2B,OAAA,SAAAA,QAAO;AACL,6BAAOoB,aAAamB,MAAM,KAAK5D,IAAI;oBACrC;AAAC,2BAEDG,SAAA,SAAA,OAAOC,QAAQ;AACb,6BAAOA,OAAM,SAAQ,KAAKuG,EAAE,EAAG;oBACjC;AAAC,2BAEDnF,SAAA,SAAA,OAAOpB,QAAQyB,KAAK;AAClB,6BAAOzB,OAAM,UAAS,KAAKuG,EAAE,EAAI9E,GAAG;oBACtC;AAAC,2BAAAnC;kBAAA,EAAA;AAGHR,kBAAAA,SAAAA,SAAiBQ;AACjBR,kBAAAA,SAAAA,QAAgB,IAAIQ,QAAQ,OAAO;AACnCR,kBAAAA,SAAAA,WAAoBA,SAAAA,SAAiB,IAAIQ,QAAQ,UAAU,IAAI;AAC/DR,kBAAAA,SAAAA,WAAmB,IAAIQ,QAAQ,UAAU,IAAI;AAC7CR,kBAAAA,SAAAA,WAAoBA,SAAAA,SAAiB,IAAIQ,QAAQ,UAAU,IAAI;AAC/DR,kBAAAA,SAAAA,WAAmB,IAAIQ,QAAQ,UAAU,IAAI;AAC7CR,kBAAAA,SAAAA,WAAoBA,SAAAA,SAAiB,IAAIQ,QAAQ,UAAU,IAAI;AAC/DR,kBAAAA,SAAAA,WAAmB,IAAIQ,QAAQ,UAAU,IAAI;AAC7CR,kBAAAA,SAAAA,OAAe,IAAIQ,QAAQ,MAAM;AACjCR,kBAAAA,SAAAA,UAAmBA,SAAAA,QAAgB,IAAIQ,QAAQ,SAAS,IAAI;AAC5DR,kBAAAA,SAAAA,UAAkB,IAAIQ,QAAQ,SAAS,IAAI;AAC3CR,kBAAAA,SAAAA,UAAmBA,SAAAA,QAAgB,IAAIQ,QAAQ,SAAS,IAAI;AAC5DR,kBAAAA,SAAAA,UAAkB,IAAIQ,QAAQ,SAAS,IAAI;AAC3CR,kBAAAA,SAAAA,UAAmBA,SAAAA,QAAgB,IAAIQ,QAAQ,SAAS,IAAI;AAC5DR,kBAAAA,SAAAA,UAAkB,IAAIQ,QAAQ,SAAS,IAAI;AAC3CR,kBAAAA,SAAAA,UAAmBA,SAAAA,QAAgB,IAAIQ,QAAQ,SAAS,IAAI;AAC5DR,kBAAAA,SAAAA,UAAkB,IAAIQ,QAAQ,SAAS,IAAI;AAC3CR,kBAAAA,SAAAA,WAAoBA,SAAAA,SAAiB,IAAIQ,QAAQ,UAAU,IAAI;AAC/DR,kBAAAA,SAAAA,WAAmB,IAAIQ,QAAQ,UAAU,IAAI;AAAE,sBAEzCkH,QAAK,yBAAA,UAAA;AAAA,oBAAA9B,gBAAA8B,QAAA,QAAA;AACT,6BAAAA,OAAYvF,OAAMqF,QAAQG,UAAsB;AAAA,0BAAA;AAAA,0BAAtBA,aAAQ,QAAA;AAARA,mCAAWxF,SAAQ;sBAAC;AAC5C,8BAAA,SAAA,KAAA,MAAA,QAAYA,OAAQqF,MAAM,KAAC;AAC3B,4BAAKI,SAAS,KAAKD;AAAS,6BAAA;oBAC9B;AAAC,wBAAA,UAAAD,OAAA;AAAA,4BAEDzG,SAAA,SAAA,OAAOC,QAAQ;AACb,6BAAO,SAAA,UAAMD,OAAM,KAAA,MAACC,MAAM,IAAI,KAAK0G;oBACrC;AAAC,4BAEDtF,SAAA,SAAA,OAAOpB,QAAQyB,KAAK;AAClB,6BAAA,SAAA,UAAaL,OAAM,KAAA,MAACpB,QAASyB,MAAM,KAAKiF,SAAU,CAAC;oBACrD;AAAC,2BAAAF;kBAAA,EAZiBlH,OAAO;AAe3BR,kBAAAA,SAAAA,QAAgB0H;AAChB1H,kBAAAA,SAAAA,YAAqBA,SAAAA,UAAkB,IAAI0H,MAAM,IAAI,IAAI;AACzD1H,kBAAAA,SAAAA,YAAoB,IAAI0H,MAAM,IAAI,IAAI;AACtC1H,kBAAAA,SAAAA,YAAqBA,SAAAA,UAAiB,IAAI0H,MAAM,IAAI,IAAI;AACxD1H,kBAAAA,SAAAA,YAAoB,IAAI0H,MAAM,IAAI,IAAI;;;;;;;;sBChEhCG,WAAQ,2BAAA;AACZ,6BAAAA,UAAY/G,MAAMgH,WAAkB;AAAA,0BAAlBA,cAAS,QAAA;AAATA,oCAAY;sBAAI;AAChC,2BAAKhH,OAAOA;AACZ,2BAAKgH,YAAYA;oBACnB;AAAC,wBAAA,SAAAD,UAAA;AAAA,2BAED5G,SAAA,SAAA,OAAOC,QAAQC,QAAQ;AACrB,0BAAM2G,YAAc,KAAdA;AACN,0BAAI,OAAOA,cAAc,YAAY;AACnCA,oCAAYA,UAAUC,KAAK5G,QAAQA,MAAM;sBAC3C;AAEA,0BAAI2G,WAAW;AACb,+BAAO,KAAKhH,KAAKG,OAAOC,QAAQC,MAAM;sBACxC;oBACF;AAAC,2BAEDgB,OAAA,SAAAA,MAAKQ,KAAKxB,QAAQ;AAChB,0BAAM2G,YAAc,KAAdA;AACN,0BAAI,OAAOA,cAAc,YAAY;AACnCA,oCAAYA,UAAUC,KAAK5G,QAAQA,MAAM;sBAC3C;AAEA,0BAAI2G,WAAW;AACb,+BAAO,KAAKhH,KAAKqB,KAAKQ,KAAKxB,MAAM;sBACnC,OAAO;AACL,+BAAO;sBACT;oBACF;AAAC,2BAEDmB,SAAA,SAAA,OAAOpB,QAAQyB,KAAKxB,QAAQ;AAC1B,0BAAM2G,YAAc,KAAdA;AACN,0BAAI,OAAOA,cAAc,YAAY;AACnCA,oCAAYA,UAAUC,KAAK5G,QAAQA,MAAM;sBAC3C;AAEA,0BAAI2G,WAAW;AACb,+BAAO,KAAKhH,KAAKwB,OAAOpB,QAAQyB,KAAKxB,MAAM;sBAC7C;oBACF;AAAC,2BAAA0G;kBAAA,EAAA;AAGHtK,kBAAAA,QAAOyC,UAAU6H;;;;;;;;AC1CjB,sBAAMvH,QAAQC,qBAAQ,IAAS;AAAE,sBAE3BE,UAAO,2BAAA;AACX,6BAAAA,SAAYuH,YAAYlH,MAAM/B,UAAc;AAAA,0BAAdA,aAAO,QAAA;AAAPA,wBAAAA,WAAU,CAAC;sBAAC;AACxC,2BAAKiJ,aAAaA;AAClB,2BAAKlH,OAAOA;AACZ,2BAAK/B,UAAUA;AACf,0BAAI,KAAK+B,SAAS,QAAQ;AAAE,6BAAKA,OAAO;sBAAM;AAC9C,0BAAI,KAAK/B,QAAQ+B,QAAQ,MAAM;AAAE,6BAAK/B,QAAQ+B,OAAO;sBAAS;AAC9D,0BAAI,KAAK/B,QAAQkJ,aAAa,MAAM;AAAE,6BAAKlJ,QAAQkJ,YAAY;sBAAM;AACrE,0BAAI,KAAKlJ,QAAQmJ,aAAa,MAAM;AAAE,6BAAKnJ,QAAQmJ,YAAY;sBAAG;AAClE,0BAAI,KAAKnJ,QAAQoJ,QAAQ,MAAM;AAAE,6BAAKpJ,QAAQoJ,OAAO;sBAAO;AAC5D,0BAAI,KAAKpJ,QAAQqJ,YAAY;AAC3B,4BAAI,OAAO,KAAKrJ,QAAQqJ,eAAe,YAAY;AACjD,gCAAM,IAAI9B,MAAM,sCAAsC;wBACxD;AACA,6BAAK+B,mBAAmBtJ,SAAQqJ;sBAClC;oBACF;AAAC,wBAAA,SAAA3H,SAAA;AAAA,2BAEDQ,SAAA,SAAA,OAAOC,QAAQI,KAAK;AAAA,0BAAA,QAAA;AAClB,0BAAMgH,SAAS,KAAKN,WAAW/G,OAAOC,QAAQI,GAAG;AAGjD,0BAAKgH,WAAW,KAAKvJ,QAAQmJ,aAAc,KAAKnJ,QAAQkJ,WAAW;AACjE,+BAAO;sBACT;AAEA,0BAAIM;AACJ,8BAAQ,KAAKxJ,QAAQ+B,MAAI;wBACvB,KAAK;AAAayH,qCAAWjH,IAAII;AAAc;wBAC/C,KAAK;AAAa6G,qCAAWrH,OAAOE,MAAM,KAAK4G,WAAW7F,KAAI;AAAI;wBAClE,KAAK;AAAaoG,qCAAWjH,IAAIH,OAAOO;AAAc;wBACtD;AACE,8BAAI8G,KAAIlH;AACR,iCAAOkH,GAAErH,QAAQ;AACfqH,4BAAAA,KAAIA,GAAErH;0BACR;AAEAoH,qCAAWC,GAAE9G,gBAAgB;sBAAE;AAGnC,0BAAI,KAAK3C,QAAQqJ,YAAY;AAC3BG,oCAAY,KAAKF,iBAAiB/G,GAAG;sBACvC;AAEA,0BAAMoB,MAAM4F,SAASC;AAErB,0BAAI,KAAKzH,QAAQ,MAAM;AACrB,4BAAI6B,MAAM;AACV,4BAAM8F,cAAc,SAAdA,eAAoB;AACxB,8BAAI9F,OAAO,MAAM;AAAE,mCAAOA;0BAAK;AAE/B,8BAAQvB,MAAQF,OAARE;AACRF,iCAAOE,MAAMsB;AACbC,gCAAM,MAAK7B,KAAKG,OAAOC,QAAQI,GAAG;AAClCJ,iCAAOE,MAAMA;AACb,iCAAOuB;wBACT;AAIA,4BAAI,KAAK5D,QAAQoJ,MAAM;AACrB,iCAAO,IAAI7H,MAAMoI,mBAAmB;4BAClCpB,KAAKmB;0BAAW,CAAC;wBACrB;AAEA,+BAAOA,YAAW;sBACpB,OAAO;AACL,+BAAO/F;sBACT;oBACF;AAAC,2BAEDP,OAAA,SAAAA,MAAKQ,KAAKrB,KAAK;AACb,0BAAMH,SAASG;AACf,8BAAQ,KAAKvC,QAAQ+B,MAAI;wBACvB,KAAK;wBAAS,KAAK;AACjB;wBACF,KAAK;AACHQ,gCAAMA,IAAIH;AACV;wBACF;AACE,iCAAOG,IAAIH,QAAQ;AACjBG,kCAAMA,IAAIH;0BACZ;sBAAC;AAGL,0BAAML,OAAS,KAATA;AACN,0BAAIA,QAAQ,MAAM;AAChB,4BAAI,EAAE6B,eAAegG,cAAc;AACjC,gCAAM,IAAIrC,MAAM,uBAAuB;wBACzC;AAAC,4BAAA,OAEW3D;AAAT7B,+BAAI,KAAJA;AACH6B,8BAAMA,IAAIlB;sBACZ;AAEA,0BAAIkB,OAAOrB,KAAK;AACdA,4BAAIsH,eAAe9H,KAAKqB,KAAKQ,KAAKxB,MAAM;sBAC1C;AAEA,6BAAO,KAAK6G,WAAW7F,KAAI;oBAC7B;AAAC,2BAEDG,SAAA,SAAA,OAAOpB,QAAQyB,KAAKrB,KAAK;AACvB,0BAAIiH;AACJ,0BAAMpH,SAASG;AACf,0BAAKqB,OAAO,MAAO;AACjB,6BAAKqF,WAAW1F,OAAOpB,QAAQ,KAAKnC,QAAQmJ,SAAS;AACrD;sBACF;AAEA,8BAAQ,KAAKnJ,QAAQ+B,MAAI;wBACvB,KAAK;AACHyH,qCAAWjH,IAAIkB;AACf;wBACF,KAAK;AACH+F,qCAAWrH,OAAOE,MAAM,KAAK4G,WAAW7F,KAAKQ,KAAKxB,MAAM;AACxD;wBACF,KAAK;AACHG,gCAAMA,IAAIH;AACVoH,qCAAWjH,IAAIkB;AACf;wBACF;AACE+F,qCAAW;AACX,iCAAOjH,IAAIH,QAAQ;AACjBG,kCAAMA,IAAIH;0BACZ;sBAAC;AAGL,0BAAI,KAAKpC,QAAQqJ,YAAY;AAC3BG,oCAAY,KAAKF,iBAAiBlH,OAAOwB,GAAG;sBAC9C;AAEA,2BAAKqF,WAAW1F,OAAOpB,QAAQI,IAAImB,gBAAgB8F,QAAQ;AAE3D,0BAAMzH,OAAS,KAATA;AACN,0BAAIA,QAAQ,MAAM;AAChB,4BAAI,EAAE6B,eAAegG,cAAc;AACjC,gCAAM,IAAIrC,MAAM,uBAAuB;wBACzC;AAAC,4BAAA,QAEW3D;AAAT7B,+BAAI,MAAJA;AACH6B,8BAAMA,IAAIlB;sBACZ;AAEAH,0BAAIiB,SAASP,KAAK;wBAChBlB;wBACA6B;wBACAxB;sBACF,CAAC;AAED,6BAAOG,IAAImB,iBAAiB3B,KAAKqB,KAAKQ,KAAKxB,MAAM;oBACnD;AAAC,2BAAAV;kBAAA,EAAA;AAGH,sBACMkI,cACJ,SAAAA,aAAY7H,MAAMW,OAAO;AACvB,yBAAKX,OAAOA;AACZ,yBAAKW,QAAQA;kBACf;AAGFzB,kBAAAA,SAAAA,UAAkBS;AAClBT,kBAAAA,SAAAA,cAAsB2I;;;;;;;;;ACrKtB,sBAAMrI,QAAQC,qBAAQ,IAAS;AAAE,sBAE3BsI,WAAQ,2BAAA;AACZ,6BAAAA,UAAY/H,MAAMgI,OAAW;AAAA,0BAAXA,UAAK,QAAA;AAALA,gCAAQ;sBAAC;AACzB,2BAAKhI,OAAOA;AACZ,2BAAKgI,QAAQA;oBACf;AAAC,wBAAA,SAAAD,UAAA;AAAA,2BACD5H,SAAA,SAAA,OAAOC,QAAQC,QAAQ;AACrBD,6BAAOE,OAAO,KAAKe,KAAK,MAAMhB,MAAM;AACpC,6BAAOY;oBACT;AAAC,2BAEDI,OAAA,SAAAA,MAAK4G,OAAM5H,QAAQ;AACjB,0BAAM2H,QAAQxI,MAAMiB,cAAc,KAAKuH,OAAO,MAAM3H,MAAM;AAC1D,6BAAO,KAAKL,KAAKqB,KAAI,IAAK2G;oBAC5B;AAAC,2BAEDxG,SAAA,SAAA,OAAOpB,QAAQyB,KAAKxB,QAAQ;AAC1B,6BAAOD,OAAOyF,KAAK,GAAG,KAAKxE,KAAKQ,KAAKxB,MAAM,CAAC;oBAC9C;AAAC,2BAAA0H;kBAAA,EAAA;AAGHtL,kBAAAA,QAAOyC,UAAU6I;;;;;;;;;ACtBjB,sBAAA,WAAyBtI,qBAAQ,IAAU,GAA7BC,UAAO,SAAdI;AACP,sBAAMN,QAAQC,qBAAQ,IAAS;AAAE,sBAE3ByI,UAAO,2BAAA;AACX,6BAAAA,SAAYjI,SAAQ2C,UAAoB;AAAA,0BAApBA,aAAQ,QAAA;AAARA,mCAAW;sBAAO;AACpC,2BAAK3C,SAASA;AACd,2BAAK2C,WAAWA;oBAClB;AAAC,wBAAA,SAAAsF,SAAA;AAAA,2BAED/H,SAAA,SAAA,OAAOC,QAAQC,QAAQ;AACrB,0BAAIJ,SAAQK;AAEZ,0BAAI,KAAKL,UAAU,MAAM;AACvBA,wBAAAA,UAAST,MAAMiB,cAAc,KAAKR,QAAQG,QAAQC,MAAM;sBAC1D,OAAO;AACL,4BAAIqC;AACFA,iCAAuBtC,OAAvBsC;AAAQzC,wBAAAA,UAAeG,OAAfH;AAAQK,8BAAOF,OAAPE;AAElB,+BAAQA,MAAML,WAAYyC,OAAOpC,GAAG,MAAM,GAAO;AAC/C,4BAAEA;wBACJ;AAEAL,wBAAAA,UAASK,MAAMF,OAAOE;sBACxB;AAEA,0BAAMsC,WAAa,KAAbA;AACN,0BAAI,OAAOA,aAAa,YAAY;AAClCA,mCAAWA,SAASqE,KAAK5G,QAAQA,MAAM,KAAK;sBAC9C;AAEA,0BAAMkF,SAASnF,OAAOuC,WAAW1C,SAAQ2C,QAAQ;AAEjD,0BAAK,KAAK3C,UAAU,QAAUG,OAAOE,MAAMF,OAAOH,QAAS;AACzDG,+BAAOE;sBACT;AAEA,6BAAOiF;oBACT;AAAC,2BAEDlE,OAAA,SAAAA,MAAKQ,KAAKxB,QAAQ;AAEhB,0BAAI,CAACwB,KAAK;AACR,+BAAOrC,MAAMiB,cAAc,KAAKR,QAAQ,MAAMI,MAAM;sBACtD;AAEA,0BAAMuC,WAAa,KAAbA;AACN,0BAAI,OAAOA,aAAa,YAAY;AAClCA,mCAAWA,SAASqE,KAAK5G,UAAU,OAAOA,OAAOwB,MAAMZ,QAAWZ,UAAU,OAAOA,OAAOwB,MAAMZ,MAAS,KAAK;sBAChH;AAEA,0BAAI2B,aAAa,WAAW;AAC1BA,mCAAW;sBACb;AAEA,0BAAIvB,QAAOyB,QAAOqF,WAAWtG,KAAKe,QAAQ;AAC1C,0BAAI,KAAK3C,kBAAkBP,SAAS;AAClC2B,wBAAAA,SAAQ,KAAKpB,OAAOoB,KAAI;sBAC1B;AAEA,0BAAK,KAAKpB,UAAU,MAAO;AACzBoB,wBAAAA;sBACF;AAEA,6BAAOA;oBACT;AAAC,2BAEDG,SAAA,SAAA,OAAOpB,QAAQyB,KAAKxB,QAAQ;AAC1B,0BAAMuC,WAAa,KAAbA;AACN,0BAAI,OAAOA,aAAa,YAAY;AAClCA,mCAAWA,SAASqE,KAAK5G,UAAU,OAAOA,OAAOwB,MAAMZ,QAAWZ,UAAU,OAAOA,OAAOwB,MAAMZ,MAAS,KAAK;sBAChH;AAEA,0BAAI,KAAKhB,kBAAkBP,SAAS;AAClC,6BAAKO,OAAOuB,OAAOpB,QAAQ0C,QAAOqF,WAAWtG,KAAKe,QAAQ,CAAC;sBAC7D;AAEAxC,6BAAOkF,YAAYzD,KAAKe,QAAQ;AAEhC,0BAAK,KAAK3C,UAAU,MAAO;AACzB,+BAAOG,OAAOgI,WAAW,CAAI;sBAC/B;oBACF;AAAC,2BAAAF;kBAAA,EAAA;AAGHzL,kBAAAA,QAAOyC,UAAUgJ;;;;;;;;ACpFjB,sBAAM1I,QAAQC,qBAAQ,IAAS;AAAE,sBAE3B4I,SAAM,2BAAA;AACV,6BAAAA,QAAYC,QAAa;AAAA,0BAAbA,WAAM,QAAA;AAANA,iCAAS,CAAC;sBAAC;AACrB,2BAAKA,SAASA;oBAChB;AAAC,wBAAA,SAAAD,QAAA;AAAA,2BAEDlI,SAAA,SAAA,OAAOC,QAAQC,QAAQJ,SAAY;AAAA,0BAAZA,YAAM,QAAA;AAANA,wBAAAA,UAAS;sBAAC;AAC/B,0BAAMM,MAAM,KAAKgI,OAAOnI,QAAQC,QAAQJ,OAAM;AAC9C,2BAAKuI,aAAapI,QAAQG,KAAK,KAAK+H,MAAM;AAE1C,0BAAI,KAAK3L,WAAW,MAAM;AACxB,6BAAKA,QAAQsK,KAAK1G,KAAKH,MAAM;sBAC/B;AACA,6BAAOG;oBACT;AAAC,2BAEDgI,SAAA,SAAA,OAAOnI,QAAQC,QAAQJ,SAAQ;AAC7B,0BAAMM,MAAM,CAAC;AAGbX,6BAAOc,iBAAiBH,KAAK;wBAC3BF,QAAgB;0BAAEM,OAAON;wBAAO;wBAChCO,cAAgB;0BAAED,OAAOP,OAAOE;wBAAI;wBACpCO,gBAAgB;0BAAEF,OAAO;0BAAGG,UAAU;wBAAK;wBAC3CC,SAAgB;0BAAEJ,OAAOV;wBAAO;sBAClC,CAAC;AAED,6BAAOM;oBACT;AAAC,2BAEDiI,eAAA,SAAA,aAAapI,QAAQG,KAAK+H,QAAQ;AAChC,+BAAS9D,OAAO8D,QAAQ;AACtB,4BAAIzG;AACJ,4BAAM7B,OAAOsI,OAAO9D,GAAG;AACvB,4BAAI,OAAOxE,SAAS,YAAY;AAC9B6B,gCAAM7B,KAAKiH,KAAK1G,KAAKA,GAAG;wBAC1B,OAAO;AACLsB,gCAAM7B,KAAKG,OAAOC,QAAQG,GAAG;wBAC/B;AAEA,4BAAIsB,QAAQZ,QAAW;AACrB,8BAAIY,eAAerC,MAAMoI,oBAAoB;AAC3ChI,mCAAO6I,eAAelI,KAAKiE,KAAK3C,GAAG;0BACrC,OAAO;AACLtB,gCAAIiE,GAAG,IAAI3C;0BACb;wBACF;AAEAtB,4BAAIM,iBAAiBT,OAAOE,MAAMC,IAAIK;sBACxC;oBAEF;AAAC,2BAEDS,OAAA,SAAAA,MAAKQ,KAAKxB,QAAQqI,iBAAiB;AACjC,0BAAI7G,OAAO,MAAM;AAAEA,8BAAM,CAAC;sBAAG;AAC7B,0BAAI6G,mBAAmB,MAAM;AAAEA,0CAAkB;sBAAM;AACvD,0BAAMlI,MAAM;wBACVH;wBACAwB;wBACAiG,aAAa;sBACf;AAEA,0BAAIzG,QAAO;AACX,+BAASmD,OAAO,KAAK8D,QAAQ;AAC3B,4BAAMtI,OAAO,KAAKsI,OAAO9D,GAAG;AAC5B,4BAAIxE,KAAKqB,QAAQ,MAAM;AACrBA,0BAAAA,SAAQrB,KAAKqB,KAAKQ,IAAI2C,GAAG,GAAGhE,GAAG;wBACjC;sBACF;AAEA,0BAAIkI,iBAAiB;AACnBrH,wBAAAA,SAAQb,IAAIsH;sBACd;AAEA,6BAAOzG;oBACT;AAAC,2BAEDG,SAAA,SAAA,OAAOpB,QAAQyB,KAAKxB,QAAQ;AAC1B,0BAAIL;AACJ,0BAAI,KAAK2I,aAAa,MAAM;AAC1B,6BAAKA,UAAU1B,KAAKpF,KAAKzB,MAAM;sBACjC;AAEA,0BAAMI,MAAM;wBACViB,UAAU,CAAA;wBACVC,aAAatB,OAAOE;wBACpBD;wBACAwB;wBACAiG,aAAa;sBACf;AAEAtH,0BAAImB,gBAAgBvB,OAAOE,MAAM,KAAKe,KAAKQ,KAAKrB,KAAK,KAAK;AAE1D,+BAASgE,OAAO,KAAK8D,QAAQ;AAC3BtI,+BAAO,KAAKsI,OAAO9D,GAAG;AACtB,4BAAIxE,KAAKwB,UAAU,MAAM;AACvBxB,+BAAKwB,OAAOpB,QAAQyB,IAAI2C,GAAG,GAAGhE,GAAG;wBACnC;sBACF;AAEA,0BAAIW,IAAI;AACR,6BAAOA,IAAIX,IAAIiB,SAASxB,QAAQ;AAC9B,4BAAM2B,MAAMpB,IAAIiB,SAASN,GAAG;AAC5BS,4BAAI5B,KAAKwB,OAAOpB,QAAQwB,IAAIC,KAAKD,IAAIvB,MAAM;sBAC7C;oBAEF;AAAC,2BAAAgI;kBAAA,EAAA;AAGH5L,kBAAAA,QAAOyC,UAAUmJ;;;;;;;;;;;;;;;;;;;;;AC9GjB,sBAAMA,SAAS5I,qBAAQ,IAAU;AAEjC,sBAAMmJ,WAAU,SAAVA,SAAWC,QAAQC,WAAc;AACrC,2BAAOA,UAAUC,OAAO,SAACC,SAASxE,KAAG;AAAA,6BAAKwE,WAAWA,QAAQxE,GAAG;oBAAC,GAAEqE,MAAM;kBAC3E;AAAE,sBAEII,kBAAe,yBAAA,SAAA;AAAA,oBAAAnE,gBAAAmE,kBAAA,OAAA;AACnB,6BAAAA,iBAAYjJ,MAAMkJ,UAAe;AAAA,0BAAA;AAAA,0BAAfA,aAAQ,QAAA;AAARA,mCAAW,CAAC;sBAAC;AAC7B,8BAAA,QAAA,KAAA,IAAA,KAAO;AACP,4BAAKlJ,OAAOA;AACZ,4BAAKkJ,WAAWA;AAChB,0BAAI,OAAOlJ,SAAS,UAAU;AAC5B,8BAAKmJ,cAAcnJ,KAAKoJ,MAAM,GAAG;sBACnC;AAAC,6BAAA;oBACH;AAAC,wBAAA,SAAAH,iBAAA;AAAA,2BAED9I,SAAA,SAAA,OAAOC,QAAQC,QAAQJ,SAAY;AAAA,0BAAZA,YAAM,QAAA;AAANA,wBAAAA,UAAS;sBAAC;AAC/B,0BAAMM,MAAM,KAAKgI,OAAOnI,QAAQC,QAAQJ,OAAM;AAE9C,0BAAI,OAAO,KAAKD,SAAS,UAAU;AACjCO,4BAAI8I,UAAUT,SAAQvI,QAAQ,KAAK8I,WAAW;sBAChD,OAAO;AACL5I,4BAAI8I,UAAU,KAAKrJ,KAAKG,OAAOC,MAAM;sBACvC;AAEA,0BAAI,KAAK8I,SAASI,QAAQ;AACxB,6BAAKd,aAAapI,QAAQG,KAAK,KAAK2I,SAASI,MAAM;sBACrD;AAEA,0BAAMhB,SAAS,KAAKY,SAAS3I,IAAI8I,OAAO;AACxC,0BAAKf,UAAU,MAAO;AACpB,8BAAM,IAAI9C,MAAK,qBAAoBjF,IAAI8I,OAAO;sBAChD;AAEA,0BAAIf,kBAAkBW,kBAAiB;AACrC,+BAAOX,OAAOnI,OAAOC,QAAQC,MAAM;sBACrC;AAEA,2BAAKmI,aAAapI,QAAQG,KAAK+H,MAAM;AAErC,0BAAI,KAAK3L,WAAW,MAAM;AACxB,6BAAKA,QAAQsK,KAAK1G,KAAKH,MAAM;sBAC/B;AACA,6BAAOG;oBACT;AAAC,2BAEDc,OAAA,SAAAA,MAAKQ,KAAKxB,QAAQqI,iBAAwB;AAAA,0BAAxBA,oBAAe,QAAA;AAAfA,0CAAkB;sBAAI;AACtC,0BAAIlE,KAAKxE;AACT,0BAAI,CAAC6B,KAAK;AACR,8BAAM,IAAI2D,MAAM,kBAAkB;sBACpC;AAEA,0BAAMhF,MAAM;wBACVH;wBACAwB;wBACAiG,aAAa;sBACf;AAEA,0BAAIzG,QAAO;AACX,0BAAI,OAAO,KAAKrB,SAAS,UAAU;AACjCqB,wBAAAA,SAAQ,KAAKrB,KAAKqB,KAAKQ,IAAIwH,SAAS7I,GAAG;sBACzC;AAEA,0BAAI,KAAK0I,SAASI,QAAQ;AACxB,6BAAK9E,OAAO,KAAK0E,SAASI,QAAQ;AAChCtJ,iCAAO,KAAKkJ,SAASI,OAAO9E,GAAG;AAC/B,8BAAIxE,KAAKqB,QAAQ,MAAM;AACrBA,4BAAAA,SAAQrB,KAAKqB,KAAKQ,IAAI2C,GAAG,GAAGhE,GAAG;0BACjC;wBACF;sBACF;AAEA,0BAAM8H,SAAS,KAAKY,SAASrH,IAAIwH,OAAO;AACxC,0BAAKf,UAAU,MAAO;AACpB,8BAAM,IAAI9C,MAAK,qBAAoB3D,IAAIwH,OAAO;sBAChD;AAEA,2BAAK7E,OAAO8D,QAAQ;AAClBtI,+BAAOsI,OAAO9D,GAAG;AACjB,4BAAIxE,KAAKqB,QAAQ,MAAM;AACrBA,0BAAAA,SAAQrB,KAAKqB,KAAKQ,IAAI2C,GAAG,GAAGhE,GAAG;wBACjC;sBACF;AAEA,0BAAIkI,iBAAiB;AACnBrH,wBAAAA,SAAQb,IAAIsH;sBACd;AAEA,6BAAOzG;oBACT;AAAC,2BAEDG,SAAA,SAAA,OAAOpB,QAAQyB,KAAKxB,QAAQ;AAC1B,0BAAImE,KAAKxE;AACT,0BAAI,KAAK2I,aAAa,MAAM;AAC1B,6BAAKA,UAAU1B,KAAKpF,KAAKzB,MAAM;sBACjC;AAEA,0BAAMI,MAAM;wBACViB,UAAU,CAAA;wBACVC,aAAatB,OAAOE;wBACpBD;wBACAwB;wBACAiG,aAAa;sBACf;AAEAtH,0BAAImB,gBAAgBvB,OAAOE,MAAM,KAAKe,KAAKQ,KAAKrB,KAAK,KAAK;AAE1D,0BAAI,OAAO,KAAKR,SAAS,UAAU;AACjC,6BAAKA,KAAKwB,OAAOpB,QAAQyB,IAAIwH,OAAO;sBACtC;AAEA,0BAAI,KAAKH,SAASI,QAAQ;AACxB,6BAAK9E,OAAO,KAAK0E,SAASI,QAAQ;AAChCtJ,iCAAO,KAAKkJ,SAASI,OAAO9E,GAAG;AAC/B,8BAAIxE,KAAKwB,UAAU,MAAM;AACvBxB,iCAAKwB,OAAOpB,QAAQyB,IAAI2C,GAAG,GAAGhE,GAAG;0BACnC;wBACF;sBACF;AAEA,0BAAM8H,SAAS,KAAKY,SAASrH,IAAIwH,OAAO;AACxC,2BAAK7E,OAAO8D,QAAQ;AAClBtI,+BAAOsI,OAAO9D,GAAG;AACjB,4BAAIxE,KAAKwB,UAAU,MAAM;AACvBxB,+BAAKwB,OAAOpB,QAAQyB,IAAI2C,GAAG,GAAGhE,GAAG;wBACnC;sBACF;AAEA,0BAAIW,IAAI;AACR,6BAAOA,IAAIX,IAAIiB,SAASxB,QAAQ;AAC9B,4BAAM2B,MAAMpB,IAAIiB,SAASN,GAAG;AAC5BS,4BAAI5B,KAAKwB,OAAOpB,QAAQwB,IAAIC,KAAKD,IAAIvB,MAAM;sBAC7C;oBAEF;AAAC,2BAAA4I;kBAAA,EAhI2BZ,MAAM;AAmIpC5L,kBAAAA,QAAOyC,UAAU+J;;;;;;;;ACzIjB,sBAAA,WAAyBxJ,qBAAQ,IAAU,GAA7BC,UAAO,SAAdI;AAEPZ,kBAAAA,SAAAA,gBAAwB,SAASe,SAAQG,QAAQC,QAAQ;AACvD,wBAAIE;AACJ,wBAAI,OAAON,YAAW,UAAU;AAC9BM,4BAAMN;oBAER,WAAW,OAAOA,YAAW,YAAY;AACvCM,4BAAMN,QAAOgH,KAAK5G,QAAQA,MAAM;oBAElC,WAAWA,UAAW,OAAOJ,YAAW,UAAW;AACjDM,4BAAMF,OAAOJ,OAAM;oBAErB,WAAWG,UAAUH,mBAAkBP,SAAS;AAC9Ca,4BAAMN,QAAOE,OAAOC,MAAM;oBAC5B;AAEA,wBAAImJ,MAAMhJ,GAAG,GAAG;AACd,4BAAM,IAAIiF,MAAM,kBAAkB;oBACpC;AAEA,2BAAOjF;kBACT;AAAE,sBAEIqH,qBACJ,SAAAA,oBAAY4B,MAAW;AAAA,wBAAXA,SAAI,QAAA;AAAJA,6BAAO,CAAC;oBAAC;AACnB,yBAAKC,aAAa;AAClB,yBAAKC,eAAe;AAEpB,6BAASlF,OAAOgF,MAAM;AACpB,0BAAM3H,MAAM2H,KAAKhF,GAAG;AACpB,2BAAKA,GAAG,IAAI3C;oBACd;kBACF;AAGF3C,kBAAAA,SAAAA,qBAA6B0I;;;;;;;;AC5BjB,kBAAArL,qBAAA,IAAA;AAAA,kBAAAA,qBAAA,IAAA;AAAA,kBAAAA,qBAAA,IAAA;AAAA,kBAAAA,qBAAA,IAAA;AAAA,kBAAAA,qBAAA,IAAA;AAAA,kBAAAA,qBAAA,IAAA;AAAA,kBAAAA,qBAAA,IAAA;AAAA,kBAAAA,qBAAA,IAAA;AAAA,kBAAAA,qBAAA,IAAA;AAAA,kBAAAA,qBAAA,IAAA;AAAA,kBAAAA,qBAAA,IAAA;AAAA,kBAAAA,qBAAA,IAAA;AAAA,kBAAAA,qBAAA,IAAA;AAAA,kBAAAA,qBAAA,IAAA;AAAA,kBAAAA,qBAAA,IAAA;AAAA,kBAAAA,qBAAA,IAAA;AAAA,kBAAAA,qBAAA,IAAA;AAAA,kBAAAA,qBAAA,IAAA;AAAA,kBAAAA,qBAAA,IAAA;AAAA,kBAAAA,qBAAA,IAAA;AAAA,kBAAAA,qBAAA,IAAA;AAAA,kBAAAA,qBAAA,IAAA;AAAA,kBAAAA,qBAAA,GAAA;AAAA,kBAAAA,qBAAA,IAAA;AAAA,kBAAAA,qBAAA,IAAA;AAAA,kBAAAA,qBAAA,IAAA;AAAA,kBAAAA,qBAAA,IAAA;AAAA,kBAAAA,qBAAA,IAAA;AAAA,kBAAAA,qBAAA,IAAA;AAAA,kBAAAA,qBAAA,IAAA;AAAA,kBAAAA,qBAAA,IAAA;AAAA,kBAAAA,qBAAA,IAAA;AAAA,kBAAAA,qBAAA,IAAA;AAAA,kBAAAA,qBAAA,IAAA;AAAA,kBAAAA,qBAAA,IAAA;AAAA,kBAAAA,qBAAA,IAAA;AAAA,kBAAAA,qBAAA,IAAA;AAAA,kBAAAA,qBAAA,IAAA;AAAA,kBAAAA,qBAAA,IAAA;AAAA,kBAAAA,qBAAA,IAAA;AAAA,kBAAAA,qBAAA,IAAA;AAAA,kBAAAA,qBAAA,IAAA;AAAA,kBAAAA,qBAAA,GAAA;AAAA,kBAAAA,qBAAA,IAAA;AAAA,kBAAAA,qBAAA,IAAA;AAAA,2BAAAU,oBAAA,QAAA,OAAA;AAAA,6BAAA,IAAA,GAAA,IAAA,MAAA,QAAA,KAAA;AAAA,0BAAA,aAAA,MAAA,CAAA;AAAA,iCAAA,aAAA,WAAA,cAAA;AAAA,iCAAA,eAAA;AAAA,0BAAA,WAAA;AAAA,mCAAA,WAAA;AAAA,6BAAA,eAAA,QAAA0M,gBAAA,WAAA,GAAA,GAAA,UAAA;oBAAA;kBAAA;AAAA,2BAAAzM,eAAA,aAAA,YAAA,aAAA;AAAA,wBAAA;AAAA,sBAAAD,oBAAA,YAAA,WAAA,UAAA;AAAA,wBAAA;AAAA,sBAAAA,oBAAA,aAAA,WAAA;AAAA,2BAAA,eAAA,aAAA,aAAA,EAAA,UAAA,MAAA,CAAA;AAAA,2BAAA;kBAAA;AAAA,2BAAA0M,gBAAA,KAAA;AAAA,wBAAA,MAAAC,cAAA,KAAA,QAAA;AAAA,2BAAA,OAAA,QAAA,WAAA,MAAA,OAAA,GAAA;kBAAA;AAAA,2BAAAA,cAAA,OAAA,MAAA;AAAA,wBAAA,OAAA,UAAA,YAAA,UAAA;AAAA,6BAAA;AAAA,wBAAA,OAAA,MAAA,OAAA,WAAA;AAAA,wBAAA,SAAA,QAAA;AAAA,0BAAA,MAAA,KAAA,KAAA,OAAA,QAAA,SAAA;AAAA,0BAAA,OAAA,QAAA;AAAA,+BAAA;AAAA,4BAAA,IAAA,UAAA,8CAAA;oBAAA;AAAA,4BAAA,SAAA,WAAA,SAAA,QAAA,KAAA;kBAAA;AAAA,2BAAAvM,yBAAAD,OAAA;AAAA,wBAAAA,UAAA,QAAA;AAAA,4BAAA,IAAA,eAAA,2DAAA;oBAAA;AAAA,2BAAAA;kBAAA;AAAA,2BAAA0H,gBAAA,UAAA,YAAA;AAAA,6BAAA,YAAA,OAAA,OAAA,WAAA,SAAA;AAAA,6BAAA,UAAA,cAAA;AAAA,oBAAAvH,kBAAA,UAAA,UAAA;kBAAA;AAAA,2BAAAA,kBAAAO,IAAA,GAAA;AAAA,oBAAAP,oBAAA,OAAA,iBAAA,OAAA,eAAA,KAAA,IAAA,SAAAA,kBAAAO,IAAAC,IAAA;AAAA,sBAAAD,GAAA,YAAAC;AAAA,6BAAAD;oBAAA;AAAA,2BAAAP,kBAAAO,IAAA,CAAA;kBAAA;AAEZ,sBAAM+L,SAASpK,qBAAQ,IAAW;AAClC,sBAAMqK,UAAUrK,qBAAQ,GAAS;AACjC,sBAAMsK,sBACH,OAAOC,WAAW,cAAc,OAAOA,OAAO,KAAK,MAAM,aACtDA,OAAO,KAAK,EAAE,4BAA4B,IAC1C;AAEN9K,kBAAAA,SAAAA,SAAiB4D;AACjB5D,kBAAAA,SAAAA,aAAqB+K;AACrB/K,kBAAAA,SAAAA,oBAA4B;AAE5B,sBAAMgL,eAAe;AACrBhL,kBAAAA,SAAAA,aAAqBgL;AAgBrBpH,kBAAAA,QAAOqH,sBAAsBC,kBAAiB;AAE9C,sBAAI,CAACtH,QAAOqH,uBAAuB,OAAOE,YAAY,eAClD,OAAOA,QAAQ7H,UAAU,YAAY;AACvC6H,4BAAQ7H,MACN,+IACsE;kBAE1E;AAEA,2BAAS4H,oBAAqB;AAE5B,wBAAI;AACF,0BAAME,MAAM,IAAIC,WAAW,CAAC;AAC5B,0BAAMC,QAAQ;wBAAEC,KAAK,SAAA,MAAY;AAAE,iCAAO;wBAAG;sBAAE;AAC/C7K,6BAAO8K,eAAeF,OAAOD,WAAW5F,SAAS;AACjD/E,6BAAO8K,eAAeJ,KAAKE,KAAK;AAChC,6BAAOF,IAAIG,IAAG,MAAO;oBACvB,SAAS5N,IAAG;AACV,6BAAO;oBACT;kBACF;AAEA+C,yBAAO6I,eAAe3F,QAAO6B,WAAW,UAAU;oBAChD8E,YAAY;oBACZjD,KAAK,SAAA,MAAY;AACf,0BAAI,CAAC1D,QAAO6H,SAAS,IAAI;AAAG,+BAAO1J;AACnC,6BAAO,KAAKyB;oBACd;kBACF,CAAC;AAED9C,yBAAO6I,eAAe3F,QAAO6B,WAAW,UAAU;oBAChD8E,YAAY;oBACZjD,KAAK,SAAA,MAAY;AACf,0BAAI,CAAC1D,QAAO6H,SAAS,IAAI;AAAG,+BAAO1J;AACnC,6BAAO,KAAK2J;oBACd;kBACF,CAAC;AAED,2BAASC,aAAc5K,SAAQ;AAC7B,wBAAIA,UAASiK,cAAc;AACzB,4BAAM,IAAIY,WAAW,gBAAgB7K,UAAS,gCAAgC;oBAChF;AAEA,wBAAMoC,MAAM,IAAIkI,WAAWtK,OAAM;AACjCL,2BAAO8K,eAAerI,KAAKS,QAAO6B,SAAS;AAC3C,2BAAOtC;kBACT;AAYA,2BAASS,QAAQiI,KAAKC,kBAAkB/K,SAAQ;AAE9C,wBAAI,OAAO8K,QAAQ,UAAU;AAC3B,0BAAI,OAAOC,qBAAqB,UAAU;AACxC,8BAAM,IAAIC,UACR,oEAAoE;sBAExE;AACA,6BAAOC,YAAYH,GAAG;oBACxB;AACA,2BAAOhI,MAAKgI,KAAKC,kBAAkB/K,OAAM;kBAC3C;AAEA6C,kBAAAA,QAAOqI,WAAW;AAElB,2BAASpI,MAAMpC,OAAOqK,kBAAkB/K,SAAQ;AAC9C,wBAAI,OAAOU,UAAU,UAAU;AAC7B,6BAAOyK,WAAWzK,OAAOqK,gBAAgB;oBAC3C;AAEA,wBAAIK,YAAYC,OAAO3K,KAAK,GAAG;AAC7B,6BAAO4K,cAAc5K,KAAK;oBAC5B;AAEA,wBAAIA,SAAS,MAAM;AACjB,4BAAM,IAAIsK,UACR,oHAC0C,OAAOtK,KAAM;oBAE3D;AAEA,wBAAI6K,WAAW7K,OAAO0K,WAAW,KAC5B1K,SAAS6K,WAAW7K,MAAM+B,QAAQ2I,WAAW,GAAI;AACpD,6BAAOI,gBAAgB9K,OAAOqK,kBAAkB/K,OAAM;oBACxD;AAEA,wBAAI,OAAOyL,sBAAsB,gBAC5BF,WAAW7K,OAAO+K,iBAAiB,KACnC/K,SAAS6K,WAAW7K,MAAM+B,QAAQgJ,iBAAiB,IAAK;AAC3D,6BAAOD,gBAAgB9K,OAAOqK,kBAAkB/K,OAAM;oBACxD;AAEA,wBAAI,OAAOU,UAAU,UAAU;AAC7B,4BAAM,IAAIsK,UACR,uEAAuE;oBAE3E;AAEA,wBAAMU,UAAUhL,MAAMgL,WAAWhL,MAAMgL,QAAO;AAC9C,wBAAIA,WAAW,QAAQA,YAAYhL,OAAO;AACxC,6BAAOmC,QAAOC,KAAK4I,SAASX,kBAAkB/K,OAAM;oBACtD;AAEA,wBAAM2L,IAAIC,WAAWlL,KAAK;AAC1B,wBAAIiL;AAAG,6BAAOA;AAEd,wBAAI,OAAO5B,WAAW,eAAeA,OAAO8B,eAAe,QACvD,OAAOnL,MAAMqJ,OAAO8B,WAAW,MAAM,YAAY;AACnD,6BAAOhJ,QAAOC,KAAKpC,MAAMqJ,OAAO8B,WAAW,EAAE,QAAQ,GAAGd,kBAAkB/K,OAAM;oBAClF;AAEA,0BAAM,IAAIgL,UACR,oHAC0C,OAAOtK,KAAM;kBAE3D;AAUAmC,kBAAAA,QAAOC,OAAO,SAAUpC,OAAOqK,kBAAkB/K,SAAQ;AACvD,2BAAO8C,MAAKpC,OAAOqK,kBAAkB/K,OAAM;kBAC7C;AAIAL,yBAAO8K,eAAe5H,QAAO6B,WAAW4F,WAAW5F,SAAS;AAC5D/E,yBAAO8K,eAAe5H,SAAQyH,UAAU;AAExC,2BAASwB,WAAY1K,OAAM;AACzB,wBAAI,OAAOA,UAAS,UAAU;AAC5B,4BAAM,IAAI4J,UAAU,wCAAwC;oBAC9D,WAAW5J,QAAO,GAAG;AACnB,4BAAM,IAAIyJ,WAAW,gBAAgBzJ,QAAO,gCAAgC;oBAC9E;kBACF;AAEA,2BAAS4D,OAAO5D,OAAMwE,MAAMjD,UAAU;AACpCmJ,+BAAW1K,KAAI;AACf,wBAAIA,SAAQ,GAAG;AACb,6BAAOwJ,aAAaxJ,KAAI;oBAC1B;AACA,wBAAIwE,SAAS5E,QAAW;AAItB,6BAAO,OAAO2B,aAAa,WACvBiI,aAAaxJ,KAAI,EAAEwE,KAAKA,MAAMjD,QAAQ,IACtCiI,aAAaxJ,KAAI,EAAEwE,KAAKA,IAAI;oBAClC;AACA,2BAAOgF,aAAaxJ,KAAI;kBAC1B;AAMAyB,kBAAAA,QAAOmC,QAAQ,SAAU5D,OAAMwE,MAAMjD,UAAU;AAC7C,2BAAOqC,OAAM5D,OAAMwE,MAAMjD,QAAQ;kBACnC;AAEA,2BAASsI,YAAa7J,OAAM;AAC1B0K,+BAAW1K,KAAI;AACf,2BAAOwJ,aAAaxJ,QAAO,IAAI,IAAI2K,QAAQ3K,KAAI,IAAI,CAAC;kBACtD;AAKAyB,kBAAAA,QAAOoI,cAAc,SAAU7J,OAAM;AACnC,2BAAO6J,YAAY7J,KAAI;kBACzB;AAIAyB,kBAAAA,QAAOmJ,kBAAkB,SAAU5K,OAAM;AACvC,2BAAO6J,YAAY7J,KAAI;kBACzB;AAEA,2BAAS+J,WAAY7F,QAAQ3C,UAAU;AACrC,wBAAI,OAAOA,aAAa,YAAYA,aAAa,IAAI;AACnDA,iCAAW;oBACb;AAEA,wBAAI,CAACE,QAAOoJ,WAAWtJ,QAAQ,GAAG;AAChC,4BAAM,IAAIqI,UAAU,uBAAuBrI,QAAQ;oBACrD;AAEA,wBAAM3C,UAASkI,WAAW5C,QAAQ3C,QAAQ,IAAI;AAC9C,wBAAIP,MAAMwI,aAAa5K,OAAM;AAE7B,wBAAMkM,SAAS9J,IAAI+J,MAAM7G,QAAQ3C,QAAQ;AAEzC,wBAAIuJ,WAAWlM,SAAQ;AAIrBoC,4BAAMA,IAAIa,MAAM,GAAGiJ,MAAM;oBAC3B;AAEA,2BAAO9J;kBACT;AAEA,2BAASgK,cAAe/K,OAAO;AAC7B,wBAAMrB,UAASqB,MAAMrB,SAAS,IAAI,IAAI+L,QAAQ1K,MAAMrB,MAAM,IAAI;AAC9D,wBAAMoC,MAAMwI,aAAa5K,OAAM;AAC/B,6BAASkB,IAAI,GAAGA,IAAIlB,SAAQkB,KAAK,GAAG;AAClCkB,0BAAIlB,CAAC,IAAIG,MAAMH,CAAC,IAAI;oBACtB;AACA,2BAAOkB;kBACT;AAEA,2BAASkJ,cAAee,WAAW;AACjC,wBAAId,WAAWc,WAAW/B,UAAU,GAAG;AACrC,0BAAMgC,QAAO,IAAIhC,WAAW+B,SAAS;AACrC,6BAAOb,gBAAgBc,MAAK7J,QAAQ6J,MAAK3B,YAAY2B,MAAKpE,UAAU;oBACtE;AACA,2BAAOkE,cAAcC,SAAS;kBAChC;AAEA,2BAASb,gBAAiBnK,OAAOsJ,YAAY3K,SAAQ;AACnD,wBAAI2K,aAAa,KAAKtJ,MAAM6G,aAAayC,YAAY;AACnD,4BAAM,IAAIE,WAAW,sCAAsC;oBAC7D;AAEA,wBAAIxJ,MAAM6G,aAAayC,cAAc3K,WAAU,IAAI;AACjD,4BAAM,IAAI6K,WAAW,sCAAsC;oBAC7D;AAEA,wBAAIzI;AACJ,wBAAIuI,eAAe3J,UAAahB,YAAWgB,QAAW;AACpDoB,4BAAM,IAAIkI,WAAWjJ,KAAK;oBAC5B,WAAWrB,YAAWgB,QAAW;AAC/BoB,4BAAM,IAAIkI,WAAWjJ,OAAOsJ,UAAU;oBACxC,OAAO;AACLvI,4BAAM,IAAIkI,WAAWjJ,OAAOsJ,YAAY3K,OAAM;oBAChD;AAGAL,2BAAO8K,eAAerI,KAAKS,QAAO6B,SAAS;AAE3C,2BAAOtC;kBACT;AAEA,2BAASwJ,WAAYxP,KAAK;AACxB,wBAAIyG,QAAO6H,SAAStO,GAAG,GAAG;AACxB,0BAAMmQ,MAAMR,QAAQ3P,IAAI4D,MAAM,IAAI;AAClC,0BAAMoC,MAAMwI,aAAa2B,GAAG;AAE5B,0BAAInK,IAAIpC,WAAW,GAAG;AACpB,+BAAOoC;sBACT;AAEAhG,0BAAIkQ,KAAKlK,KAAK,GAAG,GAAGmK,GAAG;AACvB,6BAAOnK;oBACT;AAEA,wBAAIhG,IAAI4D,WAAWgB,QAAW;AAC5B,0BAAI,OAAO5E,IAAI4D,WAAW,YAAYwM,YAAYpQ,IAAI4D,MAAM,GAAG;AAC7D,+BAAO4K,aAAa,CAAC;sBACvB;AACA,6BAAOwB,cAAchQ,GAAG;oBAC1B;AAEA,wBAAIA,IAAI2D,SAAS,YAAY0M,MAAMC,QAAQtQ,IAAI4L,IAAI,GAAG;AACpD,6BAAOoE,cAAchQ,IAAI4L,IAAI;oBAC/B;kBACF;AAEA,2BAAS+D,QAAS/L,SAAQ;AAGxB,wBAAIA,WAAUiK,cAAc;AAC1B,4BAAM,IAAIY,WAAW,4DACaZ,aAAarH,SAAS,EAAE,IAAI,QAAQ;oBACxE;AACA,2BAAO5C,UAAS;kBAClB;AAEA,2BAASgK,WAAYhK,SAAQ;AAC3B,wBAAI,CAACA,WAAUA,SAAQ;AACrBA,sBAAAA,UAAS;oBACX;AACA,2BAAO6C,QAAOmC,MAAM,CAAChF,OAAM;kBAC7B;AAEA6C,kBAAAA,QAAO6H,WAAW,SAASA,SAAUiB,GAAG;AACtC,2BAAOA,KAAK,QAAQA,EAAEgB,cAAc,QAClChB,MAAM9I,QAAO6B;kBACjB;AAEA7B,kBAAAA,QAAO+J,UAAU,SAASA,QAAS1Q,IAAGyP,GAAG;AACvC,wBAAIJ,WAAWrP,IAAGoO,UAAU;AAAGpO,sBAAAA,KAAI2G,QAAOC,KAAK5G,IAAGA,GAAEqL,QAAQrL,GAAEgM,UAAU;AACxE,wBAAIqD,WAAWI,GAAGrB,UAAU;AAAGqB,0BAAI9I,QAAOC,KAAK6I,GAAGA,EAAEpE,QAAQoE,EAAEzD,UAAU;AACxE,wBAAI,CAACrF,QAAO6H,SAASxO,EAAC,KAAK,CAAC2G,QAAO6H,SAASiB,CAAC,GAAG;AAC9C,4BAAM,IAAIX,UACR,uEAAuE;oBAE3E;AAEA,wBAAI9O,OAAMyP;AAAG,6BAAO;AAEpB,wBAAI/M,KAAI1C,GAAE8D;AACV,wBAAInB,KAAI8M,EAAE3L;AAEV,6BAASkB,IAAI,GAAGqL,MAAMM,KAAKC,IAAIlO,IAAGC,EAAC,GAAGqC,IAAIqL,KAAK,EAAErL,GAAG;AAClD,0BAAIhF,GAAEgF,CAAC,MAAMyK,EAAEzK,CAAC,GAAG;AACjBtC,wBAAAA,KAAI1C,GAAEgF,CAAC;AACPrC,wBAAAA,KAAI8M,EAAEzK,CAAC;AACP;sBACF;oBACF;AAEA,wBAAItC,KAAIC;AAAG,6BAAO;AAClB,wBAAIA,KAAID;AAAG,6BAAO;AAClB,2BAAO;kBACT;AAEAiE,kBAAAA,QAAOoJ,aAAa,SAASA,WAAYtJ,UAAU;AACjD,4BAAQoK,OAAOpK,QAAQ,EAAEqK,YAAW,GAAE;sBACpC,KAAK;sBACL,KAAK;sBACL,KAAK;sBACL,KAAK;sBACL,KAAK;sBACL,KAAK;sBACL,KAAK;sBACL,KAAK;sBACL,KAAK;sBACL,KAAK;sBACL,KAAK;AACH,+BAAO;sBACT;AACE,+BAAO;oBAAK;kBAElB;AAEAnK,kBAAAA,QAAOoK,SAAS,SAASA,OAAQC,MAAMlN,SAAQ;AAC7C,wBAAI,CAACyM,MAAMC,QAAQQ,IAAI,GAAG;AACxB,4BAAM,IAAIlC,UAAU,6CAA6C;oBACnE;AAEA,wBAAIkC,KAAKlN,WAAW,GAAG;AACrB,6BAAO6C,QAAOmC,MAAM,CAAC;oBACvB;AAEA,wBAAI9D;AACJ,wBAAIlB,YAAWgB,QAAW;AACxBhB,sBAAAA,UAAS;AACT,2BAAKkB,IAAI,GAAGA,IAAIgM,KAAKlN,QAAQ,EAAEkB,GAAG;AAChClB,wBAAAA,WAAUkN,KAAKhM,CAAC,EAAElB;sBACpB;oBACF;AAEA,wBAAMyC,SAASI,QAAOoI,YAAYjL,OAAM;AACxC,wBAAIK,MAAM;AACV,yBAAKa,IAAI,GAAGA,IAAIgM,KAAKlN,QAAQ,EAAEkB,GAAG;AAChC,0BAAIkB,MAAM8K,KAAKhM,CAAC;AAChB,0BAAIqK,WAAWnJ,KAAKkI,UAAU,GAAG;AAC/B,4BAAIjK,MAAM+B,IAAIpC,SAASyC,OAAOzC,QAAQ;AACpC,8BAAI,CAAC6C,QAAO6H,SAAStI,GAAG;AAAGA,kCAAMS,QAAOC,KAAKV,GAAG;AAChDA,8BAAIkK,KAAK7J,QAAQpC,GAAG;wBACtB,OAAO;AACLiK,qCAAW5F,UAAUyI,IAAInG,KACvBvE,QACAL,KACA/B,GAAG;wBAEP;sBACF,WAAW,CAACwC,QAAO6H,SAAStI,GAAG,GAAG;AAChC,8BAAM,IAAI4I,UAAU,6CAA6C;sBACnE,OAAO;AACL5I,4BAAIkK,KAAK7J,QAAQpC,GAAG;sBACtB;AACAA,6BAAO+B,IAAIpC;oBACb;AACA,2BAAOyC;kBACT;AAEA,2BAASyF,WAAY5C,QAAQ3C,UAAU;AACrC,wBAAIE,QAAO6H,SAASpF,MAAM,GAAG;AAC3B,6BAAOA,OAAOtF;oBAChB;AACA,wBAAIoL,YAAYC,OAAO/F,MAAM,KAAKiG,WAAWjG,QAAQ8F,WAAW,GAAG;AACjE,6BAAO9F,OAAO4C;oBAChB;AACA,wBAAI,OAAO5C,WAAW,UAAU;AAC9B,4BAAM,IAAI0F,UACR,6FACmB,OAAO1F,MAAM;oBAEpC;AAEA,wBAAMiH,MAAMjH,OAAOtF;AACnB,wBAAMoN,YAAarI,UAAU/E,SAAS,KAAK+E,UAAU,CAAC,MAAM;AAC5D,wBAAI,CAACqI,aAAab,QAAQ;AAAG,6BAAO;AAGpC,wBAAIc,cAAc;AAClB,+BAAS;AACP,8BAAQ1K,UAAQ;wBACd,KAAK;wBACL,KAAK;wBACL,KAAK;AACH,iCAAO4J;wBACT,KAAK;wBACL,KAAK;AACH,iCAAOe,YAAYhI,MAAM,EAAEtF;wBAC7B,KAAK;wBACL,KAAK;wBACL,KAAK;wBACL,KAAK;AACH,iCAAOuM,MAAM;wBACf,KAAK;AACH,iCAAOA,QAAQ;wBACjB,KAAK;AACH,iCAAOgB,cAAcjI,MAAM,EAAEtF;wBAC/B;AACE,8BAAIqN,aAAa;AACf,mCAAOD,YAAY,KAAKE,YAAYhI,MAAM,EAAEtF;0BAC9C;AACA2C,sCAAY,KAAKA,UAAUqK,YAAW;AACtCK,wCAAc;sBAAI;oBAExB;kBACF;AACAxK,kBAAAA,QAAOqF,aAAaA;AAEpB,2BAASsF,aAAc7K,UAAU8K,OAAOtM,KAAK;AAC3C,wBAAIkM,cAAc;AASlB,wBAAII,UAAUzM,UAAayM,QAAQ,GAAG;AACpCA,8BAAQ;oBACV;AAGA,wBAAIA,QAAQ,KAAKzN,QAAQ;AACvB,6BAAO;oBACT;AAEA,wBAAImB,QAAQH,UAAaG,MAAM,KAAKnB,QAAQ;AAC1CmB,4BAAM,KAAKnB;oBACb;AAEA,wBAAImB,OAAO,GAAG;AACZ,6BAAO;oBACT;AAGAA,6BAAS;AACTsM,+BAAW;AAEX,wBAAItM,OAAOsM,OAAO;AAChB,6BAAO;oBACT;AAEA,wBAAI,CAAC9K;AAAUA,iCAAW;AAE1B,2BAAO,MAAM;AACX,8BAAQA,UAAQ;wBACd,KAAK;AACH,iCAAO+K,SAAS,MAAMD,OAAOtM,GAAG;wBAElC,KAAK;wBACL,KAAK;AACH,iCAAOwM,UAAU,MAAMF,OAAOtM,GAAG;wBAEnC,KAAK;AACH,iCAAOyM,WAAW,MAAMH,OAAOtM,GAAG;wBAEpC,KAAK;wBACL,KAAK;AACH,iCAAO0M,YAAY,MAAMJ,OAAOtM,GAAG;wBAErC,KAAK;AACH,iCAAO2M,YAAY,MAAML,OAAOtM,GAAG;wBAErC,KAAK;wBACL,KAAK;wBACL,KAAK;wBACL,KAAK;AACH,iCAAO4M,aAAa,MAAMN,OAAOtM,GAAG;wBAEtC;AACE,8BAAIkM;AAAa,kCAAM,IAAIrC,UAAU,uBAAuBrI,QAAQ;AACpEA,sCAAYA,WAAW,IAAIqK,YAAW;AACtCK,wCAAc;sBAAI;oBAExB;kBACF;AAQAxK,kBAAAA,QAAO6B,UAAUiI,YAAY;AAE7B,2BAASqB,MAAMrC,GAAGsC,IAAGC,GAAG;AACtB,wBAAMhN,IAAIyK,EAAEsC,EAAC;AACbtC,sBAAEsC,EAAC,IAAItC,EAAEuC,CAAC;AACVvC,sBAAEuC,CAAC,IAAIhN;kBACT;AAEA2B,kBAAAA,QAAO6B,UAAUyJ,SAAS,SAASA,SAAU;AAC3C,wBAAM5B,MAAM,KAAKvM;AACjB,wBAAIuM,MAAM,MAAM,GAAG;AACjB,4BAAM,IAAI1B,WAAW,2CAA2C;oBAClE;AACA,6BAAS3J,IAAI,GAAGA,IAAIqL,KAAKrL,KAAK,GAAG;AAC/B8M,sBAAAA,MAAK,MAAM9M,GAAGA,IAAI,CAAC;oBACrB;AACA,2BAAO;kBACT;AAEA2B,kBAAAA,QAAO6B,UAAU0J,SAAS,SAASA,SAAU;AAC3C,wBAAM7B,MAAM,KAAKvM;AACjB,wBAAIuM,MAAM,MAAM,GAAG;AACjB,4BAAM,IAAI1B,WAAW,2CAA2C;oBAClE;AACA,6BAAS3J,IAAI,GAAGA,IAAIqL,KAAKrL,KAAK,GAAG;AAC/B8M,sBAAAA,MAAK,MAAM9M,GAAGA,IAAI,CAAC;AACnB8M,sBAAAA,MAAK,MAAM9M,IAAI,GAAGA,IAAI,CAAC;oBACzB;AACA,2BAAO;kBACT;AAEA2B,kBAAAA,QAAO6B,UAAU2J,SAAS,SAASA,SAAU;AAC3C,wBAAM9B,MAAM,KAAKvM;AACjB,wBAAIuM,MAAM,MAAM,GAAG;AACjB,4BAAM,IAAI1B,WAAW,2CAA2C;oBAClE;AACA,6BAAS3J,IAAI,GAAGA,IAAIqL,KAAKrL,KAAK,GAAG;AAC/B8M,sBAAAA,MAAK,MAAM9M,GAAGA,IAAI,CAAC;AACnB8M,sBAAAA,MAAK,MAAM9M,IAAI,GAAGA,IAAI,CAAC;AACvB8M,sBAAAA,MAAK,MAAM9M,IAAI,GAAGA,IAAI,CAAC;AACvB8M,sBAAAA,MAAK,MAAM9M,IAAI,GAAGA,IAAI,CAAC;oBACzB;AACA,2BAAO;kBACT;AAEA2B,kBAAAA,QAAO6B,UAAU9B,WAAW,SAASA,WAAY;AAC/C,wBAAM5C,UAAS,KAAKA;AACpB,wBAAIA,YAAW;AAAG,6BAAO;AACzB,wBAAI+E,UAAU/E,WAAW;AAAG,6BAAO2N,UAAU,MAAM,GAAG3N,OAAM;AAC5D,2BAAOwN,aAAac,MAAM,MAAMvJ,SAAS;kBAC3C;AAEAlC,kBAAAA,QAAO6B,UAAU6J,iBAAiB1L,QAAO6B,UAAU9B;AAEnDC,kBAAAA,QAAO6B,UAAU8J,SAAS,SAASA,OAAQ7C,GAAG;AAC5C,wBAAI,CAAC9I,QAAO6H,SAASiB,CAAC;AAAG,4BAAM,IAAIX,UAAU,2BAA2B;AACxE,wBAAI,SAASW;AAAG,6BAAO;AACvB,2BAAO9I,QAAO+J,QAAQ,MAAMjB,CAAC,MAAM;kBACrC;AAEA9I,kBAAAA,QAAO6B,UAAUuB,UAAU,SAASA,UAAW;AAC7C,wBAAIwI,MAAM;AACV,wBAAMC,OAAMzP,SAAQ0P;AACpBF,0BAAM,KAAK7L,SAAS,OAAO,GAAG8L,IAAG,EAAEjK,QAAQ,WAAW,KAAK,EAAEmK,KAAI;AACjE,wBAAI,KAAK5O,SAAS0O;AAAKD,6BAAO;AAC9B,2BAAO,aAAaA,MAAM;kBAC5B;AACA,sBAAI3E,qBAAqB;AACvBjH,oBAAAA,QAAO6B,UAAUoF,mBAAmB,IAAIjH,QAAO6B,UAAUuB;kBAC3D;AAEApD,kBAAAA,QAAO6B,UAAUkI,UAAU,SAASA,QAAS7L,QAAQ0M,OAAOtM,KAAK0N,WAAWC,SAAS;AACnF,wBAAIvD,WAAWxK,QAAQuJ,UAAU,GAAG;AAClCvJ,+BAAS8B,QAAOC,KAAK/B,QAAQA,OAAOwG,QAAQxG,OAAOmH,UAAU;oBAC/D;AACA,wBAAI,CAACrF,QAAO6H,SAAS3J,MAAM,GAAG;AAC5B,4BAAM,IAAIiK,UACR,mFACoB,OAAOjK,MAAO;oBAEtC;AAEA,wBAAI0M,UAAUzM,QAAW;AACvByM,8BAAQ;oBACV;AACA,wBAAItM,QAAQH,QAAW;AACrBG,4BAAMJ,SAASA,OAAOf,SAAS;oBACjC;AACA,wBAAI6O,cAAc7N,QAAW;AAC3B6N,kCAAY;oBACd;AACA,wBAAIC,YAAY9N,QAAW;AACzB8N,gCAAU,KAAK9O;oBACjB;AAEA,wBAAIyN,QAAQ,KAAKtM,MAAMJ,OAAOf,UAAU6O,YAAY,KAAKC,UAAU,KAAK9O,QAAQ;AAC9E,4BAAM,IAAI6K,WAAW,oBAAoB;oBAC3C;AAEA,wBAAIgE,aAAaC,WAAWrB,SAAStM,KAAK;AACxC,6BAAO;oBACT;AACA,wBAAI0N,aAAaC,SAAS;AACxB,6BAAO;oBACT;AACA,wBAAIrB,SAAStM,KAAK;AAChB,6BAAO;oBACT;AAEAsM,+BAAW;AACXtM,6BAAS;AACT0N,mCAAe;AACfC,iCAAa;AAEb,wBAAI,SAAS/N;AAAQ,6BAAO;AAE5B,wBAAInC,KAAIkQ,UAAUD;AAClB,wBAAIhQ,KAAIsC,MAAMsM;AACd,wBAAMlB,MAAMM,KAAKC,IAAIlO,IAAGC,EAAC;AAEzB,wBAAMkQ,WAAW,KAAK9L,MAAM4L,WAAWC,OAAO;AAC9C,wBAAME,aAAajO,OAAOkC,MAAMwK,OAAOtM,GAAG;AAE1C,6BAASD,IAAI,GAAGA,IAAIqL,KAAK,EAAErL,GAAG;AAC5B,0BAAI6N,SAAS7N,CAAC,MAAM8N,WAAW9N,CAAC,GAAG;AACjCtC,wBAAAA,KAAImQ,SAAS7N,CAAC;AACdrC,wBAAAA,KAAImQ,WAAW9N,CAAC;AAChB;sBACF;oBACF;AAEA,wBAAItC,KAAIC;AAAG,6BAAO;AAClB,wBAAIA,KAAID;AAAG,6BAAO;AAClB,2BAAO;kBACT;AAWA,2BAASqQ,qBAAsBxM,QAAQb,KAAK+I,YAAYhI,UAAUuM,KAAK;AAErE,wBAAIzM,OAAOzC,WAAW;AAAG,6BAAO;AAGhC,wBAAI,OAAO2K,eAAe,UAAU;AAClChI,iCAAWgI;AACXA,mCAAa;oBACf,WAAWA,aAAa,YAAY;AAClCA,mCAAa;oBACf,WAAWA,aAAa,aAAa;AACnCA,mCAAa;oBACf;AACAA,iCAAa,CAACA;AACd,wBAAI6B,YAAY7B,UAAU,GAAG;AAE3BA,mCAAauE,MAAM,IAAKzM,OAAOzC,SAAS;oBAC1C;AAGA,wBAAI2K,aAAa;AAAGA,mCAAalI,OAAOzC,SAAS2K;AACjD,wBAAIA,cAAclI,OAAOzC,QAAQ;AAC/B,0BAAIkP;AAAK,+BAAO;;AACXvE,qCAAalI,OAAOzC,SAAS;oBACpC,WAAW2K,aAAa,GAAG;AACzB,0BAAIuE;AAAKvE,qCAAa;;AACjB,+BAAO;oBACd;AAGA,wBAAI,OAAO/I,QAAQ,UAAU;AAC3BA,4BAAMiB,QAAOC,KAAKlB,KAAKe,QAAQ;oBACjC;AAGA,wBAAIE,QAAO6H,SAAS9I,GAAG,GAAG;AAExB,0BAAIA,IAAI5B,WAAW,GAAG;AACpB,+BAAO;sBACT;AACA,6BAAOmP,aAAa1M,QAAQb,KAAK+I,YAAYhI,UAAUuM,GAAG;oBAC5D,WAAW,OAAOtN,QAAQ,UAAU;AAClCA,4BAAMA,MAAM;AACZ,0BAAI,OAAO0I,WAAW5F,UAAUsB,YAAY,YAAY;AACtD,4BAAIkJ,KAAK;AACP,iCAAO5E,WAAW5F,UAAUsB,QAAQgB,KAAKvE,QAAQb,KAAK+I,UAAU;wBAClE,OAAO;AACL,iCAAOL,WAAW5F,UAAU0K,YAAYpI,KAAKvE,QAAQb,KAAK+I,UAAU;wBACtE;sBACF;AACA,6BAAOwE,aAAa1M,QAAQ,CAACb,GAAG,GAAG+I,YAAYhI,UAAUuM,GAAG;oBAC9D;AAEA,0BAAM,IAAIlE,UAAU,sCAAsC;kBAC5D;AAEA,2BAASmE,aAAc9E,KAAKzI,KAAK+I,YAAYhI,UAAUuM,KAAK;AAC1D,wBAAIG,YAAY;AAChB,wBAAIC,YAAYjF,IAAIrK;AACpB,wBAAIuP,YAAY3N,IAAI5B;AAEpB,wBAAI2C,aAAa3B,QAAW;AAC1B2B,iCAAWoK,OAAOpK,QAAQ,EAAEqK,YAAW;AACvC,0BAAIrK,aAAa,UAAUA,aAAa,WACpCA,aAAa,aAAaA,aAAa,YAAY;AACrD,4BAAI0H,IAAIrK,SAAS,KAAK4B,IAAI5B,SAAS,GAAG;AACpC,iCAAO;wBACT;AACAqP,oCAAY;AACZC,qCAAa;AACbC,qCAAa;AACb5E,sCAAc;sBAChB;oBACF;AAEA,6BAAS6E,KAAMpN,KAAKlB,IAAG;AACrB,0BAAImO,cAAc,GAAG;AACnB,+BAAOjN,IAAIlB,EAAC;sBACd,OAAO;AACL,+BAAOkB,IAAIe,aAAajC,KAAImO,SAAS;sBACvC;oBACF;AAEA,wBAAInO;AACJ,wBAAIgO,KAAK;AACP,0BAAIO,aAAa;AACjB,2BAAKvO,IAAIyJ,YAAYzJ,IAAIoO,WAAWpO,KAAK;AACvC,4BAAIsO,KAAKnF,KAAKnJ,CAAC,MAAMsO,KAAK5N,KAAK6N,eAAe,KAAK,IAAIvO,IAAIuO,UAAU,GAAG;AACtE,8BAAIA,eAAe;AAAIA,yCAAavO;AACpC,8BAAIA,IAAIuO,aAAa,MAAMF;AAAW,mCAAOE,aAAaJ;wBAC5D,OAAO;AACL,8BAAII,eAAe;AAAIvO,iCAAKA,IAAIuO;AAChCA,uCAAa;wBACf;sBACF;oBACF,OAAO;AACL,0BAAI9E,aAAa4E,YAAYD;AAAW3E,qCAAa2E,YAAYC;AACjE,2BAAKrO,IAAIyJ,YAAYzJ,KAAK,GAAGA,KAAK;AAChC,4BAAIwO,QAAQ;AACZ,iCAASC,IAAI,GAAGA,IAAIJ,WAAWI,KAAK;AAClC,8BAAIH,KAAKnF,KAAKnJ,IAAIyO,CAAC,MAAMH,KAAK5N,KAAK+N,CAAC,GAAG;AACrCD,oCAAQ;AACR;0BACF;wBACF;AACA,4BAAIA;AAAO,iCAAOxO;sBACpB;oBACF;AAEA,2BAAO;kBACT;AAEA2B,kBAAAA,QAAO6B,UAAUkL,WAAW,SAASA,SAAUhO,KAAK+I,YAAYhI,UAAU;AACxE,2BAAO,KAAKqD,QAAQpE,KAAK+I,YAAYhI,QAAQ,MAAM;kBACrD;AAEAE,kBAAAA,QAAO6B,UAAUsB,UAAU,SAASA,SAASpE,KAAK+I,YAAYhI,UAAU;AACtE,2BAAOsM,qBAAqB,MAAMrN,KAAK+I,YAAYhI,UAAU,IAAI;kBACnE;AAEAE,kBAAAA,QAAO6B,UAAU0K,cAAc,SAASA,YAAaxN,KAAK+I,YAAYhI,UAAU;AAC9E,2BAAOsM,qBAAqB,MAAMrN,KAAK+I,YAAYhI,UAAU,KAAK;kBACpE;AAEA,2BAASkN,SAAUzN,KAAKkD,QAAQiC,QAAQvH,SAAQ;AAC9CuH,6BAAS1H,OAAO0H,MAAM,KAAK;AAC3B,wBAAMuI,YAAY1N,IAAIpC,SAASuH;AAC/B,wBAAI,CAACvH,SAAQ;AACXA,sBAAAA,UAAS8P;oBACX,OAAO;AACL9P,sBAAAA,UAASH,OAAOG,OAAM;AACtB,0BAAIA,UAAS8P,WAAW;AACtB9P,wBAAAA,UAAS8P;sBACX;oBACF;AAEA,wBAAMC,SAASzK,OAAOtF;AAEtB,wBAAIA,UAAS+P,SAAS,GAAG;AACvB/P,sBAAAA,UAAS+P,SAAS;oBACpB;AACA,wBAAI7O;AACJ,yBAAKA,IAAI,GAAGA,IAAIlB,SAAQ,EAAEkB,GAAG;AAC3B,0BAAM8O,SAASC,SAAS3K,OAAO4K,OAAOhP,IAAI,GAAG,CAAC,GAAG,EAAE;AACnD,0BAAIsL,YAAYwD,MAAM;AAAG,+BAAO9O;AAChCkB,0BAAImF,SAASrG,CAAC,IAAI8O;oBACpB;AACA,2BAAO9O;kBACT;AAEA,2BAASiP,UAAW/N,KAAKkD,QAAQiC,QAAQvH,SAAQ;AAC/C,2BAAOoQ,WAAW9C,YAAYhI,QAAQlD,IAAIpC,SAASuH,MAAM,GAAGnF,KAAKmF,QAAQvH,OAAM;kBACjF;AAEA,2BAASqQ,WAAYjO,KAAKkD,QAAQiC,QAAQvH,SAAQ;AAChD,2BAAOoQ,WAAWE,aAAahL,MAAM,GAAGlD,KAAKmF,QAAQvH,OAAM;kBAC7D;AAEA,2BAASuQ,YAAanO,KAAKkD,QAAQiC,QAAQvH,SAAQ;AACjD,2BAAOoQ,WAAW7C,cAAcjI,MAAM,GAAGlD,KAAKmF,QAAQvH,OAAM;kBAC9D;AAEA,2BAASwQ,UAAWpO,KAAKkD,QAAQiC,QAAQvH,SAAQ;AAC/C,2BAAOoQ,WAAWK,eAAenL,QAAQlD,IAAIpC,SAASuH,MAAM,GAAGnF,KAAKmF,QAAQvH,OAAM;kBACpF;AAEA6C,kBAAAA,QAAO6B,UAAUyH,QAAQ,SAASA,MAAO7G,QAAQiC,QAAQvH,SAAQ2C,UAAU;AAEzE,wBAAI4E,WAAWvG,QAAW;AACxB2B,iCAAW;AACX3C,sBAAAA,UAAS,KAAKA;AACduH,+BAAS;oBAEX,WAAWvH,YAAWgB,UAAa,OAAOuG,WAAW,UAAU;AAC7D5E,iCAAW4E;AACXvH,sBAAAA,UAAS,KAAKA;AACduH,+BAAS;oBAEX,WAAWmJ,SAASnJ,MAAM,GAAG;AAC3BA,+BAASA,WAAW;AACpB,0BAAImJ,SAAS1Q,OAAM,GAAG;AACpBA,wBAAAA,UAASA,YAAW;AACpB,4BAAI2C,aAAa3B;AAAW2B,qCAAW;sBACzC,OAAO;AACLA,mCAAW3C;AACXA,wBAAAA,UAASgB;sBACX;oBACF,OAAO;AACL,4BAAM,IAAIuE,MACR,yEAAyE;oBAE7E;AAEA,wBAAMuK,YAAY,KAAK9P,SAASuH;AAChC,wBAAIvH,YAAWgB,UAAahB,UAAS8P;AAAW9P,sBAAAA,UAAS8P;AAEzD,wBAAKxK,OAAOtF,SAAS,MAAMA,UAAS,KAAKuH,SAAS,MAAOA,SAAS,KAAKvH,QAAQ;AAC7E,4BAAM,IAAI6K,WAAW,wCAAwC;oBAC/D;AAEA,wBAAI,CAAClI;AAAUA,iCAAW;AAE1B,wBAAI0K,cAAc;AAClB,+BAAS;AACP,8BAAQ1K,UAAQ;wBACd,KAAK;AACH,iCAAOkN,SAAS,MAAMvK,QAAQiC,QAAQvH,OAAM;wBAE9C,KAAK;wBACL,KAAK;AACH,iCAAOmQ,UAAU,MAAM7K,QAAQiC,QAAQvH,OAAM;wBAE/C,KAAK;wBACL,KAAK;wBACL,KAAK;AACH,iCAAOqQ,WAAW,MAAM/K,QAAQiC,QAAQvH,OAAM;wBAEhD,KAAK;AAEH,iCAAOuQ,YAAY,MAAMjL,QAAQiC,QAAQvH,OAAM;wBAEjD,KAAK;wBACL,KAAK;wBACL,KAAK;wBACL,KAAK;AACH,iCAAOwQ,UAAU,MAAMlL,QAAQiC,QAAQvH,OAAM;wBAE/C;AACE,8BAAIqN;AAAa,kCAAM,IAAIrC,UAAU,uBAAuBrI,QAAQ;AACpEA,sCAAY,KAAKA,UAAUqK,YAAW;AACtCK,wCAAc;sBAAI;oBAExB;kBACF;AAEAxK,kBAAAA,QAAO6B,UAAUiM,SAAS,SAASA,SAAU;AAC3C,2BAAO;sBACL5Q,MAAM;sBACNiI,MAAMyE,MAAM/H,UAAUzB,MAAM+D,KAAK,KAAK4J,QAAQ,MAAM,CAAC;oBACvD;kBACF;AAEA,2BAAS9C,YAAa1L,KAAKqL,OAAOtM,KAAK;AACrC,wBAAIsM,UAAU,KAAKtM,QAAQiB,IAAIpC,QAAQ;AACrC,6BAAO4J,OAAOiH,cAAczO,GAAG;oBACjC,OAAO;AACL,6BAAOwH,OAAOiH,cAAczO,IAAIa,MAAMwK,OAAOtM,GAAG,CAAC;oBACnD;kBACF;AAEA,2BAASwM,UAAWvL,KAAKqL,OAAOtM,KAAK;AACnCA,0BAAM0L,KAAKC,IAAI1K,IAAIpC,QAAQmB,GAAG;AAC9B,wBAAMb,MAAM,CAAA;AAEZ,wBAAIY,IAAIuM;AACR,2BAAOvM,IAAIC,KAAK;AACd,0BAAM2P,YAAY1O,IAAIlB,CAAC;AACvB,0BAAI6P,YAAY;AAChB,0BAAIC,mBAAoBF,YAAY,MAChC,IACCA,YAAY,MACT,IACCA,YAAY,MACT,IACA;AAEZ,0BAAI5P,IAAI8P,oBAAoB7P,KAAK;AAC/B,4BAAI8P,aAAU,QAAEC,YAAS,QAAEC,aAAU,QAAEC,gBAAa;AAEpD,gCAAQJ,kBAAgB;0BACtB,KAAK;AACH,gCAAIF,YAAY,KAAM;AACpBC,0CAAYD;4BACd;AACA;0BACF,KAAK;AACHG,yCAAa7O,IAAIlB,IAAI,CAAC;AACtB,iCAAK+P,aAAa,SAAU,KAAM;AAChCG,+CAAiBN,YAAY,OAAS,IAAOG,aAAa;AAC1D,kCAAIG,gBAAgB,KAAM;AACxBL,4CAAYK;8BACd;4BACF;AACA;0BACF,KAAK;AACHH,yCAAa7O,IAAIlB,IAAI,CAAC;AACtBgQ,wCAAY9O,IAAIlB,IAAI,CAAC;AACrB,iCAAK+P,aAAa,SAAU,QAASC,YAAY,SAAU,KAAM;AAC/DE,+CAAiBN,YAAY,OAAQ,MAAOG,aAAa,OAAS,IAAOC,YAAY;AACrF,kCAAIE,gBAAgB,SAAUA,gBAAgB,SAAUA,gBAAgB,QAAS;AAC/EL,4CAAYK;8BACd;4BACF;AACA;0BACF,KAAK;AACHH,yCAAa7O,IAAIlB,IAAI,CAAC;AACtBgQ,wCAAY9O,IAAIlB,IAAI,CAAC;AACrBiQ,yCAAa/O,IAAIlB,IAAI,CAAC;AACtB,iCAAK+P,aAAa,SAAU,QAASC,YAAY,SAAU,QAASC,aAAa,SAAU,KAAM;AAC/FC,+CAAiBN,YAAY,OAAQ,MAAQG,aAAa,OAAS,MAAOC,YAAY,OAAS,IAAOC,aAAa;AACnH,kCAAIC,gBAAgB,SAAUA,gBAAgB,SAAU;AACtDL,4CAAYK;8BACd;4BACF;wBAAC;sBAEP;AAEA,0BAAIL,cAAc,MAAM;AAGtBA,oCAAY;AACZC,2CAAmB;sBACrB,WAAWD,YAAY,OAAQ;AAE7BA,qCAAa;AACbzQ,4BAAIW,KAAK8P,cAAc,KAAK,OAAQ,KAAM;AAC1CA,oCAAY,QAASA,YAAY;sBACnC;AAEAzQ,0BAAIW,KAAK8P,SAAS;AAClB7P,2BAAK8P;oBACP;AAEA,2BAAOK,sBAAsB/Q,GAAG;kBAClC;AAKA,sBAAMgR,uBAAuB;AAE7B,2BAASD,sBAAuBE,YAAY;AAC1C,wBAAMhF,MAAMgF,WAAWvR;AACvB,wBAAIuM,OAAO+E,sBAAsB;AAC/B,6BAAOvE,OAAOyE,aAAalD,MAAMvB,QAAQwE,UAAU;oBACrD;AAGA,wBAAIjR,MAAM;AACV,wBAAIY,IAAI;AACR,2BAAOA,IAAIqL,KAAK;AACdjM,6BAAOyM,OAAOyE,aAAalD,MACzBvB,QACAwE,WAAWtO,MAAM/B,GAAGA,KAAKoQ,oBAAoB,CAAC;oBAElD;AACA,2BAAOhR;kBACT;AAEA,2BAASsN,WAAYxL,KAAKqL,OAAOtM,KAAK;AACpC,wBAAIwD,MAAM;AACVxD,0BAAM0L,KAAKC,IAAI1K,IAAIpC,QAAQmB,GAAG;AAE9B,6BAASD,IAAIuM,OAAOvM,IAAIC,KAAK,EAAED,GAAG;AAChCyD,6BAAOoI,OAAOyE,aAAapP,IAAIlB,CAAC,IAAI,GAAI;oBAC1C;AACA,2BAAOyD;kBACT;AAEA,2BAASkJ,YAAazL,KAAKqL,OAAOtM,KAAK;AACrC,wBAAIwD,MAAM;AACVxD,0BAAM0L,KAAKC,IAAI1K,IAAIpC,QAAQmB,GAAG;AAE9B,6BAASD,IAAIuM,OAAOvM,IAAIC,KAAK,EAAED,GAAG;AAChCyD,6BAAOoI,OAAOyE,aAAapP,IAAIlB,CAAC,CAAC;oBACnC;AACA,2BAAOyD;kBACT;AAEA,2BAAS+I,SAAUtL,KAAKqL,OAAOtM,KAAK;AAClC,wBAAMoL,MAAMnK,IAAIpC;AAEhB,wBAAI,CAACyN,SAASA,QAAQ;AAAGA,8BAAQ;AACjC,wBAAI,CAACtM,OAAOA,MAAM,KAAKA,MAAMoL;AAAKpL,4BAAMoL;AAExC,wBAAIkF,MAAM;AACV,6BAASvQ,IAAIuM,OAAOvM,IAAIC,KAAK,EAAED,GAAG;AAChCuQ,6BAAOC,oBAAoBtP,IAAIlB,CAAC,CAAC;oBACnC;AACA,2BAAOuQ;kBACT;AAEA,2BAAS1D,aAAc3L,KAAKqL,OAAOtM,KAAK;AACtC,wBAAMqD,QAAQpC,IAAIa,MAAMwK,OAAOtM,GAAG;AAClC,wBAAIb,MAAM;AAEV,6BAASY,IAAI,GAAGA,IAAIsD,MAAMxE,SAAS,GAAGkB,KAAK,GAAG;AAC5CZ,6BAAOyM,OAAOyE,aAAahN,MAAMtD,CAAC,IAAKsD,MAAMtD,IAAI,CAAC,IAAI,GAAI;oBAC5D;AACA,2BAAOZ;kBACT;AAEAuC,kBAAAA,QAAO6B,UAAUzB,QAAQ,SAASA,OAAOwK,OAAOtM,KAAK;AACnD,wBAAMoL,MAAM,KAAKvM;AACjByN,4BAAQ,CAAC,CAACA;AACVtM,0BAAMA,QAAQH,SAAYuL,MAAM,CAAC,CAACpL;AAElC,wBAAIsM,QAAQ,GAAG;AACbA,+BAASlB;AACT,0BAAIkB,QAAQ;AAAGA,gCAAQ;oBACzB,WAAWA,QAAQlB,KAAK;AACtBkB,8BAAQlB;oBACV;AAEA,wBAAIpL,MAAM,GAAG;AACXA,6BAAOoL;AACP,0BAAIpL,MAAM;AAAGA,8BAAM;oBACrB,WAAWA,MAAMoL,KAAK;AACpBpL,4BAAMoL;oBACR;AAEA,wBAAIpL,MAAMsM;AAAOtM,4BAAMsM;AAEvB,wBAAMkE,SAAS,KAAKC,SAASnE,OAAOtM,GAAG;AAEvCxB,2BAAO8K,eAAekH,QAAQ9O,QAAO6B,SAAS;AAE9C,2BAAOiN;kBACT;AAKA,2BAASE,YAAatK,QAAQuK,KAAK9R,SAAQ;AACzC,wBAAKuH,SAAS,MAAO,KAAKA,SAAS;AAAG,4BAAM,IAAIsD,WAAW,oBAAoB;AAC/E,wBAAItD,SAASuK,MAAM9R;AAAQ,4BAAM,IAAI6K,WAAW,uCAAuC;kBACzF;AAEAhI,kBAAAA,QAAO6B,UAAUqN,aACjBlP,QAAO6B,UAAUsN,aAAa,SAASA,WAAYzK,QAAQW,aAAY+J,UAAU;AAC/E1K,6BAASA,WAAW;AACpBW,oBAAAA,cAAaA,gBAAe;AAC5B,wBAAI,CAAC+J;AAAUJ,kCAAYtK,QAAQW,aAAY,KAAKlI,MAAM;AAE1D,wBAAI4B,MAAM,KAAK2F,MAAM;AACrB,wBAAI2K,MAAM;AACV,wBAAIhR,IAAI;AACR,2BAAO,EAAEA,IAAIgH,gBAAegK,OAAO,MAAQ;AACzCtQ,6BAAO,KAAK2F,SAASrG,CAAC,IAAIgR;oBAC5B;AAEA,2BAAOtQ;kBACT;AAEAiB,kBAAAA,QAAO6B,UAAUyN,aACjBtP,QAAO6B,UAAU0N,aAAa,SAASA,WAAY7K,QAAQW,aAAY+J,UAAU;AAC/E1K,6BAASA,WAAW;AACpBW,oBAAAA,cAAaA,gBAAe;AAC5B,wBAAI,CAAC+J,UAAU;AACbJ,kCAAYtK,QAAQW,aAAY,KAAKlI,MAAM;oBAC7C;AAEA,wBAAI4B,MAAM,KAAK2F,SAAS,EAAEW,WAAU;AACpC,wBAAIgK,MAAM;AACV,2BAAOhK,cAAa,MAAMgK,OAAO,MAAQ;AACvCtQ,6BAAO,KAAK2F,SAAS,EAAEW,WAAU,IAAIgK;oBACvC;AAEA,2BAAOtQ;kBACT;AAEAiB,kBAAAA,QAAO6B,UAAU2N,YACjBxP,QAAO6B,UAAUtB,YAAY,SAASA,UAAWmE,QAAQ0K,UAAU;AACjE1K,6BAASA,WAAW;AACpB,wBAAI,CAAC0K;AAAUJ,kCAAYtK,QAAQ,GAAG,KAAKvH,MAAM;AACjD,2BAAO,KAAKuH,MAAM;kBACpB;AAEA1E,kBAAAA,QAAO6B,UAAU4N,eACjBzP,QAAO6B,UAAUpB,eAAe,SAASA,aAAciE,QAAQ0K,UAAU;AACvE1K,6BAASA,WAAW;AACpB,wBAAI,CAAC0K;AAAUJ,kCAAYtK,QAAQ,GAAG,KAAKvH,MAAM;AACjD,2BAAO,KAAKuH,MAAM,IAAK,KAAKA,SAAS,CAAC,KAAK;kBAC7C;AAEA1E,kBAAAA,QAAO6B,UAAU6N,eACjB1P,QAAO6B,UAAUvB,eAAe,SAASA,aAAcoE,QAAQ0K,UAAU;AACvE1K,6BAASA,WAAW;AACpB,wBAAI,CAAC0K;AAAUJ,kCAAYtK,QAAQ,GAAG,KAAKvH,MAAM;AACjD,2BAAQ,KAAKuH,MAAM,KAAK,IAAK,KAAKA,SAAS,CAAC;kBAC9C;AAEA1E,kBAAAA,QAAO6B,UAAU8N,eACjB3P,QAAO6B,UAAU+N,eAAe,SAASA,aAAclL,QAAQ0K,UAAU;AACvE1K,6BAASA,WAAW;AACpB,wBAAI,CAAC0K;AAAUJ,kCAAYtK,QAAQ,GAAG,KAAKvH,MAAM;AAEjD,4BAAS,KAAKuH,MAAM,IACf,KAAKA,SAAS,CAAC,KAAK,IACpB,KAAKA,SAAS,CAAC,KAAK,MACpB,KAAKA,SAAS,CAAC,IAAI;kBAC1B;AAEA1E,kBAAAA,QAAO6B,UAAUgO,eACjB7P,QAAO6B,UAAUiO,eAAe,SAASA,aAAcpL,QAAQ0K,UAAU;AACvE1K,6BAASA,WAAW;AACpB,wBAAI,CAAC0K;AAAUJ,kCAAYtK,QAAQ,GAAG,KAAKvH,MAAM;AAEjD,2BAAQ,KAAKuH,MAAM,IAAI,YACnB,KAAKA,SAAS,CAAC,KAAK,KACrB,KAAKA,SAAS,CAAC,KAAK,IACrB,KAAKA,SAAS,CAAC;kBACnB;AAEA1E,kBAAAA,QAAO6B,UAAUkO,kBAAkBC,mBAAmB,SAASD,gBAAiBrL,QAAQ;AACtFA,6BAASA,WAAW;AACpBuL,mCAAevL,QAAQ,QAAQ;AAC/B,wBAAMwL,QAAQ,KAAKxL,MAAM;AACzB,wBAAMyL,OAAO,KAAKzL,SAAS,CAAC;AAC5B,wBAAIwL,UAAU/R,UAAagS,SAAShS,QAAW;AAC7CiS,kCAAY1L,QAAQ,KAAKvH,SAAS,CAAC;oBACrC;AAEA,wBAAMkT,KAAKH,QACT,KAAK,EAAExL,MAAM,IAAC,KAAA,IAAG,GAAK,CAAC,IACvB,KAAK,EAAEA,MAAM,IAAC,KAAA,IAAG,GAAK,EAAE,IACxB,KAAK,EAAEA,MAAM,IAAC,KAAA,IAAG,GAAK,EAAE;AAE1B,wBAAM4L,KAAK,KAAK,EAAE5L,MAAM,IACtB,KAAK,EAAEA,MAAM,IAAC,KAAA,IAAG,GAAK,CAAC,IACvB,KAAK,EAAEA,MAAM,IAAC,KAAA,IAAG,GAAK,EAAE,IACxByL,OAAI,KAAA,IAAG,GAAK,EAAE;AAEhB,2BAAOI,OAAOF,EAAE,KAAKE,OAAOD,EAAE,KAAKC,OAAO,EAAE;kBAC9C,CAAC;AAEDvQ,kBAAAA,QAAO6B,UAAU2O,kBAAkBR,mBAAmB,SAASQ,gBAAiB9L,QAAQ;AACtFA,6BAASA,WAAW;AACpBuL,mCAAevL,QAAQ,QAAQ;AAC/B,wBAAMwL,QAAQ,KAAKxL,MAAM;AACzB,wBAAMyL,OAAO,KAAKzL,SAAS,CAAC;AAC5B,wBAAIwL,UAAU/R,UAAagS,SAAShS,QAAW;AAC7CiS,kCAAY1L,QAAQ,KAAKvH,SAAS,CAAC;oBACrC;AAEA,wBAAMmT,KAAKJ,QAAK,KAAA,IAAG,GAAK,EAAE,IACxB,KAAK,EAAExL,MAAM,IAAC,KAAA,IAAG,GAAK,EAAE,IACxB,KAAK,EAAEA,MAAM,IAAC,KAAA,IAAG,GAAK,CAAC,IACvB,KAAK,EAAEA,MAAM;AAEf,wBAAM2L,KAAK,KAAK,EAAE3L,MAAM,IAAC,KAAA,IAAG,GAAK,EAAE,IACjC,KAAK,EAAEA,MAAM,IAAC,KAAA,IAAG,GAAK,EAAE,IACxB,KAAK,EAAEA,MAAM,IAAC,KAAA,IAAG,GAAK,CAAC,IACvByL;AAEF,4BAAQI,OAAOD,EAAE,KAAKC,OAAO,EAAE,KAAKA,OAAOF,EAAE;kBAC/C,CAAC;AAEDrQ,kBAAAA,QAAO6B,UAAU4O,YAAY,SAASA,UAAW/L,QAAQW,aAAY+J,UAAU;AAC7E1K,6BAASA,WAAW;AACpBW,oBAAAA,cAAaA,gBAAe;AAC5B,wBAAI,CAAC+J;AAAUJ,kCAAYtK,QAAQW,aAAY,KAAKlI,MAAM;AAE1D,wBAAI4B,MAAM,KAAK2F,MAAM;AACrB,wBAAI2K,MAAM;AACV,wBAAIhR,IAAI;AACR,2BAAO,EAAEA,IAAIgH,gBAAegK,OAAO,MAAQ;AACzCtQ,6BAAO,KAAK2F,SAASrG,CAAC,IAAIgR;oBAC5B;AACAA,2BAAO;AAEP,wBAAItQ,OAAOsQ;AAAKtQ,6BAAOiL,KAAK0G,IAAI,GAAG,IAAIrL,WAAU;AAEjD,2BAAOtG;kBACT;AAEAiB,kBAAAA,QAAO6B,UAAU8O,YAAY,SAASA,UAAWjM,QAAQW,aAAY+J,UAAU;AAC7E1K,6BAASA,WAAW;AACpBW,oBAAAA,cAAaA,gBAAe;AAC5B,wBAAI,CAAC+J;AAAUJ,kCAAYtK,QAAQW,aAAY,KAAKlI,MAAM;AAE1D,wBAAIkB,IAAIgH;AACR,wBAAIgK,MAAM;AACV,wBAAItQ,MAAM,KAAK2F,SAAS,EAAErG,CAAC;AAC3B,2BAAOA,IAAI,MAAMgR,OAAO,MAAQ;AAC9BtQ,6BAAO,KAAK2F,SAAS,EAAErG,CAAC,IAAIgR;oBAC9B;AACAA,2BAAO;AAEP,wBAAItQ,OAAOsQ;AAAKtQ,6BAAOiL,KAAK0G,IAAI,GAAG,IAAIrL,WAAU;AAEjD,2BAAOtG;kBACT;AAEAiB,kBAAAA,QAAO6B,UAAUhB,WAAW,SAASA,SAAU6D,QAAQ0K,UAAU;AAC/D1K,6BAASA,WAAW;AACpB,wBAAI,CAAC0K;AAAUJ,kCAAYtK,QAAQ,GAAG,KAAKvH,MAAM;AACjD,wBAAI,EAAE,KAAKuH,MAAM,IAAI;AAAO,6BAAQ,KAAKA,MAAM;AAC/C,4BAAS,MAAO,KAAKA,MAAM,IAAI,KAAK;kBACtC;AAEA1E,kBAAAA,QAAO6B,UAAU+O,cAAc,SAASA,YAAalM,QAAQ0K,UAAU;AACrE1K,6BAASA,WAAW;AACpB,wBAAI,CAAC0K;AAAUJ,kCAAYtK,QAAQ,GAAG,KAAKvH,MAAM;AACjD,wBAAM4B,MAAM,KAAK2F,MAAM,IAAK,KAAKA,SAAS,CAAC,KAAK;AAChD,2BAAQ3F,MAAM,QAAUA,MAAM,aAAaA;kBAC7C;AAEAiB,kBAAAA,QAAO6B,UAAUlB,cAAc,SAASA,YAAa+D,QAAQ0K,UAAU;AACrE1K,6BAASA,WAAW;AACpB,wBAAI,CAAC0K;AAAUJ,kCAAYtK,QAAQ,GAAG,KAAKvH,MAAM;AACjD,wBAAM4B,MAAM,KAAK2F,SAAS,CAAC,IAAK,KAAKA,MAAM,KAAK;AAChD,2BAAQ3F,MAAM,QAAUA,MAAM,aAAaA;kBAC7C;AAEAiB,kBAAAA,QAAO6B,UAAUgP,cAAc,SAASA,YAAanM,QAAQ0K,UAAU;AACrE1K,6BAASA,WAAW;AACpB,wBAAI,CAAC0K;AAAUJ,kCAAYtK,QAAQ,GAAG,KAAKvH,MAAM;AAEjD,2BAAQ,KAAKuH,MAAM,IAChB,KAAKA,SAAS,CAAC,KAAK,IACpB,KAAKA,SAAS,CAAC,KAAK,KACpB,KAAKA,SAAS,CAAC,KAAK;kBACzB;AAEA1E,kBAAAA,QAAO6B,UAAUiP,cAAc,SAASA,YAAapM,QAAQ0K,UAAU;AACrE1K,6BAASA,WAAW;AACpB,wBAAI,CAAC0K;AAAUJ,kCAAYtK,QAAQ,GAAG,KAAKvH,MAAM;AAEjD,2BAAQ,KAAKuH,MAAM,KAAK,KACrB,KAAKA,SAAS,CAAC,KAAK,KACpB,KAAKA,SAAS,CAAC,KAAK,IACpB,KAAKA,SAAS,CAAC;kBACpB;AAEA1E,kBAAAA,QAAO6B,UAAUkP,iBAAiBf,mBAAmB,SAASe,eAAgBrM,QAAQ;AACpFA,6BAASA,WAAW;AACpBuL,mCAAevL,QAAQ,QAAQ;AAC/B,wBAAMwL,QAAQ,KAAKxL,MAAM;AACzB,wBAAMyL,OAAO,KAAKzL,SAAS,CAAC;AAC5B,wBAAIwL,UAAU/R,UAAagS,SAAShS,QAAW;AAC7CiS,kCAAY1L,QAAQ,KAAKvH,SAAS,CAAC;oBACrC;AAEA,wBAAM4B,MAAM,KAAK2F,SAAS,CAAC,IACzB,KAAKA,SAAS,CAAC,IAAC,KAAA,IAAG,GAAK,CAAC,IACzB,KAAKA,SAAS,CAAC,IAAC,KAAA,IAAG,GAAK,EAAE,KACzByL,QAAQ;AAEX,4BAAQI,OAAOxR,GAAG,KAAKwR,OAAO,EAAE,KAC9BA,OAAOL,QACP,KAAK,EAAExL,MAAM,IAAC,KAAA,IAAG,GAAK,CAAC,IACvB,KAAK,EAAEA,MAAM,IAAC,KAAA,IAAG,GAAK,EAAE,IACxB,KAAK,EAAEA,MAAM,IAAC,KAAA,IAAG,GAAK,EAAE,CAAA;kBAC5B,CAAC;AAED1E,kBAAAA,QAAO6B,UAAUmP,iBAAiBhB,mBAAmB,SAASgB,eAAgBtM,QAAQ;AACpFA,6BAASA,WAAW;AACpBuL,mCAAevL,QAAQ,QAAQ;AAC/B,wBAAMwL,QAAQ,KAAKxL,MAAM;AACzB,wBAAMyL,OAAO,KAAKzL,SAAS,CAAC;AAC5B,wBAAIwL,UAAU/R,UAAagS,SAAShS,QAAW;AAC7CiS,kCAAY1L,QAAQ,KAAKvH,SAAS,CAAC;oBACrC;AAEA,wBAAM4B,OAAOmR,SAAS;oBACpB,KAAK,EAAExL,MAAM,IAAC,KAAA,IAAG,GAAK,EAAE,IACxB,KAAK,EAAEA,MAAM,IAAC,KAAA,IAAG,GAAK,CAAC,IACvB,KAAK,EAAEA,MAAM;AAEf,4BAAQ6L,OAAOxR,GAAG,KAAKwR,OAAO,EAAE,KAC9BA,OAAO,KAAK,EAAE7L,MAAM,IAAC,KAAA,IAAG,GAAK,EAAE,IAC/B,KAAK,EAAEA,MAAM,IAAC,KAAA,IAAG,GAAK,EAAE,IACxB,KAAK,EAAEA,MAAM,IAAC,KAAA,IAAG,GAAK,CAAC,IACvByL,IAAI;kBACR,CAAC;AAEDnQ,kBAAAA,QAAO6B,UAAUoP,cAAc,SAASA,YAAavM,QAAQ0K,UAAU;AACrE1K,6BAASA,WAAW;AACpB,wBAAI,CAAC0K;AAAUJ,kCAAYtK,QAAQ,GAAG,KAAKvH,MAAM;AACjD,2BAAO6J,QAAQ2F,KAAK,MAAMjI,QAAQ,MAAM,IAAI,CAAC;kBAC/C;AAEA1E,kBAAAA,QAAO6B,UAAUqP,cAAc,SAASA,YAAaxM,QAAQ0K,UAAU;AACrE1K,6BAASA,WAAW;AACpB,wBAAI,CAAC0K;AAAUJ,kCAAYtK,QAAQ,GAAG,KAAKvH,MAAM;AACjD,2BAAO6J,QAAQ2F,KAAK,MAAMjI,QAAQ,OAAO,IAAI,CAAC;kBAChD;AAEA1E,kBAAAA,QAAO6B,UAAUsP,eAAe,SAASA,aAAczM,QAAQ0K,UAAU;AACvE1K,6BAASA,WAAW;AACpB,wBAAI,CAAC0K;AAAUJ,kCAAYtK,QAAQ,GAAG,KAAKvH,MAAM;AACjD,2BAAO6J,QAAQ2F,KAAK,MAAMjI,QAAQ,MAAM,IAAI,CAAC;kBAC/C;AAEA1E,kBAAAA,QAAO6B,UAAUuP,eAAe,SAASA,aAAc1M,QAAQ0K,UAAU;AACvE1K,6BAASA,WAAW;AACpB,wBAAI,CAAC0K;AAAUJ,kCAAYtK,QAAQ,GAAG,KAAKvH,MAAM;AACjD,2BAAO6J,QAAQ2F,KAAK,MAAMjI,QAAQ,OAAO,IAAI,CAAC;kBAChD;AAEA,2BAAS2M,SAAU9R,KAAK1B,OAAO6G,QAAQuK,KAAKpD,MAAK5B,MAAK;AACpD,wBAAI,CAACjK,QAAO6H,SAAStI,GAAG;AAAG,4BAAM,IAAI4I,UAAU,6CAA6C;AAC5F,wBAAItK,QAAQgO,QAAOhO,QAAQoM;AAAK,4BAAM,IAAIjC,WAAW,mCAAmC;AACxF,wBAAItD,SAASuK,MAAM1P,IAAIpC;AAAQ,4BAAM,IAAI6K,WAAW,oBAAoB;kBAC1E;AAEAhI,kBAAAA,QAAO6B,UAAUyP,cACjBtR,QAAO6B,UAAU0P,cAAc,SAASA,YAAa1T,OAAO6G,QAAQW,aAAY+J,UAAU;AACxFvR,4BAAQ,CAACA;AACT6G,6BAASA,WAAW;AACpBW,oBAAAA,cAAaA,gBAAe;AAC5B,wBAAI,CAAC+J,UAAU;AACb,0BAAMoC,WAAWxH,KAAK0G,IAAI,GAAG,IAAIrL,WAAU,IAAI;AAC/CgM,+BAAS,MAAMxT,OAAO6G,QAAQW,aAAYmM,UAAU,CAAC;oBACvD;AAEA,wBAAInC,MAAM;AACV,wBAAIhR,IAAI;AACR,yBAAKqG,MAAM,IAAI7G,QAAQ;AACvB,2BAAO,EAAEQ,IAAIgH,gBAAegK,OAAO,MAAQ;AACzC,2BAAK3K,SAASrG,CAAC,IAAKR,QAAQwR,MAAO;oBACrC;AAEA,2BAAO3K,SAASW;kBAClB;AAEArF,kBAAAA,QAAO6B,UAAU4P,cACjBzR,QAAO6B,UAAU6P,cAAc,SAASA,YAAa7T,OAAO6G,QAAQW,aAAY+J,UAAU;AACxFvR,4BAAQ,CAACA;AACT6G,6BAASA,WAAW;AACpBW,oBAAAA,cAAaA,gBAAe;AAC5B,wBAAI,CAAC+J,UAAU;AACb,0BAAMoC,WAAWxH,KAAK0G,IAAI,GAAG,IAAIrL,WAAU,IAAI;AAC/CgM,+BAAS,MAAMxT,OAAO6G,QAAQW,aAAYmM,UAAU,CAAC;oBACvD;AAEA,wBAAInT,IAAIgH,cAAa;AACrB,wBAAIgK,MAAM;AACV,yBAAK3K,SAASrG,CAAC,IAAIR,QAAQ;AAC3B,2BAAO,EAAEQ,KAAK,MAAMgR,OAAO,MAAQ;AACjC,2BAAK3K,SAASrG,CAAC,IAAKR,QAAQwR,MAAO;oBACrC;AAEA,2BAAO3K,SAASW;kBAClB;AAEArF,kBAAAA,QAAO6B,UAAU8P,aACjB3R,QAAO6B,UAAUyD,aAAa,SAASA,WAAYzH,OAAO6G,QAAQ0K,UAAU;AAC1EvR,4BAAQ,CAACA;AACT6G,6BAASA,WAAW;AACpB,wBAAI,CAAC0K;AAAUiC,+BAAS,MAAMxT,OAAO6G,QAAQ,GAAG,KAAM,CAAC;AACvD,yBAAKA,MAAM,IAAK7G,QAAQ;AACxB,2BAAO6G,SAAS;kBAClB;AAEA1E,kBAAAA,QAAO6B,UAAU+P,gBACjB5R,QAAO6B,UAAUgQ,gBAAgB,SAASA,cAAehU,OAAO6G,QAAQ0K,UAAU;AAChFvR,4BAAQ,CAACA;AACT6G,6BAASA,WAAW;AACpB,wBAAI,CAAC0K;AAAUiC,+BAAS,MAAMxT,OAAO6G,QAAQ,GAAG,OAAQ,CAAC;AACzD,yBAAKA,MAAM,IAAK7G,QAAQ;AACxB,yBAAK6G,SAAS,CAAC,IAAK7G,UAAU;AAC9B,2BAAO6G,SAAS;kBAClB;AAEA1E,kBAAAA,QAAO6B,UAAUiQ,gBACjB9R,QAAO6B,UAAUkQ,gBAAgB,SAASA,cAAelU,OAAO6G,QAAQ0K,UAAU;AAChFvR,4BAAQ,CAACA;AACT6G,6BAASA,WAAW;AACpB,wBAAI,CAAC0K;AAAUiC,+BAAS,MAAMxT,OAAO6G,QAAQ,GAAG,OAAQ,CAAC;AACzD,yBAAKA,MAAM,IAAK7G,UAAU;AAC1B,yBAAK6G,SAAS,CAAC,IAAK7G,QAAQ;AAC5B,2BAAO6G,SAAS;kBAClB;AAEA1E,kBAAAA,QAAO6B,UAAUmQ,gBACjBhS,QAAO6B,UAAUoQ,gBAAgB,SAASA,cAAepU,OAAO6G,QAAQ0K,UAAU;AAChFvR,4BAAQ,CAACA;AACT6G,6BAASA,WAAW;AACpB,wBAAI,CAAC0K;AAAUiC,+BAAS,MAAMxT,OAAO6G,QAAQ,GAAG,YAAY,CAAC;AAC7D,yBAAKA,SAAS,CAAC,IAAK7G,UAAU;AAC9B,yBAAK6G,SAAS,CAAC,IAAK7G,UAAU;AAC9B,yBAAK6G,SAAS,CAAC,IAAK7G,UAAU;AAC9B,yBAAK6G,MAAM,IAAK7G,QAAQ;AACxB,2BAAO6G,SAAS;kBAClB;AAEA1E,kBAAAA,QAAO6B,UAAUqQ,gBACjBlS,QAAO6B,UAAUsQ,gBAAgB,SAASA,cAAetU,OAAO6G,QAAQ0K,UAAU;AAChFvR,4BAAQ,CAACA;AACT6G,6BAASA,WAAW;AACpB,wBAAI,CAAC0K;AAAUiC,+BAAS,MAAMxT,OAAO6G,QAAQ,GAAG,YAAY,CAAC;AAC7D,yBAAKA,MAAM,IAAK7G,UAAU;AAC1B,yBAAK6G,SAAS,CAAC,IAAK7G,UAAU;AAC9B,yBAAK6G,SAAS,CAAC,IAAK7G,UAAU;AAC9B,yBAAK6G,SAAS,CAAC,IAAK7G,QAAQ;AAC5B,2BAAO6G,SAAS;kBAClB;AAEA,2BAAS0N,eAAgB7S,KAAK1B,OAAO6G,QAAQuF,MAAK4B,MAAK;AACrDwG,+BAAWxU,OAAOoM,MAAK4B,MAAKtM,KAAKmF,QAAQ,CAAC;AAE1C,wBAAI2L,KAAKrT,OAAOa,QAAQ0S,OAAO,UAAU,CAAC;AAC1ChR,wBAAImF,QAAQ,IAAI2L;AAChBA,yBAAKA,MAAM;AACX9Q,wBAAImF,QAAQ,IAAI2L;AAChBA,yBAAKA,MAAM;AACX9Q,wBAAImF,QAAQ,IAAI2L;AAChBA,yBAAKA,MAAM;AACX9Q,wBAAImF,QAAQ,IAAI2L;AAChB,wBAAIC,KAAKtT,OAAOa,SAAS0S,OAAO,EAAE,IAAIA,OAAO,UAAU,CAAC;AACxDhR,wBAAImF,QAAQ,IAAI4L;AAChBA,yBAAKA,MAAM;AACX/Q,wBAAImF,QAAQ,IAAI4L;AAChBA,yBAAKA,MAAM;AACX/Q,wBAAImF,QAAQ,IAAI4L;AAChBA,yBAAKA,MAAM;AACX/Q,wBAAImF,QAAQ,IAAI4L;AAChB,2BAAO5L;kBACT;AAEA,2BAAS4N,eAAgB/S,KAAK1B,OAAO6G,QAAQuF,MAAK4B,MAAK;AACrDwG,+BAAWxU,OAAOoM,MAAK4B,MAAKtM,KAAKmF,QAAQ,CAAC;AAE1C,wBAAI2L,KAAKrT,OAAOa,QAAQ0S,OAAO,UAAU,CAAC;AAC1ChR,wBAAImF,SAAS,CAAC,IAAI2L;AAClBA,yBAAKA,MAAM;AACX9Q,wBAAImF,SAAS,CAAC,IAAI2L;AAClBA,yBAAKA,MAAM;AACX9Q,wBAAImF,SAAS,CAAC,IAAI2L;AAClBA,yBAAKA,MAAM;AACX9Q,wBAAImF,SAAS,CAAC,IAAI2L;AAClB,wBAAIC,KAAKtT,OAAOa,SAAS0S,OAAO,EAAE,IAAIA,OAAO,UAAU,CAAC;AACxDhR,wBAAImF,SAAS,CAAC,IAAI4L;AAClBA,yBAAKA,MAAM;AACX/Q,wBAAImF,SAAS,CAAC,IAAI4L;AAClBA,yBAAKA,MAAM;AACX/Q,wBAAImF,SAAS,CAAC,IAAI4L;AAClBA,yBAAKA,MAAM;AACX/Q,wBAAImF,MAAM,IAAI4L;AACd,2BAAO5L,SAAS;kBAClB;AAEA1E,kBAAAA,QAAO6B,UAAU0Q,mBAAmBvC,mBAAmB,SAASuC,iBAAkB1U,OAAO6G,QAAY;AAAA,wBAAZA,WAAM,QAAA;AAANA,+BAAS;oBAAC;AACjG,2BAAO0N,eAAe,MAAMvU,OAAO6G,QAAQ6L,OAAO,CAAC,GAAGA,OAAO,oBAAoB,CAAC;kBACpF,CAAC;AAEDvQ,kBAAAA,QAAO6B,UAAU2Q,mBAAmBxC,mBAAmB,SAASwC,iBAAkB3U,OAAO6G,QAAY;AAAA,wBAAZA,WAAM,QAAA;AAANA,+BAAS;oBAAC;AACjG,2BAAO4N,eAAe,MAAMzU,OAAO6G,QAAQ6L,OAAO,CAAC,GAAGA,OAAO,oBAAoB,CAAC;kBACpF,CAAC;AAEDvQ,kBAAAA,QAAO6B,UAAU4Q,aAAa,SAASA,WAAY5U,OAAO6G,QAAQW,aAAY+J,UAAU;AACtFvR,4BAAQ,CAACA;AACT6G,6BAASA,WAAW;AACpB,wBAAI,CAAC0K,UAAU;AACb,0BAAMsD,QAAQ1I,KAAK0G,IAAI,GAAI,IAAIrL,cAAc,CAAC;AAE9CgM,+BAAS,MAAMxT,OAAO6G,QAAQW,aAAYqN,QAAQ,GAAG,CAACA,KAAK;oBAC7D;AAEA,wBAAIrU,IAAI;AACR,wBAAIgR,MAAM;AACV,wBAAIsD,MAAM;AACV,yBAAKjO,MAAM,IAAI7G,QAAQ;AACvB,2BAAO,EAAEQ,IAAIgH,gBAAegK,OAAO,MAAQ;AACzC,0BAAIxR,QAAQ,KAAK8U,QAAQ,KAAK,KAAKjO,SAASrG,IAAI,CAAC,MAAM,GAAG;AACxDsU,8BAAM;sBACR;AACA,2BAAKjO,SAASrG,CAAC,KAAMR,QAAQwR,OAAQ,KAAKsD,MAAM;oBAClD;AAEA,2BAAOjO,SAASW;kBAClB;AAEArF,kBAAAA,QAAO6B,UAAU+Q,aAAa,SAASA,WAAY/U,OAAO6G,QAAQW,aAAY+J,UAAU;AACtFvR,4BAAQ,CAACA;AACT6G,6BAASA,WAAW;AACpB,wBAAI,CAAC0K,UAAU;AACb,0BAAMsD,QAAQ1I,KAAK0G,IAAI,GAAI,IAAIrL,cAAc,CAAC;AAE9CgM,+BAAS,MAAMxT,OAAO6G,QAAQW,aAAYqN,QAAQ,GAAG,CAACA,KAAK;oBAC7D;AAEA,wBAAIrU,IAAIgH,cAAa;AACrB,wBAAIgK,MAAM;AACV,wBAAIsD,MAAM;AACV,yBAAKjO,SAASrG,CAAC,IAAIR,QAAQ;AAC3B,2BAAO,EAAEQ,KAAK,MAAMgR,OAAO,MAAQ;AACjC,0BAAIxR,QAAQ,KAAK8U,QAAQ,KAAK,KAAKjO,SAASrG,IAAI,CAAC,MAAM,GAAG;AACxDsU,8BAAM;sBACR;AACA,2BAAKjO,SAASrG,CAAC,KAAMR,QAAQwR,OAAQ,KAAKsD,MAAM;oBAClD;AAEA,2BAAOjO,SAASW;kBAClB;AAEArF,kBAAAA,QAAO6B,UAAUgR,YAAY,SAASA,UAAWhV,OAAO6G,QAAQ0K,UAAU;AACxEvR,4BAAQ,CAACA;AACT6G,6BAASA,WAAW;AACpB,wBAAI,CAAC0K;AAAUiC,+BAAS,MAAMxT,OAAO6G,QAAQ,GAAG,KAAM,IAAK;AAC3D,wBAAI7G,QAAQ;AAAGA,8BAAQ,MAAOA,QAAQ;AACtC,yBAAK6G,MAAM,IAAK7G,QAAQ;AACxB,2BAAO6G,SAAS;kBAClB;AAEA1E,kBAAAA,QAAO6B,UAAUiR,eAAe,SAASA,aAAcjV,OAAO6G,QAAQ0K,UAAU;AAC9EvR,4BAAQ,CAACA;AACT6G,6BAASA,WAAW;AACpB,wBAAI,CAAC0K;AAAUiC,+BAAS,MAAMxT,OAAO6G,QAAQ,GAAG,OAAQ,MAAO;AAC/D,yBAAKA,MAAM,IAAK7G,QAAQ;AACxB,yBAAK6G,SAAS,CAAC,IAAK7G,UAAU;AAC9B,2BAAO6G,SAAS;kBAClB;AAEA1E,kBAAAA,QAAO6B,UAAUkR,eAAe,SAASA,aAAclV,OAAO6G,QAAQ0K,UAAU;AAC9EvR,4BAAQ,CAACA;AACT6G,6BAASA,WAAW;AACpB,wBAAI,CAAC0K;AAAUiC,+BAAS,MAAMxT,OAAO6G,QAAQ,GAAG,OAAQ,MAAO;AAC/D,yBAAKA,MAAM,IAAK7G,UAAU;AAC1B,yBAAK6G,SAAS,CAAC,IAAK7G,QAAQ;AAC5B,2BAAO6G,SAAS;kBAClB;AAEA1E,kBAAAA,QAAO6B,UAAUmR,eAAe,SAASA,aAAcnV,OAAO6G,QAAQ0K,UAAU;AAC9EvR,4BAAQ,CAACA;AACT6G,6BAASA,WAAW;AACpB,wBAAI,CAAC0K;AAAUiC,+BAAS,MAAMxT,OAAO6G,QAAQ,GAAG,YAAY,WAAW;AACvE,yBAAKA,MAAM,IAAK7G,QAAQ;AACxB,yBAAK6G,SAAS,CAAC,IAAK7G,UAAU;AAC9B,yBAAK6G,SAAS,CAAC,IAAK7G,UAAU;AAC9B,yBAAK6G,SAAS,CAAC,IAAK7G,UAAU;AAC9B,2BAAO6G,SAAS;kBAClB;AAEA1E,kBAAAA,QAAO6B,UAAUoR,eAAe,SAASA,aAAcpV,OAAO6G,QAAQ0K,UAAU;AAC9EvR,4BAAQ,CAACA;AACT6G,6BAASA,WAAW;AACpB,wBAAI,CAAC0K;AAAUiC,+BAAS,MAAMxT,OAAO6G,QAAQ,GAAG,YAAY,WAAW;AACvE,wBAAI7G,QAAQ;AAAGA,8BAAQ,aAAaA,QAAQ;AAC5C,yBAAK6G,MAAM,IAAK7G,UAAU;AAC1B,yBAAK6G,SAAS,CAAC,IAAK7G,UAAU;AAC9B,yBAAK6G,SAAS,CAAC,IAAK7G,UAAU;AAC9B,yBAAK6G,SAAS,CAAC,IAAK7G,QAAQ;AAC5B,2BAAO6G,SAAS;kBAClB;AAEA1E,kBAAAA,QAAO6B,UAAUqR,kBAAkBlD,mBAAmB,SAASkD,gBAAiBrV,OAAO6G,QAAY;AAAA,wBAAZA,WAAM,QAAA;AAANA,+BAAS;oBAAC;AAC/F,2BAAO0N,eAAe,MAAMvU,OAAO6G,QAAQ,CAAC6L,OAAO,oBAAoB,GAAGA,OAAO,oBAAoB,CAAC;kBACxG,CAAC;AAEDvQ,kBAAAA,QAAO6B,UAAUsR,kBAAkBnD,mBAAmB,SAASmD,gBAAiBtV,OAAO6G,QAAY;AAAA,wBAAZA,WAAM,QAAA;AAANA,+BAAS;oBAAC;AAC/F,2BAAO4N,eAAe,MAAMzU,OAAO6G,QAAQ,CAAC6L,OAAO,oBAAoB,GAAGA,OAAO,oBAAoB,CAAC;kBACxG,CAAC;AAED,2BAAS6C,aAAc7T,KAAK1B,OAAO6G,QAAQuK,KAAKpD,MAAK5B,MAAK;AACxD,wBAAIvF,SAASuK,MAAM1P,IAAIpC;AAAQ,4BAAM,IAAI6K,WAAW,oBAAoB;AACxE,wBAAItD,SAAS;AAAG,4BAAM,IAAIsD,WAAW,oBAAoB;kBAC3D;AAEA,2BAASqL,WAAY9T,KAAK1B,OAAO6G,QAAQ4O,cAAclE,UAAU;AAC/DvR,4BAAQ,CAACA;AACT6G,6BAASA,WAAW;AACpB,wBAAI,CAAC0K,UAAU;AACbgE,mCAAa7T,KAAK1B,OAAO6G,QAAQ,GAAG,sBAAwB,qBAAuB;oBACrF;AACAsC,4BAAQsC,MAAM/J,KAAK1B,OAAO6G,QAAQ4O,cAAc,IAAI,CAAC;AACrD,2BAAO5O,SAAS;kBAClB;AAEA1E,kBAAAA,QAAO6B,UAAU0R,eAAe,SAASA,aAAc1V,OAAO6G,QAAQ0K,UAAU;AAC9E,2BAAOiE,WAAW,MAAMxV,OAAO6G,QAAQ,MAAM0K,QAAQ;kBACvD;AAEApP,kBAAAA,QAAO6B,UAAU2R,eAAe,SAASA,aAAc3V,OAAO6G,QAAQ0K,UAAU;AAC9E,2BAAOiE,WAAW,MAAMxV,OAAO6G,QAAQ,OAAO0K,QAAQ;kBACxD;AAEA,2BAASqE,YAAalU,KAAK1B,OAAO6G,QAAQ4O,cAAclE,UAAU;AAChEvR,4BAAQ,CAACA;AACT6G,6BAASA,WAAW;AACpB,wBAAI,CAAC0K,UAAU;AACbgE,mCAAa7T,KAAK1B,OAAO6G,QAAQ,GAAG,uBAAyB,sBAAwB;oBACvF;AACAsC,4BAAQsC,MAAM/J,KAAK1B,OAAO6G,QAAQ4O,cAAc,IAAI,CAAC;AACrD,2BAAO5O,SAAS;kBAClB;AAEA1E,kBAAAA,QAAO6B,UAAU6R,gBAAgB,SAASA,cAAe7V,OAAO6G,QAAQ0K,UAAU;AAChF,2BAAOqE,YAAY,MAAM5V,OAAO6G,QAAQ,MAAM0K,QAAQ;kBACxD;AAEApP,kBAAAA,QAAO6B,UAAU8R,gBAAgB,SAASA,cAAe9V,OAAO6G,QAAQ0K,UAAU;AAChF,2BAAOqE,YAAY,MAAM5V,OAAO6G,QAAQ,OAAO0K,QAAQ;kBACzD;AAGApP,kBAAAA,QAAO6B,UAAU4H,OAAO,SAASA,MAAMvL,QAAQ0V,aAAahJ,OAAOtM,KAAK;AACtE,wBAAI,CAAC0B,QAAO6H,SAAS3J,MAAM;AAAG,4BAAM,IAAIiK,UAAU,6BAA6B;AAC/E,wBAAI,CAACyC;AAAOA,8BAAQ;AACpB,wBAAI,CAACtM,OAAOA,QAAQ;AAAGA,4BAAM,KAAKnB;AAClC,wBAAIyW,eAAe1V,OAAOf;AAAQyW,oCAAc1V,OAAOf;AACvD,wBAAI,CAACyW;AAAaA,oCAAc;AAChC,wBAAItV,MAAM,KAAKA,MAAMsM;AAAOtM,4BAAMsM;AAGlC,wBAAItM,QAAQsM;AAAO,6BAAO;AAC1B,wBAAI1M,OAAOf,WAAW,KAAK,KAAKA,WAAW;AAAG,6BAAO;AAGrD,wBAAIyW,cAAc,GAAG;AACnB,4BAAM,IAAI5L,WAAW,2BAA2B;oBAClD;AACA,wBAAI4C,QAAQ,KAAKA,SAAS,KAAKzN;AAAQ,4BAAM,IAAI6K,WAAW,oBAAoB;AAChF,wBAAI1J,MAAM;AAAG,4BAAM,IAAI0J,WAAW,yBAAyB;AAG3D,wBAAI1J,MAAM,KAAKnB;AAAQmB,4BAAM,KAAKnB;AAClC,wBAAIe,OAAOf,SAASyW,cAActV,MAAMsM,OAAO;AAC7CtM,4BAAMJ,OAAOf,SAASyW,cAAchJ;oBACtC;AAEA,wBAAMlB,MAAMpL,MAAMsM;AAElB,wBAAI,SAAS1M,UAAU,OAAOuJ,WAAW5F,UAAUgS,eAAe,YAAY;AAE5E,2BAAKA,WAAWD,aAAahJ,OAAOtM,GAAG;oBACzC,OAAO;AACLmJ,iCAAW5F,UAAUyI,IAAInG,KACvBjG,QACA,KAAK6Q,SAASnE,OAAOtM,GAAG,GACxBsV,WAAW;oBAEf;AAEA,2BAAOlK;kBACT;AAMA1J,kBAAAA,QAAO6B,UAAUkB,OAAO,SAASA,KAAMhE,KAAK6L,OAAOtM,KAAKwB,UAAU;AAEhE,wBAAI,OAAOf,QAAQ,UAAU;AAC3B,0BAAI,OAAO6L,UAAU,UAAU;AAC7B9K,mCAAW8K;AACXA,gCAAQ;AACRtM,8BAAM,KAAKnB;sBACb,WAAW,OAAOmB,QAAQ,UAAU;AAClCwB,mCAAWxB;AACXA,8BAAM,KAAKnB;sBACb;AACA,0BAAI2C,aAAa3B,UAAa,OAAO2B,aAAa,UAAU;AAC1D,8BAAM,IAAIqI,UAAU,2BAA2B;sBACjD;AACA,0BAAI,OAAOrI,aAAa,YAAY,CAACE,QAAOoJ,WAAWtJ,QAAQ,GAAG;AAChE,8BAAM,IAAIqI,UAAU,uBAAuBrI,QAAQ;sBACrD;AACA,0BAAIf,IAAI5B,WAAW,GAAG;AACpB,4BAAM2W,OAAO/U,IAAIgV,WAAW,CAAC;AAC7B,4BAAKjU,aAAa,UAAUgU,OAAO,OAC/BhU,aAAa,UAAU;AAEzBf,gCAAM+U;wBACR;sBACF;oBACF,WAAW,OAAO/U,QAAQ,UAAU;AAClCA,4BAAMA,MAAM;oBACd,WAAW,OAAOA,QAAQ,WAAW;AACnCA,4BAAM/B,OAAO+B,GAAG;oBAClB;AAGA,wBAAI6L,QAAQ,KAAK,KAAKzN,SAASyN,SAAS,KAAKzN,SAASmB,KAAK;AACzD,4BAAM,IAAI0J,WAAW,oBAAoB;oBAC3C;AAEA,wBAAI1J,OAAOsM,OAAO;AAChB,6BAAO;oBACT;AAEAA,4BAAQA,UAAU;AAClBtM,0BAAMA,QAAQH,SAAY,KAAKhB,SAASmB,QAAQ;AAEhD,wBAAI,CAACS;AAAKA,4BAAM;AAEhB,wBAAIV;AACJ,wBAAI,OAAOU,QAAQ,UAAU;AAC3B,2BAAKV,IAAIuM,OAAOvM,IAAIC,KAAK,EAAED,GAAG;AAC5B,6BAAKA,CAAC,IAAIU;sBACZ;oBACF,OAAO;AACL,0BAAM4C,QAAQ3B,QAAO6H,SAAS9I,GAAG,IAC7BA,MACAiB,QAAOC,KAAKlB,KAAKe,QAAQ;AAC7B,0BAAM4J,MAAM/H,MAAMxE;AAClB,0BAAIuM,QAAQ,GAAG;AACb,8BAAM,IAAIvB,UAAU,gBAAgBpJ,MAClC,mCAAmC;sBACvC;AACA,2BAAKV,IAAI,GAAGA,IAAIC,MAAMsM,OAAO,EAAEvM,GAAG;AAChC,6BAAKA,IAAIuM,KAAK,IAAIjJ,MAAMtD,IAAIqL,GAAG;sBACjC;oBACF;AAEA,2BAAO;kBACT;AAMA,sBAAMsK,UAAS,CAAC;AAChB,2BAASC,EAAGC,KAAKC,YAAYC,MAAM;AACjCJ,oBAAAA,QAAOE,GAAG,IAAC,yBAAA,OAAA;AAAA,sBAAAlS,gBAAA,WAAA,KAAA;AACT,+BAAA,YAAe;AAAA,4BAAA;AACb,gCAAA,MAAA,KAAA,IAAA,KAAO;AAEPlF,+BAAO6I,eAAcpL,yBAAA,KAAA,GAAO,WAAW;0BACrCsD,OAAOsW,WAAW1I,MAAKlR,yBAAA,KAAA,GAAO2H,SAAS;0BACvClE,UAAU;0BACV4I,cAAc;wBAChB,CAAC;AAGD,8BAAKvL,OAAU,MAAKA,OAAI,OAAK6Y,MAAG;AAGhC,8BAAKG;AAEL,+BAAO,MAAKhZ;AAAI,+BAAA;sBAClB;AAAC,0BAAA,SAAA,UAAA;AAAA,6BAeD0E,WAAA,SAAA,WAAY;AACV,+BAAU,KAAK1E,OAAI,OAAK6Y,MAAG,QAAM,KAAKI;sBACxC;AAAC,sBAAAla,eAAA,WAAA,CAAA;wBAAA,KAAA;wBAAA,KAfD,SAAA,MAAY;AACV,iCAAO8Z;wBACT;wBAAC,KAED,SAAA,IAAUrW,OAAO;AACff,iCAAO6I,eAAe,MAAM,QAAQ;4BAClCiB,cAAc;4BACdD,YAAY;4BACZ9I;4BACAG,UAAU;0BACZ,CAAC;wBACH;sBAAC,CAAA,CAAA;AAAA,6BAAA;oBAAA,EA9BmCoW,IAAI;kBAoC5C;AAEAH,oBAAE,4BACA,SAAU5Y,OAAM;AACd,wBAAIA,OAAM;AACR,6BAAUA,QAAI;oBAChB;AAEA,2BAAO;kBACT,GAAG2M,UAAU;AACfiM,oBAAE,wBACA,SAAU5Y,OAAMgO,QAAQ;AACtB,2BAAA,UAAehO,QAAI,sDAAoD,OAAOgO;kBAChF,GAAGlB,SAAS;AACd8L,oBAAE,oBACA,SAAUrI,KAAK2I,QAAOC,OAAO;AAC3B,wBAAIC,MAAG,mBAAoB7I,MAAG;AAC9B,wBAAI8I,WAAWF;AACf,wBAAIxX,OAAO2X,UAAUH,KAAK,KAAKxK,KAAK4K,IAAIJ,KAAK,IAAC,KAAA,IAAG,GAAK,EAAE,GAAE;AACxDE,iCAAWG,sBAAsB3K,OAAOsK,KAAK,CAAC;oBAChD,WAAW,OAAOA,UAAU,UAAU;AACpCE,iCAAWxK,OAAOsK,KAAK;AACvB,0BAAIA,QAAK,KAAA,IAAGjE,OAAO,CAAC,GAAKA,OAAO,EAAE,CAAC,KAAIiE,QAAQ,CAAA,KAAA,IAAEjE,OAAO,CAAC,GAAKA,OAAO,EAAE,CAAC,GAAG;AACzEmE,mCAAWG,sBAAsBH,QAAQ;sBAC3C;AACAA,kCAAY;oBACd;AACAD,2BAAG,iBAAmBF,SAAK,gBAAcG;AACzC,2BAAOD;kBACT,GAAGzM,UAAU;AAEf,2BAAS6M,sBAAuB9V,KAAK;AACnC,wBAAItB,MAAM;AACV,wBAAIY,IAAIU,IAAI5B;AACZ,wBAAMyN,QAAQ7L,IAAI,CAAC,MAAM,MAAM,IAAI;AACnC,2BAAOV,KAAKuM,QAAQ,GAAGvM,KAAK,GAAG;AAC7BZ,4BAAG,MAAOsB,IAAIqB,MAAM/B,IAAI,GAAGA,CAAC,IAAIZ;oBAClC;AACA,2BAAA,KAAUsB,IAAIqB,MAAM,GAAG/B,CAAC,IAAIZ;kBAC9B;AAKA,2BAASqX,YAAavV,KAAKmF,QAAQW,aAAY;AAC7C4K,mCAAevL,QAAQ,QAAQ;AAC/B,wBAAInF,IAAImF,MAAM,MAAMvG,UAAaoB,IAAImF,SAASW,WAAU,MAAMlH,QAAW;AACvEiS,kCAAY1L,QAAQnF,IAAIpC,UAAUkI,cAAa,EAAE;oBACnD;kBACF;AAEA,2BAASgN,WAAYxU,OAAOoM,MAAK4B,MAAKtM,KAAKmF,QAAQW,aAAY;AAC7D,wBAAIxH,QAAQgO,QAAOhO,QAAQoM,MAAK;AAC9B,0BAAMmB,KAAI,OAAOnB,SAAQ,WAAW,MAAM;AAC1C,0BAAIsK;AACJ,0BAAIlP,cAAa,GAAG;AAClB,4BAAI4E,SAAQ,KAAKA,SAAQsG,OAAO,CAAC,GAAG;AAClCgE,0BAAAA,SAAK,SAAUnJ,KAAC,aAAWA,KAAC,UAAQ/F,cAAa,KAAK,IAAI+F;wBAC5D,OAAO;AACLmJ,0BAAAA,SAAQ,WAASnJ,KAAC,WAAQ/F,cAAa,KAAK,IAAI,KAAI+F,KAAC,mBAAA,OACzC/F,cAAa,KAAK,IAAI,KAAI+F;wBACxC;sBACF,OAAO;AACLmJ,wBAAAA,SAAK,QAAStK,OAAMmB,KAAC,aAAWS,OAAMT;sBACxC;AACA,4BAAM,IAAI4I,QAAOe,iBAAiB,SAASR,QAAO1W,KAAK;oBACzD;AACAiX,gCAAYvV,KAAKmF,QAAQW,WAAU;kBACrC;AAEA,2BAAS4K,eAAgBpS,OAAOxC,OAAM;AACpC,wBAAI,OAAOwC,UAAU,UAAU;AAC7B,4BAAM,IAAImW,QAAOgB,qBAAqB3Z,OAAM,UAAUwC,KAAK;oBAC7D;kBACF;AAEA,2BAASuS,YAAavS,OAAOV,SAAQD,MAAM;AACzC,wBAAI8M,KAAKiL,MAAMpX,KAAK,MAAMA,OAAO;AAC/BoS,qCAAepS,OAAOX,IAAI;AAC1B,4BAAM,IAAI8W,QAAOe,iBAAiB7X,QAAQ,UAAU,cAAcW,KAAK;oBACzE;AAEA,wBAAIV,UAAS,GAAG;AACd,4BAAM,IAAI6W,QAAOkB,yBAAwB;oBAC3C;AAEA,0BAAM,IAAIlB,QAAOe,iBAAiB7X,QAAQ,UAAQ,SACVA,OAAO,IAAI,KAAC,aAAWC,SAC7BU,KAAK;kBACzC;AAKA,sBAAMsX,oBAAoB;AAE1B,2BAASC,YAAaxJ,KAAK;AAEzBA,0BAAMA,IAAItF,MAAM,GAAG,EAAE,CAAC;AAEtBsF,0BAAMA,IAAIG,KAAI,EAAGnK,QAAQuT,mBAAmB,EAAE;AAE9C,wBAAIvJ,IAAIzO,SAAS;AAAG,6BAAO;AAE3B,2BAAOyO,IAAIzO,SAAS,MAAM,GAAG;AAC3ByO,4BAAMA,MAAM;oBACd;AACA,2BAAOA;kBACT;AAEA,2BAASnB,YAAahI,QAAQ4S,OAAO;AACnCA,4BAAQA,SAASC;AACjB,wBAAIpH;AACJ,wBAAM/Q,UAASsF,OAAOtF;AACtB,wBAAIoY,gBAAgB;AACpB,wBAAM5T,QAAQ,CAAA;AAEd,6BAAStD,IAAI,GAAGA,IAAIlB,SAAQ,EAAEkB,GAAG;AAC/B6P,kCAAYzL,OAAOsR,WAAW1V,CAAC;AAG/B,0BAAI6P,YAAY,SAAUA,YAAY,OAAQ;AAE5C,4BAAI,CAACqH,eAAe;AAElB,8BAAIrH,YAAY,OAAQ;AAEtB,iCAAKmH,SAAS,KAAK;AAAI1T,oCAAMvD,KAAK,KAAM,KAAM,GAAI;AAClD;0BACF,WAAWC,IAAI,MAAMlB,SAAQ;AAE3B,iCAAKkY,SAAS,KAAK;AAAI1T,oCAAMvD,KAAK,KAAM,KAAM,GAAI;AAClD;0BACF;AAGAmX,0CAAgBrH;AAEhB;wBACF;AAGA,4BAAIA,YAAY,OAAQ;AACtB,+BAAKmH,SAAS,KAAK;AAAI1T,kCAAMvD,KAAK,KAAM,KAAM,GAAI;AAClDmX,0CAAgBrH;AAChB;wBACF;AAGAA,qCAAaqH,gBAAgB,SAAU,KAAKrH,YAAY,SAAU;sBACpE,WAAWqH,eAAe;AAExB,6BAAKF,SAAS,KAAK;AAAI1T,gCAAMvD,KAAK,KAAM,KAAM,GAAI;sBACpD;AAEAmX,sCAAgB;AAGhB,0BAAIrH,YAAY,KAAM;AACpB,6BAAKmH,SAAS,KAAK;AAAG;AACtB1T,8BAAMvD,KAAK8P,SAAS;sBACtB,WAAWA,YAAY,MAAO;AAC5B,6BAAKmH,SAAS,KAAK;AAAG;AACtB1T,8BAAMvD,KACJ8P,aAAa,IAAM,KACnBA,YAAY,KAAO,GAAI;sBAE3B,WAAWA,YAAY,OAAS;AAC9B,6BAAKmH,SAAS,KAAK;AAAG;AACtB1T,8BAAMvD,KACJ8P,aAAa,KAAM,KACnBA,aAAa,IAAM,KAAO,KAC1BA,YAAY,KAAO,GAAI;sBAE3B,WAAWA,YAAY,SAAU;AAC/B,6BAAKmH,SAAS,KAAK;AAAG;AACtB1T,8BAAMvD,KACJ8P,aAAa,KAAO,KACpBA,aAAa,KAAM,KAAO,KAC1BA,aAAa,IAAM,KAAO,KAC1BA,YAAY,KAAO,GAAI;sBAE3B,OAAO;AACL,8BAAM,IAAIxL,MAAM,oBAAoB;sBACtC;oBACF;AAEA,2BAAOf;kBACT;AAEA,2BAAS8L,aAAc7B,KAAK;AAC1B,wBAAM4J,YAAY,CAAA;AAClB,6BAASnX,IAAI,GAAGA,IAAIuN,IAAIzO,QAAQ,EAAEkB,GAAG;AAEnCmX,gCAAUpX,KAAKwN,IAAImI,WAAW1V,CAAC,IAAI,GAAI;oBACzC;AACA,2BAAOmX;kBACT;AAEA,2BAAS5H,eAAgBhC,KAAKyJ,OAAO;AACnC,wBAAIzQ,IAAG0L,IAAID;AACX,wBAAMmF,YAAY,CAAA;AAClB,6BAASnX,IAAI,GAAGA,IAAIuN,IAAIzO,QAAQ,EAAEkB,GAAG;AACnC,2BAAKgX,SAAS,KAAK;AAAG;AAEtBzQ,sBAAAA,KAAIgH,IAAImI,WAAW1V,CAAC;AACpBiS,2BAAK1L,MAAK;AACVyL,2BAAKzL,KAAI;AACT4Q,gCAAUpX,KAAKiS,EAAE;AACjBmF,gCAAUpX,KAAKkS,EAAE;oBACnB;AAEA,2BAAOkF;kBACT;AAEA,2BAAS9K,cAAekB,KAAK;AAC3B,2BAAO7E,OAAO0O,YAAYL,YAAYxJ,GAAG,CAAC;kBAC5C;AAEA,2BAAS2B,WAAYmI,KAAKC,KAAKjR,QAAQvH,SAAQ;AAC7C,wBAAIkB;AACJ,yBAAKA,IAAI,GAAGA,IAAIlB,SAAQ,EAAEkB,GAAG;AAC3B,0BAAKA,IAAIqG,UAAUiR,IAAIxY,UAAYkB,KAAKqX,IAAIvY;AAAS;AACrDwY,0BAAItX,IAAIqG,MAAM,IAAIgR,IAAIrX,CAAC;oBACzB;AACA,2BAAOA;kBACT;AAKA,2BAASqK,WAAYnP,KAAK2D,MAAM;AAC9B,2BAAO3D,eAAe2D,QACnB3D,OAAO,QAAQA,IAAIqc,eAAe,QAAQrc,IAAIqc,YAAYva,QAAQ,QACjE9B,IAAIqc,YAAYva,SAAS6B,KAAK7B;kBACpC;AACA,2BAASsO,YAAapQ,KAAK;AAEzB,2BAAOA,QAAQA;kBACjB;AAIA,sBAAMsV,sBAAuB,WAAY;AACvC,wBAAMgH,WAAW;AACjB,wBAAMC,QAAQ,IAAIlM,MAAM,GAAG;AAC3B,6BAASvL,IAAI,GAAGA,IAAI,IAAI,EAAEA,GAAG;AAC3B,0BAAM0X,MAAM1X,IAAI;AAChB,+BAASyO,IAAI,GAAGA,IAAI,IAAI,EAAEA,GAAG;AAC3BgJ,8BAAMC,MAAMjJ,CAAC,IAAI+I,SAASxX,CAAC,IAAIwX,SAAS/I,CAAC;sBAC3C;oBACF;AACA,2BAAOgJ;kBACT,EAAC;AAGD,2BAAS9F,mBAAoBnM,IAAI;AAC/B,2BAAO,OAAO0M,WAAW,cAAcyF,yBAAyBnS;kBAClE;AAEA,2BAASmS,yBAA0B;AACjC,0BAAM,IAAItT,MAAM,sBAAsB;kBACxC;;;;;;;;;;ACxjEA/I,kBAAAA,QAAOyC,UAAU,OAAOmM,eAAe,eAAe,OAAO0N,YAAY;;;;;;;;ACAzE,sBAAIC,sBAAsBvZ,qBAAQ,GAAkC;AACpE,sBAAIwZ,cAAcxZ,qBAAQ,IAA0B;AACpD,sBAAIyZ,UAASzZ,qBAAQ,IAAqB;AAC1C,sBAAI0Z,aAAa1Z,qBAAQ,GAA0B;AACnD,sBAAI2Z,WAAW3Z,qBAAQ,GAAwB;AAC/C,sBAAI4Z,SAAS5Z,qBAAQ,IAA+B;AACpD,sBAAI6Z,UAAU7Z,qBAAQ,GAAsB;AAC5C,sBAAI8Z,cAAc9Z,qBAAQ,IAA4B;AACtD,sBAAI+Z,8BAA8B/Z,qBAAQ,IAA6C;AACvF,sBAAIga,WAAWha,qBAAQ,IAAuB;AAC9C,sBAAIgJ,iBAAiBhJ,qBAAAA,IAAAA,EAAAA;AACrB,sBAAIia,gBAAgBja,qBAAQ,IAAqC;AACjE,sBAAIka,iBAAiBla,qBAAQ,IAAsC;AACnE,sBAAIiL,iBAAiBjL,qBAAQ,IAAsC;AACnE,sBAAIma,kBAAkBna,qBAAQ,IAAgC;AAC9D,sBAAIoa,MAAMpa,qBAAQ,IAAkB;AAEpC,sBAAIqa,aAAYZ,QAAOY;AACvB,sBAAIC,qBAAqBD,cAAaA,WAAUnV;AAChD,sBAAIqV,qBAAoBd,QAAOc;AAC/B,sBAAIC,6BAA6BD,sBAAqBA,mBAAkBrV;AACxE,sBAAIuV,aAAaJ,cAAaH,eAAeG,UAAS;AACtD,sBAAIK,sBAAsBJ,sBAAsBJ,eAAeI,kBAAkB;AACjF,sBAAIK,kBAAkBxa,OAAO+E;AAC7B,sBAAIsG,aAAYiO,QAAOjO;AAEvB,sBAAIoP,gBAAgBT,gBAAgB,aAAa;AACjD,sBAAIU,kBAAkBT,IAAI,iBAAiB;AAC3C,sBAAIU,0BAA0BV,IAAI,yBAAyB;AAE3D,sBAAIW,4BAA4BxB,uBAAuB,CAAC,CAACtO,kBAAkB4O,QAAQJ,QAAOuB,KAAK,MAAM;AACrG,sBAAIC,0BAA0B;AAC9B,sBAAIC,OAAMC,aAAaC;AAEvB,sBAAIC,6BAA6B;oBAC/BhB,WAAW;oBACXvP,YAAY;oBACZyP,mBAAmB;oBACnBe,YAAY;oBACZC,aAAa;oBACbC,YAAY;oBACZC,aAAa;oBACbC,cAAc;oBACdC,cAAc;kBAChB;AAEA,sBAAIC,8BAA8B;oBAChCC,eAAe;oBACfC,gBAAgB;kBAClB;AAEA,sBAAIjQ,SAAS,SAASA,QAAOkQ,IAAI;AAC/B,wBAAI,CAACpC,SAASoC,EAAE;AAAG,6BAAO;AAC1B,wBAAIC,QAAQnC,QAAQkC,EAAE;AACtB,2BAAOC,UAAU,cACZpC,OAAOyB,4BAA4BW,KAAK,KACxCpC,OAAOgC,6BAA6BI,KAAK;kBAChD;AAEA,sBAAIC,eAAe,SAAfA,cAAyBF,IAAI;AAC/B,wBAAI,CAACpC,SAASoC,EAAE;AAAG,6BAAO;AAC1B,wBAAIC,QAAQnC,QAAQkC,EAAE;AACtB,2BAAOnC,OAAOyB,4BAA4BW,KAAK,KAC1CpC,OAAOgC,6BAA6BI,KAAK;kBAChD;AAEA,sBAAIE,cAAc,SAAdA,aAAwBH,IAAI;AAC9B,wBAAIE,aAAaF,EAAE;AAAG,6BAAOA;AAC7B,0BAAMvQ,WAAU,6BAA6B;kBAC/C;AAEA,sBAAI2Q,yBAAyB,SAAzBA,wBAAmCC,GAAG;AACxC,wBAAI1C,WAAW0C,CAAC,MAAM,CAACnR,kBAAkBgP,cAAcQ,YAAY2B,CAAC;AAAI,6BAAOA;AAC/E,0BAAM5Q,WAAUsO,YAAYsC,CAAC,IAAI,mCAAmC;kBACtE;AAEA,sBAAIC,yBAAyB,SAAzBA,wBAAmCC,KAAKC,UAAUC,QAAQ;AAC5D,wBAAI,CAAChD;AAAa;AAClB,wBAAIgD;AAAQ,+BAASC,SAASpB,4BAA4B;AACxD,4BAAIqB,wBAAwBjD,QAAOgD,KAAK;AACxC,4BAAIC,yBAAyB9C,OAAO8C,sBAAsBxX,WAAWoX,GAAG;AAAG,8BAAI;AAC7E,mCAAOI,sBAAsBxX,UAAUoX,GAAG;0BAC5C,SAASvZ,OAAO;0BAAE;sBACpB;AACA,wBAAI,CAAC2X,oBAAoB4B,GAAG,KAAKE,QAAQ;AACvCxC,+BAASU,qBAAqB4B,KAAKE,SAASD,WACxCxB,6BAA6BT,mBAAmBgC,GAAG,KAAKC,QAAQ;oBACtE;kBACF;AAEA,sBAAII,+BAA+B,SAA/BA,8BAAyCL,KAAKC,UAAUC,QAAQ;AAClE,wBAAIC,OAAOC;AACX,wBAAI,CAAClD;AAAa;AAClB,wBAAIvO,gBAAgB;AAClB,0BAAIuR;AAAQ,6BAAKC,SAASpB,4BAA4B;AACpDqB,kDAAwBjD,QAAOgD,KAAK;AACpC,8BAAIC,yBAAyB9C,OAAO8C,uBAAuBJ,GAAG;AAAG,gCAAI;AACnE,qCAAOI,sBAAsBJ,GAAG;4BAClC,SAASvZ,OAAO;4BAAE;wBACpB;AACA,0BAAI,CAAC0X,WAAW6B,GAAG,KAAKE,QAAQ;AAE9B,4BAAI;AACF,iCAAOxC,SAASS,YAAY6B,KAAKE,SAASD,WAAWxB,6BAA6BN,WAAW6B,GAAG,KAAKC,QAAQ;wBAC/G,SAASxZ,OAAO;wBAAE;sBACpB;AAAO;oBACT;AACA,yBAAK0Z,SAASpB,4BAA4B;AACxCqB,8CAAwBjD,QAAOgD,KAAK;AACpC,0BAAIC,0BAA0B,CAACA,sBAAsBJ,GAAG,KAAKE,SAAS;AACpExC,iCAAS0C,uBAAuBJ,KAAKC,QAAQ;sBAC/C;oBACF;kBACF;AAEA,uBAAKrB,SAAQG,4BAA4B;AACvCF,kCAAc1B,QAAOyB,KAAI;AACzBE,gCAAYD,eAAeA,YAAYjW;AACvC,wBAAIkW;AAAWrB,kDAA4BqB,WAAWN,yBAAyBK,WAAW;;AACrFJ,kDAA4B;kBACnC;AAEA,uBAAKG,SAAQU,6BAA6B;AACxCT,kCAAc1B,QAAOyB,KAAI;AACzBE,gCAAYD,eAAeA,YAAYjW;AACvC,wBAAIkW;AAAWrB,kDAA4BqB,WAAWN,yBAAyBK,WAAW;kBAC5F;AAGA,sBAAI,CAACJ,6BAA6B,CAACrB,WAAWe,UAAU,KAAKA,eAAemC,SAAS1X,WAAW;AAE9FuV,iCAAa,SAASA,cAAa;AACjC,4BAAMjP,WAAU,sBAAsB;oBACxC;AACA,wBAAIuP;AAA2B,2BAAKG,SAAQG,4BAA4B;AACtE,4BAAI5B,QAAOyB,KAAI;AAAGjQ,yCAAewO,QAAOyB,KAAI,GAAGT,UAAU;sBAC3D;kBACF;AAEA,sBAAI,CAACM,6BAA6B,CAACL,uBAAuBA,wBAAwBC,iBAAiB;AACjGD,0CAAsBD,WAAWvV;AACjC,wBAAI6V;AAA2B,2BAAKG,SAAQG,4BAA4B;AACtE,4BAAI5B,QAAOyB,KAAI;AAAGjQ,yCAAewO,QAAOyB,KAAI,EAAEhW,WAAWwV,mBAAmB;sBAC9E;kBACF;AAGA,sBAAIK,6BAA6Bb,eAAeM,0BAA0B,MAAME,qBAAqB;AACnGzP,mCAAeuP,4BAA4BE,mBAAmB;kBAChE;AAEA,sBAAIlB,eAAe,CAACI,OAAOc,qBAAqBE,aAAa,GAAG;AAC9DK,8CAA0B;AAC1BjS,mCAAe0R,qBAAqBE,eAAe;sBAAE7T,KAAK,SAAA,MAAY;AACpE,+BAAO4S,SAAS,IAAI,IAAI,KAAKkB,eAAe,IAAIrZ;sBAClD;oBAAE,CAAC;AACH,yBAAK0Z,SAAQG,4BAA0B;AAAE,0BAAI5B,QAAOyB,KAAI,GAAG;AACzDnB,oDAA4BN,QAAOyB,KAAI,GAAGL,iBAAiBK,KAAI;sBACjE;oBAAC;kBACH;AAEAle,kBAAAA,QAAOyC,UAAU;oBACfsb;oBACAD;oBACAD,iBAAiBI,2BAA2BJ;oBAC5CqB;oBACAC;oBACAE;oBACAM;oBACA9Q;oBACAoQ;oBACAxB;oBACAC;kBACF;;;;;;;;AC9Ka,kBAAA5d,qBAAA,IAAA;AACb,sBAAI2c,UAASzZ,qBAAQ,IAAqB;AAC1C,sBAAI6c,cAAc7c,qBAAQ,IAAoC;AAC9D,sBAAIwZ,cAAcxZ,qBAAQ,IAA0B;AACpD,sBAAIuZ,sBAAsBvZ,qBAAQ,GAAkC;AACpE,sBAAI8c,eAAe9c,qBAAQ,IAA4B;AACvD,sBAAI+Z,8BAA8B/Z,qBAAQ,IAA6C;AACvF,sBAAI+c,cAAc/c,qBAAQ,IAA2B;AACrD,sBAAIgd,QAAQhd,qBAAQ,IAAoB;AACxC,sBAAIid,aAAajd,qBAAQ,IAA0B;AACnD,sBAAIkd,sBAAsBld,qBAAQ,IAAqC;AACvE,sBAAImd,WAAWnd,qBAAQ,IAAwB;AAC/C,sBAAIod,UAAUpd,qBAAQ,IAAuB;AAC7C,sBAAIqd,UAAUrd,qBAAQ,IAAsB;AAC5C,sBAAIka,iBAAiBla,qBAAQ,IAAsC;AACnE,sBAAIiL,iBAAiBjL,qBAAQ,IAAsC;AACnE,sBAAIsd,sBAAsBtd,qBAAAA,IAAAA,EAAAA;AAC1B,sBAAIgJ,iBAAiBhJ,qBAAAA,IAAAA,EAAAA;AACrB,sBAAIud,YAAYvd,qBAAQ,IAAyB;AACjD,sBAAIwd,aAAaxd,qBAAQ,GAA0B;AACnD,sBAAIyd,iBAAiBzd,qBAAQ,IAAgC;AAC7D,sBAAI0d,sBAAsB1d,qBAAQ,IAA6B;AAE/D,sBAAI2d,uBAAuBb,aAAac;AACxC,sBAAIC,6BAA6Bf,aAAagB;AAC9C,sBAAIC,mBAAmBL,oBAAoB3W;AAC3C,sBAAIiX,mBAAmBN,oBAAoB/P;AAC3C,sBAAIsQ,eAAe;AACnB,sBAAIC,YAAY;AAChB,sBAAIC,YAAY;AAChB,sBAAIC,eAAe;AACnB,sBAAIC,cAAc;AAClB,sBAAIC,oBAAoB7E,QAAOwE,YAAY;AAC3C,sBAAIM,eAAeD;AACnB,sBAAIE,uBAAuBD,gBAAgBA,aAAaJ,SAAS;AACjE,sBAAIM,YAAYhF,QAAOyE,SAAS;AAChC,sBAAIQ,oBAAoBD,aAAaA,UAAUN,SAAS;AACxD,sBAAIxD,kBAAkBxa,OAAO+E;AAC7B,sBAAI+H,SAAQwM,QAAOxM;AACnB,sBAAI5B,cAAaoO,QAAOpO;AACxB,sBAAIjF,OAAOyW,YAAYU,SAAS;AAChC,sBAAIoB,UAAU9B,YAAY,CAAA,EAAG8B,OAAO;AAEpC,sBAAIC,cAAcvB,QAAQwB;AAC1B,sBAAIC,gBAAgBzB,QAAQ0B;AAE5B,sBAAIC,WAAW,SAAXA,UAAqBC,SAAQ;AAC/B,2BAAO,CAACA,UAAS,GAAI;kBACvB;AAEA,sBAAIC,YAAY,SAAZA,WAAsBD,SAAQ;AAChC,2BAAO,CAACA,UAAS,KAAMA,WAAU,IAAI,GAAI;kBAC3C;AAEA,sBAAIE,YAAY,SAAZA,WAAsBF,SAAQ;AAChC,2BAAO,CAACA,UAAS,KAAMA,WAAU,IAAI,KAAMA,WAAU,KAAK,KAAMA,WAAU,KAAK,GAAI;kBACrF;AAEA,sBAAIG,cAAc,SAAdA,aAAwBnc,QAAQ;AAClC,2BAAOA,OAAO,CAAC,KAAK,KAAKA,OAAO,CAAC,KAAK,KAAKA,OAAO,CAAC,KAAK,IAAIA,OAAO,CAAC;kBACtE;AAEA,sBAAIoc,cAAc,SAAdA,aAAwBJ,SAAQ;AAClC,2BAAOL,YAAYK,SAAQ,IAAI,CAAC;kBAClC;AAEA,sBAAIK,cAAc,SAAdA,aAAwBL,SAAQ;AAClC,2BAAOL,YAAYK,SAAQ,IAAI,CAAC;kBAClC;AAEA,sBAAIM,YAAY,SAAZA,WAAsBpE,aAAapW,MAAK;AAC1CiE,mCAAemS,YAAYgD,SAAS,GAAGpZ,MAAK;sBAAEgC,KAAK,SAAAA,OAAY;AAAE,+BAAOgX,iBAAiB,IAAI,EAAEhZ,IAAG;sBAAG;oBAAE,CAAC;kBAC1G;AAEA,sBAAIgC,MAAM,SAANA,KAAgByY,MAAMjX,OAAOhC,QAAOkZ,gBAAgB;AACtD,wBAAIC,WAAWtC,QAAQ7W,MAAK;AAC5B,wBAAIoZ,QAAQ5B,iBAAiByB,IAAI;AACjC,wBAAIE,WAAWnX,QAAQoX,MAAMjX;AAAY,4BAAM2C,YAAWgT,WAAW;AACrE,wBAAIrZ,QAAQ+Y,iBAAiB4B,MAAM1c,MAAM,EAAE+B;AAC3C,wBAAIiJ,QAAQyR,WAAWC,MAAMxU;AAC7B,wBAAI0T,OAAOrB,WAAWxY,OAAOiJ,OAAOA,QAAQ1F,KAAK;AACjD,2BAAOkX,iBAAiBZ,OAAOF,QAAQE,IAAI;kBAC7C;AAEA,sBAAIlR,MAAM,SAANA,KAAgB6R,MAAMjX,OAAOhC,QAAOqZ,YAAY1e,OAAOue,gBAAgB;AACzE,wBAAIC,WAAWtC,QAAQ7W,MAAK;AAC5B,wBAAIoZ,QAAQ5B,iBAAiByB,IAAI;AACjC,wBAAIE,WAAWnX,QAAQoX,MAAMjX;AAAY,4BAAM2C,YAAWgT,WAAW;AACrE,wBAAIrZ,QAAQ+Y,iBAAiB4B,MAAM1c,MAAM,EAAE+B;AAC3C,wBAAIiJ,QAAQyR,WAAWC,MAAMxU;AAC7B,wBAAI0T,OAAOe,WAAW,CAAC1e,KAAK;AAC5B,6BAASQ,IAAI,GAAGA,IAAI6G,OAAO7G,KAAG;AAAEsD,4BAAMiJ,QAAQvM,CAAC,IAAImd,KAAKY,iBAAiB/d,IAAI6G,QAAQ7G,IAAI,CAAC;oBAAE;kBAC9F;AAEA,sBAAI,CAAC6X,qBAAqB;AACxBgF,mCAAe,SAAS3S,aAAYpL,SAAQ;AAC1Cyc,iCAAW,MAAMuB,oBAAoB;AACrC,0BAAI9V,aAAa0U,QAAQ5c,OAAM;AAC/Bwd,uCAAiB,MAAM;wBACrBhZ,OAAOoB,KAAK6G,OAAMvE,UAAU,GAAG,CAAC;wBAChCA;sBACF,CAAC;AACD,0BAAI,CAAC8Q;AAAa,6BAAK9Q,aAAaA;oBACtC;AAEA8V,2CAAuBD,aAAaJ,SAAS;AAE7CM,gCAAY,SAASnF,UAASrW,QAAQkI,YAAYzC,YAAY;AAC5DuU,iCAAW,MAAMyB,iBAAiB;AAClCzB,iCAAWha,QAAQub,oBAAoB;AACvC,0BAAIqB,eAAe9B,iBAAiB9a,MAAM,EAAEyF;AAC5C,0BAAIX,SAASmV,oBAAoB/R,UAAU;AAC3C,0BAAIpD,SAAS,KAAKA,SAAS8X;AAAc,8BAAMxU,YAAW,cAAc;AACxE3C,mCAAaA,eAAelH,SAAYqe,eAAe9X,SAASoV,SAASzU,UAAU;AACnF,0BAAIX,SAASW,aAAamX;AAAc,8BAAMxU,YAAW+S,YAAY;AACrEJ,uCAAiB,MAAM;wBACrB/a;wBACAyF;wBACAyC,YAAYpD;sBACd,CAAC;AACD,0BAAI,CAACyR,aAAa;AAChB,6BAAKvW,SAASA;AACd,6BAAKyF,aAAaA;AAClB,6BAAKyC,aAAapD;sBACpB;oBACF;AAEA2W,wCAAoBD,UAAUN,SAAS;AAEvC,wBAAI3E,aAAa;AACf+F,gCAAUhB,cAAc,YAAY;AACpCgB,gCAAUd,WAAW,QAAQ;AAC7Bc,gCAAUd,WAAW,YAAY;AACjCc,gCAAUd,WAAW,YAAY;oBACnC;AAEA1B,gCAAY2B,mBAAmB;sBAC7BoB,SAAS,SAASA,QAAQ3U,YAAY;AACpC,+BAAOpE,IAAI,MAAM,GAAGoE,UAAU,EAAE,CAAC,KAAK,MAAM;sBAC9C;sBACA4U,UAAU,SAASA,SAAS5U,YAAY;AACtC,+BAAOpE,IAAI,MAAM,GAAGoE,UAAU,EAAE,CAAC;sBACnC;sBACA6U,UAAU,SAASA,SAAS7U,YAAiC;AAC3D,4BAAInG,QAAQ+B,IAAI,MAAM,GAAGoE,YAAY5F,UAAU/E,SAAS,IAAI+E,UAAU,CAAC,IAAI/D,MAAS;AACpF,gCAAQwD,MAAM,CAAC,KAAK,IAAIA,MAAM,CAAC,MAAM,MAAM;sBAC7C;sBACAib,WAAW,SAASA,UAAU9U,YAAiC;AAC7D,4BAAInG,QAAQ+B,IAAI,MAAM,GAAGoE,YAAY5F,UAAU/E,SAAS,IAAI+E,UAAU,CAAC,IAAI/D,MAAS;AACpF,+BAAOwD,MAAM,CAAC,KAAK,IAAIA,MAAM,CAAC;sBAChC;sBACAkb,UAAU,SAASA,SAAS/U,YAAiC;AAC3D,+BAAOiU,YAAYrY,IAAI,MAAM,GAAGoE,YAAY5F,UAAU/E,SAAS,IAAI+E,UAAU,CAAC,IAAI/D,MAAS,CAAC;sBAC9F;sBACA2e,WAAW,SAASA,UAAUhV,YAAiC;AAC7D,+BAAOiU,YAAYrY,IAAI,MAAM,GAAGoE,YAAY5F,UAAU/E,SAAS,IAAI+E,UAAU,CAAC,IAAI/D,MAAS,CAAC,MAAM;sBACpG;sBACA4e,YAAY,SAASA,WAAWjV,YAAiC;AAC/D,+BAAO2T,cAAc/X,IAAI,MAAM,GAAGoE,YAAY5F,UAAU/E,SAAS,IAAI+E,UAAU,CAAC,IAAI/D,MAAS,GAAG,EAAE;sBACpG;sBACA6e,YAAY,SAASA,WAAWlV,YAAiC;AAC/D,+BAAO2T,cAAc/X,IAAI,MAAM,GAAGoE,YAAY5F,UAAU/E,SAAS,IAAI+E,UAAU,CAAC,IAAI/D,MAAS,GAAG,EAAE;sBACpG;sBACA8e,SAAS,SAASA,QAAQnV,YAAYjK,OAAO;AAC3CyM,4BAAI,MAAM,GAAGxC,YAAY6T,UAAU9d,KAAK;sBAC1C;sBACAqf,UAAU,SAASA,SAASpV,YAAYjK,OAAO;AAC7CyM,4BAAI,MAAM,GAAGxC,YAAY6T,UAAU9d,KAAK;sBAC1C;sBACAsf,UAAU,SAASA,SAASrV,YAAYjK,OAA4B;AAClEyM,4BAAI,MAAM,GAAGxC,YAAY+T,WAAWhe,OAAOqE,UAAU/E,SAAS,IAAI+E,UAAU,CAAC,IAAI/D,MAAS;sBAC5F;sBACAif,WAAW,SAASA,UAAUtV,YAAYjK,OAA4B;AACpEyM,4BAAI,MAAM,GAAGxC,YAAY+T,WAAWhe,OAAOqE,UAAU/E,SAAS,IAAI+E,UAAU,CAAC,IAAI/D,MAAS;sBAC5F;sBACAkf,UAAU,SAASA,SAASvV,YAAYjK,OAA4B;AAClEyM,4BAAI,MAAM,GAAGxC,YAAYgU,WAAWje,OAAOqE,UAAU/E,SAAS,IAAI+E,UAAU,CAAC,IAAI/D,MAAS;sBAC5F;sBACAmf,WAAW,SAASA,UAAUxV,YAAYjK,OAA4B;AACpEyM,4BAAI,MAAM,GAAGxC,YAAYgU,WAAWje,OAAOqE,UAAU/E,SAAS,IAAI+E,UAAU,CAAC,IAAI/D,MAAS;sBAC5F;sBACAof,YAAY,SAASA,WAAWzV,YAAYjK,OAA4B;AACtEyM,4BAAI,MAAM,GAAGxC,YAAYkU,aAAane,OAAOqE,UAAU/E,SAAS,IAAI+E,UAAU,CAAC,IAAI/D,MAAS;sBAC9F;sBACAqf,YAAY,SAASA,WAAW1V,YAAYjK,OAA4B;AACtEyM,4BAAI,MAAM,GAAGxC,YAAYmU,aAAape,OAAOqE,UAAU/E,SAAS,IAAI+E,UAAU,CAAC,IAAI/D,MAAS;sBAC9F;oBACF,CAAC;kBACH,OAAO;AACL,wBAAIsf,8BAA8BnD,wBAAwBW,kBAAkB5f,SAASuf;AAErF,wBAAI,CAACjB,MAAM,WAAY;AACrBsB,wCAAkB,CAAC;oBACrB,CAAC,KAAK,CAACtB,MAAM,WAAY;AACvB,0BAAIsB,kBAAkB,EAAE;oBAC1B,CAAC,KAAKtB,MAAM,WAAY;AACtB,0BAAIsB,kBAAiB;AACrB,0BAAIA,kBAAkB,GAAG;AACzB,0BAAIA,kBAAkByC,GAAG;AACzB,6BAAOD,+BAA+B,CAACjD;oBACzC,CAAC,GAAG;AAEFU,qCAAe,SAAS3S,aAAYpL,SAAQ;AAC1Cyc,mCAAW,MAAMuB,oBAAoB;AACrC,+BAAO,IAAIF,kBAAkBlB,QAAQ5c,OAAM,CAAC;sBAC9C;AAEA+d,mCAAaJ,SAAS,IAAIK;AAE1B,+BAAShc,OAAO8a,oBAAoBgB,iBAAiB,GAAGnO,IAAI,GAAGpL,KAAKvC,KAAKhC,SAAS2P,KAAI;AACpF,4BAAI,GAAGpL,MAAMvC,KAAK2N,GAAG,MAAMoO,eAAe;AACxCxE,sDAA4BwE,cAAcxZ,KAAKuZ,kBAAkBvZ,GAAG,CAAC;wBACvE;sBACF;AAEAyZ,2CAAqBvF,cAAcsF;oBACrC,WAAWuC,+BAA+BjD,4BAA4B;AACpE9D,kDAA4BuE,mBAAmB,QAAQL,YAAY;oBACrE;AAGA,wBAAIhT,kBAAkBiP,eAAewE,iBAAiB,MAAM/D,iBAAiB;AAC3E1P,qCAAeyT,mBAAmB/D,eAAe;oBACnD;AAGA,wBAAIqG,WAAW,IAAIvC,UAAU,IAAIF,aAAa,CAAC,CAAC;AAChD,wBAAI0C,WAAWpE,YAAY6B,kBAAkB4B,OAAO;AACpDU,6BAASV,QAAQ,GAAG,UAAU;AAC9BU,6BAASV,QAAQ,GAAG,UAAU;AAC9B,wBAAIU,SAASlB,QAAQ,CAAC,KAAK,CAACkB,SAASlB,QAAQ,CAAC;AAAG/C,kCAAY2B,mBAAmB;wBAC9E4B,SAAS,SAASA,QAAQnV,YAAYjK,OAAO;AAC3C+f,mCAAS,MAAM9V,YAAYjK,SAAS,MAAM,EAAE;wBAC9C;wBACAqf,UAAU,SAASA,SAASpV,YAAYjK,OAAO;AAC7C+f,mCAAS,MAAM9V,YAAYjK,SAAS,MAAM,EAAE;wBAC9C;sBACF,GAAG;wBAAEggB,QAAQ;sBAAK,CAAC;kBACrB;AAEAzD,iCAAec,cAAcN,YAAY;AACzCR,iCAAegB,WAAWP,SAAS;AAEnClhB,kBAAAA,QAAOyC,UAAU;oBACfmM,aAAa2S;oBACbjF,UAAUmF;kBACZ;;;;;;;;ACrPA,sBAAI0C,OAAInhB,qBAAQ,IAAqB;AACrC,sBAAIyZ,UAASzZ,qBAAQ,IAAqB;AAC1C,sBAAIohB,oBAAoBphB,qBAAQ,IAA2B;AAC3D,sBAAIqhB,aAAarhB,qBAAQ,IAA0B;AAEnD,sBAAIie,eAAe;AACnB,sBAAIrS,eAAcwV,kBAAkBnD,YAAY;AAChD,sBAAIK,oBAAoB7E,QAAOwE,YAAY;AAI3CkD,kBAAAA,KAAE;oBAAE1H,QAAQ;oBAAM+C,QAAQ8B,sBAAsB1S;kBAAY,GAAG;oBAC7DA,aAAaA;kBACf,CAAC;AAEDyV,6BAAWpD,YAAY;;;;;;;;AChBvB;AAAE,mBAAA,SAAUqD,MAAMC,SAASC,OAAO;AACjC,wBAAI,MAA6B;AAEhCxkB,sBAAAA,QAAOyC,UAAUA,WAAU8hB,QAAQvhB,qBAAQ,GAAQ,GAAGA,qBAAQ,IAAc,GAAGA,qBAAQ,IAAO,GAAGA,qBAAQ,IAAU,GAAGA,qBAAQ,IAAe,CAAC;oBAC/I,OACK;oBAAA;kBAQN,GAAC,QAAO,SAAUyhB,UAAU;AAE1B,qBAAA,WAAY;AAET,0BAAIrF,IAAIqF;AACR,0BAAIC,QAAQtF,EAAEuF;AACd,0BAAIC,cAAcF,MAAME;AACxB,0BAAIC,SAASzF,EAAE0F;AAGf,0BAAIC,OAAO,CAAA;AACX,0BAAIC,WAAW,CAAA;AACf,0BAAIC,YAAY,CAAA;AAChB,0BAAIC,YAAY,CAAA;AAChB,0BAAIC,YAAY,CAAA;AAChB,0BAAIC,YAAY,CAAA;AAChB,0BAAIC,gBAAgB,CAAA;AACpB,0BAAIC,gBAAgB,CAAA;AACpB,0BAAIC,gBAAgB,CAAA;AACpB,0BAAIC,gBAAgB,CAAA;AAGnB,uBAAA,WAAY;AAET,4BAAIC,KAAI,CAAA;AACR,iCAAS/gB,IAAI,GAAGA,IAAI,KAAKA,KAAK;AAC1B,8BAAIA,IAAI,KAAK;AACT+gB,4BAAAA,GAAE/gB,CAAC,IAAIA,KAAK;0BAChB,OAAO;AACH+gB,4BAAAA,GAAE/gB,CAAC,IAAKA,KAAK,IAAK;0BACtB;wBACJ;AAGA,4BAAItC,KAAI;AACR,4BAAIsjB,KAAK;AACT,iCAAShhB,IAAI,GAAGA,IAAI,KAAKA,KAAK;AAE1B,8BAAIihB,KAAKD,KAAMA,MAAM,IAAMA,MAAM,IAAMA,MAAM,IAAMA,MAAM;AACzDC,+BAAMA,OAAO,IAAMA,KAAK,MAAQ;AAChCZ,+BAAK3iB,EAAC,IAAIujB;AACVX,mCAASW,EAAE,IAAIvjB;AAGf,8BAAIwjB,MAAKH,GAAErjB,EAAC;AACZ,8BAAIyjB,KAAKJ,GAAEG,GAAE;AACb,8BAAIE,KAAKL,GAAEI,EAAE;AAGb,8BAAIE,KAAKN,GAAEE,EAAE,IAAI,MAAUA,KAAK;AAChCV,oCAAU7iB,EAAC,IAAK2jB,MAAK,KAAOA,OAAM;AAClCb,oCAAU9iB,EAAC,IAAK2jB,MAAK,KAAOA,OAAM;AAClCZ,oCAAU/iB,EAAC,IAAK2jB,MAAK,IAAOA,OAAM;AAClCX,oCAAUhjB,EAAC,IAAI2jB;AAGf,8BAAIA,KAAKD,KAAK,WAAcD,KAAK,QAAYD,MAAK,MAAUxjB,KAAI;AAChEijB,wCAAcM,EAAE,IAAKI,MAAK,KAAOA,OAAM;AACvCT,wCAAcK,EAAE,IAAKI,MAAK,KAAOA,OAAM;AACvCR,wCAAcI,EAAE,IAAKI,MAAK,IAAOA,OAAM;AACvCP,wCAAcG,EAAE,IAAII;AAGpB,8BAAI,CAAC3jB,IAAG;AACJA,4BAAAA,KAAIsjB,KAAK;0BACb,OAAO;AACHtjB,4BAAAA,KAAIwjB,MAAKH,GAAEA,GAAEA,GAAEK,KAAKF,GAAE,CAAC,CAAC;AACxBF,kCAAMD,GAAEA,GAAEC,EAAE,CAAC;0BACjB;wBACJ;sBACJ,GAAC;AAGD,0BAAIM,OAAO,CAAC,GAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,KAAM,IAAM,EAAI;AAK5E,0BAAIC,MAAMpB,OAAOoB,MAAMrB,YAAYsB,OAAO;wBACtCC,UAAU,SAAA,WAAY;AAClB,8BAAIJ;AAGJ,8BAAI,KAAKK,YAAY,KAAKC,mBAAmB,KAAKC,MAAM;AACpD;0BACJ;AAGA,8BAAIve,MAAM,KAAKse,iBAAiB,KAAKC;AACrC,8BAAIC,WAAWxe,IAAIye;AACnB,8BAAIC,UAAU1e,IAAI2e,WAAW;AAG7B,8BAAIC,UAAU,KAAKP,WAAWK,UAAU;AAGxC,8BAAIG,UAAUD,UAAU,KAAK;AAG7B,8BAAIE,cAAc,KAAKC,eAAe,CAAA;AACtC,mCAASC,QAAQ,GAAGA,QAAQH,QAAQG,SAAS;AACzC,gCAAIA,QAAQN,SAAS;AACjBI,0CAAYE,KAAK,IAAIR,SAASQ,KAAK;4BACvC,OAAO;AACHhB,8BAAAA,KAAIc,YAAYE,QAAQ,CAAC;AAEzB,kCAAI,EAAEA,QAAQN,UAAU;AAEpBV,gCAAAA,KAAKA,MAAK,IAAMA,OAAM;AAGtBA,gCAAAA,KAAKhB,KAAKgB,OAAM,EAAE,KAAK,KAAOhB,KAAMgB,OAAM,KAAM,GAAI,KAAK,KAAOhB,KAAMgB,OAAM,IAAK,GAAI,KAAK,IAAKhB,KAAKgB,KAAI,GAAI;AAG5GA,gCAAAA,MAAKC,KAAMe,QAAQN,UAAW,CAAC,KAAK;8BACxC,WAAWA,UAAU,KAAKM,QAAQN,WAAW,GAAG;AAE5CV,gCAAAA,KAAKhB,KAAKgB,OAAM,EAAE,KAAK,KAAOhB,KAAMgB,OAAM,KAAM,GAAI,KAAK,KAAOhB,KAAMgB,OAAM,IAAK,GAAI,KAAK,IAAKhB,KAAKgB,KAAI,GAAI;8BAChH;AAEAc,0CAAYE,KAAK,IAAIF,YAAYE,QAAQN,OAAO,IAAIV;4BACxD;0BACJ;AAGA,8BAAIiB,iBAAiB,KAAKC,kBAAkB,CAAA;AAC5C,mCAASC,WAAW,GAAGA,WAAWN,QAAQM,YAAY;AAClD,gCAAIH,QAAQH,SAASM;AAErB,gCAAIA,WAAW,GAAG;AACd,kCAAInB,KAAIc,YAAYE,KAAK;4BAC7B,OAAO;AACH,kCAAIhB,KAAIc,YAAYE,QAAQ,CAAC;4BACjC;AAEA,gCAAIG,WAAW,KAAKH,SAAS,GAAG;AAC5BC,6CAAeE,QAAQ,IAAInB;4BAC/B,OAAO;AACHiB,6CAAeE,QAAQ,IAAI7B,cAAcN,KAAKgB,OAAM,EAAE,CAAC,IAAIT,cAAcP,KAAMgB,OAAM,KAAM,GAAI,CAAC,IACrER,cAAcR,KAAMgB,OAAM,IAAK,GAAI,CAAC,IAAIP,cAAcT,KAAKgB,KAAI,GAAI,CAAC;4BACnG;0BACJ;wBACJ;wBAEAoB,cAAc,SAAA,aAAUC,GAAGrc,QAAQ;AAC/B,+BAAKsc,cAAcD,GAAGrc,QAAQ,KAAK+b,cAAc7B,WAAWC,WAAWC,WAAWC,WAAWL,IAAI;wBACrG;wBAEAuC,cAAc,SAAA,aAAUF,GAAGrc,QAAQ;AAE/B,8BAAIgb,KAAIqB,EAAErc,SAAS,CAAC;AACpBqc,4BAAErc,SAAS,CAAC,IAAIqc,EAAErc,SAAS,CAAC;AAC5Bqc,4BAAErc,SAAS,CAAC,IAAIgb;AAEhB,+BAAKsB,cAAcD,GAAGrc,QAAQ,KAAKkc,iBAAiB5B,eAAeC,eAAeC,eAAeC,eAAeR,QAAQ;AAGxH,8BAAIe,KAAIqB,EAAErc,SAAS,CAAC;AACpBqc,4BAAErc,SAAS,CAAC,IAAIqc,EAAErc,SAAS,CAAC;AAC5Bqc,4BAAErc,SAAS,CAAC,IAAIgb;wBACpB;wBAEAsB,eAAe,SAAA,cAAUD,GAAGrc,QAAQ8b,aAAa5B,YAAWC,YAAWC,YAAWC,YAAWL,OAAM;AAE/F,8BAAI4B,UAAU,KAAKP;AAGnB,8BAAImB,KAAKH,EAAErc,MAAM,IAAQ8b,YAAY,CAAC;AACtC,8BAAIW,KAAKJ,EAAErc,SAAS,CAAC,IAAI8b,YAAY,CAAC;AACtC,8BAAIY,KAAKL,EAAErc,SAAS,CAAC,IAAI8b,YAAY,CAAC;AACtC,8BAAIa,KAAKN,EAAErc,SAAS,CAAC,IAAI8b,YAAY,CAAC;AAGtC,8BAAIE,QAAQ;AAGZ,mCAASY,SAAQ,GAAGA,SAAQhB,SAASgB,UAAS;AAE1C,gCAAIC,MAAK3C,WAAUsC,OAAO,EAAE,IAAIrC,WAAWsC,OAAO,KAAM,GAAI,IAAIrC,WAAWsC,OAAO,IAAK,GAAI,IAAIrC,WAAUsC,KAAK,GAAI,IAAIb,YAAYE,OAAO;AACzI,gCAAIc,MAAK5C,WAAUuC,OAAO,EAAE,IAAItC,WAAWuC,OAAO,KAAM,GAAI,IAAItC,WAAWuC,OAAO,IAAK,GAAI,IAAItC,WAAUmC,KAAK,GAAI,IAAIV,YAAYE,OAAO;AACzI,gCAAIe,KAAK7C,WAAUwC,OAAO,EAAE,IAAIvC,WAAWwC,OAAO,KAAM,GAAI,IAAIvC,WAAWoC,OAAO,IAAK,GAAI,IAAInC,WAAUoC,KAAK,GAAI,IAAIX,YAAYE,OAAO;AACzI,gCAAIgB,KAAK9C,WAAUyC,OAAO,EAAE,IAAIxC,WAAWqC,OAAO,KAAM,GAAI,IAAIpC,WAAWqC,OAAO,IAAK,GAAI,IAAIpC,WAAUqC,KAAK,GAAI,IAAIZ,YAAYE,OAAO;AAGzIQ,iCAAKK;AACLJ,iCAAKK;AACLJ,iCAAKK;AACLJ,iCAAKK;0BACT;AAGA,8BAAIH,OAAO7C,MAAKwC,OAAO,EAAE,KAAK,KAAOxC,MAAMyC,OAAO,KAAM,GAAI,KAAK,KAAOzC,MAAM0C,OAAO,IAAK,GAAI,KAAK,IAAK1C,MAAK2C,KAAK,GAAI,KAAKb,YAAYE,OAAO;AAC9I,8BAAIc,OAAO9C,MAAKyC,OAAO,EAAE,KAAK,KAAOzC,MAAM0C,OAAO,KAAM,GAAI,KAAK,KAAO1C,MAAM2C,OAAO,IAAK,GAAI,KAAK,IAAK3C,MAAKwC,KAAK,GAAI,KAAKV,YAAYE,OAAO;AAC9I,8BAAIe,MAAO/C,MAAK0C,OAAO,EAAE,KAAK,KAAO1C,MAAM2C,OAAO,KAAM,GAAI,KAAK,KAAO3C,MAAMwC,OAAO,IAAK,GAAI,KAAK,IAAKxC,MAAKyC,KAAK,GAAI,KAAKX,YAAYE,OAAO;AAC9I,8BAAIgB,MAAOhD,MAAK2C,OAAO,EAAE,KAAK,KAAO3C,MAAMwC,OAAO,KAAM,GAAI,KAAK,KAAOxC,MAAMyC,OAAO,IAAK,GAAI,KAAK,IAAKzC,MAAK0C,KAAK,GAAI,KAAKZ,YAAYE,OAAO;AAG9IK,4BAAErc,MAAM,IAAQ6c;AAChBR,4BAAErc,SAAS,CAAC,IAAI8c;AAChBT,4BAAErc,SAAS,CAAC,IAAI+c;AAChBV,4BAAErc,SAAS,CAAC,IAAIgd;wBACpB;wBAEAtB,SAAS,MAAI;sBACjB,CAAC;AAUDrH,wBAAE6G,MAAMrB,YAAYoD,cAAc/B,GAAG;oBACzC,GAAC;AAGD,2BAAOxB,SAASwB;kBAEjB,CAAC;;;;;;;;;;;;;ACzOD;AAAE,mBAAA,SAAU3B,MAAMC,SAASC,OAAO;AACjC,wBAAI,MAA6B;AAEhCxkB,sBAAAA,QAAOyC,UAAUA,WAAU8hB,QAAQvhB,qBAAQ,GAAQ,GAAGA,qBAAQ,IAAU,CAAC;oBAC1E,OACK;oBAAA;kBAQN,GAAC,QAAO,SAAUyhB,UAAU;AAK3BA,6BAASE,IAAIsD,UAAW,SAAUzjB,YAAW;AAEzC,0BAAI4a,IAAIqF;AACR,0BAAIC,QAAQtF,EAAEuF;AACd,0BAAIlK,OAAOiK,MAAMjK;AACjB,0BAAIyN,YAAYxD,MAAMwD;AACtB,0BAAIC,yBAAyBzD,MAAMyD;AACnC,0BAAIC,QAAQhJ,EAAEiJ;AACd,0BAAIC,OAAOF,MAAME;AACjB,0BAAIC,SAASH,MAAMG;AACnB,0BAAI1D,SAASzF,EAAE0F;AACf,0BAAI0D,SAAS3D,OAAO2D;AAUpB,0BAAIP,SAASvD,MAAMuD,SAASE,uBAAuBjC,OAAO;;;;;;wBAMtDuC,KAAKhO,KAAKyL,OAAM;;;;;;;;;;;;;;;wBAgBhBwC,iBAAiB,SAAA,gBAAU3gB,KAAK0gB,KAAK;AACjC,iCAAO,KAAKE,OAAO,KAAKC,iBAAiB7gB,KAAK0gB,GAAG;wBACrD;;;;;;;;;;;;;;;wBAgBAI,iBAAiB,SAAA,gBAAU9gB,KAAK0gB,KAAK;AACjC,iCAAO,KAAKE,OAAO,KAAKG,iBAAiB/gB,KAAK0gB,GAAG;wBACrD;;;;;;;;;;;;wBAaAM,MAAM,SAAAA,QAAUC,WAAWjhB,KAAK0gB,KAAK;AAEjC,+BAAKA,MAAM,KAAKA,IAAIvC,OAAOuC,GAAG;AAG9B,+BAAKQ,aAAaD;AAClB,+BAAK1C,OAAOve;AAGZ,+BAAKmhB,MAAK;wBACd;;;;;;;;wBASAA,OAAO,SAAA,QAAY;AAEff,iDAAuBe,MAAM1e,KAAK,IAAI;AAGtC,+BAAK2b,SAAQ;wBACjB;;;;;;;;;;;;;wBAcAjmB,SAAS,SAAAA,SAAUipB,YAAY;AAE3B,+BAAKC,QAAQD,UAAU;AAGvB,iCAAO,KAAKE,SAAQ;wBACxB;;;;;;;;;;;;;;;wBAgBAC,UAAU,SAAA,SAAUH,YAAY;AAE5B,8BAAIA,YAAY;AACZ,iCAAKC,QAAQD,UAAU;0BAC3B;AAGA,8BAAII,qBAAqB,KAAKC,YAAW;AAEzC,iCAAOD;wBACX;wBAEA9C,SAAS,MAAI;wBAEbgD,QAAQ,MAAI;wBAEZb,iBAAiB;wBAEjBE,iBAAiB;;;;;;;;;;;;;;wBAejBd,eAAgB,WAAY;AACxB,mCAAS0B,qBAAqB3hB,KAAK;AAC/B,gCAAI,OAAOA,OAAO,UAAU;AACxB,qCAAO4hB;4BACX,OAAO;AACH,qCAAOC;4BACX;0BACJ;AAEA,iCAAO,SAAUC,QAAQ;AACrB,mCAAO;8BACHC,SAAS,SAAA,QAAUnP,SAAS5S,KAAK0gB,KAAK;AAClC,uCAAOiB,qBAAqB3hB,GAAG,EAAE+hB,QAAQD,QAAQlP,SAAS5S,KAAK0gB,GAAG;8BACtE;8BAEAsB,SAAS,SAAA,QAAUC,YAAYjiB,KAAK0gB,KAAK;AACrC,uCAAOiB,qBAAqB3hB,GAAG,EAAEgiB,QAAQF,QAAQG,YAAYjiB,KAAK0gB,GAAG;8BACzE;4BACJ;0BACJ;wBACJ,EAAC;sBACL,CAAC;AAOD,0BAAIwB,eAAevF,MAAMuF,eAAehC,OAAO/B,OAAO;wBAClDsD,aAAa,SAAA,cAAY;AAErB,8BAAIU,uBAAuB,KAAKb,SAAS,IAAS;AAElD,iCAAOa;wBACX;wBAEAC,WAAW;sBACf,CAAC;AAKD,0BAAIC,SAAShL,EAAEiL,OAAO,CAAC;AAKvB,0BAAIC,kBAAkB5F,MAAM4F,kBAAkB7P,KAAKyL,OAAO;;;;;;;;;;;;;wBAatDwC,iBAAiB,SAAA,gBAAUmB,QAAQU,IAAI;AACnC,iCAAO,KAAKC,UAAU7B,OAAOkB,QAAQU,EAAE;wBAC3C;;;;;;;;;;;;;wBAcA1B,iBAAiB,SAAA,gBAAUgB,QAAQU,IAAI;AACnC,iCAAO,KAAKE,UAAU9B,OAAOkB,QAAQU,EAAE;wBAC3C;;;;;;;;;;;wBAYAxB,MAAM,SAAAA,QAAUc,QAAQU,IAAI;AACxB,+BAAKG,UAAUb;AACf,+BAAKc,MAAMJ;wBACf;sBACJ,CAAC;AAKD,0BAAIK,MAAMR,OAAOQ,MAAO,WAAY;AAIhC,4BAAIA,OAAMN,gBAAgBpE,OAAM;AAKhC0E,wBAAAA,KAAIJ,YAAYI,KAAI1E,OAAO;;;;;;;;;;;0BAWvB2E,cAAc,SAAA,aAAUrE,OAAOzb,QAAQ;AAEnC,gCAAI8e,SAAS,KAAKa;AAClB,gCAAIP,YAAYN,OAAOM;AAGvBW,qCAAStgB,KAAK,MAAMgc,OAAOzb,QAAQof,SAAS;AAC5CN,mCAAO1C,aAAaX,OAAOzb,MAAM;AAGjC,iCAAKggB,aAAavE,MAAM/f,MAAMsE,QAAQA,SAASof,SAAS;0BAC5D;wBACJ,CAAC;AAKDS,wBAAAA,KAAIH,YAAYG,KAAI1E,OAAO;;;;;;;;;;;0BAWvB2E,cAAc,SAAA,aAAUrE,OAAOzb,QAAQ;AAEnC,gCAAI8e,SAAS,KAAKa;AAClB,gCAAIP,YAAYN,OAAOM;AAGvB,gCAAIa,YAAYxE,MAAM/f,MAAMsE,QAAQA,SAASof,SAAS;AAGtDN,mCAAOvC,aAAad,OAAOzb,MAAM;AACjC+f,qCAAStgB,KAAK,MAAMgc,OAAOzb,QAAQof,SAAS;AAG5C,iCAAKY,aAAaC;0BACtB;wBACJ,CAAC;AAED,iCAASF,SAAStE,OAAOzb,QAAQof,WAAW;AACxC,8BAAIc;AAGJ,8BAAIV,KAAK,KAAKI;AAGd,8BAAIJ,IAAI;AACJU,oCAAQV;AAGR,iCAAKI,MAAMnmB;0BACf,OAAO;AACHymB,oCAAQ,KAAKF;0BACjB;AAGA,mCAASrmB,IAAI,GAAGA,IAAIylB,WAAWzlB,KAAK;AAChC8hB,kCAAMzb,SAASrG,CAAC,KAAKumB,MAAMvmB,CAAC;0BAChC;wBACJ;AAEA,+BAAOkmB;sBACX,EAAC;AAKD,0BAAIM,QAAQ9L,EAAE+L,MAAM,CAAC;AAKrB,0BAAIC,QAAQF,MAAME,QAAQ;;;;;;;;;;;;;wBAatBD,KAAK,SAAAA,KAAU3f,OAAM2e,WAAW;AAE5B,8BAAIkB,iBAAiBlB,YAAY;AAGjC,8BAAImB,gBAAgBD,iBAAiB7f,MAAKkb,WAAW2E;AAGrD,8BAAIE,cAAeD,iBAAiB,KAAOA,iBAAiB,KAAOA,iBAAiB,IAAKA;AAGzF,8BAAIE,eAAe,CAAA;AACnB,mCAAS9mB,IAAI,GAAGA,IAAI4mB,eAAe5mB,KAAK,GAAG;AACvC8mB,yCAAa/mB,KAAK8mB,WAAW;0BACjC;AACA,8BAAIE,WAAUvD,UAAUS,OAAO6C,cAAcF,aAAa;AAG1D9f,0BAAAA,MAAKiF,OAAOgb,QAAO;wBACvB;;;;;;;;;;;;wBAaAC,OAAO,SAAA,MAAUlgB,OAAM;AAEnB,8BAAI8f,gBAAgB9f,MAAKgb,MAAOhb,MAAKkb,WAAW,MAAO,CAAC,IAAI;AAG5Dlb,0BAAAA,MAAKkb,YAAY4E;wBACrB;sBACJ;AAOA,0BAAI1G,cAAcF,MAAME,cAAcqD,OAAO/B,OAAO;;;;;;;wBAOhDuC,KAAKR,OAAOQ,IAAIvC,OAAO;0BACnBmE,MAAMO;0BACNa,SAASL;wBACb,CAAC;wBAEDlC,OAAO,SAAA,QAAY;AACf,8BAAIyC;AAGJ1D,iCAAOiB,MAAM1e,KAAK,IAAI;AAGtB,8BAAIie,MAAM,KAAKA;AACf,8BAAI8B,KAAK9B,IAAI8B;AACb,8BAAIF,OAAO5B,IAAI4B;AAGf,8BAAI,KAAKpB,cAAc,KAAKL,iBAAiB;AACzC+C,0CAActB,KAAK3B;0BACvB,OAA0D;AACtDiD,0CAActB,KAAKxB;AAEnB,iCAAK+C,iBAAiB;0BAC1B;AAEA,8BAAI,KAAKC,SAAS,KAAKA,MAAMC,aAAaH,aAAa;AACnD,iCAAKE,MAAM9C,KAAK,MAAMwB,MAAMA,GAAG/D,KAAK;0BACxC,OAAO;AACH,iCAAKqF,QAAQF,YAAYnhB,KAAK6f,MAAM,MAAME,MAAMA,GAAG/D,KAAK;AACxD,iCAAKqF,MAAMC,YAAYH;0BAC3B;wBACJ;wBAEAI,iBAAiB,SAAA,gBAAUvF,OAAOzb,QAAQ;AACtC,+BAAK8gB,MAAMhB,aAAarE,OAAOzb,MAAM;wBACzC;wBAEAye,aAAa,SAAA,cAAY;AACrB,8BAAIU;AAGJ,8BAAIuB,WAAU,KAAKhD,IAAIgD;AAGvB,8BAAI,KAAKxC,cAAc,KAAKL,iBAAiB;AAEzC6C,4BAAAA,SAAQN,IAAI,KAAKa,OAAO,KAAK7B,SAAS;AAGtCD,mDAAuB,KAAKb,SAAS,IAAS;0BAClD,OAA0D;AAEtDa,mDAAuB,KAAKb,SAAS,IAAS;AAG9CoC,4BAAAA,SAAQC,MAAMxB,oBAAoB;0BACtC;AAEA,iCAAOA;wBACX;wBAEAC,WAAW,MAAI;sBACnB,CAAC;AAeD,0BAAI8B,eAAevH,MAAMuH,eAAexR,KAAKyL,OAAO;;;;;;;;;;;;;;;;;;;;wBAoBhD6C,MAAM,SAAAA,QAAUmD,cAAc;AAC1B,+BAAKC,MAAMD,YAAY;wBAC3B;;;;;;;;;;;;;;;;wBAiBA9lB,UAAU,SAAA,SAAUgmB,WAAW;AAC3B,kCAAQA,aAAa,KAAKA,WAAWC,UAAU,IAAI;wBACvD;sBACJ,CAAC;AAKD,0BAAIC,WAAWlN,EAAEmN,SAAS,CAAC;AAK3B,0BAAIC,mBAAmBF,SAASG,UAAU;;;;;;;;;;;;;;wBActCJ,WAAW,SAAAA,WAAUH,cAAc;AAC/B,8BAAIQ;AAGJ,8BAAI1C,aAAakC,aAAalC;AAC9B,8BAAI2C,OAAOT,aAAaS;AAGxB,8BAAIA,MAAM;AACND,wCAAYxE,UAAUS,OAAO,CAAC,YAAY,UAAU,CAAC,EAAElY,OAAOkc,IAAI,EAAElc,OAAOuZ,UAAU;0BACzF,OAAO;AACH0C,wCAAY1C;0BAChB;AAEA,iCAAO0C,UAAUtmB,SAASmiB,MAAM;wBACpC;;;;;;;;;;;;;;wBAeAqE,OAAO,SAAAA,OAAUC,YAAY;AACzB,8BAAIF;AAGJ,8BAAI3C,aAAazB,OAAOqE,MAAMC,UAAU;AAGxC,8BAAIC,kBAAkB9C,WAAWxD;AAGjC,8BAAIsG,gBAAgB,CAAC,KAAK,cAAcA,gBAAgB,CAAC,KAAK,YAAY;AAEtEH,mCAAOzE,UAAUS,OAAOmE,gBAAgBrmB,MAAM,GAAG,CAAC,CAAC;AAGnDqmB,4CAAgBC,OAAO,GAAG,CAAC;AAC3B/C,uCAAWtD,YAAY;0BAC3B;AAEA,iCAAOuF,aAAatD,OAAO;4BAAEqB;4BAAwB2C;0BAAW,CAAC;wBACrE;sBACJ;AAKA,0BAAI/C,qBAAqBlF,MAAMkF,qBAAqBnP,KAAKyL,OAAO;;;;;;wBAM5DuC,KAAKhO,KAAKyL,OAAO;0BACbqG,QAAQC;wBACZ,CAAC;;;;;;;;;;;;;;;;;;;wBAoBD1C,SAAS,SAAA,QAAUD,QAAQlP,SAAS5S,KAAK0gB,KAAK;AAE1CA,gCAAM,KAAKA,IAAIvC,OAAOuC,GAAG;AAGzB,8BAAIuE,YAAYnD,OAAOnB,gBAAgB3gB,KAAK0gB,GAAG;AAC/C,8BAAIuB,aAAagD,UAAU1D,SAAS3O,OAAO;AAG3C,8BAAIsS,YAAYD,UAAUvE;AAG1B,iCAAOwD,aAAatD,OAAO;4BACvBqB;4BACAjiB;4BACAwiB,IAAI0C,UAAU1C;4BACd2C,WAAWrD;4BACXQ,MAAM4C,UAAU5C;4BAChBoB,SAASwB,UAAUxB;4BACnBtB,WAAWN,OAAOM;4BAClBiC,WAAW3D,IAAI8D;0BACnB,CAAC;wBACL;;;;;;;;;;;;;;;;;;wBAmBAxC,SAAS,SAAA,QAAUF,QAAQG,YAAYjiB,KAAK0gB,KAAK;AAE7CA,gCAAM,KAAKA,IAAIvC,OAAOuC,GAAG;AAGzBuB,uCAAa,KAAKmD,OAAOnD,YAAYvB,IAAI8D,MAAM;AAG/C,8BAAIa,YAAYvD,OAAOhB,gBAAgB9gB,KAAK0gB,GAAG,EAAEa,SAASU,WAAWA,UAAU;AAE/E,iCAAOoD;wBACX;;;;;;;;;;;;;;;;wBAiBAD,QAAQ,SAAA,OAAUnD,YAAYuC,SAAQ;AAClC,8BAAI,OAAOvC,cAAc,UAAU;AAC/B,mCAAOuC,QAAOK,MAAM5C,YAAY,IAAI;0BACxC,OAAO;AACH,mCAAOA;0BACX;wBACJ;sBACJ,CAAC;AAKD,0BAAIqD,QAAQjO,EAAEkO,MAAM,CAAC;AAKrB,0BAAIC,aAAaF,MAAMZ,UAAU;;;;;;;;;;;;;;;;;;wBAkB7Be,SAAS,SAAAA,SAAUC,UAAUhH,SAASgD,QAAQkD,MAAM;AAEhD,8BAAI,CAACA,MAAM;AACPA,mCAAOzE,UAAUwF,OAAO,KAAG,CAAC;0BAChC;AAGA,8BAAI3lB,MAAMygB,OAAOG,OAAO;4BAAElC,SAASA,UAAUgD;0BAAO,CAAC,EAAEkE,QAAQF,UAAUd,IAAI;AAG7E,8BAAIpC,KAAKrC,UAAUS,OAAO5gB,IAAIye,MAAM/f,MAAMggB,OAAO,GAAGgD,SAAS,CAAC;AAC9D1hB,8BAAI2e,WAAWD,UAAU;AAGzB,iCAAOwF,aAAatD,OAAO;4BAAE5gB;4BAAUwiB;4BAAQoC;0BAAW,CAAC;wBAC/D;sBACJ;AAMA,0BAAIhD,sBAAsBjF,MAAMiF,sBAAsBC,mBAAmB1D,OAAO;;;;;;wBAM5EuC,KAAKmB,mBAAmBnB,IAAIvC,OAAO;0BAC/BoH,KAAKC;wBACT,CAAC;;;;;;;;;;;;;;;;;;wBAmBDzD,SAAS,SAAA,QAAUD,QAAQlP,SAAS8S,UAAUhF,KAAK;AAE/CA,gCAAM,KAAKA,IAAIvC,OAAOuC,GAAG;AAGzB,8BAAImF,gBAAgBnF,IAAI6E,IAAIE,QAAQC,UAAU5D,OAAOpD,SAASoD,OAAOJ,MAAM;AAG3EhB,8BAAI8B,KAAKqD,cAAcrD;AAGvB,8BAAIP,aAAaJ,mBAAmBE,QAAQtf,KAAK,MAAMqf,QAAQlP,SAASiT,cAAc7lB,KAAK0gB,GAAG;AAG9FuB,qCAAWmC,MAAMyB,aAAa;AAE9B,iCAAO5D;wBACX;;;;;;;;;;;;;;;;;;wBAmBAD,SAAS,SAAA,QAAUF,QAAQG,YAAYyD,UAAUhF,KAAK;AAElDA,gCAAM,KAAKA,IAAIvC,OAAOuC,GAAG;AAGzBuB,uCAAa,KAAKmD,OAAOnD,YAAYvB,IAAI8D,MAAM;AAG/C,8BAAIqB,gBAAgBnF,IAAI6E,IAAIE,QAAQC,UAAU5D,OAAOpD,SAASoD,OAAOJ,QAAQO,WAAW2C,IAAI;AAG5FlE,8BAAI8B,KAAKqD,cAAcrD;AAGvB,8BAAI6C,YAAYxD,mBAAmBG,QAAQvf,KAAK,MAAMqf,QAAQG,YAAY4D,cAAc7lB,KAAK0gB,GAAG;AAEhG,iCAAO2E;wBACX;sBACJ,CAAC;oBACL,EAAC;kBAGF,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACz3BD;AAAE,mBAAA,SAAU9I,MAAMC,SAAS;AAC1B,wBAAI,MAA6B;AAEhCvkB,sBAAAA,QAAOyC,UAAUA,WAAU8hB,QAAO;oBACnC,OACK;oBAAA;kBAQN,GAAC,QAAO,WAAY;AAOnB,wBAAIE,WAAWA,YAAa,SAAUpU,OAAM7L,YAAW;AAEnD,0BAAIqpB;AAGJ,0BAAI,OAAOC,WAAW,eAAeA,OAAOD,QAAQ;AAChDA,iCAASC,OAAOD;sBACpB;AAGA,0BAAI,OAAOltB,SAAS,eAAeA,KAAKktB,QAAQ;AAC5CA,iCAASltB,KAAKktB;sBAClB;AAGA,0BAAI,OAAOE,eAAe,eAAeA,WAAWF,QAAQ;AACxDA,iCAASE,WAAWF;sBACxB;AAGA,0BAAI,CAACA,UAAU,OAAOC,WAAW,eAAeA,OAAOE,UAAU;AAC7DH,iCAASC,OAAOE;sBACpB;AAGA,0BAAI,CAACH,UAAU,OAAOpR,qBAAAA,MAAW,eAAeA,qBAAAA,EAAOoR,QAAQ;AAC3DA,iCAASpR,qBAAAA,EAAOoR;sBACpB;AAGA,0BAAI,CAACA,UAAU,MAA+B;AAC1C,4BAAI;AACAA,mCAAS7qB,qBAAQ,IAAQ;wBAC7B,SAASirB,KAAK;wBAAC;sBACnB;AAOA,0BAAIC,wBAAwB,SAAxBA,yBAAoC;AACpC,4BAAIL,QAAQ;AAER,8BAAI,OAAOA,OAAOM,oBAAoB,YAAY;AAC9C,gCAAI;AACA,qCAAON,OAAOM,gBAAgB,IAAI1P,YAAY,CAAC,CAAC,EAAE,CAAC;4BACvD,SAASwP,KAAK;4BAAC;0BACnB;AAGA,8BAAI,OAAOJ,OAAOO,gBAAgB,YAAY;AAC1C,gCAAI;AACA,qCAAOP,OAAOO,YAAY,CAAC,EAAElX,YAAW;4BAC5C,SAAS+W,KAAK;4BAAC;0BACnB;wBACJ;AAEA,8BAAM,IAAIllB,MAAM,qEAAqE;sBACzF;AAMA,0BAAI4f,SAASxlB,OAAOwlB,UAAW,WAAY;AACvC,iCAAS0F,IAAI;wBAAC;AAEd,+BAAO,SAAUzuB,KAAK;AAClB,8BAAI0uB;AAEJD,4BAAEnmB,YAAYtI;AAEd0uB,oCAAU,IAAID,EAAC;AAEfA,4BAAEnmB,YAAY;AAEd,iCAAOomB;wBACX;sBACJ,EAAC;AAKD,0BAAIlP,IAAI,CAAC;AAKT,0BAAIsF,QAAQtF,EAAEuF,MAAM,CAAC;AAKrB,0BAAIlK,OAAOiK,MAAMjK,OAAQ,WAAY;AAGjC,+BAAO;;;;;;;;;;;;;;;;;;;0BAmBHyL,QAAQ,SAAAA,QAAUqI,WAAW;AAEzB,gCAAID,UAAU3F,OAAO,IAAI;AAGzB,gCAAI4F,WAAW;AACXD,sCAAQnC,MAAMoC,SAAS;4BAC3B;AAGA,gCAAI,CAACD,QAAQpsB,eAAe,MAAM,KAAK,KAAK6mB,SAASuF,QAAQvF,MAAM;AAC/DuF,sCAAQvF,OAAO,WAAY;AACvBuF,wCAAQE,OAAOzF,KAAKjX,MAAM,MAAMvJ,SAAS;8BAC7C;4BACJ;AAGA+lB,oCAAQvF,KAAK7gB,YAAYomB;AAGzBA,oCAAQE,SAAS;AAEjB,mCAAOF;0BACX;;;;;;;;;;;;;0BAcA3F,QAAQ,SAAAA,UAAY;AAChB,gCAAI8F,WAAW,KAAKvI,OAAM;AAC1BuI,qCAAS1F,KAAKjX,MAAM2c,UAAUlmB,SAAS;AAEvC,mCAAOkmB;0BACX;;;;;;;;;;;;;0BAcA1F,MAAM,SAAAA,UAAY;0BAClB;;;;;;;;;;;;0BAaAoD,OAAO,SAAA,MAAUuC,YAAY;AACzB,qCAASC,gBAAgBD,YAAY;AACjC,kCAAIA,WAAWxsB,eAAeysB,YAAY,GAAG;AACzC,qCAAKA,YAAY,IAAID,WAAWC,YAAY;8BAChD;4BACJ;AAGA,gCAAID,WAAWxsB,eAAe,UAAU,GAAG;AACvC,mCAAKkE,WAAWsoB,WAAWtoB;4BAC/B;0BACJ;;;;;;;;;;0BAWAwoB,OAAO,SAAA,QAAY;AACf,mCAAO,KAAK7F,KAAK7gB,UAAUge,OAAO,IAAI;0BAC1C;wBACJ;sBACJ,EAAC;AAQD,0BAAIgC,YAAYxD,MAAMwD,YAAYzN,KAAKyL,OAAO;;;;;;;;;;;;;wBAa1C6C,MAAM,SAAAA,QAAUvC,OAAOE,UAAU;AAC7BF,kCAAQ,KAAKA,QAAQA,SAAS,CAAA;AAE9B,8BAAIE,YAAYliB,YAAW;AACvB,iCAAKkiB,WAAWA;0BACpB,OAAO;AACH,iCAAKA,WAAWF,MAAMhjB,SAAS;0BACnC;wBACJ;;;;;;;;;;;;;;wBAeA4C,UAAU,SAAA,SAAUyoB,SAAS;AACzB,kCAAQA,WAAWC,KAAKzC,UAAU,IAAI;wBAC1C;;;;;;;;;;;;wBAaA5b,QAAQ,SAAA,OAAUic,WAAW;AAEzB,8BAAIqC,YAAY,KAAKvI;AACrB,8BAAIwI,YAAYtC,UAAUlG;AAC1B,8BAAIyI,eAAe,KAAKvI;AACxB,8BAAIwI,eAAexC,UAAUhG;AAG7B,+BAAKyI,MAAK;AAGV,8BAAIF,eAAe,GAAG;AAElB,qCAASvqB,IAAI,GAAGA,IAAIwqB,cAAcxqB,KAAK;AACnC,kCAAI0qB,WAAYJ,UAAUtqB,MAAM,CAAC,MAAO,KAAMA,IAAI,IAAK,IAAM;AAC7DqqB,wCAAWE,eAAevqB,MAAO,CAAC,KAAK0qB,YAAa,MAAOH,eAAevqB,KAAK,IAAK;4BACxF;0BACJ,OAAO;AAEH,qCAASyO,IAAI,GAAGA,IAAI+b,cAAc/b,KAAK,GAAG;AACtC4b,wCAAWE,eAAe9b,MAAO,CAAC,IAAI6b,UAAU7b,MAAM,CAAC;4BAC3D;0BACJ;AACA,+BAAKuT,YAAYwI;AAGjB,iCAAO;wBACX;;;;;;;;wBASAC,OAAO,SAAA,QAAY;AAEf,8BAAI3I,QAAQ,KAAKA;AACjB,8BAAIE,WAAW,KAAKA;AAGpBF,gCAAME,aAAa,CAAC,KAAK,cAAe,KAAMA,WAAW,IAAK;AAC9DF,gCAAMhjB,SAAS6M,MAAKgf,KAAK3I,WAAW,CAAC;wBACzC;;;;;;;;;;wBAWAkI,OAAO,SAAA,QAAY;AACf,8BAAIA,SAAQnU,KAAKmU,MAAMpkB,KAAK,IAAI;AAChCokB,0BAAAA,OAAMpI,QAAQ,KAAKA,MAAM/f,MAAM,CAAC;AAEhC,iCAAOmoB;wBACX;;;;;;;;;;;;;;wBAeAlB,QAAQ,SAAA,OAAU4B,QAAQ;AACtB,8BAAI9I,QAAQ,CAAA;AAEZ,mCAAS9hB,IAAI,GAAGA,IAAI4qB,QAAQ5qB,KAAK,GAAG;AAChC8hB,kCAAM/hB,KAAKypB,sBAAqB,CAAE;0BACtC;AAEA,iCAAO,IAAIhG,UAAUa,KAAKvC,OAAO8I,MAAM;wBAC3C;sBACJ,CAAC;AAKD,0BAAIlH,QAAQhJ,EAAEiJ,MAAM,CAAC;AAKrB,0BAAIyG,MAAM1G,MAAM0G,MAAM;;;;;;;;;;;;;;wBAclBzC,WAAW,SAAAA,WAAUK,WAAW;AAE5B,8BAAIlG,QAAQkG,UAAUlG;AACtB,8BAAIE,WAAWgG,UAAUhG;AAGzB,8BAAI6I,WAAW,CAAA;AACf,mCAAS7qB,IAAI,GAAGA,IAAIgiB,UAAUhiB,KAAK;AAC/B,gCAAI8qB,OAAQhJ,MAAM9hB,MAAM,CAAC,MAAO,KAAMA,IAAI,IAAK,IAAM;AACrD6qB,qCAAS9qB,MAAM+qB,SAAS,GAAGppB,SAAS,EAAE,CAAC;AACvCmpB,qCAAS9qB,MAAM+qB,OAAO,IAAMppB,SAAS,EAAE,CAAC;0BAC5C;AAEA,iCAAOmpB,SAASE,KAAK,EAAE;wBAC3B;;;;;;;;;;;;;;wBAeA7C,OAAO,SAAAA,OAAU8C,QAAQ;AAErB,8BAAIC,eAAeD,OAAOlsB;AAG1B,8BAAIgjB,QAAQ,CAAA;AACZ,mCAAS9hB,IAAI,GAAGA,IAAIirB,cAAcjrB,KAAK,GAAG;AACtC8hB,kCAAM9hB,MAAM,CAAC,KAAK+O,SAASic,OAAOhc,OAAOhP,GAAG,CAAC,GAAG,EAAE,KAAM,KAAMA,IAAI,IAAK;0BAC3E;AAEA,iCAAO,IAAIwjB,UAAUa,KAAKvC,OAAOmJ,eAAe,CAAC;wBACrD;sBACJ;AAKA,0BAAIC,SAASxH,MAAMwH,SAAS;;;;;;;;;;;;;;wBAcxBvD,WAAW,SAAAA,WAAUK,WAAW;AAE5B,8BAAIlG,QAAQkG,UAAUlG;AACtB,8BAAIE,WAAWgG,UAAUhG;AAGzB,8BAAImJ,cAAc,CAAA;AAClB,mCAASnrB,IAAI,GAAGA,IAAIgiB,UAAUhiB,KAAK;AAC/B,gCAAI8qB,OAAQhJ,MAAM9hB,MAAM,CAAC,MAAO,KAAMA,IAAI,IAAK,IAAM;AACrDmrB,wCAAYprB,KAAK8L,OAAOyE,aAAawa,IAAI,CAAC;0BAC9C;AAEA,iCAAOK,YAAYJ,KAAK,EAAE;wBAC9B;;;;;;;;;;;;;;wBAeA7C,OAAO,SAAAA,OAAUkD,WAAW;AAExB,8BAAIC,kBAAkBD,UAAUtsB;AAGhC,8BAAIgjB,QAAQ,CAAA;AACZ,mCAAS9hB,IAAI,GAAGA,IAAIqrB,iBAAiBrrB,KAAK;AACtC8hB,kCAAM9hB,MAAM,CAAC,MAAMorB,UAAU1V,WAAW1V,CAAC,IAAI,QAAU,KAAMA,IAAI,IAAK;0BAC1E;AAEA,iCAAO,IAAIwjB,UAAUa,KAAKvC,OAAOuJ,eAAe;wBACpD;sBACJ;AAKA,0BAAIzH,OAAOF,MAAME,OAAO;;;;;;;;;;;;;;wBAcpB+D,WAAW,SAAAA,WAAUK,WAAW;AAC5B,8BAAI;AACA,mCAAOsD,mBAAmBC,OAAOL,OAAOvD,UAAUK,SAAS,CAAC,CAAC;0BACjE,SAAStsB,IAAG;AACR,kCAAM,IAAI2I,MAAM,sBAAsB;0BAC1C;wBACJ;;;;;;;;;;;;;;wBAeA6jB,OAAO,SAAAA,OAAUsD,SAAS;AACtB,iCAAON,OAAOhD,MAAMuD,SAASC,mBAAmBF,OAAO,CAAC,CAAC;wBAC7D;sBACJ;AASA,0BAAI/H,yBAAyBzD,MAAMyD,yBAAyB1N,KAAKyL,OAAO;;;;;;;;wBAQpEgD,OAAO,SAAA,QAAY;AAEf,+BAAK8C,QAAQ,IAAI9D,UAAUa,KAAI;AAC/B,+BAAKsH,cAAc;wBACvB;;;;;;;;;;;wBAYAjH,SAAS,SAAA,QAAU5d,OAAM;AAErB,8BAAI,OAAOA,SAAQ,UAAU;AACzBA,4BAAAA,QAAO8c,KAAKsE,MAAMphB,KAAI;0BAC1B;AAGA,+BAAKwgB,MAAMvb,OAAOjF,KAAI;AACtB,+BAAK6kB,eAAe7kB,MAAKkb;wBAC7B;;;;;;;;;;;;;;;wBAgBA2C,UAAU,SAAA,SAAUiH,SAAS;AACzB,8BAAIC;AAGJ,8BAAI/kB,QAAO,KAAKwgB;AAChB,8BAAIwE,YAAYhlB,MAAKgb;AACrB,8BAAIiK,eAAejlB,MAAKkb;AACxB,8BAAIyD,YAAY,KAAKA;AACrB,8BAAIkB,iBAAiBlB,YAAY;AAGjC,8BAAIuG,eAAeD,eAAepF;AAClC,8BAAIiF,SAAS;AAETI,2CAAergB,MAAKgf,KAAKqB,YAAY;0BACzC,OAAO;AAGHA,2CAAergB,MAAK6B,KAAKwe,eAAe,KAAK,KAAK9E,gBAAgB,CAAC;0BACvE;AAGA,8BAAI+E,cAAcD,eAAevG;AAGjC,8BAAIyG,cAAcvgB,MAAKC,IAAIqgB,cAAc,GAAGF,YAAY;AAGxD,8BAAIE,aAAa;AACb,qCAAS5lB,SAAS,GAAGA,SAAS4lB,aAAa5lB,UAAUof,WAAW;AAE5D,mCAAK4B,gBAAgByE,WAAWzlB,MAAM;4BAC1C;AAGAwlB,6CAAiBC,UAAUzD,OAAO,GAAG4D,WAAW;AAChDnlB,4BAAAA,MAAKkb,YAAYkK;0BACrB;AAGA,iCAAO,IAAI1I,UAAUa,KAAKwH,gBAAgBK,WAAW;wBACzD;;;;;;;;;;wBAWAhC,OAAO,SAAA,QAAY;AACf,8BAAIA,SAAQnU,KAAKmU,MAAMpkB,KAAK,IAAI;AAChCokB,0BAAAA,OAAM5C,QAAQ,KAAKA,MAAM4C,MAAK;AAE9B,iCAAOA;wBACX;wBAEAhD,gBAAgB;sBACpB,CAAC;AAOD,0BAAIiF,SAASnM,MAAMmM,SAAS1I,uBAAuBjC,OAAO;;;;wBAItDuC,KAAKhO,KAAKyL,OAAM;;;;;;;;;;wBAWhB6C,MAAM,SAAAA,QAAUN,KAAK;AAEjB,+BAAKA,MAAM,KAAKA,IAAIvC,OAAOuC,GAAG;AAG9B,+BAAKS,MAAK;wBACd;;;;;;;;wBASAA,OAAO,SAAA,QAAY;AAEff,iDAAuBe,MAAM1e,KAAK,IAAI;AAGtC,+BAAK2b,SAAQ;wBACjB;;;;;;;;;;;;;wBAcA2K,QAAQ,SAAA,OAAUC,eAAe;AAE7B,+BAAK3H,QAAQ2H,aAAa;AAG1B,+BAAK1H,SAAQ;AAGb,iCAAO;wBACX;;;;;;;;;;;;;;;wBAgBAC,UAAU,SAAA,SAAUyH,eAAe;AAE/B,8BAAIA,eAAe;AACf,iCAAK3H,QAAQ2H,aAAa;0BAC9B;AAGA,8BAAIC,QAAO,KAAKxH,YAAW;AAE3B,iCAAOwH;wBACX;wBAEA7G,WAAW,MAAI;;;;;;;;;;;;;;wBAefnC,eAAe,SAAA,cAAUiJ,QAAQ;AAC7B,iCAAO,SAAUtW,SAAS8N,KAAK;AAC3B,mCAAO,IAAIwI,OAAOlI,KAAKN,GAAG,EAAEa,SAAS3O,OAAO;0BAChD;wBACJ;;;;;;;;;;;;;;wBAeAuW,mBAAmB,SAAA,kBAAUD,QAAQ;AACjC,iCAAO,SAAUtW,SAAS5S,KAAK;AAC3B,mCAAO,IAAI8c,OAAOsM,KAAKpI,KAAKkI,QAAQlpB,GAAG,EAAEuhB,SAAS3O,OAAO;0BAC7D;wBACJ;sBACJ,CAAC;AAKD,0BAAIkK,SAASzF,EAAE0F,OAAO,CAAC;AAEvB,6BAAO1F;oBACX,EAAE/O,IAAI;AAGN,2BAAOoU;kBAER,CAAC;;;;;;;;;ACtyBD;AAAE,mBAAA,SAAUH,MAAMC,SAAS;AAC1B,wBAAI,MAA6B;AAEhCvkB,sBAAAA,QAAOyC,UAAUA,WAAU8hB,QAAQvhB,qBAAQ,GAAQ,CAAC;oBACrD,OACK;oBAAA;kBAQN,GAAC,QAAO,SAAUyhB,UAAU;AAE1B,qBAAA,WAAY;AAET,0BAAIrF,IAAIqF;AACR,0BAAIC,QAAQtF,EAAEuF;AACd,0BAAIuD,YAAYxD,MAAMwD;AACtB,0BAAIE,QAAQhJ,EAAEiJ;AAKd,0BAAIE,SAASH,MAAMG,SAAS;;;;;;;;;;;;;;wBAcxB8D,WAAW,SAAAA,WAAUK,WAAW;AAE5B,8BAAIlG,QAAQkG,UAAUlG;AACtB,8BAAIE,WAAWgG,UAAUhG;AACzB,8BAAIzkB,OAAM,KAAKmvB;AAGf1E,oCAAUyC,MAAK;AAGf,8BAAIkC,cAAc,CAAA;AAClB,mCAAS3sB,IAAI,GAAGA,IAAIgiB,UAAUhiB,KAAK,GAAG;AAClC,gCAAI4sB,QAAS9K,MAAM9hB,MAAM,CAAC,MAAa,KAAMA,IAAI,IAAK,IAAY;AAClE,gCAAI6sB,QAAS/K,MAAO9hB,IAAI,MAAO,CAAC,MAAO,MAAOA,IAAI,KAAK,IAAK,IAAM;AAClE,gCAAI8sB,QAAShL,MAAO9hB,IAAI,MAAO,CAAC,MAAO,MAAOA,IAAI,KAAK,IAAK,IAAM;AAElE,gCAAI+sB,UAAWH,SAAS,KAAOC,SAAS,IAAKC;AAE7C,qCAASre,IAAI,GAAIA,IAAI,KAAOzO,IAAIyO,IAAI,OAAOuT,UAAWvT,KAAK;AACvDke,0CAAY5sB,KAAKxC,KAAIyvB,OAAQD,YAAa,KAAK,IAAIte,KAAO,EAAI,CAAC;4BACnE;0BACJ;AAGA,8BAAIwe,cAAc1vB,KAAIyvB,OAAO,EAAE;AAC/B,8BAAIC,aAAa;AACb,mCAAON,YAAY7tB,SAAS,GAAG;AAC3B6tB,0CAAY5sB,KAAKktB,WAAW;4BAChC;0BACJ;AAEA,iCAAON,YAAY5B,KAAK,EAAE;wBAC9B;;;;;;;;;;;;;;wBAeA7C,OAAO,SAAAA,OAAUgF,WAAW;AAExB,8BAAIC,kBAAkBD,UAAUpuB;AAChC,8BAAIvB,OAAM,KAAKmvB;AACf,8BAAIU,aAAa,KAAKC;AAEtB,8BAAI,CAACD,YAAY;AACTA,yCAAa,KAAKC,cAAc,CAAA;AAChC,qCAAS5e,IAAI,GAAGA,IAAIlR,KAAIuB,QAAQ2P,KAAK;AACjC2e,yCAAW7vB,KAAImY,WAAWjH,CAAC,CAAC,IAAIA;4BACpC;0BACR;AAGA,8BAAIwe,cAAc1vB,KAAIyvB,OAAO,EAAE;AAC/B,8BAAIC,aAAa;AACb,gCAAIK,eAAeJ,UAAUpoB,QAAQmoB,WAAW;AAChD,gCAAIK,iBAAiB,IAAI;AACrBH,gDAAkBG;4BACtB;0BACJ;AAGA,iCAAOC,UAAUL,WAAWC,iBAAiBC,UAAU;wBAE3D;wBAEAV,MAAM;sBACV;AAEA,+BAASa,UAAUL,WAAWC,iBAAiBC,YAAY;AACzD,4BAAItL,QAAQ,CAAA;AACZ,4BAAI8I,SAAS;AACb,iCAAS5qB,IAAI,GAAGA,IAAImtB,iBAAiBntB,KAAK;AACtC,8BAAIA,IAAI,GAAG;AACP,gCAAIwtB,QAAQJ,WAAWF,UAAUxX,WAAW1V,IAAI,CAAC,CAAC,KAAOA,IAAI,IAAK;AAClE,gCAAIytB,QAAQL,WAAWF,UAAUxX,WAAW1V,CAAC,CAAC,MAAO,IAAKA,IAAI,IAAK;AACnE,gCAAI0tB,eAAeF,QAAQC;AAC3B3L,kCAAM8I,WAAW,CAAC,KAAK8C,gBAAiB,KAAM9C,SAAS,IAAK;AAC5DA;0BACJ;wBACJ;AACA,+BAAOpH,UAAUS,OAAOnC,OAAO8I,MAAM;sBACvC;oBACJ,GAAC;AAGD,2BAAO7K,SAAS4D,IAAIE;kBAErB,CAAC;;;;;;;;;ACvID;AAAE,mBAAA,SAAUjE,MAAMC,SAAS;AAC1B,wBAAI,MAA6B;AAEhCvkB,sBAAAA,QAAOyC,UAAUA,WAAU8hB,QAAQvhB,qBAAQ,GAAQ,CAAC;oBACrD,OACK;oBAAA;kBAQN,GAAC,QAAO,SAAUyhB,UAAU;AAE1B,qBAAA,WAAY;AAET,0BAAIrF,IAAIqF;AACR,0BAAIC,QAAQtF,EAAEuF;AACd,0BAAIuD,YAAYxD,MAAMwD;AACtB,0BAAIE,QAAQhJ,EAAEiJ;AAKd,0BAAIgK,YAAYjK,MAAMiK,YAAY;;;;;;;;;;;;;;;;wBAgB9BhG,WAAW,SAAAA,WAAUK,WAAW4F,SAAc;AAAA,8BAAdA,YAAO,QAAA;AAAPA,sCAAQ;0BAAI;AAExC,8BAAI9L,QAAQkG,UAAUlG;AACtB,8BAAIE,WAAWgG,UAAUhG;AACzB,8BAAIzkB,OAAMqwB,UAAU,KAAKC,YAAY,KAAKnB;AAG1C1E,oCAAUyC,MAAK;AAGf,8BAAIkC,cAAc,CAAA;AAClB,mCAAS3sB,IAAI,GAAGA,IAAIgiB,UAAUhiB,KAAK,GAAG;AAClC,gCAAI4sB,QAAS9K,MAAM9hB,MAAM,CAAC,MAAa,KAAMA,IAAI,IAAK,IAAY;AAClE,gCAAI6sB,QAAS/K,MAAO9hB,IAAI,MAAO,CAAC,MAAO,MAAOA,IAAI,KAAK,IAAK,IAAM;AAClE,gCAAI8sB,QAAShL,MAAO9hB,IAAI,MAAO,CAAC,MAAO,MAAOA,IAAI,KAAK,IAAK,IAAM;AAElE,gCAAI+sB,UAAWH,SAAS,KAAOC,SAAS,IAAKC;AAE7C,qCAASre,IAAI,GAAIA,IAAI,KAAOzO,IAAIyO,IAAI,OAAOuT,UAAWvT,KAAK;AACvDke,0CAAY5sB,KAAKxC,KAAIyvB,OAAQD,YAAa,KAAK,IAAIte,KAAO,EAAI,CAAC;4BACnE;0BACJ;AAGA,8BAAIwe,cAAc1vB,KAAIyvB,OAAO,EAAE;AAC/B,8BAAIC,aAAa;AACb,mCAAON,YAAY7tB,SAAS,GAAG;AAC3B6tB,0CAAY5sB,KAAKktB,WAAW;4BAChC;0BACJ;AAEA,iCAAON,YAAY5B,KAAK,EAAE;wBAC9B;;;;;;;;;;;;;;;;wBAiBA7C,OAAO,SAAAA,OAAUgF,WAAWU,SAAc;AAAA,8BAAdA,YAAO,QAAA;AAAPA,sCAAQ;0BAAI;AAEpC,8BAAIT,kBAAkBD,UAAUpuB;AAChC,8BAAIvB,OAAMqwB,UAAU,KAAKC,YAAY,KAAKnB;AAC1C,8BAAIU,aAAa,KAAKC;AAEtB,8BAAI,CAACD,YAAY;AACbA,yCAAa,KAAKC,cAAc,CAAA;AAChC,qCAAS5e,IAAI,GAAGA,IAAIlR,KAAIuB,QAAQ2P,KAAK;AACjC2e,yCAAW7vB,KAAImY,WAAWjH,CAAC,CAAC,IAAIA;4BACpC;0BACJ;AAGA,8BAAIwe,cAAc1vB,KAAIyvB,OAAO,EAAE;AAC/B,8BAAIC,aAAa;AACb,gCAAIK,eAAeJ,UAAUpoB,QAAQmoB,WAAW;AAChD,gCAAIK,iBAAiB,IAAI;AACrBH,gDAAkBG;4BACtB;0BACJ;AAGA,iCAAOC,UAAUL,WAAWC,iBAAiBC,UAAU;wBAE3D;wBAEAV,MAAM;wBACNmB,WAAW;sBACf;AAEA,+BAASN,UAAUL,WAAWC,iBAAiBC,YAAY;AACvD,4BAAItL,QAAQ,CAAA;AACZ,4BAAI8I,SAAS;AACb,iCAAS5qB,IAAI,GAAGA,IAAImtB,iBAAiBntB,KAAK;AACtC,8BAAIA,IAAI,GAAG;AACP,gCAAIwtB,QAAQJ,WAAWF,UAAUxX,WAAW1V,IAAI,CAAC,CAAC,KAAOA,IAAI,IAAK;AAClE,gCAAIytB,QAAQL,WAAWF,UAAUxX,WAAW1V,CAAC,CAAC,MAAO,IAAKA,IAAI,IAAK;AACnE,gCAAI0tB,eAAeF,QAAQC;AAC3B3L,kCAAM8I,WAAW,CAAC,KAAK8C,gBAAiB,KAAM9C,SAAS,IAAK;AAC5DA;0BACJ;wBACJ;AACA,+BAAOpH,UAAUS,OAAOnC,OAAO8I,MAAM;sBACzC;oBACJ,GAAC;AAED,2BAAO7K,SAAS4D,IAAIgK;kBAErB,CAAC;;;;;;;;;AC3ID;AAAE,mBAAA,SAAU/N,MAAMC,SAAS;AAC1B,wBAAI,MAA6B;AAEhCvkB,sBAAAA,QAAOyC,UAAUA,WAAU8hB,QAAQvhB,qBAAQ,GAAQ,CAAC;oBACrD,OACK;oBAAA;kBAQN,GAAC,QAAO,SAAUyhB,UAAU;AAE1B,qBAAA,WAAY;AAET,0BAAIrF,IAAIqF;AACR,0BAAIC,QAAQtF,EAAEuF;AACd,0BAAIuD,YAAYxD,MAAMwD;AACtB,0BAAIE,QAAQhJ,EAAEiJ;AAKd,0BAAImK,UAAUpK,MAAMqK,QAAQrK,MAAMoK,UAAU;;;;;;;;;;;;;;wBAcxCnG,WAAW,SAAAA,WAAUK,WAAW;AAE5B,8BAAIlG,QAAQkG,UAAUlG;AACtB,8BAAIE,WAAWgG,UAAUhG;AAGzB,8BAAIgM,aAAa,CAAA;AACjB,mCAAShuB,IAAI,GAAGA,IAAIgiB,UAAUhiB,KAAK,GAAG;AAClC,gCAAI6P,YAAaiS,MAAM9hB,MAAM,CAAC,MAAO,KAAMA,IAAI,IAAK,IAAM;AAC1DguB,uCAAWjuB,KAAK8L,OAAOyE,aAAaT,SAAS,CAAC;0BAClD;AAEA,iCAAOme,WAAWjD,KAAK,EAAE;wBAC7B;;;;;;;;;;;;;;wBAeA7C,OAAO,SAAAA,OAAU+F,UAAU;AAEvB,8BAAIC,iBAAiBD,SAASnvB;AAG9B,8BAAIgjB,QAAQ,CAAA;AACZ,mCAAS9hB,IAAI,GAAGA,IAAIkuB,gBAAgBluB,KAAK;AACrC8hB,kCAAM9hB,MAAM,CAAC,KAAKiuB,SAASvY,WAAW1V,CAAC,KAAM,KAAMA,IAAI,IAAK;0BAChE;AAEA,iCAAOwjB,UAAUS,OAAOnC,OAAOoM,iBAAiB,CAAC;wBACrD;sBACJ;AAKAxK,4BAAMyK,UAAU;;;;;;;;;;;;;;wBAcZxG,WAAW,SAAAA,WAAUK,WAAW;AAE5B,8BAAIlG,QAAQkG,UAAUlG;AACtB,8BAAIE,WAAWgG,UAAUhG;AAGzB,8BAAIgM,aAAa,CAAA;AACjB,mCAAShuB,IAAI,GAAGA,IAAIgiB,UAAUhiB,KAAK,GAAG;AAClC,gCAAI6P,YAAYue,WAAYtM,MAAM9hB,MAAM,CAAC,MAAO,KAAMA,IAAI,IAAK,IAAM,KAAM;AAC3EguB,uCAAWjuB,KAAK8L,OAAOyE,aAAaT,SAAS,CAAC;0BAClD;AAEA,iCAAOme,WAAWjD,KAAK,EAAE;wBAC7B;;;;;;;;;;;;;;wBAeA7C,OAAO,SAAAA,OAAU+F,UAAU;AAEvB,8BAAIC,iBAAiBD,SAASnvB;AAG9B,8BAAIgjB,QAAQ,CAAA;AACZ,mCAAS9hB,IAAI,GAAGA,IAAIkuB,gBAAgBluB,KAAK;AACrC8hB,kCAAM9hB,MAAM,CAAC,KAAKouB,WAAWH,SAASvY,WAAW1V,CAAC,KAAM,KAAMA,IAAI,IAAK,EAAG;0BAC9E;AAEA,iCAAOwjB,UAAUS,OAAOnC,OAAOoM,iBAAiB,CAAC;wBACrD;sBACJ;AAEA,+BAASE,WAAWC,MAAM;AACtB,+BAASA,QAAQ,IAAK,aAAgBA,SAAS,IAAK;sBACxD;oBACJ,GAAC;AAGD,2BAAOtO,SAAS4D,IAAIoK;kBAErB,CAAC;;;;;;;;;ACpJD;AAAE,mBAAA,SAAUnO,MAAMC,SAASC,OAAO;AACjC,wBAAI,MAA6B;AAEhCxkB,sBAAAA,QAAOyC,UAAUA,WAAU8hB,QAAQvhB,qBAAQ,GAAQ,GAAGA,qBAAQ,IAAQ,GAAGA,qBAAQ,IAAQ,CAAC;oBAC3F,OACK;oBAAA;kBAQN,GAAC,QAAO,SAAUyhB,UAAU;AAE1B,qBAAA,WAAY;AAET,0BAAIrF,IAAIqF;AACR,0BAAIC,QAAQtF,EAAEuF;AACd,0BAAIlK,OAAOiK,MAAMjK;AACjB,0BAAIyN,YAAYxD,MAAMwD;AACtB,0BAAIrD,SAASzF,EAAE0F;AACf,0BAAIkO,MAAMnO,OAAOmO;AAMjB,0BAAIxK,SAAS3D,OAAO2D,SAAS/N,KAAKyL,OAAO;;;;;;;;wBAQrCuC,KAAKhO,KAAKyL,OAAO;0BACbO,SAAS,MAAI;0BACbwK,QAAQ+B;0BACRC,YAAY;wBAChB,CAAC;;;;;;;;;;;;wBAaDlK,MAAM,SAAAA,QAAUN,KAAK;AACjB,+BAAKA,MAAM,KAAKA,IAAIvC,OAAOuC,GAAG;wBAClC;;;;;;;;;;;;;wBAcAkF,SAAS,SAAA,QAAUF,UAAUd,MAAM;AAC/B,8BAAI1B;AAGJ,8BAAIxC,MAAM,KAAKA;AAGf,8BAAIwI,SAASxI,IAAIwI,OAAOtI,OAAM;AAG9B,8BAAIuK,aAAahL,UAAUS,OAAM;AAGjC,8BAAIwK,kBAAkBD,WAAW1M;AACjC,8BAAIC,UAAUgC,IAAIhC;AAClB,8BAAIwM,aAAaxK,IAAIwK;AAGrB,iCAAOE,gBAAgB3vB,SAASijB,SAAS;AACrC,gCAAIwE,OAAO;AACPgG,qCAAOH,OAAO7F,KAAK;4BACvB;AACAA,oCAAQgG,OAAOH,OAAOrD,QAAQ,EAAEnE,SAASqD,IAAI;AAC7CsE,mCAAO/H,MAAK;AAGZ,qCAASxkB,IAAI,GAAGA,IAAIuuB,YAAYvuB,KAAK;AACjCumB,sCAAQgG,OAAO3H,SAAS2B,KAAK;AAC7BgG,qCAAO/H,MAAK;4BAChB;AAEAgK,uCAAWziB,OAAOwa,KAAK;0BAC3B;AACAiI,qCAAWxM,WAAWD,UAAU;AAEhC,iCAAOyM;wBACX;sBACJ,CAAC;AAmBD9T,wBAAEoJ,SAAS,SAAUiF,UAAUd,MAAMlE,KAAK;AACtC,+BAAOD,OAAOG,OAAOF,GAAG,EAAEkF,QAAQF,UAAUd,IAAI;sBACpD;oBACJ,GAAC;AAGD,2BAAOlI,SAAS+D;kBAEjB,CAAC;;;;;;;;;;ACrID;AAAE,mBAAA,SAAUlE,MAAMC,SAASC,OAAO;AACjC,wBAAI,MAA6B;AAEhCxkB,sBAAAA,QAAOyC,UAAUA,WAAU8hB,QAAQvhB,qBAAQ,GAAQ,GAAGA,qBAAQ,IAAe,CAAC;oBAC/E,OACK;oBAAA;kBAQN,GAAC,QAAO,SAAUyhB,UAAU;AAE1B,qBAAA,SAAUjgB,YAAW;AAElB,0BAAI4a,IAAIqF;AACR,0BAAIC,QAAQtF,EAAEuF;AACd,0BAAIsH,eAAevH,MAAMuH;AACzB,0BAAI7D,QAAQhJ,EAAEiJ;AACd,0BAAIyG,MAAM1G,MAAM0G;AAChB,0BAAIxC,WAAWlN,EAAEmN;AAEjB,0BAAI6G,eAAe9G,SAASwC,MAAM;;;;;;;;;;;;;;wBAc9BzC,WAAW,SAAAA,WAAUH,cAAc;AAC/B,iCAAOA,aAAalC,WAAW5jB,SAAS0oB,GAAG;wBAC/C;;;;;;;;;;;;;;wBAeAlC,OAAO,SAAAA,OAAU/R,OAAO;AACpB,8BAAImP,aAAa8E,IAAIlC,MAAM/R,KAAK;AAChC,iCAAOoR,aAAatD,OAAO;4BAAEqB;0BAAuB,CAAC;wBACzD;sBACJ;oBACJ,GAAC;AAGD,2BAAOvF,SAAS8H,OAAOuC;kBAExB,CAAC;;;;;;;;;ACjED;AAAE,mBAAA,SAAUxK,MAAMC,SAAS;AAC1B,wBAAI,MAA6B;AAEhCvkB,sBAAAA,QAAOyC,UAAUA,WAAU8hB,QAAQvhB,qBAAQ,GAAQ,CAAC;oBACrD,OACK;oBAAA;kBAQN,GAAC,QAAO,SAAUyhB,UAAU;AAE1B,qBAAA,WAAY;AAET,0BAAIrF,IAAIqF;AACR,0BAAIC,QAAQtF,EAAEuF;AACd,0BAAIlK,OAAOiK,MAAMjK;AACjB,0BAAI2N,QAAQhJ,EAAEiJ;AACd,0BAAIC,OAAOF,MAAME;AACjB,0BAAIzD,SAASzF,EAAE0F;AAKf,0BAAIqM,OAAOtM,OAAOsM,OAAO1W,KAAKyL,OAAO;;;;;;;;;;;wBAWjC6C,MAAM,SAAAA,QAAUkI,QAAQlpB,KAAK;AAEzBkpB,mCAAS,KAAKoC,UAAU,IAAIpC,OAAOlI,KAAI;AAGvC,8BAAI,OAAOhhB,OAAO,UAAU;AACxBA,kCAAMugB,KAAKsE,MAAM7kB,GAAG;0BACxB;AAGA,8BAAIurB,kBAAkBrC,OAAO9G;AAC7B,8BAAIoJ,uBAAuBD,kBAAkB;AAG7C,8BAAIvrB,IAAI2e,WAAW6M,sBAAsB;AACrCxrB,kCAAMkpB,OAAO3H,SAASvhB,GAAG;0BAC7B;AAGAA,8BAAIonB,MAAK;AAGT,8BAAIqE,OAAO,KAAKC,QAAQ1rB,IAAI6mB,MAAK;AACjC,8BAAI8E,OAAO,KAAKC,QAAQ5rB,IAAI6mB,MAAK;AAGjC,8BAAIgF,YAAYJ,KAAKhN;AACrB,8BAAIqN,YAAYH,KAAKlN;AAGrB,mCAAS9hB,IAAI,GAAGA,IAAI4uB,iBAAiB5uB,KAAK;AACtCkvB,sCAAUlvB,CAAC,KAAK;AAChBmvB,sCAAUnvB,CAAC,KAAK;0BACpB;AACA8uB,+BAAK9M,WAAWgN,KAAKhN,WAAW6M;AAGhC,+BAAKrK,MAAK;wBACd;;;;;;;;wBASAA,OAAO,SAAA,QAAY;AAEf,8BAAI+H,SAAS,KAAKoC;AAGlBpC,iCAAO/H,MAAK;AACZ+H,iCAAOH,OAAO,KAAK6C,KAAK;wBAC5B;;;;;;;;;;;;;wBAcA7C,QAAQ,SAAA,OAAUC,eAAe;AAC7B,+BAAKsC,QAAQvC,OAAOC,aAAa;AAGjC,iCAAO;wBACX;;;;;;;;;;;;;;;wBAgBAzH,UAAU,SAAA,SAAUyH,eAAe;AAE/B,8BAAIE,SAAS,KAAKoC;AAGlB,8BAAIS,YAAY7C,OAAO3H,SAASyH,aAAa;AAC7CE,iCAAO/H,MAAK;AACZ,8BAAI6K,OAAO9C,OAAO3H,SAAS,KAAKmK,MAAM7E,MAAK,EAAGne,OAAOqjB,SAAS,CAAC;AAE/D,iCAAOC;wBACX;sBACJ,CAAC;oBACL,GAAC;kBAGF,CAAC;;;;;;;;AC9ID;AAAE,mBAAA,SAAUzP,MAAMC,SAASC,OAAO;AACjC,wBAAI,MAA6B;AAEhCxkB,sBAAAA,QAAOyC,UAAUA,WAAU8hB,QAAQvhB,qBAAQ,GAAQ,GAAGA,qBAAQ,IAAY,GAAGA,qBAAQ,IAAmB,GAAGA,qBAAQ,IAAa,GAAGA,qBAAQ,IAAc,GAAGA,qBAAQ,IAAiB,GAAGA,qBAAQ,IAAO,GAAGA,qBAAQ,IAAQ,GAAGA,qBAAQ,IAAU,GAAGA,qBAAQ,IAAU,GAAGA,qBAAQ,IAAU,GAAGA,qBAAQ,IAAU,GAAGA,qBAAQ,IAAQ,GAAGA,qBAAQ,IAAa,GAAGA,qBAAQ,IAAQ,GAAGA,qBAAQ,IAAU,GAAGA,qBAAQ,IAAU,GAAGA,qBAAQ,IAAe,GAAGA,qBAAQ,GAAY,GAAGA,qBAAQ,IAAY,GAAGA,qBAAQ,IAAoB,GAAGA,qBAAQ,IAAY,GAAGA,qBAAQ,IAAY,GAAGA,qBAAQ,IAAgB,GAAGA,qBAAQ,IAAgB,GAAGA,qBAAQ,IAAgB,GAAGA,qBAAQ,IAAmB,GAAGA,qBAAQ,GAAiB,GAAGA,qBAAQ,IAAc,GAAGA,qBAAQ,GAAO,GAAGA,qBAAQ,IAAa,GAAGA,qBAAQ,IAAO,GAAGA,qBAAQ,IAAU,GAAGA,qBAAQ,IAAiB,CAAC;oBAC9zB,OACK;oBAAA;kBAQN,GAAC,QAAO,SAAUyhB,UAAU;AAE3B,2BAAOA;kBAER,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjBD;AAAE,mBAAA,SAAUH,MAAMC,SAAS;AAC1B,wBAAI,MAA6B;AAEhCvkB,sBAAAA,QAAOyC,UAAUA,WAAU8hB,QAAQvhB,qBAAQ,GAAQ,CAAC;oBACrD,OACK;oBAAA;kBAQN,GAAC,QAAO,SAAUyhB,UAAU;AAE1B,qBAAA,WAAY;AAET,0BAAI,OAAO7V,eAAe,YAAY;AAClC;sBACJ;AAGA,0BAAIwQ,IAAIqF;AACR,0BAAIC,QAAQtF,EAAEuF;AACd,0BAAIuD,YAAYxD,MAAMwD;AAGtB,0BAAI8L,YAAY9L,UAAUa;AAG1B,0BAAIkL,UAAU/L,UAAUa,OAAO,SAAUmL,YAAY;AAEjD,4BAAIA,sBAAsBtlB,aAAa;AACnCslB,uCAAa,IAAIpmB,WAAWomB,UAAU;wBAC1C;AAGA,4BACIA,sBAAsB7W,aACrB,OAAOE,sBAAsB,eAAe2W,sBAAsB3W,qBACnE2W,sBAAsB5V,cACtB4V,sBAAsB3V,eACtB2V,sBAAsB1V,cACtB0V,sBAAsBzV,eACtByV,sBAAsBxV,gBACtBwV,sBAAsBvV,cACxB;AACEuV,uCAAa,IAAIpmB,WAAWomB,WAAWjuB,QAAQiuB,WAAW/lB,YAAY+lB,WAAWxoB,UAAU;wBAC/F;AAGA,4BAAIwoB,sBAAsBpmB,YAAY;AAElC,8BAAIqmB,uBAAuBD,WAAWxoB;AAGtC,8BAAI8a,QAAQ,CAAA;AACZ,mCAAS9hB,IAAI,GAAGA,IAAIyvB,sBAAsBzvB,KAAK;AAC3C8hB,kCAAM9hB,MAAM,CAAC,KAAKwvB,WAAWxvB,CAAC,KAAM,KAAMA,IAAI,IAAK;0BACvD;AAGAsvB,oCAAUxpB,KAAK,MAAMgc,OAAO2N,oBAAoB;wBACpD,OAAO;AAEHH,oCAAUliB,MAAM,MAAMvJ,SAAS;wBACnC;sBACJ;AAEA0rB,8BAAQ/rB,YAAYggB;oBACxB,GAAC;AAGD,2BAAOzD,SAASE,IAAIuD;kBAErB,CAAC;;;;;;;;AC3ED;AAAE,mBAAA,SAAU5D,MAAMC,SAAS;AAC1B,wBAAI,MAA6B;AAEhCvkB,sBAAAA,QAAOyC,UAAUA,WAAU8hB,QAAQvhB,qBAAQ,GAAQ,CAAC;oBACrD,OACK;oBAAA;kBAQN,GAAC,QAAO,SAAUyhB,UAAU;AAE1B,qBAAA,SAAUpU,OAAM;AAEb,0BAAI+O,IAAIqF;AACR,0BAAIC,QAAQtF,EAAEuF;AACd,0BAAIuD,YAAYxD,MAAMwD;AACtB,0BAAI2I,SAASnM,MAAMmM;AACnB,0BAAIhM,SAASzF,EAAE0F;AAGf,0BAAIsP,IAAI,CAAA;AAGP,uBAAA,WAAY;AACT,iCAAS1vB,IAAI,GAAGA,IAAI,IAAIA,KAAK;AACzB0vB,4BAAE1vB,CAAC,IAAK2L,MAAK4K,IAAI5K,MAAKgkB,IAAI3vB,IAAI,CAAC,CAAC,IAAI,aAAe;wBACvD;sBACJ,GAAC;AAKD,0BAAIsuB,MAAMnO,OAAOmO,MAAMnC,OAAO3K,OAAO;wBACjCC,UAAU,SAAA,WAAY;AAClB,+BAAKmO,QAAQ,IAAIpM,UAAUa,KAAK,CAC5B,YAAY,YACZ,YAAY,SAAU,CACzB;wBACL;wBAEAgD,iBAAiB,SAAA,gBAAU3E,GAAGrc,QAAQ;AAElC,mCAASrG,IAAI,GAAGA,IAAI,IAAIA,KAAK;AAEzB,gCAAI6vB,WAAWxpB,SAASrG;AACxB,gCAAI8vB,aAAapN,EAAEmN,QAAQ;AAE3BnN,8BAAEmN,QAAQ,KACHC,cAAc,IAAOA,eAAe,MAAO,YAC3CA,cAAc,KAAOA,eAAe,KAAO;0BAEtD;AAGA,8BAAIC,IAAI,KAAKH,MAAM9N;AAEnB,8BAAIkO,aAActN,EAAErc,SAAS,CAAC;AAC9B,8BAAI4pB,aAAcvN,EAAErc,SAAS,CAAC;AAC9B,8BAAI6pB,aAAcxN,EAAErc,SAAS,CAAC;AAC9B,8BAAI8pB,aAAczN,EAAErc,SAAS,CAAC;AAC9B,8BAAI+pB,aAAc1N,EAAErc,SAAS,CAAC;AAC9B,8BAAIgqB,aAAc3N,EAAErc,SAAS,CAAC;AAC9B,8BAAIiqB,aAAc5N,EAAErc,SAAS,CAAC;AAC9B,8BAAIkqB,aAAc7N,EAAErc,SAAS,CAAC;AAC9B,8BAAImqB,aAAc9N,EAAErc,SAAS,CAAC;AAC9B,8BAAIoqB,aAAc/N,EAAErc,SAAS,CAAC;AAC9B,8BAAIqqB,cAAchO,EAAErc,SAAS,EAAE;AAC/B,8BAAIsqB,cAAcjO,EAAErc,SAAS,EAAE;AAC/B,8BAAIuqB,cAAclO,EAAErc,SAAS,EAAE;AAC/B,8BAAIwqB,cAAcnO,EAAErc,SAAS,EAAE;AAC/B,8BAAIyqB,cAAcpO,EAAErc,SAAS,EAAE;AAC/B,8BAAI0qB,cAAcrO,EAAErc,SAAS,EAAE;AAG/B,8BAAIrL,KAAI+0B,EAAE,CAAC;AACX,8BAAItlB,IAAIslB,EAAE,CAAC;AACX,8BAAIxpB,KAAIwpB,EAAE,CAAC;AACX,8BAAIhP,KAAIgP,EAAE,CAAC;AAGX/0B,0BAAAA,KAAIg2B,GAAGh2B,IAAGyP,GAAGlE,IAAGwa,IAAGiP,YAAa,GAAIN,EAAE,CAAC,CAAC;AACxC3O,0BAAAA,KAAIiQ,GAAGjQ,IAAG/lB,IAAGyP,GAAGlE,IAAG0pB,YAAa,IAAIP,EAAE,CAAC,CAAC;AACxCnpB,0BAAAA,KAAIyqB,GAAGzqB,IAAGwa,IAAG/lB,IAAGyP,GAAGylB,YAAa,IAAIR,EAAE,CAAC,CAAC;AACxCjlB,8BAAIumB,GAAGvmB,GAAGlE,IAAGwa,IAAG/lB,IAAGm1B,YAAa,IAAIT,EAAE,CAAC,CAAC;AACxC10B,0BAAAA,KAAIg2B,GAAGh2B,IAAGyP,GAAGlE,IAAGwa,IAAGqP,YAAa,GAAIV,EAAE,CAAC,CAAC;AACxC3O,0BAAAA,KAAIiQ,GAAGjQ,IAAG/lB,IAAGyP,GAAGlE,IAAG8pB,YAAa,IAAIX,EAAE,CAAC,CAAC;AACxCnpB,0BAAAA,KAAIyqB,GAAGzqB,IAAGwa,IAAG/lB,IAAGyP,GAAG6lB,YAAa,IAAIZ,EAAE,CAAC,CAAC;AACxCjlB,8BAAIumB,GAAGvmB,GAAGlE,IAAGwa,IAAG/lB,IAAGu1B,YAAa,IAAIb,EAAE,CAAC,CAAC;AACxC10B,0BAAAA,KAAIg2B,GAAGh2B,IAAGyP,GAAGlE,IAAGwa,IAAGyP,YAAa,GAAId,EAAE,CAAC,CAAC;AACxC3O,0BAAAA,KAAIiQ,GAAGjQ,IAAG/lB,IAAGyP,GAAGlE,IAAGkqB,YAAa,IAAIf,EAAE,CAAC,CAAC;AACxCnpB,0BAAAA,KAAIyqB,GAAGzqB,IAAGwa,IAAG/lB,IAAGyP,GAAGimB,aAAa,IAAIhB,EAAE,EAAE,CAAC;AACzCjlB,8BAAIumB,GAAGvmB,GAAGlE,IAAGwa,IAAG/lB,IAAG21B,aAAa,IAAIjB,EAAE,EAAE,CAAC;AACzC10B,0BAAAA,KAAIg2B,GAAGh2B,IAAGyP,GAAGlE,IAAGwa,IAAG6P,aAAa,GAAIlB,EAAE,EAAE,CAAC;AACzC3O,0BAAAA,KAAIiQ,GAAGjQ,IAAG/lB,IAAGyP,GAAGlE,IAAGsqB,aAAa,IAAInB,EAAE,EAAE,CAAC;AACzCnpB,0BAAAA,KAAIyqB,GAAGzqB,IAAGwa,IAAG/lB,IAAGyP,GAAGqmB,aAAa,IAAIpB,EAAE,EAAE,CAAC;AACzCjlB,8BAAIumB,GAAGvmB,GAAGlE,IAAGwa,IAAG/lB,IAAG+1B,aAAa,IAAIrB,EAAE,EAAE,CAAC;AAEzC10B,0BAAAA,KAAIi2B,GAAGj2B,IAAGyP,GAAGlE,IAAGwa,IAAGkP,YAAa,GAAIP,EAAE,EAAE,CAAC;AACzC3O,0BAAAA,KAAIkQ,GAAGlQ,IAAG/lB,IAAGyP,GAAGlE,IAAG+pB,YAAa,GAAIZ,EAAE,EAAE,CAAC;AACzCnpB,0BAAAA,KAAI0qB,GAAG1qB,IAAGwa,IAAG/lB,IAAGyP,GAAGkmB,aAAa,IAAIjB,EAAE,EAAE,CAAC;AACzCjlB,8BAAIwmB,GAAGxmB,GAAGlE,IAAGwa,IAAG/lB,IAAGg1B,YAAa,IAAIN,EAAE,EAAE,CAAC;AACzC10B,0BAAAA,KAAIi2B,GAAGj2B,IAAGyP,GAAGlE,IAAGwa,IAAGsP,YAAa,GAAIX,EAAE,EAAE,CAAC;AACzC3O,0BAAAA,KAAIkQ,GAAGlQ,IAAG/lB,IAAGyP,GAAGlE,IAAGmqB,aAAa,GAAIhB,EAAE,EAAE,CAAC;AACzCnpB,0BAAAA,KAAI0qB,GAAG1qB,IAAGwa,IAAG/lB,IAAGyP,GAAGsmB,aAAa,IAAIrB,EAAE,EAAE,CAAC;AACzCjlB,8BAAIwmB,GAAGxmB,GAAGlE,IAAGwa,IAAG/lB,IAAGo1B,YAAa,IAAIV,EAAE,EAAE,CAAC;AACzC10B,0BAAAA,KAAIi2B,GAAGj2B,IAAGyP,GAAGlE,IAAGwa,IAAG0P,YAAa,GAAIf,EAAE,EAAE,CAAC;AACzC3O,0BAAAA,KAAIkQ,GAAGlQ,IAAG/lB,IAAGyP,GAAGlE,IAAGuqB,aAAa,GAAIpB,EAAE,EAAE,CAAC;AACzCnpB,0BAAAA,KAAI0qB,GAAG1qB,IAAGwa,IAAG/lB,IAAGyP,GAAG0lB,YAAa,IAAIT,EAAE,EAAE,CAAC;AACzCjlB,8BAAIwmB,GAAGxmB,GAAGlE,IAAGwa,IAAG/lB,IAAGw1B,YAAa,IAAId,EAAE,EAAE,CAAC;AACzC10B,0BAAAA,KAAIi2B,GAAGj2B,IAAGyP,GAAGlE,IAAGwa,IAAG8P,aAAa,GAAInB,EAAE,EAAE,CAAC;AACzC3O,0BAAAA,KAAIkQ,GAAGlQ,IAAG/lB,IAAGyP,GAAGlE,IAAG2pB,YAAa,GAAIR,EAAE,EAAE,CAAC;AACzCnpB,0BAAAA,KAAI0qB,GAAG1qB,IAAGwa,IAAG/lB,IAAGyP,GAAG8lB,YAAa,IAAIb,EAAE,EAAE,CAAC;AACzCjlB,8BAAIwmB,GAAGxmB,GAAGlE,IAAGwa,IAAG/lB,IAAG41B,aAAa,IAAIlB,EAAE,EAAE,CAAC;AAEzC10B,0BAAAA,KAAIk2B,GAAGl2B,IAAGyP,GAAGlE,IAAGwa,IAAGsP,YAAa,GAAIX,EAAE,EAAE,CAAC;AACzC3O,0BAAAA,KAAImQ,GAAGnQ,IAAG/lB,IAAGyP,GAAGlE,IAAGiqB,YAAa,IAAId,EAAE,EAAE,CAAC;AACzCnpB,0BAAAA,KAAI2qB,GAAG3qB,IAAGwa,IAAG/lB,IAAGyP,GAAGkmB,aAAa,IAAIjB,EAAE,EAAE,CAAC;AACzCjlB,8BAAIymB,GAAGzmB,GAAGlE,IAAGwa,IAAG/lB,IAAG81B,aAAa,IAAIpB,EAAE,EAAE,CAAC;AACzC10B,0BAAAA,KAAIk2B,GAAGl2B,IAAGyP,GAAGlE,IAAGwa,IAAGkP,YAAa,GAAIP,EAAE,EAAE,CAAC;AACzC3O,0BAAAA,KAAImQ,GAAGnQ,IAAG/lB,IAAGyP,GAAGlE,IAAG6pB,YAAa,IAAIV,EAAE,EAAE,CAAC;AACzCnpB,0BAAAA,KAAI2qB,GAAG3qB,IAAGwa,IAAG/lB,IAAGyP,GAAG8lB,YAAa,IAAIb,EAAE,EAAE,CAAC;AACzCjlB,8BAAIymB,GAAGzmB,GAAGlE,IAAGwa,IAAG/lB,IAAG01B,aAAa,IAAIhB,EAAE,EAAE,CAAC;AACzC10B,0BAAAA,KAAIk2B,GAAGl2B,IAAGyP,GAAGlE,IAAGwa,IAAG8P,aAAa,GAAInB,EAAE,EAAE,CAAC;AACzC3O,0BAAAA,KAAImQ,GAAGnQ,IAAG/lB,IAAGyP,GAAGlE,IAAGypB,YAAa,IAAIN,EAAE,EAAE,CAAC;AACzCnpB,0BAAAA,KAAI2qB,GAAG3qB,IAAGwa,IAAG/lB,IAAGyP,GAAG0lB,YAAa,IAAIT,EAAE,EAAE,CAAC;AACzCjlB,8BAAIymB,GAAGzmB,GAAGlE,IAAGwa,IAAG/lB,IAAGs1B,YAAa,IAAIZ,EAAE,EAAE,CAAC;AACzC10B,0BAAAA,KAAIk2B,GAAGl2B,IAAGyP,GAAGlE,IAAGwa,IAAG0P,YAAa,GAAIf,EAAE,EAAE,CAAC;AACzC3O,0BAAAA,KAAImQ,GAAGnQ,IAAG/lB,IAAGyP,GAAGlE,IAAGqqB,aAAa,IAAIlB,EAAE,EAAE,CAAC;AACzCnpB,0BAAAA,KAAI2qB,GAAG3qB,IAAGwa,IAAG/lB,IAAGyP,GAAGsmB,aAAa,IAAIrB,EAAE,EAAE,CAAC;AACzCjlB,8BAAIymB,GAAGzmB,GAAGlE,IAAGwa,IAAG/lB,IAAGk1B,YAAa,IAAIR,EAAE,EAAE,CAAC;AAEzC10B,0BAAAA,KAAIm2B,GAAGn2B,IAAGyP,GAAGlE,IAAGwa,IAAGiP,YAAa,GAAIN,EAAE,EAAE,CAAC;AACzC3O,0BAAAA,KAAIoQ,GAAGpQ,IAAG/lB,IAAGyP,GAAGlE,IAAGgqB,YAAa,IAAIb,EAAE,EAAE,CAAC;AACzCnpB,0BAAAA,KAAI4qB,GAAG5qB,IAAGwa,IAAG/lB,IAAGyP,GAAGqmB,aAAa,IAAIpB,EAAE,EAAE,CAAC;AACzCjlB,8BAAI0mB,GAAG1mB,GAAGlE,IAAGwa,IAAG/lB,IAAGq1B,YAAa,IAAIX,EAAE,EAAE,CAAC;AACzC10B,0BAAAA,KAAIm2B,GAAGn2B,IAAGyP,GAAGlE,IAAGwa,IAAG6P,aAAa,GAAIlB,EAAE,EAAE,CAAC;AACzC3O,0BAAAA,KAAIoQ,GAAGpQ,IAAG/lB,IAAGyP,GAAGlE,IAAG4pB,YAAa,IAAIT,EAAE,EAAE,CAAC;AACzCnpB,0BAAAA,KAAI4qB,GAAG5qB,IAAGwa,IAAG/lB,IAAGyP,GAAGimB,aAAa,IAAIhB,EAAE,EAAE,CAAC;AACzCjlB,8BAAI0mB,GAAG1mB,GAAGlE,IAAGwa,IAAG/lB,IAAGi1B,YAAa,IAAIP,EAAE,EAAE,CAAC;AACzC10B,0BAAAA,KAAIm2B,GAAGn2B,IAAGyP,GAAGlE,IAAGwa,IAAGyP,YAAa,GAAId,EAAE,EAAE,CAAC;AACzC3O,0BAAAA,KAAIoQ,GAAGpQ,IAAG/lB,IAAGyP,GAAGlE,IAAGwqB,aAAa,IAAIrB,EAAE,EAAE,CAAC;AACzCnpB,0BAAAA,KAAI4qB,GAAG5qB,IAAGwa,IAAG/lB,IAAGyP,GAAG6lB,YAAa,IAAIZ,EAAE,EAAE,CAAC;AACzCjlB,8BAAI0mB,GAAG1mB,GAAGlE,IAAGwa,IAAG/lB,IAAG61B,aAAa,IAAInB,EAAE,EAAE,CAAC;AACzC10B,0BAAAA,KAAIm2B,GAAGn2B,IAAGyP,GAAGlE,IAAGwa,IAAGqP,YAAa,GAAIV,EAAE,EAAE,CAAC;AACzC3O,0BAAAA,KAAIoQ,GAAGpQ,IAAG/lB,IAAGyP,GAAGlE,IAAGoqB,aAAa,IAAIjB,EAAE,EAAE,CAAC;AACzCnpB,0BAAAA,KAAI4qB,GAAG5qB,IAAGwa,IAAG/lB,IAAGyP,GAAGylB,YAAa,IAAIR,EAAE,EAAE,CAAC;AACzCjlB,8BAAI0mB,GAAG1mB,GAAGlE,IAAGwa,IAAG/lB,IAAGy1B,YAAa,IAAIf,EAAE,EAAE,CAAC;AAGzCK,4BAAE,CAAC,IAAKA,EAAE,CAAC,IAAI/0B,KAAK;AACpB+0B,4BAAE,CAAC,IAAKA,EAAE,CAAC,IAAItlB,IAAK;AACpBslB,4BAAE,CAAC,IAAKA,EAAE,CAAC,IAAIxpB,KAAK;AACpBwpB,4BAAE,CAAC,IAAKA,EAAE,CAAC,IAAIhP,KAAK;wBACxB;wBAEA+D,aAAa,SAAA,cAAY;AAErB,8BAAIhe,QAAO,KAAKwgB;AAChB,8BAAIwE,YAAYhlB,MAAKgb;AAErB,8BAAIsP,aAAa,KAAKzF,cAAc;AACpC,8BAAI0F,YAAYvqB,MAAKkb,WAAW;AAGhC8J,oCAAUuF,cAAc,CAAC,KAAK,OAAS,KAAKA,YAAY;AAExD,8BAAIC,cAAc3lB,MAAKiL,MAAMwa,aAAa,UAAW;AACrD,8BAAIG,cAAcH;AAClBtF,qCAAauF,YAAY,OAAQ,KAAM,KAAK,EAAE,KACvCC,eAAe,IAAOA,gBAAgB,MAAO,YAC7CA,eAAe,KAAOA,gBAAgB,KAAO;AAEpDxF,qCAAauF,YAAY,OAAQ,KAAM,KAAK,EAAE,KACvCE,eAAe,IAAOA,gBAAgB,MAAO,YAC7CA,eAAe,KAAOA,gBAAgB,KAAO;AAGpDzqB,0BAAAA,MAAKkb,YAAY8J,UAAUhtB,SAAS,KAAK;AAGzC,+BAAK6lB,SAAQ;AAGb,8BAAI2H,QAAO,KAAKsD;AAChB,8BAAIG,IAAIzD,MAAKxK;AAGb,mCAAS9hB,IAAI,GAAGA,IAAI,GAAGA,KAAK;AAExB,gCAAIwxB,MAAMzB,EAAE/vB,CAAC;AAEb+vB,8BAAE/vB,CAAC,KAAOwxB,OAAO,IAAOA,QAAQ,MAAO,YAC7BA,OAAO,KAAOA,QAAQ,KAAO;0BAC3C;AAGA,iCAAOlF;wBACX;wBAEApC,OAAO,SAAA,QAAY;AACf,8BAAIA,SAAQiC,OAAOjC,MAAMpkB,KAAK,IAAI;AAClCokB,0BAAAA,OAAM0F,QAAQ,KAAKA,MAAM1F,MAAK;AAE9B,iCAAOA;wBACX;sBACJ,CAAC;AAED,+BAAS8G,GAAGh2B,IAAGyP,GAAGlE,IAAGwa,IAAGrjB,IAAG+zB,IAAGpQ,IAAG;AAC7B,4BAAItU,KAAI/R,MAAMyP,IAAIlE,KAAM,CAACkE,IAAIsW,MAAMrjB,KAAI2jB;AACvC,gCAAStU,MAAK0kB,KAAM1kB,OAAO,KAAK0kB,MAAOhnB;sBAC3C;AAEA,+BAASwmB,GAAGj2B,IAAGyP,GAAGlE,IAAGwa,IAAGrjB,IAAG+zB,IAAGpQ,IAAG;AAC7B,4BAAItU,KAAI/R,MAAMyP,IAAIsW,KAAMxa,KAAI,CAACwa,MAAMrjB,KAAI2jB;AACvC,gCAAStU,MAAK0kB,KAAM1kB,OAAO,KAAK0kB,MAAOhnB;sBAC3C;AAEA,+BAASymB,GAAGl2B,IAAGyP,GAAGlE,IAAGwa,IAAGrjB,IAAG+zB,IAAGpQ,IAAG;AAC7B,4BAAItU,KAAI/R,MAAKyP,IAAIlE,KAAIwa,MAAKrjB,KAAI2jB;AAC9B,gCAAStU,MAAK0kB,KAAM1kB,OAAO,KAAK0kB,MAAOhnB;sBAC3C;AAEA,+BAAS0mB,GAAGn2B,IAAGyP,GAAGlE,IAAGwa,IAAGrjB,IAAG+zB,IAAGpQ,IAAG;AAC7B,4BAAItU,KAAI/R,MAAKuL,MAAKkE,IAAI,CAACsW,OAAMrjB,KAAI2jB;AACjC,gCAAStU,MAAK0kB,KAAM1kB,OAAO,KAAK0kB,MAAOhnB;sBAC3C;AAgBAiQ,wBAAE4T,MAAMnC,OAAO7I,cAAcgL,GAAG;AAgBhC5T,wBAAEgX,UAAUvF,OAAOK,kBAAkB8B,GAAG;oBAC5C,GAAE3iB,IAAI;AAGN,2BAAOoU,SAASuO;kBAEjB,CAAC;;;;;;;;;AC3QD;AAAE,mBAAA,SAAU1O,MAAMC,SAASC,OAAO;AACjC,wBAAI,MAA6B;AAEhCxkB,sBAAAA,QAAOyC,UAAUA,WAAU8hB,QAAQvhB,qBAAQ,GAAQ,GAAGA,qBAAQ,IAAe,CAAC;oBAC/E,OACK;oBAAA;kBAQN,GAAC,QAAO,SAAUyhB,UAAU;AAK3BA,6BAAS4F,KAAKgM,MAAO,WAAY;AAC7B,0BAAIA,MAAM5R,SAASE,IAAI2F,gBAAgBpE,OAAM;AAE7CmQ,0BAAI7L,YAAY6L,IAAInQ,OAAO;wBACvB2E,cAAc,SAAA,aAAUrE,OAAOzb,QAAQ;AAEnC,8BAAI8e,SAAS,KAAKa;AAClB,8BAAIP,YAAYN,OAAOM;AAEvBmM,sDAA4B9rB,KAAK,MAAMgc,OAAOzb,QAAQof,WAAWN,MAAM;AAGvE,+BAAKkB,aAAavE,MAAM/f,MAAMsE,QAAQA,SAASof,SAAS;wBAC5D;sBACJ,CAAC;AAEDkM,0BAAI5L,YAAY4L,IAAInQ,OAAO;wBACvB2E,cAAc,SAAA,aAAUrE,OAAOzb,QAAQ;AAEnC,8BAAI8e,SAAS,KAAKa;AAClB,8BAAIP,YAAYN,OAAOM;AAGvB,8BAAIa,YAAYxE,MAAM/f,MAAMsE,QAAQA,SAASof,SAAS;AAEtDmM,sDAA4B9rB,KAAK,MAAMgc,OAAOzb,QAAQof,WAAWN,MAAM;AAGvE,+BAAKkB,aAAaC;wBACtB;sBACJ,CAAC;AAED,+BAASsL,4BAA4B9P,OAAOzb,QAAQof,WAAWN,QAAQ;AACnE,4BAAI0M;AAGJ,4BAAIhM,KAAK,KAAKI;AAGd,4BAAIJ,IAAI;AACJgM,sCAAYhM,GAAG9jB,MAAM,CAAC;AAGtB,+BAAKkkB,MAAMnmB;wBACf,OAAO;AACH+xB,sCAAY,KAAKxL;wBACrB;AACAlB,+BAAO1C,aAAaoP,WAAW,CAAC;AAGhC,iCAAS7xB,IAAI,GAAGA,IAAIylB,WAAWzlB,KAAK;AAChC8hB,gCAAMzb,SAASrG,CAAC,KAAK6xB,UAAU7xB,CAAC;wBACpC;sBACJ;AAEA,6BAAO2xB;oBACX,EAAC;AAGD,2BAAO5R,SAAS4F,KAAKgM;kBAEtB,CAAC;;;;;;;;;AC/ED;AAAE,mBAAA,SAAU/R,MAAMC,SAASC,OAAO;AACjC,wBAAI,MAA6B;AAEhCxkB,sBAAAA,QAAOyC,UAAUA,WAAU8hB,QAAQvhB,qBAAQ,GAAQ,GAAGA,qBAAQ,IAAe,CAAC;oBAC/E,OACK;oBAAA;kBAQN,GAAC,QAAO,SAAUyhB,UAAU;AAO3BA,6BAAS4F,KAAKmM,aAAc,WAAY;AACpC,0BAAIA,aAAa/R,SAASE,IAAI2F,gBAAgBpE,OAAM;AAEvD,+BAASuQ,QAAQ1D,MACjB;AACC,6BAAMA,QAAQ,KAAM,SAAU,KAAM;AACpC,8BAAI2D,MAAM3D,QAAQ,KAAI;AACtB,8BAAI4D,MAAM5D,QAAQ,IAAG;AACrB,8BAAI6D,MAAK7D,OAAO;AAEhB,8BAAI2D,QAAO,KACX;AACAA,4BAAAA,MAAK;AACL,gCAAIC,QAAO,KACX;AACCA,8BAAAA,MAAK;AACL,kCAAIC,QAAO,KACX;AACCA,gCAAAA,MAAK;8BACN,OAEA;AACC,kCAAEA;8BACH;4BACD,OAEA;AACC,gCAAED;4BACH;0BACA,OAEA;AACA,8BAAED;0BACF;AAEA3D,iCAAO;AACPA,kCAAS2D,OAAM;AACf3D,kCAAS4D,OAAM;AACf5D,kCAAQ6D;wBACR,OAEA;AACA7D,kCAAS,KAAQ;wBACjB;AACA,+BAAOA;sBACR;AAEA,+BAAS8D,WAAWC,UACpB;AACC,6BAAKA,SAAQ,CAAC,IAAIL,QAAQK,SAAQ,CAAC,CAAC,OAAO,GAC3C;AAECA,0BAAAA,SAAQ,CAAC,IAAIL,QAAQK,SAAQ,CAAC,CAAC;wBAChC;AACA,+BAAOA;sBACR;AAEG,0BAAItM,YAAYgM,WAAWhM,YAAYgM,WAAWtQ,OAAO;wBACrD2E,cAAc,SAAA,aAAUrE,OAAOzb,QAAQ;AAEnC,8BAAI8e,SAAS,KAAKa;AAClB,8BAAIP,YAAYN,OAAOM;AACvB,8BAAII,KAAK,KAAKI;AACd,8BAAImM,WAAU,KAAKC;AAGnB,8BAAIxM,IAAI;AACJuM,4BAAAA,WAAU,KAAKC,WAAWxM,GAAG9jB,MAAM,CAAC;AAGpC,iCAAKkkB,MAAMnmB;0BACf;AAETqyB,qCAAWC,QAAO;AAElB,8BAAIP,YAAYO,SAAQrwB,MAAM,CAAC;AACtBojB,iCAAO1C,aAAaoP,WAAW,CAAC;AAGhC,mCAAS7xB,IAAI,GAAGA,IAAIylB,WAAWzlB,KAAK;AAChC8hB,kCAAMzb,SAASrG,CAAC,KAAK6xB,UAAU7xB,CAAC;0BACpC;wBACJ;sBACJ,CAAC;AAED8xB,iCAAW/L,YAAYD;AAEvB,6BAAOgM;oBACX,EAAC;AAKD,2BAAO/R,SAAS4F,KAAKmM;kBAEtB,CAAC;;;;;;;;;ACnHD;AAAE,mBAAA,SAAUlS,MAAMC,SAASC,OAAO;AACjC,wBAAI,MAA6B;AAEhCxkB,sBAAAA,QAAOyC,UAAUA,WAAU8hB,QAAQvhB,qBAAQ,GAAQ,GAAGA,qBAAQ,IAAe,CAAC;oBAC/E,OACK;oBAAA;kBAQN,GAAC,QAAO,SAAUyhB,UAAU;AAK3BA,6BAAS4F,KAAK2M,MAAO,WAAY;AAC7B,0BAAIA,MAAMvS,SAASE,IAAI2F,gBAAgBpE,OAAM;AAE7C,0BAAIsE,YAAYwM,IAAIxM,YAAYwM,IAAI9Q,OAAO;wBACvC2E,cAAc,SAAA,aAAUrE,OAAOzb,QAAQ;AAEnC,8BAAI8e,SAAS,KAAKa;AAClB,8BAAIP,YAAYN,OAAOM;AACvB,8BAAII,KAAK,KAAKI;AACd,8BAAImM,WAAU,KAAKC;AAGnB,8BAAIxM,IAAI;AACJuM,4BAAAA,WAAU,KAAKC,WAAWxM,GAAG9jB,MAAM,CAAC;AAGpC,iCAAKkkB,MAAMnmB;0BACf;AACA,8BAAI+xB,YAAYO,SAAQrwB,MAAM,CAAC;AAC/BojB,iCAAO1C,aAAaoP,WAAW,CAAC;AAGhCO,0BAAAA,SAAQ3M,YAAY,CAAC,IAAK2M,SAAQ3M,YAAY,CAAC,IAAI,IAAK;AAGxD,mCAASzlB,IAAI,GAAGA,IAAIylB,WAAWzlB,KAAK;AAChC8hB,kCAAMzb,SAASrG,CAAC,KAAK6xB,UAAU7xB,CAAC;0BACpC;wBACJ;sBACJ,CAAC;AAEDsyB,0BAAIvM,YAAYD;AAEhB,6BAAOwM;oBACX,EAAC;AAGD,2BAAOvS,SAAS4F,KAAK2M;kBAEtB,CAAC;;;;;;;;ACzDD;AAAE,mBAAA,SAAU1S,MAAMC,SAASC,OAAO;AACjC,wBAAI,MAA6B;AAEhCxkB,sBAAAA,QAAOyC,UAAUA,WAAU8hB,QAAQvhB,qBAAQ,GAAQ,GAAGA,qBAAQ,IAAe,CAAC;oBAC/E,OACK;oBAAA;kBAQN,GAAC,QAAO,SAAUyhB,UAAU;AAK3BA,6BAAS4F,KAAK4M,MAAO,WAAY;AAC7B,0BAAIA,MAAMxS,SAASE,IAAI2F,gBAAgBpE,OAAM;AAE7C+Q,0BAAIzM,YAAYyM,IAAI/Q,OAAO;wBACvB2E,cAAc,SAAA,aAAUrE,OAAOzb,QAAQ;AACnC,+BAAK2f,QAAQvD,aAAaX,OAAOzb,MAAM;wBAC3C;sBACJ,CAAC;AAEDksB,0BAAIxM,YAAYwM,IAAI/Q,OAAO;wBACvB2E,cAAc,SAAA,aAAUrE,OAAOzb,QAAQ;AACnC,+BAAK2f,QAAQpD,aAAad,OAAOzb,MAAM;wBAC3C;sBACJ,CAAC;AAED,6BAAOksB;oBACX,EAAC;AAGD,2BAAOxS,SAAS4F,KAAK4M;kBAEtB,CAAC;;;;;;;;;ACvCD;AAAE,mBAAA,SAAU3S,MAAMC,SAASC,OAAO;AACjC,wBAAI,MAA6B;AAEhCxkB,sBAAAA,QAAOyC,UAAUA,WAAU8hB,QAAQvhB,qBAAQ,GAAQ,GAAGA,qBAAQ,IAAe,CAAC;oBAC/E,OACK;oBAAA;kBAQN,GAAC,QAAO,SAAUyhB,UAAU;AAK3BA,6BAAS4F,KAAK6M,MAAO,WAAY;AAC7B,0BAAIA,MAAMzS,SAASE,IAAI2F,gBAAgBpE,OAAM;AAE7C,0BAAIsE,YAAY0M,IAAI1M,YAAY0M,IAAIhR,OAAO;wBACvC2E,cAAc,SAAA,aAAUrE,OAAOzb,QAAQ;AAEnC,8BAAI8e,SAAS,KAAKa;AAClB,8BAAIP,YAAYN,OAAOM;AACvB,8BAAII,KAAK,KAAKI;AACd,8BAAI4L,YAAY,KAAKY;AAGrB,8BAAI5M,IAAI;AACJgM,wCAAY,KAAKY,aAAa5M,GAAG9jB,MAAM,CAAC;AAGxC,iCAAKkkB,MAAMnmB;0BACf;AACAqlB,iCAAO1C,aAAaoP,WAAW,CAAC;AAGhC,mCAAS7xB,IAAI,GAAGA,IAAIylB,WAAWzlB,KAAK;AAChC8hB,kCAAMzb,SAASrG,CAAC,KAAK6xB,UAAU7xB,CAAC;0BACpC;wBACJ;sBACJ,CAAC;AAEDwyB,0BAAIzM,YAAYD;AAEhB,6BAAO0M;oBACX,EAAC;AAGD,2BAAOzS,SAAS4F,KAAK6M;kBAEtB,CAAC;;;;;;;;ACrDD;AAAE,mBAAA,SAAU5S,MAAMC,SAASC,OAAO;AACjC,wBAAI,MAA6B;AAEhCxkB,sBAAAA,QAAOyC,UAAUA,WAAU8hB,QAAQvhB,qBAAQ,GAAQ,GAAGA,qBAAQ,IAAe,CAAC;oBAC/E,OACK;oBAAA;kBAQN,GAAC,QAAO,SAAUyhB,UAAU;AAK3BA,6BAAS0G,IAAIiM,WAAW;sBACpBjM,KAAK,SAAAA,KAAU3f,OAAM2e,WAAW;AAE5B,4BAAIsG,eAAejlB,MAAKkb;AACxB,4BAAI2E,iBAAiBlB,YAAY;AAGjC,4BAAImB,gBAAgBD,iBAAiBoF,eAAepF;AAGpD,4BAAIgM,cAAc5G,eAAenF,gBAAgB;AAGjD9f,wBAAAA,MAAK2jB,MAAK;AACV3jB,wBAAAA,MAAKgb,MAAM6Q,gBAAgB,CAAC,KAAK/L,iBAAkB,KAAM+L,cAAc,IAAK;AAC5E7rB,wBAAAA,MAAKkb,YAAY4E;sBACrB;sBAEAI,OAAO,SAAA,MAAUlgB,OAAM;AAEnB,4BAAI8f,gBAAgB9f,MAAKgb,MAAOhb,MAAKkb,WAAW,MAAO,CAAC,IAAI;AAG5Dlb,wBAAAA,MAAKkb,YAAY4E;sBACrB;oBACJ;AAGA,2BAAO7G,SAAS0G,IAAImM;kBAErB,CAAC;;;;;;;;;AChDD;AAAE,mBAAA,SAAUhT,MAAMC,SAASC,OAAO;AACjC,wBAAI,MAA6B;AAEhCxkB,sBAAAA,QAAOyC,UAAUA,WAAU8hB,QAAQvhB,qBAAQ,GAAQ,GAAGA,qBAAQ,IAAe,CAAC;oBAC/E,OACK;oBAAA;kBAQN,GAAC,QAAO,SAAUyhB,UAAU;AAK3BA,6BAAS0G,IAAIoM,WAAW;sBACpBpM,KAAK,SAAAA,KAAU3f,OAAM2e,WAAW;AAE5B,4BAAIkB,iBAAiBlB,YAAY;AAGjC,4BAAImB,gBAAgBD,iBAAiB7f,MAAKkb,WAAW2E;AAGrD7f,wBAAAA,MAAKiF,OAAOgU,SAASE,IAAIuD,UAAUwF,OAAOpC,gBAAgB,CAAC,CAAC,EACvD7a,OAAOgU,SAASE,IAAIuD,UAAUS,OAAO,CAAC2C,iBAAiB,EAAE,GAAG,CAAC,CAAC;sBACvE;sBAEAI,OAAO,SAAA,MAAUlgB,OAAM;AAEnB,4BAAI8f,gBAAgB9f,MAAKgb,MAAOhb,MAAKkb,WAAW,MAAO,CAAC,IAAI;AAG5Dlb,wBAAAA,MAAKkb,YAAY4E;sBACrB;oBACJ;AAGA,2BAAO7G,SAAS0G,IAAIoM;kBAErB,CAAC;;;;;;;;;AC3CD;AAAE,mBAAA,SAAUjT,MAAMC,SAASC,OAAO;AACjC,wBAAI,MAA6B;AAEhCxkB,sBAAAA,QAAOyC,UAAUA,WAAU8hB,QAAQvhB,qBAAQ,GAAQ,GAAGA,qBAAQ,IAAe,CAAC;oBAC/E,OACK;oBAAA;kBAQN,GAAC,QAAO,SAAUyhB,UAAU;AAK3BA,6BAAS0G,IAAIqM,WAAW;sBACpBrM,KAAK,SAAAA,KAAU3f,OAAM2e,WAAW;AAE5B3e,wBAAAA,MAAKiF,OAAOgU,SAASE,IAAIuD,UAAUS,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC;AAG1DlE,iCAAS0G,IAAIsM,YAAYtM,IAAI3f,OAAM2e,SAAS;sBAChD;sBAEAuB,OAAO,SAAA,MAAUlgB,OAAM;AAEnBiZ,iCAAS0G,IAAIsM,YAAY/L,MAAMlgB,KAAI;AAGnCA,wBAAAA,MAAKkb;sBACT;oBACJ;AAGA,2BAAOjC,SAAS0G,IAAIqM;kBAErB,CAAC;;;;;;;;ACvCD;AAAE,mBAAA,SAAUlT,MAAMC,SAASC,OAAO;AACjC,wBAAI,MAA6B;AAEhCxkB,sBAAAA,QAAOyC,UAAUA,WAAU8hB,QAAQvhB,qBAAQ,GAAQ,GAAGA,qBAAQ,IAAe,CAAC;oBAC/E,OACK;oBAAA;kBAQN,GAAC,QAAO,SAAUyhB,UAAU;AAK3BA,6BAAS0G,IAAIuM,YAAY;sBACrBvM,KAAK,SAAAA,OAAY;sBACjB;sBAEAO,OAAO,SAAA,QAAY;sBACnB;oBACJ;AAGA,2BAAOjH,SAAS0G,IAAIuM;kBAErB,CAAC;;;;;;;;AC7BD;AAAE,mBAAA,SAAUpT,MAAMC,SAASC,OAAO;AACjC,wBAAI,MAA6B;AAEhCxkB,sBAAAA,QAAOyC,UAAUA,WAAU8hB,QAAQvhB,qBAAQ,GAAQ,GAAGA,qBAAQ,IAAe,CAAC;oBAC/E,OACK;oBAAA;kBAQN,GAAC,QAAO,SAAUyhB,UAAU;AAK3BA,6BAAS0G,IAAIsM,cAAc;sBACvBtM,KAAK,SAAAA,KAAU3f,OAAM2e,WAAW;AAE5B,4BAAIkB,iBAAiBlB,YAAY;AAGjC3e,wBAAAA,MAAK2jB,MAAK;AACV3jB,wBAAAA,MAAKkb,YAAY2E,kBAAmB7f,MAAKkb,WAAW2E,kBAAmBA;sBAC3E;sBAEAK,OAAO,SAAA,MAAUlgB,OAAM;AAEnB,4BAAIglB,YAAYhlB,MAAKgb;AAGrB,4BAAI9hB,IAAI8G,MAAKkb,WAAW;AACxB,iCAAShiB,IAAI8G,MAAKkb,WAAW,GAAGhiB,KAAK,GAAGA,KAAK;AACzC,8BAAM8rB,UAAU9rB,MAAM,CAAC,MAAO,KAAMA,IAAI,IAAK,IAAM,KAAO;AACtD8G,4BAAAA,MAAKkb,WAAWhiB,IAAI;AACpB;0BACJ;wBACJ;sBACJ;oBACJ;AAGA,2BAAO+f,SAAS0G,IAAIsM;kBAErB,CAAC;;;;;;;;;AC9CD;AAAE,mBAAA,SAAUnT,MAAMC,SAASC,OAAO;AACjC,wBAAI,MAA6B;AAEhCxkB,sBAAAA,QAAOyC,UAAUA,WAAU8hB,QAAQvhB,qBAAQ,GAAQ,GAAGA,qBAAQ,IAAQ,GAAGA,qBAAQ,IAAQ,CAAC;oBAC3F,OACK;oBAAA;kBAQN,GAAC,QAAO,SAAUyhB,UAAU;AAE1B,qBAAA,WAAY;AAET,0BAAIrF,IAAIqF;AACR,0BAAIC,QAAQtF,EAAEuF;AACd,0BAAIlK,OAAOiK,MAAMjK;AACjB,0BAAIyN,YAAYxD,MAAMwD;AACtB,0BAAIrD,SAASzF,EAAE0F;AACf,0BAAI6S,OAAO9S,OAAO8S;AAClB,0BAAIxG,OAAOtM,OAAOsM;AAKlB,0BAAIyG,SAAS/S,OAAO+S,SAASnd,KAAKyL,OAAO;;;;;;;;wBAQrCuC,KAAKhO,KAAKyL,OAAO;0BACbO,SAAS,MAAI;0BACbwK,QAAQ0G;0BACR1E,YAAY;wBAChB,CAAC;;;;;;;;;;;;wBAaDlK,MAAM,SAAAA,QAAUN,KAAK;AACjB,+BAAKA,MAAM,KAAKA,IAAIvC,OAAOuC,GAAG;wBAClC;;;;;;;;;;;;;wBAcAkF,SAAS,SAAA,QAAUF,UAAUd,MAAM;AAE/B,8BAAIlE,MAAM,KAAKA;AAGf,8BAAIsL,OAAO5C,KAAKxI,OAAOF,IAAIwI,QAAQxD,QAAQ;AAG3C,8BAAIyF,aAAahL,UAAUS,OAAM;AACjC,8BAAIkP,aAAa3P,UAAUS,OAAO,CAAC,CAAU,CAAC;AAG9C,8BAAIwK,kBAAkBD,WAAW1M;AACjC,8BAAIsR,kBAAkBD,WAAWrR;AACjC,8BAAIC,UAAUgC,IAAIhC;AAClB,8BAAIwM,aAAaxK,IAAIwK;AAGrB,iCAAOE,gBAAgB3vB,SAASijB,SAAS;AACrC,gCAAIwE,QAAQ8I,KAAKjD,OAAOnE,IAAI,EAAErD,SAASuO,UAAU;AACjD9D,iCAAK7K,MAAK;AAGV,gCAAI6O,aAAa9M,MAAMzE;AACvB,gCAAIwR,mBAAmBD,WAAWv0B;AAGlC,gCAAIy0B,eAAehN;AACnB,qCAASvmB,IAAI,GAAGA,IAAIuuB,YAAYvuB,KAAK;AACjCuzB,6CAAelE,KAAKzK,SAAS2O,YAAY;AACzClE,mCAAK7K,MAAK;AAGV,kCAAIgP,oBAAoBD,aAAazR;AAGrC,uCAASrT,IAAI,GAAGA,IAAI6kB,kBAAkB7kB,KAAK;AACvC4kB,2CAAW5kB,CAAC,KAAK+kB,kBAAkB/kB,CAAC;8BACxC;4BACJ;AAEA+f,uCAAWziB,OAAOwa,KAAK;AACvB6M,4CAAgB,CAAC;0BACrB;AACA5E,qCAAWxM,WAAWD,UAAU;AAEhC,iCAAOyM;wBACX;sBACJ,CAAC;AAmBD9T,wBAAEwY,SAAS,SAAUnK,UAAUd,MAAMlE,KAAK;AACtC,+BAAOmP,OAAOjP,OAAOF,GAAG,EAAEkF,QAAQF,UAAUd,IAAI;sBACpD;oBACJ,GAAC;AAGD,2BAAOlI,SAASmT;kBAEjB,CAAC;;;;;;;;AChJD;AAAE,mBAAA,SAAUtT,MAAMC,SAASC,OAAO;AACjC,wBAAI,MAA6B;AAEhCxkB,sBAAAA,QAAOyC,UAAUA,WAAU8hB,QAAQvhB,qBAAQ,GAAQ,GAAGA,qBAAQ,IAAc,GAAGA,qBAAQ,IAAO,GAAGA,qBAAQ,IAAU,GAAGA,qBAAQ,IAAe,CAAC;oBAC/I,OACK;oBAAA;kBAQN,GAAC,QAAO,SAAUyhB,UAAU;AAE1B,qBAAA,WAAY;AAET,0BAAIrF,IAAIqF;AACR,0BAAIC,QAAQtF,EAAEuF;AACd,0BAAIsF,eAAevF,MAAMuF;AACzB,0BAAIpF,SAASzF,EAAE0F;AAGf,0BAAIqT,IAAK,CAAA;AACT,0BAAIC,KAAK,CAAA;AACT,0BAAIC,IAAK,CAAA;AAST,0BAAIC,eAAezT,OAAOyT,eAAerO,aAAa/D,OAAO;wBACzDC,UAAU,SAAA,WAAY;AAElB,8BAAIoS,IAAI,KAAKjS,KAAKE;AAClB,8BAAI+D,KAAK,KAAK9B,IAAI8B;AAGlB,8BAAIiO,IAAI,KAAKC,KAAK,CACdF,EAAE,CAAC,GAAIA,EAAE,CAAC,KAAK,KAAOA,EAAE,CAAC,MAAM,IAC/BA,EAAE,CAAC,GAAIA,EAAE,CAAC,KAAK,KAAOA,EAAE,CAAC,MAAM,IAC/BA,EAAE,CAAC,GAAIA,EAAE,CAAC,KAAK,KAAOA,EAAE,CAAC,MAAM,IAC/BA,EAAE,CAAC,GAAIA,EAAE,CAAC,KAAK,KAAOA,EAAE,CAAC,MAAM,EAAG;AAItC,8BAAInZ,KAAI,KAAKsZ,KAAK,CACbH,EAAE,CAAC,KAAK,KAAOA,EAAE,CAAC,MAAM,IAAMA,EAAE,CAAC,IAAI,aAAeA,EAAE,CAAC,IAAI,OAC3DA,EAAE,CAAC,KAAK,KAAOA,EAAE,CAAC,MAAM,IAAMA,EAAE,CAAC,IAAI,aAAeA,EAAE,CAAC,IAAI,OAC3DA,EAAE,CAAC,KAAK,KAAOA,EAAE,CAAC,MAAM,IAAMA,EAAE,CAAC,IAAI,aAAeA,EAAE,CAAC,IAAI,OAC3DA,EAAE,CAAC,KAAK,KAAOA,EAAE,CAAC,MAAM,IAAMA,EAAE,CAAC,IAAI,aAAeA,EAAE,CAAC,IAAI,KAAW;AAI3E,+BAAKI,KAAK;AAGV,mCAASj0B,IAAI,GAAGA,IAAI,GAAGA,KAAK;AACxBk0B,sCAAUpuB,KAAK,IAAI;0BACvB;AAGA,mCAAS9F,IAAI,GAAGA,IAAI,GAAGA,KAAK;AACxB0a,4BAAAA,GAAE1a,CAAC,KAAK8zB,EAAG9zB,IAAI,IAAK,CAAC;0BACzB;AAGA,8BAAI6lB,IAAI;AAEJ,gCAAIsO,KAAKtO,GAAG/D;AACZ,gCAAIsS,OAAOD,GAAG,CAAC;AACf,gCAAIE,OAAOF,GAAG,CAAC;AAGf,gCAAIG,MAAQF,QAAQ,IAAMA,SAAS,MAAO,YAAiBA,QAAQ,KAAOA,SAAS,KAAM;AACzF,gCAAIG,MAAQF,QAAQ,IAAMA,SAAS,MAAO,YAAiBA,QAAQ,KAAOA,SAAS,KAAM;AACzF,gCAAIG,KAAMF,OAAO,KAAOC,KAAK;AAC7B,gCAAIE,KAAMF,MAAM,KAAQD,KAAK;AAG7B5Z,4BAAAA,GAAE,CAAC,KAAK4Z;AACR5Z,4BAAAA,GAAE,CAAC,KAAK8Z;AACR9Z,4BAAAA,GAAE,CAAC,KAAK6Z;AACR7Z,4BAAAA,GAAE,CAAC,KAAK+Z;AACR/Z,4BAAAA,GAAE,CAAC,KAAK4Z;AACR5Z,4BAAAA,GAAE,CAAC,KAAK8Z;AACR9Z,4BAAAA,GAAE,CAAC,KAAK6Z;AACR7Z,4BAAAA,GAAE,CAAC,KAAK+Z;AAGR,qCAASz0B,IAAI,GAAGA,IAAI,GAAGA,KAAK;AACxBk0B,wCAAUpuB,KAAK,IAAI;4BACvB;0BACJ;wBACJ;wBAEAuhB,iBAAiB,SAAA,gBAAU3E,GAAGrc,QAAQ;AAElC,8BAAIytB,IAAI,KAAKC;AAGbG,oCAAUpuB,KAAK,IAAI;AAGnB2tB,4BAAE,CAAC,IAAIK,EAAE,CAAC,IAAKA,EAAE,CAAC,MAAM,KAAOA,EAAE,CAAC,KAAK;AACvCL,4BAAE,CAAC,IAAIK,EAAE,CAAC,IAAKA,EAAE,CAAC,MAAM,KAAOA,EAAE,CAAC,KAAK;AACvCL,4BAAE,CAAC,IAAIK,EAAE,CAAC,IAAKA,EAAE,CAAC,MAAM,KAAOA,EAAE,CAAC,KAAK;AACvCL,4BAAE,CAAC,IAAIK,EAAE,CAAC,IAAKA,EAAE,CAAC,MAAM,KAAOA,EAAE,CAAC,KAAK;AAEvC,mCAAS9zB,IAAI,GAAGA,IAAI,GAAGA,KAAK;AAExByzB,8BAAEzzB,CAAC,KAAOyzB,EAAEzzB,CAAC,KAAK,IAAOyzB,EAAEzzB,CAAC,MAAM,MAAO,YAC/ByzB,EAAEzzB,CAAC,KAAK,KAAOyzB,EAAEzzB,CAAC,MAAM,KAAO;AAGzC0iB,8BAAErc,SAASrG,CAAC,KAAKyzB,EAAEzzB,CAAC;0BACxB;wBACJ;wBAEAylB,WAAW,MAAI;wBAEfV,QAAQ,KAAG;sBACf,CAAC;AAED,+BAASmP,YAAY;AAEjB,4BAAIJ,IAAI,KAAKC;AACb,4BAAIrZ,KAAI,KAAKsZ;AAGb,iCAASh0B,IAAI,GAAGA,IAAI,GAAGA,KAAK;AACxB0zB,6BAAG1zB,CAAC,IAAI0a,GAAE1a,CAAC;wBACf;AAGA0a,wBAAAA,GAAE,CAAC,IAAKA,GAAE,CAAC,IAAI,aAAa,KAAKuZ,KAAM;AACvCvZ,wBAAAA,GAAE,CAAC,IAAKA,GAAE,CAAC,IAAI,cAAeA,GAAE,CAAC,MAAM,IAAMgZ,GAAG,CAAC,MAAM,IAAK,IAAI,KAAM;AACtEhZ,wBAAAA,GAAE,CAAC,IAAKA,GAAE,CAAC,IAAI,aAAeA,GAAE,CAAC,MAAM,IAAMgZ,GAAG,CAAC,MAAM,IAAK,IAAI,KAAM;AACtEhZ,wBAAAA,GAAE,CAAC,IAAKA,GAAE,CAAC,IAAI,cAAeA,GAAE,CAAC,MAAM,IAAMgZ,GAAG,CAAC,MAAM,IAAK,IAAI,KAAM;AACtEhZ,wBAAAA,GAAE,CAAC,IAAKA,GAAE,CAAC,IAAI,cAAeA,GAAE,CAAC,MAAM,IAAMgZ,GAAG,CAAC,MAAM,IAAK,IAAI,KAAM;AACtEhZ,wBAAAA,GAAE,CAAC,IAAKA,GAAE,CAAC,IAAI,aAAeA,GAAE,CAAC,MAAM,IAAMgZ,GAAG,CAAC,MAAM,IAAK,IAAI,KAAM;AACtEhZ,wBAAAA,GAAE,CAAC,IAAKA,GAAE,CAAC,IAAI,cAAeA,GAAE,CAAC,MAAM,IAAMgZ,GAAG,CAAC,MAAM,IAAK,IAAI,KAAM;AACtEhZ,wBAAAA,GAAE,CAAC,IAAKA,GAAE,CAAC,IAAI,cAAeA,GAAE,CAAC,MAAM,IAAMgZ,GAAG,CAAC,MAAM,IAAK,IAAI,KAAM;AACtE,6BAAKO,KAAMvZ,GAAE,CAAC,MAAM,IAAMgZ,GAAG,CAAC,MAAM,IAAK,IAAI;AAG7C,iCAAS1zB,IAAI,GAAGA,IAAI,GAAGA,KAAK;AACxB,8BAAI00B,KAAKZ,EAAE9zB,CAAC,IAAI0a,GAAE1a,CAAC;AAGnB,8BAAI20B,KAAKD,KAAK;AACd,8BAAIE,KAAKF,OAAO;AAGhB,8BAAIG,OAASF,KAAKA,OAAQ,MAAMA,KAAKC,OAAQ,MAAMA,KAAKA;AACxD,8BAAIE,OAAQJ,KAAK,cAAcA,KAAM,OAAQA,KAAK,SAAcA,KAAM;AAGtEf,4BAAE3zB,CAAC,IAAI60B,KAAKC;wBAChB;AAGAhB,0BAAE,CAAC,IAAKH,EAAE,CAAC,KAAMA,EAAE,CAAC,KAAK,KAAOA,EAAE,CAAC,MAAM,OAASA,EAAE,CAAC,KAAK,KAAOA,EAAE,CAAC,MAAM,MAAQ;AAClFG,0BAAE,CAAC,IAAKH,EAAE,CAAC,KAAMA,EAAE,CAAC,KAAK,IAAOA,EAAE,CAAC,MAAM,MAAOA,EAAE,CAAC,IAAK;AACxDG,0BAAE,CAAC,IAAKH,EAAE,CAAC,KAAMA,EAAE,CAAC,KAAK,KAAOA,EAAE,CAAC,MAAM,OAASA,EAAE,CAAC,KAAK,KAAOA,EAAE,CAAC,MAAM,MAAQ;AAClFG,0BAAE,CAAC,IAAKH,EAAE,CAAC,KAAMA,EAAE,CAAC,KAAK,IAAOA,EAAE,CAAC,MAAM,MAAOA,EAAE,CAAC,IAAK;AACxDG,0BAAE,CAAC,IAAKH,EAAE,CAAC,KAAMA,EAAE,CAAC,KAAK,KAAOA,EAAE,CAAC,MAAM,OAASA,EAAE,CAAC,KAAK,KAAOA,EAAE,CAAC,MAAM,MAAQ;AAClFG,0BAAE,CAAC,IAAKH,EAAE,CAAC,KAAMA,EAAE,CAAC,KAAK,IAAOA,EAAE,CAAC,MAAM,MAAOA,EAAE,CAAC,IAAK;AACxDG,0BAAE,CAAC,IAAKH,EAAE,CAAC,KAAMA,EAAE,CAAC,KAAK,KAAOA,EAAE,CAAC,MAAM,OAASA,EAAE,CAAC,KAAK,KAAOA,EAAE,CAAC,MAAM,MAAQ;AAClFG,0BAAE,CAAC,IAAKH,EAAE,CAAC,KAAMA,EAAE,CAAC,KAAK,IAAOA,EAAE,CAAC,MAAM,MAAOA,EAAE,CAAC,IAAK;sBAC5D;AAUAjZ,wBAAEkZ,eAAerO,aAAajC,cAAcsQ,YAAY;oBAC5D,GAAC;AAGD,2BAAO7T,SAAS6T;kBAEjB,CAAC;;;;;;;;AC7LD;AAAE,mBAAA,SAAUhU,MAAMC,SAASC,OAAO;AACjC,wBAAI,MAA6B;AAEhCxkB,sBAAAA,QAAOyC,UAAUA,WAAU8hB,QAAQvhB,qBAAQ,GAAQ,GAAGA,qBAAQ,IAAc,GAAGA,qBAAQ,IAAO,GAAGA,qBAAQ,IAAU,GAAGA,qBAAQ,IAAe,CAAC;oBAC/I,OACK;oBAAA;kBAQN,GAAC,QAAO,SAAUyhB,UAAU;AAE1B,qBAAA,WAAY;AAET,0BAAIrF,IAAIqF;AACR,0BAAIC,QAAQtF,EAAEuF;AACd,0BAAIsF,eAAevF,MAAMuF;AACzB,0BAAIpF,SAASzF,EAAE0F;AAGf,0BAAIqT,IAAK,CAAA;AACT,0BAAIC,KAAK,CAAA;AACT,0BAAIC,IAAK,CAAA;AAKT,0BAAIoB,SAAS5U,OAAO4U,SAASxP,aAAa/D,OAAO;wBAC7CC,UAAU,SAAA,WAAY;AAElB,8BAAIoS,IAAI,KAAKjS,KAAKE;AAClB,8BAAI+D,KAAK,KAAK9B,IAAI8B;AAGlB,mCAAS7lB,IAAI,GAAGA,IAAI,GAAGA,KAAK;AACxB6zB,8BAAE7zB,CAAC,KAAO6zB,EAAE7zB,CAAC,KAAK,IAAO6zB,EAAE7zB,CAAC,MAAM,MAAO,YAC/B6zB,EAAE7zB,CAAC,KAAK,KAAO6zB,EAAE7zB,CAAC,MAAM,KAAO;0BAC7C;AAGA,8BAAI8zB,IAAI,KAAKC,KAAK,CACdF,EAAE,CAAC,GAAIA,EAAE,CAAC,KAAK,KAAOA,EAAE,CAAC,MAAM,IAC/BA,EAAE,CAAC,GAAIA,EAAE,CAAC,KAAK,KAAOA,EAAE,CAAC,MAAM,IAC/BA,EAAE,CAAC,GAAIA,EAAE,CAAC,KAAK,KAAOA,EAAE,CAAC,MAAM,IAC/BA,EAAE,CAAC,GAAIA,EAAE,CAAC,KAAK,KAAOA,EAAE,CAAC,MAAM,EAAG;AAItC,8BAAInZ,KAAI,KAAKsZ,KAAK,CACbH,EAAE,CAAC,KAAK,KAAOA,EAAE,CAAC,MAAM,IAAMA,EAAE,CAAC,IAAI,aAAeA,EAAE,CAAC,IAAI,OAC3DA,EAAE,CAAC,KAAK,KAAOA,EAAE,CAAC,MAAM,IAAMA,EAAE,CAAC,IAAI,aAAeA,EAAE,CAAC,IAAI,OAC3DA,EAAE,CAAC,KAAK,KAAOA,EAAE,CAAC,MAAM,IAAMA,EAAE,CAAC,IAAI,aAAeA,EAAE,CAAC,IAAI,OAC3DA,EAAE,CAAC,KAAK,KAAOA,EAAE,CAAC,MAAM,IAAMA,EAAE,CAAC,IAAI,aAAeA,EAAE,CAAC,IAAI,KAAW;AAI3E,+BAAKI,KAAK;AAGV,mCAASj0B,IAAI,GAAGA,IAAI,GAAGA,KAAK;AACxBk0B,sCAAUpuB,KAAK,IAAI;0BACvB;AAGA,mCAAS9F,IAAI,GAAGA,IAAI,GAAGA,KAAK;AACxB0a,4BAAAA,GAAE1a,CAAC,KAAK8zB,EAAG9zB,IAAI,IAAK,CAAC;0BACzB;AAGA,8BAAI6lB,IAAI;AAEJ,gCAAIsO,KAAKtO,GAAG/D;AACZ,gCAAIsS,OAAOD,GAAG,CAAC;AACf,gCAAIE,OAAOF,GAAG,CAAC;AAGf,gCAAIG,MAAQF,QAAQ,IAAMA,SAAS,MAAO,YAAiBA,QAAQ,KAAOA,SAAS,KAAM;AACzF,gCAAIG,MAAQF,QAAQ,IAAMA,SAAS,MAAO,YAAiBA,QAAQ,KAAOA,SAAS,KAAM;AACzF,gCAAIG,KAAMF,OAAO,KAAOC,KAAK;AAC7B,gCAAIE,KAAMF,MAAM,KAAQD,KAAK;AAG7B5Z,4BAAAA,GAAE,CAAC,KAAK4Z;AACR5Z,4BAAAA,GAAE,CAAC,KAAK8Z;AACR9Z,4BAAAA,GAAE,CAAC,KAAK6Z;AACR7Z,4BAAAA,GAAE,CAAC,KAAK+Z;AACR/Z,4BAAAA,GAAE,CAAC,KAAK4Z;AACR5Z,4BAAAA,GAAE,CAAC,KAAK8Z;AACR9Z,4BAAAA,GAAE,CAAC,KAAK6Z;AACR7Z,4BAAAA,GAAE,CAAC,KAAK+Z;AAGR,qCAASz0B,IAAI,GAAGA,IAAI,GAAGA,KAAK;AACxBk0B,wCAAUpuB,KAAK,IAAI;4BACvB;0BACJ;wBACJ;wBAEAuhB,iBAAiB,SAAA,gBAAU3E,GAAGrc,QAAQ;AAElC,8BAAIytB,IAAI,KAAKC;AAGbG,oCAAUpuB,KAAK,IAAI;AAGnB2tB,4BAAE,CAAC,IAAIK,EAAE,CAAC,IAAKA,EAAE,CAAC,MAAM,KAAOA,EAAE,CAAC,KAAK;AACvCL,4BAAE,CAAC,IAAIK,EAAE,CAAC,IAAKA,EAAE,CAAC,MAAM,KAAOA,EAAE,CAAC,KAAK;AACvCL,4BAAE,CAAC,IAAIK,EAAE,CAAC,IAAKA,EAAE,CAAC,MAAM,KAAOA,EAAE,CAAC,KAAK;AACvCL,4BAAE,CAAC,IAAIK,EAAE,CAAC,IAAKA,EAAE,CAAC,MAAM,KAAOA,EAAE,CAAC,KAAK;AAEvC,mCAAS9zB,IAAI,GAAGA,IAAI,GAAGA,KAAK;AAExByzB,8BAAEzzB,CAAC,KAAOyzB,EAAEzzB,CAAC,KAAK,IAAOyzB,EAAEzzB,CAAC,MAAM,MAAO,YAC/ByzB,EAAEzzB,CAAC,KAAK,KAAOyzB,EAAEzzB,CAAC,MAAM,KAAO;AAGzC0iB,8BAAErc,SAASrG,CAAC,KAAKyzB,EAAEzzB,CAAC;0BACxB;wBACJ;wBAEAylB,WAAW,MAAI;wBAEfV,QAAQ,KAAG;sBACf,CAAC;AAED,+BAASmP,YAAY;AAEjB,4BAAIJ,IAAI,KAAKC;AACb,4BAAIrZ,KAAI,KAAKsZ;AAGb,iCAASh0B,IAAI,GAAGA,IAAI,GAAGA,KAAK;AACxB0zB,6BAAG1zB,CAAC,IAAI0a,GAAE1a,CAAC;wBACf;AAGA0a,wBAAAA,GAAE,CAAC,IAAKA,GAAE,CAAC,IAAI,aAAa,KAAKuZ,KAAM;AACvCvZ,wBAAAA,GAAE,CAAC,IAAKA,GAAE,CAAC,IAAI,cAAeA,GAAE,CAAC,MAAM,IAAMgZ,GAAG,CAAC,MAAM,IAAK,IAAI,KAAM;AACtEhZ,wBAAAA,GAAE,CAAC,IAAKA,GAAE,CAAC,IAAI,aAAeA,GAAE,CAAC,MAAM,IAAMgZ,GAAG,CAAC,MAAM,IAAK,IAAI,KAAM;AACtEhZ,wBAAAA,GAAE,CAAC,IAAKA,GAAE,CAAC,IAAI,cAAeA,GAAE,CAAC,MAAM,IAAMgZ,GAAG,CAAC,MAAM,IAAK,IAAI,KAAM;AACtEhZ,wBAAAA,GAAE,CAAC,IAAKA,GAAE,CAAC,IAAI,cAAeA,GAAE,CAAC,MAAM,IAAMgZ,GAAG,CAAC,MAAM,IAAK,IAAI,KAAM;AACtEhZ,wBAAAA,GAAE,CAAC,IAAKA,GAAE,CAAC,IAAI,aAAeA,GAAE,CAAC,MAAM,IAAMgZ,GAAG,CAAC,MAAM,IAAK,IAAI,KAAM;AACtEhZ,wBAAAA,GAAE,CAAC,IAAKA,GAAE,CAAC,IAAI,cAAeA,GAAE,CAAC,MAAM,IAAMgZ,GAAG,CAAC,MAAM,IAAK,IAAI,KAAM;AACtEhZ,wBAAAA,GAAE,CAAC,IAAKA,GAAE,CAAC,IAAI,cAAeA,GAAE,CAAC,MAAM,IAAMgZ,GAAG,CAAC,MAAM,IAAK,IAAI,KAAM;AACtE,6BAAKO,KAAMvZ,GAAE,CAAC,MAAM,IAAMgZ,GAAG,CAAC,MAAM,IAAK,IAAI;AAG7C,iCAAS1zB,IAAI,GAAGA,IAAI,GAAGA,KAAK;AACxB,8BAAI00B,KAAKZ,EAAE9zB,CAAC,IAAI0a,GAAE1a,CAAC;AAGnB,8BAAI20B,KAAKD,KAAK;AACd,8BAAIE,KAAKF,OAAO;AAGhB,8BAAIG,OAASF,KAAKA,OAAQ,MAAMA,KAAKC,OAAQ,MAAMA,KAAKA;AACxD,8BAAIE,OAAQJ,KAAK,cAAcA,KAAM,OAAQA,KAAK,SAAcA,KAAM;AAGtEf,4BAAE3zB,CAAC,IAAI60B,KAAKC;wBAChB;AAGAhB,0BAAE,CAAC,IAAKH,EAAE,CAAC,KAAMA,EAAE,CAAC,KAAK,KAAOA,EAAE,CAAC,MAAM,OAASA,EAAE,CAAC,KAAK,KAAOA,EAAE,CAAC,MAAM,MAAQ;AAClFG,0BAAE,CAAC,IAAKH,EAAE,CAAC,KAAMA,EAAE,CAAC,KAAK,IAAOA,EAAE,CAAC,MAAM,MAAOA,EAAE,CAAC,IAAK;AACxDG,0BAAE,CAAC,IAAKH,EAAE,CAAC,KAAMA,EAAE,CAAC,KAAK,KAAOA,EAAE,CAAC,MAAM,OAASA,EAAE,CAAC,KAAK,KAAOA,EAAE,CAAC,MAAM,MAAQ;AAClFG,0BAAE,CAAC,IAAKH,EAAE,CAAC,KAAMA,EAAE,CAAC,KAAK,IAAOA,EAAE,CAAC,MAAM,MAAOA,EAAE,CAAC,IAAK;AACxDG,0BAAE,CAAC,IAAKH,EAAE,CAAC,KAAMA,EAAE,CAAC,KAAK,KAAOA,EAAE,CAAC,MAAM,OAASA,EAAE,CAAC,KAAK,KAAOA,EAAE,CAAC,MAAM,MAAQ;AAClFG,0BAAE,CAAC,IAAKH,EAAE,CAAC,KAAMA,EAAE,CAAC,KAAK,IAAOA,EAAE,CAAC,MAAM,MAAOA,EAAE,CAAC,IAAK;AACxDG,0BAAE,CAAC,IAAKH,EAAE,CAAC,KAAMA,EAAE,CAAC,KAAK,KAAOA,EAAE,CAAC,MAAM,OAASA,EAAE,CAAC,KAAK,KAAOA,EAAE,CAAC,MAAM,MAAQ;AAClFG,0BAAE,CAAC,IAAKH,EAAE,CAAC,KAAMA,EAAE,CAAC,KAAK,IAAOA,EAAE,CAAC,MAAM,MAAOA,EAAE,CAAC,IAAK;sBAC5D;AAUAjZ,wBAAEqa,SAASxP,aAAajC,cAAcyR,MAAM;oBAChD,GAAC;AAGD,2BAAOhV,SAASgV;kBAEjB,CAAC;;;;;;;;;;AC/LD;AAAE,mBAAA,SAAUnV,MAAMC,SAASC,OAAO;AACjC,wBAAI,MAA6B;AAEhCxkB,sBAAAA,QAAOyC,UAAUA,WAAU8hB,QAAQvhB,qBAAQ,GAAQ,GAAGA,qBAAQ,IAAc,GAAGA,qBAAQ,IAAO,GAAGA,qBAAQ,IAAU,GAAGA,qBAAQ,IAAe,CAAC;oBAC/I,OACK;oBAAA;kBAQN,GAAC,QAAO,SAAUyhB,UAAU;AAE1B,qBAAA,WAAY;AAET,0BAAIrF,IAAIqF;AACR,0BAAIC,QAAQtF,EAAEuF;AACd,0BAAIsF,eAAevF,MAAMuF;AACzB,0BAAIpF,SAASzF,EAAE0F;AAKf,0BAAI4U,MAAM7U,OAAO6U,MAAMzP,aAAa/D,OAAO;wBACvCC,UAAU,SAAA,WAAY;AAElB,8BAAIpe,MAAM,KAAKue;AACf,8BAAIC,WAAWxe,IAAIye;AACnB,8BAAImT,cAAc5xB,IAAI2e;AAGtB,8BAAIyR,IAAI,KAAKyB,KAAK,CAAA;AAClB,mCAASl1B,IAAI,GAAGA,IAAI,KAAKA,KAAK;AAC1ByzB,8BAAEzzB,CAAC,IAAIA;0BACX;AAGA,mCAASA,IAAI,GAAGyO,IAAI,GAAGzO,IAAI,KAAKA,KAAK;AACjC,gCAAIm1B,eAAen1B,IAAIi1B;AACvB,gCAAIG,UAAWvT,SAASsT,iBAAiB,CAAC,MAAO,KAAMA,eAAe,IAAK,IAAM;AAEjF1mB,iCAAKA,IAAIglB,EAAEzzB,CAAC,IAAIo1B,WAAW;AAG3B,gCAAI/T,KAAIoS,EAAEzzB,CAAC;AACXyzB,8BAAEzzB,CAAC,IAAIyzB,EAAEhlB,CAAC;AACVglB,8BAAEhlB,CAAC,IAAI4S;0BACX;AAGA,+BAAKgU,KAAK,KAAKC,KAAK;wBACxB;wBAEAjO,iBAAiB,SAAA,gBAAU3E,GAAGrc,QAAQ;AAClCqc,4BAAErc,MAAM,KAAKkvB,sBAAsBzvB,KAAK,IAAI;wBAChD;wBAEAic,SAAS,MAAI;wBAEbgD,QAAQ;sBACZ,CAAC;AAED,+BAASwQ,wBAAwB;AAE7B,4BAAI9B,IAAI,KAAKyB;AACb,4BAAIl1B,IAAI,KAAKq1B;AACb,4BAAI5mB,IAAI,KAAK6mB;AAGb,4BAAIE,gBAAgB;AACpB,iCAASzoB,KAAI,GAAGA,KAAI,GAAGA,MAAK;AACxB/M,+BAAKA,IAAI,KAAK;AACdyO,+BAAKA,IAAIglB,EAAEzzB,CAAC,KAAK;AAGjB,8BAAIqhB,KAAIoS,EAAEzzB,CAAC;AACXyzB,4BAAEzzB,CAAC,IAAIyzB,EAAEhlB,CAAC;AACVglB,4BAAEhlB,CAAC,IAAI4S;AAEPmU,2CAAiB/B,GAAGA,EAAEzzB,CAAC,IAAIyzB,EAAEhlB,CAAC,KAAK,GAAG,KAAM,KAAK1B,KAAI;wBACzD;AAGA,6BAAKsoB,KAAKr1B;AACV,6BAAKs1B,KAAK7mB;AAEV,+BAAO+mB;sBACX;AAUA9a,wBAAEsa,MAAMzP,aAAajC,cAAc0R,GAAG;AAKtC,0BAAIS,UAAUtV,OAAOsV,UAAUT,IAAIxT,OAAO;;;;;;wBAMtCuC,KAAKiR,IAAIjR,IAAIvC,OAAO;0BAChBkU,MAAM;wBACV,CAAC;wBAEDjU,UAAU,SAAA,WAAY;AAClBuT,8BAAIvT,SAAS3b,KAAK,IAAI;AAGtB,mCAAS9F,IAAI,KAAK+jB,IAAI2R,MAAM11B,IAAI,GAAGA,KAAK;AACpCu1B,kDAAsBzvB,KAAK,IAAI;0BACnC;wBACJ;sBACJ,CAAC;AAUD4U,wBAAE+a,UAAUlQ,aAAajC,cAAcmS,OAAO;oBAClD,GAAC;AAGD,2BAAO1V,SAASiV;kBAEjB,CAAC;;;;;;;;AC1ID;AAAE,mBAAA,SAAUpV,MAAMC,SAAS;AAC1B,wBAAI,MAA6B;AAEhCvkB,sBAAAA,QAAOyC,UAAUA,WAAU8hB,QAAQvhB,qBAAQ,GAAQ,CAAC;oBACrD,OACK;oBAAA;kBAQN,GAAC,QAAO,SAAUyhB,UAAU;AAa1B,qBAAA,SAAUpU,OAAM;AAEb,0BAAI+O,IAAIqF;AACR,0BAAIC,QAAQtF,EAAEuF;AACd,0BAAIuD,YAAYxD,MAAMwD;AACtB,0BAAI2I,SAASnM,MAAMmM;AACnB,0BAAIhM,SAASzF,EAAE0F;AAGf,0BAAIuV,MAAMnS,UAAUS,OAAO,CACvB,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAC3D,GAAI,GAAG,IAAK,GAAG,IAAK,GAAG,IAAK,GAAG,IAAK,GAAI,GAAI,GAAI,GAAG,IAAI,IAAK,GAC5D,GAAG,IAAI,IAAK,GAAI,GAAG,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAG,IAAI,IAAK,GAAG,IAC3D,GAAI,GAAG,IAAI,IAAK,GAAI,GAAG,IAAK,GAAG,IAAK,GAAI,GAAG,IAAI,IAAK,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAG,IAAK,GAAG,IAAI,IAAK,GAAI,GAAI,GAAG,IAAK,GAAG,IAAI,EAAE,CAAC;AAClE,0BAAI2R,MAAMpS,UAAUS,OAAO,CACvB,GAAG,IAAK,GAAI,GAAI,GAAI,GAAG,IAAK,GAAG,IAAK,GAAG,IAAK,GAAI,GAAG,IAAK,GAAG,IAC3D,GAAG,IAAK,GAAI,GAAI,GAAG,IAAK,GAAG,IAAI,IAAI,IAAK,GAAG,IAAK,GAAI,GAAI,GAAI,GAC5D,IAAK,GAAI,GAAI,GAAI,GAAG,IAAK,GAAI,GAAG,IAAK,GAAG,IAAK,GAAG,IAAK,GAAI,GAAG,IAC5D,GAAI,GAAI,GAAI,GAAI,GAAG,IAAI,IAAK,GAAI,GAAG,IAAK,GAAG,IAAK,GAAI,GAAG,IAAI,IAC3D,IAAI,IAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAG,IAAI,IAAK,GAAI,GAAI,GAAG,EAAE,CAAC;AACnE,0BAAI4R,MAAMrS,UAAUS,OAAO,CACtB,IAAI,IAAI,IAAI,IAAK,GAAI,GAAI,GAAI,GAAG,IAAI,IAAI,IAAI,IAAK,GAAI,GAAI,GAAI,GAC9D,GAAG,GAAK,GAAG,IAAI,IAAK,GAAI,GAAG,IAAK,GAAG,IAAI,IAAK,GAAG,IAAK,GAAG,IAAI,IAC3D,IAAI,IAAK,GAAI,GAAG,IAAK,GAAG,IAAI,IAAI,IAAK,GAAG,IAAK,GAAI,GAAG,IAAK,GAAI,GAC3D,IAAI,IAAI,IAAI,IAAI,IAAI,IAAK,GAAI,GAAI,GAAG,IAAK,GAAI,GAAI,GAAI,GAAI,GAAG,IAC9D,GAAG,IAAK,GAAG,IAAK,GAAI,GAAG,IAAI,IAAK,GAAG,IAAI,IAAI,IAAI,IAAK,GAAI,GAAI,CAAC,CAAE;AACnE,0BAAI6R,MAAMtS,UAAUS,OAAO,CACvB,GAAI,GAAI,GAAG,IAAI,IAAI,IAAI,IAAK,GAAI,GAAI,GAAI,GAAG,IAAI,IAAI,IAAI,IAAK,GAC5D,GAAG,IAAI,IAAK,GAAG,IAAK,GAAI,GAAG,IAAK,GAAI,GAAG,IAAK,GAAI,GAAG,IAAI,IAAI,IAC3D,GAAI,GAAG,IAAI,IAAK,GAAI,GAAI,GAAG,IAAI,IAAI,IAAK,GAAG,IAAI,IAAI,IAAK,GAAI,GAC5D,IAAK,GAAI,GAAG,IAAI,IAAI,IAAK,GAAG,IAAK,GAAI,GAAG,IAAK,GAAG,IAAK,GAAG,IAAK,GAC7D,GAAI,GAAG,IAAK,GAAG,IAAK,GAAG,IAAK,GAAI,GAAG,IAAK,GAAI,GAAG,IAAI,IAAI,IAAI,EAAE,CAAE;AAEnE,0BAAI8R,MAAOvS,UAAUS,OAAO,CAAE,GAAY,YAAY,YAAY,YAAY,UAAU,CAAC;AACzF,0BAAI+R,MAAOxS,UAAUS,OAAO,CAAE,YAAY,YAAY,YAAY,YAAY,CAAU,CAAC;AAKzF,0BAAIgS,YAAY9V,OAAO8V,YAAY9J,OAAO3K,OAAO;wBAC7CC,UAAU,SAAA,WAAY;AAClB,+BAAKmO,QAASpM,UAAUS,OAAO,CAAC,YAAY,YAAY,YAAY,WAAY,UAAU,CAAC;wBAC/F;wBAEAoD,iBAAiB,SAAA,gBAAU3E,GAAGrc,QAAQ;AAGlC,mCAASrG,IAAI,GAAGA,IAAI,IAAIA,KAAK;AAEzB,gCAAI6vB,WAAWxpB,SAASrG;AACxB,gCAAI8vB,aAAapN,EAAEmN,QAAQ;AAG3BnN,8BAAEmN,QAAQ,KACHC,cAAc,IAAOA,eAAe,MAAO,YAC3CA,cAAc,KAAOA,eAAe,KAAO;0BAEtD;AAEA,8BAAIC,IAAK,KAAKH,MAAM9N;AACpB,8BAAIoU,KAAKH,IAAIjU;AACb,8BAAIqU,KAAKH,IAAIlU;AACb,8BAAIsU,KAAKT,IAAI7T;AACb,8BAAIuU,KAAKT,IAAI9T;AACb,8BAAIwU,KAAKT,IAAI/T;AACb,8BAAIyU,KAAKT,IAAIhU;AAGb,8BAAI0U,IAAIC,IAAIC,IAAIC,IAAIC;AACpB,8BAAIC,IAAIC,IAAIC,IAAIC,IAAIC;AAEpBJ,+BAAKL,KAAKzG,EAAE,CAAC;AACb+G,+BAAKL,KAAK1G,EAAE,CAAC;AACbgH,+BAAKL,KAAK3G,EAAE,CAAC;AACbiH,+BAAKL,KAAK5G,EAAE,CAAC;AACbkH,+BAAKL,KAAK7G,EAAE,CAAC;AAEb,8BAAI1O;AACJ,mCAASrhB,IAAI,GAAGA,IAAI,IAAIA,KAAK,GAAG;AAC5BqhB,4BAAAA,KAAKmV,KAAM9T,EAAErc,SAAO+vB,GAAGp2B,CAAC,CAAC,IAAG;AAC5B,gCAAIA,IAAE,IAAG;AACZqhB,8BAAAA,MAAM6V,GAAGT,IAAGC,IAAGC,EAAE,IAAIT,GAAG,CAAC;4BACtB,WAAWl2B,IAAE,IAAI;AACpBqhB,8BAAAA,MAAM8V,GAAGV,IAAGC,IAAGC,EAAE,IAAIT,GAAG,CAAC;4BACtB,WAAWl2B,IAAE,IAAI;AACpBqhB,8BAAAA,MAAM+V,GAAGX,IAAGC,IAAGC,EAAE,IAAIT,GAAG,CAAC;4BACtB,WAAWl2B,IAAE,IAAI;AACpBqhB,8BAAAA,MAAMgW,GAAGZ,IAAGC,IAAGC,EAAE,IAAIT,GAAG,CAAC;4BACtB,OAAO;AACV7U,8BAAAA,MAAMiW,GAAGb,IAAGC,IAAGC,EAAE,IAAIT,GAAG,CAAC;4BACtB;AACA7U,4BAAAA,KAAIA,KAAE;AACNA,4BAAAA,KAAKkW,KAAKlW,IAAEiV,GAAGt2B,CAAC,CAAC;AACjBqhB,4BAAAA,KAAKA,KAAEuV,KAAI;AACXJ,iCAAKI;AACLA,iCAAKD;AACLA,iCAAKY,KAAKb,IAAI,EAAE;AAChBA,iCAAKD;AACLA,iCAAKpV;AAELA,4BAAAA,KAAKwV,KAAKnU,EAAErc,SAAOgwB,GAAGr2B,CAAC,CAAC,IAAG;AAC3B,gCAAIA,IAAE,IAAG;AACZqhB,8BAAAA,MAAMiW,GAAGR,IAAGC,IAAGC,EAAE,IAAIb,GAAG,CAAC;4BACtB,WAAWn2B,IAAE,IAAI;AACpBqhB,8BAAAA,MAAMgW,GAAGP,IAAGC,IAAGC,EAAE,IAAIb,GAAG,CAAC;4BACtB,WAAWn2B,IAAE,IAAI;AACpBqhB,8BAAAA,MAAM+V,GAAGN,IAAGC,IAAGC,EAAE,IAAIb,GAAG,CAAC;4BACtB,WAAWn2B,IAAE,IAAI;AACpBqhB,8BAAAA,MAAM8V,GAAGL,IAAGC,IAAGC,EAAE,IAAIb,GAAG,CAAC;4BACtB,OAAO;AACV9U,8BAAAA,MAAM6V,GAAGJ,IAAGC,IAAGC,EAAE,IAAIb,GAAG,CAAC;4BACtB;AACA9U,4BAAAA,KAAIA,KAAE;AACNA,4BAAAA,KAAKkW,KAAKlW,IAAEkV,GAAGv2B,CAAC,CAAC;AACjBqhB,4BAAAA,KAAKA,KAAE4V,KAAI;AACXJ,iCAAKI;AACLA,iCAAKD;AACLA,iCAAKO,KAAKR,IAAI,EAAE;AAChBA,iCAAKD;AACLA,iCAAKzV;0BACT;AAEAA,0BAAAA,KAAQ0O,EAAE,CAAC,IAAI2G,KAAKM,KAAI;AACxBjH,4BAAE,CAAC,IAAKA,EAAE,CAAC,IAAI4G,KAAKM,KAAI;AACxBlH,4BAAE,CAAC,IAAKA,EAAE,CAAC,IAAI6G,KAAKC,KAAI;AACxB9G,4BAAE,CAAC,IAAKA,EAAE,CAAC,IAAIyG,KAAKM,KAAI;AACxB/G,4BAAE,CAAC,IAAKA,EAAE,CAAC,IAAI0G,KAAKM,KAAI;AACxBhH,4BAAE,CAAC,IAAK1O;wBACZ;wBAEAyD,aAAa,SAAA,cAAY;AAErB,8BAAIhe,QAAO,KAAKwgB;AAChB,8BAAIwE,YAAYhlB,MAAKgb;AAErB,8BAAIsP,aAAa,KAAKzF,cAAc;AACpC,8BAAI0F,YAAYvqB,MAAKkb,WAAW;AAGhC8J,oCAAUuF,cAAc,CAAC,KAAK,OAAS,KAAKA,YAAY;AACxDvF,qCAAauF,YAAY,OAAQ,KAAM,KAAK,EAAE,KACvCD,cAAc,IAAOA,eAAe,MAAO,YAC3CA,cAAc,KAAOA,eAAe,KAAO;AAElDtqB,0BAAAA,MAAKkb,YAAY8J,UAAUhtB,SAAS,KAAK;AAGzC,+BAAK6lB,SAAQ;AAGb,8BAAI2H,QAAO,KAAKsD;AAChB,8BAAIG,IAAIzD,MAAKxK;AAGb,mCAAS9hB,IAAI,GAAGA,IAAI,GAAGA,KAAK;AAExB,gCAAIwxB,MAAMzB,EAAE/vB,CAAC;AAGb+vB,8BAAE/vB,CAAC,KAAOwxB,OAAO,IAAOA,QAAQ,MAAO,YAC7BA,OAAO,KAAOA,QAAQ,KAAO;0BAC3C;AAGA,iCAAOlF;wBACX;wBAEApC,OAAO,SAAA,QAAY;AACf,8BAAIA,SAAQiC,OAAOjC,MAAMpkB,KAAK,IAAI;AAClCokB,0BAAAA,OAAM0F,QAAQ,KAAKA,MAAM1F,MAAK;AAE9B,iCAAOA;wBACX;sBACJ,CAAC;AAGD,+BAASgN,GAAGx5B,IAAGC,IAAG65B,GAAG;AACjB,+BAAS95B,KAAMC,KAAM65B;sBAEzB;AAEA,+BAASL,GAAGz5B,IAAGC,IAAG65B,GAAG;AACjB,+BAAU95B,KAAIC,KAAQ,CAACD,KAAI85B;sBAC/B;AAEA,+BAASJ,GAAG15B,IAAGC,IAAG65B,GAAG;AACjB,gCAAU95B,KAAM,CAAEC,MAAQ65B;sBAC9B;AAEA,+BAASH,GAAG35B,IAAGC,IAAG65B,GAAG;AACjB,+BAAU95B,KAAM85B,IAAQ75B,KAAI,CAAE65B;sBAClC;AAEA,+BAASF,GAAG55B,IAAGC,IAAG65B,GAAG;AACjB,+BAAS95B,MAAOC,KAAK,CAAE65B;sBAE3B;AAEA,+BAASD,KAAK75B,IAAEqP,IAAG;AACf,+BAAQrP,MAAGqP,KAAMrP,OAAK,KAAGqP;sBAC7B;AAiBA2N,wBAAEub,YAAY9J,OAAO7I,cAAc2S,SAAS;AAgB5Cvb,wBAAE+c,gBAAgBtL,OAAOK,kBAAkByJ,SAAS;oBACxD,GAAEtqB,IAAI;AAGN,2BAAOoU,SAASkW;kBAEjB,CAAC;;;;;;;;AC1QD;AAAE,mBAAA,SAAUrW,MAAMC,SAAS;AAC1B,wBAAI,MAA6B;AAEhCvkB,sBAAAA,QAAOyC,UAAUA,WAAU8hB,QAAQvhB,qBAAQ,GAAQ,CAAC;oBACrD,OACK;oBAAA;kBAQN,GAAC,QAAO,SAAUyhB,UAAU;AAE1B,qBAAA,WAAY;AAET,0BAAIrF,IAAIqF;AACR,0BAAIC,QAAQtF,EAAEuF;AACd,0BAAIuD,YAAYxD,MAAMwD;AACtB,0BAAI2I,SAASnM,MAAMmM;AACnB,0BAAIhM,SAASzF,EAAE0F;AAGf,0BAAIsX,IAAI,CAAA;AAKR,0BAAIzE,OAAO9S,OAAO8S,OAAO9G,OAAO3K,OAAO;wBACnCC,UAAU,SAAA,WAAY;AAClB,+BAAKmO,QAAQ,IAAIpM,UAAUa,KAAK,CAC5B,YAAY,YACZ,YAAY,WACZ,UAAU,CACb;wBACL;wBAEAgD,iBAAiB,SAAA,gBAAU3E,GAAGrc,QAAQ;AAElC,8BAAI0pB,IAAI,KAAKH,MAAM9N;AAGnB,8BAAI9mB,KAAI+0B,EAAE,CAAC;AACX,8BAAItlB,IAAIslB,EAAE,CAAC;AACX,8BAAIxpB,KAAIwpB,EAAE,CAAC;AACX,8BAAIhP,KAAIgP,EAAE,CAAC;AACX,8BAAIr0B,KAAIq0B,EAAE,CAAC;AAGX,mCAAS/vB,IAAI,GAAGA,IAAI,IAAIA,KAAK;AACzB,gCAAIA,IAAI,IAAI;AACR03B,gCAAE13B,CAAC,IAAI0iB,EAAErc,SAASrG,CAAC,IAAI;4BAC3B,OAAO;AACH,kCAAI+M,KAAI2qB,EAAE13B,IAAI,CAAC,IAAI03B,EAAE13B,IAAI,CAAC,IAAI03B,EAAE13B,IAAI,EAAE,IAAI03B,EAAE13B,IAAI,EAAE;AAClD03B,gCAAE13B,CAAC,IAAK+M,MAAK,IAAMA,OAAM;4BAC7B;AAEA,gCAAIsU,MAAMrmB,MAAK,IAAMA,OAAM,MAAOU,KAAIg8B,EAAE13B,CAAC;AACzC,gCAAIA,IAAI,IAAI;AACRqhB,8BAAAA,OAAO5W,IAAIlE,KAAM,CAACkE,IAAIsW,MAAM;4BAChC,WAAW/gB,IAAI,IAAI;AACfqhB,8BAAAA,OAAM5W,IAAIlE,KAAIwa,MAAK;4BACvB,WAAW/gB,IAAI,IAAI;AACfqhB,8BAAAA,OAAO5W,IAAIlE,KAAMkE,IAAIsW,KAAMxa,KAAIwa,MAAM;4BACzC,OAAyB;AACrBM,8BAAAA,OAAM5W,IAAIlE,KAAIwa,MAAK;4BACvB;AAEArlB,4BAAAA,KAAIqlB;AACJA,4BAAAA,KAAIxa;AACJA,4BAAAA,KAAKkE,KAAK,KAAOA,MAAM;AACvBA,gCAAIzP;AACJA,4BAAAA,KAAIqmB;0BACR;AAGA0O,4BAAE,CAAC,IAAKA,EAAE,CAAC,IAAI/0B,KAAK;AACpB+0B,4BAAE,CAAC,IAAKA,EAAE,CAAC,IAAItlB,IAAK;AACpBslB,4BAAE,CAAC,IAAKA,EAAE,CAAC,IAAIxpB,KAAK;AACpBwpB,4BAAE,CAAC,IAAKA,EAAE,CAAC,IAAIhP,KAAK;AACpBgP,4BAAE,CAAC,IAAKA,EAAE,CAAC,IAAIr0B,KAAK;wBACxB;wBAEAopB,aAAa,SAAA,cAAY;AAErB,8BAAIhe,QAAO,KAAKwgB;AAChB,8BAAIwE,YAAYhlB,MAAKgb;AAErB,8BAAIsP,aAAa,KAAKzF,cAAc;AACpC,8BAAI0F,YAAYvqB,MAAKkb,WAAW;AAGhC8J,oCAAUuF,cAAc,CAAC,KAAK,OAAS,KAAKA,YAAY;AACxDvF,qCAAauF,YAAY,OAAQ,KAAM,KAAK,EAAE,IAAI1lB,KAAKiL,MAAMwa,aAAa,UAAW;AACrFtF,qCAAauF,YAAY,OAAQ,KAAM,KAAK,EAAE,IAAID;AAClDtqB,0BAAAA,MAAKkb,WAAW8J,UAAUhtB,SAAS;AAGnC,+BAAK6lB,SAAQ;AAGb,iCAAO,KAAKiL;wBAChB;wBAEA1F,OAAO,SAAA,QAAY;AACf,8BAAIA,SAAQiC,OAAOjC,MAAMpkB,KAAK,IAAI;AAClCokB,0BAAAA,OAAM0F,QAAQ,KAAKA,MAAM1F,MAAK;AAE9B,iCAAOA;wBACX;sBACJ,CAAC;AAgBDxP,wBAAEuY,OAAO9G,OAAO7I,cAAc2P,IAAI;AAgBlCvY,wBAAEid,WAAWxL,OAAOK,kBAAkByG,IAAI;oBAC9C,GAAC;AAGD,2BAAOlT,SAASkT;kBAEjB,CAAC;;;;;;;;ACrJD;AAAE,mBAAA,SAAUrT,MAAMC,SAASC,OAAO;AACjC,wBAAI,MAA6B;AAEhCxkB,sBAAAA,QAAOyC,UAAUA,WAAU8hB,QAAQvhB,qBAAQ,GAAQ,GAAGA,qBAAQ,IAAU,CAAC;oBAC1E,OACK;oBAAA;kBAQN,GAAC,QAAO,SAAUyhB,UAAU;AAE1B,qBAAA,WAAY;AAET,0BAAIrF,IAAIqF;AACR,0BAAIC,QAAQtF,EAAEuF;AACd,0BAAIuD,YAAYxD,MAAMwD;AACtB,0BAAIrD,SAASzF,EAAE0F;AACf,0BAAIwX,SAASzX,OAAOyX;AAKpB,0BAAIC,SAAS1X,OAAO0X,SAASD,OAAOpW,OAAO;wBACvCC,UAAU,SAAA,WAAY;AAClB,+BAAKmO,QAAQ,IAAIpM,UAAUa,KAAK,CAC5B,YAAY,WAAY,WAAY,YACpC,YAAY,YAAY,YAAY,UAAU,CACjD;wBACL;wBAEAS,aAAa,SAAA,cAAY;AACrB,8BAAIwH,QAAOsL,OAAO9S,YAAYhf,KAAK,IAAI;AAEvCwmB,0BAAAA,MAAKtK,YAAY;AAEjB,iCAAOsK;wBACX;sBACJ,CAAC;AAgBD5R,wBAAEmd,SAASD,OAAOtU,cAAcuU,MAAM;AAgBtCnd,wBAAEod,aAAaF,OAAOpL,kBAAkBqL,MAAM;oBAClD,GAAC;AAGD,2BAAO9X,SAAS8X;kBAEjB,CAAC;;;;;;;;;AC/ED;AAAE,mBAAA,SAAUjY,MAAMC,SAAS;AAC1B,wBAAI,MAA6B;AAEhCvkB,sBAAAA,QAAOyC,UAAUA,WAAU8hB,QAAQvhB,qBAAQ,GAAQ,CAAC;oBACrD,OACK;oBAAA;kBAQN,GAAC,QAAO,SAAUyhB,UAAU;AAE1B,qBAAA,SAAUpU,OAAM;AAEb,0BAAI+O,IAAIqF;AACR,0BAAIC,QAAQtF,EAAEuF;AACd,0BAAIuD,YAAYxD,MAAMwD;AACtB,0BAAI2I,SAASnM,MAAMmM;AACnB,0BAAIhM,SAASzF,EAAE0F;AAGf,0BAAI2P,IAAI,CAAA;AACR,0BAAI8D,IAAI,CAAA;AAGP,uBAAA,WAAY;AACT,iCAASkE,QAAQhrB,IAAG;AAChB,8BAAIirB,QAAQrsB,MAAKssB,KAAKlrB,EAAC;AACvB,mCAASmrB,SAAS,GAAGA,UAAUF,OAAOE,UAAU;AAC5C,gCAAI,EAAEnrB,KAAImrB,SAAS;AACf,qCAAO;4BACX;0BACJ;AAEA,iCAAO;wBACX;AAEA,iCAASC,kBAAkBprB,IAAG;AAC1B,kCAASA,MAAKA,KAAI,MAAM,aAAe;wBAC3C;AAEA,4BAAIA,KAAI;AACR,4BAAIqrB,SAAS;AACb,+BAAOA,SAAS,IAAI;AAChB,8BAAIL,QAAQhrB,EAAC,GAAG;AACZ,gCAAIqrB,SAAS,GAAG;AACZrI,gCAAEqI,MAAM,IAAID,kBAAkBxsB,MAAK0G,IAAItF,IAAG,IAAI,CAAC,CAAC;4BACpD;AACA8mB,8BAAEuE,MAAM,IAAID,kBAAkBxsB,MAAK0G,IAAItF,IAAG,IAAI,CAAC,CAAC;AAEhDqrB;0BACJ;AAEArrB,0BAAAA;wBACJ;sBACJ,GAAC;AAGD,0BAAI2qB,IAAI,CAAA;AAKR,0BAAIE,SAASzX,OAAOyX,SAASzL,OAAO3K,OAAO;wBACvCC,UAAU,SAAA,WAAY;AAClB,+BAAKmO,QAAQ,IAAIpM,UAAUa,KAAK0L,EAAEhuB,MAAM,CAAC,CAAC;wBAC9C;wBAEAslB,iBAAiB,SAAA,gBAAU3E,GAAGrc,QAAQ;AAElC,8BAAI0pB,KAAI,KAAKH,MAAM9N;AAGnB,8BAAI9mB,KAAI+0B,GAAE,CAAC;AACX,8BAAItlB,IAAIslB,GAAE,CAAC;AACX,8BAAIxpB,KAAIwpB,GAAE,CAAC;AACX,8BAAIhP,KAAIgP,GAAE,CAAC;AACX,8BAAIr0B,KAAIq0B,GAAE,CAAC;AACX,8BAAIsI,IAAItI,GAAE,CAAC;AACX,8BAAIuI,IAAIvI,GAAE,CAAC;AACX,8BAAIwI,IAAIxI,GAAE,CAAC;AAGX,mCAAS/vB,IAAI,GAAGA,IAAI,IAAIA,KAAK;AACzB,gCAAIA,IAAI,IAAI;AACR03B,gCAAE13B,CAAC,IAAI0iB,EAAErc,SAASrG,CAAC,IAAI;4BAC3B,OAAO;AACH,kCAAIw4B,UAAUd,EAAE13B,IAAI,EAAE;AACtB,kCAAIy4B,UAAYD,WAAW,KAAOA,YAAY,MAC9BA,WAAW,KAAOA,YAAY,MAC9BA,YAAY;AAE5B,kCAAIE,UAAUhB,EAAE13B,IAAI,CAAC;AACrB,kCAAI24B,UAAYD,WAAW,KAAOA,YAAY,OAC9BA,WAAW,KAAOA,YAAY,MAC9BA,YAAY;AAE5BhB,gCAAE13B,CAAC,IAAIy4B,SAASf,EAAE13B,IAAI,CAAC,IAAI24B,SAASjB,EAAE13B,IAAI,EAAE;4BAChD;AAEA,gCAAI44B,KAAOl9B,KAAI28B,IAAM,CAAC38B,KAAI48B;AAC1B,gCAAIO,MAAO79B,KAAIyP,IAAMzP,KAAIuL,KAAMkE,IAAIlE;AAEnC,gCAAIuyB,UAAW99B,MAAK,KAAOA,OAAM,MAAQA,MAAK,KAAOA,OAAM,OAASA,MAAK,KAAOA,OAAM;AACtF,gCAAI+9B,UAAWr9B,MAAK,KAAOA,OAAM,MAAQA,MAAK,KAAOA,OAAM,OAASA,MAAK,IAAOA,OAAM;AAEtF,gCAAIynB,MAAKoV,IAAIQ,SAASH,KAAK/E,EAAE7zB,CAAC,IAAI03B,EAAE13B,CAAC;AACrC,gCAAIojB,KAAK0V,SAASD;AAElBN,gCAAID;AACJA,gCAAID;AACJA,gCAAI38B;AACJA,4BAAAA,KAAKqlB,KAAIoC,MAAM;AACfpC,4BAAAA,KAAIxa;AACJA,4BAAAA,KAAIkE;AACJA,gCAAIzP;AACJA,4BAAAA,KAAKmoB,MAAKC,KAAM;0BACpB;AAGA2M,0BAAAA,GAAE,CAAC,IAAKA,GAAE,CAAC,IAAI/0B,KAAK;AACpB+0B,0BAAAA,GAAE,CAAC,IAAKA,GAAE,CAAC,IAAItlB,IAAK;AACpBslB,0BAAAA,GAAE,CAAC,IAAKA,GAAE,CAAC,IAAIxpB,KAAK;AACpBwpB,0BAAAA,GAAE,CAAC,IAAKA,GAAE,CAAC,IAAIhP,KAAK;AACpBgP,0BAAAA,GAAE,CAAC,IAAKA,GAAE,CAAC,IAAIr0B,KAAK;AACpBq0B,0BAAAA,GAAE,CAAC,IAAKA,GAAE,CAAC,IAAIsI,IAAK;AACpBtI,0BAAAA,GAAE,CAAC,IAAKA,GAAE,CAAC,IAAIuI,IAAK;AACpBvI,0BAAAA,GAAE,CAAC,IAAKA,GAAE,CAAC,IAAIwI,IAAK;wBACxB;wBAEAzT,aAAa,SAAA,cAAY;AAErB,8BAAIhe,QAAO,KAAKwgB;AAChB,8BAAIwE,YAAYhlB,MAAKgb;AAErB,8BAAIsP,aAAa,KAAKzF,cAAc;AACpC,8BAAI0F,YAAYvqB,MAAKkb,WAAW;AAGhC8J,oCAAUuF,cAAc,CAAC,KAAK,OAAS,KAAKA,YAAY;AACxDvF,qCAAauF,YAAY,OAAQ,KAAM,KAAK,EAAE,IAAI1lB,MAAKiL,MAAMwa,aAAa,UAAW;AACrFtF,qCAAauF,YAAY,OAAQ,KAAM,KAAK,EAAE,IAAID;AAClDtqB,0BAAAA,MAAKkb,WAAW8J,UAAUhtB,SAAS;AAGnC,+BAAK6lB,SAAQ;AAGb,iCAAO,KAAKiL;wBAChB;wBAEA1F,OAAO,SAAA,QAAY;AACf,8BAAIA,SAAQiC,OAAOjC,MAAMpkB,KAAK,IAAI;AAClCokB,0BAAAA,OAAM0F,QAAQ,KAAKA,MAAM1F,MAAK;AAE9B,iCAAOA;wBACX;sBACJ,CAAC;AAgBDxP,wBAAEkd,SAASzL,OAAO7I,cAAcsU,MAAM;AAgBtCld,wBAAEse,aAAa7M,OAAOK,kBAAkBoL,MAAM;oBAClD,GAAEjsB,IAAI;AAGN,2BAAOoU,SAAS6X;kBAEjB,CAAC;;;;;;;;;ACtMD;AAAE,mBAAA,SAAUhY,MAAMC,SAASC,OAAO;AACjC,wBAAI,MAA6B;AAEhCxkB,sBAAAA,QAAOyC,UAAUA,WAAU8hB,QAAQvhB,qBAAQ,GAAQ,GAAGA,qBAAQ,IAAY,CAAC;oBAC5E,OACK;oBAAA;kBAQN,GAAC,QAAO,SAAUyhB,UAAU;AAE1B,qBAAA,SAAUpU,OAAM;AAEb,0BAAI+O,IAAIqF;AACR,0BAAIC,QAAQtF,EAAEuF;AACd,0BAAIuD,YAAYxD,MAAMwD;AACtB,0BAAI2I,SAASnM,MAAMmM;AACnB,0BAAI8M,QAAQve,EAAEwe;AACd,0BAAIC,UAAUF,MAAMG;AACpB,0BAAIjZ,SAASzF,EAAE0F;AAGf,0BAAIiZ,cAAc,CAAA;AAClB,0BAAIC,aAAc,CAAA;AAClB,0BAAIC,kBAAkB,CAAA;AAGrB,uBAAA,WAAY;AAET,4BAAI77B,KAAI,GAAGC,KAAI;AACf,iCAAS0jB,KAAI,GAAGA,KAAI,IAAIA,MAAK;AACzBgY,sCAAY37B,KAAI,IAAIC,EAAC,KAAM0jB,KAAI,MAAMA,KAAI,KAAK,IAAK;AAEnD,8BAAImY,OAAO77B,KAAI;AACf,8BAAI87B,QAAQ,IAAI/7B,KAAI,IAAIC,MAAK;AAC7BD,0BAAAA,KAAI87B;AACJ77B,0BAAAA,KAAI87B;wBACR;AAGA,iCAAS/7B,KAAI,GAAGA,KAAI,GAAGA,MAAK;AACxB,mCAASC,KAAI,GAAGA,KAAI,GAAGA,MAAK;AACxB27B,uCAAW57B,KAAI,IAAIC,EAAC,IAAIA,MAAM,IAAID,KAAI,IAAIC,MAAK,IAAK;0BACxD;wBACJ;AAGA,4BAAI+7B,OAAO;AACX,iCAAS15B,IAAI,GAAGA,IAAI,IAAIA,KAAK;AACzB,8BAAI25B,mBAAmB;AACvB,8BAAIC,mBAAmB;AAEvB,mCAASnrB,IAAI,GAAGA,IAAI,GAAGA,KAAK;AACxB,gCAAIirB,OAAO,GAAM;AACb,kCAAIG,eAAe,KAAKprB,KAAK;AAC7B,kCAAIorB,cAAc,IAAI;AAClBD,oDAAoB,KAAKC;8BAC7B,OAAoC;AAChCF,oDAAoB,KAAME,cAAc;8BAC5C;4BACJ;AAGA,gCAAIH,OAAO,KAAM;AAEbA,qCAAQA,QAAQ,IAAK;4BACzB,OAAO;AACHA,uCAAS;4BACb;0BACJ;AAEAH,0CAAgBv5B,CAAC,IAAIm5B,QAAQlV,OAAO0V,kBAAkBC,gBAAgB;wBAC1E;sBACJ,GAAC;AAGD,0BAAIlK,IAAI,CAAA;AACP,uBAAA,WAAY;AACT,iCAAS1vB,IAAI,GAAGA,IAAI,IAAIA,KAAK;AACzB0vB,4BAAE1vB,CAAC,IAAIm5B,QAAQlV,OAAM;wBACzB;sBACJ,GAAC;AAKD,0BAAI6V,OAAO3Z,OAAO2Z,OAAO3N,OAAO3K,OAAO;;;;;;;;;wBASnCuC,KAAKoI,OAAOpI,IAAIvC,OAAO;0BACnBuY,cAAc;wBAClB,CAAC;wBAEDtY,UAAU,SAAA,WAAY;AAClB,8BAAIuY,SAAQ,KAAKC,SAAS,CAAA;AAC1B,mCAASj6B,IAAI,GAAGA,IAAI,IAAIA,KAAK;AACzBg6B,4BAAAA,OAAMh6B,CAAC,IAAI,IAAIm5B,QAAQ9U,KAAI;0BAC/B;AAEA,+BAAKoB,aAAa,OAAO,IAAI,KAAK1B,IAAIgW,gBAAgB;wBAC1D;wBAEA1S,iBAAiB,SAAA,gBAAU3E,GAAGrc,QAAQ;AAElC,8BAAI2zB,SAAQ,KAAKC;AACjB,8BAAIC,kBAAkB,KAAKzU,YAAY;AAGvC,mCAASzlB,IAAI,GAAGA,IAAIk6B,iBAAiBl6B,KAAK;AAEtC,gCAAIm6B,MAAOzX,EAAErc,SAAS,IAAIrG,CAAC;AAC3B,gCAAIo6B,OAAO1X,EAAErc,SAAS,IAAIrG,IAAI,CAAC;AAG/Bm6B,mCACOA,OAAO,IAAOA,QAAQ,MAAO,YAC7BA,OAAO,KAAOA,QAAQ,KAAO;AAEpCC,oCACOA,QAAQ,IAAOA,SAAS,MAAO,YAC/BA,QAAQ,KAAOA,SAAS,KAAO;AAItC,gCAAIC,OAAOL,OAAMh6B,CAAC;AAClBq6B,iCAAKC,QAAQF;AACbC,iCAAKE,OAAQJ;0BACjB;AAGA,mCAASlX,SAAQ,GAAGA,SAAQ,IAAIA,UAAS;AAErC,qCAASvlB,KAAI,GAAGA,KAAI,GAAGA,MAAK;AAExB,kCAAI88B,OAAO,GAAGC,OAAO;AACrB,uCAAS98B,KAAI,GAAGA,KAAI,GAAGA,MAAK;AACxB,oCAAI08B,OAAOL,OAAMt8B,KAAI,IAAIC,EAAC;AAC1B68B,wCAAQH,KAAKC;AACbG,wCAAQJ,KAAKE;8BACjB;AAGA,kCAAIG,KAAKhL,EAAEhyB,EAAC;AACZg9B,iCAAGJ,OAAOE;AACVE,iCAAGH,MAAOE;4BACd;AACA,qCAAS/8B,KAAI,GAAGA,KAAI,GAAGA,MAAK;AAExB,kCAAIi9B,MAAMjL,GAAGhyB,KAAI,KAAK,CAAC;AACvB,kCAAIk9B,MAAMlL,GAAGhyB,KAAI,KAAK,CAAC;AACvB,kCAAIm9B,SAASD,IAAIN;AACjB,kCAAIQ,SAASF,IAAIL;AAGjB,kCAAIC,OAAOG,IAAIL,QAASO,UAAU,IAAMC,WAAW;AACnD,kCAAIL,OAAOE,IAAIJ,OAASO,UAAU,IAAMD,WAAW;AACnD,uCAASl9B,KAAI,GAAGA,KAAI,GAAGA,MAAK;AACxB,oCAAI08B,OAAOL,OAAMt8B,KAAI,IAAIC,EAAC;AAC1B08B,qCAAKC,QAAQE;AACbH,qCAAKE,OAAQE;8BACjB;4BACJ;AAGA,qCAASM,YAAY,GAAGA,YAAY,IAAIA,aAAa;AACjD,kCAAIP;AACJ,kCAAIC;AAGJ,kCAAIJ,OAAOL,OAAMe,SAAS;AAC1B,kCAAIC,UAAUX,KAAKC;AACnB,kCAAIW,UAAUZ,KAAKE;AACnB,kCAAIW,YAAY7B,YAAY0B,SAAS;AAGrC,kCAAIG,YAAY,IAAI;AAChBV,uCAAQQ,WAAWE,YAAcD,YAAa,KAAKC;AACnDT,uCAAQQ,WAAWC,YAAcF,YAAa,KAAKE;8BACvD,OAAkC;AAC9BV,uCAAQS,WAAYC,YAAY,KAAQF,YAAa,KAAKE;AAC1DT,uCAAQO,WAAYE,YAAY,KAAQD,YAAa,KAAKC;8BAC9D;AAGA,kCAAIC,UAAUzL,EAAE4J,WAAWyB,SAAS,CAAC;AACrCI,sCAAQb,OAAOE;AACfW,sCAAQZ,MAAOE;4BACnB;AAGA,gCAAIW,KAAK1L,EAAE,CAAC;AACZ,gCAAI2L,SAASrB,OAAM,CAAC;AACpBoB,+BAAGd,OAAOe,OAAOf;AACjBc,+BAAGb,MAAOc,OAAOd;AAGjB,qCAAS78B,KAAI,GAAGA,KAAI,GAAGA,MAAK;AACxB,uCAASC,KAAI,GAAGA,KAAI,GAAGA,MAAK;AAExB,oCAAIo9B,YAAYr9B,KAAI,IAAIC;AACxB,oCAAI08B,OAAOL,OAAMe,SAAS;AAC1B,oCAAIO,QAAQ5L,EAAEqL,SAAS;AACvB,oCAAIQ,UAAU7L,GAAIhyB,KAAI,KAAK,IAAK,IAAIC,EAAC;AACrC,oCAAI69B,UAAU9L,GAAIhyB,KAAI,KAAK,IAAK,IAAIC,EAAC;AAGrC08B,qCAAKC,OAAOgB,MAAMhB,OAAQ,CAACiB,QAAQjB,OAAOkB,QAAQlB;AAClDD,qCAAKE,MAAOe,MAAMf,MAAQ,CAACgB,QAAQhB,MAAOiB,QAAQjB;8BACtD;4BACJ;AAGA,gCAAIF,OAAOL,OAAM,CAAC;AAClB,gCAAIyB,gBAAgBlC,gBAAgBtW,MAAK;AACzCoX,iCAAKC,QAAQmB,cAAcnB;AAC3BD,iCAAKE,OAAQkB,cAAclB;0BAC/B;wBACJ;wBAEAzV,aAAa,SAAA,cAAY;AAErB,8BAAIhe,QAAO,KAAKwgB;AAChB,8BAAIwE,YAAYhlB,MAAKgb;AACrB,8BAAIsP,aAAa,KAAKzF,cAAc;AACpC,8BAAI0F,YAAYvqB,MAAKkb,WAAW;AAChC,8BAAI0Z,gBAAgB,KAAKjW,YAAY;AAGrCqG,oCAAUuF,cAAc,CAAC,KAAK,KAAQ,KAAKA,YAAY;AACvDvF,qCAAYngB,MAAKgf,MAAM0G,YAAY,KAAKqK,aAAa,IAAIA,kBAAmB,KAAK,CAAC,KAAK;AACvF50B,0BAAAA,MAAKkb,WAAW8J,UAAUhtB,SAAS;AAGnC,+BAAK6lB,SAAQ;AAGb,8BAAIqV,SAAQ,KAAKC;AACjB,8BAAI0B,oBAAoB,KAAK5X,IAAIgW,eAAe;AAChD,8BAAI6B,oBAAoBD,oBAAoB;AAG5C,8BAAIE,YAAY,CAAA;AAChB,mCAAS77B,IAAI,GAAGA,IAAI47B,mBAAmB57B,KAAK;AAExC,gCAAIq6B,OAAOL,OAAMh6B,CAAC;AAClB,gCAAIg7B,UAAUX,KAAKC;AACnB,gCAAIW,UAAUZ,KAAKE;AAGnBS,uCACOA,WAAW,IAAOA,YAAY,MAAO,YACrCA,WAAW,KAAOA,YAAY,KAAO;AAE5CC,uCACOA,WAAW,IAAOA,YAAY,MAAO,YACrCA,WAAW,KAAOA,YAAY,KAAO;AAI5CY,sCAAU97B,KAAKk7B,OAAO;AACtBY,sCAAU97B,KAAKi7B,OAAO;0BAC1B;AAGA,iCAAO,IAAIxX,UAAUa,KAAKwX,WAAWF,iBAAiB;wBAC1D;wBAEAzR,OAAO,SAAA,QAAY;AACf,8BAAIA,SAAQiC,OAAOjC,MAAMpkB,KAAK,IAAI;AAElC,8BAAIk0B,SAAQ9P,OAAM+P,SAAS,KAAKA,OAAOl4B,MAAM,CAAC;AAC9C,mCAAS/B,IAAI,GAAGA,IAAI,IAAIA,KAAK;AACzBg6B,4BAAAA,OAAMh6B,CAAC,IAAIg6B,OAAMh6B,CAAC,EAAEkqB,MAAK;0BAC7B;AAEA,iCAAOA;wBACX;sBACJ,CAAC;AAgBDxP,wBAAEof,OAAO3N,OAAO7I,cAAcwW,IAAI;AAgBlCpf,wBAAEohB,WAAW3P,OAAOK,kBAAkBsN,IAAI;oBAC9C,GAAEnuB,IAAI;AAGN,2BAAOoU,SAAS+Z;kBAEjB,CAAC;;;;;;;;ACrUD;AAAE,mBAAA,SAAUla,MAAMC,SAASC,OAAO;AACjC,wBAAI,MAA6B;AAEhCxkB,sBAAAA,QAAOyC,UAAUA,WAAU8hB,QAAQvhB,qBAAQ,GAAQ,GAAGA,qBAAQ,IAAY,GAAGA,qBAAQ,IAAU,CAAC;oBACjG,OACK;oBAAA;kBAQN,GAAC,QAAO,SAAUyhB,UAAU;AAE1B,qBAAA,WAAY;AAET,0BAAIrF,IAAIqF;AACR,0BAAIkZ,QAAQve,EAAEwe;AACd,0BAAIC,UAAUF,MAAMG;AACpB,0BAAI2C,eAAe9C,MAAMzV;AACzB,0BAAIrD,SAASzF,EAAE0F;AACf,0BAAI4b,SAAS7b,OAAO6b;AAKpB,0BAAIC,SAAS9b,OAAO8b,SAASD,OAAOxa,OAAO;wBACvCC,UAAU,SAAA,WAAY;AAClB,+BAAKmO,QAAQ,IAAImM,aAAa1X,KAAK,CAC/B,IAAI8U,QAAQ9U,KAAK,YAAY,UAAU,GAAG,IAAI8U,QAAQ9U,KAAK,YAAY,SAAU,GACjF,IAAI8U,QAAQ9U,KAAK,YAAY,SAAU,GAAG,IAAI8U,QAAQ9U,KAAK,WAAY,UAAU,GACjF,IAAI8U,QAAQ9U,KAAK,YAAY,UAAU,GAAG,IAAI8U,QAAQ9U,KAAK,YAAY,UAAU,GACjF,IAAI8U,QAAQ9U,KAAK,YAAY,UAAU,GAAG,IAAI8U,QAAQ9U,KAAK,YAAY,UAAU,CAAC,CACrF;wBACL;wBAEAS,aAAa,SAAA,cAAY;AACrB,8BAAIwH,QAAO0P,OAAOlX,YAAYhf,KAAK,IAAI;AAEvCwmB,0BAAAA,MAAKtK,YAAY;AAEjB,iCAAOsK;wBACX;sBACJ,CAAC;AAgBD5R,wBAAEuhB,SAASD,OAAO1Y,cAAc2Y,MAAM;AAgBtCvhB,wBAAEwhB,aAAaF,OAAOxP,kBAAkByP,MAAM;oBAClD,GAAC;AAGD,2BAAOlc,SAASkc;kBAEjB,CAAC;;;;;;;;AClFD;AAAE,mBAAA,SAAUrc,MAAMC,SAASC,OAAO;AACjC,wBAAI,MAA6B;AAEhCxkB,sBAAAA,QAAOyC,UAAUA,WAAU8hB,QAAQvhB,qBAAQ,GAAQ,GAAGA,qBAAQ,IAAY,CAAC;oBAC5E,OACK;oBAAA;kBAQN,GAAC,QAAO,SAAUyhB,UAAU;AAE1B,qBAAA,WAAY;AAET,0BAAIrF,IAAIqF;AACR,0BAAIC,QAAQtF,EAAEuF;AACd,0BAAIkM,SAASnM,MAAMmM;AACnB,0BAAI8M,QAAQve,EAAEwe;AACd,0BAAIC,UAAUF,MAAMG;AACpB,0BAAI2C,eAAe9C,MAAMzV;AACzB,0BAAIrD,SAASzF,EAAE0F;AAEf,+BAAS+b,iBAAiB;AACtB,+BAAOhD,QAAQlV,OAAO7W,MAAM+rB,SAASt1B,SAAS;sBAClD;AAGA,0BAAIgwB,IAAI,CACJsI,eAAe,YAAY,UAAU,GAAGA,eAAe,YAAY,SAAU,GAC7EA,eAAe,YAAY,UAAU,GAAGA,eAAe,YAAY,UAAU,GAC7EA,eAAe,WAAY,UAAU,GAAGA,eAAe,YAAY,UAAU,GAC7EA,eAAe,YAAY,UAAU,GAAGA,eAAe,YAAY,UAAU,GAC7EA,eAAe,YAAY,UAAU,GAAGA,eAAe,WAAY,UAAU,GAC7EA,eAAe,WAAY,UAAU,GAAGA,eAAe,YAAY,UAAU,GAC7EA,eAAe,YAAY,UAAU,GAAGA,eAAe,YAAY,SAAU,GAC7EA,eAAe,YAAY,SAAU,GAAGA,eAAe,YAAY,UAAU,GAC7EA,eAAe,YAAY,UAAU,GAAGA,eAAe,YAAY,SAAU,GAC7EA,eAAe,WAAY,UAAU,GAAGA,eAAe,WAAY,UAAU,GAC7EA,eAAe,WAAY,UAAU,GAAGA,eAAe,YAAY,UAAU,GAC7EA,eAAe,YAAY,UAAU,GAAGA,eAAe,YAAY,UAAU,GAC7EA,eAAe,YAAY,UAAU,GAAGA,eAAe,YAAY,SAAU,GAC7EA,eAAe,YAAY,UAAU,GAAGA,eAAe,YAAY,UAAU,GAC7EA,eAAe,YAAY,UAAU,GAAGA,eAAe,YAAY,UAAU,GAC7EA,eAAe,WAAY,UAAU,GAAGA,eAAe,WAAY,SAAU,GAC7EA,eAAe,WAAY,UAAU,GAAGA,eAAe,WAAY,UAAU,GAC7EA,eAAe,YAAY,UAAU,GAAGA,eAAe,YAAY,UAAU,GAC7EA,eAAe,YAAY,UAAU,GAAGA,eAAe,YAAY,UAAU,GAC7EA,eAAe,YAAY,UAAU,GAAGA,eAAe,YAAY,SAAU,GAC7EA,eAAe,YAAY,UAAU,GAAGA,eAAe,YAAY,UAAU,GAC7EA,eAAe,YAAY,UAAU,GAAGA,eAAe,YAAY,SAAU,GAC7EA,eAAe,YAAY,UAAU,GAAGA,eAAe,YAAY,UAAU,GAC7EA,eAAe,YAAY,UAAU,GAAGA,eAAe,WAAY,SAAU,GAC7EA,eAAe,WAAY,UAAU,GAAGA,eAAe,WAAY,UAAU,GAC7EA,eAAe,WAAY,UAAU,GAAGA,eAAe,WAAY,UAAU,GAC7EA,eAAe,WAAY,UAAU,GAAGA,eAAe,YAAY,UAAU,GAC7EA,eAAe,YAAY,UAAU,GAAGA,eAAe,YAAY,UAAU,GAC7EA,eAAe,YAAY,UAAU,GAAGA,eAAe,YAAY,UAAU,GAC7EA,eAAe,YAAY,UAAU,GAAGA,eAAe,YAAY,SAAU,GAC7EA,eAAe,YAAY,SAAU,GAAGA,eAAe,YAAY,UAAU,GAC7EA,eAAe,YAAY,UAAU,GAAGA,eAAe,YAAY,UAAU,GAC7EA,eAAe,YAAY,UAAU,GAAGA,eAAe,YAAY,SAAU,GAC7EA,eAAe,YAAY,UAAU,GAAGA,eAAe,YAAY,UAAU,GAC7EA,eAAe,WAAY,UAAU,GAAGA,eAAe,WAAY,UAAU,GAC7EA,eAAe,WAAY,UAAU,GAAGA,eAAe,WAAY,SAAU,GAC7EA,eAAe,WAAY,SAAU,GAAGA,eAAe,WAAY,UAAU,GAC7EA,eAAe,YAAY,SAAU,GAAGA,eAAe,YAAY,UAAU,GAC7EA,eAAe,YAAY,UAAU,GAAGA,eAAe,YAAY,UAAU,GAC7EA,eAAe,YAAY,SAAU,GAAGA,eAAe,YAAY,UAAU,CAAC;AAIlF,0BAAIzE,IAAI,CAAA;AACP,uBAAA,WAAY;AACT,iCAAS13B,IAAI,GAAGA,IAAI,IAAIA,KAAK;AACzB03B,4BAAE13B,CAAC,IAAIm8B,eAAc;wBACzB;sBACJ,GAAC;AAKD,0BAAIH,SAAS7b,OAAO6b,SAAS7P,OAAO3K,OAAO;wBACvCC,UAAU,SAAA,WAAY;AAClB,+BAAKmO,QAAQ,IAAImM,aAAa1X,KAAK,CAC/B,IAAI8U,QAAQ9U,KAAK,YAAY,UAAU,GAAG,IAAI8U,QAAQ9U,KAAK,YAAY,UAAU,GACjF,IAAI8U,QAAQ9U,KAAK,YAAY,UAAU,GAAG,IAAI8U,QAAQ9U,KAAK,YAAY,UAAU,GACjF,IAAI8U,QAAQ9U,KAAK,YAAY,UAAU,GAAG,IAAI8U,QAAQ9U,KAAK,YAAY,SAAU,GACjF,IAAI8U,QAAQ9U,KAAK,WAAY,UAAU,GAAG,IAAI8U,QAAQ9U,KAAK,YAAY,SAAU,CAAC,CACrF;wBACL;wBAEAgD,iBAAiB,SAAA,gBAAU3E,GAAGrc,QAAQ;AAElC,8BAAI0pB,IAAI,KAAKH,MAAM9N;AAEnB,8BAAIsa,KAAKrM,EAAE,CAAC;AACZ,8BAAIsM,KAAKtM,EAAE,CAAC;AACZ,8BAAIuM,KAAKvM,EAAE,CAAC;AACZ,8BAAIwM,KAAKxM,EAAE,CAAC;AACZ,8BAAIyM,KAAKzM,EAAE,CAAC;AACZ,8BAAI0M,KAAK1M,EAAE,CAAC;AACZ,8BAAI2M,KAAK3M,EAAE,CAAC;AACZ,8BAAI4M,KAAK5M,EAAE,CAAC;AAEZ,8BAAI6M,MAAMR,GAAG9B;AACb,8BAAIuC,MAAMT,GAAG7B;AACb,8BAAIuC,MAAMT,GAAG/B;AACb,8BAAIyC,MAAMV,GAAG9B;AACb,8BAAIyC,MAAMV,GAAGhC;AACb,8BAAI2C,MAAMX,GAAG/B;AACb,8BAAI2C,MAAMX,GAAGjC;AACb,8BAAI6C,MAAMZ,GAAGhC;AACb,8BAAI6C,MAAMZ,GAAGlC;AACb,8BAAI+C,MAAMb,GAAGjC;AACb,8BAAI+C,MAAMb,GAAGnC;AACb,8BAAIiD,MAAMd,GAAGlC;AACb,8BAAIiD,MAAMd,GAAGpC;AACb,8BAAImD,MAAMf,GAAGnC;AACb,8BAAImD,MAAMf,GAAGrC;AACb,8BAAIqD,MAAMhB,GAAGpC;AAGb,8BAAIqD,KAAKhB;AACT,8BAAIpG,KAAKqG;AACT,8BAAIgB,KAAKf;AACT,8BAAIrG,KAAKsG;AACT,8BAAInE,KAAKoE;AACT,8BAAItG,KAAKuG;AACT,8BAAIa,KAAKZ;AACT,8BAAIvG,KAAKwG;AACT,8BAAIY,KAAKX;AACT,8BAAIxG,KAAKyG;AACT,8BAAIW,KAAKV;AACT,8BAAIW,KAAKV;AACT,8BAAI1I,KAAK2I;AACT,8BAAI1I,KAAK2I;AACT,8BAAIS,KAAKR;AACT,8BAAIxH,KAAKyH;AAGT,mCAAS39B,IAAI,GAAGA,IAAI,IAAIA,KAAK;AACzB,gCAAIm+B;AACJ,gCAAIC;AAGJ,gCAAIC,KAAK3G,EAAE13B,CAAC;AAGZ,gCAAIA,IAAI,IAAI;AACRo+B,oCAAMC,GAAG/D,OAAO5X,EAAErc,SAASrG,IAAI,CAAC,IAAQ;AACxCm+B,oCAAME,GAAG9D,MAAO7X,EAAErc,SAASrG,IAAI,IAAI,CAAC,IAAI;4BAC5C,OAAO;AAEH,kCAAIw4B,UAAWd,EAAE13B,IAAI,EAAE;AACvB,kCAAIs+B,WAAW9F,QAAQ8B;AACvB,kCAAIiE,WAAW/F,QAAQ+B;AACvB,kCAAIiE,WAAaF,aAAa,IAAMC,YAAY,OAASD,aAAa,IAAMC,YAAY,MAAQD,aAAa;AAC7G,kCAAIG,WAAaF,aAAa,IAAMD,YAAY,OAASC,aAAa,IAAMD,YAAY,OAASC,aAAa,IAAMD,YAAY;AAGhI,kCAAI5F,UAAWhB,EAAE13B,IAAI,CAAC;AACtB,kCAAI0+B,WAAWhG,QAAQ4B;AACvB,kCAAIqE,WAAWjG,QAAQ6B;AACvB,kCAAIqE,WAAaF,aAAa,KAAOC,YAAY,OAASD,YAAY,IAAMC,aAAa,MAAQD,aAAa;AAC9G,kCAAIG,WAAaF,aAAa,KAAOD,YAAY,OAASC,YAAY,IAAMD,aAAa,OAASC,aAAa,IAAMD,YAAY;AAGjI,kCAAII,MAAOpH,EAAE13B,IAAI,CAAC;AAClB,kCAAI++B,OAAOD,IAAIxE;AACf,kCAAI0E,OAAOF,IAAIvE;AAEf,kCAAI0E,OAAQvH,EAAE13B,IAAI,EAAE;AACpB,kCAAIk/B,QAAQD,KAAK3E;AACjB,kCAAI6E,QAAQF,KAAK1E;AAEjB4D,oCAAMM,UAAUO;AAChBZ,oCAAMI,UAAUO,QAASZ,QAAQ,IAAMM,YAAY,IAAK,IAAI;AAC5DN,oCAAMA,MAAMU;AACZT,oCAAMA,MAAMQ,WAAYT,QAAQ,IAAMU,YAAY,IAAK,IAAI;AAC3DV,oCAAMA,MAAMgB;AACZf,oCAAMA,MAAMc,SAAUf,QAAQ,IAAMgB,UAAU,IAAK,IAAI;AAEvDd,iCAAG/D,OAAO8D;AACVC,iCAAG9D,MAAO4D;4BACd;AAEA,gCAAIiB,MAAQrB,KAAKC,KAAO,CAACD,KAAKlJ;AAC9B,gCAAIwK,MAAQzI,KAAKqH,KAAO,CAACrH,KAAK9B;AAC9B,gCAAIwK,OAAQ1B,KAAKC,KAAOD,KAAKhF,KAAOiF,KAAKjF;AACzC,gCAAI2G,OAAQ/I,KAAKC,KAAOD,KAAKE,KAAOD,KAAKC;AAEzC,gCAAI8I,WAAY5B,OAAO,KAAOpH,MAAM,MAASoH,MAAM,KAAQpH,OAAO,MAAQoH,MAAM,KAAOpH,OAAO;AAC9F,gCAAIiJ,WAAYjJ,OAAO,KAAOoH,MAAM,MAASpH,MAAM,KAAQoH,OAAO,MAAQpH,MAAM,KAAOoH,OAAO;AAC9F,gCAAI8B,WAAY3B,OAAO,KAAOnH,MAAM,OAASmH,OAAO,KAAOnH,MAAM,OAASmH,MAAM,KAAOnH,OAAO;AAC9F,gCAAI+I,WAAY/I,OAAO,KAAOmH,MAAM,OAASnH,OAAO,KAAOmH,MAAM,OAASnH,MAAM,KAAOmH,OAAO;AAG9F,gCAAI6B,KAAM/L,EAAE7zB,CAAC;AACb,gCAAI6/B,MAAMD,GAAGtF;AACb,gCAAIwF,MAAMF,GAAGrF;AAEb,gCAAIwF,MAAM7J,KAAKyJ;AACf,gCAAIK,MAAM9B,KAAKwB,WAAYK,QAAQ,IAAM7J,OAAO,IAAK,IAAI;AACzD,gCAAI6J,MAAMA,MAAMV;AAChB,gCAAIW,MAAMA,MAAMZ,OAAQW,QAAQ,IAAMV,QAAQ,IAAK,IAAI;AACvD,gCAAIU,MAAMA,MAAMD;AAChB,gCAAIE,MAAMA,MAAMH,OAAQE,QAAQ,IAAMD,QAAQ,IAAK,IAAI;AACvD,gCAAIC,MAAMA,MAAM5B;AAChB,gCAAI6B,MAAMA,MAAM5B,OAAQ2B,QAAQ,IAAM5B,QAAQ,IAAK,IAAI;AAGvD,gCAAI8B,MAAMR,UAAUF;AACpB,gCAAIW,MAAMV,UAAUF,QAASW,QAAQ,IAAMR,YAAY,IAAK,IAAI;AAGhEvB,iCAAKrJ;AACLqB,iCAAKpB;AACLD,iCAAKmJ;AACLlJ,iCAAKmJ;AACLD,iCAAKD;AACLE,iCAAKrH;AACLA,iCAAMD,KAAKoJ,MAAO;AAClBhC,iCAAMD,KAAKkC,OAAQpJ,OAAO,IAAMD,OAAO,IAAK,IAAI,KAAM;AACtDmH,iCAAKlF;AACLjC,iCAAKD;AACLkC,iCAAKiF;AACLnH,iCAAKD;AACLoH,iCAAKD;AACLnH,iCAAKD;AACLA,iCAAMuJ,MAAME,MAAO;AACnBrC,iCAAMoC,MAAME,OAAQ1J,OAAO,IAAMuJ,QAAQ,IAAK,IAAI,KAAM;0BAC5D;AAGAlD,gCAAMT,GAAG7B,MAAQsC,MAAMrG;AACvB4F,6BAAG9B,OAAQsC,MAAMgB,MAAOf,QAAQ,IAAMrG,OAAO,IAAK,IAAI;AACtDuG,gCAAMV,GAAG9B,MAAQwC,MAAMtG;AACvB4F,6BAAG/B,OAAQwC,MAAMe,MAAOd,QAAQ,IAAMtG,OAAO,IAAK,IAAI;AACtDwG,gCAAMX,GAAG/B,MAAQ0C,MAAMvG;AACvB4F,6BAAGhC,OAAQ0C,MAAMpE,MAAOqE,QAAQ,IAAMvG,OAAO,IAAK,IAAI;AACtDyG,gCAAMZ,GAAGhC,MAAQ4C,MAAMxG;AACvB4F,6BAAGjC,OAAQ4C,MAAMY,MAAOX,QAAQ,IAAMxG,OAAO,IAAK,IAAI;AACtD0G,gCAAMb,GAAGjC,MAAQ8C,MAAMzG;AACvB4F,6BAAGlC,OAAQ8C,MAAMW,MAAOV,QAAQ,IAAMzG,OAAO,IAAK,IAAI;AACtD2G,gCAAMd,GAAGlC,MAAQgD,MAAMU;AACvBxB,6BAAGnC,OAAQgD,MAAMU,MAAOT,QAAQ,IAAMU,OAAO,IAAK,IAAI;AACtDR,gCAAMf,GAAGnC,MAAQkD,MAAM3I;AACvB4H,6BAAGpC,OAAQkD,MAAM3I,MAAO4I,QAAQ,IAAM3I,OAAO,IAAK,IAAI;AACtD6I,gCAAMhB,GAAGpC,MAAQoD,MAAMzH;AACvByG,6BAAGrC,OAAQoD,MAAMQ,MAAOP,QAAQ,IAAMzH,OAAO,IAAK,IAAI;wBAC1D;wBAEApR,aAAa,SAAA,cAAY;AAErB,8BAAIhe,QAAO,KAAKwgB;AAChB,8BAAIwE,YAAYhlB,MAAKgb;AAErB,8BAAIsP,aAAa,KAAKzF,cAAc;AACpC,8BAAI0F,YAAYvqB,MAAKkb,WAAW;AAGhC8J,oCAAUuF,cAAc,CAAC,KAAK,OAAS,KAAKA,YAAY;AACxDvF,qCAAauF,YAAY,QAAS,MAAO,KAAK,EAAE,IAAI1lB,KAAKiL,MAAMwa,aAAa,UAAW;AACvFtF,qCAAauF,YAAY,QAAS,MAAO,KAAK,EAAE,IAAID;AACpDtqB,0BAAAA,MAAKkb,WAAW8J,UAAUhtB,SAAS;AAGnC,+BAAK6lB,SAAQ;AAGb,8BAAI2H,QAAO,KAAKsD,MAAMuQ,MAAK;AAG3B,iCAAO7T;wBACX;wBAEApC,OAAO,SAAA,QAAY;AACf,8BAAIA,SAAQiC,OAAOjC,MAAMpkB,KAAK,IAAI;AAClCokB,0BAAAA,OAAM0F,QAAQ,KAAKA,MAAM1F,MAAK;AAE9B,iCAAOA;wBACX;wBAEAzE,WAAW,OAAK;sBACpB,CAAC;AAgBD/K,wBAAEshB,SAAS7P,OAAO7I,cAAc0Y,MAAM;AAgBtCthB,wBAAE0lB,aAAajU,OAAOK,kBAAkBwP,MAAM;oBAClD,GAAC;AAGD,2BAAOjc,SAASic;kBAEjB,CAAC;;;;;;;;;ACrUD;AAAE,mBAAA,SAAUpc,MAAMC,SAASC,OAAO;AACjC,wBAAI,MAA6B;AAEhCxkB,sBAAAA,QAAOyC,UAAUA,WAAU8hB,QAAQvhB,qBAAQ,GAAQ,GAAGA,qBAAQ,IAAc,GAAGA,qBAAQ,IAAO,GAAGA,qBAAQ,IAAU,GAAGA,qBAAQ,IAAe,CAAC;oBAC/I,OACK;oBAAA;kBAQN,GAAC,QAAO,SAAUyhB,UAAU;AAE1B,qBAAA,WAAY;AAET,0BAAIrF,IAAIqF;AACR,0BAAIC,QAAQtF,EAAEuF;AACd,0BAAIuD,YAAYxD,MAAMwD;AACtB,0BAAItD,cAAcF,MAAME;AACxB,0BAAIC,SAASzF,EAAE0F;AAGf,0BAAIigB,MAAM,CACN,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAI,GAC5B,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAC5B,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAC5B,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAC5B,IAAI,IAAI,IAAI,GAAI,IAAI,IAAI,IAAI,IAC5B,IAAI,IAAI,IAAI,GAAI,IAAI,IAAI,IAAI,IAC5B,IAAI,IAAI,IAAI,GAAI,IAAI,IAAI,IAAI,CAAC;AAIjC,0BAAIC,MAAM,CACN,IAAI,IAAI,IAAI,IAAI,GAAI,GACpB,GAAI,IAAI,IAAI,GAAI,IAAI,IACpB,IAAI,IAAI,IAAI,GAAI,IAAI,GACpB,IAAI,GAAI,IAAI,IAAI,IAAI,GACpB,IAAI,IAAI,IAAI,IAAI,IAAI,IACpB,IAAI,IAAI,IAAI,IAAI,IAAI,IACpB,IAAI,IAAI,IAAI,IAAI,IAAI,IACpB,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE;AAI1B,0BAAIC,aAAa,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE;AAGhF,0BAAIC,SAAS,CACT;wBACI,GAAK;wBACL,WAAY;wBACZ,WAAY;wBACZ,WAAY;wBACZ,YAAY;wBACZ,YAAY;wBACZ,YAAY;wBACZ,YAAY;wBACZ,YAAY;wBACZ,YAAY;wBACZ,YAAY;wBACZ,YAAY;wBACZ,YAAY;wBACZ,YAAY;wBACZ,YAAY;wBACZ,YAAY;wBACZ,WAAW;wBACX,WAAY;wBACZ,WAAY;wBACZ,WAAY;wBACZ,YAAY;wBACZ,YAAY;wBACZ,YAAY;wBACZ,YAAY;wBACZ,YAAY;wBACZ,YAAY;wBACZ,YAAY;wBACZ,YAAY;wBACZ,YAAY;wBACZ,YAAY;wBACZ,YAAY;wBACZ,YAAY;wBACZ,GAAK;wBACL,WAAY;wBACZ,WAAY;wBACZ,WAAY;wBACZ,YAAY;wBACZ,YAAY;wBACZ,YAAY;wBACZ,YAAY;wBACZ,YAAY;wBACZ,YAAY;wBACZ,YAAY;wBACZ,YAAY;wBACZ,YAAY;wBACZ,YAAY;wBACZ,YAAY;wBACZ,YAAY;wBACZ,WAAW;wBACX,WAAY;wBACZ,WAAY;wBACZ,WAAY;wBACZ,YAAY;wBACZ,YAAY;wBACZ,YAAY;wBACZ,YAAY;wBACZ,YAAY;wBACZ,YAAY;wBACZ,YAAY;wBACZ,YAAY;wBACZ,YAAY;wBACZ,YAAY;wBACZ,YAAY;wBACZ,YAAY;sBAChB,GACA;wBACI,GAAK;wBACL,UAAW;wBACX,UAAW;wBACX,UAAW;wBACX,UAAW;wBACX,UAAW;wBACX,WAAW;wBACX,WAAW;wBACX,WAAW;wBACX,WAAW;wBACX,WAAW;wBACX,WAAW;wBACX,WAAW;wBACX,WAAW;wBACX,WAAW;wBACX,WAAW;wBACX,SAAU;wBACV,UAAW;wBACX,UAAW;wBACX,UAAW;wBACX,UAAW;wBACX,UAAW;wBACX,WAAW;wBACX,WAAW;wBACX,WAAW;wBACX,WAAW;wBACX,WAAW;wBACX,WAAW;wBACX,WAAW;wBACX,WAAW;wBACX,WAAW;wBACX,WAAW;wBACX,WAAY;wBACZ,WAAY;wBACZ,WAAY;wBACZ,WAAY;wBACZ,WAAY;wBACZ,WAAY;wBACZ,WAAY;wBACZ,WAAY;wBACZ,WAAY;wBACZ,WAAY;wBACZ,WAAY;wBACZ,WAAY;wBACZ,WAAY;wBACZ,WAAY;wBACZ,WAAY;wBACZ,WAAY;wBACZ,WAAY;wBACZ,WAAY;wBACZ,WAAY;wBACZ,WAAY;wBACZ,WAAY;wBACZ,WAAY;wBACZ,WAAY;wBACZ,WAAY;wBACZ,WAAY;wBACZ,WAAY;wBACZ,WAAY;wBACZ,WAAY;wBACZ,WAAY;wBACZ,WAAY;wBACZ,WAAY;wBACZ,WAAY;sBAChB,GACA;wBACI,GAAK;wBACL,SAAU;wBACV,SAAU;wBACV,SAAU;wBACV,SAAU;wBACV,SAAU;wBACV,SAAU;wBACV,SAAU;wBACV,SAAU;wBACV,SAAU;wBACV,UAAU;wBACV,UAAU;wBACV,UAAU;wBACV,UAAU;wBACV,UAAU;wBACV,UAAU;wBACV,QAAS;wBACT,SAAU;wBACV,SAAU;wBACV,SAAU;wBACV,SAAU;wBACV,SAAU;wBACV,SAAU;wBACV,SAAU;wBACV,SAAU;wBACV,SAAU;wBACV,UAAU;wBACV,UAAU;wBACV,UAAU;wBACV,UAAU;wBACV,UAAU;wBACV,UAAU;wBACV,UAAW;wBACX,UAAW;wBACX,UAAW;wBACX,UAAW;wBACX,UAAW;wBACX,UAAW;wBACX,UAAW;wBACX,UAAW;wBACX,UAAW;wBACX,UAAW;wBACX,UAAW;wBACX,UAAW;wBACX,UAAW;wBACX,UAAW;wBACX,UAAW;wBACX,UAAW;wBACX,UAAW;wBACX,UAAW;wBACX,UAAW;wBACX,UAAW;wBACX,UAAW;wBACX,UAAW;wBACX,UAAW;wBACX,UAAW;wBACX,UAAW;wBACX,UAAW;wBACX,UAAW;wBACX,UAAW;wBACX,UAAW;wBACX,UAAW;wBACX,UAAW;wBACX,UAAW;sBACf,GACA;wBACI,GAAK;wBACL,OAAS;wBACT,QAAS;wBACT,QAAS;wBACT,QAAS;wBACT,QAAS;wBACT,QAAS;wBACT,QAAS;wBACT,QAAS;wBACT,QAAS;wBACT,QAAS;wBACT,QAAS;wBACT,QAAS;wBACT,QAAS;wBACT,QAAS;wBACT,QAAS;wBACT,OAAQ;wBACR,OAAS;wBACT,QAAS;wBACT,QAAS;wBACT,QAAS;wBACT,QAAS;wBACT,QAAS;wBACT,QAAS;wBACT,QAAS;wBACT,QAAS;wBACT,QAAS;wBACT,QAAS;wBACT,QAAS;wBACT,QAAS;wBACT,QAAS;wBACT,SAAS;wBACT,SAAU;wBACV,SAAU;wBACV,SAAU;wBACV,SAAU;wBACV,SAAU;wBACV,SAAU;wBACV,SAAU;wBACV,SAAU;wBACV,SAAU;wBACV,SAAU;wBACV,SAAU;wBACV,SAAU;wBACV,SAAU;wBACV,SAAU;wBACV,SAAU;wBACV,SAAU;wBACV,SAAU;wBACV,SAAU;wBACV,SAAU;wBACV,SAAU;wBACV,SAAU;wBACV,SAAU;wBACV,SAAU;wBACV,SAAU;wBACV,SAAU;wBACV,SAAU;wBACV,SAAU;wBACV,SAAU;wBACV,SAAU;wBACV,SAAU;wBACV,SAAU;wBACV,SAAU;sBACd,GACA;wBACI,GAAK;wBACL,MAAQ;wBACR,MAAQ;wBACR,OAAQ;wBACR,OAAQ;wBACR,OAAQ;wBACR,OAAQ;wBACR,OAAQ;wBACR,OAAQ;wBACR,OAAQ;wBACR,OAAQ;wBACR,OAAQ;wBACR,OAAQ;wBACR,OAAQ;wBACR,OAAQ;wBACR,OAAQ;wBACR,MAAO;wBACP,MAAQ;wBACR,OAAQ;wBACR,OAAQ;wBACR,OAAQ;wBACR,OAAQ;wBACR,OAAQ;wBACR,OAAQ;wBACR,OAAQ;wBACR,OAAQ;wBACR,OAAQ;wBACR,OAAQ;wBACR,OAAQ;wBACR,OAAQ;wBACR,OAAQ;wBACR,OAAQ;wBACR,OAAS;wBACT,OAAS;wBACT,OAAS;wBACT,OAAS;wBACT,OAAS;wBACT,OAAS;wBACT,OAAS;wBACT,OAAS;wBACT,OAAS;wBACT,QAAS;wBACT,QAAS;wBACT,QAAS;wBACT,QAAS;wBACT,QAAS;wBACT,QAAS;wBACT,QAAS;wBACT,OAAS;wBACT,OAAS;wBACT,OAAS;wBACT,OAAS;wBACT,OAAS;wBACT,OAAS;wBACT,OAAS;wBACT,OAAS;wBACT,QAAS;wBACT,QAAS;wBACT,QAAS;wBACT,QAAS;wBACT,QAAS;wBACT,QAAS;wBACT,QAAS;wBACT,QAAS;sBACb,GACA;wBACI,GAAK;wBACL,KAAO;wBACP,KAAO;wBACP,KAAO;wBACP,MAAO;wBACP,MAAO;wBACP,MAAO;wBACP,MAAO;wBACP,MAAO;wBACP,MAAO;wBACP,MAAO;wBACP,MAAO;wBACP,MAAO;wBACP,MAAO;wBACP,MAAO;wBACP,MAAO;wBACP,KAAM;wBACN,KAAO;wBACP,KAAO;wBACP,KAAO;wBACP,MAAO;wBACP,MAAO;wBACP,MAAO;wBACP,MAAO;wBACP,MAAO;wBACP,MAAO;wBACP,MAAO;wBACP,MAAO;wBACP,MAAO;wBACP,MAAO;wBACP,MAAO;wBACP,MAAO;wBACP,MAAQ;wBACR,MAAQ;wBACR,MAAQ;wBACR,MAAQ;wBACR,MAAQ;wBACR,MAAQ;wBACR,MAAQ;wBACR,MAAQ;wBACR,MAAQ;wBACR,MAAQ;wBACR,MAAQ;wBACR,MAAQ;wBACR,MAAQ;wBACR,MAAQ;wBACR,MAAQ;wBACR,MAAQ;wBACR,MAAQ;wBACR,MAAQ;wBACR,MAAQ;wBACR,MAAQ;wBACR,MAAQ;wBACR,MAAQ;wBACR,MAAQ;wBACR,MAAQ;wBACR,MAAQ;wBACR,MAAQ;wBACR,MAAQ;wBACR,MAAQ;wBACR,MAAQ;wBACR,MAAQ;wBACR,MAAQ;wBACR,MAAQ;sBACZ,GACA;wBACI,GAAK;wBACL,IAAM;wBACN,IAAM;wBACN,IAAM;wBACN,IAAM;wBACN,IAAM;wBACN,IAAM;wBACN,KAAM;wBACN,KAAM;wBACN,KAAM;wBACN,KAAM;wBACN,KAAM;wBACN,KAAM;wBACN,KAAM;wBACN,KAAM;wBACN,KAAM;wBACN,GAAK;wBACL,IAAM;wBACN,IAAM;wBACN,IAAM;wBACN,IAAM;wBACN,IAAM;wBACN,KAAM;wBACN,KAAM;wBACN,KAAM;wBACN,KAAM;wBACN,KAAM;wBACN,KAAM;wBACN,KAAM;wBACN,KAAM;wBACN,KAAM;wBACN,KAAM;wBACN,KAAO;wBACP,KAAO;wBACP,KAAO;wBACP,KAAO;wBACP,KAAO;wBACP,KAAO;wBACP,KAAO;wBACP,KAAO;wBACP,KAAO;wBACP,KAAO;wBACP,KAAO;wBACP,KAAO;wBACP,KAAO;wBACP,KAAO;wBACP,KAAO;wBACP,KAAO;wBACP,KAAO;wBACP,KAAO;wBACP,KAAO;wBACP,KAAO;wBACP,KAAO;wBACP,KAAO;wBACP,KAAO;wBACP,KAAO;wBACP,KAAO;wBACP,KAAO;wBACP,KAAO;wBACP,KAAO;wBACP,KAAO;wBACP,KAAO;wBACP,KAAO;wBACP,KAAO;sBACX,GACA;wBACI,GAAK;wBACL,GAAK;wBACL,GAAK;wBACL,GAAK;wBACL,GAAK;wBACL,GAAK;wBACL,GAAK;wBACL,GAAK;wBACL,GAAK;wBACL,GAAK;wBACL,IAAK;wBACL,IAAK;wBACL,IAAK;wBACL,IAAK;wBACL,IAAK;wBACL,IAAK;wBACL,YAAY;wBACZ,YAAY;wBACZ,YAAY;wBACZ,YAAY;wBACZ,YAAY;wBACZ,YAAY;wBACZ,YAAY;wBACZ,YAAY;wBACZ,YAAY;wBACZ,YAAY;wBACZ,YAAY;wBACZ,YAAY;wBACZ,YAAY;wBACZ,YAAY;wBACZ,YAAY;wBACZ,YAAY;wBACZ,IAAM;wBACN,IAAM;wBACN,IAAM;wBACN,IAAM;wBACN,IAAM;wBACN,IAAM;wBACN,IAAM;wBACN,IAAM;wBACN,IAAM;wBACN,IAAM;wBACN,IAAM;wBACN,IAAM;wBACN,IAAM;wBACN,IAAM;wBACN,IAAM;wBACN,IAAM;wBACN,YAAY;wBACZ,YAAY;wBACZ,YAAY;wBACZ,YAAY;wBACZ,YAAY;wBACZ,YAAY;wBACZ,YAAY;wBACZ,YAAY;wBACZ,YAAY;wBACZ,YAAY;wBACZ,YAAY;wBACZ,YAAY;wBACZ,YAAY;wBACZ,YAAY;wBACZ,YAAY;wBACZ,YAAY;sBAChB,CAAC;AAIL,0BAAIC,YAAY,CACZ,YAAY,WAAY,UAAY,SACpC,QAAY,MAAY,KAAY,UAAU;AAMlD,0BAAIC,MAAMvgB,OAAOugB,MAAMxgB,YAAYsB,OAAO;wBACtCC,UAAU,SAAA,WAAY;AAElB,8BAAIpe,MAAM,KAAKue;AACf,8BAAIC,WAAWxe,IAAIye;AAGnB,8BAAI6e,UAAU,CAAA;AACd,mCAAS3gC,IAAI,GAAGA,IAAI,IAAIA,KAAK;AACzB,gCAAI4gC,YAAYP,IAAIrgC,CAAC,IAAI;AACzB2gC,oCAAQ3gC,CAAC,IAAK6hB,SAAS+e,cAAc,CAAC,MAAO,KAAKA,YAAY,KAAO;0BACzE;AAGA,8BAAIC,UAAU,KAAKC,WAAW,CAAA;AAC9B,mCAASC,UAAU,GAAGA,UAAU,IAAIA,WAAW;AAE3C,gCAAIC,SAASH,QAAQE,OAAO,IAAI,CAAA;AAGhC,gCAAIE,WAAWV,WAAWQ,OAAO;AAGjC,qCAAS/gC,IAAI,GAAGA,IAAI,IAAIA,KAAK;AAEzBghC,qCAAQhhC,IAAI,IAAK,CAAC,KAAK2gC,SAAUL,IAAItgC,CAAC,IAAI,IAAKihC,YAAY,EAAE,KAAM,KAAKjhC,IAAI;AAG5EghC,qCAAO,KAAMhhC,IAAI,IAAK,EAAE,KAAK2gC,QAAQ,MAAQL,IAAItgC,IAAI,EAAE,IAAI,IAAKihC,YAAY,EAAG,KAAM,KAAKjhC,IAAI;4BAClG;AAKAghC,mCAAO,CAAC,IAAKA,OAAO,CAAC,KAAK,IAAMA,OAAO,CAAC,MAAM;AAC9C,qCAAShhC,IAAI,GAAGA,IAAI,GAAGA,KAAK;AACxBghC,qCAAOhhC,CAAC,IAAIghC,OAAOhhC,CAAC,OAAQA,IAAI,KAAK,IAAI;4BAC7C;AACAghC,mCAAO,CAAC,IAAKA,OAAO,CAAC,KAAK,IAAMA,OAAO,CAAC,MAAM;0BAClD;AAGA,8BAAIE,aAAa,KAAKC,cAAc,CAAA;AACpC,mCAASnhC,IAAI,GAAGA,IAAI,IAAIA,KAAK;AACzBkhC,uCAAWlhC,CAAC,IAAI6gC,QAAQ,KAAK7gC,CAAC;0BAClC;wBACJ;wBAEAyiB,cAAc,SAAA,aAAUC,GAAGrc,QAAQ;AAC/B,+BAAKsc,cAAcD,GAAGrc,QAAQ,KAAKy6B,QAAQ;wBAC/C;wBAEAle,cAAc,SAAA,aAAUF,GAAGrc,QAAQ;AAC/B,+BAAKsc,cAAcD,GAAGrc,QAAQ,KAAK86B,WAAW;wBAClD;wBAEAxe,eAAe,SAAA,cAAUD,GAAGrc,QAAQw6B,SAAS;AAEzC,+BAAKO,UAAU1e,EAAErc,MAAM;AACvB,+BAAKg7B,UAAU3e,EAAErc,SAAS,CAAC;AAG3Bi7B,qCAAWx7B,KAAK,MAAM,GAAI,SAAU;AACpCw7B,qCAAWx7B,KAAK,MAAM,IAAI,KAAU;AACpCy7B,qCAAWz7B,KAAK,MAAM,GAAI,SAAU;AACpCy7B,qCAAWz7B,KAAK,MAAM,GAAI,QAAU;AACpCw7B,qCAAWx7B,KAAK,MAAM,GAAI,UAAU;AAGpC,mCAASmd,SAAQ,GAAGA,SAAQ,IAAIA,UAAS;AAErC,gCAAI+d,SAASH,QAAQ5d,MAAK;AAC1B,gCAAIue,SAAS,KAAKJ;AAClB,gCAAIK,SAAS,KAAKJ;AAGlB,gCAAIhJ,IAAI;AACR,qCAASr4B,IAAI,GAAGA,IAAI,GAAGA,KAAK;AACxBq4B,mCAAKmI,OAAOxgC,CAAC,IAAIyhC,SAAST,OAAOhhC,CAAC,KAAKygC,UAAUzgC,CAAC,OAAO,CAAC;4BAC9D;AACA,iCAAKohC,UAAUK;AACf,iCAAKJ,UAAUG,SAASnJ;0BAC5B;AAGA,8BAAIhX,KAAI,KAAK+f;AACb,+BAAKA,UAAU,KAAKC;AACpB,+BAAKA,UAAUhgB;AAGfigB,qCAAWx7B,KAAK,MAAM,GAAI,UAAU;AACpCy7B,qCAAWz7B,KAAK,MAAM,GAAI,QAAU;AACpCy7B,qCAAWz7B,KAAK,MAAM,GAAI,SAAU;AACpCw7B,qCAAWx7B,KAAK,MAAM,IAAI,KAAU;AACpCw7B,qCAAWx7B,KAAK,MAAM,GAAI,SAAU;AAGpC4c,4BAAErc,MAAM,IAAI,KAAK+6B;AACjB1e,4BAAErc,SAAS,CAAC,IAAI,KAAKg7B;wBACzB;wBAEAtf,SAAS,KAAG;wBAEZgD,QAAQ,KAAG;wBAEXU,WAAW,KAAG;sBAClB,CAAC;AAGD,+BAAS6b,WAAWj7B,QAAQq7B,MAAM;AAC9B,4BAAIrgB,MAAM,KAAK+f,YAAY/6B,SAAU,KAAKg7B,WAAWK;AACrD,6BAAKL,WAAWhgB;AAChB,6BAAK+f,WAAW/f,MAAKhb;sBACzB;AAEA,+BAASk7B,WAAWl7B,QAAQq7B,MAAM;AAC9B,4BAAIrgB,MAAM,KAAKggB,YAAYh7B,SAAU,KAAK+6B,WAAWM;AACrD,6BAAKN,WAAW/f;AAChB,6BAAKggB,WAAWhgB,MAAKhb;sBACzB;AAUAqU,wBAAEgmB,MAAMxgB,YAAYoD,cAAcod,GAAG;AAKrC,0BAAIiB,YAAYxhB,OAAOwhB,YAAYzhB,YAAYsB,OAAO;wBAClDC,UAAU,SAAA,WAAY;AAElB,8BAAIpe,MAAM,KAAKue;AACf,8BAAIC,WAAWxe,IAAIye;AAEnB,8BAAID,SAAS/iB,WAAW,KAAK+iB,SAAS/iB,WAAW,KAAK+iB,SAAS/iB,SAAS,GAAG;AACvE,kCAAM,IAAIuF,MAAM,+EAA+E;0BACnG;AAGA,8BAAIu9B,OAAO/f,SAAS9f,MAAM,GAAG,CAAC;AAC9B,8BAAI8/B,OAAOhgB,SAAS/iB,SAAS,IAAI+iB,SAAS9f,MAAM,GAAG,CAAC,IAAI8f,SAAS9f,MAAM,GAAG,CAAC;AAC3E,8BAAI+/B,OAAOjgB,SAAS/iB,SAAS,IAAI+iB,SAAS9f,MAAM,GAAG,CAAC,IAAI8f,SAAS9f,MAAM,GAAG,CAAC;AAG3E,+BAAKggC,QAAQrB,IAAI1c,gBAAgBR,UAAUS,OAAO2d,IAAI,CAAC;AACvD,+BAAKI,QAAQtB,IAAI1c,gBAAgBR,UAAUS,OAAO4d,IAAI,CAAC;AACvD,+BAAKI,QAAQvB,IAAI1c,gBAAgBR,UAAUS,OAAO6d,IAAI,CAAC;wBAC3D;wBAEArf,cAAc,SAAA,aAAUC,GAAGrc,QAAQ;AAC/B,+BAAK07B,MAAMtf,aAAaC,GAAGrc,MAAM;AACjC,+BAAK27B,MAAMpf,aAAaF,GAAGrc,MAAM;AACjC,+BAAK47B,MAAMxf,aAAaC,GAAGrc,MAAM;wBACrC;wBAEAuc,cAAc,SAAA,aAAUF,GAAGrc,QAAQ;AAC/B,+BAAK47B,MAAMrf,aAAaF,GAAGrc,MAAM;AACjC,+BAAK27B,MAAMvf,aAAaC,GAAGrc,MAAM;AACjC,+BAAK07B,MAAMnf,aAAaF,GAAGrc,MAAM;wBACrC;wBAEA0b,SAAS,MAAI;wBAEbgD,QAAQ,KAAG;wBAEXU,WAAW,KAAG;sBAClB,CAAC;AAUD/K,wBAAEinB,YAAYzhB,YAAYoD,cAAcqe,SAAS;oBACrD,GAAC;AAGD,2BAAO5hB,SAAS4hB;kBAEjB,CAAC;;;;;;;;;AC1wBD;AAAE,mBAAA,SAAU/hB,MAAMC,SAAS;AAC1B,wBAAI,MAA6B;AAEhCvkB,sBAAAA,QAAOyC,UAAUA,WAAU8hB,QAAQvhB,qBAAQ,GAAQ,CAAC;oBACrD,OACK;oBAAA;kBAQN,GAAC,QAAO,SAAUyhB,UAAU;AAE1B,qBAAA,SAAUjgB,YAAW;AAElB,0BAAI4a,IAAIqF;AACR,0BAAIC,QAAQtF,EAAEuF;AACd,0BAAIlK,OAAOiK,MAAMjK;AACjB,0BAAImsB,eAAeliB,MAAMwD;AAKzB,0BAAIyV,QAAQve,EAAEwe,MAAM,CAAC;AAKrB,0BAAIC,UAAUF,MAAMG,OAAOrjB,KAAKyL,OAAO;;;;;;;;;;;wBAWnC6C,MAAM,SAAAA,QAAUiW,MAAMC,KAAK;AACvB,+BAAKD,OAAOA;AACZ,+BAAKC,MAAMA;wBACf;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sBAsKJ,CAAC;AAQD,0BAAIwB,eAAe9C,MAAMzV,YAAYzN,KAAKyL,OAAO;;;;;;;;;;;;;;;;;;;;;wBAqB7C6C,MAAM,SAAAA,QAAUvC,OAAOE,UAAU;AAC7BF,kCAAQ,KAAKA,QAAQA,SAAS,CAAA;AAE9B,8BAAIE,YAAYliB,YAAW;AACvB,iCAAKkiB,WAAWA;0BACpB,OAAO;AACH,iCAAKA,WAAWF,MAAMhjB,SAAS;0BACnC;wBACJ;;;;;;;;;;wBAWAqhC,OAAO,SAAA,QAAY;AAEf,8BAAIgC,WAAW,KAAKrgB;AACpB,8BAAIsgB,iBAAiBD,SAASrjC;AAG9B,8BAAIujC,WAAW,CAAA;AACf,mCAASriC,IAAI,GAAGA,IAAIoiC,gBAAgBpiC,KAAK;AACrC,gCAAIsiC,UAAUH,SAASniC,CAAC;AACxBqiC,qCAAStiC,KAAKuiC,QAAQhI,IAAI;AAC1B+H,qCAAStiC,KAAKuiC,QAAQ/H,GAAG;0BAC7B;AAEA,iCAAO2H,aAAaje,OAAOoe,UAAU,KAAKrgB,QAAQ;wBACtD;;;;;;;;;;wBAWAkI,OAAO,SAAA,QAAY;AACf,8BAAIA,SAAQnU,KAAKmU,MAAMpkB,KAAK,IAAI;AAGhC,8BAAIgc,QAAQoI,OAAMpI,QAAQ,KAAKA,MAAM/f,MAAM,CAAC;AAG5C,8BAAIwgC,cAAczgB,MAAMhjB;AACxB,mCAASkB,IAAI,GAAGA,IAAIuiC,aAAaviC,KAAK;AAClC8hB,kCAAM9hB,CAAC,IAAI8hB,MAAM9hB,CAAC,EAAEkqB,MAAK;0BAC7B;AAEA,iCAAOA;wBACX;sBACJ,CAAC;oBACL,GAAC;AAGD,2BAAOnK;kBAER,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/SD,sBAAMyiB,iBAAgB;AACtB,sBAAMC,aAAa;sBAMEC,eAAN,2BAAA;AACbnrB,6BAAAA,cAAYorB,KAAK;2BACVC,aAAaD,IAAIC;2BACjBC,YAAYF,IAAIE;2BAChBC,OAAOH,IAAIG;;;2BAOlBC,QAAAA,SAAAA,OAAMx1B,KAAK;AAAA,0BAAAy1B;0BACL/mC,QAAO;+CAEP4M,OAAOo6B,QAAT,IAAA,oCAAA,EAAA,KAAA,SAAA,UAAA;AAAA,4BAAAjJ,QAAA,UAAA,eAAA,WAAA,GAAAzzB;AAAA,+BAAA,oBAAA,EAAA,KAAA,SAAA,SAAA,UAAA;AAAA,iCAAA,GAAA;AAAA,oCAAA,SAAA,OAAA,SAAA,MAAA;8BAAA,KAAA;AACMyzB,gCAAAA,SAAQwI;AACRU,2CAAW;AACXC,gDAAgB;AAChBC,4CAAY;AAEPxmC,oCAAI;8BAAb,KAAA;AAAA,oCAAA,EAAgBA,IAAI2Q,IAAIzO,SAAxB;AAAA,2CAAA,OAAA;AAAA;gCAAA;AACMyH,gCAAAA,KAAIgH,IAAI3Q,CAAD;AAEXwmC,4CAAYpJ;AACZA,gCAAAA,SAAQ/9B,MAAK2mC,WAAW5I,MAAhB,EAAuBzzB,EAAvB;AAAR,oCAAA,EAEIyzB,WAAUyI,aAAd;AAAA,2CAAA,OAAA;AAAA;gCAAA;AAAA,oCAAA,EAEMS,YAAY,QAAQC,iBAAiB,QAAQA,iBAAiBD,WAAlE;AAAA,2CAAA,OAAA;AAAA;gCAAA;AAAA,yCAAA,OAAA;uCACQ,CAACA,UAAUC,eAAelnC,MAAK6mC,KAAKM,SAAV,CAA1B;8BAAN,KAAA;AAIFpJ,gCAAAA,SAAQ/9B,MAAK2mC,WAAWJ,cAAhB,EAA+Bj8B,EAA/B;AACR28B,2CAAW;8BAAX,KAAA;oCAIElJ,WAAUyI,cAAcS,YAAY,MAAM;AAC5CA,6CAAWtmC;;oCAITX,MAAK4mC,UAAU7I,MAAf,GAAuB;AACzBmJ,kDAAgBvmC;;oCAIdo9B,WAAUyI,YAAY;AACxBzI,kCAAAA,SAAQwI;;;AA7BoB5lC;AAAhC,yCAAA,OAAA;AAAA;8BAAA,KAAA;AAAA,oCAAA,EAkCIsmC,YAAY,QAAQC,iBAAiB,QAAQA,iBAAiBD,WAAlE;AAAA,2CAAA,OAAA;AAAA;gCAAA;AAAA,yCAAA,OAAA;uCACQ,CAACA,UAAUC,eAAelnC,MAAK6mC,KAAK9I,MAAV,CAA1B;8BAAN,KAAA;8BAAA,KAAA;AAAA,uCAAA,SAAA,KAAA;4BAAA;0BAAA;wBAAA,GAAA,OAAA;sBAAA,CAAA,GAAAgJ;;2BAWR51B,QAAAA,SAAAA,MAAMG,KAAK81B,SAAS;2EACa,KAAKN,MAAMx1B,GAAX,CAA/B,GAAA,OAAA,EAAA,QAAA,UAAA,GAAA,QAAgD;AAAA,4BAAA,cAAA,MAAA,OAAtChB,QAAD,YAAA,CAAA,GAAQtM,MAAR,YAAA,CAAA,GAAa6iC,OAAb,YAAA,CAAA;8EACSA,IAAhB,GAAA,QAAA,EAAA,SAAA,WAAA,GAAA,QAAsB;AAAA,8BAAbQ,MAAT,OAAA;8BACM,OAAOD,QAAQC,GAAD,MAAU,YAAY;AACtCD,oCAAQC,GAAD,EAAM/2B,OAAOtM,KAAKsN,IAAIxL,MAAMwK,OAAOtM,MAAM,CAAvB,CAAzB;;;;;;;;;;;;;;;;;;;;ACzDV,sBAAMsjC,KAAKjlC,qBAAQ,IAAI;AACvB,sBAAMklC,OAAOllC,qBAAQ,IAAM;AAE3BhD,kBAAAA,QAAOyC,UAAO,2BAAA;AAAA,wBACLiB,SAAP,SAAA,OAAcykC,OAAMj+B,IAAI;AACtB,6BAAO+9B,GAAGG,SAASD,OAAM,SAASla,KAAKoa,MAAM;AAC3C,4BAAMC,MAAM,IAAIC,IAAIF,IAAI;AACxB,+BAAOC,IAAI5kC,OAAO,SAAA8kC,QAAM;AAAA,iCAAIt+B,GAAGs+B,MAAM;wBAAC,CAAA;sBACxC,CAAC;oBACH;AAAC,wBAEMC,OAAP,SAAA,KAAYN,OAAM;AAChB,0BAAME,OAAOJ,GAAGS,aAAaP,KAAI;AACjC,6BAAO,IAAII,IAAIF,IAAI;oBACrB;AAEA,6BAAA,IAAY78B,OAAM;AAChB,0BAAI9G;AACJ,2BAAK8G,OAAOA;AACZ,2BAAK3H,MAAM;AAEX,2BAAK8kC,UAAU,CAAA;AACf,2BAAKC,UAAU,CAAA;AACf,2BAAKC,eAAe,CAAC;AACrB,2BAAKC,OAAO,CAAC;AAEb,6BAAO,MAAM;AACX,4BAAMC,YAAY,KAAKC,WAAU;AACjC,4BAAIC,UAAU;AACd,6BAAKvkC,IAAI,GAAGA,IAAI,GAAGA,KAAK;AACtBukC,qCAAW14B,OAAOyE,aAAa,KAAKxJ,KAAK,KAAK3H,KAAK,CAAC;wBACtD;AAEA,gCAAQolC,SAAO;0BACb,KAAK;AAEH,iCAAKC,QAAQ,KAAKF,WAAU;AAC5B,iCAAKG,SAAS,KAAKH,WAAU;AAC7B,iCAAKI,OAAO,KAAK59B,KAAK,KAAK3H,KAAK;AAChC,iCAAKwlC,YAAY,KAAK79B,KAAK,KAAK3H,KAAK;AACrC,iCAAKylC,oBAAoB,KAAK99B,KAAK,KAAK3H,KAAK;AAC7C,iCAAK0lC,eAAe,KAAK/9B,KAAK,KAAK3H,KAAK;AACxC,iCAAK2lC,kBAAkB,KAAKh+B,KAAK,KAAK3H,KAAK;AAC3C;0BAEF,KAAK;AACH,iCAAK8kC,UAAU,KAAK31B,KAAK+1B,SAAS;AAClC;0BAEF,KAAK;AACH,iCAAKrkC,IAAI,GAAGA,IAAIqkC,WAAWrkC,KAAK;AAC9B,mCAAKkkC,QAAQnkC,KAAK,KAAK+G,KAAK,KAAK3H,KAAK,CAAC;4BACzC;AACA;0BAEF,KAAK;AAGH,iCAAKglC,eAAe,CAAC;AACrB,oCAAQ,KAAKQ,WAAS;8BACpB,KAAK;AAKH,qCAAKR,aAAaY,UAAU,KAAKz2B,KAAK+1B,SAAS;AAC/C,oCAAIW,QAAQ,MAAM,KAAKb,aAAaY,QAAQjmC;AAC5C,oCAAIkmC,QAAQ,GAAG;AACb,uCAAKhlC,IAAI,GAAGA,IAAIglC,OAAOhlC,KAAK;AAC1B,yCAAKmkC,aAAaY,QAAQhlC,KAAK,GAAG;kCACpC;gCACF;AACA;8BACF,KAAK;AAGH,qCAAKokC,aAAac,YAAY,KAAK32B,KAAK+1B,SAAS,EAAE,CAAC;AACpD;8BACF,KAAK;AAEH,qCAAKF,aAAae,MAAM,KAAK52B,KAAK+1B,SAAS;AAC3C;4BAAM;AAEV;0BAEF,KAAK;AACH,gCAAID,OAAO,KAAK91B,KAAK+1B,SAAS;AAC9B,gCAAIx/B,SAAQu/B,KAAKt/B,QAAQ,CAAC;AAC1B,gCAAIzB,MAAMwI,OAAOyE,aAAalD,MAAMvB,QAAQu4B,KAAKriC,MAAM,GAAG8C,MAAK,CAAC;AAChE,iCAAKu/B,KAAK/gC,GAAG,IAAIwI,OAAOyE,aAAalD,MACnCvB,QACAu4B,KAAKriC,MAAM8C,SAAQ,CAAC,CAAC;AAEvB;0BAEF,KAAK;AAEH,oCAAQ,KAAK8/B,WAAS;8BACpB,KAAK;8BACL,KAAK;8BACL,KAAK;AACH,qCAAKQ,SAAS;AACd;8BACF,KAAK;8BACL,KAAK;AACH,qCAAKA,SAAS;AACd;4BAAM;AAGV,iCAAKC,kBAAkB,CAAC,GAAG,CAAC,EAAE12B,SAAS,KAAKi2B,SAAS;AACrD,gCAAIQ,UAAS,KAAKA,UAAU,KAAKC,kBAAkB,IAAI;AACvD,iCAAKC,iBAAiB,KAAKX,OAAOS;AAElC,oCAAQ,KAAKA,QAAM;8BACjB,KAAK;AACH,qCAAKG,aAAa;AAClB;8BACF,KAAK;AACH,qCAAKA,aAAa;AAClB;4BAAM;AAGV,iCAAKpB,UAAU,IAAIviC,QAAO,KAAKuiC,OAAO;AACtC;AACA;0BAEF;AAEE,iCAAK/kC,OAAOklC;wBAAU;AAG1B,6BAAKllC,OAAO;AAEZ,4BAAI,KAAKA,MAAM,KAAK2H,KAAKhI,QAAQ;AAC/B,gCAAM,IAAIuF,MAAM,gCAAgC;wBAClD;sBACF;oBACF;AAAC,wBAAA,SAAA,IAAA;AAAA,2BAEDiK,OAAA,SAAA,KAAKhL,OAAO;AACV,0BAAMgC,SAAS,IAAIiG,MAAMjI,KAAK;AAC9B,+BAAStD,IAAI,GAAGA,IAAIsD,OAAOtD,KAAK;AAC9BsF,+BAAOtF,CAAC,IAAI,KAAK8G,KAAK,KAAK3H,KAAK;sBAClC;AACA,6BAAOmG;oBACT;AAAC,2BAEDg/B,aAAA,SAAA,aAAa;AACX,0BAAMtS,MAAK,KAAKlrB,KAAK,KAAK3H,KAAK,KAAK;AACpC,0BAAM8yB,MAAK,KAAKnrB,KAAK,KAAK3H,KAAK,KAAK;AACpC,0BAAM+yB,MAAK,KAAKprB,KAAK,KAAK3H,KAAK,KAAK;AACpC,0BAAMomC,MAAK,KAAKz+B,KAAK,KAAK3H,KAAK;AAC/B,6BAAO6yB,MAAKC,MAAKC,MAAKqT;oBACxB;AAAC,2BAEDC,aAAA,SAAA,aAAa;AACX,0BAAMxT,MAAK,KAAKlrB,KAAK,KAAK3H,KAAK,KAAK;AACpC,0BAAM8yB,MAAK,KAAKnrB,KAAK,KAAK3H,KAAK;AAC/B,6BAAO6yB,MAAKC;oBACd;AAAC,2BAEDwT,eAAA,SAAA,aAAajgC,IAAI;AAAA,0BAAA,QAAA;AACf,6BAAOg+B,KAAKkC,QAAQ,KAAKxB,SAAS,SAAC3a,KAAKziB,OAAS;AAC/C,4BAAIyiB,KAAK;AACP,gCAAMA;wBACR;AAEA,4BAAQib,QAAkB,MAAlBA,OAAOC,SAAW,MAAXA;AACf,4BAAMkB,aAAa,MAAKN,iBAAiB;AAEzC,4BAAMvB,SAAS,IAAIniC,QAAO6iC,QAAQC,SAASkB,UAAU;AACrD,4BAAQ7mC,UAAWgI,MAAXhI;AACR,4BAAIK,MAAM;AAEV,iCAASymC,KAAKC,IAAIC,IAAIC,IAAIC,IAAIC,YAAoB;AAAA,8BAApBA,eAAU,QAAA;AAAVA,yCAAa;0BAAK;AAC9C,8BAAMC,KAAIv6B,KAAKgf,MAAM6Z,QAAQqB,MAAME,EAAE;AACrC,8BAAMxN,IAAI5sB,KAAKgf,MAAM8Z,SAASqB,MAAME,EAAE;AACtC,8BAAMG,iBAAiBR,aAAaO;AACpC,8BAAM3kC,SAAS0kC,aAAanC,SAAS,IAAIniC,QAAOwkC,iBAAiB5N,CAAC;AAClE,8BAAI6N,MAAM;AACV,8BAAI7/B,KAAI;AACR,iCAAO6/B,MAAM7N,KAAKp5B,MAAML,SAAQ;AAC9B,gCAAI+C,MAAMwkC,KAAKrmC,GAAGsmC,MAAMC;AACxB,oCAAQz/B,MAAK3H,KAAK,GAAC;8BACjB,KAAK;AACH,qCAAKa,IAAI,GAAGA,IAAImmC,gBAAgBnmC,KAAK;AACnCuB,yCAAOgF,IAAG,IAAIO,MAAK3H,KAAK;gCAC1B;AACA;8BAEF,KAAK;AACH,qCAAKa,IAAI,GAAGA,IAAImmC,gBAAgBnmC,KAAK;AACnC6B,yCAAOiF,MAAK3H,KAAK;AACjBmnC,yCAAOtmC,IAAI2lC,aAAa,IAAIpkC,OAAOgF,KAAIo/B,UAAU;AACjDpkC,yCAAOgF,IAAG,KAAK1E,OAAOykC,QAAQ;gCAChC;AACA;8BAEF,KAAK;AACH,qCAAKtmC,IAAI,GAAGA,IAAImmC,gBAAgBnmC,KAAK;AACnC6B,yCAAOiF,MAAK3H,KAAK;AACjBknC,yCAAOrmC,IAAKA,IAAI2lC,cAAeA;AAC/BY,0CACEH,OACA7kC,QACG6kC,MAAM,KAAKD,iBACVE,MAAMV,aACL3lC,IAAI2lC,UAAW;AAEtBpkC,yCAAOgF,IAAG,KAAKggC,QAAQ1kC,QAAQ;gCACjC;AACA;8BAEF,KAAK;AACH,qCAAK7B,IAAI,GAAGA,IAAImmC,gBAAgBnmC,KAAK;AACnC6B,yCAAOiF,MAAK3H,KAAK;AACjBknC,yCAAOrmC,IAAKA,IAAI2lC,cAAeA;AAC/BW,yCAAOtmC,IAAI2lC,aAAa,IAAIpkC,OAAOgF,KAAIo/B,UAAU;AACjDY,0CACEH,OACA7kC,QACG6kC,MAAM,KAAKD,iBACVE,MAAMV,aACL3lC,IAAI2lC,UAAW;AAEtBpkC,yCAAOgF,IAAG,KAAK1E,OAAO8J,KAAKiL,OAAO0vB,OAAOC,SAAS,CAAC,KAAK;gCAC1D;AACA;8BAEF,KAAK;AACH,qCAAKvmC,IAAI,GAAGA,IAAImmC,gBAAgBnmC,KAAK;AACnC,sCAAIwmC,OAAOC;AACX5kC,yCAAOiF,MAAK3H,KAAK;AACjBknC,yCAAOrmC,IAAKA,IAAI2lC,cAAeA;AAC/BW,yCAAOtmC,IAAI2lC,aAAa,IAAIpkC,OAAOgF,KAAIo/B,UAAU;AAEjD,sCAAIS,QAAQ,GAAG;AACbG,4CAAQE,YAAY;kCACtB,OAAO;AACLF,4CACEhlC,QACG6kC,MAAM,KAAKD,iBACVE,MAAMV,aACL3lC,IAAI2lC,UAAW;AAEtBc,gDACEJ,OACA9kC,QACG6kC,MAAM,KAAKD,kBACTE,MAAM,KAAKV,aACX3lC,IAAI2lC,UAAW;kCAExB;AAEA,sCAAM/oC,IAAI0pC,OAAOC,QAAQE;AACzB,sCAAMC,KAAK/6B,KAAK4K,IAAI3Z,IAAI0pC,IAAI;AAC5B,sCAAMK,KAAKh7B,KAAK4K,IAAI3Z,IAAI2pC,KAAK;AAC7B,sCAAMK,KAAKj7B,KAAK4K,IAAI3Z,IAAI6pC,SAAS;AAEjC,sCAAIC,MAAMC,MAAMD,MAAME,IAAI;AACxBJ,4CAAQF;kCACV,WAAWK,MAAMC,IAAI;AACnBJ,4CAAQD;kCACV,OAAO;AACLC,4CAAQC;kCACV;AAEAllC,yCAAOgF,IAAG,KAAK1E,OAAO2kC,SAAS;gCACjC;AACA;8BAEF;AACE,sCAAM,IAAIniC,MAAK,+BAA8ByC,MAAK3H,MAAM,CAAC,CAAC;4BAAI;AAGlE,gCAAI,CAAC8mC,YAAY;AACf,kCAAIY,cAAcf,KAAKM,MAAMJ,MAAMxB,QAAQqB,MAAMF;AACjD,kCAAImB,YAAYV,MAAMD;AACtB,mCAAKnmC,IAAI,GAAGA,IAAIkmC,IAAGlmC,KAAK;AACtB,yCAASyO,IAAI,GAAGA,IAAIk3B,YAAYl3B,KAAG;AACjCq1B,yCAAO+C,WAAW,IAAItlC,OAAOulC,WAAW;gCAAE;AAC5CD,8CAAcd,KAAK,KAAKJ;8BAC1B;4BACF;AAEAS;0BACF;wBACF;AAEA,4BAAI,MAAKtB,oBAAoB,GAAG;AAW9Bc,+BAAK,GAAG,GAAG,GAAG,CAAC;AACfA,+BAAK,GAAG,GAAG,GAAG,CAAC;AACfA,+BAAK,GAAG,GAAG,GAAG,CAAC;AACfA,+BAAK,GAAG,GAAG,GAAG,CAAC;AACfA,+BAAK,GAAG,GAAG,GAAG,CAAC;AACfA,+BAAK,GAAG,GAAG,GAAG,CAAC;AACfA,+BAAK,GAAG,GAAG,GAAG,CAAC;wBACjB,OAAO;AACLA,+BAAK,GAAG,GAAG,GAAG,GAAG,IAAI;wBACvB;AAEA,+BAAOpgC,GAAGs+B,MAAM;sBAClB,CAAC;oBACH;AAAC,2BAEDiD,gBAAA,SAAA,gBAAgB;AACd,0BAAQ9C,UAAY,KAAZA;AACR,0BAAQnlC,UAAWmlC,QAAXnlC;AACR,0BAAMqlC,eAAe,KAAKA,aAAaY,WAAW,CAAA;AAClD,0BAAMthC,MAAM,IAAI9B,QAAOwiC,aAAarlC,SAASA,OAAM;AACnD,0BAAIK,MAAM;AACV,0BAAIoH,KAAI;AAER,+BAASvG,IAAI,GAAGA,IAAIlB,SAAQkB,KAAK,GAAG;AAClC,4BAAIsmC;AACJ7iC,4BAAItE,KAAK,IAAI8kC,QAAQjkC,CAAC;AACtByD,4BAAItE,KAAK,IAAI8kC,QAAQjkC,IAAI,CAAC;AAC1ByD,4BAAItE,KAAK,IAAI8kC,QAAQjkC,IAAI,CAAC;AAC1ByD,4BAAItE,KAAK,KAAKmnC,OAAOnC,aAAa59B,IAAG,MAAM,OAAO+/B,OAAO;sBAC3D;AAEA,6BAAO7iC;oBACT;AAAC,2BAEDujC,kBAAA,SAAA,gBAAgBC,WAAWnD,QAAQ;AACjC,0BAAIr1B,GAAG3Q;AACP,0BAAMqnC,UAAW,KAAXA;AACN,0BAAIlB,UAAU;AACd,0BAAIiD,QAAQ,KAAK9B;AAEjB,0BAAI,KAAKnB,QAAQnlC,QAAQ;AACvBmlC,kCACE,KAAKkD,oBAAoB,KAAKA,kBAAkB,KAAKJ,cAAa;AACpE5B,wBAAAA,UAAS;AACT+B,gCAAQ;sBACV;AAEA,0BAAMpgC,QAAOmgC,UAAUngC,QAAQmgC;AAC/B,0BAAQnoC,UAAWgI,MAAXhI;AACR,0BAAMqX,QAAQ8tB,WAAWH;AACzB,0BAAI9jC,IAAKyO,IAAI;AAEb,0BAAI02B,YAAW,GAAG;AAChB,+BAAOnlC,IAAIlB,SAAQ;AACjBhB,0BAAAA,KAAImmC,UAAUH,OAAO9jC,IAAI,CAAC,IAAI,IAAIyO;AAClC,8BAAM24B,IAAIjxB,MAAMrY,IAAG;AACnBgJ,0BAAAA,MAAK9G,GAAG,IAAIonC;AACZtgC,0BAAAA,MAAK9G,GAAG,IAAIonC;AACZtgC,0BAAAA,MAAK9G,GAAG,IAAIonC;AACZtgC,0BAAAA,MAAK9G,GAAG,IAAIknC,QAAQ/wB,MAAMrY,IAAG,IAAI;AACjC2Q,8BAAI3Q;wBACN;sBACF,OAAO;AACL,+BAAOkC,IAAIlB,SAAQ;AACjBhB,0BAAAA,KAAImmC,UAAUH,OAAO9jC,IAAI,CAAC,IAAI,IAAIyO;AAClC3H,0BAAAA,MAAK9G,GAAG,IAAImW,MAAMrY,IAAG;AACrBgJ,0BAAAA,MAAK9G,GAAG,IAAImW,MAAMrY,IAAG;AACrBgJ,0BAAAA,MAAK9G,GAAG,IAAImW,MAAMrY,IAAG;AACrBgJ,0BAAAA,MAAK9G,GAAG,IAAIknC,QAAQ/wB,MAAMrY,IAAG,IAAI;AACjC2Q,8BAAI3Q;wBACN;sBACF;oBACF;AAAC,2BAEDkB,SAAA,SAAA,OAAOwG,IAAI;AAAA,0BAAA,SAAA;AACT,0BAAM/B,MAAM,IAAI9B,QAAO,KAAK6iC,QAAQ,KAAKC,SAAS,CAAC;AACnD,6BAAO,KAAKgB,aAAa,SAAA3B,QAAU;AACjC,+BAAKkD,gBAAgBvjC,KAAKqgC,MAAM;AAChC,+BAAOt+B,GAAG/B,GAAG;sBACf,CAAC;oBACH;AAAC,2BAAA;kBAAA,EAAA;;;;;;;;;AC9YS,kBAAArI,qBAAA,IAAA;AAAA,kBAAAA,qBAAA,IAAA;AAAA,kBAAAA,qBAAA,IAAA;AAAA,kBAAAA,qBAAA,IAAA;AAAA,kBAAAA,qBAAA,IAAA;AAAA,kBAAAA,qBAAA,IAAA;AAAA,kBAAAA,qBAAA,IAAA;AAAA,kBAAAA,qBAAA,IAAA;AAAA,kBAAAA,qBAAA,IAAA;AAAA,kBAAAA,qBAAA,IAAA;AAAA,kBAAAA,qBAAA,IAAA;AAAA,kBAAAA,qBAAA,IAAA;AAAA,kBAAAA,qBAAA,IAAA;AAAA,kBAAAA,qBAAA,IAAA;AAAA,kBAAAA,qBAAA,IAAA;AAAA,kBAAAA,qBAAA,IAAA;AAAA,kBAAAA,qBAAA,IAAA;AAAA,kBAAAA,qBAAA,IAAA;AAAA,kBAAAA,qBAAA,IAAA;AAAA,kBAAAA,qBAAA,IAAA;AAAA,kBAAAA,qBAAA,IAAA;AAAA,kBAAAA,qBAAA,GAAA;AAAA,kBAAAA,qBAAA,IAAA;AAAA,kBAAAA,qBAAA,IAAA;AAAA,kBAAAA,qBAAA,IAAA;AAAA,kBAAAA,qBAAA,IAAA;AAAA,kBAAAA,qBAAA,IAAA;AAAA,kBAAAA,qBAAA,IAAA;AAEZ,sBAAImG,SAASjD,qBAAQ,IAAQ;AAC7B,sBAAIqD,UAASJ,OAAOI;AAEpB,sBAAI0lC,QAAQ,CAAC;AAEb,sBAAIhkC;AAEJ,uBAAKA,OAAO9B,QAAQ;AAClB,wBAAI,CAACA,OAAO/D,eAAe6F,GAAG;AAAG;AACjC,wBAAIA,QAAQ,gBAAgBA,QAAQ;AAAU;AAC9CgkC,0BAAMhkC,GAAG,IAAI9B,OAAO8B,GAAG;kBACzB;AAEA,sBAAIikC,QAAQD,MAAM1lC,SAAS,CAAC;AAC5B,uBAAK0B,OAAO1B,SAAQ;AAClB,wBAAI,CAACA,QAAOnE,eAAe6F,GAAG;AAAG;AACjC,wBAAIA,QAAQ,iBAAiBA,QAAQ;AAAmB;AACxDikC,0BAAMjkC,GAAG,IAAI1B,QAAO0B,GAAG;kBACzB;AAEAgkC,wBAAM1lC,OAAO6B,YAAY7B,QAAO6B;AAEhC,sBAAI,CAAC8jC,MAAM1lC,QAAQ0lC,MAAM1lC,SAASwH,WAAWxH,MAAM;AACjD0lC,0BAAM1lC,OAAO,SAAUpC,OAAOqK,kBAAkB/K,SAAQ;AACtD,0BAAI,OAAOU,UAAU,UAAU;AAC7B,8BAAM,IAAIsK,UAAU,oEAAoE,OAAOtK,KAAK;sBACtG;AACA,0BAAIA,SAAS,OAAOA,MAAMV,WAAW,aAAa;AAChD,8BAAM,IAAIgL,UAAU,oHAAoH,OAAOtK,KAAK;sBACtJ;AACA,6BAAOmC,QAAOnC,OAAOqK,kBAAkB/K,OAAM;oBAC/C;kBACF;AAEA,sBAAI,CAACwoC,MAAMxjC,OAAO;AAChBwjC,0BAAMxjC,QAAQ,SAAU5D,OAAMwE,MAAMjD,UAAU;AAC5C,0BAAI,OAAOvB,UAAS,UAAU;AAC5B,8BAAM,IAAI4J,UAAU,+DAA+D,OAAO5J,KAAI;sBAChG;AACA,0BAAIA,QAAO,KAAKA,SAAQ,KAAK,KAAK,KAAK;AACrC,8BAAM,IAAIyJ,WAAW,gBAAgBzJ,QAAO,gCAAgC;sBAC9E;AACA,0BAAIgB,MAAMS,QAAOzB,KAAI;AACrB,0BAAI,CAACwE,QAAQA,KAAK5F,WAAW,GAAG;AAC9BoC,4BAAIwD,KAAK,CAAC;sBACZ,WAAW,OAAOjD,aAAa,UAAU;AACvCP,4BAAIwD,KAAKA,MAAMjD,QAAQ;sBACzB,OAAO;AACLP,4BAAIwD,KAAKA,IAAI;sBACf;AACA,6BAAOxD;oBACT;kBACF;AAEA,sBAAI,CAACmmC,MAAME,kBAAkB;AAC3B,wBAAI;AACFF,4BAAME,mBAAmB/rC,SAAQgsC,QAAQ,QAAQ,EAAED;oBACrD,SAAS7rC,IAAG;oBAEV;kBAEJ;AAEA,sBAAI,CAAC2rC,MAAMI,WAAW;AACpBJ,0BAAMI,YAAY;sBAChBC,YAAYL,MAAMM;oBACpB;AACA,wBAAIN,MAAME,kBAAkB;AAC1BF,4BAAMI,UAAUG,oBAAoBP,MAAME;oBAC5C;kBACF;AAEAjsC,kBAAAA,QAAOyC,UAAUspC;;;;;;;;AC5EJ,kBAAAjsC,qBAAA,IAAA;AAAA,kBAAAA,qBAAA,IAAA;AAAA,kBAAAA,qBAAA,IAAA;AAAA,kBAAAA,qBAAA,IAAA;AAAA,kBAAAA,qBAAA,IAAA;AAAA,kBAAAA,qBAAA,IAAA;AAAA,kBAAAA,qBAAA,IAAA;AAAA,kBAAAA,qBAAA,IAAA;AAEb,2BAASQ,UAAQ8L,QAAQmgC,gBAAgB;AAAE,wBAAI/mC,OAAOrC,OAAOqC,KAAK4G,MAAM;AAAG,wBAAIjJ,OAAOqpC,uBAAuB;AAAE,0BAAIC,UAAUtpC,OAAOqpC,sBAAsBpgC,MAAM;AAAG,0BAAImgC;AAAgBE,kCAAUA,QAAQC,OAAO,SAAUnyB,KAAK;AAAE,iCAAOpX,OAAOwpC,yBAAyBvgC,QAAQmO,GAAG,EAAEvN;wBAAY,CAAC;AAAGxH,2BAAKf,KAAKqN,MAAMtM,MAAMinC,OAAO;oBAAG;AAAE,2BAAOjnC;kBAAM;AAEpV,2BAASnF,gBAAckE,QAAQ;AAAE,6BAASG,IAAI,GAAGA,IAAI6D,UAAU/E,QAAQkB,KAAK;AAAE,0BAAIkoC,SAASrkC,UAAU7D,CAAC,KAAK,OAAO6D,UAAU7D,CAAC,IAAI,CAAC;AAAG,0BAAIA,IAAI,GAAG;AAAEpE,wBAAAA,UAAQ6C,OAAOypC,MAAM,GAAG,IAAI,EAAEC,QAAQ,SAAU9kC,KAAK;AAAExH,0BAAAA,kBAAgBgE,QAAQwD,KAAK6kC,OAAO7kC,GAAG,CAAC;wBAAG,CAAC;sBAAG,WAAW5E,OAAO2pC,2BAA2B;AAAE3pC,+BAAOc,iBAAiBM,QAAQpB,OAAO2pC,0BAA0BF,MAAM,CAAC;sBAAG,OAAO;AAAEtsC,wBAAAA,UAAQ6C,OAAOypC,MAAM,CAAC,EAAEC,QAAQ,SAAU9kC,KAAK;AAAE5E,iCAAO6I,eAAezH,QAAQwD,KAAK5E,OAAOwpC,yBAAyBC,QAAQ7kC,GAAG,CAAC;wBAAG,CAAC;sBAAG;oBAAE;AAAE,2BAAOxD;kBAAQ;AAErhB,2BAAShE,kBAAgBX,KAAKmI,KAAK7D,OAAO;AAAE,wBAAI6D,OAAOnI,KAAK;AAAEuD,6BAAO6I,eAAepM,KAAKmI,KAAK;wBAAE7D;wBAAc8I,YAAY;wBAAMC,cAAc;wBAAM5I,UAAU;sBAAK,CAAC;oBAAG,OAAO;AAAEzE,0BAAImI,GAAG,IAAI7D;oBAAO;AAAE,2BAAOtE;kBAAK;AAEhN,2BAASC,kBAAgB4uB,UAAUtQ,aAAa;AAAE,wBAAI,EAAEsQ,oBAAoBtQ,cAAc;AAAE,4BAAM,IAAI3P,UAAU,mCAAmC;oBAAG;kBAAE;AAExJ,2BAAShO,oBAAkB+D,QAAQwoC,OAAO;AAAE,6BAASroC,IAAI,GAAGA,IAAIqoC,MAAMvpC,QAAQkB,KAAK;AAAE,0BAAIsoC,aAAaD,MAAMroC,CAAC;AAAGsoC,iCAAWhgC,aAAaggC,WAAWhgC,cAAc;AAAOggC,iCAAW//B,eAAe;AAAM,0BAAI,WAAW+/B;AAAYA,mCAAW3oC,WAAW;AAAMlB,6BAAO6I,eAAezH,QAAQyoC,WAAWjlC,KAAKilC,UAAU;oBAAG;kBAAE;AAE5T,2BAASvsC,eAAa0d,aAAa8uB,YAAYC,aAAa;AAAE,wBAAID;AAAYzsC,sBAAAA,oBAAkB2d,YAAYjW,WAAW+kC,UAAU;AAAG,wBAAIC;AAAa1sC,sBAAAA,oBAAkB2d,aAAa+uB,WAAW;AAAG,2BAAO/uB;kBAAa;AAEtN,sBAAIgvB,WAAWnqC,qBAAQ,IAAQ,GAC3BqD,UAAS8mC,SAAS9mC;AAEtB,sBAAI+mC,YAAYpqC,qBAAQ,IAAM,GAC1ByG,UAAU2jC,UAAU3jC;AAExB,sBAAI4jC,WAAS5jC,WAAWA,QAAQ4jC,UAAU;AAE1C,2BAASC,WAAWvxB,KAAKxX,QAAQwG,QAAQ;AACvC1E,oBAAAA,QAAO6B,UAAU4H,KAAKtF,KAAKuR,KAAKxX,QAAQwG,MAAM;kBAChD;AAEA/K,kBAAAA,QAAOyC,UAEP,2BAAY;AACV,6BAAS8qC,aAAa;AACpB1tC,sBAAAA,kBAAgB,MAAM0tC,UAAU;AAEhC,2BAAKC,OAAO;AACZ,2BAAKC,OAAO;AACZ,2BAAKjqC,SAAS;oBAChB;AAEA/C,oBAAAA,eAAa8sC,YAAY,CAAC;sBACxBxlC,KAAK;sBACL7D,OAAO,SAASO,MAAKqnC,GAAG;AACtB,4BAAI4B,QAAQ;0BACVliC,MAAMsgC;0BACN6B,MAAM;wBACR;AACA,4BAAI,KAAKnqC,SAAS;AAAG,+BAAKiqC,KAAKE,OAAOD;;AAAW,+BAAKF,OAAOE;AAC7D,6BAAKD,OAAOC;AACZ,0BAAE,KAAKlqC;sBACT;oBACF,GAAG;sBACDuE,KAAK;sBACL7D,OAAO,SAAS0pC,QAAQ9B,GAAG;AACzB,4BAAI4B,QAAQ;0BACVliC,MAAMsgC;0BACN6B,MAAM,KAAKH;wBACb;AACA,4BAAI,KAAKhqC,WAAW;AAAG,+BAAKiqC,OAAOC;AACnC,6BAAKF,OAAOE;AACZ,0BAAE,KAAKlqC;sBACT;oBACF,GAAG;sBACDuE,KAAK;sBACL7D,OAAO,SAAS2pC,QAAQ;AACtB,4BAAI,KAAKrqC,WAAW;AAAG;AACvB,4BAAI2E,MAAM,KAAKqlC,KAAKhiC;AACpB,4BAAI,KAAKhI,WAAW;AAAG,+BAAKgqC,OAAO,KAAKC,OAAO;;AAAU,+BAAKD,OAAO,KAAKA,KAAKG;AAC/E,0BAAE,KAAKnqC;AACP,+BAAO2E;sBACT;oBACF,GAAG;sBACDJ,KAAK;sBACL7D,OAAO,SAAS4pC,QAAQ;AACtB,6BAAKN,OAAO,KAAKC,OAAO;AACxB,6BAAKjqC,SAAS;sBAChB;oBACF,GAAG;sBACDuE,KAAK;sBACL7D,OAAO,SAASurB,KAAK0G,IAAG;AACtB,4BAAI,KAAK3yB,WAAW;AAAG,iCAAO;AAC9B,4BAAIlC,IAAI,KAAKksC;AACb,4BAAIrlC,MAAM,KAAK7G,EAAEkK;AAEjB,+BAAOlK,IAAIA,EAAEqsC,MAAM;AACjBxlC,iCAAOguB,KAAI70B,EAAEkK;wBACf;AAEA,+BAAOrD;sBACT;oBACF,GAAG;sBACDJ,KAAK;sBACL7D,OAAO,SAASuM,OAAOgB,IAAG;AACxB,4BAAI,KAAKjO,WAAW;AAAG,iCAAO6C,QAAOmC,MAAM,CAAC;AAC5C,4BAAIL,MAAM9B,QAAOoI,YAAYgD,OAAM,CAAC;AACpC,4BAAInQ,IAAI,KAAKksC;AACb,4BAAI9oC,IAAI;AAER,+BAAOpD,GAAG;AACRgsC,qCAAWhsC,EAAEkK,MAAMrD,KAAKzD,CAAC;AACzBA,+BAAKpD,EAAEkK,KAAKhI;AACZlC,8BAAIA,EAAEqsC;wBACR;AAEA,+BAAOxlC;sBACT;;oBAEF,GAAG;sBACDJ,KAAK;sBACL7D,OAAO,SAAS6pC,QAAQt8B,IAAGu8B,YAAY;AACrC,4BAAI7lC;AAEJ,4BAAIsJ,KAAI,KAAK+7B,KAAKhiC,KAAKhI,QAAQ;AAE7B2E,gCAAM,KAAKqlC,KAAKhiC,KAAK/E,MAAM,GAAGgL,EAAC;AAC/B,+BAAK+7B,KAAKhiC,OAAO,KAAKgiC,KAAKhiC,KAAK/E,MAAMgL,EAAC;wBACzC,WAAWA,OAAM,KAAK+7B,KAAKhiC,KAAKhI,QAAQ;AAEtC2E,gCAAM,KAAK0lC,MAAK;wBAClB,OAAO;AAEL1lC,gCAAM6lC,aAAa,KAAKC,WAAWx8B,EAAC,IAAI,KAAKy8B,WAAWz8B,EAAC;wBAC3D;AAEA,+BAAOtJ;sBACT;oBACF,GAAG;sBACDJ,KAAK;sBACL7D,OAAO,SAASqS,QAAQ;AACtB,+BAAO,KAAKi3B,KAAKhiC;sBACnB;;oBAEF,GAAG;sBACDzD,KAAK;sBACL7D,OAAO,SAAS+pC,WAAWx8B,IAAG;AAC5B,4BAAInQ,IAAI,KAAKksC;AACb,4BAAIviC,KAAI;AACR,4BAAI9C,MAAM7G,EAAEkK;AACZiG,wBAAAA,MAAKtJ,IAAI3E;AAET,+BAAOlC,IAAIA,EAAEqsC,MAAM;AACjB,8BAAI17B,MAAM3Q,EAAEkK;AACZ,8BAAI2iC,KAAK18B,KAAIQ,IAAIzO,SAASyO,IAAIzO,SAASiO;AACvC,8BAAI08B,OAAOl8B,IAAIzO;AAAQ2E,mCAAO8J;;AAAS9J,mCAAO8J,IAAIxL,MAAM,GAAGgL,EAAC;AAC5DA,0BAAAA,MAAK08B;AAEL,8BAAI18B,OAAM,GAAG;AACX,gCAAI08B,OAAOl8B,IAAIzO,QAAQ;AACrB,gCAAEyH;AACF,kCAAI3J,EAAEqsC;AAAM,qCAAKH,OAAOlsC,EAAEqsC;;AAAU,qCAAKH,OAAO,KAAKC,OAAO;4BAC9D,OAAO;AACL,mCAAKD,OAAOlsC;AACZA,gCAAEkK,OAAOyG,IAAIxL,MAAM0nC,EAAE;4BACvB;AAEA;0BACF;AAEA,4BAAEljC;wBACJ;AAEA,6BAAKzH,UAAUyH;AACf,+BAAO9C;sBACT;;oBAEF,GAAG;sBACDJ,KAAK;sBACL7D,OAAO,SAASgqC,WAAWz8B,IAAG;AAC5B,4BAAItJ,MAAM9B,QAAOoI,YAAYgD,EAAC;AAC9B,4BAAInQ,IAAI,KAAKksC;AACb,4BAAIviC,KAAI;AACR3J,0BAAEkK,KAAKsE,KAAK3H,GAAG;AACfsJ,wBAAAA,MAAKnQ,EAAEkK,KAAKhI;AAEZ,+BAAOlC,IAAIA,EAAEqsC,MAAM;AACjB,8BAAI/nC,MAAMtE,EAAEkK;AACZ,8BAAI2iC,KAAK18B,KAAI7L,IAAIpC,SAASoC,IAAIpC,SAASiO;AACvC7L,8BAAIkK,KAAK3H,KAAKA,IAAI3E,SAASiO,IAAG,GAAG08B,EAAE;AACnC18B,0BAAAA,MAAK08B;AAEL,8BAAI18B,OAAM,GAAG;AACX,gCAAI08B,OAAOvoC,IAAIpC,QAAQ;AACrB,gCAAEyH;AACF,kCAAI3J,EAAEqsC;AAAM,qCAAKH,OAAOlsC,EAAEqsC;;AAAU,qCAAKH,OAAO,KAAKC,OAAO;4BAC9D,OAAO;AACL,mCAAKD,OAAOlsC;AACZA,gCAAEkK,OAAO5F,IAAIa,MAAM0nC,EAAE;4BACvB;AAEA;0BACF;AAEA,4BAAEljC;wBACJ;AAEA,6BAAKzH,UAAUyH;AACf,+BAAO9C;sBACT;;oBAEF,GAAG;sBACDJ,KAAKslC;sBACLnpC,OAAO,SAASA,MAAMkqC,GAAG5sC,UAAS;AAChC,+BAAOiI,QAAQ,MAAMpJ,gBAAc,CAAC,GAAGmB,UAAS;;0BAE9C6sC,OAAO;;0BAEPC,eAAe;wBACjB,CAAC,CAAC;sBACJ;oBACF,CAAC,CAAC;AAEF,2BAAOf;kBACT,EAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sBC7MKgB,uBAAAA,2BAAAA;;;;;;iDACO;8BACH,IAAIxlC,MAAM,mCAAV;;;;;sBCAJylC,UAAAA,2BAAAA;wCACsB;0BAAdhtC,WAAc,UAAA,SAAA,KAAA,UAAA,CAAA,MAAA,SAAA,UAAA,CAAA,IAAJ,CAAA;;2BACfitC,SAAS,CAAA;2BAETC,SACH,OAAOltC,SAAQktC,WAAW,YAAYltC,SAAQktC,SAAS;;;;0CAGvD3mC,KAAK3C,KAAK;+BACJ,KAAKqpC,OAAO1mC,GAAZ,IAAmB3C;;;;0CAGzB2C,KAAK;+BACA,KAAK0mC,OAAO1mC,GAAZ;;;;iDAGE;;4BAEH4mC,aAAaxrC,OAAOqC,KAAK,KAAKipC,MAAjB,EAAyBG,KAAK,SAAClvC,IAAGyP,GAAJ;iCAC/C0/B,MAAKC,aAAapvC,IAAGyP,CAArB;yBADiB;4BAIb8F,MAAM,CAAC,IAAD;4BACR,KAAKy5B,UAAUC,WAAWnrC,SAAS,GAAG;8BAClC+S,SAAQo4B,WAAW,CAAD,GACtBn4B,QAAOm4B,WAAWA,WAAWnrC,SAAS,CAArB;AACnByR,8BAAIxQ,KAAJ,aAAA,OACesqC,UAAUC,QAAQ,CAAC,KAAKC,YAAY14B,MAAjB,GAAyB,KAAK04B,YAAYz4B,KAAjB,CAA1B,CAAlB,CADf,CAAA;;AAIFvB,4BAAIxQ,KAAJ,MAAA,OAAe,KAAKyqC,UAAL,GAAf,IAAA,CAAA;mEACgBP,UAfP;;+EAemB;gCAAnB5mC,MAAmB,MAAA;AAC1BkN,gCAAIxQ,KAAJ,OAAA,OACSsqC,UAAUC,QAAQ,KAAKC,YAAYlnC,GAAjB,CAAlB,GADT,GAAA,EAAA,OACqDgnC,UAAUC,QAC3D,KAAKP,OAAO1mC,GAAZ,CADiD,CADrD,CAAA;;;;;;;AAMFkN,4BAAIxQ,KAAK,GAAT;AACAwQ,4BAAIxQ,KAAK,IAAT;+BACOwQ,IAAIwa,KAAK,IAAT;;;;;8BAID,IAAI1mB,MAAM,mCAAV;;;;kDAGI;8BACJ,IAAIA,MAAM,mCAAV;;;;;8BAIA,IAAIA,MAAM,mCAAV;;;;;AClDV,sBAAMoiB,OAAM,SAANA,KAAOlZ,KAAKzO,SAAN;4BAAkByM,MAAMzM,UAAS,CAAV,EAAaisB,KAAK,GAAvB,IAA8Bxd,KAAKxL,MAAM,CAACjD,OAA3C;;AAE7B,sBAAM2rC,cAAc;AACpB,sBAAMC,YAAY;0BACV;0BACA;yBACA;0BACA;0BACA;0BACA;yBACD;yBACA;;AAIP,sBAAMC,YAAY,SAAZA,WAAqBC,MAAM;wBACzBC,IAAID,KAAK9rC;wBACX+rC,IAAI,GAAM;4BACN,IAAIxmC,MAAM,4BAAV;2BACD;+BACIrE,IAAI,GAAGC,MAAM4qC,IAAI,GAAG7qC,IAAIC,KAAKD,KAAK,GAAG;4BACtChF,KAAI4vC,KAAK5qC,CAAD;AACd4qC,6BAAK5qC,CAAD,IAAM4qC,KAAK5qC,IAAI,CAAL;AACd4qC,6BAAK5qC,IAAI,CAAL,IAAUhF;;;2BAIX4vC;;sBAGHP,YAAAA,2BAAAA;;;;;;8CACW3iC,QAA0B;4BAAlBojC,YAAkB,UAAA,SAAA,KAAA,UAAA,CAAA,MAAA,SAAA,UAAA,CAAA,IAAN;4BAE7B,OAAOpjC,WAAW,UAAU;4CACnBA,MAAX;mCAGSA,kBAAkBmE,QAAQ;8BAC/BzH,SAASsD;8BAETqjC,YAAY;mCACP/qC,IAAI,GAAGC,MAAMmE,OAAOtF,QAAQkB,IAAIC,KAAKD,KAAK;gCAC7CoE,OAAOsR,WAAW1V,CAAlB,IAAuB,KAAM;AAC/B+qC,0CAAY;;;;8BAMZC;8BACAD,WAAW;AACbC,2CAAeL,UAAUhpC,QAAOC,KAAP,SAAA,OAAqBwC,MAArB,GAA+B,SAA/B,CAAD;iCACnB;AACL4mC,2CAAerpC,QAAOC,KAAKwC,OAAOoG,QAAP,GAAkB,OAA9B;;8BAIbsgC,WAAW;AACb1mC,qCAAS0mC,UAAUE,YAAD,EAAetpC,SAAS,QAAjC;iCACJ;AACL0C,qCAAS4mC,aAAatpC,SAAS,QAAtB;;AAIX0C,mCAASA,OAAOb,QAAQknC,aAAa,SAAAlkC,IAAC;mCAAImkC,UAAUnkC,EAAD;2BAA1C;4CAEEnC,QAAX,GAAA;mCAGSzC,QAAO6H,SAAS9B,MAAhB,GAAyB;4CACvBA,OAAOhG,SAAS,KAAhB,GAAX,GAAA;mCAEAgG,kBAAkBmiC,wBAClBniC,kBAAkBoiC,SAClB;iCACOpiC,OAAOhG,SAAP;mCACEgG,kBAAkBujC,MAAM;8BAC7B7mC,UACF,KAAA,OAAKqiB,KAAI/e,OAAOwjC,eAAP,GAAyB,CAA1B,CAAR,IACAzkB,KAAI/e,OAAOyjC,YAAP,IAAuB,GAAG,CAA3B,IACH1kB,KAAI/e,OAAO0jC,WAAP,GAAqB,CAAtB,IACH3kB,KAAI/e,OAAO2jC,YAAP,GAAsB,CAAvB,IACH5kB,KAAI/e,OAAO4jC,cAAP,GAAwB,CAAzB,IACH7kB,KAAI/e,OAAO6jC,cAAP,GAAwB,CAAzB,IACH;8BAGET,WAAW;AACb1mC,sCAAS0mC,UAAUnpC,QAAOC,KAAKwC,SAAQ,OAApB,CAAD,EAA+B1C,SAAS,QAAjD;AAGT0C,sCAASA,QAAOb,QAAQknC,aAAa,SAAAlkC,IAAC;qCAAImkC,UAAUnkC,EAAD;6BAA1C;;4CAGAnC,SAAX,GAAA;mCACSmH,MAAMC,QAAQ9D,MAAd,GAAuB;8BAC1BtC,QAAQsC,OAAOnK,IAAI,SAAA7B,IAAC;mCAAI2uC,WAAUC,QAAQ5uC,IAAGovC,SAArB;2BAAhB,EAAiD/f,KAAK,GAAtD;4CACH3lB,OAAX,GAAA;mCACS,CAAA,EAAG1D,SAASoE,KAAK4B,MAAjB,MAA6B,mBAAmB;8BACnD6I,MAAM,CAAC,IAAD;mCACHlN,OAAOqE,QAAQ;gCAChBhH,MAAMgH,OAAOrE,GAAD;AAClBkN,gCAAIxQ,KAAJ,IAAA,OAAasD,KAAb,GAAA,EAAA,OAAoBgnC,WAAUC,QAAQ5pC,KAAKoqC,SAAvB,CAApB,CAAA;;AAGFv6B,8BAAIxQ,KAAK,IAAT;iCACOwQ,IAAIwa,KAAK,IAAT;mCACE,OAAOrjB,WAAW,UAAU;iCAC9B2iC,WAAU9sB,OAAO7V,MAAjB;+BACF;2CACKA,MAAV;;;;;8CAIUqF,IAAG;4BACXA,KAAI,SAASA,KAAI,MAAM;iCAClBpB,KAAKsX,MAAMlW,KAAI,GAAf,IAAsB;;8BAGzB,IAAI1I,MAAJ,uBAAA,OAAiC0I,EAAjC,CAAA;;;;;sBCtHJy+B,eAAAA,yBAAAA,uBAAAA;;;2CACQC,WAAUC,MAAe;;0BAAX5kC,QAAW,UAAA,SAAA,KAAA,UAAA,CAAA,MAAA,SAAA,UAAA,CAAA,IAAJ,CAAA;;;4BAE1B2kC,WAAWA;4BACXC,KAAKA;4BACL5kC,OAAOA;4BACP6kC,MAAM;4BACNC,WAAWzB,MAAKsB,SAASG,YAAY,CAACzB,MAAKrjC,KAAK+kC;4BAChDC,qBAAqB;4BACrBvqC,SAAS,CAAA;;;;;4CAGVwqC,OAAO;4BACP,CAACpqC,QAAO6H,SAASuiC,KAAhB,GAAwB;AAC3BA,kCAAQpqC,QAAOC,KAAKmqC,QAAQ,MAAM,QAA1B;;6BAGLD,sBAAsBC,MAAMjtC;4BAC7B,KAAKgI,KAAKklC,UAAU,MAAM;+BACvBllC,KAAKklC,SAAS;;6BAEhBzqC,OAAOxB,KAAKgsC,KAAjB;6BACKjlC,KAAKklC,UAAUD,MAAMjtC;4BACtB,KAAK8sC,UAAU;iCACT,KAAK9kC,KAAK+kC,SAAS;;;;;0CAI3BE,OAAO;4BACLA,OAAO;+BACJ9gC,MAAM8gC,KAAX;;+BAEK,KAAKnnB,SAAL;;;;iDAGE;6BACJve,SAAS,KAAKolC,SAASQ;4BAEtBnB,YAAY,KAAKW,SAASS,YAC5B,KAAKT,SAASS,UAAUC,aAAa,KAAKT,IAAI,KAAKC,GAAnD,IACA;4BAEA,KAAKpqC,OAAOzC,QAAQ;+BACjByC,SAASI,QAAOoK,OAAO,KAAKxK,MAAnB;8BACV,KAAKqqC,UAAU;iCACZrqC,SAASiiC,MAAAA,QAAK4I,YAAY,KAAK7qC,MAAtB;;8BAGZupC,WAAW;iCACRvpC,SAASupC,UAAU,KAAKvpC,MAAN;;+BAGpBuF,KAAKklC,SAAS,KAAKzqC,OAAOzC;;6BAG5B2sC,SAASY,OAAd,GAAA,OAAwB,KAAKX,IAA7B,GAAA,EAAA,OAAmC,KAAKC,KAAxC,MAAA,CAAA;6BACKF,SAASY,OAAOhC,UAAUC,QAAQ,KAAKxjC,MAAMgkC,SAA7B,CAArB;4BAEI,KAAKvpC,OAAOzC,QAAQ;+BACjB2sC,SAASY,OAAO,QAArB;+BACKZ,SAASY,OAAO,KAAK9qC,MAA1B;+BAEKA,SAAS,CAAA;+BACTkqC,SAASY,OAAO,aAArB;;6BAGGZ,SAASY,OAAO,QAArB;6BACKZ,SAASa,QAAQ,IAAtB;;;;iDAES;yCACC,KAAKZ,IAAf,GAAA,EAAA,OAAqB,KAAKC,KAA1B,IAAA;;;;oBAtEuB9B,oBAAAA;ACJ3B,sBAAM0C,kBAAkB;oBACtBC,KAAK;oBACLlG,MAAM;oBACNmG,QAAQ;oBACRC,OAAO;;AAGT,sBAAMC,QAAQ;2BACL,CAAC,SAAS,OAAV;2BACA,CAAC,SAAS,OAAV;oBACPC,IAAI,CAAC,SAAS,OAAV;oBACJC,IAAI,CAAC,SAAS,OAAV;oBACJC,IAAI,CAAC,SAAS,OAAV;oBACJC,IAAI,CAAC,QAAQ,OAAT;oBACJC,IAAI,CAAC,QAAQ,MAAT;oBACJC,IAAI,CAAC,QAAQ,MAAT;oBACJC,IAAI,CAAC,QAAQ,MAAT;oBACJC,IAAI,CAAC,QAAQ,MAAT;oBACJC,IAAI,CAAC,OAAO,MAAR;oBACJC,IAAI,CAAC,QAAQ,KAAT;oBACJC,KAAK,CAAC,MAAM,MAAP;oBACLC,IAAI,CAAC,SAAS,OAAV;oBACJC,IAAI,CAAC,SAAS,OAAV;oBACJC,IAAI,CAAC,SAAS,OAAV;oBACJC,IAAI,CAAC,SAAS,OAAV;oBACJC,IAAI,CAAC,QAAQ,OAAT;oBACJC,IAAI,CAAC,OAAO,MAAR;oBACJC,IAAI,CAAC,QAAQ,KAAT;oBACJC,IAAI,CAAC,QAAQ,MAAT;oBACJC,IAAI,CAAC,QAAQ,MAAT;oBACJC,IAAI,CAAC,QAAQ,MAAT;oBACJC,KAAK,CAAC,OAAO,MAAR;oBACLC,IAAI,CAAC,SAAS,OAAV;oBACJC,IAAI,CAAC,SAAS,OAAV;oBACJC,IAAI,CAAC,SAAS,OAAV;oBACJC,IAAI,CAAC,QAAQ,OAAT;oBACJC,IAAI,CAAC,QAAQ,MAAT;oBACJC,IAAI,CAAC,QAAQ,MAAT;oBACJC,IAAI,CAAC,QAAQ,MAAT;oBACJC,IAAI,CAAC,QAAQ,MAAT;oBACJC,IAAI,CAAC,QAAQ,MAAT;oBACJC,IAAI,CAAC,QAAQ,MAAT;oBACJC,KAAK,CAAC,OAAO,MAAR;oBACLC,KAAK,CAAC,QAAQ,OAAT;oBACLC,KAAK,CAAC,SAAS,MAAV;oBACLC,KAAK,CAAC,QAAQ,OAAT;oBACLC,KAAK,CAAC,QAAQ,MAAT;oBACLC,KAAK,CAAC,QAAQ,MAAT;oBACLC,MAAM,CAAC,SAAS,OAAV;oBACNC,MAAM,CAAC,SAAS,OAAV;oBACNC,MAAM,CAAC,SAAS,OAAV;oBACNC,MAAM,CAAC,QAAQ,OAAT;oBACNC,MAAM,CAAC,OAAO,MAAR;oBACNC,WAAW,CAAC,QAAQ,GAAT;oBACXC,OAAO,CAAC,KAAO,GAAR;oBACPC,OAAO,CAAC,KAAO,IAAR;oBACPC,QAAQ,CAAC,KAAO,GAAR;oBACRC,SAAS,CAAC,KAAO,IAAR;;sBAGLC,UAAAA,2BAAAA;sCACQnE,WAAwB;0BAAd3uC,WAAc,UAAA,SAAA,KAAA,UAAA,CAAA,MAAA,SAAA,UAAA,CAAA,IAAJ,CAAA;;2BACzB2uC,WAAWA;2BACXvrC,OAAOpD,SAAQoD,QAAQ;2BACvB2vC,SAAS/yC,SAAQ+yC,UAAU;0BAG5B,OAAO/yC,SAAQgzC,WAAW,UAAU;6BACjCC,UAAU;0BACbvD,KAAK1vC,SAAQgzC;0BACbxJ,MAAMxpC,SAAQgzC;0BACdrD,QAAQ3vC,SAAQgzC;0BAChBpD,OAAO5vC,SAAQgzC;;6BAIZ;6BACAC,UAAUjzC,SAAQizC,WAAWxD;;0BAI9ByD,aAAazkC,MAAMC,QAAQ,KAAKtL,IAAnB,IACf,KAAKA,OACLysC,MAAM,KAAKzsC,KAAK+vC,YAAV,CAAD;2BACJzL,QAAQwL,WAAW,KAAKH,WAAW,aAAa,IAAI,CAAlC;2BAClBpL,SAASuL,WAAW,KAAKH,WAAW,aAAa,IAAI,CAAlC;2BAEnBK,UAAU,KAAKzE,SAAS0E,IAAd;2BAGVC,YAAY,KAAK3E,SAAS0E,IAAI;wBACjCE,SAAS,CAAC,OAAO,QAAQ,UAAU,UAAU,QAApC;uBADM;2BAKZC,aAAa,KAAK7E,SAAS0E,IAAI;wBAClCI,MAAM;wBACN9zC,QAAQ,KAAKgvC,SAAS+E,MAAM1pC,KAAK2pC;wBACjCC,UAAU,CAAC,GAAG,GAAG,KAAKlM,OAAO,KAAKC,MAAxB;wBACVkM,UAAU,KAAKT;wBACfU,WAAW,KAAKR;uBALA;2BAQbS,WAAW,CAAA;;;;6CAyCX;+BACE,KAAKpM,SAAS,KAAKsL,QAAQtD;;;;4CAG9BV,OAAO;+BACJ,KAAKmE,QAAQjlC,MAAM8gC,KAAnB;;;;4CAGH;6BACCuE,WAAWrwC,IAAhB;6BACKmwC,UAAUnwC,IAAf;+BACO,KAAKiwC,QAAQjwC,IAAb;;;;0CAhDG;4BACJ6G,QAAO,KAAKspC,UAAUtpC;+BACrBA,MAAKgqC,QAAQ,OAAOhqC,MAAKgqC,OAAQhqC,MAAKgqC,OAAO,CAAA;;;;0CAGvC;4BACPhqC,QAAO,KAAKspC,UAAUtpC;+BACrBA,MAAKiqC,WAAW,OAAOjqC,MAAKiqC,UAAWjqC,MAAKiqC,UAAU,CAAA;;;;0CAG7C;4BACVjqC,QAAO,KAAKspC,UAAUtpC;+BACrBA,MAAKkqC,aAAa,OAAOlqC,MAAKkqC,YAAalqC,MAAKkqC,YAAY,CAAA;;;;0CAGtD;4BACPlqC,QAAO,KAAKspC,UAAUtpC;+BACrBA,MAAKmqC,WAAW,OAAOnqC,MAAKmqC,UAAWnqC,MAAKmqC,UAAU,CAAA;;;;0CAG7C;4BACVnqC,QAAO,KAAKspC,UAAUtpC;+BACrBA,MAAKoqC,eAAepqC,MAAKoqC,aAAa,CAAA;;;;0CAG7B;4BACVpqC,QAAO,KAAKwpC,WAAWxpC;+BACtBA,MAAKqqC,UAAU,OAAOrqC,MAAKqqC,SAAUrqC,MAAKqqC,SAAS,CAAA;;;;0CAGlC;4BAClBrqC,QAAO,KAAKwpC,WAAWxpC;+BACtBA,MAAKsqC,iBAAiB,OACzBtqC,MAAKsqC,gBACJtqC,MAAKsqC,gBAAgB,KAAK3F,SAAS4F,8BAAd;;;;;sBC5IxBC,cAAAA,yBAAAA,UAAAA;;;;;;;;;mDACSt2C,IAAGyP,GAAG;+BACVzP,GAAEu2C,cAAc9mC,CAAhB;;;;kDAGG;+BACH;;;;kDAGG3M,IAAG;+BACN,IAAI+N,OAAO/N,EAAX;;;;oBAVegsC,OAAAA;ACA1B,2BAAS0H,QAAQhyC,OAAOiyC,YAAY;wBAC9BjyC,QAAQiyC,WAAW,CAAD;AAAK,6BAAO;wBAC9BC,aAAa;wBACbC,WAAWF,WAAW3yC,SAAS;2BAC5B4yC,cAAcC,UAAU;0BACvBC,cAAcjmC,KAAKiL,OAAO86B,aAAaC,YAAY,CAArC;0BAGdE,aAAaD,cAAc;0BAI/BpyC,SAASiyC,WAAWI,UAAD,KACnBryC,SAASiyC,WAAWI,aAAa,CAAd,GACnB;+BACO;;0BAGLryC,QAAQiyC,WAAWI,aAAa,CAAd,GAAkB;AAEtCH,qCAAaE,cAAc;6BACtB;AAELD,mCAAWC,cAAc;;;2BAGtB;;ACzBT,sBAAME,yBAAyB,CAC7B,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,MAxxB6B;AA4xB/B,sBAAMC,wBAAwB,SAAxBA,uBAAwBC,YAAS;2BACrCR,QAAQQ,YAAWF,sBAAZ;;AAOT,sBAAMG,6BAA6B,CACjC,KACA,KACA,KACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,KAtDiC;AA0DnC,sBAAMC,4BAA4B,SAA5BA,2BAA4BF,YAAS;2BACzCR,QAAQQ,YAAWC,0BAAZ;;AAOT,sBAAME,6BAA6B;oBACjC;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;;;AAIF,sBAAMC,2BAA2B,SAA3BA,0BAA2BJ,YAAS;2BACxCR,QAAQQ,YAAWG,0BAAZ;;AAGT,sBAAME,gCAAgC;;;;;oBAKpC;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;;;AAGF,sBAAMC,2BAA2B;;;;;oBAK/B;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;;;AAMF,sBAAMC,wBAAwB;;;;;oBAK5B;oBACA;oBACA;oBACA;;;;;oBAMA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;;;;;oBAMA;oBACA;;;;;oBAMA;oBACA;;;;;oBAMA;oBACA;;;;;oBAMA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;;;;;oBAMA;oBACA;oBACA;oBACA;;;;;oBAOA;oBACA;oBACA;oBACA;;;AAIF,sBAAMC,wBAAwB,SAAxBA,uBAAwBR,YAAS;2BACrCR,QAAQQ,YAAWG,0BAAZ,KACPX,QAAQQ,YAAWO,qBAAZ,KACPf,QAAQQ,YAAWK,6BAAZ,KACPb,QAAQQ,YAAWM,wBAAZ;;AAOT,sBAAMG,qBAAqB,CACzB,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,KApEyB;AAwE3B,sBAAMC,qBAAqB,SAArBA,oBAAqBV,YAAS;2BAAIR,QAAQQ,YAAWS,kBAAZ;;AAO/C,sBAAME,kBAAkB,CACtB,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,MACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,SACA,SACA,OAhtBsB;AAotBxB,sBAAMC,mBAAmB,SAAnBA,kBAAmBZ,YAAS;2BAAIR,QAAQQ,YAAWW,eAAZ;;AC/2D7C,sBAAME,gBAAgBT;AAMtB,sBAAMU,kBAAkBZ;AAGxB,sBAAMa,eAAe,SAAfA,cAAef,YAAS;2BAAIA,WAAUgB,YAAY,CAAtB;;AAClC,sBAAMnhC,QAAQ,SAARA,OAAQnU,IAAC;2BAAIA,GAAE,CAAD;;AACpB,sBAAMoU,OAAO,SAAPA,MAAOpU,IAAC;2BAAIA,GAAEA,GAAEoB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;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;;oBAEA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;;;oBAGA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;;oBAEA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;;oBAEA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;;oBAEA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;;oBAEA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;;oBAEA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;;oBAEA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;;oBAEA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBACA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;oBAAA;o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A;sBACA,SAAA;oBACA;oBACA,WAAA;oBACA,UAAA;oBACA,eAAA;sBACA,QAAA;sBACA,SAAA;oBACA;oBACA,WAAA;oBACA,UAAA;oBACA,eAAA;sBACA,QAAA;sBACA,SAAA;oBACA;oBACA,WAAA;oBACA,UAAA;oBACA,eAAA;sBACA,QAAA;sBACA,SAAA;oBACA;oBACA,WAAA;oBACA,UAAA;oBACA,eAAA;sBACA,QAAA;sBACA,SAAA;oBACA;oBACA,WAAA;oBACA,UAAA;oBACA,eAAA;sBACA,QAAA;sBACA,SAAA;oBACA;oBACA,WAAA;oBACA,UAAA;oBACA,eAAA;sBACA,QAAA;sBACA,SAAA;oBACA;oBACA,WAAA;oBACA,UAAA;oBACA,eAAA;sBACA,QAAA;sBACA,SAAA;oBACA;oBACA,WAAA;oBACA,UAAA;oBACA,YAAA;sBACA,QAAA;sBACA,SAAA;oBACA;oBACA,WAAA;oBACA,YAAA;sBACA,QAAA;sBACA,SAAA;oBACA;oBACA,WAAA;oBACA,YAAA;sBACA,QAAA;sBACA,SAAA;oBACA;oBACA,WAAA;oBACA,YAAA;sBACA,QAAA;sBACA,SAAA;oBACA;oBACA,WAAA;oBACA,YAAA;sBACA,QAAA;sBACA,SAAA;oBACA;oBACA,WAAA;oBACA,YAAA;sBACA,QAAA;sBACA,SAAA;oBACA;oBACA,WAAA;oBACA,YAAA;sBACA,QAAA;sBACA,SAAA;oBACA;oBACA,WAAA;oBACA,YAAA;sBACA,QAAA;sBACA,SAAA;oBACA;oBACA,WAAA;oBACA,YAAA;sBACA,QAAA;sBACA,SAAA;oBACA;oBACA,WAAA;oBACA,aAAA;sBACA,QAAA;sBACA,SAAA;oBACA;oBACA,WAAA;oBACA,aAAA;sBACA,QAAA;sBACA,SAAA;oBACA;oBACA,WAAA;oBACA,aAAA;sBACA,QAAA;sBACA,SAAA;oBACA;oBACA,WAAA;oBACA,aAAA;sBACA,QAAA;sBACA,SAAA;oBACA;oBACA,WAAA;oBACA,aAAA;sBACA,QAAA;sBACA,SAAA;oBACA;oBACA,WAAA;oBACA,aAAA;sBACA,QAAA;sBACA,SAAA;oBACA;oBACA,WAAA;oBACA,SAAA;sBACA,QAAA;sBACA,SAAA;oBACA;oBACA,UAAA;oBACA,YAAA;oBACA,SAAA;sBACA,QAAA;sBACA,SAAA;oBACA;oBACA,UAAA;oBACA,YAAA;oBACA,SAAA;sBACA,QAAA;sBACA,SAAA;oBACA;oBACA,UAAA;oBACA,YAAA;oBACA,SAAA;sBACA,QAAA;sBACA,SAAA;oBACA;oBACA,UAAA;oBACA,YAAA;oBACA,SAAA;sBACA,QAAA;sBACA,SAAA;oBACA;oBACA,UAAA;oBACA,YAAA;oBACA,SAAA;sBACA,QAAA;sBACA,SAAA;oBACA;oBACA,UAAA;oBACA,YAAA;oBACA,SAAA;sBACA,QAAA;sBACA,SAAA;oBACA;oBACA,UAAA;oBACA,YAAA;oBACA,SAAA;sBACA,QAAA;sBACA,SAAA;oBACA;oBACA,UAAA;oBACA,YAAA;oBACA,SAAA;sBACA,QAAA;sBACA,SAAA;oBACA;oBACA,UAAA;oBACA,YAAA;oBACA,SAAA;sBACA,QAAA;sBACA,SAAA;oBACA;oBACA,UAAA;oBACA,YAAA;oBACA,SAAA;sBACA,QAAA;sBACA,SAAA;oBACA;oBACA,UAAA;oBACA,YAAA;oBACA,SAAA;sBACA,QAAA;sBACA,SAAA;oBACA;oBACA,UAAA;oBACA,YAAA;oBACA,SAAA;sBACA,QAAA;sBACA,SAAA;oBACA;oBACA,UAAA;oBACA,YAAA;oBACA,SAAA;sBACA,QAAA;sBACA,SAAA;oBACA;oBACA,UAAA;oBACA,YAAA;oBACA,SAAA;sBACA,QAAA;sBACA,SAAA;oBACA;oBACA,UAAA;oBACA,YAAA;oBACA,SAAA;sBACA,QAAA;sBACA,SAAA;oBACA;oBACA,UAAA;oBACA,YAAA;oBACA,SAAA;sBACA,QAAA;sBACA,SAAA;oBACA;oBACA,UAAA;oBACA,YAAA;oBACA,SAAA;sBACA,QAAA;sBACA,SAAA;oBACA;oBACA,UAAA;oBACA,YAAA;oBACA,UAAA;sBACA,QAAA;sBACA,SAAA;oBACA;oBACA,WAAA;oBACA,aAAA;oBACA,UAAA;sBACA,QAAA;sBACA,SAAA;oBACA;oBACA,WAAA;oBACA,aAAA;oBACA,UAAA;sBACA,QAAA;sBACA,SAAA;oBACA;oBACA,WAAA;oBACA,aAAA;oBACA,UAAA;sBACA,QAAA;sBACA,SAAA;oBACA;oBACA,WAAA;oBACA,aAAA;oBACA,UAAA;sBACA,QAAA;sBACA,SAAA;oBACA;oBACA,WAAA;oBACA,aAAA;oBACA,UAAA;sBACA,QAAA;sBACA,SAAA;oBACA;oBACA,WAAA;oBACA,aAAA;oBACA,UAAA;sBACA,QAAA;sBACA,SAAA;oBACA;oBACA,WAAA;oBACA,aAAA;oBACA,UAAA;sBACA,QAAA;sBACA,SAAA;oBACA;oBACA,WAAA;oBACA,aAAA;oBACA,eAAA;sBACA,QAAA;sBACA,SAAA;oBACA;oBACA,eAAA;sBACA,QAAA;sBACA,SAAA;oBACA;oBACA,YAAA;sBACA,QAAA;sBACA,SAAA;oBACA;oBACA,cAAA;sBACA,QAAA;sBACA,SAAA;oBACA;oBACA,YAAA;sBACA,QAAA;sBACA,SAAA;oBACA;oBACA,cAAA;sBACA,QAAA;sBACA,SAAA;oBACA;oBACA,WAAA;sBACA,QAAA;sBACA,SAAA;oBACA;oBACA,cAAA;sBACA,QAAA;sBACA,SAAA;oBACA;oBACA,cAAA;sBACA,QAAA;sBACA,SAAA;oBACA;oBACA,SAAA;sBACA,QAAA;sBACA,SAAA;oBACA;oBACA,SAAA;sBACA,QAAA;sBACA,SAAA;oBACA;oBACA,UAAA;sBACA,QAAA;sBACA,SAAA;oBACA;oBACA,SAAA;sBACA,QAAA;sBACA,SAAA;oBACA;oBACA,YAAA;sBACA,QAAA;sBACA,SAAA;oBACA;oBACA,UAAA;sBACA,QAAA;sBACA,SAAA;oBACA;oBACA,QAAA;sBACA,QAAA;sBACA,SAAA;oBACA;oBACA,mBAAA;sBACA,QAAA;sBACA,SAAA;oBACA;oBACA,cAAA;sBACA,QAAA;sBACA,SAAA;oBACA;oBACA,SAAA;sBACA,QAAA;sBACA,SAAA;oBACA;oBACA,UAAA;sBACA,QAAA;sBACA,SAAA;oBACA;oBACA,YAAA;sBAC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BACA,QAAA;sBACA,QAAA;sBACA,OAAA;sBACA,QAAA;sBACA,SAAA;sBACA,QAAA;sBACA,SAAA;sBACA,UAAA;sBACA,OAAA;sBACA,UAAA;sBACA,QAAA;sBACA,OAAA;sBACA,QAAA;sBACA,SAAA;sBACA,OAAA;sBACA,OAAA;sBACA,QAAA;sBACA,OAAA;sBACA,UAAA;sBACA,QAAA;sBACA,QAAA;sBACA,QAAA;sBACA,SAAA;sBACA,SAAA;sBACA,QAAA;sBACA,UAAA;sBACA,SAAA;sBACA,QAAA;sBACA,SAAA;sBACA,UAAA;sBACA,UAAA;sBACA,UAAA;sBACA,UAAA;sBACA,SAAA;sBACA,UAAA;sBACA,SAAA;sBACA,SAAA;sBACA,UAAA;sBACA,UAAA;sBACA,QAAA;sBACA,QAAA;sBACA,QAAA;sBACA,SAAA;sBACA,SAAA;sBACA,QAAA;sBACA,SAAA;sBACA,SAAA;sBACA,WAAA;sBACA,QAAA;sBACA,OAAA;sBACA,SAAA;sBACA,QAAA;sBACA,SAAA;sBACA,UAAA;sBACA,MAAA;sBACA,MAAA;sBACA,MAAA;sBACA,WAAA;sBACA,MAAA;sBACA,OAAA;sBACA,SAAA;sBACA,OAAA;sBACA,WAAA;sBACA,OAAA;sBACA,OAAA;sBACA,OAAA;sBACA,SAAA;sBACA,SAAA;sBACA,QAAA;sBACA,SAAA;sBACA,SAAA;sBACA,WAAA;sBACA,QAAA;sBACA,OAAA;sBACA,SAAA;sBACA,QAAA;sBACA,SAAA;sBACA,UAAA;sBACA,MAAA;sBACA,MAAA;sBACA,MAAA;sBACA,WAAA;sBACA,MAAA;sBACA,OAAA;sBACA,UAAA;sBACA,SAAA;sBACA,OAAA;sBACA,WAAA;sBACA,OAAA;sBACA,OAAA;sBACA,OAAA;sBACA,SAAA;sBACA,YAAA;sBACA,SAAA;sBACA,OAAA;sBACA,QAAA;sBACA,QAAA;sBACA,UAAA;sBACA,QAAA;sBACA,OAAA;sBACA,OAAA;sBACA,OAAA;sBACA,SAAA;sBACA,SAAA;sBACA,SAAA;sBACA,SAAA;sBACA,SAAA;sBACA,SAAA;sBACA,SAAA;sB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A,OAAA;sBACA,MAAA;sBACA,MAAA;sBACA,MAAA;sBACA,OAAA;sBACA,MAAA;sBACA,MAAA;sBACA,OAAA;sBACA,MAAA;sBACA,OAAA;sBACA,MAAA;sBACA,OAAA;sBACA,MAAA;sBACA,MAAA;sBACA,MAAA;sBACA,MAAA;sBACA,MAAA;sBACA,MAAA;sBACA,MAAA;sBACA,OAAA;sBACA,OAAA;sBACA,MAAA;sBACA,MAAA;sBACA,MAAA;sBACA,MAAA;sBACA,MAAA;sBACA,MAAA;sBACA,OAAA;sBACA,OAAA;sBACA,MAAA;sBACA,MAAA;sBACA,MAAA;sBACA,MAAA;sBACA,MAAA;sBACA,MAAA;sBACA,OAAA;sBACA,OAAA;sBACA,MAAA;sBACA,MAAA;sBACA,OAAA;sBACA,MAAA;sBACA,MAAA;sBACA,MAAA;sBACA,OAAA;sBACA,MAAA;sBACA,MAAA;sBACA,MAAA;sBACA,MAAA;sBACA,MAAA;sBACA,MAAA;sBACA,MAAA;sBACA,MAAA;sBACA,MAAA;sBACA,MAAA;sBACA,MAAA;sBACA,OAAA;sBACA,MAAA;sBACA,MAAA;sBACA,MAAA;sBACA,OAAA;sBACA,MAAA;sBACA,MAAA;sBACA,MAAA;sBACA,MAAA;sBACA,MAAA;sBACA,MAAA;sBACA,MAAA;sBACA,MAAA;sBACA,MAAA;sBACA,MAAA;sBACA,MAAA;sBACA,MAAA;sBACA,MAAA;sBACA,MAAA;sBACA,MAAA;sBACA,MAAA;sBACA,MAAA;sBACA,MAAA;sBACA,MAAA;sBACA,MAAA;sBACA,MAAA;sBACA,MAAA;sBACA,MAAA;sBACA,MAAA;sBACA,MAAA;sBACA,MAAA;sBACA,MAAA;sBACA,MAAA;sBACA,MAAA;sBACA,MAAA;sBACA,MAAA;sBACA,MAAA;sBACA,MAAA;sBACA,MAAA;sBACA,MAAA;sBACA,MAAA;sBACA,MAAA;sBACA,MAAA;sBACA,MAAA;sBACA,MAAA;sBACA,MAAA;sBACA,MAAA;sBACA,MAAA;sBACA,MAAA;sBACA,MAAA;sBACA,MAAA;sBACA,MAAA;sBACA,MAAA;sBACA,MAAA;sBACA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A,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,KAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,KAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,KAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,KAAA,KAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,IAAA,GAAA,KAAA,GAAA,KAAA,KAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,CAAA,GAAA,CAAA,GAAA,KAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,KAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,KAAA,GAAA,GAAA,GAAA,KAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,KAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,KAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,KAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,KAAA,KAAA,GAAA,GAAA,KAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,KAAA,GAAA,KAAA,GAAA,KAAA,GAAA,IAAA,IAAA,KAAA,GAAA,IAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,KAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,KAAA,IAAA,GAAA,GAAA,IAAA,KAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,KAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,IAAA,GAAA,KAAA,GAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,CAAA,GAAA,CAAA,GAAA,KAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,KAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,KAAA,IAAA,GAAA,GAAA,IAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,IAAA,GAAA,KAAA,GAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,CAAA,GAAA,CAAA,GAAA,KAAA,KAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,KAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,KAAA,KAAA,GAAA,GAAA,IAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,KAAA,GAAA,GAAA,GAAA,IAAA,KAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,KAAA,IAAA,GAAA,GAAA,IAAA,KAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,GAAA,KAAA,KAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,IAAA,GAAA,KAAA,GAAA,KAAA,KAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,KAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,KAAA,GAAA,KAAA,GAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,KAAA,KAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,KAAA,GAAA,GAAA,GAAA,KAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,KAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,KAAA,KAAA,GAAA,GAAA,KAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,IAAA,KAAA,KAAA,GAAA,KAAA,GAAA,IAAA,GAAA,GAAA,IAAA,KAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,IAAA,GAAA,KAAA,IAAA,KAAA,KAAA,KAAA,KAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,IAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,KAAA,GAAA,KAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,KAAA,KAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,IAAA,GAAA,KAAA,KAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,KAAA,GAAA,GAAA,GAAA,IAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,KAAA,IAAA,GAAA,GAAA,IAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,GAAA,KAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,IAAA,GAAA,KAAA,GAAA,KAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,KAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,IAAA,GAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,KAAA,GAAA,GAAA,GAAA,IAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,KAAA,KAAA,GAAA,GAAA,IAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,GAAA,KAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,IAAA,GAAA,KAAA,GAAA,KAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,KAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,IAAA,GAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,KAAA,GAAA,KAAA,GAAA,KAAA,KAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,KAAA,GAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,IAAA,GAAA,KAAA,KAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,GAAA,KAAA,KAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,GAAA,KAAA,KAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,IAAA,KAAA,KAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,KAAA,GAAA,GAAA,GAAA,KAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,KAAA,KAAA,GAAA,GAAA,KAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,KAAA,GAAA,GAAA,GAAA,KAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,GAAA,KAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,KAAA,GAAA,KAAA,GAAA,KAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,KAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,GAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,KAAA,IAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,GAAA,KAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,GAAA,KAAA,GAAA,KAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,GAAA,KAAA,GAAA,KAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,IAAA,GAAA,KAAA,KAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,KAAA,GAAA,KAAA,GAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,KAAA,GAAA,GAAA,GAAA,KAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,IAAA,GAAA,KAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,GAAA,KAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,GAAA,KAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,IAAA,KAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,IAAA,GAAA,KAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,KAAA,GAAA,KAAA,GAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,KAAA,GAAA,GAAA,GAAA,KAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,GAAA,KAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,GAAA,KAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,GAAA,KAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,IAAA,KAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,IAAA,GAAA,KAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,KAAA,GAAA,GAAA,GAAA,IAAA,KAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,KAAA,IAAA,GAAA,GAAA,IAAA,KAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,KAAA,GAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,KAAA,GAAA,KAAA,GAAA,KAAA,KAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,IAAA,KAAA,KAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,KAAA,GAAA,KAAA,GAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,KAAA,GAAA,GAAA,GAAA,KAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,GAAA,KAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,GAAA,KAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,GAAA,KAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,GAAA,KAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,GAAA,KAAA,GAAA,KAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,KAAA,GAAA,KAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,GAAA,KAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,KAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,GAAA,KAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,KAAA,KAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,GAAA,KAAA,GAAA,KAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,IAAA,IAAA,GAAA,KAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,GAAA,KAAA,GAAA,KAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,GAAA,KAAA,GAAA,KAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,KAAA,GAAA,GAAA,GAAA,IAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,KAAA,IAAA,GAAA,GAAA,IAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,KAAA,GAAA,GAAA,GAAA,KAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,KAAA,GAAA,KAAA,GAAA,KAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,IAAA,KAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,KAAA,GAAA,GAAA,GAAA,IAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,KAAA,KAAA,GAAA,GAAA,IAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,KAAA,GAAA,GAAA,GAAA,KAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,KAAA,GAAA,KAAA,GAAA,KAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,IAAA,KAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,KAAA,GAAA,KAAA,GAAA,KAAA,KAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,KAAA,GAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,KAAA,GAAA,GAAA,GAAA,KAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,KAAA,KAAA,GAAA,GAAA,KAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,KAAA,GAAA,GAAA,GAAA,KAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,KAAA,GAAA,KAAA,GAAA,KAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,GAAA,KAAA,GAAA,KAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,IAAA,IAAA,GAAA,KAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,GAAA,KAAA,GAAA,KAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,GAAA,KAAA,GAAA,KAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,KAAA,GAAA,KAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,GAAA,KAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,KAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,GAAA,KAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,GAAA,KAAA,KAAA,GAAA,KAAA,GAAA,KAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,GAAA,KAAA,GAAA,KAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,IAAA,IAAA,GAAA,KAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,KAAA,GAAA,KAAA,GAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,KAAA,GAAA,GAAA,GAAA,KAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,KAAA,GAAA,KAAA,GAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,KAAA,GAAA,GAAA,GAAA,KAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,KAAA,GAAA,GAAA,GAAA,IAAA,KAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,KAAA,IAAA,GAAA,GAAA,IAAA,KAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,KAAA,GAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,KAAA,GAAA,KAAA,GAAA,KAAA,KAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,KAAA,GAAA,KAAA,GAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,KAAA,GAAA,GAAA,GAAA,KAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,KAAA,GAAA,KAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,GAAA,KAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,KAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,GAAA,KAAA,GAAA,KAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,GAAA,KAAA,KAAA,GAAA,KAAA,GAAA,KAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,GAAA,KAAA,KAAA,GAAA,KAAA,GAAA,KAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,GAAA,KAAA,KAAA,GAAA,KAAA,GAAA,KAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,KAAA,GAAA,GAAA,GAAA,IAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,KAAA,IAAA,GAAA,GAAA,IAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,KAAA,GAAA,GAAA,GAAA,KAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,KAAA,GAAA,KAAA,GAAA,KAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,KAAA,GAAA,GAAA,GAAA,IAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,KAAA,KAAA,GAAA,GAAA,IAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,KAAA,GAAA,GAAA,GAAA,KAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,KAAA,GAAA,KAAA,GAAA,KAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,IAAA,KAAA,KAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,KAAA,IAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,KAAA,GAAA,KAAA,GAAA,KAAA,KAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,KAAA,GAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,IAAA,KAAA,KAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,KAAA,IAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,KAAA,GAAA,GAAA,GAAA,KAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,KAAA,KAAA,GAAA,GAAA,KAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,KAAA,GAAA,GAAA,GAAA,KAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,KAAA,GAAA,KAAA,GAAA,KAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,GAAA,KAAA,GAAA,KAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,GAAA,KAAA,GAAA,KAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,IAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,KAAA,IAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,KAAA,GAAA,KAAA,GAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,KAAA,GAAA,GAAA,GAAA,KAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,IAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,KAAA,IAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,KAAA,GAAA,KAAA,GAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,KAAA,GAAA,GAAA,GAAA,KAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,IAAA,KAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,KAAA,IAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,KAAA,GAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,KAAA,GAAA,KAAA,GAAA,KAAA,KAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,IAAA,KAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,KAAA,IAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,KAAA,GAAA,KAAA,GAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,KAAA,GAAA,GAAA,GAAA,KAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,IAAA,KAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,KAAA,IAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,KAAA,GAAA,GAAA,GAAA,KAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,KAAA,GAAA,KAAA,GAAA,KAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,IAAA,KAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,KAAA,IAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,KAAA,GAAA,GAAA,GAAA,KAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,KAAA,GAAA,KAAA,GAAA,KAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,KAAA,GAAA,GAAA,GAAA,KAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,KAAA,GAAA,KAAA,GAAA,KAAA,KAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,KAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,KAAA,KAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,GAAA,GAAA,IAAA,CAAA,CAAA;AACA,sBAAA,YAAA,CAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,OAAA,MAAA,MAAA,OAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,OAAA,MAAA,OAAA,MAAA,MAAA,OAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,OAAA,MAAA,OAAA,MAAA,MAAA,OAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,OAAA,MAAA,OAAA,MAAA,MAAA,OAAA,OAAA,OAAA,MAAA,MAAA,OAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,OAAA,MAAA,MAAA,OAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,OAAA,MAAA,OAAA,MAAA,MAAA,OAAA,OAAA,OAAA,MAAA,MAAA,OAAA,OAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,OAAA,MAAA,OAAA,MAAA,MAAA,OAAA,OAAA,OAAA,MAAA,MAAA,OAAA,OAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,OAAA,OAAA,OAAA,OAAA,MAAA,MAAA,OAAA,OAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,OAAA,MAAA,OAAA,MAAA,MAAA,OAAA,OAAA,OAAA,MAAA,MAAA,OAAA,OAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,OAAA,OAAA,OAAA,OAAA,MAAA,MAAA,OAAA,OAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,OAAA,OAAA,OAAA,OAAA,MAAA,MAAA,OAAA,OAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,OAAA,OAAA,OAAA,OAAA,MAAA,OAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,OAAA,OAAA,OAAA,OAAA,MAAA,MAAA,OAAA,OAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,OAAA,OAAA,MAAA,OAAA,MAAA,MAAA,OAAA,MAAA,MAAA,OAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,OAAA,OAAA,OAAA,OAAA,MAAA,OAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,OAAA,OAAA,OAAA,OAAA,MAAA,OAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,OAAA,OAAA,OAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,OAAA,OAAA,OAAA,OAAA,MAAA,OAAA,MAAA,OAAA,MAAA,MAAA,OAAA,OAAA,MAAA,MAAA,OAAA,OAAA,MAAA,MAAA,MAAA,OAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,OAAA,OAAA,OAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,OAAA,OAAA,OAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,OAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,MAAA,MAAA,OAAA,OAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,OAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,OAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,OAAA,OAAA,OAAA,OAAA,OAAA,MAAA,MAAA,OAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,OAAA,OAAA,OAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,OAAA,MAAA,MAAA,IAAA;AACA,sBAAA,OAAA,CAAA,CAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,GAAA,CAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,GAAA,CAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,GAAA,CAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,sBAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,GAAA,CAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,GAAA,CAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,GAAA,CAAA,GAAA,CAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,GAAA,CAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,GAAA,CAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,sBAAA,gBAAA,GAAA,CAAA,sBAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,GAAA,CAAA,GAAA,CAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,GAAA,CAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,GAAA,CAAA,GAAA,CAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,GAAA,CAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,GAAA,CAAA,GAAA,CAAA,GAAA,CAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,GAAA,CAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,GAAA,CAAA,GAAA,CAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,GAAA,CAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,GAAA,CAAA,sBAAA,gBAAA,GAAA,CAAA,sBAAA,gBAAA,GAAA,CAAA,sBAAA,gBAAA,GAAA,CAAA,sBAAA,gBAAA,GAAA,CAAA,sBAAA,gBAAA,GAAA,CAAA,sBAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,GAAA,CAAA,GAAA,CAAA,GAAA,CAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,GAAA,CAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,GAAA,CAAA,GAAA,CAAA,GAAA,CAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,GAAA,CAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,GAAA,CAAA,GAAA,CAAA,GAAA,CAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,GAAA,CAAA,GAAA,CAAA,GAAA,CAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,GAAA,CAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,sBAAA,gBAAA,GAAA,CAAA,GAAA,CAAA,sBAAA,gBAAA,GAAA,CAAA,sBAAA,gBAAA,GAAA,CAAA,GAAA,CAAA,GAAA,CAAA,sBAAA,gBAAA,GAAA,CAAA,GAAA,CAAA,sBAAA,gBAAA,GAAA,CAAA,sBAAA,gBAAA,GAAA,CAAA,GAAA,CAAA,sBAAA,gBAAA,GAAA,CAAA,sBAAA,gBAAA,GAAA,CAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,GAAA,CAAA,GAAA,CAAA,GAAA,CAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,GAAA,CAAA,GAAA,CAAA,GAAA,CAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,GAAA,CAAA,GAAA,CAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,GAAA,CAAA,GAAA,CAAA,GAAA,CAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,GAAA,CAAA,sBAAA,gBAAA,GAAA,CAAA,GAAA,CAAA,sBAAA,gBAAA,GAAA,CAAA,sBAAA,gBAAA,GAAA,CAAA,GAAA,CAAA,GAAA,CAAA,sBAAA,gBAAA,GAAA,CAAA,sBAAA,gBAAA,GAAA,CAAA,GAAA,CAAA,GAAA,CAAA,sBAAA,gBAAA,GAAA,CAAA,sBAAA,gBAAA,GAAA,CAAA,sBAAA,gBAAA,GAAA,CAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,GAAA,CAAA,GAAA,CAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,GAAA,CAAA,GAAA,CAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,GAAA,CAAA,GAAA,CAAA,GAAA,CAAA,GAAA,CAAA,GAAA,CAAA,GAAA,CAAA,GAAA,CAAA,sBAAA,gBAAA,GAAA,CAAA,sBAAA,gBAAA,GAAA,CAAA,GAAA,CAAA,GAAA,CAAA,sBAAA,gBAAA,GAAA,CAAA,sBAAA,gBAAA,GAAA,CAAA,GAAA,CAAA,sBAAA,gBAAA,GAAA,CAAA,sBAAA,gBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,GAAA,CAAA,GAAA,CAAA,GAAA,CAAA,GAAA,CAAA,GAAA,CAAA,sBAAA,gBAAA,GAAA,CAAA,sBAAA,gBAAA,GAAA,CAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,GAAA,CAAA,GAAA,CAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,oBAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,G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A,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,EAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,EAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,EAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,CAA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,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,EAAA,CAAA;oBACA,CAAA,CAAA,IAAA,IAAA,IAAA,EAAA,GAAA,CAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,IAAA,EAAA,CAAA;oBACA,CAAA,CAAA,IAAA,IAAA,IAAA,EAAA,GAAA,CAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,IAAA,EAAA,CAAA;oBACA,CAAA,CAAA,IAAA,IAAA,IAAA,EAAA,GAAA,CAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,IAAA,EAAA,CAAA;oBACA,CAAA,CAAA,IAAA,IAAA,IAAA,EAAA,GAAA,CAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA,GAAA,IAAA,EAAA,CAAA;oBACA,CAAA,CAAA,IAAA,IAAA,IAAA,EAAA,GAAA,CAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,IAAA,EAAA,CAAA;oBACA,CAAA,CAAA,IAAA,IAAA,IAAA,EAAA,GAAA,CAAA,GAAA,GAAA,IAAA,EAAA,GAAA,CAAA,GAAA,IAAA,EAAA,CAAA;oBACA,CAAA,CAAA,IAAA,IAAA,IAAA,EAAA,GAAA,CAAA,GAAA,GAAA,IAAA,EAAA,GAAA,CAAA,GAAA,IAAA,EAAA,CAAA;oBACA,CAAA,CAAA,IAAA,IAAA,IAAA,EAAA,GAAA,CAAA,GAAA,GAAA,IAAA,EAAA,GAAA,CAAA,GAAA,IAAA,IAAA,EAAA,CAAA;oBACA,CAAA,CAAA,IAAA,IAAA,IAAA,EAAA,GAAA,CAAA,IAAA,GAAA,IAAA,EAAA,GAAA,CAAA,GAAA,IAAA,IAAA,EAAA,CAAA;oBACA,CAAA,CAAA,IAAA,IAAA,IAAA,EAAA,GAAA,CAAA,IAAA,GAAA,IAAA,EAAA,GAAA,CAAA,GAAA,IAAA,IAAA,EAAA,CAAA;oBACA,CAAA,CAAA,IAAA,IAAA,IAAA,EAAA,GAAA,CAAA,IAAA,GAAA,IAAA,EAAA,GAAA,CAAA,GAAA,IAAA,IAAA,EAAA,CAAA;oBACA,CAAA,CAAA,IAAA,IAAA,IAAA,EAAA,GAAA,CAAA,IAAA,GAAA,IAAA,EAAA,GAAA,CAAA,GAAA,IAAA,IAAA,EAAA,CAAA;oBACA,CAAA,CAAA,IAAA,IAAA,IAAA,EAAA,GAAA,CAAA,IAAA,GAAA,IAAA,EAAA,GAAA,CAAA,GAAA,IAAA,IAAA,EAAA,CAAA;oBACA,CAAA,CAAA,IAAA,IAAA,IAAA,EAAA,GAAA,CAAA,IAAA,GAAA,IAAA,EAAA,GAAA,CAAA,GAAA,IAAA,IAAA,EAAA,CAAA;oBACA,CAAA,CAAA,IAAA,IAAA,IAAA,EAAA,GAAA,CAAA,IAAA,GAAA,IAAA,EAAA,GAAA,CAAA,GAAA,IAAA,IAAA,IAAA,EAAA,CAAA;oBACA,CAAA,CAAA,IAAA,IAAA,IAAA,EAAA,GAAA,CAAA,IAAA,GAAA,IAAA,EAAA,GAAA,CAAA,GAAA,IAAA,IAAA,IAAA,EAAA,CAAA;oBACA,CAAA,CAAA,IAAA,IAAA,IAAA,EAAA,GAAA,CAAA,IAAA,GAAA,IAAA,EAAA,GAAA,CAAA,GAAA,IAAA,IAAA,IAAA,GAAA,CAAA;oBACA,CAAA,CAAA,IAAA,IAAA,IAAA,EAAA,GAAA,CAAA,IAAA,IAAA,IAAA,EAAA,GAAA,CAAA,GAAA,IAAA,IAAA,IAAA,GAAA,CAAA;oBACA,CAAA,CAAA,IAAA,IAAA,IAAA,EAAA,GAAA,CAAA,IAAA,IAAA,IAAA,EAAA,GAAA,CAAA,GAAA,IAAA,IAAA,IAAA,GAAA,CAAA;oBACA,CAAA,CAAA,IAAA,IAAA,IAAA,EAAA,GAAA,CAAA,IAAA,IAAA,IAAA,EAAA,GAAA,CAAA,GAAA,IAAA,IAAA,IAAA,GAAA,CAAA;oBACA,CAAA,CAAA,IAAA,IAAA,IAAA,EAAA,GAAA,CAAA,IAAA,IAAA,IAAA,EAAA,GAAA,CAAA,GAAA,IAAA,IAAA,IAAA,GAAA,CAAA;oBACA,CAAA,CAAA,IAAA,IAAA,IAAA,EAAA,GAAA,CAAA,IAAA,IAAA,IAAA,EAAA,GAAA,CAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,CAAA;oBACA,CAAA,CAAA,IAAA,IAAA,IAAA,EAAA,GAAA,CAAA,IAAA,IAAA,IAAA,EAAA,GAAA,CAAA,GAAA,IAAA,IAAA,IAAA,KAAA,GAAA,CAAA;oBACA,CAAA,CAAA,IAAA,IAAA,IAAA,EAAA,GAAA,CAAA,IAAA,IAAA,IAAA,EAAA,GAAA,CAAA,GAAA,IAAA,IAAA,IAAA,KAAA,GAAA,CAAA;oBACA,CAAA,CAAA,IAAA,IAAA,IAAA,EAAA,GAAA,CAAA,IAAA,IAAA,IAAA,EAAA,GAAA,CAAA,GAAA,IAAA,IAAA,IAAA,KAAA,GAAA,CAAA;oBACA,CAAA,CAAA,IAAA,IAAA,IAAA,EAAA,GAAA,CAAA,IAAA,IAAA,IAAA,EAAA,GAAA,CAAA,GAAA,IAAA,IAAA,IAAA,KAAA,GAAA,CAAA;oBACA,CAAA,CAAA,IAAA,IAAA,IAAA,EAAA,GAAA,CAAA,IAAA,IAAA,IAAA,EAAA,GAAA,CAAA,GAAA,IAAA,IAAA,IAAA,KAAA,GAAA,CAAA;oBACA,CAAA,CAAA,IAAA,IAAA,IAAA,EAAA,GAAA,CAAA,IAAA,IAAA,IAAA,EAAA,GAAA,CAAA,GAAA,IAAA,IAAA,IAAA,KAAA,GAAA,CAAA;oBACA,CAAA,CAAA,IAAA,IAAA,IAAA,EAAA,GAAA,CAAA,IAAA,IAAA,IAAA,EAAA,GAAA,CAAA,GAAA,IAAA,IAAA,IAAA,KAAA,KAAA,GAAA,CAAA;oBACA,CAAA,CAAA,IAAA,IAAA,IAAA,EAAA,GAAA,CAAA,IAAA,IAAA,IAAA,EAAA,GAAA,CAAA,GAAA,IAAA,IAAA,IAAA,KAAA,KAAA,GAAA,CAAA;oBACA,CAAA,CAAA,IAAA,IAAA,IAAA,EAAA,GAAA,CAAA,IAAA,IAAA,IAAA,EAAA,GAAA,CAAA,GAAA,IAAA,IAAA,IAAA,KAAA,KAAA,GAAA,CAAA;oBACA,CAAA,CAAA,IAAA,IAAA,IAAA,EAAA,GAAA,CAAA,IAAA,IAAA,IAAA,EAAA,GAAA,CAAA,GAAA,IAAA,IAAA,IAAA,KAAA,KAAA,GAAA,CAAA;oBACA,CAAA,CAAA,IAAA,IAAA,IAAA,EAAA,GAAA,CAAA,IAAA,IAAA,IAAA,EAAA,GAAA,CAAA,GAAA,IAAA,IAAA,IAAA,KAAA,KAAA,GAAA,CAAA;oBACA,CAAA,CAAA,IAAA,IAAA,IAAA,EAAA,GAAA,CAAA,IAAA,IAAA,IAAA,EAAA,GAAA,CAAA,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U;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,QAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,QAAU;AAAA,cACV,QAAU;AAAA,cACV,QAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,QAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,QAAU;AAAA,cACV,QAAU;AAAA,cACV,QAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,QAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,QAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,QAAU;AAAA,cACV,QAAU;AAAA,cACV,QAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,QAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,QAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,QAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,QAAU;AAAA,cACV,QAAU;AAAA,cACV,QAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,QAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,QAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,QAAU;AAAA,cACV,QAAU;AAAA,cACV,QAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,QAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,QAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,QAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,QAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,QAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,QAAU;AAAA,cACV,QAAU;AAAA,cACV,QAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,QAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,QAAU;AAAA,cACV,QAAU;AAAA,cACV,QAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,QAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,QAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,QAAU;AAAA,cACV,QAAU;AAAA,cACV,QAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,QAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,QAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,QAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,QAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,QAAU;AAAA,cACV,QAAU;AAAA,cACV,QAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,QAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAA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,SAAS;AAAA,EACX,GAAG;AAAA,IACD,MAAM;AAAA,IACN,SAAS;AAAA,EACX,GAAG;AAAA,IACD,MAAM;AAAA,IACN,SAAS;AAAA,EACX,GAAG;AAAA,IACD,MAAM;AAAA,IACN,SAAS;AAAA,EACX,GAAG;AAAA,IACD,MAAM;AAAA,IACN,SAAS;AAAA,EACX,GAAG;AAAA,IACD,MAAM;AAAA,IACN,SAAS;AAAA,EACX,GAAG;AAAA,IACD,MAAM;AAAA,IACN,SAAS;AAAA,EACX,GAAG;AAAA,IACD,MAAM;AAAA,IACN,SAAS;AAAA,EACX,GAAG;AAAA,IACD,MAAM;AAAA,IACN,SAAS;AAAA,EACX,GAAG;AAAA,IACD,MAAM;AAAA,IACN,SAAS;AAAA,EACX,GAAG;AAAA,IACD,MAAM;AAAA,IACN,SAAS;AAAA,EACX,GAAG;AAAA,IACD,MAAM;AAAA,IACN,SAAS;AAAA,EACX,GAAG;AAAA,IACD,MAAM;AAAA,IACN,SAAS;AAAA,EACX,GAAG;AAAA,IACD,MAAM;AAAA,IACN,SAAS;AAAA,EACX,GAAG;AAAA,IACD,MAAM;AAAA,IACN,SAAS;AAAA,EACX,GAAG;AAAA,IACD,MAAM;AAAA,IACN,SAAS;AAAA,EACX,GAAG;AAAA,IACD,MAAM;AAAA,IACN,SAAS;AAAA,EACX,GAAG;AAAA,IACD,MAAM;AAAA,IACN,SAAS;AAAA,EACX,GAAG;AAAA,IACD,MAAM;AAAA,IACN,SAAS;AAAA,EACX,GAAG;AAAA,IACD,MAAM;AAAA,IACN,SAAS;AAAA,EACX,GAAG;AAAA,IACD,MAAM;AAAA,IACN,SAAS;AAAA,EACX,GAAG;AAAA,IACD,MAAM;AAAA,IACN,SAAS;AAAA,EACX,GAAG;AAAA,IACD,MAAM;AAAA,IACN,SAAS;AAAA,EACX,GAAG;AAAA,IACD,MAAM;AAAA,IACN,SAAS;AAAA,EACX,GAAG;AAAA,IACD,MAAM;AAAA,IACN,SAAS;AAAA,EACX,GAAG;AAAA,IACD,MAAM;AAAA,IACN,SAAS;AAAA,EACX,GAAG;AAAA,IACD,MAAM;AAAA,IACN,SAAS;AAAA,EACX,GAAG;AAAA,IACD,MAAM;AAAA,IACN,SAAS;AAAA,EACX,GAAG;AAAA,IACD,MAAM;AAAA,IACN,SAAS;AAAA,EACX,GAAG;AAAA,IACD,MAAM;AAAA,IACN,SAAS;AAAA,EACX,GAAG;AAAA,IACD,MAAM;AAAA,IACN,SAAS;AAAA,EACX,GAAG;AAAA,IACD,MAAM;AAAA,IACN,SAAS;AAAA,EACX,GAAG;AAAA,IACD,MAAM;AAAA,IACN,SAAS;AAAA,EACX,GAAG;AAAA,IACD,MAAM;AAAA,IACN,SAAS;AAAA,EACX,GAAG;AAAA,IACD,MAAM;AAAA,IACN,SAAS;AAAA,EACX,GAAG;AAAA,IACD,MAAM;AAAA,IACN,SAAS;AAAA,EACX,GAAG;AAAA,IACD,MAAM;AAAA,IACN,SAAS;AAAA,EACX,GAAG;AAAA,IACD,MAAM;AAAA,IACN,SAAS;AAAA,EACX,GAAG;AAAA,IACD,MAAM;AAAA,IACN,SAAS;AAAA,EACX,GAAG;AAAA,IACD,MAAM;AAAA,IACN,SAAS;AAAA,EACX,GAAG;AAAA,IACD,MAAM;AAAA,IACN,SAAS;AAAA,EACX,GAAG;AAAA,IACD,MAAM;AAAA,IACN,SAAS;AAAA,EACX,GAAG;AAAA,IACD,MAAM;AAAA,IACN,SAAS;AAAA,EACX,GAAG;AAAA,IACD,MAAM;AAAA,IACN,SAAS;AAAA,EACX,GAAG;AAAA,IACD,MAAM;AAAA,IACN,SAAS;AAAA,EACX,GAAG;AAAA,IACD,MAAM;AAAA,IACN,SAAS;AAAA,EACX,GAAG;AAAA,IACD,MAAM;AAAA,IACN,SAAS;AAAA,EACX,GAAG;AAAA,IACD,MAAM;AAAA,IACN,SAAS;AAAA,EACX,GAAG;AAAA,IACD,MAAM;AAAA,IACN,SAAS;AAAA,EACX,GAAG;AAAA,IACD,MAAM;AAAA,IACN,SAAS;AAAA,EACX,GAAG;AAAA,IACD,MAAM;AAAA,IACN,SAAS;AAAA,EACX,GAAG;AAAA,IACD,MAAM;AAAA,IACN,SAAS;AAAA,EACX,GAAG;AAAA,IACD,MAAM;AAAA,IACN,SAAS;AAAA,EACX,GAAG;AAAA,IACD,MAAM;AAAA,IACN,SAAS;AAAA,EACX,GAAG;AAAA,IACD,MAAM;AAAA,IACN,SAAS;AAAA,EACX,GAAG;AAAA,IACD,MAAM;AAAA,IACN,SAAS;AAAA,EACX,GAAG;AAAA,IACD,MAAM;AAAA,IACN,SAAS;AAAA,EACX,GAAG;AAAA,IACD,MAAM;AAAA,IACN,SAAS;AAAA,EACX,GAAG;AAAA,IACD,MAAM;AAAA,IACN,SAAS;AAAA,EACX,GAAG;AAAA,IACD,MAAM;AAAA,IACN,SAAS;AAAA,EACX,GAAG;AAAA,IACD,MAAM;AAAA,IACN,SAAS;AAAA,EACX,GAAG;AAAA,IACD,MAAM;AAAA,IACN,SAAS;AAAA,EACX,GAAG;AAAA,IACD,MAAM;AAAA,IACN,SAAS;AAAA,EACX,GAAG;AAAA,IACD,MAAM;AAAA,IACN,SAAS;AAAA,EACX,GAAG;AAAA,IACD,MAAM;AAAA,IACN,SAAS;AAAA,EACX,GAAG;AAAA,IACD,MAAM;AAAA,IACN,SAAS;AAAA,EACX,GAAG;AAAA,IACD,MAAM;AAAA,IACN,SAAS;AAAA,EACX,GAAG;AAAA,IACD,MAAM;AAAA,IACN,SAAS;AAAA,EACX,GAAG;AAAA,IACD,MAAM;AAAA,IACN,SAAS;AAAA,EACX,GAAG;AAAA,IACD,MAAM;AAAA,IACN,SAAS;AAAA,EACX,GAAG;AAAA,IACD,MAAM;AAAA,IACN,SAAS;AAAA,EACX,GAAG;AAAA,IACD,MAAM;AAAA,IACN,SAAS;AAAA,EACX,GAAG;AAAA,IACD,MAAM;AAAA,IACN,SAAS;AAAA,EACX,GAAG;AAAA,IACD,MAAM;AAAA,IACN,SAAS;AAAA,EACX,CAAC;AACD,MAAI,eAAe,IAAI,OAAO,MAAM,WAAW,IAAI,SAAUK,IAAG;AAC9D,WAAOA,GAAE;AAAA,EACX,CAAC,EAAE,KAAK,EAAE,IAAI,KAAK,GAAG;AACtB,MAAI,kBAAkB,CAAC;AACvB,OAAS,IAAI,GAAG,IAAI,WAAW,QAAQ,KAAK;AACtC,gBAAY,WAAW,CAAC;AAC5B,SAAS,IAAI,GAAG,IAAI,UAAU,QAAQ,QAAQ,KAAK;AACjD,sBAAgB,UAAU,QAAQ,CAAC,CAAC,IAAI,UAAU;AAAA,IACpD;AAAA,EACF;AAJM;AACK;AAFF;AAMT,MAAI,kBAAkB,SAASC,iBAAgB,KAAK;AAClD,WAAO,IAAI,QAAQ,cAAc,SAAUC,QAAO;AAChD,aAAO,gBAAgBA,MAAK;AAAA,IAC9B,CAAC;AAAA,EACH;AAEA,MAAI,kCAAkC,WAAW,eAAe;AAChE,MAAI,aAAa,SAASC,YAAW,KAAK;AACxC,WAAO,IAAI,QAAQ,cAAc,EAAE;AAAA,EACrC;AACA,MAAI,mBAAmB,SAASC,kBAAiB,QAAQ;AACvD,WAAO,GAAG,OAAO,OAAO,OAAO,GAAG,EAAE,OAAO,OAAO,KAAK;AAAA,EACzD;AACA,MAAI,eAAe,SAASC,cAAa,QAAQ;AAC/C,WAAO,SAAU,QAAQ,UAAU;AAEjC,UAAI,OAAO,KAAK;AAAW,eAAO;AAClC,UAAI,wBAAwB,eAAc;AAAA,QACtC,YAAY;AAAA,QACZ,eAAe;AAAA,QACf,WAAW;AAAA,QACX,MAAM;AAAA,QACN,WAAW;AAAA,MACb,GAAG,MAAM,GACT,aAAa,sBAAsB,YACnC,gBAAgB,sBAAsB,eACtCC,aAAY,sBAAsB,WAClCC,QAAO,sBAAsB,MAC7B,YAAY,sBAAsB;AACpC,UAAI,QAAQA,QAAO,WAAW,QAAQ,IAAI;AAC1C,UAAI,YAAYA,QAAO,WAAWD,WAAU,MAAM,CAAC,IAAIA,WAAU,MAAM;AACvE,UAAI,YAAY;AACd,gBAAQ,MAAM,YAAY;AAC1B,oBAAY,UAAU,YAAY;AAAA,MACpC;AACA,UAAI,eAAe;AACjB,gBAAQ,gCAAgC,KAAK;AAC7C,oBAAY,gBAAgB,SAAS;AAAA,MACvC;AACA,aAAO,cAAc,UAAU,UAAU,OAAO,GAAG,MAAM,MAAM,MAAM,QAAQ,UAAU,QAAQ,KAAK,IAAI;AAAA,IAC1G;AAAA,EACF;AAEA,MAAIE,aAAY,CAAC,UAAU;AAC3B,WAAS,WAAWC,OAAM;AACxB,QAAI,WAAWA,MAAK,UAClB,QAAQ,yBAAyBA,OAAMD,UAAS;AAElD,QAAI,gBAAgB,YAAY,OAAO,YAAY,MAAM,SAAS,QAAQ,QAAQ;AAClF,WAAO,IAAI,SAAS,SAAS;AAAA,MAC3B,KAAK;AAAA,IACP,GAAG,eAAe;AAAA,MAChB,KAAkB,oBAAI;AAAA,QACpB,OAAO;AAAA;AAAA,QAEP,YAAY;AAAA,QACZ,QAAQ;AAAA;AAAA,QAER,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,UAAU;AAAA,QACV,SAAS;AAAA,QACT,SAAS;AAAA;AAAA,QAET,OAAO;AAAA;AAAA,QAEP,OAAO;AAAA;AAAA,QAEP,MAAM;AAAA,QACN,SAAS;AAAA,QACT,UAAU;AAAA,QACV,WAAW;AAAA,MACb,GAAG,QAAwC,KAAK,sBAAsB,QAAwC,KAAK,61DAA61D;AAAA,IACl9D,CAAC,CAAC;AAAA,EACJ;AAEA,MAAI,eAAe,SAASE,cAAa,OAAO;AAC9C,UAAM,eAAe;AACrB,UAAM,gBAAgB;AAAA,EACxB;AACA,WAAS,iBAAiBD,OAAM;AAC9B,QAAI,YAAYA,MAAK,WACnB,iBAAiBA,MAAK,gBACtB,gBAAgBA,MAAK,eACrB,cAAcA,MAAK,aACnB,aAAaA,MAAK;AACpB,QAAI,eAAW,sBAAO,KAAK;AAC3B,QAAI,YAAQ,sBAAO,KAAK;AACxB,QAAI,iBAAa,sBAAO,CAAC;AACzB,QAAI,mBAAe,sBAAO,IAAI;AAC9B,QAAI,uBAAmB,2BAAY,SAAU,OAAO,OAAO;AACzD,UAAI,aAAa,YAAY;AAAM;AACnC,UAAI,wBAAwB,aAAa,SACvC,YAAY,sBAAsB,WAClC,eAAe,sBAAsB,cACrC,eAAe,sBAAsB;AACvC,UAAI,SAAS,aAAa;AAC1B,UAAI,kBAAkB,QAAQ;AAC9B,UAAI,kBAAkB,eAAe,eAAe;AACpD,UAAI,qBAAqB;AAGzB,UAAI,kBAAkB,SAAS,SAAS,SAAS;AAC/C,YAAI;AAAe,wBAAc,KAAK;AACtC,iBAAS,UAAU;AAAA,MACrB;AACA,UAAI,mBAAmB,MAAM,SAAS;AACpC,YAAI;AAAY,qBAAW,KAAK;AAChC,cAAM,UAAU;AAAA,MAClB;AAGA,UAAI,mBAAmB,QAAQ,iBAAiB;AAC9C,YAAI,kBAAkB,CAAC,SAAS,SAAS;AACvC,yBAAe,KAAK;AAAA,QACtB;AACA,eAAO,YAAY;AACnB,6BAAqB;AACrB,iBAAS,UAAU;AAAA,MAGrB,WAAW,CAAC,mBAAmB,CAAC,QAAQ,WAAW;AACjD,YAAI,eAAe,CAAC,MAAM,SAAS;AACjC,sBAAY,KAAK;AAAA,QACnB;AACA,eAAO,YAAY;AACnB,6BAAqB;AACrB,cAAM,UAAU;AAAA,MAClB;AAGA,UAAI,oBAAoB;AACtB,qBAAa,KAAK;AAAA,MACpB;AAAA,IACF,GAAG,CAAC,gBAAgB,eAAe,aAAa,UAAU,CAAC;AAC3D,QAAI,cAAU,2BAAY,SAAU,OAAO;AACzC,uBAAiB,OAAO,MAAM,MAAM;AAAA,IACtC,GAAG,CAAC,gBAAgB,CAAC;AACrB,QAAI,mBAAe,2BAAY,SAAU,OAAO;AAE9C,iBAAW,UAAU,MAAM,eAAe,CAAC,EAAE;AAAA,IAC/C,GAAG,CAAC,CAAC;AACL,QAAI,kBAAc,2BAAY,SAAU,OAAO;AAC7C,UAAI,SAAS,WAAW,UAAU,MAAM,eAAe,CAAC,EAAE;AAC1D,uBAAiB,OAAO,MAAM;AAAA,IAChC,GAAG,CAAC,gBAAgB,CAAC;AACrB,QAAI,qBAAiB,2BAAY,SAAU,IAAI;AAE7C,UAAI,CAAC;AAAI;AACT,UAAI,aAAa,wBAAwB;AAAA,QACvC,SAAS;AAAA,MACX,IAAI;AACJ,SAAG,iBAAiB,SAAS,SAAS,UAAU;AAChD,SAAG,iBAAiB,cAAc,cAAc,UAAU;AAC1D,SAAG,iBAAiB,aAAa,aAAa,UAAU;AAAA,IAC1D,GAAG,CAAC,aAAa,cAAc,OAAO,CAAC;AACvC,QAAI,oBAAgB,2BAAY,SAAU,IAAI;AAE5C,UAAI,CAAC;AAAI;AACT,SAAG,oBAAoB,SAAS,SAAS,KAAK;AAC9C,SAAG,oBAAoB,cAAc,cAAc,KAAK;AACxD,SAAG,oBAAoB,aAAa,aAAa,KAAK;AAAA,IACxD,GAAG,CAAC,aAAa,cAAc,OAAO,CAAC;AACvC,iCAAU,WAAY;AACpB,UAAI,CAAC;AAAW;AAChB,UAAI,UAAU,aAAa;AAC3B,qBAAe,OAAO;AACtB,aAAO,WAAY;AACjB,sBAAc,OAAO;AAAA,MACvB;AAAA,IACF,GAAG,CAAC,WAAW,gBAAgB,aAAa,CAAC;AAC7C,WAAO,SAAU,SAAS;AACxB,mBAAa,UAAU;AAAA,IACzB;AAAA,EACF;AAEA,MAAI,aAAa,CAAC,aAAa,UAAU,YAAY,gBAAgB,UAAU;AAC/E,MAAI,cAAc;AAAA,IAChB,WAAW;AAAA;AAAA,IAEX,UAAU;AAAA,IACV,UAAU;AAAA,IACV,QAAQ;AAAA,EACV;AACA,WAAS,iBAAiBE,IAAG;AAC3B,IAAAA,GAAE,eAAe;AAAA,EACnB;AACA,WAAS,eAAeA,IAAG;AACzB,IAAAA,GAAE,gBAAgB;AAAA,EACpB;AACA,WAAS,uBAAuB;AAC9B,QAAI,MAAM,KAAK;AACf,QAAI,cAAc,KAAK;AACvB,QAAI,gBAAgB,MAAM,KAAK;AAC/B,QAAI,QAAQ,GAAG;AACb,WAAK,YAAY;AAAA,IACnB,WAAW,kBAAkB,aAAa;AACxC,WAAK,YAAY,MAAM;AAAA,IACzB;AAAA,EACF;AAIA,WAAS,gBAAgB;AACvB,WAAO,kBAAkB,UAAU,UAAU;AAAA,EAC/C;AACA,MAAI,YAAY,CAAC,EAAE,OAAO,WAAW,eAAe,OAAO,YAAY,OAAO,SAAS;AACvF,MAAI,oBAAoB;AACxB,MAAI,kBAAkB;AAAA,IACpB,SAAS;AAAA,IACT,SAAS;AAAA,EACX;AACA,WAAS,cAAcF,OAAM;AAC3B,QAAI,YAAYA,MAAK,WACnB,wBAAwBA,MAAK,sBAC7B,uBAAuB,0BAA0B,SAAS,OAAO;AACnE,QAAI,qBAAiB,sBAAO,CAAC,CAAC;AAC9B,QAAI,mBAAe,sBAAO,IAAI;AAC9B,QAAI,oBAAgB,2BAAY,SAAU,mBAAmB;AAC3D,UAAI,CAAC;AAAW;AAChB,UAAI,SAAS,SAAS;AACtB,UAAI,cAAc,UAAU,OAAO;AACnC,UAAI,sBAAsB;AAExB,mBAAW,QAAQ,SAAU,KAAK;AAChC,cAAI,MAAM,eAAe,YAAY,GAAG;AACxC,yBAAe,QAAQ,GAAG,IAAI;AAAA,QAChC,CAAC;AAAA,MACH;AAGA,UAAI,wBAAwB,oBAAoB,GAAG;AACjD,YAAI,iBAAiB,SAAS,eAAe,QAAQ,cAAc,EAAE,KAAK;AAC1E,YAAI,cAAc,SAAS,OAAO,SAAS,KAAK,cAAc;AAC9D,YAAI,kBAAkB,OAAO,aAAa,cAAc,kBAAkB;AAC1E,eAAO,KAAK,WAAW,EAAE,QAAQ,SAAU,KAAK;AAC9C,cAAI,MAAM,YAAY,GAAG;AACzB,cAAI,aAAa;AACf,wBAAY,GAAG,IAAI;AAAA,UACrB;AAAA,QACF,CAAC;AACD,YAAI,aAAa;AACf,sBAAY,eAAe,GAAG,OAAO,iBAAiB,IAAI;AAAA,QAC5D;AAAA,MACF;AAGA,UAAI,UAAU,cAAc,GAAG;AAE7B,eAAO,iBAAiB,aAAa,kBAAkB,eAAe;AAGtE,YAAI,mBAAmB;AACrB,4BAAkB,iBAAiB,cAAc,sBAAsB,eAAe;AACtF,4BAAkB,iBAAiB,aAAa,gBAAgB,eAAe;AAAA,QACjF;AAAA,MACF;AAGA,2BAAqB;AAAA,IACvB,GAAG,CAAC,oBAAoB,CAAC;AACzB,QAAI,uBAAmB,2BAAY,SAAU,mBAAmB;AAC9D,UAAI,CAAC;AAAW;AAChB,UAAI,SAAS,SAAS;AACtB,UAAI,cAAc,UAAU,OAAO;AAGnC,0BAAoB,KAAK,IAAI,oBAAoB,GAAG,CAAC;AAGrD,UAAI,wBAAwB,oBAAoB,GAAG;AACjD,mBAAW,QAAQ,SAAU,KAAK;AAChC,cAAI,MAAM,eAAe,QAAQ,GAAG;AACpC,cAAI,aAAa;AACf,wBAAY,GAAG,IAAI;AAAA,UACrB;AAAA,QACF,CAAC;AAAA,MACH;AAGA,UAAI,UAAU,cAAc,GAAG;AAC7B,eAAO,oBAAoB,aAAa,kBAAkB,eAAe;AACzE,YAAI,mBAAmB;AACrB,4BAAkB,oBAAoB,cAAc,sBAAsB,eAAe;AACzF,4BAAkB,oBAAoB,aAAa,gBAAgB,eAAe;AAAA,QACpF;AAAA,MACF;AAAA,IACF,GAAG,CAAC,oBAAoB,CAAC;AACzB,iCAAU,WAAY;AACpB,UAAI,CAAC;AAAW;AAChB,UAAI,UAAU,aAAa;AAC3B,oBAAc,OAAO;AACrB,aAAO,WAAY;AACjB,yBAAiB,OAAO;AAAA,MAC1B;AAAA,IACF,GAAG,CAAC,WAAW,eAAe,gBAAgB,CAAC;AAC/C,WAAO,SAAU,SAAS;AACxB,mBAAa,UAAU;AAAA,IACzB;AAAA,EACF;AAEA,WAAS,qCAAqC;AAAE,WAAO;AAAA,EAAmO;AAC1R,MAAI,kBAAkB,SAASG,mBAAkB;AAC/C,WAAO,SAAS,iBAAiB,SAAS,cAAc,KAAK;AAAA,EAC/D;AACA,MAAI,UAAU,QAAwC;AAAA,IACpD,MAAM;AAAA,IACN,QAAQ;AAAA,EACV,IAAI;AAAA,IACF,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,KAAK;AAAA,IACL,UAAU;AAAA,EACZ;AACA,WAAS,cAAcH,OAAM;AAC3B,QAAI,WAAWA,MAAK,UAClB,cAAcA,MAAK,aACnB,sBAAsBA,MAAK,gBAC3B,iBAAiB,wBAAwB,SAAS,OAAO,qBACzD,iBAAiBA,MAAK,gBACtB,gBAAgBA,MAAK,eACrB,cAAcA,MAAK,aACnB,aAAaA,MAAK;AACpB,QAAI,yBAAyB,iBAAiB;AAAA,MAC5C,WAAW;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AACD,QAAI,sBAAsB,cAAc;AAAA,MACtC,WAAW;AAAA,IACb,CAAC;AACD,QAAI,YAAY,SAASI,WAAU,SAAS;AAC1C,6BAAuB,OAAO;AAC9B,0BAAoB,OAAO;AAAA,IAC7B;AACA,WAAO,IAAI,wBAAU,MAAM,eAAe,IAAI,OAAO;AAAA,MACnD,SAAS;AAAA,MACT,KAAK;AAAA,IACP,CAAC,GAAG,SAAS,SAAS,CAAC;AAAA,EACzB;AAEA,WAASC,oCAAmC;AAAE,WAAO;AAAA,EAAmO;AACxR,MAAIC,SAAQ,QAAwC;AAAA,IAClD,MAAM;AAAA,IACN,QAAQ;AAAA,EACV,IAAI;AAAA,IACF,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,KAAK;AAAA,IACL,UAAUD;AAAA,EACZ;AACA,MAAI,gBAAgB,SAASE,eAAcP,OAAM;AAC/C,QAAIQ,QAAOR,MAAK,MACdS,WAAUT,MAAK;AACjB,WAAO,IAAI,SAAS;AAAA,MAClB,UAAU;AAAA,MACV,MAAMQ;AAAA,MACN,UAAU;AAAA,MACV,eAAe;AAAA,MACf,SAASC;AAAA,MACT,KAAKH;AAAA,MAGL,OAAO;AAAA,MACP,UAAU,SAASI,YAAW;AAAA,MAAC;AAAA,IACjC,CAAC;AAAA,EACH;AACA,MAAI,kBAAkB;AAEtB,MAAI,mBAAmB,SAASC,kBAAiB,OAAO;AACtD,WAAO,MAAM;AAAA,EACf;AACA,MAAI,mBAAmB,SAAS,eAAe,QAAQ;AACrD,WAAO,OAAO;AAAA,EAChB;AACA,MAAI,mBAAmB,SAAS,eAAe,QAAQ;AACrD,WAAO,OAAO;AAAA,EAChB;AACA,MAAI,mBAAmB,SAASvB,kBAAiB,QAAQ;AACvD,WAAO,CAAC,CAAC,OAAO;AAAA,EAClB;AAEA,MAAI,gBAAgB;AAAA,IAClB,gBAAgB;AAAA,IAChB,WAAW;AAAA,IACX,SAAS;AAAA,IACT,mBAAmB;AAAA,IACnB,OAAO;AAAA,IACP,cAAc;AAAA,IACd,qBAAqB;AAAA,IACrB,oBAAoB;AAAA,IACpB,OAAO;AAAA,IACP,kBAAkB;AAAA,IAClB,gBAAgB;AAAA,IAChB,MAAM;AAAA,IACN,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,iBAAiB;AAAA,IACjB,kBAAkB;AAAA,IAClB,kBAAkB;AAAA,IAClB,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,aAAawB;AAAA,IACb,gBAAgB;AAAA,EAClB;AAuBA,MAAI,SAAS;AAAA,IACX,SAAS;AAAA,IACT,WAAW;AAAA,IACX,WAAW;AAAA,IACX,WAAW;AAAA,IACX,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,UAAU;AAAA,IACV,UAAU;AAAA,IACV,WAAW;AAAA,IACX,WAAW;AAAA,IACX,WAAW;AAAA,IACX,WAAW;AAAA,IACX,WAAW;AAAA,IACX,WAAW;AAAA,IACX,WAAW;AAAA,IACX,WAAW;AAAA,IACX,WAAW;AAAA,EACb;AACA,MAAI,eAAe;AAEnB,MAAI,WAAW;AAEf,MAAI,gBAAgB;AAEpB,MAAI,aAAa,WAAW;AAC5B,MAAI,UAAU;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACA,MAAI,eAAe;AAAA,IACjB;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEA,MAAI,eAAe;AAAA,IACjB,aAAa;AAAA,IACb,uBAAuB;AAAA,IACvB,mBAAmB,eAAe;AAAA,IAClC,mBAAmB,CAAC,eAAe;AAAA,IACnC,YAAY,CAAC;AAAA,IACb,mBAAmB;AAAA,IACnB,mBAAmB;AAAA,IACnB,YAAY,CAAC;AAAA,IACb,0BAA0B;AAAA,IAC1B,mBAAmB;AAAA,IACnB,cAAc,aAAa;AAAA,IAC3B;AAAA,IACA,gBAAgB;AAAA,IAChB,gBAAgB;AAAA,IAChB,YAAY;AAAA,IACZ,WAAW;AAAA,IACX,SAAS;AAAA,IACT,OAAO;AAAA,IACP,cAAc;AAAA,IACd;AAAA,IACA,gBAAgB,SAAS,iBAAiB;AACxC,aAAO;AAAA,IACT;AAAA,IACA,eAAe;AAAA,IACf,eAAe;AAAA,IACf,YAAY;AAAA,IACZ,eAAe;AAAA,IACf,cAAc;AAAA,IACd,uBAAuB;AAAA,IACvB,0BAA0B,CAAC,eAAe;AAAA,IAC1C,kBAAkB,SAAS,mBAAmB;AAC5C,aAAO;AAAA,IACT;AAAA,IACA,iBAAiB;AAAA,IACjB,iBAAiB;AAAA,IACjB,SAAS,CAAC;AAAA,IACV,UAAU;AAAA,IACV,aAAa;AAAA,IACb,oBAAoB,SAAS,mBAAmBC,OAAM;AACpD,UAAI,QAAQA,MAAK;AACjB,aAAO,GAAG,OAAO,OAAO,SAAS,EAAE,OAAO,UAAU,IAAI,MAAM,IAAI,YAAY;AAAA,IAChF;AAAA,IACA,QAAQ,CAAC;AAAA,IACT,UAAU;AAAA,IACV,iBAAiB;AAAA,IACjB,UAAU;AAAA,EACZ;AACA,WAAS,oBAAoB,OAAO,QAAQ,aAAaC,QAAO;AAC9D,QAAIC,cAAa,kBAAkB,OAAO,QAAQ,WAAW;AAC7D,QAAI,aAAa,kBAAkB,OAAO,QAAQ,WAAW;AAC7D,QAAI,QAAQC,gBAAe,OAAO,MAAM;AACxC,QAAI,QAAQC,gBAAe,OAAO,MAAM;AACxC,WAAO;AAAA,MACL,MAAM;AAAA,MACN,MAAM;AAAA,MACN,YAAYF;AAAA,MACZ;AAAA,MACA;AAAA,MACA;AAAA,MACA,OAAOD;AAAA,IACT;AAAA,EACF;AACA,WAAS,wBAAwB,OAAO,aAAa;AACnD,WAAO,MAAM,QAAQ,IAAI,SAAU,eAAe,oBAAoB;AACpE,UAAI,aAAa,eAAe;AAC9B,YAAI,qBAAqB,cAAc,QAAQ,IAAI,SAAU,QAAQ,aAAa;AAChF,iBAAO,oBAAoB,OAAO,QAAQ,aAAa,WAAW;AAAA,QACpE,CAAC,EAAE,OAAO,SAAUI,oBAAmB;AACrC,iBAAO,YAAY,OAAOA,kBAAiB;AAAA,QAC7C,CAAC;AACD,eAAO,mBAAmB,SAAS,IAAI;AAAA,UACrC,MAAM;AAAA,UACN,MAAM;AAAA,UACN,SAAS;AAAA,UACT,OAAO;AAAA,QACT,IAAI;AAAA,MACN;AACA,UAAI,oBAAoB,oBAAoB,OAAO,eAAe,aAAa,kBAAkB;AACjG,aAAO,YAAY,OAAO,iBAAiB,IAAI,oBAAoB;AAAA,IACrE,CAAC,EAAE,OAAO,UAAU;AAAA,EACtB;AACA,WAAS,4CAA4C,oBAAoB;AACvE,WAAO,mBAAmB,OAAO,SAAU,oBAAoB,mBAAmB;AAChF,UAAI,kBAAkB,SAAS,SAAS;AACtC,2BAAmB,KAAK,MAAM,oBAAoB,mBAAmB,kBAAkB,QAAQ,IAAI,SAAU,QAAQ;AACnH,iBAAO,OAAO;AAAA,QAChB,CAAC,CAAC,CAAC;AAAA,MACL,OAAO;AACL,2BAAmB,KAAK,kBAAkB,IAAI;AAAA,MAChD;AACA,aAAO;AAAA,IACT,GAAG,CAAC,CAAC;AAAA,EACP;AACA,WAAS,sBAAsB,OAAO,aAAa;AACjD,WAAO,4CAA4C,wBAAwB,OAAO,WAAW,CAAC;AAAA,EAChG;AACA,WAAS,YAAY,OAAO,mBAAmB;AAC7C,QAAI,oBAAoB,MAAM,YAC5B,aAAa,sBAAsB,SAAS,KAAK;AACnD,QAAIC,QAAO,kBAAkB,MAC3B,aAAa,kBAAkB,YAC/B,QAAQ,kBAAkB,OAC1B,QAAQ,kBAAkB;AAC5B,YAAQ,CAAC,0BAA0B,KAAK,KAAK,CAAC,eAAe,cAAc,OAAO;AAAA,MAChF;AAAA,MACA;AAAA,MACA,MAAMA;AAAA,IACR,GAAG,UAAU;AAAA,EACf;AACA,WAAS,oBAAoBC,QAAO,iBAAiB;AACnD,QAAI,eAAeA,OAAM,cACvB,kBAAkBA,OAAM;AAC1B,QAAI,mBAAmB,gBAAgB,QAAQ,YAAY;AAC3D,QAAI,mBAAmB,IAAI;AACzB,UAAI,mBAAmB,gBAAgB,QAAQ,YAAY;AAC3D,UAAI,mBAAmB,IAAI;AAEzB,eAAO;AAAA,MACT,WAAW,mBAAmB,gBAAgB,QAAQ;AAGpD,eAAO,gBAAgB,gBAAgB;AAAA,MACzC;AAAA,IACF;AACA,WAAO;AAAA,EACT;AACA,WAAS,qBAAqBA,QAAOC,UAAS;AAC5C,QAAI,oBAAoBD,OAAM;AAC9B,WAAO,qBAAqBC,SAAQ,QAAQ,iBAAiB,IAAI,KAAK,oBAAoBA,SAAQ,CAAC;AAAA,EACrG;AACA,MAAIL,kBAAiB,SAASA,gBAAe,OAAOG,OAAM;AACxD,WAAO,MAAM,eAAeA,KAAI;AAAA,EAClC;AACA,MAAIF,kBAAiB,SAASA,gBAAe,OAAOE,OAAM;AACxD,WAAO,MAAM,eAAeA,KAAI;AAAA,EAClC;AACA,WAAS,kBAAkB,OAAO,QAAQ,aAAa;AACrD,WAAO,OAAO,MAAM,qBAAqB,aAAa,MAAM,iBAAiB,QAAQ,WAAW,IAAI;AAAA,EACtG;AACA,WAAS,kBAAkB,OAAO,QAAQ,aAAa;AACrD,QAAI,YAAY,QAAQ,MAAM,IAAI;AAAI,aAAO;AAC7C,QAAI,OAAO,MAAM,qBAAqB,YAAY;AAChD,aAAO,MAAM,iBAAiB,QAAQ,WAAW;AAAA,IACnD;AACA,QAAI,YAAYF,gBAAe,OAAO,MAAM;AAC5C,WAAO,YAAY,KAAK,SAAU,GAAG;AACnC,aAAOA,gBAAe,OAAO,CAAC,MAAM;AAAA,IACtC,CAAC;AAAA,EACH;AACA,WAAS,cAAc,OAAO,QAAQ,YAAY;AAChD,WAAO,MAAM,eAAe,MAAM,aAAa,QAAQ,UAAU,IAAI;AAAA,EACvE;AACA,MAAI,4BAA4B,SAASK,2BAA0B,OAAO;AACxE,QAAI,sBAAsB,MAAM,qBAC9B,UAAU,MAAM;AAClB,QAAI,wBAAwB;AAAW,aAAO;AAC9C,WAAO;AAAA,EACT;AACA,MAAI,aAAa;AACjB,MAAI,SAAsB,yBAAU,YAAY;AAC9C,cAAUC,SAAQ,UAAU;AAC5B,QAAI,SAAS,aAAaA,OAAM;AAYhC,aAASA,QAAO,QAAQ;AACtB,UAAI;AACJ,sBAAgB,MAAMA,OAAM;AAC5B,cAAQ,OAAO,KAAK,MAAM,MAAM;AAChC,YAAM,QAAQ;AAAA,QACZ,eAAe;AAAA,QACf,eAAe;AAAA,QACf,cAAc;AAAA,QACd,eAAe;AAAA,QACf,WAAW;AAAA,QACX,aAAa,CAAC;AAAA,QACd,yBAAyB;AAAA,QACzB,gBAAgB;AAAA,QAChB,0BAA0B;AAAA,QAC1B,WAAW;AAAA,MACb;AACA,YAAM,mBAAmB;AACzB,YAAM,cAAc;AACpB,YAAM,cAAc;AACpB,YAAM,gBAAgB;AACtB,YAAM,gBAAgB;AACtB,YAAM,iBAAiB;AACvB,YAAM,iBAAiB;AACvB,YAAM,gCAAgC;AACtC,YAAM,iBAAiB;AACvB,YAAM,aAAa;AACnB,YAAM,gBAAgB,SAAU,KAAK;AACnC,cAAM,aAAa;AAAA,MACrB;AACA,YAAM,mBAAmB;AACzB,YAAM,sBAAsB,SAAU,KAAK;AACzC,cAAM,mBAAmB;AAAA,MAC3B;AACA,YAAM,cAAc;AACpB,YAAM,iBAAiB,SAAU,KAAK;AACpC,cAAM,cAAc;AAAA,MACtB;AACA,YAAM,WAAW;AACjB,YAAM,cAAc,SAAU,KAAK;AACjC,cAAM,WAAW;AAAA,MACnB;AACA,YAAM,QAAQ,MAAM;AACpB,YAAM,OAAO,MAAM;AACnB,YAAM,WAAW,SAAU,UAAU,YAAY;AAC/C,YAAI,cAAc,MAAM,OACtBC,YAAW,YAAY,UACvBC,QAAO,YAAY;AACrB,mBAAW,OAAOA;AAClB,cAAM,aAAa,UAAU,UAAU;AACvC,QAAAD,UAAS,UAAU,UAAU;AAAA,MAC/B;AACA,YAAM,WAAW,SAAU,UAAU,QAAQ,QAAQ;AACnD,YAAI,eAAe,MAAM,OACvB,oBAAoB,aAAa,mBACjC,UAAU,aAAa,SACvB,aAAa,aAAa;AAC5B,cAAM,cAAc,IAAI;AAAA,UACtB,QAAQ;AAAA,UACR,gBAAgB;AAAA,QAClB,CAAC;AACD,YAAI,mBAAmB;AACrB,gBAAM,SAAS;AAAA,YACb,0BAA0B,CAAC;AAAA,UAC7B,CAAC;AACD,gBAAM,YAAY;AAAA,QACpB;AAEA,cAAM,SAAS;AAAA,UACb,yBAAyB;AAAA,QAC3B,CAAC;AACD,cAAM,SAAS,UAAU;AAAA,UACvB;AAAA,UACA;AAAA,QACF,CAAC;AAAA,MACH;AACA,YAAM,eAAe,SAAU,UAAU;AACvC,YAAI,eAAe,MAAM,OACvB,oBAAoB,aAAa,mBACjC,UAAU,aAAa,SACvBC,QAAO,aAAa;AACtB,YAAI,cAAc,MAAM,MAAM;AAC9B,YAAI,aAAa,WAAW,MAAM,iBAAiB,UAAU,WAAW;AACxE,YAAIV,cAAa,MAAM,iBAAiB,UAAU,WAAW;AAC7D,YAAI,YAAY;AACd,cAAI,YAAY,MAAM,eAAe,QAAQ;AAC7C,gBAAM,SAAS,kBAAkB,YAAY,OAAO,SAAU,GAAG;AAC/D,mBAAO,MAAM,eAAe,CAAC,MAAM;AAAA,UACrC,CAAC,CAAC,GAAG,mBAAmB,QAAQ;AAAA,QAClC,WAAW,CAACA,aAAY;AAEtB,cAAI,SAAS;AACX,kBAAM,SAAS,kBAAkB,CAAC,EAAE,OAAO,mBAAmB,WAAW,GAAG,CAAC,QAAQ,CAAC,CAAC,GAAG,iBAAiB,QAAQ;AAAA,UACrH,OAAO;AACL,kBAAM,SAAS,mBAAmB,QAAQ,GAAG,eAAe;AAAA,UAC9D;AAAA,QACF,OAAO;AACL,gBAAM,aAAa,mBAAmB,QAAQ,GAAG;AAAA,YAC/C,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,MAAMU;AAAA,UACR,CAAC;AACD;AAAA,QACF;AACA,YAAI,mBAAmB;AACrB,gBAAM,UAAU;AAAA,QAClB;AAAA,MACF;AACA,YAAM,cAAc,SAAU,cAAc;AAC1C,YAAI,UAAU,MAAM,MAAM;AAC1B,YAAI,cAAc,MAAM,MAAM;AAC9B,YAAI,YAAY,MAAM,eAAe,YAAY;AACjD,YAAI,gBAAgB,YAAY,OAAO,SAAU,GAAG;AAClD,iBAAO,MAAM,eAAe,CAAC,MAAM;AAAA,QACrC,CAAC;AACD,YAAI,WAAW,aAAa,SAAS,eAAe,cAAc,CAAC,KAAK,IAAI;AAC5E,cAAM,SAAS,UAAU;AAAA,UACvB,QAAQ;AAAA,UACR;AAAA,QACF,CAAC;AACD,cAAM,WAAW;AAAA,MACnB;AACA,YAAM,aAAa,WAAY;AAC7B,YAAI,cAAc,MAAM,MAAM;AAC9B,cAAM,SAAS,aAAa,MAAM,MAAM,SAAS,CAAC,GAAG,IAAI,GAAG;AAAA,UAC1D,QAAQ;AAAA,UACR,eAAe;AAAA,QACjB,CAAC;AAAA,MACH;AACA,YAAM,WAAW,WAAY;AAC3B,YAAI,UAAU,MAAM,MAAM;AAC1B,YAAI,cAAc,MAAM,MAAM;AAC9B,YAAI,oBAAoB,YAAY,YAAY,SAAS,CAAC;AAC1D,YAAI,gBAAgB,YAAY,MAAM,GAAG,YAAY,SAAS,CAAC;AAC/D,YAAI,WAAW,aAAa,SAAS,eAAe,cAAc,CAAC,KAAK,IAAI;AAC5E,cAAM,SAAS,UAAU;AAAA,UACvB,QAAQ;AAAA,UACR,cAAc;AAAA,QAChB,CAAC;AAAA,MACH;AACA,YAAM,WAAW,WAAY;AAC3B,eAAO,MAAM,MAAM;AAAA,MACrB;AACA,YAAM,KAAK,WAAY;AACrB,iBAAS,OAAO,UAAU,QAAQ,OAAO,IAAI,MAAM,IAAI,GAAG,OAAO,GAAG,OAAO,MAAM,QAAQ;AACvF,eAAK,IAAI,IAAI,UAAU,IAAI;AAAA,QAC7B;AACA,eAAO,WAAW,MAAM,QAAQ,CAAC,MAAM,MAAM,eAAe,EAAE,OAAO,IAAI,CAAC;AAAA,MAC5E;AACA,YAAM,iBAAiB,SAAUN,OAAM;AACrC,eAAOH,gBAAe,MAAM,OAAOG,KAAI;AAAA,MACzC;AACA,YAAM,iBAAiB,SAAUA,OAAM;AACrC,eAAOF,gBAAe,MAAM,OAAOE,KAAI;AAAA,MACzC;AACA,YAAM,YAAY,SAAU,KAAK,OAAO;AACtC,YAAI,WAAW,MAAM,MAAM;AAC3B,YAAI,OAAO,cAAc,GAAG,EAAE,OAAO,QAAQ;AAC7C,aAAK,YAAY;AACjB,YAAIO,WAAS,MAAM,MAAM,OAAO,GAAG;AACnC,eAAOA,WAASA,SAAO,MAAM,KAAK,IAAI;AAAA,MACxC;AACA,YAAM,gBAAgB,SAAU,KAAK,OAAO;AAC1C,YAAI,uBAAuB;AAC3B,gBAAQ,yBAAyB,yBAAyB,MAAM,MAAM,YAAY,GAAG,OAAO,QAAQ,0BAA0B,SAAS,SAAS,sBAAsB,KAAK,wBAAwB,KAAK;AAAA,MAC1M;AACA,YAAM,eAAe,SAAU,SAAS;AACtC,eAAO,GAAG,OAAO,MAAM,gBAAgB,GAAG,EAAE,OAAO,OAAO;AAAA,MAC5D;AACA,YAAM,gBAAgB,WAAY;AAChC,eAAO,kBAAkB,MAAM,KAAK;AAAA,MACtC;AACA,YAAM,0BAA0B,WAAY;AAC1C,eAAO,wBAAwB,MAAM,OAAO,MAAM,MAAM,WAAW;AAAA,MACrE;AACA,YAAM,wBAAwB,WAAY;AACxC,eAAO,MAAM,MAAM,aAAa,MAAM,wBAAwB,IAAI,CAAC;AAAA,MACrE;AACA,YAAM,wBAAwB,WAAY;AACxC,eAAO,4CAA4C,MAAM,wBAAwB,CAAC;AAAA,MACpF;AACA,YAAM,sBAAsB,WAAY;AACtC,eAAO,MAAM,MAAM,aAAa,MAAM,sBAAsB,IAAI,CAAC;AAAA,MACnE;AACA,YAAM,eAAe,SAAU,OAAO,YAAY;AAChD,cAAM,SAAS;AAAA,UACb,eAAe,eAAc;AAAA,YAC3B;AAAA,UACF,GAAG,UAAU;AAAA,QACf,CAAC;AAAA,MACH;AACA,YAAM,kBAAkB,SAAU,OAAO;AACvC,YAAI,MAAM,WAAW,GAAG;AACtB;AAAA,QACF;AACA,cAAM,gBAAgB;AACtB,cAAM,eAAe;AACrB,cAAM,WAAW;AAAA,MACnB;AACA,YAAM,kBAAkB,SAAU,OAAO;AACvC,cAAM,mBAAmB;AAAA,MAC3B;AACA,YAAM,qBAAqB,SAAU,OAAO;AAE1C,YAAI,MAAM,kBAAkB;AAC1B;AAAA,QACF;AACA,YAAI,kBAAkB,MAAM,MAAM;AAClC,YAAI,CAAC,MAAM,MAAM,WAAW;AAC1B,cAAI,iBAAiB;AACnB,kBAAM,iBAAiB;AAAA,UACzB;AACA,gBAAM,WAAW;AAAA,QACnB,WAAW,CAAC,MAAM,MAAM,YAAY;AAClC,cAAI,iBAAiB;AACnB,kBAAM,SAAS,OAAO;AAAA,UACxB;AAAA,QACF,OAAO;AACL,cAAI,MAAM,OAAO,YAAY,WAAW,MAAM,OAAO,YAAY,YAAY;AAC3E,kBAAM,YAAY;AAAA,UACpB;AAAA,QACF;AACA,YAAI,MAAM,OAAO,YAAY,WAAW,MAAM,OAAO,YAAY,YAAY;AAC3E,gBAAM,eAAe;AAAA,QACvB;AAAA,MACF;AACA,YAAM,+BAA+B,SAAU,OAAO;AAEpD,YAAI,SAAS,MAAM,SAAS,eAAe,MAAM,WAAW,GAAG;AAC7D;AAAA,QACF;AACA,YAAI,MAAM,MAAM;AAAY;AAC5B,YAAI,eAAe,MAAM,OACvB,UAAU,aAAa,SACvB,aAAa,aAAa;AAC5B,cAAM,WAAW;AACjB,YAAI,YAAY;AACd,gBAAM,SAAS;AAAA,YACb,0BAA0B,CAAC;AAAA,UAC7B,CAAC;AACD,gBAAM,YAAY;AAAA,QACpB,OAAO;AACL,gBAAM,SAAS,OAAO;AAAA,QACxB;AACA,cAAM,eAAe;AAAA,MACvB;AACA,YAAM,4BAA4B,SAAU,OAAO;AAEjD,YAAI,SAAS,MAAM,SAAS,eAAe,MAAM,WAAW,GAAG;AAC7D;AAAA,QACF;AACA,cAAM,WAAW;AACjB,cAAM,eAAe;AACrB,cAAM,iBAAiB;AACvB,YAAI,MAAM,SAAS,YAAY;AAC7B,gBAAM,WAAW;AAAA,QACnB,OAAO;AACL,qBAAW,WAAY;AACrB,mBAAO,MAAM,WAAW;AAAA,UAC1B,CAAC;AAAA,QACH;AAAA,MACF;AACA,YAAM,WAAW,SAAU,OAAO;AAChC,YAAI,OAAO,MAAM,MAAM,sBAAsB,WAAW;AACtD,cAAI,MAAM,kBAAkB,eAAe,kBAAkB,MAAM,MAAM,GAAG;AAC1E,kBAAM,MAAM,YAAY;AAAA,UAC1B;AAAA,QACF,WAAW,OAAO,MAAM,MAAM,sBAAsB,YAAY;AAC9D,cAAI,MAAM,MAAM,kBAAkB,KAAK,GAAG;AACxC,kBAAM,MAAM,YAAY;AAAA,UAC1B;AAAA,QACF;AAAA,MACF;AACA,YAAM,qBAAqB,WAAY;AACrC,cAAM,cAAc;AAAA,MACtB;AACA,YAAM,mBAAmB,WAAY;AACnC,cAAM,cAAc;AAAA,MACtB;AACA,YAAM,eAAe,SAAUC,QAAO;AACpC,YAAI,UAAUA,OAAM;AACpB,YAAI,QAAQ,WAAW,QAAQ,KAAK,CAAC;AACrC,YAAI,CAAC,OAAO;AACV;AAAA,QACF;AACA,cAAM,gBAAgB,MAAM;AAC5B,cAAM,gBAAgB,MAAM;AAC5B,cAAM,iBAAiB;AAAA,MACzB;AACA,YAAM,cAAc,SAAU,OAAO;AACnC,YAAI,UAAU,MAAM;AACpB,YAAI,QAAQ,WAAW,QAAQ,KAAK,CAAC;AACrC,YAAI,CAAC,OAAO;AACV;AAAA,QACF;AACA,YAAI,SAAS,KAAK,IAAI,MAAM,UAAU,MAAM,aAAa;AACzD,YAAI,SAAS,KAAK,IAAI,MAAM,UAAU,MAAM,aAAa;AACzD,YAAI,gBAAgB;AACpB,cAAM,iBAAiB,SAAS,iBAAiB,SAAS;AAAA,MAC5D;AACA,YAAM,aAAa,SAAU,OAAO;AAClC,YAAI,MAAM;AAAgB;AAK1B,YAAI,MAAM,cAAc,CAAC,MAAM,WAAW,SAAS,MAAM,MAAM,KAAK,MAAM,eAAe,CAAC,MAAM,YAAY,SAAS,MAAM,MAAM,GAAG;AAClI,gBAAM,UAAU;AAAA,QAClB;AAGA,cAAM,gBAAgB;AACtB,cAAM,gBAAgB;AAAA,MACxB;AACA,YAAM,oBAAoB,SAAU,OAAO;AACzC,YAAI,MAAM;AAAgB;AAC1B,cAAM,mBAAmB,KAAK;AAAA,MAChC;AACA,YAAM,2BAA2B,SAAU,OAAO;AAChD,YAAI,MAAM;AAAgB;AAC1B,cAAM,0BAA0B,KAAK;AAAA,MACvC;AACA,YAAM,8BAA8B,SAAU,OAAO;AACnD,YAAI,MAAM;AAAgB;AAC1B,cAAM,6BAA6B,KAAK;AAAA,MAC1C;AACA,YAAM,oBAAoB,SAAU,OAAO;AACzC,YAAI,iBAAiB,MAAM,MAAM;AACjC,YAAI,aAAa,MAAM,cAAc;AACrC,cAAM,SAAS;AAAA,UACb,0BAA0B;AAAA,QAC5B,CAAC;AACD,cAAM,cAAc,YAAY;AAAA,UAC9B,QAAQ;AAAA,UACR;AAAA,QACF,CAAC;AACD,YAAI,CAAC,MAAM,MAAM,YAAY;AAC3B,gBAAM,WAAW;AAAA,QACnB;AAAA,MACF;AACA,YAAM,eAAe,SAAU,OAAO;AACpC,YAAI,MAAM,MAAM,SAAS;AACvB,gBAAM,MAAM,QAAQ,KAAK;AAAA,QAC3B;AACA,cAAM,SAAS;AAAA,UACb,0BAA0B;AAAA,UAC1B,WAAW;AAAA,QACb,CAAC;AACD,YAAI,MAAM,kBAAkB,MAAM,MAAM,iBAAiB;AACvD,gBAAM,SAAS,OAAO;AAAA,QACxB;AACA,cAAM,iBAAiB;AAAA,MACzB;AACA,YAAM,cAAc,SAAU,OAAO;AACnC,YAAI,iBAAiB,MAAM,MAAM;AACjC,YAAI,MAAM,eAAe,MAAM,YAAY,SAAS,SAAS,aAAa,GAAG;AAC3E,gBAAM,SAAS,MAAM;AACrB;AAAA,QACF;AACA,YAAI,MAAM,MAAM,QAAQ;AACtB,gBAAM,MAAM,OAAO,KAAK;AAAA,QAC1B;AACA,cAAM,cAAc,IAAI;AAAA,UACtB,QAAQ;AAAA,UACR;AAAA,QACF,CAAC;AACD,cAAM,YAAY;AAClB,cAAM,SAAS;AAAA,UACb,cAAc;AAAA,UACd,WAAW;AAAA,QACb,CAAC;AAAA,MACH;AACA,YAAM,gBAAgB,SAAU,eAAe;AAC7C,YAAI,MAAM,oBAAoB,MAAM,MAAM,kBAAkB,eAAe;AACzE;AAAA,QACF;AACA,cAAM,SAAS;AAAA,UACb;AAAA,QACF,CAAC;AAAA,MACH;AACA,YAAM,4BAA4B,WAAY;AAC5C,eAAO,0BAA0B,MAAM,KAAK;AAAA,MAC9C;AACA,YAAM,oBAAoB,SAAUC,IAAG;AACrC,QAAAA,GAAE,eAAe;AACjB,QAAAA,GAAE,gBAAgB;AAClB,cAAM,MAAM;AAAA,MACd;AACA,YAAM,YAAY,SAAU,OAAO;AACjC,YAAI,eAAe,MAAM,OACvB,UAAU,aAAa,SACvB,wBAAwB,aAAa,uBACrC,oBAAoB,aAAa,mBACjC,aAAa,aAAa,YAC1B,cAAc,aAAa,aAC3Bb,cAAa,aAAa,YAC1B,aAAa,aAAa,YAC1B,YAAY,aAAa,WACzB,kBAAkB,aAAa,iBAC/B,kBAAkB,aAAa;AACjC,YAAI,cAAc,MAAM,OACtB,gBAAgB,YAAY,eAC5B,eAAe,YAAY,cAC3B,cAAc,YAAY;AAC5B,YAAIA;AAAY;AAChB,YAAI,OAAO,cAAc,YAAY;AACnC,oBAAU,KAAK;AACf,cAAI,MAAM,kBAAkB;AAC1B;AAAA,UACF;AAAA,QACF;AAGA,cAAM,mBAAmB;AACzB,gBAAQ,MAAM,KAAK;AAAA,UACjB,KAAK;AACH,gBAAI,CAAC,WAAW;AAAY;AAC5B,kBAAM,WAAW,UAAU;AAC3B;AAAA,UACF,KAAK;AACH,gBAAI,CAAC,WAAW;AAAY;AAC5B,kBAAM,WAAW,MAAM;AACvB;AAAA,UACF,KAAK;AAAA,UACL,KAAK;AACH,gBAAI;AAAY;AAChB,gBAAI,cAAc;AAChB,oBAAM,YAAY,YAAY;AAAA,YAChC,OAAO;AACL,kBAAI,CAAC;AAAuB;AAC5B,kBAAI,SAAS;AACX,sBAAM,SAAS;AAAA,cACjB,WAAW,aAAa;AACtB,sBAAM,WAAW;AAAA,cACnB;AAAA,YACF;AACA;AAAA,UACF,KAAK;AACH,gBAAI,MAAM;AAAa;AACvB,gBAAI,MAAM,YAAY,CAAC,cAAc,CAAC,mBAAmB,CAAC;AAAA;AAAA,YAG1D,mBAAmB,MAAM,iBAAiB,eAAe,WAAW,GAAG;AACrE;AAAA,YACF;AACA,kBAAM,aAAa,aAAa;AAChC;AAAA,UACF,KAAK;AACH,gBAAI,MAAM,YAAY,KAAK;AAGzB;AAAA,YACF;AACA,gBAAI,YAAY;AACd,kBAAI,CAAC;AAAe;AACpB,kBAAI,MAAM;AAAa;AACvB,oBAAM,aAAa,aAAa;AAChC;AAAA,YACF;AACA;AAAA,UACF,KAAK;AACH,gBAAI,YAAY;AACd,oBAAM,SAAS;AAAA,gBACb,0BAA0B;AAAA,cAC5B,CAAC;AACD,oBAAM,cAAc,IAAI;AAAA,gBACtB,QAAQ;AAAA,gBACR,gBAAgB;AAAA,cAClB,CAAC;AACD,oBAAM,YAAY;AAAA,YACpB,WAAW,eAAe,mBAAmB;AAC3C,oBAAM,WAAW;AAAA,YACnB;AACA;AAAA,UACF,KAAK;AAEH,gBAAI,YAAY;AACd;AAAA,YACF;AACA,gBAAI,CAAC,YAAY;AACf,oBAAM,SAAS,OAAO;AACtB;AAAA,YACF;AACA,gBAAI,CAAC;AAAe;AACpB,kBAAM,aAAa,aAAa;AAChC;AAAA,UACF,KAAK;AACH,gBAAI,YAAY;AACd,oBAAM,YAAY,IAAI;AAAA,YACxB,OAAO;AACL,oBAAM,SAAS,MAAM;AAAA,YACvB;AACA;AAAA,UACF,KAAK;AACH,gBAAI,YAAY;AACd,oBAAM,YAAY,MAAM;AAAA,YAC1B,OAAO;AACL,oBAAM,SAAS,OAAO;AAAA,YACxB;AACA;AAAA,UACF,KAAK;AACH,gBAAI,CAAC;AAAY;AACjB,kBAAM,YAAY,QAAQ;AAC1B;AAAA,UACF,KAAK;AACH,gBAAI,CAAC;AAAY;AACjB,kBAAM,YAAY,UAAU;AAC5B;AAAA,UACF,KAAK;AACH,gBAAI,CAAC;AAAY;AACjB,kBAAM,YAAY,OAAO;AACzB;AAAA,UACF,KAAK;AACH,gBAAI,CAAC;AAAY;AACjB,kBAAM,YAAY,MAAM;AACxB;AAAA,UACF;AACE;AAAA,QACJ;AACA,cAAM,eAAe;AAAA,MACvB;AACA,YAAM,iBAAiB,mBAAmB,MAAM,MAAM,cAAc,EAAE;AACtE,YAAM,MAAM,cAAc,WAAW,OAAO,KAAK;AAGjD,UAAI,OAAO,cAAc,MAAM,MAAM,YAAY,QAAQ;AACvD,YAAI,mBAAmB,MAAM,sBAAsB;AACnD,YAAI,cAAc,iBAAiB,QAAQ,MAAM,MAAM,YAAY,CAAC,CAAC;AACrE,cAAM,MAAM,gBAAgB,iBAAiB,WAAW;AAAA,MAC1D;AACA,aAAO;AAAA,IACT;AACA,iBAAaQ,SAAQ,CAAC;AAAA,MACpB,KAAK;AAAA,MACL,OAAO,SAAS,oBAAoB;AAClC,aAAK,0BAA0B;AAC/B,aAAK,sBAAsB;AAC3B,YAAI,KAAK,MAAM,qBAAqB,YAAY,SAAS,kBAAkB;AAEzE,mBAAS,iBAAiB,UAAU,KAAK,UAAU,IAAI;AAAA,QACzD;AACA,YAAI,KAAK,MAAM,WAAW;AACxB,eAAK,WAAW;AAAA,QAClB;AAGA,YAAI,KAAK,MAAM,cAAc,KAAK,MAAM,iBAAiB,KAAK,eAAe,KAAK,kBAAkB;AAClG,yBAAe,KAAK,aAAa,KAAK,gBAAgB;AAAA,QACxD;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,mBAAmB,WAAW;AAC5C,YAAI,eAAe,KAAK,OACtBR,cAAa,aAAa,YAC1B,aAAa,aAAa;AAC5B,YAAI,YAAY,KAAK,MAAM;AAC3B;AAAA;AAAA,UAEA,aAAa,CAACA,eAAc,UAAU;AAAA,UAEtC,aAAa,cAAc,CAAC,UAAU;AAAA,UAAY;AAChD,eAAK,WAAW;AAAA,QAClB;AACA,YAAI,aAAaA,eAAc,CAAC,UAAU,YAAY;AAGpD,eAAK,SAAS;AAAA,YACZ,WAAW;AAAA,UACb,GAAG,KAAK,WAAW;AAAA,QACrB,WAAW,CAAC,aAAa,CAACA,eAAc,UAAU,cAAc,KAAK,aAAa,SAAS,eAAe;AAGxG,eAAK,SAAS;AAAA,YACZ,WAAW;AAAA,UACb,CAAC;AAAA,QACH;AAGA,YAAI,KAAK,eAAe,KAAK,oBAAoB,KAAK,+BAA+B;AACnF,yBAAe,KAAK,aAAa,KAAK,gBAAgB;AACtD,eAAK,gCAAgC;AAAA,QACvC;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,uBAAuB;AACrC,aAAK,yBAAyB;AAC9B,aAAK,qBAAqB;AAC1B,iBAAS,oBAAoB,UAAU,KAAK,UAAU,IAAI;AAAA,MAC5D;AAAA;AAAA;AAAA;AAAA,IAKF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,aAAa;AAC3B,aAAK,MAAM,WAAW;AAAA,MACxB;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,cAAc;AAC5B,aAAK,cAAc,IAAI;AAAA,UACrB,QAAQ;AAAA,UACR,gBAAgB,KAAK,MAAM;AAAA,QAC7B,CAAC;AACD,aAAK,MAAM,YAAY;AAAA,MACzB;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,cAAc,UAAU,YAAY;AAClD,aAAK,MAAM,cAAc,UAAU,UAAU;AAAA,MAC/C;AAAA;AAAA;AAAA;AAAA,IAKF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,aAAa;AAC3B,YAAI,CAAC,KAAK;AAAU;AACpB,aAAK,SAAS,MAAM;AAAA,MACtB;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,YAAY;AAC1B,YAAI,CAAC,KAAK;AAAU;AACpB,aAAK,SAAS,KAAK;AAAA,MACrB;AAAA;AAAA,IAGF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,SAAS,aAAa;AACpC,YAAI,SAAS;AACb,YAAI,eAAe,KAAK,OACtB,cAAc,aAAa,aAC3B,YAAY,aAAa;AAC3B,YAAI,mBAAmB,KAAK,sBAAsB;AAClD,YAAI,cAAc,gBAAgB,UAAU,IAAI,iBAAiB,SAAS;AAC1E,YAAI,CAAC,KAAK,MAAM,SAAS;AACvB,cAAI,gBAAgB,iBAAiB,QAAQ,YAAY,CAAC,CAAC;AAC3D,cAAI,gBAAgB,IAAI;AACtB,0BAAc;AAAA,UAChB;AAAA,QACF;AAGA,aAAK,gCAAgC,EAAE,aAAa,KAAK;AACzD,aAAK,SAAS;AAAA,UACZ,0BAA0B;AAAA,UAC1B,cAAc;AAAA,UACd,eAAe,iBAAiB,WAAW;AAAA,QAC7C,GAAG,WAAY;AACb,iBAAO,OAAO,WAAW;AAAA,QAC3B,CAAC;AAAA,MACH;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,WAAW,WAAW;AACpC,YAAI,eAAe,KAAK,OACtB,cAAc,aAAa,aAC3B,eAAe,aAAa;AAG9B,YAAI,CAAC,KAAK,MAAM;AAAS;AACzB,aAAK,SAAS;AAAA,UACZ,eAAe;AAAA,QACjB,CAAC;AACD,YAAI,eAAe,YAAY,QAAQ,YAAY;AACnD,YAAI,CAAC,cAAc;AACjB,yBAAe;AAAA,QACjB;AACA,YAAI,YAAY,YAAY,SAAS;AACrC,YAAI,YAAY;AAChB,YAAI,CAAC,YAAY;AAAQ;AACzB,gBAAQ,WAAW;AAAA,UACjB,KAAK;AACH,gBAAI,iBAAiB,GAAG;AAEtB,0BAAY;AAAA,YACd,WAAW,iBAAiB,IAAI;AAE9B,0BAAY;AAAA,YACd,OAAO;AACL,0BAAY,eAAe;AAAA,YAC7B;AACA;AAAA,UACF,KAAK;AACH,gBAAI,eAAe,MAAM,eAAe,WAAW;AACjD,0BAAY,eAAe;AAAA,YAC7B;AACA;AAAA,QACJ;AACA,aAAK,SAAS;AAAA,UACZ,eAAe,cAAc;AAAA,UAC7B,cAAc,YAAY,SAAS;AAAA,QACrC,CAAC;AAAA,MACH;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,cAAc;AAC5B,YAAI,YAAY,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI;AACpF,YAAI,WAAW,KAAK,MAAM;AAC1B,YAAI,gBAAgB,KAAK,MAAM;AAC/B,YAAIM,WAAU,KAAK,oBAAoB;AACvC,YAAI,CAACA,SAAQ;AAAQ;AACrB,YAAI,YAAY;AAChB,YAAI,eAAeA,SAAQ,QAAQ,aAAa;AAChD,YAAI,CAAC,eAAe;AAClB,yBAAe;AAAA,QACjB;AACA,YAAI,cAAc,MAAM;AACtB,sBAAY,eAAe,IAAI,eAAe,IAAIA,SAAQ,SAAS;AAAA,QACrE,WAAW,cAAc,QAAQ;AAC/B,uBAAa,eAAe,KAAKA,SAAQ;AAAA,QAC3C,WAAW,cAAc,UAAU;AACjC,sBAAY,eAAe;AAC3B,cAAI,YAAY;AAAG,wBAAY;AAAA,QACjC,WAAW,cAAc,YAAY;AACnC,sBAAY,eAAe;AAC3B,cAAI,YAAYA,SAAQ,SAAS;AAAG,wBAAYA,SAAQ,SAAS;AAAA,QACnE,WAAW,cAAc,QAAQ;AAC/B,sBAAYA,SAAQ,SAAS;AAAA,QAC/B;AACA,aAAK,gCAAgC;AACrC,aAAK,SAAS;AAAA,UACZ,eAAeA,SAAQ,SAAS;AAAA,UAChC,cAAc;AAAA,QAChB,CAAC;AAAA,MACH;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL;AAAA;AAAA;AAAA;AAAA,QAKA,SAAS,WAAW;AAElB,cAAI,CAAC,KAAK,MAAM,OAAO;AACrB,mBAAO;AAAA,UACT;AAIA,cAAI,OAAO,KAAK,MAAM,UAAU,YAAY;AAC1C,mBAAO,KAAK,MAAM,MAAM,YAAY;AAAA,UACtC;AAGA,iBAAO,eAAc,eAAc,CAAC,GAAG,YAAY,GAAG,KAAK,MAAM,KAAK;AAAA,QACxE;AAAA;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,iBAAiB;AAC/B,YAAI,aAAa,KAAK,YACpB,KAAK,KAAK,IACVQ,aAAY,KAAK,WACjB,gBAAgB,KAAK,eACrBC,YAAW,KAAK,UAChB,eAAe,KAAK,cACpB,WAAW,KAAK,UAChB,QAAQ,KAAK;AACf,YAAI,UAAU,MAAM,SAClB,QAAQ,MAAM,OACdT,WAAU,MAAM;AAClB,YAAI,WAAW,KAAK,SAAS;AAC7B,eAAO;AAAA,UACL;AAAA,UACA;AAAA,UACA,WAAWQ;AAAA,UACX;AAAA,UACA,UAAUC;AAAA,UACV;AAAA,UACA;AAAA,UACA;AAAA,UACA,SAAST;AAAA,UACT;AAAA,UACA,aAAa;AAAA,UACb;AAAA,UACA,OAAO,KAAK,SAAS;AAAA,QACvB;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,WAAW;AACzB,YAAI,cAAc,KAAK,MAAM;AAC7B,eAAO,YAAY,SAAS;AAAA,MAC9B;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,aAAa;AAC3B,eAAO,CAAC,CAAC,KAAK,oBAAoB,EAAE;AAAA,MACtC;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,cAAc;AAC5B,YAAI,eAAe,KAAK,OACtBU,eAAc,aAAa,aAC3B,UAAU,aAAa;AAIzB,YAAIA,iBAAgB;AAAW,iBAAO;AACtC,eAAOA;AAAA,MACT;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASC,kBAAiB,QAAQ,aAAa;AACpD,eAAO,kBAAkB,KAAK,OAAO,QAAQ,WAAW;AAAA,MAC1D;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,iBAAiB,QAAQ,aAAa;AACpD,eAAO,kBAAkB,KAAK,OAAO,QAAQ,WAAW;AAAA,MAC1D;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,aAAa,QAAQ,YAAY;AAC/C,eAAO,cAAc,KAAK,OAAO,QAAQ,UAAU;AAAA,MACrD;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,kBAAkBb,OAAM,SAAS;AAC/C,YAAI,OAAO,KAAK,MAAM,sBAAsB,YAAY;AACtD,cAAI,cAAc,KAAK,MAAM;AAC7B,cAAI,eAAe,KAAK,MAAM;AAC9B,iBAAO,KAAK,MAAM,kBAAkBA,OAAM;AAAA,YACxC;AAAA,YACA,YAAY;AAAA,YACZ,aAAa;AAAA,UACf,CAAC;AAAA,QACH,OAAO;AACL,iBAAO,KAAK,eAAeA,KAAI;AAAA,QACjC;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASc,kBAAiBd,OAAM;AACrC,eAAO,KAAK,MAAM,iBAAiBA,KAAI;AAAA,MACzC;AAAA;AAAA;AAAA;AAAA,IAKF,GAAG;AAAA,MACD,KAAK;AAAA,MACL;AAAA;AAAA;AAAA;AAAA,QAKA,SAAS,4BAA4B;AACnC,cAAI,YAAY,SAAS,kBAAkB;AACzC,qBAAS,iBAAiB,oBAAoB,KAAK,oBAAoB,KAAK;AAC5E,qBAAS,iBAAiB,kBAAkB,KAAK,kBAAkB,KAAK;AAAA,UAC1E;AAAA,QACF;AAAA;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,2BAA2B;AACzC,YAAI,YAAY,SAAS,qBAAqB;AAC5C,mBAAS,oBAAoB,oBAAoB,KAAK,kBAAkB;AACxE,mBAAS,oBAAoB,kBAAkB,KAAK,gBAAgB;AAAA,QACtE;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL;AAAA;AAAA;AAAA;AAAA,QAKA,SAAS,wBAAwB;AAC/B,cAAI,YAAY,SAAS,kBAAkB;AACzC,qBAAS,iBAAiB,cAAc,KAAK,cAAc,KAAK;AAChE,qBAAS,iBAAiB,aAAa,KAAK,aAAa,KAAK;AAC9D,qBAAS,iBAAiB,YAAY,KAAK,YAAY,KAAK;AAAA,UAC9D;AAAA,QACF;AAAA;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,uBAAuB;AACrC,YAAI,YAAY,SAAS,qBAAqB;AAC5C,mBAAS,oBAAoB,cAAc,KAAK,YAAY;AAC5D,mBAAS,oBAAoB,aAAa,KAAK,WAAW;AAC1D,mBAAS,oBAAoB,YAAY,KAAK,UAAU;AAAA,QAC1D;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL;AAAA;AAAA;AAAA;AAAA,QAIA,SAAS,cAAc;AACrB,cAAI,eAAe,KAAK,OACtBJ,cAAa,aAAa,YAC1B,eAAe,aAAa,cAC5B,UAAU,aAAa,SACvB,aAAa,aAAa,YAC1B,WAAW,aAAa,UACxB,OAAO,aAAa,MACpB,aAAa,aAAa,YAC1B,WAAW,aAAa;AAC1B,cAAI,sBAAsB,KAAK,cAAc,GAC3CmB,SAAQ,oBAAoB;AAC9B,cAAI,eAAe,KAAK,OACtB,gBAAgB,aAAa,eAC7B,gBAAgB,aAAa;AAC/B,cAAI,cAAc,KAAK;AACvB,cAAIC,OAAK,WAAW,KAAK,aAAa,OAAO;AAG7C,cAAI,iBAAiB,eAAc,eAAc,eAAc;AAAA,YAC7D,qBAAqB;AAAA,YACrB,iBAAiB;AAAA,YACjB,iBAAiB;AAAA,YACjB,qBAAqB,KAAK,MAAM,mBAAmB;AAAA,YACnD,gBAAgB,KAAK,MAAM,cAAc;AAAA,YACzC,cAAc,KAAK,MAAM,YAAY;AAAA,YACrC,mBAAmB,KAAK,MAAM,iBAAiB;AAAA,YAC/C,iBAAiB;AAAA,YACjB,MAAM;AAAA,UACR,GAAG,cAAc;AAAA,YACf,iBAAiB,KAAK,aAAa,SAAS;AAAA,YAC5C,aAAa,KAAK,aAAa,SAAS;AAAA,UAC1C,CAAC,GAAG,CAAC,gBAAgB;AAAA,YACnB,iBAAiB;AAAA,UACnB,CAAC,GAAG,KAAK,SAAS,KAAK,kBAAkB,QAAQ,kBAAkB,SAAS,SAAS,cAAc,YAAY,yBAAyB;AAAA,YACtI,oBAAoB,KAAK,aAAa,aAAa;AAAA,UACrD,IAAI;AAAA,YACF,oBAAoB,KAAK,aAAa,aAAa;AAAA,UACrD,CAAC;AACD,cAAI,CAAC,cAAc;AAEjB,mBAAoB,gBAAM,qBAAc,YAAY,SAAS;AAAA,cAC3D,IAAIA;AAAA,cACJ,UAAU,KAAK;AAAA,cACf,QAAQ,KAAK;AAAA,cACb,UAAUC;AAAA,cACV,SAAS,KAAK;AAAA,cACd,UAAUrB;AAAA,cACV;AAAA,cACA,WAAW;AAAA,cACX;AAAA,cACA,OAAO;AAAA,YACT,GAAG,cAAc,CAAC;AAAA,UACpB;AACA,iBAAoB,gBAAM,qBAAcmB,QAAO,SAAS,CAAC,GAAG,aAAa;AAAA,YACvE,gBAAgB;AAAA,YAChB,cAAc;AAAA,YACd,aAAa;AAAA,YACb,IAAIC;AAAA,YACJ,UAAU,KAAK;AAAA,YACf,YAAYpB;AAAA,YACZ,UAAU;AAAA,YACV,QAAQ,KAAK;AAAA,YACb,UAAU,KAAK;AAAA,YACf,SAAS,KAAK;AAAA,YACd,YAAY;AAAA,YACZ;AAAA,YACA;AAAA,YACA,MAAM;AAAA,YACN,OAAO;AAAA,UACT,GAAG,cAAc,CAAC;AAAA,QACpB;AAAA;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,2BAA2B;AACzC,YAAI,SAAS;AACb,YAAI,uBAAuB,KAAK,cAAc,GAC5CsB,cAAa,qBAAqB,YAClCC,uBAAsB,qBAAqB,qBAC3CC,mBAAkB,qBAAqB,iBACvCC,oBAAmB,qBAAqB,kBACxCC,eAAc,qBAAqB,aACnCC,eAAc,qBAAqB;AACrC,YAAI,cAAc,KAAK;AACvB,YAAI,eAAe,KAAK,OACtB,2BAA2B,aAAa,0BACxC3B,cAAa,aAAa,YAC1B,UAAU,aAAa,SACvB,aAAa,aAAa,YAC1B,cAAc,aAAa;AAC7B,YAAI,eAAe,KAAK,OACtB,cAAc,aAAa,aAC3B,eAAe,aAAa,cAC5B,YAAY,aAAa;AAC3B,YAAI,CAAC,KAAK,SAAS,KAAK,CAAC,0BAA0B;AACjD,iBAAO,aAAa,OAAoB,gBAAM,qBAAc2B,cAAa,SAAS,CAAC,GAAG,aAAa;AAAA,YACjG,KAAK;AAAA,YACL,YAAY3B;AAAA,YACZ;AAAA,YACA,YAAY;AAAA,cACV,IAAI,KAAK,aAAa,aAAa;AAAA,YACrC;AAAA,UACF,CAAC,GAAG,WAAW;AAAA,QACjB;AACA,YAAI,SAAS;AACX,iBAAO,YAAY,IAAI,SAAU,KAAKD,QAAO;AAC3C,gBAAI,kBAAkB,QAAQ;AAC9B,gBAAI,MAAM,GAAG,OAAO,OAAO,eAAe,GAAG,GAAG,GAAG,EAAE,OAAO,OAAO,eAAe,GAAG,CAAC;AACtF,mBAAoB,gBAAM,qBAAcuB,aAAY,SAAS,CAAC,GAAG,aAAa;AAAA,cAC5E,YAAY;AAAA,gBACV,WAAWC;AAAA,gBACX,OAAOC;AAAA,gBACP,QAAQC;AAAA,cACV;AAAA,cACA,WAAW;AAAA,cACX,YAAYzB;AAAA,cACZ;AAAA,cACA,OAAOD;AAAA,cACP,aAAa;AAAA,gBACX,SAAS,SAAS,UAAU;AAC1B,yBAAO,OAAO,YAAY,GAAG;AAAA,gBAC/B;AAAA,gBACA,YAAY,SAAS,aAAa;AAChC,yBAAO,OAAO,YAAY,GAAG;AAAA,gBAC/B;AAAA,gBACA,aAAa,SAAS,YAAYc,IAAG;AACnC,kBAAAA,GAAE,eAAe;AAAA,gBACnB;AAAA,cACF;AAAA,cACA,MAAM;AAAA,YACR,CAAC,GAAG,OAAO,kBAAkB,KAAK,OAAO,CAAC;AAAA,UAC5C,CAAC;AAAA,QACH;AACA,YAAI,YAAY;AACd,iBAAO;AAAA,QACT;AACA,YAAI,cAAc,YAAY,CAAC;AAC/B,eAAoB,gBAAM,qBAAca,cAAa,SAAS,CAAC,GAAG,aAAa;AAAA,UAC7E,MAAM;AAAA,UACN,YAAY1B;AAAA,QACd,CAAC,GAAG,KAAK,kBAAkB,aAAa,OAAO,CAAC;AAAA,MAClD;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,uBAAuB;AACrC,YAAI,uBAAuB,KAAK,cAAc,GAC5C4B,kBAAiB,qBAAqB;AACxC,YAAI,cAAc,KAAK;AACvB,YAAI,gBAAgB,KAAK,OACvB5B,cAAa,cAAc,YAC3B,YAAY,cAAc;AAC5B,YAAI,YAAY,KAAK,MAAM;AAC3B,YAAI,CAAC,KAAK,YAAY,KAAK,CAAC4B,mBAAkB5B,eAAc,CAAC,KAAK,SAAS,KAAK,WAAW;AACzF,iBAAO;AAAA,QACT;AACA,YAAI,aAAa;AAAA,UACf,aAAa,KAAK;AAAA,UAClB,YAAY,KAAK;AAAA,UACjB,eAAe;AAAA,QACjB;AACA,eAAoB,gBAAM,qBAAc4B,iBAAgB,SAAS,CAAC,GAAG,aAAa;AAAA,UAChF;AAAA,UACA;AAAA,QACF,CAAC,CAAC;AAAA,MACJ;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,yBAAyB;AACvC,YAAI,uBAAuB,KAAK,cAAc,GAC5CC,oBAAmB,qBAAqB;AAC1C,YAAI,cAAc,KAAK;AACvB,YAAI,gBAAgB,KAAK,OACvB7B,cAAa,cAAc,YAC3B,YAAY,cAAc;AAC5B,YAAI,YAAY,KAAK,MAAM;AAC3B,YAAI,CAAC6B,qBAAoB,CAAC;AAAW,iBAAO;AAC5C,YAAI,aAAa;AAAA,UACf,eAAe;AAAA,QACjB;AACA,eAAoB,gBAAM,qBAAcA,mBAAkB,SAAS,CAAC,GAAG,aAAa;AAAA,UAClF;AAAA,UACA,YAAY7B;AAAA,UACZ;AAAA,QACF,CAAC,CAAC;AAAA,MACJ;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,2BAA2B;AACzC,YAAI,uBAAuB,KAAK,cAAc,GAC5C8B,qBAAoB,qBAAqB,mBACzCC,sBAAqB,qBAAqB;AAG5C,YAAI,CAACD,sBAAqB,CAACC;AAAoB,iBAAO;AACtD,YAAI,cAAc,KAAK;AACvB,YAAI/B,cAAa,KAAK,MAAM;AAC5B,YAAI,YAAY,KAAK,MAAM;AAC3B,eAAoB,gBAAM,qBAAc+B,qBAAoB,SAAS,CAAC,GAAG,aAAa;AAAA,UACpF,YAAY/B;AAAA,UACZ;AAAA,QACF,CAAC,CAAC;AAAA,MACJ;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,0BAA0B;AACxC,YAAI,uBAAuB,KAAK,cAAc,GAC5C8B,qBAAoB,qBAAqB;AAC3C,YAAI,CAACA;AAAmB,iBAAO;AAC/B,YAAI,cAAc,KAAK;AACvB,YAAI9B,cAAa,KAAK,MAAM;AAC5B,YAAI,YAAY,KAAK,MAAM;AAC3B,YAAI,aAAa;AAAA,UACf,aAAa,KAAK;AAAA,UAClB,YAAY,KAAK;AAAA,UACjB,eAAe;AAAA,QACjB;AACA,eAAoB,gBAAM,qBAAc8B,oBAAmB,SAAS,CAAC,GAAG,aAAa;AAAA,UACnF;AAAA,UACA,YAAY9B;AAAA,UACZ;AAAA,QACF,CAAC,CAAC;AAAA,MACJ;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,aAAa;AAC3B,YAAI,SAAS;AACb,YAAI,uBAAuB,KAAK,cAAc,GAC5CgC,SAAQ,qBAAqB,OAC7BC,gBAAe,qBAAqB,cACpCC,QAAO,qBAAqB,MAC5BC,YAAW,qBAAqB,UAChCC,cAAa,qBAAqB,YAClCC,kBAAiB,qBAAqB,gBACtCC,oBAAmB,qBAAqB,kBACxCC,UAAS,qBAAqB;AAChC,YAAI,cAAc,KAAK;AACvB,YAAI,gBAAgB,KAAK,MAAM;AAC/B,YAAI,gBAAgB,KAAK,OACvB,oBAAoB,cAAc,mBAClC,aAAa,cAAc,YAC3B,YAAY,cAAc,WAC1BC,kBAAiB,cAAc,gBAC/B,gBAAgB,cAAc,eAC9B,gBAAgB,cAAc,eAC9B,aAAa,cAAc,YAC3B,gBAAgB,cAAc,eAC9B,eAAe,cAAc,cAC7B,mBAAmB,cAAc,kBACjC,wBAAwB,cAAc,uBACtC,2BAA2B,cAAc,0BACzCC,oBAAmB,cAAc,kBACjC,oBAAoB,cAAc,mBAClC,uBAAuB,cAAc;AACvC,YAAI,CAAC;AAAY,iBAAO;AAGxB,YAAIC,UAAS,SAASA,QAAO,OAAOtB,MAAI;AACtC,cAAI,OAAO,MAAM,MACfhB,QAAO,MAAM,MACbJ,cAAa,MAAM,YACnB,aAAa,MAAM,YACnB,QAAQ,MAAM,OACd,QAAQ,MAAM;AAChB,cAAI,YAAY,kBAAkBI;AAClC,cAAI,UAAUJ,cAAa,SAAY,WAAY;AACjD,mBAAO,OAAO,cAAcI,KAAI;AAAA,UAClC;AACA,cAAI,WAAWJ,cAAa,SAAY,WAAY;AAClD,mBAAO,OAAO,aAAaI,KAAI;AAAA,UACjC;AACA,cAAI,WAAW,GAAG,OAAO,OAAO,aAAa,QAAQ,GAAG,GAAG,EAAE,OAAOgB,IAAE;AACtE,cAAI,aAAa;AAAA,YACf,IAAI;AAAA,YACJ,SAAS;AAAA,YACT,aAAa;AAAA,YACb,aAAa;AAAA,YACb,UAAU;AAAA,UACZ;AACA,iBAAoB,gBAAM,qBAAcmB,SAAQ,SAAS,CAAC,GAAG,aAAa;AAAA,YACxE;AAAA,YACA,MAAMnC;AAAA,YACN,YAAYJ;AAAA,YACZ;AAAA,YACA,KAAK;AAAA,YACL;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA,UAAU,YAAY,OAAO,sBAAsB;AAAA,UACrD,CAAC,GAAG,OAAO,kBAAkB,MAAM,MAAM,MAAM,CAAC;AAAA,QAClD;AACA,YAAI;AACJ,YAAI,KAAK,WAAW,GAAG;AACrB,mBAAS,KAAK,sBAAsB,EAAE,IAAI,SAAU,MAAM;AACxD,gBAAI,KAAK,SAAS,SAAS;AACzB,kBAAI2C,SAAQ,KAAK,MACfrC,WAAU,KAAK,SACf,aAAa,KAAK;AACpB,kBAAI,UAAU,GAAG,OAAO,OAAO,aAAa,OAAO,GAAG,GAAG,EAAE,OAAO,UAAU;AAC5E,kBAAI,YAAY,GAAG,OAAO,SAAS,UAAU;AAC7C,qBAAoB,gBAAM,qBAAc0B,QAAO,SAAS,CAAC,GAAG,aAAa;AAAA,gBACvE,KAAK;AAAA,gBACL,MAAMW;AAAA,gBACN,SAASrC;AAAA,gBACT,SAAS2B;AAAA,gBACT,cAAc;AAAA,kBACZ,IAAI;AAAA,kBACJ,MAAM,KAAK;AAAA,gBACb;AAAA,gBACA,OAAO,OAAO,iBAAiB,KAAK,IAAI;AAAA,cAC1C,CAAC,GAAG,KAAK,QAAQ,IAAI,SAAU,QAAQ;AACrC,uBAAOS,QAAO,QAAQ,GAAG,OAAO,YAAY,GAAG,EAAE,OAAO,OAAO,KAAK,CAAC;AAAA,cACvE,CAAC,CAAC;AAAA,YACJ,WAAW,KAAK,SAAS,UAAU;AACjC,qBAAOA,QAAO,MAAM,GAAG,OAAO,KAAK,KAAK,CAAC;AAAA,YAC3C;AAAA,UACF,CAAC;AAAA,QACH,WAAW,WAAW;AACpB,cAAI,UAAUF,gBAAe;AAAA,YAC3B;AAAA,UACF,CAAC;AACD,cAAI,YAAY;AAAM,mBAAO;AAC7B,mBAAsB,gBAAM,qBAAcH,iBAAgB,aAAa,OAAO;AAAA,QAChF,OAAO;AACL,cAAI,WAAWI,kBAAiB;AAAA,YAC9B;AAAA,UACF,CAAC;AACD,cAAI,aAAa;AAAM,mBAAO;AAC9B,mBAAsB,gBAAM,qBAAcH,mBAAkB,aAAa,QAAQ;AAAA,QACnF;AACA,YAAI,qBAAqB;AAAA,UACvB;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AACA,YAAI,cAA2B,gBAAM,qBAAc,YAAY,SAAS,CAAC,GAAG,aAAa,kBAAkB,GAAG,SAAU,OAAO;AAC7H,cAAI,MAAM,MAAM,KACd,oBAAoB,MAAM,aAC1B,YAAY,kBAAkB,WAC9B,YAAY,kBAAkB;AAChC,iBAAoB,gBAAM,qBAAcJ,OAAM,SAAS,CAAC,GAAG,aAAa,oBAAoB;AAAA,YAC1F,UAAU;AAAA,YACV,YAAY;AAAA,cACV,aAAa,OAAO;AAAA,cACpB,aAAa,OAAO;AAAA,cACpB,IAAI,OAAO,aAAa,SAAS;AAAA,YACnC;AAAA,YACA;AAAA,YACA;AAAA,UACF,CAAC,GAAgB,gBAAM,qBAAc,eAAe;AAAA,YAClD,gBAAgB;AAAA,YAChB,aAAa;AAAA,YACb,gBAAgB;AAAA,YAChB,aAAa;AAAA,UACf,GAAG,SAAU,iBAAiB;AAC5B,mBAAoB,gBAAM,qBAAcC,WAAU,SAAS,CAAC,GAAG,aAAa;AAAA,cAC1E,UAAU,SAAS,SAAS,UAAU;AACpC,uBAAO,eAAe,QAAQ;AAC9B,gCAAgB,QAAQ;AAAA,cAC1B;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACF,CAAC,GAAG,MAAM;AAAA,UACZ,CAAC,CAAC;AAAA,QACJ,CAAC;AAKD,eAAO,oBAAoB,iBAAiB,UAAuB,gBAAM,qBAAcC,aAAY,SAAS,CAAC,GAAG,aAAa;AAAA,UAC3H,UAAU;AAAA,UACV,gBAAgB,KAAK;AAAA,UACrB;AAAA,UACA;AAAA,QACF,CAAC,GAAG,WAAW,IAAI;AAAA,MACrB;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,kBAAkB;AAChC,YAAI,SAAS;AACb,YAAI,gBAAgB,KAAK,OACvBQ,aAAY,cAAc,WAC1B5C,cAAa,cAAc,YAC3B,UAAU,cAAc,SACxBU,QAAO,cAAc,MACrB,WAAW,cAAc;AAC3B,YAAI,cAAc,KAAK,MAAM;AAC7B,YAAI,YAAY,CAAC,KAAK,SAAS,KAAK,CAACV,aAAY;AAC/C,iBAAoB,gBAAM,qBAAc,iBAAiB;AAAA,YACvD,MAAMU;AAAA,YACN,SAAS,KAAK;AAAA,UAChB,CAAC;AAAA,QACH;AACA,YAAI,CAACA,SAAQV;AAAY;AACzB,YAAI,SAAS;AACX,cAAI4C,YAAW;AACb,gBAAI,QAAQ,YAAY,IAAI,SAAU,KAAK;AACzC,qBAAO,OAAO,eAAe,GAAG;AAAA,YAClC,CAAC,EAAE,KAAKA,UAAS;AACjB,mBAAoB,gBAAM,qBAAc,SAAS;AAAA,cAC/C,MAAMlC;AAAA,cACN,MAAM;AAAA,cACN;AAAA,YACF,CAAC;AAAA,UACH,OAAO;AACL,gBAAI,QAAQ,YAAY,SAAS,IAAI,YAAY,IAAI,SAAU,KAAK,GAAG;AACrE,qBAAoB,gBAAM,qBAAc,SAAS;AAAA,gBAC/C,KAAK,KAAK,OAAO,CAAC;AAAA,gBAClB,MAAMA;AAAA,gBACN,MAAM;AAAA,gBACN,OAAO,OAAO,eAAe,GAAG;AAAA,cAClC,CAAC;AAAA,YACH,CAAC,IAAiB,gBAAM,qBAAc,SAAS;AAAA,cAC7C,MAAMA;AAAA,cACN,MAAM;AAAA,cACN,OAAO;AAAA,YACT,CAAC;AACD,mBAAoB,gBAAM,qBAAc,OAAO,MAAM,KAAK;AAAA,UAC5D;AAAA,QACF,OAAO;AACL,cAAI,SAAS,YAAY,CAAC,IAAI,KAAK,eAAe,YAAY,CAAC,CAAC,IAAI;AACpE,iBAAoB,gBAAM,qBAAc,SAAS;AAAA,YAC/C,MAAMA;AAAA,YACN,MAAM;AAAA,YACN,OAAO;AAAA,UACT,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,mBAAmB;AACjC,YAAI,cAAc,KAAK;AACvB,YAAI,eAAe,KAAK,OACtB,gBAAgB,aAAa,eAC7B,gBAAgB,aAAa,eAC7B,eAAe,aAAa,cAC5B,YAAY,aAAa,WACzB,cAAc,aAAa;AAC7B,YAAI,mBAAmB,KAAK,oBAAoB;AAChD,eAAoB,gBAAM,qBAAc,cAAc,SAAS,CAAC,GAAG,aAAa;AAAA,UAC9E,IAAI,KAAK,aAAa,aAAa;AAAA,UACnC;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF,CAAC,CAAC;AAAA,MACJ;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASgC,UAAS;AACvB,YAAI,uBAAuB,KAAK,cAAc,GAC5CG,WAAU,qBAAqB,SAC/BC,uBAAsB,qBAAqB,qBAC3CC,mBAAkB,qBAAqB,iBACvCC,kBAAiB,qBAAqB;AACxC,YAAI,gBAAgB,KAAK,OACvB,YAAY,cAAc,WAC1B5B,OAAK,cAAc,IACnBpB,cAAa,cAAc,YAC3B,aAAa,cAAc;AAC7B,YAAI,YAAY,KAAK,MAAM;AAC3B,YAAI,cAAc,KAAK,cAAc,KAAK,eAAe;AACzD,eAAoB,gBAAM,qBAAc+C,kBAAiB,SAAS,CAAC,GAAG,aAAa;AAAA,UACjF;AAAA,UACA,YAAY;AAAA,YACV,IAAI3B;AAAA,YACJ,WAAW,KAAK;AAAA,UAClB;AAAA,UACA,YAAYpB;AAAA,UACZ;AAAA,QACF,CAAC,GAAG,KAAK,iBAAiB,GAAgB,gBAAM,qBAAc6C,UAAS,SAAS,CAAC,GAAG,aAAa;AAAA,UAC/F,UAAU,KAAK;AAAA,UACf,YAAY;AAAA,YACV,aAAa,KAAK;AAAA,YAClB,YAAY,KAAK;AAAA,UACnB;AAAA,UACA,YAAY7C;AAAA,UACZ;AAAA,UACA;AAAA,QACF,CAAC,GAAgB,gBAAM,qBAAcgD,iBAAgB,SAAS,CAAC,GAAG,aAAa;AAAA,UAC7E,YAAYhD;AAAA,QACd,CAAC,GAAG,KAAK,yBAAyB,GAAG,KAAK,YAAY,CAAC,GAAgB,gBAAM,qBAAc8C,sBAAqB,SAAS,CAAC,GAAG,aAAa;AAAA,UACxI,YAAY9C;AAAA,QACd,CAAC,GAAG,KAAK,qBAAqB,GAAG,KAAK,uBAAuB,GAAG,KAAK,yBAAyB,GAAG,KAAK,wBAAwB,CAAC,CAAC,GAAG,KAAK,WAAW,GAAG,KAAK,gBAAgB,CAAC;AAAA,MAC9K;AAAA,IACF,CAAC,GAAG,CAAC;AAAA,MACH,KAAK;AAAA,MACL,OAAO,SAAS,yBAAyB,OAAOK,QAAO;AACrD,YAAI,YAAYA,OAAM,WACpB,0BAA0BA,OAAM,yBAChC,2BAA2BA,OAAM,0BACjC,gBAAgBA,OAAM,eACtB,YAAYA,OAAM,WAClB,iBAAiBA,OAAM;AACzB,YAAIC,WAAU,MAAM,SAClB,QAAQ,MAAM,OACd,aAAa,MAAM,YACnB,aAAa,MAAM,YACnB,UAAU,MAAM;AAClB,YAAI,cAAc,WAAW,KAAK;AAClC,YAAI,sBAAsB,CAAC;AAC3B,YAAI,cAAc,UAAU,UAAU,SAASA,aAAY,UAAU,WAAW,eAAe,UAAU,cAAc,eAAe,UAAU,aAAa;AAC3J,cAAI,mBAAmB,aAAa,sBAAsB,OAAO,WAAW,IAAI,CAAC;AACjF,cAAI,eAAe,0BAA0B,oBAAoBD,QAAO,WAAW,IAAI;AACvF,cAAI,gBAAgB,qBAAqBA,QAAO,gBAAgB;AAChE,gCAAsB;AAAA,YACpB;AAAA,YACA;AAAA,YACA;AAAA,YACA,yBAAyB;AAAA,UAC3B;AAAA,QACF;AAEA,YAAI,wBAAwB,4BAA4B,QAAQ,UAAU,YAAY;AAAA,UACpF,eAAe;AAAA,UACf,0BAA0B;AAAA,QAC5B,IAAI,CAAC;AACL,YAAI,mBAAmB;AACvB,YAAI,eAAe,aAAa;AAChC,YAAI,aAAa,CAAC,cAAc;AAG9B,6BAAmB;AAAA,YACjB,OAAO,aAAa,SAAS,aAAa,YAAY,CAAC,KAAK,IAAI;AAAA,YAChE,SAAS;AAAA,YACT,QAAQ;AAAA,UACV;AACA,yBAAe,CAAC;AAAA,QAClB;AAIA,aAAK,kBAAkB,QAAQ,kBAAkB,SAAS,SAAS,cAAc,YAAY,uBAAuB;AAClH,6BAAmB;AAAA,QACrB;AACA,eAAO,eAAc,eAAc,eAAc,CAAC,GAAG,mBAAmB,GAAG,qBAAqB,GAAG,CAAC,GAAG;AAAA,UACrG,WAAW;AAAA,UACX,eAAe;AAAA,UACf,gBAAgB;AAAA,QAClB,CAAC;AAAA,MACH;AAAA,IACF,CAAC,CAAC;AACF,WAAOG;AAAA,EACT,EAAE,uBAAS;AACX,SAAO,eAAe;;;Adt/EtB,MAAAyC,oBAAO;AAIP,MAAI,qBAAkC,8CAAW,SAAU,OAAO,KAAK;AACrE,QAAI,kBAAkB,gBAAgB,KAAK;AAC3C,WAAoB,gBAAM,qBAAc,QAAQ,SAAS;AAAA,MACvD;AAAA,IACF,GAAG,eAAe,CAAC;AAAA,EACrB,CAAC;AACD,MAAI,uBAAuB;;;AhB7B3B,2BAAkB;AAClB,iCAAwB;;;AsDJjB,WAAS,+BAA+B;AAC7C,QAAI,eAAe;AAAA,MACjB,iBAAiB;AAAA,MACjB,+BAA+B;AAAA,MAC/B,wCAAwC;AAAA,MACxC,gBAAgB;AAAA,MAChB,sBAAsB;AAAA,QACpB;AAAA,UACE,cAAc;AAAA,UACd,iBAAiB;AAAA,UACjB,YAAY;AAAA,UACZ,WAAW;AAAA,QACb;AAAA,MACF;AAAA,MACA,OAAO;AAAA,QACL,eAAe;AAAA,QACf,gBAAgB;AAAA,QAChB,kBAAkB;AAAA,QAClB,cAAc;AAAA,MAChB;AAAA,MACA,YAAY;AAAA,QACV;AAAA,UACE,MAAM;AAAA,UACN,oBAAoB;AAAA,UACpB,QAAQ;AAAA,UACR,gBAAgB;AAAA,UAChB,2BAA2B;AAAA,UAC3B,wBAAwB;AAAA,UACxB,4BAA4B;AAAA,UAC5B,2BAA2B;AAAA,UAC3B,yBAAyB;AAAA,UACzB,MAAM;AAAA,YACJ,aAAa;AAAA,YACb,cAAc;AAAA,YACd,iBAAiB;AAAA,YACjB,OAAO;AAAA,YACP,MAAM;AAAA,YACN,QAAQ;AAAA,YACR,iBAAiB;AAAA,YACjB,UAAU;AAAA,cACR,QAAQ;AAAA,gBACN;AAAA,kBACE,kBAAkB;AAAA,kBAClB,OAAO;AAAA,gBACT;AAAA,gBACA;AAAA,kBACE,kBAAkB;AAAA,kBAClB,OAAO;AAAA,gBACT;AAAA,gBACA;AAAA,kBACE,kBAAkB;AAAA,kBAClB,OAAO;AAAA,gBACT;AAAA,gBACA;AAAA,kBACE,kBAAkB;AAAA,kBAClB,OAAO;AAAA,gBACT;AAAA,cACF;AAAA,cACA,SAAS;AAAA,gBACP;AAAA,kBACE,kBAAkB;AAAA,kBAClB,OAAO;AAAA,gBACT;AAAA,gBACA;AAAA,kBACE,kBAAkB;AAAA,kBAClB,OAAO;AAAA,gBACT;AAAA,gBACA;AAAA,kBACE,kBAAkB;AAAA,kBAClB,OAAO;AAAA,gBACT;AAAA,gBACA;AAAA,kBACE,kBAAkB;AAAA,kBAClB,OAAO;AAAA,gBACT;AAAA,cACF;AAAA,cACA,cAAc;AAAA,gBACZ;AAAA,kBACE,kBAAkB;AAAA,kBAClB,OAAO;AAAA,gBACT;AAAA,gBACA;AAAA,kBACE,kBAAkB;AAAA,kBAClB,OAAO;AAAA,gBACT;AAAA,gBACA;AAAA,kBACE,kBAAkB;AAAA,kBAClB,OAAO;AAAA,gBACT;AAAA,gBACA;AAAA,kBACE,kBAAkB;AAAA,kBAClB,OAAO;AAAA,gBACT;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAoBO,WAAS,gBAAgBC,IAAG;AAGjC,WAAO,WAAWA,KAAI,GAAG,EAAE,QAAQ,CAAC,IAAI;AAAA,EAC1C;AAEO,WAASC,kBAAiBD,IAAG;AAClC,IAAAA,MAAK,KAAK,MAAMA,KAAI,GAAG,IAAI,KAAK,QAAQ,CAAC;AAEzC,QAAGA,KAAI,GAAG;AACR,MAAAA,KAAIA,KAAI;AACR,MAAAA,KAAI,MAAMA,GAAE,SAAS,EAAE,QAAQ,yBAAyB,GAAG,IAAI;AAAA,IACjE,OAAO;AACL,MAAAA,KAAIA,GAAE,SAAS,EAAE,QAAQ,yBAAyB,GAAG;AAAA,IACvD;AAEA,WAAOA;AAAA,EACT;AAEO,WAAS,qBAAqB;AACnC,QAAI,YAAY;AAAA,MACd;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAEA,QAAIE,QAAO,CAAC;AAEZ,aAAQ,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAK;AACxC,MAAAA,MAAK,KAAK;AAAA,QACR,OAAO,UAAU,CAAC;AAAA,QAClB,OAAO,UAAU,CAAC;AAAA,MACpB,CAAC;AAAA,IACH;AAEA,WAAOA;AAAA,EACT;;;AC7KA,MAAAC,iBAAuF;AAEvF,WAASC,SAAQ,QAAQ,gBAAgB;AACvC,QAAI,OAAO,OAAO,KAAK,MAAM;AAE7B,QAAI,OAAO,uBAAuB;AAChC,UAAI,UAAU,OAAO,sBAAsB,MAAM;AACjD,yBAAmB,UAAU,QAAQ,OAAO,SAAU,KAAK;AACzD,eAAO,OAAO,yBAAyB,QAAQ,GAAG,EAAE;AAAA,MACtD,CAAC,IAAI,KAAK,KAAK,MAAM,MAAM,OAAO;AAAA,IACpC;AAEA,WAAO;AAAA,EACT;AAEA,WAASC,gBAAe,QAAQ;AAC9B,aAAS,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAK;AACzC,UAAI,SAAS,QAAQ,UAAU,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC;AACpD,UAAI,IAAID,SAAQ,OAAO,MAAM,GAAG,IAAE,EAAE,QAAQ,SAAU,KAAK;AACzD,QAAAE,iBAAgB,QAAQ,KAAK,OAAO,GAAG,CAAC;AAAA,MAC1C,CAAC,IAAI,OAAO,4BAA4B,OAAO,iBAAiB,QAAQ,OAAO,0BAA0B,MAAM,CAAC,IAAIF,SAAQ,OAAO,MAAM,CAAC,EAAE,QAAQ,SAAU,KAAK;AACjK,eAAO,eAAe,QAAQ,KAAK,OAAO,yBAAyB,QAAQ,GAAG,CAAC;AAAA,MACjF,CAAC;AAAA,IACH;AAEA,WAAO;AAAA,EACT;AAEA,WAASG,iBAAgB,UAAU,aAAa;AAC9C,QAAI,EAAE,oBAAoB,cAAc;AACtC,YAAM,IAAI,UAAU,mCAAmC;AAAA,IACzD;AAAA,EACF;AAEA,WAASC,mBAAkB,QAAQ,OAAO;AACxC,aAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,UAAI,aAAa,MAAM,CAAC;AACxB,iBAAW,aAAa,WAAW,cAAc;AACjD,iBAAW,eAAe;AAC1B,UAAI,WAAW;AAAY,mBAAW,WAAW;AACjD,aAAO,eAAe,QAAQ,WAAW,KAAK,UAAU;AAAA,IAC1D;AAAA,EACF;AAEA,WAASC,cAAa,aAAa,YAAY,aAAa;AAC1D,QAAI;AAAY,MAAAD,mBAAkB,YAAY,WAAW,UAAU;AACnE,QAAI;AAAa,MAAAA,mBAAkB,aAAa,WAAW;AAC3D,WAAO,eAAe,aAAa,aAAa;AAAA,MAC9C,UAAU;AAAA,IACZ,CAAC;AACD,WAAO;AAAA,EACT;AAEA,WAASF,iBAAgB,KAAK,KAAK,OAAO;AACxC,QAAI,OAAO,KAAK;AACd,aAAO,eAAe,KAAK,KAAK;AAAA,QAC9B;AAAA,QACA,YAAY;AAAA,QACZ,cAAc;AAAA,QACd,UAAU;AAAA,MACZ,CAAC;AAAA,IACH,OAAO;AACL,UAAI,GAAG,IAAI;AAAA,IACb;AAEA,WAAO;AAAA,EACT;AAEA,WAASI,YAAW;AAClB,IAAAA,YAAW,OAAO,UAAU,SAAU,QAAQ;AAC5C,eAAS,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAK;AACzC,YAAI,SAAS,UAAU,CAAC;AAExB,iBAAS,OAAO,QAAQ;AACtB,cAAI,OAAO,UAAU,eAAe,KAAK,QAAQ,GAAG,GAAG;AACrD,mBAAO,GAAG,IAAI,OAAO,GAAG;AAAA,UAC1B;AAAA,QACF;AAAA,MACF;AAEA,aAAO;AAAA,IACT;AAEA,WAAOA,UAAS,MAAM,MAAM,SAAS;AAAA,EACvC;AAEA,WAASC,WAAU,UAAU,YAAY;AACvC,QAAI,OAAO,eAAe,cAAc,eAAe,MAAM;AAC3D,YAAM,IAAI,UAAU,oDAAoD;AAAA,IAC1E;AAEA,aAAS,YAAY,OAAO,OAAO,cAAc,WAAW,WAAW;AAAA,MACrE,aAAa;AAAA,QACX,OAAO;AAAA,QACP,UAAU;AAAA,QACV,cAAc;AAAA,MAChB;AAAA,IACF,CAAC;AACD,WAAO,eAAe,UAAU,aAAa;AAAA,MAC3C,UAAU;AAAA,IACZ,CAAC;AACD,QAAI;AAAY,MAAAC,iBAAgB,UAAU,UAAU;AAAA,EACtD;AAEA,WAASC,iBAAgBC,IAAG;AAC1B,IAAAD,mBAAkB,OAAO,iBAAiB,OAAO,iBAAiB,SAASA,kBAAgBC,IAAG;AAC5F,aAAOA,GAAE,aAAa,OAAO,eAAeA,EAAC;AAAA,IAC/C;AACA,WAAOD,iBAAgBC,EAAC;AAAA,EAC1B;AAEA,WAASF,iBAAgBE,IAAG,GAAG;AAC7B,IAAAF,mBAAkB,OAAO,kBAAkB,SAASA,kBAAgBE,IAAGC,IAAG;AACxE,MAAAD,GAAE,YAAYC;AACd,aAAOD;AAAA,IACT;AAEA,WAAOF,iBAAgBE,IAAG,CAAC;AAAA,EAC7B;AAEA,WAASE,6BAA4B;AACnC,QAAI,OAAO,YAAY,eAAe,CAAC,QAAQ;AAAW,aAAO;AACjE,QAAI,QAAQ,UAAU;AAAM,aAAO;AACnC,QAAI,OAAO,UAAU;AAAY,aAAO;AAExC,QAAI;AACF,cAAQ,UAAU,QAAQ,KAAK,QAAQ,UAAU,SAAS,CAAC,GAAG,WAAY;AAAA,MAAC,CAAC,CAAC;AAC7E,aAAO;AAAA,IACT,SAASC,IAAG;AACV,aAAO;AAAA,IACT;AAAA,EACF;AAEA,WAASC,+BAA8B,QAAQ,UAAU;AACvD,QAAI,UAAU;AAAM,aAAO,CAAC;AAC5B,QAAI,SAAS,CAAC;AACd,QAAI,aAAa,OAAO,KAAK,MAAM;AACnC,QAAI,KAAK;AAET,SAAK,IAAI,GAAG,IAAI,WAAW,QAAQ,KAAK;AACtC,YAAM,WAAW,CAAC;AAClB,UAAI,SAAS,QAAQ,GAAG,KAAK;AAAG;AAChC,aAAO,GAAG,IAAI,OAAO,GAAG;AAAA,IAC1B;AAEA,WAAO;AAAA,EACT;AAEA,WAASC,0BAAyB,QAAQ,UAAU;AAClD,QAAI,UAAU;AAAM,aAAO,CAAC;AAE5B,QAAI,SAASD,+BAA8B,QAAQ,QAAQ;AAE3D,QAAI,KAAK;AAET,QAAI,OAAO,uBAAuB;AAChC,UAAI,mBAAmB,OAAO,sBAAsB,MAAM;AAE1D,WAAK,IAAI,GAAG,IAAI,iBAAiB,QAAQ,KAAK;AAC5C,cAAM,iBAAiB,CAAC;AACxB,YAAI,SAAS,QAAQ,GAAG,KAAK;AAAG;AAChC,YAAI,CAAC,OAAO,UAAU,qBAAqB,KAAK,QAAQ,GAAG;AAAG;AAC9D,eAAO,GAAG,IAAI,OAAO,GAAG;AAAA,MAC1B;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAEA,WAASE,wBAAuBC,OAAM;AACpC,QAAIA,UAAS,QAAQ;AACnB,YAAM,IAAI,eAAe,2DAA2D;AAAA,IACtF;AAEA,WAAOA;AAAA,EACT;AAEA,WAASC,4BAA2BD,OAAM,MAAM;AAC9C,QAAI,SAAS,OAAO,SAAS,YAAY,OAAO,SAAS,aAAa;AACpE,aAAO;AAAA,IACT,WAAW,SAAS,QAAQ;AAC1B,YAAM,IAAI,UAAU,0DAA0D;AAAA,IAChF;AAEA,WAAOD,wBAAuBC,KAAI;AAAA,EACpC;AAEA,WAASE,cAAa,SAAS;AAC7B,QAAI,4BAA4BP,2BAA0B;AAE1D,WAAO,SAAS,uBAAuB;AACrC,UAAI,QAAQH,iBAAgB,OAAO,GAC/B;AAEJ,UAAI,2BAA2B;AAC7B,YAAI,YAAYA,iBAAgB,IAAI,EAAE;AAEtC,iBAAS,QAAQ,UAAU,OAAO,WAAW,SAAS;AAAA,MACxD,OAAO;AACL,iBAAS,MAAM,MAAM,MAAM,SAAS;AAAA,MACtC;AAEA,aAAOS,4BAA2B,MAAM,MAAM;AAAA,IAChD;AAAA,EACF;AAEA,WAASE,gBAAe,KAAK,GAAG;AAC9B,WAAOC,iBAAgB,GAAG,KAAKC,uBAAsB,KAAK,CAAC,KAAKC,6BAA4B,KAAK,CAAC,KAAKC,kBAAiB;AAAA,EAC1H;AAEA,WAASC,oBAAmB,KAAK;AAC/B,WAAOC,oBAAmB,GAAG,KAAKC,kBAAiB,GAAG,KAAKJ,6BAA4B,GAAG,KAAKK,oBAAmB;AAAA,EACpH;AAEA,WAASF,oBAAmB,KAAK;AAC/B,QAAI,MAAM,QAAQ,GAAG;AAAG,aAAOG,mBAAkB,GAAG;AAAA,EACtD;AAEA,WAASR,iBAAgB,KAAK;AAC5B,QAAI,MAAM,QAAQ,GAAG;AAAG,aAAO;AAAA,EACjC;AAEA,WAASM,kBAAiB,MAAM;AAC9B,QAAI,OAAO,WAAW,eAAe,KAAK,OAAO,QAAQ,KAAK,QAAQ,KAAK,YAAY,KAAK;AAAM,aAAO,MAAM,KAAK,IAAI;AAAA,EAC1H;AAEA,WAASL,uBAAsB,KAAK,GAAG;AACrC,QAAI,KAAK,OAAO,OAAO,OAAO,OAAO,WAAW,eAAe,IAAI,OAAO,QAAQ,KAAK,IAAI,YAAY;AAEvG,QAAI,MAAM;AAAM;AAChB,QAAI,OAAO,CAAC;AACZ,QAAI,KAAK;AACT,QAAI,KAAK;AAET,QAAI,IAAI;AAER,QAAI;AACF,WAAK,KAAK,GAAG,KAAK,GAAG,GAAG,EAAE,MAAM,KAAK,GAAG,KAAK,GAAG,OAAO,KAAK,MAAM;AAChE,aAAK,KAAK,GAAG,KAAK;AAElB,YAAI,KAAK,KAAK,WAAW;AAAG;AAAA,MAC9B;AAAA,IACF,SAAS,KAAK;AACZ,WAAK;AACL,WAAK;AAAA,IACP,UAAE;AACA,UAAI;AACF,YAAI,CAAC,MAAM,GAAG,QAAQ,KAAK;AAAM,aAAG,QAAQ,EAAE;AAAA,MAChD,UAAE;AACA,YAAI;AAAI,gBAAM;AAAA,MAChB;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAEA,WAASC,6BAA4Bb,IAAG,QAAQ;AAC9C,QAAI,CAACA;AAAG;AACR,QAAI,OAAOA,OAAM;AAAU,aAAOmB,mBAAkBnB,IAAG,MAAM;AAC7D,QAAIoB,KAAI,OAAO,UAAU,SAAS,KAAKpB,EAAC,EAAE,MAAM,GAAG,EAAE;AACrD,QAAIoB,OAAM,YAAYpB,GAAE;AAAa,MAAAoB,KAAIpB,GAAE,YAAY;AACvD,QAAIoB,OAAM,SAASA,OAAM;AAAO,aAAO,MAAM,KAAKpB,EAAC;AACnD,QAAIoB,OAAM,eAAe,2CAA2C,KAAKA,EAAC;AAAG,aAAOD,mBAAkBnB,IAAG,MAAM;AAAA,EACjH;AAEA,WAASmB,mBAAkB,KAAK,KAAK;AACnC,QAAI,OAAO,QAAQ,MAAM,IAAI;AAAQ,YAAM,IAAI;AAE/C,aAAS,IAAI,GAAG,OAAO,IAAI,MAAM,GAAG,GAAG,IAAI,KAAK;AAAK,WAAK,CAAC,IAAI,IAAI,CAAC;AAEpE,WAAO;AAAA,EACT;AAEA,WAASD,sBAAqB;AAC5B,UAAM,IAAI,UAAU,sIAAsI;AAAA,EAC5J;AAEA,WAASJ,oBAAmB;AAC1B,UAAM,IAAI,UAAU,2IAA2I;AAAA,EACjK;AAEA,MAAI,iBAA8B,gBAAAnB,cAAa,SAAS0B,gBAAeC,OAAM;AAC3E,QAAI,QAAQ;AAEZ,QAAI,gBAAgBA,MAAK,UACrB,YAAY,kBAAkB,SAAS,CAAC,IAAI,eAC5C,wBAAwBA,MAAK,uBAC7B,wBAAwB,0BAA0B,SAAS,QAAQ,uBACnE,wBAAwBA,MAAK,mBAC7B,oBAAoB,0BAA0B,SAAS,QAAQ;AAEnE,IAAA7B,iBAAgB,MAAM4B,eAAc;AAEpC,IAAA7B,iBAAgB,MAAM,YAAY,MAAM;AAExC,IAAAA,iBAAgB,MAAM,yBAAyB,MAAM;AAErD,IAAAA,iBAAgB,MAAM,qBAAqB,MAAM;AAEjD,IAAAA,iBAAgB,MAAM,kBAAkB,SAAU,MAAM;AACtD,UAAI,MAAM,eAAe,IAAI,GAAG;AAC9B,eAAO;AAAA,MACT;AAEA,UAAI,aAAa,MAAM,eAAe,IAAI;AAE1C,UAAI,CAAC,YAAY;AACf,eAAO,MAAM,QAAQ;AAAA,UACnB,UAAU,MAAM,wBAAwB,CAAC,EAAE,OAAOuB,oBAAmB,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;AAAA,QACvG,CAAC;AAAA,MACH,OAAO;AACL,eAAO,MAAM,QAAQ;AAAA,UACnB,UAAU,MAAM,SAAS,OAAO,SAAU,cAAc;AACtD,mBAAO,iBAAiB;AAAA,UAC1B,CAAC;AAAA,QACH,CAAC;AAAA,MACH;AAAA,IACF,CAAC;AAED,IAAAvB,iBAAgB,MAAM,kBAAkB,SAAU,MAAM;AACtD,UAAI,aAAa,MAAM,eAAe,IAAI;AAE1C,UAAI,oBAAoB,MAAM,SAAS,WAAW;AAClD,aAAO,QAAQ,cAAc,CAAC,MAAM,qBAAqB,iBAAiB;AAAA,IAC5E,CAAC;AAED,IAAAA,iBAAgB,MAAM,kBAAkB,SAAU,MAAM;AACtD,aAAO,MAAM,SAAS,QAAQ,IAAI,MAAM;AAAA,IAC1C,CAAC;AAED,IAAAA,iBAAgB,MAAM,sBAAsB,SAAU,MAAM,wBAAwB;AAClF,UAAI,WAAW,2BAA2B,QAAQ,2BAA2B,SAAS,yBAAyB,MAAM,eAAe,IAAI;AACxI,aAAO;AAAA,QACL,MAAM,MAAM,wBAAwB,SAAY;AAAA,QAChD,eAAe,MAAM,wBAAwB,CAAC,WAAW;AAAA,QACzD,mBAAmB,MAAM,YAAY,IAAI;AAAA,QACzC,IAAI,MAAM,WAAW,IAAI;AAAA,QACzB,QAAQ,WAAW,SAAY;AAAA,MACjC;AAAA,IACF,CAAC;AAED,IAAAA,iBAAgB,MAAM,wBAAwB,WAAY;AACxD,aAAO;AAAA,QACL,MAAM;AAAA,MACR;AAAA,IACF,CAAC;AAED,IAAAA,iBAAgB,MAAM,uBAAuB,SAAU,MAAM,wBAAwB;AACnF,UAAI,WAAW,2BAA2B,QAAQ,2BAA2B,SAAS,yBAAyB,MAAM,eAAe,IAAI;AAExI,UAAI,WAAW,MAAM,eAAe,IAAI;AAExC,aAAO;AAAA,QACL,IAAI,MAAM,YAAY,IAAI;AAAA,QAC1B,iBAAiB;AAAA,QACjB,iBAAiB;AAAA,QACjB,iBAAiB,MAAM,WAAW,IAAI;AAAA,QACtC,MAAM;AAAA,QACN,UAAU;AAAA,MACZ;AAAA,IACF,CAAC;AAED,IAAAA,iBAAgB,MAAM,cAAc,SAAU+B,MAAI;AAChD,aAAO,oBAAoB,OAAOA,IAAE;AAAA,IACtC,CAAC;AAED,IAAA/B,iBAAgB,MAAM,eAAe,SAAU+B,MAAI;AACjD,aAAO,sBAAsB,OAAOA,IAAE;AAAA,IACxC,CAAC;AAED,IAAA/B,iBAAgB,MAAM,WAAW,SAAU,MAAM;AAC/C,aAAO,IAAI6B,gBAAe9B,gBAAe;AAAA,QACvC,UAAU,MAAM;AAAA,QAChB,uBAAuB,MAAM;AAAA,QAC7B,mBAAmB,MAAM;AAAA,MAC3B,GAAG,IAAI,CAAC;AAAA,IACV,CAAC;AAED,SAAK,WAAW;AAChB,SAAK,wBAAwB;AAC7B,SAAK,oBAAoB;AAAA,EAC3B,CAAC;AAED,MAAI,UAAuB,kDAAc,IAAI;AAC7C,MAAI,WAAwB,yBAAU,sBAAsB;AAC1D,IAAAM,WAAU2B,WAAU,oBAAoB;AAExC,QAAI,SAASf,cAAae,SAAQ;AAElC,aAASA,YAAW;AAClB,UAAI;AAEJ,MAAA/B,iBAAgB,MAAM+B,SAAQ;AAE9B,eAAS,OAAO,UAAU,QAAQ,OAAO,IAAI,MAAM,IAAI,GAAG,OAAO,GAAG,OAAO,MAAM,QAAQ;AACvF,aAAK,IAAI,IAAI,UAAU,IAAI;AAAA,MAC7B;AAEA,cAAQ,OAAO,KAAK,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,IAAI,CAAC;AAErD,MAAAhC,iBAAgBc,wBAAuB,KAAK,GAAG,SAAS,IAAI,eAAe;AAAA,QACzE,UAAU,MAAM,MAAM;AAAA,QACtB,uBAAuB,MAAM,MAAM;AAAA,QACnC,mBAAmB,MAAM,MAAM;AAAA,MACjC,CAAC,CAAC;AAEF,MAAAd,iBAAgBc,wBAAuB,KAAK,GAAG,kBAAkB,SAAU,KAAK;AAC9E,cAAM,SAAS,SAAUmB,QAAO;AAC9B,iBAAOA,OAAM,eAAe,GAAG;AAAA,QACjC,GAAG,WAAY;AACb,cAAI,MAAM,MAAM,UAAU;AACxB,kBAAM,MAAM,SAAS,MAAM,MAAM,QAAQ;AAAA,UAC3C;AAAA,QACF,CAAC;AAAA,MACH,CAAC;AAED,MAAAjC,iBAAgBc,wBAAuB,KAAK,GAAG,kBAAkB,SAAU,KAAK;AAC9E,eAAO,MAAM,MAAM,eAAe,GAAG;AAAA,MACvC,CAAC;AAED,MAAAd,iBAAgBc,wBAAuB,KAAK,GAAG,kBAAkB,SAAU,KAAK;AAC9E,eAAO,MAAM,MAAM,eAAe,GAAG;AAAA,MACvC,CAAC;AAED,MAAAd,iBAAgBc,wBAAuB,KAAK,GAAG,sBAAsB,SAAU,KAAK,wBAAwB;AAC1G,eAAO,MAAM,MAAM,mBAAmB,KAAK,sBAAsB;AAAA,MACnE,CAAC;AAED,MAAAd,iBAAgBc,wBAAuB,KAAK,GAAG,wBAAwB,WAAY;AAEjF,eAAO,MAAM,MAAM,qBAAqB;AAAA,MAC1C,CAAC;AAED,MAAAd,iBAAgBc,wBAAuB,KAAK,GAAG,uBAAuB,SAAU,KAAK,wBAAwB;AAC3G,eAAO,MAAM,MAAM,oBAAoB,KAAK,sBAAsB;AAAA,MACpE,CAAC;AAED,aAAO;AAAA,IACT;AAEA,IAAAX,cAAa6B,WAAU,CAAC;AAAA,MACtB,KAAK;AAAA,MACL,OAAO,SAASE,UAAS;AACvB,YAAI,cAAc,KAAK,OACnB,oBAAoB,YAAY,mBAChC,wBAAwB,YAAY;AACxC,eAAoB,kDAAc,QAAQ,UAAU;AAAA,UAClD,OAAO;AAAA,YACL;AAAA,YACA;AAAA,YACA,gBAAgB,KAAK;AAAA,YACrB,gBAAgB,KAAK;AAAA,YACrB,gBAAgB,KAAK;AAAA,YACrB,oBAAoB,KAAK;AAAA,YACzB,sBAAsB,KAAK;AAAA,YAC3B,qBAAqB,KAAK;AAAA,UAC5B;AAAA,QACF,GAAG,KAAK,MAAM,YAAY,IAAI;AAAA,MAChC;AAAA,IACF,CAAC,CAAC;AAEF,WAAOF;AAAA,EACT,EAAE,4BAAa;AAEf,EAAAhC,iBAAgB,UAAU,gBAAgB;AAAA,IACxC,uBAAuB;AAAA,IACvB,mBAAmB;AAAA,EACrB,CAAC;AAED,MAAImC,YAAwB,yBAAU,uBAAuB;AAC3D,IAAA9B,WAAU8B,WAAU,qBAAqB;AAEzC,QAAI,UAAUlB,cAAakB,SAAQ;AAEnC,aAASA,YAAW;AAClB,UAAI;AAEJ,MAAAlC,iBAAgB,MAAMkC,SAAQ;AAE9B,eAAS,QAAQ,UAAU,QAAQ,OAAO,IAAI,MAAM,KAAK,GAAG,QAAQ,GAAG,QAAQ,OAAO,SAAS;AAC7F,aAAK,KAAK,IAAI,UAAU,KAAK;AAAA,MAC/B;AAEA,eAAS,QAAQ,KAAK,MAAM,SAAS,CAAC,IAAI,EAAE,OAAO,IAAI,CAAC;AAExD,MAAAnC,iBAAgBc,wBAAuB,MAAM,GAAG,kBAAkB,SAAU,WAAW;AACrF,eAAO,YAAY,OAAO,MAAM,SAAS,SAAS,IAAI;AAAA,MACxD,CAAC;AAED,aAAO;AAAA,IACT;AAEA,IAAAX,cAAagC,WAAU,CAAC;AAAA,MACtB,KAAK;AAAA,MACL,OAAO,SAASD,UAAS;AACvB,eAAoB,kDAAc,QAAQ,UAAU,MAAM,KAAK,cAAc;AAAA,MAC/E;AAAA,IACF,CAAC,CAAC;AAEF,WAAOC;AAAA,EACT,EAAE,4BAAa;AAEf,MAAIC,aAAY,CAAC,aAAa,yBAAyB,qBAAqB,YAAY,aAAa;AAErG,MAAI,YAAY,SAASC,WAAUP,OAAM;AACvC,QAAI,iBAAiBA,MAAK,WACtB,YAAY,mBAAmB,SAAS,cAAc,gBACtD,wBAAwBA,MAAK,uBAC7B,oBAAoBA,MAAK,mBACzBQ,YAAWR,MAAK,UAChB,cAAcA,MAAK,aACnB,OAAOjB,0BAAyBiB,OAAMM,UAAS;AAEnD,WAAoB,kDAAc,UAAU;AAAA,MAC1C;AAAA,MACA;AAAA,MACA;AAAA,MACA,UAAUE;AAAA,IACZ,GAAgB,kDAAc,OAAOlC,UAAS;AAAA,MAC5C,4BAA4B;AAAA,MAC5B;AAAA,IACF,GAAG,IAAI,CAAC,CAAC;AAAA,EACX;AAEA,MAAI;AAEJ,GAAC,SAAUmC,cAAa;AACtB,IAAAA,aAAY,WAAW,IAAI;AAC3B,IAAAA,aAAY,eAAe,IAAI;AAC/B,IAAAA,aAAY,qBAAqB,IAAI;AACrC,IAAAA,aAAY,sBAAsB,IAAI;AACtC,IAAAA,aAAY,oBAAoB,IAAI;AAAA,EACtC,GAAG,gBAAgB,cAAc,CAAC,EAAE;AAEpC,MAAI,gBAAgB;AAIpB,MAAI,UAAU;AACd,WAAS,qBAAqB;AAC5B,QAAI,UAAU;AACd,cAAU,UAAU;AACpB,WAAO,OAAO,OAAO,OAAO;AAAA,EAC9B;AAIA,MAAI,YAAY,wBAAS;AAIzB,MAAI,UAAU;AACd,WAAS,kBAAkB,QAAQ;AACjC,QAAI,WAAW,MAAM,QAAQ,KAAK,MAAM,GAAG;AACzC,cAAQ,MAAM,gDAAiD,OAAO,QAAQ,oCAAqC,CAAC;AACpH,aAAO;AAAA,IACT;AAEA,WAAO;AAAA,EACT;AAEA,MAAI,YAAyB,kDAAc,IAAI;AAE/C,MAAI,aAAa,SAASC,UAASC,OAAM;AACvC,QAAI,WAAWA,MAAK,UAChB,OAAOA,MAAK,MACZ,mBAAmBA,MAAK,kBACxB,yBAAyBA,MAAK;AAElC,QAAI,iBAAiB,SAASC,kBAAiB;AAC7C,uBAAiB,eAAe,IAAI;AAAA,IACtC;AAEA,QAAI,iBAAiB,SAASC,gBAAeC,mBAAkB;AAC7D,UAAI,WAAW,2BAA2B,QAAQ,2BAA2B,SAAS,yBAAyBA,kBAAiB,eAAe,IAAI;AACnJ,UAAI,WAAWA,kBAAiB,eAAe,IAAI;AACnD,UAAI,kBAAkBA,kBAAiB,mBAAmB,MAAM,sBAAsB;AACtF,UAAI,oBAAoBA,kBAAiB,qBAAqB,IAAI;AAClE,UAAI,mBAAmBA,kBAAiB,oBAAoB,MAAM,sBAAsB;AACxF,aAAoB,kDAAc,UAAU,UAAU;AAAA,QACpD,OAAO;AAAA,UACL;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,MACF,GAAG,QAAQ;AAAA,IACb;AAEA,WAAoB,kDAAcC,WAAU,MAAM,cAAc;AAAA,EAClE;AAEA,MAAI,kBAAkB,SAASC,iBAAgB,OAAO;AACpD,WAAoB,kDAAcD,WAAU,MAAM,SAAU,kBAAkB;AAC5E,aAAoB,kDAAc,YAAYE,UAAS,CAAC,GAAG,OAAO;AAAA,QAChE;AAAA,MACF,CAAC,CAAC;AAAA,IACJ,CAAC;AAAA,EACH;AACA,MAAI,aAAa,SAASF,UAASG,QAAO;AACxC,QAAI,WAAWA,OAAM;AAErB,QAAI,iBAAiB,SAASL,gBAAe,WAAW;AACtD,aAAO,YAAY,SAAS,SAAS,IAAI;AAAA,IAC3C;AAEA,WAAoB,kDAAc,UAAU,UAAU,MAAM,cAAc;AAAA,EAC5E;AAEA,MAAIM,eAAc,CAAC,QAAQ,0BAA0B,aAAa,iBAAiB;AAEnF,MAAI,gBAAgB,SAASC,eAAcT,OAAM;AAC/C,QAAI,aAAaA,MAAK,MAClB,yBAAyBA,MAAK,wBAC9B,iBAAiBA,MAAK,WACtB,YAAY,mBAAmB,SAAS,oBAAoB,gBAC5D,kBAAkBA,MAAK,iBACvB,OAAOU,0BAAyBV,OAAMQ,YAAW;AAErD,QAAI,gBAAY,yBAAS,UAAU,CAAC,GAChC,aAAaG,gBAAe,WAAW,CAAC,GACxC,eAAe,WAAW,CAAC;AAE/B,QAAI,OAAO,eAAe,QAAQ,eAAe,SAAS,aAAa;AAEvE,QAAI,iBAAiB,SAAST,gBAAe,aAAa;AACxD,UAAI,WAAW,YAAY;AAC3B,UAAI,KAAK,YAAY,kBAAkB,kBAAkB;AACzD,aAAoB,kDAAc,OAAOI,UAAS;AAAA,QAChD,4BAA4B;AAAA,QAC5B,WAAW;AAAA,MACb,GAAG,IAAI,CAAC;AAAA,IACV;AAEA,sBAAkB,KAAK,SAAS,CAAC;AAEjC,QAAI,KAAK,IAAI;AACX,wBAAkB,KAAK,EAAE;AAAA,IAC3B;AAEA,WAAoB,kDAAc,iBAAiB;AAAA,MACjD;AAAA,MACA;AAAA,IACF,GAAgB,kDAAc,YAAY,MAAM,cAAc,CAAC;AAAA,EACjE;AAEA,gBAAc,cAAc,cAAc;AAE1C,WAAS,oBAAoB,IAAI;AAC/B,WAAO,OAAO,GAAG,QAAQ,wCAAwC,IAAI,KAAK,oBAAoB,GAAG,aAAa;AAAA,EAChH;AACA,WAAS,kBAAkB,MAAM;AAC/B,QAAI,kBAAkB,oBAAoB,IAAI;AAC9C,WAAO,mBAAmB,MAAM,KAAK,gBAAgB,iBAAiB,kDAAkD,CAAC;AAAA,EAC3H;AACA,WAAS,oBAAoB,MAAM;AACjC,QAAI,WAAW,kBAAkB,IAAI,KAAK,CAAC;AAC3C,QAAI,QAAQ,SAAS,CAAC;AAEtB,QAAI,OAAO;AACT,YAAM,MAAM;AAAA,IACd;AAAA,EACF;AACA,WAAS,mBAAmB,MAAM;AAChC,QAAI,WAAW,kBAAkB,IAAI,KAAK,CAAC;AAC3C,QAAI,OAAO,SAAS,SAAS,SAAS,CAAC;AAEvC,QAAI,MAAM;AACR,WAAK,MAAM;AAAA,IACb;AAAA,EACF;AACA,WAAS,mBAAmB,MAAM;AAChC,QAAI,WAAW,kBAAkB,IAAI,KAAK,CAAC;AAC3C,QAAI,eAAe,SAAS,QAAQ,IAAI;AAExC,QAAI,iBAAiB,IAAI;AACvB,UAAIM,QAAO,SAAS,eAAe,CAAC;AAEpC,UAAIA,OAAM;AACR,QAAAA,MAAK,MAAM;AAAA,MACb;AAAA,IACF;AAAA,EACF;AACA,WAAS,uBAAuB,MAAM;AACpC,QAAI,WAAW,kBAAkB,IAAI,KAAK,CAAC;AAC3C,QAAI,eAAe,SAAS,QAAQ,IAAI;AAExC,QAAI,iBAAiB,IAAI;AACvB,UAAI,WAAW,SAAS,eAAe,CAAC;AAExC,UAAI,UAAU;AACZ,iBAAS,MAAM;AAAA,MACjB;AAAA,IACF;AAAA,EACF;AAEA,MAAI,WAAW;AAAA,IACb,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,OAAO;AAAA,IACP,kBAAkB;AAAA,IAClB,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,EACT;AAEA,MAAIC,eAAc,CAAC,kBAAkB,WAAW;AAEhD,MAAI,sBAAsB,SAASC,qBAAoBd,OAAM;AAC3D,QAAI,iBAAiBA,MAAK,gBACtB,iBAAiBA,MAAK,WACtB,YAAY,mBAAmB,SAAS,sBAAsB,gBAC9D,OAAOU,0BAAyBV,OAAMa,YAAW;AAErD,QAAI,iBAAiB,SAASE,gBAAe,KAAK;AAChD,UAAI,UAAU,IAAI;AAElB,UAAI,YAAY,SAAS,SAAS,YAAY,SAAS,SAAS,YAAY,SAAS,kBAAkB;AACrG,YAAI,eAAe;AACnB,uBAAe;AAAA,MACjB;AAQA,UAAI,IAAI,kBAAkB,aAAa;AACrC,gBAAQ,SAAS;AAAA,UACf,KAAK,SAAS,MACZ;AACE,gBAAI,eAAe;AACnB,gCAAoB,IAAI,MAAM;AAC9B;AAAA,UACF;AAAA,UAEF,KAAK,SAAS,KACZ;AACE,gBAAI,eAAe;AACnB,+BAAmB,IAAI,MAAM;AAC7B;AAAA,UACF;AAAA,UAEF,KAAK,SAAS;AAAA,UACd,KAAK,SAAS,IACZ;AACE,gBAAI,eAAe;AACnB,mCAAuB,IAAI,MAAM;AACjC;AAAA,UACF;AAAA,UAEF,KAAK,SAAS;AAAA,UACd,KAAK,SAAS,MACZ;AACE,gBAAI,eAAe;AACnB,+BAAmB,IAAI,MAAM;AAC7B;AAAA,UACF;AAAA,QACJ;AAAA,MACF;AAAA,IACF;AAEA,QAAI,KAAK,IAAI;AACX,wBAAkB,KAAK,EAAE;AAAA,IAC3B;AAEA,WAAoB,kDAAc,OAAOT,UAAS;AAAA,MAChD;AAAA,IACF,GAAG,MAAM;AAAA,MACP,MAAM;AAAA,MACN,UAAU;AAAA,MACV,SAAS;AAAA,MACT,WAAW;AAAA,MACX,4BAA4B;AAAA,IAC9B,CAAC,CAAC;AAAA,EACJ;AAEA,MAAI,6BAA6B,SAASU,4BAA2B,OAAO;AAC1E,WAAoB,kDAAc,YAAY,MAAM,SAAU,aAAa;AACzE,UAAI,iBAAiB,YAAY,gBAC7B,mBAAmB,YAAY;AACnC,aAAoB,kDAAc,qBAAqBV,UAAS;AAAA,QAC9D;AAAA,MACF,GAAG,OAAO,gBAAgB,CAAC;AAAA,IAC7B,CAAC;AAAA,EACH;AAEA,MAAIW,gBAAe;AAAA,IACjB,WAAW;AAAA,IACX,cAAc;AAAA,EAChB;AACA,MAAI,aAAa;AACjB,MAAI,uBAAoC,yBAAU,sBAAsB;AACtE,IAAAC,WAAUC,uBAAsB,oBAAoB;AAEpD,QAAI,SAASC,cAAaD,qBAAoB;AAE9C,aAASA,wBAAuB;AAC9B,UAAI;AAEJ,MAAAE,iBAAgB,MAAMF,qBAAoB;AAE1C,eAAS,OAAO,UAAU,QAAQ,OAAO,IAAI,MAAM,IAAI,GAAG,OAAO,GAAG,OAAO,MAAM,QAAQ;AACvF,aAAK,IAAI,IAAI,UAAU,IAAI;AAAA,MAC7B;AAEA,cAAQ,OAAO,KAAK,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,IAAI,CAAC;AAErD,MAAAG,iBAAgBC,wBAAuB,KAAK,GAAG,OAAO,MAAM;AAE5D,MAAAD,iBAAgBC,wBAAuB,KAAK,GAAG,UAAU,SAAU,KAAK;AACtE,cAAM,MAAM;AAAA,MACd,CAAC;AAED,aAAO;AAAA,IACT;AAEA,IAAAC,cAAaL,uBAAsB,CAAC;AAAA,MAClC,KAAK;AAAA,MACL,OAAO,SAAS,qBAAqB;AACnC,QAAAA,sBAAqB,SAAS,KAAK,GAAG;AAAA,MACxC;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,oBAAoB;AAClC,QAAAA,sBAAqB,SAAS,KAAK,GAAG;AAAA,MACxC;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASM,UAAS;AACvB,eAAoB,kDAAc,OAAOnB,UAAS;AAAA,UAChD,4BAA4B;AAAA,QAC9B,GAAG,KAAK,OAAO;AAAA,UACb,KAAK,KAAK;AAAA,QACZ,CAAC,CAAC;AAAA,MACJ;AAAA,IACF,CAAC,GAAG,CAAC;AAAA,MACH,KAAK;AAAA,MACL,OAAO,SAAS,SAAS,KAAK;AAC5B,YAAI,QAAQ,QAAW;AACrB,gBAAM,IAAI,MAAM,kBAAkB;AAAA,QACpC;AAEA,YAAI,EAAE,IAAI,sBAAsB,KAAK,IAAI,qBAAqB,IAAI,kBAAkB,aAAa,0BAA0B,MAAM,wBAAwB;AACvJ,gBAAM,IAAI,MAAM,UAAU;AAAA,QAC5B;AAAA,MACF;AAAA,IACF,CAAC,CAAC;AAEF,WAAOa;AAAA,EACT,EAAE,4BAAa;AAEf,EAAAG,iBAAgB,sBAAsB,gBAAgBL,aAAY;AAElE,MAAI,8BAA8B,SAASS,6BAA4B,OAAO;AAC5E,WAAoB,kDAAc,YAAY,MAAM,SAAU,aAAa;AACzE,UAAI,oBAAoB,YAAY;AAEpC,UAAI,MAAM,IAAI;AACZ,0BAAkB,MAAM,EAAE;AAAA,MAC5B;AAEA,aAAoB,kDAAc,sBAAsBpB,UAAS,CAAC,GAAG,OAAO,iBAAiB,CAAC;AAAA,IAChG,CAAC;AAAA,EACH;AAEA,8BAA4B,cAAc,cAAc;AAExD,MAAIqB,eAAc,CAAC,aAAa,UAAU,IAAI;AAE9C,MAAI,qBAAqB,SAASC,oBAAmB5B,OAAM;AACzD,QAAI,iBAAiBA,MAAK,WACtB,YAAY,mBAAmB,SAAS,qBAAqB,gBAC7D,SAASA,MAAK,QACd6B,OAAK7B,MAAK,IACV,OAAOU,0BAAyBV,OAAM2B,YAAW;AAErD,QAAI,iBAAiB,SAASzB,gBAAeK,QAAO;AAClD,UAAI,kBAAkBA,OAAM;AAE5B,UAAIsB,MAAI;AACN,0BAAkBA,IAAE;AAAA,MACtB;AAEA,UAAI,QAAQC,gBAAeA,gBAAe,CAAC,GAAG,eAAe,GAAG,CAAC,GAAG;AAAA,QAClE,mBAAmB,SAAS,gBAAgB,iBAAiB,IAAI;AAAA,MACnE,CAAC;AAED,aAAoB,kDAAc,OAAOxB,UAAS;AAAA,QAChD,4BAA4B;AAAA,QAC5B;AAAA,MACF,GAAG,MAAM,OAAO;AAAA,QACd,MAAM,SAAS,WAAW;AAAA,MAC5B,CAAC,CAAC;AAAA,IACJ;AAEA,WAAoB,kDAAc,YAAY,MAAM,cAAc;AAAA,EACpE;;;AvD93BA,MAAM,eAAe;AAAA,IACnB,SAAU;AAAA,MACR,KAAwB;AAAA,MACxB,MAAwB;AAAA,MACxB,OAAwB;AAAA,MACxB,QAAwB;AAAA,MACxB,aAAwB;AAAA,MACxB,WAAwB;AAAA,MACxB,QAAwB;AAAA,MACxB,UAAwB;AAAA,IAC1B;AAAA,EACF;AAIA,MAAqB,eAArB,cAA0C,eAAAyB,QAAM,UAAU;AAAA,IACxD,YAAY,OAAO;AACjB,YAAM,KAAK;AAEX,WAAK,QAAS;AAAA,QACZ,eAAe;AAAA,UACb,IAAI;AAAA,UACJ,MAAM;AAAA,UACN,SAAS,CAAC;AAAA,QACZ;AAAA,QACA,UAAU,CAAC;AAAA,QACX,SAAS,CAAC;AAAA,QACV,MAAM,CACN;AAAA,QACA,mBAAmB,CAAC;AAAA,QACpB,WAAW;AAAA,QACX,8BAA8B;AAAA,MAChC;AAAA,IACF;AAAA,IAEA,oBAAoB;AAClB,UAAI,UAAU;AACd,oBAAAC,QAAE,KAAK;AAAA,QACL,KAAK;AAAA,QACL,SAAS,SAAS,UAAU;AAC1B,cAAI,gBAAgB;AAAA,YAClB,IAAI;AAAA,YACJ,MAAM;AAAA,YACN,SAAS,CAAC;AAAA,UACZ;AAEA,cAAG,SAAS,SAAS,SAAS,GAAG;AAC/B,4BAAgB,SAAS,SAAS,CAAC;AAAA,UACrC;AAEA,kBAAQ,SAAS;AAAA,YACf,UAAU,SAAS;AAAA,YACnB;AAAA,YACA,MAAM;AAAA,cACJ,oBAAoB,SAAS;AAAA,cAC7B,eAAe,SAAS;AAAA,cACxB,WAAW,SAAS;AAAA,cACpB,SAAS,SAAS;AAAA,cAClB,qBAAqB,SAAS;AAAA,YAChC;AAAA,YACA,WAAW;AAAA,UACb,CAAC;AAAA,QACH;AAAA,QACA,OAAO,SAAS,UAAU;AACxB,kBAAQ,IAAI,QAAQ;AACpB,gBAAM,6BAA6B;AAAA,QACrC;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAEA,8BAA8B;AAC5B,WAAK,SAAS;AAAA,QACZ,8BAA8B;AAAA,MAChC,CAAC;AAAA,IACH;AAAA,IAEA,6BAA6B;AAC3B,WAAK,SAAS;AAAA,QACZ,8BAA8B;AAAA,MAChC,CAAC;AAAA,IACH;AAAA,IAEA,wBAAwB,eAAe,OAAO;AAC5C,UAAIC,KAAI,KAAK,MAAM,KAAK;AAExB,UAAI,UAAU,CAAC;AAEf,eAAQ,IAAI,GAAG,IAAIA,GAAE,QAAQ,QAAQ,KAAK;AACxC,iBAAQ,IAAI,GAAG,IAAIA,GAAE,QAAQ,CAAC,EAAE,cAAc,QAAQ,KAAK;AACzD,cAAGA,GAAE,QAAQ,CAAC,EAAE,cAAc,CAAC,EAAE,MAAM,iBAAiBA,GAAE,QAAQ,CAAC,EAAE,SAAS,OAAO;AACnF,qBAAQC,KAAI,GAAGA,KAAID,GAAE,QAAQ,CAAC,EAAE,cAAc,CAAC,EAAE,QAAQ,QAAQC,MAAK;AACpE,sBAAQ,KAAKD,GAAE,QAAQ,CAAC,EAAE,cAAc,CAAC,EAAE,QAAQC,EAAC,CAAC;AAAA,YACvD;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAEA,WAAK,SAAS;AAAA,QACZ,mBAAmB;AAAA,MACrB,CAAC;AAED,cAAQ,IAAI,OAAO;AAEnB,WAAK,2BAA2B;AAAA,IAClC;AAAA,IAEA,oBAAoBD,IAAG;AACrB,UAAI,gBAAgB,KAAK,MAAM;AAE/B,eAAQ,IAAI,GAAG,IAAI,KAAK,MAAM,SAAS,QAAQ,KAAK;AAClD,YAAG,KAAK,MAAM,SAAS,CAAC,EAAE,MAAMA,GAAE,OAAO;AACvC,0BAAgB,KAAK,MAAM,SAAS,CAAC;AAAA,QACvC;AAAA,MACF;AAEA,WAAK,SAAS;AAAA,QACZ;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAEA,oBAAoB;AAClB,UAAI,UAAgB;AACpB,UAAI,gBAAgB,KAAK,MAAM;AAE/B,cAAQ,SAAS;AAAA,QACf,WAAW;AAAA,MACb,CAAC;AAED,oBAAAD,QAAE,KAAK;AAAA,QACL,KAAK;AAAA,QACL,QAAQ;AAAA,QACR,MAAM;AAAA,UACJ,WAAW,cAAc;AAAA,QAC3B;AAAA,QACA,SAAS,SAAS,UAAU;AAC1B,kBAAQ,SAAS;AAAA,YACf,MAAM;AAAA,cACJ,oBAAoB,SAAS;AAAA,cAC7B,eAAe,SAAS;AAAA,cACxB,WAAW,SAAS;AAAA,cACpB,SAAS,SAAS;AAAA,cAClB,qBAAqB,SAAS;AAAA,YAChC;AAAA,YACA,WAAW;AAAA,UACb,CAAC;AAAA,QACH;AAAA,QACA,OAAO,SAAS,UAAU;AACxB,kBAAQ,IAAI,QAAQ;AACpB,gBAAM,yBAAyB;AAAA,QACjC;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAEA,iBAAiB;AACf,UAAIG,SAAQ,KAAK;AAEjB,UAAIC,UAAU;AAAA,QACZ,OAAOD,OAAM,cAAc;AAAA,QAC3B,OAAOA,OAAM,cAAc;AAAA,MAC7B;AAEA,UAAI,gBAAgB,CAAC;AAErB,eAAQ,IAAI,GAAG,IAAI,KAAK,MAAM,SAAS,QAAQ,KAAK;AAClD,sBAAc,KAAK;AAAA,UACjB,OAAO,KAAK,MAAM,SAAS,CAAC,EAAE;AAAA,UAC9B,OAAO,KAAK,MAAM,SAAS,CAAC,EAAE;AAAA,QAChC,CAAC;AAAA,MACH;AAEA,aACE,+BAAAJ,QAAA,cAAC,SAAI,WAAU,SACb,+BAAAA,QAAA,cAAC,SAAI,WAAU,eACb,+BAAAA,QAAA,cAAC,SAAI,WAAU,gBACb,+BAAAA,QAAA,cAAC,eAAM,QAEP,GACA,+BAAAA,QAAA;AAAA,QAAC;AAAA;AAAA,UACC,SAAS;AAAA,UACT,UAAU,KAAK,oBAAoB,KAAK,IAAI;AAAA,UAC5C,OAAOK;AAAA,UACP,UAAU,KAAK,MAAM;AAAA;AAAA,MACvB,CACF,CACF,GACA,+BAAAL,QAAA,cAAC,SAAI,WAAU,cACb,+BAAAA,QAAA,cAAC,SAAI,WAAU,gBACb,+BAAAA,QAAA,cAAC,eAAM,SAEP,GACA,+BAAAA,QAAA,cAAC,UAAE,GACH,+BAAAA,QAAA,cAAC,SAAI,WAAU,kBACb,+BAAAA,QAAA;AAAA,QAAC;AAAA;AAAA,UACC,WAAU;AAAA,UACV,MAAK;AAAA,UACL,SAAS,KAAK,kBAAkB,KAAK,IAAI;AAAA,UACzC,UAAU,KAAK,MAAM;AAAA;AAAA,QAErB,+BAAAA,QAAA,cAAC,UAAK,WAAU,sBAAoB;AAAA,QAAE;AAAA,MAExC,CACF,CACF,CACF,CACF;AAAA,IAEJ;AAAA,IAEA,yBAAyB;AACvB,UAAIE,KAAI,KAAK,MAAM,KAAK;AAExB,UAAG,KAAK,MAAM,WAAW;AACvB,eACE,+BAAAF,QAAA,cAAC,mBAAa;AAAA,MAElB,WAAU,CAACE,IAAG;AACZ,eACE,+BAAAF,QAAA,cAAC,WAAE,eAEH;AAAA,MAEJ,OAAO;AACL,YAAI,kBAAkB,CAAC;AAEvB,QAAAE,GAAE,cAAc,QAAQ,SAASI,IAAG;AAClC,0BAAgB;AAAA,YACd,+BAAAN,QAAA,cAAC,QAAG,KAAK,QAAQM,GAAE,MACjB,+BAAAN,QAAA,cAAC,YACC,+BAAAA,QAAA,cAAC,gBACEM,GAAE,IACL,CACF,GACA,+BAAAN,QAAA,cAAC,QAAG,WAAU,iBACXM,GAAE,YACL,GACA,+BAAAN,QAAA,cAAC,QAAG,WAAU,cACXO,kBAAiBD,GAAE,SAAS,CAC/B,GACA,+BAAAN,QAAA,cAAC,QAAG,WAAU,cACXO,kBAAiBD,GAAE,yBAAyB,CAC/C,GACA,+BAAAN,QAAA,cAAC,QAAG,WAAU,cACXO,kBAAiBD,GAAE,UAAU,CAChC,GACA,+BAAAN,QAAA,cAAC,QAAG,WAAU,iBACZ,+BAAAA,QAAA,cAAC,eACE,gBAAgBM,GAAE,QAAQ,CAC7B,GACA,+BAAAN,QAAA,cAAC,SAAI,WAAU,0BACb,+BAAAA,QAAA,cAAC,SAAI,WAAU,0BAAyB,MAAK,eAAc,OAAO,EAAC,OAAO,KAAK,gBAAgBM,GAAE,QAAQ,EAAC,GAC1G,CACF,CACF,GACA,+BAAAN,QAAA,cAAC,QAAG,WAAU,iBACZ,+BAAAA,QAAA,cAAC,eACE,gBAAgBM,GAAE,EAAE,CACvB,GACA,+BAAAN,QAAA,cAAC,SAAI,WAAU,0BACb,+BAAAA,QAAA,cAAC,SAAI,WAAU,2BAA0B,MAAK,eAAc,OAAO,EAAC,OAAO,KAAK,gBAAgBM,GAAE,EAAE,EAAC,GACrG,CACF,CACF,CACF;AAAA,UACF;AAAA,QACF,CAAC;AAED,eACE,+BAAAN,QAAA,cAAC,aACC,+BAAAA,QAAA,cAAC,YAAG,sBACiBE,GAAE,KACvB,GACA,+BAAAF,QAAA,cAAC,SAAI,WAAU,SACb,+BAAAA,QAAA,cAAC,SAAI,WAAU,SACb,+BAAAA,QAAA,cAAC,YAAG,iBACY,gBAAgBE,GAAE,cAAc,CAChD,GACA,+BAAAF,QAAA,cAAC,SAAI,WAAU,0BACb,+BAAAA,QAAA,cAAC,SAAI,WAAU,0BAAyB,MAAK,eAAc,OAAO,EAAC,OAAO,KAAK,gBAAgBE,GAAE,cAAc,EAAC,GAChH,CACF,CACF,GACA,+BAAAF,QAAA,cAAC,SAAI,WAAU,SACb,+BAAAA,QAAA,cAAC,YAAG,4BACuB,gBAAgBE,GAAE,QAAQ,CACrD,GACA,+BAAAF,QAAA,cAAC,SAAI,WAAU,0BACb,+BAAAA,QAAA,cAAC,SAAI,WAAU,2BAA0B,MAAK,eAAc,OAAO,EAAC,OAAO,KAAK,gBAAgBE,GAAE,QAAQ,EAAC,GAC3G,CACF,CACF,CACF,GACA,+BAAAF,QAAA,cAAC,UAAE,GACH,+BAAAA,QAAA,cAAC,SAAI,WAAU,sBACb,+BAAAA,QAAA,cAAC,WAAM,WAAU,+CACf,+BAAAA,QAAA,cAAC,eACC,+BAAAA,QAAA,cAAC,QAAG,OAAO,EAAC,iBAAiB,WAAW,OAAO,OAAM,KACnD,+BAAAA,QAAA,cAAC,YAAG,cAEJ,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBAAc,cAE5B,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,cAAW,WAEzB,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,cAAW,iBAEzB,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,cAAW,YAEzB,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBAAc,UAE5B,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBAAc,IAE5B,CACF,CACF,GACA,+BAAAA,QAAA,cAAC,eACE,eACH,GACA,+BAAAA,QAAA,cAAC,eACC,+BAAAA,QAAA,cAAC,QAAG,OAAO,EAAC,iBAAiB,UAAS,KACpC,+BAAAA,QAAA,cAAC,YAAG,OAEJ,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACXE,GAAE,kBACL,GACA,+BAAAF,QAAA,cAAC,QAAG,WAAU,cACXO,kBAAiBL,GAAE,eAAe,CACrC,GACA,+BAAAF,QAAA,cAAC,QAAG,WAAU,cACXO,kBAAiBL,GAAE,+BAA+B,CACrD,GACA,+BAAAF,QAAA,cAAC,QAAG,WAAU,cACXO,kBAAiBL,GAAE,gBAAgB,CACtC,GACA,+BAAAF,QAAA,cAAC,QAAG,WAAU,iBACX,gBAAgBE,GAAE,cAAc,GACjC,+BAAAF,QAAA,cAAC,SAAI,WAAU,0BACb,+BAAAA,QAAA,cAAC,SAAI,WAAU,0BAAyB,MAAK,eAAc,OAAO,EAAC,OAAO,KAAK,gBAAgBE,GAAE,cAAc,EAAC,GAChH,CACF,CACF,GACA,+BAAAF,QAAA,cAAC,QAAG,WAAU,iBACX,gBAAgBE,GAAE,QAAQ,GAC3B,+BAAAF,QAAA,cAAC,SAAI,WAAU,0BACb,+BAAAA,QAAA,cAAC,SAAI,WAAU,2BAA0B,MAAK,eAAc,OAAO,EAAC,OAAO,KAAK,gBAAgBE,GAAE,QAAQ,EAAC,GAC3G,CACF,CACF,CACF,CACF,CACF,CACF,CACF;AAAA,MAEJ;AAAA,IACF;AAAA,IAEA,0BAA0B;AACxB,UAAIA,KAAI,KAAK,MAAM,KAAK;AAExB,UAAG,KAAK,MAAM,WAAW;AACvB,eACE,+BAAAF,QAAA,cAAC,mBAAa;AAAA,MAElB,WAAU,CAACE,IAAG;AACZ,eACE,+BAAAF,QAAA,cAAC,WAAE,wCAEH;AAAA,MAEJ,OAAO;AACL,YAAI,OAAQ,CAAC;AAEb,iBAAQ,IAAI,GAAG,IAAIE,GAAE,QAAQ,QAAQ,KAAK;AACxC,cAAI,OAAO,CAAC;AAEZ,mBAAQ,IAAI,GAAG,IAAIA,GAAE,QAAQ,CAAC,EAAE,cAAc,QAAQ,KAAK;AACzD,iBAAK;AAAA,cACH,+BAAAF,QAAA,cAAC,QAAG,KAAK,SAAS,IAAI,MAAME,GAAE,QAAQ,CAAC,EAAE,cAAc,CAAC,EAAE,IAAI,WAAU,iBACtE,+BAAAF,QAAA,cAAC,OAAE,MAAK,KAAI,SAAS,KAAK,wBAAwB,KAAK,MAAME,GAAE,QAAQ,CAAC,EAAE,cAAc,CAAC,EAAE,IAAIA,GAAE,QAAQ,CAAC,EAAE,KAAK,KAC9GA,GAAE,QAAQ,CAAC,EAAE,cAAc,CAAC,EAAE,KACjC,CACF;AAAA,YACF;AAAA,UACF;AAEA,eAAK;AAAA,YACH,+BAAAF,QAAA,cAAC,QAAG,KAAK,yBAAyB,KAChC,+BAAAA,QAAA,cAAC,QAAG,KAAK,eAAe,GAAG,WAAU,iBAClCE,GAAE,QAAQ,CAAC,EAAE,KAChB,GACC,MACD,+BAAAF,QAAA,cAAC,QAAG,KAAK,iBAAiB,GAAG,WAAU,iBACpCE,GAAE,QAAQ,CAAC,EAAE,KAChB,CACF;AAAA,UACF;AAAA,QACF;AAEA,eACE,+BAAAF,QAAA,cAAC,aACC,+BAAAA,QAAA;AAAA,UAAC,mBAAAQ;AAAA,UAAA;AAAA,YACC,QAAQ,KAAK,MAAM;AAAA,YACnB,OAAO;AAAA,YACP,cAAa;AAAA;AAAA,UAEb,+BAAAR,QAAA,cAAC,YAAG,aAEJ;AAAA,UACA,+BAAAA,QAAA,cAAC,UAAE;AAAA,UACH,+BAAAA,QAAA,cAAC,SAAI,WAAU,sBACb,+BAAAA,QAAA,cAAC,WAAM,WAAU,mCACf,+BAAAA,QAAA,cAAC,eACC,+BAAAA,QAAA,cAAC,YACC,+BAAAA,QAAA,cAAC,QAAG,OAAO,MACX,GACA,+BAAAA,QAAA,cAAC,YAAG,MAEJ,CACF,CACF,GACA,+BAAAA,QAAA,cAAC,eAEG,KAAK,MAAM,kBAAkB;AAAA,YAAI,CAAC,GAAGS,WACjC,+BAAAT,QAAA,cAAC,QAAG,KAAK,YAAYS,UACnB,+BAAAT,QAAA,cAAC,QAAG,WAAU,iBACZ,+BAAAA,QAAA,cAAC,OAAE,MAAM,cAAc,EAAE,OAAO,KAAK,cACnC,+BAAAA,QAAA,cAAC,UAAK,WAAU,gBAAc,CAChC,CACF,GACA,+BAAAA,QAAA,cAAC,YACE,EAAE,OAAO,WAAU,MAAG,EAAE,OAAO,UAClC,CACF;AAAA,UAEJ,CAEJ,CACF,CACF;AAAA,UACA,+BAAAA,QAAA,cAAC,UAAE;AAAA,UACH,+BAAAA,QAAA;AAAA,YAAC;AAAA;AAAA,cACC,SAAS,KAAK,4BAA4B,KAAK,IAAI;AAAA,cACnD,WAAU;AAAA;AAAA,YAEV,+BAAAA,QAAA,cAAC,UAAK,WAAU,WAAS;AAAA,YAAE;AAAA,UAE7B;AAAA,QACF,GAEA,+BAAAA,QAAA,cAAC,aAAU,mBAAiB,QAChC,+BAAAA,QAAA,cAAC,qBACA,+BAAAA,QAAA,cAAC,mCACA,+BAAAA,QAAA,cAAC,kCAAoB,0BAErB,CACD,GACA,+BAAAA,QAAA,cAAC,0BACE,+BAAAA,QAAA,cAAC,SAAI,WAAU,sBACb,+BAAAA,QAAA,cAAC,WAAM,WAAU,mCACf,+BAAAA,QAAA,cAAC,eACC,+BAAAA,QAAA,cAAC,QAAG,OAAO,EAAC,iBAAiB,WAAW,OAAO,OAAM,KAEjDE,GAAE,QAAQ;AAAA,UAAI,CAAC,GAAGO,WACd,+BAAAT,QAAA,cAAC,QAAG,KAAK,YAAYS,QAAO,WAAU,eAAc,OAAO,EAAC,YAAY,SAAQ,KAC7E,CACH;AAAA,QAEJ,CAEJ,CACF,GACA,+BAAAT,QAAA,cAAC,eACE,IACH,GACA,+BAAAA,QAAA,cAAC,eACC,+BAAAA,QAAA,cAAC,QAAG,OAAO,EAAC,iBAAiB,UAAS,KAElCE,GAAE,OAAO;AAAA,UAAI,CAACQ,IAAGD,WACb,+BAAAT,QAAA,cAAC,QAAG,KAAK,WAAWS,QAAO,WAAU,iBAClCC,EACH;AAAA,QAEJ,CAEJ,CACF,CACF,CACF,CACL,CACA,CACA,CACG;AAAA,MAEJ;AAAA,IACF;AAAA,IAEA,kBAAkB;AAChB,UAAIR,KAAI,KAAK,MAAM,KAAK;AAExB,UAAG,KAAK,MAAM,WAAW;AACvB,eACE,+BAAAF,QAAA,cAAC,mBAAa;AAAA,MAElB,WAAU,CAACE,IAAG;AACZ,eACE,+BAAAF,QAAA,cAAC,WAAE,8BAEH;AAAA,MAEJ,OAAO;AACL,YAAI,OAAgB,CAAC;AACrB,YAAI,eAAgB;AACpB,YAAI,wBAAyB;AAC7B,YAAI,uBAAwB;AAE5B,YAAI,0BAA8B;AAClC,YAAI,0BAA8B;AAClC,YAAI,0BAA8B;AAElC,iBAAQ,IAAI,GAAG,IAAIE,GAAE,QAAQ,QAAQ,KAAK;AAC/C,cAAI,qBAAyB;AAC7B,cAAI,qBAAyB;AAC7B,cAAI,qBAAyB;AAE7B,cAAI,aAAc,SAASA,GAAE,QAAQ,CAAC,EAAE,YAAY;AAC9C,cAAI,MAAcA,GAAE,QAAQ,CAAC,EAAE;AAErC,0BAAgB,WAAWA,GAAE,QAAQ,CAAC,EAAE,aAAa;AACrD,mCAAyB,WAAWA,GAAE,QAAQ,CAAC,EAAE,iBAAiB;AAClE,kCAAwB,WAAWA,GAAE,QAAQ,CAAC,EAAE,gBAAgB;AAEhE,cAAG,MAAM,GAAG;AACT,gBAAG,cAAc,KAAK,cAAc,IAAI;AACtC,mCAA0B,WAAWA,GAAE,QAAQ,CAAC,EAAE,yBAAyB;AAC3E,yCAA8B;AAAA,YAChC,WAAU,cAAc,MAAM,cAAc,KAAK;AAC/C,mCAA0B,WAAWA,GAAE,QAAQ,CAAC,EAAE,yBAAyB;AAC3E,yCAA8B;AAAA,YAChC,WAAU,cAAc,KAAI;AAC1B,mCAA0B,WAAWA,GAAE,QAAQ,CAAC,EAAE,yBAAyB;AAC3E,yCAA8B;AAAA,YAChC;AAAA,UACH;AACO,eAAK;AAAA,YACH,+BAAAF,QAAA,cAAC,QAAG,KAAK,sBAAsBE,GAAE,QAAQ,CAAC,EAAE,MAC1C,+BAAAF,QAAA,cAAC,QAAG,WAAU,iBACX,IAAI,CACP,GACA,+BAAAA,QAAA,cAAC,YACC,+BAAAA,QAAA,cAAC,gBACC,+BAAAA,QAAA,cAAC,OAAE,MAAM,YAAYE,GAAE,QAAQ,CAAC,EAAE,MAC/BA,GAAE,QAAQ,CAAC,EAAE,OAAO,WAAU,MAAGA,GAAE,QAAQ,CAAC,EAAE,OAAO,YAAW,KAAEA,GAAE,QAAQ,CAAC,EAAE,OAAO,WACzF,CACF,CACF,GACA,+BAAAF,QAAA,cAAC,YACEE,GAAE,QAAQ,CAAC,EAAE,OAAO,IACvB,GACA,+BAAAF,QAAA,cAAC,YACEE,GAAE,QAAQ,CAAC,EAAE,QAAQ,WAAU,MAAGA,GAAE,QAAQ,CAAC,EAAE,QAAQ,UAC1D,GACA,+BAAAF,QAAA,cAAC,YACEE,GAAE,QAAQ,CAAC,EAAE,aAAa,IACpC,GACA,+BAAAF,QAAA,cAAC,QAAG,WAAU,cACJO,kBAAiBL,GAAE,QAAQ,CAAC,EAAE,iBAAiB,CAClD,GACA,+BAAAF,QAAA,cAAC,QAAG,WAAU,cACXO,kBAAiBL,GAAE,QAAQ,CAAC,EAAE,gBAAgB,CACjD,GACA,+BAAAF,QAAA,cAAC,QAAG,WAAU,cACZ,+BAAAA,QAAA,cAAC,gBACEO,kBAAiBL,GAAE,QAAQ,CAAC,EAAE,aAAa,CAC9C,CACF,GACP,+BAAAF,QAAA,cAAC,QAAG,WAAU,cACJO,kBAAiB,kBAAkB,CAC7C,GACA,+BAAAP,QAAA,cAAC,QAAG,WAAU,cACJO,kBAAiB,kBAAkB,CAC7C,GACA,+BAAAP,QAAA,cAAC,QAAG,WAAU,cACJO,kBAAiB,kBAAkB,CAC7C,CACF;AAAA,UACK;AAAA,QACF;AAEA,aAAK;AAAA,UACH,+BAAAP,QAAA,cAAC,QAAG,KAAK,2BACP,+BAAAA,QAAA,cAAC,UACD,GACA,+BAAAA,QAAA,cAAC,QAAG,SAAQ,OAAI,iBACAE,GAAE,QAAQ,QAAO,GACjC,GACA,+BAAAF,QAAA,cAAC,QAAG,WAAU,cACXO,kBAAiB,qBAAqB,CAChD,GACA,+BAAAP,QAAA,cAAC,QAAG,WAAU,cACJO,kBAAiB,oBAAoB,CACxC,GACN,+BAAAP,QAAA,cAAC,QAAG,WAAU,cACLO,kBAAiB,YAAY,CACvC,GACA,+BAAAP,QAAA,cAAC,QAAG,WAAU,cACJO,kBAAiB,uBAAuB,CAClD,GACA,+BAAAP,QAAA,cAAC,QAAG,WAAU,cACJO,kBAAiB,uBAAuB,CAClD,GACA,+BAAAP,QAAA,cAAC,QAAG,WAAU,cACJO,kBAAiB,uBAAuB,CAClD,CAGK;AAAA,QACF;AAEA,eACE,+BAAAP,QAAA,cAAC,aACC,+BAAAA,QAAA,cAAC,aAAU,mBAAiB,QAChC,+BAAAA,QAAA,cAAC,qBACA,+BAAAA,QAAA,cAAC,mCACA,+BAAAA,QAAA,cAAC,kCAAoB,oBACHE,GAAE,OAAM,MAAGA,GAAE,QAAQ,QAAO,GAC9C,CACD,GACD,+BAAAF,QAAA,cAAC,0BACG,+BAAAA,QAAA,cAAC,SAAI,WAAU,sBACb,+BAAAA,QAAA,cAAC,WAAM,WAAU,+CACf,+BAAAA,QAAA,cAAC,eACC,+BAAAA,QAAA,cAAC,QAAG,OAAO,EAAC,iBAAiB,WAAW,OAAO,OAAM,KACnD,+BAAAA,QAAA,cAAC,UACD,GACA,+BAAAA,QAAA,cAAC,YAAG,QAEJ,GACA,+BAAAA,QAAA,cAAC,YAAG,QAEJ,GACA,+BAAAA,QAAA,cAAC,YAAG,SAEJ,GACA,+BAAAA,QAAA,cAAC,YAAG,cAEJ,GACd,+BAAAA,QAAA,cAAC,QAAG,WAAU,cAAW,6BAEX,GACN,+BAAAA,QAAA,cAAC,QAAG,WAAU,cAAW,4BAEnB,GACd,+BAAAA,QAAA,cAAC,QAAG,WAAU,cAAW,gBAEX,GACd,+BAAAA,QAAA,cAAC,QAAG,WAAU,cAAW,iBAEX,GACZ,+BAAAA,QAAA,cAAC,QAAG,WAAU,cAAW,mBAEb,GACd,+BAAAA,QAAA,cAAC,QAAG,WAAU,cAAW,sBAEX,CACV,CACM,GACA,+BAAAA,QAAA,cAAC,eACE,IACH,CACF,CACF,CACL,CACD,CACA,CACA;AAAA,MAEA;AAAA,IACF;AAAA,IAEA,uBAAuB,kBAAkB;AACvC,aACE,+BAAAA,QAAA,cAAC,SAAI,WAAU,SAEX,iBAAiB;AAAA,QAAI,CAACE,OAClB,+BAAAF,QAAA,cAAC,SAAI,WAAU,OAAM,KAAK,cAAcE,GAAE,eACxC,+BAAAF,QAAA,cAAC,eAAOE,GAAE,aAAY,OAAO,GAC7B,+BAAAF,QAAA,cAAC,UAAK,WAAU,gBACbE,GAAE,KACL,CACF;AAAA,MAEJ,CAEJ;AAAA,IAEJ;AAAA,IAEA,gBAAgB;AAChB,YAAM,cAAc;AAAA,QAChB,iBAAiB;AAAA,QACjB,SAAS;AAAA,QACT,OAAO;AAAA,QACP,YAAY;AAAA,MAChB;AACE,UAAIA,KAAI,KAAK,MAAM,KAAK;AAExB,UAAG,KAAK,MAAM,WAAW;AACvB,eACE,+BAAAF,QAAA,cAAC,mBAAa;AAAA,MAElB,WAAU,CAACE,IAAG;AACZ,eACE,+BAAAF,QAAA,cAAC,WAAE,4BAEH;AAAA,MAEJ,OAAO;AACL,YAAI,gBAAgB,CAAC;AACrB,YAAIW,WAAgB,KAAK,MAAM,KAAK,QAAQ;AAE5C,iBAAQ,IAAI,GAAG,IAAIA,SAAQ,QAAQ,KAAK;AACtC,cAAGA,SAAQ,CAAC,EAAE,gBAAgB,GAAG;AAC/B,0BAAc;AAAA,cACZ,+BAAAX,QAAA,cAAC,QAAG,KAAK,wBAAwB,KAC/B,+BAAAA,QAAA,cAAC,YACEW,SAAQ,CAAC,EAAE,IACd,GACA,+BAAAX,QAAA,cAAC,YACEW,SAAQ,CAAC,EAAE,QAAQ,WAAU,MAAGA,SAAQ,CAAC,EAAE,QAAQ,UACtD,GACA,+BAAAX,QAAA,cAAC,QAAG,WAAU,iBACXW,SAAQ,CAAC,EAAE,cAAa,OAAIA,SAAQ,CAAC,EAAE,aAC1C,GACA,+BAAAX,QAAA,cAAC,YACEW,SAAQ,CAAC,EAAE,mBACd,CACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAEA,eACE,+BAAAX,QAAA,cAAC,aACC,+BAAAA,QAAA,cAAC,aAAU,mBAAiB,QAC1B,+BAAAA,QAAA,cAAC,qBACC,+BAAAA,QAAA,cAAC,mCACC,+BAAAA,QAAA,cAAC,kCAAoB,gBAEnB,CACF,GACF,+BAAAA,QAAA,cAAC,0BACL,+BAAAA,QAAA,cAAC,SAAI,WAAU,sBACb,+BAAAA,QAAA,cAAC,WAAM,WAAU,+CACf,+BAAAA,QAAA,cAAC,eACC,+BAAAA,QAAA,cAAC,QAAG,OAAO,EAAC,iBAAiB,WAAW,OAAO,OAAM,KACnD,+BAAAA,QAAA,cAAC,YAAG,MAEJ,GACA,+BAAAA,QAAA,cAAC,YAAG,SAEJ,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBAAc,OAE5B,GACA,+BAAAA,QAAA,cAAC,YAAG,aAEJ,CACF,CACF,GACA,+BAAAA,QAAA,cAAC,eACE,aACH,CACF,CACF,CACF,CACF,CACF,CACI;AAAA,MAEJ;AAAA,IACF;AAAA,IAEA,qBAAqB;AACnB,UAAIE,KAAI,KAAK,MAAM,KAAK;AAExB,UAAG,KAAK,MAAM,WAAW;AACvB,eACE,+BAAAF,QAAA,cAAC,mBAAa;AAAA,MAElB,WAAU,CAACE,IAAG;AACZ,eACE,+BAAAF,QAAA,cAAC,WAAE,kCAEH;AAAA,MAEJ,OAAO;AACL,YAAI,gBAAe;AACnB,YAAI,kBAAiB;AACrB,YAAI,kBAAiB;AACrB,YAAI,iBAAgB;AACrB,YAAGE,GAAE,KAAK,OAAO,oBAAoB,MAAK;AACvC,2BAAiBA,GAAE,KAAK,OAAO,iBAAiB;AAChD,6BAAmBA,GAAE,KAAK,OAAO,iBAAiB;AAClD,6BAAmBA,GAAE,KAAK,OAAO,iBAAiB;AAClD,4BAAkBA,GAAE,KAAK,OAAO,iBAAiB;AAAA,QACpD;AACC,eACE,+BAAAF,QAAA,cAAC,aACC,+BAAAA,QAAA,cAAC,YACC,+BAAAA,QAAA,cAAC,OAAE,MAAM,gCAAgCE,GAAE,IAAI,QAAO,YAAS,wBACxCA,GAAE,KAAK,KAC9B,CACF,GACC,KAAK,uBAAuBA,GAAE,KAAK,kBAAkB,GACtD,+BAAAF,QAAA,cAAC,SAAI,WAAU,sBACb,+BAAAA,QAAA,cAAC,WAAM,WAAU,+CACf,+BAAAA,QAAA,cAAC,eACC,+BAAAA,QAAA,cAAC,QAAG,OAAO,EAAC,iBAAiB,WAAW,OAAO,OAAM,KACnD,+BAAAA,QAAA,cAAC,UACD,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBAAc,MAE5B,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBAAc,QAE5B,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBAAc,QAE5B,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBAAc,OAE5B,CACF,CACF,GACA,+BAAAA,QAAA,cAAC,eACC,+BAAAA,QAAA,cAAC,YACC,+BAAAA,QAAA,cAAC,YAAG,aAEJ,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACXE,GAAE,KAAK,OAAO,YAAY,IAC7B,GACA,+BAAAF,QAAA,cAAC,QAAG,WAAU,iBACXE,GAAE,KAAK,OAAO,YAAY,MAC7B,GACA,+BAAAF,QAAA,cAAC,QAAG,WAAU,iBACXE,GAAE,KAAK,OAAO,YAAY,MAC7B,GACA,+BAAAF,QAAA,cAAC,QAAG,WAAU,iBACXE,GAAE,KAAK,OAAO,YAAY,KAC7B,CACF,GACA,+BAAAF,QAAA,cAAC,YACC,+BAAAA,QAAA,cAAC,YAAG,kBAEJ,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACXE,GAAE,KAAK,OAAO,QAAQ,IACzB,GACA,+BAAAF,QAAA,cAAC,QAAG,WAAU,iBACXE,GAAE,KAAK,OAAO,QAAQ,MACzB,GACA,+BAAAF,QAAA,cAAC,QAAG,WAAU,iBACXE,GAAE,KAAK,OAAO,QAAQ,MACzB,GACA,+BAAAF,QAAA,cAAC,QAAG,WAAU,iBACXE,GAAE,KAAK,OAAO,QAAQ,KACzB,CACF,GACA,+BAAAF,QAAA,cAAC,YACC,+BAAAA,QAAA,cAAC,YAAG,aAEJ,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACXE,GAAE,KAAK,OAAO,eAAe,IAChC,GACA,+BAAAF,QAAA,cAAC,QAAG,WAAU,iBACXE,GAAE,KAAK,OAAO,eAAe,MAChC,GACA,+BAAAF,QAAA,cAAC,QAAG,WAAU,iBACXE,GAAE,KAAK,OAAO,eAAe,MAChC,GACA,+BAAAF,QAAA,cAAC,QAAG,WAAU,iBACXE,GAAE,KAAK,OAAO,eAAe,KAChC,CACF,GAEA,+BAAAF,QAAA,cAAC,YACC,+BAAAA,QAAA,cAAC,YAAG,yBAEJ,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACX,aACH,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACX,eACH,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACX,eACH,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACX,cACH,CACF,GAEA,+BAAAA,QAAA,cAAC,YACC,+BAAAA,QAAA,cAAC,YAAG,aAEJ,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACXE,GAAE,KAAK,OAAO,eAAe,OAAOA,GAAE,KAAK,OAAO,QAAQ,OAAOA,GAAE,KAAK,OAAO,YAAY,OAAO,aACrG,GACA,+BAAAF,QAAA,cAAC,QAAG,WAAU,iBACXE,GAAE,KAAK,OAAO,eAAe,SAASA,GAAE,KAAK,OAAO,QAAQ,SAASA,GAAE,KAAK,OAAO,YAAY,SAAS,eAC3G,GACA,+BAAAF,QAAA,cAAC,QAAG,WAAU,iBACXE,GAAE,KAAK,OAAO,eAAe,SAASA,GAAE,KAAK,OAAO,QAAQ,SAASA,GAAE,KAAK,OAAO,YAAY,SAAS,eAC3G,GACA,+BAAAF,QAAA,cAAC,QAAG,WAAU,iBACXE,GAAE,KAAK,OAAO,eAAe,QAAQA,GAAE,KAAK,OAAO,QAAQ,QAAQA,GAAE,KAAK,OAAO,YAAY,QAAQ,cACxG,CACF,CACF,CACF,CACF,CACF;AAAA,MAEJ;AAAA,IACF;AAAA,IAEA,SAAS;AACP,aACE,+BAAAF,QAAA,cAAC,aACE,KAAK,eAAe,GACrB,+BAAAA,QAAA,cAAC,UAAE,GACF,KAAK,uBAAuB,GAC5B,KAAK,mBAAmB,GACxB,KAAK,gBAAgB,GACrB,KAAK,cAAc,GACnB,KAAK,wBAAwB,CAChC;AAAA,IAEJ;AAAA,EACF;;;AwD97BA,MAAAY,iBAAkB;AAClB,MAAAC,iBAAc;AAEd,MAAAC,sBAAkB;AAoBlB,MAAqB,eAArB,cAA0C,eAAAC,QAAM,UAAU;AAAA,IACxD,YAAY,OAAO;AACjB,YAAM,KAAK;AAEX,WAAK,QAAS;AAAA,QACZ,eAAe;AAAA,UACb,IAAI;AAAA,UACJ,MAAM;AAAA,QACR;AAAA,QACA,UAAU,CAAC;AAAA,QACX,MAAM,CACN;AAAA,QACA,mBAAmB,CAAC;AAAA,QACpB,WAAW;AAAA,QACX,8BAA8B;AAAA,MAChC;AAAA,IACF;AAAA,IAEA,oBAAoB;AAClB,UAAI,UAAU;AACd,qBAAAC,QAAE,KAAK;AAAA,QACL,KAAK;AAAA,QACL,SAAS,SAAS,UAAU;AAC1B,cAAI,gBAAgB;AAAA,YAClB,IAAI;AAAA,YACJ,MAAM;AAAA,YACN,SAAS,CAAC;AAAA,UACZ;AAEA,cAAG,SAAS,SAAS,SAAS,GAAG;AAC/B,4BAAgB,SAAS,SAAS,CAAC;AAAA,UACrC;AAEA,kBAAQ,SAAS;AAAA,YACf,UAAU,SAAS;AAAA,YACnB;AAAA,YACA,MAAM;AAAA,cACJ,eAAe,SAAS;AAAA,YAC1B;AAAA,YACA,WAAW;AAAA,UACb,CAAC;AAAA,QACH;AAAA,QACA,OAAO,SAAS,UAAU;AACxB,kBAAQ,IAAI,QAAQ;AACpB,gBAAM,6BAA6B;AAAA,QACrC;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAEA,oBAAoBC,IAAG;AACrB,UAAI,gBAAgB,KAAK,MAAM;AAE/B,eAAQ,IAAI,GAAG,IAAI,KAAK,MAAM,SAAS,QAAQ,KAAK;AAClD,YAAG,KAAK,MAAM,SAAS,CAAC,EAAE,MAAMA,GAAE,OAAO;AACvC,0BAAgB,KAAK,MAAM,SAAS,CAAC;AAAA,QACvC;AAAA,MACF;AAEA,WAAK,SAAS;AAAA,QACZ;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAEA,oBAAoB;AAClB,UAAI,UAAgB;AACpB,UAAI,gBAAgB,KAAK,MAAM;AAE/B,cAAQ,SAAS;AAAA,QACf,WAAW;AAAA,MACb,CAAC;AAED,qBAAAD,QAAE,KAAK;AAAA,QACL,KAAK;AAAA,QACL,QAAQ;AAAA,QACR,MAAM;AAAA,UACJ,WAAW,cAAc;AAAA,QAC3B;AAAA,QACA,SAAS,SAAS,UAAU;AAC1B,kBAAQ,SAAS;AAAA,YACf,MAAM;AAAA,cACJ,eAAe,SAAS;AAAA,YAC1B;AAAA,YACA,WAAW;AAAA,UACb,CAAC;AAAA,QACH;AAAA,QACA,OAAO,SAAS,UAAU;AACxB,kBAAQ,IAAI,QAAQ;AACpB,gBAAM,yBAAyB;AAAA,QACjC;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAEA,iBAAiB;AACf,UAAIE,SAAQ,KAAK;AAEjB,UAAIC,UAAU;AAAA,QACZ,OAAOD,OAAM,cAAc;AAAA,QAC3B,OAAOA,OAAM,cAAc;AAAA,MAC7B;AAEA,UAAI,gBAAgB,CAAC;AAErB,eAAQ,IAAI,GAAG,IAAI,KAAK,MAAM,SAAS,QAAQ,KAAK;AAClD,sBAAc,KAAK;AAAA,UACjB,OAAO,KAAK,MAAM,SAAS,CAAC,EAAE;AAAA,UAC9B,OAAO,KAAK,MAAM,SAAS,CAAC,EAAE;AAAA,QAChC,CAAC;AAAA,MACH;AAEA,aACE,+BAAAH,QAAA,cAAC,SAAI,WAAU,SACb,+BAAAA,QAAA,cAAC,SAAI,WAAU,eACb,+BAAAA,QAAA,cAAC,SAAI,WAAU,gBACb,+BAAAA,QAAA,cAAC,eAAM,QAEP,GACA,+BAAAA,QAAA;AAAA,QAAC;AAAA;AAAA,UACC,SAAS;AAAA,UACT,UAAU,KAAK,oBAAoB,KAAK,IAAI;AAAA,UAC5C,OAAOI;AAAA,UACP,UAAU,KAAK,MAAM;AAAA;AAAA,MACvB,CACF,CACF,GACA,+BAAAJ,QAAA,cAAC,SAAI,WAAU,cACb,+BAAAA,QAAA,cAAC,SAAI,WAAU,gBACb,+BAAAA,QAAA,cAAC,eAAM,SAEP,GACA,+BAAAA,QAAA,cAAC,UAAE,GACH,+BAAAA,QAAA;AAAA,QAAC;AAAA;AAAA,UACC,WAAU;AAAA,UACV,SAAS,KAAK,kBAAkB,KAAK,IAAI;AAAA,UACzC,UAAU,KAAK,MAAM;AAAA;AAAA,QAErB,+BAAAA,QAAA,cAAC,UAAK,WAAU,cAAY;AAAA,QAAE;AAAA,MAEhC,CACF,CACF,CACF;AAAA,IAEJ;AAAA,IAEA,uBAAuB,kBAAkB;AACvC,aACE,+BAAAA,QAAA,cAAC,SAAI,WAAU,SAEX,iBAAiB;AAAA,QAAI,CAACE,OAClB,+BAAAF,QAAA,cAAC,SAAI,WAAU,OAAM,KAAK,cAAcE,GAAE,eACxC,+BAAAF,QAAA,cAAC,eAAOE,GAAE,aAAY,OAAO,GAC7B,+BAAAF,QAAA,cAAC,UAAK,WAAU,gBACbE,GAAE,KACL,CACF;AAAA,MAEJ,CAEJ;AAAA,IAEJ;AAAA,IAEA,qBAAqB;AACnB,UAAIA,KAAI,KAAK,MAAM,KAAK;AAExB,UAAG,KAAK,MAAM,WAAW;AACvB,eACE,+BAAAF,QAAA,cAAC,mBAAa;AAAA,MAElB,WAAU,CAACE,IAAG;AACZ,eACE,+BAAAF,QAAA,cAAC,WAAE,sCAEH;AAAA,MAEJ,OAAO;AACL,eACE,+BAAAA,QAAA,cAAC,aACC,+BAAAA,QAAA,cAAC,YACC,+BAAAA,QAAA,cAAC,OAAE,MAAM,gCAAgCE,GAAE,IAAI,QAAO,YAAS,wBACxCA,GAAE,KAAK,KAC9B,CACF,GACC,KAAK,uBAAuBA,GAAE,KAAK,kBAAkB,GACtD,+BAAAF,QAAA,cAAC,WAAM,WAAU,+CACf,+BAAAA,QAAA,cAAC,eACC,+BAAAA,QAAA,cAAC,QAAG,OAAO,EAAC,iBAAiB,WAAW,OAAO,OAAM,KACnD,+BAAAA,QAAA,cAAC,UACD,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBAAc,MAE5B,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBAAc,QAE5B,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBAAc,QAE5B,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBAAc,OAE5B,CACF,CACF,GACA,+BAAAA,QAAA,cAAC,eACC,+BAAAA,QAAA,cAAC,YACC,+BAAAA,QAAA,cAAC,YAAG,gBAEJ,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACXE,GAAE,KAAK,OAAO,eAAe,IAChC,GACA,+BAAAF,QAAA,cAAC,QAAG,WAAU,iBACXE,GAAE,KAAK,OAAO,eAAe,MAChC,GACA,+BAAAF,QAAA,cAAC,QAAG,WAAU,iBACXE,GAAE,KAAK,OAAO,eAAe,MAChC,GACA,+BAAAF,QAAA,cAAC,QAAG,WAAU,iBACXE,GAAE,KAAK,OAAO,eAAe,KAChC,CACF,GACA,+BAAAF,QAAA,cAAC,YACC,+BAAAA,QAAA,cAAC,YAAG,aAEJ,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACXE,GAAE,KAAK,OAAO,eAAe,IAChC,GACA,+BAAAF,QAAA,cAAC,QAAG,WAAU,iBACXE,GAAE,KAAK,OAAO,eAAe,MAChC,GACA,+BAAAF,QAAA,cAAC,QAAG,WAAU,iBACXE,GAAE,KAAK,OAAO,eAAe,MAChC,GACA,+BAAAF,QAAA,cAAC,QAAG,WAAU,iBACXE,GAAE,KAAK,OAAO,eAAe,KAChC,CACF,CACF,CACF,CACF;AAAA,MAEJ;AAAA,IACF;AAAA,IAEA,SAAS;AACP,aACE,+BAAAF,QAAA,cAAC,aACE,KAAK,eAAe,GACpB,KAAK,mBAAmB,CAC3B;AAAA,IAEJ;AAAA,EACF;;;ACpRA,MAAAK,iBAAkB;AAClB,MAAAC,iBAAc;;;ACDd,MAAAC,iBAAkB;AAClB,MAAAC,iBAAc;AAKd,MAAqB,wBAArB,cAAmD,eAAAC,QAAM,UAAU;AAAA,IACjE,YAAY,OAAO;AACjB,YAAM,KAAK;AAEX,WAAK,QAAS;AAAA,QACZ,WAAW;AAAA,QACX,YAAY;AAAA,QACZ,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IAEA,oBAAoB;AAClB,WAAK,MAAM;AAAA,IACb;AAAA,IAEA,QAAQ;AACN,UAAI,UAAU;AAEd,qBAAAC,QAAE,KAAK;AAAA,QACL,QAAQ;AAAA,QACR,KAAK;AAAA,QACL,MAAM;AAAA,UACJ,OAAO,QAAQ,MAAM;AAAA,QACvB;AAAA,QACA,SAAS,SAAS,UAAU;AAC1B,kBAAQ,IAAI,QAAQ;AAEpB,kBAAQ,SAAS;AAAA,YACf,WAAW;AAAA,YACX,YAAY;AAAA,YACZ,MAAM;AAAA,UACR,CAAC;AAAA,QACH;AAAA,QACA,OAAO,SAAS,UAAU;AACxB,kBAAQ,IAAI,QAAQ;AACpB,gBAAM,qCAAqC;AAAA,QAC7C;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAEA,oBAAoB;AAClB,WAAK,SAAS;AAAA,QACZ,YAAY;AAAA,MACd,CAAC;AAED,WAAK,MAAM;AAAA,IACb;AAAA,IAEA,kBAAkB,OAAO;AACvB,WAAK,SAAS;AAAA,QACZ,MAAM,MAAM,OAAO;AAAA,MACrB,CAAC;AAAA,IACH;AAAA,IAEA,sBAAsB;AACpB,UAAI,QAAU,KAAK,MAAM,KAAK;AAC9B,UAAI,cAAgB,KAAK,MAAM,KAAK;AACpC,UAAI,OAAU,CAAC;AACf,UAAI,UAAU;AAEd,UAAI,YAAgB;AACpB,UAAI,eAAgB;AACpB,UAAI,cAAgB;AAEpB,UAAI,aAAoB;AACxB,UAAI,WAAoB;AACxB,UAAI,eAAoB;AACxB,UAAI,iBAAoB;AACxB,UAAI,kBAAoB;AACxB,UAAI,iBAAoB;AACxB,UAAI,kBAAoB;AACxB,UAAI,kBAAoB;AACxB,UAAI,yBAAyB;AAE7B,eAAQ,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACpC,aAAK;AAAA,UACH,+BAAAD,QAAA,cAAC,QAAG,KAAK,UAAU,MAAM,CAAC,EAAE,IAAI,OAAO,EAAC,iBAAiB,UAAS,KAChE,+BAAAA,QAAA,cAAC,QAAG,WAAU,eAAc,WACzB,MAAM,CAAC,EAAE,IACZ,CACF;AAAA,QACF;AAEA,YAAI,WAAc,MAAM,CAAC,EAAE;AAE3B,YAAI,aAAoB;AACxB,YAAI,WAAoB;AACxB,YAAI,eAAoB;AACxB,YAAI,iBAAoB;AACxB,YAAI,kBAAoB;AACxB,YAAI,iBAAoB;AACxB,YAAI,kBAAoB;AACxB,YAAI,kBAAoB;AACxB,YAAI,yBAAyB;AAE7B,iBAAQ,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK;AACvC,eAAK;AAAA,YACH,+BAAAA,QAAA,cAAC,QAAG,KAAK,aAAa,SAAS,CAAC,EAAE,IAAI,OAAO,EAAC,iBAAiB,aAAY,KACzE,+BAAAA,QAAA,cAAC,QAAG,WAAU,eAAc,WACzB,SAAS,CAAC,EAAE,IACf,CACF;AAAA,UACF;AAEA,cAAIE,aAAY,SAAS,CAAC,EAAE;AAE5B,cAAI,aAAoB;AACxB,cAAI,WAAoB;AACxB,cAAI,eAAoB;AACxB,cAAI,iBAAoB;AACxB,cAAI,kBAAoB;AACxB,cAAI,iBAAoB;AACxB,cAAI,kBAAoB;AACxB,cAAI,kBAAoB;AACxB,cAAI,yBAAyB;AAE7B,mBAAQC,KAAI,GAAGA,KAAID,WAAS,QAAQC,MAAK;AACvC,gBAAGA,MAAK,GAAG;AACT,mBAAK;AAAA,gBACH,+BAAAH,QAAA,cAAC,QAAG,KAAK,YAAYE,WAASC,EAAC,EAAE,IAAI,OAAO,EAAC,iBAAiB,aAAa,OAAO,QAAO,KACvF,+BAAAH,QAAA,cAAC,YAAG,aAEJ,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBAAc,SAE5B,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBAAc,QAE5B,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBAAc,SAE5B,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBAAc,SAE5B,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBAAc,iBAE5B,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBAAc,gBAE5B,GACA,+BAAAA,QAAA,cAAC,YAAG,sBAEJ,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBAAc,MAE5B,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBAAc,IAE5B,GACA,+BAAAA,QAAA,cAAC,YAAG,uBAEJ,CACF;AAAA,cACF;AAAA,YACF;AAEA,0BAAqBE,WAASC,EAAC,EAAE,KAAK;AACtC,wBAAqBD,WAASC,EAAC,EAAE,KAAK;AACtC,8BAAqBD,WAASC,EAAC,EAAE,KAAK,eAAe;AACrD,+BAAqBD,WAASC,EAAC,EAAE,KAAK,gBAAgB;AACtD,8BAAqBD,WAASC,EAAC,EAAE,KAAK,eAAe;AACrD,+BAAqBD,WAASC,EAAC,EAAE,KAAK,gBAAgB;AACtD,+BAAqBD,WAASC,EAAC,EAAE,KAAK,gBAAgB;AACtD,sCAA0BD,WAASC,EAAC,EAAE,KAAK,wBAAwB;AAEnE,0BAAqBD,WAASC,EAAC,EAAE,KAAK;AACtC,wBAAqBD,WAASC,EAAC,EAAE,KAAK;AACtC,8BAAqBD,WAASC,EAAC,EAAE,KAAK,eAAe;AACrD,+BAAqBD,WAASC,EAAC,EAAE,KAAK,gBAAgB;AACtD,8BAAqBD,WAASC,EAAC,EAAE,KAAK,eAAe;AACrD,+BAAqBD,WAASC,EAAC,EAAE,KAAK,gBAAgB;AACtD,+BAAqBD,WAASC,EAAC,EAAE,KAAK,gBAAgB;AACtD,sCAA0BD,WAASC,EAAC,EAAE,KAAK,wBAAwB;AAEnE,0BAAqBD,WAASC,EAAC,EAAE,KAAK;AACtC,wBAAqBD,WAASC,EAAC,EAAE,KAAK;AACtC,8BAAqBD,WAASC,EAAC,EAAE,KAAK,eAAe;AACrD,+BAAqBD,WAASC,EAAC,EAAE,KAAK,gBAAgB;AACtD,8BAAqBD,WAASC,EAAC,EAAE,KAAK,eAAe;AACrD,+BAAqBD,WAASC,EAAC,EAAE,KAAK,gBAAgB;AACtD,+BAAqBD,WAASC,EAAC,EAAE,KAAK,gBAAgB;AACtD,sCAA0BD,WAASC,EAAC,EAAE,KAAK,wBAAwB;AAEnE,iBAAK;AAAA,cACH,+BAAAH,QAAA,cAAC,QAAG,KAAK,YAAYE,WAASC,EAAC,EAAE,MAC/B,+BAAAH,QAAA,cAAC,YACC,+BAAAA,QAAA,cAAC,gBACEE,WAASC,EAAC,EAAE,IACf,CACF,GACA,+BAAAH,QAAA,cAAC,QAAG,WAAU,iBACXE,WAASC,EAAC,EAAE,KAAK,gBAAgB,KACpC,GACA,+BAAAH,QAAA,cAAC,QAAG,WAAU,iBACXE,WAASC,EAAC,EAAE,KAAK,eAAe,KACnC,GACA,+BAAAH,QAAA,cAAC,QAAG,WAAU,iBACXE,WAASC,EAAC,EAAE,KAAK,gBAAgB,KACpC,GACA,+BAAAH,QAAA,cAAC,QAAG,WAAU,iBACXE,WAASC,EAAC,EAAE,KAAK,gBAAgB,KACpC,GACA,+BAAAH,QAAA,cAAC,QAAG,WAAU,iBACXE,WAASC,EAAC,EAAE,KAAK,wBAAwB,KAC5C,GACA,+BAAAH,QAAA,cAAC,QAAG,WAAU,iBACXE,WAASC,EAAC,EAAE,KAAK,eAAe,KACnC,GACA,+BAAAH,QAAA,cAAC,QAAG,WAAU,iBACXE,WAASC,EAAC,EAAE,KAAK,mBACpB,GACA,+BAAAH,QAAA,cAAC,QAAG,WAAU,iBACXI,kBAAiBF,WAASC,EAAC,EAAE,KAAK,UAAU,CAC/C,GACA,+BAAAH,QAAA,cAAC,QAAG,WAAU,iBACXI,kBAAiBF,WAASC,EAAC,EAAE,KAAK,QAAQ,CAC7C,GACA,+BAAAH,QAAA,cAAC,QAAG,WAAU,iBACXE,WAASC,EAAC,EAAE,KAAK,oBACpB,CACF;AAAA,YACF;AAAA,UACF;AAEA,eAAK;AAAA,YACH,+BAAAH,QAAA,cAAC,QAAG,KAAK,mBAAmB,SAAS,CAAC,EAAE,IAAI,OAAO,EAAC,iBAAiB,aAAY,KAC/E,+BAAAA,QAAA,cAAC,YACC,+BAAAA,QAAA,cAAC,gBACE,SAAS,CAAC,EAAE,MAAK,QACpB,CACF,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACZ,+BAAAA,QAAA,cAAC,gBACE,eACH,CACF,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACZ,+BAAAA,QAAA,cAAC,gBACE,cACH,CACF,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACZ,+BAAAA,QAAA,cAAC,gBACE,eACH,CACF,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACZ,+BAAAA,QAAA,cAAC,gBACE,eACH,CACF,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACZ,+BAAAA,QAAA,cAAC,gBACE,sBACH,CACF,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACZ,+BAAAA,QAAA,cAAC,gBACE,cACH,CACF,GACA,+BAAAA,QAAA,cAAC,UACD,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACZ,+BAAAA,QAAA,cAAC,gBACEI,kBAAiB,UAAU,CAC9B,CACF,GACA,+BAAAJ,QAAA,cAAC,QAAG,WAAU,iBACZ,+BAAAA,QAAA,cAAC,gBACEI,kBAAiB,QAAQ,CAC5B,CACF,GACA,+BAAAJ,QAAA,cAAC,UACD,CACF;AAAA,UACF;AAAA,QACF;AAEA,aAAK;AAAA,UACH,+BAAAA,QAAA,cAAC,QAAG,KAAK,gBAAgB,MAAM,CAAC,EAAE,IAAI,OAAO,EAAC,iBAAiB,UAAS,KACtE,+BAAAA,QAAA,cAAC,YACC,+BAAAA,QAAA,cAAC,gBACE,MAAM,CAAC,EAAE,MAAK,QACjB,CACF,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACZ,+BAAAA,QAAA,cAAC,gBACE,eACH,CACF,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACZ,+BAAAA,QAAA,cAAC,gBACE,cACH,CACF,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACZ,+BAAAA,QAAA,cAAC,gBACE,eACH,CACF,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACZ,+BAAAA,QAAA,cAAC,gBACE,eACH,CACF,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACZ,+BAAAA,QAAA,cAAC,gBACE,sBACH,CACF,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACZ,+BAAAA,QAAA,cAAC,gBACE,cACH,CACF,GACA,+BAAAA,QAAA,cAAC,UACD,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACZ,+BAAAA,QAAA,cAAC,gBACEI,kBAAiB,UAAU,CAC9B,CACF,GACA,+BAAAJ,QAAA,cAAC,QAAG,WAAU,iBACZ,+BAAAA,QAAA,cAAC,gBACEI,kBAAiB,QAAQ,CAC5B,CACF,GACA,+BAAAJ,QAAA,cAAC,UACD,CACF;AAAA,QACF;AAAA,MACF;AAGA,WAAK;AAAA,QACH,+BAAAA,QAAA,cAAC,QAAG,KAAK,eAAe,OAAO,EAAC,iBAAiB,QAAQ,OAAO,OAAM,KACpE,+BAAAA,QAAA,cAAC,YACC,+BAAAA,QAAA,cAAC,gBAAO,aAER,CACF,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACZ,+BAAAA,QAAA,cAAC,gBACE,eACH,CACF,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACZ,+BAAAA,QAAA,cAAC,gBACE,cACH,CACF,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACZ,+BAAAA,QAAA,cAAC,gBACE,eACH,CACF,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACZ,+BAAAA,QAAA,cAAC,gBACE,eACH,CACF,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACZ,+BAAAA,QAAA,cAAC,gBACE,sBACH,CACF,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACZ,+BAAAA,QAAA,cAAC,gBACE,cACH,CACF,GACA,+BAAAA,QAAA,cAAC,UACD,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACZ,+BAAAA,QAAA,cAAC,gBACEI,kBAAiB,UAAU,CAC9B,CACF,GACA,+BAAAJ,QAAA,cAAC,QAAG,WAAU,iBACZ,+BAAAA,QAAA,cAAC,gBACEI,kBAAiB,QAAQ,CAC5B,CACF,GACA,+BAAAJ,QAAA,cAAC,UACD,CACF;AAAA,MACF;AAEA,aACE,+BAAAA,QAAA,cAAC,WAAM,WAAU,mCACf,+BAAAA,QAAA,cAAC,eACE,IACH,CACF;AAAA,IAEJ;AAAA,IAEA,6BAA6B;AAC3B,UAAI,QAAU,KAAK,MAAM,KAAK;AAC9B,UAAI,OAAU,CAAC;AACf,UAAI,UAAU;AAEd,UAAI,YAAgB;AACpB,UAAI,eAAgB;AACpB,UAAI,cAAgB;AAEpB,UAAI,aAAoB;AACxB,UAAI,WAAoB;AACxB,UAAI,eAAoB;AACxB,UAAI,iBAAoB;AACxB,UAAI,kBAAoB;AACxB,UAAI,iBAAoB;AACxB,UAAI,kBAAoB;AACxB,UAAI,kBAAoB;AACxB,UAAI,yBAAyB;AAE7B,UAAI,0BAA0C;AAC9C,UAAI,wBAA0C;AAC9C,UAAI,8BAA0C;AAC9C,UAAI,+BAA0C;AAC9C,UAAI,8BAA0C;AAC9C,UAAI,+BAA0C;AAC9C,UAAI,+BAA0C;AAC9C,UAAI,sCAA0C;AAE9C,UAAI,2BAA2C;AAC/C,UAAI,yBAA2C;AAC/C,UAAI,+BAA2C;AAC/C,UAAI,gCAA2C;AAC/C,UAAI,+BAA2C;AAC/C,UAAI,gCAA2C;AAC/C,UAAI,gCAA2C;AAC/C,UAAI,uCAA2C;AAG/C,WAAK;AAAA,QACH,+BAAAA,QAAA,cAAC,QAAG,OAAO,EAAC,iBAAiB,UAAS,KACpC,+BAAAA,QAAA,cAAC,QAAG,WAAU,eAAc,WAC1B,+BAAAA,QAAA,cAAC,YAAG,wBAEJ,CACF,CACF;AAAA,MACF;AAEA,WAAK;AAAA,QACH,+BAAAA,QAAA,cAAC,QAAG,KAAK,WAAW,OAAO,EAAC,iBAAiB,aAAa,OAAO,QAAO,KACtE,+BAAAA,QAAA,cAAC,YAAG,WAEJ,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBAAc,SAE5B,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBAAc,QAE5B,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBAAc,SAE5B,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBAAc,SAE5B,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBAAc,MAE5B,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBAAc,IAE5B,CACF;AAAA,MACF;AAEA,eAAQ,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AAGpC,YAAI,WAAc,MAAM,CAAC,EAAE;AAE3B,YAAI,aAAoB;AACxB,YAAI,WAAoB;AACxB,YAAI,eAAoB;AACxB,YAAI,iBAAoB;AACxB,YAAI,kBAAoB;AACxB,YAAI,iBAAoB;AACxB,YAAI,kBAAoB;AACxB,YAAI,kBAAoB;AACxB,YAAI,yBAAyB;AAE7B,iBAAQ,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK;AACvC,cAAIE,aAAY,SAAS,CAAC,EAAE;AAE5B,cAAI,aAAoB;AACxB,cAAI,WAAoB;AACxB,cAAI,eAAoB;AACxB,cAAI,iBAAoB;AACxB,cAAI,kBAAoB;AACxB,cAAI,iBAAoB;AACxB,cAAI,kBAAoB;AACxB,cAAI,kBAAoB;AACxB,cAAI,yBAAyB;AAE7B,mBAAQC,KAAI,GAAGA,KAAID,WAAS,QAAQC,MAAK;AACvC,gBAAGA,MAAK,GAAG;AAAA,YAEX;AAEA,0BAAqBD,WAASC,EAAC,EAAE,KAAK;AACtC,wBAAqBD,WAASC,EAAC,EAAE,KAAK;AACtC,8BAAqBD,WAASC,EAAC,EAAE,KAAK,eAAe;AACrD,+BAAqBD,WAASC,EAAC,EAAE,KAAK,gBAAgB;AACtD,8BAAqBD,WAASC,EAAC,EAAE,KAAK,eAAe;AACrD,+BAAqBD,WAASC,EAAC,EAAE,KAAK,gBAAgB;AACtD,+BAAqBD,WAASC,EAAC,EAAE,KAAK,gBAAgB;AACtD,sCAA0BD,WAASC,EAAC,EAAE,KAAK,wBAAwB;AAEnE,0BAAqBD,WAASC,EAAC,EAAE,KAAK;AACtC,wBAAqBD,WAASC,EAAC,EAAE,KAAK;AACtC,8BAAqBD,WAASC,EAAC,EAAE,KAAK,eAAe;AACrD,+BAAqBD,WAASC,EAAC,EAAE,KAAK,gBAAgB;AACtD,8BAAqBD,WAASC,EAAC,EAAE,KAAK,eAAe;AACrD,+BAAqBD,WAASC,EAAC,EAAE,KAAK,gBAAgB;AACtD,+BAAqBD,WAASC,EAAC,EAAE,KAAK,gBAAgB;AACtD,sCAA0BD,WAASC,EAAC,EAAE,KAAK,wBAAwB;AAEnE,gBAAI,IAAI,GAAG;AACT,yCAA6CD,WAASC,EAAC,EAAE,KAAK;AAC9D,uCAA6CD,WAASC,EAAC,EAAE,KAAK;AAC9D,6CAA6CD,WAASC,EAAC,EAAE,KAAK,eAAe;AAC7E,8CAA6CD,WAASC,EAAC,EAAE,KAAK,gBAAgB;AAC9E,6CAA6CD,WAASC,EAAC,EAAE,KAAK,eAAe;AAC7E,8CAA6CD,WAASC,EAAC,EAAE,KAAK,gBAAgB;AAC9E,8CAA6CD,WAASC,EAAC,EAAE,KAAK,gBAAgB;AAC9E,qDAA6CD,WAASC,EAAC,EAAE,KAAK,wBAAwB;AACtF,kBAAI,WAAW;AAAA,YAEjB,OAAO;AACL,0CAA8CD,WAASC,EAAC,EAAE,KAAK;AAC/D,wCAA8CD,WAASC,EAAC,EAAE,KAAK;AAC/D,8CAA8CD,WAASC,EAAC,EAAE,KAAK,eAAe;AAC9E,+CAA8CD,WAASC,EAAC,EAAE,KAAK,gBAAgB;AAC/E,8CAA8CD,WAASC,EAAC,EAAE,KAAK,eAAe;AAC9E,+CAA8CD,WAASC,EAAC,EAAE,KAAK,gBAAgB;AAC/E,+CAA8CD,WAASC,EAAC,EAAE,KAAK,gBAAgB;AAC/E,sDAA8CD,WAASC,EAAC,EAAE,KAAK,wBAAwB;AACvF,kBAAI,WAAW;AAAA,YACjB;AAGA,0BAAqBD,WAASC,EAAC,EAAE,KAAK;AACtC,wBAAqBD,WAASC,EAAC,EAAE,KAAK;AACtC,8BAAqBD,WAASC,EAAC,EAAE,KAAK,eAAe;AACrD,+BAAqBD,WAASC,EAAC,EAAE,KAAK,gBAAgB;AACtD,8BAAqBD,WAASC,EAAC,EAAE,KAAK,eAAe;AACrD,+BAAqBD,WAASC,EAAC,EAAE,KAAK,gBAAgB;AACtD,+BAAqBD,WAASC,EAAC,EAAE,KAAK,gBAAgB;AACtD,sCAA0BD,WAASC,EAAC,EAAE,KAAK,wBAAwB;AAAA,UACrE;AAAA,QACF;AAEA,aAAK;AAAA,UACH,+BAAAH,QAAA,cAAC,QAAG,KAAK,gBAAgB,MAAM,CAAC,EAAE,MAChC,+BAAAA,QAAA,cAAC,YACC,+BAAAA,QAAA,cAAC,gBACE,MAAM,CAAC,EAAE,IACZ,CACF,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACZ,+BAAAA,QAAA,cAAC,gBACE,eACH,CACF,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACZ,+BAAAA,QAAA,cAAC,gBACE,cACH,CACF,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACZ,+BAAAA,QAAA,cAAC,gBACE,eACH,CACF,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACZ,+BAAAA,QAAA,cAAC,gBACE,eACH,CACF,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACZ,+BAAAA,QAAA,cAAC,gBACEI,kBAAiB,UAAU,CAC9B,CACF,GACA,+BAAAJ,QAAA,cAAC,QAAG,WAAU,iBACZ,+BAAAA,QAAA,cAAC,gBACEI,kBAAiB,QAAQ,CAC5B,CACF,CACF;AAAA,QACF;AAAA,MACF;AAEA,WAAK;AAAA,QACH,+BAAAJ,QAAA,cAAC,QAAG,KAAK,2BAA2B,OAAO,EAAC,iBAAiB,QAAQ,OAAO,OAAM,KAChF,+BAAAA,QAAA,cAAC,YAAG,0BAEJ,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACX,4BACH,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACX,2BACH,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACX,4BACH,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACX,4BACH,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACXI,kBAAiB,uBAAuB,CAC3C,GACA,+BAAAJ,QAAA,cAAC,QAAG,WAAU,iBACXI,kBAAiB,qBAAqB,CACzC,CACF;AAAA,MACF;AAEA,WAAK;AAAA,QACH,+BAAAJ,QAAA,cAAC,QAAG,KAAK,kBAAkB,OAAO,EAAC,iBAAiB,QAAQ,OAAO,OAAM,KACvE,+BAAAA,QAAA,cAAC,YAAG,iBAEJ,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACX,6BACH,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACX,4BACH,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACX,6BACH,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACX,6BACH,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACXI,kBAAiB,wBAAwB,CAC5C,GACA,+BAAAJ,QAAA,cAAC,QAAG,WAAU,iBACXI,kBAAiB,sBAAsB,CAC1C,CACF;AAAA,MACF;AAEA,WAAK;AAAA,QACH,+BAAAJ,QAAA,cAAC,QAAG,KAAK,eAAe,OAAO,EAAC,iBAAiB,QAAQ,OAAO,OAAM,KACpE,+BAAAA,QAAA,cAAC,YACC,+BAAAA,QAAA,cAAC,gBAAO,aAER,CACF,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACZ,+BAAAA,QAAA,cAAC,gBACE,eACH,CACF,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACZ,+BAAAA,QAAA,cAAC,gBACE,cACH,CACF,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACZ,+BAAAA,QAAA,cAAC,gBACE,eACH,CACF,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACZ,+BAAAA,QAAA,cAAC,gBACE,eACH,CACF,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACZ,+BAAAA,QAAA,cAAC,gBACEI,kBAAiB,UAAU,CAC9B,CACF,GACA,+BAAAJ,QAAA,cAAC,QAAG,WAAU,iBACZ,+BAAAA,QAAA,cAAC,gBACEI,kBAAiB,QAAQ,CAC5B,CACF,CACF;AAAA,MACF;AAEA,aACE,+BAAAJ,QAAA,cAAC,WAAM,WAAU,mCACf,+BAAAA,QAAA,cAAC,eACE,IACH,CACF;AAAA,IAEJ;AAAA,IAEA,4BAA4B;AAC1B,UAAI,QAAU,KAAK,MAAM,KAAK;AAC9B,UAAI,OAAU,CAAC;AACf,UAAI,UAAU;AAEd,UAAI,YAAgB;AACpB,UAAI,eAAgB;AACpB,UAAI,cAAgB;AAEpB,UAAI,aAA4B;AAChC,UAAI,aAA4B;AAChC,UAAI,aAA4B;AAChC,UAAI,eAA4B;AAChC,UAAI,iBAA4B;AAChC,UAAI,aAA4B;AAChC,UAAI,2BAA4B;AAChC,UAAI,QAA4B;AAChC,UAAI,QAA4B;AAChC,UAAI,QAA4B;AAChC,UAAI,UAA4B;AAChC,UAAI,YAA4B;AAChC,UAAI,QAA4B;AAChC,UAAI,sBAA4B;AAEhC,WAAK;AAAA,QACH,+BAAAA,QAAA,cAAC,QAAG,OAAO,EAAC,iBAAiB,UAAS,KACpC,+BAAAA,QAAA,cAAC,QAAG,WAAU,eAAc,WAC1B,+BAAAA,QAAA,cAAC,YAAG,0BAEJ,CACF,CACF;AAAA,MACF;AAEA,WAAK;AAAA,QACH,+BAAAA,QAAA,cAAC,QAAG,OAAO,EAAC,iBAAiB,aAAa,OAAO,QAAO,KACtD,+BAAAA,QAAA,cAAC,YAAG,aAEJ,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBAAc,MAE5B,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBAAc,MAE5B,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBAAc,MAE5B,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBAAc,SAE5B,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBAAc,WAE5B,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBAAc,qBAE5B,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBAAc,MAE5B,GACA,+BAAAA,QAAA,cAAC,YAAG,sBAEJ,CACF;AAAA,MACF;AAEA,eAAQ,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AAEpC,YAAI,WAAc,MAAM,CAAC,EAAE;AAE3B,iBAAQ,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK;AAEvC,cAAIE,aAAY,SAAS,CAAC,EAAE;AAE5B,mBAAQC,KAAI,GAAGA,KAAID,WAAS,QAAQC,MAAK;AAGvC,0BAA6BD,WAASC,EAAC,EAAE,KAAK;AAC9C,0BAA6BD,WAASC,EAAC,EAAE,KAAK;AAC9C,0BAA6BD,WAASC,EAAC,EAAE,KAAK;AAC9C,4BAA6BD,WAASC,EAAC,EAAE,KAAK;AAC9C,8BAA6BD,WAASC,EAAC,EAAE,KAAK;AAC9C,0BAA6BD,WAASC,EAAC,EAAE,KAAK;AAC9C,wCAA6BD,WAASC,EAAC,EAAE,KAAK;AAC9C,qBAA6BD,WAASC,EAAC,EAAE,KAAK,gBAAgB;AAC9D,qBAA6BD,WAASC,EAAC,EAAE,KAAK,gBAAgB;AAC9D,qBAA6BD,WAASC,EAAC,EAAE,KAAK,gBAAgB;AAC9D,uBAA6BD,WAASC,EAAC,EAAE,KAAK,gBAAgB;AAC9D,yBAA6BD,WAASC,EAAC,EAAE,KAAK,gBAAgB;AAC9D,qBAA6BD,WAASC,EAAC,EAAE,KAAK,gBAAgB;AAC9D,mCAA6BD,WAASC,EAAC,EAAE,KAAK,gBAAgB;AAE9D,iBAAK;AAAA,cACH,+BAAAH,QAAA,cAAC,QAAG,KAAK,YAAYE,WAASC,EAAC,EAAE,MAC/B,+BAAAH,QAAA,cAAC,YACC,+BAAAA,QAAA,cAAC,gBACEE,WAASC,EAAC,EAAE,IACf,CACF,GACA,+BAAAH,QAAA,cAAC,QAAG,WAAU,iBACXE,WAASC,EAAC,EAAE,KAAK,gBAAgB,IACpC,GACA,+BAAAH,QAAA,cAAC,QAAG,WAAU,iBACXE,WAASC,EAAC,EAAE,KAAK,gBAAgB,IACpC,GACA,+BAAAH,QAAA,cAAC,QAAG,WAAU,iBACXE,WAASC,EAAC,EAAE,KAAK,gBAAgB,IACpC,GACA,+BAAAH,QAAA,cAAC,QAAG,WAAU,iBACXE,WAASC,EAAC,EAAE,KAAK,gBAAgB,OACpC,GACA,+BAAAH,QAAA,cAAC,QAAG,WAAU,iBACXE,WAASC,EAAC,EAAE,KAAK,gBAAgB,SACpC,GACA,+BAAAH,QAAA,cAAC,QAAG,WAAU,iBACXE,WAASC,EAAC,EAAE,KAAK,gBAAgB,mBACpC,GACA,+BAAAH,QAAA,cAAC,QAAG,WAAU,iBACXE,WAASC,EAAC,EAAE,KAAK,gBAAgB,IACpC,GACA,+BAAAH,QAAA,cAAC,QAAG,WAAU,iBACXE,WAASC,EAAC,EAAE,KAAK,mBACpB,CACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAEA,WAAK;AAAA,QACH,+BAAAH,QAAA,cAAC,QAAG,OAAO,EAAC,iBAAiB,QAAQ,OAAO,OAAM,KAChD,+BAAAA,QAAA,cAAC,YACC,+BAAAA,QAAA,cAAC,gBAAO,aAER,CACF,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACZ,+BAAAA,QAAA,cAAC,gBACE,KACH,CACF,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACZ,+BAAAA,QAAA,cAAC,gBACE,KACH,CACF,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACZ,+BAAAA,QAAA,cAAC,gBACE,KACH,CACF,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACZ,+BAAAA,QAAA,cAAC,gBACE,OACH,CACF,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACZ,+BAAAA,QAAA,cAAC,gBACE,SACH,CACF,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACZ,+BAAAA,QAAA,cAAC,gBACE,mBACH,CACF,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACZ,+BAAAA,QAAA,cAAC,gBACE,KACH,CACF,GACA,+BAAAA,QAAA,cAAC,UACD,CACF;AAAA,MACF;AAEA,WAAK;AAAA,QACH,+BAAAA,QAAA,cAAC,QAAG,OAAO,EAAC,iBAAiB,QAAQ,OAAO,OAAM,KAChD,+BAAAA,QAAA,cAAC,YACC,+BAAAA,QAAA,cAAC,gBAAO,oBAER,CACF,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACZ,+BAAAA,QAAA,cAAC,gBACEI,kBAAiB,UAAU,CAC9B,CACF,GACA,+BAAAJ,QAAA,cAAC,QAAG,WAAU,iBACZ,+BAAAA,QAAA,cAAC,gBACEI,kBAAiB,UAAU,CAC9B,CACF,GACA,+BAAAJ,QAAA,cAAC,QAAG,WAAU,iBACZ,+BAAAA,QAAA,cAAC,gBACEI,kBAAiB,UAAU,CAC9B,CACF,GACA,+BAAAJ,QAAA,cAAC,QAAG,WAAU,iBACZ,+BAAAA,QAAA,cAAC,gBACEI,kBAAiB,YAAY,CAChC,CACF,GACA,+BAAAJ,QAAA,cAAC,QAAG,WAAU,iBACZ,+BAAAA,QAAA,cAAC,gBACEI,kBAAiB,cAAc,CAClC,CACF,GACA,+BAAAJ,QAAA,cAAC,QAAG,WAAU,iBACZ,+BAAAA,QAAA,cAAC,gBACEI,kBAAiB,wBAAwB,CAC5C,CACF,GACA,+BAAAJ,QAAA,cAAC,QAAG,WAAU,iBACZ,+BAAAA,QAAA,cAAC,gBACEI,kBAAiB,UAAU,CAC9B,CACF,GACA,+BAAAJ,QAAA,cAAC,UACD,CACF;AAAA,MACF;AAEA,aACE,+BAAAA,QAAA,cAAC,WAAM,WAAU,mCACf,+BAAAA,QAAA,cAAC,eACE,IACH,CACF;AAAA,IAEJ;AAAA,IAEA,mCAAmC;AACjC,UAAI,QAAU,KAAK,MAAM,KAAK;AAC9B,UAAI,OAAU,CAAC;AACf,UAAI,UAAU;AAEd,UAAI,YAAgB;AACpB,UAAI,eAAgB;AACpB,UAAI,cAAgB;AAEpB,UAAI,aAA4B;AAChC,UAAI,aAA4B;AAChC,UAAI,aAA4B;AAChC,UAAI,eAA4B;AAChC,UAAI,iBAA4B;AAChC,UAAI,aAA4B;AAChC,UAAI,2BAA4B;AAChC,UAAI,QAA4B;AAChC,UAAI,QAA4B;AAChC,UAAI,QAA4B;AAChC,UAAI,UAA4B;AAChC,UAAI,YAA4B;AAChC,UAAI,QAA4B;AAChC,UAAI,sBAA4B;AAEhC,UAAI,wBAA4B;AAChC,UAAI,kBAA4B;AAChC,UAAI,wBAA4B;AAChC,UAAI,kBAA4B;AAChC,UAAI,4BAA4B;AAChC,UAAI,sBAA4B;AAChC,UAAI,sBAA4B;AAChC,UAAI,gBAA4B;AAEhC,UAAI,wBAA4B;AAChC,UAAI,kBAA4B;AAChC,UAAI,wBAA4B;AAChC,UAAI,kBAA4B;AAChC,UAAI,4BAA4B;AAChC,UAAI,sBAA4B;AAChC,UAAI,sBAA4B;AAChC,UAAI,gBAA4B;AAEhC,UAAI,wBAA4B;AAChC,UAAI,kBAA4B;AAChC,UAAI,wBAA4B;AAChC,UAAI,kBAA4B;AAChC,UAAI,4BAA4B;AAChC,UAAI,sBAA4B;AAChC,UAAI,sBAA4B;AAChC,UAAI,gBAA4B;AAEhC,UAAI,0BAA8B;AAClC,UAAI,oBAA8B;AAClC,UAAI,0BAA8B;AAClC,UAAI,oBAA8B;AAClC,UAAI,8BAA8B;AAClC,UAAI,wBAA8B;AAClC,UAAI,wBAA8B;AAClC,UAAI,kBAA8B;AAElC,UAAI,4BAAgC;AACpC,UAAI,sBAAgC;AACpC,UAAI,4BAAgC;AACpC,UAAI,sBAAgC;AACpC,UAAI,gCAAgC;AACpC,UAAI,0BAAgC;AACpC,UAAI,0BAAgC;AACpC,UAAI,oBAAgC;AAEpC,UAAI,wBAA4B;AAChC,UAAI,kBAA4B;AAChC,UAAI,wBAA4B;AAChC,UAAI,kBAA4B;AAChC,UAAI,4BAA4B;AAChC,UAAI,sBAA4B;AAChC,UAAI,sBAA4B;AAChC,UAAI,gBAA4B;AAEhC,UAAI,sCAA0C;AAC9C,UAAI,gCAA0C;AAC9C,UAAI,sCAA0C;AAC9C,UAAI,gCAA0C;AAC9C,UAAI,0CAA0C;AAC9C,UAAI,oCAA0C;AAC9C,UAAI,oCAA0C;AAC9C,UAAI,8BAA0C;AAE9C,UAAI,0BAAgC;AACpC,UAAI,oBAAgC;AACpC,UAAI,0BAAgC;AACpC,UAAI,oBAAgC;AACpC,UAAI,8BAAgC;AACpC,UAAI,wBAAgC;AACpC,UAAI,wBAAgC;AACpC,UAAI,kBAAgC;AAEpC,UAAI,eAAgC;AACpC,UAAI,qBAAgC;AAEpC,WAAK;AAAA,QACH,+BAAAA,QAAA,cAAC,QAAG,OAAO,EAAC,iBAAiB,UAAS,KACpC,+BAAAA,QAAA,cAAC,QAAG,WAAU,eAAc,WAC1B,+BAAAA,QAAA,cAAC,YAAG,gBAEJ,CACF,CACF;AAAA,MACF;AAEA,WAAK;AAAA,QACH,+BAAAA,QAAA,cAAC,QAAG,OAAO,EAAC,iBAAiB,aAAa,OAAO,QAAO,KACtD,+BAAAA,QAAA,cAAC,UACD,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,eAAc,SAAQ,OAAI,OAExC,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,eAAc,SAAQ,OAAI,QAExC,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,eAAc,SAAQ,OAAI,WAExC,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,eAAc,SAAQ,OAAI,QAExC,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,eAAc,SAAQ,OAAI,OAExC,CACF;AAAA,MACF;AAEA,WAAK;AAAA,QACH,+BAAAA,QAAA,cAAC,QAAG,OAAO,EAAC,iBAAiB,aAAa,OAAO,QAAO,KACtD,+BAAAA,QAAA,cAAC,UACD,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBAAc,QAE5B,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBAAc,QAE5B,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBAAc,QAE5B,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBAAc,QAE5B,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBAAc,QAE5B,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBAAc,QAE5B,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBAAc,QAE5B,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBAAc,QAE5B,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBAAc,QAE5B,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBAAc,QAE5B,CACF;AAAA,MACF;AAEA,eAAQ,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AAEpC,YAAI,WAAc,MAAM,CAAC,EAAE;AAE3B,iBAAQ,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK;AAEvC,cAAIE,aAAY,SAAS,CAAC,EAAE;AAE5B,mBAAQC,KAAI,GAAGA,KAAID,WAAS,QAAQC,MAAK;AAGvC,0BAA6BD,WAASC,EAAC,EAAE,KAAK;AAC9C,0BAA6BD,WAASC,EAAC,EAAE,KAAK;AAC9C,0BAA6BD,WAASC,EAAC,EAAE,KAAK;AAC9C,4BAA6BD,WAASC,EAAC,EAAE,KAAK;AAC9C,8BAA6BD,WAASC,EAAC,EAAE,KAAK;AAC9C,0BAA6BD,WAASC,EAAC,EAAE,KAAK;AAC9C,wCAA6BD,WAASC,EAAC,EAAE,KAAK;AAC9C,qBAA6BD,WAASC,EAAC,EAAE,KAAK,gBAAgB;AAC9D,qBAA6BD,WAASC,EAAC,EAAE,KAAK,gBAAgB;AAC9D,qBAA6BD,WAASC,EAAC,EAAE,KAAK,gBAAgB;AAC9D,uBAA6BD,WAASC,EAAC,EAAE,KAAK,gBAAgB;AAC9D,yBAA6BD,WAASC,EAAC,EAAE,KAAK,gBAAgB;AAC9D,qBAA6BD,WAASC,EAAC,EAAE,KAAK,gBAAgB;AAC9D,mCAA6BD,WAASC,EAAC,EAAE,KAAK,gBAAgB;AAE9D,+BAA6BD,WAASC,EAAC,EAAE,KAAK;AAC9C,qCAA6BD,WAASC,EAAC,EAAE,KAAK;AAC9C,+BAA6BD,WAASC,EAAC,EAAE,KAAK;AAC9C,qCAA6BD,WAASC,EAAC,EAAE,KAAK;AAC9C,mCAA6BD,WAASC,EAAC,EAAE,KAAK;AAC9C,yCAA6BD,WAASC,EAAC,EAAE,KAAK;AAC9C,6BAA6BD,WAASC,EAAC,EAAE,KAAK;AAC9C,mCAA6BD,WAASC,EAAC,EAAE,KAAK;AAE9C,+BAA6BD,WAASC,EAAC,EAAE,KAAK;AAC9C,qCAA6BD,WAASC,EAAC,EAAE,KAAK;AAC9C,+BAA6BD,WAASC,EAAC,EAAE,KAAK;AAC9C,qCAA6BD,WAASC,EAAC,EAAE,KAAK;AAC9C,mCAA6BD,WAASC,EAAC,EAAE,KAAK;AAC9C,yCAA6BD,WAASC,EAAC,EAAE,KAAK;AAC9C,6BAA6BD,WAASC,EAAC,EAAE,KAAK;AAC9C,mCAA6BD,WAASC,EAAC,EAAE,KAAK;AAE9C,+BAA6BD,WAASC,EAAC,EAAE,KAAK;AAC9C,qCAA6BD,WAASC,EAAC,EAAE,KAAK;AAC9C,+BAA6BD,WAASC,EAAC,EAAE,KAAK;AAC9C,qCAA6BD,WAASC,EAAC,EAAE,KAAK;AAC9C,mCAA6BD,WAASC,EAAC,EAAE,KAAK;AAC9C,yCAA6BD,WAASC,EAAC,EAAE,KAAK;AAC9C,6BAA6BD,WAASC,EAAC,EAAE,KAAK;AAC9C,mCAA6BD,WAASC,EAAC,EAAE,KAAK;AAE9C,iCAA+BD,WAASC,EAAC,EAAE,KAAK;AAChD,uCAA+BD,WAASC,EAAC,EAAE,KAAK;AAChD,iCAA+BD,WAASC,EAAC,EAAE,KAAK;AAChD,uCAA+BD,WAASC,EAAC,EAAE,KAAK;AAChD,qCAA+BD,WAASC,EAAC,EAAE,KAAK;AAChD,2CAA+BD,WAASC,EAAC,EAAE,KAAK;AAChD,+BAA+BD,WAASC,EAAC,EAAE,KAAK;AAChD,qCAA+BD,WAASC,EAAC,EAAE,KAAK;AAEhD,+BAA6BD,WAASC,EAAC,EAAE,KAAK;AAC9C,qCAA6BD,WAASC,EAAC,EAAE,KAAK;AAC9C,+BAA6BD,WAASC,EAAC,EAAE,KAAK;AAC9C,qCAA6BD,WAASC,EAAC,EAAE,KAAK;AAC9C,mCAA6BD,WAASC,EAAC,EAAE,KAAK;AAC9C,yCAA6BD,WAASC,EAAC,EAAE,KAAK;AAC9C,6BAA6BD,WAASC,EAAC,EAAE,KAAK;AAC9C,mCAA6BD,WAASC,EAAC,EAAE,KAAK;AAE9C,mCAAiCD,WAASC,EAAC,EAAE,KAAK;AAClD,yCAAiCD,WAASC,EAAC,EAAE,KAAK;AAClD,mCAAiCD,WAASC,EAAC,EAAE,KAAK;AAClD,yCAAiCD,WAASC,EAAC,EAAE,KAAK;AAClD,uCAAiCD,WAASC,EAAC,EAAE,KAAK;AAClD,6CAAiCD,WAASC,EAAC,EAAE,KAAK;AAClD,iCAAiCD,WAASC,EAAC,EAAE,KAAK;AAClD,uCAAiCD,WAASC,EAAC,EAAE,KAAK;AAElD,6CAA2CD,WAASC,EAAC,EAAE,KAAK;AAC5D,mDAA2CD,WAASC,EAAC,EAAE,KAAK;AAC5D,6CAA2CD,WAASC,EAAC,EAAE,KAAK;AAC5D,mDAA2CD,WAASC,EAAC,EAAE,KAAK;AAC5D,iDAA2CD,WAASC,EAAC,EAAE,KAAK;AAC5D,uDAA2CD,WAASC,EAAC,EAAE,KAAK;AAC5D,2CAA2CD,WAASC,EAAC,EAAE,KAAK;AAC5D,iDAA2CD,WAASC,EAAC,EAAE,KAAK;AAAA,UAE9D;AAAA,QACF;AAEA,4BAA0B,kBAAkB,kBAAkB,kBAAkB,oBAAoB,kBAAkB,sBAAsB;AAC5I,kCAA0B,wBAAwB,wBAAwB,wBAAwB,0BAA0B,wBAAwB,4BAA4B;AAChL,4BAA0B,kBAAkB,kBAAkB,kBAAkB,oBAAoB,kBAAkB,sBAAsB;AAC5I,kCAA0B,wBAAwB,wBAAwB,wBAAwB,0BAA0B,wBAAwB,4BAA4B;AAChL,gCAA8B,sBAAsB,sBAAsB,sBAAsB,wBAAwB,sBAAsB,0BAA0B;AACxK,sCAA8B,4BAA4B,4BAA4B,4BAA4B,8BAA8B,4BAA4B,gCAAgC;AAC5M,0BAAwB,gBAAgB,gBAAgB,gBAAgB,kBAAkB,gBAAgB,oBAAoB;AAC9H,gCAAwB,sBAAsB,sBAAsB,sBAAsB,wBAAwB,sBAAsB,0BAA0B;AAElK,uBAAqB,QAAQ,QAAQ,QAAQ,UAAU,QAAQ,YAAY;AAC3E,6BAAqB,aAAa,aAAa,aAAa,eAAe,aAAa,iBAAiB;AAAA,MAC3G;AAEA,WAAK;AAAA,QACH,+BAAAH,QAAA,cAAC,YACC,+BAAAA,QAAA,cAAC,YACC,+BAAAA,QAAA,cAAC,gBACC,+BAAAA,QAAA,cAAC,OAAE,MAAM,gBAAgB,QAAO,YAAS,MAEzC,CACF,CACF,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACX,eACH,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACXI,kBAAiB,qBAAqB,CACzC,GACA,+BAAAJ,QAAA,cAAC,QAAG,WAAU,iBACX,eACH,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACXI,kBAAiB,qBAAqB,CACzC,GACA,+BAAAJ,QAAA,cAAC,QAAG,WAAU,iBACX,mBACH,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACXI,kBAAiB,yBAAyB,CAC7C,GACA,+BAAAJ,QAAA,cAAC,QAAG,WAAU,iBACX,aACH,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACXI,kBAAiB,mBAAmB,CACvC,GACA,+BAAAJ,QAAA,cAAC,QAAG,WAAU,iBACX,KACH,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACXI,kBAAiB,UAAU,CAC9B,CACF;AAAA,MACF;AAEA,WAAK;AAAA,QACH,+BAAAJ,QAAA,cAAC,YACC,+BAAAA,QAAA,cAAC,YACC,+BAAAA,QAAA,cAAC,gBAAO,MAER,CACF,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACX,eACH,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACXI,kBAAiB,qBAAqB,CACzC,GACA,+BAAAJ,QAAA,cAAC,QAAG,WAAU,iBACX,eACH,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACXI,kBAAiB,qBAAqB,CACzC,GACA,+BAAAJ,QAAA,cAAC,QAAG,WAAU,iBACX,mBACH,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACXI,kBAAiB,yBAAyB,CAC7C,GACA,+BAAAJ,QAAA,cAAC,QAAG,WAAU,iBACX,aACH,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACXI,kBAAiB,mBAAmB,CACvC,GACA,+BAAAJ,QAAA,cAAC,QAAG,WAAU,iBACX,KACH,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACXI,kBAAiB,UAAU,CAC9B,CACF;AAAA,MACF;AAEA,WAAK;AAAA,QACH,+BAAAJ,QAAA,cAAC,YACC,+BAAAA,QAAA,cAAC,YACC,+BAAAA,QAAA,cAAC,gBAAO,MAER,CACF,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACX,eACH,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACXI,kBAAiB,qBAAqB,CACzC,GACA,+BAAAJ,QAAA,cAAC,QAAG,WAAU,iBACX,eACH,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACXI,kBAAiB,qBAAqB,CACzC,GACA,+BAAAJ,QAAA,cAAC,QAAG,WAAU,iBACX,mBACH,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACXI,kBAAiB,yBAAyB,CAC7C,GACA,+BAAAJ,QAAA,cAAC,QAAG,WAAU,iBACX,aACH,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACXI,kBAAiB,mBAAmB,CACvC,GACA,+BAAAJ,QAAA,cAAC,QAAG,WAAU,iBACX,KACH,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACXI,kBAAiB,UAAU,CAC9B,CACF;AAAA,MACF;AAEA,WAAK;AAAA,QACH,+BAAAJ,QAAA,cAAC,YACC,+BAAAA,QAAA,cAAC,YACC,+BAAAA,QAAA,cAAC,gBAAO,SAER,CACF,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACX,iBACH,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACXI,kBAAiB,uBAAuB,CAC3C,GACA,+BAAAJ,QAAA,cAAC,QAAG,WAAU,iBACX,iBACH,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACXI,kBAAiB,uBAAuB,CAC3C,GACA,+BAAAJ,QAAA,cAAC,QAAG,WAAU,iBACX,qBACH,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACXI,kBAAiB,2BAA2B,CAC/C,GACA,+BAAAJ,QAAA,cAAC,QAAG,WAAU,iBACX,eACH,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACXI,kBAAiB,qBAAqB,CACzC,GACA,+BAAAJ,QAAA,cAAC,QAAG,WAAU,iBACX,OACH,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACXI,kBAAiB,YAAY,CAChC,CACF;AAAA,MACF;AAEA,WAAK;AAAA,QACH,+BAAAJ,QAAA,cAAC,YACC,+BAAAA,QAAA,cAAC,YACC,+BAAAA,QAAA,cAAC,gBAAO,WAER,CACF,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACX,mBACH,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACXI,kBAAiB,yBAAyB,CAC7C,GACA,+BAAAJ,QAAA,cAAC,QAAG,WAAU,iBACX,mBACH,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACXI,kBAAiB,yBAAyB,CAC7C,GACA,+BAAAJ,QAAA,cAAC,QAAG,WAAU,iBACX,uBACH,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACXI,kBAAiB,6BAA6B,CACjD,GACA,+BAAAJ,QAAA,cAAC,QAAG,WAAU,iBACX,iBACH,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACXI,kBAAiB,uBAAuB,CAC3C,GACA,+BAAAJ,QAAA,cAAC,QAAG,WAAU,iBACX,SACH,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACXI,kBAAiB,cAAc,CAClC,CACF;AAAA,MACF;AAEA,WAAK;AAAA,QACH,+BAAAJ,QAAA,cAAC,YACC,+BAAAA,QAAA,cAAC,YACC,+BAAAA,QAAA,cAAC,gBAAO,qBAER,CACF,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACX,6BACH,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACXI,kBAAiB,mCAAmC,CACvD,GACA,+BAAAJ,QAAA,cAAC,QAAG,WAAU,iBACX,6BACH,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACXI,kBAAiB,mCAAmC,CACvD,GACA,+BAAAJ,QAAA,cAAC,QAAG,WAAU,iBACX,iCACH,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACXI,kBAAiB,uCAAuC,CAC3D,GACA,+BAAAJ,QAAA,cAAC,QAAG,WAAU,iBACX,2BACH,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACXI,kBAAiB,iCAAiC,CACrD,GACA,+BAAAJ,QAAA,cAAC,QAAG,WAAU,iBACX,mBACH,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACXI,kBAAiB,wBAAwB,CAC5C,CACF;AAAA,MACF;AAEA,WAAK;AAAA,QACH,+BAAAJ,QAAA,cAAC,YACC,+BAAAA,QAAA,cAAC,YACC,+BAAAA,QAAA,cAAC,gBAAO,MAER,CACF,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACX,eACH,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACXI,kBAAiB,qBAAqB,CACzC,GACA,+BAAAJ,QAAA,cAAC,QAAG,WAAU,iBACX,eACH,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACXI,kBAAiB,qBAAqB,CACzC,GACA,+BAAAJ,QAAA,cAAC,QAAG,WAAU,iBACX,mBACH,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACXI,kBAAiB,yBAAyB,CAC7C,GACA,+BAAAJ,QAAA,cAAC,QAAG,WAAU,iBACX,aACH,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACXI,kBAAiB,mBAAmB,CACvC,GACA,+BAAAJ,QAAA,cAAC,QAAG,WAAU,iBACX,KACH,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACXI,kBAAiB,UAAU,CAC9B,CACF;AAAA,MACF;AAEA,WAAK;AAAA,QACH,+BAAAJ,QAAA,cAAC,QAAG,OAAO,EAAC,iBAAiB,QAAQ,OAAO,OAAM,KAChD,+BAAAA,QAAA,cAAC,YACC,+BAAAA,QAAA,cAAC,gBAAO,aAER,CACF,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACZ,+BAAAA,QAAA,cAAC,gBACE,iBACH,CACF,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACZ,+BAAAA,QAAA,cAAC,gBACEI,kBAAiB,uBAAuB,CAC3C,CACF,GACA,+BAAAJ,QAAA,cAAC,QAAG,WAAU,iBACZ,+BAAAA,QAAA,cAAC,gBACE,iBACH,CACF,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACZ,+BAAAA,QAAA,cAAC,gBACEI,kBAAiB,uBAAuB,CAC3C,CACF,GACA,+BAAAJ,QAAA,cAAC,QAAG,WAAU,iBACZ,+BAAAA,QAAA,cAAC,gBACE,qBACH,CACF,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACZ,+BAAAA,QAAA,cAAC,gBACEI,kBAAiB,2BAA2B,CAC/C,CACF,GACA,+BAAAJ,QAAA,cAAC,QAAG,WAAU,iBACZ,+BAAAA,QAAA,cAAC,gBACE,eACH,CACF,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACZ,+BAAAA,QAAA,cAAC,gBACEI,kBAAiB,qBAAqB,CACzC,CACF,GACA,+BAAAJ,QAAA,cAAC,QAAG,WAAU,iBACZ,+BAAAA,QAAA,cAAC,gBACE,YACH,CACF,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACZ,+BAAAA,QAAA,cAAC,gBACEI,kBAAiB,kBAAkB,CACtC,CACF,CACF;AAAA,MACF;AAEA,aACE,+BAAAJ,QAAA,cAAC,WAAM,WAAU,mCACf,+BAAAA,QAAA,cAAC,eACE,IACH,CACF;AAAA,IAEJ;AAAA,IAEA,uCAAsC;AACpC,UAAI,QAAU,KAAK,MAAM,KAAK;AAC9B,UAAI,OAAU,CAAC;AACf,UAAI,UAAU;AAEd,UAAI,YAAgB;AACpB,UAAI,eAAgB;AACpB,UAAI,cAAgB;AAEpB,UAAI,4BAAgD;AACpD,UAAI,8BAAgD;AACpD,UAAI,mBAAgD;AACpD,UAAI,6BAAgD;AAEpD,UAAI,oCAAgD;AACpD,UAAI,0CAAgD;AACpD,UAAI,+BAAgD;AACpD,UAAI,wCAAgD;AAEpD,UAAI,4BAAgD;AACpD,UAAI,kCAAgD;AACpD,UAAI,uBAAgD;AACpD,UAAI,gCAAgD;AAEpD,WAAK;AAAA,QACH,+BAAAA,QAAA,cAAC,QAAG,OAAO,EAAC,iBAAiB,UAAS,KACpC,+BAAAA,QAAA,cAAC,QAAG,WAAU,eAAc,WAC1B,+BAAAA,QAAA,cAAC,YAAG,oDAEJ,CACF,CACF;AAAA,MACF;AAEA,WAAK;AAAA,QACH,+BAAAA,QAAA,cAAC,QAAG,OAAO,EAAC,iBAAiB,aAAa,OAAO,QAAO,KACtD,+BAAAA,QAAA,cAAC,YAAG,WAEJ,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBAAc,oBAE5B,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBAAc,gBAE5B,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBAAc,qBAE5B,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBAAc,yBAE5B,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBAAc,mCAE5B,CACF;AAAA,MACF;AAEA,eAAQ,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AAEpC,YAAI,WAAc,MAAM,CAAC,EAAE;AAE3B,YAAI,4BAAmC;AACvC,YAAI,8BAAmC;AACvC,YAAI,mBAAmC;AACvC,YAAI,6BAAmC;AAEvC,iBAAQ,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK;AACvC,cAAIE,aAAY,SAAS,CAAC,EAAE;AAE5B,cAAI,4BAA+B;AACnC,cAAI,8BAA+B;AACnC,cAAI,mBAA+B;AACnC,cAAI,6BAA+B;AAEnC,mBAAQC,KAAI,GAAGA,KAAID,WAAS,QAAQC,MAAK;AACvC,gBAAGA,MAAK,GAAG;AAAA,YAEX;AAEA,yCAAqCD,WAASC,EAAC,EAAE,KAAK;AACtD,2CAAqCD,WAASC,EAAC,EAAE,KAAK;AACtD,yCAAqCD,WAASC,EAAC,EAAE,KAAK;AAEtD,yCAAqCD,WAASC,EAAC,EAAE,KAAK;AACtD,2CAAqCD,WAASC,EAAC,EAAE,KAAK;AACtD,yCAAqCD,WAASC,EAAC,EAAE,KAAK;AAEtD,gBAAI,IAAI,GAAG;AACT,mDAA+CD,WAASC,EAAC,EAAE,KAAK;AAChE,yDAA+CD,WAASC,EAAC,EAAE,KAAK;AAChE,sDAA+CD,WAASC,EAAC,EAAE,KAAK;AAChE,kBAAI,WAAW;AAAA,YACjB,OAAO;AACL,2CAA+CD,WAASC,EAAC,EAAE,KAAK;AAChE,iDAA+CD,WAASC,EAAC,EAAE,KAAK;AAChE,8CAA+CD,WAASC,EAAC,EAAE,KAAK;AAChE,kBAAI,WAAW;AAAA,YACjB;AAEA,yCAAqCD,WAASC,EAAC,EAAE,KAAK;AACtD,2CAAqCD,WAASC,EAAC,EAAE,KAAK;AACtD,yCAAqCD,WAASC,EAAC,EAAE,KAAK;AAAA,UACxD;AAAA,QACF;AAEA,aAAK;AAAA,UACH,+BAAAH,QAAA,cAAC,QAAG,KAAK,gBAAgB,MAAM,CAAC,EAAE,MAChC,+BAAAA,QAAA,cAAC,YACC,MAAM,CAAC,EAAE,IACX,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACX,yBACH,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACX,2BACH,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACX,KAAK,MAAO,4BAA4B,8BAA+B,GAAG,GAAE,GAC/E,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACX,KAAK,OAAS,4BAA4B,8BAA+B,MAAO,OAAO,EAAE,GAAE,GAC9F,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACX,0BACH,CACF;AAAA,QACF;AAAA,MACF;AAEA,WAAK;AAAA,QACH,+BAAAA,QAAA,cAAC,QAAG,KAAK,6BACP,+BAAAA,QAAA,cAAC,YAAG,0BAEJ,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACX,iCACH,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACX,uCACH,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACX,KAAK,MAAO,oCAAoC,0CAA0C,GAAG,GAAE,GAClG,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACX,KAAK,OAAS,oCAAoC,0CAA0C,MAAO,OAAO,EAAE,GAAE,GACjH,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACX,qCACH,CACF;AAAA,MACF;AAEA,WAAK;AAAA,QACH,+BAAAA,QAAA,cAAC,QAAG,KAAK,oBACP,+BAAAA,QAAA,cAAC,YAAG,iBAEJ,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACX,yBACH,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACX,+BACH,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACV,KAAK,MAAO,4BAA4B,kCAAmC,GAAG,GAAE,GACpF,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACV,KAAK,OAAS,4BAA4B,kCAAmC,MAAO,OAAO,EAAE,GAAE,GACnG,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACX,6BACH,CACF;AAAA,MACF;AAEA,WAAK;AAAA,QACH,+BAAAA,QAAA,cAAC,QAAG,KAAK,eAAe,OAAO,EAAC,iBAAiB,QAAQ,OAAO,OAAM,KACpE,+BAAAA,QAAA,cAAC,YACC,+BAAAA,QAAA,cAAC,gBAAO,aAER,CACF,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACZ,+BAAAA,QAAA,cAAC,gBACE,yBACH,CACF,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACZ,+BAAAA,QAAA,cAAC,gBACE,2BACH,CACF,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACZ,+BAAAA,QAAA,cAAC,gBACE,KAAK,MAAO,4BAA4B,8BAA+B,GAAG,GAAE,GAC/E,CACF,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACZ,+BAAAA,QAAA,cAAC,gBACE,KAAK,OAAS,4BAA4B,8BAA+B,MAAO,OAAO,EAAE,GAAE,GAC9F,CACF,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACX,0BACH,CACF;AAAA,MACF;AAEA,aACE,+BAAAA,QAAA,cAAC,WAAM,WAAU,mCACf,+BAAAA,QAAA,cAAC,eACE,IACH,CACF;AAAA,IAEJ;AAAA,IAEA,6CAA6C;AAC3C,UAAI,QAAU,KAAK,MAAM,KAAK;AAC9B,UAAI,OAAU,CAAC;AACf,UAAI,UAAU;AAEd,UAAI,YAAgB;AACpB,UAAI,eAAgB;AACpB,UAAI,cAAgB;AAEpB,UAAI,qBAAoC;AACxC,UAAI,qBAAoC;AACxC,UAAI,mBAAoC;AAExC,UAAI,gBAAoC;AACxC,UAAI,gBAAoC;AACxC,UAAI,cAAoC;AAExC,WAAK;AAAA,QACH,+BAAAA,QAAA,cAAC,QAAG,OAAO,EAAC,iBAAiB,UAAS,KACpC,+BAAAA,QAAA,cAAC,QAAG,WAAU,eAAc,WAC1B,+BAAAA,QAAA,cAAC,YAAG,sCAEJ,CACF,CACF;AAAA,MACF;AAEA,WAAK;AAAA,QACH,+BAAAA,QAAA,cAAC,QAAG,OAAO,EAAC,iBAAiB,aAAa,OAAO,QAAO,KACtD,+BAAAA,QAAA,cAAC,YAAG,aAEJ,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBAAc,oBAE5B,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBAAc,gBAE5B,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBAAc,qBAE5B,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBAAc,yBAE5B,GACA,+BAAAA,QAAA,cAAC,YAAG,mCAEJ,CACF;AAAA,MACF;AAEA,eAAQ,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AAEpC,YAAI,WAAc,MAAM,CAAC,EAAE;AAE3B,iBAAQ,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK;AAEvC,cAAIE,aAAY,SAAS,CAAC,EAAE;AAE5B,mBAAQC,KAAI,GAAGA,KAAID,WAAS,QAAQC,MAAK;AAEvC,kCAAqCD,WAASC,EAAC,EAAE,KAAK;AACtD,kCAAqCD,WAASC,EAAC,EAAE,KAAK;AACtD,gCAAqCD,WAASC,EAAC,EAAE,KAAK;AACtD,6BAAqCD,WAASC,EAAC,EAAE,KAAK;AACtD,6BAAqCD,WAASC,EAAC,EAAE,KAAK;AACtD,2BAAqCD,WAASC,EAAC,EAAE,KAAK;AAGtD,iBAAK;AAAA,cACH,+BAAAH,QAAA,cAAC,QAAG,KAAK,YAAYE,WAASC,EAAC,EAAE,MAC/B,+BAAAH,QAAA,cAAC,YACC,+BAAAA,QAAA,cAAC,gBACEE,WAASC,EAAC,EAAE,IACf,CACF,GACA,+BAAAH,QAAA,cAAC,QAAG,WAAU,iBACXE,WAASC,EAAC,EAAE,KAAK,wBACpB,GACA,+BAAAH,QAAA,cAAC,QAAG,WAAU,iBACXE,WAASC,EAAC,EAAE,KAAK,wBACpB,GACA,+BAAAH,QAAA,cAAC,QAAG,WAAU,iBACXE,WAASC,EAAC,EAAE,KAAK,YAAW,GAC/B,GACA,+BAAAH,QAAA,cAAC,QAAG,WAAU,kBACVE,WAASC,EAAC,EAAE,KAAK,aAAa,OAAO,IAAG,GAC5C,GACA,+BAAAH,QAAA,cAAC,QAAG,WAAU,iBACXE,WAASC,EAAC,EAAE,KAAK,+BACpB,CACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAEA,WAAK;AAAA,QACH,+BAAAH,QAAA,cAAC,QAAG,OAAO,EAAC,iBAAiB,QAAQ,OAAO,OAAM,KAChD,+BAAAA,QAAA,cAAC,YACC,+BAAAA,QAAA,cAAC,gBAAO,aAER,CACF,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACZ,+BAAAA,QAAA,cAAC,gBACE,aACH,CACF,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACZ,+BAAAA,QAAA,cAAC,gBACE,aACH,CACF,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACZ,+BAAAA,QAAA,cAAC,gBACE,mBAAmB,gBAAgB,MAAM,aAC5C,CACF,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACZ,+BAAAA,QAAA,cAAC,kBACK,mBAAmB,gBAAgB,MAAM,iBAAiB,OAAO,EACvE,CACF,GACA,+BAAAA,QAAA,cAAC,UACD,CACF;AAAA,MACF;AAEA,aACE,+BAAAA,QAAA,cAAC,WAAM,WAAU,mCACf,+BAAAA,QAAA,cAAC,eACE,IACH,CACF;AAAA,IAEJ;AAAA,IAEA,SAAS;AACP,UAAG,KAAK,MAAM,WAAW;AACvB,eACE,+BAAAA,QAAA,cAAC,aACC,+BAAAA,QAAA,cAAC,mBAAa,GACd,+BAAAA,QAAA,cAAC,gBACC,+BAAAA,QAAA,cAAC,YAAG,qBAEJ,CACF,CACF;AAAA,MAEJ,OAAO;AACL,eACE,+BAAAA,QAAA,cAAC,aACC,+BAAAA,QAAA,cAAC,YAAG,UAEJ,GACA,+BAAAA,QAAA,cAAC,SAAI,WAAU,SACb,+BAAAA,QAAA,cAAC,SAAI,WAAU,yBACb,+BAAAA,QAAA,cAAC,SAAI,WAAU,gBACb,+BAAAA,QAAA;AAAA,UAAC;AAAA;AAAA,YACC,MAAK;AAAA,YACL,WAAU;AAAA,YACV,UAAU,KAAK,MAAM;AAAA,YACrB,OAAO,KAAK,MAAM;AAAA,YAClB,UAAU,KAAK,kBAAkB,KAAK,IAAI;AAAA;AAAA,QAC5C,CACF,CACF,GACA,+BAAAA,QAAA,cAAC,SAAI,WAAU,wBACb,+BAAAA,QAAA,cAAC,SAAI,WAAU,gBACb,+BAAAA,QAAA;AAAA,UAAC;AAAA;AAAA,YACC,WAAU;AAAA,YACV,UAAU,KAAK,MAAM;AAAA,YACrB,SAAS,KAAK,kBAAkB,KAAK,IAAI;AAAA;AAAA,UAEzC,+BAAAA,QAAA,cAAC,UAAK,WAAU,cAAY;AAAA,UAAE;AAAA,QAEhC,CACF,CACF,CACF,GACC,KAAK,oBAAoB,GAC1B,+BAAAA,QAAA,cAAC,UAAG,GACH,KAAK,2BAA2B,GACjC,+BAAAA,QAAA,cAAC,UAAG,GACH,KAAK,iCAAiC,GACvC,+BAAAA,QAAA,cAAC,UAAG,GACH,KAAK,0BAA0B,GAChC,+BAAAA,QAAA,cAAC,UAAG,GACH,KAAK,qCAAqC,GAC3C,+BAAAA,QAAA,cAAC,UAAG,GACH,KAAK,2CAA2C,CACnD;AAAA,MAEJ;AAAA,IACF;AAAA,EACF;;;ADh7DA,MAAqB,yBAArB,cAAoD,eAAAK,QAAM,UAAU;AAAA,IAClE,YAAY,OAAO;AACjB,YAAM,KAAK;AAEX,WAAK,QAAS,CACd;AAAA,IACF;AAAA,IAEA,oBAAoB;AAClB,UAAI,UAAU;AAAA,IAChB;AAAA,IAEA,SAAS;AACP,aACE,+BAAAA,QAAA,cAAC,aACC,+BAAAA,QAAA;AAAA,QAAC;AAAA;AAAA,MACD,CACF;AAAA,IAEJ;AAAA,EACF;;;AE5BA,MAAAC,iBAAkB;AAClB,MAAAC,gBAAkB;;;ACDlB,MAAAC,iBAA2C;;;ACA3C,MAAAC,qBAAuB;;;ACAvB,MAAO,oBAAQ,CAAC,EAAE,OAAO,WAAW,eAAe,OAAO,YAAY,OAAO,SAAS;;;ACE/E,MAAI,mBAAmB;AACvB,MAAI,gBAAgB;AAE3B,MAAI;AACE,IAAAC,WAAU;AAAA,MACZ,IAAI,UAAU;AACZ,eAAO,mBAAmB;AAAA,MAC5B;AAAA,MAEA,IAAI,OAAO;AAET,eAAO,gBAAgB,mBAAmB;AAAA,MAC5C;AAAA,IAEF;AAEA,QAAI,mBAAW;AACb,aAAO,iBAAiB,QAAQA,UAASA,QAAO;AAChD,aAAO,oBAAoB,QAAQA,UAAS,IAAI;AAAA,IAClD;AAAA,EACF,SAASC,IAAG;AAAA,EAEZ;AAlBM,MAAAD;AA4BN,WAASE,kBAAiBC,OAAM,WAAW,SAASH,UAAS;AAC3D,QAAIA,YAAW,OAAOA,aAAY,aAAa,CAAC,eAAe;AAC7D,UAAI,OAAOA,SAAQ,MACf,UAAUA,SAAQ;AACtB,UAAI,iBAAiB;AAErB,UAAI,CAAC,iBAAiB,MAAM;AAC1B,yBAAiB,QAAQ,UAAU,SAAS,YAAY,OAAO;AAC7D,eAAK,oBAAoB,WAAW,aAAa,OAAO;AACxD,kBAAQ,KAAK,MAAM,KAAK;AAAA,QAC1B;AAEA,gBAAQ,SAAS;AAAA,MACnB;AAEA,MAAAG,MAAK,iBAAiB,WAAW,gBAAgB,mBAAmBH,WAAU,OAAO;AAAA,IACvF;AAEA,IAAAG,MAAK,iBAAiB,WAAW,SAASH,QAAO;AAAA,EACnD;AAEA,MAAO,2BAAQE;;;AClDA,WAAR,cAA+BE,OAAM;AAC1C,WAAOA,SAAQA,MAAK,iBAAiB;AAAA,EACvC;;;ACCA,WAASC,qBAAoBC,OAAM,WAAW,SAASC,UAAS;AAC9D,QAAI,UAAUA,YAAW,OAAOA,aAAY,YAAYA,SAAQ,UAAUA;AAC1E,IAAAD,MAAK,oBAAoB,WAAW,SAAS,OAAO;AAEpD,QAAI,QAAQ,QAAQ;AAClB,MAAAA,MAAK,oBAAoB,WAAW,QAAQ,QAAQ,OAAO;AAAA,IAC7D;AAAA,EACF;AAEA,MAAO,8BAAQD;;;AChBf,MAAI;AACW,WAAR,cAA+B,QAAQ;AAC5C,QAAI,CAAC,QAAQ,SAAS,KAAK,QAAQ;AACjC,UAAI,mBAAW;AACb,YAAI,YAAY,SAAS,cAAc,KAAK;AAC5C,kBAAU,MAAM,WAAW;AAC3B,kBAAU,MAAM,MAAM;AACtB,kBAAU,MAAM,QAAQ;AACxB,kBAAU,MAAM,SAAS;AACzB,kBAAU,MAAM,WAAW;AAC3B,iBAAS,KAAK,YAAY,SAAS;AACnC,eAAO,UAAU,cAAc,UAAU;AACzC,iBAAS,KAAK,YAAY,SAAS;AAAA,MACrC;AAAA,IACF;AAEA,WAAO;AAAA,EACT;;;AClBA,MAAAG,iBAAyB;AA0BV,WAAR,iBAAkC;AACvC,eAAO,yBAAS,IAAI;AAAA,EACtB;;;AC5BA,MAAAC,iBAA4B;;;ACA5B,MAAAC,iBAAkC;AAWlC,WAAS,gBAAgB,OAAO;AAC9B,UAAM,UAAM,uBAAO,KAAK;AACxB,kCAAU,MAAM;AACd,UAAI,UAAU;AAAA,IAChB,GAAG,CAAC,KAAK,CAAC;AACV,WAAO;AAAA,EACT;AACA,MAAO,0BAAQ;;;ADhBA,WAAR,iBAAkC,IAAI;AAC3C,UAAM,MAAM,wBAAgB,EAAE;AAC9B,eAAO,4BAAY,YAAa,MAAM;AACpC,aAAO,IAAI,WAAW,IAAI,QAAQ,GAAG,IAAI;AAAA,IAC3C,GAAG,CAAC,GAAG,CAAC;AAAA,EACV;;;AEPA,MAAAC,iBAAwB;AACxB,MAAM,UAAU,SAAO,CAAC,OAAO,OAAO,QAAQ,aAAa,MAAM,WAAS;AACxE,QAAI,UAAU;AAAA,EAChB;AACO,WAAS,UAAU,MAAM,MAAM;AACpC,UAAMC,KAAI,QAAQ,IAAI;AACtB,UAAM,IAAI,QAAQ,IAAI;AACtB,WAAO,WAAS;AACd,UAAIA;AAAG,QAAAA,GAAE,KAAK;AACd,UAAI;AAAG,UAAE,KAAK;AAAA,IAChB;AAAA,EACF;AAkBA,WAAS,cAAc,MAAM,MAAM;AACjC,eAAO,wBAAQ,MAAM,UAAU,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC;AAAA,EAC1D;AACA,MAAO,wBAAQ;;;AChCf,MAAAC,iBAAuB;AAQR,WAAR,cAA+B,OAAO;AAC3C,UAAM,eAAW,uBAAO,KAAK;AAC7B,aAAS,UAAU;AACnB,WAAO;AAAA,EACT;;;ACXA,MAAAC,iBAA0B;AAQX,WAAR,eAAgC,IAAI;AACzC,UAAM,YAAY,cAAc,EAAE;AAClC,kCAAU,MAAM,MAAM,UAAU,QAAQ,GAAG,CAAC,CAAC;AAAA,EAC/C;;;ACLe,WAAR,YAA6BC,OAAM;AACxC,QAAI,MAAM,cAAcA,KAAI;AAC5B,WAAO,OAAO,IAAI,eAAe;AAAA,EACnC;;;ACFe,WAARC,kBAAkCC,OAAM,eAAe;AAC5D,WAAO,YAAYA,KAAI,EAAE,iBAAiBA,OAAM,aAAa;AAAA,EAC/D;;;ACVA,MAAI,SAAS;AACE,WAAR,UAA2B,QAAQ;AACxC,WAAO,OAAO,QAAQ,QAAQ,KAAK,EAAE,YAAY;AAAA,EACnD;;;ACGA,MAAI,YAAY;AACD,WAAR,mBAAoC,QAAQ;AACjD,WAAO,UAAU,MAAM,EAAE,QAAQ,WAAW,MAAM;AAAA,EACpD;;;ACTA,MAAI,sBAAsB;AACX,WAAR,YAA6B,OAAO;AACzC,WAAO,CAAC,EAAE,SAAS,oBAAoB,KAAK,KAAK;AAAA,EACnD;;;ACCA,WAAS,MAAMC,OAAM,UAAU;AAC7B,QAAIC,OAAM;AACV,QAAI,aAAa;AAEjB,QAAI,OAAO,aAAa,UAAU;AAChC,aAAOD,MAAK,MAAM,iBAAiB,mBAAU,QAAQ,CAAC,KAAKE,kBAAiBF,KAAI,EAAE,iBAAiB,mBAAU,QAAQ,CAAC;AAAA,IACxH;AAEA,WAAO,KAAK,QAAQ,EAAE,QAAQ,SAAU,KAAK;AAC3C,UAAI,QAAQ,SAAS,GAAG;AAExB,UAAI,CAAC,SAAS,UAAU,GAAG;AACzB,QAAAA,MAAK,MAAM,eAAe,mBAAU,GAAG,CAAC;AAAA,MAC1C,WAAW,YAAY,GAAG,GAAG;AAC3B,sBAAc,MAAM,MAAM,QAAQ;AAAA,MACpC,OAAO;AACL,QAAAC,QAAO,mBAAU,GAAG,IAAI,OAAO,QAAQ;AAAA,MACzC;AAAA,IACF,CAAC;AAED,QAAI,YAAY;AACd,MAAAA,QAAO,gBAAgB,aAAa;AAAA,IACtC;AAEA,IAAAD,MAAK,MAAM,WAAW,MAAMC;AAAA,EAC9B;AAEA,MAAO,cAAQ;;;AC5Bf,WAAS,OAAOE,OAAM,WAAW,SAASC,UAAS;AACjD,6BAAiBD,OAAM,WAAW,SAASC,QAAO;AAClD,WAAO,WAAY;AACjB,kCAAoBD,OAAM,WAAW,SAASC,QAAO;AAAA,IACvD;AAAA,EACF;AAEA,MAAO,iBAAQ;;;ACFA,WAAR,aAA8BC,OAAM,WAAW,SAAS,YAAY;AACzE,QAAI,YAAY,QAAQ;AACtB,gBAAU;AAAA,IACZ;AAEA,QAAI,eAAe,QAAQ;AACzB,mBAAa;AAAA,IACf;AAEA,QAAIA,OAAM;AACR,UAAI,QAAQ,SAAS,YAAY,YAAY;AAC7C,YAAM,UAAU,WAAW,SAAS,UAAU;AAC9C,MAAAA,MAAK,cAAc,KAAK;AAAA,IAC1B;AAAA,EACF;;;AClBA,WAAS,cAAcC,OAAM;AAC3B,QAAI,MAAM,YAAIA,OAAM,oBAAoB,KAAK;AAC7C,QAAI,OAAO,IAAI,QAAQ,IAAI,MAAM,KAAK,MAAO;AAC7C,WAAO,WAAW,GAAG,IAAI;AAAA,EAC3B;AAEA,WAAS,qBAAqB,SAAS,UAAUC,UAAS;AACxD,QAAIA,aAAY,QAAQ;AACtB,MAAAA,WAAU;AAAA,IACZ;AAEA,QAAI,SAAS;AACb,QAAI,SAAS,WAAW,WAAY;AAClC,UAAI,CAAC;AAAQ,qBAAa,SAAS,iBAAiB,IAAI;AAAA,IAC1D,GAAG,WAAWA,QAAO;AACrB,QAAI,SAAS,eAAO,SAAS,iBAAiB,WAAY;AACxD,eAAS;AAAA,IACX,GAAG;AAAA,MACD,MAAM;AAAA,IACR,CAAC;AACD,WAAO,WAAY;AACjB,mBAAa,MAAM;AACnB,aAAO;AAAA,IACT;AAAA,EACF;AAEe,WAAR,cAA+B,SAAS,SAAS,UAAUA,UAAS;AACzE,QAAI,YAAY;AAAM,iBAAW,cAAc,OAAO,KAAK;AAC3D,QAAI,gBAAgB,qBAAqB,SAAS,UAAUA,QAAO;AACnE,QAAI,SAAS,eAAO,SAAS,iBAAiB,OAAO;AACrD,WAAO,WAAY;AACjB,oBAAc;AACd,aAAO;AAAA,IACT;AAAA,EACF;;;ApB3BA,MAAAC,UAAuB;AACvB,MAAAC,iBAAuD;;;AqBLxC,WAAR,cAA+B,KAAK;AACzC,QAAI,QAAQ,QAAQ;AAClB,YAAM,cAAc;AAAA,IACtB;AAIA,QAAI;AACF,UAAI,SAAS,IAAI;AAGjB,UAAI,CAAC,UAAU,CAAC,OAAO;AAAU,eAAO;AACxC,aAAO;AAAA,IACT,SAASC,IAAG;AAEV,aAAO,IAAI;AAAA,IACb;AAAA,EACF;;;AChBe,WAAR,SAA0B,SAASC,OAAM;AAG9C,QAAI,QAAQ;AAAU,aAAO,QAAQ,SAASA,KAAI;AAClD,QAAI,QAAQ;AAAyB,aAAO,YAAYA,SAAQ,CAAC,EAAE,QAAQ,wBAAwBA,KAAI,IAAI;AAAA,EAC7G;;;ACLA,MAAAC,iBAA0F;AAC1F,MAAAC,UAAuB;AACvB,MAAAC,oBAAqB;;;ACVrB,MAAAC,iBAAkC;AAsBnB,WAAR,aAA8B;AACnC,UAAM,cAAU,uBAAO,IAAI;AAC3B,UAAM,gBAAY,uBAAO,MAAM,QAAQ,OAAO;AAC9C,kCAAU,MAAM;AACd,cAAQ,UAAU;AAClB,aAAO,MAAM;AACX,gBAAQ,UAAU;AAAA,MACpB;AAAA,IACF,GAAG,CAAC,CAAC;AACL,WAAO,UAAU;AAAA,EACnB;;;AChCA,MAAAC,iBAAkC;AAmBnB,WAAR,YAA6B,OAAO;AACzC,UAAM,UAAM,uBAAO,IAAI;AACvB,kCAAU,MAAM;AACd,UAAI,UAAU;AAAA,IAChB,CAAC;AACD,WAAO,IAAI;AAAA,EACb;;;ACzBO,MAAM,mBAAmB;AAEzB,WAAS,SAAS,UAAU;AACjC,WAAO,GAAG,gBAAgB,GAAG,QAAQ;AAAA,EACvC;;;ACDe,WAAR,sBAAuCC,iBAAgB,UAAU;AACtE,UAAMC,UAASD,eAAc;AAC7B,WAAO,KAAK,IAAIC,QAAO,aAAaD,eAAc,gBAAgB,WAAW;AAAA,EAC/E;;;ACHO,MAAM,sBAAsB,SAAS,YAAY;AAMxD,MAAM,eAAN,MAAmB;AAAA,IACjB,YAAY;AAAA,MACV,eAAAE;AAAA,MACA,0BAA0B;AAAA,MAC1B,OAAAC,SAAQ;AAAA,IACV,IAAI,CAAC,GAAG;AACN,WAAK,0BAA0B;AAC/B,WAAK,QAAQA;AACb,WAAK,SAAS,CAAC;AACf,WAAK,gBAAgBD;AAAA,IACvB;AAAA,IACA,oBAAoB;AAClB,aAAO,sBAAsB,KAAK,aAAa;AAAA,IACjD;AAAA,IACA,aAAa;AACX,cAAQ,KAAK,iBAAiB,UAAU;AAAA,IAC1C;AAAA,IACA,mBAAmB,QAAQ;AAAA,IAE3B;AAAA,IACA,sBAAsB,QAAQ;AAAA,IAE9B;AAAA,IACA,kBAAkB,gBAAgB;AAChC,YAAME,SAAQ;AAAA,QACZ,UAAU;AAAA,MACZ;AAIA,YAAM,cAAc,KAAK,QAAQ,gBAAgB;AACjD,YAAM,YAAY,KAAK,WAAW;AAClC,qBAAe,QAAQ;AAAA,QACrB,UAAU,UAAU,MAAM;AAAA,QAC1B,CAAC,WAAW,GAAG,UAAU,MAAM,WAAW;AAAA,MAC5C;AACA,UAAI,eAAe,gBAAgB;AAGjC,QAAAA,OAAM,WAAW,IAAI,GAAG,SAAS,YAAI,WAAW,WAAW,KAAK,KAAK,EAAE,IAAI,eAAe,cAAc;AAAA,MAC1G;AACA,gBAAU,aAAa,qBAAqB,EAAE;AAC9C,kBAAI,WAAWA,MAAK;AAAA,IACtB;AAAA,IACA,QAAQ;AACN,OAAC,GAAG,KAAK,MAAM,EAAE,QAAQ,OAAK,KAAK,OAAO,CAAC,CAAC;AAAA,IAC9C;AAAA,IACA,qBAAqB,gBAAgB;AACnC,YAAM,YAAY,KAAK,WAAW;AAClC,gBAAU,gBAAgB,mBAAmB;AAC7C,aAAO,OAAO,UAAU,OAAO,eAAe,KAAK;AAAA,IACrD;AAAA,IACA,IAAI,OAAO;AACT,UAAI,WAAW,KAAK,OAAO,QAAQ,KAAK;AACxC,UAAI,aAAa,IAAI;AACnB,eAAO;AAAA,MACT;AACA,iBAAW,KAAK,OAAO;AACvB,WAAK,OAAO,KAAK,KAAK;AACtB,WAAK,mBAAmB,KAAK;AAC7B,UAAI,aAAa,GAAG;AAClB,eAAO;AAAA,MACT;AACA,WAAK,QAAQ;AAAA,QACX,gBAAgB,KAAK,kBAAkB;AAAA,QACvC,OAAO,CAAC;AAAA,MACV;AACA,UAAI,KAAK,yBAAyB;AAChC,aAAK,kBAAkB,KAAK,KAAK;AAAA,MACnC;AACA,aAAO;AAAA,IACT;AAAA,IACA,OAAO,OAAO;AACZ,YAAM,WAAW,KAAK,OAAO,QAAQ,KAAK;AAC1C,UAAI,aAAa,IAAI;AACnB;AAAA,MACF;AACA,WAAK,OAAO,OAAO,UAAU,CAAC;AAI9B,UAAI,CAAC,KAAK,OAAO,UAAU,KAAK,yBAAyB;AACvD,aAAK,qBAAqB,KAAK,KAAK;AAAA,MACtC;AACA,WAAK,sBAAsB,KAAK;AAAA,IAClC;AAAA,IACA,WAAW,OAAO;AAChB,aAAO,CAAC,CAAC,KAAK,OAAO,UAAU,KAAK,OAAO,KAAK,OAAO,SAAS,CAAC,MAAM;AAAA,IACzE;AAAA,EACF;AACA,MAAO,uBAAQ;;;ACjGf,MAAAC,iBAAoC;;;ACFpC,MAAAC,iBAA0C;AAE1C,MAAMC,WAAuB,kDAAc,oBAAY,SAAS,MAAS;AAClE,MAAM,iBAAiBA,SAAQ;AAQvB,WAAR,YAA6B;AAClC,eAAO,2BAAWA,QAAO;AAAA,EAC3B;;;ADTO,MAAM,sBAAsB,CAAC,KAAKC,cAAa;AACpD,QAAI,CAAC;AAAW,aAAO;AACvB,QAAI,OAAO;AAAM,cAAQA,aAAY,cAAc,GAAG;AACtD,QAAI,OAAO,QAAQ;AAAY,YAAM,IAAI;AACzC,QAAI,OAAO,aAAa;AAAK,YAAM,IAAI;AACvC,QAAI,QAAQ,cAAc,OAAO,IAAI;AAAwB,aAAO;AACpE,WAAO;AAAA,EACT;AACe,WAAR,iBAAkC,KAAK,YAAY;AACxD,UAAMC,UAAS,UAAU;AACzB,UAAM,CAAC,aAAa,MAAM,QAAI,yBAAS,MAAM,oBAAoB,KAAKA,WAAU,OAAO,SAASA,QAAO,QAAQ,CAAC;AAChH,QAAI,CAAC,aAAa;AAChB,YAAM,WAAW,oBAAoB,GAAG;AACxC,UAAI;AAAU,eAAO,QAAQ;AAAA,IAC/B;AACA,kCAAU,MAAM;AACd,UAAI,cAAc,aAAa;AAC7B,mBAAW,WAAW;AAAA,MACxB;AAAA,IACF,GAAG,CAAC,YAAY,WAAW,CAAC;AAC5B,kCAAU,MAAM;AACd,YAAM,UAAU,oBAAoB,GAAG;AACvC,UAAI,YAAY,aAAa;AAC3B,eAAO,OAAO;AAAA,MAChB;AAAA,IACF,GAAG,CAAC,KAAK,WAAW,CAAC;AACrB,WAAO;AAAA,EACT;;;AE/BA,MAAAC,iBAA2C;AAC3C,MAAM,gBAAgB,OAAO,WAAW;AAAA,EAExC,OAAO;AAAA,EAEP,OAAO,UAAU,YAAY;AAC7B,MAAM,QAAQ,OAAO,aAAa;AAUlC,MAAO,8BAAQ,SAAS,gBAAgB,iCAAkB;;;ACb1D,MAAAC,iBAAsD;;;ACDtD,MAAAC,iBAAgD;AAChD,WAAS,eAAe;AAAA,IACtB;AAAA,IACA,IAAI;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAAG;AACD,UAAM,UAAM,uBAAO,IAAI;AACvB,UAAM,oBAAgB,uBAAO,MAAM;AACnC,UAAM,eAAe,iBAAiB,QAAQ;AAC9C,kCAAU,MAAM;AACd,UAAI;AAAQ,sBAAc,UAAU;AAAA,WAAU;AAC5C,qBAAa,IAAI,OAAO;AAAA,MAC1B;AAAA,IACF,GAAG,CAAC,QAAQ,YAAY,CAAC;AACzB,UAAM,cAAc,sBAAc,KAAK,SAAS,GAAG;AACnD,UAAM,QAAqB,iDAAa,UAAU;AAAA,MAChD,KAAK;AAAA,IACP,CAAC;AACD,QAAI;AAAQ,aAAO;AACnB,QAAI,eAAe;AACjB,aAAO;AAAA,IACT;AACA,QAAI,CAAC,cAAc,WAAW,cAAc;AAC1C,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT;AACA,MAAO,yBAAQ;;;AD1Bf,2BAA4B;AACrB,WAAS,cAAc;AAAA,IAC5B,IAAI;AAAA,IACJ;AAAA,EACF,GAAG;AACD,UAAM,UAAM,uBAAO,IAAI;AACvB,UAAM,mBAAe,uBAAO,IAAI;AAChC,UAAM,mBAAmB,iBAAiB,YAAY;AACtD,gCAAoB,MAAM;AACxB,UAAI,CAAC,IAAI,SAAS;AAChB,eAAO;AAAA,MACT;AACA,UAAI,QAAQ;AACZ,uBAAiB;AAAA,QACf,IAAI;AAAA,QACJ,SAAS,IAAI;AAAA,QACb,SAAS,aAAa;AAAA,QACtB,SAAS,MAAM;AAAA,MACjB,CAAC;AACD,aAAO,MAAM;AACX,gBAAQ;AAAA,MACV;AAAA,IACF,GAAG,CAAC,QAAQ,gBAAgB,CAAC;AAC7B,gCAAoB,MAAM;AACxB,mBAAa,UAAU;AAEvB,aAAO,MAAM;AACX,qBAAa,UAAU;AAAA,MACzB;AAAA,IACF,GAAG,CAAC,CAAC;AACL,WAAO;AAAA,EACT;AAOe,WAAR,qBAAsC;AAAA,IAC3C;AAAA,IACA,IAAI;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAAG;AACD,UAAM,CAAC,QAAQ,SAAS,QAAI,yBAAS,CAAC,MAAM;AAG5C,QAAI,UAAU,QAAQ;AACpB,gBAAU,KAAK;AAAA,IACjB;AACA,UAAM,MAAM,cAAc;AAAA,MACxB,IAAI,CAAC,CAAC;AAAA,MACN,cAAc,CAAAC,aAAW;AACvB,cAAM,WAAW,MAAM;AACrB,cAAIA,SAAQ,QAAQ;AAAG;AACvB,cAAIA,SAAQ,IAAI;AACd,yBAAa,OAAO,SAAS,UAAUA,SAAQ,SAASA,SAAQ,OAAO;AAAA,UACzE,OAAO;AACL,sBAAU,IAAI;AACd,wBAAY,OAAO,SAAS,SAASA,SAAQ,OAAO;AAAA,UACtD;AAAA,QACF;AACA,gBAAQ,QAAQ,WAAWA,QAAO,CAAC,EAAE,KAAK,UAAU,WAAS;AAC3D,cAAI,CAACA,SAAQ;AAAI,sBAAU,IAAI;AAC/B,gBAAM;AAAA,QACR,CAAC;AAAA,MACH;AAAA,IACF,CAAC;AACD,UAAM,cAAc,sBAAc,KAAK,SAAS,GAAG;AACnD,WAAO,UAAU,CAAC,SAAS,OAAoB,iDAAa,UAAU;AAAA,MACpE,KAAK;AAAA,IACP,CAAC;AAAA,EACH;AACO,WAAS,iBAAiBC,YAAW,eAAe,OAAO;AAChE,QAAIA,YAAW;AACb,aAAoB,uCAAAC,KAAKD,YAAW,OAAO,OAAO,CAAC,GAAG,KAAK,CAAC;AAAA,IAC9D;AACA,QAAI,eAAe;AACjB,aAAoB,uCAAAC,KAAK,sBAAsB,OAAO,OAAO,CAAC,GAAG,OAAO;AAAA,QACtE,YAAY;AAAA,MACd,CAAC,CAAC;AAAA,IACJ;AACA,WAAoB,uCAAAA,KAAK,wBAAgB,OAAO,OAAO,CAAC,GAAG,KAAK,CAAC;AAAA,EACnE;;;AExFO,WAAS,SAASC,IAAG;AAC1B,WAAOA,GAAE,SAAS,YAAYA,GAAE,YAAY;AAAA,EAC9C;;;AXiBA,MAAAC,sBAA4B;AAC5B,MAAAA,sBAAsC;AACtC,MAAAA,sBAA8B;AAtB9B,MAAMC,aAAY,CAAC,QAAQ,QAAQ,aAAa,SAAS,YAAY,YAAY,YAAY,mBAAmB,mBAAmB,cAAc,iBAAiB,sBAAsB,yBAAyB,aAAa,gBAAgB,gBAAgB,uBAAuB,gBAAgB,kBAAkB,WAAW,aAAa,UAAU,UAAU,UAAU,YAAY,aAAa,WAAW,cAAc,WAAW;AAC1a,WAASC,+BAA8B,QAAQ,UAAU;AAAE,QAAI,UAAU;AAAM,aAAO,CAAC;AAAG,QAAI,SAAS,CAAC;AAAG,QAAI,aAAa,OAAO,KAAK,MAAM;AAAG,QAAI,KAAK;AAAG,SAAK,IAAI,GAAG,IAAI,WAAW,QAAQ,KAAK;AAAE,YAAM,WAAW,CAAC;AAAG,UAAI,SAAS,QAAQ,GAAG,KAAK;AAAG;AAAU,aAAO,GAAG,IAAI,OAAO,GAAG;AAAA,IAAG;AAAE,WAAO;AAAA,EAAQ;AAsBlT,MAAI;AACJ,WAAS,WAAWC,SAAQ;AAC1B,QAAI,CAAC;AAAS,gBAAU,IAAI,qBAAa;AAAA,QACvC,eAAeA,WAAU,OAAO,SAASA,QAAO;AAAA,MAClD,CAAC;AACD,WAAO;AAAA,EACT;AACA,WAAS,gBAAgB,UAAU;AACjC,UAAMA,UAAS,UAAU;AACzB,UAAM,eAAe,YAAY,WAAWA,OAAM;AAClD,UAAM,YAAQ,uBAAO;AAAA,MACnB,QAAQ;AAAA,MACR,UAAU;AAAA,IACZ,CAAC;AACD,WAAO,OAAO,OAAO,MAAM,SAAS;AAAA,MAClC,KAAK,MAAM,aAAa,IAAI,MAAM,OAAO;AAAA,MACzC,QAAQ,MAAM,aAAa,OAAO,MAAM,OAAO;AAAA,MAC/C,YAAY,MAAM,aAAa,WAAW,MAAM,OAAO;AAAA,MACvD,kBAAc,4BAAY,SAAO;AAC/B,cAAM,QAAQ,SAAS;AAAA,MACzB,GAAG,CAAC,CAAC;AAAA,MACL,oBAAgB,4BAAY,SAAO;AACjC,cAAM,QAAQ,WAAW;AAAA,MAC3B,GAAG,CAAC,CAAC;AAAA,IACP,CAAC;AAAA,EACH;AACA,MAAMC,SAAqB,+CAAW,CAACC,OAAM,QAAQ;AACnD,QAAI;AAAA,MACA,OAAO;AAAA,MACP,OAAO;AAAA,MACP;AAAA,MACA,OAAAC;AAAA,MACA;AAAA,MACA,WAAW;AAAA,MACX,WAAW;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,YAAY;AAAA,MACZ,eAAe;AAAA,MACf,eAAe;AAAA,MACf;AAAA,MACA;AAAA,MACA,iBAAiB,WAAsB,wCAAAC,KAAK,OAAO,OAAO,OAAO,CAAC,GAAG,KAAK,CAAC;AAAA,MAC3E,SAAS;AAAA,MACT,WAAW;AAAA,MACX;AAAA,MACA,SAAS,MAAM;AAAA,MAAC;AAAA,MAChB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAIF,OACJ,OAAOH,+BAA8BG,OAAMJ,UAAS;AACtD,UAAMO,eAAc,UAAU;AAC9B,UAAM,YAAY,iBAAiB,YAAY;AAC/C,UAAM,QAAQ,gBAAgB,eAAe;AAC7C,UAAM,YAAY,WAAW;AAC7B,UAAM,WAAW,YAAY,IAAI;AACjC,UAAM,CAAC,QAAQ,SAAS,QAAI,yBAAS,CAAC,IAAI;AAC1C,UAAM,mBAAe,uBAAO,IAAI;AAChC,4CAAoB,KAAK,MAAM,OAAO,CAAC,KAAK,CAAC;AAC7C,QAAI,qBAAa,CAAC,YAAY,MAAM;AAClC,mBAAa,UAAU,cAAcA,gBAAe,OAAO,SAASA,aAAY,QAAQ;AAAA,IAC1F;AAGA,QAAI,QAAQ,QAAQ;AAClB,gBAAU,KAAK;AAAA,IACjB;AACA,UAAM,aAAa,iBAAiB,MAAM;AACxC,YAAM,IAAI;AACV,+BAAyB,UAAU,eAAO,UAAU,WAAW,qBAAqB;AACpF,6BAAuB,UAAU;AAAA,QAAO;AAAA,QAAU;AAAA;AAAA;AAAA,QAGlD,MAAM,WAAW,kBAAkB;AAAA,QAAG;AAAA,MAAI;AAC1C,UAAI,QAAQ;AACV,eAAO;AAAA,MACT;AAIA,UAAI,WAAW;AACb,YAAI,uBAAuB;AAC3B,cAAM,uBAAuB,eAAe,yBAAyB,gBAAgB,MAAM,WAAW,OAAO,SAAS,cAAc,kBAAkB,OAAO,wBAAwBA,gBAAe,OAAO,SAASA,aAAY,QAAQ;AACxO,YAAI,MAAM,UAAU,wBAAwB,CAAC,SAAS,MAAM,QAAQ,oBAAoB,GAAG;AACzF,uBAAa,UAAU;AACvB,gBAAM,OAAO,MAAM;AAAA,QACrB;AAAA,MACF;AAAA,IACF,CAAC;AACD,UAAM,aAAa,iBAAiB,MAAM;AACxC,YAAM,OAAO;AACb,+BAAyB,WAAW,OAAO,SAAS,yBAAyB,QAAQ;AACrF,6BAAuB,WAAW,OAAO,SAAS,uBAAuB,QAAQ;AACjF,UAAI,cAAc;AAChB,YAAI;AAEJ,SAAC,wBAAwB,aAAa,YAAY,OAAO,SAAS,sBAAsB,SAAS,OAAO,SAAS,sBAAsB,MAAM,mBAAmB;AAChK,qBAAa,UAAU;AAAA,MACzB;AAAA,IACF,CAAC;AAMD,kCAAU,MAAM;AACd,UAAI,CAAC,QAAQ,CAAC;AAAW;AACzB,iBAAW;AAAA,IACb,GAAG;AAAA,MAAC;AAAA,MAAM;AAAA;AAAA,MAAqC;AAAA,IAAU,CAAC;AAK1D,kCAAU,MAAM;AACd,UAAI,CAAC;AAAQ;AACb,iBAAW;AAAA,IACb,GAAG,CAAC,QAAQ,UAAU,CAAC;AACvB,mBAAe,MAAM;AACnB,iBAAW;AAAA,IACb,CAAC;AAID,UAAM,qBAAqB,iBAAiB,MAAM;AAChD,UAAI,CAAC,gBAAgB,CAAC,UAAU,KAAK,CAAC,MAAM,WAAW,GAAG;AACxD;AAAA,MACF;AACA,YAAM,uBAAuB,cAAcA,gBAAe,OAAO,SAASA,aAAY,QAAQ;AAC9F,UAAI,MAAM,UAAU,wBAAwB,CAAC,SAAS,MAAM,QAAQ,oBAAoB,GAAG;AACzF,cAAM,OAAO,MAAM;AAAA,MACrB;AAAA,IACF,CAAC;AACD,UAAM,sBAAsB,iBAAiB,CAAAC,OAAK;AAChD,UAAIA,GAAE,WAAWA,GAAE,eAAe;AAChC;AAAA,MACF;AACA,yBAAmB,OAAO,SAAS,gBAAgBA,EAAC;AACpD,UAAI,aAAa,MAAM;AACrB,eAAO;AAAA,MACT;AAAA,IACF,CAAC;AACD,UAAM,wBAAwB,iBAAiB,CAAAA,OAAK;AAClD,UAAI,YAAY,SAASA,EAAC,KAAK,MAAM,WAAW,GAAG;AACjD,2BAAmB,OAAO,SAAS,gBAAgBA,EAAC;AACpD,YAAI,CAACA,GAAE,kBAAkB;AACvB,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF,CAAC;AACD,UAAM,6BAAyB,uBAAO;AACtC,UAAM,+BAA2B,uBAAO;AACxC,UAAM,eAAe,IAAI,SAAS;AAChC,gBAAU,IAAI;AACd,kBAAY,OAAO,SAAS,SAAS,GAAG,IAAI;AAAA,IAC9C;AACA,QAAI,CAAC,WAAW;AACd,aAAO;AAAA,IACT;AACA,UAAM,cAAc,OAAO,OAAO;AAAA,MAChC;AAAA,MACA,KAAK,MAAM;AAAA;AAAA,MAEX,cAAc,SAAS,WAAW,OAAO;AAAA,IAC3C,GAAG,MAAM;AAAA,MACP,OAAAH;AAAA,MACA;AAAA,MACA,UAAU;AAAA,IACZ,CAAC;AACD,QAAI,SAAS,eAAe,aAAa,WAAW,IAAiB,wCAAAC,KAAK,OAAO,OAAO,OAAO,CAAC,GAAG,aAAa;AAAA,MAC9G,UAAuB,gBAAM,qBAAa,UAAU;AAAA,QAClD,MAAM;AAAA,MACR,CAAC;AAAA,IACH,CAAC,CAAC;AACF,aAAS,iBAAiB,YAAY,eAAe;AAAA,MACnD,eAAe;AAAA,MACf,cAAc;AAAA,MACd,QAAQ;AAAA,MACR,IAAI,CAAC,CAAC;AAAA,MACN;AAAA,MACA;AAAA,MACA,UAAU;AAAA,MACV;AAAA,MACA;AAAA,MACA;AAAA,MACA,UAAU;AAAA,IACZ,CAAC;AACD,QAAI,kBAAkB;AACtB,QAAI,UAAU;AACZ,wBAAkB,eAAe;AAAA,QAC/B,KAAK,MAAM;AAAA,QACX,SAAS;AAAA,MACX,CAAC;AACD,wBAAkB,iBAAiB,oBAAoB,uBAAuB;AAAA,QAC5E,IAAI,CAAC,CAAC;AAAA,QACN,QAAQ;AAAA,QACR,cAAc;AAAA,QACd,eAAe;AAAA,QACf,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AACA,WAAoB,wCAAAA,KAAK,oBAAAG,UAAW;AAAA,MAClC,UAAuB,kCAAAC,QAAS,aAA2B,wCAAAC,MAAM,oBAAAF,UAAW;AAAA,QAC1E,UAAU,CAAC,iBAAiB,MAAM;AAAA,MACpC,CAAC,GAAG,SAAS;AAAA,IACf,CAAC;AAAA,EACH,CAAC;AACD,EAAAN,OAAM,cAAc;AACpB,MAAO,gBAAQ,OAAO,OAAOA,QAAO;AAAA,IAClC,SAAS;AAAA,EACX,CAAC;;;AY1Oc,WAAR,SAA0B,SAAS,WAAW;AACnD,QAAI,QAAQ;AAAW,aAAO,CAAC,CAAC,aAAa,QAAQ,UAAU,SAAS,SAAS;AACjF,YAAQ,OAAO,QAAQ,UAAU,WAAW,QAAQ,aAAa,KAAK,QAAQ,MAAM,YAAY,GAAG,MAAM;AAAA,EAC3G;;;ACDe,WAAR,SAA0B,SAAS,WAAW;AACnD,QAAI,QAAQ;AAAW,cAAQ,UAAU,IAAI,SAAS;AAAA,aAAW,CAAC,SAAS,SAAS,SAAS;AAAG,UAAI,OAAO,QAAQ,cAAc;AAAU,gBAAQ,YAAY,QAAQ,YAAY,MAAM;AAAA;AAAe,gBAAQ,aAAa,UAAU,QAAQ,aAAa,QAAQ,UAAU,WAAW,MAAM,MAAM,SAAS;AAAA,EAChT;;;ACVA,MAAI,UAAU,SAAS,UAAU,KAAK,KAAK,SAAS,UAAU,MAAM,CAAC,EAAE,KAAK;AAQ7D,WAAR,IAAqB,SAAS,UAAU;AAC7C,WAAO,QAAQ,QAAQ,iBAAiB,QAAQ,CAAC;AAAA,EACnD;;;ACVA,WAAS,iBAAiB,WAAW,eAAe;AAClD,WAAO,UAAU,QAAQ,IAAI,OAAO,YAAY,gBAAgB,aAAa,GAAG,GAAG,IAAI,EAAE,QAAQ,QAAQ,GAAG,EAAE,QAAQ,cAAc,EAAE;AAAA,EACxI;AASe,WAAR,YAA6B,SAAS,WAAW;AACtD,QAAI,QAAQ,WAAW;AACrB,cAAQ,UAAU,OAAO,SAAS;AAAA,IACpC,WAAW,OAAO,QAAQ,cAAc,UAAU;AAChD,cAAQ,YAAY,iBAAiB,QAAQ,WAAW,SAAS;AAAA,IACnE,OAAO;AACL,cAAQ,aAAa,SAAS,iBAAiB,QAAQ,aAAa,QAAQ,UAAU,WAAW,IAAI,SAAS,CAAC;AAAA,IACjH;AAAA,EACF;;;ACdA,MAAM,WAAW;AAAA,IACf,eAAe;AAAA,IACf,gBAAgB;AAAA,IAChB,gBAAgB;AAAA,EAClB;AACA,MAAM,wBAAN,cAAoC,qBAAa;AAAA,IAC/C,eAAe,MAAM,SAAS,QAAQ;AACpC,YAAM,SAAS,QAAQ,MAAM,IAAI;AAGjC,cAAQ,QAAQ,IAAI,IAAI;AACxB,kBAAI,SAAS;AAAA,QACX,CAAC,IAAI,GAAG,GAAG,WAAW,YAAI,SAAS,IAAI,CAAC,IAAI,MAAM;AAAA,MACpD,CAAC;AAAA,IACH;AAAA,IACA,QAAQ,MAAM,SAAS;AACrB,YAAM,QAAQ,QAAQ,QAAQ,IAAI;AAClC,UAAI,UAAU,QAAW;AACvB,eAAO,QAAQ,QAAQ,IAAI;AAC3B,oBAAI,SAAS;AAAA,UACX,CAAC,IAAI,GAAG;AAAA,QACV,CAAC;AAAA,MACH;AAAA,IACF;AAAA,IACA,kBAAkB,gBAAgB;AAChC,YAAM,kBAAkB,cAAc;AACtC,YAAM,YAAY,KAAK,WAAW;AAClC,eAAS,WAAW,YAAY;AAChC,UAAI,CAAC,eAAe;AAAgB;AACpC,YAAM,cAAc,KAAK,QAAQ,gBAAgB;AACjD,YAAM,aAAa,KAAK,QAAQ,eAAe;AAC/C,UAAI,WAAW,SAAS,aAAa,EAAE,QAAQ,QAAM,KAAK,eAAe,aAAa,IAAI,eAAe,cAAc,CAAC;AACxH,UAAI,WAAW,SAAS,cAAc,EAAE,QAAQ,QAAM,KAAK,eAAe,YAAY,IAAI,CAAC,eAAe,cAAc,CAAC;AACzH,UAAI,WAAW,SAAS,cAAc,EAAE,QAAQ,QAAM,KAAK,eAAe,YAAY,IAAI,eAAe,cAAc,CAAC;AAAA,IAC1H;AAAA,IACA,qBAAqB,gBAAgB;AACnC,YAAM,qBAAqB,cAAc;AACzC,YAAM,YAAY,KAAK,WAAW;AAClC,kBAAY,WAAW,YAAY;AACnC,YAAM,cAAc,KAAK,QAAQ,gBAAgB;AACjD,YAAM,aAAa,KAAK,QAAQ,eAAe;AAC/C,UAAI,WAAW,SAAS,aAAa,EAAE,QAAQ,QAAM,KAAK,QAAQ,aAAa,EAAE,CAAC;AAClF,UAAI,WAAW,SAAS,cAAc,EAAE,QAAQ,QAAM,KAAK,QAAQ,YAAY,EAAE,CAAC;AAClF,UAAI,WAAW,SAAS,cAAc,EAAE,QAAQ,QAAM,KAAK,QAAQ,YAAY,EAAE,CAAC;AAAA,IACpF;AAAA,EACF;AACA,MAAI;AACG,WAAS,iBAAiBS,UAAS;AACxC,QAAI,CAAC;AAAe,sBAAgB,IAAI,sBAAsBA,QAAO;AACrE,WAAO;AAAA,EACT;;;ACvDA,0BAAuB;AACvB,MAAAC,UAAuB;AACvB,MAAAC,iBAA4B;;;ACDb,WAAR,eAAgC,UAAU,YAAY;AAC3D,aAAS,YAAY,OAAO,OAAO,WAAW,SAAS;AACvD,aAAS,UAAU,cAAc;AACjC,oBAAe,UAAU,UAAU;AAAA,EACrC;;;ACHA,MAAAC,qBAAsB;AACtB,MAAAC,iBAAkB;AAClB,MAAAC,oBAAqB;;;ACJrB,MAAO,iBAAQ;AAAA,IACb,UAAU;AAAA,EACZ;;;ACFA,0BAAsB;AACf,MAAI,gBAAgB,OAAwC,kBAAAC,QAAU,UAAU,CAAC,kBAAAA,QAAU,QAAQ,kBAAAA,QAAU,MAAM;AAAA,IACxH,OAAO,kBAAAA,QAAU;AAAA,IACjB,MAAM,kBAAAA,QAAU;AAAA,IAChB,QAAQ,kBAAAA,QAAU;AAAA,EACpB,CAAC,EAAE,UAAU,CAAC,IAAI;AACX,MAAI,kBAAkB,OAAwC,kBAAAA,QAAU,UAAU,CAAC,kBAAAA,QAAU,QAAQ,kBAAAA,QAAU,MAAM;AAAA,IAC1H,OAAO,kBAAAA,QAAU;AAAA,IACjB,MAAM,kBAAAA,QAAU;AAAA,IAChB,QAAQ,kBAAAA,QAAU;AAAA,EACpB,CAAC,GAAG,kBAAAA,QAAU,MAAM;AAAA,IAClB,OAAO,kBAAAA,QAAU;AAAA,IACjB,WAAW,kBAAAA,QAAU;AAAA,IACrB,aAAa,kBAAAA,QAAU;AAAA,IACvB,MAAM,kBAAAA,QAAU;AAAA,IAChB,UAAU,kBAAAA,QAAU;AAAA,IACpB,YAAY,kBAAAA,QAAU;AAAA,EACxB,CAAC,CAAC,CAAC,IAAI;;;ACjBP,MAAAC,iBAAkB;AAClB,MAAO,iCAAQ,eAAAC,QAAM,cAAc,IAAI;;;ACDhC,MAAI,cAAc,SAASC,aAAYC,OAAM;AAClD,WAAOA,MAAK;AAAA,EACd;;;AJOO,MAAI,YAAY;AAChB,MAAI,SAAS;AACb,MAAI,WAAW;AACf,MAAI,UAAU;AACd,MAAI,UAAU;AA6FrB,MAAI,aAA0B,yBAAU,kBAAkB;AACxD,mBAAeC,aAAY,gBAAgB;AAE3C,aAASA,YAAW,OAAO,SAAS;AAClC,UAAI;AAEJ,cAAQ,iBAAiB,KAAK,MAAM,OAAO,OAAO,KAAK;AACvD,UAAI,cAAc;AAElB,UAAI,SAAS,eAAe,CAAC,YAAY,aAAa,MAAM,QAAQ,MAAM;AAC1E,UAAI;AACJ,YAAM,eAAe;AAErB,UAAI,MAAM,IAAI;AACZ,YAAI,QAAQ;AACV,0BAAgB;AAChB,gBAAM,eAAe;AAAA,QACvB,OAAO;AACL,0BAAgB;AAAA,QAClB;AAAA,MACF,OAAO;AACL,YAAI,MAAM,iBAAiB,MAAM,cAAc;AAC7C,0BAAgB;AAAA,QAClB,OAAO;AACL,0BAAgB;AAAA,QAClB;AAAA,MACF;AAEA,YAAM,QAAQ;AAAA,QACZ,QAAQ;AAAA,MACV;AACA,YAAM,eAAe;AACrB,aAAO;AAAA,IACT;AAEA,IAAAA,YAAW,2BAA2B,SAAS,yBAAyBC,OAAM,WAAW;AACvF,UAAI,SAASA,MAAK;AAElB,UAAI,UAAU,UAAU,WAAW,WAAW;AAC5C,eAAO;AAAA,UACL,QAAQ;AAAA,QACV;AAAA,MACF;AAEA,aAAO;AAAA,IACT;AAkBA,QAAI,SAASD,YAAW;AAExB,WAAO,oBAAoB,SAAS,oBAAoB;AACtD,WAAK,aAAa,MAAM,KAAK,YAAY;AAAA,IAC3C;AAEA,WAAO,qBAAqB,SAAS,mBAAmB,WAAW;AACjE,UAAI,aAAa;AAEjB,UAAI,cAAc,KAAK,OAAO;AAC5B,YAAI,SAAS,KAAK,MAAM;AAExB,YAAI,KAAK,MAAM,IAAI;AACjB,cAAI,WAAW,YAAY,WAAW,SAAS;AAC7C,yBAAa;AAAA,UACf;AAAA,QACF,OAAO;AACL,cAAI,WAAW,YAAY,WAAW,SAAS;AAC7C,yBAAa;AAAA,UACf;AAAA,QACF;AAAA,MACF;AAEA,WAAK,aAAa,OAAO,UAAU;AAAA,IACrC;AAEA,WAAO,uBAAuB,SAAS,uBAAuB;AAC5D,WAAK,mBAAmB;AAAA,IAC1B;AAEA,WAAO,cAAc,SAAS,cAAc;AAC1C,UAAIE,WAAU,KAAK,MAAM;AACzB,UAAI,MAAM,OAAO;AACjB,aAAO,QAAQ,SAASA;AAExB,UAAIA,YAAW,QAAQ,OAAOA,aAAY,UAAU;AAClD,eAAOA,SAAQ;AACf,gBAAQA,SAAQ;AAEhB,iBAASA,SAAQ,WAAW,SAAYA,SAAQ,SAAS;AAAA,MAC3D;AAEA,aAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAEA,WAAO,eAAe,SAAS,aAAa,UAAU,YAAY;AAChE,UAAI,aAAa,QAAQ;AACvB,mBAAW;AAAA,MACb;AAEA,UAAI,eAAe,MAAM;AAEvB,aAAK,mBAAmB;AAExB,YAAI,eAAe,UAAU;AAC3B,cAAI,KAAK,MAAM,iBAAiB,KAAK,MAAM,cAAc;AACvD,gBAAIC,QAAO,KAAK,MAAM,UAAU,KAAK,MAAM,QAAQ,UAAU,kBAAAC,QAAS,YAAY,IAAI;AAItF,gBAAID;AAAM,0BAAYA,KAAI;AAAA,UAC5B;AAEA,eAAK,aAAa,QAAQ;AAAA,QAC5B,OAAO;AACL,eAAK,YAAY;AAAA,QACnB;AAAA,MACF,WAAW,KAAK,MAAM,iBAAiB,KAAK,MAAM,WAAW,QAAQ;AACnE,aAAK,SAAS;AAAA,UACZ,QAAQ;AAAA,QACV,CAAC;AAAA,MACH;AAAA,IACF;AAEA,WAAO,eAAe,SAAS,aAAa,UAAU;AACpD,UAAI,SAAS;AAEb,UAAI,QAAQ,KAAK,MAAM;AACvB,UAAI,YAAY,KAAK,UAAU,KAAK,QAAQ,aAAa;AAEzD,UAAIE,SAAQ,KAAK,MAAM,UAAU,CAAC,SAAS,IAAI,CAAC,kBAAAD,QAAS,YAAY,IAAI,GAAG,SAAS,GACjF,YAAYC,OAAM,CAAC,GACnB,iBAAiBA,OAAM,CAAC;AAE5B,UAAI,WAAW,KAAK,YAAY;AAChC,UAAI,eAAe,YAAY,SAAS,SAAS,SAAS;AAG1D,UAAI,CAAC,YAAY,CAAC,SAAS,eAAO,UAAU;AAC1C,aAAK,aAAa;AAAA,UAChB,QAAQ;AAAA,QACV,GAAG,WAAY;AACb,iBAAO,MAAM,UAAU,SAAS;AAAA,QAClC,CAAC;AACD;AAAA,MACF;AAEA,WAAK,MAAM,QAAQ,WAAW,cAAc;AAC5C,WAAK,aAAa;AAAA,QAChB,QAAQ;AAAA,MACV,GAAG,WAAY;AACb,eAAO,MAAM,WAAW,WAAW,cAAc;AAEjD,eAAO,gBAAgB,cAAc,WAAY;AAC/C,iBAAO,aAAa;AAAA,YAClB,QAAQ;AAAA,UACV,GAAG,WAAY;AACb,mBAAO,MAAM,UAAU,WAAW,cAAc;AAAA,UAClD,CAAC;AAAA,QACH,CAAC;AAAA,MACH,CAAC;AAAA,IACH;AAEA,WAAO,cAAc,SAAS,cAAc;AAC1C,UAAI,SAAS;AAEb,UAAI,OAAO,KAAK,MAAM;AACtB,UAAI,WAAW,KAAK,YAAY;AAChC,UAAI,YAAY,KAAK,MAAM,UAAU,SAAY,kBAAAD,QAAS,YAAY,IAAI;AAE1E,UAAI,CAAC,QAAQ,eAAO,UAAU;AAC5B,aAAK,aAAa;AAAA,UAChB,QAAQ;AAAA,QACV,GAAG,WAAY;AACb,iBAAO,MAAM,SAAS,SAAS;AAAA,QACjC,CAAC;AACD;AAAA,MACF;AAEA,WAAK,MAAM,OAAO,SAAS;AAC3B,WAAK,aAAa;AAAA,QAChB,QAAQ;AAAA,MACV,GAAG,WAAY;AACb,eAAO,MAAM,UAAU,SAAS;AAEhC,eAAO,gBAAgB,SAAS,MAAM,WAAY;AAChD,iBAAO,aAAa;AAAA,YAClB,QAAQ;AAAA,UACV,GAAG,WAAY;AACb,mBAAO,MAAM,SAAS,SAAS;AAAA,UACjC,CAAC;AAAA,QACH,CAAC;AAAA,MACH,CAAC;AAAA,IACH;AAEA,WAAO,qBAAqB,SAAS,qBAAqB;AACxD,UAAI,KAAK,iBAAiB,MAAM;AAC9B,aAAK,aAAa,OAAO;AACzB,aAAK,eAAe;AAAA,MACtB;AAAA,IACF;AAEA,WAAO,eAAe,SAAS,aAAa,WAAW,UAAU;AAI/D,iBAAW,KAAK,gBAAgB,QAAQ;AACxC,WAAK,SAAS,WAAW,QAAQ;AAAA,IACnC;AAEA,WAAO,kBAAkB,SAAS,gBAAgB,UAAU;AAC1D,UAAI,SAAS;AAEb,UAAI,SAAS;AAEb,WAAK,eAAe,SAAU,OAAO;AACnC,YAAI,QAAQ;AACV,mBAAS;AACT,iBAAO,eAAe;AACtB,mBAAS,KAAK;AAAA,QAChB;AAAA,MACF;AAEA,WAAK,aAAa,SAAS,WAAY;AACrC,iBAAS;AAAA,MACX;AAEA,aAAO,KAAK;AAAA,IACd;AAEA,WAAO,kBAAkB,SAAS,gBAAgBF,UAAS,SAAS;AAClE,WAAK,gBAAgB,OAAO;AAC5B,UAAIC,QAAO,KAAK,MAAM,UAAU,KAAK,MAAM,QAAQ,UAAU,kBAAAC,QAAS,YAAY,IAAI;AACtF,UAAI,+BAA+BF,YAAW,QAAQ,CAAC,KAAK,MAAM;AAElE,UAAI,CAACC,SAAQ,8BAA8B;AACzC,mBAAW,KAAK,cAAc,CAAC;AAC/B;AAAA,MACF;AAEA,UAAI,KAAK,MAAM,gBAAgB;AAC7B,YAAI,QAAQ,KAAK,MAAM,UAAU,CAAC,KAAK,YAAY,IAAI,CAACA,OAAM,KAAK,YAAY,GAC3E,YAAY,MAAM,CAAC,GACnB,oBAAoB,MAAM,CAAC;AAE/B,aAAK,MAAM,eAAe,WAAW,iBAAiB;AAAA,MACxD;AAEA,UAAID,YAAW,MAAM;AACnB,mBAAW,KAAK,cAAcA,QAAO;AAAA,MACvC;AAAA,IACF;AAEA,WAAO,SAAS,SAASI,UAAS;AAChC,UAAI,SAAS,KAAK,MAAM;AAExB,UAAI,WAAW,WAAW;AACxB,eAAO;AAAA,MACT;AAEA,UAAI,cAAc,KAAK,OACnB,WAAW,YAAY,UACvB,MAAM,YAAY,IAClB,gBAAgB,YAAY,cAC5B,iBAAiB,YAAY,eAC7B,UAAU,YAAY,QACtB,SAAS,YAAY,OACrB,QAAQ,YAAY,MACpB,WAAW,YAAY,SACvB,kBAAkB,YAAY,gBAC9B,WAAW,YAAY,SACvB,cAAc,YAAY,YAC1B,aAAa,YAAY,WACzB,UAAU,YAAY,QACtB,aAAa,YAAY,WACzB,YAAY,YAAY,UACxB,WAAW,YAAY,SACvB,aAAa,8BAA8B,aAAa,CAAC,YAAY,MAAM,gBAAgB,iBAAiB,UAAU,SAAS,QAAQ,WAAW,kBAAkB,WAAW,cAAc,aAAa,UAAU,aAAa,YAAY,SAAS,CAAC;AAE3P;AAAA;AAAA,QAGE,+BAAAC,QAAM,cAAc,+BAAuB,UAAU;AAAA,UACnD,OAAO;AAAA,QACT,GAAG,OAAO,aAAa,aAAa,SAAS,QAAQ,UAAU,IAAI,eAAAA,QAAM,aAAa,eAAAA,QAAM,SAAS,KAAK,QAAQ,GAAG,UAAU,CAAC;AAAA;AAAA,IAEpI;AAEA,WAAOP;AAAA,EACT,EAAE,eAAAO,QAAM,SAAS;AAEjB,aAAW,cAAc;AACzB,aAAW,YAAY,OAAwC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAY7D,SAAS,mBAAAC,QAAU,MAAM;AAAA,MACvB,SAAS,OAAO,YAAY,cAAc,mBAAAA,QAAU,MAAM,SAAU,WAAW,KAAK,eAAeC,WAAU,cAAc,QAAQ;AACjI,YAAI,QAAQ,UAAU,GAAG;AACzB,eAAO,mBAAAD,QAAU,WAAW,SAAS,mBAAmB,QAAQ,MAAM,cAAc,YAAY,UAAU,OAAO,EAAE,WAAW,KAAK,eAAeC,WAAU,cAAc,MAAM;AAAA,MAClL;AAAA,IACF,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAgBD,UAAU,mBAAAD,QAAU,UAAU,CAAC,mBAAAA,QAAU,KAAK,YAAY,mBAAAA,QAAU,QAAQ,UAAU,CAAC,EAAE;AAAA;AAAA;AAAA;AAAA,IAKzF,IAAI,mBAAAA,QAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQd,cAAc,mBAAAA,QAAU;AAAA;AAAA;AAAA;AAAA;AAAA,IAMxB,eAAe,mBAAAA,QAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAazB,QAAQ,mBAAAA,QAAU;AAAA;AAAA;AAAA;AAAA,IAKlB,OAAO,mBAAAA,QAAU;AAAA;AAAA;AAAA;AAAA,IAKjB,MAAM,mBAAAA,QAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IA4BhB,SAAS,SAAS,QAAQ,OAAO;AAC/B,UAAI,KAAK;AACT,UAAI,CAAC,MAAM;AAAgB,aAAK,GAAG;AAEnC,eAAS,OAAO,UAAU,QAAQ,OAAO,IAAI,MAAM,OAAO,IAAI,OAAO,IAAI,CAAC,GAAG,OAAO,GAAG,OAAO,MAAM,QAAQ;AAC1G,aAAK,OAAO,CAAC,IAAI,UAAU,IAAI;AAAA,MACjC;AAEA,aAAO,GAAG,MAAM,QAAQ,CAAC,KAAK,EAAE,OAAO,IAAI,CAAC;AAAA,IAC9C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAgBA,gBAAgB,mBAAAA,QAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAU1B,SAAS,mBAAAA,QAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAUnB,YAAY,mBAAAA,QAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAUtB,WAAW,mBAAAA,QAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IASrB,QAAQ,mBAAAA,QAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IASlB,WAAW,mBAAAA,QAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IASrB,UAAU,mBAAAA,QAAU;AAAA,EACtB,IAAI,CAAC;AAEL,WAASE,QAAO;AAAA,EAAC;AAEjB,aAAW,eAAe;AAAA,IACxB,IAAI;AAAA,IACJ,cAAc;AAAA,IACd,eAAe;AAAA,IACf,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,MAAM;AAAA,IACN,SAASA;AAAA,IACT,YAAYA;AAAA,IACZ,WAAWA;AAAA,IACX,QAAQA;AAAA,IACR,WAAWA;AAAA,IACX,UAAUA;AAAA,EACZ;AACA,aAAW,YAAY;AACvB,aAAW,SAAS;AACpB,aAAW,WAAW;AACtB,aAAW,UAAU;AACrB,aAAW,UAAU;AACrB,MAAO,qBAAQ;;;AK9mBf,WAASC,eAAcC,OAAM,UAAU;AACrC,UAAM,MAAM,YAAIA,OAAM,QAAQ,KAAK;AACnC,UAAM,OAAO,IAAI,QAAQ,IAAI,MAAM,KAAK,MAAO;AAC/C,WAAO,WAAW,GAAG,IAAI;AAAA,EAC3B;AACe,WAAR,sBAAuC,SAAS,SAAS;AAC9D,UAAM,WAAWD,eAAc,SAAS,oBAAoB;AAC5D,UAAM,QAAQA,eAAc,SAAS,iBAAiB;AACtD,UAAM,SAAS,cAAc,SAAS,CAAAE,OAAK;AACzC,UAAIA,GAAE,WAAW,SAAS;AACxB,eAAO;AACP,gBAAQA,EAAC;AAAA,MACX;AAAA,IACF,GAAG,WAAW,KAAK;AAAA,EACrB;;;ACde,WAAR,qBAAsCC,OAAM;AAEjD,IAAAA,MAAK;AAAA,EACP;;;ACLA,MAAAC,iBAA2C;;;ACA3C,MAAAC,oBAAqB;AACN,WAAR,gBAAiC,oBAAoB;AAC1D,QAAI,sBAAsB,cAAc,oBAAoB;AAC1D,aAAO,kBAAAC,QAAS,YAAY,kBAAkB;AAAA,IAChD;AACA,WAAO,sBAAsB,OAAO,qBAAqB;AAAA,EAC3D;;;ADFA,MAAAC,sBAA4B;AAE5B,MAAM,oBAAiC,+BAAAC,QAAM,WAAW,CAAC;AAAA,IACvD;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACL,GAAG,QAAQ;AACT,UAAM,cAAU,uBAAO,IAAI;AAC3B,UAAM,YAAY,sBAAc,SAAS,QAAQ;AACjD,UAAM,YAAY,CAAAC,OAAK;AACrB,gBAAU,gBAAgBA,EAAC,CAAC;AAAA,IAC9B;AACA,UAAMC,aAAY,cAAY,WAAS;AACrC,UAAI,YAAY,QAAQ,SAAS;AAC/B,iBAAS,QAAQ,SAAS,KAAK;AAAA,MACjC;AAAA,IACF;AAGA,UAAM,kBAAc,4BAAYA,WAAU,OAAO,GAAG,CAAC,OAAO,CAAC;AAC7D,UAAM,qBAAiB,4BAAYA,WAAU,UAAU,GAAG,CAAC,UAAU,CAAC;AACtE,UAAM,oBAAgB,4BAAYA,WAAU,SAAS,GAAG,CAAC,SAAS,CAAC;AACnE,UAAM,iBAAa,4BAAYA,WAAU,MAAM,GAAG,CAAC,MAAM,CAAC;AAC1D,UAAM,oBAAgB,4BAAYA,WAAU,SAAS,GAAG,CAAC,SAAS,CAAC;AACnE,UAAM,mBAAe,4BAAYA,WAAU,QAAQ,GAAG,CAAC,QAAQ,CAAC;AAChE,UAAM,2BAAuB,4BAAYA,WAAU,cAAc,GAAG,CAAC,cAAc,CAAC;AAGpF,WAAoB,wCAAAC,KAAK,oBAAY;AAAA,MACnC;AAAA,MACA,GAAG;AAAA,MACH,SAAS;AAAA,MACT,WAAW;AAAA,MACX,YAAY;AAAA,MACZ,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,WAAW;AAAA,MACX,gBAAgB;AAAA,MAChB;AAAA,MACA,UAAU,OAAO,aAAa,aAAa,CAAC,QAAQ;AAAA;AAAA,QAEpD,SAAS,QAAQ;AAAA,UACf,GAAG;AAAA,UACH,KAAK;AAAA,QACP,CAAC;AAAA,UAAiB,+BAAAH,QAAM,aAAa,UAAU;AAAA,QAC7C,KAAK;AAAA,MACP,CAAC;AAAA,IACH,CAAC;AAAA,EACH,CAAC;AACD,MAAO,4BAAQ;;;ATrDf,MAAAI,sBAA4B;AAC5B,MAAM,aAAa;AAAA,IACjB,CAAC,QAAQ,GAAG;AAAA,IACZ,CAAC,OAAO,GAAG;AAAA,EACb;AACA,MAAM,OAAoB,gBAAM,mBAAW,CAAC;AAAA,IAC1C;AAAA,IACA;AAAA,IACA,oBAAoB,CAAC;AAAA,IACrB;AAAA,IACA,GAAG;AAAA,EACL,GAAG,QAAQ;AACT,UAAM,QAAQ;AAAA,MACZ,IAAI;AAAA,MACJ,SAAS;AAAA,MACT,cAAc;AAAA,MACd,eAAe;AAAA,MACf,QAAQ;AAAA,MACR,GAAG;AAAA,IACL;AACA,UAAM,kBAAc,4BAAY,CAACC,OAAM,gBAAgB;AACrD,2BAAqBA,KAAI;AACzB,iBAAW,OAAO,SAAS,QAAQA,OAAM,WAAW;AAAA,IACtD,GAAG,CAAC,OAAO,CAAC;AACZ,WAAoB,wCAAAC,KAAK,2BAAmB;AAAA,MAC1C;AAAA,MACA,gBAAgB;AAAA,MAChB,GAAG;AAAA,MACH,SAAS;AAAA,MACT,UAAU,SAAS;AAAA,MACnB,UAAU,CAAC,QAAQ,eAA4B,gBAAM,qBAAa,UAAU;AAAA,QAC1E,GAAG;AAAA,QACH,eAAW,kBAAAC,SAAW,QAAQ,WAAW,SAAS,MAAM,WAAW,WAAW,MAAM,GAAG,kBAAkB,MAAM,CAAC;AAAA,MAClH,CAAC;AAAA,IACH,CAAC;AAAA,EACH,CAAC;AACD,OAAK,cAAc;AACnB,MAAO,eAAQ;;;AW5Cf,MAAAC,qBAAuB;;;ACAvB,MAAI,UAAU;AACC,WAAR,SAA0B,QAAQ;AACvC,WAAO,OAAO,QAAQ,SAAS,SAAU,GAAG,KAAK;AAC/C,aAAO,IAAI,YAAY;AAAA,IACzB,CAAC;AAAA,EACH;;;ADHA,MAAAC,UAAuB;;;AEFvB,MAAAC,UAAuB;AACvB,MAAAC,iBAAoC;AACpC,MAAAC,sBAA4B;AACrB,MAAM,sBAAsB,CAAC,OAAO,MAAM,MAAM,MAAM,MAAM,IAAI;AAChE,MAAM,yBAAyB;AACtC,MAAMC,gBAA4B,gBAAM,sBAAc;AAAA,IACpD,UAAU,CAAC;AAAA,IACX,aAAa;AAAA,IACb,eAAe;AAAA,EACjB,CAAC;AACD,MAAM;AAAA,IACJ,UAAAC;AAAA,IACA,UAAAC;AAAA,EACF,IAAIF;AAqBG,WAAS,mBAAmBG,SAAQ,eAAe;AACxD,UAAM;AAAA,MACJ,UAAAC;AAAA,IACF,QAAI,2BAAWC,aAAY;AAC3B,WAAOF,WAAUC,UAAS,aAAa,KAAK;AAAA,EAC9C;AACO,WAAS,0BAA0B;AACxC,UAAM;AAAA,MACJ;AAAA,IACF,QAAI,2BAAWC,aAAY;AAC3B,WAAO;AAAA,EACT;AACO,WAAS,4BAA4B;AAC1C,UAAM;AAAA,MACJ;AAAA,IACF,QAAI,2BAAWA,aAAY;AAC3B,WAAO;AAAA,EACT;AACO,WAAS,WAAW;AACzB,UAAM;AAAA,MACJ;AAAA,IACF,QAAI,2BAAWA,aAAY;AAC3B,WAAO,QAAQ;AAAA,EACjB;;;AFrDA,MAAAC,sBAA4B;AAC5B,MAAM,aAAa,SAAO,IAAI,CAAC,EAAE,YAAY,IAAI,SAAS,GAAG,EAAE,MAAM,CAAC;AAEvD,WAAR,mBAAoCC,SAAQ;AAAA,IACjD,cAAc,WAAWA,OAAM;AAAA,IAC/B,WAAAC;AAAA,IACA,cAAAC;AAAA,EACF,IAAI,CAAC,GAAG;AACN,UAAM,cAA2B,gBAAM,mBAAW,CAAC;AAAA,MACjD;AAAA,MACA;AAAA,MACA,IAAI,MAAMD,cAAa;AAAA,MACvB,GAAG;AAAA,IACL,GAAG,QAAQ;AACT,YAAM,iBAAiB;AAAA,QACrB,GAAGC;AAAA,QACH,GAAG;AAAA,MACL;AACA,YAAM,iBAAiB,mBAAmB,UAAUF,OAAM;AAC1D,aAAoB,wCAAAG,KAAK,KAAK;AAAA,QAC5B;AAAA,QACA,eAAW,mBAAAC,SAAW,WAAW,cAAc;AAAA,QAC/C,GAAG;AAAA,MACL,CAAC;AAAA,IACH,CAAC;AACD,gBAAY,cAAc;AAC1B,WAAO;AAAA,EACT;;;AG9BA,MAAO,oBAAQ,mBAAmB,YAAY;;;ACD9C,MAAAC,UAAuB;AACvB,MAAM,eAA4B,gBAAM,sBAAc;AAAA;AAAA,IAEpD,SAAS;AAAA,IAAC;AAAA,EACZ,CAAC;AACD,MAAO,uBAAQ;;;ACLf,MAAAC,qBAAuB;AACvB,MAAAC,UAAuB;AAEvB,MAAAC,sBAA4B;AAC5B,MAAM,cAA2B,gBAAM,mBAAW,CAAC;AAAA,IACjD;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,MAAAC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACL,GAAG,QAAQ;AACT,eAAW,mBAAmB,UAAU,OAAO;AAC/C,UAAM,cAAc,GAAG,QAAQ;AAC/B,UAAM,kBAAkB,OAAO,eAAe,WAAW,GAAG,QAAQ,eAAe,UAAU,KAAK,GAAG,QAAQ;AAC7G,WAAoB,wCAAAC,KAAK,OAAO;AAAA,MAC9B,GAAG;AAAA,MACH;AAAA,MACA,eAAW,mBAAAC,SAAW,aAAa,WAAWF,SAAQ,GAAG,QAAQ,IAAIA,KAAI,IAAI,YAAY,GAAG,WAAW,aAAa,cAAc,GAAG,WAAW,eAAe,cAAc,eAAe;AAAA,MAC5L,UAAuB,wCAAAC,KAAK,OAAO;AAAA,QACjC,eAAW,mBAAAC,SAAW,GAAG,QAAQ,YAAY,gBAAgB;AAAA,QAC7D;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AAAA,EACH,CAAC;AACD,cAAY,cAAc;AAC1B,MAAO,sBAAQ;;;AC5Bf,MAAO,sBAAQ,mBAAmB,cAAc;;;ACDhD,MAAAC,qBAAuB;AACvB,MAAAC,UAAuB;;;ACDvB,MAAAC,UAAuB;AACvB,MAAAC,iBAA2B;;;ACD3B,MAAAC,qBAAsB;AACtB,MAAAC,UAAuB;AACvB,MAAAC,qBAAuB;AACvB,MAAAC,uBAA4B;AAC5B,MAAM,YAAY;AAAA;AAAA,IAEhB,cAAc,mBAAAC,QAAU;AAAA;AAAA,IAExB,SAAS,mBAAAA,QAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMnB,SAAS,mBAAAA,QAAU,MAAM,CAAC,OAAO,CAAC;AAAA,EACpC;AACA,MAAM,cAA2B,gBAAM,mBAAW,CAAC;AAAA,IACjD;AAAA,IACA;AAAA,IACA,cAAc,YAAY;AAAA,IAC1B,GAAG;AAAA,EACL,GAAG,QAAqB,yCAAAC,KAAK,UAAU;AAAA,IACrC;AAAA,IACA,MAAM;AAAA,IACN,eAAW,mBAAAC,SAAW,aAAa,WAAW,aAAa,OAAO,IAAI,SAAS;AAAA,IAC/E,cAAc;AAAA,IACd,GAAG;AAAA,EACL,CAAC,CAAC;AACF,cAAY,cAAc;AAC1B,cAAY,YAAY;AACxB,MAAO,sBAAQ;;;ADzBf,MAAAC,uBAA4B;AAC5B,MAAAA,uBAA8B;AAC9B,MAAM,sBAAmC,gBAAM,mBAAW,CAAC;AAAA,IACzD,aAAa;AAAA,IACb;AAAA,IACA,cAAc;AAAA,IACd;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACL,GAAG,QAAQ;AACT,UAAM,cAAU,2BAAW,oBAAY;AACvC,UAAM,cAAc,iBAAiB,MAAM;AACzC,iBAAW,OAAO,SAAS,QAAQ,OAAO;AAC1C,gBAAU,OAAO,SAAS,OAAO;AAAA,IACnC,CAAC;AACD,WAAoB,yCAAAC,MAAM,OAAO;AAAA,MAC/B;AAAA,MACA,GAAG;AAAA,MACH,UAAU,CAAC,UAAU,eAA4B,yCAAAC,KAAK,qBAAa;AAAA,QACjE,cAAc;AAAA,QACd,SAAS;AAAA,QACT,SAAS;AAAA,MACX,CAAC,CAAC;AAAA,IACJ,CAAC;AAAA,EACH,CAAC;AACD,MAAO,8BAAQ;;;AD1Bf,MAAAC,uBAA4B;AAC5B,MAAM,cAA2B,gBAAM,mBAAW,CAAC;AAAA,IACjD;AAAA,IACA;AAAA,IACA,aAAa;AAAA,IACb,cAAc;AAAA,IACd,GAAG;AAAA,EACL,GAAG,QAAQ;AACT,eAAW,mBAAmB,UAAU,cAAc;AACtD,WAAoB,yCAAAC,KAAK,6BAAqB;AAAA,MAC5C;AAAA,MACA,GAAG;AAAA,MACH,eAAW,mBAAAC,SAAW,WAAW,QAAQ;AAAA,MACzC;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH,CAAC;AACD,cAAY,cAAc;AAC1B,MAAO,sBAAQ;;;AGtBf,MAAAC,UAAuB;AACvB,MAAAC,qBAAuB;AACvB,MAAAC,uBAA4B;AAC5B,MAAO,2BAAS,eAA0B,gBAAM,mBAAW,CAAC,GAAG,QAAqB,yCAAAC,KAAK,OAAO;AAAA,IAC9F,GAAG;AAAA,IACH;AAAA,IACA,eAAW,mBAAAC,SAAW,EAAE,WAAW,SAAS;AAAA,EAC9C,CAAC,CAAC;;;ACLF,MAAM,gBAAgB,yBAAiB,IAAI;AAC3C,MAAO,qBAAQ,mBAAmB,eAAe;AAAA,IAC/C,WAAW;AAAA,EACb,CAAC;;;A9DkBD,MAAAC,uBAA4B;AAE5B,WAAS,iBAAiB,OAAO;AAC/B,WAAoB,yCAAAC,KAAK,cAAM;AAAA,MAC7B,GAAG;AAAA,MACH,SAAS;AAAA,IACX,CAAC;AAAA,EACH;AACA,WAAS,mBAAmB,OAAO;AACjC,WAAoB,yCAAAA,KAAK,cAAM;AAAA,MAC7B,GAAG;AAAA,MACH,SAAS;AAAA,IACX,CAAC;AAAA,EACH;AAGA,MAAMC,SAAqB,gBAAM,mBAAW,CAAC;AAAA,IAC3C;AAAA,IACA;AAAA,IACA,OAAAC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,UAAU,SAAS;AAAA,IACnB,mBAAmB;AAAA,IACnB,oBAAoB;AAAA,IACpB,cAAc;AAAA;AAAA,IAGd,OAAO;AAAA,IACP,YAAY;AAAA,IACZ,WAAW;AAAA,IACX,WAAW;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,YAAY;AAAA,IACZ,eAAe;AAAA,IACf,eAAe;AAAA,IACf;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IACT,GAAG;AAAA,EACL,GAAG,QAAQ;AACT,UAAM,CAAC,YAAY,QAAQ,QAAI,yBAAS,CAAC,CAAC;AAC1C,UAAM,CAAC,oBAAoB,qBAAqB,QAAI,yBAAS,KAAK;AAClE,UAAM,2BAAuB,uBAAO,KAAK;AACzC,UAAM,6BAAyB,uBAAO,KAAK;AAC3C,UAAM,oCAAgC,uBAAO,IAAI;AACjD,UAAM,CAAC,OAAO,WAAW,IAAI,eAAe;AAC5C,UAAM,YAAY,sBAAc,KAAK,WAAW;AAChD,UAAM,aAAa,iBAAiB,MAAM;AAC1C,UAAMC,SAAQ,SAAS;AACvB,eAAW,mBAAmB,UAAU,OAAO;AAC/C,UAAM,mBAAe,wBAAQ,OAAO;AAAA,MAClC,QAAQ;AAAA,IACV,IAAI,CAAC,UAAU,CAAC;AAChB,aAAS,kBAAkB;AACzB,UAAI;AAAc,eAAO;AACzB,aAAO,iBAAiB;AAAA,QACtB,OAAAA;AAAA,MACF,CAAC;AAAA,IACH;AACA,aAAS,kBAAkBC,OAAM;AAC/B,UAAI,CAAC;AAAW;AAChB,YAAM,yBAAyB,gBAAgB,EAAE,kBAAkB,IAAI;AACvE,YAAM,qBAAqBA,MAAK,eAAe,cAAcA,KAAI,EAAE,gBAAgB;AACnF,eAAS;AAAA,QACP,cAAc,0BAA0B,CAAC,qBAAqB,cAAiB,IAAI;AAAA,QACnF,aAAa,CAAC,0BAA0B,qBAAqB,cAAiB,IAAI;AAAA,MACpF,CAAC;AAAA,IACH;AACA,UAAM,qBAAqB,iBAAiB,MAAM;AAChD,UAAI,OAAO;AACT,0BAAkB,MAAM,MAAM;AAAA,MAChC;AAAA,IACF,CAAC;AACD,mBAAe,MAAM;AACnB,kCAAoB,QAAQ,UAAU,kBAAkB;AACxD,oCAA8B,WAAW,OAAO,SAAS,8BAA8B,QAAQ;AAAA,IACjG,CAAC;AAKD,UAAM,wBAAwB,MAAM;AAClC,2BAAqB,UAAU;AAAA,IACjC;AACA,UAAM,gBAAgB,CAAAC,OAAK;AACzB,UAAI,qBAAqB,WAAW,SAASA,GAAE,WAAW,MAAM,QAAQ;AACtE,+BAAuB,UAAU;AAAA,MACnC;AACA,2BAAqB,UAAU;AAAA,IACjC;AACA,UAAM,6BAA6B,MAAM;AACvC,4BAAsB,IAAI;AAC1B,oCAA8B,UAAU,cAAc,MAAM,QAAQ,MAAM;AACxE,8BAAsB,KAAK;AAAA,MAC7B,CAAC;AAAA,IACH;AACA,UAAM,4BAA4B,CAAAA,OAAK;AACrC,UAAIA,GAAE,WAAWA,GAAE,eAAe;AAChC;AAAA,MACF;AACA,iCAA2B;AAAA,IAC7B;AACA,UAAM,cAAc,CAAAA,OAAK;AACvB,UAAI,aAAa,UAAU;AACzB,kCAA0BA,EAAC;AAC3B;AAAA,MACF;AACA,UAAI,uBAAuB,WAAWA,GAAE,WAAWA,GAAE,eAAe;AAClE,+BAAuB,UAAU;AACjC;AAAA,MACF;AACA,gBAAU,OAAO,SAAS,OAAO;AAAA,IACnC;AACA,UAAM,sBAAsB,CAAAA,OAAK;AAC/B,UAAI,UAAU;AACZ,2BAAmB,OAAO,SAAS,gBAAgBA,EAAC;AAAA,MACtD,OAAO;AAEL,QAAAA,GAAE,eAAe;AACjB,YAAI,aAAa,UAAU;AAEzB,qCAA2B;AAAA,QAC7B;AAAA,MACF;AAAA,IACF;AACA,UAAM,cAAc,CAACD,OAAM,gBAAgB;AACzC,UAAIA,OAAM;AACR,0BAAkBA,KAAI;AAAA,MACxB;AACA,iBAAW,OAAO,SAAS,QAAQA,OAAM,WAAW;AAAA,IACtD;AACA,UAAM,aAAa,CAAAA,UAAQ;AACzB,oCAA8B,WAAW,OAAO,SAAS,8BAA8B,QAAQ;AAC/F,gBAAU,OAAO,SAAS,OAAOA,KAAI;AAAA,IACvC;AACA,UAAM,iBAAiB,CAACA,OAAM,gBAAgB;AAC5C,oBAAc,OAAO,SAAS,WAAWA,OAAM,WAAW;AAG1D,+BAAiB,QAAQ,UAAU,kBAAkB;AAAA,IACvD;AACA,UAAM,eAAe,CAAAA,UAAQ;AAC3B,UAAIA;AAAM,QAAAA,MAAK,MAAM,UAAU;AAC/B,kBAAY,OAAO,SAAS,SAASA,KAAI;AAGzC,kCAAoB,QAAQ,UAAU,kBAAkB;AAAA,IAC1D;AACA,UAAM,qBAAiB,4BAAY,mBAA8B,yCAAAJ,KAAK,OAAO;AAAA,MAC3E,GAAG;AAAA,MACH,eAAW,mBAAAM,SAAW,GAAG,QAAQ,aAAa,mBAAmB,CAAC,aAAa,MAAM;AAAA,IACvF,CAAC,GAAG,CAAC,WAAW,mBAAmB,QAAQ,CAAC;AAC5C,UAAM,iBAAiB;AAAA,MACrB,GAAGJ;AAAA,MACH,GAAG;AAAA,IACL;AAIA,mBAAe,UAAU;AACzB,UAAM,eAAe,iBAA4B,yCAAAF,KAAK,OAAO;AAAA,MAC3D,MAAM;AAAA,MACN,GAAG;AAAA,MACH,OAAO;AAAA,MACP,eAAW,mBAAAM,SAAW,WAAW,UAAU,sBAAsB,GAAG,QAAQ,WAAW,CAAC,aAAa,MAAM;AAAA,MAC3G,SAAS,WAAW,cAAc;AAAA,MAClC,WAAW;AAAA,MACX,cAAc;AAAA,MACd,mBAAmB;AAAA,MACnB,oBAAoB;AAAA,MACpB,UAAuB,yCAAAN,KAAK,QAAQ;AAAA,QAClC,GAAG;AAAA,QACH,aAAa;AAAA,QACb,WAAW;AAAA,QACX;AAAA,QACA;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AACD,WAAoB,yCAAAA,KAAK,qBAAa,UAAU;AAAA,MAC9C,OAAO;AAAA,MACP,UAAuB,yCAAAA,KAAK,eAAW;AAAA,QACrC;AAAA,QACA,KAAK;AAAA,QACL;AAAA,QACA;AAAA,QACA,UAAU;AAAA,QAEV;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,iBAAiB;AAAA,QACjB;AAAA,QACA;AAAA,QACA,SAAS;AAAA,QACT,YAAY;AAAA,QACZ;AAAA,QACA,QAAQ;AAAA,QACR;AAAA,QACA,UAAU;AAAA,QACV,SAAS,gBAAgB;AAAA,QACzB,YAAY,YAAY,mBAAmB;AAAA,QAC3C,oBAAoB,YAAY,qBAAqB;AAAA,QACrD;AAAA,QACA;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AAAA,EACH,CAAC;AACD,EAAAC,OAAM,cAAc;AACpB,MAAOM,iBAAQ,OAAO,OAAON,QAAO;AAAA,IAClC,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,qBAAqB;AAAA,IACrB,8BAA8B;AAAA,EAChC,CAAC;;;A+D3PD,MAAAO,iBAAkC;AAC3B,WAAS,eAAeC,MAAK,aAAa;AAC7C,UAAM,qBAAiB,uBAAO,WAAW;AACzC,kCAAU,SAAS,oBAAoB;AACnC,UAAI,gBAAgB,eAAe,WAAWA,KAAI,sBAAsB,MAAM;AAC1E,YAAI,eAAe,WAAW,MAAM;AAChC,UAAAA,KAAI,mBAAmB,kBAAkB,eAAe,OAAO;AAAA,QACnE;AACA,YAAI,eAAe,MAAM;AACrB,UAAAA,KAAI,mBAAmB,eAAe,WAAW;AAAA,QACrD;AAAA,MACJ;AACA,qBAAe,UAAU;AAAA,IAC7B,GAAG;AAAA,MACCA;AAAA,MACA;AAAA,IACJ,CAAC;AAAA,EACL;;;ACjBA,MAAAC,iBAA4E;AAC5E,MAAAC,oBAA6B;;;ACD7B,MAAAC,iBAA0C;AACnC,MAAM,kBAAkB;AACxB,WAAS,qBAAqBC,MAAK;AACtC,WAAO,OAAO,OAAO;AAAA,MACjB,WAAW;AAAA,MACX,KAAAA;AAAA,IACJ,CAAC;AAAA,EACL;AACO,WAAS,cAAc,QAAQ,OAAO;AACzC,WAAO,OAAO,OAAO;AAAA,MACjB,GAAG;AAAA,MACH,GAAG;AAAA,IACP,CAAC;AAAA,EACL;AACO,MAAM,qBAAiB,8BAAc,IAAI;AACzC,MAAM,kBAAkB,eAAe;AACvC,WAAS,oBAAoB;AAChC,UAAM,cAAU,2BAAW,cAAc;AACzC,QAAI,WAAW,MAAM;AACjB,YAAM,IAAI,MAAM,6FAA6F;AAAA,IACjH;AACA,WAAO;AAAA,EACX;;;ADnBO,WAAS,yBAAyB,YAAY;AACjD,aAAS,mBAAmB,OAAO,cAAc;AAC7C,YAAM,EAAE,UAAW,QAAS,IAAI,WAAW,KAAK,EAAE;AAClD,8CAAoB,cAAc,MAAI,QAAQ;AAC9C,aAAO,MAAM,YAAY,OAAO,OAAqB,+BAAAC,QAAM,cAAc,iBAAiB;AAAA,QACtF,OAAO;AAAA,MACX,GAAG,MAAM,QAAQ;AAAA,IACrB;AACA,WAAqB,+CAAW,kBAAkB;AAAA,EACtD;AAqBO,WAAS,oBAAoB,YAAY;AAC5C,aAAS,cAAc,OAAO,cAAc;AACxC,YAAM,EAAE,SAAU,IAAI,WAAW,KAAK,EAAE;AACxC,8CAAoB,cAAc,MAAI,QAAQ;AAC9C,aAAO;AAAA,IACX;AACA,WAAqB,+CAAW,aAAa;AAAA,EACjD;;;AExCA,MAAAC,iBAAkC;AAC3B,WAAS,iBAAiB,SAAS,eAAe;AACrD,UAAM,uBAAmB,uBAAO;AAChC,kCAAU,SAAS,mBAAmB;AAClC,UAAI,iBAAiB,MAAM;AACvB,gBAAQ,SAAS,GAAG,aAAa;AAAA,MACrC;AACA,uBAAiB,UAAU;AAC3B,aAAO,SAAS,sBAAsB;AAClC,YAAI,iBAAiB,WAAW,MAAM;AAClC,kBAAQ,SAAS,IAAI,iBAAiB,OAAO;AAAA,QACjD;AACA,yBAAiB,UAAU;AAAA,MAC/B;AAAA,IACJ,GAAG;AAAA,MACC;AAAA,MACA;AAAA,IACJ,CAAC;AAAA,EACL;;;AClBO,WAAS,SAAS,OAAO,SAAS;AACrC,UAAM,OAAO,MAAM,QAAQ,QAAQ;AACnC,WAAO,OAAO;AAAA,MACV,GAAG;AAAA,MACH;AAAA,IACJ,IAAI;AAAA,EACR;;;ACNA,MAAAC,iBAAkC;AAC3B,WAAS,oBAAoB,UAAU,SAAS,WAAW;AAC9D,WAAO,OAAO,OAAO;AAAA,MACjB;AAAA,MACA;AAAA,MACA;AAAA,IACJ,CAAC;AAAA,EACL;AACO,WAAS,kBAAkBC,gBAAe,eAAe;AAC5D,QAAI,iBAAiB,MAAM;AACvB,aAAO,SAAS,2BAA2B,OAAO,SAAS;AACvD,cAAM,iBAAa,uBAAO;AAC1B,YAAI,CAAC,WAAW;AAAS,qBAAW,UAAUA,eAAc,OAAO,OAAO;AAC1E,eAAO;AAAA,MACX;AAAA,IACJ;AACA,WAAO,SAAS,yBAAyB,OAAO,SAAS;AACrD,YAAM,iBAAa,uBAAO;AAC1B,UAAI,CAAC,WAAW;AAAS,mBAAW,UAAUA,eAAc,OAAO,OAAO;AAC1E,YAAM,eAAW,uBAAO,KAAK;AAC7B,YAAM,EAAE,SAAU,IAAI,WAAW;AACjC,oCAAU,SAAS,qBAAqB;AACpC,YAAI,SAAS,YAAY,OAAO;AAC5B,wBAAc,UAAU,OAAO,SAAS,OAAO;AAC/C,mBAAS,UAAU;AAAA,QACvB;AAAA,MACJ,GAAG;AAAA,QACC;AAAA,QACA;AAAA,QACA;AAAA,MACJ,CAAC;AACD,aAAO;AAAA,IACX;AAAA,EACJ;;;ACjCA,MAAAC,iBAA0B;AAKnB,WAAS,kBAAkB,SAAS,SAAS;AAChD,kCAAU,SAAS,WAAW;AAC1B,YAAM,YAAY,QAAQ,kBAAkB,QAAQ;AACpD,gBAAU,SAAS,QAAQ,QAAQ;AACnC,aAAO,SAAS,cAAc;AAC1B,gBAAQ,gBAAgB,YAAY,QAAQ,QAAQ;AACpD,gBAAQ,IAAI,YAAY,QAAQ,QAAQ;AAAA,MAC5C;AAAA,IACJ,GAAG;AAAA,MACC;AAAA,MACA;AAAA,IACJ,CAAC;AAAA,EACL;AACO,WAAS,gBAAgB,YAAY;AACxC,WAAO,SAAS,SAAS,OAAO;AAC5B,YAAM,UAAU,kBAAkB;AAClC,YAAM,aAAa,WAAW,SAAS,OAAO,OAAO,GAAG,OAAO;AAC/D,qBAAe,QAAQ,KAAK,MAAM,WAAW;AAC7C,uBAAiB,WAAW,SAAS,MAAM,aAAa;AACxD,wBAAkB,WAAW,SAAS,OAAO;AAC7C,aAAO;AAAA,IACX;AAAA,EACJ;;;ACbO,WAAS,qBAAqBC,gBAAe,eAAe;AAC/D,UAAM,aAAa,kBAAkBA,gBAAe,aAAa;AACjE,UAAM,WAAW,gBAAgB,UAAU;AAC3C,WAAO,yBAAyB,QAAQ;AAAA,EAC5C;AAWO,WAAS,yBAAyBC,gBAAe,eAAe;AACnE,UAAM,aAAa,kBAAkBA,gBAAe,aAAa;AACjE,UAAM,WAAW,gBAAgB,UAAU;AAC3C,WAAO,oBAAoB,QAAQ;AAAA,EACvC;;;ACjCO,WAAS,gBAAgB,OAAO,OAAO,WAAW;AACrD,UAAM,EAAE,SAAU,OAAQ,IAAI;AAC9B,QAAI,WAAW,QAAQ,YAAY,UAAU,SAAS;AAClD,YAAM,WAAW,OAAO;AAAA,IAC5B;AACA,QAAI,UAAU,QAAQ,WAAW,UAAU,QAAQ;AAC/C,YAAM,UAAU,MAAM;AAAA,IAC1B;AAAA,EACJ;;;ACOA,uBAAkC;AAClC,MAAAC,iBAAyF;AAhBzF,WAASC,YAAW;AAChB,IAAAA,YAAW,OAAO,UAAU,SAAS,QAAQ;AACzC,eAAQ,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAI;AACrC,YAAI,SAAS,UAAU,CAAC;AACxB,iBAAQ,OAAO,QAAO;AAClB,cAAI,OAAO,UAAU,eAAe,KAAK,QAAQ,GAAG,GAAG;AACnD,mBAAO,GAAG,IAAI,OAAO,GAAG;AAAA,UAC5B;AAAA,QACJ;AAAA,MACJ;AACA,aAAO;AAAA,IACX;AACA,WAAOA,UAAS,MAAM,MAAM,SAAS;AAAA,EACzC;AAIA,WAAS,sBAAsB,EAAE,QAAS,eAAgB,QAAS,UAAW,WAAY,IAAAC,MAAK,aAAc,OAAAC,QAAQ,WAAY,MAAO,GAAGC,SAAQ,GAAG,cAAc;AAChK,UAAM,CAAC,KAAK,QAAI,yBAAS;AAAA,MACrB;AAAA,MACA,IAAAF;AAAA,MACA,OAAAC;AAAA,IACJ,CAAC;AACD,UAAM,CAAC,SAAS,UAAU,QAAI,yBAAS,IAAI;AAC3C,4CAAoB,cAAc,MAAI,SAAS,OAAO,MAAM;AAAA,MACxD;AAAA,IACJ,CAAC;AACD,UAAM,aAAS,4BAAY,CAACE,UAAO;AAC/B,UAAIA,UAAS,QAAQ,YAAY,MAAM;AACnC,cAAMC,OAAM,IAAI,eAAAC,IAAWF,OAAMD,QAAO;AACxC,YAAI,UAAU,QAAQ,QAAQ,MAAM;AAChC,UAAAE,KAAI,QAAQ,QAAQ,IAAI;AAAA,QAC5B,WAAW,UAAU,MAAM;AACvB,UAAAA,KAAI,UAAU,QAAQ,aAAa;AAAA,QACvC;AACA,YAAI,aAAa,MAAM;AACnB,UAAAA,KAAI,UAAU,SAAS;AAAA,QAC3B;AACA,mBAAW,qBAAqBA,IAAG,CAAC;AAAA,MACxC;AAAA,IAEJ,GAAG,CAAC,CAAC;AACL,kCAAU,MAAI;AACV,aAAO,MAAI;AACP,iBAAS,IAAI,OAAO;AAAA,MACxB;AAAA,IACJ,GAAG;AAAA,MACC;AAAA,IACJ,CAAC;AACD,UAAM,WAAW,UAAwB,+BAAAE,QAAM,cAAc,iBAAiB;AAAA,MAC1E,OAAO;AAAA,IACX,GAAG,QAAQ,IAAI,eAAe;AAC9B,WAAqB,+BAAAA,QAAM,cAAc,OAAOP,UAAS,CAAC,GAAG,OAAO;AAAA,MAChE,KAAK;AAAA,IACT,CAAC,GAAG,QAAQ;AAAA,EAChB;AACO,MAAM,eAA6B,+CAAW,qBAAqB;;;ACvD1E,MAAAQ,kBAAwC;AACjC,MAAM,SAAS,qBAAqB,SAAS,aAAa,EAAE,UAAAC,WAAW,GAAGC,SAAQ,GAAG,KAAK;AAC7F,UAAM,SAAS,IAAI,gBAAAC,OAAcF,WAAUC,QAAO;AAClD,WAAO,oBAAoB,QAAQ,cAAc,KAAK;AAAA,MAClD,kBAAkB;AAAA,IACtB,CAAC,CAAC;AAAA,EACN,GAAG,SAAS,aAAa,QAAQ,OAAO,WAAW;AAC/C,QAAI,MAAM,aAAa,UAAU,UAAU;AACvC,aAAO,UAAU,MAAM,QAAQ;AAAA,IACnC;AACA,QAAI,MAAM,QAAQ,QAAQ,MAAM,SAAS,UAAU,MAAM;AACrD,aAAO,QAAQ,MAAM,IAAI;AAAA,IAC7B;AACA,QAAI,MAAM,gBAAgB,QAAQ,MAAM,iBAAiB,UAAU,cAAc;AAC7E,aAAO,gBAAgB,MAAM,YAAY;AAAA,IAC7C;AACA,QAAI,MAAM,WAAW,QAAQ,MAAM,YAAY,UAAU,SAAS;AAC9D,aAAO,WAAW,MAAM,OAAO;AAAA,IACnC;AACA,QAAI,OAAO,YAAY,QAAQ,MAAM,cAAc,UAAU,WAAW;AACpE,UAAI,MAAM,cAAc,MAAM;AAC1B,eAAO,SAAS,OAAO;AAAA,MAC3B,OAAO;AACH,eAAO,SAAS,QAAQ;AAAA,MAC5B;AAAA,IACJ;AAAA,EACJ,CAAC;;;AC1BD,MAAAE,kBAA8C;AACvC,MAAM,YAAY,yBAAyB,SAAS,gBAAgB,EAAE,KAAM,GAAGC,SAAQ,GAAG,SAAS;AACtG,UAAM,QAAQ,IAAI,gBAAAC,UAAiB,KAAK,SAASD,UAAS,OAAO,CAAC;AAClE,WAAO,oBAAoB,OAAO,OAAO;AAAA,EAC7C,GAAG,SAAS,gBAAgB,OAAO,OAAO,WAAW;AACjD,oBAAgB,OAAO,OAAO,SAAS;AACvC,UAAM,EAAE,IAAK,IAAI;AACjB,QAAI,OAAO,QAAQ,QAAQ,UAAU,KAAK;AACtC,YAAM,OAAO,GAAG;AAAA,IACpB;AAAA,EACJ,CAAC;;;A3EFD,qBAAkB;;;ADFlB,MAAqB,qBAArB,cAAgD,eAAAE,QAAM,UAAU;AAAA,IAC9D,YAAY,OAAO;AACjB,YAAM,KAAK;AAEX,WAAK,QAAS;AAAA,QACZ,WAAW;AAAA,QACX,YAAY;AAAA,QACZ,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IAEA,oBAAoB;AAClB,WAAK,MAAM;AAAA,IACb;AAAA,IAEA,QAAQ;AACN,UAAI,UAAU;AAEd,oBAAAC,QAAM;AAAA,QACJ,mCAAmC,KAAK,MAAM;AAAA,QAC9C;AAAA,UACE,SAAS;AAAA,YACP,oBAAoB,KAAK,MAAM;AAAA,UACjC;AAAA,QACF;AAAA,MACF,EAAE,KAAK,CAAC,QAAQ;AACd,gBAAQ,SAAS;AAAA,UACf,WAAW;AAAA,UACX,YAAY;AAAA,UACZ,MAAM,IAAI;AAAA,QACZ,CAAC;AAAA,MACH,CAAC,EAAE,MAAM,CAAC,UAAU;AAClB,gBAAQ,IAAI,KAAK;AACjB,cAAM,sCAAsC;AAAA,MAC9C,CAAC;AAAA,IACH;AAAA,IAEA,oBAAoB;AAClB,WAAK,SAAS;AAAA,QACZ,YAAY;AAAA,MACd,CAAC;AAED,WAAK,MAAM;AAAA,IACb;AAAA,IAEA,kBAAkB,OAAO;AACvB,WAAK,SAAS;AAAA,QACZ,MAAM,MAAM,OAAO;AAAA,MACrB,CAAC;AAAA,IACH;AAAA,IAEA,sBAAsB;AACpB,UAAI,QAAU,KAAK,MAAM,KAAK;AAC9B,UAAI,OAAU,CAAC;AACf,UAAI,UAAU;AAEd,UAAI,YAAgB;AACpB,UAAI,aAAgB;AACpB,UAAI,cAAgB;AACpB,UAAI,eAAgB;AAEpB,UAAI,aAAoB;AACxB,UAAI,iBAAoB;AACxB,UAAI,aAAoB;AACxB,UAAI,iBAAoB;AACxB,UAAI,aAAoB;AACxB,UAAI,oBAAoB;AACxB,UAAI,gBAAoB;AACxB,UAAI,cAAoB;AACxB,UAAI,iBAAoB;AACxB,UAAI,iBAAoB;AACxB,UAAI,mBAAoB;AACxB,UAAI,mBAAoB;AAExB,eAAQ,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACpC,aAAK;AAAA,UACH,+BAAAD,QAAA,cAAC,QAAG,KAAK,UAAU,MAAM,CAAC,EAAE,IAAI,OAAO,EAAC,iBAAiB,UAAS,KAChE,+BAAAA,QAAA,cAAC,QAAG,WAAU,eAAc,WACzB,MAAM,CAAC,EAAE,IACZ,CACF;AAAA,QACF;AAGA,YAAI,WAAc,MAAM,CAAC,EAAE;AAE3B,YAAI,aAAoB;AACxB,YAAI,iBAAoB;AACxB,YAAI,aAAoB;AACxB,YAAI,iBAAoB;AACxB,YAAI,aAAoB;AACxB,YAAI,oBAAoB;AACxB,YAAI,gBAAoB;AACxB,YAAI,cAAoB;AACxB,YAAI,iBAAoB;AACxB,YAAI,iBAAoB;AACxB,YAAI,mBAAqB;AAEzB,iBAAQ,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK;AACvC,eAAK;AAAA,YACH,+BAAAA,QAAA,cAAC,QAAG,KAAK,aAAa,SAAS,CAAC,EAAE,IAAI,OAAO,EAAC,iBAAiB,aAAY,KACzE,+BAAAA,QAAA,cAAC,QAAG,WAAU,eAAc,WACzB,SAAS,CAAC,EAAE,IACf,CACF;AAAA,UACF;AAEA,cAAIE,aAAY,SAAS,CAAC,EAAE;AAE5B,cAAI,aAAoB;AACxB,cAAI,iBAAoB;AACxB,cAAI,aAAoB;AACxB,cAAI,iBAAoB;AACxB,cAAI,aAAoB;AACxB,cAAI,oBAAoB;AACxB,cAAI,gBAAoB;AACxB,cAAI,cAAoB;AACxB,cAAI,iBAAoB;AACxB,cAAI,iBAAoB;AACxB,cAAI,mBAAoB;AAExB,mBAAQC,KAAI,GAAGA,KAAID,WAAS,QAAQC,MAAK;AACvC,gBAAGA,MAAK,GAAG;AACT,mBAAK;AAAA,gBACH,+BAAAH,QAAA,cAAC,QAAG,KAAK,YAAYE,WAASC,EAAC,EAAE,IAAI,OAAO,EAAC,iBAAiB,aAAa,OAAO,QAAO,KACvF,+BAAAH,QAAA,cAAC,YAAG,aAEJ,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,cAAW,WAEzB,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,cAAW,iBAEzB,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,cAAW,YAEzB,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,MAAG,UAEjB,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,MAAG,IAEjB,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBAAc,aAE5B,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBAAc,kBAE5B,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBAAc,aAE5B,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBAAc,yBAE5B,GACA,+BAAAA,QAAA,cAAC,YAAG,OAEJ,CACF;AAAA,cACF;AAAA,YACF;AAIA,0BAAqBE,WAASC,EAAC,EAAE,KAAK;AACtC,8BAAqBD,WAASC,EAAC,EAAE,KAAK;AACtC,0BAAqBD,WAASC,EAAC,EAAE,KAAK;AACtC,8BAAqBD,WAASC,EAAC,EAAE,KAAK;AACtC,0BAAqBD,WAASC,EAAC,EAAE,KAAK;AACtC,iCAAqBD,WAASC,EAAC,EAAE,KAAK;AACtC,6BAAqBD,WAASC,EAAC,EAAE,KAAK;AACtC,2BAAqBD,WAASC,EAAC,EAAE,KAAK,YAAY;AAClD,8BAAqBD,WAASC,EAAC,EAAE,KAAK,QAAQ;AAC9C,8BAAqBD,WAASC,EAAC,EAAE,KAAK,eAAe;AAIrD,0BAAqBD,WAASC,EAAC,EAAE,KAAK;AACtC,8BAAqBD,WAASC,EAAC,EAAE,KAAK;AACtC,0BAAqBD,WAASC,EAAC,EAAE,KAAK;AACtC,8BAAqBD,WAASC,EAAC,EAAE,KAAK;AACtC,0BAAqBD,WAASC,EAAC,EAAE,KAAK;AACtC,iCAAqBD,WAASC,EAAC,EAAE,KAAK;AACtC,6BAAqBD,WAASC,EAAC,EAAE,KAAK;AACtC,2BAAqBD,WAASC,EAAC,EAAE,KAAK,YAAY;AAClD,8BAAqBD,WAASC,EAAC,EAAE,KAAK,QAAQ;AAC9C,8BAAqBD,WAASC,EAAC,EAAE,KAAK,eAAe;AAGrD,0BAAqBD,WAASC,EAAC,EAAE,KAAK;AACtC,8BAAqBD,WAASC,EAAC,EAAE,KAAK;AACtC,0BAAqBD,WAASC,EAAC,EAAE,KAAK;AACtC,8BAAqBD,WAASC,EAAC,EAAE,KAAK;AACtC,0BAAqBD,WAASC,EAAC,EAAE,KAAK;AACtC,iCAAqBD,WAASC,EAAC,EAAE,KAAK;AACtC,6BAAqBD,WAASC,EAAC,EAAE,KAAK;AACtC,2BAAqBD,WAASC,EAAC,EAAE,KAAK,YAAY;AAClD,8BAAqBD,WAASC,EAAC,EAAE,KAAK,QAAQ;AAC9C,8BAAqBD,WAASC,EAAC,EAAE,KAAK,eAAe;AAErD,gCAAqBD,WAASC,EAAC,EAAE,KAAK,iBAAiB;AACvD,gCAAqBD,WAASC,EAAC,EAAE,KAAK,iBAAiB;AACvD,gCAAqBD,WAASC,EAAC,EAAE,KAAK,iBAAiB;AAEvD,iBAAK;AAAA,cACH,+BAAAH,QAAA,cAAC,QAAG,KAAK,YAAYE,WAASC,EAAC,EAAE,MAC/B,+BAAAH,QAAA,cAAC,YACC,+BAAAA,QAAA,cAAC,gBACEE,WAASC,EAAC,EAAE,IACf,CACF,GACA,+BAAAH,QAAA,cAAC,QAAG,WAAU,cACXI,kBAAiBF,WAASC,EAAC,EAAE,KAAK,SAAS,CAC9C,GACA,+BAAAH,QAAA,cAAC,QAAG,WAAU,cACXI,kBAAiBF,WAASC,EAAC,EAAE,KAAK,iBAAiB,CACtD,GACA,+BAAAH,QAAA,cAAC,QAAG,WAAU,cACXI,kBAAiBF,WAASC,EAAC,EAAE,KAAK,UAAU,CAC/C,GACA,+BAAAH,QAAA,cAAC,QAAG,WAAU,MACX,gBAAgBE,WAASC,EAAC,EAAE,KAAK,GAAG,CACvC,GACA,+BAAAH,QAAA,cAAC,QAAG,WAAU,MACX,gBAAgBE,WAASC,EAAC,EAAE,KAAK,YAAY,CAChD,GACA,+BAAAH,QAAA,cAAC,QAAG,WAAU,iBACXE,WAASC,EAAC,EAAE,KAAK,YAAY,KAChC,GACA,+BAAAH,QAAA,cAAC,QAAG,WAAU,iBACXE,WAASC,EAAC,EAAE,KAAK,QAAQ,KAC5B,GACA,+BAAAH,QAAA,cAAC,QAAG,WAAU,iBACXE,WAASC,EAAC,EAAE,KAAK,eAAe,KACnC,GACA,+BAAAH,QAAA,cAAC,QAAG,WAAU,iBACXE,WAASC,EAAC,EAAE,KAAK,iBAAiB,KACrC,GACA,+BAAAH,QAAA,cAAC,YACEE,WAASC,EAAC,EAAE,KAAK,KACpB,CACF;AAAA,YACF;AAAA,UACF;AAGA,cAAI,eAAiB,oBAAoB;AAEzC,cAAG,qBAAqB,GAAG;AACzB,2BAAe;AAAA,UACjB;AAEA,cAAG,eAAe,GAAG;AACnB,2BAAe;AAAA,UACjB;AAEA,cAAG,gBAAgB,KAAK,iBAAiB,eAAe;AACtD,2BAAe;AAAA,UACjB;AAEA,cAAI,oBAAqB,gBAAgB;AACzC,cAAI,OAAqB,aAAa;AAEtC,eAAK;AAAA,YACH,+BAAAH,QAAA,cAAC,QAAG,KAAK,mBAAmB,SAAS,CAAC,EAAE,IAAI,OAAO,EAAC,iBAAiB,WAAU,KAC7E,+BAAAA,QAAA,cAAC,YACC,+BAAAA,QAAA,cAAC,gBACE,SAAS,CAAC,EAAE,MAAK,QACpB,CACF,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,cACZ,+BAAAA,QAAA,cAAC,gBACEI,kBAAiB,UAAU,CAC9B,CACF,GACA,+BAAAJ,QAAA,cAAC,QAAG,WAAU,cACZ,+BAAAA,QAAA,cAAC,gBACEI,kBAAiB,cAAc,CAClC,CACF,GACA,+BAAAJ,QAAA,cAAC,QAAG,WAAU,cACZ,+BAAAA,QAAA,cAAC,gBACEI,kBAAiB,UAAU,CAC9B,CACF,GACA,+BAAAJ,QAAA,cAAC,YACC,+BAAAA,QAAA,cAAC,gBACE,gBAAgB,IAAI,CACvB,CACF,GACA,+BAAAA,QAAA,cAAC,YACC,+BAAAA,QAAA,cAAC,gBACE,gBAAgB,YAAY,CAC/B,CACF,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACZ,+BAAAA,QAAA,cAAC,gBACE,WACH,CACF,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACZ,+BAAAA,QAAA,cAAC,gBACE,cACH,CACF,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACZ,+BAAAA,QAAA,cAAC,gBACE,cACH,CACF,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACd,+BAAAA,QAAA,cAAC,gBACI,gBACH,CACF,GACA,+BAAAA,QAAA,cAAC,UACD,CACF;AAAA,UACF;AAAA,QACF;AAGA,YAAI,eAAiB,oBAAoB;AAEzC,YAAG,qBAAqB,GAAG;AACzB,yBAAe;AAAA,QACjB;AAEA,YAAG,eAAe,GAAG;AACnB,yBAAe;AAAA,QACjB;AAEA,YAAG,gBAAgB,KAAK,iBAAiB,eAAe;AACtD,yBAAe;AAAA,QACjB;AAEA,YAAI,oBAAqB,gBAAgB;AACzC,YAAI,OAAqB,aAAa;AAEtC,aAAK;AAAA,UACH,+BAAAA,QAAA,cAAC,QAAG,KAAK,gBAAgB,MAAM,CAAC,EAAE,IAAI,OAAO,EAAC,iBAAiB,UAAS,KACtE,+BAAAA,QAAA,cAAC,YACC,+BAAAA,QAAA,cAAC,gBACE,MAAM,CAAC,EAAE,MAAK,QACjB,CACF,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,cACZ,+BAAAA,QAAA,cAAC,gBACEI,kBAAiB,UAAU,CAC9B,CACF,GACA,+BAAAJ,QAAA,cAAC,QAAG,WAAU,cACZ,+BAAAA,QAAA,cAAC,gBACEI,kBAAiB,cAAc,CAClC,CACF,GACA,+BAAAJ,QAAA,cAAC,QAAG,WAAU,cACZ,+BAAAA,QAAA,cAAC,gBACEI,kBAAiB,UAAU,CAC9B,CACF,GACA,+BAAAJ,QAAA,cAAC,YACC,+BAAAA,QAAA,cAAC,gBACE,gBAAgB,IAAI,CACvB,CACF,GACA,+BAAAA,QAAA,cAAC,YACC,+BAAAA,QAAA,cAAC,gBACE,gBAAgB,YAAY,CAC/B,CACF,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACZ,+BAAAA,QAAA,cAAC,gBACE,WACH,CACF,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACZ,+BAAAA,QAAA,cAAC,gBACE,cACH,CACF,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACZ,+BAAAA,QAAA,cAAC,gBACE,cACH,CACF,GACC,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACb,+BAAAA,QAAA,cAAC,gBACE,gBACH,CACF,GACC,+BAAAA,QAAA,cAAC,UACF,CACF;AAAA,QACF;AAAA,MACF;AAGA,UAAI,eAAiB,oBAAoB;AAEzC,UAAG,qBAAqB,GAAG;AACzB,uBAAe;AAAA,MACjB;AAEA,UAAG,eAAe,GAAG;AACnB,uBAAe;AAAA,MACjB;AAEA,UAAG,gBAAgB,KAAK,iBAAiB,eAAe;AACtD,uBAAe;AAAA,MACjB;AAEA,UAAI,oBAAqB,gBAAgB;AACzC,UAAI,OAAqB,aAAa;AAEtC,WAAK;AAAA,QACH,+BAAAA,QAAA,cAAC,QAAG,KAAK,eAAe,OAAO,EAAC,iBAAiB,QAAQ,OAAO,OAAM,KACpE,+BAAAA,QAAA,cAAC,YACC,+BAAAA,QAAA,cAAC,gBAAO,aAER,CACF,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,cACZ,+BAAAA,QAAA,cAAC,gBACEI,kBAAiB,UAAU,CAC9B,CACF,GACA,+BAAAJ,QAAA,cAAC,QAAG,WAAU,cACZ,+BAAAA,QAAA,cAAC,gBACEI,kBAAiB,cAAc,CAClC,CACF,GACA,+BAAAJ,QAAA,cAAC,QAAG,WAAU,cACZ,+BAAAA,QAAA,cAAC,gBACEI,kBAAiB,UAAU,CAC9B,CACF,GACA,+BAAAJ,QAAA,cAAC,YACC,+BAAAA,QAAA,cAAC,gBACE,gBAAgB,IAAI,CACvB,CACF,GACA,+BAAAA,QAAA,cAAC,YACC,+BAAAA,QAAA,cAAC,gBACE,gBAAgB,YAAY,CAC/B,CACF,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACZ,+BAAAA,QAAA,cAAC,gBACE,WACH,CACF,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACZ,+BAAAA,QAAA,cAAC,gBACE,cACH,CACF,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACZ,+BAAAA,QAAA,cAAC,gBACE,cACH,CACF,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACZ,+BAAAA,QAAA,cAAC,gBACE,gBACH,CACF,GACA,+BAAAA,QAAA,cAAC,UACD,CACF;AAAA,MACF;AAEA,aACE,+BAAAA,QAAA,cAAC,SAAI,WAAU,sBACb,+BAAAA,QAAA,cAAC,WAAM,WAAU,mCACf,+BAAAA,QAAA,cAAC,eACE,IACH,CACF,CACF;AAAA,IAEJ;AAAA,IAEA,SAAS;AACP,UAAG,KAAK,MAAM,WAAW;AACvB,eACE,+BAAAA,QAAA,cAAC,aACC,+BAAAA,QAAA,cAAC,mBAAa,GACd,+BAAAA,QAAA,cAAC,gBACC,+BAAAA,QAAA,cAAC,YAAG,qBAEJ,CACF,CACF;AAAA,MAEJ,OAAO;AACL,eACE,+BAAAA,QAAA,6BAAAA,QAAA,gBACE,+BAAAA,QAAA,cAAC,SAAI,WAAU,SACb,+BAAAA,QAAA,cAAC,SAAI,WAAU,yBACb,+BAAAA,QAAA,cAAC,SAAI,WAAU,gBACb,+BAAAA,QAAA;AAAA,UAAC;AAAA;AAAA,YACC,MAAK;AAAA,YACL,WAAU;AAAA,YACV,UAAU,KAAK,MAAM;AAAA,YACrB,OAAO,KAAK,MAAM;AAAA,YAClB,UAAU,KAAK,kBAAkB,KAAK,IAAI;AAAA;AAAA,QAC5C,CACF,CACF,GACA,+BAAAA,QAAA,cAAC,SAAI,WAAU,wBACb,+BAAAA,QAAA,cAAC,SAAI,WAAU,kBACb,+BAAAA,QAAA;AAAA,UAAC;AAAA;AAAA,YACC,WAAU;AAAA,YACV,UAAU,KAAK,MAAM;AAAA,YACrB,SAAS,KAAK,kBAAkB,KAAK,IAAI;AAAA;AAAA,UAEzC,+BAAAA,QAAA,cAAC,UAAK,WAAU,sBAAoB;AAAA,UAAE;AAAA,QAExC,CACF,CACF,CACF,GAKA,+BAAAA,QAAA,cAAC,UAAE,GACF,KAAK,oBAAoB,CAC5B;AAAA,MAEJ;AAAA,IACF;AAAA,EACF;;;A6E7hBA,MAAAK,iBAA2C;AAC3C,MAAAC,gBAAkB;AAGlB,WAAS,aAAa,OAAO;AACzB,UAAMC,SAAQ,MAAM;AAEpB,UAAM,CAAC,WAAW,YAAY,QAAI,yBAAS,IAAI;AAC/C,UAAM,CAAC,YAAY,aAAa,QAAI,yBAAS,KAAK;AAElD,UAAM,CAAC,MAAM,OAAO,QAAI,yBAAS,EAAE;AAEnC,UAAM,CAACC,OAAM,OAAO,QAAI,yBAAS,KAAK;AAEtC,UAAMC,SAAQ,YAAY;AAEtB,UAAI,MAAM,MAAM,cAAAC,QAAM;AAAA,QAClB,uCAAuC;AAAA,QACvC;AAAA,UACI,SAAS;AAAA,YACL,oBAAoBH;AAAA,UACxB;AAAA,QACJ;AAAA,MACJ,EAAE,MAAM,CAAC,UAAU;AACf,gBAAQ,IAAI,KAAK;AACjB,cAAM,sCAAsC;AAAA,MAChD,CAAC;AAQD,UAAI,IAAI,WAAW,KAAK;AAIpB,gBAAQ,IAAI,IAAI;AAEhB,qBAAa,KAAK;AAClB,sBAAc,KAAK;AAAA,MACvB;AAAA,IAEJ;AAEA,aAAS,oBAAoB;AACzB,oBAAc,IAAI;AAElB,MAAAE,OAAM;AAAA,IACV;AAEA,aAAS,kBAAkB,OAAO;AAC9B,cAAQ,MAAM,OAAO,KAAK;AAAA,IAE9B;AAEA,QAAI,UAAU;AAGd,UAAM,YAAY;AAClB,UAAM,aAAa;AACnB,UAAM,cAAc;AACpB,UAAM,eAAe;AAErB,UAAM,cAAc;AAEpB,UAAM,aAAa;AACnB,UAAM,qBAAqB;AAC3B,UAAM,mBAAmB;AAGzB,UAAM,sBAAsB;AAC5B,UAAM,2BAA2B;AACjC,UAAM,2BAA2B;AACjC,UAAM,yBAAyB;AAE/B,UAAM,oBAAoB;AAC1B,UAAM,yBAAyB;AAC/B,UAAM,wBAAwB;AAC9B,UAAM,qBAAqB;AAC3B,UAAM,yBAAyB;AAC/B,UAAM,uBAAuB;AAE7B,kCAAU,MAAM;AACZ,MAAAA,OAAM;AAAA,IAEV,GAAG,CAAC,CAAC;AAEL,WACI,+BAAAE,QAAA,6BAAAA,QAAA,gBACK,YACG,+BAAAA,QAAA,cAAC,aACG,+BAAAA,QAAA,cAAC,mBAAc,GACf,+BAAAA,QAAA,cAAC,gBACG,+BAAAA,QAAA,cAAC,YAAG,qBAEJ,CACJ,CACJ,IAEA,+BAAAA,QAAA,6BAAAA,QAAA,gBACI,+BAAAA,QAAA,cAAC,SAAI,WAAU,SACX,+BAAAA,QAAA,cAAC,SAAI,WAAU,yBACX,+BAAAA,QAAA,cAAC,SAAI,WAAU,gBACX,+BAAAA,QAAA;AAAA,MAAC;AAAA;AAAA,QACG,MAAK;AAAA,QACL,WAAU;AAAA,QACV,UAAU;AAAA,QAEV,OAAO;AAAA,QACP,UAAU,CAAAC,OAAK,kBAAkBA,EAAC;AAAA;AAAA,IACtC,CACJ,CACJ,GACA,+BAAAD,QAAA,cAAC,SAAI,WAAU,wBACX,+BAAAA,QAAA,cAAC,SAAI,WAAU,kBACX,+BAAAA,QAAA;AAAA,MAAC;AAAA;AAAA,QACG,WAAU;AAAA,QACV,UAAU;AAAA,QAEV,SAAS;AAAA;AAAA,MAET,+BAAAA,QAAA,cAAC,UAAK,WAAU,sBAAqB;AAAA,MAAE;AAAA,IAE3C,CACJ,CACJ,CACJ,GACA,+BAAAA,QAAA,cAAC,UAAG,GACH,aACO,+BAAAA,QAAA,cAAC,aACG,+BAAAA,QAAA,cAAC,mBAAc,GACf,+BAAAA,QAAA,cAAC,gBACG,+BAAAA,QAAA,cAAC,YAAG,qBAEJ,CACJ,CACJ,IAEA,+BAAAA,QAAA,cAAC,SAAI,WAAU,sBACX,+BAAAA,QAAA,cAAC,WAAM,WAAU,mCACb,+BAAAA,QAAA,cAAC,eAEIH,MAAK,MAAM,IAAI,CAAC,OAAO,eAAe;AAEnC,aACI,+BAAAG,QAAA,6BAAAA,QAAA,gBAGI,+BAAAA,QAAA,cAAC,QAAG,KAAK,UAAU,MAAM,IAAI,OAAO,EAAE,iBAAiB,UAAU,KAC7D,+BAAAA,QAAA,cAAC,QAAG,WAAU,eAAc,WACvB,MAAM,IACX,CACJ,GAEC,MAAM,SAAS,IAAI,CAAC,UAAU,kBAAkB;AAC7C,eACI,+BAAAA,QAAA,6BAAAA,QAAA,gBAEI,+BAAAA,QAAA,cAAC,QAAG,KAAK,aAAa,SAAS,IAAI,OAAO,EAAE,iBAAiB,aAAa,KACtE,+BAAAA,QAAA,cAAC,QAAG,WAAU,eAAc,WACvB,SAAS,IACd,CACJ,GAGA,+BAAAA,QAAA,cAAC,QAAG,KAAK,YAAY,SAAS,IAAI,OAAO,EAAE,iBAAiB,aAAa,OAAO,QAAQ,KACpF,+BAAAA,QAAA,cAAC,QAAG,WAAU,eAAc,OAAO,EAAE,OAAO,YAAY,eAAe,SAAS,KAAG,MAEnF,GAEA,+BAAAA,QAAA,cAAC,QAAG,WAAU,eAAc,OAAO,EAAE,OAAO,oBAAoB,eAAe,SAAS,KACpF,+BAAAA,QAAA,cAAC,WAAM,OAAO,EAAE,OAAO,OAAO,KAC1B,+BAAAA,QAAA,cAAC,YACG,+BAAAA,QAAA,cAAC,QAAG,WAAU,eAAc,OAAO,EAAE,cAAc,eAAe,YAAyB,GAAG,WAAkB,cAEhH,CACJ,GACA,+BAAAA,QAAA,cAAC,YACG,+BAAAA,QAAA,cAAC,QAAG,WAAU,eAAc,OAAO,EAAE,aAAa,eAAe,aAA0B,OAAO,oBAAoB,GAEtH,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,eAAc,OAAO,EAAE,aAAa,eAAe,aAA0B,OAAO,yBAAyB,KAAG,WAE9H,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,eAAc,OAAO,EAAE,aAAa,eAAe,aAA0B,OAAO,yBAAyB,KAAG,YAE9H,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,eAAc,OAAO,EAAE,OAAO,uBAAuB,KAAG,UAEtE,CACJ,CACJ,CACJ,GAGA,+BAAAA,QAAA,cAAC,QAAG,WAAU,eAAc,OAAO,EAAE,OAAO,kBAAkB,eAAe,SAAS,KAClF,+BAAAA,QAAA,cAAC,WAAM,OAAO,EAAE,OAAO,OAAO,KAC1B,+BAAAA,QAAA,cAAC,eACG,+BAAAA,QAAA,cAAC,YACG,+BAAAA,QAAA,cAAC,QAAG,WAAU,eAAc,OAAO,EAAE,cAAc,eAAe,YAAyB,GAAG,SAAS,UAAQ,KAAG,YAElH,CACJ,GAEA,+BAAAA,QAAA,cAAC,YACG,+BAAAA,QAAA,cAAC,QAAG,WAAU,eAAc,OAAO,EAAE,aAAa,eAAe,aAA0B,OAAO,kBAAkB,GAEpH,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,eAAc,OAAO,EAAE,aAAa,eAAe,aAA0B,OAAO,uBAAuB,KAAG,WAE5H,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,eAAc,OAAO,EAAE,aAAa,eAAe,aAA0B,OAAO,sBAAsB,KAAG,UAE3H,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,eAAc,OAAO,EAAE,aAAa,eAAe,aAA0B,OAAO,mBAAmB,KAAG,OAExH,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,eAAc,OAAO,EAAE,aAAa,eAAe,aAA0B,OAAO,uBAAuB,KAAG,YAE5H,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,eAAc,OAAO,EAAE,OAAO,qBAAqB,KAAG,UAEpE,CACJ,CACJ,CACJ,CAEJ,CAGJ,GAEC,SAAS,SAAS,IAAI,CAACE,YAAU,kBAAkB;AAChD,iBACI,+BAAAF,QAAA,6BAAAA,QAAA,gBAEI,+BAAAA,QAAA,cAAC,QAAG,KAAK,YAAYE,WAAS,MAC1B,+BAAAF,QAAA,cAAC,YACG,+BAAAA,QAAA,cAAC,gBAEIE,WAAS,IACd,CACJ,GACA,+BAAAF,QAAA,cAAC,QAAG,WAAU,iBACV,+BAAAA,QAAA,cAAC,WAAM,OAAO,EAAE,OAAO,OAAO,KAC1B,+BAAAA,QAAA,cAAC,eACG,+BAAAA,QAAA,cAAC,YACG,+BAAAA,QAAA,cAAC,QAAG,WAAU,eAAc,OAAO,EAAE,OAAO,oBAAoB,KAEvDE,WAAS,gBAAgB,SAAS,IAC/B,+BAAAF,QAAA,cAAC,OAAE,MAAM,+BAA6BE,WAAS,iBAAiB,QAAO,YACnE,+BAAAF,QAAA,cAAC,SAAI,WAAU,gBAEf,CACJ,IAEA,+BAAAA,QAAA,6BAAAA,QAAA,cACA,CAGZ,GAEA,+BAAAA,QAAA,cAAC,QAAG,WAAU,eAAc,OAAO,EAAE,aAAa,eAAe,aAA0B,OAAO,yBAAyB,KAGlHE,WAAS,mBAAmB,eAAe,SAAS;AAAA;AAAA;AAAA,YAGjD,uBAAuB;AAAA,UAC3B,CAAC,CAET,GAEA,+BAAAF,QAAA,cAAC,QAAG,WAAU,eAAc,OAAO,EAAE,aAAa,eAAe,aAA0B,OAAO,yBAAyB,KAElHE,WAAS,aAClB,GAEA,+BAAAF,QAAA,cAAC,QAAG,WAAU,eAAc,OAAO,EAAE,OAAO,uBAAuB,KAE1DE,WAAS,WAClB,CACJ,CACJ,CACJ,CAGJ,GACA,+BAAAF,QAAA,cAAC,QAAG,WAAU,iBACV,+BAAAA,QAAA,cAAC,WAAM,OAAO,EAAE,OAAO,OAAO,KAC1B,+BAAAA,QAAA,cAAC,eACG,+BAAAA,QAAA,cAAC,YACG,+BAAAA,QAAA,cAAC,QAAG,WAAU,eAAc,OAAO,EAAE,aAAa,eAAe,aAA0B,OAAO,kBAAkB,KAE3GE,WAAS,aAAa,SAAS,IAC5B,+BAAAF,QAAA,cAAC,OAAE,MAAM,4BAA0BE,WAAS,cAAc,QAAO,YAC7D,+BAAAF,QAAA,cAAC,SAAI,WAAU,gBAEf,CACJ,IAEA,+BAAAA,QAAA,6BAAAA,QAAA,cACA,CAGZ,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,eAAc,OAAO,EAAE,aAAa,eAAe,aAA0B,OAAO,uBAAuB,KAGhHE,WAAS,qBAAqB,eAAe,SAAS;AAAA;AAAA;AAAA,YAGnD,uBAAuB;AAAA,UAC3B,CAAC,CAET,GACA,+BAAAF,QAAA,cAAC,QAAG,WAAU,eAAc,OAAO,EAAE,aAAa,eAAe,aAA0B,OAAO,sBAAsB,KAG/GE,WAAS,oBAAoB,eAAe,SAAS;AAAA;AAAA;AAAA,YAGlD,uBAAuB;AAAA,UAC3B,CAAC,CAET,GACA,+BAAAF,QAAA,cAAC,QAAG,WAAU,eAAc,OAAO,EAAE,aAAa,eAAe,aAA0B,OAAO,mBAAmB,KAG5GE,WAAS,WAAW,eAAe,SAAS;AAAA;AAAA;AAAA,YAGzC,uBAAuB;AAAA,UAC3B,CAAC,CAET,GAEA,+BAAAF,QAAA,cAAC,QAAG,WAAU,eAAc,OAAO,EAAE,aAAa,eAAe,aAA0B,OAAO,uBAAuB,KAEhHE,WAAS,aAClB,GAEA,+BAAAF,QAAA,cAAC,QAAG,WAAU,eAAc,OAAO,EAAE,OAAO,qBAAqB,KAExDE,WAAS,WAClB,CACJ,CACJ,CACJ,CACJ,CAEJ,CACJ;AAAA,QAER,CAAC,GAAE,KAIH,+BAAAF,QAAA,cAAC,QAAG,KAAK,iBAAiB,OAAO,EAAE,iBAAiB,WAAW,KAC3D,+BAAAA,QAAA,cAAC,YACG,+BAAAA,QAAA,cAAC,gBAEI,SAAS,OAAO,QACrB,CACJ,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACV,+BAAAA,QAAA,cAAC,WAAM,OAAO,EAAE,OAAO,OAAO,KAC1B,+BAAAA,QAAA,cAAC,eACG,+BAAAA,QAAA,cAAC,YACG,+BAAAA,QAAA,cAAC,QAAG,WAAU,eAAc,OAAO,EAAE,aAAa,eAAe,aAA0B,OAAO,oBAAoB,KAClH,+BAAAA,QAAA,cAAC,cAGD,CACJ,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,eAAc,OAAO,EAAE,aAAa,eAAe,aAA0B,OAAO,yBAAyB,KAEvH,+BAAAA,QAAA,cAAC,gBAEI,SAAS,2BAA2B,eAAe,SAAS;AAAA;AAAA;AAAA,UAGzD,uBAAuB;AAAA,QAC3B,CAAC,CACL,CAEJ,GAEA,+BAAAA,QAAA,cAAC,QAAG,WAAU,eAAc,OAAO,EAAE,aAAa,eAAe,aAA0B,OAAO,yBAAyB,GAE3H,GAEA,+BAAAA,QAAA,cAAC,QAAG,WAAU,eAAc,OAAO,EAAE,OAAO,uBAAuB,GAEnE,CACJ,CACJ,CACJ,CAEJ,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACV,+BAAAA,QAAA,cAAC,WAAM,OAAO,EAAE,OAAO,OAAO,KAC1B,+BAAAA,QAAA,cAAC,eACG,+BAAAA,QAAA,cAAC,YACG,+BAAAA,QAAA,cAAC,QAAG,WAAU,eAAc,OAAO,EAAE,aAAa,eAAe,aAA0B,OAAO,kBAAkB,KAChH,+BAAAA,QAAA,cAAC,cAGD,CACJ,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,eAAc,OAAO,EAAE,aAAa,eAAe,aAA0B,OAAO,uBAAuB,KACrH,+BAAAA,QAAA,cAAC,gBAEI,SAAS,6BAA6B,eAAe,SAAS;AAAA;AAAA;AAAA,UAG3D,uBAAuB;AAAA,QAC3B,CAAC,CACL,CACJ,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,eAAc,OAAO,EAAE,aAAa,eAAe,aAA0B,OAAO,sBAAsB,KACpH,+BAAAA,QAAA,cAAC,gBAEI,SAAS,4BAA4B,eAAe,SAAS;AAAA;AAAA;AAAA,UAG1D,uBAAuB;AAAA,QAC3B,CAAC,CACL,CACJ,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,eAAc,OAAO,EAAE,aAAa,eAAe,aAA0B,OAAO,mBAAmB,KACjH,+BAAAA,QAAA,cAAC,gBAEI,SAAS,mBAAmB,eAAe,SAAS;AAAA;AAAA;AAAA,UAGjD,uBAAuB;AAAA,QAC3B,CAAC,CACL,CACJ,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,eAAc,OAAO,EAAE,aAAa,eAAe,aAA0B,OAAO,uBAAuB,GAGzH,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,eAAc,OAAO,EAAE,OAAO,qBAAqB,GAGjE,CACJ,CACJ,CACJ,CAEJ,CACJ,CACJ;AAAA,MAER,CAAC,GAAE,MAGH,+BAAAA,QAAA,cAAC,QAAG,KAAK,cAAc,OAAO,EAAE,iBAAiB,UAAU,KACvD,+BAAAA,QAAA,cAAC,YACG,+BAAAA,QAAA,cAAC,gBAEI,MAAM,OAAO,QAClB,CACJ,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACV,+BAAAA,QAAA,cAAC,WAAM,OAAO,EAAE,OAAO,OAAO,KAC1B,+BAAAA,QAAA,cAAC,eACG,+BAAAA,QAAA,cAAC,YACG,+BAAAA,QAAA,cAAC,QAAG,WAAU,eAAc,OAAO,EAAE,aAAa,eAAe,aAA0B,OAAO,oBAAoB,KAClH,+BAAAA,QAAA,cAAC,cAGD,CACJ,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,eAAc,OAAO,EAAE,aAAa,eAAe,aAA0B,OAAO,yBAAyB,KAEvH,+BAAAA,QAAA,cAAC,gBAEI,MAAM,yBAAyB,eAAe,SAAS;AAAA;AAAA;AAAA,QAGpD,uBAAuB;AAAA,MAC3B,CAAC,CACL,CAEJ,GAEA,+BAAAA,QAAA,cAAC,QAAG,WAAU,eAAc,OAAO,EAAE,aAAa,eAAe,aAA0B,OAAO,yBAAyB,KAEnH,+BAAAA,QAAA,cAAC,cAED,CACR,GAEA,+BAAAA,QAAA,cAAC,QAAG,WAAU,eAAc,OAAO,EAAE,OAAO,uBAAuB,KAE3D,+BAAAA,QAAA,cAAC,cAED,CACR,CACJ,CACJ,CACJ,CAEJ,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACV,+BAAAA,QAAA,cAAC,WAAM,OAAO,EAAE,OAAO,OAAO,KAC1B,+BAAAA,QAAA,cAAC,eACG,+BAAAA,QAAA,cAAC,YACG,+BAAAA,QAAA,cAAC,QAAG,WAAU,eAAc,OAAO,EAAE,aAAa,eAAe,aAA0B,OAAO,kBAAkB,KAChH,+BAAAA,QAAA,cAAC,cAGD,CACJ,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,eAAc,OAAO,EAAE,aAAa,eAAe,aAA0B,OAAO,uBAAuB,KACrH,+BAAAA,QAAA,cAAC,gBAEI,MAAM,2BAA2B,eAAe,SAAS;AAAA;AAAA;AAAA,QAGtD,uBAAuB;AAAA,MAC3B,CAAC,CACL,CACJ,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,eAAc,OAAO,EAAE,aAAa,eAAe,aAA0B,OAAO,sBAAsB,KACpH,+BAAAA,QAAA,cAAC,gBAEI,MAAM,0BAA0B,eAAe,SAAS;AAAA;AAAA;AAAA,QAGrD,uBAAuB;AAAA,MAC3B,CAAC,CACL,CACJ,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,eAAc,OAAO,EAAE,aAAa,eAAe,aAA0B,OAAO,mBAAmB,KACjH,+BAAAA,QAAA,cAAC,gBAEI,MAAM,iBAAiB,eAAe,SAAS;AAAA;AAAA;AAAA,QAG5C,uBAAuB;AAAA,MAC3B,CAAC,CACL,CACJ,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,eAAc,OAAO,EAAE,aAAa,eAAe,aAA0B,OAAO,uBAAuB,KACrH,+BAAAA,QAAA,cAAC,cAED,CACJ,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,eAAc,OAAO,EAAE,OAAO,qBAAqB,KAC7D,+BAAAA,QAAA,cAAC,cAED,CACJ,CACJ,CACJ,CACJ,CAEJ,CAEJ,GACA,+BAAAA,QAAA,cAAC,UAAG,CAER;AAAA,IAER,CAAC,GAAE,KAGH,+BAAAA,QAAA,cAAC,QAAG,KAAK,eAAe,OAAO,EAAE,iBAAiB,QAAQ,OAAO,OAAO,KACpE,+BAAAA,QAAA,cAAC,YACG,+BAAAA,QAAA,cAAC,gBACsB,aAEvB,CACJ,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACV,+BAAAA,QAAA,cAAC,WAAM,OAAO,EAAE,OAAO,OAAO,KAC1B,+BAAAA,QAAA,cAAC,eACG,+BAAAA,QAAA,cAAC,YACG,+BAAAA,QAAA,cAAC,QAAG,WAAU,eAAc,OAAO,EAAE,aAAa,eAAe,aAA0B,OAAO,oBAAoB,KAClH,+BAAAA,QAAA,cAAC,cAGD,CACJ,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,eAAc,OAAO,EAAE,aAAa,eAAe,aAA0B,OAAO,yBAAyB,KAEvH,+BAAAA,QAAA,cAAC,gBAEIH,MAAK,yBAAyB,eAAe,SAAS;AAAA;AAAA;AAAA,MAGnD,uBAAuB;AAAA,IAC3B,CAAC,CACL,CAEJ,GAEA,+BAAAG,QAAA,cAAC,QAAG,WAAU,eAAc,OAAO,EAAE,aAAa,eAAe,aAA0B,OAAO,yBAAyB,KAEnH,+BAAAA,QAAA,cAAC,cAED,CACR,GAEA,+BAAAA,QAAA,cAAC,QAAG,WAAU,eAAc,OAAO,EAAE,OAAO,uBAAuB,KAE3D,+BAAAA,QAAA,cAAC,cAED,CACR,CACJ,CACJ,CACJ,CAEJ,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,iBACV,+BAAAA,QAAA,cAAC,WAAM,OAAO,EAAE,OAAO,OAAO,KAC1B,+BAAAA,QAAA,cAAC,eACG,+BAAAA,QAAA,cAAC,YACG,+BAAAA,QAAA,cAAC,QAAG,WAAU,eAAc,OAAO,EAAE,aAAa,eAAe,aAA0B,OAAO,kBAAkB,KAChH,+BAAAA,QAAA,cAAC,cAGD,CACJ,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,eAAc,OAAO,EAAE,aAAa,eAAe,aAA0B,OAAO,uBAAuB,KACrH,+BAAAA,QAAA,cAAC,gBAEIH,MAAK,2BAA2B,eAAe,SAAS;AAAA;AAAA;AAAA,MAGrD,uBAAuB;AAAA,IAC3B,CAAC,CACL,CACJ,GACA,+BAAAG,QAAA,cAAC,QAAG,WAAU,eAAc,OAAO,EAAE,aAAa,eAAe,aAA0B,OAAO,sBAAsB,KACpH,+BAAAA,QAAA,cAAC,gBAEIH,MAAK,0BAA0B,eAAe,SAAS;AAAA;AAAA;AAAA,MAGpD,uBAAuB;AAAA,IAC3B,CAAC,CACL,CACJ,GACA,+BAAAG,QAAA,cAAC,QAAG,WAAU,eAAc,OAAO,EAAE,aAAa,eAAe,aAA0B,OAAO,mBAAmB,KACjH,+BAAAA,QAAA,cAAC,gBAEIH,MAAK,iBAAiB,eAAe,SAAS;AAAA;AAAA;AAAA,MAG3C,uBAAuB;AAAA,IAC3B,CAAC,CACL,CACJ,GACA,+BAAAG,QAAA,cAAC,QAAG,WAAU,eAAc,OAAO,EAAE,aAAa,eAAe,aAA0B,OAAO,uBAAuB,KACrH,+BAAAA,QAAA,cAAC,cAED,CACJ,GAEA,+BAAAA,QAAA,cAAC,QAAG,WAAU,eAAc,OAAO,EAAE,OAAO,qBAAqB,KAC7D,+BAAAA,QAAA,cAAC,cAED,CACJ,CACJ,CACJ,CACJ,CAEJ,CACJ,CAEJ,CACJ,CACJ,CAIZ,CAER;AAAA,EAGR;AAEA,MAAO,uBAAQ;;;A1IxqBA,WAAR,OAAwB,OAAO;AACpC,UAAM,CAACG,MAAK,QAAoC,yBAAS,MAAM,KAAK;AACpE,UAAM,CAAC,SAAS,UAAU,QAAsB,yBAAS,KAAK;AAC9D,UAAM,CAAC,WAAW,YAAY,QAAkB,yBAAS,IAAI;AAC7D,UAAM,CAAC,OAAO,QAAQ,QAA0B,yBAAS,MAAM,KAAK;AACpE,UAAM,CAAC,UAAU,WAAW,QAAoB,yBAAS,MAAM,QAAQ;AACvE,UAAM,CAAC,kBAAkB,mBAAmB,QAAI,yBAAS,MAAM,iBAAiB;AAEhF,QAAG,kBAAkB;AACnB,aACE,+BAAAC,QAAA,6BAAAA,QAAA,gBACE,+BAAAA,QAAA,cAAC,4BAAsB,GACvB,+BAAAA,QAAA,cAAC,kBAAY,CACf;AAAA,IAEJ,OAAO;AACL,aACE,+BAAAA,QAAA,6BAAAA,QAAA,gBACE,+BAAAA,QAAA,cAAC,QAAG,WAAU,gBAAe,MAAK,aAChC,+BAAAA,QAAA,cAAC,QAAG,WAAU,cACZ,+BAAAA,QAAA,cAAC,OAAE,MAAK,aAAY,MAAK,OAAM,kBAAe,OAAM,iBAAc,YAAW,WAAU,0BAAuB,UAE9G,CACF,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,cACZ,+BAAAA,QAAA,cAAC,OAAE,MAAK,iBAAgB,MAAK,OAAM,kBAAe,OAAM,iBAAc,gBAAe,WAAU,cAAW,cAE1G,CACF,GACA,+BAAAA,QAAA,cAAC,QAAG,WAAU,cACZ,+BAAAA,QAAA,cAAC,OAAE,MAAK,iBAAgB,MAAK,OAAM,kBAAe,OAAM,iBAAc,gBAAe,WAAU,cAAW,cAE1G,CACF,CACF,GACA,+BAAAA,QAAA,cAAC,SAAI,WAAU,uDACb,+BAAAA,QAAA,cAAC,SAAI,IAAG,YAAW,WAAU,qCAAoC,MAAK,cACpE,+BAAAA,QAAA;AAAA,QAAC;AAAA;AAAA,UACC,OAAO,MAAM;AAAA;AAAA,MACf,CACF,GACA,+BAAAA,QAAA,cAAC,SAAI,IAAG,gBAAe,WAAU,6BAA4B,MAAK,cAChE,+BAAAA,QAAA;AAAA,QAAC;AAAA;AAAA,UACC,OAAO,MAAM;AAAA;AAAA,MACf,CACF,GACA,+BAAAA,QAAA,cAAC,SAAI,IAAG,gBAAe,WAAU,6BAA4B,MAAK,cAChE,+BAAAA,QAAA;AAAA,QAAC;AAAA;AAAA,UACC,OAAO,MAAM;AAAA;AAAA,MACf,CACF,CACF,CACF;AAAA,IAEJ;AAAA,EACF;;;A2InEA,MAAAC,iBAA2C;;;ACA3C,MAAAC,qBAAuB;AACvB,MAAAC,UAAuB;;;ACCvB,MAAAC,UAAuB;AACvB,MAAAC,uBAA4B;AAH5B,MAAMC,aAAY,CAAC,MAAM,UAAU;AACnC,WAASC,+BAA8B,QAAQ,UAAU;AAAE,QAAI,UAAU;AAAM,aAAO,CAAC;AAAG,QAAI,SAAS,CAAC;AAAG,QAAI,aAAa,OAAO,KAAK,MAAM;AAAG,QAAI,KAAK;AAAG,SAAK,IAAI,GAAG,IAAI,WAAW,QAAQ,KAAK;AAAE,YAAM,WAAW,CAAC;AAAG,UAAI,SAAS,QAAQ,GAAG,KAAK;AAAG;AAAU,aAAO,GAAG,IAAI,OAAO,GAAG;AAAA,IAAG;AAAE,WAAO;AAAA,EAAQ;AAG3S,WAAS,cAAc,MAAM;AAClC,WAAO,CAAC,QAAQ,KAAK,KAAK,MAAM;AAAA,EAClC;AACO,WAAS,eAAe;AAAA,IAC7B;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,WAAW;AAAA,IACX;AAAA,EACF,GAAG;AACD,QAAI,CAAC,SAAS;AACZ,UAAI,QAAQ,QAAQ,UAAU,QAAQ,OAAO,MAAM;AACjD,kBAAU;AAAA,MACZ,OAAO;AACL,kBAAU;AAAA,MACZ;AAAA,IACF;AACA,UAAM,OAAO;AAAA,MACX;AAAA,IACF;AACA,QAAI,YAAY,UAAU;AACxB,aAAO,CAAC;AAAA,QACN,MAAM,QAAQ;AAAA,QACd;AAAA,MACF,GAAG,IAAI;AAAA,IACT;AACA,UAAM,cAAc,WAAS;AAC3B,UAAI,YAAY,YAAY,OAAO,cAAc,IAAI,GAAG;AACtD,cAAM,eAAe;AAAA,MACvB;AACA,UAAI,UAAU;AACZ,cAAM,gBAAgB;AACtB;AAAA,MACF;AACA,iBAAW,OAAO,SAAS,QAAQ,KAAK;AAAA,IAC1C;AACA,UAAM,gBAAgB,WAAS;AAC7B,UAAI,MAAM,QAAQ,KAAK;AACrB,cAAM,eAAe;AACrB,oBAAY,KAAK;AAAA,MACnB;AAAA,IACF;AACA,QAAI,YAAY,KAAK;AAEnB,eAAS,OAAO;AAChB,UAAI,UAAU;AACZ,eAAO;AAAA,MACT;AAAA,IACF;AACA,WAAO,CAAC;AAAA,MACN,MAAM,QAAQ,OAAO,OAAO;AAAA;AAAA;AAAA,MAG5B,UAAU;AAAA,MACV,UAAU,WAAW,SAAY;AAAA,MACjC;AAAA,MACA,QAAQ,YAAY,MAAM,SAAS;AAAA,MACnC,iBAAiB,CAAC,WAAW,SAAY;AAAA,MACzC,KAAK,YAAY,MAAM,MAAM;AAAA,MAC7B,SAAS;AAAA,MACT,WAAW;AAAA,IACb,GAAG,IAAI;AAAA,EACT;AACA,MAAMC,UAAsB,gBAAM,mBAAW,CAACC,OAAM,QAAQ;AAC1D,QAAI;AAAA,MACA,IAAI;AAAA,MACJ;AAAA,IACF,IAAIA,OACJ,QAAQF,+BAA8BE,OAAMH,UAAS;AACvD,UAAM,CAAC,aAAa;AAAA,MAClB,SAASI;AAAA,IACX,CAAC,IAAI,eAAe,OAAO,OAAO;AAAA,MAChC,SAAS;AAAA,MACT;AAAA,IACF,GAAG,KAAK,CAAC;AACT,WAAoB,yCAAAC,KAAKD,YAAW,OAAO,OAAO,CAAC,GAAG,OAAO,aAAa;AAAA,MACxE;AAAA,IACF,CAAC,CAAC;AAAA,EACJ,CAAC;AACD,EAAAF,QAAO,cAAc;;;ADnFrB,MAAAI,uBAA4B;AAC5B,MAAMC,UAAsB,gBAAM,mBAAW,CAAC;AAAA,IAC5C;AAAA,IACA;AAAA,IACA,UAAU;AAAA,IACV,MAAAC;AAAA,IACA,SAAS;AAAA,IACT,WAAW;AAAA,IACX;AAAA,IACA,GAAG;AAAA,EACL,GAAG,QAAQ;AACT,UAAMC,UAAS,mBAAmB,UAAU,KAAK;AACjD,UAAM,CAAC,aAAa;AAAA,MAClB;AAAA,IACF,CAAC,IAAI,eAAe;AAAA,MAClB,SAAS;AAAA,MACT;AAAA,MACA,GAAG;AAAA,IACL,CAAC;AACD,UAAMC,aAAY;AAClB,WAAoB,yCAAAC,KAAKD,YAAW;AAAA,MAClC,GAAG;AAAA,MACH,GAAG;AAAA,MACH;AAAA,MACA;AAAA,MACA,eAAW,mBAAAE,SAAW,WAAWH,SAAQ,UAAU,UAAU,WAAW,GAAGA,OAAM,IAAI,OAAO,IAAID,SAAQ,GAAGC,OAAM,IAAID,KAAI,IAAI,MAAM,QAAQ,YAAY,UAAU;AAAA,IACnK,CAAC;AAAA,EACH,CAAC;AACD,EAAAD,QAAO,cAAc;AACrB,MAAO,iBAAQA;;;AD9Bf,MAAAM,gBAAkB;;;AGHlB,MAAAC,iBAAkB;AAEH,WAAR,UAA2B,OAAO;AACvC,QAAG,MAAM,UAAU,MAAM,OAAO,SAAS,GAAG;AAC1C,aACE,+BAAAC,QAAA,cAAC,SAAI,WAAU,wBACb,+BAAAA,QAAA,cAAC,SAAI,WAAU,SACb,+BAAAA,QAAA,cAAC,SAAI,WAAU,SACb,+BAAAA,QAAA,cAAC,UAAE,GACH,+BAAAA,QAAA,cAAC,WACC,+BAAAA,QAAA,cAAC,gBAAO,gCAER,CACF,GACA,+BAAAA,QAAA,cAAC,YACE,MAAM,OAAO,IAAI,CAACC,IAAG,MAAM;AAC1B,eACE,+BAAAD,QAAA,cAAC,QAAG,KAAK,SAAS,CAAC,MAChBC,EACH;AAAA,MAEJ,CAAC,CACH,CACF,CACF,CACF;AAAA,IAEJ,OAAO;AACL,aACE,+BAAAD,QAAA,6BAAAA,QAAA,cAAE;AAAA,IAEN;AAAA,EACF;;;AChCA,MAAAE,iBAA2C;;;ACA3C,MAAAC,iBAA2C;AAE5B,WAAR,8BAA+C,OAAO;AAC3D,WACE,+BAAAC,QAAA,6BAAAA,QAAA,iBACI,MAAM;AACN,UAAG,MAAM,WAAW,MAAM,QAAQ,SAAS,GAAG;AAC5C,eACE,+BAAAA,QAAA,cAAC,WAAM,WAAU,mCACf,+BAAAA,QAAA,cAAC,eACC,+BAAAA,QAAA,cAAC,YACC,+BAAAA,QAAA,cAAC,YAAG,MAEJ,GACA,+BAAAA,QAAA,cAAC,YAAG,eAEJ,GACA,+BAAAA,QAAA,cAAC,YAAG,KAEJ,GACA,+BAAAA,QAAA,cAAC,YAAG,QAEJ,GACA,+BAAAA,QAAA,cAAC,YAAG,cAEJ,GACA,+BAAAA,QAAA,cAAC,YAAG,wBAEJ,GACA,+BAAAA,QAAA,cAAC,YAAG,QAEJ,CACF,CACF,GACA,+BAAAA,QAAA,cAAC,eACE,MAAM,QAAQ,IAAI,CAACC,OAAM;AACxB,iBACE,+BAAAD,QAAA,cAAC,QAAG,KAAK,qBAAqBC,GAAE,MAC9B,+BAAAD,QAAA,cAAC,YACEC,GAAE,SACL,GACA,+BAAAD,QAAA,cAAC,YACEC,GAAE,aACL,GACA,+BAAAD,QAAA,cAAC,YACEC,GAAE,GACL,GACA,+BAAAD,QAAA,cAAC,YACEC,GAAE,MACL,GACA,+BAAAD,QAAA,cAAC,YACEC,GAAE,YACL,GACA,+BAAAD,QAAA,cAAC,YACEC,GAAE,sBACL,GACA,+BAAAD,QAAA,cAAC,YACEC,GAAE,MACL,CACF;AAAA,QAEJ,CAAC,CACH,CACF;AAAA,MAEJ,OAAO;AACL,eACE,+BAAAD,QAAA,cAAC,WAAE,mBAEH;AAAA,MAEJ;AAAA,IACF,GAAG,CACL;AAAA,EAEJ;;;AC3EA,MAAAE,iBAA2C;AAE5B,WAAR,4BAA6C,OAAO;AACzD,WACE,+BAAAC,QAAA,6BAAAA,QAAA,iBACI,MAAM;AACN,UAAG,MAAM,WAAW,MAAM,QAAQ,SAAS,GAAG;AAC5C,eACE,+BAAAA,QAAA,cAAC,WAAM,WAAU,mCACf,+BAAAA,QAAA,cAAC,eACC,+BAAAA,QAAA,cAAC,YACC,+BAAAA,QAAA,cAAC,YAAG,MAEJ,GACA,+BAAAA,QAAA,cAAC,YAAG,eAEJ,GACA,+BAAAA,QAAA,cAAC,YAAG,KAEJ,GACA,+BAAAA,QAAA,cAAC,YAAG,cAEJ,GACA,+BAAAA,QAAA,cAAC,YAAG,SAEJ,CACF,CACF,GACA,+BAAAA,QAAA,cAAC,eACE,MAAM,QAAQ,IAAI,CAACC,OAAM;AACxB,iBACE,+BAAAD,QAAA,cAAC,QAAG,KAAK,iBAAiBC,GAAE,MAC1B,+BAAAD,QAAA,cAAC,YACEC,GAAE,SACL,GACA,+BAAAD,QAAA,cAAC,YACEC,GAAE,aACL,GACA,+BAAAD,QAAA,cAAC,YACEC,GAAE,GACL,GACA,+BAAAD,QAAA,cAAC,YACEC,GAAE,YACL,GACA,+BAAAD,QAAA,cAAC,aACG,MAAM;AACN,gBAAGC,GAAE,YAAY;AACf,qBACE,+BAAAD,QAAA,cAAC,UAAK,WAAU,yBAAsB,KAEtC;AAAA,YAEJ;AAAA,UACF,GAAG,CACL,CACF;AAAA,QAEJ,CAAC,CACH,CACF;AAAA,MAEJ,OAAO;AACL,eACE,+BAAAA,QAAA,cAAC,WAAE,mBAEH;AAAA,MAEJ;AAAA,IACF,GAAG,CACL;AAAA,EAEJ;;;ACvEA,MAAAE,iBAA2C;AAE5B,WAAR,iCAAkD,OAAO;AAC9D,WACE,+BAAAC,QAAA,6BAAAA,QAAA,iBACI,MAAM;AACN,UAAG,MAAM,WAAW,MAAM,QAAQ,SAAS,GAAG;AAC5C,eACE,+BAAAA,QAAA,cAAC,WAAM,WAAU,mCACf,+BAAAA,QAAA,cAAC,eACC,+BAAAA,QAAA,cAAC,YACC,+BAAAA,QAAA,cAAC,YAAG,eAEJ,GACA,+BAAAA,QAAA,cAAC,YAAG,MAEJ,GACA,+BAAAA,QAAA,cAAC,YAAG,QAEJ,GACA,+BAAAA,QAAA,cAAC,YAAG,cAEJ,GACA,+BAAAA,QAAA,cAAC,YAAG,wBAEJ,GACA,+BAAAA,QAAA,cAAC,YAAG,QAEJ,CACF,CACF,GACA,+BAAAA,QAAA,cAAC,eACE,MAAM,QAAQ,IAAI,CAACC,IAAG,MAAM;AAC3B,iBACE,+BAAAD,QAAA,cAAC,QAAG,KAAK,wBAAwB,GACjC;AAAA,QAEJ,CAAC,CACH,CACF;AAAA,MAEJ,OAAO;AACL,eACE,+BAAAA,QAAA,cAAC,WAAE,mBAEH;AAAA,MAEJ;AAAA,IACF,GAAG,CACL;AAAA,EAEJ;;;ACnDA,MAAAE,iBAA2C;AAE5B,WAAR,0BAA2C,OAAO;AACvD,WACE,+BAAAC,QAAA,6BAAAA,QAAA,iBACI,MAAM;AACN,UAAG,MAAM,WAAW,MAAM,QAAQ,SAAS,GAAG;AAC5C,eACE,+BAAAA,QAAA,cAAC,WAAM,WAAU,mCACf,+BAAAA,QAAA,cAAC,eACC,+BAAAA,QAAA,cAAC,YACC,+BAAAA,QAAA,cAAC,YAAG,kBAEJ,GACA,+BAAAA,QAAA,cAAC,YAAG,cAEJ,CACF,CACF,GACA,+BAAAA,QAAA,cAAC,eACE,MAAM,QAAQ,IAAI,CAACC,OAAM;AACxB,iBACE,+BAAAD,QAAA,cAAC,QAAG,KAAK,kBAAkBC,GAAE,MAC3B,+BAAAD,QAAA,cAAC,YACEC,GAAE,qBACL,GACA,+BAAAD,QAAA,cAAC,YACEC,GAAG,YACN,CACF;AAAA,QAEJ,CAAC,CACH,CACF;AAAA,MAEJ,OAAO;AACL,eACE,+BAAAD,QAAA,cAAC,WAAE,mBAEH;AAAA,MAEJ;AAAA,IACF,GAAG,CACL;AAAA,EAEJ;;;AC5CA,MAAAE,iBAAkB;AAEH,WAAR,iCAAkD,EAAE,UAAU,CAAC,EAAE,GAAG;AACzE,UAAM,UAAU,MAAM,QAAQ,OAAO,KAAK,QAAQ,SAAS;AAC3D,QAAI,CAAC;AAAS,aAAO,+BAAAC,QAAA,cAAC,WAAE,sCAAoC;AAE5D,WACE,+BAAAA,QAAA,cAAC,WAAM,WAAU,mCACf,+BAAAA,QAAA,cAAC,eACC,+BAAAA,QAAA,cAAC,YACC,+BAAAA,QAAA,cAAC,YAAG,QAAM,GACV,+BAAAA,QAAA,cAAC,YAAG,WAAS,GACb,+BAAAA,QAAA,cAAC,YAAG,cAAY,GAChB,+BAAAA,QAAA,cAAC,YAAG,QAAM,CACZ,CACF,GACA,+BAAAA,QAAA,cAAC,eACE,QAAQ,IAAI,CAAC,IAAI,QAChB,+BAAAA,QAAA,cAAC,QAAG,KAAK,GAAG,GAAG,WAAW,GAAG,aAAa,GAAG,MAC3C,+BAAAA,QAAA,cAAC,YAAI,GAAG,eAAe,QAAI,GAC3B,+BAAAA,QAAA,cAAC,YAAI,GAAG,kBAAkB,QAAI,GAC9B,+BAAAA,QAAA,cAAC,YACE,GAAG,UACF,+BAAAA,QAAA;AAAA,MAAC;AAAA;AAAA,QACC,MAAM,UAAU,GAAG,OAAO;AAAA,QAC1B,OAAO,EAAE,gBAAgB,QAAQ,QAAQ,UAAU;AAAA;AAAA,MAElD,GAAG,qBAAqB;AAAA,IAC3B,IAEA,GAAG,qBAAqB,QAE5B,GACA,+BAAAA,QAAA,cAAC,YAAI,GAAG,eAAe,QAAI,CAC7B,CACD,CACH,CACF;AAAA,EAEJ;;;ALlCA,MAAAC,gBAAkB;;;AMNlB;AAAA,IACC,SAAW;AAAA,MAAC;AAAA,QACR,MAAQ;AAAA,QACV,WAAa;AAAA,UAAC;AAAA,YACZ,MAAQ;AAAA,YACR,QAAU;AAAA,cAAC;AAAA,gBACR,MAAQ;AAAA,gBACR,WAAa;AAAA,kBACb;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACD;AAAA,cACD;AAAA,cACA;AAAA,gBACE,MAAQ;AAAA,gBACR,WAAa;AAAA,kBACb;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACD;AAAA,cACD;AAAA,cACA;AAAA,gBACE,MAAQ;AAAA,gBACR,WAAa;AAAA,kBACb;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACD;AAAA,cACD;AAAA,cACA;AAAA,gBACE,MAAQ;AAAA,gBACR,WAAa;AAAA,kBACb;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACD;AAAA,cACD;AAAA,cACA;AAAA,gBACE,MAAQ;AAAA,gBACR,WAAa;AAAA,kBACb;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACD;AAAA,cACD;AAAA,cACA;AAAA,gBACE,MAAQ;AAAA,gBACR,WAAa;AAAA,kBACb;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACD;AAAA,cACD;AAAA,cACA;AAAA,gBACE,MAAQ;AAAA,gBACR,WAAa;AAAA,kBACb;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACD;AAAA,cACD;AAAA,cACA;AAAA,gBACE,MAAQ;AAAA,gBACR,WAAa;AAAA,kBACb;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACD;AAAA,cACD;AAAA,cACA;AAAA,gBACE,MAAQ;AAAA,gBACR,WAAa;AAAA,kBACb;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;A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CA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBAC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ACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACD;AAAA,cACD;AAAA,cACA;AAAA,gBACC,MAAQ;AAAA,gBACR,WAAa;AAAA,kBACZ;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACD;AAAA,cACD;AAAA,YACD;AAAA,UACD;AAAA,UACA;AAAA,YACC,MAAQ;AAAA,YACR,QAAU;AAAA,cAAC;AAAA,gBACT,MAAQ;AAAA,gBACR,WAAa;AAAA,kBACZ;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACD;AAAA,cACD;AAAA,cACA;AAAA,gBACC,MAAQ;AAAA,gBACR,WAAa;AAAA,kBACZ;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACD;AAAA,cACD;AAAA,cACA;AAAA,gBACC,MAAQ;AAAA,gBACR,WAAa;AAAA,kBACZ;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACD;AAAA,cACD;AAAA,cACA;AAAA,gBACC,MAAQ;AAAA,gBACR,WAAa;AAAA,kBACZ;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACD;AAAA,cACD;AAAA,YACD;AAAA,UACD;AAAA,UACA;AAAA,YACC,MAAQ;AAAA,YACR,QAAU;AAAA,cAAC;AAAA,gBACT,MAAQ;AAAA,gBACR,WAAa;AAAA,kBACZ;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACD;AAAA,cACD;AAAA,cACA;AAAA,gBACC,MAAQ;AAAA,gBACR,WAAa;AAAA,kBACZ;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACD;AAAA,cACD;AAAA,cACA;AAAA,gBACC,MAAQ;AAAA,gBACR,WAAa;AAAA,kBACZ;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACD;AAAA,cACD;AAAA,cACA;AAAA,gBACC,MAAQ;AAAA,gBACR,WAAa;AAAA,kBACZ;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACD;AAAA,cACD;AAAA,cACA;AAAA,gBACC,MAAQ;AAAA,gBACR,WAAa;AAAA,kBACZ;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;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AiCf,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAiCb,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAgCZ,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;A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",
  "names": ["global", "w", "window", "slice", "push", "indexOf", "isFunction", "isWindow", "document", "node", "toType", "jQuery", "options", "name", "copy", "length", "arr", "second", "whitespace", "a", "documentElement", "createCache", "identifier", "rquickExpr", "escape", "e", "i", "match", "matches", "id", "dir", "compile", "hash", "map", "token", "find", "n", "elem", "self", "init", "index", "value", "state", "deferred", "process", "Data", "data", "getData", "dataAttr", "hooks", "next", "scale", "unit", "nodeName", "one", "t", "getStyles", "swap", "style", "prefix", "timer", "time", "timeout", "classNames", "max", "location", "s", "val", "prev", "settings", "completed", "position", "method", "type", "warn", "format", "ReactDebugCurrentFrame", "assign", "Component", "PureComponent", "isArray", "a", "e", "init", "x", "hasOwnProperty", "self", "createElement", "defaultProps", "cloneElement", "isValidElement", "escape", "match", "index", "c", "n", "toArray", "createContext", "Consumer", "moduleObject", "error", "propTypes", "forwardRef", "render", "name", "useContext", "Context", "useState", "useRef", "useEffect", "useInsertionEffect", "useLayoutEffect", "useCallback", "useMemo", "useImperativeHandle", "useTransition", "useId", "prefix", "frame", "s", "location", "node", "options", "returnValue", "Children", "push", "node", "index", "peek", "length", "a", "localDate", "timer", "initialTime", "options", "startTime", "timeout", "React", "warn", "format", "ReactDebugCurrentFrame", "Fragment", "canUseDOM", "hasOwnProperty", "e", "name", "prefix", "sanitizeURL", "_ref", "token", "node", "assign", "x", "match", "frame", "s", "c", "Component", "init", "workInProgress", "get", "set", "isHydrating", "isArray", "a", "options", "prefixes", "isCustomProperty", "msPattern", "hyphenateStyleName", "camelize", "character", "delimiter", "style", "eventRegistry", "registrationNameDependencies", "possibleRegistrationNames", "d", "error", "callCallback", "current", "now", "root", "map", "index", "log", "renderLanes", "queuedEvent", "getText", "getData", "normalize", "getEventKey", "activeElement", "state", "from", "y", "ownerDocument", "length", "next", "range", "TRANSITION_END", "noop", "createElement", "data", "location", "has", "cursor", "push", "id", "_id", "number", "baseProps", "defaultProps", "updateFragment", "child", "reconcileChildFibers", "Insertion", "_ref2", "error$1", "render", "subtreeRenderLanes", "hasContextChanged", "isIterable", "commitTime", "errors", "shouldFireAfterActiveInstanceBlur", "hydrate", "createPortal", "path", "currentHook", "ReactCurrentDispatcher", "createRoot", "c", "o", "Element", "Fragment", "Portal", "isElement", "hasOwnProperty", "n", "from", "s", "x", "location", "assign", "x", "isValidElement", "y", "data", "location", "i", "checker", "isNode", "getWindow", "node", "window", "toString", "ownerDocument", "defaultView", "isElement", "OwnElement", "Element", "isHTMLElement", "HTMLElement", "isShadowRoot", "ShadowRoot", "max", "Math", "min", "round", "getUAString", "uaData", "navigator", "userAgentData", "brands", "Array", "isArray", "map", "item", "brand", "version", "join", "userAgent", "isLayoutViewport", "test", "getBoundingClientRect", "element", "includeScale", "isFixedStrategy", "clientRect", "scaleX", "scaleY", "offsetWidth", "width", "offsetHeight", "height", "_ref", "visualViewport", "addVisualOffsets", "x", "left", "offsetLeft", "y", "top", "offsetTop", "right", "bottom", "getWindowScroll", "win", "scrollLeft", "pageXOffset", "scrollTop", "pageYOffset", "getHTMLElementScroll", "getNodeScroll", "getNodeName", "nodeName", "toLowerCase", "getDocumentElement", "document", "documentElement", "getWindowScrollBarX", "getComputedStyle", "isScrollParent", "overflow", "overflowX", "overflowY", "isElementScaled", "rect", "getCompositeRect", "elementOrVirtualElement", "offsetParent", "isFixed", "isOffsetParentAnElement", "offsetParentIsScaled", "scroll", "offsets", "clientLeft", "clientTop", "getLayoutRect", "abs", "getParentNode", "assignedSlot", "parentNode", "host", "getScrollParent", "indexOf", "body", "listScrollParents", "list", "scrollParent", "isBody", "target", "concat", "updatedList", "isTableElement", "getTrueOffsetParent", "position", "getContainingBlock", "isFirefox", "isIE", "elementCss", "currentNode", "css", "transform", "perspective", "contain", "willChange", "filter", "getOffsetParent", "auto", "basePlacements", "start", "end", "clippingParents", "viewport", "popper", "reference", "variationPlacements", "reduce", "acc", "placement", "placements", "beforeRead", "read", "afterRead", "beforeMain", "main", "afterMain", "beforeWrite", "write", "afterWrite", "modifierPhases", "order", "modifiers", "Map", "visited", "Set", "result", "forEach", "modifier", "set", "name", "sort", "add", "requires", "requiresIfExists", "dep", "has", "depModifier", "get", "push", "orderModifiers", "orderedModifiers", "phase", "debounce", "fn", "pending", "Promise", "resolve", "then", "undefined", "mergeByName", "merged", "current", "existing", "options", "data", "Object", "keys", "key", "getViewportRect", "strategy", "html", "clientWidth", "clientHeight", "layoutViewport", "getDocumentRect", "winScroll", "scrollWidth", "scrollHeight", "direction", "contains", "parent", "child", "rootNode", "getRootNode", "next", "isSameNode", "rectToClientRect", "getInnerBoundingClientRect", "getClientRectFromMixedType", "clippingParent", "getClippingParents", "canEscapeClipping", "clipperElement", "getClippingRect", "boundary", "rootBoundary", "mainClippingParents", "firstClippingParent", "clippingRect", "accRect", "getBasePlacement", "split", "getVariation", "getMainAxisFromPlacement", "computeOffsets", "basePlacement", "variation", "commonX", "commonY", "mainAxis", "len", "getFreshSideObject", "mergePaddingObject", "paddingObject", "expandToHashMap", "value", "hashMap", "detectOverflow", "state", "_options", "elementContext", "altBoundary", "padding", "altContext", "popperRect", "rects", "elements", "clippingClientRect", "contextElement", "referenceClientRect", "popperOffsets", "popperClientRect", "elementClientRect", "overflowOffsets", "offsetData", "modifiersData", "offset", "multiply", "axis", "DEFAULT_OPTIONS", "areValidElements", "args", "some", "popperGenerator", "generatorOptions", "defaultModifiers", "defaultOptions", "createPopper", "attributes", "styles", "effectCleanupFns", "isDestroyed", "instance", "setOptions", "setOptionsAction", "cleanupModifierEffects", "scrollParents", "m", "enabled", "runModifierEffects", "update", "forceUpdate", "reset", "index", "length", "destroy", "onFirstUpdate", "effect", "cleanupFn", "noopFn", "passive", "resize", "addEventListener", "removeEventListener", "unsetSides", "roundOffsetsByDPR", "dpr", "devicePixelRatio", "mapToStyles", "_ref2", "gpuAcceleration", "adaptive", "roundOffsets", "hasX", "hasOwnProperty", "hasY", "sideX", "sideY", "heightProp", "widthProp", "offsetY", "offsetX", "commonStyles", "computeStyles", "arrow", "applyStyles", "style", "assign", "removeAttribute", "setAttribute", "initialStyles", "margin", "styleProperties", "property", "attribute", "distanceAndSkiddingToXY", "invertDistance", "skidding", "distance", "hash", "getOppositePlacement", "replace", "matched", "getOppositeVariationPlacement", "computeAutoPlacement", "flipVariations", "allowedAutoPlacements", "allPlacements", "allowedPlacements", "overflows", "a", "b", "getExpandedFallbackPlacements", "oppositePlacement", "flip", "_skip", "checkMainAxis", "altAxis", "checkAltAxis", "specifiedFallbackPlacements", "fallbackPlacements", "preferredPlacement", "isBasePlacement", "referenceRect", "checksMap", "makeFallbackChecks", "firstFittingPlacement", "i", "isStartVariation", "isVertical", "mainVariationSide", "altVariationSide", "checks", "every", "check", "numberOfChecks", "_loop", "fittingPlacement", "find", "slice", "getAltAxis", "within", "mathMax", "mathMin", "withinMaxClamp", "v", "preventOverflow", "tether", "tetherOffset", "tetherOffsetValue", "normalizedTetherOffsetValue", "offsetModifierState", "mainSide", "altSide", "additive", "minLen", "maxLen", "arrowElement", "arrowRect", "arrowPaddingObject", "arrowPaddingMin", "arrowPaddingMax", "arrowLen", "minOffset", "maxOffset", "arrowOffsetParent", "clientOffset", "offsetModifierValue", "tetherMin", "tetherMax", "preventedOffset", "isOriginSide", "toPaddingObject", "minProp", "maxProp", "endDiff", "startDiff", "clientSize", "centerToReference", "center", "axisProp", "centerOffset", "querySelector", "getSideOffsets", "preventedOffsets", "isAnySideFullyClipped", "side", "hide", "referenceOverflow", "popperAltOverflow", "referenceClippingOffsets", "popperEscapeOffsets", "isReferenceHidden", "hasPopperEscaped", "eventListeners", "e", "style", "log", "e", "node", "activeElement", "x", "warning", "printWarning", "format", "x", "canUseDOM", "canUseDOM", "log", "log", "removeClass", "x", "incrementReference", "decrementReference", "trackClass", "untrackClass", "add", "remove", "log", "_classCallCheck", "PortalOpenInstances", "index", "log", "_extends", "_typeof", "_createClass", "_classCallCheck", "_possibleConstructorReturn", "self", "_inherits", "isTabKey", "isEscKey", "ModalPortal", "classNames", "prefix", "name", "render", "id", "defaultStyles", "state", "Component", "_extends", "_createClass", "_classCallCheck", "_possibleConstructorReturn", "self", "_inherits", "createHTMLElement", "name", "getCreatePortal", "Modal", "_ref", "createPortal", "portalClassName", "state", "now", "render", "e", "t", "n", "r", "o", "i", "s", "a", "c", "d", "p", "u", "g", "f", "h", "b", "m", "isArray", "isFunction", "trim", "merge", "extend", "a", "position", "toArray", "serialize", "options", "id", "name", "build", "data", "name", "path", "domain", "match", "line", "match", "rawValue", "e", "data", "data", "merge", "VERSION", "options", "data", "token", "index", "c", "axios", "require_axios", "classNames", "React", "format", "ReactDebugCurrentFrame", "init", "x", "assign", "prefix", "name", "match", "frame", "s", "c", "Component", "hasOwnProperty", "location", "isArray", "a", "e", "self", "defaultProps", "isValidElement", "node", "propTypes", "jsx", "extend", "create", "slice", "time", "x", "range", "max", "min", "d", "pow", "trim", "options", "data", "str", "isArray", "indexOf", "name", "id", "Util.setOptions", "Util.create", "Util.extend", "i", "init", "Util.isArray", "Util.splitWords", "Util.falseFn", "index", "Util.stamp", "e", "Point", "y", "round", "point", "a", "min2", "max2", "Util.formatNum", "c", "zoom", "scale", "s", "Util.wrapNum", "sin", "style", "canvas", "svg", "DomEvent.preventDefault", "path", "DomEvent.getPropagationPath", "now", "TRANSITION_END", "getStyle", "css", "hasClass", "addClass", "removeClass", "Util.trim", "getPosition", "DomEvent.on", "DomEvent.off", "getScale", "type", "Util.indexOf", "DomUtil.getPosition", "Util.requestAnimFrame", "DomUtil.setPosition", "Util.cancelAnimFrame", "t", "Map", "Util.bind", "DomUtil.TRANSITION", "DomUtil.TRANSITION_END", "DomUtil.addClass", "from", "size", "r", "t1", "b1", "log", "n", "w", "frame", "DomUtil.remove", "DomUtil.create", "padding", "DomEvent.getMousePosition", "DomUtil.get", "position", "DomUtil.getStyle", "remove", "DomEvent.isExternalTarget", "DomUtil.preventOutline", "DomUtil.removeClass", "DomUtil.TRANSFORM", "DomUtil.setTransform", "Control", "map", "control", "DomEvent.disableClickPropagation", "DomEvent.disableScrollPropagation", "link", "DomUtil.empty", "DomEvent.stop", "pow10", "prefix", "preventOutline", "DomUtil.hasClass", "DomUtil.disableImageDrag", "DomUtil.disableTextSelection", "DomUtil.getSizedParentNode", "DomUtil.getScale", "DomUtil.enableImageDrag", "DomUtil.enableTextSelection", "k", "edge", "LineUtil._getBitCode", "LineUtil._getEdgeIntersection", "LineUtil.isFlat", "prev", "layers", "re", "match", "marker", "icon", "Marker", "latLng", "DomUtil.setOpacity", "Path", "r2", "Circle", "circle", "LineUtil._sqClosestPointOnSegment", "LineUtil.polylineCenter", "LineUtil.clipSegment", "LineUtil.simplify", "LineUtil.pointToSegmentDistance", "LineUtil._flat", "PolyUtil.polygonCenter", "PolyUtil.clipPolygon", "DomUtil.toFront", "DomUtil.toBack", "node", "Popup", "DomEvent.stopPropagation", "popup", "Tooltip", "tooltip", "Util.throttle", "x2", "y2", "latLngBounds", "TileLayer", "Util.template", "Util.emptyImageUrl", "next", "threshold", "DomEvent.getWheelDelta", "global", "hooks", "isArray", "a", "k", "map", "extend", "format", "locale", "t", "to", "from", "warn", "name", "isFunction", "calendar", "now", "number", "sign", "token", "ordinal", "length", "i", "diff", "unit", "localeData", "s", "n", "x", "indexOf", "o", "y", "d", "date", "hours", "minutes", "next", "e", "data", "match", "timeFormat", "c", "w", "tokens", "meridiem", "min", "max", "years", "months", "weeks", "days", "seconds", "milliseconds", "offset", "period", "time", "prefix", "toArray", "index", "abs", "round", "thresholds", "threshold", "e", "t", "a", "r", "n", "o", "d", "c", "s", "renderErr", "actions", "init", "defaultRenderer", "_ref", "value", "emptyRenderer", "React", "defaultColumn", "Cell", "width", "minWidth", "maxWidth", "Number", "MAX_SAFE_INTEGER", "mergeProps", "propList", "reduce", "props", "next", "style", "className", "rest", "_objectWithoutPropertiesLoose", "_extends", "handlePropGetter", "prevProps", "userProps", "meta", "Array", "isArray", "makePropGetter", "hooks", "prev", "reduceHooks", "initial", "allowUndefined", "nextValue", "console", "info", "Error", "loopHooks", "context", "forEach", "hook", "ensurePluginOrder", "plugins", "befores", "pluginName", "afters", "pluginIndex", "findIndex", "plugin", "before", "beforeIndex", "functionalUpdate", "updater", "old", "useGetLatest", "obj", "ref", "useRef", "current", "useCallback", "safeUseLayoutEffect", "document", "useLayoutEffect", "useEffect", "useMountedLayoutEffect", "fn", "deps", "mountedRef", "useAsyncDebounce", "defaultFn", "defaultWait", "debounceRef", "getDefaultFn", "getDefaultWait", "_ref2", "args", "promise", "Promise", "resolve", "reject", "timeout", "clearTimeout", "setTimeout", "makeRenderer", "instance", "column", "type", "Comp", "flexRender", "isReactComponent", "component", "isClassComponent", "isExoticComponent", "proto", "Object", "getPrototypeOf", "prototype", "$$typeof", "includes", "description", "linkColumnStructure", "columns", "parent", "depth", "map", "assignColumnAccessor", "flattenColumns", "flattenBy", "id", "accessor", "Header", "accessorPath", "split", "row", "getBy", "error", "assign", "decorateColumn", "userDefaultColumn", "Footer", "originalWidth", "makeHeaderGroups", "allColumns", "additionalHeaderProperties", "headerGroups", "scanColumns", "uid", "getUID", "_loop", "headerGroup", "headers", "parentColumns", "hasParents", "some", "d", "latestParentColumn", "reverse", "newParent", "originalId", "placeholderOf", "push", "length", "pathObjCache", "Map", "path", "def", "cacheKey", "JSON", "stringify", "pathObj", "get", "makePathArray", "set", "val", "cursor", "pathPart", "e", "getFirstDefined", "i", "isFunction", "a", "arr", "key", "flat", "recurse", "expandRows", "rows", "manualExpandedKey", "expanded", "expandSubRows", "expandedRows", "handleRow", "addToExpandedRows", "isExpanded", "original", "canExpand", "subRows", "getFilterMethod", "filter", "userFilterTypes", "filterTypes", "text", "shouldAutoRemoveFilter", "autoRemove", "unpreparedAccessWarning", "passiveSupported", "passiveEventSupported", "supported", "options", "passive", "window", "addEventListener", "removeEventListener", "err", "reOpenBracket", "reCloseBracket", "flattenDeep", "String", "replace", "join", "newArr", "defaultGetTableProps", "role", "defaultGetTableBodyProps", "defaultGetHeaderProps", "colSpan", "totalVisibleHeaderCount", "defaultGetFooterProps", "defaultGetHeaderGroupProps", "index", "defaultGetFooterGroupProps", "defaultGetRowProps", "defaultGetCellProps", "cell", "makeDefaultPluginHooks", "useOptions", "stateReducers", "useControlledState", "columnsDeps", "allColumnsDeps", "accessValue", "materializedColumns", "materializedColumnsDeps", "useInstanceAfterData", "visibleColumns", "visibleColumnsDeps", "headerGroupsDeps", "useInstanceBeforeDimensions", "useInstance", "prepareRow", "getTableProps", "getTableBodyProps", "getHeaderGroupProps", "getFooterGroupProps", "getHeaderProps", "getFooterProps", "getRowProps", "getCellProps", "useFinalInstance", "resetHiddenColumns", "toggleHideColumn", "setHiddenColumns", "toggleHideAllColumns", "useColumnVisibility", "getToggleHiddenProps", "defaultGetToggleHiddenProps", "getToggleHideAllColumnsProps", "defaultGetToggleHideAllColumnsProps", "reducer", "state", "hiddenColumns", "onChange", "toggleHidden", "target", "checked", "isVisible", "title", "allColumnsHidden", "indeterminate", "action", "previousState", "initialState", "should", "columnId", "shouldAll", "isMountedRef", "handleColumn", "parentVisible", "subColumn", "subHeader", "flatHeaders", "dispatch", "getHooks", "autoResetHiddenColumns", "getInstance", "getAutoResetHiddenColumns", "defaultInitialState", "defaultColumnInstance", "defaultReducer", "prevState", "defaultGetSubRows", "defaultGetRowId", "defaultUseControlledState", "applyDefaults", "getSubRows", "getRowId", "stateReducer", "useTable", "instanceRef", "Boolean", "data", "userColumns", "getStateReducer", "s", "handler", "useReducer", "undefined", "reducerState", "useMemo", "flatRows", "rowsById", "allColumnsQueue", "shift", "accessRowsForColumn", "accessValueHooks", "initialRows", "find", "duplicateColumns", "all", "visibleColumnsDep", "sort", "calculateHeaderWidths", "totalColumnsMinWidth", "totalColumnsWidth", "totalColumnsMaxWidth", "render", "footerGroups", "allCells", "values", "cells", "left", "sumTotalMinWidth", "sumTotalWidth", "sumTotalMaxWidth", "sumTotalFlexWidth", "header", "subHeaders", "totalLeft", "totalMinWidth", "totalWidth", "totalMaxWidth", "totalFlexWidth", "Math", "min", "max", "canResize", "accessRow", "originalRow", "rowIndex", "parentRows", "originalSubRows", "resetExpanded", "toggleRowExpanded", "toggleAllRowsExpanded", "useExpanded", "getToggleAllRowsExpandedProps", "defaultGetToggleAllRowsExpandedProps", "getToggleRowExpandedProps", "defaultGetToggleRowExpandedProps", "onClick", "isAllRowsExpanded", "keys", "expandAll", "rowId", "setExpanded", "exists", "shouldExist", "_extends2", "_", "_toPropertyKey", "paginateExpandedRows", "autoResetExpanded", "getAutoResetExpanded", "expandedDepth", "findExpandedDepth", "preExpandedRows", "maxDepth", "splitId", "ids", "filterValue", "rowValue", "toLowerCase", "exactText", "exactTextCase", "includesAll", "every", "includesSome", "includesValue", "exact", "equals", "between", "Infinity", "temp", "resetFilters", "setFilter", "setAllFilters", "useFilters", "filters", "filterMethod", "previousfilter", "newFilter", "manualFilters", "defaultCanFilter", "disableFilters", "autoResetFilters", "columnDefaultCanFilter", "columnDisableFilters", "canFilter", "found", "filteredFlatRows", "filteredRowsById", "filterRows", "filteredRows", "filteredSoFar", "preFilteredRows", "warn", "nonFilteredColumns", "getAutoResetFilters", "preFilteredFlatRows", "preFilteredRowsById", "resetGlobalFilter", "setGlobalFilter", "useGlobalFilter", "globalFilter", "stateWithoutGlobalFilter", "manualGlobalFilter", "globalFilterValue", "autoResetGlobalFilter", "disableGlobalFilter", "columnDisableGlobalFilter", "filterableColumns", "c", "globalFilteredRows", "globalFilteredFlatRows", "globalFilteredRowsById", "getAutoResetGlobalFilter", "preGlobalFilteredRows", "preGlobalFilteredFlatRows", "preGlobalFilteredRowsById", "sum", "aggregatedValues", "minMax", "average", "median", "mid", "floor", "nums", "b", "unique", "from", "Set", "uniqueCount", "size", "count", "emptyArray", "emptyObject", "resetGroupBy", "setGroupBy", "toggleGroupBy", "useGroupBy", "getGroupByToggleProps", "defaultGetGroupByToggleProps", "groupBy", "canGroupBy", "persist", "resolvedGroupBy", "groupByColumns", "g", "col", "nonGroupByColumns", "isGrouped", "groupedIndex", "indexOf", "defaultUserAggregations", "groupByFn", "defaultGroupByFn", "manualGroupBy", "aggregations", "userAggregations", "autoResetGroupBy", "disableGroupBy", "defaultCanGroupBy", "defaultColumnGroupBy", "defaultGroupBy", "columnDisableGroupBy", "Aggregated", "existingGroupBy", "aggregateRowsToValues", "leafRows", "groupedRows", "aggregateFn", "aggregate", "groupedValues", "leafValues", "columnValue", "aggregateValue", "aggregateValueFn", "groupedFlatRows", "groupedRowsById", "onlyGroupedFlatRows", "onlyGroupedRowsById", "nonGroupedFlatRows", "nonGroupedRowsById", "groupUpRecursively", "parentId", "rowGroupsMap", "aggregatedGroupedRows", "entries", "groupByVal", "groupByID", "subRow", "getAutoResetGroupBy", "preGroupedRows", "preGroupedFlatRow", "preGroupedRowsById", "isPlaceholder", "isAggregated", "resKey", "reSplitAlphaNumeric", "alphanumeric", "rowA", "rowB", "getRowValuesByColumnID", "toString", "aa", "bb", "an", "parseInt", "bn", "combo", "isNaN", "datetime", "getTime", "compareBasic", "basic", "string", "alower", "blower", "number", "replaceNonNumeric", "row1", "row2", "resetSortBy", "setSortBy", "toggleSortBy", "clearSortBy", "sortType", "sortDescFirst", "useSortBy", "getSortByToggleProps", "defaultGetSortByToggleProps", "isMultiSortEvent", "shiftKey", "canSort", "disableMultiSort", "sortBy", "newSortBy", "desc", "multi", "disableSortRemove", "disableMultiRemove", "maxMultiSortColCount", "existingSortBy", "existingIndex", "hasDescDefined", "sortAction", "splice", "orderByFn", "defaultOrderByFn", "userSortTypes", "sortTypes", "manualSortBy", "defaultCanSort", "disableSortBy", "autoResetSortBy", "defaultColumnCanSort", "columnDisableSortBy", "columnSort", "isSorted", "sortedIndex", "isSortedDesc", "sortedFlatRows", "availableSortBy", "sortData", "sortedData", "sortMethod", "sortInverted", "sortedRows", "getAutoResetSortBy", "preSortedRows", "preSortedFlatRows", "funcs", "dirs", "sortFn", "sortInt", "resetPage", "gotoPage", "setPageSize", "usePagination", "pageSize", "pageIndex", "pageCount", "page", "newPageIndex", "canNavigate", "topRowIndex", "autoResetPage", "userPageCount", "manualPagination", "getAutoResetPage", "ceil", "pageOptions", "fill", "pageStart", "pageEnd", "slice", "canPreviousPage", "canNextPage", "previousPage", "nextPage", "resetPivot", "togglePivot", "_UNSTABLE_usePivotColumns", "getPivotToggleProps", "defaultGetPivotToggleProps", "defaultPivotColumns", "canPivot", "pivotColumns", "setPivot", "resolvedPivot", "isPivotSource", "uniqueValues", "add", "materialized", "sourceColumns", "buildPivotColumns", "pivotFilters", "pivotColumn", "sourceColumn", "isPivoted", "uniqueValue", "columnGroup", "PivotHeader", "isPivotGroup", "pivotValue", "newMaterialized", "autoResetPivot", "manaulPivot", "disablePivot", "defaultCanPivot", "defaultColumnPivot", "defaultPivot", "columnDisablePivot", "getAutoResetPivot", "resetSelectedRows", "toggleAllRowsSelected", "toggleRowSelected", "toggleAllPageRowsSelected", "useRowSelect", "getToggleRowSelectedProps", "defaultGetToggleRowSelectedProps", "getToggleAllRowsSelectedProps", "defaultGetToggleAllRowsSelectedProps", "getToggleAllPageRowsSelectedProps", "defaultGetToggleAllPageRowsSelectedProps", "manualRowSelectedKey", "isSelected", "isSomeSelected", "isAllRowsSelected", "selectedRowIds", "isAllPageRowsSelected", "setSelected", "selectAll", "selectSubRows", "newSelectedRowIds", "handleRowById", "autoResetSelectedRows", "selectedFlatRows", "getRowIsSelected", "getAutoResetSelectedRows", "allChildrenSelected", "someSelected", "defaultInitialRowStateAccessor", "defaultInitialCellStateAccessor", "setRowState", "setCellState", "resetRowState", "useRowState", "initialRowStateAccessor", "initialCellStateAccessor", "rowState", "oldRowState", "_extends3", "_extends4", "oldCellState", "cellState", "autoResetRowState", "getAutoResetRowState", "setState", "resetColumnOrder", "setColumnOrder", "useColumnOrder", "columnOrder", "columnOrderCopy", "columnsCopy", "columnsInOrder", "targetColumnId", "foundIndex", "columnStartResizing", "columnResizing", "columnDoneResizing", "resetResize", "useResizeColumns", "getResizerProps", "defaultGetResizerProps", "position", "onResizeStart", "isTouchEvent", "touches", "headersToResize", "getLeafHeaders", "headerIdWidths", "clientX", "round", "raf", "mostRecentClientX", "dispatchEnd", "cancelAnimationFrame", "dispatchMove", "scheduleDispatchMoveOnNextAnimationFrame", "clientXPos", "requestAnimationFrame", "handlersAndEvents", "mouse", "moveEvent", "moveHandler", "upEvent", "upHandler", "touch", "cancelable", "preventDefault", "stopPropagation", "events", "passiveIfSupported", "columnWidth", "onMouseDown", "onTouchStart", "draggable", "columnWidths", "startX", "isResizingColumn", "deltaX", "percentageDeltaX", "newColumnWidths", "headerId", "headerWidth", "disableResizing", "isResizing", "autoResetResize", "getAutoResetResize", "resetResizing", "leafHeaders", "recurseHeader", "cellStyles", "top", "useAbsoluteLayout", "getRowStyles", "display", "boxSizing", "useBlockLayout", "useFlexLayout", "flex", "useGridLayout", "gridTemplateColumns", "gridLayout", "startWidths", "gridColumn", "getElementWidth", "acc", "minWidths", "maxWidths", "headerIdGridWidths", "getElementById", "offsetWidth", "_extends", "_createClass", "_objectWithoutProperties", "_classCallCheck", "_possibleConstructorReturn", "self", "_inherits", "Toggle", "onFocus", "render", "_ref", "_typeof", "obj", "date", "number", "date", "date", "date", "date", "date", "options", "_ref", "_ref2", "_ref3", "date", "options", "_ref", "_ref2", "_ref3", "date", "options", "_ref", "_ref2", "_ref3", "date", "options", "date", "number", "sign", "y", "date", "token", "d", "a", "s", "milliseconds", "date", "token", "y", "options", "q", "L", "w", "d", "e", "c", "a", "k", "s", "x", "t", "sign", "delimiter", "dateLongFormatter", "timeLongFormatter", "dateTimeLongFormatter", "date", "utcDate", "token", "format", "formatDistance", "token", "options", "options", "format", "formatRelative", "token", "_options", "options", "index", "ordinalNumber", "_options", "number", "options", "options", "match", "index", "locale", "format", "options", "_ref", "_ref2", "_ref3", "locale", "utcDate", "date", "date", "months", "date", "seconds", "date", "date", "date", "date", "options", "_ref", "_ref2", "_ref3", "date", "date", "date", "date", "date", "date", "date", "date", "seconds", "date", "date", "date", "date", "date", "date", "min", "max", "date", "date", "date", "date", "date", "options", "_ref", "_ref2", "_ref3", "date", "date", "date", "isEqual", "date", "date", "interval", "time", "_arrayLikeToArray", "_unsupportedIterableToArray", "o", "n", "o", "F", "n", "e", "s", "assign", "_assertThisInitialized", "self", "_setPrototypeOf", "o", "p", "_inherits", "_getPrototypeOf", "o", "_isNativeReflectConstruct", "e", "_typeof", "_possibleConstructorReturn", "self", "_createSuper", "_classCallCheck", "_typeof", "_toPrimitive", "_typeof", "_toPropertyKey", "_defineProperties", "_createClass", "_defineProperty", "_assertThisInitialized2", "_inherits2", "_createSuper2", "_classCallCheck2", "_createClass2", "_defineProperty2", "Setter", "_options", "ValueSetter", "utcDate", "options", "DateToSystemTimezoneSetter", "date", "_classCallCheck2", "_createClass2", "_defineProperty2", "Parser", "token", "match", "options", "_options", "_classCallCheck2", "_createClass2", "_assertThisInitialized2", "_inherits2", "_createSuper2", "_defineProperty2", "EraParser", "parse", "token", "match", "date", "require_constants", "require_utils", "sign", "seconds", "n", "_classCallCheck2", "_createClass2", "_assertThisInitialized2", "_inherits2", "_createSuper2", "_defineProperty2", "YearParser", "parse", "token", "match", "valueCallback", "date", "_classCallCheck2", "_createClass2", "_assertThisInitialized2", "_inherits2", "_createSuper2", "_defineProperty2", "LocalWeekYearParser", "parse", "token", "match", "valueCallback", "date", "options", "_classCallCheck2", "_createClass2", "_assertThisInitialized2", "_inherits2", "_createSuper2", "_defineProperty2", "ISOWeekYearParser", "parse", "token", "_classCallCheck2", "_createClass2", "_assertThisInitialized2", "_inherits2", "_createSuper2", "_defineProperty2", "ExtendedYearParser", "parse", "token", "date", "_classCallCheck2", "_createClass2", "_assertThisInitialized2", "_inherits2", "_createSuper2", "_defineProperty2", "QuarterParser", "parse", "token", "match", "date", "_classCallCheck2", "_createClass2", "_assertThisInitialized2", "_inherits2", "_createSuper2", "_defineProperty2", "StandAloneQuarterParser", "parse", "token", "match", "date", "_classCallCheck2", "_createClass2", "_assertThisInitialized2", "_inherits2", "_createSuper2", "_defineProperty2", "MonthParser", "parse", "token", "match", "valueCallback", "date", "_classCallCheck2", "_createClass2", "_assertThisInitialized2", "_inherits2", "_createSuper2", "_defineProperty2", "StandAloneMonthParser", "parse", "token", "match", "valueCallback", "date", "options", "date", "_classCallCheck2", "_createClass2", "_assertThisInitialized2", "_inherits2", "_createSuper2", "_defineProperty2", "LocalWeekParser", "parse", "token", "match", "date", "options", "date", "_classCallCheck2", "_createClass2", "_assertThisInitialized2", "_inherits2", "_createSuper2", "_defineProperty2", "ISOWeekParser", "parse", "token", "match", "date", "_classCallCheck2", "_createClass2", "_assertThisInitialized2", "_inherits2", "_createSuper2", "_defineProperty2", "DateParser", "parse", "token", "match", "date", "_classCallCheck2", "_createClass2", "_assertThisInitialized2", "_inherits2", "_createSuper2", "_defineProperty2", "DayOfYearParser", "parse", "token", "match", "date", "options", "_ref", "_ref2", "_ref3", "date", "_classCallCheck2", "_createClass2", "_assertThisInitialized2", "_inherits2", "_createSuper2", "_defineProperty2", "DayParser", "parse", "token", "match", "date", "options", "_classCallCheck2", "_createClass2", "_assertThisInitialized2", "_inherits2", "_createSuper2", "_defineProperty2", "LocalDayParser", "parse", "token", "match", "options", "valueCallback", "date", "_classCallCheck2", "_createClass2", "_assertThisInitialized2", "_inherits2", "_createSuper2", "_defineProperty2", "StandAloneLocalDayParser", "parse", "token", "match", "options", "valueCallback", "date", "date", "_classCallCheck2", "_createClass2", "_assertThisInitialized2", "_inherits2", "_createSuper2", "_defineProperty2", "ISODayParser", "parse", "token", "match", "valueCallback", "date", "_classCallCheck2", "_createClass2", "_assertThisInitialized2", "_inherits2", "_createSuper2", "_defineProperty2", "AMPMParser", "parse", "token", "match", "date", "_classCallCheck2", "_createClass2", "_assertThisInitialized2", "_inherits2", "_createSuper2", "_defineProperty2", "AMPMMidnightParser", "parse", "token", "match", "date", "_classCallCheck2", "_createClass2", "_assertThisInitialized2", "_inherits2", "_createSuper2", "_defineProperty2", "DayPeriodParser", "parse", "token", "match", "date", "_classCallCheck2", "_createClass2", "_assertThisInitialized2", "_inherits2", "_createSuper2", "_defineProperty2", "Hour1to12Parser", "parse", "token", "match", "date", "_classCallCheck2", "_createClass2", "_assertThisInitialized2", "_inherits2", "_createSuper2", "_defineProperty2", "Hour0to23Parser", "parse", "token", "match", "date", "_classCallCheck2", "_createClass2", "_assertThisInitialized2", "_inherits2", "_createSuper2", "_defineProperty2", "Hour0To11Parser", "parse", "token", "match", "date", "_classCallCheck2", "_createClass2", "_assertThisInitialized2", "_inherits2", "_createSuper2", "_defineProperty2", "Hour1To24Parser", "parse", "token", "match", "date", "_classCallCheck2", "_createClass2", "_assertThisInitialized2", "_inherits2", "_createSuper2", "_defineProperty2", "MinuteParser", "parse", "token", "match", "date", "_classCallCheck2", "_createClass2", "_assertThisInitialized2", "_inherits2", "_createSuper2", "_defineProperty2", "SecondParser", "parse", "token", "match", "date", "_classCallCheck2", "_createClass2", "_assertThisInitialized2", "_inherits2", "_createSuper2", "_defineProperty2", "FractionOfSecondParser", "parse", "token", "valueCallback", "date", "_classCallCheck2", "_createClass2", "_assertThisInitialized2", "_inherits2", "_createSuper2", "_defineProperty2", "ISOTimezoneWithZParser", "parse", "token", "date", "_classCallCheck2", "_createClass2", "_assertThisInitialized2", "_inherits2", "_createSuper2", "_defineProperty2", "ISOTimezoneParser", "parse", "token", "date", "_classCallCheck2", "_createClass2", "_assertThisInitialized2", "_inherits2", "_createSuper2", "_defineProperty2", "TimestampSecondsParser", "parse", "_classCallCheck2", "_createClass2", "_assertThisInitialized2", "_inherits2", "_createSuper2", "_defineProperty2", "TimestampMillisecondsParser", "parse", "parse", "options", "_ref", "_ref2", "_ref3", "locale", "_loop", "token", "setter", "a", "index", "date", "utcDate", "options", "date", "parseYear", "time", "token", "seconds", "sign", "_inheritsLoose", "_setPrototypeOf", "o", "p", "_objectWithoutPropertiesLoose", "_assertThisInitialized", "self", "testPassiveEventSupport", "options", "noop", "render", "React", "_getRequireWildcardCache", "_ref", "node", "require_utils", "React", "_getRequireWildcardCache", "unwrapArray", "safeInvoke", "setRef", "node", "fromEntries", "_ref", "a", "length", "isEqual", "React", "ReactDOM", "_getRequireWildcardCache", "usePopper", "options", "state", "_ref", "createPopper", "Popper", "React", "_getRequireWildcardCache", "NOOP", "NOOP_PROMISE", "_ref", "options", "state", "React", "_getRequireWildcardCache", "_ref", "node", "date", "e", "t", "r", "a", "n", "o", "s", "c", "d", "y", "w", "k", "x", "L", "q", "$", "re", "i", "p", "kr", "l", "u", "f", "h", "m", "Symbol", "Symbol", "hasOwnProperty", "e", "objectToString", "Symbol", "objectToString", "isFunction", "e", "isFunction", "hasOwnProperty", "getValue", "getValue", "require_defineProperty", "e", "hasOwnProperty", "index", "length", "identity", "index", "length", "identity", "identity", "isFunction", "length", "index", "index", "length", "n", "index", "hasOwnProperty", "isArray", "Buffer", "e", "isArray", "hasOwnProperty", "length", "hasOwnProperty", "require_assign", "hasOwnProperty", "assign", "index", "length", "isArray", "hasOwnProperty", "data", "hasOwnProperty", "data", "data", "index", "length", "length", "data", "index", "data", "index", "data", "index", "index", "length", "Map", "Map", "map", "data", "data", "size", "index", "length", "memoize", "memoize", "match", "number", "Symbol", "isArray", "isArray", "path", "index", "length", "data", "Map", "data", "data", "index", "length", "index", "length", "index", "othValue", "Uint8Array", "map", "index", "index", "Symbol", "Uint8Array", "index", "length", "isArray", "index", "length", "hasOwnProperty", "index", "DataView", "Promise", "Set", "WeakMap", "DataView", "Map", "Promise", "Set", "WeakMap", "isArray", "hasOwnProperty", "index", "length", "data", "length", "path", "isArray", "path", "index", "length", "path", "path", "path", "path", "identity", "isArray", "index", "length", "length", "index", "index", "collection", "length", "index", "length", "identity", "isArray", "index", "collection", "isArray", "hasOwnProperty", "prefix", "id", "hasOwnProperty", "require_defaults", "hasOwnProperty", "index", "length", "index", "length", "index", "index", "sign", "require_toInteger", "length", "index", "index", "length", "isArray", "length", "path", "index", "length", "index", "length", "path", "path", "Symbol", "isArray", "index", "length", "length", "isArray", "hasOwnProperty", "index", "length", "range", "length", "index", "length", "index", "length", "noop", "Set", "noop", "index", "length", "path", "object", "identity", "require_isDate", "index", "length", "require_isEqual", "isEqual", "length", "index", "collection", "isArray", "index", "length", "collection", "isArray", "hasOwnProperty", "now", "now", "options", "time", "options", "index", "length", "stringify", "global", "Delaunator", "n", "from", "x", "y", "d", "r", "id", "k", "e", "q", "t", "a", "b0", "c", "sign", "swap", "require_lib", "d", "a", "c", "cross", "x", "y", "r", "n", "Delaunay", "i", "e", "_ref", "t", "index", "length", "identity", "sum", "a", "_typeof", "obj", "_classCallCheck", "__webpack_require__", "escapeFn", "module", "warn", "process", "Comparison", "e", "_objectSpread", "ownKeys", "_defineProperty", "_defineProperties", "_createClass", "_possibleConstructorReturn", "self", "_assertThisInitialized", "_inherits", "_setPrototypeOf", "_wrapNativeSuper", "Class", "_getPrototypeOf", "_construct", "Parent", "args", "o", "p", "AssertionError", "options", "NodeError", "name", "_slicedToArray", "_arrayWithHoles", "_iterableToArrayLimit", "_nonIterableRest", "arrayFromSet", "arrayFromMap", "map", "hasOwnProperty", "objectToString", "x", "y", "_keys", "_keys2", "k", "exports", "CI_BRK", "CP_BRK", "DI_BRK", "IN_BRK", "PR_BRK", "utils", "require", "NumberT", "Pointer", "Object", "assign", "Number", "ArrayT", "type", "length", "lengthType", "decode", "stream", "parent", "pos", "res", "ctx", "resolveLength", "defineProperties", "value", "_startOffset", "_currentOffset", "writable", "_length", "target", "undefined", "push", "i", "end", "size", "array", "item", "encode", "pointers", "startOffset", "pointerOffset", "ptr", "val", "Bitfield", "flags", "flag", "keys", "BooleanT", "BufferT", "readBuffer", "buf", "writeBuffer", "iconv", "error", "DecodeStream", "buffer", "readString", "encoding", "toString", "Buffer", "from", "byte", "error1", "slice", "readUInt24BE", "readUInt16BE", "readUInt8", "readUInt24LE", "readUInt16LE", "readInt24BE", "readInt16BE", "readInt24LE", "readInt8", "TYPES", "UInt8", "UInt16", "UInt24", "UInt32", "Int8", "Int16", "Int24", "Int32", "Float", "Double", "_loop", "key", "bytes", "replace", "prototype", "ret", "EncodeStream", "_inheritsLoose", "bufferSize", "arguments", "alloc", "bufferOffset", "_read", "ensure", "flush", "writeString", "string", "Error", "writeUInt24BE", "writeUInt24LE", "writeInt24BE", "writeInt24LE", "fill", "Readable", "Enum", "index", "indexOf", "inspect", "LazyArrayT", "LazyArray", "toArray", "base", "items", "get", "result", "endian", "fn", "Fixed", "fracBits", "_point", "Optional", "condition", "call", "offsetType", "allowNull", "nullValue", "lazy", "relativeTo", "relativeToGetter", "offset", "relative", "c", "decodeValue", "PropertyDescriptor", "VoidPointer", "pointerSize", "Reserved", "count", "data", "StringT", "byteLength", "writeUInt8", "Struct", "fields", "_setup", "_parseFields", "defineProperty", "includePointers", "preEncode", "getPath", "object", "pathArray", "reduce", "prevObj", "VersionedStruct", "versions", "versionPath", "split", "version", "header", "isNaN", "opts", "enumerable", "configurable", "_toPropertyKey", "_toPrimitive", "base64", "ieee754", "customInspectSymbol", "Symbol", "SlowBuffer", "K_MAX_LENGTH", "TYPED_ARRAY_SUPPORT", "typedArraySupport", "console", "arr", "Uint8Array", "proto", "foo", "setPrototypeOf", "isBuffer", "byteOffset", "createBuffer", "RangeError", "arg", "encodingOrOffset", "TypeError", "allocUnsafe", "poolSize", "fromString", "ArrayBuffer", "isView", "fromArrayView", "isInstance", "fromArrayBuffer", "SharedArrayBuffer", "valueOf", "b", "fromObject", "toPrimitive", "assertSize", "checked", "allocUnsafeSlow", "isEncoding", "actual", "write", "fromArrayLike", "arrayView", "copy", "len", "numberIsNaN", "Array", "isArray", "_isBuffer", "compare", "Math", "min", "String", "toLowerCase", "concat", "list", "set", "mustMatch", "loweredCase", "utf8ToBytes", "base64ToBytes", "slowToString", "start", "hexSlice", "utf8Slice", "asciiSlice", "latin1Slice", "base64Slice", "utf16leSlice", "swap", "n", "m", "swap16", "swap32", "swap64", "apply", "toLocaleString", "equals", "str", "max", "INSPECT_MAX_BYTES", "trim", "thisStart", "thisEnd", "thisCopy", "targetCopy", "bidirectionalIndexOf", "dir", "arrayIndexOf", "lastIndexOf", "indexSize", "arrLength", "valLength", "read", "foundIndex", "found", "j", "includes", "hexWrite", "remaining", "strLen", "parsed", "parseInt", "substr", "utf8Write", "blitBuffer", "asciiWrite", "asciiToBytes", "base64Write", "ucs2Write", "utf16leToBytes", "isFinite", "toJSON", "_arr", "fromByteArray", "firstByte", "codePoint", "bytesPerSequence", "secondByte", "thirdByte", "fourthByte", "tempCodePoint", "decodeCodePointsArray", "MAX_ARGUMENTS_LENGTH", "codePoints", "fromCharCode", "out", "hexSliceLookupTable", "newBuf", "subarray", "checkOffset", "ext", "readUintLE", "readUIntLE", "noAssert", "mul", "readUintBE", "readUIntBE", "readUint8", "readUint16LE", "readUint16BE", "readUint32LE", "readUInt32LE", "readUint32BE", "readUInt32BE", "readBigUInt64LE", "defineBigIntMethod", "validateNumber", "first", "last", "boundsError", "lo", "hi", "BigInt", "readBigUInt64BE", "readIntLE", "pow", "readIntBE", "readInt16LE", "readInt32LE", "readInt32BE", "readBigInt64LE", "readBigInt64BE", "readFloatLE", "readFloatBE", "readDoubleLE", "readDoubleBE", "checkInt", "writeUintLE", "writeUIntLE", "maxBytes", "writeUintBE", "writeUIntBE", "writeUint8", "writeUint16LE", "writeUInt16LE", "writeUint16BE", "writeUInt16BE", "writeUint32LE", "writeUInt32LE", "writeUint32BE", "writeUInt32BE", "wrtBigUInt64LE", "checkIntBI", "wrtBigUInt64BE", "writeBigUInt64LE", "writeBigUInt64BE", "writeIntLE", "limit", "sub", "writeIntBE", "writeInt8", "writeInt16LE", "writeInt16BE", "writeInt32LE", "writeInt32BE", "writeBigInt64LE", "writeBigInt64BE", "checkIEEE754", "writeFloat", "littleEndian", "writeFloatLE", "writeFloatBE", "writeDouble", "writeDoubleLE", "writeDoubleBE", "targetStart", "copyWithin", "code", "charCodeAt", "errors", "E", "sym", "getMessage", "Base", "stack", "message", "range", "input", "msg", "received", "isInteger", "abs", "addNumericalSeparator", "checkBounds", "ERR_OUT_OF_RANGE", "ERR_INVALID_ARG_TYPE", "floor", "ERR_BUFFER_OUT_OF_BOUNDS", "INVALID_BASE64_RE", "base64clean", "units", "Infinity", "leadSurrogate", "byteArray", "toByteArray", "src", "dst", "constructor", "alphabet", "table", "i16", "BufferBigIntNotDefined", "DataView", "NATIVE_ARRAY_BUFFER", "DESCRIPTORS", "global", "isCallable", "isObject", "hasOwn", "classof", "tryToString", "createNonEnumerableProperty", "redefine", "isPrototypeOf", "getPrototypeOf", "wellKnownSymbol", "uid", "Int8Array", "Int8ArrayPrototype", "Uint8ClampedArray", "Uint8ClampedArrayPrototype", "TypedArray", "TypedArrayPrototype", "ObjectPrototype", "TO_STRING_TAG", "TYPED_ARRAY_TAG", "TYPED_ARRAY_CONSTRUCTOR", "NATIVE_ARRAY_BUFFER_VIEWS", "opera", "TYPED_ARRAY_TAG_REQIRED", "NAME", "Constructor", "Prototype", "TypedArrayConstructorsList", "Int16Array", "Uint16Array", "Int32Array", "Uint32Array", "Float32Array", "Float64Array", "BigIntArrayConstructorsList", "BigInt64Array", "BigUint64Array", "it", "klass", "isTypedArray", "aTypedArray", "aTypedArrayConstructor", "C", "exportTypedArrayMethod", "KEY", "property", "forced", "ARRAY", "TypedArrayConstructor", "exportTypedArrayStaticMethod", "Function", "uncurryThis", "FunctionName", "redefineAll", "fails", "anInstance", "toIntegerOrInfinity", "toLength", "toIndex", "IEEE754", "getOwnPropertyNames", "arrayFill", "arraySlice", "setToStringTag", "InternalStateModule", "PROPER_FUNCTION_NAME", "PROPER", "CONFIGURABLE_FUNCTION_NAME", "CONFIGURABLE", "getInternalState", "setInternalState", "ARRAY_BUFFER", "DATA_VIEW", "PROTOTYPE", "WRONG_LENGTH", "WRONG_INDEX", "NativeArrayBuffer", "$ArrayBuffer", "ArrayBufferPrototype", "$DataView", "DataViewPrototype", "reverse", "packIEEE754", "pack", "unpackIEEE754", "unpack", "packInt8", "number", "packInt16", "packInt32", "unpackInt32", "packFloat32", "packFloat64", "addGetter", "view", "isLittleEndian", "intIndex", "store", "conversion", "bufferLength", "getInt8", "getUint8", "getInt16", "getUint16", "getInt32", "getUint32", "getFloat32", "getFloat64", "setInt8", "setUint8", "setInt16", "setUint16", "setInt32", "setUint32", "setFloat32", "setFloat64", "INCORRECT_ARRAY_BUFFER_NAME", "NaN", "testView", "$setInt8", "unsafe", "$", "arrayBufferModule", "setSpecies", "root", "factory", "undef", "CryptoJS", "C_lib", "lib", "BlockCipher", "C_algo", "algo", "SBOX", "INV_SBOX", "SUB_MIX_0", "SUB_MIX_1", "SUB_MIX_2", "SUB_MIX_3", "INV_SUB_MIX_0", "INV_SUB_MIX_1", "INV_SUB_MIX_2", "INV_SUB_MIX_3", "d", "xi", "sx", "x2", "x4", "x8", "t", "RCON", "AES", "extend", "_doReset", "_nRounds", "_keyPriorReset", "_key", "keyWords", "words", "keySize", "sigBytes", "nRounds", "ksRows", "keySchedule", "_keySchedule", "ksRow", "invKeySchedule", "_invKeySchedule", "invKsRow", "encryptBlock", "M", "_doCryptBlock", "decryptBlock", "s0", "s1", "s2", "s3", "round", "t0", "t1", "t2", "t3", "_createHelper", "Cipher", "WordArray", "BufferedBlockAlgorithm", "C_enc", "enc", "Utf8", "Base64", "EvpKDF", "cfg", "createEncryptor", "create", "_ENC_XFORM_MODE", "createDecryptor", "_DEC_XFORM_MODE", "init", "xformMode", "_xformMode", "reset", "dataUpdate", "_append", "_process", "finalize", "finalProcessedData", "_doFinalize", "ivSize", "selectCipherStrategy", "PasswordBasedCipher", "SerializableCipher", "cipher", "encrypt", "decrypt", "ciphertext", "StreamCipher", "finalProcessedBlocks", "blockSize", "C_mode", "mode", "BlockCipherMode", "iv", "Encryptor", "Decryptor", "_cipher", "_iv", "CBC", "processBlock", "xorBlock", "_prevBlock", "thisBlock", "block", "C_pad", "pad", "Pkcs7", "blockSizeBytes", "nPaddingBytes", "paddingWord", "paddingWords", "padding", "unpad", "modeCreator", "_minBufferSize", "_mode", "__creator", "_doProcessBlock", "_data", "CipherParams", "cipherParams", "mixIn", "formatter", "stringify", "C_format", "format", "OpenSSLFormatter", "OpenSSL", "wordArray", "salt", "parse", "openSSLStr", "ciphertextWords", "splice", "encryptor", "cipherCfg", "algorithm", "_parse", "plaintext", "C_kdf", "kdf", "OpenSSLKdf", "execute", "password", "random", "compute", "derivedParams", "crypto", "window", "globalThis", "msCrypto", "err", "cryptoSecureRandomInt", "getRandomValues", "randomBytes", "F", "subtype", "overrides", "$super", "instance", "properties", "propertyName", "clone", "encoder", "Hex", "thisWords", "thatWords", "thisSigBytes", "thatSigBytes", "clamp", "thatByte", "ceil", "nBytes", "hexChars", "bite", "join", "hexStr", "hexStrLength", "Latin1", "latin1Chars", "latin1Str", "latin1StrLength", "decodeURIComponent", "escape", "utf8Str", "unescape", "encodeURIComponent", "_nDataBytes", "doFlush", "processedWords", "dataWords", "dataSigBytes", "nBlocksReady", "nWordsReady", "nBytesReady", "Hasher", "update", "messageUpdate", "hash", "hasher", "_createHmacHelper", "HMAC", "_map", "base64Chars", "byte1", "byte2", "byte3", "triplet", "charAt", "paddingChar", "base64Str", "base64StrLength", "reverseMap", "_reverseMap", "paddingIndex", "parseLoop", "bits1", "bits2", "bitsCombined", "Base64url", "urlSafe", "_safe_map", "Utf16BE", "Utf16", "utf16Chars", "utf16Str", "utf16StrLength", "Utf16LE", "swapEndian", "word", "MD5", "iterations", "derivedKey", "derivedKeyWords", "HexFormatter", "_hasher", "hasherBlockSize", "hasherBlockSizeBytes", "oKey", "_oKey", "iKey", "_iKey", "oKeyWords", "iKeyWords", "innerHash", "hmac", "superInit", "subInit", "typedArray", "typedArrayByteLength", "T", "sin", "_hash", "offset_i", "M_offset_i", "H", "M_offset_0", "M_offset_1", "M_offset_2", "M_offset_3", "M_offset_4", "M_offset_5", "M_offset_6", "M_offset_7", "M_offset_8", "M_offset_9", "M_offset_10", "M_offset_11", "M_offset_12", "M_offset_13", "M_offset_14", "M_offset_15", "FF", "GG", "HH", "II", "nBitsTotal", "nBitsLeft", "nBitsTotalH", "nBitsTotalL", "H_i", "s", "HmacMD5", "CFB", "generateKeystreamAndEncrypt", "keystream", "CTRGladman", "incWord", "b1", "b2", "b3", "incCounter", "counter", "_counter", "CTR", "ECB", "OFB", "_keystream", "AnsiX923", "lastBytePos", "Ansix923", "Iso10126", "Iso97971", "ZeroPadding", "NoPadding", "SHA1", "PBKDF2", "blockIndex", "blockIndexWords", "blockWords", "blockWordsLength", "intermediate", "intermediateWords", "S", "C_", "G", "RabbitLegacy", "K", "X", "_X", "_C", "_b", "nextState", "IV", "IV_0", "IV_1", "i0", "i2", "i1", "i3", "gx", "ga", "gb", "gh", "gl", "Rabbit", "RC4", "keySigBytes", "_S", "keyByteIndex", "keyByte", "_i", "_j", "generateKeystreamWord", "keystreamWord", "RC4Drop", "drop", "_zl", "_zr", "_sl", "_sr", "_hl", "_hr", "RIPEMD160", "hl", "hr", "zl", "zr", "sl", "sr", "al", "bl", "cl", "dl", "el", "ar", "br", "cr", "dr", "er", "f1", "f2", "f3", "f4", "f5", "rotl", "z", "HmacRIPEMD160", "W", "HmacSHA1", "SHA256", "SHA224", "HmacSHA224", "isPrime", "sqrtN", "sqrt", "factor", "getFractionalBits", "nPrime", "f", "g", "h", "gamma0x", "gamma0", "gamma1x", "gamma1", "ch", "maj", "sigma0", "sigma1", "HmacSHA256", "C_x64", "x64", "X64Word", "Word", "RHO_OFFSETS", "PI_INDEXES", "ROUND_CONSTANTS", "newX", "newY", "LFSR", "roundConstantMsw", "roundConstantLsw", "bitPosition", "SHA3", "outputLength", "state", "_state", "nBlockSizeLanes", "M2i", "M2i1", "lane", "high", "low", "tMsw", "tLsw", "Tx", "Tx4", "Tx1", "Tx1Msw", "Tx1Lsw", "laneIndex", "laneMsw", "laneLsw", "rhoOffset", "TPiLane", "T0", "state0", "TLane", "Tx1Lane", "Tx2Lane", "roundConstant", "blockSizeBits", "outputLengthBytes", "outputLengthLanes", "hashWords", "HmacSHA3", "X64WordArray", "SHA512", "SHA384", "HmacSHA384", "X64Word_create", "H0", "H1", "H2", "H3", "H4", "H5", "H6", "H7", "H0h", "H0l", "H1h", "H1l", "H2h", "H2l", "H3h", "H3l", "H4h", "H4l", "H5h", "H5l", "H6h", "H6l", "H7h", "H7l", "ah", "bh", "dh", "eh", "fh", "fl", "hh", "Wil", "Wih", "Wi", "gamma0xh", "gamma0xl", "gamma0h", "gamma0l", "gamma1xh", "gamma1xl", "gamma1h", "gamma1l", "Wi7", "Wi7h", "Wi7l", "Wi16", "Wi16h", "Wi16l", "chh", "chl", "majh", "majl", "sigma0h", "sigma0l", "sigma1h", "sigma1l", "Ki", "Kih", "Kil", "t1l", "t1h", "t2l", "t2h", "toX32", "HmacSHA512", "PC1", "PC2", "BIT_SHIFTS", "SBOX_P", "SBOX_MASK", "DES", "keyBits", "keyBitPos", "subKeys", "_subKeys", "nSubKey", "subKey", "bitShift", "invSubKeys", "_invSubKeys", "_lBlock", "_rBlock", "exchangeLR", "exchangeRL", "lBlock", "rBlock", "mask", "TripleDES", "key1", "key2", "key3", "_des1", "_des2", "_des3", "X32WordArray", "x64Words", "x64WordsLength", "x32Words", "x64Word", "wordsLength", "INITIAL_STATE", "FAIL_STATE", "StateMachine", "dfa", "stateTable", "accepting", "tags", "match", "_ref", "iterator", "startRun", "lastAccepting", "lastState", "actions", "tag", "fs", "zlib", "path", "readFile", "file", "png", "PNG", "pixels", "load", "readFileSync", "palette", "imgData", "transparency", "text", "chunkSize", "readUInt32", "section", "width", "height", "bits", "colorType", "compressionMethod", "filterMethod", "interlaceMethod", "indexed", "short", "grayscale", "rgb", "colors", "hasAlphaChannel", "pixelBitlength", "colorSpace", "b4", "readUInt16", "decodePixels", "inflate", "pixelBytes", "pass", "x0", "y0", "dx", "dy", "singlePass", "w", "scanlineLength", "row", "col", "left", "upper", "paeth", "upperLeft", "pa", "pb", "pc", "pixelsPos", "bufferPos", "decodePalette", "copyToImageData", "imageData", "alpha", "_decodedPalette", "v", "safer", "Safer", "kStringMaxLength", "binding", "constants", "MAX_LENGTH", "kMaxLength", "MAX_STRING_LENGTH", "enumerableOnly", "getOwnPropertySymbols", "symbols", "filter", "getOwnPropertyDescriptor", "source", "forEach", "getOwnPropertyDescriptors", "props", "descriptor", "protoProps", "staticProps", "_require", "_require2", "custom", "copyBuffer", "BufferList", "head", "tail", "entry", "next", "unshift", "shift", "clear", "consume", "hasStrings", "_getString", "_getBuffer", "nb", "_", "depth", "customInspect", "PDFAbstractReference", "PDFTree", "_items", "limits", "sortedKeys", "sort", "_this", "_compareKeys", "PDFObject", "convert", "_dataForKey", "_keysName", "escapableRe", "escapable", "swapBytes", "buff", "l", "encryptFn", "isUnicode", "stringBuffer", "Date", "getUTCFullYear", "getUTCMonth", "getUTCDate", "getUTCHours", "getUTCMinutes", "getUTCSeconds", "PDFReference", "document", "id", "gen", "compress", "Filter", "uncompressedLength", "chunk", "Length", "_offset", "_security", "getEncryptFn", "deflateSync", "_write", "_refEnd", "DEFAULT_MARGINS", "top", "bottom", "right", "SIZES", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8", "A9", "A10", "B0", "B1", "B2", "B3", "B4", "B5", "B6", "B7", "B8", "B9", "B10", "C0", "C1", "C2", "C3", "C4", "C5", "C6", "C7", "C8", "C9", "C10", "RA0", "RA1", "RA2", "RA3", "RA4", "SRA0", "SRA1", "SRA2", "SRA3", "SRA4", "EXECUTIVE", "FOLIO", "LEGAL", "LETTER", "TABLOID", "PDFPage", "layout", "margin", "margins", "dimensions", "toUpperCase", "content", "ref", "resources", "ProcSet", "dictionary", "Type", "_root", "Pages", "MediaBox", "Contents", "Resources", "markings", "Font", "XObject", "ExtGState", "Pattern", "ColorSpace", "Annots", "StructParents", "createStructParentTreeNextKey", "PDFNameTree", "localeCompare", "inRange", "rangeGroup", "startRange", "endRange", "middleRange", "arrayIndex", "unassigned_code_points", "isUnassignedCodePoint", "character", "commonly_mapped_to_nothing", "isCommonlyMappedToNothing", "non_ASCII_space_characters", "isNonASCIISpaceCharacter", "non_ASCII_controls_characters", "non_character_codepoints", "prohibited_characters", "isProhibitedCharacter", "bidirectional_r_al", "isBidirectionalRAL", "bidirectional_l", "isBidirectionalL", "mapping2space", "mapping2nothing", "getCodePoint", "codePointAt", "toCodePoints", "codepoints", "before", "saslprep", "mapped_input", "normalized_input", "fromCodePoint", "normalize", "normalized_map", "hasProhibited", "some", "allowUnassigned", "hasUnassigned", "hasBidiRAL", "hasBidiL", "isFirstBidiRAL", "isLastBidiRAL", "PDFSecurity", "info", "infoStr", "CreationDate", "getTime", "wordArrayToBuffer", "ownerPassword", "userPassword", "_setupEncryption", "pdfVersion", "encDict", "_setupEncryptionV1V2V4", "_setupEncryptionV5", "r", "permissions", "getPermissionsR2", "getPermissionsR3", "paddedUserPassword", "processPasswordR2R3R4", "paddedOwnerPassword", "ownerPasswordEntry", "getOwnerPasswordR2R3R4", "encryptionKey", "getEncryptionKeyR2R3R4", "_id", "userPasswordEntry", "getUserPasswordR2", "getUserPasswordR3R4", "V", "CF", "StdCF", "AuthEvent", "CFM", "StmF", "StrF", "R", "O", "U", "P", "processedUserPassword", "processPasswordR5", "processedOwnerPassword", "getEncryptionKeyR5", "generateRandomWordArray", "getUserPasswordR5", "userKeySalt", "userEncryptionKeyEntry", "getUserEncryptionKeyR5", "getOwnerPasswordR5", "ownerKeySalt", "ownerEncryptionKeyEntry", "getOwnerEncryptionKeyR5", "permsEntry", "getEncryptedPermissionsR5", "OE", "UE", "Perms", "digest", "permissionObject", "printing", "modifying", "copying", "annotating", "fillingForms", "contentAccessibility", "documentAssembly", "documentId", "xorRound", "lsbFirstWord", "validationSalt", "keySalt", "PASSWORD_PADDING", "PDFGradient", "doc", "stops", "embedded", "transform", "color", "opacity", "_normalizeColor", "_colorSpace", "m11", "m12", "m21", "m22", "stopsLength", "matrix", "bounds", "FunctionType", "Domain", "N", "Functions", "Bounds", "Encode", "_gradCount", "shader", "pattern", "PatternType", "Shading", "Matrix", "stop", "grad", "opacityGradient", "embed", "pageBBox", "page", "form", "Subtype", "FormType", "BBox", "Group", "CS", "Sh1", "gstate", "SMask", "opacityPattern", "PaintType", "TilingType", "XStep", "YStep", "Gs1", "patterns", "stroke", "_ctm", "m0", "m1", "m2", "m3", "m4", "m5", "_setColorSpace", "op", "addContent", "PDFLinearGradient", "x1", "y1", "y2", "ShadingType", "Coords", "Extend", "PDFRadialGradient", "r1", "r2", "underlyingColorSpaces", "PDFTilingPattern", "bBox", "xStep", "yStep", "toFixed", "csId", "getPatternColorSpaceId", "csName", "colorSpaces", "cs", "underlyingColorspace", "_patternCount", "createPattern", "patternColor", "embedPatternColorSpaces", "normalizedColor", "_getColorSpace", "Gradient", "initColor", "_opacityRegistry", "_opacityCount", "hex", "namedColors", "part", "_setColor", "_setColorCore", "space", "fillColor", "fillOpacity", "_fillColor", "strokeColor", "strokeOpacity", "_doOpacity", "ca", "CA", "ext_gstates", "linearGradient", "radialGradient", "bbox", "aliceblue", "antiquewhite", "aqua", "aquamarine", "azure", "beige", "bisque", "black", "blanchedalmond", "blue", "blueviolet", "brown", "burlywood", "cadetblue", "chartreuse", "chocolate", "coral", "cornflowerblue", "cornsilk", "crimson", "cyan", "darkblue", "darkcyan", "darkgoldenrod", "darkgray", "darkgreen", "darkgrey", "darkkhaki", "darkmagenta", "darkolivegreen", "darkorange", "darkorchid", "darkred", "darksalmon", "darkseagreen", "darkslateblue", "darkslategray", "darkslategrey", "darkturquoise", "darkviolet", "deeppink", "deepskyblue", "dimgray", "dimgrey", "dodgerblue", "firebrick", "floralwhite", "forestgreen", "fuchsia", "gainsboro", "ghostwhite", "gold", "goldenrod", "gray", "grey", "green", "greenyellow", "honeydew", "hotpink", "indianred", "indigo", "ivory", "khaki", "lavender", "lavenderblush", "lawngreen", "lemonchiffon", "lightblue", "lightcoral", "lightcyan", "lightgoldenrodyellow", "lightgray", "lightgreen", "lightgrey", "lightpink", "lightsalmon", "lightseagreen", "lightskyblue", "lightslategray", "lightslategrey", "lightsteelblue", "lightyellow", "lime", "limegreen", "linen", "magenta", "maroon", "mediumaquamarine", "mediumblue", "mediumorchid", "mediumpurple", "mediumseagreen", "mediumslateblue", "mediumspringgreen", "mediumturquoise", "mediumvioletred", "midnightblue", "mintcream", "mistyrose", "moccasin", "navajowhite", "navy", "oldlace", "olive", "olivedrab", "orange", "orangered", "orchid", "palegoldenrod", "palegreen", "paleturquoise", "palevioletred", "papayawhip", "peachpuff", "peru", "pink", "plum", "powderblue", "purple", "red", "rosybrown", "royalblue", "saddlebrown", "salmon", "sandybrown", "seagreen", "seashell", "sienna", "silver", "skyblue", "slateblue", "slategray", "slategrey", "snow", "springgreen", "steelblue", "tan", "teal", "thistle", "tomato", "turquoise", "violet", "wheat", "white", "whitesmoke", "yellow", "yellowgreen", "cx", "cy", "px", "py", "sy", "parameters", "A", "L", "Q", "q", "Z", "cmd", "curArg", "foundDecimal", "params", "commands", "runners", "moveTo", "bezierCurveTo", "_toConsumableArray", "quadraticCurveTo", "solveArc", "lineTo", "closePath", "coords", "rx", "ry", "rot", "large", "sweep", "ex", "ey", "segs", "arcToSegments", "seg", "bez", "segmentToBezier", "rotateX", "ox", "oy", "th", "PI", "sin_th", "cos_th", "cos", "pl", "a00", "a01", "a10", "a11", "sfactor_sq", "sfactor", "xc", "yc", "th0", "atan2", "th1", "th_arc", "segments", "th2", "th3", "th_half", "x3", "y3", "SVGPath", "KAPPA", "initVector", "_ctmStack", "save", "restore", "pop", "lineWidth", "_CAP_STYLES", "BUTT", "ROUND", "SQUARE", "lineCap", "_JOIN_STYLES", "MITER", "BEVEL", "lineJoin", "miterLimit", "dash", "originalLength", "valid", "every", "JSON", "phase", "undash", "cp1x", "cp1y", "cp2x", "cp2y", "cpx", "cpy", "rect", "roundedRect", "ellipse", "xe", "ye", "xm", "ym", "circle", "radius", "arc", "startAngle", "endAngle", "anticlockwise", "TWO_PI", "HALF_PI", "deltaAng", "numSegs", "segAng", "handleLen", "curAng", "deltaCx", "deltaCy", "ax", "ay", "segIdx", "polygon", "points", "point", "_windingRule", "rule", "test", "fillAndStroke", "isFillRule", "clip", "values", "translate", "rotate", "angle", "rad", "origin", "scale", "xFactor", "yFactor", "WIN_ANSI_MAP", "characters", "AFMFont", "filename", "contents", "attributes", "glyphWidths", "boundingBoxes", "kernPairs", "charWidths", "char", "ascender", "descender", "xHeight", "capHeight", "lineGap", "line", "glyphs", "charCode", "characterToGlyph", "glyph", "advances", "widthOfGlyph", "getKernPair", "PDFFont", "includeGap", "gap", "STANDARD_FONTS", "Courier", "__dirname", "Helvetica", "ZapfDingbats", "StandardFont", "font", "BaseFont", "Encoding", "encoded", "encodeText", "glyphsForString", "advancesForGlyphs", "positions", "xAdvance", "yAdvance", "xOffset", "yOffset", "advanceWidth", "advance", "toHex", "num", "EmbeddedFont", "subset", "createSubset", "unicode", "widths", "getGlyph", "postscriptName", "unitsPerEm", "ascent", "descent", "fontLayoutCache", "layoutCache", "features", "run", "position", "layoutRun", "cached", "onlyWidth", "needle", "layoutCached", "gid", "includeGlyph", "isCFF", "cff", "fontFile", "encodeStream", "on", "familyClass", "sFamilyClass", "post", "isFixedPitch", "macStyle", "italic", "_this2", "FontName", "Flags", "FontBBox", "minX", "minY", "maxX", "maxY", "ItalicAngle", "italicAngle", "Ascent", "Descent", "CapHeight", "XHeight", "StemV", "FontFile3", "FontFile2", "descendantFontData", "CIDSystemInfo", "Registry", "Ordering", "Supplement", "FontDescriptor", "CIDToGIDMap", "descendantFont", "DescendantFonts", "ToUnicode", "toUnicodeCmap", "cmap", "entries", "PDFFontFactory", "family", "isStandardFont", "fontkit", "initFonts", "defaultFont", "_fontFamilies", "_fontCount", "_fontSize", "_font", "_registeredFonts", "cacheKey", "fontSize", "open", "currentLineHeight", "lineHeight", "registerFont", "LineWrapper", "indent", "characterSpacing", "wordSpacing", "columns", "columnGap", "spaceLeft", "startX", "startY", "column", "ellipsis", "continuedX", "once", "continued", "align", "lastLine", "paragraphGap", "widthOfString", "bk", "breaker", "LineBreaker", "wordWidths", "nextBreak", "shouldContinue", "wordWidth", "lbk", "fbk", "mightGrow", "mustShrink", "required", "nextY", "nextSection", "textWidth", "wc", "lc", "emitLine", "wordCount", "emit", "eachWord", "lh", "continueOnNewPage", "EventEmitter", "initText", "_line", "bind", "_lineGap", "moveDown", "lines", "moveUp", "_text", "lineCallback", "_initOptions", "addStructure", "structParent", "add", "struct", "structType", "markStructureContent", "wrapper", "_wrapper", "_textOptions", "wrap", "heightOfString", "listType", "unit", "midLine", "bulletRadius", "textIndent", "itemIndent", "bulletIndent", "level", "levels", "numbers", "flatten", "label", "letter", "times", "itemType", "labelType", "bodyType", "structTypes", "_this3", "diff", "_fragment", "lineBreak", "spaceWidth", "baseline", "renderedWidth", "link", "goTo", "destination", "addNamedDestination", "underline", "lineY", "strike", "oblique", "skew", "fonts", "encodedWord", "positionsWord", "hadOffset", "addSegment", "cur", "_this4", "MARKERS", "COLOR_SPACE_MAP", "JPEG", "marker", "channels", "BitsPerComponent", "Width", "Height", "PNGImage", "image", "dataDecoded", "isInterlaced", "Predictor", "Colors", "Columns", "loadIndexedAlphaChannel", "splitAlphaChannel", "decodeData", "alphaChannel", "sMask", "Decode", "colorCount", "pixelCount", "skipByteCount", "colorIndex", "PDFImage", "exec", "initImages", "_imageRegistry", "_imageCount", "bp", "bw", "ip", "left1", "openImage", "xobjects", "wp", "hp", "fit", "cover", "valign", "annotate", "Rect", "_convertRect", "Border", "Dest", "annotations", "note", "Name", "D", "url", "pages", "Kids", "URI", "_markup", "QuadPoints", "highlight", "lineAnnotation", "rectAnnotation", "ellipseAnnotation", "textAnnotation", "DA", "fileAnnotation", "filespec", "hidden", "FS", "Desc", "PDFOutline", "title", "dest", "expanded", "outlineData", "children", "Count", "First", "Last", "child", "Prev", "Next", "endOutline", "initOutline", "outline", "Outlines", "PageMode", "PDFStructureContent", "pageRef", "mcid", "refs", "structContent", "PDFStructureElement", "_attached", "_ended", "_flushed", "_isValidChild", "lang", "Lang", "alt", "Alt", "ActualText", "_children", "setParent", "setAttached", "_addContentToParentTree", "_contentForClosure", "pageStructParents", "getStructParentTree", "parentRef", "_flush", "closure", "endMarkedContent", "_isFlushable", "_flushChild", "_ref2", "_this5", "Pg", "MCID", "PDFNumberTree", "initMarkings", "structChildren", "tagged", "getMarkInfoDictionary", "Marked", "getStructTreeRoot", "markContent", "toClose", "marking", "attached", "Attached", "structParentTreeKey", "_objectSpread2", "structElem", "structTreeRoot", "initPageMarkings", "pageMarkings", "newStructContent", "endPageMarkings", "MarkInfo", "StructTreeRoot", "ParentTree", "ParentTreeNextKey", "endMarkings", "FIELD_FLAGS", "readOnly", "noExport", "multiline", "toggleToOffButton", "radioButton", "pushButton", "combo", "edit", "multiSelect", "noSpell", "FIELD_JUSTIFY", "center", "VALUE_MAP", "defaultValue", "FORMAT_SPECIAL", "zip", "zipPlus4", "zip4", "phone", "ssn", "FORMAT_DEFAULT", "nDec", "sepComma", "negStyle", "currency", "currencyPrepend", "percent", "initForm", "_acroform", "Fields", "NeedAppearances", "DR", "AcroForm", "endAcroForm", "fontDict", "_endChild", "fieldRef", "childRef", "formField", "fieldDict", "_fieldDict", "_addToParent", "formAnnotation", "annotRef", "formText", "formPushButton", "formCombo", "formList", "formRadioButton", "formCheckbox", "_resolveType", "_resolveFlags", "_resolveJustify", "_resolveFont", "_resolveStrings", "_resolveColors", "_resolveFormat", "FT", "fnKeystroke", "fnFormat", "param", "AA", "JS", "backgroundColor", "MK", "BG", "borderColor", "BC", "Ff", "select", "appendChoices", "idx", "Opt", "refBody", "Params", "statSync", "birthtime", "ctime", "ModDate", "creationDate", "modifiedDate", "checksum", "CheckSum", "Size", "_fileRegistry", "isEqual", "fileSpecBody", "EF", "UF", "description", "addNamedEmbeddedFile", "PDFDocument", "_pageBuffer", "_pageBufferStart", "_offsets", "_waiting", "Names", "Dests", "Producer", "Creator", "displayTitle", "ViewerPreferences", "DisplayDocTitle", "generateFileID", "autoFirstPage", "addPage", "bufferPages", "flushPages", "EmbeddedFiles", "js", "JavaScript", "_finalize", "pipe", "createWriteStream", "_info", "xRefOffset", "trailer", "Root", "Info", "ID", "Encrypt", "mixin", "methods", "ColorMixin", "VectorMixin", "FontsMixin", "TextMixin", "ImagesMixin", "AnnotationsMixin", "OutlineMixin", "MarkingsMixin", "AcroFormMixin", "AttachmentsMixin", "copyProps", "SafeBuffer", "swap32LE", "SHIFT_1", "SHIFT_2", "SHIFT_1_2", "OMITTED_BMP_INDEX_1_LENGTH", "INDEX_2_BLOCK_LENGTH", "INDEX_2_MASK", "INDEX_SHIFT", "DATA_BLOCK_LENGTH", "DATA_MASK", "LSCP_INDEX_2_OFFSET", "LSCP_INDEX_2_LENGTH", "INDEX_2_BMP_LENGTH", "UTF8_2B_INDEX_2_OFFSET", "UTF8_2B_INDEX_2_LENGTH", "INDEX_1_OFFSET", "DATA_GRANULARITY", "UnicodeTrie", "highStart", "errorValue", "isBigEndian", "SVGtoPDF", "svg", "NamedColors", "rebeccapurple", "DefaultColors", "transparent", "Entities", "quot", "amp", "lt", "gt", "apos", "OElig", "oelig", "Scaron", "scaron", "Yuml", "circ", "tilde", "ensp", "emsp", "thinsp", "zwnj", "zwj", "lrm", "rlm", "ndash", "mdash", "lsquo", "rsquo", "sbquo", "ldquo", "rdquo", "bdquo", "dagger", "Dagger", "permil", "lsaquo", "rsaquo", "euro", "nbsp", "iexcl", "cent", "pound", "curren", "yen", "brvbar", "sect", "uml", "ordf", "laquo", "not", "shy", "reg", "macr", "deg", "plusmn", "sup2", "sup3", "acute", "micro", "para", "middot", "cedil", "sup1", "ordm", "raquo", "frac14", "frac12", "frac34", "iquest", "Agrave", "Aacute", "Acirc", "Atilde", "Auml", "Aring", "AElig", "Ccedil", "Egrave", "Eacute", "Ecirc", "Euml", "Igrave", "Iacute", "Icirc", "Iuml", "ETH", "Ntilde", "Ograve", "Oacute", "Ocirc", "Otilde", "Ouml", "Oslash", "Ugrave", "Uacute", "Ucirc", "Uuml", "Yacute", "THORN", "szlig", "agrave", "aacute", "acirc", "atilde", "auml", "aring", "aelig", "ccedil", "egrave", "eacute", "ecirc", "euml", "igrave", "iacute", "icirc", "iuml", "eth", "ntilde", "ograve", "oacute", "ocirc", "otilde", "ouml", "divide", "oslash", "ugrave", "uacute", "ucirc", "uuml", "yacute", "thorn", "yuml", "fnof", "Alpha", "Beta", "Gamma", "Delta", "Epsilon", "Zeta", "Eta", "Theta", "Iota", "Kappa", "Lambda", "Mu", "Nu", "Xi", "Omicron", "Pi", "Rho", "Sigma", "Tau", "Upsilon", "Phi", "Chi", "Psi", "Omega", "beta", "gamma", "delta", "epsilon", "zeta", "eta", "theta", "iota", "kappa", "lambda", "mu", "nu", "omicron", "pi", "rho", "sigmaf", "sigma", "tau", "upsilon", "phi", "chi", "psi", "omega", "thetasym", "upsih", "piv", "bull", "hellip", "prime", "Prime", "oline", "frasl", "weierp", "real", "trade", "alefsym", "larr", "uarr", "rarr", "darr", "harr", "crarr", "lArr", "uArr", "rArr", "dArr", "hArr", "forall", "exist", "empty", "nabla", "isin", "notin", "ni", "prod", "sum", "minus", "lowast", "radic", "prop", "infin", "ang", "and", "or", "cap", "cup", "int", "there4", "sim", "cong", "asymp", "ne", "equiv", "le", "ge", "sup", "nsub", "sube", "supe", "oplus", "otimes", "perp", "sdot", "lceil", "rceil", "lfloor", "rfloor", "rang", "loz", "spades", "clubs", "hearts", "diams", "PathArguments", "PathFlags", "a3", "a4", "Properties", "inherit", "initial", "normal", "css", "docBeginGroup", "group", "PDFGroup", "_groupCount", "xobj", "I", "savedMatrix", "savedPage", "groupStack", "docEndGroup", "docInsertGroup", "docApplyMask", "_maskCount", "BM", "docCreatePattern", "PDFPattern", "docUsePattern", "multiplyMatrix", "temp", "docBeginText", "docSetTextMatrix", "docSetTextMode", "docWriteGlyph", "docEndText", "docFillColor", "docStrokeColor", "docInsertLink", "links", "parseXml", "xml", "SvgNode", "nodeName", "nodeValue", "nodeType", "childNodes", "parentNode", "textContent", "classList", "getAttribute", "attr", "getElementById", "recursive", "node", "getElementsByTagName", "parser", "StringParser", "decodeEntities", "warningCallback", "matchAll", "mt", "parseColor", "raw", "parseFloat", "colorCallback", "opacityToColor", "isMask", "newColor", "newOpacity", "multiply", "transformPoint", "getGlobalMatrix", "ctm", "getPageBBox", "SvgShape", "inverseMatrix", "getBoundingBox", "dt", "validateMatrix", "isNotEqual", "solveEquation", "curve", "getCurveValue", "isArrayLike", "parseTranform", "func", "nums", "parser2", "temp2", "matchNumber", "matchSeparator", "parseAspectRatio", "aspectRatio", "availWidth", "availHeight", "elemWidth", "elemHeight", "initAlign", "ratioType", "xAlign", "yAlign", "scaleX", "scaleY", "parseStyleAttr", "fontFamily", "fontStyle", "fontWeight", "fontVariant", "parts", "parseSelector", "ids", "classes", "specificity", "parseStyleSheet", "rules", "selectors", "selector", "matchesSelector", "elem", "getStyle", "specificities", "styleRules", "combineArrays", "array1", "array2", "getAscent", "getDescent", "getXHeight", "getBaseline", "dy1", "dy2", "getTextPos", "createSVGElement", "inherits", "SvgElemUse", "SvgElemSymbol", "SvgElemGroup", "SvgElemLink", "SvgElemSvg", "SVGElemImage", "SvgElemRect", "SvgElemCircle", "SvgElemEllipse", "SvgElemLine", "SvgElemPolyline", "SvgElemPolygon", "SvgElemPath", "SvgElemText", "SvgElemTspan", "SvgElemTextPath", "SvgElemTextNode", "SvgElem", "exp", "all", "substring", "matchSpace", "matchLengthUnit", "BezierSegment", "p1x", "p1y", "c1x", "c1y", "c2x", "c2y", "p2x", "p2y", "divisions", "precision", "equationX", "equationY", "derivativeX", "derivativeY", "lengthMap", "totalLength", "startPoint", "endPoint", "rootsX", "rootsY", "getPointAtLength", "l1", "l2", "LineSegment", "pathCommands", "pathSegments", "currX", "currY", "lastCom", "lastCtrlX", "lastCtrlY", "move", "segment", "close", "addCommand", "hasStart", "hasEnd", "fi", "fa", "segms", "th4", "endX", "endY", "command", "addBounds", "bbox1", "mergeShape", "shape", "insertInDocument", "getSubPaths", "subPaths", "getMarkers", "markers", "subPath", "subPathMarkers", "startMarker", "prevEndMarker", "endMarker", "styleCache", "childrenCache", "isOuterElement", "style", "useCSS", "getComputedStyle", "allowedChildren", "resolveUrl", "svgObj", "documentCallback", "svgs", "documentCache", "computeUnits", "isFontSize", "getViewport", "computeLength", "temp1", "computeLengthList", "strict", "getLength", "getLengthList", "getUrl", "getNumberList", "getViewbox", "viewBox", "getPercent", "chooseValue", "keyInfo", "fallbackColor", "SvgElemGradient", "SvgElemPattern", "dasharray", "getChildren", "getParentVWidth", "getVWidth", "viewportWidth", "getParentVHeight", "getVHeight", "viewportHeight", "getParentViewport", "getBoundingShape", "SvgElemStylable", "getTransformation", "clipPath", "SvgElemClipPath", "useMask", "SvgElemMask", "getFill", "isClip", "getPaint", "getStroke", "SvgElemHasChildren", "childShape", "drawChildren", "drawInDocument", "SvgElemContainer", "drawContent", "clipped", "masked", "addLink", "isText", "preserveAspectRatio", "imageCallback", "fallback", "_attr", "_getChildren", "gOpacity", "bBoxUnitsPattern", "bBoxUnitsContent", "aspectRatioMatrix", "stopColor", "bBoxUnits", "spread", "nAfter", "nBefore", "nTotal", "multiplier", "inv", "corner1", "corner2", "corner3", "corner4", "inOrder", "setTransform", "SvgElemBasicShape", "dashScale", "dashArray", "dashOffset", "markerStart", "markerMid", "markerEnd", "markersPos", "SvgElemMarker", "drawMarker", "pathLength", "posArray", "strokeWidth", "orient", "refX", "refY", "SvgElemTextContainer", "_pos", "dx0", "dy0", "dx1", "dx2", "drawTextInDocument", "decorate", "fauxBold", "childElem", "fauxItalic", "linePosition", "pathObject", "pathScale", "pathElem", "textParentElem", "processedText", "remainingText", "textPaths", "currentChunk", "currentAnchor", "currentDirection", "currentX", "currentY", "doAnchoring", "anchordx", "adjustLength", "spacingAndGlyphs", "firstChar", "lastChar", "textScale", "spaceDiff", "currentElem", "parentElem", "_x", "_y", "_dx", "_dy", "_rot", "_defRot", "fontOptions", "fontNameorLink", "fontCallback", "_index", "textLength", "letterSpacing", "textAnchor", "textDirection", "rawText", "renderedText", "xAttr", "yAttr", "dxAttr", "dyAttr", "rotAttr", "continuous", "textOnPath", "textOffset", "charMidX", "pointOnPath", "pxToPt", "assumePt", "SVGElement", "bold", "styles", "savedFillColor", "lookup", "len2", "Context", "prefix", "applyBind", "re", "merge", "define", "prev", "createElement", "log", "sign", "exponent", "WeakMap", "noop", "MutationObserver", "Promise", "queueMicrotask", "activeXDocument", "second", "whitespace", "MessageChannel", "location", "setImmediate", "integer", "AggregateError", "WEBKIT", "Map", "c2", "isFunction", "domain", "Set", "COLLECTION_NAME", "ka", "ReflectApply", "ReflectOwnKeys", "warning", "NumberIsNaN", "forEachArray", "forEachString", "forEachObject", "Empty", "functionsHaveNames", "doEval", "stringToPath", "getBaseIntrinsic", "hasPropertyDescriptors", "stream_module", "zero", "scan", "Config", "COMMENT", "timeout", "isWhitespace", "EElistenerCount", "debug", "realHasInstance", "createReadableStreamAsyncIterator", "eos", "onlegacyfinish", "onfinish", "onend", "onerror", "onclose", "onrequest", "Data", "lengths", "offs", "_unsupportedIterableToArray", "_arrayLikeToArray", "desc", "cache", "CFFIndex", "CFFOperand", "CFFDict", "CFFPointer", "Ptr", "CFFBlendOp", "PredefinedOp", "CFFEncodingVersion", "RangeArray", "CFFPrivateOp", "CFFFont", "ByteAligned", "BitAligned", "ValueRecord", "Anchor", "VariableSizeNumber", "UnboundedArrayAccessor", "UnboundedArray", "LookupTable", "Shadow", "Offset", "tables", "CmapProcessor", "KernProcessor", "UnicodeLayoutEngine", "script", "GlyphRun", "GlyphPosition", "feature", "AATLookupTable", "AATStateMachine", "AATMorxProcessor", "stateMachine", "components", "AATLayoutEngine", "ShapingPlan", "direction", "DefaultShaper", "ArabicShaper", "GlyphIterator", "peek", "OTProcessor", "GlyphInfo", "GDEF", "HangulShaper", "getType", "isL", "isV", "isT", "isTone", "isLVT", "isLV", "isCombiningL", "isCombiningV", "isCombiningT", "IndicShaper", "IndicInfo", "GSUB", "UniversalShaper", "USEInfo", "GSUBProcessor", "GPOSProcessor", "OTLayoutEngine", "LayoutEngine", "Path", "Glyph", "hhea", "render", "Point", "Component", "TTFGlyph", "CFFGlyph", "SBIXGlyph", "COLRLayer", "COLRGlyph", "GlyphVariationProcessor", "gvar", "Subset", "Point$1", "TTFGlyphEncoder", "glyf", "TTFSubset", "maxp", "CFFSubset", "TTFFont", "settings", "WOFFFont", "WOFF2Glyph", "WOFF2Font", "Substream", "b0", "TrueTypeCollection", "DFont", "mapClass", "mapFirst", "Break", "deprecated", "months", "time", "comment", "defaultStyle", "styleArray", "gapSize", "rowData", "pageOrientation", "Line", "watermark", "fontProvider", "gaps", "inline", "newInline", "poly", "groups", "score", "generate", "rowIndex", "colIndex", "cell", "noWrap", "jQuery", "S2", "require", "define", "defined", "normalize", "name", "map", "prefix", "index", "e", "$", "decoratedMethod", "d", "slice", "length", "data", "k", "match", "id", "options", "$results", "$message", "self", "s", "c", "Placeholder", "path", "diacritics", "val", "item", "t", "params", "Dropdown", "position", "css", "stripDiacritics", "a", "WIDTH", "style", "n", "node", "select2", "t", "e", "s", "n", "o", "a", "r", "c", "i", "d", "l", "x", "y", "w", "k", "L", "$", "q", "h", "u", "re", "f", "g", "pi", "vi", "p", "m", "b", "_", "v", "M", "S", "P", "D", "O", "C", "A", "T", "ka", "$", "csrfToken", "token", "name", "data", "e", "options", "toArray", "getData", "link", "slice", "import_jquery", "import_react", "import_react_dom", "elementMap", "Map", "set", "element", "key", "instance", "has", "instanceMap", "get", "size", "console", "error", "Array", "from", "keys", "remove", "delete", "MAX_UID", "MILLISECONDS_MULTIPLIER", "TRANSITION_END", "parseSelector", "selector", "window", "CSS", "escape", "replace", "match", "id", "toType", "object", "undefined", "Object", "prototype", "toString", "call", "toLowerCase", "getUID", "prefix", "Math", "floor", "random", "document", "getElementById", "getTransitionDurationFromElement", "transitionDuration", "transitionDelay", "getComputedStyle", "floatTransitionDuration", "Number", "parseFloat", "floatTransitionDelay", "split", "triggerTransitionEnd", "dispatchEvent", "Event", "isElement", "jquery", "nodeType", "getElement", "length", "querySelector", "isVisible", "getClientRects", "elementIsVisible", "getPropertyValue", "closedDetails", "closest", "summary", "parentNode", "isDisabled", "Node", "ELEMENT_NODE", "classList", "contains", "disabled", "hasAttribute", "getAttribute", "findShadowRoot", "documentElement", "attachShadow", "getRootNode", "root", "ShadowRoot", "noop", "reflow", "offsetHeight", "getjQuery", "jQuery", "body", "DOMContentLoadedCallbacks", "onDOMContentLoaded", "callback", "readyState", "addEventListener", "push", "isRTL", "dir", "defineJQueryPlugin", "plugin", "$", "name", "NAME", "JQUERY_NO_CONFLICT", "fn", "jQueryInterface", "Constructor", "noConflict", "execute", "possibleCallback", "args", "defaultValue", "executeAfterTransition", "transitionElement", "waitForTransition", "durationPadding", "emulatedDuration", "called", "handler", "target", "removeEventListener", "setTimeout", "getNextActiveElement", "list", "activeElement", "shouldGetNext", "isCycleAllowed", "listLength", "index", "indexOf", "max", "min", "namespaceRegex", "stripNameRegex", "stripUidRegex", "eventRegistry", "uidEvent", "customEvents", "mouseenter", "mouseleave", "nativeEvents", "Set", "makeEventUid", "uid", "getElementEvents", "bootstrapHandler", "event", "hydrateObj", "delegateTarget", "oneOff", "EventHandler", "off", "type", "apply", "bootstrapDelegationHandler", "domElements", "querySelectorAll", "domElement", "findHandler", "events", "callable", "delegationSelector", "values", "find", "normalizeParameters", "originalTypeEvent", "delegationFunction", "isDelegated", "typeEvent", "getTypeEvent", "addHandler", "wrapFunction", "relatedTarget", "handlers", "previousFunction", "removeHandler", "Boolean", "removeNamespacedHandlers", "namespace", "storeElementEvent", "handlerKey", "entries", "includes", "on", "one", "inNamespace", "isNamespace", "startsWith", "elementEvent", "slice", "keyHandlers", "trigger", "jQueryEvent", "bubbles", "nativeDispatch", "defaultPrevented", "isPropagationStopped", "isImmediatePropagationStopped", "isDefaultPrevented", "evt", "cancelable", "preventDefault", "obj", "meta", "value", "_unused", "defineProperty", "configurable", "normalizeData", "JSON", "parse", "decodeURIComponent", "normalizeDataKey", "chr", "Manipulator", "setDataAttribute", "setAttribute", "removeDataAttribute", "removeAttribute", "getDataAttributes", "attributes", "bsKeys", "dataset", "filter", "pureKey", "charAt", "getDataAttribute", "Config", "Default", "DefaultType", "Error", "_getConfig", "config", "_mergeConfigObj", "_configAfterMerge", "_typeCheckConfig", "jsonConfig", "constructor", "configTypes", "property", "expectedTypes", "valueType", "RegExp", "test", "TypeError", "toUpperCase", "VERSION", "BaseComponent", "_element", "_config", "Data", "DATA_KEY", "dispose", "EVENT_KEY", "propertyName", "getOwnPropertyNames", "_queueCallback", "isAnimated", "getInstance", "getOrCreateInstance", "eventName", "getSelector", "hrefAttribute", "trim", "SelectorEngine", "concat", "Element", "findOne", "children", "child", "matches", "parents", "ancestor", "prev", "previous", "previousElementSibling", "next", "nextElementSibling", "focusableChildren", "focusables", "map", "join", "el", "getSelectorFromElement", "getElementFromSelector", "getMultipleElementsFromSelector", "enableDismissTrigger", "component", "method", "clickEvent", "tagName", "EVENT_CLOSE", "EVENT_CLOSED", "CLASS_NAME_FADE", "CLASS_NAME_SHOW", "Alert", "close", "closeEvent", "_destroyElement", "each", "data", "DATA_API_KEY", "CLASS_NAME_ACTIVE", "SELECTOR_DATA_TOGGLE", "EVENT_CLICK_DATA_API", "Button", "toggle", "button", "EVENT_TOUCHSTART", "EVENT_TOUCHMOVE", "EVENT_TOUCHEND", "EVENT_POINTERDOWN", "EVENT_POINTERUP", "POINTER_TYPE_TOUCH", "POINTER_TYPE_PEN", "CLASS_NAME_POINTER_EVENT", "SWIPE_THRESHOLD", "endCallback", "leftCallback", "rightCallback", "Swipe", "isSupported", "_deltaX", "_supportPointerEvents", "PointerEvent", "_initEvents", "_start", "touches", "clientX", "_eventIsPointerPenTouch", "_end", "_handleSwipe", "_move", "absDeltaX", "abs", "direction", "add", "pointerType", "navigator", "maxTouchPoints", "ARROW_LEFT_KEY", "ARROW_RIGHT_KEY", "TOUCHEVENT_COMPAT_WAIT", "ORDER_NEXT", "ORDER_PREV", "DIRECTION_LEFT", "DIRECTION_RIGHT", "EVENT_SLIDE", "EVENT_SLID", "EVENT_KEYDOWN", "EVENT_MOUSEENTER", "EVENT_MOUSELEAVE", "EVENT_DRAG_START", "EVENT_LOAD_DATA_API", "CLASS_NAME_CAROUSEL", "CLASS_NAME_SLIDE", "CLASS_NAME_END", "CLASS_NAME_START", "CLASS_NAME_NEXT", "CLASS_NAME_PREV", "SELECTOR_ACTIVE", "SELECTOR_ITEM", "SELECTOR_ACTIVE_ITEM", "SELECTOR_ITEM_IMG", "SELECTOR_INDICATORS", "SELECTOR_DATA_SLIDE", "SELECTOR_DATA_RIDE", "KEY_TO_DIRECTION", "interval", "keyboard", "pause", "ride", "touch", "wrap", "Carousel", "_interval", "_activeElement", "_isSliding", "touchTimeout", "_swipeHelper", "_indicatorsElement", "_addEventListeners", "cycle", "_slide", "nextWhenVisible", "hidden", "_clearInterval", "_updateInterval", "setInterval", "_maybeEnableCycle", "to", "items", "_getItems", "activeIndex", "_getItemIndex", "_getActive", "order", "defaultInterval", "_keydown", "_addTouchEventListeners", "img", "endCallBack", "clearTimeout", "swipeConfig", "_directionToOrder", "_setActiveIndicatorElement", "activeIndicator", "newActiveIndicator", "elementInterval", "parseInt", "isNext", "nextElement", "nextElementIndex", "triggerEvent", "_orderToDirection", "slideEvent", "isCycling", "directionalClassName", "orderClassName", "completeCallBack", "_isAnimated", "clearInterval", "carousel", "slideIndex", "carousels", "EVENT_SHOW", "EVENT_SHOWN", "EVENT_HIDE", "EVENT_HIDDEN", "CLASS_NAME_COLLAPSE", "CLASS_NAME_COLLAPSING", "CLASS_NAME_COLLAPSED", "CLASS_NAME_DEEPER_CHILDREN", "CLASS_NAME_HORIZONTAL", "WIDTH", "HEIGHT", "SELECTOR_ACTIVES", "parent", "Collapse", "_isTransitioning", "_triggerArray", "toggleList", "elem", "filterElement", "foundElement", "_initializeChildren", "_addAriaAndCollapsedClass", "_isShown", "hide", "show", "activeChildren", "_getFirstLevelChildren", "startEvent", "activeInstance", "dimension", "_getDimension", "style", "complete", "capitalizedDimension", "scrollSize", "getBoundingClientRect", "selected", "triggerArray", "isOpen", "ESCAPE_KEY", "TAB_KEY", "ARROW_UP_KEY", "ARROW_DOWN_KEY", "RIGHT_MOUSE_BUTTON", "EVENT_KEYDOWN_DATA_API", "EVENT_KEYUP_DATA_API", "CLASS_NAME_DROPUP", "CLASS_NAME_DROPEND", "CLASS_NAME_DROPSTART", "CLASS_NAME_DROPUP_CENTER", "CLASS_NAME_DROPDOWN_CENTER", "SELECTOR_DATA_TOGGLE_SHOWN", "SELECTOR_MENU", "SELECTOR_NAVBAR", "SELECTOR_NAVBAR_NAV", "SELECTOR_VISIBLE_ITEMS", "PLACEMENT_TOP", "PLACEMENT_TOPEND", "PLACEMENT_BOTTOM", "PLACEMENT_BOTTOMEND", "PLACEMENT_RIGHT", "PLACEMENT_LEFT", "PLACEMENT_TOPCENTER", "PLACEMENT_BOTTOMCENTER", "autoClose", "boundary", "display", "offset", "popperConfig", "reference", "Dropdown", "_popper", "_parent", "_menu", "_inNavbar", "_detectNavbar", "showEvent", "_createPopper", "focus", "_completeHide", "destroy", "update", "hideEvent", "Popper", "referenceElement", "_getPopperConfig", "createPopper", "_getPlacement", "parentDropdown", "isEnd", "_getOffset", "popperData", "defaultBsPopperConfig", "placement", "modifiers", "options", "enabled", "_selectMenuItem", "clearMenus", "openToggles", "context", "composedPath", "isMenuTarget", "dataApiKeydownHandler", "isInput", "isEscapeEvent", "isUpOrDownEvent", "getToggleButton", "stopPropagation", "EVENT_MOUSEDOWN", "className", "clickCallback", "rootElement", "Backdrop", "_isAppended", "_append", "_getElement", "_emulateAnimation", "backdrop", "createElement", "append", "EVENT_FOCUSIN", "EVENT_KEYDOWN_TAB", "TAB_NAV_FORWARD", "TAB_NAV_BACKWARD", "autofocus", "trapElement", "FocusTrap", "_isActive", "_lastTabNavDirection", "activate", "_handleFocusin", "_handleKeydown", "deactivate", "elements", "shiftKey", "SELECTOR_FIXED_CONTENT", "SELECTOR_STICKY_CONTENT", "PROPERTY_PADDING", "PROPERTY_MARGIN", "ScrollBarHelper", "getWidth", "documentWidth", "clientWidth", "innerWidth", "width", "_disableOverFlow", "_setElementAttributes", "calculatedValue", "reset", "_resetElementAttributes", "isOverflowing", "_saveInitialAttribute", "overflow", "styleProperty", "scrollbarWidth", "manipulationCallBack", "setProperty", "_applyManipulationCallback", "actualValue", "removeProperty", "callBack", "sel", "EVENT_HIDE_PREVENTED", "EVENT_RESIZE", "EVENT_CLICK_DISMISS", "EVENT_MOUSEDOWN_DISMISS", "EVENT_KEYDOWN_DISMISS", "CLASS_NAME_OPEN", "CLASS_NAME_STATIC", "OPEN_SELECTOR", "SELECTOR_DIALOG", "SELECTOR_MODAL_BODY", "Modal", "_dialog", "_backdrop", "_initializeBackDrop", "_focustrap", "_initializeFocusTrap", "_scrollBar", "_adjustDialog", "_showElement", "_hideModal", "handleUpdate", "scrollTop", "modalBody", "transitionComplete", "_triggerBackdropTransition", "event2", "_resetAdjustments", "isModalOverflowing", "scrollHeight", "clientHeight", "initialOverflowY", "overflowY", "isBodyOverflowing", "paddingLeft", "paddingRight", "alreadyOpen", "CLASS_NAME_SHOWING", "CLASS_NAME_HIDING", "CLASS_NAME_BACKDROP", "scroll", "Offcanvas", "blur", "completeCallback", "position", "ARIA_ATTRIBUTE_PATTERN", "DefaultAllowlist", "a", "area", "b", "br", "col", "code", "div", "em", "hr", "h1", "h2", "h3", "h4", "h5", "h6", "i", "li", "ol", "p", "pre", "s", "small", "span", "sub", "sup", "strong", "u", "ul", "uriAttributes", "SAFE_URL_PATTERN", "allowedAttribute", "attribute", "allowedAttributeList", "attributeName", "nodeName", "nodeValue", "attributeRegex", "some", "regex", "sanitizeHtml", "unsafeHtml", "allowList", "sanitizeFunction", "domParser", "DOMParser", "createdDocument", "parseFromString", "elementName", "attributeList", "allowedAttributes", "innerHTML", "content", "extraClass", "html", "sanitize", "sanitizeFn", "template", "DefaultContentType", "entry", "TemplateFactory", "getContent", "_resolvePossibleFunction", "hasContent", "changeContent", "_checkContent", "toHtml", "templateWrapper", "_maybeSanitize", "text", "_setContent", "arg", "templateElement", "_putElementInTemplate", "textContent", "DISALLOWED_ATTRIBUTES", "CLASS_NAME_MODAL", "SELECTOR_TOOLTIP_INNER", "SELECTOR_MODAL", "EVENT_MODAL_HIDE", "TRIGGER_HOVER", "TRIGGER_FOCUS", "TRIGGER_CLICK", "TRIGGER_MANUAL", "EVENT_INSERTED", "EVENT_CLICK", "EVENT_FOCUSOUT", "AttachmentMap", "AUTO", "TOP", "RIGHT", "BOTTOM", "LEFT", "animation", "container", "customClass", "delay", "fallbackPlacements", "title", "Tooltip", "_isEnabled", "_timeout", "_isHovered", "_activeTrigger", "_templateFactory", "_newContent", "tip", "_setListeners", "_fixTitle", "enable", "disable", "toggleEnabled", "click", "_leave", "_enter", "_hideModalHandler", "_disposePopper", "_isWithContent", "shadowRoot", "isInTheDom", "ownerDocument", "_getTipElement", "_isWithActiveTrigger", "_getTitle", "_createTipElement", "_getContentForTemplate", "_getTemplateFactory", "tipId", "setContent", "_initializeOnDelegatedTarget", "_getDelegateConfig", "attachment", "phase", "state", "triggers", "eventIn", "eventOut", "_setTimeout", "timeout", "dataAttributes", "dataAttribute", "SELECTOR_TITLE", "SELECTOR_CONTENT", "Popover", "_getContent", "EVENT_ACTIVATE", "CLASS_NAME_DROPDOWN_ITEM", "SELECTOR_DATA_SPY", "SELECTOR_TARGET_LINKS", "SELECTOR_NAV_LIST_GROUP", "SELECTOR_NAV_LINKS", "SELECTOR_NAV_ITEMS", "SELECTOR_LIST_ITEMS", "SELECTOR_LINK_ITEMS", "SELECTOR_DROPDOWN", "SELECTOR_DROPDOWN_TOGGLE", "rootMargin", "smoothScroll", "threshold", "ScrollSpy", "_targetLinks", "_observableSections", "_rootElement", "_activeTarget", "_observer", "_previousScrollData", "visibleEntryTop", "parentScrollTop", "refresh", "_initializeTargetsAndObservables", "_maybeEnableSmoothScroll", "disconnect", "_getNewObserver", "section", "observe", "observableSection", "hash", "height", "offsetTop", "scrollTo", "top", "behavior", "IntersectionObserver", "_observerCallback", "targetElement", "_process", "userScrollsDown", "isIntersecting", "_clearActiveClass", "entryIsLowerThanPrevious", "targetLinks", "anchor", "decodeURI", "_activateParents", "listGroup", "item", "activeNodes", "node", "spy", "HOME_KEY", "END_KEY", "CLASS_DROPDOWN", "SELECTOR_DROPDOWN_MENU", "NOT_SELECTOR_DROPDOWN_TOGGLE", "SELECTOR_TAB_PANEL", "SELECTOR_OUTER", "SELECTOR_INNER", "SELECTOR_INNER_ELEM", "SELECTOR_DATA_TOGGLE_ACTIVE", "Tab", "_setInitialAttributes", "_getChildren", "innerElem", "_elemIsActive", "active", "_getActiveElem", "_deactivate", "_activate", "relatedElem", "_toggleDropDown", "nextActiveElement", "preventScroll", "_setAttributeIfNotExists", "_setInitialAttributesOnChild", "_getInnerElement", "isActive", "outerElem", "_getOuterElement", "_setInitialAttributesOnTargetPanel", "open", "EVENT_MOUSEOVER", "EVENT_MOUSEOUT", "CLASS_NAME_HIDE", "autohide", "Toast", "_hasMouseInteraction", "_hasKeyboardInteraction", "_clearTimeout", "_maybeScheduleHide", "isShown", "_onInteraction", "isInteracting", "time", "data", "state", "identifier", "s", "subscription", "a", "name", "import_react", "import_jquery", "React", "import_react", "obj", "o", "n", "import_react", "_ref", "onChange", "value", "React", "import_react", "o", "_setPrototypeOf", "p", "o", "_getPrototypeOf", "e", "self", "self", "React", "import_react", "React", "import_react", "options", "StyleSheet", "isImportRule", "e", "length", "index", "length", "index", "index", "length", "character", "characters", "size", "k", "x", "y", "length", "index", "length", "index", "identifierWithPointTracking", "index", "character", "toRules", "getRules", "compat", "k", "removeLabel", "isIgnoringComment", "createUnsafeSelectorsAlarm", "node", "isImportRule", "isPrependedWithRegularRules", "nullifyElement", "incorrectImportAlarm", "length", "prefixer", "createCache", "options", "stylis", "insert", "classNames", "registerStyles", "insertStyles", "k", "isCustomProperty", "isProcessableValue", "processStyleValue", "match", "msPattern", "next", "serializeStyles", "name", "React", "syncFallback", "useInsertionEffect", "isBrowser", "withEmotionCache", "isBrowser", "getLastPart", "getFunctionNameFromStackTraceLine", "line", "match", "sanitizeIdentifier", "identifier", "getLabelFromStackTrace", "createEmotionProps", "Insertion", "_ref", "React", "jsx", "isBrowser", "_ref", "next", "node", "keyframes", "name", "classnames", "k", "css", "Insertion", "cx", "import_react", "node", "_ref", "isElement", "getComputedStyle", "node", "getComputedStyle", "node", "css", "getComputedStyle", "isElement", "$", "x", "y", "scale", "threshold", "options", "e", "_ref", "import_react", "noop", "prefix", "name", "state", "cleanValue", "cleanCommonProps", "getStyleProps", "getStyles", "style", "t", "c", "d", "noop", "e", "removeProps", "_ref", "_ref2", "controlHeight", "coercePlacement", "menuCSS", "_objectSpread2", "borderRadius", "spacing", "colors", "MenuPlacer", "state", "Menu", "menuListCSS", "baseUnit", "MenuList", "noticeCSS", "NoOptionsMessage", "LoadingMessage", "menuPortalCSS", "position", "MenuPortal", "containerCSS", "isDisabled", "SelectContainer", "valueContainerCSS", "ValueContainer", "indicatorsContainerCSS", "IndicatorsContainer", "Svg", "size", "CrossIcon", "DownChevron", "baseCSS", "DropdownIndicator", "ClearIndicator", "indicatorSeparatorCSS", "IndicatorSeparator", "loadingIndicatorCSS", "LoadingDot", "LoadingIndicator", "css", "Control", "groupCSS", "Group", "getStyles", "groupHeadingCSS", "GroupHeading", "_excluded", "inputCSS", "inputStyle", "Input", "multiValueCSS", "multiValueLabelCSS", "multiValueRemoveCSS", "MultiValueGeneric", "MultiValue", "components", "data", "optionCSS", "Option", "placeholderCSS", "Placeholder", "SingleValue", "defaultComponents", "second", "isEqual", "A11yText", "isDisabled", "options", "getArrayIndex", "LiveRegion", "id", "getOptionLabel", "isOptionDisabled", "screenReaderStatus", "asOption", "d", "stripDiacritics", "match", "trimString", "defaultStringify", "createFilter", "stringify", "trim", "_excluded", "_ref", "cancelScroll", "e", "blurSelectInput", "targetRef", "_EMOTION_STRINGIFIED_CSS_ERROR__", "_ref2", "RequiredInput", "name", "onFocus", "onChange", "formatGroupLabel", "css", "_ref", "index", "isDisabled", "getOptionLabel", "getOptionValue", "categorizedOption", "data", "state", "options", "shouldHideSelectedOptions", "Select", "onChange", "name", "custom", "_ref2", "e", "getStyles", "getValue", "isClearable", "isOptionDisabled", "formatGroupLabel", "Input", "id", "noop", "MultiValue", "MultiValueContainer", "MultiValueLabel", "MultiValueRemove", "SingleValue", "Placeholder", "ClearIndicator", "LoadingIndicator", "DropdownIndicator", "IndicatorSeparator", "Group", "GroupHeading", "Menu", "MenuList", "MenuPortal", "LoadingMessage", "NoOptionsMessage", "Option", "loadingMessage", "noOptionsMessage", "render", "_data", "delimiter", "Control", "IndicatorsContainer", "SelectContainer", "ValueContainer", "import_react_dom", "x", "numberWithCommas", "data", "import_react", "ownKeys", "_objectSpread2", "_defineProperty", "_classCallCheck", "_defineProperties", "_createClass", "_extends", "_inherits", "_setPrototypeOf", "_getPrototypeOf", "o", "p", "_isNativeReflectConstruct", "e", "_objectWithoutPropertiesLoose", "_objectWithoutProperties", "_assertThisInitialized", "self", "_possibleConstructorReturn", "_createSuper", "_slicedToArray", "_arrayWithHoles", "_iterableToArrayLimit", "_unsupportedIterableToArray", "_nonIterableRest", "_toConsumableArray", "_arrayWithoutHoles", "_iterableToArray", "_nonIterableSpread", "_arrayLikeToArray", "n", "AccordionStore", "_ref", "id", "Provider", "state", "render", "Consumer", "_excluded", "Accordion", "onChange", "DisplayName", "Provider", "_ref", "toggleExpanded", "renderChildren", "accordionContext", "Consumer", "ProviderWrapper", "_extends", "_ref2", "_excluded$1", "AccordionItem", "_objectWithoutProperties", "_slicedToArray", "next", "_excluded$2", "AccordionItemButton", "handleKeyPress", "AccordionItemButtonWrapper", "defaultProps", "_inherits", "AccordionItemHeading", "_createSuper", "_classCallCheck", "_defineProperty", "_assertThisInitialized", "_createClass", "render", "AccordionItemHeadingWrapper", "_excluded$3", "AccordionItemPanel", "id", "_objectSpread2", "React", "$", "o", "k", "state", "branch", "e", "numberWithCommas", "Modal", "index", "t", "centers", "import_react", "import_jquery", "import_react_modal", "React", "$", "o", "state", "branch", "import_react", "import_jquery", "import_react", "import_jquery", "React", "$", "branches", "k", "numberWithCommas", "React", "import_react", "import_axios", "import_react", "import_classnames", "options", "e", "addEventListener", "node", "node", "removeEventListener", "node", "options", "import_react", "import_react", "import_react", "import_react", "a", "import_react", "import_react", "node", "getComputedStyle", "node", "node", "css", "getComputedStyle", "node", "options", "node", "node", "padding", "React", "import_react", "e", "node", "import_react", "React", "import_react_dom", "import_react", "import_react", "ownerDocument", "window", "ownerDocument", "isRTL", "style", "import_react", "import_react", "Context", "document", "window", "import_react", "import_react", "import_react", "options", "Component", "_jsx", "e", "import_jsx_runtime", "_excluded", "_objectWithoutPropertiesLoose", "window", "Modal", "_ref", "style", "_jsx", "ownerWindow", "e", "_Fragment", "ReactDOM", "_jsxs", "options", "React", "import_react", "import_prop_types", "import_react", "import_react_dom", "PropTypes", "import_react", "React", "forceReflow", "node", "Transition", "_ref", "timeout", "node", "ReactDOM", "_ref2", "render", "React", "PropTypes", "location", "noop", "parseDuration", "node", "e", "node", "import_react", "import_react_dom", "ReactDOM", "import_jsx_runtime", "React", "r", "normalize", "_jsx", "import_jsx_runtime", "node", "_jsx", "classNames", "import_classnames", "React", "React", "import_react", "import_jsx_runtime", "ThemeContext", "Consumer", "Provider", "prefix", "prefixes", "ThemeContext", "import_jsx_runtime", "prefix", "Component", "defaultProps", "_jsx", "classNames", "React", "import_classnames", "React", "import_jsx_runtime", "size", "_jsx", "classNames", "import_classnames", "React", "React", "import_react", "import_prop_types", "React", "import_classnames", "import_jsx_runtime", "PropTypes", "_jsx", "classNames", "import_jsx_runtime", "_jsxs", "_jsx", "import_jsx_runtime", "_jsx", "classNames", "React", "import_classnames", "import_jsx_runtime", "_jsx", "classNames", "import_jsx_runtime", "_jsx", "Modal", "style", "isRTL", "node", "e", "classNames", "Modal_default", "import_react", "map", "import_react", "import_react_dom", "import_react", "map", "React", "import_react", "import_react", "createElement", "import_react", "createElement", "createElement", "import_react", "_extends", "id", "style", "options", "node", "map", "LeafletMap", "React", "import_leaflet", "position", "options", "LeafletMarker", "import_leaflet", "options", "LeafletTileLayer", "React", "axios", "branches", "k", "numberWithCommas", "import_react", "import_axios", "token", "data", "fetch", "axios", "React", "e", "branches", "token", "React", "import_react", "import_classnames", "React", "React", "import_jsx_runtime", "_excluded", "_objectWithoutPropertiesLoose", "Button", "_ref", "Component", "_jsx", "import_jsx_runtime", "Button", "size", "prefix", "Component", "_jsx", "classNames", "import_axios", "import_react", "React", "e", "import_react", "import_react", "React", "o", "import_react", "React", "o", "import_react", "React", "o", "import_react", "React", "o", "import_react", "React", "import_axios", "import_jquery", "o", "$", "regions", "r", "axios", "r", "React", "import_react", "import_axios", "import_jquery", "import_jquery", "import_jquery", "$", "jQuery", "options", "data", "settings", "node", "o", "k", "s", "i", "a", "name", "d", "integer", "timer", "now", "t", "match", "map", "init", "n", "id", "td", "attr", "column", "compat", "e", "max", "size", "style", "padding", "index", "x", "y", "append", "next", "state", "col", "settings", "$", "name", "n", "e", "data", "o", "a", "init", "scope", "src", "i", "ien", "r", "hash", "id", "d", "k", "column", "s", "idx", "match", "node", "t", "token", "numbers", "buttons", "x", "y", "format", "locale", "from", "prefix", "errors", "token", "o", "options", "axios", "d", "date", "React", "Modal_default", "import_react", "React", "o", "import_react", "import_axios", "axios", "o", "sum", "React", "import_react", "React", "o", "import_react", "React", "o", "import_react", "React", "o", "import_react", "React", "o", "import_react", "React", "o", "import_react", "import_axios", "errors", "options", "axios", "React", "o", "import_react", "import_axios", "import_react", "React", "InvalidCharacterError", "message", "this", "prototype", "Error", "name", "window", "atob", "bind", "input", "str", "String", "replace", "length", "bs", "buffer", "bc", "idx", "output", "charAt", "fromCharCode", "indexOf", "decodeURIComponent", "m", "p", "code", "charCodeAt", "toString", "toUpperCase", "err", "InvalidTokenError", "token", "options", "pos", "header", "JSON", "parse", "base64_url_decode", "split", "e", "errors", "setCustomVariable", "axios", "options", "React", "Modal_default", "index", "e", "o", "data", "recognitionDate", "branch", "token", "axios", "React", "import_react", "import_jquery", "import_react", "React", "import_react", "React", "o", "import_react", "React", "provinces", "municipalities", "barangays", "data", "o", "import_react", "React", "data", "import_react", "React", "data", "import_react", "React", "data", "import_react", "React", "data", "import_react", "React", "data", "import_react", "React", "data", "import_react", "React", "index", "data", "import_react", "import_react_modal", "customStyles", "React", "o", "errors", "index", "data", "name", "Modal", "import_react", "import_react_modal", "customStyles", "React", "data", "o", "errors", "index", "name", "Modal", "import_react", "React", "o", "React", "o", "data", "centers", "$", "state", "import_react", "import_jquery", "React", "state", "$", "data", "o", "options", "import_react", "import_jquery", "import_moment", "import_react_modal", "import_react", "React", "data", "import_react", "React", "data", "import_react", "React", "data", "import_react", "React", "data", "import_react", "import_jquery", "import_react_modal", "customStyles", "n", "React", "$", "sum", "index", "e", "Modal", "totalBalance", "React", "e", "data", "$", "d", "id", "max", "o", "prev", "state", "Resizer", "import_react", "import_jquery", "import_moment", "import_react", "import_axios", "React", "import_react", "import_react", "import_react", "import_react", "import_react", "import_react", "import_react", "import_jsx_runtime", "_excluded", "_objectWithoutPropertiesLoose", "isTrivialHref", "_ref", "e", "_jsx", "import_classnames", "React", "import_classnames", "React", "import_jsx_runtime", "Component", "prefix", "_jsx", "classNames", "import_jsx_runtime", "Component", "prefix", "_jsx", "classNames", "React", "import_classnames", "React", "import_jsx_runtime", "classNames", "Component", "_jsx", "import_classnames", "import_prop_types", "React", "import_classnames", "React", "import_react", "import_classnames", "React", "import_prop_types", "import_jsx_runtime", "propTypes", "PropTypes", "Component", "_jsx", "classNames", "import_classnames", "React", "import_react", "React", "import_jsx_runtime", "id", "Component", "_jsx", "classNames", "import_classnames", "React", "import_react", "import_jsx_runtime", "_jsx", "classNames", "import_jsx_runtime", "id", "style", "_jsx", "classNames", "_jsxs", "_Fragment", "import_classnames", "React", "import_react", "import_jsx_runtime", "size", "id", "Component", "warning", "_jsx", "classNames", "React", "import_react", "import_jsx_runtime", "Component", "_jsx", "import_classnames", "React", "import_react", "import_warning", "import_jsx_runtime", "Component", "column", "classNames", "warning", "_jsx", "import_classnames", "React", "import_react", "import_jsx_runtime", "id", "_jsx", "classNames", "import_classnames", "React", "import_react", "import_jsx_runtime", "size", "id", "_jsx", "classNames", "import_classnames", "React", "import_jsx_runtime", "Component", "_jsx", "classNames", "React", "import_jsx_runtime", "_jsx", "import_classnames", "React", "import_jsx_runtime", "_jsxs", "classNames", "_jsx", "import_jsx_runtime", "propTypes", "PropTypes", "Form", "Component", "_jsx", "classNames", "React", "authenticityToken", "axios", "data", "numberWithCommas", "c", "o", "Modal_default", "import_react", "React", "numberWithCommas", "React", "data", "$", "import_react", "import_jquery", "import_react", "import_jquery", "React", "data", "$", "t", "components", "numberWithCommas", "index", "state", "currentMember", "errors", "Modal_default", "import_react", "import_jquery", "import_react_table", "import_react_toggle", "React", "data", "$", "t", "components", "Toggle", "numberWithCommas", "currentMember", "errors", "Modal_default", "React", "t", "$", "data", "index", "book", "o", "numberWithCommas", "import_react", "import_jquery", "import_moment", "import_react", "import_react_table", "import_react_modal", "import_react_toggle", "import_jquery", "React", "id", "$", "components", "numberWithCommas", "currentMember", "data", "errors", "Modal", "customStyles", "import_react", "import_jquery", "React", "$", "React", "$", "data", "index", "numberWithCommas", "import_react", "import_jquery", "import_moment", "import_react", "import_react_table", "import_react_modal", "import_react_toggle", "import_jquery", "React", "id", "$", "components", "numberWithCommas", "currentMember", "data", "errors", "Modal", "customStyles", "import_react", "import_jquery", "AddRecord", "React", "$", "o", "import_react", "React", "centers", "import_react", "import_jquery", "React", "$", "React", "$", "c", "data", "index", "numberWithCommas", "AddRecord", "import_react", "import_jquery", "import_moment", "import_react", "import_react_table", "import_react_modal", "import_react_toggle", "React", "id", "components", "numberWithCommas", "currentMember", "data", "errors", "Modal", "customStyles", "import_react", "import_jquery", "AddRecord", "React", "$", "React", "$", "data", "index", "numberWithCommas", "AddRecord", "import_react", "import_jquery", "import_moment", "import_react", "import_react_table", "import_react_modal", "import_jquery", "React", "id", "$", "components", "numberWithCommas", "currentMember", "data", "errors", "Modal", "customStyles", "import_react", "import_jquery", "AddRecord", "React", "$", "React", "$", "data", "index", "numberWithCommas", "AddRecord", "import_react", "import_jquery", "import_moment", "import_react", "import_jquery", "import_react_table", "import_react_modal", "import_react_toggle", "React", "components", "identificationNumber", "numberWithCommas", "id", "$", "currentMember", "data", "errors", "Modal", "customStyles", "import_react", "import_jquery", "AddRecord", "React", "$", "import_react", "import_jquery", "LoadCenter", "React", "$", "centers", "React", "$", "data", "index", "numberWithCommas", "AddRecord", "LoadCenter", "import_react", "import_jquery", "import_moment", "import_react", "import_react_table", "import_react_modal", "import_react_toggle", "React", "id", "components", "numberWithCommas", "currentMember", "data", "errors", "Modal", "customStyles", "import_react", "AddRecord", "React", "React", "$", "data", "index", "numberWithCommas", "AddRecord", "import_react", "import_jquery", "import_react", "React", "numberWithCommas", "React", "id", "authenticityToken", "$", "data", "numberWithCommas", "import_react", "import_jquery", "import_react", "MemberRecord", "React", "numberWithCommas", "ShowUI", "React", "id", "authenticityToken", "$", "data", "MemberRecord", "numberWithCommas", "import_react", "import_jquery", "React", "$", "recognitionDate", "name", "import_react", "import_jquery", "import_react_table", "import_moment", "React", "date", "y", "moment", "$", "data", "errors", "o", "state", "numberWithCommas", "DatePicker", "import_react", "import_jquery", "import_react_table", "import_react", "React", "x", "import_react", "import_jquery", "React", "$", "GeneralLedgerComponent", "React", "date", "y", "$", "branchId", "data", "errors", "o", "state", "import_react", "import_jquery", "import_react_table", "import_react_modal", "React", "$", "data", "o", "state", "errors", "index", "name", "numberWithCommas", "currentAccountingCodeId", "Modal", "customStyles", "import_react", "import_jquery", "import_moment", "import_react_toggle", "ShowComponent", "React", "$", "o", "x", "numberWithCommas", "import_react", "import_jquery", "import_moment", "import_react_toggle", "ShowComponent", "React", "$", "o", "x", "numberWithCommas", "import_react", "import_jquery", "import_moment", "import_react", "React", "index", "style", "React", "state", "$", "data", "index", "options", "import_react", "import_react", "import_jquery", "centers", "currentLoanProductId", "$", "options", "React", "o", "index", "e", "import_react", "data", "React", "numberWithCommas", "import_react", "loans", "i", "React", "numberWithCommas", "data", "link", "import_react", "data", "counter", "React", "numberWithCommas", "import_react", "data", "counter", "React", "numberWithCommas", "import_axios", "import_axios", "axios", "errors", "id", "axios", "data", "centers", "currentLoanProductId", "id", "o", "fetch", "_data", "e", "React", "import_react", "import_react", "Filter_default", "centers", "currentLoanProductId", "options", "React", "o", "import_react", "MasterListView_default", "data", "React", "numberWithCommas", "import_react", "data", "i", "React", "numberWithCommas", "import_react", "AgingOfReceivablesView_default", "data", "counter", "React", "numberWithCommas", "import_axios", "id", "axios", "ShowComponent_default", "data", "centers", "currentLoanProductId", "id", "o", "fetch", "options", "_data", "React", "Filter_default", "AgingOfReceivablesView_default", "MasterListView_default", "import_react", "import_jquery", "import_moment", "import_react_toggle", "ShowComponent", "React", "options", "data", "$", "centers", "index", "numberWithCommas", "import_react", "import_jquery", "import_react_toggle", "ShowComponent", "React", "options", "data", "$", "centers", "index", "numberWithCommas", "import_react", "import_jquery", "import_moment", "import_react_toggle", "ShowComponent", "React", "options", "data", "$", "centers", "numberWithCommas", "link", "import_react", "import_jquery", "import_moment", "import_react_toggle", "ShowComponent", "React", "options", "data", "$", "centers", "numberWithCommas", "r", "link", "import_react", "import_jquery", "import_moment", "import_react_toggle", "ShowComponent", "React", "options", "data", "$", "centers", "id", "numberWithCommas", "settings", "r", "k", "link", "import_react", "import_jquery", "import_moment", "import_react_toggle", "ShowComponent", "React", "options", "data", "$", "centers", "x", "numberWithCommas", "import_react", "import_jquery", "import_moment", "import_react_toggle", "ShowComponent", "React", "options", "data", "$", "centers", "counter", "numberWithCommas", "import_react", "import_jquery", "import_react_modal", "import_react", "React", "data", "customStyles", "ShowComponent", "React", "data", "$", "Modal", "import_react", "import_jquery", "import_moment", "React", "$", "numberWithCommas", "options", "branches", "import_react", "import_jquery", "import_moment", "React", "$", "options", "branches", "import_react", "import_jquery", "import_moment", "import_react_modal", "React", "id", "$", "data", "numberWithCommas", "name", "moment", "authenticityToken", "Modal", "customStyles", "branch", "import_react", "import_jquery", "import_moment", "import_react", "import_react_table", "import_react_modal", "import_react_toggle", "React", "id", "components", "numberWithCommas", "currentMember", "data", "errors", "Modal", "customStyles", "import_react", "AddRecord", "React", "React", "$", "data", "index", "numberWithCommas", "AddRecord", "import_react", "import_jquery", "import_react_table", "React", "$", "o", "state", "import_react", "import_react_toggle", "import_react", "o", "React", "index", "obj", "id", "data", "index", "React", "Toggle", "import_react", "import_jquery", "import_moment", "import_react_toggle", "import_axios", "ShowComponent", "React", "$", "options", "data", "centers", "Modal_default", "e", "x", "import_react", "import_jquery", "import_moment", "import_react_toggle", "ShowComponent", "React", "options", "data", "$", "centers", "import_react", "import_jquery", "import_moment", "import_react_toggle", "ShowComponent", "React", "options", "data", "$", "centers", "numberWithCommas", "import_react", "import_jquery", "React", "import_react", "React", "import_react", "import_axios", "import_react", "React", "o", "import_react", "import_axios", "errors", "token", "o", "options", "axios", "React", "Modal_default", "errors", "branches", "branchId", "token", "o", "options", "axios", "_branchId", "_recordType", "React", "Modal_default", "import_react", "import_axios", "token", "data", "React", "Modal_default", "axios", "import_react", "import_axios", "token", "data", "React", "Modal_default", "axios", "import_react", "data", "token", "a", "React", "o", "numberWithCommas", "import_react", "import_axios", "import_react", "import_react", "import_prop_types", "t", "t", "t", "e", "polyIn", "t", "custom", "polyOut", "polyInOut", "t", "x", "t", "t", "t", "custom", "s", "backIn", "t", "backOut", "backInOut", "custom", "a", "s", "elasticIn", "t", "p", "elasticOut", "elasticInOut", "extend", "format", "n", "r", "a", "o", "extend", "k", "s", "min", "max", "t1", "n", "t", "n", "t", "x", "linear", "a", "d", "t", "y", "y", "a", "d", "linear", "y", "color", "rgb", "r", "t", "colors", "n", "a", "n", "c", "t", "x", "a", "x", "c", "t", "a", "d", "t", "a", "t", "a", "c", "k", "t", "t", "a", "s", "q", "i", "o", "a", "t", "c", "a", "t", "n", "t", "i", "_isPlainObject", "a", "t", "x", "y", "_orderBy", "c", "k", "format", "import_react", "timeout", "now", "time", "t", "e", "t0", "t1", "_classCallCheck", "_defineProperties", "_createClass", "Timer", "s", "now", "id", "React", "Timer", "_toConsumableArray", "_arrayWithoutHoles", "_iterableToArray", "_unsupportedIterableToArray", "_nonIterableSpread", "o", "_arrayLikeToArray", "n", "_classCallCheck", "_defineProperties", "_createClass", "_inherits", "_setPrototypeOf", "p", "_createSuper", "_isNativeReflectConstruct", "_getPrototypeOf", "_possibleConstructorReturn", "self", "_assertThisInitialized", "e", "VictoryAnimation", "isEqual", "toNewName", "s", "data", "render", "React", "PropTypes", "import_isFunction", "import_defaults", "import_assign", "import_react", "import_prop_types", "import_prop_types", "import_isPlainObject", "import_isFunction", "import_react", "padding", "exists", "point", "_defaults", "scale", "d", "x", "y", "name", "defaultStyles", "style", "data", "_isFunction", "_keys", "prev", "_property", "fallbackProps", "combine", "index", "_assign", "_pick", "React", "c", "_toConsumableArray", "_arrayWithoutHoles", "_iterableToArray", "_unsupportedIterableToArray", "_nonIterableSpread", "o", "_arrayLikeToArray", "n", "identity", "linear", "quantile", "a", "a", "d", "x", "zero", "a", "x", "index", "key", "a", "x", "n", "ticks", "max", "index", "min", "index", "k", "n", "s", "t", "n", "min", "max", "n", "range", "domain", "range", "index", "domain", "range", "scale", "d", "scale", "domain", "round", "n", "copy", "x", "number", "x", "x", "a", "t", "domain", "range", "d", "r", "i", "copy", "piecewise", "n", "scale", "y", "number", "x", "x", "t", "length", "match", "s", "n", "x", "d", "exponent", "n", "x", "d", "exponent", "x", "x", "locale", "minus", "sign", "zero", "trim", "prefix", "format", "n", "c", "length", "padding", "formatPrefix", "e", "k", "value", "max", "scale", "domain", "d", "linear", "copy", "identity", "domain", "scale", "x", "number", "domain", "interval", "t", "x", "k", "scale", "domain", "d", "r", "t", "n", "copy", "c", "x", "scale", "copy", "exponent", "x", "scale", "copy", "x", "range", "round", "scale", "y", "number", "quantile", "domain", "range", "n", "scale", "x", "y", "d", "n", "domain", "range", "scale", "x", "y", "domain", "range", "n", "scale", "x", "y", "interval", "date", "range", "d", "date", "k", "date", "date", "date", "date", "date", "date", "date", "k", "ticks", "interval", "step", "t", "d", "date", "y", "locale", "formats", "n", "c", "pad", "format", "parse", "sign", "length", "s", "name", "locale", "defaultLocale", "t", "number", "ticks", "second", "format", "scale", "domain", "formatYear", "tickFormat", "date", "y", "interval", "d", "copy", "transformer", "t0", "t1", "scale", "x", "range", "t", "copy", "domain", "scale", "x", "d", "n", "transformer", "s", "t0", "t1", "scale", "x", "range", "t", "copy", "scale", "s", "_isFunction", "_includes", "domain", "_isPlainObject", "name", "linear", "_defineProperty", "PropTypes", "_find", "_isRegExp", "import_keys", "import_react", "import_prop_types", "_classCallCheck", "_defineProperties", "_createClass", "_inherits", "_setPrototypeOf", "o", "p", "_createSuper", "_isNativeReflectConstruct", "_getPrototypeOf", "_possibleConstructorReturn", "self", "_assertThisInitialized", "e", "_ref", "Portal", "getChildren", "_keys", "React", "render", "PropTypes", "import_react", "React", "React", "_slicedToArray", "_arrayWithHoles", "_iterableToArrayLimit", "_unsupportedIterableToArray", "_nonIterableRest", "o", "_arrayLikeToArray", "n", "ownKeys", "_defineProperty", "_ref", "_ref2", "_extends", "ownKeys", "_objectSpread", "_defineProperty", "_classCallCheck", "_defineProperties", "_createClass", "_inherits", "_setPrototypeOf", "o", "p", "_createSuper", "_isNativeReflectConstruct", "_getPrototypeOf", "_possibleConstructorReturn", "self", "_assertThisInitialized", "e", "VictoryContainer", "_isFunction", "_isObject", "_uniqueId", "getChildren", "style", "_assign", "React", "_defaults", "render", "PropTypes", "import_defaults", "import_assign", "import_prop_types", "import_react", "import_defaults", "import_react", "import_prop_types", "_classCallCheck", "_defineProperties", "_createClass", "_inherits", "_setPrototypeOf", "o", "p", "_createSuper", "_isNativeReflectConstruct", "_getPrototypeOf", "_possibleConstructorReturn", "self", "_assertThisInitialized", "e", "VictoryPortal", "render", "_defaults", "React", "PropTypes", "import_react", "_excluded", "_extends", "_objectWithoutProperties", "_objectWithoutPropertiesLoose", "React", "import_react", "import_prop_types", "_excluded", "_objectWithoutProperties", "_objectWithoutPropertiesLoose", "React", "PropTypes", "import_react", "React", "import_defaults", "sign", "style", "getPadding", "padding", "x", "y", "index", "orientation", "scale", "data", "_defaults", "name", "import_memoize", "import_defaults", "import_assign", "_slicedToArray", "_arrayWithHoles", "_iterableToArrayLimit", "_unsupportedIterableToArray", "_nonIterableRest", "_toConsumableArray", "_arrayWithoutHoles", "_iterableToArray", "_nonIterableSpread", "o", "_arrayLikeToArray", "n", "length", "fontSize", "inputStyle", "index", "style", "_defaults", "_assign", "line", "letterSpacing", "c", "_memoize", "_ref", "_ref2", "ownKeys", "_objectSpread", "_defineProperty", "_toConsumableArray", "_arrayWithoutHoles", "_iterableToArray", "_unsupportedIterableToArray", "_nonIterableSpread", "o", "_arrayLikeToArray", "n", "defaultStyles", "getPosition", "style", "fontSize", "index", "_isEmpty", "getStyles", "s", "_defaults", "baseStyles", "_assign", "padding", "line", "length", "x", "y", "size", "React", "t", "prev", "id", "PropTypes", "import_pick", "import_isFunction", "import_defaults", "import_react", "import_prop_types", "import_keys", "import_identity", "import_defaults", "import_assign", "import_react", "data", "a", "_keys", "_difference", "_ref", "next", "React", "_identity", "_assign", "state", "index", "_defaults", "import_react_fast_compare", "_extends", "_classCallCheck", "_defineProperties", "_createClass", "_inherits", "_setPrototypeOf", "o", "p", "_createSuper", "_isNativeReflectConstruct", "_getPrototypeOf", "_possibleConstructorReturn", "self", "_assertThisInitialized", "e", "VictoryTransition", "isEqual", "state", "React", "getDomainFromChildren", "child", "_isFunction", "domain", "range", "render", "_defaults", "_pick", "PropTypes", "import_uniqueId", "import_isObject", "import_defaults", "import_assign", "import_react", "import_prop_types", "import_react", "import_prop_types", "React", "PropTypes", "import_react", "_excluded", "_extends", "_objectWithoutProperties", "_objectWithoutPropertiesLoose", "React", "_toConsumableArray", "_arrayWithoutHoles", "_iterableToArray", "_unsupportedIterableToArray", "_nonIterableSpread", "o", "_arrayLikeToArray", "n", "ownKeys", "_objectSpread", "_defineProperty", "_classCallCheck", "_defineProperties", "_createClass", "_inherits", "_setPrototypeOf", "p", "_createSuper", "_isNativeReflectConstruct", "_getPrototypeOf", "_possibleConstructorReturn", "self", "_assertThisInitialized", "e", "VictoryClipContainer", "_isObject", "_uniqueId", "style", "_assign", "React", "range", "render", "_defaults", "PropTypes", "import_assign", "colors", "_assign", "import_assign", "colors", "sansSerif", "letterSpacing", "fontSize", "baseProps", "baseLabelStyles", "centeredLabelStyles", "_assign", "strokeLinecap", "strokeLinejoin", "import_assign", "import_react", "import_prop_types", "import_prop_types", "PropTypes", "baseProps", "import_react", "_excluded", "_objectWithoutProperties", "_objectWithoutPropertiesLoose", "React", "ownKeys", "_objectSpread", "_defineProperty", "r", "evaluateProps", "id", "style", "_assign", "React", "PropTypes", "import_assign", "import_react", "import_prop_types", "ownKeys", "_objectSpread", "_defineProperty", "evaluateProps", "id", "_assign", "React", "PropTypes", "import_assign", "import_react", "import_prop_types", "ownKeys", "_objectSpread", "_defineProperty", "evaluateProps", "id", "style", "_assign", "React", "PropTypes", "import_react", "_excluded", "_extends", "_objectWithoutProperties", "_objectWithoutPropertiesLoose", "React", "import_assign", "import_react", "import_prop_types", "ownKeys", "_objectSpread", "_defineProperty", "evaluateProps", "id", "style", "_assign", "React", "PropTypes", "import_assign", "import_prop_types", "import_react", "square", "import_range", "x", "y", "size", "length", "_range", "index", "ownKeys", "_objectSpread", "_defineProperty", "x", "y", "size", "evaluateProps", "id", "style", "_assign", "React", "PropTypes", "import_without", "import_pick", "import_keys", "import_isFunction", "import_isEmpty", "import_defaults", "import_assign", "import_react", "import_keys", "import_includes", "import_isFunction", "import_isEmpty", "import_assign", "_defineProperty", "_toConsumableArray", "_arrayWithoutHoles", "_iterableToArray", "_unsupportedIterableToArray", "_nonIterableSpread", "o", "_arrayLikeToArray", "n", "getScopedEvents", "_includes", "k", "_assign", "getAllEvents", "_isFunction", "baseProps", "_isEmpty", "identifier", "_without", "_keys", "state", "_pickBy", "_uniq", "mutation", "components", "match", "_omitBy", "import_react_fast_compare", "_toConsumableArray", "_arrayWithoutHoles", "_iterableToArray", "_unsupportedIterableToArray", "_nonIterableSpread", "o", "_arrayLikeToArray", "n", "_classCallCheck", "_defineProperties", "_createClass", "_inherits", "_setPrototypeOf", "p", "_createSuper", "_isNativeReflectConstruct", "_getPrototypeOf", "_possibleConstructorReturn", "self", "_assertThisInitialized", "e", "_isNil", "defaultComponents", "options", "AddEventsMixin", "isEqual", "_keys", "_difference", "_defaults", "_isEmpty", "components", "_isFunction", "c", "getCalculatedValues", "baseProps", "getExternalMutations", "getBaseProps", "_pick", "getAllEvents", "index", "name", "id", "_assign", "React", "_without", "dataProps", "getDomain", "modifyProps", "import_without", "import_includes", "import_orderBy", "import_range", "import_uniq", "import_isObject", "import_isFunction", "import_identity", "import_defaults", "import_assign", "import_react", "import_includes", "import_isFunction", "import_isPlainObject", "import_react", "import_omitBy", "import_includes", "import_isEmpty", "import_orderBy", "import_property", "import_isPlainObject", "import_isFunction", "import_range", "import_uniq", "import_assign", "import_react", "x", "x", "_toConsumableArray", "_arrayWithoutHoles", "_iterableToArray", "_unsupportedIterableToArray", "_nonIterableSpread", "o", "_arrayLikeToArray", "n", "data", "_isPlainObject", "domain", "_range", "_last", "_orderBy", "_assign", "_isFunction", "_property", "index", "exists", "min", "max", "_omitBy", "_isUndefined", "_uniq", "k", "d", "createAccessor", "name", "_isEqual", "_isEmpty", "x", "tickFormat", "prev", "React", "_includes", "_toConsumableArray", "_arrayWithoutHoles", "_iterableToArray", "_unsupportedIterableToArray", "_nonIterableSpread", "o", "_arrayLikeToArray", "n", "domain", "padding", "_isPlainObject", "_flatten", "min", "max", "range", "_isFunction", "index", "_isDate", "_sortedUniq", "a", "React", "_includes", "_toConsumableArray", "_arrayWithoutHoles", "_iterableToArray", "_unsupportedIterableToArray", "_nonIterableSpread", "o", "_arrayLikeToArray", "n", "_identity", "React", "domain", "d", "orientation", "x", "index", "_invert", "_orderBy", "_values", "tickFormat", "t", "ticks", "_range", "_uniq", "scale", "_isFunction", "k", "_includes", "_without", "getDomainFromData", "min", "max", "getDomain", "_isObject", "modifyProps", "fallbackProps", "_defaults", "_assign", "index", "data", "import_react", "React", "import_defaults", "import_react", "ownKeys", "_objectSpread", "_defineProperty", "_slicedToArray", "_arrayWithHoles", "_iterableToArrayLimit", "_unsupportedIterableToArray", "_nonIterableRest", "o", "_arrayLikeToArray", "n", "React", "state", "index", "_defaults", "c", "_some", "continuous", "getProps", "basis_default", "basisClosed_default", "descending_default", "none_default", "Symbol", "constant_default", "x", "abs", "max", "min", "sqrt", "pi", "halfPi", "tau", "x", "pi", "tau", "epsilon", "append", "n", "d", "k", "Path", "x", "y", "r", "w", "d", "Path", "d", "t", "sqrt", "r", "max", "constant_default", "path", "halfPi", "abs", "tau", "min", "t0", "t1", "pi", "a", "slice", "x", "x", "y", "x", "y", "defined", "constant_default", "path", "line", "data", "n", "d", "defined", "constant_default", "path", "data", "k", "n", "d", "a", "identity_default", "d", "identity_default", "constant_default", "tau", "data", "n", "k", "sum", "index", "i", "j", "a", "r", "radial", "c", "a", "c", "x", "y", "x", "y", "d", "x", "y", "path", "link", "slice", "s", "t", "constant_default", "sqrt", "size", "r", "min", "t", "size", "r", "sqrt", "pi", "tau", "size", "r", "sqrt", "sqrt", "size", "y", "x", "size", "r", "sqrt", "size", "r", "sqrt", "min", "size", "w", "sqrt", "x", "size", "r", "sqrt", "pi", "tau", "size", "r", "sqrt", "x", "y", "a", "c", "s", "sqrt3", "sqrt", "size", "y", "sqrt3", "sqrt", "size", "s", "t", "sqrt", "size", "r", "size", "r", "sqrt", "min", "Symbol", "size", "path", "constant_default", "point", "x", "y", "basis_default", "x", "y", "point", "basisClosed_default", "x", "y", "point", "x", "y", "t", "custom", "beta", "point", "x", "y", "custom", "tension", "x", "y", "point", "custom", "tension", "x", "y", "point", "custom", "tension", "point", "x", "y", "x2", "y2", "a", "n", "custom", "alpha", "x", "y", "point", "custom", "alpha", "x", "y", "point", "custom", "alpha", "x", "y", "x", "t", "point", "t0", "t1", "y", "x", "y", "n", "a", "r", "t", "x", "y", "n", "none_default", "n", "o", "d", "constant_default", "none_default", "data", "n", "n", "y", "n", "d", "n", "y", "n", "y", "k", "none_default", "a", "n", "vi", "none_default", "a", "s", "n", "descending_default", "n", "none_default", "d", "y", "scale", "x", "toNewName", "s", "a", "d", "e", "location", "domain", "scale", "x", "y", "point2", "getCategories", "getData", "getDomain", "getScale", "getStringsFromCategories", "getStringsFromData", "import_isPlainObject", "import_values", "import_uniq", "import_isFunction", "import_flatten", "import_defaults", "import_assign", "import_react", "_toConsumableArray", "_arrayWithoutHoles", "_iterableToArray", "_unsupportedIterableToArray", "_nonIterableSpread", "o", "_arrayLikeToArray", "n", "ownKeys", "_objectSpread", "_defineProperty", "_ref", "_ref2", "index", "React", "_assign", "_isFunction", "c", "combine", "_uniqBy", "_values", "_groupBy", "getData", "range", "min", "max", "getDomain", "domain", "getScale", "_uniq", "components", "style", "color", "colors", "defaultStyle", "_defaults", "getStringsFromCategories", "getStringsFromData", "data", "d", "x", "y", "_isPlainObject", "_flatten", "getCategories", "fallbackProps", "import_isEmpty", "import_assign", "import_prop_types", "import_react", "import_defaults", "import_assign", "_toConsumableArray", "_arrayWithoutHoles", "_iterableToArray", "_unsupportedIterableToArray", "_nonIterableSpread", "o", "_arrayLikeToArray", "n", "_defineProperty", "getCurrentAxis", "orientation", "getScale", "scale", "domain", "_defaults", "getStyles", "style", "position", "padding", "isVertical", "sign", "x", "y", "fontSize", "ticks", "stringTicks", "data", "index", "_assign", "getOffset", "getTransform", "size", "defaultStyles", "tickFormat", "range", "fallbackProps", "ownKeys", "_objectSpread", "_defineProperty", "_toConsumableArray", "_arrayWithoutHoles", "_iterableToArray", "_unsupportedIterableToArray", "_nonIterableSpread", "o", "_arrayLikeToArray", "n", "_classCallCheck", "_defineProperties", "_createClass", "_inherits", "_setPrototypeOf", "p", "_createSuper", "_isNativeReflectConstruct", "_getPrototypeOf", "_possibleConstructorReturn", "self", "_assertThisInitialized", "e", "options", "VictoryAxisBase", "React", "renderLabel", "name", "style", "_isEmpty", "index", "isVertical", "size", "padding", "_assign", "sum", "prev", "a", "render", "PropTypes", "getStyles", "import_isEmpty", "import_assign", "import_defaults", "import_prop_types", "import_react", "import_difference", "import_keys", "import_isEmpty", "import_defaults", "import_isFunction", "import_assign", "import_react", "import_prop_types", "import_react_fast_compare", "_slicedToArray", "_arrayWithHoles", "_iterableToArrayLimit", "_unsupportedIterableToArray", "_nonIterableRest", "_toConsumableArray", "_arrayWithoutHoles", "_iterableToArray", "_nonIterableSpread", "o", "_arrayLikeToArray", "n", "_classCallCheck", "_defineProperties", "_createClass", "_inherits", "_setPrototypeOf", "p", "_createSuper", "_isNativeReflectConstruct", "_getPrototypeOf", "_possibleConstructorReturn", "self", "_assertThisInitialized", "e", "VictorySharedEvents", "isEqual", "_keys", "_difference", "getAllEvents", "components", "_isEmpty", "_isFunction", "c", "getExternalMutations", "baseProps", "name", "_ref", "_ref2", "getBaseProps", "React", "_assign", "_fromPairs", "childNames", "index", "stringify", "_defaults", "render", "PropTypes", "import_isEmpty", "import_assign", "import_react", "import_prop_types", "import_defaults", "import_uniqBy", "import_assign", "getPosition", "r", "ticks", "scale", "t", "_uniqBy", "getEvaluatedStyles", "style", "getStyleObject", "_defaults", "getRadius", "getRange", "getScale", "domain", "range", "getStyles", "getTickProps", "index", "stringTicks", "tickFormat", "getTickLabelProps", "_assign", "getGridProps", "getAxisLabelProps", "getAxisProps", "getCalculatedValues", "defaultStyles", "padding", "getBaseProps", "fallbackProps", "name", "ownKeys", "_objectSpread", "_defineProperty", "_toConsumableArray", "_arrayWithoutHoles", "_iterableToArray", "_unsupportedIterableToArray", "_nonIterableSpread", "o", "_arrayLikeToArray", "n", "_classCallCheck", "_defineProperties", "_createClass", "_inherits", "_setPrototypeOf", "p", "_createSuper", "_isNativeReflectConstruct", "_getPrototypeOf", "_possibleConstructorReturn", "self", "_assertThisInitialized", "e", "fallbackProps", "options", "VictoryPolarAxis", "React", "renderLabel", "name", "style", "_isEmpty", "index", "_assign", "render", "PropTypes", "getScale", "getStyles", "getBaseProps", "import_assign", "import_defaults", "import_react", "_toConsumableArray", "_arrayWithoutHoles", "_iterableToArray", "_unsupportedIterableToArray", "_nonIterableSpread", "o", "_arrayLikeToArray", "n", "fallbackProps", "getAxisProps", "domain", "scale", "React", "_defaults", "range", "getStyles", "getCalculatedProps", "style", "createStringMap", "getDomain", "_assign", "padding", "index", "name", "x", "y", "import_react_fast_compare", "ownKeys", "_objectSpread", "_defineProperty", "fallbackProps", "getProps", "name", "React", "getCalculatedProps", "domain", "scale", "style", "index", "_assign", "_defaults", "_isEmpty", "PropTypes", "isEqual", "import_pick", "import_isFunction", "import_defaults", "import_prop_types", "import_react", "import_orderBy", "import_isPlainObject", "import_uniqueId", "import_defaults", "import_assign", "import_react", "import_prop_types", "import_assign", "import_isPlainObject", "import_react", "import_prop_types", "ownKeys", "_objectSpread", "_defineProperty", "orientation", "sign", "x", "y", "_isPlainObject", "evaluateProps", "id", "style", "_assign", "React", "PropTypes", "_toConsumableArray", "_arrayWithoutHoles", "_iterableToArray", "_unsupportedIterableToArray", "_nonIterableSpread", "o", "_arrayLikeToArray", "n", "_classCallCheck", "_defineProperties", "_createClass", "_inherits", "_setPrototypeOf", "p", "_createSuper", "_isNativeReflectConstruct", "_getPrototypeOf", "_possibleConstructorReturn", "self", "_assertThisInitialized", "e", "fallbackProps", "VictoryTooltip", "_uniqueId", "getPolarOrientation", "getStyles", "s", "_defaults", "style", "_assign", "orientation", "padding", "_isPlainObject", "getCalculatedValues", "getTransform", "x", "y", "sign", "getLabelPadding", "getDimensions", "getWidth", "index", "point", "_orderBy", "React", "render", "PropTypes", "import_isRegExp", "import_includes", "import_isEmpty", "import_isFunction", "import_assign", "import_react_fast_compare", "import_react", "_toConsumableArray", "_arrayWithoutHoles", "_iterableToArray", "_unsupportedIterableToArray", "_nonIterableSpread", "o", "_arrayLikeToArray", "n", "point", "scale", "padding", "x", "y", "React", "data", "name", "continuous", "style", "index", "_assign", "getData", "_isString", "_isRegExp", "regExp", "_includes", "getChildData", "_isFunction", "d", "Delaunay", "_isEmpty", "isEqual", "_throttle", "_excluded", "_toConsumableArray", "_arrayWithoutHoles", "_iterableToArray", "_unsupportedIterableToArray", "_nonIterableSpread", "o", "_arrayLikeToArray", "n", "_objectWithoutProperties", "_objectWithoutPropertiesLoose", "ownKeys", "_objectSpread", "_defineProperty", "_classCallCheck", "_defineProperties", "_createClass", "_inherits", "_setPrototypeOf", "p", "_createSuper", "_isNativeReflectConstruct", "_getPrototypeOf", "_possibleConstructorReturn", "self", "_assertThisInitialized", "e", "getPoint", "point", "_pick", "_defaults", "x", "y", "getStyle", "index", "_isFunction", "style", "orientation", "scale", "datum", "labelProps", "t", "continuous", "name", "React", "getChildren", "PropTypes", "import_react", "import_prop_types", "import_isNil", "import_range", "import_keys", "import_groupBy", "import_assign", "import_defaults", "_toConsumableArray", "_arrayWithoutHoles", "_iterableToArray", "_unsupportedIterableToArray", "_nonIterableSpread", "o", "_arrayLikeToArray", "n", "ownKeys", "_objectSpread", "_defineProperty", "getColorScale", "data", "style", "index", "baseLabelStyles", "_defaults", "getStyles", "getCalculatedValues", "orientation", "defaultStyles", "isHorizontal", "_assign", "fontSize", "size", "_groupBy", "_keys", "d", "padding", "getOffset", "column", "_range", "getAnchors", "getPadding", "x", "y", "fallbackProps", "_sum", "getBaseProps", "name", "color", "_isNil", "dataProps", "_toConsumableArray", "_arrayWithoutHoles", "_iterableToArray", "_unsupportedIterableToArray", "_nonIterableSpread", "o", "_arrayLikeToArray", "n", "_classCallCheck", "_defineProperties", "_createClass", "_inherits", "_setPrototypeOf", "p", "_createSuper", "_isNativeReflectConstruct", "_getPrototypeOf", "_possibleConstructorReturn", "self", "_assertThisInitialized", "e", "fallbackProps", "VictoryLegend", "index", "dataProps", "React", "render", "PropTypes", "getBaseProps", "import_prop_types", "import_react", "import_isNil", "import_assign", "getCalculatedValues", "data", "range", "domain", "scale", "defaultStyles", "style", "getBaseProps", "fallbackProps", "_assign", "padding", "name", "index", "_isNil", "import_assign", "import_react", "import_prop_types", "ownKeys", "_objectSpread", "_defineProperty", "evaluateProps", "id", "style", "_assign", "d", "React", "PropTypes", "ownKeys", "_objectSpread", "_defineProperty", "_classCallCheck", "_defineProperties", "_createClass", "_inherits", "_setPrototypeOf", "o", "p", "_createSuper", "_isNativeReflectConstruct", "_getPrototypeOf", "_possibleConstructorReturn", "self", "_assertThisInitialized", "e", "fallbackProps", "options", "VictoryLineBase", "render", "React", "PropTypes", "getBaseProps", "import_prop_types", "import_react", "import_isNil", "import_values", "import_assign", "_toConsumableArray", "_arrayWithoutHoles", "_iterableToArray", "_unsupportedIterableToArray", "_nonIterableSpread", "o", "_arrayLikeToArray", "n", "data", "point", "_values", "size", "getCalculatedValues", "defaultStyles", "style", "range", "domain", "scale", "getBaseProps", "fallbackProps", "_assign", "padding", "name", "index", "_isNil", "x", "y", "dataProps", "ownKeys", "_objectSpread", "_defineProperty", "_classCallCheck", "_defineProperties", "_createClass", "_inherits", "_setPrototypeOf", "o", "p", "_createSuper", "_isNativeReflectConstruct", "_getPrototypeOf", "_possibleConstructorReturn", "self", "_assertThisInitialized", "e", "fallbackProps", "VictoryScatterBase", "render", "React", "PropTypes", "getBaseProps", "_data", "o", "data", "React", "numberWithCommas", "import_react", "import_axios", "_data", "o", "data", "React", "numberWithCommas", "import_react", "import_axios", "_data", "o", "data", "React", "numberWithCommas", "import_react", "import_axios", "_data", "o", "data", "React", "numberWithCommas", "import_react", "import_axios", "_data", "o", "data", "React", "data", "branches", "token", "branchId", "y", "options", "axios", "React", "o", "import_react", "import_jquery", "import_moment", "import_react_toggle", "ShowComponent", "React", "options", "data", "$", "numberWithCommas", "import_react", "import_jquery", "import_moment", "import_react_toggle", "React", "options", "data", "$", "import_react", "import_axios", "token", "axios", "errors", "data", "o", "React", "a", "numberWithCommas", "import_react", "import_axios", "id", "axios", "Form_default", "errors", "React", "e", "import_react", "import_react", "React", "React", "import_react", "import_react", "id", "React", "Modal_default", "import_react", "React", "React", "import_react", "import_jquery", "import_moment", "import_react_toggle", "ShowComponent", "React", "$", "a", "numberWithCommas", "import_react", "import_react", "errors", "React", "Modal_default", "e", "errors", "token", "React", "e", "import_react", "import_axios", "generate", "token", "csrfToken", "axios", "import_axios", "Generate", "errors", "axios", "date", "generate", "index", "number", "c", "s", "React", "a", "Generate_default", "isArray", "re", "s", "token", "match", "index", "Context", "name", "parse", "self", "escape", "clearCache", "render", "import_jquery", "$modalPrint", "templateErrorList", "$message", "options", "$", "$modalPrint", "templateErrorList", "errors", "import_jquery", "$btnPrintWithdrawalRequest", "$modalPrint", "id", "templateErrorList", "authenticityToken", "$message", "init", "options", "_cacheDom", "_bindEvents", "$", "import_jquery", "init", "_cacheDom", "_bindEvents", "import_jquery", "$btnPrint", "$selectBranch", "$modalPrint", "$message", "authenticityToken", "_cacheDom", "$btnPrint", "$", "$selectBranch", "$modalPrint", "$message", "_bindEvents", "branchId", "authenticityToken", "init", "options", "import_jquery", "o", "execute", "data", "pdfFonts", "_data", "$message", "$btnApprove", "$btnConfirmApprove", "$modalApprove", "$btnDelete", "$btnConfirmDelete", "$modalDelete", "templateErrorList", "$btnDelayAmort", "$btnConfirmProcess", "_id", "_authenticityToken", "_cacheDom", "$message", "$", "$modalApprove", "$modalDelete", "$btnApprove", "$btnConfirmApprove", "$btnDelete", "$btnConfirmDelete", "$btnDelayAmort", "$btnConfirmProcess", "templateErrorList", "_bindEvents", "errors", "_data", "data", "newDate", "book", "init", "import_jquery", "$selectBranch", "$message", "templateErrorList", "_authenticityToken", "_cacheDom", "$", "_bindEvents", "branchId", "errors", "init", "import_jquery", "id", "authenticityToken", "$btnApprove", "$btnConfirmApprove", "$modalApprove", "$btnPrint", "$modalPrint", "$btnExcel", "$message", "templateErrorList", "_urlApprove", "_urlDownload", "_cacheDom", "$modalApprove", "$modalPrint", "$", "$btnApprove", "$btnConfirmApprove", "$btnPrint", "$btnExcel", "$message", "templateErrorList", "_bindEvents", "id", "authenticityToken", "errors", "_urlApprove", "init", "options", "import_jquery", "$btnNewTransaction", "$btnConfirmNewTransaction", "$modalNewTransaction", "$selectBranch", "$selectCenter", "$inputCollectionDate", "$message", "templateErrorList", "branches", "urlBranches", "_authenticityToken", "_cacheDom", "$", "_bindEvents", "branchId", "errors", "init", "import_jquery", "authenticityToken", "$btnApprove", "$btnConfirmApprove", "$modalApprove", "$btnPrint", "$modalPrint", "$btnPrintThermal", "$message", "templateErrorList", "_urlApprove", "_cacheDom", "$modalApprove", "$modalPrint", "$btnPrintThermal", "$", "$btnApprove", "$btnConfirmApprove", "$btnPrint", "$message", "templateErrorList", "_bindEvents", "_urlApprove", "authenticityToken", "errors", "init", "options", "import_jquery", "$btnNewTransaction", "$btnConfirmNewTransaction", "$modalNewTransaction", "$selectBranch", "$inputCollectionDate", "$message", "templateErrorList", "branches", "urlBranches", "_authenticityToken", "_cacheDom", "$", "_bindEvents", "branchId", "errors", "init", "import_jquery", "authenticityToken", "$btnApprove", "$btnConfirmApprove", "$modalApprove", "$btnPrint", "$modalPrint", "$btnPrintThermal", "$selectBook", "$selectCenter", "$message", "templateErrorList", "_urlApprove", "_cacheDom", "$modalApprove", "$modalPrint", "$btnApprove", "$", "$btnConfirmApprove", "$btnPrint", "$btnPrintThermal", "$selectBook", "$selectCenter", "$message", "templateErrorList", "_bindEvents", "authenticityToken", "book", "_urlApprove", "errors", "init", "options", "import_jquery", "$btnNewTransaction", "$btnConfirmNewTransaction", "$modalNewTransaction", "$selectBranch", "$inputCollectionDate", "$message", "templateErrorList", "branches", "urlBranches", "urlCreateDepositCollection", "_authenticityToken", "_cacheDom", "$", "_bindEvents", "branchId", "errors", "init", "import_jquery", "authenticityToken", "$btnApprove", "$btnConfirmApprove", "$modalApprove", "$btnPrint", "$modalPrint", "$btnPrintThermal", "$selectCashManagementTemplate", "$btnConfirmBook", "$selectBook", "$btnConfirmCashManagementTemplate", "$message", "templateErrorList", "_urlApprove", "_urlModifyCashManagementTemplate", "_urlModifyBook", "_cacheDom", "$modalApprove", "$modalPrint", "$btnApprove", "$", "$btnConfirmApprove", "$btnPrint", "$btnPrintThermal", "$selectBook", "$btnConfirmBook", "$selectCashManagementTemplate", "$btnConfirmCashManagementTemplate", "$message", "templateErrorList", "_bindEvents", "book", "authenticityToken", "_urlApprove", "errors", "init", "options", "import_jquery", "$btnNewTransaction", "$btnConfirmNewTransaction", "$modalNewTransaction", "$selectBranch", "$inputCollectionDate", "$message", "templateErrorList", "branches", "urlBranches", "_authenticityToken", "_cacheDom", "$", "_bindEvents", "branchId", "errors", "init", "import_jquery", "authenticityToken", "$btnApprove", "$btnConfirmApprove", "$modalApprove", "$btnPrint", "$modalPrint", "$message", "templateErrorList", "_urlApprove", "_cacheDom", "$modalApprove", "$btnApprove", "$", "$btnConfirmApprove", "$btnPrint", "$modalPrint", "$message", "templateErrorList", "_bindEvents", "_urlApprove", "authenticityToken", "errors", "init", "options", "import_jquery", "_cacheDom", "$", "_bindEvents", "branchId", "init", "options", "import_jquery", "$message", "templateErrorList", "_id", "_memberId", "_authenticityToken", "_cacheDom", "$", "_bindEvents", "data", "errors", "init", "options", "import_jquery", "$btnNewTransaction", "$btnConfirmNewTransaction", "$modalNewTransaction", "$selectBranch", "$selectCenter", "$inputCollectionDate", "$message", "templateErrorList", "_authenticityToken", "_urlSave", "_cacheDom", "$", "_bindEvents", "branchId", "data", "errors", "centers", "init", "options", "import_jquery", "$btnDelete", "$btnApprove", "$btnConfirmApprove", "$modalApprove", "$selectMember", "$inputAmount", "$inputParticular", "$message", "templateErrorList", "$inputPrincipal", "$inputNumInstallments", "$modalPrint", "$printMessage", "$btnPrintPdf", "$btnPrint", "_id", "_options", "_authenticityToken", "_urlDelete", "_urlApprove", "_cacheDom", "$", "_bindEvents", "data", "errors", "init", "options", "import_jquery", "$btnNewTransaction", "$btnConfirmNewTransaction", "$modalNewTransaction", "$selectBranch", "$selectCenter", "$inputCollectionDate", "$message", "templateErrorList", "_options", "_authenticityToken", "_urlFetchCenters", "_urlSave", "_cacheDom", "$", "_bindEvents", "branchId", "data", "errors", "centers", "init", "options", "import_jquery", "$btnAdd", "$btnDelete", "$btnApprove", "$btnConfirmApprove", "$modalApprove", "$btnCheck", "$btnConfirmCheck", "$modalCheck", "$selectMember", "$message", "templateErrorList", "$modalPrint", "$printMessage", "$btnPrintPdf", "$btnPrint", "$inputEffectivityDate", "$inputMaturityDate", "$inputGender", "_id", "_options", "_authenticityToken", "_urlAdd", "_urlDelete", "_urlApprove", "_cacheDom", "$btnAdd", "$", "$btnDelete", "$btnApprove", "$btnConfirmApprove", "$btnCheck", "$btnConfirmCheck", "$modalApprove", "$modalCheck", "_bindEvents", "data", "errors", "inputClientTypeValue", "init", "options", "import_jquery", "$btnNewTransaction", "$btnConfirmNewTransaction", "$modalNewTransaction", "$selectBranch", "$selectCenter", "$inputCollectionDate", "$message", "templateErrorList", "_options", "_authenticityToken", "_urlFetchCenters", "_urlSave", "_cacheDom", "$", "_bindEvents", "branchId", "data", "errors", "centers", "init", "options", "import_jquery", "$btnAdd", "$btnDelete", "$btnApprove", "$btnConfirmApprove", "$modalApprove", "$btnCheck", "$btnConfirmCheck", "$modalCheck", "$btnPending", "$btnConfirmPending", "$selectMember", "$message", "templateErrorList", "$inputLoanProductId", "$inputPrincipal", "$inputTerm", "$inputNumInstallments", "$inputMaturityDate", "$inputEffectiveDate", "$inputClipNumber", "$inputBeneficiary", "_id", "_options", "_authenticityToken", "_urlAdd", "_urlDelete", "_urlApprove", "_urlCheckTransaction", "_cacheDom", "$btnAdd", "$", "$btnDelete", "$btnApprove", "$btnConfirmApprove", "$btnCheck", "$btnConfirmCheck", "$btnPending", "$btnConfirmPending", "$modalApprove", "$modalCheck", "_bindEvents", "data", "errors", "init", "options", "import_jquery", "$btnNewTransaction", "$btnConfirmNewTransaction", "$modalNewTransaction", "$selectBranch", "$inputCollectionDate", "$message", "templateErrorList", "branches", "urlBranches", "_authenticityToken", "_cacheDom", "$", "_bindEvents", "branchId", "errors", "init", "import_jquery", "authenticityToken", "$btnApprove", "$btnConfirmApprove", "$modalApprove", "$btnFinalize", "$btnConfirmFinalize", "$modalFinalize", "$btnPrint", "$modalPrint", "$message", "templateErrorList", "_urlApprove", "_urlFinalize", "_cacheDom", "$btnApprove", "$", "$btnConfirmApprove", "$modalApprove", "$btnFinalize", "$btnConfirmFinalize", "$modalFinalize", "$btnPrint", "$modalPrint", "$message", "templateErrorList", "_bindEvents", "authenticityToken", "errors", "_urlApprove", "init", "options", "import_jquery", "$btnNewTransaction", "$btnConfirmNewTransaction", "$modalNewTransaction", "$selectBranch", "$inputCollectionDate", "$message", "templateErrorList", "branches", "urlBranches", "_authenticityToken", "_cacheDom", "$", "_bindEvents", "branchId", "errors", "init", "import_jquery", "insuranceWithdrawalCollectionId", "authenticityToken", "$btnApprove", "$btnConfirmApprove", "$modalApprove", "$btnPrint", "$modalPrint", "$message", "templateErrorList", "_urlApprove", "_cacheDom", "$btnApprove", "$", "$btnConfirmApprove", "$modalApprove", "$btnPrint", "$modalPrint", "$message", "templateErrorList", "_bindEvents", "insuranceWithdrawalCollectionId", "authenticityToken", "_urlApprove", "errors", "init", "options", "import_jquery", "$modalNew", "$selectBranch", "$message", "templateErrorList", "authenticityToken", "_cacheDom", "$modalNew", "$", "$selectBranch", "$message", "templateErrorList", "_bindEvents", "branchId", "authenticityToken", "errors", "init", "options", "import_jquery", "$btnUpdate", "$modalUpdate", "$btnApprove", "$btnConfirmApprove", "$modalApprove", "id", "templateErrorList", "authenticityToken", "$message", "_cacheDom", "$", "_bindEvents", "errors", "init", "options", "import_jquery", "$btnNew", "$btnConfirmNew", "$modalNew", "$selectBranch", "$selectAccountSubtype", "$inputClosingDate", "$message", "templateErrorList", "authenticityToken", "_cacheDom", "$modalNew", "$btnNew", "$", "$btnConfirmNew", "$selectBranch", "$selectAccountSubtype", "$inputClosingDate", "$message", "templateErrorList", "_bindEvents", "branchId", "authenticityToken", "errors", "init", "options", "import_jquery", "$btnUpdate", "$btnConfirmUpdate", "$modalUpdate", "$btnApprove", "$btnConfirmApprove", "$modalApprove", "id", "templateErrorList", "authenticityToken", "$message", "_cacheDom", "$", "_bindEvents", "errors", "init", "options", "import_jquery", "$btnNew", "$btnConfirmNew", "$modalNew", "$inputStartDate", "$inputEndDate", "$message", "templateErrorList", "authenticityToken", "_cacheDom", "$", "_bindEvents", "errors", "init", "options", "import_jquery", "$btnUpdate", "$btnConfirmUpdate", "$modalUpdate", "$btnApprove", "$btnConfirmApprove", "$modalApprove", "id", "templateErrorList", "authenticityToken", "$btnConfirmBook", "$selectBook", "$message", "_cacheDom", "$", "_bindEvents", "errors", "book", "init", "options", "import_jquery", "$btnNew", "$btnConfirmNew", "$modalNew", "$selectBranch", "$inputClosingDate", "authenticityToken", "$message", "templateErrorList", "init", "options", "_cacheDom", "_bindEvents", "$", "branchId", "errors", "import_jquery", "$btnApprove", "$btnConfirmApprove", "$modalApprove", "authenticityToken", "id", "$message", "templateErrorList", "_urlApprove", "init", "options", "_cacheDom", "_bindEvents", "$", "errors", "import_jquery", "authenticityToken", "$modalNew", "$btnNew", "$btnConfirmNew", "$selectYear", "$selectBranch", "$message", "templateErrorList", "_cacheDom", "$", "_bindEvents", "branchId", "data", "init", "import_jquery", "$modalUpdate", "$modalPrint", "$modalApprove", "$btnUpdate", "$btnConfirmUpdate", "$printMessage", "$btnPrintPdf", "$btnApprove", "$btnConfirmApprove", "$btnPrint", "loader", "id", "templateErrorList", "authenticityToken", "$message", "_cacheDom", "$", "_bindEvents", "errors", "init", "options", "import_jquery", "authenticityToken", "$modalNew", "$btnNew", "$btnConfirmNew", "$selectYear", "$selectBranch", "$message", "templateErrorList", "_cacheDom", "$", "_bindEvents", "branchId", "data", "init", "import_jquery", "$btnUpdate", "$btnConfirmUpdate", "$modalUpdate", "$modalPrint", "$printMessage", "$btnPrint", "loader", "$btnPrintPdf", "$btnApprove", "$btnConfirmApprove", "$modalApprove", "$btnSetRate", "$btnConfirmSetRate", "$modalSetRate", "$inputSavingsRate", "$inputCbuRate", "id", "templateErrorList", "authenticityToken", "$message", "_cacheDom", "$", "_bindEvents", "errors", "init", "options", "import_jquery", "$btnNew", "$btnConfirmNew", "$modalNew", "$selectBranch", "$selectYear", "authenticityToken", "$message", "templateErrorList", "_urlCreate", "init", "options", "_cacheDom", "_bindEvents", "$", "branchId", "errors", "import_jquery", "$btnNew", "$btnConfirmNew", "$modalNew", "$selectBranch", "$selectMonth", "$selectYear", "authenticityToken", "$message", "templateErrorList", "_urlCreate", "init", "options", "_cacheDom", "_bindEvents", "$", "branchId", "errors", "import_jquery", "_authenticityToken", "$btnNew", "$btnConfirmNew", "$selectBranch", "$modalNew", "$message", "templateErrorList", "_cacheDom", "$", "_bindEvents", "branchId", "errors", "init", "options", "import_jquery", "_authenticityToken", "_id", "$btnApprove", "$btnConfirmApprove", "$modalApprove", "$btnDelete", "$btnConfirmDelete", "$modalDelete", "$selectMember", "$inputAmount", "$btnAdd", "$inputParticular", "$displayMember", "$btnPrint", "$message", "templateErrorList", "$modalPrint", "loader", "$printMessage", "_urlApprove", "_urlDelete", "_urlAdd", "_cacheDom", "$modalPrint", "$", "$printMessage", "$modalApprove", "$modalDelete", "$inputParticular", "$btnApprove", "$btnConfirmApprove", "$btnDelete", "$btnConfirmDelete", "$selectMember", "$inputAmount", "$btnAdd", "$displayMember", "$btnPrint", "$message", "loader", "templateErrorList", "_bindEvents", "data", "_id", "_authenticityToken", "errors", "_urlApprove", "_urlAdd", "_urlDelete", "init", "options", "import_jquery", "_authenticityToken", "$btnNew", "$btnConfirmNew", "$selectBranch", "$selectCenter", "$inputReason", "$modalNew", "$message", "templateErrorList", "_urlNew", "_cacheDom", "$", "_bindEvents", "id", "branchId", "errors", "init", "options", "import_jquery", "_authenticityToken", "_id", "$btnApprove", "$btnConfirmApprove", "$modalApprove", "$btnDelete", "$btnConfirmDelete", "$modalDelete", "$message", "templateErrorList", "_urlApprove", "_urlDelete", "_cacheDom", "$modalApprove", "$modalDelete", "$btnApprove", "$", "$btnConfirmApprove", "$btnDelete", "$btnConfirmDelete", "$message", "templateErrorList", "_bindEvents", "data", "_id", "_authenticityToken", "errors", "init", "options", "import_jquery", "$btnNewTransaction", "$btnConfirmNewTransaction", "$modalNewTransaction", "$selectBranch", "$selectCenter", "$inputCollectionDate", "$message", "templateErrorList", "branches", "urlBranches", "_authenticityToken", "_cacheDom", "$", "_bindEvents", "branchId", "errors", "init", "import_jquery", "$btnApprove", "$btnCheck", "$modalApprove", "$modalCheck", "$message", "templateErrorList", "authenticityToken", "_bindEvents", "$", "errors", "_cacheDom", "init", "options", "import_jquery", "memberAccountValidationId", "authenticityToken", "$btnDelete", "$inputReason", "$message", "templateErrorList", "_cacheDom", "$", "_bindEvents", "errors", "deleteMemberId", "$section", "init", "options", "import_jquery", "$btnConfirmApprove", "$btnConfirmCheck", "$btnConfirmDeclined", "$btnConfirmPending", "$btnApprove", "$btnCheck", "$btnDeclined", "$btnPending", "$btnConfirmBook", "$errors", "$errorsTemplate", "urlApproveTransaction", "urlCheckTransaction", "urlModifyBook", "urlModifyParticular", "urlSaveCheckNumber", "urlSaveCheckVoucherNumber", "urlSavePayee", "urlAddTransactionFee", "$modalApprove", "$modalCheck", "$modalDeclined", "$modalErrorsApproval", "$modalSuccessApproval", "$modalControls", "$successTemplate", "$confirmationModal", "$message", "templateErrorList", "authenticityToken", "$selectBook", "$inputTextParticular", "$btnConfirmParticular", "$btnConfirmTransactionFee", "$inputTextTransactionFee", "$inputTextPayee", "$btnConfirmPayee", "$inputTextCheckNumber", "$btnConfirmCheckNumber", "$inputTextCheckVoucherNumber", "$btnConfirmCheckVoucherNumber", "$btnPrint", "$modalPrint", "$printMessage", "loader", "_bindEvents", "$", "errors", "book", "accountingEntryId", "_cacheDom", "init", "options", "import_jquery", "$status", "authenticityToken", "data", "d", "_bindEvents", "_cacheDom", "$", "init", "import_jquery", "$btnApprove", "$btnConfirmApprove", "$btnPrint", "$modalApprove", "$modalPrint", "$message", "$printMessage", "templateErrorList", "loader", "_authenticityToken", "_cacheDom", "$", "_bindEvents", "errors", "e", "accountingEntryId", "init", "import_jquery", "$downloadBtn", "$branchSelect", "_cacheDom", "$", "encodeQueryData", "data", "d", "_bindEvents", "init", "import_jquery", "$downloadBtn", "$asOf", "$brachSelect", "authenticityToken", "_cacheDom", "$", "encodeQueryData", "data", "d", "_bindEvents", "init", "import_jquery", "$btnDelete", "$btnConfirmDelete", "$modalDelete", "$inputMaintainingBalance", "$message", "id", "authenticityToken", "templateErrorList", "_urlDelete", "_cacheDom", "$", "_bindEvents", "errors", "init", "options", "import_jquery", "$message", "authenticityToken", "init", "_cacheDom", "_bindEvents", "$", "$message", "import_jquery", "init", "_cacheDom", "_bindEvents", "$", "import_jquery", "$dataTable", "init", "_cacheDom", "_bindEvents", "$", "import_jquery", "$dataTable", "init", "_cacheDom", "_bindEvents", "$", "import_jquery", "$btnNew", "$btnConfirmNew", "$modalNew", "$message", "templateErrorList", "authenticityToken", "_cacheDom", "$", "_bindEvents", "name", "errors", "init", "options", "import_jquery", "$btnDelete", "$btnConfirmDelete", "$modalDelete", "$message", "id", "authenticityToken", "templateErrorList", "_cacheDom", "$", "_bindEvents", "errors", "init", "options", "import_jquery", "$btnPrint", "$modalPrint", "$message", "authenticityToken", "_cacheDom", "$", "_bindEvents", "id", "init", "options", "import_jquery", "memberSharesId", "authenticityToken", "_cacheDom", "$", "_bindEvents", "init", "options", "import_jquery", "$btnPrint", "$modalPrint", "$printMessage", "loader", "_cacheDom", "$", "_bindEvents", "branchId", "init", "options", "import_jquery", "encodeQueryData", "data", "d", "init", "$", "import_jquery", "authenticityToken", "$modalNew", "$btnNew", "$btnConfirmNew", "$selectBranch", "$message", "templateErrorList", "_cacheDom", "$", "_bindEvents", "branchId", "data", "init", "import_jquery", "$startDate", "$endDate", "encodeQueryData", "data", "d", "_cacheDom", "$", "init", "import_jquery", "authenticityToken", "$modalNew", "$btnNew", "$btnConfirmNew", "$selectBranch", "$inputAsOf", "$message", "templateErrorList", "_cacheDom", "$", "_bindEvents", "branchId", "data", "errors", "init", "import_jquery", "authenticityToken", "$modalNew", "$btnNew", "$btnConfirmNew", "$selectBranch", "$inputAsOf", "$message", "templateErrorList", "_cacheDom", "$", "_bindEvents", "branchId", "data", "errors", "init", "import_jquery", "authenticityToken", "$modalNew", "$btnNew", "$btnConfirmNew", "$selectBranch", "$inputAsOf", "$message", "templateErrorList", "_urlQueue", "_userId", "_xKoinsAppAuthSecret", "_cacheDom", "$", "_bindEvents", "branchId", "data", "errors", "init", "import_jquery", "id", "authenticityToken", "$modalUpdate", "$btnUpdate", "$btnConfirmUpdate", "$message", "templateErrorList", "_cacheDom", "$", "_bindEvents", "data", "init", "import_jquery", "authenticityToken", "$modalNew", "$btnNew", "$btnConfirmNew", "$selectBranch", "$inputAsOf", "$message", "templateErrorList", "_urlQueue", "_userId", "_xKoinsAppAuthSecret", "_cacheDom", "$", "_bindEvents", "branchId", "memberStatus", "data", "errors", "init", "import_jquery", "id", "authenticityToken", "$modalUpdate", "$btnUpdate", "$btnConfirmUpdate", "$message", "templateErrorList", "_cacheDom", "$", "_bindEvents", "data", "init", "import_jquery", "authenticityToken", "$modalNew", "$btnNew", "$btnConfirmNew", "$selectBranch", "$inputAsOf", "$message", "templateErrorList", "_cacheDom", "$", "_bindEvents", "branchId", "data", "init", "import_jquery", "id", "authenticityToken", "$modalUpdate", "$btnUpdate", "$btnConfirmUpdate", "$message", "templateErrorList", "_cacheDom", "$", "_bindEvents", "data", "init", "import_jquery", "authenticityToken", "$modalNew", "$btnNew", "$btnConfirmNew", "$selectBranch", "$inputAsOf", "$message", "templateErrorList", "_urlQueue", "_userId", "_xKoinsAppAuthSecret", "_cacheDom", "$", "_bindEvents", "branchId", "data", "init", "import_jquery", "id", "authenticityToken", "$dataTable", "$message", "templateErrorList", "_cacheDom", "$", "_bindEvents", "init", "import_jquery", "authenticityToken", "$modalNew", "$btnNew", "$btnConfirmNew", "$selectBranch", "$inputAsOf", "$message", "templateErrorList", "_cacheDom", "$", "_bindEvents", "branchId", "data", "init", "import_jquery", "id", "authenticityToken", "$dataTable", "$message", "templateErrorList", "_cacheDom", "$", "_bindEvents", "init", "import_jquery", "authenticityToken", "$modalNew", "$btnNew", "$btnConfirmNew", "$selectBranch", "$inputAsOf", "$message", "templateErrorList", "_cacheDom", "$", "_bindEvents", "branchId", "data", "init", "import_jquery", "id", "authenticityToken", "$dataTable", "$message", "templateErrorList", "_cacheDom", "$", "_bindEvents", "init", "import_jquery", "authenticityToken", "$modalNew", "$btnNew", "$btnConfirmNew", "$selectBranch", "$selectBook", "$inputStartDate", "$inputEndDate", "$message", "templateErrorList", "_cacheDom", "$", "_bindEvents", "branchId", "book", "data", "errors", "init", "import_jquery", "authenticityToken", "$modalNew", "$btnNew", "$btnConfirmNew", "$selectBranch", "$inputStartDate", "$inputEndDate", "$message", "templateErrorList", "_cacheDom", "$", "_bindEvents", "branchId", "data", "errors", "init", "import_jquery", "import_select2", "authenticityToken", "$modalNew", "$btnNew", "$btnConfirmNew", "$selectBranch", "$inputStartDate", "$inputEndDate", "$message", "templateErrorList", "_cacheDom", "$", "_bindEvents", "branchId", "data", "errors", "init", "import_jquery", "authenticityToken", "$modalNew", "$btnNew", "$btnConfirmNew", "$selectBranch", "$inputStartDate", "$inputEndDate", "id", "$message", "templateErrorList", "_cacheDom", "$", "_bindEvents", "branchId", "data", "errors", "init", "import_jquery", "authenticityToken", "$modalNew", "$btnNew", "$btnConfirmNew", "$selectBranch", "$inputAsOf", "$message", "templateErrorList", "_cacheDom", "$", "_bindEvents", "branchId", "data", "errors", "init", "import_jquery", "authenticityToken", "$modalNew", "$btnNew", "$btnConfirmNew", "$selectBranch", "$inputAsOf", "$message", "templateErrorList", "_cacheDom", "$", "_bindEvents", "branchId", "data", "errors", "e", "init", "import_jquery", "authenticityToken", "$modalNew", "$btnNew", "$btnConfirmNew", "$selectBranch", "$inputAsOf", "$message", "templateErrorList", "_cacheDom", "$", "_bindEvents", "branchId", "x", "data", "init", "import_jquery", "authenticityToken", "$modalNew", "$btnNew", "$btnConfirmNew", "$selectBranch", "$inputStartDate", "$inputEndDate", "$message", "templateErrorList", "_cacheDom", "$", "_bindEvents", "branchId", "data", "init", "import_jquery", "$btnExcel", "$branchSelect", "_cacheDom", "$", "encodeQueryData", "data", "d", "_bindEvents", "init", "import_jquery", "$btnExcel", "$filterStartDate", "$filterEndDate", "$branchSelect", "_cacheDom", "$", "encodeQueryData", "data", "d", "_bindEvents", "init", "import_jquery", "$btnPrint", "$filterStartDate", "$filterEndDate", "$branchSelect", "_cacheDom", "$", "encodeQueryData", "data", "d", "_bindEvents", "init", "import_jquery", "$downloadBtn", "$startDate", "$endDate", "$branchSelect", "_cacheDom", "$", "encodeQueryData", "data", "d", "_bindEvents", "init", "import_jquery", "$generateBtn", "$downloadBtn", "$branchSelect", "$startDate", "$endDate", "$message", "_cacheDom", "$generateBtn", "$", "$downloadBtn", "$branchSelect", "_bindEvents", "data", "branchId", "memberStatus", "insuranceStatus", "memberType", "init", "import_jquery", "$downloadBtn", "$startDate", "$endDate", "$brachSelect", "_cacheDom", "$", "encodeQueryData", "data", "d", "_bindEvents", "init", "import_jquery", "$downloadBtn", "$startDate", "$endDate", "$brachSelect", "_cacheDom", "$", "_bindEvents", "data", "encodeQueryData", "d", "init", "import_jquery", "$downloadBtn", "$startDate", "$endDate", "$branchSelect", "encodeQueryData", "data", "d", "_cacheDom", "$", "_bindEvents", "init", "import_jquery", "$downloadBtn", "$startDate", "$endDate", "$message", "_cacheDom", "$", "$downloadBtn", "_loadDefaults", "_bindEvents", "data", "init", "import_jquery", "$searchBtn", "$downloadBtn", "$startDate", "$endDate", "$message", "_cacheDom", "$", "$searchBtn", "$downloadBtn", "_loadDefaults", "_bindEvents", "data", "init", "import_jquery", "$searchBtn", "$downloadBtn", "$startDate", "$endDate", "$message", "_cacheDom", "$", "$searchBtn", "$downloadBtn", "_loadDefaults", "_bindEvents", "data", "init", "import_jquery", "$downloadBtn", "$startDate", "$endDate", "_cacheDom", "$", "encodeQueryData", "data", "d", "_bindEvents", "init", "import_jquery", "$downloadBtn", "$startDate", "$endDate", "$brachSelect", "_cacheDom", "$", "encodeQueryData", "data", "d", "_bindEvents", "init", "import_jquery", "$searchBtn", "$downloadBtn", "$branchSelect", "$asOf", "_cacheDom", "$searchBtn", "$", "$downloadBtn", "$branchSelect", "_bindEvents", "branchId", "data", "init", "import_jquery", "$btnExcel", "$filterStartDate", "$filterEndDate", "$branchSelect", "_cacheDom", "$", "encodeQueryData", "data", "d", "_bindEvents", "init", "import_jquery", "$btnExcel", "$branchSelect", "_cacheDom", "$btnExcel", "$", "encodeQueryData", "data", "d", "_bindEvents", "init", "import_jquery", "$btnExcel", "$StartDate", "$EndDate", "$ApprovalDateFrom", "$ApprovalDateTo", "$branchSelect", "_cacheDom", "$btnExcel", "$", "$StartDate", "$EndDate", "$ApprovalDateFrom", "$ApprovalDateTo", "encodeQueryData", "data", "d", "_bindEvents", "init", "import_jquery", "$downloadBtn", "$startDate", "$endDate", "$branchSelect", "_cacheDom", "$", "encodeQueryData", "data", "d", "_bindEvents", "init", "import_jquery", "$downloadBtn", "$startDate", "$endDate", "$branchSelect", "$typeOfClaim", "_cacheDom", "$", "encodeQueryData", "data", "d", "_bindEvents", "init", "import_jquery", "$downloadBtn", "$branchSelect", "_cacheDom", "$", "encodeQueryData", "data", "d", "_bindEvents", "init", "import_jquery", "$downloadBtn", "$startDate", "$endDate", "$branchSelect", "$insuranceStatusSelect", "_cacheDom", "$", "encodeQueryData", "data", "d", "_bindEvents", "init", "import_jquery", "$downloadBtn", "$startDate", "$endDate", "$branchSelect", "$typeOfClaim", "_cacheDom", "$", "encodeQueryData", "data", "d", "_bindEvents", "init", "import_jquery", "$btnApprove", "$btnConfirmApprove", "$modalApprove", "$message", "templateErrorList", "_options", "_id", "_authenticityToken", "_urlApprove", "_cacheDom", "$", "_bindEvents", "data", "errors", "e", "init", "options", "import_jquery", "$btnNewTransaction", "$btnConfirmNewTransaction", "$modalNewTransaction", "$selectBranch", "$inputCollectionDate", "$message", "templateErrorList", "branches", "urlBranches", "_authenticityToken", "_cacheDom", "$", "_bindEvents", "branchId", "errors", "init", "import_jquery", "id", "authenticityToken", "$btnApprove", "$btnConfirmApprove", "$modalApprove", "$btnPrint", "$modalPrint", "$message", "templateErrorList", "_urlApprove", "_cacheDom", "$btnApprove", "$", "$btnConfirmApprove", "$modalApprove", "$btnPrint", "$modalPrint", "$message", "templateErrorList", "_bindEvents", "id", "authenticityToken", "_urlApprove", "errors", "init", "options", "import_jquery", "$btnNewTransaction", "$modalNewTransaction", "$selectBranch", "$selectCenter", "$selectMember", "$typeOfClaim", "$btnDailyReport", "$message", "templateErrorList", "branches", "urlBranches", "_authenticityToken", "_cacheDom", "$btnNewTransaction", "$", "$modalNewTransaction", "$btnDailyReport", "$selectBranch", "$selectCenter", "$selectMember", "$typeOfClaim", "$message", "templateErrorList", "_bindEvents", "branchId", "branches", "init", "import_jquery", "import_select2", "select2", "$", "$modalNew", "$modalDelete", "$modalProcess", "$selectBranch", "$selectCenter", "$selectMember", "$inputDateInitialized", "$inputNumberOfDays", "$inputReason", "$btnNew", "$btnDelete", "$btnProcess", "$btnConfirmNew", "$btnConfirmDelete", "$btnConfirmProcess", "$message", "templateErrorList", "_authenticityToken", "_members", "_centerId", "_memberId", "_urlCreate", "_urlDelete", "_urlProcess", "init", "options", "_cacheDom", "_bindEvents", "_fetchLoans", "o", "errors", "c", "import_jquery", "authenticityToken", "$btnSave", "$message", "templateErrorList", "_cacheDom", "$", "_bindEvents", "errors", "init", "import_jquery", "$modalNew", "$inputStartDate", "$inputEndDate", "$selectBranch", "$selectAccountingFund", "$btnNew", "$btnConfirmNew", "$message", "templateErrorList", "_authenticityToken", "_xKoinsAppAuthSecret", "_urlCreate", "_userId", "init", "options", "_cacheDom", "_bindEvents", "$", "branchId", "errors", "import_jquery", "$modalDelete", "$btnDelete", "$btnConfirmDelete", "$message", "templateErrorList", "_authenticityToken", "_urlDelete", "_id", "_xKoinsAppAuthSecret", "_userId", "init", "options", "_cacheDom", "_bindEvents", "$", "errors", "import_jquery", "$modalNew", "$inputStartDate", "$inputEndDate", "$selectBranch", "$selectAccountingFund", "$btnNew", "$btnConfirmNew", "$message", "templateErrorList", "_authenticityToken", "_xKoinsAppAuthSecret", "_urlCreate", "_userId", "init", "options", "_cacheDom", "_bindEvents", "$", "branchId", "errors", "import_jquery", "$modalDelete", "$btnDelete", "$btnConfirmDelete", "$message", "templateErrorList", "_authenticityToken", "_urlDelete", "_id", "_xKoinsAppAuthSecret", "_userId", "init", "options", "_cacheDom", "_bindEvents", "$", "errors", "import_jquery", "_cacheDom", "$", "_bindEvents", "init", "options", "import_jquery", "import_select2", "select2", "$", "$modalNew", "$modalDelete", "$modalProcess", "$modalBatchProcess", "$selectBranch", "$selectCenter", "$selectMember", "$selectProcessCenter", "$selectLoans", "$inputDateInitialized", "$inputNumberOfDays", "$inputStartDate", "$inputEndDate", "$inputReason", "$btnNew", "$btnDelete", "$btnProcess", "$btnBatchProcess", "$btnConfirmNew", "$btnConfirmDelete", "$btnConfirmProcess", "$btnConfirmBatchProcess", "$message", "templateErrorList", "_authenticityToken", "_centers", "_members", "_loans", "_loanIds", "_branchId", "_centerId", "_memberId", "_moratoriumId", "_urlCreate", "_urlDelete", "_urlProcess", "_urlBatchProcess", "_urlCenters", "_urlLoans", "init", "options", "_cacheDom", "_bindEvents", "_loadCenterOptions", "_fetchLoans", "o", "errors", "c", "import_jquery", "import_select2", "select2", "$", "$modalNew", "$modalDelete", "$modalProcess", "$modalBatchProcess", "$selectBranch", "$selectCenter", "$selectMember", "$selectProcessCenter", "$selectLoans", "$inputDateInitialized", "$inputNumberOfDays", "$inputStartDate", "$inputEndDate", "$inputNumberOfMoratoriumDays", "$selectAccruedType", "$inputReason", "$btnNew", "$btnDelete", "$btnProcess", "$btnBatchProcess", "$btnConfirmNew", "$btnConfirmDelete", "$btnConfirmProcess", "$btnConfirmBatchProcess", "$message", "templateErrorList", "_authenticityToken", "_centers", "_members", "_loans", "_loanIds", "_branchId", "_centerId", "_memberId", "_moratoriumId", "_urlCreate", "_urlDelete", "_urlProcess", "_urlBatchProcess", "_urlCenters", "_urlLoans", "init", "options", "_cacheDom", "_bindEvents", "_loadCenterOptions", "_fetchLoans", "o", "errors", "c", "import_jquery", "$btnNewTransaction", "$btnConfirmNewTransaction", "$modalNewTransaction", "$selectBranch", "$selectCenter", "$selectProcessCenter", "$inputDateInitialized", "$inputNumberOfDays", "$inputReason", "$btnConfirmDelete", "$btnConfirmProcess", "$btnConfirmBatchProcess", "$message", "templateErrorList", "_authenticityToken", "_centers", "_members", "_branchId", "_centerId", "_urlCreate", "_urlCenters", "init", "options", "_authenticityToken", "_cacheDom", "_bindEvents", "$modalNewTransaction", "$selectBranch", "$", "$selectCenter", "$selectProcessCenter", "$inputDateInitialized", "$inputNumberOfDays", "$inputReason", "$btnNewTransaction", "$btnConfirmNewTransaction", "$btnConfirmDelete", "$btnConfirmProcess", "$btnConfirmBatchProcess", "$message", "templateErrorList", "_loadCenterOptions", "_centers", "_centerId", "_bindEvents", "$selectCenter", "_centerId", "$selectBranch", "$", "_urlCenters", "_centers", "_members", "_loadCenterOptions", "$btnNewTransaction", "$modalNewTransaction", "$btnConfirmNewTransaction", "_branchId", "$message", "_urlCreate", "_authenticityToken", "errors", "templateErrorList", "init", "import_jquery", "import_select2", "select2", "$", "$modalDelete", "$modalApproveTransaction", "$modalProcess", "$modalBatchProcess", "$modalZeroOut", "$selectBranch", "$selectCenter", "$selectMember", "$selectProcessCenter", "$selectLoans", "$inputCollectionDate", "$inputNumberOfDays", "$inputStartDate", "$inputEndDate", "$inputNumberOfMoratoriumDays", "$selectAccruedType", "$inputReason", "$btnNew", "$btnDelete", "$btnProcess", "$btnBatchProcess", "$btnConfirmNew", "$btnConfirmDelete", "$btnConfirmProcess", "$btnConfirmBatchProcess", "$message", "templateErrorList", "_authenticityToken", "$btnApprove", "_id", "$btnAddParticular", "$inputParticular", "$inputOrNumber", "$inputArNumber", "$inputBatchNumberOfDays", "$selectBatchBranch", "$inputDateInitializedCutOff", "$batchStartDate", "$batchEndDate", "$batchAccruedType", "_centers", "_members", "_loans", "_loanIds", "_branchId", "_centerId", "_memberId", "_moratoriumId", "_memberAccountId", "_urlCreate", "_urlDelete", "_urlProcess", "_urlBatchProcess", "_urlCenters", "_urlLoans", "init", "options", "_authenticityToken", "_cacheDom", "_bindEvents", "$modalApproveTransaction", "$modalDelete", "$modalProcess", "$modalZeroOut", "$selectBranch", "$", "$selectCenter", "$selectMember", "$selectProcessCenter", "$selectLoans", "$inputNumberOfDays", "$inputStartDate", "$inputEndDate", "$inputNumberOfMoratoriumDays", "$selectAccruedType", "$inputReason", "$btnNew", "$btnDelete", "$btnProcess", "$btnBatchProcess", "$btnConfirmNew", "$btnConfirmDelete", "$btnConfirmProcess", "$btnConfirmBatchProcess", "$message", "$btnApprove", "$btnAddParticular", "$inputParticular", "$inputOrNumber", "$inputArNumber", "$inputBatchNumberOfDays", "$selectBatchBranch", "$inputDateInitializedCutOff", "$batchStartDate", "$batchEndDate", "$batchAccruedType", "$inputCollectionDate", "templateErrorList", "_loadCenterOptions", "_centers", "_centerId", "_members", "_memberId", "_fetchLoans", "_loans", "o", "$modalBatchProcess", "errors", "_id", "_moratoriumId", "_memberAccountId", "e", "_branchId", "_loanIds", "import_jquery", "import_select2", "select2", "$", "$modalNew", "$modalDelete", "$modalProcess", "$modalBatchProcess", "$selectBranch", "$selectCenter", "$selectMember", "$selectProcessCenter", "$selectLoans", "$inputDateInitialized", "$inputNumberOfDays", "$inputStartDate", "$inputEndDate", "$inputNumberOfMoratoriumDays", "$selectAccruedType", "$inputReason", "$btnNew", "$btnDelete", "$btnProcess", "$btnBatchProcess", "$btnConfirmNew", "$btnConfirmDelete", "$btnConfirmProcess", "$btnConfirmBatchProcess", "$message", "templateErrorList", "_authenticityToken", "$inputBatchNumberOfDays", "$selectBatchBranch", "$inputDateInitializedCutOff", "$batchStartDate", "$batchEndDate", "$batchAccruedType", "_centers", "_members", "_loans", "_loanIds", "_branchId", "_centerId", "_memberId", "_moratoriumId", "_urlCreate", "_urlDelete", "_urlProcess", "_urlBatchProcess", "_urlCenters", "_urlLoans", "init", "options", "_cacheDom", "_bindEvents", "_loadCenterOptions", "_fetchLoans", "o", "errors", "c", "import_jquery", "authenticityToken", "$btnApprove", "$btnConfirmApprove", "$modalApprove", "$btnDelete", "$modalDelete", "$btnConfirmDelete", "$btnPrint", "$modalPrint", "$message", "templateErrorList", "_urlApprove", "_urlDelete", "_cacheDom", "$modalApprove", "$modalDelete", "$btnApprove", "$", "$btnConfirmApprove", "$btnDelete", "$btnConfirmDelete", "$btnPrint", "$message", "templateErrorList", "_bindEvents", "$modalPrint", "authenticityToken", "_urlApprove", "errors", "init", "options", "import_jquery", "authenticityToken", "_urlSave", "_userId", "_xKoinsAppAuthSecret", "$modalNew", "$btnNew", "$btnConfirmNew", "$inputAsOf", "$selectBranch", "$message", "templateErrorList", "_cacheDom", "$", "_bindEvents", "branchId", "data", "errors", "init", "options", "import_jquery", "$selectBranch", "$inputAsOf", "$message", "templateErrorList", "_userId", "_xKoinsAppAuthSecret", "_cacheDom", "$", "_bindEvents", "branchId", "data", "errors", "init", "import_jquery", "$btnNew", "$btnConfirmNew", "$selectBranch", "$selectMonth", "$selectYear", "$modalNew", "$message", "$xFormControl", "templateErrorList", "templateSuccessMessage", "_urlCreate", "_userId", "_xKoinsAppAuthSecret", "_cacheDom", "$", "_bindEvents", "branchId", "data", "errors", "init", "options", "import_jquery", "import_select2", "select2", "$", "$selectYear", "$selectAccountingCode", "$xFormControl", "$message", "templateErrorList", "templateSuccessMessage", "_userId", "_xKoinsAppAuthSecret", "_cacheDom", "data", "d", "index", "_bindEvents", "errors", "init", "options", "import_jquery", "import_pdfmake", "import_vfs_fonts", "_data", "fontSizeDefault", "styleBoldDefault", "styleEmphDefault", "styleEmphSecondary", "styleSmall", "styleCellLabel", "styleCellValue", "_data", "buildHeader", "build", "fontSizeDefault", "execute", "data", "pdfMake", "pdfFonts", "_id", "_authenticityToken", "_data", "$modalProcess", "$modalReject", "$modalVerify", "$btnVerify", "$btnConfirmVerify", "$btnProcess", "$btnConfirmProcess", "$btnReject", "$btnConfirmReject", "$btnDownloadForm", "$message", "templateErrorList", "templateCenterOptions", "$selectBranch", "$selectCenter", "$inputReason", "_cacheDom", "$modalProcess", "$modalReject", "$modalVerify", "$btnProcess", "$", "$btnConfirmProcess", "$btnReject", "$btnConfirmReject", "$btnVerify", "$btnConfirmVerify", "$btnDownloadForm", "$inputReason", "$selectBranch", "$selectCenter", "$message", "templateErrorList", "templateCenterOptions", "_bindEvents", "branchId", "_id", "_authenticityToken", "errors", "_data", "pdfMake", "init", "options", "import_jquery", "import_pdfmake", "import_vfs_fonts", "pdfMake", "pdfFonts", "_id", "_authenticityToken", "$modalReject", "$modalVerify", "$btnVerify", "$btnConfirmVerify", "$btnReject", "$btnConfirmReject", "$btnDownloadForm", "$btnReject", "$modalReject", "$btnApprove", "$btnConfirmAmount", "$btnConfirmReject", "$btnCheck", "$modalCheck", "$btnConfirmCheck", "_cacheDom", "$modalVerify", "$", "$btnVerify", "$btnConfirmVerify", "$btnDownloadForm", "_bindEvents", "_id", "_authenticityToken", "id", "init", "options", "import_jquery", "import_pdfmake", "import_vfs_fonts", "pdfMake", "pdfFonts", "_id", "_authenticityToken", "$btnSave", "$modalSave", "$btnConfirmSave", "_cacheDom", "$", "_bindEvents", "_id", "_authenticityToken", "init", "options", "import_jquery", "import_select2", "select2", "$", "$modalNew", "$modalDelete", "$modalProcess", "$modalBatchProcess", "$selectBranch", "$selectCenter", "$selectMember", "$selectProcessCenter", "$selectLoans", "$inputCollectionDate", "$inputNumberOfDays", "$inputStartDate", "$inputEndDate", "$inputNumberOfMoratoriumDays", "$selectAccruedType", "$inputReason", "$btnNew", "$btnDelete", "$btnProcess", "$btnBatchProcess", "$btnConfirmNew", "$btnConfirmDelete", "$btnConfirmProcess", "$btnConfirmBatchProcess", "$message", "templateErrorList", "_authenticityToken", "$inputBatchNumberOfDays", "$selectBatchBranch", "$inputDateInitializedCutOff", "$batchStartDate", "$batchEndDate", "$batchAccruedType", "_centers", "_members", "_loans", "_loanIds", "_branchId", "_centerId", "_memberId", "_moratoriumId", "_urlCreate", "_urlDelete", "_urlProcess", "_urlBatchProcess", "_urlCenters", "_urlLoans", "init", "options", "_cacheDom", "_bindEvents", "_loadCenterOptions", "_fetchLoans", "o", "errors", "import_jquery", "import_select2", "select2", "$", "$modalDelete", "$modalProcess", "$selectBranch", "$selectCenter", "$selectMember", "$selectProcessCenter", "$selectLoans", "$inputCollectionDate", "$inputNumberOfDays", "$inputStartDate", "$inputEndDate", "$inputNumberOfMoratoriumDays", "$selectAccruedType", "$inputReason", "$btnNew", "$btnDelete", "$btnProcess", "$btnBatchProcess", "$btnConfirmNew", "$btnConfirmDelete", "$btnConfirmProcess", "$btnConfirmBatchProcess", "$btnAdd", "$btnRemove", "$btnConfirmRemove", "$btnAddParticular", "$inputParticular", "$btnAddOr", "$inputOrNumber", "$btnAddAr", "$inputArNumber", "$selectBook", "$message", "templateErrorList", "_authenticityToken", "$inputBatchNumberOfDays", "$selectBatchBranch", "$inputDateInitializedCutOff", "$batchStartDate", "$batchEndDate", "$batchAccruedType", "$modalCheck", "$btnConfirmCheck", "$labelMemberName", "$labeMemberLoanName", "_loanIds", "_branchId", "_centerId", "_memberId", "_moratoriumId", "_memberAccountId", "_dataStoreId", "_loanAmount", "_urlCreate", "_urlDelete", "_urlProcess", "_urlAddParticular", "_urlAddOr", "_urlAddAr", "init", "options", "_authenticityToken", "_cacheDom", "_bindEvents", "$modalProcess", "$modalCheck", "$selectBranch", "$", "$selectCenter", "$selectProcessCenter", "$inputNumberOfDays", "$inputStartDate", "$inputEndDate", "$inputNumberOfMoratoriumDays", "$selectAccruedType", "$inputReason", "$btnNew", "$btnRemove", "$btnDelete", "$btnProcess", "$btnBatchProcess", "$btnConfirmNew", "$btnConfirmDelete", "$btnConfirmProcess", "$btnConfirmBatchProcess", "$message", "$inputBatchNumberOfDays", "$selectBatchBranch", "$inputDateInitializedCutOff", "$batchStartDate", "$batchEndDate", "$batchAccruedType", "$inputCollectionDate", "$btnAdd", "$selectMember", "$selectLoans", "$btnConfirmRemove", "$btnAddParticular", "$inputParticular", "$btnAddOr", "$inputOrNumber", "$btnAddAr", "$inputArNumber", "$btnConfirmCheck", "$labelMemberName", "$labeMemberLoanName", "$selectBook", "templateErrorList", "_bindEvents", "$selectMember", "_memberId", "$", "_dataStoreId", "$selectBook", "$message", "$btnConfirmDelete", "$modalCheck", "$btnConfirmCheck", "errors", "templateErrorList", "$btnConfirmProcess", "$btnAddAr", "$inputArNumber", "_urlAddAr", "$btnAddOr", "$inputOrNumber", "_urlAddOr", "$btnAddParticular", "$inputParticular", "_urlAddParticular", "$btnAdd", "$selectLoans", "_authenticityToken", "$btnProcess", "_moratoriumId", "$modalProcess", "_urlProcess", "$btnDelete", "$modalDelete", "_urlDelete", "$btnConfirmRemove", "_memberAccountId", "$btnRemove", "$labeMemberLoanName", "$inputStartDate", "$btnNew", "$labelMemberName", "$btnConfirmNew", "e", "_loanAmount", "_branchId", "$selectBranch", "_centerId", "$selectCenter", "$inputCollectionDate", "$inputNumberOfDays", "$inputReason", "$inputEndDate", "$inputNumberOfMoratoriumDays", "$selectAccruedType", "_loanIds", "_urlCreate", "init", "import_jquery", "import_pdfmake", "import_vfs_fonts", "pdfMake", "pdfFonts", "_data", "$message", "templateErrorList", "$btnApproveReverseLoan", "$btnAddParticular", "$btnConfirmReverseLoan", "_urlReverse", "_id", "_authenticityToken", "_cacheDom", "$", "_bindEvents", "errors", "init", "import_jquery", "authenticityToken", "$modalNew", "$btnNew", "$btnConfirmNew", "$selectBranch", "$inputAsOf", "$startDate", "$endDate", "$selectBranch2", "$message", "templateErrorList", "_urlQueue", "_userId", "_xKoinsAppAuthSecret", "$selectBranch3", "$inputAsOf2", "$selectLoanProduct", "_cacheDom", "$modalNew", "$", "$btnNew", "$btnConfirmNew", "$selectBranch2", "$startDate", "$endDate", "$selectBranch", "$inputAsOf", "$message", "templateErrorList", "encodeQueryData", "data", "d", "_bindEvents", "branch", "branchId", "init", "authenticityToken", "_urlQueue", "_userId", "_xKoinsAppAuthSecret", "import_jquery", "authenticityToken", "$modalNew", "$btnNew", "$btnConfirmNew", "$selectYear", "$selectBranch", "$message", "templateErrorList", "_cacheDom", "$", "_bindEvents", "branchId", "data", "init", "import_jquery", "$modalPrint", "$printMessage", "$btnPrintPdf", "$btnPrint", "loader", "id", "templateErrorList", "authenticityToken", "$message", "_cacheDom", "$", "_bindEvents", "init", "options", "import_jquery", "authenticityToken", "$modalNew", "$btnNew", "$btnConfirmNew", "errors", "$selectYear", "$selectBranch", "$message", "templateErrorList", "_cacheDom", "$", "_bindEvents", "branchId", "data", "init", "import_jquery", "loader", "id", "templateErrorList", "authenticityToken", "$btnExcel", "$message", "_urlDownload", "_cacheDom", "$", "_bindEvents", "init", "options", "import_jquery", "authenticityToken", "$modalNew", "$btnNew", "$btnConfirmNew", "errors", "$selectBranch", "$message", "templateErrorList", "_cacheDom", "$", "_bindEvents", "branchId", "data", "init", "import_jquery", "_authenticityToken", "_id", "$btnApprove", "$btnConfirmApprove", "$modalApprove", "$btnDeleteMember", "$btnConfirmDeleteMember", "$modalDeleteMember", "$selectMember", "$selectCenter", "$btnAdd", "$displayMember", "$message", "templateErrorList", "currentMember", "_cacheDom", "$btnApprove", "$", "$btnConfirmApprove", "$modalApprove", "$btnDeleteMember", "$btnConfirmDeleteMember", "$modalDeleteMember", "$selectCenter", "$selectMember", "$btnAdd", "$displayMember", "_bindEvents", "data", "_id", "_authenticityToken", "errors", "init", "options", "import_jquery", "authenticityToken", "$selectBook", "$inputOrNumber", "$inputArNumber", "$inputSiNumber", "$btnApprove", "$modalApprove", "$btnConfirmApprove", "$modalDelete", "$btnConfirmDelete", "$message", "templateErrorList", "_id", "$btnConfirmSave", "$btnSave", "_cacheDom", "$", "_bindEvents", "data", "authenticityToken", "init", "import_jquery", "authenticityToken", "$modalNew", "$btnNew", "$btnConfirmNew", "errors", "$selectYear", "$selectBranch", "$message", "templateErrorList", "_cacheDom", "$", "_bindEvents", "branchId", "data", "init", "import_jquery", "_authenticityToken", "_id", "$btnApprove", "$btnConfirmApprove", "$modalApprove", "$btnDeleteMember", "$btnConfirmDeleteMember", "$modalDeleteMember", "$selectMember", "$inputAmount", "$btnAdd", "$displayMember", "$message", "templateErrorList", "currentMember", "currentMemberId", "_cacheDom", "$modalApprove", "$btnApprove", "$", "$btnConfirmApprove", "$inputAmount", "$btnDeleteMember", "$btnConfirmDeleteMember", "$selectMember", "$btnAdd", "$displayMember", "$message", "templateErrorList", "_bindEvents", "data", "_id", "_authenticityToken", "errors", "currentMember", "currentMemberId", "$modalDeleteMember", "init", "options", "import_jquery", "import_select2", "authenticityToken", "$modalNew", "$btnNew", "$btnConfirmNew", "$btnDelete", "$selectBranch", "$message", "templateErrorList", "_cacheDom", "$", "_bindEvents", "branchId", "data", "init", "import_jquery", "authenticityToken", "$modalNew", "$btnNew", "$btnConfirmNew", "$selectBranch", "$selectCenter", "$selectMember", "$btnAdd", "$labelMemberName", "$message", "templateErrorList", "$btnCheck", "$modalCheck", "$btnConfirmCheck", "_members", "_memberId", "_urlCenters", "_cacheDom", "$modalNew", "$", "$btnNew", "$btnConfirmNew", "$selectBranch", "$selectCenter", "$selectMember", "$btnAdd", "$message", "$labelMemberName", "$btnCheck", "$modalCheck", "$btnConfirmCheck", "templateErrorList", "_memberId", "_bindEvents", "data", "_urlCenters", "_members", "init", "authenticityToken", "import_jquery", "$modalPrint", "$printMessage", "$btnPrintPdf", "$btnPrint", "loader", "id", "templateErrorList", "authenticityToken", "_urlDownload", "$message", "_cacheDom", "$", "_bindEvents", "init", "options", "_cacheDom", "_bindEvents", "o", "e", "init", "import_jquery", "authenticityToken", "$btnNew", "$modalNew", "$selectBranch", "$selectCenter", "$btnConfirmNew", "templateErrorList", "_centers", "_urlCenters", "_cacheDom", "$", "_loadCenterOptions", "_bindEvents", "c", "branchId", "data", "init", "import_jquery", "_authenticityToken", "_id", "$btnAddBook", "$inputBookType", "$btnAdd", "$btnApprove", "$btnConfirmProcess", "$UpdateAmount", "$modalUpdate", "$modalApproveTransaction", "$btnAddParticular", "$inputParticular", "_urlAddParticular", "_urlAddBookType", "_loanId", "_memberId", "$message", "templateErrorList", "_cacheDom", "$", "_bindEvents", "errors", "data", "init", "import_jquery", "import_select2", "select2", "$", "authenticityToken", "$btnNew", "$modalNew", "$selectBranch", "$selectCenter", "$btnConfirmNew", "templateErrorList", "_centers", "_urlCenters", "_cacheDom", "_loadCenterOptions", "_bindEvents", "c", "branchId", "data", "init", "import_jquery", "_authenticityToken", "_id", "$btnAdd", "$UpdateAmount", "$modalUpdate", "$modalApproveTransaction", "$btnApprove", "$btnAddParticular", "$inputParticular", "$btnDelete", "$modalDeleteMember", "_memberAccountId", "_memberId", "$btnConfirmDeleteMember", "currentMember", "currentMemberId", "$message", "templateErrorList", "_urlAddParticular", "_cacheDom", "$", "_bindEvents", "data", "errors", "init", "import_jquery", "authenticityToken", "$btnConfirmUpdate", "$message", "templateErrorList", "_cacheDom", "$", "_bindEvents", "errors", "init", "import_jquery", "import_select2", "select2", "$", "$modalNew", "$modalDelete", "$modalProcess", "$modalBatchProcess", "$selectBranch", "$selectCenter", "$selectMember", "$selectProcessCenter", "$selectLoans", "$inputCollectionDate", "$inputNumberOfDays", "$inputStartDate", "$inputEndDate", "$inputNumberOfMoratoriumDays", "$selectAccruedType", "$inputReason", "$btnNew", "$btnDelete", "$btnProcess", "$btnBatchProcess", "$btnConfirmNew", "$btnConfirmDelete", "$btnConfirmProcess", "$btnConfirmBatchProcess", "$message", "templateErrorList", "_authenticityToken", "$inputBatchNumberOfDays", "$selectBatchBranch", "$inputDateInitializedCutOff", "$batchStartDate", "$batchEndDate", "$batchAccruedType", "_centers", "_members", "_loans", "_loanIds", "_branchId", "_centerId", "_memberId", "_moratoriumId", "_urlCreate", "_urlDelete", "_urlProcess", "_urlBatchProcess", "_urlCenters", "_urlLoans", "init", "options", "_cacheDom", "_bindEvents", "_loadCenterOptions", "_fetchLoans", "o", "errors", "import_jquery", "import_select2", "select2", "$", "$modalNew", "$selectBranch", "$selectCenter", "$selectMember", "$selectProcessCenter", "$selectLoans", "$inputCollectionDate", "$inputNumberOfDays", "$inputStartDate", "$inputEndDate", "$inputNumberOfMoratoriumDays", "$selectAccruedType", "$inputReason", "$btnNew", "$btnDelete", "$btnProcess", "$btnBatchProcess", "$btnConfirmNew", "$btnConfirmDelete", "$btnConfirmProcess", "$btnConfirmBatchProcess", "$message", "templateErrorList", "_authenticityToken", "$inputBatchNumberOfDays", "$selectBatchBranch", "$inputDateInitializedCutOff", "$batchStartDate", "$batchEndDate", "$batchAccruedType", "$btnApprove", "$btnConfirmApprove", "$modalApprove", "$btnAdd", "_centers", "_loanIds", "_branchId", "_centerId", "_moratoriumId", "_urlCreate", "_urlDelete", "_urlApprove", "_urlCenters", "_urlSave", "init", "options", "_authenticityToken", "_cacheDom", "_bindEvents", "$selectBranch", "$", "$selectCenter", "$btnAdd", "$selectMember", "$selectProcessCenter", "$selectLoans", "$inputNumberOfDays", "$inputStartDate", "$inputEndDate", "$inputNumberOfMoratoriumDays", "$selectAccruedType", "$inputReason", "$btnNew", "$btnDelete", "$btnProcess", "$btnBatchProcess", "$btnConfirmNew", "$btnConfirmDelete", "$btnConfirmProcess", "$btnConfirmBatchProcess", "$message", "$inputBatchNumberOfDays", "$selectBatchBranch", "$inputDateInitializedCutOff", "$batchStartDate", "$batchEndDate", "$batchAccruedType", "$inputCollectionDate", "templateErrorList", "$btnApprove", "$btnConfirmApprove", "$modalApprove", "_loadCenterOptions", "_centers", "_centerId", "_urlApprove", "errors", "_urlDelete", "_moratoriumId", "$modalNew", "_branchId", "_loanIds", "_urlCreate", "import_jquery", "authenticityToken", "$modalNew", "$btnNew", "$btnConfirmNew", "errors", "$selectBranch", "$message", "templateErrorList", "_cacheDom", "$", "_bindEvents", "data", "init", "import_jquery", "authenticityToken", "$modalApprove", "$btnApprove", "$btnConfirmApprove", "$message", "templateErrorList", "_cacheDom", "$modalApprove", "$btnApprove", "$", "$btnConfirmApprove", "_bindEvents", "data", "authenticityToken", "errors", "init", "import_jquery", "import_select2", "select2", "$", "authenticityToken", "$btnNew", "$modalNew", "$selectBranch", "$selectCenter", "$btnConfirmNew", "templateErrorList", "_centers", "_urlCenters", "_cacheDom", "_loadCenterOptions", "_bindEvents", "c", "branchId", "data", "init", "import_jquery", "import_select2", "select2", "$", "authenticityToken", "$btnDelete", "$modalDeleteMember", "$displayMember", "$message", "currentMember", "currentMemberId", "$btnConfirmDeleteMember", "$btnAdd", "_memberId", "_id", "templateErrorList", "_urlAddParticular", "_cacheDom", "_bindEvents", "data", "errors", "init", "import_jquery", "authenticityToken", "$modalNew", "$btnNew", "$btnConfirmNew", "errors", "_cacheDom", "$", "_bindEvents", "branch", "data", "init", "import_jquery", "authenticityToken", "$btnConfirm", "_cacheDom", "$", "$btnConfirm", "id", "_bindEvents", "data", "authenticityToken", "init", "import_jquery", "$btnNew", "$modalApprove", "$btnConfirmNew", "_authenticityToken", "_cacheDom", "$modalApprove", "$btnNew", "$", "$btnConfirmNew", "_bindEvents", "data", "init", "import_jquery", "$btnNew", "$modalNew", "$selectBranch", "$btnConfirmNew", "templateErrorList", "$message", "_cacheDom", "$", "_bindEvents", "data", "errors", "init", "options", "import_jquery", "import_select2", "authenticityToken", "$modalNew", "$btnNew", "$btnConfirmNew", "$selectBranch", "$message", "templateErrorList", "_cacheDom", "$", "_bindEvents", "branchId", "data", "init", "import_jquery", "$btnNew", "$modalNew", "$btnConfirmNew", "$startDate", "$endDate", "$message", "templateErrorList", "authenticityToken", "_cacheDom", "$", "_bindEvents", "data", "init", "options", "import_jquery", "$btnNew", "$modalNew", "$btnConfirmNew", "$message", "templateErrorList", "authenticityToken", "_cacheDom", "$", "_bindEvents", "data", "init", "options", "import_jquery", "authenticityToken", "$modalNew", "$btnNew", "$btnConfirmNew", "errors", "_cacheDom", "$", "_bindEvents", "branch", "data", "init", "import_jquery", "authenticityToken", "$modalDetails", "$modalSecond", "$btnSecondLetter", "$btnConfirmSecondLetter", "$selectDate", "$btnPrintList", "$modalPrintlist", "$btnConfirm", "$member_name", "$currentMember", "$currentMemberId", "$loan_records", "_cacheDom", "$modalDetails", "$modalSecond", "$selectDate", "$", "$btnSecondLetter", "$btnConfirmSecondLetter", "$member_name", "$btnConfirm", "$btnPrintList", "$modalPrintlist", "id", "_bindEvents", "$currentMember", "$currentMemberId", "$loan_records", "data", "authenticityToken", "init", "import_jquery", "authenticityToken", "$btnNew", "$modalNew", "$selectBranch", "$selectCenter", "$btnConfirmNew", "templateErrorList", "_cacheDom", "$btnNew", "$", "$modalNew", "$btnConfirmNew", "$selectBranch", "$selectCenter", "templateErrorList", "_bindEvents", "$btnNew", "$modalNew", "$btnConfirmNew", "branchId", "$selectBranch", "data", "authenticityToken", "$", "templateErrorList", "$selectCenter", "init", "_cacheDom", "import_jquery", "_authenticityToken", "_id", "$btnDelete", "$btnConfirmDelete", "$modalDelete", "$btnApproved", "$btnConfirmApproved", "$modalApproved", "$modalDetails", "$btnPrint", "$modalPrint", "$btnAdd", "_memberId", "$selectMember", "currentMember", "currentMemberId", "$message", "$", "_cacheDom", "_bindEvents", "data", "errors", "init", "options", "import_jquery", "authenticityToken", "$btnNew", "$message", "templateErrorList", "$btnConfirmNew", "_cacheDom", "$", "_bindEvents", "data", "init", "import_jquery", "$message", "templateErrorList", "_id", "_authenticityToken", "$btnNew", "$btnConfirm", "$modalNew", "_cacheDom", "$", "_bindEvents", "data", "init", "options", "import_jquery", "$message", "templateErrorList", "_id", "_authenticityToken", "$btnNew", "$btnConfirm", "$modalNew", "_cacheDom", "$", "_bindEvents", "data", "init", "options", "import_jquery", "_id", "_authenticityToken", "$btnNew", "$btnConfirm", "$modalNew", "_cacheDom", "$", "_bindEvents", "data", "init", "options", "import_jquery", "_id", "_authenticityToken", "$btnNew", "$btnConfirm", "$modalNew", "_cacheDom", "$", "_bindEvents", "data", "init", "options", "import_jquery", "authenticityToken", "$message", "$btnNew", "$btnConfirm", "$selectBranch", "$modalNew", "_cacheDom", "$", "_bindEvents", "data", "errors", "init", "import_jquery", "authenticityToken", "$message", "_cacheDom", "$", "_bindEvents", "id", "data", "errors", "init", "import_jquery", "authenticityToken", "$btnNew", "$modalNew", "$selectBranch", "$selectCenter", "$btnConfirmNew", "templateErrorList", "_centers", "_urlCenters", "_cacheDom", "$", "_loadCenterOptions", "_bindEvents", "c", "branchId", "data", "init", "import_jquery", "_authenticityToken", "_id", "$btnAddBook", "$inputBookType", "$btnAdd", "$btnApprove", "$btnConfirmProcess", "$UpdateAmount", "$modalUpdate", "$modalApproveTransaction", "$btnAddParticular", "$inputParticular", "_urlAddParticular", "_urlAddBookType", "_loanId", "_memberId", "$message", "templateErrorList", "_cacheDom", "$", "_bindEvents", "data", "errors", "init", "import_jquery", "$selectBranch", "$inputCollectionDate", "$message", "templateErrorList", "branches", "urlBranches", "_authenticityToken", "_cacheDom", "$", "$selectBranch", "$inputCollectionDate", "$message", "templateErrorList", "_bindEvents", "init", "urlBranches", "branches", "import_jquery", "$btnApprove", "$btnConfirmApproved", "$modalApprove", "$btnDeclined", "$modalDeclined", "$message", "templateErrorList", "_id", "_options", "_authenticityToken", "_urlApprove", "_cacheDom", "$", "_bindEvents", "data", "errors", "init", "options", "import_jquery", "_id", "_authenticityToken", "templateErrorList", "$modalNew", "$btnNew", "$btnConfirm", "$btnCancel", "$message", "_cacheDom", "$", "_bindEvents", "updateModalTitle", "branch", "date", "errors", "init", "options", "import_jquery", "_authenticityToken", "_id", "$btnApprove", "$btnConfirmProcess", "$btnAddOR", "$btnAddSI", "$inputParticular", "$btnAddParticular", "_urlAddParticular", "_urlAddBookType", "$btnAddBook", "$inputBookType", "$printMessage", "$message", "templateErrorList", "loader", "_cacheDom", "$", "_bindEvents", "errors", "data", "_urlDownload", "init", "options", "import_jquery", "_id", "_authenticityToken", "templateErrorList", "$modalNew", "$btnNew", "$btnConfirm", "$Selectdate", "$message", "_cacheDom", "$", "_bindEvents", "data", "errors", "init", "options", "import_jquery", "$btnExcel", "$branchSelect", "_cacheDom", "$btnExcel", "$", "encodeQueryData", "data", "d", "_bindEvents", "init", "import_jquery", "_id", "_authenticityToken", "$modalNew", "$btnNew", "$btnConfirm", "$btnCancel", "$message", "_cacheDom", "$", "_bindEvents", "_authenticityToken", "templateErrorList", "errors", "init", "options", "_id", "import_jquery", "_authenticityToken", "_id", "$btnApprove", "$btnConfirmProcess", "$printMessage", "$message", "templateErrorList", "loader", "_cacheDom", "$", "_bindEvents", "data", "errors", "init", "options", "$btnSave", "n", "d", "next", "_cacheDom", "circle", "line", "r", "e", "k", "data", "a", "_bindEvents", "init", "ShowUI", "GeneralLedgerComponent", "ShowComponent", "Form_default", "ShowComponent_default", "Generate_default", "Component", "React", "$", "authenticityToken", "options", "components"]
}
